--- linux-raspi2-4.2.0.orig/Documentation/ABI/testing/configfs-usb-gadget-loopback +++ linux-raspi2-4.2.0/Documentation/ABI/testing/configfs-usb-gadget-loopback @@ -5,4 +5,4 @@ The attributes: qlen - depth of loopback queue - bulk_buflen - buffer length + buflen - buffer length --- linux-raspi2-4.2.0.orig/Documentation/ABI/testing/configfs-usb-gadget-sourcesink +++ linux-raspi2-4.2.0/Documentation/ABI/testing/configfs-usb-gadget-sourcesink @@ -9,4 +9,4 @@ isoc_maxpacket - 0 - 1023 (fs), 0 - 1024 (hs/ss) isoc_mult - 0..2 (hs/ss only) isoc_maxburst - 0..15 (ss only) - qlen - buffer length + buflen - buffer length --- linux-raspi2-4.2.0.orig/Documentation/ABI/testing/debugfs-aufs +++ linux-raspi2-4.2.0/Documentation/ABI/testing/debugfs-aufs @@ -0,0 +1,50 @@ +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_/xino0, xino1 ... xinoN +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. + When the aufs mount option 'noxino' is specified, it + will be empty. 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-raspi2-4.2.0.orig/Documentation/ABI/testing/sysfs-aufs +++ linux-raspi2-4.2.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-raspi2-4.2.0.orig/Documentation/ABI/testing/sysfs-class-cxl +++ linux-raspi2-4.2.0/Documentation/ABI/testing/sysfs-class-cxl @@ -223,3 +223,13 @@ Writing 1 will issue a PERST to card which may cause the card to reload the FPGA depending on load_image_on_perst. Users: https://github.com/ibm-capi/libcxl + +What: /sys/class/cxl//perst_reloads_same_image +Date: July 2015 +Contact: linuxppc-dev@lists.ozlabs.org +Description: read/write + Trust that when an image is reloaded via PERST, it will not + have changed. + 0 = don't trust, the image may be different (default) + 1 = trust that the image will not change. +Users: https://github.com/ibm-capi/libcxl --- linux-raspi2-4.2.0.orig/Documentation/HOWTO +++ linux-raspi2-4.2.0/Documentation/HOWTO @@ -218,16 +218,16 @@ Linux kernel development process currently consists of a few different main kernel "branches" and lots of different subsystem-specific kernel branches. These different branches are: - - main 3.x kernel tree - - 3.x.y -stable kernel tree - - 3.x -git kernel patches + - main 4.x kernel tree + - 4.x.y -stable kernel tree + - 4.x -git kernel patches - subsystem specific kernel trees and patches - - the 3.x -next kernel tree for integration tests + - the 4.x -next kernel tree for integration tests -3.x kernel tree +4.x kernel tree ----------------- -3.x kernels are maintained by Linus Torvalds, and can be found on -kernel.org in the pub/linux/kernel/v3.x/ directory. Its development +4.x kernels are maintained by Linus Torvalds, and can be found on +kernel.org in the pub/linux/kernel/v4.x/ directory. Its development process is as follows: - As soon as a new kernel is released a two weeks window is open, during this period of time maintainers can submit big diffs to @@ -262,20 +262,20 @@ released according to perceived bug status, not according to a preconceived timeline." -3.x.y -stable kernel tree +4.x.y -stable kernel tree --------------------------- Kernels with 3-part versions are -stable kernels. They contain relatively small and critical fixes for security problems or significant -regressions discovered in a given 3.x kernel. +regressions discovered in a given 4.x kernel. This is the recommended branch for users who want the most recent stable kernel and are not interested in helping test development/experimental versions. -If no 3.x.y kernel is available, then the highest numbered 3.x +If no 4.x.y kernel is available, then the highest numbered 4.x kernel is the current stable kernel. -3.x.y are maintained by the "stable" team , and +4.x.y are maintained by the "stable" team , and are released as needs dictate. The normal release period is approximately two weeks, but it can be longer if there are no pressing problems. A security-related problem, instead, can cause a release to happen almost @@ -285,7 +285,7 @@ documents what kinds of changes are acceptable for the -stable tree, and how the release process works. -3.x -git patches +4.x -git patches ------------------ These are daily snapshots of Linus' kernel tree which are managed in a git repository (hence the name.) These patches are usually released @@ -317,9 +317,9 @@ accepted, or rejected. Most of these patchwork sites are listed at http://patchwork.kernel.org/. -3.x -next kernel tree for integration tests +4.x -next kernel tree for integration tests --------------------------------------------- -Before updates from subsystem trees are merged into the mainline 3.x +Before updates from subsystem trees are merged into the mainline 4.x tree, they need to be integration-tested. For this purpose, a special testing repository exists into which virtually all subsystem trees are pulled on an almost daily basis: --- linux-raspi2-4.2.0.orig/Documentation/device-mapper/statistics.txt +++ linux-raspi2-4.2.0/Documentation/device-mapper/statistics.txt @@ -121,6 +121,10 @@ Output format: : + + precise_timestamps histogram:n1,n2,n3,... + + The strings "precise_timestamps" and "histogram" are printed only + if they were specified when creating the region. @stats_print [ ] --- linux-raspi2-4.2.0.orig/Documentation/devicetree/bindings/arm/apm/scu.txt +++ linux-raspi2-4.2.0/Documentation/devicetree/bindings/arm/apm/scu.txt @@ -0,0 +1,17 @@ +APM X-GENE SoC series SCU Registers + +This system clock unit contain various register that control block resets, +clock enable/disables, clock divisors and other deepsleep registers. + +Properties: + - compatible : should contain two values. First value must be: + - "apm,xgene-scu" + second value must be always "syscon". + + - reg : offset and length of the register set. + +Example : + scu: system-clk-controller@17000000 { + compatible = "apm,xgene-scu","syscon"; + reg = <0x0 0x17000000 0x0 0x400>; + }; --- linux-raspi2-4.2.0.orig/Documentation/devicetree/bindings/arm/numa.txt +++ linux-raspi2-4.2.0/Documentation/devicetree/bindings/arm/numa.txt @@ -0,0 +1,212 @@ +============================================================================== +NUMA binding description. +============================================================================== + +============================================================================== +1 - Introduction +============================================================================== + +Systems employing a Non Uniform Memory Access (NUMA) architecture contain +collections of hardware resources including processors, memory, and I/O buses, +that comprise what is commonly known as a NUMA node. +Processor accesses to memory within the local NUMA node is generally faster +than processor accesses to memory outside of the local NUMA node. +DT defines interfaces that allow the platform to convey NUMA node +topology information to OS. + +============================================================================== +2 - arm,associativity +============================================================================== +The mapping is done using arm,associativity device property. +this property needs to be present in every device node which needs to to be +mapped to numa nodes. + +arm,associativity property is set of 32-bit integers which defines level of +topology and boundary in the system at which a significant difference in +performance can be measured between cross-device accesses within +a single location and those spanning multiple locations. +The first cell always contains the broadest subdivision within the system, +while the last cell enumerates the individual devices, such as an SMT thread +of a CPU, or a bus bridge within an SoC". + +ex: + /* board 0, socket 0, cluster 0, core 0 thread 0 */ + arm,associativity = <0 0 0 0 0>; + +============================================================================== +3 - arm,associativity-reference-points +============================================================================== +This property is a set of 32-bit integers, each representing an index into +the arm,associativity nodes. The first integer is the most significant +NUMA boundary and the following are progressively less significant boundaries. +There can be more than one level of NUMA. + +Ex: + arm,associativity-reference-points = <0 1>; + The board Id(index 0) used first to calculate the associativity (node + distance), then follows the socket id(index 1). + + arm,associativity-reference-points = <1 0>; + The socket Id(index 1) used first to calculate the associativity, + then follows the board id(index 0). + + arm,associativity-reference-points = <0>; + Only the board Id(index 0) used to calculate the associativity. + + arm,associativity-reference-points = <1>; + Only socket Id(index 1) used to calculate the associativity. + +============================================================================== +4 - Example dts +============================================================================== + +Example: 2 Node system consists of 2 boards and each board having one socket +and 8 core in each socket. + + arm,associativity-reference-points = <0>; + + memory@00c00000 { + device_type = "memory"; + reg = <0x0 0x00c00000 0x0 0x80000000>; + /* board 0, socket 0, no specific core */ + arm,associativity = <0 0 0xffff>; + }; + + memory@10000000000 { + device_type = "memory"; + reg = <0x100 0x00000000 0x0 0x80000000>; + /* board 1, socket 0, no specific core */ + arm,associativity = <1 0 0xffff>; + }; + + cpus { + #address-cells = <2>; + #size-cells = <0>; + + cpu@000 { + device_type = "cpu"; + compatible = "arm,armv8"; + reg = <0x0 0x000>; + enable-method = "psci"; + /* board 0, socket 0, core 0*/ + arm,associativity = <0 0 0>; + }; + cpu@001 { + device_type = "cpu"; + compatible = "arm,armv8"; + reg = <0x0 0x001>; + enable-method = "psci"; + arm,associativity = <0 0 1>; + }; + cpu@002 { + device_type = "cpu"; + compatible = "arm,armv8"; + reg = <0x0 0x002>; + enable-method = "psci"; + arm,associativity = <0 0 2>; + }; + cpu@003 { + device_type = "cpu"; + compatible = "arm,armv8"; + reg = <0x0 0x003>; + enable-method = "psci"; + arm,associativity = <0 0 3>; + }; + cpu@004 { + device_type = "cpu"; + compatible = "arm,armv8"; + reg = <0x0 0x004>; + enable-method = "psci"; + arm,associativity = <0 0 4>; + }; + cpu@005 { + device_type = "cpu"; + compatible = "arm,armv8"; + reg = <0x0 0x005>; + enable-method = "psci"; + arm,associativity = <0 0 5>; + }; + cpu@006 { + device_type = "cpu"; + compatible = "arm,armv8"; + reg = <0x0 0x006>; + enable-method = "psci"; + arm,associativity = <0 0 6>; + }; + cpu@007 { + device_type = "cpu"; + compatible = "arm,armv8"; + reg = <0x0 0x007>; + enable-method = "psci"; + arm,associativity = <0 0 7>; + }; + cpu@008 { + device_type = "cpu"; + compatible = "arm,armv8"; + reg = <0x0 0x008>; + enable-method = "psci"; + /* board 1, socket 0, core 0*/ + arm,associativity = <1 0 0>; + }; + cpu@009 { + device_type = "cpu"; + compatible = "arm,armv8"; + reg = <0x0 0x009>; + enable-method = "psci"; + arm,associativity = <1 0 1>; + }; + cpu@00a { + device_type = "cpu"; + compatible = "arm,armv8"; + reg = <0x0 0x00a>; + enable-method = "psci"; + arm,associativity = <0 0 2>; + }; + cpu@00b { + device_type = "cpu"; + compatible = "arm,armv8"; + reg = <0x0 0x00b>; + enable-method = "psci"; + arm,associativity = <1 0 3>; + }; + cpu@00c { + device_type = "cpu"; + compatible = "arm,armv8"; + reg = <0x0 0x00c>; + enable-method = "psci"; + arm,associativity = <1 0 4>; + }; + cpu@00d { + device_type = "cpu"; + compatible = "arm,armv8"; + reg = <0x0 0x00d>; + enable-method = "psci"; + arm,associativity = <1 0 5>; + }; + cpu@00e { + device_type = "cpu"; + compatible = "arm,armv8"; + reg = <0x0 0x00e>; + enable-method = "psci"; + arm,associativity = <1 0 6>; + }; + cpu@00f { + device_type = "cpu"; + compatible = "arm,armv8"; + reg = <0x0 0x00f>; + enable-method = "psci"; + arm,associativity = <1 0 7>; + }; + }; + + pcie0: pcie0@0x8480,00000000 { + compatible = "arm,armv8"; + device_type = "pci"; + bus-range = <0 255>; + #size-cells = <2>; + #address-cells = <3>; + reg = <0x8480 0x00000000 0 0x10000000>; /* Configuration space */ + ranges = <0x03000000 0x8010 0x00000000 0x8010 0x00000000 0x70 0x00000000>; /* mem ranges */ + /* board 0, socket 0, pci bus 0*/ + arm,associativity = <0 0 0>; + }; --- linux-raspi2-4.2.0.orig/Documentation/devicetree/bindings/arm/pmu.txt +++ linux-raspi2-4.2.0/Documentation/devicetree/bindings/arm/pmu.txt @@ -7,6 +7,7 @@ Required properties: - compatible : should be one of + "apm,potenza-pmu" "arm,armv8-pmuv3" "arm,cortex-a17-pmu" "arm,cortex-a15-pmu" --- linux-raspi2-4.2.0.orig/Documentation/devicetree/bindings/clock/brcm,bcm2835-cprman.txt +++ linux-raspi2-4.2.0/Documentation/devicetree/bindings/clock/brcm,bcm2835-cprman.txt @@ -0,0 +1,45 @@ +Broadcom BCM2835 CPRMAN clocks + +This binding uses the common clock binding: + Documentation/devicetree/bindings/clock/clock-bindings.txt + +The CPRMAN clock controller generates clocks in the audio power domain +of the BCM2835. There is a level of PLLs deriving from an external +oscillator, a level of PLL dividers that produce channels off of the +few PLLs, and a level of mostly-generic clock generators sourcing from +the PLL channels. Most other hardware components source from the +clock generators, but a few (like the ARM or HDMI) will source from +the PLL dividers directly. + +Required properties: +- compatible: Should be "brcm,bcm2835-cprman" +- #clock-cells: Should be <1>. The permitted clock-specifier values can be + found in include/dt-bindings/clock/bcm2835.h +- reg: Specifies base physical address and size of the registers +- clocks: The external oscillator clock phandle + +Example: + + clk_osc: clock@3 { + compatible = "fixed-clock"; + reg = <3>; + #clock-cells = <0>; + clock-output-names = "osc"; + clock-frequency = <19200000>; + }; + + clocks: cprman@7e101000 { + compatible = "brcm,bcm2835-cprman"; + #clock-cells = <1>; + reg = <0x7e101000 0x2000>; + clocks = <&clk_osc>; + }; + + i2c0: i2c@7e205000 { + compatible = "brcm,bcm2835-i2c"; + reg = <0x7e205000 0x1000>; + interrupts = <2 21>; + clocks = <&clocks BCM2835_CLOCK_VPU>; + #address-cells = <1>; + #size-cells = <0>; + }; --- linux-raspi2-4.2.0.orig/Documentation/devicetree/bindings/dma/brcm,bcm2835-dma.txt +++ linux-raspi2-4.2.0/Documentation/devicetree/bindings/dma/brcm,bcm2835-dma.txt @@ -48,8 +48,8 @@ bcm2835_i2s: i2s@7e203000 { compatible = "brcm,bcm2835-i2s"; - reg = < 0x7e203000 0x20>, - < 0x7e101098 0x02>; + reg = < 0x7e203000 0x24>, + < 0x7e101098 0x08>; dmas = <&dma 2>, <&dma 3>; --- linux-raspi2-4.2.0.orig/Documentation/devicetree/bindings/leds/leds-powernv.txt +++ linux-raspi2-4.2.0/Documentation/devicetree/bindings/leds/leds-powernv.txt @@ -0,0 +1,26 @@ +Device Tree binding for LEDs on IBM Power Systems +------------------------------------------------- + +Required properties: +- compatible : Should be "ibm,opal-v3-led". +- led-mode : Should be "lightpath" or "guidinglight". + +Each location code of FRU/Enclosure must be expressed in the +form of a sub-node. + +Required properties for the sub nodes: +- led-types : Supported LED types (attention/identify/fault) provided + in the form of string array. + +Example: + +leds { + compatible = "ibm,opal-v3-led"; + led-mode = "lightpath"; + + U78C9.001.RST0027-P1-C1 { + led-types = "identify", "fault"; + }; + ... + ... +}; --- linux-raspi2-4.2.0.orig/Documentation/devicetree/bindings/misc/brcm,bcm2835-smi-dev.txt +++ linux-raspi2-4.2.0/Documentation/devicetree/bindings/misc/brcm,bcm2835-smi-dev.txt @@ -0,0 +1,17 @@ +* Broadcom BCM2835 SMI character device driver. + +SMI or secondary memory interface is a peripheral specific to certain Broadcom +SOCs, and is helpful for talking to things like parallel-interface displays +and NAND flashes (in fact, most things with a parallel register interface). + +This driver adds a character device which provides a user-space interface to +an instance of the SMI driver. + +Required properties: +- compatible: "brcm,bcm2835-smi-dev" +- smi_handle: a phandle to the smi node. + +Optional properties: +- None. + + --- linux-raspi2-4.2.0.orig/Documentation/devicetree/bindings/misc/brcm,bcm2835-smi.txt +++ linux-raspi2-4.2.0/Documentation/devicetree/bindings/misc/brcm,bcm2835-smi.txt @@ -0,0 +1,48 @@ +* Broadcom BCM2835 SMI driver. + +SMI or secondary memory interface is a peripheral specific to certain Broadcom +SOCs, and is helpful for talking to things like parallel-interface displays +and NAND flashes (in fact, most things with a parallel register interface). + +Required properties: +- compatible: "brcm,bcm2835-smi" +- reg: Should contain location and length of SMI registers and SMI clkman regs +- interrupts: *the* SMI interrupt. +- pinctrl-names: should be "default". +- pinctrl-0: the phandle of the gpio pin node. +- brcm,smi-clock-source: the clock source for clkman +- brcm,smi-clock-divisor: the integer clock divisor for clkman +- dmas: the dma controller phandle and the DREQ number (4 on a 2835) +- dma-names: the name used by the driver to request its channel. + Should be "rx-tx". + +Optional properties: +- None. + +Examples: + +8 data pin configuration: + +smi: smi@7e600000 { + compatible = "brcm,bcm2835-smi"; + reg = <0x7e600000 0x44>, <0x7e1010b0 0x8>; + interrupts = <2 16>; + pinctrl-names = "default"; + pinctrl-0 = <&smi_pins>; + brcm,smi-clock-source = <6>; + brcm,smi-clock-divisor = <4>; + dmas = <&dma 4>; + dma-names = "rx-tx"; + + status = "okay"; +}; + +smi_pins: smi_pins { + brcm,pins = <2 3 4 5 6 7 8 9 10 11 12 13 14 15>; + /* Alt 1: SMI */ + brcm,function = <5 5 5 5 5 5 5 5 5 5 5 5 5 5>; + /* /CS, /WE and /OE are pulled high, as they are + generally active low signals */ + brcm,pull = <2 2 2 2 2 2 0 0 0 0 0 0 0 0>; +}; + --- linux-raspi2-4.2.0.orig/Documentation/devicetree/bindings/mmc/renesas,mmcif.txt +++ linux-raspi2-4.2.0/Documentation/devicetree/bindings/mmc/renesas,mmcif.txt @@ -6,11 +6,11 @@ Required properties: -- compatible: must contain one of the following +- compatible: should be "renesas,mmcif-", "renesas,sh-mmcif" as a + fallback. Examples with are: - "renesas,mmcif-r8a7740" for the MMCIF found in r8a7740 SoCs - "renesas,mmcif-r8a7790" for the MMCIF found in r8a7790 SoCs - "renesas,mmcif-r8a7791" for the MMCIF found in r8a7791 SoCs - - "renesas,sh-mmcif" for the generic MMCIF - clocks: reference to the functional clock --- linux-raspi2-4.2.0.orig/Documentation/devicetree/bindings/mtd/brcm,bcm2835-smi-nand.txt +++ linux-raspi2-4.2.0/Documentation/devicetree/bindings/mtd/brcm,bcm2835-smi-nand.txt @@ -0,0 +1,42 @@ +* BCM2835 SMI NAND flash + +This driver is a shim between the BCM2835 SMI driver (SMI is a peripheral for +talking to parallel register interfaces) and Linux's MTD layer. + +Required properties: +- compatible: "brcm,bcm2835-smi-nand" +- status: "okay" + +Optional properties: +- partition@n, where n is an integer from a consecutive sequence starting at 0 + - Difficult to store partition table on NAND device - normally put it + in the source code, kernel bootparams, or device tree (the best way!) + - Sub-properties: + - label: the partition name, as shown by mtdinfo /dev/mtd* + - reg: the size and offset of this partition. + - (optional) read-only: an empty property flagging as read only + +Example: + +nand: flash@0 { + compatible = "brcm,bcm2835-smi-nand"; + status = "okay"; + + partition@0 { + label = "stage2"; + // 128k + reg = <0 0x20000>; + read-only; + }; + partition@1 { + label = "firmware"; + // 16M + reg = <0x20000 0x1000000>; + read-only; + }; + partition@2 { + label = "root"; + // 2G + reg = <0x1020000 0x80000000>; + }; +}; \ No newline at end of file --- linux-raspi2-4.2.0.orig/Documentation/devicetree/bindings/net/ethernet.txt +++ linux-raspi2-4.2.0/Documentation/devicetree/bindings/net/ethernet.txt @@ -25,7 +25,11 @@ flow control thresholds. - tx-fifo-depth: the size of the controller's transmit fifo in bytes. This is used for components that can have configurable fifo sizes. +- managed: string, specifies the PHY management type. Supported values are: + "auto", "in-band-status". "auto" is the default, it usess MDIO for + management if fixed-link is not specified. Child nodes of the Ethernet controller are typically the individual PHY devices connected via the MDIO bus (sometimes the MDIO bus controller is separate). They are described in the phy.txt file in this same directory. +For non-MDIO PHY management see fixed-link.txt. --- linux-raspi2-4.2.0.orig/Documentation/devicetree/bindings/sound/brcm,bcm2835-i2s.txt +++ linux-raspi2-4.2.0/Documentation/devicetree/bindings/sound/brcm,bcm2835-i2s.txt @@ -16,8 +16,8 @@ bcm2835_i2s: i2s@7e203000 { compatible = "brcm,bcm2835-i2s"; - reg = <0x7e203000 0x20>, - <0x7e101098 0x02>; + reg = <0x7e203000 0x24>, + <0x7e101098 0x08>; dmas = <&dma 2>, <&dma 3>; --- linux-raspi2-4.2.0.orig/Documentation/devicetree/bindings/usb/dwc3.txt +++ linux-raspi2-4.2.0/Documentation/devicetree/bindings/usb/dwc3.txt @@ -35,6 +35,8 @@ LTSSM during USB3 Compliance mode. - snps,dis_u3_susphy_quirk: when set core will disable USB3 suspend phy. - snps,dis_u2_susphy_quirk: when set core will disable USB2 suspend phy. + - snps,dis_enblslpm_quirk: when set clears the enblslpm in GUSB2PHYCFG, + disabling the suspend signal to the PHY. - snps,is-utmi-l1-suspend: true when DWC3 asserts output signal utmi_l1_suspend_n, false when asserts utmi_sleep_n - snps,hird-threshold: HIRD threshold --- linux-raspi2-4.2.0.orig/Documentation/filesystems/aufs/README +++ linux-raspi2-4.2.0/Documentation/filesystems/aufs/README @@ -0,0 +1,383 @@ + +Aufs4 -- advanced multi layered unification filesystem version 4.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 becomes totally different from +Unionfs while keeping the basic features. +Recently, Unionfs Version 2.x series begin taking some of the same +approaches to aufs1's. +Unionfs is being developed by Professor Erez Zadok at Stony Brook +University and his team. + +Aufs4 supports linux-4.0 and later, and for linux-3.x series try aufs3. +If you want older kernel version support, try aufs2-2.6.git or +aufs2-standalone.git repository, 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 aufs4. +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 aufs4, aufs4-linux.git, +aufs4-standalone.git, and aufs-util.git. Note that there is no "4" in +"aufs-util.git." +While the aufs-util is always necessary, you need either of aufs4-linux +or aufs4-standalone. + +The aufs4-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 aufs4 as an external kernel module. +Several extra patches are not included in this tree. Only +aufs4-standalone tree contains them. They are describe in the later +section "Configuration and Compilation." + +On the other hand, the aufs4-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 "aufs4.x" where "x" +represents the linux kernel version, "linux-4.x". For instance, +"aufs4.0" is for linux-4.0. For latest "linux-4.x-rcN", use +"aufs4.x-rcN" branch. + +o aufs4-linux tree +$ git clone --reference /your/linux/git/tree \ + git://github.com/sfjro/aufs4-linux.git aufs4-linux.git +- if you don't have linux GIT tree, then remove "--reference ..." +$ cd aufs4-linux.git +$ git checkout origin/aufs4.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 aufs4 git://github.com/sfjro/aufs4-linux.git +$ git fetch aufs4 +$ git checkout -b my4.0 v4.0 +$ (add your local change...) +$ git pull aufs4 aufs4.0 +- now you have v4.0 + your_changes + aufs4.0 in you my4.0 branch. +- you may need to solve some conflicts between your_changes and + aufs4.0. in this case, git-rerere is recommended so that you can + solve the similar conflicts automatically when you upgrade to 4.1 or + later in the future. + +o aufs4-standalone tree +$ git clone git://github.com/sfjro/aufs4-standalone.git aufs4-standalone.git +$ cd aufs4-standalone.git +$ git checkout origin/aufs4.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/aufs4.0 + +Note: The 4.x-rcN branch is to be used with `rc' kernel versions ONLY. +The minor version number, 'x' in '4.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-4.10" and the "aufs4.10" branch +does not exist in aufs-util repository, then "aufs4.9", "aufs4.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 aufs4-linux tree, +- enable CONFIG_AUFS_FS. +- set other aufs configurations if necessary. + +For aufs4-standalone tree, +There are several ways to build. + +1. +- apply ./aufs4-kbuild.patch to your kernel source files. +- apply ./aufs4-base.patch too. +- apply ./aufs4-mmap.patch too. +- apply ./aufs4-standalone.patch too, if you have a plan to set + CONFIG_AUFS_FS=m. otherwise you don't need ./aufs4-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. + Note: Since linux-3.9, every filesystem module requires an alias + "fs-". You should make sure that "fs-aufs" is listed in your + modules.aliases file if you set CONFIG_AUFS_FS=m. +- 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 ./aufs4-base.patch to your kernel source files. +- apply ./aufs4-mmap.patch too. +- apply ./aufs4-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". + Note: Since linux-3.9, every filesystem module requires an alias + "fs-". You should make sure that "fs-aufs" is listed in your + modules.aliases file. +- 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 aufs4-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 aufs4-standalone.git. They are all +optional. When you meet some problems, they will help you. +- aufs4-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". +- 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. + + +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) +- 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). +Stefano Di Biase made a donation (2014/8). +Daniel Epellei made a donation (2015/1). + +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-raspi2-4.2.0.orig/Documentation/filesystems/aufs/design/01intro.txt +++ linux-raspi2-4.2.0/Documentation/filesystems/aufs/design/01intro.txt @@ -0,0 +1,170 @@ + +# Copyright (C) 2005-2015 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] | [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. + +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-raspi2-4.2.0.orig/Documentation/filesystems/aufs/design/02struct.txt +++ linux-raspi2-4.2.0/Documentation/filesystems/aufs/design/02struct.txt @@ -0,0 +1,258 @@ + +# Copyright (C) 2005-2015 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-raspi2-4.2.0.orig/Documentation/filesystems/aufs/design/03atomic_open.txt +++ linux-raspi2-4.2.0/Documentation/filesystems/aufs/design/03atomic_open.txt @@ -0,0 +1,85 @@ + +# Copyright (C) 2015 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-raspi2-4.2.0.orig/Documentation/filesystems/aufs/design/03lookup.txt +++ linux-raspi2-4.2.0/Documentation/filesystems/aufs/design/03lookup.txt @@ -0,0 +1,113 @@ + +# Copyright (C) 2005-2015 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-raspi2-4.2.0.orig/Documentation/filesystems/aufs/design/04branch.txt +++ linux-raspi2-4.2.0/Documentation/filesystems/aufs/design/04branch.txt @@ -0,0 +1,74 @@ + +# Copyright (C) 2005-2015 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-raspi2-4.2.0.orig/Documentation/filesystems/aufs/design/05wbr_policy.txt +++ linux-raspi2-4.2.0/Documentation/filesystems/aufs/design/05wbr_policy.txt @@ -0,0 +1,64 @@ + +# Copyright (C) 2005-2015 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-raspi2-4.2.0.orig/Documentation/filesystems/aufs/design/06fhsm.txt +++ linux-raspi2-4.2.0/Documentation/filesystems/aufs/design/06fhsm.txt @@ -0,0 +1,120 @@ + +# Copyright (C) 2011-2015 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-raspi2-4.2.0.orig/Documentation/filesystems/aufs/design/06mmap.txt +++ linux-raspi2-4.2.0/Documentation/filesystems/aufs/design/06mmap.txt @@ -0,0 +1,72 @@ + +# Copyright (C) 2005-2015 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-raspi2-4.2.0.orig/Documentation/filesystems/aufs/design/06xattr.txt +++ linux-raspi2-4.2.0/Documentation/filesystems/aufs/design/06xattr.txt @@ -0,0 +1,96 @@ + +# Copyright (C) 2014-2015 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-raspi2-4.2.0.orig/Documentation/filesystems/aufs/design/07export.txt +++ linux-raspi2-4.2.0/Documentation/filesystems/aufs/design/07export.txt @@ -0,0 +1,58 @@ + +# Copyright (C) 2005-2015 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-raspi2-4.2.0.orig/Documentation/filesystems/aufs/design/08shwh.txt +++ linux-raspi2-4.2.0/Documentation/filesystems/aufs/design/08shwh.txt @@ -0,0 +1,52 @@ + +# Copyright (C) 2005-2015 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-raspi2-4.2.0.orig/Documentation/filesystems/aufs/design/10dynop.txt +++ linux-raspi2-4.2.0/Documentation/filesystems/aufs/design/10dynop.txt @@ -0,0 +1,47 @@ + +# Copyright (C) 2010-2015 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-raspi2-4.2.0.orig/Documentation/filesystems/proc.txt +++ linux-raspi2-4.2.0/Documentation/filesystems/proc.txt @@ -140,7 +140,8 @@ stat Process status statm Process memory status information status Process status in human readable form - wchan If CONFIG_KALLSYMS is set, a pre-decoded wchan + wchan Present with CONFIG_KALLSYMS=y: it shows the kernel function + symbol the task is blocked in - or "0" if not blocked. pagemap Page table stack Report full stack trace, enable via CONFIG_STACKTRACE smaps a extension based on maps, showing the memory consumption of @@ -310,7 +311,7 @@ blocked bitmap of blocked signals sigign bitmap of ignored signals sigcatch bitmap of caught signals - wchan address where process went to sleep + 0 (place holder, used to be the wchan address, use /proc/PID/wchan instead) 0 (place holder) 0 (place holder) exit_signal signal to send to parent thread on exit --- linux-raspi2-4.2.0.orig/Documentation/ioctl/ioctl-number.txt +++ linux-raspi2-4.2.0/Documentation/ioctl/ioctl-number.txt @@ -124,6 +124,8 @@ 'H' 00-7F linux/hiddev.h conflict! 'H' 00-0F linux/hidraw.h conflict! 'H' 01 linux/mei.h conflict! +'H' 02 linux/mei.h conflict! +'H' 03 linux/mei.h conflict! 'H' 00-0F sound/asound.h conflict! 'H' 20-40 sound/asound_fm.h conflict! 'H' 80-8F sound/sfnt_info.h conflict! @@ -314,6 +316,7 @@ 0xB3 00 linux/mmc/ioctl.h 0xC0 00-0F linux/usb/iowarrior.h 0xCA 00-0F uapi/misc/cxl.h +0xCA 80-8F uapi/scsi/cxlflash_ioctl.h 0xCB 00-1F CBM serial IEC bus in development: 0xCD 01 linux/reiserfs_fs.h --- linux-raspi2-4.2.0.orig/Documentation/kernel-parameters.txt +++ linux-raspi2-4.2.0/Documentation/kernel-parameters.txt @@ -192,6 +192,12 @@ (e.g. thinkpad_acpi, sony_acpi, etc.) instead of the ACPI video.ko driver. + acpi_force_32bit_fadt_addr + force FADT to use 32 bit addresses rather than the + 64 bit X_* addresses. Some firmware have broken 64 + bit addresses for force ACPI ignore these and use + the older legacy 32 bit addresss. + acpica_no_return_repair [HW, ACPI] Disable AML predefined validation mechanism This mechanism can repair the evaluation result to make @@ -749,6 +755,10 @@ /proc//coredump_filter. See also Documentation/filesystems/proc.txt. + 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 @@ -1540,6 +1550,9 @@ hwp_only Only load intel_pstate on systems which support hardware P state control (HWP) if available. + skylake_hwp + Enable the use of HWP on Skylake-S processors even though + it may cause hard lockups on certain systems. intremap= [X86-64, Intel-IOMMU] on enable Interrupt Remapping (default) --- linux-raspi2-4.2.0.orig/Documentation/misc-devices/mei/mei.txt +++ linux-raspi2-4.2.0/Documentation/misc-devices/mei/mei.txt @@ -96,7 +96,7 @@ IOCTL ===== -The Intel MEI Driver supports the following IOCTL command: +The Intel MEI Driver supports the following IOCTL commands: IOCTL_MEI_CONNECT_CLIENT Connect to firmware Feature (client). usage: @@ -125,6 +125,49 @@ data that can be sent or received. (e.g. if MTU=2K, can send requests up to bytes 2k and received responses up to 2k bytes). + IOCTL_MEI_NOTIFY_SET: enable or disable event notifications + + Usage: + uint32_t enable; + ioctl(fd, IOCTL_MEI_NOTIFY_SET, &enable); + + Inputs: + uint32_t enable = 1; + or + uint32_t enable[disable] = 0; + + Error returns: + EINVAL Wrong IOCTL Number + ENODEV Device is not initialized or the client not connected + ENOMEM Unable to allocate memory to client internal data. + EFAULT Fatal Error (e.g. Unable to access user input data) + EOPNOTSUPP if the device doesn't support the feature + + Notes: + The client must be connected in order to enable notification events + + + IOCTL_MEI_NOTIFY_GET : retrieve event + + Usage: + uint32_t event; + ioctl(fd, IOCTL_MEI_NOTIFY_GET, &event); + + Outputs: + 1 - if an event is pending + 0 - if there is no even pending + + Error returns: + EINVAL Wrong IOCTL Number + ENODEV Device is not initialized or the client not connected + ENOMEM Unable to allocate memory to client internal data. + EFAULT Fatal Error (e.g. Unable to access user input data) + EOPNOTSUPP if the device doesn't support the feature + + Notes: + The client must be connected and event notification has to be enabled + in order to receive an event + Intel ME Applications ===================== --- linux-raspi2-4.2.0.orig/Documentation/powerpc/cxlflash.txt +++ linux-raspi2-4.2.0/Documentation/powerpc/cxlflash.txt @@ -0,0 +1,318 @@ +Introduction +============ + + The IBM Power architecture provides support for CAPI (Coherent + Accelerator Power Interface), which is available to certain PCIe slots + on Power 8 systems. CAPI can be thought of as a special tunneling + protocol through PCIe that allow PCIe adapters to look like special + purpose co-processors which can read or write an application's + memory and generate page faults. As a result, the host interface to + an adapter running in CAPI mode does not require the data buffers to + be mapped to the device's memory (IOMMU bypass) nor does it require + memory to be pinned. + + On Linux, Coherent Accelerator (CXL) kernel services present CAPI + devices as a PCI device by implementing a virtual PCI host bridge. + This abstraction simplifies the infrastructure and programming + model, allowing for drivers to look similar to other native PCI + device drivers. + + CXL provides a mechanism by which user space applications can + directly talk to a device (network or storage) bypassing the typical + kernel/device driver stack. The CXL Flash Adapter Driver enables a + user space application direct access to Flash storage. + + The CXL Flash Adapter Driver is a kernel module that sits in the + SCSI stack as a low level device driver (below the SCSI disk and + protocol drivers) for the IBM CXL Flash Adapter. This driver is + responsible for the initialization of the adapter, setting up the + special path for user space access, and performing error recovery. It + communicates directly the Flash Accelerator Functional Unit (AFU) + as described in Documentation/powerpc/cxl.txt. + + The cxlflash driver supports two, mutually exclusive, modes of + operation at the device (LUN) level: + + - Any flash device (LUN) can be configured to be accessed as a + regular disk device (i.e.: /dev/sdc). This is the default mode. + + - Any flash device (LUN) can be configured to be accessed from + user space with a special block library. This mode further + specifies the means of accessing the device and provides for + either raw access to the entire LUN (referred to as direct + or physical LUN access) or access to a kernel/AFU-mediated + partition of the LUN (referred to as virtual LUN access). The + segmentation of a disk device into virtual LUNs is assisted + by special translation services provided by the Flash AFU. + +Overview +======== + + The Coherent Accelerator Interface Architecture (CAIA) introduces a + concept of a master context. A master typically has special privileges + granted to it by the kernel or hypervisor allowing it to perform AFU + wide management and control. The master may or may not be involved + directly in each user I/O, but at the minimum is involved in the + initial setup before the user application is allowed to send requests + directly to the AFU. + + The CXL Flash Adapter Driver establishes a master context with the + AFU. It uses memory mapped I/O (MMIO) for this control and setup. The + Adapter Problem Space Memory Map looks like this: + + +-------------------------------+ + | 512 * 64 KB User MMIO | + | (per context) | + | User Accessible | + +-------------------------------+ + | 512 * 128 B per context | + | Provisioning and Control | + | Trusted Process accessible | + +-------------------------------+ + | 64 KB Global | + | Trusted Process accessible | + +-------------------------------+ + + This driver configures itself into the SCSI software stack as an + adapter driver. The driver is the only entity that is considered a + Trusted Process to program the Provisioning and Control and Global + areas in the MMIO Space shown above. The master context driver + discovers all LUNs attached to the CXL Flash adapter and instantiates + scsi block devices (/dev/sdb, /dev/sdc etc.) for each unique LUN + seen from each path. + + Once these scsi block devices are instantiated, an application + written to a specification provided by the block library may get + access to the Flash from user space (without requiring a system call). + + This master context driver also provides a series of ioctls for this + block library to enable this user space access. The driver supports + two modes for accessing the block device. + + The first mode is called a virtual mode. In this mode a single scsi + block device (/dev/sdb) may be carved up into any number of distinct + virtual LUNs. The virtual LUNs may be resized as long as the sum of + the sizes of all the virtual LUNs, along with the meta-data associated + with it does not exceed the physical capacity. + + The second mode is called the physical mode. In this mode a single + block device (/dev/sdb) may be opened directly by the block library + and the entire space for the LUN is available to the application. + + Only the physical mode provides persistence of the data. i.e. The + data written to the block device will survive application exit and + restart and also reboot. The virtual LUNs do not persist (i.e. do + not survive after the application terminates or the system reboots). + + +Block library API +================= + + Applications intending to get access to the CXL Flash from user + space should use the block library, as it abstracts the details of + interfacing directly with the cxlflash driver that are necessary for + performing administrative actions (i.e.: setup, tear down, resize). + The block library can be thought of as a 'user' of services, + implemented as IOCTLs, that are provided by the cxlflash driver + specifically for devices (LUNs) operating in user space access + mode. While it is not a requirement that applications understand + the interface between the block library and the cxlflash driver, + a high-level overview of each supported service (IOCTL) is provided + below. + + The block library can be found on GitHub: + http://www.github.com/mikehollinger/ibmcapikv + + +CXL Flash Driver IOCTLs +======================= + + Users, such as the block library, that wish to interface with a flash + device (LUN) via user space access need to use the services provided + by the cxlflash driver. As these services are implemented as ioctls, + a file descriptor handle must first be obtained in order to establish + the communication channel between a user and the kernel. This file + descriptor is obtained by opening the device special file associated + with the scsi disk device (/dev/sdb) that was created during LUN + discovery. As per the location of the cxlflash driver within the + SCSI protocol stack, this open is actually not seen by the cxlflash + driver. Upon successful open, the user receives a file descriptor + (herein referred to as fd1) that should be used for issuing the + subsequent ioctls listed below. + + The structure definitions for these IOCTLs are available in: + uapi/scsi/cxlflash_ioctl.h + +DK_CXLFLASH_ATTACH +------------------ + + This ioctl obtains, initializes, and starts a context using the CXL + kernel services. These services specify a context id (u16) by which + to uniquely identify the context and its allocated resources. The + services additionally provide a second file descriptor (herein + referred to as fd2) that is used by the block library to initiate + memory mapped I/O (via mmap()) to the CXL flash device and poll for + completion events. This file descriptor is intentionally installed by + this driver and not the CXL kernel services to allow for intermediary + notification and access in the event of a non-user-initiated close(), + such as a killed process. This design point is described in further + detail in the description for the DK_CXLFLASH_DETACH ioctl. + + There are a few important aspects regarding the "tokens" (context id + and fd2) that are provided back to the user: + + - These tokens are only valid for the process under which they + were created. The child of a forked process cannot continue + to use the context id or file descriptor created by its parent + (see DK_CXLFLASH_VLUN_CLONE for further details). + + - These tokens are only valid for the lifetime of the context and + the process under which they were created. Once either is + destroyed, the tokens are to be considered stale and subsequent + usage will result in errors. + + - When a context is no longer needed, the user shall detach from + the context via the DK_CXLFLASH_DETACH ioctl. + + - A close on fd2 will invalidate the tokens. This operation is not + required by the user. + +DK_CXLFLASH_USER_DIRECT +----------------------- + This ioctl is responsible for transitioning the LUN to direct + (physical) mode access and configuring the AFU for direct access from + user space on a per-context basis. Additionally, the block size and + last logical block address (LBA) are returned to the user. + + As mentioned previously, when operating in user space access mode, + LUNs may be accessed in whole or in part. Only one mode is allowed + at a time and if one mode is active (outstanding references exist), + requests to use the LUN in a different mode are denied. + + The AFU is configured for direct access from user space by adding an + entry to the AFU's resource handle table. The index of the entry is + treated as a resource handle that is returned to the user. The user + is then able to use the handle to reference the LUN during I/O. + +DK_CXLFLASH_USER_VIRTUAL +------------------------ + This ioctl is responsible for transitioning the LUN to virtual mode + of access and configuring the AFU for virtual access from user space + on a per-context basis. Additionally, the block size and last logical + block address (LBA) are returned to the user. + + As mentioned previously, when operating in user space access mode, + LUNs may be accessed in whole or in part. Only one mode is allowed + at a time and if one mode is active (outstanding references exist), + requests to use the LUN in a different mode are denied. + + The AFU is configured for virtual access from user space by adding + an entry to the AFU's resource handle table. The index of the entry + is treated as a resource handle that is returned to the user. The + user is then able to use the handle to reference the LUN during I/O. + + By default, the virtual LUN is created with a size of 0. The user + would need to use the DK_CXLFLASH_VLUN_RESIZE ioctl to adjust the grow + the virtual LUN to a desired size. To avoid having to perform this + resize for the initial creation of the virtual LUN, the user has the + option of specifying a size as part of the DK_CXLFLASH_USER_VIRTUAL + ioctl, such that when success is returned to the user, the + resource handle that is provided is already referencing provisioned + storage. This is reflected by the last LBA being a non-zero value. + +DK_CXLFLASH_VLUN_RESIZE +----------------------- + This ioctl is responsible for resizing a previously created virtual + LUN and will fail if invoked upon a LUN that is not in virtual + mode. Upon success, an updated last LBA is returned to the user + indicating the new size of the virtual LUN associated with the + resource handle. + + The partitioning of virtual LUNs is jointly mediated by the cxlflash + driver and the AFU. An allocation table is kept for each LUN that is + operating in the virtual mode and used to program a LUN translation + table that the AFU references when provided with a resource handle. + +DK_CXLFLASH_RELEASE +------------------- + This ioctl is responsible for releasing a previously obtained + reference to either a physical or virtual LUN. This can be + thought of as the inverse of the DK_CXLFLASH_USER_DIRECT or + DK_CXLFLASH_USER_VIRTUAL ioctls. Upon success, the resource handle + is no longer valid and the entry in the resource handle table is + made available to be used again. + + As part of the release process for virtual LUNs, the virtual LUN + is first resized to 0 to clear out and free the translation tables + associated with the virtual LUN reference. + +DK_CXLFLASH_DETACH +------------------ + This ioctl is responsible for unregistering a context with the + cxlflash driver and release outstanding resources that were + not explicitly released via the DK_CXLFLASH_RELEASE ioctl. Upon + success, all "tokens" which had been provided to the user from the + DK_CXLFLASH_ATTACH onward are no longer valid. + +DK_CXLFLASH_VLUN_CLONE +---------------------- + This ioctl is responsible for cloning a previously created + context to a more recently created context. It exists solely to + support maintaining user space access to storage after a process + forks. Upon success, the child process (which invoked the ioctl) + will have access to the same LUNs via the same resource handle(s) + and fd2 as the parent, but under a different context. + + Context sharing across processes is not supported with CXL and + therefore each fork must be met with establishing a new context + for the child process. This ioctl simplifies the state management + and playback required by a user in such a scenario. When a process + forks, child process can clone the parents context by first creating + a context (via DK_CXLFLASH_ATTACH) and then using this ioctl to + perform the clone from the parent to the child. + + The clone itself is fairly simple. The resource handle and lun + translation tables are copied from the parent context to the child's + and then synced with the AFU. + +DK_CXLFLASH_VERIFY +------------------ + This ioctl is used to detect various changes such as the capacity of + the disk changing, the number of LUNs visible changing, etc. In cases + where the changes affect the application (such as a LUN resize), the + cxlflash driver will report the changed state to the application. + + The user calls in when they want to validate that a LUN hasn't been + changed in response to a check condition. As the user is operating out + of band from the kernel, they will see these types of events without + the kernel's knowledge. When encountered, the user's architected + behavior is to call in to this ioctl, indicating what they want to + verify and passing along any appropriate information. For now, only + verifying a LUN change (ie: size different) with sense data is + supported. + +DK_CXLFLASH_RECOVER_AFU +----------------------- + This ioctl is used to drive recovery (if such an action is warranted) + of a specified user context. Any state associated with the user context + is re-established upon successful recovery. + + User contexts are put into an error condition when the device needs to + be reset or is terminating. Users are notified of this error condition + by seeing all 0xF's on an MMIO read. Upon encountering this, the + architected behavior for a user is to call into this ioctl to recover + their context. A user may also call into this ioctl at any time to + check if the device is operating normally. If a failure is returned + from this ioctl, the user is expected to gracefully clean up their + context via release/detach ioctls. Until they do, the context they + hold is not relinquished. The user may also optionally exit the process + at which time the context/resources they held will be freed as part of + the release fop. + +DK_CXLFLASH_MANAGE_LUN +---------------------- + This ioctl is used to switch a LUN from a mode where it is available + for file-system access (legacy), to a mode where it is set aside for + exclusive user space access (superpipe). In case a LUN is visible + across multiple ports and adapters, this ioctl is used to uniquely + identify each LUN by its World Wide Node Name (WWNN). --- linux-raspi2-4.2.0.orig/Documentation/usb/gadget-testing.txt +++ linux-raspi2-4.2.0/Documentation/usb/gadget-testing.txt @@ -237,9 +237,7 @@ ----------------------------- device: run the gadget -host: test-usb - -http://www.linux-usb.org/usbtest/testusb.c +host: test-usb (tools/usb/testusb.c) 8. MASS STORAGE function ======================== @@ -586,9 +584,8 @@ ------------------------------- device: run the gadget -host: test-usb +host: test-usb (tools/usb/testusb.c) -http://www.linux-usb.org/usbtest/testusb.c 16. UAC1 function ================= --- linux-raspi2-4.2.0.orig/Documentation/video4linux/bcm2835-v4l2.txt +++ linux-raspi2-4.2.0/Documentation/video4linux/bcm2835-v4l2.txt @@ -0,0 +1,60 @@ + +BCM2835 (aka Raspberry Pi) V4L2 driver +====================================== + +1. Copyright +============ + +Copyright © 2013 Raspberry Pi (Trading) Ltd. + +2. License +========== + +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., 675 Mass Ave, Cambridge, MA 02139, USA. + +3. Quick Start +============== + +You need a version 1.0 or later of v4l2-ctl, available from: + git://git.linuxtv.org/v4l-utils.git + +$ sudo modprobe bcm2835-v4l2 + +Turn on the overlay: + +$ v4l2-ctl --overlay=1 + +Turn off the overlay: + +$ v4l2-ctl --overlay=0 + +Set the capture format for video: + +$ v4l2-ctl --set-fmt-video=width=1920,height=1088,pixelformat=4 + +(Note: 1088 not 1080). + +Capture: + +$ v4l2-ctl --stream-mmap=3 --stream-count=100 --stream-to=somefile.h264 + +Stills capture: + +$ v4l2-ctl --set-fmt-video=width=2592,height=1944,pixelformat=3 +$ v4l2-ctl --stream-mmap=3 --stream-count=1 --stream-to=somefile.jpg + +List of available formats: + +$ v4l2-ctl --list-formats --- linux-raspi2-4.2.0.orig/Documentation/virtual/kvm/api.txt +++ linux-raspi2-4.2.0/Documentation/virtual/kvm/api.txt @@ -1421,13 +1421,16 @@ 4.52 KVM_SET_GSI_ROUTING Capability: KVM_CAP_IRQ_ROUTING -Architectures: x86 s390 +Architectures: x86 s390 arm arm64 Type: vm ioctl Parameters: struct kvm_irq_routing (in) Returns: 0 on success, -1 on error Sets the GSI routing table entries, overwriting any previously set entries. +On arm/arm64, GSI routing has the following limitation: +- GSI routing does not apply to KVM_IRQ_LINE but only to KVM_IRQFD. + struct kvm_irq_routing { __u32 nr; __u32 flags; @@ -1454,7 +1457,10 @@ #define KVM_IRQ_ROUTING_MSI 2 #define KVM_IRQ_ROUTING_S390_ADAPTER 3 -No flags are specified so far, the corresponding field must be set to zero. +flags: +- KVM_MSI_VALID_DEVID: used along with KVM_IRQ_ROUTING_MSI + routing entry type, it tells the msi devid contains a valid value. +- zero otherwise struct kvm_irq_routing_irqchip { __u32 irqchip; @@ -1465,9 +1471,20 @@ __u32 address_lo; __u32 address_hi; __u32 data; - __u32 pad; + union { + __u32 pad; + __u32 devid; + }; }; +devid: If KVM_MSI_VALID_DEVID is set, contains a unique device identifier + for the device that wrote the MSI message. + For PCI, this is usually a BFD identifier in the lower 16 bits. + +The per-VM KVM_CAP_MSI_DEVID capability advertises the need to provide +the device ID. If this capability is not set, userland cannot rely on +the kernel to allow the KVM_MSI_VALID_DEVID flag being set. + struct kvm_irq_routing_s390_adapter { __u64 ind_addr; __u64 summary_addr; @@ -2134,7 +2151,7 @@ 4.71 KVM_SIGNAL_MSI Capability: KVM_CAP_SIGNAL_MSI -Architectures: x86 +Architectures: x86 arm64 Type: vm ioctl Parameters: struct kvm_msi (in) Returns: >0 on delivery, 0 if guest blocked the MSI, and -1 on error @@ -2147,10 +2164,18 @@ __u32 address_hi; __u32 data; __u32 flags; - __u8 pad[16]; + __u32 devid; + __u8 pad[12]; }; -No flags are defined so far. The corresponding field must be 0. +flags: KVM_MSI_VALID_DEVID: devid contains a valid value +devid: If KVM_MSI_VALID_DEVID is set, contains a unique device identifier + for the device that wrote the MSI message. + For PCI, this is usually a BFD identifier in the lower 16 bits. + +The per-VM KVM_CAP_MSI_DEVID capability advertises the need to provide +the device ID. If this capability is not set, userland cannot rely on +the kernel to allow the KVM_MSI_VALID_DEVID flag being set. 4.71 KVM_CREATE_PIT2 @@ -2323,9 +2348,15 @@ irqfd. The KVM_IRQFD_FLAG_RESAMPLE is only necessary on assignment and need not be specified with KVM_IRQFD_FLAG_DEASSIGN. -On ARM/ARM64, the gsi field in the kvm_irqfd struct specifies the Shared -Peripheral Interrupt (SPI) index, such that the GIC interrupt ID is -given by gsi + 32. +On arm/arm64, gsi routing being supported, the following can happen: +- in case no routing entry is associated to this gsi, injection fails +- in case the gsi is associated to an irqchip routing entry, + irqchip.pin + 32 corresponds to the injected SPI ID. +- in case the gsi is associated to an MSI routing entry, + * without GICv3 ITS in-kernel emulation, MSI data matches the SPI ID + of the injected SPI + * with GICv3 ITS in-kernel emulation, the MSI message and device ID + are translated into an LPI. 4.76 KVM_PPC_ALLOCATE_HTAB --- linux-raspi2-4.2.0.orig/Documentation/virtual/kvm/devices/arm-vgic.txt +++ linux-raspi2-4.2.0/Documentation/virtual/kvm/devices/arm-vgic.txt @@ -39,6 +39,15 @@ Only valid for KVM_DEV_TYPE_ARM_VGIC_V3. This address needs to be 64K aligned. + KVM_VGIC_V3_ADDR_TYPE_ITS (rw, 64-bit) + Base address in the guest physical address space of the GICv3 ITS + control register frame. The ITS allows MSI(-X) interrupts to be + injected into guests. This extension is optional, if the kernel + does not support the ITS, the call returns -ENODEV. + This memory is solely for the guest to access the ITS control + registers and does not cover the ITS translation register. + Only valid for KVM_DEV_TYPE_ARM_VGIC_V3. + This address needs to be 64K aligned and the region covers 64 KByte. KVM_DEV_ARM_VGIC_GRP_DIST_REGS Attributes: --- linux-raspi2-4.2.0.orig/MAINTAINERS +++ linux-raspi2-4.2.0/MAINTAINERS @@ -771,6 +771,11 @@ F: drivers/net/appletalk/ F: net/appletalk/ +APPLIED MICRO (APM) X-GENE DEVICE TREE SUPPORT +M: Duc Dang +S: Supported +F: arch/arm64/boot/dts/apm/ + APPLIED MICRO (APM) X-GENE SOC ETHERNET DRIVER M: Iyappan Subramanian M: Keyur Chudgar @@ -1941,6 +1946,19 @@ F: include/uapi/linux/audit.h F: kernel/audit* +AUFS (advanced multi layered unification filesystem) FILESYSTEM +M: "J. R. Okajima" +L: linux-unionfs@vger.kernel.org +L: aufs-users@lists.sourceforge.net (members only) +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 W: http://miguelojeda.es/auxdisplay.htm @@ -3106,6 +3124,15 @@ F: Documentation/powerpc/cxl.txt F: Documentation/ABI/testing/sysfs-class-cxl +CXLFLASH (IBM Coherent Accelerator Processor Interface CAPI Flash) SCSI DRIVER +M: Manoj N. Kumar +M: Matthew R. Ochs +L: linux-scsi@vger.kernel.org +S: Supported +F: drivers/scsi/cxlflash/ +F: include/uapi/scsi/cxlflash_ioctls.h +F: Documentation/powerpc/cxlflash.txt + STMMAC ETHERNET DRIVER M: Giuseppe Cavallaro L: netdev@vger.kernel.org @@ -9882,6 +9909,7 @@ SYNOPSYS ARC ARCHITECTURE M: Vineet Gupta +L: linux-snps-arc@lists.infradead.org S: Supported F: arch/arc/ F: Documentation/devicetree/bindings/arc/ --- linux-raspi2-4.2.0.orig/Makefile +++ linux-raspi2-4.2.0/Makefile @@ -1,8 +1,8 @@ VERSION = 4 PATCHLEVEL = 2 -SUBLEVEL = 0 -EXTRAVERSION = -NAME = Hurr durr I'ma sheep +SUBLEVEL = 8 +EXTRAVERSION = -ckt1 +NAME = Hare's hurried rump # *DOCUMENTATION* # To see a list of typical targets execute "make help" @@ -366,6 +366,12 @@ AFLAGS_KERNEL = CFLAGS_GCOV = -fprofile-arcs -ftest-coverage +# 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 := \ @@ -378,6 +384,7 @@ # Use LINUXINCLUDE when you must reference the include/ directory. # Needed to be compatible with the O= option LINUXINCLUDE := \ + $(UBUNTUINCLUDE) \ -I$(srctree)/arch/$(hdr-arch)/include \ -Iarch/$(hdr-arch)/include/generated/uapi \ -Iarch/$(hdr-arch)/include/generated \ @@ -385,6 +392,9 @@ -Iinclude \ $(USERINCLUDE) +# UBUNTU: Include our third party driver stuff too +LINUXINCLUDE += -Iubuntu/include $(if $(KBUILD_SRC),-I$(srctree)/ubuntu/include) + KBUILD_CPPFLAGS := -D__KERNEL__ KBUILD_CFLAGS := -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs \ @@ -546,7 +556,7 @@ # Objects we will link into vmlinux / subdirs we need to visit init-y := init/ -drivers-y := drivers/ sound/ firmware/ +drivers-y := drivers/ sound/ firmware/ ubuntu/ net-y := net/ libs-y := lib/ core-y := usr/ @@ -1066,6 +1076,7 @@ $(error Headers not exportable for the $(SRCARCH) architecture)) $(Q)$(MAKE) $(hdr-inst)=include/uapi $(Q)$(MAKE) $(hdr-inst)=arch/$(hdr-arch)/include/uapi/asm $(hdr-dst) + $(Q)$(MAKE) $(hdr-inst)=ubuntu/include dst=include oldheaders= PHONY += headers_check_all headers_check_all: headers_install_all @@ -1075,6 +1086,7 @@ headers_check: headers_install $(Q)$(MAKE) $(hdr-inst)=include/uapi HDRCHECK=1 $(Q)$(MAKE) $(hdr-inst)=arch/$(hdr-arch)/include/uapi/asm $(hdr-dst) HDRCHECK=1 + $(Q)$(MAKE) $(hdr-inst)=ubuntu/include dst=include oldheaders= HDRCHECK=1 # --------------------------------------------------------------------------- # Kernel selftest --- linux-raspi2-4.2.0.orig/arch/arc/plat-axs10x/axs10x.c +++ linux-raspi2-4.2.0/arch/arc/plat-axs10x/axs10x.c @@ -402,6 +402,8 @@ unsigned int num_cores = (read_aux_reg(ARC_REG_MCIP_BCR) >> 16) & 0x3F; if (num_cores > 2) arc_set_core_freq(50 * 1000000); + else if (num_cores == 2) + arc_set_core_freq(75 * 1000000); #endif switch (arc_get_core_freq()/1000000) { --- linux-raspi2-4.2.0.orig/arch/arm/Kconfig +++ linux-raspi2-4.2.0/arch/arm/Kconfig @@ -316,6 +316,44 @@ default ARCH_VERSATILE if !MMU default ARCH_MULTIPLATFORM if MMU +config ARCH_BCM2708 + bool "Broadcom BCM2708 family" + select CPU_V6 + select ARM_AMBA + select CLKSRC_MMIO + select CLKSRC_OF if OF + select HAVE_SCHED_CLOCK + select NEED_MACH_GPIO_H + select NEED_MACH_MEMORY_H + select COMMON_CLK + select ARCH_HAS_CPUFREQ + select GENERIC_CLOCKEVENTS + select ARM_ERRATA_411920 + select MACH_BCM2708 + select MULTI_IRQ_HANDLER + select VC4 + select FIQ + help + This enables support for Broadcom BCM2708 boards. + +config ARCH_BCM2709 + bool "Broadcom BCM2709 family" + select CPU_V7 + select HAVE_SMP + select ARM_AMBA + select MIGHT_HAVE_CACHE_L2X0 + select HAVE_SCHED_CLOCK + select NEED_MACH_MEMORY_H + select NEED_MACH_IO_H + select COMMON_CLK + select ARCH_HAS_CPUFREQ + select GENERIC_CLOCKEVENTS + select MACH_BCM2709 + select VC4 + select FIQ + help + This enables support for Broadcom BCM2709 boards. + config ARCH_MULTIPLATFORM bool "Allow multiple platforms to be selected" depends on MMU @@ -536,6 +574,7 @@ select MVEBU_MBUS select PCI select PLAT_ORION_LEGACY + select MULTI_IRQ_HANDLER help Support for the following Marvell Orion 5x series SoCs: Orion-1 (5181), Orion-VoIP (5181L), Orion-NAS (5182), @@ -824,6 +863,9 @@ # Kconfigs may be included either alphabetically (according to the # plat- suffix) or along side the corresponding mach-* source. # +source "arch/arm/mach-bcm2708/Kconfig" +source "arch/arm/mach-bcm2709/Kconfig" + source "arch/arm/mach-mvebu/Kconfig" source "arch/arm/mach-alpine/Kconfig" @@ -2158,6 +2200,7 @@ source "drivers/Kconfig" source "drivers/firmware/Kconfig" +source "ubuntu/Kconfig" source "fs/Kconfig" --- linux-raspi2-4.2.0.orig/arch/arm/Kconfig.debug +++ linux-raspi2-4.2.0/arch/arm/Kconfig.debug @@ -1234,6 +1234,14 @@ options; the platform specific options are deprecated and will be soon removed. + config DEBUG_BCM2708_UART0 + bool "Broadcom BCM2708 UART0 (PL011)" + depends on MACH_BCM2708 + help + Say Y here if you want the debug print routines to direct + their output to UART 0. The port must have been initialised + by the boot-loader before use. + endchoice config DEBUG_AT91_UART --- linux-raspi2-4.2.0.orig/arch/arm/Makefile +++ linux-raspi2-4.2.0/arch/arm/Makefile @@ -54,6 +54,14 @@ LD += -EL endif +# +# The Scalar Replacement of Aggregates (SRA) optimization pass in GCC 4.9 and +# later may result in code being generated that handles signed short and signed +# char struct members incorrectly. So disable it. +# (https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65932) +# +KBUILD_CFLAGS += $(call cc-option,-fno-ipa-sra) + # This selects which instruction set is used. # Note that GCC does not numerically define an architecture version # macro, but instead defines a whole series of macros which makes @@ -146,6 +154,8 @@ # Machine directory name. This list is sorted alphanumerically # by CONFIG_* macro name. +machine-$(CONFIG_ARCH_BCM2708) += bcm2708 +machine-$(CONFIG_ARCH_BCM2709) += bcm2709 machine-$(CONFIG_ARCH_ALPINE) += alpine machine-$(CONFIG_ARCH_AT91) += at91 machine-$(CONFIG_ARCH_AXXIA) += axxia --- linux-raspi2-4.2.0.orig/arch/arm/boot/compressed/Makefile +++ linux-raspi2-4.2.0/arch/arm/boot/compressed/Makefile @@ -3,6 +3,7 @@ # # create a compressed vmlinuz image from the original vmlinux # +KBUILD_CFLAGS := $(filter-out -fstack-protector, $(KBUILD_CFLAGS)) -fno-stack-protector OBJS = --- linux-raspi2-4.2.0.orig/arch/arm/boot/compressed/decompress.c +++ linux-raspi2-4.2.0/arch/arm/boot/compressed/decompress.c @@ -57,5 +57,5 @@ int do_decompress(u8 *input, int len, u8 *output, void (*error)(char *x)) { - return decompress(input, len, NULL, NULL, output, NULL, error); + return __decompress(input, len, NULL, NULL, output, 0, NULL, error); } --- linux-raspi2-4.2.0.orig/arch/arm/boot/dts/Makefile +++ linux-raspi2-4.2.0/arch/arm/boot/dts/Makefile @@ -1,5 +1,25 @@ ifeq ($(CONFIG_OF),y) +dtb-$(CONFIG_BCM2708_DT) += bcm2708-rpi-b.dtb +dtb-$(CONFIG_BCM2708_DT) += bcm2708-rpi-b-plus.dtb +dtb-$(CONFIG_BCM2708_DT) += bcm2708-rpi-cm.dtb +dtb-$(CONFIG_ARCH_BCM2835) += bcm2835-rpi-cm.dtb +dtb-$(CONFIG_BCM2709_DT) += bcm2709-rpi-2-b.dtb + +# Raspberry Pi +ifeq ($(CONFIG_BCM2708_DT),y) + RPI_DT_OVERLAYS=y +endif +ifeq ($(CONFIG_BCM2709_DT),y) + RPI_DT_OVERLAYS=y +endif +ifeq ($(CONFIG_ARCH_BCM2835),y) + RPI_DT_OVERLAYS=y +endif +ifeq ($(RPI_DT_OVERLAYS),y) + dts-dirs += overlays +endif + dtb-$(CONFIG_ARCH_ALPINE) += \ alpine-db.dtb dtb-$(CONFIG_MACH_ASM9260) += \ @@ -710,7 +730,17 @@ mt8127-moose.dtb \ mt8135-evbp1.dtb dtb-$(CONFIG_ARCH_ZX) += zx296702-ad1.dtb + +targets += dtbs dtbs_install +targets += $(dtb-y) + endif always := $(dtb-y) +subdir-y := $(dts-dirs) clean-files := *.dtb + +# Enable fixups to support overlays on BCM2708 platforms +ifeq ($(RPI_DT_OVERLAYS),y) + DTC_FLAGS ?= -@ +endif --- linux-raspi2-4.2.0.orig/arch/arm/boot/dts/am57xx-beagle-x15.dts +++ linux-raspi2-4.2.0/arch/arm/boot/dts/am57xx-beagle-x15.dts @@ -415,11 +415,12 @@ /* SMPS9 unused */ ldo1_reg: ldo1 { - /* VDD_SD */ + /* VDD_SD / VDDSHV8 */ regulator-name = "ldo1"; regulator-min-microvolt = <1800000>; regulator-max-microvolt = <3300000>; regulator-boot-on; + regulator-always-on; }; ldo2_reg: ldo2 { --- linux-raspi2-4.2.0.orig/arch/arm/boot/dts/armada-385-db-ap.dts +++ linux-raspi2-4.2.0/arch/arm/boot/dts/armada-385-db-ap.dts @@ -46,7 +46,7 @@ / { model = "Marvell Armada 385 Access Point Development Board"; - compatible = "marvell,a385-db-ap", "marvell,armada385", "marvell,armada38x"; + compatible = "marvell,a385-db-ap", "marvell,armada385", "marvell,armada380"; chosen { stdout-path = "serial1:115200n8"; --- linux-raspi2-4.2.0.orig/arch/arm/boot/dts/bcm2708-rpi-b-plus.dts +++ linux-raspi2-4.2.0/arch/arm/boot/dts/bcm2708-rpi-b-plus.dts @@ -0,0 +1,134 @@ +/dts-v1/; + +#include "bcm2708.dtsi" + +/ { + compatible = "brcm,bcm2708"; + model = "Raspberry Pi Model B+"; +}; + +&gpio { + spi0_pins: spi0_pins { + brcm,pins = <9 10 11>; + brcm,function = <4>; /* alt0 */ + }; + + spi0_cs_pins: spi0_cs_pins { + brcm,pins = <8 7>; + brcm,function = <1>; /* output */ + }; + + i2c0_pins: i2c0 { + brcm,pins = <0 1>; + brcm,function = <4>; + }; + + i2c1_pins: i2c1 { + brcm,pins = <2 3>; + brcm,function = <4>; + }; + + i2s_pins: i2s { + brcm,pins = <18 19 20 21>; + brcm,function = <4>; /* alt0 */ + }; +}; + +&mmc { + status = "okay"; + bus-width = <4>; +}; + +&fb { + status = "okay"; +}; + +&uart0 { + status = "okay"; +}; + +&spi0 { + pinctrl-names = "default"; + pinctrl-0 = <&spi0_pins &spi0_cs_pins>; + cs-gpios = <&gpio 8 1>, <&gpio 7 1>; + + spidev@0{ + compatible = "spidev"; + reg = <0>; /* CE0 */ + #address-cells = <1>; + #size-cells = <0>; + spi-max-frequency = <500000>; + }; + + spidev@1{ + compatible = "spidev"; + reg = <1>; /* CE1 */ + #address-cells = <1>; + #size-cells = <0>; + spi-max-frequency = <500000>; + }; +}; + +&i2c0 { + pinctrl-names = "default"; + pinctrl-0 = <&i2c0_pins>; + clock-frequency = <100000>; +}; + +&i2c1 { + pinctrl-names = "default"; + pinctrl-0 = <&i2c1_pins>; + clock-frequency = <100000>; +}; + +&i2c2 { + clock-frequency = <100000>; +}; + +&i2s { + #sound-dai-cells = <0>; + pinctrl-names = "default"; + pinctrl-0 = <&i2s_pins>; +}; + +&leds { + act_led: act { + label = "led0"; + linux,default-trigger = "mmc0"; + gpios = <&gpio 47 0>; + }; + + pwr_led: pwr { + label = "led1"; + linux,default-trigger = "input"; + gpios = <&gpio 35 0>; + }; +}; + +/ { + __overrides__ { + uart0 = <&uart0>,"status"; + uart0_clkrate = <&clk_uart0>,"clock-frequency:0"; + i2s = <&i2s>,"status"; + spi = <&spi0>,"status"; + i2c0 = <&i2c0>,"status"; + i2c1 = <&i2c1>,"status"; + i2c2_iknowwhatimdoing = <&i2c2>,"status"; + i2c0_baudrate = <&i2c0>,"clock-frequency:0"; + i2c1_baudrate = <&i2c1>,"clock-frequency:0"; + i2c2_baudrate = <&i2c2>,"clock-frequency:0"; + core_freq = <&clk_core>,"clock-frequency:0"; + + act_led_gpio = <&act_led>,"gpios:4"; + act_led_activelow = <&act_led>,"gpios:8"; + act_led_trigger = <&act_led>,"linux,default-trigger"; + + pwr_led_gpio = <&pwr_led>,"gpios:4"; + pwr_led_activelow = <&pwr_led>,"gpios:8"; + pwr_led_trigger = <&pwr_led>,"linux,default-trigger"; + + audio = <&audio>,"status"; + watchdog = <&watchdog>,"status"; + random = <&random>,"status"; + }; +}; --- linux-raspi2-4.2.0.orig/arch/arm/boot/dts/bcm2708-rpi-b.dts +++ linux-raspi2-4.2.0/arch/arm/boot/dts/bcm2708-rpi-b.dts @@ -0,0 +1,124 @@ +/dts-v1/; + +#include "bcm2708.dtsi" + +/ { + compatible = "brcm,bcm2708"; + model = "Raspberry Pi Model B"; +}; + +&gpio { + spi0_pins: spi0_pins { + brcm,pins = <9 10 11>; + brcm,function = <4>; /* alt0 */ + }; + + spi0_cs_pins: spi0_cs_pins { + brcm,pins = <8 7>; + brcm,function = <1>; /* output */ + }; + + i2c0_pins: i2c0 { + brcm,pins = <0 1>; + brcm,function = <4>; + }; + + i2c1_pins: i2c1 { + brcm,pins = <2 3>; + brcm,function = <4>; + }; + + i2s_pins: i2s { + brcm,pins = <28 29 30 31>; + brcm,function = <6>; /* alt2 */ + }; +}; + +&mmc { + status = "okay"; + bus-width = <4>; +}; + +&fb { + status = "okay"; +}; + +&uart0 { + status = "okay"; +}; + +&spi0 { + pinctrl-names = "default"; + pinctrl-0 = <&spi0_pins &spi0_cs_pins>; + cs-gpios = <&gpio 8 1>, <&gpio 7 1>; + + spidev@0{ + compatible = "spidev"; + reg = <0>; /* CE0 */ + #address-cells = <1>; + #size-cells = <0>; + spi-max-frequency = <500000>; + }; + + spidev@1{ + compatible = "spidev"; + reg = <1>; /* CE1 */ + #address-cells = <1>; + #size-cells = <0>; + spi-max-frequency = <500000>; + }; +}; + +&i2c0 { + pinctrl-names = "default"; + pinctrl-0 = <&i2c0_pins>; + clock-frequency = <100000>; +}; + +&i2c1 { + pinctrl-names = "default"; + pinctrl-0 = <&i2c1_pins>; + clock-frequency = <100000>; +}; + +&i2c2 { + clock-frequency = <100000>; +}; + +&i2s { + #sound-dai-cells = <0>; + pinctrl-names = "default"; + pinctrl-0 = <&i2s_pins>; +}; + +&leds { + act_led: act { + label = "led0"; + linux,default-trigger = "mmc0"; + gpios = <&gpio 16 1>; + }; +}; + +/ { + __overrides__ { + uart0 = <&uart0>,"status"; + uart0_clkrate = <&clk_uart0>,"clock-frequency:0"; + i2s = <&i2s>,"status"; + spi = <&spi0>,"status"; + i2c0 = <&i2c0>,"status"; + i2c1 = <&i2c1>,"status"; + i2c2_iknowwhatimdoing = <&i2c2>,"status"; + i2c0_baudrate = <&i2c0>,"clock-frequency:0"; + i2c1_baudrate = <&i2c1>,"clock-frequency:0"; + i2c2_baudrate = <&i2c2>,"clock-frequency:0"; + core_freq = <&clk_core>,"clock-frequency:0"; + + act_led_gpio = <&act_led>,"gpios:4"; + act_led_activelow = <&act_led>,"gpios:8"; + act_led_trigger = <&act_led>,"linux,default-trigger"; + + audio = <&audio>,"status"; + watchdog = <&watchdog>,"status"; + random = <&random>,"status"; + }; +}; --- linux-raspi2-4.2.0.orig/arch/arm/boot/dts/bcm2708-rpi-cm.dts +++ linux-raspi2-4.2.0/arch/arm/boot/dts/bcm2708-rpi-cm.dts @@ -0,0 +1,98 @@ +/dts-v1/; + +#include "bcm2708-rpi-cm.dtsi" + +/ { + model = "Raspberry Pi Compute Module"; +}; + +&uart0 { + status = "okay"; +}; + +&gpio { + spi0_pins: spi0_pins { + brcm,pins = <9 10 11>; + brcm,function = <4>; /* alt0 */ + }; + + spi0_cs_pins: spi0_cs_pins { + brcm,pins = <8 7>; + brcm,function = <1>; /* output */ + }; + + i2c0_pins: i2c0 { + brcm,pins = <0 1>; + brcm,function = <4>; + }; + + i2c1_pins: i2c1 { + brcm,pins = <2 3>; + brcm,function = <4>; + }; + + i2s_pins: i2s { + brcm,pins = <18 19 20 21>; + brcm,function = <4>; /* alt0 */ + }; +}; + +&spi0 { + pinctrl-names = "default"; + pinctrl-0 = <&spi0_pins &spi0_cs_pins>; + cs-gpios = <&gpio 8 1>, <&gpio 7 1>; + + spidev@0{ + compatible = "spidev"; + reg = <0>; /* CE0 */ + #address-cells = <1>; + #size-cells = <0>; + spi-max-frequency = <500000>; + }; + + spidev@1{ + compatible = "spidev"; + reg = <1>; /* CE1 */ + #address-cells = <1>; + #size-cells = <0>; + spi-max-frequency = <500000>; + }; +}; + +&i2c0 { + pinctrl-names = "default"; + pinctrl-0 = <&i2c0_pins>; + clock-frequency = <100000>; +}; + +&i2c1 { + pinctrl-names = "default"; + pinctrl-0 = <&i2c1_pins>; + clock-frequency = <100000>; +}; + +&i2c2 { + clock-frequency = <100000>; +}; + +&i2s { + #sound-dai-cells = <0>; + pinctrl-names = "default"; + pinctrl-0 = <&i2s_pins>; +}; + +/ { + __overrides__ { + uart0 = <&uart0>,"status"; + uart0_clkrate = <&clk_uart0>,"clock-frequency:0"; + i2s = <&i2s>,"status"; + spi = <&spi0>,"status"; + i2c0 = <&i2c0>,"status"; + i2c1 = <&i2c1>,"status"; + i2c2_iknowwhatimdoing = <&i2c2>,"status"; + i2c0_baudrate = <&i2c0>,"clock-frequency:0"; + i2c1_baudrate = <&i2c1>,"clock-frequency:0"; + i2c2_baudrate = <&i2c2>,"clock-frequency:0"; + core_freq = <&clk_core>,"clock-frequency:0"; + }; +}; --- linux-raspi2-4.2.0.orig/arch/arm/boot/dts/bcm2708-rpi-cm.dtsi +++ linux-raspi2-4.2.0/arch/arm/boot/dts/bcm2708-rpi-cm.dtsi @@ -0,0 +1,30 @@ +#include "bcm2708.dtsi" + +&leds { + act_led: act { + label = "led0"; + linux,default-trigger = "mmc0"; + gpios = <&gpio 47 0>; + }; +}; + +&mmc { + status = "okay"; + bus-width = <4>; +}; + +&fb { + status = "okay"; +}; + +/ { + __overrides__ { + act_led_gpio = <&act_led>,"gpios:4"; + act_led_activelow = <&act_led>,"gpios:8"; + act_led_trigger = <&act_led>,"linux,default-trigger"; + + audio = <&audio>,"status"; + watchdog = <&watchdog>,"status"; + random = <&random>,"status"; + }; +}; --- linux-raspi2-4.2.0.orig/arch/arm/boot/dts/bcm2708.dtsi +++ linux-raspi2-4.2.0/arch/arm/boot/dts/bcm2708.dtsi @@ -0,0 +1,36 @@ +/include/ "bcm2708_common.dtsi" + +/ { + compatible = "brcm,bcm2708"; + model = "BCM2708"; + + chosen { + /* No padding required - the boot loader can do that. */ + bootargs = ""; + }; + + soc { + ranges = <0x7e000000 0x20000000 0x01000000>; + + timer@7e003000 { + compatible = "brcm,bcm2835-system-timer"; + reg = <0x7e003000 0x1000>; + interrupts = <1 0>, <1 1>, <1 2>, <1 3>; + clock-frequency = <1000000>; + }; + + arm-pmu { + compatible = "arm,arm1176-pmu"; + }; + + gpiomem { + compatible = "brcm,bcm2835-gpiomem"; + reg = <0x7e200000 0x1000>; + status = "okay"; + }; + }; +}; + +&intc { + compatible = "brcm,bcm2835-armctrl-ic"; +}; --- linux-raspi2-4.2.0.orig/arch/arm/boot/dts/bcm2708_common.dtsi +++ linux-raspi2-4.2.0/arch/arm/boot/dts/bcm2708_common.dtsi @@ -0,0 +1,342 @@ +#include "skeleton.dtsi" + +/ { + interrupt-parent = <&intc>; + + aliases { + audio = &audio; + sound = &sound; + soc = &soc; + dma = &dma; + intc = &intc; + watchdog = &watchdog; + random = &random; + mailbox = &mailbox; + gpio = &gpio; + uart0 = &uart0; + i2s = &i2s; + spi0 = &spi0; + i2c0 = &i2c0; + uart1 = &uart1; + mmc = &mmc; + i2c1 = &i2c1; + i2c2 = &i2c2; + usb = &usb; + leds = &leds; + fb = &fb; + vchiq = &vchiq; + thermal = &thermal; + clocks = &clocks; + }; + + /* Onboard audio */ + audio: audio { + compatible = "brcm,bcm2835-audio"; + brcm,pwm-channels = <8>; + status = "disabled"; + }; + + /* External sound card */ + sound: sound { + }; + + soc: soc { + compatible = "simple-bus"; + #address-cells = <1>; + #size-cells = <1>; + + dma: dma@7e007000 { + compatible = "brcm,bcm2835-dma"; + reg = <0x7e007000 0xf00>; + interrupts = <1 16>, + <1 17>, + <1 18>, + <1 19>, + <1 20>, + <1 21>, + <1 22>, + <1 23>, + <1 24>, + <1 25>, + <1 26>, + <1 27>; + + #dma-cells = <1>; + brcm,dma-channel-mask = <0x0f35>; + }; + + intc: interrupt-controller@7e00b200 { + compatible = "brcm,bcm2708-armctrl-ic"; + reg = <0x7e00b200 0x200>; + interrupt-controller; + #interrupt-cells = <2>; + }; + + mailbox: mailbox@7e00b800 { + compatible = "brcm,bcm2835-mbox"; + reg = <0x7e00b880 0x40>; + interrupts = <0 1>; + #mbox-cells = <0>; + }; + + watchdog: watchdog@7e100000 { + compatible = "brcm,bcm2835-pm-wdt"; + reg = <0x7e100000 0x28>; + status = "disabled"; + }; + + cprman: cprman@7e101000 { + compatible = "brcm,bcm2835-cprman"; + #clock-cells = <1>; + reg = <0x7e101000 0x2000>; + + /* CPRMAN derives everything from the platform's + * oscillator. + */ + clocks = <&clk_osc>; + status = "disabled"; + }; + + random: rng@7e104000 { + compatible = "brcm,bcm2835-rng"; + reg = <0x7e104000 0x10>; + status = "disabled"; + }; + + gpio: gpio@7e200000 { + compatible = "brcm,bcm2835-gpio"; + reg = <0x7e200000 0xb4>; + interrupts = <2 17>, <2 18>; + + gpio-controller; + #gpio-cells = <2>; + + interrupt-controller; + #interrupt-cells = <2>; + }; + + uart0: uart@7e201000 { + compatible = "arm,pl011", "arm,primecell"; + reg = <0x7e201000 0x1000>; + interrupts = <2 25>; + clocks = <&clk_uart0 &clk_apb_p>; + clock-names = "uartclk","apb_pclk"; + arm,primecell-periphid = <0x00241011>; // For an explanation, see + // https://github.com/raspberrypi/linux/commit/13731d862cf5219216533a3b0de052cee4cc5038 + status = "disabled"; + }; + + i2s: i2s@7e203000 { + compatible = "brcm,bcm2708-i2s"; + reg = <0x7e203000 0x24>, + <0x7e101098 0x08>; + + //dmas = <&dma 2>, + // <&dma 3>; + dma-names = "tx", "rx"; + status = "disabled"; + }; + + spi0: spi@7e204000 { + compatible = "brcm,bcm2835-spi"; + reg = <0x7e204000 0x1000>; + interrupts = <2 22>; + clocks = <&clk_core>; + #address-cells = <1>; + #size-cells = <0>; + status = "disabled"; + /* the dma channels */ + dmas = <&dma 6>, <&dma 7>; + dma-names = "tx", "rx"; + /* the chipselects used - <0> means native GPIO + * add more gpios if necessary as <&gpio 6 1> + * (but do not forget to make them output!) + */ + cs-gpios = <0>, <0>; + }; + + i2c0: i2c@7e205000 { + compatible = "brcm,bcm2708-i2c"; + reg = <0x7e205000 0x1000>; + interrupts = <2 21>; + clocks = <&clk_i2c>; + #address-cells = <1>; + #size-cells = <0>; + status = "disabled"; + }; + + pwm: pwm@7e20c000 { + compatible = "brcm,bcm2835-pwm"; + reg = <0x7e20c000 0x28>; + clocks = <&clk_pwm>; + #pwm-cells = <2>; + status = "disabled"; + }; + + uart1: uart@7e215040 { + compatible = "brcm,bcm2835-aux-uart", "ns16550"; + reg = <0x7e215040 0x40>; + interrupts = <1 29>; + clocks = <&clk_uart1>; + reg-shift = <2>; + no-loopback-test; + status = "disabled"; + }; + + mmc: mmc@7e300000 { + compatible = "brcm,bcm2835-mmc"; + reg = <0x7e300000 0x100>; + interrupts = <2 30>; + clocks = <&clk_mmc>; + dmas = <&dma 11>, + <&dma 11>; + dma-names = "tx", "rx"; + status = "disabled"; + }; + + i2c1: i2c@7e804000 { + compatible = "brcm,bcm2708-i2c"; + reg = <0x7e804000 0x1000>; + interrupts = <2 21>; + clocks = <&clk_i2c>; + #address-cells = <1>; + #size-cells = <0>; + status = "disabled"; + }; + + i2c2: i2c@7e805000 { + // Beware - this is shared with the HDMI module. + // Careless use may break (really) your display. + // Caveat emptor. + compatible = "brcm,bcm2708-i2c"; + reg = <0x7e805000 0x1000>; + interrupts = <2 21>; + clocks = <&clk_i2c>; + #address-cells = <1>; + #size-cells = <0>; + status = "disabled"; + }; + + smi: smi@7e600000 { + compatible = "brcm,bcm2835-smi"; + reg = <0x7e600000 0x44>, <0x7e1010b0 0x8>; + interrupts = <2 16>; + brcm,smi-clock-source = <6>; + brcm,smi-clock-divisor = <4>; + dmas = <&dma 4>; + dma-names = "rx-tx"; + status = "disabled"; + }; + + usb: usb@7e980000 { + compatible = "brcm,bcm2708-usb"; + reg = <0x7e980000 0x10000>, + <0x7e006000 0x1000>; + interrupts = <2 0>, + <1 9>; + }; + + firmware: firmware { + compatible = "raspberrypi,bcm2835-firmware"; + mboxes = <&mailbox>; + }; + + leds: leds { + compatible = "gpio-leds"; + }; + + fb: fb { + compatible = "brcm,bcm2708-fb"; + firmware = <&firmware>; + status = "disabled"; + }; + + vchiq: vchiq { + compatible = "brcm,bcm2835-vchiq"; + reg = <0x7e00b840 0xf>; + interrupts = <0 2>; + cache-line-size = <32>; + firmware = <&firmware>; + }; + + thermal: thermal { + compatible = "brcm,bcm2835-thermal"; + firmware = <&firmware>; + }; + }; + + clocks: clocks { + compatible = "simple-bus"; + #address-cells = <1>; + #size-cells = <0>; + + clk_mmc: clock@0 { + compatible = "fixed-clock"; + reg = <0>; + #clock-cells = <0>; + clock-output-names = "mmc"; + clock-frequency = <250000000>; + }; + + clk_i2c: clock@1 { + compatible = "fixed-clock"; + reg = <1>; + #clock-cells = <0>; + clock-output-names = "i2c"; + clock-frequency = <250000000>; + }; + + clk_core: clock@2 { + compatible = "fixed-clock"; + reg = <2>; + #clock-cells = <0>; + clock-output-names = "core"; + clock-frequency = <250000000>; + }; + + clk_uart0: clock@3 { + compatible = "fixed-clock"; + reg = <3>; + #clock-cells = <0>; + clock-output-names = "uart0_pclk"; + clock-frequency = <3000000>; + }; + + clk_apb_p: clock@4 { + compatible = "fixed-clock"; + reg = <4>; + #clock-cells = <0>; + clock-output-names = "apb_pclk"; + clock-frequency = <126000000>; + }; + + clk_pwm: clock@5 { + compatible = "fixed-clock"; + reg = <3>; + #clock-cells = <0>; + clock-output-names = "pwm"; + clock-frequency = <100000000>; + }; + + clk_uart1: clock@6 { + compatible = "fixed-factor-clock"; + clocks = <&clk_core>; + #clock-cells = <0>; + clock-div = <1>; + clock-mult = <2>; + }; + + /* The oscillator is the root of the clock tree. */ + clk_osc: clock@7 { + compatible = "fixed-clock"; + reg = <7>; + #clock-cells = <0>; + clock-output-names = "osc"; + clock-frequency = <19200000>; + }; + }; + + __overrides__ { + cache_line_size = <&vchiq>, "cache-line-size:0"; + }; +}; --- linux-raspi2-4.2.0.orig/arch/arm/boot/dts/bcm2709-rpi-2-b.dts +++ linux-raspi2-4.2.0/arch/arm/boot/dts/bcm2709-rpi-2-b.dts @@ -0,0 +1,134 @@ +/dts-v1/; + +#include "bcm2709.dtsi" + +/ { + compatible = "brcm,bcm2709"; + model = "Raspberry Pi 2 Model B"; +}; + +&gpio { + spi0_pins: spi0_pins { + brcm,pins = <9 10 11>; + brcm,function = <4>; /* alt0 */ + }; + + spi0_cs_pins: spi0_cs_pins { + brcm,pins = <8 7>; + brcm,function = <1>; /* output */ + }; + + i2c0_pins: i2c0 { + brcm,pins = <0 1>; + brcm,function = <4>; + }; + + i2c1_pins: i2c1 { + brcm,pins = <2 3>; + brcm,function = <4>; + }; + + i2s_pins: i2s { + brcm,pins = <18 19 20 21>; + brcm,function = <4>; /* alt0 */ + }; +}; + +&mmc { + status = "okay"; + bus-width = <4>; +}; + +&fb { + status = "okay"; +}; + +&uart0 { + status = "okay"; +}; + +&spi0 { + pinctrl-names = "default"; + pinctrl-0 = <&spi0_pins &spi0_cs_pins>; + cs-gpios = <&gpio 8 1>, <&gpio 7 1>; + + spidev@0{ + compatible = "spidev"; + reg = <0>; /* CE0 */ + #address-cells = <1>; + #size-cells = <0>; + spi-max-frequency = <500000>; + }; + + spidev@1{ + compatible = "spidev"; + reg = <1>; /* CE1 */ + #address-cells = <1>; + #size-cells = <0>; + spi-max-frequency = <500000>; + }; +}; + +&i2c0 { + pinctrl-names = "default"; + pinctrl-0 = <&i2c0_pins>; + clock-frequency = <100000>; +}; + +&i2c1 { + pinctrl-names = "default"; + pinctrl-0 = <&i2c1_pins>; + clock-frequency = <100000>; +}; + +&i2c2 { + clock-frequency = <100000>; +}; + +&i2s { + #sound-dai-cells = <0>; + pinctrl-names = "default"; + pinctrl-0 = <&i2s_pins>; +}; + +&leds { + act_led: act { + label = "led0"; + linux,default-trigger = "mmc0"; + gpios = <&gpio 47 0>; + }; + + pwr_led: pwr { + label = "led1"; + linux,default-trigger = "default-on"; + gpios = <&gpio 35 0>; + }; +}; + +/ { + __overrides__ { + uart0 = <&uart0>,"status"; + uart0_clkrate = <&clk_uart0>,"clock-frequency:0"; + i2s = <&i2s>,"status"; + spi = <&spi0>,"status"; + i2c0 = <&i2c0>,"status"; + i2c1 = <&i2c1>,"status"; + i2c2_iknowwhatimdoing = <&i2c2>,"status"; + i2c0_baudrate = <&i2c0>,"clock-frequency:0"; + i2c1_baudrate = <&i2c1>,"clock-frequency:0"; + i2c2_baudrate = <&i2c2>,"clock-frequency:0"; + core_freq = <&clk_core>,"clock-frequency:0"; + + act_led_gpio = <&act_led>,"gpios:4"; + act_led_activelow = <&act_led>,"gpios:8"; + act_led_trigger = <&act_led>,"linux,default-trigger"; + + pwr_led_gpio = <&pwr_led>,"gpios:4"; + pwr_led_activelow = <&pwr_led>,"gpios:8"; + pwr_led_trigger = <&pwr_led>,"linux,default-trigger"; + + audio = <&audio>,"status"; + watchdog = <&watchdog>,"status"; + random = <&random>,"status"; + }; +}; --- linux-raspi2-4.2.0.orig/arch/arm/boot/dts/bcm2709.dtsi +++ linux-raspi2-4.2.0/arch/arm/boot/dts/bcm2709.dtsi @@ -0,0 +1,76 @@ +#include "bcm2708_common.dtsi" + +/ { + compatible = "brcm,bcm2709"; + model = "BCM2709"; + + chosen { + /* No padding required - the boot loader can do that. */ + bootargs = ""; + }; + + soc { + ranges = <0x7e000000 0x3f000000 0x01000000>; + + arm-pmu { + compatible = "arm,cortex-a7-pmu"; + interrupts = <3 9>; + }; + + gpiomem { + compatible = "brcm,bcm2835-gpiomem"; + reg = <0x7e200000 0x1000>; + status = "okay"; + }; + }; + + timer { + compatible = "arm,armv7-timer"; + clock-frequency = <19200000>; + interrupts = <3 0>, // PHYS_SECURE_PPI + <3 1>, // PHYS_NONSECURE_PPI + <3 3>, // VIRT_PPI + <3 2>; // HYP_PPI + always-on; + }; + + cpus: cpus { + #address-cells = <1>; + #size-cells = <0>; + + v7_cpu0: cpu@0 { + device_type = "cpu"; + compatible = "arm,cortex-a7"; + reg = <0xf00>; + clock-frequency = <800000000>; + }; + + v7_cpu1: cpu@1 { + device_type = "cpu"; + compatible = "arm,cortex-a7"; + reg = <0xf01>; + clock-frequency = <800000000>; + }; + + v7_cpu2: cpu@2 { + device_type = "cpu"; + compatible = "arm,cortex-a7"; + reg = <0xf02>; + clock-frequency = <800000000>; + }; + + v7_cpu3: cpu@3 { + device_type = "cpu"; + compatible = "arm,cortex-a7"; + reg = <0xf03>; + clock-frequency = <800000000>; + }; + }; + + __overrides__ { + arm_freq = <&v7_cpu0>, "clock-frequency:0", + <&v7_cpu1>, "clock-frequency:0", + <&v7_cpu2>, "clock-frequency:0", + <&v7_cpu3>, "clock-frequency:0"; + }; +}; --- linux-raspi2-4.2.0.orig/arch/arm/boot/dts/bcm2835-rpi-b-plus.dts +++ linux-raspi2-4.2.0/arch/arm/boot/dts/bcm2835-rpi-b-plus.dts @@ -1,30 +1,128 @@ /dts-v1/; -#include "bcm2835-rpi.dtsi" +#include "bcm2835.dtsi" / { compatible = "raspberrypi,model-b-plus", "brcm,bcm2835"; model = "Raspberry Pi Model B+"; - - leds { - act { - gpios = <&gpio 47 0>; - }; - - pwr { - label = "PWR"; - gpios = <&gpio 35 0>; - default-state = "keep"; - linux,default-trigger = "default-on"; - }; - }; }; &gpio { - pinctrl-0 = <&gpioout &alt0 &i2s_alt0 &alt3>; + spi0_pins: spi0_pins { + brcm,pins = <7 8 9 10 11>; + brcm,function = <4>; /* alt0 */ + }; + + i2c0_pins: i2c0 { + brcm,pins = <0 1>; + brcm,function = <4>; + }; - /* I2S interface */ - i2s_alt0: i2s_alt0 { + i2c1_pins: i2c1 { + brcm,pins = <2 3>; + brcm,function = <4>; + }; + + i2s_pins: i2s { brcm,pins = <18 19 20 21>; - brcm,function = ; + brcm,function = <4>; /* alt0 */ + }; +}; + +&mmc { + status = "okay"; + bus-width = <4>; +}; + +&fb { + status = "okay"; +}; + +&uart0 { + status = "okay"; +}; + +&spi0 { + pinctrl-names = "default"; + pinctrl-0 = <&spi0_pins>; + + spidev@0{ + compatible = "spidev"; + reg = <0>; /* CE0 */ + #address-cells = <1>; + #size-cells = <0>; + spi-max-frequency = <500000>; + }; + + spidev@1{ + compatible = "spidev"; + reg = <1>; /* CE1 */ + #address-cells = <1>; + #size-cells = <0>; + spi-max-frequency = <500000>; + }; +}; + +&i2c0 { + pinctrl-names = "default"; + pinctrl-0 = <&i2c0_pins>; + clock-frequency = <100000>; +}; + +&i2c1 { + pinctrl-names = "default"; + pinctrl-0 = <&i2c1_pins>; + clock-frequency = <100000>; +}; + +&i2c2 { + clock-frequency = <100000>; +}; + +&i2s { + #sound-dai-cells = <0>; + pinctrl-names = "default"; + pinctrl-0 = <&i2s_pins>; +}; + +&leds { + act_led: act { + label = "led0"; + linux,default-trigger = "mmc0"; + gpios = <&gpio 47 0>; + }; + + pwr_led: pwr { + label = "led1"; + linux,default-trigger = "input"; + gpios = <&gpio 35 0>; + }; +}; + +/ { + __overrides__ { + uart0 = <&uart0>,"status"; + uart0_clkrate = <&clk_uart0>,"clock-frequency:0"; + uart1_clkrate = <&uart1>,"clock-frequency:0"; + i2s = <&i2s>,"status"; + spi = <&spi0>,"status"; + i2c0 = <&i2c0>,"status"; + i2c1 = <&i2c1>,"status"; + i2c2_iknowwhatimdoing = <&i2c2>,"status"; + i2c0_baudrate = <&i2c0>,"clock-frequency:0"; + i2c1_baudrate = <&i2c1>,"clock-frequency:0"; + i2c2_baudrate = <&i2c2>,"clock-frequency:0"; + core_freq = <&clk_core>,"clock-frequency:0"; + + act_led_gpio = <&act_led>,"gpios:4"; + act_led_activelow = <&act_led>,"gpios:8"; + act_led_trigger = <&act_led>,"linux,default-trigger"; + + pwr_led_gpio = <&pwr_led>,"gpios:4"; + pwr_led_activelow = <&pwr_led>,"gpios:8"; + pwr_led_trigger = <&pwr_led>,"linux,default-trigger"; + + audio = <&audio>,"status"; + watchdog = <&watchdog>,"status"; + random = <&random>,"status"; }; }; --- linux-raspi2-4.2.0.orig/arch/arm/boot/dts/bcm2835-rpi-b.dts +++ linux-raspi2-4.2.0/arch/arm/boot/dts/bcm2835-rpi-b.dts @@ -1,23 +1,118 @@ /dts-v1/; -#include "bcm2835-rpi.dtsi" +#include "bcm2835.dtsi" / { compatible = "raspberrypi,model-b", "brcm,bcm2835"; model = "Raspberry Pi Model B"; - - leds { - act { - gpios = <&gpio 16 1>; - }; - }; }; &gpio { - pinctrl-0 = <&gpioout &alt0 &i2s_alt2 &alt3>; + spi0_pins: spi0_pins { + brcm,pins = <7 8 9 10 11>; + brcm,function = <4>; /* alt0 */ + }; + + i2c0_pins: i2c0 { + brcm,pins = <0 1>; + brcm,function = <4>; + }; - /* I2S interface */ - i2s_alt2: i2s_alt2 { + i2c1_pins: i2c1 { + brcm,pins = <2 3>; + brcm,function = <4>; + }; + + i2s_pins: i2s { brcm,pins = <28 29 30 31>; - brcm,function = ; + brcm,function = <6>; /* alt2 */ + }; +}; + +&mmc { + status = "okay"; + bus-width = <4>; +}; + +&fb { + status = "okay"; +}; + +&uart0 { + status = "okay"; +}; + +&spi0 { + pinctrl-names = "default"; + pinctrl-0 = <&spi0_pins>; + + spidev@0{ + compatible = "spidev"; + reg = <0>; /* CE0 */ + #address-cells = <1>; + #size-cells = <0>; + spi-max-frequency = <500000>; + }; + + spidev@1{ + compatible = "spidev"; + reg = <1>; /* CE1 */ + #address-cells = <1>; + #size-cells = <0>; + spi-max-frequency = <500000>; + }; +}; + +&i2c0 { + pinctrl-names = "default"; + pinctrl-0 = <&i2c0_pins>; + clock-frequency = <100000>; +}; + +&i2c1 { + pinctrl-names = "default"; + pinctrl-0 = <&i2c1_pins>; + clock-frequency = <100000>; +}; + +&i2c2 { + clock-frequency = <100000>; +}; + +&i2s { + #sound-dai-cells = <0>; + pinctrl-names = "default"; + pinctrl-0 = <&i2s_pins>; +}; + +&leds { + act_led: act { + label = "led0"; + linux,default-trigger = "mmc0"; + gpios = <&gpio 16 1>; + }; +}; + +/ { + __overrides__ { + uart0 = <&uart0>,"status"; + uart0_clkrate = <&clk_uart0>,"clock-frequency:0"; + uart1_clkrate = <&uart1>,"clock-frequency:0"; + i2s = <&i2s>,"status"; + spi = <&spi0>,"status"; + i2c0 = <&i2c0>,"status"; + i2c1 = <&i2c1>,"status"; + i2c2_iknowwhatimdoing = <&i2c2>,"status"; + i2c0_baudrate = <&i2c0>,"clock-frequency:0"; + i2c1_baudrate = <&i2c1>,"clock-frequency:0"; + i2c2_baudrate = <&i2c2>,"clock-frequency:0"; + core_freq = <&clk_core>,"clock-frequency:0"; + + act_led_gpio = <&act_led>,"gpios:4"; + act_led_activelow = <&act_led>,"gpios:8"; + act_led_trigger = <&act_led>,"linux,default-trigger"; + + audio = <&audio>,"status"; + watchdog = <&watchdog>,"status"; + random = <&random>,"status"; }; }; --- linux-raspi2-4.2.0.orig/arch/arm/boot/dts/bcm2835-rpi-cm.dts +++ linux-raspi2-4.2.0/arch/arm/boot/dts/bcm2835-rpi-cm.dts @@ -0,0 +1,93 @@ +/dts-v1/; + +#include "bcm2835-rpi-cm.dtsi" + +/ { + model = "Raspberry Pi Compute Module"; +}; + +&uart0 { + status = "okay"; +}; + +&gpio { + spi0_pins: spi0_pins { + brcm,pins = <7 8 9 10 11>; + brcm,function = <4>; /* alt0 */ + }; + + i2c0_pins: i2c0 { + brcm,pins = <0 1>; + brcm,function = <4>; + }; + + i2c1_pins: i2c1 { + brcm,pins = <2 3>; + brcm,function = <4>; + }; + + i2s_pins: i2s { + brcm,pins = <18 19 20 21>; + brcm,function = <4>; /* alt0 */ + }; +}; + +&spi0 { + pinctrl-names = "default"; + pinctrl-0 = <&spi0_pins>; + + spidev@0{ + compatible = "spidev"; + reg = <0>; /* CE0 */ + #address-cells = <1>; + #size-cells = <0>; + spi-max-frequency = <500000>; + }; + + spidev@1{ + compatible = "spidev"; + reg = <1>; /* CE1 */ + #address-cells = <1>; + #size-cells = <0>; + spi-max-frequency = <500000>; + }; +}; + +&i2c0 { + pinctrl-names = "default"; + pinctrl-0 = <&i2c0_pins>; + clock-frequency = <100000>; +}; + +&i2c1 { + pinctrl-names = "default"; + pinctrl-0 = <&i2c1_pins>; + clock-frequency = <100000>; +}; + +&i2c2 { + clock-frequency = <100000>; +}; + +&i2s { + #sound-dai-cells = <0>; + pinctrl-names = "default"; + pinctrl-0 = <&i2s_pins>; +}; + +/ { + __overrides__ { + uart0 = <&uart0>,"status"; + uart0_clkrate = <&clk_uart0>,"clock-frequency:0"; + uart1_clkrate = <&uart1>,"clock-frequency:0"; + i2s = <&i2s>,"status"; + spi = <&spi0>,"status"; + i2c0 = <&i2c0>,"status"; + i2c1 = <&i2c1>,"status"; + i2c2_iknowwhatimdoing = <&i2c2>,"status"; + i2c0_baudrate = <&i2c0>,"clock-frequency:0"; + i2c1_baudrate = <&i2c1>,"clock-frequency:0"; + i2c2_baudrate = <&i2c2>,"clock-frequency:0"; + core_freq = <&clk_core>,"clock-frequency:0"; + }; +}; --- linux-raspi2-4.2.0.orig/arch/arm/boot/dts/bcm2835-rpi-cm.dtsi +++ linux-raspi2-4.2.0/arch/arm/boot/dts/bcm2835-rpi-cm.dtsi @@ -0,0 +1,30 @@ +#include "bcm2835.dtsi" + +&leds { + act_led: act { + label = "led0"; + linux,default-trigger = "mmc0"; + gpios = <&gpio 47 0>; + }; +}; + +&mmc { + status = "okay"; + bus-width = <4>; +}; + +&fb { + status = "okay"; +}; + +/ { + __overrides__ { + act_led_gpio = <&act_led>,"gpios:4"; + act_led_activelow = <&act_led>,"gpios:8"; + act_led_trigger = <&act_led>,"linux,default-trigger"; + + audio = <&audio>,"status"; + watchdog = <&watchdog>,"status"; + random = <&random>,"status"; + }; +}; --- linux-raspi2-4.2.0.orig/arch/arm/boot/dts/bcm2835.dtsi +++ linux-raspi2-4.2.0/arch/arm/boot/dts/bcm2835.dtsi @@ -1,20 +1,15 @@ -#include -#include "skeleton.dtsi" +#include "bcm2708_common.dtsi" / { compatible = "brcm,bcm2835"; model = "BCM2835"; - interrupt-parent = <&intc>; chosen { - bootargs = "earlyprintk console=ttyAMA0"; + bootargs = ""; }; soc { - compatible = "simple-bus"; - #address-cells = <1>; - #size-cells = <1>; - ranges = <0x7e000000 0x20000000 0x02000000>; + ranges = <0x7e000000 0x20000000 0x01000000>; dma-ranges = <0x40000000 0x00000000 0x20000000>; timer@7e003000 { @@ -24,169 +19,21 @@ clock-frequency = <1000000>; }; - dma: dma@7e007000 { - compatible = "brcm,bcm2835-dma"; - reg = <0x7e007000 0xf00>; - interrupts = <1 16>, - <1 17>, - <1 18>, - <1 19>, - <1 20>, - <1 21>, - <1 22>, - <1 23>, - <1 24>, - <1 25>, - <1 26>, - <1 27>, - <1 28>; - - #dma-cells = <1>; - brcm,dma-channel-mask = <0x7f35>; - }; - - intc: interrupt-controller@7e00b200 { - compatible = "brcm,bcm2835-armctrl-ic"; - reg = <0x7e00b200 0x200>; - interrupt-controller; - #interrupt-cells = <2>; - }; - - watchdog@7e100000 { - compatible = "brcm,bcm2835-pm-wdt"; - reg = <0x7e100000 0x28>; - }; - - rng@7e104000 { - compatible = "brcm,bcm2835-rng"; - reg = <0x7e104000 0x10>; - }; - - mailbox: mailbox@7e00b800 { - compatible = "brcm,bcm2835-mbox"; - reg = <0x7e00b880 0x40>; - interrupts = <0 1>; - #mbox-cells = <0>; - }; - - gpio: gpio@7e200000 { - compatible = "brcm,bcm2835-gpio"; - reg = <0x7e200000 0xb4>; - /* - * The GPIO IP block is designed for 3 banks of GPIOs. - * Each bank has a GPIO interrupt for itself. - * There is an overall "any bank" interrupt. - * In order, these are GIC interrupts 17, 18, 19, 20. - * Since the BCM2835 only has 2 banks, the 2nd bank - * interrupt output appears to be mirrored onto the - * 3rd bank's interrupt signal. - * So, a bank0 interrupt shows up on 17, 20, and - * a bank1 interrupt shows up on 18, 19, 20! - */ - interrupts = <2 17>, <2 18>, <2 19>, <2 20>; - - gpio-controller; - #gpio-cells = <2>; - - interrupt-controller; - #interrupt-cells = <2>; - }; - - uart@7e201000 { - compatible = "brcm,bcm2835-pl011", "arm,pl011", "arm,primecell"; - reg = <0x7e201000 0x1000>; - interrupts = <2 25>; - clock-frequency = <3000000>; - arm,primecell-periphid = <0x00241011>; - }; - - i2s: i2s@7e203000 { - compatible = "brcm,bcm2835-i2s"; - reg = <0x7e203000 0x20>, - <0x7e101098 0x02>; - - dmas = <&dma 2>, - <&dma 3>; - dma-names = "tx", "rx"; - status = "disabled"; - }; - - spi: spi@7e204000 { - compatible = "brcm,bcm2835-spi"; - reg = <0x7e204000 0x1000>; - interrupts = <2 22>; - clocks = <&clk_spi>; - #address-cells = <1>; - #size-cells = <0>; - status = "disabled"; - }; - - i2c0: i2c@7e205000 { - compatible = "brcm,bcm2835-i2c"; - reg = <0x7e205000 0x1000>; - interrupts = <2 21>; - clocks = <&clk_i2c>; - #address-cells = <1>; - #size-cells = <0>; - status = "disabled"; - }; - - sdhci: sdhci@7e300000 { - compatible = "brcm,bcm2835-sdhci"; - reg = <0x7e300000 0x100>; - interrupts = <2 30>; - clocks = <&clk_mmc>; - status = "disabled"; - }; - - i2c1: i2c@7e804000 { - compatible = "brcm,bcm2835-i2c"; - reg = <0x7e804000 0x1000>; - interrupts = <2 21>; - clocks = <&clk_i2c>; - #address-cells = <1>; - #size-cells = <0>; - status = "disabled"; - }; - - usb@7e980000 { - compatible = "brcm,bcm2835-usb"; - reg = <0x7e980000 0x10000>; - interrupts = <1 9>; - }; - arm-pmu { compatible = "arm,arm1176-pmu"; }; - }; - clocks { - compatible = "simple-bus"; - #address-cells = <1>; - #size-cells = <0>; - - clk_mmc: clock@0 { - compatible = "fixed-clock"; - reg = <0>; - #clock-cells = <0>; - clock-output-names = "mmc"; - clock-frequency = <100000000>; + aux_enable: aux_enable@0x7e215004 { + compatible = "bcrm,bcm2835-aux-enable"; + reg = <0x7e215004 0x04>; }; + }; +}; - clk_i2c: clock@1 { - compatible = "fixed-clock"; - reg = <1>; - #clock-cells = <0>; - clock-output-names = "i2c"; - clock-frequency = <250000000>; - }; +&intc { + compatible = "brcm,bcm2835-armctrl-ic"; +}; - clk_spi: clock@2 { - compatible = "fixed-clock"; - reg = <2>; - #clock-cells = <0>; - clock-output-names = "spi"; - clock-frequency = <250000000>; - }; - }; +&watchdog { + status = "okay"; }; --- linux-raspi2-4.2.0.orig/arch/arm/boot/dts/berlin2q.dtsi +++ linux-raspi2-4.2.0/arch/arm/boot/dts/berlin2q.dtsi @@ -152,7 +152,7 @@ }; usb_phy2: phy@a2f400 { - compatible = "marvell,berlin2-usb-phy"; + compatible = "marvell,berlin2cd-usb-phy"; reg = <0xa2f400 0x128>; #phy-cells = <0>; resets = <&chip_rst 0x104 14>; @@ -170,7 +170,7 @@ }; usb_phy0: phy@b74000 { - compatible = "marvell,berlin2-usb-phy"; + compatible = "marvell,berlin2cd-usb-phy"; reg = <0xb74000 0x128>; #phy-cells = <0>; resets = <&chip_rst 0x104 12>; @@ -178,7 +178,7 @@ }; usb_phy1: phy@b78000 { - compatible = "marvell,berlin2-usb-phy"; + compatible = "marvell,berlin2cd-usb-phy"; reg = <0xb78000 0x128>; #phy-cells = <0>; resets = <&chip_rst 0x104 13>; --- linux-raspi2-4.2.0.orig/arch/arm/boot/dts/exynos3250-rinato.dts +++ linux-raspi2-4.2.0/arch/arm/boot/dts/exynos3250-rinato.dts @@ -182,7 +182,7 @@ display-timings { timing-0 { - clock-frequency = <0>; + clock-frequency = <4600000>; hactive = <320>; vactive = <320>; hfront-porch = <1>; --- linux-raspi2-4.2.0.orig/arch/arm/boot/dts/exynos5420-peach-pit.dts +++ linux-raspi2-4.2.0/arch/arm/boot/dts/exynos5420-peach-pit.dts @@ -915,6 +915,11 @@ }; }; +&pmu_system_controller { + assigned-clocks = <&pmu_system_controller 0>; + assigned-clock-parents = <&clock CLK_FIN_PLL>; +}; + &rtc { status = "okay"; clocks = <&clock CLK_RTC>, <&max77802 MAX77802_CLK_32K_AP>; --- linux-raspi2-4.2.0.orig/arch/arm/boot/dts/exynos5420.dtsi +++ linux-raspi2-4.2.0/arch/arm/boot/dts/exynos5420.dtsi @@ -1118,7 +1118,7 @@ interrupt-parent = <&combiner>; interrupts = <3 0>; clock-names = "sysmmu", "master"; - clocks = <&clock CLK_SMMU_FIMD1M0>, <&clock CLK_FIMD1>; + clocks = <&clock CLK_SMMU_FIMD1M1>, <&clock CLK_FIMD1>; power-domains = <&disp_pd>; #iommu-cells = <0>; }; --- linux-raspi2-4.2.0.orig/arch/arm/boot/dts/exynos5800-peach-pi.dts +++ linux-raspi2-4.2.0/arch/arm/boot/dts/exynos5800-peach-pi.dts @@ -878,6 +878,11 @@ }; }; +&pmu_system_controller { + assigned-clocks = <&pmu_system_controller 0>; + assigned-clock-parents = <&clock CLK_FIN_PLL>; +}; + &rtc { status = "okay"; clocks = <&clock CLK_RTC>, <&max77802 MAX77802_CLK_32K_AP>; --- linux-raspi2-4.2.0.orig/arch/arm/boot/dts/imx27.dtsi +++ linux-raspi2-4.2.0/arch/arm/boot/dts/imx27.dtsi @@ -477,7 +477,10 @@ compatible = "fsl,imx27-usb"; reg = <0x10024000 0x200>; interrupts = <56>; - clocks = <&clks IMX27_CLK_USB_IPG_GATE>; + clocks = <&clks IMX27_CLK_USB_IPG_GATE>, + <&clks IMX27_CLK_USB_AHB_GATE>, + <&clks IMX27_CLK_USB_DIV>; + clock-names = "ipg", "ahb", "per"; fsl,usbmisc = <&usbmisc 0>; status = "disabled"; }; @@ -486,7 +489,10 @@ compatible = "fsl,imx27-usb"; reg = <0x10024200 0x200>; interrupts = <54>; - clocks = <&clks IMX27_CLK_USB_IPG_GATE>; + clocks = <&clks IMX27_CLK_USB_IPG_GATE>, + <&clks IMX27_CLK_USB_AHB_GATE>, + <&clks IMX27_CLK_USB_DIV>; + clock-names = "ipg", "ahb", "per"; fsl,usbmisc = <&usbmisc 1>; dr_mode = "host"; status = "disabled"; @@ -496,7 +502,10 @@ compatible = "fsl,imx27-usb"; reg = <0x10024400 0x200>; interrupts = <55>; - clocks = <&clks IMX27_CLK_USB_IPG_GATE>; + clocks = <&clks IMX27_CLK_USB_IPG_GATE>, + <&clks IMX27_CLK_USB_AHB_GATE>, + <&clks IMX27_CLK_USB_DIV>; + clock-names = "ipg", "ahb", "per"; fsl,usbmisc = <&usbmisc 2>; dr_mode = "host"; status = "disabled"; @@ -506,7 +515,6 @@ #index-cells = <1>; compatible = "fsl,imx27-usbmisc"; reg = <0x10024600 0x200>; - clocks = <&clks IMX27_CLK_USB_AHB_GATE>; }; sahara2: sahara@10025000 { --- linux-raspi2-4.2.0.orig/arch/arm/boot/dts/imx6qdl-rex.dtsi +++ linux-raspi2-4.2.0/arch/arm/boot/dts/imx6qdl-rex.dtsi @@ -35,7 +35,6 @@ compatible = "regulator-fixed"; reg = <1>; pinctrl-names = "default"; - pinctrl-0 = <&pinctrl_usbh1>; regulator-name = "usbh1_vbus"; regulator-min-microvolt = <5000000>; regulator-max-microvolt = <5000000>; @@ -47,7 +46,6 @@ compatible = "regulator-fixed"; reg = <2>; pinctrl-names = "default"; - pinctrl-0 = <&pinctrl_usbotg>; regulator-name = "usb_otg_vbus"; regulator-min-microvolt = <5000000>; regulator-max-microvolt = <5000000>; --- linux-raspi2-4.2.0.orig/arch/arm/boot/dts/imx7d.dtsi +++ linux-raspi2-4.2.0/arch/arm/boot/dts/imx7d.dtsi @@ -340,10 +340,10 @@ status = "disabled"; }; - uart2: serial@30870000 { + uart2: serial@30890000 { compatible = "fsl,imx7d-uart", "fsl,imx6q-uart"; - reg = <0x30870000 0x10000>; + reg = <0x30890000 0x10000>; interrupts = ; clocks = <&clks IMX7D_UART2_ROOT_CLK>, <&clks IMX7D_UART2_ROOT_CLK>; --- linux-raspi2-4.2.0.orig/arch/arm/boot/dts/omap3-beagle.dts +++ linux-raspi2-4.2.0/arch/arm/boot/dts/omap3-beagle.dts @@ -202,7 +202,7 @@ tfp410_pins: pinmux_tfp410_pins { pinctrl-single,pins = < - 0x194 (PIN_OUTPUT | MUX_MODE4) /* hdq_sio.gpio_170 */ + 0x196 (PIN_OUTPUT | MUX_MODE4) /* hdq_sio.gpio_170 */ >; }; --- linux-raspi2-4.2.0.orig/arch/arm/boot/dts/omap5-uevm.dts +++ linux-raspi2-4.2.0/arch/arm/boot/dts/omap5-uevm.dts @@ -31,6 +31,24 @@ regulator-max-microvolt = <3000000>; }; + mmc3_pwrseq: sdhci0_pwrseq { + compatible = "mmc-pwrseq-simple"; + clocks = <&clk32kgaudio>; + clock-names = "ext_clock"; + }; + + vmmcsdio_fixed: fixedregulator-mmcsdio { + compatible = "regulator-fixed"; + regulator-name = "vmmcsdio_fixed"; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <1800000>; + gpio = <&gpio5 12 GPIO_ACTIVE_HIGH>; /* gpio140 WLAN_EN */ + enable-active-high; + startup-delay-us = <70000>; + pinctrl-names = "default"; + pinctrl-0 = <&wlan_pins>; + }; + /* HS USB Host PHY on PORT 2 */ hsusb2_phy: hsusb2_phy { compatible = "usb-nop-xceiv"; @@ -174,8 +192,8 @@ i2c5_pins: pinmux_i2c5_pins { pinctrl-single,pins = < - 0x184 (PIN_INPUT | MUX_MODE0) /* i2c5_scl */ - 0x186 (PIN_INPUT | MUX_MODE0) /* i2c5_sda */ + 0x186 (PIN_INPUT | MUX_MODE0) /* i2c5_scl */ + 0x188 (PIN_INPUT | MUX_MODE0) /* i2c5_sda */ >; }; @@ -197,12 +215,20 @@ >; }; - mcspi4_pins: pinmux_mcspi4_pins { + mmc3_pins: pinmux_mmc3_pins { + pinctrl-single,pins = < + OMAP5_IOPAD(0x01a4, PIN_INPUT_PULLUP | MUX_MODE0) /* wlsdio_clk */ + OMAP5_IOPAD(0x01a6, PIN_INPUT_PULLUP | MUX_MODE0) /* wlsdio_cmd */ + OMAP5_IOPAD(0x01a8, PIN_INPUT_PULLUP | MUX_MODE0) /* wlsdio_data0 */ + OMAP5_IOPAD(0x01aa, PIN_INPUT_PULLUP | MUX_MODE0) /* wlsdio_data1 */ + OMAP5_IOPAD(0x01ac, PIN_INPUT_PULLUP | MUX_MODE0) /* wlsdio_data2 */ + OMAP5_IOPAD(0x01ae, PIN_INPUT_PULLUP | MUX_MODE0) /* wlsdio_data3 */ + >; + }; + + wlan_pins: pinmux_wlan_pins { pinctrl-single,pins = < - 0x164 (PIN_INPUT | MUX_MODE1) /* mcspi4_clk */ - 0x168 (PIN_INPUT | MUX_MODE1) /* mcspi4_simo */ - 0x16a (PIN_INPUT | MUX_MODE1) /* mcspi4_somi */ - 0x16c (PIN_INPUT | MUX_MODE1) /* mcspi4_cs0 */ + OMAP5_IOPAD(0x1bc, PIN_OUTPUT | MUX_MODE6) /* mcspi1_clk.gpio5_140 */ >; }; @@ -276,6 +302,12 @@ 0x1A (PIN_OUTPUT | MUX_MODE0) /* fref_clk1_out, USB hub clk */ >; }; + + wlcore_irq_pin: pinmux_wlcore_irq_pin { + pinctrl-single,pins = < + OMAP5_IOPAD(0x040, WAKEUP_EN | PIN_INPUT_PULLUP | MUX_MODE6) /* llia_wakereqin.gpio1_wk14 */ + >; + }; }; &mmc1 { @@ -290,8 +322,25 @@ }; &mmc3 { + vmmc-supply = <&vmmcsdio_fixed>; + mmc-pwrseq = <&mmc3_pwrseq>; bus-width = <4>; - ti,non-removable; + non-removable; + cap-power-off-card; + pinctrl-names = "default"; + pinctrl-0 = <&mmc3_pins &wlcore_irq_pin>; + interrupts-extended = <&gic GIC_SPI 94 IRQ_TYPE_LEVEL_HIGH + &omap5_pmx_core 0x168>; + + #address-cells = <1>; + #size-cells = <0>; + wlcore: wlcore@2 { + compatible = "ti,wl1271"; + reg = <2>; + interrupt-parent = <&gpio1>; + interrupts = <14 IRQ_TYPE_LEVEL_HIGH>; /* gpio 14 */ + ref-clock-frequency = <26000000>; + }; }; &mmc4 { @@ -591,11 +640,6 @@ pinctrl-0 = <&mcspi3_pins>; }; -&mcspi4 { - pinctrl-names = "default"; - pinctrl-0 = <&mcspi4_pins>; -}; - &uart1 { pinctrl-names = "default"; pinctrl-0 = <&uart1_pins>; --- linux-raspi2-4.2.0.orig/arch/arm/boot/dts/overlays/Makefile +++ linux-raspi2-4.2.0/arch/arm/boot/dts/overlays/Makefile @@ -0,0 +1,72 @@ +ifeq ($(CONFIG_OF),y) + +# Overlays for the Raspberry Pi platform + +ifeq ($(CONFIG_BCM2708_DT),y) + RPI_DT_OVERLAYS=y +endif +ifeq ($(CONFIG_BCM2709_DT),y) + RPI_DT_OVERLAYS=y +endif +ifeq ($(CONFIG_ARCH_BCM2835),y) + RPI_DT_OVERLAYS=y +endif + +dtb-$(RPI_DT_OVERLAYS) += ads7846-overlay.dtb +dtb-$(RPI_DT_OVERLAYS) += at86rf233-overlay.dtb +dtb-$(RPI_DT_OVERLAYS) += bmp085_i2c-sensor-overlay.dtb +dtb-$(RPI_DT_OVERLAYS) += dht11-overlay.dtb +dtb-$(RPI_DT_OVERLAYS) += enc28j60-overlay.dtb +dtb-$(RPI_DT_OVERLAYS) += gpio-poweroff-overlay.dtb +dtb-$(RPI_DT_OVERLAYS) += hifiberry-amp-overlay.dtb +dtb-$(RPI_DT_OVERLAYS) += hifiberry-dac-overlay.dtb +dtb-$(RPI_DT_OVERLAYS) += hifiberry-dacplus-overlay.dtb +dtb-$(RPI_DT_OVERLAYS) += hifiberry-digi-overlay.dtb +dtb-$(RPI_DT_OVERLAYS) += hy28a-overlay.dtb +dtb-$(RPI_DT_OVERLAYS) += hy28b-overlay.dtb +dtb-$(RPI_DT_OVERLAYS) += i2c-rtc-overlay.dtb +dtb-$(RPI_DT_OVERLAYS) += i2s-mmap-overlay.dtb +dtb-$(RPI_DT_OVERLAYS) += iqaudio-dac-overlay.dtb +dtb-$(RPI_DT_OVERLAYS) += iqaudio-dacplus-overlay.dtb +dtb-$(RPI_DT_OVERLAYS) += lirc-rpi-overlay.dtb +dtb-$(RPI_DT_OVERLAYS) += mcp2515-can0-overlay.dtb +dtb-$(RPI_DT_OVERLAYS) += mcp2515-can1-overlay.dtb +dtb-$(RPI_DT_OVERLAYS) += mmc-overlay.dtb +dtb-$(RPI_DT_OVERLAYS) += mz61581-overlay.dtb +dtb-$(RPI_DT_OVERLAYS) += piscreen-overlay.dtb +dtb-$(RPI_DT_OVERLAYS) += pitft28-resistive-overlay.dtb +dtb-$(RPI_DT_OVERLAYS) += pps-gpio-overlay.dtb +dtb-$(RPI_DT_OVERLAYS) += pwm-overlay.dtb +dtb-$(RPI_DT_OVERLAYS) += pwm-2chan-overlay.dtb +dtb-$(RPI_DT_OVERLAYS) += raspidac3-overlay.dtb +dtb-$(RPI_DT_OVERLAYS) += rpi-dac-overlay.dtb +dtb-$(RPI_DT_OVERLAYS) += rpi-display-overlay.dtb +dtb-$(RPI_DT_OVERLAYS) += rpi-ft5406-overlay.dtb +dtb-$(RPI_DT_OVERLAYS) += rpi-proto-overlay.dtb +dtb-$(RPI_DT_OVERLAYS) += rpi-sense-overlay.dtb +dtb-$(RPI_DT_OVERLAYS) += sdhost-overlay.dtb +dtb-$(RPI_DT_OVERLAYS) += sdio-overlay.dtb +dtb-$(RPI_DT_OVERLAYS) += smi-dev-overlay.dtb +dtb-$(RPI_DT_OVERLAYS) += smi-nand-overlay.dtb +dtb-$(RPI_DT_OVERLAYS) += smi-overlay.dtb +dtb-$(RPI_DT_OVERLAYS) += spi-bcm2708-overlay.dtb +dtb-$(RPI_DT_OVERLAYS) += spi-bcm2835-overlay.dtb +dtb-$(RPI_DT_OVERLAYS) += spi-gpio35-39-overlay.dtb +dtb-$(RPI_DT_OVERLAYS) += tinylcd35-overlay.dtb +dtb-$(RPI_DT_OVERLAYS) += uart1-overlay.dtb +dtb-$(RPI_DT_OVERLAYS) += vga666-overlay.dtb +dtb-$(RPI_DT_OVERLAYS) += w1-gpio-overlay.dtb +dtb-$(RPI_DT_OVERLAYS) += w1-gpio-pullup-overlay.dtb + +targets += dtbs dtbs_install +targets += $(dtb-y) + +endif + +always := $(dtb-y) +clean-files := *.dtb + +# Enable fixups to support overlays on BCM2708 platforms +ifeq ($(RPI_DT_OVERLAYS),y) + DTC_FLAGS ?= -@ +endif --- linux-raspi2-4.2.0.orig/arch/arm/boot/dts/overlays/README +++ linux-raspi2-4.2.0/arch/arm/boot/dts/overlays/README @@ -0,0 +1,671 @@ +Introduction +============ + +This directory contains Device Tree overlays. Device Tree makes it possible +to support many hardware configurations with a single kernel and without the +need to explicitly load or blacklist kernel modules. Note that this isn't a +"pure" Device Tree configuration (c.f. MACH_BCM2835) - some on-board devices +are still configured by the board support code, but the intention is to +eventually reach that goal. + +On Raspberry Pi, Device Tree usage is controlled from /boot/config.txt. By +default, the Raspberry Pi kernel boots with device tree enabled. You can +completely disable DT usage (for now) by adding: + + device_tree= + +to your config.txt, which should cause your Pi to revert to the old way of +doing things after a reboot. + +In /boot you will find a .dtb for each base platform. This describes the +hardware that is part of the Raspberry Pi board. The loader (start.elf and its +siblings) selects the .dtb file appropriate for the platform by name, and reads +it into memory. At this point, all of the optional interfaces (i2c, i2s, spi) +are disabled, but they can be enabled using Device Tree parameters: + + dtparam=i2c=on,i2s=on,spi=on + +However, this shouldn't be necessary in many use cases because loading an +overlay that requires one of those interfaces will cause it to be enabled +automatically, and it is advisable to only enable interfaces if they are +needed. + +Configuring additional, optional hardware is done using Device Tree overlays +(see below). + +raspi-config +============ + +The Advanced Options section of the raspi-config utility can enable and disable +Device Tree use, as well as toggling the I2C and SPI interfaces. Note that it +is possible to both enable an interface and blacklist the driver, if for some +reason you should want to defer the loading. + +Modules +======= + +As well as describing the hardware, Device Tree also gives enough information +to allow suitable driver modules to be located and loaded, with the corollary +that unneeded modules are not loaded. As a result it should be possible to +remove lines from /etc/modules, and /etc/modprobe.d/raspi-blacklist.conf can +have its contents deleted (or commented out). + +Using Overlays +============== + +Overlays are loaded using the "dtoverlay" directive. As an example, consider the +popular lirc-rpi module, the Linux Infrared Remote Control driver. In the +pre-DT world this would be loaded from /etc/modules, with an explicit +"modprobe lirc-rpi" command, or programmatically by lircd. With DT enabled, +this becomes a line in config.txt: + + dtoverlay=lirc-rpi + +This causes the file /boot/overlays/lirc-rpi-overlay.dtb to be loaded. By +default it will use GPIOs 17 (out) and 18 (in), but this can be modified using +DT parameters: + + dtoverlay=lirc-rpi,gpio_out_pin=17,gpio_in_pin=13 + +Parameters always have default values, although in some cases (e.g. "w1-gpio") +it is necessary to provided multiple overlays in order to get the desired +behaviour. See the list of overlays below for a description of the parameters +and their defaults. + +The Overlay and Parameter Reference +=================================== + +N.B. When editing this file, please preserve the indentation levels to make it +simple to parse programmatically. NO HARD TABS. + + +Name: +Info: Configures the base Raspberry Pi hardware +Load: +Params: + audio Set to "on" to enable the onboard ALSA audio + interface (default "off") + + i2c_arm Set to "on" to enable the ARM's i2c interface + (default "off") + + i2c_vc Set to "on" to enable the i2c interface + usually reserved for the VideoCore processor + (default "off") + + i2c An alias for i2c_arm + + i2c_arm_baudrate Set the baudrate of the ARM's i2c interface + (default "100000") + + i2c_vc_baudrate Set the baudrate of the VideoCore i2c interface + (default "100000") + + i2c_baudrate An alias for i2c_arm_baudrate + + i2s Set to "on" to enable the i2s interface + (default "off") + + spi Set to "on" to enable the spi interfaces + (default "off") + + random Set to "on" to enable the hardware random + number generator (default "off") + + uart0 Set to "off" to disable uart0 (default "on") + + watchdog Set to "on" to enable the hardware watchdog + (default "off") + + act_led_trigger Choose which activity the LED tracks. + Use "heartbeat" for a nice load indicator. + (default "mmc") + + act_led_activelow Set to "on" to invert the sense of the LED + (default "off") + + act_led_gpio Set which GPIO to use for the activity LED + (in case you want to connect it to an external + device) + (default "16" on a non-Plus board, "47" on a + Plus or Pi 2) + + pwr_led_trigger + pwr_led_activelow + pwr_led_gpio + As for act_led_*, but using the PWR LED. + Not available on Model A/B boards. + + N.B. It is recommended to only enable those interfaces that are needed. + Leaving all interfaces enabled can lead to unwanted behaviour (i2c_vc + interfering with Pi Camera, I2S and SPI hogging GPIO pins, etc.) + Note also that i2c, i2c_arm and i2c_vc are aliases for the physical + interfaces i2c0 and i2c1. Use of the numeric variants is still possible + but deprecated because the ARM/VC assignments differ between board + revisions. The same board-specific mapping applies to i2c_baudrate, + and the other i2c baudrate parameters. + + +Name: ads7846 +Info: ADS7846 Touch controller +Load: dtoverlay=ads7846,= +Params: cs SPI bus Chip Select (default 1) + speed SPI bus speed (default 2MHz, max 3.25MHz) + penirq GPIO used for PENIRQ. REQUIRED + penirq_pull Set GPIO pull (default 0=none, 2=pullup) + swapxy Swap x and y axis + xmin Minimum value on the X axis (default 0) + ymin Minimum value on the Y axis (default 0) + xmax Maximum value on the X axis (default 4095) + ymax Maximum value on the Y axis (default 4095) + pmin Minimum reported pressure value (default 0) + pmax Maximum reported pressure value (default 65535) + xohms Touchpanel sensitivity (X-plate resistance) + (default 400) + + penirq is required and usually xohms (60-100) has to be set as well. + Apart from that, pmax (255) and swapxy are also common. + The rest of the calibration can be done with xinput-calibrator. + See: github.com/notro/fbtft/wiki/FBTFT-on-Raspian + Device Tree binding document: + www.kernel.org/doc/Documentation/devicetree/bindings/input/ads7846.txt + + +Name: at86rf233 +Info: Configures the Atmel AT86RF233 802.15.4 low-power WPAN transceiver, + connected to spi0.0 +Load: dtoverlay=at86rf233,= +Params: interrupt GPIO used for INT (default 23) + reset GPIO used for Reset (default 24) + sleep GPIO used for Sleep (default 25) + speed SPI bus speed in Hz (default 6000000) + trim Fine tuning of the internal capacitance + arrays (0=+0pF, 15=+4.5pF, default 15) + + +Name: bmp085_i2c-sensor +Info: Configures the BMP085/BMP180 digital barometric pressure and temperature + sensors from Bosch Sensortec +Load: dtoverlay=bmp085_i2c-sensor +Params: + + +Name: dht11 +Info: Overlay for the DHT11/DHT21/DHT22 humidity/temperature sensors + Also sometimes found with the part number(s) AM230x. +Load: dtoverlay=dht11,= +Params: gpiopin GPIO connected to the sensor's DATA output. + (default 4) + + +[ The ds1307-rtc overlay has been deleted. See i2c-rtc. ] + + +Name: enc28j60 +Info: Overlay for the Microchip ENC28J60 Ethernet Controller (SPI) +Load: dtoverlay=enc28j60,= +Params: int_pin GPIO used for INT (default 25) + + speed SPI bus speed (default 12000000) + + +Name: gpio-poweroff +Info: Drives a GPIO high or low on reboot +Load: gpio-poweroff,= +Params: gpiopin GPIO for signalling (default 26) + + active_low Set if the power control device requires a + high->low transition to trigger a power-down. + Note that this will require the support of a + custom dt-blob.bin to prevent a power-down + during the boot process, and that a reboot + will also cause the pin to go low. + + +Name: hifiberry-amp +Info: Configures the HifiBerry Amp and Amp+ audio cards +Load: dtoverlay=hifiberry-amp +Params: + + +Name: hifiberry-dac +Info: Configures the HifiBerry DAC audio card +Load: dtoverlay=hifiberry-dac +Params: + + +Name: hifiberry-dacplus +Info: Configures the HifiBerry DAC+ audio card +Load: dtoverlay=hifiberry-dacplus +Params: + + +Name: hifiberry-digi +Info: Configures the HifiBerry Digi audio card +Load: dtoverlay=hifiberry-digi +Params: + + +Name: hy28a +Info: HY28A - 2.8" TFT LCD Display Module by HAOYU Electronics + Default values match Texy's display shield +Load: dtoverlay=hy28a,= +Params: speed Display SPI bus speed + + rotate Display rotation {0,90,180,270} + + fps Delay between frame updates + + debug Debug output level {0-7} + + xohms Touchpanel sensitivity (X-plate resistance) + + resetgpio GPIO used to reset controller + + ledgpio GPIO used to control backlight + + +Name: hy28b +Info: HY28B - 2.8" TFT LCD Display Module by HAOYU Electronics + Default values match Texy's display shield +Load: dtoverlay=hy28b,= +Params: speed Display SPI bus speed + + rotate Display rotation {0,90,180,270} + + fps Delay between frame updates + + debug Debug output level {0-7} + + xohms Touchpanel sensitivity (X-plate resistance) + + resetgpio GPIO used to reset controller + + ledgpio GPIO used to control backlight + + +Name: i2c-rtc +Info: Adds support for a number of I2C Real Time Clock devices +Load: dtoverlay=i2c-rtc, +Params: ds1307 Select the DS1307 device + + ds3231 Select the DS3231 device + + mcp7941x Select the MCP7941x device + + pcf2127 Select the PCF2127 device + + pcf8523 Select the PCF8523 device + + pcf8563 Select the PCF8563 device + + +Name: i2s-mmap +Info: Enables mmap support in the bcm2708-i2s driver +Load: dtoverlay=i2s-mmap +Params: + + +Name: iqaudio-dac +Info: Configures the IQaudio DAC audio card +Load: dtoverlay=iqaudio-dac +Params: + + +Name: iqaudio-dacplus +Info: Configures the IQaudio DAC+ audio card +Load: dtoverlay=iqaudio-dacplus +Params: + + +Name: lirc-rpi +Info: Configures lirc-rpi (Linux Infrared Remote Control for Raspberry Pi) + Consult the module documentation for more details. +Load: dtoverlay=lirc-rpi,=,... +Params: gpio_out_pin GPIO for output (default "17") + + gpio_in_pin GPIO for input (default "18") + + gpio_in_pull Pull up/down/off on the input pin + (default "down") + + sense Override the IR receive auto-detection logic: + "0" = force active-high + "1" = force active-low + "-1" = use auto-detection + (default "-1") + + softcarrier Turn the software carrier "on" or "off" + (default "on") + + invert "on" = invert the output pin (default "off") + + debug "on" = enable additional debug messages + (default "off") + + +Name: mcp2515-can0 +Info: Configures the MCP2515 CAN controller on spi0.0 +Load: dtoverlay=mcp2515-can0,= +Params: oscillator Clock frequency for the CAN controller (Hz) + + spimaxfrequency Maximum SPI frequence (Hz) + + interrupt GPIO for interrupt signal + + +Name: mcp2515-can1 +Info: Configures the MCP2515 CAN controller on spi0.1 +Load: dtoverlay=mcp2515-can1,= +Params: oscillator Clock frequency for the CAN controller (Hz) + + spimaxfrequency Maximum SPI frequence (Hz) + + interrupt GPIO for interrupt signal + + +Name: mmc +Info: Selects the bcm2835-mmc SD/MMC driver, optionally with overclock +Load: dtoverlay=mmc,= +Params: overclock_50 Clock (in MHz) to use when the MMC framework + requests 50MHz + force_pio Disable DMA support + + +Name: mz61581 +Info: MZ61581 display by Tontec +Load: dtoverlay=mz61581,= +Params: speed Display SPI bus speed + + rotate Display rotation {0,90,180,270} + + fps Delay between frame updates + + txbuflen Transmit buffer length (default 32768) + + debug Debug output level {0-7} + + xohms Touchpanel sensitivity (X-plate resistance) + + +[ The pcf2127-rtc overlay has been deleted. See i2c-rtc. ] + + +[ The pcf8523-rtc overlay has been deleted. See i2c-rtc. ] + + +[ The pcf8563-rtc overlay has been deleted. See i2c-rtc. ] + + +Name: piscreen +Info: PiScreen display by OzzMaker.com +Load: dtoverlay=piscreen,= +Params: speed Display SPI bus speed + + rotate Display rotation {0,90,180,270} + + fps Delay between frame updates + + debug Debug output level {0-7} + + xohms Touchpanel sensitivity (X-plate resistance) + + +Name: pitft28-resistive +Info: Adafruit PiTFT 2.8" resistive touch screen +Load: dtoverlay=pitft28-resistive,= +Params: speed Display SPI bus speed + + rotate Display rotation {0,90,180,270} + + fps Delay between frame updates + + debug Debug output level {0-7} + + +Name: pps-gpio +Info: Configures the pps-gpio (pulse-per-second time signal via GPIO). +Load: dtoverlay=pps-gpio,= +Params: gpiopin Input GPIO (default "18") + + +Name: pwm +Info: Configures a single PWM channel + Legal pin,function combinations for each channel: + PWM0: 12,4(Alt0) 18,2(Alt5) 40,4(Alt0) 52,5(Alt1) + PWM1: 13,4(Alt0) 19,2(Alt5) 41,4(Alt0) 45,4(Alt0) 53,5(Alt1) + N.B.: + 1) Pin 18 is the only one available on all platforms, and + it is the one used by the I2S audio interface. + Pins 12 and 13 might be better choices on an A+, B+ or Pi2. + 2) The onboard analogue audio output uses both PWM channels. + 3) So be careful mixing audio and PWM. + 4) Currently the clock must have been enabled and configured + by other means. +Load: dtoverlay=pwm-2chan,= +Load: dtoverlay=pwm,= +Params: pin Output pin (default 18) - see table + func Pin function (default 2 = Alt5) - see above + clock PWM clock frequency (informational) + + +Name: pwm-2chan +Info: Configures both PWM channels + Legal pin,function combinations for each channel: + PWM0: 12,4(Alt0) 18,2(Alt5) 40,4(Alt0) 52,5(Alt1) + PWM1: 13,4(Alt0) 19,2(Alt5) 41,4(Alt0) 45,4(Alt0) 53,5(Alt1) + N.B.: + 1) Pin 18 is the only one available on all platforms, and + it is the one used by the I2S audio interface. + Pins 12 and 13 might be better choices on an A+, B+ or Pi2. + 2) The onboard analogue audio output uses both PWM channels. + 3) So be careful mixing audio and PWM. + 4) Currently the clock must have been enabled and configured + by other means. +Load: dtoverlay=pwm-2chan,= +Params: pin Output pin (default 18) - see table + pin2 Output pin for other channel (default 19) + func Pin function (default 2 = Alt5) - see above + func2 Function for pin2 (default 2 = Alt5) + clock PWM clock frequency (informational) + + +Name: raspidac3 +Info: Configures the RaspiDAV Rev.3x audio card +Load: dtoverlay=raspidac3 +Params: + + +Name: rpi-dac +Info: Configures the RPi DAC audio card +Load: dtoverlay=rpi-dac +Params: + + +Name: rpi-display +Info: RPi-Display - 2.8" Touch Display by Watterott +Load: dtoverlay=rpi-display,= +Params: speed Display SPI bus speed + + rotate Display rotation {0,90,180,270} + + fps Delay between frame updates + + debug Debug output level {0-7} + + xohms Touchpanel sensitivity (X-plate resistance) + + +Name: rpi-ft5406 +Info: Official Raspberry Pi display touchscreen +Load: dtoverlay=rpi-ft5406 +Params: + + +Name: rpi-proto +Info: Configures the RPi Proto audio card +Load: dtoverlay=rpi-proto +Params: + + +Name: rpi-sense +Info: Raspberry Pi Sense HAT +Load: dtoverlay=rpi-sense +Params: + + +Name: sdhost +Info: Selects the bcm2835-sdhost SD/MMC driver, optionally with overclock +Load: dtoverlay=sdhost,= +Params: overclock_50 Clock (in MHz) to use when the MMC framework + requests 50MHz + + force_pio Disable DMA support (default off) + + pio_limit Number of blocks above which to use DMA + (default 1) + + debug Enable debug output (default off) + + +Name: sdio +Info: Selects the bcm2835-sdhost SD/MMC driver, optionally with overclock, + and enables SDIO via GPIOs 22-27. +Load: dtoverlay=sdio,= +Params: overclock_50 Clock (in MHz) to use when the MMC framework + requests 50MHz + + force_pio Disable DMA support (default off) + + pio_limit Number of blocks above which to use DMA + (default 1) + + debug Enable debug output (default off) + + +Name: smi +Info: Enables the Secondary Memory Interface peripheral. Uses GPIOs 2-25! +Load: dtoverlay=smi +Params: + + +Name: smi-dev +Info: Enables the userspace interface for the SMI driver +Load: dtoverlay=smi-dev +Params: + + +Name: smi-nand +Info: Enables access to NAND flash via the SMI interface +Load: dtoverlay=smi-nand +Params: + + +Name: spi-bcm2708 +Info: Selects the bcm2708-spi SPI driver +Load: dtoverlay=spi-bcm2708 +Params: + + +Name: spi-bcm2835 +Info: Selects the bcm2835-spi SPI driver +Load: dtoverlay=spi-bcm2835 +Params: + + +Name: spi-gpio35-39 +Info: move SPI function block to GPIO 35 to 39 +Load: dtoverlay=spi-gpio35-39 +Params: + + +Name: tinylcd35 +Info: 3.5" Color TFT Display by www.tinylcd.com + Options: Touch, RTC, keypad +Load: dtoverlay=tinylcd35,= +Params: speed Display SPI bus speed + + rotate Display rotation {0,90,180,270} + + fps Delay between frame updates + + debug Debug output level {0-7} + + touch Enable touch panel + + touchgpio Touch controller IRQ GPIO + + xohms Touchpanel: Resistance of X-plate in ohms + + rtc-pcf PCF8563 Real Time Clock + + rtc-ds DS1307 Real Time Clock + + keypad Enable keypad + + Examples: + Display with touchpanel, PCF8563 RTC and keypad: + dtoverlay=tinylcd35,touch,rtc-pcf,keypad + Old touch display: + dtoverlay=tinylcd35,touch,touchgpio=3 + + +Name: uart1 +Info: Enable uart1 in place of uart0 +Load: dtoverlay=uart1,= +Params: txd1_pin GPIO pin for TXD1 (14, 32 or 40 - default 14) + + rxd1_pin GPIO pin for RXD1 (15, 33 or 41 - default 15) + + +Name: vga666 +Info: Overlay for the Fen Logic VGA666 board + This uses GPIOs 2-21 (so no I2C), and activates the output 2-3 seconds + after the kernel has started. +Load: dtoverlay=vga666 +Params: + + +Name: w1-gpio +Info: Configures the w1-gpio Onewire interface module. + Use this overlay if you *don't* need a GPIO to drive an external pullup. +Load: dtoverlay=w1-gpio,= +Params: gpiopin GPIO for I/O (default "4") + + pullup Non-zero, "on", or "y" to enable the parasitic + power (2-wire, power-on-data) feature + + +Name: w1-gpio-pullup +Info: Configures the w1-gpio Onewire interface module. + Use this overlay if you *do* need a GPIO to drive an external pullup. +Load: dtoverlay=w1-gpio-pullup,=,... +Params: gpiopin GPIO for I/O (default "4") + + pullup Non-zero, "on", or "y" to enable the parasitic + power (2-wire, power-on-data) feature + + extpullup GPIO for external pullup (default "5") + + +Troubleshooting +=============== + +If you are experiencing problems that you think are DT-related, enable DT +diagnostic output by adding this to /boot/config.txt: + + dtdebug=on + +and rebooting. Then run: + + sudo vcdbg log msg + +and look for relevant messages. + +Further reading +=============== + +This is only meant to be a quick introduction to the subject of Device Tree on +Raspberry Pi. There is a more complete explanation here: + +http://www.raspberrypi.org/documentation/configuration/device-tree.md --- linux-raspi2-4.2.0.orig/arch/arm/boot/dts/overlays/ads7846-overlay.dts +++ linux-raspi2-4.2.0/arch/arm/boot/dts/overlays/ads7846-overlay.dts @@ -0,0 +1,83 @@ +/* + * Generic Device Tree overlay for the ADS7846 touch controller + * + */ + +/dts-v1/; +/plugin/; + +/ { + compatible = "brcm,bcm2835", "brcm,bcm2708", "brcm,bcm2709"; + + fragment@0 { + target = <&spi0>; + __overlay__ { + status = "okay"; + + spidev@0{ + status = "disabled"; + }; + + spidev@1{ + status = "disabled"; + }; + }; + }; + + fragment@1 { + target = <&gpio>; + __overlay__ { + ads7846_pins: ads7846_pins { + brcm,pins = <255>; /* illegal default value */ + brcm,function = <0>; /* in */ + brcm,pull = <0>; /* none */ + }; + }; + }; + + fragment@2 { + target = <&spi0>; + __overlay__ { + /* needed to avoid dtc warning */ + #address-cells = <1>; + #size-cells = <0>; + + ads7846: ads7846@1 { + compatible = "ti,ads7846"; + reg = <1>; + pinctrl-names = "default"; + pinctrl-0 = <&ads7846_pins>; + + spi-max-frequency = <2000000>; + interrupts = <255 2>; /* high-to-low edge triggered */ + interrupt-parent = <&gpio>; + pendown-gpio = <&gpio 255 0>; + + /* driver defaults */ + ti,x-min = /bits/ 16 <0>; + ti,y-min = /bits/ 16 <0>; + ti,x-max = /bits/ 16 <0x0FFF>; + ti,y-max = /bits/ 16 <0x0FFF>; + ti,pressure-min = /bits/ 16 <0>; + ti,pressure-max = /bits/ 16 <0xFFFF>; + ti,x-plate-ohms = /bits/ 16 <400>; + }; + }; + }; + __overrides__ { + cs = <&ads7846>,"reg:0"; + speed = <&ads7846>,"spi-max-frequency:0"; + penirq = <&ads7846_pins>,"brcm,pins:0", /* REQUIRED */ + <&ads7846>,"interrupts:0", + <&ads7846>,"pendown-gpio:4"; + penirq_pull = <&ads7846_pins>,"brcm,pull:0"; + swapxy = <&ads7846>,"ti,swap-xy?"; + xmin = <&ads7846>,"ti,x-min;0"; + ymin = <&ads7846>,"ti,y-min;0"; + xmax = <&ads7846>,"ti,x-max;0"; + ymax = <&ads7846>,"ti,y-max;0"; + pmin = <&ads7846>,"ti,pressure-min;0"; + pmax = <&ads7846>,"ti,pressure-max;0"; + xohms = <&ads7846>,"ti,x-plate-ohms;0"; + }; +}; --- linux-raspi2-4.2.0.orig/arch/arm/boot/dts/overlays/at86rf233-overlay.dts +++ linux-raspi2-4.2.0/arch/arm/boot/dts/overlays/at86rf233-overlay.dts @@ -0,0 +1,54 @@ +/dts-v1/; +/plugin/; + +/* Overlay for Atmel AT86RF233 IEEE 802.15.4 WPAN transceiver on spi0.0 */ + +/ { + compatible = "brcm,bcm2835", "brcm,bcm2836", "brcm,bcm2708", "brcm,bcm2709"; + + fragment@0 { + target = <&spi0>; + __overlay__ { + #address-cells = <1>; + #size-cells = <0>; + + status = "okay"; + + spidev@0{ + status = "disabled"; + }; + + lowpan0: at86rf233@0 { + compatible = "atmel,at86rf233"; + reg = <0>; + interrupt-parent = <&gpio>; + interrupts = <23 4>; /* active high */ + reset-gpio = <&gpio 24 1>; + sleep-gpio = <&gpio 25 1>; + spi-max-frequency = <6000000>; + xtal-trim = /bits/ 8 <0xf>; + }; + }; + }; + + fragment@1 { + target = <&gpio>; + __overlay__ { + lowpan0_pins: lowpan0_pins { + brcm,pins = <23 24 25>; + brcm,function = <0 1 1>; /* in out out */ + }; + }; + }; + + __overrides__ { + interrupt = <&lowpan0>, "interrupts:0", + <&lowpan0_pins>, "brcm,pins:0"; + reset = <&lowpan0>, "reset-gpio:4", + <&lowpan0_pins>, "brcm,pins:4"; + sleep = <&lowpan0>, "sleep-gpio:4", + <&lowpan0_pins>, "brcm,pins:8"; + speed = <&lowpan0>, "spi-max-frequency:0"; + trim = <&lowpan0>, "xtal-trim.0"; + }; +}; --- linux-raspi2-4.2.0.orig/arch/arm/boot/dts/overlays/bmp085_i2c-sensor-overlay.dts +++ linux-raspi2-4.2.0/arch/arm/boot/dts/overlays/bmp085_i2c-sensor-overlay.dts @@ -0,0 +1,23 @@ +// Definitions for BMP085/BMP180 digital barometric pressure and temperature sensors from Bosch Sensortec +/dts-v1/; +/plugin/; + +/ { + compatible = "brcm,bcm2708"; + + fragment@0 { + target = <&i2c_arm>; + __overlay__ { + #address-cells = <1>; + #size-cells = <0>; + status = "okay"; + + bmp085@77 { + compatible = "bosch,bmp085"; + reg = <0x77>; + default-oversampling = <3>; + status = "okay"; + }; + }; + }; +}; --- linux-raspi2-4.2.0.orig/arch/arm/boot/dts/overlays/dht11-overlay.dts +++ linux-raspi2-4.2.0/arch/arm/boot/dts/overlays/dht11-overlay.dts @@ -0,0 +1,39 @@ +/* + * Overlay for the DHT11/21/22 humidity/temperature sensor modules. + */ +/dts-v1/; +/plugin/; + +/ { + compatible = "brcm,bcm2708"; + + fragment@0 { + target-path = "/"; + __overlay__ { + + dht11: dht11@0 { + compatible = "dht11"; + pinctrl-names = "default"; + pinctrl-0 = <&dht11_pins>; + gpios = <&gpio 4 0>; + status = "okay"; + }; + }; + }; + + fragment@1 { + target = <&gpio>; + __overlay__ { + dht11_pins: dht11_pins { + brcm,pins = <4>; + brcm,function = <0>; // in + brcm,pull = <0>; // off + }; + }; + }; + + __overrides__ { + gpiopin = <&dht11_pins>,"brcm,pins:0", + <&dht11>,"gpios:4"; + }; +}; --- linux-raspi2-4.2.0.orig/arch/arm/boot/dts/overlays/enc28j60-overlay.dts +++ linux-raspi2-4.2.0/arch/arm/boot/dts/overlays/enc28j60-overlay.dts @@ -0,0 +1,50 @@ +// Overlay for the Microchip ENC28J60 Ethernet Controller +/dts-v1/; +/plugin/; + +/ { + compatible = "brcm,bcm2708"; + + fragment@0 { + target = <&spi0>; + __overlay__ { + /* needed to avoid dtc warning */ + #address-cells = <1>; + #size-cells = <0>; + + status = "okay"; + + spidev@0{ + status = "disabled"; + }; + + eth1: enc28j60@0{ + compatible = "microchip,enc28j60"; + reg = <0>; /* CE0 */ + pinctrl-names = "default"; + pinctrl-0 = <ð1_pins>; + interrupt-parent = <&gpio>; + interrupts = <25 0x2>; /* falling edge */ + spi-max-frequency = <12000000>; + status = "okay"; + }; + }; + }; + + fragment@1 { + target = <&gpio>; + __overlay__ { + eth1_pins: eth1_pins { + brcm,pins = <25>; + brcm,function = <0>; /* in */ + brcm,pull = <0>; /* none */ + }; + }; + }; + + __overrides__ { + int_pin = <ð1>, "interrupts:0", + <ð1_pins>, "brcm,pins:0"; + speed = <ð1>, "spi-max-frequency:0"; + }; +}; --- linux-raspi2-4.2.0.orig/arch/arm/boot/dts/overlays/gpio-poweroff-overlay.dts +++ linux-raspi2-4.2.0/arch/arm/boot/dts/overlays/gpio-poweroff-overlay.dts @@ -0,0 +1,34 @@ +// Definitions for gpio-poweroff module +/dts-v1/; +/plugin/; + +/ { + compatible = "brcm,bcm2708"; + + fragment@0 { + target-path = "/"; + __overlay__ { + power_ctrl: power_ctrl { + compatible = "gpio-poweroff"; + gpios = <&gpio 26 0>; + force; + }; + }; + }; + + fragment@1 { + target = <&gpio>; + __overlay__ { + power_ctrl_pins: power_ctrl_pins { + brcm,pins = <26>; + brcm,function = <1>; // out + }; + }; + }; + + __overrides__ { + gpiopin = <&power_ctrl>,"gpios:4", + <&power_ctrl_pins>,"brcm,pins:0"; + active_low = <&power_ctrl>,"gpios:8"; + }; +}; --- linux-raspi2-4.2.0.orig/arch/arm/boot/dts/overlays/hifiberry-amp-overlay.dts +++ linux-raspi2-4.2.0/arch/arm/boot/dts/overlays/hifiberry-amp-overlay.dts @@ -0,0 +1,39 @@ +// Definitions for HiFiBerry Amp/Amp+ +/dts-v1/; +/plugin/; + +/ { + compatible = "brcm,bcm2708"; + + fragment@0 { + target = <&sound>; + __overlay__ { + compatible = "hifiberry,hifiberry-amp"; + i2s-controller = <&i2s>; + status = "okay"; + }; + }; + + fragment@1 { + target = <&i2s>; + __overlay__ { + status = "okay"; + }; + }; + + fragment@2 { + target = <&i2c1>; + __overlay__ { + #address-cells = <1>; + #size-cells = <0>; + status = "okay"; + + tas5713@1b { + #sound-dai-cells = <0>; + compatible = "ti,tas5713"; + reg = <0x1b>; + status = "okay"; + }; + }; + }; +}; --- linux-raspi2-4.2.0.orig/arch/arm/boot/dts/overlays/hifiberry-dac-overlay.dts +++ linux-raspi2-4.2.0/arch/arm/boot/dts/overlays/hifiberry-dac-overlay.dts @@ -0,0 +1,34 @@ +// Definitions for HiFiBerry DAC +/dts-v1/; +/plugin/; + +/ { + compatible = "brcm,bcm2708"; + + fragment@0 { + target = <&sound>; + __overlay__ { + compatible = "hifiberry,hifiberry-dac"; + i2s-controller = <&i2s>; + status = "okay"; + }; + }; + + fragment@1 { + target = <&i2s>; + __overlay__ { + status = "okay"; + }; + }; + + fragment@2 { + target-path = "/"; + __overlay__ { + pcm5102a-codec { + #sound-dai-cells = <0>; + compatible = "ti,pcm5102a"; + status = "okay"; + }; + }; + }; +}; --- linux-raspi2-4.2.0.orig/arch/arm/boot/dts/overlays/hifiberry-dacplus-overlay.dts +++ linux-raspi2-4.2.0/arch/arm/boot/dts/overlays/hifiberry-dacplus-overlay.dts @@ -0,0 +1,50 @@ +// Definitions for HiFiBerry DAC+ +/dts-v1/; +/plugin/; + +/ { + compatible = "brcm,bcm2708"; + + fragment@0 { + target-path = "/clocks"; + __overlay__ { + dacpro_osc: dacpro_osc { + compatible = "hifiberry,dacpro-clk"; + #clock-cells = <0>; + }; + }; + }; + + fragment@1 { + target = <&sound>; + __overlay__ { + compatible = "hifiberry,hifiberry-dacplus"; + i2s-controller = <&i2s>; + status = "okay"; + }; + }; + + fragment@2 { + target = <&i2s>; + __overlay__ { + status = "okay"; + }; + }; + + fragment@3 { + target = <&i2c1>; + __overlay__ { + #address-cells = <1>; + #size-cells = <0>; + status = "okay"; + + pcm5122@4d { + #sound-dai-cells = <0>; + compatible = "ti,pcm5122"; + reg = <0x4d>; + clocks = <&dacpro_osc>; + status = "okay"; + }; + }; + }; +}; --- linux-raspi2-4.2.0.orig/arch/arm/boot/dts/overlays/hifiberry-digi-overlay.dts +++ linux-raspi2-4.2.0/arch/arm/boot/dts/overlays/hifiberry-digi-overlay.dts @@ -0,0 +1,39 @@ +// Definitions for HiFiBerry Digi +/dts-v1/; +/plugin/; + +/ { + compatible = "brcm,bcm2708"; + + fragment@0 { + target = <&sound>; + __overlay__ { + compatible = "hifiberry,hifiberry-digi"; + i2s-controller = <&i2s>; + status = "okay"; + }; + }; + + fragment@1 { + target = <&i2s>; + __overlay__ { + status = "okay"; + }; + }; + + fragment@2 { + target = <&i2c1>; + __overlay__ { + #address-cells = <1>; + #size-cells = <0>; + status = "okay"; + + wm8804@3b { + #sound-dai-cells = <0>; + compatible = "wlf,wm8804"; + reg = <0x3b>; + status = "okay"; + }; + }; + }; +}; --- linux-raspi2-4.2.0.orig/arch/arm/boot/dts/overlays/hy28a-overlay.dts +++ linux-raspi2-4.2.0/arch/arm/boot/dts/overlays/hy28a-overlay.dts @@ -0,0 +1,87 @@ +/* + * Device Tree overlay for HY28A display + * + */ + +/dts-v1/; +/plugin/; + +/ { + compatible = "brcm,bcm2835", "brcm,bcm2708", "brcm,bcm2709"; + + fragment@0 { + target = <&spi0>; + __overlay__ { + status = "okay"; + + spidev@0{ + status = "disabled"; + }; + + spidev@1{ + status = "disabled"; + }; + }; + }; + + fragment@1 { + target = <&gpio>; + __overlay__ { + hy28a_pins: hy28a_pins { + brcm,pins = <17 25 18>; + brcm,function = <0 1 1>; /* in out out */ + }; + }; + }; + + fragment@2 { + target = <&spi0>; + __overlay__ { + /* needed to avoid dtc warning */ + #address-cells = <1>; + #size-cells = <0>; + + hy28a: hy28a@0{ + compatible = "ilitek,ili9320"; + reg = <0>; + pinctrl-names = "default"; + pinctrl-0 = <&hy28a_pins>; + + spi-max-frequency = <32000000>; + spi-cpol; + spi-cpha; + rotate = <270>; + bgr; + fps = <50>; + buswidth = <8>; + startbyte = <0x70>; + reset-gpios = <&gpio 25 0>; + led-gpios = <&gpio 18 1>; + debug = <0>; + }; + + hy28a_ts: hy28a-ts@1 { + compatible = "ti,ads7846"; + reg = <1>; + + spi-max-frequency = <2000000>; + interrupts = <17 2>; /* high-to-low edge triggered */ + interrupt-parent = <&gpio>; + pendown-gpio = <&gpio 17 0>; + ti,x-plate-ohms = /bits/ 16 <100>; + ti,pressure-max = /bits/ 16 <255>; + }; + }; + }; + __overrides__ { + speed = <&hy28a>,"spi-max-frequency:0"; + rotate = <&hy28a>,"rotate:0"; + fps = <&hy28a>,"fps:0"; + debug = <&hy28a>,"debug:0"; + xohms = <&hy28a_ts>,"ti,x-plate-ohms;0"; + resetgpio = <&hy28a>,"reset-gpios:4", + <&hy28a_pins>, "brcm,pins:1"; + ledgpio = <&hy28a>,"led-gpios:4", + <&hy28a_pins>, "brcm,pins:2"; + }; +}; --- linux-raspi2-4.2.0.orig/arch/arm/boot/dts/overlays/hy28b-overlay.dts +++ linux-raspi2-4.2.0/arch/arm/boot/dts/overlays/hy28b-overlay.dts @@ -0,0 +1,142 @@ +/* + * Device Tree overlay for HY28b display shield by Texy + * + */ + +/dts-v1/; +/plugin/; + +/ { + compatible = "brcm,bcm2835", "brcm,bcm2708", "brcm,bcm2709"; + + fragment@0 { + target = <&spi0>; + __overlay__ { + status = "okay"; + + spidev@0{ + status = "disabled"; + }; + + spidev@1{ + status = "disabled"; + }; + }; + }; + + fragment@1 { + target = <&gpio>; + __overlay__ { + hy28b_pins: hy28b_pins { + brcm,pins = <17 25 18>; + brcm,function = <0 1 1>; /* in out out */ + }; + }; + }; + + fragment@2 { + target = <&spi0>; + __overlay__ { + /* needed to avoid dtc warning */ + #address-cells = <1>; + #size-cells = <0>; + + hy28b: hy28b@0{ + compatible = "ilitek,ili9325"; + reg = <0>; + pinctrl-names = "default"; + pinctrl-0 = <&hy28b_pins>; + + spi-max-frequency = <48000000>; + spi-cpol; + spi-cpha; + rotate = <270>; + bgr; + fps = <50>; + buswidth = <8>; + startbyte = <0x70>; + reset-gpios = <&gpio 25 0>; + led-gpios = <&gpio 18 1>; + + gamma = "04 1F 4 7 7 0 7 7 6 0\n0F 00 1 7 4 0 0 0 6 7"; + + init = <0x10000e7 0x0010 + 0x1000000 0x0001 + 0x1000001 0x0100 + 0x1000002 0x0700 + 0x1000003 0x1030 + 0x1000004 0x0000 + 0x1000008 0x0207 + 0x1000009 0x0000 + 0x100000a 0x0000 + 0x100000c 0x0001 + 0x100000d 0x0000 + 0x100000f 0x0000 + 0x1000010 0x0000 + 0x1000011 0x0007 + 0x1000012 0x0000 + 0x1000013 0x0000 + 0x2000032 + 0x1000010 0x1590 + 0x1000011 0x0227 + 0x2000032 + 0x1000012 0x009c + 0x2000032 + 0x1000013 0x1900 + 0x1000029 0x0023 + 0x100002b 0x000e + 0x2000032 + 0x1000020 0x0000 + 0x1000021 0x0000 + 0x2000032 + 0x1000050 0x0000 + 0x1000051 0x00ef + 0x1000052 0x0000 + 0x1000053 0x013f + 0x1000060 0xa700 + 0x1000061 0x0001 + 0x100006a 0x0000 + 0x1000080 0x0000 + 0x1000081 0x0000 + 0x1000082 0x0000 + 0x1000083 0x0000 + 0x1000084 0x0000 + 0x1000085 0x0000 + 0x1000090 0x0010 + 0x1000092 0x0000 + 0x1000093 0x0003 + 0x1000095 0x0110 + 0x1000097 0x0000 + 0x1000098 0x0000 + 0x1000007 0x0133 + 0x1000020 0x0000 + 0x1000021 0x0000 + 0x2000064>; + debug = <0>; + }; + + hy28b_ts: hy28b-ts@1 { + compatible = "ti,ads7846"; + reg = <1>; + + spi-max-frequency = <2000000>; + interrupts = <17 2>; /* high-to-low edge triggered */ + interrupt-parent = <&gpio>; + pendown-gpio = <&gpio 17 0>; + ti,x-plate-ohms = /bits/ 16 <100>; + ti,pressure-max = /bits/ 16 <255>; + }; + }; + }; + __overrides__ { + speed = <&hy28b>,"spi-max-frequency:0"; + rotate = <&hy28b>,"rotate:0"; + fps = <&hy28b>,"fps:0"; + debug = <&hy28b>,"debug:0"; + xohms = <&hy28b_ts>,"ti,x-plate-ohms;0"; + resetgpio = <&hy28b>,"reset-gpios:4", + <&hy28b_pins>, "brcm,pins:1"; + ledgpio = <&hy28b>,"led-gpios:4", + <&hy28b_pins>, "brcm,pins:2"; + }; +}; --- linux-raspi2-4.2.0.orig/arch/arm/boot/dts/overlays/i2c-rtc-overlay.dts +++ linux-raspi2-4.2.0/arch/arm/boot/dts/overlays/i2c-rtc-overlay.dts @@ -0,0 +1,55 @@ +// Definitions for several I2C based Real Time Clocks +/dts-v1/; +/plugin/; + +/ { + compatible = "brcm,bcm2708"; + + fragment@0 { + target = <&i2c_arm>; + __overlay__ { + #address-cells = <1>; + #size-cells = <0>; + status = "okay"; + + ds1307: ds1307@68 { + compatible = "maxim,ds1307"; + reg = <0x68>; + status = "disable"; + }; + mcp7941x: mcp7941x@6f { + compatible = "microchip,mcp7941x"; + reg = <0x6f>; + status = "disable"; + }; + ds3231: ds3231@68 { + compatible = "maxim,ds3231"; + reg = <0x68>; + status = "disable"; + }; + pcf2127: pcf2127@51 { + compatible = "nxp,pcf2127"; + reg = <0x51>; + status = "disable"; + }; + pcf8523: pcf8523@68 { + compatible = "nxp,pcf8523"; + reg = <0x68>; + status = "disable"; + }; + pcf8563: pcf8563@51 { + compatible = "nxp,pcf8563"; + reg = <0x51>; + status = "disable"; + }; + }; + }; + __overrides__ { + ds1307 = <&ds1307>,"status"; + ds3231 = <&ds3231>,"status"; + mcp7941x = <&mcp7941x>,"status"; + pcf2127 = <&pcf2127>,"status"; + pcf8523 = <&pcf8523>,"status"; + pcf8563 = <&pcf8563>,"status"; + }; +}; --- linux-raspi2-4.2.0.orig/arch/arm/boot/dts/overlays/i2s-mmap-overlay.dts +++ linux-raspi2-4.2.0/arch/arm/boot/dts/overlays/i2s-mmap-overlay.dts @@ -0,0 +1,13 @@ +/dts-v1/; +/plugin/; + +/{ + compatible = "brcm,bcm2708"; + + fragment@0 { + target = <&i2s>; + __overlay__ { + brcm,enable-mmap; + }; + }; +}; --- linux-raspi2-4.2.0.orig/arch/arm/boot/dts/overlays/iqaudio-dac-overlay.dts +++ linux-raspi2-4.2.0/arch/arm/boot/dts/overlays/iqaudio-dac-overlay.dts @@ -0,0 +1,39 @@ +// Definitions for IQaudIO DAC +/dts-v1/; +/plugin/; + +/ { + compatible = "brcm,bcm2708"; + + fragment@0 { + target = <&sound>; + __overlay__ { + compatible = "iqaudio,iqaudio-dac"; + i2s-controller = <&i2s>; + status = "okay"; + }; + }; + + fragment@1 { + target = <&i2s>; + __overlay__ { + status = "okay"; + }; + }; + + fragment@2 { + target = <&i2c1>; + __overlay__ { + #address-cells = <1>; + #size-cells = <0>; + status = "okay"; + + pcm5122@4c { + #sound-dai-cells = <0>; + compatible = "ti,pcm5122"; + reg = <0x4c>; + status = "okay"; + }; + }; + }; +}; --- linux-raspi2-4.2.0.orig/arch/arm/boot/dts/overlays/iqaudio-dacplus-overlay.dts +++ linux-raspi2-4.2.0/arch/arm/boot/dts/overlays/iqaudio-dacplus-overlay.dts @@ -0,0 +1,39 @@ +// Definitions for IQaudIO DAC+ +/dts-v1/; +/plugin/; + +/ { + compatible = "brcm,bcm2708"; + + fragment@0 { + target = <&sound>; + __overlay__ { + compatible = "iqaudio,iqaudio-dac"; + i2s-controller = <&i2s>; + status = "okay"; + }; + }; + + fragment@1 { + target = <&i2s>; + __overlay__ { + status = "okay"; + }; + }; + + fragment@2 { + target = <&i2c1>; + __overlay__ { + #address-cells = <1>; + #size-cells = <0>; + status = "okay"; + + pcm5122@4c { + #sound-dai-cells = <0>; + compatible = "ti,pcm5122"; + reg = <0x4c>; + status = "okay"; + }; + }; + }; +}; --- linux-raspi2-4.2.0.orig/arch/arm/boot/dts/overlays/lirc-rpi-overlay.dts +++ linux-raspi2-4.2.0/arch/arm/boot/dts/overlays/lirc-rpi-overlay.dts @@ -0,0 +1,57 @@ +// Definitions for lirc-rpi module +/dts-v1/; +/plugin/; + +/ { + compatible = "brcm,bcm2708"; + + fragment@0 { + target-path = "/"; + __overlay__ { + lirc_rpi: lirc_rpi { + compatible = "rpi,lirc-rpi"; + pinctrl-names = "default"; + pinctrl-0 = <&lirc_pins>; + status = "okay"; + + // Override autodetection of IR receiver circuit + // (0 = active high, 1 = active low, -1 = no override ) + rpi,sense = <0xffffffff>; + + // Software carrier + // (0 = off, 1 = on) + rpi,softcarrier = <1>; + + // Invert output + // (0 = off, 1 = on) + rpi,invert = <0>; + + // Enable debugging messages + // (0 = off, 1 = on) + rpi,debug = <0>; + }; + }; + }; + + fragment@1 { + target = <&gpio>; + __overlay__ { + lirc_pins: lirc_pins { + brcm,pins = <17 18>; + brcm,function = <1 0>; // out in + brcm,pull = <0 1>; // off down + }; + }; + }; + + __overrides__ { + gpio_out_pin = <&lirc_pins>,"brcm,pins:0"; + gpio_in_pin = <&lirc_pins>,"brcm,pins:4"; + gpio_in_pull = <&lirc_pins>,"brcm,pull:4"; + + sense = <&lirc_rpi>,"rpi,sense:0"; + softcarrier = <&lirc_rpi>,"rpi,softcarrier:0"; + invert = <&lirc_rpi>,"rpi,invert:0"; + debug = <&lirc_rpi>,"rpi,debug:0"; + }; +}; --- linux-raspi2-4.2.0.orig/arch/arm/boot/dts/overlays/mcp2515-can0-overlay.dts +++ linux-raspi2-4.2.0/arch/arm/boot/dts/overlays/mcp2515-can0-overlay.dts @@ -0,0 +1,69 @@ +/* + * Device tree overlay for mcp251x/can0 on spi0.0 + */ + +/dts-v1/; +/plugin/; + +/ { + compatible = "brcm,bcm2835", "brcm,bcm2836", "brcm,bcm2708", "brcm,bcm2709"; + /* disable spi-dev for spi0.0 */ + fragment@0 { + target = <&spi0>; + __overlay__ { + status = "okay"; + spidev@0{ + status = "disabled"; + }; + }; + }; + + /* the interrupt pin of the can-controller */ + fragment@1 { + target = <&gpio>; + __overlay__ { + can0_pins: can0_pins { + brcm,pins = <25>; + brcm,function = <0>; /* input */ + }; + }; + }; + + /* the clock/oscillator of the can-controller */ + fragment@2 { + target-path = "/clocks"; + __overlay__ { + /* external oscillator of mcp2515 on SPI0.0 */ + can0_osc: can0_osc { + compatible = "fixed-clock"; + #clock-cells = <0>; + clock-frequency = <16000000>; + }; + }; + }; + + /* the spi config of the can-controller itself binding everything together */ + fragment@3 { + target = <&spi0>; + __overlay__ { + /* needed to avoid dtc warning */ + #address-cells = <1>; + #size-cells = <0>; + can0: mcp2515@0 { + reg = <0>; + compatible = "microchip,mcp2515"; + pinctrl-names = "default"; + pinctrl-0 = <&can0_pins>; + spi-max-frequency = <10000000>; + interrupt-parent = <&gpio>; + interrupts = <25 0x2>; + clocks = <&can0_osc>; + }; + }; + }; + __overrides__ { + oscillator = <&can0_osc>,"clock-frequency:0"; + spimaxfrequency = <&can0>,"spi-max-frequency:0"; + interrupt = <&can0_pins>,"brcm,pins:0",<&can0>,"interrupts:0"; + }; +}; --- linux-raspi2-4.2.0.orig/arch/arm/boot/dts/overlays/mcp2515-can1-overlay.dts +++ linux-raspi2-4.2.0/arch/arm/boot/dts/overlays/mcp2515-can1-overlay.dts @@ -0,0 +1,69 @@ +/* + * Device tree overlay for mcp251x/can1 on spi0.1 edited by petit_miner + */ + +/dts-v1/; +/plugin/; + +/ { + compatible = "brcm,bcm2835", "brcm,bcm2836", "brcm,bcm2708", "brcm,bcm2709"; + /* disable spi-dev for spi0.1 */ + fragment@0 { + target = <&spi0>; + __overlay__ { + status = "okay"; + spidev@1{ + status = "disabled"; + }; + }; + }; + + /* the interrupt pin of the can-controller */ + fragment@1 { + target = <&gpio>; + __overlay__ { + can1_pins: can1_pins { + brcm,pins = <25>; + brcm,function = <0>; /* input */ + }; + }; + }; + + /* the clock/oscillator of the can-controller */ + fragment@2 { + target-path = "/clocks"; + __overlay__ { + /* external oscillator of mcp2515 on spi0.1 */ + can1_osc: can1_osc { + compatible = "fixed-clock"; + #clock-cells = <0>; + clock-frequency = <16000000>; + }; + }; + }; + + /* the spi config of the can-controller itself binding everything together */ + fragment@3 { + target = <&spi0>; + __overlay__ { + /* needed to avoid dtc warning */ + #address-cells = <1>; + #size-cells = <0>; + can1: mcp2515@1 { + reg = <1>; + compatible = "microchip,mcp2515"; + pinctrl-names = "default"; + pinctrl-0 = <&can1_pins>; + spi-max-frequency = <10000000>; + interrupt-parent = <&gpio>; + interrupts = <25 0x2>; + clocks = <&can1_osc>; + }; + }; + }; + __overrides__ { + oscillator = <&can1_osc>,"clock-frequency:0"; + spimaxfrequency = <&can1>,"spi-max-frequency:0"; + interrupt = <&can1_pins>,"brcm,pins:0",<&can1>,"interrupts:0"; + }; +}; --- linux-raspi2-4.2.0.orig/arch/arm/boot/dts/overlays/mmc-overlay.dts +++ linux-raspi2-4.2.0/arch/arm/boot/dts/overlays/mmc-overlay.dts @@ -0,0 +1,19 @@ +/dts-v1/; +/plugin/; + +/{ + compatible = "brcm,bcm2708"; + + fragment@0 { + target = <&mmc>; + + frag0: __overlay__ { + brcm,overclock-50 = <0>; + }; + }; + + __overrides__ { + overclock_50 = <&frag0>,"brcm,overclock-50:0"; + force_pio = <&frag0>,"brcm,force-pio?"; + }; +}; --- linux-raspi2-4.2.0.orig/arch/arm/boot/dts/overlays/mz61581-overlay.dts +++ linux-raspi2-4.2.0/arch/arm/boot/dts/overlays/mz61581-overlay.dts @@ -0,0 +1,111 @@ +/* + * Device Tree overlay for MZ61581-PI-EXT 2014.12.28 by Tontec + * + */ + +/dts-v1/; +/plugin/; + +/ { + compatible = "brcm,bcm2835", "brcm,bcm2708", "brcm,bcm2709"; + + fragment@0 { + target = <&spi0>; + __overlay__ { + status = "okay"; + + spidev@0{ + status = "disabled"; + }; + + spidev@1{ + status = "disabled"; + }; + }; + }; + + fragment@1 { + target = <&gpio>; + __overlay__ { + mz61581_pins: mz61581_pins { + brcm,pins = <4 15 18 25>; + brcm,function = <0 1 1 1>; /* in out out out */ + }; + }; + }; + + fragment@2 { + target = <&spi0>; + __overlay__ { + /* needed to avoid dtc warning */ + #address-cells = <1>; + #size-cells = <0>; + + mz61581: mz61581@0{ + compatible = "samsung,s6d02a1"; + reg = <0>; + pinctrl-names = "default"; + pinctrl-0 = <&mz61581_pins>; + + spi-max-frequency = <128000000>; + spi-cpol; + spi-cpha; + + width = <320>; + height = <480>; + rotate = <270>; + bgr; + fps = <30>; + buswidth = <8>; + txbuflen = <32768>; + + reset-gpios = <&gpio 15 0>; + dc-gpios = <&gpio 25 0>; + led-gpios = <&gpio 18 0>; + + init = <0x10000b0 00 + 0x1000011 + 0x20000ff + 0x10000b3 0x02 0x00 0x00 0x00 + 0x10000c0 0x13 0x3b 0x00 0x02 0x00 0x01 0x00 0x43 + 0x10000c1 0x08 0x16 0x08 0x08 + 0x10000c4 0x11 0x07 0x03 0x03 + 0x10000c6 0x00 + 0x10000c8 0x03 0x03 0x13 0x5c 0x03 0x07 0x14 0x08 0x00 0x21 0x08 0x14 0x07 0x53 0x0c 0x13 0x03 0x03 0x21 0x00 + 0x1000035 0x00 + 0x1000036 0xa0 + 0x100003a 0x55 + 0x1000044 0x00 0x01 + 0x10000d0 0x07 0x07 0x1d 0x03 + 0x10000d1 0x03 0x30 0x10 + 0x10000d2 0x03 0x14 0x04 + 0x1000029 + 0x100002c>; + + /* This is a workaround to make sure the init sequence slows down and doesn't fail */ + debug = <3>; + }; + + mz61581_ts: mz61581_ts@1 { + compatible = "ti,ads7846"; + reg = <1>; + + spi-max-frequency = <2000000>; + interrupts = <4 2>; /* high-to-low edge triggered */ + interrupt-parent = <&gpio>; + pendown-gpio = <&gpio 4 0>; + + ti,x-plate-ohms = /bits/ 16 <60>; + ti,pressure-max = /bits/ 16 <255>; + }; + }; + }; + __overrides__ { + speed = <&mz61581>, "spi-max-frequency:0"; + rotate = <&mz61581>, "rotate:0"; + fps = <&mz61581>, "fps:0"; + txbuflen = <&mz61581>, "txbuflen:0"; + debug = <&mz61581>, "debug:0"; + xohms = <&mz61581_ts>,"ti,x-plate-ohms;0"; + }; +}; --- linux-raspi2-4.2.0.orig/arch/arm/boot/dts/overlays/piscreen-overlay.dts +++ linux-raspi2-4.2.0/arch/arm/boot/dts/overlays/piscreen-overlay.dts @@ -0,0 +1,96 @@ +/* + * Device Tree overlay for PiScreen 3.5" display shield by Ozzmaker + * + */ + +/dts-v1/; +/plugin/; + +/ { + compatible = "brcm,bcm2835", "brcm,bcm2708", "brcm,bcm2709"; + + fragment@0 { + target = <&spi0>; + __overlay__ { + status = "okay"; + + spidev@0{ + status = "disabled"; + }; + + spidev@1{ + status = "disabled"; + }; + }; + }; + + fragment@1 { + target = <&gpio>; + __overlay__ { + piscreen_pins: piscreen_pins { + brcm,pins = <17 25 24 22>; + brcm,function = <0 1 1 1>; /* in out out out */ + }; + }; + }; + + fragment@2 { + target = <&spi0>; + __overlay__ { + /* needed to avoid dtc warning */ + #address-cells = <1>; + #size-cells = <0>; + + piscreen: piscreen@0{ + compatible = "ilitek,ili9486"; + reg = <0>; + pinctrl-names = "default"; + pinctrl-0 = <&piscreen_pins>; + + spi-max-frequency = <24000000>; + rotate = <270>; + bgr; + fps = <30>; + buswidth = <8>; + regwidth = <16>; + reset-gpios = <&gpio 25 0>; + dc-gpios = <&gpio 24 0>; + led-gpios = <&gpio 22 1>; + debug = <0>; + + init = <0x10000b0 0x00 + 0x1000011 + 0x20000ff + 0x100003a 0x55 + 0x1000036 0x28 + 0x10000c2 0x44 + 0x10000c5 0x00 0x00 0x00 0x00 + 0x10000e0 0x0f 0x1f 0x1c 0x0c 0x0f 0x08 0x48 0x98 0x37 0x0a 0x13 0x04 0x11 0x0d 0x00 + 0x10000e1 0x0f 0x32 0x2e 0x0b 0x0d 0x05 0x47 0x75 0x37 0x06 0x10 0x03 0x24 0x20 0x00 + 0x10000e2 0x0f 0x32 0x2e 0x0b 0x0d 0x05 0x47 0x75 0x37 0x06 0x10 0x03 0x24 0x20 0x00 + 0x1000011 + 0x1000029>; + }; + + piscreen_ts: piscreen-ts@1 { + compatible = "ti,ads7846"; + reg = <1>; + + spi-max-frequency = <2000000>; + interrupts = <17 2>; /* high-to-low edge triggered */ + interrupt-parent = <&gpio>; + pendown-gpio = <&gpio 17 0>; + ti,swap-xy; + ti,x-plate-ohms = /bits/ 16 <100>; + ti,pressure-max = /bits/ 16 <255>; + }; + }; + }; + __overrides__ { + speed = <&piscreen>,"spi-max-frequency:0"; + rotate = <&piscreen>,"rotate:0"; + fps = <&piscreen>,"fps:0"; + debug = <&piscreen>,"debug:0"; + xohms = <&piscreen_ts>,"ti,x-plate-ohms;0"; + }; +}; --- linux-raspi2-4.2.0.orig/arch/arm/boot/dts/overlays/pitft28-resistive-overlay.dts +++ linux-raspi2-4.2.0/arch/arm/boot/dts/overlays/pitft28-resistive-overlay.dts @@ -0,0 +1,115 @@ +/* + * Device Tree overlay for Adafruit PiTFT 2.8" resistive touch screen + * + */ + +/dts-v1/; +/plugin/; + +/ { + compatible = "brcm,bcm2835", "brcm,bcm2708", "brcm,bcm2709"; + + fragment@0 { + target = <&spi0>; + __overlay__ { + status = "okay"; + + spidev@0{ + status = "disabled"; + }; + + spidev@1{ + status = "disabled"; + }; + }; + }; + + fragment@1 { + target = <&gpio>; + __overlay__ { + pitft_pins: pitft_pins { + brcm,pins = <24 25>; + brcm,function = <0 1>; /* in out */ + brcm,pull = <2 0>; /* pullup none */ + }; + }; + }; + + fragment@2 { + target = <&spi0>; + __overlay__ { + /* needed to avoid dtc warning */ + #address-cells = <1>; + #size-cells = <0>; + + pitft: pitft@0{ + compatible = "ilitek,ili9340"; + reg = <0>; + pinctrl-names = "default"; + pinctrl-0 = <&pitft_pins>; + + spi-max-frequency = <32000000>; + rotate = <90>; + fps = <25>; + bgr; + buswidth = <8>; + dc-gpios = <&gpio 25 0>; + debug = <0>; + }; + + pitft_ts@1 { + #address-cells = <1>; + #size-cells = <0>; + compatible = "st,stmpe610"; + reg = <1>; + + spi-max-frequency = <500000>; + irq-gpio = <&gpio 24 0x2>; /* IRQF_TRIGGER_FALLING */ + interrupts = <24 2>; /* high-to-low edge triggered */ + interrupt-parent = <&gpio>; + interrupt-controller; + + stmpe_touchscreen { + compatible = "st,stmpe-ts"; + st,sample-time = <4>; + st,mod-12b = <1>; + st,ref-sel = <0>; + st,adc-freq = <2>; + st,ave-ctrl = <3>; + st,touch-det-delay = <4>; + st,settling = <2>; + st,fraction-z = <7>; + st,i-drive = <0>; + }; + + stmpe_gpio: stmpe_gpio { + #gpio-cells = <2>; + compatible = "st,stmpe-gpio"; + /* + * only GPIO2 is wired/available + * and it is wired to the backlight + */ + st,norequest-mask = <0x7b>; + }; + }; + }; + }; + + fragment@3 { + target-path = "/soc"; + __overlay__ { + backlight { + compatible = "gpio-backlight"; + gpios = <&stmpe_gpio 2 0>; + default-on; + }; + }; + }; + + __overrides__ { + speed = <&pitft>,"spi-max-frequency:0"; + rotate = <&pitft>,"rotate:0"; + fps = <&pitft>,"fps:0"; + debug = <&pitft>,"debug:0"; + }; +}; --- linux-raspi2-4.2.0.orig/arch/arm/boot/dts/overlays/pps-gpio-overlay.dts +++ linux-raspi2-4.2.0/arch/arm/boot/dts/overlays/pps-gpio-overlay.dts @@ -0,0 +1,34 @@ +/dts-v1/; +/plugin/; + +/ { + compatible = "brcm,bcm2708"; + fragment@0 { + target-path = "/"; + __overlay__ { + pps: pps { + compatible = "pps-gpio"; + pinctrl-names = "default"; + pinctrl-0 = <&pps_pins>; + gpios = <&gpio 18 0>; + status = "okay"; + }; + }; + }; + + fragment@1 { + target = <&gpio>; + __overlay__ { + pps_pins: pps_pins { + brcm,pins = <18>; + brcm,function = <0>; // in + brcm,pull = <0>; // off + }; + }; + }; + + __overrides__ { + gpiopin = <&pps>,"gpios:4", + <&pps_pins>,"brcm,pins:0"; + }; +}; --- linux-raspi2-4.2.0.orig/arch/arm/boot/dts/overlays/pwm-2chan-overlay.dts +++ linux-raspi2-4.2.0/arch/arm/boot/dts/overlays/pwm-2chan-overlay.dts @@ -0,0 +1,46 @@ +/dts-v1/; +/plugin/; + +/* +This is the 2-channel overlay - only use it if you need both channels. + +Legal pin,function combinations for each channel: + PWM0: 12,4(Alt0) 18,2(Alt5) 40,4(Alt0) 52,5(Alt1) + PWM1: 13,4(Alt0) 19,2(Alt5) 41,4(Alt0) 45,4(Alt0) 53,5(Alt1) + +N.B.: + 1) Pin 18 is the only one available on all platforms, and + it is the one used by the I2S audio interface. + Pins 12 and 13 might be better choices on an A+, B+ or Pi2. + 2) The onboard analogue audio output uses both PWM channels. + 3) So be careful mixing audio and PWM. +*/ + +/ { + fragment@0 { + target = <&gpio>; + __overlay__ { + pwm_pins: pwm_pins { + brcm,pins = <18 19>; + brcm,function = <2 2>; /* Alt5 */ + }; + }; + }; + + fragment@1 { + target = <&pwm>; + __overlay__ { + pinctrl-names = "default"; + pinctrl-0 = <&pwm_pins>; + status = "okay"; + }; + }; + + __overrides__ { + pin = <&pwm_pins>,"brcm,pins:0"; + pin2 = <&pwm_pins>,"brcm,pins:4"; + func = <&pwm_pins>,"brcm,function:0"; + func2 = <&pwm_pins>,"brcm,function:4"; + clock = <&clk_pwm>,"clock-frequency:0"; + }; +}; --- linux-raspi2-4.2.0.orig/arch/arm/boot/dts/overlays/pwm-overlay.dts +++ linux-raspi2-4.2.0/arch/arm/boot/dts/overlays/pwm-overlay.dts @@ -0,0 +1,42 @@ +/dts-v1/; +/plugin/; + +/* +Legal pin,function combinations for each channel: + PWM0: 12,4(Alt0) 18,2(Alt5) 40,4(Alt0) 52,5(Alt1) + PWM1: 13,4(Alt0) 19,2(Alt5) 41,4(Alt0) 45,4(Alt0) 53,5(Alt1) + +N.B.: + 1) Pin 18 is the only one available on all platforms, and + it is the one used by the I2S audio interface. + Pins 12 and 13 might be better choices on an A+, B+ or Pi2. + 2) The onboard analogue audio output uses both PWM channels. + 3) So be careful mixing audio and PWM. +*/ + +/ { + fragment@0 { + target = <&gpio>; + __overlay__ { + pwm_pins: pwm_pins { + brcm,pins = <18>; + brcm,function = <2>; /* Alt5 */ + }; + }; + }; + + fragment@1 { + target = <&pwm>; + __overlay__ { + pinctrl-names = "default"; + pinctrl-0 = <&pwm_pins>; + status = "okay"; + }; + }; + + __overrides__ { + pin = <&pwm_pins>,"brcm,pins:0"; + func = <&pwm_pins>,"brcm,function:0"; + clock = <&clk_pwm>,"clock-frequency:0"; + }; +}; --- linux-raspi2-4.2.0.orig/arch/arm/boot/dts/overlays/raspidac3-overlay.dts +++ linux-raspi2-4.2.0/arch/arm/boot/dts/overlays/raspidac3-overlay.dts @@ -0,0 +1,45 @@ +// Definitions for RaspiDACv3 +/dts-v1/; +/plugin/; + +/ { + compatible = "brcm,bcm2708"; + + fragment@0 { + target = <&sound>; + __overlay__ { + compatible = "jg,raspidacv3"; + i2s-controller = <&i2s>; + status = "okay"; + }; + }; + + fragment@1 { + target = <&i2s>; + __overlay__ { + status = "okay"; + }; + }; + + fragment@2 { + target = <&i2c1>; + __overlay__ { + #address-cells = <1>; + #size-cells = <0>; + status = "okay"; + + pcm5122@4c { + #sound-dai-cells = <0>; + compatible = "ti,pcm5122"; + reg = <0x4c>; + status = "okay"; + }; + + tpa6130a2: tpa6130a2@60 { + compatible = "ti,tpa6130a2"; + reg = <0x60>; + status = "okay"; + }; + }; + }; +}; --- linux-raspi2-4.2.0.orig/arch/arm/boot/dts/overlays/rpi-dac-overlay.dts +++ linux-raspi2-4.2.0/arch/arm/boot/dts/overlays/rpi-dac-overlay.dts @@ -0,0 +1,34 @@ +// Definitions for RPi DAC +/dts-v1/; +/plugin/; + +/ { + compatible = "brcm,bcm2708"; + + fragment@0 { + target = <&sound>; + __overlay__ { + compatible = "rpi,rpi-dac"; + i2s-controller = <&i2s>; + status = "okay"; + }; + }; + + fragment@1 { + target = <&i2s>; + __overlay__ { + status = "okay"; + }; + }; + + fragment@2 { + target-path = "/"; + __overlay__ { + pcm1794a-codec { + #sound-dai-cells = <0>; + compatible = "ti,pcm1794a"; + status = "okay"; + }; + }; + }; +}; --- linux-raspi2-4.2.0.orig/arch/arm/boot/dts/overlays/rpi-display-overlay.dts +++ linux-raspi2-4.2.0/arch/arm/boot/dts/overlays/rpi-display-overlay.dts @@ -0,0 +1,82 @@ +/* + * Device Tree overlay for rpi-display by Watterott + * + */ + +/dts-v1/; +/plugin/; + +/ { + compatible = "brcm,bcm2835", "brcm,bcm2708", "brcm,bcm2709"; + + fragment@0 { + target = <&spi0>; + __overlay__ { + status = "okay"; + + spidev@0{ + status = "disabled"; + }; + + spidev@1{ + status = "disabled"; + }; + }; + }; + + fragment@1 { + target = <&gpio>; + __overlay__ { + rpi_display_pins: rpi_display_pins { + brcm,pins = <18 23 24 25>; + brcm,function = <1 1 1 0>; /* out out out in */ + brcm,pull = <0 0 0 2>; /* - - - up */ + }; + }; + }; + + fragment@2 { + target = <&spi0>; + __overlay__ { + /* needed to avoid dtc warning */ + #address-cells = <1>; + #size-cells = <0>; + + rpidisplay: rpi-display@0{ + compatible = "ilitek,ili9341"; + reg = <0>; + pinctrl-names = "default"; + pinctrl-0 = <&rpi_display_pins>; + + spi-max-frequency = <32000000>; + rotate = <270>; + bgr; + fps = <30>; + buswidth = <8>; + reset-gpios = <&gpio 23 0>; + dc-gpios = <&gpio 24 0>; + led-gpios = <&gpio 18 1>; + debug = <0>; + }; + + rpidisplay_ts: rpi-display-ts@1 { + compatible = "ti,ads7846"; + reg = <1>; + + spi-max-frequency = <2000000>; + interrupts = <25 2>; /* high-to-low edge triggered */ + interrupt-parent = <&gpio>; + pendown-gpio = <&gpio 25 0>; + ti,x-plate-ohms = /bits/ 16 <60>; + ti,pressure-max = /bits/ 16 <255>; + }; + }; + }; + __overrides__ { + speed = <&rpidisplay>,"spi-max-frequency:0"; + rotate = <&rpidisplay>,"rotate:0"; + fps = <&rpidisplay>,"fps:0"; + debug = <&rpidisplay>,"debug:0"; + xohms = <&rpidisplay_ts>,"ti,x-plate-ohms;0"; + }; +}; --- linux-raspi2-4.2.0.orig/arch/arm/boot/dts/overlays/rpi-ft5406-overlay.dts +++ linux-raspi2-4.2.0/arch/arm/boot/dts/overlays/rpi-ft5406-overlay.dts @@ -0,0 +1,17 @@ +/dts-v1/; +/plugin/; + +/ { + compatible = "brcm,bcm2708"; + + fragment@0 { + target-path = "/"; + __overlay__ { + rpi_ft5406: rpi_ft5406 { + compatible = "rpi,rpi-ft5406"; + firmware = <&firmware>; + status = "okay"; + }; + }; + }; +}; --- linux-raspi2-4.2.0.orig/arch/arm/boot/dts/overlays/rpi-proto-overlay.dts +++ linux-raspi2-4.2.0/arch/arm/boot/dts/overlays/rpi-proto-overlay.dts @@ -0,0 +1,39 @@ +// Definitions for Rpi-Proto +/dts-v1/; +/plugin/; + +/ { + compatible = "brcm,bcm2708"; + + fragment@0 { + target = <&sound>; + __overlay__ { + compatible = "rpi,rpi-proto"; + i2s-controller = <&i2s>; + status = "okay"; + }; + }; + + fragment@1 { + target = <&i2s>; + __overlay__ { + status = "okay"; + }; + }; + + fragment@2 { + target = <&i2c1>; + __overlay__ { + #address-cells = <1>; + #size-cells = <0>; + status = "okay"; + + wm8731@1a { + #sound-dai-cells = <0>; + compatible = "wlf,wm8731"; + reg = <0x1a>; + status = "okay"; + }; + }; + }; +}; --- linux-raspi2-4.2.0.orig/arch/arm/boot/dts/overlays/rpi-sense-overlay.dts +++ linux-raspi2-4.2.0/arch/arm/boot/dts/overlays/rpi-sense-overlay.dts @@ -0,0 +1,47 @@ +// rpi-sense HAT +/dts-v1/; +/plugin/; + +/ { + compatible = "brcm,bcm2708", "brcm,bcm2709"; + + fragment@0 { + target = <&i2c1>; + __overlay__ { + #address-cells = <1>; + #size-cells = <0>; + status = "okay"; + + rpi-sense@46 { + compatible = "rpi,rpi-sense"; + reg = <0x46>; + keys-int-gpios = <&gpio 23 1>; + status = "okay"; + }; + + lsm9ds1-magn@1c { + compatible = "st,lsm9ds1-magn"; + reg = <0x1c>; + status = "okay"; + }; + + lsm9ds1-accel6a { + compatible = "st,lsm9ds1-accel"; + reg = <0x6a>; + status = "okay"; + }; + + lps25h-press@5c { + compatible = "st,lps25h-press"; + reg = <0x5c>; + status = "okay"; + }; + + hts221-humid@5f { + compatible = "st,hts221-humid"; + reg = <0x5f>; + status = "okay"; + }; + }; + }; +}; --- linux-raspi2-4.2.0.orig/arch/arm/boot/dts/overlays/sdhost-overlay.dts +++ linux-raspi2-4.2.0/arch/arm/boot/dts/overlays/sdhost-overlay.dts @@ -0,0 +1,56 @@ +/dts-v1/; +/plugin/; + +/{ + compatible = "brcm,bcm2708"; + + fragment@0 { + target = <&soc>; + __overlay__ { + #address-cells = <1>; + #size-cells = <1>; + + sdhost: sdhost@7e202000 { + compatible = "brcm,bcm2835-sdhost"; + reg = <0x7e202000 0x100>; + pinctrl-names = "default"; + pinctrl-0 = <&sdhost_pins>; + interrupts = <2 24>; + clocks = <&clk_core>; + dmas = <&dma 13>, + <&dma 13>; + dma-names = "tx", "rx"; + brcm,delay-after-stop = <0>; + brcm,overclock-50 = <0>; + brcm,pio-limit = <1>; + status = "okay"; + }; + }; + }; + + fragment@1 { + target = <&gpio>; + __overlay__ { + sdhost_pins: sdhost_pins { + brcm,pins = <48 49 50 51 52 53>; + brcm,function = <4>; /* alt0 */ + }; + }; + }; + + fragment@2 { + target = <&mmc>; + __overlay__ { + /* Find a way to disable the other driver */ + compatible = ""; + status = "disabled"; + }; + }; + + __overrides__ { + overclock_50 = <&sdhost>,"brcm,overclock-50:0"; + force_pio = <&sdhost>,"brcm,force-pio?"; + pio_limit = <&sdhost>,"brcm,pio-limit:0"; + debug = <&sdhost>,"brcm,debug?"; + }; +}; --- linux-raspi2-4.2.0.orig/arch/arm/boot/dts/overlays/sdio-overlay.dts +++ linux-raspi2-4.2.0/arch/arm/boot/dts/overlays/sdio-overlay.dts @@ -0,0 +1,29 @@ +/* Enable SDIO from MMC interface via GPIOs 22-27. Includes sdhost overlay. */ + +/include/ "sdhost-overlay.dts" + +/{ + compatible = "brcm,bcm2708"; + + fragment@3 { + target = <&mmc>; + __overlay__ { + compatible = "brcm,bcm2835-mmc"; + pinctrl-names = "default"; + pinctrl-0 = <&sdio_pins>; + non-removable; + status = "okay"; + }; + }; + + fragment@4 { + target = <&gpio>; + __overlay__ { + sdio_pins: sdio_pins { + brcm,pins = <22 23 24 25 26 27>; + brcm,function = <7 7 7 7 7 7>; /* ALT3 = SD1 */ + brcm,pull = <0 2 2 2 2 2>; + }; + }; + }; +}; --- linux-raspi2-4.2.0.orig/arch/arm/boot/dts/overlays/smi-dev-overlay.dts +++ linux-raspi2-4.2.0/arch/arm/boot/dts/overlays/smi-dev-overlay.dts @@ -0,0 +1,18 @@ +// Description: Overlay to enable character device interface for SMI. +// Author: Luke Wren + +/dts-v1/; +/plugin/; + +/{ + fragment@0 { + target = <&soc>; + __overlay__ { + smi_dev { + compatible = "brcm,bcm2835-smi-dev"; + smi_handle = <&smi>; + status = "okay"; + }; + }; + }; +}; --- linux-raspi2-4.2.0.orig/arch/arm/boot/dts/overlays/smi-nand-overlay.dts +++ linux-raspi2-4.2.0/arch/arm/boot/dts/overlays/smi-nand-overlay.dts @@ -0,0 +1,69 @@ +// Description: Overlay to enable NAND flash through +// the secondary memory interface +// Author: Luke Wren + +/dts-v1/; +/plugin/; + +/{ + compatible = "brcm,bcm2708"; + + fragment@0 { + target = <&smi>; + __overlay__ { + pinctrl-names = "default"; + pinctrl-0 = <&smi_pins>; + status = "okay"; + }; + }; + + fragment@1 { + target = <&soc>; + __overlay__ { + #address-cells = <1>; + #size-cells = <1>; + + nand: flash@0 { + compatible = "brcm,bcm2835-smi-nand"; + smi_handle = <&smi>; + #address-cells = <1>; + #size-cells = <1>; + status = "okay"; + + partition@0 { + label = "stage2"; + // 128k + reg = <0 0x20000>; + read-only; + }; + partition@1 { + label = "firmware"; + // 16M + reg = <0x20000 0x1000000>; + read-only; + }; + partition@2 { + label = "root"; + // 2G (will need to use 64 bit for >=4G) + reg = <0x1020000 0x80000000>; + }; + }; + }; + }; + + fragment@2 { + target = <&gpio>; + __overlay__ { + smi_pins: smi_pins { + brcm,pins = <0 1 2 3 4 5 6 7 8 9 10 11 + 12 13 14 15>; + /* Alt 1: SMI */ + brcm,function = <5 5 5 5 5 5 5 5 5 5 5 + 5 5 5 5 5>; + /* /CS, /WE and /OE are pulled high, as they are + generally active low signals */ + brcm,pull = <2 2 2 2 2 2 2 2 0 0 0 0 0 0 0 0>; + }; + }; + }; +}; --- linux-raspi2-4.2.0.orig/arch/arm/boot/dts/overlays/smi-overlay.dts +++ linux-raspi2-4.2.0/arch/arm/boot/dts/overlays/smi-overlay.dts @@ -0,0 +1,37 @@ +// Description: Overlay to enable the secondary memory interface peripheral +// Author: Luke Wren + +/dts-v1/; +/plugin/; + +/{ + compatible = "brcm,bcm2708"; + + fragment@0 { + target = <&smi>; + __overlay__ { + pinctrl-names = "default"; + pinctrl-0 = <&smi_pins>; + status = "okay"; + }; + }; + + fragment@1 { + target = <&gpio>; + __overlay__ { + smi_pins: smi_pins { + /* Don't configure the top two address bits, as + these are already used as ID_SD and ID_SC */ + brcm,pins = <2 3 4 5 6 7 8 9 10 11 12 13 14 15 + 16 17 18 19 20 21 22 23 24 25>; + /* Alt 0: SMI */ + brcm,function = <5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 + 5 5 5 5 5 5 5 5 5>; + /* /CS, /WE and /OE are pulled high, as they are + generally active low signals */ + brcm,pull = <2 2 2 2 2 2 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0>; + }; + }; + }; +}; --- linux-raspi2-4.2.0.orig/arch/arm/boot/dts/overlays/spi-bcm2708-overlay.dts +++ linux-raspi2-4.2.0/arch/arm/boot/dts/overlays/spi-bcm2708-overlay.dts @@ -0,0 +1,25 @@ +/* + * Device tree overlay to use spi-bcm2708 + */ + +/dts-v1/; +/plugin/; + +/ { + compatible = "brcm,bcm2835", "brcm,bcm2836", "brcm,bcm2708", "brcm,bcm2709"; + /* setting up compatiblity to allow loading the spi-bcm2835 driver */ + fragment@0 { + target = <&spi0>; + __overlay__ { + status = "okay"; + compatible = "brcm,bcm2708-spi"; + }; + }; + + fragment@1 { + target = <&spi0_cs_pins>; + __overlay__ { + brcm,function = <4>; /* alt0 */ + }; + }; +}; --- linux-raspi2-4.2.0.orig/arch/arm/boot/dts/overlays/spi-bcm2835-overlay.dts +++ linux-raspi2-4.2.0/arch/arm/boot/dts/overlays/spi-bcm2835-overlay.dts @@ -0,0 +1,18 @@ +/* + * Device tree overlay for spi-bcm2835 + */ + +/dts-v1/; +/plugin/; + +/ { + compatible = "brcm,bcm2835", "brcm,bcm2836", "brcm,bcm2708", "brcm,bcm2709"; + /* setting up compatiblity to allow loading the spi-bcm2835 driver */ + fragment@0 { + target = <&spi0>; + __overlay__ { + status = "okay"; + compatible = "brcm,bcm2835-spi"; + }; + }; +}; --- linux-raspi2-4.2.0.orig/arch/arm/boot/dts/overlays/spi-gpio35-39-overlay.dts +++ linux-raspi2-4.2.0/arch/arm/boot/dts/overlays/spi-gpio35-39-overlay.dts @@ -0,0 +1,31 @@ +/* + * Device tree overlay to move spi0 to gpio 35 to 39 on CM + */ + +/dts-v1/; +/plugin/; + +/ { + compatible = "brcm,bcm2835", "brcm,bcm2836", "brcm,bcm2708", "brcm,bcm2709"; + + fragment@0 { + target = <&spi0>; + __overlay__ { + cs-gpios = <&gpio 36 1>, <&gpio 35 1>; + }; + }; + + fragment@1 { + target = <&spi0_cs_pins>; + __overlay__ { + bcrm,pins = <36 35>; + }; + }; + + fragment@2 { + target = <&spi0_pins>; + __overlay__ { + bcrm,pins = <37 38 39>; + }; + }; +}; --- linux-raspi2-4.2.0.orig/arch/arm/boot/dts/overlays/tinylcd35-overlay.dts +++ linux-raspi2-4.2.0/arch/arm/boot/dts/overlays/tinylcd35-overlay.dts @@ -0,0 +1,216 @@ +/* + * tinylcd35-overlay.dts + * + * ------------------------------------------------- + * www.tinlylcd.com + * ------------------------------------------------- + * Device---Driver-----BUS GPIO's + * display tinylcd35 spi0.0 25 24 18 + * touch ads7846 spi0.1 5 + * rtc ds1307 i2c1-0068 + * rtc pcf8563 i2c1-0051 + * keypad gpio-keys --------- 17 22 27 23 28 + * + * + * TinyLCD.com 3.5 inch TFT + * + * Version 001 + * 5/3/2015 -- Noralf Trønnes Initial Device tree framework + * 10/3/2015 -- tinylcd@gmail.com added ds1307 support. + * + */ + +/dts-v1/; +/plugin/; + +/ { + compatible = "brcm,bcm2835", "brcm,bcm2708", "brcm,bcm2709"; + + fragment@0 { + target = <&spi0>; + __overlay__ { + status = "okay"; + + spidev@0{ + status = "disabled"; + }; + + spidev@1{ + status = "disabled"; + }; + }; + }; + + fragment@1 { + target = <&gpio>; + __overlay__ { + tinylcd35_pins: tinylcd35_pins { + brcm,pins = <25 24 18>; + brcm,function = <1>; /* out */ + }; + tinylcd35_ts_pins: tinylcd35_ts_pins { + brcm,pins = <5>; + brcm,function = <0>; /* in */ + }; + keypad_pins: keypad_pins { + brcm,pins = <4 17 22 23 27>; + brcm,function = <0>; /* in */ + brcm,pull = <1>; /* down */ + }; + }; + }; + + fragment@2 { + target = <&spi0>; + __overlay__ { + /* needed to avoid dtc warning */ + #address-cells = <1>; + #size-cells = <0>; + + tinylcd35: tinylcd35@0{ + compatible = "neosec,tinylcd"; + reg = <0>; + pinctrl-names = "default"; + pinctrl-0 = <&tinylcd35_pins>, + <&tinylcd35_ts_pins>; + + spi-max-frequency = <48000000>; + rotate = <270>; + fps = <20>; + bgr; + buswidth = <8>; + reset-gpios = <&gpio 25 0>; + dc-gpios = <&gpio 24 0>; + led-gpios = <&gpio 18 1>; + debug = <0>; + + init = <0x10000B0 0x80 + 0x10000C0 0x0A 0x0A + 0x10000C1 0x01 0x01 + 0x10000C2 0x33 + 0x10000C5 0x00 0x42 0x80 + 0x10000B1 0xD0 0x11 + 0x10000B4 0x02 + 0x10000B6 0x00 0x22 0x3B + 0x10000B7 0x07 + 0x1000036 0x58 + 0x10000F0 0x36 0xA5 0xD3 + 0x10000E5 0x80 + 0x10000E5 0x01 + 0x10000B3 0x00 + 0x10000E5 0x00 + 0x10000F0 0x36 0xA5 0x53 + 0x10000E0 0x00 0x35 0x33 0x00 0x00 0x00 0x00 0x35 0x33 0x00 0x00 0x00 + 0x100003A 0x55 + 0x1000011 + 0x2000001 + 0x1000029>; + }; + + tinylcd35_ts: tinylcd35_ts@1 { + compatible = "ti,ads7846"; + reg = <1>; + status = "disabled"; + + spi-max-frequency = <2000000>; + interrupts = <5 2>; /* high-to-low edge triggered */ + interrupt-parent = <&gpio>; + pendown-gpio = <&gpio 5 0>; + ti,x-plate-ohms = /bits/ 16 <100>; + ti,pressure-max = /bits/ 16 <255>; + }; + }; + }; + + /* RTC */ + + fragment@3 { + target = <&i2c1>; + __overlay__ { + #address-cells = <1>; + #size-cells = <0>; + + pcf8563: pcf8563@51 { + compatible = "nxp,pcf8563"; + reg = <0x51>; + status = "disabled"; + }; + }; + }; + + fragment@4 { + target = <&i2c1>; + __overlay__ { + #address-cells = <1>; + #size-cells = <0>; + + ds1307: ds1307@68 { + compatible = "maxim,ds1307"; + reg = <0x68>; + status = "disabled"; + }; + }; + }; + + /* + * Values for input event code is found under the + * 'Keys and buttons' heading in include/uapi/linux/input.h + */ + fragment@5 { + target-path = "/soc"; + __overlay__ { + keypad: keypad { + compatible = "gpio-keys"; + #address-cells = <1>; + #size-cells = <0>; + pinctrl-names = "default"; + pinctrl-0 = <&keypad_pins>; + status = "disabled"; + autorepeat; + + button@17 { + label = "GPIO KEY_UP"; + linux,code = <103>; + gpios = <&gpio 17 0>; + }; + button@22 { + label = "GPIO KEY_DOWN"; + linux,code = <108>; + gpios = <&gpio 22 0>; + }; + button@27 { + label = "GPIO KEY_LEFT"; + linux,code = <105>; + gpios = <&gpio 27 0>; + }; + button@23 { + label = "GPIO KEY_RIGHT"; + linux,code = <106>; + gpios = <&gpio 23 0>; + }; + button@4 { + label = "GPIO KEY_ENTER"; + linux,code = <28>; + gpios = <&gpio 4 0>; + }; + }; + }; + }; + + __overrides__ { + speed = <&tinylcd35>,"spi-max-frequency:0"; + rotate = <&tinylcd35>,"rotate:0"; + fps = <&tinylcd35>,"fps:0"; + debug = <&tinylcd35>,"debug:0"; + touch = <&tinylcd35_ts>,"status"; + touchgpio = <&tinylcd35_ts_pins>,"brcm,pins:0", + <&tinylcd35_ts>,"interrupts:0", + <&tinylcd35_ts>,"pendown-gpio:4"; + xohms = <&tinylcd35_ts>,"ti,x-plate-ohms;0"; + rtc-pcf = <&i2c1>,"status", + <&pcf8563>,"status"; + rtc-ds = <&i2c1>,"status", + <&ds1307>,"status"; + keypad = <&keypad>,"status"; + }; +}; --- linux-raspi2-4.2.0.orig/arch/arm/boot/dts/overlays/uart1-overlay.dts +++ linux-raspi2-4.2.0/arch/arm/boot/dts/overlays/uart1-overlay.dts @@ -0,0 +1,38 @@ +/dts-v1/; +/plugin/; + +/{ + compatible = "brcm,bcm2708"; + + fragment@0 { + target = <&uart1>; + __overlay__ { + pinctrl-names = "default"; + pinctrl-0 = <&uart1_pins>; + status = "okay"; + }; + }; + + fragment@1 { + target = <&gpio>; + __overlay__ { + uart1_pins: uart1_pins { + brcm,pins = <14 15>; + brcm,function = <2>; /* alt5 */ + brcm,pull = <0 2>; + }; + }; + }; + + fragment@2 { + target-path = "/chosen"; + __overlay__ { + bootargs = "8250.nr_uarts=1"; + }; + }; + + __overrides__ { + txd1_pin = <&uart1_pins>,"brcm,pins:0"; + rxd1_pin = <&uart1_pins>,"brcm,pins:4"; + }; +}; --- linux-raspi2-4.2.0.orig/arch/arm/boot/dts/overlays/vga666-overlay.dts +++ linux-raspi2-4.2.0/arch/arm/boot/dts/overlays/vga666-overlay.dts @@ -0,0 +1,30 @@ +/dts-v1/; +/plugin/; + +/{ + compatible = "brcm,bcm2708"; + + // There is no VGA driver module, but we need a platform device + // node (that doesn't already use pinctrl) to hang the pinctrl + // reference on - leds will do + + fragment@0 { + target = <&leds>; + __overlay__ { + pinctrl-names = "default"; + pinctrl-0 = <&vga666_pins>; + }; + }; + + fragment@1 { + target = <&gpio>; + __overlay__ { + vga666_pins: vga666_pins { + brcm,pins = <2 3 4 5 6 7 8 9 10 11 12 + 13 14 15 16 17 18 19 20 21>; + brcm,function = <6>; /* alt2 */ + brcm,pull = <0>; /* no pull */ + }; + }; + }; +}; --- linux-raspi2-4.2.0.orig/arch/arm/boot/dts/overlays/w1-gpio-overlay.dts +++ linux-raspi2-4.2.0/arch/arm/boot/dts/overlays/w1-gpio-overlay.dts @@ -0,0 +1,39 @@ +// Definitions for w1-gpio module (without external pullup) +/dts-v1/; +/plugin/; + +/ { + compatible = "brcm,bcm2708"; + + fragment@0 { + target-path = "/"; + __overlay__ { + + w1: onewire@0 { + compatible = "w1-gpio"; + pinctrl-names = "default"; + pinctrl-0 = <&w1_pins>; + gpios = <&gpio 4 0>; + rpi,parasitic-power = <0>; + status = "okay"; + }; + }; + }; + + fragment@1 { + target = <&gpio>; + __overlay__ { + w1_pins: w1_pins { + brcm,pins = <4>; + brcm,function = <0>; // in (initially) + brcm,pull = <0>; // off + }; + }; + }; + + __overrides__ { + gpiopin = <&w1>,"gpios:4", + <&w1_pins>,"brcm,pins:0"; + pullup = <&w1>,"rpi,parasitic-power:0"; + }; +}; --- linux-raspi2-4.2.0.orig/arch/arm/boot/dts/overlays/w1-gpio-pullup-overlay.dts +++ linux-raspi2-4.2.0/arch/arm/boot/dts/overlays/w1-gpio-pullup-overlay.dts @@ -0,0 +1,41 @@ +// Definitions for w1-gpio module (with external pullup) +/dts-v1/; +/plugin/; + +/ { + compatible = "brcm,bcm2708"; + + fragment@0 { + target-path = "/"; + __overlay__ { + + w1: onewire@0 { + compatible = "w1-gpio"; + pinctrl-names = "default"; + pinctrl-0 = <&w1_pins>; + gpios = <&gpio 4 0>, <&gpio 5 1>; + rpi,parasitic-power = <0>; + status = "okay"; + }; + }; + }; + + fragment@1 { + target = <&gpio>; + __overlay__ { + w1_pins: w1_pins { + brcm,pins = <4 5>; + brcm,function = <0 1>; // in out + brcm,pull = <0 0>; // off off + }; + }; + }; + + __overrides__ { + gpiopin = <&w1>,"gpios:4", + <&w1_pins>,"brcm,pins:0"; + extpullup = <&w1>,"gpios:16", + <&w1_pins>,"brcm,pins:4"; + pullup = <&w1>,"rpi,parasitic-power:0"; + }; +}; --- linux-raspi2-4.2.0.orig/arch/arm/boot/dts/rk3288.dtsi +++ linux-raspi2-4.2.0/arch/arm/boot/dts/rk3288.dtsi @@ -626,7 +626,7 @@ compatible = "rockchip,rk3288-wdt", "snps,dw-wdt"; reg = <0xff800000 0x100>; clocks = <&cru PCLK_WDT>; - interrupts = ; + interrupts = ; status = "disabled"; }; --- linux-raspi2-4.2.0.orig/arch/arm/boot/dts/sama5d4.dtsi +++ linux-raspi2-4.2.0/arch/arm/boot/dts/sama5d4.dtsi @@ -939,11 +939,11 @@ reg = <0xf8018000 0x4000>; interrupts = <33 IRQ_TYPE_LEVEL_HIGH 6>; dmas = <&dma1 - (AT91_XDMAC_DT_MEM_IF(0) | AT91_XDMAC_DT_PER_IF(1)) - AT91_XDMAC_DT_PERID(4)>, + (AT91_XDMAC_DT_MEM_IF(0) | AT91_XDMAC_DT_PER_IF(1) + | AT91_XDMAC_DT_PERID(4))>, <&dma1 - (AT91_XDMAC_DT_MEM_IF(0) | AT91_XDMAC_DT_PER_IF(1)) - AT91_XDMAC_DT_PERID(5)>; + (AT91_XDMAC_DT_MEM_IF(0) | AT91_XDMAC_DT_PER_IF(1) + | AT91_XDMAC_DT_PERID(5))>; dma-names = "tx", "rx"; pinctrl-names = "default"; pinctrl-0 = <&pinctrl_i2c1>; --- linux-raspi2-4.2.0.orig/arch/arm/boot/dts/ste-hrefv60plus.dtsi +++ linux-raspi2-4.2.0/arch/arm/boot/dts/ste-hrefv60plus.dtsi @@ -56,7 +56,7 @@ /* VMMCI level-shifter enable */ default_hrefv60_cfg2 { pins = "GPIO169_D22"; - ste,config = <&gpio_out_lo>; + ste,config = <&gpio_out_hi>; }; /* VMMCI level-shifter voltage select */ default_hrefv60_cfg3 { --- linux-raspi2-4.2.0.orig/arch/arm/boot/dts/sun6i-a31-hummingbird.dts +++ linux-raspi2-4.2.0/arch/arm/boot/dts/sun6i-a31-hummingbird.dts @@ -184,18 +184,18 @@ regulator-name = "vcc-3v0"; }; - vdd_cpu: dcdc2 { + vdd_gpu: dcdc2 { regulator-always-on; regulator-min-microvolt = <700000>; regulator-max-microvolt = <1320000>; - regulator-name = "vdd-cpu"; + regulator-name = "vdd-gpu"; }; - vdd_gpu: dcdc3 { + vdd_cpu: dcdc3 { regulator-always-on; regulator-min-microvolt = <700000>; regulator-max-microvolt = <1320000>; - regulator-name = "vdd-gpu"; + regulator-name = "vdd-cpu"; }; vdd_sys_dll: dcdc4 { --- linux-raspi2-4.2.0.orig/arch/arm/boot/dts/sun7i-a20.dtsi +++ linux-raspi2-4.2.0/arch/arm/boot/dts/sun7i-a20.dtsi @@ -107,7 +107,7 @@ 720000 1200000 528000 1100000 312000 1000000 - 144000 900000 + 144000 1000000 >; #cooling-cells = <2>; cooling-min-level = <0>; --- linux-raspi2-4.2.0.orig/arch/arm/common/edma.c +++ linux-raspi2-4.2.0/arch/arm/common/edma.c @@ -406,7 +406,8 @@ BIT(slot)); if (edma_cc[ctlr]->intr_data[channel].callback) edma_cc[ctlr]->intr_data[channel].callback( - channel, EDMA_DMA_COMPLETE, + EDMA_CTLR_CHAN(ctlr, channel), + EDMA_DMA_COMPLETE, edma_cc[ctlr]->intr_data[channel].data); } } while (sh_ipr); @@ -460,7 +461,8 @@ if (edma_cc[ctlr]->intr_data[k]. callback) { edma_cc[ctlr]->intr_data[k]. - callback(k, + callback( + EDMA_CTLR_CHAN(ctlr, k), EDMA_DMA_CC_ERROR, edma_cc[ctlr]->intr_data [k].data); --- linux-raspi2-4.2.0.orig/arch/arm/configs/bcm2709_defconfig +++ linux-raspi2-4.2.0/arch/arm/configs/bcm2709_defconfig @@ -0,0 +1,1253 @@ +# CONFIG_ARM_PATCH_PHYS_VIRT is not set +CONFIG_PHYS_OFFSET=0 +CONFIG_LOCALVERSION="-v7" +# CONFIG_LOCALVERSION_AUTO is not set +CONFIG_SYSVIPC=y +CONFIG_POSIX_MQUEUE=y +CONFIG_FHANDLE=y +CONFIG_NO_HZ=y +CONFIG_HIGH_RES_TIMERS=y +CONFIG_BSD_PROCESS_ACCT=y +CONFIG_BSD_PROCESS_ACCT_V3=y +CONFIG_TASKSTATS=y +CONFIG_TASK_DELAY_ACCT=y +CONFIG_TASK_XACCT=y +CONFIG_TASK_IO_ACCOUNTING=y +CONFIG_IKCONFIG=m +CONFIG_IKCONFIG_PROC=y +CONFIG_CGROUP_FREEZER=y +CONFIG_CGROUP_DEVICE=y +CONFIG_CPUSETS=y +CONFIG_CGROUP_CPUACCT=y +CONFIG_MEMCG=y +CONFIG_BLK_CGROUP=y +CONFIG_NAMESPACES=y +CONFIG_SCHED_AUTOGROUP=y +CONFIG_BLK_DEV_INITRD=y +CONFIG_EMBEDDED=y +# CONFIG_COMPAT_BRK is not set +CONFIG_PROFILING=y +CONFIG_OPROFILE=m +CONFIG_KPROBES=y +CONFIG_JUMP_LABEL=y +CONFIG_MODULES=y +CONFIG_MODULE_UNLOAD=y +CONFIG_MODVERSIONS=y +CONFIG_MODULE_SRCVERSION_ALL=y +CONFIG_BLK_DEV_THROTTLING=y +CONFIG_PARTITION_ADVANCED=y +CONFIG_MAC_PARTITION=y +CONFIG_CFQ_GROUP_IOSCHED=y +CONFIG_ARCH_BCM2709=y +CONFIG_BCM2709_DT=y +# CONFIG_CACHE_L2X0 is not set +CONFIG_SMP=y +CONFIG_HAVE_ARM_ARCH_TIMER=y +CONFIG_VMSPLIT_2G=y +CONFIG_PREEMPT=y +CONFIG_AEABI=y +CONFIG_OABI_COMPAT=y +CONFIG_CLEANCACHE=y +CONFIG_FRONTSWAP=y +CONFIG_CMA=y +CONFIG_ZSMALLOC=m +CONFIG_PGTABLE_MAPPING=y +CONFIG_UACCESS_WITH_MEMCPY=y +CONFIG_SECCOMP=y +CONFIG_ZBOOT_ROM_TEXT=0x0 +CONFIG_ZBOOT_ROM_BSS=0x0 +CONFIG_CMDLINE="console=ttyAMA0,115200 kgdboc=ttyAMA0,115200 root=/dev/mmcblk0p2 rootfstype=ext4 rootwait" +CONFIG_CPU_FREQ=y +CONFIG_CPU_FREQ_STAT=m +CONFIG_CPU_FREQ_STAT_DETAILS=y +CONFIG_CPU_FREQ_DEFAULT_GOV_POWERSAVE=y +CONFIG_CPU_FREQ_GOV_PERFORMANCE=y +CONFIG_CPU_FREQ_GOV_USERSPACE=y +CONFIG_CPU_FREQ_GOV_ONDEMAND=y +CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y +CONFIG_VFP=y +CONFIG_NEON=y +CONFIG_KERNEL_MODE_NEON=y +CONFIG_BINFMT_MISC=m +# CONFIG_SUSPEND is not set +CONFIG_NET=y +CONFIG_PACKET=y +CONFIG_UNIX=y +CONFIG_XFRM_USER=y +CONFIG_NET_KEY=m +CONFIG_INET=y +CONFIG_IP_MULTICAST=y +CONFIG_IP_ADVANCED_ROUTER=y +CONFIG_IP_MULTIPLE_TABLES=y +CONFIG_IP_ROUTE_MULTIPATH=y +CONFIG_IP_ROUTE_VERBOSE=y +CONFIG_IP_PNP=y +CONFIG_IP_PNP_DHCP=y +CONFIG_IP_PNP_RARP=y +CONFIG_NET_IPIP=m +CONFIG_NET_IPGRE_DEMUX=m +CONFIG_NET_IPGRE=m +CONFIG_IP_MROUTE=y +CONFIG_IP_MROUTE_MULTIPLE_TABLES=y +CONFIG_IP_PIMSM_V1=y +CONFIG_IP_PIMSM_V2=y +CONFIG_SYN_COOKIES=y +CONFIG_INET_AH=m +CONFIG_INET_ESP=m +CONFIG_INET_IPCOMP=m +CONFIG_INET_XFRM_MODE_TRANSPORT=m +CONFIG_INET_XFRM_MODE_TUNNEL=m +CONFIG_INET_XFRM_MODE_BEET=m +CONFIG_INET_LRO=m +CONFIG_INET_DIAG=m +CONFIG_INET6_AH=m +CONFIG_INET6_ESP=m +CONFIG_INET6_IPCOMP=m +CONFIG_IPV6_TUNNEL=m +CONFIG_IPV6_MULTIPLE_TABLES=y +CONFIG_IPV6_MROUTE=y +CONFIG_IPV6_MROUTE_MULTIPLE_TABLES=y +CONFIG_IPV6_PIMSM_V2=y +CONFIG_NETFILTER=y +CONFIG_NF_CONNTRACK=m +CONFIG_NF_CONNTRACK_ZONES=y +CONFIG_NF_CONNTRACK_EVENTS=y +CONFIG_NF_CONNTRACK_TIMESTAMP=y +CONFIG_NF_CT_PROTO_DCCP=m +CONFIG_NF_CT_PROTO_UDPLITE=m +CONFIG_NF_CONNTRACK_AMANDA=m +CONFIG_NF_CONNTRACK_FTP=m +CONFIG_NF_CONNTRACK_H323=m +CONFIG_NF_CONNTRACK_IRC=m +CONFIG_NF_CONNTRACK_NETBIOS_NS=m +CONFIG_NF_CONNTRACK_SNMP=m +CONFIG_NF_CONNTRACK_PPTP=m +CONFIG_NF_CONNTRACK_SANE=m +CONFIG_NF_CONNTRACK_SIP=m +CONFIG_NF_CONNTRACK_TFTP=m +CONFIG_NF_CT_NETLINK=m +CONFIG_NETFILTER_XT_SET=m +CONFIG_NETFILTER_XT_TARGET_CHECKSUM=m +CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m +CONFIG_NETFILTER_XT_TARGET_CONNMARK=m +CONFIG_NETFILTER_XT_TARGET_DSCP=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_NFLOG=m +CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m +CONFIG_NETFILTER_XT_TARGET_NOTRACK=m +CONFIG_NETFILTER_XT_TARGET_TEE=m +CONFIG_NETFILTER_XT_TARGET_TPROXY=m +CONFIG_NETFILTER_XT_TARGET_TRACE=m +CONFIG_NETFILTER_XT_TARGET_TCPMSS=m +CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP=m +CONFIG_NETFILTER_XT_MATCH_ADDRTYPE=m +CONFIG_NETFILTER_XT_MATCH_BPF=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_ESP=m +CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m +CONFIG_NETFILTER_XT_MATCH_HELPER=m +CONFIG_NETFILTER_XT_MATCH_IPRANGE=m +CONFIG_NETFILTER_XT_MATCH_IPVS=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_POLICY=m +CONFIG_NETFILTER_XT_MATCH_PHYSDEV=m +CONFIG_NETFILTER_XT_MATCH_PKTTYPE=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_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_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_IPPORT=m +CONFIG_IP_SET_HASH_IPPORTIP=m +CONFIG_IP_SET_HASH_IPPORTNET=m +CONFIG_IP_SET_HASH_NET=m +CONFIG_IP_SET_HASH_NETPORT=m +CONFIG_IP_SET_HASH_NETIFACE=m +CONFIG_IP_SET_LIST_SET=m +CONFIG_IP_VS=m +CONFIG_IP_VS_PROTO_TCP=y +CONFIG_IP_VS_PROTO_UDP=y +CONFIG_IP_VS_PROTO_ESP=y +CONFIG_IP_VS_PROTO_AH=y +CONFIG_IP_VS_PROTO_SCTP=y +CONFIG_IP_VS_RR=m +CONFIG_IP_VS_WRR=m +CONFIG_IP_VS_LC=m +CONFIG_IP_VS_WLC=m +CONFIG_IP_VS_LBLC=m +CONFIG_IP_VS_LBLCR=m +CONFIG_IP_VS_DH=m +CONFIG_IP_VS_SH=m +CONFIG_IP_VS_SED=m +CONFIG_IP_VS_NQ=m +CONFIG_IP_VS_FTP=m +CONFIG_IP_VS_PE_SIP=m +CONFIG_NF_CONNTRACK_IPV4=m +CONFIG_IP_NF_IPTABLES=m +CONFIG_IP_NF_MATCH_AH=m +CONFIG_IP_NF_MATCH_ECN=m +CONFIG_IP_NF_MATCH_TTL=m +CONFIG_IP_NF_FILTER=m +CONFIG_IP_NF_TARGET_REJECT=m +CONFIG_IP_NF_NAT=m +CONFIG_IP_NF_TARGET_MASQUERADE=m +CONFIG_IP_NF_TARGET_NETMAP=m +CONFIG_IP_NF_TARGET_REDIRECT=m +CONFIG_IP_NF_MANGLE=m +CONFIG_IP_NF_TARGET_CLUSTERIP=m +CONFIG_IP_NF_TARGET_ECN=m +CONFIG_IP_NF_TARGET_TTL=m +CONFIG_IP_NF_RAW=m +CONFIG_IP_NF_ARPTABLES=m +CONFIG_IP_NF_ARPFILTER=m +CONFIG_IP_NF_ARP_MANGLE=m +CONFIG_NF_CONNTRACK_IPV6=m +CONFIG_IP6_NF_IPTABLES=m +CONFIG_IP6_NF_MATCH_AH=m +CONFIG_IP6_NF_MATCH_EUI64=m +CONFIG_IP6_NF_MATCH_FRAG=m +CONFIG_IP6_NF_MATCH_OPTS=m +CONFIG_IP6_NF_MATCH_HL=m +CONFIG_IP6_NF_MATCH_IPV6HEADER=m +CONFIG_IP6_NF_MATCH_MH=m +CONFIG_IP6_NF_MATCH_RT=m +CONFIG_IP6_NF_TARGET_HL=m +CONFIG_IP6_NF_FILTER=m +CONFIG_IP6_NF_TARGET_REJECT=m +CONFIG_IP6_NF_MANGLE=m +CONFIG_IP6_NF_RAW=m +CONFIG_IP6_NF_NAT=m +CONFIG_IP6_NF_TARGET_MASQUERADE=m +CONFIG_IP6_NF_TARGET_NPT=m +CONFIG_BRIDGE_NF_EBTABLES=m +CONFIG_BRIDGE_EBT_BROUTE=m +CONFIG_BRIDGE_EBT_T_FILTER=m +CONFIG_BRIDGE_EBT_T_NAT=m +CONFIG_BRIDGE_EBT_802_3=m +CONFIG_BRIDGE_EBT_AMONG=m +CONFIG_BRIDGE_EBT_ARP=m +CONFIG_BRIDGE_EBT_IP=m +CONFIG_BRIDGE_EBT_IP6=m +CONFIG_BRIDGE_EBT_LIMIT=m +CONFIG_BRIDGE_EBT_MARK=m +CONFIG_BRIDGE_EBT_PKTTYPE=m +CONFIG_BRIDGE_EBT_STP=m +CONFIG_BRIDGE_EBT_VLAN=m +CONFIG_BRIDGE_EBT_ARPREPLY=m +CONFIG_BRIDGE_EBT_DNAT=m +CONFIG_BRIDGE_EBT_MARK_T=m +CONFIG_BRIDGE_EBT_REDIRECT=m +CONFIG_BRIDGE_EBT_SNAT=m +CONFIG_BRIDGE_EBT_LOG=m +CONFIG_BRIDGE_EBT_NFLOG=m +CONFIG_SCTP_COOKIE_HMAC_SHA1=y +CONFIG_ATM=m +CONFIG_L2TP=m +CONFIG_L2TP_V3=y +CONFIG_L2TP_IP=m +CONFIG_L2TP_ETH=m +CONFIG_BRIDGE=m +CONFIG_VLAN_8021Q=m +CONFIG_VLAN_8021Q_GVRP=y +CONFIG_ATALK=m +CONFIG_6LOWPAN=m +CONFIG_IEEE802154=m +CONFIG_IEEE802154_6LOWPAN=m +CONFIG_MAC802154=m +CONFIG_NET_SCHED=y +CONFIG_NET_SCH_CBQ=m +CONFIG_NET_SCH_HTB=m +CONFIG_NET_SCH_HFSC=m +CONFIG_NET_SCH_PRIO=m +CONFIG_NET_SCH_MULTIQ=m +CONFIG_NET_SCH_RED=m +CONFIG_NET_SCH_SFB=m +CONFIG_NET_SCH_SFQ=m +CONFIG_NET_SCH_TEQL=m +CONFIG_NET_SCH_TBF=m +CONFIG_NET_SCH_GRED=m +CONFIG_NET_SCH_DSMARK=m +CONFIG_NET_SCH_NETEM=m +CONFIG_NET_SCH_DRR=m +CONFIG_NET_SCH_MQPRIO=m +CONFIG_NET_SCH_CHOKE=m +CONFIG_NET_SCH_QFQ=m +CONFIG_NET_SCH_CODEL=m +CONFIG_NET_SCH_FQ_CODEL=m +CONFIG_NET_SCH_INGRESS=m +CONFIG_NET_SCH_PLUG=m +CONFIG_NET_CLS_BASIC=m +CONFIG_NET_CLS_TCINDEX=m +CONFIG_NET_CLS_ROUTE4=m +CONFIG_NET_CLS_FW=m +CONFIG_NET_CLS_U32=m +CONFIG_CLS_U32_MARK=y +CONFIG_NET_CLS_RSVP=m +CONFIG_NET_CLS_RSVP6=m +CONFIG_NET_CLS_FLOW=m +CONFIG_NET_CLS_CGROUP=m +CONFIG_NET_EMATCH=y +CONFIG_NET_EMATCH_CMP=m +CONFIG_NET_EMATCH_NBYTE=m +CONFIG_NET_EMATCH_U32=m +CONFIG_NET_EMATCH_META=m +CONFIG_NET_EMATCH_TEXT=m +CONFIG_NET_EMATCH_IPSET=m +CONFIG_NET_CLS_ACT=y +CONFIG_NET_ACT_POLICE=m +CONFIG_NET_ACT_GACT=m +CONFIG_GACT_PROB=y +CONFIG_NET_ACT_MIRRED=m +CONFIG_NET_ACT_IPT=m +CONFIG_NET_ACT_NAT=m +CONFIG_NET_ACT_PEDIT=m +CONFIG_NET_ACT_SIMP=m +CONFIG_NET_ACT_SKBEDIT=m +CONFIG_NET_ACT_CSUM=m +CONFIG_BATMAN_ADV=m +CONFIG_OPENVSWITCH=m +CONFIG_NET_PKTGEN=m +CONFIG_HAMRADIO=y +CONFIG_AX25=m +CONFIG_NETROM=m +CONFIG_ROSE=m +CONFIG_MKISS=m +CONFIG_6PACK=m +CONFIG_BPQETHER=m +CONFIG_BAYCOM_SER_FDX=m +CONFIG_BAYCOM_SER_HDX=m +CONFIG_YAM=m +CONFIG_CAN=m +CONFIG_CAN_VCAN=m +CONFIG_CAN_MCP251X=m +CONFIG_IRDA=m +CONFIG_IRLAN=m +CONFIG_IRNET=m +CONFIG_IRCOMM=m +CONFIG_IRDA_ULTRA=y +CONFIG_IRDA_CACHE_LAST_LSAP=y +CONFIG_IRDA_FAST_RR=y +CONFIG_IRTTY_SIR=m +CONFIG_KINGSUN_DONGLE=m +CONFIG_KSDAZZLE_DONGLE=m +CONFIG_KS959_DONGLE=m +CONFIG_USB_IRDA=m +CONFIG_SIGMATEL_FIR=m +CONFIG_MCS_FIR=m +CONFIG_BT=m +CONFIG_BT_RFCOMM=m +CONFIG_BT_RFCOMM_TTY=y +CONFIG_BT_BNEP=m +CONFIG_BT_BNEP_MC_FILTER=y +CONFIG_BT_BNEP_PROTO_FILTER=y +CONFIG_BT_HIDP=m +CONFIG_BT_6LOWPAN=m +CONFIG_BT_HCIBTUSB=m +CONFIG_BT_HCIBCM203X=m +CONFIG_BT_HCIBPA10X=m +CONFIG_BT_HCIBFUSB=m +CONFIG_BT_HCIVHCI=m +CONFIG_BT_MRVL=m +CONFIG_BT_MRVL_SDIO=m +CONFIG_BT_ATH3K=m +CONFIG_BT_WILINK=m +CONFIG_MAC80211=m +CONFIG_MAC80211_MESH=y +CONFIG_WIMAX=m +CONFIG_RFKILL=m +CONFIG_RFKILL_INPUT=y +CONFIG_NET_9P=m +CONFIG_NFC=m +CONFIG_NFC_PN533=m +CONFIG_DEVTMPFS=y +CONFIG_DEVTMPFS_MOUNT=y +CONFIG_DMA_CMA=y +CONFIG_CMA_SIZE_MBYTES=5 +CONFIG_MTD=m +CONFIG_MTD_BLOCK=m +CONFIG_MTD_NAND=m +CONFIG_MTD_UBI=m +CONFIG_ZRAM=m +CONFIG_ZRAM_LZ4_COMPRESS=y +CONFIG_BLK_DEV_LOOP=y +CONFIG_BLK_DEV_CRYPTOLOOP=m +CONFIG_BLK_DEV_DRBD=m +CONFIG_BLK_DEV_NBD=m +CONFIG_BLK_DEV_RAM=y +CONFIG_CDROM_PKTCDVD=m +CONFIG_ATA_OVER_ETH=m +CONFIG_EEPROM_AT24=m +CONFIG_TI_ST=m +CONFIG_SCSI=y +# CONFIG_SCSI_PROC_FS is not set +CONFIG_BLK_DEV_SD=y +CONFIG_CHR_DEV_ST=m +CONFIG_CHR_DEV_OSST=m +CONFIG_BLK_DEV_SR=m +CONFIG_CHR_DEV_SG=m +CONFIG_SCSI_ISCSI_ATTRS=y +CONFIG_ISCSI_TCP=m +CONFIG_ISCSI_BOOT_SYSFS=m +CONFIG_MD=y +CONFIG_MD_LINEAR=m +CONFIG_MD_RAID0=m +CONFIG_BLK_DEV_DM=m +CONFIG_DM_CRYPT=m +CONFIG_DM_SNAPSHOT=m +CONFIG_DM_THIN_PROVISIONING=m +CONFIG_DM_MIRROR=m +CONFIG_DM_LOG_USERSPACE=m +CONFIG_DM_RAID=m +CONFIG_DM_ZERO=m +CONFIG_DM_DELAY=m +CONFIG_NETDEVICES=y +CONFIG_BONDING=m +CONFIG_DUMMY=m +CONFIG_IFB=m +CONFIG_MACVLAN=m +CONFIG_NETCONSOLE=m +CONFIG_TUN=m +CONFIG_VETH=m +CONFIG_ENC28J60=m +CONFIG_MDIO_BITBANG=m +CONFIG_PPP=m +CONFIG_PPP_BSDCOMP=m +CONFIG_PPP_DEFLATE=m +CONFIG_PPP_FILTER=y +CONFIG_PPP_MPPE=m +CONFIG_PPP_MULTILINK=y +CONFIG_PPPOATM=m +CONFIG_PPPOE=m +CONFIG_PPPOL2TP=m +CONFIG_PPP_ASYNC=m +CONFIG_PPP_SYNC_TTY=m +CONFIG_SLIP=m +CONFIG_SLIP_COMPRESSED=y +CONFIG_SLIP_SMART=y +CONFIG_USB_CATC=m +CONFIG_USB_KAWETH=m +CONFIG_USB_PEGASUS=m +CONFIG_USB_RTL8150=m +CONFIG_USB_RTL8152=m +CONFIG_USB_USBNET=y +CONFIG_USB_NET_AX8817X=m +CONFIG_USB_NET_AX88179_178A=m +CONFIG_USB_NET_CDCETHER=m +CONFIG_USB_NET_CDC_EEM=m +CONFIG_USB_NET_CDC_NCM=m +CONFIG_USB_NET_HUAWEI_CDC_NCM=m +CONFIG_USB_NET_CDC_MBIM=m +CONFIG_USB_NET_DM9601=m +CONFIG_USB_NET_SR9700=m +CONFIG_USB_NET_SR9800=m +CONFIG_USB_NET_SMSC75XX=m +CONFIG_USB_NET_SMSC95XX=y +CONFIG_USB_NET_GL620A=m +CONFIG_USB_NET_NET1080=m +CONFIG_USB_NET_PLUSB=m +CONFIG_USB_NET_MCS7830=m +CONFIG_USB_NET_CDC_SUBSET=m +CONFIG_USB_ALI_M5632=y +CONFIG_USB_AN2720=y +CONFIG_USB_EPSON2888=y +CONFIG_USB_KC2190=y +CONFIG_USB_NET_ZAURUS=m +CONFIG_USB_NET_CX82310_ETH=m +CONFIG_USB_NET_KALMIA=m +CONFIG_USB_NET_QMI_WWAN=m +CONFIG_USB_HSO=m +CONFIG_USB_NET_INT51X1=m +CONFIG_USB_IPHETH=m +CONFIG_USB_SIERRA_NET=m +CONFIG_USB_VL600=m +CONFIG_LIBERTAS_THINFIRM=m +CONFIG_LIBERTAS_THINFIRM_USB=m +CONFIG_AT76C50X_USB=m +CONFIG_USB_ZD1201=m +CONFIG_USB_NET_RNDIS_WLAN=m +CONFIG_RTL8187=m +CONFIG_MAC80211_HWSIM=m +CONFIG_ATH_CARDS=m +CONFIG_ATH9K=m +CONFIG_ATH9K_HTC=m +CONFIG_CARL9170=m +CONFIG_ATH6KL=m +CONFIG_ATH6KL_USB=m +CONFIG_AR5523=m +CONFIG_B43=m +# CONFIG_B43_PHY_N is not set +CONFIG_B43LEGACY=m +CONFIG_BRCMFMAC=m +CONFIG_BRCMFMAC_USB=y +CONFIG_HOSTAP=m +CONFIG_LIBERTAS=m +CONFIG_LIBERTAS_USB=m +CONFIG_LIBERTAS_SDIO=m +CONFIG_P54_COMMON=m +CONFIG_P54_USB=m +CONFIG_RT2X00=m +CONFIG_RT2500USB=m +CONFIG_RT73USB=m +CONFIG_RT2800USB=m +CONFIG_RT2800USB_RT3573=y +CONFIG_RT2800USB_RT53XX=y +CONFIG_RT2800USB_RT55XX=y +CONFIG_RT2800USB_UNKNOWN=y +CONFIG_WL_MEDIATEK=y +CONFIG_MT7601U=m +CONFIG_RTL8192CU=m +CONFIG_ZD1211RW=m +CONFIG_MWIFIEX=m +CONFIG_MWIFIEX_SDIO=m +CONFIG_WIMAX_I2400M_USB=m +CONFIG_IEEE802154_AT86RF230=m +CONFIG_IEEE802154_MRF24J40=m +CONFIG_IEEE802154_CC2520=m +CONFIG_INPUT_POLLDEV=m +# CONFIG_INPUT_MOUSEDEV_PSAUX is not set +CONFIG_INPUT_JOYDEV=m +CONFIG_INPUT_EVDEV=m +# CONFIG_KEYBOARD_ATKBD is not set +CONFIG_KEYBOARD_GPIO=m +# CONFIG_INPUT_MOUSE is not set +CONFIG_INPUT_JOYSTICK=y +CONFIG_JOYSTICK_IFORCE=m +CONFIG_JOYSTICK_IFORCE_USB=y +CONFIG_JOYSTICK_XPAD=m +CONFIG_JOYSTICK_XPAD_FF=y +CONFIG_JOYSTICK_RPISENSE=m +CONFIG_INPUT_TOUCHSCREEN=y +CONFIG_TOUCHSCREEN_ADS7846=m +CONFIG_TOUCHSCREEN_EGALAX=m +CONFIG_TOUCHSCREEN_RPI_FT5406=m +CONFIG_TOUCHSCREEN_USB_COMPOSITE=m +CONFIG_TOUCHSCREEN_STMPE=m +CONFIG_INPUT_MISC=y +CONFIG_INPUT_AD714X=m +CONFIG_INPUT_ATI_REMOTE2=m +CONFIG_INPUT_KEYSPAN_REMOTE=m +CONFIG_INPUT_POWERMATE=m +CONFIG_INPUT_YEALINK=m +CONFIG_INPUT_CM109=m +CONFIG_INPUT_UINPUT=m +CONFIG_INPUT_GPIO_ROTARY_ENCODER=m +CONFIG_INPUT_ADXL34X=m +CONFIG_INPUT_CMA3000=m +CONFIG_SERIO=m +CONFIG_SERIO_RAW=m +CONFIG_GAMEPORT=m +CONFIG_GAMEPORT_NS558=m +CONFIG_GAMEPORT_L4=m +CONFIG_BRCM_CHAR_DRIVERS=y +CONFIG_BCM_VC_CMA=y +CONFIG_BCM_VCIO=y +CONFIG_BCM_VC_SM=y +CONFIG_DEVPTS_MULTIPLE_INSTANCES=y +# CONFIG_LEGACY_PTYS is not set +# CONFIG_DEVKMEM is not set +CONFIG_SERIAL_8250=y +# CONFIG_SERIAL_8250_DEPRECATED_OPTIONS is not set +CONFIG_SERIAL_8250_CONSOLE=y +# CONFIG_SERIAL_8250_DMA is not set +CONFIG_SERIAL_8250_NR_UARTS=1 +CONFIG_SERIAL_8250_RUNTIME_UARTS=0 +CONFIG_SERIAL_AMBA_PL011=y +CONFIG_SERIAL_AMBA_PL011_CONSOLE=y +CONFIG_SERIAL_OF_PLATFORM=y +CONFIG_TTY_PRINTK=y +CONFIG_HW_RANDOM=y +CONFIG_HW_RANDOM_BCM2835=m +CONFIG_HW_RANDOM_BCM2708=m +CONFIG_RAW_DRIVER=y +CONFIG_I2C=y +CONFIG_I2C_CHARDEV=m +CONFIG_I2C_BCM2708=m +CONFIG_SPI=y +CONFIG_SPI_BCM2835=m +CONFIG_SPI_BCM2708=m +CONFIG_SPI_SPIDEV=y +CONFIG_PPS=m +CONFIG_PPS_CLIENT_LDISC=m +CONFIG_PPS_CLIENT_GPIO=m +CONFIG_GPIO_SYSFS=y +CONFIG_GPIO_ARIZONA=m +CONFIG_GPIO_STMPE=y +CONFIG_W1=m +CONFIG_W1_MASTER_DS2490=m +CONFIG_W1_MASTER_DS2482=m +CONFIG_W1_MASTER_DS1WM=m +CONFIG_W1_MASTER_GPIO=m +CONFIG_W1_SLAVE_THERM=m +CONFIG_W1_SLAVE_SMEM=m +CONFIG_W1_SLAVE_DS2408=m +CONFIG_W1_SLAVE_DS2413=m +CONFIG_W1_SLAVE_DS2406=m +CONFIG_W1_SLAVE_DS2423=m +CONFIG_W1_SLAVE_DS2431=m +CONFIG_W1_SLAVE_DS2433=m +CONFIG_W1_SLAVE_DS2760=m +CONFIG_W1_SLAVE_DS2780=m +CONFIG_W1_SLAVE_DS2781=m +CONFIG_W1_SLAVE_DS28E04=m +CONFIG_W1_SLAVE_BQ27000=m +CONFIG_BATTERY_DS2760=m +CONFIG_POWER_RESET=y +CONFIG_POWER_RESET_GPIO=y +CONFIG_HWMON=m +CONFIG_SENSORS_SHT21=m +CONFIG_SENSORS_SHTC1=m +CONFIG_THERMAL=y +CONFIG_THERMAL_BCM2835=y +CONFIG_WATCHDOG=y +CONFIG_BCM2708_WDT=m +CONFIG_BCM2835_WDT=m +CONFIG_UCB1400_CORE=m +CONFIG_MFD_STMPE=y +CONFIG_STMPE_SPI=y +CONFIG_MFD_ARIZONA_I2C=m +CONFIG_MFD_ARIZONA_SPI=m +CONFIG_MFD_WM5102=y +CONFIG_MEDIA_SUPPORT=m +CONFIG_MEDIA_CAMERA_SUPPORT=y +CONFIG_MEDIA_ANALOG_TV_SUPPORT=y +CONFIG_MEDIA_DIGITAL_TV_SUPPORT=y +CONFIG_MEDIA_RADIO_SUPPORT=y +CONFIG_MEDIA_RC_SUPPORT=y +CONFIG_MEDIA_CONTROLLER=y +CONFIG_LIRC=m +CONFIG_RC_DEVICES=y +CONFIG_RC_ATI_REMOTE=m +CONFIG_IR_IMON=m +CONFIG_IR_MCEUSB=m +CONFIG_IR_REDRAT3=m +CONFIG_IR_STREAMZAP=m +CONFIG_IR_IGUANA=m +CONFIG_IR_TTUSBIR=m +CONFIG_RC_LOOPBACK=m +CONFIG_IR_GPIO_CIR=m +CONFIG_MEDIA_USB_SUPPORT=y +CONFIG_USB_VIDEO_CLASS=m +CONFIG_USB_M5602=m +CONFIG_USB_STV06XX=m +CONFIG_USB_GL860=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_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_SPCA1528=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_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_PWC=m +CONFIG_VIDEO_CPIA2=m +CONFIG_USB_ZR364XX=m +CONFIG_USB_STKWEBCAM=m +CONFIG_USB_S2255=m +CONFIG_VIDEO_USBTV=m +CONFIG_VIDEO_PVRUSB2=m +CONFIG_VIDEO_HDPVR=m +CONFIG_VIDEO_USBVISION=m +CONFIG_VIDEO_STK1160_COMMON=m +CONFIG_VIDEO_STK1160_AC97=y +CONFIG_VIDEO_GO7007=m +CONFIG_VIDEO_GO7007_USB=m +CONFIG_VIDEO_GO7007_USB_S2250_BOARD=m +CONFIG_VIDEO_AU0828=m +CONFIG_VIDEO_AU0828_RC=y +CONFIG_VIDEO_CX231XX=m +CONFIG_VIDEO_CX231XX_ALSA=m +CONFIG_VIDEO_CX231XX_DVB=m +CONFIG_VIDEO_TM6000=m +CONFIG_VIDEO_TM6000_ALSA=m +CONFIG_VIDEO_TM6000_DVB=m +CONFIG_DVB_USB=m +CONFIG_DVB_USB_A800=m +CONFIG_DVB_USB_DIBUSB_MB=m +CONFIG_DVB_USB_DIBUSB_MB_FAULTY=y +CONFIG_DVB_USB_DIBUSB_MC=m +CONFIG_DVB_USB_DIB0700=m +CONFIG_DVB_USB_UMT_010=m +CONFIG_DVB_USB_CXUSB=m +CONFIG_DVB_USB_M920X=m +CONFIG_DVB_USB_DIGITV=m +CONFIG_DVB_USB_VP7045=m +CONFIG_DVB_USB_VP702X=m +CONFIG_DVB_USB_GP8PSK=m +CONFIG_DVB_USB_NOVA_T_USB2=m +CONFIG_DVB_USB_TTUSB2=m +CONFIG_DVB_USB_DTT200U=m +CONFIG_DVB_USB_OPERA1=m +CONFIG_DVB_USB_AF9005=m +CONFIG_DVB_USB_AF9005_REMOTE=m +CONFIG_DVB_USB_PCTV452E=m +CONFIG_DVB_USB_DW2102=m +CONFIG_DVB_USB_CINERGY_T2=m +CONFIG_DVB_USB_DTV5100=m +CONFIG_DVB_USB_FRIIO=m +CONFIG_DVB_USB_AZ6027=m +CONFIG_DVB_USB_TECHNISAT_USB2=m +CONFIG_DVB_USB_V2=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_CE6230=m +CONFIG_DVB_USB_EC168=m +CONFIG_DVB_USB_GL861=m +CONFIG_DVB_USB_LME2510=m +CONFIG_DVB_USB_MXL111SF=m +CONFIG_DVB_USB_RTL28XXU=m +CONFIG_DVB_USB_DVBSKY=m +CONFIG_SMS_USB_DRV=m +CONFIG_DVB_B2C2_FLEXCOP_USB=m +CONFIG_DVB_AS102=m +CONFIG_VIDEO_EM28XX=m +CONFIG_VIDEO_EM28XX_V4L2=m +CONFIG_VIDEO_EM28XX_ALSA=m +CONFIG_VIDEO_EM28XX_DVB=m +CONFIG_V4L_PLATFORM_DRIVERS=y +CONFIG_VIDEO_BCM2835=y +CONFIG_VIDEO_BCM2835_MMAL=m +CONFIG_RADIO_SI470X=y +CONFIG_USB_SI470X=m +CONFIG_I2C_SI470X=m +CONFIG_RADIO_SI4713=m +CONFIG_I2C_SI4713=m +CONFIG_USB_MR800=m +CONFIG_USB_DSBR=m +CONFIG_RADIO_SHARK=m +CONFIG_RADIO_SHARK2=m +CONFIG_USB_KEENE=m +CONFIG_USB_MA901=m +CONFIG_RADIO_TEA5764=m +CONFIG_RADIO_SAA7706H=m +CONFIG_RADIO_TEF6862=m +CONFIG_RADIO_WL1273=m +CONFIG_RADIO_WL128X=m +# CONFIG_MEDIA_SUBDRV_AUTOSELECT is not set +CONFIG_VIDEO_UDA1342=m +CONFIG_VIDEO_SONY_BTF_MPX=m +CONFIG_VIDEO_TVP5150=m +CONFIG_VIDEO_TW2804=m +CONFIG_VIDEO_TW9903=m +CONFIG_VIDEO_TW9906=m +CONFIG_VIDEO_OV7640=m +CONFIG_VIDEO_MT9V011=m +CONFIG_FB=y +CONFIG_FB_BCM2708=y +CONFIG_FB_SSD1307=m +CONFIG_FB_RPISENSE=m +# CONFIG_BACKLIGHT_GENERIC is not set +CONFIG_BACKLIGHT_GPIO=m +CONFIG_FRAMEBUFFER_CONSOLE=y +CONFIG_LOGO=y +# CONFIG_LOGO_LINUX_MONO is not set +# CONFIG_LOGO_LINUX_VGA16 is not set +CONFIG_SOUND=y +CONFIG_SND=m +CONFIG_SND_SEQUENCER=m +CONFIG_SND_SEQ_DUMMY=m +CONFIG_SND_MIXER_OSS=m +CONFIG_SND_PCM_OSS=m +CONFIG_SND_SEQUENCER_OSS=y +CONFIG_SND_HRTIMER=m +CONFIG_SND_DUMMY=m +CONFIG_SND_ALOOP=m +CONFIG_SND_VIRMIDI=m +CONFIG_SND_MTPAV=m +CONFIG_SND_SERIAL_U16550=m +CONFIG_SND_MPU401=m +CONFIG_SND_BCM2835=m +CONFIG_SND_USB_AUDIO=m +CONFIG_SND_USB_UA101=m +CONFIG_SND_USB_CAIAQ=m +CONFIG_SND_USB_CAIAQ_INPUT=y +CONFIG_SND_USB_6FIRE=m +CONFIG_SND_SOC=m +CONFIG_SND_BCM2708_SOC_I2S=m +CONFIG_SND_BCM2708_SOC_HIFIBERRY_DAC=m +CONFIG_SND_BCM2708_SOC_HIFIBERRY_DACPLUS=m +CONFIG_SND_BCM2708_SOC_HIFIBERRY_DIGI=m +CONFIG_SND_BCM2708_SOC_HIFIBERRY_AMP=m +CONFIG_SND_BCM2708_SOC_RPI_DAC=m +CONFIG_SND_BCM2708_SOC_RPI_PROTO=m +CONFIG_SND_BCM2708_SOC_IQAUDIO_DAC=m +CONFIG_SND_BCM2708_SOC_RASPIDAC3=m +CONFIG_SND_SOC_ADAU1701=m +CONFIG_SND_SOC_WM8804_I2C=m +CONFIG_SND_SIMPLE_CARD=m +CONFIG_SOUND_PRIME=m +CONFIG_HIDRAW=y +CONFIG_UHID=m +CONFIG_HID_A4TECH=m +CONFIG_HID_ACRUX=m +CONFIG_HID_APPLE=m +CONFIG_HID_BELKIN=m +CONFIG_HID_CHERRY=m +CONFIG_HID_CHICONY=m +CONFIG_HID_CYPRESS=m +CONFIG_HID_DRAGONRISE=m +CONFIG_HID_EMS_FF=m +CONFIG_HID_ELECOM=m +CONFIG_HID_ELO=m +CONFIG_HID_EZKEY=m +CONFIG_HID_HOLTEK=m +CONFIG_HID_KEYTOUCH=m +CONFIG_HID_KYE=m +CONFIG_HID_UCLOGIC=m +CONFIG_HID_WALTOP=m +CONFIG_HID_GYRATION=m +CONFIG_HID_TWINHAN=m +CONFIG_HID_KENSINGTON=m +CONFIG_HID_LCPOWER=m +CONFIG_HID_LOGITECH=m +CONFIG_HID_MAGICMOUSE=m +CONFIG_HID_MICROSOFT=m +CONFIG_HID_MONTEREY=m +CONFIG_HID_MULTITOUCH=m +CONFIG_HID_NTRIG=m +CONFIG_HID_ORTEK=m +CONFIG_HID_PANTHERLORD=m +CONFIG_HID_PETALYNX=m +CONFIG_HID_PICOLCD=m +CONFIG_HID_ROCCAT=m +CONFIG_HID_SAMSUNG=m +CONFIG_HID_SONY=m +CONFIG_HID_SPEEDLINK=m +CONFIG_HID_SUNPLUS=m +CONFIG_HID_GREENASIA=m +CONFIG_HID_SMARTJOYPLUS=m +CONFIG_HID_TOPSEED=m +CONFIG_HID_THINGM=m +CONFIG_HID_THRUSTMASTER=m +CONFIG_HID_WACOM=m +CONFIG_HID_WIIMOTE=m +CONFIG_HID_XINMO=m +CONFIG_HID_ZEROPLUS=m +CONFIG_HID_ZYDACRON=m +CONFIG_HID_PID=y +CONFIG_USB_HIDDEV=y +CONFIG_USB=y +CONFIG_USB_ANNOUNCE_NEW_DEVICES=y +CONFIG_USB_MON=m +CONFIG_USB_DWCOTG=y +CONFIG_USB_PRINTER=m +CONFIG_USB_STORAGE=y +CONFIG_USB_STORAGE_REALTEK=m +CONFIG_USB_STORAGE_DATAFAB=m +CONFIG_USB_STORAGE_FREECOM=m +CONFIG_USB_STORAGE_ISD200=m +CONFIG_USB_STORAGE_USBAT=m +CONFIG_USB_STORAGE_SDDR09=m +CONFIG_USB_STORAGE_SDDR55=m +CONFIG_USB_STORAGE_JUMPSHOT=m +CONFIG_USB_STORAGE_ALAUDA=m +CONFIG_USB_STORAGE_ONETOUCH=m +CONFIG_USB_STORAGE_KARMA=m +CONFIG_USB_STORAGE_CYPRESS_ATACB=m +CONFIG_USB_STORAGE_ENE_UB6250=m +CONFIG_USB_MDC800=m +CONFIG_USB_MICROTEK=m +CONFIG_USBIP_CORE=m +CONFIG_USBIP_VHCI_HCD=m +CONFIG_USBIP_HOST=m +CONFIG_USB_SERIAL=m +CONFIG_USB_SERIAL_GENERIC=y +CONFIG_USB_SERIAL_AIRCABLE=m +CONFIG_USB_SERIAL_ARK3116=m +CONFIG_USB_SERIAL_BELKIN=m +CONFIG_USB_SERIAL_CH341=m +CONFIG_USB_SERIAL_WHITEHEAT=m +CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m +CONFIG_USB_SERIAL_CP210X=m +CONFIG_USB_SERIAL_CYPRESS_M8=m +CONFIG_USB_SERIAL_EMPEG=m +CONFIG_USB_SERIAL_FTDI_SIO=m +CONFIG_USB_SERIAL_VISOR=m +CONFIG_USB_SERIAL_IPAQ=m +CONFIG_USB_SERIAL_IR=m +CONFIG_USB_SERIAL_EDGEPORT=m +CONFIG_USB_SERIAL_EDGEPORT_TI=m +CONFIG_USB_SERIAL_F81232=m +CONFIG_USB_SERIAL_GARMIN=m +CONFIG_USB_SERIAL_IPW=m +CONFIG_USB_SERIAL_IUU=m +CONFIG_USB_SERIAL_KEYSPAN_PDA=m +CONFIG_USB_SERIAL_KEYSPAN=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_MOS7720=m +CONFIG_USB_SERIAL_MOS7840=m +CONFIG_USB_SERIAL_NAVMAN=m +CONFIG_USB_SERIAL_PL2303=m +CONFIG_USB_SERIAL_OTI6858=m +CONFIG_USB_SERIAL_QCAUX=m +CONFIG_USB_SERIAL_QUALCOMM=m +CONFIG_USB_SERIAL_SPCP8X5=m +CONFIG_USB_SERIAL_SAFE=m +CONFIG_USB_SERIAL_SIERRAWIRELESS=m +CONFIG_USB_SERIAL_SYMBOL=m +CONFIG_USB_SERIAL_TI=m +CONFIG_USB_SERIAL_CYBERJACK=m +CONFIG_USB_SERIAL_XIRCOM=m +CONFIG_USB_SERIAL_OPTION=m +CONFIG_USB_SERIAL_OMNINET=m +CONFIG_USB_SERIAL_OPTICON=m +CONFIG_USB_SERIAL_XSENS_MT=m +CONFIG_USB_SERIAL_WISHBONE=m +CONFIG_USB_SERIAL_SSU100=m +CONFIG_USB_SERIAL_QT2=m +CONFIG_USB_SERIAL_DEBUG=m +CONFIG_USB_EMI62=m +CONFIG_USB_EMI26=m +CONFIG_USB_ADUTUX=m +CONFIG_USB_SEVSEG=m +CONFIG_USB_RIO500=m +CONFIG_USB_LEGOTOWER=m +CONFIG_USB_LCD=m +CONFIG_USB_LED=m +CONFIG_USB_CYPRESS_CY7C63=m +CONFIG_USB_CYTHERM=m +CONFIG_USB_IDMOUSE=m +CONFIG_USB_FTDI_ELAN=m +CONFIG_USB_APPLEDISPLAY=m +CONFIG_USB_LD=m +CONFIG_USB_TRANCEVIBRATOR=m +CONFIG_USB_IOWARRIOR=m +CONFIG_USB_TEST=m +CONFIG_USB_ISIGHTFW=m +CONFIG_USB_YUREX=m +CONFIG_USB_ATM=m +CONFIG_USB_SPEEDTOUCH=m +CONFIG_USB_CXACRU=m +CONFIG_USB_UEAGLEATM=m +CONFIG_USB_XUSBATM=m +CONFIG_MMC=y +CONFIG_MMC_BLOCK_MINORS=32 +CONFIG_MMC_BCM2835=y +CONFIG_MMC_BCM2835_DMA=y +CONFIG_MMC_BCM2835_SDHOST=y +CONFIG_MMC_SDHCI=y +CONFIG_MMC_SDHCI_PLTFM=y +CONFIG_MMC_SPI=m +CONFIG_LEDS_CLASS=y +CONFIG_LEDS_GPIO=y +CONFIG_LEDS_TRIGGER_TIMER=y +CONFIG_LEDS_TRIGGER_ONESHOT=y +CONFIG_LEDS_TRIGGER_HEARTBEAT=y +CONFIG_LEDS_TRIGGER_BACKLIGHT=y +CONFIG_LEDS_TRIGGER_CPU=y +CONFIG_LEDS_TRIGGER_GPIO=y +CONFIG_LEDS_TRIGGER_DEFAULT_ON=y +CONFIG_LEDS_TRIGGER_TRANSIENT=m +CONFIG_LEDS_TRIGGER_CAMERA=m +CONFIG_LEDS_TRIGGER_INPUT=y +CONFIG_RTC_CLASS=y +# CONFIG_RTC_HCTOSYS is not set +CONFIG_RTC_DRV_DS1307=m +CONFIG_RTC_DRV_DS1374=m +CONFIG_RTC_DRV_DS1672=m +CONFIG_RTC_DRV_DS3232=m +CONFIG_RTC_DRV_MAX6900=m +CONFIG_RTC_DRV_RS5C372=m +CONFIG_RTC_DRV_ISL1208=m +CONFIG_RTC_DRV_ISL12022=m +CONFIG_RTC_DRV_ISL12057=m +CONFIG_RTC_DRV_X1205=m +CONFIG_RTC_DRV_PCF2127=m +CONFIG_RTC_DRV_PCF8523=m +CONFIG_RTC_DRV_PCF8563=m +CONFIG_RTC_DRV_PCF8583=m +CONFIG_RTC_DRV_M41T80=m +CONFIG_RTC_DRV_BQ32K=m +CONFIG_RTC_DRV_S35390A=m +CONFIG_RTC_DRV_FM3130=m +CONFIG_RTC_DRV_RX8581=m +CONFIG_RTC_DRV_RX8025=m +CONFIG_RTC_DRV_EM3027=m +CONFIG_RTC_DRV_RV3029C2=m +CONFIG_RTC_DRV_M41T93=m +CONFIG_RTC_DRV_M41T94=m +CONFIG_RTC_DRV_DS1305=m +CONFIG_RTC_DRV_DS1390=m +CONFIG_RTC_DRV_MAX6902=m +CONFIG_RTC_DRV_R9701=m +CONFIG_RTC_DRV_RS5C348=m +CONFIG_RTC_DRV_DS3234=m +CONFIG_RTC_DRV_PCF2123=m +CONFIG_RTC_DRV_RX4581=m +CONFIG_DMADEVICES=y +CONFIG_DMA_BCM2835=y +CONFIG_DMA_BCM2708=y +CONFIG_UIO=m +CONFIG_UIO_PDRV_GENIRQ=m +CONFIG_STAGING=y +CONFIG_PRISM2_USB=m +CONFIG_R8712U=m +CONFIG_R8188EU=m +CONFIG_R8723AU=m +CONFIG_VT6656=m +CONFIG_SPEAKUP=m +CONFIG_SPEAKUP_SYNTH_SOFT=m +CONFIG_STAGING_MEDIA=y +CONFIG_LIRC_STAGING=y +CONFIG_LIRC_IMON=m +CONFIG_LIRC_RPI=m +CONFIG_LIRC_SASEM=m +CONFIG_LIRC_SERIAL=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_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_SSD1289=m +CONFIG_FB_TFT_SSD1306=m +CONFIG_FB_TFT_SSD1331=m +CONFIG_FB_TFT_SSD1351=m +CONFIG_FB_TFT_ST7735R=m +CONFIG_FB_TFT_TINYLCD=m +CONFIG_FB_TFT_TLS8204=m +CONFIG_FB_TFT_UC1701=m +CONFIG_FB_TFT_UPD161704=m +CONFIG_FB_TFT_WATTEROTT=m +CONFIG_FB_FLEX=m +CONFIG_FB_TFT_FBTFT_DEVICE=m +CONFIG_MAILBOX=y +CONFIG_BCM2835_MBOX=y +# CONFIG_IOMMU_SUPPORT is not set +CONFIG_EXTCON=m +CONFIG_EXTCON_ARIZONA=m +CONFIG_IIO=m +CONFIG_IIO_BUFFER=y +CONFIG_IIO_BUFFER_CB=y +CONFIG_IIO_KFIFO_BUF=m +CONFIG_DHT11=m +CONFIG_PWM_BCM2835=m +CONFIG_RASPBERRYPI_FIRMWARE=y +CONFIG_EXT4_FS=y +CONFIG_EXT4_FS_POSIX_ACL=y +CONFIG_EXT4_FS_SECURITY=y +CONFIG_REISERFS_FS=m +CONFIG_REISERFS_FS_XATTR=y +CONFIG_REISERFS_FS_POSIX_ACL=y +CONFIG_REISERFS_FS_SECURITY=y +CONFIG_JFS_FS=m +CONFIG_JFS_POSIX_ACL=y +CONFIG_JFS_SECURITY=y +CONFIG_JFS_STATISTICS=y +CONFIG_XFS_FS=m +CONFIG_XFS_QUOTA=y +CONFIG_XFS_POSIX_ACL=y +CONFIG_XFS_RT=y +CONFIG_GFS2_FS=m +CONFIG_OCFS2_FS=m +CONFIG_BTRFS_FS=m +CONFIG_BTRFS_FS_POSIX_ACL=y +CONFIG_NILFS2_FS=m +CONFIG_F2FS_FS=y +CONFIG_FANOTIFY=y +CONFIG_QFMT_V1=m +CONFIG_QFMT_V2=m +CONFIG_AUTOFS4_FS=y +CONFIG_FUSE_FS=m +CONFIG_CUSE=m +CONFIG_OVERLAY_FS=m +CONFIG_FSCACHE=y +CONFIG_FSCACHE_STATS=y +CONFIG_FSCACHE_HISTOGRAM=y +CONFIG_CACHEFILES=y +CONFIG_ISO9660_FS=m +CONFIG_JOLIET=y +CONFIG_ZISOFS=y +CONFIG_UDF_FS=m +CONFIG_MSDOS_FS=y +CONFIG_VFAT_FS=y +CONFIG_FAT_DEFAULT_IOCHARSET="ascii" +CONFIG_NTFS_FS=m +CONFIG_NTFS_RW=y +CONFIG_TMPFS=y +CONFIG_TMPFS_POSIX_ACL=y +CONFIG_CONFIGFS_FS=y +CONFIG_ECRYPT_FS=m +CONFIG_HFS_FS=m +CONFIG_HFSPLUS_FS=m +CONFIG_JFFS2_FS=m +CONFIG_JFFS2_SUMMARY=y +CONFIG_UBIFS_FS=m +CONFIG_SQUASHFS=m +CONFIG_SQUASHFS_XATTR=y +CONFIG_SQUASHFS_LZO=y +CONFIG_SQUASHFS_XZ=y +CONFIG_NFS_FS=y +CONFIG_NFS_V3_ACL=y +CONFIG_NFS_V4=y +CONFIG_NFS_SWAP=y +CONFIG_ROOT_NFS=y +CONFIG_NFS_FSCACHE=y +CONFIG_NFSD=m +CONFIG_NFSD_V3_ACL=y +CONFIG_NFSD_V4=y +CONFIG_CIFS=m +CONFIG_CIFS_WEAK_PW_HASH=y +CONFIG_CIFS_UPCALL=y +CONFIG_CIFS_XATTR=y +CONFIG_CIFS_POSIX=y +CONFIG_CIFS_ACL=y +CONFIG_CIFS_DFS_UPCALL=y +CONFIG_CIFS_SMB2=y +CONFIG_CIFS_FSCACHE=y +CONFIG_9P_FS=m +CONFIG_9P_FS_POSIX_ACL=y +CONFIG_NLS_DEFAULT="utf8" +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_936=m +CONFIG_NLS_CODEPAGE_950=m +CONFIG_NLS_CODEPAGE_932=m +CONFIG_NLS_CODEPAGE_949=m +CONFIG_NLS_CODEPAGE_874=m +CONFIG_NLS_ISO8859_8=m +CONFIG_NLS_CODEPAGE_1250=m +CONFIG_NLS_CODEPAGE_1251=m +CONFIG_NLS_ASCII=y +CONFIG_NLS_ISO8859_1=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_9=m +CONFIG_NLS_ISO8859_13=m +CONFIG_NLS_ISO8859_14=m +CONFIG_NLS_ISO8859_15=m +CONFIG_NLS_KOI8_R=m +CONFIG_NLS_KOI8_U=m +CONFIG_DLM=m +CONFIG_PRINTK_TIME=y +CONFIG_BOOT_PRINTK_DELAY=y +CONFIG_DEBUG_MEMORY_INIT=y +CONFIG_DETECT_HUNG_TASK=y +CONFIG_TIMER_STATS=y +# CONFIG_DEBUG_PREEMPT is not set +CONFIG_IRQSOFF_TRACER=y +CONFIG_SCHED_TRACER=y +CONFIG_STACK_TRACER=y +CONFIG_BLK_DEV_IO_TRACE=y +# CONFIG_KPROBE_EVENT is not set +CONFIG_FUNCTION_PROFILER=y +CONFIG_KGDB=y +CONFIG_KGDB_KDB=y +CONFIG_KDB_KEYBOARD=y +CONFIG_CRYPTO_USER=m +CONFIG_CRYPTO_CBC=y +CONFIG_CRYPTO_CTS=m +CONFIG_CRYPTO_XTS=m +CONFIG_CRYPTO_XCBC=m +CONFIG_CRYPTO_TGR192=m +CONFIG_CRYPTO_WP512=m +CONFIG_CRYPTO_CAST5=m +CONFIG_CRYPTO_DES=y +CONFIG_CRYPTO_USER_API_SKCIPHER=m +# CONFIG_CRYPTO_HW is not set +CONFIG_ARM_CRYPTO=y +CONFIG_CRYPTO_SHA1_ARM_NEON=m +CONFIG_CRYPTO_AES_ARM_BS=m +CONFIG_CRC_ITU_T=y +CONFIG_LIBCRC32C=y --- linux-raspi2-4.2.0.orig/arch/arm/configs/bcm2835_defconfig +++ linux-raspi2-4.2.0/arch/arm/configs/bcm2835_defconfig @@ -1,105 +1,1103 @@ # CONFIG_LOCALVERSION_AUTO is not set CONFIG_SYSVIPC=y +CONFIG_POSIX_MQUEUE=y CONFIG_FHANDLE=y CONFIG_NO_HZ=y CONFIG_HIGH_RES_TIMERS=y CONFIG_BSD_PROCESS_ACCT=y CONFIG_BSD_PROCESS_ACCT_V3=y +CONFIG_TASKSTATS=y +CONFIG_TASK_DELAY_ACCT=y +CONFIG_TASK_XACCT=y +CONFIG_TASK_IO_ACCOUNTING=y +CONFIG_IKCONFIG=m +CONFIG_IKCONFIG_PROC=y CONFIG_LOG_BUF_SHIFT=18 CONFIG_CGROUP_FREEZER=y CONFIG_CGROUP_DEVICE=y CONFIG_CPUSETS=y CONFIG_CGROUP_CPUACCT=y -CONFIG_RESOURCE_COUNTERS=y +CONFIG_MEMCG=y CONFIG_CGROUP_PERF=y CONFIG_CFS_BANDWIDTH=y CONFIG_RT_GROUP_SCHED=y +CONFIG_BLK_CGROUP=y CONFIG_NAMESPACES=y CONFIG_SCHED_AUTOGROUP=y -CONFIG_RELAY=y CONFIG_BLK_DEV_INITRD=y -CONFIG_RD_BZIP2=y -CONFIG_RD_LZMA=y -CONFIG_RD_XZ=y -CONFIG_RD_LZO=y CONFIG_CC_OPTIMIZE_FOR_SIZE=y -CONFIG_KALLSYMS_ALL=y CONFIG_EMBEDDED=y # CONFIG_COMPAT_BRK is not set CONFIG_PROFILING=y -CONFIG_OPROFILE=y +CONFIG_OPROFILE=m +CONFIG_KPROBES=y CONFIG_JUMP_LABEL=y +CONFIG_CC_STACKPROTECTOR_REGULAR=y +CONFIG_MODULES=y +CONFIG_MODULE_UNLOAD=y +CONFIG_MODVERSIONS=y +CONFIG_MODULE_SRCVERSION_ALL=y +CONFIG_BLK_DEV_THROTTLING=y +CONFIG_PARTITION_ADVANCED=y +CONFIG_MAC_PARTITION=y +CONFIG_CFQ_GROUP_IOSCHED=y CONFIG_ARCH_MULTI_V6=y # CONFIG_ARCH_MULTI_V7 is not set CONFIG_ARCH_BCM=y CONFIG_ARCH_BCM2835=y -CONFIG_PREEMPT_VOLUNTARY=y +CONFIG_PREEMPT=y CONFIG_AEABI=y +CONFIG_OABI_COMPAT=y CONFIG_KSM=y CONFIG_CLEANCACHE=y +CONFIG_FRONTSWAP=y +CONFIG_CMA=y +CONFIG_ZSMALLOC=m +CONFIG_PGTABLE_MAPPING=y +CONFIG_UACCESS_WITH_MEMCPY=y CONFIG_SECCOMP=y -CONFIG_CC_STACKPROTECTOR=y +CONFIG_ZBOOT_ROM_TEXT=0x0 +CONFIG_ZBOOT_ROM_BSS=0x0 CONFIG_KEXEC=y CONFIG_CRASH_DUMP=y +CONFIG_CPU_FREQ=y +CONFIG_CPU_FREQ_STAT=m +CONFIG_CPU_FREQ_STAT_DETAILS=y +CONFIG_CPU_FREQ_DEFAULT_GOV_POWERSAVE=y +CONFIG_CPU_FREQ_GOV_PERFORMANCE=y +CONFIG_CPU_FREQ_GOV_USERSPACE=y +CONFIG_CPU_FREQ_GOV_ONDEMAND=y +CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y CONFIG_VFP=y # CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set +CONFIG_BINFMT_MISC=m # CONFIG_SUSPEND is not set CONFIG_NET=y CONFIG_PACKET=y CONFIG_UNIX=y +CONFIG_XFRM_USER=y +CONFIG_NET_KEY=m CONFIG_INET=y +CONFIG_IP_MULTICAST=y +CONFIG_IP_ADVANCED_ROUTER=y +CONFIG_IP_MULTIPLE_TABLES=y +CONFIG_IP_ROUTE_MULTIPATH=y +CONFIG_IP_ROUTE_VERBOSE=y +CONFIG_IP_PNP=y +CONFIG_IP_PNP_DHCP=y +CONFIG_IP_PNP_RARP=y +CONFIG_NET_IPIP=m +CONFIG_NET_IPGRE_DEMUX=m +CONFIG_NET_IPGRE=m +CONFIG_IP_MROUTE=y +CONFIG_IP_MROUTE_MULTIPLE_TABLES=y +CONFIG_IP_PIMSM_V1=y +CONFIG_IP_PIMSM_V2=y +CONFIG_SYN_COOKIES=y +CONFIG_INET_AH=m +CONFIG_INET_ESP=m +CONFIG_INET_IPCOMP=m +CONFIG_INET_XFRM_MODE_TRANSPORT=m +CONFIG_INET_XFRM_MODE_TUNNEL=m +CONFIG_INET_XFRM_MODE_BEET=m +CONFIG_INET_LRO=m +CONFIG_INET_DIAG=m +CONFIG_INET6_AH=m +CONFIG_INET6_ESP=m +CONFIG_INET6_IPCOMP=m +CONFIG_IPV6_TUNNEL=m +CONFIG_IPV6_MULTIPLE_TABLES=y +CONFIG_IPV6_MROUTE=y +CONFIG_IPV6_MROUTE_MULTIPLE_TABLES=y +CONFIG_IPV6_PIMSM_V2=y CONFIG_NETWORK_SECMARK=y CONFIG_NETFILTER=y -CONFIG_CFG80211=y -CONFIG_MAC80211=y +CONFIG_NF_CONNTRACK=m +CONFIG_NF_CONNTRACK_ZONES=y +CONFIG_NF_CONNTRACK_EVENTS=y +CONFIG_NF_CONNTRACK_TIMESTAMP=y +CONFIG_NF_CT_PROTO_DCCP=m +CONFIG_NF_CT_PROTO_UDPLITE=m +CONFIG_NF_CONNTRACK_AMANDA=m +CONFIG_NF_CONNTRACK_FTP=m +CONFIG_NF_CONNTRACK_H323=m +CONFIG_NF_CONNTRACK_IRC=m +CONFIG_NF_CONNTRACK_NETBIOS_NS=m +CONFIG_NF_CONNTRACK_SNMP=m +CONFIG_NF_CONNTRACK_PPTP=m +CONFIG_NF_CONNTRACK_SANE=m +CONFIG_NF_CONNTRACK_SIP=m +CONFIG_NF_CONNTRACK_TFTP=m +CONFIG_NF_CT_NETLINK=m +CONFIG_NETFILTER_XT_SET=m +CONFIG_NETFILTER_XT_TARGET_CHECKSUM=m +CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m +CONFIG_NETFILTER_XT_TARGET_CONNMARK=m +CONFIG_NETFILTER_XT_TARGET_DSCP=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_NFLOG=m +CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m +CONFIG_NETFILTER_XT_TARGET_NOTRACK=m +CONFIG_NETFILTER_XT_TARGET_TEE=m +CONFIG_NETFILTER_XT_TARGET_TPROXY=m +CONFIG_NETFILTER_XT_TARGET_TRACE=m +CONFIG_NETFILTER_XT_TARGET_TCPMSS=m +CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP=m +CONFIG_NETFILTER_XT_MATCH_ADDRTYPE=m +CONFIG_NETFILTER_XT_MATCH_BPF=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_ESP=m +CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m +CONFIG_NETFILTER_XT_MATCH_HELPER=m +CONFIG_NETFILTER_XT_MATCH_IPRANGE=m +CONFIG_NETFILTER_XT_MATCH_IPVS=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_POLICY=m +CONFIG_NETFILTER_XT_MATCH_PHYSDEV=m +CONFIG_NETFILTER_XT_MATCH_PKTTYPE=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_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_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_IPPORT=m +CONFIG_IP_SET_HASH_IPPORTIP=m +CONFIG_IP_SET_HASH_IPPORTNET=m +CONFIG_IP_SET_HASH_NET=m +CONFIG_IP_SET_HASH_NETPORT=m +CONFIG_IP_SET_HASH_NETIFACE=m +CONFIG_IP_SET_LIST_SET=m +CONFIG_IP_VS=m +CONFIG_IP_VS_PROTO_TCP=y +CONFIG_IP_VS_PROTO_UDP=y +CONFIG_IP_VS_PROTO_ESP=y +CONFIG_IP_VS_PROTO_AH=y +CONFIG_IP_VS_PROTO_SCTP=y +CONFIG_IP_VS_RR=m +CONFIG_IP_VS_WRR=m +CONFIG_IP_VS_LC=m +CONFIG_IP_VS_WLC=m +CONFIG_IP_VS_LBLC=m +CONFIG_IP_VS_LBLCR=m +CONFIG_IP_VS_DH=m +CONFIG_IP_VS_SH=m +CONFIG_IP_VS_SED=m +CONFIG_IP_VS_NQ=m +CONFIG_IP_VS_FTP=m +CONFIG_IP_VS_PE_SIP=m +CONFIG_NF_CONNTRACK_IPV4=m +CONFIG_IP_NF_IPTABLES=m +CONFIG_IP_NF_MATCH_AH=m +CONFIG_IP_NF_MATCH_ECN=m +CONFIG_IP_NF_MATCH_TTL=m +CONFIG_IP_NF_FILTER=m +CONFIG_IP_NF_TARGET_REJECT=m +CONFIG_IP_NF_NAT=m +CONFIG_IP_NF_TARGET_MASQUERADE=m +CONFIG_IP_NF_TARGET_NETMAP=m +CONFIG_IP_NF_TARGET_REDIRECT=m +CONFIG_IP_NF_MANGLE=m +CONFIG_IP_NF_TARGET_CLUSTERIP=m +CONFIG_IP_NF_TARGET_ECN=m +CONFIG_IP_NF_TARGET_TTL=m +CONFIG_IP_NF_RAW=m +CONFIG_IP_NF_ARPTABLES=m +CONFIG_IP_NF_ARPFILTER=m +CONFIG_IP_NF_ARP_MANGLE=m +CONFIG_NF_CONNTRACK_IPV6=m +CONFIG_IP6_NF_IPTABLES=m +CONFIG_IP6_NF_MATCH_AH=m +CONFIG_IP6_NF_MATCH_EUI64=m +CONFIG_IP6_NF_MATCH_FRAG=m +CONFIG_IP6_NF_MATCH_OPTS=m +CONFIG_IP6_NF_MATCH_HL=m +CONFIG_IP6_NF_MATCH_IPV6HEADER=m +CONFIG_IP6_NF_MATCH_MH=m +CONFIG_IP6_NF_MATCH_RT=m +CONFIG_IP6_NF_TARGET_HL=m +CONFIG_IP6_NF_FILTER=m +CONFIG_IP6_NF_TARGET_REJECT=m +CONFIG_IP6_NF_MANGLE=m +CONFIG_IP6_NF_RAW=m +CONFIG_IP6_NF_NAT=m +CONFIG_IP6_NF_TARGET_MASQUERADE=m +CONFIG_IP6_NF_TARGET_NPT=m +CONFIG_BRIDGE_NF_EBTABLES=m +CONFIG_BRIDGE_EBT_BROUTE=m +CONFIG_BRIDGE_EBT_T_FILTER=m +CONFIG_BRIDGE_EBT_T_NAT=m +CONFIG_BRIDGE_EBT_802_3=m +CONFIG_BRIDGE_EBT_AMONG=m +CONFIG_BRIDGE_EBT_ARP=m +CONFIG_BRIDGE_EBT_IP=m +CONFIG_BRIDGE_EBT_IP6=m +CONFIG_BRIDGE_EBT_LIMIT=m +CONFIG_BRIDGE_EBT_MARK=m +CONFIG_BRIDGE_EBT_PKTTYPE=m +CONFIG_BRIDGE_EBT_STP=m +CONFIG_BRIDGE_EBT_VLAN=m +CONFIG_BRIDGE_EBT_ARPREPLY=m +CONFIG_BRIDGE_EBT_DNAT=m +CONFIG_BRIDGE_EBT_MARK_T=m +CONFIG_BRIDGE_EBT_REDIRECT=m +CONFIG_BRIDGE_EBT_SNAT=m +CONFIG_BRIDGE_EBT_LOG=m +CONFIG_BRIDGE_EBT_NFLOG=m +CONFIG_SCTP_COOKIE_HMAC_SHA1=y +CONFIG_ATM=m +CONFIG_L2TP=m +CONFIG_L2TP_V3=y +CONFIG_L2TP_IP=m +CONFIG_L2TP_ETH=m +CONFIG_BRIDGE=m +CONFIG_VLAN_8021Q=m +CONFIG_VLAN_8021Q_GVRP=y +CONFIG_ATALK=m +CONFIG_6LOWPAN=m +CONFIG_NET_SCHED=y +CONFIG_NET_SCH_CBQ=m +CONFIG_NET_SCH_HTB=m +CONFIG_NET_SCH_HFSC=m +CONFIG_NET_SCH_PRIO=m +CONFIG_NET_SCH_MULTIQ=m +CONFIG_NET_SCH_RED=m +CONFIG_NET_SCH_SFB=m +CONFIG_NET_SCH_SFQ=m +CONFIG_NET_SCH_TEQL=m +CONFIG_NET_SCH_TBF=m +CONFIG_NET_SCH_GRED=m +CONFIG_NET_SCH_DSMARK=m +CONFIG_NET_SCH_NETEM=m +CONFIG_NET_SCH_DRR=m +CONFIG_NET_SCH_MQPRIO=m +CONFIG_NET_SCH_CHOKE=m +CONFIG_NET_SCH_QFQ=m +CONFIG_NET_SCH_CODEL=m +CONFIG_NET_SCH_FQ_CODEL=m +CONFIG_NET_SCH_INGRESS=m +CONFIG_NET_SCH_PLUG=m +CONFIG_NET_CLS_BASIC=m +CONFIG_NET_CLS_TCINDEX=m +CONFIG_NET_CLS_ROUTE4=m +CONFIG_NET_CLS_FW=m +CONFIG_NET_CLS_U32=m +CONFIG_CLS_U32_MARK=y +CONFIG_NET_CLS_RSVP=m +CONFIG_NET_CLS_RSVP6=m +CONFIG_NET_CLS_FLOW=m +CONFIG_NET_CLS_CGROUP=m +CONFIG_NET_EMATCH=y +CONFIG_NET_EMATCH_CMP=m +CONFIG_NET_EMATCH_NBYTE=m +CONFIG_NET_EMATCH_U32=m +CONFIG_NET_EMATCH_META=m +CONFIG_NET_EMATCH_TEXT=m +CONFIG_NET_EMATCH_IPSET=m +CONFIG_NET_CLS_ACT=y +CONFIG_NET_ACT_POLICE=m +CONFIG_NET_ACT_GACT=m +CONFIG_GACT_PROB=y +CONFIG_NET_ACT_MIRRED=m +CONFIG_NET_ACT_IPT=m +CONFIG_NET_ACT_NAT=m +CONFIG_NET_ACT_PEDIT=m +CONFIG_NET_ACT_SIMP=m +CONFIG_NET_ACT_SKBEDIT=m +CONFIG_NET_ACT_CSUM=m +CONFIG_BATMAN_ADV=m +CONFIG_OPENVSWITCH=m +CONFIG_NET_PKTGEN=m +CONFIG_HAMRADIO=y +CONFIG_AX25=m +CONFIG_NETROM=m +CONFIG_ROSE=m +CONFIG_MKISS=m +CONFIG_6PACK=m +CONFIG_BPQETHER=m +CONFIG_BAYCOM_SER_FDX=m +CONFIG_BAYCOM_SER_HDX=m +CONFIG_YAM=m +CONFIG_CAN=m +CONFIG_CAN_VCAN=m +CONFIG_CAN_MCP251X=m +CONFIG_IRDA=m +CONFIG_IRLAN=m +CONFIG_IRNET=m +CONFIG_IRCOMM=m +CONFIG_IRDA_ULTRA=y +CONFIG_IRDA_CACHE_LAST_LSAP=y +CONFIG_IRDA_FAST_RR=y +CONFIG_IRTTY_SIR=m +CONFIG_KINGSUN_DONGLE=m +CONFIG_KSDAZZLE_DONGLE=m +CONFIG_KS959_DONGLE=m +CONFIG_USB_IRDA=m +CONFIG_SIGMATEL_FIR=m +CONFIG_MCS_FIR=m +CONFIG_BT=m +CONFIG_BT_RFCOMM=m +CONFIG_BT_RFCOMM_TTY=y +CONFIG_BT_BNEP=m +CONFIG_BT_BNEP_MC_FILTER=y +CONFIG_BT_BNEP_PROTO_FILTER=y +CONFIG_BT_HIDP=m +CONFIG_BT_6LOWPAN=m +CONFIG_BT_HCIBTUSB=m +CONFIG_BT_HCIBCM203X=m +CONFIG_BT_HCIBPA10X=m +CONFIG_BT_HCIBFUSB=m +CONFIG_BT_HCIVHCI=m +CONFIG_BT_MRVL=m +CONFIG_BT_MRVL_SDIO=m +CONFIG_BT_ATH3K=m +CONFIG_BT_WILINK=m +CONFIG_MAC80211=m +CONFIG_MAC80211_MESH=y +CONFIG_WIMAX=m +CONFIG_RFKILL=m +CONFIG_RFKILL_INPUT=y +CONFIG_NET_9P=m +CONFIG_NFC=m +CONFIG_NFC_PN533=m CONFIG_DEVTMPFS=y CONFIG_DEVTMPFS_MOUNT=y # CONFIG_STANDALONE is not set +CONFIG_DMA_CMA=y +CONFIG_CMA_SIZE_MBYTES=5 +CONFIG_ZRAM=m +CONFIG_ZRAM_LZ4_COMPRESS=y +CONFIG_BLK_DEV_LOOP=y +CONFIG_BLK_DEV_CRYPTOLOOP=m +CONFIG_BLK_DEV_DRBD=m +CONFIG_BLK_DEV_NBD=m +CONFIG_BLK_DEV_RAM=y +CONFIG_CDROM_PKTCDVD=m +CONFIG_ATA_OVER_ETH=m +CONFIG_EEPROM_AT24=m +CONFIG_TI_ST=m CONFIG_SCSI=y +# CONFIG_SCSI_PROC_FS is not set CONFIG_BLK_DEV_SD=y -CONFIG_SCSI_MULTI_LUN=y +CONFIG_CHR_DEV_ST=m +CONFIG_CHR_DEV_OSST=m +CONFIG_BLK_DEV_SR=m +CONFIG_CHR_DEV_SG=m CONFIG_SCSI_CONSTANTS=y CONFIG_SCSI_SCAN_ASYNC=y +CONFIG_SCSI_ISCSI_ATTRS=y +CONFIG_ISCSI_TCP=m +CONFIG_ISCSI_BOOT_SYSFS=m +CONFIG_MD=y +CONFIG_MD_LINEAR=m +CONFIG_MD_RAID0=m +CONFIG_BLK_DEV_DM=m +CONFIG_DM_CRYPT=m +CONFIG_DM_SNAPSHOT=m +CONFIG_DM_MIRROR=m +CONFIG_DM_LOG_USERSPACE=m +CONFIG_DM_RAID=m +CONFIG_DM_ZERO=m +CONFIG_DM_DELAY=m CONFIG_NETDEVICES=y +CONFIG_BONDING=m +CONFIG_DUMMY=m +CONFIG_IFB=m +CONFIG_MACVLAN=m +CONFIG_NETCONSOLE=m +CONFIG_TUN=m +CONFIG_VETH=m +CONFIG_ENC28J60=m +CONFIG_MDIO_BITBANG=m +CONFIG_PPP=m +CONFIG_PPP_BSDCOMP=m +CONFIG_PPP_DEFLATE=m +CONFIG_PPP_FILTER=y +CONFIG_PPP_MPPE=m +CONFIG_PPP_MULTILINK=y +CONFIG_PPPOATM=m +CONFIG_PPPOE=m +CONFIG_PPPOL2TP=m +CONFIG_PPP_ASYNC=m +CONFIG_PPP_SYNC_TTY=m +CONFIG_SLIP=m +CONFIG_SLIP_COMPRESSED=y +CONFIG_SLIP_SMART=y +CONFIG_USB_CATC=m +CONFIG_USB_KAWETH=m +CONFIG_USB_PEGASUS=m +CONFIG_USB_RTL8150=m +CONFIG_USB_RTL8152=m CONFIG_USB_USBNET=y +CONFIG_USB_NET_AX8817X=m +CONFIG_USB_NET_AX88179_178A=m +CONFIG_USB_NET_CDCETHER=m +CONFIG_USB_NET_CDC_EEM=m +CONFIG_USB_NET_CDC_NCM=m +CONFIG_USB_NET_HUAWEI_CDC_NCM=m +CONFIG_USB_NET_CDC_MBIM=m +CONFIG_USB_NET_DM9601=m +CONFIG_USB_NET_SR9700=m +CONFIG_USB_NET_SR9800=m +CONFIG_USB_NET_SMSC75XX=m CONFIG_USB_NET_SMSC95XX=y -CONFIG_ZD1211RW=y -CONFIG_INPUT_EVDEV=y +CONFIG_USB_NET_GL620A=m +CONFIG_USB_NET_NET1080=m +CONFIG_USB_NET_PLUSB=m +CONFIG_USB_NET_MCS7830=m +CONFIG_USB_NET_CDC_SUBSET=m +CONFIG_USB_ALI_M5632=y +CONFIG_USB_AN2720=y +CONFIG_USB_EPSON2888=y +CONFIG_USB_KC2190=y +CONFIG_USB_NET_ZAURUS=m +CONFIG_USB_NET_CX82310_ETH=m +CONFIG_USB_NET_KALMIA=m +CONFIG_USB_NET_QMI_WWAN=m +CONFIG_USB_HSO=m +CONFIG_USB_NET_INT51X1=m +CONFIG_USB_IPHETH=m +CONFIG_USB_SIERRA_NET=m +CONFIG_USB_VL600=m +CONFIG_LIBERTAS_THINFIRM=m +CONFIG_LIBERTAS_THINFIRM_USB=m +CONFIG_AT76C50X_USB=m +CONFIG_USB_ZD1201=m +CONFIG_USB_NET_RNDIS_WLAN=m +CONFIG_RTL8187=m +CONFIG_MAC80211_HWSIM=m +CONFIG_ATH_CARDS=m +CONFIG_ATH9K=m +CONFIG_ATH9K_HTC=m +CONFIG_CARL9170=m +CONFIG_ATH6KL=m +CONFIG_ATH6KL_USB=m +CONFIG_AR5523=m +CONFIG_B43=m +# CONFIG_B43_PHY_N is not set +CONFIG_B43LEGACY=m +CONFIG_BRCMFMAC=m +CONFIG_BRCMFMAC_USB=y +CONFIG_HOSTAP=m +CONFIG_LIBERTAS=m +CONFIG_LIBERTAS_USB=m +CONFIG_LIBERTAS_SDIO=m +CONFIG_P54_COMMON=m +CONFIG_P54_USB=m +CONFIG_RT2X00=m +CONFIG_RT2500USB=m +CONFIG_RT73USB=m +CONFIG_RT2800USB=m +CONFIG_RT2800USB_RT3573=y +CONFIG_RT2800USB_RT53XX=y +CONFIG_RT2800USB_RT55XX=y +CONFIG_RT2800USB_UNKNOWN=y +CONFIG_WL_MEDIATEK=y +CONFIG_MT7601U=m +CONFIG_RTL8192CU=m +CONFIG_ZD1211RW=m +CONFIG_MWIFIEX=m +CONFIG_MWIFIEX_SDIO=m +CONFIG_WIMAX_I2400M_USB=m +CONFIG_INPUT_POLLDEV=m +# CONFIG_INPUT_MOUSEDEV_PSAUX is not set +CONFIG_INPUT_JOYDEV=m +CONFIG_INPUT_EVDEV=m +# CONFIG_KEYBOARD_ATKBD is not set +CONFIG_KEYBOARD_GPIO=m +# CONFIG_INPUT_MOUSE is not set +CONFIG_INPUT_JOYSTICK=y +CONFIG_JOYSTICK_IFORCE=m +CONFIG_JOYSTICK_IFORCE_USB=y +CONFIG_JOYSTICK_XPAD=m +CONFIG_JOYSTICK_XPAD_FF=y +CONFIG_JOYSTICK_RPISENSE=m +CONFIG_INPUT_TOUCHSCREEN=y +CONFIG_TOUCHSCREEN_ADS7846=m +CONFIG_TOUCHSCREEN_EGALAX=m +CONFIG_TOUCHSCREEN_RPI_FT5406=m +CONFIG_TOUCHSCREEN_USB_COMPOSITE=m +CONFIG_TOUCHSCREEN_STMPE=m +CONFIG_INPUT_MISC=y +CONFIG_INPUT_AD714X=m +CONFIG_INPUT_ATI_REMOTE2=m +CONFIG_INPUT_KEYSPAN_REMOTE=m +CONFIG_INPUT_POWERMATE=m +CONFIG_INPUT_YEALINK=m +CONFIG_INPUT_CM109=m +CONFIG_INPUT_UINPUT=m +CONFIG_INPUT_GPIO_ROTARY_ENCODER=m +CONFIG_INPUT_ADXL34X=m +CONFIG_INPUT_CMA3000=m +CONFIG_SERIO=m +CONFIG_SERIO_RAW=m +CONFIG_GAMEPORT=m +CONFIG_GAMEPORT_NS558=m +CONFIG_GAMEPORT_L4=m +CONFIG_BRCM_CHAR_DRIVERS=y +CONFIG_BCM_VC_CMA=y +CONFIG_BCM_VCIO=y +CONFIG_BCM_VC_SM=y +CONFIG_DEVPTS_MULTIPLE_INSTANCES=y # CONFIG_LEGACY_PTYS is not set # CONFIG_DEVKMEM is not set +CONFIG_SERIAL_8250=y +# CONFIG_SERIAL_8250_DEPRECATED_OPTIONS is not set +CONFIG_SERIAL_8250_CONSOLE=y +# CONFIG_SERIAL_8250_DMA is not set +CONFIG_SERIAL_8250_NR_UARTS=1 +CONFIG_SERIAL_8250_RUNTIME_UARTS=0 CONFIG_SERIAL_AMBA_PL011=y CONFIG_SERIAL_AMBA_PL011_CONSOLE=y +CONFIG_SERIAL_OF_PLATFORM=y CONFIG_TTY_PRINTK=y +CONFIG_HW_RANDOM=y +CONFIG_HW_RANDOM_BCM2835=m +CONFIG_RAW_DRIVER=y CONFIG_I2C=y -CONFIG_I2C_CHARDEV=y -CONFIG_I2C_BCM2835=y +CONFIG_I2C_CHARDEV=m +CONFIG_I2C_BCM2708=m +CONFIG_I2C_BCM2835=m CONFIG_SPI=y -CONFIG_SPI_BCM2835=y +CONFIG_SPI_BCM2835=m +CONFIG_SPI_SPIDEV=y +CONFIG_PPS=m +CONFIG_PPS_CLIENT_LDISC=m +CONFIG_PPS_CLIENT_GPIO=m CONFIG_GPIO_SYSFS=y +CONFIG_GPIO_ARIZONA=m +CONFIG_GPIO_STMPE=y +CONFIG_W1=m +CONFIG_W1_MASTER_DS2490=m +CONFIG_W1_MASTER_DS2482=m +CONFIG_W1_MASTER_DS1WM=m +CONFIG_W1_MASTER_GPIO=m +CONFIG_W1_SLAVE_THERM=m +CONFIG_W1_SLAVE_SMEM=m +CONFIG_W1_SLAVE_DS2408=m +CONFIG_W1_SLAVE_DS2413=m +CONFIG_W1_SLAVE_DS2406=m +CONFIG_W1_SLAVE_DS2423=m +CONFIG_W1_SLAVE_DS2431=m +CONFIG_W1_SLAVE_DS2433=m +CONFIG_W1_SLAVE_DS2760=m +CONFIG_W1_SLAVE_DS2780=m +CONFIG_W1_SLAVE_DS2781=m +CONFIG_W1_SLAVE_DS28E04=m +CONFIG_W1_SLAVE_BQ27000=m +CONFIG_BATTERY_DS2760=m +CONFIG_POWER_RESET=y +CONFIG_POWER_RESET_GPIO=y # CONFIG_HWMON is not set +CONFIG_THERMAL=y +CONFIG_THERMAL_BCM2835=y +CONFIG_WATCHDOG=y +CONFIG_BCM2835_WDT=y +CONFIG_UCB1400_CORE=m +CONFIG_MFD_STMPE=y +CONFIG_STMPE_SPI=y +CONFIG_MFD_ARIZONA_I2C=m +CONFIG_MFD_ARIZONA_SPI=m +CONFIG_MFD_WM5102=y +CONFIG_MEDIA_SUPPORT=m +CONFIG_MEDIA_CAMERA_SUPPORT=y +CONFIG_MEDIA_ANALOG_TV_SUPPORT=y +CONFIG_MEDIA_DIGITAL_TV_SUPPORT=y +CONFIG_MEDIA_RADIO_SUPPORT=y +CONFIG_MEDIA_RC_SUPPORT=y +CONFIG_MEDIA_CONTROLLER=y +CONFIG_LIRC=m +CONFIG_RC_DEVICES=y +CONFIG_RC_ATI_REMOTE=m +CONFIG_IR_IMON=m +CONFIG_IR_MCEUSB=m +CONFIG_IR_REDRAT3=m +CONFIG_IR_STREAMZAP=m +CONFIG_IR_IGUANA=m +CONFIG_IR_TTUSBIR=m +CONFIG_RC_LOOPBACK=m +CONFIG_IR_GPIO_CIR=m +CONFIG_MEDIA_USB_SUPPORT=y +CONFIG_USB_VIDEO_CLASS=m +CONFIG_USB_M5602=m +CONFIG_USB_STV06XX=m +CONFIG_USB_GL860=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_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_SPCA1528=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_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_PWC=m +CONFIG_VIDEO_CPIA2=m +CONFIG_USB_ZR364XX=m +CONFIG_USB_STKWEBCAM=m +CONFIG_USB_S2255=m +CONFIG_VIDEO_USBTV=m +CONFIG_VIDEO_PVRUSB2=m +CONFIG_VIDEO_HDPVR=m +CONFIG_VIDEO_USBVISION=m +CONFIG_VIDEO_STK1160_COMMON=m +CONFIG_VIDEO_STK1160_AC97=y +CONFIG_VIDEO_GO7007=m +CONFIG_VIDEO_GO7007_USB=m +CONFIG_VIDEO_GO7007_USB_S2250_BOARD=m +CONFIG_VIDEO_AU0828=m +CONFIG_VIDEO_AU0828_RC=y +CONFIG_VIDEO_CX231XX=m +CONFIG_VIDEO_CX231XX_ALSA=m +CONFIG_VIDEO_CX231XX_DVB=m +CONFIG_VIDEO_TM6000=m +CONFIG_VIDEO_TM6000_ALSA=m +CONFIG_VIDEO_TM6000_DVB=m +CONFIG_DVB_USB=m +CONFIG_DVB_USB_A800=m +CONFIG_DVB_USB_DIBUSB_MB=m +CONFIG_DVB_USB_DIBUSB_MB_FAULTY=y +CONFIG_DVB_USB_DIBUSB_MC=m +CONFIG_DVB_USB_DIB0700=m +CONFIG_DVB_USB_UMT_010=m +CONFIG_DVB_USB_CXUSB=m +CONFIG_DVB_USB_M920X=m +CONFIG_DVB_USB_DIGITV=m +CONFIG_DVB_USB_VP7045=m +CONFIG_DVB_USB_VP702X=m +CONFIG_DVB_USB_GP8PSK=m +CONFIG_DVB_USB_NOVA_T_USB2=m +CONFIG_DVB_USB_TTUSB2=m +CONFIG_DVB_USB_DTT200U=m +CONFIG_DVB_USB_OPERA1=m +CONFIG_DVB_USB_AF9005=m +CONFIG_DVB_USB_AF9005_REMOTE=m +CONFIG_DVB_USB_PCTV452E=m +CONFIG_DVB_USB_DW2102=m +CONFIG_DVB_USB_CINERGY_T2=m +CONFIG_DVB_USB_DTV5100=m +CONFIG_DVB_USB_FRIIO=m +CONFIG_DVB_USB_AZ6027=m +CONFIG_DVB_USB_TECHNISAT_USB2=m +CONFIG_DVB_USB_V2=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_CE6230=m +CONFIG_DVB_USB_EC168=m +CONFIG_DVB_USB_GL861=m +CONFIG_DVB_USB_LME2510=m +CONFIG_DVB_USB_MXL111SF=m +CONFIG_DVB_USB_RTL28XXU=m +CONFIG_DVB_USB_DVBSKY=m +CONFIG_SMS_USB_DRV=m +CONFIG_DVB_B2C2_FLEXCOP_USB=m +CONFIG_DVB_AS102=m +CONFIG_VIDEO_EM28XX=m +CONFIG_VIDEO_EM28XX_V4L2=m +CONFIG_VIDEO_EM28XX_ALSA=m +CONFIG_VIDEO_EM28XX_DVB=m +CONFIG_V4L_PLATFORM_DRIVERS=y +CONFIG_VIDEO_BCM2835=y +CONFIG_VIDEO_BCM2835_MMAL=m +CONFIG_RADIO_SI470X=y +CONFIG_USB_SI470X=m +CONFIG_I2C_SI470X=m +CONFIG_RADIO_SI4713=m +CONFIG_I2C_SI4713=m +CONFIG_USB_MR800=m +CONFIG_USB_DSBR=m +CONFIG_RADIO_SHARK=m +CONFIG_RADIO_SHARK2=m +CONFIG_USB_KEENE=m +CONFIG_USB_MA901=m +CONFIG_RADIO_TEA5764=m +CONFIG_RADIO_SAA7706H=m +CONFIG_RADIO_TEF6862=m +CONFIG_RADIO_WL1273=m +CONFIG_RADIO_WL128X=m +# CONFIG_MEDIA_SUBDRV_AUTOSELECT is not set +CONFIG_VIDEO_UDA1342=m +CONFIG_VIDEO_SONY_BTF_MPX=m +CONFIG_VIDEO_TVP5150=m +CONFIG_VIDEO_TW2804=m +CONFIG_VIDEO_TW9903=m +CONFIG_VIDEO_TW9906=m +CONFIG_VIDEO_OV7640=m +CONFIG_VIDEO_MT9V011=m CONFIG_FB=y -CONFIG_FB_SIMPLE=y +CONFIG_FB_BCM2708=y +CONFIG_FB_SSD1307=m +CONFIG_FB_RPISENSE=m +# CONFIG_BACKLIGHT_GENERIC is not set +CONFIG_BACKLIGHT_GPIO=m CONFIG_FRAMEBUFFER_CONSOLE=y CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y +CONFIG_LOGO=y +# CONFIG_LOGO_LINUX_MONO is not set +# CONFIG_LOGO_LINUX_VGA16 is not set +CONFIG_SOUND=y +CONFIG_SND=m +CONFIG_SND_SEQUENCER=m +CONFIG_SND_SEQ_DUMMY=m +CONFIG_SND_MIXER_OSS=m +CONFIG_SND_PCM_OSS=m +CONFIG_SND_SEQUENCER_OSS=y +CONFIG_SND_HRTIMER=m +CONFIG_SND_DUMMY=m +CONFIG_SND_ALOOP=m +CONFIG_SND_VIRMIDI=m +CONFIG_SND_MTPAV=m +CONFIG_SND_SERIAL_U16550=m +CONFIG_SND_MPU401=m +CONFIG_SND_BCM2835=m +CONFIG_SND_USB_AUDIO=m +CONFIG_SND_USB_UA101=m +CONFIG_SND_USB_CAIAQ=m +CONFIG_SND_USB_CAIAQ_INPUT=y +CONFIG_SND_USB_6FIRE=m +CONFIG_SND_SOC=m +CONFIG_SND_BCM2835_SOC_I2S=m +CONFIG_SND_BCM2708_SOC_I2S=m +CONFIG_SND_BCM2708_SOC_HIFIBERRY_DAC=m +CONFIG_SND_BCM2708_SOC_HIFIBERRY_DACPLUS=m +CONFIG_SND_BCM2708_SOC_HIFIBERRY_DIGI=m +CONFIG_SND_BCM2708_SOC_HIFIBERRY_AMP=m +CONFIG_SND_BCM2708_SOC_RPI_DAC=m +CONFIG_SND_BCM2708_SOC_RPI_PROTO=m +CONFIG_SND_BCM2708_SOC_IQAUDIO_DAC=m +CONFIG_SND_SOC_WM8804_I2C=m +CONFIG_SND_SIMPLE_CARD=m +CONFIG_SOUND_PRIME=m +CONFIG_HIDRAW=y +CONFIG_HID_A4TECH=m +CONFIG_HID_ACRUX=m +CONFIG_HID_APPLE=m +CONFIG_HID_BELKIN=m +CONFIG_HID_CHERRY=m +CONFIG_HID_CHICONY=m +CONFIG_HID_CYPRESS=m +CONFIG_HID_DRAGONRISE=m +CONFIG_HID_EMS_FF=m +CONFIG_HID_ELECOM=m +CONFIG_HID_ELO=m +CONFIG_HID_EZKEY=m +CONFIG_HID_HOLTEK=m +CONFIG_HID_KEYTOUCH=m +CONFIG_HID_KYE=m +CONFIG_HID_UCLOGIC=m +CONFIG_HID_WALTOP=m +CONFIG_HID_GYRATION=m +CONFIG_HID_TWINHAN=m +CONFIG_HID_KENSINGTON=m +CONFIG_HID_LCPOWER=m +CONFIG_HID_LOGITECH=m +CONFIG_HID_MAGICMOUSE=m +CONFIG_HID_MICROSOFT=m +CONFIG_HID_MONTEREY=m +CONFIG_HID_MULTITOUCH=m +CONFIG_HID_NTRIG=m +CONFIG_HID_ORTEK=m +CONFIG_HID_PANTHERLORD=m +CONFIG_HID_PETALYNX=m +CONFIG_HID_PICOLCD=m +CONFIG_HID_ROCCAT=m +CONFIG_HID_SAMSUNG=m +CONFIG_HID_SONY=m +CONFIG_HID_SPEEDLINK=m +CONFIG_HID_SUNPLUS=m +CONFIG_HID_GREENASIA=m +CONFIG_HID_SMARTJOYPLUS=m +CONFIG_HID_TOPSEED=m +CONFIG_HID_THINGM=m +CONFIG_HID_THRUSTMASTER=m +CONFIG_HID_WACOM=m +CONFIG_HID_WIIMOTE=m +CONFIG_HID_XINMO=m +CONFIG_HID_ZEROPLUS=m +CONFIG_HID_ZYDACRON=m +CONFIG_HID_PID=y +CONFIG_USB_HIDDEV=y CONFIG_USB=y +CONFIG_USB_ANNOUNCE_NEW_DEVICES=y +CONFIG_USB_MON=m +CONFIG_USB_DWCOTG=y +CONFIG_USB_PRINTER=m CONFIG_USB_STORAGE=y +CONFIG_USB_STORAGE_REALTEK=m +CONFIG_USB_STORAGE_DATAFAB=m +CONFIG_USB_STORAGE_FREECOM=m +CONFIG_USB_STORAGE_ISD200=m +CONFIG_USB_STORAGE_USBAT=m +CONFIG_USB_STORAGE_SDDR09=m +CONFIG_USB_STORAGE_SDDR55=m +CONFIG_USB_STORAGE_JUMPSHOT=m +CONFIG_USB_STORAGE_ALAUDA=m +CONFIG_USB_STORAGE_ONETOUCH=m +CONFIG_USB_STORAGE_KARMA=m +CONFIG_USB_STORAGE_CYPRESS_ATACB=m +CONFIG_USB_STORAGE_ENE_UB6250=m +CONFIG_USB_MDC800=m +CONFIG_USB_MICROTEK=m +CONFIG_USBIP_CORE=m +CONFIG_USBIP_VHCI_HCD=m +CONFIG_USBIP_HOST=m +CONFIG_USB_DWC2=y +CONFIG_USB_SERIAL=m +CONFIG_USB_SERIAL_GENERIC=y +CONFIG_USB_SERIAL_AIRCABLE=m +CONFIG_USB_SERIAL_ARK3116=m +CONFIG_USB_SERIAL_BELKIN=m +CONFIG_USB_SERIAL_CH341=m +CONFIG_USB_SERIAL_WHITEHEAT=m +CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m +CONFIG_USB_SERIAL_CP210X=m +CONFIG_USB_SERIAL_CYPRESS_M8=m +CONFIG_USB_SERIAL_EMPEG=m +CONFIG_USB_SERIAL_FTDI_SIO=m +CONFIG_USB_SERIAL_VISOR=m +CONFIG_USB_SERIAL_IPAQ=m +CONFIG_USB_SERIAL_IR=m +CONFIG_USB_SERIAL_EDGEPORT=m +CONFIG_USB_SERIAL_EDGEPORT_TI=m +CONFIG_USB_SERIAL_F81232=m +CONFIG_USB_SERIAL_GARMIN=m +CONFIG_USB_SERIAL_IPW=m +CONFIG_USB_SERIAL_IUU=m +CONFIG_USB_SERIAL_KEYSPAN_PDA=m +CONFIG_USB_SERIAL_KEYSPAN=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_MOS7720=m +CONFIG_USB_SERIAL_MOS7840=m +CONFIG_USB_SERIAL_NAVMAN=m +CONFIG_USB_SERIAL_PL2303=m +CONFIG_USB_SERIAL_OTI6858=m +CONFIG_USB_SERIAL_QCAUX=m +CONFIG_USB_SERIAL_QUALCOMM=m +CONFIG_USB_SERIAL_SPCP8X5=m +CONFIG_USB_SERIAL_SAFE=m +CONFIG_USB_SERIAL_SIERRAWIRELESS=m +CONFIG_USB_SERIAL_SYMBOL=m +CONFIG_USB_SERIAL_TI=m +CONFIG_USB_SERIAL_CYBERJACK=m +CONFIG_USB_SERIAL_XIRCOM=m +CONFIG_USB_SERIAL_OPTION=m +CONFIG_USB_SERIAL_OMNINET=m +CONFIG_USB_SERIAL_OPTICON=m +CONFIG_USB_SERIAL_XSENS_MT=m +CONFIG_USB_SERIAL_WISHBONE=m +CONFIG_USB_SERIAL_SSU100=m +CONFIG_USB_SERIAL_QT2=m +CONFIG_USB_SERIAL_DEBUG=m +CONFIG_USB_EMI62=m +CONFIG_USB_EMI26=m +CONFIG_USB_ADUTUX=m +CONFIG_USB_SEVSEG=m +CONFIG_USB_RIO500=m +CONFIG_USB_LEGOTOWER=m +CONFIG_USB_LCD=m +CONFIG_USB_LED=m +CONFIG_USB_CYPRESS_CY7C63=m +CONFIG_USB_CYTHERM=m +CONFIG_USB_IDMOUSE=m +CONFIG_USB_FTDI_ELAN=m +CONFIG_USB_APPLEDISPLAY=m +CONFIG_USB_LD=m +CONFIG_USB_TRANCEVIBRATOR=m +CONFIG_USB_IOWARRIOR=m +CONFIG_USB_TEST=m +CONFIG_USB_ISIGHTFW=m +CONFIG_USB_YUREX=m +CONFIG_USB_ATM=m +CONFIG_USB_SPEEDTOUCH=m +CONFIG_USB_CXACRU=m +CONFIG_USB_UEAGLEATM=m +CONFIG_USB_XUSBATM=m CONFIG_MMC=y +CONFIG_MMC_BLOCK_MINORS=32 +CONFIG_MMC_BCM2835=y +CONFIG_MMC_BCM2835_DMA=y +CONFIG_MMC_BCM2835_SDHOST=y CONFIG_MMC_SDHCI=y CONFIG_MMC_SDHCI_PLTFM=y CONFIG_MMC_SDHCI_BCM2835=y +CONFIG_MMC_SPI=m +CONFIG_LEDS_CLASS=y CONFIG_LEDS_GPIO=y CONFIG_LEDS_TRIGGER_TIMER=y CONFIG_LEDS_TRIGGER_ONESHOT=y CONFIG_LEDS_TRIGGER_HEARTBEAT=y +CONFIG_LEDS_TRIGGER_BACKLIGHT=y CONFIG_LEDS_TRIGGER_CPU=y CONFIG_LEDS_TRIGGER_GPIO=y CONFIG_LEDS_TRIGGER_DEFAULT_ON=y -CONFIG_LEDS_TRIGGER_TRANSIENT=y -CONFIG_LEDS_TRIGGER_CAMERA=y +CONFIG_LEDS_TRIGGER_TRANSIENT=m +CONFIG_LEDS_TRIGGER_CAMERA=m +CONFIG_LEDS_TRIGGER_INPUT=y +CONFIG_RTC_CLASS=y +# CONFIG_RTC_HCTOSYS is not set +CONFIG_RTC_DRV_DS1307=m +CONFIG_RTC_DRV_DS1374=m +CONFIG_RTC_DRV_DS1672=m +CONFIG_RTC_DRV_DS3232=m +CONFIG_RTC_DRV_MAX6900=m +CONFIG_RTC_DRV_RS5C372=m +CONFIG_RTC_DRV_ISL1208=m +CONFIG_RTC_DRV_ISL12022=m +CONFIG_RTC_DRV_ISL12057=m +CONFIG_RTC_DRV_X1205=m +CONFIG_RTC_DRV_PCF2127=m +CONFIG_RTC_DRV_PCF8523=m +CONFIG_RTC_DRV_PCF8563=m +CONFIG_RTC_DRV_PCF8583=m +CONFIG_RTC_DRV_M41T80=m +CONFIG_RTC_DRV_BQ32K=m +CONFIG_RTC_DRV_S35390A=m +CONFIG_RTC_DRV_FM3130=m +CONFIG_RTC_DRV_RX8581=m +CONFIG_RTC_DRV_RX8025=m +CONFIG_RTC_DRV_EM3027=m +CONFIG_RTC_DRV_RV3029C2=m +CONFIG_RTC_DRV_M41T93=m +CONFIG_RTC_DRV_M41T94=m +CONFIG_RTC_DRV_DS1305=m +CONFIG_RTC_DRV_DS1390=m +CONFIG_RTC_DRV_MAX6902=m +CONFIG_RTC_DRV_R9701=m +CONFIG_RTC_DRV_RS5C348=m +CONFIG_RTC_DRV_DS3234=m +CONFIG_RTC_DRV_PCF2123=m +CONFIG_RTC_DRV_RX4581=m +CONFIG_DMADEVICES=y +CONFIG_DMA_BCM2835=y +CONFIG_DMA_BCM2708=y +CONFIG_UIO=m +CONFIG_UIO_PDRV_GENIRQ=m CONFIG_STAGING=y -CONFIG_USB_DWC2=y -CONFIG_USB_DWC2_HOST=y +CONFIG_PRISM2_USB=m +CONFIG_R8712U=m +CONFIG_R8188EU=m +CONFIG_R8723AU=m +CONFIG_VT6656=m +CONFIG_SPEAKUP=m +CONFIG_SPEAKUP_SYNTH_SOFT=m +CONFIG_STAGING_MEDIA=y +CONFIG_LIRC_STAGING=y +CONFIG_LIRC_IMON=m +CONFIG_LIRC_RPI=m +CONFIG_LIRC_SASEM=m +CONFIG_LIRC_SERIAL=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_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_SSD1289=m +CONFIG_FB_TFT_SSD1306=m +CONFIG_FB_TFT_SSD1331=m +CONFIG_FB_TFT_SSD1351=m +CONFIG_FB_TFT_ST7735R=m +CONFIG_FB_TFT_TINYLCD=m +CONFIG_FB_TFT_TLS8204=m +CONFIG_FB_TFT_UC1701=m +CONFIG_FB_TFT_UPD161704=m +CONFIG_FB_TFT_WATTEROTT=m +CONFIG_FB_FLEX=m +CONFIG_FB_TFT_FBTFT_DEVICE=m +CONFIG_MAILBOX=y +CONFIG_BCM2835_MBOX=y # CONFIG_IOMMU_SUPPORT is not set +CONFIG_EXTCON=m +CONFIG_EXTCON_ARIZONA=m +CONFIG_IIO=m +CONFIG_IIO_BUFFER=y +CONFIG_IIO_BUFFER_CB=y +CONFIG_IIO_KFIFO_BUF=m +CONFIG_DHT11=m +CONFIG_RASPBERRYPI_FIRMWARE=y CONFIG_EXT2_FS=y CONFIG_EXT2_FS_XATTR=y CONFIG_EXT2_FS_POSIX_ACL=y @@ -107,18 +1105,110 @@ CONFIG_EXT3_FS_POSIX_ACL=y CONFIG_EXT4_FS=y CONFIG_EXT4_FS_POSIX_ACL=y +CONFIG_EXT4_FS_SECURITY=y +CONFIG_REISERFS_FS=m +CONFIG_REISERFS_FS_XATTR=y +CONFIG_REISERFS_FS_POSIX_ACL=y +CONFIG_REISERFS_FS_SECURITY=y +CONFIG_JFS_FS=m +CONFIG_JFS_POSIX_ACL=y +CONFIG_JFS_SECURITY=y +CONFIG_JFS_STATISTICS=y +CONFIG_XFS_FS=m +CONFIG_XFS_QUOTA=y +CONFIG_XFS_POSIX_ACL=y +CONFIG_XFS_RT=y +CONFIG_GFS2_FS=m +CONFIG_OCFS2_FS=m +CONFIG_BTRFS_FS=m +CONFIG_BTRFS_FS_POSIX_ACL=y +CONFIG_NILFS2_FS=m +CONFIG_F2FS_FS=y CONFIG_FANOTIFY=y +CONFIG_QFMT_V1=m +CONFIG_QFMT_V2=m +CONFIG_AUTOFS4_FS=y +CONFIG_FUSE_FS=m +CONFIG_CUSE=m +CONFIG_FSCACHE=y +CONFIG_FSCACHE_STATS=y +CONFIG_FSCACHE_HISTOGRAM=y +CONFIG_CACHEFILES=y +CONFIG_ISO9660_FS=m +CONFIG_JOLIET=y +CONFIG_ZISOFS=y +CONFIG_UDF_FS=m CONFIG_MSDOS_FS=y CONFIG_VFAT_FS=y +CONFIG_FAT_DEFAULT_IOCHARSET="ascii" +CONFIG_NTFS_FS=m +CONFIG_NTFS_RW=y CONFIG_TMPFS=y CONFIG_TMPFS_POSIX_ACL=y -# CONFIG_MISC_FILESYSTEMS is not set +CONFIG_CONFIGFS_FS=y +CONFIG_ECRYPT_FS=m +CONFIG_HFS_FS=m +CONFIG_HFSPLUS_FS=m +CONFIG_SQUASHFS=m +CONFIG_SQUASHFS_XATTR=y +CONFIG_SQUASHFS_LZO=y +CONFIG_SQUASHFS_XZ=y CONFIG_NFS_FS=y -CONFIG_NFSD=y +CONFIG_NFS_V3_ACL=y +CONFIG_NFS_V4=y +CONFIG_NFS_SWAP=y +CONFIG_ROOT_NFS=y +CONFIG_NFS_FSCACHE=y +CONFIG_NFSD=m +CONFIG_NFSD_V3_ACL=y +CONFIG_NFSD_V4=y +CONFIG_CIFS=m +CONFIG_CIFS_WEAK_PW_HASH=y +CONFIG_CIFS_UPCALL=y +CONFIG_CIFS_XATTR=y +CONFIG_CIFS_POSIX=y +CONFIG_9P_FS=m +CONFIG_9P_FS_POSIX_ACL=y +CONFIG_NLS_DEFAULT="utf8" 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_936=m +CONFIG_NLS_CODEPAGE_950=m +CONFIG_NLS_CODEPAGE_932=m +CONFIG_NLS_CODEPAGE_949=m +CONFIG_NLS_CODEPAGE_874=m +CONFIG_NLS_ISO8859_8=m +CONFIG_NLS_CODEPAGE_1250=m +CONFIG_NLS_CODEPAGE_1251=m CONFIG_NLS_ASCII=y -CONFIG_NLS_ISO8859_1=y +CONFIG_NLS_ISO8859_1=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_9=m +CONFIG_NLS_ISO8859_13=m +CONFIG_NLS_ISO8859_14=m +CONFIG_NLS_ISO8859_15=m +CONFIG_NLS_KOI8_R=m +CONFIG_NLS_KOI8_U=m CONFIG_NLS_UTF8=y +CONFIG_DLM=m CONFIG_PRINTK_TIME=y CONFIG_BOOT_PRINTK_DELAY=y CONFIG_DYNAMIC_DEBUG=y @@ -128,14 +1218,38 @@ CONFIG_UNUSED_SYMBOLS=y CONFIG_DEBUG_MEMORY_INIT=y CONFIG_LOCKUP_DETECTOR=y +CONFIG_TIMER_STATS=y +# CONFIG_DEBUG_PREEMPT is not set +CONFIG_LATENCYTOP=y +CONFIG_IRQSOFF_TRACER=y CONFIG_SCHED_TRACER=y CONFIG_STACK_TRACER=y +CONFIG_BLK_DEV_IO_TRACE=y +# CONFIG_KPROBE_EVENT is not set CONFIG_FUNCTION_PROFILER=y CONFIG_TEST_KSTRTOX=y CONFIG_KGDB=y CONFIG_KGDB_KDB=y +CONFIG_KDB_KEYBOARD=y CONFIG_STRICT_DEVMEM=y CONFIG_DEBUG_LL=y CONFIG_EARLY_PRINTK=y +CONFIG_CRYPTO_USER=m +CONFIG_CRYPTO_CRYPTD=m +CONFIG_CRYPTO_CBC=y +CONFIG_CRYPTO_CTS=m +CONFIG_CRYPTO_XTS=m +CONFIG_CRYPTO_XCBC=m +CONFIG_CRYPTO_SHA512=m +CONFIG_CRYPTO_TGR192=m +CONFIG_CRYPTO_WP512=m +CONFIG_CRYPTO_CAST5=m +CONFIG_CRYPTO_DES=y +# CONFIG_CRYPTO_HW is not set +CONFIG_ARM_CRYPTO=y +CONFIG_CRYPTO_SHA1_ARM=m +CONFIG_CRYPTO_AES_ARM=m +CONFIG_CRC_ITU_T=y +CONFIG_LIBCRC32C=y # CONFIG_XZ_DEC_ARM is not set # CONFIG_XZ_DEC_ARMTHUMB is not set --- linux-raspi2-4.2.0.orig/arch/arm/configs/bcmrpi_defconfig +++ linux-raspi2-4.2.0/arch/arm/configs/bcmrpi_defconfig @@ -0,0 +1,1249 @@ +# CONFIG_ARM_PATCH_PHYS_VIRT is not set +CONFIG_PHYS_OFFSET=0 +# CONFIG_LOCALVERSION_AUTO is not set +CONFIG_SYSVIPC=y +CONFIG_POSIX_MQUEUE=y +CONFIG_FHANDLE=y +CONFIG_NO_HZ=y +CONFIG_HIGH_RES_TIMERS=y +CONFIG_BSD_PROCESS_ACCT=y +CONFIG_BSD_PROCESS_ACCT_V3=y +CONFIG_TASKSTATS=y +CONFIG_TASK_DELAY_ACCT=y +CONFIG_TASK_XACCT=y +CONFIG_TASK_IO_ACCOUNTING=y +CONFIG_IKCONFIG=m +CONFIG_IKCONFIG_PROC=y +CONFIG_CGROUP_FREEZER=y +CONFIG_CGROUP_DEVICE=y +CONFIG_CPUSETS=y +CONFIG_CGROUP_CPUACCT=y +CONFIG_MEMCG=y +CONFIG_BLK_CGROUP=y +CONFIG_NAMESPACES=y +CONFIG_SCHED_AUTOGROUP=y +CONFIG_BLK_DEV_INITRD=y +CONFIG_EMBEDDED=y +# CONFIG_COMPAT_BRK is not set +CONFIG_PROFILING=y +CONFIG_OPROFILE=m +CONFIG_KPROBES=y +CONFIG_JUMP_LABEL=y +CONFIG_MODULES=y +CONFIG_MODULE_UNLOAD=y +CONFIG_MODVERSIONS=y +CONFIG_MODULE_SRCVERSION_ALL=y +CONFIG_BLK_DEV_THROTTLING=y +CONFIG_PARTITION_ADVANCED=y +CONFIG_MAC_PARTITION=y +CONFIG_CFQ_GROUP_IOSCHED=y +CONFIG_ARCH_BCM2708=y +CONFIG_BCM2708_DT=y +CONFIG_PREEMPT=y +CONFIG_AEABI=y +CONFIG_OABI_COMPAT=y +CONFIG_CLEANCACHE=y +CONFIG_FRONTSWAP=y +CONFIG_CMA=y +CONFIG_ZSMALLOC=m +CONFIG_PGTABLE_MAPPING=y +CONFIG_UACCESS_WITH_MEMCPY=y +CONFIG_SECCOMP=y +CONFIG_ZBOOT_ROM_TEXT=0x0 +CONFIG_ZBOOT_ROM_BSS=0x0 +CONFIG_CMDLINE="console=ttyAMA0,115200 kgdboc=ttyAMA0,115200 root=/dev/mmcblk0p2 rootfstype=ext4 rootwait" +CONFIG_CPU_FREQ=y +CONFIG_CPU_FREQ_STAT=m +CONFIG_CPU_FREQ_STAT_DETAILS=y +CONFIG_CPU_FREQ_DEFAULT_GOV_POWERSAVE=y +CONFIG_CPU_FREQ_GOV_PERFORMANCE=y +CONFIG_CPU_FREQ_GOV_USERSPACE=y +CONFIG_CPU_FREQ_GOV_ONDEMAND=y +CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y +CONFIG_VFP=y +CONFIG_BINFMT_MISC=m +# CONFIG_SUSPEND is not set +CONFIG_NET=y +CONFIG_PACKET=y +CONFIG_UNIX=y +CONFIG_XFRM_USER=y +CONFIG_NET_KEY=m +CONFIG_INET=y +CONFIG_IP_MULTICAST=y +CONFIG_IP_ADVANCED_ROUTER=y +CONFIG_IP_MULTIPLE_TABLES=y +CONFIG_IP_ROUTE_MULTIPATH=y +CONFIG_IP_ROUTE_VERBOSE=y +CONFIG_IP_PNP=y +CONFIG_IP_PNP_DHCP=y +CONFIG_IP_PNP_RARP=y +CONFIG_NET_IPIP=m +CONFIG_NET_IPGRE_DEMUX=m +CONFIG_NET_IPGRE=m +CONFIG_IP_MROUTE=y +CONFIG_IP_MROUTE_MULTIPLE_TABLES=y +CONFIG_IP_PIMSM_V1=y +CONFIG_IP_PIMSM_V2=y +CONFIG_SYN_COOKIES=y +CONFIG_INET_AH=m +CONFIG_INET_ESP=m +CONFIG_INET_IPCOMP=m +CONFIG_INET_XFRM_MODE_TRANSPORT=m +CONFIG_INET_XFRM_MODE_TUNNEL=m +CONFIG_INET_XFRM_MODE_BEET=m +CONFIG_INET_LRO=m +CONFIG_INET_DIAG=m +CONFIG_INET6_AH=m +CONFIG_INET6_ESP=m +CONFIG_INET6_IPCOMP=m +CONFIG_IPV6_TUNNEL=m +CONFIG_IPV6_MULTIPLE_TABLES=y +CONFIG_IPV6_MROUTE=y +CONFIG_IPV6_MROUTE_MULTIPLE_TABLES=y +CONFIG_IPV6_PIMSM_V2=y +CONFIG_NETFILTER=y +CONFIG_NF_CONNTRACK=m +CONFIG_NF_CONNTRACK_ZONES=y +CONFIG_NF_CONNTRACK_EVENTS=y +CONFIG_NF_CONNTRACK_TIMESTAMP=y +CONFIG_NF_CT_PROTO_DCCP=m +CONFIG_NF_CT_PROTO_UDPLITE=m +CONFIG_NF_CONNTRACK_AMANDA=m +CONFIG_NF_CONNTRACK_FTP=m +CONFIG_NF_CONNTRACK_H323=m +CONFIG_NF_CONNTRACK_IRC=m +CONFIG_NF_CONNTRACK_NETBIOS_NS=m +CONFIG_NF_CONNTRACK_SNMP=m +CONFIG_NF_CONNTRACK_PPTP=m +CONFIG_NF_CONNTRACK_SANE=m +CONFIG_NF_CONNTRACK_SIP=m +CONFIG_NF_CONNTRACK_TFTP=m +CONFIG_NF_CT_NETLINK=m +CONFIG_NETFILTER_XT_SET=m +CONFIG_NETFILTER_XT_TARGET_CHECKSUM=m +CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m +CONFIG_NETFILTER_XT_TARGET_CONNMARK=m +CONFIG_NETFILTER_XT_TARGET_DSCP=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_NFLOG=m +CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m +CONFIG_NETFILTER_XT_TARGET_NOTRACK=m +CONFIG_NETFILTER_XT_TARGET_TEE=m +CONFIG_NETFILTER_XT_TARGET_TPROXY=m +CONFIG_NETFILTER_XT_TARGET_TRACE=m +CONFIG_NETFILTER_XT_TARGET_TCPMSS=m +CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP=m +CONFIG_NETFILTER_XT_MATCH_ADDRTYPE=m +CONFIG_NETFILTER_XT_MATCH_BPF=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_ESP=m +CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m +CONFIG_NETFILTER_XT_MATCH_HELPER=m +CONFIG_NETFILTER_XT_MATCH_IPRANGE=m +CONFIG_NETFILTER_XT_MATCH_IPVS=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_POLICY=m +CONFIG_NETFILTER_XT_MATCH_PHYSDEV=m +CONFIG_NETFILTER_XT_MATCH_PKTTYPE=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_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_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_IPPORT=m +CONFIG_IP_SET_HASH_IPPORTIP=m +CONFIG_IP_SET_HASH_IPPORTNET=m +CONFIG_IP_SET_HASH_NET=m +CONFIG_IP_SET_HASH_NETPORT=m +CONFIG_IP_SET_HASH_NETIFACE=m +CONFIG_IP_SET_LIST_SET=m +CONFIG_IP_VS=m +CONFIG_IP_VS_PROTO_TCP=y +CONFIG_IP_VS_PROTO_UDP=y +CONFIG_IP_VS_PROTO_ESP=y +CONFIG_IP_VS_PROTO_AH=y +CONFIG_IP_VS_PROTO_SCTP=y +CONFIG_IP_VS_RR=m +CONFIG_IP_VS_WRR=m +CONFIG_IP_VS_LC=m +CONFIG_IP_VS_WLC=m +CONFIG_IP_VS_LBLC=m +CONFIG_IP_VS_LBLCR=m +CONFIG_IP_VS_DH=m +CONFIG_IP_VS_SH=m +CONFIG_IP_VS_SED=m +CONFIG_IP_VS_NQ=m +CONFIG_IP_VS_FTP=m +CONFIG_IP_VS_PE_SIP=m +CONFIG_NF_CONNTRACK_IPV4=m +CONFIG_IP_NF_IPTABLES=m +CONFIG_IP_NF_MATCH_AH=m +CONFIG_IP_NF_MATCH_ECN=m +CONFIG_IP_NF_MATCH_TTL=m +CONFIG_IP_NF_FILTER=m +CONFIG_IP_NF_TARGET_REJECT=m +CONFIG_IP_NF_NAT=m +CONFIG_IP_NF_TARGET_MASQUERADE=m +CONFIG_IP_NF_TARGET_NETMAP=m +CONFIG_IP_NF_TARGET_REDIRECT=m +CONFIG_IP_NF_MANGLE=m +CONFIG_IP_NF_TARGET_CLUSTERIP=m +CONFIG_IP_NF_TARGET_ECN=m +CONFIG_IP_NF_TARGET_TTL=m +CONFIG_IP_NF_RAW=m +CONFIG_IP_NF_ARPTABLES=m +CONFIG_IP_NF_ARPFILTER=m +CONFIG_IP_NF_ARP_MANGLE=m +CONFIG_NF_CONNTRACK_IPV6=m +CONFIG_IP6_NF_IPTABLES=m +CONFIG_IP6_NF_MATCH_AH=m +CONFIG_IP6_NF_MATCH_EUI64=m +CONFIG_IP6_NF_MATCH_FRAG=m +CONFIG_IP6_NF_MATCH_OPTS=m +CONFIG_IP6_NF_MATCH_HL=m +CONFIG_IP6_NF_MATCH_IPV6HEADER=m +CONFIG_IP6_NF_MATCH_MH=m +CONFIG_IP6_NF_MATCH_RT=m +CONFIG_IP6_NF_TARGET_HL=m +CONFIG_IP6_NF_FILTER=m +CONFIG_IP6_NF_TARGET_REJECT=m +CONFIG_IP6_NF_MANGLE=m +CONFIG_IP6_NF_RAW=m +CONFIG_IP6_NF_NAT=m +CONFIG_IP6_NF_TARGET_MASQUERADE=m +CONFIG_IP6_NF_TARGET_NPT=m +CONFIG_BRIDGE_NF_EBTABLES=m +CONFIG_BRIDGE_EBT_BROUTE=m +CONFIG_BRIDGE_EBT_T_FILTER=m +CONFIG_BRIDGE_EBT_T_NAT=m +CONFIG_BRIDGE_EBT_802_3=m +CONFIG_BRIDGE_EBT_AMONG=m +CONFIG_BRIDGE_EBT_ARP=m +CONFIG_BRIDGE_EBT_IP=m +CONFIG_BRIDGE_EBT_IP6=m +CONFIG_BRIDGE_EBT_LIMIT=m +CONFIG_BRIDGE_EBT_MARK=m +CONFIG_BRIDGE_EBT_PKTTYPE=m +CONFIG_BRIDGE_EBT_STP=m +CONFIG_BRIDGE_EBT_VLAN=m +CONFIG_BRIDGE_EBT_ARPREPLY=m +CONFIG_BRIDGE_EBT_DNAT=m +CONFIG_BRIDGE_EBT_MARK_T=m +CONFIG_BRIDGE_EBT_REDIRECT=m +CONFIG_BRIDGE_EBT_SNAT=m +CONFIG_BRIDGE_EBT_LOG=m +CONFIG_BRIDGE_EBT_NFLOG=m +CONFIG_SCTP_COOKIE_HMAC_SHA1=y +CONFIG_ATM=m +CONFIG_L2TP=m +CONFIG_L2TP_V3=y +CONFIG_L2TP_IP=m +CONFIG_L2TP_ETH=m +CONFIG_BRIDGE=m +CONFIG_VLAN_8021Q=m +CONFIG_VLAN_8021Q_GVRP=y +CONFIG_ATALK=m +CONFIG_6LOWPAN=m +CONFIG_IEEE802154=m +CONFIG_IEEE802154_6LOWPAN=m +CONFIG_MAC802154=m +CONFIG_NET_SCHED=y +CONFIG_NET_SCH_CBQ=m +CONFIG_NET_SCH_HTB=m +CONFIG_NET_SCH_HFSC=m +CONFIG_NET_SCH_PRIO=m +CONFIG_NET_SCH_MULTIQ=m +CONFIG_NET_SCH_RED=m +CONFIG_NET_SCH_SFB=m +CONFIG_NET_SCH_SFQ=m +CONFIG_NET_SCH_TEQL=m +CONFIG_NET_SCH_TBF=m +CONFIG_NET_SCH_GRED=m +CONFIG_NET_SCH_DSMARK=m +CONFIG_NET_SCH_NETEM=m +CONFIG_NET_SCH_DRR=m +CONFIG_NET_SCH_MQPRIO=m +CONFIG_NET_SCH_CHOKE=m +CONFIG_NET_SCH_QFQ=m +CONFIG_NET_SCH_CODEL=m +CONFIG_NET_SCH_FQ_CODEL=m +CONFIG_NET_SCH_INGRESS=m +CONFIG_NET_SCH_PLUG=m +CONFIG_NET_CLS_BASIC=m +CONFIG_NET_CLS_TCINDEX=m +CONFIG_NET_CLS_ROUTE4=m +CONFIG_NET_CLS_FW=m +CONFIG_NET_CLS_U32=m +CONFIG_CLS_U32_MARK=y +CONFIG_NET_CLS_RSVP=m +CONFIG_NET_CLS_RSVP6=m +CONFIG_NET_CLS_FLOW=m +CONFIG_NET_CLS_CGROUP=m +CONFIG_NET_EMATCH=y +CONFIG_NET_EMATCH_CMP=m +CONFIG_NET_EMATCH_NBYTE=m +CONFIG_NET_EMATCH_U32=m +CONFIG_NET_EMATCH_META=m +CONFIG_NET_EMATCH_TEXT=m +CONFIG_NET_EMATCH_IPSET=m +CONFIG_NET_CLS_ACT=y +CONFIG_NET_ACT_POLICE=m +CONFIG_NET_ACT_GACT=m +CONFIG_GACT_PROB=y +CONFIG_NET_ACT_MIRRED=m +CONFIG_NET_ACT_IPT=m +CONFIG_NET_ACT_NAT=m +CONFIG_NET_ACT_PEDIT=m +CONFIG_NET_ACT_SIMP=m +CONFIG_NET_ACT_SKBEDIT=m +CONFIG_NET_ACT_CSUM=m +CONFIG_BATMAN_ADV=m +CONFIG_OPENVSWITCH=m +CONFIG_NET_PKTGEN=m +CONFIG_HAMRADIO=y +CONFIG_AX25=m +CONFIG_NETROM=m +CONFIG_ROSE=m +CONFIG_MKISS=m +CONFIG_6PACK=m +CONFIG_BPQETHER=m +CONFIG_BAYCOM_SER_FDX=m +CONFIG_BAYCOM_SER_HDX=m +CONFIG_YAM=m +CONFIG_CAN=m +CONFIG_CAN_VCAN=m +CONFIG_CAN_MCP251X=m +CONFIG_IRDA=m +CONFIG_IRLAN=m +CONFIG_IRNET=m +CONFIG_IRCOMM=m +CONFIG_IRDA_ULTRA=y +CONFIG_IRDA_CACHE_LAST_LSAP=y +CONFIG_IRDA_FAST_RR=y +CONFIG_IRTTY_SIR=m +CONFIG_KINGSUN_DONGLE=m +CONFIG_KSDAZZLE_DONGLE=m +CONFIG_KS959_DONGLE=m +CONFIG_USB_IRDA=m +CONFIG_SIGMATEL_FIR=m +CONFIG_MCS_FIR=m +CONFIG_BT=m +CONFIG_BT_RFCOMM=m +CONFIG_BT_RFCOMM_TTY=y +CONFIG_BT_BNEP=m +CONFIG_BT_BNEP_MC_FILTER=y +CONFIG_BT_BNEP_PROTO_FILTER=y +CONFIG_BT_HIDP=m +CONFIG_BT_6LOWPAN=m +CONFIG_BT_HCIBTUSB=m +CONFIG_BT_HCIBCM203X=m +CONFIG_BT_HCIBPA10X=m +CONFIG_BT_HCIBFUSB=m +CONFIG_BT_HCIVHCI=m +CONFIG_BT_MRVL=m +CONFIG_BT_MRVL_SDIO=m +CONFIG_BT_ATH3K=m +CONFIG_BT_WILINK=m +CONFIG_MAC80211=m +CONFIG_MAC80211_MESH=y +CONFIG_WIMAX=m +CONFIG_RFKILL=m +CONFIG_RFKILL_INPUT=y +CONFIG_NET_9P=m +CONFIG_NFC=m +CONFIG_NFC_PN533=m +CONFIG_DEVTMPFS=y +CONFIG_DEVTMPFS_MOUNT=y +CONFIG_DMA_CMA=y +CONFIG_CMA_SIZE_MBYTES=5 +CONFIG_MTD=m +CONFIG_MTD_BLOCK=m +CONFIG_MTD_NAND=m +CONFIG_MTD_UBI=m +CONFIG_ZRAM=m +CONFIG_ZRAM_LZ4_COMPRESS=y +CONFIG_BLK_DEV_LOOP=y +CONFIG_BLK_DEV_CRYPTOLOOP=m +CONFIG_BLK_DEV_DRBD=m +CONFIG_BLK_DEV_NBD=m +CONFIG_BLK_DEV_RAM=y +CONFIG_CDROM_PKTCDVD=m +CONFIG_ATA_OVER_ETH=m +CONFIG_EEPROM_AT24=m +CONFIG_TI_ST=m +CONFIG_SCSI=y +# CONFIG_SCSI_PROC_FS is not set +CONFIG_BLK_DEV_SD=y +CONFIG_CHR_DEV_ST=m +CONFIG_CHR_DEV_OSST=m +CONFIG_BLK_DEV_SR=m +CONFIG_CHR_DEV_SG=m +CONFIG_SCSI_ISCSI_ATTRS=y +CONFIG_ISCSI_TCP=m +CONFIG_ISCSI_BOOT_SYSFS=m +CONFIG_MD=y +CONFIG_MD_LINEAR=m +CONFIG_MD_RAID0=m +CONFIG_BLK_DEV_DM=m +CONFIG_DM_CRYPT=m +CONFIG_DM_SNAPSHOT=m +CONFIG_DM_THIN_PROVISIONING=m +CONFIG_DM_MIRROR=m +CONFIG_DM_LOG_USERSPACE=m +CONFIG_DM_RAID=m +CONFIG_DM_ZERO=m +CONFIG_DM_DELAY=m +CONFIG_NETDEVICES=y +CONFIG_BONDING=m +CONFIG_DUMMY=m +CONFIG_IFB=m +CONFIG_MACVLAN=m +CONFIG_NETCONSOLE=m +CONFIG_TUN=m +CONFIG_VETH=m +CONFIG_ENC28J60=m +CONFIG_MDIO_BITBANG=m +CONFIG_PPP=m +CONFIG_PPP_BSDCOMP=m +CONFIG_PPP_DEFLATE=m +CONFIG_PPP_FILTER=y +CONFIG_PPP_MPPE=m +CONFIG_PPP_MULTILINK=y +CONFIG_PPPOATM=m +CONFIG_PPPOE=m +CONFIG_PPPOL2TP=m +CONFIG_PPP_ASYNC=m +CONFIG_PPP_SYNC_TTY=m +CONFIG_SLIP=m +CONFIG_SLIP_COMPRESSED=y +CONFIG_SLIP_SMART=y +CONFIG_USB_CATC=m +CONFIG_USB_KAWETH=m +CONFIG_USB_PEGASUS=m +CONFIG_USB_RTL8150=m +CONFIG_USB_RTL8152=m +CONFIG_USB_USBNET=y +CONFIG_USB_NET_AX8817X=m +CONFIG_USB_NET_AX88179_178A=m +CONFIG_USB_NET_CDCETHER=m +CONFIG_USB_NET_CDC_EEM=m +CONFIG_USB_NET_CDC_NCM=m +CONFIG_USB_NET_HUAWEI_CDC_NCM=m +CONFIG_USB_NET_CDC_MBIM=m +CONFIG_USB_NET_DM9601=m +CONFIG_USB_NET_SR9700=m +CONFIG_USB_NET_SR9800=m +CONFIG_USB_NET_SMSC75XX=m +CONFIG_USB_NET_SMSC95XX=y +CONFIG_USB_NET_GL620A=m +CONFIG_USB_NET_NET1080=m +CONFIG_USB_NET_PLUSB=m +CONFIG_USB_NET_MCS7830=m +CONFIG_USB_NET_CDC_SUBSET=m +CONFIG_USB_ALI_M5632=y +CONFIG_USB_AN2720=y +CONFIG_USB_EPSON2888=y +CONFIG_USB_KC2190=y +CONFIG_USB_NET_ZAURUS=m +CONFIG_USB_NET_CX82310_ETH=m +CONFIG_USB_NET_KALMIA=m +CONFIG_USB_NET_QMI_WWAN=m +CONFIG_USB_HSO=m +CONFIG_USB_NET_INT51X1=m +CONFIG_USB_IPHETH=m +CONFIG_USB_SIERRA_NET=m +CONFIG_USB_VL600=m +CONFIG_LIBERTAS_THINFIRM=m +CONFIG_LIBERTAS_THINFIRM_USB=m +CONFIG_AT76C50X_USB=m +CONFIG_USB_ZD1201=m +CONFIG_USB_NET_RNDIS_WLAN=m +CONFIG_RTL8187=m +CONFIG_MAC80211_HWSIM=m +CONFIG_ATH_CARDS=m +CONFIG_ATH9K=m +CONFIG_ATH9K_HTC=m +CONFIG_CARL9170=m +CONFIG_ATH6KL=m +CONFIG_ATH6KL_USB=m +CONFIG_AR5523=m +CONFIG_B43=m +# CONFIG_B43_PHY_N is not set +CONFIG_B43LEGACY=m +CONFIG_BRCMFMAC=m +CONFIG_BRCMFMAC_USB=y +CONFIG_HOSTAP=m +CONFIG_LIBERTAS=m +CONFIG_LIBERTAS_USB=m +CONFIG_LIBERTAS_SDIO=m +CONFIG_P54_COMMON=m +CONFIG_P54_USB=m +CONFIG_RT2X00=m +CONFIG_RT2500USB=m +CONFIG_RT73USB=m +CONFIG_RT2800USB=m +CONFIG_RT2800USB_RT3573=y +CONFIG_RT2800USB_RT53XX=y +CONFIG_RT2800USB_RT55XX=y +CONFIG_RT2800USB_UNKNOWN=y +CONFIG_WL_MEDIATEK=y +CONFIG_MT7601U=m +CONFIG_RTL8192CU=m +CONFIG_ZD1211RW=m +CONFIG_MWIFIEX=m +CONFIG_MWIFIEX_SDIO=m +CONFIG_WIMAX_I2400M_USB=m +CONFIG_IEEE802154_AT86RF230=m +CONFIG_IEEE802154_MRF24J40=m +CONFIG_IEEE802154_CC2520=m +CONFIG_INPUT_POLLDEV=m +# CONFIG_INPUT_MOUSEDEV_PSAUX is not set +CONFIG_INPUT_JOYDEV=m +CONFIG_INPUT_EVDEV=m +# CONFIG_KEYBOARD_ATKBD is not set +CONFIG_KEYBOARD_GPIO=m +# CONFIG_INPUT_MOUSE is not set +CONFIG_INPUT_JOYSTICK=y +CONFIG_JOYSTICK_IFORCE=m +CONFIG_JOYSTICK_IFORCE_USB=y +CONFIG_JOYSTICK_XPAD=m +CONFIG_JOYSTICK_XPAD_FF=y +CONFIG_JOYSTICK_RPISENSE=m +CONFIG_INPUT_TOUCHSCREEN=y +CONFIG_TOUCHSCREEN_ADS7846=m +CONFIG_TOUCHSCREEN_EGALAX=m +CONFIG_TOUCHSCREEN_RPI_FT5406=m +CONFIG_TOUCHSCREEN_USB_COMPOSITE=m +CONFIG_TOUCHSCREEN_STMPE=m +CONFIG_INPUT_MISC=y +CONFIG_INPUT_AD714X=m +CONFIG_INPUT_ATI_REMOTE2=m +CONFIG_INPUT_KEYSPAN_REMOTE=m +CONFIG_INPUT_POWERMATE=m +CONFIG_INPUT_YEALINK=m +CONFIG_INPUT_CM109=m +CONFIG_INPUT_UINPUT=m +CONFIG_INPUT_GPIO_ROTARY_ENCODER=m +CONFIG_INPUT_ADXL34X=m +CONFIG_INPUT_CMA3000=m +CONFIG_SERIO=m +CONFIG_SERIO_RAW=m +CONFIG_GAMEPORT=m +CONFIG_GAMEPORT_NS558=m +CONFIG_GAMEPORT_L4=m +CONFIG_BRCM_CHAR_DRIVERS=y +CONFIG_BCM_VC_CMA=y +CONFIG_BCM_VCIO=y +CONFIG_BCM_VC_SM=y +CONFIG_DEVPTS_MULTIPLE_INSTANCES=y +# CONFIG_LEGACY_PTYS is not set +# CONFIG_DEVKMEM is not set +CONFIG_SERIAL_8250=y +# CONFIG_SERIAL_8250_DEPRECATED_OPTIONS is not set +CONFIG_SERIAL_8250_CONSOLE=y +# CONFIG_SERIAL_8250_DMA is not set +CONFIG_SERIAL_8250_NR_UARTS=1 +CONFIG_SERIAL_8250_RUNTIME_UARTS=0 +CONFIG_SERIAL_AMBA_PL011=y +CONFIG_SERIAL_AMBA_PL011_CONSOLE=y +CONFIG_SERIAL_OF_PLATFORM=y +CONFIG_TTY_PRINTK=y +CONFIG_HW_RANDOM=y +CONFIG_HW_RANDOM_BCM2835=m +CONFIG_HW_RANDOM_BCM2708=m +CONFIG_RAW_DRIVER=y +CONFIG_I2C=y +CONFIG_I2C_CHARDEV=m +CONFIG_I2C_BCM2708=m +CONFIG_SPI=y +CONFIG_SPI_BCM2835=m +CONFIG_SPI_BCM2708=m +CONFIG_SPI_SPIDEV=y +CONFIG_PPS=m +CONFIG_PPS_CLIENT_LDISC=m +CONFIG_PPS_CLIENT_GPIO=m +CONFIG_GPIO_SYSFS=y +CONFIG_GPIO_ARIZONA=m +CONFIG_GPIO_STMPE=y +CONFIG_W1=m +CONFIG_W1_MASTER_DS2490=m +CONFIG_W1_MASTER_DS2482=m +CONFIG_W1_MASTER_DS1WM=m +CONFIG_W1_MASTER_GPIO=m +CONFIG_W1_SLAVE_THERM=m +CONFIG_W1_SLAVE_SMEM=m +CONFIG_W1_SLAVE_DS2408=m +CONFIG_W1_SLAVE_DS2413=m +CONFIG_W1_SLAVE_DS2406=m +CONFIG_W1_SLAVE_DS2423=m +CONFIG_W1_SLAVE_DS2431=m +CONFIG_W1_SLAVE_DS2433=m +CONFIG_W1_SLAVE_DS2760=m +CONFIG_W1_SLAVE_DS2780=m +CONFIG_W1_SLAVE_DS2781=m +CONFIG_W1_SLAVE_DS28E04=m +CONFIG_W1_SLAVE_BQ27000=m +CONFIG_BATTERY_DS2760=m +CONFIG_POWER_RESET=y +CONFIG_POWER_RESET_GPIO=y +CONFIG_HWMON=m +CONFIG_SENSORS_SHT21=m +CONFIG_SENSORS_SHTC1=m +CONFIG_THERMAL=y +CONFIG_THERMAL_BCM2835=y +CONFIG_WATCHDOG=y +CONFIG_BCM2708_WDT=m +CONFIG_BCM2835_WDT=m +CONFIG_UCB1400_CORE=m +CONFIG_MFD_STMPE=y +CONFIG_STMPE_SPI=y +CONFIG_MFD_ARIZONA_I2C=m +CONFIG_MFD_ARIZONA_SPI=m +CONFIG_MFD_WM5102=y +CONFIG_MEDIA_SUPPORT=m +CONFIG_MEDIA_CAMERA_SUPPORT=y +CONFIG_MEDIA_ANALOG_TV_SUPPORT=y +CONFIG_MEDIA_DIGITAL_TV_SUPPORT=y +CONFIG_MEDIA_RADIO_SUPPORT=y +CONFIG_MEDIA_RC_SUPPORT=y +CONFIG_MEDIA_CONTROLLER=y +CONFIG_LIRC=m +CONFIG_RC_DEVICES=y +CONFIG_RC_ATI_REMOTE=m +CONFIG_IR_IMON=m +CONFIG_IR_MCEUSB=m +CONFIG_IR_REDRAT3=m +CONFIG_IR_STREAMZAP=m +CONFIG_IR_IGUANA=m +CONFIG_IR_TTUSBIR=m +CONFIG_RC_LOOPBACK=m +CONFIG_IR_GPIO_CIR=m +CONFIG_MEDIA_USB_SUPPORT=y +CONFIG_USB_VIDEO_CLASS=m +CONFIG_USB_M5602=m +CONFIG_USB_STV06XX=m +CONFIG_USB_GL860=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_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_SPCA1528=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_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_PWC=m +CONFIG_VIDEO_CPIA2=m +CONFIG_USB_ZR364XX=m +CONFIG_USB_STKWEBCAM=m +CONFIG_USB_S2255=m +CONFIG_VIDEO_USBTV=m +CONFIG_VIDEO_PVRUSB2=m +CONFIG_VIDEO_HDPVR=m +CONFIG_VIDEO_USBVISION=m +CONFIG_VIDEO_STK1160_COMMON=m +CONFIG_VIDEO_STK1160_AC97=y +CONFIG_VIDEO_GO7007=m +CONFIG_VIDEO_GO7007_USB=m +CONFIG_VIDEO_GO7007_USB_S2250_BOARD=m +CONFIG_VIDEO_AU0828=m +CONFIG_VIDEO_AU0828_RC=y +CONFIG_VIDEO_CX231XX=m +CONFIG_VIDEO_CX231XX_ALSA=m +CONFIG_VIDEO_CX231XX_DVB=m +CONFIG_VIDEO_TM6000=m +CONFIG_VIDEO_TM6000_ALSA=m +CONFIG_VIDEO_TM6000_DVB=m +CONFIG_DVB_USB=m +CONFIG_DVB_USB_A800=m +CONFIG_DVB_USB_DIBUSB_MB=m +CONFIG_DVB_USB_DIBUSB_MB_FAULTY=y +CONFIG_DVB_USB_DIBUSB_MC=m +CONFIG_DVB_USB_DIB0700=m +CONFIG_DVB_USB_UMT_010=m +CONFIG_DVB_USB_CXUSB=m +CONFIG_DVB_USB_M920X=m +CONFIG_DVB_USB_DIGITV=m +CONFIG_DVB_USB_VP7045=m +CONFIG_DVB_USB_VP702X=m +CONFIG_DVB_USB_GP8PSK=m +CONFIG_DVB_USB_NOVA_T_USB2=m +CONFIG_DVB_USB_TTUSB2=m +CONFIG_DVB_USB_DTT200U=m +CONFIG_DVB_USB_OPERA1=m +CONFIG_DVB_USB_AF9005=m +CONFIG_DVB_USB_AF9005_REMOTE=m +CONFIG_DVB_USB_PCTV452E=m +CONFIG_DVB_USB_DW2102=m +CONFIG_DVB_USB_CINERGY_T2=m +CONFIG_DVB_USB_DTV5100=m +CONFIG_DVB_USB_FRIIO=m +CONFIG_DVB_USB_AZ6027=m +CONFIG_DVB_USB_TECHNISAT_USB2=m +CONFIG_DVB_USB_V2=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_CE6230=m +CONFIG_DVB_USB_EC168=m +CONFIG_DVB_USB_GL861=m +CONFIG_DVB_USB_LME2510=m +CONFIG_DVB_USB_MXL111SF=m +CONFIG_DVB_USB_RTL28XXU=m +CONFIG_DVB_USB_DVBSKY=m +CONFIG_SMS_USB_DRV=m +CONFIG_DVB_B2C2_FLEXCOP_USB=m +CONFIG_DVB_AS102=m +CONFIG_VIDEO_EM28XX=m +CONFIG_VIDEO_EM28XX_V4L2=m +CONFIG_VIDEO_EM28XX_ALSA=m +CONFIG_VIDEO_EM28XX_DVB=m +CONFIG_V4L_PLATFORM_DRIVERS=y +CONFIG_VIDEO_BCM2835=y +CONFIG_VIDEO_BCM2835_MMAL=m +CONFIG_RADIO_SI470X=y +CONFIG_USB_SI470X=m +CONFIG_I2C_SI470X=m +CONFIG_RADIO_SI4713=m +CONFIG_I2C_SI4713=m +CONFIG_USB_MR800=m +CONFIG_USB_DSBR=m +CONFIG_RADIO_SHARK=m +CONFIG_RADIO_SHARK2=m +CONFIG_USB_KEENE=m +CONFIG_USB_MA901=m +CONFIG_RADIO_TEA5764=m +CONFIG_RADIO_SAA7706H=m +CONFIG_RADIO_TEF6862=m +CONFIG_RADIO_WL1273=m +CONFIG_RADIO_WL128X=m +# CONFIG_MEDIA_SUBDRV_AUTOSELECT is not set +CONFIG_VIDEO_UDA1342=m +CONFIG_VIDEO_SONY_BTF_MPX=m +CONFIG_VIDEO_TVP5150=m +CONFIG_VIDEO_TW2804=m +CONFIG_VIDEO_TW9903=m +CONFIG_VIDEO_TW9906=m +CONFIG_VIDEO_OV7640=m +CONFIG_VIDEO_MT9V011=m +CONFIG_FB=y +CONFIG_FB_BCM2708=y +CONFIG_FB_SSD1307=m +CONFIG_FB_RPISENSE=m +# CONFIG_BACKLIGHT_GENERIC is not set +CONFIG_BACKLIGHT_GPIO=m +CONFIG_FRAMEBUFFER_CONSOLE=y +CONFIG_LOGO=y +# CONFIG_LOGO_LINUX_MONO is not set +# CONFIG_LOGO_LINUX_VGA16 is not set +CONFIG_SOUND=y +CONFIG_SND=m +CONFIG_SND_SEQUENCER=m +CONFIG_SND_SEQ_DUMMY=m +CONFIG_SND_MIXER_OSS=m +CONFIG_SND_PCM_OSS=m +CONFIG_SND_SEQUENCER_OSS=y +CONFIG_SND_HRTIMER=m +CONFIG_SND_DUMMY=m +CONFIG_SND_ALOOP=m +CONFIG_SND_VIRMIDI=m +CONFIG_SND_MTPAV=m +CONFIG_SND_SERIAL_U16550=m +CONFIG_SND_MPU401=m +CONFIG_SND_BCM2835=m +CONFIG_SND_USB_AUDIO=m +CONFIG_SND_USB_UA101=m +CONFIG_SND_USB_CAIAQ=m +CONFIG_SND_USB_CAIAQ_INPUT=y +CONFIG_SND_USB_6FIRE=m +CONFIG_SND_SOC=m +CONFIG_SND_BCM2708_SOC_I2S=m +CONFIG_SND_BCM2708_SOC_HIFIBERRY_DAC=m +CONFIG_SND_BCM2708_SOC_HIFIBERRY_DACPLUS=m +CONFIG_SND_BCM2708_SOC_HIFIBERRY_DIGI=m +CONFIG_SND_BCM2708_SOC_HIFIBERRY_AMP=m +CONFIG_SND_BCM2708_SOC_RPI_DAC=m +CONFIG_SND_BCM2708_SOC_RPI_PROTO=m +CONFIG_SND_BCM2708_SOC_IQAUDIO_DAC=m +CONFIG_SND_BCM2708_SOC_RASPIDAC3=m +CONFIG_SND_SOC_ADAU1701=m +CONFIG_SND_SOC_WM8804_I2C=m +CONFIG_SND_SIMPLE_CARD=m +CONFIG_SOUND_PRIME=m +CONFIG_HIDRAW=y +CONFIG_UHID=m +CONFIG_HID_A4TECH=m +CONFIG_HID_ACRUX=m +CONFIG_HID_APPLE=m +CONFIG_HID_BELKIN=m +CONFIG_HID_CHERRY=m +CONFIG_HID_CHICONY=m +CONFIG_HID_CYPRESS=m +CONFIG_HID_DRAGONRISE=m +CONFIG_HID_EMS_FF=m +CONFIG_HID_ELECOM=m +CONFIG_HID_ELO=m +CONFIG_HID_EZKEY=m +CONFIG_HID_HOLTEK=m +CONFIG_HID_KEYTOUCH=m +CONFIG_HID_KYE=m +CONFIG_HID_UCLOGIC=m +CONFIG_HID_WALTOP=m +CONFIG_HID_GYRATION=m +CONFIG_HID_TWINHAN=m +CONFIG_HID_KENSINGTON=m +CONFIG_HID_LCPOWER=m +CONFIG_HID_LOGITECH=m +CONFIG_HID_MAGICMOUSE=m +CONFIG_HID_MICROSOFT=m +CONFIG_HID_MONTEREY=m +CONFIG_HID_MULTITOUCH=m +CONFIG_HID_NTRIG=m +CONFIG_HID_ORTEK=m +CONFIG_HID_PANTHERLORD=m +CONFIG_HID_PETALYNX=m +CONFIG_HID_PICOLCD=m +CONFIG_HID_ROCCAT=m +CONFIG_HID_SAMSUNG=m +CONFIG_HID_SONY=m +CONFIG_HID_SPEEDLINK=m +CONFIG_HID_SUNPLUS=m +CONFIG_HID_GREENASIA=m +CONFIG_HID_SMARTJOYPLUS=m +CONFIG_HID_TOPSEED=m +CONFIG_HID_THINGM=m +CONFIG_HID_THRUSTMASTER=m +CONFIG_HID_WACOM=m +CONFIG_HID_WIIMOTE=m +CONFIG_HID_XINMO=m +CONFIG_HID_ZEROPLUS=m +CONFIG_HID_ZYDACRON=m +CONFIG_HID_PID=y +CONFIG_USB_HIDDEV=y +CONFIG_USB=y +CONFIG_USB_ANNOUNCE_NEW_DEVICES=y +CONFIG_USB_MON=m +CONFIG_USB_DWCOTG=y +CONFIG_USB_PRINTER=m +CONFIG_USB_STORAGE=y +CONFIG_USB_STORAGE_REALTEK=m +CONFIG_USB_STORAGE_DATAFAB=m +CONFIG_USB_STORAGE_FREECOM=m +CONFIG_USB_STORAGE_ISD200=m +CONFIG_USB_STORAGE_USBAT=m +CONFIG_USB_STORAGE_SDDR09=m +CONFIG_USB_STORAGE_SDDR55=m +CONFIG_USB_STORAGE_JUMPSHOT=m +CONFIG_USB_STORAGE_ALAUDA=m +CONFIG_USB_STORAGE_ONETOUCH=m +CONFIG_USB_STORAGE_KARMA=m +CONFIG_USB_STORAGE_CYPRESS_ATACB=m +CONFIG_USB_STORAGE_ENE_UB6250=m +CONFIG_USB_MDC800=m +CONFIG_USB_MICROTEK=m +CONFIG_USBIP_CORE=m +CONFIG_USBIP_VHCI_HCD=m +CONFIG_USBIP_HOST=m +CONFIG_USB_SERIAL=m +CONFIG_USB_SERIAL_GENERIC=y +CONFIG_USB_SERIAL_AIRCABLE=m +CONFIG_USB_SERIAL_ARK3116=m +CONFIG_USB_SERIAL_BELKIN=m +CONFIG_USB_SERIAL_CH341=m +CONFIG_USB_SERIAL_WHITEHEAT=m +CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m +CONFIG_USB_SERIAL_CP210X=m +CONFIG_USB_SERIAL_CYPRESS_M8=m +CONFIG_USB_SERIAL_EMPEG=m +CONFIG_USB_SERIAL_FTDI_SIO=m +CONFIG_USB_SERIAL_VISOR=m +CONFIG_USB_SERIAL_IPAQ=m +CONFIG_USB_SERIAL_IR=m +CONFIG_USB_SERIAL_EDGEPORT=m +CONFIG_USB_SERIAL_EDGEPORT_TI=m +CONFIG_USB_SERIAL_F81232=m +CONFIG_USB_SERIAL_GARMIN=m +CONFIG_USB_SERIAL_IPW=m +CONFIG_USB_SERIAL_IUU=m +CONFIG_USB_SERIAL_KEYSPAN_PDA=m +CONFIG_USB_SERIAL_KEYSPAN=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_MOS7720=m +CONFIG_USB_SERIAL_MOS7840=m +CONFIG_USB_SERIAL_NAVMAN=m +CONFIG_USB_SERIAL_PL2303=m +CONFIG_USB_SERIAL_OTI6858=m +CONFIG_USB_SERIAL_QCAUX=m +CONFIG_USB_SERIAL_QUALCOMM=m +CONFIG_USB_SERIAL_SPCP8X5=m +CONFIG_USB_SERIAL_SAFE=m +CONFIG_USB_SERIAL_SIERRAWIRELESS=m +CONFIG_USB_SERIAL_SYMBOL=m +CONFIG_USB_SERIAL_TI=m +CONFIG_USB_SERIAL_CYBERJACK=m +CONFIG_USB_SERIAL_XIRCOM=m +CONFIG_USB_SERIAL_OPTION=m +CONFIG_USB_SERIAL_OMNINET=m +CONFIG_USB_SERIAL_OPTICON=m +CONFIG_USB_SERIAL_XSENS_MT=m +CONFIG_USB_SERIAL_WISHBONE=m +CONFIG_USB_SERIAL_SSU100=m +CONFIG_USB_SERIAL_QT2=m +CONFIG_USB_SERIAL_DEBUG=m +CONFIG_USB_EMI62=m +CONFIG_USB_EMI26=m +CONFIG_USB_ADUTUX=m +CONFIG_USB_SEVSEG=m +CONFIG_USB_RIO500=m +CONFIG_USB_LEGOTOWER=m +CONFIG_USB_LCD=m +CONFIG_USB_LED=m +CONFIG_USB_CYPRESS_CY7C63=m +CONFIG_USB_CYTHERM=m +CONFIG_USB_IDMOUSE=m +CONFIG_USB_FTDI_ELAN=m +CONFIG_USB_APPLEDISPLAY=m +CONFIG_USB_LD=m +CONFIG_USB_TRANCEVIBRATOR=m +CONFIG_USB_IOWARRIOR=m +CONFIG_USB_TEST=m +CONFIG_USB_ISIGHTFW=m +CONFIG_USB_YUREX=m +CONFIG_USB_ATM=m +CONFIG_USB_SPEEDTOUCH=m +CONFIG_USB_CXACRU=m +CONFIG_USB_UEAGLEATM=m +CONFIG_USB_XUSBATM=m +CONFIG_MMC=y +CONFIG_MMC_BLOCK_MINORS=32 +CONFIG_MMC_BCM2835=y +CONFIG_MMC_BCM2835_DMA=y +CONFIG_MMC_BCM2835_SDHOST=y +CONFIG_MMC_SDHCI=y +CONFIG_MMC_SDHCI_PLTFM=y +CONFIG_MMC_SPI=m +CONFIG_LEDS_CLASS=y +CONFIG_LEDS_GPIO=y +CONFIG_LEDS_TRIGGER_TIMER=y +CONFIG_LEDS_TRIGGER_ONESHOT=y +CONFIG_LEDS_TRIGGER_HEARTBEAT=y +CONFIG_LEDS_TRIGGER_BACKLIGHT=y +CONFIG_LEDS_TRIGGER_CPU=y +CONFIG_LEDS_TRIGGER_GPIO=y +CONFIG_LEDS_TRIGGER_DEFAULT_ON=y +CONFIG_LEDS_TRIGGER_TRANSIENT=m +CONFIG_LEDS_TRIGGER_CAMERA=m +CONFIG_LEDS_TRIGGER_INPUT=y +CONFIG_RTC_CLASS=y +# CONFIG_RTC_HCTOSYS is not set +CONFIG_RTC_DRV_DS1307=m +CONFIG_RTC_DRV_DS1374=m +CONFIG_RTC_DRV_DS1672=m +CONFIG_RTC_DRV_DS3232=m +CONFIG_RTC_DRV_MAX6900=m +CONFIG_RTC_DRV_RS5C372=m +CONFIG_RTC_DRV_ISL1208=m +CONFIG_RTC_DRV_ISL12022=m +CONFIG_RTC_DRV_ISL12057=m +CONFIG_RTC_DRV_X1205=m +CONFIG_RTC_DRV_PCF2127=m +CONFIG_RTC_DRV_PCF8523=m +CONFIG_RTC_DRV_PCF8563=m +CONFIG_RTC_DRV_PCF8583=m +CONFIG_RTC_DRV_M41T80=m +CONFIG_RTC_DRV_BQ32K=m +CONFIG_RTC_DRV_S35390A=m +CONFIG_RTC_DRV_FM3130=m +CONFIG_RTC_DRV_RX8581=m +CONFIG_RTC_DRV_RX8025=m +CONFIG_RTC_DRV_EM3027=m +CONFIG_RTC_DRV_RV3029C2=m +CONFIG_RTC_DRV_M41T93=m +CONFIG_RTC_DRV_M41T94=m +CONFIG_RTC_DRV_DS1305=m +CONFIG_RTC_DRV_DS1390=m +CONFIG_RTC_DRV_MAX6902=m +CONFIG_RTC_DRV_R9701=m +CONFIG_RTC_DRV_RS5C348=m +CONFIG_RTC_DRV_DS3234=m +CONFIG_RTC_DRV_PCF2123=m +CONFIG_RTC_DRV_RX4581=m +CONFIG_DMADEVICES=y +CONFIG_DMA_BCM2835=y +CONFIG_DMA_BCM2708=y +CONFIG_UIO=m +CONFIG_UIO_PDRV_GENIRQ=m +CONFIG_STAGING=y +CONFIG_PRISM2_USB=m +CONFIG_R8712U=m +CONFIG_R8188EU=m +CONFIG_R8723AU=m +CONFIG_VT6656=m +CONFIG_SPEAKUP=m +CONFIG_SPEAKUP_SYNTH_SOFT=m +CONFIG_STAGING_MEDIA=y +CONFIG_LIRC_STAGING=y +CONFIG_LIRC_IMON=m +CONFIG_LIRC_RPI=m +CONFIG_LIRC_SASEM=m +CONFIG_LIRC_SERIAL=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_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_SSD1289=m +CONFIG_FB_TFT_SSD1306=m +CONFIG_FB_TFT_SSD1331=m +CONFIG_FB_TFT_SSD1351=m +CONFIG_FB_TFT_ST7735R=m +CONFIG_FB_TFT_TINYLCD=m +CONFIG_FB_TFT_TLS8204=m +CONFIG_FB_TFT_UC1701=m +CONFIG_FB_TFT_UPD161704=m +CONFIG_FB_TFT_WATTEROTT=m +CONFIG_FB_FLEX=m +CONFIG_FB_TFT_FBTFT_DEVICE=m +CONFIG_MAILBOX=y +CONFIG_BCM2835_MBOX=y +# CONFIG_IOMMU_SUPPORT is not set +CONFIG_EXTCON=m +CONFIG_EXTCON_ARIZONA=m +CONFIG_IIO=m +CONFIG_IIO_BUFFER=y +CONFIG_IIO_BUFFER_CB=y +CONFIG_IIO_KFIFO_BUF=m +CONFIG_DHT11=m +CONFIG_PWM_BCM2835=m +CONFIG_RASPBERRYPI_FIRMWARE=y +CONFIG_EXT4_FS=y +CONFIG_EXT4_FS_POSIX_ACL=y +CONFIG_EXT4_FS_SECURITY=y +CONFIG_REISERFS_FS=m +CONFIG_REISERFS_FS_XATTR=y +CONFIG_REISERFS_FS_POSIX_ACL=y +CONFIG_REISERFS_FS_SECURITY=y +CONFIG_JFS_FS=m +CONFIG_JFS_POSIX_ACL=y +CONFIG_JFS_SECURITY=y +CONFIG_JFS_STATISTICS=y +CONFIG_XFS_FS=m +CONFIG_XFS_QUOTA=y +CONFIG_XFS_POSIX_ACL=y +CONFIG_XFS_RT=y +CONFIG_GFS2_FS=m +CONFIG_OCFS2_FS=m +CONFIG_BTRFS_FS=m +CONFIG_BTRFS_FS_POSIX_ACL=y +CONFIG_NILFS2_FS=m +CONFIG_F2FS_FS=y +CONFIG_FANOTIFY=y +CONFIG_QFMT_V1=m +CONFIG_QFMT_V2=m +CONFIG_AUTOFS4_FS=y +CONFIG_FUSE_FS=m +CONFIG_CUSE=m +CONFIG_OVERLAY_FS=m +CONFIG_FSCACHE=y +CONFIG_FSCACHE_STATS=y +CONFIG_FSCACHE_HISTOGRAM=y +CONFIG_CACHEFILES=y +CONFIG_ISO9660_FS=m +CONFIG_JOLIET=y +CONFIG_ZISOFS=y +CONFIG_UDF_FS=m +CONFIG_MSDOS_FS=y +CONFIG_VFAT_FS=y +CONFIG_FAT_DEFAULT_IOCHARSET="ascii" +CONFIG_NTFS_FS=m +CONFIG_NTFS_RW=y +CONFIG_TMPFS=y +CONFIG_TMPFS_POSIX_ACL=y +CONFIG_CONFIGFS_FS=y +CONFIG_ECRYPT_FS=m +CONFIG_HFS_FS=m +CONFIG_HFSPLUS_FS=m +CONFIG_JFFS2_FS=m +CONFIG_JFFS2_SUMMARY=y +CONFIG_UBIFS_FS=m +CONFIG_SQUASHFS=m +CONFIG_SQUASHFS_XATTR=y +CONFIG_SQUASHFS_LZO=y +CONFIG_SQUASHFS_XZ=y +CONFIG_NFS_FS=y +CONFIG_NFS_V3_ACL=y +CONFIG_NFS_V4=y +CONFIG_NFS_SWAP=y +CONFIG_ROOT_NFS=y +CONFIG_NFS_FSCACHE=y +CONFIG_NFSD=m +CONFIG_NFSD_V3_ACL=y +CONFIG_NFSD_V4=y +CONFIG_CIFS=m +CONFIG_CIFS_WEAK_PW_HASH=y +CONFIG_CIFS_UPCALL=y +CONFIG_CIFS_XATTR=y +CONFIG_CIFS_POSIX=y +CONFIG_CIFS_ACL=y +CONFIG_CIFS_DFS_UPCALL=y +CONFIG_CIFS_SMB2=y +CONFIG_CIFS_FSCACHE=y +CONFIG_9P_FS=m +CONFIG_9P_FS_POSIX_ACL=y +CONFIG_NLS_DEFAULT="utf8" +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_936=m +CONFIG_NLS_CODEPAGE_950=m +CONFIG_NLS_CODEPAGE_932=m +CONFIG_NLS_CODEPAGE_949=m +CONFIG_NLS_CODEPAGE_874=m +CONFIG_NLS_ISO8859_8=m +CONFIG_NLS_CODEPAGE_1250=m +CONFIG_NLS_CODEPAGE_1251=m +CONFIG_NLS_ASCII=y +CONFIG_NLS_ISO8859_1=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_9=m +CONFIG_NLS_ISO8859_13=m +CONFIG_NLS_ISO8859_14=m +CONFIG_NLS_ISO8859_15=m +CONFIG_NLS_KOI8_R=m +CONFIG_NLS_KOI8_U=m +CONFIG_DLM=m +CONFIG_PRINTK_TIME=y +CONFIG_BOOT_PRINTK_DELAY=y +CONFIG_DEBUG_MEMORY_INIT=y +CONFIG_DETECT_HUNG_TASK=y +CONFIG_TIMER_STATS=y +# CONFIG_DEBUG_PREEMPT is not set +CONFIG_LATENCYTOP=y +CONFIG_IRQSOFF_TRACER=y +CONFIG_SCHED_TRACER=y +CONFIG_STACK_TRACER=y +CONFIG_BLK_DEV_IO_TRACE=y +# CONFIG_KPROBE_EVENT is not set +CONFIG_FUNCTION_PROFILER=y +CONFIG_KGDB=y +CONFIG_KGDB_KDB=y +CONFIG_KDB_KEYBOARD=y +CONFIG_CRYPTO_USER=m +CONFIG_CRYPTO_CRYPTD=m +CONFIG_CRYPTO_CBC=y +CONFIG_CRYPTO_CTS=m +CONFIG_CRYPTO_XTS=m +CONFIG_CRYPTO_XCBC=m +CONFIG_CRYPTO_SHA512=m +CONFIG_CRYPTO_TGR192=m +CONFIG_CRYPTO_WP512=m +CONFIG_CRYPTO_CAST5=m +CONFIG_CRYPTO_DES=y +CONFIG_CRYPTO_USER_API_SKCIPHER=m +# CONFIG_CRYPTO_HW is not set +CONFIG_ARM_CRYPTO=y +CONFIG_CRYPTO_SHA1_ARM=m +CONFIG_CRYPTO_AES_ARM=m +CONFIG_CRC_ITU_T=y +CONFIG_LIBCRC32C=y --- linux-raspi2-4.2.0.orig/arch/arm/configs/snappy/generic.config +++ linux-raspi2-4.2.0/arch/arm/configs/snappy/generic.config @@ -0,0 +1,37 @@ +#LP#1105230 and LP#1385510 +# CONFIG_SOUND_OSS_CORE_PRECLAIM is not set +# upstart requires DEVTMPFS be enabled and mounted by default. +CONFIG_DEVTMPFS=y +CONFIG_DEVTMPFS_MOUNT=y +# some /dev nodes require POSIX ACLs, like /dev/dsp +CONFIG_TMPFS_POSIX_ACL=y +# Ramdisk size should be a minimum of 64M +CONFIG_BLK_DEV_RAM=y +CONFIG_BLK_DEV_RAM_SIZE=65536 +# LVM requires dm_mod built in to activate correctly (LP: #560717) +CONFIG_MD=y +CONFIG_BLK_DEV_DM=y +# sysfs: ensure all DEPRECATED items are off +# CONFIG_SYSFS_DEPRECATED is not set +# automatically add local version will cause packaging failure +CONFIG_LOCALVERSION="" +# Ensure IPV6 is y, if this is a module we get a module load for +# every ipv6 packet, bad. +CONFIG_IPV6=y +# Ensure ECRYPT_FS is y as it cannot be autoloaded and it has complex +# dependancies which can pull it =m at a whim. +CONFIG_ECRYPT_FS=y +# Required if /init is a shell script. +CONFIG_BINFMT_SCRIPT=y +# Newer udevs don't handle firmware loading, and having the userspace +# fallback enabled in the kernel just results in big delays if we do +# fall back. +# See LP:1398458 +# CONFIG_FW_LOADER_USER_HELPER_FALLBACK is not set +CONFIG_CRASH_DUMP=y +CONFIG_RTC_DRV_CMOS=m +CONFIG_NVRAM=m +CONFIG_INPUT_UINPUT=y +# needed by dbus +CONFIG_SYSVIPC=y +CONFIG_SYSVIPC_SYSCTL=y --- linux-raspi2-4.2.0.orig/arch/arm/configs/snappy/lxc.config +++ linux-raspi2-4.2.0/arch/arm/configs/snappy/lxc.config @@ -0,0 +1,19 @@ +# lxc mandated kernel configs - see lxc-checkconfig +CONFIG_NAMESPACES=y +CONFIG_UTS_NS=y +CONFIG_POSIX_MQUEUE=y +CONFIG_IPC_NS=y +CONFIG_PID_NS=y +CONFIG_USER_NS=y +CONFIG_NET_NS=y +DEVPTS_MULTIPLE_INSTANCES=y +CONFIG_CGROUPS=y +CONFIG_CGROUP_DEVICE=y +CONFIG_CGROUP_SCHED=y +CONFIG_CGROUP_CPUACCT=y +CONFIG_RESOURCE_COUNTERS=y +CONFIG_MEMCG=y +CONFIG_CPUSETS=y +CONFIG_VETH=y +CONFIG_MACVLAN=y +CONFIG_VLAN_8021Q=y --- linux-raspi2-4.2.0.orig/arch/arm/configs/snappy/security.config +++ linux-raspi2-4.2.0/arch/arm/configs/snappy/security.config @@ -0,0 +1,21 @@ +# CONFIG_COMPAT_BRK is not set +# CONFIG_DEVKMEM is not set +CONFIG_LSM_MMAP_MIN_ADDR=0 +CONFIG_SECURITY=y +CONFIG_SECURITY_APPARMOR=y +CONFIG_SECURITY_SELINUX=y +CONFIG_SECURITY_SMACK=y +CONFIG_SECURITY_YAMA=y +CONFIG_SYN_COOKIES=y +CONFIG_DEFAULT_SECURITY_APPARMOR=y +CONFIG_DEBUG_INFO=y +CONFIG_SECCOMP=y +CONFIG_SECCOMP_FILTER=y +CONFIG_CC_STACKPROTECTOR=y +CONFIG_CC_STACKPROTECTOR_REGULAR=y +CONFIG_DEBUG_RODATA=y +CONFIG_DEBUG_SET_MODULE_RONX=y +CONFIG_STRICT_DEVMEM=y +# CONFIG_COMPAT_VDSO is not set +# CONFIG_ACPI_CUSTOM_METHOD is not set +CONFIG_DEFAULT_MMAP_MIN_ADDR=32768 --- linux-raspi2-4.2.0.orig/arch/arm/configs/snappy/snappy.config +++ linux-raspi2-4.2.0/arch/arm/configs/snappy/snappy.config @@ -0,0 +1,18 @@ +CONFIG_RD_BZIP2=y +CONFIG_RD_LZMA=y +CONFIG_RD_XZ=y +CONFIG_REGULATOR=y +CONFIG_RFKILL=y +CONFIG_RFKILL_INPUT=y +CONFIG_RFKILL_REGULATOR=m +CONFIG_RFKILL_GPIO=m +CONFIG_RAW_DRIVER=m +CONFIG_FANOTIFY=y +CONFIG_AUTOFS4_FS=y +# CONFIG_USB_FUNCTIONFS is not set +# CONFIG_USB_ZERO is not set +# CONFIG_USB_MASS_STORAGE is not set +# CONFIG_USB_G_MULTI_CDC is not set +CONFIG_CONFIGFS_FS=y +CONFIG_KEYS=y +CONFIG_ENCRYPTED_KEYS=y --- linux-raspi2-4.2.0.orig/arch/arm/configs/snappy/systemd.config +++ linux-raspi2-4.2.0/arch/arm/configs/snappy/systemd.config @@ -0,0 +1,32 @@ +# for more info, see REQUIREMENTS in systemd/README: +CONFIG_DEVTMPFS=y +CONFIG_CGROUPS=y +CONFIG_INOTIFY_USER=y +CONFIG_SIGNALFD=y +CONFIG_TIMERFD=y +CONFIG_EPOLL=y +CONFIG_NET=y +CONFIG_SYSFS=y +CONFIG_PROC_FS=y +CONFIG_FHANDLE=y +# CONFIG_SYSFS_DEPRECATED is not set +CONFIG_UEVENT_HELPER_PATH="" +# CONFIG_FW_LOADER_USER_HELPER is not set +CONFIG_DMIID=y +CONFIG_BLK_DEV_BSG=y +CONFIG_NET_NS=y +CONFIG_DEVPTS_MULTIPLE_INSTANCES=y +# Optional but strongly recommended: +CONFIG_IPV6=y +CONFIG_AUTOFS4_FS=y +CONFIG_TMPFS_POSIX_ACL=y +CONFIG_TMPFS_XATTR=y +CONFIG_SECCOMP=y +CONFIG_CGROUP_SCHED=y +CONFIG_FAIR_GROUP_SCHED=y +CONFIG_CFS_BANDWIDTH=y +CONFIG_SCHEDSTATS=y +CONFIG_SCHED_DEBUG=y +CONFIG_EFIVAR_FS=y +CONFIG_EFI_PARTITION=y +# CONFIG_AUDIT is not set --- linux-raspi2-4.2.0.orig/arch/arm/include/asm/entry-macro-multi.S +++ linux-raspi2-4.2.0/arch/arm/include/asm/entry-macro-multi.S @@ -1,5 +1,6 @@ #include +#ifndef CONFIG_ARCH_BCM2709 /* * Interrupt handling. Preserves r7, r8, r9 */ @@ -28,6 +29,7 @@ #endif 9997: .endm +#endif .macro arch_irq_handler, symbol_name .align 5 --- linux-raspi2-4.2.0.orig/arch/arm/include/asm/irq.h +++ linux-raspi2-4.2.0/arch/arm/include/asm/irq.h @@ -35,6 +35,11 @@ extern void set_handle_irq(void (*handle_irq)(struct pt_regs *)); #endif +static inline int nr_legacy_irqs(void) +{ + return NR_IRQS_LEGACY; +} + #endif #endif --- linux-raspi2-4.2.0.orig/arch/arm/include/asm/irqflags.h +++ linux-raspi2-4.2.0/arch/arm/include/asm/irqflags.h @@ -152,13 +152,23 @@ } /* - * restore saved IRQ & FIQ state + * restore saved IRQ state */ #define arch_local_irq_restore arch_local_irq_restore static inline void arch_local_irq_restore(unsigned long flags) { - asm volatile( - " msr " IRQMASK_REG_NAME_W ", %0 @ local_irq_restore" + unsigned long temp = 0; + flags &= ~(1 << 6); + asm volatile ( + " mrs %0, cpsr" + : "=r" (temp) + : + : "memory", "cc"); + /* Preserve FIQ bit */ + temp &= (1 << 6); + flags = flags | temp; + asm volatile ( + " msr cpsr_c, %0 @ local_irq_restore" : : "r" (flags) : "memory", "cc"); --- linux-raspi2-4.2.0.orig/arch/arm/include/asm/kvm_host.h +++ linux-raspi2-4.2.0/arch/arm/include/asm/kvm_host.h @@ -29,12 +29,6 @@ #define __KVM_HAVE_ARCH_INTC_INITIALIZED -#if defined(CONFIG_KVM_ARM_MAX_VCPUS) -#define KVM_MAX_VCPUS CONFIG_KVM_ARM_MAX_VCPUS -#else -#define KVM_MAX_VCPUS 0 -#endif - #define KVM_USER_MEM_SLOTS 32 #define KVM_PRIVATE_MEM_SLOTS 4 #define KVM_COALESCED_MMIO_PAGE_OFFSET 1 @@ -42,8 +36,12 @@ #define KVM_VCPU_MAX_FEATURES 2 +#define KVM_IRQCHIP_NUM_PINS 988 /* 1020 - 32 is the number of SPI */ + #include +#define KVM_MAX_VCPUS VGIC_V2_MAX_CPUS + u32 *kvm_vcpu_reg(struct kvm_vcpu *vcpu, u8 reg_num, u32 mode); int __attribute_const__ kvm_target_cpu(void); int kvm_reset_vcpu(struct kvm_vcpu *vcpu); @@ -213,7 +211,7 @@ kvm_call_hyp((void*)hyp_stack_ptr, vector_ptr, pgd_ptr); } -static inline int kvm_arch_dev_ioctl_check_extension(long ext) +static inline int kvm_arch_dev_ioctl_check_extension(struct kvm *kvm, long ext) { return 0; } --- linux-raspi2-4.2.0.orig/arch/arm/include/asm/string.h +++ linux-raspi2-4.2.0/arch/arm/include/asm/string.h @@ -24,6 +24,11 @@ #define __HAVE_ARCH_MEMSET extern void * memset(void *, int, __kernel_size_t); +#ifdef CONFIG_MACH_BCM2708 +#define __HAVE_ARCH_MEMCMP +extern int memcmp(const void *, const void *, size_t); +#endif + extern void __memzero(void *ptr, __kernel_size_t n); #define memset(p,v,n) \ --- linux-raspi2-4.2.0.orig/arch/arm/include/asm/uaccess.h +++ linux-raspi2-4.2.0/arch/arm/include/asm/uaccess.h @@ -475,6 +475,7 @@ #ifdef CONFIG_MMU extern unsigned long __must_check __copy_from_user(void *to, const void __user *from, unsigned long n); +extern unsigned long __must_check __copy_from_user_std(void *to, const void __user *from, unsigned long n); extern unsigned long __must_check __copy_to_user(void __user *to, const void *from, unsigned long n); extern unsigned long __must_check __copy_to_user_std(void __user *to, const void *from, unsigned long n); extern unsigned long __must_check __clear_user(void __user *addr, unsigned long n); --- linux-raspi2-4.2.0.orig/arch/arm/kernel/fiqasm.S +++ linux-raspi2-4.2.0/arch/arm/kernel/fiqasm.S @@ -47,3 +47,7 @@ mov r0, r0 @ avoid hazard prior to ARMv4 ret lr ENDPROC(__get_fiq_regs) + +ENTRY(__FIQ_Branch) + mov pc, r8 +ENDPROC(__FIQ_Branch) --- linux-raspi2-4.2.0.orig/arch/arm/kernel/head.S +++ linux-raspi2-4.2.0/arch/arm/kernel/head.S @@ -703,6 +703,14 @@ ldrcc r7, [r4], #4 @ use branch for delay slot bcc 1b ret lr + nop + nop + nop + nop + nop + nop + nop + nop #endif ENDPROC(__fixup_a_pv_table) --- linux-raspi2-4.2.0.orig/arch/arm/kernel/kgdb.c +++ linux-raspi2-4.2.0/arch/arm/kernel/kgdb.c @@ -259,15 +259,17 @@ if (err) return err; - patch_text((void *)bpt->bpt_addr, - *(unsigned int *)arch_kgdb_ops.gdb_bpt_instr); + /* Machine is already stopped, so we can use __patch_text() directly */ + __patch_text((void *)bpt->bpt_addr, + *(unsigned int *)arch_kgdb_ops.gdb_bpt_instr); return err; } int kgdb_arch_remove_breakpoint(struct kgdb_bkpt *bpt) { - patch_text((void *)bpt->bpt_addr, *(unsigned int *)bpt->saved_instr); + /* Machine is already stopped, so we can use __patch_text() directly */ + __patch_text((void *)bpt->bpt_addr, *(unsigned int *)bpt->saved_instr); return 0; } --- linux-raspi2-4.2.0.orig/arch/arm/kernel/perf_event.c +++ linux-raspi2-4.2.0/arch/arm/kernel/perf_event.c @@ -795,8 +795,10 @@ /* Don't bother with PPIs; they're already affine */ irq = platform_get_irq(pdev, 0); - if (irq >= 0 && irq_is_percpu(irq)) + if (irq >= 0 && irq_is_percpu(irq)) { + cpumask_setall(&pmu->supported_cpus); return 0; + } irqs = kcalloc(pdev->num_resources, sizeof(*irqs), GFP_KERNEL); if (!irqs) --- linux-raspi2-4.2.0.orig/arch/arm/kernel/process.c +++ linux-raspi2-4.2.0/arch/arm/kernel/process.c @@ -98,6 +98,16 @@ } #endif +char bcm2708_reboot_mode = 'h'; + +int __init reboot_setup(char *str) +{ + bcm2708_reboot_mode = str[0]; + return 1; +} + +__setup("reboot=", reboot_setup); + void __show_regs(struct pt_regs *regs) { unsigned long flags; --- linux-raspi2-4.2.0.orig/arch/arm/kernel/signal.c +++ linux-raspi2-4.2.0/arch/arm/kernel/signal.c @@ -343,12 +343,17 @@ */ thumb = handler & 1; -#if __LINUX_ARM_ARCH__ >= 7 +#if __LINUX_ARM_ARCH__ >= 6 /* - * Clear the If-Then Thumb-2 execution state - * ARM spec requires this to be all 000s in ARM mode - * Snapdragon S4/Krait misbehaves on a Thumb=>ARM - * signal transition without this. + * Clear the If-Then Thumb-2 execution state. ARM spec + * requires this to be all 000s in ARM mode. Snapdragon + * S4/Krait misbehaves on a Thumb=>ARM signal transition + * without this. + * + * We must do this whenever we are running on a Thumb-2 + * capable CPU, which includes ARMv6T2. However, we elect + * to do this whenever we're on an ARMv6 or later CPU for + * simplicity. */ cpsr &= ~PSR_IT_MASK; #endif --- linux-raspi2-4.2.0.orig/arch/arm/kvm/Kconfig +++ linux-raspi2-4.2.0/arch/arm/kvm/Kconfig @@ -21,6 +21,7 @@ depends on MMU && OF select PREEMPT_NOTIFIERS select ANON_INODES + select ARM_GIC select HAVE_KVM_CPU_RELAX_INTERCEPT select HAVE_KVM_ARCH_TLB_FLUSH_ALL select KVM_MMIO @@ -31,6 +32,9 @@ select KVM_VFIO select HAVE_KVM_EVENTFD select HAVE_KVM_IRQFD + select HAVE_KVM_MSI + select HAVE_KVM_IRQCHIP + select HAVE_KVM_IRQ_ROUTING depends on ARM_VIRT_EXT && ARM_LPAE && ARM_ARCH_TIMER ---help--- Support hosting virtualized guest machines. @@ -45,15 +49,4 @@ ---help--- Provides host support for ARM processors. -config KVM_ARM_MAX_VCPUS - int "Number maximum supported virtual CPUs per VM" - depends on KVM_ARM_HOST - default 4 - help - Static number of max supported virtual CPUs per VM. - - If you choose a high number, the vcpu structures will be quite - large, so only choose a reasonable number that you expect to - actually use. - endif # VIRTUALIZATION --- linux-raspi2-4.2.0.orig/arch/arm/kvm/Makefile +++ linux-raspi2-4.2.0/arch/arm/kvm/Makefile @@ -15,7 +15,7 @@ AFLAGS_interrupts.o := -Wa,-march=armv7-a$(plus_virt) KVM := ../../../virt/kvm -kvm-arm-y = $(KVM)/kvm_main.o $(KVM)/coalesced_mmio.o $(KVM)/eventfd.o $(KVM)/vfio.o +kvm-arm-y = $(KVM)/kvm_main.o $(KVM)/coalesced_mmio.o $(KVM)/eventfd.o $(KVM)/vfio.o $(KVM)/irqchip.o obj-y += kvm-arm.o init.o interrupts.o obj-y += arm.o handle_exit.o guest.o mmu.o emulate.o reset.o --- linux-raspi2-4.2.0.orig/arch/arm/kvm/arm.c +++ linux-raspi2-4.2.0/arch/arm/kvm/arm.c @@ -196,7 +196,7 @@ r = KVM_MAX_VCPUS; break; default: - r = kvm_arch_dev_ioctl_check_extension(ext); + r = kvm_arch_dev_ioctl_check_extension(kvm, ext); break; } return r; @@ -449,7 +449,7 @@ * Map the VGIC hardware resources before running a vcpu the first * time on this VM. */ - if (unlikely(!vgic_ready(kvm))) { + if (unlikely(irqchip_in_kernel(kvm) && !vgic_ready(kvm))) { ret = kvm_vgic_map_resources(kvm); if (ret) return ret; --- linux-raspi2-4.2.0.orig/arch/arm/kvm/interrupts_head.S +++ linux-raspi2-4.2.0/arch/arm/kvm/interrupts_head.S @@ -515,8 +515,7 @@ mrc p15, 0, r2, c14, c3, 1 @ CNTV_CTL str r2, [vcpu, #VCPU_TIMER_CNTV_CTL] - bic r2, #1 @ Clear ENABLE - mcr p15, 0, r2, c14, c3, 1 @ CNTV_CTL + isb mrrc p15, 3, rr_lo_hi(r2, r3), c14 @ CNTV_CVAL @@ -529,6 +528,9 @@ mcrr p15, 4, r2, r2, c14 @ CNTVOFF 1: + mov r2, #0 @ Clear ENABLE + mcr p15, 0, r2, c14, c3, 1 @ CNTV_CTL + @ Allow physical timer/counter access for the host mrc p15, 4, r2, c14, c1, 0 @ CNTHCTL orr r2, r2, #(CNTHCTL_PL1PCEN | CNTHCTL_PL1PCTEN) --- linux-raspi2-4.2.0.orig/arch/arm/kvm/mmu.c +++ linux-raspi2-4.2.0/arch/arm/kvm/mmu.c @@ -1792,8 +1792,10 @@ if (vma->vm_flags & VM_PFNMAP) { gpa_t gpa = mem->guest_phys_addr + (vm_start - mem->userspace_addr); - phys_addr_t pa = (vma->vm_pgoff << PAGE_SHIFT) + - vm_start - vma->vm_start; + phys_addr_t pa; + + pa = (phys_addr_t)vma->vm_pgoff << PAGE_SHIFT; + pa += vm_start - vma->vm_start; /* IO region dirty page logging not allowed */ if (memslot->flags & KVM_MEM_LOG_DIRTY_PAGES) --- linux-raspi2-4.2.0.orig/arch/arm/lib/Makefile +++ linux-raspi2-4.2.0/arch/arm/lib/Makefile @@ -6,9 +6,8 @@ lib-y := backtrace.o changebit.o csumipv6.o csumpartial.o \ csumpartialcopy.o csumpartialcopyuser.o clearbit.o \ - delay.o delay-loop.o findbit.o memchr.o memcpy.o \ - memmove.o memset.o memzero.o setbit.o \ - strchr.o strrchr.o \ + delay.o delay-loop.o findbit.o memchr.o memzero.o \ + setbit.o strchr.o strrchr.o \ testchangebit.o testclearbit.o testsetbit.o \ ashldi3.o ashrdi3.o lshrdi3.o muldi3.o \ ucmpdi2.o lib1funcs.o div64.o \ @@ -18,6 +17,16 @@ mmu-y := clear_user.o copy_page.o getuser.o putuser.o \ copy_from_user.o copy_to_user.o +# Choose optimised implementations for Raspberry Pi +ifeq ($(CONFIG_MACH_BCM2708),y) + CFLAGS_uaccess_with_memcpy.o += -DCOPY_FROM_USER_THRESHOLD=1600 + CFLAGS_uaccess_with_memcpy.o += -DCOPY_TO_USER_THRESHOLD=672 + obj-$(CONFIG_MODULES) += exports_rpi.o + lib-y += memcpy_rpi.o memmove_rpi.o memset_rpi.o memcmp_rpi.o +else + lib-y += memcpy.o memmove.o memset.o +endif + # using lib_ here won't override already available weak symbols obj-$(CONFIG_UACCESS_WITH_MEMCPY) += uaccess_with_memcpy.o --- linux-raspi2-4.2.0.orig/arch/arm/lib/arm-mem.h +++ linux-raspi2-4.2.0/arch/arm/lib/arm-mem.h @@ -0,0 +1,159 @@ +/* +Copyright (c) 2013, Raspberry Pi Foundation +Copyright (c) 2013, RISC OS Open Ltd +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + * 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. + * Neither the name of the copyright holder nor the + names of its contributors may be used to endorse or promote products + derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY +DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +.macro myfunc fname + .func fname + .global fname +fname: +.endm + +.macro preload_leading_step1 backwards, ptr, base +/* If the destination is already 16-byte aligned, then we need to preload + * between 0 and prefetch_distance (inclusive) cache lines ahead so there + * are no gaps when the inner loop starts. + */ + .if backwards + sub ptr, base, #1 + bic ptr, ptr, #31 + .else + bic ptr, base, #31 + .endif + .set OFFSET, 0 + .rept prefetch_distance+1 + pld [ptr, #OFFSET] + .if backwards + .set OFFSET, OFFSET-32 + .else + .set OFFSET, OFFSET+32 + .endif + .endr +.endm + +.macro preload_leading_step2 backwards, ptr, base, leading_bytes, tmp +/* However, if the destination is not 16-byte aligned, we may need to + * preload one more cache line than that. The question we need to ask is: + * are the leading bytes more than the amount by which the source + * pointer will be rounded down for preloading, and if so, by how many + * cache lines? + */ + .if backwards +/* Here we compare against how many bytes we are into the + * cache line, counting down from the highest such address. + * Effectively, we want to calculate + * leading_bytes = dst&15 + * cacheline_offset = 31-((src-leading_bytes-1)&31) + * extra_needed = leading_bytes - cacheline_offset + * and test if extra_needed is <= 0, or rearranging: + * leading_bytes + (src-leading_bytes-1)&31 <= 31 + */ + mov tmp, base, lsl #32-5 + sbc tmp, tmp, leading_bytes, lsl #32-5 + adds tmp, tmp, leading_bytes, lsl #32-5 + bcc 61f + pld [ptr, #-32*(prefetch_distance+1)] + .else +/* Effectively, we want to calculate + * leading_bytes = (-dst)&15 + * cacheline_offset = (src+leading_bytes)&31 + * extra_needed = leading_bytes - cacheline_offset + * and test if extra_needed is <= 0. + */ + mov tmp, base, lsl #32-5 + add tmp, tmp, leading_bytes, lsl #32-5 + rsbs tmp, tmp, leading_bytes, lsl #32-5 + bls 61f + pld [ptr, #32*(prefetch_distance+1)] + .endif +61: +.endm + +.macro preload_trailing backwards, base, remain, tmp + /* We need either 0, 1 or 2 extra preloads */ + .if backwards + rsb tmp, base, #0 + mov tmp, tmp, lsl #32-5 + .else + mov tmp, base, lsl #32-5 + .endif + adds tmp, tmp, remain, lsl #32-5 + adceqs tmp, tmp, #0 + /* The instruction above has two effects: ensures Z is only + * set if C was clear (so Z indicates that both shifted quantities + * were 0), and clears C if Z was set (so C indicates that the sum + * of the shifted quantities was greater and not equal to 32) */ + beq 82f + .if backwards + sub tmp, base, #1 + bic tmp, tmp, #31 + .else + bic tmp, base, #31 + .endif + bcc 81f + .if backwards + pld [tmp, #-32*(prefetch_distance+1)] +81: + pld [tmp, #-32*prefetch_distance] + .else + pld [tmp, #32*(prefetch_distance+2)] +81: + pld [tmp, #32*(prefetch_distance+1)] + .endif +82: +.endm + +.macro preload_all backwards, narrow_case, shift, base, remain, tmp0, tmp1 + .if backwards + sub tmp0, base, #1 + bic tmp0, tmp0, #31 + pld [tmp0] + sub tmp1, base, remain, lsl #shift + .else + bic tmp0, base, #31 + pld [tmp0] + add tmp1, base, remain, lsl #shift + sub tmp1, tmp1, #1 + .endif + bic tmp1, tmp1, #31 + cmp tmp1, tmp0 + beq 92f + .if narrow_case + /* In this case, all the data fits in either 1 or 2 cache lines */ + pld [tmp1] + .else +91: + .if backwards + sub tmp0, tmp0, #32 + .else + add tmp0, tmp0, #32 + .endif + cmp tmp0, tmp1 + pld [tmp0] + bne 91b + .endif +92: +.endm --- linux-raspi2-4.2.0.orig/arch/arm/lib/copy_from_user.S +++ linux-raspi2-4.2.0/arch/arm/lib/copy_from_user.S @@ -89,11 +89,13 @@ .text -ENTRY(__copy_from_user) +ENTRY(__copy_from_user_std) +WEAK(__copy_from_user) #include "copy_template.S" ENDPROC(__copy_from_user) +ENDPROC(__copy_from_user_std) .pushsection .fixup,"ax" .align 0 --- linux-raspi2-4.2.0.orig/arch/arm/lib/exports_rpi.c +++ linux-raspi2-4.2.0/arch/arm/lib/exports_rpi.c @@ -0,0 +1,37 @@ +/** + * Copyright (c) 2014, Raspberry Pi (Trading) Ltd. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions, and the following disclaimer, + * without modification. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The names of the above-listed copyright holders may not be used + * to endorse or promote products derived from this software without + * specific prior written permission. + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") version 2, as published by the Free + * Software Foundation. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS + * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include +#include + +EXPORT_SYMBOL(memcmp); --- linux-raspi2-4.2.0.orig/arch/arm/lib/memcmp_rpi.S +++ linux-raspi2-4.2.0/arch/arm/lib/memcmp_rpi.S @@ -0,0 +1,285 @@ +/* +Copyright (c) 2013, Raspberry Pi Foundation +Copyright (c) 2013, RISC OS Open Ltd +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + * 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. + * Neither the name of the copyright holder nor the + names of its contributors may be used to endorse or promote products + derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY +DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +#include +#include "arm-mem.h" + +/* Prevent the stack from becoming executable */ +#if defined(__linux__) && defined(__ELF__) +.section .note.GNU-stack,"",%progbits +#endif + + .text + .arch armv6 + .object_arch armv4 + .arm + .altmacro + .p2align 2 + +.macro memcmp_process_head unaligned + .if unaligned + ldr DAT0, [S_1], #4 + ldr DAT1, [S_1], #4 + ldr DAT2, [S_1], #4 + ldr DAT3, [S_1], #4 + .else + ldmia S_1!, {DAT0, DAT1, DAT2, DAT3} + .endif + ldmia S_2!, {DAT4, DAT5, DAT6, DAT7} +.endm + +.macro memcmp_process_tail + cmp DAT0, DAT4 + cmpeq DAT1, DAT5 + cmpeq DAT2, DAT6 + cmpeq DAT3, DAT7 + bne 200f +.endm + +.macro memcmp_leading_31bytes + movs DAT0, OFF, lsl #31 + ldrmib DAT0, [S_1], #1 + ldrcsh DAT1, [S_1], #2 + ldrmib DAT4, [S_2], #1 + ldrcsh DAT5, [S_2], #2 + movpl DAT0, #0 + movcc DAT1, #0 + movpl DAT4, #0 + movcc DAT5, #0 + submi N, N, #1 + subcs N, N, #2 + cmp DAT0, DAT4 + cmpeq DAT1, DAT5 + bne 200f + movs DAT0, OFF, lsl #29 + ldrmi DAT0, [S_1], #4 + ldrcs DAT1, [S_1], #4 + ldrcs DAT2, [S_1], #4 + ldrmi DAT4, [S_2], #4 + ldmcsia S_2!, {DAT5, DAT6} + movpl DAT0, #0 + movcc DAT1, #0 + movcc DAT2, #0 + movpl DAT4, #0 + movcc DAT5, #0 + movcc DAT6, #0 + submi N, N, #4 + subcs N, N, #8 + cmp DAT0, DAT4 + cmpeq DAT1, DAT5 + cmpeq DAT2, DAT6 + bne 200f + tst OFF, #16 + beq 105f + memcmp_process_head 1 + sub N, N, #16 + memcmp_process_tail +105: +.endm + +.macro memcmp_trailing_15bytes unaligned + movs N, N, lsl #29 + .if unaligned + ldrcs DAT0, [S_1], #4 + ldrcs DAT1, [S_1], #4 + .else + ldmcsia S_1!, {DAT0, DAT1} + .endif + ldrmi DAT2, [S_1], #4 + ldmcsia S_2!, {DAT4, DAT5} + ldrmi DAT6, [S_2], #4 + movcc DAT0, #0 + movcc DAT1, #0 + movpl DAT2, #0 + movcc DAT4, #0 + movcc DAT5, #0 + movpl DAT6, #0 + cmp DAT0, DAT4 + cmpeq DAT1, DAT5 + cmpeq DAT2, DAT6 + bne 200f + movs N, N, lsl #2 + ldrcsh DAT0, [S_1], #2 + ldrmib DAT1, [S_1] + ldrcsh DAT4, [S_2], #2 + ldrmib DAT5, [S_2] + movcc DAT0, #0 + movpl DAT1, #0 + movcc DAT4, #0 + movpl DAT5, #0 + cmp DAT0, DAT4 + cmpeq DAT1, DAT5 + bne 200f +.endm + +.macro memcmp_long_inner_loop unaligned +110: + memcmp_process_head unaligned + pld [S_2, #prefetch_distance*32 + 16] + memcmp_process_tail + memcmp_process_head unaligned + pld [S_1, OFF] + memcmp_process_tail + subs N, N, #32 + bhs 110b + /* Just before the final (prefetch_distance+1) 32-byte blocks, + * deal with final preloads */ + preload_trailing 0, S_1, N, DAT0 + preload_trailing 0, S_2, N, DAT0 + add N, N, #(prefetch_distance+2)*32 - 16 +120: + memcmp_process_head unaligned + memcmp_process_tail + subs N, N, #16 + bhs 120b + /* Trailing words and bytes */ + tst N, #15 + beq 199f + memcmp_trailing_15bytes unaligned +199: /* Reached end without detecting a difference */ + mov a1, #0 + setend le + pop {DAT1-DAT6, pc} +.endm + +.macro memcmp_short_inner_loop unaligned + subs N, N, #16 /* simplifies inner loop termination */ + blo 122f +120: + memcmp_process_head unaligned + memcmp_process_tail + subs N, N, #16 + bhs 120b +122: /* Trailing words and bytes */ + tst N, #15 + beq 199f + memcmp_trailing_15bytes unaligned +199: /* Reached end without detecting a difference */ + mov a1, #0 + setend le + pop {DAT1-DAT6, pc} +.endm + +/* + * int memcmp(const void *s1, const void *s2, size_t n); + * On entry: + * a1 = pointer to buffer 1 + * a2 = pointer to buffer 2 + * a3 = number of bytes to compare (as unsigned chars) + * On exit: + * a1 = >0/=0/<0 if s1 >/=/< s2 + */ + +.set prefetch_distance, 2 + +ENTRY(memcmp) + S_1 .req a1 + S_2 .req a2 + N .req a3 + DAT0 .req a4 + DAT1 .req v1 + DAT2 .req v2 + DAT3 .req v3 + DAT4 .req v4 + DAT5 .req v5 + DAT6 .req v6 + DAT7 .req ip + OFF .req lr + + push {DAT1-DAT6, lr} + setend be /* lowest-addressed bytes are most significant */ + + /* To preload ahead as we go, we need at least (prefetch_distance+2) 32-byte blocks */ + cmp N, #(prefetch_distance+3)*32 - 1 + blo 170f + + /* Long case */ + /* Adjust N so that the decrement instruction can also test for + * inner loop termination. We want it to stop when there are + * (prefetch_distance+1) complete blocks to go. */ + sub N, N, #(prefetch_distance+2)*32 + preload_leading_step1 0, DAT0, S_1 + preload_leading_step1 0, DAT1, S_2 + tst S_2, #31 + beq 154f + rsb OFF, S_2, #0 /* no need to AND with 15 here */ + preload_leading_step2 0, DAT0, S_1, OFF, DAT2 + preload_leading_step2 0, DAT1, S_2, OFF, DAT2 + memcmp_leading_31bytes +154: /* Second source now cacheline (32-byte) aligned; we have at + * least one prefetch to go. */ + /* Prefetch offset is best selected such that it lies in the + * first 8 of each 32 bytes - but it's just as easy to aim for + * the first one */ + and OFF, S_1, #31 + rsb OFF, OFF, #32*prefetch_distance + tst S_1, #3 + bne 140f + memcmp_long_inner_loop 0 +140: memcmp_long_inner_loop 1 + +170: /* Short case */ + teq N, #0 + beq 199f + preload_all 0, 0, 0, S_1, N, DAT0, DAT1 + preload_all 0, 0, 0, S_2, N, DAT0, DAT1 + tst S_2, #3 + beq 174f +172: subs N, N, #1 + blo 199f + ldrb DAT0, [S_1], #1 + ldrb DAT4, [S_2], #1 + cmp DAT0, DAT4 + bne 200f + tst S_2, #3 + bne 172b +174: /* Second source now 4-byte aligned; we have 0 or more bytes to go */ + tst S_1, #3 + bne 140f + memcmp_short_inner_loop 0 +140: memcmp_short_inner_loop 1 + +200: /* Difference found: determine sign. */ + movhi a1, #1 + movlo a1, #-1 + setend le + pop {DAT1-DAT6, pc} + + .unreq S_1 + .unreq S_2 + .unreq N + .unreq DAT0 + .unreq DAT1 + .unreq DAT2 + .unreq DAT3 + .unreq DAT4 + .unreq DAT5 + .unreq DAT6 + .unreq DAT7 + .unreq OFF +ENDPROC(memcmp) --- linux-raspi2-4.2.0.orig/arch/arm/lib/memcpy_rpi.S +++ linux-raspi2-4.2.0/arch/arm/lib/memcpy_rpi.S @@ -0,0 +1,61 @@ +/* +Copyright (c) 2013, Raspberry Pi Foundation +Copyright (c) 2013, RISC OS Open Ltd +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + * 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. + * Neither the name of the copyright holder nor the + names of its contributors may be used to endorse or promote products + derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY +DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +#include +#include "arm-mem.h" +#include "memcpymove.h" + +/* Prevent the stack from becoming executable */ +#if defined(__linux__) && defined(__ELF__) +.section .note.GNU-stack,"",%progbits +#endif + + .text + .arch armv6 + .object_arch armv4 + .arm + .altmacro + .p2align 2 + +/* + * void *memcpy(void * restrict s1, const void * restrict s2, size_t n); + * On entry: + * a1 = pointer to destination + * a2 = pointer to source + * a3 = number of bytes to copy + * On exit: + * a1 preserved + */ + +.set prefetch_distance, 3 + +ENTRY(mmiocpy) +ENTRY(memcpy) + memcpy 0 +ENDPROC(memcpy) +ENDPROC(mmiocpy) --- linux-raspi2-4.2.0.orig/arch/arm/lib/memcpymove.h +++ linux-raspi2-4.2.0/arch/arm/lib/memcpymove.h @@ -0,0 +1,506 @@ +/* +Copyright (c) 2013, Raspberry Pi Foundation +Copyright (c) 2013, RISC OS Open Ltd +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + * 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. + * Neither the name of the copyright holder nor the + names of its contributors may be used to endorse or promote products + derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY +DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +.macro unaligned_words backwards, align, use_pld, words, r0, r1, r2, r3, r4, r5, r6, r7, r8 + .if words == 1 + .if backwards + mov r1, r0, lsl #32-align*8 + ldr r0, [S, #-4]! + orr r1, r1, r0, lsr #align*8 + str r1, [D, #-4]! + .else + mov r0, r1, lsr #align*8 + ldr r1, [S, #4]! + orr r0, r0, r1, lsl #32-align*8 + str r0, [D], #4 + .endif + .elseif words == 2 + .if backwards + ldr r1, [S, #-4]! + mov r2, r0, lsl #32-align*8 + ldr r0, [S, #-4]! + orr r2, r2, r1, lsr #align*8 + mov r1, r1, lsl #32-align*8 + orr r1, r1, r0, lsr #align*8 + stmdb D!, {r1, r2} + .else + ldr r1, [S, #4]! + mov r0, r2, lsr #align*8 + ldr r2, [S, #4]! + orr r0, r0, r1, lsl #32-align*8 + mov r1, r1, lsr #align*8 + orr r1, r1, r2, lsl #32-align*8 + stmia D!, {r0, r1} + .endif + .elseif words == 4 + .if backwards + ldmdb S!, {r2, r3} + mov r4, r0, lsl #32-align*8 + ldmdb S!, {r0, r1} + orr r4, r4, r3, lsr #align*8 + mov r3, r3, lsl #32-align*8 + orr r3, r3, r2, lsr #align*8 + mov r2, r2, lsl #32-align*8 + orr r2, r2, r1, lsr #align*8 + mov r1, r1, lsl #32-align*8 + orr r1, r1, r0, lsr #align*8 + stmdb D!, {r1, r2, r3, r4} + .else + ldmib S!, {r1, r2} + mov r0, r4, lsr #align*8 + ldmib S!, {r3, r4} + orr r0, r0, r1, lsl #32-align*8 + mov r1, r1, lsr #align*8 + orr r1, r1, r2, lsl #32-align*8 + mov r2, r2, lsr #align*8 + orr r2, r2, r3, lsl #32-align*8 + mov r3, r3, lsr #align*8 + orr r3, r3, r4, lsl #32-align*8 + stmia D!, {r0, r1, r2, r3} + .endif + .elseif words == 8 + .if backwards + ldmdb S!, {r4, r5, r6, r7} + mov r8, r0, lsl #32-align*8 + ldmdb S!, {r0, r1, r2, r3} + .if use_pld + pld [S, OFF] + .endif + orr r8, r8, r7, lsr #align*8 + mov r7, r7, lsl #32-align*8 + orr r7, r7, r6, lsr #align*8 + mov r6, r6, lsl #32-align*8 + orr r6, r6, r5, lsr #align*8 + mov r5, r5, lsl #32-align*8 + orr r5, r5, r4, lsr #align*8 + mov r4, r4, lsl #32-align*8 + orr r4, r4, r3, lsr #align*8 + mov r3, r3, lsl #32-align*8 + orr r3, r3, r2, lsr #align*8 + mov r2, r2, lsl #32-align*8 + orr r2, r2, r1, lsr #align*8 + mov r1, r1, lsl #32-align*8 + orr r1, r1, r0, lsr #align*8 + stmdb D!, {r5, r6, r7, r8} + stmdb D!, {r1, r2, r3, r4} + .else + ldmib S!, {r1, r2, r3, r4} + mov r0, r8, lsr #align*8 + ldmib S!, {r5, r6, r7, r8} + .if use_pld + pld [S, OFF] + .endif + orr r0, r0, r1, lsl #32-align*8 + mov r1, r1, lsr #align*8 + orr r1, r1, r2, lsl #32-align*8 + mov r2, r2, lsr #align*8 + orr r2, r2, r3, lsl #32-align*8 + mov r3, r3, lsr #align*8 + orr r3, r3, r4, lsl #32-align*8 + mov r4, r4, lsr #align*8 + orr r4, r4, r5, lsl #32-align*8 + mov r5, r5, lsr #align*8 + orr r5, r5, r6, lsl #32-align*8 + mov r6, r6, lsr #align*8 + orr r6, r6, r7, lsl #32-align*8 + mov r7, r7, lsr #align*8 + orr r7, r7, r8, lsl #32-align*8 + stmia D!, {r0, r1, r2, r3} + stmia D!, {r4, r5, r6, r7} + .endif + .endif +.endm + +.macro memcpy_leading_15bytes backwards, align + movs DAT1, DAT2, lsl #31 + sub N, N, DAT2 + .if backwards + ldrmib DAT0, [S, #-1]! + ldrcsh DAT1, [S, #-2]! + strmib DAT0, [D, #-1]! + strcsh DAT1, [D, #-2]! + .else + ldrmib DAT0, [S], #1 + ldrcsh DAT1, [S], #2 + strmib DAT0, [D], #1 + strcsh DAT1, [D], #2 + .endif + movs DAT1, DAT2, lsl #29 + .if backwards + ldrmi DAT0, [S, #-4]! + .if align == 0 + ldmcsdb S!, {DAT1, DAT2} + .else + ldrcs DAT2, [S, #-4]! + ldrcs DAT1, [S, #-4]! + .endif + strmi DAT0, [D, #-4]! + stmcsdb D!, {DAT1, DAT2} + .else + ldrmi DAT0, [S], #4 + .if align == 0 + ldmcsia S!, {DAT1, DAT2} + .else + ldrcs DAT1, [S], #4 + ldrcs DAT2, [S], #4 + .endif + strmi DAT0, [D], #4 + stmcsia D!, {DAT1, DAT2} + .endif +.endm + +.macro memcpy_trailing_15bytes backwards, align + movs N, N, lsl #29 + .if backwards + .if align == 0 + ldmcsdb S!, {DAT0, DAT1} + .else + ldrcs DAT1, [S, #-4]! + ldrcs DAT0, [S, #-4]! + .endif + ldrmi DAT2, [S, #-4]! + stmcsdb D!, {DAT0, DAT1} + strmi DAT2, [D, #-4]! + .else + .if align == 0 + ldmcsia S!, {DAT0, DAT1} + .else + ldrcs DAT0, [S], #4 + ldrcs DAT1, [S], #4 + .endif + ldrmi DAT2, [S], #4 + stmcsia D!, {DAT0, DAT1} + strmi DAT2, [D], #4 + .endif + movs N, N, lsl #2 + .if backwards + ldrcsh DAT0, [S, #-2]! + ldrmib DAT1, [S, #-1] + strcsh DAT0, [D, #-2]! + strmib DAT1, [D, #-1] + .else + ldrcsh DAT0, [S], #2 + ldrmib DAT1, [S] + strcsh DAT0, [D], #2 + strmib DAT1, [D] + .endif +.endm + +.macro memcpy_long_inner_loop backwards, align + .if align != 0 + .if backwards + ldr DAT0, [S, #-align]! + .else + ldr LAST, [S, #-align]! + .endif + .endif +110: + .if align == 0 + .if backwards + ldmdb S!, {DAT0, DAT1, DAT2, DAT3, DAT4, DAT5, DAT6, LAST} + pld [S, OFF] + stmdb D!, {DAT4, DAT5, DAT6, LAST} + stmdb D!, {DAT0, DAT1, DAT2, DAT3} + .else + ldmia S!, {DAT0, DAT1, DAT2, DAT3, DAT4, DAT5, DAT6, LAST} + pld [S, OFF] + stmia D!, {DAT0, DAT1, DAT2, DAT3} + stmia D!, {DAT4, DAT5, DAT6, LAST} + .endif + .else + unaligned_words backwards, align, 1, 8, DAT0, DAT1, DAT2, DAT3, DAT4, DAT5, DAT6, DAT7, LAST + .endif + subs N, N, #32 + bhs 110b + /* Just before the final (prefetch_distance+1) 32-byte blocks, deal with final preloads */ + preload_trailing backwards, S, N, OFF + add N, N, #(prefetch_distance+2)*32 - 32 +120: + .if align == 0 + .if backwards + ldmdb S!, {DAT0, DAT1, DAT2, DAT3, DAT4, DAT5, DAT6, LAST} + stmdb D!, {DAT4, DAT5, DAT6, LAST} + stmdb D!, {DAT0, DAT1, DAT2, DAT3} + .else + ldmia S!, {DAT0, DAT1, DAT2, DAT3, DAT4, DAT5, DAT6, LAST} + stmia D!, {DAT0, DAT1, DAT2, DAT3} + stmia D!, {DAT4, DAT5, DAT6, LAST} + .endif + .else + unaligned_words backwards, align, 0, 8, DAT0, DAT1, DAT2, DAT3, DAT4, DAT5, DAT6, DAT7, LAST + .endif + subs N, N, #32 + bhs 120b + tst N, #16 + .if align == 0 + .if backwards + ldmnedb S!, {DAT0, DAT1, DAT2, LAST} + stmnedb D!, {DAT0, DAT1, DAT2, LAST} + .else + ldmneia S!, {DAT0, DAT1, DAT2, LAST} + stmneia D!, {DAT0, DAT1, DAT2, LAST} + .endif + .else + beq 130f + unaligned_words backwards, align, 0, 4, DAT0, DAT1, DAT2, DAT3, LAST +130: + .endif + /* Trailing words and bytes */ + tst N, #15 + beq 199f + .if align != 0 + add S, S, #align + .endif + memcpy_trailing_15bytes backwards, align +199: + pop {DAT3, DAT4, DAT5, DAT6, DAT7} + pop {D, DAT1, DAT2, pc} +.endm + +.macro memcpy_medium_inner_loop backwards, align +120: + .if backwards + .if align == 0 + ldmdb S!, {DAT0, DAT1, DAT2, LAST} + .else + ldr LAST, [S, #-4]! + ldr DAT2, [S, #-4]! + ldr DAT1, [S, #-4]! + ldr DAT0, [S, #-4]! + .endif + stmdb D!, {DAT0, DAT1, DAT2, LAST} + .else + .if align == 0 + ldmia S!, {DAT0, DAT1, DAT2, LAST} + .else + ldr DAT0, [S], #4 + ldr DAT1, [S], #4 + ldr DAT2, [S], #4 + ldr LAST, [S], #4 + .endif + stmia D!, {DAT0, DAT1, DAT2, LAST} + .endif + subs N, N, #16 + bhs 120b + /* Trailing words and bytes */ + tst N, #15 + beq 199f + memcpy_trailing_15bytes backwards, align +199: + pop {D, DAT1, DAT2, pc} +.endm + +.macro memcpy_short_inner_loop backwards, align + tst N, #16 + .if backwards + .if align == 0 + ldmnedb S!, {DAT0, DAT1, DAT2, LAST} + .else + ldrne LAST, [S, #-4]! + ldrne DAT2, [S, #-4]! + ldrne DAT1, [S, #-4]! + ldrne DAT0, [S, #-4]! + .endif + stmnedb D!, {DAT0, DAT1, DAT2, LAST} + .else + .if align == 0 + ldmneia S!, {DAT0, DAT1, DAT2, LAST} + .else + ldrne DAT0, [S], #4 + ldrne DAT1, [S], #4 + ldrne DAT2, [S], #4 + ldrne LAST, [S], #4 + .endif + stmneia D!, {DAT0, DAT1, DAT2, LAST} + .endif + memcpy_trailing_15bytes backwards, align +199: + pop {D, DAT1, DAT2, pc} +.endm + +.macro memcpy backwards + D .req a1 + S .req a2 + N .req a3 + DAT0 .req a4 + DAT1 .req v1 + DAT2 .req v2 + DAT3 .req v3 + DAT4 .req v4 + DAT5 .req v5 + DAT6 .req v6 + DAT7 .req sl + LAST .req ip + OFF .req lr + + .cfi_startproc + + push {D, DAT1, DAT2, lr} + + .cfi_def_cfa_offset 16 + .cfi_rel_offset D, 0 + .cfi_undefined S + .cfi_undefined N + .cfi_undefined DAT0 + .cfi_rel_offset DAT1, 4 + .cfi_rel_offset DAT2, 8 + .cfi_undefined LAST + .cfi_rel_offset lr, 12 + + .if backwards + add D, D, N + add S, S, N + .endif + + /* See if we're guaranteed to have at least one 16-byte aligned 16-byte write */ + cmp N, #31 + blo 170f + /* To preload ahead as we go, we need at least (prefetch_distance+2) 32-byte blocks */ + cmp N, #(prefetch_distance+3)*32 - 1 + blo 160f + + /* Long case */ + push {DAT3, DAT4, DAT5, DAT6, DAT7} + + .cfi_def_cfa_offset 36 + .cfi_rel_offset D, 20 + .cfi_rel_offset DAT1, 24 + .cfi_rel_offset DAT2, 28 + .cfi_rel_offset DAT3, 0 + .cfi_rel_offset DAT4, 4 + .cfi_rel_offset DAT5, 8 + .cfi_rel_offset DAT6, 12 + .cfi_rel_offset DAT7, 16 + .cfi_rel_offset lr, 32 + + /* Adjust N so that the decrement instruction can also test for + * inner loop termination. We want it to stop when there are + * (prefetch_distance+1) complete blocks to go. */ + sub N, N, #(prefetch_distance+2)*32 + preload_leading_step1 backwards, DAT0, S + .if backwards + /* Bug in GAS: it accepts, but mis-assembles the instruction + * ands DAT2, D, #60, 2 + * which sets DAT2 to the number of leading bytes until destination is aligned and also clears C (sets borrow) + */ + .word 0xE210513C + beq 154f + .else + ands DAT2, D, #15 + beq 154f + rsb DAT2, DAT2, #16 /* number of leading bytes until destination aligned */ + .endif + preload_leading_step2 backwards, DAT0, S, DAT2, OFF + memcpy_leading_15bytes backwards, 1 +154: /* Destination now 16-byte aligned; we have at least one prefetch as well as at least one 16-byte output block */ + /* Prefetch offset is best selected such that it lies in the first 8 of each 32 bytes - but it's just as easy to aim for the first one */ + .if backwards + rsb OFF, S, #3 + and OFF, OFF, #28 + sub OFF, OFF, #32*(prefetch_distance+1) + .else + and OFF, S, #28 + rsb OFF, OFF, #32*prefetch_distance + .endif + movs DAT0, S, lsl #31 + bhi 157f + bcs 156f + bmi 155f + memcpy_long_inner_loop backwards, 0 +155: memcpy_long_inner_loop backwards, 1 +156: memcpy_long_inner_loop backwards, 2 +157: memcpy_long_inner_loop backwards, 3 + + .cfi_def_cfa_offset 16 + .cfi_rel_offset D, 0 + .cfi_rel_offset DAT1, 4 + .cfi_rel_offset DAT2, 8 + .cfi_same_value DAT3 + .cfi_same_value DAT4 + .cfi_same_value DAT5 + .cfi_same_value DAT6 + .cfi_same_value DAT7 + .cfi_rel_offset lr, 12 + +160: /* Medium case */ + preload_all backwards, 0, 0, S, N, DAT2, OFF + sub N, N, #16 /* simplifies inner loop termination */ + .if backwards + ands DAT2, D, #15 + beq 164f + .else + ands DAT2, D, #15 + beq 164f + rsb DAT2, DAT2, #16 + .endif + memcpy_leading_15bytes backwards, align +164: /* Destination now 16-byte aligned; we have at least one 16-byte output block */ + tst S, #3 + bne 140f + memcpy_medium_inner_loop backwards, 0 +140: memcpy_medium_inner_loop backwards, 1 + +170: /* Short case, less than 31 bytes, so no guarantee of at least one 16-byte block */ + teq N, #0 + beq 199f + preload_all backwards, 1, 0, S, N, DAT2, LAST + tst D, #3 + beq 174f +172: subs N, N, #1 + blo 199f + .if backwards + ldrb DAT0, [S, #-1]! + strb DAT0, [D, #-1]! + .else + ldrb DAT0, [S], #1 + strb DAT0, [D], #1 + .endif + tst D, #3 + bne 172b +174: /* Destination now 4-byte aligned; we have 0 or more output bytes to go */ + tst S, #3 + bne 140f + memcpy_short_inner_loop backwards, 0 +140: memcpy_short_inner_loop backwards, 1 + + .cfi_endproc + + .unreq D + .unreq S + .unreq N + .unreq DAT0 + .unreq DAT1 + .unreq DAT2 + .unreq DAT3 + .unreq DAT4 + .unreq DAT5 + .unreq DAT6 + .unreq DAT7 + .unreq LAST + .unreq OFF +.endm --- linux-raspi2-4.2.0.orig/arch/arm/lib/memmove_rpi.S +++ linux-raspi2-4.2.0/arch/arm/lib/memmove_rpi.S @@ -0,0 +1,61 @@ +/* +Copyright (c) 2013, Raspberry Pi Foundation +Copyright (c) 2013, RISC OS Open Ltd +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + * 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. + * Neither the name of the copyright holder nor the + names of its contributors may be used to endorse or promote products + derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY +DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +#include +#include "arm-mem.h" +#include "memcpymove.h" + +/* Prevent the stack from becoming executable */ +#if defined(__linux__) && defined(__ELF__) +.section .note.GNU-stack,"",%progbits +#endif + + .text + .arch armv6 + .object_arch armv4 + .arm + .altmacro + .p2align 2 + +/* + * void *memmove(void *s1, const void *s2, size_t n); + * On entry: + * a1 = pointer to destination + * a2 = pointer to source + * a3 = number of bytes to copy + * On exit: + * a1 preserved + */ + +.set prefetch_distance, 3 + +ENTRY(memmove) + cmp a2, a1 + bpl memcpy /* pl works even over -1 - 0 and 0x7fffffff - 0x80000000 boundaries */ + memcpy 1 +ENDPROC(memmove) --- linux-raspi2-4.2.0.orig/arch/arm/lib/memset_rpi.S +++ linux-raspi2-4.2.0/arch/arm/lib/memset_rpi.S @@ -0,0 +1,123 @@ +/* +Copyright (c) 2013, Raspberry Pi Foundation +Copyright (c) 2013, RISC OS Open Ltd +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + * 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. + * Neither the name of the copyright holder nor the + names of its contributors may be used to endorse or promote products + derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY +DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +#include +#include "arm-mem.h" + +/* Prevent the stack from becoming executable */ +#if defined(__linux__) && defined(__ELF__) +.section .note.GNU-stack,"",%progbits +#endif + + .text + .arch armv6 + .object_arch armv4 + .arm + .altmacro + .p2align 2 + +/* + * void *memset(void *s, int c, size_t n); + * On entry: + * a1 = pointer to buffer to fill + * a2 = byte pattern to fill with (caller-narrowed) + * a3 = number of bytes to fill + * On exit: + * a1 preserved + */ +ENTRY(mmioset) +ENTRY(memset) + S .req a1 + DAT0 .req a2 + N .req a3 + DAT1 .req a4 + DAT2 .req ip + DAT3 .req lr + + orr DAT0, DAT0, lsl #8 + push {S, lr} + orr DAT0, DAT0, lsl #16 + mov DAT1, DAT0 + + /* See if we're guaranteed to have at least one 16-byte aligned 16-byte write */ + cmp N, #31 + blo 170f + +161: sub N, N, #16 /* simplifies inner loop termination */ + /* Leading words and bytes */ + tst S, #15 + beq 164f + rsb DAT3, S, #0 /* bits 0-3 = number of leading bytes until aligned */ + movs DAT2, DAT3, lsl #31 + submi N, N, #1 + strmib DAT0, [S], #1 + subcs N, N, #2 + strcsh DAT0, [S], #2 + movs DAT2, DAT3, lsl #29 + submi N, N, #4 + strmi DAT0, [S], #4 + subcs N, N, #8 + stmcsia S!, {DAT0, DAT1} +164: /* Delayed set up of DAT2 and DAT3 so we could use them as scratch registers above */ + mov DAT2, DAT0 + mov DAT3, DAT0 + /* Now the inner loop of 16-byte stores */ +165: stmia S!, {DAT0, DAT1, DAT2, DAT3} + subs N, N, #16 + bhs 165b +166: /* Trailing words and bytes */ + movs N, N, lsl #29 + stmcsia S!, {DAT0, DAT1} + strmi DAT0, [S], #4 + movs N, N, lsl #2 + strcsh DAT0, [S], #2 + strmib DAT0, [S] +199: pop {S, pc} + +170: /* Short case */ + mov DAT2, DAT0 + mov DAT3, DAT0 + tst S, #3 + beq 174f +172: subs N, N, #1 + blo 199b + strb DAT0, [S], #1 + tst S, #3 + bne 172b +174: tst N, #16 + stmneia S!, {DAT0, DAT1, DAT2, DAT3} + b 166b + + .unreq S + .unreq DAT0 + .unreq N + .unreq DAT1 + .unreq DAT2 + .unreq DAT3 +ENDPROC(memset) +ENDPROC(mmioset) --- linux-raspi2-4.2.0.orig/arch/arm/lib/uaccess_with_memcpy.c +++ linux-raspi2-4.2.0/arch/arm/lib/uaccess_with_memcpy.c @@ -22,6 +22,14 @@ #include #include +#ifndef COPY_FROM_USER_THRESHOLD +#define COPY_FROM_USER_THRESHOLD 64 +#endif + +#ifndef COPY_TO_USER_THRESHOLD +#define COPY_TO_USER_THRESHOLD 64 +#endif + static int pin_page_for_write(const void __user *_addr, pte_t **ptep, spinlock_t **ptlp) { @@ -85,7 +93,44 @@ return 1; } -static unsigned long noinline +static int +pin_page_for_read(const void __user *_addr, pte_t **ptep, spinlock_t **ptlp) +{ + unsigned long addr = (unsigned long)_addr; + pgd_t *pgd; + pmd_t *pmd; + pte_t *pte; + pud_t *pud; + spinlock_t *ptl; + + pgd = pgd_offset(current->mm, addr); + if (unlikely(pgd_none(*pgd) || pgd_bad(*pgd))) + { + return 0; + } + pud = pud_offset(pgd, addr); + if (unlikely(pud_none(*pud) || pud_bad(*pud))) + { + return 0; + } + + pmd = pmd_offset(pud, addr); + if (unlikely(pmd_none(*pmd) || pmd_bad(*pmd))) + return 0; + + pte = pte_offset_map_lock(current->mm, pmd, addr, &ptl); + if (unlikely(!pte_present(*pte) || !pte_young(*pte))) { + pte_unmap_unlock(pte, ptl); + return 0; + } + + *ptep = pte; + *ptlp = ptl; + + return 1; +} + +unsigned long noinline __copy_to_user_memcpy(void __user *to, const void *from, unsigned long n) { int atomic; @@ -135,6 +180,54 @@ return n; } +unsigned long noinline +__copy_from_user_memcpy(void *to, const void __user *from, unsigned long n) +{ + int atomic; + + if (unlikely(segment_eq(get_fs(), KERNEL_DS))) { + memcpy(to, (const void *)from, n); + return 0; + } + + /* the mmap semaphore is taken only if not in an atomic context */ + atomic = in_atomic(); + + if (!atomic) + down_read(¤t->mm->mmap_sem); + while (n) { + pte_t *pte; + spinlock_t *ptl; + int tocopy; + + while (!pin_page_for_read(from, &pte, &ptl)) { + char temp; + if (!atomic) + up_read(¤t->mm->mmap_sem); + if (__get_user(temp, (char __user *)from)) + goto out; + if (!atomic) + down_read(¤t->mm->mmap_sem); + } + + tocopy = (~(unsigned long)from & ~PAGE_MASK) + 1; + if (tocopy > n) + tocopy = n; + + memcpy(to, (const void *)from, tocopy); + to += tocopy; + from += tocopy; + n -= tocopy; + + pte_unmap_unlock(pte, ptl); + } + if (!atomic) + up_read(¤t->mm->mmap_sem); + +out: + return n; +} + unsigned long __copy_to_user(void __user *to, const void *from, unsigned long n) { @@ -145,10 +238,25 @@ * With frame pointer disabled, tail call optimization kicks in * as well making this test almost invisible. */ - if (n < 64) + if (n < COPY_TO_USER_THRESHOLD) return __copy_to_user_std(to, from, n); return __copy_to_user_memcpy(to, from, n); } + +unsigned long +__copy_from_user(void *to, const void __user *from, unsigned long n) +{ + /* + * This test is stubbed out of the main function above to keep + * the overhead for small copies low by avoiding a large + * register dump on the stack just to reload them right away. + * With frame pointer disabled, tail call optimization kicks in + * as well making this test almost invisible. + */ + if (n < COPY_FROM_USER_THRESHOLD) + return __copy_from_user_std(to, from, n); + return __copy_from_user_memcpy(to, from, n); +} static unsigned long noinline __clear_user_memset(void __user *addr, unsigned long n) --- linux-raspi2-4.2.0.orig/arch/arm/mach-at91/pm_suspend.S +++ linux-raspi2-4.2.0/arch/arm/mach-at91/pm_suspend.S @@ -80,6 +80,8 @@ * @r2: base address of second SDRAM Controller or 0 if not present * @r3: pm information */ +/* at91_pm_suspend_in_sram must be 8-byte aligned per the requirements of fncpy() */ + .align 3 ENTRY(at91_pm_suspend_in_sram) /* Save registers on stack */ stmfd sp!, {r4 - r12, lr} --- linux-raspi2-4.2.0.orig/arch/arm/mach-bcm/Kconfig +++ linux-raspi2-4.2.0/arch/arm/mach-bcm/Kconfig @@ -114,6 +114,7 @@ select ARM_ERRATA_411920 select ARM_TIMER_SP804 select CLKSRC_OF + select FIQ select PINCTRL select PINCTRL_BCM2835 help --- linux-raspi2-4.2.0.orig/arch/arm/mach-bcm/bcm63xx_smp.c +++ linux-raspi2-4.2.0/arch/arm/mach-bcm/bcm63xx_smp.c @@ -127,7 +127,7 @@ } /* Locate the secondary CPU node */ - dn = of_get_cpu_node(cpu_logical_map(cpu), NULL); + dn = of_get_cpu_node(cpu, NULL); if (!dn) { pr_err("SMP: failed to locate secondary CPU%d node\n", cpu); ret = -ENODEV; --- linux-raspi2-4.2.0.orig/arch/arm/mach-bcm/board_bcm2835.c +++ linux-raspi2-4.2.0/arch/arm/mach-bcm/board_bcm2835.c @@ -17,12 +17,39 @@ #include #include #include +#include #include #include +/* Use this hack until a proper solution is agreed upon */ +static void __init bcm2835_init_uart1(void) +{ + struct device_node *np; + + np = of_find_compatible_node(NULL, NULL, "brcm,bcm2835-aux-uart"); + if (of_device_is_available(np)) { + np = of_find_compatible_node(NULL, NULL, + "bcrm,bcm2835-aux-enable"); + if (np) { + void __iomem *base = of_iomap(np, 0); + + if (!base) { + pr_err("bcm2835: Failed enabling Mini UART\n"); + return; + } + + writel(1, base); + pr_info("bcm2835: Mini UART enabled\n"); + } + } +} + static void __init bcm2835_init(void) { + struct device_node *np = of_find_node_by_path("/system"); + u32 val; + u64 val64; int ret; bcm2835_init_clocks(); @@ -33,6 +60,13 @@ pr_err("of_platform_populate failed: %d\n", ret); BUG(); } + + if (!of_property_read_u32(np, "linux,revision", &val)) + system_rev = val; + if (!of_property_read_u64(np, "linux,serial", &val64)) + system_serial_low = val64; + + bcm2835_init_uart1(); } static const char * const bcm2835_compat[] = { --- linux-raspi2-4.2.0.orig/arch/arm/mach-bcm2708/Kconfig +++ linux-raspi2-4.2.0/arch/arm/mach-bcm2708/Kconfig @@ -0,0 +1,45 @@ +menu "Broadcom BCM2708 Implementations" + depends on ARCH_BCM2708 + +config MACH_BCM2708 + bool "Broadcom BCM2708 Development Platform" + select NEED_MACH_MEMORY_H + select NEED_MACH_IO_H + select CPU_V6 + help + Include support for the Broadcom(R) BCM2708 platform. + +config BCM2708_DT + bool "BCM2708 Device Tree support" + depends on MACH_BCM2708 + default n + select USE_OF + select ARCH_REQUIRE_GPIOLIB + select PINCTRL + select PINCTRL_BCM2835 + help + Enable Device Tree support for BCM2708 + +config BCM2708_GPIO + bool "BCM2708 gpio support" + depends on MACH_BCM2708 + select ARCH_REQUIRE_GPIOLIB + default y + help + Include support for the Broadcom(R) BCM2708 gpio. + +config BCM2708_NOL2CACHE + bool "Videocore L2 cache disable" + depends on MACH_BCM2708 + default n + help + Do not allow ARM to use GPU's L2 cache. Requires disable_l2cache in config.txt. + +config BCM2708_SPIDEV + bool "Bind spidev to SPI0 master" + depends on MACH_BCM2708 + depends on SPI + default y + help + Binds spidev driver to the SPI0 master +endmenu --- linux-raspi2-4.2.0.orig/arch/arm/mach-bcm2708/Makefile +++ linux-raspi2-4.2.0/arch/arm/mach-bcm2708/Makefile @@ -0,0 +1,6 @@ +# +# Makefile for the linux kernel. +# + +obj-$(CONFIG_MACH_BCM2708) += bcm2708.o armctrl.o +obj-$(CONFIG_BCM2708_GPIO) += bcm2708_gpio.o --- linux-raspi2-4.2.0.orig/arch/arm/mach-bcm2708/Makefile.boot +++ linux-raspi2-4.2.0/arch/arm/mach-bcm2708/Makefile.boot @@ -0,0 +1,3 @@ + zreladdr-y := 0x00008000 +params_phys-y := 0x00000100 +initrd_phys-y := 0x00800000 --- linux-raspi2-4.2.0.orig/arch/arm/mach-bcm2708/armctrl.c +++ linux-raspi2-4.2.0/arch/arm/mach-bcm2708/armctrl.c @@ -0,0 +1,383 @@ +/* + * linux/arch/arm/mach-bcm2708/armctrl.c + * + * Copyright (C) 2010 Broadcom + * + * 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 +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include "armctrl.h" + +/* Mask out shortcut interrupts where they also appear in the regular bank */ +#define BANK0_HWIRQ 0x001ffcff +#define BANK1_HWIRQ BIT(8) +#define BANK2_HWIRQ BIT(9) +#define BANK0_VALID_MASK \ + (BANK0_HWIRQ + BANK1_HWIRQ + BANK2_HWIRQ) +#define BANK1_VALID_MASK \ + (~(BIT(7) | BIT(9) | BIT(10) | BIT(18) | BIT(19))) +#define BANK2_VALID_MASK \ + (~(BIT(21) | BIT(22) | BIT(23) | BIT(24) | BIT(25) | BIT(30))) + +/* For support of kernels >= 3.0 assume only one VIC for now*/ +static unsigned int remap_irqs[(INTERRUPT_ARASANSDIO + 1) - INTERRUPT_JPEG] = { + INTERRUPT_VC_JPEG, + INTERRUPT_VC_USB, + INTERRUPT_VC_3D, + INTERRUPT_VC_DMA2, + INTERRUPT_VC_DMA3, + INTERRUPT_VC_I2C, + INTERRUPT_VC_SPI, + INTERRUPT_VC_I2SPCM, + INTERRUPT_VC_SDIO, + INTERRUPT_VC_UART, + INTERRUPT_VC_ARASANSDIO +}; + +static void armctrl_mask_irq(struct irq_data *d) +{ + static const unsigned int disables[4] = { + ARM_IRQ_DIBL1, + ARM_IRQ_DIBL2, + ARM_IRQ_DIBL3, + 0 + }; + + if (d->irq >= FIQ_START) { + writel(0, __io_address(ARM_IRQ_FAST)); + } else { + unsigned int data = (unsigned int)irq_get_chip_data(d->irq); + writel(1 << (data & 0x1f), __io_address(disables[(data >> 5) & 0x3])); + } +} + +static void armctrl_unmask_irq(struct irq_data *d) +{ + static const unsigned int enables[4] = { + ARM_IRQ_ENBL1, + ARM_IRQ_ENBL2, + ARM_IRQ_ENBL3, + 0 + }; + + if (d->irq >= FIQ_START) { + unsigned int data = + (unsigned int)irq_get_chip_data(d->irq) - FIQ_START; + writel(0x80 | data, __io_address(ARM_IRQ_FAST)); + } else { + unsigned int data = (unsigned int)irq_get_chip_data(d->irq); + writel(1 << (data & 0x1f), __io_address(enables[(data >> 5) & 0x3])); + } +} + +#ifdef CONFIG_OF + +#define NR_IRQS_BANK0 21 +#define NR_BANKS 3 +#define IRQS_PER_BANK 32 + +/* from drivers/irqchip/irq-bcm2835.c */ +static int armctrl_xlate(struct irq_domain *d, struct device_node *ctrlr, + const u32 *intspec, unsigned int intsize, + unsigned long *out_hwirq, unsigned int *out_type) +{ + if (WARN_ON(intsize != 2)) + return -EINVAL; + + if (WARN_ON(intspec[0] >= NR_BANKS)) + return -EINVAL; + + if (WARN_ON(intspec[1] >= IRQS_PER_BANK)) + return -EINVAL; + + if (WARN_ON(intspec[0] == 0 && intspec[1] >= NR_IRQS_BANK0)) + return -EINVAL; + + if (intspec[0] == 0) + *out_hwirq = ARM_IRQ0_BASE + intspec[1]; + else if (intspec[0] == 1) + *out_hwirq = ARM_IRQ1_BASE + intspec[1]; + else + *out_hwirq = ARM_IRQ2_BASE + intspec[1]; + + /* reverse remap_irqs[] */ + switch (*out_hwirq) { + case INTERRUPT_VC_JPEG: + *out_hwirq = INTERRUPT_JPEG; + break; + case INTERRUPT_VC_USB: + *out_hwirq = INTERRUPT_USB; + break; + case INTERRUPT_VC_3D: + *out_hwirq = INTERRUPT_3D; + break; + case INTERRUPT_VC_DMA2: + *out_hwirq = INTERRUPT_DMA2; + break; + case INTERRUPT_VC_DMA3: + *out_hwirq = INTERRUPT_DMA3; + break; + case INTERRUPT_VC_I2C: + *out_hwirq = INTERRUPT_I2C; + break; + case INTERRUPT_VC_SPI: + *out_hwirq = INTERRUPT_SPI; + break; + case INTERRUPT_VC_I2SPCM: + *out_hwirq = INTERRUPT_I2SPCM; + break; + case INTERRUPT_VC_SDIO: + *out_hwirq = INTERRUPT_SDIO; + break; + case INTERRUPT_VC_UART: + *out_hwirq = INTERRUPT_UART; + break; + case INTERRUPT_VC_ARASANSDIO: + *out_hwirq = INTERRUPT_ARASANSDIO; + break; + } + + *out_type = IRQ_TYPE_NONE; + return 0; +} + +static struct irq_domain_ops armctrl_ops = { + .xlate = armctrl_xlate +}; + +void __init armctrl_dt_init(void) +{ + struct device_node *np; + struct irq_domain *domain; + + np = of_find_compatible_node(NULL, NULL, "brcm,bcm2708-armctrl-ic"); + if (!np) + return; + + domain = irq_domain_add_legacy(np, BCM2708_ALLOC_IRQS, + IRQ_ARMCTRL_START, 0, + &armctrl_ops, NULL); + WARN_ON(!domain); +} +#else +void __init armctrl_dt_init(void) { } +#endif /* CONFIG_OF */ + +#if defined(CONFIG_PM) + +/* for kernels 3.xx use the new syscore_ops apis but for older kernels use the sys dev class */ + +/* Static defines + * struct armctrl_device - VIC PM device (< 3.xx) + * @sysdev: The system device which is registered. (< 3.xx) + * @irq: The IRQ number for the base of the VIC. + * @base: The register base for the VIC. + * @resume_sources: A bitmask of interrupts for resume. + * @resume_irqs: The IRQs enabled for resume. + * @int_select: Save for VIC_INT_SELECT. + * @int_enable: Save for VIC_INT_ENABLE. + * @soft_int: Save for VIC_INT_SOFT. + * @protect: Save for VIC_PROTECT. + */ +struct armctrl_info { + void __iomem *base; + int irq; + u32 resume_sources; + u32 resume_irqs; + u32 int_select; + u32 int_enable; + u32 soft_int; + u32 protect; +} armctrl; + +static int armctrl_suspend(void) +{ + return 0; +} + +static void armctrl_resume(void) +{ + return; +} + +/** + * armctrl_pm_register - Register a VIC for later power management control + * @base: The base address of the VIC. + * @irq: The base IRQ for the VIC. + * @resume_sources: bitmask of interrupts allowed for resume sources. + * + * For older kernels (< 3.xx) do - + * Register the VIC with the system device tree so that it can be notified + * of suspend and resume requests and ensure that the correct actions are + * taken to re-instate the settings on resume. + */ +static void __init armctrl_pm_register(void __iomem * base, unsigned int irq, + u32 resume_sources) +{ + armctrl.base = base; + armctrl.resume_sources = resume_sources; + armctrl.irq = irq; +} + +static int armctrl_set_wake(struct irq_data *d, unsigned int on) +{ + unsigned int off = d->irq & 31; + u32 bit = 1 << off; + + if (!(bit & armctrl.resume_sources)) + return -EINVAL; + + if (on) + armctrl.resume_irqs |= bit; + else + armctrl.resume_irqs &= ~bit; + + return 0; +} + +#else +static inline void armctrl_pm_register(void __iomem * base, unsigned int irq, + u32 arg1) +{ +} + +#define armctrl_suspend NULL +#define armctrl_resume NULL +#define armctrl_set_wake NULL +#endif /* CONFIG_PM */ + +static struct syscore_ops armctrl_syscore_ops = { + .suspend = armctrl_suspend, + .resume = armctrl_resume, +}; + +/** + * armctrl_syscore_init - initicall to register VIC pm functions + * + * This is called via late_initcall() to register + * the resources for the VICs due to the early + * nature of the VIC's registration. +*/ +static int __init armctrl_syscore_init(void) +{ + register_syscore_ops(&armctrl_syscore_ops); + return 0; +} + +late_initcall(armctrl_syscore_init); + +static struct irq_chip armctrl_chip = { + .name = "ARMCTRL", + .irq_ack = NULL, + .irq_mask = armctrl_mask_irq, + .irq_unmask = armctrl_unmask_irq, + .irq_set_wake = armctrl_set_wake, +}; + +#ifdef CONFIG_MULTI_IRQ_HANDLER + +static void __exception_irq_entry armctrl_handle_irq( + struct pt_regs *regs) +{ + u32 stat; + + while ((stat = readl_relaxed(__io_address(ARM_IRQ_PEND0)) & + BANK0_VALID_MASK)) { + u32 stat2; + u32 irq; + + if (stat & BANK0_HWIRQ) { + irq = ARM_IRQ0_BASE + ffs(stat & BANK0_HWIRQ) - 1; + } else if (stat & BANK1_HWIRQ) { + stat2 = readl_relaxed(__io_address(ARM_IRQ_PEND1)) & + BANK1_VALID_MASK; + if (stat2) + irq = ARM_IRQ1_BASE + + ffs(stat2 & BANK1_VALID_MASK) - 1; + else + continue; + } else if (stat & BANK2_HWIRQ) { + stat2 = readl_relaxed(__io_address(ARM_IRQ_PEND2)) & + BANK2_VALID_MASK; + if (stat2) + irq = ARM_IRQ2_BASE + + ffs(stat2 & BANK2_VALID_MASK) - 1; + else + continue; + } else { + BUG(); + } + + handle_IRQ(irq, regs); + } +} + +/* This function forces the interrupt numbers to be allocated sequentially, + * instead of with gaps due to the sparse BANK0, to make the offset from + * IRQs and FIQs constant (and equal to FIQ_START). + */ +unsigned int arch_dynirq_lower_bound(unsigned int from) +{ + if (from < 24) + return from + 24; + else if (from >= 104) + return from - 24; + return from; +} + +#endif + +/** + * armctrl_init - initialise a vectored interrupt controller + * @base: iomem base address + * @irq_start: starting interrupt number, must be muliple of 32 + * @armctrl_sources: bitmask of interrupt sources to allow + * @resume_sources: bitmask of interrupt sources to allow for resume + */ +int __init armctrl_init(void __iomem * base, unsigned int irq_start, + u32 armctrl_sources, u32 resume_sources) +{ + unsigned int irq; + + for (irq = 0; irq < BCM2708_ALLOC_IRQS; irq++) { + unsigned int data = irq; + if (irq >= INTERRUPT_JPEG && irq <= INTERRUPT_ARASANSDIO) + data = remap_irqs[irq - INTERRUPT_JPEG]; + + irq_set_chip(irq, &armctrl_chip); + irq_set_chip_data(irq, (void *)data); + irq_set_handler(irq, handle_level_irq); + set_irq_flags(irq, IRQF_VALID | IRQF_PROBE); + } + +#ifdef CONFIG_MULTI_IRQ_HANDLER + set_handle_irq(armctrl_handle_irq); +#endif + armctrl_pm_register(base, irq_start, resume_sources); + init_FIQ(FIQ_START); + armctrl_dt_init(); + return 0; +} --- linux-raspi2-4.2.0.orig/arch/arm/mach-bcm2708/armctrl.h +++ linux-raspi2-4.2.0/arch/arm/mach-bcm2708/armctrl.h @@ -0,0 +1,27 @@ +/* + * linux/arch/arm/mach-bcm2708/armctrl.h + * + * Copyright (C) 2010 Broadcom + * + * 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 + */ + +#ifndef __BCM2708_ARMCTRL_H +#define __BCM2708_ARMCTRL_H + +extern int __init armctrl_init(void __iomem * base, unsigned int irq_start, + u32 armctrl_sources, u32 resume_sources); + +#endif --- linux-raspi2-4.2.0.orig/arch/arm/mach-bcm2708/bcm2708.c +++ linux-raspi2-4.2.0/arch/arm/mach-bcm2708/bcm2708.c @@ -0,0 +1,1171 @@ +/* + * linux/arch/arm/mach-bcm2708/bcm2708.c + * + * Copyright (C) 2010 Broadcom + * + * 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 +#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 +#include +#include +#include + +#include +#include +#include +#include +#include + +#include +#include + +#include + +#include "bcm2708.h" +#include "armctrl.h" + +#ifdef CONFIG_BCM_VC_CMA +#include +#endif + + +/* Effectively we have an IOMMU (ARM<->VideoCore map) that is set up to + * give us IO access only to 64Mbytes of physical memory (26 bits). We could + * represent this window by setting our dmamasks to 26 bits but, in fact + * we're not going to use addresses outside this range (they're not in real + * memory) so we don't bother. + * + * In the future we might include code to use this IOMMU to remap other + * physical addresses onto VideoCore memory then the use of 32-bits would be + * more legitimate. + */ +#define DMA_MASK_BITS_COMMON 32 + +// use GPIO 4 for the one-wire GPIO pin, if enabled +#define W1_GPIO 4 +// ensure one-wire GPIO pullup is disabled by default +#define W1_PULLUP -1 + +/* command line parameters */ +static unsigned boardrev, serial; +static unsigned uart_clock = UART0_CLOCK; +static unsigned disk_led_gpio = 16; +static unsigned disk_led_active_low = 1; +static unsigned reboot_part = 0; +static unsigned w1_gpio_pin = W1_GPIO; +static unsigned w1_gpio_pullup = W1_PULLUP; +static bool vc_i2c_override = false; +static int pps_gpio_pin = -1; + +static unsigned use_dt = 0; + +static void __init bcm2708_init_led(void); + +void __init bcm2708_init_irq(void) +{ + if (of_have_populated_dt()) + irqchip_init(); + else + armctrl_init(__io_address(ARMCTRL_IC_BASE), 0, 0, 0); +} + +static struct map_desc bcm2708_io_desc[] __initdata = { + { + .virtual = IO_ADDRESS(ARMCTRL_BASE), + .pfn = __phys_to_pfn(ARMCTRL_BASE), + .length = SZ_4K, + .type = MT_DEVICE}, + { + .virtual = IO_ADDRESS(UART0_BASE), + .pfn = __phys_to_pfn(UART0_BASE), + .length = SZ_4K, + .type = MT_DEVICE}, + { + .virtual = IO_ADDRESS(UART1_BASE), + .pfn = __phys_to_pfn(UART1_BASE), + .length = SZ_4K, + .type = MT_DEVICE}, + { + .virtual = IO_ADDRESS(DMA_BASE), + .pfn = __phys_to_pfn(DMA_BASE), + .length = SZ_4K, + .type = MT_DEVICE}, + { + .virtual = IO_ADDRESS(MCORE_BASE), + .pfn = __phys_to_pfn(MCORE_BASE), + .length = SZ_4K, + .type = MT_DEVICE}, + { + .virtual = IO_ADDRESS(ST_BASE), + .pfn = __phys_to_pfn(ST_BASE), + .length = SZ_4K, + .type = MT_DEVICE}, + { + .virtual = IO_ADDRESS(USB_BASE), + .pfn = __phys_to_pfn(USB_BASE), + .length = SZ_128K, + .type = MT_DEVICE}, + { + .virtual = IO_ADDRESS(PM_BASE), + .pfn = __phys_to_pfn(PM_BASE), + .length = SZ_4K, + .type = MT_DEVICE}, + { + .virtual = IO_ADDRESS(GPIO_BASE), + .pfn = __phys_to_pfn(GPIO_BASE), + .length = SZ_4K, + .type = MT_DEVICE} +}; + +void __init bcm2708_map_io(void) +{ + iotable_init(bcm2708_io_desc, ARRAY_SIZE(bcm2708_io_desc)); +} + +/* The STC is a free running counter that increments at the rate of 1MHz */ +#define STC_FREQ_HZ 1000000 + +static inline uint32_t timer_read(void) +{ + /* STC: a free running counter that increments at the rate of 1MHz */ + return readl(__io_address(ST_BASE + 0x04)); +} + +static unsigned long bcm2708_read_current_timer(void) +{ + return timer_read(); +} + +static u64 notrace bcm2708_read_sched_clock(void) +{ + return timer_read(); +} + +static cycle_t clksrc_read(struct clocksource *cs) +{ + return timer_read(); +} + +static struct clocksource clocksource_stc = { + .name = "stc", + .rating = 300, + .read = clksrc_read, + .mask = CLOCKSOURCE_MASK(32), + .flags = CLOCK_SOURCE_IS_CONTINUOUS, +}; + +unsigned long frc_clock_ticks32(void) +{ + return timer_read(); +} + +static void __init bcm2708_clocksource_init(void) +{ + if (clocksource_register_hz(&clocksource_stc, STC_FREQ_HZ)) { + printk(KERN_ERR "timer: failed to initialize clock " + "source %s\n", clocksource_stc.name); + } +} + +struct clk __init *bcm2708_clk_register(const char *name, unsigned long fixed_rate) +{ + struct clk *clk; + + clk = clk_register_fixed_rate(NULL, name, NULL, CLK_IS_ROOT, + fixed_rate); + if (IS_ERR(clk)) + pr_err("%s not registered\n", name); + + return clk; +} + +void __init bcm2708_register_clkdev(struct clk *clk, const char *name) +{ + int ret; + + ret = clk_register_clkdev(clk, NULL, name); + if (ret) + pr_err("%s alias not registered\n", name); +} + +void __init bcm2708_init_clocks(void) +{ + struct clk *clk; + + clk = bcm2708_clk_register("uart0_clk", uart_clock); + bcm2708_register_clkdev(clk, "dev:f1"); + + clk = bcm2708_clk_register("sdhost_clk", 250000000); + bcm2708_register_clkdev(clk, "mmc-bcm2835.0"); + bcm2708_register_clkdev(clk, "bcm2708_spi.0"); + bcm2708_register_clkdev(clk, "bcm2708_i2c.0"); + bcm2708_register_clkdev(clk, "bcm2708_i2c.1"); +} + +#define UART0_IRQ { IRQ_UART, 0 /*NO_IRQ*/ } +#define UART0_DMA { 15, 14 } + +AMBA_DEVICE(uart0, "dev:f1", UART0, NULL); + +static struct amba_device *amba_devs[] __initdata = { + &uart0_device, +}; + +static struct resource bcm2708_dmaengine_resources[] = { + { + .start = DMA_BASE, + .end = DMA_BASE + SZ_4K - 1, + .flags = IORESOURCE_MEM, + }, { + .start = IRQ_DMA0, + .end = IRQ_DMA0, + .flags = IORESOURCE_IRQ, + }, { + .start = IRQ_DMA1, + .end = IRQ_DMA1, + .flags = IORESOURCE_IRQ, + }, { + .start = IRQ_DMA2, + .end = IRQ_DMA2, + .flags = IORESOURCE_IRQ, + }, { + .start = IRQ_DMA3, + .end = IRQ_DMA3, + .flags = IORESOURCE_IRQ, + }, { + .start = IRQ_DMA4, + .end = IRQ_DMA4, + .flags = IORESOURCE_IRQ, + }, { + .start = IRQ_DMA5, + .end = IRQ_DMA5, + .flags = IORESOURCE_IRQ, + }, { + .start = IRQ_DMA6, + .end = IRQ_DMA6, + .flags = IORESOURCE_IRQ, + }, { + .start = IRQ_DMA7, + .end = IRQ_DMA7, + .flags = IORESOURCE_IRQ, + }, { + .start = IRQ_DMA8, + .end = IRQ_DMA8, + .flags = IORESOURCE_IRQ, + }, { + .start = IRQ_DMA9, + .end = IRQ_DMA9, + .flags = IORESOURCE_IRQ, + }, { + .start = IRQ_DMA10, + .end = IRQ_DMA10, + .flags = IORESOURCE_IRQ, + }, { + .start = IRQ_DMA11, + .end = IRQ_DMA11, + .flags = IORESOURCE_IRQ, + }, { + .start = IRQ_DMA12, + .end = IRQ_DMA12, + .flags = IORESOURCE_IRQ, + } +}; + +static struct platform_device bcm2708_dmaengine_device = { + .name = "bcm2708-dmaengine", + .id = -1, + .resource = bcm2708_dmaengine_resources, + .num_resources = ARRAY_SIZE(bcm2708_dmaengine_resources), +}; + +#if defined(CONFIG_W1_MASTER_GPIO) || defined(CONFIG_W1_MASTER_GPIO_MODULE) +static struct w1_gpio_platform_data w1_gpio_pdata = { + .pin = W1_GPIO, + .ext_pullup_enable_pin = W1_PULLUP, + .is_open_drain = 0, +}; + +static struct platform_device w1_device = { + .name = "w1-gpio", + .id = -1, + .dev.platform_data = &w1_gpio_pdata, +}; +#endif + +static struct pps_gpio_platform_data pps_gpio_info = { + .assert_falling_edge = false, + .capture_clear = false, + .gpio_pin = -1, + .gpio_label = "PPS", +}; + +static struct platform_device pps_gpio_device = { + .name = "pps-gpio", + .id = PLATFORM_DEVID_NONE, + .dev.platform_data = &pps_gpio_info, +}; + +static u64 fb_dmamask = DMA_BIT_MASK(DMA_MASK_BITS_COMMON); + +static struct platform_device bcm2708_fb_device = { + .name = "bcm2708_fb", + .id = -1, /* only one bcm2708_fb */ + .resource = NULL, + .num_resources = 0, + .dev = { + .dma_mask = &fb_dmamask, + .coherent_dma_mask = DMA_BIT_MASK(DMA_MASK_BITS_COMMON), + }, +}; + +static struct resource bcm2708_usb_resources[] = { + [0] = { + .start = USB_BASE, + .end = USB_BASE + SZ_128K - 1, + .flags = IORESOURCE_MEM, + }, + [1] = { + .start = MPHI_BASE, + .end = MPHI_BASE + SZ_4K - 1, + .flags = IORESOURCE_MEM, + }, + [2] = { + .start = IRQ_HOSTPORT, + .end = IRQ_HOSTPORT, + .flags = IORESOURCE_IRQ, + }, + [3] = { + .start = IRQ_USB, + .end = IRQ_USB, + .flags = IORESOURCE_IRQ, + }, +}; + + +static u64 usb_dmamask = DMA_BIT_MASK(DMA_MASK_BITS_COMMON); + +static struct platform_device bcm2708_usb_device = { + .name = "bcm2708_usb", + .id = -1, /* only one bcm2708_usb */ + .resource = bcm2708_usb_resources, + .num_resources = ARRAY_SIZE(bcm2708_usb_resources), + .dev = { + .dma_mask = &usb_dmamask, + .coherent_dma_mask = DMA_BIT_MASK(DMA_MASK_BITS_COMMON), + }, +}; + +static struct resource bcm2708_vcio_resources[] = { + { + .start = ARMCTRL_0_MAIL0_BASE, + .end = ARMCTRL_0_MAIL0_BASE + SZ_64 - 1, + .flags = IORESOURCE_MEM, + }, { + .start = IRQ_ARM_MAILBOX, + .end = IRQ_ARM_MAILBOX, + .flags = IORESOURCE_IRQ, + }, +}; + +static u64 vcio_dmamask = DMA_BIT_MASK(DMA_MASK_BITS_COMMON); + +static struct platform_device bcm2708_vcio_device = { + .name = "bcm2835-mbox", + .id = -1, /* only one VideoCore I/O area */ + .resource = bcm2708_vcio_resources, + .num_resources = ARRAY_SIZE(bcm2708_vcio_resources), + .dev = { + .dma_mask = &vcio_dmamask, + .coherent_dma_mask = DMA_BIT_MASK(DMA_MASK_BITS_COMMON), + }, +}; + +static u64 rpifw_dmamask = DMA_BIT_MASK(DMA_MASK_BITS_COMMON); + +static struct platform_device bcm2708_rpifw_device = { + .name = "raspberrypi-firmware", + .dev = { + .dma_mask = &rpifw_dmamask, + .coherent_dma_mask = DMA_BIT_MASK(DMA_MASK_BITS_COMMON), + }, +}; + +static struct resource bcm2708_vchiq_resources[] = { + { + .start = ARMCTRL_0_BELL_BASE, + .end = ARMCTRL_0_BELL_BASE + 16, + .flags = IORESOURCE_MEM, + }, { + .start = IRQ_ARM_DOORBELL_0, + .end = IRQ_ARM_DOORBELL_0, + .flags = IORESOURCE_IRQ, + }, +}; + +static u64 vchiq_dmamask = DMA_BIT_MASK(DMA_MASK_BITS_COMMON); + +static struct platform_device bcm2708_vchiq_device = { + .name = "bcm2835_vchiq", + .id = -1, + .resource = bcm2708_vchiq_resources, + .num_resources = ARRAY_SIZE(bcm2708_vchiq_resources), + .dev = { + .dma_mask = &vchiq_dmamask, + .coherent_dma_mask = DMA_BIT_MASK(DMA_MASK_BITS_COMMON), + }, +}; + +#ifdef CONFIG_BCM2708_GPIO +#define BCM_GPIO_DRIVER_NAME "bcm2708_gpio" + +static struct resource bcm2708_gpio_resources[] = { + [0] = { /* general purpose I/O */ + .start = GPIO_BASE, + .end = GPIO_BASE + SZ_4K - 1, + .flags = IORESOURCE_MEM, + }, +}; + +static u64 gpio_dmamask = DMA_BIT_MASK(DMA_MASK_BITS_COMMON); + +static struct platform_device bcm2708_gpio_device = { + .name = BCM_GPIO_DRIVER_NAME, + .id = -1, /* only one VideoCore I/O area */ + .resource = bcm2708_gpio_resources, + .num_resources = ARRAY_SIZE(bcm2708_gpio_resources), + .dev = { + .dma_mask = &gpio_dmamask, + .coherent_dma_mask = DMA_BIT_MASK(DMA_MASK_BITS_COMMON), + }, +}; +#endif + +#ifdef CONFIG_MMC_BCM2835 /* Arasan emmc SD (new) */ +static struct resource bcm2835_emmc_resources[] = { + [0] = { + .start = EMMC_BASE, + .end = EMMC_BASE + SZ_256 - 1, /* we only need this area */ + /* the memory map actually makes SZ_4K available */ + .flags = IORESOURCE_MEM, + }, + [1] = { + .start = IRQ_ARASANSDIO, + .end = IRQ_ARASANSDIO, + .flags = IORESOURCE_IRQ, + }, +}; + +static u64 bcm2835_emmc_dmamask = 0xffffffffUL; + +struct platform_device bcm2835_emmc_device = { + .name = "mmc-bcm2835", + .id = 0, + .num_resources = ARRAY_SIZE(bcm2835_emmc_resources), + .resource = bcm2835_emmc_resources, + .dev = { + .dma_mask = &bcm2835_emmc_dmamask, + .coherent_dma_mask = 0xffffffffUL}, +}; +#endif /* CONFIG_MMC_BCM2835 */ + +static struct platform_device bcm2708_alsa_devices[] = { + [0] = { + .name = "bcm2835_AUD0", + .id = 0, /* first audio device */ + .resource = 0, + .num_resources = 0, + }, + [1] = { + .name = "bcm2835_AUD1", + .id = 1, /* second audio device */ + .resource = 0, + .num_resources = 0, + }, + [2] = { + .name = "bcm2835_AUD2", + .id = 2, /* third audio device */ + .resource = 0, + .num_resources = 0, + }, + [3] = { + .name = "bcm2835_AUD3", + .id = 3, /* forth audio device */ + .resource = 0, + .num_resources = 0, + }, + [4] = { + .name = "bcm2835_AUD4", + .id = 4, /* fifth audio device */ + .resource = 0, + .num_resources = 0, + }, + [5] = { + .name = "bcm2835_AUD5", + .id = 5, /* sixth audio device */ + .resource = 0, + .num_resources = 0, + }, + [6] = { + .name = "bcm2835_AUD6", + .id = 6, /* seventh audio device */ + .resource = 0, + .num_resources = 0, + }, + [7] = { + .name = "bcm2835_AUD7", + .id = 7, /* eighth audio device */ + .resource = 0, + .num_resources = 0, + }, +}; + +static struct resource bcm2708_spi_resources[] = { + { + .start = SPI0_BASE, + .end = SPI0_BASE + SZ_256 - 1, + .flags = IORESOURCE_MEM, + }, { + .start = IRQ_SPI, + .end = IRQ_SPI, + .flags = IORESOURCE_IRQ, + } +}; + + +static u64 bcm2708_spi_dmamask = DMA_BIT_MASK(DMA_MASK_BITS_COMMON); +static struct platform_device bcm2708_spi_device = { + .name = "bcm2708_spi", + .id = 0, + .num_resources = ARRAY_SIZE(bcm2708_spi_resources), + .resource = bcm2708_spi_resources, + .dev = { + .dma_mask = &bcm2708_spi_dmamask, + .coherent_dma_mask = DMA_BIT_MASK(DMA_MASK_BITS_COMMON)}, +}; + +#ifdef CONFIG_BCM2708_SPIDEV +static struct spi_board_info bcm2708_spi_devices[] = { +#ifdef CONFIG_SPI_SPIDEV + { + .modalias = "spidev", + .max_speed_hz = 500000, + .bus_num = 0, + .chip_select = 0, + .mode = SPI_MODE_0, + }, { + .modalias = "spidev", + .max_speed_hz = 500000, + .bus_num = 0, + .chip_select = 1, + .mode = SPI_MODE_0, + } +#endif +}; +#endif + +static struct resource bcm2708_bsc0_resources[] = { + { + .start = BSC0_BASE, + .end = BSC0_BASE + SZ_256 - 1, + .flags = IORESOURCE_MEM, + }, { + .start = INTERRUPT_I2C, + .end = INTERRUPT_I2C, + .flags = IORESOURCE_IRQ, + } +}; + +static struct platform_device bcm2708_bsc0_device = { + .name = "bcm2708_i2c", + .id = 0, + .num_resources = ARRAY_SIZE(bcm2708_bsc0_resources), + .resource = bcm2708_bsc0_resources, +}; + + +static struct resource bcm2708_bsc1_resources[] = { + { + .start = BSC1_BASE, + .end = BSC1_BASE + SZ_256 - 1, + .flags = IORESOURCE_MEM, + }, { + .start = INTERRUPT_I2C, + .end = INTERRUPT_I2C, + .flags = IORESOURCE_IRQ, + } +}; + +static struct platform_device bcm2708_bsc1_device = { + .name = "bcm2708_i2c", + .id = 1, + .num_resources = ARRAY_SIZE(bcm2708_bsc1_resources), + .resource = bcm2708_bsc1_resources, +}; + +static struct platform_device bcm2835_thermal_device = { + .name = "bcm2835_thermal", +}; + +#if defined(CONFIG_SND_BCM2708_SOC_I2S) || defined(CONFIG_SND_BCM2708_SOC_I2S_MODULE) +static struct resource bcm2708_i2s_resources[] = { + { + .start = I2S_BASE, + .end = I2S_BASE + 0x20, + .flags = IORESOURCE_MEM, + }, + { + .start = PCM_CLOCK_BASE, + .end = PCM_CLOCK_BASE + 0x02, + .flags = IORESOURCE_MEM, + } +}; + +static struct platform_device bcm2708_i2s_device = { + .name = "bcm2708-i2s", + .id = 0, + .num_resources = ARRAY_SIZE(bcm2708_i2s_resources), + .resource = bcm2708_i2s_resources, +}; +#endif + +#if defined(CONFIG_SND_BCM2708_SOC_HIFIBERRY_DAC) || defined(CONFIG_SND_BCM2708_SOC_HIFIBERRY_DAC_MODULE) +static struct platform_device snd_hifiberry_dac_device = { + .name = "snd-hifiberry-dac", + .id = 0, + .num_resources = 0, +}; + +static struct platform_device snd_pcm5102a_codec_device = { + .name = "pcm5102a-codec", + .id = -1, + .num_resources = 0, +}; +#endif + +#if defined(CONFIG_SND_BCM2708_SOC_HIFIBERRY_DACPLUS) || defined(CONFIG_SND_BCM2708_SOC_HIFIBERRY_DACPLUS_MODULE) +static struct platform_device snd_rpi_hifiberry_dacplus_device = { + .name = "snd-rpi-hifiberry-dacplus", + .id = 0, + .num_resources = 0, +}; + +static struct i2c_board_info __initdata snd_pcm512x_hbdacplus_i2c_devices[] = { + { + I2C_BOARD_INFO("pcm5122", 0x4d) + }, +}; +#endif + +#if defined(CONFIG_SND_BCM2708_SOC_HIFIBERRY_DIGI) || defined(CONFIG_SND_BCM2708_SOC_HIFIBERRY_DIGI_MODULE) +static struct platform_device snd_hifiberry_digi_device = { + .name = "snd-hifiberry-digi", + .id = 0, + .num_resources = 0, +}; + +static struct i2c_board_info __initdata snd_wm8804_i2c_devices[] = { + { + I2C_BOARD_INFO("wm8804", 0x3b) + }, +}; + +#endif + +#if defined(CONFIG_SND_BCM2708_SOC_HIFIBERRY_AMP) || defined(CONFIG_SND_BCM2708_SOC_HIFIBERRY_AMP_MODULE) +static struct platform_device snd_hifiberry_amp_device = { + .name = "snd-hifiberry-amp", + .id = 0, + .num_resources = 0, +}; + +static struct i2c_board_info __initdata snd_tas5713_i2c_devices[] = { + { + I2C_BOARD_INFO("tas5713", 0x1b) + }, +}; +#endif + +#if defined(CONFIG_SND_BCM2708_SOC_RPI_DAC) || defined(CONFIG_SND_BCM2708_SOC_RPI_DAC_MODULE) +static struct platform_device snd_rpi_dac_device = { + .name = "snd-rpi-dac", + .id = 0, + .num_resources = 0, +}; + +static struct platform_device snd_pcm1794a_codec_device = { + .name = "pcm1794a-codec", + .id = -1, + .num_resources = 0, +}; +#endif + + +#if defined(CONFIG_SND_BCM2708_SOC_IQAUDIO_DAC) || defined(CONFIG_SND_BCM2708_SOC_IQAUDIO_DAC_MODULE) +static struct platform_device snd_rpi_iqaudio_dac_device = { + .name = "snd-rpi-iqaudio-dac", + .id = 0, + .num_resources = 0, +}; + +// Use the actual device name rather than generic driver name +static struct i2c_board_info __initdata snd_pcm512x_i2c_devices[] = { + { + I2C_BOARD_INFO("pcm5122", 0x4c) + }, +}; +#endif + +int __init bcm_register_device(struct platform_device *pdev) +{ + int ret; + + ret = platform_device_register(pdev); + if (ret) + pr_debug("Unable to register platform device '%s': %d\n", + pdev->name, ret); + + return ret; +} + +/* + * Use these macros for platform and i2c devices that are present in the + * Device Tree. This way the devices are only added on non-DT systems. + */ +#define bcm_register_device_dt(pdev) \ + if (!use_dt) bcm_register_device(pdev) + +#define i2c_register_board_info_dt(busnum, info, n) \ + if (!use_dt) i2c_register_board_info(busnum, info, n) + +int calc_rsts(int partition) +{ + return PM_PASSWORD | + ((partition & (1 << 0)) << 0) | + ((partition & (1 << 1)) << 1) | + ((partition & (1 << 2)) << 2) | + ((partition & (1 << 3)) << 3) | + ((partition & (1 << 4)) << 4) | + ((partition & (1 << 5)) << 5); +} + +static void bcm2708_restart(enum reboot_mode mode, const char *cmd) +{ + extern char bcm2708_reboot_mode; + uint32_t pm_rstc, pm_wdog; + uint32_t timeout = 10; + uint32_t pm_rsts = 0; + + if(bcm2708_reboot_mode == 'q') + { + // NOOBS < 1.3 booting with reboot=q + pm_rsts = readl(__io_address(PM_RSTS)); + pm_rsts = PM_PASSWORD | pm_rsts | PM_RSTS_HADWRQ_SET; + } + else if(bcm2708_reboot_mode == 'p') + { + // NOOBS < 1.3 halting + pm_rsts = readl(__io_address(PM_RSTS)); + pm_rsts = PM_PASSWORD | pm_rsts | PM_RSTS_HADWRH_SET; + } + else + { + pm_rsts = calc_rsts(reboot_part); + } + + writel(pm_rsts, __io_address(PM_RSTS)); + + /* Setup watchdog for reset */ + pm_rstc = readl(__io_address(PM_RSTC)); + + pm_wdog = PM_PASSWORD | (timeout & PM_WDOG_TIME_SET); // watchdog timer = timer clock / 16; need password (31:16) + value (11:0) + pm_rstc = PM_PASSWORD | (pm_rstc & PM_RSTC_WRCFG_CLR) | PM_RSTC_WRCFG_FULL_RESET; + + writel(pm_wdog, __io_address(PM_WDOG)); + writel(pm_rstc, __io_address(PM_RSTC)); +} + +/* We can't really power off, but if we do the normal reset scheme, and indicate to bootcode.bin not to reboot, then most of the chip will be powered off */ +static void bcm2708_power_off(void) +{ + extern char bcm2708_reboot_mode; + if(bcm2708_reboot_mode == 'q') + { + // NOOBS < v1.3 + bcm2708_restart('p', ""); + } + else + { + /* partition 63 is special code for HALT the bootloader knows not to boot*/ + reboot_part = 63; + /* continue with normal reset mechanism */ + bcm2708_restart(0, ""); + } +} + +static void __init bcm2708_init_uart1(void) +{ + struct device_node *np; + + np = of_find_compatible_node(NULL, NULL, "brcm,bcm2835-aux-uart"); + if (of_device_is_available(np)) { + pr_info("bcm2708: Mini UART enabled\n"); + writel(1, __io_address(UART1_BASE + 0x4)); + } +} + +#ifdef CONFIG_OF +static void __init bcm2708_dt_init(void) +{ + int ret; + + ret = of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL); + if (ret) { + pr_err("of_platform_populate failed: %d\n", ret); + /* Proceed as if CONFIG_OF was not defined */ + } else { + use_dt = 1; + } +} +#else +static void __init bcm2708_dt_init(void) { } +#endif /* CONFIG_OF */ + +void __init bcm2708_init(void) +{ + int i; + +#if defined(CONFIG_BCM_VC_CMA) + vc_cma_early_init(); +#endif + printk("bcm2708.uart_clock = %d\n", uart_clock); + pm_power_off = bcm2708_power_off; + + bcm2708_init_clocks(); + bcm2708_dt_init(); + + bcm_register_device_dt(&bcm2708_dmaengine_device); + bcm_register_device_dt(&bcm2708_vcio_device); + bcm_register_device_dt(&bcm2708_rpifw_device); + bcm_register_device_dt(&bcm2708_vchiq_device); +#ifdef CONFIG_BCM2708_GPIO + bcm_register_device_dt(&bcm2708_gpio_device); +#endif + +#if defined(CONFIG_PPS_CLIENT_GPIO) || defined(CONFIG_PPS_CLIENT_GPIO_MODULE) + if (!use_dt && (pps_gpio_pin >= 0)) { + pr_info("bcm2708: GPIO %d setup as pps-gpio device\n", pps_gpio_pin); + pps_gpio_info.gpio_pin = pps_gpio_pin; + pps_gpio_device.id = pps_gpio_pin; + bcm_register_device(&pps_gpio_device); + } +#endif + +#if defined(CONFIG_W1_MASTER_GPIO) || defined(CONFIG_W1_MASTER_GPIO_MODULE) + w1_gpio_pdata.pin = w1_gpio_pin; + w1_gpio_pdata.ext_pullup_enable_pin = w1_gpio_pullup; + bcm_register_device_dt(&w1_device); +#endif + bcm_register_device_dt(&bcm2708_fb_device); + bcm_register_device_dt(&bcm2708_usb_device); + +#ifdef CONFIG_MMC_BCM2835 + bcm_register_device_dt(&bcm2835_emmc_device); +#endif + bcm2708_init_led(); + bcm2708_init_uart1(); + + /* Only create the platform devices for the ALSA driver in the + absence of an enabled "audio" DT node */ + if (!use_dt || + !of_device_is_available(of_find_node_by_path("/audio"))) { + for (i = 0; i < ARRAY_SIZE(bcm2708_alsa_devices); i++) + bcm_register_device(&bcm2708_alsa_devices[i]); + } + + bcm_register_device_dt(&bcm2708_spi_device); + + if (vc_i2c_override) { + bcm_register_device_dt(&bcm2708_bsc0_device); + bcm_register_device_dt(&bcm2708_bsc1_device); + } else if ((boardrev & 0xffffff) == 0x2 || (boardrev & 0xffffff) == 0x3) { + bcm_register_device_dt(&bcm2708_bsc0_device); + } else { + bcm_register_device_dt(&bcm2708_bsc1_device); + } + + bcm_register_device_dt(&bcm2835_thermal_device); + +#if defined(CONFIG_SND_BCM2708_SOC_I2S) || defined(CONFIG_SND_BCM2708_SOC_I2S_MODULE) + bcm_register_device_dt(&bcm2708_i2s_device); +#endif + +#if defined(CONFIG_SND_BCM2708_SOC_HIFIBERRY_DAC) || defined(CONFIG_SND_BCM2708_SOC_HIFIBERRY_DAC_MODULE) + bcm_register_device_dt(&snd_hifiberry_dac_device); + bcm_register_device_dt(&snd_pcm5102a_codec_device); +#endif + +#if defined(CONFIG_SND_BCM2708_SOC_HIFIBERRY_DACPLUS) || defined(CONFIG_SND_BCM2708_SOC_HIFIBERRY_DACPLUS_MODULE) + bcm_register_device_dt(&snd_rpi_hifiberry_dacplus_device); + i2c_register_board_info_dt(1, snd_pcm512x_hbdacplus_i2c_devices, ARRAY_SIZE(snd_pcm512x_hbdacplus_i2c_devices)); +#endif + +#if defined(CONFIG_SND_BCM2708_SOC_HIFIBERRY_DIGI) || defined(CONFIG_SND_BCM2708_SOC_HIFIBERRY_DIGI_MODULE) + bcm_register_device_dt(&snd_hifiberry_digi_device); + i2c_register_board_info_dt(1, snd_wm8804_i2c_devices, ARRAY_SIZE(snd_wm8804_i2c_devices)); +#endif + +#if defined(CONFIG_SND_BCM2708_SOC_HIFIBERRY_AMP) || defined(CONFIG_SND_BCM2708_SOC_HIFIBERRY_AMP_MODULE) + bcm_register_device_dt(&snd_hifiberry_amp_device); + i2c_register_board_info_dt(1, snd_tas5713_i2c_devices, ARRAY_SIZE(snd_tas5713_i2c_devices)); +#endif + +#if defined(CONFIG_SND_BCM2708_SOC_RPI_DAC) || defined(CONFIG_SND_BCM2708_SOC_RPI_DAC_MODULE) + bcm_register_device_dt(&snd_rpi_dac_device); + bcm_register_device_dt(&snd_pcm1794a_codec_device); +#endif + +#if defined(CONFIG_SND_BCM2708_SOC_IQAUDIO_DAC) || defined(CONFIG_SND_BCM2708_SOC_IQAUDIO_DAC_MODULE) + bcm_register_device_dt(&snd_rpi_iqaudio_dac_device); + i2c_register_board_info_dt(1, snd_pcm512x_i2c_devices, ARRAY_SIZE(snd_pcm512x_i2c_devices)); +#endif + + if (!use_dt) { + for (i = 0; i < ARRAY_SIZE(amba_devs); i++) { + struct amba_device *d = amba_devs[i]; + amba_device_register(d, &iomem_resource); + } + } + system_rev = boardrev; + system_serial_low = serial; + +#ifdef CONFIG_BCM2708_SPIDEV + if (!use_dt) + spi_register_board_info(bcm2708_spi_devices, + ARRAY_SIZE(bcm2708_spi_devices)); +#endif +} + +static void timer_set_mode(enum clock_event_mode mode, + struct clock_event_device *clk) +{ + switch (mode) { + case CLOCK_EVT_MODE_ONESHOT: /* Leave the timer disabled, .set_next_event will enable it */ + case CLOCK_EVT_MODE_SHUTDOWN: + break; + case CLOCK_EVT_MODE_PERIODIC: + + case CLOCK_EVT_MODE_UNUSED: + case CLOCK_EVT_MODE_RESUME: + + default: + printk(KERN_ERR "timer_set_mode: unhandled mode:%d\n", + (int)mode); + break; + } + +} + +static int timer_set_next_event(unsigned long cycles, + struct clock_event_device *unused) +{ + unsigned long stc; + do { + stc = readl(__io_address(ST_BASE + 0x04)); + /* We could take a FIQ here, which may push ST above STC3 */ + writel(stc + cycles, __io_address(ST_BASE + 0x18)); + } while ((signed long) cycles >= 0 && + (signed long) (readl(__io_address(ST_BASE + 0x04)) - stc) + >= (signed long) cycles); + return 0; +} + +static struct clock_event_device timer0_clockevent = { + .name = "timer0", + .shift = 32, + .features = CLOCK_EVT_FEAT_ONESHOT, + .set_mode = timer_set_mode, + .set_next_event = timer_set_next_event, +}; + +/* + * IRQ handler for the timer + */ +static irqreturn_t bcm2708_timer_interrupt(int irq, void *dev_id) +{ + struct clock_event_device *evt = &timer0_clockevent; + + writel(1 << 3, __io_address(ST_BASE + 0x00)); /* stcs clear timer int */ + + evt->event_handler(evt); + + return IRQ_HANDLED; +} + +static struct irqaction bcm2708_timer_irq = { + .name = "BCM2708 Timer Tick", + .flags = IRQF_TIMER | IRQF_IRQPOLL, + .handler = bcm2708_timer_interrupt, +}; + +/* + * Set up timer interrupt, and return the current time in seconds. + */ + +static struct delay_timer bcm2708_delay_timer = { + .read_current_timer = bcm2708_read_current_timer, + .freq = STC_FREQ_HZ, +}; + +static void __init bcm2708_timer_init(void) +{ + if (of_have_populated_dt()) { + of_clk_init(NULL); + clocksource_of_init(); + return; + } + + /* init high res timer */ + bcm2708_clocksource_init(); + + /* + * Make irqs happen for the system timer + */ + setup_irq(IRQ_TIMER3, &bcm2708_timer_irq); + + sched_clock_register(bcm2708_read_sched_clock, 32, STC_FREQ_HZ); + + timer0_clockevent.mult = + div_sc(STC_FREQ_HZ, NSEC_PER_SEC, timer0_clockevent.shift); + timer0_clockevent.max_delta_ns = + clockevent_delta2ns(0xffffffff, &timer0_clockevent); + timer0_clockevent.min_delta_ns = + clockevent_delta2ns(0xf, &timer0_clockevent); + + timer0_clockevent.cpumask = cpumask_of(0); + clockevents_register_device(&timer0_clockevent); + + register_current_timer_delay(&bcm2708_delay_timer); +} + +#if defined(CONFIG_LEDS_GPIO) || defined(CONFIG_LEDS_GPIO_MODULE) +#include + +static struct gpio_led bcm2708_leds[] = { + [0] = { + .gpio = 16, + .name = "led0", + .default_trigger = "mmc0", + .active_low = 1, + }, +}; + +static struct gpio_led_platform_data bcm2708_led_pdata = { + .num_leds = ARRAY_SIZE(bcm2708_leds), + .leds = bcm2708_leds, +}; + +static struct platform_device bcm2708_led_device = { + .name = "leds-gpio", + .id = -1, + .dev = { + .platform_data = &bcm2708_led_pdata, + }, +}; + +static void __init bcm2708_init_led(void) +{ + bcm2708_leds[0].gpio = disk_led_gpio; + bcm2708_leds[0].active_low = disk_led_active_low; + bcm_register_device_dt(&bcm2708_led_device); +} +#else +static inline void bcm2708_init_led(void) +{ +} +#endif + +void __init bcm2708_init_early(void) +{ + /* + * Some devices allocate their coherent buffers from atomic + * context. Increase size of atomic coherent pool to make sure such + * the allocations won't fail. + */ + init_dma_coherent_pool_size(SZ_4M); +} + +static void __init board_reserve(void) +{ +#if defined(CONFIG_BCM_VC_CMA) + vc_cma_reserve(); +#endif +} + +static const char * const bcm2708_compat[] = { + "brcm,bcm2708", + NULL +}; + +MACHINE_START(BCM2708, "BCM2708") + /* Maintainer: Broadcom Europe Ltd. */ + .map_io = bcm2708_map_io, + .init_irq = bcm2708_init_irq, + .init_time = bcm2708_timer_init, + .init_machine = bcm2708_init, + .init_early = bcm2708_init_early, + .reserve = board_reserve, + .restart = bcm2708_restart, + .dt_compat = bcm2708_compat, +MACHINE_END + +module_param(boardrev, uint, 0644); +module_param(serial, uint, 0644); +module_param(uart_clock, uint, 0644); +module_param(disk_led_gpio, uint, 0644); +module_param(disk_led_active_low, uint, 0644); +module_param(reboot_part, uint, 0644); +module_param(w1_gpio_pin, uint, 0644); +module_param(w1_gpio_pullup, uint, 0644); +module_param(vc_i2c_override, bool, 0644); +MODULE_PARM_DESC(vc_i2c_override, "Allow the use of VC's I2C peripheral."); +module_param(pps_gpio_pin, int, 0644); +MODULE_PARM_DESC(pps_gpio_pin, "Set GPIO pin to reserve for PPS"); --- linux-raspi2-4.2.0.orig/arch/arm/mach-bcm2708/bcm2708.h +++ linux-raspi2-4.2.0/arch/arm/mach-bcm2708/bcm2708.h @@ -0,0 +1,49 @@ +/* + * linux/arch/arm/mach-bcm2708/bcm2708.h + * + * BCM2708 machine support header + * + * Copyright (C) 2010 Broadcom + * + * 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 + */ + +#ifndef __BCM2708_BCM2708_H +#define __BCM2708_BCM2708_H + +#include + +extern void __init bcm2708_init(void); +extern void __init bcm2708_init_irq(void); +extern void __init bcm2708_map_io(void); +extern struct sys_timer bcm2708_timer; +extern unsigned int mmc_status(struct device *dev); + +#define AMBA_DEVICE(name, busid, base, plat) \ +static struct amba_device name##_device = { \ + .dev = { \ + .coherent_dma_mask = ~0, \ + .init_name = busid, \ + .platform_data = plat, \ + }, \ + .res = { \ + .start = base##_BASE, \ + .end = (base##_BASE) + SZ_4K - 1,\ + .flags = IORESOURCE_MEM, \ + }, \ + .irq = base##_IRQ, \ +} + +#endif --- linux-raspi2-4.2.0.orig/arch/arm/mach-bcm2708/bcm2708_gpio.c +++ linux-raspi2-4.2.0/arch/arm/mach-bcm2708/bcm2708_gpio.c @@ -0,0 +1,426 @@ +/* + * linux/arch/arm/mach-bcm2708/bcm2708_gpio.c + * + * Copyright (C) 2010 Broadcom + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + * + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +#define BCM_GPIO_DRIVER_NAME "bcm2708_gpio" +#define DRIVER_NAME BCM_GPIO_DRIVER_NAME +#define BCM_GPIO_USE_IRQ 1 + +#define GPIOFSEL(x) (0x00+(x)*4) +#define GPIOSET(x) (0x1c+(x)*4) +#define GPIOCLR(x) (0x28+(x)*4) +#define GPIOLEV(x) (0x34+(x)*4) +#define GPIOEDS(x) (0x40+(x)*4) +#define GPIOREN(x) (0x4c+(x)*4) +#define GPIOFEN(x) (0x58+(x)*4) +#define GPIOHEN(x) (0x64+(x)*4) +#define GPIOLEN(x) (0x70+(x)*4) +#define GPIOAREN(x) (0x7c+(x)*4) +#define GPIOAFEN(x) (0x88+(x)*4) +#define GPIOUD(x) (0x94+(x)*4) +#define GPIOUDCLK(x) (0x98+(x)*4) + +#define GPIO_BANKS 2 + +enum { GPIO_FSEL_INPUT, GPIO_FSEL_OUTPUT, + GPIO_FSEL_ALT5, GPIO_FSEL_ALT_4, + GPIO_FSEL_ALT0, GPIO_FSEL_ALT1, + GPIO_FSEL_ALT2, GPIO_FSEL_ALT3, +}; + + /* Each of the two spinlocks protects a different set of hardware + * regiters and data structurs. This decouples the code of the IRQ from + * the GPIO code. This also makes the case of a GPIO routine call from + * the IRQ code simpler. + */ +static DEFINE_SPINLOCK(lock); /* GPIO registers */ + +struct bcm2708_gpio { + struct list_head list; + void __iomem *base; + struct gpio_chip gc; + unsigned long rising[(BCM2708_NR_GPIOS + 31) / 32]; + unsigned long falling[(BCM2708_NR_GPIOS + 31) / 32]; + unsigned long high[(BCM2708_NR_GPIOS + 31) / 32]; + unsigned long low[(BCM2708_NR_GPIOS + 31) / 32]; +}; + +static int bcm2708_set_function(struct gpio_chip *gc, unsigned offset, + int function) +{ + struct bcm2708_gpio *gpio = container_of(gc, struct bcm2708_gpio, gc); + unsigned long flags; + unsigned gpiodir; + unsigned gpio_bank = offset / 10; + unsigned gpio_field_offset = (offset - 10 * gpio_bank) * 3; + +//printk(KERN_ERR DRIVER_NAME ": bcm2708_gpio_set_function %p (%d,%d)\n", gc, offset, function); + if (offset >= BCM2708_NR_GPIOS) + return -EINVAL; + + spin_lock_irqsave(&lock, flags); + + gpiodir = readl(gpio->base + GPIOFSEL(gpio_bank)); + gpiodir &= ~(7 << gpio_field_offset); + gpiodir |= function << gpio_field_offset; + writel(gpiodir, gpio->base + GPIOFSEL(gpio_bank)); + spin_unlock_irqrestore(&lock, flags); + gpiodir = readl(gpio->base + GPIOFSEL(gpio_bank)); + + return 0; +} + +static int bcm2708_gpio_dir_in(struct gpio_chip *gc, unsigned offset) +{ + return bcm2708_set_function(gc, offset, GPIO_FSEL_INPUT); +} + +static void bcm2708_gpio_set(struct gpio_chip *gc, unsigned offset, int value); +static int bcm2708_gpio_dir_out(struct gpio_chip *gc, unsigned offset, + int value) +{ + int ret; + ret = bcm2708_set_function(gc, offset, GPIO_FSEL_OUTPUT); + if (ret >= 0) + bcm2708_gpio_set(gc, offset, value); + return ret; +} + +static int bcm2708_gpio_get(struct gpio_chip *gc, unsigned offset) +{ + struct bcm2708_gpio *gpio = container_of(gc, struct bcm2708_gpio, gc); + unsigned gpio_bank = offset / 32; + unsigned gpio_field_offset = (offset - 32 * gpio_bank); + unsigned lev; + + if (offset >= BCM2708_NR_GPIOS) + return 0; + lev = readl(gpio->base + GPIOLEV(gpio_bank)); +//printk(KERN_ERR DRIVER_NAME ": bcm2708_gpio_get %p (%d)=%d\n", gc, offset, 0x1 & (lev>>gpio_field_offset)); + return 0x1 & (lev >> gpio_field_offset); +} + +static void bcm2708_gpio_set(struct gpio_chip *gc, unsigned offset, int value) +{ + struct bcm2708_gpio *gpio = container_of(gc, struct bcm2708_gpio, gc); + unsigned gpio_bank = offset / 32; + unsigned gpio_field_offset = (offset - 32 * gpio_bank); +//printk(KERN_ERR DRIVER_NAME ": bcm2708_gpio_set %p (%d=%d)\n", gc, offset, value); + if (offset >= BCM2708_NR_GPIOS) + return; + if (value) + writel(1 << gpio_field_offset, gpio->base + GPIOSET(gpio_bank)); + else + writel(1 << gpio_field_offset, gpio->base + GPIOCLR(gpio_bank)); +} + +/********************** + * extension to configure pullups + */ +int bcm2708_gpio_setpull(struct gpio_chip *gc, unsigned offset, + bcm2708_gpio_pull_t value) +{ + struct bcm2708_gpio *gpio = container_of(gc, struct bcm2708_gpio, gc); + unsigned gpio_bank = offset / 32; + unsigned gpio_field_offset = (offset - 32 * gpio_bank); + + if (offset >= BCM2708_NR_GPIOS) + return -EINVAL; + + switch (value) { + case BCM2708_PULL_UP: + writel(2, gpio->base + GPIOUD(0)); + break; + case BCM2708_PULL_DOWN: + writel(1, gpio->base + GPIOUD(0)); + break; + case BCM2708_PULL_OFF: + writel(0, gpio->base + GPIOUD(0)); + break; + } + + udelay(5); + writel(1 << gpio_field_offset, gpio->base + GPIOUDCLK(gpio_bank)); + udelay(5); + writel(0, gpio->base + GPIOUD(0)); + writel(0 << gpio_field_offset, gpio->base + GPIOUDCLK(gpio_bank)); + + return 0; +} +EXPORT_SYMBOL(bcm2708_gpio_setpull); + +/************************************************************************************************************************* + * bcm2708 GPIO IRQ + */ + +#if BCM_GPIO_USE_IRQ + +static int bcm2708_gpio_to_irq(struct gpio_chip *chip, unsigned gpio) +{ + return gpio_to_irq(gpio); +} + +static int bcm2708_gpio_irq_set_type(struct irq_data *d, unsigned type) +{ + unsigned irq = d->irq; + struct bcm2708_gpio *gpio = irq_get_chip_data(irq); + unsigned gn = irq_to_gpio(irq); + unsigned gb = gn / 32; + unsigned go = gn % 32; + + gpio->rising[gb] &= ~(1 << go); + gpio->falling[gb] &= ~(1 << go); + gpio->high[gb] &= ~(1 << go); + gpio->low[gb] &= ~(1 << go); + + if (type & ~(IRQ_TYPE_EDGE_FALLING | IRQ_TYPE_EDGE_RISING | IRQ_TYPE_LEVEL_LOW | IRQ_TYPE_LEVEL_HIGH)) + return -EINVAL; + + if (type & IRQ_TYPE_EDGE_RISING) + gpio->rising[gb] |= (1 << go); + if (type & IRQ_TYPE_EDGE_FALLING) + gpio->falling[gb] |= (1 << go); + if (type & IRQ_TYPE_LEVEL_HIGH) + gpio->high[gb] |= (1 << go); + if (type & IRQ_TYPE_LEVEL_LOW) + gpio->low[gb] |= (1 << go); + return 0; +} + +static void bcm2708_gpio_irq_mask(struct irq_data *d) +{ + unsigned irq = d->irq; + struct bcm2708_gpio *gpio = irq_get_chip_data(irq); + unsigned gn = irq_to_gpio(irq); + unsigned gb = gn / 32; + unsigned long rising = readl(gpio->base + GPIOREN(gb)); + unsigned long falling = readl(gpio->base + GPIOFEN(gb)); + unsigned long high = readl(gpio->base + GPIOHEN(gb)); + unsigned long low = readl(gpio->base + GPIOLEN(gb)); + + gn = gn % 32; + + writel(rising & ~(1 << gn), gpio->base + GPIOREN(gb)); + writel(falling & ~(1 << gn), gpio->base + GPIOFEN(gb)); + writel(high & ~(1 << gn), gpio->base + GPIOHEN(gb)); + writel(low & ~(1 << gn), gpio->base + GPIOLEN(gb)); +} + +static void bcm2708_gpio_irq_unmask(struct irq_data *d) +{ + unsigned irq = d->irq; + struct bcm2708_gpio *gpio = irq_get_chip_data(irq); + unsigned gn = irq_to_gpio(irq); + unsigned gb = gn / 32; + unsigned go = gn % 32; + unsigned long rising = readl(gpio->base + GPIOREN(gb)); + unsigned long falling = readl(gpio->base + GPIOFEN(gb)); + unsigned long high = readl(gpio->base + GPIOHEN(gb)); + unsigned long low = readl(gpio->base + GPIOLEN(gb)); + + if (gpio->rising[gb] & (1 << go)) { + writel(rising | (1 << go), gpio->base + GPIOREN(gb)); + } else { + writel(rising & ~(1 << go), gpio->base + GPIOREN(gb)); + } + + if (gpio->falling[gb] & (1 << go)) { + writel(falling | (1 << go), gpio->base + GPIOFEN(gb)); + } else { + writel(falling & ~(1 << go), gpio->base + GPIOFEN(gb)); + } + + if (gpio->high[gb] & (1 << go)) { + writel(high | (1 << go), gpio->base + GPIOHEN(gb)); + } else { + writel(high & ~(1 << go), gpio->base + GPIOHEN(gb)); + } + + if (gpio->low[gb] & (1 << go)) { + writel(low | (1 << go), gpio->base + GPIOLEN(gb)); + } else { + writel(low & ~(1 << go), gpio->base + GPIOLEN(gb)); + } +} + +static struct irq_chip bcm2708_irqchip = { + .name = "GPIO", + .irq_enable = bcm2708_gpio_irq_unmask, + .irq_disable = bcm2708_gpio_irq_mask, + .irq_unmask = bcm2708_gpio_irq_unmask, + .irq_mask = bcm2708_gpio_irq_mask, + .irq_set_type = bcm2708_gpio_irq_set_type, +}; + +static irqreturn_t bcm2708_gpio_interrupt(int irq, void *dev_id) +{ + unsigned long edsr; + unsigned bank; + int i; + unsigned gpio; + unsigned level_bits; + struct bcm2708_gpio *gpio_data = dev_id; + + for (bank = 0; bank < GPIO_BANKS; bank++) { + edsr = readl(__io_address(GPIO_BASE) + GPIOEDS(bank)); + level_bits = gpio_data->high[bank] | gpio_data->low[bank]; + + for_each_set_bit(i, &edsr, 32) { + gpio = i + bank * 32; + /* ack edge triggered IRQs immediately */ + if (!(level_bits & (1<gc.to_irq = bcm2708_gpio_to_irq; + + for (irq = GPIO_IRQ_START; irq < (GPIO_IRQ_START + GPIO_IRQS); irq++) { + irq_set_chip_data(irq, ucb); + irq_set_chip_and_handler(irq, &bcm2708_irqchip, + handle_simple_irq); + set_irq_flags(irq, IRQF_VALID); + } + + bcm2708_gpio_irq.dev_id = ucb; + setup_irq(IRQ_GPIO3, &bcm2708_gpio_irq); +} + +#else + +static void bcm2708_gpio_irq_init(struct bcm2708_gpio *ucb) +{ +} + +#endif /* #if BCM_GPIO_USE_IRQ ***************************************************************************************************************** */ + +static int bcm2708_gpio_probe(struct platform_device *dev) +{ + struct bcm2708_gpio *ucb; + struct resource *res; + int bank; + int err = 0; + + printk(KERN_INFO DRIVER_NAME ": bcm2708_gpio_probe %p\n", dev); + + ucb = kzalloc(sizeof(*ucb), GFP_KERNEL); + if (NULL == ucb) { + printk(KERN_ERR DRIVER_NAME ": failed to allocate " + "mailbox memory\n"); + err = -ENOMEM; + goto err; + } + + res = platform_get_resource(dev, IORESOURCE_MEM, 0); + + platform_set_drvdata(dev, ucb); + ucb->base = __io_address(GPIO_BASE); + + ucb->gc.label = "bcm2708_gpio"; + ucb->gc.base = 0; + ucb->gc.ngpio = BCM2708_NR_GPIOS; + ucb->gc.owner = THIS_MODULE; + + ucb->gc.direction_input = bcm2708_gpio_dir_in; + ucb->gc.direction_output = bcm2708_gpio_dir_out; + ucb->gc.get = bcm2708_gpio_get; + ucb->gc.set = bcm2708_gpio_set; + ucb->gc.can_sleep = 0; + + for (bank = 0; bank < GPIO_BANKS; bank++) { + writel(0, ucb->base + GPIOREN(bank)); + writel(0, ucb->base + GPIOFEN(bank)); + writel(0, ucb->base + GPIOHEN(bank)); + writel(0, ucb->base + GPIOLEN(bank)); + writel(0, ucb->base + GPIOAREN(bank)); + writel(0, ucb->base + GPIOAFEN(bank)); + writel(~0, ucb->base + GPIOEDS(bank)); + } + + bcm2708_gpio_irq_init(ucb); + + err = gpiochip_add(&ucb->gc); + +err: + return err; + +} + +static int bcm2708_gpio_remove(struct platform_device *dev) +{ + int err = 0; + struct bcm2708_gpio *ucb = platform_get_drvdata(dev); + + printk(KERN_ERR DRIVER_NAME ": bcm2708_gpio_remove %p\n", dev); + + gpiochip_remove(&ucb->gc); + + platform_set_drvdata(dev, NULL); + kfree(ucb); + + return err; +} + +static struct platform_driver bcm2708_gpio_driver = { + .probe = bcm2708_gpio_probe, + .remove = bcm2708_gpio_remove, + .driver = { + .name = "bcm2708_gpio"}, +}; + +static int __init bcm2708_gpio_init(void) +{ + return platform_driver_register(&bcm2708_gpio_driver); +} + +static void __exit bcm2708_gpio_exit(void) +{ + platform_driver_unregister(&bcm2708_gpio_driver); +} + +module_init(bcm2708_gpio_init); +module_exit(bcm2708_gpio_exit); + +MODULE_DESCRIPTION("Broadcom BCM2708 GPIO driver"); +MODULE_LICENSE("GPL"); --- linux-raspi2-4.2.0.orig/arch/arm/mach-bcm2708/include/mach/arm_control.h +++ linux-raspi2-4.2.0/arch/arm/mach-bcm2708/include/mach/arm_control.h @@ -0,0 +1,419 @@ +/* + * linux/arch/arm/mach-bcm2708/arm_control.h + * + * Copyright (C) 2010 Broadcom + * + * 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 + */ + +#ifndef __BCM2708_ARM_CONTROL_H +#define __BCM2708_ARM_CONTROL_H + +/* + * Definitions and addresses for the ARM CONTROL logic + * This file is manually generated. + */ + +#define ARM_BASE 0x7E00B000 + +/* Basic configuration */ +#define ARM_CONTROL0 HW_REGISTER_RW(ARM_BASE+0x000) +#define ARM_C0_SIZ128M 0x00000000 +#define ARM_C0_SIZ256M 0x00000001 +#define ARM_C0_SIZ512M 0x00000002 +#define ARM_C0_SIZ1G 0x00000003 +#define ARM_C0_BRESP0 0x00000000 +#define ARM_C0_BRESP1 0x00000004 +#define ARM_C0_BRESP2 0x00000008 +#define ARM_C0_BOOTHI 0x00000010 +#define ARM_C0_UNUSED05 0x00000020 /* free */ +#define ARM_C0_FULLPERI 0x00000040 +#define ARM_C0_UNUSED78 0x00000180 /* free */ +#define ARM_C0_JTAGMASK 0x00000E00 +#define ARM_C0_JTAGOFF 0x00000000 +#define ARM_C0_JTAGBASH 0x00000800 /* Debug on GPIO off */ +#define ARM_C0_JTAGGPIO 0x00000C00 /* Debug on GPIO on */ +#define ARM_C0_APROTMSK 0x0000F000 +#define ARM_C0_DBG0SYNC 0x00010000 /* VPU0 halt sync */ +#define ARM_C0_DBG1SYNC 0x00020000 /* VPU1 halt sync */ +#define ARM_C0_SWDBGREQ 0x00040000 /* HW debug request */ +#define ARM_C0_PASSHALT 0x00080000 /* ARM halt passed to debugger */ +#define ARM_C0_PRIO_PER 0x00F00000 /* per priority mask */ +#define ARM_C0_PRIO_L2 0x0F000000 +#define ARM_C0_PRIO_UC 0xF0000000 + +#define ARM_C0_APROTPASS 0x0000A000 /* Translate 1:1 */ +#define ARM_C0_APROTUSER 0x00000000 /* Only user mode */ +#define ARM_C0_APROTSYST 0x0000F000 /* Only system mode */ + + +#define ARM_CONTROL1 HW_REGISTER_RW(ARM_BASE+0x440) +#define ARM_C1_TIMER 0x00000001 /* re-route timer IRQ to VC */ +#define ARM_C1_MAIL 0x00000002 /* re-route Mail IRQ to VC */ +#define ARM_C1_BELL0 0x00000004 /* re-route Doorbell 0 to VC */ +#define ARM_C1_BELL1 0x00000008 /* re-route Doorbell 1 to VC */ +#define ARM_C1_PERSON 0x00000100 /* peripherals on */ +#define ARM_C1_REQSTOP 0x00000200 /* ASYNC bridge request stop */ + +#define ARM_STATUS HW_REGISTER_RW(ARM_BASE+0x444) +#define ARM_S_ACKSTOP 0x80000000 /* Bridge stopped */ +#define ARM_S_READPEND 0x000003FF /* pending reads counter */ +#define ARM_S_WRITPEND 0x000FFC00 /* pending writes counter */ + +#define ARM_ERRHALT HW_REGISTER_RW(ARM_BASE+0x448) +#define ARM_EH_PERIBURST 0x00000001 /* Burst write seen on peri bus */ +#define ARM_EH_ILLADDRS1 0x00000002 /* Address bits 25-27 error */ +#define ARM_EH_ILLADDRS2 0x00000004 /* Address bits 31-28 error */ +#define ARM_EH_VPU0HALT 0x00000008 /* VPU0 halted & in debug mode */ +#define ARM_EH_VPU1HALT 0x00000010 /* VPU1 halted & in debug mode */ +#define ARM_EH_ARMHALT 0x00000020 /* ARM in halted debug mode */ + +#define ARM_ID_SECURE HW_REGISTER_RW(ARM_BASE+0x00C) +#define ARM_ID HW_REGISTER_RW(ARM_BASE+0x44C) +#define ARM_IDVAL 0x364D5241 + +/* Translation memory */ +#define ARM_TRANSLATE HW_REGISTER_RW(ARM_BASE+0x100) +/* 32 locations: 0x100.. 0x17F */ +/* 32 spare means we CAN go to 64 pages.... */ + + +/* Interrupts */ +#define ARM_IRQ_PEND0 HW_REGISTER_RW(ARM_BASE+0x200) /* Top IRQ bits */ +#define ARM_I0_TIMER 0x00000001 /* timer IRQ */ +#define ARM_I0_MAIL 0x00000002 /* Mail IRQ */ +#define ARM_I0_BELL0 0x00000004 /* Doorbell 0 */ +#define ARM_I0_BELL1 0x00000008 /* Doorbell 1 */ +#define ARM_I0_BANK1 0x00000100 /* Bank1 IRQ */ +#define ARM_I0_BANK2 0x00000200 /* Bank2 IRQ */ + +#define ARM_IRQ_PEND1 HW_REGISTER_RW(ARM_BASE+0x204) /* All bank1 IRQ bits */ +/* todo: all I1_interrupt sources */ +#define ARM_IRQ_PEND2 HW_REGISTER_RW(ARM_BASE+0x208) /* All bank2 IRQ bits */ +/* todo: all I2_interrupt sources */ + +#define ARM_IRQ_FAST HW_REGISTER_RW(ARM_BASE+0x20C) /* FIQ control */ +#define ARM_IF_INDEX 0x0000007F /* FIQ select */ +#define ARM_IF_ENABLE 0x00000080 /* FIQ enable */ +#define ARM_IF_VCMASK 0x0000003F /* FIQ = (index from VC source) */ +#define ARM_IF_TIMER 0x00000040 /* FIQ = ARM timer */ +#define ARM_IF_MAIL 0x00000041 /* FIQ = ARM Mail */ +#define ARM_IF_BELL0 0x00000042 /* FIQ = ARM Doorbell 0 */ +#define ARM_IF_BELL1 0x00000043 /* FIQ = ARM Doorbell 1 */ +#define ARM_IF_VP0HALT 0x00000044 /* FIQ = VPU0 Halt seen */ +#define ARM_IF_VP1HALT 0x00000045 /* FIQ = VPU1 Halt seen */ +#define ARM_IF_ILLEGAL 0x00000046 /* FIQ = Illegal access seen */ + +#define ARM_IRQ_ENBL1 HW_REGISTER_RW(ARM_BASE+0x210) /* Bank1 enable bits */ +#define ARM_IRQ_ENBL2 HW_REGISTER_RW(ARM_BASE+0x214) /* Bank2 enable bits */ +#define ARM_IRQ_ENBL3 HW_REGISTER_RW(ARM_BASE+0x218) /* ARM irqs enable bits */ +#define ARM_IRQ_DIBL1 HW_REGISTER_RW(ARM_BASE+0x21C) /* Bank1 disable bits */ +#define ARM_IRQ_DIBL2 HW_REGISTER_RW(ARM_BASE+0x220) /* Bank2 disable bits */ +#define ARM_IRQ_DIBL3 HW_REGISTER_RW(ARM_BASE+0x224) /* ARM irqs disable bits */ +#define ARM_IE_TIMER 0x00000001 /* Timer IRQ */ +#define ARM_IE_MAIL 0x00000002 /* Mail IRQ */ +#define ARM_IE_BELL0 0x00000004 /* Doorbell 0 */ +#define ARM_IE_BELL1 0x00000008 /* Doorbell 1 */ +#define ARM_IE_VP0HALT 0x00000010 /* VPU0 Halt */ +#define ARM_IE_VP1HALT 0x00000020 /* VPU1 Halt */ +#define ARM_IE_ILLEGAL 0x00000040 /* Illegal access seen */ + +/* Timer */ +/* For reg. fields see sp804 spec. */ +#define ARM_T_LOAD HW_REGISTER_RW(ARM_BASE+0x400) +#define ARM_T_VALUE HW_REGISTER_RW(ARM_BASE+0x404) +#define ARM_T_CONTROL HW_REGISTER_RW(ARM_BASE+0x408) +#define ARM_T_IRQCNTL HW_REGISTER_RW(ARM_BASE+0x40C) +#define ARM_T_RAWIRQ HW_REGISTER_RW(ARM_BASE+0x410) +#define ARM_T_MSKIRQ HW_REGISTER_RW(ARM_BASE+0x414) +#define ARM_T_RELOAD HW_REGISTER_RW(ARM_BASE+0x418) +#define ARM_T_PREDIV HW_REGISTER_RW(ARM_BASE+0x41c) +#define ARM_T_FREECNT HW_REGISTER_RW(ARM_BASE+0x420) + +#define TIMER_CTRL_ONESHOT (1 << 0) +#define TIMER_CTRL_32BIT (1 << 1) +#define TIMER_CTRL_DIV1 (0 << 2) +#define TIMER_CTRL_DIV16 (1 << 2) +#define TIMER_CTRL_DIV256 (2 << 2) +#define TIMER_CTRL_IE (1 << 5) +#define TIMER_CTRL_PERIODIC (1 << 6) +#define TIMER_CTRL_ENABLE (1 << 7) +#define TIMER_CTRL_DBGHALT (1 << 8) +#define TIMER_CTRL_ENAFREE (1 << 9) +#define TIMER_CTRL_FREEDIV_SHIFT 16) +#define TIMER_CTRL_FREEDIV_MASK 0xff + +/* Semaphores, Doorbells, Mailboxes */ +#define ARM_SBM_OWN0 (ARM_BASE+0x800) +#define ARM_SBM_OWN1 (ARM_BASE+0x900) +#define ARM_SBM_OWN2 (ARM_BASE+0xA00) +#define ARM_SBM_OWN3 (ARM_BASE+0xB00) + +/* MAILBOXES + * Register flags are common across all + * owner registers. See end of this section + * + * Semaphores, Doorbells, Mailboxes Owner 0 + * + */ + +#define ARM_0_SEMS HW_REGISTER_RW(ARM_SBM_OWN0+0x00) +#define ARM_0_SEM0 HW_REGISTER_RW(ARM_SBM_OWN0+0x00) +#define ARM_0_SEM1 HW_REGISTER_RW(ARM_SBM_OWN0+0x04) +#define ARM_0_SEM2 HW_REGISTER_RW(ARM_SBM_OWN0+0x08) +#define ARM_0_SEM3 HW_REGISTER_RW(ARM_SBM_OWN0+0x0C) +#define ARM_0_SEM4 HW_REGISTER_RW(ARM_SBM_OWN0+0x10) +#define ARM_0_SEM5 HW_REGISTER_RW(ARM_SBM_OWN0+0x14) +#define ARM_0_SEM6 HW_REGISTER_RW(ARM_SBM_OWN0+0x18) +#define ARM_0_SEM7 HW_REGISTER_RW(ARM_SBM_OWN0+0x1C) +#define ARM_0_BELL0 HW_REGISTER_RW(ARM_SBM_OWN0+0x40) +#define ARM_0_BELL1 HW_REGISTER_RW(ARM_SBM_OWN0+0x44) +#define ARM_0_BELL2 HW_REGISTER_RW(ARM_SBM_OWN0+0x48) +#define ARM_0_BELL3 HW_REGISTER_RW(ARM_SBM_OWN0+0x4C) +/* MAILBOX 0 access in Owner 0 area */ +/* Some addresses should ONLY be used by owner 0 */ +#define ARM_0_MAIL0_WRT HW_REGISTER_RW(ARM_SBM_OWN0+0x80) /* .. 0x8C (4 locations) */ +#define ARM_0_MAIL0_RD HW_REGISTER_RW(ARM_SBM_OWN0+0x80) /* .. 0x8C (4 locations) Normal read */ +#define ARM_0_MAIL0_POL HW_REGISTER_RW(ARM_SBM_OWN0+0x90) /* none-pop read */ +#define ARM_0_MAIL0_SND HW_REGISTER_RW(ARM_SBM_OWN0+0x94) /* Sender read (only LS 2 bits) */ +#define ARM_0_MAIL0_STA HW_REGISTER_RW(ARM_SBM_OWN0+0x98) /* Status read */ +#define ARM_0_MAIL0_CNF HW_REGISTER_RW(ARM_SBM_OWN0+0x9C) /* Config read/write */ +/* MAILBOX 1 access in Owner 0 area */ +/* Owner 0 should only WRITE to this mailbox */ +#define ARM_0_MAIL1_WRT HW_REGISTER_RW(ARM_SBM_OWN0+0xA0) /* .. 0xAC (4 locations) */ +/*#define ARM_0_MAIL1_RD HW_REGISTER_RW(ARM_SBM_OWN0+0xA0) */ /* DO NOT USE THIS !!!!! */ +/*#define ARM_0_MAIL1_POL HW_REGISTER_RW(ARM_SBM_OWN0+0xB0) */ /* DO NOT USE THIS !!!!! */ +/*#define ARM_0_MAIL1_SND HW_REGISTER_RW(ARM_SBM_OWN0+0xB4) */ /* DO NOT USE THIS !!!!! */ +#define ARM_0_MAIL1_STA HW_REGISTER_RW(ARM_SBM_OWN0+0xB8) /* Status read */ +/*#define ARM_0_MAIL1_CNF HW_REGISTER_RW(ARM_SBM_OWN0+0xBC) */ /* DO NOT USE THIS !!!!! */ +/* General SEM, BELL, MAIL config/status */ +#define ARM_0_SEMCLRDBG HW_REGISTER_RW(ARM_SBM_OWN0+0xE0) /* semaphore clear/debug register */ +#define ARM_0_BELLCLRDBG HW_REGISTER_RW(ARM_SBM_OWN0+0xE4) /* Doorbells clear/debug register */ +#define ARM_0_ALL_IRQS HW_REGISTER_RW(ARM_SBM_OWN0+0xF8) /* ALL interrupts */ +#define ARM_0_MY_IRQS HW_REGISTER_RW(ARM_SBM_OWN0+0xFC) /* IRQS pending for owner 0 */ + +/* Semaphores, Doorbells, Mailboxes Owner 1 */ +#define ARM_1_SEMS HW_REGISTER_RW(ARM_SBM_OWN1+0x00) +#define ARM_1_SEM0 HW_REGISTER_RW(ARM_SBM_OWN1+0x00) +#define ARM_1_SEM1 HW_REGISTER_RW(ARM_SBM_OWN1+0x04) +#define ARM_1_SEM2 HW_REGISTER_RW(ARM_SBM_OWN1+0x08) +#define ARM_1_SEM3 HW_REGISTER_RW(ARM_SBM_OWN1+0x0C) +#define ARM_1_SEM4 HW_REGISTER_RW(ARM_SBM_OWN1+0x10) +#define ARM_1_SEM5 HW_REGISTER_RW(ARM_SBM_OWN1+0x14) +#define ARM_1_SEM6 HW_REGISTER_RW(ARM_SBM_OWN1+0x18) +#define ARM_1_SEM7 HW_REGISTER_RW(ARM_SBM_OWN1+0x1C) +#define ARM_1_BELL0 HW_REGISTER_RW(ARM_SBM_OWN1+0x40) +#define ARM_1_BELL1 HW_REGISTER_RW(ARM_SBM_OWN1+0x44) +#define ARM_1_BELL2 HW_REGISTER_RW(ARM_SBM_OWN1+0x48) +#define ARM_1_BELL3 HW_REGISTER_RW(ARM_SBM_OWN1+0x4C) +/* MAILBOX 0 access in Owner 0 area */ +/* Owner 1 should only WRITE to this mailbox */ +#define ARM_1_MAIL0_WRT HW_REGISTER_RW(ARM_SBM_OWN1+0x80) /* .. 0x8C (4 locations) */ +/*#define ARM_1_MAIL0_RD HW_REGISTER_RW(ARM_SBM_OWN1+0x80) */ /* DO NOT USE THIS !!!!! */ +/*#define ARM_1_MAIL0_POL HW_REGISTER_RW(ARM_SBM_OWN1+0x90) */ /* DO NOT USE THIS !!!!! */ +/*#define ARM_1_MAIL0_SND HW_REGISTER_RW(ARM_SBM_OWN1+0x94) */ /* DO NOT USE THIS !!!!! */ +#define ARM_1_MAIL0_STA HW_REGISTER_RW(ARM_SBM_OWN1+0x98) /* Status read */ +/*#define ARM_1_MAIL0_CNF HW_REGISTER_RW(ARM_SBM_OWN1+0x9C) */ /* DO NOT USE THIS !!!!! */ +/* MAILBOX 1 access in Owner 0 area */ +#define ARM_1_MAIL1_WRT HW_REGISTER_RW(ARM_SBM_OWN1+0xA0) /* .. 0xAC (4 locations) */ +#define ARM_1_MAIL1_RD HW_REGISTER_RW(ARM_SBM_OWN1+0xA0) /* .. 0xAC (4 locations) Normal read */ +#define ARM_1_MAIL1_POL HW_REGISTER_RW(ARM_SBM_OWN1+0xB0) /* none-pop read */ +#define ARM_1_MAIL1_SND HW_REGISTER_RW(ARM_SBM_OWN1+0xB4) /* Sender read (only LS 2 bits) */ +#define ARM_1_MAIL1_STA HW_REGISTER_RW(ARM_SBM_OWN1+0xB8) /* Status read */ +#define ARM_1_MAIL1_CNF HW_REGISTER_RW(ARM_SBM_OWN1+0xBC) +/* General SEM, BELL, MAIL config/status */ +#define ARM_1_SEMCLRDBG HW_REGISTER_RW(ARM_SBM_OWN1+0xE0) /* semaphore clear/debug register */ +#define ARM_1_BELLCLRDBG HW_REGISTER_RW(ARM_SBM_OWN1+0xE4) /* Doorbells clear/debug register */ +#define ARM_1_MY_IRQS HW_REGISTER_RW(ARM_SBM_OWN1+0xFC) /* IRQS pending for owner 1 */ +#define ARM_1_ALL_IRQS HW_REGISTER_RW(ARM_SBM_OWN1+0xF8) /* ALL interrupts */ + +/* Semaphores, Doorbells, Mailboxes Owner 2 */ +#define ARM_2_SEMS HW_REGISTER_RW(ARM_SBM_OWN2+0x00) +#define ARM_2_SEM0 HW_REGISTER_RW(ARM_SBM_OWN2+0x00) +#define ARM_2_SEM1 HW_REGISTER_RW(ARM_SBM_OWN2+0x04) +#define ARM_2_SEM2 HW_REGISTER_RW(ARM_SBM_OWN2+0x08) +#define ARM_2_SEM3 HW_REGISTER_RW(ARM_SBM_OWN2+0x0C) +#define ARM_2_SEM4 HW_REGISTER_RW(ARM_SBM_OWN2+0x10) +#define ARM_2_SEM5 HW_REGISTER_RW(ARM_SBM_OWN2+0x14) +#define ARM_2_SEM6 HW_REGISTER_RW(ARM_SBM_OWN2+0x18) +#define ARM_2_SEM7 HW_REGISTER_RW(ARM_SBM_OWN2+0x1C) +#define ARM_2_BELL0 HW_REGISTER_RW(ARM_SBM_OWN2+0x40) +#define ARM_2_BELL1 HW_REGISTER_RW(ARM_SBM_OWN2+0x44) +#define ARM_2_BELL2 HW_REGISTER_RW(ARM_SBM_OWN2+0x48) +#define ARM_2_BELL3 HW_REGISTER_RW(ARM_SBM_OWN2+0x4C) +/* MAILBOX 0 access in Owner 2 area */ +/* Owner 2 should only WRITE to this mailbox */ +#define ARM_2_MAIL0_WRT HW_REGISTER_RW(ARM_SBM_OWN2+0x80) /* .. 0x8C (4 locations) */ +/*#define ARM_2_MAIL0_RD HW_REGISTER_RW(ARM_SBM_OWN2+0x80) */ /* DO NOT USE THIS !!!!! */ +/*#define ARM_2_MAIL0_POL HW_REGISTER_RW(ARM_SBM_OWN2+0x90) */ /* DO NOT USE THIS !!!!! */ +/*#define ARM_2_MAIL0_SND HW_REGISTER_RW(ARM_SBM_OWN2+0x94) */ /* DO NOT USE THIS !!!!! */ +#define ARM_2_MAIL0_STA HW_REGISTER_RW(ARM_SBM_OWN2+0x98) /* Status read */ +/*#define ARM_2_MAIL0_CNF HW_REGISTER_RW(ARM_SBM_OWN2+0x9C) */ /* DO NOT USE THIS !!!!! */ +/* MAILBOX 1 access in Owner 2 area */ +/* Owner 2 should only WRITE to this mailbox */ +#define ARM_2_MAIL1_WRT HW_REGISTER_RW(ARM_SBM_OWN2+0xA0) /* .. 0xAC (4 locations) */ +/*#define ARM_2_MAIL1_RD HW_REGISTER_RW(ARM_SBM_OWN2+0xA0) */ /* DO NOT USE THIS !!!!! */ +/*#define ARM_2_MAIL1_POL HW_REGISTER_RW(ARM_SBM_OWN2+0xB0) */ /* DO NOT USE THIS !!!!! */ +/*#define ARM_2_MAIL1_SND HW_REGISTER_RW(ARM_SBM_OWN2+0xB4) */ /* DO NOT USE THIS !!!!! */ +#define ARM_2_MAIL1_STA HW_REGISTER_RW(ARM_SBM_OWN2+0xB8) /* Status read */ +/*#define ARM_2_MAIL1_CNF HW_REGISTER_RW(ARM_SBM_OWN2+0xBC) */ /* DO NOT USE THIS !!!!! */ +/* General SEM, BELL, MAIL config/status */ +#define ARM_2_SEMCLRDBG HW_REGISTER_RW(ARM_SBM_OWN2+0xE0) /* semaphore clear/debug register */ +#define ARM_2_BELLCLRDBG HW_REGISTER_RW(ARM_SBM_OWN2+0xE4) /* Doorbells clear/debug register */ +#define ARM_2_MY_IRQS HW_REGISTER_RW(ARM_SBM_OWN2+0xFC) /* IRQS pending for owner 2 */ +#define ARM_2_ALL_IRQS HW_REGISTER_RW(ARM_SBM_OWN2+0xF8) /* ALL interrupts */ + +/* Semaphores, Doorbells, Mailboxes Owner 3 */ +#define ARM_3_SEMS HW_REGISTER_RW(ARM_SBM_OWN3+0x00) +#define ARM_3_SEM0 HW_REGISTER_RW(ARM_SBM_OWN3+0x00) +#define ARM_3_SEM1 HW_REGISTER_RW(ARM_SBM_OWN3+0x04) +#define ARM_3_SEM2 HW_REGISTER_RW(ARM_SBM_OWN3+0x08) +#define ARM_3_SEM3 HW_REGISTER_RW(ARM_SBM_OWN3+0x0C) +#define ARM_3_SEM4 HW_REGISTER_RW(ARM_SBM_OWN3+0x10) +#define ARM_3_SEM5 HW_REGISTER_RW(ARM_SBM_OWN3+0x14) +#define ARM_3_SEM6 HW_REGISTER_RW(ARM_SBM_OWN3+0x18) +#define ARM_3_SEM7 HW_REGISTER_RW(ARM_SBM_OWN3+0x1C) +#define ARM_3_BELL0 HW_REGISTER_RW(ARM_SBM_OWN3+0x40) +#define ARM_3_BELL1 HW_REGISTER_RW(ARM_SBM_OWN3+0x44) +#define ARM_3_BELL2 HW_REGISTER_RW(ARM_SBM_OWN3+0x48) +#define ARM_3_BELL3 HW_REGISTER_RW(ARM_SBM_OWN3+0x4C) +/* MAILBOX 0 access in Owner 3 area */ +/* Owner 3 should only WRITE to this mailbox */ +#define ARM_3_MAIL0_WRT HW_REGISTER_RW(ARM_SBM_OWN3+0x80) /* .. 0x8C (4 locations) */ +/*#define ARM_3_MAIL0_RD HW_REGISTER_RW(ARM_SBM_OWN3+0x80) */ /* DO NOT USE THIS !!!!! */ +/*#define ARM_3_MAIL0_POL HW_REGISTER_RW(ARM_SBM_OWN3+0x90) */ /* DO NOT USE THIS !!!!! */ +/*#define ARM_3_MAIL0_SND HW_REGISTER_RW(ARM_SBM_OWN3+0x94) */ /* DO NOT USE THIS !!!!! */ +#define ARM_3_MAIL0_STA HW_REGISTER_RW(ARM_SBM_OWN3+0x98) /* Status read */ +/*#define ARM_3_MAIL0_CNF HW_REGISTER_RW(ARM_SBM_OWN3+0x9C) */ /* DO NOT USE THIS !!!!! */ +/* MAILBOX 1 access in Owner 3 area */ +/* Owner 3 should only WRITE to this mailbox */ +#define ARM_3_MAIL1_WRT HW_REGISTER_RW(ARM_SBM_OWN3+0xA0) /* .. 0xAC (4 locations) */ +/*#define ARM_3_MAIL1_RD HW_REGISTER_RW(ARM_SBM_OWN3+0xA0) */ /* DO NOT USE THIS !!!!! */ +/*#define ARM_3_MAIL1_POL HW_REGISTER_RW(ARM_SBM_OWN3+0xB0) */ /* DO NOT USE THIS !!!!! */ +/*#define ARM_3_MAIL1_SND HW_REGISTER_RW(ARM_SBM_OWN3+0xB4) */ /* DO NOT USE THIS !!!!! */ +#define ARM_3_MAIL1_STA HW_REGISTER_RW(ARM_SBM_OWN3+0xB8) /* Status read */ +/*#define ARM_3_MAIL1_CNF HW_REGISTER_RW(ARM_SBM_OWN3+0xBC) */ /* DO NOT USE THIS !!!!! */ +/* General SEM, BELL, MAIL config/status */ +#define ARM_3_SEMCLRDBG HW_REGISTER_RW(ARM_SBM_OWN3+0xE0) /* semaphore clear/debug register */ +#define ARM_3_BELLCLRDBG HW_REGISTER_RW(ARM_SBM_OWN3+0xE4) /* Doorbells clear/debug register */ +#define ARM_3_MY_IRQS HW_REGISTER_RW(ARM_SBM_OWN3+0xFC) /* IRQS pending for owner 3 */ +#define ARM_3_ALL_IRQS HW_REGISTER_RW(ARM_SBM_OWN3+0xF8) /* ALL interrupts */ + + + +/* Mailbox flags. Valid for all owners */ + +/* Mailbox status register (...0x98) */ +#define ARM_MS_FULL 0x80000000 +#define ARM_MS_EMPTY 0x40000000 +#define ARM_MS_LEVEL 0x400000FF /* Max. value depdnds on mailbox depth parameter */ + +/* MAILBOX config/status register (...0x9C) */ +/* ANY write to this register clears the error bits! */ +#define ARM_MC_IHAVEDATAIRQEN 0x00000001 /* mailbox irq enable: has data */ +#define ARM_MC_IHAVESPACEIRQEN 0x00000002 /* mailbox irq enable: has space */ +#define ARM_MC_OPPISEMPTYIRQEN 0x00000004 /* mailbox irq enable: Opp. is empty */ +#define ARM_MC_MAIL_CLEAR 0x00000008 /* mailbox clear write 1, then 0 */ +#define ARM_MC_IHAVEDATAIRQPEND 0x00000010 /* mailbox irq pending: has space */ +#define ARM_MC_IHAVESPACEIRQPEND 0x00000020 /* mailbox irq pending: Opp. is empty */ +#define ARM_MC_OPPISEMPTYIRQPEND 0x00000040 /* mailbox irq pending */ +/* Bit 7 is unused */ +#define ARM_MC_ERRNOOWN 0x00000100 /* error : none owner read from mailbox */ +#define ARM_MC_ERROVERFLW 0x00000200 /* error : write to fill mailbox */ +#define ARM_MC_ERRUNDRFLW 0x00000400 /* error : read from empty mailbox */ + +/* Semaphore clear/debug register (...0xE0) */ +#define ARM_SD_OWN0 0x00000003 /* Owner of sem 0 */ +#define ARM_SD_OWN1 0x0000000C /* Owner of sem 1 */ +#define ARM_SD_OWN2 0x00000030 /* Owner of sem 2 */ +#define ARM_SD_OWN3 0x000000C0 /* Owner of sem 3 */ +#define ARM_SD_OWN4 0x00000300 /* Owner of sem 4 */ +#define ARM_SD_OWN5 0x00000C00 /* Owner of sem 5 */ +#define ARM_SD_OWN6 0x00003000 /* Owner of sem 6 */ +#define ARM_SD_OWN7 0x0000C000 /* Owner of sem 7 */ +#define ARM_SD_SEM0 0x00010000 /* Status of sem 0 */ +#define ARM_SD_SEM1 0x00020000 /* Status of sem 1 */ +#define ARM_SD_SEM2 0x00040000 /* Status of sem 2 */ +#define ARM_SD_SEM3 0x00080000 /* Status of sem 3 */ +#define ARM_SD_SEM4 0x00100000 /* Status of sem 4 */ +#define ARM_SD_SEM5 0x00200000 /* Status of sem 5 */ +#define ARM_SD_SEM6 0x00400000 /* Status of sem 6 */ +#define ARM_SD_SEM7 0x00800000 /* Status of sem 7 */ + +/* Doorbells clear/debug register (...0xE4) */ +#define ARM_BD_OWN0 0x00000003 /* Owner of doorbell 0 */ +#define ARM_BD_OWN1 0x0000000C /* Owner of doorbell 1 */ +#define ARM_BD_OWN2 0x00000030 /* Owner of doorbell 2 */ +#define ARM_BD_OWN3 0x000000C0 /* Owner of doorbell 3 */ +#define ARM_BD_BELL0 0x00000100 /* Status of doorbell 0 */ +#define ARM_BD_BELL1 0x00000200 /* Status of doorbell 1 */ +#define ARM_BD_BELL2 0x00000400 /* Status of doorbell 2 */ +#define ARM_BD_BELL3 0x00000800 /* Status of doorbell 3 */ + +/* MY IRQS register (...0xF8) */ +#define ARM_MYIRQ_BELL 0x00000001 /* This owner has a doorbell IRQ */ +#define ARM_MYIRQ_MAIL 0x00000002 /* This owner has a mailbox IRQ */ + +/* ALL IRQS register (...0xF8) */ +#define ARM_AIS_BELL0 0x00000001 /* Doorbell 0 IRQ pending */ +#define ARM_AIS_BELL1 0x00000002 /* Doorbell 1 IRQ pending */ +#define ARM_AIS_BELL2 0x00000004 /* Doorbell 2 IRQ pending */ +#define ARM_AIS_BELL3 0x00000008 /* Doorbell 3 IRQ pending */ +#define ARM_AIS0_HAVEDATA 0x00000010 /* MAIL 0 has data IRQ pending */ +#define ARM_AIS0_HAVESPAC 0x00000020 /* MAIL 0 has space IRQ pending */ +#define ARM_AIS0_OPPEMPTY 0x00000040 /* MAIL 0 opposite is empty IRQ */ +#define ARM_AIS1_HAVEDATA 0x00000080 /* MAIL 1 has data IRQ pending */ +#define ARM_AIS1_HAVESPAC 0x00000100 /* MAIL 1 has space IRQ pending */ +#define ARM_AIS1_OPPEMPTY 0x00000200 /* MAIL 1 opposite is empty IRQ */ +/* Note that bell-0, bell-1 and MAIL0 IRQ go only to the ARM */ +/* Whilst that bell-2, bell-3 and MAIL1 IRQ go only to the VC */ +/* */ +/* ARM JTAG BASH */ +/* */ +#define AJB_BASE 0x7e2000c0 + +#define AJBCONF HW_REGISTER_RW(AJB_BASE+0x00) +#define AJB_BITS0 0x000000 +#define AJB_BITS4 0x000004 +#define AJB_BITS8 0x000008 +#define AJB_BITS12 0x00000C +#define AJB_BITS16 0x000010 +#define AJB_BITS20 0x000014 +#define AJB_BITS24 0x000018 +#define AJB_BITS28 0x00001C +#define AJB_BITS32 0x000020 +#define AJB_BITS34 0x000022 +#define AJB_OUT_MS 0x000040 +#define AJB_OUT_LS 0x000000 +#define AJB_INV_CLK 0x000080 +#define AJB_D0_RISE 0x000100 +#define AJB_D0_FALL 0x000000 +#define AJB_D1_RISE 0x000200 +#define AJB_D1_FALL 0x000000 +#define AJB_IN_RISE 0x000400 +#define AJB_IN_FALL 0x000000 +#define AJB_ENABLE 0x000800 +#define AJB_HOLD0 0x000000 +#define AJB_HOLD1 0x001000 +#define AJB_HOLD2 0x002000 +#define AJB_HOLD3 0x003000 +#define AJB_RESETN 0x004000 +#define AJB_CLKSHFT 16 +#define AJB_BUSY 0x80000000 +#define AJBTMS HW_REGISTER_RW(AJB_BASE+0x04) +#define AJBTDI HW_REGISTER_RW(AJB_BASE+0x08) +#define AJBTDO HW_REGISTER_RW(AJB_BASE+0x0c) + +#endif --- linux-raspi2-4.2.0.orig/arch/arm/mach-bcm2708/include/mach/clkdev.h +++ linux-raspi2-4.2.0/arch/arm/mach-bcm2708/include/mach/clkdev.h @@ -0,0 +1,7 @@ +#ifndef __ASM_MACH_CLKDEV_H +#define __ASM_MACH_CLKDEV_H + +#define __clk_get(clk) ({ 1; }) +#define __clk_put(clk) do { } while (0) + +#endif --- linux-raspi2-4.2.0.orig/arch/arm/mach-bcm2708/include/mach/debug-macro.S +++ linux-raspi2-4.2.0/arch/arm/mach-bcm2708/include/mach/debug-macro.S @@ -0,0 +1,22 @@ +/* arch/arm/mach-bcm2708/include/mach/debug-macro.S + * + * Debugging macro include header + * + * Copyright (C) 2010 Broadcom + * Copyright (C) 1994-1999 Russell King + * Moved from linux/arch/arm/kernel/debug.S by Ben Dooks + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + * +*/ + +#include + + .macro addruart, rp, rv, tmp + ldr \rp, =UART0_BASE + ldr \rv, =IO_ADDRESS(UART0_BASE) + .endm + +#include --- linux-raspi2-4.2.0.orig/arch/arm/mach-bcm2708/include/mach/entry-macro.S +++ linux-raspi2-4.2.0/arch/arm/mach-bcm2708/include/mach/entry-macro.S @@ -0,0 +1,69 @@ +/* + * arch/arm/mach-bcm2708/include/mach/entry-macro.S + * + * Low-level IRQ helper macros for BCM2708 platforms + * + * Copyright (C) 2010 Broadcom + * + * 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 + + .macro disable_fiq + .endm + + .macro get_irqnr_preamble, base, tmp + ldr \base, =IO_ADDRESS(ARMCTRL_IC_BASE) + .endm + + .macro arch_ret_to_user, tmp1, tmp2 + .endm + + .macro get_irqnr_and_base, irqnr, irqstat, base, tmp + /* get masked status */ + ldr \irqstat, [\base, #(ARM_IRQ_PEND0 - ARMCTRL_IC_BASE)] + mov \irqnr, #(ARM_IRQ0_BASE + 31) + and \tmp, \irqstat, #0x300 @ save bits 8 and 9 + /* clear bits 8 and 9, and test */ + bics \irqstat, \irqstat, #0x300 + bne 1010f + + tst \tmp, #0x100 + ldrne \irqstat, [\base, #(ARM_IRQ_PEND1 - ARMCTRL_IC_BASE)] + movne \irqnr, #(ARM_IRQ1_BASE + 31) + @ Mask out the interrupts also present in PEND0 - see SW-5809 + bicne \irqstat, #((1<<7) | (1<<9) | (1<<10)) + bicne \irqstat, #((1<<18) | (1<<19)) + bne 1010f + + tst \tmp, #0x200 + ldrne \irqstat, [\base, #(ARM_IRQ_PEND2 - ARMCTRL_IC_BASE)] + movne \irqnr, #(ARM_IRQ2_BASE + 31) + @ Mask out the interrupts also present in PEND0 - see SW-5809 + bicne \irqstat, #((1<<21) | (1<<22) | (1<<23) | (1<<24) | (1<<25)) + bicne \irqstat, #((1<<30)) + beq 1020f + +1010: + @ For non-zero x, LSB(x) = 31 - CLZ(x^(x-1)) + @ N.B. CLZ is an ARM5 instruction. + sub \tmp, \irqstat, #1 + eor \irqstat, \irqstat, \tmp + clz \tmp, \irqstat + sub \irqnr, \tmp + +1020: @ EQ will be set if no irqs pending + + .endm --- linux-raspi2-4.2.0.orig/arch/arm/mach-bcm2708/include/mach/frc.h +++ linux-raspi2-4.2.0/arch/arm/mach-bcm2708/include/mach/frc.h @@ -0,0 +1,38 @@ +/* + * arch/arm/mach-bcm2708/include/mach/timex.h + * + * BCM2708 free running counter (timer) + * + * Copyright (C) 2010 Broadcom + * + * 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 + */ + +#ifndef _MACH_FRC_H +#define _MACH_FRC_H + +#define FRC_TICK_RATE (1000000) + +/*! Free running counter incrementing at the CLOCK_TICK_RATE + (slightly faster than frc_clock_ticks63() + */ +extern unsigned long frc_clock_ticks32(void); + +/*! Free running counter incrementing at the CLOCK_TICK_RATE + * Note - top bit should be ignored (see cnt32_to_63) + */ +extern unsigned long long frc_clock_ticks63(void); + +#endif --- linux-raspi2-4.2.0.orig/arch/arm/mach-bcm2708/include/mach/gpio.h +++ linux-raspi2-4.2.0/arch/arm/mach-bcm2708/include/mach/gpio.h @@ -0,0 +1,17 @@ +/* + * arch/arm/mach-bcm2708/include/mach/gpio.h + * + * This file is licensed under the terms of the GNU General Public + * License version 2. This program is licensed "as is" without any + * warranty of any kind, whether express or implied. + */ + +#ifndef __ASM_ARCH_GPIO_H +#define __ASM_ARCH_GPIO_H + +#define BCM2708_NR_GPIOS 54 // number of gpio lines + +#define gpio_to_irq(x) ((x) + GPIO_IRQ_START) +#define irq_to_gpio(x) ((x) - GPIO_IRQ_START) + +#endif --- linux-raspi2-4.2.0.orig/arch/arm/mach-bcm2708/include/mach/hardware.h +++ linux-raspi2-4.2.0/arch/arm/mach-bcm2708/include/mach/hardware.h @@ -0,0 +1,28 @@ +/* + * arch/arm/mach-bcm2708/include/mach/hardware.h + * + * This file contains the hardware definitions of the BCM2708 devices. + * + * Copyright (C) 2010 Broadcom + * + * 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 + */ +#ifndef __ASM_ARCH_HARDWARE_H +#define __ASM_ARCH_HARDWARE_H + +#include +#include + +#endif --- linux-raspi2-4.2.0.orig/arch/arm/mach-bcm2708/include/mach/io.h +++ linux-raspi2-4.2.0/arch/arm/mach-bcm2708/include/mach/io.h @@ -0,0 +1,27 @@ +/* + * arch/arm/mach-bcm2708/include/mach/io.h + * + * Copyright (C) 2003 ARM Limited + * + * 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 + */ +#ifndef __ASM_ARM_ARCH_IO_H +#define __ASM_ARM_ARCH_IO_H + +#define IO_SPACE_LIMIT 0xffffffff + +#define __io(a) __typesafe_io(a) + +#endif --- linux-raspi2-4.2.0.orig/arch/arm/mach-bcm2708/include/mach/irqs.h +++ linux-raspi2-4.2.0/arch/arm/mach-bcm2708/include/mach/irqs.h @@ -0,0 +1,199 @@ +/* + * arch/arm/mach-bcm2708/include/mach/irqs.h + * + * Copyright (C) 2010 Broadcom + * Copyright (C) 2003 ARM Limited + * Copyright (C) 2000 Deep Blue Solutions 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; 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 + */ + +#ifndef _BCM2708_IRQS_H_ +#define _BCM2708_IRQS_H_ + +#include + +/* + * IRQ interrupts definitions are the same as the INT definitions + * held within platform.h + */ +#define IRQ_ARMCTRL_START 0 +#define IRQ_TIMER0 (IRQ_ARMCTRL_START + INTERRUPT_TIMER0) +#define IRQ_TIMER1 (IRQ_ARMCTRL_START + INTERRUPT_TIMER1) +#define IRQ_TIMER2 (IRQ_ARMCTRL_START + INTERRUPT_TIMER2) +#define IRQ_TIMER3 (IRQ_ARMCTRL_START + INTERRUPT_TIMER3) +#define IRQ_CODEC0 (IRQ_ARMCTRL_START + INTERRUPT_CODEC0) +#define IRQ_CODEC1 (IRQ_ARMCTRL_START + INTERRUPT_CODEC1) +#define IRQ_CODEC2 (IRQ_ARMCTRL_START + INTERRUPT_CODEC2) +#define IRQ_JPEG (IRQ_ARMCTRL_START + INTERRUPT_JPEG) +#define IRQ_ISP (IRQ_ARMCTRL_START + INTERRUPT_ISP) +#define IRQ_USB (IRQ_ARMCTRL_START + INTERRUPT_USB) +#define IRQ_3D (IRQ_ARMCTRL_START + INTERRUPT_3D) +#define IRQ_TRANSPOSER (IRQ_ARMCTRL_START + INTERRUPT_TRANSPOSER) +#define IRQ_MULTICORESYNC0 (IRQ_ARMCTRL_START + INTERRUPT_MULTICORESYNC0) +#define IRQ_MULTICORESYNC1 (IRQ_ARMCTRL_START + INTERRUPT_MULTICORESYNC1) +#define IRQ_MULTICORESYNC2 (IRQ_ARMCTRL_START + INTERRUPT_MULTICORESYNC2) +#define IRQ_MULTICORESYNC3 (IRQ_ARMCTRL_START + INTERRUPT_MULTICORESYNC3) +#define IRQ_DMA0 (IRQ_ARMCTRL_START + INTERRUPT_DMA0) +#define IRQ_DMA1 (IRQ_ARMCTRL_START + INTERRUPT_DMA1) +#define IRQ_DMA2 (IRQ_ARMCTRL_START + INTERRUPT_DMA2) +#define IRQ_DMA3 (IRQ_ARMCTRL_START + INTERRUPT_DMA3) +#define IRQ_DMA4 (IRQ_ARMCTRL_START + INTERRUPT_DMA4) +#define IRQ_DMA5 (IRQ_ARMCTRL_START + INTERRUPT_DMA5) +#define IRQ_DMA6 (IRQ_ARMCTRL_START + INTERRUPT_DMA6) +#define IRQ_DMA7 (IRQ_ARMCTRL_START + INTERRUPT_DMA7) +#define IRQ_DMA8 (IRQ_ARMCTRL_START + INTERRUPT_DMA8) +#define IRQ_DMA9 (IRQ_ARMCTRL_START + INTERRUPT_DMA9) +#define IRQ_DMA10 (IRQ_ARMCTRL_START + INTERRUPT_DMA10) +#define IRQ_DMA11 (IRQ_ARMCTRL_START + INTERRUPT_DMA11) +#define IRQ_DMA12 (IRQ_ARMCTRL_START + INTERRUPT_DMA12) +#define IRQ_AUX (IRQ_ARMCTRL_START + INTERRUPT_AUX) +#define IRQ_ARM (IRQ_ARMCTRL_START + INTERRUPT_ARM) +#define IRQ_VPUDMA (IRQ_ARMCTRL_START + INTERRUPT_VPUDMA) +#define IRQ_HOSTPORT (IRQ_ARMCTRL_START + INTERRUPT_HOSTPORT) +#define IRQ_VIDEOSCALER (IRQ_ARMCTRL_START + INTERRUPT_VIDEOSCALER) +#define IRQ_CCP2TX (IRQ_ARMCTRL_START + INTERRUPT_CCP2TX) +#define IRQ_SDC (IRQ_ARMCTRL_START + INTERRUPT_SDC) +#define IRQ_DSI0 (IRQ_ARMCTRL_START + INTERRUPT_DSI0) +#define IRQ_AVE (IRQ_ARMCTRL_START + INTERRUPT_AVE) +#define IRQ_CAM0 (IRQ_ARMCTRL_START + INTERRUPT_CAM0) +#define IRQ_CAM1 (IRQ_ARMCTRL_START + INTERRUPT_CAM1) +#define IRQ_HDMI0 (IRQ_ARMCTRL_START + INTERRUPT_HDMI0) +#define IRQ_HDMI1 (IRQ_ARMCTRL_START + INTERRUPT_HDMI1) +#define IRQ_PIXELVALVE1 (IRQ_ARMCTRL_START + INTERRUPT_PIXELVALVE1) +#define IRQ_I2CSPISLV (IRQ_ARMCTRL_START + INTERRUPT_I2CSPISLV) +#define IRQ_DSI1 (IRQ_ARMCTRL_START + INTERRUPT_DSI1) +#define IRQ_PWA0 (IRQ_ARMCTRL_START + INTERRUPT_PWA0) +#define IRQ_PWA1 (IRQ_ARMCTRL_START + INTERRUPT_PWA1) +#define IRQ_CPR (IRQ_ARMCTRL_START + INTERRUPT_CPR) +#define IRQ_SMI (IRQ_ARMCTRL_START + INTERRUPT_SMI) +#define IRQ_GPIO0 (IRQ_ARMCTRL_START + INTERRUPT_GPIO0) +#define IRQ_GPIO1 (IRQ_ARMCTRL_START + INTERRUPT_GPIO1) +#define IRQ_GPIO2 (IRQ_ARMCTRL_START + INTERRUPT_GPIO2) +#define IRQ_GPIO3 (IRQ_ARMCTRL_START + INTERRUPT_GPIO3) +#define IRQ_I2C (IRQ_ARMCTRL_START + INTERRUPT_I2C) +#define IRQ_SPI (IRQ_ARMCTRL_START + INTERRUPT_SPI) +#define IRQ_I2SPCM (IRQ_ARMCTRL_START + INTERRUPT_I2SPCM) +#define IRQ_SDIO (IRQ_ARMCTRL_START + INTERRUPT_SDIO) +#define IRQ_UART (IRQ_ARMCTRL_START + INTERRUPT_UART) +#define IRQ_SLIMBUS (IRQ_ARMCTRL_START + INTERRUPT_SLIMBUS) +#define IRQ_VEC (IRQ_ARMCTRL_START + INTERRUPT_VEC) +#define IRQ_CPG (IRQ_ARMCTRL_START + INTERRUPT_CPG) +#define IRQ_RNG (IRQ_ARMCTRL_START + INTERRUPT_RNG) +#define IRQ_ARASANSDIO (IRQ_ARMCTRL_START + INTERRUPT_ARASANSDIO) +#define IRQ_AVSPMON (IRQ_ARMCTRL_START + INTERRUPT_AVSPMON) + +#define IRQ_ARM_TIMER (IRQ_ARMCTRL_START + INTERRUPT_ARM_TIMER) +#define IRQ_ARM_MAILBOX (IRQ_ARMCTRL_START + INTERRUPT_ARM_MAILBOX) +#define IRQ_ARM_DOORBELL_0 (IRQ_ARMCTRL_START + INTERRUPT_ARM_DOORBELL_0) +#define IRQ_ARM_DOORBELL_1 (IRQ_ARMCTRL_START + INTERRUPT_ARM_DOORBELL_1) +#define IRQ_VPU0_HALTED (IRQ_ARMCTRL_START + INTERRUPT_VPU0_HALTED) +#define IRQ_VPU1_HALTED (IRQ_ARMCTRL_START + INTERRUPT_VPU1_HALTED) +#define IRQ_ILLEGAL_TYPE0 (IRQ_ARMCTRL_START + INTERRUPT_ILLEGAL_TYPE0) +#define IRQ_ILLEGAL_TYPE1 (IRQ_ARMCTRL_START + INTERRUPT_ILLEGAL_TYPE1) +#define IRQ_PENDING1 (IRQ_ARMCTRL_START + INTERRUPT_PENDING1) +#define IRQ_PENDING2 (IRQ_ARMCTRL_START + INTERRUPT_PENDING2) + +#define FIQ_START HARD_IRQS + +/* + * FIQ interrupts definitions are the same as the INT definitions. + */ +#define FIQ_TIMER0 (FIQ_START+INTERRUPT_TIMER0) +#define FIQ_TIMER1 (FIQ_START+INTERRUPT_TIMER1) +#define FIQ_TIMER2 (FIQ_START+INTERRUPT_TIMER2) +#define FIQ_TIMER3 (FIQ_START+INTERRUPT_TIMER3) +#define FIQ_CODEC0 (FIQ_START+INTERRUPT_CODEC0) +#define FIQ_CODEC1 (FIQ_START+INTERRUPT_CODEC1) +#define FIQ_CODEC2 (FIQ_START+INTERRUPT_CODEC2) +#define FIQ_JPEG (FIQ_START+INTERRUPT_JPEG) +#define FIQ_ISP (FIQ_START+INTERRUPT_ISP) +#define FIQ_USB (FIQ_START+INTERRUPT_USB) +#define FIQ_3D (FIQ_START+INTERRUPT_3D) +#define FIQ_TRANSPOSER (FIQ_START+INTERRUPT_TRANSPOSER) +#define FIQ_MULTICORESYNC0 (FIQ_START+INTERRUPT_MULTICORESYNC0) +#define FIQ_MULTICORESYNC1 (FIQ_START+INTERRUPT_MULTICORESYNC1) +#define FIQ_MULTICORESYNC2 (FIQ_START+INTERRUPT_MULTICORESYNC2) +#define FIQ_MULTICORESYNC3 (FIQ_START+INTERRUPT_MULTICORESYNC3) +#define FIQ_DMA0 (FIQ_START+INTERRUPT_DMA0) +#define FIQ_DMA1 (FIQ_START+INTERRUPT_DMA1) +#define FIQ_DMA2 (FIQ_START+INTERRUPT_DMA2) +#define FIQ_DMA3 (FIQ_START+INTERRUPT_DMA3) +#define FIQ_DMA4 (FIQ_START+INTERRUPT_DMA4) +#define FIQ_DMA5 (FIQ_START+INTERRUPT_DMA5) +#define FIQ_DMA6 (FIQ_START+INTERRUPT_DMA6) +#define FIQ_DMA7 (FIQ_START+INTERRUPT_DMA7) +#define FIQ_DMA8 (FIQ_START+INTERRUPT_DMA8) +#define FIQ_DMA9 (FIQ_START+INTERRUPT_DMA9) +#define FIQ_DMA10 (FIQ_START+INTERRUPT_DMA10) +#define FIQ_DMA11 (FIQ_START+INTERRUPT_DMA11) +#define FIQ_DMA12 (FIQ_START+INTERRUPT_DMA12) +#define FIQ_AUX (FIQ_START+INTERRUPT_AUX) +#define FIQ_ARM (FIQ_START+INTERRUPT_ARM) +#define FIQ_VPUDMA (FIQ_START+INTERRUPT_VPUDMA) +#define FIQ_HOSTPORT (FIQ_START+INTERRUPT_HOSTPORT) +#define FIQ_VIDEOSCALER (FIQ_START+INTERRUPT_VIDEOSCALER) +#define FIQ_CCP2TX (FIQ_START+INTERRUPT_CCP2TX) +#define FIQ_SDC (FIQ_START+INTERRUPT_SDC) +#define FIQ_DSI0 (FIQ_START+INTERRUPT_DSI0) +#define FIQ_AVE (FIQ_START+INTERRUPT_AVE) +#define FIQ_CAM0 (FIQ_START+INTERRUPT_CAM0) +#define FIQ_CAM1 (FIQ_START+INTERRUPT_CAM1) +#define FIQ_HDMI0 (FIQ_START+INTERRUPT_HDMI0) +#define FIQ_HDMI1 (FIQ_START+INTERRUPT_HDMI1) +#define FIQ_PIXELVALVE1 (FIQ_START+INTERRUPT_PIXELVALVE1) +#define FIQ_I2CSPISLV (FIQ_START+INTERRUPT_I2CSPISLV) +#define FIQ_DSI1 (FIQ_START+INTERRUPT_DSI1) +#define FIQ_PWA0 (FIQ_START+INTERRUPT_PWA0) +#define FIQ_PWA1 (FIQ_START+INTERRUPT_PWA1) +#define FIQ_CPR (FIQ_START+INTERRUPT_CPR) +#define FIQ_SMI (FIQ_START+INTERRUPT_SMI) +#define FIQ_GPIO0 (FIQ_START+INTERRUPT_GPIO0) +#define FIQ_GPIO1 (FIQ_START+INTERRUPT_GPIO1) +#define FIQ_GPIO2 (FIQ_START+INTERRUPT_GPIO2) +#define FIQ_GPIO3 (FIQ_START+INTERRUPT_GPIO3) +#define FIQ_I2C (FIQ_START+INTERRUPT_I2C) +#define FIQ_SPI (FIQ_START+INTERRUPT_SPI) +#define FIQ_I2SPCM (FIQ_START+INTERRUPT_I2SPCM) +#define FIQ_SDIO (FIQ_START+INTERRUPT_SDIO) +#define FIQ_UART (FIQ_START+INTERRUPT_UART) +#define FIQ_SLIMBUS (FIQ_START+INTERRUPT_SLIMBUS) +#define FIQ_VEC (FIQ_START+INTERRUPT_VEC) +#define FIQ_CPG (FIQ_START+INTERRUPT_CPG) +#define FIQ_RNG (FIQ_START+INTERRUPT_RNG) +#define FIQ_ARASANSDIO (FIQ_START+INTERRUPT_ARASANSDIO) +#define FIQ_AVSPMON (FIQ_START+INTERRUPT_AVSPMON) + +#define FIQ_ARM_TIMER (FIQ_START+INTERRUPT_ARM_TIMER) +#define FIQ_ARM_MAILBOX (FIQ_START+INTERRUPT_ARM_MAILBOX) +#define FIQ_ARM_DOORBELL_0 (FIQ_START+INTERRUPT_ARM_DOORBELL_0) +#define FIQ_ARM_DOORBELL_1 (FIQ_START+INTERRUPT_ARM_DOORBELL_1) +#define FIQ_VPU0_HALTED (FIQ_START+INTERRUPT_VPU0_HALTED) +#define FIQ_VPU1_HALTED (FIQ_START+INTERRUPT_VPU1_HALTED) +#define FIQ_ILLEGAL_TYPE0 (FIQ_START+INTERRUPT_ILLEGAL_TYPE0) +#define FIQ_ILLEGAL_TYPE1 (FIQ_START+INTERRUPT_ILLEGAL_TYPE1) +#define FIQ_PENDING1 (FIQ_START+INTERRUPT_PENDING1) +#define FIQ_PENDING2 (FIQ_START+INTERRUPT_PENDING2) + +#define HARD_IRQS (64 + 21) +#define FIQ_IRQS (64 + 21) +#define GPIO_IRQ_START (HARD_IRQS + FIQ_IRQS) +#define GPIO_IRQS (32*5) +#define SPARE_ALLOC_IRQS 64 +#define BCM2708_ALLOC_IRQS (HARD_IRQS+FIQ_IRQS+GPIO_IRQS+SPARE_ALLOC_IRQS) +#define FREE_IRQS 128 +#define NR_IRQS (BCM2708_ALLOC_IRQS+FREE_IRQS) + +#endif /* _BCM2708_IRQS_H_ */ --- linux-raspi2-4.2.0.orig/arch/arm/mach-bcm2708/include/mach/memory.h +++ linux-raspi2-4.2.0/arch/arm/mach-bcm2708/include/mach/memory.h @@ -0,0 +1,57 @@ +/* + * arch/arm/mach-bcm2708/include/mach/memory.h + * + * Copyright (C) 2010 Broadcom + * + * 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 + */ +#ifndef __ASM_ARCH_MEMORY_H +#define __ASM_ARCH_MEMORY_H + +/* Memory overview: + + [ARMcore] <--virtual addr--> + [ARMmmu] <--physical addr--> + [GERTmap] <--bus add--> + [VCperiph] + +*/ + +/* + * Physical DRAM offset. + */ +#define BCM_PLAT_PHYS_OFFSET UL(0x00000000) +#define VC_ARMMEM_OFFSET UL(0x00000000) /* offset in VC of ARM memory */ + +#ifdef CONFIG_BCM2708_NOL2CACHE + #define _REAL_BUS_OFFSET UL(0xC0000000) /* don't use L1 or L2 caches */ +#else + #define _REAL_BUS_OFFSET UL(0x40000000) /* use L2 cache */ +#endif + +/* We're using the memory at 64M in the VideoCore for Linux - this adjustment + * will provide the offset into this area as well as setting the bits that + * stop the L1 and L2 cache from being used + * + * WARNING: this only works because the ARM is given memory at a fixed location + * (ARMMEM_OFFSET) + */ +#define BUS_OFFSET (VC_ARMMEM_OFFSET + _REAL_BUS_OFFSET) +#define __virt_to_bus(x) ((x) + (BUS_OFFSET - PAGE_OFFSET)) +#define __bus_to_virt(x) ((x) - (BUS_OFFSET - PAGE_OFFSET)) +#define __pfn_to_bus(x) (__pfn_to_phys(x) + (BUS_OFFSET - BCM_PLAT_PHYS_OFFSET)) +#define __bus_to_pfn(x) __phys_to_pfn((x) - (BUS_OFFSET - BCM_PLAT_PHYS_OFFSET)) + +#endif --- linux-raspi2-4.2.0.orig/arch/arm/mach-bcm2708/include/mach/platform.h +++ linux-raspi2-4.2.0/arch/arm/mach-bcm2708/include/mach/platform.h @@ -0,0 +1,229 @@ +/* + * arch/arm/mach-bcm2708/include/mach/platform.h + * + * Copyright (C) 2010 Broadcom + * + * 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 + */ + +#ifndef _BCM2708_PLATFORM_H +#define _BCM2708_PLATFORM_H + + +/* macros to get at IO space when running virtually */ +#define IO_ADDRESS(x) (((x) & 0x0fffffff) + (((x) >> 4) & 0x0f000000) + 0xf0000000) + +#define __io_address(n) IOMEM(IO_ADDRESS(n)) + + +/* + * SDRAM + */ +#define BCM2708_SDRAM_BASE 0x00000000 + +/* + * Logic expansion modules + * + */ + + +/* ------------------------------------------------------------------------ + * BCM2708 ARMCTRL Registers + * ------------------------------------------------------------------------ + */ + +#define HW_REGISTER_RW(addr) (addr) +#define HW_REGISTER_RO(addr) (addr) + +#include "arm_control.h" +#undef ARM_BASE + +/* + * Definitions and addresses for the ARM CONTROL logic + * This file is manually generated. + */ + +#define BCM2708_PERI_BASE 0x20000000 +#define IC0_BASE (BCM2708_PERI_BASE + 0x2000) +#define ST_BASE (BCM2708_PERI_BASE + 0x3000) /* System Timer */ +#define MPHI_BASE (BCM2708_PERI_BASE + 0x6000) /* Message -based Parallel Host Interface */ +#define DMA_BASE (BCM2708_PERI_BASE + 0x7000) /* DMA controller */ +#define ARM_BASE (BCM2708_PERI_BASE + 0xB000) /* BCM2708 ARM control block */ +#define PM_BASE (BCM2708_PERI_BASE + 0x100000) /* Power Management, Reset controller and Watchdog registers */ +#define PCM_CLOCK_BASE (BCM2708_PERI_BASE + 0x101098) /* PCM Clock */ +#define RNG_BASE (BCM2708_PERI_BASE + 0x104000) /* Hardware RNG */ +#define GPIO_BASE (BCM2708_PERI_BASE + 0x200000) /* GPIO */ +#define UART0_BASE (BCM2708_PERI_BASE + 0x201000) /* Uart 0 */ +#define MMCI0_BASE (BCM2708_PERI_BASE + 0x202000) /* MMC interface */ +#define I2S_BASE (BCM2708_PERI_BASE + 0x203000) /* I2S */ +#define SPI0_BASE (BCM2708_PERI_BASE + 0x204000) /* SPI0 */ +#define BSC0_BASE (BCM2708_PERI_BASE + 0x205000) /* BSC0 I2C/TWI */ +#define UART1_BASE (BCM2708_PERI_BASE + 0x215000) /* Uart 1 */ +#define EMMC_BASE (BCM2708_PERI_BASE + 0x300000) /* eMMC interface */ +#define SMI_BASE (BCM2708_PERI_BASE + 0x600000) /* SMI */ +#define BSC1_BASE (BCM2708_PERI_BASE + 0x804000) /* BSC1 I2C/TWI */ +#define USB_BASE (BCM2708_PERI_BASE + 0x980000) /* DTC_OTG USB controller */ +#define MCORE_BASE (BCM2708_PERI_BASE + 0x0000) /* Fake frame buffer device (actually the multicore sync block*/ + +#define ARMCTRL_BASE (ARM_BASE + 0x000) +#define ARMCTRL_IC_BASE (ARM_BASE + 0x200) /* ARM interrupt controller */ +#define ARMCTRL_TIMER0_1_BASE (ARM_BASE + 0x400) /* Timer 0 and 1 */ +#define ARMCTRL_0_SBM_BASE (ARM_BASE + 0x800) /* User 0 (ARM)'s Semaphores Doorbells and Mailboxes */ +#define ARMCTRL_0_BELL_BASE (ARMCTRL_0_SBM_BASE + 0x40) /* User 0 (ARM)'s Doorbell */ +#define ARMCTRL_0_MAIL0_BASE (ARMCTRL_0_SBM_BASE + 0x80) /* User 0 (ARM)'s Mailbox 0 */ + + +/* + * Interrupt assignments + */ + +#define ARM_IRQ1_BASE 0 +#define INTERRUPT_TIMER0 (ARM_IRQ1_BASE + 0) +#define INTERRUPT_TIMER1 (ARM_IRQ1_BASE + 1) +#define INTERRUPT_TIMER2 (ARM_IRQ1_BASE + 2) +#define INTERRUPT_TIMER3 (ARM_IRQ1_BASE + 3) +#define INTERRUPT_CODEC0 (ARM_IRQ1_BASE + 4) +#define INTERRUPT_CODEC1 (ARM_IRQ1_BASE + 5) +#define INTERRUPT_CODEC2 (ARM_IRQ1_BASE + 6) +#define INTERRUPT_VC_JPEG (ARM_IRQ1_BASE + 7) +#define INTERRUPT_ISP (ARM_IRQ1_BASE + 8) +#define INTERRUPT_VC_USB (ARM_IRQ1_BASE + 9) +#define INTERRUPT_VC_3D (ARM_IRQ1_BASE + 10) +#define INTERRUPT_TRANSPOSER (ARM_IRQ1_BASE + 11) +#define INTERRUPT_MULTICORESYNC0 (ARM_IRQ1_BASE + 12) +#define INTERRUPT_MULTICORESYNC1 (ARM_IRQ1_BASE + 13) +#define INTERRUPT_MULTICORESYNC2 (ARM_IRQ1_BASE + 14) +#define INTERRUPT_MULTICORESYNC3 (ARM_IRQ1_BASE + 15) +#define INTERRUPT_DMA0 (ARM_IRQ1_BASE + 16) +#define INTERRUPT_DMA1 (ARM_IRQ1_BASE + 17) +#define INTERRUPT_VC_DMA2 (ARM_IRQ1_BASE + 18) +#define INTERRUPT_VC_DMA3 (ARM_IRQ1_BASE + 19) +#define INTERRUPT_DMA4 (ARM_IRQ1_BASE + 20) +#define INTERRUPT_DMA5 (ARM_IRQ1_BASE + 21) +#define INTERRUPT_DMA6 (ARM_IRQ1_BASE + 22) +#define INTERRUPT_DMA7 (ARM_IRQ1_BASE + 23) +#define INTERRUPT_DMA8 (ARM_IRQ1_BASE + 24) +#define INTERRUPT_DMA9 (ARM_IRQ1_BASE + 25) +#define INTERRUPT_DMA10 (ARM_IRQ1_BASE + 26) +#define INTERRUPT_DMA11 (ARM_IRQ1_BASE + 27) +#define INTERRUPT_DMA12 (ARM_IRQ1_BASE + 28) +#define INTERRUPT_AUX (ARM_IRQ1_BASE + 29) +#define INTERRUPT_ARM (ARM_IRQ1_BASE + 30) +#define INTERRUPT_VPUDMA (ARM_IRQ1_BASE + 31) + +#define ARM_IRQ2_BASE 32 +#define INTERRUPT_HOSTPORT (ARM_IRQ2_BASE + 0) +#define INTERRUPT_VIDEOSCALER (ARM_IRQ2_BASE + 1) +#define INTERRUPT_CCP2TX (ARM_IRQ2_BASE + 2) +#define INTERRUPT_SDC (ARM_IRQ2_BASE + 3) +#define INTERRUPT_DSI0 (ARM_IRQ2_BASE + 4) +#define INTERRUPT_AVE (ARM_IRQ2_BASE + 5) +#define INTERRUPT_CAM0 (ARM_IRQ2_BASE + 6) +#define INTERRUPT_CAM1 (ARM_IRQ2_BASE + 7) +#define INTERRUPT_HDMI0 (ARM_IRQ2_BASE + 8) +#define INTERRUPT_HDMI1 (ARM_IRQ2_BASE + 9) +#define INTERRUPT_PIXELVALVE1 (ARM_IRQ2_BASE + 10) +#define INTERRUPT_I2CSPISLV (ARM_IRQ2_BASE + 11) +#define INTERRUPT_DSI1 (ARM_IRQ2_BASE + 12) +#define INTERRUPT_PWA0 (ARM_IRQ2_BASE + 13) +#define INTERRUPT_PWA1 (ARM_IRQ2_BASE + 14) +#define INTERRUPT_CPR (ARM_IRQ2_BASE + 15) +#define INTERRUPT_SMI (ARM_IRQ2_BASE + 16) +#define INTERRUPT_GPIO0 (ARM_IRQ2_BASE + 17) +#define INTERRUPT_GPIO1 (ARM_IRQ2_BASE + 18) +#define INTERRUPT_GPIO2 (ARM_IRQ2_BASE + 19) +#define INTERRUPT_GPIO3 (ARM_IRQ2_BASE + 20) +#define INTERRUPT_VC_I2C (ARM_IRQ2_BASE + 21) +#define INTERRUPT_VC_SPI (ARM_IRQ2_BASE + 22) +#define INTERRUPT_VC_I2SPCM (ARM_IRQ2_BASE + 23) +#define INTERRUPT_VC_SDIO (ARM_IRQ2_BASE + 24) +#define INTERRUPT_VC_UART (ARM_IRQ2_BASE + 25) +#define INTERRUPT_SLIMBUS (ARM_IRQ2_BASE + 26) +#define INTERRUPT_VEC (ARM_IRQ2_BASE + 27) +#define INTERRUPT_CPG (ARM_IRQ2_BASE + 28) +#define INTERRUPT_RNG (ARM_IRQ2_BASE + 29) +#define INTERRUPT_VC_ARASANSDIO (ARM_IRQ2_BASE + 30) +#define INTERRUPT_AVSPMON (ARM_IRQ2_BASE + 31) + +#define ARM_IRQ0_BASE 64 +#define INTERRUPT_ARM_TIMER (ARM_IRQ0_BASE + 0) +#define INTERRUPT_ARM_MAILBOX (ARM_IRQ0_BASE + 1) +#define INTERRUPT_ARM_DOORBELL_0 (ARM_IRQ0_BASE + 2) +#define INTERRUPT_ARM_DOORBELL_1 (ARM_IRQ0_BASE + 3) +#define INTERRUPT_VPU0_HALTED (ARM_IRQ0_BASE + 4) +#define INTERRUPT_VPU1_HALTED (ARM_IRQ0_BASE + 5) +#define INTERRUPT_ILLEGAL_TYPE0 (ARM_IRQ0_BASE + 6) +#define INTERRUPT_ILLEGAL_TYPE1 (ARM_IRQ0_BASE + 7) +#define INTERRUPT_PENDING1 (ARM_IRQ0_BASE + 8) +#define INTERRUPT_PENDING2 (ARM_IRQ0_BASE + 9) +#define INTERRUPT_JPEG (ARM_IRQ0_BASE + 10) +#define INTERRUPT_USB (ARM_IRQ0_BASE + 11) +#define INTERRUPT_3D (ARM_IRQ0_BASE + 12) +#define INTERRUPT_DMA2 (ARM_IRQ0_BASE + 13) +#define INTERRUPT_DMA3 (ARM_IRQ0_BASE + 14) +#define INTERRUPT_I2C (ARM_IRQ0_BASE + 15) +#define INTERRUPT_SPI (ARM_IRQ0_BASE + 16) +#define INTERRUPT_I2SPCM (ARM_IRQ0_BASE + 17) +#define INTERRUPT_SDIO (ARM_IRQ0_BASE + 18) +#define INTERRUPT_UART (ARM_IRQ0_BASE + 19) +#define INTERRUPT_ARASANSDIO (ARM_IRQ0_BASE + 20) + +#define MAXIRQNUM (32 + 32 + 20) +#define MAXFIQNUM (32 + 32 + 20) + +#define MAX_PERIOD 699050 +#define TICKS_PER_uSEC 1 + +/* + * These are useconds NOT ticks. + * + */ +#define mSEC_1 1000 +#define mSEC_5 (mSEC_1 * 5) +#define mSEC_10 (mSEC_1 * 10) +#define mSEC_25 (mSEC_1 * 25) +#define SEC_1 (mSEC_1 * 1000) + +/* + * Watchdog + */ +#define PM_RSTC (PM_BASE+0x1c) +#define PM_RSTS (PM_BASE+0x20) +#define PM_WDOG (PM_BASE+0x24) + +#define PM_WDOG_RESET 0000000000 +#define PM_PASSWORD 0x5a000000 +#define PM_WDOG_TIME_SET 0x000fffff +#define PM_RSTC_WRCFG_CLR 0xffffffcf +#define PM_RSTC_WRCFG_SET 0x00000030 +#define PM_RSTC_WRCFG_FULL_RESET 0x00000020 +#define PM_RSTC_RESET 0x00000102 + +#define PM_RSTS_HADPOR_SET 0x00001000 +#define PM_RSTS_HADSRH_SET 0x00000400 +#define PM_RSTS_HADSRF_SET 0x00000200 +#define PM_RSTS_HADSRQ_SET 0x00000100 +#define PM_RSTS_HADWRH_SET 0x00000040 +#define PM_RSTS_HADWRF_SET 0x00000020 +#define PM_RSTS_HADWRQ_SET 0x00000010 +#define PM_RSTS_HADDRH_SET 0x00000004 +#define PM_RSTS_HADDRF_SET 0x00000002 +#define PM_RSTS_HADDRQ_SET 0x00000001 + +#define UART0_CLOCK 3000000 + +#endif + +/* END */ --- linux-raspi2-4.2.0.orig/arch/arm/mach-bcm2708/include/mach/system.h +++ linux-raspi2-4.2.0/arch/arm/mach-bcm2708/include/mach/system.h @@ -0,0 +1,38 @@ +/* + * arch/arm/mach-bcm2708/include/mach/system.h + * + * Copyright (C) 2010 Broadcom + * Copyright (C) 2003 ARM Limited + * Copyright (C) 2000 Deep Blue Solutions 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; 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 + */ +#ifndef __ASM_ARCH_SYSTEM_H +#define __ASM_ARCH_SYSTEM_H + +#include +#include +#include + +static inline void arch_idle(void) +{ + /* + * This should do all the clock switching + * and wait for interrupt tricks + */ + cpu_do_idle(); +} + +#endif --- linux-raspi2-4.2.0.orig/arch/arm/mach-bcm2708/include/mach/timex.h +++ linux-raspi2-4.2.0/arch/arm/mach-bcm2708/include/mach/timex.h @@ -0,0 +1,23 @@ +/* + * arch/arm/mach-bcm2708/include/mach/timex.h + * + * BCM2708 sysem clock frequency + * + * Copyright (C) 2010 Broadcom + * + * 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 CLOCK_TICK_RATE (1000000) --- linux-raspi2-4.2.0.orig/arch/arm/mach-bcm2708/include/mach/uncompress.h +++ linux-raspi2-4.2.0/arch/arm/mach-bcm2708/include/mach/uncompress.h @@ -0,0 +1,84 @@ +/* + * arch/arm/mach-bcn2708/include/mach/uncompress.h + * + * Copyright (C) 2010 Broadcom + * Copyright (C) 2003 ARM Limited + * + * 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 +#include +#include + +#define UART_BAUD 115200 + +#define BCM2708_UART_DR __io(UART0_BASE + UART01x_DR) +#define BCM2708_UART_FR __io(UART0_BASE + UART01x_FR) +#define BCM2708_UART_IBRD __io(UART0_BASE + UART011_IBRD) +#define BCM2708_UART_FBRD __io(UART0_BASE + UART011_FBRD) +#define BCM2708_UART_LCRH __io(UART0_BASE + UART011_LCRH) +#define BCM2708_UART_CR __io(UART0_BASE + UART011_CR) + +/* + * This does not append a newline + */ +static inline void putc(int c) +{ + while (__raw_readl(BCM2708_UART_FR) & UART01x_FR_TXFF) + barrier(); + + __raw_writel(c, BCM2708_UART_DR); +} + +static inline void flush(void) +{ + int fr; + + do { + fr = __raw_readl(BCM2708_UART_FR); + barrier(); + } while ((fr & (UART011_FR_TXFE | UART01x_FR_BUSY)) != UART011_FR_TXFE); +} + +static inline void arch_decomp_setup(void) +{ + int temp, div, rem, frac; + + temp = 16 * UART_BAUD; + div = UART0_CLOCK / temp; + rem = UART0_CLOCK % temp; + temp = (8 * rem) / UART_BAUD; + frac = (temp >> 1) + (temp & 1); + + /* Make sure the UART is disabled before we start */ + __raw_writel(0, BCM2708_UART_CR); + + /* Set the baud rate */ + __raw_writel(div, BCM2708_UART_IBRD); + __raw_writel(frac, BCM2708_UART_FBRD); + + /* Set the UART to 8n1, FIFO enabled */ + __raw_writel(UART01x_LCRH_WLEN_8 | UART01x_LCRH_FEN, BCM2708_UART_LCRH); + + /* Enable the UART */ + __raw_writel(UART01x_CR_UARTEN | UART011_CR_TXE | UART011_CR_RXE, + BCM2708_UART_CR); +} + +/* + * nothing to do + */ +#define arch_decomp_wdog() --- linux-raspi2-4.2.0.orig/arch/arm/mach-bcm2708/include/mach/vc_sm_defs.h +++ linux-raspi2-4.2.0/arch/arm/mach-bcm2708/include/mach/vc_sm_defs.h @@ -0,0 +1,181 @@ +/***************************************************************************** +* Copyright 2011 Broadcom Corporation. All rights reserved. +* +* Unless you and Broadcom execute a separate written software license +* agreement governing use of this software, this software is licensed to you +* under the terms of the GNU General Public License version 2, available at +* http://www.broadcom.com/licenses/GPLv2.php (the "GPL"). +* +* Notwithstanding the above, under no circumstances may you combine this +* software in any way with any other Broadcom software provided under a +* license other than the GPL, without Broadcom's express prior written +* consent. +*****************************************************************************/ + +#ifndef __VC_SM_DEFS_H__INCLUDED__ +#define __VC_SM_DEFS_H__INCLUDED__ + +/* FourCC code used for VCHI connection */ +#define VC_SM_SERVER_NAME MAKE_FOURCC("SMEM") + +/* Maximum message length */ +#define VC_SM_MAX_MSG_LEN (sizeof(VC_SM_MSG_UNION_T) + \ + sizeof(VC_SM_MSG_HDR_T)) +#define VC_SM_MAX_RSP_LEN (sizeof(VC_SM_MSG_UNION_T)) + +/* Resource name maximum size */ +#define VC_SM_RESOURCE_NAME 32 + +/* All message types supported for HOST->VC direction */ +typedef enum { + /* Allocate shared memory block */ + VC_SM_MSG_TYPE_ALLOC, + /* Lock allocated shared memory block */ + VC_SM_MSG_TYPE_LOCK, + /* Unlock allocated shared memory block */ + VC_SM_MSG_TYPE_UNLOCK, + /* Unlock allocated shared memory block, do not answer command */ + VC_SM_MSG_TYPE_UNLOCK_NOANS, + /* Free shared memory block */ + VC_SM_MSG_TYPE_FREE, + /* Resize a shared memory block */ + VC_SM_MSG_TYPE_RESIZE, + /* Walk the allocated shared memory block(s) */ + VC_SM_MSG_TYPE_WALK_ALLOC, + + /* A previously applied action will need to be reverted */ + VC_SM_MSG_TYPE_ACTION_CLEAN, + VC_SM_MSG_TYPE_MAX +} VC_SM_MSG_TYPE; + +/* Type of memory to be allocated */ +typedef enum { + VC_SM_ALLOC_CACHED, + VC_SM_ALLOC_NON_CACHED, + +} VC_SM_ALLOC_TYPE_T; + +/* Message header for all messages in HOST->VC direction */ +typedef struct { + int32_t type; + uint32_t trans_id; + uint8_t body[0]; + +} VC_SM_MSG_HDR_T; + +/* Request to allocate memory (HOST->VC) */ +typedef struct { + /* type of memory to allocate */ + VC_SM_ALLOC_TYPE_T type; + /* byte amount of data to allocate per unit */ + uint32_t base_unit; + /* number of unit to allocate */ + uint32_t num_unit; + /* alignement to be applied on allocation */ + uint32_t alignement; + /* identity of who allocated this block */ + uint32_t allocator; + /* resource name (for easier tracking on vc side) */ + char name[VC_SM_RESOURCE_NAME]; + +} VC_SM_ALLOC_T; + +/* Result of a requested memory allocation (VC->HOST) */ +typedef struct { + /* Transaction identifier */ + uint32_t trans_id; + + /* Resource handle */ + uint32_t res_handle; + /* Pointer to resource buffer */ + void *res_mem; + /* Resource base size (bytes) */ + uint32_t res_base_size; + /* Resource number */ + uint32_t res_num; + +} VC_SM_ALLOC_RESULT_T; + +/* Request to free a previously allocated memory (HOST->VC) */ +typedef struct { + /* Resource handle (returned from alloc) */ + uint32_t res_handle; + /* Resource buffer (returned from alloc) */ + void *res_mem; + +} VC_SM_FREE_T; + +/* Request to lock a previously allocated memory (HOST->VC) */ +typedef struct { + /* Resource handle (returned from alloc) */ + uint32_t res_handle; + /* Resource buffer (returned from alloc) */ + void *res_mem; + +} VC_SM_LOCK_UNLOCK_T; + +/* Request to resize a previously allocated memory (HOST->VC) */ +typedef struct { + /* Resource handle (returned from alloc) */ + uint32_t res_handle; + /* Resource buffer (returned from alloc) */ + void *res_mem; + /* Resource *new* size requested (bytes) */ + uint32_t res_new_size; + +} VC_SM_RESIZE_T; + +/* Result of a requested memory lock (VC->HOST) */ +typedef struct { + /* Transaction identifier */ + uint32_t trans_id; + + /* Resource handle */ + uint32_t res_handle; + /* Pointer to resource buffer */ + void *res_mem; + /* Pointer to former resource buffer if the memory + * was reallocated */ + void *res_old_mem; + +} VC_SM_LOCK_RESULT_T; + +/* Generic result for a request (VC->HOST) */ +typedef struct { + /* Transaction identifier */ + uint32_t trans_id; + + int32_t success; + +} VC_SM_RESULT_T; + +/* Request to revert a previously applied action (HOST->VC) */ +typedef struct { + /* Action of interest */ + VC_SM_MSG_TYPE res_action; + /* Transaction identifier for the action of interest */ + uint32_t action_trans_id; + +} VC_SM_ACTION_CLEAN_T; + +/* Request to remove all data associated with a given allocator (HOST->VC) */ +typedef struct { + /* Allocator identifier */ + uint32_t allocator; + +} VC_SM_FREE_ALL_T; + +/* Union of ALL messages */ +typedef union { + VC_SM_ALLOC_T alloc; + VC_SM_ALLOC_RESULT_T alloc_result; + VC_SM_FREE_T free; + VC_SM_ACTION_CLEAN_T action_clean; + VC_SM_RESIZE_T resize; + VC_SM_LOCK_RESULT_T lock_result; + VC_SM_RESULT_T result; + VC_SM_FREE_ALL_T free_all; + +} VC_SM_MSG_UNION_T; + +#endif /* __VC_SM_DEFS_H__INCLUDED__ */ --- linux-raspi2-4.2.0.orig/arch/arm/mach-bcm2708/include/mach/vc_sm_knl.h +++ linux-raspi2-4.2.0/arch/arm/mach-bcm2708/include/mach/vc_sm_knl.h @@ -0,0 +1,55 @@ +/***************************************************************************** +* Copyright 2011 Broadcom Corporation. All rights reserved. +* +* Unless you and Broadcom execute a separate written software license +* agreement governing use of this software, this software is licensed to you +* under the terms of the GNU General Public License version 2, available at +* http://www.broadcom.com/licenses/GPLv2.php (the "GPL"). +* +* Notwithstanding the above, under no circumstances may you combine this +* software in any way with any other Broadcom software provided under a +* license other than the GPL, without Broadcom's express prior written +* consent. +*****************************************************************************/ + +#ifndef __VC_SM_KNL_H__INCLUDED__ +#define __VC_SM_KNL_H__INCLUDED__ + +#if !defined(__KERNEL__) +#error "This interface is for kernel use only..." +#endif + +/* Type of memory to be locked (ie mapped) */ +typedef enum { + VC_SM_LOCK_CACHED, + VC_SM_LOCK_NON_CACHED, + +} VC_SM_LOCK_CACHE_MODE_T; + +/* Allocate a shared memory handle and block. +*/ +int vc_sm_alloc(VC_SM_ALLOC_T *alloc, int *handle); + +/* Free a previously allocated shared memory handle and block. +*/ +int vc_sm_free(int handle); + +/* Lock a memory handle for use by kernel. +*/ +int vc_sm_lock(int handle, VC_SM_LOCK_CACHE_MODE_T mode, + long unsigned int *data); + +/* Unlock a memory handle in use by kernel. +*/ +int vc_sm_unlock(int handle, int flush, int no_vc_unlock); + +/* Get an internal resource handle mapped from the external one. +*/ +int vc_sm_int_handle(int handle); + +/* Map a shared memory region for use by kernel. +*/ +int vc_sm_map(int handle, unsigned int sm_addr, VC_SM_LOCK_CACHE_MODE_T mode, + long unsigned int *data); + +#endif /* __VC_SM_KNL_H__INCLUDED__ */ --- linux-raspi2-4.2.0.orig/arch/arm/mach-bcm2708/include/mach/vc_vchi_sm.h +++ linux-raspi2-4.2.0/arch/arm/mach-bcm2708/include/mach/vc_vchi_sm.h @@ -0,0 +1,82 @@ +/***************************************************************************** +* Copyright 2011 Broadcom Corporation. All rights reserved. +* +* Unless you and Broadcom execute a separate written software license +* agreement governing use of this software, this software is licensed to you +* under the terms of the GNU General Public License version 2, available at +* http://www.broadcom.com/licenses/GPLv2.php (the "GPL"). +* +* Notwithstanding the above, under no circumstances may you combine this +* software in any way with any other Broadcom software provided under a +* license other than the GPL, without Broadcom's express prior written +* consent. +*****************************************************************************/ + +#ifndef __VC_VCHI_SM_H__INCLUDED__ +#define __VC_VCHI_SM_H__INCLUDED__ + +#include "interface/vchi/vchi.h" + +#include "vc_sm_defs.h" + +/* Forward declare. +*/ +typedef struct sm_instance *VC_VCHI_SM_HANDLE_T; + +/* Initialize the shared memory service, opens up vchi connection to talk to it. +*/ +VC_VCHI_SM_HANDLE_T vc_vchi_sm_init(VCHI_INSTANCE_T vchi_instance, + VCHI_CONNECTION_T **vchi_connections, + uint32_t num_connections); + +/* Terminates the shared memory service. +*/ +int vc_vchi_sm_stop(VC_VCHI_SM_HANDLE_T *handle); + +/* Ask the shared memory service to allocate some memory on videocre and +** return the result of this allocation (which upon success will be a pointer +** to some memory in videocore space). +*/ +int vc_vchi_sm_alloc(VC_VCHI_SM_HANDLE_T handle, + VC_SM_ALLOC_T *alloc, + VC_SM_ALLOC_RESULT_T *alloc_result, uint32_t *trans_id); + +/* Ask the shared memory service to free up some memory that was previously +** allocated by the vc_vchi_sm_alloc function call. +*/ +int vc_vchi_sm_free(VC_VCHI_SM_HANDLE_T handle, + VC_SM_FREE_T *free, uint32_t *trans_id); + +/* Ask the shared memory service to lock up some memory that was previously +** allocated by the vc_vchi_sm_alloc function call. +*/ +int vc_vchi_sm_lock(VC_VCHI_SM_HANDLE_T handle, + VC_SM_LOCK_UNLOCK_T *lock_unlock, + VC_SM_LOCK_RESULT_T *lock_result, uint32_t *trans_id); + +/* Ask the shared memory service to unlock some memory that was previously +** allocated by the vc_vchi_sm_alloc function call. +*/ +int vc_vchi_sm_unlock(VC_VCHI_SM_HANDLE_T handle, + VC_SM_LOCK_UNLOCK_T *lock_unlock, + uint32_t *trans_id, uint8_t wait_reply); + +/* Ask the shared memory service to resize some memory that was previously +** allocated by the vc_vchi_sm_alloc function call. +*/ +int vc_vchi_sm_resize(VC_VCHI_SM_HANDLE_T handle, + VC_SM_RESIZE_T *resize, uint32_t *trans_id); + +/* Walk the allocated resources on the videocore side, the allocation will +** show up in the log. This is purely for debug/information and takes no +** specific actions. +*/ +int vc_vchi_sm_walk_alloc(VC_VCHI_SM_HANDLE_T handle); + +/* Clean up following a previously interrupted action which left the system +** in a bad state of some sort. +*/ +int vc_vchi_sm_clean_up(VC_VCHI_SM_HANDLE_T handle, + VC_SM_ACTION_CLEAN_T *action_clean); + +#endif /* __VC_VCHI_SM_H__INCLUDED__ */ --- linux-raspi2-4.2.0.orig/arch/arm/mach-bcm2708/include/mach/vmalloc.h +++ linux-raspi2-4.2.0/arch/arm/mach-bcm2708/include/mach/vmalloc.h @@ -0,0 +1,20 @@ +/* + * arch/arm/mach-bcm2708/include/mach/vmalloc.h + * + * Copyright (C) 2010 Broadcom + * + * 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 VMALLOC_END (0xe8000000) --- linux-raspi2-4.2.0.orig/arch/arm/mach-bcm2708/include/mach/vmcs_sm_ioctl.h +++ linux-raspi2-4.2.0/arch/arm/mach-bcm2708/include/mach/vmcs_sm_ioctl.h @@ -0,0 +1,248 @@ +/***************************************************************************** +* Copyright 2011 Broadcom Corporation. All rights reserved. +* +* Unless you and Broadcom execute a separate written software license +* agreement governing use of this software, this software is licensed to you +* under the terms of the GNU General Public License version 2, available at +* http://www.broadcom.com/licenses/GPLv2.php (the "GPL"). +* +* Notwithstanding the above, under no circumstances may you combine this +* software in any way with any other Broadcom software provided under a +* license other than the GPL, without Broadcom's express prior written +* consent. +* +*****************************************************************************/ + +#if !defined(__VMCS_SM_IOCTL_H__INCLUDED__) +#define __VMCS_SM_IOCTL_H__INCLUDED__ + +/* ---- Include Files ---------------------------------------------------- */ + +#if defined(__KERNEL__) +#include /* Needed for standard types */ +#else +#include +#endif + +#include + +/* ---- Constants and Types ---------------------------------------------- */ + +#define VMCS_SM_RESOURCE_NAME 32 +#define VMCS_SM_RESOURCE_NAME_DEFAULT "sm-host-resource" + +/* Type define used to create unique IOCTL number */ +#define VMCS_SM_MAGIC_TYPE 'I' + +/* IOCTL commands */ +enum vmcs_sm_cmd_e { + VMCS_SM_CMD_ALLOC = 0x5A, /* Start at 0x5A arbitrarily */ + VMCS_SM_CMD_ALLOC_SHARE, + VMCS_SM_CMD_LOCK, + VMCS_SM_CMD_LOCK_CACHE, + VMCS_SM_CMD_UNLOCK, + VMCS_SM_CMD_RESIZE, + VMCS_SM_CMD_UNMAP, + VMCS_SM_CMD_FREE, + VMCS_SM_CMD_FLUSH, + VMCS_SM_CMD_INVALID, + + VMCS_SM_CMD_SIZE_USR_HANDLE, + VMCS_SM_CMD_CHK_USR_HANDLE, + + VMCS_SM_CMD_MAPPED_USR_HANDLE, + VMCS_SM_CMD_MAPPED_USR_ADDRESS, + VMCS_SM_CMD_MAPPED_VC_HDL_FROM_ADDR, + VMCS_SM_CMD_MAPPED_VC_HDL_FROM_HDL, + VMCS_SM_CMD_MAPPED_VC_ADDR_FROM_HDL, + + VMCS_SM_CMD_VC_WALK_ALLOC, + VMCS_SM_CMD_HOST_WALK_MAP, + VMCS_SM_CMD_HOST_WALK_PID_ALLOC, + VMCS_SM_CMD_HOST_WALK_PID_MAP, + + VMCS_SM_CMD_CLEAN_INVALID, + + VMCS_SM_CMD_LAST /* Do no delete */ +}; + +/* Cache type supported, conveniently matches the user space definition in +** user-vcsm.h. +*/ +enum vmcs_sm_cache_e { + VMCS_SM_CACHE_NONE, + VMCS_SM_CACHE_HOST, + VMCS_SM_CACHE_VC, + VMCS_SM_CACHE_BOTH, +}; + +/* IOCTL Data structures */ +struct vmcs_sm_ioctl_alloc { + /* user -> kernel */ + unsigned int size; + unsigned int num; + enum vmcs_sm_cache_e cached; + char name[VMCS_SM_RESOURCE_NAME]; + + /* kernel -> user */ + unsigned int handle; + /* unsigned int base_addr; */ +}; + +struct vmcs_sm_ioctl_alloc_share { + /* user -> kernel */ + unsigned int handle; + unsigned int size; +}; + +struct vmcs_sm_ioctl_free { + /* user -> kernel */ + unsigned int handle; + /* unsigned int base_addr; */ +}; + +struct vmcs_sm_ioctl_lock_unlock { + /* user -> kernel */ + unsigned int handle; + + /* kernel -> user */ + unsigned int addr; +}; + +struct vmcs_sm_ioctl_lock_cache { + /* user -> kernel */ + unsigned int handle; + enum vmcs_sm_cache_e cached; +}; + +struct vmcs_sm_ioctl_resize { + /* user -> kernel */ + unsigned int handle; + unsigned int new_size; + + /* kernel -> user */ + unsigned int old_size; +}; + +struct vmcs_sm_ioctl_map { + /* user -> kernel */ + /* and kernel -> user */ + unsigned int pid; + unsigned int handle; + unsigned int addr; + + /* kernel -> user */ + unsigned int size; +}; + +struct vmcs_sm_ioctl_walk { + /* user -> kernel */ + unsigned int pid; +}; + +struct vmcs_sm_ioctl_chk { + /* user -> kernel */ + unsigned int handle; + + /* kernel -> user */ + unsigned int addr; + unsigned int size; + enum vmcs_sm_cache_e cache; +}; + +struct vmcs_sm_ioctl_size { + /* user -> kernel */ + unsigned int handle; + + /* kernel -> user */ + unsigned int size; +}; + +struct vmcs_sm_ioctl_cache { + /* user -> kernel */ + unsigned int handle; + unsigned int addr; + unsigned int size; +}; + +struct vmcs_sm_ioctl_clean_invalid { + /* user -> kernel */ + struct { + unsigned int cmd; + unsigned int handle; + unsigned int addr; + unsigned int size; + } s[8]; +}; + +/* IOCTL numbers */ +#define VMCS_SM_IOCTL_MEM_ALLOC\ + _IOR(VMCS_SM_MAGIC_TYPE, VMCS_SM_CMD_ALLOC,\ + struct vmcs_sm_ioctl_alloc) +#define VMCS_SM_IOCTL_MEM_ALLOC_SHARE\ + _IOR(VMCS_SM_MAGIC_TYPE, VMCS_SM_CMD_ALLOC_SHARE,\ + struct vmcs_sm_ioctl_alloc_share) +#define VMCS_SM_IOCTL_MEM_LOCK\ + _IOR(VMCS_SM_MAGIC_TYPE, VMCS_SM_CMD_LOCK,\ + struct vmcs_sm_ioctl_lock_unlock) +#define VMCS_SM_IOCTL_MEM_LOCK_CACHE\ + _IOR(VMCS_SM_MAGIC_TYPE, VMCS_SM_CMD_LOCK_CACHE,\ + struct vmcs_sm_ioctl_lock_cache) +#define VMCS_SM_IOCTL_MEM_UNLOCK\ + _IOR(VMCS_SM_MAGIC_TYPE, VMCS_SM_CMD_UNLOCK,\ + struct vmcs_sm_ioctl_lock_unlock) +#define VMCS_SM_IOCTL_MEM_RESIZE\ + _IOR(VMCS_SM_MAGIC_TYPE, VMCS_SM_CMD_RESIZE,\ + struct vmcs_sm_ioctl_resize) +#define VMCS_SM_IOCTL_MEM_FREE\ + _IOR(VMCS_SM_MAGIC_TYPE, VMCS_SM_CMD_FREE,\ + struct vmcs_sm_ioctl_free) +#define VMCS_SM_IOCTL_MEM_FLUSH\ + _IOR(VMCS_SM_MAGIC_TYPE, VMCS_SM_CMD_FLUSH,\ + struct vmcs_sm_ioctl_cache) +#define VMCS_SM_IOCTL_MEM_INVALID\ + _IOR(VMCS_SM_MAGIC_TYPE, VMCS_SM_CMD_INVALID,\ + struct vmcs_sm_ioctl_cache) +#define VMCS_SM_IOCTL_MEM_CLEAN_INVALID\ + _IOR(VMCS_SM_MAGIC_TYPE, VMCS_SM_CMD_CLEAN_INVALID,\ + struct vmcs_sm_ioctl_clean_invalid) + +#define VMCS_SM_IOCTL_SIZE_USR_HDL\ + _IOR(VMCS_SM_MAGIC_TYPE, VMCS_SM_CMD_SIZE_USR_HANDLE,\ + struct vmcs_sm_ioctl_size) +#define VMCS_SM_IOCTL_CHK_USR_HDL\ + _IOR(VMCS_SM_MAGIC_TYPE, VMCS_SM_CMD_CHK_USR_HANDLE,\ + struct vmcs_sm_ioctl_chk) + +#define VMCS_SM_IOCTL_MAP_USR_HDL\ + _IOR(VMCS_SM_MAGIC_TYPE, VMCS_SM_CMD_MAPPED_USR_HANDLE,\ + struct vmcs_sm_ioctl_map) +#define VMCS_SM_IOCTL_MAP_USR_ADDRESS\ + _IOR(VMCS_SM_MAGIC_TYPE, VMCS_SM_CMD_MAPPED_USR_ADDRESS,\ + struct vmcs_sm_ioctl_map) +#define VMCS_SM_IOCTL_MAP_VC_HDL_FR_ADDR\ + _IOR(VMCS_SM_MAGIC_TYPE, VMCS_SM_CMD_MAPPED_VC_HDL_FROM_ADDR,\ + struct vmcs_sm_ioctl_map) +#define VMCS_SM_IOCTL_MAP_VC_HDL_FR_HDL\ + _IOR(VMCS_SM_MAGIC_TYPE, VMCS_SM_CMD_MAPPED_VC_HDL_FROM_HDL,\ + struct vmcs_sm_ioctl_map) +#define VMCS_SM_IOCTL_MAP_VC_ADDR_FR_HDL\ + _IOR(VMCS_SM_MAGIC_TYPE, VMCS_SM_CMD_MAPPED_VC_ADDR_FROM_HDL,\ + struct vmcs_sm_ioctl_map) + +#define VMCS_SM_IOCTL_VC_WALK_ALLOC\ + _IO(VMCS_SM_MAGIC_TYPE, VMCS_SM_CMD_VC_WALK_ALLOC) +#define VMCS_SM_IOCTL_HOST_WALK_MAP\ + _IO(VMCS_SM_MAGIC_TYPE, VMCS_SM_CMD_HOST_WALK_MAP) +#define VMCS_SM_IOCTL_HOST_WALK_PID_ALLOC\ + _IOR(VMCS_SM_MAGIC_TYPE, VMCS_SM_CMD_HOST_WALK_PID_ALLOC,\ + struct vmcs_sm_ioctl_walk) +#define VMCS_SM_IOCTL_HOST_WALK_PID_MAP\ + _IOR(VMCS_SM_MAGIC_TYPE, VMCS_SM_CMD_HOST_WALK_PID_MAP,\ + struct vmcs_sm_ioctl_walk) + +/* ---- Variable Externs ------------------------------------------------- */ + +/* ---- Function Prototypes ---------------------------------------------- */ + +#endif /* __VMCS_SM_IOCTL_H__INCLUDED__ */ --- linux-raspi2-4.2.0.orig/arch/arm/mach-bcm2709/Kconfig +++ linux-raspi2-4.2.0/arch/arm/mach-bcm2709/Kconfig @@ -0,0 +1,42 @@ +menu "Broadcom BCM2709 Implementations" + depends on ARCH_BCM2709 + +config MACH_BCM2709 + bool "Broadcom BCM2709 Development Platform" + help + Include support for the Broadcom(R) BCM2709 platform. + +config BCM2709_DT + bool "BCM2709 Device Tree support" + depends on MACH_BCM2709 + default n + select USE_OF + select ARCH_REQUIRE_GPIOLIB + select PINCTRL + select PINCTRL_BCM2835 + help + Enable Device Tree support for BCM2709 + +config BCM2708_GPIO + bool "BCM2709 gpio support" + depends on MACH_BCM2709 + select ARCH_REQUIRE_GPIOLIB + default y + help + Include support for the Broadcom(R) BCM2709 gpio. + +config BCM2708_NOL2CACHE + bool "Videocore L2 cache disable" + depends on MACH_BCM2709 + default y + help + Do not allow ARM to use GPU's L2 cache. Requires disable_l2cache in config.txt. + +config BCM2708_SPIDEV + bool "Bind spidev to SPI0 master" + depends on MACH_BCM2709 + depends on SPI + default y + help + Binds spidev driver to the SPI0 master +endmenu --- linux-raspi2-4.2.0.orig/arch/arm/mach-bcm2709/Makefile +++ linux-raspi2-4.2.0/arch/arm/mach-bcm2709/Makefile @@ -0,0 +1,6 @@ +# +# Makefile for the linux kernel. +# + +obj-$(CONFIG_MACH_BCM2709) += bcm2709.o armctrl.o +obj-$(CONFIG_BCM2708_GPIO) += bcm2708_gpio.o --- linux-raspi2-4.2.0.orig/arch/arm/mach-bcm2709/Makefile.boot +++ linux-raspi2-4.2.0/arch/arm/mach-bcm2709/Makefile.boot @@ -0,0 +1,3 @@ + zreladdr-y := 0x00008000 +params_phys-y := 0x00000100 +initrd_phys-y := 0x00800000 --- linux-raspi2-4.2.0.orig/arch/arm/mach-bcm2709/armctrl.c +++ linux-raspi2-4.2.0/arch/arm/mach-bcm2709/armctrl.c @@ -0,0 +1,384 @@ +/* + * linux/arch/arm/mach-bcm2708/armctrl.c + * + * Copyright (C) 2010 Broadcom + * + * 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 +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include "armctrl.h" + +/* For support of kernels >= 3.0 assume only one VIC for now*/ +static unsigned int remap_irqs[(INTERRUPT_ARASANSDIO + 1) - INTERRUPT_JPEG] = { + INTERRUPT_VC_JPEG, + INTERRUPT_VC_USB, + INTERRUPT_VC_3D, + INTERRUPT_VC_DMA2, + INTERRUPT_VC_DMA3, + INTERRUPT_VC_I2C, + INTERRUPT_VC_SPI, + INTERRUPT_VC_I2SPCM, + INTERRUPT_VC_SDIO, + INTERRUPT_VC_UART, + INTERRUPT_VC_ARASANSDIO +}; + +extern unsigned force_core; + +static void armctrl_mask_irq(struct irq_data *d) +{ + static const unsigned int disables[4] = { + ARM_IRQ_DIBL1, + ARM_IRQ_DIBL2, + ARM_IRQ_DIBL3, + 0 + }; + int i; + if (d->irq >= FIQ_START) { + writel(0, __io_address(ARM_IRQ_FAST)); + } else if (d->irq >= IRQ_ARM_LOCAL_CNTPSIRQ && d->irq < IRQ_ARM_LOCAL_CNTPSIRQ + 4) { +#if 1 + unsigned int data = (unsigned int)irq_get_chip_data(d->irq) - IRQ_ARM_LOCAL_CNTPSIRQ; + for (i=0; i<4; i++) // i = raw_smp_processor_id(); // + { + unsigned int val = readl(__io_address(ARM_LOCAL_TIMER_INT_CONTROL0 + 4*i)); + writel(val &~ (1 << data), __io_address(ARM_LOCAL_TIMER_INT_CONTROL0 + 4*i)); + } +#endif + } else if (d->irq >= IRQ_ARM_LOCAL_MAILBOX0 && d->irq < IRQ_ARM_LOCAL_MAILBOX0 + 4) { +#if 0 + unsigned int data = (unsigned int)irq_get_chip_data(d->irq) - IRQ_ARM_LOCAL_MAILBOX0; + for (i=0; i<4; i++) { + unsigned int val = readl(__io_address(ARM_LOCAL_MAILBOX_INT_CONTROL0 + 4*i)); + writel(val &~ (1 << data), __io_address(ARM_LOCAL_MAILBOX_INT_CONTROL0 + 4*i)); + } +#endif + } else if (d->irq >= ARM_IRQ1_BASE && d->irq < ARM_IRQ_LOCAL_BASE) { + unsigned int data = (unsigned int)irq_get_chip_data(d->irq); + writel(1 << (data & 0x1f), __io_address(disables[(data >> 5) & 0x3])); + } else if (d->irq == INTERRUPT_ARM_LOCAL_PMU_FAST) { + writel(0xf, __io_address(ARM_LOCAL_PM_ROUTING_CLR)); + } else { printk("%s: %d\n", __func__, d->irq); BUG(); } +} + +static void armctrl_unmask_irq(struct irq_data *d) +{ + static const unsigned int enables[4] = { + ARM_IRQ_ENBL1, + ARM_IRQ_ENBL2, + ARM_IRQ_ENBL3, + 0 + }; + int i; + if (d->irq >= FIQ_START) { + unsigned int data; + if (force_core) { + data = readl(__io_address(ARM_LOCAL_GPU_INT_ROUTING)); + data &= ~0xc; + data |= ((force_core-1) << 2); + writel(data, __io_address(ARM_LOCAL_GPU_INT_ROUTING)); + } + else if (num_online_cpus() > 1) { + data = readl(__io_address(ARM_LOCAL_GPU_INT_ROUTING)); + data &= ~0xc; + data |= (1 << 2); + writel(data, __io_address(ARM_LOCAL_GPU_INT_ROUTING)); + } + /* Unmask in ARMCTRL block after routing it properly */ + data = (unsigned int)irq_get_chip_data(d->irq) - FIQ_START; + writel(0x80 | data, __io_address(ARM_IRQ_FAST)); + } else if (d->irq >= IRQ_ARM_LOCAL_CNTPSIRQ && d->irq < IRQ_ARM_LOCAL_CNTPSIRQ + 4) { +#if 1 + unsigned int data = (unsigned int)irq_get_chip_data(d->irq) - IRQ_ARM_LOCAL_CNTPSIRQ; + for (i=0; i<4; i++) // i = raw_smp_processor_id(); + { + unsigned int val = readl(__io_address(ARM_LOCAL_TIMER_INT_CONTROL0 + 4*i)); + writel(val | (1 << data), __io_address(ARM_LOCAL_TIMER_INT_CONTROL0 + 4*i)); + } +#endif + } else if (d->irq >= IRQ_ARM_LOCAL_MAILBOX0 && d->irq < IRQ_ARM_LOCAL_MAILBOX0 + 4) { +#if 0 + unsigned int data = (unsigned int)irq_get_chip_data(d->irq) - IRQ_ARM_LOCAL_MAILBOX0; + for (i=0; i<4; i++) { + unsigned int val = readl(__io_address(ARM_LOCAL_MAILBOX_INT_CONTROL0 + 4*i)); + writel(val | (1 << data), __io_address(ARM_LOCAL_MAILBOX_INT_CONTROL0 + 4*i)); + } +#endif + } else if (d->irq >= ARM_IRQ1_BASE && d->irq < ARM_IRQ_LOCAL_BASE) { + if (force_core) { + unsigned int data; + data = readl(__io_address(ARM_LOCAL_GPU_INT_ROUTING)); + data &= ~0x3; + data |= ((force_core-1) << 0); + writel(data, __io_address(ARM_LOCAL_GPU_INT_ROUTING)); + } + unsigned int data = (unsigned int)irq_get_chip_data(d->irq); + writel(1 << (data & 0x1f), __io_address(enables[(data >> 5) & 0x3])); + } else if (d->irq == INTERRUPT_ARM_LOCAL_PMU_FAST) { + writel(0xf, __io_address(ARM_LOCAL_PM_ROUTING_SET)); + } else { printk("%s: %d\n", __func__, d->irq); BUG(); } +} + +#ifdef CONFIG_OF + +#define NR_IRQS_BANK0 21 +#define NR_BANKS 4 +#define IRQS_PER_BANK 32 + +/* from drivers/irqchip/irq-bcm2835.c */ +static int armctrl_xlate(struct irq_domain *d, struct device_node *ctrlr, + const u32 *intspec, unsigned int intsize, + unsigned long *out_hwirq, unsigned int *out_type) +{ + if (WARN_ON(intsize != 2)) + return -EINVAL; + + if (WARN_ON(intspec[0] >= NR_BANKS)) + return -EINVAL; + + if (WARN_ON(intspec[1] >= IRQS_PER_BANK)) + return -EINVAL; + + if (WARN_ON(intspec[0] == 0 && intspec[1] >= NR_IRQS_BANK0)) + return -EINVAL; + + if (WARN_ON(intspec[0] == 3 && intspec[1] > 3 && intspec[1] != 5 && intspec[1] != 9)) + return -EINVAL; + + if (intspec[0] == 0) + *out_hwirq = ARM_IRQ0_BASE + intspec[1]; + else if (intspec[0] == 1) + *out_hwirq = ARM_IRQ1_BASE + intspec[1]; + else if (intspec[0] == 2) + *out_hwirq = ARM_IRQ2_BASE + intspec[1]; + else + *out_hwirq = ARM_IRQ_LOCAL_BASE + intspec[1]; + + /* reverse remap_irqs[] */ + switch (*out_hwirq) { + case INTERRUPT_VC_JPEG: + *out_hwirq = INTERRUPT_JPEG; + break; + case INTERRUPT_VC_USB: + *out_hwirq = INTERRUPT_USB; + break; + case INTERRUPT_VC_3D: + *out_hwirq = INTERRUPT_3D; + break; + case INTERRUPT_VC_DMA2: + *out_hwirq = INTERRUPT_DMA2; + break; + case INTERRUPT_VC_DMA3: + *out_hwirq = INTERRUPT_DMA3; + break; + case INTERRUPT_VC_I2C: + *out_hwirq = INTERRUPT_I2C; + break; + case INTERRUPT_VC_SPI: + *out_hwirq = INTERRUPT_SPI; + break; + case INTERRUPT_VC_I2SPCM: + *out_hwirq = INTERRUPT_I2SPCM; + break; + case INTERRUPT_VC_SDIO: + *out_hwirq = INTERRUPT_SDIO; + break; + case INTERRUPT_VC_UART: + *out_hwirq = INTERRUPT_UART; + break; + case INTERRUPT_VC_ARASANSDIO: + *out_hwirq = INTERRUPT_ARASANSDIO; + break; + } + + *out_type = IRQ_TYPE_NONE; + return 0; +} + +static struct irq_domain_ops armctrl_ops = { + .xlate = armctrl_xlate +}; + +void __init armctrl_dt_init(void) +{ + struct device_node *np; + struct irq_domain *domain; + + np = of_find_compatible_node(NULL, NULL, "brcm,bcm2708-armctrl-ic"); + if (!np) + return; + + domain = irq_domain_add_legacy(np, BCM2708_ALLOC_IRQS, + IRQ_ARMCTRL_START, 0, + &armctrl_ops, NULL); + WARN_ON(!domain); +} +#else +void __init armctrl_dt_init(void) { } +#endif /* CONFIG_OF */ + +#if defined(CONFIG_PM) + +/* for kernels 3.xx use the new syscore_ops apis but for older kernels use the sys dev class */ + +/* Static defines + * struct armctrl_device - VIC PM device (< 3.xx) + * @sysdev: The system device which is registered. (< 3.xx) + * @irq: The IRQ number for the base of the VIC. + * @base: The register base for the VIC. + * @resume_sources: A bitmask of interrupts for resume. + * @resume_irqs: The IRQs enabled for resume. + * @int_select: Save for VIC_INT_SELECT. + * @int_enable: Save for VIC_INT_ENABLE. + * @soft_int: Save for VIC_INT_SOFT. + * @protect: Save for VIC_PROTECT. + */ +struct armctrl_info { + void __iomem *base; + int irq; + u32 resume_sources; + u32 resume_irqs; + u32 int_select; + u32 int_enable; + u32 soft_int; + u32 protect; +} armctrl; + +static int armctrl_suspend(void) +{ + return 0; +} + +static void armctrl_resume(void) +{ + return; +} + +/** + * armctrl_pm_register - Register a VIC for later power management control + * @base: The base address of the VIC. + * @irq: The base IRQ for the VIC. + * @resume_sources: bitmask of interrupts allowed for resume sources. + * + * For older kernels (< 3.xx) do - + * Register the VIC with the system device tree so that it can be notified + * of suspend and resume requests and ensure that the correct actions are + * taken to re-instate the settings on resume. + */ +static void __init armctrl_pm_register(void __iomem * base, unsigned int irq, + u32 resume_sources) +{ + armctrl.base = base; + armctrl.resume_sources = resume_sources; + armctrl.irq = irq; +} + +static int armctrl_set_wake(struct irq_data *d, unsigned int on) +{ + unsigned int off = d->irq & 31; + u32 bit = 1 << off; + + if (!(bit & armctrl.resume_sources)) + return -EINVAL; + + if (on) + armctrl.resume_irqs |= bit; + else + armctrl.resume_irqs &= ~bit; + + return 0; +} + +#else +static inline void armctrl_pm_register(void __iomem * base, unsigned int irq, + u32 arg1) +{ +} + +#define armctrl_suspend NULL +#define armctrl_resume NULL +#define armctrl_set_wake NULL +#endif /* CONFIG_PM */ + +static struct syscore_ops armctrl_syscore_ops = { + .suspend = armctrl_suspend, + .resume = armctrl_resume, +}; + +/** + * armctrl_syscore_init - initicall to register VIC pm functions + * + * This is called via late_initcall() to register + * the resources for the VICs due to the early + * nature of the VIC's registration. +*/ +static int __init armctrl_syscore_init(void) +{ + register_syscore_ops(&armctrl_syscore_ops); + return 0; +} + +late_initcall(armctrl_syscore_init); + +static struct irq_chip armctrl_chip = { + .name = "ARMCTRL", + .irq_ack = NULL, + .irq_mask = armctrl_mask_irq, + .irq_unmask = armctrl_unmask_irq, + .irq_set_wake = armctrl_set_wake, +}; + +/** + * armctrl_init - initialise a vectored interrupt controller + * @base: iomem base address + * @irq_start: starting interrupt number, must be muliple of 32 + * @armctrl_sources: bitmask of interrupt sources to allow + * @resume_sources: bitmask of interrupt sources to allow for resume + */ +int __init armctrl_init(void __iomem * base, unsigned int irq_start, + u32 armctrl_sources, u32 resume_sources) +{ + unsigned int irq; + + for (irq = 0; irq < BCM2708_ALLOC_IRQS; irq++) { + unsigned int data = irq; + if (irq >= INTERRUPT_JPEG && irq <= INTERRUPT_ARASANSDIO) + data = remap_irqs[irq - INTERRUPT_JPEG]; + if (irq >= IRQ_ARM_LOCAL_CNTPSIRQ && irq <= IRQ_ARM_LOCAL_TIMER) { + irq_set_percpu_devid(irq); + irq_set_chip_and_handler(irq, &armctrl_chip, handle_percpu_devid_irq); + set_irq_flags(irq, IRQF_VALID | IRQF_NOAUTOEN); + } else { + irq_set_chip_and_handler(irq, &armctrl_chip, handle_level_irq); + set_irq_flags(irq, IRQF_VALID | IRQF_PROBE); + } + irq_set_chip_data(irq, (void *)data); + } + + armctrl_pm_register(base, irq_start, resume_sources); + init_FIQ(FIQ_START); + armctrl_dt_init(); + return 0; +} --- linux-raspi2-4.2.0.orig/arch/arm/mach-bcm2709/armctrl.h +++ linux-raspi2-4.2.0/arch/arm/mach-bcm2709/armctrl.h @@ -0,0 +1,27 @@ +/* + * linux/arch/arm/mach-bcm2708/armctrl.h + * + * Copyright (C) 2010 Broadcom + * + * 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 + */ + +#ifndef __BCM2708_ARMCTRL_H +#define __BCM2708_ARMCTRL_H + +extern int __init armctrl_init(void __iomem * base, unsigned int irq_start, + u32 armctrl_sources, u32 resume_sources); + +#endif --- linux-raspi2-4.2.0.orig/arch/arm/mach-bcm2709/bcm2708_gpio.c +++ linux-raspi2-4.2.0/arch/arm/mach-bcm2709/bcm2708_gpio.c @@ -0,0 +1,426 @@ +/* + * linux/arch/arm/mach-bcm2708/bcm2708_gpio.c + * + * Copyright (C) 2010 Broadcom + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + * + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +#define BCM_GPIO_DRIVER_NAME "bcm2708_gpio" +#define DRIVER_NAME BCM_GPIO_DRIVER_NAME +#define BCM_GPIO_USE_IRQ 1 + +#define GPIOFSEL(x) (0x00+(x)*4) +#define GPIOSET(x) (0x1c+(x)*4) +#define GPIOCLR(x) (0x28+(x)*4) +#define GPIOLEV(x) (0x34+(x)*4) +#define GPIOEDS(x) (0x40+(x)*4) +#define GPIOREN(x) (0x4c+(x)*4) +#define GPIOFEN(x) (0x58+(x)*4) +#define GPIOHEN(x) (0x64+(x)*4) +#define GPIOLEN(x) (0x70+(x)*4) +#define GPIOAREN(x) (0x7c+(x)*4) +#define GPIOAFEN(x) (0x88+(x)*4) +#define GPIOUD(x) (0x94+(x)*4) +#define GPIOUDCLK(x) (0x98+(x)*4) + +#define GPIO_BANKS 2 + +enum { GPIO_FSEL_INPUT, GPIO_FSEL_OUTPUT, + GPIO_FSEL_ALT5, GPIO_FSEL_ALT_4, + GPIO_FSEL_ALT0, GPIO_FSEL_ALT1, + GPIO_FSEL_ALT2, GPIO_FSEL_ALT3, +}; + + /* Each of the two spinlocks protects a different set of hardware + * regiters and data structurs. This decouples the code of the IRQ from + * the GPIO code. This also makes the case of a GPIO routine call from + * the IRQ code simpler. + */ +static DEFINE_SPINLOCK(lock); /* GPIO registers */ + +struct bcm2708_gpio { + struct list_head list; + void __iomem *base; + struct gpio_chip gc; + unsigned long rising[(BCM2708_NR_GPIOS + 31) / 32]; + unsigned long falling[(BCM2708_NR_GPIOS + 31) / 32]; + unsigned long high[(BCM2708_NR_GPIOS + 31) / 32]; + unsigned long low[(BCM2708_NR_GPIOS + 31) / 32]; +}; + +static int bcm2708_set_function(struct gpio_chip *gc, unsigned offset, + int function) +{ + struct bcm2708_gpio *gpio = container_of(gc, struct bcm2708_gpio, gc); + unsigned long flags; + unsigned gpiodir; + unsigned gpio_bank = offset / 10; + unsigned gpio_field_offset = (offset - 10 * gpio_bank) * 3; + +//printk(KERN_ERR DRIVER_NAME ": bcm2708_gpio_set_function %p (%d,%d)\n", gc, offset, function); + if (offset >= BCM2708_NR_GPIOS) + return -EINVAL; + + spin_lock_irqsave(&lock, flags); + + gpiodir = readl(gpio->base + GPIOFSEL(gpio_bank)); + gpiodir &= ~(7 << gpio_field_offset); + gpiodir |= function << gpio_field_offset; + writel(gpiodir, gpio->base + GPIOFSEL(gpio_bank)); + spin_unlock_irqrestore(&lock, flags); + gpiodir = readl(gpio->base + GPIOFSEL(gpio_bank)); + + return 0; +} + +static int bcm2708_gpio_dir_in(struct gpio_chip *gc, unsigned offset) +{ + return bcm2708_set_function(gc, offset, GPIO_FSEL_INPUT); +} + +static void bcm2708_gpio_set(struct gpio_chip *gc, unsigned offset, int value); +static int bcm2708_gpio_dir_out(struct gpio_chip *gc, unsigned offset, + int value) +{ + int ret; + ret = bcm2708_set_function(gc, offset, GPIO_FSEL_OUTPUT); + if (ret >= 0) + bcm2708_gpio_set(gc, offset, value); + return ret; +} + +static int bcm2708_gpio_get(struct gpio_chip *gc, unsigned offset) +{ + struct bcm2708_gpio *gpio = container_of(gc, struct bcm2708_gpio, gc); + unsigned gpio_bank = offset / 32; + unsigned gpio_field_offset = (offset - 32 * gpio_bank); + unsigned lev; + + if (offset >= BCM2708_NR_GPIOS) + return 0; + lev = readl(gpio->base + GPIOLEV(gpio_bank)); +//printk(KERN_ERR DRIVER_NAME ": bcm2708_gpio_get %p (%d)=%d\n", gc, offset, 0x1 & (lev>>gpio_field_offset)); + return 0x1 & (lev >> gpio_field_offset); +} + +static void bcm2708_gpio_set(struct gpio_chip *gc, unsigned offset, int value) +{ + struct bcm2708_gpio *gpio = container_of(gc, struct bcm2708_gpio, gc); + unsigned gpio_bank = offset / 32; + unsigned gpio_field_offset = (offset - 32 * gpio_bank); +//printk(KERN_ERR DRIVER_NAME ": bcm2708_gpio_set %p (%d=%d)\n", gc, offset, value); + if (offset >= BCM2708_NR_GPIOS) + return; + if (value) + writel(1 << gpio_field_offset, gpio->base + GPIOSET(gpio_bank)); + else + writel(1 << gpio_field_offset, gpio->base + GPIOCLR(gpio_bank)); +} + +/********************** + * extension to configure pullups + */ +int bcm2708_gpio_setpull(struct gpio_chip *gc, unsigned offset, + bcm2708_gpio_pull_t value) +{ + struct bcm2708_gpio *gpio = container_of(gc, struct bcm2708_gpio, gc); + unsigned gpio_bank = offset / 32; + unsigned gpio_field_offset = (offset - 32 * gpio_bank); + + if (offset >= BCM2708_NR_GPIOS) + return -EINVAL; + + switch (value) { + case BCM2708_PULL_UP: + writel(2, gpio->base + GPIOUD(0)); + break; + case BCM2708_PULL_DOWN: + writel(1, gpio->base + GPIOUD(0)); + break; + case BCM2708_PULL_OFF: + writel(0, gpio->base + GPIOUD(0)); + break; + } + + udelay(5); + writel(1 << gpio_field_offset, gpio->base + GPIOUDCLK(gpio_bank)); + udelay(5); + writel(0, gpio->base + GPIOUD(0)); + writel(0 << gpio_field_offset, gpio->base + GPIOUDCLK(gpio_bank)); + + return 0; +} +EXPORT_SYMBOL(bcm2708_gpio_setpull); + +/************************************************************************************************************************* + * bcm2708 GPIO IRQ + */ + +#if BCM_GPIO_USE_IRQ + +static int bcm2708_gpio_to_irq(struct gpio_chip *chip, unsigned gpio) +{ + return gpio_to_irq(gpio); +} + +static int bcm2708_gpio_irq_set_type(struct irq_data *d, unsigned type) +{ + unsigned irq = d->irq; + struct bcm2708_gpio *gpio = irq_get_chip_data(irq); + unsigned gn = irq_to_gpio(irq); + unsigned gb = gn / 32; + unsigned go = gn % 32; + + gpio->rising[gb] &= ~(1 << go); + gpio->falling[gb] &= ~(1 << go); + gpio->high[gb] &= ~(1 << go); + gpio->low[gb] &= ~(1 << go); + + if (type & ~(IRQ_TYPE_EDGE_FALLING | IRQ_TYPE_EDGE_RISING | IRQ_TYPE_LEVEL_LOW | IRQ_TYPE_LEVEL_HIGH)) + return -EINVAL; + + if (type & IRQ_TYPE_EDGE_RISING) + gpio->rising[gb] |= (1 << go); + if (type & IRQ_TYPE_EDGE_FALLING) + gpio->falling[gb] |= (1 << go); + if (type & IRQ_TYPE_LEVEL_HIGH) + gpio->high[gb] |= (1 << go); + if (type & IRQ_TYPE_LEVEL_LOW) + gpio->low[gb] |= (1 << go); + return 0; +} + +static void bcm2708_gpio_irq_mask(struct irq_data *d) +{ + unsigned irq = d->irq; + struct bcm2708_gpio *gpio = irq_get_chip_data(irq); + unsigned gn = irq_to_gpio(irq); + unsigned gb = gn / 32; + unsigned long rising = readl(gpio->base + GPIOREN(gb)); + unsigned long falling = readl(gpio->base + GPIOFEN(gb)); + unsigned long high = readl(gpio->base + GPIOHEN(gb)); + unsigned long low = readl(gpio->base + GPIOLEN(gb)); + + gn = gn % 32; + + writel(rising & ~(1 << gn), gpio->base + GPIOREN(gb)); + writel(falling & ~(1 << gn), gpio->base + GPIOFEN(gb)); + writel(high & ~(1 << gn), gpio->base + GPIOHEN(gb)); + writel(low & ~(1 << gn), gpio->base + GPIOLEN(gb)); +} + +static void bcm2708_gpio_irq_unmask(struct irq_data *d) +{ + unsigned irq = d->irq; + struct bcm2708_gpio *gpio = irq_get_chip_data(irq); + unsigned gn = irq_to_gpio(irq); + unsigned gb = gn / 32; + unsigned go = gn % 32; + unsigned long rising = readl(gpio->base + GPIOREN(gb)); + unsigned long falling = readl(gpio->base + GPIOFEN(gb)); + unsigned long high = readl(gpio->base + GPIOHEN(gb)); + unsigned long low = readl(gpio->base + GPIOLEN(gb)); + + if (gpio->rising[gb] & (1 << go)) { + writel(rising | (1 << go), gpio->base + GPIOREN(gb)); + } else { + writel(rising & ~(1 << go), gpio->base + GPIOREN(gb)); + } + + if (gpio->falling[gb] & (1 << go)) { + writel(falling | (1 << go), gpio->base + GPIOFEN(gb)); + } else { + writel(falling & ~(1 << go), gpio->base + GPIOFEN(gb)); + } + + if (gpio->high[gb] & (1 << go)) { + writel(high | (1 << go), gpio->base + GPIOHEN(gb)); + } else { + writel(high & ~(1 << go), gpio->base + GPIOHEN(gb)); + } + + if (gpio->low[gb] & (1 << go)) { + writel(low | (1 << go), gpio->base + GPIOLEN(gb)); + } else { + writel(low & ~(1 << go), gpio->base + GPIOLEN(gb)); + } +} + +static struct irq_chip bcm2708_irqchip = { + .name = "GPIO", + .irq_enable = bcm2708_gpio_irq_unmask, + .irq_disable = bcm2708_gpio_irq_mask, + .irq_unmask = bcm2708_gpio_irq_unmask, + .irq_mask = bcm2708_gpio_irq_mask, + .irq_set_type = bcm2708_gpio_irq_set_type, +}; + +static irqreturn_t bcm2708_gpio_interrupt(int irq, void *dev_id) +{ + unsigned long edsr; + unsigned bank; + int i; + unsigned gpio; + unsigned level_bits; + struct bcm2708_gpio *gpio_data = dev_id; + + for (bank = 0; bank < GPIO_BANKS; bank++) { + edsr = readl(__io_address(GPIO_BASE) + GPIOEDS(bank)); + level_bits = gpio_data->high[bank] | gpio_data->low[bank]; + + for_each_set_bit(i, &edsr, 32) { + gpio = i + bank * 32; + /* ack edge triggered IRQs immediately */ + if (!(level_bits & (1<gc.to_irq = bcm2708_gpio_to_irq; + + for (irq = GPIO_IRQ_START; irq < (GPIO_IRQ_START + GPIO_IRQS); irq++) { + irq_set_chip_data(irq, ucb); + irq_set_chip_and_handler(irq, &bcm2708_irqchip, + handle_simple_irq); + set_irq_flags(irq, IRQF_VALID); + } + + bcm2708_gpio_irq.dev_id = ucb; + setup_irq(IRQ_GPIO3, &bcm2708_gpio_irq); +} + +#else + +static void bcm2708_gpio_irq_init(struct bcm2708_gpio *ucb) +{ +} + +#endif /* #if BCM_GPIO_USE_IRQ ***************************************************************************************************************** */ + +static int bcm2708_gpio_probe(struct platform_device *dev) +{ + struct bcm2708_gpio *ucb; + struct resource *res; + int bank; + int err = 0; + + printk(KERN_INFO DRIVER_NAME ": bcm2708_gpio_probe %p\n", dev); + + ucb = kzalloc(sizeof(*ucb), GFP_KERNEL); + if (NULL == ucb) { + printk(KERN_ERR DRIVER_NAME ": failed to allocate " + "mailbox memory\n"); + err = -ENOMEM; + goto err; + } + + res = platform_get_resource(dev, IORESOURCE_MEM, 0); + + platform_set_drvdata(dev, ucb); + ucb->base = __io_address(GPIO_BASE); + + ucb->gc.label = "bcm2708_gpio"; + ucb->gc.base = 0; + ucb->gc.ngpio = BCM2708_NR_GPIOS; + ucb->gc.owner = THIS_MODULE; + + ucb->gc.direction_input = bcm2708_gpio_dir_in; + ucb->gc.direction_output = bcm2708_gpio_dir_out; + ucb->gc.get = bcm2708_gpio_get; + ucb->gc.set = bcm2708_gpio_set; + ucb->gc.can_sleep = 0; + + for (bank = 0; bank < GPIO_BANKS; bank++) { + writel(0, ucb->base + GPIOREN(bank)); + writel(0, ucb->base + GPIOFEN(bank)); + writel(0, ucb->base + GPIOHEN(bank)); + writel(0, ucb->base + GPIOLEN(bank)); + writel(0, ucb->base + GPIOAREN(bank)); + writel(0, ucb->base + GPIOAFEN(bank)); + writel(~0, ucb->base + GPIOEDS(bank)); + } + + bcm2708_gpio_irq_init(ucb); + + err = gpiochip_add(&ucb->gc); + +err: + return err; + +} + +static int bcm2708_gpio_remove(struct platform_device *dev) +{ + int err = 0; + struct bcm2708_gpio *ucb = platform_get_drvdata(dev); + + printk(KERN_ERR DRIVER_NAME ": bcm2708_gpio_remove %p\n", dev); + + gpiochip_remove(&ucb->gc); + + platform_set_drvdata(dev, NULL); + kfree(ucb); + + return err; +} + +static struct platform_driver bcm2708_gpio_driver = { + .probe = bcm2708_gpio_probe, + .remove = bcm2708_gpio_remove, + .driver = { + .name = "bcm2708_gpio"}, +}; + +static int __init bcm2708_gpio_init(void) +{ + return platform_driver_register(&bcm2708_gpio_driver); +} + +static void __exit bcm2708_gpio_exit(void) +{ + platform_driver_unregister(&bcm2708_gpio_driver); +} + +module_init(bcm2708_gpio_init); +module_exit(bcm2708_gpio_exit); + +MODULE_DESCRIPTION("Broadcom BCM2708 GPIO driver"); +MODULE_LICENSE("GPL"); --- linux-raspi2-4.2.0.orig/arch/arm/mach-bcm2709/bcm2709.c +++ linux-raspi2-4.2.0/arch/arm/mach-bcm2709/bcm2709.c @@ -0,0 +1,1332 @@ +/* + * linux/arch/arm/mach-bcm2709/bcm2709.c + * + * Copyright (C) 2010 Broadcom + * + * 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 +#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 +#include +#include +#include + +#include +#include +#include +#include +#include + +#include +#include + +#include + +#include "bcm2709.h" +#include "armctrl.h" + +#ifdef CONFIG_BCM_VC_CMA +#include +#endif + +//#define SYSTEM_TIMER + +/* Effectively we have an IOMMU (ARM<->VideoCore map) that is set up to + * give us IO access only to 64Mbytes of physical memory (26 bits). We could + * represent this window by setting our dmamasks to 26 bits but, in fact + * we're not going to use addresses outside this range (they're not in real + * memory) so we don't bother. + * + * In the future we might include code to use this IOMMU to remap other + * physical addresses onto VideoCore memory then the use of 32-bits would be + * more legitimate. + */ +#define DMA_MASK_BITS_COMMON 32 + +// use GPIO 4 for the one-wire GPIO pin, if enabled +#define W1_GPIO 4 +// ensure one-wire GPIO pullup is disabled by default +#define W1_PULLUP -1 + +/* command line parameters */ +static unsigned boardrev, serial; +static unsigned uart_clock = UART0_CLOCK; +static unsigned disk_led_gpio = 16; +static unsigned disk_led_active_low = 1; +static unsigned reboot_part = 0; +static unsigned w1_gpio_pin = W1_GPIO; +static unsigned w1_gpio_pullup = W1_PULLUP; +static bool vc_i2c_override = false; +static int pps_gpio_pin = -1; +unsigned force_core; + +static unsigned use_dt = 0; + +static void __init bcm2709_init_led(void); + +void __init bcm2709_init_irq(void) +{ + armctrl_init(__io_address(ARMCTRL_IC_BASE), 0, 0, 0); +} + +static struct map_desc bcm2709_io_desc[] __initdata = { + { + .virtual = IO_ADDRESS(ARMCTRL_BASE), + .pfn = __phys_to_pfn(ARMCTRL_BASE), + .length = SZ_4K, + .type = MT_DEVICE}, + { + .virtual = IO_ADDRESS(UART0_BASE), + .pfn = __phys_to_pfn(UART0_BASE), + .length = SZ_4K, + .type = MT_DEVICE}, + { + .virtual = IO_ADDRESS(UART1_BASE), + .pfn = __phys_to_pfn(UART1_BASE), + .length = SZ_4K, + .type = MT_DEVICE}, + { + .virtual = IO_ADDRESS(DMA_BASE), + .pfn = __phys_to_pfn(DMA_BASE), + .length = SZ_4K, + .type = MT_DEVICE}, + { + .virtual = IO_ADDRESS(MCORE_BASE), + .pfn = __phys_to_pfn(MCORE_BASE), + .length = SZ_4K, + .type = MT_DEVICE}, + { + .virtual = IO_ADDRESS(ST_BASE), + .pfn = __phys_to_pfn(ST_BASE), + .length = SZ_4K, + .type = MT_DEVICE}, + { + .virtual = IO_ADDRESS(USB_BASE), + .pfn = __phys_to_pfn(USB_BASE), + .length = SZ_128K, + .type = MT_DEVICE}, + { + .virtual = IO_ADDRESS(PM_BASE), + .pfn = __phys_to_pfn(PM_BASE), + .length = SZ_4K, + .type = MT_DEVICE}, + { + .virtual = IO_ADDRESS(GPIO_BASE), + .pfn = __phys_to_pfn(GPIO_BASE), + .length = SZ_4K, + .type = MT_DEVICE}, + { + .virtual = IO_ADDRESS(ARM_LOCAL_BASE), + .pfn = __phys_to_pfn(ARM_LOCAL_BASE), + .length = SZ_4K, + .type = MT_DEVICE}, +}; + +void __init bcm2709_map_io(void) +{ + iotable_init(bcm2709_io_desc, ARRAY_SIZE(bcm2709_io_desc)); +} + +#ifdef SYSTEM_TIMER + +/* The STC is a free running counter that increments at the rate of 1MHz */ +#define STC_FREQ_HZ 1000000 + +static inline uint32_t timer_read(void) +{ + /* STC: a free running counter that increments at the rate of 1MHz */ + return readl(__io_address(ST_BASE + 0x04)); +} + +static unsigned long bcm2709_read_current_timer(void) +{ + return timer_read(); +} + +static u64 notrace bcm2709_read_sched_clock(void) +{ + return timer_read(); +} + +static cycle_t clksrc_read(struct clocksource *cs) +{ + return timer_read(); +} + +static struct clocksource clocksource_stc = { + .name = "stc", + .rating = 300, + .read = clksrc_read, + .mask = CLOCKSOURCE_MASK(32), + .flags = CLOCK_SOURCE_IS_CONTINUOUS, +}; + +unsigned long frc_clock_ticks32(void) +{ + return timer_read(); +} + +static void __init bcm2709_clocksource_init(void) +{ + if (clocksource_register_hz(&clocksource_stc, STC_FREQ_HZ)) { + printk(KERN_ERR "timer: failed to initialize clock " + "source %s\n", clocksource_stc.name); + } +} +#endif + +struct clk __init *bcm2709_clk_register(const char *name, unsigned long fixed_rate) +{ + struct clk *clk; + + clk = clk_register_fixed_rate(NULL, name, NULL, CLK_IS_ROOT, + fixed_rate); + if (IS_ERR(clk)) + pr_err("%s not registered\n", name); + + return clk; +} + +void __init bcm2709_register_clkdev(struct clk *clk, const char *name) +{ + int ret; + + ret = clk_register_clkdev(clk, NULL, name); + if (ret) + pr_err("%s alias not registered\n", name); +} + +void __init bcm2709_init_clocks(void) +{ + struct clk *clk; + + clk = bcm2709_clk_register("uart0_clk", uart_clock); + bcm2709_register_clkdev(clk, "dev:f1"); + + clk = bcm2709_clk_register("sdhost_clk", 250000000); + bcm2709_register_clkdev(clk, "mmc-bcm2835.0"); + bcm2709_register_clkdev(clk, "bcm2708_spi.0"); + bcm2709_register_clkdev(clk, "bcm2708_i2c.0"); + bcm2709_register_clkdev(clk, "bcm2708_i2c.1"); +} + +#define UART0_IRQ { IRQ_UART, 0 /*NO_IRQ*/ } +#define UART0_DMA { 15, 14 } + +AMBA_DEVICE(uart0, "dev:f1", UART0, NULL); + +static struct amba_device *amba_devs[] __initdata = { + &uart0_device, +}; + +static struct resource bcm2708_dmaengine_resources[] = { + { + .start = DMA_BASE, + .end = DMA_BASE + SZ_4K - 1, + .flags = IORESOURCE_MEM, + }, { + .start = IRQ_DMA0, + .end = IRQ_DMA0, + .flags = IORESOURCE_IRQ, + }, { + .start = IRQ_DMA1, + .end = IRQ_DMA1, + .flags = IORESOURCE_IRQ, + }, { + .start = IRQ_DMA2, + .end = IRQ_DMA2, + .flags = IORESOURCE_IRQ, + }, { + .start = IRQ_DMA3, + .end = IRQ_DMA3, + .flags = IORESOURCE_IRQ, + }, { + .start = IRQ_DMA4, + .end = IRQ_DMA4, + .flags = IORESOURCE_IRQ, + }, { + .start = IRQ_DMA5, + .end = IRQ_DMA5, + .flags = IORESOURCE_IRQ, + }, { + .start = IRQ_DMA6, + .end = IRQ_DMA6, + .flags = IORESOURCE_IRQ, + }, { + .start = IRQ_DMA7, + .end = IRQ_DMA7, + .flags = IORESOURCE_IRQ, + }, { + .start = IRQ_DMA8, + .end = IRQ_DMA8, + .flags = IORESOURCE_IRQ, + }, { + .start = IRQ_DMA9, + .end = IRQ_DMA9, + .flags = IORESOURCE_IRQ, + }, { + .start = IRQ_DMA10, + .end = IRQ_DMA10, + .flags = IORESOURCE_IRQ, + }, { + .start = IRQ_DMA11, + .end = IRQ_DMA11, + .flags = IORESOURCE_IRQ, + }, { + .start = IRQ_DMA12, + .end = IRQ_DMA12, + .flags = IORESOURCE_IRQ, + } +}; + +static struct platform_device bcm2708_dmaengine_device = { + .name = "bcm2708-dmaengine", + .id = -1, + .resource = bcm2708_dmaengine_resources, + .num_resources = ARRAY_SIZE(bcm2708_dmaengine_resources), +}; + +#if defined(CONFIG_W1_MASTER_GPIO) || defined(CONFIG_W1_MASTER_GPIO_MODULE) +static struct w1_gpio_platform_data w1_gpio_pdata = { + .pin = W1_GPIO, + .ext_pullup_enable_pin = W1_PULLUP, + .is_open_drain = 0, +}; + +static struct platform_device w1_device = { + .name = "w1-gpio", + .id = -1, + .dev.platform_data = &w1_gpio_pdata, +}; +#endif + +static struct pps_gpio_platform_data pps_gpio_info = { + .assert_falling_edge = false, + .capture_clear = false, + .gpio_pin = -1, + .gpio_label = "PPS", +}; + +static struct platform_device pps_gpio_device = { + .name = "pps-gpio", + .id = PLATFORM_DEVID_NONE, + .dev.platform_data = &pps_gpio_info, +}; + +static u64 fb_dmamask = DMA_BIT_MASK(DMA_MASK_BITS_COMMON); + +static struct platform_device bcm2708_fb_device = { + .name = "bcm2708_fb", + .id = -1, /* only one bcm2708_fb */ + .resource = NULL, + .num_resources = 0, + .dev = { + .dma_mask = &fb_dmamask, + .coherent_dma_mask = DMA_BIT_MASK(DMA_MASK_BITS_COMMON), + }, +}; + +static struct resource bcm2708_usb_resources[] = { + [0] = { + .start = USB_BASE, + .end = USB_BASE + SZ_128K - 1, + .flags = IORESOURCE_MEM, + }, + [1] = { + .start = MPHI_BASE, + .end = MPHI_BASE + SZ_4K - 1, + .flags = IORESOURCE_MEM, + }, + [2] = { + .start = IRQ_HOSTPORT, + .end = IRQ_HOSTPORT, + .flags = IORESOURCE_IRQ, + }, + [3] = { + .start = IRQ_USB, + .end = IRQ_USB, + .flags = IORESOURCE_IRQ, + }, + [4] = { + .start = ARM_LOCAL_BASE, + .end = ARM_LOCAL_BASE + SZ_4K - 1, + .flags = IORESOURCE_MEM, + }, + [5] = { + .start = IRQ_ARM_LOCAL_MAILBOX1, + .end = IRQ_ARM_LOCAL_MAILBOX1, + .flags = IORESOURCE_IRQ + }, +}; + + +static u64 usb_dmamask = DMA_BIT_MASK(DMA_MASK_BITS_COMMON); + +static struct platform_device bcm2708_usb_device = { + .name = "bcm2708_usb", + .id = -1, /* only one bcm2708_usb */ + .resource = bcm2708_usb_resources, + .num_resources = ARRAY_SIZE(bcm2708_usb_resources), + .dev = { + .dma_mask = &usb_dmamask, + .coherent_dma_mask = DMA_BIT_MASK(DMA_MASK_BITS_COMMON), + }, +}; + +static struct resource bcm2708_vcio_resources[] = { + { + .start = ARMCTRL_0_MAIL0_BASE, + .end = ARMCTRL_0_MAIL0_BASE + SZ_64 - 1, + .flags = IORESOURCE_MEM, + }, { + .start = IRQ_ARM_MAILBOX, + .end = IRQ_ARM_MAILBOX, + .flags = IORESOURCE_IRQ, + }, +}; + +static u64 vcio_dmamask = DMA_BIT_MASK(DMA_MASK_BITS_COMMON); + +static struct platform_device bcm2708_vcio_device = { + .name = "bcm2835-mbox", + .id = -1, /* only one VideoCore I/O area */ + .resource = bcm2708_vcio_resources, + .num_resources = ARRAY_SIZE(bcm2708_vcio_resources), + .dev = { + .dma_mask = &vcio_dmamask, + .coherent_dma_mask = DMA_BIT_MASK(DMA_MASK_BITS_COMMON), + }, +}; + +static u64 rpifw_dmamask = DMA_BIT_MASK(DMA_MASK_BITS_COMMON); + +static struct platform_device bcm2708_rpifw_device = { + .name = "raspberrypi-firmware", + .dev = { + .dma_mask = &rpifw_dmamask, + .coherent_dma_mask = DMA_BIT_MASK(DMA_MASK_BITS_COMMON), + }, +}; + +static struct resource bcm2708_vchiq_resources[] = { + { + .start = ARMCTRL_0_BELL_BASE, + .end = ARMCTRL_0_BELL_BASE + 16, + .flags = IORESOURCE_MEM, + }, { + .start = IRQ_ARM_DOORBELL_0, + .end = IRQ_ARM_DOORBELL_0, + .flags = IORESOURCE_IRQ, + }, +}; + +static u64 vchiq_dmamask = DMA_BIT_MASK(DMA_MASK_BITS_COMMON); + +static struct platform_device bcm2708_vchiq_device = { + .name = "bcm2835_vchiq", + .id = -1, + .resource = bcm2708_vchiq_resources, + .num_resources = ARRAY_SIZE(bcm2708_vchiq_resources), + .dev = { + .dma_mask = &vchiq_dmamask, + .coherent_dma_mask = DMA_BIT_MASK(DMA_MASK_BITS_COMMON), + }, +}; + +#ifdef CONFIG_BCM2708_GPIO +#define BCM_GPIO_DRIVER_NAME "bcm2708_gpio" + +static struct resource bcm2708_gpio_resources[] = { + [0] = { /* general purpose I/O */ + .start = GPIO_BASE, + .end = GPIO_BASE + SZ_4K - 1, + .flags = IORESOURCE_MEM, + }, +}; + +static u64 gpio_dmamask = DMA_BIT_MASK(DMA_MASK_BITS_COMMON); + +static struct platform_device bcm2708_gpio_device = { + .name = BCM_GPIO_DRIVER_NAME, + .id = -1, /* only one VideoCore I/O area */ + .resource = bcm2708_gpio_resources, + .num_resources = ARRAY_SIZE(bcm2708_gpio_resources), + .dev = { + .dma_mask = &gpio_dmamask, + .coherent_dma_mask = DMA_BIT_MASK(DMA_MASK_BITS_COMMON), + }, +}; +#endif + +#ifdef CONFIG_MMC_BCM2835 /* Arasan emmc SD (new) */ +static struct resource bcm2835_emmc_resources[] = { + [0] = { + .start = EMMC_BASE, + .end = EMMC_BASE + SZ_256 - 1, /* we only need this area */ + /* the memory map actually makes SZ_4K available */ + .flags = IORESOURCE_MEM, + }, + [1] = { + .start = IRQ_ARASANSDIO, + .end = IRQ_ARASANSDIO, + .flags = IORESOURCE_IRQ, + }, +}; + +static u64 bcm2835_emmc_dmamask = 0xffffffffUL; + +struct platform_device bcm2835_emmc_device = { + .name = "mmc-bcm2835", + .id = 0, + .num_resources = ARRAY_SIZE(bcm2835_emmc_resources), + .resource = bcm2835_emmc_resources, + .dev = { + .dma_mask = &bcm2835_emmc_dmamask, + .coherent_dma_mask = 0xffffffffUL}, +}; +#endif /* CONFIG_MMC_BCM2835 */ + +static struct platform_device bcm2708_alsa_devices[] = { + [0] = { + .name = "bcm2835_AUD0", + .id = 0, /* first audio device */ + .resource = 0, + .num_resources = 0, + }, + [1] = { + .name = "bcm2835_AUD1", + .id = 1, /* second audio device */ + .resource = 0, + .num_resources = 0, + }, + [2] = { + .name = "bcm2835_AUD2", + .id = 2, /* third audio device */ + .resource = 0, + .num_resources = 0, + }, + [3] = { + .name = "bcm2835_AUD3", + .id = 3, /* forth audio device */ + .resource = 0, + .num_resources = 0, + }, + [4] = { + .name = "bcm2835_AUD4", + .id = 4, /* fifth audio device */ + .resource = 0, + .num_resources = 0, + }, + [5] = { + .name = "bcm2835_AUD5", + .id = 5, /* sixth audio device */ + .resource = 0, + .num_resources = 0, + }, + [6] = { + .name = "bcm2835_AUD6", + .id = 6, /* seventh audio device */ + .resource = 0, + .num_resources = 0, + }, + [7] = { + .name = "bcm2835_AUD7", + .id = 7, /* eighth audio device */ + .resource = 0, + .num_resources = 0, + }, +}; + +static struct resource bcm2708_spi_resources[] = { + { + .start = SPI0_BASE, + .end = SPI0_BASE + SZ_256 - 1, + .flags = IORESOURCE_MEM, + }, { + .start = IRQ_SPI, + .end = IRQ_SPI, + .flags = IORESOURCE_IRQ, + } +}; + + +static u64 bcm2708_spi_dmamask = DMA_BIT_MASK(DMA_MASK_BITS_COMMON); +static struct platform_device bcm2708_spi_device = { + .name = "bcm2708_spi", + .id = 0, + .num_resources = ARRAY_SIZE(bcm2708_spi_resources), + .resource = bcm2708_spi_resources, + .dev = { + .dma_mask = &bcm2708_spi_dmamask, + .coherent_dma_mask = DMA_BIT_MASK(DMA_MASK_BITS_COMMON)}, +}; + +#ifdef CONFIG_BCM2708_SPIDEV +static struct spi_board_info bcm2708_spi_devices[] = { +#ifdef CONFIG_SPI_SPIDEV + { + .modalias = "spidev", + .max_speed_hz = 500000, + .bus_num = 0, + .chip_select = 0, + .mode = SPI_MODE_0, + }, { + .modalias = "spidev", + .max_speed_hz = 500000, + .bus_num = 0, + .chip_select = 1, + .mode = SPI_MODE_0, + } +#endif +}; +#endif + +static struct resource bcm2708_bsc0_resources[] = { + { + .start = BSC0_BASE, + .end = BSC0_BASE + SZ_256 - 1, + .flags = IORESOURCE_MEM, + }, { + .start = INTERRUPT_I2C, + .end = INTERRUPT_I2C, + .flags = IORESOURCE_IRQ, + } +}; + +static struct platform_device bcm2708_bsc0_device = { + .name = "bcm2708_i2c", + .id = 0, + .num_resources = ARRAY_SIZE(bcm2708_bsc0_resources), + .resource = bcm2708_bsc0_resources, +}; + + +static struct resource bcm2708_bsc1_resources[] = { + { + .start = BSC1_BASE, + .end = BSC1_BASE + SZ_256 - 1, + .flags = IORESOURCE_MEM, + }, { + .start = INTERRUPT_I2C, + .end = INTERRUPT_I2C, + .flags = IORESOURCE_IRQ, + } +}; + +static struct platform_device bcm2708_bsc1_device = { + .name = "bcm2708_i2c", + .id = 1, + .num_resources = ARRAY_SIZE(bcm2708_bsc1_resources), + .resource = bcm2708_bsc1_resources, +}; + +static struct platform_device bcm2835_thermal_device = { + .name = "bcm2835_thermal", +}; + +#if defined(CONFIG_SND_BCM2708_SOC_I2S) || defined(CONFIG_SND_BCM2708_SOC_I2S_MODULE) +static struct resource bcm2708_i2s_resources[] = { + { + .start = I2S_BASE, + .end = I2S_BASE + 0x20, + .flags = IORESOURCE_MEM, + }, + { + .start = PCM_CLOCK_BASE, + .end = PCM_CLOCK_BASE + 0x02, + .flags = IORESOURCE_MEM, + } +}; + +static struct platform_device bcm2708_i2s_device = { + .name = "bcm2708-i2s", + .id = 0, + .num_resources = ARRAY_SIZE(bcm2708_i2s_resources), + .resource = bcm2708_i2s_resources, +}; +#endif + +#if defined(CONFIG_SND_BCM2708_SOC_HIFIBERRY_DAC) || defined(CONFIG_SND_BCM2708_SOC_HIFIBERRY_DAC_MODULE) +static struct platform_device snd_hifiberry_dac_device = { + .name = "snd-hifiberry-dac", + .id = 0, + .num_resources = 0, +}; + +static struct platform_device snd_pcm5102a_codec_device = { + .name = "pcm5102a-codec", + .id = -1, + .num_resources = 0, +}; +#endif + +#if defined(CONFIG_SND_BCM2708_SOC_HIFIBERRY_DACPLUS) || defined(CONFIG_SND_BCM2708_SOC_HIFIBERRY_DACPLUS_MODULE) +static struct platform_device snd_rpi_hifiberry_dacplus_device = { + .name = "snd-rpi-hifiberry-dacplus", + .id = 0, + .num_resources = 0, +}; + +static struct i2c_board_info __initdata snd_pcm512x_hbdacplus_i2c_devices[] = { + { + I2C_BOARD_INFO("pcm5122", 0x4d) + }, +}; +#endif + +#if defined(CONFIG_SND_BCM2708_SOC_HIFIBERRY_DIGI) || defined(CONFIG_SND_BCM2708_SOC_HIFIBERRY_DIGI_MODULE) +static struct platform_device snd_hifiberry_digi_device = { + .name = "snd-hifiberry-digi", + .id = 0, + .num_resources = 0, +}; + +static struct i2c_board_info __initdata snd_wm8804_i2c_devices[] = { + { + I2C_BOARD_INFO("wm8804", 0x3b) + }, +}; + +#endif + +#if defined(CONFIG_SND_BCM2708_SOC_HIFIBERRY_AMP) || defined(CONFIG_SND_BCM2708_SOC_HIFIBERRY_AMP_MODULE) +static struct platform_device snd_hifiberry_amp_device = { + .name = "snd-hifiberry-amp", + .id = 0, + .num_resources = 0, +}; + +static struct i2c_board_info __initdata snd_tas5713_i2c_devices[] = { + { + I2C_BOARD_INFO("tas5713", 0x1b) + }, +}; +#endif + +#if defined(CONFIG_SND_BCM2708_SOC_RPI_DAC) || defined(CONFIG_SND_BCM2708_SOC_RPI_DAC_MODULE) +static struct platform_device snd_rpi_dac_device = { + .name = "snd-rpi-dac", + .id = 0, + .num_resources = 0, +}; + +static struct platform_device snd_pcm1794a_codec_device = { + .name = "pcm1794a-codec", + .id = -1, + .num_resources = 0, +}; +#endif + + +#if defined(CONFIG_SND_BCM2708_SOC_IQAUDIO_DAC) || defined(CONFIG_SND_BCM2708_SOC_IQAUDIO_DAC_MODULE) +static struct platform_device snd_rpi_iqaudio_dac_device = { + .name = "snd-rpi-iqaudio-dac", + .id = 0, + .num_resources = 0, +}; + +// Use the actual device name rather than generic driver name +static struct i2c_board_info __initdata snd_pcm512x_i2c_devices[] = { + { + I2C_BOARD_INFO("pcm5122", 0x4c) + }, +}; +#endif + +int __init bcm_register_device(struct platform_device *pdev) +{ + int ret; + + ret = platform_device_register(pdev); + if (ret) + pr_debug("Unable to register platform device '%s': %d\n", + pdev->name, ret); + + return ret; +} + +/* + * Use these macros for platform and i2c devices that are present in the + * Device Tree. This way the devices are only added on non-DT systems. + */ +#define bcm_register_device_dt(pdev) \ + if (!use_dt) bcm_register_device(pdev) + +#define i2c_register_board_info_dt(busnum, info, n) \ + if (!use_dt) i2c_register_board_info(busnum, info, n) + +int calc_rsts(int partition) +{ + return PM_PASSWORD | + ((partition & (1 << 0)) << 0) | + ((partition & (1 << 1)) << 1) | + ((partition & (1 << 2)) << 2) | + ((partition & (1 << 3)) << 3) | + ((partition & (1 << 4)) << 4) | + ((partition & (1 << 5)) << 5); +} + +static void bcm2709_restart(enum reboot_mode mode, const char *cmd) +{ + extern char bcm2708_reboot_mode; + uint32_t pm_rstc, pm_wdog; + uint32_t timeout = 10; + uint32_t pm_rsts = 0; + + if(bcm2708_reboot_mode == 'q') + { + // NOOBS < 1.3 booting with reboot=q + pm_rsts = readl(__io_address(PM_RSTS)); + pm_rsts = PM_PASSWORD | pm_rsts | PM_RSTS_HADWRQ_SET; + } + else if(bcm2708_reboot_mode == 'p') + { + // NOOBS < 1.3 halting + pm_rsts = readl(__io_address(PM_RSTS)); + pm_rsts = PM_PASSWORD | pm_rsts | PM_RSTS_HADWRH_SET; + } + else + { + pm_rsts = calc_rsts(reboot_part); + } + + writel(pm_rsts, __io_address(PM_RSTS)); + + /* Setup watchdog for reset */ + pm_rstc = readl(__io_address(PM_RSTC)); + + pm_wdog = PM_PASSWORD | (timeout & PM_WDOG_TIME_SET); // watchdog timer = timer clock / 16; need password (31:16) + value (11:0) + pm_rstc = PM_PASSWORD | (pm_rstc & PM_RSTC_WRCFG_CLR) | PM_RSTC_WRCFG_FULL_RESET; + + writel(pm_wdog, __io_address(PM_WDOG)); + writel(pm_rstc, __io_address(PM_RSTC)); +} + +/* We can't really power off, but if we do the normal reset scheme, and indicate to bootcode.bin not to reboot, then most of the chip will be powered off */ +static void bcm2709_power_off(void) +{ + extern char bcm2708_reboot_mode; + if(bcm2708_reboot_mode == 'q') + { + // NOOBS < v1.3 + bcm2709_restart('p', ""); + } + else + { + /* partition 63 is special code for HALT the bootloader knows not to boot*/ + reboot_part = 63; + /* continue with normal reset mechanism */ + bcm2709_restart(0, ""); + } +} + +static void __init bcm2709_init_uart1(void) +{ + struct device_node *np; + + np = of_find_compatible_node(NULL, NULL, "brcm,bcm2835-aux-uart"); + if (of_device_is_available(np)) { + pr_info("bcm2709: Mini UART enabled\n"); + writel(1, __io_address(UART1_BASE + 0x4)); + } +} + +#ifdef CONFIG_OF +static void __init bcm2709_dt_init(void) +{ + int ret; + + of_clk_init(NULL); + ret = of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL); + if (ret) { + pr_err("of_platform_populate failed: %d\n", ret); + /* Proceed as if CONFIG_OF was not defined */ + } else { + use_dt = 1; + } +} +#else +static void __init bcm2709_dt_init(void) { } +#endif /* CONFIG_OF */ + +void __init bcm2709_init(void) +{ + int i; + +#if defined(CONFIG_BCM_VC_CMA) + vc_cma_early_init(); +#endif + printk("bcm2709.uart_clock = %d\n", uart_clock); + pm_power_off = bcm2709_power_off; + + bcm2709_init_clocks(); + bcm2709_dt_init(); + + bcm_register_device_dt(&bcm2708_dmaengine_device); + bcm_register_device_dt(&bcm2708_vcio_device); + bcm_register_device_dt(&bcm2708_rpifw_device); + bcm_register_device_dt(&bcm2708_vchiq_device); +#ifdef CONFIG_BCM2708_GPIO + bcm_register_device_dt(&bcm2708_gpio_device); +#endif + +#if defined(CONFIG_PPS_CLIENT_GPIO) || defined(CONFIG_PPS_CLIENT_GPIO_MODULE) + if (!use_dt && (pps_gpio_pin >= 0)) { + pr_info("bcm2709: GPIO %d setup as pps-gpio device\n", pps_gpio_pin); + pps_gpio_info.gpio_pin = pps_gpio_pin; + pps_gpio_device.id = pps_gpio_pin; + bcm_register_device(&pps_gpio_device); + } +#endif + +#if defined(CONFIG_W1_MASTER_GPIO) || defined(CONFIG_W1_MASTER_GPIO_MODULE) + w1_gpio_pdata.pin = w1_gpio_pin; + w1_gpio_pdata.ext_pullup_enable_pin = w1_gpio_pullup; + bcm_register_device_dt(&w1_device); +#endif + bcm_register_device_dt(&bcm2708_fb_device); + bcm_register_device_dt(&bcm2708_usb_device); + +#ifdef CONFIG_MMC_BCM2835 + bcm_register_device_dt(&bcm2835_emmc_device); +#endif + bcm2709_init_led(); + bcm2709_init_uart1(); + + /* Only create the platform devices for the ALSA driver in the + absence of an enabled "audio" DT node */ + if (!use_dt || + !of_device_is_available(of_find_node_by_path("/audio"))) { + for (i = 0; i < ARRAY_SIZE(bcm2708_alsa_devices); i++) + bcm_register_device(&bcm2708_alsa_devices[i]); + } + + bcm_register_device_dt(&bcm2708_spi_device); + + if (vc_i2c_override) { + bcm_register_device_dt(&bcm2708_bsc0_device); + bcm_register_device_dt(&bcm2708_bsc1_device); + } else if ((boardrev & 0xffffff) == 0x2 || (boardrev & 0xffffff) == 0x3) { + bcm_register_device_dt(&bcm2708_bsc0_device); + } else { + bcm_register_device_dt(&bcm2708_bsc1_device); + } + + bcm_register_device_dt(&bcm2835_thermal_device); + +#if defined(CONFIG_SND_BCM2708_SOC_I2S) || defined(CONFIG_SND_BCM2708_SOC_I2S_MODULE) + bcm_register_device_dt(&bcm2708_i2s_device); +#endif + +#if defined(CONFIG_SND_BCM2708_SOC_HIFIBERRY_DAC) || defined(CONFIG_SND_BCM2708_SOC_HIFIBERRY_DAC_MODULE) + bcm_register_device_dt(&snd_hifiberry_dac_device); + bcm_register_device_dt(&snd_pcm5102a_codec_device); +#endif + +#if defined(CONFIG_SND_BCM2708_SOC_HIFIBERRY_DACPLUS) || defined(CONFIG_SND_BCM2708_SOC_HIFIBERRY_DACPLUS_MODULE) + bcm_register_device_dt(&snd_rpi_hifiberry_dacplus_device); + i2c_register_board_info_dt(1, snd_pcm512x_hbdacplus_i2c_devices, ARRAY_SIZE(snd_pcm512x_hbdacplus_i2c_devices)); +#endif + +#if defined(CONFIG_SND_BCM2708_SOC_HIFIBERRY_DIGI) || defined(CONFIG_SND_BCM2708_SOC_HIFIBERRY_DIGI_MODULE) + bcm_register_device_dt(&snd_hifiberry_digi_device); + i2c_register_board_info_dt(1, snd_wm8804_i2c_devices, ARRAY_SIZE(snd_wm8804_i2c_devices)); +#endif + +#if defined(CONFIG_SND_BCM2708_SOC_HIFIBERRY_AMP) || defined(CONFIG_SND_BCM2708_SOC_HIFIBERRY_AMP_MODULE) + bcm_register_device_dt(&snd_hifiberry_amp_device); + i2c_register_board_info_dt(1, snd_tas5713_i2c_devices, ARRAY_SIZE(snd_tas5713_i2c_devices)); +#endif + +#if defined(CONFIG_SND_BCM2708_SOC_RPI_DAC) || defined(CONFIG_SND_BCM2708_SOC_RPI_DAC_MODULE) + bcm_register_device_dt(&snd_rpi_dac_device); + bcm_register_device_dt(&snd_pcm1794a_codec_device); +#endif + +#if defined(CONFIG_SND_BCM2708_SOC_IQAUDIO_DAC) || defined(CONFIG_SND_BCM2708_SOC_IQAUDIO_DAC_MODULE) + bcm_register_device_dt(&snd_rpi_iqaudio_dac_device); + i2c_register_board_info_dt(1, snd_pcm512x_i2c_devices, ARRAY_SIZE(snd_pcm512x_i2c_devices)); +#endif + + if (!use_dt) { + for (i = 0; i < ARRAY_SIZE(amba_devs); i++) { + struct amba_device *d = amba_devs[i]; + amba_device_register(d, &iomem_resource); + } + } + system_rev = boardrev; + system_serial_low = serial; + +#ifdef CONFIG_BCM2708_SPIDEV + if (!use_dt) + spi_register_board_info(bcm2708_spi_devices, + ARRAY_SIZE(bcm2708_spi_devices)); +#endif +} + +#ifdef SYSTEM_TIMER +static void timer_set_mode(enum clock_event_mode mode, + struct clock_event_device *clk) +{ + switch (mode) { + case CLOCK_EVT_MODE_ONESHOT: /* Leave the timer disabled, .set_next_event will enable it */ + case CLOCK_EVT_MODE_SHUTDOWN: + break; + case CLOCK_EVT_MODE_PERIODIC: + + case CLOCK_EVT_MODE_UNUSED: + case CLOCK_EVT_MODE_RESUME: + + default: + printk(KERN_ERR "timer_set_mode: unhandled mode:%d\n", + (int)mode); + break; + } + +} + +static int timer_set_next_event(unsigned long cycles, + struct clock_event_device *unused) +{ + unsigned long stc; + do { + stc = readl(__io_address(ST_BASE + 0x04)); + /* We could take a FIQ here, which may push ST above STC3 */ + writel(stc + cycles, __io_address(ST_BASE + 0x18)); + } while ((signed long) cycles >= 0 && + (signed long) (readl(__io_address(ST_BASE + 0x04)) - stc) + >= (signed long) cycles); + return 0; +} + +static struct clock_event_device timer0_clockevent = { + .name = "timer0", + .shift = 32, + .features = CLOCK_EVT_FEAT_ONESHOT, + .set_mode = timer_set_mode, + .set_next_event = timer_set_next_event, +}; + +/* + * IRQ handler for the timer + */ +static irqreturn_t bcm2709_timer_interrupt(int irq, void *dev_id) +{ + struct clock_event_device *evt = &timer0_clockevent; + + writel(1 << 3, __io_address(ST_BASE + 0x00)); /* stcs clear timer int */ + + evt->event_handler(evt); + + return IRQ_HANDLED; +} + +static struct irqaction bcm2709_timer_irq = { + .name = "BCM2709 Timer Tick", + .flags = IRQF_TIMER | IRQF_IRQPOLL, + .handler = bcm2709_timer_interrupt, +}; + +/* + * Set up timer interrupt, and return the current time in seconds. + */ + +static struct delay_timer bcm2709_delay_timer = { + .read_current_timer = bcm2709_read_current_timer, + .freq = STC_FREQ_HZ, +}; + +static void __init bcm2709_timer_init(void) +{ + /* init high res timer */ + bcm2709_clocksource_init(); + + /* + * Make irqs happen for the system timer + */ + setup_irq(IRQ_TIMER3, &bcm2709_timer_irq); + + sched_clock_register(bcm2709_read_sched_clock, 32, STC_FREQ_HZ); + + timer0_clockevent.mult = + div_sc(STC_FREQ_HZ, NSEC_PER_SEC, timer0_clockevent.shift); + timer0_clockevent.max_delta_ns = + clockevent_delta2ns(0xffffffff, &timer0_clockevent); + timer0_clockevent.min_delta_ns = + clockevent_delta2ns(0xf, &timer0_clockevent); + + timer0_clockevent.cpumask = cpumask_of(0); + clockevents_register_device(&timer0_clockevent); + + register_current_timer_delay(&bcm2709_delay_timer); +} + +#else + +static void __init bcm2709_timer_init(void) +{ + extern void dc4_arch_timer_init(void); + // timer control + writel(0, __io_address(ARM_LOCAL_CONTROL)); + // timer pre_scaler + writel(0x80000000, __io_address(ARM_LOCAL_PRESCALER)); // 19.2MHz + //writel(0x06AAAAAB, __io_address(ARM_LOCAL_PRESCALER)); // 1MHz + + if (use_dt) + { + of_clk_init(NULL); + clocksource_of_init(); + } + else + dc4_arch_timer_init(); +} + +#endif + +#if defined(CONFIG_LEDS_GPIO) || defined(CONFIG_LEDS_GPIO_MODULE) +#include + +static struct gpio_led bcm2709_leds[] = { + [0] = { + .gpio = 16, + .name = "led0", + .default_trigger = "mmc0", + .active_low = 1, + }, +}; + +static struct gpio_led_platform_data bcm2709_led_pdata = { + .num_leds = ARRAY_SIZE(bcm2709_leds), + .leds = bcm2709_leds, +}; + +static struct platform_device bcm2709_led_device = { + .name = "leds-gpio", + .id = -1, + .dev = { + .platform_data = &bcm2709_led_pdata, + }, +}; + +static void __init bcm2709_init_led(void) +{ + bcm2709_leds[0].gpio = disk_led_gpio; + bcm2709_leds[0].active_low = disk_led_active_low; + bcm_register_device_dt(&bcm2709_led_device); +} +#else +static inline void bcm2709_init_led(void) +{ +} +#endif + +void __init bcm2709_init_early(void) +{ + /* + * Some devices allocate their coherent buffers from atomic + * context. Increase size of atomic coherent pool to make sure such + * the allocations won't fail. + */ + init_dma_coherent_pool_size(SZ_4M); +} + +static void __init board_reserve(void) +{ +#if defined(CONFIG_BCM_VC_CMA) + vc_cma_reserve(); +#endif +} + + +#ifdef CONFIG_SMP +#include + +#include +#include +#include +int dc4=0; +//void dc4_log(unsigned x) { if (dc4) writel((x), __io_address(ST_BASE+10 + raw_smp_processor_id()*4)); } +void dc4_log_dead(unsigned x) { if (dc4) writel((readl(__io_address(ST_BASE+0x10 + raw_smp_processor_id()*4)) & 0xffff) | ((x)<<16), __io_address(ST_BASE+0x10 + raw_smp_processor_id()*4)); } + +static void bcm2835_send_doorbell(const struct cpumask *mask, unsigned int irq) +{ + int cpu; + /* + * Ensure that stores to Normal memory are visible to the + * other CPUs before issuing the IPI. + */ + dsb(); + + /* Convert our logical CPU mask into a physical one. */ + for_each_cpu(cpu, mask) + { + /* submit softirq */ + writel(1<%x)\n", __FUNCTION__, (unsigned)virt_to_phys((void *)secondary_startup), (unsigned)__io_address(ST_BASE + 0x10)); + printk("[%s] ncores=%d\n", __FUNCTION__, ncores); + + for (i = 0; i < ncores; i++) { + set_cpu_possible(i, true); + /* enable IRQ (not FIQ) */ + writel(0x1, __io_address(ARM_LOCAL_MAILBOX_INT_CONTROL0 + 0x4 * i)); + //writel(0xf, __io_address(ARM_LOCAL_TIMER_INT_CONTROL0 + 0x4 * i)); + } + set_smp_cross_call(bcm2835_send_doorbell); +} + +/* + * for arch/arm/kernel/smp.c:smp_prepare_cpus(unsigned int max_cpus) + */ +void __init bcm2709_smp_prepare_cpus(unsigned int max_cpus) +{ + //void __iomem *scu_base; + + printk("[%s] enter\n", __FUNCTION__); + //scu_base = scu_base_addr(); + //scu_enable(scu_base); +} + +/* + * for linux/arch/arm/kernel/smp.c:secondary_start_kernel(void) + */ +void __init bcm2709_secondary_init(unsigned int cpu) +{ + printk("[%s] enter cpu:%d\n", __FUNCTION__, cpu); + //gic_secondary_init(0); +} + +/* + * for linux/arch/arm/kernel/smp.c:__cpu_up(..) + */ +int __init bcm2709_boot_secondary(unsigned int cpu, struct task_struct *idle) +{ + void secondary_startup(void); + void *mbox_set = __io_address(ARM_LOCAL_MAILBOX3_SET0 + 0x10 * MPIDR_AFFINITY_LEVEL(cpu_logical_map(cpu), 0)); + void *mbox_clr = __io_address(ARM_LOCAL_MAILBOX3_CLR0 + 0x10 * MPIDR_AFFINITY_LEVEL(cpu_logical_map(cpu), 0)); + unsigned secondary_boot = (unsigned)virt_to_phys((void *)secondary_startup); + int timeout=20; + unsigned t = -1; + //printk("[%s] enter cpu:%d (%x->%p) %x\n", __FUNCTION__, cpu, secondary_boot, wake, readl(wake)); + + dsb(); + BUG_ON(readl(mbox_clr) != 0); + writel(secondary_boot, mbox_set); + + while (--timeout > 0) { + t = readl(mbox_clr); + if (t == 0) break; + cpu_relax(); + } + if (timeout==0) + printk("[%s] cpu:%d failed to start (%x)\n", __FUNCTION__, cpu, t); + else + printk("[%s] cpu:%d started (%x) %d\n", __FUNCTION__, cpu, t, timeout); + + return 0; +} + + +struct smp_operations bcm2709_smp_ops __initdata = { + .smp_init_cpus = bcm2709_smp_init_cpus, + .smp_prepare_cpus = bcm2709_smp_prepare_cpus, + .smp_secondary_init = bcm2709_secondary_init, + .smp_boot_secondary = bcm2709_boot_secondary, +}; +#endif + +static const char * const bcm2709_compat[] = { + "brcm,bcm2709", + "brcm,bcm2708", /* Could use bcm2708 in a pinch */ + NULL +}; + +MACHINE_START(BCM2709, "BCM2709") + /* Maintainer: Broadcom Europe Ltd. */ +#ifdef CONFIG_SMP + .smp = smp_ops(bcm2709_smp_ops), +#endif + .map_io = bcm2709_map_io, + .init_irq = bcm2709_init_irq, + .init_time = bcm2709_timer_init, + .init_machine = bcm2709_init, + .init_early = bcm2709_init_early, + .reserve = board_reserve, + .restart = bcm2709_restart, + .dt_compat = bcm2709_compat, +MACHINE_END + +MACHINE_START(BCM2708, "BCM2709") + /* Maintainer: Broadcom Europe Ltd. */ +#ifdef CONFIG_SMP + .smp = smp_ops(bcm2709_smp_ops), +#endif + .map_io = bcm2709_map_io, + .init_irq = bcm2709_init_irq, + .init_time = bcm2709_timer_init, + .init_machine = bcm2709_init, + .init_early = bcm2709_init_early, + .reserve = board_reserve, + .restart = bcm2709_restart, + .dt_compat = bcm2709_compat, +MACHINE_END + +module_param(force_core, uint, 0644); +module_param(boardrev, uint, 0644); +module_param(serial, uint, 0644); +module_param(uart_clock, uint, 0644); +module_param(disk_led_gpio, uint, 0644); +module_param(disk_led_active_low, uint, 0644); +module_param(reboot_part, uint, 0644); +module_param(w1_gpio_pin, uint, 0644); +module_param(w1_gpio_pullup, uint, 0644); +module_param(vc_i2c_override, bool, 0644); +MODULE_PARM_DESC(vc_i2c_override, "Allow the use of VC's I2C peripheral."); +module_param(pps_gpio_pin, int, 0644); +MODULE_PARM_DESC(pps_gpio_pin, "Set GPIO pin to reserve for PPS"); --- linux-raspi2-4.2.0.orig/arch/arm/mach-bcm2709/bcm2709.h +++ linux-raspi2-4.2.0/arch/arm/mach-bcm2709/bcm2709.h @@ -0,0 +1,49 @@ +/* + * linux/arch/arm/mach-bcm2708/bcm2708.h + * + * BCM2708 machine support header + * + * Copyright (C) 2010 Broadcom + * + * 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 + */ + +#ifndef __BCM2708_BCM2708_H +#define __BCM2708_BCM2708_H + +#include + +extern void __init bcm2708_init(void); +extern void __init bcm2708_init_irq(void); +extern void __init bcm2708_map_io(void); +extern struct sys_timer bcm2708_timer; +extern unsigned int mmc_status(struct device *dev); + +#define AMBA_DEVICE(name, busid, base, plat) \ +static struct amba_device name##_device = { \ + .dev = { \ + .coherent_dma_mask = ~0, \ + .init_name = busid, \ + .platform_data = plat, \ + }, \ + .res = { \ + .start = base##_BASE, \ + .end = (base##_BASE) + SZ_4K - 1,\ + .flags = IORESOURCE_MEM, \ + }, \ + .irq = base##_IRQ, \ +} + +#endif --- linux-raspi2-4.2.0.orig/arch/arm/mach-bcm2709/delay.S +++ linux-raspi2-4.2.0/arch/arm/mach-bcm2709/delay.S @@ -0,0 +1,21 @@ +/* + * linux/arch/arm/lib/delay.S + * + * Copyright (C) 1995, 1996 Russell King + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + */ +#include +#include +#include + + .text +.align 3 @ 8 byte alignment seems to be needed to avoid fetching stalls +@ Delay routine +ENTRY(bcm2708_delay) + subs r0, r0, #1 + bhi bcm2708_delay + mov pc, lr +ENDPROC(bcm2708_delay) --- linux-raspi2-4.2.0.orig/arch/arm/mach-bcm2709/include/mach/arm_control.h +++ linux-raspi2-4.2.0/arch/arm/mach-bcm2709/include/mach/arm_control.h @@ -0,0 +1,493 @@ +/* + * linux/arch/arm/mach-bcm2708/arm_control.h + * + * Copyright (C) 2010 Broadcom + * + * 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 + */ + +#ifndef __BCM2708_ARM_CONTROL_H +#define __BCM2708_ARM_CONTROL_H + +/* + * Definitions and addresses for the ARM CONTROL logic + * This file is manually generated. + */ + +#define ARM_BASE 0x7E00B000 + +/* Basic configuration */ +#define ARM_CONTROL0 HW_REGISTER_RW(ARM_BASE+0x000) +#define ARM_C0_SIZ128M 0x00000000 +#define ARM_C0_SIZ256M 0x00000001 +#define ARM_C0_SIZ512M 0x00000002 +#define ARM_C0_SIZ1G 0x00000003 +#define ARM_C0_BRESP0 0x00000000 +#define ARM_C0_BRESP1 0x00000004 +#define ARM_C0_BRESP2 0x00000008 +#define ARM_C0_BOOTHI 0x00000010 +#define ARM_C0_UNUSED05 0x00000020 /* free */ +#define ARM_C0_FULLPERI 0x00000040 +#define ARM_C0_UNUSED78 0x00000180 /* free */ +#define ARM_C0_JTAGMASK 0x00000E00 +#define ARM_C0_JTAGOFF 0x00000000 +#define ARM_C0_JTAGBASH 0x00000800 /* Debug on GPIO off */ +#define ARM_C0_JTAGGPIO 0x00000C00 /* Debug on GPIO on */ +#define ARM_C0_APROTMSK 0x0000F000 +#define ARM_C0_DBG0SYNC 0x00010000 /* VPU0 halt sync */ +#define ARM_C0_DBG1SYNC 0x00020000 /* VPU1 halt sync */ +#define ARM_C0_SWDBGREQ 0x00040000 /* HW debug request */ +#define ARM_C0_PASSHALT 0x00080000 /* ARM halt passed to debugger */ +#define ARM_C0_PRIO_PER 0x00F00000 /* per priority mask */ +#define ARM_C0_PRIO_L2 0x0F000000 +#define ARM_C0_PRIO_UC 0xF0000000 + +#define ARM_C0_APROTPASS 0x0000A000 /* Translate 1:1 */ +#define ARM_C0_APROTUSER 0x00000000 /* Only user mode */ +#define ARM_C0_APROTSYST 0x0000F000 /* Only system mode */ + + +#define ARM_CONTROL1 HW_REGISTER_RW(ARM_BASE+0x440) +#define ARM_C1_TIMER 0x00000001 /* re-route timer IRQ to VC */ +#define ARM_C1_MAIL 0x00000002 /* re-route Mail IRQ to VC */ +#define ARM_C1_BELL0 0x00000004 /* re-route Doorbell 0 to VC */ +#define ARM_C1_BELL1 0x00000008 /* re-route Doorbell 1 to VC */ +#define ARM_C1_PERSON 0x00000100 /* peripherals on */ +#define ARM_C1_REQSTOP 0x00000200 /* ASYNC bridge request stop */ + +#define ARM_STATUS HW_REGISTER_RW(ARM_BASE+0x444) +#define ARM_S_ACKSTOP 0x80000000 /* Bridge stopped */ +#define ARM_S_READPEND 0x000003FF /* pending reads counter */ +#define ARM_S_WRITPEND 0x000FFC00 /* pending writes counter */ + +#define ARM_ERRHALT HW_REGISTER_RW(ARM_BASE+0x448) +#define ARM_EH_PERIBURST 0x00000001 /* Burst write seen on peri bus */ +#define ARM_EH_ILLADDRS1 0x00000002 /* Address bits 25-27 error */ +#define ARM_EH_ILLADDRS2 0x00000004 /* Address bits 31-28 error */ +#define ARM_EH_VPU0HALT 0x00000008 /* VPU0 halted & in debug mode */ +#define ARM_EH_VPU1HALT 0x00000010 /* VPU1 halted & in debug mode */ +#define ARM_EH_ARMHALT 0x00000020 /* ARM in halted debug mode */ + +#define ARM_ID_SECURE HW_REGISTER_RW(ARM_BASE+0x00C) +#define ARM_ID HW_REGISTER_RW(ARM_BASE+0x44C) +#define ARM_IDVAL 0x364D5241 + +/* Translation memory */ +#define ARM_TRANSLATE HW_REGISTER_RW(ARM_BASE+0x100) +/* 32 locations: 0x100.. 0x17F */ +/* 32 spare means we CAN go to 64 pages.... */ + + +/* Interrupts */ +#define ARM_IRQ_PEND0 HW_REGISTER_RW(ARM_BASE+0x200) /* Top IRQ bits */ +#define ARM_I0_TIMER 0x00000001 /* timer IRQ */ +#define ARM_I0_MAIL 0x00000002 /* Mail IRQ */ +#define ARM_I0_BELL0 0x00000004 /* Doorbell 0 */ +#define ARM_I0_BELL1 0x00000008 /* Doorbell 1 */ +#define ARM_I0_BANK1 0x00000100 /* Bank1 IRQ */ +#define ARM_I0_BANK2 0x00000200 /* Bank2 IRQ */ + +#define ARM_IRQ_PEND1 HW_REGISTER_RW(ARM_BASE+0x204) /* All bank1 IRQ bits */ +/* todo: all I1_interrupt sources */ +#define ARM_IRQ_PEND2 HW_REGISTER_RW(ARM_BASE+0x208) /* All bank2 IRQ bits */ +/* todo: all I2_interrupt sources */ + +#define ARM_IRQ_FAST HW_REGISTER_RW(ARM_BASE+0x20C) /* FIQ control */ +#define ARM_IF_INDEX 0x0000007F /* FIQ select */ +#define ARM_IF_ENABLE 0x00000080 /* FIQ enable */ +#define ARM_IF_VCMASK 0x0000003F /* FIQ = (index from VC source) */ +#define ARM_IF_TIMER 0x00000040 /* FIQ = ARM timer */ +#define ARM_IF_MAIL 0x00000041 /* FIQ = ARM Mail */ +#define ARM_IF_BELL0 0x00000042 /* FIQ = ARM Doorbell 0 */ +#define ARM_IF_BELL1 0x00000043 /* FIQ = ARM Doorbell 1 */ +#define ARM_IF_VP0HALT 0x00000044 /* FIQ = VPU0 Halt seen */ +#define ARM_IF_VP1HALT 0x00000045 /* FIQ = VPU1 Halt seen */ +#define ARM_IF_ILLEGAL 0x00000046 /* FIQ = Illegal access seen */ + +#define ARM_IRQ_ENBL1 HW_REGISTER_RW(ARM_BASE+0x210) /* Bank1 enable bits */ +#define ARM_IRQ_ENBL2 HW_REGISTER_RW(ARM_BASE+0x214) /* Bank2 enable bits */ +#define ARM_IRQ_ENBL3 HW_REGISTER_RW(ARM_BASE+0x218) /* ARM irqs enable bits */ +#define ARM_IRQ_DIBL1 HW_REGISTER_RW(ARM_BASE+0x21C) /* Bank1 disable bits */ +#define ARM_IRQ_DIBL2 HW_REGISTER_RW(ARM_BASE+0x220) /* Bank2 disable bits */ +#define ARM_IRQ_DIBL3 HW_REGISTER_RW(ARM_BASE+0x224) /* ARM irqs disable bits */ +#define ARM_IE_TIMER 0x00000001 /* Timer IRQ */ +#define ARM_IE_MAIL 0x00000002 /* Mail IRQ */ +#define ARM_IE_BELL0 0x00000004 /* Doorbell 0 */ +#define ARM_IE_BELL1 0x00000008 /* Doorbell 1 */ +#define ARM_IE_VP0HALT 0x00000010 /* VPU0 Halt */ +#define ARM_IE_VP1HALT 0x00000020 /* VPU1 Halt */ +#define ARM_IE_ILLEGAL 0x00000040 /* Illegal access seen */ + +/* Timer */ +/* For reg. fields see sp804 spec. */ +#define ARM_T_LOAD HW_REGISTER_RW(ARM_BASE+0x400) +#define ARM_T_VALUE HW_REGISTER_RW(ARM_BASE+0x404) +#define ARM_T_CONTROL HW_REGISTER_RW(ARM_BASE+0x408) +#define ARM_T_IRQCNTL HW_REGISTER_RW(ARM_BASE+0x40C) +#define ARM_T_RAWIRQ HW_REGISTER_RW(ARM_BASE+0x410) +#define ARM_T_MSKIRQ HW_REGISTER_RW(ARM_BASE+0x414) +#define ARM_T_RELOAD HW_REGISTER_RW(ARM_BASE+0x418) +#define ARM_T_PREDIV HW_REGISTER_RW(ARM_BASE+0x41c) +#define ARM_T_FREECNT HW_REGISTER_RW(ARM_BASE+0x420) + +#define TIMER_CTRL_ONESHOT (1 << 0) +#define TIMER_CTRL_32BIT (1 << 1) +#define TIMER_CTRL_DIV1 (0 << 2) +#define TIMER_CTRL_DIV16 (1 << 2) +#define TIMER_CTRL_DIV256 (2 << 2) +#define TIMER_CTRL_IE (1 << 5) +#define TIMER_CTRL_PERIODIC (1 << 6) +#define TIMER_CTRL_ENABLE (1 << 7) +#define TIMER_CTRL_DBGHALT (1 << 8) +#define TIMER_CTRL_ENAFREE (1 << 9) +#define TIMER_CTRL_FREEDIV_SHIFT 16) +#define TIMER_CTRL_FREEDIV_MASK 0xff + +/* Semaphores, Doorbells, Mailboxes */ +#define ARM_SBM_OWN0 (ARM_BASE+0x800) +#define ARM_SBM_OWN1 (ARM_BASE+0x900) +#define ARM_SBM_OWN2 (ARM_BASE+0xA00) +#define ARM_SBM_OWN3 (ARM_BASE+0xB00) + +/* MAILBOXES + * Register flags are common across all + * owner registers. See end of this section + * + * Semaphores, Doorbells, Mailboxes Owner 0 + * + */ + +#define ARM_0_SEMS HW_REGISTER_RW(ARM_SBM_OWN0+0x00) +#define ARM_0_SEM0 HW_REGISTER_RW(ARM_SBM_OWN0+0x00) +#define ARM_0_SEM1 HW_REGISTER_RW(ARM_SBM_OWN0+0x04) +#define ARM_0_SEM2 HW_REGISTER_RW(ARM_SBM_OWN0+0x08) +#define ARM_0_SEM3 HW_REGISTER_RW(ARM_SBM_OWN0+0x0C) +#define ARM_0_SEM4 HW_REGISTER_RW(ARM_SBM_OWN0+0x10) +#define ARM_0_SEM5 HW_REGISTER_RW(ARM_SBM_OWN0+0x14) +#define ARM_0_SEM6 HW_REGISTER_RW(ARM_SBM_OWN0+0x18) +#define ARM_0_SEM7 HW_REGISTER_RW(ARM_SBM_OWN0+0x1C) +#define ARM_0_BELL0 HW_REGISTER_RW(ARM_SBM_OWN0+0x40) +#define ARM_0_BELL1 HW_REGISTER_RW(ARM_SBM_OWN0+0x44) +#define ARM_0_BELL2 HW_REGISTER_RW(ARM_SBM_OWN0+0x48) +#define ARM_0_BELL3 HW_REGISTER_RW(ARM_SBM_OWN0+0x4C) +/* MAILBOX 0 access in Owner 0 area */ +/* Some addresses should ONLY be used by owner 0 */ +#define ARM_0_MAIL0_WRT HW_REGISTER_RW(ARM_SBM_OWN0+0x80) /* .. 0x8C (4 locations) */ +#define ARM_0_MAIL0_RD HW_REGISTER_RW(ARM_SBM_OWN0+0x80) /* .. 0x8C (4 locations) Normal read */ +#define ARM_0_MAIL0_POL HW_REGISTER_RW(ARM_SBM_OWN0+0x90) /* none-pop read */ +#define ARM_0_MAIL0_SND HW_REGISTER_RW(ARM_SBM_OWN0+0x94) /* Sender read (only LS 2 bits) */ +#define ARM_0_MAIL0_STA HW_REGISTER_RW(ARM_SBM_OWN0+0x98) /* Status read */ +#define ARM_0_MAIL0_CNF HW_REGISTER_RW(ARM_SBM_OWN0+0x9C) /* Config read/write */ +/* MAILBOX 1 access in Owner 0 area */ +/* Owner 0 should only WRITE to this mailbox */ +#define ARM_0_MAIL1_WRT HW_REGISTER_RW(ARM_SBM_OWN0+0xA0) /* .. 0xAC (4 locations) */ +/*#define ARM_0_MAIL1_RD HW_REGISTER_RW(ARM_SBM_OWN0+0xA0) */ /* DO NOT USE THIS !!!!! */ +/*#define ARM_0_MAIL1_POL HW_REGISTER_RW(ARM_SBM_OWN0+0xB0) */ /* DO NOT USE THIS !!!!! */ +/*#define ARM_0_MAIL1_SND HW_REGISTER_RW(ARM_SBM_OWN0+0xB4) */ /* DO NOT USE THIS !!!!! */ +#define ARM_0_MAIL1_STA HW_REGISTER_RW(ARM_SBM_OWN0+0xB8) /* Status read */ +/*#define ARM_0_MAIL1_CNF HW_REGISTER_RW(ARM_SBM_OWN0+0xBC) */ /* DO NOT USE THIS !!!!! */ +/* General SEM, BELL, MAIL config/status */ +#define ARM_0_SEMCLRDBG HW_REGISTER_RW(ARM_SBM_OWN0+0xE0) /* semaphore clear/debug register */ +#define ARM_0_BELLCLRDBG HW_REGISTER_RW(ARM_SBM_OWN0+0xE4) /* Doorbells clear/debug register */ +#define ARM_0_ALL_IRQS HW_REGISTER_RW(ARM_SBM_OWN0+0xF8) /* ALL interrupts */ +#define ARM_0_MY_IRQS HW_REGISTER_RW(ARM_SBM_OWN0+0xFC) /* IRQS pending for owner 0 */ + +/* Semaphores, Doorbells, Mailboxes Owner 1 */ +#define ARM_1_SEMS HW_REGISTER_RW(ARM_SBM_OWN1+0x00) +#define ARM_1_SEM0 HW_REGISTER_RW(ARM_SBM_OWN1+0x00) +#define ARM_1_SEM1 HW_REGISTER_RW(ARM_SBM_OWN1+0x04) +#define ARM_1_SEM2 HW_REGISTER_RW(ARM_SBM_OWN1+0x08) +#define ARM_1_SEM3 HW_REGISTER_RW(ARM_SBM_OWN1+0x0C) +#define ARM_1_SEM4 HW_REGISTER_RW(ARM_SBM_OWN1+0x10) +#define ARM_1_SEM5 HW_REGISTER_RW(ARM_SBM_OWN1+0x14) +#define ARM_1_SEM6 HW_REGISTER_RW(ARM_SBM_OWN1+0x18) +#define ARM_1_SEM7 HW_REGISTER_RW(ARM_SBM_OWN1+0x1C) +#define ARM_1_BELL0 HW_REGISTER_RW(ARM_SBM_OWN1+0x40) +#define ARM_1_BELL1 HW_REGISTER_RW(ARM_SBM_OWN1+0x44) +#define ARM_1_BELL2 HW_REGISTER_RW(ARM_SBM_OWN1+0x48) +#define ARM_1_BELL3 HW_REGISTER_RW(ARM_SBM_OWN1+0x4C) +/* MAILBOX 0 access in Owner 0 area */ +/* Owner 1 should only WRITE to this mailbox */ +#define ARM_1_MAIL0_WRT HW_REGISTER_RW(ARM_SBM_OWN1+0x80) /* .. 0x8C (4 locations) */ +/*#define ARM_1_MAIL0_RD HW_REGISTER_RW(ARM_SBM_OWN1+0x80) */ /* DO NOT USE THIS !!!!! */ +/*#define ARM_1_MAIL0_POL HW_REGISTER_RW(ARM_SBM_OWN1+0x90) */ /* DO NOT USE THIS !!!!! */ +/*#define ARM_1_MAIL0_SND HW_REGISTER_RW(ARM_SBM_OWN1+0x94) */ /* DO NOT USE THIS !!!!! */ +#define ARM_1_MAIL0_STA HW_REGISTER_RW(ARM_SBM_OWN1+0x98) /* Status read */ +/*#define ARM_1_MAIL0_CNF HW_REGISTER_RW(ARM_SBM_OWN1+0x9C) */ /* DO NOT USE THIS !!!!! */ +/* MAILBOX 1 access in Owner 0 area */ +#define ARM_1_MAIL1_WRT HW_REGISTER_RW(ARM_SBM_OWN1+0xA0) /* .. 0xAC (4 locations) */ +#define ARM_1_MAIL1_RD HW_REGISTER_RW(ARM_SBM_OWN1+0xA0) /* .. 0xAC (4 locations) Normal read */ +#define ARM_1_MAIL1_POL HW_REGISTER_RW(ARM_SBM_OWN1+0xB0) /* none-pop read */ +#define ARM_1_MAIL1_SND HW_REGISTER_RW(ARM_SBM_OWN1+0xB4) /* Sender read (only LS 2 bits) */ +#define ARM_1_MAIL1_STA HW_REGISTER_RW(ARM_SBM_OWN1+0xB8) /* Status read */ +#define ARM_1_MAIL1_CNF HW_REGISTER_RW(ARM_SBM_OWN1+0xBC) +/* General SEM, BELL, MAIL config/status */ +#define ARM_1_SEMCLRDBG HW_REGISTER_RW(ARM_SBM_OWN1+0xE0) /* semaphore clear/debug register */ +#define ARM_1_BELLCLRDBG HW_REGISTER_RW(ARM_SBM_OWN1+0xE4) /* Doorbells clear/debug register */ +#define ARM_1_MY_IRQS HW_REGISTER_RW(ARM_SBM_OWN1+0xFC) /* IRQS pending for owner 1 */ +#define ARM_1_ALL_IRQS HW_REGISTER_RW(ARM_SBM_OWN1+0xF8) /* ALL interrupts */ + +/* Semaphores, Doorbells, Mailboxes Owner 2 */ +#define ARM_2_SEMS HW_REGISTER_RW(ARM_SBM_OWN2+0x00) +#define ARM_2_SEM0 HW_REGISTER_RW(ARM_SBM_OWN2+0x00) +#define ARM_2_SEM1 HW_REGISTER_RW(ARM_SBM_OWN2+0x04) +#define ARM_2_SEM2 HW_REGISTER_RW(ARM_SBM_OWN2+0x08) +#define ARM_2_SEM3 HW_REGISTER_RW(ARM_SBM_OWN2+0x0C) +#define ARM_2_SEM4 HW_REGISTER_RW(ARM_SBM_OWN2+0x10) +#define ARM_2_SEM5 HW_REGISTER_RW(ARM_SBM_OWN2+0x14) +#define ARM_2_SEM6 HW_REGISTER_RW(ARM_SBM_OWN2+0x18) +#define ARM_2_SEM7 HW_REGISTER_RW(ARM_SBM_OWN2+0x1C) +#define ARM_2_BELL0 HW_REGISTER_RW(ARM_SBM_OWN2+0x40) +#define ARM_2_BELL1 HW_REGISTER_RW(ARM_SBM_OWN2+0x44) +#define ARM_2_BELL2 HW_REGISTER_RW(ARM_SBM_OWN2+0x48) +#define ARM_2_BELL3 HW_REGISTER_RW(ARM_SBM_OWN2+0x4C) +/* MAILBOX 0 access in Owner 2 area */ +/* Owner 2 should only WRITE to this mailbox */ +#define ARM_2_MAIL0_WRT HW_REGISTER_RW(ARM_SBM_OWN2+0x80) /* .. 0x8C (4 locations) */ +/*#define ARM_2_MAIL0_RD HW_REGISTER_RW(ARM_SBM_OWN2+0x80) */ /* DO NOT USE THIS !!!!! */ +/*#define ARM_2_MAIL0_POL HW_REGISTER_RW(ARM_SBM_OWN2+0x90) */ /* DO NOT USE THIS !!!!! */ +/*#define ARM_2_MAIL0_SND HW_REGISTER_RW(ARM_SBM_OWN2+0x94) */ /* DO NOT USE THIS !!!!! */ +#define ARM_2_MAIL0_STA HW_REGISTER_RW(ARM_SBM_OWN2+0x98) /* Status read */ +/*#define ARM_2_MAIL0_CNF HW_REGISTER_RW(ARM_SBM_OWN2+0x9C) */ /* DO NOT USE THIS !!!!! */ +/* MAILBOX 1 access in Owner 2 area */ +/* Owner 2 should only WRITE to this mailbox */ +#define ARM_2_MAIL1_WRT HW_REGISTER_RW(ARM_SBM_OWN2+0xA0) /* .. 0xAC (4 locations) */ +/*#define ARM_2_MAIL1_RD HW_REGISTER_RW(ARM_SBM_OWN2+0xA0) */ /* DO NOT USE THIS !!!!! */ +/*#define ARM_2_MAIL1_POL HW_REGISTER_RW(ARM_SBM_OWN2+0xB0) */ /* DO NOT USE THIS !!!!! */ +/*#define ARM_2_MAIL1_SND HW_REGISTER_RW(ARM_SBM_OWN2+0xB4) */ /* DO NOT USE THIS !!!!! */ +#define ARM_2_MAIL1_STA HW_REGISTER_RW(ARM_SBM_OWN2+0xB8) /* Status read */ +/*#define ARM_2_MAIL1_CNF HW_REGISTER_RW(ARM_SBM_OWN2+0xBC) */ /* DO NOT USE THIS !!!!! */ +/* General SEM, BELL, MAIL config/status */ +#define ARM_2_SEMCLRDBG HW_REGISTER_RW(ARM_SBM_OWN2+0xE0) /* semaphore clear/debug register */ +#define ARM_2_BELLCLRDBG HW_REGISTER_RW(ARM_SBM_OWN2+0xE4) /* Doorbells clear/debug register */ +#define ARM_2_MY_IRQS HW_REGISTER_RW(ARM_SBM_OWN2+0xFC) /* IRQS pending for owner 2 */ +#define ARM_2_ALL_IRQS HW_REGISTER_RW(ARM_SBM_OWN2+0xF8) /* ALL interrupts */ + +/* Semaphores, Doorbells, Mailboxes Owner 3 */ +#define ARM_3_SEMS HW_REGISTER_RW(ARM_SBM_OWN3+0x00) +#define ARM_3_SEM0 HW_REGISTER_RW(ARM_SBM_OWN3+0x00) +#define ARM_3_SEM1 HW_REGISTER_RW(ARM_SBM_OWN3+0x04) +#define ARM_3_SEM2 HW_REGISTER_RW(ARM_SBM_OWN3+0x08) +#define ARM_3_SEM3 HW_REGISTER_RW(ARM_SBM_OWN3+0x0C) +#define ARM_3_SEM4 HW_REGISTER_RW(ARM_SBM_OWN3+0x10) +#define ARM_3_SEM5 HW_REGISTER_RW(ARM_SBM_OWN3+0x14) +#define ARM_3_SEM6 HW_REGISTER_RW(ARM_SBM_OWN3+0x18) +#define ARM_3_SEM7 HW_REGISTER_RW(ARM_SBM_OWN3+0x1C) +#define ARM_3_BELL0 HW_REGISTER_RW(ARM_SBM_OWN3+0x40) +#define ARM_3_BELL1 HW_REGISTER_RW(ARM_SBM_OWN3+0x44) +#define ARM_3_BELL2 HW_REGISTER_RW(ARM_SBM_OWN3+0x48) +#define ARM_3_BELL3 HW_REGISTER_RW(ARM_SBM_OWN3+0x4C) +/* MAILBOX 0 access in Owner 3 area */ +/* Owner 3 should only WRITE to this mailbox */ +#define ARM_3_MAIL0_WRT HW_REGISTER_RW(ARM_SBM_OWN3+0x80) /* .. 0x8C (4 locations) */ +/*#define ARM_3_MAIL0_RD HW_REGISTER_RW(ARM_SBM_OWN3+0x80) */ /* DO NOT USE THIS !!!!! */ +/*#define ARM_3_MAIL0_POL HW_REGISTER_RW(ARM_SBM_OWN3+0x90) */ /* DO NOT USE THIS !!!!! */ +/*#define ARM_3_MAIL0_SND HW_REGISTER_RW(ARM_SBM_OWN3+0x94) */ /* DO NOT USE THIS !!!!! */ +#define ARM_3_MAIL0_STA HW_REGISTER_RW(ARM_SBM_OWN3+0x98) /* Status read */ +/*#define ARM_3_MAIL0_CNF HW_REGISTER_RW(ARM_SBM_OWN3+0x9C) */ /* DO NOT USE THIS !!!!! */ +/* MAILBOX 1 access in Owner 3 area */ +/* Owner 3 should only WRITE to this mailbox */ +#define ARM_3_MAIL1_WRT HW_REGISTER_RW(ARM_SBM_OWN3+0xA0) /* .. 0xAC (4 locations) */ +/*#define ARM_3_MAIL1_RD HW_REGISTER_RW(ARM_SBM_OWN3+0xA0) */ /* DO NOT USE THIS !!!!! */ +/*#define ARM_3_MAIL1_POL HW_REGISTER_RW(ARM_SBM_OWN3+0xB0) */ /* DO NOT USE THIS !!!!! */ +/*#define ARM_3_MAIL1_SND HW_REGISTER_RW(ARM_SBM_OWN3+0xB4) */ /* DO NOT USE THIS !!!!! */ +#define ARM_3_MAIL1_STA HW_REGISTER_RW(ARM_SBM_OWN3+0xB8) /* Status read */ +/*#define ARM_3_MAIL1_CNF HW_REGISTER_RW(ARM_SBM_OWN3+0xBC) */ /* DO NOT USE THIS !!!!! */ +/* General SEM, BELL, MAIL config/status */ +#define ARM_3_SEMCLRDBG HW_REGISTER_RW(ARM_SBM_OWN3+0xE0) /* semaphore clear/debug register */ +#define ARM_3_BELLCLRDBG HW_REGISTER_RW(ARM_SBM_OWN3+0xE4) /* Doorbells clear/debug register */ +#define ARM_3_MY_IRQS HW_REGISTER_RW(ARM_SBM_OWN3+0xFC) /* IRQS pending for owner 3 */ +#define ARM_3_ALL_IRQS HW_REGISTER_RW(ARM_SBM_OWN3+0xF8) /* ALL interrupts */ + + + +/* Mailbox flags. Valid for all owners */ + +/* Mailbox status register (...0x98) */ +#define ARM_MS_FULL 0x80000000 +#define ARM_MS_EMPTY 0x40000000 +#define ARM_MS_LEVEL 0x400000FF /* Max. value depdnds on mailbox depth parameter */ + +/* MAILBOX config/status register (...0x9C) */ +/* ANY write to this register clears the error bits! */ +#define ARM_MC_IHAVEDATAIRQEN 0x00000001 /* mailbox irq enable: has data */ +#define ARM_MC_IHAVESPACEIRQEN 0x00000002 /* mailbox irq enable: has space */ +#define ARM_MC_OPPISEMPTYIRQEN 0x00000004 /* mailbox irq enable: Opp. is empty */ +#define ARM_MC_MAIL_CLEAR 0x00000008 /* mailbox clear write 1, then 0 */ +#define ARM_MC_IHAVEDATAIRQPEND 0x00000010 /* mailbox irq pending: has space */ +#define ARM_MC_IHAVESPACEIRQPEND 0x00000020 /* mailbox irq pending: Opp. is empty */ +#define ARM_MC_OPPISEMPTYIRQPEND 0x00000040 /* mailbox irq pending */ +/* Bit 7 is unused */ +#define ARM_MC_ERRNOOWN 0x00000100 /* error : none owner read from mailbox */ +#define ARM_MC_ERROVERFLW 0x00000200 /* error : write to fill mailbox */ +#define ARM_MC_ERRUNDRFLW 0x00000400 /* error : read from empty mailbox */ + +/* Semaphore clear/debug register (...0xE0) */ +#define ARM_SD_OWN0 0x00000003 /* Owner of sem 0 */ +#define ARM_SD_OWN1 0x0000000C /* Owner of sem 1 */ +#define ARM_SD_OWN2 0x00000030 /* Owner of sem 2 */ +#define ARM_SD_OWN3 0x000000C0 /* Owner of sem 3 */ +#define ARM_SD_OWN4 0x00000300 /* Owner of sem 4 */ +#define ARM_SD_OWN5 0x00000C00 /* Owner of sem 5 */ +#define ARM_SD_OWN6 0x00003000 /* Owner of sem 6 */ +#define ARM_SD_OWN7 0x0000C000 /* Owner of sem 7 */ +#define ARM_SD_SEM0 0x00010000 /* Status of sem 0 */ +#define ARM_SD_SEM1 0x00020000 /* Status of sem 1 */ +#define ARM_SD_SEM2 0x00040000 /* Status of sem 2 */ +#define ARM_SD_SEM3 0x00080000 /* Status of sem 3 */ +#define ARM_SD_SEM4 0x00100000 /* Status of sem 4 */ +#define ARM_SD_SEM5 0x00200000 /* Status of sem 5 */ +#define ARM_SD_SEM6 0x00400000 /* Status of sem 6 */ +#define ARM_SD_SEM7 0x00800000 /* Status of sem 7 */ + +/* Doorbells clear/debug register (...0xE4) */ +#define ARM_BD_OWN0 0x00000003 /* Owner of doorbell 0 */ +#define ARM_BD_OWN1 0x0000000C /* Owner of doorbell 1 */ +#define ARM_BD_OWN2 0x00000030 /* Owner of doorbell 2 */ +#define ARM_BD_OWN3 0x000000C0 /* Owner of doorbell 3 */ +#define ARM_BD_BELL0 0x00000100 /* Status of doorbell 0 */ +#define ARM_BD_BELL1 0x00000200 /* Status of doorbell 1 */ +#define ARM_BD_BELL2 0x00000400 /* Status of doorbell 2 */ +#define ARM_BD_BELL3 0x00000800 /* Status of doorbell 3 */ + +/* MY IRQS register (...0xF8) */ +#define ARM_MYIRQ_BELL 0x00000001 /* This owner has a doorbell IRQ */ +#define ARM_MYIRQ_MAIL 0x00000002 /* This owner has a mailbox IRQ */ + +/* ALL IRQS register (...0xF8) */ +#define ARM_AIS_BELL0 0x00000001 /* Doorbell 0 IRQ pending */ +#define ARM_AIS_BELL1 0x00000002 /* Doorbell 1 IRQ pending */ +#define ARM_AIS_BELL2 0x00000004 /* Doorbell 2 IRQ pending */ +#define ARM_AIS_BELL3 0x00000008 /* Doorbell 3 IRQ pending */ +#define ARM_AIS0_HAVEDATA 0x00000010 /* MAIL 0 has data IRQ pending */ +#define ARM_AIS0_HAVESPAC 0x00000020 /* MAIL 0 has space IRQ pending */ +#define ARM_AIS0_OPPEMPTY 0x00000040 /* MAIL 0 opposite is empty IRQ */ +#define ARM_AIS1_HAVEDATA 0x00000080 /* MAIL 1 has data IRQ pending */ +#define ARM_AIS1_HAVESPAC 0x00000100 /* MAIL 1 has space IRQ pending */ +#define ARM_AIS1_OPPEMPTY 0x00000200 /* MAIL 1 opposite is empty IRQ */ +/* Note that bell-0, bell-1 and MAIL0 IRQ go only to the ARM */ +/* Whilst that bell-2, bell-3 and MAIL1 IRQ go only to the VC */ +/* */ +/* ARM JTAG BASH */ +/* */ +#define AJB_BASE 0x7e2000c0 + +#define AJBCONF HW_REGISTER_RW(AJB_BASE+0x00) +#define AJB_BITS0 0x000000 +#define AJB_BITS4 0x000004 +#define AJB_BITS8 0x000008 +#define AJB_BITS12 0x00000C +#define AJB_BITS16 0x000010 +#define AJB_BITS20 0x000014 +#define AJB_BITS24 0x000018 +#define AJB_BITS28 0x00001C +#define AJB_BITS32 0x000020 +#define AJB_BITS34 0x000022 +#define AJB_OUT_MS 0x000040 +#define AJB_OUT_LS 0x000000 +#define AJB_INV_CLK 0x000080 +#define AJB_D0_RISE 0x000100 +#define AJB_D0_FALL 0x000000 +#define AJB_D1_RISE 0x000200 +#define AJB_D1_FALL 0x000000 +#define AJB_IN_RISE 0x000400 +#define AJB_IN_FALL 0x000000 +#define AJB_ENABLE 0x000800 +#define AJB_HOLD0 0x000000 +#define AJB_HOLD1 0x001000 +#define AJB_HOLD2 0x002000 +#define AJB_HOLD3 0x003000 +#define AJB_RESETN 0x004000 +#define AJB_CLKSHFT 16 +#define AJB_BUSY 0x80000000 +#define AJBTMS HW_REGISTER_RW(AJB_BASE+0x04) +#define AJBTDI HW_REGISTER_RW(AJB_BASE+0x08) +#define AJBTDO HW_REGISTER_RW(AJB_BASE+0x0c) + +#define ARM_LOCAL_BASE 0x40000000 +#define ARM_LOCAL_CONTROL HW_REGISTER_RW(ARM_LOCAL_BASE+0x000) +#define ARM_LOCAL_PRESCALER HW_REGISTER_RW(ARM_LOCAL_BASE+0x008) +#define ARM_LOCAL_GPU_INT_ROUTING HW_REGISTER_RW(ARM_LOCAL_BASE+0x00C) +#define ARM_LOCAL_PM_ROUTING_SET HW_REGISTER_RW(ARM_LOCAL_BASE+0x010) +#define ARM_LOCAL_PM_ROUTING_CLR HW_REGISTER_RW(ARM_LOCAL_BASE+0x014) +#define ARM_LOCAL_TIMER_LS HW_REGISTER_RW(ARM_LOCAL_BASE+0x01C) +#define ARM_LOCAL_TIMER_MS HW_REGISTER_RW(ARM_LOCAL_BASE+0x020) +#define ARM_LOCAL_INT_ROUTING HW_REGISTER_RW(ARM_LOCAL_BASE+0x024) +#define ARM_LOCAL_AXI_COUNT HW_REGISTER_RW(ARM_LOCAL_BASE+0x02C) +#define ARM_LOCAL_AXI_IRQ HW_REGISTER_RW(ARM_LOCAL_BASE+0x030) +#define ARM_LOCAL_TIMER_CONTROL HW_REGISTER_RW(ARM_LOCAL_BASE+0x034) +#define ARM_LOCAL_TIMER_WRITE HW_REGISTER_RW(ARM_LOCAL_BASE+0x038) + +#define ARM_LOCAL_TIMER_INT_CONTROL0 HW_REGISTER_RW(ARM_LOCAL_BASE+0x040) +#define ARM_LOCAL_TIMER_INT_CONTROL1 HW_REGISTER_RW(ARM_LOCAL_BASE+0x044) +#define ARM_LOCAL_TIMER_INT_CONTROL2 HW_REGISTER_RW(ARM_LOCAL_BASE+0x048) +#define ARM_LOCAL_TIMER_INT_CONTROL3 HW_REGISTER_RW(ARM_LOCAL_BASE+0x04C) + +#define ARM_LOCAL_MAILBOX_INT_CONTROL0 HW_REGISTER_RW(ARM_LOCAL_BASE+0x050) +#define ARM_LOCAL_MAILBOX_INT_CONTROL1 HW_REGISTER_RW(ARM_LOCAL_BASE+0x054) +#define ARM_LOCAL_MAILBOX_INT_CONTROL2 HW_REGISTER_RW(ARM_LOCAL_BASE+0x058) +#define ARM_LOCAL_MAILBOX_INT_CONTROL3 HW_REGISTER_RW(ARM_LOCAL_BASE+0x05C) + +#define ARM_LOCAL_IRQ_PENDING0 HW_REGISTER_RW(ARM_LOCAL_BASE+0x060) +#define ARM_LOCAL_IRQ_PENDING1 HW_REGISTER_RW(ARM_LOCAL_BASE+0x064) +#define ARM_LOCAL_IRQ_PENDING2 HW_REGISTER_RW(ARM_LOCAL_BASE+0x068) +#define ARM_LOCAL_IRQ_PENDING3 HW_REGISTER_RW(ARM_LOCAL_BASE+0x06C) + +#define ARM_LOCAL_FIQ_PENDING0 HW_REGISTER_RW(ARM_LOCAL_BASE+0x070) +#define ARM_LOCAL_FIQ_PENDING1 HW_REGISTER_RW(ARM_LOCAL_BASE+0x074) +#define ARM_LOCAL_FIQ_PENDING2 HW_REGISTER_RW(ARM_LOCAL_BASE+0x078) +#define ARM_LOCAL_FIQ_PENDING3 HW_REGISTER_RW(ARM_LOCAL_BASE+0x07C) + +#define ARM_LOCAL_MAILBOX0_SET0 HW_REGISTER_RW(ARM_LOCAL_BASE+0x080) +#define ARM_LOCAL_MAILBOX1_SET0 HW_REGISTER_RW(ARM_LOCAL_BASE+0x084) +#define ARM_LOCAL_MAILBOX2_SET0 HW_REGISTER_RW(ARM_LOCAL_BASE+0x088) +#define ARM_LOCAL_MAILBOX3_SET0 HW_REGISTER_RW(ARM_LOCAL_BASE+0x08C) + +#define ARM_LOCAL_MAILBOX0_SET1 HW_REGISTER_RW(ARM_LOCAL_BASE+0x090) +#define ARM_LOCAL_MAILBOX1_SET1 HW_REGISTER_RW(ARM_LOCAL_BASE+0x094) +#define ARM_LOCAL_MAILBOX2_SET1 HW_REGISTER_RW(ARM_LOCAL_BASE+0x098) +#define ARM_LOCAL_MAILBOX3_SET1 HW_REGISTER_RW(ARM_LOCAL_BASE+0x09C) + +#define ARM_LOCAL_MAILBOX0_SET2 HW_REGISTER_RW(ARM_LOCAL_BASE+0x0A0) +#define ARM_LOCAL_MAILBOX1_SET2 HW_REGISTER_RW(ARM_LOCAL_BASE+0x0A4) +#define ARM_LOCAL_MAILBOX2_SET2 HW_REGISTER_RW(ARM_LOCAL_BASE+0x0A8) +#define ARM_LOCAL_MAILBOX3_SET2 HW_REGISTER_RW(ARM_LOCAL_BASE+0x0AC) + +#define ARM_LOCAL_MAILBOX0_SET3 HW_REGISTER_RW(ARM_LOCAL_BASE+0x0B0) +#define ARM_LOCAL_MAILBOX1_SET3 HW_REGISTER_RW(ARM_LOCAL_BASE+0x0B4) +#define ARM_LOCAL_MAILBOX2_SET3 HW_REGISTER_RW(ARM_LOCAL_BASE+0x0B8) +#define ARM_LOCAL_MAILBOX3_SET3 HW_REGISTER_RW(ARM_LOCAL_BASE+0x0BC) + +#define ARM_LOCAL_MAILBOX0_CLR0 HW_REGISTER_RW(ARM_LOCAL_BASE+0x0C0) +#define ARM_LOCAL_MAILBOX1_CLR0 HW_REGISTER_RW(ARM_LOCAL_BASE+0x0C4) +#define ARM_LOCAL_MAILBOX2_CLR0 HW_REGISTER_RW(ARM_LOCAL_BASE+0x0C8) +#define ARM_LOCAL_MAILBOX3_CLR0 HW_REGISTER_RW(ARM_LOCAL_BASE+0x0CC) + +#define ARM_LOCAL_MAILBOX0_CLR1 HW_REGISTER_RW(ARM_LOCAL_BASE+0x0D0) +#define ARM_LOCAL_MAILBOX1_CLR1 HW_REGISTER_RW(ARM_LOCAL_BASE+0x0D4) +#define ARM_LOCAL_MAILBOX2_CLR1 HW_REGISTER_RW(ARM_LOCAL_BASE+0x0D8) +#define ARM_LOCAL_MAILBOX3_CLR1 HW_REGISTER_RW(ARM_LOCAL_BASE+0x0DC) + +#define ARM_LOCAL_MAILBOX0_CLR2 HW_REGISTER_RW(ARM_LOCAL_BASE+0x0E0) +#define ARM_LOCAL_MAILBOX1_CLR2 HW_REGISTER_RW(ARM_LOCAL_BASE+0x0E4) +#define ARM_LOCAL_MAILBOX2_CLR2 HW_REGISTER_RW(ARM_LOCAL_BASE+0x0E8) +#define ARM_LOCAL_MAILBOX3_CLR2 HW_REGISTER_RW(ARM_LOCAL_BASE+0x0EC) + +#define ARM_LOCAL_MAILBOX0_CLR3 HW_REGISTER_RW(ARM_LOCAL_BASE+0x0F0) +#define ARM_LOCAL_MAILBOX1_CLR3 HW_REGISTER_RW(ARM_LOCAL_BASE+0x0F4) +#define ARM_LOCAL_MAILBOX2_CLR3 HW_REGISTER_RW(ARM_LOCAL_BASE+0x0F8) +#define ARM_LOCAL_MAILBOX3_CLR3 HW_REGISTER_RW(ARM_LOCAL_BASE+0x0FC) + +#endif --- linux-raspi2-4.2.0.orig/arch/arm/mach-bcm2709/include/mach/clkdev.h +++ linux-raspi2-4.2.0/arch/arm/mach-bcm2709/include/mach/clkdev.h @@ -0,0 +1,7 @@ +#ifndef __ASM_MACH_CLKDEV_H +#define __ASM_MACH_CLKDEV_H + +#define __clk_get(clk) ({ 1; }) +#define __clk_put(clk) do { } while (0) + +#endif --- linux-raspi2-4.2.0.orig/arch/arm/mach-bcm2709/include/mach/debug-macro.S +++ linux-raspi2-4.2.0/arch/arm/mach-bcm2709/include/mach/debug-macro.S @@ -0,0 +1,22 @@ +/* arch/arm/mach-bcm2708/include/mach/debug-macro.S + * + * Debugging macro include header + * + * Copyright (C) 2010 Broadcom + * Copyright (C) 1994-1999 Russell King + * Moved from linux/arch/arm/kernel/debug.S by Ben Dooks + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + * +*/ + +#include + + .macro addruart, rp, rv, tmp + ldr \rp, =UART0_BASE + ldr \rv, =IO_ADDRESS(UART0_BASE) + .endm + +#include --- linux-raspi2-4.2.0.orig/arch/arm/mach-bcm2709/include/mach/entry-macro.S +++ linux-raspi2-4.2.0/arch/arm/mach-bcm2709/include/mach/entry-macro.S @@ -0,0 +1,120 @@ +/* + * arch/arm/mach-bcm2708/include/mach/entry-macro.S + * + * Low-level IRQ helper macros for BCM2708 platforms + * + * Copyright (C) 2010 Broadcom + * + * 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 +#include + + .macro arch_ret_to_user, tmp1, tmp2 + .endm + + .macro get_irqnr_and_base, irqnr, irqstat, base, tmp + + /* get core number */ + mrc p15, 0, \base, c0, c0, 5 + ubfx \base, \base, #0, #2 + + /* get core's local interrupt controller */ + ldr \irqstat, = __io_address(ARM_LOCAL_IRQ_PENDING0) @ local interrupt source + add \irqstat, \irqstat, \base, lsl #2 + ldr \tmp, [\irqstat] +#ifdef CONFIG_SMP + /* test for mailbox0 (IPI) interrupt */ + tst \tmp, #0x10 + beq 1030f + + /* get core's mailbox interrupt control */ + ldr \irqstat, = __io_address(ARM_LOCAL_MAILBOX0_CLR0) @ mbox_clr + add \irqstat, \irqstat, \base, lsl #4 + ldr \tmp, [\irqstat] + clz \tmp, \tmp + rsb \irqnr, \tmp, #31 + mov \tmp, #1 + lsl \tmp, \irqnr + str \tmp, [\irqstat] @ clear interrupt source + dsb + mov r1, sp + badr lr, 1b + b do_IPI +#endif +1030: + /* check gpu interrupt */ + tst \tmp, #0x100 + beq 1040f + + ldr \base, =IO_ADDRESS(ARMCTRL_IC_BASE) + /* get masked status */ + ldr \irqstat, [\base, #(ARM_IRQ_PEND0 - ARMCTRL_IC_BASE)] + mov \irqnr, #(ARM_IRQ0_BASE + 31) + and \tmp, \irqstat, #0x300 @ save bits 8 and 9 + /* clear bits 8 and 9, and test */ + bics \irqstat, \irqstat, #0x300 + bne 1010f + + tst \tmp, #0x100 + ldrne \irqstat, [\base, #(ARM_IRQ_PEND1 - ARMCTRL_IC_BASE)] + movne \irqnr, #(ARM_IRQ1_BASE + 31) + @ Mask out the interrupts also present in PEND0 - see SW-5809 + bicne \irqstat, #((1<<7) | (1<<9) | (1<<10)) + bicne \irqstat, #((1<<18) | (1<<19)) + bne 1010f + + tst \tmp, #0x200 + ldrne \irqstat, [\base, #(ARM_IRQ_PEND2 - ARMCTRL_IC_BASE)] + movne \irqnr, #(ARM_IRQ2_BASE + 31) + @ Mask out the interrupts also present in PEND0 - see SW-5809 + bicne \irqstat, #((1<<21) | (1<<22) | (1<<23) | (1<<24) | (1<<25)) + bicne \irqstat, #((1<<30)) + beq 1020f +1010: + @ For non-zero x, LSB(x) = 31 - CLZ(x^(x-1)) + sub \tmp, \irqstat, #1 + eor \irqstat, \irqstat, \tmp + clz \tmp, \irqstat + sub \irqnr, \tmp + b 1050f +1040: + cmp \tmp, #0 + beq 1020f + + /* handle local (e.g. timer) interrupts */ + @ For non-zero x, LSB(x) = 31 - CLZ(x^(x-1)) + mov \irqnr, #(ARM_IRQ_LOCAL_BASE + 31) + sub \irqstat, \tmp, #1 + eor \irqstat, \irqstat, \tmp + clz \tmp, \irqstat + sub \irqnr, \tmp +1050: + mov r1, sp + @ + @ routine called with r0 = irq number, r1 = struct pt_regs * + @ + badr lr, 1b + b asm_do_IRQ + +1020: @ EQ will be set if no irqs pending + .endm + +/* + * Interrupt handling. Preserves r7, r8, r9 + */ + .macro arch_irq_handler_default +1: get_irqnr_and_base r0, r2, r6, lr + .endm --- linux-raspi2-4.2.0.orig/arch/arm/mach-bcm2709/include/mach/frc.h +++ linux-raspi2-4.2.0/arch/arm/mach-bcm2709/include/mach/frc.h @@ -0,0 +1,38 @@ +/* + * arch/arm/mach-bcm2708/include/mach/timex.h + * + * BCM2708 free running counter (timer) + * + * Copyright (C) 2010 Broadcom + * + * 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 + */ + +#ifndef _MACH_FRC_H +#define _MACH_FRC_H + +#define FRC_TICK_RATE (1000000) + +/*! Free running counter incrementing at the CLOCK_TICK_RATE + (slightly faster than frc_clock_ticks63() + */ +extern unsigned long frc_clock_ticks32(void); + +/*! Free running counter incrementing at the CLOCK_TICK_RATE + * Note - top bit should be ignored (see cnt32_to_63) + */ +extern unsigned long long frc_clock_ticks63(void); + +#endif --- linux-raspi2-4.2.0.orig/arch/arm/mach-bcm2709/include/mach/gpio.h +++ linux-raspi2-4.2.0/arch/arm/mach-bcm2709/include/mach/gpio.h @@ -0,0 +1,17 @@ +/* + * arch/arm/mach-bcm2708/include/mach/gpio.h + * + * This file is licensed under the terms of the GNU General Public + * License version 2. This program is licensed "as is" without any + * warranty of any kind, whether express or implied. + */ + +#ifndef __ASM_ARCH_GPIO_H +#define __ASM_ARCH_GPIO_H + +#define BCM2708_NR_GPIOS 54 // number of gpio lines + +#define gpio_to_irq(x) ((x) + GPIO_IRQ_START) +#define irq_to_gpio(x) ((x) - GPIO_IRQ_START) + +#endif --- linux-raspi2-4.2.0.orig/arch/arm/mach-bcm2709/include/mach/hardware.h +++ linux-raspi2-4.2.0/arch/arm/mach-bcm2709/include/mach/hardware.h @@ -0,0 +1,28 @@ +/* + * arch/arm/mach-bcm2708/include/mach/hardware.h + * + * This file contains the hardware definitions of the BCM2708 devices. + * + * Copyright (C) 2010 Broadcom + * + * 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 + */ +#ifndef __ASM_ARCH_HARDWARE_H +#define __ASM_ARCH_HARDWARE_H + +#include +#include + +#endif --- linux-raspi2-4.2.0.orig/arch/arm/mach-bcm2709/include/mach/io.h +++ linux-raspi2-4.2.0/arch/arm/mach-bcm2709/include/mach/io.h @@ -0,0 +1,27 @@ +/* + * arch/arm/mach-bcm2708/include/mach/io.h + * + * Copyright (C) 2003 ARM Limited + * + * 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 + */ +#ifndef __ASM_ARM_ARCH_IO_H +#define __ASM_ARM_ARCH_IO_H + +#define IO_SPACE_LIMIT 0xffffffff + +#define __io(a) __typesafe_io(a) + +#endif --- linux-raspi2-4.2.0.orig/arch/arm/mach-bcm2709/include/mach/irqs.h +++ linux-raspi2-4.2.0/arch/arm/mach-bcm2709/include/mach/irqs.h @@ -0,0 +1,225 @@ +/* + * arch/arm/mach-bcm2708/include/mach/irqs.h + * + * Copyright (C) 2010 Broadcom + * Copyright (C) 2003 ARM Limited + * Copyright (C) 2000 Deep Blue Solutions 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; 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 + */ + +#ifndef _BCM2708_IRQS_H_ +#define _BCM2708_IRQS_H_ + +#include + +/* + * IRQ interrupts definitions are the same as the INT definitions + * held within platform.h + */ +#define IRQ_ARMCTRL_START 0 +#define IRQ_TIMER0 (IRQ_ARMCTRL_START + INTERRUPT_TIMER0) +#define IRQ_TIMER1 (IRQ_ARMCTRL_START + INTERRUPT_TIMER1) +#define IRQ_TIMER2 (IRQ_ARMCTRL_START + INTERRUPT_TIMER2) +#define IRQ_TIMER3 (IRQ_ARMCTRL_START + INTERRUPT_TIMER3) +#define IRQ_CODEC0 (IRQ_ARMCTRL_START + INTERRUPT_CODEC0) +#define IRQ_CODEC1 (IRQ_ARMCTRL_START + INTERRUPT_CODEC1) +#define IRQ_CODEC2 (IRQ_ARMCTRL_START + INTERRUPT_CODEC2) +#define IRQ_JPEG (IRQ_ARMCTRL_START + INTERRUPT_JPEG) +#define IRQ_ISP (IRQ_ARMCTRL_START + INTERRUPT_ISP) +#define IRQ_USB (IRQ_ARMCTRL_START + INTERRUPT_USB) +#define IRQ_3D (IRQ_ARMCTRL_START + INTERRUPT_3D) +#define IRQ_TRANSPOSER (IRQ_ARMCTRL_START + INTERRUPT_TRANSPOSER) +#define IRQ_MULTICORESYNC0 (IRQ_ARMCTRL_START + INTERRUPT_MULTICORESYNC0) +#define IRQ_MULTICORESYNC1 (IRQ_ARMCTRL_START + INTERRUPT_MULTICORESYNC1) +#define IRQ_MULTICORESYNC2 (IRQ_ARMCTRL_START + INTERRUPT_MULTICORESYNC2) +#define IRQ_MULTICORESYNC3 (IRQ_ARMCTRL_START + INTERRUPT_MULTICORESYNC3) +#define IRQ_DMA0 (IRQ_ARMCTRL_START + INTERRUPT_DMA0) +#define IRQ_DMA1 (IRQ_ARMCTRL_START + INTERRUPT_DMA1) +#define IRQ_DMA2 (IRQ_ARMCTRL_START + INTERRUPT_DMA2) +#define IRQ_DMA3 (IRQ_ARMCTRL_START + INTERRUPT_DMA3) +#define IRQ_DMA4 (IRQ_ARMCTRL_START + INTERRUPT_DMA4) +#define IRQ_DMA5 (IRQ_ARMCTRL_START + INTERRUPT_DMA5) +#define IRQ_DMA6 (IRQ_ARMCTRL_START + INTERRUPT_DMA6) +#define IRQ_DMA7 (IRQ_ARMCTRL_START + INTERRUPT_DMA7) +#define IRQ_DMA8 (IRQ_ARMCTRL_START + INTERRUPT_DMA8) +#define IRQ_DMA9 (IRQ_ARMCTRL_START + INTERRUPT_DMA9) +#define IRQ_DMA10 (IRQ_ARMCTRL_START + INTERRUPT_DMA10) +#define IRQ_DMA11 (IRQ_ARMCTRL_START + INTERRUPT_DMA11) +#define IRQ_DMA12 (IRQ_ARMCTRL_START + INTERRUPT_DMA12) +#define IRQ_AUX (IRQ_ARMCTRL_START + INTERRUPT_AUX) +#define IRQ_ARM (IRQ_ARMCTRL_START + INTERRUPT_ARM) +#define IRQ_VPUDMA (IRQ_ARMCTRL_START + INTERRUPT_VPUDMA) +#define IRQ_HOSTPORT (IRQ_ARMCTRL_START + INTERRUPT_HOSTPORT) +#define IRQ_VIDEOSCALER (IRQ_ARMCTRL_START + INTERRUPT_VIDEOSCALER) +#define IRQ_CCP2TX (IRQ_ARMCTRL_START + INTERRUPT_CCP2TX) +#define IRQ_SDC (IRQ_ARMCTRL_START + INTERRUPT_SDC) +#define IRQ_DSI0 (IRQ_ARMCTRL_START + INTERRUPT_DSI0) +#define IRQ_AVE (IRQ_ARMCTRL_START + INTERRUPT_AVE) +#define IRQ_CAM0 (IRQ_ARMCTRL_START + INTERRUPT_CAM0) +#define IRQ_CAM1 (IRQ_ARMCTRL_START + INTERRUPT_CAM1) +#define IRQ_HDMI0 (IRQ_ARMCTRL_START + INTERRUPT_HDMI0) +#define IRQ_HDMI1 (IRQ_ARMCTRL_START + INTERRUPT_HDMI1) +#define IRQ_PIXELVALVE1 (IRQ_ARMCTRL_START + INTERRUPT_PIXELVALVE1) +#define IRQ_I2CSPISLV (IRQ_ARMCTRL_START + INTERRUPT_I2CSPISLV) +#define IRQ_DSI1 (IRQ_ARMCTRL_START + INTERRUPT_DSI1) +#define IRQ_PWA0 (IRQ_ARMCTRL_START + INTERRUPT_PWA0) +#define IRQ_PWA1 (IRQ_ARMCTRL_START + INTERRUPT_PWA1) +#define IRQ_CPR (IRQ_ARMCTRL_START + INTERRUPT_CPR) +#define IRQ_SMI (IRQ_ARMCTRL_START + INTERRUPT_SMI) +#define IRQ_GPIO0 (IRQ_ARMCTRL_START + INTERRUPT_GPIO0) +#define IRQ_GPIO1 (IRQ_ARMCTRL_START + INTERRUPT_GPIO1) +#define IRQ_GPIO2 (IRQ_ARMCTRL_START + INTERRUPT_GPIO2) +#define IRQ_GPIO3 (IRQ_ARMCTRL_START + INTERRUPT_GPIO3) +#define IRQ_I2C (IRQ_ARMCTRL_START + INTERRUPT_I2C) +#define IRQ_SPI (IRQ_ARMCTRL_START + INTERRUPT_SPI) +#define IRQ_I2SPCM (IRQ_ARMCTRL_START + INTERRUPT_I2SPCM) +#define IRQ_SDIO (IRQ_ARMCTRL_START + INTERRUPT_SDIO) +#define IRQ_UART (IRQ_ARMCTRL_START + INTERRUPT_UART) +#define IRQ_SLIMBUS (IRQ_ARMCTRL_START + INTERRUPT_SLIMBUS) +#define IRQ_VEC (IRQ_ARMCTRL_START + INTERRUPT_VEC) +#define IRQ_CPG (IRQ_ARMCTRL_START + INTERRUPT_CPG) +#define IRQ_RNG (IRQ_ARMCTRL_START + INTERRUPT_RNG) +#define IRQ_ARASANSDIO (IRQ_ARMCTRL_START + INTERRUPT_ARASANSDIO) +#define IRQ_AVSPMON (IRQ_ARMCTRL_START + INTERRUPT_AVSPMON) + +#define IRQ_ARM_TIMER (IRQ_ARMCTRL_START + INTERRUPT_ARM_TIMER) +#define IRQ_ARM_MAILBOX (IRQ_ARMCTRL_START + INTERRUPT_ARM_MAILBOX) +#define IRQ_ARM_DOORBELL_0 (IRQ_ARMCTRL_START + INTERRUPT_ARM_DOORBELL_0) +#define IRQ_ARM_DOORBELL_1 (IRQ_ARMCTRL_START + INTERRUPT_ARM_DOORBELL_1) +#define IRQ_VPU0_HALTED (IRQ_ARMCTRL_START + INTERRUPT_VPU0_HALTED) +#define IRQ_VPU1_HALTED (IRQ_ARMCTRL_START + INTERRUPT_VPU1_HALTED) +#define IRQ_ILLEGAL_TYPE0 (IRQ_ARMCTRL_START + INTERRUPT_ILLEGAL_TYPE0) +#define IRQ_ILLEGAL_TYPE1 (IRQ_ARMCTRL_START + INTERRUPT_ILLEGAL_TYPE1) +#define IRQ_PENDING1 (IRQ_ARMCTRL_START + INTERRUPT_PENDING1) +#define IRQ_PENDING2 (IRQ_ARMCTRL_START + INTERRUPT_PENDING2) + +#define IRQ_ARM_LOCAL_CNTPSIRQ (IRQ_ARMCTRL_START + INTERRUPT_ARM_LOCAL_CNTPSIRQ) +#define IRQ_ARM_LOCAL_CNTPNSIRQ (IRQ_ARMCTRL_START + INTERRUPT_ARM_LOCAL_CNTPNSIRQ) +#define IRQ_ARM_LOCAL_CNTHPIRQ (IRQ_ARMCTRL_START + INTERRUPT_ARM_LOCAL_CNTHPIRQ) +#define IRQ_ARM_LOCAL_CNTVIRQ (IRQ_ARMCTRL_START + INTERRUPT_ARM_LOCAL_CNTVIRQ) +#define IRQ_ARM_LOCAL_MAILBOX0 (IRQ_ARMCTRL_START + INTERRUPT_ARM_LOCAL_MAILBOX0) +#define IRQ_ARM_LOCAL_MAILBOX1 (IRQ_ARMCTRL_START + INTERRUPT_ARM_LOCAL_MAILBOX1) +#define IRQ_ARM_LOCAL_MAILBOX2 (IRQ_ARMCTRL_START + INTERRUPT_ARM_LOCAL_MAILBOX2) +#define IRQ_ARM_LOCAL_MAILBOX3 (IRQ_ARMCTRL_START + INTERRUPT_ARM_LOCAL_MAILBOX3) +#define IRQ_ARM_LOCAL_GPU_FAST (IRQ_ARMCTRL_START + INTERRUPT_ARM_LOCAL_GPU_FAST) +#define IRQ_ARM_LOCAL_PMU_FAST (IRQ_ARMCTRL_START + INTERRUPT_ARM_LOCAL_PMU_FAST) +#define IRQ_ARM_LOCAL_ZERO (IRQ_ARMCTRL_START + INTERRUPT_ARM_LOCAL_ZERO) +#define IRQ_ARM_LOCAL_TIMER (IRQ_ARMCTRL_START + INTERRUPT_ARM_LOCAL_TIMER) + +#define FIQ_START HARD_IRQS + +/* + * FIQ interrupts definitions are the same as the INT definitions. + */ +#define FIQ_TIMER0 (FIQ_START+INTERRUPT_TIMER0) +#define FIQ_TIMER1 (FIQ_START+INTERRUPT_TIMER1) +#define FIQ_TIMER2 (FIQ_START+INTERRUPT_TIMER2) +#define FIQ_TIMER3 (FIQ_START+INTERRUPT_TIMER3) +#define FIQ_CODEC0 (FIQ_START+INTERRUPT_CODEC0) +#define FIQ_CODEC1 (FIQ_START+INTERRUPT_CODEC1) +#define FIQ_CODEC2 (FIQ_START+INTERRUPT_CODEC2) +#define FIQ_JPEG (FIQ_START+INTERRUPT_JPEG) +#define FIQ_ISP (FIQ_START+INTERRUPT_ISP) +#define FIQ_USB (FIQ_START+INTERRUPT_USB) +#define FIQ_3D (FIQ_START+INTERRUPT_3D) +#define FIQ_TRANSPOSER (FIQ_START+INTERRUPT_TRANSPOSER) +#define FIQ_MULTICORESYNC0 (FIQ_START+INTERRUPT_MULTICORESYNC0) +#define FIQ_MULTICORESYNC1 (FIQ_START+INTERRUPT_MULTICORESYNC1) +#define FIQ_MULTICORESYNC2 (FIQ_START+INTERRUPT_MULTICORESYNC2) +#define FIQ_MULTICORESYNC3 (FIQ_START+INTERRUPT_MULTICORESYNC3) +#define FIQ_DMA0 (FIQ_START+INTERRUPT_DMA0) +#define FIQ_DMA1 (FIQ_START+INTERRUPT_DMA1) +#define FIQ_DMA2 (FIQ_START+INTERRUPT_DMA2) +#define FIQ_DMA3 (FIQ_START+INTERRUPT_DMA3) +#define FIQ_DMA4 (FIQ_START+INTERRUPT_DMA4) +#define FIQ_DMA5 (FIQ_START+INTERRUPT_DMA5) +#define FIQ_DMA6 (FIQ_START+INTERRUPT_DMA6) +#define FIQ_DMA7 (FIQ_START+INTERRUPT_DMA7) +#define FIQ_DMA8 (FIQ_START+INTERRUPT_DMA8) +#define FIQ_DMA9 (FIQ_START+INTERRUPT_DMA9) +#define FIQ_DMA10 (FIQ_START+INTERRUPT_DMA10) +#define FIQ_DMA11 (FIQ_START+INTERRUPT_DMA11) +#define FIQ_DMA12 (FIQ_START+INTERRUPT_DMA12) +#define FIQ_AUX (FIQ_START+INTERRUPT_AUX) +#define FIQ_ARM (FIQ_START+INTERRUPT_ARM) +#define FIQ_VPUDMA (FIQ_START+INTERRUPT_VPUDMA) +#define FIQ_HOSTPORT (FIQ_START+INTERRUPT_HOSTPORT) +#define FIQ_VIDEOSCALER (FIQ_START+INTERRUPT_VIDEOSCALER) +#define FIQ_CCP2TX (FIQ_START+INTERRUPT_CCP2TX) +#define FIQ_SDC (FIQ_START+INTERRUPT_SDC) +#define FIQ_DSI0 (FIQ_START+INTERRUPT_DSI0) +#define FIQ_AVE (FIQ_START+INTERRUPT_AVE) +#define FIQ_CAM0 (FIQ_START+INTERRUPT_CAM0) +#define FIQ_CAM1 (FIQ_START+INTERRUPT_CAM1) +#define FIQ_HDMI0 (FIQ_START+INTERRUPT_HDMI0) +#define FIQ_HDMI1 (FIQ_START+INTERRUPT_HDMI1) +#define FIQ_PIXELVALVE1 (FIQ_START+INTERRUPT_PIXELVALVE1) +#define FIQ_I2CSPISLV (FIQ_START+INTERRUPT_I2CSPISLV) +#define FIQ_DSI1 (FIQ_START+INTERRUPT_DSI1) +#define FIQ_PWA0 (FIQ_START+INTERRUPT_PWA0) +#define FIQ_PWA1 (FIQ_START+INTERRUPT_PWA1) +#define FIQ_CPR (FIQ_START+INTERRUPT_CPR) +#define FIQ_SMI (FIQ_START+INTERRUPT_SMI) +#define FIQ_GPIO0 (FIQ_START+INTERRUPT_GPIO0) +#define FIQ_GPIO1 (FIQ_START+INTERRUPT_GPIO1) +#define FIQ_GPIO2 (FIQ_START+INTERRUPT_GPIO2) +#define FIQ_GPIO3 (FIQ_START+INTERRUPT_GPIO3) +#define FIQ_I2C (FIQ_START+INTERRUPT_I2C) +#define FIQ_SPI (FIQ_START+INTERRUPT_SPI) +#define FIQ_I2SPCM (FIQ_START+INTERRUPT_I2SPCM) +#define FIQ_SDIO (FIQ_START+INTERRUPT_SDIO) +#define FIQ_UART (FIQ_START+INTERRUPT_UART) +#define FIQ_SLIMBUS (FIQ_START+INTERRUPT_SLIMBUS) +#define FIQ_VEC (FIQ_START+INTERRUPT_VEC) +#define FIQ_CPG (FIQ_START+INTERRUPT_CPG) +#define FIQ_RNG (FIQ_START+INTERRUPT_RNG) +#define FIQ_ARASANSDIO (FIQ_START+INTERRUPT_ARASANSDIO) +#define FIQ_AVSPMON (FIQ_START+INTERRUPT_AVSPMON) + +#define FIQ_ARM_TIMER (FIQ_START+INTERRUPT_ARM_TIMER) +#define FIQ_ARM_MAILBOX (FIQ_START+INTERRUPT_ARM_MAILBOX) +#define FIQ_ARM_DOORBELL_0 (FIQ_START+INTERRUPT_ARM_DOORBELL_0) +#define FIQ_ARM_DOORBELL_1 (FIQ_START+INTERRUPT_ARM_DOORBELL_1) +#define FIQ_VPU0_HALTED (FIQ_START+INTERRUPT_VPU0_HALTED) +#define FIQ_VPU1_HALTED (FIQ_START+INTERRUPT_VPU1_HALTED) +#define FIQ_ILLEGAL_TYPE0 (FIQ_START+INTERRUPT_ILLEGAL_TYPE0) +#define FIQ_ILLEGAL_TYPE1 (FIQ_START+INTERRUPT_ILLEGAL_TYPE1) +#define FIQ_PENDING1 (FIQ_START+INTERRUPT_PENDING1) +#define FIQ_PENDING2 (FIQ_START+INTERRUPT_PENDING2) + +#define FIQ_ARM_LOCAL_CNTPSIRQ (FIQ_ARMCTRL_START + INTERRUPT_ARM_LOCAL_CNTPSIRQ) +#define FIQ_ARM_LOCAL_CNTPNSIRQ (FIQ_ARMCTRL_START + INTERRUPT_ARM_LOCAL_CNTPNSIRQ) +#define FIQ_ARM_LOCAL_CNTHPIRQ (FIQ_ARMCTRL_START + INTERRUPT_ARM_LOCAL_CNTHPIRQ) +#define FIQ_ARM_LOCAL_CNTVIRQ (FIQ_ARMCTRL_START + INTERRUPT_ARM_LOCAL_CNTVIRQ) +#define FIQ_ARM_LOCAL_MAILBOX0 (FIQ_ARMCTRL_START + INTERRUPT_ARM_LOCAL_MAILBOX0) +#define FIQ_ARM_LOCAL_MAILBOX1 (FIQ_ARMCTRL_START + INTERRUPT_ARM_LOCAL_MAILBOX1) +#define FIQ_ARM_LOCAL_MAILBOX2 (FIQ_ARMCTRL_START + INTERRUPT_ARM_LOCAL_MAILBOX2) +#define FIQ_ARM_LOCAL_MAILBOX3 (FIQ_ARMCTRL_START + INTERRUPT_ARM_LOCAL_MAILBOX3) +#define FIQ_ARM_LOCAL_GPU_FAST (FIQ_ARMCTRL_START + INTERRUPT_ARM_LOCAL_GPU_FAST) +#define FIQ_ARM_LOCAL_PMU_FAST (FIQ_ARMCTRL_START + INTERRUPT_ARM_LOCAL_PMU_FAST) +#define FIQ_ARM_LOCAL_ZERO (FIQ_ARMCTRL_START + INTERRUPT_ARM_LOCAL_ZERO) +#define FIQ_ARM_LOCAL_TIMER (FIQ_ARMCTRL_START + INTERRUPT_ARM_LOCAL_TIMER) + +#define HARD_IRQS (128) +#define FIQ_IRQS (128) +#define GPIO_IRQ_START (HARD_IRQS + FIQ_IRQS) +#define GPIO_IRQS (32*5) +#define SPARE_ALLOC_IRQS 64 +#define BCM2708_ALLOC_IRQS (HARD_IRQS+FIQ_IRQS+GPIO_IRQS+SPARE_ALLOC_IRQS) +#define FREE_IRQS 128 +#define NR_IRQS (BCM2708_ALLOC_IRQS+FREE_IRQS) + +#endif /* _BCM2708_IRQS_H_ */ --- linux-raspi2-4.2.0.orig/arch/arm/mach-bcm2709/include/mach/memory.h +++ linux-raspi2-4.2.0/arch/arm/mach-bcm2709/include/mach/memory.h @@ -0,0 +1,57 @@ +/* + * arch/arm/mach-bcm2708/include/mach/memory.h + * + * Copyright (C) 2010 Broadcom + * + * 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 + */ +#ifndef __ASM_ARCH_MEMORY_H +#define __ASM_ARCH_MEMORY_H + +/* Memory overview: + + [ARMcore] <--virtual addr--> + [ARMmmu] <--physical addr--> + [GERTmap] <--bus add--> + [VCperiph] + +*/ + +/* + * Physical DRAM offset. + */ +#define BCM_PLAT_PHYS_OFFSET UL(0x00000000) +#define VC_ARMMEM_OFFSET UL(0x00000000) /* offset in VC of ARM memory */ + +#ifdef CONFIG_BCM2708_NOL2CACHE + #define _REAL_BUS_OFFSET UL(0xC0000000) /* don't use L1 or L2 caches */ +#else + #define _REAL_BUS_OFFSET UL(0x40000000) /* use L2 cache */ +#endif + +/* We're using the memory at 64M in the VideoCore for Linux - this adjustment + * will provide the offset into this area as well as setting the bits that + * stop the L1 and L2 cache from being used + * + * WARNING: this only works because the ARM is given memory at a fixed location + * (ARMMEM_OFFSET) + */ +#define BUS_OFFSET (VC_ARMMEM_OFFSET + _REAL_BUS_OFFSET) +#define __virt_to_bus(x) ((x) + (BUS_OFFSET - PAGE_OFFSET)) +#define __bus_to_virt(x) ((x) - (BUS_OFFSET - PAGE_OFFSET)) +#define __pfn_to_bus(x) (__pfn_to_phys(x) + (BUS_OFFSET - BCM_PLAT_PHYS_OFFSET)) +#define __bus_to_pfn(x) __phys_to_pfn((x) - (BUS_OFFSET - BCM_PLAT_PHYS_OFFSET)) + +#endif --- linux-raspi2-4.2.0.orig/arch/arm/mach-bcm2709/include/mach/platform.h +++ linux-raspi2-4.2.0/arch/arm/mach-bcm2709/include/mach/platform.h @@ -0,0 +1,227 @@ +/* + * arch/arm/mach-bcm2708/include/mach/platform.h + * + * Copyright (C) 2010 Broadcom + * + * 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 + */ + +#ifndef _BCM2708_PLATFORM_H +#define _BCM2708_PLATFORM_H + + +/* macros to get at IO space when running virtually */ +#define IO_ADDRESS(x) (((x) & 0x00ffffff) + (((x) >> 4) & 0x0f000000) + 0xf0000000) + +#define __io_address(n) IOMEM(IO_ADDRESS(n)) + + +/* + * SDRAM + */ +#define BCM2708_SDRAM_BASE 0x00000000 + +/* + * Logic expansion modules + * + */ + + +/* ------------------------------------------------------------------------ + * BCM2708 ARMCTRL Registers + * ------------------------------------------------------------------------ + */ + +#define HW_REGISTER_RW(addr) (addr) +#define HW_REGISTER_RO(addr) (addr) + +#include "arm_control.h" +#undef ARM_BASE + +/* + * Definitions and addresses for the ARM CONTROL logic + * This file is manually generated. + */ + +#define BCM2708_PERI_BASE 0x3F000000 +#define IC0_BASE (BCM2708_PERI_BASE + 0x2000) +#define ST_BASE (BCM2708_PERI_BASE + 0x3000) /* System Timer */ +#define MPHI_BASE (BCM2708_PERI_BASE + 0x6000) /* Message -based Parallel Host Interface */ +#define DMA_BASE (BCM2708_PERI_BASE + 0x7000) /* DMA controller */ +#define ARM_BASE (BCM2708_PERI_BASE + 0xB000) /* BCM2708 ARM control block */ +#define PM_BASE (BCM2708_PERI_BASE + 0x100000) /* Power Management, Reset controller and Watchdog registers */ +#define PCM_CLOCK_BASE (BCM2708_PERI_BASE + 0x101098) /* PCM Clock */ +#define RNG_BASE (BCM2708_PERI_BASE + 0x104000) /* Hardware RNG */ +#define GPIO_BASE (BCM2708_PERI_BASE + 0x200000) /* GPIO */ +#define UART0_BASE (BCM2708_PERI_BASE + 0x201000) /* Uart 0 */ +#define MMCI0_BASE (BCM2708_PERI_BASE + 0x202000) /* MMC interface */ +#define I2S_BASE (BCM2708_PERI_BASE + 0x203000) /* I2S */ +#define SPI0_BASE (BCM2708_PERI_BASE + 0x204000) /* SPI0 */ +#define BSC0_BASE (BCM2708_PERI_BASE + 0x205000) /* BSC0 I2C/TWI */ +#define UART1_BASE (BCM2708_PERI_BASE + 0x215000) /* Uart 1 */ +#define EMMC_BASE (BCM2708_PERI_BASE + 0x300000) /* eMMC interface */ +#define SMI_BASE (BCM2708_PERI_BASE + 0x600000) /* SMI */ +#define BSC1_BASE (BCM2708_PERI_BASE + 0x804000) /* BSC1 I2C/TWI */ +#define USB_BASE (BCM2708_PERI_BASE + 0x980000) /* DTC_OTG USB controller */ +#define MCORE_BASE (BCM2708_PERI_BASE + 0x0000) /* Fake frame buffer device (actually the multicore sync block*/ + +#define ARMCTRL_BASE (ARM_BASE + 0x000) +#define ARMCTRL_IC_BASE (ARM_BASE + 0x200) /* ARM interrupt controller */ +#define ARMCTRL_TIMER0_1_BASE (ARM_BASE + 0x400) /* Timer 0 and 1 */ +#define ARMCTRL_0_SBM_BASE (ARM_BASE + 0x800) /* User 0 (ARM)'s Semaphores Doorbells and Mailboxes */ +#define ARMCTRL_0_BELL_BASE (ARMCTRL_0_SBM_BASE + 0x40) /* User 0 (ARM)'s Doorbell */ +#define ARMCTRL_0_MAIL0_BASE (ARMCTRL_0_SBM_BASE + 0x80) /* User 0 (ARM)'s Mailbox 0 */ + + +/* + * Interrupt assignments + */ + +#define ARM_IRQ1_BASE 0 +#define INTERRUPT_TIMER0 (ARM_IRQ1_BASE + 0) +#define INTERRUPT_TIMER1 (ARM_IRQ1_BASE + 1) +#define INTERRUPT_TIMER2 (ARM_IRQ1_BASE + 2) +#define INTERRUPT_TIMER3 (ARM_IRQ1_BASE + 3) +#define INTERRUPT_CODEC0 (ARM_IRQ1_BASE + 4) +#define INTERRUPT_CODEC1 (ARM_IRQ1_BASE + 5) +#define INTERRUPT_CODEC2 (ARM_IRQ1_BASE + 6) +#define INTERRUPT_VC_JPEG (ARM_IRQ1_BASE + 7) +#define INTERRUPT_ISP (ARM_IRQ1_BASE + 8) +#define INTERRUPT_VC_USB (ARM_IRQ1_BASE + 9) +#define INTERRUPT_VC_3D (ARM_IRQ1_BASE + 10) +#define INTERRUPT_TRANSPOSER (ARM_IRQ1_BASE + 11) +#define INTERRUPT_MULTICORESYNC0 (ARM_IRQ1_BASE + 12) +#define INTERRUPT_MULTICORESYNC1 (ARM_IRQ1_BASE + 13) +#define INTERRUPT_MULTICORESYNC2 (ARM_IRQ1_BASE + 14) +#define INTERRUPT_MULTICORESYNC3 (ARM_IRQ1_BASE + 15) +#define INTERRUPT_DMA0 (ARM_IRQ1_BASE + 16) +#define INTERRUPT_DMA1 (ARM_IRQ1_BASE + 17) +#define INTERRUPT_VC_DMA2 (ARM_IRQ1_BASE + 18) +#define INTERRUPT_VC_DMA3 (ARM_IRQ1_BASE + 19) +#define INTERRUPT_DMA4 (ARM_IRQ1_BASE + 20) +#define INTERRUPT_DMA5 (ARM_IRQ1_BASE + 21) +#define INTERRUPT_DMA6 (ARM_IRQ1_BASE + 22) +#define INTERRUPT_DMA7 (ARM_IRQ1_BASE + 23) +#define INTERRUPT_DMA8 (ARM_IRQ1_BASE + 24) +#define INTERRUPT_DMA9 (ARM_IRQ1_BASE + 25) +#define INTERRUPT_DMA10 (ARM_IRQ1_BASE + 26) +#define INTERRUPT_DMA11 (ARM_IRQ1_BASE + 27) +#define INTERRUPT_DMA12 (ARM_IRQ1_BASE + 28) +#define INTERRUPT_AUX (ARM_IRQ1_BASE + 29) +#define INTERRUPT_ARM (ARM_IRQ1_BASE + 30) +#define INTERRUPT_VPUDMA (ARM_IRQ1_BASE + 31) + +#define ARM_IRQ2_BASE 32 +#define INTERRUPT_HOSTPORT (ARM_IRQ2_BASE + 0) +#define INTERRUPT_VIDEOSCALER (ARM_IRQ2_BASE + 1) +#define INTERRUPT_CCP2TX (ARM_IRQ2_BASE + 2) +#define INTERRUPT_SDC (ARM_IRQ2_BASE + 3) +#define INTERRUPT_DSI0 (ARM_IRQ2_BASE + 4) +#define INTERRUPT_AVE (ARM_IRQ2_BASE + 5) +#define INTERRUPT_CAM0 (ARM_IRQ2_BASE + 6) +#define INTERRUPT_CAM1 (ARM_IRQ2_BASE + 7) +#define INTERRUPT_HDMI0 (ARM_IRQ2_BASE + 8) +#define INTERRUPT_HDMI1 (ARM_IRQ2_BASE + 9) +#define INTERRUPT_PIXELVALVE1 (ARM_IRQ2_BASE + 10) +#define INTERRUPT_I2CSPISLV (ARM_IRQ2_BASE + 11) +#define INTERRUPT_DSI1 (ARM_IRQ2_BASE + 12) +#define INTERRUPT_PWA0 (ARM_IRQ2_BASE + 13) +#define INTERRUPT_PWA1 (ARM_IRQ2_BASE + 14) +#define INTERRUPT_CPR (ARM_IRQ2_BASE + 15) +#define INTERRUPT_SMI (ARM_IRQ2_BASE + 16) +#define INTERRUPT_GPIO0 (ARM_IRQ2_BASE + 17) +#define INTERRUPT_GPIO1 (ARM_IRQ2_BASE + 18) +#define INTERRUPT_GPIO2 (ARM_IRQ2_BASE + 19) +#define INTERRUPT_GPIO3 (ARM_IRQ2_BASE + 20) +#define INTERRUPT_VC_I2C (ARM_IRQ2_BASE + 21) +#define INTERRUPT_VC_SPI (ARM_IRQ2_BASE + 22) +#define INTERRUPT_VC_I2SPCM (ARM_IRQ2_BASE + 23) +#define INTERRUPT_VC_SDIO (ARM_IRQ2_BASE + 24) +#define INTERRUPT_VC_UART (ARM_IRQ2_BASE + 25) +#define INTERRUPT_SLIMBUS (ARM_IRQ2_BASE + 26) +#define INTERRUPT_VEC (ARM_IRQ2_BASE + 27) +#define INTERRUPT_CPG (ARM_IRQ2_BASE + 28) +#define INTERRUPT_RNG (ARM_IRQ2_BASE + 29) +#define INTERRUPT_VC_ARASANSDIO (ARM_IRQ2_BASE + 30) +#define INTERRUPT_AVSPMON (ARM_IRQ2_BASE + 31) + +#define ARM_IRQ0_BASE 64 +#define INTERRUPT_ARM_TIMER (ARM_IRQ0_BASE + 0) +#define INTERRUPT_ARM_MAILBOX (ARM_IRQ0_BASE + 1) +#define INTERRUPT_ARM_DOORBELL_0 (ARM_IRQ0_BASE + 2) +#define INTERRUPT_ARM_DOORBELL_1 (ARM_IRQ0_BASE + 3) +#define INTERRUPT_VPU0_HALTED (ARM_IRQ0_BASE + 4) +#define INTERRUPT_VPU1_HALTED (ARM_IRQ0_BASE + 5) +#define INTERRUPT_ILLEGAL_TYPE0 (ARM_IRQ0_BASE + 6) +#define INTERRUPT_ILLEGAL_TYPE1 (ARM_IRQ0_BASE + 7) +#define INTERRUPT_PENDING1 (ARM_IRQ0_BASE + 8) +#define INTERRUPT_PENDING2 (ARM_IRQ0_BASE + 9) +#define INTERRUPT_JPEG (ARM_IRQ0_BASE + 10) +#define INTERRUPT_USB (ARM_IRQ0_BASE + 11) +#define INTERRUPT_3D (ARM_IRQ0_BASE + 12) +#define INTERRUPT_DMA2 (ARM_IRQ0_BASE + 13) +#define INTERRUPT_DMA3 (ARM_IRQ0_BASE + 14) +#define INTERRUPT_I2C (ARM_IRQ0_BASE + 15) +#define INTERRUPT_SPI (ARM_IRQ0_BASE + 16) +#define INTERRUPT_I2SPCM (ARM_IRQ0_BASE + 17) +#define INTERRUPT_SDIO (ARM_IRQ0_BASE + 18) +#define INTERRUPT_UART (ARM_IRQ0_BASE + 19) +#define INTERRUPT_ARASANSDIO (ARM_IRQ0_BASE + 20) + +#define ARM_IRQ_LOCAL_BASE 96 +#define INTERRUPT_ARM_LOCAL_CNTPSIRQ (ARM_IRQ_LOCAL_BASE + 0) +#define INTERRUPT_ARM_LOCAL_CNTPNSIRQ (ARM_IRQ_LOCAL_BASE + 1) +#define INTERRUPT_ARM_LOCAL_CNTHPIRQ (ARM_IRQ_LOCAL_BASE + 2) +#define INTERRUPT_ARM_LOCAL_CNTVIRQ (ARM_IRQ_LOCAL_BASE + 3) +#define INTERRUPT_ARM_LOCAL_MAILBOX0 (ARM_IRQ_LOCAL_BASE + 4) +#define INTERRUPT_ARM_LOCAL_MAILBOX1 (ARM_IRQ_LOCAL_BASE + 5) +#define INTERRUPT_ARM_LOCAL_MAILBOX2 (ARM_IRQ_LOCAL_BASE + 6) +#define INTERRUPT_ARM_LOCAL_MAILBOX3 (ARM_IRQ_LOCAL_BASE + 7) +#define INTERRUPT_ARM_LOCAL_GPU_FAST (ARM_IRQ_LOCAL_BASE + 8) +#define INTERRUPT_ARM_LOCAL_PMU_FAST (ARM_IRQ_LOCAL_BASE + 9) +#define INTERRUPT_ARM_LOCAL_ZERO (ARM_IRQ_LOCAL_BASE + 10) +#define INTERRUPT_ARM_LOCAL_TIMER (ARM_IRQ_LOCAL_BASE + 11) + +/* + * Watchdog + */ +#define PM_RSTC (PM_BASE+0x1c) +#define PM_RSTS (PM_BASE+0x20) +#define PM_WDOG (PM_BASE+0x24) + +#define PM_WDOG_RESET 0000000000 +#define PM_PASSWORD 0x5a000000 +#define PM_WDOG_TIME_SET 0x000fffff +#define PM_RSTC_WRCFG_CLR 0xffffffcf +#define PM_RSTC_WRCFG_SET 0x00000030 +#define PM_RSTC_WRCFG_FULL_RESET 0x00000020 +#define PM_RSTC_RESET 0x00000102 + +#define PM_RSTS_HADPOR_SET 0x00001000 +#define PM_RSTS_HADSRH_SET 0x00000400 +#define PM_RSTS_HADSRF_SET 0x00000200 +#define PM_RSTS_HADSRQ_SET 0x00000100 +#define PM_RSTS_HADWRH_SET 0x00000040 +#define PM_RSTS_HADWRF_SET 0x00000020 +#define PM_RSTS_HADWRQ_SET 0x00000010 +#define PM_RSTS_HADDRH_SET 0x00000004 +#define PM_RSTS_HADDRF_SET 0x00000002 +#define PM_RSTS_HADDRQ_SET 0x00000001 + +#define UART0_CLOCK 3000000 + +#endif + +/* END */ --- linux-raspi2-4.2.0.orig/arch/arm/mach-bcm2709/include/mach/system.h +++ linux-raspi2-4.2.0/arch/arm/mach-bcm2709/include/mach/system.h @@ -0,0 +1,38 @@ +/* + * arch/arm/mach-bcm2708/include/mach/system.h + * + * Copyright (C) 2010 Broadcom + * Copyright (C) 2003 ARM Limited + * Copyright (C) 2000 Deep Blue Solutions 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; 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 + */ +#ifndef __ASM_ARCH_SYSTEM_H +#define __ASM_ARCH_SYSTEM_H + +#include +#include +#include + +static inline void arch_idle(void) +{ + /* + * This should do all the clock switching + * and wait for interrupt tricks + */ + cpu_do_idle(); +} + +#endif --- linux-raspi2-4.2.0.orig/arch/arm/mach-bcm2709/include/mach/timex.h +++ linux-raspi2-4.2.0/arch/arm/mach-bcm2709/include/mach/timex.h @@ -0,0 +1,23 @@ +/* + * arch/arm/mach-bcm2708/include/mach/timex.h + * + * BCM2708 sysem clock frequency + * + * Copyright (C) 2010 Broadcom + * + * 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 CLOCK_TICK_RATE (1000000) --- linux-raspi2-4.2.0.orig/arch/arm/mach-bcm2709/include/mach/uncompress.h +++ linux-raspi2-4.2.0/arch/arm/mach-bcm2709/include/mach/uncompress.h @@ -0,0 +1,84 @@ +/* + * arch/arm/mach-bcn2708/include/mach/uncompress.h + * + * Copyright (C) 2010 Broadcom + * Copyright (C) 2003 ARM Limited + * + * 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 +#include +#include + +#define UART_BAUD 115200 + +#define BCM2708_UART_DR __io(UART0_BASE + UART01x_DR) +#define BCM2708_UART_FR __io(UART0_BASE + UART01x_FR) +#define BCM2708_UART_IBRD __io(UART0_BASE + UART011_IBRD) +#define BCM2708_UART_FBRD __io(UART0_BASE + UART011_FBRD) +#define BCM2708_UART_LCRH __io(UART0_BASE + UART011_LCRH) +#define BCM2708_UART_CR __io(UART0_BASE + UART011_CR) + +/* + * This does not append a newline + */ +static inline void putc(int c) +{ + while (__raw_readl(BCM2708_UART_FR) & UART01x_FR_TXFF) + barrier(); + + __raw_writel(c, BCM2708_UART_DR); +} + +static inline void flush(void) +{ + int fr; + + do { + fr = __raw_readl(BCM2708_UART_FR); + barrier(); + } while ((fr & (UART011_FR_TXFE | UART01x_FR_BUSY)) != UART011_FR_TXFE); +} + +static inline void arch_decomp_setup(void) +{ + int temp, div, rem, frac; + + temp = 16 * UART_BAUD; + div = UART0_CLOCK / temp; + rem = UART0_CLOCK % temp; + temp = (8 * rem) / UART_BAUD; + frac = (temp >> 1) + (temp & 1); + + /* Make sure the UART is disabled before we start */ + __raw_writel(0, BCM2708_UART_CR); + + /* Set the baud rate */ + __raw_writel(div, BCM2708_UART_IBRD); + __raw_writel(frac, BCM2708_UART_FBRD); + + /* Set the UART to 8n1, FIFO enabled */ + __raw_writel(UART01x_LCRH_WLEN_8 | UART01x_LCRH_FEN, BCM2708_UART_LCRH); + + /* Enable the UART */ + __raw_writel(UART01x_CR_UARTEN | UART011_CR_TXE | UART011_CR_RXE, + BCM2708_UART_CR); +} + +/* + * nothing to do + */ +#define arch_decomp_wdog() --- linux-raspi2-4.2.0.orig/arch/arm/mach-bcm2709/include/mach/vc_support.h +++ linux-raspi2-4.2.0/arch/arm/mach-bcm2709/include/mach/vc_support.h @@ -0,0 +1,69 @@ +#ifndef _VC_SUPPORT_H_ +#define _VC_SUPPORT_H_ + +/* + * vc_support.h + * + * Created on: 25 Nov 2012 + * Author: Simon + */ + +enum { +/* + If a MEM_HANDLE_T is discardable, the memory manager may resize it to size + 0 at any time when it is not locked or retained. + */ + MEM_FLAG_DISCARDABLE = 1 << 0, + + /* + If a MEM_HANDLE_T is allocating (or normal), its block of memory will be + accessed in an allocating fashion through the cache. + */ + MEM_FLAG_NORMAL = 0 << 2, + MEM_FLAG_ALLOCATING = MEM_FLAG_NORMAL, + + /* + If a MEM_HANDLE_T is direct, its block of memory will be accessed + directly, bypassing the cache. + */ + MEM_FLAG_DIRECT = 1 << 2, + + /* + If a MEM_HANDLE_T is coherent, its block of memory will be accessed in a + non-allocating fashion through the cache. + */ + MEM_FLAG_COHERENT = 2 << 2, + + /* + If a MEM_HANDLE_T is L1-nonallocating, its block of memory will be accessed by + the VPU in a fashion which is allocating in L2, but only coherent in L1. + */ + MEM_FLAG_L1_NONALLOCATING = (MEM_FLAG_DIRECT | MEM_FLAG_COHERENT), + + /* + If a MEM_HANDLE_T is zero'd, its contents are set to 0 rather than + MEM_HANDLE_INVALID on allocation and resize up. + */ + MEM_FLAG_ZERO = 1 << 4, + + /* + If a MEM_HANDLE_T is uninitialised, it will not be reset to a defined value + (either zero, or all 1's) on allocation. + */ + MEM_FLAG_NO_INIT = 1 << 5, + + /* + Hints. + */ + MEM_FLAG_HINT_PERMALOCK = 1 << 6, /* Likely to be locked for long periods of time. */ +}; + +unsigned int AllocateVcMemory(unsigned int *pHandle, unsigned int size, unsigned int alignment, unsigned int flags); +unsigned int ReleaseVcMemory(unsigned int handle); +unsigned int LockVcMemory(unsigned int *pBusAddress, unsigned int handle); +unsigned int UnlockVcMemory(unsigned int handle); + +unsigned int ExecuteVcCode(unsigned int code, + unsigned int r0, unsigned int r1, unsigned int r2, unsigned int r3, unsigned int r4, unsigned int r5); + +#endif --- linux-raspi2-4.2.0.orig/arch/arm/mach-bcm2709/include/mach/vmalloc.h +++ linux-raspi2-4.2.0/arch/arm/mach-bcm2709/include/mach/vmalloc.h @@ -0,0 +1,20 @@ +/* + * arch/arm/mach-bcm2708/include/mach/vmalloc.h + * + * Copyright (C) 2010 Broadcom + * + * 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 VMALLOC_END (0xff000000) --- linux-raspi2-4.2.0.orig/arch/arm/mach-bcm2709/vc_support.c +++ linux-raspi2-4.2.0/arch/arm/mach-bcm2709/vc_support.c @@ -0,0 +1,318 @@ +/* + * vc_support.c + * + * Created on: 25 Nov 2012 + * Author: Simon + */ + +#include +#include + +#ifdef ECLIPSE_IGNORE + +#define __user +#define __init +#define __exit +#define __iomem +#define KERN_DEBUG +#define KERN_ERR +#define KERN_WARNING +#define KERN_INFO +#define _IOWR(a, b, c) b +#define _IOW(a, b, c) b +#define _IO(a, b) b + +#endif + +/****** VC MAILBOX FUNCTIONALITY ******/ +unsigned int AllocateVcMemory(unsigned int *pHandle, unsigned int size, unsigned int alignment, unsigned int flags) +{ + struct vc_msg + { + unsigned int m_msgSize; + unsigned int m_response; + + struct vc_tag + { + unsigned int m_tagId; + unsigned int m_sendBufferSize; + union { + unsigned int m_sendDataSize; + unsigned int m_recvDataSize; + }; + + struct args + { + union { + unsigned int m_size; + unsigned int m_handle; + }; + unsigned int m_alignment; + unsigned int m_flags; + } m_args; + } m_tag; + + unsigned int m_endTag; + } msg; + int s; + + msg.m_msgSize = sizeof(msg); + msg.m_response = 0; + msg.m_endTag = 0; + + //fill in the tag for the allocation command + msg.m_tag.m_tagId = 0x3000c; + msg.m_tag.m_sendBufferSize = 12; + msg.m_tag.m_sendDataSize = 12; + + //fill in our args + msg.m_tag.m_args.m_size = size; + msg.m_tag.m_args.m_alignment = alignment; + msg.m_tag.m_args.m_flags = flags; + + //run the command + s = bcm_mailbox_property(&msg, sizeof(msg)); + + if (s == 0 && msg.m_response == 0x80000000 && msg.m_tag.m_recvDataSize == 0x80000004) + { + *pHandle = msg.m_tag.m_args.m_handle; + return 0; + } + else + { + printk(KERN_ERR "failed to allocate vc memory: s=%d response=%08x recv data size=%08x\n", + s, msg.m_response, msg.m_tag.m_recvDataSize); + return 1; + } +} + +unsigned int ReleaseVcMemory(unsigned int handle) +{ + struct vc_msg + { + unsigned int m_msgSize; + unsigned int m_response; + + struct vc_tag + { + unsigned int m_tagId; + unsigned int m_sendBufferSize; + union { + unsigned int m_sendDataSize; + unsigned int m_recvDataSize; + }; + + struct args + { + union { + unsigned int m_handle; + unsigned int m_error; + }; + } m_args; + } m_tag; + + unsigned int m_endTag; + } msg; + int s; + + msg.m_msgSize = sizeof(msg); + msg.m_response = 0; + msg.m_endTag = 0; + + //fill in the tag for the release command + msg.m_tag.m_tagId = 0x3000f; + msg.m_tag.m_sendBufferSize = 4; + msg.m_tag.m_sendDataSize = 4; + + //pass across the handle + msg.m_tag.m_args.m_handle = handle; + + s = bcm_mailbox_property(&msg, sizeof(msg)); + + if (s == 0 && msg.m_response == 0x80000000 && msg.m_tag.m_recvDataSize == 0x80000004 && msg.m_tag.m_args.m_error == 0) + return 0; + else + { + printk(KERN_ERR "failed to release vc memory: s=%d response=%08x recv data size=%08x error=%08x\n", + s, msg.m_response, msg.m_tag.m_recvDataSize, msg.m_tag.m_args.m_error); + return 1; + } +} + +unsigned int LockVcMemory(unsigned int *pBusAddress, unsigned int handle) +{ + struct vc_msg + { + unsigned int m_msgSize; + unsigned int m_response; + + struct vc_tag + { + unsigned int m_tagId; + unsigned int m_sendBufferSize; + union { + unsigned int m_sendDataSize; + unsigned int m_recvDataSize; + }; + + struct args + { + union { + unsigned int m_handle; + unsigned int m_busAddress; + }; + } m_args; + } m_tag; + + unsigned int m_endTag; + } msg; + int s; + + msg.m_msgSize = sizeof(msg); + msg.m_response = 0; + msg.m_endTag = 0; + + //fill in the tag for the lock command + msg.m_tag.m_tagId = 0x3000d; + msg.m_tag.m_sendBufferSize = 4; + msg.m_tag.m_sendDataSize = 4; + + //pass across the handle + msg.m_tag.m_args.m_handle = handle; + + s = bcm_mailbox_property(&msg, sizeof(msg)); + + if (s == 0 && msg.m_response == 0x80000000 && msg.m_tag.m_recvDataSize == 0x80000004) + { + //pick out the bus address + *pBusAddress = msg.m_tag.m_args.m_busAddress; + return 0; + } + else + { + printk(KERN_ERR "failed to lock vc memory: s=%d response=%08x recv data size=%08x\n", + s, msg.m_response, msg.m_tag.m_recvDataSize); + return 1; + } +} + +unsigned int UnlockVcMemory(unsigned int handle) +{ + struct vc_msg + { + unsigned int m_msgSize; + unsigned int m_response; + + struct vc_tag + { + unsigned int m_tagId; + unsigned int m_sendBufferSize; + union { + unsigned int m_sendDataSize; + unsigned int m_recvDataSize; + }; + + struct args + { + union { + unsigned int m_handle; + unsigned int m_error; + }; + } m_args; + } m_tag; + + unsigned int m_endTag; + } msg; + int s; + + msg.m_msgSize = sizeof(msg); + msg.m_response = 0; + msg.m_endTag = 0; + + //fill in the tag for the unlock command + msg.m_tag.m_tagId = 0x3000e; + msg.m_tag.m_sendBufferSize = 4; + msg.m_tag.m_sendDataSize = 4; + + //pass across the handle + msg.m_tag.m_args.m_handle = handle; + + s = bcm_mailbox_property(&msg, sizeof(msg)); + + //check the error code too + if (s == 0 && msg.m_response == 0x80000000 && msg.m_tag.m_recvDataSize == 0x80000004 && msg.m_tag.m_args.m_error == 0) + return 0; + else + { + printk(KERN_ERR "failed to unlock vc memory: s=%d response=%08x recv data size=%08x error%08x\n", + s, msg.m_response, msg.m_tag.m_recvDataSize, msg.m_tag.m_args.m_error); + return 1; + } +} + +unsigned int ExecuteVcCode(unsigned int code, + unsigned int r0, unsigned int r1, unsigned int r2, unsigned int r3, unsigned int r4, unsigned int r5) +{ + struct vc_msg + { + unsigned int m_msgSize; + unsigned int m_response; + + struct vc_tag + { + unsigned int m_tagId; + unsigned int m_sendBufferSize; + union { + unsigned int m_sendDataSize; + unsigned int m_recvDataSize; + }; + + struct args + { + union { + unsigned int m_pCode; + unsigned int m_return; + }; + unsigned int m_r0; + unsigned int m_r1; + unsigned int m_r2; + unsigned int m_r3; + unsigned int m_r4; + unsigned int m_r5; + } m_args; + } m_tag; + + unsigned int m_endTag; + } msg; + int s; + + msg.m_msgSize = sizeof(msg); + msg.m_response = 0; + msg.m_endTag = 0; + + //fill in the tag for the unlock command + msg.m_tag.m_tagId = 0x30010; + msg.m_tag.m_sendBufferSize = 28; + msg.m_tag.m_sendDataSize = 28; + + //pass across the handle + msg.m_tag.m_args.m_pCode = code; + msg.m_tag.m_args.m_r0 = r0; + msg.m_tag.m_args.m_r1 = r1; + msg.m_tag.m_args.m_r2 = r2; + msg.m_tag.m_args.m_r3 = r3; + msg.m_tag.m_args.m_r4 = r4; + msg.m_tag.m_args.m_r5 = r5; + + s = bcm_mailbox_property(&msg, sizeof(msg)); + + //check the error code too + if (s == 0 && msg.m_response == 0x80000000 && msg.m_tag.m_recvDataSize == 0x80000004) + return msg.m_tag.m_args.m_return; + else + { + printk(KERN_ERR "failed to execute: s=%d response=%08x recv data size=%08x\n", + s, msg.m_response, msg.m_tag.m_recvDataSize); + return 1; + } +} --- linux-raspi2-4.2.0.orig/arch/arm/mach-exynos/mcpm-exynos.c +++ linux-raspi2-4.2.0/arch/arm/mach-exynos/mcpm-exynos.c @@ -20,6 +20,7 @@ #include #include #include +#include #include "regs-pmu.h" #include "common.h" @@ -70,7 +71,31 @@ cluster >= EXYNOS5420_NR_CLUSTERS) return -EINVAL; - exynos_cpu_power_up(cpunr); + if (!exynos_cpu_power_state(cpunr)) { + exynos_cpu_power_up(cpunr); + + /* + * This assumes the cluster number of the big cores(Cortex A15) + * is 0 and the Little cores(Cortex A7) is 1. + * When the system was booted from the Little core, + * they should be reset during power up cpu. + */ + if (cluster && + cluster == MPIDR_AFFINITY_LEVEL(cpu_logical_map(0), 1)) { + /* + * Before we reset the Little cores, we should wait + * the SPARE2 register is set to 1 because the init + * codes of the iROM will set the register after + * initialization. + */ + while (!pmu_raw_readl(S5P_PMU_SPARE2)) + udelay(10); + + pmu_raw_writel(EXYNOS5420_KFC_CORE_RESET(cpu), + EXYNOS_SWRESET); + } + } + return 0; } --- linux-raspi2-4.2.0.orig/arch/arm/mach-exynos/pm_domains.c +++ linux-raspi2-4.2.0/arch/arm/mach-exynos/pm_domains.c @@ -200,15 +200,15 @@ args.args_count = 0; child_domain = of_genpd_get_from_provider(&args); if (IS_ERR(child_domain)) - goto next_pd; + continue; if (of_parse_phandle_with_args(np, "power-domains", "#power-domain-cells", 0, &args) != 0) - goto next_pd; + continue; parent_domain = of_genpd_get_from_provider(&args); if (IS_ERR(parent_domain)) - goto next_pd; + continue; if (pm_genpd_add_subdomain(parent_domain, child_domain)) pr_warn("%s failed to add subdomain: %s\n", @@ -216,8 +216,6 @@ else pr_info("%s has as child subdomain: %s.\n", parent_domain->name, child_domain->name); -next_pd: - of_node_put(np); } return 0; --- linux-raspi2-4.2.0.orig/arch/arm/mach-exynos/regs-pmu.h +++ linux-raspi2-4.2.0/arch/arm/mach-exynos/regs-pmu.h @@ -513,6 +513,12 @@ #define SPREAD_ENABLE 0xF #define SPREAD_USE_STANDWFI 0xF +#define EXYNOS5420_KFC_CORE_RESET0 BIT(8) +#define EXYNOS5420_KFC_ETM_RESET0 BIT(20) + +#define EXYNOS5420_KFC_CORE_RESET(_nr) \ + ((EXYNOS5420_KFC_CORE_RESET0 | EXYNOS5420_KFC_ETM_RESET0) << (_nr)) + #define EXYNOS5420_BB_CON1 0x0784 #define EXYNOS5420_BB_SEL_EN BIT(31) #define EXYNOS5420_BB_PMOS_EN BIT(7) --- linux-raspi2-4.2.0.orig/arch/arm/mach-highbank/Makefile +++ linux-raspi2-4.2.0/arch/arm/mach-highbank/Makefile @@ -1,3 +1,5 @@ +KBUILD_CFLAGS += -I$(srctree)/arch/arm/mach-highbank/include + obj-y := highbank.o system.o smc.o plus_sec := $(call as-instr,.arch_extension sec,+sec) --- linux-raspi2-4.2.0.orig/arch/arm/mach-omap2/board-generic.c +++ linux-raspi2-4.2.0/arch/arm/mach-omap2/board-generic.c @@ -20,13 +20,6 @@ #include "common.h" -#if !(defined(CONFIG_ARCH_OMAP2) || defined(CONFIG_ARCH_OMAP3)) -#define intc_of_init NULL -#endif -#ifndef CONFIG_ARCH_OMAP4 -#define gic_of_init NULL -#endif - static const struct of_device_id omap_dt_match_table[] __initconst = { { .compatible = "simple-bus", }, { .compatible = "ti,omap-infra", }, --- linux-raspi2-4.2.0.orig/arch/arm/mach-omap2/clockdomains7xx_data.c +++ linux-raspi2-4.2.0/arch/arm/mach-omap2/clockdomains7xx_data.c @@ -331,7 +331,7 @@ .dep_bit = DRA7XX_L4PER2_STATDEP_SHIFT, .wkdep_srcs = l4per2_wkup_sleep_deps, .sleepdep_srcs = l4per2_wkup_sleep_deps, - .flags = CLKDM_CAN_HWSUP_SWSUP, + .flags = CLKDM_CAN_SWSUP, }; static struct clockdomain mpu0_7xx_clkdm = { --- linux-raspi2-4.2.0.orig/arch/arm/mach-omap2/omap_hwmod.h +++ linux-raspi2-4.2.0/arch/arm/mach-omap2/omap_hwmod.h @@ -41,6 +41,7 @@ extern struct omap_hwmod_sysc_fields omap_hwmod_sysc_type1; extern struct omap_hwmod_sysc_fields omap_hwmod_sysc_type2; extern struct omap_hwmod_sysc_fields omap_hwmod_sysc_type3; +extern struct omap_hwmod_sysc_fields omap_hwmod_sysc_type4; /* * OCP SYSCONFIG bit shifts/masks TYPE1. These are for IPs compliant @@ -81,6 +82,16 @@ #define SYSC_TYPE3_MIDLEMODE_SHIFT 2 #define SYSC_TYPE3_MIDLEMODE_MASK (0x3 << SYSC_TYPE3_MIDLEMODE_SHIFT) +/* + * OCP SYSCONFIG bit shifts/masks TYPE4. + */ +#define SYSC_TYPE4_SIDLEMODE_SHIFT 2 +#define SYSC_TYPE4_SIDLEMODE_MASK (0x3 << SYSC_TYPE4_SIDLEMODE_SHIFT) +#define SYSC_TYPE4_SOFTRESET_SHIFT 1 +#define SYSC_TYPE4_SOFTRESET_MASK (1 << SYSC_TYPE4_SOFTRESET_SHIFT) +#define SYSC_TYPE4_AUTOIDLE_SHIFT 0 +#define SYSC_TYPE4_AUTOIDLE_MASK (1 << SYSC_TYPE4_AUTOIDLE_SHIFT) + /* OCP SYSSTATUS bit shifts/masks */ #define SYSS_RESETDONE_SHIFT 0 #define SYSS_RESETDONE_MASK (1 << SYSS_RESETDONE_SHIFT) --- linux-raspi2-4.2.0.orig/arch/arm/mach-omap2/omap_hwmod_33xx_43xx_ipblock_data.c +++ linux-raspi2-4.2.0/arch/arm/mach-omap2/omap_hwmod_33xx_43xx_ipblock_data.c @@ -223,6 +223,7 @@ .sysc_offs = 0x84, .syss_offs = 0x88, .sysc_flags = SYSS_HAS_RESET_STATUS, + .sysc_fields = &omap_hwmod_sysc_type4, }; static struct omap_hwmod_class am33xx_aes0_hwmod_class = { --- linux-raspi2-4.2.0.orig/arch/arm/mach-omap2/omap_hwmod_44xx_data.c +++ linux-raspi2-4.2.0/arch/arm/mach-omap2/omap_hwmod_44xx_data.c @@ -4701,6 +4701,59 @@ .user = OCP_USER_MPU | OCP_USER_SDMA, }; +/* + Crypto modules AES0/1 belong to: + PD_L4_PER power domain + CD_L4_SEC clock domain + On the L3, the AES modules are mapped to + L3_CLK2: Peripherals and multimedia sub clock domain +*/ + +static struct omap_hwmod_class_sysconfig omap4_aes1_sysc = { + .rev_offs = 0x80, + .sysc_offs = 0x84, + .syss_offs = 0x88, + .sysc_flags = SYSS_HAS_RESET_STATUS, + .sysc_fields = &omap_hwmod_sysc_type4, +}; + +static struct omap_hwmod_class omap4_aes1_hwmod_class = { + .name = "aes1", + .sysc = &omap4_aes1_sysc, +}; + +static struct omap_hwmod omap4_aes1_hwmod = { + .name = "aes", + .class = &omap4_aes1_hwmod_class, + .clkdm_name = "l4_secure_clkdm", + .main_clk = "aes1_fck", + .prcm = { + .omap4 = { + .clkctrl_offs = OMAP4_CM_L4SEC_AES1_CLKCTRL_OFFSET, + .context_offs = OMAP4_RM_L4SEC_AES1_CONTEXT_OFFSET, + .modulemode = MODULEMODE_SWCTRL, + }, + }, +}; + +/* l3_main_2 -> aes1 */ +static struct omap_hwmod_addr_space omap4_aes1_addrs[] = { + { + .pa_start = 0x4B500000, + .pa_end = 0x4B500000 + SZ_1M - 1, + .flags = ADDR_TYPE_RT + }, + { } +}; + +static struct omap_hwmod_ocp_if omap4_l3_main_2__aes1 = { + .master = &omap44xx_l3_main_2_hwmod, + .slave = &omap4_aes1_hwmod, + .clk = "aes1_fck", + .addr = omap4_aes1_addrs, + .user = OCP_USER_MPU | OCP_USER_SDMA, +}; + static struct omap_hwmod_ocp_if *omap44xx_hwmod_ocp_ifs[] __initdata = { &omap44xx_l3_main_1__dmm, &omap44xx_mpu__dmm, @@ -4846,6 +4899,7 @@ &omap44xx_l4_abe__wd_timer3_dma, &omap44xx_mpu__emif1, &omap44xx_mpu__emif2, + &omap4_l3_main_2__aes1, NULL, }; --- linux-raspi2-4.2.0.orig/arch/arm/mach-omap2/omap_hwmod_common_data.c +++ linux-raspi2-4.2.0/arch/arm/mach-omap2/omap_hwmod_common_data.c @@ -59,6 +59,16 @@ .sidle_shift = SYSC_TYPE3_SIDLEMODE_SHIFT, }; +/** + * struct omap_hwmod_sysc_type4 - TYPE4 sysconfig scheme. + * Used by some IPs on AM33xx + */ +struct omap_hwmod_sysc_fields omap_hwmod_sysc_type4 = { + .sidle_shift = SYSC_TYPE4_SIDLEMODE_SHIFT, + .srst_shift = SYSC_TYPE4_SOFTRESET_SHIFT, + .autoidle_shift = SYSC_TYPE4_AUTOIDLE_SHIFT, +}; + struct omap_dss_dispc_dev_attr omap2_3_dss_dispc_dev_attr = { .manager_count = 2, .has_framedonetv_irq = 0 --- linux-raspi2-4.2.0.orig/arch/arm/mach-orion5x/include/mach/irqs.h +++ linux-raspi2-4.2.0/arch/arm/mach-orion5x/include/mach/irqs.h @@ -16,42 +16,42 @@ /* * Orion Main Interrupt Controller */ -#define IRQ_ORION5X_BRIDGE 0 -#define IRQ_ORION5X_DOORBELL_H2C 1 -#define IRQ_ORION5X_DOORBELL_C2H 2 -#define IRQ_ORION5X_UART0 3 -#define IRQ_ORION5X_UART1 4 -#define IRQ_ORION5X_I2C 5 -#define IRQ_ORION5X_GPIO_0_7 6 -#define IRQ_ORION5X_GPIO_8_15 7 -#define IRQ_ORION5X_GPIO_16_23 8 -#define IRQ_ORION5X_GPIO_24_31 9 -#define IRQ_ORION5X_PCIE0_ERR 10 -#define IRQ_ORION5X_PCIE0_INT 11 -#define IRQ_ORION5X_USB1_CTRL 12 -#define IRQ_ORION5X_DEV_BUS_ERR 14 -#define IRQ_ORION5X_PCI_ERR 15 -#define IRQ_ORION5X_USB_BR_ERR 16 -#define IRQ_ORION5X_USB0_CTRL 17 -#define IRQ_ORION5X_ETH_RX 18 -#define IRQ_ORION5X_ETH_TX 19 -#define IRQ_ORION5X_ETH_MISC 20 -#define IRQ_ORION5X_ETH_SUM 21 -#define IRQ_ORION5X_ETH_ERR 22 -#define IRQ_ORION5X_IDMA_ERR 23 -#define IRQ_ORION5X_IDMA_0 24 -#define IRQ_ORION5X_IDMA_1 25 -#define IRQ_ORION5X_IDMA_2 26 -#define IRQ_ORION5X_IDMA_3 27 -#define IRQ_ORION5X_CESA 28 -#define IRQ_ORION5X_SATA 29 -#define IRQ_ORION5X_XOR0 30 -#define IRQ_ORION5X_XOR1 31 +#define IRQ_ORION5X_BRIDGE (1 + 0) +#define IRQ_ORION5X_DOORBELL_H2C (1 + 1) +#define IRQ_ORION5X_DOORBELL_C2H (1 + 2) +#define IRQ_ORION5X_UART0 (1 + 3) +#define IRQ_ORION5X_UART1 (1 + 4) +#define IRQ_ORION5X_I2C (1 + 5) +#define IRQ_ORION5X_GPIO_0_7 (1 + 6) +#define IRQ_ORION5X_GPIO_8_15 (1 + 7) +#define IRQ_ORION5X_GPIO_16_23 (1 + 8) +#define IRQ_ORION5X_GPIO_24_31 (1 + 9) +#define IRQ_ORION5X_PCIE0_ERR (1 + 10) +#define IRQ_ORION5X_PCIE0_INT (1 + 11) +#define IRQ_ORION5X_USB1_CTRL (1 + 12) +#define IRQ_ORION5X_DEV_BUS_ERR (1 + 14) +#define IRQ_ORION5X_PCI_ERR (1 + 15) +#define IRQ_ORION5X_USB_BR_ERR (1 + 16) +#define IRQ_ORION5X_USB0_CTRL (1 + 17) +#define IRQ_ORION5X_ETH_RX (1 + 18) +#define IRQ_ORION5X_ETH_TX (1 + 19) +#define IRQ_ORION5X_ETH_MISC (1 + 20) +#define IRQ_ORION5X_ETH_SUM (1 + 21) +#define IRQ_ORION5X_ETH_ERR (1 + 22) +#define IRQ_ORION5X_IDMA_ERR (1 + 23) +#define IRQ_ORION5X_IDMA_0 (1 + 24) +#define IRQ_ORION5X_IDMA_1 (1 + 25) +#define IRQ_ORION5X_IDMA_2 (1 + 26) +#define IRQ_ORION5X_IDMA_3 (1 + 27) +#define IRQ_ORION5X_CESA (1 + 28) +#define IRQ_ORION5X_SATA (1 + 29) +#define IRQ_ORION5X_XOR0 (1 + 30) +#define IRQ_ORION5X_XOR1 (1 + 31) /* * Orion General Purpose Pins */ -#define IRQ_ORION5X_GPIO_START 32 +#define IRQ_ORION5X_GPIO_START 33 #define NR_GPIO_IRQS 32 #define NR_IRQS (IRQ_ORION5X_GPIO_START + NR_GPIO_IRQS) --- linux-raspi2-4.2.0.orig/arch/arm/mach-orion5x/irq.c +++ linux-raspi2-4.2.0/arch/arm/mach-orion5x/irq.c @@ -42,7 +42,7 @@ stat = readl_relaxed(MAIN_IRQ_CAUSE); stat &= readl_relaxed(MAIN_IRQ_MASK); if (stat) { - unsigned int hwirq = __fls(stat); + unsigned int hwirq = 1 + __fls(stat); handle_IRQ(hwirq, regs); return; } @@ -51,7 +51,7 @@ void __init orion5x_init_irq(void) { - orion_irq_init(0, MAIN_IRQ_MASK); + orion_irq_init(1, MAIN_IRQ_MASK); #ifdef CONFIG_MULTI_IRQ_HANDLER set_handle_irq(orion5x_legacy_handle_irq); --- linux-raspi2-4.2.0.orig/arch/arm/mach-pxa/include/mach/pxa27x.h +++ linux-raspi2-4.2.0/arch/arm/mach-pxa/include/mach/pxa27x.h @@ -19,7 +19,7 @@ #define ARB_CORE_PARK (1<<24) /* Be parked with core when idle */ #define ARB_LOCK_FLAG (1<<23) /* Only Locking masters gain access to the bus */ -extern int __init pxa27x_set_pwrmode(unsigned int mode); +extern int pxa27x_set_pwrmode(unsigned int mode); extern void pxa27x_cpu_pm_enter(suspend_state_t state); #endif /* __MACH_PXA27x_H */ --- linux-raspi2-4.2.0.orig/arch/arm/mach-pxa/pxa27x.c +++ linux-raspi2-4.2.0/arch/arm/mach-pxa/pxa27x.c @@ -84,7 +84,7 @@ */ static unsigned int pwrmode = PWRMODE_SLEEP; -int __init pxa27x_set_pwrmode(unsigned int mode) +int pxa27x_set_pwrmode(unsigned int mode) { switch (mode) { case PWRMODE_SLEEP: --- linux-raspi2-4.2.0.orig/arch/arm/mach-rockchip/platsmp.c +++ linux-raspi2-4.2.0/arch/arm/mach-rockchip/platsmp.c @@ -72,29 +72,22 @@ static int pmu_set_power_domain(int pd, bool on) { u32 val = (on) ? 0 : BIT(pd); + struct reset_control *rstc = rockchip_get_core_reset(pd); int ret; + if (IS_ERR(rstc) && read_cpuid_part() != ARM_CPU_PART_CORTEX_A9) { + pr_err("%s: could not get reset control for core %d\n", + __func__, pd); + return PTR_ERR(rstc); + } + /* * We need to soft reset the cpu when we turn off the cpu power domain, * or else the active processors might be stalled when the individual * processor is powered down. */ - if (read_cpuid_part() != ARM_CPU_PART_CORTEX_A9) { - struct reset_control *rstc = rockchip_get_core_reset(pd); - - if (IS_ERR(rstc)) { - pr_err("%s: could not get reset control for core %d\n", - __func__, pd); - return PTR_ERR(rstc); - } - - if (on) - reset_control_deassert(rstc); - else - reset_control_assert(rstc); - - reset_control_put(rstc); - } + if (!IS_ERR(rstc) && !on) + reset_control_assert(rstc); ret = regmap_update_bits(pmu, PMU_PWRDN_CON, BIT(pd), val); if (ret < 0) { @@ -112,6 +105,12 @@ } } + if (!IS_ERR(rstc)) { + if (on) + reset_control_deassert(rstc); + reset_control_put(rstc); + } + return 0; } @@ -146,8 +145,12 @@ * the mailbox: * sram_base_addr + 4: 0xdeadbeaf * sram_base_addr + 8: start address for pc + * The cpu0 need to wait the other cpus other than cpu0 entering + * the wfe state.The wait time is affected by many aspects. + * (e.g: cpu frequency, bootrom frequency, sram frequency, ...) * */ - udelay(10); + mdelay(1); /* ensure the cpus other than cpu0 to startup */ + writel(virt_to_phys(secondary_startup), sram_base_addr + 8); writel(0xDEADBEAF, sram_base_addr + 4); dsb_sev(); --- linux-raspi2-4.2.0.orig/arch/arm/mach-tegra/board-paz00.c +++ linux-raspi2-4.2.0/arch/arm/mach-tegra/board-paz00.c @@ -39,8 +39,8 @@ static struct gpiod_lookup_table wifi_gpio_lookup = { .dev_id = "rfkill_gpio", .table = { - GPIO_LOOKUP_IDX("tegra-gpio", 25, NULL, 0, 0), - GPIO_LOOKUP_IDX("tegra-gpio", 85, NULL, 1, 0), + GPIO_LOOKUP("tegra-gpio", 25, "reset", 0), + GPIO_LOOKUP("tegra-gpio", 85, "shutdown", 0), { }, }, }; --- linux-raspi2-4.2.0.orig/arch/arm/mach-ux500/Makefile +++ linux-raspi2-4.2.0/arch/arm/mach-ux500/Makefile @@ -7,7 +7,7 @@ obj-$(CONFIG_UX500_SOC_DB8500) += cpu-db8500.o obj-$(CONFIG_MACH_MOP500) += board-mop500-regulators.o \ board-mop500-audio.o -obj-$(CONFIG_SMP) += platsmp.o headsmp.o +obj-$(CONFIG_SMP) += platsmp.o obj-$(CONFIG_HOTPLUG_CPU) += hotplug.o obj-$(CONFIG_PM_GENERIC_DOMAINS) += pm_domains.o --- linux-raspi2-4.2.0.orig/arch/arm/mach-ux500/cpu-db8500.c +++ linux-raspi2-4.2.0/arch/arm/mach-ux500/cpu-db8500.c @@ -154,7 +154,6 @@ }; DT_MACHINE_START(U8500_DT, "ST-Ericsson Ux5x0 platform (Device Tree Support)") - .smp = smp_ops(ux500_smp_ops), .map_io = u8500_map_io, .init_irq = ux500_init_irq, /* we re-use nomadik timer here */ --- linux-raspi2-4.2.0.orig/arch/arm/mach-ux500/platsmp.c +++ linux-raspi2-4.2.0/arch/arm/mach-ux500/platsmp.c @@ -28,135 +28,81 @@ #include "db8500-regs.h" #include "id.h" -static void __iomem *scu_base; -static void __iomem *backupram; - -/* This is called from headsmp.S to wakeup the secondary core */ -extern void u8500_secondary_startup(void); - -/* - * Write pen_release in a way that is guaranteed to be visible to all - * observers, irrespective of whether they're taking part in coherency - * or not. This is necessary for the hotplug code to work reliably. - */ -static void write_pen_release(int val) -{ - pen_release = val; - smp_wmb(); - sync_cache_w(&pen_release); -} - -static DEFINE_SPINLOCK(boot_lock); - -static void ux500_secondary_init(unsigned int cpu) -{ - /* - * let the primary processor know we're out of the - * pen, then head off into the C entry point - */ - write_pen_release(-1); - - /* - * Synchronise with the boot thread. - */ - spin_lock(&boot_lock); - spin_unlock(&boot_lock); -} +/* Magic triggers in backup RAM */ +#define UX500_CPU1_JUMPADDR_OFFSET 0x1FF4 +#define UX500_CPU1_WAKEMAGIC_OFFSET 0x1FF0 -static int ux500_boot_secondary(unsigned int cpu, struct task_struct *idle) +static void wakeup_secondary(void) { - unsigned long timeout; - - /* - * set synchronisation state between this boot processor - * and the secondary one - */ - spin_lock(&boot_lock); - - /* - * The secondary processor is waiting to be released from - * the holding pen - release it, then wait for it to flag - * that it has been released by resetting pen_release. - */ - write_pen_release(cpu_logical_map(cpu)); - - arch_send_wakeup_ipi_mask(cpumask_of(cpu)); + struct device_node *np; + static void __iomem *backupram; - timeout = jiffies + (1 * HZ); - while (time_before(jiffies, timeout)) { - if (pen_release == -1) - break; + np = of_find_compatible_node(NULL, NULL, "ste,dbx500-backupram"); + if (!np) { + pr_err("No backupram base address\n"); + return; + } + backupram = of_iomap(np, 0); + of_node_put(np); + if (!backupram) { + pr_err("No backupram remap\n"); + return; } /* - * now the secondary core is starting up let it run its - * calibrations, then wait for it to finish - */ - spin_unlock(&boot_lock); - - return pen_release != -1 ? -ENOSYS : 0; -} - -static void __init wakeup_secondary(void) -{ - /* * write the address of secondary startup into the backup ram register * at offset 0x1FF4, then write the magic number 0xA1FEED01 to the * backup ram register at offset 0x1FF0, which is what boot rom code - * is waiting for. This would wake up the secondary core from WFE + * is waiting for. This will wake up the secondary core from WFE. */ -#define UX500_CPU1_JUMPADDR_OFFSET 0x1FF4 - __raw_writel(virt_to_phys(u8500_secondary_startup), - backupram + UX500_CPU1_JUMPADDR_OFFSET); - -#define UX500_CPU1_WAKEMAGIC_OFFSET 0x1FF0 - __raw_writel(0xA1FEED01, - backupram + UX500_CPU1_WAKEMAGIC_OFFSET); + writel(virt_to_phys(secondary_startup), + backupram + UX500_CPU1_JUMPADDR_OFFSET); + writel(0xA1FEED01, + backupram + UX500_CPU1_WAKEMAGIC_OFFSET); /* make sure write buffer is drained */ mb(); + iounmap(backupram); } -/* - * Initialise the CPU possible map early - this describes the CPUs - * which may be present or become present in the system. - */ -static void __init ux500_smp_init_cpus(void) +static void __init ux500_smp_prepare_cpus(unsigned int max_cpus) { - unsigned int i, ncores; struct device_node *np; + static void __iomem *scu_base; + unsigned int ncores; + int i; np = of_find_compatible_node(NULL, NULL, "arm,cortex-a9-scu"); + if (!np) { + pr_err("No SCU base address\n"); + return; + } scu_base = of_iomap(np, 0); of_node_put(np); - if (!scu_base) + if (!scu_base) { + pr_err("No SCU remap\n"); return; - backupram = ioremap(U8500_BACKUPRAM0_BASE, SZ_8K); - ncores = scu_get_core_count(scu_base); - - /* sanity check */ - if (ncores > nr_cpu_ids) { - pr_warn("SMP: %u cores greater than maximum (%u), clipping\n", - ncores, nr_cpu_ids); - ncores = nr_cpu_ids; } + scu_enable(scu_base); + ncores = scu_get_core_count(scu_base); for (i = 0; i < ncores; i++) set_cpu_possible(i, true); + iounmap(scu_base); } -static void __init ux500_smp_prepare_cpus(unsigned int max_cpus) +static int ux500_boot_secondary(unsigned int cpu, struct task_struct *idle) { - scu_enable(scu_base); wakeup_secondary(); + arch_send_wakeup_ipi_mask(cpumask_of(cpu)); + return 0; } struct smp_operations ux500_smp_ops __initdata = { - .smp_init_cpus = ux500_smp_init_cpus, .smp_prepare_cpus = ux500_smp_prepare_cpus, - .smp_secondary_init = ux500_secondary_init, .smp_boot_secondary = ux500_boot_secondary, #ifdef CONFIG_HOTPLUG_CPU .cpu_die = ux500_cpu_die, #endif }; +CPU_METHOD_OF_DECLARE(ux500_smp, "ste,dbx500-smp", &ux500_smp_ops); --- linux-raspi2-4.2.0.orig/arch/arm/mach-ux500/setup.h +++ linux-raspi2-4.2.0/arch/arm/mach-ux500/setup.h @@ -26,7 +26,6 @@ extern void ux500_timer_init(void); -extern struct smp_operations ux500_smp_ops; extern void ux500_cpu_die(unsigned int cpu); #endif /* __ASM_ARCH_SETUP_H */ --- linux-raspi2-4.2.0.orig/arch/arm/mm/Kconfig +++ linux-raspi2-4.2.0/arch/arm/mm/Kconfig @@ -358,7 +358,7 @@ # ARMv6 config CPU_V6 - bool "Support ARM V6 processor" if (!ARCH_MULTIPLATFORM || ARCH_MULTI_V6) && (ARCH_INTEGRATOR || MACH_REALVIEW_EB || MACH_REALVIEW_PBX) + bool "Support ARM V6 processor" if (!ARCH_MULTIPLATFORM || ARCH_MULTI_V6) && (ARCH_INTEGRATOR || MACH_REALVIEW_EB || MACH_REALVIEW_PBX || MACH_BCM2708) select CPU_32v6 select CPU_ABRT_EV6 select CPU_CACHE_V6 --- linux-raspi2-4.2.0.orig/arch/arm/mm/dma-mapping.c +++ linux-raspi2-4.2.0/arch/arm/mm/dma-mapping.c @@ -1413,12 +1413,19 @@ unsigned long uaddr = vma->vm_start; unsigned long usize = vma->vm_end - vma->vm_start; struct page **pages = __iommu_get_pages(cpu_addr, attrs); + unsigned long nr_pages = PAGE_ALIGN(size) >> PAGE_SHIFT; + unsigned long off = vma->vm_pgoff; vma->vm_page_prot = __get_dma_pgprot(attrs, vma->vm_page_prot); if (!pages) return -ENXIO; + if (off >= nr_pages || (usize >> PAGE_SHIFT) > nr_pages - off) + return -ENXIO; + + pages += off; + do { int ret = vm_insert_page(vma, uaddr, *pages++); if (ret) { --- linux-raspi2-4.2.0.orig/arch/arm/mm/proc-v6.S +++ linux-raspi2-4.2.0/arch/arm/mm/proc-v6.S @@ -73,10 +73,19 @@ * * IRQs are already disabled. */ + +/* See jira SW-5991 for details of this workaround */ ENTRY(cpu_v6_do_idle) - mov r1, #0 - mcr p15, 0, r1, c7, c10, 4 @ DWB - WFI may enter a low-power mode - mcr p15, 0, r1, c7, c0, 4 @ wait for interrupt + .align 5 + mov r1, #2 +1: subs r1, #1 + nop + mcreq p15, 0, r1, c7, c10, 4 @ DWB - WFI may enter a low-power mode + mcreq p15, 0, r1, c7, c0, 4 @ wait for interrupt + nop + nop + nop + bne 1b ret lr ENTRY(cpu_v6_dcache_clean_area) --- linux-raspi2-4.2.0.orig/arch/arm/mm/proc-v7.S +++ linux-raspi2-4.2.0/arch/arm/mm/proc-v7.S @@ -480,6 +480,7 @@ orr r0, r0, r6 @ set them THUMB( orr r0, r0, #1 << 30 ) @ Thumb exceptions ret lr @ return to head.S:__ret + .space 256 ENDPROC(__v7_setup) .align 2 --- linux-raspi2-4.2.0.orig/arch/arm/plat-orion/common.c +++ linux-raspi2-4.2.0/arch/arm/plat-orion/common.c @@ -495,7 +495,7 @@ d->netdev = &orion_ge00.dev; for (i = 0; i < d->nr_chips; i++) - d->chip[i].host_dev = &orion_ge00_shared.dev; + d->chip[i].host_dev = &orion_ge_mvmdio.dev; orion_switch_device.dev.platform_data = d; platform_device_register(&orion_switch_device); --- linux-raspi2-4.2.0.orig/arch/arm/plat-pxa/ssp.c +++ linux-raspi2-4.2.0/arch/arm/plat-pxa/ssp.c @@ -107,7 +107,6 @@ { .compatible = "mvrl,pxa168-ssp", .data = (void *) PXA168_SSP }, { .compatible = "mrvl,pxa910-ssp", .data = (void *) PXA910_SSP }, { .compatible = "mrvl,ce4100-ssp", .data = (void *) CE4100_SSP }, - { .compatible = "mrvl,lpss-ssp", .data = (void *) LPSS_SSP }, { }, }; MODULE_DEVICE_TABLE(of, pxa_ssp_of_ids); --- linux-raspi2-4.2.0.orig/arch/arm/tools/mach-types +++ linux-raspi2-4.2.0/arch/arm/tools/mach-types @@ -522,6 +522,8 @@ prima2_evb MACH_PRIMA2_EVB PRIMA2_EVB 3103 paz00 MACH_PAZ00 PAZ00 3128 acmenetusfoxg20 MACH_ACMENETUSFOXG20 ACMENETUSFOXG20 3129 +bcm2708 MACH_BCM2708 BCM2708 3138 +bcm2709 MACH_BCM2709 BCM2709 3139 ag5evm MACH_AG5EVM AG5EVM 3189 ics_if_voip MACH_ICS_IF_VOIP ICS_IF_VOIP 3206 wlf_cragg_6410 MACH_WLF_CRAGG_6410 WLF_CRAGG_6410 3207 --- linux-raspi2-4.2.0.orig/arch/arm/vdso/vdsomunge.c +++ linux-raspi2-4.2.0/arch/arm/vdso/vdsomunge.c @@ -45,7 +45,6 @@ * it does. */ -#include #include #include #include @@ -59,6 +58,16 @@ #include #include +#define swab16(x) \ + ((((x) & 0x00ff) << 8) | \ + (((x) & 0xff00) >> 8)) + +#define swab32(x) \ + ((((x) & 0x000000ff) << 24) | \ + (((x) & 0x0000ff00) << 8) | \ + (((x) & 0x00ff0000) >> 8) | \ + (((x) & 0xff000000) >> 24)) + #if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__ #define HOST_ORDER ELFDATA2LSB #elif __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__ @@ -104,17 +113,17 @@ static Elf32_Word read_elf_word(Elf32_Word word, bool swap) { - return swap ? bswap_32(word) : word; + return swap ? swab32(word) : word; } static Elf32_Half read_elf_half(Elf32_Half half, bool swap) { - return swap ? bswap_16(half) : half; + return swap ? swab16(half) : half; } static void write_elf_word(Elf32_Word val, Elf32_Word *dst, bool swap) { - *dst = swap ? bswap_32(val) : val; + *dst = swap ? swab32(val) : val; } int main(int argc, char **argv) --- linux-raspi2-4.2.0.orig/arch/arm64/Kconfig +++ linux-raspi2-4.2.0/arch/arm64/Kconfig @@ -72,6 +72,7 @@ select HAVE_PERF_USER_STACK_DUMP select HAVE_RCU_TABLE_FREE select HAVE_SYSCALL_TRACEPOINTS + select HAVE_MEMBLOCK_NODE_MAP if NUMA select IRQ_DOMAIN select IRQ_FORCED_THREADING select MODULES_USE_ELF_RELA @@ -104,6 +105,10 @@ config STACKTRACE_SUPPORT def_bool y +config ILLEGAL_POINTER_VALUE + hex + default 0xdead000000000000 + config LOCKDEP_SUPPORT def_bool y @@ -417,6 +422,49 @@ If unsure, say Y. +config ARM64_ERRATUM_843419 + bool "Cortex-A53: 843419: A load or store might access an incorrect address" + depends on MODULES + default y + help + This option builds kernel modules using the large memory model in + order to avoid the use of the ADRP instruction, which can cause + a subsequent memory access to use an incorrect address on Cortex-A53 + parts up to r0p4. + + Note that the kernel itself must be linked with a version of ld + which fixes potentially affected ADRP instructions through the + use of veneers. + + If unsure, say Y. + +config CAVIUM_ERRATUM_22375 + bool "Cavium erratum 22375, 24313" + default y + help + Enable workaround for erratum 22375, 24313. + + This implements two gicv3-its errata workarounds for ThunderX. Both + with small impact affecting only ITS table allocation. + + erratum 22375: only alloc 8MB table size + erratum 24313: ignore memory access type + + The fixes are in ITS initialization and basically ignore memory access + type and table size provided by the TYPER and BASER registers. + + If unsure, say Y. + +config CAVIUM_ERRATUM_23154 + bool "Cavium erratum 23154: Access to ICC_IAR1_EL1 is not sync'ed" + default y + help + The gicv3 of ThunderX requires a modified version for + reading the IAR status to ensure data synchronization + (access to icc_iar1_el1 is not sync'ed before and after). + + If unsure, say Y. + endmenu @@ -517,6 +565,37 @@ Say Y here to experiment with turning CPUs off and on. CPUs can be controlled through /sys/devices/system/cpu. +# Common NUMA Features +config NUMA + bool "Numa Memory Allocation and Scheduler Support" + depends on SMP + help + Enable NUMA (Non Uniform Memory Access) support. + + The kernel will try to allocate memory used by a CPU on the + local memory controller of the CPU and add some more + NUMA awareness to the kernel. + +config ARM64_DT_NUMA + bool "Device Tree NUMA support" + depends on NUMA + help + Enable Device Tree NUMA support. + +config NODES_SHIFT + int "Maximum NUMA Nodes (as a power of 2)" + range 1 10 + default "2" + depends on NEED_MULTIPLE_NODES + help + Specify the maximum number of NUMA Nodes available on the target + system. Increases memory reserved to accommodate various tables. + +config USE_PERCPU_NUMA_NODE_ID + def_bool y + depends on NUMA + + source kernel/Kconfig.preempt config UP_LATE_INIT @@ -767,6 +846,8 @@ source "drivers/Kconfig" +source "ubuntu/Kconfig" + source "drivers/firmware/Kconfig" source "drivers/acpi/Kconfig" --- linux-raspi2-4.2.0.orig/arch/arm64/Makefile +++ linux-raspi2-4.2.0/arch/arm64/Makefile @@ -30,6 +30,10 @@ CHECKFLAGS += -D__aarch64__ +ifeq ($(CONFIG_ARM64_ERRATUM_843419), y) +KBUILD_CFLAGS_MODULE += -mcmodel=large +endif + # Default value head-y := arch/arm64/kernel/head.o --- linux-raspi2-4.2.0.orig/arch/arm64/boot/dts/apm/Makefile +++ linux-raspi2-4.2.0/arch/arm64/boot/dts/apm/Makefile @@ -1,4 +1,5 @@ dtb-$(CONFIG_ARCH_XGENE) += apm-mustang.dtb +dtb-$(CONFIG_ARCH_XGENE) += apm-merlin.dtb always := $(dtb-y) subdir-y := $(dts-dirs) --- linux-raspi2-4.2.0.orig/arch/arm64/boot/dts/apm/apm-merlin.dts +++ linux-raspi2-4.2.0/arch/arm64/boot/dts/apm/apm-merlin.dts @@ -0,0 +1,72 @@ +/* + * dts file for AppliedMicro (APM) Merlin Board + * + * Copyright (C) 2015, Applied Micro Circuits Corporation + * + * 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. + */ + +/dts-v1/; + +/include/ "apm-shadowcat.dtsi" + +/ { + model = "APM X-Gene Merlin board"; + compatible = "apm,merlin", "apm,xgene-shadowcat"; + + chosen { }; + + memory { + device_type = "memory"; + reg = < 0x1 0x00000000 0x0 0x80000000 >; + }; + + gpio-keys { + compatible = "gpio-keys"; + button@1 { + label = "POWER"; + linux,code = <116>; + linux,input-type = <0x1>; + interrupts = <0x0 0x28 0x1>; + }; + }; + + poweroff_mbox: poweroff_mbox@10548000 { + compatible = "syscon"; + reg = <0x0 0x10548000 0x0 0x30>; + }; + + poweroff: poweroff@10548010 { + compatible = "syscon-poweroff"; + regmap = <&poweroff_mbox>; + offset = <0x10>; + mask = <0x1>; + }; +}; + +&serial0 { + status = "ok"; +}; + +&sata1 { + status = "ok"; +}; + +&sata2 { + status = "ok"; +}; + +&sata3 { + status = "ok"; +}; + +&sgenet0 { + status = "ok"; +}; + +&xgenet1 { + status = "ok"; +}; --- linux-raspi2-4.2.0.orig/arch/arm64/boot/dts/apm/apm-mustang.dts +++ linux-raspi2-4.2.0/arch/arm64/boot/dts/apm/apm-mustang.dts @@ -33,6 +33,18 @@ interrupts = <0x0 0x2d 0x1>; }; }; + + poweroff_mbox: poweroff_mbox@10548000 { + compatible = "syscon"; + reg = <0x0 0x10548000 0x0 0x30>; + }; + + poweroff: poweroff@10548010 { + compatible = "syscon-poweroff"; + regmap = <&poweroff_mbox>; + offset = <0x10>; + mask = <0x1>; + }; }; &pcie0clk { --- linux-raspi2-4.2.0.orig/arch/arm64/boot/dts/apm/apm-shadowcat.dtsi +++ linux-raspi2-4.2.0/arch/arm64/boot/dts/apm/apm-shadowcat.dtsi @@ -0,0 +1,271 @@ +/* + * dts file for AppliedMicro (APM) X-Gene Shadowcat SOC + * + * Copyright (C) 2015, Applied Micro Circuits Corporation + * + * 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. + */ + +/ { + compatible = "apm,xgene-shadowcat"; + interrupt-parent = <&gic>; + #address-cells = <2>; + #size-cells = <2>; + + cpus { + #address-cells = <2>; + #size-cells = <0>; + + cpu@000 { + device_type = "cpu"; + compatible = "apm,strega", "arm,armv8"; + reg = <0x0 0x000>; + enable-method = "spin-table"; + cpu-release-addr = <0x1 0x0000fff8>; + }; + cpu@001 { + device_type = "cpu"; + compatible = "apm,strega", "arm,armv8"; + reg = <0x0 0x001>; + enable-method = "spin-table"; + cpu-release-addr = <0x1 0x0000fff8>; + }; + cpu@100 { + device_type = "cpu"; + compatible = "apm,strega", "arm,armv8"; + reg = <0x0 0x100>; + enable-method = "spin-table"; + cpu-release-addr = <0x1 0x0000fff8>; + }; + cpu@101 { + device_type = "cpu"; + compatible = "apm,strega", "arm,armv8"; + reg = <0x0 0x101>; + enable-method = "spin-table"; + cpu-release-addr = <0x1 0x0000fff8>; + }; + cpu@200 { + device_type = "cpu"; + compatible = "apm,strega", "arm,armv8"; + reg = <0x0 0x200>; + enable-method = "spin-table"; + cpu-release-addr = <0x1 0x0000fff8>; + }; + cpu@201 { + device_type = "cpu"; + compatible = "apm,strega", "arm,armv8"; + reg = <0x0 0x201>; + enable-method = "spin-table"; + cpu-release-addr = <0x1 0x0000fff8>; + }; + cpu@300 { + device_type = "cpu"; + compatible = "apm,strega", "arm,armv8"; + reg = <0x0 0x300>; + enable-method = "spin-table"; + cpu-release-addr = <0x1 0x0000fff8>; + }; + cpu@301 { + device_type = "cpu"; + compatible = "apm,strega", "arm,armv8"; + reg = <0x0 0x301>; + enable-method = "spin-table"; + cpu-release-addr = <0x1 0x0000fff8>; + }; + }; + + gic: interrupt-controller@78090000 { + compatible = "arm,cortex-a15-gic"; + #interrupt-cells = <3>; + #address-cells = <2>; + #size-cells = <2>; + interrupt-controller; + interrupts = <1 9 0xf04>; /* GIC Maintenence IRQ */ + ranges = <0 0 0 0x79000000 0x0 0x800000>; /* MSI Range */ + reg = <0x0 0x78090000 0x0 0x10000>, /* GIC Dist */ + <0x0 0x780A0000 0x0 0x20000>, /* GIC CPU */ + <0x0 0x780C0000 0x0 0x10000>, /* GIC VCPU Control */ + <0x0 0x780E0000 0x0 0x20000>; /* GIC VCPU */ + }; + + pmu { + compatible = "arm,armv8-pmuv3"; + interrupts = <1 12 0xff04>; + }; + + timer { + compatible = "arm,armv8-timer"; + interrupts = <1 0 0xff04>, /* Secure Phys IRQ */ + <1 13 0xff04>, /* Non-secure Phys IRQ */ + <1 14 0xff04>, /* Virt IRQ */ + <1 15 0xff04>; /* Hyp IRQ */ + clock-frequency = <50000000>; + }; + + soc { + compatible = "simple-bus"; + #address-cells = <2>; + #size-cells = <2>; + ranges; + + clocks { + #address-cells = <2>; + #size-cells = <2>; + ranges; + + refclk: refclk { + compatible = "fixed-clock"; + #clock-cells = <1>; + clock-frequency = <100000000>; + clock-output-names = "refclk"; + }; + + socpll: socpll@17000120 { + compatible = "apm,xgene-socpll-clock"; + #clock-cells = <1>; + clocks = <&refclk 0>; + reg = <0x0 0x17000120 0x0 0x1000>; + clock-output-names = "socpll"; + }; + + socplldiv2: socplldiv2 { + compatible = "fixed-factor-clock"; + #clock-cells = <1>; + clocks = <&socpll 0>; + clock-mult = <1>; + clock-div = <2>; + clock-output-names = "socplldiv2"; + }; + + pcie0clk: pcie0clk@1f2bc000 { + compatible = "apm,xgene-device-clock"; + #clock-cells = <1>; + clocks = <&socplldiv2 0>; + reg = <0x0 0x1f2bc000 0x0 0x1000>; + reg-names = "csr-reg"; + clock-output-names = "pcie0clk"; + }; + + xge0clk: xge0clk@1f61c000 { + compatible = "apm,xgene-device-clock"; + #clock-cells = <1>; + clocks = <&socplldiv2 0>; + reg = <0x0 0x1f61c000 0x0 0x1000>; + reg-names = "csr-reg"; + enable-mask = <0x3>; + csr-mask = <0x3>; + clock-output-names = "xge0clk"; + }; + + xge1clk: xge1clk@1f62c000 { + compatible = "apm,xgene-device-clock"; + #clock-cells = <1>; + clocks = <&socplldiv2 0>; + reg = <0x0 0x1f62c000 0x0 0x1000>; + reg-names = "csr-reg"; + enable-mask = <0x3>; + csr-mask = <0x3>; + clock-output-names = "xge1clk"; + }; + }; + + scu: system-clk-controller@17000000 { + compatible = "apm,xgene-scu","syscon"; + reg = <0x0 0x17000000 0x0 0x400>; + }; + + reboot: reboot@17000014 { + compatible = "syscon-reboot"; + regmap = <&scu>; + offset = <0x14>; + mask = <0x1>; + }; + + serial0: serial@10600000 { + device_type = "serial"; + compatible = "ns16550"; + reg = <0 0x10600000 0x0 0x1000>; + reg-shift = <2>; + clock-frequency = <10000000>; + interrupt-parent = <&gic>; + interrupts = <0x0 0x4c 0x4>; + }; + + sata1: sata@1a000000 { + compatible = "apm,xgene-ahci"; + reg = <0x0 0x1a000000 0x0 0x1000>, + <0x0 0x1f200000 0x0 0x1000>, + <0x0 0x1f20d000 0x0 0x1000>, + <0x0 0x1f20e000 0x0 0x1000>; + interrupts = <0x0 0x5a 0x4>; + dma-coherent; + }; + + sata2: sata@1a200000 { + compatible = "apm,xgene-ahci"; + reg = <0x0 0x1a200000 0x0 0x1000>, + <0x0 0x1f210000 0x0 0x1000>, + <0x0 0x1f21d000 0x0 0x1000>, + <0x0 0x1f21e000 0x0 0x1000>; + interrupts = <0x0 0x5b 0x4>; + dma-coherent; + }; + + sata3: sata@1a400000 { + compatible = "apm,xgene-ahci"; + reg = <0x0 0x1a400000 0x0 0x1000>, + <0x0 0x1f220000 0x0 0x1000>, + <0x0 0x1f22d000 0x0 0x1000>, + <0x0 0x1f22e000 0x0 0x1000>; + interrupts = <0x0 0x5c 0x4>; + dma-coherent; + }; + + sbgpio: sbgpio@17001000{ + compatible = "apm,xgene-gpio-sb"; + reg = <0x0 0x17001000 0x0 0x400>; + #gpio-cells = <2>; + gpio-controller; + interrupts = <0x0 0x28 0x1>, + <0x0 0x29 0x1>, + <0x0 0x2a 0x1>, + <0x0 0x2b 0x1>, + <0x0 0x2c 0x1>, + <0x0 0x2d 0x1>, + <0x0 0x2e 0x1>, + <0x0 0x2f 0x1>; + }; + + sgenet0: ethernet@1f610000 { + compatible = "apm,xgene2-sgenet"; + status = "disabled"; + reg = <0x0 0x1f610000 0x0 0x10000>, + <0x0 0x1f600000 0x0 0Xd100>, + <0x0 0x20000000 0x0 0X20000>; + interrupts = <0 96 4>, + <0 97 4>; + dma-coherent; + clocks = <&xge0clk 0>; + local-mac-address = [00 01 73 00 00 01]; + phy-connection-type = "sgmii"; + }; + + xgenet1: ethernet@1f620000 { + compatible = "apm,xgene2-xgenet"; + status = "disabled"; + reg = <0x0 0x1f620000 0x0 0x10000>, + <0x0 0x1f600000 0x0 0Xd100>, + <0x0 0x20000000 0x0 0X220000>; + interrupts = <0 108 4>, + <0 109 4>; + port-id = <1>; + dma-coherent; + clocks = <&xge1clk 0>; + local-mac-address = [00 01 73 00 00 02]; + phy-connection-type = "xgmii"; + }; + }; +}; --- linux-raspi2-4.2.0.orig/arch/arm64/boot/dts/apm/apm-storm.dtsi +++ linux-raspi2-4.2.0/arch/arm64/boot/dts/apm/apm-storm.dtsi @@ -97,6 +97,11 @@ clock-frequency = <50000000>; }; + pmu { + compatible = "apm,potenza-pmu", "arm,armv8-pmuv3"; + interrupts = <1 12 0xff04>; + }; + soc { compatible = "simple-bus"; #address-cells = <2>; @@ -396,6 +401,18 @@ 0x0 0x1f 0x4>; }; + scu: system-clk-controller@17000000 { + compatible = "apm,xgene-scu","syscon"; + reg = <0x0 0x17000000 0x0 0x400>; + }; + + reboot: reboot@17000014 { + compatible = "syscon-reboot"; + regmap = <&scu>; + offset = <0x14>; + mask = <0x1>; + }; + csw: csw@7e200000 { compatible = "apm,xgene-csw", "syscon"; reg = <0x0 0x7e200000 0x0 0x1000>; --- linux-raspi2-4.2.0.orig/arch/arm64/include/asm/cpufeature.h +++ linux-raspi2-4.2.0/arch/arm64/include/asm/cpufeature.h @@ -25,8 +25,9 @@ #define ARM64_WORKAROUND_DEVICE_LOAD_ACQUIRE 1 #define ARM64_WORKAROUND_845719 2 #define ARM64_HAS_SYSREG_GIC_CPUIF 3 +#define ARM64_WORKAROUND_CAVIUM_23154 4 -#define ARM64_NCAPS 4 +#define ARM64_NCAPS 5 #ifndef __ASSEMBLY__ --- linux-raspi2-4.2.0.orig/arch/arm64/include/asm/cputype.h +++ linux-raspi2-4.2.0/arch/arm64/include/asm/cputype.h @@ -62,15 +62,18 @@ (0xf << MIDR_ARCHITECTURE_SHIFT) | \ ((partnum) << MIDR_PARTNUM_SHIFT)) -#define ARM_CPU_IMP_ARM 0x41 -#define ARM_CPU_IMP_APM 0x50 +#define ARM_CPU_IMP_ARM 0x41 +#define ARM_CPU_IMP_APM 0x50 +#define ARM_CPU_IMP_CAVIUM 0x43 -#define ARM_CPU_PART_AEM_V8 0xD0F -#define ARM_CPU_PART_FOUNDATION 0xD00 -#define ARM_CPU_PART_CORTEX_A57 0xD07 -#define ARM_CPU_PART_CORTEX_A53 0xD03 +#define ARM_CPU_PART_AEM_V8 0xD0F +#define ARM_CPU_PART_FOUNDATION 0xD00 +#define ARM_CPU_PART_CORTEX_A57 0xD07 +#define ARM_CPU_PART_CORTEX_A53 0xD03 -#define APM_CPU_PART_POTENZA 0x000 +#define APM_CPU_PART_POTENZA 0x000 + +#define CAVIUM_CPU_PART_THUNDERX 0x0A1 #define ID_AA64MMFR0_BIGENDEL0_SHIFT 16 #define ID_AA64MMFR0_BIGENDEL0_MASK (0xf << ID_AA64MMFR0_BIGENDEL0_SHIFT) --- linux-raspi2-4.2.0.orig/arch/arm64/include/asm/irq.h +++ linux-raspi2-4.2.0/arch/arm64/include/asm/irq.h @@ -21,4 +21,9 @@ } #define acpi_irq_init acpi_irq_init +static inline int nr_legacy_irqs(void) +{ + return 0; +} + #endif --- linux-raspi2-4.2.0.orig/arch/arm64/include/asm/kvm_host.h +++ linux-raspi2-4.2.0/arch/arm64/include/asm/kvm_host.h @@ -30,12 +30,6 @@ #define __KVM_HAVE_ARCH_INTC_INITIALIZED -#if defined(CONFIG_KVM_ARM_MAX_VCPUS) -#define KVM_MAX_VCPUS CONFIG_KVM_ARM_MAX_VCPUS -#else -#define KVM_MAX_VCPUS 0 -#endif - #define KVM_USER_MEM_SLOTS 32 #define KVM_PRIVATE_MEM_SLOTS 4 #define KVM_COALESCED_MMIO_PAGE_OFFSET 1 @@ -43,11 +37,14 @@ #include #include +#define KVM_MAX_VCPUS VGIC_V3_MAX_CPUS + #define KVM_VCPU_MAX_FEATURES 3 +#define KVM_IRQCHIP_NUM_PINS 988 /* 1020 - 32 is the number of SPI */ int __attribute_const__ kvm_target_cpu(void); int kvm_reset_vcpu(struct kvm_vcpu *vcpu); -int kvm_arch_dev_ioctl_check_extension(long ext); +int kvm_arch_dev_ioctl_check_extension(struct kvm *kvm, long ext); struct kvm_arch { /* The VMID generation used for the virt. memory system */ --- linux-raspi2-4.2.0.orig/arch/arm64/include/asm/memory.h +++ linux-raspi2-4.2.0/arch/arm64/include/asm/memory.h @@ -114,6 +114,14 @@ #define PHYS_OFFSET ({ memstart_addr; }) /* + * The maximum physical address that the linear direct mapping + * of system RAM can cover. (PAGE_OFFSET can be interpreted as + * a 2's complement signed quantity and negated to derive the + * maximum size of the linear mapping.) + */ +#define MAX_MEMBLOCK_ADDR ({ memstart_addr - PAGE_OFFSET - 1; }) + +/* * PFNs are used to describe any physical page; this means * PFN 0 == physical address 0. * --- linux-raspi2-4.2.0.orig/arch/arm64/include/asm/mmzone.h +++ linux-raspi2-4.2.0/arch/arm64/include/asm/mmzone.h @@ -0,0 +1,32 @@ +#ifndef __ASM_ARM64_MMZONE_H_ +#define __ASM_ARM64_MMZONE_H_ + +#ifdef CONFIG_NUMA + +#include +#include +#include +#include + +extern struct pglist_data *node_data[]; + +#define NODE_DATA(nid) (node_data[nid]) + + +struct numa_memblk { + u64 start; + u64 end; + int nid; +}; + +struct numa_meminfo { + int nr_blks; + struct numa_memblk blk[NR_NODE_MEMBLKS]; +}; + +void __init numa_remove_memblk_from(int idx, struct numa_meminfo *mi); +int __init numa_cleanup_meminfo(struct numa_meminfo *mi); +void __init numa_reset_distance(void); + +#endif /* CONFIG_NUMA */ +#endif /* __ASM_ARM64_MMZONE_H_ */ --- linux-raspi2-4.2.0.orig/arch/arm64/include/asm/numa.h +++ linux-raspi2-4.2.0/arch/arm64/include/asm/numa.h @@ -0,0 +1,49 @@ +#ifndef _ASM_NUMA_H +#define _ASM_NUMA_H + +#include +#include + +#ifdef CONFIG_NUMA + +#define NR_NODE_MEMBLKS (MAX_NUMNODES * 2) +#define ZONE_ALIGN (1UL << (MAX_ORDER + PAGE_SHIFT)) + +/* currently, arm64 implements flat NUMA topology */ +#define parent_node(node) (node) + +/* dummy definitions for pci functions */ +#define pcibus_to_node(node) 0 +#define cpumask_of_pcibus(bus) 0 + +struct __node_cpu_hwid { + u32 node_id; /* logical node containing this CPU */ + u64 cpu_hwid; /* MPIDR for this CPU */ +}; + +extern struct __node_cpu_hwid node_cpu_hwid[NR_CPUS]; +extern nodemask_t numa_nodes_parsed __initdata; + +const struct cpumask *cpumask_of_node(int node); +/* Mappings between node number and cpus on that node. */ +extern cpumask_var_t node_to_cpumask_map[MAX_NUMNODES]; + +void __init arm64_numa_init(void); +int __init numa_add_memblk(u32 nodeid, u64 start, u64 end); +void numa_store_cpu_info(int cpu); +void __init build_cpu_to_node_map(void); +void __init numa_set_distance(int from, int to, int distance); +#if defined(CONFIG_ARM64_DT_NUMA) +void __init dt_numa_set_node_info(u32 cpu, u64 hwid, void *dn); +#else +static inline void dt_numa_set_node_info(u32 cpu, u64 hwid, void *dn) { } +#endif +int __init arm64_dt_numa_init(void); +#else /* CONFIG_NUMA */ +static inline void numa_store_cpu_info(int cpu) { } +static inline void arm64_numa_init(void) { } +static inline void build_cpu_to_node_map(void) { } +static inline void numa_set_distance(int from, int to, int distance) { } +static inline void dt_numa_set_node_info(u32 cpu, u64 hwid, void *dn) { } +#endif /* CONFIG_NUMA */ +#endif /* _ASM_NUMA_H */ --- linux-raspi2-4.2.0.orig/arch/arm64/include/asm/pgtable.h +++ linux-raspi2-4.2.0/arch/arm64/include/asm/pgtable.h @@ -80,7 +80,7 @@ #define PAGE_S2 __pgprot(PROT_DEFAULT | PTE_S2_MEMATTR(MT_S2_NORMAL) | PTE_S2_RDONLY) #define PAGE_S2_DEVICE __pgprot(PROT_DEFAULT | PTE_S2_MEMATTR(MT_S2_DEVICE_nGnRE) | PTE_S2_RDONLY | PTE_UXN) -#define PAGE_NONE __pgprot(((_PAGE_DEFAULT) & ~PTE_TYPE_MASK) | PTE_PROT_NONE | PTE_PXN | PTE_UXN) +#define PAGE_NONE __pgprot(((_PAGE_DEFAULT) & ~PTE_VALID) | PTE_PROT_NONE | PTE_PXN | PTE_UXN) #define PAGE_SHARED __pgprot(_PAGE_DEFAULT | PTE_USER | PTE_NG | PTE_PXN | PTE_UXN | PTE_WRITE) #define PAGE_SHARED_EXEC __pgprot(_PAGE_DEFAULT | PTE_USER | PTE_NG | PTE_PXN | PTE_WRITE) #define PAGE_COPY __pgprot(_PAGE_DEFAULT | PTE_USER | PTE_NG | PTE_PXN | PTE_UXN) @@ -460,7 +460,7 @@ static inline pte_t pte_modify(pte_t pte, pgprot_t newprot) { const pteval_t mask = PTE_USER | PTE_PXN | PTE_UXN | PTE_RDONLY | - PTE_PROT_NONE | PTE_WRITE | PTE_TYPE_MASK; + PTE_PROT_NONE | PTE_VALID | PTE_WRITE; pte_val(pte) = (pte_val(pte) & ~mask) | (pgprot_val(newprot) & mask); return pte; } --- linux-raspi2-4.2.0.orig/arch/arm64/include/asm/ptrace.h +++ linux-raspi2-4.2.0/arch/arm64/include/asm/ptrace.h @@ -83,14 +83,14 @@ #define compat_sp regs[13] #define compat_lr regs[14] #define compat_sp_hyp regs[15] -#define compat_sp_irq regs[16] -#define compat_lr_irq regs[17] -#define compat_sp_svc regs[18] -#define compat_lr_svc regs[19] -#define compat_sp_abt regs[20] -#define compat_lr_abt regs[21] -#define compat_sp_und regs[22] -#define compat_lr_und regs[23] +#define compat_lr_irq regs[16] +#define compat_sp_irq regs[17] +#define compat_lr_svc regs[18] +#define compat_sp_svc regs[19] +#define compat_lr_abt regs[20] +#define compat_sp_abt regs[21] +#define compat_lr_und regs[22] +#define compat_sp_und regs[23] #define compat_r8_fiq regs[24] #define compat_r9_fiq regs[25] #define compat_r10_fiq regs[26] --- linux-raspi2-4.2.0.orig/arch/arm64/include/uapi/asm/kvm.h +++ linux-raspi2-4.2.0/arch/arm64/include/uapi/asm/kvm.h @@ -81,9 +81,11 @@ /* Supported VGICv3 address types */ #define KVM_VGIC_V3_ADDR_TYPE_DIST 2 #define KVM_VGIC_V3_ADDR_TYPE_REDIST 3 +#define KVM_VGIC_V3_ADDR_TYPE_ITS 4 #define KVM_VGIC_V3_DIST_SIZE SZ_64K #define KVM_VGIC_V3_REDIST_SIZE (2 * SZ_64K) +#define KVM_VGIC_V3_ITS_SIZE SZ_64K #define KVM_ARM_VCPU_POWER_OFF 0 /* CPU is started in OFF state */ #define KVM_ARM_VCPU_EL1_32BIT 1 /* CPU running a 32bit VM */ --- linux-raspi2-4.2.0.orig/arch/arm64/kernel/Makefile +++ linux-raspi2-4.2.0/arch/arm64/kernel/Makefile @@ -36,6 +36,7 @@ arm64-obj-$(CONFIG_PCI) += pci.o arm64-obj-$(CONFIG_ARMV8_DEPRECATED) += armv8_deprecated.o arm64-obj-$(CONFIG_ACPI) += acpi.o +arm64-obj-$(CONFIG_ARM64_DT_NUMA) += dt_numa.o obj-y += $(arm64-obj-y) vdso/ obj-m += $(arm64-obj-m) --- linux-raspi2-4.2.0.orig/arch/arm64/kernel/armv8_deprecated.c +++ linux-raspi2-4.2.0/arch/arm64/kernel/armv8_deprecated.c @@ -279,22 +279,24 @@ */ #define __user_swpX_asm(data, addr, res, temp, B) \ __asm__ __volatile__( \ - " mov %w2, %w1\n" \ - "0: ldxr"B" %w1, [%3]\n" \ - "1: stxr"B" %w0, %w2, [%3]\n" \ + "0: ldxr"B" %w2, [%3]\n" \ + "1: stxr"B" %w0, %w1, [%3]\n" \ " cbz %w0, 2f\n" \ " mov %w0, %w4\n" \ + " b 3f\n" \ "2:\n" \ + " mov %w1, %w2\n" \ + "3:\n" \ " .pushsection .fixup,\"ax\"\n" \ " .align 2\n" \ - "3: mov %w0, %w5\n" \ - " b 2b\n" \ + "4: mov %w0, %w5\n" \ + " b 3b\n" \ " .popsection" \ " .pushsection __ex_table,\"a\"\n" \ " .align 3\n" \ - " .quad 0b, 3b\n" \ - " .quad 1b, 3b\n" \ - " .popsection" \ + " .quad 0b, 4b\n" \ + " .quad 1b, 4b\n" \ + " .popsection\n" \ : "=&r" (res), "+r" (data), "=&r" (temp) \ : "r" (addr), "i" (-EAGAIN), "i" (-EFAULT) \ : "memory") --- linux-raspi2-4.2.0.orig/arch/arm64/kernel/cpu_errata.c +++ linux-raspi2-4.2.0/arch/arm64/kernel/cpu_errata.c @@ -23,6 +23,7 @@ #define MIDR_CORTEX_A53 MIDR_CPU_PART(ARM_CPU_IMP_ARM, ARM_CPU_PART_CORTEX_A53) #define MIDR_CORTEX_A57 MIDR_CPU_PART(ARM_CPU_IMP_ARM, ARM_CPU_PART_CORTEX_A57) +#define MIDR_THUNDERX MIDR_CPU_PART(ARM_CPU_IMP_CAVIUM, CAVIUM_CPU_PART_THUNDERX) #define CPU_MODEL_MASK (MIDR_IMPLEMENTOR_MASK | MIDR_PARTNUM_MASK | \ MIDR_ARCHITECTURE_MASK) @@ -82,6 +83,14 @@ MIDR_RANGE(MIDR_CORTEX_A53, 0x00, 0x04), }, #endif +#ifdef CONFIG_CAVIUM_ERRATUM_23154 + { + /* Cavium ThunderX, pass 1.x */ + .desc = "Cavium erratum 23154", + .capability = ARM64_WORKAROUND_CAVIUM_23154, + MIDR_RANGE(MIDR_THUNDERX, 0x00, 0x01), + }, +#endif { } }; --- linux-raspi2-4.2.0.orig/arch/arm64/kernel/dt_numa.c +++ linux-raspi2-4.2.0/arch/arm64/kernel/dt_numa.c @@ -0,0 +1,316 @@ +/* + * DT NUMA Parsing support, based on the powerpc implementation. + * + * Copyright (C) 2015 Cavium Inc. + * Author: Ganapatrao Kulkarni + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + * + * 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 . + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#define MAX_DISTANCE_REF_POINTS 8 +static int min_common_depth; +static int distance_ref_points_depth; +static const __be32 *distance_ref_points; +static int distance_lookup_table[MAX_NUMNODES][MAX_DISTANCE_REF_POINTS]; +static int default_nid; +static int of_node_to_nid_single(struct device_node *device); +static struct device_node *of_cpu_to_node(int cpu); + +static void initialize_distance_lookup_table(int nid, + const __be32 *associativity) +{ + int i; + + for (i = 0; i < distance_ref_points_depth; i++) { + const __be32 *entry; + + entry = &associativity[be32_to_cpu(distance_ref_points[i])]; + distance_lookup_table[nid][i] = of_read_number(entry, 1); + } +} + +/* must hold reference to node during call */ +static const __be32 *of_get_associativity(struct device_node *dev) +{ + return of_get_property(dev, "arm,associativity", NULL); +} + +/* Returns nid in the range [0..MAX_NUMNODES-1], or -1 if no useful numa + * info is found. + */ +static int associativity_to_nid(const __be32 *associativity) +{ + int nid = NUMA_NO_NODE; + + if (min_common_depth == -1) + goto out; + + if (of_read_number(associativity, 1) >= min_common_depth) + nid = of_read_number(&associativity[min_common_depth], 1); + + /* set 0xffff as invalid node */ + if (nid == 0xffff || nid >= MAX_NUMNODES) + nid = NUMA_NO_NODE; + + if (nid != NUMA_NO_NODE) + initialize_distance_lookup_table(nid, associativity); +out: + return nid; +} + +/* Returns the nid associated with the given device tree node, + * or -1 if not found. + */ +static int of_node_to_nid_single(struct device_node *device) +{ + int nid = default_nid; + const __be32 *tmp; + + tmp = of_get_associativity(device); + if (tmp) + nid = associativity_to_nid(tmp); + return nid; +} + +/* Walk the device tree upwards, looking for an associativity id */ +int of_node_to_nid(struct device_node *device) +{ + struct device_node *tmp; + int nid = NUMA_NO_NODE; + + of_node_get(device); + while (device) { + nid = of_node_to_nid_single(device); + if (nid != NUMA_NO_NODE) + break; + + tmp = device; + device = of_get_parent(tmp); + of_node_put(tmp); + } + of_node_put(device); + + return nid; +} + +static int __init find_min_common_depth(unsigned long node) +{ + int depth; + const __be32 *numa_prop; + int nr_address_cells; + + /* + * This property is a set of 32-bit integers, each representing + * an index into the arm,associativity nodes. + * + * With form 1 affinity the first integer is the most significant + * NUMA boundary and the following are progressively less significant + * boundaries. There can be more than one level of NUMA. + */ + + distance_ref_points = of_get_flat_dt_prop(node, + "arm,associativity-reference-points", + &distance_ref_points_depth); + numa_prop = distance_ref_points; + + if (numa_prop) { + nr_address_cells = dt_mem_next_cell( + OF_ROOT_NODE_ADDR_CELLS_DEFAULT, &numa_prop); + nr_address_cells = dt_mem_next_cell( + OF_ROOT_NODE_ADDR_CELLS_DEFAULT, &numa_prop); + } + if (!distance_ref_points) { + pr_debug("NUMA: arm,associativity-reference-points not found.\n"); + goto err; + } + + distance_ref_points_depth /= sizeof(__be32); + + if (!distance_ref_points_depth) { + pr_err("NUMA: missing arm,associativity-reference-points\n"); + goto err; + } + depth = of_read_number(distance_ref_points, 1); + + /* + * Warn and cap if the hardware supports more than + * MAX_DISTANCE_REF_POINTS domains. + */ + if (distance_ref_points_depth > MAX_DISTANCE_REF_POINTS) { + pr_debug("NUMA: distance array capped at %d entries\n", + MAX_DISTANCE_REF_POINTS); + distance_ref_points_depth = MAX_DISTANCE_REF_POINTS; + } + + return depth; +err: + return -1; +} + +void __init dt_numa_set_node_info(u32 cpu, u64 hwid, void *dn_ptr) +{ + struct device_node *dn = (struct device_node *) dn_ptr; + int nid = default_nid; + + if (dn) + nid = of_node_to_nid_single(dn); + + node_cpu_hwid[cpu].node_id = nid; + node_cpu_hwid[cpu].cpu_hwid = hwid; + node_set(nid, numa_nodes_parsed); +} + +int dt_get_cpu_node_id(int cpu) +{ + struct device_node *dn = NULL; + int nid = default_nid; + + dn = of_cpu_to_node(cpu); + if (dn) + nid = of_node_to_nid_single(dn); + return nid; +} + +static struct device_node *of_cpu_to_node(int cpu) +{ + struct device_node *dn = NULL; + + while ((dn = of_find_node_by_type(dn, "cpu"))) { + const u32 *cell; + u64 hwid; + + /* + * A cpu node with missing "reg" property is + * considered invalid to build a cpu_logical_map + * entry. + */ + cell = of_get_property(dn, "reg", NULL); + if (!cell) { + pr_err("%s: missing reg property\n", dn->full_name); + return NULL; + } + hwid = of_read_number(cell, of_n_addr_cells(dn)); + + if (cpu_logical_map(cpu) == hwid) + return dn; + } + return NULL; +} + +static int __init parse_memory_node(unsigned long node) +{ + const __be32 *reg, *endp, *associativity; + int length; + int nid = default_nid; + + associativity = of_get_flat_dt_prop(node, "arm,associativity", &length); + + if (associativity) + nid = associativity_to_nid(associativity); + + reg = of_get_flat_dt_prop(node, "reg", &length); + endp = reg + (length / sizeof(__be32)); + + while ((endp - reg) >= (dt_root_addr_cells + dt_root_size_cells)) { + u64 base, size; + struct memblock_region *mblk; + + base = dt_mem_next_cell(dt_root_addr_cells, ®); + size = dt_mem_next_cell(dt_root_size_cells, ®); + pr_debug("NUMA-DT: base = %llx , node = %u\n", + base, nid); + for_each_memblock(memory, mblk) { + if (mblk->base == base) { + node_set(nid, numa_nodes_parsed); + numa_add_memblk(nid, mblk->base, mblk->size); + break; + } + } + } + + return 0; +} + +/** + * early_init_dt_scan_numa_map - parse memory node and map nid to memory range. + */ +int __init early_init_dt_scan_numa_map(unsigned long node, const char *uname, + int depth, void *data) +{ + const char *type = of_get_flat_dt_prop(node, "device_type", NULL); + + if (depth == 0) { + min_common_depth = find_min_common_depth(node); + if (min_common_depth < 0) + return min_common_depth; + pr_debug("NUMA associativity depth for CPU/Memory: %d\n", + min_common_depth); + return 0; + } + + if (type) { + if (strcmp(type, "memory") == 0) + parse_memory_node(node); + } + return 0; +} + +int dt_get_node_distance(int a, int b) +{ + int i; + int distance = LOCAL_DISTANCE; + + for (i = 0; i < distance_ref_points_depth; i++) { + if (distance_lookup_table[a][i] == distance_lookup_table[b][i]) + break; + + /* Double the distance for each NUMA level */ + distance *= 2; + } + return distance; +} + +/* DT node mapping is done already early_init_dt_scan_memory */ +int __init arm64_dt_numa_init(void) +{ + int i; + u32 nodea, nodeb, distance, node_count = 0; + + of_scan_flat_dt(early_init_dt_scan_numa_map, NULL); + + for_each_node_mask(i, numa_nodes_parsed) + node_count = i; + node_count++; + + for (nodea = 0; nodea < node_count; nodea++) { + for (nodeb = 0; nodeb < node_count; nodeb++) { + distance = dt_get_node_distance(nodea, nodeb); + numa_set_distance(nodea, nodeb, distance); + } + } + return 0; +} --- linux-raspi2-4.2.0.orig/arch/arm64/kernel/efi.c +++ linux-raspi2-4.2.0/arch/arm64/kernel/efi.c @@ -258,7 +258,8 @@ */ if (!is_normal_ram(md)) prot = __pgprot(PROT_DEVICE_nGnRE); - else if (md->type == EFI_RUNTIME_SERVICES_CODE) + else if (md->type == EFI_RUNTIME_SERVICES_CODE || + !PAGE_ALIGNED(md->phys_addr)) prot = PAGE_KERNEL_EXEC; else prot = PAGE_KERNEL; --- linux-raspi2-4.2.0.orig/arch/arm64/kernel/entry-ftrace.S +++ linux-raspi2-4.2.0/arch/arm64/kernel/entry-ftrace.S @@ -178,6 +178,24 @@ ENDPROC(ftrace_stub) #ifdef CONFIG_FUNCTION_GRAPH_TRACER + /* save return value regs*/ + .macro save_return_regs + sub sp, sp, #64 + stp x0, x1, [sp] + stp x2, x3, [sp, #16] + stp x4, x5, [sp, #32] + stp x6, x7, [sp, #48] + .endm + + /* restore return value regs*/ + .macro restore_return_regs + ldp x0, x1, [sp] + ldp x2, x3, [sp, #16] + ldp x4, x5, [sp, #32] + ldp x6, x7, [sp, #48] + add sp, sp, #64 + .endm + /* * void ftrace_graph_caller(void) * @@ -204,11 +222,11 @@ * only when CONFIG_HAVE_FUNCTION_GRAPH_FP_TEST is enabled. */ ENTRY(return_to_handler) - str x0, [sp, #-16]! + save_return_regs mov x0, x29 // parent's fp bl ftrace_return_to_handler// addr = ftrace_return_to_hander(fp); mov x30, x0 // restore the original return address - ldr x0, [sp], #16 + restore_return_regs ret END(return_to_handler) #endif /* CONFIG_FUNCTION_GRAPH_TRACER */ --- linux-raspi2-4.2.0.orig/arch/arm64/kernel/entry.S +++ linux-raspi2-4.2.0/arch/arm64/kernel/entry.S @@ -116,7 +116,7 @@ */ .endm - .macro kernel_exit, el, ret = 0 + .macro kernel_exit, el ldp x21, x22, [sp, #S_PC] // load ELR, SPSR .if \el == 0 ct_user_enter @@ -146,11 +146,7 @@ .endif msr elr_el1, x21 // set up the return data msr spsr_el1, x22 - .if \ret - ldr x1, [sp, #S_X1] // preserve x0 (syscall return) - .else ldp x0, x1, [sp, #16 * 0] - .endif ldp x2, x3, [sp, #16 * 1] ldp x4, x5, [sp, #16 * 2] ldp x6, x7, [sp, #16 * 3] @@ -613,22 +609,21 @@ */ ret_fast_syscall: disable_irq // disable interrupts + str x0, [sp, #S_X0] // returned x0 ldr x1, [tsk, #TI_FLAGS] // re-check for syscall tracing and x2, x1, #_TIF_SYSCALL_WORK cbnz x2, ret_fast_syscall_trace and x2, x1, #_TIF_WORK_MASK - cbnz x2, fast_work_pending + cbnz x2, work_pending enable_step_tsk x1, x2 - kernel_exit 0, ret = 1 + kernel_exit 0 ret_fast_syscall_trace: enable_irq // enable interrupts - b __sys_trace_return + b __sys_trace_return_skipped // we already saved x0 /* * Ok, we need to do extra processing, enter the slow path. */ -fast_work_pending: - str x0, [sp, #S_X0] // returned x0 work_pending: tbnz x1, #TIF_NEED_RESCHED, work_resched /* TIF_SIGPENDING, TIF_NOTIFY_RESUME or TIF_FOREIGN_FPSTATE case */ @@ -652,7 +647,7 @@ cbnz x2, work_pending enable_step_tsk x1, x2 no_work_pending: - kernel_exit 0, ret = 0 + kernel_exit 0 ENDPROC(ret_to_user) /* --- linux-raspi2-4.2.0.orig/arch/arm64/kernel/fpsimd.c +++ linux-raspi2-4.2.0/arch/arm64/kernel/fpsimd.c @@ -158,6 +158,7 @@ void fpsimd_flush_thread(void) { memset(¤t->thread.fpsimd_state, 0, sizeof(struct fpsimd_state)); + fpsimd_flush_task_state(current); set_thread_flag(TIF_FOREIGN_FPSTATE); } --- linux-raspi2-4.2.0.orig/arch/arm64/kernel/head.S +++ linux-raspi2-4.2.0/arch/arm64/kernel/head.S @@ -528,6 +528,11 @@ msr hstr_el2, xzr // Disable CP15 traps to EL2 #endif + /* EL2 debug */ + mrs x0, pmcr_el0 // Disable debug access traps + ubfx x0, x0, #11, #5 // to EL2 and allow access to + msr mdcr_el2, x0 // all PMU counters from EL1 + /* Stage-2 translation */ msr vttbr_el2, xzr --- linux-raspi2-4.2.0.orig/arch/arm64/kernel/module.c +++ linux-raspi2-4.2.0/arch/arm64/kernel/module.c @@ -332,12 +332,14 @@ ovf = reloc_insn_imm(RELOC_OP_PREL, loc, val, 0, 21, AARCH64_INSN_IMM_ADR); break; +#ifndef CONFIG_ARM64_ERRATUM_843419 case R_AARCH64_ADR_PREL_PG_HI21_NC: overflow_check = false; case R_AARCH64_ADR_PREL_PG_HI21: ovf = reloc_insn_imm(RELOC_OP_PAGE, loc, val, 12, 21, AARCH64_INSN_IMM_ADR); break; +#endif case R_AARCH64_ADD_ABS_LO12_NC: case R_AARCH64_LDST8_ABS_LO12_NC: overflow_check = false; --- linux-raspi2-4.2.0.orig/arch/arm64/kernel/setup.c +++ linux-raspi2-4.2.0/arch/arm64/kernel/setup.c @@ -65,6 +65,7 @@ #include #include #include +#include unsigned long elf_hwcap __read_mostly; EXPORT_SYMBOL_GPL(elf_hwcap); @@ -437,6 +438,9 @@ { int i; + for_each_online_node(i) + register_one_node(i); + for_each_possible_cpu(i) { struct cpu *cpu = &per_cpu(cpu_data.cpu, i); cpu->hotpluggable = 1; @@ -509,7 +513,12 @@ * "processor". Give glibc what it expects. */ #ifdef CONFIG_SMP + if (IS_ENABLED(CONFIG_NUMA)) { + seq_printf(m, "processor\t: %d", i); + seq_printf(m, " [nid: %d]\n", cpu_to_node(i)); + } else { seq_printf(m, "processor\t: %d\n", i); + } #endif /* --- linux-raspi2-4.2.0.orig/arch/arm64/kernel/signal32.c +++ linux-raspi2-4.2.0/arch/arm64/kernel/signal32.c @@ -212,14 +212,32 @@ /* * VFP save/restore code. + * + * We have to be careful with endianness, since the fpsimd context-switch + * code operates on 128-bit (Q) register values whereas the compat ABI + * uses an array of 64-bit (D) registers. Consequently, we need to swap + * the two halves of each Q register when running on a big-endian CPU. */ +union __fpsimd_vreg { + __uint128_t raw; + struct { +#ifdef __AARCH64EB__ + u64 hi; + u64 lo; +#else + u64 lo; + u64 hi; +#endif + }; +}; + static int compat_preserve_vfp_context(struct compat_vfp_sigframe __user *frame) { struct fpsimd_state *fpsimd = ¤t->thread.fpsimd_state; compat_ulong_t magic = VFP_MAGIC; compat_ulong_t size = VFP_STORAGE_SIZE; compat_ulong_t fpscr, fpexc; - int err = 0; + int i, err = 0; /* * Save the hardware registers to the fpsimd_state structure. @@ -235,10 +253,15 @@ /* * Now copy the FP registers. Since the registers are packed, * we can copy the prefix we want (V0-V15) as it is. - * FIXME: Won't work if big endian. */ - err |= __copy_to_user(&frame->ufp.fpregs, fpsimd->vregs, - sizeof(frame->ufp.fpregs)); + for (i = 0; i < ARRAY_SIZE(frame->ufp.fpregs); i += 2) { + union __fpsimd_vreg vreg = { + .raw = fpsimd->vregs[i >> 1], + }; + + __put_user_error(vreg.lo, &frame->ufp.fpregs[i], err); + __put_user_error(vreg.hi, &frame->ufp.fpregs[i + 1], err); + } /* Create an AArch32 fpscr from the fpsr and the fpcr. */ fpscr = (fpsimd->fpsr & VFP_FPSCR_STAT_MASK) | @@ -263,7 +286,7 @@ compat_ulong_t magic = VFP_MAGIC; compat_ulong_t size = VFP_STORAGE_SIZE; compat_ulong_t fpscr; - int err = 0; + int i, err = 0; __get_user_error(magic, &frame->magic, err); __get_user_error(size, &frame->size, err); @@ -273,12 +296,14 @@ if (magic != VFP_MAGIC || size != VFP_STORAGE_SIZE) return -EINVAL; - /* - * Copy the FP registers into the start of the fpsimd_state. - * FIXME: Won't work if big endian. - */ - err |= __copy_from_user(fpsimd.vregs, frame->ufp.fpregs, - sizeof(frame->ufp.fpregs)); + /* Copy the FP registers into the start of the fpsimd_state. */ + for (i = 0; i < ARRAY_SIZE(frame->ufp.fpregs); i += 2) { + union __fpsimd_vreg vreg; + + __get_user_error(vreg.lo, &frame->ufp.fpregs[i], err); + __get_user_error(vreg.hi, &frame->ufp.fpregs[i + 1], err); + fpsimd.vregs[i >> 1] = vreg.raw; + } /* Extract the fpsr and the fpcr from the fpscr */ __get_user_error(fpscr, &frame->ufp.fpscr, err); --- linux-raspi2-4.2.0.orig/arch/arm64/kernel/smp.c +++ linux-raspi2-4.2.0/arch/arm64/kernel/smp.c @@ -52,6 +52,7 @@ #include #include #include +#include #define CREATE_TRACE_POINTS #include @@ -124,6 +125,7 @@ static void smp_store_cpu_info(unsigned int cpuid) { store_cpu_topology(cpuid); + numa_store_cpu_info(cpuid); } /* @@ -501,6 +503,7 @@ pr_debug("cpu logical map 0x%llx\n", hwid); cpu_logical_map(cpu_count) = hwid; + dt_numa_set_node_info(cpu_count, hwid, (void *)dn); next: cpu_count++; } --- linux-raspi2-4.2.0.orig/arch/arm64/kernel/stacktrace.c +++ linux-raspi2-4.2.0/arch/arm64/kernel/stacktrace.c @@ -48,11 +48,7 @@ frame->sp = fp + 0x10; frame->fp = *(unsigned long *)(fp); - /* - * -4 here because we care about the PC at time of bl, - * not where the return will go. - */ - frame->pc = *(unsigned long *)(fp + 8) - 4; + frame->pc = *(unsigned long *)(fp + 8); return 0; } --- linux-raspi2-4.2.0.orig/arch/arm64/kernel/suspend.c +++ linux-raspi2-4.2.0/arch/arm64/kernel/suspend.c @@ -80,17 +80,21 @@ if (ret == 0) { /* * We are resuming from reset with TTBR0_EL1 set to the - * idmap to enable the MMU; restore the active_mm mappings in - * TTBR0_EL1 unless the active_mm == &init_mm, in which case - * the thread entered cpu_suspend with TTBR0_EL1 set to - * reserved TTBR0 page tables and should be restored as such. + * idmap to enable the MMU; set the TTBR0 to the reserved + * page tables to prevent speculative TLB allocations, flush + * the local tlb and set the default tcr_el1.t0sz so that + * the TTBR0 address space set-up is properly restored. + * If the current active_mm != &init_mm we entered cpu_suspend + * with mappings in TTBR0 that must be restored, so we switch + * them back to complete the address space configuration + * restoration before returning. */ - if (mm == &init_mm) - cpu_set_reserved_ttbr0(); - else - cpu_switch_mm(mm->pgd, mm); - + cpu_set_reserved_ttbr0(); flush_tlb_all(); + cpu_set_default_tcr_t0sz(); + + if (mm != &init_mm) + cpu_switch_mm(mm->pgd, mm); /* * Restore per-cpu offset before any kernel --- linux-raspi2-4.2.0.orig/arch/arm64/kernel/vmlinux.lds.S +++ linux-raspi2-4.2.0/arch/arm64/kernel/vmlinux.lds.S @@ -60,9 +60,12 @@ #define PECOFF_EDATA_PADDING #endif -#ifdef CONFIG_DEBUG_ALIGN_RODATA +#if defined(CONFIG_DEBUG_ALIGN_RODATA) #define ALIGN_DEBUG_RO . = ALIGN(1<arch.vgic.msis_require_devid; + break; default: r = 0; } --- linux-raspi2-4.2.0.orig/arch/arm64/lib/copy_from_user.S +++ linux-raspi2-4.2.0/arch/arm64/lib/copy_from_user.S @@ -16,6 +16,7 @@ #include #include +#include /* * Copy from user space to a kernel buffer (alignment handled by the hardware) @@ -27,40 +28,54 @@ * Returns: * x0 - bytes not copied */ + + .macro ldrb1 ptr, regB, val + USER(9998f, ldrb \ptr, [\regB], \val) + .endm + + .macro strb1 ptr, regB, val + strb \ptr, [\regB], \val + .endm + + .macro ldrh1 ptr, regB, val + USER(9998f, ldrh \ptr, [\regB], \val) + .endm + + .macro strh1 ptr, regB, val + strh \ptr, [\regB], \val + .endm + + .macro ldr1 ptr, regB, val + USER(9998f, ldr \ptr, [\regB], \val) + .endm + + .macro str1 ptr, regB, val + str \ptr, [\regB], \val + .endm + + .macro ldp1 ptr, regB, regC, val + USER(9998f, ldp \ptr, \regB, [\regC], \val) + .endm + + .macro stp1 ptr, regB, regC, val + stp \ptr, \regB, [\regC], \val + .endm + +end .req x5 ENTRY(__copy_from_user) - add x4, x1, x2 // upper user buffer boundary - subs x2, x2, #8 - b.mi 2f -1: -USER(9f, ldr x3, [x1], #8 ) - subs x2, x2, #8 - str x3, [x0], #8 - b.pl 1b -2: adds x2, x2, #4 - b.mi 3f -USER(9f, ldr w3, [x1], #4 ) - sub x2, x2, #4 - str w3, [x0], #4 -3: adds x2, x2, #2 - b.mi 4f -USER(9f, ldrh w3, [x1], #2 ) - sub x2, x2, #2 - strh w3, [x0], #2 -4: adds x2, x2, #1 - b.mi 5f -USER(9f, ldrb w3, [x1] ) - strb w3, [x0] -5: mov x0, #0 + add end, x0, x2 +#include "copy_template.S" + mov x0, #0 // Nothing to copy ret ENDPROC(__copy_from_user) .section .fixup,"ax" .align 2 -9: sub x2, x4, x1 - mov x3, x2 -10: strb wzr, [x0], #1 // zero remaining buffer space - subs x3, x3, #1 - b.ne 10b - mov x0, x2 // bytes not copied +9998: + sub x0, end, dst +9999: + strb wzr, [dst], #1 // zero remaining buffer space + cmp dst, end + b.lo 9999b ret .previous --- linux-raspi2-4.2.0.orig/arch/arm64/lib/copy_in_user.S +++ linux-raspi2-4.2.0/arch/arm64/lib/copy_in_user.S @@ -18,6 +18,7 @@ #include #include +#include /* * Copy from user space to user space (alignment handled by the hardware) @@ -29,35 +30,48 @@ * Returns: * x0 - bytes not copied */ + .macro ldrb1 ptr, regB, val + USER(9998f, ldrb \ptr, [\regB], \val) + .endm + + .macro strb1 ptr, regB, val + USER(9998f, strb \ptr, [\regB], \val) + .endm + + .macro ldrh1 ptr, regB, val + USER(9998f, ldrh \ptr, [\regB], \val) + .endm + + .macro strh1 ptr, regB, val + USER(9998f, strh \ptr, [\regB], \val) + .endm + + .macro ldr1 ptr, regB, val + USER(9998f, ldr \ptr, [\regB], \val) + .endm + + .macro str1 ptr, regB, val + USER(9998f, str \ptr, [\regB], \val) + .endm + + .macro ldp1 ptr, regB, regC, val + USER(9998f, ldp \ptr, \regB, [\regC], \val) + .endm + + .macro stp1 ptr, regB, regC, val + USER(9998f, stp \ptr, \regB, [\regC], \val) + .endm + +end .req x5 ENTRY(__copy_in_user) - add x4, x0, x2 // upper user buffer boundary - subs x2, x2, #8 - b.mi 2f -1: -USER(9f, ldr x3, [x1], #8 ) - subs x2, x2, #8 -USER(9f, str x3, [x0], #8 ) - b.pl 1b -2: adds x2, x2, #4 - b.mi 3f -USER(9f, ldr w3, [x1], #4 ) - sub x2, x2, #4 -USER(9f, str w3, [x0], #4 ) -3: adds x2, x2, #2 - b.mi 4f -USER(9f, ldrh w3, [x1], #2 ) - sub x2, x2, #2 -USER(9f, strh w3, [x0], #2 ) -4: adds x2, x2, #1 - b.mi 5f -USER(9f, ldrb w3, [x1] ) -USER(9f, strb w3, [x0] ) -5: mov x0, #0 + add end, x0, x2 +#include "copy_template.S" + mov x0, #0 ret ENDPROC(__copy_in_user) .section .fixup,"ax" .align 2 -9: sub x0, x4, x0 // bytes not copied +9998: sub x0, end, dst // bytes not copied ret .previous --- linux-raspi2-4.2.0.orig/arch/arm64/lib/copy_template.S +++ linux-raspi2-4.2.0/arch/arm64/lib/copy_template.S @@ -0,0 +1,193 @@ +/* + * Copyright (C) 2013 ARM Ltd. + * Copyright (C) 2013 Linaro. + * + * This code is based on glibc cortex strings work originally authored by Linaro + * and re-licensed under GPLv2 for the Linux kernel. The original code can + * be found @ + * + * http://bazaar.launchpad.net/~linaro-toolchain-dev/cortex-strings/trunk/ + * files/head:/src/aarch64/ + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + * + * 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 a buffer from src to dest (alignment handled by the hardware) + * + * Parameters: + * x0 - dest + * x1 - src + * x2 - n + * Returns: + * x0 - dest + */ +dstin .req x0 +src .req x1 +count .req x2 +tmp1 .req x3 +tmp1w .req w3 +tmp2 .req x4 +tmp2w .req w4 +dst .req x6 + +A_l .req x7 +A_h .req x8 +B_l .req x9 +B_h .req x10 +C_l .req x11 +C_h .req x12 +D_l .req x13 +D_h .req x14 + + mov dst, dstin + cmp count, #16 + /*When memory length is less than 16, the accessed are not aligned.*/ + b.lo .Ltiny15 + + neg tmp2, src + ands tmp2, tmp2, #15/* Bytes to reach alignment. */ + b.eq .LSrcAligned + sub count, count, tmp2 + /* + * Copy the leading memory data from src to dst in an increasing + * address order.By this way,the risk of overwritting the source + * memory data is eliminated when the distance between src and + * dst is less than 16. The memory accesses here are alignment. + */ + tbz tmp2, #0, 1f + ldrb1 tmp1w, src, #1 + strb1 tmp1w, dst, #1 +1: + tbz tmp2, #1, 2f + ldrh1 tmp1w, src, #2 + strh1 tmp1w, dst, #2 +2: + tbz tmp2, #2, 3f + ldr1 tmp1w, src, #4 + str1 tmp1w, dst, #4 +3: + tbz tmp2, #3, .LSrcAligned + ldr1 tmp1, src, #8 + str1 tmp1, dst, #8 + +.LSrcAligned: + cmp count, #64 + b.ge .Lcpy_over64 + /* + * Deal with small copies quickly by dropping straight into the + * exit block. + */ +.Ltail63: + /* + * Copy up to 48 bytes of data. At this point we only need the + * bottom 6 bits of count to be accurate. + */ + ands tmp1, count, #0x30 + b.eq .Ltiny15 + cmp tmp1w, #0x20 + b.eq 1f + b.lt 2f + ldp1 A_l, A_h, src, #16 + stp1 A_l, A_h, dst, #16 +1: + ldp1 A_l, A_h, src, #16 + stp1 A_l, A_h, dst, #16 +2: + ldp1 A_l, A_h, src, #16 + stp1 A_l, A_h, dst, #16 +.Ltiny15: + /* + * Prefer to break one ldp/stp into several load/store to access + * memory in an increasing address order,rather than to load/store 16 + * bytes from (src-16) to (dst-16) and to backward the src to aligned + * address,which way is used in original cortex memcpy. If keeping + * the original memcpy process here, memmove need to satisfy the + * precondition that src address is at least 16 bytes bigger than dst + * address,otherwise some source data will be overwritten when memove + * call memcpy directly. To make memmove simpler and decouple the + * memcpy's dependency on memmove, withdrew the original process. + */ + tbz count, #3, 1f + ldr1 tmp1, src, #8 + str1 tmp1, dst, #8 +1: + tbz count, #2, 2f + ldr1 tmp1w, src, #4 + str1 tmp1w, dst, #4 +2: + tbz count, #1, 3f + ldrh1 tmp1w, src, #2 + strh1 tmp1w, dst, #2 +3: + tbz count, #0, .Lexitfunc + ldrb1 tmp1w, src, #1 + strb1 tmp1w, dst, #1 + + b .Lexitfunc + +.Lcpy_over64: + subs count, count, #128 + b.ge .Lcpy_body_large + /* + * Less than 128 bytes to copy, so handle 64 here and then jump + * to the tail. + */ + ldp1 A_l, A_h, src, #16 + stp1 A_l, A_h, dst, #16 + ldp1 B_l, B_h, src, #16 + ldp1 C_l, C_h, src, #16 + stp1 B_l, B_h, dst, #16 + stp1 C_l, C_h, dst, #16 + ldp1 D_l, D_h, src, #16 + stp1 D_l, D_h, dst, #16 + + tst count, #0x3f + b.ne .Ltail63 + b .Lexitfunc + + /* + * Critical loop. Start at a new cache line boundary. Assuming + * 64 bytes per line this ensures the entire loop is in one line. + */ + .p2align L1_CACHE_SHIFT +.Lcpy_body_large: + /* pre-get 64 bytes data. */ + ldp1 A_l, A_h, src, #16 + ldp1 B_l, B_h, src, #16 + ldp1 C_l, C_h, src, #16 + ldp1 D_l, D_h, src, #16 +1: + /* + * interlace the load of next 64 bytes data block with store of the last + * loaded 64 bytes data. + */ + stp1 A_l, A_h, dst, #16 + ldp1 A_l, A_h, src, #16 + stp1 B_l, B_h, dst, #16 + ldp1 B_l, B_h, src, #16 + stp1 C_l, C_h, dst, #16 + ldp1 C_l, C_h, src, #16 + stp1 D_l, D_h, dst, #16 + ldp1 D_l, D_h, src, #16 + subs count, count, #64 + b.ge 1b + stp1 A_l, A_h, dst, #16 + stp1 B_l, B_h, dst, #16 + stp1 C_l, C_h, dst, #16 + stp1 D_l, D_h, dst, #16 + + tst count, #0x3f + b.ne .Ltail63 +.Lexitfunc: --- linux-raspi2-4.2.0.orig/arch/arm64/lib/copy_to_user.S +++ linux-raspi2-4.2.0/arch/arm64/lib/copy_to_user.S @@ -16,6 +16,7 @@ #include #include +#include /* * Copy to user space from a kernel buffer (alignment handled by the hardware) @@ -27,35 +28,48 @@ * Returns: * x0 - bytes not copied */ + .macro ldrb1 ptr, regB, val + ldrb \ptr, [\regB], \val + .endm + + .macro strb1 ptr, regB, val + USER(9998f, strb \ptr, [\regB], \val) + .endm + + .macro ldrh1 ptr, regB, val + ldrh \ptr, [\regB], \val + .endm + + .macro strh1 ptr, regB, val + USER(9998f, strh \ptr, [\regB], \val) + .endm + + .macro ldr1 ptr, regB, val + ldr \ptr, [\regB], \val + .endm + + .macro str1 ptr, regB, val + USER(9998f, str \ptr, [\regB], \val) + .endm + + .macro ldp1 ptr, regB, regC, val + ldp \ptr, \regB, [\regC], \val + .endm + + .macro stp1 ptr, regB, regC, val + USER(9998f, stp \ptr, \regB, [\regC], \val) + .endm + +end .req x5 ENTRY(__copy_to_user) - add x4, x0, x2 // upper user buffer boundary - subs x2, x2, #8 - b.mi 2f -1: - ldr x3, [x1], #8 - subs x2, x2, #8 -USER(9f, str x3, [x0], #8 ) - b.pl 1b -2: adds x2, x2, #4 - b.mi 3f - ldr w3, [x1], #4 - sub x2, x2, #4 -USER(9f, str w3, [x0], #4 ) -3: adds x2, x2, #2 - b.mi 4f - ldrh w3, [x1], #2 - sub x2, x2, #2 -USER(9f, strh w3, [x0], #2 ) -4: adds x2, x2, #1 - b.mi 5f - ldrb w3, [x1] -USER(9f, strb w3, [x0] ) -5: mov x0, #0 + add end, x0, x2 +#include "copy_template.S" + mov x0, #0 ret ENDPROC(__copy_to_user) .section .fixup,"ax" .align 2 -9: sub x0, x4, x0 // bytes not copied +9998: sub x0, end, dst // bytes not copied ret .previous --- linux-raspi2-4.2.0.orig/arch/arm64/lib/memcpy.S +++ linux-raspi2-4.2.0/arch/arm64/lib/memcpy.S @@ -36,166 +36,39 @@ * Returns: * x0 - dest */ -dstin .req x0 -src .req x1 -count .req x2 -tmp1 .req x3 -tmp1w .req w3 -tmp2 .req x4 -tmp2w .req w4 -tmp3 .req x5 -tmp3w .req w5 -dst .req x6 - -A_l .req x7 -A_h .req x8 -B_l .req x9 -B_h .req x10 -C_l .req x11 -C_h .req x12 -D_l .req x13 -D_h .req x14 + .macro ldrb1 ptr, regB, val + ldrb \ptr, [\regB], \val + .endm + + .macro strb1 ptr, regB, val + strb \ptr, [\regB], \val + .endm + + .macro ldrh1 ptr, regB, val + ldrh \ptr, [\regB], \val + .endm + + .macro strh1 ptr, regB, val + strh \ptr, [\regB], \val + .endm + + .macro ldr1 ptr, regB, val + ldr \ptr, [\regB], \val + .endm + + .macro str1 ptr, regB, val + str \ptr, [\regB], \val + .endm + + .macro ldp1 ptr, regB, regC, val + ldp \ptr, \regB, [\regC], \val + .endm + + .macro stp1 ptr, regB, regC, val + stp \ptr, \regB, [\regC], \val + .endm ENTRY(memcpy) - mov dst, dstin - cmp count, #16 - /*When memory length is less than 16, the accessed are not aligned.*/ - b.lo .Ltiny15 - - neg tmp2, src - ands tmp2, tmp2, #15/* Bytes to reach alignment. */ - b.eq .LSrcAligned - sub count, count, tmp2 - /* - * Copy the leading memory data from src to dst in an increasing - * address order.By this way,the risk of overwritting the source - * memory data is eliminated when the distance between src and - * dst is less than 16. The memory accesses here are alignment. - */ - tbz tmp2, #0, 1f - ldrb tmp1w, [src], #1 - strb tmp1w, [dst], #1 -1: - tbz tmp2, #1, 2f - ldrh tmp1w, [src], #2 - strh tmp1w, [dst], #2 -2: - tbz tmp2, #2, 3f - ldr tmp1w, [src], #4 - str tmp1w, [dst], #4 -3: - tbz tmp2, #3, .LSrcAligned - ldr tmp1, [src],#8 - str tmp1, [dst],#8 - -.LSrcAligned: - cmp count, #64 - b.ge .Lcpy_over64 - /* - * Deal with small copies quickly by dropping straight into the - * exit block. - */ -.Ltail63: - /* - * Copy up to 48 bytes of data. At this point we only need the - * bottom 6 bits of count to be accurate. - */ - ands tmp1, count, #0x30 - b.eq .Ltiny15 - cmp tmp1w, #0x20 - b.eq 1f - b.lt 2f - ldp A_l, A_h, [src], #16 - stp A_l, A_h, [dst], #16 -1: - ldp A_l, A_h, [src], #16 - stp A_l, A_h, [dst], #16 -2: - ldp A_l, A_h, [src], #16 - stp A_l, A_h, [dst], #16 -.Ltiny15: - /* - * Prefer to break one ldp/stp into several load/store to access - * memory in an increasing address order,rather than to load/store 16 - * bytes from (src-16) to (dst-16) and to backward the src to aligned - * address,which way is used in original cortex memcpy. If keeping - * the original memcpy process here, memmove need to satisfy the - * precondition that src address is at least 16 bytes bigger than dst - * address,otherwise some source data will be overwritten when memove - * call memcpy directly. To make memmove simpler and decouple the - * memcpy's dependency on memmove, withdrew the original process. - */ - tbz count, #3, 1f - ldr tmp1, [src], #8 - str tmp1, [dst], #8 -1: - tbz count, #2, 2f - ldr tmp1w, [src], #4 - str tmp1w, [dst], #4 -2: - tbz count, #1, 3f - ldrh tmp1w, [src], #2 - strh tmp1w, [dst], #2 -3: - tbz count, #0, .Lexitfunc - ldrb tmp1w, [src] - strb tmp1w, [dst] - -.Lexitfunc: - ret - -.Lcpy_over64: - subs count, count, #128 - b.ge .Lcpy_body_large - /* - * Less than 128 bytes to copy, so handle 64 here and then jump - * to the tail. - */ - ldp A_l, A_h, [src],#16 - stp A_l, A_h, [dst],#16 - ldp B_l, B_h, [src],#16 - ldp C_l, C_h, [src],#16 - stp B_l, B_h, [dst],#16 - stp C_l, C_h, [dst],#16 - ldp D_l, D_h, [src],#16 - stp D_l, D_h, [dst],#16 - - tst count, #0x3f - b.ne .Ltail63 - ret - - /* - * Critical loop. Start at a new cache line boundary. Assuming - * 64 bytes per line this ensures the entire loop is in one line. - */ - .p2align L1_CACHE_SHIFT -.Lcpy_body_large: - /* pre-get 64 bytes data. */ - ldp A_l, A_h, [src],#16 - ldp B_l, B_h, [src],#16 - ldp C_l, C_h, [src],#16 - ldp D_l, D_h, [src],#16 -1: - /* - * interlace the load of next 64 bytes data block with store of the last - * loaded 64 bytes data. - */ - stp A_l, A_h, [dst],#16 - ldp A_l, A_h, [src],#16 - stp B_l, B_h, [dst],#16 - ldp B_l, B_h, [src],#16 - stp C_l, C_h, [dst],#16 - ldp C_l, C_h, [src],#16 - stp D_l, D_h, [dst],#16 - ldp D_l, D_h, [src],#16 - subs count, count, #64 - b.ge 1b - stp A_l, A_h, [dst],#16 - stp B_l, B_h, [dst],#16 - stp C_l, C_h, [dst],#16 - stp D_l, D_h, [dst],#16 - - tst count, #0x3f - b.ne .Ltail63 +#include "copy_template.S" ret ENDPROC(memcpy) --- linux-raspi2-4.2.0.orig/arch/arm64/mm/Makefile +++ linux-raspi2-4.2.0/arch/arm64/mm/Makefile @@ -4,3 +4,4 @@ context.o proc.o pageattr.o obj-$(CONFIG_HUGETLB_PAGE) += hugetlbpage.o obj-$(CONFIG_ARM64_PTDUMP) += dump.o +obj-$(CONFIG_NUMA) += numa.o --- linux-raspi2-4.2.0.orig/arch/arm64/mm/fault.c +++ linux-raspi2-4.2.0/arch/arm64/mm/fault.c @@ -278,6 +278,7 @@ * starvation. */ mm_flags &= ~FAULT_FLAG_ALLOW_RETRY; + mm_flags |= FAULT_FLAG_TRIED; goto retry; } } --- linux-raspi2-4.2.0.orig/arch/arm64/mm/init.c +++ linux-raspi2-4.2.0/arch/arm64/mm/init.c @@ -42,6 +42,7 @@ #include #include #include +#include #include "mm.h" @@ -77,6 +78,20 @@ return min(offset + (1ULL << 32), memblock_end_of_DRAM()); } +#ifdef CONFIG_NUMA +static void __init zone_sizes_init(unsigned long min, unsigned long max) +{ + unsigned long max_zone_pfns[MAX_NR_ZONES]; + + memset(max_zone_pfns, 0, sizeof(max_zone_pfns)); + if (IS_ENABLED(CONFIG_ZONE_DMA)) + max_zone_pfns[ZONE_DMA] = PFN_DOWN(max_zone_dma_phys()); + max_zone_pfns[ZONE_NORMAL] = max; + + free_area_init_nodes(max_zone_pfns); +} + +#else static void __init zone_sizes_init(unsigned long min, unsigned long max) { struct memblock_region *reg; @@ -115,6 +130,7 @@ free_area_init_node(0, zone_size, min, zhole_size); } +#endif /* CONFIG_NUMA */ #ifdef CONFIG_HAVE_ARCH_PFN_VALID int pfn_valid(unsigned long pfn) @@ -132,10 +148,15 @@ static void arm64_memory_present(void) { struct memblock_region *reg; + int nid = 0; - for_each_memblock(memory, reg) - memory_present(0, memblock_region_memory_base_pfn(reg), - memblock_region_memory_end_pfn(reg)); + for_each_memblock(memory, reg) { +#ifdef CONFIG_NUMA + nid = reg->nid; +#endif + memory_present(nid, memblock_region_memory_base_pfn(reg), + memblock_region_memory_end_pfn(reg)); + } } #endif @@ -192,6 +213,10 @@ early_memtest(min << PAGE_SHIFT, max << PAGE_SHIFT); + high_memory = __va((max << PAGE_SHIFT) - 1) + 1; + max_pfn = max_low_pfn = max; + + arm64_numa_init(); /* * Sparsemem tries to allocate bootmem in memory_present(), so must be * done after the fixed reservations. @@ -200,9 +225,6 @@ sparse_init(); zone_sizes_init(min, max); - - high_memory = __va((max << PAGE_SHIFT) - 1) + 1; - max_pfn = max_low_pfn = max; } #ifndef CONFIG_SPARSEMEM_VMEMMAP --- linux-raspi2-4.2.0.orig/arch/arm64/mm/numa.c +++ linux-raspi2-4.2.0/arch/arm64/mm/numa.c @@ -0,0 +1,563 @@ +/* + * NUMA support, based on the x86 implementation. + * + * Copyright (C) 2015 Cavium Inc. + * Author: Ganapatrao Kulkarni + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + * + * 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 . + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +int __initdata numa_off; +nodemask_t numa_nodes_parsed __initdata; +static int numa_distance_cnt; +static u8 *numa_distance; +static u8 dummy_numa_enabled; + +struct pglist_data *node_data[MAX_NUMNODES] __read_mostly; +EXPORT_SYMBOL(node_data); + +struct __node_cpu_hwid node_cpu_hwid[NR_CPUS]; +static struct numa_meminfo numa_meminfo; + +static __init int numa_setup(char *opt) +{ + if (!opt) + return -EINVAL; + if (!strncmp(opt, "off", 3)) { + pr_info("%s\n", "NUMA turned off"); + numa_off = 1; + } + return 0; +} +early_param("numa", numa_setup); + +cpumask_var_t node_to_cpumask_map[MAX_NUMNODES]; +EXPORT_SYMBOL(node_to_cpumask_map); + +int cpu_to_node_map[NR_CPUS]; +EXPORT_SYMBOL(cpu_to_node_map); + +/* + * Returns a pointer to the bitmask of CPUs on Node 'node'. + */ +const struct cpumask *cpumask_of_node(int node) +{ + if (node >= nr_node_ids) { + pr_warn("cpumask_of_node(%d): node > nr_node_ids(%d)\n", + node, nr_node_ids); + dump_stack(); + return cpu_none_mask; + } + if (node_to_cpumask_map[node] == NULL) { + pr_warn("cpumask_of_node(%d): no node_to_cpumask_map!\n", + node); + dump_stack(); + return cpu_online_mask; + } + return node_to_cpumask_map[node]; +} +EXPORT_SYMBOL(cpumask_of_node); + +void numa_clear_node(int cpu) +{ + set_cpu_numa_node(cpu, NUMA_NO_NODE); +} + +void map_cpu_to_node(int cpu, int nid) +{ + if (nid < 0) { /* just initialize by zero */ + cpu_to_node_map[cpu] = 0; + return; + } + + cpu_to_node_map[cpu] = nid; + cpumask_set_cpu(cpu, node_to_cpumask_map[nid]); + set_numa_node(nid); +} + +/** + * build_cpu_to_node_map - setup cpu to node and node to cpumask arrays + * + * Build cpu to node mapping and initialize the per node cpu masks using + * info from the node_cpuid array handed to us by ACPI or DT. + */ +void __init build_cpu_to_node_map(void) +{ + int cpu, i, node; + + for (node = 0; node < MAX_NUMNODES; node++) + cpumask_clear(node_to_cpumask_map[node]); + + for_each_possible_cpu(cpu) { + node = NUMA_NO_NODE; + for_each_possible_cpu(i) { + if (cpu_logical_map(cpu) == node_cpu_hwid[i].cpu_hwid) { + node = node_cpu_hwid[i].node_id; + break; + } + } + map_cpu_to_node(cpu, node); + } +} +/* + * Allocate node_to_cpumask_map based on number of available nodes + * Requires node_possible_map to be valid. + * + * Note: cpumask_of_node() is not valid until after this is done. + * (Use CONFIG_DEBUG_PER_CPU_MAPS to check this.) + */ +void __init setup_node_to_cpumask_map(void) +{ + unsigned int node; + + /* setup nr_node_ids if not done yet */ + if (nr_node_ids == MAX_NUMNODES) + setup_nr_node_ids(); + + /* allocate the map */ + for (node = 0; node < nr_node_ids; node++) + alloc_bootmem_cpumask_var(&node_to_cpumask_map[node]); + + /* cpumask_of_node() will now work */ + pr_debug("Node to cpumask map for %d nodes\n", nr_node_ids); +} + +/* + * Set the cpu to node and mem mapping + */ +void numa_store_cpu_info(int cpu) +{ + if (dummy_numa_enabled) { + /* set to default */ + node_cpu_hwid[cpu].node_id = 0; + node_cpu_hwid[cpu].cpu_hwid = cpu_logical_map(cpu); + } + map_cpu_to_node(cpu, node_cpu_hwid[cpu].node_id); +} + +/** + * numa_add_memblk_to - Add one numa_memblk to a numa_meminfo + */ + +static int __init numa_add_memblk_to(int nid, u64 start, u64 end, + struct numa_meminfo *mi) +{ + /* ignore zero length blks */ + if (start == end) + return 0; + + /* whine about and ignore invalid blks */ + if (start > end || nid < 0 || nid >= MAX_NUMNODES) { + pr_warn("NUMA: Warning: invalid memblk node %d [mem %#010Lx-%#010Lx]\n", + nid, start, end - 1); + return 0; + } + + if (mi->nr_blks >= NR_NODE_MEMBLKS) { + pr_err("NUMA: too many memblk ranges\n"); + return -EINVAL; + } + + pr_info("NUMA: Adding memblock %d [0x%llx - 0x%llx] on node %d\n", + mi->nr_blks, start, end, nid); + mi->blk[mi->nr_blks].start = start; + mi->blk[mi->nr_blks].end = end; + mi->blk[mi->nr_blks].nid = nid; + mi->nr_blks++; + return 0; +} + +/** + * numa_add_memblk - Add one numa_memblk to numa_meminfo + * @nid: NUMA node ID of the new memblk + * @start: Start address of the new memblk + * @end: End address of the new memblk + * + * Add a new memblk to the default numa_meminfo. + * + * RETURNS: + * 0 on success, -errno on failure. + */ +#define MAX_PHYS_ADDR ((phys_addr_t)~0) + +int __init numa_add_memblk(u32 nid, u64 base, u64 end) +{ + const u64 phys_offset = __pa(PAGE_OFFSET); + + base &= PAGE_MASK; + end &= PAGE_MASK; + + if (base > MAX_PHYS_ADDR) { + pr_warn("NUMA: Ignoring memory block 0x%llx - 0x%llx\n", + base, base + end); + return -ENOMEM; + } + + if (base + end > MAX_PHYS_ADDR) { + pr_info("NUMA: Ignoring memory range 0x%lx - 0x%llx\n", + ULONG_MAX, base + end); + end = MAX_PHYS_ADDR - base; + } + + if (base + end < phys_offset) { + pr_warn("NUMA: Ignoring memory block 0x%llx - 0x%llx\n", + base, base + end); + return -ENOMEM; + } + if (base < phys_offset) { + pr_info("NUMA: Ignoring memory range 0x%llx - 0x%llx\n", + base, phys_offset); + end -= phys_offset - base; + base = phys_offset; + } + + return numa_add_memblk_to(nid, base, base + end, &numa_meminfo); +} +EXPORT_SYMBOL(numa_add_memblk); + +/* Initialize NODE_DATA for a node on the local memory */ +static void __init setup_node_data(int nid, u64 start, u64 end) +{ + const size_t nd_size = roundup(sizeof(pg_data_t), PAGE_SIZE); + u64 nd_pa; + void *nd; + int tnid; + + start = roundup(start, ZONE_ALIGN); + + pr_info("Initmem setup node %d [mem %#010Lx-%#010Lx]\n", + nid, start, end - 1); + + /* + * Allocate node data. Try node-local memory and then any node. + */ + nd_pa = memblock_alloc_nid(nd_size, SMP_CACHE_BYTES, nid); + if (!nd_pa) { + nd_pa = __memblock_alloc_base(nd_size, SMP_CACHE_BYTES, + MEMBLOCK_ALLOC_ACCESSIBLE); + if (!nd_pa) { + pr_err("Cannot find %zu bytes in node %d\n", + nd_size, nid); + return; + } + } + nd = __va(nd_pa); + + /* report and initialize */ + pr_info(" NODE_DATA [mem %#010Lx-%#010Lx]\n", + nd_pa, nd_pa + nd_size - 1); + tnid = early_pfn_to_nid(nd_pa >> PAGE_SHIFT); + if (tnid != nid) + pr_info(" NODE_DATA(%d) on node %d\n", nid, tnid); + + node_data[nid] = nd; + memset(NODE_DATA(nid), 0, sizeof(pg_data_t)); + NODE_DATA(nid)->node_id = nid; + NODE_DATA(nid)->node_start_pfn = start >> PAGE_SHIFT; + NODE_DATA(nid)->node_spanned_pages = (end - start) >> PAGE_SHIFT; + + node_set_online(nid); +} + +/* + * Set nodes, which have memory in @mi, in *@nodemask. + */ +static void __init numa_nodemask_from_meminfo(nodemask_t *nodemask, + const struct numa_meminfo *mi) +{ + int i; + + for (i = 0; i < ARRAY_SIZE(mi->blk); i++) + if (mi->blk[i].start != mi->blk[i].end && + mi->blk[i].nid != NUMA_NO_NODE) + node_set(mi->blk[i].nid, *nodemask); +} + +/* + * Sanity check to catch more bad NUMA configurations (they are amazingly + * common). Make sure the nodes cover all memory. + */ +static bool __init numa_meminfo_cover_memory(const struct numa_meminfo *mi) +{ + u64 numaram, totalram; + int i; + + numaram = 0; + for (i = 0; i < mi->nr_blks; i++) { + u64 s = mi->blk[i].start >> PAGE_SHIFT; + u64 e = mi->blk[i].end >> PAGE_SHIFT; + + numaram += e - s; + numaram -= __absent_pages_in_range(mi->blk[i].nid, s, e); + if ((s64)numaram < 0) + numaram = 0; + } + + totalram = max_pfn - absent_pages_in_range(0, max_pfn); + + /* We seem to lose 3 pages somewhere. Allow 1M of slack. */ + if ((s64)(totalram - numaram) >= (1 << (20 - PAGE_SHIFT))) { + pr_err("NUMA: nodes only cover %lluMB of your %lluMB Total RAM. Not used.\n", + (numaram << PAGE_SHIFT) >> 20, + (totalram << PAGE_SHIFT) >> 20); + return false; + } + return true; +} + +/** + * numa_reset_distance - Reset NUMA distance table + * + * The current table is freed. The next numa_set_distance() call will + * create a new one. + */ +void __init numa_reset_distance(void) +{ + size_t size = numa_distance_cnt * numa_distance_cnt * + sizeof(numa_distance[0]); + + /* numa_distance could be 1LU marking allocation failure, test cnt */ + if (numa_distance_cnt) + memblock_free(__pa(numa_distance), size); + numa_distance_cnt = 0; + numa_distance = NULL; /* enable table creation */ +} + +static int __init numa_alloc_distance(void) +{ + nodemask_t nodes_parsed; + size_t size; + int i, j, cnt = 0; + u64 phys; + + /* size the new table and allocate it */ + nodes_parsed = numa_nodes_parsed; + numa_nodemask_from_meminfo(&nodes_parsed, &numa_meminfo); + + for_each_node_mask(i, nodes_parsed) + cnt = i; + cnt++; + size = cnt * cnt * sizeof(numa_distance[0]); + + phys = memblock_find_in_range(0, PFN_PHYS(max_pfn), + size, PAGE_SIZE); + if (!phys) { + pr_warn("NUMA: Warning: can't allocate distance table!\n"); + /* don't retry until explicitly reset */ + numa_distance = (void *)1LU; + return -ENOMEM; + } + memblock_reserve(phys, size); + + numa_distance = __va(phys); + numa_distance_cnt = cnt; + + /* fill with the default distances */ + for (i = 0; i < cnt; i++) + for (j = 0; j < cnt; j++) + numa_distance[i * cnt + j] = i == j ? + LOCAL_DISTANCE : REMOTE_DISTANCE; + pr_debug("NUMA: Initialized distance table, cnt=%d\n", cnt); + + return 0; +} + +/** + * numa_set_distance - Set NUMA distance from one NUMA to another + * @from: the 'from' node to set distance + * @to: the 'to' node to set distance + * @distance: NUMA distance + * + * Set the distance from node @from to @to to @distance. If distance table + * doesn't exist, one which is large enough to accommodate all the currently + * known nodes will be created. + * + * If such table cannot be allocated, a warning is printed and further + * calls are ignored until the distance table is reset with + * numa_reset_distance(). + * + * If @from or @to is higher than the highest known node or lower than zero + * at the time of table creation or @distance doesn't make sense, the call + * is ignored. + * This is to allow simplification of specific NUMA config implementations. + */ +void __init numa_set_distance(int from, int to, int distance) +{ + if (!numa_distance && numa_alloc_distance() < 0) + return; + + if (from >= numa_distance_cnt || to >= numa_distance_cnt || + from < 0 || to < 0) { + pr_warn_once("NUMA: Warning: node ids are out of bound, from=%d to=%d distance=%d\n", + from, to, distance); + return; + } + + if ((u8)distance != distance || + (from == to && distance != LOCAL_DISTANCE)) { + pr_warn_once("NUMA: Warning: invalid distance parameter, from=%d to=%d distance=%d\n", + from, to, distance); + return; + } + + numa_distance[from * numa_distance_cnt + to] = distance; +} +EXPORT_SYMBOL(numa_set_distance); + +int __node_distance(int from, int to) +{ + if (from >= numa_distance_cnt || to >= numa_distance_cnt) + return from == to ? LOCAL_DISTANCE : REMOTE_DISTANCE; + return numa_distance[from * numa_distance_cnt + to]; +} +EXPORT_SYMBOL(__node_distance); + +static int __init numa_register_memblks(struct numa_meminfo *mi) +{ + unsigned long uninitialized_var(pfn_align); + int i, nid; + + /* Account for nodes with cpus and no memory */ + node_possible_map = numa_nodes_parsed; + numa_nodemask_from_meminfo(&node_possible_map, mi); + if (WARN_ON(nodes_empty(node_possible_map))) + return -EINVAL; + + for (i = 0; i < mi->nr_blks; i++) { + struct numa_memblk *mb = &mi->blk[i]; + + memblock_set_node(mb->start, mb->end - mb->start, + &memblock.memory, mb->nid); + } + + /* + * If sections array is gonna be used for pfn -> nid mapping, check + * whether its granularity is fine enough. + */ +#ifdef NODE_NOT_IN_PAGE_FLAGS + pfn_align = node_map_pfn_alignment(); + if (pfn_align && pfn_align < PAGES_PER_SECTION) { + pr_warn("Node alignment %lluMB < min %lluMB, rejecting NUMA config\n", + PFN_PHYS(pfn_align) >> 20, + PFN_PHYS(PAGES_PER_SECTION) >> 20); + return -EINVAL; + } +#endif + if (!numa_meminfo_cover_memory(mi)) + return -EINVAL; + + /* Finally register nodes. */ + for_each_node_mask(nid, node_possible_map) { + u64 start = PFN_PHYS(max_pfn); + u64 end = 0; + + for (i = 0; i < mi->nr_blks; i++) { + if (nid != mi->blk[i].nid) + continue; + start = min(mi->blk[i].start, start); + end = max(mi->blk[i].end, end); + } + + if (start < end) + setup_node_data(nid, start, end); + } + + /* Dump memblock with node info and return. */ + memblock_dump_all(); + return 0; +} + +static int __init numa_init(int (*init_func)(void)) +{ + int ret, i; + + nodes_clear(numa_nodes_parsed); + nodes_clear(node_possible_map); + nodes_clear(node_online_map); + + ret = init_func(); + if (ret < 0) + return ret; + + ret = numa_register_memblks(&numa_meminfo); + if (ret < 0) + return ret; + + for (i = 0; i < nr_cpu_ids; i++) + numa_clear_node(i); + + setup_node_to_cpumask_map(); + build_cpu_to_node_map(); + return 0; +} + +/** + * dummy_numa_init - Fallback dummy NUMA init + * + * Used if there's no underlying NUMA architecture, NUMA initialization + * fails, or NUMA is disabled on the command line. + * + * Must online at least one node and add memory blocks that cover all + * allowed memory. This function must not fail. + */ +static int __init dummy_numa_init(void) +{ + pr_info("%s\n", "No NUMA configuration found"); + pr_info("Faking a node at [mem %#018Lx-%#018Lx]\n", + 0LLU, PFN_PHYS(max_pfn) - 1); + node_set(0, numa_nodes_parsed); + numa_add_memblk(0, 0, PFN_PHYS(max_pfn)); + dummy_numa_enabled = 1; + + return 0; +} + +/** + * arm64_numa_init - Initialize NUMA + * + * Try each configured NUMA initialization method until one succeeds. The + * last fallback is dummy single node config encomapssing whole memory and + * never fails. + */ +void __init arm64_numa_init(void) +{ + int (*init_func)(void); + + if (IS_ENABLED(CONFIG_ARM64_DT_NUMA)) + init_func = arm64_dt_numa_init; + else + init_func = NULL; + + if (!numa_off && init_func) { + if (!numa_init(init_func)) + return; + } + + numa_init(dummy_numa_init); +} --- linux-raspi2-4.2.0.orig/arch/arm64/net/bpf_jit.h +++ linux-raspi2-4.2.0/arch/arm64/net/bpf_jit.h @@ -1,7 +1,7 @@ /* * BPF JIT compiler for ARM64 * - * Copyright (C) 2014 Zi Shen Lim + * Copyright (C) 2014-2015 Zi Shen Lim * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 as @@ -35,6 +35,7 @@ aarch64_insn_gen_comp_branch_imm(0, offset, Rt, A64_VARIANT(sf), \ AARCH64_INSN_BRANCH_COMP_##type) #define A64_CBZ(sf, Rt, imm19) A64_COMP_BRANCH(sf, Rt, (imm19) << 2, ZERO) +#define A64_CBNZ(sf, Rt, imm19) A64_COMP_BRANCH(sf, Rt, (imm19) << 2, NONZERO) /* Conditional branch (immediate) */ #define A64_COND_BRANCH(cond, offset) \ --- linux-raspi2-4.2.0.orig/arch/arm64/net/bpf_jit_comp.c +++ linux-raspi2-4.2.0/arch/arm64/net/bpf_jit_comp.c @@ -1,7 +1,7 @@ /* * BPF JIT compiler for ARM64 * - * Copyright (C) 2014 Zi Shen Lim + * Copyright (C) 2014-2015 Zi Shen Lim * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 as @@ -225,6 +225,17 @@ u8 jmp_cond; s32 jmp_offset; +#define check_imm(bits, imm) do { \ + if ((((imm) > 0) && ((imm) >> (bits))) || \ + (((imm) < 0) && (~(imm) >> (bits)))) { \ + pr_info("[%2d] imm=%d(0x%x) out of range\n", \ + i, imm, imm); \ + return -EINVAL; \ + } \ +} while (0) +#define check_imm19(imm) check_imm(19, imm) +#define check_imm26(imm) check_imm(26, imm) + switch (code) { /* dst = src */ case BPF_ALU | BPF_MOV | BPF_X: @@ -258,15 +269,33 @@ break; case BPF_ALU | BPF_DIV | BPF_X: case BPF_ALU64 | BPF_DIV | BPF_X: - emit(A64_UDIV(is64, dst, dst, src), ctx); - break; case BPF_ALU | BPF_MOD | BPF_X: case BPF_ALU64 | BPF_MOD | BPF_X: - ctx->tmp_used = 1; - emit(A64_UDIV(is64, tmp, dst, src), ctx); - emit(A64_MUL(is64, tmp, tmp, src), ctx); - emit(A64_SUB(is64, dst, dst, tmp), ctx); + { + const u8 r0 = bpf2a64[BPF_REG_0]; + + /* if (src == 0) return 0 */ + jmp_offset = 3; /* skip ahead to else path */ + check_imm19(jmp_offset); + emit(A64_CBNZ(is64, src, jmp_offset), ctx); + emit(A64_MOVZ(1, r0, 0, 0), ctx); + jmp_offset = epilogue_offset(ctx); + check_imm26(jmp_offset); + emit(A64_B(jmp_offset), ctx); + /* else */ + switch (BPF_OP(code)) { + case BPF_DIV: + emit(A64_UDIV(is64, dst, dst, src), ctx); + break; + case BPF_MOD: + ctx->tmp_used = 1; + emit(A64_UDIV(is64, tmp, dst, src), ctx); + emit(A64_MUL(is64, tmp, tmp, src), ctx); + emit(A64_SUB(is64, dst, dst, tmp), ctx); + break; + } break; + } case BPF_ALU | BPF_LSH | BPF_X: case BPF_ALU64 | BPF_LSH | BPF_X: emit(A64_LSLV(is64, dst, dst, src), ctx); @@ -393,17 +422,6 @@ emit(A64_ASR(is64, dst, dst, imm), ctx); break; -#define check_imm(bits, imm) do { \ - if ((((imm) > 0) && ((imm) >> (bits))) || \ - (((imm) < 0) && (~(imm) >> (bits)))) { \ - pr_info("[%2d] imm=%d(0x%x) out of range\n", \ - i, imm, imm); \ - return -EINVAL; \ - } \ -} while (0) -#define check_imm19(imm) check_imm(19, imm) -#define check_imm26(imm) check_imm(26, imm) - /* JUMP off */ case BPF_JMP | BPF_JA: jmp_offset = bpf2a64_offset(i + off, i, ctx); --- linux-raspi2-4.2.0.orig/arch/h8300/boot/compressed/misc.c +++ linux-raspi2-4.2.0/arch/h8300/boot/compressed/misc.c @@ -70,5 +70,5 @@ free_mem_ptr = (unsigned long)&_end; free_mem_end_ptr = free_mem_ptr + HEAP_SIZE; - decompress(input_data, input_len, NULL, NULL, output, NULL, error); + __decompress(input_data, input_len, NULL, NULL, output, 0, NULL, error); } --- linux-raspi2-4.2.0.orig/arch/m32r/boot/compressed/misc.c +++ linux-raspi2-4.2.0/arch/m32r/boot/compressed/misc.c @@ -86,6 +86,7 @@ free_mem_end_ptr = free_mem_ptr + BOOT_HEAP_SIZE; puts("\nDecompressing Linux... "); - decompress(input_data, input_len, NULL, NULL, output_data, NULL, error); + __decompress(input_data, input_len, NULL, NULL, output_data, 0, + NULL, error); puts("done.\nBooting the kernel.\n"); } --- linux-raspi2-4.2.0.orig/arch/m68k/include/asm/linkage.h +++ linux-raspi2-4.2.0/arch/m68k/include/asm/linkage.h @@ -4,4 +4,34 @@ #define __ALIGN .align 4 #define __ALIGN_STR ".align 4" +/* + * Make sure the compiler doesn't do anything stupid with the + * arguments on the stack - they are owned by the *caller*, not + * the callee. This just fools gcc into not spilling into them, + * and keeps it from doing tailcall recursion and/or using the + * stack slots for temporaries, since they are live and "used" + * all the way to the end of the function. + */ +#define asmlinkage_protect(n, ret, args...) \ + __asmlinkage_protect##n(ret, ##args) +#define __asmlinkage_protect_n(ret, args...) \ + __asm__ __volatile__ ("" : "=r" (ret) : "0" (ret), ##args) +#define __asmlinkage_protect0(ret) \ + __asmlinkage_protect_n(ret) +#define __asmlinkage_protect1(ret, arg1) \ + __asmlinkage_protect_n(ret, "m" (arg1)) +#define __asmlinkage_protect2(ret, arg1, arg2) \ + __asmlinkage_protect_n(ret, "m" (arg1), "m" (arg2)) +#define __asmlinkage_protect3(ret, arg1, arg2, arg3) \ + __asmlinkage_protect_n(ret, "m" (arg1), "m" (arg2), "m" (arg3)) +#define __asmlinkage_protect4(ret, arg1, arg2, arg3, arg4) \ + __asmlinkage_protect_n(ret, "m" (arg1), "m" (arg2), "m" (arg3), \ + "m" (arg4)) +#define __asmlinkage_protect5(ret, arg1, arg2, arg3, arg4, arg5) \ + __asmlinkage_protect_n(ret, "m" (arg1), "m" (arg2), "m" (arg3), \ + "m" (arg4), "m" (arg5)) +#define __asmlinkage_protect6(ret, arg1, arg2, arg3, arg4, arg5, arg6) \ + __asmlinkage_protect_n(ret, "m" (arg1), "m" (arg2), "m" (arg3), \ + "m" (arg4), "m" (arg5), "m" (arg6)) + #endif --- linux-raspi2-4.2.0.orig/arch/mips/ath79/setup.c +++ linux-raspi2-4.2.0/arch/mips/ath79/setup.c @@ -216,9 +216,9 @@ AR71XX_RESET_SIZE); ath79_pll_base = ioremap_nocache(AR71XX_PLL_BASE, AR71XX_PLL_SIZE); + ath79_detect_sys_type(); ath79_ddr_ctrl_init(); - ath79_detect_sys_type(); if (mips_machtype != ATH79_MACH_GENERIC_OF) detect_memory_region(0, ATH79_MEM_SIZE_MIN, ATH79_MEM_SIZE_MAX); --- linux-raspi2-4.2.0.orig/arch/mips/boot/compressed/decompress.c +++ linux-raspi2-4.2.0/arch/mips/boot/compressed/decompress.c @@ -111,8 +111,8 @@ puts("\n"); /* Decompress the kernel with according algorithm */ - decompress((char *)zimage_start, zimage_size, 0, 0, - (void *)VMLINUX_LOAD_ADDRESS_ULL, 0, error); + __decompress((char *)zimage_start, zimage_size, 0, 0, + (void *)VMLINUX_LOAD_ADDRESS_ULL, 0, 0, error); /* FIXME: should we flush cache here? */ puts("Now, booting the kernel...\n"); --- linux-raspi2-4.2.0.orig/arch/mips/include/asm/atomic.h +++ linux-raspi2-4.2.0/arch/mips/include/asm/atomic.h @@ -500,7 +500,7 @@ * @u: ...unless v is equal to u. * * Atomically adds @a to @v, so long as it was not @u. - * Returns the old value of @v. + * Returns true iff @v was not @u. */ static __inline__ int atomic64_add_unless(atomic64_t *v, long a, long u) { --- linux-raspi2-4.2.0.orig/arch/mips/include/asm/cdmm.h +++ linux-raspi2-4.2.0/arch/mips/include/asm/cdmm.h @@ -84,6 +84,17 @@ module_driver(__mips_cdmm_driver, mips_cdmm_driver_register, \ mips_cdmm_driver_unregister) +/* + * builtin_mips_cdmm_driver() - Helper macro for drivers that don't do anything + * special in init and have no exit. This eliminates some boilerplate. Each + * driver may only use this macro once, and calling it replaces device_initcall + * (or in some cases, the legacy __initcall). This is meant to be a direct + * parallel of module_mips_cdmm_driver() above but without the __exit stuff that + * is not used for builtin cases. + */ +#define builtin_mips_cdmm_driver(__mips_cdmm_driver) \ + builtin_driver(__mips_cdmm_driver, mips_cdmm_driver_register) + /* drivers/tty/mips_ejtag_fdc.c */ #ifdef CONFIG_MIPS_EJTAG_FDC_EARLYCON --- linux-raspi2-4.2.0.orig/arch/mips/kernel/cps-vec.S +++ linux-raspi2-4.2.0/arch/mips/kernel/cps-vec.S @@ -39,6 +39,7 @@ mfc0 \dest, CP0_CONFIG, 3 andi \dest, \dest, MIPS_CONF3_MT beqz \dest, \nomt + nop .endm .section .text.cps-vec @@ -152,7 +153,7 @@ /* Enter the coherent domain */ li t0, 0xff - PTR_S t0, GCR_CL_COHERENCE_OFS(v1) + sw t0, GCR_CL_COHERENCE_OFS(v1) ehb /* Jump to kseg0 */ @@ -223,10 +224,9 @@ END(excep_ejtag) LEAF(mips_cps_core_init) -#ifdef CONFIG_MIPS_MT +#ifdef CONFIG_MIPS_MT_SMP /* Check that the core implements the MT ASE */ has_mt t0, 3f - nop .set push .set mips64r2 @@ -302,7 +302,7 @@ PTR_L t0, 0(t0) /* Calculate a pointer to this cores struct core_boot_config */ - PTR_L t0, GCR_CL_ID_OFS(t0) + lw t0, GCR_CL_ID_OFS(t0) li t1, COREBOOTCFG_SIZE mul t0, t0, t1 PTR_LA t1, mips_cps_core_bootcfg @@ -310,8 +310,9 @@ PTR_ADDU t0, t0, t1 /* Calculate this VPEs ID. If the core doesn't support MT use 0 */ + li t9, 0 +#ifdef CONFIG_MIPS_MT_SMP has_mt ta2, 1f - li t9, 0 /* Find the number of VPEs present in the core */ mfc0 t1, CP0_MVPCONF0 @@ -330,6 +331,7 @@ /* Retrieve the VPE ID from EBase.CPUNum */ mfc0 t9, $15, 1 and t9, t9, t1 +#endif 1: /* Calculate a pointer to this VPEs struct vpe_boot_config */ li t1, VPEBOOTCFG_SIZE @@ -337,7 +339,7 @@ PTR_L ta3, COREBOOTCFG_VPECONFIG(t0) PTR_ADDU v0, v0, ta3 -#ifdef CONFIG_MIPS_MT +#ifdef CONFIG_MIPS_MT_SMP /* If the core doesn't support MT then return */ bnez ta2, 1f @@ -451,7 +453,7 @@ 2: .set pop -#endif /* CONFIG_MIPS_MT */ +#endif /* CONFIG_MIPS_MT_SMP */ /* Return */ jr ra --- linux-raspi2-4.2.0.orig/arch/mips/kernel/setup.c +++ linux-raspi2-4.2.0/arch/mips/kernel/setup.c @@ -338,7 +338,7 @@ if (end <= reserved_end) continue; #ifdef CONFIG_BLK_DEV_INITRD - /* mapstart should be after initrd_end */ + /* Skip zones before initrd and initrd itself */ if (initrd_end && end <= (unsigned long)PFN_UP(__pa(initrd_end))) continue; #endif @@ -371,6 +371,14 @@ max_low_pfn = PFN_DOWN(HIGHMEM_START); } +#ifdef CONFIG_BLK_DEV_INITRD + /* + * mapstart should be after initrd_end + */ + if (initrd_end) + mapstart = max(mapstart, (unsigned long)PFN_UP(__pa(initrd_end))); +#endif + /* * Initialize the boot-time allocator with low memory only. */ --- linux-raspi2-4.2.0.orig/arch/mips/kvm/emulate.c +++ linux-raspi2-4.2.0/arch/mips/kvm/emulate.c @@ -1581,7 +1581,7 @@ base = (inst >> 21) & 0x1f; op_inst = (inst >> 16) & 0x1f; - offset = inst & 0xffff; + offset = (int16_t)inst; cache = (inst >> 16) & 0x3; op = (inst >> 18) & 0x7; --- linux-raspi2-4.2.0.orig/arch/mips/kvm/locore.S +++ linux-raspi2-4.2.0/arch/mips/kvm/locore.S @@ -165,9 +165,11 @@ FEXPORT(__kvm_mips_load_asid) /* Set the ASID for the Guest Kernel */ - INT_SLL t0, t0, 1 /* with kseg0 @ 0x40000000, kernel */ - /* addresses shift to 0x80000000 */ - bltz t0, 1f /* If kernel */ + PTR_L t0, VCPU_COP0(k1) + LONG_L t0, COP0_STATUS(t0) + andi t0, KSU_USER | ST0_ERL | ST0_EXL + xori t0, KSU_USER + bnez t0, 1f /* If kernel */ INT_ADDIU t1, k1, VCPU_GUEST_KERNEL_ASID /* (BD) */ INT_ADDIU t1, k1, VCPU_GUEST_USER_ASID /* else user */ 1: @@ -482,9 +484,11 @@ mtc0 t0, CP0_EPC /* Set the ASID for the Guest Kernel */ - INT_SLL t0, t0, 1 /* with kseg0 @ 0x40000000, kernel */ - /* addresses shift to 0x80000000 */ - bltz t0, 1f /* If kernel */ + PTR_L t0, VCPU_COP0(k1) + LONG_L t0, COP0_STATUS(t0) + andi t0, KSU_USER | ST0_ERL | ST0_EXL + xori t0, KSU_USER + bnez t0, 1f /* If kernel */ INT_ADDIU t1, k1, VCPU_GUEST_KERNEL_ASID /* (BD) */ INT_ADDIU t1, k1, VCPU_GUEST_USER_ASID /* else user */ 1: --- linux-raspi2-4.2.0.orig/arch/mips/kvm/mips.c +++ linux-raspi2-4.2.0/arch/mips/kvm/mips.c @@ -278,7 +278,7 @@ if (!gebase) { err = -ENOMEM; - goto out_free_cpu; + goto out_uninit_cpu; } kvm_debug("Allocated %d bytes for KVM Exception Handlers @ %p\n", ALIGN(size, PAGE_SIZE), gebase); @@ -342,6 +342,9 @@ out_free_gebase: kfree(gebase); +out_uninit_cpu: + kvm_vcpu_uninit(vcpu); + out_free_cpu: kfree(vcpu); --- linux-raspi2-4.2.0.orig/arch/mips/lantiq/clk.c +++ linux-raspi2-4.2.0/arch/mips/lantiq/clk.c @@ -99,6 +99,23 @@ } EXPORT_SYMBOL(clk_set_rate); +long clk_round_rate(struct clk *clk, unsigned long rate) +{ + if (unlikely(!clk_good(clk))) + return 0; + if (clk->rates && *clk->rates) { + unsigned long *r = clk->rates; + + while (*r && (*r != rate)) + r++; + if (!*r) { + return clk->rate; + } + } + return rate; +} +EXPORT_SYMBOL(clk_round_rate); + int clk_enable(struct clk *clk) { if (unlikely(!clk_good(clk))) --- linux-raspi2-4.2.0.orig/arch/mips/loongson64/common/env.c +++ linux-raspi2-4.2.0/arch/mips/loongson64/common/env.c @@ -64,6 +64,9 @@ } if (memsize == 0) memsize = 256; + + loongson_sysconf.nr_uarts = 1; + pr_info("memsize=%u, highmemsize=%u\n", memsize, highmemsize); #else struct boot_params *boot_p; --- linux-raspi2-4.2.0.orig/arch/mips/math-emu/cp1emu.c +++ linux-raspi2-4.2.0/arch/mips/math-emu/cp1emu.c @@ -1137,7 +1137,7 @@ break; case mfhc_op: - if (!cpu_has_mips_r2) + if (!cpu_has_mips_r2_r6) goto sigill; /* copregister rd -> gpr[rt] */ @@ -1148,7 +1148,7 @@ break; case mthc_op: - if (!cpu_has_mips_r2) + if (!cpu_has_mips_r2_r6) goto sigill; /* copregister rd <- gpr[rt] */ @@ -1181,6 +1181,24 @@ } break; + case bc1eqz_op: + case bc1nez_op: + if (!cpu_has_mips_r6 || delay_slot(xcp)) + return SIGILL; + + cond = likely = 0; + switch (MIPSInst_RS(ir)) { + case bc1eqz_op: + if (get_fpr32(¤t->thread.fpu.fpr[MIPSInst_RT(ir)], 0) & 0x1) + cond = 1; + break; + case bc1nez_op: + if (!(get_fpr32(¤t->thread.fpu.fpr[MIPSInst_RT(ir)], 0) & 0x1)) + cond = 1; + break; + } + goto branch_common; + case bc_op: if (delay_slot(xcp)) return SIGILL; @@ -1207,7 +1225,7 @@ case bct_op: break; } - +branch_common: set_delay_slot(xcp); if (cond) { /* --- linux-raspi2-4.2.0.orig/arch/mips/mm/dma-default.c +++ linux-raspi2-4.2.0/arch/mips/mm/dma-default.c @@ -100,7 +100,7 @@ else #endif #if defined(CONFIG_ZONE_DMA) && !defined(CONFIG_ZONE_DMA32) - if (dev->coherent_dma_mask < DMA_BIT_MASK(64)) + if (dev->coherent_dma_mask < DMA_BIT_MASK(sizeof(phys_addr_t) * 8)) dma_flag = __GFP_DMA; else #endif --- linux-raspi2-4.2.0.orig/arch/mips/net/bpf_jit_asm.S +++ linux-raspi2-4.2.0/arch/mips/net/bpf_jit_asm.S @@ -64,8 +64,20 @@ PTR_ADDU t1, $r_skb_data, offset lw $r_A, 0(t1) #ifdef CONFIG_CPU_LITTLE_ENDIAN +# if defined(__mips_isa_rev) && (__mips_isa_rev >= 2) wsbh t0, $r_A rotr $r_A, t0, 16 +# else + sll t0, $r_A, 24 + srl t1, $r_A, 24 + srl t2, $r_A, 8 + or t0, t0, t1 + andi t2, t2, 0xff00 + andi t1, $r_A, 0xff00 + or t0, t0, t2 + sll t1, t1, 8 + or $r_A, t0, t1 +# endif #endif jr $r_ra move $r_ret, zero @@ -80,8 +92,16 @@ PTR_ADDU t1, $r_skb_data, offset lh $r_A, 0(t1) #ifdef CONFIG_CPU_LITTLE_ENDIAN +# if defined(__mips_isa_rev) && (__mips_isa_rev >= 2) wsbh t0, $r_A seh $r_A, t0 +# else + sll t0, $r_A, 24 + andi t1, $r_A, 0xff00 + sra t0, t0, 16 + srl t1, t1, 8 + or $r_A, t0, t1 +# endif #endif jr $r_ra move $r_ret, zero @@ -148,23 +168,47 @@ NESTED(bpf_slow_path_word, (6 * SZREG), $r_sp) bpf_slow_path_common(4) #ifdef CONFIG_CPU_LITTLE_ENDIAN +# if defined(__mips_isa_rev) && (__mips_isa_rev >= 2) wsbh t0, $r_s0 jr $r_ra rotr $r_A, t0, 16 -#endif +# else + sll t0, $r_s0, 24 + srl t1, $r_s0, 24 + srl t2, $r_s0, 8 + or t0, t0, t1 + andi t2, t2, 0xff00 + andi t1, $r_s0, 0xff00 + or t0, t0, t2 + sll t1, t1, 8 + jr $r_ra + or $r_A, t0, t1 +# endif +#else jr $r_ra - move $r_A, $r_s0 + move $r_A, $r_s0 +#endif END(bpf_slow_path_word) NESTED(bpf_slow_path_half, (6 * SZREG), $r_sp) bpf_slow_path_common(2) #ifdef CONFIG_CPU_LITTLE_ENDIAN +# if defined(__mips_isa_rev) && (__mips_isa_rev >= 2) jr $r_ra wsbh $r_A, $r_s0 -#endif +# else + sll t0, $r_s0, 8 + andi t1, $r_s0, 0xff00 + andi t0, t0, 0xff00 + srl t1, t1, 8 + jr $r_ra + or $r_A, t0, t1 +# endif +#else jr $r_ra move $r_A, $r_s0 +#endif END(bpf_slow_path_half) --- linux-raspi2-4.2.0.orig/arch/parisc/include/asm/compat.h +++ linux-raspi2-4.2.0/arch/parisc/include/asm/compat.h @@ -206,10 +206,10 @@ struct compat_semid64_ds { struct compat_ipc64_perm sem_perm; - compat_time_t sem_otime; unsigned int __unused1; - compat_time_t sem_ctime; + compat_time_t sem_otime; unsigned int __unused2; + compat_time_t sem_ctime; compat_ulong_t sem_nsems; compat_ulong_t __unused3; compat_ulong_t __unused4; --- linux-raspi2-4.2.0.orig/arch/parisc/include/uapi/asm/ipcbuf.h +++ linux-raspi2-4.2.0/arch/parisc/include/uapi/asm/ipcbuf.h @@ -1,6 +1,9 @@ #ifndef __PARISC_IPCBUF_H__ #define __PARISC_IPCBUF_H__ +#include +#include + /* * The ipc64_perm structure for PA-RISC is almost identical to * kern_ipc_perm as we have always had 32-bit UIDs and GIDs in the kernel. @@ -10,16 +13,18 @@ struct ipc64_perm { - key_t key; - uid_t uid; - gid_t gid; - uid_t cuid; - gid_t cgid; + __kernel_key_t key; + __kernel_uid_t uid; + __kernel_gid_t gid; + __kernel_uid_t cuid; + __kernel_gid_t cgid; +#if __BITS_PER_LONG != 64 unsigned short int __pad1; - mode_t mode; +#endif + __kernel_mode_t mode; unsigned short int __pad2; unsigned short int seq; - unsigned int __pad3; + unsigned int __pad3; unsigned long long int __unused1; unsigned long long int __unused2; }; --- linux-raspi2-4.2.0.orig/arch/parisc/include/uapi/asm/msgbuf.h +++ linux-raspi2-4.2.0/arch/parisc/include/uapi/asm/msgbuf.h @@ -27,13 +27,13 @@ unsigned int __pad3; #endif __kernel_time_t msg_ctime; /* last change time */ - unsigned int msg_cbytes; /* current number of bytes on queue */ - unsigned int msg_qnum; /* number of messages in queue */ - unsigned int msg_qbytes; /* max number of bytes on queue */ + unsigned long msg_cbytes; /* current number of bytes on queue */ + unsigned long msg_qnum; /* number of messages in queue */ + unsigned long msg_qbytes; /* max number of bytes on queue */ __kernel_pid_t msg_lspid; /* pid of last msgsnd */ __kernel_pid_t msg_lrpid; /* last receive pid */ - unsigned int __unused1; - unsigned int __unused2; + unsigned long __unused1; + unsigned long __unused2; }; #endif /* _PARISC_MSGBUF_H */ --- linux-raspi2-4.2.0.orig/arch/parisc/include/uapi/asm/posix_types.h +++ linux-raspi2-4.2.0/arch/parisc/include/uapi/asm/posix_types.h @@ -7,8 +7,10 @@ * assume GCC is being used. */ +#ifndef __LP64__ typedef unsigned short __kernel_mode_t; #define __kernel_mode_t __kernel_mode_t +#endif typedef unsigned short __kernel_ipc_pid_t; #define __kernel_ipc_pid_t __kernel_ipc_pid_t --- linux-raspi2-4.2.0.orig/arch/parisc/include/uapi/asm/sembuf.h +++ linux-raspi2-4.2.0/arch/parisc/include/uapi/asm/sembuf.h @@ -23,9 +23,9 @@ unsigned int __pad2; #endif __kernel_time_t sem_ctime; /* last change time */ - unsigned int sem_nsems; /* no. of semaphores in array */ - unsigned int __unused1; - unsigned int __unused2; + unsigned long sem_nsems; /* no. of semaphores in array */ + unsigned long __unused1; + unsigned long __unused2; }; #endif /* _PARISC_SEMBUF_H */ --- linux-raspi2-4.2.0.orig/arch/parisc/include/uapi/asm/shmbuf.h +++ linux-raspi2-4.2.0/arch/parisc/include/uapi/asm/shmbuf.h @@ -30,12 +30,12 @@ #if __BITS_PER_LONG != 64 unsigned int __pad4; #endif - size_t shm_segsz; /* size of segment (bytes) */ + __kernel_size_t shm_segsz; /* size of segment (bytes) */ __kernel_pid_t shm_cpid; /* pid of creator */ __kernel_pid_t shm_lpid; /* pid of last operator */ - unsigned int shm_nattch; /* no. of current attaches */ - unsigned int __unused1; - unsigned int __unused2; + unsigned long shm_nattch; /* no. of current attaches */ + unsigned long __unused1; + unsigned long __unused2; }; struct shminfo64 { --- linux-raspi2-4.2.0.orig/arch/parisc/kernel/irq.c +++ linux-raspi2-4.2.0/arch/parisc/kernel/irq.c @@ -507,8 +507,8 @@ struct pt_regs *old_regs; unsigned long eirr_val; int irq, cpu = smp_processor_id(); -#ifdef CONFIG_SMP struct irq_desc *desc; +#ifdef CONFIG_SMP cpumask_t dest; #endif @@ -521,8 +521,12 @@ goto set_out; irq = eirr_to_irq(eirr_val); -#ifdef CONFIG_SMP + /* Filter out spurious interrupts, mostly from serial port at bootup */ desc = irq_to_desc(irq); + if (unlikely(!desc->action)) + goto set_out; + +#ifdef CONFIG_SMP cpumask_copy(&dest, desc->irq_data.affinity); if (irqd_is_per_cpu(&desc->irq_data) && !cpumask_test_cpu(smp_processor_id(), &dest)) { --- linux-raspi2-4.2.0.orig/arch/parisc/kernel/syscall.S +++ linux-raspi2-4.2.0/arch/parisc/kernel/syscall.S @@ -821,7 +821,7 @@ /* 64bit CAS */ #ifdef CONFIG_64BIT 19: ldd,ma 0(%sr3,%r26), %r29 - sub,= %r29, %r25, %r0 + sub,*= %r29, %r25, %r0 b,n cas2_end 20: std,ma %r24, 0(%sr3,%r26) copy %r0, %r28 --- linux-raspi2-4.2.0.orig/arch/parisc/mm/init.c +++ linux-raspi2-4.2.0/arch/parisc/mm/init.c @@ -23,6 +23,7 @@ #include #include /* for node_online_map */ #include /* for release_pages and page_cache_release */ +#include #include #include @@ -30,6 +31,7 @@ #include #include #include +#include extern int data_start; extern void parisc_kernel_start(void); /* Kernel entry point in head.S */ @@ -590,6 +592,20 @@ void __init mem_init(void) { + /* Do sanity checks on IPC (compat) structures */ + BUILD_BUG_ON(sizeof(struct ipc64_perm) != 48); +#ifndef CONFIG_64BIT + BUILD_BUG_ON(sizeof(struct semid64_ds) != 80); + BUILD_BUG_ON(sizeof(struct msqid64_ds) != 104); + BUILD_BUG_ON(sizeof(struct shmid64_ds) != 104); +#endif +#ifdef CONFIG_COMPAT + BUILD_BUG_ON(sizeof(struct compat_ipc64_perm) != sizeof(struct ipc64_perm)); + BUILD_BUG_ON(sizeof(struct compat_semid64_ds) != 80); + BUILD_BUG_ON(sizeof(struct compat_msqid64_ds) != 104); + BUILD_BUG_ON(sizeof(struct compat_shmid64_ds) != 104); +#endif + /* Do sanity checks on page table constants */ BUILD_BUG_ON(PTE_ENTRY_SIZE != sizeof(pte_t)); BUILD_BUG_ON(PMD_ENTRY_SIZE != sizeof(pmd_t)); --- linux-raspi2-4.2.0.orig/arch/powerpc/Kconfig +++ linux-raspi2-4.2.0/arch/powerpc/Kconfig @@ -155,6 +155,8 @@ select HAVE_PERF_EVENTS_NMI if PPC64 select EDAC_SUPPORT select EDAC_ATOMIC_SCRUB + select ARCH_HAS_DMA_SET_COHERENT_MASK + select HAVE_ARCH_SECCOMP_FILTER config GENERIC_CSUM def_bool CPU_LITTLE_ENDIAN @@ -1071,6 +1073,8 @@ source "drivers/Kconfig" +source "ubuntu/Kconfig" + source "fs/Kconfig" source "arch/powerpc/sysdev/qe_lib/Kconfig" --- linux-raspi2-4.2.0.orig/arch/powerpc/Makefile +++ linux-raspi2-4.2.0/arch/powerpc/Makefile @@ -243,7 +243,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-raspi2-4.2.0.orig/arch/powerpc/boot/Makefile +++ linux-raspi2-4.2.0/arch/powerpc/boot/Makefile @@ -28,6 +28,9 @@ endif ifdef CONFIG_CPU_BIG_ENDIAN BOOTCFLAGS += -mbig-endian +else +BOOTCFLAGS += -mlittle-endian +BOOTCFLAGS += $(call cc-option,-mabi=elfv2) endif BOOTAFLAGS := -D__ASSEMBLY__ $(BOOTCFLAGS) -traditional -nostdinc --- linux-raspi2-4.2.0.orig/arch/powerpc/configs/ppc64_defconfig +++ linux-raspi2-4.2.0/arch/powerpc/configs/ppc64_defconfig @@ -355,3 +355,6 @@ CONFIG_VIRTUALIZATION=y CONFIG_KVM_BOOK3S_64=m CONFIG_KVM_BOOK3S_64_HV=m +CONFIG_NEW_LEDS=y +CONFIG_LEDS_CLASS=m +CONFIG_LEDS_POWERNV=m --- linux-raspi2-4.2.0.orig/arch/powerpc/configs/pseries_defconfig +++ linux-raspi2-4.2.0/arch/powerpc/configs/pseries_defconfig @@ -319,3 +319,6 @@ CONFIG_VIRTUALIZATION=y CONFIG_KVM_BOOK3S_64=m CONFIG_KVM_BOOK3S_64_HV=m +CONFIG_NEW_LEDS=y +CONFIG_LEDS_CLASS=m +CONFIG_LEDS_POWERNV=m --- linux-raspi2-4.2.0.orig/arch/powerpc/include/asm/compat.h +++ linux-raspi2-4.2.0/arch/powerpc/include/asm/compat.h @@ -174,6 +174,13 @@ int _band; /* POLL_IN, POLL_OUT, POLL_MSG */ int _fd; } _sigpoll; + + /* SIGSYS */ + struct { + unsigned int _call_addr; /* calling insn */ + int _syscall; /* triggering system call number */ + unsigned int _arch; /* AUDIT_ARCH_* of syscall */ + } _sigsys; } _sifields; } compat_siginfo_t; --- linux-raspi2-4.2.0.orig/arch/powerpc/include/asm/exception-64e.h +++ linux-raspi2-4.2.0/arch/powerpc/include/asm/exception-64e.h @@ -203,10 +203,21 @@ #define TLB_MISS_STATS_SAVE_INFO_BOLTED #endif +#ifndef CONFIG_RELOCATABLE #define SET_IVOR(vector_number, vector_offset) \ li r3,vector_offset@l; \ ori r3,r3,interrupt_base_book3e@l; \ mtspr SPRN_IVOR##vector_number,r3; +#else /* !CONFIG_RELOCATABLE */ +/* In relocatable case the value of the constant expression 'expr' is only + * offset. So instead, we should loads the address of label 'name'. + */ +#define SET_IVOR(vector_number, vector_offset) \ + LOAD_REG_ADDR(r3,interrupt_base_book3e);\ + rlwinm r3,r3,0,15,0; \ + ori r3,r3,vector_offset@l; \ + mtspr SPRN_IVOR##vector_number,r3; +#endif /* CONFIG_RELOCATABLE */ #endif /* _ASM_POWERPC_EXCEPTION_64E_H */ --- linux-raspi2-4.2.0.orig/arch/powerpc/include/asm/icswx.h +++ linux-raspi2-4.2.0/arch/powerpc/include/asm/icswx.h @@ -164,6 +164,7 @@ #define ICSWX_INITIATED (0x8) #define ICSWX_BUSY (0x4) #define ICSWX_REJECTED (0x2) +#define ICSWX_XERS0 (0x1) /* undefined or set from XERSO. */ static inline int icswx(__be32 ccw, struct coprocessor_request_block *crb) { --- linux-raspi2-4.2.0.orig/arch/powerpc/include/asm/kvm_booke.h +++ linux-raspi2-4.2.0/arch/powerpc/include/asm/kvm_booke.h @@ -100,6 +100,11 @@ return vcpu->arch.pc; } +static inline bool kvmppc_is_bigendian(struct kvm_vcpu *vcpu) +{ + return 1; +} + static inline ulong kvmppc_get_fault_dar(struct kvm_vcpu *vcpu) { return vcpu->arch.fault_dear; --- linux-raspi2-4.2.0.orig/arch/powerpc/include/asm/opal-api.h +++ linux-raspi2-4.2.0/arch/powerpc/include/asm/opal-api.h @@ -154,7 +154,10 @@ #define OPAL_FLASH_WRITE 111 #define OPAL_FLASH_ERASE 112 #define OPAL_PRD_MSG 113 -#define OPAL_LAST 113 +#define OPAL_LEDS_GET_INDICATOR 114 +#define OPAL_LEDS_SET_INDICATOR 115 +#define OPAL_CEC_REBOOT2 116 +#define OPAL_LAST 116 /* Device tree flags */ @@ -340,6 +343,18 @@ OPAL_ASSERT_RESET = 1 }; +enum OpalSlotLedType { + OPAL_SLOT_LED_TYPE_ID = 0, /* IDENTIFY LED */ + OPAL_SLOT_LED_TYPE_FAULT = 1, /* FAULT LED */ + OPAL_SLOT_LED_TYPE_ATTN = 2, /* System Attention LED */ + OPAL_SLOT_LED_TYPE_MAX = 3 +}; + +enum OpalSlotLedState { + OPAL_SLOT_LED_STATE_OFF = 0, /* LED is OFF */ + OPAL_SLOT_LED_STATE_ON = 1 /* LED is ON */ +}; + /* * Address cycle types for LPC accesses. These also correspond * to the content of the first cell of the "reg" property for @@ -361,6 +376,7 @@ OPAL_MSG_HMI_EVT, OPAL_MSG_DPO, OPAL_MSG_PRD, + OPAL_MSG_OCC, OPAL_MSG_TYPE_MAX, }; @@ -437,6 +453,7 @@ /* HMI interrupt event */ enum OpalHMI_Version { OpalHMIEvt_V1 = 1, + OpalHMIEvt_V2 = 2, }; enum OpalHMI_Severity { @@ -467,6 +484,49 @@ OpalHMI_ERROR_CAPP_RECOVERY, }; +enum OpalHMI_XstopType { + CHECKSTOP_TYPE_UNKNOWN = 0, + CHECKSTOP_TYPE_CORE = 1, + CHECKSTOP_TYPE_NX = 2, +}; + +enum OpalHMI_CoreXstopReason { + CORE_CHECKSTOP_IFU_REGFILE = 0x00000001, + CORE_CHECKSTOP_IFU_LOGIC = 0x00000002, + CORE_CHECKSTOP_PC_DURING_RECOV = 0x00000004, + CORE_CHECKSTOP_ISU_REGFILE = 0x00000008, + CORE_CHECKSTOP_ISU_LOGIC = 0x00000010, + CORE_CHECKSTOP_FXU_LOGIC = 0x00000020, + CORE_CHECKSTOP_VSU_LOGIC = 0x00000040, + CORE_CHECKSTOP_PC_RECOV_IN_MAINT_MODE = 0x00000080, + CORE_CHECKSTOP_LSU_REGFILE = 0x00000100, + CORE_CHECKSTOP_PC_FWD_PROGRESS = 0x00000200, + CORE_CHECKSTOP_LSU_LOGIC = 0x00000400, + CORE_CHECKSTOP_PC_LOGIC = 0x00000800, + CORE_CHECKSTOP_PC_HYP_RESOURCE = 0x00001000, + CORE_CHECKSTOP_PC_HANG_RECOV_FAILED = 0x00002000, + CORE_CHECKSTOP_PC_AMBI_HANG_DETECTED = 0x00004000, + CORE_CHECKSTOP_PC_DEBUG_TRIG_ERR_INJ = 0x00008000, + CORE_CHECKSTOP_PC_SPRD_HYP_ERR_INJ = 0x00010000, +}; + +enum OpalHMI_NestAccelXstopReason { + NX_CHECKSTOP_SHM_INVAL_STATE_ERR = 0x00000001, + NX_CHECKSTOP_DMA_INVAL_STATE_ERR_1 = 0x00000002, + NX_CHECKSTOP_DMA_INVAL_STATE_ERR_2 = 0x00000004, + NX_CHECKSTOP_DMA_CH0_INVAL_STATE_ERR = 0x00000008, + NX_CHECKSTOP_DMA_CH1_INVAL_STATE_ERR = 0x00000010, + NX_CHECKSTOP_DMA_CH2_INVAL_STATE_ERR = 0x00000020, + NX_CHECKSTOP_DMA_CH3_INVAL_STATE_ERR = 0x00000040, + NX_CHECKSTOP_DMA_CH4_INVAL_STATE_ERR = 0x00000080, + NX_CHECKSTOP_DMA_CH5_INVAL_STATE_ERR = 0x00000100, + NX_CHECKSTOP_DMA_CH6_INVAL_STATE_ERR = 0x00000200, + NX_CHECKSTOP_DMA_CH7_INVAL_STATE_ERR = 0x00000400, + NX_CHECKSTOP_DMA_CRB_UE = 0x00000800, + NX_CHECKSTOP_DMA_CRB_SUE = 0x00001000, + NX_CHECKSTOP_PBI_ISN_UE = 0x00002000, +}; + struct OpalHMIEvent { uint8_t version; /* 0x00 */ uint8_t severity; /* 0x01 */ @@ -477,6 +537,23 @@ __be64 hmer; /* TFMR register. Valid only for TFAC and TFMR_PARITY error type. */ __be64 tfmr; + + /* version 2 and later */ + union { + /* + * checkstop info (Core/NX). + * Valid for OpalHMI_ERROR_MALFUNC_ALERT. + */ + struct { + uint8_t xstop_type; /* enum OpalHMI_XstopType */ + uint8_t reserved_1[3]; + __be32 xstop_reason; + union { + __be32 pir; /* for CHECKSTOP_TYPE_CORE */ + __be32 chip_id; /* for CHECKSTOP_TYPE_NX */ + } u; + } xstop_error; + } u; }; enum { @@ -700,6 +777,17 @@ struct opal_prd_msg; +#define OCC_RESET 0 +#define OCC_LOAD 1 +#define OCC_THROTTLE 2 +#define OCC_MAX_THROTTLE_STATUS 5 + +struct opal_occ_msg { + __be64 type; + __be64 chip; + __be64 throttle_status; +}; + /* * SG entries * @@ -756,6 +844,52 @@ __be64 buffer_ra; /* Buffer real address */ }; +/* Argument to OPAL_CEC_REBOOT2() */ +enum { + OPAL_REBOOT_NORMAL = 0, + OPAL_REBOOT_PLATFORM_ERROR = 1, +}; + +/* + * EPOW status sharing (OPAL and the host) + * + * The host will pass on OPAL, a buffer of length OPAL_SYSEPOW_MAX + * with individual elements being 16 bits wide to fetch the system + * wide EPOW status. Each element in the buffer will contain the + * EPOW status in it's bit representation for a particular EPOW sub + * class as defiend here. So multiple detailed EPOW status bits + * specific for any sub class can be represented in a single buffer + * element as it's bit representation. + */ + +/* System EPOW type */ +enum OpalSysEpow { + OPAL_SYSEPOW_POWER = 0, /* Power EPOW */ + OPAL_SYSEPOW_TEMP = 1, /* Temperature EPOW */ + OPAL_SYSEPOW_COOLING = 2, /* Cooling EPOW */ + OPAL_SYSEPOW_MAX = 3, /* Max EPOW categories */ +}; + +/* Power EPOW */ +enum OpalSysPower { + OPAL_SYSPOWER_UPS = 0x0001, /* System on UPS power */ + OPAL_SYSPOWER_CHNG = 0x0002, /* System power config change */ + OPAL_SYSPOWER_FAIL = 0x0004, /* System impending power failure */ + OPAL_SYSPOWER_INCL = 0x0008, /* System incomplete power */ +}; + +/* Temperature EPOW */ +enum OpalSysTemp { + OPAL_SYSTEMP_AMB = 0x0001, /* System over ambient temperature */ + OPAL_SYSTEMP_INT = 0x0002, /* System over internal temperature */ + OPAL_SYSTEMP_HMD = 0x0004, /* System over ambient humidity */ +}; + +/* Cooling EPOW */ +enum OpalSysCooling { + OPAL_SYSCOOL_INSF = 0x0001, /* System insufficient cooling */ +}; + #endif /* __ASSEMBLY__ */ #endif /* __OPAL_API_H */ --- linux-raspi2-4.2.0.orig/arch/powerpc/include/asm/opal.h +++ linux-raspi2-4.2.0/arch/powerpc/include/asm/opal.h @@ -44,6 +44,7 @@ uint32_t hour_min); int64_t opal_cec_power_down(uint64_t request); int64_t opal_cec_reboot(void); +int64_t opal_cec_reboot2(uint32_t reboot_type, char *diag); int64_t opal_read_nvram(uint64_t buffer, uint64_t size, uint64_t offset); int64_t opal_write_nvram(uint64_t buffer, uint64_t size, uint64_t offset); int64_t opal_handle_interrupt(uint64_t isn, __be64 *outstanding_event_mask); @@ -141,7 +142,8 @@ int64_t opal_pci_reinit(uint64_t phb_id, uint64_t reinit_scope, uint64_t data); int64_t opal_pci_mask_pe_error(uint64_t phb_id, uint16_t pe_number, uint8_t error_type, uint8_t mask_action); int64_t opal_set_slot_led_status(uint64_t phb_id, uint64_t slot_id, uint8_t led_type, uint8_t led_action); -int64_t opal_get_epow_status(__be64 *status); +int64_t opal_get_epow_status(__be16 *epow_status, __be16 *num_epow_classes); +int64_t opal_get_dpo_status(__be64 *dpo_timeout); int64_t opal_set_system_attention_led(uint8_t led_action); int64_t opal_pci_next_error(uint64_t phb_id, __be64 *first_frozen_pe, __be16 *pci_error_type, __be16 *severity); @@ -195,6 +197,10 @@ int64_t opal_i2c_request(uint64_t async_token, uint32_t bus_id, struct opal_i2c_request *oreq); int64_t opal_prd_msg(struct opal_prd_msg *msg); +int64_t opal_leds_get_ind(char *loc_code, __be64 *led_mask, + __be64 *led_value, __be64 *max_led_type); +int64_t opal_leds_set_ind(uint64_t token, char *loc_code, const u64 led_mask, + const u64 led_value, __be64 *max_led_type); int64_t opal_flash_read(uint64_t id, uint64_t offset, uint64_t buf, uint64_t size, uint64_t token); --- linux-raspi2-4.2.0.orig/arch/powerpc/include/asm/page.h +++ linux-raspi2-4.2.0/arch/powerpc/include/asm/page.h @@ -109,6 +109,8 @@ /* See Description below for VIRT_PHYS_OFFSET */ #ifdef CONFIG_RELOCATABLE_PPC32 #define VIRT_PHYS_OFFSET virt_phys_offset +#elif defined(CONFIG_PPC_BOOK3E_64) +#define VIRT_PHYS_OFFSET (KERNELBASE - MEMORY_START) #else #define VIRT_PHYS_OFFSET (KERNELBASE - PHYSICAL_START) #endif --- linux-raspi2-4.2.0.orig/arch/powerpc/include/asm/pci-bridge.h +++ linux-raspi2-4.2.0/arch/powerpc/include/asm/pci-bridge.h @@ -42,6 +42,7 @@ #endif int (*dma_set_mask)(struct pci_dev *dev, u64 dma_mask); + u64 (*dma_get_required_mask)(struct pci_dev *dev); void (*shutdown)(struct pci_controller *); }; --- linux-raspi2-4.2.0.orig/arch/powerpc/include/asm/pgtable-ppc64.h +++ linux-raspi2-4.2.0/arch/powerpc/include/asm/pgtable-ppc64.h @@ -135,7 +135,19 @@ #define pte_iterate_hashed_end() } while(0) #ifdef CONFIG_PPC_HAS_HASH_64K -#define pte_pagesize_index(mm, addr, pte) get_slice_psize(mm, addr) +/* + * We expect this to be called only for user addresses or kernel virtual + * addresses other than the linear mapping. + */ +#define pte_pagesize_index(mm, addr, pte) \ + ({ \ + unsigned int psize; \ + if (is_kernel_addr(addr)) \ + psize = MMU_PAGE_4K; \ + else \ + psize = get_slice_psize(mm, addr); \ + psize; \ + }) #else #define pte_pagesize_index(mm, addr, pte) MMU_PAGE_4K #endif --- linux-raspi2-4.2.0.orig/arch/powerpc/include/asm/reg.h +++ linux-raspi2-4.2.0/arch/powerpc/include/asm/reg.h @@ -108,6 +108,7 @@ #define MSR_TS_T __MASK(MSR_TS_T_LG) /* Transaction Transactional */ #define MSR_TS_MASK (MSR_TS_T | MSR_TS_S) /* Transaction State bits */ #define MSR_TM_ACTIVE(x) (((x) & MSR_TS_MASK) != 0) /* Transaction active? */ +#define MSR_TM_RESV(x) (((x) & MSR_TS_MASK) == MSR_TS_MASK) /* Reserved */ #define MSR_TM_TRANSACTIONAL(x) (((x) & MSR_TS_MASK) == MSR_TS_T) #define MSR_TM_SUSPENDED(x) (((x) & MSR_TS_MASK) == MSR_TS_S) --- linux-raspi2-4.2.0.orig/arch/powerpc/include/asm/rtas.h +++ linux-raspi2-4.2.0/arch/powerpc/include/asm/rtas.h @@ -343,6 +343,7 @@ extern void rtas_halt(void); extern void rtas_os_term(char *str); extern int rtas_get_sensor(int sensor, int index, int *state); +extern int rtas_get_sensor_fast(int sensor, int index, int *state); extern int rtas_get_power_level(int powerdomain, int *level); extern int rtas_set_power_level(int powerdomain, int level, int *setlevel); extern bool rtas_indicator_present(int token, int *maxindex); --- linux-raspi2-4.2.0.orig/arch/powerpc/include/asm/sections.h +++ linux-raspi2-4.2.0/arch/powerpc/include/asm/sections.h @@ -8,8 +8,13 @@ #ifdef __powerpc64__ +#ifdef CONFIG_PPC_BOOK3E +extern char interrupt_base_book3e[]; +extern char interrupt_end_book3e[]; +#else extern char __start_interrupts[]; extern char __end_interrupts[]; +#endif extern char __prom_init_toc_start[]; extern char __prom_init_toc_end[]; @@ -26,9 +31,13 @@ unsigned long end) { unsigned long real_start, real_end; +#ifdef CONFIG_PPC_BOOK3E + real_start = interrupt_base_book3e - _stext; + real_end = interrupt_end_book3e - _stext; +#else real_start = __start_interrupts - _stext; real_end = __end_interrupts - _stext; - +#endif return start < (unsigned long)__va(real_end) && (unsigned long)__va(real_start) < end; } --- linux-raspi2-4.2.0.orig/arch/powerpc/include/asm/smp.h +++ linux-raspi2-4.2.0/arch/powerpc/include/asm/smp.h @@ -197,6 +197,7 @@ extern unsigned long __secondary_hold_spinloop; extern unsigned long __secondary_hold_acknowledge; extern char __secondary_hold; +extern unsigned long __run_at_kexec; extern void __early_start(void); #endif /* __ASSEMBLY__ */ --- linux-raspi2-4.2.0.orig/arch/powerpc/include/asm/switch_to.h +++ linux-raspi2-4.2.0/arch/powerpc/include/asm/switch_to.h @@ -29,6 +29,7 @@ extern void enable_kernel_fp(void); extern void enable_kernel_altivec(void); +extern void enable_kernel_vsx(void); extern int emulate_altivec(struct pt_regs *); extern void __giveup_vsx(struct task_struct *); extern void giveup_vsx(struct task_struct *); --- linux-raspi2-4.2.0.orig/arch/powerpc/include/asm/syscall.h +++ linux-raspi2-4.2.0/arch/powerpc/include/asm/syscall.h @@ -22,10 +22,15 @@ extern const unsigned long sys_call_table[]; #endif /* CONFIG_FTRACE_SYSCALLS */ -static inline long syscall_get_nr(struct task_struct *task, - struct pt_regs *regs) +static inline int syscall_get_nr(struct task_struct *task, struct pt_regs *regs) { - return TRAP(regs) == 0xc00 ? regs->gpr[0] : -1L; + /* + * Note that we are returning an int here. That means 0xffffffff, ie. + * 32-bit negative 1, will be interpreted as -1 on a 64-bit kernel. + * This is important for seccomp so that compat tasks can set r0 = -1 + * to reject the syscall. + */ + return TRAP(regs) == 0xc00 ? regs->gpr[0] : -1; } static inline void syscall_rollback(struct task_struct *task, @@ -34,12 +39,6 @@ regs->gpr[3] = regs->orig_gpr3; } -static inline long syscall_get_error(struct task_struct *task, - struct pt_regs *regs) -{ - return (regs->ccr & 0x10000000) ? -regs->gpr[3] : 0; -} - static inline long syscall_get_return_value(struct task_struct *task, struct pt_regs *regs) { @@ -50,9 +49,15 @@ struct pt_regs *regs, int error, long val) { + /* + * In the general case it's not obvious that we must deal with CCR + * here, as the syscall exit path will also do that for us. However + * there are some places, eg. the signal code, which check ccr to + * decide if the value in r3 is actually an error. + */ if (error) { regs->ccr |= 0x10000000L; - regs->gpr[3] = -error; + regs->gpr[3] = error; } else { regs->ccr &= ~0x10000000L; regs->gpr[3] = val; @@ -64,19 +69,22 @@ unsigned int i, unsigned int n, unsigned long *args) { + unsigned long val, mask = -1UL; + BUG_ON(i + n > 6); -#ifdef CONFIG_PPC64 - if (test_tsk_thread_flag(task, TIF_32BIT)) { - /* - * Zero-extend 32-bit argument values. The high bits are - * garbage ignored by the actual syscall dispatch. - */ - while (n-- > 0) - args[n] = (u32) regs->gpr[3 + i + n]; - return; - } + +#ifdef CONFIG_COMPAT + if (test_tsk_thread_flag(task, TIF_32BIT)) + mask = 0xffffffff; #endif - memcpy(args, ®s->gpr[3 + i], n * sizeof(args[0])); + while (n--) { + if (n == 0 && i == 0) + val = regs->orig_gpr3; + else + val = regs->gpr[3 + i + n]; + + args[n] = val & mask; + } } static inline void syscall_set_arguments(struct task_struct *task, @@ -86,6 +94,10 @@ { BUG_ON(i + n > 6); memcpy(®s->gpr[3 + i], args, n * sizeof(args[0])); + + /* Also copy the first argument into orig_gpr3 */ + if (i == 0 && n > 0) + regs->orig_gpr3 = args[0]; } static inline int syscall_get_arch(void) --- linux-raspi2-4.2.0.orig/arch/powerpc/include/uapi/asm/errno.h +++ linux-raspi2-4.2.0/arch/powerpc/include/uapi/asm/errno.h @@ -6,6 +6,4 @@ #undef EDEADLOCK #define EDEADLOCK 58 /* File locking deadlock error */ -#define _LAST_ERRNO 516 - #endif /* _ASM_POWERPC_ERRNO_H */ --- linux-raspi2-4.2.0.orig/arch/powerpc/kernel/dma.c +++ linux-raspi2-4.2.0/arch/powerpc/kernel/dma.c @@ -278,6 +278,13 @@ if (ppc_md.dma_get_required_mask) return ppc_md.dma_get_required_mask(dev); + if (dev_is_pci(dev)) { + struct pci_dev *pdev = to_pci_dev(dev); + struct pci_controller *phb = pci_bus_to_host(pdev->bus); + if (phb->controller_ops.dma_get_required_mask) + return phb->controller_ops.dma_get_required_mask(pdev); + } + return __dma_get_required_mask(dev); } EXPORT_SYMBOL_GPL(dma_get_required_mask); --- linux-raspi2-4.2.0.orig/arch/powerpc/kernel/eeh.c +++ linux-raspi2-4.2.0/arch/powerpc/kernel/eeh.c @@ -308,11 +308,26 @@ if (!(pe->type & EEH_PE_PHB)) { if (eeh_has_flag(EEH_ENABLE_IO_FOR_LOG)) eeh_pci_enable(pe, EEH_OPT_THAW_MMIO); + + /* + * The config space of some PCI devices can't be accessed + * when their PEs are in frozen state. Otherwise, fenced + * PHB might be seen. Those PEs are identified with flag + * EEH_PE_CFG_RESTRICTED, indicating EEH_PE_CFG_BLOCKED + * is set automatically when the PE is put to EEH_PE_ISOLATED. + * + * Restoring BARs possibly triggers PCI config access in + * (OPAL) firmware and then causes fenced PHB. If the + * PCI config is blocked with flag EEH_PE_CFG_BLOCKED, it's + * pointless to restore BARs and dump config space. + */ eeh_ops->configure_bridge(pe); - eeh_pe_restore_bars(pe); + if (!(pe->state & EEH_PE_CFG_BLOCKED)) { + eeh_pe_restore_bars(pe); - pci_regs_buf[0] = 0; - eeh_pe_traverse(pe, eeh_dump_pe_log, &loglen); + pci_regs_buf[0] = 0; + eeh_pe_traverse(pe, eeh_dump_pe_log, &loglen); + } } eeh_ops->get_log(pe, severity, pci_regs_buf, loglen); @@ -1056,7 +1071,13 @@ struct pci_controller *phb; struct eeh_dev *edev = pdn_to_eeh_dev(pdn); - if (!edev || !eeh_enabled()) + if (!edev) + return; + + /* Some platforms (like Cell) don't have EEH capabilities, so we + * need to abort here. In case of pseries or powernv, we have EEH + * so we can continue. */ + if (!machine_is(pseries) && !machine_is(powernv)) return; if (!eeh_has_flag(EEH_PROBE_MODE_DEVTREE)) @@ -1116,9 +1137,6 @@ return; } - if (eeh_has_flag(EEH_PROBE_MODE_DEV)) - eeh_ops->probe(pdn, NULL); - /* * The EEH cache might not be removed correctly because of * unbalanced kref to the device during unplug time, which @@ -1142,6 +1160,9 @@ dev->dev.archdata.edev = NULL; } + if (eeh_has_flag(EEH_PROBE_MODE_DEV)) + eeh_ops->probe(pdn, NULL); + edev->pdev = dev; dev->dev.archdata.edev = edev; --- linux-raspi2-4.2.0.orig/arch/powerpc/kernel/entry_32.S +++ linux-raspi2-4.2.0/arch/powerpc/kernel/entry_32.S @@ -20,6 +20,7 @@ */ #include +#include #include #include #include @@ -354,7 +355,7 @@ SYNC MTMSRD(r10) lwz r9,TI_FLAGS(r12) - li r8,-_LAST_ERRNO + li r8,-MAX_ERRNO andi. r0,r9,(_TIF_SYSCALL_DOTRACE|_TIF_SINGLESTEP|_TIF_USER_WORK_MASK|_TIF_PERSYSCALL_MASK) bne- syscall_exit_work cmplw 0,r3,r8 @@ -457,6 +458,10 @@ lwz r7,GPR7(r1) lwz r8,GPR8(r1) REST_NVGPRS(r1) + + cmplwi r0,NR_syscalls + /* Return code is already in r3 thanks to do_syscall_trace_enter() */ + bge- ret_from_syscall b syscall_dotrace_cont syscall_exit_work: --- linux-raspi2-4.2.0.orig/arch/powerpc/kernel/entry_64.S +++ linux-raspi2-4.2.0/arch/powerpc/kernel/entry_64.S @@ -19,6 +19,7 @@ */ #include +#include #include #include #include @@ -150,8 +151,7 @@ CURRENT_THREAD_INFO(r11, r1) ld r10,TI_FLAGS(r11) andi. r11,r10,_TIF_SYSCALL_DOTRACE - bne syscall_dotrace -.Lsyscall_dotrace_cont: + bne syscall_dotrace /* does not return */ cmpldi 0,r0,NR_syscalls bge- syscall_enosys @@ -207,7 +207,7 @@ #endif /* CONFIG_PPC_BOOK3E */ ld r9,TI_FLAGS(r12) - li r11,-_LAST_ERRNO + li r11,-MAX_ERRNO andi. r0,r9,(_TIF_SYSCALL_DOTRACE|_TIF_SINGLESTEP|_TIF_USER_WORK_MASK|_TIF_PERSYSCALL_MASK) bne- syscall_exit_work cmpld r3,r11 @@ -245,22 +245,34 @@ bl save_nvgprs addi r3,r1,STACK_FRAME_OVERHEAD bl do_syscall_trace_enter + /* - * Restore argument registers possibly just changed. - * We use the return value of do_syscall_trace_enter - * for the call number to look up in the table (r0). + * We use the return value of do_syscall_trace_enter() as the syscall + * number. If the syscall was rejected for any reason do_syscall_trace_enter() + * returns an invalid syscall number and the test below against + * NR_syscalls will fail. */ mr r0,r3 + + /* Restore argument registers just clobbered and/or possibly changed. */ ld r3,GPR3(r1) ld r4,GPR4(r1) ld r5,GPR5(r1) ld r6,GPR6(r1) ld r7,GPR7(r1) ld r8,GPR8(r1) + + /* Repopulate r9 and r10 for the system_call path */ addi r9,r1,STACK_FRAME_OVERHEAD CURRENT_THREAD_INFO(r10, r1) ld r10,TI_FLAGS(r10) - b .Lsyscall_dotrace_cont + + cmpldi r0,NR_syscalls + blt+ system_call + + /* Return code is already in r3 thanks to do_syscall_trace_enter() */ + b .Lsyscall_exit + syscall_enosys: li r3,-ENOSYS @@ -277,7 +289,7 @@ beq+ 0f REST_NVGPRS(r1) b 2f -0: cmpld r3,r11 /* r10 is -LAST_ERRNO */ +0: cmpld r3,r11 /* r11 is -MAX_ERRNO */ blt+ 1f andi. r0,r9,_TIF_NOERROR bne- 1f --- linux-raspi2-4.2.0.orig/arch/powerpc/kernel/exceptions-64e.S +++ linux-raspi2-4.2.0/arch/powerpc/kernel/exceptions-64e.S @@ -1348,7 +1348,15 @@ * r4 = MAS0 w/TLBSEL & ESEL for the temp mapping */ /* Now we branch the new virtual address mapped by this entry */ +#ifdef CONFIG_RELOCATABLE + /* We have to find out address from lr. */ + bl 1f /* Find our address */ +1: mflr r6 + addi r6,r6,(2f - 1b) + tovirt(r6,r6) +#else LOAD_REG_IMMEDIATE(r6,2f) +#endif lis r7,MSR_KERNEL@h ori r7,r7,MSR_KERNEL@l mtspr SPRN_SRR0,r6 @@ -1580,9 +1588,17 @@ mflr r28 b 3b -init_core_book3e: +_GLOBAL(init_core_book3e) /* Establish the interrupt vector base */ +#ifdef CONFIG_RELOCATABLE +/* In relocatable case the value of the constant expression 'expr' is only + * offset. So instead, we should loads the address of label 'name'. + */ + tovirt(r2,r2) + LOAD_REG_ADDR(r3, interrupt_base_book3e) +#else LOAD_REG_IMMEDIATE(r3, interrupt_base_book3e) +#endif mtspr SPRN_IVPR,r3 sync blr --- linux-raspi2-4.2.0.orig/arch/powerpc/kernel/head_64.S +++ linux-raspi2-4.2.0/arch/powerpc/kernel/head_64.S @@ -91,6 +91,10 @@ __secondary_hold_acknowledge: .llong 0x0 + .globl __run_at_kexec +__run_at_kexec: + .llong 0x0 /* Flag for the secondary kernel from kexec. */ + #ifdef CONFIG_RELOCATABLE /* This flag is set to 1 by a loader if the kernel should run * at the loaded address instead of the linked address. This @@ -126,6 +130,10 @@ /* Grab our physical cpu number */ mr r24,r3 /* stash r4 for book3e */ +#ifdef CONFIG_PPC_FSL_BOOK3E + /* we need to setup initial TLB entry. */ + li r4,0 +#endif mr r25,r4 /* Tell the master cpu we're here */ @@ -441,12 +449,31 @@ /* process relocations for the final address of the kernel */ lis r25,PAGE_OFFSET@highest /* compute virtual base of kernel */ sldi r25,r25,32 +#if defined(CONFIG_PPC_BOOK3E) + tovirt(r26,r26) /* on booke, we already run at PAGE_OFFSET */ +#endif +#if defined(CONFIG_KEXEC) || defined(CONFIG_CRASH_DUMP) + /* If relocated we need to restore this flag on that relocated address. */ + ld r7,__run_at_kexec-_stext(r26) + std r7,__run_at_kexec-_stext(r26) +#endif + lwz r7,__run_at_load-_stext(r26) +#if defined(CONFIG_PPC_BOOK3E) + tophys(r26,r26) /* Restore for the remains. */ +#endif cmplwi cr0,r7,1 /* flagged to stay where we are ? */ bne 1f add r25,r25,r26 1: mr r3,r25 bl relocate +#if defined(CONFIG_PPC_BOOK3E) + /* In relocatable case we always have to load the address of label 'name' + * to set IVPR. So after .relocate we have to update IVPR with current + * address of label. + */ + bl .init_core_book3e +#endif #endif /* @@ -461,12 +488,12 @@ tovirt(r3,r3) /* on booke, we already run at PAGE_OFFSET */ #endif mr. r4,r26 /* In some cases the loader may */ +#if defined(CONFIG_PPC_BOOK3E) + tovirt(r4,r4) +#endif beq 9f /* have already put us at zero */ li r6,0x100 /* Start offset, the first 0x100 */ /* bytes were copied earlier. */ -#ifdef CONFIG_PPC_BOOK3E - tovirt(r6,r6) /* on booke, we already run at PAGE_OFFSET */ -#endif #ifdef CONFIG_RELOCATABLE /* @@ -474,12 +501,24 @@ * variable __run_at_load, if it is set the kernel is treated as relocatable * kernel, otherwise it will be moved to PHYSICAL_START */ +#if defined(CONFIG_PPC_BOOK3E) + tovirt(r26,r26) /* on booke, we already run at PAGE_OFFSET */ +#endif lwz r7,__run_at_load-_stext(r26) +#if defined(CONFIG_PPC_BOOK3E) + tophys(r26,r26) /* Restore for the remains. */ +#endif cmplwi cr0,r7,1 bne 3f +#ifdef CONFIG_PPC_BOOK3E + LOAD_REG_ADDR(r5, interrupt_end_book3e) + LOAD_REG_ADDR(r11, _stext) + sub r5,r5,r11 +#else /* just copy interrupts */ LOAD_REG_IMMEDIATE(r5, __end_interrupts - _stext) +#endif b 5f 3: #endif @@ -498,6 +537,9 @@ p_end: .llong _end - _stext 4: /* Now copy the rest of the kernel up to _end */ +#if defined(CONFIG_PPC_BOOK3E) + tovirt(r26,r26) +#endif addis r5,r26,(p_end - _stext)@ha ld r5,(p_end - _stext)@l(r5) /* get _end */ 5: bl copy_and_flush /* copy the rest */ --- linux-raspi2-4.2.0.orig/arch/powerpc/kernel/misc_64.S +++ linux-raspi2-4.2.0/arch/powerpc/kernel/misc_64.S @@ -487,6 +487,49 @@ #ifdef CONFIG_KEXEC +#ifdef CONFIG_PPC_BOOK3E +/* BOOK3E have no a real MMU mode so we have to setup the initial TLB + * for a core to map v:0 to p:0 as 1:1. This current implementation + * assume that 1G is enough for kexec. + */ +#include +kexec_create_tlb: + /* Invalidate all TLBs to avoid any TLB conflict. */ + PPC_TLBILX_ALL(0,R0) + sync + isync + + mfspr r10,SPRN_TLB1CFG + andi. r10,r10,TLBnCFG_N_ENTRY /* Extract # entries */ + subi r10,r10,1 /* Often its always safe to use last */ + lis r9,MAS0_TLBSEL(1)@h + rlwimi r9,r10,16,4,15 /* Setup MAS0 = TLBSEL | ESEL(r9) */ + +/* Setup a temp mapping v:0 to p:0 as 1:1 and return to it. + */ +#ifdef CONFIG_SMP +#define M_IF_SMP MAS2_M +#else +#define M_IF_SMP 0 +#endif + mtspr SPRN_MAS0,r9 + + lis r9,(MAS1_VALID|MAS1_IPROT)@h + ori r9,r9,(MAS1_TSIZE(BOOK3E_PAGESZ_1GB))@l + mtspr SPRN_MAS1,r9 + + LOAD_REG_IMMEDIATE(r9, 0x0 | M_IF_SMP) + mtspr SPRN_MAS2,r9 + + LOAD_REG_IMMEDIATE(r9, 0x0 | MAS3_SR | MAS3_SW | MAS3_SX) + mtspr SPRN_MAS3,r9 + li r9,0 + mtspr SPRN_MAS7,r9 + + tlbwe + isync + blr +#endif /* kexec_smp_wait(void) * @@ -500,6 +543,10 @@ */ _GLOBAL(kexec_smp_wait) lhz r3,PACAHWCPUID(r13) +#ifdef CONFIG_PPC_BOOK3E + /* Create a 1:1 mapping. */ + bl kexec_create_tlb +#endif bl real_mode li r4,KEXEC_STATE_REAL_MODE @@ -516,6 +563,7 @@ * don't overwrite r3 here, it is live for kexec_wait above. */ real_mode: /* assume normal blr return */ +#ifndef CONFIG_PPC_BOOK3E 1: li r9,MSR_RI li r10,MSR_DR|MSR_IR mflr r11 /* return address to SRR0 */ @@ -527,7 +575,10 @@ mtspr SPRN_SRR1,r10 mtspr SPRN_SRR0,r11 rfid - +#else + /* the real mode is nothing for book3e. */ + blr +#endif /* * kexec_sequence(newstack, start, image, control, clear_all()) @@ -589,6 +640,12 @@ bl copy_and_flush /* (dest, src, copy limit, start offset) */ 1: /* assume normal blr return */ + /* notify we're going into kexec kernel for SMP. */ + LOAD_REG_ADDR(r3,__run_at_kexec) + li r4,1 + std r4,0(r3) + sync + /* release other cpus to the new kernel secondary start at 0x60 */ mflr r5 li r6,1 --- linux-raspi2-4.2.0.orig/arch/powerpc/kernel/pci-common.c +++ linux-raspi2-4.2.0/arch/powerpc/kernel/pci-common.c @@ -225,6 +225,7 @@ } return NULL; } +EXPORT_SYMBOL(pci_find_hose_for_OF_device); /* * Reads the interrupt pin to determine if interrupt is use by card. @@ -1498,9 +1499,15 @@ phb->controller_ops.disable_device(dev); } +/* Before assuming too much here, take care to realize that we need sign + * extension from 32-bit pointers to 64-bit resource addresses to work. + */ resource_size_t pcibios_io_space_offset(struct pci_controller *hose) { - return (unsigned long) hose->io_base_virt - _IO_BASE; + long vbase = (long)hose->io_base_virt; + long io_base = _IO_BASE; + + return (resource_size_t)(vbase - io_base); } static void pcibios_setup_phb_resources(struct pci_controller *hose, @@ -1620,6 +1627,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) { --- linux-raspi2-4.2.0.orig/arch/powerpc/kernel/process.c +++ linux-raspi2-4.2.0/arch/powerpc/kernel/process.c @@ -204,8 +204,6 @@ #endif /* CONFIG_ALTIVEC */ #ifdef CONFIG_VSX -#if 0 -/* not currently used, but some crazy RAID module might want to later */ void enable_kernel_vsx(void) { WARN_ON(preemptible()); @@ -220,7 +218,6 @@ #endif /* CONFIG_SMP */ } EXPORT_SYMBOL(enable_kernel_vsx); -#endif void giveup_vsx(struct task_struct *tsk) { @@ -554,6 +551,24 @@ msr_diff &= MSR_FP | MSR_VEC | MSR_VSX | MSR_FE0 | MSR_FE1; } + /* + * Use the current MSR TM suspended bit to track if we have + * checkpointed state outstanding. + * On signal delivery, we'd normally reclaim the checkpointed + * state to obtain stack pointer (see:get_tm_stackpointer()). + * This will then directly return to userspace without going + * through __switch_to(). However, if the stack frame is bad, + * we need to exit this thread which calls __switch_to() which + * will again attempt to reclaim the already saved tm state. + * Hence we need to check that we've not already reclaimed + * this state. + * We do this using the current MSR, rather tracking it in + * some specific thread_struct bit, as it has the additional + * benifit of checking for a potential TM bad thing exception. + */ + if (!MSR_TM_SUSPENDED(mfmsr())) + return; + tm_reclaim(thr, thr->regs->msr, cause); /* Having done the reclaim, we now have the checkpointed --- linux-raspi2-4.2.0.orig/arch/powerpc/kernel/ptrace.c +++ linux-raspi2-4.2.0/arch/powerpc/kernel/ptrace.c @@ -1762,26 +1762,81 @@ return ret; } -/* - * We must return the syscall number to actually look up in the table. - * This can be -1L to skip running any syscall at all. +#ifdef CONFIG_SECCOMP +static int do_seccomp(struct pt_regs *regs) +{ + if (!test_thread_flag(TIF_SECCOMP)) + return 0; + + /* + * The ABI we present to seccomp tracers is that r3 contains + * the syscall return value and orig_gpr3 contains the first + * syscall parameter. This is different to the ptrace ABI where + * both r3 and orig_gpr3 contain the first syscall parameter. + */ + regs->gpr[3] = -ENOSYS; + + /* + * We use the __ version here because we have already checked + * TIF_SECCOMP. If this fails, there is nothing left to do, we + * have already loaded -ENOSYS into r3, or seccomp has put + * something else in r3 (via SECCOMP_RET_ERRNO/TRACE). + */ + if (__secure_computing()) + return -1; + + /* + * The syscall was allowed by seccomp, restore the register + * state to what ptrace and audit expect. + * Note that we use orig_gpr3, which means a seccomp tracer can + * modify the first syscall parameter (in orig_gpr3) and also + * allow the syscall to proceed. + */ + regs->gpr[3] = regs->orig_gpr3; + + return 0; +} +#else +static inline int do_seccomp(struct pt_regs *regs) { return 0; } +#endif /* CONFIG_SECCOMP */ + +/** + * do_syscall_trace_enter() - Do syscall tracing on kernel entry. + * @regs: the pt_regs of the task to trace (current) + * + * Performs various types of tracing on syscall entry. This includes seccomp, + * ptrace, syscall tracepoints and audit. + * + * The pt_regs are potentially visible to userspace via ptrace, so their + * contents is ABI. + * + * One or more of the tracers may modify the contents of pt_regs, in particular + * to modify arguments or even the syscall number itself. + * + * It's also possible that a tracer can choose to reject the system call. In + * that case this function will return an illegal syscall number, and will put + * an appropriate return value in regs->r3. + * + * Return: the (possibly changed) syscall number. */ long do_syscall_trace_enter(struct pt_regs *regs) { - long ret = 0; + bool abort = false; user_exit(); - secure_computing_strict(regs->gpr[0]); + if (do_seccomp(regs)) + return -1; - if (test_thread_flag(TIF_SYSCALL_TRACE) && - tracehook_report_syscall_entry(regs)) + if (test_thread_flag(TIF_SYSCALL_TRACE)) { /* - * Tracing decided this syscall should not happen. - * We'll return a bogus call number to get an ENOSYS - * error, but leave the original number in regs->gpr[0]. + * The tracer may decide to abort the syscall, if so tracehook + * will return !0. Note that the tracer may also just change + * regs->gpr[0] to an invalid syscall number, that is handled + * below on the exit path. */ - ret = -1L; + abort = tracehook_report_syscall_entry(regs) != 0; + } if (unlikely(test_thread_flag(TIF_SYSCALL_TRACEPOINT))) trace_sys_enter(regs, regs->gpr[0]); @@ -1798,7 +1853,17 @@ regs->gpr[5] & 0xffffffff, regs->gpr[6] & 0xffffffff); - return ret ?: regs->gpr[0]; + if (abort || regs->gpr[0] >= NR_syscalls) { + /* + * If we are aborting explicitly, or if the syscall number is + * now invalid, set the return value to -ENOSYS. + */ + regs->gpr[3] = -ENOSYS; + return -1; + } + + /* Return the possibly modified but valid syscall number */ + return regs->gpr[0]; } void do_syscall_trace_leave(struct pt_regs *regs) --- linux-raspi2-4.2.0.orig/arch/powerpc/kernel/rtas.c +++ linux-raspi2-4.2.0/arch/powerpc/kernel/rtas.c @@ -584,6 +584,23 @@ } EXPORT_SYMBOL(rtas_get_sensor); +int rtas_get_sensor_fast(int sensor, int index, int *state) +{ + int token = rtas_token("get-sensor-state"); + int rc; + + if (token == RTAS_UNKNOWN_SERVICE) + return -ENOENT; + + rc = rtas_call(token, 2, 2, state, sensor, index); + WARN_ON(rc == RTAS_BUSY || (rc >= RTAS_EXTENDED_DELAY_MIN && + rc <= RTAS_EXTENDED_DELAY_MAX)); + + if (rc < 0) + return rtas_error_rc(rc); + return rc; +} + bool rtas_indicator_present(int token, int *maxindex) { int proplen, count, i; @@ -1024,6 +1041,9 @@ if (!capable(CAP_SYS_ADMIN)) return -EPERM; + if (!rtas.entry) + return -EINVAL; + if (copy_from_user(&args, uargs, 3 * sizeof(u32)) != 0) return -EFAULT; --- linux-raspi2-4.2.0.orig/arch/powerpc/kernel/signal_32.c +++ linux-raspi2-4.2.0/arch/powerpc/kernel/signal_32.c @@ -875,6 +875,15 @@ return 1; #endif /* CONFIG_SPE */ + /* Get the top half of the MSR from the user context */ + if (__get_user(msr_hi, &tm_sr->mc_gregs[PT_MSR])) + return 1; + msr_hi <<= 32; + /* If TM bits are set to the reserved value, it's an invalid context */ + if (MSR_TM_RESV(msr_hi)) + return 1; + /* Pull in the MSR TM bits from the user context */ + regs->msr = (regs->msr & ~MSR_TS_MASK) | (msr_hi & MSR_TS_MASK); /* Now, recheckpoint. This loads up all of the checkpointed (older) * registers, including FP and V[S]Rs. After recheckpointing, the * transactional versions should be loaded. @@ -884,11 +893,6 @@ current->thread.tm_texasr |= TEXASR_FS; /* This loads the checkpointed FP/VEC state, if used */ tm_recheckpoint(¤t->thread, msr); - /* Get the top half of the MSR */ - if (__get_user(msr_hi, &tm_sr->mc_gregs[PT_MSR])) - return 1; - /* Pull in MSR TM from user context */ - regs->msr = (regs->msr & ~MSR_TS_MASK) | ((msr_hi<<32) & MSR_TS_MASK); /* This loads the speculative FP/VEC state, if used */ if (msr & MSR_FP) { @@ -949,6 +953,11 @@ err |= __put_user(s->si_overrun, &d->si_overrun); err |= __put_user(s->si_int, &d->si_int); break; + case __SI_SYS >> 16: + err |= __put_user(ptr_to_compat(s->si_call_addr), &d->si_call_addr); + err |= __put_user(s->si_syscall, &d->si_syscall); + err |= __put_user(s->si_arch, &d->si_arch); + break; case __SI_RT >> 16: /* This is not generated by the kernel as of now. */ case __SI_MESGQ >> 16: err |= __put_user(s->si_int, &d->si_int); --- linux-raspi2-4.2.0.orig/arch/powerpc/kernel/signal_64.c +++ linux-raspi2-4.2.0/arch/powerpc/kernel/signal_64.c @@ -427,6 +427,10 @@ /* get MSR separately, transfer the LE bit if doing signal return */ err |= __get_user(msr, &sc->gp_regs[PT_MSR]); + /* Don't allow reserved mode. */ + if (MSR_TM_RESV(msr)) + return -EINVAL; + /* pull in MSR TM from user context */ regs->msr = (regs->msr & ~MSR_TS_MASK) | (msr & MSR_TS_MASK); --- linux-raspi2-4.2.0.orig/arch/powerpc/kvm/book3s.c +++ linux-raspi2-4.2.0/arch/powerpc/kvm/book3s.c @@ -827,12 +827,15 @@ unsigned long size = kvmppc_get_gpr(vcpu, 4); unsigned long addr = kvmppc_get_gpr(vcpu, 5); u64 buf; + int srcu_idx; int ret; if (!is_power_of_2(size) || (size > sizeof(buf))) return H_TOO_HARD; + srcu_idx = srcu_read_lock(&vcpu->kvm->srcu); ret = kvm_io_bus_read(vcpu, KVM_MMIO_BUS, addr, size, &buf); + srcu_read_unlock(&vcpu->kvm->srcu, srcu_idx); if (ret != 0) return H_TOO_HARD; @@ -867,6 +870,7 @@ unsigned long addr = kvmppc_get_gpr(vcpu, 5); unsigned long val = kvmppc_get_gpr(vcpu, 6); u64 buf; + int srcu_idx; int ret; switch (size) { @@ -890,7 +894,9 @@ return H_TOO_HARD; } + srcu_idx = srcu_read_lock(&vcpu->kvm->srcu); ret = kvm_io_bus_write(vcpu, KVM_MMIO_BUS, addr, size, &buf); + srcu_read_unlock(&vcpu->kvm->srcu, srcu_idx); if (ret != 0) return H_TOO_HARD; --- linux-raspi2-4.2.0.orig/arch/powerpc/kvm/book3s_hv.c +++ linux-raspi2-4.2.0/arch/powerpc/kvm/book3s_hv.c @@ -2178,7 +2178,7 @@ vc->runner = vcpu; if (n_ceded == vc->n_runnable) { kvmppc_vcore_blocked(vc); - } else if (should_resched()) { + } else if (need_resched()) { vc->vcore_state = VCORE_PREEMPT; /* Let something else run */ cond_resched_lock(&vc->lock); --- linux-raspi2-4.2.0.orig/arch/powerpc/kvm/book3s_hv_rm_mmu.c +++ linux-raspi2-4.2.0/arch/powerpc/kvm/book3s_hv_rm_mmu.c @@ -421,14 +421,20 @@ rev = real_vmalloc_addr(&kvm->arch.revmap[pte_index]); v = pte & ~HPTE_V_HVLOCK; if (v & HPTE_V_VALID) { - u64 pte1; - - pte1 = be64_to_cpu(hpte[1]); hpte[0] &= ~cpu_to_be64(HPTE_V_VALID); - rb = compute_tlbie_rb(v, pte1, pte_index); + rb = compute_tlbie_rb(v, be64_to_cpu(hpte[1]), pte_index); do_tlbies(kvm, &rb, 1, global_invalidates(kvm, flags), true); - /* Read PTE low word after tlbie to get final R/C values */ - remove_revmap_chain(kvm, pte_index, rev, v, pte1); + /* + * The reference (R) and change (C) bits in a HPT + * entry can be set by hardware at any time up until + * the HPTE is invalidated and the TLB invalidation + * sequence has completed. This means that when + * removing a HPTE, we need to re-read the HPTE after + * the invalidation sequence has completed in order to + * obtain reliable values of R and C. + */ + remove_revmap_chain(kvm, pte_index, rev, v, + be64_to_cpu(hpte[1])); } r = rev->guest_rpte & ~HPTE_GR_RESERVED; note_hpte_modification(kvm, rev); --- linux-raspi2-4.2.0.orig/arch/powerpc/kvm/book3s_hv_rmhandlers.S +++ linux-raspi2-4.2.0/arch/powerpc/kvm/book3s_hv_rmhandlers.S @@ -1127,6 +1127,7 @@ cmpwi r12, BOOK3S_INTERRUPT_H_DOORBELL bne 3f lbz r0, HSTATE_HOST_IPI(r13) + cmpwi r0, 0 beq 4f b guest_exit_cont 3: @@ -1170,6 +1171,7 @@ bl kvmhv_accumulate_time #endif + mr r3, r12 /* Increment exit count, poke other threads to exit */ bl kvmhv_commence_exit nop --- linux-raspi2-4.2.0.orig/arch/powerpc/lib/feature-fixups.c +++ linux-raspi2-4.2.0/arch/powerpc/lib/feature-fixups.c @@ -141,8 +141,11 @@ src = (int *)(KERNELBASE + PHYSICAL_START); dest = (int *)KERNELBASE; +#ifdef CONFIG_PPC_BOOK3E + length = (interrupt_end_book3e - _stext) / sizeof(int); +#else length = (__end_interrupts - _stext) / sizeof(int); - +#endif while (length--) { patch_instruction(dest, *src); src++; --- linux-raspi2-4.2.0.orig/arch/powerpc/mm/hugepage-hash64.c +++ linux-raspi2-4.2.0/arch/powerpc/mm/hugepage-hash64.c @@ -85,7 +85,6 @@ BUG_ON(index >= 4096); vpn = hpt_vpn(ea, vsid, ssize); - hash = hpt_hash(vpn, shift, ssize); hpte_slot_array = get_hpte_slot_array(pmdp); if (psize == MMU_PAGE_4K) { /* @@ -101,6 +100,7 @@ valid = hpte_valid(hpte_slot_array, index); if (valid) { /* update the hpte bits */ + hash = hpt_hash(vpn, shift, ssize); hidx = hpte_hash_index(hpte_slot_array, index); if (hidx & _PTEIDX_SECONDARY) hash = ~hash; @@ -126,6 +126,7 @@ if (!valid) { unsigned long hpte_group; + hash = hpt_hash(vpn, shift, ssize); /* insert new entry */ pa = pmd_pfn(__pmd(old_pmd)) << PAGE_SHIFT; new_pmd |= _PAGE_HASHPTE; --- linux-raspi2-4.2.0.orig/arch/powerpc/platforms/85xx/smp.c +++ linux-raspi2-4.2.0/arch/powerpc/platforms/85xx/smp.c @@ -196,6 +196,9 @@ int hw_cpu = get_hard_smp_processor_id(nr); int ioremappable; int ret = 0; +#ifdef CONFIG_PPC64 + unsigned long *ptr = NULL; +#endif WARN_ON(nr < 0 || nr >= NR_CPUS); WARN_ON(hw_cpu < 0 || hw_cpu >= NR_CPUS); @@ -309,11 +312,18 @@ #else smp_generic_kick_cpu(nr); - flush_spin_table(spin_table); - out_be32(&spin_table->pir, hw_cpu); - out_be64((u64 *)(&spin_table->addr_h), - __pa(ppc_function_entry(generic_secondary_smp_init))); - flush_spin_table(spin_table); + ptr = (unsigned long *)((unsigned long)&__run_at_kexec); + /* We shouldn't access spin_table from the bootloader to up any + * secondary cpu for kexec kernel, and kexec kernel already + * know how to jump to generic_secondary_smp_init. + */ + if (!*ptr) { + flush_spin_table(spin_table); + out_be32(&spin_table->pir, hw_cpu); + out_be64((u64 *)(&spin_table->addr_h), + __pa((u64)*((unsigned long long *)generic_secondary_smp_init))); + flush_spin_table(spin_table); + } #endif local_irq_restore(flags); @@ -331,13 +341,14 @@ .cpu_disable = generic_cpu_disable, .cpu_die = generic_cpu_die, #endif -#ifdef CONFIG_KEXEC +#if defined(CONFIG_KEXEC) && defined(CONFIG_PPC32) .give_timebase = smp_generic_give_timebase, .take_timebase = smp_generic_take_timebase, #endif }; #ifdef CONFIG_KEXEC +#ifdef CONFIG_PPC32 atomic_t kexec_down_cpus = ATOMIC_INIT(0); void mpc85xx_smp_kexec_cpu_down(int crash_shutdown, int secondary) @@ -357,12 +368,23 @@ if (ppc_md.kexec_cpu_down) ppc_md.kexec_cpu_down(0,1); } +#else +void mpc85xx_smp_kexec_cpu_down(int crash_shutdown, int secondary) +{ + local_irq_disable(); + hard_irq_disable(); + mpic_teardown_this_cpu(secondary); +} +#endif static void mpc85xx_smp_machine_kexec(struct kimage *image) { +#ifdef CONFIG_PPC32 int timeout = INT_MAX; int i, num_cpus = num_present_cpus(); +#endif +#ifdef CONFIG_PPC32 if (image->type == KEXEC_TYPE_DEFAULT) smp_call_function(mpc85xx_smp_kexec_down, NULL, 0); @@ -380,6 +402,7 @@ if ( i == smp_processor_id() ) continue; mpic_reset_core(i); } +#endif default_machine_kexec(image); } --- linux-raspi2-4.2.0.orig/arch/powerpc/platforms/pasemi/msi.c +++ linux-raspi2-4.2.0/arch/powerpc/platforms/pasemi/msi.c @@ -63,6 +63,7 @@ static void pasemi_msi_teardown_msi_irqs(struct pci_dev *pdev) { struct msi_desc *entry; + irq_hw_number_t hwirq; pr_debug("pasemi_msi_teardown_msi_irqs, pdev %p\n", pdev); @@ -70,10 +71,10 @@ if (entry->irq == NO_IRQ) continue; + hwirq = virq_to_hw(entry->irq); irq_set_msi_desc(entry->irq, NULL); - msi_bitmap_free_hwirqs(&msi_mpic->msi_bitmap, - virq_to_hw(entry->irq), ALLOC_CHUNK); irq_dispose_mapping(entry->irq); + msi_bitmap_free_hwirqs(&msi_mpic->msi_bitmap, hwirq, ALLOC_CHUNK); } return; --- linux-raspi2-4.2.0.orig/arch/powerpc/platforms/powernv/eeh-powernv.c +++ linux-raspi2-4.2.0/arch/powerpc/platforms/powernv/eeh-powernv.c @@ -443,11 +443,14 @@ * that PE to block its config space. * * Broadcom Austin 4-ports NICs (14e4:1657) + * Broadcom Shiner 4-ports 1G NICs (14e4:168a) * Broadcom Shiner 2-ports 10G NICs (14e4:168e) */ if ((pdn->vendor_id == PCI_VENDOR_ID_BROADCOM && pdn->device_id == 0x1657) || (pdn->vendor_id == PCI_VENDOR_ID_BROADCOM && + pdn->device_id == 0x168a) || + (pdn->vendor_id == PCI_VENDOR_ID_BROADCOM && pdn->device_id == 0x168e)) edev->pe->state |= EEH_PE_CFG_RESTRICTED; --- linux-raspi2-4.2.0.orig/arch/powerpc/platforms/powernv/opal-hmi.c +++ linux-raspi2-4.2.0/arch/powerpc/platforms/powernv/opal-hmi.c @@ -35,9 +35,134 @@ struct list_head list; struct OpalHMIEvent hmi_evt; }; + +struct xstop_reason { + uint32_t xstop_reason; + const char *unit_failed; + const char *description; +}; + static LIST_HEAD(opal_hmi_evt_list); static DEFINE_SPINLOCK(opal_hmi_evt_lock); +static void print_core_checkstop_reason(const char *level, + struct OpalHMIEvent *hmi_evt) +{ + int i; + static const struct xstop_reason xstop_reason[] = { + { CORE_CHECKSTOP_IFU_REGFILE, "IFU", + "RegFile core check stop" }, + { CORE_CHECKSTOP_IFU_LOGIC, "IFU", "Logic core check stop" }, + { CORE_CHECKSTOP_PC_DURING_RECOV, "PC", + "Core checkstop during recovery" }, + { CORE_CHECKSTOP_ISU_REGFILE, "ISU", + "RegFile core check stop (mapper error)" }, + { CORE_CHECKSTOP_ISU_LOGIC, "ISU", "Logic core check stop" }, + { CORE_CHECKSTOP_FXU_LOGIC, "FXU", "Logic core check stop" }, + { CORE_CHECKSTOP_VSU_LOGIC, "VSU", "Logic core check stop" }, + { CORE_CHECKSTOP_PC_RECOV_IN_MAINT_MODE, "PC", + "Recovery in maintenance mode" }, + { CORE_CHECKSTOP_LSU_REGFILE, "LSU", + "RegFile core check stop" }, + { CORE_CHECKSTOP_PC_FWD_PROGRESS, "PC", + "Forward Progress Error" }, + { CORE_CHECKSTOP_LSU_LOGIC, "LSU", "Logic core check stop" }, + { CORE_CHECKSTOP_PC_LOGIC, "PC", "Logic core check stop" }, + { CORE_CHECKSTOP_PC_HYP_RESOURCE, "PC", + "Hypervisor Resource error - core check stop" }, + { CORE_CHECKSTOP_PC_HANG_RECOV_FAILED, "PC", + "Hang Recovery Failed (core check stop)" }, + { CORE_CHECKSTOP_PC_AMBI_HANG_DETECTED, "PC", + "Ambiguous Hang Detected (unknown source)" }, + { CORE_CHECKSTOP_PC_DEBUG_TRIG_ERR_INJ, "PC", + "Debug Trigger Error inject" }, + { CORE_CHECKSTOP_PC_SPRD_HYP_ERR_INJ, "PC", + "Hypervisor check stop via SPRC/SPRD" }, + }; + + /* Validity check */ + if (!hmi_evt->u.xstop_error.xstop_reason) { + printk("%s Unknown Core check stop.\n", level); + return; + } + + printk("%s CPU PIR: %08x\n", level, + be32_to_cpu(hmi_evt->u.xstop_error.u.pir)); + for (i = 0; i < ARRAY_SIZE(xstop_reason); i++) + if (be32_to_cpu(hmi_evt->u.xstop_error.xstop_reason) & + xstop_reason[i].xstop_reason) + printk("%s [Unit: %-3s] %s\n", level, + xstop_reason[i].unit_failed, + xstop_reason[i].description); +} + +static void print_nx_checkstop_reason(const char *level, + struct OpalHMIEvent *hmi_evt) +{ + int i; + static const struct xstop_reason xstop_reason[] = { + { NX_CHECKSTOP_SHM_INVAL_STATE_ERR, "DMA & Engine", + "SHM invalid state error" }, + { NX_CHECKSTOP_DMA_INVAL_STATE_ERR_1, "DMA & Engine", + "DMA invalid state error bit 15" }, + { NX_CHECKSTOP_DMA_INVAL_STATE_ERR_2, "DMA & Engine", + "DMA invalid state error bit 16" }, + { NX_CHECKSTOP_DMA_CH0_INVAL_STATE_ERR, "DMA & Engine", + "Channel 0 invalid state error" }, + { NX_CHECKSTOP_DMA_CH1_INVAL_STATE_ERR, "DMA & Engine", + "Channel 1 invalid state error" }, + { NX_CHECKSTOP_DMA_CH2_INVAL_STATE_ERR, "DMA & Engine", + "Channel 2 invalid state error" }, + { NX_CHECKSTOP_DMA_CH3_INVAL_STATE_ERR, "DMA & Engine", + "Channel 3 invalid state error" }, + { NX_CHECKSTOP_DMA_CH4_INVAL_STATE_ERR, "DMA & Engine", + "Channel 4 invalid state error" }, + { NX_CHECKSTOP_DMA_CH5_INVAL_STATE_ERR, "DMA & Engine", + "Channel 5 invalid state error" }, + { NX_CHECKSTOP_DMA_CH6_INVAL_STATE_ERR, "DMA & Engine", + "Channel 6 invalid state error" }, + { NX_CHECKSTOP_DMA_CH7_INVAL_STATE_ERR, "DMA & Engine", + "Channel 7 invalid state error" }, + { NX_CHECKSTOP_DMA_CRB_UE, "DMA & Engine", + "UE error on CRB(CSB address, CCB)" }, + { NX_CHECKSTOP_DMA_CRB_SUE, "DMA & Engine", + "SUE error on CRB(CSB address, CCB)" }, + { NX_CHECKSTOP_PBI_ISN_UE, "PowerBus Interface", + "CRB Kill ISN received while holding ISN with UE error" }, + }; + + /* Validity check */ + if (!hmi_evt->u.xstop_error.xstop_reason) { + printk("%s Unknown NX check stop.\n", level); + return; + } + + printk("%s NX checkstop on CHIP ID: %x\n", level, + be32_to_cpu(hmi_evt->u.xstop_error.u.chip_id)); + for (i = 0; i < ARRAY_SIZE(xstop_reason); i++) + if (be32_to_cpu(hmi_evt->u.xstop_error.xstop_reason) & + xstop_reason[i].xstop_reason) + printk("%s [Unit: %-3s] %s\n", level, + xstop_reason[i].unit_failed, + xstop_reason[i].description); +} + +static void print_checkstop_reason(const char *level, + struct OpalHMIEvent *hmi_evt) +{ + switch (hmi_evt->u.xstop_error.xstop_type) { + case CHECKSTOP_TYPE_CORE: + print_core_checkstop_reason(level, hmi_evt); + break; + case CHECKSTOP_TYPE_NX: + print_nx_checkstop_reason(level, hmi_evt); + break; + case CHECKSTOP_TYPE_UNKNOWN: + printk("%s Unknown Malfunction Alert.\n", level); + break; + } +} + static void print_hmi_event_info(struct OpalHMIEvent *hmi_evt) { const char *level, *sevstr, *error_info; @@ -95,6 +220,13 @@ (hmi_evt->type == OpalHMI_ERROR_TFMR_PARITY)) printk("%s TFMR: %016llx\n", level, be64_to_cpu(hmi_evt->tfmr)); + + if (hmi_evt->version < OpalHMIEvt_V2) + return; + + /* OpalHMIEvt_V2 and above provides reason for malfunction alert. */ + if (hmi_evt->type == OpalHMI_ERROR_MALFUNC_ALERT) + print_checkstop_reason(level, hmi_evt); } static void hmi_event_handler(struct work_struct *work) @@ -103,6 +235,8 @@ struct OpalHMIEvent *hmi_evt; struct OpalHmiEvtNode *msg_node; uint8_t disposition; + struct opal_msg msg; + int unrecoverable = 0; spin_lock_irqsave(&opal_hmi_evt_lock, flags); while (!list_empty(&opal_hmi_evt_list)) { @@ -118,14 +252,53 @@ /* * Check if HMI event has been recovered or not. If not - * then we can't continue, invoke panic. + * then kernel can't continue, we need to panic. + * But before we do that, display all the HMI event + * available on the list and set unrecoverable flag to 1. */ if (disposition != OpalHMI_DISPOSITION_RECOVERED) - panic("Unrecoverable HMI exception"); + unrecoverable = 1; spin_lock_irqsave(&opal_hmi_evt_lock, flags); } spin_unlock_irqrestore(&opal_hmi_evt_lock, flags); + + if (unrecoverable) { + int ret; + + /* Pull all HMI events from OPAL before we panic. */ + while (opal_get_msg(__pa(&msg), sizeof(msg)) == OPAL_SUCCESS) { + u32 type; + + type = be32_to_cpu(msg.msg_type); + + /* skip if not HMI event */ + if (type != OPAL_MSG_HMI_EVT) + continue; + + /* HMI event info starts from param[0] */ + hmi_evt = (struct OpalHMIEvent *)&msg.params[0]; + print_hmi_event_info(hmi_evt); + } + + /* + * Unrecoverable HMI exception. We need to inform BMC/OCC + * about this error so that it can collect relevant data + * for error analysis before rebooting. + */ + ret = opal_cec_reboot2(OPAL_REBOOT_PLATFORM_ERROR, + "Unrecoverable HMI exception"); + if (ret == OPAL_UNSUPPORTED) { + pr_emerg("Reboot type %d not supported\n", + OPAL_REBOOT_PLATFORM_ERROR); + } + + /* + * Fall through and panic if opal_cec_reboot2() returns + * OPAL_UNSUPPORTED. + */ + panic("Unrecoverable HMI exception"); + } } static DECLARE_WORK(hmi_event_work, hmi_event_handler); --- linux-raspi2-4.2.0.orig/arch/powerpc/platforms/powernv/opal-power.c +++ linux-raspi2-4.2.0/arch/powerpc/platforms/powernv/opal-power.c @@ -9,9 +9,12 @@ * 2 of the License, or (at your option) any later version. */ +#define pr_fmt(fmt) "opal-power: " fmt + #include #include #include +#include #include #include @@ -19,30 +22,116 @@ #define SOFT_OFF 0x00 #define SOFT_REBOOT 0x01 +/* Detect EPOW event */ +static bool detect_epow(void) +{ + u16 epow; + int i, rc; + __be16 epow_classes; + __be16 opal_epow_status[OPAL_SYSEPOW_MAX] = {0}; + + /* + * Check for EPOW event. Kernel sends supported EPOW classes info + * to OPAL. OPAL returns EPOW info along with classes present. + */ + epow_classes = cpu_to_be16(OPAL_SYSEPOW_MAX); + rc = opal_get_epow_status(opal_epow_status, &epow_classes); + if (rc != OPAL_SUCCESS) { + pr_err("Failed to get EPOW event information\n"); + return false; + } + + /* Look for EPOW events present */ + for (i = 0; i < be16_to_cpu(epow_classes); i++) { + epow = be16_to_cpu(opal_epow_status[i]); + + /* Filter events which do not need shutdown. */ + if (i == OPAL_SYSEPOW_POWER) + epow &= ~(OPAL_SYSPOWER_CHNG | OPAL_SYSPOWER_FAIL | + OPAL_SYSPOWER_INCL); + if (epow) + return true; + } + + return false; +} + +/* Check for existing EPOW, DPO events */ +static bool poweroff_pending(void) +{ + int rc; + __be64 opal_dpo_timeout; + + /* Check for DPO event */ + rc = opal_get_dpo_status(&opal_dpo_timeout); + if (rc == OPAL_SUCCESS) { + pr_info("Existing DPO event detected.\n"); + return true; + } + + /* Check for EPOW event */ + if (detect_epow()) { + pr_info("Existing EPOW event detected.\n"); + return true; + } + + return false; +} + +/* OPAL power-control events notifier */ static int opal_power_control_event(struct notifier_block *nb, - unsigned long msg_type, void *msg) + unsigned long msg_type, void *msg) { - struct opal_msg *power_msg = msg; uint64_t type; - type = be64_to_cpu(power_msg->params[0]); - - switch (type) { - case SOFT_REBOOT: - pr_info("OPAL: reboot requested\n"); - orderly_reboot(); + switch (msg_type) { + case OPAL_MSG_EPOW: + if (detect_epow()) { + pr_info("EPOW msg received. Powering off system\n"); + orderly_poweroff(true); + } break; - case SOFT_OFF: - pr_info("OPAL: poweroff requested\n"); + case OPAL_MSG_DPO: + pr_info("DPO msg received. Powering off system\n"); orderly_poweroff(true); break; + case OPAL_MSG_SHUTDOWN: + type = be64_to_cpu(((struct opal_msg *)msg)->params[0]); + switch (type) { + case SOFT_REBOOT: + pr_info("Reboot requested\n"); + orderly_reboot(); + break; + case SOFT_OFF: + pr_info("Poweroff requested\n"); + orderly_poweroff(true); + break; + default: + pr_err("Unknown power-control type %llu\n", type); + } + break; default: - pr_err("OPAL: power control type unexpected %016llx\n", type); + pr_err("Unknown OPAL message type %lu\n", msg_type); } return 0; } +/* OPAL EPOW event notifier block */ +static struct notifier_block opal_epow_nb = { + .notifier_call = opal_power_control_event, + .next = NULL, + .priority = 0, +}; + +/* OPAL DPO event notifier block */ +static struct notifier_block opal_dpo_nb = { + .notifier_call = opal_power_control_event, + .next = NULL, + .priority = 0, +}; + +/* OPAL power-control event notifier block */ static struct notifier_block opal_power_control_nb = { .notifier_call = opal_power_control_event, .next = NULL, @@ -51,16 +140,40 @@ static int __init opal_power_control_init(void) { - int ret; + int ret, supported = 0; + struct device_node *np; + /* Register OPAL power-control events notifier */ ret = opal_message_notifier_register(OPAL_MSG_SHUTDOWN, - &opal_power_control_nb); - if (ret) { - pr_err("%s: Can't register OPAL event notifier (%d)\n", - __func__, ret); - return ret; + &opal_power_control_nb); + if (ret) + pr_err("Failed to register SHUTDOWN notifier, ret = %d\n", ret); + + /* Determine OPAL EPOW, DPO support */ + np = of_find_node_by_path("/ibm,opal/epow"); + if (np) { + supported = of_device_is_compatible(np, "ibm,opal-v3-epow"); + of_node_put(np); } + if (!supported) + return 0; + pr_info("OPAL EPOW, DPO support detected.\n"); + + /* Register EPOW event notifier */ + ret = opal_message_notifier_register(OPAL_MSG_EPOW, &opal_epow_nb); + if (ret) + pr_err("Failed to register EPOW notifier, ret = %d\n", ret); + + /* Register DPO event notifier */ + ret = opal_message_notifier_register(OPAL_MSG_DPO, &opal_dpo_nb); + if (ret) + pr_err("Failed to register DPO notifier, ret = %d\n", ret); + + /* Check for any pending EPOW or DPO events. */ + if (poweroff_pending()) + orderly_poweroff(true); + return 0; } machine_subsys_initcall(powernv, opal_power_control_init); --- linux-raspi2-4.2.0.orig/arch/powerpc/platforms/powernv/opal-wrappers.S +++ linux-raspi2-4.2.0/arch/powerpc/platforms/powernv/opal-wrappers.S @@ -202,6 +202,7 @@ OPAL_CALL(opal_rtc_write, OPAL_RTC_WRITE); OPAL_CALL(opal_cec_power_down, OPAL_CEC_POWER_DOWN); OPAL_CALL(opal_cec_reboot, OPAL_CEC_REBOOT); +OPAL_CALL(opal_cec_reboot2, OPAL_CEC_REBOOT2); OPAL_CALL(opal_read_nvram, OPAL_READ_NVRAM); OPAL_CALL(opal_write_nvram, OPAL_WRITE_NVRAM); OPAL_CALL(opal_handle_interrupt, OPAL_HANDLE_INTERRUPT); @@ -249,6 +250,7 @@ OPAL_CALL(opal_pci_mask_pe_error, OPAL_PCI_MASK_PE_ERROR); OPAL_CALL(opal_set_slot_led_status, OPAL_SET_SLOT_LED_STATUS); OPAL_CALL(opal_get_epow_status, OPAL_GET_EPOW_STATUS); +OPAL_CALL(opal_get_dpo_status, OPAL_GET_DPO_STATUS); OPAL_CALL(opal_set_system_attention_led, OPAL_SET_SYSTEM_ATTENTION_LED); OPAL_CALL(opal_pci_next_error, OPAL_PCI_NEXT_ERROR); OPAL_CALL(opal_pci_poll, OPAL_PCI_POLL); @@ -297,3 +299,5 @@ OPAL_CALL(opal_flash_write, OPAL_FLASH_WRITE); OPAL_CALL(opal_flash_erase, OPAL_FLASH_ERASE); OPAL_CALL(opal_prd_msg, OPAL_PRD_MSG); +OPAL_CALL(opal_leds_get_ind, OPAL_LEDS_GET_INDICATOR); +OPAL_CALL(opal_leds_set_ind, OPAL_LEDS_SET_INDICATOR); --- linux-raspi2-4.2.0.orig/arch/powerpc/platforms/powernv/opal.c +++ linux-raspi2-4.2.0/arch/powerpc/platforms/powernv/opal.c @@ -441,6 +441,7 @@ int opal_machine_check(struct pt_regs *regs) { struct machine_check_event evt; + int ret; if (!get_mce_event(&evt, MCE_EVENT_RELEASE)) return 0; @@ -455,6 +456,40 @@ if (opal_recover_mce(regs, &evt)) return 1; + + /* + * Unrecovered machine check, we are heading to panic path. + * + * We may have hit this MCE in very early stage of kernel + * initialization even before opal-prd has started running. If + * this is the case then this MCE error may go un-noticed or + * un-analyzed if we go down panic path. We need to inform + * BMC/OCC about this error so that they can collect relevant + * data for error analysis before rebooting. + * Use opal_cec_reboot2(OPAL_REBOOT_PLATFORM_ERROR) to do so. + * This function may not return on BMC based system. + */ + ret = opal_cec_reboot2(OPAL_REBOOT_PLATFORM_ERROR, + "Unrecoverable Machine Check exception"); + if (ret == OPAL_UNSUPPORTED) { + pr_emerg("Reboot type %d not supported\n", + OPAL_REBOOT_PLATFORM_ERROR); + } + + /* + * We reached here. There can be three possibilities: + * 1. We are running on a firmware level that do not support + * opal_cec_reboot2() + * 2. We are running on a firmware level that do not support + * OPAL_REBOOT_PLATFORM_ERROR reboot type. + * 3. We are running on FSP based system that does not need opal + * to trigger checkstop explicitly for error analysis. The FSP + * PRD component would have already got notified about this + * error through other channels. + * + * In any case, let us just fall through. We anyway heading + * down to panic path. + */ return 0; } @@ -648,7 +683,7 @@ static int __init opal_init(void) { - struct device_node *np, *consoles; + struct device_node *np, *consoles, *leds; int rc; opal_node = of_find_node_by_path("/ibm,opal"); @@ -689,6 +724,13 @@ /* Setup a heatbeat thread if requested by OPAL */ opal_init_heartbeat(); + /* Create leds platform devices */ + leds = of_find_node_by_path("/ibm,opal/leds"); + if (leds) { + of_platform_device_create(leds, "opal_leds", NULL); + of_node_put(leds); + } + /* Create "opal" kobject under /sys/firmware */ rc = opal_sysfs_init(); if (rc == 0) { @@ -841,3 +883,6 @@ EXPORT_SYMBOL_GPL(opal_tpo_read); EXPORT_SYMBOL_GPL(opal_tpo_write); EXPORT_SYMBOL_GPL(opal_i2c_request); +/* Export these symbols for PowerNV LED class driver */ +EXPORT_SYMBOL_GPL(opal_leds_get_ind); +EXPORT_SYMBOL_GPL(opal_leds_set_ind); --- linux-raspi2-4.2.0.orig/arch/powerpc/platforms/powernv/pci-ioda.c +++ linux-raspi2-4.2.0/arch/powerpc/platforms/powernv/pci-ioda.c @@ -1630,9 +1630,10 @@ return 0; } -static u64 pnv_pci_ioda_dma_get_required_mask(struct pnv_phb *phb, - struct pci_dev *pdev) +static u64 pnv_pci_ioda_dma_get_required_mask(struct pci_dev *pdev) { + struct pci_controller *hose = pci_bus_to_host(pdev->bus); + struct pnv_phb *phb = hose->private_data; struct pci_dn *pdn = pci_get_pdn(pdev); struct pnv_ioda_pe *pe; u64 end, mask; @@ -2078,9 +2079,23 @@ struct iommu_table *tbl = NULL; long rc; + /* + * crashkernel= specifies the kdump kernel's maximum memory at + * some offset and there is no guaranteed the result is a power + * of 2, which will cause errors later. + */ + const u64 max_memory = __rounddown_pow_of_two(memory_hotplug_max()); + + /* + * In memory constrained environments, e.g. kdump kernel, the + * DMA window can be larger than available memory, which will + * cause errors later. + */ + const u64 window_size = min((u64)pe->table_group.tce32_size, max_memory); + rc = pnv_pci_ioda2_create_table(&pe->table_group, 0, IOMMU_PAGE_SHIFT_4K, - pe->table_group.tce32_size, + window_size, POWERNV_IOMMU_DEFAULT_LEVELS, &tbl); if (rc) { pe_err(pe, "Failed to create 32-bit TCE table, err %ld", @@ -3057,6 +3072,7 @@ .window_alignment = pnv_pci_window_alignment, .reset_secondary_bus = pnv_pci_reset_secondary_bus, .dma_set_mask = pnv_pci_ioda_dma_set_mask, + .dma_get_required_mask = pnv_pci_ioda_dma_get_required_mask, .shutdown = pnv_pci_ioda_shutdown, }; @@ -3203,7 +3219,6 @@ /* Setup TCEs */ phb->dma_dev_setup = pnv_pci_ioda_dma_dev_setup; - phb->dma_get_required_mask = pnv_pci_ioda_dma_get_required_mask; /* Setup MSI support */ pnv_pci_init_ioda_msis(phb); --- linux-raspi2-4.2.0.orig/arch/powerpc/platforms/powernv/pci.c +++ linux-raspi2-4.2.0/arch/powerpc/platforms/powernv/pci.c @@ -99,6 +99,7 @@ struct pci_controller *hose = pci_bus_to_host(pdev->bus); struct pnv_phb *phb = hose->private_data; struct msi_desc *entry; + irq_hw_number_t hwirq; if (WARN_ON(!phb)) return; @@ -106,10 +107,10 @@ list_for_each_entry(entry, &pdev->msi_list, list) { if (entry->irq == NO_IRQ) continue; + hwirq = virq_to_hw(entry->irq); irq_set_msi_desc(entry->irq, NULL); - msi_bitmap_free_hwirqs(&phb->msi_bmp, - virq_to_hw(entry->irq) - phb->msi_base, 1); irq_dispose_mapping(entry->irq); + msi_bitmap_free_hwirqs(&phb->msi_bmp, hwirq - phb->msi_base, 1); } } #endif /* CONFIG_PCI_MSI */ @@ -761,17 +762,6 @@ phb->dma_dev_setup(phb, pdev); } -u64 pnv_pci_dma_get_required_mask(struct pci_dev *pdev) -{ - struct pci_controller *hose = pci_bus_to_host(pdev->bus); - struct pnv_phb *phb = hose->private_data; - - if (phb && phb->dma_get_required_mask) - return phb->dma_get_required_mask(phb, pdev); - - return __dma_get_required_mask(&pdev->dev); -} - void pnv_pci_shutdown(void) { struct pci_controller *hose; --- linux-raspi2-4.2.0.orig/arch/powerpc/platforms/powernv/pci.h +++ linux-raspi2-4.2.0/arch/powerpc/platforms/powernv/pci.h @@ -105,8 +105,6 @@ unsigned int hwirq, unsigned int virq, unsigned int is_64, struct msi_msg *msg); void (*dma_dev_setup)(struct pnv_phb *phb, struct pci_dev *pdev); - u64 (*dma_get_required_mask)(struct pnv_phb *phb, - struct pci_dev *pdev); void (*fixup_phb)(struct pci_controller *hose); u32 (*bdfn_to_pe)(struct pnv_phb *phb, struct pci_bus *bus, u32 devfn); int (*init_m64)(struct pnv_phb *phb); --- linux-raspi2-4.2.0.orig/arch/powerpc/platforms/powernv/powernv.h +++ linux-raspi2-4.2.0/arch/powerpc/platforms/powernv/powernv.h @@ -12,15 +12,9 @@ #ifdef CONFIG_PCI extern void pnv_pci_init(void); extern void pnv_pci_shutdown(void); -extern u64 pnv_pci_dma_get_required_mask(struct pci_dev *pdev); #else static inline void pnv_pci_init(void) { } static inline void pnv_pci_shutdown(void) { } - -static inline u64 pnv_pci_dma_get_required_mask(struct pci_dev *pdev) -{ - return 0; -} #endif extern u32 pnv_get_supported_cpuidle_states(void); --- linux-raspi2-4.2.0.orig/arch/powerpc/platforms/powernv/setup.c +++ linux-raspi2-4.2.0/arch/powerpc/platforms/powernv/setup.c @@ -165,14 +165,6 @@ { } -static u64 pnv_dma_get_required_mask(struct device *dev) -{ - if (dev_is_pci(dev)) - return pnv_pci_dma_get_required_mask(to_pci_dev(dev)); - - return __dma_get_required_mask(dev); -} - static void pnv_shutdown(void) { /* Let the PCI code clear up IODA tables */ @@ -314,7 +306,6 @@ .machine_shutdown = pnv_shutdown, .power_save = power7_idle, .calibrate_decr = generic_calibrate_decr, - .dma_get_required_mask = pnv_dma_get_required_mask, #ifdef CONFIG_KEXEC .kexec_cpu_down = pnv_kexec_cpu_down, #endif --- linux-raspi2-4.2.0.orig/arch/powerpc/platforms/pseries/dlpar.c +++ linux-raspi2-4.2.0/arch/powerpc/platforms/pseries/dlpar.c @@ -422,8 +422,10 @@ dn = dlpar_configure_connector(cpu_to_be32(drc_index), parent); of_node_put(parent); - if (!dn) + if (!dn) { + dlpar_release_drc(drc_index); return -EINVAL; + } rc = dlpar_attach_node(dn); if (rc) { --- linux-raspi2-4.2.0.orig/arch/powerpc/platforms/pseries/ras.c +++ linux-raspi2-4.2.0/arch/powerpc/platforms/pseries/ras.c @@ -189,7 +189,8 @@ int state; int critical; - status = rtas_get_sensor(EPOW_SENSOR_TOKEN, EPOW_SENSOR_INDEX, &state); + status = rtas_get_sensor_fast(EPOW_SENSOR_TOKEN, EPOW_SENSOR_INDEX, + &state); if (state > 3) critical = 1; /* Time Critical */ --- linux-raspi2-4.2.0.orig/arch/powerpc/platforms/pseries/setup.c +++ linux-raspi2-4.2.0/arch/powerpc/platforms/pseries/setup.c @@ -268,6 +268,11 @@ eeh_dev_init(PCI_DN(np), pci->phb); } break; + case OF_RECONFIG_DETACH_NODE: + pci = PCI_DN(np); + if (pci) + list_del(&pci->list); + break; default: err = NOTIFY_DONE; break; --- linux-raspi2-4.2.0.orig/arch/powerpc/sysdev/fsl_msi.c +++ linux-raspi2-4.2.0/arch/powerpc/sysdev/fsl_msi.c @@ -128,15 +128,16 @@ { struct msi_desc *entry; struct fsl_msi *msi_data; + irq_hw_number_t hwirq; list_for_each_entry(entry, &pdev->msi_list, list) { if (entry->irq == NO_IRQ) continue; + hwirq = virq_to_hw(entry->irq); msi_data = irq_get_chip_data(entry->irq); irq_set_msi_desc(entry->irq, NULL); - msi_bitmap_free_hwirqs(&msi_data->bitmap, - virq_to_hw(entry->irq), 1); irq_dispose_mapping(entry->irq); + msi_bitmap_free_hwirqs(&msi_data->bitmap, hwirq, 1); } return; --- linux-raspi2-4.2.0.orig/arch/powerpc/sysdev/mpic_u3msi.c +++ linux-raspi2-4.2.0/arch/powerpc/sysdev/mpic_u3msi.c @@ -107,15 +107,16 @@ static void u3msi_teardown_msi_irqs(struct pci_dev *pdev) { struct msi_desc *entry; + irq_hw_number_t hwirq; list_for_each_entry(entry, &pdev->msi_list, list) { if (entry->irq == NO_IRQ) continue; + hwirq = virq_to_hw(entry->irq); irq_set_msi_desc(entry->irq, NULL); - msi_bitmap_free_hwirqs(&msi_mpic->msi_bitmap, - virq_to_hw(entry->irq), 1); irq_dispose_mapping(entry->irq); + msi_bitmap_free_hwirqs(&msi_mpic->msi_bitmap, hwirq, 1); } return; --- linux-raspi2-4.2.0.orig/arch/powerpc/sysdev/ppc4xx_msi.c +++ linux-raspi2-4.2.0/arch/powerpc/sysdev/ppc4xx_msi.c @@ -124,16 +124,17 @@ { struct msi_desc *entry; struct ppc4xx_msi *msi_data = &ppc4xx_msi; + irq_hw_number_t hwirq; dev_dbg(&dev->dev, "PCIE-MSI: tearing down msi irqs\n"); list_for_each_entry(entry, &dev->msi_list, list) { if (entry->irq == NO_IRQ) continue; + hwirq = virq_to_hw(entry->irq); irq_set_msi_desc(entry->irq, NULL); - msi_bitmap_free_hwirqs(&msi_data->bitmap, - virq_to_hw(entry->irq), 1); irq_dispose_mapping(entry->irq); + msi_bitmap_free_hwirqs(&msi_data->bitmap, hwirq, 1); } } --- linux-raspi2-4.2.0.orig/arch/s390/boot/compressed/Makefile +++ linux-raspi2-4.2.0/arch/s390/boot/compressed/Makefile @@ -10,7 +10,7 @@ KBUILD_CFLAGS := -m64 -D__KERNEL__ $(LINUX_INCLUDE) -O2 KBUILD_CFLAGS += -DDISABLE_BRANCH_PROFILING -KBUILD_CFLAGS += $(cflags-y) -fno-delete-null-pointer-checks +KBUILD_CFLAGS += $(cflags-y) -fno-delete-null-pointer-checks -msoft-float KBUILD_CFLAGS += $(call cc-option,-mpacked-stack) KBUILD_CFLAGS += $(call cc-option,-ffreestanding) --- linux-raspi2-4.2.0.orig/arch/s390/boot/compressed/misc.c +++ linux-raspi2-4.2.0/arch/s390/boot/compressed/misc.c @@ -167,7 +167,7 @@ #endif puts("Uncompressing Linux... "); - decompress(input_data, input_len, NULL, NULL, output, NULL, error); + __decompress(input_data, input_len, NULL, NULL, output, 0, NULL, error); puts("Ok, booting the kernel.\n"); return (unsigned long) output; } --- linux-raspi2-4.2.0.orig/arch/s390/kernel/compat_signal.c +++ linux-raspi2-4.2.0/arch/s390/kernel/compat_signal.c @@ -48,6 +48,19 @@ struct ucontext32 uc; } rt_sigframe32; +static inline void sigset_to_sigset32(unsigned long *set64, + compat_sigset_word *set32) +{ + set32[0] = (compat_sigset_word) set64[0]; + set32[1] = (compat_sigset_word)(set64[0] >> 32); +} + +static inline void sigset32_to_sigset(compat_sigset_word *set32, + unsigned long *set64) +{ + set64[0] = (unsigned long) set32[0] | ((unsigned long) set32[1] << 32); +} + int copy_siginfo_to_user32(compat_siginfo_t __user *to, const siginfo_t *from) { int err; @@ -303,10 +316,12 @@ { struct pt_regs *regs = task_pt_regs(current); sigframe32 __user *frame = (sigframe32 __user *)regs->gprs[15]; + compat_sigset_t cset; sigset_t set; - if (__copy_from_user(&set.sig, &frame->sc.oldmask, _SIGMASK_COPY_SIZE32)) + if (__copy_from_user(&cset.sig, &frame->sc.oldmask, _SIGMASK_COPY_SIZE32)) goto badframe; + sigset32_to_sigset(cset.sig, set.sig); set_current_blocked(&set); if (restore_sigregs32(regs, &frame->sregs)) goto badframe; @@ -323,10 +338,12 @@ { struct pt_regs *regs = task_pt_regs(current); rt_sigframe32 __user *frame = (rt_sigframe32 __user *)regs->gprs[15]; + compat_sigset_t cset; sigset_t set; - if (__copy_from_user(&set, &frame->uc.uc_sigmask, sizeof(set))) + if (__copy_from_user(&cset, &frame->uc.uc_sigmask, sizeof(cset))) goto badframe; + sigset32_to_sigset(cset.sig, set.sig); set_current_blocked(&set); if (compat_restore_altstack(&frame->uc.uc_stack)) goto badframe; @@ -397,7 +414,7 @@ return -EFAULT; /* Create struct sigcontext32 on the signal stack */ - memcpy(&sc.oldmask, &set->sig, _SIGMASK_COPY_SIZE32); + sigset_to_sigset32(set->sig, sc.oldmask); sc.sregs = (__u32)(unsigned long __force) &frame->sregs; if (__copy_to_user(&frame->sc, &sc, sizeof(frame->sc))) return -EFAULT; @@ -458,6 +475,7 @@ static int setup_rt_frame32(struct ksignal *ksig, sigset_t *set, struct pt_regs *regs) { + compat_sigset_t cset; rt_sigframe32 __user *frame; unsigned long restorer; size_t frame_size; @@ -505,11 +523,12 @@ store_sigregs(); /* Create ucontext on the signal stack. */ + sigset_to_sigset32(set->sig, cset.sig); if (__put_user(uc_flags, &frame->uc.uc_flags) || __put_user(0, &frame->uc.uc_link) || __compat_save_altstack(&frame->uc.uc_stack, regs->gprs[15]) || save_sigregs32(regs, &frame->uc.uc_mcontext) || - __copy_to_user(&frame->uc.uc_sigmask, set, sizeof(*set)) || + __copy_to_user(&frame->uc.uc_sigmask, &cset, sizeof(cset)) || save_sigregs_ext32(regs, &frame->uc.uc_mcontext_ext)) return -EFAULT; --- linux-raspi2-4.2.0.orig/arch/s390/kernel/setup.c +++ linux-raspi2-4.2.0/arch/s390/kernel/setup.c @@ -688,7 +688,7 @@ /* * Setup hardware capabilities. */ -static void __init setup_hwcaps(void) +static int __init setup_hwcaps(void) { static const int stfl_bits[6] = { 0, 2, 7, 17, 19, 21 }; struct cpuid cpu_id; @@ -754,9 +754,11 @@ elf_hwcap |= HWCAP_S390_TE; /* - * Vector extension HWCAP_S390_VXRS is bit 11. + * Vector extension HWCAP_S390_VXRS is bit 11. The Vector extension + * can be disabled with the "novx" parameter. Use MACHINE_HAS_VX + * instead of facility bit 129. */ - if (test_facility(129)) + if (MACHINE_HAS_VX) elf_hwcap |= HWCAP_S390_VXRS; get_cpu_id(&cpu_id); add_device_randomness(&cpu_id, sizeof(cpu_id)); @@ -793,7 +795,9 @@ strcpy(elf_platform, "z13"); break; } + return 0; } +arch_initcall(setup_hwcaps); /* * Add system information as device randomness @@ -881,11 +885,6 @@ cpu_init(); /* - * Setup capabilities (ELF_HWCAP & ELF_PLATFORM). - */ - setup_hwcaps(); - - /* * Create kernel page tables and switch to virtual addressing. */ paging_init(); --- linux-raspi2-4.2.0.orig/arch/s390/kvm/interrupt.c +++ linux-raspi2-4.2.0/arch/s390/kvm/interrupt.c @@ -1051,8 +1051,7 @@ src_id, 0, 2); /* sending vcpu invalid */ - if (src_id >= KVM_MAX_VCPUS || - kvm_get_vcpu(vcpu->kvm, src_id) == NULL) + if (kvm_get_vcpu_by_id(vcpu->kvm, src_id) == NULL) return -EINVAL; if (sclp.has_sigpif) @@ -1131,6 +1130,10 @@ trace_kvm_s390_inject_vcpu(vcpu->vcpu_id, KVM_S390_INT_EMERGENCY, irq->u.emerg.code, 0, 2); + /* sending vcpu invalid */ + if (kvm_get_vcpu_by_id(vcpu->kvm, irq->u.emerg.code) == NULL) + return -EINVAL; + set_bit(irq->u.emerg.code, li->sigp_emerg_pending); set_bit(IRQ_PEND_EXT_EMERGENCY, &li->pending_irqs); atomic_set_mask(CPUSTAT_EXT_INT, li->cpuflags); --- linux-raspi2-4.2.0.orig/arch/s390/kvm/kvm-s390.c +++ linux-raspi2-4.2.0/arch/s390/kvm/kvm-s390.c @@ -289,12 +289,16 @@ r = 0; break; case KVM_CAP_S390_VECTOR_REGISTERS: - if (MACHINE_HAS_VX) { + mutex_lock(&kvm->lock); + if (atomic_read(&kvm->online_vcpus)) { + r = -EBUSY; + } else if (MACHINE_HAS_VX) { set_kvm_facility(kvm->arch.model.fac->mask, 129); set_kvm_facility(kvm->arch.model.fac->list, 129); r = 0; } else r = -EINVAL; + mutex_unlock(&kvm->lock); break; case KVM_CAP_S390_USER_STSI: kvm->arch.user_stsi = 1; @@ -1037,7 +1041,9 @@ if (!kvm->arch.sca) goto out_err; spin_lock(&kvm_lock); - sca_offset = (sca_offset + 16) & 0x7f0; + sca_offset += 16; + if (sca_offset + sizeof(struct sca_block) > PAGE_SIZE) + sca_offset = 0; kvm->arch.sca = (struct sca_block *) ((char *) kvm->arch.sca + sca_offset); spin_unlock(&kvm_lock); --- linux-raspi2-4.2.0.orig/arch/s390/kvm/sigp.c +++ linux-raspi2-4.2.0/arch/s390/kvm/sigp.c @@ -294,12 +294,8 @@ u16 cpu_addr, u32 parameter, u64 *status_reg) { int rc; - struct kvm_vcpu *dst_vcpu; + struct kvm_vcpu *dst_vcpu = kvm_get_vcpu_by_id(vcpu->kvm, cpu_addr); - if (cpu_addr >= KVM_MAX_VCPUS) - return SIGP_CC_NOT_OPERATIONAL; - - dst_vcpu = kvm_get_vcpu(vcpu->kvm, cpu_addr); if (!dst_vcpu) return SIGP_CC_NOT_OPERATIONAL; @@ -481,7 +477,7 @@ trace_kvm_s390_handle_sigp_pei(vcpu, order_code, cpu_addr); if (order_code == SIGP_EXTERNAL_CALL) { - dest_vcpu = kvm_get_vcpu(vcpu->kvm, cpu_addr); + dest_vcpu = kvm_get_vcpu_by_id(vcpu->kvm, cpu_addr); BUG_ON(dest_vcpu == NULL); kvm_s390_vcpu_wakeup(dest_vcpu); --- linux-raspi2-4.2.0.orig/arch/s390/lib/delay.c +++ linux-raspi2-4.2.0/arch/s390/lib/delay.c @@ -26,6 +26,7 @@ */ asm volatile("0: brct %0,0b" : : "d" ((loops/2) + 1)); } +EXPORT_SYMBOL(__delay); static void __udelay_disabled(unsigned long long usecs) { --- linux-raspi2-4.2.0.orig/arch/sh/boot/compressed/misc.c +++ linux-raspi2-4.2.0/arch/sh/boot/compressed/misc.c @@ -132,7 +132,7 @@ puts("Uncompressing Linux... "); cache_control(CACHE_ENABLE); - decompress(input_data, input_len, NULL, NULL, output, NULL, error); + __decompress(input_data, input_len, NULL, NULL, output, 0, NULL, error); cache_control(CACHE_DISABLE); puts("Ok, booting the kernel.\n"); } --- linux-raspi2-4.2.0.orig/arch/sparc/crypto/aes_glue.c +++ linux-raspi2-4.2.0/arch/sparc/crypto/aes_glue.c @@ -433,6 +433,7 @@ .blkcipher = { .min_keysize = AES_MIN_KEY_SIZE, .max_keysize = AES_MAX_KEY_SIZE, + .ivsize = AES_BLOCK_SIZE, .setkey = aes_set_key, .encrypt = cbc_encrypt, .decrypt = cbc_decrypt, @@ -452,6 +453,7 @@ .blkcipher = { .min_keysize = AES_MIN_KEY_SIZE, .max_keysize = AES_MAX_KEY_SIZE, + .ivsize = AES_BLOCK_SIZE, .setkey = aes_set_key, .encrypt = ctr_crypt, .decrypt = ctr_crypt, --- linux-raspi2-4.2.0.orig/arch/sparc/crypto/camellia_glue.c +++ linux-raspi2-4.2.0/arch/sparc/crypto/camellia_glue.c @@ -274,6 +274,7 @@ .blkcipher = { .min_keysize = CAMELLIA_MIN_KEY_SIZE, .max_keysize = CAMELLIA_MAX_KEY_SIZE, + .ivsize = CAMELLIA_BLOCK_SIZE, .setkey = camellia_set_key, .encrypt = cbc_encrypt, .decrypt = cbc_decrypt, --- linux-raspi2-4.2.0.orig/arch/sparc/crypto/des_glue.c +++ linux-raspi2-4.2.0/arch/sparc/crypto/des_glue.c @@ -429,6 +429,7 @@ .blkcipher = { .min_keysize = DES_KEY_SIZE, .max_keysize = DES_KEY_SIZE, + .ivsize = DES_BLOCK_SIZE, .setkey = des_set_key, .encrypt = cbc_encrypt, .decrypt = cbc_decrypt, @@ -485,6 +486,7 @@ .blkcipher = { .min_keysize = DES3_EDE_KEY_SIZE, .max_keysize = DES3_EDE_KEY_SIZE, + .ivsize = DES3_EDE_BLOCK_SIZE, .setkey = des3_ede_set_key, .encrypt = cbc3_encrypt, .decrypt = cbc3_decrypt, --- linux-raspi2-4.2.0.orig/arch/sparc/kernel/pci.c +++ linux-raspi2-4.2.0/arch/sparc/kernel/pci.c @@ -185,8 +185,10 @@ if (addr0 & 0x02000000) { flags = IORESOURCE_MEM | PCI_BASE_ADDRESS_SPACE_MEMORY; - flags |= (addr0 >> 22) & PCI_BASE_ADDRESS_MEM_TYPE_64; flags |= (addr0 >> 28) & PCI_BASE_ADDRESS_MEM_TYPE_1M; + if (addr0 & 0x01000000) + flags |= IORESOURCE_MEM_64 + | PCI_BASE_ADDRESS_MEM_TYPE_64; if (addr0 & 0x40000000) flags |= IORESOURCE_PREFETCH | PCI_BASE_ADDRESS_MEM_PREFETCH; @@ -660,6 +662,9 @@ pbm->io_space.start); pci_add_resource_offset(&resources, &pbm->mem_space, pbm->mem_space.start); + if (pbm->mem64_space.flags) + pci_add_resource_offset(&resources, &pbm->mem64_space, + pbm->mem_space.start); pbm->busn.start = pbm->pci_first_busno; pbm->busn.end = pbm->pci_last_busno; pbm->busn.flags = IORESOURCE_BUS; --- linux-raspi2-4.2.0.orig/arch/sparc/kernel/pci_common.c +++ linux-raspi2-4.2.0/arch/sparc/kernel/pci_common.c @@ -406,6 +406,7 @@ } num_pbm_ranges = i / sizeof(*pbm_ranges); + memset(&pbm->mem64_space, 0, sizeof(struct resource)); for (i = 0; i < num_pbm_ranges; i++) { const struct linux_prom_pci_ranges *pr = &pbm_ranges[i]; @@ -451,7 +452,12 @@ break; case 3: - /* XXX 64-bit MEM handling XXX */ + /* 64-bit MEM handling */ + pbm->mem64_space.start = a; + pbm->mem64_space.end = a + size - 1UL; + pbm->mem64_space.flags = IORESOURCE_MEM; + saw_mem = 1; + break; default: break; @@ -465,15 +471,22 @@ prom_halt(); } - printk("%s: PCI IO[%llx] MEM[%llx]\n", + printk("%s: PCI IO[%llx] MEM[%llx]", pbm->name, pbm->io_space.start, pbm->mem_space.start); + if (pbm->mem64_space.flags) + printk(" MEM64[%llx]", + pbm->mem64_space.start); + printk("\n"); pbm->io_space.name = pbm->mem_space.name = pbm->name; + pbm->mem64_space.name = pbm->name; request_resource(&ioport_resource, &pbm->io_space); request_resource(&iomem_resource, &pbm->mem_space); + if (pbm->mem64_space.flags) + request_resource(&iomem_resource, &pbm->mem64_space); pci_register_legacy_regions(&pbm->io_space, &pbm->mem_space); --- linux-raspi2-4.2.0.orig/arch/sparc/kernel/pci_impl.h +++ linux-raspi2-4.2.0/arch/sparc/kernel/pci_impl.h @@ -97,6 +97,7 @@ /* PBM I/O and Memory space resources. */ struct resource io_space; struct resource mem_space; + struct resource mem64_space; struct resource busn; /* Base of PCI Config space, can be per-PBM or shared. */ --- linux-raspi2-4.2.0.orig/arch/tile/kernel/usb.c +++ linux-raspi2-4.2.0/arch/tile/kernel/usb.c @@ -22,6 +22,7 @@ #include #include #include +#include #include static u64 ehci_dmamask = DMA_BIT_MASK(32); --- linux-raspi2-4.2.0.orig/arch/um/kernel/trap.c +++ linux-raspi2-4.2.0/arch/um/kernel/trap.c @@ -220,7 +220,7 @@ show_regs(container_of(regs, struct pt_regs, regs)); panic("Segfault with no mm"); } - else if (!is_user && address < TASK_SIZE) { + else if (!is_user && address > PAGE_SIZE && address < TASK_SIZE) { show_regs(container_of(regs, struct pt_regs, regs)); panic("Kernel tried to access user memory at addr 0x%lx, ip 0x%lx", address, ip); --- linux-raspi2-4.2.0.orig/arch/unicore32/boot/compressed/misc.c +++ linux-raspi2-4.2.0/arch/unicore32/boot/compressed/misc.c @@ -119,8 +119,8 @@ output_ptr = get_unaligned_le32(tmp); arch_decomp_puts("Uncompressing Linux..."); - decompress(input_data, input_data_end - input_data, NULL, NULL, - output_data, NULL, error); + __decompress(input_data, input_data_end - input_data, NULL, NULL, + output_data, 0, NULL, error); arch_decomp_puts(" done, booting the kernel.\n"); return output_ptr; } --- linux-raspi2-4.2.0.orig/arch/x86/Kconfig +++ linux-raspi2-4.2.0/arch/x86/Kconfig @@ -133,7 +133,7 @@ select HAVE_PERF_USER_STACK_DUMP select HAVE_REGS_AND_STACK_ACCESS_API select HAVE_SYSCALL_TRACEPOINTS - select HAVE_UID16 if X86_32 + select HAVE_UID16 if X86_32 || IA32_EMULATION select HAVE_UNSTABLE_SCHED_CLOCK select HAVE_USER_RETURN_NOTIFIER select IRQ_FORCED_THREADING @@ -1002,19 +1002,42 @@ def_bool y depends on X86_MCE_INTEL -config VM86 - bool "Enable VM86 support" if EXPERT - default y +config X86_LEGACY_VM86 + bool "Legacy VM86 support" + default n depends on X86_32 ---help--- - This option is required by programs like DOSEMU to run - 16-bit real mode legacy code on x86 processors. It also may - be needed by software like XFree86 to initialize some video - cards via BIOS. Disabling this option saves about 6K. + This option allows user programs to put the CPU into V8086 + mode, which is an 80286-era approximation of 16-bit real mode. + + Some very old versions of X and/or vbetool require this option + for user mode setting. Similarly, DOSEMU will use it if + available to accelerate real mode DOS programs. However, any + recent version of DOSEMU, X, or vbetool should be fully + functional even without kernel VM86 support, as they will all + fall back to software emulation. Nevertheless, if you are using + a 16-bit DOS program where 16-bit performance matters, vm86 + mode might be faster than emulation and you might want to + enable this option. + + Note that any app that works on a 64-bit kernel is unlikely to + need this option, as 64-bit kernels don't, and can't, support + V8086 mode. This option is also unrelated to 16-bit protected + mode and is not needed to run most 16-bit programs under Wine. + + Enabling this option increases the complexity of the kernel + and slows down exception handling a tiny bit. + + If unsure, say N here. + +config VM86 + bool + default X86_LEGACY_VM86 config X86_16BIT bool "Enable support for 16-bit segments" if EXPERT default y + depends on MODIFY_LDT_SYSCALL ---help--- This option is required by programs like Wine to run 16-bit protected mode legacy code on x86 processors. Disabling @@ -1509,6 +1532,7 @@ config MATH_EMULATION bool + depends on MODIFY_LDT_SYSCALL prompt "Math emulation" if X86_32 ---help--- Linux can emulate a math coprocessor (used for floating point @@ -2053,6 +2077,22 @@ This is used to work around broken boot loaders. This should be set to 'N' under normal conditions. +config MODIFY_LDT_SYSCALL + bool "Enable the LDT (local descriptor table)" if EXPERT + default y + ---help--- + Linux can allow user programs to install a per-process x86 + Local Descriptor Table (LDT) using the modify_ldt(2) system + call. This is required to run 16-bit or segmented code such as + DOSEMU or some Wine programs. It is also used by some very old + threading libraries. + + Enabling this feature adds a small amount of overhead to + context switches and increases the low-level kernel attack + surface. Disabling it removes the modify_ldt(2) system call. + + Saying 'N' here may make sense for embedded or server kernels. + source "kernel/livepatch/Kconfig" endmenu @@ -2522,7 +2562,7 @@ depends on X86_64 select BINFMT_ELF select COMPAT_BINFMT_ELF - select HAVE_UID16 + select ARCH_WANT_OLD_COMPAT_IPC ---help--- Include code to run legacy 32-bit programs under a 64-bit kernel. You should likely turn this on, unless you're @@ -2536,7 +2576,7 @@ config X86_X32 bool "x32 ABI for 64-bit mode" - depends on X86_64 && IA32_EMULATION + depends on X86_64 ---help--- Include code to run binaries for the x32 native 32-bit ABI for 64-bit processors. An x32 process gets access to the @@ -2550,7 +2590,6 @@ config COMPAT def_bool y depends on IA32_EMULATION || X86_X32 - select ARCH_WANT_OLD_COMPAT_IPC if COMPAT config COMPAT_FOR_U64_ALIGNMENT @@ -2588,6 +2627,8 @@ source "drivers/Kconfig" +source "ubuntu/Kconfig" + source "drivers/firmware/Kconfig" source "fs/Kconfig" --- linux-raspi2-4.2.0.orig/arch/x86/boot/compressed/eboot.c +++ linux-raspi2-4.2.0/arch/x86/boot/compressed/eboot.c @@ -667,6 +667,7 @@ bool conout_found = false; void *dummy = NULL; u32 h = handles[i]; + u32 current_fb_base; status = efi_call_early(handle_protocol, h, proto, (void **)&gop32); @@ -678,7 +679,7 @@ if (status == EFI_SUCCESS) conout_found = true; - status = __gop_query32(gop32, &info, &size, &fb_base); + status = __gop_query32(gop32, &info, &size, ¤t_fb_base); if (status == EFI_SUCCESS && (!first_gop || conout_found)) { /* * Systems that use the UEFI Console Splitter may @@ -692,6 +693,7 @@ pixel_format = info->pixel_format; pixel_info = info->pixel_information; pixels_per_scan_line = info->pixels_per_scan_line; + fb_base = current_fb_base; /* * Once we've found a GOP supporting ConOut, @@ -770,6 +772,7 @@ bool conout_found = false; void *dummy = NULL; u64 h = handles[i]; + u32 current_fb_base; status = efi_call_early(handle_protocol, h, proto, (void **)&gop64); @@ -781,7 +784,7 @@ if (status == EFI_SUCCESS) conout_found = true; - status = __gop_query64(gop64, &info, &size, &fb_base); + status = __gop_query64(gop64, &info, &size, ¤t_fb_base); if (status == EFI_SUCCESS && (!first_gop || conout_found)) { /* * Systems that use the UEFI Console Splitter may @@ -795,6 +798,7 @@ pixel_format = info->pixel_format; pixel_info = info->pixel_information; pixels_per_scan_line = info->pixels_per_scan_line; + fb_base = current_fb_base; /* * Once we've found a GOP supporting ConOut, --- linux-raspi2-4.2.0.orig/arch/x86/boot/compressed/misc.c +++ linux-raspi2-4.2.0/arch/x86/boot/compressed/misc.c @@ -424,7 +424,8 @@ #endif debug_putstr("\nDecompressing Linux... "); - decompress(input_data, input_len, NULL, NULL, output, NULL, error); + __decompress(input_data, input_len, NULL, NULL, output, output_len, + NULL, error); parse_elf(output); /* * 32-bit always performs relocations. 64-bit relocations are only --- linux-raspi2-4.2.0.orig/arch/x86/crypto/camellia_aesni_avx_glue.c +++ linux-raspi2-4.2.0/arch/x86/crypto/camellia_aesni_avx_glue.c @@ -554,6 +554,11 @@ { const char *feature_name; + if (!cpu_has_avx || !cpu_has_aes || !cpu_has_osxsave) { + pr_info("AVX or AES-NI instructions are not detected.\n"); + return -ENODEV; + } + if (!cpu_has_xfeatures(XSTATE_SSE | XSTATE_YMM, &feature_name)) { pr_info("CPU feature '%s' is not supported.\n", feature_name); return -ENODEV; --- linux-raspi2-4.2.0.orig/arch/x86/crypto/crc32c-pcl-intel-asm_64.S +++ linux-raspi2-4.2.0/arch/x86/crypto/crc32c-pcl-intel-asm_64.S @@ -330,7 +330,7 @@ ## PCLMULQDQ tables ## Table is 128 entries x 2 words (8 bytes) each ################################################################ -.section .rotata, "a", %progbits +.section .rodata, "a", %progbits .align 8 K_table: .long 0x493c7d27, 0x00000001 --- linux-raspi2-4.2.0.orig/arch/x86/crypto/ghash-clmulni-intel_glue.c +++ linux-raspi2-4.2.0/arch/x86/crypto/ghash-clmulni-intel_glue.c @@ -294,6 +294,7 @@ .cra_name = "ghash", .cra_driver_name = "ghash-clmulni", .cra_priority = 400, + .cra_ctxsize = sizeof(struct ghash_async_ctx), .cra_flags = CRYPTO_ALG_TYPE_AHASH | CRYPTO_ALG_ASYNC, .cra_blocksize = GHASH_BLOCK_SIZE, .cra_type = &crypto_ahash_type, --- linux-raspi2-4.2.0.orig/arch/x86/entry/entry_32.S +++ linux-raspi2-4.2.0/arch/x86/entry/entry_32.S @@ -525,34 +525,12 @@ work_notifysig: # deal with pending signals and # notify-resume requests -#ifdef CONFIG_VM86 - testl $X86_EFLAGS_VM, PT_EFLAGS(%esp) - movl %esp, %eax - jnz work_notifysig_v86 # returning to kernel-space or - # vm86-space -1: -#else - movl %esp, %eax -#endif TRACE_IRQS_ON ENABLE_INTERRUPTS(CLBR_NONE) - movb PT_CS(%esp), %bl - andb $SEGMENT_RPL_MASK, %bl - cmpb $USER_RPL, %bl - jb resume_kernel + movl %esp, %eax xorl %edx, %edx call do_notify_resume jmp resume_userspace - -#ifdef CONFIG_VM86 - ALIGN -work_notifysig_v86: - pushl %ecx # save ti_flags for do_notify_resume - call save_v86_state # %eax contains pt_regs pointer - popl %ecx - movl %eax, %esp - jmp 1b -#endif END(work_pending) # perform syscall exit tracing --- linux-raspi2-4.2.0.orig/arch/x86/entry/entry_64.S +++ linux-raspi2-4.2.0/arch/x86/entry/entry_64.S @@ -1219,7 +1219,18 @@ /* Runs on exception stack */ ENTRY(nmi) + /* + * Fix up the exception frame if we're on Xen. + * PARAVIRT_ADJUST_EXCEPTION_FRAME is guaranteed to push at most + * one value to the stack on native, so it may clobber the rdx + * scratch slot, but it won't clobber any of the important + * slots past it. + * + * Xen is a different story, because the Xen frame itself overlaps + * the "NMI executing" variable. + */ PARAVIRT_ADJUST_EXCEPTION_FRAME + /* * We allow breakpoints in NMIs. If a breakpoint occurs, then * the iretq it performs will take us out of NMI context. @@ -1270,9 +1281,12 @@ * we don't want to enable interrupts, because then we'll end * up in an awkward situation in which IRQs are on but NMIs * are off. + * + * We also must not push anything to the stack before switching + * stacks lest we corrupt the "NMI executing" variable. */ - SWAPGS + SWAPGS_UNSAFE_STACK cld movq %rsp, %rdx movq PER_CPU_VAR(cpu_current_top_of_stack), %rsp --- linux-raspi2-4.2.0.orig/arch/x86/include/asm/i8259.h +++ linux-raspi2-4.2.0/arch/x86/include/asm/i8259.h @@ -60,6 +60,7 @@ void (*mask_all)(void); void (*restore_mask)(void); void (*init)(int auto_eoi); + int (*probe)(void); int (*irq_pending)(unsigned int irq); void (*make_irq)(unsigned int irq); }; --- linux-raspi2-4.2.0.orig/arch/x86/include/asm/irq_vectors.h +++ linux-raspi2-4.2.0/arch/x86/include/asm/irq_vectors.h @@ -117,16 +117,6 @@ #define FPU_IRQ 13 -#define FIRST_VM86_IRQ 3 -#define LAST_VM86_IRQ 15 - -#ifndef __ASSEMBLY__ -static inline int invalid_vm86_irq(int irq) -{ - return irq < FIRST_VM86_IRQ || irq > LAST_VM86_IRQ; -} -#endif - /* * Size the maximum number of interrupts. * --- linux-raspi2-4.2.0.orig/arch/x86/include/asm/kvm_emulate.h +++ linux-raspi2-4.2.0/arch/x86/include/asm/kvm_emulate.h @@ -112,6 +112,16 @@ struct x86_exception *fault); /* + * read_phys: Read bytes of standard (non-emulated/special) memory. + * Used for descriptor reading. + * @addr: [IN ] Physical address from which to read. + * @val: [OUT] Value read from memory. + * @bytes: [IN ] Number of bytes to read from memory. + */ + int (*read_phys)(struct x86_emulate_ctxt *ctxt, unsigned long addr, + void *val, unsigned int bytes); + + /* * write_std: Write bytes of standard (non-emulated/special) memory. * Used for descriptor writing. * @addr: [IN ] Linear address to which to write. --- linux-raspi2-4.2.0.orig/arch/x86/include/asm/math_emu.h +++ linux-raspi2-4.2.0/arch/x86/include/asm/math_emu.h @@ -2,7 +2,6 @@ #define _ASM_X86_MATH_EMU_H #include -#include /* This structure matches the layout of the data saved to the stack following a device-not-present interrupt, part of it saved @@ -10,9 +9,6 @@ */ struct math_emu_info { long ___orig_eip; - union { - struct pt_regs *regs; - struct kernel_vm86_regs *vm86; - }; + struct pt_regs *regs; }; #endif /* _ASM_X86_MATH_EMU_H */ --- linux-raspi2-4.2.0.orig/arch/x86/include/asm/mmu.h +++ linux-raspi2-4.2.0/arch/x86/include/asm/mmu.h @@ -9,7 +9,9 @@ * we put the segment information here. */ typedef struct { +#ifdef CONFIG_MODIFY_LDT_SYSCALL struct ldt_struct *ldt; +#endif #ifdef CONFIG_X86_64 /* True if mm supports a task running in 32 bit compatibility mode. */ --- linux-raspi2-4.2.0.orig/arch/x86/include/asm/mmu_context.h +++ linux-raspi2-4.2.0/arch/x86/include/asm/mmu_context.h @@ -33,6 +33,7 @@ static inline void load_mm_cr4(struct mm_struct *mm) {} #endif +#ifdef CONFIG_MODIFY_LDT_SYSCALL /* * ldt_structs can be allocated, used, and freed, but they are never * modified while live. @@ -48,8 +49,23 @@ int size; }; +/* + * Used for LDT copy/destruction. + */ +int init_new_context(struct task_struct *tsk, struct mm_struct *mm); +void destroy_context(struct mm_struct *mm); +#else /* CONFIG_MODIFY_LDT_SYSCALL */ +static inline int init_new_context(struct task_struct *tsk, + struct mm_struct *mm) +{ + return 0; +} +static inline void destroy_context(struct mm_struct *mm) {} +#endif + static inline void load_mm_ldt(struct mm_struct *mm) { +#ifdef CONFIG_MODIFY_LDT_SYSCALL struct ldt_struct *ldt; /* lockless_dereference synchronizes with smp_store_release */ @@ -73,17 +89,13 @@ set_ldt(ldt->entries, ldt->size); else clear_LDT(); +#else + clear_LDT(); +#endif DEBUG_LOCKS_WARN_ON(preemptible()); } -/* - * Used for LDT copy/destruction. - */ -int init_new_context(struct task_struct *tsk, struct mm_struct *mm); -void destroy_context(struct mm_struct *mm); - - static inline void enter_lazy_tlb(struct mm_struct *mm, struct task_struct *tsk) { #ifdef CONFIG_SMP @@ -114,6 +126,7 @@ /* Load per-mm CR4 state */ load_mm_cr4(next); +#ifdef CONFIG_MODIFY_LDT_SYSCALL /* * Load the LDT, if the LDT is different. * @@ -128,6 +141,7 @@ */ if (unlikely(prev->context.ldt != next->context.ldt)) load_mm_ldt(next); +#endif } #ifdef CONFIG_SMP else { --- linux-raspi2-4.2.0.orig/arch/x86/include/asm/mshyperv.h +++ linux-raspi2-4.2.0/arch/x86/include/asm/mshyperv.h @@ -7,6 +7,7 @@ struct ms_hyperv_info { u32 features; + u32 misc_features; u32 hints; }; @@ -20,4 +21,8 @@ void hv_setup_vmbus_irq(void (*handler)(void)); void hv_remove_vmbus_irq(void); +void hv_setup_kexec_handler(void (*handler)(void)); +void hv_remove_kexec_handler(void); +void hv_setup_crash_handler(void (*handler)(struct pt_regs *regs)); +void hv_remove_crash_handler(void); #endif --- linux-raspi2-4.2.0.orig/arch/x86/include/asm/msr-index.h +++ linux-raspi2-4.2.0/arch/x86/include/asm/msr-index.h @@ -73,6 +73,12 @@ #define MSR_LBR_CORE_FROM 0x00000040 #define MSR_LBR_CORE_TO 0x00000060 +#define MSR_LBR_INFO_0 0x00000dc0 /* ... 0xddf for _31 */ +#define LBR_INFO_MISPRED BIT_ULL(63) +#define LBR_INFO_IN_TX BIT_ULL(62) +#define LBR_INFO_ABORT BIT_ULL(61) +#define LBR_INFO_CYCLES 0xffff + #define MSR_IA32_PEBS_ENABLE 0x000003f1 #define MSR_IA32_DS_AREA 0x00000600 #define MSR_IA32_PERF_CAPABILITIES 0x00000345 @@ -311,6 +317,7 @@ /* C1E active bits in int pending message */ #define K8_INTP_C1E_ACTIVE_MASK 0x18000000 #define MSR_K8_TSEG_ADDR 0xc0010112 +#define MSR_K8_TSEG_MASK 0xc0010113 #define K8_MTRRFIXRANGE_DRAM_ENABLE 0x00040000 /* MtrrFixDramEn bit */ #define K8_MTRRFIXRANGE_DRAM_MODIFY 0x00080000 /* MtrrFixDramModEn bit */ #define K8_MTRR_RDMEM_WRMEM_MASK 0x18181818 /* Mask: RdMem|WrMem */ --- linux-raspi2-4.2.0.orig/arch/x86/include/asm/perf_event.h +++ linux-raspi2-4.2.0/arch/x86/include/asm/perf_event.h @@ -159,6 +159,13 @@ */ #define INTEL_PMC_IDX_FIXED_BTS (INTEL_PMC_IDX_FIXED + 16) +#define GLOBAL_STATUS_COND_CHG BIT_ULL(63) +#define GLOBAL_STATUS_BUFFER_OVF BIT_ULL(62) +#define GLOBAL_STATUS_UNC_OVF BIT_ULL(61) +#define GLOBAL_STATUS_ASIF BIT_ULL(60) +#define GLOBAL_STATUS_COUNTERS_FROZEN BIT_ULL(59) +#define GLOBAL_STATUS_LBRS_FROZEN BIT_ULL(58) + /* * IBS cpuid feature detection */ --- linux-raspi2-4.2.0.orig/arch/x86/include/asm/preempt.h +++ linux-raspi2-4.2.0/arch/x86/include/asm/preempt.h @@ -90,9 +90,9 @@ /* * Returns true when we need to resched and can (barring IRQ state). */ -static __always_inline bool should_resched(void) +static __always_inline bool should_resched(int preempt_offset) { - return unlikely(!raw_cpu_read_4(__preempt_count)); + return unlikely(raw_cpu_read_4(__preempt_count) == preempt_offset); } #ifdef CONFIG_PREEMPT --- linux-raspi2-4.2.0.orig/arch/x86/include/asm/processor.h +++ linux-raspi2-4.2.0/arch/x86/include/asm/processor.h @@ -6,8 +6,8 @@ /* Forward declaration, a strange C thing */ struct task_struct; struct mm_struct; +struct vm86; -#include #include #include #include @@ -400,15 +400,9 @@ unsigned long cr2; unsigned long trap_nr; unsigned long error_code; -#ifdef CONFIG_X86_32 +#ifdef CONFIG_VM86 /* Virtual 86 mode info */ - struct vm86_struct __user *vm86_info; - unsigned long screen_bitmap; - unsigned long v86flags; - unsigned long v86mask; - unsigned long saved_sp0; - unsigned int saved_fs; - unsigned int saved_gs; + struct vm86 *vm86; #endif /* IO permissions: */ unsigned long *io_bitmap_ptr; @@ -720,7 +714,6 @@ #define INIT_THREAD { \ .sp0 = TOP_OF_INIT_STACK, \ - .vm86_info = NULL, \ .sysenter_cs = __KERNEL_CS, \ .io_bitmap_ptr = NULL, \ } --- linux-raspi2-4.2.0.orig/arch/x86/include/asm/qspinlock.h +++ linux-raspi2-4.2.0/arch/x86/include/asm/qspinlock.h @@ -39,18 +39,27 @@ } #endif -#define virt_queued_spin_lock virt_queued_spin_lock - -static inline bool virt_queued_spin_lock(struct qspinlock *lock) +#ifdef CONFIG_PARAVIRT +#define virt_spin_lock virt_spin_lock +static inline bool virt_spin_lock(struct qspinlock *lock) { if (!static_cpu_has(X86_FEATURE_HYPERVISOR)) return false; - while (atomic_cmpxchg(&lock->val, 0, _Q_LOCKED_VAL) != 0) - cpu_relax(); + /* + * On hypervisors without PARAVIRT_SPINLOCKS support we fall + * back to a Test-and-Set spinlock, because fair locks have + * horrible lock 'holder' preemption issues. + */ + + do { + while (atomic_read(&lock->val) != 0) + cpu_relax(); + } while (atomic_cmpxchg(&lock->val, 0, _Q_LOCKED_VAL) != 0); return true; } +#endif /* CONFIG_PARAVIRT */ #include --- linux-raspi2-4.2.0.orig/arch/x86/include/asm/syscalls.h +++ linux-raspi2-4.2.0/arch/x86/include/asm/syscalls.h @@ -37,6 +37,7 @@ asmlinkage unsigned long sys_sigreturn(void); /* kernel/vm86_32.c */ +struct vm86_struct; asmlinkage long sys_vm86old(struct vm86_struct __user *); asmlinkage long sys_vm86(unsigned long, unsigned long); --- linux-raspi2-4.2.0.orig/arch/x86/include/asm/thread_info.h +++ linux-raspi2-4.2.0/arch/x86/include/asm/thread_info.h @@ -27,14 +27,17 @@ * Without this offset, that can result in a page fault. (We are * careful that, in this case, the value we read doesn't matter.) * - * In vm86 mode, the hardware frame is much longer still, but we neither - * access the extra members from NMI context, nor do we write such a - * frame at sp0 at all. + * In vm86 mode, the hardware frame is much longer still, so add 16 + * bytes to make room for the real-mode segments. * * x86_64 has a fixed-length stack frame. */ #ifdef CONFIG_X86_32 -# define TOP_OF_KERNEL_STACK_PADDING 8 +# ifdef CONFIG_VM86 +# define TOP_OF_KERNEL_STACK_PADDING 16 +# else +# define TOP_OF_KERNEL_STACK_PADDING 8 +# endif #else # define TOP_OF_KERNEL_STACK_PADDING 0 #endif --- linux-raspi2-4.2.0.orig/arch/x86/include/asm/tsc.h +++ linux-raspi2-4.2.0/arch/x86/include/asm/tsc.h @@ -51,6 +51,7 @@ extern int check_tsc_unstable(void); extern int check_tsc_disabled(void); extern unsigned long native_calibrate_tsc(void); +extern unsigned long long native_sched_clock_from_tsc(u64 tsc); extern int tsc_clocksource_reliable; --- linux-raspi2-4.2.0.orig/arch/x86/include/asm/vm86.h +++ linux-raspi2-4.2.0/arch/x86/include/asm/vm86.h @@ -1,7 +1,6 @@ #ifndef _ASM_X86_VM86_H #define _ASM_X86_VM86_H - #include #include @@ -28,43 +27,49 @@ unsigned short gs, __gsh; }; -struct kernel_vm86_struct { - struct kernel_vm86_regs regs; -/* - * the below part remains on the kernel stack while we are in VM86 mode. - * 'tss.esp0' then contains the address of VM86_TSS_ESP0 below, and when we - * get forced back from VM86, the CPU and "SAVE_ALL" will restore the above - * 'struct kernel_vm86_regs' with the then actual values. - * Therefore, pt_regs in fact points to a complete 'kernel_vm86_struct' - * in kernelspace, hence we need not reget the data from userspace. - */ -#define VM86_TSS_ESP0 flags +struct vm86 { + struct vm86plus_struct __user *user_vm86; + struct pt_regs regs32; + unsigned long veflags; + unsigned long veflags_mask; + unsigned long saved_sp0; + unsigned long flags; unsigned long screen_bitmap; unsigned long cpu_type; struct revectored_struct int_revectored; struct revectored_struct int21_revectored; struct vm86plus_info_struct vm86plus; - struct pt_regs *regs32; /* here we save the pointer to the old regs */ -/* - * The below is not part of the structure, but the stack layout continues - * this way. In front of 'return-eip' may be some data, depending on - * compilation, so we don't rely on this and save the pointer to 'oldregs' - * in 'regs32' above. - * However, with GCC-2.7.2 and the current CFLAGS you see exactly this: - - long return-eip; from call to vm86() - struct pt_regs oldregs; user space registers as saved by syscall - */ }; #ifdef CONFIG_VM86 void handle_vm86_fault(struct kernel_vm86_regs *, long); int handle_vm86_trap(struct kernel_vm86_regs *, long, int); -struct pt_regs *save_v86_state(struct kernel_vm86_regs *); +void save_v86_state(struct kernel_vm86_regs *, int); struct task_struct; + +#define free_vm86(t) do { \ + struct thread_struct *__t = (t); \ + if (__t->vm86 != NULL) { \ + kfree(__t->vm86); \ + __t->vm86 = NULL; \ + } \ +} while (0) + +/* + * Support for VM86 programs to request interrupts for + * real mode hardware drivers: + */ +#define FIRST_VM86_IRQ 3 +#define LAST_VM86_IRQ 15 + +static inline int invalid_vm86_irq(int irq) +{ + return irq < FIRST_VM86_IRQ || irq > LAST_VM86_IRQ; +} + void release_vm86_irqs(struct task_struct *); #else @@ -77,6 +82,10 @@ return 0; } +static inline void save_v86_state(struct kernel_vm86_regs *a, int b) { } + +#define free_vm86(t) do { } while(0) + #endif /* CONFIG_VM86 */ #endif /* _ASM_X86_VM86_H */ --- linux-raspi2-4.2.0.orig/arch/x86/include/uapi/asm/hyperv.h +++ linux-raspi2-4.2.0/arch/x86/include/uapi/asm/hyperv.h @@ -27,6 +27,8 @@ #define HV_X64_MSR_VP_RUNTIME_AVAILABLE (1 << 0) /* Partition Reference Counter (HV_X64_MSR_TIME_REF_COUNT) available*/ #define HV_X64_MSR_TIME_REF_COUNT_AVAILABLE (1 << 1) +/* Partition reference TSC MSR is available */ +#define HV_X64_MSR_REFERENCE_TSC_AVAILABLE (1 << 9) /* A partition's reference time stamp counter (TSC) page */ #define HV_X64_MSR_REFERENCE_TSC 0x40000021 --- linux-raspi2-4.2.0.orig/arch/x86/kernel/Makefile +++ linux-raspi2-4.2.0/arch/x86/kernel/Makefile @@ -24,7 +24,8 @@ obj-y := process_$(BITS).o signal.o obj-y += traps.o irq.o irq_$(BITS).o dumpstack_$(BITS).o -obj-y += time.o ioport.o ldt.o dumpstack.o nmi.o +obj-y += time.o ioport.o dumpstack.o nmi.o +obj-$(CONFIG_MODIFY_LDT_SYSCALL) += ldt.o obj-y += setup.o x86_init.o i8259.o irqinit.o jump_label.o obj-$(CONFIG_IRQ_WORK) += irq_work.o obj-y += probe_roms.o --- linux-raspi2-4.2.0.orig/arch/x86/kernel/acpi/boot.c +++ linux-raspi2-4.2.0/arch/x86/kernel/acpi/boot.c @@ -445,6 +445,7 @@ polarity = acpi_sci_flags & ACPI_MADT_POLARITY_MASK; mp_override_legacy_irq(bus_irq, polarity, trigger, gsi); + acpi_penalize_sci_irq(bus_irq, trigger, polarity); /* * stash over-ride to indicate we've been here --- linux-raspi2-4.2.0.orig/arch/x86/kernel/alternative.c +++ linux-raspi2-4.2.0/arch/x86/kernel/alternative.c @@ -338,10 +338,15 @@ static void __init_or_module optimize_nops(struct alt_instr *a, u8 *instr) { + unsigned long flags; + if (instr[0] != 0x90) return; + local_irq_save(flags); add_nops(instr + (a->instrlen - a->padlen), a->padlen); + sync_core(); + local_irq_restore(flags); DUMP_BYTES(instr, a->instrlen, "%p: [%d:%d) optimized NOPs: ", instr, a->instrlen - a->padlen, a->padlen); --- linux-raspi2-4.2.0.orig/arch/x86/kernel/apic/apic.c +++ linux-raspi2-4.2.0/arch/x86/kernel/apic/apic.c @@ -336,6 +336,13 @@ apic_write(APIC_LVTT, lvtt_value); if (lvtt_value & APIC_LVT_TIMER_TSCDEADLINE) { + /* + * See Intel SDM: TSC-Deadline Mode chapter. In xAPIC mode, + * writing to the APIC LVTT and TSC_DEADLINE MSR isn't serialized. + * According to Intel, MFENCE can do the serialization here. + */ + asm volatile("mfence" : : : "memory"); + printk_once(KERN_DEBUG "TSC deadline timer enabled\n"); return; } --- linux-raspi2-4.2.0.orig/arch/x86/kernel/apic/io_apic.c +++ linux-raspi2-4.2.0/arch/x86/kernel/apic/io_apic.c @@ -2522,6 +2522,7 @@ int pin, ioapic, irq, irq_entry; const struct cpumask *mask; struct irq_data *idata; + struct irq_chip *chip; if (skip_ioapic_setup == 1) return; @@ -2545,9 +2546,11 @@ else mask = apic->target_cpus(); - irq_set_affinity(irq, mask); + chip = irq_data_get_irq_chip(idata); + /* Might be lapic_chip for irq 0 */ + if (chip->irq_set_affinity) + chip->irq_set_affinity(idata, mask, false); } - } #endif @@ -2906,6 +2909,7 @@ struct irq_data *irq_data; struct mp_chip_data *data; struct irq_alloc_info *info = arg; + unsigned long flags; if (!info || nr_irqs > 1) return -EINVAL; @@ -2938,11 +2942,14 @@ cfg = irqd_cfg(irq_data); add_pin_to_irq_node(data, ioapic_alloc_attr_node(info), ioapic, pin); + + local_irq_save(flags); if (info->ioapic_entry) mp_setup_entry(cfg, data, info->ioapic_entry); mp_register_handler(virq, data->trigger); if (virq < nr_legacy_irqs()) legacy_pic->mask(virq); + local_irq_restore(flags); apic_printk(APIC_VERBOSE, KERN_DEBUG "IOAPIC[%d]: Set routing entry (%d-%d -> 0x%x -> IRQ %d Mode:%i Active:%i Dest:%d)\n", --- linux-raspi2-4.2.0.orig/arch/x86/kernel/apic/vector.c +++ linux-raspi2-4.2.0/arch/x86/kernel/apic/vector.c @@ -360,7 +360,11 @@ if (nr < nr_irqs) nr_irqs = nr; - return nr_legacy_irqs(); + /* + * We don't know if PIC is present at this point so we need to do + * probe() to get the right number of legacy IRQs. + */ + return legacy_pic->probe(); } #ifdef CONFIG_X86_IO_APIC --- linux-raspi2-4.2.0.orig/arch/x86/kernel/cpu/common.c +++ linux-raspi2-4.2.0/arch/x86/kernel/cpu/common.c @@ -272,10 +272,9 @@ static __always_inline void setup_smap(struct cpuinfo_x86 *c) { - unsigned long eflags; + unsigned long eflags = native_save_fl(); /* This should have been cleared long ago */ - raw_local_save_flags(eflags); BUG_ON(eflags & X86_EFLAGS_AC); if (cpu_has(c, X86_FEATURE_SMAP)) { --- linux-raspi2-4.2.0.orig/arch/x86/kernel/cpu/mcheck/mce_intel.c +++ linux-raspi2-4.2.0/arch/x86/kernel/cpu/mcheck/mce_intel.c @@ -146,6 +146,27 @@ per_cpu(cmci_storm_state, cpu) = CMCI_STORM_NONE; } +static void cmci_toggle_interrupt_mode(bool on) +{ + unsigned long flags, *owned; + int bank; + u64 val; + + raw_spin_lock_irqsave(&cmci_discover_lock, flags); + owned = this_cpu_ptr(mce_banks_owned); + for_each_set_bit(bank, owned, MAX_NR_BANKS) { + rdmsrl(MSR_IA32_MCx_CTL2(bank), val); + + if (on) + val |= MCI_CTL2_CMCI_EN; + else + val &= ~MCI_CTL2_CMCI_EN; + + wrmsrl(MSR_IA32_MCx_CTL2(bank), val); + } + raw_spin_unlock_irqrestore(&cmci_discover_lock, flags); +} + unsigned long cmci_intel_adjust_timer(unsigned long interval) { if ((this_cpu_read(cmci_backoff_cnt) > 0) && @@ -175,7 +196,7 @@ */ if (!atomic_read(&cmci_storm_on_cpus)) { __this_cpu_write(cmci_storm_state, CMCI_STORM_NONE); - cmci_reenable(); + cmci_toggle_interrupt_mode(true); cmci_recheck(); } return CMCI_POLL_INTERVAL; @@ -186,22 +207,6 @@ } } -static void cmci_storm_disable_banks(void) -{ - unsigned long flags, *owned; - int bank; - u64 val; - - raw_spin_lock_irqsave(&cmci_discover_lock, flags); - owned = this_cpu_ptr(mce_banks_owned); - for_each_set_bit(bank, owned, MAX_NR_BANKS) { - rdmsrl(MSR_IA32_MCx_CTL2(bank), val); - val &= ~MCI_CTL2_CMCI_EN; - wrmsrl(MSR_IA32_MCx_CTL2(bank), val); - } - raw_spin_unlock_irqrestore(&cmci_discover_lock, flags); -} - static bool cmci_storm_detect(void) { unsigned int cnt = __this_cpu_read(cmci_storm_cnt); @@ -223,7 +228,7 @@ if (cnt <= CMCI_STORM_THRESHOLD) return false; - cmci_storm_disable_banks(); + cmci_toggle_interrupt_mode(false); __this_cpu_write(cmci_storm_state, CMCI_STORM_ACTIVE); r = atomic_add_return(1, &cmci_storm_on_cpus); mce_timer_kick(CMCI_STORM_INTERVAL); --- linux-raspi2-4.2.0.orig/arch/x86/kernel/cpu/mshyperv.c +++ linux-raspi2-4.2.0/arch/x86/kernel/cpu/mshyperv.c @@ -18,6 +18,7 @@ #include #include #include +#include #include #include #include @@ -28,12 +29,15 @@ #include #include #include +#include struct ms_hyperv_info ms_hyperv; EXPORT_SYMBOL_GPL(ms_hyperv); #if IS_ENABLED(CONFIG_HYPERV) static void (*vmbus_handler)(void); +static void (*hv_kexec_handler)(void); +static void (*hv_crash_handler)(struct pt_regs *regs); void hyperv_vector_handler(struct pt_regs *regs) { @@ -67,7 +71,47 @@ } EXPORT_SYMBOL_GPL(hv_setup_vmbus_irq); EXPORT_SYMBOL_GPL(hv_remove_vmbus_irq); -#endif + +void hv_setup_kexec_handler(void (*handler)(void)) +{ + hv_kexec_handler = handler; +} +EXPORT_SYMBOL_GPL(hv_setup_kexec_handler); + +void hv_remove_kexec_handler(void) +{ + hv_kexec_handler = NULL; +} +EXPORT_SYMBOL_GPL(hv_remove_kexec_handler); + +void hv_setup_crash_handler(void (*handler)(struct pt_regs *regs)) +{ + hv_crash_handler = handler; +} +EXPORT_SYMBOL_GPL(hv_setup_crash_handler); + +void hv_remove_crash_handler(void) +{ + hv_crash_handler = NULL; +} +EXPORT_SYMBOL_GPL(hv_remove_crash_handler); + +#ifdef CONFIG_KEXEC_CORE +static void hv_machine_shutdown(void) +{ + if (kexec_in_progress && hv_kexec_handler) + hv_kexec_handler(); + native_machine_shutdown(); +} + +static void hv_machine_crash_shutdown(struct pt_regs *regs) +{ + if (hv_crash_handler) + hv_crash_handler(regs); + native_machine_crash_shutdown(regs); +} +#endif /* CONFIG_KEXEC_CORE */ +#endif /* CONFIG_HYPERV */ static uint32_t __init ms_hyperv_platform(void) { @@ -114,6 +158,7 @@ * Extract the features and hints */ ms_hyperv.features = cpuid_eax(HYPERV_CPUID_FEATURES); + ms_hyperv.misc_features = cpuid_edx(HYPERV_CPUID_FEATURES); ms_hyperv.hints = cpuid_eax(HYPERV_CPUID_ENLIGHTMENT_INFO); printk(KERN_INFO "HyperV: features 0x%x, hints 0x%x\n", @@ -141,6 +186,11 @@ no_timer_check = 1; #endif +#if IS_ENABLED(CONFIG_HYPERV) && defined(CONFIG_KEXEC_CORE) + machine_ops.shutdown = hv_machine_shutdown; + machine_ops.crash_shutdown = hv_machine_crash_shutdown; +#endif + mark_tsc_unstable("running on Hyper-V"); } const __refconst struct hypervisor_x86 x86_hyper_ms_hyperv = { --- linux-raspi2-4.2.0.orig/arch/x86/kernel/cpu/perf_event.c +++ linux-raspi2-4.2.0/arch/x86/kernel/cpu/perf_event.c @@ -1551,7 +1551,7 @@ } /* Merge two pointer arrays */ -static __init struct attribute **merge_attr(struct attribute **a, struct attribute **b) +__init struct attribute **merge_attr(struct attribute **a, struct attribute **b) { struct attribute **new; int j, i; @@ -2179,6 +2179,7 @@ int idx = segment >> 3; if ((segment & SEGMENT_TI_MASK) == SEGMENT_LDT) { +#ifdef CONFIG_MODIFY_LDT_SYSCALL struct ldt_struct *ldt; if (idx > LDT_ENTRIES) @@ -2190,6 +2191,9 @@ return 0; desc = &ldt->entries[idx]; +#else + return 0; +#endif } else { if (idx > GDT_ENTRIES) return 0; --- linux-raspi2-4.2.0.orig/arch/x86/kernel/cpu/perf_event.h +++ linux-raspi2-4.2.0/arch/x86/kernel/cpu/perf_event.h @@ -165,7 +165,7 @@ unsigned core_id; /* per-core: core id */ }; -#define MAX_LBR_ENTRIES 16 +#define MAX_LBR_ENTRIES 32 enum { X86_PERF_KFREE_SHARED = 0, @@ -594,6 +594,7 @@ struct event_constraint *pebs_constraints; void (*pebs_aliases)(struct perf_event *event); int max_pebs_events; + unsigned long free_running_flags; /* * Intel LBR @@ -624,6 +625,7 @@ struct x86_perf_task_context { u64 lbr_from[MAX_LBR_ENTRIES]; u64 lbr_to[MAX_LBR_ENTRIES]; + u64 lbr_info[MAX_LBR_ENTRIES]; int lbr_callstack_users; int lbr_stack_state; }; @@ -793,6 +795,8 @@ ssize_t x86_event_sysfs_show(char *page, u64 config, u64 event); ssize_t intel_event_sysfs_show(char *page, u64 config); +struct attribute **merge_attr(struct attribute **a, struct attribute **b); + #ifdef CONFIG_CPU_SUP_AMD int amd_pmu_init(void); @@ -873,6 +877,8 @@ extern struct event_constraint intel_hsw_pebs_event_constraints[]; +extern struct event_constraint intel_skl_pebs_event_constraints[]; + struct event_constraint *intel_pebs_constraints(struct perf_event *event); void intel_pmu_pebs_enable(struct perf_event *event); @@ -911,6 +917,8 @@ void intel_pmu_lbr_init_hsw(void); +void intel_pmu_lbr_init_skl(void); + int intel_pmu_setup_lbr_filter(struct perf_event *event); void intel_pt_interrupt(void); @@ -934,6 +942,7 @@ { return !!(x86_pmu.flags & PMU_FL_EXCL_ENABLED); } + #else /* CONFIG_CPU_SUP_INTEL */ static inline void reserve_ds_buffers(void) --- linux-raspi2-4.2.0.orig/arch/x86/kernel/cpu/perf_event_intel.c +++ linux-raspi2-4.2.0/arch/x86/kernel/cpu/perf_event_intel.c @@ -177,6 +177,14 @@ EVENT_CONSTRAINT_END }; +struct event_constraint intel_skl_event_constraints[] = { + FIXED_EVENT_CONSTRAINT(0x00c0, 0), /* INST_RETIRED.ANY */ + FIXED_EVENT_CONSTRAINT(0x003c, 1), /* CPU_CLK_UNHALTED.CORE */ + FIXED_EVENT_CONSTRAINT(0x0300, 2), /* CPU_CLK_UNHALTED.REF */ + INTEL_UEVENT_CONSTRAINT(0x1c0, 0x2), /* INST_RETIRED.PREC_DIST */ + EVENT_CONSTRAINT_END +}; + static struct extra_reg intel_snb_extra_regs[] __read_mostly = { /* must define OFFCORE_RSP_X first, see intel_fixup_er() */ INTEL_UEVENT_EXTRA_REG(0x01b7, MSR_OFFCORE_RSP_0, 0x3f807f8fffull, RSP_0), @@ -193,6 +201,13 @@ EVENT_EXTRA_END }; +static struct extra_reg intel_skl_extra_regs[] __read_mostly = { + INTEL_UEVENT_EXTRA_REG(0x01b7, MSR_OFFCORE_RSP_0, 0x3fffff8fffull, RSP_0), + INTEL_UEVENT_EXTRA_REG(0x01bb, MSR_OFFCORE_RSP_1, 0x3fffff8fffull, RSP_1), + INTEL_UEVENT_PEBS_LDLAT_EXTRA_REG(0x01cd), + EVENT_EXTRA_END +}; + EVENT_ATTR_STR(mem-loads, mem_ld_nhm, "event=0x0b,umask=0x10,ldlat=3"); EVENT_ATTR_STR(mem-loads, mem_ld_snb, "event=0xcd,umask=0x1,ldlat=3"); EVENT_ATTR_STR(mem-stores, mem_st_snb, "event=0xcd,umask=0x2"); @@ -244,6 +259,200 @@ return intel_perfmon_event_map[hw_event]; } +/* + * Notes on the events: + * - data reads do not include code reads (comparable to earlier tables) + * - data counts include speculative execution (except L1 write, dtlb, bpu) + * - remote node access includes remote memory, remote cache, remote mmio. + * - prefetches are not included in the counts. + * - icache miss does not include decoded icache + */ + +#define SKL_DEMAND_DATA_RD BIT_ULL(0) +#define SKL_DEMAND_RFO BIT_ULL(1) +#define SKL_ANY_RESPONSE BIT_ULL(16) +#define SKL_SUPPLIER_NONE BIT_ULL(17) +#define SKL_L3_MISS_LOCAL_DRAM BIT_ULL(26) +#define SKL_L3_MISS_REMOTE_HOP0_DRAM BIT_ULL(27) +#define SKL_L3_MISS_REMOTE_HOP1_DRAM BIT_ULL(28) +#define SKL_L3_MISS_REMOTE_HOP2P_DRAM BIT_ULL(29) +#define SKL_L3_MISS (SKL_L3_MISS_LOCAL_DRAM| \ + SKL_L3_MISS_REMOTE_HOP0_DRAM| \ + SKL_L3_MISS_REMOTE_HOP1_DRAM| \ + SKL_L3_MISS_REMOTE_HOP2P_DRAM) +#define SKL_SPL_HIT BIT_ULL(30) +#define SKL_SNOOP_NONE BIT_ULL(31) +#define SKL_SNOOP_NOT_NEEDED BIT_ULL(32) +#define SKL_SNOOP_MISS BIT_ULL(33) +#define SKL_SNOOP_HIT_NO_FWD BIT_ULL(34) +#define SKL_SNOOP_HIT_WITH_FWD BIT_ULL(35) +#define SKL_SNOOP_HITM BIT_ULL(36) +#define SKL_SNOOP_NON_DRAM BIT_ULL(37) +#define SKL_ANY_SNOOP (SKL_SPL_HIT|SKL_SNOOP_NONE| \ + SKL_SNOOP_NOT_NEEDED|SKL_SNOOP_MISS| \ + SKL_SNOOP_HIT_NO_FWD|SKL_SNOOP_HIT_WITH_FWD| \ + SKL_SNOOP_HITM|SKL_SNOOP_NON_DRAM) +#define SKL_DEMAND_READ SKL_DEMAND_DATA_RD +#define SKL_SNOOP_DRAM (SKL_SNOOP_NONE| \ + SKL_SNOOP_NOT_NEEDED|SKL_SNOOP_MISS| \ + SKL_SNOOP_HIT_NO_FWD|SKL_SNOOP_HIT_WITH_FWD| \ + SKL_SNOOP_HITM|SKL_SPL_HIT) +#define SKL_DEMAND_WRITE SKL_DEMAND_RFO +#define SKL_LLC_ACCESS SKL_ANY_RESPONSE +#define SKL_L3_MISS_REMOTE (SKL_L3_MISS_REMOTE_HOP0_DRAM| \ + SKL_L3_MISS_REMOTE_HOP1_DRAM| \ + SKL_L3_MISS_REMOTE_HOP2P_DRAM) + +static __initconst const u64 skl_hw_cache_event_ids + [PERF_COUNT_HW_CACHE_MAX] + [PERF_COUNT_HW_CACHE_OP_MAX] + [PERF_COUNT_HW_CACHE_RESULT_MAX] = +{ + [ C(L1D ) ] = { + [ C(OP_READ) ] = { + [ C(RESULT_ACCESS) ] = 0x81d0, /* MEM_INST_RETIRED.ALL_LOADS */ + [ C(RESULT_MISS) ] = 0x151, /* L1D.REPLACEMENT */ + }, + [ C(OP_WRITE) ] = { + [ C(RESULT_ACCESS) ] = 0x82d0, /* MEM_INST_RETIRED.ALL_STORES */ + [ C(RESULT_MISS) ] = 0x0, + }, + [ C(OP_PREFETCH) ] = { + [ C(RESULT_ACCESS) ] = 0x0, + [ C(RESULT_MISS) ] = 0x0, + }, + }, + [ C(L1I ) ] = { + [ C(OP_READ) ] = { + [ C(RESULT_ACCESS) ] = 0x0, + [ C(RESULT_MISS) ] = 0x283, /* ICACHE_64B.MISS */ + }, + [ C(OP_WRITE) ] = { + [ C(RESULT_ACCESS) ] = -1, + [ C(RESULT_MISS) ] = -1, + }, + [ C(OP_PREFETCH) ] = { + [ C(RESULT_ACCESS) ] = 0x0, + [ C(RESULT_MISS) ] = 0x0, + }, + }, + [ C(LL ) ] = { + [ C(OP_READ) ] = { + [ C(RESULT_ACCESS) ] = 0x1b7, /* OFFCORE_RESPONSE */ + [ C(RESULT_MISS) ] = 0x1b7, /* OFFCORE_RESPONSE */ + }, + [ C(OP_WRITE) ] = { + [ C(RESULT_ACCESS) ] = 0x1b7, /* OFFCORE_RESPONSE */ + [ C(RESULT_MISS) ] = 0x1b7, /* OFFCORE_RESPONSE */ + }, + [ C(OP_PREFETCH) ] = { + [ C(RESULT_ACCESS) ] = 0x0, + [ C(RESULT_MISS) ] = 0x0, + }, + }, + [ C(DTLB) ] = { + [ C(OP_READ) ] = { + [ C(RESULT_ACCESS) ] = 0x81d0, /* MEM_INST_RETIRED.ALL_LOADS */ + [ C(RESULT_MISS) ] = 0x608, /* DTLB_LOAD_MISSES.WALK_COMPLETED */ + }, + [ C(OP_WRITE) ] = { + [ C(RESULT_ACCESS) ] = 0x82d0, /* MEM_INST_RETIRED.ALL_STORES */ + [ C(RESULT_MISS) ] = 0x649, /* DTLB_STORE_MISSES.WALK_COMPLETED */ + }, + [ C(OP_PREFETCH) ] = { + [ C(RESULT_ACCESS) ] = 0x0, + [ C(RESULT_MISS) ] = 0x0, + }, + }, + [ C(ITLB) ] = { + [ C(OP_READ) ] = { + [ C(RESULT_ACCESS) ] = 0x2085, /* ITLB_MISSES.STLB_HIT */ + [ C(RESULT_MISS) ] = 0xe85, /* ITLB_MISSES.WALK_COMPLETED */ + }, + [ C(OP_WRITE) ] = { + [ C(RESULT_ACCESS) ] = -1, + [ C(RESULT_MISS) ] = -1, + }, + [ C(OP_PREFETCH) ] = { + [ C(RESULT_ACCESS) ] = -1, + [ C(RESULT_MISS) ] = -1, + }, + }, + [ C(BPU ) ] = { + [ C(OP_READ) ] = { + [ C(RESULT_ACCESS) ] = 0xc4, /* BR_INST_RETIRED.ALL_BRANCHES */ + [ C(RESULT_MISS) ] = 0xc5, /* BR_MISP_RETIRED.ALL_BRANCHES */ + }, + [ C(OP_WRITE) ] = { + [ C(RESULT_ACCESS) ] = -1, + [ C(RESULT_MISS) ] = -1, + }, + [ C(OP_PREFETCH) ] = { + [ C(RESULT_ACCESS) ] = -1, + [ C(RESULT_MISS) ] = -1, + }, + }, + [ C(NODE) ] = { + [ C(OP_READ) ] = { + [ C(RESULT_ACCESS) ] = 0x1b7, /* OFFCORE_RESPONSE */ + [ C(RESULT_MISS) ] = 0x1b7, /* OFFCORE_RESPONSE */ + }, + [ C(OP_WRITE) ] = { + [ C(RESULT_ACCESS) ] = 0x1b7, /* OFFCORE_RESPONSE */ + [ C(RESULT_MISS) ] = 0x1b7, /* OFFCORE_RESPONSE */ + }, + [ C(OP_PREFETCH) ] = { + [ C(RESULT_ACCESS) ] = 0x0, + [ C(RESULT_MISS) ] = 0x0, + }, + }, +}; + +static __initconst const u64 skl_hw_cache_extra_regs + [PERF_COUNT_HW_CACHE_MAX] + [PERF_COUNT_HW_CACHE_OP_MAX] + [PERF_COUNT_HW_CACHE_RESULT_MAX] = +{ + [ C(LL ) ] = { + [ C(OP_READ) ] = { + [ C(RESULT_ACCESS) ] = SKL_DEMAND_READ| + SKL_LLC_ACCESS|SKL_ANY_SNOOP, + [ C(RESULT_MISS) ] = SKL_DEMAND_READ| + SKL_L3_MISS|SKL_ANY_SNOOP| + SKL_SUPPLIER_NONE, + }, + [ C(OP_WRITE) ] = { + [ C(RESULT_ACCESS) ] = SKL_DEMAND_WRITE| + SKL_LLC_ACCESS|SKL_ANY_SNOOP, + [ C(RESULT_MISS) ] = SKL_DEMAND_WRITE| + SKL_L3_MISS|SKL_ANY_SNOOP| + SKL_SUPPLIER_NONE, + }, + [ C(OP_PREFETCH) ] = { + [ C(RESULT_ACCESS) ] = 0x0, + [ C(RESULT_MISS) ] = 0x0, + }, + }, + [ C(NODE) ] = { + [ C(OP_READ) ] = { + [ C(RESULT_ACCESS) ] = SKL_DEMAND_READ| + SKL_L3_MISS_LOCAL_DRAM|SKL_SNOOP_DRAM, + [ C(RESULT_MISS) ] = SKL_DEMAND_READ| + SKL_L3_MISS_REMOTE|SKL_SNOOP_DRAM, + }, + [ C(OP_WRITE) ] = { + [ C(RESULT_ACCESS) ] = SKL_DEMAND_WRITE| + SKL_L3_MISS_LOCAL_DRAM|SKL_SNOOP_DRAM, + [ C(RESULT_MISS) ] = SKL_DEMAND_WRITE| + SKL_L3_MISS_REMOTE|SKL_SNOOP_DRAM, + }, + [ C(OP_PREFETCH) ] = { + [ C(RESULT_ACCESS) ] = 0x0, + [ C(RESULT_MISS) ] = 0x0, + }, + }, +}; + #define SNB_DMND_DATA_RD (1ULL << 0) #define SNB_DMND_RFO (1ULL << 1) #define SNB_DMND_IFETCH (1ULL << 2) @@ -1594,6 +1803,7 @@ loops = 0; again: + intel_pmu_lbr_read(); intel_pmu_ack_status(status); if (++loops > 100) { static bool warned = false; @@ -1608,16 +1818,16 @@ inc_irq_stat(apic_perf_irqs); - intel_pmu_lbr_read(); /* - * CondChgd bit 63 doesn't mean any overflow status. Ignore - * and clear the bit. + * Ignore a range of extra bits in status that do not indicate + * overflow by themselves. */ - if (__test_and_clear_bit(63, (unsigned long *)&status)) { - if (!status) - goto done; - } + status &= ~(GLOBAL_STATUS_COND_CHG | + GLOBAL_STATUS_ASIF | + GLOBAL_STATUS_LBRS_FROZEN); + if (!status) + goto done; /* * PEBS overflow sets bit 62 in the global status register @@ -2102,9 +2312,12 @@ intel_get_event_constraints(struct cpu_hw_events *cpuc, int idx, struct perf_event *event) { - struct event_constraint *c1 = cpuc->event_constraint[idx]; + struct event_constraint *c1 = NULL; struct event_constraint *c2; + if (idx >= 0) /* fake does < 0 */ + c1 = cpuc->event_constraint[idx]; + /* * first time only * - static constraint: no change across incremental scheduling calls @@ -2253,6 +2466,15 @@ } } +static unsigned long intel_pmu_free_running_flags(struct perf_event *event) +{ + unsigned long flags = x86_pmu.free_running_flags; + + if (event->attr.use_clockid) + flags &= ~PERF_SAMPLE_TIME; + return flags; +} + static int intel_pmu_hw_config(struct perf_event *event) { int ret = x86_pmu_hw_config(event); @@ -2263,7 +2485,8 @@ if (event->attr.precise_ip) { if (!event->attr.freq) { event->hw.flags |= PERF_X86_EVENT_AUTO_RELOAD; - if (!(event->attr.sample_type & ~PEBS_FREERUNNING_FLAGS)) + if (!(event->attr.sample_type & + ~intel_pmu_free_running_flags(event))) event->hw.flags |= PERF_X86_EVENT_FREERUNNING; } if (x86_pmu.pebs_aliases) @@ -2694,6 +2917,8 @@ .event_map = intel_pmu_event_map, .max_events = ARRAY_SIZE(intel_perfmon_event_map), .apic = 1, + .free_running_flags = PEBS_FREERUNNING_FLAGS, + /* * Intel PMCs cannot be accessed sanely above 32-bit width, * so we install an artificial 1<<31 period regardless of @@ -2732,6 +2957,7 @@ .event_map = intel_pmu_event_map, .max_events = ARRAY_SIZE(intel_perfmon_event_map), .apic = 1, + .free_running_flags = PEBS_FREERUNNING_FLAGS, /* * Intel PMCs cannot be accessed sanely above 32 bit width, * so we install an artificial 1<<31 period regardless of @@ -3269,6 +3495,29 @@ pr_cont("Broadwell events, "); break; + case 78: /* 14nm Skylake Mobile */ + case 94: /* 14nm Skylake Desktop */ + x86_pmu.late_ack = true; + memcpy(hw_cache_event_ids, skl_hw_cache_event_ids, sizeof(hw_cache_event_ids)); + memcpy(hw_cache_extra_regs, skl_hw_cache_extra_regs, sizeof(hw_cache_extra_regs)); + intel_pmu_lbr_init_skl(); + + x86_pmu.event_constraints = intel_skl_event_constraints; + x86_pmu.pebs_constraints = intel_skl_pebs_event_constraints; + x86_pmu.extra_regs = intel_skl_extra_regs; + x86_pmu.pebs_aliases = intel_pebs_aliases_snb; + /* all extra regs are per-cpu when HT is on */ + x86_pmu.flags |= PMU_FL_HAS_RSP_1; + x86_pmu.flags |= PMU_FL_NO_HT_SHARING; + + x86_pmu.hw_config = hsw_hw_config; + x86_pmu.get_event_constraints = hsw_get_event_constraints; + x86_pmu.cpu_events = hsw_events_attrs; + WARN_ON(!x86_pmu.format_attrs); + x86_pmu.cpu_events = hsw_events_attrs; + pr_cont("Skylake events, "); + break; + default: switch (x86_pmu.version) { case 1: @@ -3338,7 +3587,7 @@ */ if (x86_pmu.extra_regs) { for (er = x86_pmu.extra_regs; er->msr; er++) { - er->extra_msr_access = check_msr(er->msr, 0x1ffUL); + er->extra_msr_access = check_msr(er->msr, 0x11UL); /* Disable LBR select mapping */ if ((er->idx == EXTRA_REG_LBR) && !er->extra_msr_access) x86_pmu.lbr_sel_map = NULL; --- linux-raspi2-4.2.0.orig/arch/x86/kernel/cpu/perf_event_intel_ds.c +++ linux-raspi2-4.2.0/arch/x86/kernel/cpu/perf_event_intel_ds.c @@ -224,6 +224,19 @@ #define PEBS_HSW_TSX_FLAGS 0xff00000000ULL +/* Same as HSW, plus TSC */ + +struct pebs_record_skl { + u64 flags, ip; + u64 ax, bx, cx, dx; + u64 si, di, bp, sp; + u64 r8, r9, r10, r11; + u64 r12, r13, r14, r15; + u64 status, dla, dse, lat; + u64 real_ip, tsx_tuning; + u64 tsc; +}; + void init_debug_store_on_cpu(int cpu) { struct debug_store *ds = per_cpu(cpu_hw_events, cpu).ds; @@ -675,6 +688,28 @@ EVENT_CONSTRAINT_END }; +struct event_constraint intel_skl_pebs_event_constraints[] = { + INTEL_FLAGS_UEVENT_CONSTRAINT(0x1c0, 0x2), /* INST_RETIRED.PREC_DIST */ + INTEL_FLAGS_UEVENT_CONSTRAINT_DATALA_NA(0x01c2, 0xf), /* UOPS_RETIRED.ALL */ + /* UOPS_RETIRED.ALL, inv=1, cmask=16 (cycles:p). */ + INTEL_FLAGS_EVENT_CONSTRAINT(0x108001c2, 0xf), + INTEL_PLD_CONSTRAINT(0x1cd, 0xf), /* MEM_TRANS_RETIRED.* */ + INTEL_FLAGS_UEVENT_CONSTRAINT_DATALA_LD(0x11d0, 0xf), /* MEM_INST_RETIRED.STLB_MISS_LOADS */ + INTEL_FLAGS_UEVENT_CONSTRAINT_DATALA_ST(0x12d0, 0xf), /* MEM_INST_RETIRED.STLB_MISS_STORES */ + INTEL_FLAGS_UEVENT_CONSTRAINT_DATALA_LD(0x21d0, 0xf), /* MEM_INST_RETIRED.LOCK_LOADS */ + INTEL_FLAGS_UEVENT_CONSTRAINT_DATALA_ST(0x22d0, 0xf), /* MEM_INST_RETIRED.LOCK_STORES */ + INTEL_FLAGS_UEVENT_CONSTRAINT_DATALA_LD(0x41d0, 0xf), /* MEM_INST_RETIRED.SPLIT_LOADS */ + INTEL_FLAGS_UEVENT_CONSTRAINT_DATALA_ST(0x42d0, 0xf), /* MEM_INST_RETIRED.SPLIT_STORES */ + INTEL_FLAGS_UEVENT_CONSTRAINT_DATALA_LD(0x81d0, 0xf), /* MEM_INST_RETIRED.ALL_LOADS */ + INTEL_FLAGS_UEVENT_CONSTRAINT_DATALA_ST(0x82d0, 0xf), /* MEM_INST_RETIRED.ALL_STORES */ + INTEL_FLAGS_EVENT_CONSTRAINT_DATALA_LD(0xd1, 0xf), /* MEM_LOAD_RETIRED.* */ + INTEL_FLAGS_EVENT_CONSTRAINT_DATALA_LD(0xd2, 0xf), /* MEM_LOAD_L3_HIT_RETIRED.* */ + INTEL_FLAGS_EVENT_CONSTRAINT_DATALA_LD(0xd3, 0xf), /* MEM_LOAD_L3_MISS_RETIRED.* */ + /* Allow all events as PEBS with no flags */ + INTEL_ALL_EVENT_CONSTRAINT(0, 0xf), + EVENT_CONSTRAINT_END +}; + struct event_constraint *intel_pebs_constraints(struct perf_event *event) { struct event_constraint *c; @@ -885,7 +920,7 @@ return 0; } -static inline u64 intel_hsw_weight(struct pebs_record_hsw *pebs) +static inline u64 intel_hsw_weight(struct pebs_record_skl *pebs) { if (pebs->tsx_tuning) { union hsw_tsx_tuning tsx = { .value = pebs->tsx_tuning }; @@ -894,7 +929,7 @@ return 0; } -static inline u64 intel_hsw_transaction(struct pebs_record_hsw *pebs) +static inline u64 intel_hsw_transaction(struct pebs_record_skl *pebs) { u64 txn = (pebs->tsx_tuning & PEBS_HSW_TSX_FLAGS) >> 32; @@ -918,7 +953,7 @@ * unconditionally access the 'extra' entries. */ struct cpu_hw_events *cpuc = this_cpu_ptr(&cpu_hw_events); - struct pebs_record_hsw *pebs = __pebs; + struct pebs_record_skl *pebs = __pebs; u64 sample_type; int fll, fst, dsrc; int fl = event->hw.flags; @@ -1016,6 +1051,16 @@ data->txn = intel_hsw_transaction(pebs); } + /* + * v3 supplies an accurate time stamp, so we use that + * for the time stamp. + * + * We can only do this for the default trace clock. + */ + if (x86_pmu.intel_cap.pebs_format >= 3 && + event->attr.use_clockid == 0) + data->time = native_sched_clock_from_tsc(pebs->tsc); + if (has_branch_stack(event)) data->br_stack = &cpuc->lbr_stack; } @@ -1245,6 +1290,14 @@ x86_pmu.drain_pebs = intel_pmu_drain_pebs_nhm; break; + case 3: + pr_cont("PEBS fmt3%c, ", pebs_type); + x86_pmu.pebs_record_size = + sizeof(struct pebs_record_skl); + x86_pmu.drain_pebs = intel_pmu_drain_pebs_nhm; + x86_pmu.free_running_flags |= PERF_SAMPLE_TIME; + break; + default: printk(KERN_CONT "no PEBS fmt%d%c, ", format, pebs_type); x86_pmu.pebs = 0; --- linux-raspi2-4.2.0.orig/arch/x86/kernel/cpu/perf_event_intel_lbr.c +++ linux-raspi2-4.2.0/arch/x86/kernel/cpu/perf_event_intel_lbr.c @@ -13,7 +13,8 @@ LBR_FORMAT_EIP = 0x02, LBR_FORMAT_EIP_FLAGS = 0x03, LBR_FORMAT_EIP_FLAGS2 = 0x04, - LBR_FORMAT_MAX_KNOWN = LBR_FORMAT_EIP_FLAGS2, + LBR_FORMAT_INFO = 0x05, + LBR_FORMAT_MAX_KNOWN = LBR_FORMAT_INFO, }; static enum { @@ -140,6 +141,13 @@ u64 debugctl, lbr_select = 0, orig_debugctl; /* + * No need to unfreeze manually, as v4 can do that as part + * of the GLOBAL_STATUS ack. + */ + if (pmi && x86_pmu.version >= 4) + return; + + /* * No need to reprogram LBR_SELECT in a PMI, as it * did not change. */ @@ -186,6 +194,8 @@ for (i = 0; i < x86_pmu.lbr_nr; i++) { wrmsrl(x86_pmu.lbr_from + i, 0); wrmsrl(x86_pmu.lbr_to + i, 0); + if (x86_pmu.intel_cap.lbr_format == LBR_FORMAT_INFO) + wrmsrl(MSR_LBR_INFO_0 + i, 0); } } @@ -230,10 +240,12 @@ mask = x86_pmu.lbr_nr - 1; tos = intel_pmu_lbr_tos(); - for (i = 0; i < x86_pmu.lbr_nr; i++) { + for (i = 0; i < tos; i++) { lbr_idx = (tos - i) & mask; wrmsrl(x86_pmu.lbr_from + lbr_idx, task_ctx->lbr_from[i]); wrmsrl(x86_pmu.lbr_to + lbr_idx, task_ctx->lbr_to[i]); + if (x86_pmu.intel_cap.lbr_format == LBR_FORMAT_INFO) + wrmsrl(MSR_LBR_INFO_0 + lbr_idx, task_ctx->lbr_info[i]); } task_ctx->lbr_stack_state = LBR_NONE; } @@ -251,10 +263,12 @@ mask = x86_pmu.lbr_nr - 1; tos = intel_pmu_lbr_tos(); - for (i = 0; i < x86_pmu.lbr_nr; i++) { + for (i = 0; i < tos; i++) { lbr_idx = (tos - i) & mask; rdmsrl(x86_pmu.lbr_from + lbr_idx, task_ctx->lbr_from[i]); rdmsrl(x86_pmu.lbr_to + lbr_idx, task_ctx->lbr_to[i]); + if (x86_pmu.intel_cap.lbr_format == LBR_FORMAT_INFO) + rdmsrl(MSR_LBR_INFO_0 + lbr_idx, task_ctx->lbr_info[i]); } task_ctx->lbr_stack_state = LBR_VALID; } @@ -411,16 +425,31 @@ u64 tos = intel_pmu_lbr_tos(); int i; int out = 0; + int num = x86_pmu.lbr_nr; - for (i = 0; i < x86_pmu.lbr_nr; i++) { + if (cpuc->lbr_sel->config & LBR_CALL_STACK) + num = tos; + + for (i = 0; i < num; i++) { unsigned long lbr_idx = (tos - i) & mask; u64 from, to, mis = 0, pred = 0, in_tx = 0, abort = 0; int skip = 0; + u16 cycles = 0; int lbr_flags = lbr_desc[lbr_format]; rdmsrl(x86_pmu.lbr_from + lbr_idx, from); rdmsrl(x86_pmu.lbr_to + lbr_idx, to); + if (lbr_format == LBR_FORMAT_INFO) { + u64 info; + + rdmsrl(MSR_LBR_INFO_0 + lbr_idx, info); + mis = !!(info & LBR_INFO_MISPRED); + pred = !mis; + in_tx = !!(info & LBR_INFO_IN_TX); + abort = !!(info & LBR_INFO_ABORT); + cycles = (info & LBR_INFO_CYCLES); + } if (lbr_flags & LBR_EIP_FLAGS) { mis = !!(from & LBR_FROM_FLAG_MISPRED); pred = !mis; @@ -450,6 +479,7 @@ cpuc->lbr_entries[out].predicted = pred; cpuc->lbr_entries[out].in_tx = in_tx; cpuc->lbr_entries[out].abort = abort; + cpuc->lbr_entries[out].cycles = cycles; cpuc->lbr_entries[out].reserved = 0; out++; } @@ -947,6 +977,26 @@ pr_cont("16-deep LBR, "); } +/* skylake */ +__init void intel_pmu_lbr_init_skl(void) +{ + x86_pmu.lbr_nr = 32; + x86_pmu.lbr_tos = MSR_LBR_TOS; + x86_pmu.lbr_from = MSR_LBR_NHM_FROM; + x86_pmu.lbr_to = MSR_LBR_NHM_TO; + + x86_pmu.lbr_sel_mask = LBR_SEL_MASK; + x86_pmu.lbr_sel_map = hsw_lbr_sel_map; + + /* + * SW branch filter usage: + * - support syscall, sysret capture. + * That requires LBR_FAR but that means far + * jmp need to be filtered out + */ + pr_cont("32-deep LBR, "); +} + /* atom */ void __init intel_pmu_lbr_init_atom(void) { --- linux-raspi2-4.2.0.orig/arch/x86/kernel/cpu/perf_event_intel_rapl.c +++ linux-raspi2-4.2.0/arch/x86/kernel/cpu/perf_event_intel_rapl.c @@ -86,6 +86,10 @@ 1<config * any other bit is reserved @@ -486,6 +490,18 @@ NULL, }; +static struct attribute *rapl_events_knl_attr[] = { + EVENT_PTR(rapl_pkg), + EVENT_PTR(rapl_ram), + + EVENT_PTR(rapl_pkg_unit), + EVENT_PTR(rapl_ram_unit), + + EVENT_PTR(rapl_pkg_scale), + EVENT_PTR(rapl_ram_scale), + NULL, +}; + static struct attribute_group rapl_pmu_events_group = { .name = "events", .attrs = NULL, /* patched at runtime */ @@ -730,6 +746,10 @@ rapl_cntr_mask = RAPL_IDX_SRV; rapl_pmu_events_group.attrs = rapl_events_srv_attr; break; + case 87: /* Knights Landing */ + rapl_add_quirk(rapl_hsw_server_quirk); + rapl_cntr_mask = RAPL_IDX_KNL; + rapl_pmu_events_group.attrs = rapl_events_knl_attr; default: /* unsupported */ --- linux-raspi2-4.2.0.orig/arch/x86/kernel/cpu/perf_event_intel_uncore.c +++ linux-raspi2-4.2.0/arch/x86/kernel/cpu/perf_event_intel_uncore.c @@ -911,6 +911,9 @@ case 63: /* Haswell-EP */ ret = hswep_uncore_pci_init(); break; + case 86: /* BDX-DE */ + ret = bdx_uncore_pci_init(); + break; case 42: /* Sandy Bridge */ ret = snb_uncore_pci_init(); break; @@ -1224,6 +1227,9 @@ case 63: /* Haswell-EP */ hswep_uncore_cpu_init(); break; + case 86: /* BDX-DE */ + bdx_uncore_cpu_init(); + break; default: return 0; } --- linux-raspi2-4.2.0.orig/arch/x86/kernel/cpu/perf_event_intel_uncore.h +++ linux-raspi2-4.2.0/arch/x86/kernel/cpu/perf_event_intel_uncore.h @@ -336,6 +336,8 @@ void ivbep_uncore_cpu_init(void); int hswep_uncore_pci_init(void); void hswep_uncore_cpu_init(void); +int bdx_uncore_pci_init(void); +void bdx_uncore_cpu_init(void); /* perf_event_intel_uncore_nhmex.c */ void nhmex_uncore_cpu_init(void); --- linux-raspi2-4.2.0.orig/arch/x86/kernel/cpu/perf_event_intel_uncore_snbep.c +++ linux-raspi2-4.2.0/arch/x86/kernel/cpu/perf_event_intel_uncore_snbep.c @@ -2321,3 +2321,167 @@ return 0; } /* end of Haswell-EP uncore support */ + +/* BDX-DE uncore support */ + +static struct intel_uncore_type bdx_uncore_ubox = { + .name = "ubox", + .num_counters = 2, + .num_boxes = 1, + .perf_ctr_bits = 48, + .fixed_ctr_bits = 48, + .perf_ctr = HSWEP_U_MSR_PMON_CTR0, + .event_ctl = HSWEP_U_MSR_PMON_CTL0, + .event_mask = SNBEP_U_MSR_PMON_RAW_EVENT_MASK, + .fixed_ctr = HSWEP_U_MSR_PMON_UCLK_FIXED_CTR, + .fixed_ctl = HSWEP_U_MSR_PMON_UCLK_FIXED_CTL, + .num_shared_regs = 1, + .ops = &ivbep_uncore_msr_ops, + .format_group = &ivbep_uncore_ubox_format_group, +}; + +static struct event_constraint bdx_uncore_cbox_constraints[] = { + UNCORE_EVENT_CONSTRAINT(0x09, 0x3), + UNCORE_EVENT_CONSTRAINT(0x11, 0x1), + UNCORE_EVENT_CONSTRAINT(0x36, 0x1), + EVENT_CONSTRAINT_END +}; + +static struct intel_uncore_type bdx_uncore_cbox = { + .name = "cbox", + .num_counters = 4, + .num_boxes = 8, + .perf_ctr_bits = 48, + .event_ctl = HSWEP_C0_MSR_PMON_CTL0, + .perf_ctr = HSWEP_C0_MSR_PMON_CTR0, + .event_mask = SNBEP_CBO_MSR_PMON_RAW_EVENT_MASK, + .box_ctl = HSWEP_C0_MSR_PMON_BOX_CTL, + .msr_offset = HSWEP_CBO_MSR_OFFSET, + .num_shared_regs = 1, + .constraints = bdx_uncore_cbox_constraints, + .ops = &hswep_uncore_cbox_ops, + .format_group = &hswep_uncore_cbox_format_group, +}; + +static struct intel_uncore_type *bdx_msr_uncores[] = { + &bdx_uncore_ubox, + &bdx_uncore_cbox, + &hswep_uncore_pcu, + NULL, +}; + +void bdx_uncore_cpu_init(void) +{ + if (bdx_uncore_cbox.num_boxes > boot_cpu_data.x86_max_cores) + bdx_uncore_cbox.num_boxes = boot_cpu_data.x86_max_cores; + uncore_msr_uncores = bdx_msr_uncores; +} + +static struct intel_uncore_type bdx_uncore_ha = { + .name = "ha", + .num_counters = 4, + .num_boxes = 1, + .perf_ctr_bits = 48, + SNBEP_UNCORE_PCI_COMMON_INIT(), +}; + +static struct intel_uncore_type bdx_uncore_imc = { + .name = "imc", + .num_counters = 5, + .num_boxes = 2, + .perf_ctr_bits = 48, + .fixed_ctr_bits = 48, + .fixed_ctr = SNBEP_MC_CHy_PCI_PMON_FIXED_CTR, + .fixed_ctl = SNBEP_MC_CHy_PCI_PMON_FIXED_CTL, + .event_descs = hswep_uncore_imc_events, + SNBEP_UNCORE_PCI_COMMON_INIT(), +}; + +static struct intel_uncore_type bdx_uncore_irp = { + .name = "irp", + .num_counters = 4, + .num_boxes = 1, + .perf_ctr_bits = 48, + .event_mask = SNBEP_PMON_RAW_EVENT_MASK, + .box_ctl = SNBEP_PCI_PMON_BOX_CTL, + .ops = &hswep_uncore_irp_ops, + .format_group = &snbep_uncore_format_group, +}; + + +static struct event_constraint bdx_uncore_r2pcie_constraints[] = { + UNCORE_EVENT_CONSTRAINT(0x10, 0x3), + UNCORE_EVENT_CONSTRAINT(0x11, 0x3), + UNCORE_EVENT_CONSTRAINT(0x13, 0x1), + UNCORE_EVENT_CONSTRAINT(0x23, 0x1), + UNCORE_EVENT_CONSTRAINT(0x25, 0x1), + UNCORE_EVENT_CONSTRAINT(0x26, 0x3), + UNCORE_EVENT_CONSTRAINT(0x2d, 0x3), + EVENT_CONSTRAINT_END +}; + +static struct intel_uncore_type bdx_uncore_r2pcie = { + .name = "r2pcie", + .num_counters = 4, + .num_boxes = 1, + .perf_ctr_bits = 48, + .constraints = bdx_uncore_r2pcie_constraints, + SNBEP_UNCORE_PCI_COMMON_INIT(), +}; + +enum { + BDX_PCI_UNCORE_HA, + BDX_PCI_UNCORE_IMC, + BDX_PCI_UNCORE_IRP, + BDX_PCI_UNCORE_R2PCIE, +}; + +static struct intel_uncore_type *bdx_pci_uncores[] = { + [BDX_PCI_UNCORE_HA] = &bdx_uncore_ha, + [BDX_PCI_UNCORE_IMC] = &bdx_uncore_imc, + [BDX_PCI_UNCORE_IRP] = &bdx_uncore_irp, + [BDX_PCI_UNCORE_R2PCIE] = &bdx_uncore_r2pcie, + NULL, +}; + +static DEFINE_PCI_DEVICE_TABLE(bdx_uncore_pci_ids) = { + { /* Home Agent 0 */ + PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x6f30), + .driver_data = UNCORE_PCI_DEV_DATA(BDX_PCI_UNCORE_HA, 0), + }, + { /* MC0 Channel 0 */ + PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x6fb0), + .driver_data = UNCORE_PCI_DEV_DATA(BDX_PCI_UNCORE_IMC, 0), + }, + { /* MC0 Channel 1 */ + PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x6fb1), + .driver_data = UNCORE_PCI_DEV_DATA(BDX_PCI_UNCORE_IMC, 1), + }, + { /* IRP */ + PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x6f39), + .driver_data = UNCORE_PCI_DEV_DATA(BDX_PCI_UNCORE_IRP, 0), + }, + { /* R2PCIe */ + PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x6f34), + .driver_data = UNCORE_PCI_DEV_DATA(BDX_PCI_UNCORE_R2PCIE, 0), + }, + { /* end: all zeroes */ } +}; + +static struct pci_driver bdx_uncore_pci_driver = { + .name = "bdx_uncore", + .id_table = bdx_uncore_pci_ids, +}; + +int bdx_uncore_pci_init(void) +{ + int ret = snbep_pci2phy_map_init(0x6f1e); + + if (ret) + return ret; + uncore_pci_uncores = bdx_pci_uncores; + uncore_pci_driver = &bdx_uncore_pci_driver; + return 0; +} + +/* end of BDX-DE uncore support */ --- linux-raspi2-4.2.0.orig/arch/x86/kernel/crash.c +++ linux-raspi2-4.2.0/arch/x86/kernel/crash.c @@ -185,10 +185,9 @@ } #ifdef CONFIG_KEXEC_FILE -static int get_nr_ram_ranges_callback(unsigned long start_pfn, - unsigned long nr_pfn, void *arg) +static int get_nr_ram_ranges_callback(u64 start, u64 end, void *arg) { - int *nr_ranges = arg; + unsigned int *nr_ranges = arg; (*nr_ranges)++; return 0; @@ -214,7 +213,7 @@ ced->image = image; - walk_system_ram_range(0, -1, &nr_ranges, + walk_system_ram_res(0, -1, &nr_ranges, get_nr_ram_ranges_callback); ced->max_nr_ranges = nr_ranges; --- linux-raspi2-4.2.0.orig/arch/x86/kernel/fpu/signal.c +++ linux-raspi2-4.2.0/arch/x86/kernel/fpu/signal.c @@ -385,20 +385,19 @@ */ void fpu__init_prepare_fx_sw_frame(void) { - int fsave_header_size = sizeof(struct fregs_state); int size = xstate_size + FP_XSTATE_MAGIC2_SIZE; - if (config_enabled(CONFIG_X86_32)) - size += fsave_header_size; - fx_sw_reserved.magic1 = FP_XSTATE_MAGIC1; fx_sw_reserved.extended_size = size; fx_sw_reserved.xfeatures = xfeatures_mask; fx_sw_reserved.xstate_size = xstate_size; - if (config_enabled(CONFIG_IA32_EMULATION)) { + if (config_enabled(CONFIG_IA32_EMULATION) || + config_enabled(CONFIG_X86_32)) { + int fsave_header_size = sizeof(struct fregs_state); + fx_sw_reserved_ia32 = fx_sw_reserved; - fx_sw_reserved_ia32.extended_size += fsave_header_size; + fx_sw_reserved_ia32.extended_size = size + fsave_header_size; } } --- linux-raspi2-4.2.0.orig/arch/x86/kernel/fpu/xstate.c +++ linux-raspi2-4.2.0/arch/x86/kernel/fpu/xstate.c @@ -402,7 +402,6 @@ if (!boot_cpu_has(X86_FEATURE_XSAVE)) return NULL; - xsave = ¤t->thread.fpu.state.xsave; /* * We should not ever be requesting features that we * have not enabled. Remember that pcntxt_mask is --- linux-raspi2-4.2.0.orig/arch/x86/kernel/head_64.S +++ linux-raspi2-4.2.0/arch/x86/kernel/head_64.S @@ -65,6 +65,9 @@ * tables and then reload them. */ + /* Sanitize CPU configuration */ + call verify_cpu + /* * Compute the delta between the address I am compiled to run at and the * address I am actually running at. @@ -174,6 +177,9 @@ * after the boot processor executes this code. */ + /* Sanitize CPU configuration */ + call verify_cpu + movq $(init_level4_pgt - __START_KERNEL_map), %rax 1: @@ -288,6 +294,8 @@ pushq %rax # target address in negative space lretq +#include "verify_cpu.S" + #ifdef CONFIG_HOTPLUG_CPU /* * Boot CPU0 entry point. It's called from play_dead(). Everything has been set --- linux-raspi2-4.2.0.orig/arch/x86/kernel/i8259.c +++ linux-raspi2-4.2.0/arch/x86/kernel/i8259.c @@ -295,16 +295,11 @@ raw_spin_unlock_irqrestore(&i8259A_lock, flags); } -static void init_8259A(int auto_eoi) +static int probe_8259A(void) { unsigned long flags; unsigned char probe_val = ~(1 << PIC_CASCADE_IR); unsigned char new_val; - - i8259A_auto_eoi = auto_eoi; - - raw_spin_lock_irqsave(&i8259A_lock, flags); - /* * Check to see if we have a PIC. * Mask all except the cascade and read @@ -312,16 +307,28 @@ * have a PIC, we will read 0xff as opposed to the * value we wrote. */ + raw_spin_lock_irqsave(&i8259A_lock, flags); + outb(0xff, PIC_SLAVE_IMR); /* mask all of 8259A-2 */ outb(probe_val, PIC_MASTER_IMR); new_val = inb(PIC_MASTER_IMR); if (new_val != probe_val) { printk(KERN_INFO "Using NULL legacy PIC\n"); legacy_pic = &null_legacy_pic; - raw_spin_unlock_irqrestore(&i8259A_lock, flags); - return; } + raw_spin_unlock_irqrestore(&i8259A_lock, flags); + return nr_legacy_irqs(); +} + +static void init_8259A(int auto_eoi) +{ + unsigned long flags; + + i8259A_auto_eoi = auto_eoi; + + raw_spin_lock_irqsave(&i8259A_lock, flags); + outb(0xff, PIC_MASTER_IMR); /* mask all of 8259A-1 */ /* @@ -379,6 +386,10 @@ { return 0; } +static int legacy_pic_probe(void) +{ + return 0; +} struct legacy_pic null_legacy_pic = { .nr_legacy_irqs = 0, @@ -388,6 +399,7 @@ .mask_all = legacy_pic_noop, .restore_mask = legacy_pic_noop, .init = legacy_pic_int_noop, + .probe = legacy_pic_probe, .irq_pending = legacy_pic_irq_pending_noop, .make_irq = legacy_pic_uint_noop, }; @@ -400,6 +412,7 @@ .mask_all = mask_8259A, .restore_mask = unmask_8259A, .init = init_8259A, + .probe = probe_8259A, .irq_pending = i8259A_irq_pending, .make_irq = make_8259A_irq, }; --- linux-raspi2-4.2.0.orig/arch/x86/kernel/paravirt.c +++ linux-raspi2-4.2.0/arch/x86/kernel/paravirt.c @@ -41,10 +41,18 @@ #include #include -/* nop stub */ -void _paravirt_nop(void) -{ -} +/* + * nop stub, which must not clobber anything *including the stack* to + * avoid confusing the entry prologues. + */ +extern void _paravirt_nop(void); +asm (".pushsection .entry.text, \"ax\"\n" + ".global _paravirt_nop\n" + "_paravirt_nop:\n\t" + "ret\n\t" + ".size _paravirt_nop, . - _paravirt_nop\n\t" + ".type _paravirt_nop, @function\n\t" + ".popsection"); /* identity function, which can be inlined */ u32 _paravirt_ident_32(u32 x) --- linux-raspi2-4.2.0.orig/arch/x86/kernel/pci-dma.c +++ linux-raspi2-4.2.0/arch/x86/kernel/pci-dma.c @@ -174,8 +174,6 @@ { struct dma_map_ops *ops = get_dma_ops(dev); - WARN_ON(irqs_disabled()); /* for portability */ - if (dma_release_from_coherent(dev, get_order(size), vaddr)) return; --- linux-raspi2-4.2.0.orig/arch/x86/kernel/process.c +++ linux-raspi2-4.2.0/arch/x86/kernel/process.c @@ -29,6 +29,7 @@ #include #include #include +#include /* * per-CPU TSS segments. Threads are completely 'soft' on Linux, @@ -82,6 +83,9 @@ int arch_dup_task_struct(struct task_struct *dst, struct task_struct *src) { memcpy(dst, src, arch_task_struct_size); +#ifdef CONFIG_VM86 + dst->thread.vm86 = NULL; +#endif return fpu__copy(&dst->thread.fpu, &src->thread.fpu); } @@ -110,6 +114,8 @@ kfree(bp); } + free_vm86(t); + fpu__drop(fpu); } --- linux-raspi2-4.2.0.orig/arch/x86/kernel/process_32.c +++ linux-raspi2-4.2.0/arch/x86/kernel/process_32.c @@ -53,6 +53,7 @@ #include #include #include +#include asmlinkage void ret_from_fork(void) __asm__("ret_from_fork"); asmlinkage void ret_from_kernel_thread(void) __asm__("ret_from_kernel_thread"); --- linux-raspi2-4.2.0.orig/arch/x86/kernel/process_64.c +++ linux-raspi2-4.2.0/arch/x86/kernel/process_64.c @@ -121,6 +121,7 @@ void release_thread(struct task_struct *dead_task) { if (dead_task->mm) { +#ifdef CONFIG_MODIFY_LDT_SYSCALL if (dead_task->mm->context.ldt) { pr_warn("WARNING: dead process %s still has LDT? <%p/%d>\n", dead_task->comm, @@ -128,6 +129,7 @@ dead_task->mm->context.ldt->size); BUG(); } +#endif } } @@ -497,27 +499,59 @@ } EXPORT_SYMBOL_GPL(set_personality_ia32); +/* + * Called from fs/proc with a reference on @p to find the function + * which called into schedule(). This needs to be done carefully + * because the task might wake up and we might look at a stack + * changing under us. + */ unsigned long get_wchan(struct task_struct *p) { - unsigned long stack; - u64 fp, ip; + unsigned long start, bottom, top, sp, fp, ip; int count = 0; if (!p || p == current || p->state == TASK_RUNNING) return 0; - stack = (unsigned long)task_stack_page(p); - if (p->thread.sp < stack || p->thread.sp >= stack+THREAD_SIZE) + + start = (unsigned long)task_stack_page(p); + if (!start) + return 0; + + /* + * Layout of the stack page: + * + * ----------- topmax = start + THREAD_SIZE - sizeof(unsigned long) + * PADDING + * ----------- top = topmax - TOP_OF_KERNEL_STACK_PADDING + * stack + * ----------- bottom = start + sizeof(thread_info) + * thread_info + * ----------- start + * + * The tasks stack pointer points at the location where the + * framepointer is stored. The data on the stack is: + * ... IP FP ... IP FP + * + * We need to read FP and IP, so we need to adjust the upper + * bound by another unsigned long. + */ + top = start + THREAD_SIZE - TOP_OF_KERNEL_STACK_PADDING; + top -= 2 * sizeof(unsigned long); + bottom = start + sizeof(struct thread_info); + + sp = READ_ONCE(p->thread.sp); + if (sp < bottom || sp > top) return 0; - fp = *(u64 *)(p->thread.sp); + + fp = READ_ONCE(*(unsigned long *)sp); do { - if (fp < (unsigned long)stack || - fp >= (unsigned long)stack+THREAD_SIZE) + if (fp < bottom || fp > top) return 0; - ip = *(u64 *)(fp+8); + ip = READ_ONCE(*(unsigned long *)(fp + sizeof(unsigned long))); if (!in_sched_functions(ip)) return ip; - fp = *(u64 *)fp; - } while (count++ < 16); + fp = READ_ONCE(*(unsigned long *)fp); + } while (count++ < 16 && p->state != TASK_RUNNING); return 0; } --- linux-raspi2-4.2.0.orig/arch/x86/kernel/reboot.c +++ linux-raspi2-4.2.0/arch/x86/kernel/reboot.c @@ -407,7 +407,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"), + }, + }, { } }; --- linux-raspi2-4.2.0.orig/arch/x86/kernel/setup.c +++ linux-raspi2-4.2.0/arch/x86/kernel/setup.c @@ -1198,6 +1198,14 @@ clone_pgd_range(initial_page_table + KERNEL_PGD_BOUNDARY, swapper_pg_dir + KERNEL_PGD_BOUNDARY, KERNEL_PGD_PTRS); + + /* + * sync back low identity map too. It is used for example + * in the 32-bit EFI stub. + */ + clone_pgd_range(initial_page_table, + swapper_pg_dir + KERNEL_PGD_BOUNDARY, + min(KERNEL_PGD_PTRS, KERNEL_PGD_BOUNDARY)); #endif tboot_probe(); --- linux-raspi2-4.2.0.orig/arch/x86/kernel/signal.c +++ linux-raspi2-4.2.0/arch/x86/kernel/signal.c @@ -31,6 +31,7 @@ #include #include #include +#include #ifdef CONFIG_X86_64 #include @@ -632,6 +633,9 @@ bool stepping, failed; struct fpu *fpu = ¤t->thread.fpu; + if (v8086_mode(regs)) + save_v86_state((struct kernel_vm86_regs *) regs, VM86_SIGNAL); + /* Are we from a system call? */ if (syscall_get_nr(current, regs) >= 0) { /* If so, check system call restarting.. */ --- linux-raspi2-4.2.0.orig/arch/x86/kernel/step.c +++ linux-raspi2-4.2.0/arch/x86/kernel/step.c @@ -18,6 +18,7 @@ return addr; } +#ifdef CONFIG_MODIFY_LDT_SYSCALL /* * We'll assume that the code segments in the GDT * are all zero-based. That is largely true: the @@ -45,6 +46,7 @@ } mutex_unlock(&child->mm->context.lock); } +#endif return addr; } --- linux-raspi2-4.2.0.orig/arch/x86/kernel/traps.c +++ linux-raspi2-4.2.0/arch/x86/kernel/traps.c @@ -62,6 +62,7 @@ #include #include #include +#include #ifdef CONFIG_X86_64 #include --- linux-raspi2-4.2.0.orig/arch/x86/kernel/tsc.c +++ linux-raspi2-4.2.0/arch/x86/kernel/tsc.c @@ -21,6 +21,7 @@ #include #include #include +#include unsigned int __read_mostly cpu_khz; /* TSC clocks / usec, not used here */ EXPORT_SYMBOL(cpu_khz); @@ -296,6 +297,14 @@ return cycles_2_ns(tsc_now); } +/* + * Generate a sched_clock if you already have a TSC value. + */ +u64 native_sched_clock_from_tsc(u64 tsc) +{ + return cycles_2_ns(tsc); +} + /* We need to define a real function for sched_clock, to override the weak default version */ #ifdef CONFIG_PARAVIRT @@ -1013,15 +1022,17 @@ static void __init check_system_tsc_reliable(void) { -#ifdef CONFIG_MGEODE_LX - /* RTSC counts during suspend */ +#if defined(CONFIG_MGEODEGX1) || defined(CONFIG_MGEODE_LX) || defined(CONFIG_X86_GENERIC) + if (is_geode_lx()) { + /* RTSC counts during suspend */ #define RTSC_SUSP 0x100 - unsigned long res_low, res_high; + unsigned long res_low, res_high; - rdmsr_safe(MSR_GEODE_BUSCONT_CONF0, &res_low, &res_high); - /* Geode_LX - the OLPC CPU has a very reliable TSC */ - if (res_low & RTSC_SUSP) - tsc_clocksource_reliable = 1; + rdmsr_safe(MSR_GEODE_BUSCONT_CONF0, &res_low, &res_high); + /* Geode_LX - the OLPC CPU has a very reliable TSC */ + if (res_low & RTSC_SUSP) + tsc_clocksource_reliable = 1; + } #endif if (boot_cpu_has(X86_FEATURE_TSC_RELIABLE)) tsc_clocksource_reliable = 1; --- linux-raspi2-4.2.0.orig/arch/x86/kernel/verify_cpu.S +++ linux-raspi2-4.2.0/arch/x86/kernel/verify_cpu.S @@ -34,10 +34,11 @@ #include verify_cpu: - pushfl # Save caller passed flags - pushl $0 # Kill any dangerous flags - popfl + pushf # Save caller passed flags + push $0 # Kill any dangerous flags + popf +#ifndef __x86_64__ pushfl # standard way to check for cpuid popl %eax movl %eax,%ebx @@ -48,6 +49,7 @@ popl %eax cmpl %eax,%ebx jz verify_cpu_no_longmode # cpu has no cpuid +#endif movl $0x0,%eax # See if cpuid 1 is implemented cpuid @@ -130,10 +132,10 @@ jmp verify_cpu_sse_test # try again verify_cpu_no_longmode: - popfl # Restore caller passed flags + popf # Restore caller passed flags movl $1,%eax ret verify_cpu_sse_ok: - popfl # Restore caller passed flags + popf # Restore caller passed flags xorl %eax, %eax ret --- linux-raspi2-4.2.0.orig/arch/x86/kernel/vm86_32.c +++ linux-raspi2-4.2.0/arch/x86/kernel/vm86_32.c @@ -44,11 +44,15 @@ #include #include #include +#include +#include #include #include #include #include +#include +#include /* * Known problems: @@ -66,10 +70,6 @@ */ -#define KVM86 ((struct kernel_vm86_struct *)regs) -#define VMPI KVM86->vm86plus - - /* * 8- and 16-bit register defines.. */ @@ -81,8 +81,8 @@ /* * virtual flags (16 and 32-bit versions) */ -#define VFLAGS (*(unsigned short *)&(current->thread.v86flags)) -#define VEFLAGS (current->thread.v86flags) +#define VFLAGS (*(unsigned short *)&(current->thread.vm86->veflags)) +#define VEFLAGS (current->thread.vm86->veflags) #define set_flags(X, new, mask) \ ((X) = ((X) & ~(mask)) | ((new) & (mask))) @@ -90,46 +90,13 @@ #define SAFE_MASK (0xDD5) #define RETURN_MASK (0xDFF) -/* convert kernel_vm86_regs to vm86_regs */ -static int copy_vm86_regs_to_user(struct vm86_regs __user *user, - const struct kernel_vm86_regs *regs) -{ - int ret = 0; - - /* - * kernel_vm86_regs is missing gs, so copy everything up to - * (but not including) orig_eax, and then rest including orig_eax. - */ - ret += copy_to_user(user, regs, offsetof(struct kernel_vm86_regs, pt.orig_ax)); - ret += copy_to_user(&user->orig_eax, ®s->pt.orig_ax, - sizeof(struct kernel_vm86_regs) - - offsetof(struct kernel_vm86_regs, pt.orig_ax)); - - return ret; -} - -/* convert vm86_regs to kernel_vm86_regs */ -static int copy_vm86_regs_from_user(struct kernel_vm86_regs *regs, - const struct vm86_regs __user *user, - unsigned extra) -{ - int ret = 0; - - /* copy ax-fs inclusive */ - ret += copy_from_user(regs, user, offsetof(struct kernel_vm86_regs, pt.orig_ax)); - /* copy orig_ax-__gsh+extra */ - ret += copy_from_user(®s->pt.orig_ax, &user->orig_eax, - sizeof(struct kernel_vm86_regs) - - offsetof(struct kernel_vm86_regs, pt.orig_ax) + - extra); - return ret; -} - -struct pt_regs *save_v86_state(struct kernel_vm86_regs *regs) +void save_v86_state(struct kernel_vm86_regs *regs, int retval) { struct tss_struct *tss; - struct pt_regs *ret; - unsigned long tmp; + struct task_struct *tsk = current; + struct vm86plus_struct __user *user; + struct vm86 *vm86 = current->thread.vm86; + long err = 0; /* * This gets called from entry.S with interrupts disabled, but @@ -138,31 +105,57 @@ */ local_irq_enable(); - if (!current->thread.vm86_info) { - pr_alert("no vm86_info: BAD\n"); + if (!vm86 || !vm86->user_vm86) { + pr_alert("no user_vm86: BAD\n"); do_exit(SIGSEGV); } - set_flags(regs->pt.flags, VEFLAGS, X86_EFLAGS_VIF | current->thread.v86mask); - tmp = copy_vm86_regs_to_user(¤t->thread.vm86_info->regs, regs); - tmp += put_user(current->thread.screen_bitmap, ¤t->thread.vm86_info->screen_bitmap); - if (tmp) { - pr_alert("could not access userspace vm86_info\n"); + set_flags(regs->pt.flags, VEFLAGS, X86_EFLAGS_VIF | vm86->veflags_mask); + user = vm86->user_vm86; + + if (!access_ok(VERIFY_WRITE, user, vm86->vm86plus.is_vm86pus ? + sizeof(struct vm86plus_struct) : + sizeof(struct vm86_struct))) { + pr_alert("could not access userspace vm86 info\n"); + do_exit(SIGSEGV); + } + + put_user_try { + put_user_ex(regs->pt.bx, &user->regs.ebx); + put_user_ex(regs->pt.cx, &user->regs.ecx); + put_user_ex(regs->pt.dx, &user->regs.edx); + put_user_ex(regs->pt.si, &user->regs.esi); + put_user_ex(regs->pt.di, &user->regs.edi); + put_user_ex(regs->pt.bp, &user->regs.ebp); + put_user_ex(regs->pt.ax, &user->regs.eax); + put_user_ex(regs->pt.ip, &user->regs.eip); + put_user_ex(regs->pt.cs, &user->regs.cs); + put_user_ex(regs->pt.flags, &user->regs.eflags); + put_user_ex(regs->pt.sp, &user->regs.esp); + put_user_ex(regs->pt.ss, &user->regs.ss); + put_user_ex(regs->es, &user->regs.es); + put_user_ex(regs->ds, &user->regs.ds); + put_user_ex(regs->fs, &user->regs.fs); + put_user_ex(regs->gs, &user->regs.gs); + + put_user_ex(vm86->screen_bitmap, &user->screen_bitmap); + } put_user_catch(err); + if (err) { + pr_alert("could not access userspace vm86 info\n"); do_exit(SIGSEGV); } tss = &per_cpu(cpu_tss, get_cpu()); - current->thread.sp0 = current->thread.saved_sp0; - current->thread.sysenter_cs = __KERNEL_CS; - load_sp0(tss, ¤t->thread); - current->thread.saved_sp0 = 0; + tsk->thread.sp0 = vm86->saved_sp0; + tsk->thread.sysenter_cs = __KERNEL_CS; + load_sp0(tss, &tsk->thread); + vm86->saved_sp0 = 0; put_cpu(); - ret = KVM86->regs32; + memcpy(®s->pt, &vm86->regs32, sizeof(struct pt_regs)); - ret->fs = current->thread.saved_fs; - set_user_gs(ret, current->thread.saved_gs); + lazy_load_gs(vm86->regs32.gs); - return ret; + regs->pt.ax = retval; } static void mark_screen_rdonly(struct mm_struct *mm) @@ -200,45 +193,16 @@ static int do_vm86_irq_handling(int subfunction, int irqnumber); -static void do_sys_vm86(struct kernel_vm86_struct *info, struct task_struct *tsk); +static long do_sys_vm86(struct vm86plus_struct __user *user_vm86, bool plus); -SYSCALL_DEFINE1(vm86old, struct vm86_struct __user *, v86) +SYSCALL_DEFINE1(vm86old, struct vm86_struct __user *, user_vm86) { - struct kernel_vm86_struct info; /* declare this _on top_, - * this avoids wasting of stack space. - * This remains on the stack until we - * return to 32 bit user space. - */ - struct task_struct *tsk = current; - int tmp; - - if (tsk->thread.saved_sp0) - return -EPERM; - tmp = copy_vm86_regs_from_user(&info.regs, &v86->regs, - offsetof(struct kernel_vm86_struct, vm86plus) - - sizeof(info.regs)); - if (tmp) - return -EFAULT; - memset(&info.vm86plus, 0, (int)&info.regs32 - (int)&info.vm86plus); - info.regs32 = current_pt_regs(); - tsk->thread.vm86_info = v86; - do_sys_vm86(&info, tsk); - return 0; /* we never return here */ + return do_sys_vm86((struct vm86plus_struct __user *) user_vm86, false); } SYSCALL_DEFINE2(vm86, unsigned long, cmd, unsigned long, arg) { - struct kernel_vm86_struct info; /* declare this _on top_, - * this avoids wasting of stack space. - * This remains on the stack until we - * return to 32 bit user space. - */ - struct task_struct *tsk; - int tmp; - struct vm86plus_struct __user *v86; - - tsk = current; switch (cmd) { case VM86_REQUEST_IRQ: case VM86_FREE_IRQ: @@ -256,114 +220,159 @@ } /* we come here only for functions VM86_ENTER, VM86_ENTER_NO_BYPASS */ - if (tsk->thread.saved_sp0) - return -EPERM; - v86 = (struct vm86plus_struct __user *)arg; - tmp = copy_vm86_regs_from_user(&info.regs, &v86->regs, - offsetof(struct kernel_vm86_struct, regs32) - - sizeof(info.regs)); - if (tmp) - return -EFAULT; - info.regs32 = current_pt_regs(); - info.vm86plus.is_vm86pus = 1; - tsk->thread.vm86_info = (struct vm86_struct __user *)v86; - do_sys_vm86(&info, tsk); - return 0; /* we never return here */ + return do_sys_vm86((struct vm86plus_struct __user *) arg, true); } -static void do_sys_vm86(struct kernel_vm86_struct *info, struct task_struct *tsk) +static long do_sys_vm86(struct vm86plus_struct __user *user_vm86, bool plus) { struct tss_struct *tss; -/* - * make sure the vm86() system call doesn't try to do anything silly - */ - info->regs.pt.ds = 0; - info->regs.pt.es = 0; - info->regs.pt.fs = 0; -#ifndef CONFIG_X86_32_LAZY_GS - info->regs.pt.gs = 0; -#endif + struct task_struct *tsk = current; + struct vm86 *vm86 = tsk->thread.vm86; + struct kernel_vm86_regs vm86regs; + struct pt_regs *regs = current_pt_regs(); + unsigned long err = 0; + + err = security_mmap_addr(0); + if (err) { + /* + * vm86 cannot virtualize the address space, so vm86 users + * need to manage the low 1MB themselves using mmap. Given + * that BIOS places important data in the first page, vm86 + * is essentially useless if mmap_min_addr != 0. DOSEMU, + * for example, won't even bother trying to use vm86 if it + * can't map a page at virtual address 0. + * + * To reduce the available kernel attack surface, simply + * disallow vm86(old) for users who cannot mmap at va 0. + * + * The implementation of security_mmap_addr will allow + * suitably privileged users to map va 0 even if + * vm.mmap_min_addr is set above 0, and we want this + * behavior for vm86 as well, as it ensures that legacy + * tools like vbetool will not fail just because of + * vm.mmap_min_addr. + */ + pr_info_once("Denied a call to vm86(old) from %s[%d] (uid: %d). Set the vm.mmap_min_addr sysctl to 0 and/or adjust LSM mmap_min_addr policy to enable vm86 if you are using a vm86-based DOS emulator.\n", + current->comm, task_pid_nr(current), + from_kuid_munged(&init_user_ns, current_uid())); + return -EPERM; + } + + if (!vm86) { + if (!(vm86 = kzalloc(sizeof(*vm86), GFP_KERNEL))) + return -ENOMEM; + tsk->thread.vm86 = vm86; + } + if (vm86->saved_sp0) + return -EPERM; + + if (!access_ok(VERIFY_READ, user_vm86, plus ? + sizeof(struct vm86_struct) : + sizeof(struct vm86plus_struct))) + return -EFAULT; + + memset(&vm86regs, 0, sizeof(vm86regs)); + get_user_try { + unsigned short seg; + get_user_ex(vm86regs.pt.bx, &user_vm86->regs.ebx); + get_user_ex(vm86regs.pt.cx, &user_vm86->regs.ecx); + get_user_ex(vm86regs.pt.dx, &user_vm86->regs.edx); + get_user_ex(vm86regs.pt.si, &user_vm86->regs.esi); + get_user_ex(vm86regs.pt.di, &user_vm86->regs.edi); + get_user_ex(vm86regs.pt.bp, &user_vm86->regs.ebp); + get_user_ex(vm86regs.pt.ax, &user_vm86->regs.eax); + get_user_ex(vm86regs.pt.ip, &user_vm86->regs.eip); + get_user_ex(seg, &user_vm86->regs.cs); + vm86regs.pt.cs = seg; + get_user_ex(vm86regs.pt.flags, &user_vm86->regs.eflags); + get_user_ex(vm86regs.pt.sp, &user_vm86->regs.esp); + get_user_ex(seg, &user_vm86->regs.ss); + vm86regs.pt.ss = seg; + get_user_ex(vm86regs.es, &user_vm86->regs.es); + get_user_ex(vm86regs.ds, &user_vm86->regs.ds); + get_user_ex(vm86regs.fs, &user_vm86->regs.fs); + get_user_ex(vm86regs.gs, &user_vm86->regs.gs); + + get_user_ex(vm86->flags, &user_vm86->flags); + get_user_ex(vm86->screen_bitmap, &user_vm86->screen_bitmap); + get_user_ex(vm86->cpu_type, &user_vm86->cpu_type); + } get_user_catch(err); + if (err) + return err; + + if (copy_from_user(&vm86->int_revectored, + &user_vm86->int_revectored, + sizeof(struct revectored_struct))) + return -EFAULT; + if (copy_from_user(&vm86->int21_revectored, + &user_vm86->int21_revectored, + sizeof(struct revectored_struct))) + return -EFAULT; + if (plus) { + if (copy_from_user(&vm86->vm86plus, &user_vm86->vm86plus, + sizeof(struct vm86plus_info_struct))) + return -EFAULT; + vm86->vm86plus.is_vm86pus = 1; + } else + memset(&vm86->vm86plus, 0, + sizeof(struct vm86plus_info_struct)); + + memcpy(&vm86->regs32, regs, sizeof(struct pt_regs)); + vm86->user_vm86 = user_vm86; /* * The flags register is also special: we cannot trust that the user * has set it up safely, so this makes sure interrupt etc flags are * inherited from protected mode. */ - VEFLAGS = info->regs.pt.flags; - info->regs.pt.flags &= SAFE_MASK; - info->regs.pt.flags |= info->regs32->flags & ~SAFE_MASK; - info->regs.pt.flags |= X86_VM_MASK; + VEFLAGS = vm86regs.pt.flags; + vm86regs.pt.flags &= SAFE_MASK; + vm86regs.pt.flags |= regs->flags & ~SAFE_MASK; + vm86regs.pt.flags |= X86_VM_MASK; - switch (info->cpu_type) { + vm86regs.pt.orig_ax = regs->orig_ax; + + switch (vm86->cpu_type) { case CPU_286: - tsk->thread.v86mask = 0; + vm86->veflags_mask = 0; break; case CPU_386: - tsk->thread.v86mask = X86_EFLAGS_NT | X86_EFLAGS_IOPL; + vm86->veflags_mask = X86_EFLAGS_NT | X86_EFLAGS_IOPL; break; case CPU_486: - tsk->thread.v86mask = X86_EFLAGS_AC | X86_EFLAGS_NT | X86_EFLAGS_IOPL; + vm86->veflags_mask = X86_EFLAGS_AC | X86_EFLAGS_NT | X86_EFLAGS_IOPL; break; default: - tsk->thread.v86mask = X86_EFLAGS_ID | X86_EFLAGS_AC | X86_EFLAGS_NT | X86_EFLAGS_IOPL; + vm86->veflags_mask = X86_EFLAGS_ID | X86_EFLAGS_AC | X86_EFLAGS_NT | X86_EFLAGS_IOPL; break; } /* - * Save old state, set default return value (%ax) to 0 (VM86_SIGNAL) + * Save old state */ - info->regs32->ax = VM86_SIGNAL; - tsk->thread.saved_sp0 = tsk->thread.sp0; - tsk->thread.saved_fs = info->regs32->fs; - tsk->thread.saved_gs = get_user_gs(info->regs32); + vm86->saved_sp0 = tsk->thread.sp0; + lazy_save_gs(vm86->regs32.gs); tss = &per_cpu(cpu_tss, get_cpu()); - tsk->thread.sp0 = (unsigned long) &info->VM86_TSS_ESP0; + /* make room for real-mode segments */ + tsk->thread.sp0 += 16; if (cpu_has_sep) tsk->thread.sysenter_cs = 0; load_sp0(tss, &tsk->thread); put_cpu(); - tsk->thread.screen_bitmap = info->screen_bitmap; - if (info->flags & VM86_SCREEN_BITMAP) + if (vm86->flags & VM86_SCREEN_BITMAP) mark_screen_rdonly(tsk->mm); - /*call __audit_syscall_exit since we do not exit via the normal paths */ -#ifdef CONFIG_AUDITSYSCALL - if (unlikely(current->audit_context)) - __audit_syscall_exit(1, 0); -#endif - - __asm__ __volatile__( - "movl %0,%%esp\n\t" - "movl %1,%%ebp\n\t" -#ifdef CONFIG_X86_32_LAZY_GS - "mov %2, %%gs\n\t" -#endif - "jmp resume_userspace" - : /* no outputs */ - :"r" (&info->regs), "r" (task_thread_info(tsk)), "r" (0)); - /* we never return here */ -} - -static inline void return_to_32bit(struct kernel_vm86_regs *regs16, int retval) -{ - struct pt_regs *regs32; - - regs32 = save_v86_state(regs16); - regs32->ax = retval; - __asm__ __volatile__("movl %0,%%esp\n\t" - "movl %1,%%ebp\n\t" - "jmp resume_userspace" - : : "r" (regs32), "r" (current_thread_info())); + memcpy((struct kernel_vm86_regs *)regs, &vm86regs, sizeof(vm86regs)); + force_iret(); + return regs->ax; } static inline void set_IF(struct kernel_vm86_regs *regs) { VEFLAGS |= X86_EFLAGS_VIF; - if (VEFLAGS & X86_EFLAGS_VIP) - return_to_32bit(regs, VM86_STI); } static inline void clear_IF(struct kernel_vm86_regs *regs) @@ -395,7 +404,7 @@ static inline void set_vflags_long(unsigned long flags, struct kernel_vm86_regs *regs) { - set_flags(VEFLAGS, flags, current->thread.v86mask); + set_flags(VEFLAGS, flags, current->thread.vm86->veflags_mask); set_flags(regs->pt.flags, flags, SAFE_MASK); if (flags & X86_EFLAGS_IF) set_IF(regs); @@ -405,7 +414,7 @@ static inline void set_vflags_short(unsigned short flags, struct kernel_vm86_regs *regs) { - set_flags(VFLAGS, flags, current->thread.v86mask); + set_flags(VFLAGS, flags, current->thread.vm86->veflags_mask); set_flags(regs->pt.flags, flags, SAFE_MASK); if (flags & X86_EFLAGS_IF) set_IF(regs); @@ -420,7 +429,7 @@ if (VEFLAGS & X86_EFLAGS_VIF) flags |= X86_EFLAGS_IF; flags |= X86_EFLAGS_IOPL; - return flags | (VEFLAGS & current->thread.v86mask); + return flags | (VEFLAGS & current->thread.vm86->veflags_mask); } static inline int is_revectored(int nr, struct revectored_struct *bitmap) @@ -518,12 +527,13 @@ { unsigned long __user *intr_ptr; unsigned long segoffs; + struct vm86 *vm86 = current->thread.vm86; if (regs->pt.cs == BIOSSEG) goto cannot_handle; - if (is_revectored(i, &KVM86->int_revectored)) + if (is_revectored(i, &vm86->int_revectored)) goto cannot_handle; - if (i == 0x21 && is_revectored(AH(regs), &KVM86->int21_revectored)) + if (i == 0x21 && is_revectored(AH(regs), &vm86->int21_revectored)) goto cannot_handle; intr_ptr = (unsigned long __user *) (i << 2); if (get_user(segoffs, intr_ptr)) @@ -542,18 +552,16 @@ return; cannot_handle: - return_to_32bit(regs, VM86_INTx + (i << 8)); + save_v86_state(regs, VM86_INTx + (i << 8)); } int handle_vm86_trap(struct kernel_vm86_regs *regs, long error_code, int trapno) { - if (VMPI.is_vm86pus) { + struct vm86 *vm86 = current->thread.vm86; + + if (vm86->vm86plus.is_vm86pus) { if ((trapno == 3) || (trapno == 1)) { - KVM86->regs32->ax = VM86_TRAP + (trapno << 8); - /* setting this flag forces the code in entry_32.S to - the path where we call save_v86_state() and change - the stack pointer to KVM86->regs32 */ - set_thread_flag(TIF_NOTIFY_RESUME); + save_v86_state(regs, VM86_TRAP + (trapno << 8)); return 0; } do_int(regs, trapno, (unsigned char __user *) (regs->pt.ss << 4), SP(regs)); @@ -574,16 +582,11 @@ unsigned char __user *ssp; unsigned short ip, sp, orig_flags; int data32, pref_done; + struct vm86plus_info_struct *vmpi = ¤t->thread.vm86->vm86plus; #define CHECK_IF_IN_TRAP \ - if (VMPI.vm86dbg_active && VMPI.vm86dbg_TFpendig) \ + if (vmpi->vm86dbg_active && vmpi->vm86dbg_TFpendig) \ newflags |= X86_EFLAGS_TF -#define VM86_FAULT_RETURN do { \ - if (VMPI.force_return_for_pic && (VEFLAGS & (X86_EFLAGS_IF | X86_EFLAGS_VIF))) \ - return_to_32bit(regs, VM86_PICRETURN); \ - if (orig_flags & X86_EFLAGS_TF) \ - handle_vm86_trap(regs, 0, 1); \ - return; } while (0) orig_flags = *(unsigned short *)®s->pt.flags; @@ -622,7 +625,7 @@ SP(regs) -= 2; } IP(regs) = ip; - VM86_FAULT_RETURN; + goto vm86_fault_return; /* popf */ case 0x9d: @@ -642,16 +645,18 @@ else set_vflags_short(newflags, regs); - VM86_FAULT_RETURN; + goto check_vip; } /* int xx */ case 0xcd: { int intno = popb(csp, ip, simulate_sigsegv); IP(regs) = ip; - if (VMPI.vm86dbg_active) { - if ((1 << (intno & 7)) & VMPI.vm86dbg_intxxtab[intno >> 3]) - return_to_32bit(regs, VM86_INTx + (intno << 8)); + if (vmpi->vm86dbg_active) { + if ((1 << (intno & 7)) & vmpi->vm86dbg_intxxtab[intno >> 3]) { + save_v86_state(regs, VM86_INTx + (intno << 8)); + return; + } } do_int(regs, intno, ssp, sp); return; @@ -682,14 +687,14 @@ } else { set_vflags_short(newflags, regs); } - VM86_FAULT_RETURN; + goto check_vip; } /* cli */ case 0xfa: IP(regs) = ip; clear_IF(regs); - VM86_FAULT_RETURN; + goto vm86_fault_return; /* sti */ /* @@ -701,14 +706,29 @@ case 0xfb: IP(regs) = ip; set_IF(regs); - VM86_FAULT_RETURN; + goto check_vip; default: - return_to_32bit(regs, VM86_UNKNOWN); + save_v86_state(regs, VM86_UNKNOWN); } return; +check_vip: + if (VEFLAGS & X86_EFLAGS_VIP) { + save_v86_state(regs, VM86_STI); + return; + } + +vm86_fault_return: + if (vmpi->force_return_for_pic && (VEFLAGS & (X86_EFLAGS_IF | X86_EFLAGS_VIF))) { + save_v86_state(regs, VM86_PICRETURN); + return; + } + if (orig_flags & X86_EFLAGS_TF) + handle_vm86_trap(regs, 0, X86_TRAP_DB); + return; + simulate_sigsegv: /* FIXME: After a long discussion with Stas we finally * agreed, that this is wrong. Here we should @@ -720,7 +740,7 @@ * should be a mixture of the two, but how do we * get the information? [KD] */ - return_to_32bit(regs, VM86_UNKNOWN); + save_v86_state(regs, VM86_UNKNOWN); } /* ---------------- vm86 special IRQ passing stuff ----------------- */ --- linux-raspi2-4.2.0.orig/arch/x86/kvm/emulate.c +++ linux-raspi2-4.2.0/arch/x86/kvm/emulate.c @@ -2272,8 +2272,8 @@ #define GET_SMSTATE(type, smbase, offset) \ ({ \ type __val; \ - int r = ctxt->ops->read_std(ctxt, smbase + offset, &__val, \ - sizeof(__val), NULL); \ + int r = ctxt->ops->read_phys(ctxt, smbase + offset, &__val, \ + sizeof(__val)); \ if (r != X86EMUL_CONTINUE) \ return X86EMUL_UNHANDLEABLE; \ __val; \ @@ -2418,7 +2418,7 @@ u64 val, cr0, cr4; u32 base3; u16 selector; - int i; + int i, r; for (i = 0; i < 16; i++) *reg_write(ctxt, i) = GET_SMSTATE(u64, smbase, 0x7ff8 - i * 8); @@ -2460,13 +2460,17 @@ dt.address = GET_SMSTATE(u64, smbase, 0x7e68); ctxt->ops->set_gdt(ctxt, &dt); + r = rsm_enter_protected_mode(ctxt, cr0, cr4); + if (r != X86EMUL_CONTINUE) + return r; + for (i = 0; i < 6; i++) { - int r = rsm_load_seg_64(ctxt, smbase, i); + r = rsm_load_seg_64(ctxt, smbase, i); if (r != X86EMUL_CONTINUE) return r; } - return rsm_enter_protected_mode(ctxt, cr0, cr4); + return X86EMUL_CONTINUE; } static int em_rsm(struct x86_emulate_ctxt *ctxt) @@ -2480,17 +2484,36 @@ /* * Get back to real mode, to prepare a safe state in which to load - * CR0/CR3/CR4/EFER. Also this will ensure that addresses passed - * to read_std/write_std are not virtual. - * - * CR4.PCIDE must be zero, because it is a 64-bit mode only feature. + * CR0/CR3/CR4/EFER. It's all a bit more complicated if the vCPU + * supports long mode. */ + cr4 = ctxt->ops->get_cr(ctxt, 4); + if (emulator_has_longmode(ctxt)) { + struct desc_struct cs_desc; + + /* Zero CR4.PCIDE before CR0.PG. */ + if (cr4 & X86_CR4_PCIDE) { + ctxt->ops->set_cr(ctxt, 4, cr4 & ~X86_CR4_PCIDE); + cr4 &= ~X86_CR4_PCIDE; + } + + /* A 32-bit code segment is required to clear EFER.LMA. */ + memset(&cs_desc, 0, sizeof(cs_desc)); + cs_desc.type = 0xb; + cs_desc.s = cs_desc.g = cs_desc.p = 1; + ctxt->ops->set_segment(ctxt, 0, &cs_desc, 0, VCPU_SREG_CS); + } + + /* For the 64-bit case, this will clear EFER.LMA. */ cr0 = ctxt->ops->get_cr(ctxt, 0); if (cr0 & X86_CR0_PE) ctxt->ops->set_cr(ctxt, 0, cr0 & ~(X86_CR0_PG | X86_CR0_PE)); - cr4 = ctxt->ops->get_cr(ctxt, 4); + + /* Now clear CR4.PAE (which must be done before clearing EFER.LME). */ if (cr4 & X86_CR4_PAE) ctxt->ops->set_cr(ctxt, 4, cr4 & ~X86_CR4_PAE); + + /* And finally go back to 32-bit mode. */ efer = 0; ctxt->ops->set_msr(ctxt, MSR_EFER, efer); @@ -4451,7 +4474,7 @@ F(DstMem | SrcReg | Src2CL | ModRM, em_shld), N, N, /* 0xA8 - 0xAF */ I(Stack | Src2GS, em_push_sreg), I(Stack | Src2GS, em_pop_sreg), - II(No64 | EmulateOnUD | ImplicitOps, em_rsm, rsm), + II(EmulateOnUD | ImplicitOps, em_rsm, rsm), F(DstMem | SrcReg | ModRM | BitOp | Lock | PageTable, em_bts), F(DstMem | SrcReg | Src2ImmByte | ModRM, em_shrd), F(DstMem | SrcReg | Src2CL | ModRM, em_shrd), --- linux-raspi2-4.2.0.orig/arch/x86/kvm/lapic.c +++ linux-raspi2-4.2.0/arch/x86/kvm/lapic.c @@ -348,6 +348,8 @@ struct kvm_lapic *apic = vcpu->arch.apic; __kvm_apic_update_irr(pir, apic->regs); + + kvm_make_request(KVM_REQ_EVENT, vcpu); } EXPORT_SYMBOL_GPL(kvm_apic_update_irr); --- linux-raspi2-4.2.0.orig/arch/x86/kvm/mmu.c +++ linux-raspi2-4.2.0/arch/x86/kvm/mmu.c @@ -357,12 +357,6 @@ { return ACCESS_ONCE(*sptep); } - -static bool __check_direct_spte_mmio_pf(u64 spte) -{ - /* It is valid if the spte is zapped. */ - return spte == 0ull; -} #else union split_spte { struct { @@ -478,23 +472,6 @@ return spte.spte; } - -static bool __check_direct_spte_mmio_pf(u64 spte) -{ - union split_spte sspte = (union split_spte)spte; - u32 high_mmio_mask = shadow_mmio_mask >> 32; - - /* It is valid if the spte is zapped. */ - if (spte == 0ull) - return true; - - /* It is valid if the spte is being zapped. */ - if (sspte.spte_low == 0ull && - (sspte.spte_high & high_mmio_mask) == high_mmio_mask) - return true; - - return false; -} #endif static bool spte_is_locklessly_modifiable(u64 spte) @@ -3299,21 +3276,6 @@ return vcpu_match_mmio_gva(vcpu, addr); } - -/* - * On direct hosts, the last spte is only allows two states - * for mmio page fault: - * - It is the mmio spte - * - It is zapped or it is being zapped. - * - * This function completely checks the spte when the last spte - * is not the mmio spte. - */ -static bool check_direct_spte_mmio_pf(u64 spte) -{ - return __check_direct_spte_mmio_pf(spte); -} - static u64 walk_shadow_page_get_mmio_spte(struct kvm_vcpu *vcpu, u64 addr) { struct kvm_shadow_walk_iterator iterator; @@ -3356,13 +3318,6 @@ } /* - * It's ok if the gva is remapped by other cpus on shadow guest, - * it's a BUG if the gfn is not a mmio page. - */ - if (direct && !check_direct_spte_mmio_pf(spte)) - return RET_MMIO_PF_BUG; - - /* * If the page table is zapped by other cpus, let CPU fault again on * the address. */ --- linux-raspi2-4.2.0.orig/arch/x86/kvm/svm.c +++ linux-raspi2-4.2.0/arch/x86/kvm/svm.c @@ -513,7 +513,7 @@ struct vcpu_svm *svm = to_svm(vcpu); if (svm->vmcb->control.next_rip != 0) { - WARN_ON(!static_cpu_has(X86_FEATURE_NRIPS)); + WARN_ON_ONCE(!static_cpu_has(X86_FEATURE_NRIPS)); svm->next_rip = svm->vmcb->control.next_rip; } @@ -865,64 +865,6 @@ set_msr_interception(msrpm, MSR_IA32_LASTINTTOIP, 0, 0); } -#define MTRR_TYPE_UC_MINUS 7 -#define MTRR2PROTVAL_INVALID 0xff - -static u8 mtrr2protval[8]; - -static u8 fallback_mtrr_type(int mtrr) -{ - /* - * WT and WP aren't always available in the host PAT. Treat - * them as UC and UC- respectively. Everything else should be - * there. - */ - switch (mtrr) - { - case MTRR_TYPE_WRTHROUGH: - return MTRR_TYPE_UNCACHABLE; - case MTRR_TYPE_WRPROT: - return MTRR_TYPE_UC_MINUS; - default: - BUG(); - } -} - -static void build_mtrr2protval(void) -{ - int i; - u64 pat; - - for (i = 0; i < 8; i++) - mtrr2protval[i] = MTRR2PROTVAL_INVALID; - - /* Ignore the invalid MTRR types. */ - mtrr2protval[2] = 0; - mtrr2protval[3] = 0; - - /* - * Use host PAT value to figure out the mapping from guest MTRR - * values to nested page table PAT/PCD/PWT values. We do not - * want to change the host PAT value every time we enter the - * guest. - */ - rdmsrl(MSR_IA32_CR_PAT, pat); - for (i = 0; i < 8; i++) { - u8 mtrr = pat >> (8 * i); - - if (mtrr2protval[mtrr] == MTRR2PROTVAL_INVALID) - mtrr2protval[mtrr] = __cm_idx2pte(i); - } - - for (i = 0; i < 8; i++) { - if (mtrr2protval[i] == MTRR2PROTVAL_INVALID) { - u8 fallback = fallback_mtrr_type(i); - mtrr2protval[i] = mtrr2protval[fallback]; - BUG_ON(mtrr2protval[i] == MTRR2PROTVAL_INVALID); - } - } -} - static __init int svm_hardware_setup(void) { int cpu; @@ -989,7 +931,6 @@ } else kvm_disable_tdp(); - build_mtrr2protval(); return 0; err: @@ -1144,40 +1085,7 @@ return target_tsc - tsc; } -static void svm_set_guest_pat(struct vcpu_svm *svm, u64 *g_pat) -{ - struct kvm_vcpu *vcpu = &svm->vcpu; - - /* Unlike Intel, AMD takes the guest's CR0.CD into account. - * - * AMD does not have IPAT. To emulate it for the case of guests - * with no assigned devices, just set everything to WB. If guests - * have assigned devices, however, we cannot force WB for RAM - * pages only, so use the guest PAT directly. - */ - if (!kvm_arch_has_assigned_device(vcpu->kvm)) - *g_pat = 0x0606060606060606; - else - *g_pat = vcpu->arch.pat; -} - -static u64 svm_get_mt_mask(struct kvm_vcpu *vcpu, gfn_t gfn, bool is_mmio) -{ - u8 mtrr; - - /* - * 1. MMIO: trust guest MTRR, so same as item 3. - * 2. No passthrough: always map as WB, and force guest PAT to WB as well - * 3. Passthrough: can't guarantee the result, try to trust guest. - */ - if (!is_mmio && !kvm_arch_has_assigned_device(vcpu->kvm)) - return 0; - - mtrr = kvm_mtrr_get_guest_memory_type(vcpu, gfn); - return mtrr2protval[mtrr]; -} - -static void init_vmcb(struct vcpu_svm *svm, bool init_event) +static void init_vmcb(struct vcpu_svm *svm) { struct vmcb_control_area *control = &svm->vmcb->control; struct vmcb_save_area *save = &svm->vmcb->save; @@ -1198,6 +1106,8 @@ set_exception_intercept(svm, PF_VECTOR); set_exception_intercept(svm, UD_VECTOR); set_exception_intercept(svm, MC_VECTOR); + set_exception_intercept(svm, AC_VECTOR); + set_exception_intercept(svm, DB_VECTOR); set_intercept(svm, INTERCEPT_INTR); set_intercept(svm, INTERCEPT_NMI); @@ -1248,8 +1158,7 @@ init_sys_seg(&save->ldtr, SEG_TYPE_LDT); init_sys_seg(&save->tr, SEG_TYPE_BUSY_TSS16); - if (!init_event) - svm_set_efer(&svm->vcpu, 0); + svm_set_efer(&svm->vcpu, 0); save->dr6 = 0xffff0ff0; kvm_set_rflags(&svm->vcpu, 2); save->rip = 0x0000fff0; @@ -1260,6 +1169,7 @@ * It also updates the guest-visible cr0 value. */ (void)kvm_set_cr0(&svm->vcpu, X86_CR0_NW | X86_CR0_CD | X86_CR0_ET); + kvm_mmu_reset_context(&svm->vcpu); save->cr4 = X86_CR4_PAE; /* rdx = ?? */ @@ -1272,7 +1182,6 @@ clr_cr_intercept(svm, INTERCEPT_CR3_READ); clr_cr_intercept(svm, INTERCEPT_CR3_WRITE); save->g_pat = svm->vcpu.arch.pat; - svm_set_guest_pat(svm, &save->g_pat); save->cr3 = 0; save->cr4 = 0; } @@ -1303,7 +1212,7 @@ if (kvm_vcpu_is_reset_bsp(&svm->vcpu)) svm->vcpu.arch.apic_base |= MSR_IA32_APICBASE_BSP; } - init_vmcb(svm, init_event); + init_vmcb(svm); kvm_cpuid(vcpu, &eax, &dummy, &dummy, &dummy); kvm_register_write(vcpu, VCPU_REGS_RDX, eax); @@ -1359,7 +1268,7 @@ clear_page(svm->vmcb); svm->vmcb_pa = page_to_pfn(page) << PAGE_SHIFT; svm->asid_generation = 0; - init_vmcb(svm, false); + init_vmcb(svm); svm_init_osvw(&svm->vcpu); @@ -1733,20 +1642,13 @@ mark_dirty(svm->vmcb, VMCB_SEG); } -static void update_db_bp_intercept(struct kvm_vcpu *vcpu) +static void update_bp_intercept(struct kvm_vcpu *vcpu) { struct vcpu_svm *svm = to_svm(vcpu); - clr_exception_intercept(svm, DB_VECTOR); clr_exception_intercept(svm, BP_VECTOR); - if (svm->nmi_singlestep) - set_exception_intercept(svm, DB_VECTOR); - if (vcpu->guest_debug & KVM_GUESTDBG_ENABLE) { - if (vcpu->guest_debug & - (KVM_GUESTDBG_SINGLESTEP | KVM_GUESTDBG_USE_HW_BP)) - set_exception_intercept(svm, DB_VECTOR); if (vcpu->guest_debug & KVM_GUESTDBG_USE_SW_BP) set_exception_intercept(svm, BP_VECTOR); } else @@ -1852,7 +1754,6 @@ if (!(svm->vcpu.guest_debug & KVM_GUESTDBG_SINGLESTEP)) svm->vmcb->save.rflags &= ~(X86_EFLAGS_TF | X86_EFLAGS_RF); - update_db_bp_intercept(&svm->vcpu); } if (svm->vcpu.guest_debug & @@ -1887,6 +1788,12 @@ return 1; } +static int ac_interception(struct vcpu_svm *svm) +{ + kvm_queue_exception_e(&svm->vcpu, AC_VECTOR, 0); + return 1; +} + static void svm_fpu_activate(struct kvm_vcpu *vcpu) { struct vcpu_svm *svm = to_svm(vcpu); @@ -1981,7 +1888,7 @@ * so reinitialize it. */ clear_page(svm->vmcb); - init_vmcb(svm, false); + init_vmcb(svm); kvm_run->exit_reason = KVM_EXIT_SHUTDOWN; return 0; @@ -3347,16 +3254,6 @@ case MSR_VM_IGNNE: vcpu_unimpl(vcpu, "unimplemented wrmsr: 0x%x data 0x%llx\n", ecx, data); break; - case MSR_IA32_CR_PAT: - if (npt_enabled) { - if (!kvm_mtrr_valid(vcpu, MSR_IA32_CR_PAT, data)) - return 1; - vcpu->arch.pat = data; - svm_set_guest_pat(svm, &svm->vmcb->save.g_pat); - mark_dirty(svm->vmcb, VMCB_NPT); - break; - } - /* fall through */ default: return kvm_set_msr_common(vcpu, msr); } @@ -3471,6 +3368,7 @@ [SVM_EXIT_EXCP_BASE + PF_VECTOR] = pf_interception, [SVM_EXIT_EXCP_BASE + NM_VECTOR] = nm_interception, [SVM_EXIT_EXCP_BASE + MC_VECTOR] = mc_interception, + [SVM_EXIT_EXCP_BASE + AC_VECTOR] = ac_interception, [SVM_EXIT_INTR] = intr_interception, [SVM_EXIT_NMI] = nmi_interception, [SVM_EXIT_SMI] = nop_on_interception, @@ -3854,7 +3752,6 @@ */ svm->nmi_singlestep = true; svm->vmcb->save.rflags |= (X86_EFLAGS_TF | X86_EFLAGS_RF); - update_db_bp_intercept(vcpu); } static int svm_set_tss_addr(struct kvm *kvm, unsigned int addr) @@ -4191,6 +4088,11 @@ return true; } +static u64 svm_get_mt_mask(struct kvm_vcpu *vcpu, gfn_t gfn, bool is_mmio) +{ + return 0; +} + static void svm_cpuid_update(struct kvm_vcpu *vcpu) { } @@ -4471,7 +4373,7 @@ .vcpu_load = svm_vcpu_load, .vcpu_put = svm_vcpu_put, - .update_db_bp_intercept = update_db_bp_intercept, + .update_db_bp_intercept = update_bp_intercept, .get_msr = svm_get_msr, .set_msr = svm_set_msr, .get_segment_base = svm_get_segment_base, --- linux-raspi2-4.2.0.orig/arch/x86/kvm/vmx.c +++ linux-raspi2-4.2.0/arch/x86/kvm/vmx.c @@ -1567,7 +1567,7 @@ u32 eb; eb = (1u << PF_VECTOR) | (1u << UD_VECTOR) | (1u << MC_VECTOR) | - (1u << NM_VECTOR) | (1u << DB_VECTOR); + (1u << NM_VECTOR) | (1u << DB_VECTOR) | (1u << AC_VECTOR); if ((vcpu->guest_debug & (KVM_GUESTDBG_ENABLE | KVM_GUESTDBG_USE_SW_BP)) == (KVM_GUESTDBG_ENABLE | KVM_GUESTDBG_USE_SW_BP)) @@ -3644,20 +3644,21 @@ if (!is_paging(vcpu)) { hw_cr4 &= ~X86_CR4_PAE; hw_cr4 |= X86_CR4_PSE; - /* - * SMEP/SMAP is disabled if CPU is in non-paging mode - * in hardware. However KVM always uses paging mode to - * emulate guest non-paging mode with TDP. - * To emulate this behavior, SMEP/SMAP needs to be - * manually disabled when guest switches to non-paging - * mode. - */ - hw_cr4 &= ~(X86_CR4_SMEP | X86_CR4_SMAP); } else if (!(cr4 & X86_CR4_PAE)) { hw_cr4 &= ~X86_CR4_PAE; } } + if (!enable_unrestricted_guest && !is_paging(vcpu)) + /* + * SMEP/SMAP is disabled if CPU is in non-paging mode in + * hardware. However KVM always uses paging mode without + * unrestricted guest. + * To emulate this behavior, SMEP/SMAP needs to be manually + * disabled when guest switches to non-paging mode. + */ + hw_cr4 &= ~(X86_CR4_SMEP | X86_CR4_SMAP); + vmcs_writel(CR4_READ_SHADOW, cr4); vmcs_writel(GUEST_CR4, hw_cr4); return 0; @@ -4780,8 +4781,7 @@ vmx_set_cr0(vcpu, cr0); /* enter rmode */ vmx->vcpu.arch.cr0 = cr0; vmx_set_cr4(vcpu, 0); - if (!init_event) - vmx_set_efer(vcpu, 0); + vmx_set_efer(vcpu, 0); vmx_fpu_activate(vcpu); update_exception_bitmap(vcpu); @@ -5146,6 +5146,13 @@ kvm_run->debug.arch.pc = vmcs_readl(GUEST_CS_BASE) + rip; kvm_run->debug.arch.exception = ex_no; break; + case AC_VECTOR: + /* + * We have already enabled interrupts and pre-emption, so + * it's OK to loop here if that is what will happen. + */ + kvm_queue_exception_e(vcpu, AC_VECTOR, error_code); + return 1; default: kvm_run->exit_reason = KVM_EXIT_EXCEPTION; kvm_run->ex.exception = ex_no; @@ -6134,6 +6141,8 @@ memcpy(vmx_msr_bitmap_longmode_x2apic, vmx_msr_bitmap_longmode, PAGE_SIZE); + set_bit(0, vmx_vpid_bitmap); /* 0 is reserved for host */ + if (enable_apicv) { for (msr = 0x800; msr <= 0x8ff; msr++) vmx_disable_intercept_msr_read_x2apic(msr); @@ -8632,17 +8641,22 @@ u64 ipat = 0; /* For VT-d and EPT combination - * 1. MMIO: guest may want to apply WC, trust it. + * 1. MMIO: always map as UC * 2. EPT with VT-d: * a. VT-d without snooping control feature: can't guarantee the - * result, try to trust guest. So the same as item 1. + * result, try to trust guest. * b. VT-d with snooping control feature: snooping control feature of * VT-d engine can guarantee the cache correctness. Just set it * to WB to keep consistent with host. So the same as item 3. * 3. EPT without VT-d: always map as WB and set IPAT=1 to keep * consistent with host MTRR */ - if (!is_mmio && !kvm_arch_has_noncoherent_dma(vcpu->kvm)) { + if (is_mmio) { + cache = MTRR_TYPE_UNCACHABLE; + goto exit; + } + + if (!kvm_arch_has_noncoherent_dma(vcpu->kvm)) { ipat = VMX_EPT_IPAT_BIT; cache = MTRR_TYPE_WRBACK; goto exit; --- linux-raspi2-4.2.0.orig/arch/x86/kvm/x86.c +++ linux-raspi2-4.2.0/arch/x86/kvm/x86.c @@ -621,7 +621,9 @@ if ((cr0 ^ old_cr0) & update_bits) kvm_mmu_reset_context(vcpu); - if ((cr0 ^ old_cr0) & X86_CR0_CD) + if (((cr0 ^ old_cr0) & X86_CR0_CD) && + kvm_arch_has_noncoherent_dma(vcpu->kvm) && + !kvm_check_has_quirk(vcpu->kvm, KVM_X86_QUIRK_CD_NW_CLEARED)) kvm_zap_gfn_range(vcpu->kvm, 0, ~0ULL); return 0; @@ -2388,6 +2390,8 @@ case MSR_IA32_LASTINTFROMIP: case MSR_IA32_LASTINTTOIP: case MSR_K8_SYSCFG: + case MSR_K8_TSEG_ADDR: + case MSR_K8_TSEG_MASK: case MSR_K7_HWCR: case MSR_VM_HSAVE_PA: case MSR_K8_INT_PENDING_MSG: @@ -3638,10 +3642,12 @@ static int kvm_vm_ioctl_set_pit(struct kvm *kvm, struct kvm_pit_state *ps) { int r = 0; + int i; mutex_lock(&kvm->arch.vpit->pit_state.lock); memcpy(&kvm->arch.vpit->pit_state, ps, sizeof(struct kvm_pit_state)); - kvm_pit_load_count(kvm, 0, ps->channels[0].count, 0); + for (i = 0; i < 3; i++) + kvm_pit_load_count(kvm, i, ps->channels[i].count, 0); mutex_unlock(&kvm->arch.vpit->pit_state.lock); return r; } @@ -3662,6 +3668,7 @@ static int kvm_vm_ioctl_set_pit2(struct kvm *kvm, struct kvm_pit_state2 *ps) { int r = 0, start = 0; + int i; u32 prev_legacy, cur_legacy; mutex_lock(&kvm->arch.vpit->pit_state.lock); prev_legacy = kvm->arch.vpit->pit_state.flags & KVM_PIT_FLAGS_HPET_LEGACY; @@ -3671,7 +3678,8 @@ memcpy(&kvm->arch.vpit->pit_state.channels, &ps->channels, sizeof(kvm->arch.vpit->pit_state.channels)); kvm->arch.vpit->pit_state.flags = ps->flags; - kvm_pit_load_count(kvm, 0, kvm->arch.vpit->pit_state.channels[0].count, start); + for (i = 0; i < 3; i++) + kvm_pit_load_count(kvm, i, kvm->arch.vpit->pit_state.channels[i].count, start); mutex_unlock(&kvm->arch.vpit->pit_state.lock); return r; } @@ -4258,6 +4266,15 @@ return kvm_read_guest_virt_helper(addr, val, bytes, vcpu, 0, exception); } +static int kvm_read_guest_phys_system(struct x86_emulate_ctxt *ctxt, + unsigned long addr, void *val, unsigned int bytes) +{ + struct kvm_vcpu *vcpu = emul_to_vcpu(ctxt); + int r = kvm_vcpu_read_guest(vcpu, addr, val, bytes); + + return r < 0 ? X86EMUL_IO_NEEDED : X86EMUL_CONTINUE; +} + int kvm_write_guest_virt_system(struct x86_emulate_ctxt *ctxt, gva_t addr, void *val, unsigned int bytes, @@ -4993,6 +5010,7 @@ .write_gpr = emulator_write_gpr, .read_std = kvm_read_guest_virt_system, .write_std = kvm_write_guest_virt_system, + .read_phys = kvm_read_guest_phys_system, .fetch = kvm_fetch_guest_virt, .read_emulated = emulator_read_emulated, .write_emulated = emulator_write_emulated, @@ -5803,7 +5821,7 @@ goto out; } if (ops->disabled_by_bios()) { - printk(KERN_ERR "kvm: disabled by bios\n"); + printk(KERN_WARNING "kvm: disabled by bios\n"); r = -EOPNOTSUPP; goto out; } @@ -6704,6 +6722,12 @@ return 1; } +static inline bool kvm_vcpu_running(struct kvm_vcpu *vcpu) +{ + return (vcpu->arch.mp_state == KVM_MP_STATE_RUNNABLE && + !vcpu->arch.apf.halted); +} + static int vcpu_run(struct kvm_vcpu *vcpu) { int r; @@ -6712,8 +6736,7 @@ vcpu->srcu_idx = srcu_read_lock(&kvm->srcu); for (;;) { - if (vcpu->arch.mp_state == KVM_MP_STATE_RUNNABLE && - !vcpu->arch.apf.halted) + if (kvm_vcpu_running(vcpu)) r = vcpu_enter_guest(vcpu); else r = vcpu_block(kvm, vcpu); @@ -8009,19 +8032,36 @@ kvm_mmu_invalidate_zap_all_pages(kvm); } +static inline bool kvm_vcpu_has_events(struct kvm_vcpu *vcpu) +{ + if (!list_empty_careful(&vcpu->async_pf.done)) + return true; + + if (kvm_apic_has_events(vcpu)) + return true; + + if (vcpu->arch.pv.pv_unhalted) + return true; + + if (atomic_read(&vcpu->arch.nmi_queued)) + return true; + + if (test_bit(KVM_REQ_SMI, &vcpu->requests)) + return true; + + if (kvm_arch_interrupt_allowed(vcpu) && + kvm_cpu_has_interrupt(vcpu)) + return true; + + return false; +} + int kvm_arch_vcpu_runnable(struct kvm_vcpu *vcpu) { if (is_guest_mode(vcpu) && kvm_x86_ops->check_nested_events) kvm_x86_ops->check_nested_events(vcpu, false); - return (vcpu->arch.mp_state == KVM_MP_STATE_RUNNABLE && - !vcpu->arch.apf.halted) - || !list_empty_careful(&vcpu->async_pf.done) - || kvm_apic_has_events(vcpu) - || vcpu->arch.pv.pv_unhalted - || atomic_read(&vcpu->arch.nmi_queued) || - (kvm_arch_interrupt_allowed(vcpu) && - kvm_cpu_has_interrupt(vcpu)); + return kvm_vcpu_running(vcpu) || kvm_vcpu_has_events(vcpu); } int kvm_arch_vcpu_should_kick(struct kvm_vcpu *vcpu) --- linux-raspi2-4.2.0.orig/arch/x86/math-emu/get_address.c +++ linux-raspi2-4.2.0/arch/x86/math-emu/get_address.c @@ -20,6 +20,8 @@ #include #include +#include +#include #include "fpu_system.h" #include "exception.h" --- linux-raspi2-4.2.0.orig/arch/x86/mm/fault.c +++ linux-raspi2-4.2.0/arch/x86/mm/fault.c @@ -20,6 +20,7 @@ #include /* kmemcheck_*(), ... */ #include /* VSYSCALL_ADDR */ #include /* emulate_vsyscall */ +#include /* struct vm86 */ #define CREATE_TRACE_POINTS #include @@ -301,14 +302,16 @@ check_v8086_mode(struct pt_regs *regs, unsigned long address, struct task_struct *tsk) { +#ifdef CONFIG_VM86 unsigned long bit; - if (!v8086_mode(regs)) + if (!v8086_mode(regs) || !tsk->thread.vm86) return; bit = (address - 0xA0000) >> PAGE_SHIFT; if (bit < 32) - tsk->thread.screen_bitmap |= 1 << bit; + tsk->thread.vm86->screen_bitmap |= 1 << bit; +#endif } static bool low_pfn(unsigned long pfn) --- linux-raspi2-4.2.0.orig/arch/x86/mm/init_32.c +++ linux-raspi2-4.2.0/arch/x86/mm/init_32.c @@ -137,6 +137,7 @@ vaddr = start; pgd_idx = pgd_index(vaddr); + pmd_idx = pmd_index(vaddr); for ( ; (pgd_idx < PTRS_PER_PGD) && (vaddr != end); pgd_idx++) { for (; (pmd_idx < PTRS_PER_PMD) && (vaddr != end); --- linux-raspi2-4.2.0.orig/arch/x86/mm/init_64.c +++ linux-raspi2-4.2.0/arch/x86/mm/init_64.c @@ -1132,7 +1132,7 @@ * has been zapped already via cleanup_highmem(). */ all_end = roundup((unsigned long)_brk_end, PMD_SIZE); - set_memory_nx(rodata_start, (all_end - rodata_start) >> PAGE_SHIFT); + set_memory_nx(text_end, (all_end - text_end) >> PAGE_SHIFT); rodata_test(); --- linux-raspi2-4.2.0.orig/arch/x86/mm/mpx.c +++ linux-raspi2-4.2.0/arch/x86/mm/mpx.c @@ -622,6 +622,29 @@ } /* + * We only want to do a 4-byte get_user() on 32-bit. Otherwise, + * we might run off the end of the bounds table if we are on + * a 64-bit kernel and try to get 8 bytes. + */ +int get_user_bd_entry(struct mm_struct *mm, unsigned long *bd_entry_ret, + long __user *bd_entry_ptr) +{ + u32 bd_entry_32; + int ret; + + if (is_64bit_mm(mm)) + return get_user(*bd_entry_ret, bd_entry_ptr); + + /* + * Note that get_user() uses the type of the *pointer* to + * establish the size of the get, not the destination. + */ + ret = get_user(bd_entry_32, (u32 __user *)bd_entry_ptr); + *bd_entry_ret = bd_entry_32; + return ret; +} + +/* * Get the base of bounds tables pointed by specific bounds * directory entry. */ @@ -641,7 +664,7 @@ int need_write = 0; pagefault_disable(); - ret = get_user(bd_entry, bd_entry_ptr); + ret = get_user_bd_entry(mm, &bd_entry, bd_entry_ptr); pagefault_enable(); if (!ret) break; @@ -736,11 +759,23 @@ */ static inline unsigned long bd_entry_virt_space(struct mm_struct *mm) { - unsigned long long virt_space = (1ULL << boot_cpu_data.x86_virt_bits); - if (is_64bit_mm(mm)) - return virt_space / MPX_BD_NR_ENTRIES_64; - else - return virt_space / MPX_BD_NR_ENTRIES_32; + unsigned long long virt_space; + unsigned long long GB = (1ULL << 30); + + /* + * This covers 32-bit emulation as well as 32-bit kernels + * running on 64-bit harware. + */ + if (!is_64bit_mm(mm)) + return (4ULL * GB) / MPX_BD_NR_ENTRIES_32; + + /* + * 'x86_virt_bits' returns what the hardware is capable + * of, and returns the full >32-bit adddress space when + * running 32-bit kernels on 64-bit hardware. + */ + virt_space = (1ULL << boot_cpu_data.x86_virt_bits); + return virt_space / MPX_BD_NR_ENTRIES_64; } /* --- linux-raspi2-4.2.0.orig/arch/x86/pci/intel_mid_pci.c +++ linux-raspi2-4.2.0/arch/x86/pci/intel_mid_pci.c @@ -35,6 +35,9 @@ #define PCIE_CAP_OFFSET 0x100 +/* Quirks for the listed devices */ +#define PCI_DEVICE_ID_INTEL_MRFL_MMC 0x1190 + /* Fixed BAR fields */ #define PCIE_VNDR_CAP_ID_FIXED_BAR 0x00 /* Fixed BAR (TBD) */ #define PCI_FIXED_BAR_0_SIZE 0x04 @@ -214,10 +217,27 @@ if (dev->irq_managed && dev->irq > 0) return 0; - if (intel_mid_identify_cpu() == INTEL_MID_CPU_CHIP_TANGIER) + switch (intel_mid_identify_cpu()) { + case INTEL_MID_CPU_CHIP_TANGIER: polarity = 0; /* active high */ - else + + /* Special treatment for IRQ0 */ + if (dev->irq == 0) { + /* + * TNG has IRQ0 assigned to eMMC controller. But there + * are also other devices with bogus PCI configuration + * that have IRQ0 assigned. This check ensures that + * eMMC gets it. + */ + if (dev->device != PCI_DEVICE_ID_INTEL_MRFL_MMC) + return -EBUSY; + } + break; + default: polarity = 1; /* active low */ + break; + } + ioapic_set_alloc_attr(&info, dev_to_node(&dev->dev), 1, polarity); /* --- linux-raspi2-4.2.0.orig/arch/x86/platform/efi/efi.c +++ linux-raspi2-4.2.0/arch/x86/platform/efi/efi.c @@ -705,6 +705,70 @@ } /* + * Iterate the EFI memory map in reverse order because the regions + * will be mapped top-down. The end result is the same as if we had + * mapped things forward, but doesn't require us to change the + * existing implementation of efi_map_region(). + */ +static inline void *efi_map_next_entry_reverse(void *entry) +{ + /* Initial call */ + if (!entry) + return memmap.map_end - memmap.desc_size; + + entry -= memmap.desc_size; + if (entry < memmap.map) + return NULL; + + return entry; +} + +/* + * efi_map_next_entry - Return the next EFI memory map descriptor + * @entry: Previous EFI memory map descriptor + * + * This is a helper function to iterate over the EFI memory map, which + * we do in different orders depending on the current configuration. + * + * To begin traversing the memory map @entry must be %NULL. + * + * Returns %NULL when we reach the end of the memory map. + */ +static void *efi_map_next_entry(void *entry) +{ + if (!efi_enabled(EFI_OLD_MEMMAP) && efi_enabled(EFI_64BIT)) { + /* + * Starting in UEFI v2.5 the EFI_PROPERTIES_TABLE + * config table feature requires us to map all entries + * in the same order as they appear in the EFI memory + * map. That is to say, entry N must have a lower + * virtual address than entry N+1. This is because the + * firmware toolchain leaves relative references in + * the code/data sections, which are split and become + * separate EFI memory regions. Mapping things + * out-of-order leads to the firmware accessing + * unmapped addresses. + * + * Since we need to map things this way whether or not + * the kernel actually makes use of + * EFI_PROPERTIES_TABLE, let's just switch to this + * scheme by default for 64-bit. + */ + return efi_map_next_entry_reverse(entry); + } + + /* Initial call */ + if (!entry) + return memmap.map; + + entry += memmap.desc_size; + if (entry >= memmap.map_end) + return NULL; + + return entry; +} + +/* * Map the efi memory ranges of the runtime services and update new_mmap with * virtual addresses. */ @@ -714,7 +778,8 @@ unsigned long left = 0; efi_memory_desc_t *md; - for (p = memmap.map; p < memmap.map_end; p += memmap.desc_size) { + p = NULL; + while ((p = efi_map_next_entry(p))) { md = p; if (!(md->attribute & EFI_MEMORY_RUNTIME)) { #ifdef CONFIG_X86_64 --- linux-raspi2-4.2.0.orig/arch/x86/xen/enlighten.c +++ linux-raspi2-4.2.0/arch/x86/xen/enlighten.c @@ -33,6 +33,10 @@ #include #include +#ifdef CONFIG_KEXEC +#include +#endif + #include #include #include @@ -1800,6 +1804,21 @@ .notifier_call = xen_hvm_cpu_notify, }; +#ifdef CONFIG_KEXEC +static void xen_hvm_shutdown(void) +{ + native_machine_shutdown(); + if (kexec_in_progress) + xen_reboot(SHUTDOWN_soft_reset); +} + +static void xen_hvm_crash_shutdown(struct pt_regs *regs) +{ + native_machine_crash_shutdown(regs); + xen_reboot(SHUTDOWN_soft_reset); +} +#endif + static void __init xen_hvm_guest_init(void) { if (xen_pv_domain()) @@ -1819,6 +1838,10 @@ x86_init.irqs.intr_init = xen_init_IRQ; xen_hvm_init_time_ops(); xen_hvm_init_mmu_ops(); +#ifdef CONFIG_KEXEC + machine_ops.shutdown = xen_hvm_shutdown; + machine_ops.crash_shutdown = xen_hvm_crash_shutdown; +#endif } #endif --- linux-raspi2-4.2.0.orig/arch/x86/xen/setup.c +++ linux-raspi2-4.2.0/arch/x86/xen/setup.c @@ -612,7 +612,7 @@ xen_ignore_unusable(map, memmap.nr_entries); /* Make sure the Xen-supplied memory map is well-ordered. */ - sanitize_e820_map(map, memmap.nr_entries, &memmap.nr_entries); + sanitize_e820_map(map, ARRAY_SIZE(map), &memmap.nr_entries); max_pages = xen_get_max_pages(); if (max_pages > max_pfn) --- linux-raspi2-4.2.0.orig/arch/xtensa/include/asm/asmmacro.h +++ linux-raspi2-4.2.0/arch/xtensa/include/asm/asmmacro.h @@ -35,9 +35,10 @@ * __loop as * restart loop. 'as' register must not have been modified! * - * __endla ar, at, incr + * __endla ar, as, incr * ar start address (modified) - * as scratch register used by macro + * as scratch register used by __loops/__loopi macros or + * end address used by __loopt macro * inc increment */ @@ -97,7 +98,7 @@ .endm /* - * loop from ar to ax + * loop from ar to as */ .macro __loopt ar, as, at, incr_log2 --- linux-raspi2-4.2.0.orig/arch/xtensa/include/asm/traps.h +++ linux-raspi2-4.2.0/arch/xtensa/include/asm/traps.h @@ -25,30 +25,39 @@ { #if XCHAL_NUM_AREGS > 16 __asm__ __volatile__ ( - " call12 1f\n" + " call8 1f\n" " _j 2f\n" " retw\n" " .align 4\n" "1:\n" +#if XCHAL_NUM_AREGS == 32 + " _entry a1, 32\n" + " addi a8, a0, 3\n" + " _entry a1, 16\n" + " mov a12, a12\n" + " retw\n" +#else " _entry a1, 48\n" - " addi a12, a0, 3\n" -#if XCHAL_NUM_AREGS > 32 - " .rept (" __stringify(XCHAL_NUM_AREGS) " - 32) / 12\n" + " call12 1f\n" + " retw\n" + " .align 4\n" + "1:\n" + " .rept (" __stringify(XCHAL_NUM_AREGS) " - 16) / 12\n" " _entry a1, 48\n" " mov a12, a0\n" " .endr\n" -#endif - " _entry a1, 48\n" + " _entry a1, 16\n" #if XCHAL_NUM_AREGS % 12 == 0 - " mov a8, a8\n" -#elif XCHAL_NUM_AREGS % 12 == 4 " mov a12, a12\n" -#elif XCHAL_NUM_AREGS % 12 == 8 +#elif XCHAL_NUM_AREGS % 12 == 4 " mov a4, a4\n" +#elif XCHAL_NUM_AREGS % 12 == 8 + " mov a8, a8\n" #endif " retw\n" +#endif "2:\n" - : : : "a12", "a13", "memory"); + : : : "a8", "a9", "memory"); #else __asm__ __volatile__ ( " mov a12, a12\n" --- linux-raspi2-4.2.0.orig/arch/xtensa/include/asm/vectors.h +++ linux-raspi2-4.2.0/arch/xtensa/include/asm/vectors.h @@ -48,6 +48,9 @@ #define LOAD_MEMORY_ADDRESS 0xD0003000 #endif +#define RESET_VECTOR1_VADDR (VIRTUAL_MEMORY_ADDRESS + \ + XCHAL_RESET_VECTOR1_PADDR) + #else /* !defined(CONFIG_MMU) */ /* MMU Not being used - Virtual == Physical */ @@ -60,6 +63,8 @@ /* Loaded just above possibly live vectors */ #define LOAD_MEMORY_ADDRESS (PLATFORM_DEFAULT_MEM_START + 0x3000) +#define RESET_VECTOR1_VADDR (XCHAL_RESET_VECTOR1_VADDR) + #endif /* CONFIG_MMU */ #define XC_VADDR(offset) (VIRTUAL_MEMORY_ADDRESS + offset) @@ -71,10 +76,6 @@ VECBASE_RESET_VADDR) #define RESET_VECTOR_VADDR XC_VADDR(RESET_VECTOR_VECOFS) -#define RESET_VECTOR1_VECOFS (XCHAL_RESET_VECTOR1_VADDR - \ - VECBASE_RESET_VADDR) -#define RESET_VECTOR1_VADDR XC_VADDR(RESET_VECTOR1_VECOFS) - #if defined(XCHAL_HAVE_VECBASE) && XCHAL_HAVE_VECBASE #define USER_VECTOR_VADDR XC_VADDR(XCHAL_USER_VECOFS) --- linux-raspi2-4.2.0.orig/arch/xtensa/kernel/Makefile +++ linux-raspi2-4.2.0/arch/xtensa/kernel/Makefile @@ -15,6 +15,7 @@ obj-$(CONFIG_SMP) += smp.o mxhead.o AFLAGS_head.o += -mtext-section-literals +AFLAGS_mxhead.o += -mtext-section-literals # In the Xtensa architecture, assembly generates literals which must always # precede the L32R instruction with a relative offset less than 256 kB. --- linux-raspi2-4.2.0.orig/arch/xtensa/kernel/entry.S +++ linux-raspi2-4.2.0/arch/xtensa/kernel/entry.S @@ -335,8 +335,10 @@ s32i a2, a1, PT_SYSCALL movi a2, 0 s32i a3, a1, PT_EXCVADDR +#if XCHAL_HAVE_LOOPS xsr a2, lcount s32i a2, a1, PT_LCOUNT +#endif /* It is now save to restore the EXC_TABLE_FIXUP variable. */ @@ -368,11 +370,12 @@ s32i a3, a1, PT_PS # save ps /* Save lbeg, lend */ - +#if XCHAL_HAVE_LOOPS rsr a2, lbeg rsr a3, lend s32i a2, a1, PT_LBEG s32i a3, a1, PT_LEND +#endif /* Save SCOMPARE1 */ @@ -568,12 +571,13 @@ * (if we have restored WSBITS-1 frames). */ +2: #if XCHAL_HAVE_THREADPTR l32i a3, a1, PT_THREADPTR wur a3, threadptr #endif -2: j common_exception_exit + j common_exception_exit /* This is the kernel exception exit. * We avoided to do a MOVSP when we entered the exception, but we @@ -663,13 +667,14 @@ wsr a3, sar /* Restore LBEG, LEND, LCOUNT */ - +#if XCHAL_HAVE_LOOPS l32i a2, a1, PT_LBEG l32i a3, a1, PT_LEND wsr a2, lbeg l32i a2, a1, PT_LCOUNT wsr a3, lend wsr a2, lcount +#endif /* We control single stepping through the ICOUNTLEVEL register. */ @@ -1820,7 +1825,7 @@ mov a12, a0 .endr #endif - _entry a1, 48 + _entry a1, 16 #if XCHAL_NUM_AREGS % 12 == 0 mov a8, a8 #elif XCHAL_NUM_AREGS % 12 == 4 @@ -1844,7 +1849,7 @@ ENTRY(_switch_to) - entry a1, 16 + entry a1, 48 mov a11, a3 # and 'next' (a3) --- linux-raspi2-4.2.0.orig/arch/xtensa/kernel/head.S +++ linux-raspi2-4.2.0/arch/xtensa/kernel/head.S @@ -249,7 +249,7 @@ __loopt a2, a3, a4, 2 s32i a0, a2, 0 - __endla a2, a4, 4 + __endla a2, a3, 4 #if XCHAL_DCACHE_IS_WRITEBACK --- linux-raspi2-4.2.0.orig/arch/xtensa/kernel/setup.c +++ linux-raspi2-4.2.0/arch/xtensa/kernel/setup.c @@ -334,7 +334,10 @@ extern char _Level6InterruptVector_text_start; extern char _Level6InterruptVector_text_end; #endif - +#ifdef CONFIG_SMP +extern char _SecondaryResetVector_text_start; +extern char _SecondaryResetVector_text_end; +#endif #ifdef CONFIG_S32C1I_SELFTEST @@ -506,6 +509,10 @@ __pa(&_Level6InterruptVector_text_end), 0); #endif +#ifdef CONFIG_SMP + mem_reserve(__pa(&_SecondaryResetVector_text_start), + __pa(&_SecondaryResetVector_text_end), 0); +#endif parse_early_param(); bootmem_init(); --- linux-raspi2-4.2.0.orig/arch/xtensa/kernel/vectors.S +++ linux-raspi2-4.2.0/arch/xtensa/kernel/vectors.S @@ -478,6 +478,9 @@ ENDPROC(_DoubleExceptionVector) + .end literal_prefix + + .text /* * Fixup handler for TLB miss in double exception handler for window owerflow. * We get here with windowbase set to the window that was being spilled and @@ -587,7 +590,6 @@ ENDPROC(window_overflow_restore_a0_fixup) - .end literal_prefix /* * Debug interrupt vector * --- linux-raspi2-4.2.0.orig/arch/xtensa/kernel/vmlinux.lds.S +++ linux-raspi2-4.2.0/arch/xtensa/kernel/vmlinux.lds.S @@ -166,8 +166,6 @@ RELOCATE_ENTRY(_DebugInterruptVector_text, .DebugInterruptVector.text); #if defined(CONFIG_SMP) - RELOCATE_ENTRY(_SecondaryResetVector_literal, - .SecondaryResetVector.literal); RELOCATE_ENTRY(_SecondaryResetVector_text, .SecondaryResetVector.text); #endif @@ -282,17 +280,11 @@ #if defined(CONFIG_SMP) - SECTION_VECTOR (_SecondaryResetVector_literal, - .SecondaryResetVector.literal, - RESET_VECTOR1_VADDR - 4, - SIZEOF(.DoubleExceptionVector.text), - .DoubleExceptionVector.text) - SECTION_VECTOR (_SecondaryResetVector_text, .SecondaryResetVector.text, RESET_VECTOR1_VADDR, - 4, - .SecondaryResetVector.literal) + SIZEOF(.DoubleExceptionVector.text), + .DoubleExceptionVector.text) . = LOADADDR(.SecondaryResetVector.text)+SIZEOF(.SecondaryResetVector.text); --- linux-raspi2-4.2.0.orig/arch/xtensa/lib/usercopy.S +++ linux-raspi2-4.2.0/arch/xtensa/lib/usercopy.S @@ -222,8 +222,8 @@ loopnez a7, .Loop2done #else /* !XCHAL_HAVE_LOOPS */ beqz a7, .Loop2done - slli a10, a7, 4 - add a10, a10, a3 # a10 = end of last 16B source chunk + slli a12, a7, 4 + add a12, a12, a3 # a12 = end of last 16B source chunk #endif /* !XCHAL_HAVE_LOOPS */ .Loop2: EX(l32i, a7, a3, 4, l_fixup) @@ -241,7 +241,7 @@ EX(s32i, a9, a5, 12, s_fixup) addi a5, a5, 16 #if !XCHAL_HAVE_LOOPS - blt a3, a10, .Loop2 + blt a3, a12, .Loop2 #endif /* !XCHAL_HAVE_LOOPS */ .Loop2done: bbci.l a4, 3, .L12 --- linux-raspi2-4.2.0.orig/arch/xtensa/platforms/iss/setup.c +++ linux-raspi2-4.2.0/arch/xtensa/platforms/iss/setup.c @@ -61,7 +61,9 @@ #if XCHAL_NUM_IBREAK > 0 "wsr a2, ibreakenable\n\t" #endif +#if XCHAL_HAVE_LOOPS "wsr a2, lcount\n\t" +#endif "movi a2, 0x1f\n\t" "wsr a2, ps\n\t" "isync\n\t" --- linux-raspi2-4.2.0.orig/arch/xtensa/platforms/xt2000/setup.c +++ linux-raspi2-4.2.0/arch/xtensa/platforms/xt2000/setup.c @@ -72,7 +72,9 @@ #if XCHAL_NUM_IBREAK > 0 "wsr a2, ibreakenable\n\t" #endif +#if XCHAL_HAVE_LOOPS "wsr a2, lcount\n\t" +#endif "movi a2, 0x1f\n\t" "wsr a2, ps\n\t" "isync\n\t" --- linux-raspi2-4.2.0.orig/arch/xtensa/platforms/xtfpga/setup.c +++ linux-raspi2-4.2.0/arch/xtensa/platforms/xtfpga/setup.c @@ -63,7 +63,9 @@ #if XCHAL_NUM_IBREAK > 0 "wsr a2, ibreakenable\n\t" #endif +#if XCHAL_HAVE_LOOPS "wsr a2, lcount\n\t" +#endif "movi a2, 0x1f\n\t" "wsr a2, ps\n\t" "isync\n\t" --- linux-raspi2-4.2.0.orig/block/blk-cgroup.c +++ linux-raspi2-4.2.0/block/blk-cgroup.c @@ -387,6 +387,9 @@ blkg_destroy(blkg); spin_unlock(&blkcg->lock); } + + q->root_blkg = NULL; + q->root_rl.blkg = NULL; } /* --- linux-raspi2-4.2.0.orig/block/blk-core.c +++ linux-raspi2-4.2.0/block/blk-core.c @@ -578,7 +578,7 @@ q->queue_lock = &q->__queue_lock; spin_unlock_irq(lock); - bdi_destroy(&q->backing_dev_info); + bdi_unregister(&q->backing_dev_info); /* @q is and will stay empty, shutdown and put */ blk_put_queue(q); --- linux-raspi2-4.2.0.orig/block/blk-flush.c +++ linux-raspi2-4.2.0/block/blk-flush.c @@ -73,6 +73,7 @@ #include "blk.h" #include "blk-mq.h" +#include "blk-mq-tag.h" /* FLUSH/FUA sequences */ enum { @@ -226,7 +227,12 @@ struct blk_flush_queue *fq = blk_get_flush_queue(q, flush_rq->mq_ctx); if (q->mq_ops) { + struct blk_mq_hw_ctx *hctx; + + /* release the tag's ownership to the req cloned from */ spin_lock_irqsave(&fq->mq_flush_lock, flags); + hctx = q->mq_ops->map_queue(q, flush_rq->mq_ctx->cpu); + blk_mq_tag_set_rq(hctx, flush_rq->tag, fq->orig_rq); flush_rq->tag = -1; } @@ -308,11 +314,18 @@ /* * Borrow tag from the first request since they can't - * be in flight at the same time. + * be in flight at the same time. And acquire the tag's + * ownership for flush req. */ if (q->mq_ops) { + struct blk_mq_hw_ctx *hctx; + flush_rq->mq_ctx = first_rq->mq_ctx; flush_rq->tag = first_rq->tag; + fq->orig_rq = first_rq; + + hctx = q->mq_ops->map_queue(q, first_rq->mq_ctx->cpu); + blk_mq_tag_set_rq(hctx, first_rq->tag, flush_rq); } flush_rq->cmd_type = REQ_TYPE_FS; --- linux-raspi2-4.2.0.orig/block/blk-mq-sysfs.c +++ linux-raspi2-4.2.0/block/blk-mq-sysfs.c @@ -141,15 +141,26 @@ static ssize_t sysfs_list_show(char *page, struct list_head *list, char *msg) { - char *start_page = page; struct request *rq; + int len = snprintf(page, PAGE_SIZE - 1, "%s:\n", msg); - page += sprintf(page, "%s:\n", msg); + list_for_each_entry(rq, list, queuelist) { + const int rq_len = 2 * sizeof(rq) + 2; - list_for_each_entry(rq, list, queuelist) - page += sprintf(page, "\t%p\n", rq); + /* if the output will be truncated */ + if (PAGE_SIZE - 1 < len + rq_len) { + /* backspacing if it can't hold '\t...\n' */ + if (PAGE_SIZE - 1 < len + 5) + len -= rq_len; + len += snprintf(page + len, PAGE_SIZE - 1 - len, + "\t...\n"); + break; + } + len += snprintf(page + len, PAGE_SIZE - 1 - len, + "\t%p\n", rq); + } - return page - start_page; + return len; } static ssize_t blk_mq_sysfs_rq_list_show(struct blk_mq_ctx *ctx, char *page) --- linux-raspi2-4.2.0.orig/block/blk-mq-tag.c +++ linux-raspi2-4.2.0/block/blk-mq-tag.c @@ -429,7 +429,7 @@ for (bit = find_first_bit(&bm->word, bm->depth); bit < bm->depth; bit = find_next_bit(&bm->word, bm->depth, bit + 1)) { - rq = blk_mq_tag_to_rq(hctx->tags, off + bit); + rq = hctx->tags->rqs[off + bit]; if (rq->q == hctx->queue) fn(hctx, rq, data, reserved); } @@ -453,7 +453,7 @@ for (bit = find_first_bit(&bm->word, bm->depth); bit < bm->depth; bit = find_next_bit(&bm->word, bm->depth, bit + 1)) { - rq = blk_mq_tag_to_rq(tags, off + bit); + rq = tags->rqs[off + bit]; fn(rq, data, reserved); } @@ -628,6 +628,7 @@ { bt_free(&tags->bitmap_tags); bt_free(&tags->breserved_tags); + free_cpumask_var(tags->cpumask); kfree(tags); } --- linux-raspi2-4.2.0.orig/block/blk-mq-tag.h +++ linux-raspi2-4.2.0/block/blk-mq-tag.h @@ -89,4 +89,16 @@ __blk_mq_tag_idle(hctx); } +/* + * This helper should only be used for flush request to share tag + * with the request cloned from, and both the two requests can't be + * in flight at the same time. The caller has to make sure the tag + * can't be freed. + */ +static inline void blk_mq_tag_set_rq(struct blk_mq_hw_ctx *hctx, + unsigned int tag, struct request *rq) +{ + hctx->tags->rqs[tag] = rq; +} + #endif --- linux-raspi2-4.2.0.orig/block/blk-mq.c +++ linux-raspi2-4.2.0/block/blk-mq.c @@ -559,23 +559,9 @@ } EXPORT_SYMBOL(blk_mq_abort_requeue_list); -static inline bool is_flush_request(struct request *rq, - struct blk_flush_queue *fq, unsigned int tag) -{ - return ((rq->cmd_flags & REQ_FLUSH_SEQ) && - fq->flush_rq->tag == tag); -} - struct request *blk_mq_tag_to_rq(struct blk_mq_tags *tags, unsigned int tag) { - struct request *rq = tags->rqs[tag]; - /* mq_ctx of flush rq is always cloned from the corresponding req */ - struct blk_flush_queue *fq = blk_get_flush_queue(rq->q, rq->mq_ctx); - - if (!is_flush_request(rq, fq, tag)) - return rq; - - return fq->flush_rq; + return tags->rqs[tag]; } EXPORT_SYMBOL(blk_mq_tag_to_rq); @@ -1821,7 +1807,6 @@ hctx = q->mq_ops->map_queue(q, i); cpumask_set_cpu(i, hctx->cpumask); - cpumask_set_cpu(i, hctx->tags->cpumask); ctx->index_hw = hctx->nr_ctx; hctx->ctxs[hctx->nr_ctx++] = ctx; } @@ -1861,6 +1846,14 @@ hctx->next_cpu = cpumask_first(hctx->cpumask); hctx->next_cpu_batch = BLK_MQ_CPU_WORK_BATCH; } + + queue_for_each_ctx(q, ctx, i) { + if (!cpu_online(i)) + continue; + + hctx = q->mq_ops->map_queue(q, i); + cpumask_set_cpu(i, hctx->tags->cpumask); + } } static void blk_mq_update_tag_set_depth(struct blk_mq_tag_set *set) @@ -2270,10 +2263,8 @@ int i; for (i = 0; i < set->nr_hw_queues; i++) { - if (set->tags[i]) { + if (set->tags[i]) blk_mq_free_rq_map(set, set->tags[i], i); - free_cpumask_var(set->tags[i]->cpumask); - } } kfree(set->tags); --- linux-raspi2-4.2.0.orig/block/blk-sysfs.c +++ linux-raspi2-4.2.0/block/blk-sysfs.c @@ -502,6 +502,7 @@ struct request_queue *q = container_of(kobj, struct request_queue, kobj); + bdi_exit(&q->backing_dev_info); blkcg_exit_queue(q); if (q->elevator) { --- linux-raspi2-4.2.0.orig/block/blk.h +++ linux-raspi2-4.2.0/block/blk.h @@ -22,6 +22,12 @@ struct list_head flush_queue[2]; struct list_head flush_data_in_flight; struct request *flush_rq; + + /* + * flush_rq shares tag with this rq, both can't be active + * at the same time + */ + struct request *orig_rq; spinlock_t mq_flush_lock; }; --- linux-raspi2-4.2.0.orig/block/scsi_ioctl.c +++ linux-raspi2-4.2.0/block/scsi_ioctl.c @@ -28,6 +28,9 @@ #include #include #include +#include +#include +#include #include #include @@ -705,8 +708,17 @@ case SG_GET_RESERVED_SIZE: case SG_SET_RESERVED_SIZE: case SG_EMULATED_HOST: + case BLKFLSBUF: + case BLKROSET: return 0; case CDROM_GET_CAPABILITY: + case CDROM_DRIVE_STATUS: + case FDGETPRM: + case RAID_VERSION: + case MTIOCGET: +#ifdef CONFIG_COMPAT + case 0x801c6d02: /* MTIOCGET32 */ +#endif /* Keep this until we remove the printk below. udev sends it * and we do not want to spam dmesg about it. CD-ROMs do * not have partitions, so we get here only for disks. --- linux-raspi2-4.2.0.orig/crypto/ablkcipher.c +++ linux-raspi2-4.2.0/crypto/ablkcipher.c @@ -706,7 +706,7 @@ err: if (err != -EAGAIN) break; - if (signal_pending(current)) { + if (fatal_signal_pending(current)) { err = -EINTR; break; } --- linux-raspi2-4.2.0.orig/crypto/ahash.c +++ linux-raspi2-4.2.0/crypto/ahash.c @@ -544,7 +544,8 @@ struct crypto_alg *base = &alg->halg.base; if (alg->halg.digestsize > PAGE_SIZE / 8 || - alg->halg.statesize > PAGE_SIZE / 8) + alg->halg.statesize > PAGE_SIZE / 8 || + alg->halg.statesize == 0) return -EINVAL; base->cra_type = &crypto_ahash_type; --- linux-raspi2-4.2.0.orig/crypto/algapi.c +++ linux-raspi2-4.2.0/crypto/algapi.c @@ -335,7 +335,7 @@ crypto_alg_tested(larval->alg.cra_driver_name, 0); } - err = wait_for_completion_interruptible(&larval->completion); + err = wait_for_completion_killable(&larval->completion); WARN_ON(err); out: --- linux-raspi2-4.2.0.orig/crypto/algif_hash.c +++ linux-raspi2-4.2.0/crypto/algif_hash.c @@ -181,9 +181,14 @@ struct sock *sk2; struct alg_sock *ask2; struct hash_ctx *ctx2; + bool more; int err; - err = crypto_ahash_export(req, state); + lock_sock(sk); + more = ctx->more; + err = more ? crypto_ahash_export(req, state) : 0; + release_sock(sk); + if (err) return err; @@ -194,7 +199,10 @@ sk2 = newsock->sk; ask2 = alg_sk(sk2); ctx2 = ask2->private; - ctx2->more = 1; + ctx2->more = more; + + if (!more) + return err; err = crypto_ahash_import(&ctx2->req, state); if (err) { --- linux-raspi2-4.2.0.orig/crypto/api.c +++ linux-raspi2-4.2.0/crypto/api.c @@ -172,7 +172,7 @@ struct crypto_larval *larval = (void *)alg; long timeout; - timeout = wait_for_completion_interruptible_timeout( + timeout = wait_for_completion_killable_timeout( &larval->completion, 60 * HZ); alg = larval->adult; @@ -445,7 +445,7 @@ err: if (err != -EAGAIN) break; - if (signal_pending(current)) { + if (fatal_signal_pending(current)) { err = -EINTR; break; } @@ -562,7 +562,7 @@ err: if (err != -EAGAIN) break; - if (signal_pending(current)) { + if (fatal_signal_pending(current)) { err = -EINTR; break; } --- linux-raspi2-4.2.0.orig/crypto/crypto_user.c +++ linux-raspi2-4.2.0/crypto/crypto_user.c @@ -376,7 +376,7 @@ err = PTR_ERR(alg); if (err != -EAGAIN) break; - if (signal_pending(current)) { + if (fatal_signal_pending(current)) { err = -EINTR; break; } --- linux-raspi2-4.2.0.orig/debian.master/NOTES +++ linux-raspi2-4.2.0/debian.master/NOTES @@ -0,0 +1,4 @@ +eSCO patch removed. Replaced upstream with a disable_esco module parm. +airprime: Module gone, use option driver instead +AppArmor: Patch is all there and ported. Ooops when enabled, so default + off (still can be enabled apparmor=1) --- linux-raspi2-4.2.0.orig/debian.master/abi/4.2.0-26.31/abiname +++ linux-raspi2-4.2.0/debian.master/abi/4.2.0-26.31/abiname @@ -0,0 +1 @@ +26 --- linux-raspi2-4.2.0.orig/debian.master/abi/4.2.0-26.31/amd64/generic +++ linux-raspi2-4.2.0/debian.master/abi/4.2.0-26.31/amd64/generic @@ -0,0 +1,19468 @@ +EXPORT_SYMBOL arch/x86/kvm/kvm 0xc9bd12a2 kvm_cpu_has_pending_timer +EXPORT_SYMBOL crypto/gf128mul 0x0c2f123f gf128mul_4k_bbe +EXPORT_SYMBOL crypto/gf128mul 0x1068004b gf128mul_bbe +EXPORT_SYMBOL crypto/gf128mul 0x2f2889a0 gf128mul_init_64k_lle +EXPORT_SYMBOL crypto/gf128mul 0x3755f990 gf128mul_init_64k_bbe +EXPORT_SYMBOL crypto/gf128mul 0x384ef9ce gf128mul_64k_bbe +EXPORT_SYMBOL crypto/gf128mul 0x56af0dbd gf128mul_x_ble +EXPORT_SYMBOL crypto/gf128mul 0x83581089 gf128mul_init_4k_lle +EXPORT_SYMBOL crypto/gf128mul 0x9b2560b9 gf128mul_init_4k_bbe +EXPORT_SYMBOL crypto/gf128mul 0x9e13f6f6 gf128mul_lle +EXPORT_SYMBOL crypto/gf128mul 0xbd17a0df gf128mul_4k_lle +EXPORT_SYMBOL crypto/gf128mul 0xc0890413 gf128mul_64k_lle +EXPORT_SYMBOL crypto/gf128mul 0xd60736ec gf128mul_free_64k +EXPORT_SYMBOL crypto/mcryptd 0x73892a61 mcryptd_arm_flusher +EXPORT_SYMBOL crypto/xor 0x5b6c00e6 xor_blocks +EXPORT_SYMBOL drivers/acpi/nfit 0xa7e9a159 to_nfit_uuid +EXPORT_SYMBOL drivers/acpi/video 0x59bfe9b9 acpi_video_get_edid +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 0x8826c13b acpi_video_register +EXPORT_SYMBOL drivers/acpi/video 0xe92ca535 acpi_video_set_dmi_backlight_type +EXPORT_SYMBOL drivers/atm/suni 0x8f7fe815 suni_init +EXPORT_SYMBOL drivers/atm/uPD98402 0x6d9406f8 uPD98402_init +EXPORT_SYMBOL drivers/bcma/bcma 0xdbd70f20 bcma_core_dma_translation +EXPORT_SYMBOL drivers/bcma/bcma 0xfad119d3 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 0x01a8ffec pi_schedule_claimed +EXPORT_SYMBOL drivers/block/paride/paride 0x0d13c427 pi_release +EXPORT_SYMBOL drivers/block/paride/paride 0x2cf2c5c5 pi_connect +EXPORT_SYMBOL drivers/block/paride/paride 0x33bc45d0 pi_read_regr +EXPORT_SYMBOL drivers/block/paride/paride 0x4267110a pi_register_driver +EXPORT_SYMBOL drivers/block/paride/paride 0x43c7fe57 pi_init +EXPORT_SYMBOL drivers/block/paride/paride 0x46d34f60 pi_write_block +EXPORT_SYMBOL drivers/block/paride/paride 0x774abd60 pi_read_block +EXPORT_SYMBOL drivers/block/paride/paride 0x910c67e1 paride_unregister +EXPORT_SYMBOL drivers/block/paride/paride 0xb21ba07d pi_unregister_driver +EXPORT_SYMBOL drivers/block/paride/paride 0xb5092575 paride_register +EXPORT_SYMBOL drivers/block/paride/paride 0xc405c87b pi_disconnect +EXPORT_SYMBOL drivers/block/paride/paride 0xd52a919a pi_write_regr +EXPORT_SYMBOL drivers/block/paride/paride 0xe8bdb6ee pi_do_claimed +EXPORT_SYMBOL drivers/bluetooth/btbcm 0x0c3b2d28 btbcm_patchram +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x1348760d ipmi_request_settime +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x16dcec76 ipmi_set_my_address +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x1a10c898 ipmi_set_maintenance_mode +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x1aba5db8 ipmi_unregister_smi +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x1fae3bac ipmi_addr_src_to_str +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x40f2b10c ipmi_alloc_smi_msg +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x423b776a ipmi_create_user +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x4c971bec ipmi_smi_msg_received +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x524f6f51 ipmi_get_my_address +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x5e80f37c ipmi_unregister_for_cmd +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x5fcdcc05 ipmi_get_my_LUN +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x67cb9784 ipmi_poll_interface +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x78fd36e7 ipmi_request_supply_msgs +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x804f922a ipmi_addr_length +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x81cc4230 ipmi_register_smi +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x8c8ee770 ipmi_destroy_user +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x96cbcc81 ipmi_get_version +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xa2a98b91 ipmi_get_maintenance_mode +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xb866161a ipmi_smi_watcher_register +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xd69f8567 ipmi_set_gets_events +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xe0fa83f2 ipmi_register_for_cmd +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xe4682d26 ipmi_smi_add_proc_entry +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xe4f4665b ipmi_validate_addr +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xe6945c18 ipmi_get_smi_info +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xe6ab72a6 ipmi_set_my_LUN +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xecf0152f ipmi_smi_watcher_unregister +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xf2576cb9 ipmi_smi_watchdog_pretimeout +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xfcb77cfd ipmi_free_recv_msg +EXPORT_SYMBOL drivers/char/nvram 0x0f28cb91 nvram_read_byte +EXPORT_SYMBOL drivers/char/nvram 0x17ff2c1d __nvram_read_byte +EXPORT_SYMBOL drivers/char/nvram 0x2adec1e0 __nvram_check_checksum +EXPORT_SYMBOL drivers/char/nvram 0x7da28f12 nvram_check_checksum +EXPORT_SYMBOL drivers/char/nvram 0x9ce3f83f nvram_write_byte +EXPORT_SYMBOL drivers/char/nvram 0xa8813189 __nvram_write_byte +EXPORT_SYMBOL drivers/char/tpm/st33zp24/tpm_st33zp24 0x12b479e6 st33zp24_probe +EXPORT_SYMBOL drivers/char/tpm/st33zp24/tpm_st33zp24 0x265d361f st33zp24_pm_resume +EXPORT_SYMBOL drivers/char/tpm/st33zp24/tpm_st33zp24 0x7e28f797 st33zp24_remove +EXPORT_SYMBOL drivers/char/tpm/st33zp24/tpm_st33zp24 0xcab9cb52 st33zp24_pm_suspend +EXPORT_SYMBOL drivers/char/xillybus/xillybus_core 0x25978d50 xillybus_isr +EXPORT_SYMBOL drivers/char/xillybus/xillybus_core 0x2d252428 xillybus_endpoint_remove +EXPORT_SYMBOL drivers/char/xillybus/xillybus_core 0x8521adde xillybus_endpoint_discovery +EXPORT_SYMBOL drivers/char/xillybus/xillybus_core 0xac872a46 xillybus_init_endpoint +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0x1eae0fa9 dw_dma_cyclic_prep +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0x5699e7e1 dw_dma_get_src_addr +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0x68bd0359 dw_dma_cyclic_start +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0x731faac8 dw_dma_get_dst_addr +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0xa6812a3e dw_dma_cyclic_stop +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0xeaf49059 dw_dma_cyclic_free +EXPORT_SYMBOL drivers/dma/ioat/ioatdma 0x4c24f882 ioat_dma_setup_interrupts +EXPORT_SYMBOL drivers/edac/edac_core 0x76bdfc01 edac_mc_find +EXPORT_SYMBOL drivers/firewire/firewire-core 0x04d0f641 fw_core_remove_descriptor +EXPORT_SYMBOL drivers/firewire/firewire-core 0x0d9d7080 fw_iso_context_start +EXPORT_SYMBOL drivers/firewire/firewire-core 0x0f7d6af8 fw_csr_string +EXPORT_SYMBOL drivers/firewire/firewire-core 0x16e91e21 fw_csr_iterator_next +EXPORT_SYMBOL drivers/firewire/firewire-core 0x2088bb41 fw_card_add +EXPORT_SYMBOL drivers/firewire/firewire-core 0x286820e3 fw_core_remove_address_handler +EXPORT_SYMBOL drivers/firewire/firewire-core 0x2885fec5 fw_get_request_speed +EXPORT_SYMBOL drivers/firewire/firewire-core 0x3c56ef91 fw_workqueue +EXPORT_SYMBOL drivers/firewire/firewire-core 0x4f2f564b fw_fill_response +EXPORT_SYMBOL drivers/firewire/firewire-core 0x50f6afaa fw_device_enable_phys_dma +EXPORT_SYMBOL drivers/firewire/firewire-core 0x53cb1f01 fw_core_add_address_handler +EXPORT_SYMBOL drivers/firewire/firewire-core 0x5cf2f7a3 fw_bus_type +EXPORT_SYMBOL drivers/firewire/firewire-core 0x645b715f fw_core_add_descriptor +EXPORT_SYMBOL drivers/firewire/firewire-core 0x65c9438b fw_csr_iterator_init +EXPORT_SYMBOL drivers/firewire/firewire-core 0x696cec87 fw_iso_context_destroy +EXPORT_SYMBOL drivers/firewire/firewire-core 0x6b46a0bb fw_schedule_bus_reset +EXPORT_SYMBOL drivers/firewire/firewire-core 0x6ff684ad fw_iso_buffer_init +EXPORT_SYMBOL drivers/firewire/firewire-core 0x776124b7 fw_core_handle_request +EXPORT_SYMBOL drivers/firewire/firewire-core 0x86468d44 fw_rcode_string +EXPORT_SYMBOL drivers/firewire/firewire-core 0x892e5282 fw_send_response +EXPORT_SYMBOL drivers/firewire/firewire-core 0x8bd2fe30 fw_iso_buffer_destroy +EXPORT_SYMBOL drivers/firewire/firewire-core 0x8edd43d0 fw_run_transaction +EXPORT_SYMBOL drivers/firewire/firewire-core 0x90863005 fw_high_memory_region +EXPORT_SYMBOL drivers/firewire/firewire-core 0x9941a332 fw_iso_context_create +EXPORT_SYMBOL drivers/firewire/firewire-core 0x9e75ff44 fw_send_request +EXPORT_SYMBOL drivers/firewire/firewire-core 0xa0d59046 fw_core_remove_card +EXPORT_SYMBOL drivers/firewire/firewire-core 0xad6238a1 fw_iso_context_queue +EXPORT_SYMBOL drivers/firewire/firewire-core 0xbbefd561 fw_core_handle_bus_reset +EXPORT_SYMBOL drivers/firewire/firewire-core 0xcad77c19 fw_core_handle_response +EXPORT_SYMBOL drivers/firewire/firewire-core 0xcbf9f2dd fw_cancel_transaction +EXPORT_SYMBOL drivers/firewire/firewire-core 0xccfab00f fw_iso_context_flush_completions +EXPORT_SYMBOL drivers/firewire/firewire-core 0xe4a59106 fw_card_initialize +EXPORT_SYMBOL drivers/firewire/firewire-core 0xeaa6f01f fw_iso_context_queue_flush +EXPORT_SYMBOL drivers/firewire/firewire-core 0xf1d39865 fw_iso_resource_manage +EXPORT_SYMBOL drivers/firewire/firewire-core 0xf7c0ff8d fw_iso_context_stop +EXPORT_SYMBOL drivers/firmware/dcdbas 0xa75079d6 dcdbas_smi_request +EXPORT_SYMBOL drivers/fmc/fmc 0x002860de fmc_driver_register +EXPORT_SYMBOL drivers/fmc/fmc 0x0e104067 fmc_free_sdb_tree +EXPORT_SYMBOL drivers/fmc/fmc 0x290d0f9b fmc_device_unregister +EXPORT_SYMBOL drivers/fmc/fmc 0x42ad48a5 fmc_show_sdb_tree +EXPORT_SYMBOL drivers/fmc/fmc 0x42b8fe77 fmc_find_sdb_device +EXPORT_SYMBOL drivers/fmc/fmc 0x567cfd0c fmc_driver_unregister +EXPORT_SYMBOL drivers/fmc/fmc 0x6ac86684 fmc_device_register +EXPORT_SYMBOL drivers/fmc/fmc 0x871c4e61 fmc_device_unregister_n +EXPORT_SYMBOL drivers/fmc/fmc 0x8a066f16 fmc_scan_sdb_tree +EXPORT_SYMBOL drivers/fmc/fmc 0xac2bdc0d fmc_reprogram +EXPORT_SYMBOL drivers/fmc/fmc 0xe6dc854c fmc_device_register_n +EXPORT_SYMBOL drivers/gpu/drm/amd/amdkfd/amdkfd 0x022ac0b4 kgd2kfd_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0012e65b drm_sysfs_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00e89a8d drm_modeset_unlock +EXPORT_SYMBOL drivers/gpu/drm/drm 0x017993a6 drm_vblank_on +EXPORT_SYMBOL drivers/gpu/drm/drm 0x033d031e drm_warn_on_modeset_not_all_locked +EXPORT_SYMBOL drivers/gpu/drm/drm 0x060774d0 drm_prime_pages_to_sg +EXPORT_SYMBOL drivers/gpu/drm/drm 0x063c18fc drm_agp_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x06585ce3 drm_calc_timestamping_constants +EXPORT_SYMBOL drivers/gpu/drm/drm 0x067c3b08 drm_property_create_blob +EXPORT_SYMBOL drivers/gpu/drm/drm 0x08e99c47 drm_gem_vm_open +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0a2b2940 drm_modeset_lock_all +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0a72f765 drm_clflush_virt_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0aaa4ef9 drm_connector_unregister +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0ae4b94c drm_ht_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0ca0530b drm_mode_crtc_set_gamma_size +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0d1c8f49 drm_legacy_mmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0e089cc6 drm_gem_prime_fd_to_handle +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0e45a24c drm_agp_bind_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0e7a4c89 drm_debugfs_remove_files +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0ea8ea27 drm_agp_info +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0f7f4748 drm_flip_work_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0fd60df2 drm_get_connector_status_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1062ab5b drm_legacy_getsarea +EXPORT_SYMBOL drivers/gpu/drm/drm 0x107742a9 drm_get_subpixel_order_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x11cde4a7 drm_master_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0x13b30850 drm_bridge_enable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x14a9a178 drm_get_format_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x14ef5491 drm_mode_create_rotation_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1532c6c0 drm_legacy_rmmap_locked +EXPORT_SYMBOL drivers/gpu/drm/drm 0x15e7ea44 drm_bridge_attach +EXPORT_SYMBOL drivers/gpu/drm/drm 0x16509f5c drm_gem_mmap_obj +EXPORT_SYMBOL drivers/gpu/drm/drm 0x166218d2 drm_mode_config_reset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1783158e drm_put_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0x182814ff drm_encoder_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x194eadaa drm_edid_header_is_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x196d1ae1 drm_mode_duplicate +EXPORT_SYMBOL drivers/gpu/drm/drm 0x19b52a52 drm_framebuffer_unregister_private +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1a22d3f7 drm_vma_offset_lookup_locked +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1a546ddd drm_mm_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1a770ac3 drm_detect_hdmi_monitor +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1a96c4a2 drm_gem_create_mmap_offset_size +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1b242cf7 drm_vma_offset_lookup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1b7380bb drm_mode_connector_attach_encoder +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1c979c34 drm_plane_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1cb6a4f5 drm_crtc_vblank_count +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1d095d5a drm_legacy_idlelock_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1d3c302d drm_gem_handle_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1dd71f7a drm_err +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1f9f439d drm_atomic_state_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x203a8bdb drm_agp_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x20645642 drm_debug +EXPORT_SYMBOL drivers/gpu/drm/drm 0x20e4b2f1 drm_add_edid_modes +EXPORT_SYMBOL drivers/gpu/drm/drm 0x21083622 drm_reinit_primary_mode_group +EXPORT_SYMBOL drivers/gpu/drm/drm 0x22ab9c29 drm_gem_free_mmap_offset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x22acaf62 drm_get_cea_aspect_ratio +EXPORT_SYMBOL drivers/gpu/drm/drm 0x22e33f2a drm_wait_one_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0x24bb5611 drm_atomic_set_mode_for_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x257f06fe drm_atomic_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x266c1906 drm_modeset_acquire_fini +EXPORT_SYMBOL drivers/gpu/drm/drm 0x27dfa58a drm_atomic_connector_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x28a002fd drm_mode_validate_basic +EXPORT_SYMBOL drivers/gpu/drm/drm 0x28a86f93 drm_legacy_ioremapfree +EXPORT_SYMBOL drivers/gpu/drm/drm 0x29a010e6 drm_mm_insert_node_in_range_generic +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2a05b2e3 drm_mode_create_tile_group +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2d50570f drm_rect_calc_hscale +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2de1313b drm_connector_unplug_all +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2e7a4300 drm_rgb_quant_range_selectable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2ec54ac6 drm_prime_sg_to_page_addr_arrays +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2fe76323 drm_framebuffer_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2feab8ae drm_atomic_get_connector_state +EXPORT_SYMBOL drivers/gpu/drm/drm 0x30335241 drm_vblank_pre_modeset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x32226d24 drm_mode_create_aspect_ratio_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x323c644f drm_vblank_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x32c2097a drm_i2c_encoder_detect +EXPORT_SYMBOL drivers/gpu/drm/drm 0x34ae27a4 drm_pci_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x34b67f3f drm_connector_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x352b5a92 drm_read +EXPORT_SYMBOL drivers/gpu/drm/drm 0x35b6b3b9 drm_vblank_count +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3724efda drm_plane_from_index +EXPORT_SYMBOL drivers/gpu/drm/drm 0x37d7c5ec drm_atomic_async_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x37e45938 drm_property_create_object +EXPORT_SYMBOL drivers/gpu/drm/drm 0x37ebe743 drm_mm_replace_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0x37f1eb69 drm_gem_dumb_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3847e19f drm_mode_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x38a27e4e drm_legacy_ioremap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x38a4f7ae drm_format_num_planes +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3924b5e6 drm_calc_vbltimestamp_from_scanoutpos +EXPORT_SYMBOL drivers/gpu/drm/drm 0x392b0057 drm_atomic_state_default_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x394637f6 drm_dev_ref +EXPORT_SYMBOL drivers/gpu/drm/drm 0x39cb5e7c drm_pci_set_busid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3ac1fef9 drm_mode_legacy_fb_format +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3b9d009a drm_format_plane_cpp +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3bc346e1 drm_crtc_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3c33a956 drm_vblank_post_modeset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3eb37b9d drm_ht_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x410a851d drm_mode_probed_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4130c5b6 drm_mode_config_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x41daeb14 drm_framebuffer_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4488e2df drm_hdmi_avi_infoframe_from_display_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x44fedc43 drm_i2c_encoder_mode_fixup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x471ace26 drm_property_add_enum +EXPORT_SYMBOL drivers/gpu/drm/drm 0x48f6e97f drm_i2c_encoder_save +EXPORT_SYMBOL drivers/gpu/drm/drm 0x490cfb78 drm_mm_reserve_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4a331611 drm_edid_to_eld +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4a464a34 drm_agp_unbind +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4ba4df3e drm_vma_offset_manager_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4c511235 drm_edid_is_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4d9b3fc7 drm_bridge_disable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4ea1f5a2 drm_gem_object_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4f3775cf drm_gem_mmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x50a83c57 drm_atomic_get_plane_state +EXPORT_SYMBOL drivers/gpu/drm/drm 0x50e28c07 drm_edid_to_sad +EXPORT_SYMBOL drivers/gpu/drm/drm 0x51f10cc6 drm_atomic_set_mode_prop_for_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x52531db2 drm_clflush_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0x526f6f71 drm_rect_calc_hscale_relaxed +EXPORT_SYMBOL drivers/gpu/drm/drm 0x52967e37 drm_atomic_get_crtc_state +EXPORT_SYMBOL drivers/gpu/drm/drm 0x53eb4a32 drm_platform_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x54f4ac90 drm_modeset_backoff_interruptible +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5563102b drm_pcie_get_speed_cap_mask +EXPORT_SYMBOL drivers/gpu/drm/drm 0x55d47c66 drm_ioctl +EXPORT_SYMBOL drivers/gpu/drm/drm 0x563553d9 drm_gem_object_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5653370b drm_framebuffer_lookup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5717efe5 drm_plane_force_disable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x571f3deb drm_crtc_get_hv_timing +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5781881c drm_atomic_set_crtc_for_plane +EXPORT_SYMBOL drivers/gpu/drm/drm 0x57b1ca8a drm_property_lookup_blob +EXPORT_SYMBOL drivers/gpu/drm/drm 0x57b6efe3 drm_ioctl_flags +EXPORT_SYMBOL drivers/gpu/drm/drm 0x58276520 drm_mm_dump_table +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5835623c drm_modeset_backoff +EXPORT_SYMBOL drivers/gpu/drm/drm 0x58e27ee3 drm_property_create_signed_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0x59e19033 drm_platform_set_busid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x59ef50f0 drm_edid_block_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5a015916 drm_agp_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5a90dc89 drm_mode_group_init_legacy_group +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5bab34b3 drm_mode_config_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5cd35b51 drm_irq_install +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5d70765f drm_mode_parse_command_line_for_connector +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5d7318dc drm_global_item_ref +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5e05cfc9 drm_vblank_off +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5e0cf554 drm_i2c_encoder_prepare +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5e4fc266 drm_gem_prime_export +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5f6e55a7 drm_mode_create_from_cmdline_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x60c98c62 drm_property_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x60dbba7d drm_atomic_crtc_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x610696d5 drm_gem_create_mmap_offset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6129fd6a drm_bridge_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x61359a2c drm_framebuffer_unreference +EXPORT_SYMBOL drivers/gpu/drm/drm 0x629c05e1 drm_clflush_sg +EXPORT_SYMBOL drivers/gpu/drm/drm 0x633961d6 drm_debugfs_create_files +EXPORT_SYMBOL drivers/gpu/drm/drm 0x63e7e2b9 drm_agp_enable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6544cc41 drm_mode_object_find +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6545896b drm_dev_unref +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6671f892 drm_modeset_unlock_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x66b448e8 drm_av_sync_delay +EXPORT_SYMBOL drivers/gpu/drm/drm 0x67633846 drm_mm_insert_node_generic +EXPORT_SYMBOL drivers/gpu/drm/drm 0x67a115c2 drm_framebuffer_reference +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6900d335 drm_rect_clip_scaled +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6ac5c487 drm_bridge_post_disable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6ada1924 drm_crtc_vblank_reset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6b1edb88 drm_mode_connector_set_tile_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6bdf155c drm_vma_offset_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6beaf9f2 drm_gem_private_object_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6c8fd0d2 drm_connector_register +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6cae4333 drm_i2c_encoder_mode_set +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6db89310 drm_add_modes_noedid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6e30ba8e drm_rect_rotate_inv +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6f11baad drm_gtf_mode_complex +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6fb2558c drm_gem_object_lookup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x706d3106 drm_vma_offset_manager_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x70cb1ee8 drm_i2c_encoder_dpms +EXPORT_SYMBOL drivers/gpu/drm/drm 0x72820191 drm_hdmi_vendor_infoframe_from_display_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x72827804 drm_modeset_unlock_all +EXPORT_SYMBOL drivers/gpu/drm/drm 0x73190756 drm_property_create_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0x731dee49 drm_crtc_init_with_planes +EXPORT_SYMBOL drivers/gpu/drm/drm 0x73600602 drm_framebuffer_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x73895659 drm_bridge_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0x73e822ec drm_probe_ddc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x74b466ce __drm_modeset_lock_all +EXPORT_SYMBOL drivers/gpu/drm/drm 0x750fd0ab drm_atomic_add_affected_connectors +EXPORT_SYMBOL drivers/gpu/drm/drm 0x76758778 drm_flip_work_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x769c8686 drm_universal_plane_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x77058318 drm_mode_hsync +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7780eb18 drm_pci_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x77e2b612 drm_modeset_drop_locks +EXPORT_SYMBOL drivers/gpu/drm/drm 0x784c3064 drm_panel_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7a762dd3 drm_mode_validate_size +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7b29dd92 drm_atomic_set_crtc_for_connector +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7b4850be drm_agp_bind +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7c20695b drm_i2c_encoder_restore +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7e5e6332 drm_modeset_lock +EXPORT_SYMBOL drivers/gpu/drm/drm 0x800ac5a6 drm_plane_index +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8070da8f drm_mode_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x818d0681 drm_get_edid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x82c2998f drm_flip_work_allocate_task +EXPORT_SYMBOL drivers/gpu/drm/drm 0x82cd1d4c drm_legacy_rmmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x82e7e63c drm_gem_object_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x82fae1df drm_atomic_state_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x830f3f11 drm_vblank_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x831ed330 drm_dev_unregister +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8357cd64 drm_flip_work_queue +EXPORT_SYMBOL drivers/gpu/drm/drm 0x852e3750 drm_property_reference_blob +EXPORT_SYMBOL drivers/gpu/drm/drm 0x85907c2b drm_crtc_handle_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0x85d13174 drm_panel_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0x86d06716 drm_gem_dmabuf_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x871ab41a drm_rect_intersect +EXPORT_SYMBOL drivers/gpu/drm/drm 0x87bf6849 drm_gem_put_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0x880d3184 drm_mode_set_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x894c6982 drm_mode_vrefresh +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8d02ec8b drm_mode_create_suggested_offset_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8d16055e drm_mode_connector_update_edid_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8de13715 drm_format_vert_chroma_subsampling +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8eaf1aa6 drm_property_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8eff9111 drm_ht_find_item +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8f749a1a drm_i2c_encoder_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x913ccf85 drm_connector_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x91fec1cc drm_rect_calc_vscale +EXPORT_SYMBOL drivers/gpu/drm/drm 0x92408488 drm_mm_scan_add_block +EXPORT_SYMBOL drivers/gpu/drm/drm 0x925c21a4 drm_mode_copy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9342a51f drm_panel_attach +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9473e3f3 drm_legacy_addbufs_pci +EXPORT_SYMBOL drivers/gpu/drm/drm 0x98ec5713 drm_pci_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9972db48 drm_rect_calc_vscale_relaxed +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9a2838c4 drm_mode_create_dirty_info_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9ba37efa drm_modeset_lock_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9cb5bbb0 drm_atomic_connectors_for_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9d74634f drm_dev_set_unique +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9e929a5c drm_select_eld +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9f7bdefb drm_open +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9fdfdf85 drm_vblank_count_and_time +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa003206b drm_mode_plane_set_obj_prop +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa1c9c5da drm_display_info_set_bus_formats +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa28078b2 drm_edid_duplicate +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa30e35b3 drm_cvt_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa3473963 drm_get_pci_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa3765358 drm_atomic_add_affected_planes +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa4466414 drm_mm_remove_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa46dbf02 drm_gem_get_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa537277b drm_vblank_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa548bd12 drm_ati_pcigart_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa56e1555 drm_legacy_idlelock_take +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa616d4b5 drm_handle_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa78c984a drm_gem_vm_close +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa96acfcb drm_rect_debug_print +EXPORT_SYMBOL drivers/gpu/drm/drm 0xaa04d29d drm_atomic_set_fb_for_plane +EXPORT_SYMBOL drivers/gpu/drm/drm 0xac8c0344 drm_atomic_state_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xae826819 drm_gem_handle_delete +EXPORT_SYMBOL drivers/gpu/drm/drm 0xaf0c1398 drm_modeset_legacy_acquire_ctx +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb053adda drm_rect_rotate +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb296665b drm_legacy_addbufs_agp +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb34de41f drm_flip_work_queue_task +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb49b76df drm_legacy_ioremap_wc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb5540008 drm_global_item_unref +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb5a07fde drm_atomic_legacy_backoff +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb6c7fe76 drm_modeset_acquire_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb797ee07 drm_panel_detach +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb8c7e79c drm_vma_node_is_allowed +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb9548019 drm_noop +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb99bc8d4 drm_bridge_pre_enable +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbbbc01f6 drm_property_create_enum +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbbcc425a drm_mode_equal_no_clocks_no_stereo +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbcd51b52 drm_object_property_set_value +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbcd740a3 drm_mode_set_config_internal +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbd254f7b drm_mode_debug_printmodeline +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbd54c499 drm_bridge_mode_set +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbf9aea19 drm_crtc_vblank_off +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc091b4b5 drm_gem_prime_handle_to_fd +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc187b32c drm_mode_prune_invalid +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc2224be7 drm_poll +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc22b67e5 drm_unplug_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc23e008b drm_agp_acquire +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc360e7e2 drm_ut_debug_printk +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc3676f12 drm_compat_ioctl +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc47921b2 drm_crtc_vblank_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc576e748 drm_vblank_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc5c5a864 drm_gtf_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc6b29498 drm_modeset_lock_interruptible +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc73e763f drm_object_attach_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc77d33c4 drm_i2c_encoder_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc7bad9bd drm_connector_index +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc98409f2 drm_gem_prime_import +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc98f93d4 drm_object_property_get_value +EXPORT_SYMBOL drivers/gpu/drm/drm 0xca45efbc drm_format_horz_chroma_subsampling +EXPORT_SYMBOL drivers/gpu/drm/drm 0xca5c7790 drm_mm_init_scan_with_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0xca62a478 drm_plane_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcd0fc417 drm_ht_just_insert_please +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcd44cf80 drm_crtc_vblank_on +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcd66755c drm_atomic_state_clear +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcfcee5cd drm_property_create_bool +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcff5032c drm_master_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd18f53d3 drm_vma_offset_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd22f8dc3 drm_vma_node_allow +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd2335101 drm_fb_get_bpp_depth +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd281fc46 drm_send_vblank_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd345d4a9 drm_encoder_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd5094dde drm_mode_create_dvi_i_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd52b1d11 drm_mm_init_scan +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd5d17565 drm_legacy_addmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd684719c drm_atomic_check_only +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd70c8470 drm_mm_debug_table +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd92fae33 drm_match_cea_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdbb5a9f5 drm_ht_remove_item +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdca5817f drm_mode_set_crtcinfo +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdcb9bbe1 drm_mode_create_tv_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdd150721 drm_mm_takedown +EXPORT_SYMBOL drivers/gpu/drm/drm 0xde5557f8 drm_pci_exit +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdf08b1a2 drm_atomic_state_default_clear +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdf666902 drm_rotation_simplify +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdfc35dae drm_mode_create_scaling_mode_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe1be5903 drm_crtc_check_viewport +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe390af15 drm_crtc_send_vblank_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe45fd863 drm_vma_node_revoke +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe502a958 drm_mode_equal +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe51d89b5 drm_mm_clean +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe56baf54 drm_mode_get_tile_group +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe7197773 drm_ht_insert_item +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe79f4d7c drm_crtc_wait_one_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe9c523d0 drm_dev_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe9d1033d drm_bridge_mode_fixup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xea2d114b drm_dev_register +EXPORT_SYMBOL drivers/gpu/drm/drm 0xea7b5a74 drm_mode_connector_list_update +EXPORT_SYMBOL drivers/gpu/drm/drm 0xeaca4a43 drm_i2c_encoder_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0xee81b273 drm_ati_pcigart_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xeeaa9025 drm_crtc_vblank_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0xefa988aa drm_prime_gem_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf0e4cc4a drm_modeset_lock_all_crtcs +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf131bf43 drm_crtc_index +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf1421d13 drm_mode_sort +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf59276da drm_mode_connector_set_path_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf6f5f6f3 drm_mode_find_dmt +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf82b6908 drm_property_create_bitmask +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf86d4b08 drm_atomic_plane_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf8b0b712 drm_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfa7e2590 drm_panel_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfb264ec4 drm_set_preferred_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfb325563 drm_flip_work_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfcf54a4f drm_mm_scan_remove_block +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfd063935 drm_edid_to_speaker_allocation +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfd7fe448 drm_property_unreference_blob +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfe88b1bf drm_irq_uninstall +EXPORT_SYMBOL drivers/gpu/drm/drm 0xffc6c87a drm_detect_monitor_audio +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x045e3fab drm_dp_mst_hpd_irq +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x098e47d2 drm_dp_link_train_clock_recovery_delay +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0f96ec70 drm_dp_clock_recovery_ok +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x163251c8 drm_dp_link_train_channel_eq_delay +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x17069320 drm_atomic_helper_cleanup_planes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x1895c1d7 drm_dp_mst_topology_mgr_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x1965d59b drm_dp_mst_topology_mgr_set_mst +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x19bbb430 drm_helper_encoder_in_use +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x1bd37c87 drm_pick_cmdline_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x1ec6db46 drm_dp_update_payload_part2 +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x1fda3a38 drm_dp_find_vcpi_slots +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x23559749 drm_helper_crtc_mode_set +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x23abea5a drm_atomic_helper_crtc_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x24e82596 drm_atomic_helper_commit_modeset_enables +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x285605d9 drm_dp_update_payload_part1 +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x289ed5b0 drm_kms_helper_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x28aea4dd drm_dp_check_act_status +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x28f5413f drm_dp_mst_detect_port +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2b15eaa1 drm_kms_helper_poll_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2ce323ba drm_fb_helper_pan_display +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2d1179b6 drm_helper_disable_unused_functions +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2f142a4d drm_atomic_helper_connector_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x34871adf drm_dp_channel_eq_ok +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3768b9b2 drm_atomic_helper_connector_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x396ef068 drm_fb_helper_blank +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3a05716b drm_dp_link_power_down +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3a29fbf2 drm_atomic_helper_connector_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3a650917 drm_fb_helper_debug_leave +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3b8b7525 drm_fb_helper_fill_fix +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x414f9102 drm_atomic_helper_plane_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x44718abe drm_helper_crtc_mode_set_base +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x45957583 __drm_atomic_helper_crtc_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4ac95200 drm_helper_probe_single_connector_modes_nomerge +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4d272e4a drm_fb_helper_restore_fbdev_mode_unlocked +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4e0e28c7 drm_atomic_helper_set_config +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4eda2fe6 drm_dp_aux_unregister +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x52c24931 drm_atomic_helper_commit_planes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5347c1eb drm_dp_mst_reset_vcpi_slots +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x54540b86 drm_dp_mst_deallocate_vcpi +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x55ae45b2 drm_atomic_helper_crtc_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5a286830 drm_atomic_helper_crtc_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5d2bda3b drm_fb_helper_single_add_all_connectors +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5ea62145 drm_fb_helper_initial_config +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x666b7d58 drm_dp_mst_topology_mgr_resume +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x683436c9 drm_atomic_helper_commit +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x68edfb76 __drm_atomic_helper_crtc_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6ceb6567 drm_atomic_helper_connector_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6deca131 drm_dp_link_configure +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6e4d47cd drm_atomic_helper_prepare_planes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6f9c76b5 drm_crtc_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x711a004a drm_dp_link_rate_to_bw_code +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x71fbec0e drm_atomic_helper_check +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7482e18e drm_atomic_helper_connector_dpms +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x75809816 drm_fb_helper_prepare +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7856df77 drm_dp_mst_topology_mgr_suspend +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x78d1c04a __drm_atomic_helper_connector_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7a801625 drm_atomic_helper_plane_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7c6da49f drm_fb_helper_check_var +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7cda688b drm_dp_link_probe +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7ec2c293 __drm_atomic_helper_connector_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x812ba393 drm_dp_mst_allocate_vcpi +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8135ad54 drm_atomic_helper_commit_modeset_disables +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8395207b drm_dp_dpcd_read_link_status +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x84e924ba drm_dp_get_adjust_request_pre_emphasis +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x851ec4c2 drm_dp_aux_register +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8713e812 drm_helper_connector_dpms +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x87ffb7c4 drm_dp_mst_get_vcpi_slots +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8a8146e1 __drm_atomic_helper_plane_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8cfea310 drm_atomic_helper_plane_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8ecff251 drm_fb_helper_fill_var +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x965d9ba7 drm_helper_resume_force_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9874ef1e drm_helper_move_panel_connectors_to_head +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x99b2f52d drm_helper_mode_fill_fb_struct +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9cb8761b drm_dp_mst_topology_mgr_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9f001679 drm_fb_helper_fini +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa0970b74 drm_kms_helper_poll_fini +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa47826e4 drm_dp_calc_pbn_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa5c134a2 drm_dp_dpcd_read +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa77858bb drm_dp_get_adjust_request_voltage +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa8d6809d drm_dp_bw_code_to_link_rate +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa8f9d383 drm_helper_hpd_irq_event +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xac393359 drm_atomic_helper_crtc_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xac3eb8db drm_crtc_helper_set_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb812264d __drm_atomic_helper_plane_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb88b60b8 drm_fb_helper_debug_enter +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb8e86dbe drm_atomic_helper_update_legacy_modeset_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb953f107 drm_atomic_helper_swap_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xba2d3276 drm_dp_mst_dump_topology +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xbf74c6e4 drm_primary_helper_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc2f09798 drm_dp_mst_get_edid +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc3426f97 drm_crtc_helper_set_config +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc48d4b09 drm_dp_link_power_up +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc4db3aa0 drm_kms_helper_poll_enable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc588b7a7 drm_fb_helper_setcmap +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc64055b3 drm_fb_helper_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xca8556f1 drm_atomic_helper_update_plane +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xcc86b180 drm_atomic_helper_page_flip +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xcd5330c6 drm_plane_helper_check_update +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xcfce1ff1 drm_fb_helper_set_par +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd4e732cf drm_helper_crtc_in_use +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd7611472 drm_atomic_helper_check_planes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xdfcbbfb7 drm_fb_helper_remove_one_connector +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe316714d drm_atomic_helper_wait_for_vblanks +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe45ed652 drm_primary_helper_disable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe72c267e drm_atomic_helper_disable_plane +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe8289cf0 drm_fb_helper_add_one_connector +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xeaa63baa drm_primary_helper_update +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xebec361e drm_atomic_helper_commit_planes_on_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xec249ae3 drm_plane_helper_disable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xecf741cf drm_has_preferred_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf21b1c94 drm_helper_probe_single_connector_modes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf3db0a3c drm_primary_helper_funcs +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf4a74c32 drm_dp_dpcd_write +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf5915b37 drm_kms_helper_poll_disable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf806a69e drm_atomic_helper_plane_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf93fa437 drm_atomic_helper_check_modeset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xfa0e1a9e drm_fb_helper_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xfad23688 drm_plane_helper_update +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x00acd7f4 ttm_agp_tt_unpopulate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x0184b467 ttm_bo_dma_acc_size +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x07aed73b ttm_bo_wait +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x0bab7f47 ttm_read_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x11817a2f ttm_bo_del_sub_from_lru +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x14b1272c ttm_bo_evict_mm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x18e70989 ttm_bo_unlock_delayed_workqueue +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x1940e4cd ttm_write_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x1fbde2ca ttm_bo_unref +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x22ec80fe ttm_vt_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x24765c33 ttm_read_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x26945f40 ttm_page_alloc_debugfs +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x2b54aa9a ttm_object_file_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x2dbd9163 ttm_bo_mem_space +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x2f093aac ttm_mem_io_reserve +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x33a88d11 ttm_dma_tt_fini +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x3880bdff ttm_bo_device_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x40e45523 ttm_bo_init_mm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x42a657ba ttm_bo_manager_func +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x42f4bcda ttm_bo_move_accel_cleanup +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x45f0fd07 ttm_eu_reserve_buffers +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x485a5bc0 ttm_ref_object_add +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x4e8dd264 ttm_bo_global_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x510f84fc ttm_agp_tt_populate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x545b7ed3 ttm_mem_io_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x554e6a98 ttm_agp_tt_create +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x564e1aee ttm_bo_global_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x6052860c ttm_round_pot +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x62210010 ttm_bo_move_memcpy +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x63017bf6 ttm_bo_clean_mm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x6a76ce7d ttm_bo_mmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x6c8dc6bf ttm_vt_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x6e875de9 ttm_lock_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x72bf1ef8 ttm_bo_mem_put +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x737b018f ttm_eu_fence_buffer_objects +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x742f599d ttm_pool_unpopulate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x78c1ee93 ttm_prime_object_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x799b5dac ttm_bo_synccpu_write_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x80d86f0e ttm_object_device_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x836d8fd0 ttm_suspend_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x880a15ad ttm_base_object_lookup +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x946d9ea3 ttm_write_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x94894449 ttm_base_object_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x998e45c0 ttm_ref_object_base_unref +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x9a657c3c ttm_mem_global_free +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x9ef60452 ttm_tt_fini +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x9fb5b4e2 ttm_bo_device_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xa19e9495 ttm_bo_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xa1ac11f8 ttm_mem_global_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xa2d0f836 ttm_bo_kunmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xa4624ec4 ttm_bo_kmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xa4aa0107 ttm_bo_unmap_virtual +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xa8679bc9 ttm_tt_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xa8c4786f ttm_bo_acc_size +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xa99e3d8d ttm_mem_io_free +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xac4becbd ttm_fbdev_mmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xb597c10a ttm_bo_lock_delayed_workqueue +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xbbb23f5b ttm_bo_validate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xc4d4618d ttm_io_prot +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xc70e8cde ttm_dma_tt_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xce5d3b73 ttm_mem_global_alloc +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xce6e43a8 ttm_base_object_lookup_for_ref +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xcf49f835 ttm_suspend_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xcf67c299 ttm_ref_object_exists +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xd49a85f6 ttm_bo_add_to_lru +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xd8edb115 ttm_base_object_unref +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xdd238dd3 ttm_tt_bind +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xdfe09157 ttm_tt_set_placement_caching +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xe2e782a4 ttm_bo_move_ttm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xe3208138 ttm_bo_create +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xe464d0c6 ttm_bo_swapout_all +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xe6c711c1 ttm_bo_synccpu_write_grab +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xe78f1aab ttm_eu_backoff_reservation +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xe9bc1bff ttm_pool_populate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xf31e2fd5 ttm_object_device_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xf8691317 ttm_mem_global_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xfbc2c5ec ttm_object_file_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xfde9a2ee ttm_mem_io_unlock +EXPORT_SYMBOL drivers/hv/hv_vmbus 0x8c824096 vmbus_sendpacket +EXPORT_SYMBOL drivers/hv/hv_vmbus 0x9361c73d vmbus_sendpacket_ctl +EXPORT_SYMBOL drivers/hv/hv_vmbus 0xe0e19d58 vmbus_recvpacket +EXPORT_SYMBOL drivers/hwmon/hwmon-vid 0x0903c239 vid_from_reg +EXPORT_SYMBOL drivers/hwmon/hwmon-vid 0xef1c781c vid_which_vrm +EXPORT_SYMBOL drivers/hwmon/sch56xx-common 0x0e2a6864 sch56xx_read_virtual_reg +EXPORT_SYMBOL drivers/hwmon/sch56xx-common 0x0f5877d4 sch56xx_read_virtual_reg16 +EXPORT_SYMBOL drivers/hwmon/sch56xx-common 0x34257f35 sch56xx_watchdog_unregister +EXPORT_SYMBOL drivers/hwmon/sch56xx-common 0xa286ba12 sch56xx_watchdog_register +EXPORT_SYMBOL drivers/hwmon/sch56xx-common 0xe5022f95 sch56xx_read_virtual_reg12 +EXPORT_SYMBOL drivers/hwmon/sch56xx-common 0xed1d2a08 sch56xx_write_virtual_reg +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-bit 0x287ae747 i2c_bit_add_numbered_bus +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-bit 0x3307e64c i2c_bit_add_bus +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-bit 0x7cacde75 i2c_bit_algo +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-pca 0x7110c3c0 i2c_pca_add_numbered_bus +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-pca 0xdfaf3d66 i2c_pca_add_bus +EXPORT_SYMBOL drivers/i2c/busses/i2c-amd756 0x2fcb4762 amd756_smbus +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x10054cce mma9551_write_config_words +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x10dad241 mma9551_write_config_word +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x12a69b25 mma9551_read_config_byte +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x1fd3e1d2 mma9551_read_version +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x30ebbdf8 mma9551_read_accel_chan +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x41967df1 mma9551_set_device_state +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x41ef446c mma9551_read_accel_scale +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x4a23e0a2 mma9551_read_config_words +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x4ae05e8d mma9551_set_power_state +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x7568f281 mma9551_gpio_config +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x7d836fa8 mma9551_app_reset +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x9a764c75 mma9551_read_status_byte +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xb24230f1 mma9551_write_config_byte +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xb6673633 mma9551_read_status_word +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xbcd7fe96 mma9551_sleep +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xbeba737b mma9551_update_config_bits +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xc7d5c40f mma9551_read_status_words +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xdd84b710 mma9551_read_config_word +EXPORT_SYMBOL drivers/iio/accel/st_accel 0xb5731877 st_accel_common_remove +EXPORT_SYMBOL drivers/iio/accel/st_accel 0xdd220247 st_accel_common_probe +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x08a35510 hid_sensor_read_raw_hyst_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x268c559d hid_sensor_write_raw_hyst_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x31a64cbe hid_sensor_read_poll_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x3c38b5fd hid_sensor_write_samp_freq_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x3ec06cf5 hid_sensor_read_samp_freq_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x9b0e7b4e hid_sensor_parse_common_attributes +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0xc83a92bf hid_sensor_format_scale +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-trigger 0x37e28dae hid_sensor_pm_ops +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-trigger 0x5a01220f hid_sensor_setup_trigger +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-trigger 0xcef22b0a hid_sensor_power_state +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-trigger 0xd4389d97 hid_sensor_remove_trigger +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0x8350a33e ssp_enable_sensor +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0x8c5b9dc8 ssp_get_sensor_delay +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0x9fd87b1d ssp_disable_sensor +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0xd0cbdc19 ssp_change_delay +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0xd81921a0 ssp_register_consumer +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/ssp_iio 0x842e3139 ssp_common_process_data +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/ssp_iio 0xb4eb1818 ssp_common_buffer_postdisable +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/ssp_iio 0xe9800002 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 0x2332e83d st_sensors_sysfs_sampling_frequency_avail +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x2e426318 st_sensors_read_info_raw +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x755bbce1 st_sensors_get_buffer_element +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x82bc9d0f st_sensors_power_disable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x82f079f5 st_sensors_init_sensor +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x93a17d37 st_sensors_power_enable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x97d3e649 st_sensors_deallocate_trigger +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xb2a8887e st_sensors_check_device_support +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xb3ce7f22 st_sensors_set_dataready_irq +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xb7380f1a st_sensors_sysfs_scale_avail +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xb93de2c6 st_sensors_set_fullscale_by_gain +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xbea5722b st_sensors_set_axis_enable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xd6ecfa01 st_sensors_set_enable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xdb4c3194 st_sensors_allocate_trigger +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xf9339a8f st_sensors_set_odr +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors_i2c 0x25573ef4 st_sensors_i2c_configure +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors_spi 0x36551174 st_sensors_spi_configure +EXPORT_SYMBOL drivers/iio/gyro/st_gyro 0xaf64a128 st_gyro_common_remove +EXPORT_SYMBOL drivers/iio/gyro/st_gyro 0xc726e424 st_gyro_common_probe +EXPORT_SYMBOL drivers/iio/imu/adis_lib 0x19466170 adis_enable_irq +EXPORT_SYMBOL drivers/iio/imu/adis_lib 0x5160a948 adis_debugfs_reg_access +EXPORT_SYMBOL drivers/iio/industrialio 0x19e2be7f iio_trigger_register +EXPORT_SYMBOL drivers/iio/industrialio 0x2d6bcdcb iio_trigger_generic_data_rdy_poll +EXPORT_SYMBOL drivers/iio/industrialio 0x326db270 iio_device_unregister +EXPORT_SYMBOL drivers/iio/industrialio 0x32821d7d iio_triggered_buffer_predisable +EXPORT_SYMBOL drivers/iio/industrialio 0x346a3b6b iio_trigger_free +EXPORT_SYMBOL drivers/iio/industrialio 0x3737c2bb iio_device_free +EXPORT_SYMBOL drivers/iio/industrialio 0x3d4af207 iio_buffer_init +EXPORT_SYMBOL drivers/iio/industrialio 0x40edb93e iio_device_register +EXPORT_SYMBOL drivers/iio/industrialio 0x4bd8e7fb iio_push_event +EXPORT_SYMBOL drivers/iio/industrialio 0x7f37fe91 iio_trigger_notify_done +EXPORT_SYMBOL drivers/iio/industrialio 0x831ef33b iio_triggered_buffer_postenable +EXPORT_SYMBOL drivers/iio/industrialio 0x89e3615b iio_trigger_alloc +EXPORT_SYMBOL drivers/iio/industrialio 0xb76a72ca iio_read_const_attr +EXPORT_SYMBOL drivers/iio/industrialio 0xc0c309a1 iio_bus_type +EXPORT_SYMBOL drivers/iio/industrialio 0xd10cff9b iio_device_alloc +EXPORT_SYMBOL drivers/iio/industrialio 0xdf76bbeb iio_pollfunc_store_time +EXPORT_SYMBOL drivers/iio/industrialio 0xe5d7819e iio_trigger_poll_chained +EXPORT_SYMBOL drivers/iio/industrialio 0xf95bd4fd iio_trigger_poll +EXPORT_SYMBOL drivers/iio/industrialio 0xfbd73eff iio_trigger_unregister +EXPORT_SYMBOL drivers/iio/industrialio-triggered-buffer 0x6d588521 iio_triggered_buffer_setup +EXPORT_SYMBOL drivers/iio/industrialio-triggered-buffer 0xc9760963 iio_triggered_buffer_cleanup +EXPORT_SYMBOL drivers/iio/kfifo_buf 0x0eee6213 iio_kfifo_allocate +EXPORT_SYMBOL drivers/iio/kfifo_buf 0x6d52450d devm_iio_kfifo_free +EXPORT_SYMBOL drivers/iio/kfifo_buf 0x6e544860 devm_iio_kfifo_allocate +EXPORT_SYMBOL drivers/iio/kfifo_buf 0x9b369d05 iio_kfifo_free +EXPORT_SYMBOL drivers/iio/magnetometer/st_magn 0x31471623 st_magn_common_probe +EXPORT_SYMBOL drivers/iio/magnetometer/st_magn 0x31f65579 st_magn_common_remove +EXPORT_SYMBOL drivers/iio/pressure/ms5611_core 0x831533ad ms5611_probe +EXPORT_SYMBOL drivers/iio/pressure/st_pressure 0x6e860c02 st_press_common_remove +EXPORT_SYMBOL drivers/iio/pressure/st_pressure 0x93ffa16d st_press_common_probe +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x049ace30 rdma_addr_find_smac_by_sgid +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x04b8b6d7 rdma_translate_ip +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x1c3c0ad3 rdma_addr_size +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x1edc4064 rdma_addr_unregister_client +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x273f4cca rdma_addr_cancel +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x9846b88f rdma_resolve_ip +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x9d9cabc5 rdma_addr_register_client +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0xcfb326ee rdma_copy_addr +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0xf029eb25 rdma_addr_find_dmac_by_grh +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x099ddcc9 ib_send_cm_req +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x1302a4eb ib_send_cm_dreq +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x34316a68 ib_cm_init_qp_attr +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x4f515535 ib_send_cm_sidr_req +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x6a165d0d ib_send_cm_rep +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x6f16b1cb ib_cm_notify +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x86985722 ib_send_cm_lap +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x9730ab26 ib_destroy_cm_id +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x982af004 cm_class +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x9b20a637 ib_send_cm_apr +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x9ce46e93 ib_send_cm_mra +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xbd24eb1a ib_cm_listen +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xe4f29336 ib_create_cm_id +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xf2bbfe2f ib_send_cm_sidr_rep +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xfa771118 ib_send_cm_rtu +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xfd234d1b ib_send_cm_rej +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xfe5d89e1 ib_send_cm_drep +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x02b87356 ib_modify_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x035b234b ibnl_put_msg +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x08e57dc9 ib_rereg_phys_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0aaeca73 ib_fmr_pool_map_phys +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0c1b9ac1 ib_ud_header_unpack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0c8b4011 ib_find_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0ecb6b63 ib_get_cached_lmc +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0f721e42 ib_init_ah_from_wc +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1e491a04 ib_unmap_fmr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1eabd13d ib_dealloc_pd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2088a42b ibnl_multicast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x22f3cf93 ib_pack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2910bf5f ib_attach_mcast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2a270afa ib_alloc_mw +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2c9902b4 ib_get_client_data +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2d6d5912 ib_destroy_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2dd41bfe ib_query_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2ed6e386 ib_ud_header_pack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x30e2ead2 ib_query_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x32c0f9cb ib_close_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x3316aa5c ib_alloc_fast_reg_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x36e5a739 ib_destroy_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x39ceef06 ib_get_cached_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x3e99482d ib_register_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x3f25826d ib_query_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x44097623 ib_free_fast_reg_page_list +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x4411f594 ib_dealloc_xrcd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x4582aa0c ib_destroy_flow +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x50dbc447 ib_flush_fmr_pool +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x51f9b0f6 ib_umem_page_count +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x55b890e8 ib_alloc_pd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5611cdea rdma_node_get_transport +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5671d931 ib_find_cached_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5c5d7928 ib_create_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5c7987b5 ib_dealloc_mw +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5cd7ff50 ib_create_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5f5860f5 ib_register_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6429b206 ib_create_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6725e752 ib_query_port +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x674da735 ib_umem_odp_map_dma_pages +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x67755321 ib_modify_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6e030e26 ib_modify_qp_is_ok +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x715534ae ibnl_add_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x835abfd9 ib_check_mr_status +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x83b9e10d ib_unregister_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x84b1f0c9 ib_alloc_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x85c594f5 ib_modify_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x8807b19c ib_resolve_eth_l2_attrs +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x8a95c1ec ib_alloc_fmr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x8bb61114 ib_umem_get +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x8f2650e5 ib_find_cached_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x90552a11 ib_modify_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x91bf0f1e ib_create_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x94ae2e7d ib_destroy_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x988f6ca3 ib_unregister_event_handler +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x9b9500e4 ib_create_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x9e736dc2 ib_unregister_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa088b328 ib_query_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa432baf6 ib_unpack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa66df5fa ib_detach_mcast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xab0a3467 mult_to_ib_rate +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xadf82842 ib_query_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb038d93b ib_open_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb34aee44 ib_dereg_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb5380fe0 ib_destroy_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb68e925c ib_query_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb7d76ed1 ib_create_ah_from_wc +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb82565f7 ib_find_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb93a52b0 ib_rate_to_mbps +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xbadd8259 ib_rate_to_mult +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xbbbd0451 ib_umem_copy_from +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xbc6b8be9 ib_find_exact_cached_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xbe28d4f9 ib_alloc_xrcd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xbe86a6b8 ib_get_cached_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xbfdb1db9 ib_modify_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc32b59ff ib_destroy_fmr_pool +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc3f8ce3e ib_reg_phys_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc67f14a5 ibnl_remove_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc9020a53 ib_set_client_data +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xca0b5a71 ib_destroy_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xcfa2a09f ib_event_msg +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd0fbcfff ib_dealloc_fmr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xdab4a9ed ib_modify_port +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xdadf51cf ib_dispatch_event +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe5359ef6 ib_alloc_fast_reg_page_list +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe5370a53 ib_get_dma_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe5840ec6 ib_wc_status_msg +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe5b5c341 ib_query_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe95feca4 ibnl_put_attr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xed23ec5b ib_umem_odp_unmap_dma_pages +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf41fb580 ib_create_flow +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf4a7b5d3 ib_dealloc_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf68b841b ib_create_fmr_pool +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf84c9986 ibnl_unicast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf8a36a40 ib_register_event_handler +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf9480685 ib_umem_release +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xfc150956 ib_ud_header_init +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xfc39bba8 ib_fmr_pool_unmap +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xfdcb208a rdma_port_get_link_layer +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xfe967773 ib_resize_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x1c32e3b4 ib_unregister_mad_agent +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x2142cbc7 ib_register_mad_snoop +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x2f0ea69e ib_response_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x4d398527 ib_get_rmpp_segment +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x6cedebde ib_process_mad_wc +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x6e4212f6 ib_mad_kernel_rmpp_agent +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x6f077fcf ib_get_mad_data_offset +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x7b5d4b7a ib_is_mad_class_rmpp +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x88fe4a6d ib_redirect_mad_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xaaa58e1c ib_cancel_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xb063db62 ib_modify_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xb51f13df ib_free_recv_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xbf2ab0f0 ib_post_send_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xd23c9fb5 ib_create_send_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xee03689c ib_register_mad_agent +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xf2708c29 ib_free_send_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x05f51c4a ib_sa_register_client +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x22f07253 ib_sa_unpack_path +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x23c0e2fa ib_sa_get_mcmember_rec +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x287d1e73 ib_sa_unregister_client +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x576fdbac ib_sa_free_multicast +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x5f26b5b5 ib_sa_path_rec_get +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x88dff7d6 ib_sa_join_multicast +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xabed900f ib_sa_service_rec_query +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xca1b8707 ib_init_ah_from_mcmember +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xda0d50ec ib_sa_cancel_query +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xddc330e7 ib_sa_pack_path +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xe06a40c4 ib_init_ah_from_path +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xf6409648 ib_sa_guid_info_rec_query +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x2569d757 ib_copy_path_rec_to_user +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x52a6ce77 ib_copy_ah_attr_to_user +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x7971c00e ib_copy_qp_attr_to_user +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0xe350f2aa ib_copy_path_rec_from_user +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x0807c650 iwpm_ack_mapping_info_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x0adabfda iw_cm_reject +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x0ff9f042 iwpm_remove_mapinfo +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x1d61a95c iw_cm_accept +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x3da66c39 iw_cm_disconnect +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x43255031 iw_create_cm_id +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x4bad9eac iw_cm_listen +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x5da59312 iwpm_register_pid +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x6968573d iwpm_add_mapping +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x6c74c344 iwpm_get_remote_info +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x8609040f iwpm_add_mapping_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x904609a0 iwpm_remove_mapping +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x91a914d6 iwpm_init +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x9327be67 iwpm_exit +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x99edf901 iwpm_valid_pid +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x9bf24c59 iwpm_remote_info_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x9fcf77dd iw_cm_connect +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xa16c9842 iwpm_add_and_query_mapping_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xa805b16b iwpm_register_pid_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xb33a9a08 iwpm_mapping_error_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xb5219a5d iw_destroy_cm_id +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xb6cfc76b iw_cm_init_qp_attr +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xd447b24a iwpm_create_mapinfo +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xe2816735 iwpm_mapping_info_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xf380aa0f iwpm_add_and_query_mapping +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x0940771b rdma_get_service_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x0d24089d rdma_bind_addr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x1a3875fa rdma_disconnect +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x290b876f rdma_destroy_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x2feaaad1 rdma_resolve_addr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x4114c789 rdma_connect +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x4d560b6d rdma_resolve_route +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x4eee31e6 rdma_notify +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x6c7d9147 rdma_reject +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x6f6682eb rdma_destroy_qp +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x890390a3 rdma_listen +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x907df803 rdma_event_msg +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xa522df70 rdma_set_reuseaddr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xc19f448a rdma_accept +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xc4772b77 rdma_leave_multicast +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xc7b7110b rdma_set_service_type +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xc7bd320d rdma_create_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xceaa5743 rdma_create_qp +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xd87a43d5 rdma_set_afonly +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xed16c457 rdma_set_ib_paths +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xf90c8a42 rdma_join_multicast +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xfb940408 rdma_init_qp_attr +EXPORT_SYMBOL drivers/input/gameport/gameport 0x0c93cb58 gameport_unregister_port +EXPORT_SYMBOL drivers/input/gameport/gameport 0x406ebe71 gameport_open +EXPORT_SYMBOL drivers/input/gameport/gameport 0x6fa28523 gameport_start_polling +EXPORT_SYMBOL drivers/input/gameport/gameport 0x78314508 __gameport_register_port +EXPORT_SYMBOL drivers/input/gameport/gameport 0x88b7e751 gameport_stop_polling +EXPORT_SYMBOL drivers/input/gameport/gameport 0xc46e4918 __gameport_register_driver +EXPORT_SYMBOL drivers/input/gameport/gameport 0xd7152859 gameport_unregister_driver +EXPORT_SYMBOL drivers/input/gameport/gameport 0xdef938aa gameport_close +EXPORT_SYMBOL drivers/input/gameport/gameport 0xf53b7297 gameport_set_phys +EXPORT_SYMBOL drivers/input/input-polldev 0x1346b1f9 input_free_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0x3e8818a2 input_allocate_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0x4b23b943 input_unregister_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0xc35e4b60 input_register_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0xf390d96d devm_input_allocate_polled_device +EXPORT_SYMBOL drivers/input/matrix-keymap 0xa0860c4c matrix_keypad_build_keymap +EXPORT_SYMBOL drivers/input/misc/ad714x 0x6cd950ef ad714x_disable +EXPORT_SYMBOL drivers/input/misc/ad714x 0x79f1721b ad714x_enable +EXPORT_SYMBOL drivers/input/misc/ad714x 0xebe46323 ad714x_remove +EXPORT_SYMBOL drivers/input/misc/ad714x 0xef32f5d8 ad714x_probe +EXPORT_SYMBOL drivers/input/misc/cma3000_d0x 0x827b7963 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/sparse-keymap 0x541a581f sparse_keymap_report_entry +EXPORT_SYMBOL drivers/input/sparse-keymap 0x80f0d67e sparse_keymap_entry_from_keycode +EXPORT_SYMBOL drivers/input/sparse-keymap 0xca78bd2a sparse_keymap_free +EXPORT_SYMBOL drivers/input/sparse-keymap 0xebe52570 sparse_keymap_report_event +EXPORT_SYMBOL drivers/input/sparse-keymap 0xf6d6807c sparse_keymap_entry_from_scancode +EXPORT_SYMBOL drivers/input/sparse-keymap 0xfce21d83 sparse_keymap_setup +EXPORT_SYMBOL drivers/input/touchscreen/ad7879 0x27f1f5ed ad7879_probe +EXPORT_SYMBOL drivers/input/touchscreen/ad7879 0x97f83edf ad7879_remove +EXPORT_SYMBOL drivers/input/touchscreen/ad7879 0xba61e13a ad7879_pm_ops +EXPORT_SYMBOL drivers/iommu/amd_iommu_v2 0x105e7332 amd_iommu_free_device +EXPORT_SYMBOL drivers/iommu/amd_iommu_v2 0x22e57cb1 amd_iommu_set_invalidate_ctx_cb +EXPORT_SYMBOL drivers/iommu/amd_iommu_v2 0x8341dd25 amd_iommu_init_device +EXPORT_SYMBOL drivers/iommu/amd_iommu_v2 0x8f9535e5 amd_iommu_set_invalid_ppr_cb +EXPORT_SYMBOL drivers/iommu/amd_iommu_v2 0xd3a6e950 amd_iommu_unbind_pasid +EXPORT_SYMBOL drivers/iommu/amd_iommu_v2 0xe842826e amd_iommu_bind_pasid +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x04403fcf unregister_capi_driver +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x14f2aa5a capi20_get_version +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x175d4486 capi20_release +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x18d9ac67 capi_ctr_down +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x2b8eab1f capilib_free_ncci +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x2baa6586 capilib_new_ncci +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x31c24aa4 capi20_isinstalled +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x50b33ca4 capi_cmsg2message +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x5f651e22 capi_ctr_handle_message +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x6057c6f3 capi_message2cmsg +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x620a3705 capi20_put_message +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x62e32d43 capilib_data_b3_conf +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x71e8d5ba capilib_data_b3_req +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x7292ab34 cdebbuf_free +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x72a25a72 capi_cmsg2str +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x7a33596c capi20_get_serial +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x7e6f1307 capi20_get_manufacturer +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x8865ae34 capi20_register +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x8f699913 capilib_release +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x9f823278 register_capi_driver +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xa4576a3b attach_capi_ctr +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xaa165d27 capilib_release_appl +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xb19fda8d capi_cmd2str +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xb60e5e5f capi_cmsg_header +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xc0705b3c capi_ctr_ready +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xc42d9ec1 capi20_manufacturer +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xc5c0af51 capi_ctr_resume_output +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xe19a11ac capi20_get_profile +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xf1fa0690 capi_ctr_suspend_output +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xfb85fa47 detach_capi_ctr +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xfd552f7a capi_message2str +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x0c37392f b1_load_config +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x0eb5c07a avmcard_dma_free +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x22cb090b b1_register_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x4033ac7b b1_free_card +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x5cc63a9e b1ctl_proc_fops +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x5e5acab3 b1_parse_version +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x642209ee b1_load_firmware +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x7a23acfb b1_release_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x7e49c015 avmcard_dma_alloc +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x85f09690 b1_irq_table +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xaaa3bd60 b1_send_message +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xb20a5d0e b1_getrevision +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xb38257ed b1_reset_ctr +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xb77a3ac4 b1_alloc_card +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xd694d050 b1_loaded +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xdfd28376 b1_detect +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xf2ec21af b1_load_t4file +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xfa10fee4 b1_interrupt +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x17e1439f b1dma_register_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x1dd5b869 t1pci_detect +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x382e42f7 b1dma_reset_ctr +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x460a258e b1dma_send_message +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x83ea065a b1dma_release_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x86ccf3d1 b1pciv4_detect +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xa5b3aa29 b1dmactl_proc_fops +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xd295a7c9 b1dma_reset +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xd514db8d b1dma_load_firmware +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xd6f9f1ea b1dma_interrupt +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1pcmcia 0x29562993 b1pcmcia_delcard +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1pcmcia 0xaec3240e b1pcmcia_addcard_m1 +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1pcmcia 0xea620116 b1pcmcia_addcard_m2 +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1pcmcia 0xf14bf8b1 b1pcmcia_addcard_b1 +EXPORT_SYMBOL drivers/isdn/hardware/eicon/divadidd 0x2974ead1 DIVA_DIDD_Read +EXPORT_SYMBOL drivers/isdn/hardware/eicon/divadidd 0x7ab59853 proc_net_eicon +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0x39aa62fd mISDNipac_irq +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0x5ee3b76c mISDNipac_init +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0x7789820b mISDNisac_init +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0xfb61cf43 mISDNisac_irq +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNisar 0x48eb0a1c mISDNisar_init +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNisar 0xc66e205d mISDNisar_irq +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x07f4f2ce hisax_unregister +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x148f0c99 FsmFree +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x5d98cdbc hisax_init_pcmcia +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x6fe1ca04 FsmDelTimer +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x93a64734 FsmChangeState +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x9df0cd27 FsmEvent +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x9f987c85 FsmRestartTimer +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0xa1bc94b9 FsmInitTimer +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0xee93522c hisax_register +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0xf0a16657 FsmNew +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0xfc27303b HiSax_closecard +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x2691c8f8 isacsx_irq +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x3f3b323a isac_d_l2l1 +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x90c40bef isac_init +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0xbff3d49a isacsx_setup +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0xcfe3893b isac_setup +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0xe5e56573 isac_irq +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0x114619dd register_isdn +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0x8436f45a isdn_ppp_register_compressor +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0x861e7043 isdn_ppp_unregister_compressor +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0xfa06820f isdn_register_divert +EXPORT_SYMBOL drivers/isdn/i4l/isdnhdlc 0x3b71e4fc isdnhdlc_decode +EXPORT_SYMBOL drivers/isdn/i4l/isdnhdlc 0x59cc8a7e isdnhdlc_out_init +EXPORT_SYMBOL drivers/isdn/i4l/isdnhdlc 0x8ee38862 isdnhdlc_rcv_init +EXPORT_SYMBOL drivers/isdn/i4l/isdnhdlc 0xfd9d4c09 isdnhdlc_encode +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x06fcebef mISDN_FsmDelTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x12a39481 mISDN_freebchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x13bd0aa8 mISDNDevName4ch +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x1cf196fb mISDN_FsmAddTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x2235fc4c mISDN_register_Bprotocol +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x2348cc3c mISDN_FsmFree +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x29fa5b43 mISDN_FsmRestartTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x34d68d7d bchannel_get_rxbuf +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x36ec1940 mISDN_FsmInitTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x3f72f6d7 create_l1 +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x441a5665 bchannel_senddata +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x50c2230c mISDN_FsmChangeState +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x56f1e318 mISDN_initdchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x588886a6 l1_event +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x5b445c2c recv_Bchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x7031c9dd get_next_dframe +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x792839d6 get_next_bframe +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x79bc3dfa mISDN_ctrl_bchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x7ce71623 mISDN_initbchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x8a4e99fb mISDN_clock_update +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xb13858b3 recv_Dchannel_skb +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xc3401729 mISDN_register_clock +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xc94f79f9 queue_ch_frame +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xcd0997c7 mISDN_unregister_Bprotocol +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xd0edbed4 mISDN_unregister_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 0xe016b7a5 mISDN_register_device +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xe349ecc4 recv_Bchannel_skb +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xe54bccdd mISDN_clear_bchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xe8f617eb mISDN_unregister_clock +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xe9a761b6 mISDN_freedchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xf9e7832f mISDN_FsmNew +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xfb38eeee dchannel_senddata +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xff39ca32 recv_Dchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xff918fc4 recv_Echannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_dsp 0x01087af0 mISDN_dsp_element_unregister +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_dsp 0x60721da7 dsp_audio_law_to_s32 +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_dsp 0xa215f1b2 dsp_audio_s16_to_law +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_dsp 0xb98308d8 mISDN_dsp_element_register +EXPORT_SYMBOL drivers/md/bcache/bcache 0x1f529ce8 bch_bset_build_written_tree +EXPORT_SYMBOL drivers/md/bcache/bcache 0x440b4830 bch_btree_iter_next +EXPORT_SYMBOL drivers/md/bcache/bcache 0x44a37d62 bch_btree_iter_init +EXPORT_SYMBOL drivers/md/bcache/bcache 0x5b59b856 bch_btree_insert_key +EXPORT_SYMBOL drivers/md/bcache/bcache 0x6dc03a74 closure_wait +EXPORT_SYMBOL drivers/md/bcache/bcache 0x7daccb73 bch_btree_keys_alloc +EXPORT_SYMBOL drivers/md/bcache/bcache 0x7f2a56c0 bch_bset_sort_state_init +EXPORT_SYMBOL drivers/md/bcache/bcache 0x828b1162 closure_sync +EXPORT_SYMBOL drivers/md/bcache/bcache 0x8833b0e8 bch_btree_keys_free +EXPORT_SYMBOL drivers/md/bcache/bcache 0x8f8fc624 bch_btree_sort_lazy +EXPORT_SYMBOL drivers/md/bcache/bcache 0x92d20015 closure_sub +EXPORT_SYMBOL drivers/md/bcache/bcache 0xa3c5c702 bch_bset_fix_invalidated_key +EXPORT_SYMBOL drivers/md/bcache/bcache 0xca5df778 __bch_bset_search +EXPORT_SYMBOL drivers/md/bcache/bcache 0xce47a6d9 bch_btree_keys_init +EXPORT_SYMBOL drivers/md/bcache/bcache 0xd2813054 bch_bset_insert +EXPORT_SYMBOL drivers/md/bcache/bcache 0xd97c32a1 bch_btree_sort_partial +EXPORT_SYMBOL drivers/md/bcache/bcache 0xdf892351 bch_bkey_try_merge +EXPORT_SYMBOL drivers/md/bcache/bcache 0xe3c17af1 __closure_wake_up +EXPORT_SYMBOL drivers/md/bcache/bcache 0xe5224a5e closure_put +EXPORT_SYMBOL drivers/md/bcache/bcache 0xec6f33d0 bch_bset_init_next +EXPORT_SYMBOL drivers/md/dm-bufio 0x268682d2 dm_bufio_forget +EXPORT_SYMBOL drivers/md/dm-bufio 0x72f07bf4 dm_bufio_set_minimum_buffers +EXPORT_SYMBOL drivers/md/dm-log 0x0bf5bafe dm_dirty_log_type_register +EXPORT_SYMBOL drivers/md/dm-log 0x3b9a270f dm_dirty_log_type_unregister +EXPORT_SYMBOL drivers/md/dm-log 0x5544a981 dm_dirty_log_create +EXPORT_SYMBOL drivers/md/dm-log 0x9414d813 dm_dirty_log_destroy +EXPORT_SYMBOL drivers/md/dm-snapshot 0x39318470 dm_exception_store_create +EXPORT_SYMBOL drivers/md/dm-snapshot 0x3b5bd2d2 dm_exception_store_type_unregister +EXPORT_SYMBOL drivers/md/dm-snapshot 0x42e9bf19 dm_snap_cow +EXPORT_SYMBOL drivers/md/dm-snapshot 0xa233db7d dm_exception_store_type_register +EXPORT_SYMBOL drivers/md/dm-snapshot 0xa87dba18 dm_snap_origin +EXPORT_SYMBOL drivers/md/dm-snapshot 0xc959964b dm_exception_store_destroy +EXPORT_SYMBOL drivers/md/raid456 0xa4b827b8 raid5_set_cache_size +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x0494f368 flexcop_eeprom_check_mac_addr +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x1189e6d6 flexcop_pass_dmx_data +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x1663e4ed flexcop_wan_set_speed +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x1d04233b flexcop_pid_feed_control +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x1ee3c531 flexcop_device_kmalloc +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x1f9717ae flexcop_pass_dmx_packets +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x346163cd flexcop_i2c_request +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x419992e8 flexcop_device_exit +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xbe34b71f flexcop_sram_set_dest +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xcf534fc9 flexcop_device_kfree +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xd4c49430 flexcop_device_initialize +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xe116bc78 flexcop_dump_reg +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xfbcfa01e flexcop_sram_ctrl +EXPORT_SYMBOL drivers/media/common/cx2341x 0x1ca0c084 cx2341x_log_status +EXPORT_SYMBOL drivers/media/common/cx2341x 0x2f25eee2 cx2341x_update +EXPORT_SYMBOL drivers/media/common/cx2341x 0x30cb4cd7 cx2341x_ext_ctrls +EXPORT_SYMBOL drivers/media/common/cx2341x 0x37eb3193 cx2341x_handler_setup +EXPORT_SYMBOL drivers/media/common/cx2341x 0x3db8be82 cx2341x_ctrl_query +EXPORT_SYMBOL drivers/media/common/cx2341x 0xa87a2061 cx2341x_handler_set_50hz +EXPORT_SYMBOL drivers/media/common/cx2341x 0xc184ec1e cx2341x_ctrl_get_menu +EXPORT_SYMBOL drivers/media/common/cx2341x 0xcf76ce95 cx2341x_fill_defaults +EXPORT_SYMBOL drivers/media/common/cx2341x 0xcf8b77a4 cx2341x_mpeg_ctrls +EXPORT_SYMBOL drivers/media/common/cx2341x 0xd73e1330 cx2341x_handler_set_busy +EXPORT_SYMBOL drivers/media/common/cx2341x 0xefd773bf cx2341x_handler_init +EXPORT_SYMBOL drivers/media/common/cypress_firmware 0x8c0b68d1 cypress_load_firmware +EXPORT_SYMBOL drivers/media/common/tveeprom 0x8bf94cab tveeprom_hauppauge_analog +EXPORT_SYMBOL drivers/media/common/tveeprom 0xd3ad1824 tveeprom_read +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x08c0ecf2 dvb_ringbuffer_read +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x0a2fd3f6 dvb_generic_open +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x0d3c856a dvb_ringbuffer_empty +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x12f5425e dvb_ringbuffer_flush +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x14fdf0ee dvb_ringbuffer_write_user +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x1bfe15ba dvb_dmx_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x253571f9 dvb_frontend_resume +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x2e02a55f dvb_frontend_suspend +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x32d77272 dvb_ca_en50221_frda_irq +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x3405dbfc dvb_ringbuffer_avail +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x3b8f7120 dvb_register_device +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x48b2f73b dvb_dmx_swfilter +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x4cf3b0d9 dvb_ringbuffer_read_user +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x5136e8f8 dvb_net_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x588234f5 dvb_dmxdev_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x5e015406 dvb_frontend_reinitialise +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x6400592b dvb_unregister_adapter +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x6560e532 dvb_ringbuffer_write +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x71f09997 dvb_register_frontend +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x74a5a698 dvb_filter_pes2ts_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x7a09e7e3 dvb_generic_ioctl +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x7e9da480 dvb_register_adapter +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x80e3832d dvb_filter_get_ac3info +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x8b170236 dvb_ca_en50221_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x8bcbbafd dvb_ringbuffer_free +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x8e7be5c6 dvb_dmx_swfilter_204 +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x9c07904e dvb_dmxdev_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x9ceb3e23 dvb_unregister_device +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xa24eff08 dvb_generic_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xac4ca1b0 intlog2 +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xc82d0857 dvb_net_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xcb02a576 dvb_ca_en50221_camchange_irq +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xce409364 dvb_dmx_swfilter_raw +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xcf0566e7 dvb_ca_en50221_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xd35609bf dvb_dmx_swfilter_packets +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xd4f90791 dvb_unregister_frontend +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xd8988b7b dvb_ringbuffer_flush_spinlock_wakeup +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xda1df766 dvb_ca_en50221_camready_irq +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xdeb988cc dvb_dmx_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xe5ae8707 intlog10 +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xeaf47cb5 dvb_ringbuffer_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xf23828b9 dvb_frontend_detach +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xf821d629 dvb_frontend_sleep_until +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xf826deb0 dvb_filter_pes2ts +EXPORT_SYMBOL drivers/media/dvb-frontends/a8293 0x588452e9 a8293_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/af9013 0x13ffdff3 af9013_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/atbm8830 0xec3e22a2 atbm8830_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x48ad729a au8522_writereg +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x543e41d9 au8522_analog_i2c_gate_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x6abcaebb au8522_sleep +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x6f886179 au8522_i2c_gate_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x6fb28cf2 au8522_get_state +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x7977df49 au8522_readreg +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x95c85593 au8522_release_state +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0xa1b1cc3a au8522_init +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0xa2663234 au8522_led_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_dig 0xbf75ffdd au8522_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/bcm3510 0x038e4e93 bcm3510_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx22700 0xe295d4a3 cx22700_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx22702 0x3c82a132 cx22702_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24110 0x2d0c187f cx24110_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24113 0xa6e484f7 cx24113_agc_callback +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24113 0xf408a6c3 cx24113_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24116 0x478d82c7 cx24116_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24120 0x5a13a061 cx24120_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24123 0x3c01dd87 cx24123_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24123 0x4da0e7f4 cx24123_get_tuner_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/cxd2820r 0x88369558 cxd2820r_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0x2cc1ff6d dib0070_set_rf_output +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0x3c680fbd dib0070_ctrl_agc_filter +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0x6dc1e278 dib0070_wbd_offset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0xa7758872 dib0070_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0xc643bcef dib0070_get_rf_output +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x0608958f dib0090_update_tuning_table_7090 +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x0c8e619b dib0090_update_rframp_7090 +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x0e1a19ba dib0090_get_current_gain +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x20c3115d dib0090_dcc_freq +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x37eeebaa dib0090_get_wbd_offset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x4edc3d76 dib0090_set_dc_servo +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x7a905fd5 dib0090_set_tune_state +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x8dcb9e2f dib0090_set_vga +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x9228140c dib0090_fw_register +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xac6940e5 dib0090_gain_control +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xb3f33150 dib0090_get_tune_state +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xb4964ce2 dib0090_pwm_gain_reset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xb71d6662 dib0090_set_switch +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xe8b0f460 dib0090_register +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xf6a57a6c dib0090_get_wbd_target +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mb 0xbd8112bb dib3000mb_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x098b4c6b dib3000mc_pid_control +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x4af5e884 dib3000mc_i2c_enumeration +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x5fefd2bb dib3000mc_get_tuner_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0xc235c453 dib3000mc_pid_parse +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0xc354eaae dib3000mc_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0xd301d8d6 dib3000mc_set_config +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0x54936736 dib7000m_get_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0x609762a4 dib7000m_pid_filter +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0xa69f7912 dib7000m_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0xd7825f5d dib7000m_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0xc24a1ec8 dib7000p_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0xf7f37005 dib8000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0x1e0c2fe9 dibx000_init_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0x87c52756 dibx000_get_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0xad3ad91c systime +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0xe2b42d64 dibx000_i2c_set_speed +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0xe94913cb dibx000_exit_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0xf87a02c3 dibx000_reset_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/drx39xyj/drx39xyj 0xe093dfb4 drx39xxj_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/drxd 0x34d2728a drxd_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/drxk 0x6e180723 drxk_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ds3000 0x3c029d2a ds3000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dvb-pll 0xb0f3699b dvb_pll_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ec100 0x6c586fa6 ec100_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/isl6405 0x108dedf2 isl6405_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/isl6421 0x9f34de62 isl6421_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/isl6423 0x1d49834c isl6423_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/itd1000 0xf1c2d376 itd1000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ix2505v 0xde85dd88 ix2505v_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/l64781 0x774ec05e l64781_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lg2160 0x5d8769bb lg2160_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgdt3305 0x269e40b9 lgdt3305_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgdt3306a 0xf3a53d9f lgdt3306a_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgdt330x 0x7d733033 lgdt330x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgs8gxx 0xed57e8a9 lgs8gxx_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lnbp21 0x2008a359 lnbh24_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lnbp21 0xd9ee8241 lnbp21_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lnbp22 0xb4fa8c94 lnbp22_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/m88ds3103 0x168e507a m88ds3103_get_agc_pwm +EXPORT_SYMBOL drivers/media/dvb-frontends/m88ds3103 0x99d62425 m88ds3103_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/m88rs2000 0xfc277d77 m88rs2000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mb86a16 0x1abd0113 mb86a16_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mb86a20s 0x9836a339 mb86a20s_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mt312 0xfa7afdf4 mt312_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mt352 0xd0195dd4 mt352_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/nxt200x 0xb11da432 nxt200x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/nxt6000 0x5c04fbea nxt6000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/or51132 0x0ac35407 or51132_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/or51211 0xcaa595cd or51211_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1409 0xab9391e1 s5h1409_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1411 0xc0bf1dc9 s5h1411_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1420 0x56e31758 s5h1420_get_tuner_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1420 0x7201533d s5h1420_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s921 0x36d96ed8 s921_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/si2165 0xad7ad82e si2165_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/si21xx 0x83d5c3ed si21xx_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/sp8870 0xada21c90 sp8870_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/sp887x 0xfe17de51 sp887x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stb0899 0xa6729a83 stb0899_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stb6000 0x60261116 stb6000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stb6100 0xde85286e stb6100_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0288 0x0c691e35 stv0288_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0297 0xad4b3c76 stv0297_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0299 0x92fe8980 stv0299_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0367 0x7957d9b1 stv0367ter_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0367 0x7a0ee1ab stv0367cab_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0900 0x0d731ed1 stv0900_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv090x 0xd5125447 stv090x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv6110 0x7acbdce1 stv6110_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv6110x 0xfe6949a9 stv6110x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10021 0xb38e1035 tda10021_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10023 0xd6475af0 tda10023_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10048 0x1b3487cb tda10048_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda1004x 0xdd1cc940 tda10046_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda1004x 0xe9096128 tda10045_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10071 0x30330ca5 tda10071_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10086 0x5065b71b tda10086_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda665x 0xb8a461cc tda665x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda8083 0x8f2fd4ff tda8083_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda8261 0xe64f57f7 tda8261_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda826x 0x574cead7 tda826x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ts2020 0x6de35360 ts2020_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tua6100 0xabec8cd7 tua6100_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ves1820 0x5f6c5204 ves1820_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ves1x93 0x99cf63ce ves1x93_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/zl10036 0x1a1b84fc zl10036_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/zl10039 0xbd0e4732 zl10039_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/zl10353 0x2bc955d7 zl10353_attach +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x38e754f8 flexcop_dma_free +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x79117abf flexcop_dma_allocate +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x8aedf82e flexcop_dma_control_size_irq +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0xb6fa3a94 flexcop_dma_config +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0xba4d1d52 flexcop_dma_control_timer_irq +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0xd28eb15e flexcop_dma_config_timer +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0xe1559f7a flexcop_dma_xfer_control +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0x0babf0d4 bt878_stop +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0x377a6986 bt878_start +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0x8fa73eeb bt878 +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0xa3ffe95d bt878_device_control +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0xd5d0bdef bt878_num +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0x0cf5506d bttv_get_pcidev +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0x11dc4b6d bttv_gpio_enable +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0x58887fb7 bttv_sub_register +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0x64b01ebf 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 0x13b77f1d dst_wait_dst_ready +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x24a82dbb rdc_reset_state +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x529daae4 write_dst +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x57e49a32 dst_error_bailout +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xbbc582b4 dst_comm_init +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xbc5a0382 dst_pio_disable +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xbd3e8e8d dst_error_recovery +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xd366c835 read_dst +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xe94b8c9c dst_check_sum +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xe9dd0334 dst_attach +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst_ca 0x45c6c799 dst_ca_attach +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x2cdea06d cx18_reset_ir_gpio +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x40920cb4 cx18_ext_init +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x6e526bd2 cx18_start_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x979e5fe3 cx18_stop_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0xdf0fcdae cx18_claim_stream +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0xf633ee7a cx18_release_stream +EXPORT_SYMBOL drivers/media/pci/cx23885/altera-ci 0x158f0363 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 0x16d13c2e cx25821_set_gpiopin_direction +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x406c9cd0 cx25821_sram_channel_setup_audio +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x4a39bb2a cx25821_sram_channel_dump_audio +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x784853c3 cx25821_print_irqbits +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x9ee8f9cf cx25821_dev_get +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xb41c0ffc cx25821_riscmem_alloc +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xc50bf83d cx25821_risc_databuffer_audio +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xc53c0e81 cx25821_dev_unregister +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xc5d38741 cx25821_sram_channels +EXPORT_SYMBOL drivers/media/pci/cx88/cx88-vp3054-i2c 0x3ee9baa6 vp3054_i2c_remove +EXPORT_SYMBOL drivers/media/pci/cx88/cx88-vp3054-i2c 0xf9f09ce9 vp3054_i2c_probe +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0x23025d2c cx88_set_freq +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0xb23270cb cx88_querycap +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0xf2f8a791 cx88_video_mux +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0xf752c764 cx88_enum_input +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x557a3949 cx8802_start_dma +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x7e79576a cx8802_get_driver +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0xa8534374 cx8802_buf_prepare +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0xcd872cc3 cx8802_buf_queue +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0xdc9c94e5 cx8802_register_driver +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0xdda50415 cx8802_unregister_driver +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0xf669563b cx8802_cancel_buffers +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x358e23e1 cx88_newstation +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x38eb78fa cx88_dsp_detect_stereo_sap +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x3954c8de cx88_get_stereo +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x3e5bbe2c cx88_set_tvaudio +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x4216fc84 cx88_sram_channels +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x5751d7ee cx88_set_tvnorm +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x6141c8c5 cx88_tuner_callback +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x6d393f3f cx88_ir_stop +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x7642ed3c cx88_print_irqbits +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x77450522 cx88_sram_channel_setup +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x86439f8e cx88_reset +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x876e649f cx88_risc_databuffer +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x87c0047b cx88_vdev_init +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x904b8696 cx88_audio_thread +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xae2478d0 cx88_core_get +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xae6ea0e9 cx88_wakeup +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xaed6e6e4 cx88_core_put +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xc66433d5 cx88_core_irq +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xd1c74985 cx88_sram_channel_dump +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xe50deecb cx88_set_stereo +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xe67f4ccc cx88_set_scale +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xe723ce94 cx88_shutdown +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xf5614ea6 cx88_ir_start +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xf65c503a cx88_risc_buffer +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x024173ea ivtv_set_irq_mask +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x0c84094d ivtv_vapi +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x0e14baf0 ivtv_api +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x14f67530 ivtv_debug +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x3956fc6c ivtv_udma_prepare +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x3ea48fcd ivtv_start_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x3f681471 ivtv_firmware_check +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x41d5cea0 ivtv_init_on_first_open +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x4571a488 ivtv_udma_unmap +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x4a40fa80 ivtv_udma_setup +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x50287122 ivtv_stop_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x69d58567 ivtv_claim_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x7409caf5 ivtv_clear_irq_mask +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x876d0909 ivtv_reset_ir_gpio +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x91da8407 ivtv_vapi_result +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x92e8211e ivtv_ext_init +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xcad3cff0 ivtv_udma_alloc +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xef41271c ivtv_release_stream +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x00b6af8c saa7134_pgtable_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 0x1e4b5d01 saa7134_set_gpio +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x36cf61e2 saa7134_ts_register +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x5bc385c8 saa7134_devlist_lock +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x61c73097 saa7134_dmasound_init +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x6c1d0c06 saa7134_set_dmabits +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x75c66969 saa7134_boards +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x82d6dad2 saa7134_pgtable_free +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x833a87fb saa_dsp_writel +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x869e4692 saa7134_dmasound_exit +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xc71c653b saa7134_tvaudio_setmute +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xee9f0b24 saa7134_ts_unregister +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xf251ff0f saa7134_pgtable_build +EXPORT_SYMBOL drivers/media/pci/ttpci/ttpci-eeprom 0xc3e4c127 ttpci_eeprom_decode_mac +EXPORT_SYMBOL drivers/media/pci/ttpci/ttpci-eeprom 0xdf45bc2f ttpci_eeprom_parse_mac +EXPORT_SYMBOL drivers/media/pci/zoran/videocodec 0x38521d4c videocodec_attach +EXPORT_SYMBOL drivers/media/pci/zoran/videocodec 0x7d141eee videocodec_register +EXPORT_SYMBOL drivers/media/pci/zoran/videocodec 0xd4f604d8 videocodec_detach +EXPORT_SYMBOL drivers/media/pci/zoran/videocodec 0xd84cce3b videocodec_unregister +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x0b232561 soc_camera_host_unregister +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x48d0af07 soc_camera_power_off +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x59ea9d5c soc_camera_apply_board_flags +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x66d92c96 soc_camera_host_register +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x939a5df3 soc_camera_xlate_by_fourcc +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0xe48d01cf soc_camera_power_init +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0xe7af283e soc_camera_power_on +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0x25c52d97 soc_mbus_samples_per_pixel +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0x2863728e soc_mbus_image_size +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0x29f5a98b soc_mbus_get_fmtdesc +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0x5f3e3558 soc_mbus_bytes_per_line +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0xc8b28da5 soc_mbus_config_compatible +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0xdc5dafe2 soc_mbus_find_fmtdesc +EXPORT_SYMBOL drivers/media/radio/tea575x 0x0e9d8a60 snd_tea575x_s_hw_freq_seek +EXPORT_SYMBOL drivers/media/radio/tea575x 0x525927cb snd_tea575x_hw_init +EXPORT_SYMBOL drivers/media/radio/tea575x 0x5e613631 snd_tea575x_g_tuner +EXPORT_SYMBOL drivers/media/radio/tea575x 0x7346ef78 snd_tea575x_enum_freq_bands +EXPORT_SYMBOL drivers/media/radio/tea575x 0x7c7c1136 snd_tea575x_set_freq +EXPORT_SYMBOL drivers/media/radio/tea575x 0xc8a718d3 snd_tea575x_init +EXPORT_SYMBOL drivers/media/radio/tea575x 0xed3bc0ec snd_tea575x_exit +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x04dca738 lirc_unregister_driver +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x0c723dd7 lirc_dev_fop_ioctl +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x108fdba5 lirc_dev_fop_open +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x45240306 lirc_dev_fop_write +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x547f3714 lirc_dev_fop_close +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x67604cc3 lirc_register_driver +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0xaf6a83d2 lirc_dev_fop_read +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0xcc0b036c lirc_get_pdata +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0xf42daa6d lirc_dev_fop_poll +EXPORT_SYMBOL drivers/media/rc/rc-core 0x3812bbb6 ir_raw_handler_unregister +EXPORT_SYMBOL drivers/media/rc/rc-core 0x601f5ec8 ir_raw_handler_register +EXPORT_SYMBOL drivers/media/tuners/fc0011 0xdebb27a0 fc0011_attach +EXPORT_SYMBOL drivers/media/tuners/fc0012 0xdc69f02e fc0012_attach +EXPORT_SYMBOL drivers/media/tuners/fc0013 0x3ad6c462 fc0013_rc_cal_reset +EXPORT_SYMBOL drivers/media/tuners/fc0013 0xb9132b4f fc0013_attach +EXPORT_SYMBOL drivers/media/tuners/fc0013 0xc1c2342a fc0013_rc_cal_add +EXPORT_SYMBOL drivers/media/tuners/max2165 0x9dc4041a max2165_attach +EXPORT_SYMBOL drivers/media/tuners/mc44s803 0x1187f1c6 mc44s803_attach +EXPORT_SYMBOL drivers/media/tuners/mt2060 0x22396f8e mt2060_attach +EXPORT_SYMBOL drivers/media/tuners/mt2131 0x1a71d8ab mt2131_attach +EXPORT_SYMBOL drivers/media/tuners/mt2266 0x340fd6c6 mt2266_attach +EXPORT_SYMBOL drivers/media/tuners/mxl5005s 0x5de5be8b mxl5005s_attach +EXPORT_SYMBOL drivers/media/tuners/qt1010 0x4da0d5ec qt1010_attach +EXPORT_SYMBOL drivers/media/tuners/tda18218 0xebeec478 tda18218_attach +EXPORT_SYMBOL drivers/media/tuners/tuner-types 0x0cb4b189 tuners +EXPORT_SYMBOL drivers/media/tuners/tuner-types 0xc2821775 tuner_count +EXPORT_SYMBOL drivers/media/tuners/tuner-xc2028 0x8430733e xc2028_attach +EXPORT_SYMBOL drivers/media/tuners/xc4000 0xfc0543e7 xc4000_attach +EXPORT_SYMBOL drivers/media/tuners/xc5000 0xdae789e4 xc5000_attach +EXPORT_SYMBOL drivers/media/usb/cx231xx/cx231xx 0xe58cc954 cx231xx_register_extension +EXPORT_SYMBOL drivers/media/usb/cx231xx/cx231xx 0xe6fac90b cx231xx_unregister_extension +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x010241f2 dvb_usbv2_generic_write_locked +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x06e45ad1 dvb_usbv2_resume +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x0dde19f9 dvb_usbv2_probe +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x1b14d3d4 dvb_usbv2_suspend +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x4af7c2ef dvb_usbv2_generic_write +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0xc645c35e dvb_usbv2_reset_resume +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0xcda44279 dvb_usbv2_generic_rw +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0xd5882ac5 dvb_usbv2_disconnect +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0xe876f85b dvb_usbv2_generic_rw_locked +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x37cec96b dvb_usb_generic_rw +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x4614c0e4 dvb_usb_device_init +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x830371dc dvb_usb_get_hexline +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x8e69a32d usb_cypress_load_firmware +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x9b1e507d dvb_usb_generic_write +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0xbdfe9d99 dvb_usb_device_exit +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0xdca07907 dvb_usb_nec_rc_key_to_event +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-af9005-remote 0x13e247e0 rc_map_af9005_table +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-af9005-remote 0x532e29e3 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 0x0418adfe dibusb_streaming_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x0e22973b dibusb_i2c_algo +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x3534d5d2 dibusb_dib3000mc_frontend_attach +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x4891b727 dibusb_pid_filter +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x50b722b1 dibusb2_0_streaming_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x5ca22711 dibusb2_0_power_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x5f031f5a dibusb_rc_query +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x5f76c6fb dibusb_dib3000mc_tuner_attach +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x7d4fff97 dibusb_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x858f12c3 dibusb_power_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x9998813d dibusb_read_eeprom_byte +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xb47559e0 rc_map_dibusb_table +EXPORT_SYMBOL drivers/media/usb/em28xx/em28xx 0x50da9451 em28xx_register_extension +EXPORT_SYMBOL drivers/media/usb/em28xx/em28xx 0x724ba858 em28xx_unregister_extension +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x211a1ab9 go7007_snd_init +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x3501a5ed go7007_register_encoder +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x44f871bc go7007_boot_encoder +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x4a85cef6 go7007_update_board +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x5c5fc85c go7007_snd_remove +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x6cb2e450 go7007_read_addr +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x7b96c79a go7007_alloc +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x91fac6a8 go7007_parse_video_stream +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0xad04c83f go7007_read_interrupt +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x02e066f8 gspca_suspend +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x0711dba0 gspca_frame_add +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x27f99e15 gspca_coarse_grained_expo_autogain +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x623abc41 gspca_dev_probe +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x9670af2c gspca_debug +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x9e4e0b50 gspca_resume +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x9eda0246 gspca_disconnect +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0xbb41f65a gspca_dev_probe2 +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0xf1c94755 gspca_expo_autogain +EXPORT_SYMBOL drivers/media/usb/tm6000/tm6000 0x6f6c70f3 tm6000_init_digital_mode +EXPORT_SYMBOL drivers/media/usb/tm6000/tm6000 0xe6360e22 tm6000_register_extension +EXPORT_SYMBOL drivers/media/usb/tm6000/tm6000 0xf03e9f24 tm6000_unregister_extension +EXPORT_SYMBOL drivers/media/usb/ttusb-dec/ttusbdecfe 0x431a188b ttusbdecfe_dvbs_attach +EXPORT_SYMBOL drivers/media/usb/ttusb-dec/ttusbdecfe 0x68dd1941 ttusbdecfe_dvbt_attach +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-common 0xabe27502 v4l2_ctrl_query_fill +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-mem2mem 0x04eca43b v4l2_m2m_mmap +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-mem2mem 0x35eba238 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 0x8336a025 v4l2_m2m_job_finish +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0x02dd484e videobuf_dvb_dealloc_frontends +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0x0973678e videobuf_dvb_alloc_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0x1a03981c videobuf_dvb_get_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0x50d37f32 videobuf_dvb_unregister_bus +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0xe13e1007 videobuf_dvb_find_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0xeed96d5b videobuf_dvb_register_bus +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-core 0xa068569b vb2_querybuf +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0x32853b31 vb2_dvb_register_bus +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0x3bb120ab vb2_dvb_unregister_bus +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0x52761c36 vb2_dvb_find_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0x7dfffd25 vb2_dvb_alloc_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0xb176ea13 vb2_dvb_get_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0xd6b75d3a vb2_dvb_dealloc_frontends +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x056a7ff2 v4l2_ctrl_find +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x0614dd5a v4l2_video_std_frame_period +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 0x1a40557d v4l2_async_notifier_unregister +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x1b5c0864 v4l2_ctrl_merge +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x1f6b46b8 v4l2_ctrl_new_std_menu_items +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x1f70ee67 v4l2_subdev_g_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x2342f1ae v4l2_prio_open +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x29a0711e v4l2_s_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x2bae287f v4l2_g_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x2d2e483f v4l2_async_unregister_subdev +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x36847d11 v4l2_ctrl_get_int_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x3974cd02 v4l2_clk_enable +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x3a1a5a23 v4l2_ctrl_handler_log_status +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x3adbd595 v4l2_field_names +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x3aead7d3 v4l2_ctrl_subdev_log_status +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x3bdd0f94 v4l2_prio_change +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x405edcac v4l2_try_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x43229431 v4l2_subdev_s_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x433040a0 video_usercopy +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x433a16a0 v4l2_clk_unregister +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x45a44c24 v4l2_ctrl_fill +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x45eedc74 v4l2_ctrl_new_std +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x495426ee v4l2_ctrl_get_name +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x4b77c88d v4l2_ctrl_replace +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x4fd2ad54 v4l2_ctrl_g_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x58a1a406 v4l2_clk_put +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x5f2b5d59 v4l2_ctrl_poll +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x63b18a84 v4l2_ctrl_add_handler +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x68f2f0e2 v4l2_ctrl_new_custom +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x698556ee v4l2_ctrl_new_std_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x6a11a13a v4l2_clk_unregister_fixed +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x72035698 video_unregister_device +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x79e408fb v4l2_subdev_try_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x7a3cd015 v4l2_ctrl_get_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x7dff423c v4l2_ctrl_new_int_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x80393baf v4l2_subdev_init +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x8106095a v4l2_prio_max +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x826259e5 v4l2_clk_set_rate +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x8521b54a v4l2_querymenu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x87654341 v4l2_ctrl_log_status +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x8acb3115 v4l2_clk_register +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x8c70c729 video_ioctl2 +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x8d338c6f v4l2_ctrl_grab +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x8dd9c8a9 __v4l2_ctrl_s_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x9c79f362 v4l2_queryctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x9e50e968 v4l2_subdev_queryctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x9ea2635a video_devdata +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x9ef331d7 v4l2_ctrl_cluster +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xa6023f4e v4l2_subdev_s_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xa8cb534e v4l2_ctrl_subscribe_event +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xabae730b v4l2_ctrl_subdev_subscribe_event +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb31b92c4 video_device_release_empty +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb4955193 __v4l2_ctrl_s_ctrl_int64 +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb5f8e460 v4l2_async_register_subdev +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb77b0159 v4l2_prio_init +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb841c635 v4l2_ctrl_handler_init_class +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb9f4bbe6 v4l2_ctrl_handler_setup +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xbc5671dc v4l_printk_ioctl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xc1723a65 v4l2_async_notifier_register +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xc40e01d9 v4l2_ctrl_notify +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xc4241f12 __v4l2_ctrl_s_ctrl_string +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xc6920509 v4l2_clk_disable +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xc97cc5bf __video_register_device +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xcda04a5b v4l2_prio_close +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xd201eedd v4l2_subdev_querymenu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xd58ab6c2 v4l2_ctrl_sub_ev_ops +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xd8def9d1 v4l2_ctrl_radio_filter +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xd98fe970 v4l2_ctrl_activate +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xdb421131 v4l2_ctrl_auto_cluster +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xdc0dbd49 v4l2_query_ext_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xdc62c557 video_device_release +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe2290d81 __v4l2_clk_register_fixed +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe28eb7d8 v4l2_ctrl_handler_free +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe2b92059 v4l2_video_std_construct +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe35b2966 v4l2_ctrl_g_ctrl_int64 +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xeb91620a v4l2_ctrl_add_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xecbbfa94 v4l2_clk_get +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xef3bd29f v4l2_g_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf0fd7dce v4l2_subdev_g_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf1ecfd8d v4l2_clk_get_rate +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf3251e7b v4l2_norm_to_name +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf8202453 v4l2_s_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf9e44f4d __v4l2_ctrl_modify_range +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xfeb38f30 video_device_alloc +EXPORT_SYMBOL drivers/memstick/core/memstick 0x0216aab1 memstick_new_req +EXPORT_SYMBOL drivers/memstick/core/memstick 0x046e2e3c memstick_add_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x0c60a63b memstick_free_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x2579cc14 memstick_unregister_driver +EXPORT_SYMBOL drivers/memstick/core/memstick 0x4233a465 memstick_register_driver +EXPORT_SYMBOL drivers/memstick/core/memstick 0x4cdd943e memstick_resume_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x5d820a02 memstick_init_req_sg +EXPORT_SYMBOL drivers/memstick/core/memstick 0x690bb40f memstick_remove_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x8c956bde memstick_next_req +EXPORT_SYMBOL drivers/memstick/core/memstick 0xa4529f84 memstick_detect_change +EXPORT_SYMBOL drivers/memstick/core/memstick 0xdc07e67e memstick_init_req +EXPORT_SYMBOL drivers/memstick/core/memstick 0xe55da954 memstick_suspend_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0xe7fe81a5 memstick_alloc_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0xeeae92fd memstick_set_rw_addr +EXPORT_SYMBOL drivers/memstick/host/r592 0x52f1b23b memstick_debug_get_tpc_name +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x0ee222c7 mpt_halt_firmware +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x1494dd6c mpt_HardResetHandler +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x1612ee89 mpt_free_fw_memory +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x21946ad9 mpt_GetIocState +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x21f6fbb9 mpt_send_handshake_request +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x2a63d766 mpt_set_taskmgmt_in_progress_flag +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x3048663c mptbase_sas_persist_operation +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x33f95c84 mpt_raid_phys_disk_pg0 +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x382eefca mpt_alloc_fw_memory +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x3d2a0420 mpt_put_msg_frame_hi_pri +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x4526289b mpt_event_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x48deae7f mpt_clear_taskmgmt_in_progress_flag +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x4b09454a mpt_attach +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x4ba0a2b1 mpt_verify_adapter +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x502108d0 mpt_fwfault_debug +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x53bfdc2a mpt_raid_phys_disk_get_num_paths +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x55ce34e0 mpt_free_msg_frame +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x57ddcfe1 mpt_reset_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x5d5b6688 mpt_raid_phys_disk_pg1 +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x5f21c619 mpt_put_msg_frame +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x67d28e89 mpt_device_driver_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x890c50ec mpt_detach +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x93e95623 mpt_Soft_Hard_ResetHandler +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xa98b32b9 mpt_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xaa86a31e mpt_event_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xc0e69f82 mpt_device_driver_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xc47c22e8 mpt_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xc4b1f059 mpt_resume +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xd10d0240 mpt_suspend +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xd9a92a75 mpt_reset_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xdd805159 ioc_list +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xe0c8ecd1 mpt_print_ioc_summary +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xe4bb135e mpt_get_msg_frame +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xf09b1de9 mpt_findImVolumes +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xf668433d mpt_config +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x05f3b11f mptscsih_resume +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x06cc5dec mptscsih_host_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x148353d6 mptscsih_taskmgmt_complete +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x1f8d06bb mptscsih_is_phys_disk +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x2878be0f mptscsih_show_info +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x2c366cc4 mptscsih_ioc_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x4b77ba50 mptscsih_dev_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x552ab751 mptscsih_change_queue_depth +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x5639c60c mptscsih_slave_destroy +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x636b9fb9 mptscsih_event_process +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x6f0a7017 mptscsih_bus_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x6f9ac80c mptscsih_qcmd +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x869c9d16 mptscsih_info +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x87919ad7 mptscsih_slave_configure +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x87fddc42 mptscsih_shutdown +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xa259f8aa mptscsih_get_scsi_lookup +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xa5f23636 mptscsih_raid_id_to_num +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xa6277ad7 mptscsih_remove +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xafefa86b mptscsih_abort +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xbd697ca0 mptscsih_taskmgmt_response_code +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xbf4463ae mptscsih_suspend +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xda75cd0d mptscsih_bios_param +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xea886800 mptscsih_flush_running_cmds +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xee1fa3d8 mptscsih_io_done +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xf0e551aa mptscsih_scandv_complete +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xf6f33b9d mptscsih_IssueTaskMgmt +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xfa82ec8f mptscsih_host_attrs +EXPORT_SYMBOL drivers/mfd/cros_ec 0x66415553 cros_ec_resume +EXPORT_SYMBOL drivers/mfd/cros_ec 0x6c7a450f cros_ec_register +EXPORT_SYMBOL drivers/mfd/cros_ec 0xe7107972 cros_ec_suspend +EXPORT_SYMBOL drivers/mfd/cros_ec 0xfcd1e2e2 cros_ec_remove +EXPORT_SYMBOL drivers/mfd/dln2 0x6e5661ef dln2_unregister_event_cb +EXPORT_SYMBOL drivers/mfd/dln2 0xaf6350e7 dln2_register_event_cb +EXPORT_SYMBOL drivers/mfd/dln2 0xc4922de6 dln2_transfer +EXPORT_SYMBOL drivers/mfd/htc-pasic3 0xa00818c1 pasic3_read_register +EXPORT_SYMBOL drivers/mfd/htc-pasic3 0xe36d1193 pasic3_write_register +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x1e2127f8 mc13xxx_unlock +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x4673f84f mc13xxx_reg_read +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x4847f193 mc13xxx_irq_mask +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x55dab9e2 mc13xxx_irq_unmask +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x67e161f6 mc13xxx_get_flags +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x977bc80f mc13xxx_irq_free +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x9d7ecbb3 mc13xxx_irq_request +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xbcb84b4d mc13xxx_irq_status +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xc1d298ac mc13xxx_lock +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xc5d32a64 mc13xxx_reg_rmw +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xcbbf8a66 mc13xxx_reg_write +EXPORT_SYMBOL drivers/mfd/tps6105x 0x739f2bef tps6105x_mask_and_set +EXPORT_SYMBOL drivers/mfd/tps6105x 0xc43df783 tps6105x_set +EXPORT_SYMBOL drivers/mfd/tps6105x 0xf36a1065 tps6105x_get +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-irq 0x05189cad wm8994_irq_init +EXPORT_SYMBOL drivers/mfd/wm8994-irq 0x9249042b wm8994_irq_exit +EXPORT_SYMBOL drivers/mfd/wm8994-regmap 0x525b7ef0 wm8958_regmap_config +EXPORT_SYMBOL drivers/mfd/wm8994-regmap 0x6061c569 wm8994_regmap_config +EXPORT_SYMBOL drivers/mfd/wm8994-regmap 0x9f846538 wm8994_base_regmap_config +EXPORT_SYMBOL drivers/mfd/wm8994-regmap 0xcd397cdd wm1811_regmap_config +EXPORT_SYMBOL drivers/misc/ad525x_dpot 0x1be7029e ad_dpot_probe +EXPORT_SYMBOL drivers/misc/ad525x_dpot 0x6b97fafb ad_dpot_remove +EXPORT_SYMBOL drivers/misc/altera-stapl/altera-stapl 0x483c4f11 altera_init +EXPORT_SYMBOL drivers/misc/c2port/core 0x0ab62929 c2port_device_register +EXPORT_SYMBOL drivers/misc/c2port/core 0xdc679877 c2port_device_unregister +EXPORT_SYMBOL drivers/misc/ioc4 0x9f9c951a ioc4_register_submodule +EXPORT_SYMBOL drivers/misc/ioc4 0xa312af9a ioc4_unregister_submodule +EXPORT_SYMBOL drivers/misc/mei/mei 0x2e409d94 __tracepoint_mei_reg_write +EXPORT_SYMBOL drivers/misc/mei/mei 0xbcb373db __tracepoint_mei_reg_read +EXPORT_SYMBOL drivers/misc/tifm_core 0x06167eb5 tifm_alloc_device +EXPORT_SYMBOL drivers/misc/tifm_core 0x06a5d0a8 tifm_remove_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0x21e66d4e tifm_eject +EXPORT_SYMBOL drivers/misc/tifm_core 0x3179de7a tifm_map_sg +EXPORT_SYMBOL drivers/misc/tifm_core 0x47fec778 tifm_unregister_driver +EXPORT_SYMBOL drivers/misc/tifm_core 0x58add2fc tifm_register_driver +EXPORT_SYMBOL drivers/misc/tifm_core 0x70edf984 tifm_free_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0xa8c2ec46 tifm_queue_work +EXPORT_SYMBOL drivers/misc/tifm_core 0xb2cbb0f9 tifm_free_device +EXPORT_SYMBOL drivers/misc/tifm_core 0xdb8f52b4 tifm_unmap_sg +EXPORT_SYMBOL drivers/misc/tifm_core 0xed836628 tifm_add_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0xfaf5d269 tifm_has_ms_pif +EXPORT_SYMBOL drivers/misc/tifm_core 0xfdef637a tifm_alloc_adapter +EXPORT_SYMBOL drivers/mmc/card/mmc_block 0x0cc0dea8 mmc_cleanup_queue +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x01bc1ee7 cfi_build_cmd +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x04acb1fc cfi_build_cmd_addr +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x25db5339 cfi_merge_status +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x30c4e30c cfi_fixup +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x45cc1c91 cfi_read_pri +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0xa8b08fdb cfi_send_gen_cmd +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0xfb30656c cfi_varsize_frob +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0xff9fa623 cfi_udelay +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0x27c9bfbe register_mtd_chip_driver +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0x73d69a89 map_destroy +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0x833452ea do_map_probe +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0xbb1cbb8b unregister_mtd_chip_driver +EXPORT_SYMBOL drivers/mtd/chips/gen_probe 0xb10919f7 mtd_do_chip_probe +EXPORT_SYMBOL drivers/mtd/lpddr/lpddr_cmds 0x443fb120 lpddr_cmdset +EXPORT_SYMBOL drivers/mtd/maps/map_funcs 0xb9a6eb59 simple_map_init +EXPORT_SYMBOL drivers/mtd/mtd 0x05742d82 mtd_concat_create +EXPORT_SYMBOL drivers/mtd/mtd 0xaf932080 mtd_concat_destroy +EXPORT_SYMBOL drivers/mtd/nand/denali 0x45c52afb denali_remove +EXPORT_SYMBOL drivers/mtd/nand/denali 0xbae9c386 denali_init +EXPORT_SYMBOL drivers/mtd/nand/nand 0x09364f24 nand_scan_ident +EXPORT_SYMBOL drivers/mtd/nand/nand 0x16c2c630 nand_lock +EXPORT_SYMBOL drivers/mtd/nand/nand 0x2baf38d6 nand_scan +EXPORT_SYMBOL drivers/mtd/nand/nand 0x32b583c9 nand_scan_tail +EXPORT_SYMBOL drivers/mtd/nand/nand 0x7c1b6e0c nand_unlock +EXPORT_SYMBOL drivers/mtd/nand/nand 0xef859391 onfi_async_timing_mode_to_sdr_timings +EXPORT_SYMBOL drivers/mtd/nand/nand 0xfa815c79 nand_scan_bbt +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0x6054d2b7 nand_bch_calculate_ecc +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0x70097aa0 nand_bch_free +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0xb62352ac nand_bch_init +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0xc3f2550f nand_bch_correct_data +EXPORT_SYMBOL drivers/mtd/nand/nand_ecc 0x3132ee65 __nand_calculate_ecc +EXPORT_SYMBOL drivers/mtd/nand/nand_ecc 0x759ffc8c nand_calculate_ecc +EXPORT_SYMBOL drivers/mtd/nand/nand_ecc 0x93d8ab2b nand_correct_data +EXPORT_SYMBOL drivers/mtd/nand/nand_ecc 0xb4b94377 __nand_correct_data +EXPORT_SYMBOL drivers/mtd/nand/nand_ids 0x8cfcf75c nand_flash_ids +EXPORT_SYMBOL drivers/mtd/nand/nand_ids 0xa336feb7 nand_manuf_ids +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0x6c43c624 onenand_scan_bbt +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0x81a0f9cb onenand_addr +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0x8b8f47fe flexonenand_region +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0xd707c6a3 onenand_default_bbt +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x0a94e8cb arcnet_send_packet +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x0d227f80 arcnet_close +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x0eb232c8 arcnet_timeout +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x2de2973d arc_raw_proto +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x618b11dc alloc_arcdev +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x6534792a arcnet_debug +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xa391eb7a arc_proto_default +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xac1c7ce7 arcnet_unregister_proto +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xaefd3af2 arc_proto_map +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xba0567e5 arc_bcast_proto +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xd25b823d arcnet_open +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xecb730b0 arcnet_interrupt +EXPORT_SYMBOL drivers/net/arcnet/com20020 0x0743c11a com20020_check +EXPORT_SYMBOL drivers/net/arcnet/com20020 0x15a90379 com20020_netdev_ops +EXPORT_SYMBOL drivers/net/arcnet/com20020 0xaa4d77f3 com20020_found +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x119721ac ei_interrupt +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x1dae526f ei_poll +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x35b4b49c ei_open +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x437b45ed ei_set_multicast_list +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x579a5127 ei_start_xmit +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x5ee67244 NS8390_init +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x7e950b14 ei_close +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x86632879 ei_tx_timeout +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xbf017a6e ei_get_stats +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xc8399285 __alloc_ei_netdev +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xd4e67361 ei_netdev_ops +EXPORT_SYMBOL drivers/net/ethernet/broadcom/bnx2x/bnx2x 0x35c30550 bnx2x_schedule_sp_rtnl +EXPORT_SYMBOL drivers/net/ethernet/broadcom/cnic 0x05bdd911 cnic_register_driver +EXPORT_SYMBOL drivers/net/ethernet/broadcom/cnic 0x636af174 cnic_unregister_driver +EXPORT_SYMBOL drivers/net/ethernet/cavium/thunder/thunder_bgx 0x285bde59 bgx_get_rx_stats +EXPORT_SYMBOL drivers/net/ethernet/cavium/thunder/thunder_bgx 0x42264715 bgx_get_lmac_count +EXPORT_SYMBOL drivers/net/ethernet/cavium/thunder/thunder_bgx 0x6dc1648d bgx_get_lmac_mac +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 0xe48ca42a bgx_get_tx_stats +EXPORT_SYMBOL drivers/net/ethernet/cavium/thunder/thunder_bgx 0xf101d1b2 bgx_get_lmac_link_state +EXPORT_SYMBOL drivers/net/ethernet/cavium/thunder/thunder_bgx 0xf9508980 bgx_set_lmac_mac +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x1848900a cxgb3_remove_tid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x24740681 t3_l2t_send_slow +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x2f2974e2 cxgb3_unregister_client +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x5d803656 t3_register_cpl_handler +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x68364355 cxgb3_ofld_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x7a1adff6 cxgb3_alloc_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x7fec7ec3 t3_l2t_get +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x80806306 dev2t3cdev +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x90e8081c cxgb3_register_client +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x96e1cec6 t3_l2t_send_event +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x9cd30170 cxgb3_free_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xb35fe5d7 t3_l2e_free +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xd83736bb cxgb3_insert_tid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xf48e69dc cxgb3_free_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xf72f8bce cxgb3_queue_tid_release +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xfb567a04 cxgb3_alloc_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x03fceb79 cxgb4_get_tcp_stats +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x04faec0c cxgb4_create_server +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x125db263 cxgb4_pktgl_to_skb +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x12cc0d1a cxgb4_free_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x132e5e7d cxgb4_create_server6 +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x168b33b3 cxgb4_port_viid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x2682557e cxgb4_iscsi_init +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x2eef4f96 cxgb4_create_server_filter +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x39c5d787 cxgb4_port_chan +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x3dfdb2ad cxgb4_alloc_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x43c2c9cc cxgb4_dbfifo_count +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x4700d0a1 cxgb4_read_sge_timestamp +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x50477083 cxgb4_remove_server +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x50ee5c07 cxgb4_best_aligned_mtu +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x654874c7 cxgb4_read_tpte +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x6c1d8cd1 cxgb4_remove_server_filter +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x7ebd41d4 cxgb4_bar2_sge_qregs +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x87a40e04 cxgb4_dcb_enabled +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x9f697fcd cxgb4_l2t_get +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xa2af4940 cxgb4_l2t_release +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xb05df912 cxgb4_l2t_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xbe14e37b cxgb4_flush_eq_cache +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xc6f2224d cxgb4_alloc_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xca926090 cxgb4_clip_release +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xd00e5a36 cxgb4_unregister_uld +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xd5e4476d cxgb4_clip_get +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xd69a0294 cxgb4_best_mtu +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xd74a302a cxgb4_remove_tid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xe5afa6da cxgb4_update_root_dev_clip +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xe8428e32 cxgb4_select_ntuple +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xec185ec3 cxgb4_alloc_sftid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xf1a8b655 cxgb4_register_uld +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xf1ef6c92 cxgb4_sync_txq_pidx +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xf60e5439 cxgb4_ofld_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xf859272a cxgb4_port_idx +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xfa970f85 cxgb4_free_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xfee0869d t4_cleanup_clip_tbl +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0x0e712340 vnic_dev_get_res +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0x3f250f97 enic_api_devcmd_proxy_by_index +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0x4f650da7 vnic_dev_get_res_count +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0x605e6a37 vnic_dev_register +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0x9196d804 vnic_dev_unregister +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0xad4f8961 vnic_dev_get_pdev +EXPORT_SYMBOL drivers/net/ethernet/emulex/benet/be2net 0x6829c6e9 be_roce_register_driver +EXPORT_SYMBOL drivers/net/ethernet/emulex/benet/be2net 0x92bbe1f8 be_roce_unregister_driver +EXPORT_SYMBOL drivers/net/ethernet/emulex/benet/be2net 0xbab62e22 be_roce_mcc_cmd +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0c804eb0 set_and_calc_slave_port_state +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0fffbeff mlx4_SET_VPORT_QOS_set +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x34e4a813 mlx4_put_slave_node_guid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3686beb5 mlx4_ALLOCATE_VPP_get +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3950e580 mlx4_get_cpu_rmap +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x397478f6 mlx4_tunnel_steer_add +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x417ffde3 mlx4_SET_PORT_fcs_check +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4320dc2b mlx4_SET_PORT_general +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x47a81338 mlx4_is_eq_shared +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4a3b78a1 mlx4_SET_VPORT_QOS_get +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4fb13861 mlx4_gen_slaves_port_mgt_ev +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x52f44335 mlx4_get_eqs_per_port +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6ecd04b6 mlx4_SET_MCAST_FLTR +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x71d5b505 mlx4_get_parav_qkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x72a40ec3 mlx4_get_slave_pkey_gid_tbl_len +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7c991b19 mlx4_SET_PORT_qpn_calc +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8778ed71 mlx4_gen_port_state_change_eqe +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb93d49a5 mlx4_gen_pkey_eqe +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb9a35ab9 mlx4_ALLOCATE_VPP_set +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbfc9ca2f mlx4_sync_pkey_table +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc269d695 mlx4_SET_PORT_SCHEDULER +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc7e0e7fa mlx4_get_module_info +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc8ab3c7b mlx4_assign_eq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xca359d5d mlx4_is_slave_active +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd2767c74 mlx4_gen_guid_change_eqe +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd998f28c mlx4_test_interrupts +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xdb9ed304 mlx4_SET_PORT_PRIO2TC +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xdf617067 mlx4_get_slave_port_state +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xecf26503 mlx4_release_eq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xed10f90d mlx4_get_slave_node_guid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xed9a699e mlx4_eq_get_irq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xfb3960bc mlx4_get_roce_gid_from_slave +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xfd37b313 mlx4_SET_PORT_VXLAN +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xfd5c22e3 mlx4_is_eq_vector_valid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xff5f1c0d mlx4_get_slave_from_roce_gid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xffc695ce mlx4_SET_PORT_BEACON +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x023c4491 mlx5_cmd_free_uar +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x0857aabd mlx5_get_flow_table_id +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x0eb7287e mlx5_del_flow_table_entry +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x1158138f mlx5_core_destroy_psv +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x155d9ab3 mlx5_core_alloc_pd +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x169b16f6 mlx5_core_get_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x1898c579 mlx5_alloc_map_uar +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x1dbee091 mlx5_vector2eqn +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x2ff522cb mlx5_core_destroy_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x329f59e5 mlx5_core_create_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x38ae0ff6 mlx5_core_destroy_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x3f4996bc mlx5_cmd_init +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x4185ae12 mlx5_core_dump_fill_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x4fd229d5 mlx5_create_flow_table +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x59cfd9b9 mlx5_core_query_vendor_id +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x59deab11 mlx5_core_arm_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x5a328f33 mlx5_core_create_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x63481072 mlx5_core_create_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x6affeab5 mlx5_cmd_cleanup +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x6d6b0543 mlx5_core_query_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x75b74f4d mlx5_cmd_alloc_uar +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x7dc273bd mlx5_query_nic_vport_mac_address +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x8045009f mlx5_register_interface +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x8a253fc9 mlx5_cmd_comp_handler +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x8b8bc325 mlx5_get_protocol_dev +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x910cff75 mlx5_core_attach_mcg +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xab87fd1d mlx5_core_detach_mcg +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xb18ff8b4 mlx5_unmap_free_uar +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xb7b7ad80 mlx5_core_query_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xbb7ef6ba mlx5_core_query_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xc2d958cd mlx5_core_destroy_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xd1938f80 mlx5_core_create_psv +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xd22655c4 mlx5_cmd_exec +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe6af33e4 mlx5_destroy_flow_table +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe8b7a33a mlx5_unregister_interface +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe9840381 mlx5_core_modify_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf0e11e8d mlx5_cmd_exec_cb +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf206b703 mlx5_debugfs_root +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf2ca116e mlx5_core_dealloc_pd +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xfba5b085 mlx5_query_vport_state +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xfc728a49 mlx5_add_flow_table_entry +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x0be03a4f hdlcdrv_register +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x2791029f hdlcdrv_receiver +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x45471362 hdlcdrv_unregister +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x5389f13d hdlcdrv_arbitrate +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x9bda83f6 hdlcdrv_transmitter +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x23c59ef2 sirdev_receive +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x41f7e0d8 sirdev_raw_write +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x53a2e2aa irda_register_dongle +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x784448b1 sirdev_set_dtr_rts +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x87c9ee72 sirdev_put_instance +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x89f5ab2e sirdev_raw_read +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xc124efb8 irda_unregister_dongle +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xe614a0ef sirdev_write_complete +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xe912c5c4 sirdev_get_instance +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xfa6f9927 sirdev_set_dongle +EXPORT_SYMBOL drivers/net/mdio 0x22bce513 mdio_mii_ioctl +EXPORT_SYMBOL drivers/net/mdio 0x43e4defc mdio45_nway_restart +EXPORT_SYMBOL drivers/net/mdio 0x7577f992 mdio_set_flag +EXPORT_SYMBOL drivers/net/mdio 0xa1a29548 mdio45_probe +EXPORT_SYMBOL drivers/net/mdio 0xc6b1163f mdio45_links_ok +EXPORT_SYMBOL drivers/net/mdio 0xddc98749 mdio45_ethtool_gset_npage +EXPORT_SYMBOL drivers/net/mii 0x1ea1683a mii_ethtool_gset +EXPORT_SYMBOL drivers/net/mii 0x20c40c82 mii_check_media +EXPORT_SYMBOL drivers/net/mii 0x445bd110 generic_mii_ioctl +EXPORT_SYMBOL drivers/net/mii 0x5ba6e875 mii_check_gmii_support +EXPORT_SYMBOL drivers/net/mii 0x9035c155 mii_ethtool_sset +EXPORT_SYMBOL drivers/net/mii 0xe204cd36 mii_nway_restart +EXPORT_SYMBOL drivers/net/mii 0xe6a7088e mii_link_ok +EXPORT_SYMBOL drivers/net/mii 0xebd47944 mii_check_link +EXPORT_SYMBOL drivers/net/phy/mdio-bitbang 0xcbcd3e8f alloc_mdio_bitbang +EXPORT_SYMBOL drivers/net/phy/mdio-bitbang 0xdc19ffee free_mdio_bitbang +EXPORT_SYMBOL drivers/net/phy/mdio-octeon 0x8a1d5c26 octeon_mdiobus_force_mod_depencency +EXPORT_SYMBOL drivers/net/phy/vitesse 0xe3eb518a vsc824x_add_skew +EXPORT_SYMBOL drivers/net/ppp/pppox 0x82450cd0 pppox_unbind_sock +EXPORT_SYMBOL drivers/net/ppp/pppox 0xc7937019 pppox_ioctl +EXPORT_SYMBOL drivers/net/ppp/pppox 0xe0ff7a18 unregister_pppox_proto +EXPORT_SYMBOL drivers/net/ppp/pppox 0xfd7d9f2a register_pppox_proto +EXPORT_SYMBOL drivers/net/sungem_phy 0x40de6869 sungem_phy_probe +EXPORT_SYMBOL drivers/net/team/team 0x052ae02e team_options_register +EXPORT_SYMBOL drivers/net/team/team 0x19b493c0 team_options_change_check +EXPORT_SYMBOL drivers/net/team/team 0x434e7128 team_mode_register +EXPORT_SYMBOL drivers/net/team/team 0x4bf4a5f4 team_modeop_port_change_dev_addr +EXPORT_SYMBOL drivers/net/team/team 0x57539a63 team_mode_unregister +EXPORT_SYMBOL drivers/net/team/team 0x781bf32e team_option_inst_set_change +EXPORT_SYMBOL drivers/net/team/team 0x97e3c469 team_modeop_port_enter +EXPORT_SYMBOL drivers/net/team/team 0xe9781b2d team_options_unregister +EXPORT_SYMBOL drivers/net/usb/usbnet 0x15766b4b usbnet_manage_power +EXPORT_SYMBOL drivers/net/usb/usbnet 0x4c2e35c2 usbnet_device_suggests_idle +EXPORT_SYMBOL drivers/net/usb/usbnet 0x5fe856e9 usbnet_link_change +EXPORT_SYMBOL drivers/net/wan/hdlc 0x27e6ffe3 hdlc_ioctl +EXPORT_SYMBOL drivers/net/wan/hdlc 0x284553b6 hdlc_change_mtu +EXPORT_SYMBOL drivers/net/wan/hdlc 0x65932a8e attach_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0x6c37784d hdlc_open +EXPORT_SYMBOL drivers/net/wan/hdlc 0x7894b797 unregister_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0x9dfbd250 hdlc_start_xmit +EXPORT_SYMBOL drivers/net/wan/hdlc 0xb0903713 detach_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0xb3e06aed hdlc_close +EXPORT_SYMBOL drivers/net/wan/hdlc 0xb71de794 register_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0xcecb94af unregister_hdlc_device +EXPORT_SYMBOL drivers/net/wan/hdlc 0xcf06974f alloc_hdlcdev +EXPORT_SYMBOL drivers/net/wimax/i2400m/i2400m 0xf35ca908 i2400m_unknown_barker +EXPORT_SYMBOL drivers/net/wireless/airo 0x0054be91 stop_airo_card +EXPORT_SYMBOL drivers/net/wireless/airo 0x18484cf8 init_airo_card +EXPORT_SYMBOL drivers/net/wireless/airo 0x8f3d9612 reset_airo_card +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x08c8b68b ath_hw_get_listen_time +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x1d37c660 ath_hw_cycle_counters_update +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x319c6026 ath_is_49ghz_allowed +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x340e40d4 ath_key_delete +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x38544418 ath_hw_setbssidmask +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x4a1cccb4 ath_key_config +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x611bbb32 ath_printk +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x61bf3ce1 ath_regd_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x697e6321 ath_rxbuf_alloc +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x873ee95f ath_hw_keyreset +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x90d25a9d dfs_pattern_detector_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xaafdb617 ath_is_world_regd +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xc573db1b ath_is_mybeacon +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xd406da7b ath_reg_notifier_apply +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xfb4de67a ath_regd_get_band_ctl +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x10f23920 ath10k_err +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x2c2dae55 ath10k_core_start +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x492ffcaf ath10k_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x5153b943 ath10k_print_driver_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x5c812434 ath10k_core_create +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x66b60f2e ath10k_core_register +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x8df074f1 ath10k_core_stop +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x9c7bc6c7 ath10k_core_destroy +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xb7bf8ba9 ath10k_warn +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xb8f3b215 ath10k_core_unregister +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xbcf2c7f9 ath10k_debug_get_new_fw_crash_data +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x4bf6c4ea ath6kl_core_rx_complete +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x5561543b ath6kl_core_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x66d5316b ath6kl_core_cleanup +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x709a93a0 ath6kl_cfg80211_resume +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x76a73cd7 ath6kl_cfg80211_suspend +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x7b317424 ath6kl_printk +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x80a09613 ath6kl_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x8504f999 ath6kl_core_create +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x91cfb84a ath6kl_hif_rw_comp_handler +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xa6f66cc1 ath6kl_warn +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xb0134563 ath6kl_hif_intr_bh_handler +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xc4f6fe29 ath6kl_stop_txrx +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xc5798cc7 ath6kl_core_destroy +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xcb014460 ath6kl_err +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xe2f3c110 ath6kl_core_tx_complete +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x03ce4250 ath9k_cmn_beacon_config_ap +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x04120f47 ath_cmn_process_fft +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x14c90c38 ath9k_cmn_process_rate +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x1cc8eb32 ath9k_cmn_debug_recv +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x23f5e86c ath9k_cmn_init_crypto +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x2d15177d ath9k_cmn_debug_stat_rx +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x302bb27f ath9k_cmn_setup_ht_cap +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x37f87f04 ath9k_cmn_rx_skb_postprocess +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x4217e108 ath9k_cmn_beacon_config_sta +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x8d80b5f3 ath9k_cmn_spectral_scan_config +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xaa1f58f5 ath9k_cmn_debug_phy_err +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xae1128b0 ath9k_cmn_process_rssi +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xb28198d9 ath9k_cmn_get_channel +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xbb2c1170 ath9k_cmn_init_channels_rates +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xc3e291b0 ath9k_cmn_debug_base_eeprom +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xc7053ff1 ath9k_cmn_rx_accept +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xc7930040 ath9k_cmn_spectral_scan_trigger +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xce8ae00c ath9k_cmn_spectral_deinit_debug +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xd07fe4c5 ath9k_cmn_get_hw_crypto_keytype +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xd2981357 ath9k_cmn_count_streams +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xd2cc7059 ath9k_cmn_update_txpow +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xdc34629b ath9k_cmn_beacon_config_adhoc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xe2c52ff3 ath9k_cmn_debug_modal_eeprom +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xe9434219 ath9k_cmn_spectral_init_debug +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xffe37e98 ath9k_cmn_reload_chainmask +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0194afed ath9k_hw_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0217b9a3 ath9k_hw_bstuck_nfcal +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0795fa51 ath_gen_timer_isr +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x082fd2f9 ath9k_hw_set_txpowerlimit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x084e8c03 ath9k_hw_setup_statusring +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0c8f3d62 ath9k_hw_btcoex_init_2wire +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0f33a48b ath9k_hw_computetxtime +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x150da973 ath9k_hw_wow_apply_pattern +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x18925730 ar9003_paprd_is_done +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1d22651c ath9k_hw_set_tsfadjust +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1eeb4b05 ath9k_hw_btcoex_bt_stomp +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1f0b4c95 ath9k_hw_getrxfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x22b511f0 ath9k_hw_set_sta_beacon_timers +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x24180495 ar9003_paprd_enable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x258ae0b6 ath9k_hw_set_rx_bufsize +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x28f77a8c ath9k_hw_beaconq_setup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2a0e1fdd ath9k_hw_setmcastfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x31c6bd47 ath9k_hw_getnf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x33f9d1b0 ath9k_hw_disable_mib_counters +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x35d85d70 ath9k_hw_kill_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x3634b749 ath_gen_timer_free +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x3662853a ath9k_hw_settsf64 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x41e5d540 ath9k_hw_rxprocdesc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x443ef92b ath9k_hw_deinit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x47ad767f ath9k_hw_gettsf32 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x48717aa7 ar9003_get_pll_sqsum_dvc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4d5b6b5d ath9k_hw_check_nav +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4d5bb1f3 ar9003_mci_get_interrupt +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x54624a37 ath9k_hw_btcoex_init_3wire +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x54ebdcce ath9k_hw_set_tx_filter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x558c6f12 ath9k_hw_setuptxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x5a86d50a ar9003_mci_send_message +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x5b389f7f ath9k_hw_setpower +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x5da7fe4e ath9k_hw_setrxabort +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x60be3aa1 ar9003_hw_disable_phy_restart +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x63ae509d ath9k_hw_putrxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6508d343 ath9k_hw_get_txq_props +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6769c402 ath9k_hw_btcoex_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x68eb793a ath9k_hw_gen_timer_stop +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x75be9d5f ath9k_hw_setantenna +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7756a454 ath9k_hw_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7a95ff30 ar9003_mci_send_wlan_channels +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x832700eb ar9003_mci_cleanup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8559ed5c ath9k_hw_gen_timer_start +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8718b4ee ath9k_hw_name +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8cd76d1f ath9k_hw_btcoex_set_concur_txprio +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8f3a5b8f ath9k_hw_gettsf64 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8f447fe1 ath_gen_timer_alloc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x90389a23 ath9k_hw_reset_tsf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x90a5eb6d ath9k_hw_reset_calvalid +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x917e2120 ar9003_paprd_setup_gain_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x91f0483c ath9k_hw_intrpend +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x92add13d ath9k_hw_getchan_noise +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x94bfbf39 ath9k_hw_disable_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x99701130 ath9k_hw_phy_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9d084fe8 ath9k_hw_process_rxdesc_edma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9d0f4b06 ath9k_hw_gettxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9d187b68 ath9k_hw_check_alive +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa0103fb8 ath9k_hw_releasetxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa2ae58ce ath9k_hw_write_associd +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa4ec828b ath9k_hw_init_btcoex_hw +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa63fa8ce ath9k_hw_enable_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xaa1d3417 ar9003_paprd_populate_single_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xabd8095c ath9k_hw_abortpcurecv +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xac0fb3d2 ar9003_mci_setup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xac4acf08 ath9k_hw_btcoex_set_weight +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xac9db1d4 ar9003_mci_get_next_gpm_offset +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xac9dc8ad ar9003_mci_state +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb830e420 ath9k_hw_wow_enable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xba386549 ath9k_hw_wow_wakeup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xbb097a78 ath9k_hw_btcoex_enable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xbb11d400 ath9k_hw_setuprxdesc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xbbad9b71 ath9k_hw_set_gpio +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xbd0b3723 ar9003_paprd_create_curve +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xbd1ea0fc ath9k_hw_setopmode +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xbd24568f ath9k_hw_wait +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xbe34a5c2 ath9k_hw_set_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xbf58e3f0 ath9k_hw_abort_tx_dma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc0faebde ath9k_hw_addrxbuf_edma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc55503eb ar9003_hw_bb_watchdog_dbg_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc8fe5407 ath9k_hw_request_gpio +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc9f5f863 ath9k_hw_cfg_gpio_input +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xcd04e06d ath9k_hw_updatetxtriglevel +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xcd06f9fb ath9k_hw_btcoex_init_mci +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xce0c1448 ath9k_hw_ani_monitor +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xcf52f37b ath9k_hw_startpcureceive +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd268a23d ath9k_hw_numtxpending +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd55ea514 ar9003_paprd_init_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd6389846 ath9k_hw_init_global_settings +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd88394a9 ath9k_hw_beaconinit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xdc279059 ar9003_mci_set_bt_version +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xdf3aa039 ath9k_hw_gpio_get +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe0df1064 ath9k_hw_resettxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe13ce6bc ar9003_is_paprd_enabled +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe197451e ar9003_hw_bb_watchdog_check +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe6b7fea5 ath9k_hw_setrxfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe752c40c ath9k_hw_reset +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xed46cfd8 ath9k_hw_puttxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xefb73073 ath9k_hw_cfg_output +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf168d573 ath9k_hw_set_txq_props +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf1a53e07 ath9k_hw_txstart +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf659c23e ath9k_hw_stopdmarecv +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xfb2b85af ath9k_hw_stop_dma_queue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xfd7d662b ath9k_hw_btcoex_init_scheme +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xffd02408 ath9k_hw_get_tsf_offset +EXPORT_SYMBOL drivers/net/wireless/atmel 0x20efddc1 init_atmel_card +EXPORT_SYMBOL drivers/net/wireless/atmel 0x7b741fd3 stop_atmel_card +EXPORT_SYMBOL drivers/net/wireless/atmel 0xc428e45f atmel_open +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x15189252 brcmu_pktq_penq_head +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x156835ad brcmu_pktq_flush +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x28ebc9ce brcmu_pktq_pdeq_match +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x3f2988a1 brcmu_dotrev_str +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x496abb85 brcmu_pktq_mlen +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x5a5faab1 brcmu_pktq_penq +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x604416c6 brcmu_pktq_pflush +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x6f65380b brcmu_pktq_pdeq_tail +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x7295a291 brcmu_pktq_peek_tail +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x9f4b5dcf brcmu_d11_attach +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xb35ba66e brcmu_pktq_init +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xc920e396 brcmu_pkt_buf_get_skb +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xd261b8a6 brcmu_boardrev_str +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xd8d7858a brcmu_pkt_buf_free_skb +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xd964402a brcmu_pktq_mdeq +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xe521336d brcmu_pktq_pdeq +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x0d6936d2 hostap_set_antsel +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x0dfcf634 prism2_update_comms_qual +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x1723ac32 hostap_set_multicast_list_queue +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x1bdaa82b hostap_master_start_xmit +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x1f3aea15 hostap_80211_rx +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x2330f7d6 hostap_add_interface +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x23c4906a hostap_check_sta_fw_version +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x362f68f0 hostap_info_process +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x49a920bc hostap_set_encryption +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x54af37fc hostap_handle_sta_tx_exc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x685a036a hostap_setup_dev +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x6bcc85c8 hostap_free_data +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x6fdf4966 hostap_remove_interface +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x73749820 hostap_set_hostapd +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x89476b02 hostap_init_ap_proc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x9bdfb722 hostap_info_init +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xa12ad27f hostap_dump_tx_header +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xa795bd24 hostap_80211_ops +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xb2a945e0 hostap_dump_rx_header +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xb4b77c8b hostap_80211_get_hdrlen +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xc18aa0cc hostap_init_proc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xc355de5a hostap_set_roaming +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xc38cbbc6 hostap_set_word +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xc4b6a3ef hostap_init_data +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xe0667b28 hostap_set_auth_algs +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xe3aaaf82 hostap_remove_proc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xe7a8276e hostap_set_hostapd_sta +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xf0149fb8 hostap_get_porttype +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xf6d6a7fc hostap_set_string +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x30704459 libipw_wx_get_encodeext +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x316965f9 libipw_get_channel +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x3d223d28 libipw_freq_to_channel +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x41b1248e alloc_libipw +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x439eb4bb libipw_wx_get_encode +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x49285904 libipw_rx_mgt +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x52a1919c libipw_txb_free +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x5e27f3d3 libipw_wx_set_encodeext +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x638861d8 libipw_networks_age +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x65528aec libipw_wx_get_scan +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x69581847 libipw_set_geo +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x708d73bf free_libipw +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x768bd079 libipw_xmit +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x77d3b802 libipw_wx_set_encode +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x84c6ef88 libipw_rx +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x8d215d9b libipw_channel_to_freq +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xa99ae20c libipw_change_mtu +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xb7fa9234 libipw_is_valid_channel +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xd12c9109 libipw_get_geo +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xd62ca0c3 libipw_channel_to_index +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xefc0117e libipw_get_channel_flags +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x00d985da il_get_free_ucode_key_idx +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x02b1e3ec il_hdl_spectrum_measurement +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x040182d7 il_send_stats_request +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x05960577 il_init_geos +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x05b49373 il_hdl_pm_sleep +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x063dce36 il_set_rate +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x08119f4f il_eeprom_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x0ac66ad4 il_mac_sta_remove +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x157eb758 il_get_passive_dwell_time +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x1657c582 il_read_targ_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x16f3fb7a il_clear_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x1b43d034 il_set_rxon_ht +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x25c13911 il_free_geos +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x266bd1fa il_leds_exit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x2dc79a76 il_free_channel_map +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x31a3bcb8 il_txq_update_write_ptr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x3235cfb9 il_pm_ops +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x332d0520 il_scan_cancel_timeout +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x353ad62c il_mac_reset_tsf +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x36292514 il_tx_cmd_complete +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x38a4f8df il_tx_queue_free +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x390d2cb1 il_apm_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x3cd1cc9d il_tx_queue_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x3d45792b il_get_lowest_plcp +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x3e3f0b75 il_free_txq_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x3e530472 il_check_rxon_cmd +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x432e3ebd il_mac_conf_tx +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x498f5a8d il_alloc_txq_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4a75110b il_init_scan_params +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4aa39103 il_get_cmd_string +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4da47871 il_cmd_queue_unmap +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4e98efe9 il_chswitch_done +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4f78373d il_fill_probe_req +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x500b6bda il_scan_cancel +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x51b9b9e0 il_set_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x558d50ba il_mac_bss_info_changed +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x564c6740 il_debug_level +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x57dadbe7 il_mac_add_interface +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x57f883ec il_write_targ_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x5849b7e1 il_clear_ucode_stations +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x5bc3c067 il_cancel_scan_deferred_work +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x6382eb6a il_mac_remove_interface +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x674f7f75 il_send_bt_config +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x6a90c8e0 il_eeprom_query_addr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x6d6f9da6 il_set_tx_power +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x714c8092 il_leds_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x75b60756 il_send_cmd +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x7bf7cde3 il_add_beacon_time +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x7c5db95f il_get_single_channel_number +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x7c9a52f6 il_usecs_to_beacons +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x7eb23f73 il_setup_scan_deferred_work +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x7ee000a2 il_rd_prph +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x8276404c il_tx_cmd_protection +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x86024972 il_send_cmd_sync +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x89e32e73 il_hdl_csa +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x9173a3cd _il_apm_stop +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x9c18989a il_init_channel_map +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x9e1a1802 il_get_active_dwell_time +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa2b23320 il_send_lq_cmd +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa81faeee il_cmd_queue_free +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa8722a51 il_poll_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xad394edf il_set_rxon_channel +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb02791b4 il_set_decrypted_flag +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb0645764 il_add_station_common +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb21f0efd il_connection_init_rx_config +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb61bf777 il_send_rxon_timing +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb694c2cf il_set_rxon_hwcrypto +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb7bd33ff il_isr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb9820705 il_is_ht40_tx_allowed +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xba586889 il_power_update_mode +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xbc6d2cbc il_setup_watchdog +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xbd5698ba il_rx_queue_space +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xbe919d20 il_eeprom_free +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xbf31844d il_mac_hw_scan +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc0ac2e2e il_send_add_sta +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc120e94c il_irq_handle_error +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc1b0e24e il_set_flags_for_band +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc20db06c _il_poll_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc39cf12c il_bg_watchdog +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc424f9e0 il_eeprom_query16 +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xcad23cce il_dbgfs_unregister +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xcb974656 il_tx_queue_unmap +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xcc9fd593 il_force_reset +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd507172f il_power_initialize +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd8e545ea il_mac_flush +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xdb78a4fa il_dbgfs_register +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe18b02e0 il_tx_queue_reset +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe1ceb693 il_wr_prph +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe258ed56 il_restore_stations +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe435493a il_queue_space +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe6d7ee9e il_send_cmd_pdu +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xea25df6c il_rx_queue_alloc +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xecc3fd49 il_mac_config +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xed27bf5c il_apm_stop +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xed74a908 il_hdl_error +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xed85082e il_update_stats +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xeda328da il_hdl_pm_debug_stats +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf07bfdc1 il_setup_rx_scan_handlers +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf1ebcef3 il_mac_change_interface +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf501278b il_bcast_addr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xfb7df073 il_send_cmd_pdu_async +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xfbbf8927 il_full_rxon_required +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xfdd555ad il_get_channel_info +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xff1fb5b5 il_rx_queue_update_write_ptr +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x2f7b7e55 __tracepoint_iwlwifi_dev_ucode_wrap_event +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x3b9d00d6 __tracepoint_iwlwifi_dev_ioread32 +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x779dd6f5 __tracepoint_iwlwifi_dev_iowrite32 +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x85c1bb84 __tracepoint_iwlwifi_dev_iowrite8 +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x963a6f8a __tracepoint_iwlwifi_dev_ucode_error +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0xb8f7026f __tracepoint_iwlwifi_dev_ucode_cont_event +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0xf9ec6bdd __tracepoint_iwlwifi_dev_ucode_event +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x02cf7fcf hermes_struct_init +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x103f5be7 orinoco_set_multicast_list +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x340231cf orinoco_get_stats +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x3417f958 orinoco_up +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x49e0fb82 orinoco_down +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x52f8bc4f orinoco_change_mtu +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x54d0be8b __orinoco_ev_info +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x5d7d580c orinoco_process_xmit_skb +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x5ea1dd4e orinoco_tx_timeout +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x7bb7c1cc __orinoco_ev_rx +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x7bb994cc orinoco_stop +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x86187434 orinoco_if_del +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x870277d2 free_orinocodev +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x935751c2 orinoco_init +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xa3e769cb orinoco_if_add +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xa8ea01b7 alloc_orinocodev +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xe3256389 orinoco_open +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xffe27bca orinoco_interrupt +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/btcoexist/btcoexist 0xe438e64d rtl_btc_get_ops_pointer +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x04203716 rtl92c_phy_set_io_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x150b08d4 _rtl92c_phy_fw_rf_serial_read +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x1711bfdc rtl92c_dm_init_edca_turbo +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x287d8f41 rtl92ce_phy_set_rf_on +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x28c072aa _rtl92c_phy_fw_rf_serial_write +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x32ac0384 rtl92c_phy_query_bb_reg +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x341d8837 _rtl92c_phy_rf_serial_read +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x344cf868 rtl92c_phy_sw_chnl_callback +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x3849036f rtl92c_fill_h2c_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x4f767bfc _rtl92c_store_pwrIndex_diffrate_offset +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x533e7bef _rtl92c_phy_init_bb_rf_register_definition +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x63ece0b7 rtl92c_phy_set_bw_mode +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x6a5bd397 rtl92c_dm_init_rate_adaptive_mask +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x6fbaaabf rtl92c_dm_bt_coexist +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x7809b92c rtl92c_set_fw_joinbss_report_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x7a82aa64 _rtl92c_phy_dbm_to_txpwr_idx +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x7c106f3b rtl92c_phy_lc_calibrate +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x85054ec8 rtl92c_set_fw_pwrmode_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x8cb1ff3d rtl92c_dm_write_dig +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x90a76e18 rtl92c_set_fw_rsvdpagepkt +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x90ee4d25 rtl92c_bt_rssi_state_change +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x910d7efa _rtl92c_phy_set_rf_sleep +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x92624c2c rtl92c_dm_check_txpower_tracking +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x998069b0 rtl92c_phy_set_rfpath_switch +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x998d99fd rtl92c_phy_set_txpower_level +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x9b256e2b rtl92c_download_fw +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x9e5e3790 rtl92c_dm_init +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xb0b76b50 rtl92c_phy_set_io +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xb3314d48 _rtl92c_phy_calculate_bit_shift +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xb8f6ea27 _rtl92c_phy_rf_serial_write +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xb9215231 rtl92c_phy_ap_calibrate +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xb9e192dd rtl92c_dm_rf_saving +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xbe66948f rtl92c_phy_iq_calibrate +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xd6b44792 _rtl92c_phy_bb8192c_config_parafile +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xd8530a96 rtl92c_phy_sw_chnl +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xde12d693 rtl92c_firmware_selfreset +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xdf8cea83 rtl92c_dm_watchdog +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xecc218ff _rtl92c_phy_txpwr_idx_to_dbm +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xefc85b64 rtl92c_phy_update_txpower_dbm +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xf053df8e rtl92c_phy_set_bb_reg +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xf16f05b4 rtl8192_phy_check_is_legal_rfpath +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xf4e5c809 rtl92c_phy_rf_config +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x6fb9f06f rtl8723_fill_dummy +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_pci 0x1835fc79 rtl_pci_probe +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_pci 0x767448a7 rtl_pci_disconnect +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_pci 0x7c3d188e rtl_pci_resume +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_pci 0x9e624b44 rtl_pci_suspend +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_usb 0x0375795f rtl_usb_disconnect +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_usb 0x9c5fa4d8 rtl_usb_suspend +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_usb 0xa423a1a0 rtl_usb_resume +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_usb 0xe8394a7c rtl_usb_probe +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x0a32ba58 rtl_wowlan_fw_cb +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x0fbda8ac efuse_shadow_read +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x1560414d rtl_cam_delete_one_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x1f4484ca rtl_send_smps_action +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x207fbb70 rtl_evm_db_to_percentage +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x333520dd rtl_signal_scale_mapping +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x392c1e0e rtl_cam_add_one_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x3c3c2191 rtl_ps_enable_nic +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x4bb7f760 rtl_rfreg_delay +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x51ce5d89 rtl_cam_get_free_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x53ff744d rtl_lps_enter +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x59d2b95e rtl_efuse_shadow_map_update +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x5f385189 rtl_init_rfkill +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x5fb5d937 rtl_cam_mark_invalid +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x659398c9 rtl_cam_del_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x67e2a564 rtl_lps_leave +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x69b2ce44 rtl_cam_empty_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x77b1a540 rtl_ps_set_rf_state +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x79188a02 rtl_query_rxpwrpercentage +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x7e793496 rtlwifi_rate_mapping +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x8b6a74f6 rtl_hal_pwrseqcmdparsing +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x980848e2 rtl_addr_delay +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x9f176803 rtl_cam_reset_all_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xa02b8c35 efuse_read_1byte +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xa03278ed rtl_dm_diginit +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xa29b4282 rtl_fw_cb +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xbf7456d2 rtl_ps_disable_nic +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xca1c0750 rtl_cmd_send_packet +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xdf77a1e4 rtl_process_phyinfo +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xe2b3272e efuse_one_byte_read +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xe503cf61 rtl_phy_scan_operation_backup +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xf9ec5fa3 rtl_bb_delay +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xf9eeabe0 rtl_get_tcb_desc +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0x3f65cc9d wlcore_calc_packet_alignment +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0x4c177a54 wlcore_tx_complete +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0x6752ca6b wl12xx_is_dummy_packet +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0xd44be1c3 wl1271_free_tx_id +EXPORT_SYMBOL drivers/nfc/microread/microread 0x2d5a98c1 microread_remove +EXPORT_SYMBOL drivers/nfc/microread/microread 0xa1f2ce02 microread_probe +EXPORT_SYMBOL drivers/nfc/nxp-nci/nxp-nci 0x1b27053c nxp_nci_fw_recv_frame +EXPORT_SYMBOL drivers/nfc/nxp-nci/nxp-nci 0xe45d5e49 nxp_nci_remove +EXPORT_SYMBOL drivers/nfc/nxp-nci/nxp-nci 0xebe6361d nxp_nci_probe +EXPORT_SYMBOL drivers/nfc/pn544/pn544 0xc9447e0f pn544_hci_probe +EXPORT_SYMBOL drivers/nfc/pn544/pn544 0xf8385abb pn544_hci_remove +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x2e1ebb95 ndlc_remove +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x3592ccc4 ndlc_recv +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x3f9ba235 ndlc_open +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x505bb753 ndlc_send +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x5e011188 st_nci_se_deinit +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x76dad184 st_nci_se_io +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x9745fda2 ndlc_probe +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0xa366de2d ndlc_close +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0xf826ca16 st_nci_se_init +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x03e45af4 st21nfca_hci_disable_se +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x325eae3d st21nfca_tm_send_dep_res +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x46d43f2c st21nfca_dep_init +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x4e37ef9a st21nfca_im_send_dep_req +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x611f285e st21nfca_hci_probe +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x6564873b st21nfca_dep_event_received +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x6975c13e st21nfca_connectivity_event_received +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x9879b649 st21nfca_hci_remove +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x9c7f8fe8 st21nfca_im_send_atr_req +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xbbbbf2fc st21nfca_hci_enable_se +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xbe3a6cae st21nfca_apdu_reader_event_received +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xc094fefa st21nfca_se_init +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xc55b8751 st21nfca_hci_discover_se +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xc7684633 st21nfca_hci_se_io +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xced3a2c1 st21nfca_dep_deinit +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xf5d2b43e st21nfca_se_deinit +EXPORT_SYMBOL drivers/ntb/ntb 0x0fccd549 ntb_unregister_client +EXPORT_SYMBOL drivers/ntb/ntb 0x3c6c8e06 __ntb_register_client +EXPORT_SYMBOL drivers/ntb/ntb 0x3dc1d757 ntb_unregister_device +EXPORT_SYMBOL drivers/ntb/ntb 0x5f294045 ntb_set_ctx +EXPORT_SYMBOL drivers/ntb/ntb 0x878c3702 ntb_clear_ctx +EXPORT_SYMBOL drivers/ntb/ntb 0x8ea0152b ntb_link_event +EXPORT_SYMBOL drivers/ntb/ntb 0xf24f1259 ntb_db_event +EXPORT_SYMBOL drivers/ntb/ntb 0xf38142b8 ntb_register_device +EXPORT_SYMBOL drivers/nvdimm/nd_btt 0x60c4d00d nvdimm_namespace_detach_btt +EXPORT_SYMBOL drivers/nvdimm/nd_btt 0xe5838c8a nvdimm_namespace_attach_btt +EXPORT_SYMBOL drivers/parport/parport 0x078d81bb parport_ieee1284_epp_read_addr +EXPORT_SYMBOL drivers/parport/parport 0x1e5c399d parport_ieee1284_epp_write_addr +EXPORT_SYMBOL drivers/parport/parport 0x2757837b parport_register_port +EXPORT_SYMBOL drivers/parport/parport 0x320da257 parport_ieee1284_ecp_write_data +EXPORT_SYMBOL drivers/parport/parport 0x344a2a7d parport_unregister_driver +EXPORT_SYMBOL drivers/parport/parport 0x34e68b93 parport_ieee1284_epp_read_data +EXPORT_SYMBOL drivers/parport/parport 0x3f5c28f2 parport_ieee1284_write_compat +EXPORT_SYMBOL drivers/parport/parport 0x4732096e parport_claim_or_block +EXPORT_SYMBOL drivers/parport/parport 0x49081e85 parport_ieee1284_ecp_read_data +EXPORT_SYMBOL drivers/parport/parport 0x49213581 parport_ieee1284_read_byte +EXPORT_SYMBOL drivers/parport/parport 0x4c2f1b83 parport_write +EXPORT_SYMBOL drivers/parport/parport 0x4d2a941b parport_ieee1284_interrupt +EXPORT_SYMBOL drivers/parport/parport 0x59481666 parport_ieee1284_ecp_write_addr +EXPORT_SYMBOL drivers/parport/parport 0x5e3a3912 parport_irq_handler +EXPORT_SYMBOL drivers/parport/parport 0x623dce01 parport_put_port +EXPORT_SYMBOL drivers/parport/parport 0x6805dbb1 parport_negotiate +EXPORT_SYMBOL drivers/parport/parport 0x75198dac parport_ieee1284_epp_write_data +EXPORT_SYMBOL drivers/parport/parport 0x7957faae parport_find_base +EXPORT_SYMBOL drivers/parport/parport 0x7b6a8a08 parport_set_timeout +EXPORT_SYMBOL drivers/parport/parport 0x86900f59 parport_read +EXPORT_SYMBOL drivers/parport/parport 0x89578276 parport_del_port +EXPORT_SYMBOL drivers/parport/parport 0x8d15247f parport_remove_port +EXPORT_SYMBOL drivers/parport/parport 0x91c9f0e6 parport_wait_peripheral +EXPORT_SYMBOL drivers/parport/parport 0x93021602 parport_release +EXPORT_SYMBOL drivers/parport/parport 0xa1e25963 parport_register_dev_model +EXPORT_SYMBOL drivers/parport/parport 0xa2d8d320 parport_wait_event +EXPORT_SYMBOL drivers/parport/parport 0xae0139a7 parport_claim +EXPORT_SYMBOL drivers/parport/parport 0xb28d1ec3 parport_unregister_device +EXPORT_SYMBOL drivers/parport/parport 0xc8756e71 parport_find_number +EXPORT_SYMBOL drivers/parport/parport 0xcf40798a parport_ieee1284_read_nibble +EXPORT_SYMBOL drivers/parport/parport 0xd4ae4bf7 parport_get_port +EXPORT_SYMBOL drivers/parport/parport 0xd931cda2 parport_register_device +EXPORT_SYMBOL drivers/parport/parport 0xe5113657 parport_announce_port +EXPORT_SYMBOL drivers/parport/parport 0xfe0fe301 __parport_register_driver +EXPORT_SYMBOL drivers/parport/parport_pc 0x01e670e9 parport_pc_unregister_port +EXPORT_SYMBOL drivers/parport/parport_pc 0xb1d6d6a8 parport_pc_probe_port +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x03fb058c pcmcia_release_window +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x05d42fa5 pcmcia_dev_present +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x10b74b34 __pcmcia_request_exclusive_irq +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x26953031 pcmcia_enable_device +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x3edf14a8 pcmcia_write_config_byte +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x3f0b6de6 pcmcia_request_io +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x4b6232a4 pcmcia_disable_device +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x6f8a90ae pcmcia_map_mem_page +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x6fd424c5 pcmcia_request_irq +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x742f5665 pcmcia_parse_tuple +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x7f4a4293 pcmcia_fixup_iowidth +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x8e535270 pcmcia_fixup_vpp +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xa406791e pcmcia_loop_tuple +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xb27014a6 pcmcia_read_config_byte +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xc07a34c0 pcmcia_unregister_driver +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xc565e870 pcmcia_loop_config +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xdd752580 pcmcia_get_mac_from_cis +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xe72c03e5 pcmcia_request_window +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xeb6941cb pcmcia_register_driver +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xfa4b8f24 pcmcia_get_tuple +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x212db8d2 pcmcia_socket_list +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x21a72ac6 pccard_register_pcmcia +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x2b34fc76 pcmcia_unregister_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x3d69e1ca pcmcia_parse_uevents +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x94fa8e64 pcmcia_register_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x95743ca7 pcmcia_get_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xb428026f pcmcia_reset_card +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xcc666fcc pcmcia_get_socket_by_nr +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xcf97f3bd dead_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xd3bd977d pcmcia_socket_list_rwsem +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xe01b3b8d pcmcia_put_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xf1d92030 pcmcia_socket_class +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xf1e1847a pcmcia_parse_events +EXPORT_SYMBOL drivers/pcmcia/pcmcia_rsrc 0x5d5093a1 pccard_static_ops +EXPORT_SYMBOL drivers/pcmcia/pcmcia_rsrc 0x779ecdc6 pccard_nonstatic_ops +EXPORT_SYMBOL drivers/platform/x86/sony-laptop 0x5bb1e117 sony_pic_camera_command +EXPORT_SYMBOL drivers/pps/pps_core 0x90c90623 pps_event +EXPORT_SYMBOL drivers/pps/pps_core 0x9463417d pps_unregister_source +EXPORT_SYMBOL drivers/pps/pps_core 0xe8738705 pps_register_source +EXPORT_SYMBOL drivers/pps/pps_core 0xf7b61671 pps_lookup_dev +EXPORT_SYMBOL drivers/ptp/ptp 0x2c17a13c ptp_find_pin +EXPORT_SYMBOL drivers/ptp/ptp 0x6fbc3d06 ptp_clock_event +EXPORT_SYMBOL drivers/ptp/ptp 0x79c90186 ptp_clock_unregister +EXPORT_SYMBOL drivers/ptp/ptp 0x9d76eeab ptp_clock_index +EXPORT_SYMBOL drivers/ptp/ptp 0xd9536300 ptp_clock_register +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x2b94856f rproc_boot +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x4facfbe3 rproc_get_by_phandle +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x68136d4b rproc_add +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x97b8b6c6 rproc_alloc +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0xcfefa872 rproc_del +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0xd80ffb05 rproc_vq_interrupt +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0xede026b2 rproc_report_crash +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0xfcaad3d7 rproc_shutdown +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0xfe55f56f rproc_da_to_va +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0xfff6eb59 rproc_put +EXPORT_SYMBOL drivers/rtc/rtc-ds1685 0x0d0177f6 ds1685_rtc_poweroff +EXPORT_SYMBOL drivers/scsi/esp_scsi 0x03a27c97 scsi_esp_cmd +EXPORT_SYMBOL drivers/scsi/esp_scsi 0x1520a252 scsi_esp_template +EXPORT_SYMBOL drivers/scsi/esp_scsi 0x4a29ab38 scsi_esp_intr +EXPORT_SYMBOL drivers/scsi/esp_scsi 0x6ebb0a96 scsi_esp_unregister +EXPORT_SYMBOL drivers/scsi/esp_scsi 0xe0e7c8ea scsi_esp_register +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x0036a708 fcoe_transport_attach +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x4f925244 fcoe_ctlr_destroy +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x7a02f55d fcoe_ctlr_destroy_store +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x7fdb2cfb fcoe_ctlr_recv_flogi +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x872b8dfc fcoe_ctlr_set_fip_mode +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xa0012b27 fcoe_transport_detach +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xae3dc581 fcoe_ctlr_els_send +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xbd5535ab fcoe_ctlr_link_up +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xc4db53b4 fcoe_ctlr_recv +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xdc762755 fcoe_fcf_get_selected +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xe0e7219e fcoe_ctlr_link_down +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xf5580f6e fcoe_ctlr_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x07c8bd8f fc_frame_crc_check +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x1238c378 fc_elsct_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x1bb84e1d fc_lport_iterate +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x1c99c33d fc_queuecommand +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x1d2603eb fc_disc_config +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x22085446 fc_exch_mgr_free +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x2262ff88 fc_vport_setlink +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x22b90986 fc_exch_mgr_del +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x25b55b7b fc_set_rport_loss_tmo +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x2a5b5609 fc_lport_config +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x2ad4eea1 fc_exch_mgr_list_clone +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x2b00a751 fc_frame_alloc_fill +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x2b6ce65d fc_exch_update_stats +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x2fbf7015 fc_fabric_login +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x3302ce28 fc_exch_recv +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x352ba7c4 fc_eh_device_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x364e81d8 fc_fcp_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x36e5fbaf fc_cpu_mask +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x3e7e67d4 _fc_frame_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x4b7ae8b7 fc_get_host_speed +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x5f20052d fc_lport_destroy +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x6384a723 fc_lport_set_local_id +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x658e8b31 fc_lport_logo_resp +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x6717f220 fc_lport_flogi_resp +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x81f31903 fc_linkdown +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x82894b14 libfc_vport_create +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x8ae258df fc_lport_notifier_head +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x8b4d5623 fc_eh_abort +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x8c6d3dbc fc_fill_hdr +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x8fba7cf5 fc_rport_terminate_io +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x902b3afa fc_exch_mgr_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x9080c2c4 fc_lport_bsg_request +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x9377757f fc_set_mfs +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x973a5b2e fc_fill_reply_hdr +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x9a5587ce fc_slave_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x9f6c732e fc_fabric_logoff +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xa05e114c fc_linkup +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xa3c4e2c0 fc_lport_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xaa0c4c5f fc_exch_mgr_add +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xaa9963f5 fc_get_host_port_state +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xaee4f0aa fc_rport_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xaf0bfb33 fc_exch_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xc40fafe5 fc_lport_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xc8325d47 fc_disc_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xcc1f4abc fc_fc4_deregister_provider +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xd89d3757 fc_elsct_send +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xe33c8d33 fc_get_host_stats +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xe5c85a3a fc_fc4_register_provider +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xe82ef39d fc_exch_mgr_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xf7afc29e fc_fcp_destroy +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xfd2004c6 fc_eh_host_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xfe130264 fc_vport_id_lookup +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x0a1b94dc sas_prep_resume_ha +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x284122ca sas_wait_eh +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x8a87e724 try_test_sas_gpio_gp_bit +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0xc2ad54f9 sas_resume_ha +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0xfbcc9c9f sas_suspend_ha +EXPORT_SYMBOL drivers/scsi/megaraid/megaraid_mm 0x107ce939 mraid_mm_register_adp +EXPORT_SYMBOL drivers/scsi/megaraid/megaraid_mm 0x2250c66e mraid_mm_adapter_app_handle +EXPORT_SYMBOL drivers/scsi/megaraid/megaraid_mm 0x512c956d mraid_mm_unregister_adp +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x06e403d1 osd_req_decode_get_attr_list +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x08f0885d osd_req_set_attributes +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x0c17edb1 osd_sec_init_nosec_doall_caps +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x12989d60 osd_req_list_partition_collections +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x130d2db7 osd_auto_detect_ver +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x15e80a0c osd_req_flush_partition +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x30cc3b41 osd_req_write_sg +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x317b48ec osd_req_add_get_attr_list +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x36636e10 osd_req_write_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x3ea11c1d osd_req_list_partition_objects +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x436841ae osd_req_format +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x45c03d81 osd_req_read_sg_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x5b1f0f24 osd_req_add_set_attr_list +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x5b20ecca osd_req_add_get_attr_page +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x5bcec2f3 osd_req_write +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x65aa6949 osd_req_remove_object +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x6d9cdea1 osd_dev_init +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x842033a4 osd_dev_fini +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x85cfe0b5 osd_execute_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x876a7a1d osd_end_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x8ee27bd3 osd_req_read_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x9839b0e8 osd_start_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x99ed51c5 osd_req_flush_collection +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xa158cc15 osd_req_write_sg_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xa6f09727 osd_req_create_partition +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xa6f2a4cd osd_req_read_sg +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xa9b35794 osd_req_read +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xabfade94 osd_finalize_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xb74afaf8 osd_req_get_attributes +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xba3fd398 osd_req_decode_sense_full +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xc5670e23 osd_req_create_object +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xc5ecc02a osd_req_list_collection_objects +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xcc05f252 osd_execute_request_async +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xcd708161 osd_req_remove_partition +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xd0922d31 osd_req_list_dev_partitions +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xd6b1c6e7 osd_req_flush_object +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xe321b0bb osd_req_flush_obsd +EXPORT_SYMBOL drivers/scsi/osd/osd 0x0d76cc13 osduld_put_device +EXPORT_SYMBOL drivers/scsi/osd/osd 0x1d5b269a osduld_path_lookup +EXPORT_SYMBOL drivers/scsi/osd/osd 0x5fc48609 osduld_unregister_test +EXPORT_SYMBOL drivers/scsi/osd/osd 0x890ca120 osduld_register_test +EXPORT_SYMBOL drivers/scsi/osd/osd 0x8ee2c194 osduld_device_same +EXPORT_SYMBOL drivers/scsi/osd/osd 0x9dfe94d7 osduld_info_lookup +EXPORT_SYMBOL drivers/scsi/osd/osd 0xd32551a9 osduld_device_info +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x10132149 qlt_lport_register +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x2c2357f8 qlt_free_mcmd +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x384c01cd qlt_unreg_sess +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x6caf02ba qlt_rdy_to_xfer +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x77de383e qlt_free_cmd +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x86295d3f qlt_xmit_tm_rsp +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x8f6eb257 qlt_xmit_response +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xd0110c4a qlt_lport_deregister +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xe0aeb8c0 qlt_abort_cmd +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xe699dd78 qlt_stop_phase2 +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xe759101b qlt_enable_vha +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xf7acfc55 qlt_stop_phase1 +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x1f55cd70 qlogicfas408_ihandl +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x30b06fda qlogicfas408_disable_ints +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x3fd8cd71 qlogicfas408_detect +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x6793bc3b qlogicfas408_queuecommand +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x7ad060b0 qlogicfas408_bus_reset +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0xb602a084 qlogicfas408_abort +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0xe3e2199c qlogicfas408_biosparam +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0xe76b3b20 qlogicfas408_get_chip_type +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0xf2b95199 qlogicfas408_setup +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0xfbe2a099 qlogicfas408_info +EXPORT_SYMBOL drivers/scsi/raid_class 0x549414e4 raid_class_release +EXPORT_SYMBOL drivers/scsi/raid_class 0xa30df597 raid_class_attach +EXPORT_SYMBOL drivers/scsi/raid_class 0xe4c4bf2c raid_component_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x10439630 fc_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x11423f0d fc_remote_port_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x13c54c67 fc_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x190b86b4 fc_remote_port_rolechg +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x49411fb5 fc_remote_port_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x7954b1ea fc_get_event_number +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x7d838c2b scsi_is_fc_vport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x813e747e fc_remove_host +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x87183789 fc_vport_create +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x88b45166 fc_vport_terminate +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x9b956734 scsi_is_fc_rport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x9ffa94de fc_host_post_vendor_event +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xa7029528 fc_host_post_event +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xccfd3aad fc_block_scsi_eh +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x087c4e25 sas_rphy_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x132292b1 scsi_is_sas_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x1abcc39c sas_port_alloc_num +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x26235b62 sas_expander_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x491a5677 sas_phy_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x49776e83 scsi_is_sas_rphy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x50be068f sas_port_add_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x520853ec sas_rphy_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x5a67df95 sas_phy_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x6c749222 sas_port_mark_backlink +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x6d948b86 sas_end_device_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x81c2f898 sas_port_delete_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x95adebe8 sas_read_port_mode_page +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x9ae38522 sas_remove_children +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xa4b0420f scsi_is_sas_port +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xa9f8771f sas_port_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xc1db836d sas_phy_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xc359e641 sas_port_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xcf5ea9b0 sas_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xd2945032 sas_rphy_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xd3cf755a sas_rphy_remove +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xd7304a66 sas_rphy_unlink +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xdca00b98 sas_port_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xe537c817 sas_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xe6a3ebce sas_port_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xee0d5be5 sas_phy_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xef3f5811 sas_remove_host +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xf69ebf58 sas_port_get_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x3686ea09 spi_print_msg +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x48590edc spi_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x79bc212d spi_dv_device +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x97eec995 spi_schedule_dv_device +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0xddeae3a7 spi_display_xfer_agreement +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0xe5649484 spi_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0x405b6e05 srp_parse_tmo +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0x8de88308 srp_rport_put +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0xbc27c3ba srp_rport_get +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0xd89c6ac8 srp_reconnect_rport +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0xdd73d4a2 srp_start_tl_fail_timers +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0x1259d4ca ufshcd_alloc_host +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0x3c7cc9ab ufshcd_runtime_resume +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0x40bf1038 ufshcd_system_suspend +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0x51dfff20 ufshcd_shutdown +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0x9ff221d1 ufshcd_system_resume +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0xa52afd1e ufshcd_runtime_idle +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0xf0cc06f2 ufshcd_runtime_suspend +EXPORT_SYMBOL drivers/ssb/ssb 0x01502ae9 ssb_driver_unregister +EXPORT_SYMBOL drivers/ssb/ssb 0x0b4c6546 ssb_bus_may_powerdown +EXPORT_SYMBOL drivers/ssb/ssb 0x0cb42c9e ssb_device_disable +EXPORT_SYMBOL drivers/ssb/ssb 0x1ac6648e ssb_bus_resume +EXPORT_SYMBOL drivers/ssb/ssb 0x2b392957 ssb_chipco_gpio_control +EXPORT_SYMBOL drivers/ssb/ssb 0x2e13636f ssb_pmu_set_ldo_paref +EXPORT_SYMBOL drivers/ssb/ssb 0x435135b6 ssb_device_enable +EXPORT_SYMBOL drivers/ssb/ssb 0x4c750c54 __ssb_driver_register +EXPORT_SYMBOL drivers/ssb/ssb 0x6a24810f ssb_bus_suspend +EXPORT_SYMBOL drivers/ssb/ssb 0x72134161 ssb_pcicore_dev_irqvecs_enable +EXPORT_SYMBOL drivers/ssb/ssb 0x8be1a2d5 ssb_bus_unregister +EXPORT_SYMBOL drivers/ssb/ssb 0x8c6018d4 ssb_bus_pcibus_register +EXPORT_SYMBOL drivers/ssb/ssb 0x93acc40a ssb_pmu_set_ldo_voltage +EXPORT_SYMBOL drivers/ssb/ssb 0x98a002b0 ssb_commit_settings +EXPORT_SYMBOL drivers/ssb/ssb 0xab48b61e ssb_dma_translation +EXPORT_SYMBOL drivers/ssb/ssb 0xc0512e0f ssb_admatch_base +EXPORT_SYMBOL drivers/ssb/ssb 0xc5a2746f ssb_bus_powerup +EXPORT_SYMBOL drivers/ssb/ssb 0xc6218a85 ssb_device_is_enabled +EXPORT_SYMBOL drivers/ssb/ssb 0xd481192b ssb_admatch_size +EXPORT_SYMBOL drivers/ssb/ssb 0xd8201e40 ssb_pcihost_register +EXPORT_SYMBOL drivers/ssb/ssb 0xf1b6a875 ssb_set_devtypedata +EXPORT_SYMBOL drivers/ssb/ssb 0xf9dc9de0 ssb_clockspeed +EXPORT_SYMBOL drivers/ssb/ssb 0xfee659ff ssb_bus_sdiobus_register +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x08d739e8 fbtft_register_backlight +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x0ee4e9a8 fbtft_write_reg16_bus8 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x12ef0330 fbtft_write_reg8_bus8 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x1a7e86db fbtft_write_gpio8_wr +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x2ae3a125 fbtft_write_vmem16_bus8 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x36926d3e fbtft_remove_common +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x37117d7a fbtft_write_vmem16_bus16 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x4ae7b0c6 fbtft_read_spi +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x4e405aff fbtft_write_vmem8_bus8 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x4f396478 fbtft_write_gpio16_wr_latched +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x6516f238 fbtft_framebuffer_alloc +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x86b0509a fbtft_write_vmem16_bus9 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x8d3dfa54 fbtft_write_reg8_bus9 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x8e82ff1c fbtft_write_spi_emulate_9 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x911d226d fbtft_framebuffer_release +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xa5baf1b0 fbtft_unregister_framebuffer +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xac91916c fbtft_probe_common +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xb0a7961a fbtft_dbg_hex +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xb5c892a5 fbtft_register_framebuffer +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xc02b2e03 fbtft_init_display +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xcbac839d fbtft_write_gpio16_wr +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xd7098fac fbtft_unregister_backlight +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xdb47c15a fbtft_write_reg16_bus16 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xe9d31c99 fbtft_write_spi +EXPORT_SYMBOL drivers/staging/fwserial/firewire-serial 0x5b24b411 fwtty_port_get +EXPORT_SYMBOL drivers/staging/fwserial/firewire-serial 0xdd6e7e63 fwtty_port_put +EXPORT_SYMBOL drivers/staging/iio/addac/adt7316 0xa439b481 adt7316_probe +EXPORT_SYMBOL drivers/staging/iio/magnetometer/hmc5843_core 0x58219ec5 hmc5843_common_suspend +EXPORT_SYMBOL drivers/staging/iio/magnetometer/hmc5843_core 0x5877acfd hmc5843_common_remove +EXPORT_SYMBOL drivers/staging/iio/magnetometer/hmc5843_core 0xe0f62d0a hmc5843_common_probe +EXPORT_SYMBOL drivers/staging/iio/magnetometer/hmc5843_core 0xe1fea0b5 hmc5843_common_resume +EXPORT_SYMBOL drivers/staging/iio/meter/ade7854 0x759605c6 ade7854_remove +EXPORT_SYMBOL drivers/staging/iio/meter/ade7854 0x9dd057f9 ade7854_probe +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x0666cbeb lnet_parse +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x07fee003 lnet_finalize +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x1366b7ac LNetSetLazyPortal +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x19670622 LNetNIInit +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x1b191752 lnet_msgtyp2str +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x1ee5f15e lnet_ipif_query +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x1fe16fd5 LNetGet +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x204b8151 lnet_counters_reset +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x27cad71c lnet_register_lnd +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x2aa9953d lnet_cpt_of_nid +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x2ac93e90 lnet_connect_console_error +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x2d5eae99 lnet_copy_kiov2kiov +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x3200502c lnet_sock_connect +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x33202a6c LNetGetId +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x35a8e30f lnet_connect +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x3c779ee0 LNetPut +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x3f4f5b46 LNetNIFini +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x43081fe3 lnet_sock_write +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x473ad33b LNetDist +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x49993ea3 lnet_extract_iov +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x4b8aa7e8 lnet_sock_getbuf +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x5751a6a1 lnet_sock_getaddr +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x58a1ca89 LNetMDUnlink +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x5b5bdc7f lnet_net2ni +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x5fee352c lnet_acceptor_timeout +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x61f784b2 LNetClearLazyPortal +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x64cdea3a LNetCtl +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x66d449b1 lnet_ipif_enumerate +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x6f7be171 LNetEQGet +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x722c76e5 LNetMDAttach +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x72bd1ae3 lnet_sock_listen +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x7658bab0 lnet_unregister_lnd +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x7d59a7fe LNetMEInsert +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x812c7a9c lnet_sock_setbuf +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x854ab844 LNetEQWait +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x8e53459b lnet_copy_kiov2iov +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x941c7d4b lnet_create_reply_msg +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x9de986d3 LNetEQAlloc +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xa56de08d lnet_ipif_free_enumeration +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xaa414970 LNetMEUnlink +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xaa9b477e LNetMDBind +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xb20da2b1 lnet_copy_iov2iov +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xb75f7953 LNetEQFree +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xba5566d2 lnet_acceptor_port +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xbf0760a2 LNetMEAttach +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xd0b44e0d lnet_sock_read +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xd7c50cb9 lnet_init +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xd8e0bfef the_lnet +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xdc12385a lnet_extract_kiov +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xddd11503 lnet_set_reply_msg_len +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xe4f54fac lnet_notify +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xe6c699b2 lnet_copy_iov2kiov +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xe8124744 lnet_fini +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xf1b316bf LNetSnprintHandle +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xf2570b85 lnet_kiov_nob +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xf5dc6337 lnet_iov_nob +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xfa106804 lnet_counters_get +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xffe87a36 lnet_sock_accept +EXPORT_SYMBOL drivers/staging/lustre/lnet/selftest/lnet_selftest 0x078db139 lstcon_ioctl_entry +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0x1c4bb5f9 LU_OBF_FID +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0x375e6f8d LUSTRE_BFL_FID +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0x49c7fb8b seq_client_flush +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0x56429bab seq_client_alloc_fid +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0x718df0a2 client_fid_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0x726202ac seq_client_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0x82d615bd seq_client_get_seq +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0xae61cff5 LU_DOT_LUSTRE_FID +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0xb13e7c0b client_fid_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0xc151770f seq_client_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0xc997a02f LUSTRE_SEQ_SPACE_RANGE +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0xecee2727 LUSTRE_SEQ_ZERO_RANGE +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0x188dd863 fld_client_debugfs_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0x1ba7c289 fld_client_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0x5318d8f2 fld_client_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0x62689cd2 fld_client_lookup +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0x845dd44f fld_client_add_target +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0xb81d6709 fld_client_del_target +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0xd371adf2 fld_client_flush +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x000c507f libcfs_debug_dumplog +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x01db5172 cfs_percpt_atomic_summary +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x03ae0009 cfs_hash_lookup +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x069f9bb2 cfs_wi_schedule +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x08ada613 libcfs_console_backoff +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x0aa98a7a cfs_hash_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x0b4b1546 libcfs_lnd2modname +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x0de6c369 cfs_cap_lower +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x0f5eff79 cfs_percpt_number +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x12cd873d cfs_cpt_nodemask +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x13550229 lbug_with_loc +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x17ac7833 libcfs_deregister_ioctl +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x1a60d439 cfs_parse_nidlist +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x1b1e5f13 cfs_percpt_lock_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x2143ceb7 cfs_cpt_table_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x24f39469 cfs_cpt_cpumask +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x2663147a __cfs_fail_timeout_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x26b80c60 cfs_cpt_current +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x27b6d3ba cfs_ip_addr_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x297fac97 cfs_hash_bd_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x2a4ed56a cfs_hash_rehash_key +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x2adae33e cfs_init_timer +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x2c4efe0b cfs_hash_dual_bd_lookup_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x2da017ea cfs_cpt_set_node +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x2dbe54b2 cfs_trimwhite +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x2ef02848 cfs_hash_del_key +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x31a4294d cfs_cpt_unset_nodemask +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x31fc5082 cfs_crypto_hash_update +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x346b9d41 cfs_cpt_weight +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x361e82d4 cfs_firststr +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x36b60398 cfs_race_waitq +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x377f93fb cfs_srand +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x389ca502 libcfs_debug_mb +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x39fdcd2b libcfs_debug_set_level +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x3c1285bd libcfs_subsystem_debug +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x3c4937a9 cfs_hash_for_each_empty +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x3d2cce75 cfs_cpt_set_nodemask +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x3d5e6098 cfs_race_state +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x3ef0d90c libcfs_kkuc_group_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x3fe13eaa cfs_cpt_unset_node +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x4062f92b libcfs_run_lbug_upcall +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x411db754 cfs_crypto_hash_final +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x413c5299 cfs_hash_bd_move_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x42393d2a cfs_hash_bd_lookup_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x44839bbb cfs_rand +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x463e853d cfs_hash_rehash_cancel_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x475f4d26 cfs_hash_getref +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x47c66f42 libcfs_kkuc_msg_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x48f163c6 libcfs_str2anynid +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x4a95faa2 cfs_timer_deadline +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x4a99af72 cfs_clear_sigpending +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x4e8fbec5 cfs_cpt_table_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x4f1f2fa5 cfs_crypto_hash_digest +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x50345570 libcfs_str2net +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x5051b6d2 portal_enter_debugger +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x509d38b0 libcfs_net2str +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x50bca709 cfs_cpt_spread_node +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x5202f151 cfs_percpt_lock_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x5467d8f5 cfs_crypto_hash_update_page +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x54fd9a71 cfs_percpt_index +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x56a518ce cfs_cpt_set_cpu +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x58a7ee00 libcfs_catastrophe +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x5946ec2b cfs_percpt_current +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x59f95db2 cfs_cpt_clear +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x5aee0169 cfs_percpt_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x5c013b81 cfs_expr_list_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x5dce9e80 libcfs_lnd2str +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x600fae9b cfs_hash_for_each_key +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x61d6e1e0 cfs_hash_add_unique +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x62289d65 cfs_array_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x62b9cb2e cfs_percpt_atomic_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x64685fef libcfs_console_min_delay +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x6564c55b libcfs_console_max_delay +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x65dd9f0c libcfs_run_upcall +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x67398404 cfs_wi_sched_destroy +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x675e1725 cfs_hash_bd_add_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x6aa9d0e6 cfs_hash_size_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x6b18b7fc cfs_hash_for_each_safe +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x6c905b5f libcfs_watchdog_ratelimit +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x71f662a3 libcfs_debug +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x77ef5792 cfs_hash_dual_bd_unlock +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x7a63872e cfs_timer_disarm +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x7b0b748a cfs_ip_addr_parse +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x7d11d8ec cfs_cpt_unset_cpumask +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x7e6f6485 cfs_ip_addr_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x7f023b97 cfs_hash_debug_header +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x7f04ceef cfs_hash_bd_peek_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x7fab218c cfs_hash_dual_bd_findadd_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x7fda989d cfs_fail_loc +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x8151c3aa cfs_cap_raised +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x82c14da2 cfs_hash_debug_str +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x83d795e4 cfs_match_nid +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x857aaea7 libcfs_register_ioctl +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x865483a9 libcfs_kvzalloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x8840f591 cfs_block_allsigs +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x8c500d25 cfs_cpt_table_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x8c85e4e6 cfs_crypto_hash_speed +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x8f5f81ec cfs_hash_dual_bd_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x91504e8b libcfs_kmemory +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x924ef5a8 cfs_hash_is_empty +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x940ed192 libcfs_stack +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x94c8f789 cfs_hash_cond_del +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x95620e8c cfs_wi_deschedule +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x97b0b9bc cfs_enter_debugger +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x9879b229 cfs_get_random_bytes +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x994ac27f cfs_cpt_table +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x9bd94a35 cfs_hash_bd_del_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x9d7193e4 cfs_hash_rehash_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x9e420643 cfs_restore_sigs +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x9f82f712 cfs_trace_copyout_string +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xa0650897 cfs_cpt_unset_cpu +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xa2b68b2a cfs_array_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xa4069c5c cfs_percpt_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xa6b9dee6 libcfs_kkuc_group_rem +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xa6be5411 add_wait_queue_exclusive_head +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xa9088531 cfs_expr_list_values +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xa9c0ca61 cfs_timer_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xa9dc74e2 cfs_trace_copyin_string +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xae1545e4 cfs_hash_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xb09e1f19 libcfs_kvzalloc_cpt +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xb18cbfd1 cfs_hash_del +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xb1b8f05d cfs_percpt_unlock +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xb289de95 cfs_hash_bd_finddel_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xb4e48237 cfs_cpt_online +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xb8c52b1b cfs_timer_done +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xbab4f34e cfs_timer_arm +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xbb18b4f1 cfs_hash_for_each +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xbf7a37f1 cfs_signal_pending +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xc05afcd7 cfs_hash_rehash +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xc0ea7fc0 cfs_expr_list_parse +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xc2dfd791 libcfs_console_ratelimit +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xc39fd2f9 libcfs_panic_on_lbug +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xc3ab0e9f cfs_hash_findadd_unique +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xc49b1c62 cfs_percpt_atomic_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xcb385db9 libcfs_debug_binary +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xcc001df7 cfs_hash_bd_findadd_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xcc20e694 libcfs_nid2str +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xccc45639 cfs_free_nidlist +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xcd38904c cfs_wi_exit +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xce1a88f2 libcfs_arch_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xcf61bacb __cfs_fail_check_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xd6a52be3 libcfs_printk +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xd96f406d cfs_cap_raise +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xda3a5d85 cfs_hash_for_each_nolock +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xde17bb8d libcfs_isknown_lnd +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xdf2789c0 cfs_curproc_cap_pack +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xdfc7ab84 libcfs_kkuc_group_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xdfca7737 cfs_hash_putref +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xdfecb98d cfs_block_sigs +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xe012b076 cfs_hash_dual_bd_finddel_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xe262a6e2 cfs_timer_is_armed +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xe2f91ce3 libcfs_debug_msg +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xe3bf6897 cfs_percpt_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xe5c5e952 cfs_wi_sched_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xe7b54314 libcfs_arch_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xea411f63 cfs_block_sigsinv +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xeaf51f70 cfs_hash_hlist_for_each +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xeb4913fd cfs_cpt_number +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xec1f56d5 libcfs_str2nid +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xeceac781 cfs_fail_val +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xef66c80b cfs_cpt_set_cpumask +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xf1872998 cfs_cpt_of_cpu +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xf3565b71 libcfs_debug_vmsg2 +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xf440bb38 libcfs_kkuc_group_foreach +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xf8a8644b libcfs_id2str +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xf94025d1 libcfs_str2lnd +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xf9701ad1 cfs_hash_dual_bd_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xfc4c70a2 cfs_cpt_bind +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xfe565fa9 cfs_crypto_hash_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/llite/lustre 0x29d0e576 ll_direct_rw_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/llite/lustre 0x59025ee2 ll_stats_ops_tally +EXPORT_SYMBOL drivers/staging/lustre/lustre/llite/lustre 0x90b84180 ll_osscapa_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/llite/lustre 0xcd3cde92 ll_iocontrol_unregister +EXPORT_SYMBOL drivers/staging/lustre/lustre/llite/lustre 0xf2c4f9c4 ll_iocontrol_register +EXPORT_SYMBOL drivers/staging/lustre/lustre/lov/lov 0x1805fd74 lov_read_and_clear_async_rc +EXPORT_SYMBOL drivers/staging/lustre/lustre/lov/lov 0x207c6a69 lov_stripe_unlock +EXPORT_SYMBOL drivers/staging/lustre/lustre/lov/lov 0x23e937ab lov_stripe_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/lov/lov 0x9dab101a lov_lsm_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/lov/lov 0xcf5299d7 lov_device_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/lov/lov 0xd1af18f5 lov_lsm_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/mdc/mdc 0x0df21540 it_set_disposition +EXPORT_SYMBOL drivers/staging/lustre/lustre/mdc/mdc 0x5919b6d6 it_clear_disposition +EXPORT_SYMBOL drivers/staging/lustre/lustre/mdc/mdc 0x5ef8417d it_disposition +EXPORT_SYMBOL drivers/staging/lustre/lustre/mdc/mdc 0xfe26c5a6 it_open_error +EXPORT_SYMBOL drivers/staging/lustre/lustre/mgc/mgc 0xdc287f95 mgc_fsname2resid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x010bf207 iattr_from_obdo +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x01665e34 class_parse_net +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x016df2bb obd_devs +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x017b2a6b lu_object_locate +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0252ba6d class_exp2obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x035852d0 lustre_swab_llog_rec +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x037b11e1 cl_object_attr_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0381085b cl_lock_enqueue_wait +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x03b37a9c lu_kmem_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0458d209 cl_page_list_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x047c0a9d cl_page_cache_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x04a61360 cl_io_read_page +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x055fd404 cl_lock_hold_release +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x057f6d4b class_find_old_param +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x05c3a71d cl_lock_intransit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x06d82d96 class_handle_unhash +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x07682fe0 cl_sync_io_note +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x07aa68bb lustre_swab_lustre_cfg +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x07d45876 obdo_set_parent_fid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0804c990 cl_io_rw_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x083942ff class_del_profile +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x088dccc2 lprocfs_oh_tally +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x08bd6d30 ldebugfs_register +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x09ad03f8 cl_lock_descr_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0ab898b5 obdo_cpu_to_le +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0b513ee7 obd_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0b7b0134 cl_page_is_owned +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0b7b7f82 ldebugfs_add_simple +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0bfa4e35 cl_lock_hold_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0c378d79 lustre_swab_llog_hdr +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0c86598e lprocfs_seq_read_frac_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0d18de5b class_incref +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0e854ee5 llog_backup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0f7beb12 lprocfs_rd_atomic +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x100f1fe3 cl_io_iter_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x11495519 lprocfs_write_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x123e5b5b dt_directory_features +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x12d5d0cd cl_lock_slice_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x12e64dce class_uuid2obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1312f873 cl_lock_at_pgoff +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x13b34c0d ldebugfs_obd_seq_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x143f7d4c class_name2obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1491dc30 lu_context_tags_clear +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x14a81222 cl_site_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1526d3cf cl_page_list_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x15be1bdb cl_req_completion +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1640db8d cl_lock_descr_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x165a607d cl_env_implant +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x16ed8086 cl_page_find_sub +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x16edbb20 dt_store_open +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x170f302b lu_context_key_degister_many +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x17a2756e cl_lock_error +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x17d53f88 lu_object_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1ad1d6c4 obd_export_nid2str +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1ad3d467 cl_io_start +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1ae437d5 cl_lock_unhold +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1cee6ecb dt_txn_hook_stop +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1e06ca8a cl_unuse_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1e4faf13 cl_io_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1eae51b0 cl_pages_prune +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1efbc369 llog_cat_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2143d996 lu_context_key_register_many +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x217b6108 class_get_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2215c2db cl_io_top +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x221826f1 class_parse_nid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x222b651f class_disconnect_exports +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x22ca3730 llog_exist +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2363eced dt_txn_hook_start +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2411b0e6 cl_lock_closure_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x24c80b94 cl_2queue_discard +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x251519b3 llog_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2547efae lustre_uuid_to_peer +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x26b98e0e llog_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x26f0e175 cl_io_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x26f9a8ea obdo_from_iattr +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x275cdc7a cl_env_reexit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x27a728ba cl_wait +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x282d6c43 class_destroy_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2858ea48 cl_index +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x286860f5 class_handle_free_cb +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x286cd65c cl_page_prep +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x292746af dump_exports +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x297cf5e0 class_handle2object +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2a5c169b ldebugfs_remove +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2a7d8837 cl_page_delete +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2ae1cd79 kuc_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2b6791b3 cl_req_prep +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2b84ebd6 lprocfs_at_hist_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2bd8aebe lu_object_unhash +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2c26f9e4 cl_page_list_unmap +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2c8e42ec lustre_register_client_fill_super +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2ca8db7b cl_object_attr_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2cceb7a3 class_handle_hash +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2d02d38f llog_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2e73c7b0 cl_object_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2ec2a350 cl_object_prune +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2ed4c982 lprocfs_rd_name +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2f22c8d7 class_connected_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2f5d9988 lu_context_key_revive_many +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x316d9b5a capa_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3242ed35 obdo_cachep +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x32ba7a38 dt_quota_slv_features +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x32f98975 cl_io_sub_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x33c151e3 lu_buf_realloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x34f00fa5 lu_context_key_quiesce +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x35cf8a8a obd_export_evict_by_nid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3693157a lu_site_purge +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x369be015 obdo_le_to_cpu +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x36c5a584 dt_try_as_dir +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3776bd97 cl_object_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3798e878 llog_declare_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x37ed6e4b at_early_margin +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x382b9eaa cl_page_gang_lookup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x38fb0c90 class_match_param +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x394930b7 lprocfs_rd_state +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3aabc55f cl_io_submit_sync +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3b4c35b2 cl_req_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3b7011e2 cl_lock_nr_mutexed +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3bb175ef cl_lock_signal +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3bc326a0 cl_lock_delete +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3bd849a6 cl_lock_ext_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3c6a06ba cl_io_end +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3eab7bfe LU_BUF_NULL +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3f08ff7c lustre_register_kill_super_cb +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3f25c782 obd_max_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x40e13083 dt_version_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x40e94c0e lu_object_put_nocache +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x417a3f84 cl_enqueue_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x41872560 cl_page_is_vmlocked +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x41ddeef3 cl_page_list_move +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x42a01409 cl_env_unplant +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4357b315 lprocfs_counter_sub +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x441506d7 cl_lock_mutex_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x452f559a lu_buf_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x455d8375 cl_lock_release +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x45809b24 llog_copy_handler +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x473d25c6 cl_use_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x473da357 capa_cpy +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x474ed5bd lustre_swab_ll_fid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x47b35f7d statfs_unpack +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x47b57bf5 llog_write_rec +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x47e60bee lu_object_find_slice +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x47e6bd6d llog_process_or_fork +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x482d3cb5 capa_cachep +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x494cfb52 lustre_acl_xattr_merge2ext +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x49a0f6ea lustre_posix_acl_xattr_2ext +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x49cccdb4 cl_lock_modify +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4a58e4e4 obdo_from_la +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4a926f25 class_manual_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4ac58713 obd_connect_flags2str +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4b301559 lu_context_key_quiesce_many +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4c190aad lprocfs_find_named_value +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4c4c700b obd_alloc_fail +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4ca5aad8 lu_cdebug_printer +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4d13458b kuc_len +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4e73d52e class_import_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4ea74fe2 llog_cat_init_and_process +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4edf5f61 cl_lock_closure_build +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x50c7fc36 ptlrpc_put_connection_superhack +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x50e49f21 cl_page_list_own +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x53d35d8e cl_env_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x53f4bd1b cl_lock_extransit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x544a5167 la_from_obdo +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x54885f87 ldlm_timeout +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x54dee29b llog_thread_key +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x55547b20 lprocfs_rd_timeouts +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x557e7b14 lustre_posix_acl_xattr_filter +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x558bec27 obd_ioctl_getdata +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x55c475a5 lustre_process_log +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x55dbe2b4 cl_page_unmap +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x564e9d44 init_capa_hash +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5677c811 cl_lock_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x570d09ae lustre_swab_lu_fid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x57b3cb70 obdo_refresh_inode +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x582b013d dt_quota_glb_features +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x58368609 class_num2obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5847930e obd_memory +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x58dbf2ab lu_dev_add_linkage +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5926469f cl_site_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5a20d896 obd_memory_max +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5a97ae09 cl_stack_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5a9ae9c6 class_devices_in_group +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5acd079e lu_device_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5bc022c5 lprocfs_dt_rd_filestotal +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5bd4357e cl_page_find +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5c162faa lprocfs_alloc_obd_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5c5ae039 cl_lock_peek +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5cc22e1e dt_index_read +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5d3306de dt_read +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5d34ae0d cl_lock_mode_name +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5d3ddf9a cl_lock_is_mutexed +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5dd74909 cl_2queue_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5eff1038 class_disconnect_stale_exports +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5fe97b73 block_debug_check +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x600f1f3b cl_object_header_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6033b908 obdo_cmp_md +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6065911a llog_cat_add_rec +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x618cefbf cl_lock_mutex_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x626f0848 dt_record_write +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x631fd7b9 lustre_ext_acl_xattr_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6346cacb class_connect +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x636c2658 cl_object_glimpse +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x639ead68 class_detach +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x63f0108d class_process_proc_param +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6498fbe4 cl_2queue_assume +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x649a171c cl_req_slice_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x64b1210f lprocfs_seq_release +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x66e09fcb cl_page_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6716cfa8 lprocfs_obd_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x671c721b cl_page_list_disown +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6734adbd lprocfs_read_frac_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x675244fa dt_otable_features +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6834a019 cl_lock_user_del +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x688ecf50 llog_write +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6890d175 lustre_get_jobid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x68bd49da lprocfs_oh_clear +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x68d5f837 lu_site_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x690d541b lprocfs_obd_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x698b61fc cl_lvb2attr +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x69c42114 at_min +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6ad357a5 llog_cat_close +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6be4442a cl_object_top +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6c30672c lu_site_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6c575095 lu_env_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6c93ce0a obdo_to_inode +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6cd65a0a lprocfs_init_ldlm_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6cfc29dd ldebugfs_add_vars +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6d3db13b dt_txn_hook_commit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6ddb2df8 lprocfs_obd_rd_max_pages_per_rpc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6fcb7042 lprocfs_counter_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x705bcbe1 ldebugfs_register_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x70706f70 lu_context_key_revive +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x70d57c67 cl_lock_closure_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x72a6a127 lustre_common_put_super +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x742559b1 class_unregister_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7429a3a7 cl_req_attr_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x752f71a8 class_get_profile +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x756a77f3 class_parse_nid_quiet +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7634d51b cl_page_top +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x774dbde7 cl_lock_weigh +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x77d2089a class_name2dev +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x77ddf005 class_disconnect +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7802fcd7 lustre_swab_llogd_conn_body +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x789796a1 obd_zombie_barrier +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7a435d94 lprocfs_rd_conn_uuid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7b4fc57b at_max +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7c15e55b cl_page_make_ready +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7c38a2ee lu_device_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7e521529 cl_page_completion +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7edcafa0 cl_env_reenter +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7f1e5fd3 lprocfs_init_ops_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7f7d7cd9 lu_buf_check_and_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7fe5561a obd_dirty_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8031efb8 lprocfs_dt_rd_kbytestotal +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x804af55b llog_init_handle +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x806cc497 class_add_uuid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x80f13624 cl_io_submit_rw +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x80fc0ab6 lu_object_header_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x814d61a1 lprocfs_wr_atomic +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8173111a llog_cat_cancel_records +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x81742d89 obd_ioctl_popdata +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x81eb3905 lprocfs_free_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x81f6b2dd class_export_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x831f656c class_process_config +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8441ef86 cl_page_list_discard +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8446b9a8 obdo_to_ioobj +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8489f086 obd_alloc_fail_rate +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x849e5385 obd_update_maxusage +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x84bdabb3 class_new_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8503c454 lu_buf_check_and_grow +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x85898443 lprocfs_clear_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8596e991 lu_object_find_at +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x88dbb6e5 cl_wait_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8a179fb8 cl_page_is_under_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8aa2c358 lprocfs_dt_rd_blksize +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8b33f2f5 cl_lock_state_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8b5f4057 lu_context_tags_update +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8ba6e479 lustre_swab_lu_seq_range +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8d5aa5c9 cl_lock_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8e10e6d6 server_name2svname +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8e445ef5 cl_unuse +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8e89b74b class_add_conn +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8f67314c obd_dump_on_eviction +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x90bbe342 lu_env_refill +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x91239228 dt_device_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x918b4f0f class_register_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x91b9373f lprocfs_exp_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9221d024 lprocfs_init_mps_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x92e58479 obd_dump_on_timeout +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x93b46468 lu_session_tags_clear +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x93bedd6f dt_txn_callback_del +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x94327171 class_conn2export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9512d507 lustre_acl_xattr_merge2posix +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x95243ee5 llog_reverse_process +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x955f5220 ldlm_timeout_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x95735c6c at_extra +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9767adce class_uuid2dev +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x97d03783 at_history +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x99b35f27 _debug_capa +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9a34702e cl_lock_enclosure +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9b1ed9d8 obd_jobid_var +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9be82352 lu_env_refill_by_tags +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9c164be0 lu_dev_del_linkage +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9dbb17b6 lprocfs_dt_rd_kbytesfree +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9dd24f6a cl_lock_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9e4c468c obdo_from_inode +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9f6bc28b obd_max_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa160da4a lu_object_header_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa1abe881 cl_io_unlock +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa309365f cl_env_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa3cae68a class_export_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa4b1ce7a cl_env_peek +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa555a5e1 lprocfs_rd_connect_flags +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa5fb234f lprocfs_write_frac_u64_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa674c241 kuc_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa776881d lu_device_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa7bf95a7 class_unlink_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa7e16614 lu_kmem_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa8123363 cl_page_clip +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa86edefd cl_vmpage_page +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa89e165e llog_cat_declare_add_rec +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa8db442b llog_open_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa9a204a0 cl_page_disown +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa9bf15fd class_config_parse_llog +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa9dc6603 cl_page_discard +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa9ea2bb4 class_import_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xaa08d974 cl_page_unassume +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xaa21b7a0 lustre_register_quota_process_config +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xaac37b0f lu_object_assign_fid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xab1f3bee obd_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xabf45922 capa_decrypt_id +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xac7f1596 kuc_ptr +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xaca8e8a0 lprocfs_free_obd_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xad44a426 cl_offset +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xad6ba538 cl_lock_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xae3ade80 capa_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xae60c539 dt_object_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xae75df65 ldebugfs_add_symlink +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xaf03860d llog_declare_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xaf87b95f cl_site_stats_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xafb525af lu_context_key_degister +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb01963a6 class_uuid_unparse +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb04f2cfa cl_lock_user_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb13827e6 dt_device_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb1b89b6d class_attach +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb2888a39 lu_object_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb28acb7d dt_lookup_dir +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb2ce59b1 cl_page_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb35519ed lustre_swab_cfg_marker +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb3fa018e cl_lock_at +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb41998cd lustre_cfg_rename +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb4a50ac6 cl_locks_prune +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb4a55d9c cl_2queue_init_page +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb4f8ee63 lprocfs_read_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb593a48d lu_site_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb606375b cl_page_slice_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb6100160 obdo_from_md +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb635af9e dt_acct_features +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb654e756 obd_export_evict_by_uuid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb681ca80 llog_open +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb6ba5dd5 kuc_ispayload +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb743ec6a dt_mode_to_dft +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb891ae91 dump_lniobuf +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb8c62bd0 lprocfs_oh_tally_log2 +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb9023154 llog_cancel_rec +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb98e2bbe lu_object_anon +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xba388a18 cl_lock_discard_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xba8af7b3 lu_object_add_top +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xba985283 lustre_register_client_process_config +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbacac922 lprocfs_write_frac_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbbe94837 cl_io_lock_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbc0b0ad3 cl_lock_mutex_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbc1d11d0 cl_lock_hold +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbc436a0d obdo_cpy_md +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbc5254b4 cl_req_page_done +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbe30f086 cl_page_size +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbef8c2eb ldebugfs_seq_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbf0413cf cl_req_page_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbf42cf9f llog_cat_reverse_process +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbf568b42 lu_object_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc0bf7ef2 obd_debug_peer_on_timeout +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc0c764e7 cl_page_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc11b0cc7 cl_page_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc129b8e6 cl_io_lock_alloc_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc18d06cf lu_buf_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc32b3455 cl_env_nested_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc364a2d8 cl_io_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc3756829 dt_record_read +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc404837c lprocfs_stats_alloc_one +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc4e99921 llog_is_empty +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc5ba9ccd lu_site_stats_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc7716d24 cl_2queue_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc8020d38 capa_lookup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc87c7ab3 cl_object_has_locks +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc8da7bfe cl_object_header_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc8ee88f0 lprocfs_rd_uint +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc8f37ca4 cl_io_iter_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc9c2c222 lprocfs_alloc_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xca530a9a lu_context_key_register +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xca6b7f6a obd_exports_barrier +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xca8af96a lu_context_key_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcb0ab67f obd_max_dirty_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcbd63d1d dt_locate_at +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcca5c759 lu_stack_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcd03a7da dt_version_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcd3f2e9c cl_page_header_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcd7537ee get_devices_count +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xce1aa266 lu_device_type_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xce20f88c dt_store_resolve +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xce3efa6c cl_page_vmpage +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xce487e4e cl_sync_io_wait +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xceaaa29d cl_page_list_splice +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xceaf85e7 cl_page_own_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xced54084 cl_object_kill +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcf32c50b cl_io_loop +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcfa415c1 llog_cat_process +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcfad85a8 class_config_dump_llog +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcfed3bbc lu_device_type_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd0101fc1 lprocfs_counter_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd08827c0 server_name2fsname +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd09d806e cl_io_is_going +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd10aa042 lustre_swab_llog_id +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd14359c7 lu_context_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd152742c llog_cat_process_or_fork +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd2017930 lprocfs_oh_sum +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd2d8f315 cl_io_prepare_write +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd42c72fc class_conn2obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd49026eb cl_lock_request +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd55d9505 lu_env_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd63badd1 class_exp2cliimp +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd70fe669 lustre_swab_llogd_body +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd714150f cl_2queue_disown +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd78f3624 cl_page_list_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd7bc8654 obd_timeout +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd7bfbc9c lprocfs_dt_rd_filesfree +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd7f7b340 cl_lock_mode_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd8515665 lu_site_init_finish +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd8d07975 lu_context_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xda5b1ced class_find_param +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xda884cbb lu_context_refill +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdac644c8 lustre_posix_acl_xattr_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdb09ee4c md_from_obdo +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdb13dce1 capa_list +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdca23689 __llog_ctxt_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdcc40af0 class_check_uuid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdd45638d lu_context_enter +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xde2a963c cl_page_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xde7d985b obd_dirty_transit_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdedccb33 lprocfs_free_md_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdf112157 llog_process +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdf13d9ad cl_object_attr_unlock +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdf3d377c class_fail_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe00acc24 lprocfs_single_release +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe028cf84 capa_encrypt_id +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe07c3246 cl_lock_is_intransit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe0da1759 cl_lock_disclosure +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe146cccb cl_sync_io_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe1579bfb lprocfs_stats_collect +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe173e198 llog_declare_write_rec +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe23294bb dt_txn_callback_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe26a4122 class_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe29a7df4 cl_attr2lvb +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe2eb4470 class_get_next_param +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe3050cb6 class_find_client_obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe37e6b84 cl_object_attr_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe3da0c47 llog_sync +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe51a5c19 cl_type_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe5379705 class_config_llog_handler +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe5966945 lu_device_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe6585c80 cl_page_list_assume +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe6af17f4 cl_page_flush +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe7d83236 cleanup_capa_hash +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe80af23e cl_enqueue +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe820c524 cl_page_assume +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe85987b0 cl_page_lookup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe8686166 cl_io_slice_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe8c238fd dt_declare_version_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe8e84c32 class_match_nid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe9b87b46 llog_erase +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xea01f948 lprocfs_wr_uint +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xea6617f9 lprocfs_rd_u64 +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xeaaf6a6a cl_env_nested_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xeb62f0ed dt_index_walk +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xebf3541d lprocfs_rd_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xec7d6b85 obd_timeout_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xed20bf9c lu_object_find +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xed5eab6f dt_key +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xed8aea77 dt_object_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xed9e1933 lu_object_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xedc583dc cl_io_rw_advance +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xee68bc29 lu_session_tags_update +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xeeeb79fa do_lcfg +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xeeef69bc cl_lock_state_wait +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xef447ab9 cl_conf_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xef76f858 block_debug_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf01e2527 server_name2index +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf032e27f class_put_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf05be5f9 cl_env_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf0a20aad cl_object_find +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf0caceaa llog_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf21da827 class_search_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf2b25ebb dt_find_or_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf2fd6695 statfs_pack +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf3bc5b9d dt_lfsck_features +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf490d5f9 class_del_profiles +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf4aabbfd lprocfs_alloc_md_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf58485aa cl_page_at +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf60d4659 capa_count +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf7020831 lprocfs_dt_rd_kbytesavail +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf796b3a5 lu_object_invariant +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf7c7836a cl_io_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf7cd84df lu_object_header_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf8c0f7ac cl_queue_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfa1e4308 class_handle_hash_back +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfa6ab9c4 class_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfa813d06 capa_hmac +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfaf753fd cl_2queue_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfb8cc09a cl_io_commit_write +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfb94c179 lprocfs_rd_server_uuid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfbc1eea6 cl_page_list_del +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfbea0098 lu_types_stop +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfc7f18d0 obd_pages_max +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfcd7e3e3 cl_lock_get_trust +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfd54e662 llog_close +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfd573a40 class_conn2cliimp +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfd68d17a class_notify_sptlrpc_conf +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfdbe1557 lprocfs_write_u64_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfdeecf24 lu_context_exit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfed8f45a class_new_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfee4b28f lustre_end_log +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xff289581 llog_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xff2ecf2e class_decref +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xff38f337 cl_page_own +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xff57e92d class_match_net +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfff02593 lu_object_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfffc1f11 lustre_swab_ost_id +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x00cb99c1 RQF_LDLM_INTENT_GETXATTR +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x00d95039 ptlrpcd_decref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x01d6ef7f ldlm_pools_recalc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x027f1296 ptl_send_rpc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x04731122 ptlrpc_restart_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x048b59d5 lustre_msg_set_handle +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0496eaab ldlm_prep_elc_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0515f93b RQF_FLD_QUERY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x05c94b3d ldlm_resource_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x06b3942b lustre_swab_lov_user_md_objects +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x071fc74a RQF_LDLM_ENQUEUE_LVB +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x07605c7d interval_find +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0761c0b5 lprocfs_rd_pinger_recov +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x08bb2d27 lustre_swab_obd_ioobj +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x095587d0 lustre_msg_buflen +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0a1217d2 ptlrpc_unregister_service +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0a3130b0 RMF_MDT_EPOCH +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0ac252b2 lustre_msg_set_jobid +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0b0ac965 ptlrpc_request_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0b174c28 ptlrpc_set_destroy +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0bcacb5d RMF_MDS_HSM_USER_ITEM +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0c2d9c43 lustre_swab_lip_header +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0cce48ad ptlrpc_disconnect_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0cf343dd RQF_LDLM_INTENT_BASIC +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0d8d91de ptlrpcd_wake +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0ef7cb13 ldlm_resource_putref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x10f18f20 interval_iterate_reverse +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x115017f6 req_layout_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x11ba484a ptlrpc_prep_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x12b6f5a3 ptlrpc_connection_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x133174a7 ptlrpc_service_health_check +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x13548fb6 ptlrpc_activate_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x13cbe448 sptlrpc_cli_ctx_expire +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x14708afc lustre_swab_mdt_rec_reint +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1483eca4 ldlm_lock_addref_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x14d192db lustre_msg_size +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x15a3e4db RMF_GETINFO_VAL +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x15d255a5 req_capsule_client_swab_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x17049b58 llog_initiator_connect +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x17262c8e req_capsule_filled_sizes +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x172fb86d lustre_msg_hdr_size +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1747d8b3 ldlm_lockname +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x176ce9a6 target_send_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x176eba2d client_import_find_conn +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x17950f60 RQF_SEC_CTX +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x184c4b5b req_capsule_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x18b1f8a1 ldlm_namespace_dump +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x19108a0f RQF_OST_DISCONNECT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x19c08934 RQF_LDLM_INTENT_CREATE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1a6a3ce9 RQF_OST_GET_INFO_LAST_ID +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1a9b76aa RMF_OBD_QUOTACTL +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1abd3258 RMF_SETINFO_VAL +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1abeb103 sptlrpc_enc_pool_get_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1ace4b5f RQF_LDLM_BL_CALLBACK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1ad6c330 RMF_EAVALS +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1b93c80b ldlm_lock_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1bae0270 interval_iterate +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1be21715 lustre_msg_size_v2 +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1c300d8e lustre_msg_get_slv +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1c588bc1 ptlrpc_set_add_cb +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1d043548 lustre_msg_set_op_flags +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1d2a71db sptlrpc_sec_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1dc2051d RMF_SEQ_OPC +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1de9c288 lustre_swab_layout_intent +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1e8e48a4 sptlrpc_flavor_has_bulk +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1eb2a65f RQF_OST_GETATTR +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1ee46b51 lustre_init_msg_v2 +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1ee9eb3c RQF_MDS_QUOTACTL +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x204b796f ptlrpc_pinger_add_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2096f5b5 RQF_OST_SET_GRANT_INFO +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x20d10b2a ptlrpc_register_service +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x20d6b82c RQF_LDLM_INTENT_QUOTA +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x218a36ce ldlm_cli_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x219391ec RMF_EAVALS_LENS +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x21c61b83 ldlm_pool_get_clv +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x222c23b9 ldlm_pool_set_slv +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x225cfd42 llog_client_ops +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x233790b5 RMF_OST_BODY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x244e5558 lustre_msg_get_version +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x246dc997 ptlrpc_unpack_rep_msg +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x24aafdba RMF_MGS_TARGET_INFO +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x253d89ec req_capsule_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2585a629 RMF_SEQ_RANGE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2587513c RQF_LDLM_CP_CALLBACK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x267810c8 ptlrpc_replay_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x269554ce RQF_LDLM_INTENT_GETATTR +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x26f99d16 RQF_MGS_CONFIG_READ +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x275de4c2 ptlrpc_fail_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x284a925c __ldlm_handle2lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x285e5b99 lustre_msg_set_conn_cnt +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x29e0869a sptlrpc_get_hash_name +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2a63a472 lustre_swab_ptlrpc_body +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2a8cec4a ptlrpc_register_bulk +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2c00c60d ptlrpc_sample_next_xid +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2ca92fa8 ldlm_lock_decref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2ccd5b87 ldlm_cli_cancel_list_local +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2ce7e9a7 sptlrpc_gc_add_sec +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2d56f168 ptlrpc_pinger_ir_up +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2d798316 RMF_MGS_CONFIG_RES +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2e4562fe RQF_LLOG_ORIGIN_HANDLE_CREATE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2e4ca396 RQF_LDLM_INTENT_UNLINK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2ecd7515 lustre_msg_check_version +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2f0e4f87 RQF_OST_QUOTACTL +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2f332f54 ldlm_blocking_ast_nocheck +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2f793215 lustre_swab_ost_body +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2f953905 ldlm_init_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2fab3539 lustre_swab_ost_lvb_v1 +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2fd2f737 lustre_msg_set_limit +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x301d4fcd RQF_MDS_READPAGE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x302937e0 RQF_MDS_CONNECT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x305ac931 ldlm_lock_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3060b9c6 sptlrpc_rule_set_expand +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x30f91b21 ptlrpc_init_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3120f400 sptlrpc_target_export_check +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x314f4dc7 ldlm_lock_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x31838cb4 RMF_IDX_INFO +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3261b862 RQF_OST_SYNC +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x33bb7761 ldlm_typename +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x343cd69e ptlrpc_prep_fcset +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x346cf813 lprocfs_wr_evict_client +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x35939a3d lustre_swab_fiemap +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x37596b22 ptlrpc_req_xid +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3835ab4b RQF_LLOG_ORIGIN_CONNECT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3858fb94 RMF_OBD_STATFS +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x38c01799 RQF_LDLM_CALLBACK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x38d84149 ldlm_lock_allow_match_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x38fce533 lustre_msg_set_versions +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x39e36344 client_obd_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x39f60a5f RMF_OST_ID +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3a1e4bcb __lustre_unpack_msg +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3a490029 ldlm_pool_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3ab90f6e lustre_msg_bufcount +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3ac00716 lustre_swab_hsm_user_state +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3ad3cfa3 client_disconnect_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3b6b7cba dump_ioo +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3b745191 ptlrpc_queue_wait +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3bedb0c7 RMF_LLOGD_CONN_BODY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3c63e62b RQF_MDS_REINT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3c8b16ab lustre_swab_ost_lvb +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3ca50f33 RQF_MDS_HSM_CT_REGISTER +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3d4170ce ptlrpc_error +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3d7dc5f9 ldlm_pools_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3dc47695 lustre_msg_get_magic +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3f034caf lustre_msg_get_status +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3f752e78 RQF_MDS_STATFS +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3f8a1514 ldlm_lock_fail_match_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4036ed21 ptlrpc_unregister_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x40ff329c req_capsule_server_sized_swab_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x41008cef RQF_LDLM_CANCEL +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x43168488 RQF_MDS_RELEASE_CLOSE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x43705ee4 RQF_LOG_CANCEL +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x43b64cd7 req_capsule_server_grow +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x43d7efc8 lustre_msg_set_transno +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x44036eda RQF_MDS_GET_INFO +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x440c2a71 RMF_FIEMAP_VAL +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4481591d RQF_OST_SET_INFO_LAST_FID +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x44b3d232 req_capsule_client_sized_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x44cbd34e req_capsule_has_field +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x45a299f9 sptlrpc_cli_ctx_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x45d05893 lustre_swab_lustre_capa +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x45e30cea lustre_swab_ldlm_intent +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x45ed5e2e req_capsule_init_area +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x45fbdae6 sptlrpc_enc_pool_put_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x46e85724 _ldlm_lock_debug +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4771a501 ldlm_destroy_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x47f3c4fd req_capsule_server_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x47f5e903 RMF_MDS_HSM_REQUEST +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x484cf6ba ldlm_cli_cancel_unused +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x498c03c5 lustre_msg_set_last_xid +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x49c2a64f ldlm_namespace_new +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x49f8c7dd ptlrpc_set_add_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4a5a2416 RMF_DLM_REQ +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4b0f480d ptlrpc_request_set_replen +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4c205cd9 ldlm_lock_allow_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4d1463e4 ptlrpc_add_rqs_to_pool +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4d7580d0 lustre_swab_hsm_user_item +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4e1706e5 lustre_msg_buf +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4e696b96 ptlrpcd_queue_work +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4eb03a6f ptlrpcd_destroy_work +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4f766c3b lustre_swab_generic_32s +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5039381a ldlm_init_flock_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x50443f6a ptlrpc_init_client +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x50dd74f8 RMF_STRING +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x510175d8 ptlrpc_request_alloc_pack +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x51a2b2e4 ldlm_extent_shift_kms +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x51b9f3b7 __ptlrpc_free_bulk +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x51e44d05 ptlrpc_at_set_req_timeout +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x52c62150 RMF_RCS +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x53411557 RMF_DLM_REP +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x537a9b38 sptlrpc_get_bulk_checksum +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5395d9d7 lprocfs_wr_pinger_recov +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x53a4a004 bulk_sec_desc_unpack +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x54ae5021 ldlm_lock_addref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x54af5bbb unlock_res_and_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x555eb7fe RQF_MDS_HSM_STATE_SET +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x561ef4cc ptlrpc_request_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x56be5cfb ldlm_pool_get_lvf +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5705a058 ptlrpc_set_import_active +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5713ada1 ptlrpc_hpreq_handler +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x579e9d0a ldlm_lock_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x588035b4 RMF_UPDATE_REPLY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x595ab175 lustre_swab_obd_quotactl +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x596582bf RMF_GETINFO_VALLEN +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5a057439 interval_search +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5abb388c sptlrpc_import_flush_all_ctx +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5af0d02a ldlm_lock_dump_handle +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5afaf312 ldlm_completion_ast_async +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5b6ba895 lustre_packed_msg_size +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5c6a3a83 RQF_SEQ_QUERY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5ca1b491 lustre_swab_close_data +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5caae213 ptlrpc_next_xid +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5da247ff ldlm_pool_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5e0b19b1 RMF_CLUUID +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5e2b7558 lustre_msghdr_get_flags +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5e6f435d RQF_OST_BRW_READ +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5e80f899 RQF_LLOG_ORIGIN_HANDLE_READ_HEADER +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5ec3284d RQF_MDS_HSM_CT_UNREGISTER +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5ef831ee lustre_msg_get_handle +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5f0fa8c9 ptlrpc_schedule_difficult_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5f96ccdd ptlrpc_connection_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5fc9a455 RMF_CLOSE_DATA +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6042bc15 RQF_MDS_REINT_RENAME +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x604e2505 RMF_SWAP_LAYOUTS +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x607ec932 lustre_msg_set_buflen +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x60cd26ad RQF_MDS_REINT_CREATE_SYM +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x61448119 ptlrpc_invalidate_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x61646e1b RQF_MDS_SWAP_LAYOUTS +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x618ad203 RQF_OST_GET_INFO_LAST_FID +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x621bd0dd ldlm_register_intent +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x62aaae3f RQF_MDS_HSM_REQUEST +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x63026344 req_capsule_set_size +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6315dd4c RMF_LLOGD_BODY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6352a62d ldlm_get_ref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x63c19803 ptlrpc_req_finished_with_imp_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x647b6e48 lustre_swab_ldlm_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x64b939a5 sptlrpc_unregister_policy +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x653723dc RMF_LOGCOOKIES +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x65497e71 client_connect_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x655432a4 ptlrpc_unpack_req_msg +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6602af15 ldlm_pool_del +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x664aa0c7 do_set_info_async +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x685eeaba RMF_DLM_GL_DESC +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x68cb2541 interval_is_overlapped +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x68f49e5e ptlrpc_expired_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6912990a RQF_OST_QUOTACHECK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x696ba811 lustre_msg_get_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x69c9f04d RQF_MDS_REINT_LINK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6a3785c9 RMF_EADATA +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6c32a851 ldlm_blocking_ast +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6c57bbf6 dump_obdo +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6d5a11fa sptlrpc_gc_add_ctx +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6d72828c sptlrpc_conf_log_update_end +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6d7931cc RQF_UPDATE_OBJ +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6e0b13a8 ldlm_cli_cancel_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6ed20499 ldlm_revalidate_lock_handle +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6efa82b0 RQF_MGS_TARGET_REG +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6efb32a2 ptlrpc_set_wait +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6f6dc736 lustre_swab_mdt_remote_perm +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6fb92092 sptlrpc_flavor2name_bulk +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x703538e4 lustre_swab_hsm_current_action +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x70b56a16 req_capsule_extend +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7141ed96 ptlrpc_prep_bulk_imp +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x723d43b6 sptlrpc_rule_set_dump +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x725a892c RQF_MDS_REINT_OPEN +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x73b8b70d ldlm_namespace_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x741128aa ldlm_cli_cancel_unused_resource +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x74412550 ptlrpc_send_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x74840056 lustre_msg_set_status +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x75084731 ldlm_resource_iterate +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x75a2c40d ldlm_put_ref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x75d6f3a5 ldlm_cancel_resource_local +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x75fe088c ptlrpc_lprocfs_register_obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x761492cc ldlm_glimpse_ast +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x76b728e5 lustre_swab_update_buf +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x772ba7ce lock_res_and_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x77840c82 sptlrpc_rule_set_choose +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x77b51989 sptlrpc_cli_ctx_wakeup +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x78bf9136 lustre_swab_ldlm_lock_desc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x78e91466 ldlm_namespace_foreach +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7a832f10 RMF_CONN +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7b158da4 lustre_swab_ldlm_request +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7bbf8001 RMF_MDT_BODY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7c4c6107 RQF_LDLM_CONVERT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7cc9f903 ptlrpc_prep_req_pool +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7d1ecd7f RQF_LDLM_INTENT_LAYOUT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7d41a8b9 RQF_QUOTA_DQACQ +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7dc0e7cd RMF_QUOTA_BODY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7dfb3c18 lustre_msg_clear_flags +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7f4925d8 interval_expand +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7f4c99b1 ldlm_expired_completion_wait +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7f5a1cc7 lustre_msg_set_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7f6d2357 lustre_msg_is_v1 +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x80154dfe ptlrpc_pinger_sending_on_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x806ba6f2 ptlrpc_wake_delayed +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x806f1833 client_import_add_conn +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x80a9e8c3 lustre_msg_get_last_xid +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x80ecb4e3 RMF_MDS_HSM_CURRENT_ACTION +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x817d7f1f lustre_msg_add_flags +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x82384206 ldlm_pool_set_limit +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x826d3c4f RQF_LDLM_GL_CALLBACK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x837efb00 RMF_NAME +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8467af56 lustre_pack_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x85135801 RMF_DLM_LVB +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x85a9e0d8 RMF_FID +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x85e98997 req_capsule_shrink +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x85eecf67 sptlrpc_get_hash_alg +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x863db6eb RMF_HSM_USER_STATE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x86fa8c3b ldlm_cli_convert +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x873a4512 sptlrpc_register_policy +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8760beaf lustre_swab_ldlm_policy_data +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8760c699 ldlm_pool_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x876c2551 RMF_GETINFO_KEY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x876f3f0a ldlm_resource_unlink_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x87bf7b3c sptlrpc_get_next_secid +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x87d4947d ldlm_cli_update_pool +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x87d9d825 sptlrpc_import_flush_my_ctx +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8872f3d2 RMF_SETINFO_KEY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x88fff52d RMF_CAPA2 +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x89f9edf7 RQF_MDS_REINT_SETXATTR +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8a1ea476 lustre_swab_hsm_state_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8a257736 RQF_MDS_HSM_STATE_GET +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8ac440fa ptlrpc_uuid_to_connection +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8b3fb69a lustre_free_reply_state +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8b854254 lustre_swab_mgs_config_res +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8cb71d4b RQF_MDS_REINT_CREATE_SLAVE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8d77ea75 lustre_msg_set_flags +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8da3fca7 lustre_msg_add_version +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8e5425b8 client_import_del_conn +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8e93090a client_obd_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8e9abe4d RMF_GENERIC_DATA +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8f0aceac RQF_MDS_HSM_ACTION +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8fec0451 lustre_msg_get_limit +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x919c4ce3 RMF_OBD_ID +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x91bd59a6 sptlrpc_sec_destroy +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x91cf58d3 RQF_MDS_PIN +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x91d1f925 ptlrpc_req_finished +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9228392f lustre_swab_mdt_body +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x923ab574 ldlm_cli_enqueue +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x92de8485 sptlrpc_cli_unwrap_bulk_write +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x937b1ee0 lustre_swab_mdt_ioepoch +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x93b07e49 ldlm_get_enq_timeout +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9553c633 RQF_LDLM_INTENT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x958d748f req_capsule_get_size +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x959c3f4b ptlrpcd_add_rqset +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x95d08f0c lustre_swab_mgs_target_info +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9660ace0 RMF_FLD_MDFLD +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x967bfd52 RQF_OBD_PING +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x96aa683d ldlm_replay_locks +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9755f8d2 ptlrpc_pinger_del_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9798f2f1 RQF_MDS_GETATTR +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x980fcfdc ptlrpc_connection_addref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9883c417 ldlm_cli_enqueue_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x98cb66fa ldlm_pool_set_clv +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9933fc4b ptlrpc_buf_need_swab +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9999cf7a dump_ost_body +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9a258886 RQF_MDS_GETSTATUS +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9a6f2f6d lustre_msg_set_opc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9b8083c5 ptlrpc_request_committed +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9b88f6ce RMF_NIOBUF_REMOTE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9bb5198b RQF_MDS_CLOSE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9ca66c8b ptlrpc_request_alloc_pool +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9d0da269 sptlrpc_lprocfs_cliobd_attach +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9d7ea314 sptlrpc_pack_user_desc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9fb088f1 lustre_swab_lov_mds_md +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa10f0d3d RMF_UPDATE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa163f4c3 dump_rniobuf +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa1a05fe2 ldlm_namespace_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa2244636 RQF_MDS_GETATTR_NAME +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa22c0086 ldlm_error2errno +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa2492bd8 target_print_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa2828467 ptlrpc_request_pack +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa3d2a6ee RMF_CAPA1 +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa3dd4d42 ptlrpc_req_set_repsize +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa47787ef RMF_PTLRPC_BODY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa485bdb1 ptlrpc_nrs_policy_unregister +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa4a2d089 RQF_OST_PUNCH +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa4bea5ef lustre_swab_lmv_user_md +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa5458dad ldlm_lock_decref_and_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa5880075 ldlm_errno2error +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa58ff9a5 req_capsule_other_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa6a290b7 ptlrpc_unregister_bulk +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa6c436ca RQF_MDS_WRITEPAGE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa6f8afee sptlrpc_import_sec_ref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa7d55cc3 RQF_MDS_REINT_CREATE_RMT_ACL +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa7e360b1 RMF_OBD_IOOBJ +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa7ec567d RMF_CONNECT_DATA +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa8497788 lustre_pack_reply_v2 +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa91c5974 sptlrpc_sec_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa9704f80 lustre_msg_get_last_committed +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa9c4658e lustre_swab_lov_user_md_v3 +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa9edf09d RQF_OBD_IDX_READ +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xaa485fe1 ptlrpc_obd_ping +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xaa97af22 __ptlrpc_prep_bulk_page +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xaac78c7b ldlm_lock_change_resource +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xab230eb6 ldlm_resource_foreach +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xab96a704 ptlrpc_send_error +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xabe7d364 sptlrpc_req_replace_dead_ctx +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xac79b81f ptlrpc_abort_inflight +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xacd6a7d7 lustre_swab_ost_last_id +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xadca4a91 lustre_pack_reply_flags +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xaddc3979 lustre_swab_lustre_capa_key +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xae926b9c ptlrpc_start_threads +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xae9de7f4 ptlrpc_add_timeout_client +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xaf4e9658 RQF_MDS_SYNC +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xaf50a0d6 RMF_HSM_STATE_SET +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xaf9c5e18 ptlrpc_lprocfs_unregister_obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb0751fa4 RQF_LLOG_ORIGIN_HANDLE_DESTROY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb0e3c1c6 ldlm_prep_enqueue_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb0e97f61 ldlm_pool_get_slv +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb0fda147 ptlrpc_lprocfs_brw +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb17a3119 ptlrpc_request_addref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb1b43d8a dump_rcs +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb27c2374 lustre_msg_get_jobid +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb291473d lustre_msg_early_size +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb2de8e80 ptlrpc_recover_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb30b869b lprocfs_wr_ping +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb4a7ecf3 lustre_msg_add_op_flags +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb512ebc2 sptlrpc_parse_flavor +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb61cb95a RQF_MDS_GETXATTR +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb6359aa3 sptlrpc_cli_enlarge_reqbuf +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb68476df interval_erase +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb6aafd03 RQF_MDS_DONE_WRITING +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb7b38189 RMF_MDT_MD +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb7fa3cc8 RMF_LLOG_LOG_HDR +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb80f6775 ldlm_lock_convert +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb84465d1 lprocfs_wr_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb903634e RQF_OST_CONNECT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb9b631cf lustre_swab_mgs_config_body +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbaa76097 lustre_msg_string +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbb461764 ldlm_flock_completion_ast +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbc1370dc lustre_shrink_msg +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbd16e70b ptlrpc_check_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbd83bc44 RQF_OBD_SET_INFO +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbe2526f6 req_capsule_server_swab_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbe47bc7e ping_evictor_start +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbeaf0bec sptlrpc_cli_unwrap_bulk_read +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbef769cc RQF_CONNECT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbf98b86f RQF_MDS_QUOTACHECK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbfaa4e0d ptlrpc_mark_interrupted +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbffd4313 RQF_OST_BRW_WRITE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc06c4670 lustre_msg_get_versions +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc0867da7 RMF_REC_REINT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc087fcea ldlm_destroy_flock_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc0cdf55e RMF_MGS_SEND_PARAM +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc1125879 sptlrpc_gc_del_sec +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc2204c6c ptlrpc_resend_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc2986d28 lustre_swab_ldlm_res_id +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc2b1af57 RQF_MGS_SET_INFO +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc2be922a RMF_SYMTGT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc3844e91 req_capsule_client_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc42fc2f6 ldlm_enqueue_pack +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc4832603 ptlrpc_cleanup_imp +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc5385d21 ldlm_cli_cancel_list +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc559a634 RMF_LAYOUT_INTENT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc60a60e1 RQF_OST_STATFS +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc694be4b RQF_LLOG_ORIGIN_HANDLE_PREV_BLOCK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc763fabc sptlrpc_process_config +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc79b9c67 ldlm_pools_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc7ca8257 RQF_MDS_REINT_SETATTR +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc7e1f925 ptlrpc_deactivate_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc7e47564 ptlrpc_interrupted_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc7e7ef62 ptlrpc_cleanup_client +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc88ac4df _debug_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc8f586a9 ptlrpc_connection_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc94d80aa ldlm_lock2handle +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xca5a81ec ptlrpc_pinger_ir_down +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xcb2cc0cf lustre_swab_lquota_lvb +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xcb2ceaff sptlrpc_secflags2str +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xcb59346d target_pack_pool_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xcc65f599 ldlm_lock_fail_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xce1a689b sptlrpc_enc_pool_add_user +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xce86066d lustre_msg_set_slv +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xcec513c9 RQF_MDS_UNPIN +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xced015be sptlrpc_rule_set_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xcf119cb0 ldlm_pool_shrink +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xcf9963db lustre_msg_get_op_flags +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xcf9aab6a RQF_MDS_DISCONNECT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd11a5ada ptlrpc_resend +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd1b7e905 ptlrpc_request_bufs_pack +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd258fe69 ptlrpc_stop_all_threads +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd2983334 lustre_swab_swap_layouts +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd2e0d4eb lustre_msg_get_opc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd37c9bd8 ldlm_lock_downgrade +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd3895102 req_capsule_server_sized_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd3dae408 ldlm_it2str +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd47ee891 sptlrpc_conf_client_adapt +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd5081223 ptlrpc_reconnect_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd508b317 sptlrpc_target_sec_part +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd67a5d7b lustre_swab_update_reply_buf +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd69e0a27 RQF_MDS_IS_SUBDIR +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd6a669ac ldlm_completion_ast +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd6c3ebfb RMF_FIEMAP_KEY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd7910326 lustre_swab_obd_statfs +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd8b7246c sptlrpc_cli_ctx_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd8b91b3e lustre_swab_lov_desc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd8f06300 RQF_MDS_HSM_PROGRESS +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd9561861 RQF_LDLM_INTENT_OPEN +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xdb1fb0a2 RQF_MDS_REINT_CREATE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xdb9d5a6a lustre_swab_niobuf_remote +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xdd065ac7 ldlm_reprocess_all_ns +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xdd0ffb04 sptlrpc_flavor2name +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xdd30d7bf RMF_ACL +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xdd8936aa sptlrpc_target_update_exp_flavor +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xddc40a85 lustre_msg_get_flags +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xde12d36b RMF_MDS_HSM_ARCHIVE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xde555d70 sptlrpc_enc_pool_del_user +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xdee87192 sptlrpc_conf_log_update_begin +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xdee9e666 req_capsule_server_pack +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xdf701ae7 lustre_swab_fid2path +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe0cc694c RQF_LLOG_ORIGIN_HANDLE_NEXT_BLOCK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe3738053 ptlrpc_set_next_timeout +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe40e0a50 lustre_msg_get_transno +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe57bd972 sptlrpc_current_user_desc_size +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe5c3560b ptlrpc_set_add_new_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe624de52 ptlrpc_free_rq_pool +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe643998e RQF_OST_SETATTR +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe6a7996c ptlrpc_nrs_policy_register +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe6f0dc96 RQF_OST_CREATE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe7062b5f RMF_U32 +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe7415d6f ptlrpc_init_rq_pool +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe7512278 ptlrpcd_addref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe77bcb9c sptlrpc_svc_ctx_invalidate +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe7e28733 req_capsule_client_dump +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe85b6da3 lustre_swab_obdo +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe88c80ba req_capsule_server_dump +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe94f82f9 ldlm_pool_get_limit +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe973e215 ptlrpc_retain_replayable_request +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe9f6a70b ptlrpc_save_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xeabac4fc sptlrpc_rule_set_merge +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xebb64e68 req_layout_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xec226f66 ping_evictor_stop +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xec8c2120 ptlrpcd_alloc_work +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xec939a00 RQF_MDS_REINT_UNLINK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xecace5c1 RQF_OST_GET_INFO_GENERIC +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xed1c10d6 ptlrpc_connection_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xedcb740d sptlrpc_name2flavor_base +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xedf55b51 ldlm_pool_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xef1aeca9 RMF_FLD_OPC +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xefdc2f00 ptlrpcd_add_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf0241d6e lustre_swab_hsm_progress_kernel +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf0d52b5f ptlrpc_pinger_suppress_pings +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf1300275 _sptlrpc_enlarge_msg_inplace +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf277c125 RQF_OST_GET_INFO_FIEMAP +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf27d49dc sptlrpc_target_choose_flavor +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf2e937f0 ldlm_namespace_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf2ee96e6 client_destroy_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf35f132b lustre_swab_ldlm_resource_desc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf3d44370 RQF_OST_DESTROY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf43540b9 lustre_swab_mgs_nidtbl_entry +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf45085e1 sptlrpc_conf_log_stop +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf4fc6d9b ldlm_cli_enqueue_local +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf55c033b RMF_MGS_CONFIG_BODY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf5663f34 sec2target_str +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf568d2b6 req_capsule_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf56923e6 req_capsule_field_present +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf584a16b sptlrpc_part2name +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf596e9ae sptlrpc_conf_log_start +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf5e690df sptlrpc_cli_wrap_bulk +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf607fc23 sptlrpc_flavor2name_base +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf617ab8a lustre_msg_get_conn_cnt +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf64ab661 ptlrpc_buf_set_swabbed +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf697b756 ldlm_dump_all_namespaces +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf7408f84 lustre_swab_hsm_request +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf74bec7b ptlrpc_connect_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf7824312 ptlrpc_commit_replies +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf7ba40c0 RMF_MDS_HSM_PROGRESS +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf85cb27e sptlrpc_parse_rule +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf870fed9 RQF_LDLM_GL_DESC_CALLBACK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf9051bd6 RQF_QC_CALLBACK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf94e41e0 deuuidify +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf973aa93 lustre_swab_lov_user_md_v1 +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf9ee11e2 lustre_msg_set_last_committed +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf9f72dfc RMF_TGTUUID +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xfa51688d interval_insert +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xfb9a8bd0 lustre_pack_request +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xfbbb24f5 ptlrpc_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xfc2fa83f ptlrpc_del_timeout_client +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xfc978e0f ldlm_namespace_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xfce8d50b ptlrpc_prep_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xfd148bf8 RMF_LDLM_INTENT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xff02a0e9 ldlm_lock_set_data +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xff115d91 ldlm_lock2desc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xffc807e8 sptlrpc_unpack_user_desc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xffe29c3f RQF_LDLM_ENQUEUE +EXPORT_SYMBOL drivers/staging/media/cxd2099/cxd2099 0x7234d802 cxd2099_attach +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x09594804 rtllib_wx_set_scan +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x10d76199 rtllib_wx_set_freq +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x178c2913 rtllib_ps_tx_ack +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x21dffe0c rtllib_stop_scan_syncro +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x2496423e rtllib_wx_get_freq +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x24968bef rtllib_DisableIntelPromiscuousMode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x2817e6a3 rtllib_wx_get_encode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x283f9d9c rtllib_wx_set_encode_ext +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x37a89ca7 HT_update_self_and_peer_setting +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x3d186ba3 rtllib_wx_get_scan +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x3e38a3b2 rtllib_wx_set_power +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x49a38d0e rtllib_wx_set_mode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x668fbd77 rtllib_get_beacon +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x66984ed0 dot11d_init +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x6b3689be rtllib_wx_set_encode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x6c107003 rtllib_wx_set_mlme +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x7045d721 RemovePeerTS +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x76bed4da rtllib_wx_get_power +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x7de2aea9 rtllib_wx_get_mode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x8462190a rtllib_wpa_supplicant_ioctl +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x8871ff56 rtllib_wx_set_gen_ie +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x88fc042a Dot11d_Channelmap +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x8d5ed754 rtllib_wx_set_rts +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x9397c960 rtllib_rx +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x94f254c6 rtllib_reset_queue +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x9fca252c rtllib_wx_set_wap +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xa176b6b7 free_rtllib +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xa2a48c3d rtllib_wx_get_rts +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xa6b5bd13 rtllib_stop_send_beacons +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xa9c22ba4 rtllib_xmit +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xafebefa5 alloc_rtllib +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xb0307e45 rtllib_wx_get_wap +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xb09b0b05 rtllib_sta_ps_send_null_frame +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xb35ee3a0 rtllib_wx_get_essid +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xb65bd436 rtllib_softmac_start_protocol +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xbe1420f2 rt_global_debug_component +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xc172679c rtllib_wx_set_rate +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xc19022e8 rtllib_start_send_beacons +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xca597e12 rtllib_wx_set_auth +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xcc699171 rtllib_MgntDisconnect +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xcf6f5fbc rtllib_wx_set_rawtx +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xd5e91c13 notify_wx_assoc_event +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xdd6d049e rtllib_stop_scan +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xdf78f620 rtllib_wlan_frequencies +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xdfeea235 rtllib_softmac_stop_protocol +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xe1caa502 rtllib_legal_channel +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xe2dc3f84 rtllib_start_scan_syncro +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xe664528c rtllib_EnableIntelPromiscuousMode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xe8540f8e rtllib_wx_get_name +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xf533443b rtllib_wx_get_rate +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xf7a6e70e rtllib_act_scanning +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xfbd894c8 rtllib_wx_set_essid +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x00771966 ieee80211_wx_set_gen_ie_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x02759b98 ieee80211_stop_scan_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x0a2e9ae7 ieee80211_wx_get_essid_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x0f099f61 ieee80211_is_54g_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x1493ba16 Dot11d_UpdateCountryIe +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x14c7f0d2 Dot11d_Reset +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x1f34f9f2 ieee80211_softmac_stop_protocol_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x30d4c25f ieee80211_send_probe_requests_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x341abd8c ieee80211_wx_set_scan_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x35087b73 ieee80211_rx_mgt_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x447f03b2 ieee80211_stop_send_beacons_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x470002e8 ieee80211_wx_set_rts_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x47e49bf9 ieee80211_wx_get_mode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x4e60d873 ieee80211_disassociate_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x4f49b54a ieee80211_txb_free_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x4f6d4fe4 ieee80211_softmac_start_protocol_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x4fa24210 DOT11D_ScanComplete +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x5aed53c3 SendDisassociation_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x5bee677d Dot11d_Init +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x5e70e075 ieee80211_reset_queue_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x61e4190f ieee80211_wx_get_wap_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x61ea895d ieee80211_is_shortslot_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x6206f9a4 ieee80211_stop_queue_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x638e9689 ieee80211_wx_set_encode_ext_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x663b1af7 ieee80211_wx_set_mlme_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x688f9379 ieee80211_wx_get_power_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x707a8119 ieee80211_wx_get_rate_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x7516ac57 ieee80211_wx_set_rawtx_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x76f358b9 ieee80211_wx_get_freq_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x7b370ed0 ieee80211_wx_set_encode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x7bc65135 ieee80211_wx_set_auth_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x86f7ac4e notify_wx_assoc_event_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x8f8a0e5f DOT11D_GetMaxTxPwrInDbm +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x908887d4 ieee80211_wx_get_name_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x90c24bef IsLegalChannel +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x98a22a11 ieee80211_wx_get_encode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x9d9f4245 ieee80211_wx_set_wap_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x9ea040f1 ieee80211_wx_set_power_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xa051a4be ieee80211_start_scan_syncro_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xa2ef6e59 ieee80211_wx_get_scan_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xa70e3c4b ieee80211_wx_get_encode_ext_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xabd2964b ieee80211_rx_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xb18bf484 ieee80211_softmac_xmit_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xb81d0c3e HTUpdateSelfAndPeerSetting +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xbb7b59a2 ieee80211_wx_get_rts_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xc370a43e ieee80211_wlan_frequencies_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xc742df1a ieee80211_wake_queue_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xc8c5ecee ieee80211_start_send_beacons_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xcde70e5e ieee80211_ps_tx_ack_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xd111482c ieee80211_wx_set_mode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xd8e2b16e ieee80211_get_beacon_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xdad4fcb3 ToLegalChannel +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xe0068b6c ieee80211_wx_set_freq_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xe68f52cc ieee80211_wx_set_rate_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xfc01496f ieee80211_wx_set_essid_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xfe3ca36c ieee80211_softmac_scan_syncro_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xfe588645 ieee80211_wpa_supplicant_ioctl_rsl +EXPORT_SYMBOL drivers/staging/unisys/visorbus/visorbus 0x65b4b1c9 visorbus_get_device_by_id +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x09fd882c iscsit_tmr_post_handler +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x0a047905 iscsit_build_rsp_pdu +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x14ce3581 iscsit_handle_task_mgt_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x1d16f08c iscsit_setup_nop_out +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x29c58b15 iscsit_increment_maxcmdsn +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x29ce0c7a iscsit_build_task_mgt_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x2ce717d6 iscsit_set_unsoliticed_dataout +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x2e7b3016 iscsit_logout_post_handler +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x426df9ba iscsit_register_transport +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x505d9bbe iscsit_check_dataout_hdr +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x6dc40f6f iscsit_sequence_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x79a3e324 iscsit_release_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x7f341bf2 iscsit_build_text_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x85ac3047 iscsit_unregister_transport +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x89ad059d iscsit_stop_dataout_timer +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x90c54e84 iscsit_find_cmd_from_itt +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x95fa1dd5 iscsit_build_nopin_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x9ac5987f iscsit_process_scsi_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xa22f3965 iscsit_process_nop_out +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xa265175c iscsit_check_dataout_payload +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xac2d1bf9 iscsit_handle_logout_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xb9279784 iscsit_setup_text_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xb9a79f86 iscsit_process_text_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xc7fa194f iscsit_allocate_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xd45b2fba iscsit_build_reject +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xd8012508 iscsit_build_logout_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xddbe9a63 iscsit_cause_connection_reinstatement +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xe556d1d6 iscsit_setup_scsi_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x02de3b18 transport_set_vpd_ident +EXPORT_SYMBOL drivers/target/target_core_mod 0x05237dd4 spc_emulate_inquiry_std +EXPORT_SYMBOL drivers/target/target_core_mod 0x058d560a target_complete_cmd_with_length +EXPORT_SYMBOL drivers/target/target_core_mod 0x05e60778 core_alua_check_nonop_delay +EXPORT_SYMBOL drivers/target/target_core_mod 0x09b03422 sbc_dif_copy_prot +EXPORT_SYMBOL drivers/target/target_core_mod 0x0b794a40 target_wait_for_sess_cmds +EXPORT_SYMBOL drivers/target/target_core_mod 0x0db5e665 spc_emulate_report_luns +EXPORT_SYMBOL drivers/target/target_core_mod 0x10656d89 transport_kunmap_data_sg +EXPORT_SYMBOL drivers/target/target_core_mod 0x15cf939b transport_init_session_tags +EXPORT_SYMBOL drivers/target/target_core_mod 0x1624ee76 transport_free_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x1ee52f88 spc_emulate_evpd_83 +EXPORT_SYMBOL drivers/target/target_core_mod 0x21cff220 transport_lookup_tmr_lun +EXPORT_SYMBOL drivers/target/target_core_mod 0x230d82a0 target_backend_unregister +EXPORT_SYMBOL drivers/target/target_core_mod 0x230e9a9f sbc_dif_verify +EXPORT_SYMBOL drivers/target/target_core_mod 0x26c8075e target_register_template +EXPORT_SYMBOL drivers/target/target_core_mod 0x2c707d21 transport_generic_request_failure +EXPORT_SYMBOL drivers/target/target_core_mod 0x308e2675 target_show_dynamic_sessions +EXPORT_SYMBOL drivers/target/target_core_mod 0x35b96fc2 transport_lookup_cmd_lun +EXPORT_SYMBOL drivers/target/target_core_mod 0x38bbd8f2 core_tpg_register +EXPORT_SYMBOL drivers/target/target_core_mod 0x3e6d7a14 sbc_get_write_same_sectors +EXPORT_SYMBOL drivers/target/target_core_mod 0x43246a04 sbc_attrib_attrs +EXPORT_SYMBOL drivers/target/target_core_mod 0x43d73dbf target_get_sess_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x449eae3a transport_backend_register +EXPORT_SYMBOL drivers/target/target_core_mod 0x4546bfcb transport_check_aborted_status +EXPORT_SYMBOL drivers/target/target_core_mod 0x4b772038 target_submit_tmr +EXPORT_SYMBOL drivers/target/target_core_mod 0x5a1970fd target_submit_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x61c0c98f target_get_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x61d83be7 transport_deregister_session_configfs +EXPORT_SYMBOL drivers/target/target_core_mod 0x61e25da9 transport_generic_free_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x63db276c core_tpg_deregister +EXPORT_SYMBOL drivers/target/target_core_mod 0x64dfe7cf transport_generic_handle_tmr +EXPORT_SYMBOL drivers/target/target_core_mod 0x6bdf5c3a transport_deregister_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x71d56de2 sbc_get_device_type +EXPORT_SYMBOL drivers/target/target_core_mod 0x777ed7e7 core_tmr_alloc_req +EXPORT_SYMBOL drivers/target/target_core_mod 0x7dbada9d transport_set_vpd_ident_type +EXPORT_SYMBOL drivers/target/target_core_mod 0x83bc8be1 target_lun_is_rdonly +EXPORT_SYMBOL drivers/target/target_core_mod 0x85a1e283 target_setup_cmd_from_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0x85aa880c transport_set_vpd_assoc +EXPORT_SYMBOL drivers/target/target_core_mod 0x883f0bd4 target_nacl_find_deve +EXPORT_SYMBOL drivers/target/target_core_mod 0x9334aa0d target_sess_cmd_list_set_waiting +EXPORT_SYMBOL drivers/target/target_core_mod 0x94a848db target_complete_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x9861d448 transport_register_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x9acf96ee target_execute_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x9c20dd6e target_depend_item +EXPORT_SYMBOL drivers/target/target_core_mod 0x9d0feaa0 target_submit_cmd_map_sgls +EXPORT_SYMBOL drivers/target/target_core_mod 0xa0d8bcbd core_tpg_set_initiator_node_tag +EXPORT_SYMBOL drivers/target/target_core_mod 0xa2709df1 passthrough_attrib_attrs +EXPORT_SYMBOL drivers/target/target_core_mod 0xa58e9632 transport_alloc_session_tags +EXPORT_SYMBOL drivers/target/target_core_mod 0xa611b4f1 transport_send_check_condition_and_sense +EXPORT_SYMBOL drivers/target/target_core_mod 0xa80a92f0 sbc_parse_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0xa97df5ec transport_kmap_data_sg +EXPORT_SYMBOL drivers/target/target_core_mod 0xad42e536 target_unregister_template +EXPORT_SYMBOL drivers/target/target_core_mod 0xad530acb transport_handle_cdb_direct +EXPORT_SYMBOL drivers/target/target_core_mod 0xbcd5e720 transport_wait_for_tasks +EXPORT_SYMBOL drivers/target/target_core_mod 0xc0747cb2 transport_init_session +EXPORT_SYMBOL drivers/target/target_core_mod 0xc5bb5bfc core_tpg_set_initiator_node_queue_depth +EXPORT_SYMBOL drivers/target/target_core_mod 0xc9ec84f3 core_tpg_check_initiator_node_acl +EXPORT_SYMBOL drivers/target/target_core_mod 0xcab367b4 target_undepend_item +EXPORT_SYMBOL drivers/target/target_core_mod 0xcb548d22 target_put_session +EXPORT_SYMBOL drivers/target/target_core_mod 0xd8aaa1ba spc_parse_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0xdba2f6ac core_tpg_get_initiator_node_acl +EXPORT_SYMBOL drivers/target/target_core_mod 0xe514844b target_put_sess_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xf01621c7 transport_set_vpd_proto_id +EXPORT_SYMBOL drivers/target/target_core_mod 0xf139ae48 transport_init_se_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xf312a6c5 transport_generic_new_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xf94c3880 passthrough_parse_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0xf9af8381 __transport_register_session +EXPORT_SYMBOL drivers/thermal/int340x_thermal/acpi_thermal_rel 0x1887763e acpi_thermal_rel_misc_device_add +EXPORT_SYMBOL drivers/thermal/int340x_thermal/acpi_thermal_rel 0x5007fc2c acpi_parse_art +EXPORT_SYMBOL drivers/thermal/int340x_thermal/acpi_thermal_rel 0x86c998e6 acpi_thermal_rel_misc_device_remove +EXPORT_SYMBOL drivers/thermal/int340x_thermal/acpi_thermal_rel 0xdf707fab acpi_parse_trt +EXPORT_SYMBOL drivers/usb/class/cdc-wdm 0x846841ae usb_cdc_wdm_register +EXPORT_SYMBOL drivers/usb/gadget/function/usb_f_uvc 0x92e9ebac uvc_set_trace_param +EXPORT_SYMBOL drivers/usb/gadget/libcomposite 0xba1e9b94 usb_os_desc_prepare_interf_dir +EXPORT_SYMBOL drivers/usb/host/sl811-hcd 0x10e0be92 sl811h_driver +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x0c3cfd8c usb_wwan_open +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x0f7ca9ca usb_wwan_resume +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x30c7d4aa usb_wwan_suspend +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x43e7b43e usb_wwan_ioctl +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x4f10aeb8 usb_wwan_tiocmget +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x82cfdce9 usb_wwan_close +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x9ed7d460 usb_wwan_write +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xc339edd5 usb_wwan_port_remove +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xc4038d0d usb_wwan_chars_in_buffer +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xca227239 usb_wwan_tiocmset +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xec0abb11 usb_wwan_write_room +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xf36c7c09 usb_wwan_dtr_rts +EXPORT_SYMBOL drivers/usb/serial/usbserial 0x64828c06 usb_serial_suspend +EXPORT_SYMBOL drivers/usb/serial/usbserial 0xc86ce73e usb_serial_resume +EXPORT_SYMBOL drivers/vhost/vringh 0x0fd987f7 vringh_abandon_user +EXPORT_SYMBOL drivers/vhost/vringh 0x14397bb5 vringh_notify_disable_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x32da6f89 vringh_notify_enable_user +EXPORT_SYMBOL drivers/vhost/vringh 0x39c9d7a5 vringh_complete_multi_user +EXPORT_SYMBOL drivers/vhost/vringh 0x3b304ebb vringh_iov_push_user +EXPORT_SYMBOL drivers/vhost/vringh 0x3c71c418 vringh_getdesc_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x4311cd91 vringh_iov_pull_user +EXPORT_SYMBOL drivers/vhost/vringh 0x4f384f8b vringh_need_notify_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x58abf4ed vringh_init_user +EXPORT_SYMBOL drivers/vhost/vringh 0x5fedea44 vringh_getdesc_user +EXPORT_SYMBOL drivers/vhost/vringh 0x6432894b vringh_init_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x8d080d03 vringh_need_notify_user +EXPORT_SYMBOL drivers/vhost/vringh 0x95e62337 vringh_abandon_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x97fa07e9 vringh_iov_push_kern +EXPORT_SYMBOL drivers/vhost/vringh 0xb4b63575 vringh_notify_enable_kern +EXPORT_SYMBOL drivers/vhost/vringh 0xc578f0f7 vringh_complete_user +EXPORT_SYMBOL drivers/vhost/vringh 0xd355e031 vringh_complete_kern +EXPORT_SYMBOL drivers/vhost/vringh 0xd609393d vringh_notify_disable_user +EXPORT_SYMBOL drivers/vhost/vringh 0xde804bb9 vringh_iov_pull_kern +EXPORT_SYMBOL drivers/video/backlight/lcd 0x05d700d8 devm_lcd_device_register +EXPORT_SYMBOL drivers/video/backlight/lcd 0x30c14a2a devm_lcd_device_unregister +EXPORT_SYMBOL drivers/video/backlight/lcd 0x6a304557 lcd_device_unregister +EXPORT_SYMBOL drivers/video/backlight/lcd 0xd2f2bc51 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 0x4ab38ef2 svga_set_default_crt_regs +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x5342c1d1 svga_settile +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x6e4adb1e svga_check_timings +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x80f24d95 svga_wcrt_multi +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x84f80dea svga_tilefill +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x86fa110d svga_tilecopy +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x87056366 svga_get_tilemax +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x8de63fb4 svga_set_timings +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x9dc9e263 svga_tilecursor +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xa3faf1b1 svga_tileblit +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xd1429fca svga_wseq_multi +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xd22ca511 svga_set_default_atc_regs +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xd8ce8b7c svga_get_caps +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xe28d2a49 svga_set_default_gfx_regs +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xef774f5d svga_compute_pll +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xf2db5956 svga_match_format +EXPORT_SYMBOL drivers/video/fbdev/core/syscopyarea 0xb1ffc5a1 sys_copyarea +EXPORT_SYMBOL drivers/video/fbdev/core/sysfillrect 0xe5a3dace sys_fillrect +EXPORT_SYMBOL drivers/video/fbdev/core/sysimgblt 0x169f4ca0 sys_imageblit +EXPORT_SYMBOL drivers/video/fbdev/cyber2000fb 0x0cc3ede5 cyber2000fb_detach +EXPORT_SYMBOL drivers/video/fbdev/cyber2000fb 0x0e4fc342 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 0xdd9c42f9 mac_find_mode +EXPORT_SYMBOL drivers/video/fbdev/macmodes 0xe2304303 mac_map_monitor_sense +EXPORT_SYMBOL drivers/video/fbdev/matrox/g450_pll 0x0cac3613 matroxfb_g450_setpll_cond +EXPORT_SYMBOL drivers/video/fbdev/matrox/g450_pll 0x7a00c57a g450_mnp2f +EXPORT_SYMBOL drivers/video/fbdev/matrox/g450_pll 0xa32a5d92 matroxfb_g450_setclk +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_DAC1064 0x31b7f5c4 DAC1064_global_restore +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_DAC1064 0x36ecf7cf matrox_mystique +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_DAC1064 0x375e6f63 DAC1064_global_init +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_DAC1064 0x96aafb21 matrox_G100 +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_Ti3026 0x3c67b493 matrox_millennium +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_accel 0x6fb5bef3 matrox_cfbX_init +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_base 0x389d2eee matroxfb_wait_for_sync +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_base 0x9f175b5b matroxfb_enable_irq +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_base 0xaef7b4a3 matroxfb_unregister_driver +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_base 0xf5f6d317 matroxfb_register_driver +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_g450 0x6f9890dd matroxfb_g450_connect +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_g450 0xc638ee08 matroxfb_g450_shutdown +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0x07b8a5a2 matroxfb_read_pins +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0x25cf8049 matroxfb_PLL_calcclock +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0x470fc7f3 matroxfb_DAC_in +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0x75a9dbf9 matroxfb_DAC_out +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0xc385a20c matroxfb_vgaHWinit +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0xcc604210 matroxfb_vgaHWrestore +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0xcdc90c64 matroxfb_var2my +EXPORT_SYMBOL drivers/video/fbdev/mb862xx/mb862xxfb 0x0bb2fa83 mb862xxfb_init_accel +EXPORT_SYMBOL drivers/video/fbdev/sis/sisfb 0x3037658e sis_malloc +EXPORT_SYMBOL drivers/video/fbdev/sis/sisfb 0x454a3cf0 sis_free +EXPORT_SYMBOL drivers/video/vgastate 0x686de290 restore_vga +EXPORT_SYMBOL drivers/video/vgastate 0xe7a2620e save_vga +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0x1e9c62f3 w1_ds2760_store_eeprom +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0x66ae2af2 w1_ds2760_recall_eeprom +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0xb0d3329b w1_ds2760_write +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0xd885edbb w1_ds2760_read +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2780 0x9174f4ea w1_ds2780_eeprom_cmd +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2780 0xb494da7d w1_ds2780_io +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2781 0x447f8eb0 w1_ds2781_eeprom_cmd +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2781 0xdbbeb503 w1_ds2781_io +EXPORT_SYMBOL drivers/w1/wire 0x14c9f668 w1_remove_master_device +EXPORT_SYMBOL drivers/w1/wire 0x2903447e w1_register_family +EXPORT_SYMBOL drivers/w1/wire 0x602c2aa8 w1_unregister_family +EXPORT_SYMBOL drivers/w1/wire 0xd81274e8 w1_add_master_device +EXPORT_SYMBOL drivers/watchdog/iTCO_vendor_support 0x04e133fc iTCO_vendor_check_noreboot_on +EXPORT_SYMBOL drivers/watchdog/iTCO_vendor_support 0xa78bd894 iTCO_vendor_pre_set_heartbeat +EXPORT_SYMBOL drivers/watchdog/iTCO_vendor_support 0xb5f20875 iTCO_vendor_pre_keepalive +EXPORT_SYMBOL drivers/watchdog/iTCO_vendor_support 0xc4f657bf iTCO_vendor_pre_stop +EXPORT_SYMBOL drivers/watchdog/iTCO_vendor_support 0xdc6effc9 iTCO_vendor_pre_start +EXPORT_SYMBOL fs/configfs/configfs 0x058a058f config_item_put +EXPORT_SYMBOL fs/configfs/configfs 0x08b87d7b config_group_init_type_name +EXPORT_SYMBOL fs/configfs/configfs 0x22fbbf0d config_group_find_item +EXPORT_SYMBOL fs/configfs/configfs 0x4c4d433e config_group_init +EXPORT_SYMBOL fs/configfs/configfs 0x5bd8f5ab configfs_depend_item +EXPORT_SYMBOL fs/configfs/configfs 0x5ce97e61 config_item_get +EXPORT_SYMBOL fs/configfs/configfs 0x8524952a config_item_init_type_name +EXPORT_SYMBOL fs/configfs/configfs 0x91430b91 configfs_unregister_subsystem +EXPORT_SYMBOL fs/configfs/configfs 0xc7420261 config_item_set_name +EXPORT_SYMBOL fs/configfs/configfs 0xce5e43d7 configfs_register_subsystem +EXPORT_SYMBOL fs/configfs/configfs 0xdcf7733c configfs_undepend_item +EXPORT_SYMBOL fs/exofs/libore 0x0451211a ore_write +EXPORT_SYMBOL fs/exofs/libore 0x28806871 ore_verify_layout +EXPORT_SYMBOL fs/exofs/libore 0x32b7ce68 ore_truncate +EXPORT_SYMBOL fs/exofs/libore 0x3809733c ore_get_rw_state +EXPORT_SYMBOL fs/exofs/libore 0x4527e170 ore_calc_stripe_info +EXPORT_SYMBOL fs/exofs/libore 0x5a8a33b1 ore_read +EXPORT_SYMBOL fs/exofs/libore 0x7ab6396a ore_get_io_state +EXPORT_SYMBOL fs/exofs/libore 0x89dd77d9 ore_check_io +EXPORT_SYMBOL fs/exofs/libore 0xa3d2a634 g_attr_logical_length +EXPORT_SYMBOL fs/exofs/libore 0xad533fa1 ore_create +EXPORT_SYMBOL fs/exofs/libore 0xc6a6c192 ore_remove +EXPORT_SYMBOL fs/exofs/libore 0xce0f88eb extract_attr_from_ios +EXPORT_SYMBOL fs/exofs/libore 0xdab02932 ore_put_io_state +EXPORT_SYMBOL fs/fscache/fscache 0x00febb51 __fscache_read_or_alloc_pages +EXPORT_SYMBOL fs/fscache/fscache 0x0c1045ed fscache_withdraw_cache +EXPORT_SYMBOL fs/fscache/fscache 0x0e52436c __fscache_check_consistency +EXPORT_SYMBOL fs/fscache/fscache 0x13a97069 fscache_obtained_object +EXPORT_SYMBOL fs/fscache/fscache 0x1613f121 __fscache_wait_on_page_write +EXPORT_SYMBOL fs/fscache/fscache 0x17160ccd __fscache_read_or_alloc_page +EXPORT_SYMBOL fs/fscache/fscache 0x199ff08b fscache_object_retrying_stale +EXPORT_SYMBOL fs/fscache/fscache 0x1ce9fd60 fscache_operation_init +EXPORT_SYMBOL fs/fscache/fscache 0x1cf8f9b0 __fscache_invalidate +EXPORT_SYMBOL fs/fscache/fscache 0x1e10a754 __fscache_attr_changed +EXPORT_SYMBOL fs/fscache/fscache 0x266bc22d fscache_fsdef_index +EXPORT_SYMBOL fs/fscache/fscache 0x2c880380 fscache_init_cache +EXPORT_SYMBOL fs/fscache/fscache 0x38e21128 __fscache_disable_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x3cd8983f fscache_op_complete +EXPORT_SYMBOL fs/fscache/fscache 0x3ec342ec __fscache_write_page +EXPORT_SYMBOL fs/fscache/fscache 0x43dc5195 fscache_object_destroy +EXPORT_SYMBOL fs/fscache/fscache 0x52f17177 fscache_object_lookup_negative +EXPORT_SYMBOL fs/fscache/fscache 0x57dc2f71 __fscache_readpages_cancel +EXPORT_SYMBOL fs/fscache/fscache 0x6ddfe11f __fscache_maybe_release_page +EXPORT_SYMBOL fs/fscache/fscache 0x74530ecd fscache_op_debug_id +EXPORT_SYMBOL fs/fscache/fscache 0x7c125af5 fscache_check_aux +EXPORT_SYMBOL fs/fscache/fscache 0x7c96ba88 fscache_put_operation +EXPORT_SYMBOL fs/fscache/fscache 0x7d64d6c1 __fscache_register_netfs +EXPORT_SYMBOL fs/fscache/fscache 0x843703f5 fscache_mark_pages_cached +EXPORT_SYMBOL fs/fscache/fscache 0x88983a11 __fscache_wait_on_invalidate +EXPORT_SYMBOL fs/fscache/fscache 0x8cfd9fe2 fscache_object_mark_killed +EXPORT_SYMBOL fs/fscache/fscache 0x9013776e fscache_mark_page_cached +EXPORT_SYMBOL fs/fscache/fscache 0x924d51a5 __fscache_enable_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x94a138b8 __fscache_unregister_netfs +EXPORT_SYMBOL fs/fscache/fscache 0x9bdf323e fscache_cache_cleared_wq +EXPORT_SYMBOL fs/fscache/fscache 0x9d6dd76d fscache_add_cache +EXPORT_SYMBOL fs/fscache/fscache 0xa4184368 __fscache_check_page_write +EXPORT_SYMBOL fs/fscache/fscache 0xb88ed269 __fscache_alloc_page +EXPORT_SYMBOL fs/fscache/fscache 0xbd07eac9 fscache_io_error +EXPORT_SYMBOL fs/fscache/fscache 0xc9038840 __fscache_uncache_all_inode_pages +EXPORT_SYMBOL fs/fscache/fscache 0xd0b26cfa __fscache_update_cookie +EXPORT_SYMBOL fs/fscache/fscache 0xd783efb0 fscache_enqueue_operation +EXPORT_SYMBOL fs/fscache/fscache 0xe499b066 __fscache_uncache_page +EXPORT_SYMBOL fs/fscache/fscache 0xec0aab19 __fscache_relinquish_cookie +EXPORT_SYMBOL fs/fscache/fscache 0xec7739a5 __fscache_acquire_cookie +EXPORT_SYMBOL fs/fscache/fscache 0xfca91718 fscache_object_init +EXPORT_SYMBOL fs/ocfs2/cluster/ocfs2_nodemanager 0xbfd7d7a2 o2hb_global_heartbeat_active +EXPORT_SYMBOL fs/quota/quota_tree 0x546d9cda qtree_read_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0x7af3d01b qtree_entry_unused +EXPORT_SYMBOL fs/quota/quota_tree 0x96f82060 qtree_write_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0x9c88248f qtree_delete_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0xb50661f7 qtree_release_dquot +EXPORT_SYMBOL lib/cordic 0x434bfd07 cordic_calc_iq +EXPORT_SYMBOL lib/crc-ccitt 0x1a703ba1 crc_ccitt +EXPORT_SYMBOL lib/crc-ccitt 0x75811312 crc_ccitt_table +EXPORT_SYMBOL lib/crc-itu-t 0x6d356209 crc_itu_t +EXPORT_SYMBOL lib/crc-itu-t 0xd29b009f crc_itu_t_table +EXPORT_SYMBOL lib/crc7 0x56329ecc crc7_be +EXPORT_SYMBOL lib/crc7 0x7a222007 crc7_be_syndrome_table +EXPORT_SYMBOL lib/crc8 0xab9ad613 crc8_populate_lsb +EXPORT_SYMBOL lib/crc8 0xd09b2cba crc8 +EXPORT_SYMBOL lib/crc8 0xd4534d80 crc8_populate_msb +EXPORT_SYMBOL lib/libcrc32c 0x27000b29 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 0x3f3c92ac 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 0xef763c54 lc_seq_printf_stats +EXPORT_SYMBOL lib/lru_cache 0xefec290a lc_find +EXPORT_SYMBOL lib/lru_cache 0xfd525ec7 lc_put +EXPORT_SYMBOL lib/lz4/lz4_compress 0x0c222eb5 lz4_compress +EXPORT_SYMBOL lib/lz4/lz4hc_compress 0x682a23e0 lz4hc_compress +EXPORT_SYMBOL lib/raid6/raid6_pq 0x0bd662f6 raid6_gfmul +EXPORT_SYMBOL lib/raid6/raid6_pq 0x15fe0cd3 raid6_gfexp +EXPORT_SYMBOL lib/raid6/raid6_pq 0x5ba93f9d raid6_gfinv +EXPORT_SYMBOL lib/raid6/raid6_pq 0xb0d904b7 raid6_empty_zero_page +EXPORT_SYMBOL lib/raid6/raid6_pq 0xce45a6f1 raid6_gfexi +EXPORT_SYMBOL lib/raid6/raid6_pq 0xd9e91f83 raid6_vgfmul +EXPORT_SYMBOL net/6lowpan/6lowpan 0x8e0ab384 lowpan_nhc_add +EXPORT_SYMBOL net/6lowpan/6lowpan 0xf5082a97 lowpan_nhc_del +EXPORT_SYMBOL net/802/p8022 0x2376508c unregister_8022_client +EXPORT_SYMBOL net/802/p8022 0x923e88f8 register_8022_client +EXPORT_SYMBOL net/802/p8023 0x4d7107e9 make_8023_client +EXPORT_SYMBOL net/802/p8023 0x8712d2d0 destroy_8023_client +EXPORT_SYMBOL net/802/psnap 0xa02e1ea8 unregister_snap_client +EXPORT_SYMBOL net/802/psnap 0xc0bfe42e register_snap_client +EXPORT_SYMBOL net/9p/9pnet 0x0229b1c3 p9_client_getattr_dotl +EXPORT_SYMBOL net/9p/9pnet 0x19ba439d p9_tag_lookup +EXPORT_SYMBOL net/9p/9pnet 0x1ddc86ce p9_client_destroy +EXPORT_SYMBOL net/9p/9pnet 0x22b79272 p9_client_open +EXPORT_SYMBOL net/9p/9pnet 0x28169cc7 p9_release_pages +EXPORT_SYMBOL net/9p/9pnet 0x2b7afa1a p9_is_proto_dotu +EXPORT_SYMBOL net/9p/9pnet 0x3053994e p9_client_statfs +EXPORT_SYMBOL net/9p/9pnet 0x30ac4821 p9_client_lock_dotl +EXPORT_SYMBOL net/9p/9pnet 0x3299066c v9fs_get_default_trans +EXPORT_SYMBOL net/9p/9pnet 0x330f5d34 p9_client_fsync +EXPORT_SYMBOL net/9p/9pnet 0x35d1e27e p9_idpool_get +EXPORT_SYMBOL net/9p/9pnet 0x3818d915 p9_client_stat +EXPORT_SYMBOL net/9p/9pnet 0x3aeaa2d6 p9_parse_header +EXPORT_SYMBOL net/9p/9pnet 0x3d73a797 p9_errstr2errno +EXPORT_SYMBOL net/9p/9pnet 0x44d2c2c0 p9stat_free +EXPORT_SYMBOL net/9p/9pnet 0x4867c0ec p9_client_unlinkat +EXPORT_SYMBOL net/9p/9pnet 0x50dad9b1 p9_client_renameat +EXPORT_SYMBOL net/9p/9pnet 0x6714fb5a p9_client_begin_disconnect +EXPORT_SYMBOL net/9p/9pnet 0x6abe9699 p9_client_create_dotl +EXPORT_SYMBOL net/9p/9pnet 0x6d7c735d p9_is_proto_dotl +EXPORT_SYMBOL net/9p/9pnet 0x71dac881 p9_client_fcreate +EXPORT_SYMBOL net/9p/9pnet 0x767fefdd v9fs_get_trans_by_name +EXPORT_SYMBOL net/9p/9pnet 0x88972b91 p9_client_readdir +EXPORT_SYMBOL net/9p/9pnet 0x8b8d9d97 p9stat_read +EXPORT_SYMBOL net/9p/9pnet 0x90f66a5c p9dirent_read +EXPORT_SYMBOL net/9p/9pnet 0x9f08a15e p9_client_rename +EXPORT_SYMBOL net/9p/9pnet 0xa2fc91bd p9_client_disconnect +EXPORT_SYMBOL net/9p/9pnet 0xa4d3dcda p9_client_mknod_dotl +EXPORT_SYMBOL net/9p/9pnet 0xb9ea5e34 p9_client_setattr +EXPORT_SYMBOL net/9p/9pnet 0xba33d83d p9_client_link +EXPORT_SYMBOL net/9p/9pnet 0xbee3802c p9_client_readlink +EXPORT_SYMBOL net/9p/9pnet 0xc4b896d0 p9_client_read +EXPORT_SYMBOL net/9p/9pnet 0xc574a4a3 p9_client_cb +EXPORT_SYMBOL net/9p/9pnet 0xc5db54a9 p9_idpool_destroy +EXPORT_SYMBOL net/9p/9pnet 0xcc9c2692 p9_client_remove +EXPORT_SYMBOL net/9p/9pnet 0xd1bb259a p9_client_symlink +EXPORT_SYMBOL net/9p/9pnet 0xd62ba5cd p9_client_write +EXPORT_SYMBOL net/9p/9pnet 0xd69467d7 p9_client_attach +EXPORT_SYMBOL net/9p/9pnet 0xd69e3b14 p9_client_clunk +EXPORT_SYMBOL net/9p/9pnet 0xd886b917 v9fs_register_trans +EXPORT_SYMBOL net/9p/9pnet 0xdd4bd458 p9_client_getlock_dotl +EXPORT_SYMBOL net/9p/9pnet 0xdd684db4 p9_client_walk +EXPORT_SYMBOL net/9p/9pnet 0xde50cf74 p9_client_mkdir_dotl +EXPORT_SYMBOL net/9p/9pnet 0xe58a3360 p9_error_init +EXPORT_SYMBOL net/9p/9pnet 0xef8e1593 p9_client_create +EXPORT_SYMBOL net/9p/9pnet 0xef962fd2 p9_client_wstat +EXPORT_SYMBOL net/9p/9pnet 0xf4a111d8 p9_idpool_create +EXPORT_SYMBOL net/9p/9pnet 0xf84f2022 p9_idpool_put +EXPORT_SYMBOL net/9p/9pnet 0xfd40c79d p9_idpool_check +EXPORT_SYMBOL net/9p/9pnet 0xfd70ac2b v9fs_unregister_trans +EXPORT_SYMBOL net/appletalk/appletalk 0x70162ef7 aarp_send_ddp +EXPORT_SYMBOL net/appletalk/appletalk 0x8cbf8514 atalk_find_dev_addr +EXPORT_SYMBOL net/appletalk/appletalk 0xa30aded4 atrtr_get_dev +EXPORT_SYMBOL net/appletalk/appletalk 0xe4b90402 alloc_ltalkdev +EXPORT_SYMBOL net/atm/atm 0x14b1eb18 vcc_insert_socket +EXPORT_SYMBOL net/atm/atm 0x193ce291 atm_dev_signal_change +EXPORT_SYMBOL net/atm/atm 0x1bfbb10f vcc_sklist_lock +EXPORT_SYMBOL net/atm/atm 0x21c6e70c vcc_release_async +EXPORT_SYMBOL net/atm/atm 0x2cc2d52d vcc_hash +EXPORT_SYMBOL net/atm/atm 0x3e0f929b atm_dev_release_vccs +EXPORT_SYMBOL net/atm/atm 0x4443d399 atm_proc_root +EXPORT_SYMBOL net/atm/atm 0x9feaf287 sonet_subtract_stats +EXPORT_SYMBOL net/atm/atm 0xaa024146 sonet_copy_stats +EXPORT_SYMBOL net/atm/atm 0xb3c6d1d3 atm_init_aal5 +EXPORT_SYMBOL net/atm/atm 0xb525b6d9 register_atm_ioctl +EXPORT_SYMBOL net/atm/atm 0xc1ff3985 deregister_atm_ioctl +EXPORT_SYMBOL net/atm/atm 0xdc388a1f atm_dev_deregister +EXPORT_SYMBOL net/atm/atm 0xe16f2ea7 atm_dev_register +EXPORT_SYMBOL net/atm/atm 0xe6f79231 atm_alloc_charge +EXPORT_SYMBOL net/atm/atm 0xec7b3c40 vcc_process_recv_queue +EXPORT_SYMBOL net/atm/atm 0xf49bc67a atm_pcr_goal +EXPORT_SYMBOL net/atm/atm 0xfb04757e atm_charge +EXPORT_SYMBOL net/atm/atm 0xfd31884b atm_dev_lookup +EXPORT_SYMBOL net/ax25/ax25 0x242852b9 ax25_uid_policy +EXPORT_SYMBOL net/ax25/ax25 0x3afee63e ax25_findbyuid +EXPORT_SYMBOL net/ax25/ax25 0x4502c65a asc2ax +EXPORT_SYMBOL net/ax25/ax25 0x4c9e6ad1 ax25_listen_register +EXPORT_SYMBOL net/ax25/ax25 0x53dea1ff ax2asc +EXPORT_SYMBOL net/ax25/ax25 0x56f2c0dd ax25_linkfail_register +EXPORT_SYMBOL net/ax25/ax25 0x5f283f5e ax25_listen_release +EXPORT_SYMBOL net/ax25/ax25 0x7bca84aa ax25_header_ops +EXPORT_SYMBOL net/ax25/ax25 0x89ed1118 ax25_ip_xmit +EXPORT_SYMBOL net/ax25/ax25 0x8bdffb2c ax25_find_cb +EXPORT_SYMBOL net/ax25/ax25 0x8ede9e26 ax25_protocol_release +EXPORT_SYMBOL net/ax25/ax25 0x9dd2924b ax25_linkfail_release +EXPORT_SYMBOL net/ax25/ax25 0xa7f3015b ax25_display_timer +EXPORT_SYMBOL net/ax25/ax25 0xc1444946 ax25cmp +EXPORT_SYMBOL net/ax25/ax25 0xd43ecbf1 null_ax25_address +EXPORT_SYMBOL net/ax25/ax25 0xd7b768c0 ax25_send_frame +EXPORT_SYMBOL net/bluetooth/bluetooth 0x027c67e2 bt_procfs_init +EXPORT_SYMBOL net/bluetooth/bluetooth 0x088bece9 hci_get_route +EXPORT_SYMBOL net/bluetooth/bluetooth 0x09c2d4df bt_accept_dequeue +EXPORT_SYMBOL net/bluetooth/bluetooth 0x0e1df476 l2cap_unregister_user +EXPORT_SYMBOL net/bluetooth/bluetooth 0x184f33ac bt_sock_unlink +EXPORT_SYMBOL net/bluetooth/bluetooth 0x1ca92aa4 hci_free_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x306652d0 l2cap_register_user +EXPORT_SYMBOL net/bluetooth/bluetooth 0x33a83678 bt_sock_stream_recvmsg +EXPORT_SYMBOL net/bluetooth/bluetooth 0x367cf8ee hci_recv_frame +EXPORT_SYMBOL net/bluetooth/bluetooth 0x37f3b0fb __hci_cmd_sync_ev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x3a9bfe97 bt_accept_enqueue +EXPORT_SYMBOL net/bluetooth/bluetooth 0x3f2ed231 bt_sock_link +EXPORT_SYMBOL net/bluetooth/bluetooth 0x44d99bef bt_sock_poll +EXPORT_SYMBOL net/bluetooth/bluetooth 0x47022514 bt_err +EXPORT_SYMBOL net/bluetooth/bluetooth 0x5c91fb7c l2cap_is_socket +EXPORT_SYMBOL net/bluetooth/bluetooth 0x6d9e39ee bt_procfs_cleanup +EXPORT_SYMBOL net/bluetooth/bluetooth 0x76548ff7 l2cap_chan_close +EXPORT_SYMBOL net/bluetooth/bluetooth 0x812dff8e l2cap_conn_get +EXPORT_SYMBOL net/bluetooth/bluetooth 0x85b59ca4 hci_unregister_cb +EXPORT_SYMBOL net/bluetooth/bluetooth 0x8a63aef1 bt_sock_recvmsg +EXPORT_SYMBOL net/bluetooth/bluetooth 0x8fea24bd bt_sock_unregister +EXPORT_SYMBOL net/bluetooth/bluetooth 0x91c9a325 bt_to_errno +EXPORT_SYMBOL net/bluetooth/bluetooth 0x9e79da99 hci_mgmt_chan_unregister +EXPORT_SYMBOL net/bluetooth/bluetooth 0x9ec45e87 hci_register_cb +EXPORT_SYMBOL net/bluetooth/bluetooth 0xa086603d hci_resume_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xaf2aa139 bt_sock_reclassify_lock +EXPORT_SYMBOL net/bluetooth/bluetooth 0xb0630ff2 bt_sock_register +EXPORT_SYMBOL net/bluetooth/bluetooth 0xb0f24d1d bt_sock_wait_state +EXPORT_SYMBOL net/bluetooth/bluetooth 0xb9447fd7 __hci_cmd_sync +EXPORT_SYMBOL net/bluetooth/bluetooth 0xba24ce34 hci_register_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xbbc9d34e hci_conn_switch_role +EXPORT_SYMBOL net/bluetooth/bluetooth 0xbd9c1807 hci_unregister_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xc950b225 hci_reset_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xcb76bd9d hci_alloc_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xcc1fb551 baswap +EXPORT_SYMBOL net/bluetooth/bluetooth 0xd7442057 bt_info +EXPORT_SYMBOL net/bluetooth/bluetooth 0xdc280329 hci_mgmt_chan_register +EXPORT_SYMBOL net/bluetooth/bluetooth 0xdcb69509 l2cap_conn_put +EXPORT_SYMBOL net/bluetooth/bluetooth 0xde00c3aa hci_conn_check_secure +EXPORT_SYMBOL net/bluetooth/bluetooth 0xdfd94a22 bt_accept_unlink +EXPORT_SYMBOL net/bluetooth/bluetooth 0xe44693e8 hci_conn_security +EXPORT_SYMBOL net/bluetooth/bluetooth 0xede1aa24 bt_sock_ioctl +EXPORT_SYMBOL net/bluetooth/bluetooth 0xfddbb24e bt_sock_wait_ready +EXPORT_SYMBOL net/bluetooth/bluetooth 0xff74cd1d hci_suspend_dev +EXPORT_SYMBOL net/bridge/bridge 0x98890466 br_should_route_hook +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0x31e6b65b ebt_register_table +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0xd99fe607 ebt_do_table +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0xe499e1d0 ebt_unregister_table +EXPORT_SYMBOL net/caif/caif 0x04455833 caif_enroll_dev +EXPORT_SYMBOL net/caif/caif 0x0c172276 caif_connect_client +EXPORT_SYMBOL net/caif/caif 0x1446b60a caif_client_register_refcnt +EXPORT_SYMBOL net/caif/caif 0x2a09f713 cfpkt_fromnative +EXPORT_SYMBOL net/caif/caif 0x30460145 get_cfcnfg +EXPORT_SYMBOL net/caif/caif 0x329dbd06 cfpkt_info +EXPORT_SYMBOL net/caif/caif 0x38701a7c cfcnfg_del_phy_layer +EXPORT_SYMBOL net/caif/caif 0x4a237e57 cfpkt_tonative +EXPORT_SYMBOL net/caif/caif 0x6a44fc70 cfpkt_extr_head +EXPORT_SYMBOL net/caif/caif 0x839ddb7b cfcnfg_set_phy_state +EXPORT_SYMBOL net/caif/caif 0x966d7de2 cfpkt_add_head +EXPORT_SYMBOL net/caif/caif 0x9e3e305d cfpkt_set_prio +EXPORT_SYMBOL net/caif/caif 0xb565b9cb cfcnfg_add_phy_layer +EXPORT_SYMBOL net/caif/caif 0xb7b6874e caif_free_client +EXPORT_SYMBOL net/caif/caif 0xf1368fa5 caif_disconnect_client +EXPORT_SYMBOL net/can/can 0x50cd8572 can_proto_register +EXPORT_SYMBOL net/can/can 0x61e80c31 can_send +EXPORT_SYMBOL net/can/can 0x992abda1 can_ioctl +EXPORT_SYMBOL net/can/can 0x9dd8dc15 can_proto_unregister +EXPORT_SYMBOL net/can/can 0xd9ed0166 can_rx_register +EXPORT_SYMBOL net/can/can 0xee5bb691 can_rx_unregister +EXPORT_SYMBOL net/ceph/libceph 0x00abda8b ceph_monc_wait_osdmap +EXPORT_SYMBOL net/ceph/libceph 0x03120d32 ceph_con_init +EXPORT_SYMBOL net/ceph/libceph 0x037e608f ceph_print_client_options +EXPORT_SYMBOL net/ceph/libceph 0x043b8e2d ceph_zero_page_vector_range +EXPORT_SYMBOL net/ceph/libceph 0x09290ab3 ceph_debugfs_init +EXPORT_SYMBOL net/ceph/libceph 0x0d47565f osd_req_op_cls_response_data_pages +EXPORT_SYMBOL net/ceph/libceph 0x12cb2d06 osd_req_op_watch_init +EXPORT_SYMBOL net/ceph/libceph 0x1625e241 ceph_messenger_fini +EXPORT_SYMBOL net/ceph/libceph 0x1845153e osd_req_op_cls_request_data_pagelist +EXPORT_SYMBOL net/ceph/libceph 0x1893456f ceph_osdc_readpages +EXPORT_SYMBOL net/ceph/libceph 0x1ac44884 ceph_put_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x1afea208 osd_req_op_alloc_hint_init +EXPORT_SYMBOL net/ceph/libceph 0x20d151cb ceph_osdc_setup +EXPORT_SYMBOL net/ceph/libceph 0x21c60751 ceph_pagelist_free_reserve +EXPORT_SYMBOL net/ceph/libceph 0x22697e3f ceph_msg_data_add_pages +EXPORT_SYMBOL net/ceph/libceph 0x226b2e02 ceph_monc_got_mdsmap +EXPORT_SYMBOL net/ceph/libceph 0x24762029 ceph_monc_do_statfs +EXPORT_SYMBOL net/ceph/libceph 0x24d897df ceph_pagelist_release +EXPORT_SYMBOL net/ceph/libceph 0x2b5d24d1 ceph_osdc_create_event +EXPORT_SYMBOL net/ceph/libceph 0x2bbd5637 ceph_pg_poolid_by_name +EXPORT_SYMBOL net/ceph/libceph 0x2be27ccc ceph_messenger_init +EXPORT_SYMBOL net/ceph/libceph 0x2db717f3 ceph_destroy_options +EXPORT_SYMBOL net/ceph/libceph 0x31f90c47 ceph_copy_from_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x33739d30 ceph_calc_pg_primary +EXPORT_SYMBOL net/ceph/libceph 0x37ff7548 ceph_oloc_oid_to_pg +EXPORT_SYMBOL net/ceph/libceph 0x3abec91f ceph_pr_addr +EXPORT_SYMBOL net/ceph/libceph 0x3cae8bf6 ceph_osdc_writepages +EXPORT_SYMBOL net/ceph/libceph 0x3e5200df ceph_osdc_new_request +EXPORT_SYMBOL net/ceph/libceph 0x3f688151 ceph_put_snap_context +EXPORT_SYMBOL net/ceph/libceph 0x419cb09b ceph_pagelist_truncate +EXPORT_SYMBOL net/ceph/libceph 0x43e458f6 ceph_file_part +EXPORT_SYMBOL net/ceph/libceph 0x43efd647 ceph_calc_file_object_mapping +EXPORT_SYMBOL net/ceph/libceph 0x44723236 osd_req_op_init +EXPORT_SYMBOL net/ceph/libceph 0x45d811ff ceph_osdc_set_request_linger +EXPORT_SYMBOL net/ceph/libceph 0x466b85b8 libceph_compatible +EXPORT_SYMBOL net/ceph/libceph 0x4692c860 ceph_get_direct_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x49ebb4e3 ceph_msg_data_add_pagelist +EXPORT_SYMBOL net/ceph/libceph 0x4b045783 ceph_monc_do_get_version +EXPORT_SYMBOL net/ceph/libceph 0x506af99b osd_req_op_extent_osd_data_bio +EXPORT_SYMBOL net/ceph/libceph 0x51129aac ceph_osdc_flush_notifies +EXPORT_SYMBOL net/ceph/libceph 0x51ba1b1c ceph_create_client +EXPORT_SYMBOL net/ceph/libceph 0x5379cea3 ceph_caps_for_mode +EXPORT_SYMBOL net/ceph/libceph 0x53d8ccee osd_req_op_extent_osd_data_pagelist +EXPORT_SYMBOL net/ceph/libceph 0x5434bac9 ceph_osdc_put_event +EXPORT_SYMBOL net/ceph/libceph 0x5560eedf ceph_open_session +EXPORT_SYMBOL net/ceph/libceph 0x57baf885 ceph_str_hash +EXPORT_SYMBOL net/ceph/libceph 0x5b80cfd6 osd_req_op_extent_init +EXPORT_SYMBOL net/ceph/libceph 0x5c4ecc4a osd_req_op_extent_update +EXPORT_SYMBOL net/ceph/libceph 0x63758856 ceph_str_hash_name +EXPORT_SYMBOL net/ceph/libceph 0x685017e2 ceph_msg_get +EXPORT_SYMBOL net/ceph/libceph 0x6b2e3bcd ceph_get_snap_context +EXPORT_SYMBOL net/ceph/libceph 0x6fcdafef ceph_buffer_new +EXPORT_SYMBOL net/ceph/libceph 0x70024b7f osd_req_op_cls_response_data +EXPORT_SYMBOL net/ceph/libceph 0x77539a87 ceph_monc_open_session +EXPORT_SYMBOL net/ceph/libceph 0x78a2e98d ceph_auth_is_authenticated +EXPORT_SYMBOL net/ceph/libceph 0x792cdc46 ceph_copy_to_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x7aa1268f ceph_alloc_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x7ae91444 ceph_con_open +EXPORT_SYMBOL net/ceph/libceph 0x7c7fe384 ceph_osdc_sync +EXPORT_SYMBOL net/ceph/libceph 0x829182af ceph_destroy_client +EXPORT_SYMBOL net/ceph/libceph 0x84c95999 osd_req_op_cls_request_data_pages +EXPORT_SYMBOL net/ceph/libceph 0x85209201 ceph_osdc_cancel_request +EXPORT_SYMBOL net/ceph/libceph 0x8ddbf753 ceph_auth_update_authorizer +EXPORT_SYMBOL net/ceph/libceph 0x92a24398 ceph_osdc_get_request +EXPORT_SYMBOL net/ceph/libceph 0x96578a24 ceph_osdc_start_request +EXPORT_SYMBOL net/ceph/libceph 0x969651d6 ceph_msg_data_add_bio +EXPORT_SYMBOL net/ceph/libceph 0x97389e25 osd_req_op_raw_data_in_pages +EXPORT_SYMBOL net/ceph/libceph 0x99e36571 ceph_osdc_cleanup +EXPORT_SYMBOL net/ceph/libceph 0x9b6688de osd_req_op_extent_osd_data +EXPORT_SYMBOL net/ceph/libceph 0x9ee3c71b ceph_monc_request_next_osdmap +EXPORT_SYMBOL net/ceph/libceph 0x9f534f4d ceph_buffer_release +EXPORT_SYMBOL net/ceph/libceph 0xad010bdf ceph_client_id +EXPORT_SYMBOL net/ceph/libceph 0xae3515ba ceph_create_snap_context +EXPORT_SYMBOL net/ceph/libceph 0xae7ef232 osd_req_op_extent_osd_data_pages +EXPORT_SYMBOL net/ceph/libceph 0xafb8a407 ceph_msgr_flush +EXPORT_SYMBOL net/ceph/libceph 0xb4721b22 ceph_con_close +EXPORT_SYMBOL net/ceph/libceph 0xb54676fa ceph_msg_type_name +EXPORT_SYMBOL net/ceph/libceph 0xb5e408ef ceph_monc_stop +EXPORT_SYMBOL net/ceph/libceph 0xb6081d6d ceph_msgr_exit +EXPORT_SYMBOL net/ceph/libceph 0xb629c66f ceph_osdc_build_request +EXPORT_SYMBOL net/ceph/libceph 0xb9a96041 ceph_con_keepalive +EXPORT_SYMBOL net/ceph/libceph 0xba3fdf6c ceph_msg_dump +EXPORT_SYMBOL net/ceph/libceph 0xc03f6ddf ceph_msg_new +EXPORT_SYMBOL net/ceph/libceph 0xc1811b8c ceph_auth_invalidate_authorizer +EXPORT_SYMBOL net/ceph/libceph 0xc4a80955 ceph_debugfs_cleanup +EXPORT_SYMBOL net/ceph/libceph 0xc5571483 ceph_auth_destroy_authorizer +EXPORT_SYMBOL net/ceph/libceph 0xc66e3011 ceph_osdc_cancel_event +EXPORT_SYMBOL net/ceph/libceph 0xc9257e85 __ceph_open_session +EXPORT_SYMBOL net/ceph/libceph 0xc9f82b38 ceph_msgr_init +EXPORT_SYMBOL net/ceph/libceph 0xcb50a624 ceph_parse_ips +EXPORT_SYMBOL net/ceph/libceph 0xd18c83b8 ceph_auth_verify_authorizer_reply +EXPORT_SYMBOL net/ceph/libceph 0xd25637d7 ceph_copy_user_to_page_vector +EXPORT_SYMBOL net/ceph/libceph 0xd2c107bb ceph_flags_to_mode +EXPORT_SYMBOL net/ceph/libceph 0xd2c8214f ceph_osdc_put_request +EXPORT_SYMBOL net/ceph/libceph 0xd70f0494 ceph_msg_put +EXPORT_SYMBOL net/ceph/libceph 0xd718e84a ceph_pg_pool_name_by_id +EXPORT_SYMBOL net/ceph/libceph 0xd7acd83f ceph_pagelist_set_cursor +EXPORT_SYMBOL net/ceph/libceph 0xd922704b ceph_check_fsid +EXPORT_SYMBOL net/ceph/libceph 0xd99792c7 osd_req_op_xattr_init +EXPORT_SYMBOL net/ceph/libceph 0xdd8e7550 ceph_parse_options +EXPORT_SYMBOL net/ceph/libceph 0xe3b042ca ceph_pagelist_append +EXPORT_SYMBOL net/ceph/libceph 0xeba7461c ceph_compare_options +EXPORT_SYMBOL net/ceph/libceph 0xeccdb5d7 ceph_release_page_vector +EXPORT_SYMBOL net/ceph/libceph 0xedcdf997 ceph_monc_init +EXPORT_SYMBOL net/ceph/libceph 0xedf9109e ceph_osdc_alloc_request +EXPORT_SYMBOL net/ceph/libceph 0xf1206e5e ceph_monc_validate_auth +EXPORT_SYMBOL net/ceph/libceph 0xf2c5657f ceph_auth_create_authorizer +EXPORT_SYMBOL net/ceph/libceph 0xf303523e ceph_osdc_wait_request +EXPORT_SYMBOL net/ceph/libceph 0xf34375e8 osd_req_op_cls_init +EXPORT_SYMBOL net/ceph/libceph 0xf35cb4d9 ceph_pagelist_reserve +EXPORT_SYMBOL net/ceph/libceph 0xfc4845c9 ceph_con_send +EXPORT_SYMBOL net/dccp/dccp_ipv4 0x4eeb8988 dccp_syn_ack_timeout +EXPORT_SYMBOL net/dccp/dccp_ipv4 0xc01df67e dccp_req_err +EXPORT_SYMBOL net/ieee802154/6lowpan/ieee802154_6lowpan 0x30779bff lowpan_frag_rcv +EXPORT_SYMBOL net/ieee802154/ieee802154 0x47685a62 wpan_phy_new +EXPORT_SYMBOL net/ieee802154/ieee802154 0x5ebd0bee wpan_phy_register +EXPORT_SYMBOL net/ieee802154/ieee802154 0x6b7f9fad wpan_phy_unregister +EXPORT_SYMBOL net/ieee802154/ieee802154 0x731bba4d wpan_phy_free +EXPORT_SYMBOL net/ieee802154/ieee802154 0x8ab32b5e wpan_phy_for_each +EXPORT_SYMBOL net/ieee802154/ieee802154 0xbdf2ba3a wpan_phy_find +EXPORT_SYMBOL net/ipv4/fou 0x03916fe4 gue_encap_hlen +EXPORT_SYMBOL net/ipv4/fou 0x0c1046b4 gue_build_header +EXPORT_SYMBOL net/ipv4/fou 0x7a8411a2 fou_encap_hlen +EXPORT_SYMBOL net/ipv4/fou 0xdfc10e85 fou_build_header +EXPORT_SYMBOL net/ipv4/ip_tunnel 0x0b6354ee ip_tunnel_encap_del_ops +EXPORT_SYMBOL net/ipv4/ip_tunnel 0x3798c9db ip_tunnel_dst_reset_all +EXPORT_SYMBOL net/ipv4/ip_tunnel 0x5a1b49b5 ip_tunnel_encap +EXPORT_SYMBOL net/ipv4/ip_tunnel 0x73c01d64 ip_tunnel_get_iflink +EXPORT_SYMBOL net/ipv4/ip_tunnel 0xa18ed27f ip_tunnel_get_link_net +EXPORT_SYMBOL net/ipv4/ip_tunnel 0xb72ff894 ip_tunnel_encap_add_ops +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0x30aa0fc7 arpt_register_table +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0x95a3ccdd arpt_unregister_table +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0xa06f6bc4 arpt_do_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0x59f04674 ipt_unregister_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0x64c9cf2d ipt_do_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0x8e33da6a ipt_register_table +EXPORT_SYMBOL net/ipv4/tunnel4 0x3e6d7cf6 xfrm4_tunnel_deregister +EXPORT_SYMBOL net/ipv4/tunnel4 0x67c0a633 xfrm4_tunnel_register +EXPORT_SYMBOL net/ipv4/udp_tunnel 0xb7ae2dd1 udp_sock_create4 +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0xabf72199 ip6_tnl_parse_tlv_enc_lim +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0xb5a9501d ip6_tnl_get_cap +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0xf3615500 ip6_tnl_get_iflink +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0xf3a3edfc ip6_tnl_get_link_net +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0x1b29554f ip6t_do_table +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0x2cf0828c ip6t_register_table +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0x52f8ae6b ip6t_unregister_table +EXPORT_SYMBOL net/ipv6/tunnel6 0x437e186d xfrm6_tunnel_deregister +EXPORT_SYMBOL net/ipv6/tunnel6 0x44dbce50 xfrm6_tunnel_register +EXPORT_SYMBOL net/ipv6/xfrm6_tunnel 0x36f4ad0c xfrm6_tunnel_alloc_spi +EXPORT_SYMBOL net/ipv6/xfrm6_tunnel 0xb2f05da3 xfrm6_tunnel_spi_lookup +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x4f9dcf01 ircomm_data_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x5eac1c8f ircomm_control_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x963b20cf ircomm_connect_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0xaa0991a8 ircomm_open +EXPORT_SYMBOL net/irda/ircomm/ircomm 0xd15faa88 ircomm_flow_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0xd3e6f4b9 ircomm_close +EXPORT_SYMBOL net/irda/ircomm/ircomm 0xdc9f99ba ircomm_connect_response +EXPORT_SYMBOL net/irda/ircomm/ircomm 0xfd281532 ircomm_disconnect_request +EXPORT_SYMBOL net/irda/irda 0x04fefd77 irlap_open +EXPORT_SYMBOL net/irda/irda 0x05d9251f irlmp_connect_response +EXPORT_SYMBOL net/irda/irda 0x06a3ee58 irias_new_integer_value +EXPORT_SYMBOL net/irda/irda 0x07d3647c irlmp_register_service +EXPORT_SYMBOL net/irda/irda 0x0963c24b irias_add_string_attrib +EXPORT_SYMBOL net/irda/irda 0x09939c11 irias_add_integer_attrib +EXPORT_SYMBOL net/irda/irda 0x1c4e8551 irttp_dup +EXPORT_SYMBOL net/irda/irda 0x23bbc2ce irias_find_object +EXPORT_SYMBOL net/irda/irda 0x27868a97 iriap_open +EXPORT_SYMBOL net/irda/irda 0x2b432980 hashbin_get_next +EXPORT_SYMBOL net/irda/irda 0x33cbe2c6 proc_irda +EXPORT_SYMBOL net/irda/irda 0x385847aa irias_delete_object +EXPORT_SYMBOL net/irda/irda 0x448b8aaa irda_qos_bits_to_value +EXPORT_SYMBOL net/irda/irda 0x46b00fdf irias_insert_object +EXPORT_SYMBOL net/irda/irda 0x46c1c4a2 irlmp_unregister_service +EXPORT_SYMBOL net/irda/irda 0x4e4d54cd irttp_flow_request +EXPORT_SYMBOL net/irda/irda 0x51b01ba6 irttp_open_tsap +EXPORT_SYMBOL net/irda/irda 0x5315c517 irlmp_data_request +EXPORT_SYMBOL net/irda/irda 0x5b76b960 iriap_getvaluebyclass_request +EXPORT_SYMBOL net/irda/irda 0x603e9f79 irttp_close_tsap +EXPORT_SYMBOL net/irda/irda 0x62064812 irda_device_set_media_busy +EXPORT_SYMBOL net/irda/irda 0x659a5001 irlmp_close_lsap +EXPORT_SYMBOL net/irda/irda 0x6b043eba irda_init_max_qos_capabilies +EXPORT_SYMBOL net/irda/irda 0x7042bc54 irlmp_register_client +EXPORT_SYMBOL net/irda/irda 0x70a3f20f hashbin_lock_find +EXPORT_SYMBOL net/irda/irda 0x763e54a4 irlmp_unregister_client +EXPORT_SYMBOL net/irda/irda 0x7957f728 irlmp_update_client +EXPORT_SYMBOL net/irda/irda 0x7b764793 irlmp_disconnect_request +EXPORT_SYMBOL net/irda/irda 0x7dbaa2fb async_unwrap_char +EXPORT_SYMBOL net/irda/irda 0x7f52a8bf irda_param_insert +EXPORT_SYMBOL net/irda/irda 0x8c5bb359 alloc_irdadev +EXPORT_SYMBOL net/irda/irda 0x91815586 irda_param_pack +EXPORT_SYMBOL net/irda/irda 0x9201a936 irlmp_open_lsap +EXPORT_SYMBOL net/irda/irda 0x94544ff8 irlmp_connect_request +EXPORT_SYMBOL net/irda/irda 0x94a824db irda_param_extract_all +EXPORT_SYMBOL net/irda/irda 0x98a8b3b4 hashbin_delete +EXPORT_SYMBOL net/irda/irda 0x9ccbdfca hashbin_insert +EXPORT_SYMBOL net/irda/irda 0xa0ff0b7e irda_notify_init +EXPORT_SYMBOL net/irda/irda 0xac3dc858 irias_add_octseq_attrib +EXPORT_SYMBOL net/irda/irda 0xae797d2c irttp_udata_request +EXPORT_SYMBOL net/irda/irda 0xaeeff2b5 hashbin_find +EXPORT_SYMBOL net/irda/irda 0xb056899c iriap_close +EXPORT_SYMBOL net/irda/irda 0xb9394173 irias_delete_value +EXPORT_SYMBOL net/irda/irda 0xbcd3ef13 irias_object_change_attribute +EXPORT_SYMBOL net/irda/irda 0xbcfaf806 irlap_close +EXPORT_SYMBOL net/irda/irda 0xbe40ace9 irlmp_discovery_request +EXPORT_SYMBOL net/irda/irda 0xc222d7dc irttp_disconnect_request +EXPORT_SYMBOL net/irda/irda 0xd338f08e async_wrap_skb +EXPORT_SYMBOL net/irda/irda 0xd6deeaae irda_setup_dma +EXPORT_SYMBOL net/irda/irda 0xd7f9ea2a irttp_connect_request +EXPORT_SYMBOL net/irda/irda 0xdc0196c2 hashbin_remove +EXPORT_SYMBOL net/irda/irda 0xde4c6b3c irlmp_service_to_hint +EXPORT_SYMBOL net/irda/irda 0xe1ba6308 irias_new_object +EXPORT_SYMBOL net/irda/irda 0xe222ea96 irttp_connect_response +EXPORT_SYMBOL net/irda/irda 0xe329462a hashbin_get_first +EXPORT_SYMBOL net/irda/irda 0xeb78333e hashbin_remove_this +EXPORT_SYMBOL net/irda/irda 0xec242b93 hashbin_new +EXPORT_SYMBOL net/irda/irda 0xedd521c2 irlmp_get_discoveries +EXPORT_SYMBOL net/irda/irda 0xf81da919 irttp_data_request +EXPORT_SYMBOL net/l2tp/l2tp_core 0x94dd7cf6 l2tp_recv_common +EXPORT_SYMBOL net/lapb/lapb 0x204e75fa lapb_unregister +EXPORT_SYMBOL net/lapb/lapb 0x2a71151b lapb_disconnect_request +EXPORT_SYMBOL net/lapb/lapb 0x352f145b lapb_data_received +EXPORT_SYMBOL net/lapb/lapb 0x35e6a347 lapb_data_request +EXPORT_SYMBOL net/lapb/lapb 0x90fe6a7f lapb_connect_request +EXPORT_SYMBOL net/lapb/lapb 0xb836893e lapb_getparms +EXPORT_SYMBOL net/lapb/lapb 0xcf898234 lapb_register +EXPORT_SYMBOL net/lapb/lapb 0xda6f4c63 lapb_setparms +EXPORT_SYMBOL net/llc/llc 0x230e4c34 llc_mac_hdr_init +EXPORT_SYMBOL net/llc/llc 0x3513cbb6 llc_sap_find +EXPORT_SYMBOL net/llc/llc 0x38b92846 llc_remove_pack +EXPORT_SYMBOL net/llc/llc 0x4261cc6b llc_sap_open +EXPORT_SYMBOL net/llc/llc 0x52d7b2fd llc_sap_list +EXPORT_SYMBOL net/llc/llc 0xc2c016bd llc_sap_close +EXPORT_SYMBOL net/llc/llc 0xd64f0d7f llc_add_pack +EXPORT_SYMBOL net/llc/llc 0xe9e2b18a llc_set_station_handler +EXPORT_SYMBOL net/llc/llc 0xfea772d0 llc_build_and_send_ui_pkt +EXPORT_SYMBOL net/mac80211/mac80211 0x0159a109 ieee80211_sta_ps_transition +EXPORT_SYMBOL net/mac80211/mac80211 0x01b35d86 ieee80211_queue_stopped +EXPORT_SYMBOL net/mac80211/mac80211 0x01ee63f7 __ieee80211_get_assoc_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0x0bd609f2 ieee80211_get_key_tx_seq +EXPORT_SYMBOL net/mac80211/mac80211 0x1239073a ieee80211_disable_rssi_reports +EXPORT_SYMBOL net/mac80211/mac80211 0x1654fc93 ieee80211_beacon_get_tim +EXPORT_SYMBOL net/mac80211/mac80211 0x18a088a4 ieee80211_chswitch_done +EXPORT_SYMBOL net/mac80211/mac80211 0x19d9c755 ieee80211_reserve_tid +EXPORT_SYMBOL net/mac80211/mac80211 0x1b0db5e6 ieee80211_stop_rx_ba_session_offl +EXPORT_SYMBOL net/mac80211/mac80211 0x1cece9ab ieee80211_probereq_get +EXPORT_SYMBOL net/mac80211/mac80211 0x1eb9385c ieee80211_iter_keys +EXPORT_SYMBOL net/mac80211/mac80211 0x1f51984a __ieee80211_create_tpt_led_trigger +EXPORT_SYMBOL net/mac80211/mac80211 0x1f742e78 ieee80211_unreserve_tid +EXPORT_SYMBOL net/mac80211/mac80211 0x21940299 ieee80211_tx_prepare_skb +EXPORT_SYMBOL net/mac80211/mac80211 0x22650bee ieee80211_ctstoself_duration +EXPORT_SYMBOL net/mac80211/mac80211 0x24a4e3bb ieee80211_stop_rx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0x36950407 ieee80211_scan_completed +EXPORT_SYMBOL net/mac80211/mac80211 0x396b0357 ieee80211_sta_eosp +EXPORT_SYMBOL net/mac80211/mac80211 0x3dc03700 ieee80211_beacon_get_template +EXPORT_SYMBOL net/mac80211/mac80211 0x3f8a0778 ieee80211_tx_status_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0x4070bbf7 ieee80211_restart_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x419c0202 ieee80211_get_tkip_p1k_iv +EXPORT_SYMBOL net/mac80211/mac80211 0x42ef94dd ieee80211_rx_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0x4bf15132 ieee80211_proberesp_get +EXPORT_SYMBOL net/mac80211/mac80211 0x4c2b011a ieee80211_get_tkip_rx_p1k +EXPORT_SYMBOL net/mac80211/mac80211 0x4d080899 ieee80211_beacon_loss +EXPORT_SYMBOL net/mac80211/mac80211 0x4fa4c028 ieee80211_cqm_rssi_notify +EXPORT_SYMBOL net/mac80211/mac80211 0x55f97e4f ieee80211_get_key_rx_seq +EXPORT_SYMBOL net/mac80211/mac80211 0x5d43be62 __ieee80211_get_radio_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0x5f24499e ieee80211_generic_frame_duration +EXPORT_SYMBOL net/mac80211/mac80211 0x61f38e0a ieee80211_get_tx_rates +EXPORT_SYMBOL net/mac80211/mac80211 0x626d4a36 ieee80211_start_tx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0x63dee423 ieee80211_free_txskb +EXPORT_SYMBOL net/mac80211/mac80211 0x65b644dd __ieee80211_get_tx_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0x6aaaf41b ieee80211_sta_set_buffered +EXPORT_SYMBOL net/mac80211/mac80211 0x6b31bf7c ieee80211_rate_control_register +EXPORT_SYMBOL net/mac80211/mac80211 0x73eff7be ieee80211_get_tkip_p2k +EXPORT_SYMBOL net/mac80211/mac80211 0x741b8876 ieee80211_tx_dequeue +EXPORT_SYMBOL net/mac80211/mac80211 0x744b544e ieee80211_connection_loss +EXPORT_SYMBOL net/mac80211/mac80211 0x752b0710 ieee80211_enable_rssi_reports +EXPORT_SYMBOL net/mac80211/mac80211 0x769b20f3 ieee80211_nullfunc_get +EXPORT_SYMBOL net/mac80211/mac80211 0x77ea65c4 ieee80211_update_p2p_noa +EXPORT_SYMBOL net/mac80211/mac80211 0x7c827dec ieee80211_wake_queue +EXPORT_SYMBOL net/mac80211/mac80211 0x7ded8953 ieee80211_radar_detected +EXPORT_SYMBOL net/mac80211/mac80211 0x7efd47b9 wiphy_to_ieee80211_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x80e1a932 ieee80211_ap_probereq_get +EXPORT_SYMBOL net/mac80211/mac80211 0x82bf63c1 ieee80211_rts_duration +EXPORT_SYMBOL net/mac80211/mac80211 0x88169918 ieee80211_queue_delayed_work +EXPORT_SYMBOL net/mac80211/mac80211 0x89801ec8 ieee80211_send_bar +EXPORT_SYMBOL net/mac80211/mac80211 0x8bd5fe25 ieee80211_start_tx_ba_cb_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0x8bea1d1c ieee80211_report_wowlan_wakeup +EXPORT_SYMBOL net/mac80211/mac80211 0x95253e6f ieee80211_stop_queues +EXPORT_SYMBOL net/mac80211/mac80211 0x962bdde8 ieee80211_aes_cmac_calculate_k1_k2 +EXPORT_SYMBOL net/mac80211/mac80211 0x968eabbe ieee80211_wake_queues +EXPORT_SYMBOL net/mac80211/mac80211 0x9b914b41 ieee80211_stop_tx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0x9e4fc0dd ieee80211_start_rx_ba_session_offl +EXPORT_SYMBOL net/mac80211/mac80211 0xa0f96ba8 ieee80211_rate_control_unregister +EXPORT_SYMBOL net/mac80211/mac80211 0xa9ac3d3e ieee80211_sched_scan_results +EXPORT_SYMBOL net/mac80211/mac80211 0xb23432bf ieee80211_tx_status +EXPORT_SYMBOL net/mac80211/mac80211 0xb8d6c2d0 ieee80211_sta_block_awake +EXPORT_SYMBOL net/mac80211/mac80211 0xbc498424 ieee80211_pspoll_get +EXPORT_SYMBOL net/mac80211/mac80211 0xbc89dbd1 ieee80211_stop_queue +EXPORT_SYMBOL net/mac80211/mac80211 0xbd5e04c3 ieee80211_csa_is_complete +EXPORT_SYMBOL net/mac80211/mac80211 0xc072751d ieee80211_ctstoself_get +EXPORT_SYMBOL net/mac80211/mac80211 0xc3306cba ieee80211_queue_work +EXPORT_SYMBOL net/mac80211/mac80211 0xc520b648 ieee80211_cqm_beacon_loss_notify +EXPORT_SYMBOL net/mac80211/mac80211 0xcbfe1d0c ieee80211_tdls_oper_request +EXPORT_SYMBOL net/mac80211/mac80211 0xcc770654 ieee80211_stop_tx_ba_cb_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0xd72625cb ieee80211_parse_p2p_noa +EXPORT_SYMBOL net/mac80211/mac80211 0xda9b9266 rate_control_set_rates +EXPORT_SYMBOL net/mac80211/mac80211 0xddf11685 ieee80211_unregister_hw +EXPORT_SYMBOL net/mac80211/mac80211 0xdec2cbfc ieee80211_tx_status_noskb +EXPORT_SYMBOL net/mac80211/mac80211 0xe2815ada ieee80211_free_hw +EXPORT_SYMBOL net/mac80211/mac80211 0xe9993937 __ieee80211_get_rx_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0xeadc4340 ieee80211_find_sta +EXPORT_SYMBOL net/mac80211/mac80211 0xeb389a10 ieee80211_rts_get +EXPORT_SYMBOL net/mac80211/mac80211 0xeb9ce109 ieee80211_report_low_ack +EXPORT_SYMBOL net/mac80211/mac80211 0xec6a166d ieee80211_get_buffered_bc +EXPORT_SYMBOL net/mac80211/mac80211 0xec97a1f6 ieee80211_csa_finish +EXPORT_SYMBOL net/mac80211/mac80211 0xee233b32 ieee80211_csa_update_counter +EXPORT_SYMBOL net/mac80211/mac80211 0xef0f6db0 rate_control_send_low +EXPORT_SYMBOL net/mac80211/mac80211 0xf12b32f4 ieee80211_register_hw +EXPORT_SYMBOL net/mac80211/mac80211 0xf6b06f8e ieee80211_alloc_hw_nm +EXPORT_SYMBOL net/mac80211/mac80211 0xfcfa6a78 ieee80211_sched_scan_stopped +EXPORT_SYMBOL net/mac80211/mac80211 0xffbd6739 ieee80211_rx +EXPORT_SYMBOL net/mac802154/mac802154 0x062eb428 ieee802154_free_hw +EXPORT_SYMBOL net/mac802154/mac802154 0x105537db ieee802154_wake_queue +EXPORT_SYMBOL net/mac802154/mac802154 0x3c6735d5 ieee802154_alloc_hw +EXPORT_SYMBOL net/mac802154/mac802154 0x632c69fd ieee802154_xmit_complete +EXPORT_SYMBOL net/mac802154/mac802154 0x9ccf547f ieee802154_register_hw +EXPORT_SYMBOL net/mac802154/mac802154 0xa5cebf9e ieee802154_unregister_hw +EXPORT_SYMBOL net/mac802154/mac802154 0xab2a9651 ieee802154_rx +EXPORT_SYMBOL net/mac802154/mac802154 0xdea24434 ieee802154_stop_queue +EXPORT_SYMBOL net/mac802154/mac802154 0xff3ece0d ieee802154_rx_irqsafe +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x026c7711 ip_vs_nfct_expect_related +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x0822aca9 ip_vs_tcp_conn_listen +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x25cdf7b1 ip_vs_conn_in_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x2640e8d2 ip_vs_scheduler_err +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x2ea0ef58 register_ip_vs_scheduler +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x518e2be9 register_ip_vs_app_inc +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x8aac062d ip_vs_conn_put +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x8b1b5445 unregister_ip_vs_app +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x8c7297eb unregister_ip_vs_scheduler +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x9ce58227 ip_vs_conn_out_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xa530c672 ip_vs_proto_data_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xb2b5a6b9 ip_vs_conn_new +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xb463e5fe ip_vs_proto_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xd831a1a2 ip_vs_proto_name +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xe8e0b371 register_ip_vs_app +EXPORT_SYMBOL net/netfilter/nf_conntrack 0x6ee2c6b4 nf_conntrack_untracked +EXPORT_SYMBOL net/netfilter/nf_conntrack 0x765b5a4a __nf_ct_ext_add_length +EXPORT_SYMBOL net/netfilter/nf_conntrack 0x93010320 __nf_ct_ext_destroy +EXPORT_SYMBOL net/netfilter/nf_conntrack_pptp 0x827cc6a1 pptp_msg_name +EXPORT_SYMBOL net/netfilter/nf_nat 0x87c2b9e3 nf_nat_used_tuple +EXPORT_SYMBOL net/netfilter/nf_nat 0x9e480f84 nf_nat_follow_master +EXPORT_SYMBOL net/netfilter/nf_nat 0xc5ada3f8 nf_xfrm_me_harder +EXPORT_SYMBOL net/netfilter/nf_nat 0xcf9d4c0c __nf_nat_mangle_tcp_packet +EXPORT_SYMBOL net/netfilter/nf_nat 0xf32753ef nf_nat_setup_info +EXPORT_SYMBOL net/netfilter/nf_nat 0xf4c5e7eb nf_nat_mangle_udp_packet +EXPORT_SYMBOL net/netfilter/x_tables 0x17e6d699 xt_unregister_target +EXPORT_SYMBOL net/netfilter/x_tables 0x253e8b44 xt_compat_init_offsets +EXPORT_SYMBOL net/netfilter/x_tables 0x28a93391 xt_unregister_match +EXPORT_SYMBOL net/netfilter/x_tables 0x2faf71a5 xt_register_matches +EXPORT_SYMBOL net/netfilter/x_tables 0x482d26fd xt_alloc_table_info +EXPORT_SYMBOL net/netfilter/x_tables 0x69a4f96c xt_register_target +EXPORT_SYMBOL net/netfilter/x_tables 0x6ffaf9cf xt_register_targets +EXPORT_SYMBOL net/netfilter/x_tables 0x9a09cb4b xt_find_target +EXPORT_SYMBOL net/netfilter/x_tables 0xaab0c45f xt_unregister_targets +EXPORT_SYMBOL net/netfilter/x_tables 0xc2907683 xt_register_match +EXPORT_SYMBOL net/netfilter/x_tables 0xd1a21986 xt_free_table_info +EXPORT_SYMBOL net/netfilter/x_tables 0xda4e8f7d xt_find_match +EXPORT_SYMBOL net/netfilter/x_tables 0xdfa95f1d xt_unregister_matches +EXPORT_SYMBOL net/nfc/hci/hci 0x01519d5f nfc_hci_reset_pipes +EXPORT_SYMBOL net/nfc/hci/hci 0x06b1ea00 nfc_hci_register_device +EXPORT_SYMBOL net/nfc/hci/hci 0x351541f3 nfc_hci_get_clientdata +EXPORT_SYMBOL net/nfc/hci/hci 0x3ae4e801 nfc_hci_set_param +EXPORT_SYMBOL net/nfc/hci/hci 0x43028a27 nfc_hci_result_to_errno +EXPORT_SYMBOL net/nfc/hci/hci 0x48262b6b nfc_hci_target_discovered +EXPORT_SYMBOL net/nfc/hci/hci 0x7025e5c2 nfc_hci_unregister_device +EXPORT_SYMBOL net/nfc/hci/hci 0x83003e4a nfc_hci_recv_frame +EXPORT_SYMBOL net/nfc/hci/hci 0x87457932 nfc_hci_set_clientdata +EXPORT_SYMBOL net/nfc/hci/hci 0x88ca5493 nfc_hci_connect_gate +EXPORT_SYMBOL net/nfc/hci/hci 0x8b07102d nfc_hci_free_device +EXPORT_SYMBOL net/nfc/hci/hci 0x935f9b6d nfc_hci_send_cmd_async +EXPORT_SYMBOL net/nfc/hci/hci 0xb777d9fb nfc_hci_send_event +EXPORT_SYMBOL net/nfc/hci/hci 0xb81ae14f nfc_hci_reset_pipes_per_host +EXPORT_SYMBOL net/nfc/hci/hci 0xbca0b4fd nfc_hci_sak_to_protocol +EXPORT_SYMBOL net/nfc/hci/hci 0xbeed4b2d nfc_hci_get_param +EXPORT_SYMBOL net/nfc/hci/hci 0xd2135bf6 nfc_hci_allocate_device +EXPORT_SYMBOL net/nfc/hci/hci 0xd3fc977d nfc_hci_driver_failure +EXPORT_SYMBOL net/nfc/hci/hci 0xdaf03d89 nfc_hci_disconnect_all_gates +EXPORT_SYMBOL net/nfc/hci/hci 0xe628e7b1 nfc_hci_send_cmd +EXPORT_SYMBOL net/nfc/hci/hci 0xe8930a60 nfc_hci_disconnect_gate +EXPORT_SYMBOL net/nfc/nci/nci 0x0285f116 nci_unregister_device +EXPORT_SYMBOL net/nfc/nci/nci 0x04cb7198 nci_hci_connect_gate +EXPORT_SYMBOL net/nfc/nci/nci 0x158ffbcb nci_hci_send_event +EXPORT_SYMBOL net/nfc/nci/nci 0x16e72cb4 nci_prop_cmd +EXPORT_SYMBOL net/nfc/nci/nci 0x1a89b8ed nci_hci_set_param +EXPORT_SYMBOL net/nfc/nci/nci 0x2df865e0 nci_register_device +EXPORT_SYMBOL net/nfc/nci/nci 0x339af983 nci_set_config +EXPORT_SYMBOL net/nfc/nci/nci 0x4c84f24c nci_core_conn_create +EXPORT_SYMBOL net/nfc/nci/nci 0x4f3da5c7 nci_recv_frame +EXPORT_SYMBOL net/nfc/nci/nci 0x70355d7d nci_nfcee_discover +EXPORT_SYMBOL net/nfc/nci/nci 0x809fe54c nci_hci_send_cmd +EXPORT_SYMBOL net/nfc/nci/nci 0x91ea9c32 nci_core_conn_close +EXPORT_SYMBOL net/nfc/nci/nci 0x9d6a5121 nci_hci_dev_session_init +EXPORT_SYMBOL net/nfc/nci/nci 0xa1f067ca nci_free_device +EXPORT_SYMBOL net/nfc/nci/nci 0xa982e854 nci_hci_get_param +EXPORT_SYMBOL net/nfc/nci/nci 0xb52416f8 nci_allocate_device +EXPORT_SYMBOL net/nfc/nci/nci 0xba490602 nci_to_errno +EXPORT_SYMBOL net/nfc/nci/nci 0xbfd960fd nci_hci_open_pipe +EXPORT_SYMBOL net/nfc/nci/nci 0xd0e4faef nci_nfcee_mode_set +EXPORT_SYMBOL net/nfc/nci/nci 0xd44e8def nci_req_complete +EXPORT_SYMBOL net/nfc/nfc 0x21213f7e nfc_proto_register +EXPORT_SYMBOL net/nfc/nfc 0x222d9e14 nfc_tm_data_received +EXPORT_SYMBOL net/nfc/nfc 0x338db5b8 nfc_class +EXPORT_SYMBOL net/nfc/nfc 0x3d5f1dcd nfc_find_se +EXPORT_SYMBOL net/nfc/nfc 0x3f354b67 nfc_target_lost +EXPORT_SYMBOL net/nfc/nfc 0x4cd09759 nfc_dep_link_is_up +EXPORT_SYMBOL net/nfc/nfc 0x535684c0 nfc_add_se +EXPORT_SYMBOL net/nfc/nfc 0x7416d261 nfc_get_local_general_bytes +EXPORT_SYMBOL net/nfc/nfc 0x788ea43e nfc_driver_failure +EXPORT_SYMBOL net/nfc/nfc 0x80bfcc01 nfc_remove_se +EXPORT_SYMBOL net/nfc/nfc 0x90d054a6 nfc_alloc_recv_skb +EXPORT_SYMBOL net/nfc/nfc 0x93135b45 nfc_send_to_raw_sock +EXPORT_SYMBOL net/nfc/nfc 0xb3341966 nfc_fw_download_done +EXPORT_SYMBOL net/nfc/nfc 0xb78ec33c nfc_unregister_device +EXPORT_SYMBOL net/nfc/nfc 0xc54dd31a nfc_tm_activated +EXPORT_SYMBOL net/nfc/nfc 0xc67ef6ff nfc_targets_found +EXPORT_SYMBOL net/nfc/nfc 0xc8221e98 nfc_allocate_device +EXPORT_SYMBOL net/nfc/nfc 0xd3a29021 nfc_tm_deactivated +EXPORT_SYMBOL net/nfc/nfc 0xdcbdb47e nfc_proto_unregister +EXPORT_SYMBOL net/nfc/nfc 0xde13ec26 nfc_set_remote_general_bytes +EXPORT_SYMBOL net/nfc/nfc 0xf12f2e74 nfc_register_device +EXPORT_SYMBOL net/nfc/nfc 0xf1efae2f nfc_se_transaction +EXPORT_SYMBOL net/nfc/nfc_digital 0x1d5240cc nfc_digital_free_device +EXPORT_SYMBOL net/nfc/nfc_digital 0x37950a69 nfc_digital_allocate_device +EXPORT_SYMBOL net/nfc/nfc_digital 0x43ea6eaa nfc_digital_register_device +EXPORT_SYMBOL net/nfc/nfc_digital 0x7ba54adc nfc_digital_unregister_device +EXPORT_SYMBOL net/phonet/phonet 0x0fd5e892 pn_sock_hash +EXPORT_SYMBOL net/phonet/phonet 0x47c3fc46 phonet_header_ops +EXPORT_SYMBOL net/phonet/phonet 0x5e566904 phonet_stream_ops +EXPORT_SYMBOL net/phonet/phonet 0x797fb103 pn_sock_unhash +EXPORT_SYMBOL net/phonet/phonet 0x7cf5edef pn_skb_send +EXPORT_SYMBOL net/phonet/phonet 0x9706b3f2 phonet_proto_unregister +EXPORT_SYMBOL net/phonet/phonet 0x9969ba09 pn_sock_get_port +EXPORT_SYMBOL net/phonet/phonet 0xb6899bce phonet_proto_register +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x10375e0d rxrpc_kernel_get_error_number +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x2f9677ce rxrpc_get_server_data_key +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x3fd1d5c8 rxrpc_kernel_free_skb +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x470205da rxrpc_kernel_reject_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x48705953 rxrpc_kernel_abort_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x7fffc308 rxrpc_kernel_get_abort_code +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x9b1c100a rxrpc_kernel_send_data +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xa0cddfda key_type_rxrpc +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xa7b4e665 rxrpc_kernel_data_delivered +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xb5adba37 rxrpc_kernel_begin_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xb690ab58 rxrpc_get_null_key +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xcc62ae0b rxrpc_kernel_intercept_rx_messages +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xe599fbd9 rxrpc_kernel_accept_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xf76953b6 rxrpc_kernel_is_data_last +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xf9f4aae4 rxrpc_kernel_end_call +EXPORT_SYMBOL net/sctp/sctp 0x8e47ddc8 sctp_do_peeloff +EXPORT_SYMBOL net/sunrpc/auth_gss/auth_rpcgss 0x22dbaa2f gss_pseudoflavor_to_service +EXPORT_SYMBOL net/sunrpc/auth_gss/auth_rpcgss 0x74d1c396 gss_mech_put +EXPORT_SYMBOL net/sunrpc/auth_gss/auth_rpcgss 0x95ed9e8b gss_mech_get +EXPORT_SYMBOL net/sunrpc/sunrpc 0x43514748 xdr_restrict_buflen +EXPORT_SYMBOL net/sunrpc/sunrpc 0xb88ddfa7 xdr_truncate_encode +EXPORT_SYMBOL net/sunrpc/sunrpc 0xc3a827ea svc_pool_stats_open +EXPORT_SYMBOL net/wimax/wimax 0x3b178d40 wimax_rfkill +EXPORT_SYMBOL net/wimax/wimax 0x7feb11a0 wimax_reset +EXPORT_SYMBOL net/wireless/cfg80211 0x010c4a8c cfg80211_stop_iface +EXPORT_SYMBOL net/wireless/cfg80211 0x017117ee cfg80211_roamed_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x01858804 cfg80211_chandef_dfs_required +EXPORT_SYMBOL net/wireless/cfg80211 0x03885d2f cfg80211_inform_bss_width +EXPORT_SYMBOL net/wireless/cfg80211 0x09c64fbd ieee80211_frequency_to_channel +EXPORT_SYMBOL net/wireless/cfg80211 0x0c20b758 cfg80211_cqm_pktloss_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x0d77880e cfg80211_put_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x0f8c2f83 cfg80211_scan_done +EXPORT_SYMBOL net/wireless/cfg80211 0x12d7a769 ieee80211_get_num_supported_channels +EXPORT_SYMBOL net/wireless/cfg80211 0x154bc853 wiphy_apply_custom_regulatory +EXPORT_SYMBOL net/wireless/cfg80211 0x1879fcbd bridge_tunnel_header +EXPORT_SYMBOL net/wireless/cfg80211 0x19e03378 cfg80211_get_p2p_attr +EXPORT_SYMBOL net/wireless/cfg80211 0x1bb6dc5a freq_reg_info +EXPORT_SYMBOL net/wireless/cfg80211 0x1ce7fc39 cfg80211_ch_switch_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x1d41ed5a cfg80211_cac_event +EXPORT_SYMBOL net/wireless/cfg80211 0x1d9d5e2e cfg80211_get_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x25f82539 cfg80211_ref_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x274fc065 cfg80211_iter_combinations +EXPORT_SYMBOL net/wireless/cfg80211 0x276f505e cfg80211_gtk_rekey_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x29354af1 cfg80211_assoc_timeout +EXPORT_SYMBOL net/wireless/cfg80211 0x2a7ce05a cfg80211_unregister_wdev +EXPORT_SYMBOL net/wireless/cfg80211 0x2c709be5 cfg80211_ch_switch_started_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x32d0fee8 cfg80211_radar_event +EXPORT_SYMBOL net/wireless/cfg80211 0x3a7c0af8 cfg80211_check_station_change +EXPORT_SYMBOL net/wireless/cfg80211 0x3d06ce72 cfg80211_ft_event +EXPORT_SYMBOL net/wireless/cfg80211 0x3d470c4d cfg80211_chandef_compatible +EXPORT_SYMBOL net/wireless/cfg80211 0x3e285fec cfg80211_chandef_valid +EXPORT_SYMBOL net/wireless/cfg80211 0x42e24f4c cfg80211_inform_bss_width_frame +EXPORT_SYMBOL net/wireless/cfg80211 0x439ba8e3 regulatory_set_wiphy_regd +EXPORT_SYMBOL net/wireless/cfg80211 0x460cf209 cfg80211_rx_unprot_mlme_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0x495457ff cfg80211_calculate_bitrate +EXPORT_SYMBOL net/wireless/cfg80211 0x4aadc970 cfg80211_connect_result +EXPORT_SYMBOL net/wireless/cfg80211 0x4b48764f cfg80211_sched_scan_stopped_rtnl +EXPORT_SYMBOL net/wireless/cfg80211 0x4e50449d cfg80211_report_wowlan_wakeup +EXPORT_SYMBOL net/wireless/cfg80211 0x4e736c92 wiphy_unregister +EXPORT_SYMBOL net/wireless/cfg80211 0x4f455313 wiphy_rfkill_set_hw_state +EXPORT_SYMBOL net/wireless/cfg80211 0x4f6a50e8 cfg80211_ready_on_channel +EXPORT_SYMBOL net/wireless/cfg80211 0x50214c28 ieee80211_bss_get_ie +EXPORT_SYMBOL net/wireless/cfg80211 0x512fa08d ieee80211_data_to_8023 +EXPORT_SYMBOL net/wireless/cfg80211 0x53dfae6d cfg80211_remain_on_channel_expired +EXPORT_SYMBOL net/wireless/cfg80211 0x56c11d32 cfg80211_disconnected +EXPORT_SYMBOL net/wireless/cfg80211 0x5f316ed4 ieee80211_amsdu_to_8023s +EXPORT_SYMBOL net/wireless/cfg80211 0x608918ad cfg80211_check_combinations +EXPORT_SYMBOL net/wireless/cfg80211 0x609814b5 cfg80211_crit_proto_stopped +EXPORT_SYMBOL net/wireless/cfg80211 0x6167952a cfg80211_sched_scan_results +EXPORT_SYMBOL net/wireless/cfg80211 0x61a30563 cfg80211_report_obss_beacon +EXPORT_SYMBOL net/wireless/cfg80211 0x6241104e wiphy_rfkill_start_polling +EXPORT_SYMBOL net/wireless/cfg80211 0x639de7db cfg80211_mgmt_tx_status +EXPORT_SYMBOL net/wireless/cfg80211 0x69b18f43 rfc1042_header +EXPORT_SYMBOL net/wireless/cfg80211 0x6a033086 cfg80211_chandef_usable +EXPORT_SYMBOL net/wireless/cfg80211 0x6d6cb9ad ieee80211_operating_class_to_band +EXPORT_SYMBOL net/wireless/cfg80211 0x718c5722 cfg80211_ibss_joined +EXPORT_SYMBOL net/wireless/cfg80211 0x7785cce3 __ieee80211_get_channel +EXPORT_SYMBOL net/wireless/cfg80211 0x78a3d3c2 ieee80211_get_hdrlen_from_skb +EXPORT_SYMBOL net/wireless/cfg80211 0x7a61dae5 wiphy_new_nm +EXPORT_SYMBOL net/wireless/cfg80211 0x7c8815c8 cfg80211_new_sta +EXPORT_SYMBOL net/wireless/cfg80211 0x7eca15f7 cfg80211_michael_mic_failure +EXPORT_SYMBOL net/wireless/cfg80211 0x7ef29c9e __cfg80211_send_event_skb +EXPORT_SYMBOL net/wireless/cfg80211 0x7ef39823 ieee80211_hdrlen +EXPORT_SYMBOL net/wireless/cfg80211 0x7fe1a403 cfg80211_find_ie +EXPORT_SYMBOL net/wireless/cfg80211 0x8492a430 ieee80211_get_response_rate +EXPORT_SYMBOL net/wireless/cfg80211 0x85d14810 cfg80211_rx_spurious_frame +EXPORT_SYMBOL net/wireless/cfg80211 0x8734ce25 cfg80211_unlink_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x898c88f1 cfg80211_tdls_oper_request +EXPORT_SYMBOL net/wireless/cfg80211 0x8a7062a5 ieee80211_mandatory_rates +EXPORT_SYMBOL net/wireless/cfg80211 0x8abd09b8 wiphy_rfkill_stop_polling +EXPORT_SYMBOL net/wireless/cfg80211 0x91904ee2 regulatory_hint +EXPORT_SYMBOL net/wireless/cfg80211 0x91d7a142 ieee80211_ie_split_ric +EXPORT_SYMBOL net/wireless/cfg80211 0x982e6b6d ieee80211_radiotap_iterator_init +EXPORT_SYMBOL net/wireless/cfg80211 0xa04d2527 wiphy_register +EXPORT_SYMBOL net/wireless/cfg80211 0xa1425906 ieee80211_channel_to_frequency +EXPORT_SYMBOL net/wireless/cfg80211 0xa197b1ff ieee80211_get_mesh_hdrlen +EXPORT_SYMBOL net/wireless/cfg80211 0xa44cc45f cfg80211_classify8021d +EXPORT_SYMBOL net/wireless/cfg80211 0xa6b0a133 ieee80211_data_from_8023 +EXPORT_SYMBOL net/wireless/cfg80211 0xa9e5af89 cfg80211_rx_unexpected_4addr_frame +EXPORT_SYMBOL net/wireless/cfg80211 0xab368ac3 cfg80211_rx_assoc_resp +EXPORT_SYMBOL net/wireless/cfg80211 0xb37a17c4 cfg80211_roamed +EXPORT_SYMBOL net/wireless/cfg80211 0xb508dd3a cfg80211_tx_mlme_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0xbcdaddd3 cfg80211_rx_mlme_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0xbe190454 cfg80211_cqm_txe_notify +EXPORT_SYMBOL net/wireless/cfg80211 0xc2e9cb1c cfg80211_get_station +EXPORT_SYMBOL net/wireless/cfg80211 0xc39ad822 cfg80211_probe_status +EXPORT_SYMBOL net/wireless/cfg80211 0xc63f1b81 ieee80211_radiotap_iterator_next +EXPORT_SYMBOL net/wireless/cfg80211 0xc82eda28 __cfg80211_alloc_reply_skb +EXPORT_SYMBOL net/wireless/cfg80211 0xc90fde22 ieee80211_chandef_to_operating_class +EXPORT_SYMBOL net/wireless/cfg80211 0xcd56e362 __cfg80211_alloc_event_skb +EXPORT_SYMBOL net/wireless/cfg80211 0xce6b3731 cfg80211_reg_can_beacon_relax +EXPORT_SYMBOL net/wireless/cfg80211 0xd50b0a22 ieee80211_ie_split +EXPORT_SYMBOL net/wireless/cfg80211 0xdba126c1 reg_initiator_name +EXPORT_SYMBOL net/wireless/cfg80211 0xdcf13260 cfg80211_sched_scan_stopped +EXPORT_SYMBOL net/wireless/cfg80211 0xde70f22d cfg80211_reg_can_beacon +EXPORT_SYMBOL net/wireless/cfg80211 0xe0e8517c wiphy_free +EXPORT_SYMBOL net/wireless/cfg80211 0xe128cf0e cfg80211_cqm_rssi_notify +EXPORT_SYMBOL net/wireless/cfg80211 0xe20ec880 cfg80211_pmksa_candidate_notify +EXPORT_SYMBOL net/wireless/cfg80211 0xe5211323 cfg80211_auth_timeout +EXPORT_SYMBOL net/wireless/cfg80211 0xe90cd4cf regulatory_set_wiphy_regd_sync_rtnl +EXPORT_SYMBOL net/wireless/cfg80211 0xea25812b cfg80211_del_sta_sinfo +EXPORT_SYMBOL net/wireless/cfg80211 0xedce46d2 cfg80211_rx_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0xefc56354 cfg80211_chandef_create +EXPORT_SYMBOL net/wireless/cfg80211 0xf16d8da8 cfg80211_conn_failed +EXPORT_SYMBOL net/wireless/cfg80211 0xf2e071f5 cfg80211_get_drvinfo +EXPORT_SYMBOL net/wireless/cfg80211 0xf74f8605 cfg80211_notify_new_peer_candidate +EXPORT_SYMBOL net/wireless/cfg80211 0xfed4d591 cfg80211_find_vendor_ie +EXPORT_SYMBOL net/wireless/cfg80211 0xff577424 cfg80211_cqm_beacon_loss_notify +EXPORT_SYMBOL net/wireless/lib80211 0x11a6942c lib80211_register_crypto_ops +EXPORT_SYMBOL net/wireless/lib80211 0x82a86e20 lib80211_get_crypto_ops +EXPORT_SYMBOL net/wireless/lib80211 0xa8fbda84 lib80211_crypt_info_init +EXPORT_SYMBOL net/wireless/lib80211 0xab1a5dd0 lib80211_crypt_info_free +EXPORT_SYMBOL net/wireless/lib80211 0xadbc1370 lib80211_unregister_crypto_ops +EXPORT_SYMBOL net/wireless/lib80211 0xcf5813a4 lib80211_crypt_delayed_deinit +EXPORT_SYMBOL sound/ac97_bus 0x46c12845 ac97_bus_type +EXPORT_SYMBOL sound/core/oss/snd-mixer-oss 0x13670084 snd_mixer_oss_ioctl_card +EXPORT_SYMBOL sound/core/seq/snd-seq 0x0de676f9 snd_seq_kernel_client_write_poll +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 0x566a5f5d snd_seq_kernel_client_enqueue_blocking +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 0x8f5ac38c 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 0xcac0a3be snd_seq_kernel_client_enqueue +EXPORT_SYMBOL sound/core/seq/snd-seq 0xcb68c8a2 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-device 0x091def1c snd_seq_autoload_exit +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0x370a0736 snd_seq_autoload_init +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0x41a0627a snd_seq_device_new +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0x6339b6d0 snd_seq_device_load_drivers +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 0xf0a1fdb3 snd_midi_process_event +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x205395a0 snd_midi_event_encode_byte +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x614705ff snd_midi_event_no_status +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x7746bb9b snd_midi_event_decode +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x79794472 snd_midi_event_new +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x991c0f60 snd_midi_event_reset_encode +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0xef8fa3d2 snd_midi_event_free +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0xf3f0324e snd_midi_event_reset_decode +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0xf6fdda44 snd_midi_event_encode +EXPORT_SYMBOL sound/core/seq/snd-seq-virmidi 0x82eeb2a7 snd_virmidi_new +EXPORT_SYMBOL sound/core/snd 0x03733466 snd_pci_quirk_lookup +EXPORT_SYMBOL sound/core/snd 0x0dd1229f snd_info_create_card_entry +EXPORT_SYMBOL sound/core/snd 0x10d0b434 snd_ctl_boolean_mono_info +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 0x1a11c678 snd_component_add +EXPORT_SYMBOL sound/core/snd 0x1a34bddc snd_jack_report +EXPORT_SYMBOL sound/core/snd 0x1c35d4e2 snd_ctl_rename_id +EXPORT_SYMBOL sound/core/snd 0x20348645 snd_jack_set_key +EXPORT_SYMBOL sound/core/snd 0x212c77ce snd_jack_add_new_kctl +EXPORT_SYMBOL sound/core/snd 0x23450eb1 snd_card_new +EXPORT_SYMBOL sound/core/snd 0x248af699 snd_info_create_module_entry +EXPORT_SYMBOL sound/core/snd 0x24a94b26 snd_info_get_line +EXPORT_SYMBOL sound/core/snd 0x278cdca3 snd_unregister_device +EXPORT_SYMBOL sound/core/snd 0x28e6eb3d snd_ctl_make_virtual_master +EXPORT_SYMBOL sound/core/snd 0x2ae3deaa release_and_free_resource +EXPORT_SYMBOL sound/core/snd 0x2b498185 snd_register_device +EXPORT_SYMBOL sound/core/snd 0x2cda7866 snd_mixer_oss_notify_callback +EXPORT_SYMBOL sound/core/snd 0x336194f5 snd_jack_set_parent +EXPORT_SYMBOL sound/core/snd 0x342a2354 copy_to_user_fromio +EXPORT_SYMBOL sound/core/snd 0x387b311b snd_ctl_notify +EXPORT_SYMBOL sound/core/snd 0x3971b4df snd_ecards_limit +EXPORT_SYMBOL sound/core/snd 0x40ddb20d snd_unregister_oss_device +EXPORT_SYMBOL sound/core/snd 0x42cbd9b5 snd_ctl_register_ioctl_compat +EXPORT_SYMBOL sound/core/snd 0x48a92c91 snd_register_oss_device +EXPORT_SYMBOL sound/core/snd 0x4a3ea5c0 snd_request_card +EXPORT_SYMBOL sound/core/snd 0x4afef27e snd_card_file_add +EXPORT_SYMBOL sound/core/snd 0x4fbc48b6 snd_ctl_find_id +EXPORT_SYMBOL sound/core/snd 0x513513d3 _snd_ctl_add_slave +EXPORT_SYMBOL sound/core/snd 0x591e064f snd_ctl_register_ioctl +EXPORT_SYMBOL sound/core/snd 0x5e0e62f6 snd_card_disconnect +EXPORT_SYMBOL sound/core/snd 0x5f285695 snd_device_register +EXPORT_SYMBOL sound/core/snd 0x6326ba02 snd_seq_root +EXPORT_SYMBOL sound/core/snd 0x686c168a snd_cards +EXPORT_SYMBOL sound/core/snd 0x68a2eb6e snd_power_wait +EXPORT_SYMBOL sound/core/snd 0x6988bbc4 snd_device_free +EXPORT_SYMBOL sound/core/snd 0x6e94356d snd_jack_new +EXPORT_SYMBOL sound/core/snd 0x6f7e5486 snd_ctl_unregister_ioctl_compat +EXPORT_SYMBOL sound/core/snd 0x70c15ac1 snd_dma_disable +EXPORT_SYMBOL sound/core/snd 0x7db738f2 snd_ctl_unregister_ioctl +EXPORT_SYMBOL sound/core/snd 0x81b69e41 snd_ctl_enum_info +EXPORT_SYMBOL sound/core/snd 0x8df3789f snd_oss_info_register +EXPORT_SYMBOL sound/core/snd 0x8f595b11 snd_major +EXPORT_SYMBOL sound/core/snd 0x9ac12e56 snd_ctl_add +EXPORT_SYMBOL sound/core/snd 0x9cadad6c snd_card_free +EXPORT_SYMBOL sound/core/snd 0x9df7ed33 snd_info_free_entry +EXPORT_SYMBOL sound/core/snd 0x9e6d79f8 snd_info_get_str +EXPORT_SYMBOL sound/core/snd 0xa0fd2427 snd_pci_quirk_lookup_id +EXPORT_SYMBOL sound/core/snd 0xa5430101 snd_ctl_remove_id +EXPORT_SYMBOL sound/core/snd 0xabbc9684 snd_ctl_remove +EXPORT_SYMBOL sound/core/snd 0xad3f2da2 snd_card_set_id +EXPORT_SYMBOL sound/core/snd 0xb2e5ae4a snd_lookup_minor_data +EXPORT_SYMBOL sound/core/snd 0xb9cd5200 snd_ctl_find_numid +EXPORT_SYMBOL sound/core/snd 0xbe2335ff snd_card_file_remove +EXPORT_SYMBOL sound/core/snd 0xc3c09875 snd_ctl_new1 +EXPORT_SYMBOL sound/core/snd 0xcf4025c1 snd_ctl_free_one +EXPORT_SYMBOL sound/core/snd 0xd14c11dd snd_ctl_replace +EXPORT_SYMBOL sound/core/snd 0xd69df019 snd_card_register +EXPORT_SYMBOL sound/core/snd 0xd8a0dcab snd_card_free_when_closed +EXPORT_SYMBOL sound/core/snd 0xdb108ef1 snd_device_new +EXPORT_SYMBOL sound/core/snd 0xe4d6aece snd_info_register +EXPORT_SYMBOL sound/core/snd 0xf719a66b snd_ctl_boolean_stereo_info +EXPORT_SYMBOL sound/core/snd 0xfffd89db copy_from_user_toio +EXPORT_SYMBOL sound/core/snd-hwdep 0x5c40e732 snd_hwdep_new +EXPORT_SYMBOL sound/core/snd-pcm 0x00cb289f snd_pcm_sgbuf_ops_page +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 0x06b310c9 snd_free_pages +EXPORT_SYMBOL sound/core/snd-pcm 0x0a6a55e4 snd_pcm_hw_rule_add +EXPORT_SYMBOL sound/core/snd-pcm 0x12bdc3ee snd_pcm_lib_free_vmalloc_buffer +EXPORT_SYMBOL sound/core/snd-pcm 0x1a1888c9 snd_pcm_lib_preallocate_pages_for_all +EXPORT_SYMBOL sound/core/snd-pcm 0x1cf21fa4 snd_pcm_hw_refine +EXPORT_SYMBOL sound/core/snd-pcm 0x1d027e4b snd_pcm_format_signed +EXPORT_SYMBOL sound/core/snd-pcm 0x1d27e00f snd_pcm_mmap_data +EXPORT_SYMBOL sound/core/snd-pcm 0x1e2e0b97 snd_pcm_new +EXPORT_SYMBOL sound/core/snd-pcm 0x223d3e14 snd_pcm_hw_constraint_step +EXPORT_SYMBOL sound/core/snd-pcm 0x243c6b7a snd_dma_free_pages +EXPORT_SYMBOL sound/core/snd-pcm 0x254ec7e5 snd_pcm_hw_constraint_ratnums +EXPORT_SYMBOL sound/core/snd-pcm 0x2e1ee430 snd_pcm_lib_read +EXPORT_SYMBOL sound/core/snd-pcm 0x337c2747 snd_pcm_hw_param_first +EXPORT_SYMBOL sound/core/snd-pcm 0x37031c25 snd_pcm_lib_preallocate_pages +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 0x3b6ac28b snd_pcm_hw_rule_noresample +EXPORT_SYMBOL sound/core/snd-pcm 0x3c75042f snd_pcm_stop +EXPORT_SYMBOL sound/core/snd-pcm 0x42e6bd16 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 0x52e3e4a5 snd_pcm_hw_param_value +EXPORT_SYMBOL sound/core/snd-pcm 0x5898dcba snd_malloc_pages +EXPORT_SYMBOL sound/core/snd-pcm 0x5d5287fe snd_pcm_lib_ioctl +EXPORT_SYMBOL sound/core/snd-pcm 0x5d7344f1 snd_pcm_hw_constraint_msbits +EXPORT_SYMBOL sound/core/snd-pcm 0x5e7f4920 snd_pcm_format_set_silence +EXPORT_SYMBOL sound/core/snd-pcm 0x60a60b05 snd_pcm_hw_constraint_ratdens +EXPORT_SYMBOL sound/core/snd-pcm 0x650f8603 snd_pcm_format_silence_64 +EXPORT_SYMBOL sound/core/snd-pcm 0x671f3b9b snd_pcm_set_ops +EXPORT_SYMBOL sound/core/snd-pcm 0x68a24153 snd_pcm_format_physical_width +EXPORT_SYMBOL sound/core/snd-pcm 0x6ef8fcd8 snd_pcm_format_linear +EXPORT_SYMBOL sound/core/snd-pcm 0x7332e068 snd_dma_alloc_pages_fallback +EXPORT_SYMBOL sound/core/snd-pcm 0x7955d78c snd_pcm_lib_free_pages +EXPORT_SYMBOL sound/core/snd-pcm 0x7fe326a7 _snd_pcm_lib_alloc_vmalloc_buffer +EXPORT_SYMBOL sound/core/snd-pcm 0x834dc955 snd_pcm_format_size +EXPORT_SYMBOL sound/core/snd-pcm 0x89a52b1a snd_pcm_suspend_all +EXPORT_SYMBOL sound/core/snd-pcm 0x8d5f4904 snd_pcm_kernel_ioctl +EXPORT_SYMBOL sound/core/snd-pcm 0x8d7467b8 snd_pcm_lib_writev +EXPORT_SYMBOL sound/core/snd-pcm 0x94098ff8 snd_interval_list +EXPORT_SYMBOL sound/core/snd-pcm 0x95ad2b39 snd_pcm_notify +EXPORT_SYMBOL sound/core/snd-pcm 0x95f5fef9 snd_pcm_lib_write +EXPORT_SYMBOL sound/core/snd-pcm 0x9b8f1ab3 snd_pcm_lib_readv +EXPORT_SYMBOL sound/core/snd-pcm 0xa40ec25e snd_pcm_lib_mmap_iomem +EXPORT_SYMBOL sound/core/snd-pcm 0xa440d3b3 snd_pcm_hw_constraint_integer +EXPORT_SYMBOL sound/core/snd-pcm 0xa61aa028 snd_pcm_format_unsigned +EXPORT_SYMBOL sound/core/snd-pcm 0xac9727e1 snd_pcm_release_substream +EXPORT_SYMBOL sound/core/snd-pcm 0xadee2d0a snd_pcm_open_substream +EXPORT_SYMBOL sound/core/snd-pcm 0xb6c07b3d snd_pcm_hw_constraint_pow2 +EXPORT_SYMBOL sound/core/snd-pcm 0xb9638db4 snd_pcm_rate_to_rate_bit +EXPORT_SYMBOL sound/core/snd-pcm 0xba65e5de snd_pcm_hw_constraint_mask64 +EXPORT_SYMBOL sound/core/snd-pcm 0xc2988067 snd_pcm_lib_get_vmalloc_page +EXPORT_SYMBOL sound/core/snd-pcm 0xca34c226 snd_sgbuf_get_chunk_size +EXPORT_SYMBOL sound/core/snd-pcm 0xca65cb1e snd_pcm_suspend +EXPORT_SYMBOL sound/core/snd-pcm 0xcbe7dfa7 snd_pcm_hw_constraint_ranges +EXPORT_SYMBOL sound/core/snd-pcm 0xcd669625 snd_pcm_hw_constraint_minmax +EXPORT_SYMBOL sound/core/snd-pcm 0xd21928cc snd_pcm_lib_malloc_pages +EXPORT_SYMBOL sound/core/snd-pcm 0xd2e1e66f snd_pcm_hw_constraint_list +EXPORT_SYMBOL sound/core/snd-pcm 0xdd2a69a9 snd_pcm_set_sync +EXPORT_SYMBOL sound/core/snd-pcm 0xde35c337 snd_pcm_limit_hw_rates +EXPORT_SYMBOL sound/core/snd-pcm 0xe35ed8df snd_dma_alloc_pages +EXPORT_SYMBOL sound/core/snd-pcm 0xe56a9336 snd_pcm_format_width +EXPORT_SYMBOL sound/core/snd-pcm 0xee04a8c7 snd_pcm_lib_preallocate_free_for_all +EXPORT_SYMBOL sound/core/snd-pcm 0xf1f04764 snd_pcm_new_internal +EXPORT_SYMBOL sound/core/snd-pcm 0xf3797152 snd_interval_ratnum +EXPORT_SYMBOL sound/core/snd-pcm 0xf63bb0e7 snd_pcm_new_stream +EXPORT_SYMBOL sound/core/snd-pcm 0xf759eccb snd_pcm_period_elapsed +EXPORT_SYMBOL sound/core/snd-pcm 0xff6104d0 snd_pcm_rate_bit_to_rate +EXPORT_SYMBOL sound/core/snd-rawmidi 0x1837ff08 snd_rawmidi_drop_output +EXPORT_SYMBOL sound/core/snd-rawmidi 0x292ab7ee snd_rawmidi_transmit_empty +EXPORT_SYMBOL sound/core/snd-rawmidi 0x38ad4091 snd_rawmidi_kernel_write +EXPORT_SYMBOL sound/core/snd-rawmidi 0x52c964b6 snd_rawmidi_transmit_peek +EXPORT_SYMBOL sound/core/snd-rawmidi 0x5b7e0624 snd_rawmidi_transmit +EXPORT_SYMBOL sound/core/snd-rawmidi 0x6cc6bc54 snd_rawmidi_new +EXPORT_SYMBOL sound/core/snd-rawmidi 0x74bce39d snd_rawmidi_drain_input +EXPORT_SYMBOL sound/core/snd-rawmidi 0x8691e7a4 snd_rawmidi_kernel_read +EXPORT_SYMBOL sound/core/snd-rawmidi 0x93487261 snd_rawmidi_drain_output +EXPORT_SYMBOL sound/core/snd-rawmidi 0x977c8804 snd_rawmidi_set_ops +EXPORT_SYMBOL sound/core/snd-rawmidi 0xa0e056b9 snd_rawmidi_output_params +EXPORT_SYMBOL sound/core/snd-rawmidi 0xafaefc86 snd_rawmidi_kernel_open +EXPORT_SYMBOL sound/core/snd-rawmidi 0xb489a267 snd_rawmidi_transmit_ack +EXPORT_SYMBOL sound/core/snd-rawmidi 0xd0729a5d snd_rawmidi_info_select +EXPORT_SYMBOL sound/core/snd-rawmidi 0xd66f83d2 snd_rawmidi_kernel_release +EXPORT_SYMBOL sound/core/snd-rawmidi 0xd90466ce snd_rawmidi_input_params +EXPORT_SYMBOL sound/core/snd-rawmidi 0xfa11a21d snd_rawmidi_receive +EXPORT_SYMBOL sound/core/snd-timer 0x07a0f86e snd_timer_open +EXPORT_SYMBOL sound/core/snd-timer 0x50d6e20a snd_timer_notify +EXPORT_SYMBOL sound/core/snd-timer 0x583ea73d snd_timer_interrupt +EXPORT_SYMBOL sound/core/snd-timer 0x5a69e157 snd_timer_pause +EXPORT_SYMBOL sound/core/snd-timer 0x5ac7ca4f snd_timer_start +EXPORT_SYMBOL sound/core/snd-timer 0x64c68e87 snd_timer_continue +EXPORT_SYMBOL sound/core/snd-timer 0x737c4477 snd_timer_global_free +EXPORT_SYMBOL sound/core/snd-timer 0x9fb505dd snd_timer_close +EXPORT_SYMBOL sound/core/snd-timer 0xa0382f7d snd_timer_global_new +EXPORT_SYMBOL sound/core/snd-timer 0xab9de18f snd_timer_new +EXPORT_SYMBOL sound/core/snd-timer 0xd74d8ce4 snd_timer_stop +EXPORT_SYMBOL sound/core/snd-timer 0xd925b705 snd_timer_global_register +EXPORT_SYMBOL sound/core/snd-timer 0xdeb929f0 snd_timer_resolution +EXPORT_SYMBOL sound/drivers/mpu401/snd-mpu401-uart 0x6d629c59 snd_mpu401_uart_interrupt_tx +EXPORT_SYMBOL sound/drivers/mpu401/snd-mpu401-uart 0x7229e35d 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 0x2751f8f9 snd_opl3_timer_new +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x44ec45d3 snd_opl3_new +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x674ee78b snd_opl3_load_patch +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xa634df6f snd_opl3_interrupt +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xa7ec889a snd_opl3_hwdep_new +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xb09974ca snd_opl3_create +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xcd652381 snd_opl3_find_patch +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xf2fb7cde snd_opl3_reset +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xfbd3b094 snd_opl3_init +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x0b488b76 snd_vx_dsp_boot +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x16d411a1 snd_vx_resume +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x226138b0 snd_vx_threaded_irq_handler +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x2591b820 snd_vx_free_firmware +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x5adfae32 snd_vx_setup_firmware +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x64ed5251 snd_vx_suspend +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x73f1766e snd_vx_load_boot_image +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x8da1d3b5 snd_vx_check_reg_bit +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xae3d363b snd_vx_dsp_load +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xaf5dee58 snd_vx_create +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xf1f04d23 snd_vx_irq_handler +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x1cae2020 cmp_connection_establish +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x20254e45 amdtp_syt_intervals +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x22898488 cmp_connection_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x280a7913 snd_fw_transaction +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x2871259b fw_iso_resources_update +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x31f48ac7 amdtp_stream_stop +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x3d0d8570 iso_packets_buffer_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x3f02f072 amdtp_stream_add_pcm_hw_constraints +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x48a8235a amdtp_stream_start +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x4b96bffa fw_iso_resources_allocate +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x532b2b01 amdtp_stream_update +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x53ca18e8 amdtp_rate_table +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x5405d6d8 amdtp_stream_set_parameters +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x66a567f6 fw_iso_resources_free +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x66b1569c amdtp_stream_pcm_prepare +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x6816787d iso_packets_buffer_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x6f1681aa fcp_bus_reset +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x7a6c61a4 cmp_connection_break +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x8424ed6e fw_iso_resources_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x98c16dc2 amdtp_stream_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xa9455c81 cmp_connection_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xaa9c0902 fcp_avc_transaction +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xaccaac57 avc_general_set_sig_fmt +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xadb5fc10 amdtp_stream_get_max_payload +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xbfffeb59 amdtp_stream_pcm_pointer +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xcfa30f0c amdtp_stream_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xe434620b amdtp_stream_pcm_abort +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xe45c161f avc_general_get_plug_info +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xe7877822 fw_iso_resources_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xea513442 cmp_connection_update +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xeeed4ff1 avc_general_get_sig_fmt +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xef21364c amdtp_stream_set_pcm_format +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xf69ed4e2 cmp_connection_check_used +EXPORT_SYMBOL sound/i2c/other/snd-ak4113 0x904ac81c snd_ak4113_resume +EXPORT_SYMBOL sound/i2c/other/snd-ak4113 0xb972edb9 snd_ak4113_suspend +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x09187856 snd_ak4114_reinit +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x1b153a06 snd_ak4114_build +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x4247089d snd_ak4114_external_rate +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x4cfc4a4a snd_ak4114_resume +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x6304999e snd_ak4114_create +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0xa8dc4199 snd_ak4114_reg_write +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0xbee17602 snd_ak4114_suspend +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0xc7e6025b snd_ak4114_check_rate_and_errors +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0x00b0ce65 snd_ak4117_reg_write +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0x2dcea5fb snd_ak4117_create +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0x6f08e5c2 snd_ak4117_build +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0x930c9964 snd_ak4117_external_rate +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0x949e3e22 snd_ak4117_check_rate_and_errors +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0xf0c10c46 snd_ak4117_reinit +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0x6b1f8e0e snd_akm4xxx_reset +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0x6bb2d219 snd_akm4xxx_write +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0x9315ec86 snd_akm4xxx_build_controls +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0xd3c09981 snd_akm4xxx_init +EXPORT_SYMBOL sound/i2c/other/snd-pt2258 0x1599b368 snd_pt2258_build_controls +EXPORT_SYMBOL sound/i2c/other/snd-pt2258 0x5fef2aae snd_pt2258_reset +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x4208574d snd_cs8427_init +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x6356f01e snd_cs8427_iec958_pcm +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x92b70acf snd_cs8427_iec958_build +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x9e597358 snd_cs8427_iec958_active +EXPORT_SYMBOL sound/i2c/snd-cs8427 0xd313ffa5 snd_cs8427_reg_write +EXPORT_SYMBOL sound/i2c/snd-cs8427 0xe29afeed snd_cs8427_create +EXPORT_SYMBOL sound/i2c/snd-i2c 0x1243ebbe snd_i2c_device_create +EXPORT_SYMBOL sound/i2c/snd-i2c 0x42b8a5b3 snd_i2c_device_free +EXPORT_SYMBOL sound/i2c/snd-i2c 0x7f59c3f0 snd_i2c_sendbytes +EXPORT_SYMBOL sound/i2c/snd-i2c 0x8779082a snd_i2c_readbytes +EXPORT_SYMBOL sound/i2c/snd-i2c 0xbe812e62 snd_i2c_bus_create +EXPORT_SYMBOL sound/i2c/snd-i2c 0xcecf7d71 snd_i2c_probeaddr +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x0082f253 snd_sbdsp_reset +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x00ebaf0d snd_sbmixer_resume +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x05a7994d snd_sbdsp_get_byte +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x108b912f snd_sbmixer_new +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x39fead95 snd_sbmixer_write +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x73d03896 snd_sbdsp_command +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x87978e02 snd_sbmixer_add_ctl +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0xac980b99 snd_sbmixer_read +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0xb378aaf1 snd_sbmixer_suspend +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0xe87428fd snd_sbdsp_create +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x00dd6d55 snd_ac97_write_cache +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x10c85f6b snd_ac97_update_bits +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x253074b8 snd_ac97_update +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x492aac96 snd_ac97_pcm_close +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x4a0868f5 snd_ac97_update_power +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x4ad59481 snd_ac97_set_rate +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x64de8711 snd_ac97_suspend +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x676fa11a snd_ac97_get_short_name +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x723f7f34 snd_ac97_bus +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x7980842c snd_ac97_pcm_open +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x876d2615 snd_ac97_write +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x9ee09c75 snd_ac97_pcm_double_rate_rules +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xbbd20472 snd_ac97_read +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xbd5f935f snd_ac97_resume +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xdec2ef0a snd_ac97_pcm_assign +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xe80640e5 snd_ac97_tune_hardware +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xfa055e75 snd_ac97_mixer +EXPORT_SYMBOL sound/pci/asihpi/snd-asihpi 0xc2956628 hpi_send_recv +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x11bc6e40 snd_emu10k1_synth_bzero +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x47b91dd4 snd_emu10k1_memblk_map +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x4b13af02 snd_emu10k1_synth_free +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xadf22fb5 snd_emu10k1_ptr_write +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xb5a1e137 snd_emu10k1_ptr_read +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xcf68d444 snd_emu10k1_synth_copy_from_user +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xf4627d19 snd_emu10k1_voice_free +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xf56c978f snd_emu10k1_voice_alloc +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xf9e475e6 snd_emu10k1_synth_alloc +EXPORT_SYMBOL sound/pci/ice1712/snd-ice17xx-ak4xxx 0x0d262bee snd_ice1712_akm4xxx_init +EXPORT_SYMBOL sound/pci/ice1712/snd-ice17xx-ak4xxx 0x1437aeca snd_ice1712_akm4xxx_build_controls +EXPORT_SYMBOL sound/pci/ice1712/snd-ice17xx-ak4xxx 0x474b7cb8 snd_ice1712_akm4xxx_free +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x076b9cc2 oxygen_pci_pm +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x11f6dfd4 oxygen_read16 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x3e6f4238 oxygen_write_i2c +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x3fcb9108 oxygen_pci_probe +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x55e334bd oxygen_write_spi +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x64bd5917 oxygen_reset_uart +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x663c9726 oxygen_write32 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x6f3577d6 oxygen_read8 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x7da48bfd oxygen_pci_shutdown +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x8261dc90 oxygen_read32 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x8950d954 oxygen_write8_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x9c31a55b oxygen_write16 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xa9b40a95 oxygen_write_ac97 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xaa2c415e oxygen_read_ac97 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xb0f00e01 oxygen_write8 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xc3190ff6 oxygen_write32_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xd0339ff6 oxygen_update_dac_routing +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xd596ac8d oxygen_write_uart +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xd8d07b00 oxygen_write16_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xe7ab97b8 oxygen_write_ac97_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xe7c64234 oxygen_pci_remove +EXPORT_SYMBOL sound/pci/trident/snd-trident 0x16d1de1e snd_trident_alloc_voice +EXPORT_SYMBOL sound/pci/trident/snd-trident 0x8720938b snd_trident_free_voice +EXPORT_SYMBOL sound/pci/trident/snd-trident 0xa0da20f2 snd_trident_start_voice +EXPORT_SYMBOL sound/pci/trident/snd-trident 0xb1d34195 snd_trident_stop_voice +EXPORT_SYMBOL sound/pci/trident/snd-trident 0xe72a58a8 snd_trident_write_voice_regs +EXPORT_SYMBOL sound/soc/codecs/snd-soc-tlv320aic23 0x7b8d34ba tlv320aic23_probe +EXPORT_SYMBOL sound/soc/codecs/snd-soc-tlv320aic23 0xb40d1bc6 tlv320aic23_regmap +EXPORT_SYMBOL sound/soc/intel/common/snd-soc-sst-dsp 0xa6c4fa40 sst_dma_new +EXPORT_SYMBOL sound/soc/intel/common/snd-soc-sst-dsp 0xdc045797 sst_dma_free +EXPORT_SYMBOL sound/soc/snd-soc-core 0xc7bd77dd snd_soc_alloc_ac97_codec +EXPORT_SYMBOL sound/soundcore 0x0706d9bb register_sound_midi +EXPORT_SYMBOL sound/soundcore 0x44d66035 register_sound_dsp +EXPORT_SYMBOL sound/soundcore 0x685dc552 register_sound_special_device +EXPORT_SYMBOL sound/soundcore 0x7afc9d8a unregister_sound_mixer +EXPORT_SYMBOL sound/soundcore 0x99c95fa5 unregister_sound_special +EXPORT_SYMBOL sound/soundcore 0x9f2b5ec7 register_sound_special +EXPORT_SYMBOL sound/soundcore 0xaab3c9ff register_sound_mixer +EXPORT_SYMBOL sound/soundcore 0xbd11ad2e sound_class +EXPORT_SYMBOL sound/soundcore 0xcd083b10 unregister_sound_dsp +EXPORT_SYMBOL sound/soundcore 0xfdab6de3 unregister_sound_midi +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x01e1c878 snd_emux_register +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x020894b9 snd_emux_free +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x4e160635 snd_emux_new +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x655cb202 snd_sf_linear_to_log +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x8222d4e8 snd_emux_unlock_voice +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0xa54b46df snd_emux_lock_voice +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0xadd3d2ac snd_emux_terminate_all +EXPORT_SYMBOL sound/synth/snd-util-mem 0x0bf0e6da __snd_util_mem_free +EXPORT_SYMBOL sound/synth/snd-util-mem 0x2ce4bb30 __snd_util_memblk_new +EXPORT_SYMBOL sound/synth/snd-util-mem 0x69739c5e snd_util_memhdr_new +EXPORT_SYMBOL sound/synth/snd-util-mem 0x8ad3d037 snd_util_mem_avail +EXPORT_SYMBOL sound/synth/snd-util-mem 0x927da667 snd_util_mem_alloc +EXPORT_SYMBOL sound/synth/snd-util-mem 0xba11a97c __snd_util_mem_alloc +EXPORT_SYMBOL sound/synth/snd-util-mem 0xc1882fed snd_util_mem_free +EXPORT_SYMBOL sound/synth/snd-util-mem 0xed19ea7a 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 0x664a9da6 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/vbox/vboxguest/vboxguest 0x00322056 VBoxGuest_RTMpCpuIdFromSetIndex +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x01674ab7 VBoxGuest_RTSemMutexRequestNoResume +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x0429a6f0 VBoxGuest_RTThreadCreate +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x057fd386 VBoxGuest_RTR0MemObjLockKernelTag +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x0731e88d VBoxGuest_RTAssertMsg2Add +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x079b132d VBoxGuest_RTMemTmpAllocTag +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x08ed98db VBoxGuest_RTMemDupExTag +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x09a88bc3 VBoxGuest_RTTimeExplode +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x0a442050 VBoxGuest_RTAssertAreQuiet +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x0b94344b VBoxGuest_g_pszRTAssertExpr +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x0beb235d VBoxGuest_RTMpIsCpuWorkPending +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x0cd1b64d VBoxGuest_RTMpCurSetIndex +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x0d10d1ca VBoxGuest_RTTimeNormalize +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x0f3e114a VBoxGuest_RTSemSpinMutexCreate +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x0f884b3a VBoxGuest_RTStrToInt64Ex +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x11ced39a VBoxGuest_RTSemEventWaitEx +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x11e95d2e VBoxGuest_RTLogLoggerEx +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x11f80121 VBoxGuest_RTSemMutexRelease +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x12614b82 VBoxGuest_RTStrToInt8Ex +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x12f430f3 VBoxGuest_RTAssertMsg2AddV +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x147206e1 VBoxGuest_RTStrToUInt64 +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x151752ec VBoxGuest_RTHeapSimpleGetFreeSize +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x1520b2c8 VBoxGuest_RTLogCreateEx +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x160b14d4 VBoxGuest_RTMpGetPresentSet +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x1926b25c VBoxGuest_RTLogRelLogger +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x19790b4c VBoxGuest_RTLogFlags +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x197acd65 VBoxGuest_RTR0Init +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x1a6d7d86 VBoxGuest_RTThreadPreemptIsEnabled +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x1ae28abb VBoxGuest_RTThreadIsSelfAlive +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x1c3b0f90 VBoxGuest_RTR0MemObjAddressR3 +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x1dc5ebbe VBoxGuest_RTThreadWaitNoResume +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x1f3e577b VBoxGuest_RTMemTmpAllocZTag +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x1f70d065 VBoxGuest_RTErrConvertToErrno +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x2003169b VBoxGuest_RTSpinlockAcquire +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x20728ae6 VBoxGuest_RTThreadCreateV +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x20d9d625 VBoxGuest_RTTimeToString +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x22058511 VBoxGuest_RTSemMutexRequestDebug +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x2254228b VBoxGuest_RTMpGetPresentCount +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x2387f039 VBoxGuest_RTMpIsCpuPresent +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x25219f5e VBoxGuest_RTR0Term +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x2580d04c VBoxGuest_RTSemEventMultiSignal +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x2632a013 VBoxGuest_RTLogRelLoggerV +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x29708cf0 VBoxGuest_RTR0MemUserCopyTo +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x2a2284fb VBoxGuest_RTAssertMayPanic +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x2af3453c VBoxGuest_RTLogPrintf +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x2c2b5b46 VBoxGuest_RTTimerGetSystemGranularity +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x2cfefa48 VBoxGuest_RTLogBackdoorPrintfV +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x2d445217 VBoxGuest_RTStrToInt64Full +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x2d581c06 VBoxGuest_RTMpCurSetIndexAndId +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x2eca7777 VBoxGuest_RTHeapSimpleAlloc +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x2fb7502f VBoxGuest_RTThreadSetName +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x30e40c69 VBoxGuest_RTLogSetDefaultInstanceThread +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x3168cadf VBoxGuest_RTTimeSystemMilliTS +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x31ac4c5f VBoxGuest_RTThreadIsInitialized +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x33d7313a VBoxGuest_RTMpCpuId +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x343e3e1b VBoxGuest_RTLogGetDestinations +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x3480f453 VBoxGuest_RTSemMutexDestroy +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x358153bb VBoxGuest_RTStrCopy +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x362275e8 VBoxGuest_RTMemContFree +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x372d5e29 VBoxGuest_RTPowerNotificationDeregister +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x376d539c VBoxGuest_RTThreadGetType +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x381d7c24 VBoxGuest_RTMemAllocVarTag +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x383a0b9d VBoxGuest_RTMpPokeCpu +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x3a47392e VBoxGuest_RTErrConvertFromErrno +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x3b04381e VBoxGuest_RTSemEventMultiReset +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x3b231c95 VBoxGuest_RTTimeNanoTS +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x3bcf543a VBoxGuest_RTLogGetDefaultInstanceEx +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x3d00f113 VBoxGuest_g_u32RTAssertLine +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x3de43f66 VBoxGuest_RTSemEventCreate +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x3dfc9ab8 VBoxGuest_RTSemMutexIsOwned +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x3fbf3c07 VBoxGuest_RTThreadIsInInterrupt +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x40996438 VBoxGuest_RTSemEventMultiWait +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x42ecc6d1 VBoxGuest_RTThreadPreemptRestore +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x43fdd8d9 VBoxGuest_RTSemFastMutexRelease +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x44cfbc28 VBoxGuest_RTThreadGetNative +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x461fa9fe VBoxGuest_RTLogRelGetDefaultInstance +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x46c14223 VBoxGuest_RTLogSetCustomPrefixCallback +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x49f1be17 VBoxGuest_RTThreadFromNative +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x49f4d19c VBoxGuest_RTLogDefaultInstance +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x4bbec091 VBoxGuest_RTR0MemObjGetPagePhysAddr +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x4c7d8a56 VBoxGuest_RTSemEventMultiCreate +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x4cac3157 VBoxGuest_RTLogFormatV +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x4cecc93d VBoxGuest_RTR0MemObjEnterPhysTag +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x4cf913a1 VBoxGuest_RTThreadGetName +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x4ea67110 VBoxGuest_RTStrToInt32 +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x4f041d39 VBoxGuest_RTMemContAlloc +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x4fc8e10c VBoxGuest_RTMpGetSet +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x4fe9e5f1 VBoxGuest_RTR0MemObjProtect +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x5040043b VBoxGuest_RTSemEventWaitExDebug +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x508bb2c4 VBoxGuest_RTLogSetDefaultInstance +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x51ec28bd VBoxGuest_RTLogGetFlags +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x53265abc VBoxGuest_RTLogSetBuffering +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x5352c915 VBoxGuest_RTSemMutexRequest +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x54098f34 VBoxGuest_RTTimerStop +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x54ddf87c VBoxGuest_RTThreadPreemptIsPossible +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x5595fc22 VBoxGuest_RTSpinlockDestroy +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x56596e82 VBoxGuest_RTThreadSelfName +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x56c939fe VBoxGuest_RTAssertMsg1 +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x5847ae52 VBoxGuest_RTMpGetCount +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x58d1b65e VBoxGuest_RTThreadPreemptIsPending +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x598d3622 VBoxGuest_RTAssertMsg2AddWeak +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x5a97195c VBoxGuest_RTHeapSimpleRelocate +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x5aa6ed66 VBoxGuest_RTPowerSignalEvent +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x5b3a5164 VBoxGuest_RTLogWriteUser +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x5cc0b1b2 VBoxGuest_RTProcSelf +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x5d3b1bd6 VBoxGuest_RTSemSpinMutexRelease +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x5e071eb3 VBoxGuest_RTSemEventMultiDestroy +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x5e17b70e VBoxGuest_RTSpinlockRelease +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x5e75c570 VBoxGuest_RTStrToUInt16 +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x5eaea89a VBoxGuest_RTSemFastMutexCreate +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x5ee65bb7 VBoxGuest_RTStrToUInt16Ex +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x5ef42fe5 VBoxGuest_RTTimerStart +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x5f2f48bb VBoxGuest_RTLogWriteStdErr +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x61143878 VBoxGuestIDCCall +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x6173b384 VBoxGuest_RTMpOnPairIsConcurrentExecSupported +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x61770e8c VBoxGuest_RTStrToUInt32 +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x63378722 VBoxGuest_RTLogBackdoorPrintf +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x634946f7 VBoxGuest_RTMpIsCpuOnline +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x637a1d69 VBoxGuest_RTLogWriteStdOut +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x6381bb97 VBoxGuest_RTStrFormat +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x63b1fde6 VBoxGuest_RTMpCpuIdToSetIndex +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x63bc10b0 VBoxGuest_RTLogCreateExV +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x658cd915 VBoxGuest_RTR0MemObjFree +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x67135d2b VBoxGuest_RTSemFastMutexRequest +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x6862822a VBoxGuest_RTHeapSimpleSize +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x695d63ad VBoxGuest_RTMpNotificationDeregister +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x6b01bbf3 VBoxGuest_RTMpOnSpecific +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x6b58b79d VBoxGuest_RTSemSpinMutexDestroy +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x6b91f1ce VBoxGuest_RTStrFormatTypeDeregister +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x6c8460ac VBoxGuest_RTLogRelGetDefaultInstanceEx +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x6cec7c3b VBoxGuest_RTTimerCreateEx +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x6d8e9c87 VBoxGuest_RTTimeNow +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x6e8541b7 VBoxGuest_RTAssertMsg2Weak +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x704e1f6f VBoxGuest_RTAssertMsg2AddWeakV +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x70867323 VBoxGuest_RTStrToUInt8Ex +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x71060970 VBoxGuest_RTStrToUInt16Full +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x716e3be3 VBoxGuest_RTMpGetOnlineCount +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x729cc4ab VBoxGuest_RTR0MemObjSize +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x72ff1bc3 VBoxGuest_RTTimeIsLeapYear +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x730a01b0 VBoxGuest_RTLogRelSetDefaultInstance +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x74812dde VBoxGuest_RTStrToInt32Ex +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x759e7492 VBoxGuest_RTSemFastMutexDestroy +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x764ecb18 VBoxGuest_RTR0MemObjAllocLowTag +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x76a3c47b VBoxGuest_RTMemAllocZVarTag +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x79d59e24 VBoxGuest_RTSemSpinMutexRequest +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x7d0d9dae VBoxGuest_RTR0MemObjAllocPhysNCTag +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x7d15e878 VBoxGuest_RTMpGetOnlineSet +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x7dcc30d8 VBoxGuest_RTStrToInt32Full +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x7e29739a VBoxGuest_RTStrToInt16 +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x7f0a40ea VBoxGuest_RTLogComPrintfV +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x7fc5bdcf VBoxGuest_RTR0MemObjAllocPhysTag +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x8196c4e6 VBoxGuest_RTSemSpinMutexTryRequest +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x82e081bc VBoxGuest_RTStrFormatTypeSetUser +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x83e78406 VBoxGuest_RTR0MemAreKrnlAndUsrDifferent +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x841e42e9 VBoxGuest_RTSemMutexCreate +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x8484a0d6 VBoxGuest_RTStrToInt16Ex +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x84e227f6 VBoxGuest_RTThreadIsSelfKnown +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x86120100 VBoxGuest_RTLogDumpPrintfV +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x867be0d2 VBoxGuest_RTLogDestroy +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x868b79a5 VBoxGuest_RTStrPrintf +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x879761cf VBoxGuest_RTR0MemObjAllocPhysExTag +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x87da3860 VBoxGuest_RTAssertSetQuiet +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x8826d9de VBoxGuest_RTMpGetMaxCpuId +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x883d496c VBoxGuest_RTMpGetCoreCount +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x885274fe VBoxGuest_RTThreadUserWaitNoResume +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x89117f68 VBoxGuest_RTMemExecAllocTag +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x8a3c154f VBoxGuest_RTR0MemObjLockUserTag +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x8a454b31 VBoxGuest_RTSemEventGetResolution +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x8e01e3fd VBoxGuest_RTStrFormatV +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x8f1309e3 VBoxGuest_RTAssertMsg2 +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x90312938 VBoxGuest_RTStrToUInt64Ex +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x91204a9b VBoxGuest_RTTimeSpecToString +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x916e42f0 VBoxGuest_RTAssertMsg1Weak +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x9264ffc0 VBoxGuest_RTLogRelPrintfV +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x926bf9f7 VBoxGuest_RTThreadPreemptDisable +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x92e716ae VBoxGuest_RTLogGetDefaultInstance +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x94f7365f VBoxGuest_RTPowerNotificationRegister +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x95fa480d VBoxGuest_RTSpinlockCreate +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x961772f3 VBoxGuestIDCOpen +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x967ea4b6 VBoxGuest_RTStrToInt64 +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x96893ce3 VBoxGuest_RTR0MemObjAllocPageTag +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x96f2e65b VBoxGuest_RTR0MemUserCopyFrom +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x9796440b VBoxGuest_RTSemEventWaitNoResume +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x97eb2414 VBoxGuest_RTThreadNativeSelf +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x9874cd16 VBoxGuest_RTMpIsCpuPossible +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x9909ff3d VBoxGuest_g_pszRTAssertFunction +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x9a2ee747 VBoxGuest_RTSemEventDestroy +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x9bcc539d VBoxGuest_RTThreadUserReset +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x9cd9213f VBoxGuest_RTR0MemKernelIsValidAddr +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x9d6b527c VBoxGuest_RTThreadWait +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x9dbd63d6 VBoxGuest_RTStrPrintfEx +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x9eaecd9d VBoxGuest_RTStrPrintfV +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x9f301085 VBoxGuest_RTTimeSpecFromString +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x9f4f616a VBoxGuest_RTLogLogger +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x9fb0596d VBoxGuest_RTMemDupTag +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xa168a070 VBoxGuest_RTLogLoggerExV +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xa34eb1b3 VBoxGuest_RTTimeSystemNanoTS +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xa486e710 VBoxGuestIDCClose +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xa554bd97 VBoxGuest_RTLogFlushRC +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xa5a26703 VBoxGuest_RTMpNotificationRegister +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xa696baed VBoxGuest_RTR0MemObjAddress +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xa6a22472 VBoxGuest_RTThreadUserWait +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xa6de1bcd VBoxGuest_RTTimerChangeInterval +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xa86c5a96 VBoxGuest_RTSemEventSignal +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xaba9bc9c VBoxGuest_RTLogCloneRC +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xac990d74 VBoxGuest_RTTimerCanDoHighResolution +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xacaac41d VBoxGuest_g_szRTAssertMsg1 +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xacd719ba VBoxGuest_RTLogPrintfV +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xad4fdf4e VBoxGuest_RTSemMutexRequestNoResumeDebug +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xad649089 VBoxGuest_RTStrToUInt64Full +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xae3e0ecd VBoxGuest_RTLogRelPrintf +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xaf6ffbfc VBoxGuest_RTThreadSleep +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xb05840a7 VBoxGuest_RTSemEventMultiWaitExDebug +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xb1cc9148 VBoxGuest_RTLogWriteCom +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xb42ea0e3 VBoxGuest_g_pszRTAssertFile +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xb444f4a1 VBoxGuest_RTLogDestinations +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xb6941b2e VBoxGuest_RTStrToUInt8 +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xb8c6e615 VBoxGuest_RTStrToUInt32Full +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xb8ca8fcb VBoxGuest_RTMpOnPair +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xb8df2b3a VBoxGuest_RTAssertShouldPanic +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xb9b070b7 VBoxGuest_RTAssertMsg2V +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xb9d7a27d VBoxGuest_RTHeapSimpleDump +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xbaa97421 VBoxGuest_g_szRTAssertMsg2 +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xbb1ead73 VBoxGuest_RTR0MemKernelCopyTo +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xbba928e6 VBoxGuest_RTHeapSimpleGetHeapSize +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xbc4d30f6 VBoxGuest_RTR0MemObjAllocContTag +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xbc85935a VBoxGuest_RTR0MemKernelCopyFrom +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xbe4e6114 VBoxGuest_RTLogFlushToLogger +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xbffedb55 VBoxGuest_RTMemAllocExTag +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xc1095c44 VBoxGuest_RTTimeImplode +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xc1b3ada4 VBoxGuest_RTAssertMsg2WeakV +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xc3a1e5de VBoxGuest_RTLogGetGroupSettings +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xc3fee96e VBoxGuest_RTMemAllocTag +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xc4bd5fd8 VBoxGuest_RTStrPrintfExV +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xc63cc2f0 VBoxGuest_RTR0MemExecDonate +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xc71362b7 VBoxGuest_RTLogRelSetBuffering +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xc8fbf4aa VBoxGuest_RTHeapSimpleInit +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xc91cea98 VBoxGuest_RTStrCopyEx +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xc9a6a8e7 VBoxGuest_RTThreadCreateF +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xcaee97bf VBoxGuest_RTLogComPrintf +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xcb2a6b54 VBoxGuest_RTMemExecFree +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xceae9d6a VBoxGuest_RTStrConvertHexBytes +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xd14e8ec2 VBoxGuest_RTTimerDestroy +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xd1f3f0b9 VBoxGuest_RTSemEventWait +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xd2a37e73 VBoxGuest_RTTimerReleaseSystemGranularity +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xd2d290ab VBoxGuest_RTStrToUInt8Full +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xd3a125cb VBoxGuest_RTR0MemObjMapKernelTag +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xd46c35d4 VBoxGuest_RTMpOnAll +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xd4b597fc VBoxGuest_RTStrCopyP +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xd5bfc897 VBoxGuest_RTHeapSimpleAllocZ +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xd637869e VBoxGuest_RTMemReallocTag +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xd69bc8e4 VBoxGuest_RTR0MemObjReserveUserTag +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xd706d85c VBoxGuest_RTTimeFromString +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xd88c9330 VBoxGuest_RTLogLoggerV +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xd984a7f4 VBoxGuest_RTStrFormatTypeRegister +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xdc700594 VBoxGuest_RTSemEventMultiGetResolution +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xde9ca744 VBoxGuest_RTThreadYield +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xdfbc69bb VBoxGuest_RTThreadPreemptIsPendingTrusty +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xe054d759 VBoxGuest_RTMemTmpFree +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xe095cef8 VBoxGuest_RTThreadSetType +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xe0dc7391 VBoxGuest_RTThreadIsMain +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xe1c6b3d7 VBoxGuest_RTR0MemObjMapKernelExTag +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xe2765c54 VBoxGuest_RTR0AssertPanicSystem +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xe38d562c VBoxGuest_RTStrFormatNumber +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xe3fd228f VBoxGuest_RTTimeMilliTS +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xe7e42113 VBoxGuest_RTThreadSleepNoLog +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xe88dae73 VBoxGuest_RTMemFree +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xe8fad285 VBoxGuest_RTSemEventMultiWaitNoResume +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xea2f2944 VBoxGuest_RTStrToInt8Full +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xea38e4f7 VBoxGuest_RTLogDefaultInstanceEx +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xea71842b VBoxGuest_RTMpGetPresentCoreCount +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xebeefa0e VBoxGuest_RTR0ProcHandleSelf +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xec3cc9a6 VBoxGuest_RTSemEventMultiWaitEx +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xee774b8e VBoxGuest_RTLogWriteDebugger +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xeea4ee73 VBoxGuest_RTR0MemObjMapUserTag +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xef6e1359 VBoxGuest_RTMpOnOthers +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xf02f22ab VBoxGuest_RTMemAllocZTag +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xf0dbb702 VBoxGuest_RTHeapSimpleFree +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xf26294bb VBoxGuest_RTR0MemObjIsMapping +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xf2aa79bb VBoxGuest_RTThreadUserSignal +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xf3943009 VBoxGuest_RTTimerRequestSystemGranularity +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xf5d89855 VBoxGuest_RTLogGroupSettings +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xf69aec24 VBoxGuest_RTStrToInt16Full +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xf7397dd2 VBoxGuest_RTAssertSetMayPanic +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xf8113d66 VBoxGuest_RTMpOnAllIsConcurrentSafe +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xf956a4e8 VBoxGuest_RTLogFlush +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xf958d9cb VBoxGuest_RTLogCreate +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xfa7d95c9 VBoxGuest_RTR0MemUserIsValidAddr +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xfb31e12b VBoxGuest_RTStrToUInt32Ex +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xfba93ac9 VBoxGuest_RTR0MemObjReserveKernelTag +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xfbc67e88 VBoxGuest_RTMemFreeEx +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xfe72cef7 VBoxGuest_RTStrToInt8 +EXPORT_SYMBOL vmlinux 0x00205969 phy_print_status +EXPORT_SYMBOL vmlinux 0x002512c2 tcp_openreq_init_rwin +EXPORT_SYMBOL vmlinux 0x005b3931 tty_vhangup +EXPORT_SYMBOL vmlinux 0x005cc6eb fbcon_rotate_ccw +EXPORT_SYMBOL vmlinux 0x0070cd1f queue_delayed_work_on +EXPORT_SYMBOL vmlinux 0x00867de5 bio_integrity_clone +EXPORT_SYMBOL vmlinux 0x008fd674 pci_release_regions +EXPORT_SYMBOL vmlinux 0x00b293be genl_notify +EXPORT_SYMBOL vmlinux 0x00b8c3a7 mempool_alloc +EXPORT_SYMBOL vmlinux 0x00d49fde eth_header_cache +EXPORT_SYMBOL vmlinux 0x00d7e722 vme_lm_count +EXPORT_SYMBOL vmlinux 0x00ddc28c posix_lock_inode_wait +EXPORT_SYMBOL vmlinux 0x01000e51 schedule +EXPORT_SYMBOL vmlinux 0x0101d5b1 ip_idents_reserve +EXPORT_SYMBOL vmlinux 0x010c07ac ipv6_sock_mc_drop +EXPORT_SYMBOL vmlinux 0x012b9a3d mmc_wait_for_cmd +EXPORT_SYMBOL vmlinux 0x012f9260 blk_finish_request +EXPORT_SYMBOL vmlinux 0x016e5c2a mod_timer +EXPORT_SYMBOL vmlinux 0x018814e8 udp_lib_rehash +EXPORT_SYMBOL vmlinux 0x018dee64 scsi_get_device_flags_keyed +EXPORT_SYMBOL vmlinux 0x01917b16 user_path_create +EXPORT_SYMBOL vmlinux 0x019b8dcf blk_rq_init +EXPORT_SYMBOL vmlinux 0x01b3b737 generic_file_readonly_mmap +EXPORT_SYMBOL vmlinux 0x01f25e93 ht_create_irq +EXPORT_SYMBOL vmlinux 0x01f77635 amd_iommu_enable_device_erratum +EXPORT_SYMBOL vmlinux 0x020f3e87 get_super +EXPORT_SYMBOL vmlinux 0x02124474 ip_send_check +EXPORT_SYMBOL vmlinux 0x022f04dc scsi_print_sense +EXPORT_SYMBOL vmlinux 0x0237b57a arch_unregister_cpu +EXPORT_SYMBOL vmlinux 0x0242ff77 dquot_scan_active +EXPORT_SYMBOL vmlinux 0x0244916f dcb_ieee_setapp +EXPORT_SYMBOL vmlinux 0x024bf827 radix_tree_gang_lookup_tag_slot +EXPORT_SYMBOL vmlinux 0x025bc65b ata_dev_printk +EXPORT_SYMBOL vmlinux 0x02625959 scsi_register +EXPORT_SYMBOL vmlinux 0x02649054 security_sock_rcv_skb +EXPORT_SYMBOL vmlinux 0x02672cee mntget +EXPORT_SYMBOL vmlinux 0x0274dc2b netif_get_num_default_rss_queues +EXPORT_SYMBOL vmlinux 0x029444f0 native_read_tsc +EXPORT_SYMBOL vmlinux 0x02a18c74 nf_conntrack_destroy +EXPORT_SYMBOL vmlinux 0x02a6ce5a crc16_table +EXPORT_SYMBOL vmlinux 0x02a7ece0 netlink_ack +EXPORT_SYMBOL vmlinux 0x02a9c59c generic_setlease +EXPORT_SYMBOL vmlinux 0x02b9f13e dev_load +EXPORT_SYMBOL vmlinux 0x02ea111e scsi_driverbyte_string +EXPORT_SYMBOL vmlinux 0x02ed29ab param_set_int +EXPORT_SYMBOL vmlinux 0x031a8476 netdev_crit +EXPORT_SYMBOL vmlinux 0x031b705b dev_graft_qdisc +EXPORT_SYMBOL vmlinux 0x0320e93e acpi_device_hid +EXPORT_SYMBOL vmlinux 0x0334da4e scsi_command_size_tbl +EXPORT_SYMBOL vmlinux 0x03498156 cpu_rmap_update +EXPORT_SYMBOL vmlinux 0x0349e643 neigh_xmit +EXPORT_SYMBOL vmlinux 0x03592ea0 security_unix_stream_connect +EXPORT_SYMBOL vmlinux 0x035c5eaf input_mt_get_slot_by_key +EXPORT_SYMBOL vmlinux 0x0366307a console_suspend_enabled +EXPORT_SYMBOL vmlinux 0x037a0cba kfree +EXPORT_SYMBOL vmlinux 0x039cc734 bio_integrity_endio +EXPORT_SYMBOL vmlinux 0x03b613a5 from_kuid_munged +EXPORT_SYMBOL vmlinux 0x03c8ce86 napi_disable +EXPORT_SYMBOL vmlinux 0x03ea1b56 tty_register_driver +EXPORT_SYMBOL vmlinux 0x03ebda85 dns_query +EXPORT_SYMBOL vmlinux 0x03fc8e54 freezing_slow_path +EXPORT_SYMBOL vmlinux 0x03fd2571 vm_unmap_ram +EXPORT_SYMBOL vmlinux 0x04054820 acpi_bus_unregister_driver +EXPORT_SYMBOL vmlinux 0x04060bd2 dqget +EXPORT_SYMBOL vmlinux 0x0422fe4a inet_csk_timer_bug_msg +EXPORT_SYMBOL vmlinux 0x0426ba24 idr_for_each +EXPORT_SYMBOL vmlinux 0x042fec40 sk_common_release +EXPORT_SYMBOL vmlinux 0x04482cdb __refrigerator +EXPORT_SYMBOL vmlinux 0x04610f6e agp_copy_info +EXPORT_SYMBOL vmlinux 0x0465a157 fsnotify_put_group +EXPORT_SYMBOL vmlinux 0x047bdfa2 blk_post_runtime_resume +EXPORT_SYMBOL vmlinux 0x047ee5e0 twl6040_reg_read +EXPORT_SYMBOL vmlinux 0x0485dcb2 dev_mc_sync_multiple +EXPORT_SYMBOL vmlinux 0x0487f831 fb_find_best_display +EXPORT_SYMBOL vmlinux 0x048da27c xfrm6_protocol_deregister +EXPORT_SYMBOL vmlinux 0x04927208 cpu_active_mask +EXPORT_SYMBOL vmlinux 0x049f5a33 i2c_del_driver +EXPORT_SYMBOL vmlinux 0x04c08e97 udp_proc_unregister +EXPORT_SYMBOL vmlinux 0x04c12f04 netdev_state_change +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 0x05013514 wait_for_key_construction +EXPORT_SYMBOL vmlinux 0x0506c543 agp_bridge +EXPORT_SYMBOL vmlinux 0x050877b9 dmi_first_match +EXPORT_SYMBOL vmlinux 0x05240ee7 percpu_counter_batch +EXPORT_SYMBOL vmlinux 0x052d76cd tcf_exts_dump_stats +EXPORT_SYMBOL vmlinux 0x0539cc39 I_BDEV +EXPORT_SYMBOL vmlinux 0x0545fe9a inet_del_offload +EXPORT_SYMBOL vmlinux 0x054a40d0 __tracepoint_fence_emit +EXPORT_SYMBOL vmlinux 0x055c8559 __kfifo_dma_in_prepare_r +EXPORT_SYMBOL vmlinux 0x05a1422e page_symlink +EXPORT_SYMBOL vmlinux 0x05afc0a1 release_pages +EXPORT_SYMBOL vmlinux 0x05d02617 acpi_match_device_ids +EXPORT_SYMBOL vmlinux 0x05dacb20 blkdev_reread_part +EXPORT_SYMBOL vmlinux 0x05dd0c6e clkdev_drop +EXPORT_SYMBOL vmlinux 0x05e818ef bioset_free +EXPORT_SYMBOL vmlinux 0x05e8ca23 tcf_action_exec +EXPORT_SYMBOL vmlinux 0x05f85d1e param_array_ops +EXPORT_SYMBOL vmlinux 0x06052f8d __memmove +EXPORT_SYMBOL vmlinux 0x06069d8b generic_fillattr +EXPORT_SYMBOL vmlinux 0x0612ec81 kfree_put_link +EXPORT_SYMBOL vmlinux 0x061651be strcat +EXPORT_SYMBOL vmlinux 0x061d9002 __vfs_write +EXPORT_SYMBOL vmlinux 0x061f4039 acpi_get_table_with_size +EXPORT_SYMBOL vmlinux 0x0634100a bitmap_parselist_user +EXPORT_SYMBOL vmlinux 0x0644a200 dev_get_by_name +EXPORT_SYMBOL vmlinux 0x064ba039 fs_bio_set +EXPORT_SYMBOL vmlinux 0x065d9127 uart_suspend_port +EXPORT_SYMBOL vmlinux 0x06667199 pci_biosrom_size +EXPORT_SYMBOL vmlinux 0x067d8d35 security_release_secctx +EXPORT_SYMBOL vmlinux 0x067f4939 xfrm_unregister_km +EXPORT_SYMBOL vmlinux 0x0682a623 nvdimm_bus_unlock +EXPORT_SYMBOL vmlinux 0x06879ca5 install_exec_creds +EXPORT_SYMBOL vmlinux 0x0689cf7a dev_printk +EXPORT_SYMBOL vmlinux 0x068c7263 ioremap_cache +EXPORT_SYMBOL vmlinux 0x06b07426 blk_delay_queue +EXPORT_SYMBOL vmlinux 0x06c0dae5 __kernel_fpu_end +EXPORT_SYMBOL vmlinux 0x06cb44cf devfreq_add_governor +EXPORT_SYMBOL vmlinux 0x06d1276b prepare_creds +EXPORT_SYMBOL vmlinux 0x06fdfd50 ndo_dflt_fdb_del +EXPORT_SYMBOL vmlinux 0x06fe13ef inet6_ioctl +EXPORT_SYMBOL vmlinux 0x06fe3b14 default_grn +EXPORT_SYMBOL vmlinux 0x06ff73a9 mipi_dsi_dcs_set_column_address +EXPORT_SYMBOL vmlinux 0x070c0884 d_delete +EXPORT_SYMBOL vmlinux 0x071458c2 mmc_erase_group_aligned +EXPORT_SYMBOL vmlinux 0x0727c4f3 iowrite8 +EXPORT_SYMBOL vmlinux 0x072f901c vme_master_rmw +EXPORT_SYMBOL vmlinux 0x074846da compat_nf_getsockopt +EXPORT_SYMBOL vmlinux 0x074e07f9 dquot_quotactl_ops +EXPORT_SYMBOL vmlinux 0x07794b78 agp_generic_destroy_pages +EXPORT_SYMBOL vmlinux 0x079b5e4e md_done_sync +EXPORT_SYMBOL vmlinux 0x07a4b576 flex_array_free +EXPORT_SYMBOL vmlinux 0x07a890c8 fb_alloc_cmap +EXPORT_SYMBOL vmlinux 0x07a913a7 proc_mkdir_mode +EXPORT_SYMBOL vmlinux 0x07b02868 agp_generic_free_by_type +EXPORT_SYMBOL vmlinux 0x07b53933 dmam_alloc_coherent +EXPORT_SYMBOL vmlinux 0x07bd59cb i2c_verify_client +EXPORT_SYMBOL vmlinux 0x07cc4a5d printk_timed_ratelimit +EXPORT_SYMBOL vmlinux 0x07d5a701 get_fs_type +EXPORT_SYMBOL vmlinux 0x07e7d3db get_super_thawed +EXPORT_SYMBOL vmlinux 0x07ec1911 backlight_device_unregister +EXPORT_SYMBOL vmlinux 0x07eceede pci_request_selected_regions_exclusive +EXPORT_SYMBOL vmlinux 0x07f061c1 buffer_migrate_page +EXPORT_SYMBOL vmlinux 0x0805c6c9 nobh_writepage +EXPORT_SYMBOL vmlinux 0x081b4db9 gro_find_complete_by_type +EXPORT_SYMBOL vmlinux 0x081ec1c0 nosteal_pipe_buf_ops +EXPORT_SYMBOL vmlinux 0x0821f268 set_pages_x +EXPORT_SYMBOL vmlinux 0x082c3213 pci_root_buses +EXPORT_SYMBOL vmlinux 0x082e7fb4 qdisc_destroy +EXPORT_SYMBOL vmlinux 0x083eb21c rfkill_unregister +EXPORT_SYMBOL vmlinux 0x0846ad22 create_empty_buffers +EXPORT_SYMBOL vmlinux 0x084eb952 netif_wake_subqueue +EXPORT_SYMBOL vmlinux 0x0866fb4d i2c_smbus_read_block_data +EXPORT_SYMBOL vmlinux 0x088110c6 ab3100_event_register +EXPORT_SYMBOL vmlinux 0x088c1753 wireless_send_event +EXPORT_SYMBOL vmlinux 0x0893c437 pcie_set_mps +EXPORT_SYMBOL vmlinux 0x08952d6f sk_stream_kill_queues +EXPORT_SYMBOL vmlinux 0x0897287b acpi_disable_all_gpes +EXPORT_SYMBOL vmlinux 0x08bdc2d1 netdev_refcnt_read +EXPORT_SYMBOL vmlinux 0x08d09e90 __lock_buffer +EXPORT_SYMBOL vmlinux 0x08ea69e7 mipi_dsi_packet_format_is_long +EXPORT_SYMBOL vmlinux 0x090ad569 d_instantiate +EXPORT_SYMBOL vmlinux 0x092644cb sock_no_listen +EXPORT_SYMBOL vmlinux 0x0929d420 proc_mkdir +EXPORT_SYMBOL vmlinux 0x0934830e would_dump +EXPORT_SYMBOL vmlinux 0x0936d1be padata_stop +EXPORT_SYMBOL vmlinux 0x0941ce37 phy_mac_interrupt +EXPORT_SYMBOL vmlinux 0x09580deb init_timer_key +EXPORT_SYMBOL vmlinux 0x0962e4c9 skb_recv_datagram +EXPORT_SYMBOL vmlinux 0x09696626 acpi_decode_pld_buffer +EXPORT_SYMBOL vmlinux 0x098431ba acpi_get_current_resources +EXPORT_SYMBOL vmlinux 0x098b71c6 fb_dealloc_cmap +EXPORT_SYMBOL vmlinux 0x099e1be5 xfrm4_protocol_register +EXPORT_SYMBOL vmlinux 0x09a0f7b9 locks_copy_lock +EXPORT_SYMBOL vmlinux 0x09a84e5f mmc_gpio_set_cd_isr +EXPORT_SYMBOL vmlinux 0x09c55cec schedule_timeout_interruptible +EXPORT_SYMBOL vmlinux 0x09c8eb55 font_vga_8x16 +EXPORT_SYMBOL vmlinux 0x09d44df9 in_lock_functions +EXPORT_SYMBOL vmlinux 0x09db0c9c arp_xmit +EXPORT_SYMBOL vmlinux 0x09df09b9 __mmc_claim_host +EXPORT_SYMBOL vmlinux 0x09e88526 __init_waitqueue_head +EXPORT_SYMBOL vmlinux 0x09f3a1d2 mb_cache_entry_alloc +EXPORT_SYMBOL vmlinux 0x0a126d41 ppp_register_channel +EXPORT_SYMBOL vmlinux 0x0a14e70c freeze_super +EXPORT_SYMBOL vmlinux 0x0a2487e0 unblock_all_signals +EXPORT_SYMBOL vmlinux 0x0a292872 reservation_seqcount_class +EXPORT_SYMBOL vmlinux 0x0a370884 block_truncate_page +EXPORT_SYMBOL vmlinux 0x0a3c37b9 agp_enable +EXPORT_SYMBOL vmlinux 0x0a4632f7 kill_fasync +EXPORT_SYMBOL vmlinux 0x0a57863e cancel_delayed_work_sync +EXPORT_SYMBOL vmlinux 0x0a5bc82a gnttab_alloc_pages +EXPORT_SYMBOL vmlinux 0x0a661faa lg_local_unlock +EXPORT_SYMBOL vmlinux 0x0a770832 register_memory_notifier +EXPORT_SYMBOL vmlinux 0x0a7b5813 unregister_netdevice_queue +EXPORT_SYMBOL vmlinux 0x0a9798a9 fib_default_rule_pref +EXPORT_SYMBOL vmlinux 0x0a97e3cc __sk_backlog_rcv +EXPORT_SYMBOL vmlinux 0x0a9fc1d4 tcp_proc_unregister +EXPORT_SYMBOL vmlinux 0x0aa309cf synchronize_hardirq +EXPORT_SYMBOL vmlinux 0x0aa6e63c qdisc_reset +EXPORT_SYMBOL vmlinux 0x0ab46486 touch_buffer +EXPORT_SYMBOL vmlinux 0x0ac18989 fsync_bdev +EXPORT_SYMBOL vmlinux 0x0acaf1ac simple_transaction_set +EXPORT_SYMBOL vmlinux 0x0acf7679 dma_issue_pending_all +EXPORT_SYMBOL vmlinux 0x0ae442b4 vfs_path_lookup +EXPORT_SYMBOL vmlinux 0x0af77f0a mnt_set_expiry +EXPORT_SYMBOL vmlinux 0x0b0d888b icmpv6_err_convert +EXPORT_SYMBOL vmlinux 0x0b1beb31 vmalloc_32_user +EXPORT_SYMBOL vmlinux 0x0b322223 task_tgid_nr_ns +EXPORT_SYMBOL vmlinux 0x0b37cb44 ip6_frag_match +EXPORT_SYMBOL vmlinux 0x0b632a2f block_read_full_page +EXPORT_SYMBOL vmlinux 0x0b742fd7 simple_strtol +EXPORT_SYMBOL vmlinux 0x0b7ce9bc blk_queue_invalidate_tags +EXPORT_SYMBOL vmlinux 0x0b905c66 __percpu_counter_init +EXPORT_SYMBOL vmlinux 0x0b9d00dd netpoll_setup +EXPORT_SYMBOL vmlinux 0x0b9f2240 blk_make_request +EXPORT_SYMBOL vmlinux 0x0bbaa11c i2c_add_adapter +EXPORT_SYMBOL vmlinux 0x0bbc5908 gen_estimator_active +EXPORT_SYMBOL vmlinux 0x0bc477a2 irq_set_irq_type +EXPORT_SYMBOL vmlinux 0x0be94fa7 cdev_alloc +EXPORT_SYMBOL vmlinux 0x0bf3e078 tcf_em_unregister +EXPORT_SYMBOL vmlinux 0x0bfca7d8 netpoll_print_options +EXPORT_SYMBOL vmlinux 0x0c026b30 d_walk +EXPORT_SYMBOL vmlinux 0x0c21d019 flush_delayed_work +EXPORT_SYMBOL vmlinux 0x0c371ea8 iput +EXPORT_SYMBOL vmlinux 0x0c4369a4 nf_unregister_hooks +EXPORT_SYMBOL vmlinux 0x0c45fc96 vfs_lstat +EXPORT_SYMBOL vmlinux 0x0c58a8cd netdev_increment_features +EXPORT_SYMBOL vmlinux 0x0c6bdc3f vme_master_read +EXPORT_SYMBOL vmlinux 0x0c788f8c fixed_size_llseek +EXPORT_SYMBOL vmlinux 0x0c9a488f mark_buffer_dirty_inode +EXPORT_SYMBOL vmlinux 0x0ca0c882 twl6030_interrupt_mask +EXPORT_SYMBOL vmlinux 0x0ca7b7a8 acpi_check_region +EXPORT_SYMBOL vmlinux 0x0cabd00e flush_signals +EXPORT_SYMBOL vmlinux 0x0cae232b utf16s_to_utf8s +EXPORT_SYMBOL vmlinux 0x0cdb7d12 __kernel_fpu_begin +EXPORT_SYMBOL vmlinux 0x0cdfab42 pneigh_lookup +EXPORT_SYMBOL vmlinux 0x0cf7d1d1 qdisc_list_del +EXPORT_SYMBOL vmlinux 0x0d24a1f0 dentry_needs_remove_privs +EXPORT_SYMBOL vmlinux 0x0d3dda14 acpi_get_type +EXPORT_SYMBOL vmlinux 0x0d462cf7 netpoll_parse_options +EXPORT_SYMBOL vmlinux 0x0d542439 __ipv6_addr_type +EXPORT_SYMBOL vmlinux 0x0d61eeee __bitmap_subset +EXPORT_SYMBOL vmlinux 0x0d66694e pcix_get_mmrbc +EXPORT_SYMBOL vmlinux 0x0d6f2f7b iommu_tbl_range_alloc +EXPORT_SYMBOL vmlinux 0x0d80efb5 acpi_evaluate_ost +EXPORT_SYMBOL vmlinux 0x0d931f98 padata_set_cpumask +EXPORT_SYMBOL vmlinux 0x0d938484 genphy_restart_aneg +EXPORT_SYMBOL vmlinux 0x0d9bf912 inet_sendmsg +EXPORT_SYMBOL vmlinux 0x0d9f5333 input_unregister_handle +EXPORT_SYMBOL vmlinux 0x0da10ec3 security_sock_graft +EXPORT_SYMBOL vmlinux 0x0da16b77 skb_copy +EXPORT_SYMBOL vmlinux 0x0da676e2 xfrm4_protocol_deregister +EXPORT_SYMBOL vmlinux 0x0db89ea5 set_security_override_from_ctx +EXPORT_SYMBOL vmlinux 0x0dbfdf78 mount_pseudo +EXPORT_SYMBOL vmlinux 0x0dc49be7 rfkill_alloc +EXPORT_SYMBOL vmlinux 0x0dda1270 pnp_unregister_card_driver +EXPORT_SYMBOL vmlinux 0x0e05495e generic_file_splice_read +EXPORT_SYMBOL vmlinux 0x0e14b93a writeback_inodes_sb +EXPORT_SYMBOL vmlinux 0x0e269d31 kernel_getpeername +EXPORT_SYMBOL vmlinux 0x0e2b5dd1 skb_split +EXPORT_SYMBOL vmlinux 0x0e317fc2 kill_anon_super +EXPORT_SYMBOL vmlinux 0x0e480aa2 unregister_netdev +EXPORT_SYMBOL vmlinux 0x0e6da44a set_normalized_timespec +EXPORT_SYMBOL vmlinux 0x0eb0ed72 vfs_getxattr_alloc +EXPORT_SYMBOL vmlinux 0x0eb4f9bd iov_iter_init +EXPORT_SYMBOL vmlinux 0x0ec5babe vme_dma_free +EXPORT_SYMBOL vmlinux 0x0ed4ea59 phy_read_mmd_indirect +EXPORT_SYMBOL vmlinux 0x0ed8cc7b acpi_evaluate_object_typed +EXPORT_SYMBOL vmlinux 0x0ee31763 udp6_set_csum +EXPORT_SYMBOL vmlinux 0x0efcbb1b set_current_groups +EXPORT_SYMBOL vmlinux 0x0f0ebcbe copy_from_iter +EXPORT_SYMBOL vmlinux 0x0f48096b swiotlb_map_sg_attrs +EXPORT_SYMBOL vmlinux 0x0f4c91ed ns_to_timespec +EXPORT_SYMBOL vmlinux 0x0f6a3b5c string_get_size +EXPORT_SYMBOL vmlinux 0x0f7e72c9 scm_detach_fds +EXPORT_SYMBOL vmlinux 0x0f82d4df ilookup +EXPORT_SYMBOL vmlinux 0x0f868aae skb_checksum_help +EXPORT_SYMBOL vmlinux 0x0fa263f4 zpool_register_driver +EXPORT_SYMBOL vmlinux 0x0faac33b vfs_read +EXPORT_SYMBOL vmlinux 0x0faae4c9 vga_switcheroo_init_domain_pm_ops +EXPORT_SYMBOL vmlinux 0x0faef0ed __tasklet_schedule +EXPORT_SYMBOL vmlinux 0x0fb2f8a4 mktime64 +EXPORT_SYMBOL vmlinux 0x0fb7e34e dec_zone_page_state +EXPORT_SYMBOL vmlinux 0x0fd00a68 acpi_clear_event +EXPORT_SYMBOL vmlinux 0x0fe9bd23 bdput +EXPORT_SYMBOL vmlinux 0x0ff2b602 slhc_compress +EXPORT_SYMBOL vmlinux 0x10026a50 inet_recvmsg +EXPORT_SYMBOL vmlinux 0x102745ec cfb_copyarea +EXPORT_SYMBOL vmlinux 0x1028bf41 blk_start_request +EXPORT_SYMBOL vmlinux 0x10301520 fb_prepare_logo +EXPORT_SYMBOL vmlinux 0x1048a778 bio_add_page +EXPORT_SYMBOL vmlinux 0x104bb88c blk_queue_start_tag +EXPORT_SYMBOL vmlinux 0x105862cb param_ops_ushort +EXPORT_SYMBOL vmlinux 0x1058e135 iov_iter_advance +EXPORT_SYMBOL vmlinux 0x105c5cec tcf_exts_dump +EXPORT_SYMBOL vmlinux 0x10685259 vfs_getattr_nosec +EXPORT_SYMBOL vmlinux 0x1072a394 csum_partial_copy_from_user +EXPORT_SYMBOL vmlinux 0x107659ff skb_checksum_setup +EXPORT_SYMBOL vmlinux 0x107e5878 zlib_inflateEnd +EXPORT_SYMBOL vmlinux 0x10950ee1 radix_tree_tag_clear +EXPORT_SYMBOL vmlinux 0x10a28b85 vfs_writef +EXPORT_SYMBOL vmlinux 0x10c2f187 gen_pool_virt_to_phys +EXPORT_SYMBOL vmlinux 0x10cc6549 dcbnl_cee_notify +EXPORT_SYMBOL vmlinux 0x10dacbc8 scsi_eh_prep_cmnd +EXPORT_SYMBOL vmlinux 0x10e1787c pcim_iomap_table +EXPORT_SYMBOL vmlinux 0x10e87e22 grab_cache_page_write_begin +EXPORT_SYMBOL vmlinux 0x10ee20bb default_blu +EXPORT_SYMBOL vmlinux 0x10fb831c scsi_remove_target +EXPORT_SYMBOL vmlinux 0x11089ac7 _ctype +EXPORT_SYMBOL vmlinux 0x11139de7 jbd2_journal_clear_features +EXPORT_SYMBOL vmlinux 0x11248921 mmc_gpio_get_cd +EXPORT_SYMBOL vmlinux 0x112789ad bio_advance +EXPORT_SYMBOL vmlinux 0x112da0da agp_generic_enable +EXPORT_SYMBOL vmlinux 0x113ca17b free_xenballooned_pages +EXPORT_SYMBOL vmlinux 0x113f1731 tcp_md5_do_lookup +EXPORT_SYMBOL vmlinux 0x1157ef92 thaw_super +EXPORT_SYMBOL vmlinux 0x1163f0a7 blk_max_low_pfn +EXPORT_SYMBOL vmlinux 0x117093be qdisc_class_hash_init +EXPORT_SYMBOL vmlinux 0x11716faf genphy_config_init +EXPORT_SYMBOL vmlinux 0x118a5e56 blk_limits_io_min +EXPORT_SYMBOL vmlinux 0x1192709f ip_mc_inc_group +EXPORT_SYMBOL vmlinux 0x11a044f6 mod_timer_pinned +EXPORT_SYMBOL vmlinux 0x11a56b4e input_unregister_device +EXPORT_SYMBOL vmlinux 0x11b13484 file_remove_privs +EXPORT_SYMBOL vmlinux 0x11d0c5de flow_cache_fini +EXPORT_SYMBOL vmlinux 0x11e83134 vfs_write +EXPORT_SYMBOL vmlinux 0x11f7ed4c hex_to_bin +EXPORT_SYMBOL vmlinux 0x120b336a __rb_insert_augmented +EXPORT_SYMBOL vmlinux 0x120d67d4 unregister_memory_isolate_notifier +EXPORT_SYMBOL vmlinux 0x120fc6b1 kstrdup_const +EXPORT_SYMBOL vmlinux 0x12109421 seq_file_path +EXPORT_SYMBOL vmlinux 0x1224c635 simple_rmdir +EXPORT_SYMBOL vmlinux 0x1239e57e cleancache_register_ops +EXPORT_SYMBOL vmlinux 0x123f82f3 getrawmonotonic64 +EXPORT_SYMBOL vmlinux 0x124a5e45 netpoll_send_skb_on_dev +EXPORT_SYMBOL vmlinux 0x1250c7e1 _raw_spin_trylock +EXPORT_SYMBOL vmlinux 0x128cf3fb free_netdev +EXPORT_SYMBOL vmlinux 0x12994468 i2c_smbus_xfer +EXPORT_SYMBOL vmlinux 0x129de341 wrmsr_on_cpus +EXPORT_SYMBOL vmlinux 0x12a38747 usleep_range +EXPORT_SYMBOL vmlinux 0x12b1aa83 sock_diag_put_filterinfo +EXPORT_SYMBOL vmlinux 0x12c3af11 __nd_iostat_start +EXPORT_SYMBOL vmlinux 0x12dfeb12 vprintk_emit +EXPORT_SYMBOL vmlinux 0x1300d86b blk_queue_stack_limits +EXPORT_SYMBOL vmlinux 0x1305d532 ucs2_strncmp +EXPORT_SYMBOL vmlinux 0x13243d4b wl1251_get_platform_data +EXPORT_SYMBOL vmlinux 0x13268e74 jbd2_journal_init_inode +EXPORT_SYMBOL vmlinux 0x13307fde vsscanf +EXPORT_SYMBOL vmlinux 0x13315729 flex_array_alloc +EXPORT_SYMBOL vmlinux 0x1333cbdd done_path_create +EXPORT_SYMBOL vmlinux 0x139356cb kiocb_set_cancel_fn +EXPORT_SYMBOL vmlinux 0x139bbf2d vme_bus_type +EXPORT_SYMBOL vmlinux 0x13b789a4 devm_request_resource +EXPORT_SYMBOL vmlinux 0x13b81555 __pci_register_driver +EXPORT_SYMBOL vmlinux 0x13b999d0 pcie_get_readrq +EXPORT_SYMBOL vmlinux 0x13d0adf7 __kfifo_out +EXPORT_SYMBOL vmlinux 0x13dbb953 pagecache_write_begin +EXPORT_SYMBOL vmlinux 0x13ef09c2 tcp_md5_hash_key +EXPORT_SYMBOL vmlinux 0x13f42152 system_entering_hibernation +EXPORT_SYMBOL vmlinux 0x13f9a8b1 mmc_power_save_host +EXPORT_SYMBOL vmlinux 0x1409f299 blk_get_request +EXPORT_SYMBOL vmlinux 0x140afe3c i2c_smbus_write_i2c_block_data +EXPORT_SYMBOL vmlinux 0x141143c5 ipv6_chk_prefix +EXPORT_SYMBOL vmlinux 0x141d4b15 bio_unmap_user +EXPORT_SYMBOL vmlinux 0x143db96c pnp_disable_dev +EXPORT_SYMBOL vmlinux 0x145b87f1 vga_switcheroo_register_handler +EXPORT_SYMBOL vmlinux 0x14618415 param_set_short +EXPORT_SYMBOL vmlinux 0x1461997a agp_generic_mask_memory +EXPORT_SYMBOL vmlinux 0x148a5975 jbd2_log_start_commit +EXPORT_SYMBOL vmlinux 0x148ea90a agp_generic_free_gatt_table +EXPORT_SYMBOL vmlinux 0x14b6bc2d scsi_cmd_ioctl +EXPORT_SYMBOL vmlinux 0x14c80a70 d_find_alias +EXPORT_SYMBOL vmlinux 0x14d1054a complete_request_key +EXPORT_SYMBOL vmlinux 0x14e1731e inet_dgram_ops +EXPORT_SYMBOL vmlinux 0x14e9c49e intel_gmch_probe +EXPORT_SYMBOL vmlinux 0x14ee21e8 netlink_set_err +EXPORT_SYMBOL vmlinux 0x14fc2cee set_disk_ro +EXPORT_SYMBOL vmlinux 0x150389d6 acpi_processor_power_init_bm_check +EXPORT_SYMBOL vmlinux 0x15351101 put_io_context +EXPORT_SYMBOL vmlinux 0x1535b213 ipv4_specific +EXPORT_SYMBOL vmlinux 0x1541b2ef __generic_block_fiemap +EXPORT_SYMBOL vmlinux 0x1544a342 __neigh_create +EXPORT_SYMBOL vmlinux 0x154c6338 dm_kcopyd_client_destroy +EXPORT_SYMBOL vmlinux 0x155525ad dcb_ieee_getapp_mask +EXPORT_SYMBOL vmlinux 0x1565ac30 param_ops_string +EXPORT_SYMBOL vmlinux 0x156a8a59 down_trylock +EXPORT_SYMBOL vmlinux 0x156eedb7 __netdev_alloc_skb +EXPORT_SYMBOL vmlinux 0x157c1e56 dev_mc_del_global +EXPORT_SYMBOL vmlinux 0x159613da inet6_del_offload +EXPORT_SYMBOL vmlinux 0x15bafe29 unregister_md_cluster_operations +EXPORT_SYMBOL vmlinux 0x15c11bec kill_pgrp +EXPORT_SYMBOL vmlinux 0x15c6b065 compat_nf_setsockopt +EXPORT_SYMBOL vmlinux 0x15de5916 dcache_dir_open +EXPORT_SYMBOL vmlinux 0x15efcb7f bio_init +EXPORT_SYMBOL vmlinux 0x15fadf52 sched_autogroup_detach +EXPORT_SYMBOL vmlinux 0x15fb1895 dump_page +EXPORT_SYMBOL vmlinux 0x160ea4c8 sfi_disabled +EXPORT_SYMBOL vmlinux 0x160ef3c9 nla_put +EXPORT_SYMBOL vmlinux 0x1616cb30 acpi_evaluate_dsm +EXPORT_SYMBOL vmlinux 0x16305289 warn_slowpath_null +EXPORT_SYMBOL vmlinux 0x163175ad vm_insert_page +EXPORT_SYMBOL vmlinux 0x163526dd n_tty_compat_ioctl_helper +EXPORT_SYMBOL vmlinux 0x167c5967 print_hex_dump +EXPORT_SYMBOL vmlinux 0x167e7f9d __get_user_1 +EXPORT_SYMBOL vmlinux 0x168cf32e security_path_mknod +EXPORT_SYMBOL vmlinux 0x168ecf66 param_ops_bool +EXPORT_SYMBOL vmlinux 0x1699ecf1 skb_realloc_headroom +EXPORT_SYMBOL vmlinux 0x16a35983 mb_cache_entry_find_first +EXPORT_SYMBOL vmlinux 0x16dc4d1f fence_init +EXPORT_SYMBOL vmlinux 0x16e3de3a dev_mc_add_excl +EXPORT_SYMBOL vmlinux 0x16eb50d2 eth_gro_receive +EXPORT_SYMBOL vmlinux 0x170c25ee acpi_get_next_object +EXPORT_SYMBOL vmlinux 0x1725504a mapping_tagged +EXPORT_SYMBOL vmlinux 0x1731de1a __napi_complete +EXPORT_SYMBOL vmlinux 0x1770167d tcp_child_process +EXPORT_SYMBOL vmlinux 0x178fc438 gen_new_estimator +EXPORT_SYMBOL vmlinux 0x1793f685 radix_tree_tagged +EXPORT_SYMBOL vmlinux 0x17b0b9e1 soft_cursor +EXPORT_SYMBOL vmlinux 0x17b1125d gen_kill_estimator +EXPORT_SYMBOL vmlinux 0x17b9a25d xfrm_state_delete +EXPORT_SYMBOL vmlinux 0x17c16b37 inet_shutdown +EXPORT_SYMBOL vmlinux 0x17c36877 do_splice_from +EXPORT_SYMBOL vmlinux 0x17f341a0 i8042_lock_chip +EXPORT_SYMBOL vmlinux 0x17f9f092 pci_write_vpd +EXPORT_SYMBOL vmlinux 0x1816e50f revert_creds +EXPORT_SYMBOL vmlinux 0x181843ed tcp_md5_do_del +EXPORT_SYMBOL vmlinux 0x1829d188 wait_woken +EXPORT_SYMBOL vmlinux 0x183d5dc0 vlan_vids_add_by_dev +EXPORT_SYMBOL vmlinux 0x183fa88b mempool_alloc_slab +EXPORT_SYMBOL vmlinux 0x1847cdd0 inet_register_protosw +EXPORT_SYMBOL vmlinux 0x184b82fb mmc_vddrange_to_ocrmask +EXPORT_SYMBOL vmlinux 0x18672f24 xfrm6_prepare_output +EXPORT_SYMBOL vmlinux 0x186e6efb fb_set_suspend +EXPORT_SYMBOL vmlinux 0x18882021 security_dentry_init_security +EXPORT_SYMBOL vmlinux 0x188a3dfb timespec_trunc +EXPORT_SYMBOL vmlinux 0x1897910e neigh_for_each +EXPORT_SYMBOL vmlinux 0x189868d7 get_random_bytes_arch +EXPORT_SYMBOL vmlinux 0x18a07f81 bdi_init +EXPORT_SYMBOL vmlinux 0x18a15f15 skb_clone +EXPORT_SYMBOL vmlinux 0x18a1f6b6 inetdev_by_index +EXPORT_SYMBOL vmlinux 0x18abefb5 key_payload_reserve +EXPORT_SYMBOL vmlinux 0x18b72573 register_kmmio_probe +EXPORT_SYMBOL vmlinux 0x18ca6192 lockref_get_not_dead +EXPORT_SYMBOL vmlinux 0x18caf727 input_handler_for_each_handle +EXPORT_SYMBOL vmlinux 0x18da8807 seq_release_private +EXPORT_SYMBOL vmlinux 0x1916e38c _raw_spin_unlock_irqrestore +EXPORT_SYMBOL vmlinux 0x194fe2ed __register_nls +EXPORT_SYMBOL vmlinux 0x1969aad8 pnp_possible_config +EXPORT_SYMBOL vmlinux 0x199df22d pci_msix_vec_count +EXPORT_SYMBOL vmlinux 0x199ed0cd net_disable_timestamp +EXPORT_SYMBOL vmlinux 0x19a63065 agp_unbind_memory +EXPORT_SYMBOL vmlinux 0x19af0088 __invalidate_device +EXPORT_SYMBOL vmlinux 0x19bd383b security_secmark_refcount_dec +EXPORT_SYMBOL vmlinux 0x19bd5f71 netdev_boot_setup_check +EXPORT_SYMBOL vmlinux 0x19ec529f vga_switcheroo_register_audio_client +EXPORT_SYMBOL vmlinux 0x1a09356e register_netdev +EXPORT_SYMBOL vmlinux 0x1a0e3025 ps2_end_command +EXPORT_SYMBOL vmlinux 0x1a1e475a mpage_readpages +EXPORT_SYMBOL vmlinux 0x1a1fc84c vlan_dev_real_dev +EXPORT_SYMBOL vmlinux 0x1a23cbd9 genphy_update_link +EXPORT_SYMBOL vmlinux 0x1a45cb6c acpi_disabled +EXPORT_SYMBOL vmlinux 0x1a45e0af try_to_free_buffers +EXPORT_SYMBOL vmlinux 0x1a527a77 phy_ethtool_get_eee +EXPORT_SYMBOL vmlinux 0x1a63af34 vga_switcheroo_process_delayed_switch +EXPORT_SYMBOL vmlinux 0x1a653f39 blkdev_issue_write_same +EXPORT_SYMBOL vmlinux 0x1a7a5343 __bforget +EXPORT_SYMBOL vmlinux 0x1a89240b generic_file_mmap +EXPORT_SYMBOL vmlinux 0x1a8aa5cd ethtool_op_get_link +EXPORT_SYMBOL vmlinux 0x1a9ed969 kmem_cache_alloc +EXPORT_SYMBOL vmlinux 0x1ac5d3cb strcspn +EXPORT_SYMBOL vmlinux 0x1ad19757 md_integrity_add_rdev +EXPORT_SYMBOL vmlinux 0x1afb1aaa acpi_mark_gpe_for_wake +EXPORT_SYMBOL vmlinux 0x1b015d25 bitmap_parselist +EXPORT_SYMBOL vmlinux 0x1b0636a4 module_refcount +EXPORT_SYMBOL vmlinux 0x1b06a209 blk_set_default_limits +EXPORT_SYMBOL vmlinux 0x1b1e1088 sg_nents +EXPORT_SYMBOL vmlinux 0x1b23a3ec ipv6_select_ident +EXPORT_SYMBOL vmlinux 0x1b2ef80e vme_slave_request +EXPORT_SYMBOL vmlinux 0x1b3fbcdb sock_from_file +EXPORT_SYMBOL vmlinux 0x1b4099ef cdev_init +EXPORT_SYMBOL vmlinux 0x1b435d61 dst_alloc +EXPORT_SYMBOL vmlinux 0x1b570d23 acpi_warning +EXPORT_SYMBOL vmlinux 0x1b625463 generic_getxattr +EXPORT_SYMBOL vmlinux 0x1b6314fd in_aton +EXPORT_SYMBOL vmlinux 0x1b6b9e57 kmem_cache_alloc_node_trace +EXPORT_SYMBOL vmlinux 0x1b7fd24b d_add_ci +EXPORT_SYMBOL vmlinux 0x1b82fefa md_unplug +EXPORT_SYMBOL vmlinux 0x1b8b95ad i8042_unlock_chip +EXPORT_SYMBOL vmlinux 0x1bb31047 add_timer +EXPORT_SYMBOL vmlinux 0x1bb3eacb tty_port_init +EXPORT_SYMBOL vmlinux 0x1bb5b5c7 netdev_upper_dev_link +EXPORT_SYMBOL vmlinux 0x1bbaffd2 ipv6_push_nfrag_opts +EXPORT_SYMBOL vmlinux 0x1bc43406 tcp_make_synack +EXPORT_SYMBOL vmlinux 0x1bc5aa62 inet_offloads +EXPORT_SYMBOL vmlinux 0x1be1dd26 lg_global_lock +EXPORT_SYMBOL vmlinux 0x1bf76f54 qdisc_class_hash_grow +EXPORT_SYMBOL vmlinux 0x1c5d489c scsi_block_when_processing_errors +EXPORT_SYMBOL vmlinux 0x1c654e09 security_path_mkdir +EXPORT_SYMBOL vmlinux 0x1c70d21d input_allocate_device +EXPORT_SYMBOL vmlinux 0x1c860901 blk_mq_start_request +EXPORT_SYMBOL vmlinux 0x1c8a04b0 acpi_reset +EXPORT_SYMBOL vmlinux 0x1c8d4151 pagecache_get_page +EXPORT_SYMBOL vmlinux 0x1c92114a __module_put_and_exit +EXPORT_SYMBOL vmlinux 0x1cb7af39 pci_clear_mwi +EXPORT_SYMBOL vmlinux 0x1cc1c0b0 register_quota_format +EXPORT_SYMBOL vmlinux 0x1cd6c898 ilookup5 +EXPORT_SYMBOL vmlinux 0x1cdf5287 param_set_ushort +EXPORT_SYMBOL vmlinux 0x1cedc809 nf_log_set +EXPORT_SYMBOL vmlinux 0x1cf76cdd register_md_personality +EXPORT_SYMBOL vmlinux 0x1cfc14ed xfrm_state_lookup_byspi +EXPORT_SYMBOL vmlinux 0x1d02d12c tty_port_carrier_raised +EXPORT_SYMBOL vmlinux 0x1d03617d jbd2_journal_flush +EXPORT_SYMBOL vmlinux 0x1d1056e5 crc32_be +EXPORT_SYMBOL vmlinux 0x1d11b5d6 ethtool_op_get_ts_info +EXPORT_SYMBOL vmlinux 0x1d2343cc dm_kcopyd_copy +EXPORT_SYMBOL vmlinux 0x1d4cd8cd skb_append +EXPORT_SYMBOL vmlinux 0x1d64737b inode_add_rsv_space +EXPORT_SYMBOL vmlinux 0x1d687458 key_unlink +EXPORT_SYMBOL vmlinux 0x1db251f3 ps2_init +EXPORT_SYMBOL vmlinux 0x1db7706b __copy_user_nocache +EXPORT_SYMBOL vmlinux 0x1dc22477 serio_rescan +EXPORT_SYMBOL vmlinux 0x1dc36131 fb_destroy_modedb +EXPORT_SYMBOL vmlinux 0x1dcc9569 nla_append +EXPORT_SYMBOL vmlinux 0x1dd18f24 kernel_accept +EXPORT_SYMBOL vmlinux 0x1dd571e6 fb_copy_cmap +EXPORT_SYMBOL vmlinux 0x1dd5b248 pci_assign_resource +EXPORT_SYMBOL vmlinux 0x1de74f72 acpi_execute_simple_method +EXPORT_SYMBOL vmlinux 0x1e036c98 acpi_set_gpe +EXPORT_SYMBOL vmlinux 0x1e047854 warn_slowpath_fmt +EXPORT_SYMBOL vmlinux 0x1e04d9e1 bio_reset +EXPORT_SYMBOL vmlinux 0x1e0c2be4 ioremap_wc +EXPORT_SYMBOL vmlinux 0x1e0e782e neigh_resolve_output +EXPORT_SYMBOL vmlinux 0x1e15fd52 serio_unregister_port +EXPORT_SYMBOL vmlinux 0x1e17bd32 jbd2_journal_get_create_access +EXPORT_SYMBOL vmlinux 0x1e26be3b get_anon_bdev +EXPORT_SYMBOL vmlinux 0x1e2b651d xfrm_prepare_input +EXPORT_SYMBOL vmlinux 0x1e40dc8b compat_mc_getsockopt +EXPORT_SYMBOL vmlinux 0x1e6a76b7 blk_queue_max_segment_size +EXPORT_SYMBOL vmlinux 0x1e6d26a8 strstr +EXPORT_SYMBOL vmlinux 0x1e87150d forget_all_cached_acls +EXPORT_SYMBOL vmlinux 0x1e9edfb7 seq_hlist_start_head_rcu +EXPORT_SYMBOL vmlinux 0x1eaae0dc ip_getsockopt +EXPORT_SYMBOL vmlinux 0x1eae4ead get_gendisk +EXPORT_SYMBOL vmlinux 0x1eb922a3 IO_APIC_get_PCI_irq_vector +EXPORT_SYMBOL vmlinux 0x1ec990c8 efi +EXPORT_SYMBOL vmlinux 0x1ecd6dc7 generic_file_llseek_size +EXPORT_SYMBOL vmlinux 0x1f042538 fsnotify_add_mark +EXPORT_SYMBOL vmlinux 0x1f16f2f6 netdev_all_upper_get_next_dev_rcu +EXPORT_SYMBOL vmlinux 0x1f327a7b new_inode +EXPORT_SYMBOL vmlinux 0x1f3bee8a get_user_pages_locked +EXPORT_SYMBOL vmlinux 0x1f3ef81e fb_is_primary_device +EXPORT_SYMBOL vmlinux 0x1f6ce67a sg_pcopy_to_buffer +EXPORT_SYMBOL vmlinux 0x1f7c86fa inode_set_flags +EXPORT_SYMBOL vmlinux 0x1f832872 register_filesystem +EXPORT_SYMBOL vmlinux 0x1f8f53d6 kern_path +EXPORT_SYMBOL vmlinux 0x1fbd16da ip_tos2prio +EXPORT_SYMBOL vmlinux 0x1fcda399 dev_addr_flush +EXPORT_SYMBOL vmlinux 0x1fd07fff kdb_grepping_flag +EXPORT_SYMBOL vmlinux 0x1fe912f1 netdev_alloc_frag +EXPORT_SYMBOL vmlinux 0x1fe9f800 unregister_cpu_notifier +EXPORT_SYMBOL vmlinux 0x1fedf0f4 __request_region +EXPORT_SYMBOL vmlinux 0x1ff52d2e cpu_info +EXPORT_SYMBOL vmlinux 0x1ff58209 dquot_set_dqinfo +EXPORT_SYMBOL vmlinux 0x20000329 simple_strtoul +EXPORT_SYMBOL vmlinux 0x2005e68a acpi_remove_fixed_event_handler +EXPORT_SYMBOL vmlinux 0x20092385 acpi_enter_sleep_state_s4bios +EXPORT_SYMBOL vmlinux 0x200b2041 in6addr_any +EXPORT_SYMBOL vmlinux 0x200b729b rtnl_unicast +EXPORT_SYMBOL vmlinux 0x200d9fef vme_master_request +EXPORT_SYMBOL vmlinux 0x2014200b genlmsg_multicast_allns +EXPORT_SYMBOL vmlinux 0x201b0ac0 lg_global_unlock +EXPORT_SYMBOL vmlinux 0x201d7de5 unregister_binfmt +EXPORT_SYMBOL vmlinux 0x20405d70 jbd2__journal_restart +EXPORT_SYMBOL vmlinux 0x2044aea7 amd_iommu_pc_get_max_banks +EXPORT_SYMBOL vmlinux 0x204b8c16 register_sysctl_paths +EXPORT_SYMBOL vmlinux 0x204c19f5 tcp_alloc_md5sig_pool +EXPORT_SYMBOL vmlinux 0x2059a447 cpu_sibling_map +EXPORT_SYMBOL vmlinux 0x205a0646 nd_iostat_end +EXPORT_SYMBOL vmlinux 0x206ff9ad __vlan_find_dev_deep_rcu +EXPORT_SYMBOL vmlinux 0x2072ee9b request_threaded_irq +EXPORT_SYMBOL vmlinux 0x207e8b7d clear_page_dirty_for_io +EXPORT_SYMBOL vmlinux 0x208739f6 acpi_load_table +EXPORT_SYMBOL vmlinux 0x209abb56 __skb_get_hash_flowi4 +EXPORT_SYMBOL vmlinux 0x20a789ac irq_set_chip_data +EXPORT_SYMBOL vmlinux 0x20abc15b acpi_processor_register_performance +EXPORT_SYMBOL vmlinux 0x20afdf31 __remove_inode_hash +EXPORT_SYMBOL vmlinux 0x20b7bc76 scsi_print_sense_hdr +EXPORT_SYMBOL vmlinux 0x20c55ae0 sscanf +EXPORT_SYMBOL vmlinux 0x20cca1c2 seq_pad +EXPORT_SYMBOL vmlinux 0x20df5a3d vme_dma_pci_attribute +EXPORT_SYMBOL vmlinux 0x20eadeb6 ip_compute_csum +EXPORT_SYMBOL vmlinux 0x2114abb2 jbd2_journal_init_dev +EXPORT_SYMBOL vmlinux 0x211f68f1 getnstimeofday64 +EXPORT_SYMBOL vmlinux 0x211fe020 scsi_print_command +EXPORT_SYMBOL vmlinux 0x21274951 xfrm_init_replay +EXPORT_SYMBOL vmlinux 0x21303391 reqsk_queue_hash_req +EXPORT_SYMBOL vmlinux 0x2136e8af dev_deactivate +EXPORT_SYMBOL vmlinux 0x2158f83d dev_uc_add +EXPORT_SYMBOL vmlinux 0x217e9622 ip_generic_getfrag +EXPORT_SYMBOL vmlinux 0x2186334a acpi_pm_device_run_wake +EXPORT_SYMBOL vmlinux 0x219e4f74 devm_request_threaded_irq +EXPORT_SYMBOL vmlinux 0x21a2451c follow_down +EXPORT_SYMBOL vmlinux 0x21a701fe fence_signal +EXPORT_SYMBOL vmlinux 0x21ca0f80 pm860x_page_bulk_read +EXPORT_SYMBOL vmlinux 0x21df74d9 bitmap_set +EXPORT_SYMBOL vmlinux 0x21e992a5 ida_simple_get +EXPORT_SYMBOL vmlinux 0x21fcef7b vme_new_dma_list +EXPORT_SYMBOL vmlinux 0x21fe527c blk_free_tags +EXPORT_SYMBOL vmlinux 0x2207a57f prepare_to_wait_event +EXPORT_SYMBOL vmlinux 0x220e07d9 sget +EXPORT_SYMBOL vmlinux 0x2216069b genphy_resume +EXPORT_SYMBOL vmlinux 0x221b80e8 mmc_wait_for_app_cmd +EXPORT_SYMBOL vmlinux 0x2223b02f pci_enable_device_mem +EXPORT_SYMBOL vmlinux 0x22251322 blkdev_get_by_dev +EXPORT_SYMBOL vmlinux 0x222ca46f tty_write_room +EXPORT_SYMBOL vmlinux 0x222e7ce2 sysfs_streq +EXPORT_SYMBOL vmlinux 0x223ad861 set_pages_array_wc +EXPORT_SYMBOL vmlinux 0x226cf020 inet_frag_destroy +EXPORT_SYMBOL vmlinux 0x2276db98 kstrtoint +EXPORT_SYMBOL vmlinux 0x22b325d5 kd_mksound +EXPORT_SYMBOL vmlinux 0x22c519cd dev_open +EXPORT_SYMBOL vmlinux 0x22c8ea3d xfrm_state_flush +EXPORT_SYMBOL vmlinux 0x22d262bc tty_insert_flip_string_flags +EXPORT_SYMBOL vmlinux 0x23011d7d tcf_register_action +EXPORT_SYMBOL vmlinux 0x231d4001 fb_edid_add_monspecs +EXPORT_SYMBOL vmlinux 0x232d1814 dev_set_allmulti +EXPORT_SYMBOL vmlinux 0x232d18ec rps_sock_flow_table +EXPORT_SYMBOL vmlinux 0x23358ed2 call_netdevice_notifiers +EXPORT_SYMBOL vmlinux 0x2344e0e9 lro_receive_skb +EXPORT_SYMBOL vmlinux 0x23493d61 __bread_gfp +EXPORT_SYMBOL vmlinux 0x235c5fdb xfrm_policy_alloc +EXPORT_SYMBOL vmlinux 0x2368e972 vfs_mknod +EXPORT_SYMBOL vmlinux 0x23728ff4 uart_resume_port +EXPORT_SYMBOL vmlinux 0x2386db64 mmc_alloc_host +EXPORT_SYMBOL vmlinux 0x238bdc51 filemap_map_pages +EXPORT_SYMBOL vmlinux 0x238f5c1a _raw_write_unlock_irqrestore +EXPORT_SYMBOL vmlinux 0x239b27b6 fsnotify_destroy_mark +EXPORT_SYMBOL vmlinux 0x23a574fd security_secmark_relabel_packet +EXPORT_SYMBOL vmlinux 0x23a95044 __destroy_inode +EXPORT_SYMBOL vmlinux 0x23b9d6e2 mangle_path +EXPORT_SYMBOL vmlinux 0x23c16600 crypto_sha256_finup +EXPORT_SYMBOL vmlinux 0x23c8f257 slhc_uncompress +EXPORT_SYMBOL vmlinux 0x23c9891c kstrtoint_from_user +EXPORT_SYMBOL vmlinux 0x23cf97db vm_event_states +EXPORT_SYMBOL vmlinux 0x23e08876 pagevec_lookup_tag +EXPORT_SYMBOL vmlinux 0x23f84834 audit_log +EXPORT_SYMBOL vmlinux 0x23fd3028 vmalloc_node +EXPORT_SYMBOL vmlinux 0x241c96d0 crypto_sha1_update +EXPORT_SYMBOL vmlinux 0x24212d86 __frontswap_invalidate_page +EXPORT_SYMBOL vmlinux 0x2432bb07 blk_queue_io_min +EXPORT_SYMBOL vmlinux 0x24428be5 strncpy_from_user +EXPORT_SYMBOL vmlinux 0x24474195 bdev_stack_limits +EXPORT_SYMBOL vmlinux 0x2459bbcc console_set_on_cmdline +EXPORT_SYMBOL vmlinux 0x2477b6f9 ip_ct_attach +EXPORT_SYMBOL vmlinux 0x2482e688 vsprintf +EXPORT_SYMBOL vmlinux 0x2484adc3 __kfifo_to_user_r +EXPORT_SYMBOL vmlinux 0x248ca714 ipv6_chk_addr +EXPORT_SYMBOL vmlinux 0x249d2e70 blk_queue_dma_pad +EXPORT_SYMBOL vmlinux 0x249f1e9e __nlmsg_put +EXPORT_SYMBOL vmlinux 0x24a3a0a2 mmc_unregister_driver +EXPORT_SYMBOL vmlinux 0x24e21e6f i2c_smbus_read_byte_data +EXPORT_SYMBOL vmlinux 0x24fdac79 wake_bit_function +EXPORT_SYMBOL vmlinux 0x2509170c pci_request_region +EXPORT_SYMBOL vmlinux 0x25277497 rfkill_register +EXPORT_SYMBOL vmlinux 0x253aea1f blk_queue_max_discard_sectors +EXPORT_SYMBOL vmlinux 0x25463dde ipv6_sock_mc_join +EXPORT_SYMBOL vmlinux 0x2557557c __bio_clone_fast +EXPORT_SYMBOL vmlinux 0x2559ac48 dquot_quota_on_mount +EXPORT_SYMBOL vmlinux 0x255d8cbf tcp_init_sock +EXPORT_SYMBOL vmlinux 0x256320ae netdev_bonding_info_change +EXPORT_SYMBOL vmlinux 0x256a6e8e nf_nat_decode_session_hook +EXPORT_SYMBOL vmlinux 0x256cb476 __getblk_gfp +EXPORT_SYMBOL vmlinux 0x2570a138 reservation_seqcount_string +EXPORT_SYMBOL vmlinux 0x25820c64 fs_overflowuid +EXPORT_SYMBOL vmlinux 0x25ad9738 register_shrinker +EXPORT_SYMBOL vmlinux 0x25b00f8f crypto_sha512_update +EXPORT_SYMBOL vmlinux 0x25d58063 acpi_pm_device_sleep_state +EXPORT_SYMBOL vmlinux 0x25dfd16d netlink_net_capable +EXPORT_SYMBOL vmlinux 0x25e7084e page_readlink +EXPORT_SYMBOL vmlinux 0x25e8ed29 sg_nents_for_len +EXPORT_SYMBOL vmlinux 0x25e9d4bd resource_list_free +EXPORT_SYMBOL vmlinux 0x25f9673f pci_iounmap +EXPORT_SYMBOL vmlinux 0x2604d2eb vfs_unlink +EXPORT_SYMBOL vmlinux 0x260bf95a skb_abort_seq_read +EXPORT_SYMBOL vmlinux 0x26286ec9 dev_uc_add_excl +EXPORT_SYMBOL vmlinux 0x263beb75 ecryptfs_get_versions +EXPORT_SYMBOL vmlinux 0x263c204f xfrm_state_add +EXPORT_SYMBOL vmlinux 0x263d762c kmem_cache_free +EXPORT_SYMBOL vmlinux 0x2641b9e2 sock_dequeue_err_skb +EXPORT_SYMBOL vmlinux 0x2650d835 sysctl_ip_early_demux +EXPORT_SYMBOL vmlinux 0x26565c5f consume_skb +EXPORT_SYMBOL vmlinux 0x2665d53a key_create_or_update +EXPORT_SYMBOL vmlinux 0x26948d96 copy_user_enhanced_fast_string +EXPORT_SYMBOL vmlinux 0x2699024b dev_uc_unsync +EXPORT_SYMBOL vmlinux 0x26b34ec2 md_check_no_bitmap +EXPORT_SYMBOL vmlinux 0x26cb34a2 mempool_create +EXPORT_SYMBOL vmlinux 0x26cbb9eb kernel_param_lock +EXPORT_SYMBOL vmlinux 0x26d0d9b2 kmalloc_dma_caches +EXPORT_SYMBOL vmlinux 0x26d26e14 sg_miter_start +EXPORT_SYMBOL vmlinux 0x26e298e0 unregister_memory_notifier +EXPORT_SYMBOL vmlinux 0x26e76fb8 sysctl_udp_wmem_min +EXPORT_SYMBOL vmlinux 0x2700f47b sk_page_frag_refill +EXPORT_SYMBOL vmlinux 0x2705e6de pcie_capability_read_dword +EXPORT_SYMBOL vmlinux 0x27170258 read_cache_pages +EXPORT_SYMBOL vmlinux 0x271cba95 acpi_bus_private_data_handler +EXPORT_SYMBOL vmlinux 0x272d394e mtrr_del +EXPORT_SYMBOL vmlinux 0x27438599 dev_change_flags +EXPORT_SYMBOL vmlinux 0x27460f13 ps2_drain +EXPORT_SYMBOL vmlinux 0x274d08dc __kfifo_dma_out_prepare +EXPORT_SYMBOL vmlinux 0x27518d4e netdev_lower_get_first_private_rcu +EXPORT_SYMBOL vmlinux 0x27555d08 pcim_enable_device +EXPORT_SYMBOL vmlinux 0x276a9d7a get_cached_acl +EXPORT_SYMBOL vmlinux 0x277f5c05 vga_switcheroo_unregister_client +EXPORT_SYMBOL vmlinux 0x27864d57 memparse +EXPORT_SYMBOL vmlinux 0x27866435 security_xfrm_state_alloc +EXPORT_SYMBOL vmlinux 0x27882b9b ida_simple_remove +EXPORT_SYMBOL vmlinux 0x278fc312 kmem_cache_shrink +EXPORT_SYMBOL vmlinux 0x27949253 fb_set_cmap +EXPORT_SYMBOL vmlinux 0x279bae0f flow_get_u32_dst +EXPORT_SYMBOL vmlinux 0x279ec3ec phy_suspend +EXPORT_SYMBOL vmlinux 0x27ae7d0c ec_transaction +EXPORT_SYMBOL vmlinux 0x27bbf221 disable_irq_nosync +EXPORT_SYMBOL vmlinux 0x27c23e49 read_cache_page +EXPORT_SYMBOL vmlinux 0x27c33efe csum_ipv6_magic +EXPORT_SYMBOL vmlinux 0x27c67d24 mfd_remove_devices +EXPORT_SYMBOL vmlinux 0x27e1a049 printk +EXPORT_SYMBOL vmlinux 0x27e663be generic_start_io_acct +EXPORT_SYMBOL vmlinux 0x2811f80c inet_csk_prepare_forced_close +EXPORT_SYMBOL vmlinux 0x281271ce n_tty_ioctl_helper +EXPORT_SYMBOL vmlinux 0x281823c5 __kfifo_out_peek +EXPORT_SYMBOL vmlinux 0x281e2d8a blk_execute_rq +EXPORT_SYMBOL vmlinux 0x2825891a jbd2_journal_set_triggers +EXPORT_SYMBOL vmlinux 0x28318305 snprintf +EXPORT_SYMBOL vmlinux 0x2856f0d4 jbd2_journal_destroy +EXPORT_SYMBOL vmlinux 0x287b1a96 xfrm_unregister_type +EXPORT_SYMBOL vmlinux 0x287ca030 mipi_dsi_dcs_set_page_address +EXPORT_SYMBOL vmlinux 0x28a2b29f radix_tree_range_tag_if_tagged +EXPORT_SYMBOL vmlinux 0x28a2ed02 scsi_build_sense_buffer +EXPORT_SYMBOL vmlinux 0x28abfe6e scsi_kmap_atomic_sg +EXPORT_SYMBOL vmlinux 0x28baa237 generic_write_checks +EXPORT_SYMBOL vmlinux 0x28e09af1 iosf_mbi_available +EXPORT_SYMBOL vmlinux 0x28f82dae fd_install +EXPORT_SYMBOL vmlinux 0x290d0055 __dynamic_netdev_dbg +EXPORT_SYMBOL vmlinux 0x291257d1 inode_reclaim_rsv_space +EXPORT_SYMBOL vmlinux 0x29187463 udp_lib_get_port +EXPORT_SYMBOL vmlinux 0x292448e4 inet_release +EXPORT_SYMBOL vmlinux 0x29537c9e alloc_chrdev_region +EXPORT_SYMBOL vmlinux 0x2962b144 agp_generic_create_gatt_table +EXPORT_SYMBOL vmlinux 0x298e7e74 inet_csk_reset_keepalive_timer +EXPORT_SYMBOL vmlinux 0x2990fdf9 add_random_ready_callback +EXPORT_SYMBOL vmlinux 0x2993ee9f __skb_tx_hash +EXPORT_SYMBOL vmlinux 0x29a6ee9a tcp_rtx_synack +EXPORT_SYMBOL vmlinux 0x29b07ec2 kern_unmount +EXPORT_SYMBOL vmlinux 0x29c3730e d_drop +EXPORT_SYMBOL vmlinux 0x29d517d4 elv_rq_merge_ok +EXPORT_SYMBOL vmlinux 0x29d83e9f __i2c_transfer +EXPORT_SYMBOL vmlinux 0x29dfb89c netdev_master_upper_dev_link_private +EXPORT_SYMBOL vmlinux 0x2a1317d1 dev_uc_init +EXPORT_SYMBOL vmlinux 0x2a14d49c dquot_free_inode +EXPORT_SYMBOL vmlinux 0x2a190774 blk_integrity_merge_bio +EXPORT_SYMBOL vmlinux 0x2a28f247 pci_find_bus +EXPORT_SYMBOL vmlinux 0x2a303d4d check_signature +EXPORT_SYMBOL vmlinux 0x2a36ca43 __tcf_hash_release +EXPORT_SYMBOL vmlinux 0x2a37d074 dma_pool_free +EXPORT_SYMBOL vmlinux 0x2a565a25 wait_for_completion_timeout +EXPORT_SYMBOL vmlinux 0x2a764630 vme_dma_list_exec +EXPORT_SYMBOL vmlinux 0x2a7845c4 sync_dirty_buffer +EXPORT_SYMBOL vmlinux 0x2a890f77 d_path +EXPORT_SYMBOL vmlinux 0x2a8a8e50 sync_blockdev +EXPORT_SYMBOL vmlinux 0x2aacb444 __dev_remove_pack +EXPORT_SYMBOL vmlinux 0x2aad35de mb_cache_destroy +EXPORT_SYMBOL vmlinux 0x2acd3b15 input_register_handler +EXPORT_SYMBOL vmlinux 0x2acf0feb vfs_fstat +EXPORT_SYMBOL vmlinux 0x2b0ba2b0 scsi_sense_desc_find +EXPORT_SYMBOL vmlinux 0x2b0dc2b0 iov_iter_single_seg_count +EXPORT_SYMBOL vmlinux 0x2b2ce78b kstrtos8 +EXPORT_SYMBOL vmlinux 0x2b68bab9 mmc_set_blocklen +EXPORT_SYMBOL vmlinux 0x2b7477e6 dev_add_pack +EXPORT_SYMBOL vmlinux 0x2b759aa3 blk_mq_all_tag_busy_iter +EXPORT_SYMBOL vmlinux 0x2b9da7a4 genl_lock +EXPORT_SYMBOL vmlinux 0x2ba707a8 sysctl_tcp_low_latency +EXPORT_SYMBOL vmlinux 0x2bb55d6e acpi_remove_notify_handler +EXPORT_SYMBOL vmlinux 0x2bc4abd1 skb_copy_and_csum_datagram_msg +EXPORT_SYMBOL vmlinux 0x2bd81ddc generic_shutdown_super +EXPORT_SYMBOL vmlinux 0x2bdb008d twl6040_get_vibralr_status +EXPORT_SYMBOL vmlinux 0x2bfeb410 acpi_get_handle +EXPORT_SYMBOL vmlinux 0x2c0fe13b pnp_start_dev +EXPORT_SYMBOL vmlinux 0x2c1594bd inet6_bind +EXPORT_SYMBOL vmlinux 0x2c202b17 security_path_truncate +EXPORT_SYMBOL vmlinux 0x2c256e1f input_scancode_to_scalar +EXPORT_SYMBOL vmlinux 0x2c2b315a xfrm_lookup +EXPORT_SYMBOL vmlinux 0x2c3e7612 md_cluster_ops +EXPORT_SYMBOL vmlinux 0x2c44c6eb cros_ec_prepare_tx +EXPORT_SYMBOL vmlinux 0x2c54e4da __inc_zone_page_state +EXPORT_SYMBOL vmlinux 0x2c65f0d4 blk_mq_kick_requeue_list +EXPORT_SYMBOL vmlinux 0x2c8dda16 security_file_permission +EXPORT_SYMBOL vmlinux 0x2c900d91 cpufreq_put_global_kobject +EXPORT_SYMBOL vmlinux 0x2c9bcdbf icmpv6_send +EXPORT_SYMBOL vmlinux 0x2c9cec34 udp_poll +EXPORT_SYMBOL vmlinux 0x2ca319a6 wrmsrl_safe_on_cpu +EXPORT_SYMBOL vmlinux 0x2cc40ecf fence_remove_callback +EXPORT_SYMBOL vmlinux 0x2cd79554 sock_efree +EXPORT_SYMBOL vmlinux 0x2ce08f93 block_is_partially_uptodate +EXPORT_SYMBOL vmlinux 0x2cf73cb7 kstrtoll_from_user +EXPORT_SYMBOL vmlinux 0x2d11d241 dev_alloc_name +EXPORT_SYMBOL vmlinux 0x2d140a58 genl_unlock +EXPORT_SYMBOL vmlinux 0x2d144e21 rdmsrl_on_cpu +EXPORT_SYMBOL vmlinux 0x2d183e02 cad_pid +EXPORT_SYMBOL vmlinux 0x2d1afecf __devm_request_region +EXPORT_SYMBOL vmlinux 0x2d29812e swiotlb_sync_sg_for_cpu +EXPORT_SYMBOL vmlinux 0x2d2f6531 scsi_target_resume +EXPORT_SYMBOL vmlinux 0x2d30596c from_kqid_munged +EXPORT_SYMBOL vmlinux 0x2d305c5c sock_no_getsockopt +EXPORT_SYMBOL vmlinux 0x2d3385d3 system_wq +EXPORT_SYMBOL vmlinux 0x2d443606 xfrm_lookup_route +EXPORT_SYMBOL vmlinux 0x2d5f14df __inet6_lookup_established +EXPORT_SYMBOL vmlinux 0x2d8e932c iterate_dir +EXPORT_SYMBOL vmlinux 0x2dcf3d35 get_acl +EXPORT_SYMBOL vmlinux 0x2dd16564 arch_register_cpu +EXPORT_SYMBOL vmlinux 0x2dd52216 simple_dname +EXPORT_SYMBOL vmlinux 0x2dd9a36b flex_array_shrink +EXPORT_SYMBOL vmlinux 0x2dddb6ae _raw_write_lock_irqsave +EXPORT_SYMBOL vmlinux 0x2ddfad11 bio_integrity_prep +EXPORT_SYMBOL vmlinux 0x2dec2291 locks_copy_conflock +EXPORT_SYMBOL vmlinux 0x2deda4a1 security_sk_classify_flow +EXPORT_SYMBOL vmlinux 0x2dedc4c2 acpi_format_exception +EXPORT_SYMBOL vmlinux 0x2def7f76 rtc_cmos_write +EXPORT_SYMBOL vmlinux 0x2e0d2f7f queue_work_on +EXPORT_SYMBOL vmlinux 0x2e19d8f1 lock_two_nondirectories +EXPORT_SYMBOL vmlinux 0x2e1ca751 clk_put +EXPORT_SYMBOL vmlinux 0x2e2b40d2 strncat +EXPORT_SYMBOL vmlinux 0x2e2ce9e0 sysctl_tcp_syncookies +EXPORT_SYMBOL vmlinux 0x2e6f8a64 ip_mc_join_group +EXPORT_SYMBOL vmlinux 0x2e8a59c4 kernel_write +EXPORT_SYMBOL vmlinux 0x2ea06734 sock_kfree_s +EXPORT_SYMBOL vmlinux 0x2ea237dc ppp_unregister_channel +EXPORT_SYMBOL vmlinux 0x2ee61b0e tty_port_alloc_xmit_buf +EXPORT_SYMBOL vmlinux 0x2ef63ad6 scsi_dev_info_list_del_keyed +EXPORT_SYMBOL vmlinux 0x2f03fc4b security_secmark_refcount_inc +EXPORT_SYMBOL vmlinux 0x2f064b55 allocate_resource +EXPORT_SYMBOL vmlinux 0x2f0a2c23 blk_pre_runtime_resume +EXPORT_SYMBOL vmlinux 0x2f1131fe blk_queue_max_segments +EXPORT_SYMBOL vmlinux 0x2f22da42 node_data +EXPORT_SYMBOL vmlinux 0x2f384db3 acpi_is_video_device +EXPORT_SYMBOL vmlinux 0x2f3fb21d scsi_remove_host +EXPORT_SYMBOL vmlinux 0x2f463da1 __alloc_page_frag +EXPORT_SYMBOL vmlinux 0x2f47086f add_to_page_cache_locked +EXPORT_SYMBOL vmlinux 0x2f88f68c pci_disable_link_state +EXPORT_SYMBOL vmlinux 0x2f99a793 gen_pool_create +EXPORT_SYMBOL vmlinux 0x2fa9b220 set_wb_congested +EXPORT_SYMBOL vmlinux 0x2fac45bc blkdev_fsync +EXPORT_SYMBOL vmlinux 0x2fb3750c on_each_cpu_mask +EXPORT_SYMBOL vmlinux 0x2fb6de5d add_device_randomness +EXPORT_SYMBOL vmlinux 0x2fbeb63b elevator_alloc +EXPORT_SYMBOL vmlinux 0x2fc117d9 jbd2_journal_update_sb_errno +EXPORT_SYMBOL vmlinux 0x2fe252cc unregister_inet6addr_notifier +EXPORT_SYMBOL vmlinux 0x2fe882c9 d_invalidate +EXPORT_SYMBOL vmlinux 0x2ff063b5 acpi_get_name +EXPORT_SYMBOL vmlinux 0x2ff2a9d8 vfs_fsync +EXPORT_SYMBOL vmlinux 0x2ff7944d input_release_device +EXPORT_SYMBOL vmlinux 0x301fb7ee netif_tx_stop_all_queues +EXPORT_SYMBOL vmlinux 0x30226ddf agp_device_command +EXPORT_SYMBOL vmlinux 0x303041c6 udp_flow_hashrnd +EXPORT_SYMBOL vmlinux 0x3041e267 tcp_check_req +EXPORT_SYMBOL vmlinux 0x304895bc proc_dointvec_ms_jiffies +EXPORT_SYMBOL vmlinux 0x3058ab45 phy_stop +EXPORT_SYMBOL vmlinux 0x305f2a7e debugfs_create_automount +EXPORT_SYMBOL vmlinux 0x307c2fd0 generic_check_addressable +EXPORT_SYMBOL vmlinux 0x3091ec3d phy_device_free +EXPORT_SYMBOL vmlinux 0x3096be16 names_cachep +EXPORT_SYMBOL vmlinux 0x30a80826 __kfifo_from_user +EXPORT_SYMBOL vmlinux 0x30b04526 ida_init +EXPORT_SYMBOL vmlinux 0x30e74134 tty_termios_copy_hw +EXPORT_SYMBOL vmlinux 0x3102d70b frontswap_curr_pages +EXPORT_SYMBOL vmlinux 0x3145216f pci_dev_present +EXPORT_SYMBOL vmlinux 0x3147857d default_red +EXPORT_SYMBOL vmlinux 0x31740423 twl6040_power +EXPORT_SYMBOL vmlinux 0x3174bd79 bitmap_clear +EXPORT_SYMBOL vmlinux 0x317dce6a dev_get_iflink +EXPORT_SYMBOL vmlinux 0x319e0726 __tracepoint_kmalloc +EXPORT_SYMBOL vmlinux 0x31ab9de4 from_kuid +EXPORT_SYMBOL vmlinux 0x31b13dcf set_pages_array_wb +EXPORT_SYMBOL vmlinux 0x31b31f5c csum_partial_copy_nocheck +EXPORT_SYMBOL vmlinux 0x31c2f8e4 agp_generic_alloc_by_type +EXPORT_SYMBOL vmlinux 0x31c36579 bio_copy_data +EXPORT_SYMBOL vmlinux 0x31cc0dbd bio_phys_segments +EXPORT_SYMBOL vmlinux 0x31db3198 out_of_line_wait_on_bit +EXPORT_SYMBOL vmlinux 0x31e76b57 recalibrate_cpu_khz +EXPORT_SYMBOL vmlinux 0x31f4ca79 simple_getattr +EXPORT_SYMBOL vmlinux 0x31f80b8f elv_add_request +EXPORT_SYMBOL vmlinux 0x3202435a wrmsr_safe_regs +EXPORT_SYMBOL vmlinux 0x320717b3 __check_sticky +EXPORT_SYMBOL vmlinux 0x3221f9af vm_insert_mixed +EXPORT_SYMBOL vmlinux 0x322bb0c5 tcp_setsockopt +EXPORT_SYMBOL vmlinux 0x322e9b87 phy_driver_unregister +EXPORT_SYMBOL vmlinux 0x324cfdb1 dquot_initialize +EXPORT_SYMBOL vmlinux 0x32551e0a freeze_bdev +EXPORT_SYMBOL vmlinux 0x326425ca pci_unmap_biosrom +EXPORT_SYMBOL vmlinux 0x32bcb6bb clk_add_alias +EXPORT_SYMBOL vmlinux 0x32d3f498 skb_push +EXPORT_SYMBOL vmlinux 0x32debb16 cpumask_next_and +EXPORT_SYMBOL vmlinux 0x32e6f1a0 acpi_video_backlight_string +EXPORT_SYMBOL vmlinux 0x32f30315 i2c_use_client +EXPORT_SYMBOL vmlinux 0x32fa852e mipi_dsi_driver_register_full +EXPORT_SYMBOL vmlinux 0x3305b2d6 alloc_anon_inode +EXPORT_SYMBOL vmlinux 0x3313e5f2 phy_start_interrupts +EXPORT_SYMBOL vmlinux 0x33183f0c update_devfreq +EXPORT_SYMBOL vmlinux 0x33224550 skb_queue_purge +EXPORT_SYMBOL vmlinux 0x3328c1e2 iov_iter_zero +EXPORT_SYMBOL vmlinux 0x332d78cd inet_proto_csum_replace16 +EXPORT_SYMBOL vmlinux 0x333cb37c __kfifo_dma_out_prepare_r +EXPORT_SYMBOL vmlinux 0x3356b90b cpu_tss +EXPORT_SYMBOL vmlinux 0x335ab5e1 km_is_alive +EXPORT_SYMBOL vmlinux 0x336a4138 set_anon_super +EXPORT_SYMBOL vmlinux 0x3376ad90 mmc_erase +EXPORT_SYMBOL vmlinux 0x337953f5 simple_write_begin +EXPORT_SYMBOL vmlinux 0x339cd56e bitmap_start_sync +EXPORT_SYMBOL vmlinux 0x33b59bdb pci_request_region_exclusive +EXPORT_SYMBOL vmlinux 0x33b84f74 copy_page +EXPORT_SYMBOL vmlinux 0x33c7435c prandom_u32_state +EXPORT_SYMBOL vmlinux 0x33f0768c cpufreq_quick_get_max +EXPORT_SYMBOL vmlinux 0x33f6b987 devm_request_any_context_irq +EXPORT_SYMBOL vmlinux 0x33f83998 clear_inode +EXPORT_SYMBOL vmlinux 0x33f842bd pm860x_reg_read +EXPORT_SYMBOL vmlinux 0x33fcf44a __kfifo_out_r +EXPORT_SYMBOL vmlinux 0x34184afe current_kernel_time +EXPORT_SYMBOL vmlinux 0x341cbed2 cpu_present_mask +EXPORT_SYMBOL vmlinux 0x34285aad netif_napi_add +EXPORT_SYMBOL vmlinux 0x3432c808 genphy_read_status +EXPORT_SYMBOL vmlinux 0x3462bc61 reservation_object_add_excl_fence +EXPORT_SYMBOL vmlinux 0x3465caa3 cpu_maps_update_begin +EXPORT_SYMBOL vmlinux 0x347013de nla_validate +EXPORT_SYMBOL vmlinux 0x34889462 ppp_input_error +EXPORT_SYMBOL vmlinux 0x349cba85 strchr +EXPORT_SYMBOL vmlinux 0x349e950f nf_ip_checksum +EXPORT_SYMBOL vmlinux 0x34c3b562 blk_fetch_request +EXPORT_SYMBOL vmlinux 0x34ef3af3 bdi_set_max_ratio +EXPORT_SYMBOL vmlinux 0x34f01ea9 sock_create_kern +EXPORT_SYMBOL vmlinux 0x34f223a8 dquot_get_state +EXPORT_SYMBOL vmlinux 0x34f3484e security_tun_dev_attach_queue +EXPORT_SYMBOL vmlinux 0x35034bcb alloc_fddidev +EXPORT_SYMBOL vmlinux 0x351615a3 del_gendisk +EXPORT_SYMBOL vmlinux 0x3517383e register_reboot_notifier +EXPORT_SYMBOL vmlinux 0x3529c797 udp_prot +EXPORT_SYMBOL vmlinux 0x3539f11b match_strlcpy +EXPORT_SYMBOL vmlinux 0x353abfbb scsi_track_queue_full +EXPORT_SYMBOL vmlinux 0x353e21e3 acpi_bios_warning +EXPORT_SYMBOL vmlinux 0x3548d80f ipv6_dev_get_saddr +EXPORT_SYMBOL vmlinux 0x35524462 x86_dma_fallback_dev +EXPORT_SYMBOL vmlinux 0x3558da0d jbd2_journal_blocks_per_page +EXPORT_SYMBOL vmlinux 0x356461c8 rtc_time64_to_tm +EXPORT_SYMBOL vmlinux 0x356b6215 netpoll_poll_disable +EXPORT_SYMBOL vmlinux 0x356facb3 skb_pull +EXPORT_SYMBOL vmlinux 0x35966e5b elevator_init +EXPORT_SYMBOL vmlinux 0x35a88f28 zlib_inflateInit2 +EXPORT_SYMBOL vmlinux 0x35c1da71 scsi_print_result +EXPORT_SYMBOL vmlinux 0x35c8a22b inet_addr_type +EXPORT_SYMBOL vmlinux 0x35f714e9 nd_btt_probe +EXPORT_SYMBOL vmlinux 0x35ffcbfb __get_page_tail +EXPORT_SYMBOL vmlinux 0x360b1afe probe_irq_mask +EXPORT_SYMBOL vmlinux 0x361f0629 bmap +EXPORT_SYMBOL vmlinux 0x3637f396 pci_disable_device +EXPORT_SYMBOL vmlinux 0x367eb816 tcf_exts_validate +EXPORT_SYMBOL vmlinux 0x369e1115 kstrtou8_from_user +EXPORT_SYMBOL vmlinux 0x36bd681b groups_alloc +EXPORT_SYMBOL vmlinux 0x36e35a65 phy_register_fixup_for_id +EXPORT_SYMBOL vmlinux 0x3701a196 csum_partial_copy_to_user +EXPORT_SYMBOL vmlinux 0x372fdb86 netdev_notify_peers +EXPORT_SYMBOL vmlinux 0x37362a0a inet6_protos +EXPORT_SYMBOL vmlinux 0x374433ce acpi_bus_register_driver +EXPORT_SYMBOL vmlinux 0x3744cf36 vmalloc_to_pfn +EXPORT_SYMBOL vmlinux 0x3767c91f alloc_etherdev_mqs +EXPORT_SYMBOL vmlinux 0x377845d9 jbd2_journal_dirty_metadata +EXPORT_SYMBOL vmlinux 0x377f7338 key_revoke +EXPORT_SYMBOL vmlinux 0x378bcb1d tcp_ioctl +EXPORT_SYMBOL vmlinux 0x37933c2e mdiobus_alloc_size +EXPORT_SYMBOL vmlinux 0x379825f8 __napi_alloc_skb +EXPORT_SYMBOL vmlinux 0x37a297b9 tty_unlock +EXPORT_SYMBOL vmlinux 0x37af3190 dm_table_run_md_queue_async +EXPORT_SYMBOL vmlinux 0x37b0b9e3 phy_connect_direct +EXPORT_SYMBOL vmlinux 0x37bd6972 register_qdisc +EXPORT_SYMBOL vmlinux 0x37befc70 jiffies_to_msecs +EXPORT_SYMBOL vmlinux 0x37db8f19 dmi_get_date +EXPORT_SYMBOL vmlinux 0x37fb932c dquot_writeback_dquots +EXPORT_SYMBOL vmlinux 0x38099e13 wrmsrl_on_cpu +EXPORT_SYMBOL vmlinux 0x381a798a setup_max_cpus +EXPORT_SYMBOL vmlinux 0x384267f6 devm_backlight_device_register +EXPORT_SYMBOL vmlinux 0x38570cfd pci_bus_put +EXPORT_SYMBOL vmlinux 0x385a4703 dma_async_device_unregister +EXPORT_SYMBOL vmlinux 0x38693672 vfs_link +EXPORT_SYMBOL vmlinux 0x38869d88 kstat +EXPORT_SYMBOL vmlinux 0x388b435e pci_alloc_dev +EXPORT_SYMBOL vmlinux 0x388bbb7e i2c_smbus_read_byte +EXPORT_SYMBOL vmlinux 0x389dd2c1 t10_pi_type3_ip +EXPORT_SYMBOL vmlinux 0x38a71b7e pci_free_resource_list +EXPORT_SYMBOL vmlinux 0x38a9f7c5 in6addr_loopback +EXPORT_SYMBOL vmlinux 0x38af23d7 blk_limits_max_hw_sectors +EXPORT_SYMBOL vmlinux 0x38b526ec blk_put_queue +EXPORT_SYMBOL vmlinux 0x38d321c0 pci_disable_msi +EXPORT_SYMBOL vmlinux 0x38d59d59 sk_prot_clear_portaddr_nulls +EXPORT_SYMBOL vmlinux 0x38d7366c should_remove_suid +EXPORT_SYMBOL vmlinux 0x38f33bed dump_fpu +EXPORT_SYMBOL vmlinux 0x39122bbb rt6_lookup +EXPORT_SYMBOL vmlinux 0x3928efe9 __per_cpu_offset +EXPORT_SYMBOL vmlinux 0x3939f8f0 rfkill_pause_polling +EXPORT_SYMBOL vmlinux 0x393d4de9 crc32_le +EXPORT_SYMBOL vmlinux 0x393f53d0 netlink_broadcast +EXPORT_SYMBOL vmlinux 0x39461d6a in_egroup_p +EXPORT_SYMBOL vmlinux 0x3948e11e xfrm_state_alloc +EXPORT_SYMBOL vmlinux 0x39495e09 __d_drop +EXPORT_SYMBOL vmlinux 0x3955fcf6 __kfifo_in_r +EXPORT_SYMBOL vmlinux 0x39991865 icmp_global_allow +EXPORT_SYMBOL vmlinux 0x399ad043 __kfifo_dma_out_finish_r +EXPORT_SYMBOL vmlinux 0x39a055f3 acpi_remove_gpe_handler +EXPORT_SYMBOL vmlinux 0x39a5e8dd set_pages_uc +EXPORT_SYMBOL vmlinux 0x39b52d19 __bitmap_and +EXPORT_SYMBOL vmlinux 0x39cfa01b mark_page_accessed +EXPORT_SYMBOL vmlinux 0x39e0557a devm_get_gpiod_from_child +EXPORT_SYMBOL vmlinux 0x39e509e3 pnp_activate_dev +EXPORT_SYMBOL vmlinux 0x39f1c2f4 ida_get_new_above +EXPORT_SYMBOL vmlinux 0x3a040d4a cdrom_number_of_slots +EXPORT_SYMBOL vmlinux 0x3a08475f platform_thermal_notify +EXPORT_SYMBOL vmlinux 0x3a0b0b62 remove_proc_entry +EXPORT_SYMBOL vmlinux 0x3a32839e intel_gtt_chipset_flush +EXPORT_SYMBOL vmlinux 0x3a3d836e pci_dev_put +EXPORT_SYMBOL vmlinux 0x3a959c12 make_kuid +EXPORT_SYMBOL vmlinux 0x3a9b5f2d dma_set_mask +EXPORT_SYMBOL vmlinux 0x3a9b6fb9 blk_unregister_region +EXPORT_SYMBOL vmlinux 0x3ab397d9 tc_classify_compat +EXPORT_SYMBOL vmlinux 0x3aeaf208 skb_make_writable +EXPORT_SYMBOL vmlinux 0x3af0f127 i2c_verify_adapter +EXPORT_SYMBOL vmlinux 0x3b12d3a9 blk_integrity_unregister +EXPORT_SYMBOL vmlinux 0x3b27cf7d __dev_getfirstbyhwtype +EXPORT_SYMBOL vmlinux 0x3b33f2e3 set_device_ro +EXPORT_SYMBOL vmlinux 0x3b4bb579 tcp_poll +EXPORT_SYMBOL vmlinux 0x3b640ea9 mipi_dsi_host_unregister +EXPORT_SYMBOL vmlinux 0x3b644591 __bitmap_shift_left +EXPORT_SYMBOL vmlinux 0x3b6e57e4 acpi_bus_get_device +EXPORT_SYMBOL vmlinux 0x3b6f6cd2 udp_table +EXPORT_SYMBOL vmlinux 0x3bb5114a prepare_to_wait +EXPORT_SYMBOL vmlinux 0x3bbd1a06 gnet_stats_start_copy_compat +EXPORT_SYMBOL vmlinux 0x3bc5ca31 blk_register_region +EXPORT_SYMBOL vmlinux 0x3c02e57c xfrm_state_insert +EXPORT_SYMBOL vmlinux 0x3c1770a2 mpage_writepage +EXPORT_SYMBOL vmlinux 0x3c232203 netdev_lower_get_next +EXPORT_SYMBOL vmlinux 0x3c23f0da inode_owner_or_capable +EXPORT_SYMBOL vmlinux 0x3c253f21 __cleancache_invalidate_fs +EXPORT_SYMBOL vmlinux 0x3c3fce39 __local_bh_enable_ip +EXPORT_SYMBOL vmlinux 0x3c483012 radix_tree_delete +EXPORT_SYMBOL vmlinux 0x3c60b67f agp_generic_type_to_mask_type +EXPORT_SYMBOL vmlinux 0x3c7014c2 d_rehash +EXPORT_SYMBOL vmlinux 0x3c7ba265 ll_rw_block +EXPORT_SYMBOL vmlinux 0x3c80c06c kstrtoull +EXPORT_SYMBOL vmlinux 0x3c9b802f scsi_eh_finish_cmd +EXPORT_SYMBOL vmlinux 0x3ca9e6f3 xfrm_policy_walk +EXPORT_SYMBOL vmlinux 0x3cb2c477 free_inode_nonrcu +EXPORT_SYMBOL vmlinux 0x3cb66f4e sk_alloc +EXPORT_SYMBOL vmlinux 0x3cccf90f vfs_llseek +EXPORT_SYMBOL vmlinux 0x3ce4ca6f disable_irq +EXPORT_SYMBOL vmlinux 0x3d34a27a __skb_warn_lro_forwarding +EXPORT_SYMBOL vmlinux 0x3d39a6ee down_read_trylock +EXPORT_SYMBOL vmlinux 0x3d555811 hdmi_infoframe_log +EXPORT_SYMBOL vmlinux 0x3d790ccb alloc_xenballooned_pages +EXPORT_SYMBOL vmlinux 0x3d7c1ed7 msrs_alloc +EXPORT_SYMBOL vmlinux 0x3d99abde param_set_byte +EXPORT_SYMBOL vmlinux 0x3d9ee9f0 clear_page +EXPORT_SYMBOL vmlinux 0x3da171f9 pci_mem_start +EXPORT_SYMBOL vmlinux 0x3da73f30 mmc_add_host +EXPORT_SYMBOL vmlinux 0x3dbb1018 phy_attach_direct +EXPORT_SYMBOL vmlinux 0x3dbf36c9 sg_copy_buffer +EXPORT_SYMBOL vmlinux 0x3dcb88a0 irq_set_handler_data +EXPORT_SYMBOL vmlinux 0x3ded28ed dquot_operations +EXPORT_SYMBOL vmlinux 0x3dfc897c seq_hlist_start_head +EXPORT_SYMBOL vmlinux 0x3e009c1f pid_task +EXPORT_SYMBOL vmlinux 0x3e24fd81 agp3_generic_tlbflush +EXPORT_SYMBOL vmlinux 0x3e28e8cf d_set_d_op +EXPORT_SYMBOL vmlinux 0x3e2ae3a8 acpi_release_global_lock +EXPORT_SYMBOL vmlinux 0x3e3aed13 tcf_em_register +EXPORT_SYMBOL vmlinux 0x3e414091 pci_wait_for_pending_transaction +EXPORT_SYMBOL vmlinux 0x3e4e37ad netlink_kernel_release +EXPORT_SYMBOL vmlinux 0x3e632ee7 generic_file_read_iter +EXPORT_SYMBOL vmlinux 0x3e77f762 unmap_underlying_metadata +EXPORT_SYMBOL vmlinux 0x3e806021 __frontswap_store +EXPORT_SYMBOL vmlinux 0x3e882943 pcibios_align_resource +EXPORT_SYMBOL vmlinux 0x3e8d4c60 vfs_readf +EXPORT_SYMBOL vmlinux 0x3e90c73a make_bad_inode +EXPORT_SYMBOL vmlinux 0x3e9110fa __hw_addr_unsync +EXPORT_SYMBOL vmlinux 0x3e95083c vme_slave_get +EXPORT_SYMBOL vmlinux 0x3e9e7574 dquot_destroy +EXPORT_SYMBOL vmlinux 0x3ea83106 bitmap_cond_end_sync +EXPORT_SYMBOL vmlinux 0x3ec76c04 filp_open +EXPORT_SYMBOL vmlinux 0x3ece9fb4 drop_super +EXPORT_SYMBOL vmlinux 0x3ed271bd dma_find_channel +EXPORT_SYMBOL vmlinux 0x3ee91e45 netdev_lower_get_next_private_rcu +EXPORT_SYMBOL vmlinux 0x3ef7643d account_page_dirtied +EXPORT_SYMBOL vmlinux 0x3efe7dc9 param_get_ushort +EXPORT_SYMBOL vmlinux 0x3f0546a8 ioread32_rep +EXPORT_SYMBOL vmlinux 0x3f079d38 __skb_checksum_complete_head +EXPORT_SYMBOL vmlinux 0x3f0d9f32 _raw_read_trylock +EXPORT_SYMBOL vmlinux 0x3f20ca97 rtc_lock +EXPORT_SYMBOL vmlinux 0x3f4547a7 put_unused_fd +EXPORT_SYMBOL vmlinux 0x3f541760 tty_free_termios +EXPORT_SYMBOL vmlinux 0x3f7b2feb netif_carrier_on +EXPORT_SYMBOL vmlinux 0x3f7e554b pci_read_vpd +EXPORT_SYMBOL vmlinux 0x3f816a5b input_register_handle +EXPORT_SYMBOL vmlinux 0x3f8dc960 vfs_readv +EXPORT_SYMBOL vmlinux 0x3fa69fcc param_set_uint +EXPORT_SYMBOL vmlinux 0x3fcb9a10 mipi_dsi_detach +EXPORT_SYMBOL vmlinux 0x3fcc7bf4 kthread_create_on_node +EXPORT_SYMBOL vmlinux 0x3fd5a447 kernel_sendpage +EXPORT_SYMBOL vmlinux 0x3fe2ccbe memweight +EXPORT_SYMBOL vmlinux 0x3fec048f sg_next +EXPORT_SYMBOL vmlinux 0x400015d8 search_binary_handler +EXPORT_SYMBOL vmlinux 0x4005ac38 devfreq_remove_device +EXPORT_SYMBOL vmlinux 0x40064376 fb_show_logo +EXPORT_SYMBOL vmlinux 0x4024aa18 fb_blank +EXPORT_SYMBOL vmlinux 0x402b8281 __request_module +EXPORT_SYMBOL vmlinux 0x4039918a clk_register_clkdev +EXPORT_SYMBOL vmlinux 0x40411faf ip_check_defrag +EXPORT_SYMBOL vmlinux 0x4043fbe1 mb_cache_entry_insert +EXPORT_SYMBOL vmlinux 0x40584251 bio_integrity_enabled +EXPORT_SYMBOL vmlinux 0x405c1144 get_seconds +EXPORT_SYMBOL vmlinux 0x406ba71c may_umount_tree +EXPORT_SYMBOL vmlinux 0x408ff42c gen_pool_dma_alloc +EXPORT_SYMBOL vmlinux 0x40973662 sysctl_udp_mem +EXPORT_SYMBOL vmlinux 0x4097fa45 acpi_read_bit_register +EXPORT_SYMBOL vmlinux 0x409873e3 tty_termios_baud_rate +EXPORT_SYMBOL vmlinux 0x40a27c37 scsi_dev_info_remove_list +EXPORT_SYMBOL vmlinux 0x40a9b349 vzalloc +EXPORT_SYMBOL vmlinux 0x40c01859 gen_pool_best_fit +EXPORT_SYMBOL vmlinux 0x40c0d275 set_pages_array_uc +EXPORT_SYMBOL vmlinux 0x40c7247c si_meminfo +EXPORT_SYMBOL vmlinux 0x40c89d46 acpi_get_table_by_index +EXPORT_SYMBOL vmlinux 0x40cfa935 iter_file_splice_write +EXPORT_SYMBOL vmlinux 0x40d04664 console_trylock +EXPORT_SYMBOL vmlinux 0x40d59096 unregister_restart_handler +EXPORT_SYMBOL vmlinux 0x40e4721e iw_handler_set_spy +EXPORT_SYMBOL vmlinux 0x40edd4b6 dump_emit +EXPORT_SYMBOL vmlinux 0x41247af4 pm8606_osc_disable +EXPORT_SYMBOL vmlinux 0x4126ad99 devm_devfreq_remove_device +EXPORT_SYMBOL vmlinux 0x413f9c9b find_get_pages_tag +EXPORT_SYMBOL vmlinux 0x41482d8b strndup_user +EXPORT_SYMBOL vmlinux 0x415de382 blk_init_tags +EXPORT_SYMBOL vmlinux 0x41731062 amd_iommu_domain_clear_gcr3 +EXPORT_SYMBOL vmlinux 0x4188d439 neigh_rand_reach_time +EXPORT_SYMBOL vmlinux 0x41c5af5f __tcf_em_tree_match +EXPORT_SYMBOL vmlinux 0x41c8bf4d xfrm_input_unregister_afinfo +EXPORT_SYMBOL vmlinux 0x41dd3101 inet_sock_destruct +EXPORT_SYMBOL vmlinux 0x41f96978 set_user_nice +EXPORT_SYMBOL vmlinux 0x42160169 flush_workqueue +EXPORT_SYMBOL vmlinux 0x42346789 nf_register_hook +EXPORT_SYMBOL vmlinux 0x42350e8d ucs2_strlen +EXPORT_SYMBOL vmlinux 0x4248a1a3 kernel_connect +EXPORT_SYMBOL vmlinux 0x4248ae3c single_task_running +EXPORT_SYMBOL vmlinux 0x424d3620 zlib_inflateIncomp +EXPORT_SYMBOL vmlinux 0x42526abf copy_to_iter +EXPORT_SYMBOL vmlinux 0x42529f07 mmc_stop_bkops +EXPORT_SYMBOL vmlinux 0x42595e58 vgacon_text_force +EXPORT_SYMBOL vmlinux 0x425c5d4b fsnotify_alloc_group +EXPORT_SYMBOL vmlinux 0x425d81a1 t10_pi_type1_ip +EXPORT_SYMBOL vmlinux 0x42658fae mmc_set_data_timeout +EXPORT_SYMBOL vmlinux 0x42703159 devm_release_resource +EXPORT_SYMBOL vmlinux 0x4285f63c pskb_expand_head +EXPORT_SYMBOL vmlinux 0x42948408 skb_vlan_push +EXPORT_SYMBOL vmlinux 0x42a1b208 gen_pool_first_fit +EXPORT_SYMBOL vmlinux 0x42b025d8 bio_add_pc_page +EXPORT_SYMBOL vmlinux 0x42c6a081 tcf_hash_search +EXPORT_SYMBOL vmlinux 0x42c6c8a9 devfreq_unregister_opp_notifier +EXPORT_SYMBOL vmlinux 0x42c8de35 ioremap_nocache +EXPORT_SYMBOL vmlinux 0x4302d0eb free_pages +EXPORT_SYMBOL vmlinux 0x4351577a fb_parse_edid +EXPORT_SYMBOL vmlinux 0x43648abe eth_header_cache_update +EXPORT_SYMBOL vmlinux 0x436c2179 iowrite32 +EXPORT_SYMBOL vmlinux 0x436ccd38 cdrom_mode_select +EXPORT_SYMBOL vmlinux 0x437fc2f9 mnt_drop_write_file +EXPORT_SYMBOL vmlinux 0x438610bd security_tun_dev_alloc_security +EXPORT_SYMBOL vmlinux 0x4394d1d2 __vfs_read +EXPORT_SYMBOL vmlinux 0x43b9acfa page_waitqueue +EXPORT_SYMBOL vmlinux 0x43cc5ea1 rtnetlink_put_metrics +EXPORT_SYMBOL vmlinux 0x43cfe6cb lockref_put_or_lock +EXPORT_SYMBOL vmlinux 0x43f23311 dm_table_get_md +EXPORT_SYMBOL vmlinux 0x440497e5 commit_creds +EXPORT_SYMBOL vmlinux 0x4411c503 prandom_seed +EXPORT_SYMBOL vmlinux 0x44359e35 i2c_smbus_write_block_data +EXPORT_SYMBOL vmlinux 0x4436f2df unregister_framebuffer +EXPORT_SYMBOL vmlinux 0x4473ae76 scsi_ioctl +EXPORT_SYMBOL vmlinux 0x447b5a83 cfb_fillrect +EXPORT_SYMBOL vmlinux 0x4489da02 register_sysctl_table +EXPORT_SYMBOL vmlinux 0x448e085f prepare_to_wait_exclusive +EXPORT_SYMBOL vmlinux 0x448eac3e kmemdup +EXPORT_SYMBOL vmlinux 0x449396d5 send_sig +EXPORT_SYMBOL vmlinux 0x4499186c kobject_get +EXPORT_SYMBOL vmlinux 0x449ad0a7 memcmp +EXPORT_SYMBOL vmlinux 0x449fe84b acpi_set_firmware_waking_vectors +EXPORT_SYMBOL vmlinux 0x44a81d5f acpi_evaluate_object +EXPORT_SYMBOL vmlinux 0x44aa0c6f current_task +EXPORT_SYMBOL vmlinux 0x44aaf30f tsc_khz +EXPORT_SYMBOL vmlinux 0x44b1d426 __dynamic_pr_debug +EXPORT_SYMBOL vmlinux 0x44cddfa0 kern_path_mountpoint +EXPORT_SYMBOL vmlinux 0x44d1736d xfrm_state_unregister_afinfo +EXPORT_SYMBOL vmlinux 0x44e9a829 match_token +EXPORT_SYMBOL vmlinux 0x44f16a7a set_binfmt +EXPORT_SYMBOL vmlinux 0x44f69964 _raw_read_unlock_bh +EXPORT_SYMBOL vmlinux 0x44ff993d param_get_short +EXPORT_SYMBOL vmlinux 0x45081703 ec_get_handle +EXPORT_SYMBOL vmlinux 0x451fc4e5 serial8250_do_pm +EXPORT_SYMBOL vmlinux 0x4534c4c4 iw_handler_get_spy +EXPORT_SYMBOL vmlinux 0x453a26d5 migrate_page +EXPORT_SYMBOL vmlinux 0x453c8403 pci_msi_enabled +EXPORT_SYMBOL vmlinux 0x4578f528 __kfifo_to_user +EXPORT_SYMBOL vmlinux 0x45798ae8 mmc_align_data_size +EXPORT_SYMBOL vmlinux 0x457caeff nd_region_to_nstype +EXPORT_SYMBOL vmlinux 0x4581e2ee notify_change +EXPORT_SYMBOL vmlinux 0x45879099 forget_cached_acl +EXPORT_SYMBOL vmlinux 0x4590d5d0 amd_iommu_domain_set_gcr3 +EXPORT_SYMBOL vmlinux 0x45a6be13 cpufreq_sysfs_remove_file +EXPORT_SYMBOL vmlinux 0x45a765cf pci_add_resource +EXPORT_SYMBOL vmlinux 0x45a8b7b4 generic_error_remove_page +EXPORT_SYMBOL vmlinux 0x45cfacba unload_nls +EXPORT_SYMBOL vmlinux 0x45de23cc gnet_stats_start_copy +EXPORT_SYMBOL vmlinux 0x45eb77e2 eth_change_mtu +EXPORT_SYMBOL vmlinux 0x4604a43a mem_section +EXPORT_SYMBOL vmlinux 0x460cc059 ppp_output_wakeup +EXPORT_SYMBOL vmlinux 0x46150716 tty_driver_kref_put +EXPORT_SYMBOL vmlinux 0x46177fa4 napi_gro_frags +EXPORT_SYMBOL vmlinux 0x461ac773 kstrtol_from_user +EXPORT_SYMBOL vmlinux 0x461e6c85 __alloc_skb +EXPORT_SYMBOL vmlinux 0x4629334c __preempt_count +EXPORT_SYMBOL vmlinux 0x462c73fb proc_remove +EXPORT_SYMBOL vmlinux 0x462f20fb pagecache_isize_extended +EXPORT_SYMBOL vmlinux 0x46491c0a netpoll_cleanup +EXPORT_SYMBOL vmlinux 0x46569a8e try_to_release_page +EXPORT_SYMBOL vmlinux 0x4656c2c1 stop_tty +EXPORT_SYMBOL vmlinux 0x465cab34 secure_ipv6_port_ephemeral +EXPORT_SYMBOL vmlinux 0x46649cd1 vme_lm_set +EXPORT_SYMBOL vmlinux 0x466c14a7 __delay +EXPORT_SYMBOL vmlinux 0x467df16d netdev_rss_key_fill +EXPORT_SYMBOL vmlinux 0x469dfbf2 blk_mq_run_hw_queues +EXPORT_SYMBOL vmlinux 0x46c47fb6 __node_distance +EXPORT_SYMBOL vmlinux 0x46d6fc9c pcie_capability_clear_and_set_dword +EXPORT_SYMBOL vmlinux 0x46feb099 dm_read_arg +EXPORT_SYMBOL vmlinux 0x4721202b clear_nlink +EXPORT_SYMBOL vmlinux 0x4740034a agp_create_memory +EXPORT_SYMBOL vmlinux 0x47416e14 cpu_rmap_add +EXPORT_SYMBOL vmlinux 0x474720b4 proto_unregister +EXPORT_SYMBOL vmlinux 0x475f010b acpi_purge_cached_objects +EXPORT_SYMBOL vmlinux 0x4764edd6 dquot_mark_dquot_dirty +EXPORT_SYMBOL vmlinux 0x477380ea mb_cache_entry_free +EXPORT_SYMBOL vmlinux 0x4775e9c3 pci_msi_vec_count +EXPORT_SYMBOL vmlinux 0x477e6dcb amd_iommu_pc_get_set_reg_val +EXPORT_SYMBOL vmlinux 0x477fd48a mmc_can_sanitize +EXPORT_SYMBOL vmlinux 0x478d10b2 ht_destroy_irq +EXPORT_SYMBOL vmlinux 0x47939e0d __tasklet_hi_schedule +EXPORT_SYMBOL vmlinux 0x479c3c86 find_next_zero_bit +EXPORT_SYMBOL vmlinux 0x47a13c19 kfree_skb_list +EXPORT_SYMBOL vmlinux 0x47b95109 kernel_recvmsg +EXPORT_SYMBOL vmlinux 0x47bd79ac alloc_fcdev +EXPORT_SYMBOL vmlinux 0x47d6ee06 dev_disable_lro +EXPORT_SYMBOL vmlinux 0x47e40023 linkwatch_fire_event +EXPORT_SYMBOL vmlinux 0x47fc30b2 single_open_size +EXPORT_SYMBOL vmlinux 0x480e2987 clkdev_add +EXPORT_SYMBOL vmlinux 0x48165441 fb_find_mode +EXPORT_SYMBOL vmlinux 0x48193639 acpi_lid_open +EXPORT_SYMBOL vmlinux 0x481cb9ab acpi_enter_sleep_state_prep +EXPORT_SYMBOL vmlinux 0x483a44b3 vme_lm_request +EXPORT_SYMBOL vmlinux 0x4841bdee strnchr +EXPORT_SYMBOL vmlinux 0x48513100 console_start +EXPORT_SYMBOL vmlinux 0x48572eb9 nvdimm_revalidate_disk +EXPORT_SYMBOL vmlinux 0x4859b8bb rtc_year_days +EXPORT_SYMBOL vmlinux 0x485ad598 md_register_thread +EXPORT_SYMBOL vmlinux 0x486c5423 dmam_free_noncoherent +EXPORT_SYMBOL vmlinux 0x486d414e eth_mac_addr +EXPORT_SYMBOL vmlinux 0x48b23797 read_cache_page_gfp +EXPORT_SYMBOL vmlinux 0x48b99a13 vme_lm_free +EXPORT_SYMBOL vmlinux 0x48c05e40 bio_clone_bioset +EXPORT_SYMBOL vmlinux 0x48cccd2a phy_ethtool_get_wol +EXPORT_SYMBOL vmlinux 0x48d50e79 amd_iommu_register_ppr_notifier +EXPORT_SYMBOL vmlinux 0x48d75944 serio_unregister_driver +EXPORT_SYMBOL vmlinux 0x48e0a6bd security_path_symlink +EXPORT_SYMBOL vmlinux 0x48e83796 netlink_capable +EXPORT_SYMBOL vmlinux 0x48fb76b8 dquot_set_dqblk +EXPORT_SYMBOL vmlinux 0x48ff11f5 bio_alloc_bioset +EXPORT_SYMBOL vmlinux 0x4903008c iunique +EXPORT_SYMBOL vmlinux 0x49045426 icmp_err_convert +EXPORT_SYMBOL vmlinux 0x494ddfa9 dev_printk_emit +EXPORT_SYMBOL vmlinux 0x494e3393 vm_get_page_prot +EXPORT_SYMBOL vmlinux 0x495c96f8 posix_acl_init +EXPORT_SYMBOL vmlinux 0x49603fb8 security_sb_copy_data +EXPORT_SYMBOL vmlinux 0x496d2f76 vm_iomap_memory +EXPORT_SYMBOL vmlinux 0x4989ef9b filemap_fault +EXPORT_SYMBOL vmlinux 0x49b07aec tcp_select_initial_window +EXPORT_SYMBOL vmlinux 0x49b163b8 acpi_bus_scan +EXPORT_SYMBOL vmlinux 0x49bfd2ae elv_unregister_queue +EXPORT_SYMBOL vmlinux 0x49c1c0b0 genlmsg_put +EXPORT_SYMBOL vmlinux 0x49c79d00 inet_frags_init +EXPORT_SYMBOL vmlinux 0x49f3c8dc to_ndd +EXPORT_SYMBOL vmlinux 0x49f71442 dev_close_many +EXPORT_SYMBOL vmlinux 0x4a05fe9e km_query +EXPORT_SYMBOL vmlinux 0x4a150779 security_path_unlink +EXPORT_SYMBOL vmlinux 0x4a3c9e5c vga_put +EXPORT_SYMBOL vmlinux 0x4a3fe28b pci_scan_root_bus +EXPORT_SYMBOL vmlinux 0x4a50579e tcf_destroy_chain +EXPORT_SYMBOL vmlinux 0x4a63d126 vga_switcheroo_client_fb_set +EXPORT_SYMBOL vmlinux 0x4a785ead sock_rfree +EXPORT_SYMBOL vmlinux 0x4a8fc541 jbd2_journal_get_undo_access +EXPORT_SYMBOL vmlinux 0x4aad2015 xfrm_alloc_spi +EXPORT_SYMBOL vmlinux 0x4abbe3c2 vm_brk +EXPORT_SYMBOL vmlinux 0x4acd93d3 release_resource +EXPORT_SYMBOL vmlinux 0x4ad1a5df block_invalidatepage +EXPORT_SYMBOL vmlinux 0x4af6c3b1 write_dirty_buffer +EXPORT_SYMBOL vmlinux 0x4afe9a77 scsi_partsize +EXPORT_SYMBOL vmlinux 0x4b085dbf agp3_generic_configure +EXPORT_SYMBOL vmlinux 0x4b0e2c74 security_task_getsecid +EXPORT_SYMBOL vmlinux 0x4b0f1776 sk_stream_error +EXPORT_SYMBOL vmlinux 0x4b2f6d23 nf_reinject +EXPORT_SYMBOL vmlinux 0x4b344686 sb_min_blocksize +EXPORT_SYMBOL vmlinux 0x4b3a0481 __alloc_pages_nodemask +EXPORT_SYMBOL vmlinux 0x4b51c38b iterate_supers_type +EXPORT_SYMBOL vmlinux 0x4b5fd49e dm_kcopyd_do_callback +EXPORT_SYMBOL vmlinux 0x4b667176 lg_local_lock_cpu +EXPORT_SYMBOL vmlinux 0x4b71d10e kill_pid +EXPORT_SYMBOL vmlinux 0x4b7a69ab mipi_dsi_dcs_set_display_on +EXPORT_SYMBOL vmlinux 0x4b7ad32b tty_port_tty_set +EXPORT_SYMBOL vmlinux 0x4b88c2fb param_ops_long +EXPORT_SYMBOL vmlinux 0x4b9c1288 pci_bus_write_config_byte +EXPORT_SYMBOL vmlinux 0x4b9dfb04 _raw_spin_trylock_bh +EXPORT_SYMBOL vmlinux 0x4baf35a7 vme_master_get +EXPORT_SYMBOL vmlinux 0x4c0a47a3 tcp_init_cgroup +EXPORT_SYMBOL vmlinux 0x4c17c4ac nd_integrity_init +EXPORT_SYMBOL vmlinux 0x4c249200 __starget_for_each_device +EXPORT_SYMBOL vmlinux 0x4c346a53 kvasprintf +EXPORT_SYMBOL vmlinux 0x4c4761af set_trace_device +EXPORT_SYMBOL vmlinux 0x4c4f1833 boot_cpu_data +EXPORT_SYMBOL vmlinux 0x4c624a13 page_follow_link_light +EXPORT_SYMBOL vmlinux 0x4c6d4a0d try_to_writeback_inodes_sb_nr +EXPORT_SYMBOL vmlinux 0x4c878322 iosf_mbi_modify +EXPORT_SYMBOL vmlinux 0x4c87eef4 blk_rq_set_block_pc +EXPORT_SYMBOL vmlinux 0x4c8ad03d param_get_ullong +EXPORT_SYMBOL vmlinux 0x4c8e8721 input_mt_report_pointer_emulation +EXPORT_SYMBOL vmlinux 0x4c9d28b0 phys_base +EXPORT_SYMBOL vmlinux 0x4c9fc336 xfrm6_find_1stfragopt +EXPORT_SYMBOL vmlinux 0x4ca9669f scnprintf +EXPORT_SYMBOL vmlinux 0x4cb0ff84 __sock_create +EXPORT_SYMBOL vmlinux 0x4cbcc3cf tcp_rcv_state_process +EXPORT_SYMBOL vmlinux 0x4cc26cdc open_check_o_direct +EXPORT_SYMBOL vmlinux 0x4cc591a7 __mod_zone_page_state +EXPORT_SYMBOL vmlinux 0x4cc62f00 phy_connect +EXPORT_SYMBOL vmlinux 0x4cdb3178 ns_to_timeval +EXPORT_SYMBOL vmlinux 0x4cf09b30 dev_set_mtu +EXPORT_SYMBOL vmlinux 0x4d04cdaa devm_devfreq_register_opp_notifier +EXPORT_SYMBOL vmlinux 0x4d19f69e fget +EXPORT_SYMBOL vmlinux 0x4d294bb4 bit_wait_io +EXPORT_SYMBOL vmlinux 0x4d5a6594 param_get_int +EXPORT_SYMBOL vmlinux 0x4d69de73 pci_bus_get +EXPORT_SYMBOL vmlinux 0x4d8b1801 pci_match_id +EXPORT_SYMBOL vmlinux 0x4d8b77a3 amd_iommu_domain_enable_v2 +EXPORT_SYMBOL vmlinux 0x4d974b9c register_sysrq_key +EXPORT_SYMBOL vmlinux 0x4d9b652b rb_erase +EXPORT_SYMBOL vmlinux 0x4d9c28be con_is_bound +EXPORT_SYMBOL vmlinux 0x4da170d8 netdev_emerg +EXPORT_SYMBOL vmlinux 0x4da384da pipe_lock +EXPORT_SYMBOL vmlinux 0x4dbdf8b7 pci_set_power_state +EXPORT_SYMBOL vmlinux 0x4dd278b2 pci_iomap +EXPORT_SYMBOL vmlinux 0x4de34a07 cpu_rmap_put +EXPORT_SYMBOL vmlinux 0x4df119fa __bitmap_parse +EXPORT_SYMBOL vmlinux 0x4e14ec90 blk_mq_delay_queue +EXPORT_SYMBOL vmlinux 0x4e24b8a5 blk_mq_can_queue +EXPORT_SYMBOL vmlinux 0x4e3567f7 match_int +EXPORT_SYMBOL vmlinux 0x4e43f764 tcp_parse_options +EXPORT_SYMBOL vmlinux 0x4e51d83a sock_no_shutdown +EXPORT_SYMBOL vmlinux 0x4e5ff104 xfrm_register_mode +EXPORT_SYMBOL vmlinux 0x4e68e9be rb_next_postorder +EXPORT_SYMBOL vmlinux 0x4e6e8ea7 fg_console +EXPORT_SYMBOL vmlinux 0x4e71f3e7 netif_set_xps_queue +EXPORT_SYMBOL vmlinux 0x4e78c670 mmc_start_bkops +EXPORT_SYMBOL vmlinux 0x4ea25709 dql_reset +EXPORT_SYMBOL vmlinux 0x4ed307e5 devm_ioport_map +EXPORT_SYMBOL vmlinux 0x4edd72f7 block_all_signals +EXPORT_SYMBOL vmlinux 0x4ef5c5f3 vme_dma_request +EXPORT_SYMBOL vmlinux 0x4f1cd128 security_tun_dev_create +EXPORT_SYMBOL vmlinux 0x4f2250ba rtc_tm_to_time64 +EXPORT_SYMBOL vmlinux 0x4f391d0e nla_parse +EXPORT_SYMBOL vmlinux 0x4f476e96 init_cdrom_command +EXPORT_SYMBOL vmlinux 0x4f5049d6 udp_seq_open +EXPORT_SYMBOL vmlinux 0x4f5e2a06 xfrm_policy_bysel_ctx +EXPORT_SYMBOL vmlinux 0x4f68e5c9 do_gettimeofday +EXPORT_SYMBOL vmlinux 0x4f6b400b _copy_from_user +EXPORT_SYMBOL vmlinux 0x4f783f30 acpi_read +EXPORT_SYMBOL vmlinux 0x4f7a4827 trace_print_hex_seq +EXPORT_SYMBOL vmlinux 0x4f8b5ddb _copy_to_user +EXPORT_SYMBOL vmlinux 0x4fa7d0c6 pci_dev_get +EXPORT_SYMBOL vmlinux 0x4fb44029 ppp_register_net_channel +EXPORT_SYMBOL vmlinux 0x4fd2cb69 kernel_read +EXPORT_SYMBOL vmlinux 0x4fdc6844 key_instantiate_and_link +EXPORT_SYMBOL vmlinux 0x4fddc4e5 ps2_cmd_aborted +EXPORT_SYMBOL vmlinux 0x4fdee897 i8042_command +EXPORT_SYMBOL vmlinux 0x4ff0acd3 twl6040_reg_write +EXPORT_SYMBOL vmlinux 0x4ff18100 poll_schedule_timeout +EXPORT_SYMBOL vmlinux 0x50097088 security_tun_dev_free_security +EXPORT_SYMBOL vmlinux 0x50529870 acpi_get_gpe_status +EXPORT_SYMBOL vmlinux 0x5063df40 __posix_acl_create +EXPORT_SYMBOL vmlinux 0x5066d1cb pci_restore_state +EXPORT_SYMBOL vmlinux 0x507d9d31 sock_get_timestampns +EXPORT_SYMBOL vmlinux 0x508cf113 uart_register_driver +EXPORT_SYMBOL vmlinux 0x509b64ea acpi_has_method +EXPORT_SYMBOL vmlinux 0x50a90e8d bsearch +EXPORT_SYMBOL vmlinux 0x50ba769a kblockd_schedule_work +EXPORT_SYMBOL vmlinux 0x50c490ad netdev_class_create_file_ns +EXPORT_SYMBOL vmlinux 0x50cdefd2 sock_get_timestamp +EXPORT_SYMBOL vmlinux 0x50d68377 arch_phys_wc_del +EXPORT_SYMBOL vmlinux 0x50ded37c __posix_acl_chmod +EXPORT_SYMBOL vmlinux 0x50e2949d max8998_read_reg +EXPORT_SYMBOL vmlinux 0x51145049 tcp_read_sock +EXPORT_SYMBOL vmlinux 0x51164ad9 cmdline_parts_set +EXPORT_SYMBOL vmlinux 0x5118c382 secure_dccp_sequence_number +EXPORT_SYMBOL vmlinux 0x5125c2d2 netdev_master_upper_dev_link +EXPORT_SYMBOL vmlinux 0x512a7548 bio_endio +EXPORT_SYMBOL vmlinux 0x513f5d5a tcp_sync_mss +EXPORT_SYMBOL vmlinux 0x51478c6a tcp_v4_connect +EXPORT_SYMBOL vmlinux 0x51567154 swiotlb_free_coherent +EXPORT_SYMBOL vmlinux 0x515bc7f0 fb_class +EXPORT_SYMBOL vmlinux 0x5161af1c mmc_can_discard +EXPORT_SYMBOL vmlinux 0x51719973 dq_data_lock +EXPORT_SYMBOL vmlinux 0x51815b9e blk_mq_requeue_request +EXPORT_SYMBOL vmlinux 0x5188b604 inet_twsk_deschedule +EXPORT_SYMBOL vmlinux 0x519d86ab set_security_override +EXPORT_SYMBOL vmlinux 0x51a09eb4 __skb_checksum_complete +EXPORT_SYMBOL vmlinux 0x51a21774 tty_port_tty_get +EXPORT_SYMBOL vmlinux 0x51a51518 tty_unregister_device +EXPORT_SYMBOL vmlinux 0x51b69fb1 neigh_seq_start +EXPORT_SYMBOL vmlinux 0x51b782b9 sock_sendmsg +EXPORT_SYMBOL vmlinux 0x51cbd0c2 follow_pfn +EXPORT_SYMBOL vmlinux 0x51d12d4e acpi_pci_disabled +EXPORT_SYMBOL vmlinux 0x51d5ec83 bd_set_size +EXPORT_SYMBOL vmlinux 0x51d73fc8 follow_down_one +EXPORT_SYMBOL vmlinux 0x51e2fbe5 skb_prepare_seq_read +EXPORT_SYMBOL vmlinux 0x51eecc3f tty_register_device +EXPORT_SYMBOL vmlinux 0x52026cdf security_sb_parse_opts_str +EXPORT_SYMBOL vmlinux 0x52095e19 acpi_get_data +EXPORT_SYMBOL vmlinux 0x52130046 acpi_check_address_range +EXPORT_SYMBOL vmlinux 0x521a8e68 netdev_warn +EXPORT_SYMBOL vmlinux 0x521b36b5 qdisc_put_rtab +EXPORT_SYMBOL vmlinux 0x52260b05 compat_sock_common_setsockopt +EXPORT_SYMBOL vmlinux 0x522845a8 fget_raw +EXPORT_SYMBOL vmlinux 0x52428cc8 parent_mem_cgroup +EXPORT_SYMBOL vmlinux 0x5244eb89 tso_build_data +EXPORT_SYMBOL vmlinux 0x5246324a tty_set_operations +EXPORT_SYMBOL vmlinux 0x525e026f acpi_os_unmap_generic_address +EXPORT_SYMBOL vmlinux 0x527ef255 ip4_datagram_connect +EXPORT_SYMBOL vmlinux 0x527f7520 genphy_setup_forced +EXPORT_SYMBOL vmlinux 0x52800544 twl6040_set_bits +EXPORT_SYMBOL vmlinux 0x52983a4f vme_master_write +EXPORT_SYMBOL vmlinux 0x52989ba8 vlan_vid_del +EXPORT_SYMBOL vmlinux 0x52bb5c8b ppp_unit_number +EXPORT_SYMBOL vmlinux 0x52c41d93 jbd2_journal_extend +EXPORT_SYMBOL vmlinux 0x52ed85ef mmc_fixup_device +EXPORT_SYMBOL vmlinux 0x530b1e98 pm_suspend +EXPORT_SYMBOL vmlinux 0x5310d6ce nonseekable_open +EXPORT_SYMBOL vmlinux 0x531b604e __virt_addr_valid +EXPORT_SYMBOL vmlinux 0x53326531 mempool_alloc_pages +EXPORT_SYMBOL vmlinux 0x5335a243 elv_rb_del +EXPORT_SYMBOL vmlinux 0x53446b30 dev_remove_offload +EXPORT_SYMBOL vmlinux 0x53569707 this_cpu_off +EXPORT_SYMBOL vmlinux 0x535c8308 vme_dma_pattern_attribute +EXPORT_SYMBOL vmlinux 0x536cc847 memcg_kmem_enabled_key +EXPORT_SYMBOL vmlinux 0x536e8303 padata_alloc_possible +EXPORT_SYMBOL vmlinux 0x5377e556 hex2bin +EXPORT_SYMBOL vmlinux 0x538f292f uart_add_one_port +EXPORT_SYMBOL vmlinux 0x539af73c __sg_alloc_table +EXPORT_SYMBOL vmlinux 0x53a87eb6 pci_set_mwi +EXPORT_SYMBOL vmlinux 0x53dd1c02 _raw_read_lock_irqsave +EXPORT_SYMBOL vmlinux 0x53df8c69 tcp_v4_send_check +EXPORT_SYMBOL vmlinux 0x54059a2a amd_iommu_pc_get_max_counters +EXPORT_SYMBOL vmlinux 0x5409775b free_irq_cpu_rmap +EXPORT_SYMBOL vmlinux 0x540af498 finish_open +EXPORT_SYMBOL vmlinux 0x5413a1f1 pm860x_bulk_read +EXPORT_SYMBOL vmlinux 0x54245b39 kstrtoull_from_user +EXPORT_SYMBOL vmlinux 0x543ef284 seq_hlist_start +EXPORT_SYMBOL vmlinux 0x544b0c11 acpi_lid_notifier_register +EXPORT_SYMBOL vmlinux 0x5464d3f6 acpi_remove_sci_handler +EXPORT_SYMBOL vmlinux 0x54899757 ihold +EXPORT_SYMBOL vmlinux 0x54a9db5f _kstrtoul +EXPORT_SYMBOL vmlinux 0x54aaf22b __devm_gpiod_get_index +EXPORT_SYMBOL vmlinux 0x54ac5e80 inet_csk_destroy_sock +EXPORT_SYMBOL vmlinux 0x54bfad5d path_put +EXPORT_SYMBOL vmlinux 0x54c19514 simple_setattr +EXPORT_SYMBOL vmlinux 0x54c256e0 vme_check_window +EXPORT_SYMBOL vmlinux 0x54d026da fbcon_set_rotate +EXPORT_SYMBOL vmlinux 0x54d8aea1 poll_initwait +EXPORT_SYMBOL vmlinux 0x54e1f7b3 udp_push_pending_frames +EXPORT_SYMBOL vmlinux 0x54e6fcdd net_enable_timestamp +EXPORT_SYMBOL vmlinux 0x54f24d1a fence_default_wait +EXPORT_SYMBOL vmlinux 0x54f2d027 check_disk_size_change +EXPORT_SYMBOL vmlinux 0x54f82c79 igrab +EXPORT_SYMBOL vmlinux 0x55072394 dquot_commit_info +EXPORT_SYMBOL vmlinux 0x551a7374 __sync_dirty_buffer +EXPORT_SYMBOL vmlinux 0x551bd071 __rb_erase_color +EXPORT_SYMBOL vmlinux 0x551bedc7 fence_enable_sw_signaling +EXPORT_SYMBOL vmlinux 0x5521b0e8 vfs_setpos +EXPORT_SYMBOL vmlinux 0x5523dbf2 vme_unregister_bridge +EXPORT_SYMBOL vmlinux 0x55329fca netif_stacked_transfer_operstate +EXPORT_SYMBOL vmlinux 0x5541ea93 on_each_cpu +EXPORT_SYMBOL vmlinux 0x5549f75c ipv6_getsockopt +EXPORT_SYMBOL vmlinux 0x554cedd9 dev_mc_sync +EXPORT_SYMBOL vmlinux 0x555f6938 lockref_get +EXPORT_SYMBOL vmlinux 0x5567c227 kernel_cpustat +EXPORT_SYMBOL vmlinux 0x5567ce7d pci_reenable_device +EXPORT_SYMBOL vmlinux 0x556bb2e6 tcf_hash_create +EXPORT_SYMBOL vmlinux 0x5572bf5f vfs_whiteout +EXPORT_SYMBOL vmlinux 0x55947a9c mmc_wait_for_req +EXPORT_SYMBOL vmlinux 0x55a25778 register_tcf_proto_ops +EXPORT_SYMBOL vmlinux 0x55a64904 get_mm_exe_file +EXPORT_SYMBOL vmlinux 0x55b276da pnp_unregister_driver +EXPORT_SYMBOL vmlinux 0x55c0a949 scsi_execute +EXPORT_SYMBOL vmlinux 0x55c212fe sg_alloc_table_from_pages +EXPORT_SYMBOL vmlinux 0x55c8608a scsi_host_alloc +EXPORT_SYMBOL vmlinux 0x55cf787a nf_log_unbind_pf +EXPORT_SYMBOL vmlinux 0x55d2c89a tty_port_put +EXPORT_SYMBOL vmlinux 0x55d481c9 hdmi_infoframe_unpack +EXPORT_SYMBOL vmlinux 0x55d8294d __blk_end_request_cur +EXPORT_SYMBOL vmlinux 0x55f147f8 elv_dispatch_sort +EXPORT_SYMBOL vmlinux 0x55f5019b __kmalloc_node +EXPORT_SYMBOL vmlinux 0x5607fec9 blkdev_put +EXPORT_SYMBOL vmlinux 0x5613b863 led_blink_set +EXPORT_SYMBOL vmlinux 0x5635a60a vmalloc_user +EXPORT_SYMBOL vmlinux 0x5641419b wait_for_completion_killable_timeout +EXPORT_SYMBOL vmlinux 0x564b90b5 __block_write_begin +EXPORT_SYMBOL vmlinux 0x567434bb fsnotify_get_group +EXPORT_SYMBOL vmlinux 0x56c8799d scsi_kunmap_atomic_sg +EXPORT_SYMBOL vmlinux 0x56f6359c get_tz_trend +EXPORT_SYMBOL vmlinux 0x56fcae94 truncate_pagecache +EXPORT_SYMBOL vmlinux 0x5720c4b1 skb_store_bits +EXPORT_SYMBOL vmlinux 0x572e85d4 blk_lookup_devt +EXPORT_SYMBOL vmlinux 0x574c2e74 bitmap_release_region +EXPORT_SYMBOL vmlinux 0x57575f08 dmaengine_put +EXPORT_SYMBOL vmlinux 0x57674fd7 __sw_hweight16 +EXPORT_SYMBOL vmlinux 0x577123ec neigh_table_clear +EXPORT_SYMBOL vmlinux 0x5772e3f1 bitmap_end_sync +EXPORT_SYMBOL vmlinux 0x577d35f3 hdmi_avi_infoframe_pack +EXPORT_SYMBOL vmlinux 0x57837d2b vme_dma_list_add +EXPORT_SYMBOL vmlinux 0x5788107a account_page_redirty +EXPORT_SYMBOL vmlinux 0x5792f848 strlcpy +EXPORT_SYMBOL vmlinux 0x57ae70f8 set_page_dirty_lock +EXPORT_SYMBOL vmlinux 0x57ba72ab fence_wait_timeout +EXPORT_SYMBOL vmlinux 0x57baa312 balance_dirty_pages_ratelimited +EXPORT_SYMBOL vmlinux 0x57c6bd26 skb_try_coalesce +EXPORT_SYMBOL vmlinux 0x57cd5427 blkdev_get_by_path +EXPORT_SYMBOL vmlinux 0x57f99021 mark_buffer_dirty +EXPORT_SYMBOL vmlinux 0x581f98da zlib_inflate +EXPORT_SYMBOL vmlinux 0x5838f6c9 rtc_valid_tm +EXPORT_SYMBOL vmlinux 0x58411993 __sb_start_write +EXPORT_SYMBOL vmlinux 0x584738f9 rdmsr_safe_on_cpu +EXPORT_SYMBOL vmlinux 0x5857b225 ioread16_rep +EXPORT_SYMBOL vmlinux 0x586103be acpi_setup_gpe_for_wake +EXPORT_SYMBOL vmlinux 0x586ab118 dev_remove_pack +EXPORT_SYMBOL vmlinux 0x587616f1 vfs_fstatat +EXPORT_SYMBOL vmlinux 0x587a74ca udp_proc_register +EXPORT_SYMBOL vmlinux 0x5896b47a pci_stop_and_remove_bus_device +EXPORT_SYMBOL vmlinux 0x58a3d48b skb_ensure_writable +EXPORT_SYMBOL vmlinux 0x58b73bc7 match_wildcard +EXPORT_SYMBOL vmlinux 0x58b9c658 try_module_get +EXPORT_SYMBOL vmlinux 0x58dc09f9 phy_init_hw +EXPORT_SYMBOL vmlinux 0x58e2ac31 phy_start_aneg +EXPORT_SYMBOL vmlinux 0x59093418 pcie_get_minimum_link +EXPORT_SYMBOL vmlinux 0x592d24a9 mod_zone_page_state +EXPORT_SYMBOL vmlinux 0x5944d015 __cachemode2pte_tbl +EXPORT_SYMBOL vmlinux 0x594bf15b ioport_map +EXPORT_SYMBOL vmlinux 0x5967c929 __tracepoint_kmem_cache_alloc_node +EXPORT_SYMBOL vmlinux 0x597c791f __scsi_iterate_devices +EXPORT_SYMBOL vmlinux 0x598e4904 mod_timer_pending +EXPORT_SYMBOL vmlinux 0x5998e623 pci_request_regions +EXPORT_SYMBOL vmlinux 0x59aa14cf fence_release +EXPORT_SYMBOL vmlinux 0x59bc9609 acpi_write_bit_register +EXPORT_SYMBOL vmlinux 0x59ce1df5 bio_integrity_advance +EXPORT_SYMBOL vmlinux 0x59dbe48a posix_lock_file +EXPORT_SYMBOL vmlinux 0x5a0b73d0 zlib_deflateInit2 +EXPORT_SYMBOL vmlinux 0x5a284694 dquot_transfer +EXPORT_SYMBOL vmlinux 0x5a296eca blk_pre_runtime_suspend +EXPORT_SYMBOL vmlinux 0x5a2eb967 phy_ethtool_sset +EXPORT_SYMBOL vmlinux 0x5a3388ca free_user_ns +EXPORT_SYMBOL vmlinux 0x5a4896a8 __put_user_2 +EXPORT_SYMBOL vmlinux 0x5a664687 page_put_link +EXPORT_SYMBOL vmlinux 0x5a82c44a complete_and_exit +EXPORT_SYMBOL vmlinux 0x5a921311 strncmp +EXPORT_SYMBOL vmlinux 0x5aa59fda nf_register_queue_handler +EXPORT_SYMBOL vmlinux 0x5ab53918 in6_dev_finish_destroy +EXPORT_SYMBOL vmlinux 0x5ab5c557 agp_alloc_bridge +EXPORT_SYMBOL vmlinux 0x5ac376a5 acpi_install_fixed_event_handler +EXPORT_SYMBOL vmlinux 0x5af4ceaa sync_filesystem +EXPORT_SYMBOL vmlinux 0x5aff4177 vme_lm_get +EXPORT_SYMBOL vmlinux 0x5b3f9e48 update_region +EXPORT_SYMBOL vmlinux 0x5b56860c vm_munmap +EXPORT_SYMBOL vmlinux 0x5b5e5cbe max8925_bulk_write +EXPORT_SYMBOL vmlinux 0x5b6f12ca down_write_trylock +EXPORT_SYMBOL vmlinux 0x5b73c12c iov_iter_fault_in_multipages_readable +EXPORT_SYMBOL vmlinux 0x5b74a48b dev_uc_sync_multiple +EXPORT_SYMBOL vmlinux 0x5b92d81c simple_link +EXPORT_SYMBOL vmlinux 0x5b94fc55 devfreq_monitor_start +EXPORT_SYMBOL vmlinux 0x5bb3e09a qdisc_watchdog_init +EXPORT_SYMBOL vmlinux 0x5bbf2073 iw_handler_set_thrspy +EXPORT_SYMBOL vmlinux 0x5bc10524 printk_emit +EXPORT_SYMBOL vmlinux 0x5bc8d583 copy_from_user_overflow +EXPORT_SYMBOL vmlinux 0x5bcf5ad9 devm_gpiod_get_array_optional +EXPORT_SYMBOL vmlinux 0x5bf4450c mount_bdev +EXPORT_SYMBOL vmlinux 0x5c012980 input_alloc_absinfo +EXPORT_SYMBOL vmlinux 0x5c0442fd acpi_gbl_FADT +EXPORT_SYMBOL vmlinux 0x5c06fd40 elv_rb_latter_request +EXPORT_SYMBOL vmlinux 0x5c32341a inet_csk_accept +EXPORT_SYMBOL vmlinux 0x5c430513 jbd2_journal_stop +EXPORT_SYMBOL vmlinux 0x5c5ef271 netlink_broadcast_filtered +EXPORT_SYMBOL vmlinux 0x5c66e3b1 __devm_gpiod_get +EXPORT_SYMBOL vmlinux 0x5c70db52 wireless_spy_update +EXPORT_SYMBOL vmlinux 0x5c9b026a inode_sb_list_lock +EXPORT_SYMBOL vmlinux 0x5c9e7014 __scsi_device_lookup +EXPORT_SYMBOL vmlinux 0x5caebdd9 twl6030_mmc_card_detect +EXPORT_SYMBOL vmlinux 0x5cb2eb5c cros_ec_check_result +EXPORT_SYMBOL vmlinux 0x5cb663d8 fb_pan_display +EXPORT_SYMBOL vmlinux 0x5cd97b15 buffer_check_dirty_writeback +EXPORT_SYMBOL vmlinux 0x5cf53ce2 input_free_minor +EXPORT_SYMBOL vmlinux 0x5d0161ec proc_doulongvec_minmax +EXPORT_SYMBOL vmlinux 0x5d4684d9 xfrm_state_update +EXPORT_SYMBOL vmlinux 0x5d550c4d scsi_sd_probe_domain +EXPORT_SYMBOL vmlinux 0x5d74dbcf pnp_range_reserved +EXPORT_SYMBOL vmlinux 0x5d76a76d bio_map_kern +EXPORT_SYMBOL vmlinux 0x5d7dc6ed get_disk +EXPORT_SYMBOL vmlinux 0x5d8475e0 completion_done +EXPORT_SYMBOL vmlinux 0x5d8bfaea blk_dump_rq_flags +EXPORT_SYMBOL vmlinux 0x5d9b5912 seq_read +EXPORT_SYMBOL vmlinux 0x5dadc36d filemap_flush +EXPORT_SYMBOL vmlinux 0x5db30a71 tcp_release_cb +EXPORT_SYMBOL vmlinux 0x5dc710e3 dev_set_group +EXPORT_SYMBOL vmlinux 0x5de640dc bio_put +EXPORT_SYMBOL vmlinux 0x5de6c6ff __mem_cgroup_count_vm_event +EXPORT_SYMBOL vmlinux 0x5df040aa dma_free_attrs +EXPORT_SYMBOL vmlinux 0x5df8482b d_set_fallthru +EXPORT_SYMBOL vmlinux 0x5e09b1a4 inet_csk_clear_xmit_timers +EXPORT_SYMBOL vmlinux 0x5e40f409 netdev_alert +EXPORT_SYMBOL vmlinux 0x5e4fa385 bh_submit_read +EXPORT_SYMBOL vmlinux 0x5e5815d9 simple_follow_link +EXPORT_SYMBOL vmlinux 0x5e7c866b input_event +EXPORT_SYMBOL vmlinux 0x5e8f07df agp_free_memory +EXPORT_SYMBOL vmlinux 0x5e95b1cd current_umask +EXPORT_SYMBOL vmlinux 0x5eb24829 dm_shift_arg +EXPORT_SYMBOL vmlinux 0x5ed040b0 pm_set_vt_switch +EXPORT_SYMBOL vmlinux 0x5f005368 kstrtou8 +EXPORT_SYMBOL vmlinux 0x5f098b2a in6addr_interfacelocal_allrouters +EXPORT_SYMBOL vmlinux 0x5f5fb85f lockref_get_not_zero +EXPORT_SYMBOL vmlinux 0x5f655d42 request_firmware +EXPORT_SYMBOL vmlinux 0x5f6a142a __insert_inode_hash +EXPORT_SYMBOL vmlinux 0x5f6af80a ipv6_chk_addr_and_flags +EXPORT_SYMBOL vmlinux 0x5f6dd485 scsi_is_host_device +EXPORT_SYMBOL vmlinux 0x5f76b4b2 xfrm_dst_ifdown +EXPORT_SYMBOL vmlinux 0x5f882fed uart_remove_one_port +EXPORT_SYMBOL vmlinux 0x5f90829a devfreq_recommended_opp +EXPORT_SYMBOL vmlinux 0x5fb2e8ef idr_init +EXPORT_SYMBOL vmlinux 0x5fb9264a put_tty_driver +EXPORT_SYMBOL vmlinux 0x5fbc84fe gro_find_receive_by_type +EXPORT_SYMBOL vmlinux 0x5fc6d101 netdev_notice +EXPORT_SYMBOL vmlinux 0x5fda0227 vfs_stat +EXPORT_SYMBOL vmlinux 0x5fe2738a netdev_upper_dev_unlink +EXPORT_SYMBOL vmlinux 0x5ff87ed9 file_open_root +EXPORT_SYMBOL vmlinux 0x600683d3 do_unblank_screen +EXPORT_SYMBOL vmlinux 0x600f8fbe sched_autogroup_create_attach +EXPORT_SYMBOL vmlinux 0x6015281d scsi_device_resume +EXPORT_SYMBOL vmlinux 0x6019ee17 blk_mq_init_queue +EXPORT_SYMBOL vmlinux 0x601bc166 tc_classify +EXPORT_SYMBOL vmlinux 0x601f665f dm_io_client_create +EXPORT_SYMBOL vmlinux 0x602cf4db key_type_keyring +EXPORT_SYMBOL vmlinux 0x602ed00d acpi_current_gpe_count +EXPORT_SYMBOL vmlinux 0x60341c26 pnp_register_driver +EXPORT_SYMBOL vmlinux 0x60352082 register_inet6addr_notifier +EXPORT_SYMBOL vmlinux 0x6035dbb7 param_set_invbool +EXPORT_SYMBOL vmlinux 0x60420449 bioset_create +EXPORT_SYMBOL vmlinux 0x604316d8 acpi_finish_gpe +EXPORT_SYMBOL vmlinux 0x6068f898 sk_free +EXPORT_SYMBOL vmlinux 0x606d0b09 secure_tcpv6_sequence_number +EXPORT_SYMBOL vmlinux 0x608e3e9d blk_rq_map_user_iov +EXPORT_SYMBOL vmlinux 0x6091644e flow_keys_dissector +EXPORT_SYMBOL vmlinux 0x6098612c tcp_rcv_established +EXPORT_SYMBOL vmlinux 0x609f1c7e synchronize_net +EXPORT_SYMBOL vmlinux 0x609f5b35 ucs2_strnlen +EXPORT_SYMBOL vmlinux 0x60a32ea9 pm_power_off +EXPORT_SYMBOL vmlinux 0x60cf85d2 _raw_read_lock_bh +EXPORT_SYMBOL vmlinux 0x60d5ec36 seq_write +EXPORT_SYMBOL vmlinux 0x60df1e3b posix_acl_equiv_mode +EXPORT_SYMBOL vmlinux 0x60f61e81 dst_cow_metrics_generic +EXPORT_SYMBOL vmlinux 0x610aaa40 mempool_destroy +EXPORT_SYMBOL vmlinux 0x61167768 locks_init_lock +EXPORT_SYMBOL vmlinux 0x6128b5fc __printk_ratelimit +EXPORT_SYMBOL vmlinux 0x6129fae2 neigh_lookup_nodev +EXPORT_SYMBOL vmlinux 0x6138c7f4 security_path_link +EXPORT_SYMBOL vmlinux 0x613cb95c end_buffer_read_sync +EXPORT_SYMBOL vmlinux 0x614bb773 radix_tree_insert +EXPORT_SYMBOL vmlinux 0x61520529 trace_print_symbols_seq +EXPORT_SYMBOL vmlinux 0x61527e4a inode_needs_sync +EXPORT_SYMBOL vmlinux 0x61538dda tty_unregister_driver +EXPORT_SYMBOL vmlinux 0x6155b74d sock_common_getsockopt +EXPORT_SYMBOL vmlinux 0x61776613 bio_integrity_add_page +EXPORT_SYMBOL vmlinux 0x61784477 bdi_setup_and_register +EXPORT_SYMBOL vmlinux 0x6181a374 __serio_register_driver +EXPORT_SYMBOL vmlinux 0x6184107d mark_info_dirty +EXPORT_SYMBOL vmlinux 0x618911fc numa_node +EXPORT_SYMBOL vmlinux 0x619cb7dd simple_read_from_buffer +EXPORT_SYMBOL vmlinux 0x61a09f74 __inet_hash +EXPORT_SYMBOL vmlinux 0x61a35361 udp_ioctl +EXPORT_SYMBOL vmlinux 0x61a9bacd component_match_add +EXPORT_SYMBOL vmlinux 0x61b7b126 simple_strtoull +EXPORT_SYMBOL vmlinux 0x61e3bb1c agp_bind_memory +EXPORT_SYMBOL vmlinux 0x61fb248a node_states +EXPORT_SYMBOL vmlinux 0x62049256 acpi_disable +EXPORT_SYMBOL vmlinux 0x6214aef2 cpufreq_unregister_notifier +EXPORT_SYMBOL vmlinux 0x62185a5f scsicam_bios_param +EXPORT_SYMBOL vmlinux 0x6225637e md5_transform +EXPORT_SYMBOL vmlinux 0x6226b9fa machine_to_phys_mapping +EXPORT_SYMBOL vmlinux 0x6228c21f smp_call_function_single +EXPORT_SYMBOL vmlinux 0x622a557b __netlink_dump_start +EXPORT_SYMBOL vmlinux 0x6237f6b5 acpi_enable_event +EXPORT_SYMBOL vmlinux 0x6240f504 put_disk +EXPORT_SYMBOL vmlinux 0x6242b645 bdi_register_dev +EXPORT_SYMBOL vmlinux 0x62663868 tcp_shutdown +EXPORT_SYMBOL vmlinux 0x62737e1d sock_unregister +EXPORT_SYMBOL vmlinux 0x62748e70 acpi_set_current_resources +EXPORT_SYMBOL vmlinux 0x6274fa19 __sk_mem_schedule +EXPORT_SYMBOL vmlinux 0x6275a602 km_state_notify +EXPORT_SYMBOL vmlinux 0x62827bec security_secctx_to_secid +EXPORT_SYMBOL vmlinux 0x62849ac7 dev_valid_name +EXPORT_SYMBOL vmlinux 0x628d71b5 input_mt_init_slots +EXPORT_SYMBOL vmlinux 0x629a09c5 dev_addr_add +EXPORT_SYMBOL vmlinux 0x62a64cb9 end_buffer_async_write +EXPORT_SYMBOL vmlinux 0x62b6ba29 seq_putc +EXPORT_SYMBOL vmlinux 0x62c381c6 mmc_start_req +EXPORT_SYMBOL vmlinux 0x62c8620e __elv_add_request +EXPORT_SYMBOL vmlinux 0x62e08a26 dev_crit +EXPORT_SYMBOL vmlinux 0x62f49a89 cdrom_media_changed +EXPORT_SYMBOL vmlinux 0x62fc2946 param_ops_uint +EXPORT_SYMBOL vmlinux 0x63187451 pcie_aspm_support_enabled +EXPORT_SYMBOL vmlinux 0x63433134 skb_copy_datagram_iter +EXPORT_SYMBOL vmlinux 0x6356cd8d pci_pme_active +EXPORT_SYMBOL vmlinux 0x63687f98 acpi_get_hp_hw_control_from_firmware +EXPORT_SYMBOL vmlinux 0x636a5691 acpi_register_ioapic +EXPORT_SYMBOL vmlinux 0x636ebf5b mmc_flush_cache +EXPORT_SYMBOL vmlinux 0x6388591c down_timeout +EXPORT_SYMBOL vmlinux 0x638b6fc3 param_ops_ullong +EXPORT_SYMBOL vmlinux 0x639fa975 d_splice_alias +EXPORT_SYMBOL vmlinux 0x63a01291 acpi_leave_sleep_state_prep +EXPORT_SYMBOL vmlinux 0x63a7c28c bitmap_find_free_region +EXPORT_SYMBOL vmlinux 0x63c4d61f __bitmap_weight +EXPORT_SYMBOL vmlinux 0x63eb9355 panic_blink +EXPORT_SYMBOL vmlinux 0x63f34f59 flock_lock_inode_wait +EXPORT_SYMBOL vmlinux 0x63fc232f strlen_user +EXPORT_SYMBOL vmlinux 0x6403e338 tcp_memory_pressure +EXPORT_SYMBOL vmlinux 0x64127b67 bitmap_find_next_zero_area_off +EXPORT_SYMBOL vmlinux 0x6437b72c twl6040_set_pll +EXPORT_SYMBOL vmlinux 0x6438e178 pci_dev_driver +EXPORT_SYMBOL vmlinux 0x643c4c76 kmalloc_caches +EXPORT_SYMBOL vmlinux 0x643d0371 eth_gro_complete +EXPORT_SYMBOL vmlinux 0x6449fd41 acpi_install_address_space_handler +EXPORT_SYMBOL vmlinux 0x644b4080 blk_mq_add_to_requeue_list +EXPORT_SYMBOL vmlinux 0x644d8f23 dev_get_by_name_rcu +EXPORT_SYMBOL vmlinux 0x64535f97 mmc_can_trim +EXPORT_SYMBOL vmlinux 0x645930fb _raw_write_lock_bh +EXPORT_SYMBOL vmlinux 0x645ce248 skb_tx_error +EXPORT_SYMBOL vmlinux 0x646e65d5 arch_debugfs_dir +EXPORT_SYMBOL vmlinux 0x64778415 blk_integrity_is_initialized +EXPORT_SYMBOL vmlinux 0x648a6d73 swiotlb_sync_single_for_device +EXPORT_SYMBOL vmlinux 0x64999478 congestion_wait +EXPORT_SYMBOL vmlinux 0x64a157a1 bitmap_endwrite +EXPORT_SYMBOL vmlinux 0x64ab0e98 wait_for_completion +EXPORT_SYMBOL vmlinux 0x64ac2ace writeback_inodes_sb_nr +EXPORT_SYMBOL vmlinux 0x64bbc288 string_unescape +EXPORT_SYMBOL vmlinux 0x64c60438 kobject_init +EXPORT_SYMBOL vmlinux 0x64eae7ad set_memory_array_wb +EXPORT_SYMBOL vmlinux 0x64ee6c01 phy_mii_ioctl +EXPORT_SYMBOL vmlinux 0x64fa7693 __acpi_handle_debug +EXPORT_SYMBOL vmlinux 0x650a4912 devfreq_remove_governor +EXPORT_SYMBOL vmlinux 0x6513a3fa fb_get_color_depth +EXPORT_SYMBOL vmlinux 0x651a2b7e xfrm_sad_getinfo +EXPORT_SYMBOL vmlinux 0x651a4139 test_taint +EXPORT_SYMBOL vmlinux 0x652ce9aa nla_memcmp +EXPORT_SYMBOL vmlinux 0x652d04fe scsi_report_device_reset +EXPORT_SYMBOL vmlinux 0x65408378 zlib_inflate_blob +EXPORT_SYMBOL vmlinux 0x6542b912 copy_strings_kernel +EXPORT_SYMBOL vmlinux 0x6555e743 simple_fill_super +EXPORT_SYMBOL vmlinux 0x655f1ab0 set_memory_array_wc +EXPORT_SYMBOL vmlinux 0x656b978b write_cache_pages +EXPORT_SYMBOL vmlinux 0x656c1a0e string_escape_mem +EXPORT_SYMBOL vmlinux 0x658024c7 tcp_v4_md5_hash_skb +EXPORT_SYMBOL vmlinux 0x65907f2b dma_alloc_attrs +EXPORT_SYMBOL vmlinux 0x65923edb init_net +EXPORT_SYMBOL vmlinux 0x65aa8153 blk_queue_bounce_limit +EXPORT_SYMBOL vmlinux 0x65d9e877 cpufreq_register_notifier +EXPORT_SYMBOL vmlinux 0x65daaad6 bdevname +EXPORT_SYMBOL vmlinux 0x65dccf13 xz_dec_end +EXPORT_SYMBOL vmlinux 0x65e0d6d7 memory_read_from_buffer +EXPORT_SYMBOL vmlinux 0x65e6db7e vfs_iter_write +EXPORT_SYMBOL vmlinux 0x65f3ad9a fb_videomode_to_var +EXPORT_SYMBOL vmlinux 0x65ff8006 pci_find_capability +EXPORT_SYMBOL vmlinux 0x66303965 pnp_device_detach +EXPORT_SYMBOL vmlinux 0x663f7cd0 acpi_install_table_handler +EXPORT_SYMBOL vmlinux 0x665797ba mdio_bus_type +EXPORT_SYMBOL vmlinux 0x665a58b1 __nla_put_nohdr +EXPORT_SYMBOL vmlinux 0x66644701 ww_mutex_unlock +EXPORT_SYMBOL vmlinux 0x666c243e netdev_has_upper_dev +EXPORT_SYMBOL vmlinux 0x666cd408 tcp_enter_cwr +EXPORT_SYMBOL vmlinux 0x6690e78b __register_binfmt +EXPORT_SYMBOL vmlinux 0x669f8126 __f_setown +EXPORT_SYMBOL vmlinux 0x66a11fb5 pci_set_dma_max_seg_size +EXPORT_SYMBOL vmlinux 0x66a4cb81 elv_rb_former_request +EXPORT_SYMBOL vmlinux 0x66b1eb68 vfs_writev +EXPORT_SYMBOL vmlinux 0x66c8ec65 inet6_unregister_protosw +EXPORT_SYMBOL vmlinux 0x66d804b1 percpu_counter_destroy +EXPORT_SYMBOL vmlinux 0x66daa43e dev_set_promiscuity +EXPORT_SYMBOL vmlinux 0x6722f3bc _raw_write_lock +EXPORT_SYMBOL vmlinux 0x6729d3df __get_user_4 +EXPORT_SYMBOL vmlinux 0x673f815e agp_bridges +EXPORT_SYMBOL vmlinux 0x67686e67 pcibios_bus_to_resource +EXPORT_SYMBOL vmlinux 0x67733cf4 mb_cache_create +EXPORT_SYMBOL vmlinux 0x67a9c574 netdev_info +EXPORT_SYMBOL vmlinux 0x67b27ec1 tty_std_termios +EXPORT_SYMBOL vmlinux 0x67b78eb3 seq_hlist_next_rcu +EXPORT_SYMBOL vmlinux 0x67c03be4 elevator_exit +EXPORT_SYMBOL vmlinux 0x6808b453 __unregister_cpu_notifier +EXPORT_SYMBOL vmlinux 0x680ec266 _raw_spin_lock_irqsave +EXPORT_SYMBOL vmlinux 0x682ee53c padata_start +EXPORT_SYMBOL vmlinux 0x6836949f bio_uncopy_user +EXPORT_SYMBOL vmlinux 0x6843c1bb security_d_instantiate +EXPORT_SYMBOL vmlinux 0x68495cea xfrm_input_resume +EXPORT_SYMBOL vmlinux 0x68768727 unregister_tcf_proto_ops +EXPORT_SYMBOL vmlinux 0x687b6a16 kdbgetsymval +EXPORT_SYMBOL vmlinux 0x688936a6 tty_name +EXPORT_SYMBOL vmlinux 0x68a23534 scsi_report_bus_reset +EXPORT_SYMBOL vmlinux 0x68b31f88 proc_symlink +EXPORT_SYMBOL vmlinux 0x68b83ac6 posix_acl_alloc +EXPORT_SYMBOL vmlinux 0x68f0755f inet_stream_ops +EXPORT_SYMBOL vmlinux 0x68f07d1e tty_port_lower_dtr_rts +EXPORT_SYMBOL vmlinux 0x68ffba43 blk_queue_make_request +EXPORT_SYMBOL vmlinux 0x691001b5 acpi_evaluate_integer +EXPORT_SYMBOL vmlinux 0x6918ce38 skb_find_text +EXPORT_SYMBOL vmlinux 0x6920ff27 proc_dointvec_userhz_jiffies +EXPORT_SYMBOL vmlinux 0x69250561 __lock_page +EXPORT_SYMBOL vmlinux 0x69335ab6 user_revoke +EXPORT_SYMBOL vmlinux 0x6947ea7a cdrom_get_last_written +EXPORT_SYMBOL vmlinux 0x694a5657 swiotlb_dma_supported +EXPORT_SYMBOL vmlinux 0x694ecd56 mmc_interrupt_hpi +EXPORT_SYMBOL vmlinux 0x6963a9b2 scsi_device_quiesce +EXPORT_SYMBOL vmlinux 0x696a2e97 netif_device_attach +EXPORT_SYMBOL vmlinux 0x6971447a rtc_month_days +EXPORT_SYMBOL vmlinux 0x6988d0ca cpu_dr7 +EXPORT_SYMBOL vmlinux 0x699b570e d_instantiate_unique +EXPORT_SYMBOL vmlinux 0x699f5847 ps2_handle_ack +EXPORT_SYMBOL vmlinux 0x699ff80f mipi_dsi_driver_unregister +EXPORT_SYMBOL vmlinux 0x69a0ca7d iowrite16be +EXPORT_SYMBOL vmlinux 0x69a358a6 iomem_resource +EXPORT_SYMBOL vmlinux 0x69a8ba1a gen_pool_for_each_chunk +EXPORT_SYMBOL vmlinux 0x69acdf38 memcpy +EXPORT_SYMBOL vmlinux 0x69ad2f20 kstrtouint +EXPORT_SYMBOL vmlinux 0x69b998d5 tso_count_descs +EXPORT_SYMBOL vmlinux 0x69c6f8f5 abx500_get_chip_id +EXPORT_SYMBOL vmlinux 0x69cb1f69 generic_block_bmap +EXPORT_SYMBOL vmlinux 0x69e0797a amd_iommu_complete_ppr +EXPORT_SYMBOL vmlinux 0x69f57e20 __brelse +EXPORT_SYMBOL vmlinux 0x69f5f8b0 xfrm4_rcv_encap +EXPORT_SYMBOL vmlinux 0x69fbc0a2 acpi_get_event_resources +EXPORT_SYMBOL vmlinux 0x69ff6259 add_disk +EXPORT_SYMBOL vmlinux 0x6a037cf1 mempool_kfree +EXPORT_SYMBOL vmlinux 0x6a102573 tty_schedule_flip +EXPORT_SYMBOL vmlinux 0x6a168aaf mipi_dsi_set_maximum_return_packet_size +EXPORT_SYMBOL vmlinux 0x6a31ffbe ip6_xmit +EXPORT_SYMBOL vmlinux 0x6a5ecb18 unregister_module_notifier +EXPORT_SYMBOL vmlinux 0x6a5f24e2 skb_checksum_trimmed +EXPORT_SYMBOL vmlinux 0x6a5fa363 sigprocmask +EXPORT_SYMBOL vmlinux 0x6a60277d acpi_buffer_to_resource +EXPORT_SYMBOL vmlinux 0x6a681e41 nobh_write_end +EXPORT_SYMBOL vmlinux 0x6a75476e tty_devnum +EXPORT_SYMBOL vmlinux 0x6a76f3ac blk_iopoll_enable +EXPORT_SYMBOL vmlinux 0x6a9c9533 dev_uc_del +EXPORT_SYMBOL vmlinux 0x6acafd5b cookie_timestamp_decode +EXPORT_SYMBOL vmlinux 0x6acb973d iowrite32be +EXPORT_SYMBOL vmlinux 0x6ad85887 acpi_enable_gpe +EXPORT_SYMBOL vmlinux 0x6add5c9a dmi_find_device +EXPORT_SYMBOL vmlinux 0x6aeefac4 zlib_deflateReset +EXPORT_SYMBOL vmlinux 0x6b06fdce delayed_work_timer_fn +EXPORT_SYMBOL vmlinux 0x6b1b67d3 __bdevname +EXPORT_SYMBOL vmlinux 0x6b2dc060 dump_stack +EXPORT_SYMBOL vmlinux 0x6b387be1 udp_del_offload +EXPORT_SYMBOL vmlinux 0x6b5cf369 generic_splice_sendpage +EXPORT_SYMBOL vmlinux 0x6b640864 nla_strlcpy +EXPORT_SYMBOL vmlinux 0x6b7076c7 __dev_get_by_flags +EXPORT_SYMBOL vmlinux 0x6b74b9be bit_waitqueue +EXPORT_SYMBOL vmlinux 0x6b7c4e2f blk_post_runtime_suspend +EXPORT_SYMBOL vmlinux 0x6bc3fbc0 __unregister_chrdev +EXPORT_SYMBOL vmlinux 0x6bcc490e gen_pool_free +EXPORT_SYMBOL vmlinux 0x6bd2aa5c netpoll_send_udp +EXPORT_SYMBOL vmlinux 0x6bd49c13 __dynamic_dev_dbg +EXPORT_SYMBOL vmlinux 0x6bdcfd99 qdisc_class_hash_remove +EXPORT_SYMBOL vmlinux 0x6bf1c17f pv_lock_ops +EXPORT_SYMBOL vmlinux 0x6c09c2a4 del_timer +EXPORT_SYMBOL vmlinux 0x6c44bc15 neigh_proc_dointvec +EXPORT_SYMBOL vmlinux 0x6c50fa26 tcf_exts_change +EXPORT_SYMBOL vmlinux 0x6c51a836 sysctl_tcp_notsent_lowat +EXPORT_SYMBOL vmlinux 0x6c6037a3 compat_ipv6_setsockopt +EXPORT_SYMBOL vmlinux 0x6c61ce70 num_registered_fb +EXPORT_SYMBOL vmlinux 0x6c63d659 blk_integrity_register +EXPORT_SYMBOL vmlinux 0x6c702af7 sysctl_udp_rmem_min +EXPORT_SYMBOL vmlinux 0x6c76235e reservation_object_add_shared_fence +EXPORT_SYMBOL vmlinux 0x6cadcf5e dquot_alloc_inode +EXPORT_SYMBOL vmlinux 0x6cb82b1d sk_stream_wait_memory +EXPORT_SYMBOL vmlinux 0x6cb97898 sk_stop_timer +EXPORT_SYMBOL vmlinux 0x6cc42aee proc_dointvec_minmax +EXPORT_SYMBOL vmlinux 0x6ce2322d dma_ops +EXPORT_SYMBOL vmlinux 0x6ceeb554 flow_cache_lookup +EXPORT_SYMBOL vmlinux 0x6cf73f33 up_write +EXPORT_SYMBOL vmlinux 0x6d0f1f89 dm_table_get_mode +EXPORT_SYMBOL vmlinux 0x6d1d5d9b iosf_mbi_write +EXPORT_SYMBOL vmlinux 0x6d2067e1 __blockdev_direct_IO +EXPORT_SYMBOL vmlinux 0x6d229424 __test_set_page_writeback +EXPORT_SYMBOL vmlinux 0x6d294e43 clock_t_to_jiffies +EXPORT_SYMBOL vmlinux 0x6d2e8507 scsi_device_lookup_by_target +EXPORT_SYMBOL vmlinux 0x6d334118 __get_user_8 +EXPORT_SYMBOL vmlinux 0x6d340f64 tty_termios_input_baud_rate +EXPORT_SYMBOL vmlinux 0x6d38962b blk_queue_chunk_sectors +EXPORT_SYMBOL vmlinux 0x6d3941e9 fput +EXPORT_SYMBOL vmlinux 0x6d4ab74f pci_back_from_sleep +EXPORT_SYMBOL vmlinux 0x6d84821f blk_peek_request +EXPORT_SYMBOL vmlinux 0x6d85bdf6 inode_set_bytes +EXPORT_SYMBOL vmlinux 0x6d8cf147 inode_sub_rsv_space +EXPORT_SYMBOL vmlinux 0x6dc0c9dc down_interruptible +EXPORT_SYMBOL vmlinux 0x6dc6dd56 down +EXPORT_SYMBOL vmlinux 0x6dd16a1e xfrm_policy_walk_done +EXPORT_SYMBOL vmlinux 0x6dd84e0d scsi_register_interface +EXPORT_SYMBOL vmlinux 0x6def2db2 half_md4_transform +EXPORT_SYMBOL vmlinux 0x6df1aaf1 kernel_sigaction +EXPORT_SYMBOL vmlinux 0x6dffa401 setattr_copy +EXPORT_SYMBOL vmlinux 0x6e1def0c tty_unthrottle +EXPORT_SYMBOL vmlinux 0x6e421349 devm_gpio_free +EXPORT_SYMBOL vmlinux 0x6e568951 i2c_release_client +EXPORT_SYMBOL vmlinux 0x6e639f5c scsi_ioctl_reset +EXPORT_SYMBOL vmlinux 0x6e6af575 bio_copy_kern +EXPORT_SYMBOL vmlinux 0x6e6c3bcc param_set_long +EXPORT_SYMBOL vmlinux 0x6e720ff2 rtnl_unlock +EXPORT_SYMBOL vmlinux 0x6e7f0fd2 cmdline_parts_parse +EXPORT_SYMBOL vmlinux 0x6e9dd606 __symbol_put +EXPORT_SYMBOL vmlinux 0x6eae144e nd_namespace_blk_validate +EXPORT_SYMBOL vmlinux 0x6eb13e36 blk_init_allocated_queue +EXPORT_SYMBOL vmlinux 0x6ed2a3f1 always_delete_dentry +EXPORT_SYMBOL vmlinux 0x6f04e12f vme_register_bridge +EXPORT_SYMBOL vmlinux 0x6f088750 padata_do_serial +EXPORT_SYMBOL vmlinux 0x6f1d9636 dev_loopback_xmit +EXPORT_SYMBOL vmlinux 0x6f1dfce4 mmc_put_card +EXPORT_SYMBOL vmlinux 0x6f20960a full_name_hash +EXPORT_SYMBOL vmlinux 0x6f2e4f46 __cond_resched_lock +EXPORT_SYMBOL vmlinux 0x6f371096 neigh_update +EXPORT_SYMBOL vmlinux 0x6f3c1f30 tcf_unregister_action +EXPORT_SYMBOL vmlinux 0x6f42986c handle_edge_irq +EXPORT_SYMBOL vmlinux 0x6f469b01 blk_cleanup_queue +EXPORT_SYMBOL vmlinux 0x6f556bdb acpi_get_gpe_device +EXPORT_SYMBOL vmlinux 0x6f820778 dma_supported +EXPORT_SYMBOL vmlinux 0x6f88effb hdmi_avi_infoframe_init +EXPORT_SYMBOL vmlinux 0x6f99eb5c __blkdev_reread_part +EXPORT_SYMBOL vmlinux 0x6fbf07cd __free_page_frag +EXPORT_SYMBOL vmlinux 0x6fca69d0 kdb_current_task +EXPORT_SYMBOL vmlinux 0x6fcb87a1 touch_softlockup_watchdog +EXPORT_SYMBOL vmlinux 0x6fce0169 vga_get +EXPORT_SYMBOL vmlinux 0x6fd76dcd phy_device_register +EXPORT_SYMBOL vmlinux 0x6fe0e907 inet_add_protocol +EXPORT_SYMBOL vmlinux 0x6feb2039 acpi_write +EXPORT_SYMBOL vmlinux 0x6fef8a97 remap_pfn_range +EXPORT_SYMBOL vmlinux 0x6ff088bd __nd_driver_register +EXPORT_SYMBOL vmlinux 0x7023bea8 unregister_acpi_notifier +EXPORT_SYMBOL vmlinux 0x7029f11b iommu_tbl_pool_init +EXPORT_SYMBOL vmlinux 0x70378664 irq_set_chip +EXPORT_SYMBOL vmlinux 0x703971d1 nf_register_sockopt +EXPORT_SYMBOL vmlinux 0x7043a19c pci_disable_msix +EXPORT_SYMBOL vmlinux 0x7045101f inet_dgram_connect +EXPORT_SYMBOL vmlinux 0x70523a7a __cond_resched_softirq +EXPORT_SYMBOL vmlinux 0x7054a3e4 request_dma +EXPORT_SYMBOL vmlinux 0x706d051c del_timer_sync +EXPORT_SYMBOL vmlinux 0x70775496 get_empty_filp +EXPORT_SYMBOL vmlinux 0x707ab614 netif_rx_ni +EXPORT_SYMBOL vmlinux 0x707f43f6 __ctzdi2 +EXPORT_SYMBOL vmlinux 0x7084529a dump_align +EXPORT_SYMBOL vmlinux 0x708a79f7 __percpu_counter_compare +EXPORT_SYMBOL vmlinux 0x70a7f110 filemap_write_and_wait +EXPORT_SYMBOL vmlinux 0x70d8ab82 acpi_acquire_global_lock +EXPORT_SYMBOL vmlinux 0x70de9c81 submit_bio +EXPORT_SYMBOL vmlinux 0x70f96f88 glob_match +EXPORT_SYMBOL vmlinux 0x70ffbe0d __module_get +EXPORT_SYMBOL vmlinux 0x710463f5 dquot_quotactl_sysfile_ops +EXPORT_SYMBOL vmlinux 0x710d248e bio_integrity_trim +EXPORT_SYMBOL vmlinux 0x7129e5f8 hex_asc +EXPORT_SYMBOL vmlinux 0x71437ef8 remove_arg_zero +EXPORT_SYMBOL vmlinux 0x7159b3e0 find_get_entry +EXPORT_SYMBOL vmlinux 0x7171121c overflowgid +EXPORT_SYMBOL vmlinux 0x7178940b agp_find_bridge +EXPORT_SYMBOL vmlinux 0x71828a66 proc_dostring +EXPORT_SYMBOL vmlinux 0x71995a9a generic_read_dir +EXPORT_SYMBOL vmlinux 0x71a50dbc register_blkdev +EXPORT_SYMBOL vmlinux 0x71a672ef dmam_pool_destroy +EXPORT_SYMBOL vmlinux 0x71b2b064 inet_ioctl +EXPORT_SYMBOL vmlinux 0x71bc7a97 __xfrm_init_state +EXPORT_SYMBOL vmlinux 0x71c2bd6b napi_get_frags +EXPORT_SYMBOL vmlinux 0x71db9fb4 prepare_binprm +EXPORT_SYMBOL vmlinux 0x71e0dae0 eth_prepare_mac_addr_change +EXPORT_SYMBOL vmlinux 0x720eae5a set_create_files_as +EXPORT_SYMBOL vmlinux 0x7235e927 seq_puts +EXPORT_SYMBOL vmlinux 0x72440747 invalidate_inode_buffers +EXPORT_SYMBOL vmlinux 0x724dc846 mfd_cell_disable +EXPORT_SYMBOL vmlinux 0x725054ff set_groups +EXPORT_SYMBOL vmlinux 0x7260bcd1 skb_copy_and_csum_dev +EXPORT_SYMBOL vmlinux 0x726fa93c xfrm_state_walk_done +EXPORT_SYMBOL vmlinux 0x7272450c nd_region_release_lane +EXPORT_SYMBOL vmlinux 0x729a01ca scsi_host_set_state +EXPORT_SYMBOL vmlinux 0x729caf37 key_validate +EXPORT_SYMBOL vmlinux 0x72a98fdb copy_user_generic_unrolled +EXPORT_SYMBOL vmlinux 0x72b243d4 free_dma +EXPORT_SYMBOL vmlinux 0x72bf2140 mtrr_add +EXPORT_SYMBOL vmlinux 0x72cf75f1 nf_afinfo +EXPORT_SYMBOL vmlinux 0x72ea7b2d scsi_device_type +EXPORT_SYMBOL vmlinux 0x7315a4e9 twl6030_mmc_card_detect_config +EXPORT_SYMBOL vmlinux 0x732e5f45 unregister_key_type +EXPORT_SYMBOL vmlinux 0x7338e7cf xfrm4_rcv_cb +EXPORT_SYMBOL vmlinux 0x733c37bd phy_ethtool_gset +EXPORT_SYMBOL vmlinux 0x733c3b54 kasprintf +EXPORT_SYMBOL vmlinux 0x73406b40 mmc_gpiod_request_ro +EXPORT_SYMBOL vmlinux 0x735a0bd5 native_io_delay +EXPORT_SYMBOL vmlinux 0x736a92f8 neigh_sysctl_register +EXPORT_SYMBOL vmlinux 0x736e6f78 agp_backend_release +EXPORT_SYMBOL vmlinux 0x7376fb2b amd_northbridges +EXPORT_SYMBOL vmlinux 0x737a4d11 rc5t583_ext_power_req_config +EXPORT_SYMBOL vmlinux 0x738714db ida_pre_get +EXPORT_SYMBOL vmlinux 0x73964657 skb_add_rx_frag +EXPORT_SYMBOL vmlinux 0x739cbf76 padata_unregister_cpumask_notifier +EXPORT_SYMBOL vmlinux 0x73b1ce24 agp_generic_alloc_user +EXPORT_SYMBOL vmlinux 0x73bafa74 ata_print_version +EXPORT_SYMBOL vmlinux 0x73dd54eb irq_fpu_usable +EXPORT_SYMBOL vmlinux 0x73eb2535 key_link +EXPORT_SYMBOL vmlinux 0x73efb35f agp_allocate_memory +EXPORT_SYMBOL vmlinux 0x73f28775 pci_request_regions_exclusive +EXPORT_SYMBOL vmlinux 0x73ff6747 mdiobus_unregister +EXPORT_SYMBOL vmlinux 0x740a1b95 reserve_evntsel_nmi +EXPORT_SYMBOL vmlinux 0x7410aba2 strreplace +EXPORT_SYMBOL vmlinux 0x741f20f3 register_key_type +EXPORT_SYMBOL vmlinux 0x742acc43 mdiobus_read +EXPORT_SYMBOL vmlinux 0x74441f4b neigh_table_init +EXPORT_SYMBOL vmlinux 0x745bc774 iterate_fd +EXPORT_SYMBOL vmlinux 0x745f20a3 idr_is_empty +EXPORT_SYMBOL vmlinux 0x747169b8 scsi_init_io +EXPORT_SYMBOL vmlinux 0x747195f0 hdmi_vendor_infoframe_init +EXPORT_SYMBOL vmlinux 0x7485e15e unregister_chrdev_region +EXPORT_SYMBOL vmlinux 0x7490f8e8 bprm_change_interp +EXPORT_SYMBOL vmlinux 0x74bb67d6 wait_on_page_bit +EXPORT_SYMBOL vmlinux 0x74c134b9 __sw_hweight32 +EXPORT_SYMBOL vmlinux 0x74d8bc1d mipi_dsi_dcs_write_buffer +EXPORT_SYMBOL vmlinux 0x74e5ff1a udpv6_encap_enable +EXPORT_SYMBOL vmlinux 0x750283ec filemap_fdatawait_range +EXPORT_SYMBOL vmlinux 0x7513f276 copy_from_iter_nocache +EXPORT_SYMBOL vmlinux 0x752d03a3 blk_mq_stop_hw_queues +EXPORT_SYMBOL vmlinux 0x7532588a alloc_pages_exact +EXPORT_SYMBOL vmlinux 0x7538b132 agp_off +EXPORT_SYMBOL vmlinux 0x754d539c strlen +EXPORT_SYMBOL vmlinux 0x755097f2 sk_wait_data +EXPORT_SYMBOL vmlinux 0x75658b9d param_get_invbool +EXPORT_SYMBOL vmlinux 0x759b3dec jbd2_trans_will_send_data_barrier +EXPORT_SYMBOL vmlinux 0x75a02f94 call_usermodehelper_setup +EXPORT_SYMBOL vmlinux 0x75a3dc41 tcp_get_md5sig_pool +EXPORT_SYMBOL vmlinux 0x75bc549a x86_cpu_to_apicid +EXPORT_SYMBOL vmlinux 0x75bda77a seq_hlist_next +EXPORT_SYMBOL vmlinux 0x75bdea12 iommu_area_alloc +EXPORT_SYMBOL vmlinux 0x75d33825 lookup_bdev +EXPORT_SYMBOL vmlinux 0x75ecd44d xfrm6_rcv_spi +EXPORT_SYMBOL vmlinux 0x75fa91c1 simple_symlink_inode_operations +EXPORT_SYMBOL vmlinux 0x75fbdefd acpi_remove_address_space_handler +EXPORT_SYMBOL vmlinux 0x7602a12d kernel_setsockopt +EXPORT_SYMBOL vmlinux 0x7606b904 compat_ip_setsockopt +EXPORT_SYMBOL vmlinux 0x760a0f4f yield +EXPORT_SYMBOL vmlinux 0x763d423d mfd_add_devices +EXPORT_SYMBOL vmlinux 0x7645af6f sg_pcopy_from_buffer +EXPORT_SYMBOL vmlinux 0x7647726c handle_sysrq +EXPORT_SYMBOL vmlinux 0x764bd77c request_resource +EXPORT_SYMBOL vmlinux 0x764f9657 blk_queue_softirq_done +EXPORT_SYMBOL vmlinux 0x765c8c9a inode_init_owner +EXPORT_SYMBOL vmlinux 0x765ff474 crc_t10dif_generic +EXPORT_SYMBOL vmlinux 0x76604940 posix_test_lock +EXPORT_SYMBOL vmlinux 0x766f5a02 con_copy_unimap +EXPORT_SYMBOL vmlinux 0x767dd8fd acpi_get_irq_routing_table +EXPORT_SYMBOL vmlinux 0x767ddb02 set_memory_wc +EXPORT_SYMBOL vmlinux 0x767ee5b2 i8042_check_port_owner +EXPORT_SYMBOL vmlinux 0x76869ac8 rdmsr_on_cpus +EXPORT_SYMBOL vmlinux 0x768b24a1 inet_listen +EXPORT_SYMBOL vmlinux 0x76d3cd60 laptop_mode +EXPORT_SYMBOL vmlinux 0x76d451c4 add_taint +EXPORT_SYMBOL vmlinux 0x76d80c8e devm_ioremap_nocache +EXPORT_SYMBOL vmlinux 0x76d869dd seq_put_decimal_ull +EXPORT_SYMBOL vmlinux 0x76e4b022 call_usermodehelper_exec +EXPORT_SYMBOL vmlinux 0x76ee9425 fb_validate_mode +EXPORT_SYMBOL vmlinux 0x76fb08a7 amd_iommu_unregister_ppr_notifier +EXPORT_SYMBOL vmlinux 0x771b8ec4 queue_write_lock_slowpath +EXPORT_SYMBOL vmlinux 0x771cf835 dma_pool_alloc +EXPORT_SYMBOL vmlinux 0x77228589 truncate_inode_pages_final +EXPORT_SYMBOL vmlinux 0x773187e9 remap_vmalloc_range +EXPORT_SYMBOL vmlinux 0x773fa409 __kfifo_dma_in_finish_r +EXPORT_SYMBOL vmlinux 0x77456e0a acpi_root_dir +EXPORT_SYMBOL vmlinux 0x77608e3c dquot_quota_off +EXPORT_SYMBOL vmlinux 0x7763a22b blk_stack_limits +EXPORT_SYMBOL vmlinux 0x7765077c md_set_array_sectors +EXPORT_SYMBOL vmlinux 0x776e7b83 cdrom_release +EXPORT_SYMBOL vmlinux 0x779347e4 blk_rq_unmap_user +EXPORT_SYMBOL vmlinux 0x779a18af kstrtoll +EXPORT_SYMBOL vmlinux 0x77a00ede unlock_rename +EXPORT_SYMBOL vmlinux 0x77aefec4 jbd2_journal_force_commit_nested +EXPORT_SYMBOL vmlinux 0x77bc13a0 strim +EXPORT_SYMBOL vmlinux 0x77c047fa get_phy_device +EXPORT_SYMBOL vmlinux 0x77cd10c4 mmc_of_parse +EXPORT_SYMBOL vmlinux 0x77e55388 unlink_framebuffer +EXPORT_SYMBOL vmlinux 0x77f53abc acpi_get_vendor_resource +EXPORT_SYMBOL vmlinux 0x780b2e4f param_ops_charp +EXPORT_SYMBOL vmlinux 0x780fdfd1 intel_enable_gtt +EXPORT_SYMBOL vmlinux 0x7819011c mutex_unlock +EXPORT_SYMBOL vmlinux 0x781b09f6 inet_reqsk_alloc +EXPORT_SYMBOL vmlinux 0x783a0c2a cros_ec_cmd_xfer +EXPORT_SYMBOL vmlinux 0x783b3563 wake_up_atomic_t +EXPORT_SYMBOL vmlinux 0x7846af3e __kfifo_len_r +EXPORT_SYMBOL vmlinux 0x78488982 dqput +EXPORT_SYMBOL vmlinux 0x78764f4e pv_irq_ops +EXPORT_SYMBOL vmlinux 0x787cde39 input_mt_sync_frame +EXPORT_SYMBOL vmlinux 0x7880c781 dm_kcopyd_prepare_callback +EXPORT_SYMBOL vmlinux 0x7892b84e dev_getfirstbyhwtype +EXPORT_SYMBOL vmlinux 0x789affb1 frontswap_tmem_exclusive_gets +EXPORT_SYMBOL vmlinux 0x78a5ff8a fence_add_callback +EXPORT_SYMBOL vmlinux 0x78b58151 scsi_device_lookup +EXPORT_SYMBOL vmlinux 0x78d1fe38 vme_bus_num +EXPORT_SYMBOL vmlinux 0x78d936b1 pcie_get_mps +EXPORT_SYMBOL vmlinux 0x78df6bd7 no_pci_devices +EXPORT_SYMBOL vmlinux 0x78e739aa up +EXPORT_SYMBOL vmlinux 0x78edcd6b dma_sync_wait +EXPORT_SYMBOL vmlinux 0x790356a4 vme_dma_list_free +EXPORT_SYMBOL vmlinux 0x79068fda acpi_install_method +EXPORT_SYMBOL vmlinux 0x790e6723 con_set_default_unimap +EXPORT_SYMBOL vmlinux 0x791c5e9b dquot_quota_sync +EXPORT_SYMBOL vmlinux 0x791ed1c9 rename_lock +EXPORT_SYMBOL vmlinux 0x7926e1ab __dquot_alloc_space +EXPORT_SYMBOL vmlinux 0x792b8d85 misc_deregister +EXPORT_SYMBOL vmlinux 0x79600d20 scsi_bios_ptable +EXPORT_SYMBOL vmlinux 0x796f677e arp_create +EXPORT_SYMBOL vmlinux 0x796fc5ce scsi_get_sense_info_fld +EXPORT_SYMBOL vmlinux 0x79750816 __ww_mutex_lock +EXPORT_SYMBOL vmlinux 0x7983764a request_key_async +EXPORT_SYMBOL vmlinux 0x7984eefc key_update +EXPORT_SYMBOL vmlinux 0x7985d043 radix_tree_tag_set +EXPORT_SYMBOL vmlinux 0x7990e81c tcp_sendpage +EXPORT_SYMBOL vmlinux 0x7998b5c3 dev_change_carrier +EXPORT_SYMBOL vmlinux 0x79a33f85 vme_get_size +EXPORT_SYMBOL vmlinux 0x79aa04a2 get_random_bytes +EXPORT_SYMBOL vmlinux 0x79d8cd66 audit_log_start +EXPORT_SYMBOL vmlinux 0x79daaba3 vlan_dev_vlan_id +EXPORT_SYMBOL vmlinux 0x7a0c5d12 swiotlb_unmap_sg +EXPORT_SYMBOL vmlinux 0x7a27c184 ewma_init +EXPORT_SYMBOL vmlinux 0x7a2af7b4 cpu_number +EXPORT_SYMBOL vmlinux 0x7a3a8fc9 phy_get_eee_err +EXPORT_SYMBOL vmlinux 0x7a3ae32e _raw_write_trylock +EXPORT_SYMBOL vmlinux 0x7a4497db kzfree +EXPORT_SYMBOL vmlinux 0x7a65523f sock_wfree +EXPORT_SYMBOL vmlinux 0x7a6cdedc do_settimeofday64 +EXPORT_SYMBOL vmlinux 0x7a82cb47 rdmsrl_safe_on_cpu +EXPORT_SYMBOL vmlinux 0x7a8487b4 dcache_dir_close +EXPORT_SYMBOL vmlinux 0x7a925833 cpufreq_get_global_kobject +EXPORT_SYMBOL vmlinux 0x7a9c3156 vfs_rmdir +EXPORT_SYMBOL vmlinux 0x7aa1756e kvfree +EXPORT_SYMBOL vmlinux 0x7aa3bca6 param_set_bool +EXPORT_SYMBOL vmlinux 0x7ab88a45 system_freezing_cnt +EXPORT_SYMBOL vmlinux 0x7abf6733 simple_dir_inode_operations +EXPORT_SYMBOL vmlinux 0x7ac67c66 neigh_connected_output +EXPORT_SYMBOL vmlinux 0x7ad050b9 qid_lt +EXPORT_SYMBOL vmlinux 0x7add44b5 posix_acl_valid +EXPORT_SYMBOL vmlinux 0x7aec9089 clear_user +EXPORT_SYMBOL vmlinux 0x7af92217 tty_flip_buffer_push +EXPORT_SYMBOL vmlinux 0x7b039f14 fddi_change_mtu +EXPORT_SYMBOL vmlinux 0x7b16235f hdmi_vendor_infoframe_pack +EXPORT_SYMBOL vmlinux 0x7b2aef6c __krealloc +EXPORT_SYMBOL vmlinux 0x7b52a859 wrmsr_safe_on_cpu +EXPORT_SYMBOL vmlinux 0x7b5ea5f3 blk_get_backing_dev_info +EXPORT_SYMBOL vmlinux 0x7b6499e7 skb_copy_datagram_from_iter +EXPORT_SYMBOL vmlinux 0x7b6d54a4 agp_generic_insert_memory +EXPORT_SYMBOL vmlinux 0x7b9b8425 mutex_lock_killable +EXPORT_SYMBOL vmlinux 0x7ba81ac8 rawv6_mh_filter_unregister +EXPORT_SYMBOL vmlinux 0x7bad7a1a acpi_walk_resources +EXPORT_SYMBOL vmlinux 0x7bc411d4 vfs_mkdir +EXPORT_SYMBOL vmlinux 0x7bd56b32 filemap_page_mkwrite +EXPORT_SYMBOL vmlinux 0x7be0310c nvdimm_bus_lock +EXPORT_SYMBOL vmlinux 0x7be75ffc acpi_walk_resource_buffer +EXPORT_SYMBOL vmlinux 0x7c1372e8 panic +EXPORT_SYMBOL vmlinux 0x7c173634 __bitmap_complement +EXPORT_SYMBOL vmlinux 0x7c194399 registered_fb +EXPORT_SYMBOL vmlinux 0x7c20d2b4 dev_mc_init +EXPORT_SYMBOL vmlinux 0x7c2d098f krealloc +EXPORT_SYMBOL vmlinux 0x7c46233a cpufreq_quick_get +EXPORT_SYMBOL vmlinux 0x7c5dd0f3 dquot_claim_space_nodirty +EXPORT_SYMBOL vmlinux 0x7c61340c __release_region +EXPORT_SYMBOL vmlinux 0x7c71e16b inet6_register_protosw +EXPORT_SYMBOL vmlinux 0x7c8c5238 input_set_keycode +EXPORT_SYMBOL vmlinux 0x7c8dbe15 inet_csk_delete_keepalive_timer +EXPORT_SYMBOL vmlinux 0x7c9703ec nf_log_unset +EXPORT_SYMBOL vmlinux 0x7c98845d twl_i2c_read +EXPORT_SYMBOL vmlinux 0x7ca84f09 find_vma +EXPORT_SYMBOL vmlinux 0x7cb105cc tcp_create_openreq_child +EXPORT_SYMBOL vmlinux 0x7cb1ae69 cpu_down +EXPORT_SYMBOL vmlinux 0x7cbbae6b proc_create_data +EXPORT_SYMBOL vmlinux 0x7ce18c9f from_kqid +EXPORT_SYMBOL vmlinux 0x7ce83365 acpi_remove_table_handler +EXPORT_SYMBOL vmlinux 0x7cf35220 vme_master_free +EXPORT_SYMBOL vmlinux 0x7d0a7181 dev_addr_del +EXPORT_SYMBOL vmlinux 0x7d0db45c jiffies_to_clock_t +EXPORT_SYMBOL vmlinux 0x7d11c268 jiffies +EXPORT_SYMBOL vmlinux 0x7d1be204 ip6_dst_hoplimit +EXPORT_SYMBOL vmlinux 0x7d287136 neigh_proc_dointvec_ms_jiffies +EXPORT_SYMBOL vmlinux 0x7d3de837 inet_proto_csum_replace4 +EXPORT_SYMBOL vmlinux 0x7d44a371 ab3100_event_unregister +EXPORT_SYMBOL vmlinux 0x7d496b15 param_get_byte +EXPORT_SYMBOL vmlinux 0x7d63b604 __find_get_block +EXPORT_SYMBOL vmlinux 0x7d705738 blk_start_plug +EXPORT_SYMBOL vmlinux 0x7d7ad9e3 acpi_device_set_power +EXPORT_SYMBOL vmlinux 0x7d94f746 acpi_os_write_port +EXPORT_SYMBOL vmlinux 0x7d96cea3 wait_for_completion_interruptible +EXPORT_SYMBOL vmlinux 0x7dbc2e57 mmiotrace_printk +EXPORT_SYMBOL vmlinux 0x7dcdd8f9 clocksource_change_rating +EXPORT_SYMBOL vmlinux 0x7dd10c13 processors +EXPORT_SYMBOL vmlinux 0x7dd554fc unregister_kmmio_probe +EXPORT_SYMBOL vmlinux 0x7dec79b0 xfrm_state_check_expire +EXPORT_SYMBOL vmlinux 0x7deff673 dm_consume_args +EXPORT_SYMBOL vmlinux 0x7df15c8f agp_generic_alloc_page +EXPORT_SYMBOL vmlinux 0x7e13b97c tty_hung_up_p +EXPORT_SYMBOL vmlinux 0x7e1f8aac iov_iter_copy_from_user_atomic +EXPORT_SYMBOL vmlinux 0x7e268eb0 abx500_mask_and_set_register_interruptible +EXPORT_SYMBOL vmlinux 0x7e4d7e18 gnet_stats_copy_app +EXPORT_SYMBOL vmlinux 0x7e54086f textsearch_destroy +EXPORT_SYMBOL vmlinux 0x7e66cb88 __task_pid_nr_ns +EXPORT_SYMBOL vmlinux 0x7e79f513 tty_driver_flush_buffer +EXPORT_SYMBOL vmlinux 0x7e7fc3fb __wake_up_bit +EXPORT_SYMBOL vmlinux 0x7e852994 get_task_io_context +EXPORT_SYMBOL vmlinux 0x7e97177e abx500_event_registers_startup_state_get +EXPORT_SYMBOL vmlinux 0x7ea997fe devfreq_add_device +EXPORT_SYMBOL vmlinux 0x7ebd4be4 trace_print_flags_seq +EXPORT_SYMBOL vmlinux 0x7ee6d93a nsecs_to_jiffies64 +EXPORT_SYMBOL vmlinux 0x7ee72d79 jbd2_journal_revoke +EXPORT_SYMBOL vmlinux 0x7ee73313 sock_wake_async +EXPORT_SYMBOL vmlinux 0x7eff5837 tty_wait_until_sent +EXPORT_SYMBOL vmlinux 0x7effbe45 pci_bus_find_capability +EXPORT_SYMBOL vmlinux 0x7f02188f __msecs_to_jiffies +EXPORT_SYMBOL vmlinux 0x7f24de73 jiffies_to_usecs +EXPORT_SYMBOL vmlinux 0x7f62a045 cpu_maps_update_done +EXPORT_SYMBOL vmlinux 0x7f6eae9e blk_run_queue_async +EXPORT_SYMBOL vmlinux 0x7f85eea0 devm_kvasprintf +EXPORT_SYMBOL vmlinux 0x7fbd10d2 radix_tree_next_chunk +EXPORT_SYMBOL vmlinux 0x7fcc990e blk_end_request_cur +EXPORT_SYMBOL vmlinux 0x7fe32873 rb_replace_node +EXPORT_SYMBOL vmlinux 0x7fe38f48 sg_copy_to_buffer +EXPORT_SYMBOL vmlinux 0x7ffce950 tcp_get_cookie_sock +EXPORT_SYMBOL vmlinux 0x8004f46c lookup_one_len +EXPORT_SYMBOL vmlinux 0x80053109 genphy_aneg_done +EXPORT_SYMBOL vmlinux 0x80096048 block_write_begin +EXPORT_SYMBOL vmlinux 0x8014fa00 pci_bus_add_devices +EXPORT_SYMBOL vmlinux 0x80227074 simple_lookup +EXPORT_SYMBOL vmlinux 0x8040bc8f rwsem_down_write_failed +EXPORT_SYMBOL vmlinux 0x805ac3ed mpage_writepages +EXPORT_SYMBOL vmlinux 0x8068c15c kblockd_schedule_delayed_work +EXPORT_SYMBOL vmlinux 0x80791a8c radix_tree_gang_lookup_slot +EXPORT_SYMBOL vmlinux 0x807ebc9d kset_register +EXPORT_SYMBOL vmlinux 0x809388ca idr_destroy +EXPORT_SYMBOL vmlinux 0x80ae2970 pci_set_dma_seg_boundary +EXPORT_SYMBOL vmlinux 0x80ca5026 _bin2bcd +EXPORT_SYMBOL vmlinux 0x80d68d3e fb_register_client +EXPORT_SYMBOL vmlinux 0x80e77c8d pcix_get_max_mmrbc +EXPORT_SYMBOL vmlinux 0x80eb423b acpi_get_object_info +EXPORT_SYMBOL vmlinux 0x81144f9d idr_find_slowpath +EXPORT_SYMBOL vmlinux 0x81472677 acpi_get_table +EXPORT_SYMBOL vmlinux 0x814e7730 nf_ct_destroy +EXPORT_SYMBOL vmlinux 0x81533963 sysfs_format_mac +EXPORT_SYMBOL vmlinux 0x815b5dd4 match_octal +EXPORT_SYMBOL vmlinux 0x815f2897 empty_zero_page +EXPORT_SYMBOL vmlinux 0x816014dc nla_put_nohdr +EXPORT_SYMBOL vmlinux 0x816096bf dev_uc_sync +EXPORT_SYMBOL vmlinux 0x8183daf1 inode_sub_bytes +EXPORT_SYMBOL vmlinux 0x8186e850 tty_hangup +EXPORT_SYMBOL vmlinux 0x81a66292 skb_get_hash_perturb +EXPORT_SYMBOL vmlinux 0x81a89f92 devfreq_interval_update +EXPORT_SYMBOL vmlinux 0x81bc1540 dev_get_by_index_rcu +EXPORT_SYMBOL vmlinux 0x81db6ebb xz_dec_reset +EXPORT_SYMBOL vmlinux 0x81e6b37f dmi_get_system_info +EXPORT_SYMBOL vmlinux 0x81e74f2a tcp_disconnect +EXPORT_SYMBOL vmlinux 0x81f17311 eth_header_parse +EXPORT_SYMBOL vmlinux 0x82000108 dentry_path_raw +EXPORT_SYMBOL vmlinux 0x82072614 tasklet_kill +EXPORT_SYMBOL vmlinux 0x82073e61 rtnl_set_sk_err +EXPORT_SYMBOL vmlinux 0x8212721d xenbus_dev_request_and_reply +EXPORT_SYMBOL vmlinux 0x82458f7f radix_tree_delete_item +EXPORT_SYMBOL vmlinux 0x824930aa __ip_dev_find +EXPORT_SYMBOL vmlinux 0x82557093 pci_add_new_bus +EXPORT_SYMBOL vmlinux 0x82701365 int_to_scsilun +EXPORT_SYMBOL vmlinux 0x82714a3b start_tty +EXPORT_SYMBOL vmlinux 0x828062b1 __frontswap_init +EXPORT_SYMBOL vmlinux 0x82871b60 dmt_modes +EXPORT_SYMBOL vmlinux 0x829534b3 fence_free +EXPORT_SYMBOL vmlinux 0x82acfb70 blk_iopoll_sched +EXPORT_SYMBOL vmlinux 0x82c02350 jbd2_journal_set_features +EXPORT_SYMBOL vmlinux 0x82f34470 skb_vlan_untag +EXPORT_SYMBOL vmlinux 0x8304733a blk_set_stacking_limits +EXPORT_SYMBOL vmlinux 0x830e547b ioremap_prot +EXPORT_SYMBOL vmlinux 0x831b564c import_iovec +EXPORT_SYMBOL vmlinux 0x833c03aa acpi_enable_all_runtime_gpes +EXPORT_SYMBOL vmlinux 0x83650d34 led_update_brightness +EXPORT_SYMBOL vmlinux 0x837485a6 pnp_get_resource +EXPORT_SYMBOL vmlinux 0x83754232 f_setown +EXPORT_SYMBOL vmlinux 0x83817e00 kill_litter_super +EXPORT_SYMBOL vmlinux 0x8384647a acpi_map_pxm_to_online_node +EXPORT_SYMBOL vmlinux 0x8389108e i2c_master_recv +EXPORT_SYMBOL vmlinux 0x839430b2 __register_cpu_notifier +EXPORT_SYMBOL vmlinux 0x83a55ae0 kernel_sock_ioctl +EXPORT_SYMBOL vmlinux 0x83b009ea xfrm_state_walk_init +EXPORT_SYMBOL vmlinux 0x83c52fba xfrm4_protocol_init +EXPORT_SYMBOL vmlinux 0x83d5b8ea cookie_ecn_ok +EXPORT_SYMBOL vmlinux 0x83d5db69 block_page_mkwrite +EXPORT_SYMBOL vmlinux 0x83f533bb jbd2_journal_begin_ordered_truncate +EXPORT_SYMBOL vmlinux 0x83f64406 sock_no_connect +EXPORT_SYMBOL vmlinux 0x83fd514b __page_cache_alloc +EXPORT_SYMBOL vmlinux 0x84060081 xen_poll_irq_timeout +EXPORT_SYMBOL vmlinux 0x8408aea6 pci_map_rom +EXPORT_SYMBOL vmlinux 0x8417f512 acpi_update_all_gpes +EXPORT_SYMBOL vmlinux 0x84204f1e frontswap_register_ops +EXPORT_SYMBOL vmlinux 0x84370b4e nf_hook_slow +EXPORT_SYMBOL vmlinux 0x84444b70 md_unregister_thread +EXPORT_SYMBOL vmlinux 0x844880f4 kmem_cache_alloc_node +EXPORT_SYMBOL vmlinux 0x844e3767 radix_tree_lookup +EXPORT_SYMBOL vmlinux 0x8466f121 iterate_mounts +EXPORT_SYMBOL vmlinux 0x84794a2c inc_zone_page_state +EXPORT_SYMBOL vmlinux 0x84d79a07 ppp_dev_name +EXPORT_SYMBOL vmlinux 0x84f092bf loop_backing_file +EXPORT_SYMBOL vmlinux 0x84ffea8b idr_preload +EXPORT_SYMBOL vmlinux 0x8507c383 proc_dointvec +EXPORT_SYMBOL vmlinux 0x85107e51 devm_ioport_unmap +EXPORT_SYMBOL vmlinux 0x8515cdbe pm860x_bulk_write +EXPORT_SYMBOL vmlinux 0x8526c35a remove_wait_queue +EXPORT_SYMBOL vmlinux 0x8533a3b4 key_task_permission +EXPORT_SYMBOL vmlinux 0x854d3cdd xfrm4_rcv +EXPORT_SYMBOL vmlinux 0x8552e605 devfreq_monitor_resume +EXPORT_SYMBOL vmlinux 0x85562250 __devm_gpiod_get_index_optional +EXPORT_SYMBOL vmlinux 0x855d102b dev_mc_add +EXPORT_SYMBOL vmlinux 0x85670f1d rtnl_is_locked +EXPORT_SYMBOL vmlinux 0x8571e6e6 blk_queue_prep_rq +EXPORT_SYMBOL vmlinux 0x857582f7 acpi_enable_all_wakeup_gpes +EXPORT_SYMBOL vmlinux 0x858bc7e5 sk_dst_check +EXPORT_SYMBOL vmlinux 0x859e2f30 request_key_with_auxdata +EXPORT_SYMBOL vmlinux 0x85a8f375 serial8250_register_8250_port +EXPORT_SYMBOL vmlinux 0x85b5e625 rfkill_set_states +EXPORT_SYMBOL vmlinux 0x85b8c713 trace_raw_output_prep +EXPORT_SYMBOL vmlinux 0x85bd6920 give_up_console +EXPORT_SYMBOL vmlinux 0x85df9b6c strsep +EXPORT_SYMBOL vmlinux 0x85ee404a jbd2_journal_init_jbd_inode +EXPORT_SYMBOL vmlinux 0x85efc7e0 zero_pfn +EXPORT_SYMBOL vmlinux 0x860d5b15 key_put +EXPORT_SYMBOL vmlinux 0x861717b3 skb_free_datagram +EXPORT_SYMBOL vmlinux 0x861e22a4 acpi_map_cpu +EXPORT_SYMBOL vmlinux 0x8624c10a xfrm_policy_register_afinfo +EXPORT_SYMBOL vmlinux 0x8640e009 agp_generic_alloc_pages +EXPORT_SYMBOL vmlinux 0x865029ac __hw_addr_sync +EXPORT_SYMBOL vmlinux 0x86588053 gen_pool_destroy +EXPORT_SYMBOL vmlinux 0x865d263c tcp_sockets_allocated +EXPORT_SYMBOL vmlinux 0x865d7f28 __dev_kfree_skb_irq +EXPORT_SYMBOL vmlinux 0x8664f62e cpufreq_update_policy +EXPORT_SYMBOL vmlinux 0x86657817 disk_stack_limits +EXPORT_SYMBOL vmlinux 0x868acba5 get_options +EXPORT_SYMBOL vmlinux 0x86971b75 napi_gro_receive +EXPORT_SYMBOL vmlinux 0x86cf44d5 netdev_update_features +EXPORT_SYMBOL vmlinux 0x86fa15d7 md_write_end +EXPORT_SYMBOL vmlinux 0x86fb9b05 bitmap_parse_user +EXPORT_SYMBOL vmlinux 0x871666fc try_to_writeback_inodes_sb +EXPORT_SYMBOL vmlinux 0x871c0a7e fiemap_check_flags +EXPORT_SYMBOL vmlinux 0x872f6b6a default_file_splice_read +EXPORT_SYMBOL vmlinux 0x876225ee kobject_set_name +EXPORT_SYMBOL vmlinux 0x8762ebcc dev_queue_xmit_sk +EXPORT_SYMBOL vmlinux 0x876dafc3 ec_write +EXPORT_SYMBOL vmlinux 0x87831f1b irq_to_desc +EXPORT_SYMBOL vmlinux 0x878ab3ce sysctl_tcp_adv_win_scale +EXPORT_SYMBOL vmlinux 0x878cd015 wait_for_completion_interruptible_timeout +EXPORT_SYMBOL vmlinux 0x879d57a2 release_sock +EXPORT_SYMBOL vmlinux 0x87a08c28 generic_key_instantiate +EXPORT_SYMBOL vmlinux 0x87a75187 mount_ns +EXPORT_SYMBOL vmlinux 0x87a77377 ip6_expire_frag_queue +EXPORT_SYMBOL vmlinux 0x87aaddf8 wrmsr_safe_regs_on_cpu +EXPORT_SYMBOL vmlinux 0x87c1f89c md_cluster_mod +EXPORT_SYMBOL vmlinux 0x87c58a96 smp_call_function_many +EXPORT_SYMBOL vmlinux 0x87d32131 copy_page_from_iter +EXPORT_SYMBOL vmlinux 0x87df0c28 dm_register_target +EXPORT_SYMBOL vmlinux 0x87e27496 ___pskb_trim +EXPORT_SYMBOL vmlinux 0x87f89ce0 _raw_read_unlock_irqrestore +EXPORT_SYMBOL vmlinux 0x88009cd8 kobject_put +EXPORT_SYMBOL vmlinux 0x8809c55c unlock_new_inode +EXPORT_SYMBOL vmlinux 0x88201ee6 mipi_dsi_dcs_get_pixel_format +EXPORT_SYMBOL vmlinux 0x883efa7a __qdisc_calculate_pkt_len +EXPORT_SYMBOL vmlinux 0x8845123a nf_getsockopt +EXPORT_SYMBOL vmlinux 0x884aca21 pm8606_osc_enable +EXPORT_SYMBOL vmlinux 0x884dc06d dcb_setapp +EXPORT_SYMBOL vmlinux 0x885c7964 adjust_managed_page_count +EXPORT_SYMBOL vmlinux 0x887fa47e __getnstimeofday64 +EXPORT_SYMBOL vmlinux 0x88838e4d udp_disconnect +EXPORT_SYMBOL vmlinux 0x8884b90b tso_start +EXPORT_SYMBOL vmlinux 0x88876dcd follow_up +EXPORT_SYMBOL vmlinux 0x889f8071 xfrm6_rcv +EXPORT_SYMBOL vmlinux 0x88adeb6c __scm_send +EXPORT_SYMBOL vmlinux 0x88b8fa83 blk_queue_max_write_same_sectors +EXPORT_SYMBOL vmlinux 0x88c5c948 pci_scan_single_device +EXPORT_SYMBOL vmlinux 0x88c9993c filemap_write_and_wait_range +EXPORT_SYMBOL vmlinux 0x8902824a is_bad_inode +EXPORT_SYMBOL vmlinux 0x891bef26 vm_stat +EXPORT_SYMBOL vmlinux 0x891c2dd6 xfrm_user_policy +EXPORT_SYMBOL vmlinux 0x89235025 blk_rq_map_kern +EXPORT_SYMBOL vmlinux 0x892a594a alloc_file +EXPORT_SYMBOL vmlinux 0x892b26a0 set_memory_nx +EXPORT_SYMBOL vmlinux 0x8931f124 backlight_device_register +EXPORT_SYMBOL vmlinux 0x89530afc jbd2_journal_try_to_free_buffers +EXPORT_SYMBOL vmlinux 0x8957d27b dup_iter +EXPORT_SYMBOL vmlinux 0x897392a4 tcp_mtup_init +EXPORT_SYMBOL vmlinux 0x8981bf1e bioset_create_nobvec +EXPORT_SYMBOL vmlinux 0x898dd006 mb_cache_entry_find_next +EXPORT_SYMBOL vmlinux 0x89924cce mmc_get_card +EXPORT_SYMBOL vmlinux 0x899a8937 xfrm_state_register_afinfo +EXPORT_SYMBOL vmlinux 0x89afe34e __kfifo_dma_in_prepare +EXPORT_SYMBOL vmlinux 0x89b1c47b sock_queue_rcv_skb +EXPORT_SYMBOL vmlinux 0x89be594b ip_mc_leave_group +EXPORT_SYMBOL vmlinux 0x89cb5878 __neigh_event_send +EXPORT_SYMBOL vmlinux 0x89d5538d fb_pad_aligned_buffer +EXPORT_SYMBOL vmlinux 0x89de6683 zpool_unregister_driver +EXPORT_SYMBOL vmlinux 0x89decfed security_inode_notifysecctx +EXPORT_SYMBOL vmlinux 0x89f352c6 mount_subtree +EXPORT_SYMBOL vmlinux 0x8a0b12c6 complete_all +EXPORT_SYMBOL vmlinux 0x8a1731af __ps2_command +EXPORT_SYMBOL vmlinux 0x8a1ab4ee timeval_to_jiffies +EXPORT_SYMBOL vmlinux 0x8a27ea8d tcp_gro_complete +EXPORT_SYMBOL vmlinux 0x8a337b99 blk_mq_start_hw_queues +EXPORT_SYMBOL vmlinux 0x8a458a80 sk_filter +EXPORT_SYMBOL vmlinux 0x8a45abe4 phy_register_fixup_for_uid +EXPORT_SYMBOL vmlinux 0x8a490c90 rfkill_set_sw_state +EXPORT_SYMBOL vmlinux 0x8a51d565 quota_send_warning +EXPORT_SYMBOL vmlinux 0x8a6944f9 percpu_counter_set +EXPORT_SYMBOL vmlinux 0x8a6af65c kstrtoul_from_user +EXPORT_SYMBOL vmlinux 0x8a729f2e sock_no_getname +EXPORT_SYMBOL vmlinux 0x8a7d1c31 high_memory +EXPORT_SYMBOL vmlinux 0x8a8058e0 vc_cons +EXPORT_SYMBOL vmlinux 0x8a80d7a5 acpi_error +EXPORT_SYMBOL vmlinux 0x8a864967 param_get_ulong +EXPORT_SYMBOL vmlinux 0x8a99a016 mempool_free_slab +EXPORT_SYMBOL vmlinux 0x8aa47da7 ip_mc_dec_group +EXPORT_SYMBOL vmlinux 0x8aaa09eb sock_no_setsockopt +EXPORT_SYMBOL vmlinux 0x8abe3bca pci_try_set_mwi +EXPORT_SYMBOL vmlinux 0x8ad75b86 md_update_sb +EXPORT_SYMBOL vmlinux 0x8add47fe end_buffer_write_sync +EXPORT_SYMBOL vmlinux 0x8ae3fda8 register_md_cluster_operations +EXPORT_SYMBOL vmlinux 0x8afb5330 phy_register_fixup +EXPORT_SYMBOL vmlinux 0x8b1db715 swiotlb_sync_single_for_cpu +EXPORT_SYMBOL vmlinux 0x8b35e873 sg_last +EXPORT_SYMBOL vmlinux 0x8b43159b register_cpu_notifier +EXPORT_SYMBOL vmlinux 0x8b618d08 overflowuid +EXPORT_SYMBOL vmlinux 0x8b779ff6 write_inode_now +EXPORT_SYMBOL vmlinux 0x8b8059bd in_group_p +EXPORT_SYMBOL vmlinux 0x8b81552f inet6_del_protocol +EXPORT_SYMBOL vmlinux 0x8b989cf9 acpi_bus_can_wakeup +EXPORT_SYMBOL vmlinux 0x8ba5a14b first_ec +EXPORT_SYMBOL vmlinux 0x8bbc1a6d netif_napi_del +EXPORT_SYMBOL vmlinux 0x8bfa238e tcp_initialize_rcv_mss +EXPORT_SYMBOL vmlinux 0x8c183cbe iowrite16 +EXPORT_SYMBOL vmlinux 0x8c2acb3e __netlink_kernel_create +EXPORT_SYMBOL vmlinux 0x8c313a41 md_wait_for_blocked_rdev +EXPORT_SYMBOL vmlinux 0x8c500807 mmc_gpio_request_cd +EXPORT_SYMBOL vmlinux 0x8c637d43 irq_cpu_rmap_add +EXPORT_SYMBOL vmlinux 0x8c63d650 proc_set_user +EXPORT_SYMBOL vmlinux 0x8c69ac15 vme_irq_request +EXPORT_SYMBOL vmlinux 0x8c880377 dm_io +EXPORT_SYMBOL vmlinux 0x8c993521 submit_bh +EXPORT_SYMBOL vmlinux 0x8cb0ceb0 neigh_seq_next +EXPORT_SYMBOL vmlinux 0x8cb3206a truncate_setsize +EXPORT_SYMBOL vmlinux 0x8cc79cab iowrite16_rep +EXPORT_SYMBOL vmlinux 0x8cce0806 cap_mmap_file +EXPORT_SYMBOL vmlinux 0x8cd48f3d blk_mq_map_queue +EXPORT_SYMBOL vmlinux 0x8cd64486 nvdimm_namespace_common_probe +EXPORT_SYMBOL vmlinux 0x8cda4252 scsi_cmd_get_serial +EXPORT_SYMBOL vmlinux 0x8cda8029 xen_clear_irq_pending +EXPORT_SYMBOL vmlinux 0x8ce26f39 get_user_pages_unlocked +EXPORT_SYMBOL vmlinux 0x8d00cc7d netdev_master_upper_dev_get +EXPORT_SYMBOL vmlinux 0x8d0e5d95 md_check_recovery +EXPORT_SYMBOL vmlinux 0x8d1c9c66 md_reap_sync_thread +EXPORT_SYMBOL vmlinux 0x8d26ccb9 vfs_fsync_range +EXPORT_SYMBOL vmlinux 0x8d36dd74 pci_bus_read_config_word +EXPORT_SYMBOL vmlinux 0x8d551bef sysctl_tcp_rmem +EXPORT_SYMBOL vmlinux 0x8d55bb8a qid_eq +EXPORT_SYMBOL vmlinux 0x8d5d488f dump_skip +EXPORT_SYMBOL vmlinux 0x8d69e2da blk_queue_resize_tags +EXPORT_SYMBOL vmlinux 0x8d6abedd is_nd_btt +EXPORT_SYMBOL vmlinux 0x8d6d8e39 tcf_em_tree_dump +EXPORT_SYMBOL vmlinux 0x8d73278e hex_asc_upper +EXPORT_SYMBOL vmlinux 0x8d80c30b __serio_register_port +EXPORT_SYMBOL vmlinux 0x8d838d91 ida_remove +EXPORT_SYMBOL vmlinux 0x8d896ad7 unlock_buffer +EXPORT_SYMBOL vmlinux 0x8d8d96c6 acpi_get_sleep_type_data +EXPORT_SYMBOL vmlinux 0x8d995a02 dquot_quota_on +EXPORT_SYMBOL vmlinux 0x8da1a3cb acpi_remove_interface +EXPORT_SYMBOL vmlinux 0x8daf8c42 dql_init +EXPORT_SYMBOL vmlinux 0x8db1b747 xfrm_find_acq +EXPORT_SYMBOL vmlinux 0x8db96850 dump_trace +EXPORT_SYMBOL vmlinux 0x8dc878af serio_reconnect +EXPORT_SYMBOL vmlinux 0x8de6806e blk_queue_bounce +EXPORT_SYMBOL vmlinux 0x8df92f66 memchr_inv +EXPORT_SYMBOL vmlinux 0x8e002cda acpi_remove_gpe_block +EXPORT_SYMBOL vmlinux 0x8e082688 _raw_read_lock +EXPORT_SYMBOL vmlinux 0x8e0e234e bio_integrity_alloc +EXPORT_SYMBOL vmlinux 0x8e26b629 __nla_reserve_nohdr +EXPORT_SYMBOL vmlinux 0x8e29cbff skb_copy_bits +EXPORT_SYMBOL vmlinux 0x8e4d8c5c blk_queue_logical_block_size +EXPORT_SYMBOL vmlinux 0x8e4fcd44 sk_receive_skb +EXPORT_SYMBOL vmlinux 0x8e90e778 phy_init_eee +EXPORT_SYMBOL vmlinux 0x8e9ba28c invalidate_bdev +EXPORT_SYMBOL vmlinux 0x8eaf2a5f vga_switcheroo_unregister_handler +EXPORT_SYMBOL vmlinux 0x8ebe2109 revalidate_disk +EXPORT_SYMBOL vmlinux 0x8ed11d43 inet_csk_init_xmit_timers +EXPORT_SYMBOL vmlinux 0x8ee7798c pnpacpi_protocol +EXPORT_SYMBOL vmlinux 0x8eec48d3 __init_rwsem +EXPORT_SYMBOL vmlinux 0x8f2703b7 wbinvd_on_all_cpus +EXPORT_SYMBOL vmlinux 0x8f30a0d4 tcf_hash_destroy +EXPORT_SYMBOL vmlinux 0x8f4a8590 pci_get_domain_bus_and_slot +EXPORT_SYMBOL vmlinux 0x8f507124 gen_pool_alloc +EXPORT_SYMBOL vmlinux 0x8f54259f inet_frag_find +EXPORT_SYMBOL vmlinux 0x8f5702c3 simple_pin_fs +EXPORT_SYMBOL vmlinux 0x8f5ef8cb do_splice_to +EXPORT_SYMBOL vmlinux 0x8f68bc1d textsearch_find_continuous +EXPORT_SYMBOL vmlinux 0x8f855f3e send_sig_info +EXPORT_SYMBOL vmlinux 0x8f9659ed twl6040_get_sysclk +EXPORT_SYMBOL vmlinux 0x8f9c199c __get_user_2 +EXPORT_SYMBOL vmlinux 0x8fa587ec inet_csk_reqsk_queue_drop +EXPORT_SYMBOL vmlinux 0x8fa6fc8c i8042_remove_filter +EXPORT_SYMBOL vmlinux 0x8ff62b76 __xfrm_policy_check +EXPORT_SYMBOL vmlinux 0x8ffb5705 peernet2id_alloc +EXPORT_SYMBOL vmlinux 0x9009bc09 scsi_is_target_device +EXPORT_SYMBOL vmlinux 0x900a7c84 mipi_dsi_dcs_get_power_mode +EXPORT_SYMBOL vmlinux 0x9022a715 ip6_find_1stfragopt +EXPORT_SYMBOL vmlinux 0x904186b6 down_read +EXPORT_SYMBOL vmlinux 0x904409c6 acpi_set_firmware_waking_vector +EXPORT_SYMBOL vmlinux 0x906bb543 mem_cgroup_begin_page_stat +EXPORT_SYMBOL vmlinux 0x90a92485 tcp_proto_cgroup +EXPORT_SYMBOL vmlinux 0x90d9f308 pci_get_subsys +EXPORT_SYMBOL vmlinux 0x90dcc325 unregister_qdisc +EXPORT_SYMBOL vmlinux 0x90deb8ea posix_acl_to_xattr +EXPORT_SYMBOL vmlinux 0x90ded659 pci_set_master +EXPORT_SYMBOL vmlinux 0x90ee3b76 dm_kcopyd_zero +EXPORT_SYMBOL vmlinux 0x90f97fd6 insert_inode_locked4 +EXPORT_SYMBOL vmlinux 0x91463b1d kstrtos16 +EXPORT_SYMBOL vmlinux 0x91513898 netif_set_real_num_tx_queues +EXPORT_SYMBOL vmlinux 0x91569401 sock_i_ino +EXPORT_SYMBOL vmlinux 0x91607d95 set_memory_wb +EXPORT_SYMBOL vmlinux 0x9166fada strncpy +EXPORT_SYMBOL vmlinux 0x916a8f9e sock_release +EXPORT_SYMBOL vmlinux 0x91715312 sprintf +EXPORT_SYMBOL vmlinux 0x918ce48c request_firmware_nowait +EXPORT_SYMBOL vmlinux 0x91953337 sk_stream_write_space +EXPORT_SYMBOL vmlinux 0x91967e8e xen_selfballoon_init +EXPORT_SYMBOL vmlinux 0x91ac822f vscnprintf +EXPORT_SYMBOL vmlinux 0x91c0fad2 skb_free_datagram_locked +EXPORT_SYMBOL vmlinux 0x91e87477 security_old_inode_init_security +EXPORT_SYMBOL vmlinux 0x91eb10cb vga_client_register +EXPORT_SYMBOL vmlinux 0x91f3c192 tty_port_open +EXPORT_SYMBOL vmlinux 0x923b1276 dmaengine_get +EXPORT_SYMBOL vmlinux 0x925549fe simple_release_fs +EXPORT_SYMBOL vmlinux 0x925e0924 __wait_on_bit +EXPORT_SYMBOL vmlinux 0x9269afea tcp_seq_open +EXPORT_SYMBOL vmlinux 0x926e76b2 zero_fill_bio +EXPORT_SYMBOL vmlinux 0x926ee61d netdev_change_features +EXPORT_SYMBOL vmlinux 0x92703f9f datagram_poll +EXPORT_SYMBOL vmlinux 0x9277ed1f pnp_register_card_driver +EXPORT_SYMBOL vmlinux 0x9291cd3b memdup_user +EXPORT_SYMBOL vmlinux 0x92a9c60c time_to_tm +EXPORT_SYMBOL vmlinux 0x92bf5248 vga_switcheroo_set_dynamic_switch +EXPORT_SYMBOL vmlinux 0x92c7885a xfrm_init_state +EXPORT_SYMBOL vmlinux 0x92cbe467 jbd2_complete_transaction +EXPORT_SYMBOL vmlinux 0x92e4d2fe flow_hash_from_keys +EXPORT_SYMBOL vmlinux 0x92e67849 posix_unblock_lock +EXPORT_SYMBOL vmlinux 0x92f6767f lg_local_lock +EXPORT_SYMBOL vmlinux 0x92fa5abb vme_lm_detach +EXPORT_SYMBOL vmlinux 0x93022ba6 __scsi_format_command +EXPORT_SYMBOL vmlinux 0x9305f8e6 cpufreq_get +EXPORT_SYMBOL vmlinux 0x93109e59 pcie_capability_clear_and_set_word +EXPORT_SYMBOL vmlinux 0x93183fa7 do_truncate +EXPORT_SYMBOL vmlinux 0x932344a8 __register_chrdev +EXPORT_SYMBOL vmlinux 0x932493a8 iosf_mbi_read +EXPORT_SYMBOL vmlinux 0x932f15be devm_ioremap_resource +EXPORT_SYMBOL vmlinux 0x93448c57 screen_info +EXPORT_SYMBOL vmlinux 0x934803d8 ioc_lookup_icq +EXPORT_SYMBOL vmlinux 0x935d35ab __get_user_pages +EXPORT_SYMBOL vmlinux 0x9361b10e abx500_get_register_page_interruptible +EXPORT_SYMBOL vmlinux 0x936b39ac tty_port_free_xmit_buf +EXPORT_SYMBOL vmlinux 0x937733e3 qid_valid +EXPORT_SYMBOL vmlinux 0x937ad820 generic_writepages +EXPORT_SYMBOL vmlinux 0x937c084f neigh_app_ns +EXPORT_SYMBOL vmlinux 0x9380c074 mutex_lock_interruptible +EXPORT_SYMBOL vmlinux 0x938d4f8a register_framebuffer +EXPORT_SYMBOL vmlinux 0x93b3fc74 register_dcbevent_notifier +EXPORT_SYMBOL vmlinux 0x93bb3b9b x86_hyper +EXPORT_SYMBOL vmlinux 0x93ce1bae blk_run_queue +EXPORT_SYMBOL vmlinux 0x93ce6933 tty_register_ldisc +EXPORT_SYMBOL vmlinux 0x93d01c96 pnp_stop_dev +EXPORT_SYMBOL vmlinux 0x93f3e52b acpi_extract_package +EXPORT_SYMBOL vmlinux 0x93fca811 __get_free_pages +EXPORT_SYMBOL vmlinux 0x9402a6a5 scsilun_to_int +EXPORT_SYMBOL vmlinux 0x941d8662 amd_iommu_flush_page +EXPORT_SYMBOL vmlinux 0x941ea991 nf_register_hooks +EXPORT_SYMBOL vmlinux 0x9435b509 rtnl_link_get_net +EXPORT_SYMBOL vmlinux 0x944ea11e pm860x_set_bits +EXPORT_SYMBOL vmlinux 0x9456d949 elv_rb_add +EXPORT_SYMBOL vmlinux 0x94749e73 sock_no_sendpage +EXPORT_SYMBOL vmlinux 0x9478109b compat_tcp_getsockopt +EXPORT_SYMBOL vmlinux 0x94961283 vunmap +EXPORT_SYMBOL vmlinux 0x94a337a8 free_page_put_link +EXPORT_SYMBOL vmlinux 0x94a9a92f tcp_v4_mtu_reduced +EXPORT_SYMBOL vmlinux 0x94bbf2f5 xfrm_policy_insert +EXPORT_SYMBOL vmlinux 0x94c7405c md_error +EXPORT_SYMBOL vmlinux 0x94d4fadd skb_vlan_pop +EXPORT_SYMBOL vmlinux 0x94dd34fa alloc_disk_node +EXPORT_SYMBOL vmlinux 0x94e1bd7f twl6040_get_pll +EXPORT_SYMBOL vmlinux 0x94fc1eac phy_resume +EXPORT_SYMBOL vmlinux 0x94ff06a8 nf_log_trace +EXPORT_SYMBOL vmlinux 0x951853d2 d_move +EXPORT_SYMBOL vmlinux 0x952e5fab fasync_helper +EXPORT_SYMBOL vmlinux 0x95344561 alloc_pages_current +EXPORT_SYMBOL vmlinux 0x95395301 acpi_exception +EXPORT_SYMBOL vmlinux 0x953a88a1 poll_freewait +EXPORT_SYMBOL vmlinux 0x9545af6d tasklet_init +EXPORT_SYMBOL vmlinux 0x956f69c6 __skb_flow_get_ports +EXPORT_SYMBOL vmlinux 0x958aea5c truncate_pagecache_range +EXPORT_SYMBOL vmlinux 0x9592b912 ndisc_mc_map +EXPORT_SYMBOL vmlinux 0x9595fe6d scsi_get_host_dev +EXPORT_SYMBOL vmlinux 0x95a460fc inode_change_ok +EXPORT_SYMBOL vmlinux 0x95bd6e26 acpi_install_sci_handler +EXPORT_SYMBOL vmlinux 0x95e20e06 dma_common_get_sgtable +EXPORT_SYMBOL vmlinux 0x95f6e1d2 generic_block_fiemap +EXPORT_SYMBOL vmlinux 0x9631f958 jbd2_journal_forget +EXPORT_SYMBOL vmlinux 0x967461dc __devm_gpiod_get_optional +EXPORT_SYMBOL vmlinux 0x9695ce78 netpoll_poll_enable +EXPORT_SYMBOL vmlinux 0x969bf8b4 __kernel_write +EXPORT_SYMBOL vmlinux 0x969c0f35 acpi_processor_unregister_performance +EXPORT_SYMBOL vmlinux 0x969c24c9 fsnotify_init_mark +EXPORT_SYMBOL vmlinux 0x96aba385 proc_dointvec_jiffies +EXPORT_SYMBOL vmlinux 0x96b29254 strncasecmp +EXPORT_SYMBOL vmlinux 0x96bad054 lease_get_mtime +EXPORT_SYMBOL vmlinux 0x96c793da skb_page_frag_refill +EXPORT_SYMBOL vmlinux 0x96cd2b04 scsi_sense_key_string +EXPORT_SYMBOL vmlinux 0x96cec1da module_layout +EXPORT_SYMBOL vmlinux 0x96d506e8 padata_alloc +EXPORT_SYMBOL vmlinux 0x96f4f562 tcp_prequeue +EXPORT_SYMBOL vmlinux 0x9702a8e4 padata_free +EXPORT_SYMBOL vmlinux 0x971b472e devm_gpiod_get_array +EXPORT_SYMBOL vmlinux 0x9737cbd6 dentry_update_name_case +EXPORT_SYMBOL vmlinux 0x973fa82e register_acpi_notifier +EXPORT_SYMBOL vmlinux 0x974f4303 iov_iter_alignment +EXPORT_SYMBOL vmlinux 0x974f4f65 d_alloc +EXPORT_SYMBOL vmlinux 0x9751bbf3 __hw_addr_sync_dev +EXPORT_SYMBOL vmlinux 0x9754ec10 radix_tree_preload +EXPORT_SYMBOL vmlinux 0x975527a4 dst_destroy +EXPORT_SYMBOL vmlinux 0x97575a58 md_reload_sb +EXPORT_SYMBOL vmlinux 0x976423cd mmc_calc_max_discard +EXPORT_SYMBOL vmlinux 0x977eb6c5 genl_unregister_family +EXPORT_SYMBOL vmlinux 0x97868aef __kfifo_alloc +EXPORT_SYMBOL vmlinux 0x978c5381 devm_ioremap_wc +EXPORT_SYMBOL vmlinux 0x9798200b scsi_report_opcode +EXPORT_SYMBOL vmlinux 0x97999817 rfkill_set_hw_state +EXPORT_SYMBOL vmlinux 0x97a57333 crc_t10dif_update +EXPORT_SYMBOL vmlinux 0x97c5bd0a acpi_unload_parent_table +EXPORT_SYMBOL vmlinux 0x97ceff5a abx500_get_register_interruptible +EXPORT_SYMBOL vmlinux 0x97d62552 inet_accept +EXPORT_SYMBOL vmlinux 0x97d74950 tag_pages_for_writeback +EXPORT_SYMBOL vmlinux 0x97de0ddd acpi_install_gpe_block +EXPORT_SYMBOL vmlinux 0x97e11237 nf_log_bind_pf +EXPORT_SYMBOL vmlinux 0x97e1b327 __page_symlink +EXPORT_SYMBOL vmlinux 0x97e5cf00 ata_port_printk +EXPORT_SYMBOL vmlinux 0x97fb0f5f __pskb_copy_fclone +EXPORT_SYMBOL vmlinux 0x9809ffa5 tso_build_hdr +EXPORT_SYMBOL vmlinux 0x9820b644 warn_slowpath_fmt_taint +EXPORT_SYMBOL vmlinux 0x9829fc11 __kfifo_out_peek_r +EXPORT_SYMBOL vmlinux 0x984ca408 acpi_processor_notify_smm +EXPORT_SYMBOL vmlinux 0x9850ffba dev_notice +EXPORT_SYMBOL vmlinux 0x98571ac4 param_get_uint +EXPORT_SYMBOL vmlinux 0x986e6135 fb_pad_unaligned_buffer +EXPORT_SYMBOL vmlinux 0x986f50d8 md_integrity_register +EXPORT_SYMBOL vmlinux 0x9878745c _atomic_dec_and_lock +EXPORT_SYMBOL vmlinux 0x988ed85d set_memory_x +EXPORT_SYMBOL vmlinux 0x988ff1a1 xfrm_find_acq_byseq +EXPORT_SYMBOL vmlinux 0x98b2b9d0 mipi_dsi_dcs_write +EXPORT_SYMBOL vmlinux 0x98c68c41 __gnet_stats_copy_basic +EXPORT_SYMBOL vmlinux 0x98e167f3 sock_recv_errqueue +EXPORT_SYMBOL vmlinux 0x98e33d53 nd_region_acquire_lane +EXPORT_SYMBOL vmlinux 0x991311f1 alloc_buffer_head +EXPORT_SYMBOL vmlinux 0x991819b7 mdiobus_free +EXPORT_SYMBOL vmlinux 0x99195078 vsnprintf +EXPORT_SYMBOL vmlinux 0x992822e2 skb_kill_datagram +EXPORT_SYMBOL vmlinux 0x992a1dfe mmc_free_host +EXPORT_SYMBOL vmlinux 0x992d89c6 wake_up_process +EXPORT_SYMBOL vmlinux 0x9931cd15 simple_write_end +EXPORT_SYMBOL vmlinux 0x9939eba0 backlight_unregister_notifier +EXPORT_SYMBOL vmlinux 0x994822f0 phy_drivers_unregister +EXPORT_SYMBOL vmlinux 0x99517682 udp_encap_enable +EXPORT_SYMBOL vmlinux 0x99591a7a ipv6_ext_hdr +EXPORT_SYMBOL vmlinux 0x99598552 generic_show_options +EXPORT_SYMBOL vmlinux 0x997c0c0d file_path +EXPORT_SYMBOL vmlinux 0x9994c0ca ps2_is_keyboard_id +EXPORT_SYMBOL vmlinux 0x999e8297 vfree +EXPORT_SYMBOL vmlinux 0x99a1ef97 eth_commit_mac_addr_change +EXPORT_SYMBOL vmlinux 0x99c2a88d ipv6_chk_custom_prefix +EXPORT_SYMBOL vmlinux 0x99cdc86b sysctl_tcp_reordering +EXPORT_SYMBOL vmlinux 0x99d3a43c dm_table_get_size +EXPORT_SYMBOL vmlinux 0x99daa9bf try_offline_node +EXPORT_SYMBOL vmlinux 0x99f068d5 x86_cpu_to_node_map +EXPORT_SYMBOL vmlinux 0x9a0c6704 km_policy_expired +EXPORT_SYMBOL vmlinux 0x9a1dfd65 strpbrk +EXPORT_SYMBOL vmlinux 0x9a1fc4b4 jiffies_to_timeval +EXPORT_SYMBOL vmlinux 0x9a23f609 tty_chars_in_buffer +EXPORT_SYMBOL vmlinux 0x9a27eee1 fsnotify_put_mark +EXPORT_SYMBOL vmlinux 0x9a3bdf43 blkdev_issue_zeroout +EXPORT_SYMBOL vmlinux 0x9a3d4d7a dm_ratelimit_state +EXPORT_SYMBOL vmlinux 0x9a50dd90 blk_queue_free_tags +EXPORT_SYMBOL vmlinux 0x9a5ffc64 __tracepoint_kmem_cache_alloc +EXPORT_SYMBOL vmlinux 0x9a70c894 is_nvdimm_bus_locked +EXPORT_SYMBOL vmlinux 0x9a8aa09b dma_common_mmap +EXPORT_SYMBOL vmlinux 0x9aa47afd netlink_unicast +EXPORT_SYMBOL vmlinux 0x9ab680c9 gnet_stats_copy_basic +EXPORT_SYMBOL vmlinux 0x9abe5c73 tcp_v4_syn_recv_sock +EXPORT_SYMBOL vmlinux 0x9ace5fd1 led_set_brightness +EXPORT_SYMBOL vmlinux 0x9ae25f15 blk_integrity_merge_rq +EXPORT_SYMBOL vmlinux 0x9aeb07e8 vme_lm_attach +EXPORT_SYMBOL vmlinux 0x9afa039e lockref_mark_dead +EXPORT_SYMBOL vmlinux 0x9aff1e90 ip6_route_me_harder +EXPORT_SYMBOL vmlinux 0x9b0a76ec i2c_smbus_write_byte +EXPORT_SYMBOL vmlinux 0x9b29f348 pci_find_parent_resource +EXPORT_SYMBOL vmlinux 0x9b2ac16b elv_dispatch_add_tail +EXPORT_SYMBOL vmlinux 0x9b33e0d7 unregister_dcbevent_notifier +EXPORT_SYMBOL vmlinux 0x9b388444 get_zeroed_page +EXPORT_SYMBOL vmlinux 0x9b397a91 km_policy_notify +EXPORT_SYMBOL vmlinux 0x9b5e048e d_alloc_pseudo +EXPORT_SYMBOL vmlinux 0x9b73f97f __blk_mq_end_request +EXPORT_SYMBOL vmlinux 0x9b7e0f61 ip_do_fragment +EXPORT_SYMBOL vmlinux 0x9b9e05f9 alloc_cpu_rmap +EXPORT_SYMBOL vmlinux 0x9b9e1c4c empty_aops +EXPORT_SYMBOL vmlinux 0x9ba146bf wait_for_completion_io_timeout +EXPORT_SYMBOL vmlinux 0x9ba7089d argv_split +EXPORT_SYMBOL vmlinux 0x9bbe88b3 flex_array_put +EXPORT_SYMBOL vmlinux 0x9bc085cb mdiobus_write +EXPORT_SYMBOL vmlinux 0x9bc64027 module_put +EXPORT_SYMBOL vmlinux 0x9be7bde4 security_tun_dev_attach +EXPORT_SYMBOL vmlinux 0x9beb510a scsi_device_put +EXPORT_SYMBOL vmlinux 0x9bf7a52f __nla_reserve +EXPORT_SYMBOL vmlinux 0x9c03fd82 inet_sk_rx_dst_set +EXPORT_SYMBOL vmlinux 0x9c0c7ba1 scsi_target_quiesce +EXPORT_SYMBOL vmlinux 0x9c1d128a jbd2_journal_ack_err +EXPORT_SYMBOL vmlinux 0x9c32a50a dma_pool_create +EXPORT_SYMBOL vmlinux 0x9c3f128a iov_iter_kvec +EXPORT_SYMBOL vmlinux 0x9c3f2cf2 replace_mount_options +EXPORT_SYMBOL vmlinux 0x9c491f60 sg_alloc_table +EXPORT_SYMBOL vmlinux 0x9c4c79c5 tcf_hash_insert +EXPORT_SYMBOL vmlinux 0x9c64895d blk_mq_unique_tag +EXPORT_SYMBOL vmlinux 0x9c88e224 posix_acl_chmod +EXPORT_SYMBOL vmlinux 0x9cab34a6 rfkill_set_led_trigger_name +EXPORT_SYMBOL vmlinux 0x9cc33ddb simple_nosetlease +EXPORT_SYMBOL vmlinux 0x9cd61453 swiotlb_unmap_sg_attrs +EXPORT_SYMBOL vmlinux 0x9cd9e517 put_filp +EXPORT_SYMBOL vmlinux 0x9d0d6206 unregister_netdevice_notifier +EXPORT_SYMBOL vmlinux 0x9d255d94 skb_copy_expand +EXPORT_SYMBOL vmlinux 0x9d292679 mipi_dsi_generic_read +EXPORT_SYMBOL vmlinux 0x9d33ef5e acpi_enable +EXPORT_SYMBOL vmlinux 0x9d3635fd proc_doulongvec_ms_jiffies_minmax +EXPORT_SYMBOL vmlinux 0x9d370b28 devm_devfreq_unregister_opp_notifier +EXPORT_SYMBOL vmlinux 0x9d3aa376 blk_iopoll_init +EXPORT_SYMBOL vmlinux 0x9d3d4648 ip_options_rcv_srr +EXPORT_SYMBOL vmlinux 0x9d4895ad init_buffer +EXPORT_SYMBOL vmlinux 0x9d4e9e75 unregister_filesystem +EXPORT_SYMBOL vmlinux 0x9d625993 __devcgroup_inode_permission +EXPORT_SYMBOL vmlinux 0x9d9911c4 ip_queue_xmit +EXPORT_SYMBOL vmlinux 0x9d9f3917 vlan_vids_del_by_dev +EXPORT_SYMBOL vmlinux 0x9da05e10 mipi_dsi_create_packet +EXPORT_SYMBOL vmlinux 0x9dab4188 dmam_alloc_noncoherent +EXPORT_SYMBOL vmlinux 0x9dd7cd32 simple_readpage +EXPORT_SYMBOL vmlinux 0x9e0c711d vzalloc_node +EXPORT_SYMBOL vmlinux 0x9e2f8c90 lz4_decompress_unknownoutputsize +EXPORT_SYMBOL vmlinux 0x9e363b6b acpi_disable_gpe +EXPORT_SYMBOL vmlinux 0x9e3f1c84 pci_release_region +EXPORT_SYMBOL vmlinux 0x9e404ee9 d_find_any_alias +EXPORT_SYMBOL vmlinux 0x9e4faeef dm_io_client_destroy +EXPORT_SYMBOL vmlinux 0x9e61bb05 set_freezable +EXPORT_SYMBOL vmlinux 0x9e64fbfe rtc_cmos_read +EXPORT_SYMBOL vmlinux 0x9e6ed9ae seq_open_private +EXPORT_SYMBOL vmlinux 0x9e763530 reciprocal_value +EXPORT_SYMBOL vmlinux 0x9e7d6bd0 __udelay +EXPORT_SYMBOL vmlinux 0x9e7fea7d generic_file_direct_write +EXPORT_SYMBOL vmlinux 0x9e9811ab sg_miter_stop +EXPORT_SYMBOL vmlinux 0x9e9ef9dd inet6_release +EXPORT_SYMBOL vmlinux 0x9e9f7c9d inet_sendpage +EXPORT_SYMBOL vmlinux 0x9eb9a8f1 csum_and_copy_from_iter +EXPORT_SYMBOL vmlinux 0x9ebd4c04 adjust_resource +EXPORT_SYMBOL vmlinux 0x9ecfbf7e netdev_printk +EXPORT_SYMBOL vmlinux 0x9ee47bef qdisc_list_add +EXPORT_SYMBOL vmlinux 0x9f1adb74 __skb_gro_checksum_complete +EXPORT_SYMBOL vmlinux 0x9f2598e9 i2c_master_send +EXPORT_SYMBOL vmlinux 0x9f374ddb xen_biovec_phys_mergeable +EXPORT_SYMBOL vmlinux 0x9f379004 path_get +EXPORT_SYMBOL vmlinux 0x9f46ced8 __sw_hweight64 +EXPORT_SYMBOL vmlinux 0x9f4d71a0 i2c_clients_command +EXPORT_SYMBOL vmlinux 0x9f707dda vlan_dev_vlan_proto +EXPORT_SYMBOL vmlinux 0x9f7c1be8 skb_flow_dissector_init +EXPORT_SYMBOL vmlinux 0x9f8453b9 fib_default_rule_add +EXPORT_SYMBOL vmlinux 0x9f8c8aef dev_trans_start +EXPORT_SYMBOL vmlinux 0x9f958cfb genphy_suspend +EXPORT_SYMBOL vmlinux 0x9f984513 strrchr +EXPORT_SYMBOL vmlinux 0x9f9ba335 prepare_kernel_cred +EXPORT_SYMBOL vmlinux 0x9fb8e12a pagevec_lookup +EXPORT_SYMBOL vmlinux 0x9fc84393 i2c_put_adapter +EXPORT_SYMBOL vmlinux 0x9fceb5be build_skb +EXPORT_SYMBOL vmlinux 0x9fd7a063 serial8250_set_isa_configurator +EXPORT_SYMBOL vmlinux 0x9fd7cda1 flex_array_prealloc +EXPORT_SYMBOL vmlinux 0x9fdecc31 unregister_netdevice_many +EXPORT_SYMBOL vmlinux 0x9ffa3a75 netdev_max_backlog +EXPORT_SYMBOL vmlinux 0xa00aca2a dql_completed +EXPORT_SYMBOL vmlinux 0xa0274706 cdrom_check_events +EXPORT_SYMBOL vmlinux 0xa035ff16 clk_get +EXPORT_SYMBOL vmlinux 0xa0431f70 netdev_features_change +EXPORT_SYMBOL vmlinux 0xa0436e98 in6addr_linklocal_allnodes +EXPORT_SYMBOL vmlinux 0xa04a01bd qdisc_class_hash_insert +EXPORT_SYMBOL vmlinux 0xa05c03df mempool_kmalloc +EXPORT_SYMBOL vmlinux 0xa06ff399 unregister_sysctl_table +EXPORT_SYMBOL vmlinux 0xa07a37f0 memchr +EXPORT_SYMBOL vmlinux 0xa07ed110 xz_dec_init +EXPORT_SYMBOL vmlinux 0xa084749a __bitmap_or +EXPORT_SYMBOL vmlinux 0xa098b005 pci_enable_device +EXPORT_SYMBOL vmlinux 0xa0a77898 inet6_add_protocol +EXPORT_SYMBOL vmlinux 0xa0b04675 vmalloc_32 +EXPORT_SYMBOL vmlinux 0xa0d086a1 md_wakeup_thread +EXPORT_SYMBOL vmlinux 0xa0dad88e netdev_adjacent_get_private +EXPORT_SYMBOL vmlinux 0xa0e8fe6f mdiobus_register +EXPORT_SYMBOL vmlinux 0xa0ebd14c sysctl_tcp_mem +EXPORT_SYMBOL vmlinux 0xa0fbac79 wake_up_bit +EXPORT_SYMBOL vmlinux 0xa0ff74d6 udp_memory_allocated +EXPORT_SYMBOL vmlinux 0xa108eb4d sysctl_optmem_max +EXPORT_SYMBOL vmlinux 0xa116a6ac devm_gpiod_put +EXPORT_SYMBOL vmlinux 0xa120d33c tty_unregister_ldisc +EXPORT_SYMBOL vmlinux 0xa1415618 twl6030_interrupt_unmask +EXPORT_SYMBOL vmlinux 0xa14243d3 dev_add_offload +EXPORT_SYMBOL vmlinux 0xa146d5dd pci_remove_bus +EXPORT_SYMBOL vmlinux 0xa14b3f5d flex_array_free_parts +EXPORT_SYMBOL vmlinux 0xa14f3d8c ewma_add +EXPORT_SYMBOL vmlinux 0xa1525e1f serio_open +EXPORT_SYMBOL vmlinux 0xa178b9a2 ppp_register_compressor +EXPORT_SYMBOL vmlinux 0xa17b2bc5 mark_buffer_async_write +EXPORT_SYMBOL vmlinux 0xa18b3056 nd_device_unregister +EXPORT_SYMBOL vmlinux 0xa197974c mipi_dsi_dcs_set_display_off +EXPORT_SYMBOL vmlinux 0xa1a9e8a8 dev_mc_add_global +EXPORT_SYMBOL vmlinux 0xa1b0b3bb generic_cont_expand_simple +EXPORT_SYMBOL vmlinux 0xa1b16764 check_disk_change +EXPORT_SYMBOL vmlinux 0xa1b17912 unlock_two_nondirectories +EXPORT_SYMBOL vmlinux 0xa1b759ce fb_add_videomode +EXPORT_SYMBOL vmlinux 0xa1c76e0a _cond_resched +EXPORT_SYMBOL vmlinux 0xa1c7ea64 __scsi_add_device +EXPORT_SYMBOL vmlinux 0xa1d167ce max8998_bulk_write +EXPORT_SYMBOL vmlinux 0xa1d80c8d blkdev_issue_flush +EXPORT_SYMBOL vmlinux 0xa1feb946 ip_route_me_harder +EXPORT_SYMBOL vmlinux 0xa202a8e5 kmalloc_order_trace +EXPORT_SYMBOL vmlinux 0xa209451c bitmap_fold +EXPORT_SYMBOL vmlinux 0xa21671e4 sync_inodes_sb +EXPORT_SYMBOL vmlinux 0xa2332a28 register_console +EXPORT_SYMBOL vmlinux 0xa24d30fd param_ops_byte +EXPORT_SYMBOL vmlinux 0xa24da83f d_alloc_name +EXPORT_SYMBOL vmlinux 0xa26193ed dev_base_lock +EXPORT_SYMBOL vmlinux 0xa27ecf69 __break_lease +EXPORT_SYMBOL vmlinux 0xa2848c50 ecryptfs_get_auth_tok_key +EXPORT_SYMBOL vmlinux 0xa299e9f2 block_commit_write +EXPORT_SYMBOL vmlinux 0xa2a335bd vme_alloc_consistent +EXPORT_SYMBOL vmlinux 0xa312ed87 alloc_netdev_mqs +EXPORT_SYMBOL vmlinux 0xa3190184 netif_device_detach +EXPORT_SYMBOL vmlinux 0xa31bdf07 vme_master_set +EXPORT_SYMBOL vmlinux 0xa34fcb2d mempool_create_node +EXPORT_SYMBOL vmlinux 0xa350a8f8 set_memory_array_uc +EXPORT_SYMBOL vmlinux 0xa364b26c __set_page_dirty_buffers +EXPORT_SYMBOL vmlinux 0xa37e78b6 flex_array_get +EXPORT_SYMBOL vmlinux 0xa3a1fadc scsi_cmd_blk_ioctl +EXPORT_SYMBOL vmlinux 0xa3b07a36 dquot_get_dqblk +EXPORT_SYMBOL vmlinux 0xa3c94644 uart_get_divisor +EXPORT_SYMBOL vmlinux 0xa3cf8458 jbd2_journal_load +EXPORT_SYMBOL vmlinux 0xa3da3317 dev_get_by_index +EXPORT_SYMBOL vmlinux 0xa3f5fc6c __get_user_pages_unlocked +EXPORT_SYMBOL vmlinux 0xa3f9f16d vme_irq_free +EXPORT_SYMBOL vmlinux 0xa3fc3d50 __tracepoint_module_get +EXPORT_SYMBOL vmlinux 0xa3fce368 sync_mapping_buffers +EXPORT_SYMBOL vmlinux 0xa3feed64 blk_mq_stop_hw_queue +EXPORT_SYMBOL vmlinux 0xa405216d jbd2_journal_restart +EXPORT_SYMBOL vmlinux 0xa40ea3f2 kobject_add +EXPORT_SYMBOL vmlinux 0xa40f49b9 scsi_block_requests +EXPORT_SYMBOL vmlinux 0xa413057a da903x_query_status +EXPORT_SYMBOL vmlinux 0xa4192abf pnp_is_active +EXPORT_SYMBOL vmlinux 0xa41c641c max8925_bulk_read +EXPORT_SYMBOL vmlinux 0xa44bf503 kthread_stop +EXPORT_SYMBOL vmlinux 0xa4511467 crc16 +EXPORT_SYMBOL vmlinux 0xa4701e9e timekeeping_inject_offset +EXPORT_SYMBOL vmlinux 0xa4a1b79d xfrm_policy_unregister_afinfo +EXPORT_SYMBOL vmlinux 0xa4b45ea5 out_of_line_wait_on_bit_lock +EXPORT_SYMBOL vmlinux 0xa4b94fea iowrite8_rep +EXPORT_SYMBOL vmlinux 0xa4d4f0e6 global_cache_flush +EXPORT_SYMBOL vmlinux 0xa4d5abf7 kmem_cache_alloc_trace +EXPORT_SYMBOL vmlinux 0xa4d60277 inet_get_local_port_range +EXPORT_SYMBOL vmlinux 0xa4dd36b9 keyring_alloc +EXPORT_SYMBOL vmlinux 0xa4eaedd7 xfrm_policy_delete +EXPORT_SYMBOL vmlinux 0xa53550cf jbd2_journal_get_write_access +EXPORT_SYMBOL vmlinux 0xa5526619 rb_insert_color +EXPORT_SYMBOL vmlinux 0xa553cbee __inode_sub_bytes +EXPORT_SYMBOL vmlinux 0xa55a2b0b abx500_startup_irq_enabled +EXPORT_SYMBOL vmlinux 0xa595446e security_sb_clone_mnt_opts +EXPORT_SYMBOL vmlinux 0xa59791cd ppp_channel_index +EXPORT_SYMBOL vmlinux 0xa598e29c vesa_modes +EXPORT_SYMBOL vmlinux 0xa5a3e273 generic_pipe_buf_release +EXPORT_SYMBOL vmlinux 0xa5a51eee __crc32c_le +EXPORT_SYMBOL vmlinux 0xa5b4d3a5 pfifo_qdisc_ops +EXPORT_SYMBOL vmlinux 0xa5b4e141 __ethtool_get_settings +EXPORT_SYMBOL vmlinux 0xa5b598fa input_mt_drop_unused +EXPORT_SYMBOL vmlinux 0xa5b645af sock_no_recvmsg +EXPORT_SYMBOL vmlinux 0xa5bd4472 key_invalidate +EXPORT_SYMBOL vmlinux 0xa604c7cb tty_port_close +EXPORT_SYMBOL vmlinux 0xa60ae00a jbd2_journal_check_available_features +EXPORT_SYMBOL vmlinux 0xa60bbd6d end_page_writeback +EXPORT_SYMBOL vmlinux 0xa6137c7b proc_set_size +EXPORT_SYMBOL vmlinux 0xa63322c6 hdmi_audio_infoframe_pack +EXPORT_SYMBOL vmlinux 0xa63d85ab slhc_remember +EXPORT_SYMBOL vmlinux 0xa65e204b set_bh_page +EXPORT_SYMBOL vmlinux 0xa675804c utf8s_to_utf16s +EXPORT_SYMBOL vmlinux 0xa681fe88 generate_random_uuid +EXPORT_SYMBOL vmlinux 0xa699bec0 pnp_request_card_device +EXPORT_SYMBOL vmlinux 0xa69e24b9 devm_gpio_request_one +EXPORT_SYMBOL vmlinux 0xa6b4738f jbd2_journal_invalidatepage +EXPORT_SYMBOL vmlinux 0xa6b8cefe blk_init_queue_node +EXPORT_SYMBOL vmlinux 0xa6bbd805 __wake_up +EXPORT_SYMBOL vmlinux 0xa6bd63ca acpi_bios_error +EXPORT_SYMBOL vmlinux 0xa6be9b1f blk_alloc_queue_node +EXPORT_SYMBOL vmlinux 0xa6c8d1d7 xfrm_spd_getinfo +EXPORT_SYMBOL vmlinux 0xa6eb3283 pipe_unlock +EXPORT_SYMBOL vmlinux 0xa6fbebd7 default_qdisc_ops +EXPORT_SYMBOL vmlinux 0xa6ffec60 woken_wake_function +EXPORT_SYMBOL vmlinux 0xa7003f95 unregister_cdrom +EXPORT_SYMBOL vmlinux 0xa7083536 dget_parent +EXPORT_SYMBOL vmlinux 0xa70fabbe release_evntsel_nmi +EXPORT_SYMBOL vmlinux 0xa72a0f5b nr_online_nodes +EXPORT_SYMBOL vmlinux 0xa735db59 prandom_u32 +EXPORT_SYMBOL vmlinux 0xa750fc45 unregister_quota_format +EXPORT_SYMBOL vmlinux 0xa75d4ff0 dev_warn +EXPORT_SYMBOL vmlinux 0xa788f1a0 i8253_lock +EXPORT_SYMBOL vmlinux 0xa78ef116 pcix_set_mmrbc +EXPORT_SYMBOL vmlinux 0xa79a4db8 __dec_zone_page_state +EXPORT_SYMBOL vmlinux 0xa7af7510 address_space_init_once +EXPORT_SYMBOL vmlinux 0xa7c39e6c inode_add_bytes +EXPORT_SYMBOL vmlinux 0xa7ca3104 jbd2_journal_force_commit +EXPORT_SYMBOL vmlinux 0xa7f47c29 seq_release +EXPORT_SYMBOL vmlinux 0xa80887be vga_switcheroo_fini_domain_pm_ops +EXPORT_SYMBOL vmlinux 0xa8232c78 strtobool +EXPORT_SYMBOL vmlinux 0xa82e9c06 get_unmapped_area +EXPORT_SYMBOL vmlinux 0xa843805a get_unused_fd_flags +EXPORT_SYMBOL vmlinux 0xa8517fc5 set_page_dirty +EXPORT_SYMBOL vmlinux 0xa864c0b8 param_ops_ulong +EXPORT_SYMBOL vmlinux 0xa86ee7bf path_is_under +EXPORT_SYMBOL vmlinux 0xa8721b97 system_state +EXPORT_SYMBOL vmlinux 0xa8a29d8c pci_bus_type +EXPORT_SYMBOL vmlinux 0xa8a6b6cb i2c_smbus_write_word_data +EXPORT_SYMBOL vmlinux 0xa8c2ac87 twl6040_clear_bits +EXPORT_SYMBOL vmlinux 0xa8cde3fe __sock_tx_timestamp +EXPORT_SYMBOL vmlinux 0xa8ee7e1c qdisc_watchdog_schedule_ns +EXPORT_SYMBOL vmlinux 0xa8fe3c28 dcache_dir_lseek +EXPORT_SYMBOL vmlinux 0xa8fef7bb security_unix_may_send +EXPORT_SYMBOL vmlinux 0xa90260e7 dev_close +EXPORT_SYMBOL vmlinux 0xa9168676 xmit_recursion +EXPORT_SYMBOL vmlinux 0xa916b694 strnlen +EXPORT_SYMBOL vmlinux 0xa91ee820 skb_seq_read +EXPORT_SYMBOL vmlinux 0xa922334b dev_alert +EXPORT_SYMBOL vmlinux 0xa92a2793 ps2_begin_command +EXPORT_SYMBOL vmlinux 0xa93df45d __set_page_dirty_nobuffers +EXPORT_SYMBOL vmlinux 0xa943d95a param_set_ullong +EXPORT_SYMBOL vmlinux 0xa953ed78 skb_dequeue +EXPORT_SYMBOL vmlinux 0xa965393f ip_mc_check_igmp +EXPORT_SYMBOL vmlinux 0xa97184d6 sock_create_lite +EXPORT_SYMBOL vmlinux 0xa976957d bitmap_remap +EXPORT_SYMBOL vmlinux 0xa980332c sock_no_socketpair +EXPORT_SYMBOL vmlinux 0xa997e3f1 pci_unregister_driver +EXPORT_SYMBOL vmlinux 0xa99b39c2 prandom_bytes +EXPORT_SYMBOL vmlinux 0xa99de9c9 serio_close +EXPORT_SYMBOL vmlinux 0xa9a8e17f arch_phys_wc_add +EXPORT_SYMBOL vmlinux 0xa9a9e742 tty_lock +EXPORT_SYMBOL vmlinux 0xa9bd2676 __vmalloc +EXPORT_SYMBOL vmlinux 0xa9c63b69 security_xfrm_policy_free +EXPORT_SYMBOL vmlinux 0xa9d36f67 __xfrm_route_forward +EXPORT_SYMBOL vmlinux 0xa9e8afaf tcp_v4_md5_lookup +EXPORT_SYMBOL vmlinux 0xa9fe8fb5 vga_switcheroo_init_domain_pm_optimus_hdmi_audio +EXPORT_SYMBOL vmlinux 0xaa0073b7 __net_get_random_once +EXPORT_SYMBOL vmlinux 0xaa2497fc d_instantiate_no_diralias +EXPORT_SYMBOL vmlinux 0xaa26e41f _raw_read_lock_irq +EXPORT_SYMBOL vmlinux 0xaa484f3f jbd2_journal_start_reserved +EXPORT_SYMBOL vmlinux 0xaa5bd08d __pv_queued_spin_lock_slowpath +EXPORT_SYMBOL vmlinux 0xaa6f23ad rfkill_get_led_trigger_name +EXPORT_SYMBOL vmlinux 0xaa765f16 bdget_disk +EXPORT_SYMBOL vmlinux 0xaa828c90 simple_dir_operations +EXPORT_SYMBOL vmlinux 0xaa877872 iget5_locked +EXPORT_SYMBOL vmlinux 0xaab12f02 blk_queue_merge_bvec +EXPORT_SYMBOL vmlinux 0xaab9d28a vme_slot_num +EXPORT_SYMBOL vmlinux 0xaad0ae78 __bitmap_shift_right +EXPORT_SYMBOL vmlinux 0xaad677fa scsi_rescan_device +EXPORT_SYMBOL vmlinux 0xaad6d92f rfkill_init_sw_state +EXPORT_SYMBOL vmlinux 0xaae8ab0e acpi_bus_power_manageable +EXPORT_SYMBOL vmlinux 0xaaef0586 nd_device_register +EXPORT_SYMBOL vmlinux 0xaaf1738a dev_driver_string +EXPORT_SYMBOL vmlinux 0xaafdc258 strcasecmp +EXPORT_SYMBOL vmlinux 0xab2b74db dev_activate +EXPORT_SYMBOL vmlinux 0xab4021ab dev_vprintk_emit +EXPORT_SYMBOL vmlinux 0xab42b808 redraw_screen +EXPORT_SYMBOL vmlinux 0xab45ed10 register_gifconf +EXPORT_SYMBOL vmlinux 0xab53154e blk_end_request_all +EXPORT_SYMBOL vmlinux 0xab551fad acpi_get_data_full +EXPORT_SYMBOL vmlinux 0xab600421 probe_irq_off +EXPORT_SYMBOL vmlinux 0xab6210e1 __netlink_ns_capable +EXPORT_SYMBOL vmlinux 0xab65ed80 set_memory_uc +EXPORT_SYMBOL vmlinux 0xab6bde28 sysctl_max_syn_backlog +EXPORT_SYMBOL vmlinux 0xab770678 rdmsr_safe_regs_on_cpu +EXPORT_SYMBOL vmlinux 0xab781570 fb_get_options +EXPORT_SYMBOL vmlinux 0xab947632 bio_integrity_free +EXPORT_SYMBOL vmlinux 0xabb2ed2b seq_lseek +EXPORT_SYMBOL vmlinux 0xabb4b2b0 setup_new_exec +EXPORT_SYMBOL vmlinux 0xabc6dd63 cpufreq_sysfs_create_file +EXPORT_SYMBOL vmlinux 0xabcaa577 free_anon_bdev +EXPORT_SYMBOL vmlinux 0xac0ba8c1 blk_iopoll_disable +EXPORT_SYMBOL vmlinux 0xac162e39 mb_cache_entry_get +EXPORT_SYMBOL vmlinux 0xac1a55be unregister_reboot_notifier +EXPORT_SYMBOL vmlinux 0xac398912 flex_array_clear +EXPORT_SYMBOL vmlinux 0xac7e00ef noop_llseek +EXPORT_SYMBOL vmlinux 0xac99451d security_mmap_file +EXPORT_SYMBOL vmlinux 0xac9983b1 __devm_release_region +EXPORT_SYMBOL vmlinux 0xacab29b7 seq_hlist_start_percpu +EXPORT_SYMBOL vmlinux 0xacac094d devm_gen_pool_create +EXPORT_SYMBOL vmlinux 0xacb99769 ida_destroy +EXPORT_SYMBOL vmlinux 0xaccabc6a in4_pton +EXPORT_SYMBOL vmlinux 0xaccb665d padata_do_parallel +EXPORT_SYMBOL vmlinux 0xacd81eb3 jbd2_inode_cache +EXPORT_SYMBOL vmlinux 0xacdcbe01 qdisc_watchdog_cancel +EXPORT_SYMBOL vmlinux 0xacf4d843 match_strdup +EXPORT_SYMBOL vmlinux 0xad01744f kstrtos8_from_user +EXPORT_SYMBOL vmlinux 0xad0413d4 match_hex +EXPORT_SYMBOL vmlinux 0xad13c689 acpi_os_execute +EXPORT_SYMBOL vmlinux 0xad164875 kstrtos16_from_user +EXPORT_SYMBOL vmlinux 0xad25e3fd dst_discard_sk +EXPORT_SYMBOL vmlinux 0xad2ea2c4 abx500_set_register_interruptible +EXPORT_SYMBOL vmlinux 0xad32ac0e simple_transaction_get +EXPORT_SYMBOL vmlinux 0xad3adbf3 serial8250_do_set_termios +EXPORT_SYMBOL vmlinux 0xad3fa64a param_get_charp +EXPORT_SYMBOL vmlinux 0xad698f77 dqstats +EXPORT_SYMBOL vmlinux 0xad6e4bb6 mempool_free +EXPORT_SYMBOL vmlinux 0xad8108e4 submit_bio_wait +EXPORT_SYMBOL vmlinux 0xad84bef8 dm_table_event +EXPORT_SYMBOL vmlinux 0xad957436 default_llseek +EXPORT_SYMBOL vmlinux 0xad9dcd27 jbd2_journal_errno +EXPORT_SYMBOL vmlinux 0xada2baa5 skb_pad +EXPORT_SYMBOL vmlinux 0xadccf47a inet_confirm_addr +EXPORT_SYMBOL vmlinux 0xade7ec83 blk_requeue_request +EXPORT_SYMBOL vmlinux 0xadf92630 __cleancache_invalidate_inode +EXPORT_SYMBOL vmlinux 0xadfdfcef __bitmap_andnot +EXPORT_SYMBOL vmlinux 0xae044bc7 panic_notifier_list +EXPORT_SYMBOL vmlinux 0xae08a7f5 max8998_update_reg +EXPORT_SYMBOL vmlinux 0xae27231c ioctl_by_bdev +EXPORT_SYMBOL vmlinux 0xae2b1a5b lock_rename +EXPORT_SYMBOL vmlinux 0xae2dd425 skb_mac_gso_segment +EXPORT_SYMBOL vmlinux 0xae322ed0 nf_log_register +EXPORT_SYMBOL vmlinux 0xae729e59 security_req_classify_flow +EXPORT_SYMBOL vmlinux 0xae8cad9d devfreq_resume_device +EXPORT_SYMBOL vmlinux 0xae9bf2d4 override_creds +EXPORT_SYMBOL vmlinux 0xaea976a8 acpi_check_resource_conflict +EXPORT_SYMBOL vmlinux 0xaea9eb40 napi_complete_done +EXPORT_SYMBOL vmlinux 0xaec3bf48 __dev_get_by_name +EXPORT_SYMBOL vmlinux 0xaec6285b csum_and_copy_to_iter +EXPORT_SYMBOL vmlinux 0xaed06698 framebuffer_release +EXPORT_SYMBOL vmlinux 0xaf2793c2 to_nd_btt +EXPORT_SYMBOL vmlinux 0xaf2ef0f9 pci_save_state +EXPORT_SYMBOL vmlinux 0xaf33f7ea __dev_get_by_index +EXPORT_SYMBOL vmlinux 0xaf3dd7dc scsi_logging_level +EXPORT_SYMBOL vmlinux 0xaf451d94 blkdev_get +EXPORT_SYMBOL vmlinux 0xaf51354e generic_pipe_buf_get +EXPORT_SYMBOL vmlinux 0xaf611eac amd_nb_misc_ids +EXPORT_SYMBOL vmlinux 0xaf622814 pci_pme_capable +EXPORT_SYMBOL vmlinux 0xaf651383 backlight_force_update +EXPORT_SYMBOL vmlinux 0xaf6ae696 kstrndup +EXPORT_SYMBOL vmlinux 0xaf6bbde3 have_submounts +EXPORT_SYMBOL vmlinux 0xafb18fe4 blk_rq_map_integrity_sg +EXPORT_SYMBOL vmlinux 0xafb32902 __wait_on_bit_lock +EXPORT_SYMBOL vmlinux 0xafb8c6ff copy_user_generic_string +EXPORT_SYMBOL vmlinux 0xafc288c0 dcb_ieee_delapp +EXPORT_SYMBOL vmlinux 0xafd5ff2c amd_iommu_v2_supported +EXPORT_SYMBOL vmlinux 0xafd97623 pcim_iounmap_regions +EXPORT_SYMBOL vmlinux 0xafe2f17d blk_queue_update_dma_pad +EXPORT_SYMBOL vmlinux 0xafe4bb39 __genl_register_family +EXPORT_SYMBOL vmlinux 0xafe5eb28 security_inode_listsecurity +EXPORT_SYMBOL vmlinux 0xafeb7871 scsi_add_device +EXPORT_SYMBOL vmlinux 0xb00f2e24 dquot_resume +EXPORT_SYMBOL vmlinux 0xb01b1db8 intel_gtt_insert_sg_entries +EXPORT_SYMBOL vmlinux 0xb02117f7 make_kgid +EXPORT_SYMBOL vmlinux 0xb03c62d4 param_ops_bint +EXPORT_SYMBOL vmlinux 0xb03fb9fe input_grab_device +EXPORT_SYMBOL vmlinux 0xb057f85c __skb_get_hash +EXPORT_SYMBOL vmlinux 0xb05fc310 sysctl_rmem_max +EXPORT_SYMBOL vmlinux 0xb06b4f66 scsi_eh_restore_cmnd +EXPORT_SYMBOL vmlinux 0xb0792248 sock_alloc_send_skb +EXPORT_SYMBOL vmlinux 0xb07fc004 get_cached_acl_rcu +EXPORT_SYMBOL vmlinux 0xb0a0da0c rational_best_approximation +EXPORT_SYMBOL vmlinux 0xb0af6bb6 tcf_action_dump_1 +EXPORT_SYMBOL vmlinux 0xb0c63694 dev_addr_init +EXPORT_SYMBOL vmlinux 0xb0c84222 textsearch_register +EXPORT_SYMBOL vmlinux 0xb0ccbd08 security_path_chown +EXPORT_SYMBOL vmlinux 0xb0db5ee4 eth_type_trans +EXPORT_SYMBOL vmlinux 0xb0e10781 get_option +EXPORT_SYMBOL vmlinux 0xb0e602eb memmove +EXPORT_SYMBOL vmlinux 0xb0eb41ff iommu_tbl_range_free +EXPORT_SYMBOL vmlinux 0xb0fa3110 vme_unregister_driver +EXPORT_SYMBOL vmlinux 0xb10118f8 tty_throttle +EXPORT_SYMBOL vmlinux 0xb11d8ca3 generic_listxattr +EXPORT_SYMBOL vmlinux 0xb121390a probe_irq_on +EXPORT_SYMBOL vmlinux 0xb12cbacb fb_unregister_client +EXPORT_SYMBOL vmlinux 0xb1512566 lock_sock_fast +EXPORT_SYMBOL vmlinux 0xb15cb614 security_xfrm_policy_alloc +EXPORT_SYMBOL vmlinux 0xb1645a2e sg_free_table +EXPORT_SYMBOL vmlinux 0xb1771172 elv_register_queue +EXPORT_SYMBOL vmlinux 0xb187b3a8 lg_lock_init +EXPORT_SYMBOL vmlinux 0xb188529c dev_queue_xmit_accel +EXPORT_SYMBOL vmlinux 0xb19a01ac touch_atime +EXPORT_SYMBOL vmlinux 0xb1a52dfb uart_match_port +EXPORT_SYMBOL vmlinux 0xb1b95a07 blk_queue_physical_block_size +EXPORT_SYMBOL vmlinux 0xb1c3a01a oops_in_progress +EXPORT_SYMBOL vmlinux 0xb1cf44df fb_find_best_mode +EXPORT_SYMBOL vmlinux 0xb1cfad22 rdmsr_on_cpu +EXPORT_SYMBOL vmlinux 0xb1dc8a72 pci_unmap_rom +EXPORT_SYMBOL vmlinux 0xb1effd19 unregister_md_personality +EXPORT_SYMBOL vmlinux 0xb2012b18 sk_mc_loop +EXPORT_SYMBOL vmlinux 0xb20be3b3 __cleancache_init_shared_fs +EXPORT_SYMBOL vmlinux 0xb20ecf88 acpi_run_osc +EXPORT_SYMBOL vmlinux 0xb216c4bd dm_unregister_target +EXPORT_SYMBOL vmlinux 0xb219d56c wbinvd_on_cpu +EXPORT_SYMBOL vmlinux 0xb228f149 __dst_destroy_metrics_generic +EXPORT_SYMBOL vmlinux 0xb2566e5f tcp_v4_conn_request +EXPORT_SYMBOL vmlinux 0xb25a887d t10_pi_type3_crc +EXPORT_SYMBOL vmlinux 0xb2682405 utf8_to_utf32 +EXPORT_SYMBOL vmlinux 0xb26d78d3 tcp_simple_retransmit +EXPORT_SYMBOL vmlinux 0xb2a9a589 neigh_destroy +EXPORT_SYMBOL vmlinux 0xb2be6e92 netdev_stats_to_stats64 +EXPORT_SYMBOL vmlinux 0xb2d5a552 complete +EXPORT_SYMBOL vmlinux 0xb2eca7bd blk_mq_start_hw_queue +EXPORT_SYMBOL vmlinux 0xb2f5e485 ata_link_printk +EXPORT_SYMBOL vmlinux 0xb2f74fb6 intel_gmch_remove +EXPORT_SYMBOL vmlinux 0xb2fd5ceb __put_user_4 +EXPORT_SYMBOL vmlinux 0xb30d45e4 kernel_bind +EXPORT_SYMBOL vmlinux 0xb3284531 acpi_dbg_layer +EXPORT_SYMBOL vmlinux 0xb32a68b8 max8925_set_bits +EXPORT_SYMBOL vmlinux 0xb3496c17 input_mt_report_finger_count +EXPORT_SYMBOL vmlinux 0xb352177e find_first_bit +EXPORT_SYMBOL vmlinux 0xb35334a0 nlmsg_notify +EXPORT_SYMBOL vmlinux 0xb3547100 pci_setup_cardbus +EXPORT_SYMBOL vmlinux 0xb357b9e4 swiotlb_map_sg +EXPORT_SYMBOL vmlinux 0xb35f1476 from_kgid_munged +EXPORT_SYMBOL vmlinux 0xb36a1d4b phy_ethtool_set_wol +EXPORT_SYMBOL vmlinux 0xb36be04c PDE_DATA +EXPORT_SYMBOL vmlinux 0xb37574bc sock_no_ioctl +EXPORT_SYMBOL vmlinux 0xb38ab474 pci_choose_state +EXPORT_SYMBOL vmlinux 0xb39a4916 no_llseek +EXPORT_SYMBOL vmlinux 0xb3a59aa4 fifo_create_dflt +EXPORT_SYMBOL vmlinux 0xb3d2c76d scsi_hostbyte_string +EXPORT_SYMBOL vmlinux 0xb3d3a1bf vfs_iter_read +EXPORT_SYMBOL vmlinux 0xb3e0c6ac cfb_imageblit +EXPORT_SYMBOL vmlinux 0xb3e691c0 scsi_unblock_requests +EXPORT_SYMBOL vmlinux 0xb3e948fc seq_open +EXPORT_SYMBOL vmlinux 0xb3edef66 sg_miter_next +EXPORT_SYMBOL vmlinux 0xb3f7646e kthread_should_stop +EXPORT_SYMBOL vmlinux 0xb41e3815 inet6_register_icmp_sender +EXPORT_SYMBOL vmlinux 0xb423dba1 console_blanked +EXPORT_SYMBOL vmlinux 0xb42bcad4 set_nlink +EXPORT_SYMBOL vmlinux 0xb4521f21 pcim_iomap_regions +EXPORT_SYMBOL vmlinux 0xb4709322 scsi_dev_info_add_list +EXPORT_SYMBOL vmlinux 0xb47189b5 reservation_ww_class +EXPORT_SYMBOL vmlinux 0xb4928a0c blk_queue_io_opt +EXPORT_SYMBOL vmlinux 0xb4aa1589 fbcon_rotate_cw +EXPORT_SYMBOL vmlinux 0xb4db680b pci_bus_set_ops +EXPORT_SYMBOL vmlinux 0xb4e4d316 dquot_commit +EXPORT_SYMBOL vmlinux 0xb4e91a72 bitmap_unplug +EXPORT_SYMBOL vmlinux 0xb5165774 fixed_phy_update_state +EXPORT_SYMBOL vmlinux 0xb52ee8be intel_gtt_clear_range +EXPORT_SYMBOL vmlinux 0xb538f785 generic_file_llseek +EXPORT_SYMBOL vmlinux 0xb546864b sk_stream_wait_close +EXPORT_SYMBOL vmlinux 0xb5581602 pm_vt_switch_required +EXPORT_SYMBOL vmlinux 0xb57343c2 frontswap_shrink +EXPORT_SYMBOL vmlinux 0xb57e96f1 memory_cgrp_subsys +EXPORT_SYMBOL vmlinux 0xb5815acf netdev_lower_get_next_private +EXPORT_SYMBOL vmlinux 0xb586b566 __cleancache_get_page +EXPORT_SYMBOL vmlinux 0xb58f9233 vfs_getattr +EXPORT_SYMBOL vmlinux 0xb59823e1 seq_dentry +EXPORT_SYMBOL vmlinux 0xb5993412 from_kgid +EXPORT_SYMBOL vmlinux 0xb5a459dc unregister_blkdev +EXPORT_SYMBOL vmlinux 0xb5aa7165 dma_pool_destroy +EXPORT_SYMBOL vmlinux 0xb5b0bad9 inc_nlink +EXPORT_SYMBOL vmlinux 0xb5b5f228 keyring_clear +EXPORT_SYMBOL vmlinux 0xb5ca1c46 slhc_free +EXPORT_SYMBOL vmlinux 0xb5d051a3 compat_tcp_setsockopt +EXPORT_SYMBOL vmlinux 0xb5dbd16a __percpu_counter_sum +EXPORT_SYMBOL vmlinux 0xb60054cd bitmap_startwrite +EXPORT_SYMBOL vmlinux 0xb6244511 sg_init_one +EXPORT_SYMBOL vmlinux 0xb6296c64 rtnl_notify +EXPORT_SYMBOL vmlinux 0xb66e2196 __neigh_for_each_release +EXPORT_SYMBOL vmlinux 0xb674a534 acpi_unmap_cpu +EXPORT_SYMBOL vmlinux 0xb678366f int_sqrt +EXPORT_SYMBOL vmlinux 0xb680d4a6 gen_pool_add_virt +EXPORT_SYMBOL vmlinux 0xb6936ffe _bcd2bin +EXPORT_SYMBOL vmlinux 0xb694b32d mpage_readpage +EXPORT_SYMBOL vmlinux 0xb69617d9 __ip4_datagram_connect +EXPORT_SYMBOL vmlinux 0xb6a41d7e udp_flush_pending_frames +EXPORT_SYMBOL vmlinux 0xb6a68816 find_last_bit +EXPORT_SYMBOL vmlinux 0xb6b8e257 shrink_dcache_sb +EXPORT_SYMBOL vmlinux 0xb6bb8777 fifo_set_limit +EXPORT_SYMBOL vmlinux 0xb711dbe5 console_stop +EXPORT_SYMBOL vmlinux 0xb72281a7 generic_setxattr +EXPORT_SYMBOL vmlinux 0xb72e7427 tcp_sendmsg +EXPORT_SYMBOL vmlinux 0xb731e6bf audit_log_task_info +EXPORT_SYMBOL vmlinux 0xb743c2bf inet6_unregister_icmp_sender +EXPORT_SYMBOL vmlinux 0xb7488905 scsi_normalize_sense +EXPORT_SYMBOL vmlinux 0xb758b225 acpi_disable_event +EXPORT_SYMBOL vmlinux 0xb75f4276 sock_update_memcg +EXPORT_SYMBOL vmlinux 0xb77131b1 psched_ratecfg_precompute +EXPORT_SYMBOL vmlinux 0xb7872ce2 file_ns_capable +EXPORT_SYMBOL vmlinux 0xb7906a68 sock_common_setsockopt +EXPORT_SYMBOL vmlinux 0xb7c4f690 xfrm_state_walk +EXPORT_SYMBOL vmlinux 0xb836c6e9 release_firmware +EXPORT_SYMBOL vmlinux 0xb853b507 ping_prot +EXPORT_SYMBOL vmlinux 0xb866cbff sb_set_blocksize +EXPORT_SYMBOL vmlinux 0xb874b87a __clzsi2 +EXPORT_SYMBOL vmlinux 0xb882d29c seq_escape +EXPORT_SYMBOL vmlinux 0xb89ba57c bdgrab +EXPORT_SYMBOL vmlinux 0xb8aedfe1 i2c_get_adapter +EXPORT_SYMBOL vmlinux 0xb8b6a76c __percpu_counter_add +EXPORT_SYMBOL vmlinux 0xb8d6509f amd_iommu_device_info +EXPORT_SYMBOL vmlinux 0xb8e7ce2c __put_user_8 +EXPORT_SYMBOL vmlinux 0xb8ecb506 tty_port_destroy +EXPORT_SYMBOL vmlinux 0xb8f6a3e8 rtnl_create_link +EXPORT_SYMBOL vmlinux 0xb8fdcd10 mempool_resize +EXPORT_SYMBOL vmlinux 0xb904b763 dev_get_nest_level +EXPORT_SYMBOL vmlinux 0xb907513f unpoison_memory +EXPORT_SYMBOL vmlinux 0xb90e8bd4 xfrm_garbage_collect +EXPORT_SYMBOL vmlinux 0xb9127943 nf_ct_attach +EXPORT_SYMBOL vmlinux 0xb9249d16 cpu_possible_mask +EXPORT_SYMBOL vmlinux 0xb93bfa3c sock_register +EXPORT_SYMBOL vmlinux 0xb93c2624 blk_start_queue +EXPORT_SYMBOL vmlinux 0xb94bbbf9 insert_inode_locked +EXPORT_SYMBOL vmlinux 0xb9558c56 filemap_fdatawait +EXPORT_SYMBOL vmlinux 0xb95ca18a sg_miter_skip +EXPORT_SYMBOL vmlinux 0xb9824df9 dmaengine_get_unmap_data +EXPORT_SYMBOL vmlinux 0xb9901c6e __mutex_init +EXPORT_SYMBOL vmlinux 0xb9915678 deactivate_locked_super +EXPORT_SYMBOL vmlinux 0xb991b0a9 __blk_end_request +EXPORT_SYMBOL vmlinux 0xb9acf08c vga_switcheroo_register_client +EXPORT_SYMBOL vmlinux 0xb9b23e22 blk_queue_max_hw_sectors +EXPORT_SYMBOL vmlinux 0xb9ce7516 nobh_truncate_page +EXPORT_SYMBOL vmlinux 0xb9e8e2cc in6addr_sitelocal_allrouters +EXPORT_SYMBOL vmlinux 0xba012894 posix_acl_from_xattr +EXPORT_SYMBOL vmlinux 0xba0b1b68 brioctl_set +EXPORT_SYMBOL vmlinux 0xba0e8669 tcp_syn_ack_timeout +EXPORT_SYMBOL vmlinux 0xba116644 lock_fb_info +EXPORT_SYMBOL vmlinux 0xba138b55 thaw_bdev +EXPORT_SYMBOL vmlinux 0xba17b773 blk_complete_request +EXPORT_SYMBOL vmlinux 0xba20527c generic_write_end +EXPORT_SYMBOL vmlinux 0xba2d8594 ec_read +EXPORT_SYMBOL vmlinux 0xba41e3fb dmam_free_coherent +EXPORT_SYMBOL vmlinux 0xba46165e inet_bind +EXPORT_SYMBOL vmlinux 0xba497f13 loops_per_jiffy +EXPORT_SYMBOL vmlinux 0xba74f10b dev_get_phys_port_name +EXPORT_SYMBOL vmlinux 0xba75649a kernel_sendmsg +EXPORT_SYMBOL vmlinux 0xba793d7e bio_alloc_pages +EXPORT_SYMBOL vmlinux 0xba7e1125 __pskb_pull_tail +EXPORT_SYMBOL vmlinux 0xba83419d flush_old_exec +EXPORT_SYMBOL vmlinux 0xbad41bea vc_resize +EXPORT_SYMBOL vmlinux 0xbb0540aa zlib_inflateReset +EXPORT_SYMBOL vmlinux 0xbb2f24a7 sk_ns_capable +EXPORT_SYMBOL vmlinux 0xbb2f99fc __scsi_alloc_queue +EXPORT_SYMBOL vmlinux 0xbb34134a iov_shorten +EXPORT_SYMBOL vmlinux 0xbb35675b __bitmap_intersects +EXPORT_SYMBOL vmlinux 0xbb47cd34 blk_sync_queue +EXPORT_SYMBOL vmlinux 0xbb4ac368 __sb_end_write +EXPORT_SYMBOL vmlinux 0xbb4f4766 simple_write_to_buffer +EXPORT_SYMBOL vmlinux 0xbb52d1cf devm_gpio_request +EXPORT_SYMBOL vmlinux 0xbb574bc3 blk_queue_update_dma_alignment +EXPORT_SYMBOL vmlinux 0xbb5866a4 pci_get_device +EXPORT_SYMBOL vmlinux 0xbb5d343d xfrm_get_acqseq +EXPORT_SYMBOL vmlinux 0xbb5f05c7 seq_put_decimal_ll +EXPORT_SYMBOL vmlinux 0xbb7f5ea6 sock_setsockopt +EXPORT_SYMBOL vmlinux 0xbb894b00 mmc_remove_host +EXPORT_SYMBOL vmlinux 0xbb8b9e2b sock_create +EXPORT_SYMBOL vmlinux 0xbb99125c get_default_font +EXPORT_SYMBOL vmlinux 0xbba70a2d _raw_spin_unlock_bh +EXPORT_SYMBOL vmlinux 0xbba72e14 pci_wake_from_d3 +EXPORT_SYMBOL vmlinux 0xbbaeb559 memcg_socket_limit_enabled +EXPORT_SYMBOL vmlinux 0xbbbb451a _raw_write_unlock_bh +EXPORT_SYMBOL vmlinux 0xbbcb910a ppp_input +EXPORT_SYMBOL vmlinux 0xbbcee76e rtnl_configure_link +EXPORT_SYMBOL vmlinux 0xbbd361a1 scsi_unregister +EXPORT_SYMBOL vmlinux 0xbbd48dfa page_zero_new_buffers +EXPORT_SYMBOL vmlinux 0xbbd68816 dm_put_device +EXPORT_SYMBOL vmlinux 0xbbd76e57 bit_wait +EXPORT_SYMBOL vmlinux 0xbbeb1ec6 ioremap_wt +EXPORT_SYMBOL vmlinux 0xbbf38a72 nla_reserve_nohdr +EXPORT_SYMBOL vmlinux 0xbc085dd6 uart_update_timeout +EXPORT_SYMBOL vmlinux 0xbc1e7371 sock_wmalloc +EXPORT_SYMBOL vmlinux 0xbc1ef252 shrink_dcache_parent +EXPORT_SYMBOL vmlinux 0xbc1f3b89 udp_lib_setsockopt +EXPORT_SYMBOL vmlinux 0xbc2031de acpi_processor_get_bios_limit +EXPORT_SYMBOL vmlinux 0xbc2acb4b mmc_request_done +EXPORT_SYMBOL vmlinux 0xbc36618d mb_cache_shrink +EXPORT_SYMBOL vmlinux 0xbc4c1590 find_get_pages_contig +EXPORT_SYMBOL vmlinux 0xbc4fb9ae vm_insert_pfn +EXPORT_SYMBOL vmlinux 0xbc57be4e pcie_capability_write_word +EXPORT_SYMBOL vmlinux 0xbc6288ba tty_check_change +EXPORT_SYMBOL vmlinux 0xbcc2bd92 crypto_sha256_update +EXPORT_SYMBOL vmlinux 0xbcc308bb strnlen_user +EXPORT_SYMBOL vmlinux 0xbcfcb334 agp_put_bridge +EXPORT_SYMBOL vmlinux 0xbd100793 cpu_online_mask +EXPORT_SYMBOL vmlinux 0xbd295d80 nf_unregister_sockopt +EXPORT_SYMBOL vmlinux 0xbd462b55 __kfifo_init +EXPORT_SYMBOL vmlinux 0xbd4ba308 pv_mmu_ops +EXPORT_SYMBOL vmlinux 0xbd4efdee pm860x_reg_write +EXPORT_SYMBOL vmlinux 0xbd59b173 open_exec +EXPORT_SYMBOL vmlinux 0xbd878481 param_set_ulong +EXPORT_SYMBOL vmlinux 0xbd9074b1 blk_finish_plug +EXPORT_SYMBOL vmlinux 0xbd91287e mmc_gpio_request_ro +EXPORT_SYMBOL vmlinux 0xbd9b489b __xfrm_decode_session +EXPORT_SYMBOL vmlinux 0xbdae3047 simple_unlink +EXPORT_SYMBOL vmlinux 0xbdaf5b07 acpi_os_read_port +EXPORT_SYMBOL vmlinux 0xbdfb6dbb __fentry__ +EXPORT_SYMBOL vmlinux 0xbe1bb112 bitmap_onto +EXPORT_SYMBOL vmlinux 0xbe3254ce km_new_mapping +EXPORT_SYMBOL vmlinux 0xbe571ba7 generic_file_fsync +EXPORT_SYMBOL vmlinux 0xbe7427e2 jbd2_journal_abort +EXPORT_SYMBOL vmlinux 0xbe7ed2a1 blk_queue_find_tag +EXPORT_SYMBOL vmlinux 0xbe939755 iget_locked +EXPORT_SYMBOL vmlinux 0xbeb2f95a rwsem_wake +EXPORT_SYMBOL vmlinux 0xbec30d05 x86_match_cpu +EXPORT_SYMBOL vmlinux 0xbed8ca7e ip_setsockopt +EXPORT_SYMBOL vmlinux 0xbef43296 console_conditional_schedule +EXPORT_SYMBOL vmlinux 0xbef4b538 ether_setup +EXPORT_SYMBOL vmlinux 0xbf17265c vga_set_legacy_decoding +EXPORT_SYMBOL vmlinux 0xbf180ea1 xfrm6_input_addr +EXPORT_SYMBOL vmlinux 0xbf2107a9 tty_port_hangup +EXPORT_SYMBOL vmlinux 0xbf2faeb5 sdev_prefix_printk +EXPORT_SYMBOL vmlinux 0xbf40573e fbcon_rotate_ud +EXPORT_SYMBOL vmlinux 0xbf5111b5 tcp_close +EXPORT_SYMBOL vmlinux 0xbf5aa436 vga_con +EXPORT_SYMBOL vmlinux 0xbf6018ea kmem_cache_destroy +EXPORT_SYMBOL vmlinux 0xbf64e837 security_inode_init_security +EXPORT_SYMBOL vmlinux 0xbf7fd2f5 schedule_timeout_killable +EXPORT_SYMBOL vmlinux 0xbf822824 tcp_timewait_state_process +EXPORT_SYMBOL vmlinux 0xbf8ba54a vprintk +EXPORT_SYMBOL vmlinux 0xbf96911a tcp_connect +EXPORT_SYMBOL vmlinux 0xbf9ada67 __dst_free +EXPORT_SYMBOL vmlinux 0xbf9bcc8d __cap_empty_set +EXPORT_SYMBOL vmlinux 0xbfa38b8a pcim_pin_device +EXPORT_SYMBOL vmlinux 0xbfc177bc iowrite32_rep +EXPORT_SYMBOL vmlinux 0xbfee3ad5 loop_unregister_transfer +EXPORT_SYMBOL vmlinux 0xc008ff69 __mark_inode_dirty +EXPORT_SYMBOL vmlinux 0xc00abcf0 textsearch_prepare +EXPORT_SYMBOL vmlinux 0xc0235227 set_blocksize +EXPORT_SYMBOL vmlinux 0xc05e355f idr_alloc_cyclic +EXPORT_SYMBOL vmlinux 0xc0616e70 xfrm_policy_destroy +EXPORT_SYMBOL vmlinux 0xc067a67d netif_receive_skb_sk +EXPORT_SYMBOL vmlinux 0xc0763484 rfkill_blocked +EXPORT_SYMBOL vmlinux 0xc07a4e57 mmc_read_bkops_status +EXPORT_SYMBOL vmlinux 0xc081a53b padata_remove_cpu +EXPORT_SYMBOL vmlinux 0xc0823e4c twl_i2c_write +EXPORT_SYMBOL vmlinux 0xc09bb8b6 init_special_inode +EXPORT_SYMBOL vmlinux 0xc0a3d105 find_next_bit +EXPORT_SYMBOL vmlinux 0xc0abd6f7 pci_disable_link_state_locked +EXPORT_SYMBOL vmlinux 0xc0acb79e fddi_type_trans +EXPORT_SYMBOL vmlinux 0xc0ad79b5 vga_tryget +EXPORT_SYMBOL vmlinux 0xc0adeba9 copy_page_to_iter +EXPORT_SYMBOL vmlinux 0xc0b6bba3 mipi_dsi_dcs_enter_sleep_mode +EXPORT_SYMBOL vmlinux 0xc0b8e920 agp_collect_device_status +EXPORT_SYMBOL vmlinux 0xc0cd3b13 ___ratelimit +EXPORT_SYMBOL vmlinux 0xc0d794b8 __dev_kfree_skb_any +EXPORT_SYMBOL vmlinux 0xc0e67343 eth_header +EXPORT_SYMBOL vmlinux 0xc0e963c7 tcf_em_tree_validate +EXPORT_SYMBOL vmlinux 0xc0f0db50 seq_path +EXPORT_SYMBOL vmlinux 0xc121d96f netif_carrier_off +EXPORT_SYMBOL vmlinux 0xc13be14a pci_clear_master +EXPORT_SYMBOL vmlinux 0xc15a44c6 memzero_explicit +EXPORT_SYMBOL vmlinux 0xc163e3e9 __skb_recv_datagram +EXPORT_SYMBOL vmlinux 0xc18195b2 gnttab_free_pages +EXPORT_SYMBOL vmlinux 0xc18e1f6d cdrom_get_media_event +EXPORT_SYMBOL vmlinux 0xc193edc0 devfreq_suspend_device +EXPORT_SYMBOL vmlinux 0xc1d7f7f9 kernel_listen +EXPORT_SYMBOL vmlinux 0xc1d89a6e tty_port_block_til_ready +EXPORT_SYMBOL vmlinux 0xc1d8cfaf __fdget +EXPORT_SYMBOL vmlinux 0xc1e50c0b rtnl_nla_parse_ifla +EXPORT_SYMBOL vmlinux 0xc20858fe compat_ip_getsockopt +EXPORT_SYMBOL vmlinux 0xc21c014a pcie_port_service_unregister +EXPORT_SYMBOL vmlinux 0xc222991a genphy_soft_reset +EXPORT_SYMBOL vmlinux 0xc2234748 proto_register +EXPORT_SYMBOL vmlinux 0xc2424641 agp3_generic_cleanup +EXPORT_SYMBOL vmlinux 0xc2542296 mmc_set_blockcount +EXPORT_SYMBOL vmlinux 0xc2588c39 xfrm_stateonly_find +EXPORT_SYMBOL vmlinux 0xc26150ad dev_getbyhwaddr_rcu +EXPORT_SYMBOL vmlinux 0xc263eee6 secpath_dup +EXPORT_SYMBOL vmlinux 0xc26d3d37 qdisc_tree_decrease_qlen +EXPORT_SYMBOL vmlinux 0xc27ba06a framebuffer_alloc +EXPORT_SYMBOL vmlinux 0xc284b663 jbd2_journal_free_reserved +EXPORT_SYMBOL vmlinux 0xc28b6f79 page_symlink_inode_operations +EXPORT_SYMBOL vmlinux 0xc297ef6c inet_getname +EXPORT_SYMBOL vmlinux 0xc29bf967 strspn +EXPORT_SYMBOL vmlinux 0xc2b1a1f9 mipi_dsi_attach +EXPORT_SYMBOL vmlinux 0xc2c23245 dcbnl_ieee_notify +EXPORT_SYMBOL vmlinux 0xc2c78033 sock_no_accept +EXPORT_SYMBOL vmlinux 0xc2cfc22d vfs_rename +EXPORT_SYMBOL vmlinux 0xc2e587d1 reset_devices +EXPORT_SYMBOL vmlinux 0xc2f9c045 timespec_to_jiffies +EXPORT_SYMBOL vmlinux 0xc2fa4237 sk_stream_wait_connect +EXPORT_SYMBOL vmlinux 0xc307af4d __frontswap_load +EXPORT_SYMBOL vmlinux 0xc310b981 strnstr +EXPORT_SYMBOL vmlinux 0xc31d4e09 __scsi_print_sense +EXPORT_SYMBOL vmlinux 0xc349c938 drop_nlink +EXPORT_SYMBOL vmlinux 0xc3531dd0 xfrm_state_lookup +EXPORT_SYMBOL vmlinux 0xc35aa8c1 input_close_device +EXPORT_SYMBOL vmlinux 0xc35c0eca mipi_dsi_host_register +EXPORT_SYMBOL vmlinux 0xc36f9d92 tcp_try_fastopen +EXPORT_SYMBOL vmlinux 0xc39084fb tty_port_close_start +EXPORT_SYMBOL vmlinux 0xc3aaf0a9 __put_user_1 +EXPORT_SYMBOL vmlinux 0xc3c2be91 mipi_dsi_packet_format_is_short +EXPORT_SYMBOL vmlinux 0xc3d93b7c lease_modify +EXPORT_SYMBOL vmlinux 0xc3ee3c24 security_inode_readlink +EXPORT_SYMBOL vmlinux 0xc40f4c75 pagecache_write_end +EXPORT_SYMBOL vmlinux 0xc4206d8a scmd_printk +EXPORT_SYMBOL vmlinux 0xc423af49 kmem_cache_create +EXPORT_SYMBOL vmlinux 0xc433c858 bfifo_qdisc_ops +EXPORT_SYMBOL vmlinux 0xc436880a dev_get_stats +EXPORT_SYMBOL vmlinux 0xc43c34f5 blk_mq_tag_busy_iter +EXPORT_SYMBOL vmlinux 0xc444d808 fb_firmware_edid +EXPORT_SYMBOL vmlinux 0xc447a4f7 remap_vmalloc_range_partial +EXPORT_SYMBOL vmlinux 0xc48307db lz4_decompress +EXPORT_SYMBOL vmlinux 0xc499ae1e kstrdup +EXPORT_SYMBOL vmlinux 0xc4c55c42 __xfrm_state_destroy +EXPORT_SYMBOL vmlinux 0xc4d0ec1e skb_put +EXPORT_SYMBOL vmlinux 0xc5137552 x86_bios_cpu_apicid +EXPORT_SYMBOL vmlinux 0xc5141f73 __sk_mem_reclaim +EXPORT_SYMBOL vmlinux 0xc52120c1 netif_set_real_num_rx_queues +EXPORT_SYMBOL vmlinux 0xc523fc63 sk_net_capable +EXPORT_SYMBOL vmlinux 0xc5358b8d agp_generic_remove_memory +EXPORT_SYMBOL vmlinux 0xc5458ebb loop_register_transfer +EXPORT_SYMBOL vmlinux 0xc5534d64 ioread16 +EXPORT_SYMBOL vmlinux 0xc558530d profile_pc +EXPORT_SYMBOL vmlinux 0xc575e8a3 security_sb_set_mnt_opts +EXPORT_SYMBOL vmlinux 0xc57ac759 crypto_sha512_finup +EXPORT_SYMBOL vmlinux 0xc599a772 security_xfrm_state_delete +EXPORT_SYMBOL vmlinux 0xc5d1c041 xfrm_input +EXPORT_SYMBOL vmlinux 0xc5d9c46c agp_try_unsupported_boot +EXPORT_SYMBOL vmlinux 0xc5fdef94 call_usermodehelper +EXPORT_SYMBOL vmlinux 0xc60be40e scsi_command_normalize_sense +EXPORT_SYMBOL vmlinux 0xc6117de6 security_inode_getsecctx +EXPORT_SYMBOL vmlinux 0xc611fe49 sock_kmalloc +EXPORT_SYMBOL vmlinux 0xc62d0c9e __skb_gso_segment +EXPORT_SYMBOL vmlinux 0xc631580a console_unlock +EXPORT_SYMBOL vmlinux 0xc634fa85 simple_empty +EXPORT_SYMBOL vmlinux 0xc63a3b71 cpufreq_generic_suspend +EXPORT_SYMBOL vmlinux 0xc645b864 register_cdrom +EXPORT_SYMBOL vmlinux 0xc65abeb7 agp3_generic_sizes +EXPORT_SYMBOL vmlinux 0xc65eca1f input_set_abs_params +EXPORT_SYMBOL vmlinux 0xc660802a block_write_full_page +EXPORT_SYMBOL vmlinux 0xc666a132 crc_t10dif +EXPORT_SYMBOL vmlinux 0xc6772da2 radix_tree_lookup_slot +EXPORT_SYMBOL vmlinux 0xc69a06d4 pm860x_page_reg_write +EXPORT_SYMBOL vmlinux 0xc6a75850 mutex_trylock +EXPORT_SYMBOL vmlinux 0xc6b368d3 acpi_gpe_count +EXPORT_SYMBOL vmlinux 0xc6bf650d scsi_device_set_state +EXPORT_SYMBOL vmlinux 0xc6cb465a __kfifo_max_r +EXPORT_SYMBOL vmlinux 0xc6cbbc89 capable +EXPORT_SYMBOL vmlinux 0xc6d2c82a udp_lib_unhash +EXPORT_SYMBOL vmlinux 0xc6e0fb1c blk_get_queue +EXPORT_SYMBOL vmlinux 0xc6f47b4b __put_cred +EXPORT_SYMBOL vmlinux 0xc700d0c4 jbd2_journal_release_jbd_inode +EXPORT_SYMBOL vmlinux 0xc7208c3a serial8250_resume_port +EXPORT_SYMBOL vmlinux 0xc72f0b34 nd_btt_sb_checksum +EXPORT_SYMBOL vmlinux 0xc74216a8 km_report +EXPORT_SYMBOL vmlinux 0xc7563db8 twl_set_regcache_bypass +EXPORT_SYMBOL vmlinux 0xc77f0b89 sync_inode_metadata +EXPORT_SYMBOL vmlinux 0xc781bd9f rfkill_resume_polling +EXPORT_SYMBOL vmlinux 0xc7856a3d inet6addr_notifier_call_chain +EXPORT_SYMBOL vmlinux 0xc7910c45 inet_peer_xrlim_allow +EXPORT_SYMBOL vmlinux 0xc79bcd36 dm_vcalloc +EXPORT_SYMBOL vmlinux 0xc7a4fbed rtnl_lock +EXPORT_SYMBOL vmlinux 0xc7ae9ce0 param_get_string +EXPORT_SYMBOL vmlinux 0xc7b2cee2 skb_queue_tail +EXPORT_SYMBOL vmlinux 0xc7b58052 scsi_free_host_dev +EXPORT_SYMBOL vmlinux 0xc7fa4706 phy_device_create +EXPORT_SYMBOL vmlinux 0xc7fcc5bf acpi_resource_to_address64 +EXPORT_SYMBOL vmlinux 0xc80c44c0 __frontswap_test +EXPORT_SYMBOL vmlinux 0xc8108998 dmam_pool_create +EXPORT_SYMBOL vmlinux 0xc82432d6 elv_rb_find +EXPORT_SYMBOL vmlinux 0xc82df8d3 mipi_dsi_dcs_nop +EXPORT_SYMBOL vmlinux 0xc83b4d5b posix_acl_from_mode +EXPORT_SYMBOL vmlinux 0xc83f5cfc cmdline_parts_find +EXPORT_SYMBOL vmlinux 0xc84a0a7e seq_hlist_start_rcu +EXPORT_SYMBOL vmlinux 0xc84bb90b ilookup5_nowait +EXPORT_SYMBOL vmlinux 0xc8685f13 alloc_disk +EXPORT_SYMBOL vmlinux 0xc872fd85 in6addr_interfacelocal_allnodes +EXPORT_SYMBOL vmlinux 0xc890c008 zlib_deflateEnd +EXPORT_SYMBOL vmlinux 0xc897c382 sg_init_table +EXPORT_SYMBOL vmlinux 0xc8a91f5b cpumask_local_spread +EXPORT_SYMBOL vmlinux 0xc8b0cdf2 cpufreq_global_kobject +EXPORT_SYMBOL vmlinux 0xc8b57c27 autoremove_wake_function +EXPORT_SYMBOL vmlinux 0xc8c683fc ip_options_compile +EXPORT_SYMBOL vmlinux 0xc8d4786d tcp_enter_memory_pressure +EXPORT_SYMBOL vmlinux 0xc8f08b63 ip6_frag_init +EXPORT_SYMBOL vmlinux 0xc911b9d5 eth_get_headlen +EXPORT_SYMBOL vmlinux 0xc92066b5 blk_rq_map_sg +EXPORT_SYMBOL vmlinux 0xc93465ee agp_alloc_page_array +EXPORT_SYMBOL vmlinux 0xc936e567 kfree_skb +EXPORT_SYMBOL vmlinux 0xc9634df9 in6addr_linklocal_allrouters +EXPORT_SYMBOL vmlinux 0xc969b391 __skb_get_hash_flowi6 +EXPORT_SYMBOL vmlinux 0xc96c635d neigh_proc_dointvec_jiffies +EXPORT_SYMBOL vmlinux 0xc9778cba __hw_addr_unsync_dev +EXPORT_SYMBOL vmlinux 0xc978479a xz_dec_run +EXPORT_SYMBOL vmlinux 0xc981e82d fb_set_var +EXPORT_SYMBOL vmlinux 0xc9839959 pneigh_enqueue +EXPORT_SYMBOL vmlinux 0xc988f643 jbd2_journal_start_commit +EXPORT_SYMBOL vmlinux 0xc98e7720 gnet_stats_copy_queue +EXPORT_SYMBOL vmlinux 0xc9980c4a unmap_mapping_range +EXPORT_SYMBOL vmlinux 0xc99e2a55 twl_rev +EXPORT_SYMBOL vmlinux 0xc99f6aae dma_spin_lock +EXPORT_SYMBOL vmlinux 0xc9ab9b93 __inet_stream_connect +EXPORT_SYMBOL vmlinux 0xc9b7b89d vlan_uses_dev +EXPORT_SYMBOL vmlinux 0xc9dd4db6 inet_frag_kill +EXPORT_SYMBOL vmlinux 0xc9fef317 add_wait_queue +EXPORT_SYMBOL vmlinux 0xca08b618 blk_mq_alloc_tag_set +EXPORT_SYMBOL vmlinux 0xca0f4667 readlink_copy +EXPORT_SYMBOL vmlinux 0xca10655c amd_iommu_get_v2_domain +EXPORT_SYMBOL vmlinux 0xca1365c5 blk_queue_init_tags +EXPORT_SYMBOL vmlinux 0xca17c0cd xfrm6_rcv_cb +EXPORT_SYMBOL vmlinux 0xca1b229b downgrade_write +EXPORT_SYMBOL vmlinux 0xca2b6fc2 filp_close +EXPORT_SYMBOL vmlinux 0xca5b061d dev_get_phys_port_id +EXPORT_SYMBOL vmlinux 0xca5ee09a vme_free_consistent +EXPORT_SYMBOL vmlinux 0xca774c2d generic_make_request +EXPORT_SYMBOL vmlinux 0xca832efe kmalloc_order +EXPORT_SYMBOL vmlinux 0xca8acc78 acpi_dbg_level +EXPORT_SYMBOL vmlinux 0xca9360b5 rb_next +EXPORT_SYMBOL vmlinux 0xca9c3cb6 jbd2_journal_clear_err +EXPORT_SYMBOL vmlinux 0xca9d433b elevator_change +EXPORT_SYMBOL vmlinux 0xcacf1226 scsi_mode_sense +EXPORT_SYMBOL vmlinux 0xcaf2c603 scsi_sd_pm_domain +EXPORT_SYMBOL vmlinux 0xcaf33045 mmc_power_restore_host +EXPORT_SYMBOL vmlinux 0xcb02694a filemap_fdatawrite +EXPORT_SYMBOL vmlinux 0xcb0288ea ledtrig_cpu +EXPORT_SYMBOL vmlinux 0xcb1173cc md_flush_request +EXPORT_SYMBOL vmlinux 0xcb155ebf ata_scsi_cmd_error_handler +EXPORT_SYMBOL vmlinux 0xcb281ac9 iget_failed +EXPORT_SYMBOL vmlinux 0xcb3e2eec scsi_remove_device +EXPORT_SYMBOL vmlinux 0xcb4b35b3 nvdimm_namespace_capacity +EXPORT_SYMBOL vmlinux 0xcb733bf2 acpi_bus_set_power +EXPORT_SYMBOL vmlinux 0xcb7ec8a0 d_obtain_alias +EXPORT_SYMBOL vmlinux 0xcb80e06a __napi_schedule_irqoff +EXPORT_SYMBOL vmlinux 0xcb92718b __blk_end_request_all +EXPORT_SYMBOL vmlinux 0xcb936989 hdmi_infoframe_pack +EXPORT_SYMBOL vmlinux 0xcbae6c7a acpi_lid_notifier_unregister +EXPORT_SYMBOL vmlinux 0xcbba1203 vme_irq_handler +EXPORT_SYMBOL vmlinux 0xcbbf0a6f audit_log_task_context +EXPORT_SYMBOL vmlinux 0xcbc9557f unregister_sysrq_key +EXPORT_SYMBOL vmlinux 0xcbcf05cc udp_sendmsg +EXPORT_SYMBOL vmlinux 0xcbd9a630 jbd2_journal_file_inode +EXPORT_SYMBOL vmlinux 0xcbf3db1c tty_do_resize +EXPORT_SYMBOL vmlinux 0xcbfad1ff ata_std_end_eh +EXPORT_SYMBOL vmlinux 0xcc0774de atomic_dec_and_mutex_lock +EXPORT_SYMBOL vmlinux 0xcc08ff17 x86_hyper_xen +EXPORT_SYMBOL vmlinux 0xcc248d26 serial8250_suspend_port +EXPORT_SYMBOL vmlinux 0xcc30caa2 bioset_integrity_free +EXPORT_SYMBOL vmlinux 0xcc3ccf86 compat_sock_get_timestamp +EXPORT_SYMBOL vmlinux 0xcc5005fe msleep_interruptible +EXPORT_SYMBOL vmlinux 0xcc778cc3 __tracepoint_fence_annotate_wait_on +EXPORT_SYMBOL vmlinux 0xcc7b61e7 pcie_capability_read_word +EXPORT_SYMBOL vmlinux 0xcc838223 __pte2cachemode_tbl +EXPORT_SYMBOL vmlinux 0xcc8fcbf2 inet_dev_addr_type +EXPORT_SYMBOL vmlinux 0xcc9aa2a6 register_sysctl +EXPORT_SYMBOL vmlinux 0xcca41402 netlink_rcv_skb +EXPORT_SYMBOL vmlinux 0xccc21f5e input_get_new_minor +EXPORT_SYMBOL vmlinux 0xcccce32a vlan_ioctl_set +EXPORT_SYMBOL vmlinux 0xccd33e4f nf_setsockopt +EXPORT_SYMBOL vmlinux 0xccf50e35 phy_ethtool_set_eee +EXPORT_SYMBOL vmlinux 0xccfa31a5 vfs_symlink +EXPORT_SYMBOL vmlinux 0xcd0ee4b5 jbd2__journal_start +EXPORT_SYMBOL vmlinux 0xcd20667a kstrtou16_from_user +EXPORT_SYMBOL vmlinux 0xcd279169 nla_find +EXPORT_SYMBOL vmlinux 0xcd57f7b0 radix_tree_tag_get +EXPORT_SYMBOL vmlinux 0xcd5a3d25 kern_path_create +EXPORT_SYMBOL vmlinux 0xcd6c762c pci_scan_slot +EXPORT_SYMBOL vmlinux 0xcd8d36f4 flow_get_u32_src +EXPORT_SYMBOL vmlinux 0xcdbbf0d5 load_nls +EXPORT_SYMBOL vmlinux 0xcdc39c9e security_ismaclabel +EXPORT_SYMBOL vmlinux 0xcdd62c19 jbd2_log_wait_commit +EXPORT_SYMBOL vmlinux 0xcddf9e41 swiotlb_alloc_coherent +EXPORT_SYMBOL vmlinux 0xcdf3c7d6 __scsi_device_lookup_by_target +EXPORT_SYMBOL vmlinux 0xcdfbcc9c tcf_em_tree_destroy +EXPORT_SYMBOL vmlinux 0xce17ea11 __free_pages +EXPORT_SYMBOL vmlinux 0xce23fadc inode_claim_rsv_space +EXPORT_SYMBOL vmlinux 0xce2840e7 irq_set_irq_wake +EXPORT_SYMBOL vmlinux 0xce2aff88 inet_frags_fini +EXPORT_SYMBOL vmlinux 0xce2c45cc wait_for_completion_io +EXPORT_SYMBOL vmlinux 0xce4904a4 acpi_leave_sleep_state +EXPORT_SYMBOL vmlinux 0xce4e47b6 __kfifo_skip_r +EXPORT_SYMBOL vmlinux 0xce5ac24f zlib_inflate_workspacesize +EXPORT_SYMBOL vmlinux 0xce6e50da udplite_prot +EXPORT_SYMBOL vmlinux 0xce7850e1 crc32_le_shift +EXPORT_SYMBOL vmlinux 0xce997d25 dev_mc_del +EXPORT_SYMBOL vmlinux 0xceab0311 strchrnul +EXPORT_SYMBOL vmlinux 0xceae504f cmdline_parts_free +EXPORT_SYMBOL vmlinux 0xceb7b150 led_blink_set_oneshot +EXPORT_SYMBOL vmlinux 0xcec25ecf misc_register +EXPORT_SYMBOL vmlinux 0xcef51982 kstrtou16 +EXPORT_SYMBOL vmlinux 0xcefcd99a serial8250_unregister_port +EXPORT_SYMBOL vmlinux 0xcf0dcb69 xfrm_register_type +EXPORT_SYMBOL vmlinux 0xcf10f0d6 pci_enable_device_io +EXPORT_SYMBOL vmlinux 0xcf3b921a down_write +EXPORT_SYMBOL vmlinux 0xcf4a00b6 sock_common_recvmsg +EXPORT_SYMBOL vmlinux 0xcf609ac7 key_alloc +EXPORT_SYMBOL vmlinux 0xcf61803f inet_select_addr +EXPORT_SYMBOL vmlinux 0xcf631d32 vmalloc_to_page +EXPORT_SYMBOL vmlinux 0xcf6a159d kthread_bind +EXPORT_SYMBOL vmlinux 0xcf6bc653 pci_enable_msi_range +EXPORT_SYMBOL vmlinux 0xcf6cfe1f msrs_free +EXPORT_SYMBOL vmlinux 0xcf6ff6a0 read_code +EXPORT_SYMBOL vmlinux 0xcf77654e mipi_dsi_dcs_soft_reset +EXPORT_SYMBOL vmlinux 0xcf85941e __skb_flow_dissect +EXPORT_SYMBOL vmlinux 0xcf8e0c3b d_obtain_root +EXPORT_SYMBOL vmlinux 0xcfb4a296 trace_print_array_seq +EXPORT_SYMBOL vmlinux 0xcfc8499f abort_creds +EXPORT_SYMBOL vmlinux 0xcfca61cd blk_integrity_compare +EXPORT_SYMBOL vmlinux 0xd018433e skb_checksum +EXPORT_SYMBOL vmlinux 0xd050d7e9 sk_reset_timer +EXPORT_SYMBOL vmlinux 0xd050f190 dquot_reclaim_space_nodirty +EXPORT_SYMBOL vmlinux 0xd0552c1c pcim_iomap +EXPORT_SYMBOL vmlinux 0xd06386e9 mmc_can_reset +EXPORT_SYMBOL vmlinux 0xd0695118 netdev_lower_dev_get_private +EXPORT_SYMBOL vmlinux 0xd0720a17 on_each_cpu_cond +EXPORT_SYMBOL vmlinux 0xd0766a2b inet_stream_connect +EXPORT_SYMBOL vmlinux 0xd07e1924 phy_attach +EXPORT_SYMBOL vmlinux 0xd08f6239 sg_copy_from_buffer +EXPORT_SYMBOL vmlinux 0xd09b0199 fence_context_alloc +EXPORT_SYMBOL vmlinux 0xd0a2847c sha_init +EXPORT_SYMBOL vmlinux 0xd0a4da13 generic_update_time +EXPORT_SYMBOL vmlinux 0xd0a91bab skip_spaces +EXPORT_SYMBOL vmlinux 0xd0b8e59a napi_gro_flush +EXPORT_SYMBOL vmlinux 0xd0c120f5 scsi_scan_target +EXPORT_SYMBOL vmlinux 0xd0c6bf48 mmc_detect_card_removed +EXPORT_SYMBOL vmlinux 0xd0cb3a14 xfrm_policy_byid +EXPORT_SYMBOL vmlinux 0xd0d0aa72 acpi_processor_preregister_performance +EXPORT_SYMBOL vmlinux 0xd0ee38b8 schedule_timeout_uninterruptible +EXPORT_SYMBOL vmlinux 0xd0f36f0d audit_log_format +EXPORT_SYMBOL vmlinux 0xd0fb7cd4 __tasklet_hi_schedule_first +EXPORT_SYMBOL vmlinux 0xd0fef3b2 agp_free_key +EXPORT_SYMBOL vmlinux 0xd10ea92c sock_no_mmap +EXPORT_SYMBOL vmlinux 0xd1131b31 mmc_gpio_get_ro +EXPORT_SYMBOL vmlinux 0xd13c43fe blk_mq_tag_to_rq +EXPORT_SYMBOL vmlinux 0xd14f2c80 scsi_set_medium_removal +EXPORT_SYMBOL vmlinux 0xd153c09c delete_from_page_cache +EXPORT_SYMBOL vmlinux 0xd160d07c netdev_rx_csum_fault +EXPORT_SYMBOL vmlinux 0xd1652a93 acpi_info +EXPORT_SYMBOL vmlinux 0xd168d6f2 wait_iff_congested +EXPORT_SYMBOL vmlinux 0xd169fab4 mmc_can_erase +EXPORT_SYMBOL vmlinux 0xd1816f32 frontswap_writethrough +EXPORT_SYMBOL vmlinux 0xd182fbed softnet_data +EXPORT_SYMBOL vmlinux 0xd1b1017b uart_write_wakeup +EXPORT_SYMBOL vmlinux 0xd1bc4f84 init_task +EXPORT_SYMBOL vmlinux 0xd1bde001 blk_mq_free_tag_set +EXPORT_SYMBOL vmlinux 0xd1d87e92 scsi_mlreturn_string +EXPORT_SYMBOL vmlinux 0xd1f6c5f3 smp_num_siblings +EXPORT_SYMBOL vmlinux 0xd200d3d0 iov_iter_get_pages +EXPORT_SYMBOL vmlinux 0xd2064e2f idr_replace +EXPORT_SYMBOL vmlinux 0xd2130957 mdiobus_scan +EXPORT_SYMBOL vmlinux 0xd2162d93 bdget +EXPORT_SYMBOL vmlinux 0xd220cf8a jiffies_to_timespec +EXPORT_SYMBOL vmlinux 0xd251d7b0 security_socket_getpeersec_dgram +EXPORT_SYMBOL vmlinux 0xd254a4a0 clkdev_alloc +EXPORT_SYMBOL vmlinux 0xd2555f19 jiffies_64_to_clock_t +EXPORT_SYMBOL vmlinux 0xd25d4f74 console_blank_hook +EXPORT_SYMBOL vmlinux 0xd266133e unregister_shrinker +EXPORT_SYMBOL vmlinux 0xd26dd33f dentry_open +EXPORT_SYMBOL vmlinux 0xd26eb401 udp6_csum_init +EXPORT_SYMBOL vmlinux 0xd27b25dd blk_check_plugged +EXPORT_SYMBOL vmlinux 0xd28e6efa blk_queue_unprep_rq +EXPORT_SYMBOL vmlinux 0xd2b09ce5 __kmalloc +EXPORT_SYMBOL vmlinux 0xd2b47bf2 sock_no_bind +EXPORT_SYMBOL vmlinux 0xd2da1048 register_netdevice_notifier +EXPORT_SYMBOL vmlinux 0xd2e40d8b vga_switcheroo_get_client_state +EXPORT_SYMBOL vmlinux 0xd2e9b2f2 dev_mc_unsync +EXPORT_SYMBOL vmlinux 0xd2eb69a1 input_mt_report_slot_state +EXPORT_SYMBOL vmlinux 0xd3098455 blk_init_queue +EXPORT_SYMBOL vmlinux 0xd31a0d1b devm_ioremap +EXPORT_SYMBOL vmlinux 0xd32b4b5f arp_tbl +EXPORT_SYMBOL vmlinux 0xd32dfff2 pcibios_resource_to_bus +EXPORT_SYMBOL vmlinux 0xd330fb32 dma_async_device_register +EXPORT_SYMBOL vmlinux 0xd33a2e63 locks_remove_posix +EXPORT_SYMBOL vmlinux 0xd341f86e neigh_lookup +EXPORT_SYMBOL vmlinux 0xd34fe638 nf_unregister_hook +EXPORT_SYMBOL vmlinux 0xd3621d64 write_one_page +EXPORT_SYMBOL vmlinux 0xd36e3d59 prandom_bytes_state +EXPORT_SYMBOL vmlinux 0xd3719d59 paravirt_ticketlocks_enabled +EXPORT_SYMBOL vmlinux 0xd372a340 sdev_enable_disk_events +EXPORT_SYMBOL vmlinux 0xd3ab1c9a skb_orphan_partial +EXPORT_SYMBOL vmlinux 0xd3c82b34 lro_flush_all +EXPORT_SYMBOL vmlinux 0xd3cb4e0e mmc_retune_timer_stop +EXPORT_SYMBOL vmlinux 0xd3e937e5 padata_add_cpu +EXPORT_SYMBOL vmlinux 0xd402240e __napi_schedule +EXPORT_SYMBOL vmlinux 0xd4250799 scsi_device_get +EXPORT_SYMBOL vmlinux 0xd42f2c39 simple_statfs +EXPORT_SYMBOL vmlinux 0xd45cc6ca bin2hex +EXPORT_SYMBOL vmlinux 0xd470dd8f tcp_conn_request +EXPORT_SYMBOL vmlinux 0xd4835ef8 dmi_check_system +EXPORT_SYMBOL vmlinux 0xd49d3600 nf_log_unregister +EXPORT_SYMBOL vmlinux 0xd4abfdaa lru_cache_add_file +EXPORT_SYMBOL vmlinux 0xd4d3f31c x86_hyper_ms_hyperv +EXPORT_SYMBOL vmlinux 0xd4d74889 neigh_direct_output +EXPORT_SYMBOL vmlinux 0xd4ed0534 serio_unregister_child_port +EXPORT_SYMBOL vmlinux 0xd4fe0a3f tty_kref_put +EXPORT_SYMBOL vmlinux 0xd508b31c bitmap_close_sync +EXPORT_SYMBOL vmlinux 0xd50fef48 acpi_detach_data +EXPORT_SYMBOL vmlinux 0xd5250f68 inode_dio_wait +EXPORT_SYMBOL vmlinux 0xd5260b4a compat_ipv6_getsockopt +EXPORT_SYMBOL vmlinux 0xd52a2d6e ip_defrag +EXPORT_SYMBOL vmlinux 0xd53e2485 d_lookup +EXPORT_SYMBOL vmlinux 0xd54f41ce try_to_del_timer_sync +EXPORT_SYMBOL vmlinux 0xd5747362 free_buffer_head +EXPORT_SYMBOL vmlinux 0xd5781acd get_io_context +EXPORT_SYMBOL vmlinux 0xd5941c7b arp_send +EXPORT_SYMBOL vmlinux 0xd5ac4f60 d_genocide +EXPORT_SYMBOL vmlinux 0xd5b0863f pcim_iomap_regions_request_all +EXPORT_SYMBOL vmlinux 0xd5c8cda6 inet_unregister_protosw +EXPORT_SYMBOL vmlinux 0xd5d00981 inet_frags_exit_net +EXPORT_SYMBOL vmlinux 0xd5d4c078 blk_put_request +EXPORT_SYMBOL vmlinux 0xd5d62cf2 generic_file_write_iter +EXPORT_SYMBOL vmlinux 0xd6091c82 dquot_enable +EXPORT_SYMBOL vmlinux 0xd6123552 ip_route_input_noref +EXPORT_SYMBOL vmlinux 0xd616683a ecryptfs_fill_auth_tok +EXPORT_SYMBOL vmlinux 0xd6271b01 scsi_test_unit_ready +EXPORT_SYMBOL vmlinux 0xd627632b clear_wb_congested +EXPORT_SYMBOL vmlinux 0xd62c833f schedule_timeout +EXPORT_SYMBOL vmlinux 0xd647e149 phy_find_first +EXPORT_SYMBOL vmlinux 0xd648e564 fb_match_mode +EXPORT_SYMBOL vmlinux 0xd66b137b generic_end_io_acct +EXPORT_SYMBOL vmlinux 0xd6736352 udp_lib_getsockopt +EXPORT_SYMBOL vmlinux 0xd67a4920 acpi_notifier_call_chain +EXPORT_SYMBOL vmlinux 0xd688716b dm_kcopyd_client_create +EXPORT_SYMBOL vmlinux 0xd6b2ed5f generate_pm_trace +EXPORT_SYMBOL vmlinux 0xd6b33026 cpu_khz +EXPORT_SYMBOL vmlinux 0xd6c9fe90 genphy_config_aneg +EXPORT_SYMBOL vmlinux 0xd6d39f56 mipi_dsi_dcs_set_tear_on +EXPORT_SYMBOL vmlinux 0xd6ddd8e0 d_tmpfile +EXPORT_SYMBOL vmlinux 0xd6e85cac compat_mc_setsockopt +EXPORT_SYMBOL vmlinux 0xd6ee688f vmalloc +EXPORT_SYMBOL vmlinux 0xd6fdc7b7 input_get_keycode +EXPORT_SYMBOL vmlinux 0xd710b2bd pci_fixup_cardbus +EXPORT_SYMBOL vmlinux 0xd730959d seqno_fence_ops +EXPORT_SYMBOL vmlinux 0xd73c00ba swiotlb_dma_mapping_error +EXPORT_SYMBOL vmlinux 0xd75c79df smp_call_function +EXPORT_SYMBOL vmlinux 0xd75f42b2 blk_limits_io_opt +EXPORT_SYMBOL vmlinux 0xd75f6788 agp_backend_acquire +EXPORT_SYMBOL vmlinux 0xd77784b5 set_pages_nx +EXPORT_SYMBOL vmlinux 0xd77d88a0 mipi_dsi_dcs_read +EXPORT_SYMBOL vmlinux 0xd78e6f89 security_skb_classify_flow +EXPORT_SYMBOL vmlinux 0xd7907579 vfs_create +EXPORT_SYMBOL vmlinux 0xd7b21b73 rwsem_down_read_failed +EXPORT_SYMBOL vmlinux 0xd7d47308 tcp_req_err +EXPORT_SYMBOL vmlinux 0xd7d8d03f page_cache_prev_hole +EXPORT_SYMBOL vmlinux 0xd7dd777b reserve_perfctr_nmi +EXPORT_SYMBOL vmlinux 0xd7e02405 neigh_event_ns +EXPORT_SYMBOL vmlinux 0xd7e56a4e simple_strtoll +EXPORT_SYMBOL vmlinux 0xd7ea7094 nf_unregister_queue_handler +EXPORT_SYMBOL vmlinux 0xd7f94215 put_cmsg +EXPORT_SYMBOL vmlinux 0xd89692a3 nla_reserve +EXPORT_SYMBOL vmlinux 0xd89da37f movable_zone +EXPORT_SYMBOL vmlinux 0xd8a0831f xfrm_state_lookup_byaddr +EXPORT_SYMBOL vmlinux 0xd8a77c0e __inode_permission +EXPORT_SYMBOL vmlinux 0xd8a994eb scsi_extd_sense_format +EXPORT_SYMBOL vmlinux 0xd8b6fb93 vme_register_driver +EXPORT_SYMBOL vmlinux 0xd8ded085 radix_tree_maybe_preload +EXPORT_SYMBOL vmlinux 0xd8e484f0 register_chrdev_region +EXPORT_SYMBOL vmlinux 0xd8ec60ac input_unregister_handler +EXPORT_SYMBOL vmlinux 0xd8eeea48 del_random_ready_callback +EXPORT_SYMBOL vmlinux 0xd8fa987e neigh_seq_stop +EXPORT_SYMBOL vmlinux 0xd905276d dquot_file_open +EXPORT_SYMBOL vmlinux 0xd9091363 acpi_install_notify_handler +EXPORT_SYMBOL vmlinux 0xd9114a68 pci_get_slot +EXPORT_SYMBOL vmlinux 0xd92c69ed sock_recvmsg +EXPORT_SYMBOL vmlinux 0xd92e2dca tcp_hashinfo +EXPORT_SYMBOL vmlinux 0xd94322e7 acpi_evaluate_reference +EXPORT_SYMBOL vmlinux 0xd9443703 redirty_page_for_writepage +EXPORT_SYMBOL vmlinux 0xd94c6e2f cdev_add +EXPORT_SYMBOL vmlinux 0xd9603e0a free_task +EXPORT_SYMBOL vmlinux 0xd969b2c7 amd_e400_c1e_detected +EXPORT_SYMBOL vmlinux 0xd97c8829 pci_select_bars +EXPORT_SYMBOL vmlinux 0xd985dc99 mempool_free_pages +EXPORT_SYMBOL vmlinux 0xd98986d1 amd_iommu_flush_tlb +EXPORT_SYMBOL vmlinux 0xd98d561a pci_find_next_bus +EXPORT_SYMBOL vmlinux 0xd9ce56df alloc_skb_with_frags +EXPORT_SYMBOL vmlinux 0xd9ce658f bh_uptodate_or_lock +EXPORT_SYMBOL vmlinux 0xd9d3bcd3 _raw_spin_lock_bh +EXPORT_SYMBOL vmlinux 0xd9d4f64f tcf_hash_cleanup +EXPORT_SYMBOL vmlinux 0xd9d8fd16 register_restart_handler +EXPORT_SYMBOL vmlinux 0xd9e2e881 acl_by_type +EXPORT_SYMBOL vmlinux 0xd9eddf2c cros_ec_query_all +EXPORT_SYMBOL vmlinux 0xd9f3684a rtmsg_ifinfo +EXPORT_SYMBOL vmlinux 0xd9fbc3d0 security_path_rename +EXPORT_SYMBOL vmlinux 0xda14dfd3 neigh_sysctl_unregister +EXPORT_SYMBOL vmlinux 0xda32395e mfd_cell_enable +EXPORT_SYMBOL vmlinux 0xda3d10a8 security_tun_dev_open +EXPORT_SYMBOL vmlinux 0xda53b211 scsi_scan_host +EXPORT_SYMBOL vmlinux 0xda7ca6cb fb_mode_is_equal +EXPORT_SYMBOL vmlinux 0xda8af7ad fb_find_nearest_mode +EXPORT_SYMBOL vmlinux 0xdaadf4fe tcp_md5_hash_header +EXPORT_SYMBOL vmlinux 0xdac3e167 mmc_release_host +EXPORT_SYMBOL vmlinux 0xdac4913a bitmap_allocate_region +EXPORT_SYMBOL vmlinux 0xdae3e002 skb_unlink +EXPORT_SYMBOL vmlinux 0xdaea6e0d mfd_clone_cell +EXPORT_SYMBOL vmlinux 0xdb0603eb km_state_expired +EXPORT_SYMBOL vmlinux 0xdb2a407b pci_bus_assign_resources +EXPORT_SYMBOL vmlinux 0xdb3bcca6 cancel_delayed_work +EXPORT_SYMBOL vmlinux 0xdb56e1ec blk_queue_alignment_offset +EXPORT_SYMBOL vmlinux 0xdb68bbad rfkill_destroy +EXPORT_SYMBOL vmlinux 0xdb70415b inet6_offloads +EXPORT_SYMBOL vmlinux 0xdb7305a1 __stack_chk_fail +EXPORT_SYMBOL vmlinux 0xdb760f52 __kfifo_free +EXPORT_SYMBOL vmlinux 0xdb88f830 skb_trim +EXPORT_SYMBOL vmlinux 0xdb8ded4f blk_alloc_queue +EXPORT_SYMBOL vmlinux 0xdb97587e fbcon_set_bitops +EXPORT_SYMBOL vmlinux 0xdbae82a2 pv_cpu_ops +EXPORT_SYMBOL vmlinux 0xdbaf85e0 do_splice_direct +EXPORT_SYMBOL vmlinux 0xdbba0736 devm_backlight_device_unregister +EXPORT_SYMBOL vmlinux 0xdbffee9c input_reset_device +EXPORT_SYMBOL vmlinux 0xdc047fc4 scsi_dev_info_list_add_keyed +EXPORT_SYMBOL vmlinux 0xdc058a17 truncate_inode_pages +EXPORT_SYMBOL vmlinux 0xdc11c7b0 scm_fp_dup +EXPORT_SYMBOL vmlinux 0xdc14eda7 pci_pci_problems +EXPORT_SYMBOL vmlinux 0xdc3c41a8 __crypto_memneq +EXPORT_SYMBOL vmlinux 0xdc3fcbc9 __sw_hweight8 +EXPORT_SYMBOL vmlinux 0xdc4e9565 generic_file_open +EXPORT_SYMBOL vmlinux 0xdc512134 backlight_register_notifier +EXPORT_SYMBOL vmlinux 0xdc57f532 acpi_install_gpe_handler +EXPORT_SYMBOL vmlinux 0xdc57f5b5 lock_sock_nested +EXPORT_SYMBOL vmlinux 0xdc5f5da8 lockref_put_return +EXPORT_SYMBOL vmlinux 0xdc65e077 current_fs_time +EXPORT_SYMBOL vmlinux 0xdc79d58f cancel_dirty_page +EXPORT_SYMBOL vmlinux 0xdc8687d9 tcp_v4_destroy_sock +EXPORT_SYMBOL vmlinux 0xdca6f7c7 in_dev_finish_destroy +EXPORT_SYMBOL vmlinux 0xdcb0349b sys_close +EXPORT_SYMBOL vmlinux 0xdcb8af2d bdi_register +EXPORT_SYMBOL vmlinux 0xdcd23c9d unregister_console +EXPORT_SYMBOL vmlinux 0xdcd4e177 simple_transaction_read +EXPORT_SYMBOL vmlinux 0xdcd949d9 get_agp_version +EXPORT_SYMBOL vmlinux 0xdcdba5e9 input_flush_device +EXPORT_SYMBOL vmlinux 0xdcf78cf3 keyring_search +EXPORT_SYMBOL vmlinux 0xdd043632 __splice_from_pipe +EXPORT_SYMBOL vmlinux 0xdd0c1220 single_open +EXPORT_SYMBOL vmlinux 0xdd18ab48 abx500_remove_ops +EXPORT_SYMBOL vmlinux 0xdd1d08a3 generic_delete_inode +EXPORT_SYMBOL vmlinux 0xdd208528 jbd2_journal_lock_updates +EXPORT_SYMBOL vmlinux 0xdd43cb66 i2c_smbus_read_i2c_block_data +EXPORT_SYMBOL vmlinux 0xdd683e50 padata_register_cpumask_notifier +EXPORT_SYMBOL vmlinux 0xdd8145b1 phy_detach +EXPORT_SYMBOL vmlinux 0xdd9099ee seq_printf +EXPORT_SYMBOL vmlinux 0xddcc140f phy_stop_interrupts +EXPORT_SYMBOL vmlinux 0xddd4801f ns_capable +EXPORT_SYMBOL vmlinux 0xdde04679 __tty_alloc_driver +EXPORT_SYMBOL vmlinux 0xdde83545 intel_gtt_get +EXPORT_SYMBOL vmlinux 0xde16dc16 tboot +EXPORT_SYMBOL vmlinux 0xde30ee92 do_SAK +EXPORT_SYMBOL vmlinux 0xde395091 __cleancache_put_page +EXPORT_SYMBOL vmlinux 0xde49836b kill_block_super +EXPORT_SYMBOL vmlinux 0xde6151db tcp_memory_allocated +EXPORT_SYMBOL vmlinux 0xde61c9ae dev_uc_flush +EXPORT_SYMBOL vmlinux 0xde727499 cdrom_open +EXPORT_SYMBOL vmlinux 0xde89f700 i2c_register_driver +EXPORT_SYMBOL vmlinux 0xde8ac249 udp_set_csum +EXPORT_SYMBOL vmlinux 0xde9360ba totalram_pages +EXPORT_SYMBOL vmlinux 0xde9b17ed agp3_generic_fetch_size +EXPORT_SYMBOL vmlinux 0xdebbae28 nobh_write_begin +EXPORT_SYMBOL vmlinux 0xdedb6611 try_wait_for_completion +EXPORT_SYMBOL vmlinux 0xdf074b3c sock_no_sendmsg +EXPORT_SYMBOL vmlinux 0xdf0da3cc acpi_get_devices +EXPORT_SYMBOL vmlinux 0xdf12a927 acpi_check_dsm +EXPORT_SYMBOL vmlinux 0xdf1427e5 idr_remove +EXPORT_SYMBOL vmlinux 0xdf188ac4 thermal_cdev_update +EXPORT_SYMBOL vmlinux 0xdf1a3183 inet_frag_maybe_warn_overflow +EXPORT_SYMBOL vmlinux 0xdf204794 xfrm_policy_flush +EXPORT_SYMBOL vmlinux 0xdf2c2742 rb_last +EXPORT_SYMBOL vmlinux 0xdf2f9fc8 netif_schedule_queue +EXPORT_SYMBOL vmlinux 0xdf4357cd xfrm_unregister_mode +EXPORT_SYMBOL vmlinux 0xdf43eca3 netif_rx +EXPORT_SYMBOL vmlinux 0xdf530320 sockfd_lookup +EXPORT_SYMBOL vmlinux 0xdf54a8f7 netlink_unregister_notifier +EXPORT_SYMBOL vmlinux 0xdf60cc27 __print_symbol +EXPORT_SYMBOL vmlinux 0xdf6d924b max8998_write_reg +EXPORT_SYMBOL vmlinux 0xdf8c695a __ndelay +EXPORT_SYMBOL vmlinux 0xdf929370 fs_overflowgid +EXPORT_SYMBOL vmlinux 0xdfb41abe nf_ip6_checksum +EXPORT_SYMBOL vmlinux 0xdfc2d15f scsi_host_get +EXPORT_SYMBOL vmlinux 0xdfc5169b slhc_init +EXPORT_SYMBOL vmlinux 0xdfc92b7a deactivate_super +EXPORT_SYMBOL vmlinux 0xdfd2049b block_write_end +EXPORT_SYMBOL vmlinux 0xdfd3a075 wait_for_completion_killable +EXPORT_SYMBOL vmlinux 0xdff905e5 vme_slave_free +EXPORT_SYMBOL vmlinux 0xe01ed833 clk_register_clkdevs +EXPORT_SYMBOL vmlinux 0xe026b44e mount_nodev +EXPORT_SYMBOL vmlinux 0xe0271a45 param_set_copystring +EXPORT_SYMBOL vmlinux 0xe02a1009 pci_bus_write_config_word +EXPORT_SYMBOL vmlinux 0xe0346926 tcf_hash_check +EXPORT_SYMBOL vmlinux 0xe04f7caa dm_read_arg_group +EXPORT_SYMBOL vmlinux 0xe05d477e devm_devfreq_add_device +EXPORT_SYMBOL vmlinux 0xe06141e9 security_sk_clone +EXPORT_SYMBOL vmlinux 0xe064de5a jbd2_journal_start +EXPORT_SYMBOL vmlinux 0xe06e4199 cpu_all_bits +EXPORT_SYMBOL vmlinux 0xe075d6eb iter_div_u64_rem +EXPORT_SYMBOL vmlinux 0xe083e246 gen_pool_first_fit_order_align +EXPORT_SYMBOL vmlinux 0xe0ac8bd2 acpi_bus_generate_netlink_event +EXPORT_SYMBOL vmlinux 0xe0b13336 argv_free +EXPORT_SYMBOL vmlinux 0xe0b3c4a1 inode_newsize_ok +EXPORT_SYMBOL vmlinux 0xe0ecdbd4 up_read +EXPORT_SYMBOL vmlinux 0xe0ed854a devm_clk_put +EXPORT_SYMBOL vmlinux 0xe0f03fce scsi_register_driver +EXPORT_SYMBOL vmlinux 0xe0f3cb2c pci_bus_alloc_resource +EXPORT_SYMBOL vmlinux 0xe10b61eb nf_log_packet +EXPORT_SYMBOL vmlinux 0xe10e36af __generic_file_fsync +EXPORT_SYMBOL vmlinux 0xe113bbbc csum_partial +EXPORT_SYMBOL vmlinux 0xe11ffb7d kernel_sock_shutdown +EXPORT_SYMBOL vmlinux 0xe13815ec param_get_long +EXPORT_SYMBOL vmlinux 0xe13cd8a7 dmi_name_in_vendors +EXPORT_SYMBOL vmlinux 0xe14000a4 simple_dentry_operations +EXPORT_SYMBOL vmlinux 0xe14ae56f ps2_sendbyte +EXPORT_SYMBOL vmlinux 0xe1509f4e pci_get_class +EXPORT_SYMBOL vmlinux 0xe157299d blk_end_request +EXPORT_SYMBOL vmlinux 0xe1761617 security_inet_conn_request +EXPORT_SYMBOL vmlinux 0xe1786c32 make_flow_keys_digest +EXPORT_SYMBOL vmlinux 0xe17fe3e0 ppp_unregister_compressor +EXPORT_SYMBOL vmlinux 0xe198b1c3 scsi_dma_unmap +EXPORT_SYMBOL vmlinux 0xe1c9e9a1 acpi_bus_get_status +EXPORT_SYMBOL vmlinux 0xe1da5a0c netdev_upper_get_next_dev_rcu +EXPORT_SYMBOL vmlinux 0xe1eb9a4b rawv6_mh_filter_register +EXPORT_SYMBOL vmlinux 0xe1f1c348 rps_may_expire_flow +EXPORT_SYMBOL vmlinux 0xe200f872 secure_dccpv6_sequence_number +EXPORT_SYMBOL vmlinux 0xe20372ae radix_tree_gang_lookup +EXPORT_SYMBOL vmlinux 0xe21d456c __getblk_slow +EXPORT_SYMBOL vmlinux 0xe23ae481 blk_iopoll_complete +EXPORT_SYMBOL vmlinux 0xe23be58d __block_page_mkwrite +EXPORT_SYMBOL vmlinux 0xe244c2a2 icmp_send +EXPORT_SYMBOL vmlinux 0xe24d3a97 jiffies_64 +EXPORT_SYMBOL vmlinux 0xe25083bc inet_sk_rebuild_header +EXPORT_SYMBOL vmlinux 0xe259ae9e _raw_spin_lock +EXPORT_SYMBOL vmlinux 0xe25d58c0 tcp_init_xmit_timers +EXPORT_SYMBOL vmlinux 0xe25f7f13 load_nls_default +EXPORT_SYMBOL vmlinux 0xe29713fe gnet_stats_copy_rate_est +EXPORT_SYMBOL vmlinux 0xe29a745e input_mt_assign_slots +EXPORT_SYMBOL vmlinux 0xe29b04e9 acpi_set_firmware_waking_vector64 +EXPORT_SYMBOL vmlinux 0xe29e1d0e out_of_line_wait_on_atomic_t +EXPORT_SYMBOL vmlinux 0xe2cbf490 crypto_sha1_finup +EXPORT_SYMBOL vmlinux 0xe2d5255a strcmp +EXPORT_SYMBOL vmlinux 0xe2f425e7 rps_cpu_mask +EXPORT_SYMBOL vmlinux 0xe31773b3 tcp_splice_read +EXPORT_SYMBOL vmlinux 0xe319eb24 acpi_pci_osc_control_set +EXPORT_SYMBOL vmlinux 0xe31c2fce locks_free_lock +EXPORT_SYMBOL vmlinux 0xe3399a75 native_queued_spin_lock_slowpath +EXPORT_SYMBOL vmlinux 0xe3a53f4c sort +EXPORT_SYMBOL vmlinux 0xe3cd0f67 kmem_cache_size +EXPORT_SYMBOL vmlinux 0xe3d6f284 fb_find_mode_cvt +EXPORT_SYMBOL vmlinux 0xe3ef6fbc dev_mc_flush +EXPORT_SYMBOL vmlinux 0xe3f2be2a md_finish_reshape +EXPORT_SYMBOL vmlinux 0xe3fb3b1f jbd2_journal_unlock_updates +EXPORT_SYMBOL vmlinux 0xe3fbc66e sock_queue_err_skb +EXPORT_SYMBOL vmlinux 0xe4080b33 passthru_features_check +EXPORT_SYMBOL vmlinux 0xe43408d1 ipv6_find_hdr +EXPORT_SYMBOL vmlinux 0xe444ab47 skb_append_datato_frags +EXPORT_SYMBOL vmlinux 0xe459d85a pnp_device_attach +EXPORT_SYMBOL vmlinux 0xe464421e generic_readlink +EXPORT_SYMBOL vmlinux 0xe47dfe0a register_netdevice +EXPORT_SYMBOL vmlinux 0xe484e35f ioread32 +EXPORT_SYMBOL vmlinux 0xe4b9c8b3 iov_iter_npages +EXPORT_SYMBOL vmlinux 0xe4f0767e skb_clone_sk +EXPORT_SYMBOL vmlinux 0xe5209906 phy_disconnect +EXPORT_SYMBOL vmlinux 0xe523ad75 synchronize_irq +EXPORT_SYMBOL vmlinux 0xe530d757 acpi_clear_gpe +EXPORT_SYMBOL vmlinux 0xe53d9eec qdisc_warn_nonwc +EXPORT_SYMBOL vmlinux 0xe53dc03f clocksource_unregister +EXPORT_SYMBOL vmlinux 0xe53f8e3e sock_edemux +EXPORT_SYMBOL vmlinux 0xe53fcd50 xfrm_policy_hash_rebuild +EXPORT_SYMBOL vmlinux 0xe57878a1 in6_pton +EXPORT_SYMBOL vmlinux 0xe5815f8a _raw_spin_lock_irq +EXPORT_SYMBOL vmlinux 0xe5842871 __sk_dst_check +EXPORT_SYMBOL vmlinux 0xe5867808 dlci_ioctl_set +EXPORT_SYMBOL vmlinux 0xe599e5c2 inode_permission +EXPORT_SYMBOL vmlinux 0xe5a2d902 pm_vt_switch_unregister +EXPORT_SYMBOL vmlinux 0xe5c78a99 do_blank_screen +EXPORT_SYMBOL vmlinux 0xe5ed5467 xfrm_policy_walk_init +EXPORT_SYMBOL vmlinux 0xe5f6656c noop_fsync +EXPORT_SYMBOL vmlinux 0xe6162877 down_killable +EXPORT_SYMBOL vmlinux 0xe635e3ad iov_iter_fault_in_readable +EXPORT_SYMBOL vmlinux 0xe64d98fe rdmsr_safe_regs +EXPORT_SYMBOL vmlinux 0xe6568876 tcp_prot +EXPORT_SYMBOL vmlinux 0xe65a9751 neigh_changeaddr +EXPORT_SYMBOL vmlinux 0xe67759ca _dev_info +EXPORT_SYMBOL vmlinux 0xe681c9d0 splice_direct_to_actor +EXPORT_SYMBOL vmlinux 0xe697d108 __blk_iopoll_complete +EXPORT_SYMBOL vmlinux 0xe69a9df4 hdmi_spd_infoframe_pack +EXPORT_SYMBOL vmlinux 0xe6c1bb33 dput +EXPORT_SYMBOL vmlinux 0xe6c7956b __blk_run_queue +EXPORT_SYMBOL vmlinux 0xe6d8de39 pci_scan_bus +EXPORT_SYMBOL vmlinux 0xe6da73aa save_mount_options +EXPORT_SYMBOL vmlinux 0xe6ec0a08 ps2_handle_response +EXPORT_SYMBOL vmlinux 0xe6fb675c node_to_cpumask_map +EXPORT_SYMBOL vmlinux 0xe6fbe430 can_do_mlock +EXPORT_SYMBOL vmlinux 0xe6fd4eee devm_gpiod_put_array +EXPORT_SYMBOL vmlinux 0xe716baed acpi_unregister_ioapic +EXPORT_SYMBOL vmlinux 0xe740f8e3 xfrm_state_delete_tunnel +EXPORT_SYMBOL vmlinux 0xe75731f5 param_ops_invbool +EXPORT_SYMBOL vmlinux 0xe759e893 pci_bus_read_dev_vendor_id +EXPORT_SYMBOL vmlinux 0xe76fedf3 cdev_del +EXPORT_SYMBOL vmlinux 0xe77e8a60 sdev_disable_disk_events +EXPORT_SYMBOL vmlinux 0xe7a664c4 nf_hooks +EXPORT_SYMBOL vmlinux 0xe7a81967 audit_log_secctx +EXPORT_SYMBOL vmlinux 0xe7c646ee abx500_register_ops +EXPORT_SYMBOL vmlinux 0xe7cee9ca mmc_gpiod_request_cd +EXPORT_SYMBOL vmlinux 0xe7d4daac seq_list_next +EXPORT_SYMBOL vmlinux 0xe7db7e67 bio_chain +EXPORT_SYMBOL vmlinux 0xe7e6817b nvdimm_namespace_disk_name +EXPORT_SYMBOL vmlinux 0xe7eb27df sock_i_uid +EXPORT_SYMBOL vmlinux 0xe7ee81ae tty_port_raise_dtr_rts +EXPORT_SYMBOL vmlinux 0xe81ef1dd remove_conflicting_framebuffers +EXPORT_SYMBOL vmlinux 0xe8214184 tcf_exts_destroy +EXPORT_SYMBOL vmlinux 0xe832a763 cpu_core_map +EXPORT_SYMBOL vmlinux 0xe84e21f1 phy_driver_register +EXPORT_SYMBOL vmlinux 0xe8700006 netdev_err +EXPORT_SYMBOL vmlinux 0xe8794ce1 slhc_toss +EXPORT_SYMBOL vmlinux 0xe879cb8d file_update_time +EXPORT_SYMBOL vmlinux 0xe884065e max8925_reg_write +EXPORT_SYMBOL vmlinux 0xe890eac6 _raw_write_lock_irq +EXPORT_SYMBOL vmlinux 0xe893fee7 mem_cgroup_end_page_stat +EXPORT_SYMBOL vmlinux 0xe8a49549 pci_map_biosrom +EXPORT_SYMBOL vmlinux 0xe8bea3bc qdisc_put_stab +EXPORT_SYMBOL vmlinux 0xe8cd87f6 phy_drivers_register +EXPORT_SYMBOL vmlinux 0xe8d590bb generic_pipe_buf_confirm +EXPORT_SYMBOL vmlinux 0xe8ec7204 i2c_smbus_read_word_data +EXPORT_SYMBOL vmlinux 0xe91376a7 mipi_dsi_dcs_set_tear_off +EXPORT_SYMBOL vmlinux 0xe914e41e strcpy +EXPORT_SYMBOL vmlinux 0xe917d53b find_lock_entry +EXPORT_SYMBOL vmlinux 0xe9183847 tcp_getsockopt +EXPORT_SYMBOL vmlinux 0xe953b21f get_next_ino +EXPORT_SYMBOL vmlinux 0xe95d737d param_set_bint +EXPORT_SYMBOL vmlinux 0xe95e00cf flex_array_get_ptr +EXPORT_SYMBOL vmlinux 0xe963b01b devm_iounmap +EXPORT_SYMBOL vmlinux 0xe973b4bc sock_kzfree_s +EXPORT_SYMBOL vmlinux 0xe98057d8 pci_prepare_to_sleep +EXPORT_SYMBOL vmlinux 0xe997667b wrmsr_on_cpu +EXPORT_SYMBOL vmlinux 0xe9acfac4 tcf_hash_new_index +EXPORT_SYMBOL vmlinux 0xe9bd27a7 phy_write_mmd_indirect +EXPORT_SYMBOL vmlinux 0xe9c4dc43 dev_get_flags +EXPORT_SYMBOL vmlinux 0xe9d1d096 blkdev_issue_discard +EXPORT_SYMBOL vmlinux 0xe9e58377 mmc_gpiod_request_cd_irq +EXPORT_SYMBOL vmlinux 0xe9f7149c zlib_deflate_workspacesize +EXPORT_SYMBOL vmlinux 0xe9fa01a2 set_pages_wb +EXPORT_SYMBOL vmlinux 0xe9fc4d80 single_release +EXPORT_SYMBOL vmlinux 0xe9ffdd4d set_cached_acl +EXPORT_SYMBOL vmlinux 0xea054b22 nla_policy_len +EXPORT_SYMBOL vmlinux 0xea095998 capable_wrt_inode_uidgid +EXPORT_SYMBOL vmlinux 0xea16dd4c tcp_destroy_cgroup +EXPORT_SYMBOL vmlinux 0xea277e56 tcp_v4_do_rcv +EXPORT_SYMBOL vmlinux 0xea50546d inode_init_always +EXPORT_SYMBOL vmlinux 0xea5ccc17 tcp_md5_hash_skb_data +EXPORT_SYMBOL vmlinux 0xea65baa8 finish_no_open +EXPORT_SYMBOL vmlinux 0xea6e8b23 __ht_create_irq +EXPORT_SYMBOL vmlinux 0xea6ed4c9 devfreq_monitor_stop +EXPORT_SYMBOL vmlinux 0xea7a42f9 __sg_free_table +EXPORT_SYMBOL vmlinux 0xea7b8a44 acpi_install_interface +EXPORT_SYMBOL vmlinux 0xea80cb9d pci_iomap_range +EXPORT_SYMBOL vmlinux 0xea90bdd3 acpi_attach_data +EXPORT_SYMBOL vmlinux 0xea92b6af request_key +EXPORT_SYMBOL vmlinux 0xea9bc0ab skb_dequeue_tail +EXPORT_SYMBOL vmlinux 0xeaba6753 zerocopy_sg_from_iter +EXPORT_SYMBOL vmlinux 0xeac72c64 pci_fixup_device +EXPORT_SYMBOL vmlinux 0xeac73847 irq_regs +EXPORT_SYMBOL vmlinux 0xeae064ca sock_alloc_send_pskb +EXPORT_SYMBOL vmlinux 0xeae3dfd6 __const_udelay +EXPORT_SYMBOL vmlinux 0xeb073cb9 find_inode_nowait +EXPORT_SYMBOL vmlinux 0xeb241feb mipi_dsi_dcs_exit_sleep_mode +EXPORT_SYMBOL vmlinux 0xeb2f3b68 blk_queue_end_tag +EXPORT_SYMBOL vmlinux 0xeb37101c audit_log_end +EXPORT_SYMBOL vmlinux 0xeb44339a free_pages_exact +EXPORT_SYMBOL vmlinux 0xeb83b9fa inet_del_protocol +EXPORT_SYMBOL vmlinux 0xeb90e051 rwsem_downgrade_wake +EXPORT_SYMBOL vmlinux 0xeb9f0e7e max8998_bulk_read +EXPORT_SYMBOL vmlinux 0xebb75c8c mipi_dsi_dcs_set_pixel_format +EXPORT_SYMBOL vmlinux 0xebc92839 qdisc_create_dflt +EXPORT_SYMBOL vmlinux 0xebd7058e gnet_stats_finish_copy +EXPORT_SYMBOL vmlinux 0xebdc76aa mmc_hw_reset +EXPORT_SYMBOL vmlinux 0xebf9beda blk_rq_count_integrity_sg +EXPORT_SYMBOL vmlinux 0xebff5cf5 fence_signal_locked +EXPORT_SYMBOL vmlinux 0xec119c78 __cleancache_init_fs +EXPORT_SYMBOL vmlinux 0xec220c2f __breadahead +EXPORT_SYMBOL vmlinux 0xec23069d inet_add_offload +EXPORT_SYMBOL vmlinux 0xec32d469 kernel_getsockname +EXPORT_SYMBOL vmlinux 0xec462a65 __pagevec_lru_add +EXPORT_SYMBOL vmlinux 0xec469f20 skb_copy_and_csum_bits +EXPORT_SYMBOL vmlinux 0xec4d9e3a clk_get_sys +EXPORT_SYMBOL vmlinux 0xec5c7d7a ipv6_mc_check_mld +EXPORT_SYMBOL vmlinux 0xec60d639 agp_generic_destroy_page +EXPORT_SYMBOL vmlinux 0xec6f4ed3 neigh_parms_alloc +EXPORT_SYMBOL vmlinux 0xec9f1ec1 filemap_fdatawrite_range +EXPORT_SYMBOL vmlinux 0xeca19058 __kfree_skb +EXPORT_SYMBOL vmlinux 0xecac8407 __memcpy +EXPORT_SYMBOL vmlinux 0xecaeb8af netlink_ns_capable +EXPORT_SYMBOL vmlinux 0xecc049a8 kset_unregister +EXPORT_SYMBOL vmlinux 0xeccd3e0c acpi_handle_printk +EXPORT_SYMBOL vmlinux 0xecceda5d scsi_execute_req_flags +EXPORT_SYMBOL vmlinux 0xece583f5 netdev_master_upper_dev_get_rcu +EXPORT_SYMBOL vmlinux 0xece784c2 rb_first +EXPORT_SYMBOL vmlinux 0xecf2fc40 dev_set_mac_address +EXPORT_SYMBOL vmlinux 0xecfd68ef acpi_get_node +EXPORT_SYMBOL vmlinux 0xecffc9a6 pci_enable_msix_range +EXPORT_SYMBOL vmlinux 0xed00471a pci_bus_read_config_dword +EXPORT_SYMBOL vmlinux 0xed0459d2 ps2_command +EXPORT_SYMBOL vmlinux 0xed15f25c mmc_can_secure_erase_trim +EXPORT_SYMBOL vmlinux 0xed174f24 jbd2_journal_wipe +EXPORT_SYMBOL vmlinux 0xed2134a7 pci_bus_write_config_dword +EXPORT_SYMBOL vmlinux 0xed3e2192 bio_get_nr_vecs +EXPORT_SYMBOL vmlinux 0xed55393d __dquot_free_space +EXPORT_SYMBOL vmlinux 0xed597524 qdisc_get_rtab +EXPORT_SYMBOL vmlinux 0xed63a7cc ip6_route_output +EXPORT_SYMBOL vmlinux 0xed663b1d netif_tx_wake_queue +EXPORT_SYMBOL vmlinux 0xed6b1559 blk_mq_complete_request +EXPORT_SYMBOL vmlinux 0xed73a8b2 neigh_ifdown +EXPORT_SYMBOL vmlinux 0xed74f497 tcp_md5_do_add +EXPORT_SYMBOL vmlinux 0xed79efe0 blk_mq_init_allocated_queue +EXPORT_SYMBOL vmlinux 0xed8a0cd5 iov_iter_bvec +EXPORT_SYMBOL vmlinux 0xed9f9a20 __ctzsi2 +EXPORT_SYMBOL vmlinux 0xedabf450 netif_skb_features +EXPORT_SYMBOL vmlinux 0xedbaee5e nla_strcmp +EXPORT_SYMBOL vmlinux 0xedc03953 iounmap +EXPORT_SYMBOL vmlinux 0xeddea57e amd_iommu_domain_direct_map +EXPORT_SYMBOL vmlinux 0xedf43be0 of_find_mipi_dsi_device_by_node +EXPORT_SYMBOL vmlinux 0xedf578ce param_ops_int +EXPORT_SYMBOL vmlinux 0xee1f6daf simple_open +EXPORT_SYMBOL vmlinux 0xee22c25b inetpeer_invalidate_tree +EXPORT_SYMBOL vmlinux 0xee2d0fc7 _local_bh_enable +EXPORT_SYMBOL vmlinux 0xee5ad3f0 uart_get_baud_rate +EXPORT_SYMBOL vmlinux 0xee632768 scsi_is_sdev_device +EXPORT_SYMBOL vmlinux 0xee6f7164 neigh_parms_release +EXPORT_SYMBOL vmlinux 0xee7eb9e1 pnp_platform_devices +EXPORT_SYMBOL vmlinux 0xee91879b rb_first_postorder +EXPORT_SYMBOL vmlinux 0xee976a24 dev_emerg +EXPORT_SYMBOL vmlinux 0xeea0afbf starget_for_each_device +EXPORT_SYMBOL vmlinux 0xeea9dbaf bitmap_bitremap +EXPORT_SYMBOL vmlinux 0xeeb050c5 compat_sock_common_getsockopt +EXPORT_SYMBOL vmlinux 0xeeb2be3c inode_init_once +EXPORT_SYMBOL vmlinux 0xeeb5bd3b __tracepoint_kfree +EXPORT_SYMBOL vmlinux 0xeeca4619 dquot_drop +EXPORT_SYMBOL vmlinux 0xeecbaa2a __ip_select_ident +EXPORT_SYMBOL vmlinux 0xeed0b66e jbd2_journal_check_used_features +EXPORT_SYMBOL vmlinux 0xeeef5cba dquot_alloc +EXPORT_SYMBOL vmlinux 0xeef161aa groups_free +EXPORT_SYMBOL vmlinux 0xeef427cb lockref_get_or_lock +EXPORT_SYMBOL vmlinux 0xeefd1242 i8042_install_filter +EXPORT_SYMBOL vmlinux 0xeefd3df9 __scm_destroy +EXPORT_SYMBOL vmlinux 0xef200224 __skb_checksum +EXPORT_SYMBOL vmlinux 0xef24207c pcie_set_readrq +EXPORT_SYMBOL vmlinux 0xef60f736 security_inode_permission +EXPORT_SYMBOL vmlinux 0xef64fde2 __pci_enable_wake +EXPORT_SYMBOL vmlinux 0xef6ab3a0 kernel_getsockopt +EXPORT_SYMBOL vmlinux 0xef8c55d7 generic_perform_write +EXPORT_SYMBOL vmlinux 0xef95b2d2 devm_free_irq +EXPORT_SYMBOL vmlinux 0xef9aedfc boot_option_idle_override +EXPORT_SYMBOL vmlinux 0xefb27502 __secpath_destroy +EXPORT_SYMBOL vmlinux 0xefb40696 __netif_schedule +EXPORT_SYMBOL vmlinux 0xefc3bc99 dquot_acquire +EXPORT_SYMBOL vmlinux 0xefd1624a vme_dma_free_attribute +EXPORT_SYMBOL vmlinux 0xefda8d99 abort_exclusive_wait +EXPORT_SYMBOL vmlinux 0xefdd70ce security_secid_to_secctx +EXPORT_SYMBOL vmlinux 0xefe099c3 acpi_get_event_status +EXPORT_SYMBOL vmlinux 0xefe5f606 blk_mq_abort_requeue_list +EXPORT_SYMBOL vmlinux 0xefed4b7a iw_handler_get_thrspy +EXPORT_SYMBOL vmlinux 0xeff0fd98 tty_port_close_end +EXPORT_SYMBOL vmlinux 0xf0009fee put_pages_list +EXPORT_SYMBOL vmlinux 0xf0064632 input_register_device +EXPORT_SYMBOL vmlinux 0xf0187927 __sg_page_iter_next +EXPORT_SYMBOL vmlinux 0xf03fb910 input_free_device +EXPORT_SYMBOL vmlinux 0xf03ffd5e bioset_integrity_create +EXPORT_SYMBOL vmlinux 0xf04bcd90 remove_proc_subtree +EXPORT_SYMBOL vmlinux 0xf058b663 devm_input_allocate_device +EXPORT_SYMBOL vmlinux 0xf05ffa15 fb_var_to_videomode +EXPORT_SYMBOL vmlinux 0xf065f629 ioread16be +EXPORT_SYMBOL vmlinux 0xf067257c register_memory_isolate_notifier +EXPORT_SYMBOL vmlinux 0xf0692113 dm_put_table_device +EXPORT_SYMBOL vmlinux 0xf08242c2 finish_wait +EXPORT_SYMBOL vmlinux 0xf08983da textsearch_unregister +EXPORT_SYMBOL vmlinux 0xf08c67de napi_alloc_frag +EXPORT_SYMBOL vmlinux 0xf09de776 get_random_int +EXPORT_SYMBOL vmlinux 0xf0a71e70 pci_release_selected_regions +EXPORT_SYMBOL vmlinux 0xf0a8237a radix_tree_gang_lookup_tag +EXPORT_SYMBOL vmlinux 0xf0adef22 gen_replace_estimator +EXPORT_SYMBOL vmlinux 0xf0b36c2a param_get_bool +EXPORT_SYMBOL vmlinux 0xf0c87664 fb_get_buffer_offset +EXPORT_SYMBOL vmlinux 0xf0d99f83 pcim_iounmap +EXPORT_SYMBOL vmlinux 0xf0ef15b4 list_sort +EXPORT_SYMBOL vmlinux 0xf10526ac verify_spi_info +EXPORT_SYMBOL vmlinux 0xf106b521 tcp_recvmsg +EXPORT_SYMBOL vmlinux 0xf10de535 ioread8 +EXPORT_SYMBOL vmlinux 0xf11543ff find_first_zero_bit +EXPORT_SYMBOL vmlinux 0xf116d4b5 copy_in_user +EXPORT_SYMBOL vmlinux 0xf134bfa4 __nla_put +EXPORT_SYMBOL vmlinux 0xf1398e2e lg_local_unlock_cpu +EXPORT_SYMBOL vmlinux 0xf147dcb2 hdmi_spd_infoframe_init +EXPORT_SYMBOL vmlinux 0xf1499312 param_set_charp +EXPORT_SYMBOL vmlinux 0xf1672dfe generic_pipe_buf_steal +EXPORT_SYMBOL vmlinux 0xf17dc6a1 i2c_smbus_write_byte_data +EXPORT_SYMBOL vmlinux 0xf1821a87 flow_cache_init +EXPORT_SYMBOL vmlinux 0xf195c682 fb_invert_cmaps +EXPORT_SYMBOL vmlinux 0xf1969a8e __usecs_to_jiffies +EXPORT_SYMBOL vmlinux 0xf1bcfce1 make_kprojid +EXPORT_SYMBOL vmlinux 0xf1c141d3 dm_kobject_release +EXPORT_SYMBOL vmlinux 0xf1ca113b security_path_chmod +EXPORT_SYMBOL vmlinux 0xf1db1704 nla_memcpy +EXPORT_SYMBOL vmlinux 0xf1e98c74 avenrun +EXPORT_SYMBOL vmlinux 0xf1f32ef9 __xfrm_state_delete +EXPORT_SYMBOL vmlinux 0xf1ff51a4 eth_validate_addr +EXPORT_SYMBOL vmlinux 0xf20dabd8 free_irq +EXPORT_SYMBOL vmlinux 0xf210c212 pci_lost_interrupt +EXPORT_SYMBOL vmlinux 0xf23fcb99 __kfifo_in +EXPORT_SYMBOL vmlinux 0xf260f554 vme_irq_generate +EXPORT_SYMBOL vmlinux 0xf26b03a1 noop_qdisc +EXPORT_SYMBOL vmlinux 0xf26c6e3c __fib6_flush_trees +EXPORT_SYMBOL vmlinux 0xf27e8033 input_set_capability +EXPORT_SYMBOL vmlinux 0xf281a8ce generic_permission +EXPORT_SYMBOL vmlinux 0xf28ed6e2 machine_to_phys_nr +EXPORT_SYMBOL vmlinux 0xf29672f7 vlan_vid_add +EXPORT_SYMBOL vmlinux 0xf2997713 tty_termios_hw_change +EXPORT_SYMBOL vmlinux 0xf2a0af8f backlight_device_registered +EXPORT_SYMBOL vmlinux 0xf2a2b163 resource_list_create_entry +EXPORT_SYMBOL vmlinux 0xf2a72a01 ndo_dflt_fdb_dump +EXPORT_SYMBOL vmlinux 0xf2ab9a75 from_kprojid_munged +EXPORT_SYMBOL vmlinux 0xf2c43f3f zlib_deflate +EXPORT_SYMBOL vmlinux 0xf2cd003e pnp_release_card_device +EXPORT_SYMBOL vmlinux 0xf2e189e1 cdrom_ioctl +EXPORT_SYMBOL vmlinux 0xf2fa34c6 ip_cmsg_recv_offset +EXPORT_SYMBOL vmlinux 0xf3018c33 max8925_reg_read +EXPORT_SYMBOL vmlinux 0xf3062240 vm_mmap +EXPORT_SYMBOL vmlinux 0xf312cb9d ucs2_strsize +EXPORT_SYMBOL vmlinux 0xf313da4e sha_transform +EXPORT_SYMBOL vmlinux 0xf3188007 skb_insert +EXPORT_SYMBOL vmlinux 0xf325690e sock_init_data +EXPORT_SYMBOL vmlinux 0xf3341268 __clear_user +EXPORT_SYMBOL vmlinux 0xf3425025 scsi_verify_blk_ioctl +EXPORT_SYMBOL vmlinux 0xf346231f seq_list_start_head +EXPORT_SYMBOL vmlinux 0xf353a698 register_module_notifier +EXPORT_SYMBOL vmlinux 0xf35788f4 may_umount +EXPORT_SYMBOL vmlinux 0xf36691e8 blk_queue_segment_boundary +EXPORT_SYMBOL vmlinux 0xf36d553a dst_release +EXPORT_SYMBOL vmlinux 0xf374f349 ndo_dflt_fdb_add +EXPORT_SYMBOL vmlinux 0xf386a6ad swiotlb_sync_sg_for_device +EXPORT_SYMBOL vmlinux 0xf389fe60 __hw_addr_init +EXPORT_SYMBOL vmlinux 0xf3916987 global_cursor_default +EXPORT_SYMBOL vmlinux 0xf396cd21 tcp_parse_md5sig_option +EXPORT_SYMBOL vmlinux 0xf3986b06 acpi_os_map_generic_address +EXPORT_SYMBOL vmlinux 0xf39ee2e0 blk_rq_map_user +EXPORT_SYMBOL vmlinux 0xf3ad547b bio_clone_fast +EXPORT_SYMBOL vmlinux 0xf3b1e9cd vm_map_ram +EXPORT_SYMBOL vmlinux 0xf3c42367 blk_stop_queue +EXPORT_SYMBOL vmlinux 0xf3e1a52c user_path_at_empty +EXPORT_SYMBOL vmlinux 0xf3e6402e __bitmap_equal +EXPORT_SYMBOL vmlinux 0xf3ee00fb locks_mandatory_area +EXPORT_SYMBOL vmlinux 0xf3f9f8a6 invalidate_mapping_pages +EXPORT_SYMBOL vmlinux 0xf3ff7d07 __pagevec_release +EXPORT_SYMBOL vmlinux 0xf4118af2 xfrm6_protocol_register +EXPORT_SYMBOL vmlinux 0xf4296a86 blk_mq_alloc_request +EXPORT_SYMBOL vmlinux 0xf42f62a8 reservation_object_reserve_shared +EXPORT_SYMBOL vmlinux 0xf441ac43 ioread8_rep +EXPORT_SYMBOL vmlinux 0xf474c21c bitmap_print_to_pagebuf +EXPORT_SYMBOL vmlinux 0xf474fdcb kfree_const +EXPORT_SYMBOL vmlinux 0xf4a5c213 avail_to_resrv_perfctr_nmi_bit +EXPORT_SYMBOL vmlinux 0xf4a5d8bd padata_set_cpumasks +EXPORT_SYMBOL vmlinux 0xf4ac4c2f kfree_skb_partial +EXPORT_SYMBOL vmlinux 0xf4b267fa vme_master_mmap +EXPORT_SYMBOL vmlinux 0xf4b5bdf2 inet6_getname +EXPORT_SYMBOL vmlinux 0xf4b754fd acpi_resources_are_enforced +EXPORT_SYMBOL vmlinux 0xf4bdbeb9 __frontswap_invalidate_area +EXPORT_SYMBOL vmlinux 0xf4ef232a scsi_host_lookup +EXPORT_SYMBOL vmlinux 0xf4f14de6 rtnl_trylock +EXPORT_SYMBOL vmlinux 0xf4f97432 __cleancache_invalidate_page +EXPORT_SYMBOL vmlinux 0xf4fa9fb1 register_xen_selfballooning +EXPORT_SYMBOL vmlinux 0xf50f6380 blk_mq_start_stopped_hw_queues +EXPORT_SYMBOL vmlinux 0xf51ae235 touch_nmi_watchdog +EXPORT_SYMBOL vmlinux 0xf51bf88b nf_hooks_needed +EXPORT_SYMBOL vmlinux 0xf5289508 tcp_proc_register +EXPORT_SYMBOL vmlinux 0xf536d22e acpi_set_gpe_wake_mask +EXPORT_SYMBOL vmlinux 0xf538b226 d_hash_and_lookup +EXPORT_SYMBOL vmlinux 0xf53d4c26 qdisc_class_hash_destroy +EXPORT_SYMBOL vmlinux 0xf557d81f fb_get_mode +EXPORT_SYMBOL vmlinux 0xf56bddba devm_clk_get +EXPORT_SYMBOL vmlinux 0xf573c314 security_inode_setsecctx +EXPORT_SYMBOL vmlinux 0xf5997748 md_write_start +EXPORT_SYMBOL vmlinux 0xf5a10e25 vme_slave_set +EXPORT_SYMBOL vmlinux 0xf5b10e67 acpi_install_global_event_handler +EXPORT_SYMBOL vmlinux 0xf5c2d34d hdmi_audio_infoframe_init +EXPORT_SYMBOL vmlinux 0xf5eb86ea blk_verify_command +EXPORT_SYMBOL vmlinux 0xf5ee0f39 pci_claim_resource +EXPORT_SYMBOL vmlinux 0xf5f15818 __ww_mutex_lock_interruptible +EXPORT_SYMBOL vmlinux 0xf5f3e833 truncate_inode_pages_range +EXPORT_SYMBOL vmlinux 0xf5f733fb force_sig +EXPORT_SYMBOL vmlinux 0xf6017eda sk_send_sigurg +EXPORT_SYMBOL vmlinux 0xf6209376 devfreq_register_opp_notifier +EXPORT_SYMBOL vmlinux 0xf621bb7d queue_read_lock_slowpath +EXPORT_SYMBOL vmlinux 0xf63385d4 compat_sock_get_timestampns +EXPORT_SYMBOL vmlinux 0xf6388c56 sysctl_ip_default_ttl +EXPORT_SYMBOL vmlinux 0xf63e78c6 scsi_add_host_with_dma +EXPORT_SYMBOL vmlinux 0xf6770391 mac_pton +EXPORT_SYMBOL vmlinux 0xf68285c0 register_inetaddr_notifier +EXPORT_SYMBOL vmlinux 0xf684b113 dcache_readdir +EXPORT_SYMBOL vmlinux 0xf68687be __sg_page_iter_start +EXPORT_SYMBOL vmlinux 0xf689419c pci_bus_size_bridges +EXPORT_SYMBOL vmlinux 0xf693a145 irq_stat +EXPORT_SYMBOL vmlinux 0xf6a98d0c sock_no_poll +EXPORT_SYMBOL vmlinux 0xf6bb4729 color_table +EXPORT_SYMBOL vmlinux 0xf6d623b9 read_dev_sector +EXPORT_SYMBOL vmlinux 0xf6d780b0 pci_bus_read_config_byte +EXPORT_SYMBOL vmlinux 0xf6d7986b __generic_file_write_iter +EXPORT_SYMBOL vmlinux 0xf6e3b990 tty_mutex +EXPORT_SYMBOL vmlinux 0xf6ebc03b net_ratelimit +EXPORT_SYMBOL vmlinux 0xf6ee5313 __dax_fault +EXPORT_SYMBOL vmlinux 0xf6fc8791 __bitmap_xor +EXPORT_SYMBOL vmlinux 0xf705a4d6 sk_capable +EXPORT_SYMBOL vmlinux 0xf7088f22 d_make_root +EXPORT_SYMBOL vmlinux 0xf7136a86 blk_queue_dma_alignment +EXPORT_SYMBOL vmlinux 0xf7289d14 __tracepoint_kmem_cache_free +EXPORT_SYMBOL vmlinux 0xf74e8e83 pci_platform_rom +EXPORT_SYMBOL vmlinux 0xf757a9fa i2c_transfer +EXPORT_SYMBOL vmlinux 0xf7584a9c find_font +EXPORT_SYMBOL vmlinux 0xf7599ad6 xfrm_input_register_afinfo +EXPORT_SYMBOL vmlinux 0xf75e979f phy_start +EXPORT_SYMBOL vmlinux 0xf764868a udplite_table +EXPORT_SYMBOL vmlinux 0xf766294a key_reject_and_link +EXPORT_SYMBOL vmlinux 0xf77004c4 input_open_device +EXPORT_SYMBOL vmlinux 0xf77506ac d_prune_aliases +EXPORT_SYMBOL vmlinux 0xf77c0391 security_path_rmdir +EXPORT_SYMBOL vmlinux 0xf78a7b06 dquot_disable +EXPORT_SYMBOL vmlinux 0xf78aa83d __seq_open_private +EXPORT_SYMBOL vmlinux 0xf799fcc3 setup_arg_pages +EXPORT_SYMBOL vmlinux 0xf79e97cd acpi_get_physical_device_location +EXPORT_SYMBOL vmlinux 0xf7adcaf3 __tracepoint_kmalloc_node +EXPORT_SYMBOL vmlinux 0xf7c2cca1 dev_err +EXPORT_SYMBOL vmlinux 0xf7d65bb0 pci_enable_msix +EXPORT_SYMBOL vmlinux 0xf7da49ce vmap +EXPORT_SYMBOL vmlinux 0xf7e84c9d netdev_class_remove_file_ns +EXPORT_SYMBOL vmlinux 0xf7f06011 xfrm4_prepare_output +EXPORT_SYMBOL vmlinux 0xf7f4eb90 devfreq_monitor_suspend +EXPORT_SYMBOL vmlinux 0xf7f67e3a __dquot_transfer +EXPORT_SYMBOL vmlinux 0xf7f9252c tty_insert_flip_string_fixed_flag +EXPORT_SYMBOL vmlinux 0xf811e69d scsi_eh_flush_done_q +EXPORT_SYMBOL vmlinux 0xf812cff6 memscan +EXPORT_SYMBOL vmlinux 0xf827cb83 free_reserved_area +EXPORT_SYMBOL vmlinux 0xf82abc1d isa_dma_bridge_buggy +EXPORT_SYMBOL vmlinux 0xf82ec573 rb_prev +EXPORT_SYMBOL vmlinux 0xf8509e7d mutex_lock +EXPORT_SYMBOL vmlinux 0xf86ab063 pci_request_selected_regions +EXPORT_SYMBOL vmlinux 0xf88dd0c1 dma_async_tx_descriptor_init +EXPORT_SYMBOL vmlinux 0xf88e0ee2 acpi_get_table_header +EXPORT_SYMBOL vmlinux 0xf8a30cd8 cpufreq_get_policy +EXPORT_SYMBOL vmlinux 0xf8afaca9 blk_pm_runtime_init +EXPORT_SYMBOL vmlinux 0xf8b06a51 __neigh_set_probe_once +EXPORT_SYMBOL vmlinux 0xf8d04f09 __crc32c_le_shift +EXPORT_SYMBOL vmlinux 0xf931be81 invalidate_partition +EXPORT_SYMBOL vmlinux 0xf9386273 scsi_change_queue_depth +EXPORT_SYMBOL vmlinux 0xf96700aa inode_get_bytes +EXPORT_SYMBOL vmlinux 0xf975f3ca sock_alloc_file +EXPORT_SYMBOL vmlinux 0xf97a7bf4 bdev_read_only +EXPORT_SYMBOL vmlinux 0xf97f56a3 simple_rename +EXPORT_SYMBOL vmlinux 0xf99cc819 vfs_statfs +EXPORT_SYMBOL vmlinux 0xf9a482f9 msleep +EXPORT_SYMBOL vmlinux 0xf9a68ef4 generic_removexattr +EXPORT_SYMBOL vmlinux 0xf9b1a2dd pci_scan_bridge +EXPORT_SYMBOL vmlinux 0xf9c0b663 strlcat +EXPORT_SYMBOL vmlinux 0xf9d17332 dquot_release +EXPORT_SYMBOL vmlinux 0xfa0e38de ipv6_skip_exthdr +EXPORT_SYMBOL vmlinux 0xfa18bb30 blk_recount_segments +EXPORT_SYMBOL vmlinux 0xfa390c5e mmc_detect_change +EXPORT_SYMBOL vmlinux 0xfa58bb5d cont_write_begin +EXPORT_SYMBOL vmlinux 0xfa599bb2 netlink_register_notifier +EXPORT_SYMBOL vmlinux 0xfa741160 input_mt_destroy_slots +EXPORT_SYMBOL vmlinux 0xfa8ca623 generic_ro_fops +EXPORT_SYMBOL vmlinux 0xfaab7130 udp_add_offload +EXPORT_SYMBOL vmlinux 0xfaac2c47 kernel_param_unlock +EXPORT_SYMBOL vmlinux 0xfabadebd unregister_nls +EXPORT_SYMBOL vmlinux 0xfac8865f sysctl_wmem_max +EXPORT_SYMBOL vmlinux 0xfacd8e72 vme_dma_vme_attribute +EXPORT_SYMBOL vmlinux 0xfaced743 gen_pool_set_algo +EXPORT_SYMBOL vmlinux 0xfae67b1f cap_mmap_addr +EXPORT_SYMBOL vmlinux 0xfaf0e72f cdrom_mode_sense +EXPORT_SYMBOL vmlinux 0xfafbae49 get_thermal_instance +EXPORT_SYMBOL vmlinux 0xfb0443fb acpi_get_parent +EXPORT_SYMBOL vmlinux 0xfb1cac3e blk_mq_end_request +EXPORT_SYMBOL vmlinux 0xfb45553a simple_transaction_release +EXPORT_SYMBOL vmlinux 0xfb578fc5 memset +EXPORT_SYMBOL vmlinux 0xfb6af58d recalc_sigpending +EXPORT_SYMBOL vmlinux 0xfb7da9c2 bio_split +EXPORT_SYMBOL vmlinux 0xfb80c7a0 acpi_walk_namespace +EXPORT_SYMBOL vmlinux 0xfb94103e __clzdi2 +EXPORT_SYMBOL vmlinux 0xfbaaf01e console_lock +EXPORT_SYMBOL vmlinux 0xfbc4f89e io_schedule_timeout +EXPORT_SYMBOL vmlinux 0xfbda439f unlock_page +EXPORT_SYMBOL vmlinux 0xfbfa8274 mb_cache_entry_release +EXPORT_SYMBOL vmlinux 0xfc02b7ad sysctl_tcp_wmem +EXPORT_SYMBOL vmlinux 0xfc051192 ipv6_setsockopt +EXPORT_SYMBOL vmlinux 0xfc0707ae dm_get_device +EXPORT_SYMBOL vmlinux 0xfc231dfe fbcon_set_tileops +EXPORT_SYMBOL vmlinux 0xfc392c76 bdi_destroy +EXPORT_SYMBOL vmlinux 0xfc39e32f ioport_unmap +EXPORT_SYMBOL vmlinux 0xfc55a1fc kill_bdev +EXPORT_SYMBOL vmlinux 0xfc6d3603 put_page +EXPORT_SYMBOL vmlinux 0xfc872fd1 get_ibs_caps +EXPORT_SYMBOL vmlinux 0xfca9c942 mount_single +EXPORT_SYMBOL vmlinux 0xfcac0d40 acpi_install_interface_handler +EXPORT_SYMBOL vmlinux 0xfcb926cd kstrtouint_from_user +EXPORT_SYMBOL vmlinux 0xfcc2a43c utf32_to_utf8 +EXPORT_SYMBOL vmlinux 0xfcec0987 enable_irq +EXPORT_SYMBOL vmlinux 0xfcf0ebdd inet6_add_offload +EXPORT_SYMBOL vmlinux 0xfcfa03ff fb_videomode_to_modelist +EXPORT_SYMBOL vmlinux 0xfd2f4d43 pcie_port_service_register +EXPORT_SYMBOL vmlinux 0xfd31c5e8 get_user_pages +EXPORT_SYMBOL vmlinux 0xfd7229e4 x86_hyper_vmware +EXPORT_SYMBOL vmlinux 0xfd98e814 dcb_getapp +EXPORT_SYMBOL vmlinux 0xfd99623a ip_frag_ecn_table +EXPORT_SYMBOL vmlinux 0xfdab04c9 mmc_register_driver +EXPORT_SYMBOL vmlinux 0xfdb3d7b8 xfrm_register_km +EXPORT_SYMBOL vmlinux 0xfdb9101c inet_put_port +EXPORT_SYMBOL vmlinux 0xfdb98410 skb_coalesce_rx_frag +EXPORT_SYMBOL vmlinux 0xfdb9b629 ioread32be +EXPORT_SYMBOL vmlinux 0xfdbb7d45 from_kprojid +EXPORT_SYMBOL vmlinux 0xfdbe0288 pci_add_resource_offset +EXPORT_SYMBOL vmlinux 0xfdf19ff7 scsi_dma_map +EXPORT_SYMBOL vmlinux 0xfdfb792f amd_iommu_pc_supported +EXPORT_SYMBOL vmlinux 0xfdfc0b3b fiemap_fill_next_extent +EXPORT_SYMBOL vmlinux 0xfdfd6c90 add_wait_queue_exclusive +EXPORT_SYMBOL vmlinux 0xfe029963 unregister_inetaddr_notifier +EXPORT_SYMBOL vmlinux 0xfe047ce6 acpi_enter_sleep_state +EXPORT_SYMBOL vmlinux 0xfe13c522 acpi_install_gpe_raw_handler +EXPORT_SYMBOL vmlinux 0xfe17047b kblockd_schedule_delayed_work_on +EXPORT_SYMBOL vmlinux 0xfe26fc7c nr_node_ids +EXPORT_SYMBOL vmlinux 0xfe374874 seq_vprintf +EXPORT_SYMBOL vmlinux 0xfe5d4bb2 sys_tz +EXPORT_SYMBOL vmlinux 0xfe67ebef iov_iter_get_pages_alloc +EXPORT_SYMBOL vmlinux 0xfe7c4287 nr_cpu_ids +EXPORT_SYMBOL vmlinux 0xfe8a9d09 mipi_dsi_generic_write +EXPORT_SYMBOL vmlinux 0xfe8f7679 input_inject_event +EXPORT_SYMBOL vmlinux 0xfe916dc6 hex_dump_to_buffer +EXPORT_SYMBOL vmlinux 0xfe9ebbbb acpi_osi_is_win8 +EXPORT_SYMBOL vmlinux 0xfeb66a8b page_cache_next_hole +EXPORT_SYMBOL vmlinux 0xfedba6b4 __quota_error +EXPORT_SYMBOL vmlinux 0xfedcdb60 seq_hlist_next_percpu +EXPORT_SYMBOL vmlinux 0xfee5150b i2c_del_adapter +EXPORT_SYMBOL vmlinux 0xfeeb61df uart_unregister_driver +EXPORT_SYMBOL vmlinux 0xfeebc7c4 __kfifo_from_user_r +EXPORT_SYMBOL vmlinux 0xfef2c78f idr_get_next +EXPORT_SYMBOL vmlinux 0xfef9bda2 kobject_del +EXPORT_SYMBOL vmlinux 0xfefd8851 sync_inode +EXPORT_SYMBOL vmlinux 0xff1042d0 serio_interrupt +EXPORT_SYMBOL vmlinux 0xff1e9dd8 seq_list_start +EXPORT_SYMBOL vmlinux 0xff235e32 skb_queue_head +EXPORT_SYMBOL vmlinux 0xff2c89a2 pcie_capability_write_dword +EXPORT_SYMBOL vmlinux 0xff2fe5f4 __wait_on_buffer +EXPORT_SYMBOL vmlinux 0xff4a8d8b request_key_async_with_auxdata +EXPORT_SYMBOL vmlinux 0xff6878cf fb_default_cmap +EXPORT_SYMBOL vmlinux 0xff69bdfc scsi_host_put +EXPORT_SYMBOL vmlinux 0xff6e9ee3 param_ops_short +EXPORT_SYMBOL vmlinux 0xff7559e4 ioport_resource +EXPORT_SYMBOL vmlinux 0xff833fde dentry_unhash +EXPORT_SYMBOL vmlinux 0xff922976 t10_pi_type1_crc +EXPORT_SYMBOL vmlinux 0xff9ca065 fb_edid_to_monspecs +EXPORT_SYMBOL vmlinux 0xffa355d1 __register_nmi_handler +EXPORT_SYMBOL vmlinux 0xffb9a3f7 mntput +EXPORT_SYMBOL vmlinux 0xffd5a395 default_wake_function +EXPORT_SYMBOL vmlinux 0xfff1d67b inet_rtx_syn_ack +EXPORT_SYMBOL_GPL arch/x86/crypto/aes-x86_64 0x7060bf0a crypto_aes_encrypt_x86 +EXPORT_SYMBOL_GPL arch/x86/crypto/aes-x86_64 0xe409b491 crypto_aes_decrypt_x86 +EXPORT_SYMBOL_GPL arch/x86/crypto/camellia-aesni-avx-x86_64 0x13a65ecf camellia_ecb_enc_16way +EXPORT_SYMBOL_GPL arch/x86/crypto/camellia-aesni-avx-x86_64 0x17bf48dc camellia_xts_dec_16way +EXPORT_SYMBOL_GPL arch/x86/crypto/camellia-aesni-avx-x86_64 0x1a08ded1 camellia_xts_enc +EXPORT_SYMBOL_GPL arch/x86/crypto/camellia-aesni-avx-x86_64 0x47129015 camellia_xts_enc_16way +EXPORT_SYMBOL_GPL arch/x86/crypto/camellia-aesni-avx-x86_64 0x7d54edc2 camellia_cbc_dec_16way +EXPORT_SYMBOL_GPL arch/x86/crypto/camellia-aesni-avx-x86_64 0x7e87ef55 camellia_ecb_dec_16way +EXPORT_SYMBOL_GPL arch/x86/crypto/camellia-aesni-avx-x86_64 0x8f185793 camellia_xts_dec +EXPORT_SYMBOL_GPL arch/x86/crypto/camellia-aesni-avx-x86_64 0x9e8086dc camellia_ctr_16way +EXPORT_SYMBOL_GPL arch/x86/crypto/camellia-x86_64 0x098ace2e xts_camellia_setkey +EXPORT_SYMBOL_GPL arch/x86/crypto/camellia-x86_64 0x16061d06 __camellia_setkey +EXPORT_SYMBOL_GPL arch/x86/crypto/camellia-x86_64 0x1636abdf __camellia_enc_blk +EXPORT_SYMBOL_GPL arch/x86/crypto/camellia-x86_64 0x1da0e256 camellia_crypt_ctr +EXPORT_SYMBOL_GPL arch/x86/crypto/camellia-x86_64 0x31bbe42b camellia_crypt_ctr_2way +EXPORT_SYMBOL_GPL arch/x86/crypto/camellia-x86_64 0x50dc55b6 __camellia_enc_blk_2way +EXPORT_SYMBOL_GPL arch/x86/crypto/camellia-x86_64 0x6a475ee4 lrw_camellia_exit_tfm +EXPORT_SYMBOL_GPL arch/x86/crypto/camellia-x86_64 0x89c1ba3c lrw_camellia_setkey +EXPORT_SYMBOL_GPL arch/x86/crypto/camellia-x86_64 0x930f687f camellia_decrypt_cbc_2way +EXPORT_SYMBOL_GPL arch/x86/crypto/camellia-x86_64 0xa41a5ad3 camellia_dec_blk +EXPORT_SYMBOL_GPL arch/x86/crypto/camellia-x86_64 0xf4521fda camellia_dec_blk_2way +EXPORT_SYMBOL_GPL arch/x86/crypto/glue_helper 0x2d202226 glue_ctr_crypt_128bit +EXPORT_SYMBOL_GPL arch/x86/crypto/glue_helper 0x7299da12 glue_cbc_decrypt_128bit +EXPORT_SYMBOL_GPL arch/x86/crypto/glue_helper 0x7c5b53b9 glue_xts_crypt_128bit +EXPORT_SYMBOL_GPL arch/x86/crypto/glue_helper 0x8f02ac4d glue_xts_crypt_128bit_one +EXPORT_SYMBOL_GPL arch/x86/crypto/glue_helper 0xf1a984a3 glue_ecb_crypt_128bit +EXPORT_SYMBOL_GPL arch/x86/crypto/glue_helper 0xfeefd73b glue_cbc_encrypt_128bit +EXPORT_SYMBOL_GPL arch/x86/crypto/serpent-avx-x86_64 0x016a957f serpent_xts_enc_8way_avx +EXPORT_SYMBOL_GPL arch/x86/crypto/serpent-avx-x86_64 0x095e1b02 lrw_serpent_exit_tfm +EXPORT_SYMBOL_GPL arch/x86/crypto/serpent-avx-x86_64 0x0c5a8af6 serpent_xts_dec_8way_avx +EXPORT_SYMBOL_GPL arch/x86/crypto/serpent-avx-x86_64 0x0ff3c26d serpent_xts_dec +EXPORT_SYMBOL_GPL arch/x86/crypto/serpent-avx-x86_64 0x35cdb2b0 lrw_serpent_setkey +EXPORT_SYMBOL_GPL arch/x86/crypto/serpent-avx-x86_64 0x606a8162 serpent_cbc_dec_8way_avx +EXPORT_SYMBOL_GPL arch/x86/crypto/serpent-avx-x86_64 0x79ff0b7a serpent_ecb_dec_8way_avx +EXPORT_SYMBOL_GPL arch/x86/crypto/serpent-avx-x86_64 0x9ae34b2f serpent_xts_enc +EXPORT_SYMBOL_GPL arch/x86/crypto/serpent-avx-x86_64 0x9e018632 __serpent_crypt_ctr +EXPORT_SYMBOL_GPL arch/x86/crypto/serpent-avx-x86_64 0x9f99663c serpent_ctr_8way_avx +EXPORT_SYMBOL_GPL arch/x86/crypto/serpent-avx-x86_64 0xa84ea33d serpent_ecb_enc_8way_avx +EXPORT_SYMBOL_GPL arch/x86/crypto/serpent-avx-x86_64 0xe7c983af xts_serpent_setkey +EXPORT_SYMBOL_GPL arch/x86/crypto/twofish-x86_64 0x19dc7881 twofish_dec_blk +EXPORT_SYMBOL_GPL arch/x86/crypto/twofish-x86_64 0x5e752773 twofish_enc_blk +EXPORT_SYMBOL_GPL arch/x86/crypto/twofish-x86_64-3way 0x1fd77fb1 twofish_dec_blk_3way +EXPORT_SYMBOL_GPL arch/x86/crypto/twofish-x86_64-3way 0x2ea779a6 lrw_twofish_exit_tfm +EXPORT_SYMBOL_GPL arch/x86/crypto/twofish-x86_64-3way 0x61694b97 twofish_dec_blk_cbc_3way +EXPORT_SYMBOL_GPL arch/x86/crypto/twofish-x86_64-3way 0x8d75ab44 twofish_enc_blk_ctr +EXPORT_SYMBOL_GPL arch/x86/crypto/twofish-x86_64-3way 0x8e856922 twofish_enc_blk_ctr_3way +EXPORT_SYMBOL_GPL arch/x86/crypto/twofish-x86_64-3way 0xd59593e6 lrw_twofish_setkey +EXPORT_SYMBOL_GPL arch/x86/crypto/twofish-x86_64-3way 0xf2e80e9c __twofish_enc_blk_3way +EXPORT_SYMBOL_GPL arch/x86/crypto/twofish-x86_64-3way 0xfb864a73 xts_twofish_setkey +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x000368bd kvm_vcpu_uninit +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x00aaf935 kvm_disable_tdp +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x01d5f0dd __x86_set_memory_region +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x046772a5 kvm_mmu_unprotect_page +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x054a12dd cpuid_query_maxphyaddr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x0686b5eb kvm_set_cr8 +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x0b9e2ae1 kvm_release_page_dirty +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x0f2f17f7 kvm_arch_has_noncoherent_dma +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x0f4abbc9 kvm_arch_unregister_noncoherent_dma +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x0f8fe546 kvm_flush_remote_tlbs +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x0fa29744 kvm_vcpu_gfn_to_pfn_atomic +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x11a46c77 kvm_mmu_slot_set_dirty +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x11e18371 kvm_inject_page_fault +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x12d5ed9b kvm_inject_pending_timer_irqs +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x12dbf0a4 kvm_get_dirty_log +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x14cb8040 kvm_is_linear_rip +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x161308ba kvm_set_xcr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x163f9e1b kvm_vcpu_gfn_to_hva +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x1768ab65 kvm_set_memory_region +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x17cddcd3 kvm_mmu_get_spte_hierarchy +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x18aabfab kvm_emulate_hypercall +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x1ea78cd3 kvm_read_guest_page_mmu +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x1f7af249 __tracepoint_kvm_ple_window +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x209bb449 reprogram_gp_counter +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x20de5193 kvm_disable_largepages +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x21c58d64 kvm_get_dirty_log_protect +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x2703b3a1 kvm_inject_nmi +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x27046576 kvm_exit +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x271940e1 kvm_x86_ops +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x291dff6b kvm_set_cr4 +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x2b3fb869 kvm_get_linear_rip +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x2c056c61 x86_set_memory_region +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x2c78b8d4 __gfn_to_pfn_memslot +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x2d65f8c7 __tracepoint_kvm_pml_full +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x2e839794 kvm_mmu_unprotect_page_virt +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x305b8a5c kvm_apic_update_irr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x31062cdd kvm_get_cr8 +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x317f9e6b kvm_enable_efer_bits +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x3394c6eb kvm_set_cr0 +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x3872144b kvm_set_cr3 +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x38aa7891 kvm_mmu_reset_context +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x39b4eb6c __kvm_set_memory_region +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x3b5dd35e __tracepoint_kvm_msr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x3e1f72e0 kvm_vcpu_cache +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x4154c758 kvm_require_dr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x4167c664 kvm_vcpu_on_spin +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x42d3d135 kvm_mmu_page_fault +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x43e8c4cf kvm_mtrr_valid +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x45135149 handle_mmio_page_fault_common +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x473a98bd kvm_is_visible_gfn +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x485cd7f6 kvm_rebooting +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x492dbfa1 kvm_find_cpuid_entry +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x4a05d668 kvm_cpu_has_interrupt +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x4c466736 kvm_vcpu_read_guest +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x4c51f664 __tracepoint_kvm_exit +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x4ff6501d kvm_mmu_sync_roots +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x51c64183 kvm_vcpu_read_guest_page +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x53a2a3f7 __tracepoint_kvm_inj_virq +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x54108194 kvm_lapic_set_eoi +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x54cb5010 kvm_vcpu_gfn_to_pfn +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x57928a8b kvm_set_msr_common +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x5ccf3cd7 kvm_get_rflags +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x5f2b550f kvm_vcpu_gfn_to_page +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x5f49c08d kvm_read_guest_cached +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x64020e10 kvm_set_shared_msr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x64a34f49 __tracepoint_kvm_nested_vmexit_inject +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x669da1fd kvm_set_pfn_dirty +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x680bb48e kvm_init_shadow_ept_mmu +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x6850eada kvm_apic_write_nodecode +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x68c9a489 kvm_requeue_exception_e +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x692873da kvm_mtrr_get_guest_memory_type +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x6949821b kvm_mmu_invlpg +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x6ac88fa5 gfn_to_pfn_prot +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x6aea0da1 kvm_emulate_halt +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x6f666ae0 kvm_get_cs_db_l_bits +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x709cd8cb kvm_spurious_fault +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x71413ecc kvm_lmsw +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x74cac8c3 load_pdptrs +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x76649161 kvm_read_guest_virt +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x78e4c87b kvm_vcpu_reload_apic_access_page +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x7919a2d7 kvm_apic_set_eoi_accelerated +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x7aa64803 kvm_release_pfn_clean +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x7b0c79c6 kvm_requeue_exception +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x7b29d8f6 kvm_arch_start_assignment +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x7c502ab9 __tracepoint_kvm_nested_intr_vmexit +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x7cee44c2 gfn_to_pfn_atomic +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x7f2c1163 __tracepoint_kvm_nested_vmexit +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x831327da kvm_max_guest_tsc_khz +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x83eda28e kvm_set_msr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x88cd7dd2 kvm_arch_register_noncoherent_dma +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x89b710f7 kvm_vcpu_mark_page_dirty +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x8a26f7b0 __tracepoint_kvm_nested_intercepts +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x8a2b0163 kvm_fast_pio_out +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x8b9619b6 kvm_task_switch +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x8c8be800 kvm_mmu_slot_largepage_remove_write_access +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x8ce4f3ab kvm_enable_tdp +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x8da01274 kvm_get_pfn +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x8e0e5846 gfn_to_pfn +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x8e1cd06f kvm_set_pfn_accessed +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x8f7c9708 kvm_emulate_wbinvd +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x91e1291f kvm_vcpu_write_guest +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x9391e332 kvm_write_guest_cached +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x98d2d899 gfn_to_page +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x9974d0fb kvm_queue_exception_e +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x99b5806e kvm_vcpu_read_guest_atomic +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x9a216313 kvm_define_shared_msr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x9b3a65a8 kvm_vcpu_block +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x9c62ea96 mark_page_dirty +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x9ee59155 __tracepoint_kvm_page_fault +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xa0ec3a0a gfn_to_hva_memslot +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xa150dede kvm_before_handle_nmi +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xa18bb283 kvm_write_guest_virt_system +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xa2b58a4a reprogram_fixed_counter +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xa2d2271c gfn_to_hva +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xa34f4418 kvm_get_dr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xa503d273 kvm_vcpu_init +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xa508e36b __tracepoint_kvm_skinit +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xa66a8bf5 kvm_rdpmc +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xa7741733 kvm_write_guest +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xa80fcfe9 kvm_clear_guest +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xaa79cab5 __tracepoint_kvm_cr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xacf7f97c gfn_to_pfn_memslot_atomic +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xadb3f670 kvm_emulate_cpuid +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xae33722f gfn_to_page_many_atomic +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xaf275715 __tracepoint_kvm_nested_vmrun +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xb15afc5e kvm_io_bus_write +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xb1e70868 reprogram_counter +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xb2041088 kvm_vcpu_kick +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xb40b2f73 gfn_to_memslot +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xb8362451 kvm_debugfs_dir +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xba9ed435 kvm_mmu_set_mmio_spte_mask +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xbd571496 kvm_vcpu_halt +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xbe90f924 kvm_get_kvm +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xc1dc913c kvm_clear_guest_page +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xc316d92e kvm_gfn_to_hva_cache_init +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xc56d75ce __kvm_apic_update_irr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xc6b87519 kvm_require_cpl +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xc82a5ef8 kvm_write_guest_page +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xc9d2aa82 kvm_release_page_clean +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xca201935 kvm_init_shadow_mmu +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xcef3fec5 __tracepoint_kvm_write_tsc_offset +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xcfd8fdbb kvm_arch_has_assigned_device +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xd0459e67 kvm_has_tsc_control +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xd0b2727a kvm_mmu_set_mask_ptes +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xd233c445 kvm_mmu_slot_leaf_clear_dirty +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xd3932ee7 kvm_set_dr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xd3ed2a13 kvm_get_msr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xd6a949be kvm_set_rflags +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xd8a83349 kvm_read_guest_page +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xd8e6563e kvm_vcpu_write_guest_page +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xd93bbd46 gfn_to_pfn_memslot +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xd9ce5d6f kvm_set_apic_base +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xdacd45d7 kvm_read_guest_atomic +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xdca9a33d kvm_arch_end_assignment +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xdeb9e564 __tracepoint_kvm_invlpga +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xe0630460 kvm_get_msr_common +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xe3b6d82a kvm_cpu_get_interrupt +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xe47af50c kvm_after_handle_nmi +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xe615c686 kvm_put_kvm +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xe7013427 kvm_init +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xe9a0afd9 kvm_mmu_clear_dirty_pt_masked +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xea433d42 kvm_valid_efer +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xea60b1b0 kvm_get_apic_base +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xedab727a kvm_complete_insn_gp +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xeec582ab kvm_mmu_load +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xef56c291 x86_emulate_instruction +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xf019e659 kvm_irq_has_notifier +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xf0911b78 kvm_inject_realmode_interrupt +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xf15ed888 kvm_read_guest +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xf49b3a33 kvm_queue_exception +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xf5d37788 kvm_mmu_unload +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xfaea2adf kvm_cpuid +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xfcc4f11b kvm_write_tsc +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xff5376ee kvm_vcpu_yield_to +EXPORT_SYMBOL_GPL crypto/ablk_helper 0x09947c1e __ablk_encrypt +EXPORT_SYMBOL_GPL crypto/ablk_helper 0x0fdd5d1b ablk_encrypt +EXPORT_SYMBOL_GPL crypto/ablk_helper 0x1a4324e2 ablk_init +EXPORT_SYMBOL_GPL crypto/ablk_helper 0x4f9cd7da ablk_init_common +EXPORT_SYMBOL_GPL crypto/ablk_helper 0x7dac43ea ablk_exit +EXPORT_SYMBOL_GPL crypto/ablk_helper 0xf2185414 ablk_set_key +EXPORT_SYMBOL_GPL crypto/ablk_helper 0xf78947ec ablk_decrypt +EXPORT_SYMBOL_GPL crypto/af_alg 0x04a2918c af_alg_make_sg +EXPORT_SYMBOL_GPL crypto/af_alg 0x11badcb8 af_alg_wait_for_completion +EXPORT_SYMBOL_GPL crypto/af_alg 0x3ec29ec7 af_alg_register_type +EXPORT_SYMBOL_GPL crypto/af_alg 0x4d718b26 af_alg_unregister_type +EXPORT_SYMBOL_GPL crypto/af_alg 0x52147178 af_alg_link_sg +EXPORT_SYMBOL_GPL crypto/af_alg 0x738179b7 af_alg_release +EXPORT_SYMBOL_GPL crypto/af_alg 0x9c3ac16a af_alg_free_sg +EXPORT_SYMBOL_GPL crypto/af_alg 0x9f662739 af_alg_accept +EXPORT_SYMBOL_GPL crypto/af_alg 0xb3989a1d af_alg_complete +EXPORT_SYMBOL_GPL crypto/af_alg 0xc6a0c7bf af_alg_cmsg_send +EXPORT_SYMBOL_GPL crypto/asymmetric_keys/pkcs7_message 0x1c8f3d8f pkcs7_parse_message +EXPORT_SYMBOL_GPL crypto/asymmetric_keys/pkcs7_message 0x91d2fecf pkcs7_validate_trust +EXPORT_SYMBOL_GPL crypto/asymmetric_keys/pkcs7_message 0xbe82ff95 pkcs7_get_content_data +EXPORT_SYMBOL_GPL crypto/asymmetric_keys/pkcs7_message 0xcc45da99 pkcs7_free_message +EXPORT_SYMBOL_GPL crypto/asymmetric_keys/pkcs7_message 0xe9ff17e6 pkcs7_verify +EXPORT_SYMBOL_GPL crypto/async_tx/async_memcpy 0xa8089a9c async_memcpy +EXPORT_SYMBOL_GPL crypto/async_tx/async_pq 0x295fa8b3 async_syndrome_val +EXPORT_SYMBOL_GPL crypto/async_tx/async_pq 0x8fb3d4fa async_gen_syndrome +EXPORT_SYMBOL_GPL crypto/async_tx/async_raid6_recov 0x60bcc965 async_raid6_datap_recov +EXPORT_SYMBOL_GPL crypto/async_tx/async_raid6_recov 0x698d0891 async_raid6_2data_recov +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0x2a09d57f async_tx_submit +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0x598eccb7 async_trigger_callback +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0xcb8bfd2a __async_tx_find_channel +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0xd65f9ccd async_tx_quiesce +EXPORT_SYMBOL_GPL crypto/async_tx/async_xor 0x4a70396f async_xor_val +EXPORT_SYMBOL_GPL crypto/async_tx/async_xor 0xcbdbe4b1 async_xor +EXPORT_SYMBOL_GPL crypto/authenc 0x587ef278 crypto_authenc_extractkeys +EXPORT_SYMBOL_GPL crypto/blowfish_common 0x85761eff blowfish_setkey +EXPORT_SYMBOL_GPL crypto/cast5_generic 0x03d3af43 cast5_setkey +EXPORT_SYMBOL_GPL crypto/cast5_generic 0x27278ca9 __cast5_encrypt +EXPORT_SYMBOL_GPL crypto/cast5_generic 0x4a2a3ca6 __cast5_decrypt +EXPORT_SYMBOL_GPL crypto/cast6_generic 0x1291971c __cast6_setkey +EXPORT_SYMBOL_GPL crypto/cast6_generic 0x1e2c961f __cast6_decrypt +EXPORT_SYMBOL_GPL crypto/cast6_generic 0x8f04034a __cast6_encrypt +EXPORT_SYMBOL_GPL crypto/cast6_generic 0xb7973021 cast6_setkey +EXPORT_SYMBOL_GPL crypto/cast_common 0x08aa6fb7 cast_s1 +EXPORT_SYMBOL_GPL crypto/cast_common 0x0c5fbf8a cast_s3 +EXPORT_SYMBOL_GPL crypto/cast_common 0xe39dd4b4 cast_s2 +EXPORT_SYMBOL_GPL crypto/cast_common 0xee83a4f3 cast_s4 +EXPORT_SYMBOL_GPL crypto/cryptd 0x38122802 cryptd_free_ahash +EXPORT_SYMBOL_GPL crypto/cryptd 0x5ecc709d cryptd_shash_desc +EXPORT_SYMBOL_GPL crypto/cryptd 0x651f6dab cryptd_alloc_ahash +EXPORT_SYMBOL_GPL crypto/cryptd 0x70cf650f cryptd_alloc_ablkcipher +EXPORT_SYMBOL_GPL crypto/cryptd 0x74565f55 cryptd_free_aead +EXPORT_SYMBOL_GPL crypto/cryptd 0x7585312e cryptd_free_ablkcipher +EXPORT_SYMBOL_GPL crypto/cryptd 0x880bba33 cryptd_ablkcipher_child +EXPORT_SYMBOL_GPL crypto/cryptd 0xab62ce26 cryptd_aead_child +EXPORT_SYMBOL_GPL crypto/cryptd 0xd3f57b0a cryptd_ahash_child +EXPORT_SYMBOL_GPL crypto/cryptd 0xd5594ddb cryptd_alloc_aead +EXPORT_SYMBOL_GPL crypto/crypto_null 0x21cd536a crypto_put_default_null_skcipher +EXPORT_SYMBOL_GPL crypto/crypto_null 0x785e3593 crypto_get_default_null_skcipher +EXPORT_SYMBOL_GPL crypto/des_generic 0xcfd9a2c0 des_ekey +EXPORT_SYMBOL_GPL crypto/des_generic 0xf8c78d49 __des3_ede_setkey +EXPORT_SYMBOL_GPL crypto/lrw 0x3864eb66 lrw_free_table +EXPORT_SYMBOL_GPL crypto/lrw 0x404c5607 lrw_crypt +EXPORT_SYMBOL_GPL crypto/lrw 0xcd074900 lrw_init_table +EXPORT_SYMBOL_GPL crypto/mcryptd 0x27dee588 shash_ahash_mcryptd_update +EXPORT_SYMBOL_GPL crypto/mcryptd 0x56c4cdb9 shash_ahash_mcryptd_digest +EXPORT_SYMBOL_GPL crypto/mcryptd 0x75ec0668 mcryptd_alloc_ahash +EXPORT_SYMBOL_GPL crypto/mcryptd 0x7f146e6c shash_ahash_mcryptd_final +EXPORT_SYMBOL_GPL crypto/mcryptd 0x8347667c mcryptd_flusher +EXPORT_SYMBOL_GPL crypto/mcryptd 0x8351fb17 mcryptd_shash_desc +EXPORT_SYMBOL_GPL crypto/mcryptd 0x855532de shash_ahash_mcryptd_finup +EXPORT_SYMBOL_GPL crypto/mcryptd 0xb07248d4 mcryptd_free_ahash +EXPORT_SYMBOL_GPL crypto/mcryptd 0xe2f1a20f mcryptd_ahash_child +EXPORT_SYMBOL_GPL crypto/rsa_generic 0xadc25bd8 rsa_parse_key +EXPORT_SYMBOL_GPL crypto/rsa_generic 0xf1b141d1 rsa_free_key +EXPORT_SYMBOL_GPL crypto/serpent_generic 0x5ddb33e9 __serpent_encrypt +EXPORT_SYMBOL_GPL crypto/serpent_generic 0x77b39cb4 __serpent_setkey +EXPORT_SYMBOL_GPL crypto/serpent_generic 0x8a1a99ad __serpent_decrypt +EXPORT_SYMBOL_GPL crypto/serpent_generic 0xfc2acc62 serpent_setkey +EXPORT_SYMBOL_GPL crypto/twofish_common 0x6c3229bb __twofish_setkey +EXPORT_SYMBOL_GPL crypto/twofish_common 0xc6993cac twofish_setkey +EXPORT_SYMBOL_GPL crypto/xts 0xd31f79ea xts_crypt +EXPORT_SYMBOL_GPL drivers/acpi/nfit 0x12004b04 acpi_nfit_attribute_groups +EXPORT_SYMBOL_GPL drivers/acpi/nfit 0xb661da27 acpi_nfit_init +EXPORT_SYMBOL_GPL drivers/acpi/sbshc 0x1c8984c7 acpi_smbus_unregister_callback +EXPORT_SYMBOL_GPL drivers/acpi/sbshc 0x87bd07bd acpi_smbus_register_callback +EXPORT_SYMBOL_GPL drivers/acpi/sbshc 0xb9a141b0 acpi_smbus_read +EXPORT_SYMBOL_GPL drivers/acpi/sbshc 0xe1372311 acpi_smbus_write +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x11721d0a ahci_shost_attrs +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x1c1d82a3 ahci_set_em_messages +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x2951f659 ahci_error_handler +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x31f6e3a4 ahci_reset_em +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x34cb8460 ahci_qc_issue +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x393230b0 ahci_kick_engine +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x4625e272 ahci_sdev_attrs +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x4896c37d ahci_host_activate +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x49ddc38e ahci_dev_classify +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x59248df1 ahci_start_engine +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x5ae5ee92 ahci_save_initial_config +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x5c596ad6 ahci_print_info +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x79baa065 ahci_pmp_retry_srst_ops +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x83e45a86 ahci_check_ready +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x8ba854ac ahci_em_messages +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x904747e3 ahci_fill_cmd_slot +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x9c1ffd54 ahci_ops +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xb4a6c7b1 ahci_init_controller +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xc25ec427 ahci_start_fis_rx +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xc2e48c55 ahci_do_softreset +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xc6493071 ahci_port_resume +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xd2ec5f0e ahci_stop_engine +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xea50dad3 ahci_ignore_sss +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xf32c6fef ahci_reset_controller +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x13d705b7 ahci_platform_disable_resources +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x3091ff77 ahci_platform_suspend +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x32aceb0d ahci_platform_disable_regulators +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x3c1d719c ahci_platform_enable_regulators +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x46425665 ahci_platform_init_host +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x4b959b15 ahci_platform_enable_clks +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x5fe14f66 ahci_platform_disable_clks +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x79c5a6bf ahci_platform_enable_resources +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x9da1d31f ahci_platform_suspend_host +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0xaf00aef7 ahci_platform_resume_host +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0xbcced24f ahci_platform_ops +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0xd71aebba ahci_platform_resume +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0xda47744a ahci_platform_get_resources +EXPORT_SYMBOL_GPL drivers/ata/pata_platform 0x716159b6 __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/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-spmi 0x0b4b06fb devm_regmap_init_spmi_base +EXPORT_SYMBOL_GPL drivers/base/regmap/regmap-spmi 0x59ff3484 devm_regmap_init_spmi_ext +EXPORT_SYMBOL_GPL drivers/base/regmap/regmap-spmi 0xbc0ad27d regmap_init_spmi_ext +EXPORT_SYMBOL_GPL drivers/base/regmap/regmap-spmi 0xcfcfb9a5 regmap_init_spmi_base +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x02b37117 bcma_core_disable +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x1163cfa0 bcma_chipco_chipctl_maskset +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x246e1fd6 bcma_chipco_gpio_out +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x2d82cc74 bcma_driver_unregister +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x4153d7a1 bcma_pmu_get_bus_clock +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x60ebe1da bcma_chipco_regctl_maskset +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x62a65dda bcma_core_set_clockmode +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x716e4373 bcma_host_pci_irq_ctl +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x740fc834 bcma_chipco_b_mii_write +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x7a682010 __bcma_driver_register +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x87ddd090 bcma_pmu_spuravoid_pllupdate +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x8f327572 bcma_core_enable +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x97bc77a1 bcma_chipco_pll_write +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x9b6e3f12 bcma_chipco_get_alp_clock +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xa7574c0b bcma_core_is_enabled +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xbb2bad1d bcma_chipco_pll_maskset +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xbc7621a0 bcma_chipco_gpio_control +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xc99aa7cb bcma_chipco_gpio_outen +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xd3e66ea4 bcma_core_pci_power_save +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xd9014afd bcma_host_pci_up +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xdc1cf9e6 bcma_chipco_pll_read +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xe44f7647 bcma_find_core_unit +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xec785275 bcma_host_pci_down +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xf39b606c bcma_core_pll_ctl +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0x2053a5f0 btbcm_initialize +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0x7d4e5f1e btbcm_setup_apple +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0xd9761708 btbcm_setup_patchram +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0xe2ba6c82 btbcm_set_bdaddr +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0xea6288d9 btbcm_check_bdaddr +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0xf98ab243 btbcm_finalize +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0xa0811f10 btintel_set_bdaddr +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0xe0ac65b1 btintel_check_bdaddr +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x018294e8 btmrvl_process_event +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x43ef2ecc btmrvl_enable_hs +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x53eadeb7 btmrvl_add_card +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x57ebc149 btmrvl_check_evtpkt +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x61945606 btmrvl_enable_ps +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x8e55e3ae btmrvl_remove_card +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xc114d7b7 btmrvl_register_hdev +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xc5f5b0d5 btmrvl_pscan_window_reporting +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xc9f28955 btmrvl_interrupt +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xec8b5ace btmrvl_send_module_cfg_cmd +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xf4a2b29e btmrvl_send_hscfg_cmd +EXPORT_SYMBOL_GPL drivers/bluetooth/btrtl 0x528f4d77 btrtl_setup_realtek +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 0x4824dc02 ccp_enqueue_cmd +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0x11b619a6 adf_dev_start +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0x1562054c adf_cfg_add_key_value_param +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0x2401e65f adf_disable_aer +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0x3031e9bc adf_cfg_dev_add +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0x3da37124 adf_devmgr_add_dev +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0x4139f80b adf_dev_stop +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0x4c12ea06 adf_response_handler +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0x4cbfd15b adf_cfg_dev_remove +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0x51ff0a97 adf_enable_aer +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0x65c58d47 adf_devmgr_rm_dev +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0x7b276baf adf_dev_init +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0x7c7206f3 adf_dev_shutdown +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0x8db072df adf_service_unregister +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0x9e8036de adf_devmgr_pci_to_accel_dev +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0xa328ba75 adf_service_register +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0xa7aec9c3 adf_cleanup_etr_data +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0xbe466d46 adf_init_etr_data +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0xc9d3802f adf_cfg_section_add +EXPORT_SYMBOL_GPL drivers/dca/dca 0x01a33ab9 dca_unregister_notify +EXPORT_SYMBOL_GPL drivers/dca/dca 0x1ade4115 free_dca_provider +EXPORT_SYMBOL_GPL drivers/dca/dca 0x31a2c8df dca_get_tag +EXPORT_SYMBOL_GPL drivers/dca/dca 0x52f036b1 register_dca_provider +EXPORT_SYMBOL_GPL drivers/dca/dca 0x57665d80 dca3_get_tag +EXPORT_SYMBOL_GPL drivers/dca/dca 0x75727d8f unregister_dca_provider +EXPORT_SYMBOL_GPL drivers/dca/dca 0xac34ecec dca_register_notify +EXPORT_SYMBOL_GPL drivers/dca/dca 0xb884b79e dca_remove_requester +EXPORT_SYMBOL_GPL drivers/dca/dca 0xcae0af80 alloc_dca_provider +EXPORT_SYMBOL_GPL drivers/dca/dca 0xf73842f6 dca_add_requester +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0x20da8d2b dw_dma_disable +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0x22aec85d dw_dma_probe +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0x280e9f87 dw_dma_filter +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0x66ae52b8 dw_dma_remove +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0xcd014380 dw_dma_enable +EXPORT_SYMBOL_GPL drivers/dma/hsu/hsu_dma 0x21a10556 hsu_dma_irq +EXPORT_SYMBOL_GPL drivers/dma/hsu/hsu_dma 0x371a7a23 hsu_dma_remove +EXPORT_SYMBOL_GPL drivers/dma/hsu/hsu_dma 0xcb0b6fdb hsu_dma_probe +EXPORT_SYMBOL_GPL drivers/dma/virt-dma 0x1e0c7dc9 vchan_dma_desc_free_list +EXPORT_SYMBOL_GPL drivers/dma/virt-dma 0x5a14d79c vchan_find_desc +EXPORT_SYMBOL_GPL drivers/dma/virt-dma 0x6ea037ad vchan_init +EXPORT_SYMBOL_GPL drivers/dma/virt-dma 0xeac95893 vchan_tx_submit +EXPORT_SYMBOL_GPL drivers/edac/amd64_edac_mod 0xd0c703c0 amd64_get_dram_hole_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x0117aa20 edac_mc_del_mc +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x02f2d2f0 edac_mc_handle_error +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x0b7d20ac find_mci_by_dev +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x0c32ff8a edac_pci_alloc_index +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x0ed23acc edac_device_handle_ce +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x1f26f2c8 edac_mc_free +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x2c8dd6b8 edac_mem_types +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x32f81f31 edac_device_handle_ue +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x37dfa16e edac_device_alloc_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x4d8c2cb2 edac_pci_create_generic_ctl +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x5a896359 edac_pci_reset_delay_period +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x5d059938 edac_mc_alloc +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x6e3ff83a edac_device_alloc_index +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x75aa510f edac_pci_free_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x7f4f3e90 edac_mc_add_mc_with_groups +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x7f4fa64c edac_pci_add_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x87bc5b25 edac_device_add_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x8b5e9849 edac_raw_mc_handle_error +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x91bf7d88 edac_pci_handle_pe +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x965b9920 edac_device_free_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x99b99427 edac_pci_del_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x9cd01963 edac_mc_find_csrow_by_page +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xaa6770dd edac_device_del_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xaf7a00d1 edac_pci_alloc_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xb699da7c edac_pci_release_generic_ctl +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xc0dcb59e edac_layer_name +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xf447ad62 edac_pci_handle_npe +EXPORT_SYMBOL_GPL drivers/edac/edac_mce_amd 0x14878009 amd_report_gart_errors +EXPORT_SYMBOL_GPL drivers/edac/edac_mce_amd 0x1d34e996 pp_msgs +EXPORT_SYMBOL_GPL drivers/edac/edac_mce_amd 0x21626132 amd_register_ecc_decoder +EXPORT_SYMBOL_GPL drivers/edac/edac_mce_amd 0x737912b3 amd_unregister_ecc_decoder +EXPORT_SYMBOL_GPL drivers/edac/edac_mce_amd 0xb30b7e56 amd_decode_mce +EXPORT_SYMBOL_GPL drivers/firewire/firewire-core 0xf4ade51f fw_card_release +EXPORT_SYMBOL_GPL drivers/gpio/gpio-generic 0x84be2ef1 bgpio_remove +EXPORT_SYMBOL_GPL drivers/gpio/gpio-generic 0x9f628502 bgpio_init +EXPORT_SYMBOL_GPL drivers/gpio/gpio-max730x 0x1bbbf69b __max730x_probe +EXPORT_SYMBOL_GPL drivers/gpio/gpio-max730x 0x2795f615 __max730x_remove +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x5ab63faf drm_class_device_register +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x5ca02fc5 drm_class_device_unregister +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xf13144d2 drm_do_get_edid +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 0xe7237b0b i915_gpu_turbo_disable +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0x6adf436b ttm_prime_fd_to_handle +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0x8926d023 ttm_dma_unpopulate +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0xce36343e ttm_prime_handle_to_fd +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0xfef32b33 ttm_dma_populate +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0xff50b4f8 ttm_dma_page_alloc_debugfs +EXPORT_SYMBOL_GPL drivers/hid/hid 0x05495392 hid_debug +EXPORT_SYMBOL_GPL drivers/hid/hid 0x075d020f hid_dump_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x0ab341be __hid_register_driver +EXPORT_SYMBOL_GPL drivers/hid/hid 0x0ab98207 hid_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x1878d635 __hid_request +EXPORT_SYMBOL_GPL drivers/hid/hid 0x250a61a6 hidinput_find_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0x289105e1 hid_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x37c2e2d3 hid_allocate_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0x37eaf537 hid_unregister_driver +EXPORT_SYMBOL_GPL drivers/hid/hid 0x398923c5 hidraw_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x3bd56265 hid_check_keys_pressed +EXPORT_SYMBOL_GPL drivers/hid/hid 0x4226c736 hidinput_report_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0x4906a967 hid_snto32 +EXPORT_SYMBOL_GPL drivers/hid/hid 0x49557d4e hid_field_extract +EXPORT_SYMBOL_GPL drivers/hid/hid 0x5ff6d018 hidinput_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x7582a6b3 hid_report_raw_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0x7a3f8bf2 hid_alloc_report_buf +EXPORT_SYMBOL_GPL drivers/hid/hid 0x7e4a2fcd hid_register_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x89184816 hid_add_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0x981b5f6b hid_open_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0xa0c825dc hidinput_get_led_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0xa14b3170 hid_set_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0xad9514b3 hid_dump_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0xbb3231b8 hid_dump_input +EXPORT_SYMBOL_GPL drivers/hid/hid 0xc60e271e hid_resolv_usage +EXPORT_SYMBOL_GPL drivers/hid/hid 0xccdabafc hid_debug_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0xd36c4a04 hidinput_calc_abs_res +EXPORT_SYMBOL_GPL drivers/hid/hid 0xd3ce11f4 hidinput_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0xe05b66d9 hid_validate_values +EXPORT_SYMBOL_GPL drivers/hid/hid 0xe156780b hid_input_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0xe5cb3e3d hidraw_report_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0xe70cb954 hidraw_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0xee42c177 hid_dump_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0xefedb16c hidinput_count_leds +EXPORT_SYMBOL_GPL drivers/hid/hid 0xf54dd4a0 hid_output_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0xf88d9ded hid_parse_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0xf9d98691 hid_destroy_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0xfe4cc24e hid_ignore +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat 0x0bfed984 roccat_connect +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat 0x2f622ea1 roccat_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat 0x8c4181ec roccat_report_event +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x1948f636 roccat_common2_send +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x1d52973b roccat_common2_device_init_struct +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x44b6df05 roccat_common2_receive +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x6b1791e1 roccat_common2_sysfs_write +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x76364757 roccat_common2_send_with_status +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0xcb2c2279 roccat_common2_sysfs_read +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x05f0eecf hid_sensor_get_usage_index +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x0d8b1c8c sensor_hub_device_close +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x21917229 sensor_hub_input_attr_get_raw_value +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0xaf1f588e sensor_hub_device_open +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0xb40fbb5d sensor_hub_remove_callback +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0xd60fcc0f sensor_hub_register_callback +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0xdaad6e1a sensor_hub_set_feature +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0xe05dbbbd sensor_hub_get_feature +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0xe4d1a37f sensor_hub_input_get_attribute_info +EXPORT_SYMBOL_GPL drivers/hid/usbhid/usbhid 0x01fd453e usbhid_lookup_quirk +EXPORT_SYMBOL_GPL drivers/hid/usbhid/usbhid 0xec2ab7bc hiddev_hid_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x135e3251 hsi_remove_client +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x2da8e400 hsi_get_channel_id_by_name +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x703241de hsi_put_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x719e14a1 hsi_async +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x7ef9da96 hsi_register_port_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x7f557d22 hsi_alloc_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x90a17545 hsi_alloc_msg +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x958b9fd0 hsi_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x9732c064 hsi_unregister_port_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xb3dc654a hsi_new_client +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xb4d80d4c hsi_register_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xb9f03c53 hsi_unregister_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xc3940527 hsi_release_port +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xc3f7574f hsi_port_unregister_clients +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xe918b8e3 hsi_claim_port +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xf61388db hsi_register_client_driver +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xfcd85353 hsi_free_msg +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x29f3e5e0 vmbus_recvpacket_raw +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x2f4f6fc0 vmbus_driver_unregister +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x358fafa5 vmbus_prep_negotiate_resp +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x45715372 vmbus_allocate_mmio +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x46a417ca vmbus_proto_version +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x57c5068f vmbus_close +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x5c9f92e6 vmbus_set_sc_create_callback +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x67114666 vmbus_open +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x7f556716 __vmbus_driver_register +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x892a11c1 vmbus_establish_gpadl +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x8f8060df vmbus_teardown_gpadl +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x9e08fffe vmbus_sendpacket_mpb_desc +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0xc5791ea8 vmbus_sendpacket_pagebuffer +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0xc6e8a8af vmbus_sendpacket_multipagebuffer +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0xdf4b6ed4 vmbus_get_outgoing_channel +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0xe0d179e3 vmbus_are_subchannels_present +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0xee94b1cf vmbus_sendpacket_pagebuffer_ctl +EXPORT_SYMBOL_GPL drivers/hwmon/adt7x10 0x346c1e19 adt7x10_dev_pm_ops +EXPORT_SYMBOL_GPL drivers/hwmon/adt7x10 0x70fa8cf1 adt7x10_remove +EXPORT_SYMBOL_GPL drivers/hwmon/adt7x10 0xc06ed613 adt7x10_probe +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x13e2ad09 pmbus_check_byte_register +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x29b34ce4 pmbus_regulator_ops +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x44c36b0e pmbus_read_byte_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x50cb0523 pmbus_do_probe +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x555ffa70 pmbus_check_word_register +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x5ff13479 pmbus_clear_cache +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x92d4c27d pmbus_read_word_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x9cf06ff7 pmbus_write_word_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xb4a0482b pmbus_clear_faults +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xc0a886cd pmbus_write_byte_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xcfed8807 pmbus_write_byte +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xd2e720c5 pmbus_update_byte_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xd9155303 pmbus_do_remove +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xdfa8b962 pmbus_set_page +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xe460c453 pmbus_get_driver_info +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x3532bc37 i2c_dw_is_enabled +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x45d2580d i2c_dw_disable_int +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x5bb1170b i2c_dw_isr +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x7a450c69 i2c_dw_enable +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x87d6c76b i2c_dw_read_comp_param +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x89a7de8c i2c_dw_init +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x93eb18ca i2c_dw_disable +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x99cb8ef7 i2c_dw_func +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0xa2cdf1b3 i2c_dw_clear_int +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0xff1cb440 i2c_dw_xfer +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-nforce2 0x4e4fba6b nforce2_smbus +EXPORT_SYMBOL_GPL drivers/i2c/i2c-mux 0x6464f1b1 i2c_add_mux_adapter +EXPORT_SYMBOL_GPL drivers/i2c/i2c-mux 0x9e0aeffc i2c_del_mux_adapter +EXPORT_SYMBOL_GPL drivers/i2c/i2c-smbus 0x1f89beb9 i2c_handle_smbus_alert +EXPORT_SYMBOL_GPL drivers/i2c/i2c-smbus 0x3a798cb3 i2c_setup_smbus_alert +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x0bc65f05 ad_sd_validate_trigger +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x187aa4f5 ad_sd_read_reg +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x20e2260a ad_sd_set_comm +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x2a462d3a ad_sd_calibrate_all +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x8f4ee051 ad_sd_write_reg +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x98c41fbf ad_sd_setup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x9dd8eb04 ad_sigma_delta_single_conversion +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xe0160eea ad_sd_init +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xf1a0f28d ad_sd_cleanup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/adc/twl4030-madc 0x4362dc66 twl4030_get_madc_conversion +EXPORT_SYMBOL_GPL drivers/iio/adc/twl4030-madc 0xb1be4a75 twl4030_madc_conversion +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x039ccbb8 adis_probe_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x0e0d1ca1 adis_check_status +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x3225c0c8 adis_update_scan_mode +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x39565522 adis_setup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x3b950b66 adis_initial_startup +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x4a26e96a adis_remove_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x658c6ddc adis_reset +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x7d5ed407 adis_init +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x924ac73d adis_cleanup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x9ab73b2e adis_read_reg +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xcca877de adis_single_conversion +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xea3502fc adis_write_reg +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x08ff4bfa iio_scan_mask_query +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x0aacd43d iio_validate_scan_mask_onehot +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x267c0508 iio_channel_release_all_cb +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x26eac2f2 iio_read_channel_average_raw +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x26f6b499 iio_str_to_fixpoint +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x293194b4 iio_read_channel_raw +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x2a1fab3c iio_channel_stop_all_cb +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x2b2bc542 iio_update_buffers +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x3ab79764 devm_iio_device_free +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x3d51867e devm_iio_device_alloc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x5f9b66f7 iio_enum_write +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x63bf61a4 devm_iio_trigger_free +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x73877bf0 iio_map_array_register +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x7a711aef iio_channel_start_all_cb +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x84fde2c6 devm_iio_trigger_alloc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x8e20f248 iio_enum_read +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x94ab48e4 iio_map_array_unregister +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x9bbecd82 iio_enum_available_read +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xa4aae40e iio_push_to_buffers +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xb010f45f iio_alloc_pollfunc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xb64fe49a devm_iio_device_unregister +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xbef47e5b iio_read_channel_scale +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xc2bb705c devm_iio_device_register +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xc77f7d56 iio_get_channel_type +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xc908f2cb iio_channel_get_all_cb +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xca295a2b iio_update_demux +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xca5d727c iio_convert_raw_to_processed +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xcdc88484 iio_channel_cb_get_channels +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xcf27dcab iio_read_channel_processed +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xe47bacba iio_write_channel_raw +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xe483ec39 iio_dealloc_pollfunc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xe4f4f88f iio_buffer_get +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xe8c59f9e iio_channel_get +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xf09a143b iio_buffer_put +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xf4bfe4ee iio_channel_release_all +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xf75219c8 iio_channel_get_all +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xff7f5ae3 iio_channel_release +EXPORT_SYMBOL_GPL drivers/infiniband/core/ib_core 0xdbd019c4 ib_wq +EXPORT_SYMBOL_GPL drivers/infiniband/hw/ipath/ib_ipath 0x1514b2b2 ipath_debug +EXPORT_SYMBOL_GPL drivers/input/ff-memless 0x0a4b83a2 input_ff_create_memless +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 0x90eda1bc adxl34x_probe +EXPORT_SYMBOL_GPL drivers/input/misc/adxl34x 0xe4586827 adxl34x_resume +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp4_core 0x06be4a82 cyttsp4_pm_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp4_core 0x26f229ba cyttsp4_probe +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp4_core 0xb4a52048 cyttsp4_remove +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_core 0x0c3382e0 cyttsp_probe +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_core 0x55c74b1d cyttsp_pm_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_core 0xf73c68e7 cyttsp_remove +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_i2c_common 0xbf11274b cyttsp_i2c_read_block_data +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_i2c_common 0xc639d181 cyttsp_i2c_write_block_data +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x1886694d wm97xx_reg_write +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x3287b2b4 wm97xx_register_mach_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x350c3fa8 wm97xx_set_gpio +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x3d5eff0e wm97xx_get_gpio +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x62cc841e wm9713_codec +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x6969a79a wm97xx_unregister_mach_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xae668480 wm9712_codec +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xb3d899da wm9705_codec +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xc2528499 wm97xx_config_gpio +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xe0eacf8e wm97xx_set_suspend_mode +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xf1d7cece wm97xx_read_aux_adc +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xf7c9f0b8 wm97xx_reg_read +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x055ab4e0 ipack_get_device +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x2b9b21d1 ipack_driver_unregister +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x315bf8e2 ipack_device_add +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x672b30c4 ipack_bus_unregister +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x980f70e2 ipack_device_del +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0xd43080ea ipack_put_device +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0xdaabf256 ipack_driver_register +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0xdb5579b0 ipack_bus_register +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0xe33dbc87 ipack_device_init +EXPORT_SYMBOL_GPL drivers/isdn/capi/kernelcapi 0x23359aff unregister_capictr_notifier +EXPORT_SYMBOL_GPL drivers/isdn/capi/kernelcapi 0xce1414b2 register_capictr_notifier +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x0160b732 gigaset_skb_rcvd +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x0499f52a gigaset_m10x_input +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x0daf4432 gigaset_add_event +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x14f4d744 gigaset_freecs +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x19bfccad gigaset_isdn_rcv_err +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x1fe480cc gigaset_if_receive +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x292283a3 gigaset_freedriver +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x2f9c44bb gigaset_start +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x385d7b0a gigaset_m10x_send_skb +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x454aa44f gigaset_debuglevel +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x45c1a929 gigaset_blockdriver +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x56440c99 gigaset_initdriver +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x77b76fe4 gigaset_skb_sent +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x828ba14b gigaset_fill_inbuf +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x9d1d9f5f gigaset_stop +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xa3151853 gigaset_dbg_buffer +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xe4c7ad6c gigaset_initcs +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xe7c97ce2 gigaset_shutdown +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xec230419 gigaset_handle_modem_response +EXPORT_SYMBOL_GPL drivers/leds/dell-led 0x86fd1ffb dell_app_wmi_led_set +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0x1ff92764 led_classdev_flash_register +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0x864f6a1c led_update_flash_brightness +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0x8d02604c led_classdev_flash_unregister +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0xc98cf8e1 led_set_flash_timeout +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0xd4380b93 led_set_flash_brightness +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0xe35b0d77 led_get_flash_fault +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/mcb/mcb 0x06a4a186 mcb_request_mem +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x0f70d7dc mcb_bus_get +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x3d749764 mcb_bus_add_devices +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x42917e4a mcb_free_dev +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x45d0cce9 mcb_get_irq +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x5894453a mcb_bus_put +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x5ac33b1b mcb_alloc_bus +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x8bf52ac0 mcb_release_mem +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x9ada7129 mcb_unregister_driver +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0xc3a55a38 mcb_alloc_dev +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0xc7fa8f3a mcb_release_bus +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0xde2e1a28 __mcb_register_driver +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0xdf231996 mcb_device_register +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0xf0949c4b chameleon_parse_cells +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x0ec17d44 __tracepoint_bcache_bypass_congested +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x26062738 __tracepoint_bcache_alloc_fail +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x2fc380ce __tracepoint_bcache_invalidate +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x40c27b88 __tracepoint_bcache_cache_insert +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x4c49fc16 __tracepoint_bcache_btree_node_split +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x51a15737 __tracepoint_bcache_btree_set_root +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x616b6217 __tracepoint_bcache_read +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x6907ac0d __tracepoint_bcache_request_end +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x7be42a1c __tracepoint_bcache_journal_replay_key +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x7e532a71 __tracepoint_bcache_btree_cache_cannibalize +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x914361f4 __tracepoint_bcache_journal_entry_full +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x9272fb0f __tracepoint_bcache_read_retry +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x938cc2b2 __tracepoint_bcache_btree_insert_key +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xa649dd21 __tracepoint_bcache_btree_node_alloc +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xb157059f __tracepoint_bcache_gc_copy_collision +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xb317649e __tracepoint_bcache_btree_node_alloc_fail +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xb493772a __tracepoint_bcache_gc_start +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xb834c124 __tracepoint_bcache_btree_write +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xbb1fc0a4 __tracepoint_bcache_journal_full +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xbc4fcb1e __tracepoint_bcache_write +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xc1474d91 __tracepoint_bcache_btree_read +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xc379085a __tracepoint_bcache_bypass_sequential +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xc5aed8ad __tracepoint_bcache_writeback_collision +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xc7eda602 __tracepoint_bcache_btree_node_compact +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xce055cbe __tracepoint_bcache_btree_gc_coalesce +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xe20fe821 __tracepoint_bcache_gc_end +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xe24daf87 __tracepoint_bcache_gc_copy +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xe2ed0930 __tracepoint_bcache_btree_node_free +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xea2303e0 __tracepoint_bcache_journal_write +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xef1156ee __tracepoint_bcache_writeback +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xfc131205 __tracepoint_bcache_request_start +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x17dd39d6 dm_deferred_set_create +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x1ce9275c dm_cell_release_no_holder +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x2404de34 dm_cell_error +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x2eb01e04 dm_deferred_set_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x557e3ea1 dm_bio_prison_alloc_cell +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x6791a44e dm_deferred_entry_dec +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x691b627b dm_bio_detain +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x753e20b2 dm_bio_prison_create +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xa710a9c9 dm_cell_visit_release +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xac9736c6 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 0xeb56df01 dm_cell_release +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xf3ff6ed6 dm_get_cell +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xffe3daf3 dm_cell_promote_or_release +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x0ad0dc4f dm_bufio_mark_buffer_dirty +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x610a665e dm_bufio_client_create +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x6aba7f5e dm_bufio_get_block_number +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x6d3f57bd dm_bufio_get_client +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 0x9310ba06 dm_bufio_release_move +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x9c256008 dm_bufio_get_device_size +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xa1d2413a dm_bufio_read +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xa448e19f dm_bufio_prefetch +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xa82b2066 dm_bufio_write_dirty_buffers +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xafbda3f3 dm_bufio_new +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xc9a3422d dm_bufio_write_dirty_buffers_async +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xcbb1bae2 dm_bufio_get +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xd4bddf5c dm_bufio_issue_flush +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-cache 0x2af7f5b9 dm_cache_policy_get_version +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x4e0600e3 dm_cache_policy_unregister +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x92ba44de dm_cache_policy_get_name +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xb08563a0 dm_cache_policy_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xc8ec30e5 dm_cache_policy_register +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xd0ae47ed dm_cache_policy_create +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xd23571ac dm_cache_policy_get_hint_size +EXPORT_SYMBOL_GPL drivers/md/dm-multipath 0x1b9a4a58 dm_unregister_path_selector +EXPORT_SYMBOL_GPL drivers/md/dm-multipath 0x37045202 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 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 0x4430764e dm_rh_region_to_sector +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x45ab972a dm_rh_dec +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x51442e11 dm_rh_delay +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 0xa53387c7 dm_rh_flush +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xa68e1f06 dm_rh_get_state +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xa83588eb dm_rh_recovery_end +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xaa8d4d3a dm_rh_bio_to_region +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xb1c8e3b8 dm_rh_dirty_log +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xb2fe94c1 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 0xc65a8bf4 dm_rh_mark_nosync +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xc9352461 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 0xfad9d53a dm_rh_get_region_size +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xfc62ef4e dm_rh_get_region_key +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 0x01445176 dm_btree_find_highest_key +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x0604db1b dm_btree_remove_leaves +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x17c36f29 dm_bm_checksum +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x1e3f728d dm_block_data +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x2025e954 dm_array_info_init +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x24fa6664 dm_bitset_set_bit +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x2c112836 dm_block_location +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 0x32b5f546 dm_array_empty +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 0x3ad0f55b dm_bm_flush +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x40f7bd91 dm_tm_inc +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x42dbdfc3 dm_tm_read_lock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x4360913e dm_btree_find_lowest_key +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x49b35849 dm_sm_disk_create +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x55b4bd4d dm_tm_create_with_sm +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x5aed1dd7 dm_bitset_flush +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x5e6aea80 dm_btree_walk +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x62c1b9ee dm_array_walk +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 0x72289260 dm_block_manager_destroy +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x7657e859 dm_bitset_clear_bit +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 0x80c89b3d dm_tm_unlock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x827a42f4 dm_tm_open_with_sm +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x832bf228 dm_array_del +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x858c8d94 dm_array_set_value +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x89f1e1cc dm_btree_insert_notify +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 0x966a8838 dm_btree_lookup +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 0x9f624559 dm_sm_disk_open +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xa629207d dm_block_manager_create +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xa87c5b4d dm_array_resize +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xab96bd2d dm_bitset_test_bit +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xaee02382 dm_btree_empty +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xafeda29f dm_bm_write_lock_zero +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xb7bad799 dm_bm_unlock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xb9a6ecf8 dm_tm_dec +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xba47c03a dm_bitset_del +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xbd50ebbb dm_btree_del +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xca40abd5 dm_btree_insert +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xd041d62b dm_array_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 0xd29923fb dm_tm_shadow_block +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xed1e1f96 dm_btree_remove +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xed58cfa1 dm_bitset_empty +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xf12ec3cd dm_disk_bitset_init +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xf375d009 dm_bm_write_lock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xf5455120 dm_bm_read_lock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xffff2ac3 dm_bitset_resize +EXPORT_SYMBOL_GPL drivers/media/common/b2c2/b2c2-flexcop 0x66c0289a b2c2_flexcop_debug +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x12bba881 saa7146_i2c_adapter_prepare +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xaff66786 saa7146_unregister_extension +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xb396ced1 saa7146_setgpio +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xc1039251 saa7146_vfree_destroy_pgtable +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xcb875893 saa7146_pgtable_free +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xd5cf91e1 saa7146_register_extension +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xd754b91d saa7146_pgtable_alloc +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xe3cd9b5c saa7146_debug +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xe8f1f690 saa7146_vmalloc_build_pgtable +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xff64e3aa saa7146_pgtable_build_single +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xff8c27e5 saa7146_wait_for_debi_done +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x3d2b9450 saa7146_vv_init +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x4e0f94bf saa7146_vv_release +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x6c629e75 saa7146_register_device +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x7ca03ace saa7146_stop_preview +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x85d1eadb saa7146_unregister_device +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0xd1bdbb0f saa7146_set_hps_source_and_sync +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0xd8333ae6 saa7146_start_preview +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x1ab8a694 sms_board_lna_control +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x1f62b45a smscore_register_hotplug +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x21e36bf2 smscore_registry_getmode +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x3178aadb smscore_start_device +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x37d91069 smsendian_handle_tx_message +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x3fa481ca smscore_putbuffer +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x45284ae9 smsendian_handle_rx_message +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x474cf6a2 sms_board_power +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x52fef063 smscore_get_device_mode +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x5826e715 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 0x844539ae sms_get_board +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x868dfa67 smscore_register_device +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x8a15469f smscore_onresponse +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x99a81ab3 smsclient_sendrequest +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x9c2225ed smscore_translate_msg +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xa2f41326 sms_board_led_feedback +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xa7250adb smscore_unregister_device +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xbbdb5c42 smscore_unregister_client +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xbd15f7eb sms_board_setup +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xc254bb6f smscore_set_board_id +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xcd63921c smscore_get_board_id +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xdcb1963c smscore_unregister_hotplug +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xde1295d5 sms_board_event +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xf564f035 smscore_register_client +EXPORT_SYMBOL_GPL drivers/media/dvb-frontends/as102_fe 0xc6507e41 as102_attach +EXPORT_SYMBOL_GPL drivers/media/dvb-frontends/cx24117 0xe9473841 cx24117_attach +EXPORT_SYMBOL_GPL drivers/media/dvb-frontends/tda18271c2dd 0x03d6a960 tda18271c2dd_attach +EXPORT_SYMBOL_GPL drivers/media/media 0x0fa69fda media_entity_setup_link +EXPORT_SYMBOL_GPL drivers/media/media 0x30cfb045 media_entity_cleanup +EXPORT_SYMBOL_GPL drivers/media/media 0x318491b6 media_entity_create_link +EXPORT_SYMBOL_GPL drivers/media/media 0x3c6bef93 media_entity_pipeline_start +EXPORT_SYMBOL_GPL drivers/media/media 0x553cba8f media_entity_put +EXPORT_SYMBOL_GPL drivers/media/media 0x568ce0ae media_entity_remote_pad +EXPORT_SYMBOL_GPL drivers/media/media 0x5fdc7a22 media_entity_get +EXPORT_SYMBOL_GPL drivers/media/media 0x9370b618 __media_device_register +EXPORT_SYMBOL_GPL drivers/media/media 0xbaf63d0d media_device_unregister_entity +EXPORT_SYMBOL_GPL drivers/media/media 0xc5f29083 media_entity_init +EXPORT_SYMBOL_GPL drivers/media/media 0xca67df0e media_entity_graph_walk_start +EXPORT_SYMBOL_GPL drivers/media/media 0xcb81792c __media_entity_remove_links +EXPORT_SYMBOL_GPL drivers/media/media 0xd8943cd5 media_device_register_entity +EXPORT_SYMBOL_GPL drivers/media/media 0xd980ae3a media_entity_find_link +EXPORT_SYMBOL_GPL drivers/media/media 0xdad67a90 media_entity_pipeline_stop +EXPORT_SYMBOL_GPL drivers/media/media 0xe091a5fe media_device_unregister +EXPORT_SYMBOL_GPL drivers/media/media 0xe44fee39 media_entity_remove_links +EXPORT_SYMBOL_GPL drivers/media/media 0xef9e37d3 media_entity_graph_walk_next +EXPORT_SYMBOL_GPL drivers/media/pci/cx88/cx88xx 0x849f79f9 cx88_setup_xc3028 +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x10ed194b mantis_dvb_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x1c4a522d mantis_dma_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x217e160e mantis_ca_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x251f38c3 mantis_uart_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x2f5f88e9 mantis_frontend_soft_reset +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x314fd4fe mantis_dma_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x33043e17 mantis_stream_control +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x3de89f98 mantis_dvb_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x661641c6 mantis_input_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x67ae9dcc mantis_get_mac +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x79e7bfa7 mantis_ca_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x7bcdd6eb mantis_uart_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xd3cc20af mantis_pci_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xd6496ca2 mantis_input_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xd714cd01 mantis_frontend_power +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xde182123 mantis_i2c_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xf13b4fa0 mantis_gpio_set_bits +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xf31da7f0 mantis_i2c_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xf5b7defb mantis_pci_exit +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x108f115b saa7134_s_tuner +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x1b2ba7a9 saa7134_s_input +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x1cab5313 saa7134_querystd +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x35a4c46d saa7134_ts_qops +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x53c5b1db saa7134_ts_queue_setup +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x5c43e44a saa7134_ts_start_streaming +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x6b4a96e9 saa7134_enum_input +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x6e90cf9d saa7134_querycap +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x77d3a60f saa7134_g_std +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x7e296318 saa7134_ts_buffer_prepare +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x865dfb3b saa7134_g_tuner +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x8deb9f09 saa7134_ts_stop_streaming +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xac1ed7bc saa7134_g_input +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xb26e4b8a saa7134_s_frequency +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xc9cc6e1e saa7134_vb2_buffer_queue +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xda18480a saa7134_stop_streaming +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xfad95704 saa7134_s_std +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xfba2cb7e saa7134_ts_buffer_init +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xfe97f232 saa7134_g_frequency +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x2fbe77ad ttpci_budget_debiwrite +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x7948c222 budget_debug +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x8794b337 ttpci_budget_deinit +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x97d46338 ttpci_budget_debiread +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0xc7017f7c ttpci_budget_init +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0xccba6ea8 ttpci_budget_init_hooks +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0xdabb9618 ttpci_budget_irq10_handler +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0xfe139f06 ttpci_budget_set_video_port +EXPORT_SYMBOL_GPL drivers/media/radio/shark2 0xc3f41e63 radio_tea5777_init +EXPORT_SYMBOL_GPL drivers/media/radio/shark2 0xe1e2b00a radio_tea5777_exit +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x1a34840f ir_raw_event_handle +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x352707bd rc_keydown +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x3536303b rc_open +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x3eae3481 rc_close +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x3f21e497 rc_register_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x47e6ec8e rc_unregister_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x4acf9a66 ir_raw_event_store_edge +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x553efb91 rc_core_debug +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x555fe69a rc_keyup +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x5c73151d rc_allocate_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x6ea41611 ir_raw_event_set_idle +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x832a803f rc_map_unregister +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x9b793152 rc_keydown_notimeout +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x9cc556a5 rc_repeat +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xa93ae45b rc_free_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xaf23c6cd rc_map_get +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xbfe5bf6c rc_g_keycode_from_table +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xcd321cc7 ir_raw_event_store +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xd4c2d747 ir_raw_event_store_with_filter +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xf27c1ca7 rc_map_register +EXPORT_SYMBOL_GPL drivers/media/tuners/mt2063 0xabf51eee mt2063_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/mt20xx 0xc6aa4dcc microtune_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/mxl5007t 0xcea72fd5 mxl5007t_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/r820t 0x8fd0cecc r820t_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda18271 0x096eb28b tda18271_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda827x 0x574521df tda827x_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda8290 0x6352c90c tda829x_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda8290 0x767e4a06 tda829x_probe +EXPORT_SYMBOL_GPL drivers/media/tuners/tda9887 0x928d290f tda9887_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5761 0x12d54974 tea5761_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5761 0xf8f08767 tea5761_autodetection +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5767 0x79dd2471 tea5767_autodetection +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5767 0xfb5be32a tea5767_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tuner-simple 0x2d0ebfaf simple_tuner_attach +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x017ea7c7 cx231xx_tuner_callback +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x035f53ed cx231xx_init_vbi_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x11050bd3 cx231xx_dev_init +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x164396e6 cx231xx_set_alt_setting +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x232d4d4b cx231xx_disable656 +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x357af19f cx231xx_uninit_bulk +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x36d8d96e cx231xx_uninit_vbi_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x46e9dab5 cx231xx_enable_i2c_port_3 +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x490b876b cx231xx_dev_uninit +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x5eeca9b1 cx231xx_set_mode +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x6685c102 cx231xx_init_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x7044f3a2 is_fw_load +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x73490835 cx231xx_send_usb_command +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x76f190d4 cx231xx_unmute_audio +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x8c74e787 cx231xx_send_gpio_cmd +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x8e109e46 cx231xx_init_bulk +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x9e070c87 cx231xx_capture_start +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x9f21775b cx231xx_get_i2c_adap +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xb22ac3b2 cx231xx_demod_reset +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xdc3fb157 cx231xx_uninit_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xf441492a cx231xx_enable656 +EXPORT_SYMBOL_GPL drivers/media/usb/dvb-usb-v2/mxl111sf-demod 0x92d74189 mxl111sf_demod_attach +EXPORT_SYMBOL_GPL drivers/media/usb/dvb-usb-v2/mxl111sf-tuner 0xe70114fa mxl111sf_tuner_attach +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x0670d814 em28xx_write_reg +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x1212725c em28xx_alloc_urbs +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x17a6f6d1 em28xx_write_ac97 +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x2090834a em28xx_stop_urbs +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x26725439 em28xx_uninit_usb_xfer +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x29b33a27 em28xx_toggle_reg_bits +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x45520471 em28xx_init_usb_xfer +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x6114091a em28xx_setup_xc3028 +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x6d578f78 em28xx_boards +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x72848df1 em28xx_audio_analog_set +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x7446f704 em28xx_gpio_set +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x7d26cbaa em28xx_init_camera +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x7fc8652c em28xx_tuner_callback +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x88d5d7bb em28xx_write_regs +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x8901bccc em28xx_audio_setup +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x99491f0a em28xx_set_mode +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x9aa29628 em28xx_read_ac97 +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xc6281b20 em28xx_read_reg +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xcd75ef7f em28xx_free_device +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xd126a951 em28xx_find_led +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xee8a0c5d em28xx_write_reg_bits +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x13eb3b39 tm6000_set_reg +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x2309a6d6 tm6000_xc5000_callback +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x3cb60be0 tm6000_set_audio_bitrate +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x7110406d tm6000_get_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/usb/tm6000/tm6000 0xfd53c835 tm6000_set_reg_mask +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x01c483a9 v4l2_get_timestamp +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x13772206 v4l2_spi_new_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x467b3a7d v4l2_i2c_subdev_addr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x806cbdd4 v4l2_i2c_new_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x813f3de4 v4l2_find_nearest_format +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0xb0cf1a3b v4l2_i2c_subdev_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0xb3130fb0 v4l2_i2c_new_subdev_board +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0xb3a8f587 v4l2_spi_subdev_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0xf2a353ac v4l2_i2c_tuner_addrs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0xf5ef842e v4l_bound_align_image +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x08982d59 v4l2_match_dv_timings +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x4103badb v4l2_print_dv_timings +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x5491c182 v4l2_enum_dv_timings_cap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x67b8205b v4l2_detect_cvt +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x6f344bb9 v4l2_calc_aspect_ratio +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0xb0891da2 v4l2_dv_timings_presets +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0xdfa5a008 v4l2_valid_dv_timings +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0xf0e1988c v4l2_find_dv_timings_cap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0xf98d0f9d v4l2_detect_gtf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-flash-led-class 0x7dd927b7 v4l2_flash_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-flash-led-class 0x9114497e v4l2_flash_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x055b80db v4l2_m2m_ioctl_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x059a5544 v4l2_m2m_fop_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x0a46bb9f v4l2_m2m_buf_queue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x12df17c6 v4l2_m2m_ioctl_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x17eb0eee v4l2_m2m_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x19a368dc v4l2_m2m_ctx_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x35822ec2 v4l2_m2m_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x3c479259 v4l2_m2m_fop_mmap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x51854386 v4l2_m2m_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x5dccc430 v4l2_m2m_ioctl_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x5e2c6cdf v4l2_m2m_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x6323b288 v4l2_m2m_ioctl_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x6b91c42e v4l2_m2m_ctx_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x74a1cd28 v4l2_m2m_buf_remove +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x7ed2436b v4l2_m2m_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x8ed4e2f9 v4l2_m2m_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x9288ab8b v4l2_m2m_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xa483b6ae v4l2_m2m_ioctl_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xa79b454c v4l2_m2m_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xbe875c4f v4l2_m2m_next_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xc11c39b6 v4l2_m2m_ioctl_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xc1cbfaf2 v4l2_m2m_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xc2e110e3 v4l2_m2m_ioctl_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xc6fca5ad v4l2_m2m_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xcf9a0966 v4l2_m2m_try_schedule +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xd10ad15e v4l2_m2m_ioctl_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xd7eca56a v4l2_m2m_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xea5d70d4 v4l2_m2m_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xfadba151 v4l2_m2m_ioctl_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x001b4305 videobuf_read_one +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x1233a994 videobuf_iolock +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x22a60570 videobuf_queue_cancel +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x22d8d815 videobuf_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x28eeb587 videobuf_next_field +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x2bb3fa23 videobuf_alloc_vb +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x305d5971 videobuf_queue_to_vaddr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x3eaa4786 videobuf_read_start +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x4686ccff videobuf_stop +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x4b7caaae videobuf_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x4e0c81ed videobuf_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x5feb30f3 videobuf_mmap_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x6c251cb9 videobuf_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x78be5eaf __videobuf_mmap_setup +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x808d732e videobuf_queue_core_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xa7f3c9ab videobuf_read_stop +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xb186cfcb videobuf_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xc18b1050 videobuf_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xc2d62913 videobuf_poll_stream +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xcf54057f videobuf_queue_is_busy +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xdb6270ac videobuf_mmap_mapper +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xe6012245 videobuf_read_stream +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xf449650b videobuf_waiton +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xf5f2f51c videobuf_mmap_setup +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x201c1edb 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 0x9f8cdc7e videobuf_dma_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0xafab58f8 videobuf_to_dma +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0xe0c5c60e videobuf_queue_sg_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-vmalloc 0x41e398d2 videobuf_vmalloc_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-vmalloc 0x87b3181e videobuf_to_vmalloc +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-vmalloc 0xbf2e5414 videobuf_queue_vmalloc_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x0354c424 vb2_queue_error +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x056d6454 _vb2_fop_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x148ee369 vb2_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x15eeceba vb2_thread_stop +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x20bc9eed vb2_discard_done +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x20ff3385 vb2_fop_mmap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x3ff23c27 vb2_ioctl_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x42c024e4 vb2_fop_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x558dd42e vb2_buffer_done +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x5f23a02b vb2_ops_wait_prepare +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x63d26fce vb2_fop_read +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x68de5eb8 vb2_fop_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x6f352e67 vb2_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x71c50e89 vb2_wait_for_all_buffers +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x71ff8135 vb2_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x7c0bd832 vb2_ioctl_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x7d4b8196 vb2_read +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x8035d9f2 vb2_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x855616dc vb2_thread_start +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x87ccba48 vb2_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x98f03c2e vb2_fop_write +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x9c2e6ffd vb2_mmap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x9caf3a92 vb2_ops_wait_finish +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xad2b0250 vb2_plane_cookie +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xb312e14c vb2_ioctl_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xb6c41961 vb2_write +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xbde8c0a2 vb2_ioctl_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xbe72a7e0 vb2_ioctl_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xc482902a vb2_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xd1e2fb1c vb2_queue_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xd5029a4e vb2_ioctl_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xdea001bf vb2_queue_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xdf019894 vb2_ioctl_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xe2c63d24 vb2_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xecb161b3 vb2_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xf680e9a3 vb2_ioctl_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xf8922c3b vb2_plane_vaddr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xfbfb8567 vb2_ioctl_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xfe7b471b vb2_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-contig 0x203bc4d3 vb2_dma_contig_init_ctx +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-contig 0x7469ec06 vb2_dma_contig_memops +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-contig 0xe57f0426 vb2_dma_contig_cleanup_ctx +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-sg 0xc6466dac vb2_dma_sg_init_ctx +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-sg 0xd30ec30f vb2_dma_sg_cleanup_ctx +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-sg 0xe85c11a2 vb2_dma_sg_memops +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-memops 0x03e5a53c vb2_common_vm_ops +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-memops 0x87647283 vb2_put_vma +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-memops 0x92008c30 vb2_get_contig_userptr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-memops 0xfc2eb653 vb2_get_vma +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-vmalloc 0x41ede4e8 vb2_vmalloc_memops +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x03b60c18 v4l2_device_unregister_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x0431a0f1 v4l2_subdev_link_validate +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x0fb49d37 v4l2_device_register_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x27aa0e6f v4l2_fh_exit +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x39f6f83a v4l2_compat_ioctl32 +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x3b303816 v4l2_device_put +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x3c44fa35 v4l2_fh_is_singular +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x41101be0 v4l2_event_queue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x430d4ac3 v4l2_subdev_link_validate_default +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x45fa6b70 v4l2_event_pending +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x6100c352 v4l2_event_unsubscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x62bc8b8d v4l2_device_set_name +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x63ac4201 v4l2_event_unsubscribe_all +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x665c3635 v4l2_device_unregister +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x72836b15 v4l2_src_change_event_subscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x7c21e447 v4l2_event_subdev_unsubscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xb9a4d1d5 v4l2_fh_open +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xbf2b07ea v4l2_event_dequeue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xc5507be5 v4l2_device_register_subdev_nodes +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xcc9d9451 v4l2_fh_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xccc15b42 v4l2_device_disconnect +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xcd8a1491 v4l2_event_queue_fh +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xdcf52d7e v4l2_fh_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xe2b0bcb6 v4l2_device_register +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xe336a16b v4l2_event_subscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xe46b90ce v4l2_fh_del +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xe7b75a25 v4l2_fh_add +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xe86d4686 v4l2_src_change_event_subdev_subscribe +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0x1d8cc9af pm80x_init +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0xd99fd720 pm80x_deinit +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0xea496427 pm80x_pm_ops +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0xfc63f850 pm80x_regmap_config +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0x3751adc5 da9150_bulk_write +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0x4f210ce0 da9150_bulk_read +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0x7bc40971 da9150_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0x84feba71 da9150_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0xac3247bb da9150_set_bits +EXPORT_SYMBOL_GPL drivers/mfd/intel-lpss 0x04bb80fb intel_lpss_probe +EXPORT_SYMBOL_GPL drivers/mfd/intel-lpss 0x26b16067 intel_lpss_suspend +EXPORT_SYMBOL_GPL drivers/mfd/intel-lpss 0x7822660a intel_lpss_resume +EXPORT_SYMBOL_GPL drivers/mfd/intel-lpss 0x9af50a04 intel_lpss_prepare +EXPORT_SYMBOL_GPL drivers/mfd/intel-lpss 0xa1869211 intel_lpss_remove +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x18f10ffa kempld_read16 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x2686a314 kempld_write8 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x3347ac9f kempld_get_mutex +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x578395bd kempld_write32 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x6c83bf23 kempld_write16 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x8a65805a kempld_read8 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x965f2c6d kempld_release_mutex +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x99f09c37 kempld_read32 +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0x10df7586 lm3533_read +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0x5d403ec7 lm3533_write +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0xff3da2b3 lm3533_update +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x4af77d6d lm3533_ctrlbank_set_pwm +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x4ca687f5 lm3533_ctrlbank_enable +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x4d937b71 lm3533_ctrlbank_set_brightness +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x6a22a5c4 lm3533_ctrlbank_set_max_current +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0xcd22275a lm3533_ctrlbank_get_pwm +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0xdf5d52fa lm3533_ctrlbank_get_brightness +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0xfa285be5 lm3533_ctrlbank_disable +EXPORT_SYMBOL_GPL drivers/mfd/lp3943 0x2408afd8 lp3943_write_byte +EXPORT_SYMBOL_GPL drivers/mfd/lp3943 0x9c42a77e lp3943_update_bits +EXPORT_SYMBOL_GPL drivers/mfd/lp3943 0xdddccb4e lp3943_read_byte +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x1dd21c5c mc13xxx_common_init +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x8920e7c6 mc13xxx_variant_mc13783 +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x8b7233b0 mc13xxx_common_exit +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x9b2f12ae mc13xxx_variant_mc34708 +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0xb889ee9c mc13xxx_adc_do_conversion +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0xc99aace6 mc13xxx_variant_mc13892 +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x02658737 pcf50633_irq_mask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x5d30a1ae pcf50633_write_block +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x73520641 pcf50633_irq_mask_get +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x82c31266 pcf50633_free_irq +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x91e6c55e pcf50633_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xb2dfc784 pcf50633_register_irq +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xd9e7d6a8 pcf50633_read_block +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xdd87bdb2 pcf50633_reg_clear_bits +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xe12eb141 pcf50633_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xe78ad598 pcf50633_irq_unmask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xe9cb534c pcf50633_reg_set_bit_mask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-adc 0x1d26e4df pcf50633_adc_sync_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-adc 0xac4d5806 pcf50633_adc_async_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x178986af pcf50633_gpio_invert_get +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x4160142b pcf50633_gpio_get +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x6435b286 pcf50633_gpio_set +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0xd721e4bb pcf50633_gpio_power_supply_set +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0xf5b28b43 pcf50633_gpio_invert_set +EXPORT_SYMBOL_GPL drivers/mfd/retu-mfd 0x01a33234 retu_write +EXPORT_SYMBOL_GPL drivers/mfd/retu-mfd 0x4fca3918 retu_read +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x00feb318 rtsx_pci_dma_unmap_sg +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x0ad559b1 rtsx_pci_write_phy_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x1b5059c0 rtsx_pci_transfer_data +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x1b6aa1bb rtsx_pci_start_run +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x1d1a4bc5 rtsx_pci_write_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x2237c248 rtsx_pci_read_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x293e7124 rtsx_pci_card_exist +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x31cfb3ae rtsx_pci_switch_clock +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x42fae9ab rtsx_pci_send_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x5a50a552 rtsx_pci_card_pull_ctl_enable +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x67a1ce14 rtsx_pci_complete_unfinished_transfer +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x96028782 rtsx_pci_stop_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x991ee22d rtsx_pci_read_ppbuf +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x9bfddc7f rtsx_pci_send_cmd_no_wait +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x9cfc977b rtsx_pci_write_ppbuf +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x9d982756 rtsx_pci_card_pull_ctl_disable +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xb5d60e08 rtsx_pci_add_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xbd0d5a3c rtsx_pci_read_phy_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xc4e59cef rtsx_pci_dma_transfer +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xddc0ec1e rtsx_pci_card_power_on +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xea7463f2 rtsx_pci_dma_map_sg +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xf569d1de rtsx_pci_card_exclusive_check +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xf6966e18 rtsx_pci_switch_output_voltage +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xfbbeb272 rtsx_pci_card_power_off +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x03a3839d rtsx_usb_send_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x20995d61 rtsx_usb_ep0_read_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x25cda177 rtsx_usb_switch_clock +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x2b392de6 rtsx_usb_add_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x2ea61f75 rtsx_usb_card_exclusive_check +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x4d09692d rtsx_usb_write_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x802a9a9e rtsx_usb_transfer_data +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x8f77e109 rtsx_usb_write_ppbuf +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x9adf6692 rtsx_usb_get_card_status +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0xa4fb9906 rtsx_usb_read_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0xbaf5f0d4 rtsx_usb_get_rsp +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0xc040d617 rtsx_usb_ep0_write_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0xd6524948 rtsx_usb_read_ppbuf +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x15291e88 si476x_core_has_diversity +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x19c93b58 si476x_core_cmd_zif_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x1d4025a8 si476x_core_cmd_fm_seek_start +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x1df450b5 si476x_core_cmd_get_property +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x34120256 si476x_core_cmd_fm_tune_freq +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x4afdb8d8 si476x_core_cmd_fm_rds_blockcount +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x5078b845 si476x_core_start +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x57a6383f si476x_core_cmd_power_up +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x58994be6 si476x_core_cmd_fm_phase_div_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x603be982 si476x_core_is_a_secondary_tuner +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x64cc7e24 si476x_core_cmd_fm_rsq_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x6b1bcc2b si476x_core_cmd_dig_audio_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x6fe13d5c devm_regmap_init_si476x +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x726470e2 si476x_core_set_power_state +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x744690f3 si476x_core_cmd_ana_audio_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x76683a4d si476x_core_cmd_agc_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x786275b7 si476x_core_cmd_am_tune_freq +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x7ed859e1 si476x_core_cmd_fm_acf_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x9c7b543c si476x_core_is_a_primary_tuner +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x9cbafecb si476x_core_cmd_power_down +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x9db2ff34 si476x_core_stop +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xa9bbd51f si476x_core_cmd_intb_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xab695abc si476x_core_cmd_func_info +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xacfad561 si476x_core_cmd_am_rsq_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xae7e435f si476x_core_cmd_fm_phase_diversity +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xaedbc2d6 si476x_core_is_powered_up +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xb6d4c59d si476x_core_cmd_set_property +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xbfcc8e7d si476x_core_has_am +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xc5e460f7 si476x_core_cmd_am_seek_start +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xcb7bbafe si476x_core_i2c_xfer +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xcc7b2c42 si476x_core_cmd_am_acf_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xcea795ec si476x_core_is_in_am_receiver_mode +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xd1db7376 si476x_core_cmd_fm_rds_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xd66abff0 si476x_core_cmd_ic_link_gpo_ctl_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x05395bdf sm501_unit_power +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x3154df84 sm501_find_clock +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0xa4ecdf52 sm501_modify_reg +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0xe2d4ba26 sm501_set_clock +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0xf58b9c59 sm501_misc_control +EXPORT_SYMBOL_GPL drivers/mfd/ti_am335x_tscadc 0x2844193b am335x_tsc_se_clr +EXPORT_SYMBOL_GPL drivers/mfd/ti_am335x_tscadc 0x2c9743e6 am335x_tsc_se_set_once +EXPORT_SYMBOL_GPL drivers/mfd/ti_am335x_tscadc 0x482a27f8 am335x_tsc_se_set_cache +EXPORT_SYMBOL_GPL drivers/mfd/ti_am335x_tscadc 0xb842cab7 am335x_tsc_se_adc_done +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0x0a9ab33f tps65217_set_bits +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0x38f1ccba tps65217_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0x68596533 tps65217_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0xf7bc0d94 tps65217_clear_bits +EXPORT_SYMBOL_GPL drivers/mfd/tps65218 0x3de009d7 tps65218_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/tps65218 0x435d50b4 tps65218_clear_bits +EXPORT_SYMBOL_GPL drivers/mfd/tps65218 0xcc91da6b tps65218_set_bits +EXPORT_SYMBOL_GPL drivers/mfd/tps65218 0xd6dafb74 tps65218_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/ucb1400_core 0xb66fb85f ucb1400_adc_read +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0x65601290 cb710_sg_dwiter_read_next_block +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0x6e48b362 cb710_set_irq_handler +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0xb5aac2f9 cb710_sg_dwiter_write_next_block +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0xb7c5d32e cb710_pci_update_config_reg +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0x1a1b5249 oslec_flush +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0x2feda75b oslec_hpf_tx +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0x3227a28e oslec_snapshot +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0x7dc9dddd oslec_adaption_mode +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0xb2c66001 oslec_create +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0xc8b5a524 oslec_free +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0xd370f679 oslec_update +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0x27cb133b eeprom_93cx6_multiread +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0x63d2ff63 eeprom_93cx6_wren +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0x793fc8de eeprom_93cx6_multireadb +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0x822222db eeprom_93cx6_write +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0x98bb5a22 eeprom_93cx6_read +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0xdb9ca14b eeprom_93cx6_readb +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x03e29b82 enclosure_find +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x2c97b023 enclosure_unregister +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x91f9f7ac enclosure_component_register +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x99f2b0c5 enclosure_remove_device +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0xa08f9c0b enclosure_component_alloc +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0xee86874b enclosure_register +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0xeeebec22 enclosure_add_device +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0xf185bb84 enclosure_for_each_device +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x02853d05 lis3lv02d_poweron +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x644a4bcc lis3lv02d_remove_fs +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x64719233 lis3lv02d_init_device +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x7e0ac1ef lis3lv02d_poweroff +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xb065affa lis3lv02d_joystick_disable +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xdbc59cd4 lis3lv02d_init_dt +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xdd71e56c lis3_dev +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xe3f4cb4a lis3lv02d_joystick_enable +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x075cd005 mei_irq_write_handler +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x07f08d5a mei_cl_enable_device +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x1acad2a7 mei_start +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x28e119fb mei_irq_read_handler +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x325ec46e mei_cl_get_drvdata +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x3ef5fa83 mei_device_init +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x58944403 mei_hbm_pg_resume +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x58aabe34 mei_cancel_work +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x591ac5cf mei_cl_driver_unregister +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x6ba7c283 mei_stop +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x7049e51b __mei_cl_driver_register +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x74a2d652 mei_restart +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x9ab15675 mei_register +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x9ca6046e mei_reset +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0xa1cac891 mei_cl_send +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0xa35936ac mei_cl_disable_device +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0xab225553 mei_hbm_pg +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0xad3f5fa5 mei_cl_set_drvdata +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0xb257a53d mei_cl_recv +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0xb6d159e8 mei_write_is_idle +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0xd5a8a6c4 mei_irq_compl_handler +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0xe4174ebc mei_deregister +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0xe8dd0278 mei_fw_status2str +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0xfa1228bf mei_cl_register_event_cb +EXPORT_SYMBOL_GPL drivers/misc/mic/bus/mic_bus 0x229ba02e mbus_unregister_driver +EXPORT_SYMBOL_GPL drivers/misc/mic/bus/mic_bus 0x98766b11 mbus_register_device +EXPORT_SYMBOL_GPL drivers/misc/mic/bus/mic_bus 0xdfbb4e30 mbus_register_driver +EXPORT_SYMBOL_GPL drivers/misc/mic/bus/mic_bus 0xea19184c mbus_unregister_device +EXPORT_SYMBOL_GPL drivers/misc/mic/bus/scif_bus 0x4d76cbe4 scif_unregister_device +EXPORT_SYMBOL_GPL drivers/misc/mic/bus/scif_bus 0x668bebe0 scif_register_driver +EXPORT_SYMBOL_GPL drivers/misc/mic/bus/scif_bus 0x7c3f09e2 scif_register_device +EXPORT_SYMBOL_GPL drivers/misc/mic/bus/scif_bus 0xecb0e507 scif_unregister_driver +EXPORT_SYMBOL_GPL drivers/misc/mic/scif/scif 0x1a161f73 scif_recv +EXPORT_SYMBOL_GPL drivers/misc/mic/scif/scif 0x226b43ce scif_open +EXPORT_SYMBOL_GPL drivers/misc/mic/scif/scif 0x316a6391 scif_accept +EXPORT_SYMBOL_GPL drivers/misc/mic/scif/scif 0x31f517c5 scif_get_node_ids +EXPORT_SYMBOL_GPL drivers/misc/mic/scif/scif 0x37767ed8 scif_close +EXPORT_SYMBOL_GPL drivers/misc/mic/scif/scif 0xa23cb932 scif_connect +EXPORT_SYMBOL_GPL drivers/misc/mic/scif/scif 0xb2323aba scif_send +EXPORT_SYMBOL_GPL drivers/misc/mic/scif/scif 0xc1e6d8ab scif_bind +EXPORT_SYMBOL_GPL drivers/misc/mic/scif/scif 0xe7b7fe70 scif_listen +EXPORT_SYMBOL_GPL drivers/misc/ti-st/st_drv 0x5d394195 st_unregister +EXPORT_SYMBOL_GPL drivers/misc/ti-st/st_drv 0xda6c558a st_register +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x0f6680ea vmci_qpair_produce_buf_ready +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x1152e318 vmci_qpair_get_produce_indexes +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x13aa5a5d vmci_datagram_create_handle +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x1872c7af vmci_qpair_produce_free_space +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x1a195863 vmci_context_get_priv_flags +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x3ef56cd5 vmci_qpair_alloc +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x4b630dac vmci_get_context_id +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x4ba5c46b vmci_qpair_peek +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x50a255c9 vmci_doorbell_create +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x612df9ae vmci_qpair_detach +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x677c36d0 vmci_is_context_owner +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x69ef87ff vmci_datagram_destroy_handle +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x6cc1a5f7 vmci_datagram_create_handle_priv +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x722d488a vmci_event_unsubscribe +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x72f33e48 vmci_qpair_dequev +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x7d540b50 vmci_qpair_consume_free_space +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x81d61eef vmci_qpair_dequeue +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x95f51f9f vmci_qpair_enquev +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x9624c58c vmci_datagram_send +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x9973b9b2 vmci_qpair_consume_buf_ready +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x9d16164a vmci_send_datagram +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0xccbb53d1 vmci_doorbell_notify +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0xcf5ed7ef vmci_event_subscribe +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0xdac94780 vmci_qpair_get_consume_indexes +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0xe67343c1 vmci_qpair_enqueue +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0xe7e7c107 vmci_doorbell_destroy +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0xf0d9497c vmci_qpair_peekv +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x054c6212 sdhci_remove_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x1da4f012 sdhci_suspend_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x3d5c4ed9 sdhci_set_clock +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x65c06aed sdhci_send_command +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x79ec52ca sdhci_enable_irq_wakeups +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x9638782b sdhci_reset +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xa396556b sdhci_set_uhs_signaling +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xb14508a6 sdhci_alloc_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xb24b5103 sdhci_free_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xcd0d46cf sdhci_runtime_resume_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xcf829294 sdhci_runtime_suspend_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xe6ea3de9 sdhci_resume_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xea210d78 sdhci_set_bus_width +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xee849a92 sdhci_add_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x08eb7abd sdhci_pltfm_pmops +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x128e0a1d sdhci_pltfm_free +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x3d953637 sdhci_pltfm_suspend +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x6179018a sdhci_pltfm_unregister +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x62ca01b5 sdhci_pltfm_init +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x97919292 sdhci_pltfm_clk_get_max_clock +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0xa9bda3c7 sdhci_pltfm_resume +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0xc8a4f971 sdhci_get_of_property +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0xcf90a730 sdhci_pltfm_register +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0x0ca85ed6 cfi_cmdset_0200 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0xce9f5ea8 cfi_cmdset_0001 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0xf1b67b40 cfi_cmdset_0003 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0x51995b01 cfi_cmdset_0701 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0xa2609487 cfi_cmdset_0002 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0xdc32df57 cfi_cmdset_0006 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0020 0x7fe58f33 cfi_cmdset_0020 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0x0c46f916 cfi_qry_mode_off +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0x8aeb7063 cfi_qry_mode_on +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0xe6e159b9 cfi_qry_present +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x01c60bc7 mount_mtd +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x01f0a14d mtd_block_isbad +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x02eb33be mtd_unlock +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x0577cfbb register_mtd_user +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x1cf6dc2a get_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x219d33c9 mtd_device_parse_register +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x270324ba mtd_table_mutex +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x2f75f418 mtd_read_user_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x38c8fbf5 get_mtd_device_nm +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x3c35ca64 mtd_erase_callback +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x3f9d3a92 mtd_unpoint +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x40db6071 deregister_mtd_parser +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x4b30c85d mtd_get_unmapped_area +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x5587ce3d mtd_block_markbad +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x55894690 mtd_kmalloc_up_to +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x5a850b44 __get_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x5bdb9d43 mtd_read_fact_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x63aaa89c register_mtd_parser +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x69a7950a __put_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x6a6a4cb5 mtd_get_fact_prot_info +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x6d0a2255 unregister_mtd_user +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x70d990cd mtd_del_partition +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x8120efd9 mtd_point +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x84721cfa mtd_add_partition +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x863442f6 mtd_get_device_size +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x88ceb74f __mtd_next_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x8fa729bf mtd_erase +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x96a76aa0 mtd_get_user_prot_info +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x9df528df mtd_write_user_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xb1a84e63 mtd_panic_write +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xb78da546 mtd_read +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xb9ba2980 mtd_writev +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xbc9c0d1a mtd_is_locked +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xc1daf0a4 mtd_is_partition +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xc82b420a put_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xcd846ba5 mtd_read_oob +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xcfee212f mtd_lock +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xd2ca7222 mtd_lock_user_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xd8aa67c5 mtd_device_unregister +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xda3ce9bb mtd_write +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xe0591b10 kill_mtd_super +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xf4863e0a mtd_block_isreserved +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0x0337ae00 add_mtd_blktrans_dev +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0x0a0a7efb register_mtd_blktrans +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0xa76a6503 mtd_blktrans_cease_background +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0xb7667eba del_mtd_blktrans_dev +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0xed5e32b4 deregister_mtd_blktrans +EXPORT_SYMBOL_GPL drivers/mtd/nand/nand 0x83fb137b nand_release +EXPORT_SYMBOL_GPL drivers/mtd/nand/nand 0xdc6334d5 nand_wait_ready +EXPORT_SYMBOL_GPL drivers/mtd/nand/sm_common 0x1b41cb7f sm_register_device +EXPORT_SYMBOL_GPL drivers/mtd/onenand/onenand 0x14f18a94 onenand_scan +EXPORT_SYMBOL_GPL drivers/mtd/onenand/onenand 0x788b1857 onenand_release +EXPORT_SYMBOL_GPL drivers/mtd/spi-nor/spi-nor 0x0c9ab78f spi_nor_scan +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x2947ac1e ubi_open_volume_path +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 0x5cfdd22d ubi_get_device_info +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x611b5059 ubi_do_get_device_info +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x6846e766 ubi_open_volume_nm +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x7d43376a ubi_leb_write +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x85a8ee76 ubi_unregister_volume_notifier +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x965e1776 ubi_leb_map +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x9a95762e ubi_is_mapped +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x9e221cba ubi_close_volume +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xad8a6864 ubi_leb_read_sg +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xb68b3c94 ubi_leb_erase +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xbdec5590 ubi_open_volume +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xe19332ee ubi_get_volume_info +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xe31b4031 ubi_leb_unmap +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xf592ab7a ubi_leb_read +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xf5ee9ba8 ubi_register_volume_notifier +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xfa48f191 ubi_leb_change +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x1f03e8ad c_can_power_down +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x4bc0f1cf alloc_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x67047670 register_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x72b98119 c_can_power_up +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x937d22f3 free_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0xb6cee7b2 unregister_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x07720374 alloc_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x0f87fa43 can_led_event +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x13359623 unregister_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x222c295a can_len2dlc +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x3ac98db3 alloc_canfd_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x5a6d279f close_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x6155a1ab devm_can_led_init +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x768d2c9f alloc_can_err_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x7a130226 can_get_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x89ac55e1 register_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x91e0cc23 safe_candev_priv +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x950ec7a1 can_bus_off +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xa2df9eac can_change_mtu +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xb29a01b3 can_free_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xb346573b can_dlc2len +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xc489b339 can_change_state +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xced92238 alloc_can_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xd1b01b65 can_put_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xd799eed8 free_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xe97ffb2d open_candev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0x27acf40c unregister_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0x65ccb915 alloc_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0x6dfec197 register_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0xf0554cac free_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x49ebd0d2 sja1000_interrupt +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x7e07edb8 register_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0xb406783a alloc_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0xba013018 unregister_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0xd1bc60b6 free_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x00ecbdf6 mlx4_fmr_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0209e586 mlx4_get_vf_config +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x04a75f5f mlx4_qp_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x061d6b8e mlx4_map_phys_fmr +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x08fe78d1 mlx4_mr_hw_change_pd +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0a2fb8dc mlx4_fmr_enable +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0a63b20a mlx4_wol_read +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0b929279 mlx4_uar_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0e019ad4 mlx4_set_admin_guid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0e0cc690 mlx4_counter_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0e5957cd mlx4_unregister_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0fe51529 mlx4_ACCESS_PTYS_REG +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x100fde96 mlx4_get_vf_stats +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1a01da1a mlx4_multicast_attach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1dd5d7a0 mlx4_FLOW_STEERING_IB_UC_QP_RANGE +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x228d80dc mlx4_mr_hw_get_mpt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x23c2c4d0 mlx4_buf_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x240797c0 mlx4_wol_write +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x25e7e580 mlx4_db_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x27369e47 mlx4_mr_rereg_mem_write +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x27b0d110 mlx4_xrcd_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2b91e423 mlx4_mtt_init +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2d63c709 mlx4_read_clock +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2e236cdc __mlx4_unregister_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2f63ef1a mlx4_bf_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x31062e12 mlx4_pd_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x318c10ae mlx4_phys_to_slaves_pport_actv +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x31e3b9d2 mlx4_mr_hw_put_mpt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3236b981 mlx4_alloc_cmd_mailbox +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x33600f54 mlx4_find_cached_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x35571f44 mlx4_mw_enable +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3631a87f mlx4_qp_reserve_range +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3794e459 mlx4_alloc_hwq_res +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x382fbbde mlx4_set_vf_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x38dc1010 mlx4_srq_lookup +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x39245ea9 mlx4_phys_to_slave_port +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x410a5fdf mlx4_CLOSE_PORT +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x45a2ac32 mlx4_hw_rule_sz +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x45f70d0d mlx4_srq_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x465533a7 mlx4_unicast_attach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x47ccf640 mlx4_map_sw_to_hw_steering_mode +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x48247c15 mlx4_set_vf_link_state +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x48e09528 __mlx4_register_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4eedf838 mlx4_cq_resize +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x51aecc58 mlx4_get_internal_clock_params +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x531d5920 mlx4_mtt_addr +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x55ea6ccd mlx4_config_vxlan_port +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x576291ba mlx4_get_admin_guid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x596daec0 mlx4_qp_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x597bd75b mlx4_register_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5eb12b67 mlx4_unbond +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5ee27e50 mlx4_mw_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5f38580a mlx4_mr_hw_write_mpt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5fbf3796 mlx4_vf_smi_enabled +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6019b603 __mlx4_cmd +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x606a6a3c mlx4_multicast_detach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x61a440a6 mlx4_qp_to_ready +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x636f5421 mlx4_qp_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x64509d29 __mlx4_replace_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x67a6c679 mlx4_srq_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x67c5823e mlx4_config_dev_retrieval +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6b763971 mlx4_unicast_promisc_add +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6cb92952 mlx4_INIT_PORT +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6da22e84 mlx4_qp_modify +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6ea4f22b mlx4_unicast_detach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6f632365 mlx4_mr_rereg_mem_cleanup +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x70c893b6 mlx4_free_cmd_mailbox +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x72bcd1b2 mlx4_uar_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x72cdd3f3 mlx4_pd_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7a5ab8d2 mlx4_db_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7bd9261a mlx4_srq_arm +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7c4607cf mlx4_get_counter_stats +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7c79ab78 mlx4_free_hwq_res +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7c8128de mlx4_phys_to_slaves_pport +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7e3b2efa mlx4_vf_get_enable_smi_admin +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7e50a5d7 mlx4_flow_attach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8386899f mlx4_mtt_cleanup +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x83e705e5 mlx4_register_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x851adb97 mlx4_get_base_gid_ix +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x86bfa18b mlx4_set_vf_spoofchk +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8dd2b628 mlx4_unregister_interface +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x91fa44ce mlx4_multicast_promisc_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9314e34f mlx4_qp_release_range +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9c6fbc48 mlx4_vf_set_enable_smi_admin +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9c7d8c56 mlx4_unregister_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9fa3a888 mlx4_slave_convert_port +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa1c4e849 mlx4_get_default_counter_index +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa41c88c9 mlx4_counter_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa652ec2b mlx4_fmr_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa8c5a9fc mlx4_map_sw_to_hw_steering_id +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xaa1bdb6b mlx4_fmr_unmap +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xafbfce71 mlx4_cq_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb083493b mlx4_mr_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb1afc349 mlx4_update_qp +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb2524e01 mlx4_flow_detach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb299bfff mlx4_unicast_promisc_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb4b8a61e mlx4_register_interface +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb501f4d9 mlx4_find_cached_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb5ab7250 mlx4_flow_steer_promisc_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb5f5e3d3 mlx4_get_base_qpn +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xba11c937 mlx4_mw_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xba949350 mlx4_multicast_promisc_add +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc3819c91 mlx4_xrcd_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc650f142 mlx4_get_protocol_dev +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc7e5ba19 mlx4_mr_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xca63a567 mlx4_cq_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xce2cf550 mlx4_SYNC_TPT +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xcf0b3f4f mlx4_get_slave_default_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd504c780 mlx4_buf_write_mtt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd8284bf9 mlx4_qp_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd83086e9 mlx4_flow_steer_promisc_add +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd88d77ad mlx4_buf_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd9f23e8b mlx4_bond +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xda530b37 mlx4_write_mtt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe74bb33e mlx4_set_vf_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xed2963c3 mlx4_set_vf_rate +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xed4f1ab3 mlx4_bf_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xef17c361 mlx4_cq_modify +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf619df5e mlx4_srq_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf695f44a mlx4_get_active_ports +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf86e556e mlx4_mr_enable +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf8d7758e mlx4_mr_hw_change_access +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xfa8a6e31 mlx4_port_map_set +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x06df6316 mlx5_buf_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x0927d2f6 mlx5_core_qp_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x09543b3d mlx5_fill_page_array +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x0acc74a1 mlx5_query_port_proto_cap +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x0dc4e670 mlx5_core_qp_modify +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x25b02a7b mlx5_query_hca_vport_node_guid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x268f1994 mlx5_core_eq_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x2953ec16 mlx5_query_port_ptys +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x2a2bc376 mlx5_core_destroy_qp +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x2ebd9bff mlx5_query_hca_vport_pkey +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x32dee56a mlx5_query_port_max_mtu +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x38830e6d mlx5_query_hca_vport_system_image_guid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x45c9df73 mlx5_core_xrcd_dealloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x49ed0e79 mlx5_destroy_unmap_eq +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x54267588 mlx5_core_xrcd_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x5a536518 mlx5_set_port_proto +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x6d367e37 mlx5_set_port_mtu +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x6d605ffb mlx5_query_hca_vport_context +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x71801a65 mlx5_query_port_proto_admin +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x7ab39700 mlx5_buf_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x7c1d1714 mlx5_create_map_eq +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x8075a533 mlx5_core_access_reg +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x9b71c1ad mlx5_query_port_vl_hw_cap +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x9f4aa987 mlx5_db_alloc_node +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa0f9c195 mlx5_query_hca_vport_gid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xab1ae8e5 mlx5_set_port_admin_status +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xaddaeded mlx5_db_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xaf0c4988 mlx5_core_page_fault_resume +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xb02b28e8 mlx5_query_port_oper_mtu +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xb3bd64da mlx5_query_port_admin_status +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xd11fc098 mlx5_core_mad_ifc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xda3e1463 mlx5_set_port_caps +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xdfe235f3 mlx5_query_port_link_width_oper +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe236e471 mlx5_query_port_proto_oper +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe89622d5 mlx5_db_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xfc18e1c6 mlx5_core_create_qp +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac 0x1663baa6 stmmac_dvr_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac 0x24f6d12a stmmac_dvr_probe +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac 0x47981865 stmmac_suspend +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac 0x752fa660 stmmac_resume +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac-platform 0x4a39c037 stmmac_pltfr_pm_ops +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac-platform 0x59e08bd2 stmmac_pltfr_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac-platform 0xd8b2d920 stmmac_pltfr_probe +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x01c3a1a0 cpsw_ale_start +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x10c90566 cpsw_ale_dump +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x135f6d10 cpsw_ale_flush_multicast +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x15b66ce4 cpsw_ale_stop +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x26b99d94 cpsw_ale_del_mcast +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x2940287b cpsw_ale_add_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x2a06683d cpsw_ale_del_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x2a90602c cpsw_ale_control_get +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x4a39c303 cpsw_ale_create +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x616b7c8a cpsw_ale_control_set +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x6d70d415 cpsw_ale_del_ucast +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x7633a1c6 cpsw_ale_add_ucast +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x81dca287 cpsw_ale_destroy +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x9c72c0bb cpsw_ale_add_mcast +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0xfe408978 cpsw_ale_set_allmulti +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x0bf7018d macvlan_common_setup +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x2a776497 macvlan_common_newlink +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x615ea1b0 macvlan_dellink +EXPORT_SYMBOL_GPL drivers/net/macvlan 0xe207eeeb macvlan_link_register +EXPORT_SYMBOL_GPL drivers/net/macvtap 0x1222b9eb macvtap_get_socket +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0x6039baba usbnet_cdc_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0x6d7885b2 usbnet_generic_cdc_bind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0xd5b72c37 usbnet_cdc_bind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0xee6e2a91 usbnet_cdc_status +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x1cdefa84 cdc_ncm_bind_common +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x1ff1dead cdc_ncm_rx_verify_ndp16 +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x3550f4a0 cdc_ncm_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x5e2df8bd cdc_ncm_rx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x6de55f0d cdc_ncm_fill_tx_frame +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x94e5d55a cdc_ncm_tx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0xb8783c7e cdc_ncm_select_altsetting +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0xf8967d9f cdc_ncm_rx_verify_nth16 +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x0fd4fc08 rndis_tx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x1597a330 generic_rndis_bind +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x2dd82762 rndis_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x6e5f7924 rndis_command +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x91697f22 rndis_status +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x996679c5 rndis_rx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x0c6019de usbnet_get_endpoints +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x0ce84f41 usbnet_write_cmd_async +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x0d77553c usbnet_read_cmd +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x145604cf usbnet_get_ethernet_addr +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x16b9df03 usbnet_skb_return +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x1f3bfc3c usbnet_get_drvinfo +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x310e1dfd usbnet_suspend +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x394d5163 usbnet_status_stop +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x4aac1bb6 usbnet_get_msglevel +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x4f1fa5b4 usbnet_stop +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x530df2e4 usbnet_write_cmd +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x57ab2d9d usbnet_pause_rx +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x589cbda6 usbnet_nway_reset +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x5bf27155 usbnet_unlink_rx_urbs +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x6e6c4b65 usbnet_set_settings +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x747c437f usbnet_status_start +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x748eb712 usbnet_set_msglevel +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x7b9c97e1 usbnet_get_link +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x844e05bd usbnet_update_max_qlen +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x9c38b716 usbnet_defer_kevent +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x9c63159c usbnet_read_cmd_nopm +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xa3575efb usbnet_get_settings +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xa54efbb4 usbnet_tx_timeout +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xabe8343d usbnet_change_mtu +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xba6948b2 usbnet_disconnect +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xbebdb922 usbnet_open +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xbf2891f2 usbnet_purge_paused_rxq +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xc0aab17e usbnet_resume +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xcd1fc930 usbnet_start_xmit +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xe01cde0e usbnet_resume_rx +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xe35ab95f usbnet_probe +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xf39a02db usbnet_write_cmd_nopm +EXPORT_SYMBOL_GPL drivers/net/vxlan 0x09056d4c vxlan_xmit_skb +EXPORT_SYMBOL_GPL drivers/net/vxlan 0x59821def vxlan_sock_release +EXPORT_SYMBOL_GPL drivers/net/vxlan 0x88c32da3 vxlan_get_rx_port +EXPORT_SYMBOL_GPL drivers/net/vxlan 0xb43e435c vxlan_sock_add +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x04a60f38 i2400m_netdev_setup +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x13bb9bc8 i2400m_setup +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x158f13a7 i2400m_dev_bootstrap +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x4fc17666 i2400m_release +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x7d55ce09 i2400m_post_reset +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x86676c65 i2400m_tx_msg_sent +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x8d577220 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 0xbc5694c1 i2400m_cmd_enter_powersave +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xcb7fe23a i2400m_tx +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xcc7df609 i2400m_reset +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xcc820512 i2400m_error_recovery +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xcd867946 i2400m_pre_reset +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xd26c7b7e i2400m_rx +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xe1eda374 i2400m_init +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xea1bdb3d i2400m_is_boot_barker +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xfd4e8fe6 i2400m_dev_reset_handle +EXPORT_SYMBOL_GPL drivers/net/wireless/cw1200/cw1200_core 0x41e8d3ec cw1200_can_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/cw1200/cw1200_core 0x48a90578 cw1200_core_release +EXPORT_SYMBOL_GPL drivers/net/wireless/cw1200/cw1200_core 0x6b1ed36f cw1200_core_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/cw1200/cw1200_core 0xa77eca6d cw1200_irq_handler +EXPORT_SYMBOL_GPL drivers/net/wireless/ipw2x00/libipw 0x91b8ba26 libipw_rx_any +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0x269cc378 il_remove_station +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0x2a81c109 il_dealloc_bcast_stations +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0x4dbbc366 il_prep_station +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0x9e1e3563 _il_grab_nic_access +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0xcb2746d2 il_mac_tx_last_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x09942929 iwl_phy_db_init +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x1427e4c4 iwl_nvm_check_version +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x1a459d47 iwl_parse_eeprom_data +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x1b074767 iwl_abort_notification_waits +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x2d245fee iwl_init_notification_wait +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x35033c81 iwl_phy_db_free +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x36775ed1 __iwl_dbg +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x3a585eab iwl_read_direct32 +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x3dbc6de0 iwl_parse_nvm_mcc_info +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x46f9cefd iwl_remove_notification +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x51b657cd iwlwifi_mod_params +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x52ad6cf8 iwl_read_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x59f08bef iwl_force_nmi +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x5c52e109 iwl_opmode_deregister +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x67ff8b28 iwl_poll_direct_bit +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x776221bf iwl_send_phy_db_data +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x8c5d5ab3 iwl_phy_db_set_section +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x98a95ba8 __iwl_warn +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x9c8e3fa2 iwl_wait_notification +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xa00fbf40 iwl_write_direct32 +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xa53a7e1e __iwl_crit +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xa955afcc iwl_read_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xab4a9c3f iwl_notification_wait_notify +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xb82bca9f iwl_write_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xb8979af3 iwl_notification_wait_init +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xbd0bb692 iwl_parse_nvm_data +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xc2270a51 iwl_poll_bit +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xc82c9e0b __iwl_info +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xd02ea158 iwl_set_bits_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xdb58e1b1 __iwl_err +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xdefa2488 iwl_clear_bits_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xf78b0e2d iwl_opmode_register +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xfe398a48 iwl_set_bits_mask_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x0f8c8ed1 lbs_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x2c5df589 lbs_stop_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x3b5f8da7 lbs_host_sleep_cfg +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x4b9860ae lbs_get_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x4d912df0 lbs_process_rxed_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x570383b5 lbs_start_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x5ac4e8fb lbs_send_tx_feedback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x5fdf38b8 lbs_disablemesh +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x64a4e343 __lbs_cmd +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x7194b697 lbs_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x7d169aba lbs_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x7e890ec2 lbs_queue_event +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x9975142b lbs_cmd_copyback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xa1d5e784 lbs_host_to_card_done +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xa6c33447 lbs_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xcd065ec0 lbs_get_firmware_async +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xe6c063e8 lbs_notify_command_response +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xf64277de lbs_debug +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x087d9c88 lbtf_send_tx_feedback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x69b9c5a2 lbtf_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x8da67b84 __lbtf_cmd +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x9a3169e4 lbtf_cmd_response_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x9a4e9d80 lbtf_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xa2b10f9b lbtf_bcn_sent +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xbbbfe757 lbtf_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xc4cbf87c lbtf_cmd_copyback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xc85e6899 lbtf_debug +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x03216f6e mwifiex_queue_main_work +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x144adbe4 mwifiex_enable_hs +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x1679b1ab mwifiex_write_data_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x1f907772 mwifiex_cancel_hs +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x31bd9748 mwifiex_alloc_dma_align_buf +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x365c0b55 mwifiex_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x45b1a08d mwifiex_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x4910a682 mwifiex_add_virtual_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x6e1f1b64 mwifiex_drv_info_dump +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x736cd193 mwifiex_main_process +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x7425214b mwifiex_disable_auto_ds +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x9a6bc345 mwifiex_process_sleep_confirm_resp +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xba88f688 mwifiex_init_shutdown_fw +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xbb384fb5 mwifiex_del_virtual_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xbfc20067 mwifiex_process_hs_config +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xc493298a mwifiex_handle_rx_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xe57124cb mwifiex_deauthenticate_all +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xea069ee3 mwifiex_upload_device_dump +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x11eb2962 p54_free_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x310a24c8 p54_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x427983a5 p54_parse_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x5f63aa43 p54_read_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x65ae9985 p54_free_skb +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x9ec3ba1f p54_unregister_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xb3b3aee7 p54_register_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xd42e0afc p54_parse_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xeb0cd2d8 p54_init_common +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0x033a52e7 rsi_mac80211_detach +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0x2011d27e rsi_91x_init +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0x25c5f6c3 rsi_read_pkt +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0x7201b98a rsi_dbg +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0xc1d691ea rsi_91x_deinit +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0xdb3ca0e5 rsi_zone_enabled +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x0a69a259 rt2800_set_rts_threshold +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x0fd73e6d rt2800_read_eeprom_efuse +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x13bf5700 rt2800_ampdu_action +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x1ca4013c rt2800_link_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x220bffd1 rt2800_rfkill_poll +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x25658994 rt2800_disable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x2e3477fa rt2800_sta_add +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x2f9ee6be rt2800_txdone_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x48b8114a rt2800_sta_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x54a8de81 rt2800_config_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x568aae4d rt2800_disable_wpdma +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x62280aff rt2800_enable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x6dd38f32 rt2800_config_ant +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x70f310ce rt2800_process_rxwi +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x813e2ae9 rt2800_vco_calibration +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x82e7b8bb rt2800_write_tx_data +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x8d158222 rt2800_gain_calibration +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x8f554aea rt2800_link_tuner +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x9e3fc309 rt2800_load_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xb5c590fe rt2800_config_filter +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xbb0460bb rt2800_config_erp +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xc1845cb4 rt2800_clear_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xc2c1e3b3 rt2800_reset_tuner +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xc75745e3 rt2800_conf_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xcbf03039 rt2800_config +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xcc4f7305 rt2800_mcu_request +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xd1593cb6 rt2800_get_txwi_rxwi_size +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xd2255a56 rt2800_get_survey +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xdaace49c rt2800_get_tsf +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xde3333ae rt2800_write_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xe6ced57a rt2800_get_key_seq +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xeabedb30 rt2800_efuse_detect +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xece5a026 rt2800_probe_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xf14c9b31 rt2800_config_pairwise_key +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xf2a4e952 rt2800_wait_csr_ready +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xfb0cfde1 rt2800_config_shared_key +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xfdd5d7e4 rt2800_check_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xff9ebc56 rt2800_wait_wpdma_ready +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x01d64406 rt2800mmio_init_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x0332eda1 rt2800mmio_get_entry_state +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x0fad1430 rt2800mmio_pretbtt_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x2505789d rt2800mmio_tbtt_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x2d280ae3 rt2800mmio_get_txwi +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x42c2e8fc rt2800mmio_write_tx_desc +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x5450355a rt2800mmio_fill_rxdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x5fa4db64 rt2800mmio_interrupt +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x75f4ae61 rt2800mmio_kick_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x8906735d rt2800mmio_start_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x8ad8565b rt2800mmio_enable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x92c0bcd1 rt2800mmio_rxdone_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xb1a4bb79 rt2800mmio_toggle_irq +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xb4a53c5e rt2800mmio_init_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xbbc58ab7 rt2800mmio_clear_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xc6a1455e rt2800mmio_autowake_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xc95f5d7a rt2800mmio_stop_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xda0b1858 rt2800mmio_queue_init +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xe28f94c7 rt2800mmio_txstatus_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x054608b1 rt2x00queue_start_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x0d52fee1 rt2x00lib_pretbtt +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x0dc044e5 rt2x00mac_get_antenna +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x138a1a99 rt2x00mac_stop +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x19cb5783 rt2x00queue_start_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x21c30a5c rt2x00queue_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x24272338 rt2x00lib_txdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x24e088b4 rt2x00queue_for_each_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x2cf63ce0 rt2x00mac_bss_info_changed +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x2eabf943 rt2x00mac_get_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x31632a20 rt2x00mac_add_interface +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x390c9d66 rt2x00mac_set_key +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x49f9447e rt2x00mac_conf_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x4ceb28e8 rt2x00lib_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x4fddfe9d rt2x00lib_remove_dev +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x513af2dd rt2x00queue_stop_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x5410e465 rt2x00queue_pause_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x5e74252a rt2x00mac_set_tim +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x64d5c392 rt2x00queue_map_txskb +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x67fce50f rt2x00mac_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x688de6f8 rt2x00mac_start +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x6a9ac722 rt2x00lib_beacondone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x6ceee6f9 rt2x00lib_rxdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x6de106c0 rt2x00mac_get_ringparam +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x735d50da rt2x00lib_txdone_noinfo +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x86e60ff0 rt2x00mac_sta_add +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x8b2c12ec rt2x00mac_tx_frames_pending +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x8d45afb2 rt2x00mac_config +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x939f4c26 rt2x00lib_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xa0a8ad43 rt2x00mac_set_antenna +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xa3efbada rt2x00mac_configure_filter +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xa7de3022 rt2x00queue_unmap_skb +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xb3f7d79a rt2x00lib_dmastart +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xb706be60 rt2x00lib_get_bssidx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xb88a2e18 rt2x00mac_rfkill_poll +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xbb661275 rt2x00queue_stop_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xbbee7092 rt2x00queue_unpause_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xc32d913f rt2x00queue_flush_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xc817f9a9 rt2x00mac_remove_interface +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xc9abcaa8 rt2x00queue_get_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xcb8b1bba rt2x00mac_flush +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xd5d96b6d rt2x00lib_dmadone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xe355501f rt2x00lib_probe_dev +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xeae150ec rt2x00mac_sw_scan_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xf03f95bd rt2x00mac_sta_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xf68eed4c rt2x00mac_sw_scan_start +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0x0ee10598 rt2x00mmio_rxdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0x5a89d50f rt2x00mmio_regbusy_read +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0x654f7e7b rt2x00mmio_uninitialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0x934ce91b rt2x00mmio_initialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0xf0e11c0d rt2x00mmio_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0x27616b2e rt2x00pci_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0x3cd78d23 rt2x00pci_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0xa6bd12b2 rt2x00pci_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0xdd2e4bc6 rt2x00pci_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x014e13b8 rt2x00usb_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x03bbc051 rt2x00usb_vendor_req_buff_lock +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x06853008 rt2x00usb_disable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x0dd40ebb rt2x00usb_vendor_request_buff +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x16706234 rt2x00usb_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x2f606a18 rt2x00usb_regbusy_read +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x43180810 rt2x00usb_kick_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x53253145 rt2x00usb_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x5a86c9f6 rt2x00usb_watchdog +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x7be585cb rt2x00usb_uninitialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xab324857 rt2x00usb_vendor_request +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xb254f231 rt2x00usb_clear_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xd33cb86c rt2x00usb_initialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xe1a1192f rt2x00usb_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xe454856f rt2x00usb_disconnect +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xe5fc2594 rt2x00usb_register_read_async +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x321d30db dm_writepowerindex +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x6e359669 rtl92c_set_p2p_ps_offload_cmd +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xa31af4ea dm_savepowerindex +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xd4b11e7b dm_restorepowerindex +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x0b187f88 rtl8723_phy_path_a_standby +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x0d8afc03 rtl8723_phy_reload_adda_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x1d803c8f rtl8723_dm_init_edca_turbo +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x2afd208f rtl8723_write_fw +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x2b9483c2 rtl8723_phy_init_bb_rf_reg_def +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x2d372db2 rtl8723_phy_set_bb_reg +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x3070457e rtl8723_phy_rf_serial_read +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x31f0eaec rtl8723be_firmware_selfreset +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x46ccd3c2 rtl8723_dm_init_dynamic_txpower +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x660689df rtl8723_phy_reload_mac_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x6fee3a6c rtl8723_phy_set_sw_chnl_cmdarray +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x85e651cb rtl8723_fw_free_to_go +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x90e01827 rtl8723_phy_path_adda_on +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xaf4d6d94 rtl8723_phy_calculate_bit_shift +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xb1f32f47 rtl8723_phy_mac_setting_calibration +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xb240bc62 rtl8723_save_adda_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xb8db3732 rtl8723_phy_path_a_fill_iqk_matrix +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xbad613ed rtl8723_phy_pi_mode_switch +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xbc705180 rtl8723_phy_query_bb_reg +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xbe95b1af rtl8723_phy_rf_serial_write +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xcde8f098 rtl8723_cmd_send_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xcf4d6d0c rtl8723_phy_save_mac_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xd6bdefdc rtl8723ae_firmware_selfreset +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xda83d0f4 rtl8723_phy_txpwr_idx_to_dbm +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xda8a6c55 rtl8723_dm_init_dynamic_bb_powersaving +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xe79a0d54 rtl8723_enable_fw_download +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xf0476d08 rtl8723_fw_page_write +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xfc0770c4 rtl8723_fw_block_write +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xff2b6b6c rtl8723_download_fw +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x0c985817 rtl_p2p_info +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x1bb4e86d rtl_beacon_statistic +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x241dedc1 rtl_tid_to_ac +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x2921a4d4 rtl_btc_status_false +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x4083e76c read_efuse_byte +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x66ab9dc8 rtl_is_special_data +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x6b4de810 rtl_lps_change_work_callback +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x7845f8ee rtl_tx_mgmt_proc +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x87d6ae06 rtl_attribute_group +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x935c9ea6 rtl_dbgp_flag_init +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x9e36722f rtl_init_core +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x9ee99248 rtl_recognize_peer +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xa2af06ce rtl_deinit_deferred_work +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xa7e36aea rtl_init_rx_config +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xac93f72d rtl_swlps_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xafcdc668 rtl_global_var +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xc1319bcc rtl_deinit_core +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xd834ab01 rtl_action_proc +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xeb343544 rtl_ips_nic_on +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xfe66e3d6 rtl_ops +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xff805176 rtl_deinit_rfkill +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0x80aea80b wl1251_init_ieee80211 +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0xc0de9671 wl1251_free_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0xe2ba176a wl1251_alloc_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x01df7208 wl1271_cmd_test +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x038d8ca9 wl1271_ps_elp_wakeup +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x03d5290b wl1271_acx_init_mem_config +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x03eac403 wlcore_enable_interrupts +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x0aef78ec wlcore_event_rssi_trigger +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x1a8484d1 wl1271_cmd_send +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x1cd63cb2 wlcore_event_dummy_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x1d9ced1e wlcore_boot_upload_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x37250239 wlcore_set_partition +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x392f4626 wlcore_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x3a8c697c wl12xx_acx_mem_cfg +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x3d1c59a4 wlcore_synchronize_interrupts +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x41569949 wlcore_event_max_tx_failure +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x53dff67d wl12xx_debug_level +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x5c3633ff wl1271_tx_flush +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x5e295687 wlcore_disable_interrupts +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x633f6593 wlcore_cmd_wait_for_event_or_timeout +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x64866967 wlcore_translate_addr +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x678e9473 wl1271_ps_elp_sleep +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x712cb1dd wl1271_acx_sleep_auth +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x7509cb24 wlcore_disable_interrupts_nosync +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x77092dcc wlcore_get_native_channel_type +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x7eaf0b0f wlcore_boot_upload_nvs +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x81588521 wlcore_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x898e04cc wlcore_event_soft_gemini_sense +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x93c6e61d wlcore_scan_sched_scan_ssid_list +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x9984f6c5 wl1271_acx_set_ht_capabilities +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x99d2c0a3 wl1271_cmd_data_path +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x99f46e66 wlcore_set_scan_chan_params +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xa090aa9d wl1271_acx_pm_config +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xa296e419 wlcore_set_key +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xa42d8a47 wlcore_free_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xadbd4490 wl1271_tx_min_rate_get +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xadd48323 wlcore_event_sched_scan_completed +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xb6a88231 wlcore_event_inactive_sta +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xb805a0fa wl1271_format_buffer +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xc30743a2 wl12xx_cmd_build_probe_req +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xc3c2167d wlcore_event_roc_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xc64faafe wlcore_alloc_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xce461230 wlcore_scan_sched_scan_results +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xd969cd2b wlcore_event_channel_switch +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xddb9cd2c wlcore_boot_run_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xe269c49c wl1271_debugfs_update_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xe7451231 wl1271_cmd_configure +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xf436f0f2 wlcore_event_ba_rx_constraint +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xf812911b wlcore_event_beacon_loss +EXPORT_SYMBOL_GPL drivers/nfc/mei_phy 0x5a0ee7f0 nfc_mei_phy_alloc +EXPORT_SYMBOL_GPL drivers/nfc/mei_phy 0x8d08f20f mei_phy_ops +EXPORT_SYMBOL_GPL drivers/nfc/mei_phy 0xb20dd3b2 nfc_mei_phy_free +EXPORT_SYMBOL_GPL drivers/nfc/nfcmrvl/nfcmrvl 0x6db8f4fa nfcmrvl_nci_recv_frame +EXPORT_SYMBOL_GPL drivers/nfc/nfcmrvl/nfcmrvl 0x7433154e nfcmrvl_nci_unregister_dev +EXPORT_SYMBOL_GPL drivers/nfc/nfcmrvl/nfcmrvl 0x891ed853 nfcmrvl_parse_dt +EXPORT_SYMBOL_GPL drivers/nfc/nfcmrvl/nfcmrvl 0xeae9ba09 nfcmrvl_nci_register_dev +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x034e4867 st_nci_enable_se +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x06424de4 st_nci_hci_cmd_received +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x08165b8a st_nci_disable_se +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x5e7425f6 st_nci_probe +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x6d85290a st_nci_discover_se +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x8f2a8548 st_nci_hci_load_session +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0xd771601c st_nci_remove +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0xdad52f50 st_nci_hci_event_received +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 0x718826e7 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 0xaf0fb200 ntb_transport_register_client +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0xb21eb738 ntb_transport_unregister_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/pinctrl/intel/pinctrl-intel 0x3c9e8ccc intel_pinctrl_probe +EXPORT_SYMBOL_GPL drivers/pinctrl/intel/pinctrl-intel 0x41e1fb23 intel_pinctrl_suspend +EXPORT_SYMBOL_GPL drivers/pinctrl/intel/pinctrl-intel 0x6b1cbc49 intel_pinctrl_resume +EXPORT_SYMBOL_GPL drivers/pinctrl/intel/pinctrl-intel 0xa03d87dd intel_pinctrl_remove +EXPORT_SYMBOL_GPL drivers/platform/x86/asus-wmi 0x2aa8be57 asus_wmi_unregister_driver +EXPORT_SYMBOL_GPL drivers/platform/x86/asus-wmi 0x2dec4c03 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/intel_ips 0x46809fa9 ips_link_to_i915_driver +EXPORT_SYMBOL_GPL drivers/platform/x86/intel_pmc_ipc 0x56235c72 intel_pmc_ipc_command +EXPORT_SYMBOL_GPL drivers/platform/x86/intel_pmc_ipc 0x75068282 intel_pmc_ipc_raw_cmd +EXPORT_SYMBOL_GPL drivers/platform/x86/intel_pmc_ipc 0xdea07053 intel_pmc_ipc_simple_command +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/thinkpad_acpi 0x706cdcef tpacpi_led_set +EXPORT_SYMBOL_GPL drivers/platform/x86/wmi 0x3ecf6cfc wmi_install_notify_handler +EXPORT_SYMBOL_GPL drivers/platform/x86/wmi 0x561c634a wmi_evaluate_method +EXPORT_SYMBOL_GPL drivers/platform/x86/wmi 0x876d29f1 wmi_get_event_data +EXPORT_SYMBOL_GPL drivers/platform/x86/wmi 0xb5a6ebe2 wmi_remove_notify_handler +EXPORT_SYMBOL_GPL drivers/platform/x86/wmi 0xc9d4d6d1 wmi_has_guid +EXPORT_SYMBOL_GPL drivers/platform/x86/wmi 0xda29f8b0 wmi_set_block +EXPORT_SYMBOL_GPL drivers/platform/x86/wmi 0xfb882fb7 wmi_query_block +EXPORT_SYMBOL_GPL drivers/power/pcf50633-charger 0x4a7f6c73 pcf50633_mbc_get_status +EXPORT_SYMBOL_GPL drivers/power/pcf50633-charger 0x57ee9f44 pcf50633_mbc_get_usb_online_status +EXPORT_SYMBOL_GPL drivers/power/pcf50633-charger 0xdfca9111 pcf50633_mbc_usb_curlim_set +EXPORT_SYMBOL_GPL drivers/pwm/pwm-lpss 0x21e22848 pwm_lpss_byt_info +EXPORT_SYMBOL_GPL drivers/pwm/pwm-lpss 0x81ca2e1d pwm_lpss_bsw_info +EXPORT_SYMBOL_GPL drivers/pwm/pwm-lpss 0xb563cdb0 pwm_lpss_remove +EXPORT_SYMBOL_GPL drivers/pwm/pwm-lpss 0xfa64430c pwm_lpss_probe +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x7ed4de6b mc13xxx_fixed_regulator_set_voltage +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x942759e5 mc13xxx_regulator_ops +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0xf861e6c1 mc13xxx_fixed_regulator_ops +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x2263d85f wm8350_dcdc_set_slot +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x663c9274 wm8350_register_regulator +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x6958ea03 wm8350_register_led +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x7c35b124 wm8350_dcdc25_set_mode +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0xe12b6727 wm8350_isink_set_flash +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0xfb7e2c56 wm8350_ldo_set_slot +EXPORT_SYMBOL_GPL drivers/regulator/wm8400-regulator 0x0bac5693 wm8400_register_regulator +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x02199ae7 cxgbi_device_find_by_netdev_rcu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x0242bd36 cxgbi_device_register +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x0361855a cxgbi_device_portmap_cleanup +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x070cf7ce cxgbi_conn_pdu_ready +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x076d952a cxgbi_bind_conn +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x09762803 cxgbi_sock_fail_act_open +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x13a46038 cxgbi_sock_purge_wr_queue +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x1c7f9706 cxgbi_parse_pdu_itt +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x31934ebd cxgbi_set_host_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x3692e5f7 cxgbi_iscsi_cleanup +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x3a5c4389 cxgbi_ddp_page_size_factor +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x3e440f45 cxgbi_sock_free_cpl_skbs +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x445f79ad cxgbi_conn_init_pdu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x44bee65d cxgbi_ep_disconnect +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x49d685ca cxgbi_conn_tx_open +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x4a691994 cxgbi_sock_skb_entail +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x55a99d75 cxgbi_ddp_cleanup +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x5ac3cacb cxgbi_sock_act_open_req_arp_failure +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x5f05f1b3 cxgbi_device_find_by_netdev +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x61876c9f cxgbi_set_conn_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x64d20f49 cxgbi_cleanup_task +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x66e03ef7 cxgbi_sock_rcv_close_conn_rpl +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x717c2e76 cxgbi_conn_xmit_pdu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x72297d88 cxgbi_sock_rcv_peer_close +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x77a7036a cxgbi_sock_closed +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x7fdb6004 cxgbi_device_unregister_all +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x83d35df4 cxgbi_create_session +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x844c5da6 cxgbi_get_ep_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x869f0725 cxgbi_sock_rcv_abort_rpl +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x875ca210 cxgbi_ep_connect +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x89d8f589 cxgbi_device_portmap_create +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x8c2ba369 cxgbi_ddp_ppod_clear +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x8e02c092 cxgbi_get_conn_stats +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x9438fa46 cxgbi_device_find_by_lldev +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xa71ba2b6 cxgbi_hbas_remove +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xa7c660a3 cxgbi_sock_rcv_wr_ack +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xa90308c4 cxgbi_device_unregister +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xaaa50dc1 cxgbi_sock_check_wr_invariants +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xb06a69d1 cxgbi_sock_established +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xb5c37edd cxgbi_ep_poll +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xb8fa12f5 cxgbi_create_conn +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xb96bd86d cxgbi_get_host_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xbb3d45e6 cxgbi_ddp_init +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xcefed850 cxgbi_hbas_add +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xd77c99a1 cxgbi_destroy_session +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xdb5728b8 cxgbi_ddp_ppod_set +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xdd817f5e cxgbi_conn_alloc_pdu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xe3b8014e cxgbi_sock_select_mss +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xea6ad962 cxgbi_iscsi_init +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xef346615 cxgbi_attr_is_visible +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x04bffed8 scsi_register_device_handler +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x0fadc408 scsi_dh_detach +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x593a36c2 scsi_dh_handler_exist +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x60481f72 scsi_dh_attach +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x69b69409 scsi_dh_set_params +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x6f2b089a scsi_unregister_device_handler +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0xa127a925 scsi_dh_attached_handler_name +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0xeffc9d62 scsi_dh_activate +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x047b8e9b fcoe_ctlr_get_lesb +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x0d04649b fcoe_get_paged_crc_eof +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x0fb51275 fcoe_queue_timer +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x2038823a fcoe_get_wwn +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x374c1e1c fcoe_wwn_from_mac +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x60faec5c fcoe_fcf_device_delete +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x70e580f2 fcoe_libfc_config +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x73a814f4 fcoe_start_io +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x78e6caec fcoe_link_speed_update +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x7dd924b3 fcoe_fcf_device_add +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x80b48df9 fcoe_ctlr_device_add +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x8177b517 fcoe_fc_crc +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x84b3d915 fcoe_wwn_to_str +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x87b61921 fcoe_check_wait_queue +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x8af833a8 fcoe_get_lesb +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x9244b644 fcoe_validate_vport_create +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x9b9823e9 fcoe_clean_pending_queue +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xdbdaced7 fcoe_ctlr_device_delete +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xf07fba63 __fcoe_get_lesb +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x478db8a3 iscsi_boot_create_target +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x82dad93c iscsi_boot_create_initiator +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0xbd8a0ed9 iscsi_boot_create_kset +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0xc4e901aa iscsi_boot_destroy_kset +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0xe4287ea6 iscsi_boot_create_host_kset +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0xf906c4eb iscsi_boot_create_ethernet +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x030e0a30 iscsi_target_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x06a6f565 iscsi_suspend_tx +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x0862b875 __iscsi_put_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x125a0cf2 iscsi_eh_device_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x12b2ad06 iscsi_switch_str_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x13e8cf8e iscsi_conn_bind +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x1810809f iscsi_conn_send_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x18f072fe iscsi_session_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x19c10070 iscsi_session_recovery_timedout +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x21868ba8 iscsi_put_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x218ac998 iscsi_host_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x23849aef iscsi_conn_failure +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x25ad6d52 iscsi_update_cmdsn +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x3974db62 iscsi_prep_data_out_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x3bef2f73 iscsi_pool_init +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x47c1e6e1 iscsi_conn_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x4a83a671 iscsi_set_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x4a97c896 iscsi_eh_recover_target +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x4d754ccc iscsi_session_failure +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x503ddc45 iscsi_host_set_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x523b9c2e iscsi_complete_scsi_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x5d1003f4 iscsi_host_remove +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x63edd8ec iscsi_host_add +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x6a283a09 iscsi_conn_queue_work +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x6e04293f iscsi_queuecommand +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x70a90746 iscsi_conn_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x7a6329f1 iscsi_itt_to_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x828c519e iscsi_suspend_queue +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x8d303b1b iscsi_pool_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x9d68638c __iscsi_complete_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x9e809fe0 __iscsi_get_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xa401f64a iscsi_eh_abort +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xae584af8 iscsi_eh_target_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xb5c5c817 iscsi_conn_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xbf8c9136 iscsi_conn_get_addr_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xbfa49b58 iscsi_eh_session_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xc5f9d20b iscsi_verify_itt +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xd05bc278 iscsi_session_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xd2c95709 iscsi_conn_start +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xd5ce6382 iscsi_host_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xd72365e6 iscsi_requeue_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xe6be2466 iscsi_itt_to_ctask +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xe76c3b11 iscsi_complete_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xf798c11a iscsi_host_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xf85a18f0 iscsi_session_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xfe90d131 iscsi_conn_stop +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x0c67a183 iscsi_tcp_dgst_header +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x0dea1402 iscsi_tcp_r2tpool_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x270d3546 iscsi_segment_seek_sg +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x27d89ba9 iscsi_tcp_segment_unmap +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x37c1df0a iscsi_tcp_segment_done +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x62bf61de iscsi_tcp_hdr_recv_prep +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x6650ef5e iscsi_tcp_recv_skb +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x767bc027 iscsi_tcp_task_init +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x90035916 iscsi_tcp_conn_get_stats +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xa2750f90 iscsi_tcp_conn_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xa298ae45 iscsi_tcp_r2tpool_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xb066e224 iscsi_tcp_task_xmit +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xb40c9a62 iscsi_tcp_set_max_r2t +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xbbdd0af4 iscsi_tcp_cleanup_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xbdeadd60 iscsi_tcp_conn_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xe25867bf iscsi_segment_init_linear +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xffd17bd5 iscsi_tcp_recv_segment_is_hdr +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x1913d8ea sas_task_abort +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x19f15a02 sas_unregister_ha +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x1e865ec7 sas_register_ha +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x38a02d74 sas_phy_reset +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x466ff571 sas_ata_schedule_reset +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x46af7561 sas_ssp_task_response +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x4fa1c0b2 sas_free_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x5911a862 sas_target_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x5e612881 sas_domain_release_transport +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x6e078f85 sas_alloc_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x744b29a5 sas_eh_device_reset_handler +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x7b10de11 sas_drain_work +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x7e058a8e sas_change_queue_depth +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x8bf36511 sas_slave_configure +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x8fbb51e0 sas_ioctl +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x9250c75c sas_get_local_phy +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x94a7a1f8 sas_queuecommand +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xa3ca0cb7 sas_eh_bus_reset_handler +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xaaee91a4 sas_request_addr +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xc466ab2d sas_bios_param +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xd2209876 sas_domain_attach_transport +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xe57a4b81 sas_target_destroy +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xe80edc66 sas_eh_abort_handler +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xf96f9d42 sas_alloc_slow_task +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x017f6ff7 iscsi_get_port_speed_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x04a38bc7 iscsi_destroy_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x0cb9cac9 iscsi_block_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x0db2a78c iscsi_ping_comp_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x0fe824e4 iscsi_destroy_iface +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x12ed4a5d iscsi_unregister_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x18099c59 iscsi_session_chkready +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x268832de iscsi_create_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x2787b8c8 iscsi_destroy_all_flashnode +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x2818f517 iscsi_alloc_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x2819a141 iscsi_get_port_state_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x317ce4cd iscsi_is_session_dev +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x364700f4 iscsi_conn_login_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x42835fc9 iscsi_conn_error_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x4bd3dbc6 iscsi_free_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x54800735 iscsi_recv_pdu +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x54e7e58f iscsi_session_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x58b2f26e iscsi_create_iface +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x64cdff73 iscsi_destroy_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x65a8a7e2 iscsi_find_flashnode_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x698921fa iscsi_scan_finished +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x699fe53e iscsi_get_discovery_parent_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x6bdd9168 iscsi_create_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x705fa7ee iscsi_create_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x76bb4211 iscsi_find_flashnode_sess +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x84a005f1 iscsi_get_router_state_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x932218e3 iscsi_remove_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x941bbe42 iscsi_flashnode_bus_match +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xa01e3853 iscsi_is_session_online +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xa690c390 iscsi_lookup_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xaee8015c iscsi_destroy_flashnode_sess +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xaeeb13a7 iscsi_is_flashnode_conn_dev +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xb0e2c65f iscsi_create_flashnode_sess +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xb41a4233 iscsi_offload_mesg +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xb4cc97c7 iscsi_destroy_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xb6622ac8 iscsi_register_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xbbf5d997 iscsi_post_host_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xbc071179 iscsi_get_ipaddress_state_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xbf47d8dc iscsi_add_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xc6c2f90d iscsi_create_flashnode_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xe0567d25 iscsi_unblock_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xe7681b9f iscsi_block_scsi_eh +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xf9f80f0e iscsi_host_for_each_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0x0592e848 sas_is_tlr_enabled +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0x2e29321d sas_tlr_supported +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0x43c3d9ab sas_disable_tlr +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0xbe58f2be sas_enable_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 0xeb1902f5 spi_populate_tag_msg +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x234359bb srp_rport_add +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x2e003b62 srp_rport_del +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x5034577d srp_remove_host +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x5dd76ab0 srp_attach_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x86dec015 srp_release_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0xa1c625ac srp_stop_rport_timers +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0xee891cc0 srp_tmo_valid +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0x02888ae7 ufshcd_remove +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0x439f3961 ufshcd_init +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0x77e93e50 ufshcd_dme_set_attr +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0xf8535c02 ufshcd_dme_get_attr +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x15faef61 spi_bitbang_start +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x57efedfe spi_bitbang_cleanup +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x771673fd spi_bitbang_setup_transfer +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0xc1afed52 spi_bitbang_stop +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0xe49639cd spi_bitbang_setup +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0x1c070d1c dw_spi_remove_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0x21c59517 dw_spi_suspend_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0x6b25089c dw_spi_add_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0xf5aaf715 dw_spi_resume_host +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x13cd688c spmi_ext_register_readl +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x258157f1 spmi_ext_register_writel +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x415c7b2e spmi_ext_register_write +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x44b75d9b spmi_driver_register +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x540f4d89 spmi_command_reset +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x5ad36a68 spmi_register_read +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x6403ed97 spmi_ext_register_read +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x6429e590 spmi_command_shutdown +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x687b088f spmi_device_remove +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x7bdce42d spmi_command_sleep +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x7ca16759 spmi_controller_add +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x9fa6d0e9 spmi_register_zero_write +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xb4a0d0ab spmi_command_wakeup +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xbea0fc43 spmi_controller_remove +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xc461e990 spmi_controller_alloc +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xc8c39781 spmi_register_write +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xe0831812 spmi_device_add +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xe40938fa spmi_device_alloc +EXPORT_SYMBOL_GPL drivers/ssb/ssb 0x9ed7c893 ssb_pmu_spuravoid_pllupdate +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x02152cb7 comedi_alloc_subdev_readback +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x03791f2c comedi_buf_write_samples +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x0cd330f4 range_unknown +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x187f2569 comedi_readback_insn_read +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x21102f87 range_0_32mA +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x2228b41f __comedi_request_region +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x24e0e016 comedi_buf_read_n_available +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x282796a0 comedi_set_spriv_auto_free +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x2abcffe6 comedi_alloc_devpriv +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x2e1113a3 comedi_buf_read_alloc +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x2f0ad9d3 range_bipolar5 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x3d5afb7c comedi_is_subdevice_running +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x4236eaaf range_4_20mA +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x4b1e685b comedi_dio_insn_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x4fe634f3 range_bipolar2_5 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x523b993d comedi_alloc_subdevices +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x55529087 comedi_inc_scan_progress +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x55702f58 comedi_dio_update_state +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x57dfcaae comedi_event +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x598a3e7e comedi_legacy_detach +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x6b2a6af5 comedi_bytes_per_scan +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x73dc1e65 comedi_handle_events +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x8113872c range_unipolar10 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x87043932 comedi_buf_write_free +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x8af62dd7 comedi_buf_read_free +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x924d67ad comedi_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x93146339 comedi_alloc_spriv +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xa06e2348 comedi_load_firmware +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xa1f369aa comedi_request_region +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xa289b0c8 comedi_set_hw_dev +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xb2da8453 comedi_check_chanlist +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 0xc009bc18 comedi_driver_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xc06aeb7a comedi_nscans_left +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xc4ba4b42 comedi_buf_read_samples +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xc5e200b2 comedi_auto_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xc8deb099 comedi_dev_put +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xcffaa08b comedi_auto_unconfig +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xd104ecdf comedi_nsamples_left +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xdb2044b2 range_unipolar5 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xe3ea0467 comedi_timeout +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xe53e8c6e comedi_dev_get_from_minor +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xfe7cf740 comedi_buf_write_alloc +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0x433de778 comedi_pci_enable +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0x9706ab87 comedi_pci_driver_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0xc281ef33 comedi_pci_auto_unconfig +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0xcee99958 comedi_pci_auto_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0xd93878a1 comedi_to_pci_dev +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0xdc662a29 comedi_pci_detach +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0xe1b63979 comedi_pci_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0xe9861537 comedi_pci_disable +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pcmcia 0x1496d0bc comedi_to_pcmcia_dev +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pcmcia 0x16bf0140 comedi_pcmcia_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pcmcia 0x2da682e0 comedi_pcmcia_auto_unconfig +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pcmcia 0x2f011320 comedi_pcmcia_disable +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pcmcia 0x31d71565 comedi_pcmcia_enable +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pcmcia 0x4785d4d2 comedi_pcmcia_auto_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pcmcia 0xd1ad3cea comedi_pcmcia_driver_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0x18fec11e comedi_usb_auto_unconfig +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0x4261afed comedi_usb_driver_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0x6bb422ff comedi_usb_auto_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0x6fd5afcc comedi_usb_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0xde9ef90f comedi_to_usb_dev +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0xe2bde3f3 comedi_to_usb_interface +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/addi_watchdog 0x4b8083f8 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 0x4dbce144 amplc_dio200_common_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/amplc_dio200_common 0x53f7bb45 amplc_dio200_set_enhance +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/amplc_pc236_common 0x189622ef amplc_pc236_common_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x339a6d6d comedi_8254_pacer_enable +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x3b819169 comedi_8254_write +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x56e3bbe1 comedi_8254_read +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x6dedac87 comedi_8254_set_mode +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x70841432 comedi_8254_mm_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x70d72413 comedi_8254_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x728b33a1 comedi_8254_ns_to_timer +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x7b7925d5 comedi_8254_subdevice_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0xcf4da28e comedi_8254_update_divisors +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0xd5979e8f comedi_8254_cascade_ns_to_timer +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0xd8249629 comedi_8254_set_busy +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0xdf38359e comedi_8254_load +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0xf4896493 comedi_8254_status +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8255 0x34fd8e9a subdev_8255_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8255 0x5f9305a4 subdev_8255_mm_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8255 0x61776398 subdev_8255_regbase +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_isadma 0x0d68fcd9 comedi_isadma_poll +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 0x6815a033 comedi_isadma_free +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_isadma 0x9c967a33 comedi_isadma_alloc +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_isadma 0xa3d01a85 comedi_isadma_program +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_isadma 0xa7ebb8a3 comedi_isadma_set_mode +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/das08 0xd517911c das08_common_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x10d87c00 mite_dma_tcr +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x24f72775 mite_detach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x37ee63f0 mite_bytes_read_from_memory_ub +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x40169457 mite_bytes_read_from_memory_lb +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x52027f16 mite_dma_disarm +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x5c03c320 mite_bytes_in_transit +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x5cfd1a88 mite_release_channel +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x6159ddfc mite_done +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x643c328d mite_dma_arm +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x65fbd65d mite_sync_input_dma +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x69c0e93d mite_alloc +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x746f38cd mite_alloc_ring +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x75fb53be mite_get_status +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x7b480ef7 mite_setup2 +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x88d33935 mite_buf_change +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x8f8c879b mite_bytes_written_to_memory_lb +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x913696a1 mite_request_channel_in_range +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x9ade904d mite_prep_dma +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xe3060671 mite_free_ring +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xf874703c mite_bytes_written_to_memory_ub +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xff2e0ac4 mite_sync_output_dma +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_common 0x4b0a8f1e labpc_common_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_common 0x8e88cf5c labpc_common_detach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_isadma 0x16ca10c0 labpc_drain_dma +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_isadma 0x4b0d0c22 labpc_init_dma_chan +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_isadma 0x61cbd833 labpc_setup_dma +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_isadma 0x97999911 labpc_free_dma_chan +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_isadma 0xa1a4d4a1 labpc_handle_dma_status +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x0354419d ni_tio_init_counter +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x4410e820 ni_gpct_device_construct +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x48b48536 ni_tio_arm +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x5adcd918 ni_tio_insn_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x6f8277f2 ni_tio_set_gate_src +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x7a02ba20 ni_gpct_device_destroy +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x906a63e8 ni_tio_insn_write +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0xd10d1016 ni_tio_insn_read +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0x043d25b3 ni_tio_cancel +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0x0eb48d42 ni_tio_cmd +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0x11fb83c9 ni_tio_set_mite_channel +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0x3fe031ff ni_tio_handle_interrupt +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0x61856b78 ni_tio_acknowledge +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0x88a6363e ni_tio_cmdtest +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x003f32bc comedi_dio_get_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x4793d7ab comedi_get_n_channels +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x4948536c comedi_dio_bitfield2 +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x6be76e4a comedi_close +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0xc1c636a5 comedi_find_subdevice_by_type +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0xeb5affe7 comedi_dio_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0xfa33d959 comedi_open +EXPORT_SYMBOL_GPL drivers/staging/iio/addac/adt7316 0x93a7d67a adt7316_pm_ops +EXPORT_SYMBOL_GPL drivers/staging/lustre/lustre/obdclass/obdclass 0x0ee5df14 lustre_attr_show +EXPORT_SYMBOL_GPL drivers/staging/lustre/lustre/obdclass/obdclass 0x1e4d4635 lustre_kobj +EXPORT_SYMBOL_GPL drivers/staging/lustre/lustre/obdclass/obdclass 0x3bb02aee debugfs_lustre_root +EXPORT_SYMBOL_GPL drivers/staging/lustre/lustre/obdclass/obdclass 0x5b2b2362 lustre_attr_store +EXPORT_SYMBOL_GPL drivers/staging/lustre/lustre/obdclass/obdclass 0xb0bb9daa lustre_sysfs_ops +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x00a90c23 spk_do_catch_up +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x0e81c76d spk_serial_out +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x13f82ad1 spk_synth_is_alive_restart +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x14f06fe7 spk_serial_in_nowait +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x1eb33520 synth_remove +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x2ab8daa7 speakup_info +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 0x475e158a synth_request_region +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x67117547 spk_synth_is_alive_nop +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x6a512e2a synth_add +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x71162001 spk_var_store +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x8b3aeb81 speakup_event +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x8e146195 synth_release_region +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x9a888082 synth_buffer_getc +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xa25b4382 spk_synth_immediate +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xb48956f8 synth_buffer_peek +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xb71e35ca spk_serial_synth_probe +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xbbd15a51 speakup_start_ttys +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xbd96a5fd spk_var_show +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xc766ae09 synth_printf +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xd1b551a2 spk_get_var +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xe7cd4558 spk_serial_release +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xe7e810f8 spk_serial_in +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xff1783bc spk_synth_flush +EXPORT_SYMBOL_GPL drivers/staging/unisys/visorbus/visorbus 0x0877dd5c visor_periodic_work_start +EXPORT_SYMBOL_GPL drivers/staging/unisys/visorbus/visorbus 0x0ec0434e visorchannel_zoneid +EXPORT_SYMBOL_GPL drivers/staging/unisys/visorbus/visorbus 0x149bde55 visorchannel_clear +EXPORT_SYMBOL_GPL drivers/staging/unisys/visorbus/visorbus 0x28a61e64 visorbus_register_visor_driver +EXPORT_SYMBOL_GPL drivers/staging/unisys/visorbus/visorbus 0x28c58726 visorbus_enable_channel_interrupts +EXPORT_SYMBOL_GPL drivers/staging/unisys/visorbus/visorbus 0x37626eff visorchannel_get_clientpartition +EXPORT_SYMBOL_GPL drivers/staging/unisys/visorbus/visorbus 0x39fe5de1 visorchannel_signalqueue_max_slots +EXPORT_SYMBOL_GPL drivers/staging/unisys/visorbus/visorbus 0x4063ea9d visorchannel_signalqueue_slots_avail +EXPORT_SYMBOL_GPL drivers/staging/unisys/visorbus/visorbus 0x4e4bfbe5 visorchannel_signalremove +EXPORT_SYMBOL_GPL drivers/staging/unisys/visorbus/visorbus 0x5e533597 visor_periodic_work_nextperiod +EXPORT_SYMBOL_GPL drivers/staging/unisys/visorbus/visorbus 0x60aaf74b visorchannel_uuid_id +EXPORT_SYMBOL_GPL drivers/staging/unisys/visorbus/visorbus 0x6d35d8a5 visorbus_clear_channel +EXPORT_SYMBOL_GPL drivers/staging/unisys/visorbus/visorbus 0x720775df visorchannel_set_clientpartition +EXPORT_SYMBOL_GPL drivers/staging/unisys/visorbus/visorbus 0x7948d062 visorchannel_get_header +EXPORT_SYMBOL_GPL drivers/staging/unisys/visorbus/visorbus 0x7a4ec5c5 visor_periodic_work_stop +EXPORT_SYMBOL_GPL drivers/staging/unisys/visorbus/visorbus 0x85b49e2d visorchannel_get_uuid +EXPORT_SYMBOL_GPL drivers/staging/unisys/visorbus/visorbus 0x865e5ab6 visor_periodic_work_destroy +EXPORT_SYMBOL_GPL drivers/staging/unisys/visorbus/visorbus 0x87faaeb6 visorbus_disable_channel_interrupts +EXPORT_SYMBOL_GPL drivers/staging/unisys/visorbus/visorbus 0x96401fe5 visor_periodic_work_create +EXPORT_SYMBOL_GPL drivers/staging/unisys/visorbus/visorbus 0xa428b832 visorchannel_create +EXPORT_SYMBOL_GPL drivers/staging/unisys/visorbus/visorbus 0xac7771ac visorchannel_signalinsert +EXPORT_SYMBOL_GPL drivers/staging/unisys/visorbus/visorbus 0xae9128e9 visorchannel_create_with_lock +EXPORT_SYMBOL_GPL drivers/staging/unisys/visorbus/visorbus 0xb4aab617 visorchannel_write +EXPORT_SYMBOL_GPL drivers/staging/unisys/visorbus/visorbus 0xb8b79365 visorbus_read_channel +EXPORT_SYMBOL_GPL drivers/staging/unisys/visorbus/visorbus 0xca18358d visorchannel_id +EXPORT_SYMBOL_GPL drivers/staging/unisys/visorbus/visorbus 0xcc89f91f visorchannel_destroy +EXPORT_SYMBOL_GPL drivers/staging/unisys/visorbus/visorbus 0xd50a1ee0 visorchannel_debug +EXPORT_SYMBOL_GPL drivers/staging/unisys/visorbus/visorbus 0xd7a9d7e7 visorbus_registerdevnode +EXPORT_SYMBOL_GPL drivers/staging/unisys/visorbus/visorbus 0xe3b5efe1 visorchannel_get_physaddr +EXPORT_SYMBOL_GPL drivers/staging/unisys/visorbus/visorbus 0xebc569a9 visorbus_unregister_visor_driver +EXPORT_SYMBOL_GPL drivers/staging/unisys/visorbus/visorbus 0xed313c21 visorchannel_read +EXPORT_SYMBOL_GPL drivers/staging/unisys/visorbus/visorbus 0xf000c7ac visorchipset_register_busdev +EXPORT_SYMBOL_GPL drivers/staging/unisys/visorbus/visorbus 0xf990f627 visorchannel_get_nbytes +EXPORT_SYMBOL_GPL drivers/staging/unisys/visorbus/visorbus 0xf9e972da visorbus_write_channel +EXPORT_SYMBOL_GPL drivers/thermal/int340x_thermal/int340x_thermal_zone 0x49f94185 int340x_thermal_zone_remove +EXPORT_SYMBOL_GPL drivers/thermal/int340x_thermal/int340x_thermal_zone 0x5b9b70a8 int340x_thermal_zone_add +EXPORT_SYMBOL_GPL drivers/thermal/intel_soc_dts_iosf 0x3fddd40c intel_soc_dts_iosf_init +EXPORT_SYMBOL_GPL drivers/thermal/intel_soc_dts_iosf 0x57255852 intel_soc_dts_iosf_exit +EXPORT_SYMBOL_GPL drivers/thermal/intel_soc_dts_iosf 0x5d68da2e intel_soc_dts_iosf_interrupt_handler +EXPORT_SYMBOL_GPL drivers/thermal/intel_soc_dts_iosf 0xaea09ed8 intel_soc_dts_iosf_add_read_only_critical_trip +EXPORT_SYMBOL_GPL drivers/tty/n_tracesink 0x585ebaac n_tracesink_datadrain +EXPORT_SYMBOL_GPL drivers/uio/uio 0x059050e4 uio_unregister_device +EXPORT_SYMBOL_GPL drivers/uio/uio 0x8106b9f1 uio_event_notify +EXPORT_SYMBOL_GPL drivers/uio/uio 0xcede301c __uio_register_device +EXPORT_SYMBOL_GPL drivers/usb/atm/usbatm 0xc6cd5f6d usbatm_usb_disconnect +EXPORT_SYMBOL_GPL drivers/usb/atm/usbatm 0xdb23574c usbatm_usb_probe +EXPORT_SYMBOL_GPL drivers/usb/chipidea/ci_hdrc 0x765820b7 ci_hdrc_remove_device +EXPORT_SYMBOL_GPL drivers/usb/chipidea/ci_hdrc 0xeae5cb89 ci_hdrc_add_device +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0x179a1fce ulpi_write +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0x1b4ef5c1 ulpi_register_interface +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0x272009ed ulpi_unregister_interface +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0x65dddc2d ulpi_unregister_driver +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0x9b08f38c ulpi_read +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0xff61a64f ulpi_register_driver +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x05424f3e gether_get_host_addr_u8 +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x097cbf9f gether_set_qmult +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x0c95fc22 gether_disconnect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x1d7b28c1 gether_connect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x2e663ade gether_setup_name +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x3cfe4737 gether_register_netdev +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x4c2f732b gether_get_qmult +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x80dd7389 gether_get_dev_addr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x834d7aa2 gether_setup_name_default +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x8878cfa6 gether_cleanup +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xa226115f gether_set_dev_addr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xb121b402 gether_get_host_addr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xc74e3359 gether_get_ifname +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xcf6e61fd gether_get_host_addr_cdc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xcf7f0c6e gether_set_gadget +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xdce7714a gether_set_host_addr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0x33bfdca2 gserial_alloc_line +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0x624759b6 gserial_connect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0x89263781 gs_free_req +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0x89c92d7f gserial_disconnect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0xb6652875 gserial_free_line +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0xf9e5ceeb gs_alloc_req +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_fs 0x4475b8b4 ffs_lock +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_fs 0x708eb516 ffs_name_dev +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_fs 0xf3d03f93 ffs_single_dev +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x0a5230df fsg_common_set_nluns +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 0x1a59d167 fsg_store_nofua +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x1b1cc3af store_cdrom_address +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 0x1df4c7a1 fsg_store_cdrom +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x228736d5 fsg_store_file +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x250c8cf1 fsg_lun_fsync_sub +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x26f0022a fsg_common_remove_lun +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 0x2d10b6a7 fsg_common_create_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 0x3e695f53 fsg_store_ro +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x3f31ee42 fsg_show_removable +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 0x51007322 fsg_lun_close +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x51707c29 fsg_common_run_thread +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 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 0x95cffb3e fsg_hs_bulk_in_desc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x99023bfc fsg_common_put +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 0x9dc025a5 fsg_common_free_luns +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xa33da748 fsg_show_nofua +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xa46e6443 fsg_common_get +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 0xac73f76b fsg_show_cdrom +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 0xb6f5e099 fsg_common_set_cdev +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xcaa4fcbe fsg_show_file +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xd18edc53 fsg_lun_open +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xd3ae3b65 fsg_common_create_luns +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xd468f882 fsg_common_set_ops +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xd9587e85 fsg_show_ro +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xe4d1591e fsg_config_from_params +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 0xf567b502 fsg_store_removable +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x0faf6106 rndis_set_param_medium +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x116ca102 rndis_register +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x331d6293 rndis_signal_disconnect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x39d3bdbe rndis_add_hdr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x57cc3fca rndis_get_next_response +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x6312f87d rndis_msg_parser +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x6796fc17 rndis_rm_hdr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xaf4d0c4e rndis_free_response +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xb17d63e5 rndis_signal_connect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xbd60fbaa rndis_borrow_net +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xc46eeebb rndis_set_param_dev +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xd19eb557 rndis_set_param_vendor +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xd37a61ba rndis_uninit +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xd5f802d8 rndis_deregister +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xf03e341f rndis_set_host_mac +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x00808c10 usb_string_ids_n +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x0b322529 usb_assign_descriptors +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x199920f1 usb_get_function_instance +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x1c89465e usb_function_activate +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x2a9cc470 usb_ep_autoconfig +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x2e09263f usb_copy_descriptors +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x2e33f45d usb_add_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x335b935c usb_interface_id +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x34db37ce usb_function_unregister +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x3dcd9141 usb_free_all_descriptors +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x3f369977 usb_string_ids_tab +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x51d05007 usb_put_function_instance +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x56a067d9 usb_function_register +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x5747e27a usb_composite_probe +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x58412b42 config_ep_by_speed +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x6b4ddbcd usb_gstrings_attach +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x6faf8efc usb_function_deactivate +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x83291369 usb_composite_setup_continue +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x94d7075a usb_gadget_get_string +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xa001b4b2 usb_composite_unregister +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xa073382d alloc_ep_req +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xb0247fa1 usb_get_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xc4be15fa usb_string_id +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xc4d6f143 usb_ep_autoconfig_ss +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xc55b4200 usb_add_config +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xc59d2ffd usb_ep_autoconfig_reset +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xc6999b95 usb_add_config_only +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xca460b73 usb_composite_overwrite_options +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xd2ea2134 usb_descriptor_fillbuf +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xd8c3b4b9 usb_put_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xd91067e3 usb_remove_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xf474a207 usb_gadget_config_buf +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xfb669620 unregister_gadget_item +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x09245757 usb_gadget_unmap_request +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x29555104 usb_gadget_map_request +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x352cf494 usb_gadget_giveback_request +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x390e53c5 usb_udc_attach_driver +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x3d1700be usb_gadget_unregister_driver +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x514e5a2d usb_udc_vbus_handler +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x5be3c9dc usb_gadget_udc_reset +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x846ff9a8 usb_gadget_probe_driver +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x90e4cd03 usb_del_gadget_udc +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0xcf6aed8a usb_add_gadget_udc +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0xd42c2568 usb_add_gadget_udc_release +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0xfe04dbb9 usb_gadget_set_state +EXPORT_SYMBOL_GPL drivers/usb/misc/ezusb 0x2c2f6a3c ezusb_fx1_set_reset +EXPORT_SYMBOL_GPL drivers/usb/misc/ezusb 0x4139b5d9 ezusb_fx1_ihex_firmware_download +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x033f9a81 usb_ftdi_elan_edset_output +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x0b698d7b usb_ftdi_elan_read_pcimem +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x3d7717e2 usb_ftdi_elan_edset_input +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x405997e7 usb_ftdi_elan_write_pcimem +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x86ce119e ftdi_elan_gone_away +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x911abfdb usb_ftdi_elan_edset_single +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xb7a1c9bd usb_ftdi_elan_edset_setup +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xc62f2a0b usb_ftdi_elan_edset_flush +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xc80b5566 usb_ftdi_elan_edset_empty +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0x0892ae1a musb_writew +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0x56d31820 musb_writel +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0x72234dd6 musb_readw +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0x7335c0c0 musb_interrupt +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0x96919667 musb_readl +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0xac5f3d70 musb_readb +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0xcb32cb36 musb_writeb +EXPORT_SYMBOL_GPL drivers/usb/phy/phy-isp1301 0x0d816816 isp1301_get_client +EXPORT_SYMBOL_GPL drivers/usb/serial/usb_wwan 0xcbf6a87d usb_wwan_port_probe +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x190c02f6 usb_serial_generic_close +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x37757862 usb_serial_generic_write +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x5a11be3d usb_serial_generic_write_bulk_callback +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x5ece38a5 usb_serial_generic_wait_until_sent +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x5f287f34 usb_serial_register_drivers +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x5f40a804 usb_serial_handle_dcd_change +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x6709ec24 usb_serial_deregister_drivers +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x700e3ee2 usb_serial_generic_chars_in_buffer +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x81651e39 usb_serial_generic_throttle +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x8941e45c usb_serial_generic_tiocmiwait +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x912af49f usb_serial_generic_read_bulk_callback +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x91cb4b89 usb_serial_generic_submit_read_urbs +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x924c3f0d usb_serial_handle_sysrq_char +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x933c8bc5 usb_serial_generic_get_icount +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xa9600c1c usb_serial_generic_resume +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xb674378f usb_serial_handle_break +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xbbda6dd9 usb_serial_port_softint +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xc6af0113 usb_serial_generic_open +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xc83208ed usb_serial_generic_process_read_urb +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xe7cc2b29 usb_serial_generic_unthrottle +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xec51ff86 usb_serial_generic_write_start +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x01a6abf7 usb_stor_probe1 +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x055af916 usb_stor_control_msg +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x0c87dab4 usb_stor_post_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x1bc3edc2 usb_stor_sense_invalidCDB +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x2b85b571 usb_stor_transparent_scsi_command +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x2d5eded1 usb_stor_ctrl_transfer +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x335f5627 usb_stor_resume +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x36c81c28 usb_stor_CB_transport +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x3ff6b26e usb_stor_bulk_transfer_buf +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x53d0a8ae usb_stor_Bulk_transport +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x60d54be2 usb_stor_set_xfer_buf +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x69f008f1 usb_stor_Bulk_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x78356002 usb_stor_disconnect +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x7a71f1d7 usb_stor_reset_resume +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x7e034958 usb_stor_adjust_quirks +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x7fc05865 usb_stor_bulk_srb +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x8181c3ad usb_stor_bulk_transfer_sg +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x8cb3dc14 fill_inquiry_response +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x94de8344 usb_stor_CB_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x994c5eb5 usb_stor_host_template_init +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xafed6631 usb_stor_pre_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xb90b1cd6 usb_stor_clear_halt +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xb933e586 usb_stor_suspend +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xba54387e usb_stor_access_xfer_buf +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xfbe6f2a0 usb_stor_probe2 +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x0ee0b9c4 usbip_recv +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x291c52d1 usbip_pack_pdu +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x78b72f44 usbip_debug_flag +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x7dc30771 usbip_dump_urb +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x8c122864 usbip_event_add +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x8c3a7eff dev_attr_usbip_debug +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x9a57f19f usbip_recv_iso +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x9a68540e usbip_alloc_iso_desc_pdu +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xc7430a87 usbip_stop_eh +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xca3f081b usbip_pad_iso +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xca88fdbc usbip_recv_xbuff +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xcdf314e3 usbip_event_happened +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xceebf094 usbip_start_eh +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/usb/wusbcore/wusb-wa 0x0bd816f0 wa_process_errored_transfers_run +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x122f15ac wa_urb_enqueue_run +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x3bf1064a wa_dti_start +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x4d92576a wa_urb_dequeue +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x691e84ba wa_urb_enqueue +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x93edb735 __wa_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xcb55ad58 rpipe_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xf6dc4828 wa_create +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xfc9f6b71 rpipe_clear_feature_stalled +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xfe434d9b rpipe_ep_disable +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x02e57226 wusbhc_giveback_urb +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x091d6857 wusbhc_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x0bb6bf5e wusb_cluster_id_get +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x25e4625b wusbhc_mmcie_set +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x260ac787 wusbhc_b_create +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x2813642e wusbhc_create +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x2d266c29 wusbhc_rh_status_data +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x60bc90f7 __wusb_dev_get_by_usb_dev +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x66e1eb7b wusbhc_mmcie_rm +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x7f0b7631 wusb_dev_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x8072bab7 wusbhc_rh_start_port_reset +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x88c042cd wusbhc_b_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x9a960f95 wusbhc_handle_dn +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xa5994c48 wusbhc_chid_set +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xa7cb5243 wusbhc_rh_control +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xb725d128 wusb_cluster_id_put +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xc18306c6 wusbhc_reset_all +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xf770a6b4 wusbd +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xfe2e17d7 wusb_et_name +EXPORT_SYMBOL_GPL drivers/uwb/i1480/dfu/i1480-dfu-usb 0x10565172 i1480_rceb_check +EXPORT_SYMBOL_GPL drivers/uwb/i1480/dfu/i1480-dfu-usb 0xc9b66717 i1480_cmd +EXPORT_SYMBOL_GPL drivers/uwb/i1480/dfu/i1480-dfu-usb 0xe620385e i1480_fw_upload +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x2da567bd umc_device_create +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x641b9747 umc_controller_reset +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x7e276738 __umc_driver_register +EXPORT_SYMBOL_GPL drivers/uwb/umc 0xc59402c9 umc_device_register +EXPORT_SYMBOL_GPL drivers/uwb/umc 0xd67022a6 umc_bus_type +EXPORT_SYMBOL_GPL drivers/uwb/umc 0xd6d2d7a3 umc_match_pci_id +EXPORT_SYMBOL_GPL drivers/uwb/umc 0xe713d24d umc_device_unregister +EXPORT_SYMBOL_GPL drivers/uwb/umc 0xea7348e3 umc_driver_unregister +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x01b152cd uwb_notifs_deregister +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x041255a9 uwb_rsv_destroy +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x08a23e0b uwb_est_find_size +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x0d78016e __uwb_addr_print +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x0fc02440 uwb_est_unregister +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x11b01fae uwb_rc_cmd +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x1356407b uwb_rc_post_reset +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x24e074e2 uwb_rc_mac_addr_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x2eff946f uwb_rc_rm +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x3e0f414d uwb_pal_init +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x4d57ae3c uwb_rsv_type_str +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x53ac0fb8 uwb_rc_init +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x5514df92 uwb_rc_ie_add +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x5e67ac52 uwb_rsv_accept +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x6a2828d3 uwb_rc_cmd_async +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x6b2bec7e uwb_rc_get_by_grandpa +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x6f06be93 uwb_rsv_terminate +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x70cdbda3 uwb_rc_reset_all +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x71058219 uwb_pal_register +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x770dbdd4 uwb_radio_stop +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x816b9e92 uwb_est_register +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x832a20cb uwb_rc_neh_grok +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x853d2f52 uwb_notifs_register +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x8644629a uwb_dev_try_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x89ae5b8b uwb_rc_ie_rm +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x8f81ed20 uwb_rsv_establish +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x92d639d0 uwb_rc_alloc +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x94c2283d uwb_rsv_modify +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x98413234 uwb_rsv_state_str +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x9c761fe8 __uwb_rc_try_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x9ed88aad uwb_rsv_get_usable_mas +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xa17c06c7 uwb_rc_vcmd +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xa6bf1a1f uwb_rc_pre_reset +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xa8505bf2 uwb_rc_get_by_dev +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xac97316b uwb_ie_next +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xb2ad1a17 uwb_dev_for_each +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xcc9cc3cf uwb_rc_add +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xd2693e09 uwb_rc_dev_addr_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xd7e7f2a5 uwb_rc_neh_error +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xdd39ffaa uwb_rsv_create +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xe0f20628 uwb_pal_unregister +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xfc1f34f9 uwb_radio_start +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xfc4d4585 uwb_rc_put +EXPORT_SYMBOL_GPL drivers/uwb/whci 0x52e6c8f7 whci_wait_for +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x3567743b vfio_external_user_iommu_id +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x362f1fef vfio_add_group_dev +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x36d2be24 vfio_device_get_from_dev +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x575dba2b vfio_group_get_external_user +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x9433fe0d vfio_register_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 0xa30262d8 vfio_del_group_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 0xcf6d50c1 vfio_unregister_iommu_driver +EXPORT_SYMBOL_GPL drivers/vfio/vfio_virqfd 0x046c48e0 vfio_virqfd_enable +EXPORT_SYMBOL_GPL drivers/vfio/vfio_virqfd 0x538c5135 vfio_virqfd_disable +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x01676342 vhost_dev_check_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x0d75dd9e vhost_enable_notify +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x10f79b7a vhost_discard_vq_desc +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x155db12e vhost_init_used +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x21cc108f vhost_add_used_n +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x269f7a09 vhost_dev_reset_owner_prepare +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x4cb96f77 vhost_work_init +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x4f2e0ae3 vhost_log_write +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x50894045 vhost_get_vq_desc +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x51138479 vhost_work_queue +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x517b5e22 vhost_dev_reset_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x52659206 vhost_dev_ioctl +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x605d6da7 vhost_add_used +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x6dd8a394 vhost_vring_ioctl +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x6f03827a vhost_poll_flush +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x708ea95d vhost_work_flush +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x78892fee vhost_add_used_and_signal_n +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x7be0d0f9 vhost_poll_queue +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xa3fd9896 vhost_dev_init +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xa6b10e14 vhost_poll_stop +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xb506c03f vhost_dev_has_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xbb7ed5d1 vhost_dev_set_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xc340b82b vhost_log_access_ok +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xc6472c36 vhost_signal +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xcc3e1334 vhost_dev_cleanup +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xd3376b21 vhost_poll_start +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xd5cc12a4 vhost_disable_notify +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xdbffd068 vhost_add_used_and_signal +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xe50f96dd vhost_dev_stop +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xf721c7a3 vhost_vq_access_ok +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xfd2d8903 vhost_poll_init +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 0x1180dcc1 ili9320_write_regs +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x21cb7eda ili9320_resume +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x51c1e62d ili9320_remove +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x95c7a89f ili9320_suspend +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0xe40b9e50 ili9320_shutdown +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0xed2c246e ili9320_write +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0xf4b1885e ili9320_probe_spi +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x1b5daf31 auok190x_send_cmdargs_pixels_nowait +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x238242b1 auok190x_common_probe +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x500bafca auok190x_read_cmdargs +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x57cc5b1c auok190x_common_remove +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x5e9e3318 auok190x_send_cmdargs +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0xadea2375 auok190x_send_command +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0xbfdca9d2 auok190x_send_cmdargs_nowait +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0xd1e64426 auok190x_pm +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0xe632d7e9 auok190x_send_command_nowait +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0xf2942590 auok190x_send_cmdargs_pixels +EXPORT_SYMBOL_GPL drivers/video/fbdev/core/fb_ddc 0x3c8d8845 fb_ddc_read +EXPORT_SYMBOL_GPL drivers/video/fbdev/core/fb_sys_fops 0x0ff551e8 fb_sys_read +EXPORT_SYMBOL_GPL drivers/video/fbdev/core/fb_sys_fops 0x7e8891f1 fb_sys_write +EXPORT_SYMBOL_GPL drivers/video/fbdev/sis/sisfb 0x87d05239 sis_malloc_new +EXPORT_SYMBOL_GPL drivers/video/fbdev/sis/sisfb 0xbfe79a4f 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 0x22a7af24 viafb_dma_copy_out_sg +EXPORT_SYMBOL_GPL drivers/video/fbdev/via/viafb 0x292da7a2 viafb_irq_enable +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 0x79e6190a 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 0xefffa4fe viafb_find_i2c_adapter +EXPORT_SYMBOL_GPL drivers/video/fbdev/via/viafb 0xfff2dfd2 viafb_gpio_lookup +EXPORT_SYMBOL_GPL drivers/w1/wire 0x055423d2 w1_write_8 +EXPORT_SYMBOL_GPL drivers/w1/wire 0x075b91b4 w1_read_block +EXPORT_SYMBOL_GPL drivers/w1/wire 0x31d13e88 w1_touch_block +EXPORT_SYMBOL_GPL drivers/w1/wire 0x32272b3d w1_write_block +EXPORT_SYMBOL_GPL drivers/w1/wire 0x7c2f2afb w1_calc_crc8 +EXPORT_SYMBOL_GPL drivers/w1/wire 0x8abe2dad w1_reset_resume_command +EXPORT_SYMBOL_GPL drivers/w1/wire 0xc7314e96 w1_read_8 +EXPORT_SYMBOL_GPL drivers/w1/wire 0xd99982bc w1_reset_bus +EXPORT_SYMBOL_GPL drivers/w1/wire 0xf2988163 w1_reset_select_slave +EXPORT_SYMBOL_GPL drivers/w1/wire 0xf6ccc4bc w1_next_pullup +EXPORT_SYMBOL_GPL drivers/xen/xen-privcmd 0x7688d604 xen_privcmd_fops +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x1bbff3ec dlm_posix_get +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x499ec4d4 dlm_posix_unlock +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x61f95c40 dlm_posix_lock +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x9321df95 dlm_lock +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xc6dc8c2f dlm_new_lockspace +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xcf9f3328 dlm_release_lockspace +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xdc583c08 dlm_unlock +EXPORT_SYMBOL_GPL fs/fscache/fscache 0x092cf98e fscache_object_sleep_till_congested +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x3071f72e lockd_up +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x44f50784 nlmclnt_init +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x568cd82d nlmsvc_unlock_all_by_sb +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x77e35ccc nlmsvc_unlock_all_by_ip +EXPORT_SYMBOL_GPL fs/lockd/lockd 0xa6974c83 lockd_down +EXPORT_SYMBOL_GPL fs/lockd/lockd 0xaac6d36c nlmclnt_done +EXPORT_SYMBOL_GPL fs/lockd/lockd 0xbeec22ba nlmsvc_ops +EXPORT_SYMBOL_GPL fs/lockd/lockd 0xf6f0af3b nlmclnt_proc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x017e3e4a nfs_setsecurity +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x019d0379 nfs_file_set_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0261daa9 nfs_alloc_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0ee42179 nfs_initiate_pgio +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0f3b6be4 nfs_path +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x11c2b68d nfs_umount_begin +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x121a69df nfs_fhget +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x121c2440 nfs_create +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x123cf3b7 nfs_set_sb_security +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x14dc5ace nfs_drop_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1614e56f nfs_server_copy_userdata +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1af2e35a nfs_remount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1af5d136 nfs_sops +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1b1ae949 nfs_wb_all +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1bd56794 nfs_request_add_commit_list_locked +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1d4789b6 nfs_file_flush +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x210185ef nfs_commit_free +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2331c324 nfs_fs_type +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2683e4e4 nfs_init_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x26884ff7 nfs_alloc_fhandle +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x273da9f6 nfs_put_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2b5ca6ca nfs_init_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2c17f3f3 unregister_nfs_version +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2e9b631c nfs_request_remove_commit_list +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2fb32092 nfs_refresh_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2ffedd02 nfs_destroy_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x342a1231 nfs_post_op_update_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x34c185a6 nfs_dentry_operations +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x352c3538 alloc_nfs_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x39e05ac3 nfs_idmap_cache_timeout +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3ca31f35 nfs_net_id +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3d6cd319 nfs_statfs +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3d8f5beb nfs4_fs_type +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3debcce1 nfs_init_server_rpcclient +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3e568dab nfs_atomic_open +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3f2690f2 nfs_check_flags +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x41e03650 nfs_access_add_cache +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x42f2c81f nfs4_client_id_uniquifier +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x438da045 nfs_pgio_header_free +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x462d94db nfs_fscache_open_file +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x46e72881 nfs_link +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x49046585 nfs_fs_mount_common +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4a925407 nfs_put_lock_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4aef950a nfs_permission +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4af609da nfs_revalidate_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4c06ebbb nfs_may_open +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 0x534a993c nfs_try_mount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x53c20f07 nfs_commitdata_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x53dbeb77 nfs_create_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x54c788c9 nfs_pageio_reset_write_mds +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x55102fc4 nfs_access_set_mask +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5608c57b nfs_init_cinfo +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5778c70f nfs_instantiate +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x584b8482 nfs_inc_attr_generation_counter +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x59a6273a nfs_do_submount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5a8bffed nfs_fill_super +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5b9de673 nfs_alloc_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5dccbbbe nfs_get_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5e1d863a nfs_sockaddr_match_ipaddr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5e30d100 nfs_file_fsync_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x606aef00 nfs_write_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6519d0a6 nfs_lookup +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x672c3c0f nfs_clear_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6992bc26 nfs_pageio_resend +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6a6f7d12 nfs_pageio_init +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6b9d7b52 nfs_zap_acl_cache +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x70419507 nfs_free_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x78a2010c nfs_show_path +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x790aa30f nfs_getattr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7a59066d nfs_pgio_header_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7c9722ba nfs_dreq_bytes_left +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7da71266 nfs_setattr_update_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7ec6d041 nfs_free_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x802ad53b nfs_sb_active +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x824ebe40 nfs_kill_super +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x861825f9 nfs_invalidate_atime +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8699c710 nfs_rmdir +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x88b0b3bc nfs4_dentry_operations +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x88d7a83a nfs_file_write +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x89ecd519 nfs_request_add_commit_list +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8a1c9bcf nfs_commitdata_release +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8a3197ed nfs_pageio_init_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8ad262e1 nfs_wait_client_init_complete +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8cb29d18 nfs_file_mmap +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8ec66e0f nfs_show_stats +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8f4d8bcd nfs_writeback_update_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8f7aa410 nfs_get_lock_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9009311d nfs_mknod +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 0x9364ee36 nfs_file_release +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x94d64685 __tracepoint_nfs_fsync_exit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x95532644 nfs_pgio_data_destroy +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x96d96293 nfs_sync_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9842d52c nfs_alloc_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9a8af423 nfs_probe_fsinfo +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9cabf113 nfs_clone_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9f83ada5 put_nfs_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa01823fc nfs_fs_mount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa1564340 nfs4_label_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa166b1a0 nfs_pageio_reset_read_mds +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa222c17c nfs_file_splice_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa578a5c4 nfs_file_llseek +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa62bb355 nfs_pageio_init_write +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa6c865ee nfs_wait_bit_killable +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa73cb94e nfs_inode_attach_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa8d2d1ce nfs_callback_tcpport +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa8e9e1ae send_implementation_id +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xac90755d __tracepoint_nfs_fsync_enter +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xad613e9b nfs_show_options +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xaebf673e nfs_lock +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb06cc8e0 nfs_initiate_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb2bc247f nfs_show_devname +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb606e716 nfs_fattr_init +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb812061f nfs_generic_pgio +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbac39846 get_nfs_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbb6149c4 nfs_server_remove_lists +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbbc65f21 nfs_pgio_current_mirror +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbdb2a00a nfs_symlink +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbdc4ed92 nfs_sb_deactive +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc0b30b41 nfs_server_insert_lists +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc3d42ab3 nfs_create_rpc_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc4ff1e9f nfs_auth_info_match +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc5ef47d5 nfs_init_timeout_values +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc6ecfc11 nfs_clone_sb_security +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xcc7b31de nfs_file_operations +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd024a309 nfs_mkdir +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd2513081 _nfs_display_fhandle_hash +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd7906073 nfs_rename +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd8c620d5 nfs_close_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdaad0030 nfs_pgheader_init +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdae9b5d7 nfs4_disable_idmapping +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdaff0935 nfs_generic_pg_test +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdbd6d1b5 nfs_force_lookup_revalidate +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdebe9535 nfs_file_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe2eafc60 nfs_retry_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe70d1ce8 nfs_submount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe92c510d nfs_direct_set_resched_writes +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xece74b55 nfs_setattr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf362fc6c nfs_mark_client_ready +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf8eca4c9 nfs_unlink +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfaed90d4 nfs_access_zap_cache +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfb75c14d nfs_post_op_update_inode_force_wcc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfb7c8396 nfs_flock +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfb7ee006 nfs_alloc_fattr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfb8ebb29 register_nfs_version +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfc619abd _nfs_display_fhandle +EXPORT_SYMBOL_GPL fs/nfs/nfsv3 0x363f2506 nfs3_set_ds_client +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x058cc799 pnfs_destroy_layout +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x064026d1 nfs4_proc_getdeviceinfo +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x06c36816 __tracepoint_nfs4_pnfs_write +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x09160c30 pnfs_read_resend_pnfs +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x107e1f1b nfs4_find_or_create_ds_client +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x170f3ed6 nfs41_maxgetdevinfo_overhead +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x19d13ed3 pnfs_generic_recover_commit_reqs +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x1b0b4762 pnfs_read_done_resend_to_mds +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x1d85bb00 nfs4_pnfs_ds_connect +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x1f901533 nfs4_schedule_lease_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x24a37952 pnfs_generic_write_commit_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x278d6cc6 nfs4_pnfs_ds_add +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x2b82a123 pnfs_update_layout +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x2b86287d pnfs_write_done_resend_to_mds +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x2f911ee4 nfs4_schedule_stateid_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x338fbc38 nfs4_schedule_session_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x37c23322 nfs4_set_rw_stateid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x3dfe6fe3 __tracepoint_nfs4_pnfs_read +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x40c905bf nfs4_mark_deviceid_unavailable +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x471de0a9 __tracepoint_nfs4_pnfs_commit_ds +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x4a185285 pnfs_ld_read_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x4a77090a pnfs_generic_sync +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x4a8aa84e nfs4_put_deviceid_node +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x4f91667f nfs4_pnfs_ds_put +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x50da0941 nfs4_delete_deviceid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x5e43df1b nfs4_find_get_deviceid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x6085edbd nfs_map_string_to_numeric +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x61e830eb pnfs_put_lseg_locked +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x674642ac pnfs_layoutcommit_inode +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x69d3558d pnfs_generic_rw_release +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x6e8bcc36 nfs4_set_ds_client +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x6f677b48 nfs4_schedule_lease_moved_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x6fc6dd71 pnfs_error_mark_layout_for_return +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x760846a1 nfs4_schedule_migration_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x766e18e3 nfs4_sequence_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x76c2b30b nfs4_init_ds_session +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x7a039335 pnfs_report_layoutstat +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x82684992 pnfs_nfs_generic_sync +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x83ae6aaa nfs4_pnfs_v3_ds_connect_unload +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x844d987d nfs4_init_deviceid_node +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x8768758c nfs40_setup_sequence +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x95069c0e nfs41_sequence_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x98dfd865 pnfs_register_layoutdriver +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x9a4730f7 pnfs_set_layoutcommit +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x9fbfb84a pnfs_ld_write_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xa10cdf22 pnfs_generic_clear_request_commit +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xa33491a7 nfs4_test_deviceid_unavailable +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xa61551d2 pnfs_generic_pg_init_read +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xb4757f18 pnfs_generic_commit_pagelist +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xb49b172a pnfs_unregister_layoutdriver +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xb8be973d pnfs_generic_prepare_to_resend_writes +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xb9776125 pnfs_generic_pg_writepages +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xbfb92b72 nfs_remove_bad_delegation +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xc705cc7d pnfs_set_lo_fail +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xc9a65151 pnfs_generic_pg_cleanup +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xccb27cea _pnfs_return_layout +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xd4badabf pnfs_generic_pg_readpages +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xd82ea2ab pnfs_generic_pg_test +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xe40a4f1d nfs4_decode_mp_ds_addr +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xe59a9367 pnfs_generic_pg_init_write +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xe66a5321 pnfs_layout_mark_request_commit +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xed15fb41 nfs4_print_deviceid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xf03b8b9d pnfs_put_lseg +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xf3abc72f nfs41_setup_sequence +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xf999267e pnfs_generic_commit_release +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xfd203331 pnfs_generic_scan_commit_lists +EXPORT_SYMBOL_GPL fs/nfs_common/grace 0x17ce645d locks_end_grace +EXPORT_SYMBOL_GPL fs/nfs_common/grace 0x8d8cb6e3 locks_start_grace +EXPORT_SYMBOL_GPL fs/nfs_common/grace 0xf61e5706 locks_in_grace +EXPORT_SYMBOL_GPL fs/nfs_common/nfs_acl 0x0433b1bd nfsacl_decode +EXPORT_SYMBOL_GPL fs/nfs_common/nfs_acl 0x6b0a6aab nfsacl_encode +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x11736b03 __mlog_printk +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x1b89c6ee o2hb_fill_node_map +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x1d747ce3 o2hb_check_node_heartbeating +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x24f20e77 o2nm_get_node_by_ip +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x36418553 o2net_send_message +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x36a28a9e 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 0x62b0d933 o2hb_register_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x6f8f503c o2hb_unregister_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x81a17396 mlog_and_bits +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x950c8245 o2nm_node_put +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xa1ae48e1 o2hb_check_node_heartbeating_no_sem +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xa82a8645 o2nm_this_node +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xa87bc9e7 o2nm_configured_node_map +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xaa2a50ff o2hb_setup_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xae808bac o2net_register_handler +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xb2842b2d o2nm_get_node_by_num +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xbaeb4700 o2hb_check_node_heartbeating_from_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xc040302d o2nm_node_get +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xc3679d7b o2hb_get_all_regions +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xd60f2c6c o2hb_check_local_node_heartbeating +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/dlm/ocfs2_dlm 0x476f72dd dlm_unregister_domain +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x51200756 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 0xb2a4cda5 dlm_register_domain +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xcc626bad 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 0xe7743136 dlm_print_one_lock +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xeabe5691 dlmlock +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xfb86b96f dlm_errname +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x269d63fd ocfs2_cluster_disconnect +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x316904e1 ocfs2_dlm_unlock +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x3bcef5f3 ocfs2_dlm_lock_status +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x40718c92 ocfs2_dlm_lock +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x4226705d ocfs2_dlm_dump_lksb +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x424241c9 ocfs2_dlm_lvb +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x4d3af7fa ocfs2_cluster_hangup +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x5a3fd795 ocfs2_stack_glue_unregister +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x60f4bcef ocfs2_dlm_lvb_valid +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x9ccafa05 ocfs2_cluster_this_node +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xa06fbc10 ocfs2_cluster_connect_agnostic +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xbbc4ef97 ocfs2_stack_supports_plocks +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xbf9068ab ocfs2_cluster_connect +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xe40cffce ocfs2_stack_glue_set_max_proto_version +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xf3a5d09a ocfs2_plock +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xf4de7b31 ocfs2_stack_glue_register +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 0x4c7529bd torture_shutdown_absorb +EXPORT_SYMBOL_GPL kernel/torture 0x52665f8b torture_random +EXPORT_SYMBOL_GPL kernel/torture 0x5346b23b torture_shuffle_cleanup +EXPORT_SYMBOL_GPL kernel/torture 0x6364b2f0 stutter_wait +EXPORT_SYMBOL_GPL kernel/torture 0x679d9e50 torture_must_stop +EXPORT_SYMBOL_GPL kernel/torture 0x688e6a64 torture_cleanup_end +EXPORT_SYMBOL_GPL kernel/torture 0x6bdeda8f torture_onoff_init +EXPORT_SYMBOL_GPL kernel/torture 0x8b0e1d2f torture_shuffle_init +EXPORT_SYMBOL_GPL kernel/torture 0x8c67349f torture_shuffle_task_register +EXPORT_SYMBOL_GPL kernel/torture 0x93c2ce53 _torture_stop_kthread +EXPORT_SYMBOL_GPL kernel/torture 0xb7098fd4 _torture_create_kthread +EXPORT_SYMBOL_GPL kernel/torture 0xc1361afc torture_onoff_cleanup +EXPORT_SYMBOL_GPL kernel/torture 0xc6527045 torture_init_begin +EXPORT_SYMBOL_GPL kernel/torture 0xc67a49d4 torture_cleanup_begin +EXPORT_SYMBOL_GPL kernel/torture 0xdbc5277a torture_shutdown_init +EXPORT_SYMBOL_GPL kernel/torture 0xe6989fd3 torture_init_end +EXPORT_SYMBOL_GPL kernel/torture 0xe9ff1468 torture_stutter_init +EXPORT_SYMBOL_GPL kernel/torture 0xf6d34fb5 torture_kthread_stopping +EXPORT_SYMBOL_GPL lib/842/842_compress 0x1ce013cf sw842_compress +EXPORT_SYMBOL_GPL lib/842/842_decompress 0x0d22f116 sw842_decompress +EXPORT_SYMBOL_GPL lib/bch 0x231d70fc encode_bch +EXPORT_SYMBOL_GPL lib/bch 0x6b770f49 decode_bch +EXPORT_SYMBOL_GPL lib/bch 0x9463ff71 init_bch +EXPORT_SYMBOL_GPL lib/bch 0xbdf512de free_bch +EXPORT_SYMBOL_GPL lib/notifier-error-inject 0x8792372d notifier_err_inject_dir +EXPORT_SYMBOL_GPL lib/notifier-error-inject 0xb861220e 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 0x201d8ea3 encode_rs8 +EXPORT_SYMBOL_GPL lib/reed_solomon/reed_solomon 0x29fa419f decode_rs8 +EXPORT_SYMBOL_GPL lib/reed_solomon/reed_solomon 0x300d7e57 free_rs +EXPORT_SYMBOL_GPL lib/reed_solomon/reed_solomon 0x6fbb3bd9 init_rs_non_canonical +EXPORT_SYMBOL_GPL lib/reed_solomon/reed_solomon 0xabda1e2e decode_rs16 +EXPORT_SYMBOL_GPL lib/reed_solomon/reed_solomon 0xb050f329 init_rs +EXPORT_SYMBOL_GPL net/6lowpan/6lowpan 0x40d70f64 lowpan_header_decompress +EXPORT_SYMBOL_GPL net/6lowpan/6lowpan 0xa4da251d lowpan_header_compress +EXPORT_SYMBOL_GPL net/802/garp 0x026cf3c0 garp_request_join +EXPORT_SYMBOL_GPL net/802/garp 0x259c7245 garp_uninit_applicant +EXPORT_SYMBOL_GPL net/802/garp 0x52a6000d garp_request_leave +EXPORT_SYMBOL_GPL net/802/garp 0x5ea93451 garp_init_applicant +EXPORT_SYMBOL_GPL net/802/garp 0x5ed51ecb garp_register_application +EXPORT_SYMBOL_GPL net/802/garp 0xe9521cd6 garp_unregister_application +EXPORT_SYMBOL_GPL net/802/mrp 0x989bc472 mrp_register_application +EXPORT_SYMBOL_GPL net/802/mrp 0xa281034c mrp_init_applicant +EXPORT_SYMBOL_GPL net/802/mrp 0xa9173ffe mrp_unregister_application +EXPORT_SYMBOL_GPL net/802/mrp 0xbc18fbfc mrp_uninit_applicant +EXPORT_SYMBOL_GPL net/802/mrp 0xbcff8a3c mrp_request_join +EXPORT_SYMBOL_GPL net/802/mrp 0xe1843e49 mrp_request_leave +EXPORT_SYMBOL_GPL net/802/stp 0x180751aa stp_proto_unregister +EXPORT_SYMBOL_GPL net/802/stp 0x92aad45f stp_proto_register +EXPORT_SYMBOL_GPL net/9p/9pnet 0x2fb70857 p9_client_xattrwalk +EXPORT_SYMBOL_GPL net/9p/9pnet 0x9b8af7e8 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 0x01c1abc8 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 0x04ae9ba1 l2cap_chan_connect +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x3e3b574e l2cap_chan_set_defaults +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x9de971ef bt_debugfs +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0xbbf89cf0 l2cap_add_psm +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0xd11ca74a l2cap_chan_put +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0xdc7542af l2cap_chan_create +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0xf91ce987 l2cap_chan_del +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0xfe86d62d l2cap_chan_send +EXPORT_SYMBOL_GPL net/bridge/br_netfilter 0x0cb0f8b7 br_netfilter_enable +EXPORT_SYMBOL_GPL net/bridge/bridge 0x157d3a3e br_forward_finish +EXPORT_SYMBOL_GPL net/bridge/bridge 0x8acb5d7c br_deliver +EXPORT_SYMBOL_GPL net/bridge/bridge 0x9b50b758 br_multicast_has_querier_anywhere +EXPORT_SYMBOL_GPL net/bridge/bridge 0xa3d5eaf6 br_multicast_list_adjacent +EXPORT_SYMBOL_GPL net/bridge/bridge 0xe671553b br_handle_frame_finish +EXPORT_SYMBOL_GPL net/bridge/bridge 0xe95971e9 nf_br_ops +EXPORT_SYMBOL_GPL net/bridge/bridge 0xf492ad86 br_multicast_has_querier_adjacent +EXPORT_SYMBOL_GPL net/bridge/bridge 0xf7e3e30c br_dev_queue_push_xmit +EXPORT_SYMBOL_GPL net/bridge/netfilter/nf_tables_bridge 0x13b19c7d nft_bridge_ip6hdr_validate +EXPORT_SYMBOL_GPL net/bridge/netfilter/nf_tables_bridge 0xb640f151 nft_bridge_iphdr_validate +EXPORT_SYMBOL_GPL net/dccp/dccp 0x0cc44da5 dccp_feat_signal_nn_change +EXPORT_SYMBOL_GPL net/dccp/dccp 0x11f1701b dccp_recvmsg +EXPORT_SYMBOL_GPL net/dccp/dccp 0x1d99d49a dccp_timestamp +EXPORT_SYMBOL_GPL net/dccp/dccp 0x23672cd0 dccp_hashinfo +EXPORT_SYMBOL_GPL net/dccp/dccp 0x2a3b5095 dccp_create_openreq_child +EXPORT_SYMBOL_GPL net/dccp/dccp 0x2b45efb7 dccp_child_process +EXPORT_SYMBOL_GPL net/dccp/dccp 0x2e35dc45 dccp_init_sock +EXPORT_SYMBOL_GPL net/dccp/dccp 0x3179cedc dccp_set_state +EXPORT_SYMBOL_GPL net/dccp/dccp 0x36ec1d49 dccp_rcv_state_process +EXPORT_SYMBOL_GPL net/dccp/dccp 0x3c061485 dccp_sync_mss +EXPORT_SYMBOL_GPL net/dccp/dccp 0x49797ccd dccp_make_response +EXPORT_SYMBOL_GPL net/dccp/dccp 0x4cdd391d dccp_feat_list_purge +EXPORT_SYMBOL_GPL net/dccp/dccp 0x4e2d4d99 dccp_death_row +EXPORT_SYMBOL_GPL net/dccp/dccp 0x4ec35231 dccp_ackvec_parsed_add +EXPORT_SYMBOL_GPL net/dccp/dccp 0x50d84c6d dccp_ctl_make_reset +EXPORT_SYMBOL_GPL net/dccp/dccp 0x59814a84 dccp_statistics +EXPORT_SYMBOL_GPL net/dccp/dccp 0x63bab199 dccp_poll +EXPORT_SYMBOL_GPL net/dccp/dccp 0x70d4fe00 dccp_sendmsg +EXPORT_SYMBOL_GPL net/dccp/dccp 0x76f3d35e inet_dccp_listen +EXPORT_SYMBOL_GPL net/dccp/dccp 0x81ae7e3a dccp_send_ack +EXPORT_SYMBOL_GPL net/dccp/dccp 0x85f7bb01 compat_dccp_getsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0x86be7924 dccp_packet_name +EXPORT_SYMBOL_GPL net/dccp/dccp 0x88047961 dccp_done +EXPORT_SYMBOL_GPL net/dccp/dccp 0x885c3aef dccp_send_sync +EXPORT_SYMBOL_GPL net/dccp/dccp 0x8b83ae2a dccp_reqsk_init +EXPORT_SYMBOL_GPL net/dccp/dccp 0x8e2269e0 dccp_shutdown +EXPORT_SYMBOL_GPL net/dccp/dccp 0x94dbab03 dccp_ioctl +EXPORT_SYMBOL_GPL net/dccp/dccp 0x9598d24d dccp_ackvec_parsed_cleanup +EXPORT_SYMBOL_GPL net/dccp/dccp 0x982944b9 compat_dccp_setsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0x9b4cc9e9 dccp_destroy_sock +EXPORT_SYMBOL_GPL net/dccp/dccp 0xa25eee46 dccp_check_req +EXPORT_SYMBOL_GPL net/dccp/dccp 0xa53332e0 dccp_rcv_established +EXPORT_SYMBOL_GPL net/dccp/dccp 0xa8116eb7 dccp_disconnect +EXPORT_SYMBOL_GPL net/dccp/dccp 0xa8ba6534 dccp_feat_nn_get +EXPORT_SYMBOL_GPL net/dccp/dccp 0xb55d6ff8 dccp_insert_option +EXPORT_SYMBOL_GPL net/dccp/dccp 0xc6c93c55 dccp_getsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0xd7b7a72d dccp_parse_options +EXPORT_SYMBOL_GPL net/dccp/dccp 0xda4405c2 dccp_orphan_count +EXPORT_SYMBOL_GPL net/dccp/dccp 0xdbb65c49 dccp_setsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0xe188d719 dccp_reqsk_send_ack +EXPORT_SYMBOL_GPL net/dccp/dccp 0xf837a5b7 dccp_connect +EXPORT_SYMBOL_GPL net/dccp/dccp 0xfffca23d dccp_close +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x1f7d9ef2 dccp_v4_request_recv_sock +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x6006d39a dccp_v4_do_rcv +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x6417c402 dccp_v4_send_check +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x6d94121c dccp_v4_connect +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0xa8e7bdba dccp_v4_conn_request +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0xf3062524 dccp_invalid_packet +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0x17b354df ieee802154_hdr_pull +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0x4d7aef69 ieee802154_max_payload +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0x6439f707 ieee802154_hdr_peek +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0x7ec2cd6c ieee802154_hdr_push +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0xd77f6802 ieee802154_hdr_peek_addrs +EXPORT_SYMBOL_GPL net/ipv4/geneve_core 0x206e928d geneve_sock_add +EXPORT_SYMBOL_GPL net/ipv4/geneve_core 0x53801305 geneve_sock_release +EXPORT_SYMBOL_GPL net/ipv4/geneve_core 0xffc0f87c geneve_xmit_skb +EXPORT_SYMBOL_GPL net/ipv4/gre 0x15a8c885 gre_cisco_unregister +EXPORT_SYMBOL_GPL net/ipv4/gre 0x19ba6bc8 gre_del_protocol +EXPORT_SYMBOL_GPL net/ipv4/gre 0x1aec0032 gre_build_header +EXPORT_SYMBOL_GPL net/ipv4/gre 0x49e6e70f gre_cisco_register +EXPORT_SYMBOL_GPL net/ipv4/gre 0x96810a62 gre_add_protocol +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x3fe35f20 inet_sk_diag_fill +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x8ae9b455 inet_diag_dump_icsk +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x8d1c8c9a inet_diag_bc_sk +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0xaf85ad27 inet_diag_dump_one_icsk +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0xe9425a46 inet_diag_unregister +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0xf638898f inet_diag_register +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x2260bd7c ip_tunnel_init_net +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x599ac912 ip_tunnel_uninit +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x63fee18b ip_tunnel_rcv +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x64b710ca ip_tunnel_newlink +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x6ec0ca43 ip_tunnel_init +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x6f92e024 ip_tunnel_setup +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x8c40a59a ip_tunnel_change_mtu +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xb035fc40 ip_tunnel_dellink +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xb2bef598 ip_tunnel_xmit +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xb632ef0b ip_tunnel_lookup +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xb921e04a ip_tunnel_changelink +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xe20a4118 ip_tunnel_encap_setup +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xe682735b ip_tunnel_ioctl +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xf582d7f0 ip_tunnel_delete_net +EXPORT_SYMBOL_GPL net/ipv4/netfilter/arp_tables 0xaa415e95 arpt_alloc_initial_table +EXPORT_SYMBOL_GPL net/ipv4/netfilter/ip_tables 0x5fe565f0 ipt_alloc_initial_table +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_defrag_ipv4 0x6b6c3d10 nf_defrag_ipv4_enable +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_ipv4 0x1e11d8b9 nf_nat_ipv4_local_fn +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_ipv4 0x21af62ec nf_nat_ipv4_fn +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_ipv4 0x663902bc nf_nat_ipv4_out +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_ipv4 0xbe6b25f5 nf_nat_ipv4_in +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_ipv4 0xe612fa0d nf_nat_icmp_reply_translation +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_masquerade_ipv4 0x3f5c468e nf_nat_masquerade_ipv4_unregister_notifier +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_masquerade_ipv4 0x7c85864e nf_nat_masquerade_ipv4 +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_masquerade_ipv4 0xfedbf252 nf_nat_masquerade_ipv4_register_notifier +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_proto_gre 0x636b12c8 nf_nat_need_gre +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0x0e9cfeaa nf_reject_ip_tcphdr_put +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0x597f011c nf_reject_ip_tcphdr_get +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0x6ff695c5 nf_send_reset +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0xc16bf3e8 nf_send_unreach +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0xcf1316c7 nf_reject_iphdr_put +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_tables_ipv4 0x5089dfdb nft_af_ipv4 +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x14f7263d tcp_vegas_cwnd_event +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x50a89c81 tcp_vegas_pkts_acked +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x6b2b4fc2 tcp_vegas_init +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0xc95bf8ee tcp_vegas_state +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0xe41df5af tcp_vegas_get_info +EXPORT_SYMBOL_GPL net/ipv4/udp_tunnel 0x2fef66e3 udp_tunnel_xmit_skb +EXPORT_SYMBOL_GPL net/ipv4/udp_tunnel 0x49d8368b setup_udp_tunnel_sock +EXPORT_SYMBOL_GPL net/ipv4/udp_tunnel 0xdc053703 udp_tunnel_sock_release +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x7be279cb ip6_tnl_dst_store +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x7dca278a ip6_tnl_dst_check +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x8354a763 ip6_tnl_rcv_ctl +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x8e5cdeb2 ip6_tnl_xmit_ctl +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0xfacb2142 ip6_tnl_dst_reset +EXPORT_SYMBOL_GPL net/ipv6/ip6_udp_tunnel 0x0dea49ee udp_sock_create6 +EXPORT_SYMBOL_GPL net/ipv6/ip6_udp_tunnel 0x1ecc37c8 udp_tunnel6_xmit_skb +EXPORT_SYMBOL_GPL net/ipv6/netfilter/ip6_tables 0x0ca5db86 ip6t_alloc_initial_table +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_defrag_ipv6 0x6eb85693 nf_defrag_ipv6_enable +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_ipv6 0x08a37fea nf_nat_ipv6_local_fn +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_ipv6 0x41b79715 nf_nat_icmpv6_reply_translation +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_ipv6 0x4223a3ce nf_nat_ipv6_fn +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_ipv6 0xb8d135dd nf_nat_ipv6_out +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_ipv6 0xbeedc2b9 nf_nat_ipv6_in +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_masquerade_ipv6 0x2293972c nf_nat_masquerade_ipv6_unregister_notifier +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_masquerade_ipv6 0x38d4401a nf_nat_masquerade_ipv6_register_notifier +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_masquerade_ipv6 0x7257a8e1 nf_nat_masquerade_ipv6 +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0x4a14ebd8 nf_reject_ip6hdr_put +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0xc7dccbeb nf_send_unreach6 +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0xe660e3f1 nf_reject_ip6_tcphdr_get +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0xea76849f nf_reject_ip6_tcphdr_put +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0xfc0c1b03 nf_send_reset6 +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_tables_ipv6 0x58e4f5b7 nft_af_ipv6 +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x12539132 l2tp_session_create +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x2c495d67 l2tp_tunnel_closeall +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x3242112b l2tp_session_find_nth +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x4077855e l2tp_xmit_skb +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x5dcb491a l2tp_session_queue_purge +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x661ab97a l2tp_session_set_header_len +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x6af0f8f7 l2tp_tunnel_find_nth +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x7e1a9606 l2tp_session_find +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x80a6a7f4 l2tp_tunnel_find +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x9e5093a9 l2tp_session_free +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xcbd8caf8 l2tp_udp_encap_recv +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xda062ac7 __l2tp_session_unhash +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xe827f999 l2tp_tunnel_delete +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xed947a4b l2tp_session_find_by_ifname +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xefae50ef l2tp_session_delete +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xfdd253cb l2tp_tunnel_create +EXPORT_SYMBOL_GPL net/l2tp/l2tp_netlink 0x337f2432 l2tp_nl_unregister_ops +EXPORT_SYMBOL_GPL net/l2tp/l2tp_netlink 0xaa42e7c6 l2tp_nl_register_ops +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x0b231285 ieee80211_resume_disconnect +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x11e1f72f ieee80211_set_key_rx_seq +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x1f216d2c ieee80211_set_key_tx_seq +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x200b0cdf ieee80211_napi_add +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x58a151ae ieee80211_remove_key +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x777940a6 ieee80211_request_smps +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x83fc283b ieee80211_iter_chan_contexts_atomic +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x8d2f00bf ieee80211_ready_on_channel +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x9fc22190 ieee80211_ave_rssi +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xab0f1e6d ieee80211_iterate_stations_atomic +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xaf9c9847 ieee80211_iterate_active_interfaces_atomic +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xb91d3dd9 ieee80211_gtk_rekey_add +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xbae88a2e ieee80211_remain_on_channel_expired +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xc43f270c ieee80211_iterate_interfaces +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xd415514f wdev_to_ieee80211_vif +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xe1e5a62d ieee80211_gtk_rekey_notify +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xec3d0dcc ieee80211_iterate_active_interfaces_rtnl +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xed32fcfb ieee80211_find_sta_by_ifaddr +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xfe4d9590 ieee80211_vif_to_wdev +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x16224480 ip_set_get_ip_port +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x27b6b3f5 ip_set_type_register +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x397f6231 ip_set_free +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x40ede4b5 ip_set_get_ip4_port +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x650a5997 ip_set_put_extensions +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x68cf56ac ip_set_add +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x6b43f865 ip_set_name_byindex +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x715a5abc ip_set_test +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x7924b6de ip_set_hostmask_map +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x7cd97aba ip_set_get_byname +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x7fa58f37 ip_set_del +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x81fff2d1 ip_set_netmask_map +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x822bda55 ip_set_get_extensions +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x9a05e593 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 0xa2d623f3 ip_set_range_to_cidr +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xa73f1579 ip_set_get_ip6_port +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xc7ae72bc ip_set_elem_len +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xcc001bd9 ip_set_extensions +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xd6a545a4 ip_set_type_unregister +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xe2cd52c9 ip_set_nfnl_put +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xf3b4d4ae ip_set_alloc +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xf96a9a25 ip_set_put_byindex +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0x4a7b6f8b unregister_ip_vs_pe +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0x806cc179 ip_vs_conn_in_get_proto +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0x81cde020 register_ip_vs_pe +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0xce889d8a ip_vs_conn_out_get_proto +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x02670506 __nf_ct_expect_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x02c2b761 nf_ct_l4proto_pernet_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x03257593 __nf_conntrack_confirm +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x03ecde41 nf_ct_expect_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x0449269b nf_conntrack_l4proto_udp4 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x045072cd nf_ct_port_nla_policy +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x04cdd6b8 nf_ct_timeout_put_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x058d02fc nf_ct_l4proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x06142854 nfnetlink_parse_nat_setup_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x0b6c52f2 nf_ct_expect_unregister_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x0c67ad5f nf_conntrack_free +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x0d348c5e nf_ct_helper_expectfn_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x0d6a8388 nf_ct_l4proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x1497885b nf_conntrack_locks +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x17849b9d nf_ct_seqadj_set +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x1a678bf7 nf_conntrack_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x1aac8428 __nf_ct_l4proto_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x1c0314a4 nf_ct_seq_adjust +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x278c8798 nf_conntrack_hash_check_insert +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x289c3714 nf_ct_alloc_hashtable +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x29892645 nf_conntrack_helper_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x2ced1653 nf_conntrack_helper_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x2cf8bc23 nf_ct_extend_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x2e78c0ce nf_ct_l4proto_pernet_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x367f4419 nf_conntrack_l4proto_udp6 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x370543c9 nf_ct_helper_ext_add +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x37386cac nf_conntrack_hash_rnd +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x38156f80 nf_ct_deliver_cached_events +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3d4ffc97 nf_ct_tcp_seqadj_set +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3f5b1415 nf_ct_port_nlattr_to_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x408514b0 nf_ct_l3protos +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x40a0976e nf_ct_unlink_expect_report +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x43d6d24d nf_ct_l3proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x44f63886 nf_ct_remove_expectations +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x4689622a __nf_conntrack_helper_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x48160aab nf_ct_invert_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x4a1aaedf nf_ct_tmpl_free +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x4f3f7556 nf_ct_timeout_find_get_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x53d09c18 nf_ct_expect_init +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x56cac0da nf_ct_l3proto_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x59a2f102 nf_ct_helper_expectfn_find_by_symbol +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x5abe09a2 nf_ct_expect_related_report +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x5b0197b8 nf_conntrack_l4proto_tcp6 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x5cab9882 nf_ct_helper_expectfn_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x62813e5c nf_ct_port_nlattr_tuple_size +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6929d1c8 nf_ct_seqadj_init +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6937f53a nf_conntrack_l4proto_tcp4 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x693c3961 nf_ct_helper_hash +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6940cd96 nf_ct_port_tuple_to_nlattr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6a18dc58 nf_conntrack_expect_lock +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6e224a7a need_conntrack +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6ea48b1a nf_conntrack_unregister_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x70ab66cf nf_connlabels_replace +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x72fb4ba1 nf_conntrack_in +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x7651b624 nf_ct_expect_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x7667271f nf_ct_l3proto_pernet_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x78f9b710 nf_ct_l3proto_try_module_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x7ffb8364 nf_conntrack_helper_try_module_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x81680ab9 __nf_ct_try_assign_helper +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x81ee48e6 nf_connlabel_set +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8ffe7e89 nf_conntrack_htable_size +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x908d5869 nf_ct_tmpl_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x90ff6c9f nf_ct_invert_tuplepr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x939c12e4 nf_ct_l4proto_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x98452bc9 nf_ct_l3proto_pernet_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa2167525 nf_conntrack_set_hashsize +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa48c1276 nf_ct_get_tuplepr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa83137a4 __nf_ct_refresh_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xab3d1f95 nf_ct_untracked_status_or +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xad1bb027 nf_ct_free_hashtable +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xaeb6c705 nf_ct_get_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb003f284 nf_ct_l4proto_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb559056b nf_connlabel_match +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb602c57e nf_ct_l3proto_module_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb62317bb nf_conntrack_tuple_taken +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb75f6639 nf_ct_seq_offset +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb95d3cd3 nf_ct_iterate_cleanup +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xbd04d112 nf_conntrack_register_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc0a1a81f seq_print_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 0xccdf036d nf_ct_helper_expectfn_find_by_name +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd25d36a9 nf_ct_l3proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd3d3d506 nf_conntrack_l3proto_generic +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xdb274958 nf_ct_expect_register_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xe0d7614c nf_ct_unexpect_related +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xe693b1ed __nf_ct_kill_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xe73e9aa7 nf_ct_helper_log +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xe8003f0f nf_conntrack_alter_reply +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xeb7258c1 nf_ct_delete +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf38bcdf3 nf_conntrack_max +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf6e6a353 nf_conntrack_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf9adc1e6 nf_ct_extend_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xfbe2c015 nf_ct_expect_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_amanda 0x5975f581 nf_nat_amanda_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_broadcast 0xbb18ab70 nf_conntrack_broadcast_help +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_ftp 0x8dfd5d62 nf_nat_ftp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x0ab65de4 set_h245_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x1297f16e nat_h245_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x18320dc9 get_h225_addr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x1c1fb78f nat_rtp_rtcp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x53007be0 nat_callforwarding_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x62b55da6 nat_q931_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xa169ee61 nat_t120_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xb6e5ef9a set_ras_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xd25497a7 set_sig_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xd49a4cc3 set_h225_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_irc 0x3b5bcdc8 nf_nat_irc_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0x7339b3d3 nf_nat_pptp_hook_inbound +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0x994f348c nf_nat_pptp_hook_outbound +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0xa336880a nf_nat_pptp_hook_expectfn +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0xfaef0f32 nf_nat_pptp_hook_exp_gre +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_proto_gre 0x57d0a133 nf_ct_gre_keymap_add +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_proto_gre 0x9a636ff8 nf_ct_gre_keymap_destroy +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x1895631d ct_sip_parse_header_uri +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x538c7ee8 ct_sip_get_sdp_header +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x782a6570 ct_sip_parse_request +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x92e60f80 ct_sip_parse_numerical_param +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x99f3e6a2 nf_nat_sip_hooks +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xd0aebc4f ct_sip_parse_address_param +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xdd4b6141 ct_sip_get_header +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_snmp 0xe1bcd49a nf_nat_snmp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_tftp 0x415fc49d nf_nat_tftp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_log_common 0x3346ec63 nf_log_dump_udp_header +EXPORT_SYMBOL_GPL net/netfilter/nf_log_common 0x6711f2f4 nf_log_dump_tcp_header +EXPORT_SYMBOL_GPL net/netfilter/nf_log_common 0x6d03f028 nf_log_dump_packet_common +EXPORT_SYMBOL_GPL net/netfilter/nf_log_common 0x6e8e7148 nf_log_dump_sk_uid_gid +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x09e676e4 nf_nat_l4proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x0d9bae4b nf_nat_l4proto_nlattr_to_range +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x0f4394de nf_nat_l3proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x131f636c nf_nat_l4proto_in_range +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x340d3151 nf_nat_alloc_null_binding +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x6c4449be nf_nat_packet +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x7763cbe7 nf_ct_nat_ext_add +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xaf07e4a3 nf_nat_l3proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xca1bea23 nf_nat_l4proto_unique_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xd5be0edf __nf_nat_l4proto_find +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xfd10a022 nf_nat_l4proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_nat_redirect 0xbd5752a9 nf_nat_redirect_ipv4 +EXPORT_SYMBOL_GPL net/netfilter/nf_nat_redirect 0xeb2c11f6 nf_nat_redirect_ipv6 +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x11a006b5 synproxy_check_timestamp_cookie +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x2ede54fe synproxy_parse_options +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x8841d39b synproxy_build_options +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x90298227 synproxy_init_timestamp_cookie +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0xb42e336a synproxy_options_size +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0xc81b4e9d synproxy_tstamp_adjust +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0xef7db50c synproxy_net_id +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x04e39dc1 nft_dump_register +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x0530fa65 nft_register_set +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x1e6b75a3 nft_parse_register +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x2c6fc8bd nft_unregister_set +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x2f6613ef nft_register_expr +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x41f65dff nft_data_init +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x5778f241 nft_chain_validate_hooks +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x609215cb nft_register_chain_type +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x68088bee nft_data_uninit +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x697a0d10 nft_unregister_afinfo +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x72acdb71 nft_do_chain +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x804ed70e nft_register_afinfo +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x8b8b145d nft_set_elem_destroy +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x8edc0759 nft_register_basechain +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x927e9716 nft_unregister_basechain +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xb00b277b nft_validate_register_store +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xb1c3ca01 nft_data_dump +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xb6a6b31e nft_unregister_expr +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xbf63bb61 nft_set_gc_batch_release +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xcf03e214 nft_chain_validate_dependency +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xe09dada2 nft_set_ext_types +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xe63d554b nft_set_gc_batch_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xed0caf4a nft_unregister_chain_type +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xed33c632 nft_validate_register_load +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x024639c1 nfnetlink_subsys_register +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x0d6464bf nfnetlink_alloc_skb +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x1a72d961 nfnetlink_set_err +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x22daad5c nfnetlink_subsys_unregister +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x39dee9b3 nfnetlink_has_listeners +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x5ce3b588 nfnl_lock +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x5fdfce7d nfnetlink_send +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x8f3878e4 nfnetlink_unicast +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xdb065657 nfnl_unlock +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0x21f6bba6 nfnl_acct_find_get +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0x5f0668db nfnl_acct_overquota +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0xbecf5d14 nfnl_acct_put +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0xea8b9297 nfnl_acct_update +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_log 0x4fdd18f4 nfulnl_log_packet +EXPORT_SYMBOL_GPL net/netfilter/nft_masq 0x9e50a075 nft_masq_validate +EXPORT_SYMBOL_GPL net/netfilter/nft_masq 0xcda9bc25 nft_masq_dump +EXPORT_SYMBOL_GPL net/netfilter/nft_masq 0xd7ce3472 nft_masq_init +EXPORT_SYMBOL_GPL net/netfilter/nft_masq 0xe3b8ea21 nft_masq_policy +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0x004e1e8b nft_meta_set_eval +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0x0ab744e7 nft_meta_get_init +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0x359b8693 nft_meta_set_init +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0x49dacaf0 nft_meta_get_dump +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0x901ee2c0 nft_meta_set_dump +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0x96ff2330 nft_meta_get_eval +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0xb80e8358 nft_meta_policy +EXPORT_SYMBOL_GPL net/netfilter/nft_redir 0x2ac3adb7 nft_redir_dump +EXPORT_SYMBOL_GPL net/netfilter/nft_redir 0x65ceee05 nft_redir_validate +EXPORT_SYMBOL_GPL net/netfilter/nft_redir 0x6995da8d nft_redir_init +EXPORT_SYMBOL_GPL net/netfilter/nft_redir 0xa5be1e1e nft_redir_policy +EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0x71267127 nft_reject_init +EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0xa2db3c7f nft_reject_policy +EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0xd9016101 nft_reject_dump +EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0xddf15889 nft_reject_icmp_code +EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0xe8cdab4e nft_reject_icmpv6_code +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x015cb3be xt_compat_target_offset +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x161d1417 xt_compat_unlock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x370a97d7 xt_request_find_target +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x40728a63 xt_find_revision +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x4bb1fe70 xt_find_table_lock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x531d20a6 xt_compat_match_to_user +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x5f82f1f7 xt_compat_flush_offsets +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x61fb596c xt_compat_match_from_user +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x632b8630 xt_compat_target_from_user +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x691a6d69 xt_compat_calc_jump +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x73518bf8 xt_unregister_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x807d2b2c xt_recseq +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x8b236e4b xt_table_unlock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x958adf41 xt_proto_fini +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x9d8a5e27 xt_compat_target_to_user +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xaf3606a0 xt_check_match +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xbfd5e407 xt_replace_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xc811aecb xt_hook_unlink +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xc8afba5c xt_check_target +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xd4c63647 xt_proto_init +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xd5cd8c49 xt_register_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xe0b4971b xt_compat_lock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xe169560d xt_hook_link +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xec24fd82 xt_compat_add_offset +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xf00ab0d9 xt_compat_match_offset +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xf1bace66 xt_request_find_match +EXPORT_SYMBOL_GPL net/netfilter/xt_RATEEST 0x4c32c169 xt_rateest_lookup +EXPORT_SYMBOL_GPL net/netfilter/xt_RATEEST 0xb7459345 xt_rateest_put +EXPORT_SYMBOL_GPL net/nfc/nci/nci 0xa812f8a8 nci_spi_send +EXPORT_SYMBOL_GPL net/nfc/nci/nci 0xd10a75d7 nci_spi_read +EXPORT_SYMBOL_GPL net/nfc/nci/nci 0xe5539b59 nci_spi_allocate_spi +EXPORT_SYMBOL_GPL net/nfc/nci/nci_uart 0x77f0619b nci_uart_set_config +EXPORT_SYMBOL_GPL net/nfc/nci/nci_uart 0x7ae400ae nci_uart_unregister +EXPORT_SYMBOL_GPL net/nfc/nci/nci_uart 0xad427819 nci_uart_register +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x0c07d687 ovs_vport_receive +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x6fea67b2 ovs_vport_alloc +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x7ab4a343 ovs_tunnel_get_egress_info +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0xd84791df ovs_vport_deferred_free +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0xda83411d ovs_net_id +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0xde0ba86b ovs_vport_free +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0xe60dd3d2 ovs_vport_ops_register +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0xefe22903 ovs_vport_ops_unregister +EXPORT_SYMBOL_GPL net/rds/rds 0x00a467af rds_wq +EXPORT_SYMBOL_GPL net/rds/rds 0x0a0a8abe rds_recv_incoming +EXPORT_SYMBOL_GPL net/rds/rds 0x193c92e5 rds_conn_create +EXPORT_SYMBOL_GPL net/rds/rds 0x2088a896 rds_info_deregister_func +EXPORT_SYMBOL_GPL net/rds/rds 0x23b2a61b rds_info_register_func +EXPORT_SYMBOL_GPL net/rds/rds 0x2a0af6fc rds_send_drop_acked +EXPORT_SYMBOL_GPL net/rds/rds 0x2b066b0c rds_conn_drop +EXPORT_SYMBOL_GPL net/rds/rds 0x2bed0de1 rds_inc_put +EXPORT_SYMBOL_GPL net/rds/rds 0x2c5c5514 rds_message_add_rdma_dest_extension +EXPORT_SYMBOL_GPL net/rds/rds 0x3101936e rds_message_add_extension +EXPORT_SYMBOL_GPL net/rds/rds 0x3b4fc0fc rds_page_remainder_alloc +EXPORT_SYMBOL_GPL net/rds/rds 0x50cbe7b3 rds_stats +EXPORT_SYMBOL_GPL net/rds/rds 0x54db6795 rds_for_each_conn_info +EXPORT_SYMBOL_GPL net/rds/rds 0x557aa6ea rds_rdma_send_complete +EXPORT_SYMBOL_GPL net/rds/rds 0x73aac73d rds_message_populate_header +EXPORT_SYMBOL_GPL net/rds/rds 0x7bc62829 rds_stats_info_copy +EXPORT_SYMBOL_GPL net/rds/rds 0x7ebf6a20 rds_conn_create_outgoing +EXPORT_SYMBOL_GPL net/rds/rds 0x86115848 rds_conn_connect_if_down +EXPORT_SYMBOL_GPL net/rds/rds 0x899c4e3b rds_connect_complete +EXPORT_SYMBOL_GPL net/rds/rds 0x90981cf0 rds_conn_destroy +EXPORT_SYMBOL_GPL net/rds/rds 0xacbe9950 rds_page_copy_user +EXPORT_SYMBOL_GPL net/rds/rds 0xae713586 rds_message_addref +EXPORT_SYMBOL_GPL net/rds/rds 0xb34a9ddd rds_trans_unregister +EXPORT_SYMBOL_GPL net/rds/rds 0xb695b396 rds_atomic_send_complete +EXPORT_SYMBOL_GPL net/rds/rds 0xc2dab779 rds_info_copy +EXPORT_SYMBOL_GPL net/rds/rds 0xd0748219 rds_trans_register +EXPORT_SYMBOL_GPL net/rds/rds 0xd43ccd77 rds_inc_init +EXPORT_SYMBOL_GPL net/rds/rds 0xd5c9afb3 rds_send_get_message +EXPORT_SYMBOL_GPL net/rds/rds 0xde673448 rds_cong_map_updated +EXPORT_SYMBOL_GPL net/rds/rds 0xe2dc0074 rds_message_put +EXPORT_SYMBOL_GPL net/rds/rds 0xe47b671f rds_message_unmapped +EXPORT_SYMBOL_GPL net/rxrpc/af-rxrpc 0x41ed093e rxrpc_register_security +EXPORT_SYMBOL_GPL net/rxrpc/af-rxrpc 0x51ea6f23 rxrpc_unregister_security +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x00c52ef5 g_make_token_header +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x03074f09 gss_mech_register +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x83f36a88 gss_mech_unregister +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x8d1a827e svcauth_gss_register_pseudoflavor +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xb5dea7ef g_token_size +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xef3c055e svcauth_gss_flavor +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xf8b2ff6e g_verify_token_header +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00c09a86 xdr_init_decode_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x023ccaab rpc_restart_call +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x042212cd rpc_lookup_machine_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x045834e9 rpcauth_get_pseudoflavor +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x04bf33fb svc_xprt_init +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x04ebac2f svc_process +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 0x0721b5fb rpc_init_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x07c3828f rpc_restart_call_prepare +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x08eb2688 xprt_destroy_backchannel +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0a5a4c5d xdr_terminate_string +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0aed643e rpc_call_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0bfa2267 rpc_init_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0f668ba9 svc_auth_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x108c22b5 xdr_partial_copy_from_skb +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x135baca1 rpcauth_stringify_acceptor +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x136b81d5 rpc_count_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x171ac304 svc_set_num_threads +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1822a1dd rpc_rmdir +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x19c9d161 xdr_init_encode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x19db3f74 xprt_setup_backchannel +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1a08dad0 svc_reg_xprt_class +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1c2c4eea svc_bind +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1e81fb88 xprt_disconnect_done +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1f242331 auth_domain_find +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1f2a9970 rpc_ntop +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2087b7f1 xprt_set_retrans_timeout_rtt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x20d230b1 xprt_set_retrans_timeout_def +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x25ea4d12 xprt_wake_pending_tasks +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2668a904 rpc_add_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2802a6f5 xprt_free +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x28194eaa rpc_alloc_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2919b156 xdr_decode_string_inplace +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x293c51f8 rpc_malloc +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2aa5c8b3 xprt_reserve_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2c0ff47b rpc_find_or_alloc_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2c78ba8d rpc_lookup_cred_nonblock +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2d4432a1 xdr_inline_decode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2e078bca rpcauth_init_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2e4e0a3e sunrpc_cache_register_pipefs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2eec63c9 xdr_encode_netobj +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2f78c524 rpcauth_lookupcred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x31a89d59 rpc_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x329ca34a xdr_buf_subsegment +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x343b1518 xprt_alloc +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3480dd0d rpc_wake_up_first +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x355af6d4 rpc_killall_tasks +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x35671118 rpc_init_pipe_dir_head +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x359a6a20 cache_register_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x387dffcb rpc_get_timeout +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x387e1639 rpc_pipefs_notifier_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x38e54d6f rpc_pton +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x39e8f250 rpc_print_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x39fcd346 rpc_destroy_pipe_data +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3b0c3b0a svc_rpcb_cleanup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3bea6c56 rpc_delay +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3c46572e rpc_destroy_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3dc92878 svc_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3fa40a91 auth_domain_put +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3ff33b54 rpc_bind_new_program +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x40a7ea9d rpc_max_payload +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x40f0b9b4 rpcb_getport_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x41626608 rpcauth_cred_key_to_expire +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x428d3449 svc_authenticate +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4546d8e2 xprt_release_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x46b09ad2 rpcauth_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x47a5f4b0 rpc_proc_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x47abda69 xprt_reserve_xprt_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x49f6c926 rpc_get_sb_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4b5e4788 xprt_alloc_slot +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x51eee763 xdr_buf_read_netobj +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x53445f68 nlm_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x541f427a rpc_force_rebind +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x546d078c svc_addsock +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x54a02631 rpc_remove_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x55830f25 rpc_pipe_generic_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x558a4adf auth_domain_lookup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x567b2d73 svc_unreg_xprt_class +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x581154ff sunrpc_cache_unregister_pipefs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5866b7e3 rpc_shutdown_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x58b1d928 rpc_mkpipe_data +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x58e68779 xprt_write_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x598fbd86 sunrpc_cache_lookup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5a9ab760 svc_alien_sock +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5b00721c xprt_release_xprt_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5be0300a rpc_run_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5e742ec1 rpc_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x616264ed svc_print_addr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x61ccab2d rpc_wake_up_queued_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x62618bc5 rpc_call_null +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x634d6223 xprt_lock_and_alloc_slot +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x64de4705 svc_reserve +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x655bc26b rpc_count_iostats_metrics +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x66b7898b xdr_inline_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x68aacc5b svc_shutdown_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x69d28b6d csum_partial_copy_to_xdr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6cf758e0 sunrpc_cache_update +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6dd54836 svc_create_pooled +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x715b46c5 svc_proc_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7185bb75 rpc_mkpipe_dentry +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x718f0941 xprt_register_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x71fa908a cache_flush +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7412d21d svc_create_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x743a9c9e cache_unregister_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x74edba41 rpc_sleep_on_priority +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x768b4790 rpcauth_generic_bind_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7774342d put_rpccred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7892290e rpc_net_ns +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x78a6e2d7 xdr_encode_array2 +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x79001707 rpc_clnt_swap_deactivate +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7a06f5a2 rpcauth_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7aefd9a7 xdr_init_decode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7c70c5e7 cache_create_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7cba5514 _copy_from_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7de53067 rpc_init_rtt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7f7605d0 rpc_switch_client_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7f855322 xprt_unregister_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7ffd173e svc_set_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x80951b28 rpcauth_get_gssinfo +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x81421774 xprt_adjust_cwnd +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8213df60 sunrpc_init_cache_detail +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x823a81a0 svc_close_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x82f07e6d sunrpc_cache_pipe_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x83519b88 xdr_reserve_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x87279da4 rpc_call_start +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8a646f16 rpcauth_destroy_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8b3ab50c xprt_lookup_rqst +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8e381ca3 rpc_init_priority_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8ea2f2e5 svc_recv +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x921466fa svc_xprt_copy_addrs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x986ce282 cache_check +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x98b198c3 rpc_localaddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x98b75d64 rpcauth_list_flavors +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x991f0a2f svc_xprt_enqueue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9a4f1447 svc_find_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9aa1873c rpc_lookup_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9bcd86bb svc_wake_up +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9f8ce96c xdr_stream_pos +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9fe75e9e xprt_complete_rqst +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa0245c1a svc_max_payload +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa0ec56be rpc_exit +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa11f3cae rpc_put_task_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa15f1868 rpc_put_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa21d44b6 svc_drop +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa3eff674 rpc_protocol +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa73ee1c9 xdr_enter_page +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa769b0ef rpc_clnt_swap_activate +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa8e65701 sunrpc_destroy_cache_detail +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa9341d39 rpc_peeraddr2str +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa94a5b88 read_bytes_from_xdr_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa96f1c3f xdr_read_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xaba32198 svc_xprt_names +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xac88cd60 xdr_commit_encode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xaf5bf6ef nfs_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xaff905db svc_proc_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb0427fe4 gssd_running +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb0929469 rpc_queue_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb16337b9 write_bytes_to_xdr_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb2b9357a svc_prepare_thread +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb353bed6 cache_destroy_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb3d0ce98 rpc_create_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb51a3724 rpc_pipefs_notifier_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb8607fbb xdr_write_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb8817fd0 xdr_skb_read_bits +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb90b3d8a rpc_clone_client_set_auth +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb9ff9cb3 rpc_wake_up_status +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xba7bfc4b svc_seq_show +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbb2cea84 svc_xprt_put +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbc2ccf37 xdr_decode_array2 +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbc8703f8 xdr_decode_word +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbce1b975 rpcauth_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbcfcd8a6 svcauth_unix_set_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbd7e4b56 svc_rpcb_setup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbf8eccbf rpc_wake_up_next +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbf9d1b96 nfsd_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc02156f0 xdr_shift_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc12435e3 rpc_calc_rto +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc3880471 xdr_decode_netobj +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc44d93ee rpcauth_key_timeout_notify +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc56da4c3 xdr_process_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc8e96dea qword_addhex +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcc542ba0 bc_svc_process +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xce653001 xdr_encode_word +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcec6db03 unix_domain_find +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcee467f3 xprt_load_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd0e823d3 rpc_uaddr2sockaddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd14c8eb9 rpc_wake_up +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd353b6f7 __rpc_wait_for_completion_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd512ce66 svc_auth_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd74a9c25 rpc_put_sb_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd93d3e8d rpc_peeraddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd9a6f92c xdr_set_scratch_buffer +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xda376ea6 xprt_release_rqst_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdafb81ac rpc_sleep_on +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdba9e548 rpc_task_reset_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdc30495d svcauth_unix_purge +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe007667e rpc_unlink +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe1ac2bb8 sunrpc_net_id +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe4b6e88b svc_exit_thread +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe4d44ab8 rpcauth_lookup_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe5919cb1 xdr_encode_opaque +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe5e30a8d cache_purge +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe72873e8 rpc_d_lookup_sb +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe7c17c40 svc_sock_update_bufs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe83a5497 rpc_call_sync +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe8673917 xprt_wait_for_buffer_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe97f4ce5 qword_get +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xec1ae936 rpc_setbufsize +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xedcf6be4 qword_add +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xee001823 svc_destroy +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xeeacab69 rpc_update_rtt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xefc877e9 rpc_clone_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf787a1c3 xdr_buf_trim +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf80d4c02 rpc_free_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf8d40ddd rpc_proc_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf91fa992 rpcauth_init_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf9d1164c rpc_free +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfb4b82f1 xdr_buf_from_iov +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfd93e51f rpc_release_client +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x02a636f1 __vsock_core_init +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x07e354db vsock_stream_has_data +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x0b8802fa vsock_enqueue_accept +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x0c79d5ef vm_sockets_get_local_cid +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x15c0c57c vsock_addr_init +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x22df68a7 vsock_remove_bound +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x2663cb64 vsock_addr_equals_addr +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x35ba571e vsock_stream_has_space +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x4176501f vsock_find_bound_socket +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x4689f4b2 vsock_insert_connected +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x59d943c8 vsock_addr_cast +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x5d6424eb vsock_for_each_connected_socket +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x751ff010 vsock_addr_unbind +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x7763c288 vsock_add_pending +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x7f730c80 vsock_core_exit +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x970b77bc vsock_pending_work +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xb05d4fe6 __vsock_create +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xbd0f699d vsock_addr_bound +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xce3c6c22 vsock_find_connected_socket +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xd398e007 vsock_remove_connected +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xd95ac116 vsock_addr_validate +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xee3cb025 vsock_remove_pending +EXPORT_SYMBOL_GPL net/wimax/wimax 0x0f77f722 wimax_dev_rm +EXPORT_SYMBOL_GPL net/wimax/wimax 0x1f9f072f wimax_msg_data_len +EXPORT_SYMBOL_GPL net/wimax/wimax 0x264f631d wimax_dev_add +EXPORT_SYMBOL_GPL net/wimax/wimax 0x2d24b4bd wimax_msg_send +EXPORT_SYMBOL_GPL net/wimax/wimax 0x39894991 wimax_report_rfkill_hw +EXPORT_SYMBOL_GPL net/wimax/wimax 0x532ee5bd wimax_state_change +EXPORT_SYMBOL_GPL net/wimax/wimax 0x565f4fd6 wimax_msg_data +EXPORT_SYMBOL_GPL net/wimax/wimax 0x71c2782a wimax_state_get +EXPORT_SYMBOL_GPL net/wimax/wimax 0x84111f76 wimax_msg_alloc +EXPORT_SYMBOL_GPL net/wimax/wimax 0x9af0dd5d wimax_msg +EXPORT_SYMBOL_GPL net/wimax/wimax 0xb682aaf8 wimax_msg_len +EXPORT_SYMBOL_GPL net/wimax/wimax 0xcf6eb0e8 wimax_dev_init +EXPORT_SYMBOL_GPL net/wimax/wimax 0xe8ddcff9 wimax_report_rfkill_sw +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x07c743b0 cfg80211_wext_siwscan +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x0a1dee69 cfg80211_wext_giwfrag +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x16b99b28 cfg80211_wext_giwscan +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x44afdb12 cfg80211_shutdown_all_interfaces +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x4861aa92 cfg80211_wext_siwrts +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x52c35a24 cfg80211_wext_siwfrag +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x6d61b669 cfg80211_wext_giwretry +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x75209eb3 cfg80211_wext_giwrange +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x7c6d426b cfg80211_wext_siwmode +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xd1addb1e cfg80211_wext_giwname +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xd6e8b552 cfg80211_wext_giwmode +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xeda2e479 cfg80211_vendor_cmd_reply +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xfe99f6af cfg80211_wext_giwrts +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 0x3bf471d7 xfrm_calg_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x47b34e60 xfrm_ealg_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x60b73277 xfrm_aead_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x7a8ca627 xfrm_count_pfkey_enc_supported +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x834ba96d xfrm_aalg_get_byid +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xa6e66685 xfrm_aalg_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xaa762fe2 xfrm_aalg_get_byidx +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xad1b60ed xfrm_calg_get_byid +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xdbfc35c8 xfrm_ealg_get_byidx +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xdfea3a6d xfrm_ealg_get_byid +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0x0d4b3d21 ipcomp_init_state +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0x1cc222d0 ipcomp_destroy +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0x59cab397 ipcomp_input +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0xd914b9e7 ipcomp_output +EXPORT_SYMBOL_GPL sound/core/seq/snd-seq-device 0x4be51053 snd_seq_driver_unregister +EXPORT_SYMBOL_GPL sound/core/seq/snd-seq-device 0x8081159a __snd_seq_driver_register +EXPORT_SYMBOL_GPL sound/core/snd 0x346b846e snd_ctl_sync_vmaster +EXPORT_SYMBOL_GPL sound/core/snd 0x7c4a9280 snd_device_initialize +EXPORT_SYMBOL_GPL sound/core/snd 0x8babf66a snd_card_add_dev_attr +EXPORT_SYMBOL_GPL sound/core/snd 0xaef7a3e1 snd_ctl_activate_id +EXPORT_SYMBOL_GPL sound/core/snd 0xda91d392 snd_ctl_add_vmaster_hook +EXPORT_SYMBOL_GPL sound/core/snd 0xe7083711 snd_device_disconnect +EXPORT_SYMBOL_GPL sound/core/snd 0xe77c5d6f snd_ctl_get_preferred_subdevice +EXPORT_SYMBOL_GPL sound/core/snd-compress 0x2af690e3 snd_compress_new +EXPORT_SYMBOL_GPL sound/core/snd-compress 0x6bb9b0cf snd_compress_deregister +EXPORT_SYMBOL_GPL sound/core/snd-compress 0xf241c545 snd_compress_register +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x00e55d3b snd_pcm_stop_xrun +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 0x14059c51 snd_pcm_stream_unlock +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x6ff013b0 snd_pcm_stream_lock_irq +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x9a198ffa snd_pcm_add_chmap_ctls +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 0xb31da427 snd_pcm_stream_unlock_irq +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0xba4632f9 _snd_pcm_stream_lock_irqsave +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0xce495eac snd_pcm_stream_lock +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0xdefc0b92 snd_pcm_stream_unlock_irqrestore +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0xf251ab8f snd_pcm_lib_default_mmap +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x01154df1 snd_dmaengine_pcm_pointer +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x25d9fde5 snd_hwparams_to_dma_slave_config +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x37a39b7c snd_dmaengine_pcm_set_config_from_dai_data +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x4740ff96 snd_dmaengine_pcm_open_request_chan +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x5a42cc1f snd_dmaengine_pcm_pointer_no_residue +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x6427bee2 snd_dmaengine_pcm_request_channel +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x7bedfd1e snd_dmaengine_pcm_close_release_chan +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x835b94f4 snd_dmaengine_pcm_open +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x8aeaca5d snd_dmaengine_pcm_trigger +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0xba90885b snd_dmaengine_pcm_get_chan +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0xc3daaa16 snd_dmaengine_pcm_close +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x0007b4de snd_hdac_is_supported_format +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x009cdcd2 snd_hdac_bus_enter_link_reset +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x01327d2f snd_hdac_query_supported_pcm +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x06a5a30d snd_hdac_get_display_clk +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x141d2c4b snd_hdac_bus_stop_cmd_io +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x16592f5f snd_hdac_regmap_update_raw +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x19c8fe5d snd_hdac_bus_get_response +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x1ec7d461 snd_hdac_stream_set_params +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x2427c0b3 snd_hdac_override_parm +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x2a49bf0f snd_hdac_device_unregister +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x2a6f784a snd_hdac_bus_exit +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x2c9dc9f4 snd_hdac_regmap_add_vendor_verb +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x2ff62d57 snd_hdac_set_codec_wakeup +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x3341e860 snd_hdac_stream_sync_trigger +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x378eaffb snd_hdac_bus_exec_verb +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x434f9dca snd_hdac_exec_verb +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x43d6c23a snd_hdac_bus_exec_verb_unlocked +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x43f779a4 snd_hdac_stream_assign +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x4bb554ce snd_hdac_stream_clear +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x4ceee33f snd_hdac_bus_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x57b839d8 snd_hdac_dsp_cleanup +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x5a581ad1 snd_hdac_device_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x5b322050 hdac_get_device_id +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x5b7689d1 snd_hdac_regmap_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x6053321a snd_hdac_bus_queue_event +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x60d97291 snd_hdac_refresh_widgets +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x62092e1b snd_hdac_display_power +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x6c17754d snd_hdac_stream_cleanup +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x70c54c2d snd_hdac_i915_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x74d5ce2a snd_hdac_stream_reset +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x7526b21c snd_hdac_power_up_pm +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x759742c9 snd_hdac_bus_exit_link_reset +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x76e54010 snd_hdac_bus_add_device +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x77553e7a snd_hdac_bus_remove_device +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x795167aa snd_hdac_bus_alloc_stream_pages +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x7fe25ece snd_hdac_i915_register_notifier +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x8195a57d snd_hdac_stream_start +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x8948c2f4 snd_hdac_regmap_exit +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x8d8982b3 snd_hdac_stream_timecounter_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x9037e65b snd_hdac_bus_send_cmd +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x91fdde2e snd_hdac_make_cmd +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x93c7d3c7 snd_hdac_read_parm_uncached +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x9707a4b8 snd_hdac_stream_setup +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x99bbbd24 snd_hdac_bus_free_stream_pages +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x9a8e1877 snd_array_free +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x9ed4780c snd_hdac_bus_handle_stream_irq +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xa7f1d570 snd_hdac_power_down +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xa8601036 snd_hdac_device_register +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xaada56a5 snd_hdac_bus_init_cmd_io +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xac54fc97 snd_hdac_regmap_read_raw +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xb1d5fd9b snd_hdac_dsp_prepare +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xb2385613 snd_hdac_bus_update_rirb +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xb40abffa snd_hdac_stream_stop +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xb8b127d7 snd_hdac_bus_stop_chip +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xbe7dd7dc snd_array_new +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xc235feea snd_hdac_stream_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xca8072c4 _snd_hdac_read_parm +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xd1cda053 snd_hdac_power_down_pm +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xd2356d6d snd_hdac_power_up +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xd7981c34 snd_hdac_read +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xd8196fa4 snd_hdac_get_connections +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xd9e2bb43 snd_hdac_stream_release +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xda282351 snd_hdac_get_sub_nodes +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xdd9a804a snd_hdac_calc_stream_format +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xde981371 snd_hdac_dsp_trigger +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xe79185b9 snd_hda_bus_type +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xe8df2de8 snd_hdac_stream_sync +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xedc9fba1 snd_hdac_stream_setup_periods +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xef492775 snd_hdac_regmap_write_raw +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xf11a345a snd_hdac_device_exit +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xf39705d1 snd_hdac_i915_exit +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xf6511cbb snd_hdac_link_power +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xf7dadf4c snd_hdac_bus_init_chip +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x384b022f snd_ak4113_reinit +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x3b9ff866 snd_ak4113_reg_write +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x49a815f0 snd_ak4113_external_rate +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x5c62461d snd_ak4113_check_rate_and_errors +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0xc4519631 snd_ak4113_build +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0xd7d3311a snd_ak4113_create +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x016d89b8 snd_hda_multi_out_analog_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x022226d5 snd_hda_apply_verbs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0273fe9f snd_hda_add_new_ctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x028dac31 snd_hda_mixer_bind_ctls_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x034c2190 snd_hda_add_nid +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 0x07e69546 snd_hda_codec_eapd_power_filter +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x090f75e0 __snd_hda_codec_cleanup_stream +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0dcf3732 snd_hda_codec_update_widgets +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0f1fec73 snd_hda_jack_tbl_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x11e32b5a snd_hda_set_power_save +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x12683e12 snd_hda_mixer_amp_switch_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x16fdee95 snd_hda_find_mixer_ctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x211b070e snd_hda_create_spdif_in_ctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2bea2022 snd_hda_sync_vmaster_hook +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2d07c25a snd_hda_mixer_amp_volume_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2d384432 snd_hda_get_conn_list +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2edbf23f snd_hda_mixer_bind_tlv +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2f2cdec8 snd_hda_input_mux_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2fab0090 snd_hda_spdif_ctls_assign +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3006f6b1 snd_hda_jack_unsol_event +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x30cac644 snd_hda_spdif_ctls_unassign +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x375cacd5 snd_hda_input_mux_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x379e6e68 snd_hda_enum_helper_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3863c4ff snd_hda_mixer_amp_volume_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x38ce402b azx_interrupt +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3a029228 snd_hda_create_dig_out_ctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3e229fe1 snd_hda_codec_load_dsp_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3e9908d8 snd_hda_mixer_amp_tlv +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x40096bdc snd_hda_mixer_amp_volume_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x406c6157 snd_hda_enable_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x409a5684 snd_hda_codec_load_dsp_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x43ca0889 snd_hda_parse_pin_defcfg +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x472aa1aa snd_hda_codec_pcm_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x489689de snd_hda_bind_sw +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x49cf53fa snd_hda_multi_out_dig_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4a30c107 snd_hda_lock_devices +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x51116f82 __hda_codec_driver_register +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x537e93f2 snd_hda_pick_fixup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x53d80f98 snd_hda_jack_tbl_get_from_tag +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x54a2f76d snd_hda_multi_out_dig_open +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x56ef0ca9 azx_get_position +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x58f86da7 snd_hda_spdif_out_of_nid +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x59e092a9 snd_hda_codec_write +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5bd9f0a5 snd_hda_mixer_amp_switch_put_beep +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5d153285 snd_hda_multi_out_analog_open +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5dc42774 snd_hda_multi_out_analog_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x637132cf snd_hda_codec_configure +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x658a8b72 snd_hda_codec_amp_stereo +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x66c19390 snd_hda_mixer_amp_switch_get_beep +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x66f42d34 snd_hda_codec_amp_init_stereo +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6a029131 snd_hda_mixer_amp_switch_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6a6df502 snd_hda_multi_out_dig_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6b799b20 snd_hda_get_connections +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6c42a161 snd_hda_codec_load_dsp_trigger +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6d4d8c5a snd_hda_codec_setup_stream +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6f8305b7 snd_hda_mixer_bind_ctls_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x77b41925 azx_get_pos_posbuf +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x77dacaee snd_hda_add_verbs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7ae70312 snd_hda_mixer_bind_ctls_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7b982e61 snd_hda_codec_read +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7e53f3e8 azx_stop_chip +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7f669794 snd_hda_mixer_amp_switch_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x80dfca94 query_amp_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x812968c9 azx_init_chip +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x83b67f09 azx_init_streams +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x845a40b5 snd_hda_jack_poll_all +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x873ac16d snd_hda_codec_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x88698767 snd_hda_add_vmaster_hook +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x887d5d26 _snd_hda_set_pin_ctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8b0cd94b snd_hda_jack_detect_enable_callback +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8d8bc3d1 snd_hda_create_spdif_share_sw +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x91e652fa snd_hda_codec_amp_update +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x937e178d snd_hda_get_default_vref +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x96776b5f snd_hda_unlock_devices +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9ccd1530 snd_hda_attach_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9cdec38a snd_hda_override_conn_list +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9f3334b7 snd_hda_detach_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa121f0ff snd_hda_sequence_write +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa2827d76 snd_hda_get_jack_location +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa3ec3c9a snd_hda_get_int_hint +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa50a5b01 azx_get_pos_lpib +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa582b2a1 snd_hda_get_hint +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa6a1dfd0 snd_hda_override_amp_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xacf018ec snd_hda_codec_get_pincfg +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xad8dbc17 azx_free_streams +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xadc43380 is_jack_detectable +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xaeb9663e snd_hda_correct_pin_ctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb0652771 azx_probe_codecs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb2f0d5fe snd_hda_jack_set_gating_jack +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb66309bd snd_hda_ctl_add +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb87aff36 snd_hda_jack_set_dirty_all +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb9b72e5c azx_codec_configure +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xbb0a81a8 snd_hda_codec_set_power_to_all +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xbdbe3b58 hda_codec_driver_unregister +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xbe02520a snd_hda_get_pin_label +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xbe449205 snd_hda_jack_detect_enable +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc2897061 snd_hda_pin_sense +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc652fd69 snd_hda_get_jack_connectivity +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc6c95b54 snd_hda_multi_out_dig_close +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc955da21 azx_stop_all_streams +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xcb301b6e snd_hda_get_jack_type +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xcd2ccecc snd_hda_set_vmaster_tlv +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xcdcb6ccb snd_hda_register_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd0a466f2 snd_hda_jack_add_kctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd36547c7 hda_get_autocfg_input_label +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd3750108 snd_hda_codec_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd48789fb snd_hda_check_amp_list_power +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd657f9b1 snd_hda_get_bool_hint +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd739c997 snd_hda_codec_amp_init +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xdb3cba70 snd_hda_jack_report_sync +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xdc924f44 snd_hda_codec_pcm_new +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xdec07c30 azx_bus_init +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xdf6e8bc9 snd_hda_shutup_pins +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xdfcbeaeb snd_hda_jack_add_kctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe118de5d snd_pcm_2_1_chmaps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe2ced2c8 snd_hda_load_patch +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe54a9dd0 snd_hda_add_imux_item +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe7e62a0e snd_hda_mixer_bind_switch_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xeda3a721 snd_print_pcm_bits +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xeea6bec2 snd_hda_codec_set_pincfg +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xef3b36b8 snd_hda_apply_pincfgs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf0ed46cc snd_hda_check_amp_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf168a4ec snd_hda_bind_vol +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf1731067 snd_hda_get_conn_index +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf18bf306 snd_hda_apply_fixup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf2822cab snd_hda_mixer_bind_switch_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf351a5c2 __snd_hda_add_vmaster +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf47f7347 snd_hda_jack_detect_state +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf5cfd220 snd_hda_pick_pin_fixup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf6fc73bc snd_hda_codec_get_pin_target +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf8f0e94f snd_hda_codec_set_pin_target +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xfe9d9219 snd_hda_codec_new +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x094c1a35 snd_hda_gen_update_outputs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x1003d250 snd_hda_gen_add_kctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x16f5c310 snd_hda_gen_path_power_filter +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x19a19081 snd_hda_gen_mic_autoswitch +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x27d91367 snd_hda_get_path_from_idx +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x38c5e543 snd_hda_gen_check_power_status +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x530b3f50 snd_hda_gen_init +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x608faa1f snd_hda_get_path_idx +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x68f0eab8 snd_hda_get_nid_path +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x6fac0a15 snd_hda_gen_build_controls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x75629e55 snd_hda_activate_path +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 0x77d15bd5 snd_hda_gen_free +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 0x8f48e325 snd_hda_gen_stream_pm +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x96cb15b5 snd_hda_parse_nid_path +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xb32a495a snd_hda_gen_line_automute +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xd0ea58a7 snd_hda_gen_spec_init +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xd556f019 snd_hda_gen_build_pcms +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xe7d788bf snd_hda_add_new_path +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xe84ab780 snd_hda_gen_fix_pin_power +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xeb26bc5f snd_hda_gen_parse_auto_config +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xebe0b4d5 snd_hda_gen_hp_automute +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs4271 0x2e386f50 cs4271_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs4271 0x6e4adcdf cs4271_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42l51 0x1940c854 cs42l51_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42l51 0x375ad98c cs42l51_of_match +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42l51 0xe6dc6278 cs42l51_regmap +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0x0245c4f2 cs42xx8_of_match +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0x06f105f5 cs42xx8_pm +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0x128bc23d cs42xx8_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0x575904c6 cs42xx8_regmap_config +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-es8328 0x2ab9c627 es8328_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-es8328 0xfe4b2e42 es8328_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-max98090 0x0c5d2605 max98090_mic_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm512x 0x0c314132 pcm512x_regmap +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm512x 0x329cd205 pcm512x_pm_ops +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm512x 0x7a432c59 pcm512x_remove +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm512x 0xa842f469 pcm512x_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rl6231 0x70617a04 rl6231_get_clk_info +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rl6231 0x7f68b24d rl6231_pll_calc +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 0xc1f33866 rt286_mic_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5640 0x33b00509 rt5640_dmic_enable +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5645 0x96ffbf28 rt5645_set_jack_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5645 0xd395d8c2 rt5645_sel_asrc_clk_src +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5670 0x90f32a7b rt5670_sel_asrc_clk_src +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5670 0xcdf8f0e9 rt5670_jack_resume +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5670 0xf01c5207 rt5670_set_jack_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5670 0xfbd71b19 rt5670_jack_suspend +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0x530c157e sigmadsp_attach +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0x98e371c5 sigmadsp_restrict_params +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0xcbfd4797 sigmadsp_reset +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0xea698214 devm_sigmadsp_init +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0xf4396034 sigmadsp_setup +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp-i2c 0x3b8258e6 devm_sigmadsp_init_i2c +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-ssm2602 0x19c2699c ssm2602_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-ssm2602 0x3f695aef ssm2602_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-tpa6130a2 0x450cbf10 tpa6130a2_stereo_enable +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-tpa6130a2 0x5c5d840a tpa6130a2_add_controls +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-ts3a227e 0xc265cc3b ts3a227e_enable_jack_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8804 0x269cedf0 wm8804_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8804 0x5781466b wm8804_remove +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8804 0xe01bc2c4 wm8804_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8804 0xedabca2c wm8804_pm +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8903 0xa46d33ed wm8903_mic_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8962 0x7bc76c4f wm8962_mic_detect +EXPORT_SYMBOL_GPL sound/soc/fsl/snd-soc-fsl-asrc 0xe2d364b4 fsl_asrc_platform +EXPORT_SYMBOL_GPL sound/soc/fsl/snd-soc-fsl-asrc 0xe3f94c88 fsl_asrc_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/intel/atom/snd-soc-sst-mfld-platform 0x0d130a53 sst_register_dsp +EXPORT_SYMBOL_GPL sound/soc/intel/atom/snd-soc-sst-mfld-platform 0x5f454b3b sst_unregister_dsp +EXPORT_SYMBOL_GPL sound/soc/intel/atom/sst/snd-intel-sst-core 0x61ceea17 intel_sst_pm +EXPORT_SYMBOL_GPL sound/soc/intel/atom/sst/snd-intel-sst-core 0xa8c02054 sst_configure_runtime_pm +EXPORT_SYMBOL_GPL sound/soc/intel/atom/sst/snd-intel-sst-core 0xab14edd5 relocate_imr_addr_mrfld +EXPORT_SYMBOL_GPL sound/soc/intel/atom/sst/snd-intel-sst-core 0xdadad848 sst_context_cleanup +EXPORT_SYMBOL_GPL sound/soc/intel/atom/sst/snd-intel-sst-core 0xe5fe79f1 sst_alloc_drv_context +EXPORT_SYMBOL_GPL sound/soc/intel/atom/sst/snd-intel-sst-core 0xeabf3e8d sst_context_init +EXPORT_SYMBOL_GPL sound/soc/intel/baytrail/snd-soc-sst-baytrail-pcm 0x18a0f29d sst_byt_dsp_wait_for_ready +EXPORT_SYMBOL_GPL sound/soc/intel/baytrail/snd-soc-sst-baytrail-pcm 0x26fc5291 sst_byt_dsp_suspend_late +EXPORT_SYMBOL_GPL sound/soc/intel/baytrail/snd-soc-sst-baytrail-pcm 0x8b96db67 sst_byt_dsp_free +EXPORT_SYMBOL_GPL sound/soc/intel/baytrail/snd-soc-sst-baytrail-pcm 0xc6a5b585 sst_byt_dsp_init +EXPORT_SYMBOL_GPL sound/soc/intel/baytrail/snd-soc-sst-baytrail-pcm 0xda1cb6d6 sst_byt_dsp_boot +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x021e8f4a sst_fw_free +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x0315fde1 sst_dsp_dump +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x06b7f236 sst_dsp_ipc_msg_tx +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x0bcdf2d6 sst_dsp_shim_read +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x0eef3410 sst_fw_unload +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x1042e6dc sst_memcpy_fromio_32 +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x1704ab5b sst_module_free +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x19770622 sst_module_runtime_new +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x1b5e8b82 sst_shim32_read +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x3491c61e sst_dsp_dma_put_channel +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x35654b34 sst_dsp_stall +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x36e25d7c sst_dsp_outbox_read +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x48c4d390 sst_dsp_dma_get_channel +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x4a045773 sst_shim32_write +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x4cba67ea sst_dsp_outbox_write +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x5661deff sst_dsp_shim_read_unlocked +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x600bf26f sst_module_runtime_alloc_blocks +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x60acf801 sst_dsp_sleep +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x62455fa8 sst_alloc_blocks +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x693f7a9f sst_dsp_inbox_read +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x735ca81f sst_module_runtime_restore +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x75e6090f sst_dsp_inbox_write +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x76cc8b4e sst_dsp_shim_write64 +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x78239898 sst_dsp_shim_update_bits64 +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x7d3d83b1 sst_module_alloc_blocks +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x7ed27678 sst_fw_free_all +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x88036ad5 sst_dsp_new +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x8a21e30a sst_block_alloc_scratch +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x8c6c0222 sst_dsp_shim_update_bits64_unlocked +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x9079ad9b sst_mem_block_unregister_all +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x9667490b sst_fw_reload +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x9989233e sst_dsp_dma_copyfrom +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x99fe1f07 sst_fw_new +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x9bbe39ec sst_block_free_scratch +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xa33137c8 sst_dsp_shim_read64_unlocked +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xa55c29cb sst_module_get_from_id +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xaf9834d3 sst_dsp_boot +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xbae1b540 sst_module_runtime_get_from_id +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xbb4eb106 sst_dsp_dma_copyto +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xbce54147 sst_dsp_shim_write_unlocked +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xbcec5387 sst_shim32_read64 +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xc0d9197c sst_mem_block_register +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xc88162c8 sst_dsp_shim_read64 +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xc8a5d2ce sst_module_runtime_save +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xc8ac79fd sst_dsp_shim_write64_unlocked +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xc9f0a21e sst_module_runtime_free +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xcbc3615e sst_dsp_get_offset +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xceac120c sst_dsp_shim_write +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xd0f41b19 sst_dsp_free +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xd5af9a55 sst_dsp_mailbox_init +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xd9a2c94c sst_shim32_write64 +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xe0716b6f sst_module_new +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xe21659b0 sst_module_runtime_free_blocks +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xe5cd24f3 sst_free_blocks +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xea5e7caa sst_memcpy_toio_32 +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xec46b609 sst_dsp_wake +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xed1e45a5 sst_module_free_blocks +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xed574ee9 sst_dsp_shim_update_bits +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xfa08ac65 sst_dsp_ipc_msg_rx +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xfb996a13 sst_dsp_reset +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xfd98bff2 sst_dsp_shim_update_bits_unlocked +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-ipc 0x3951646f sst_ipc_fini +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-ipc 0x4f7e4456 sst_ipc_reply_find_msg +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-ipc 0x5480f4be sst_ipc_init +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-ipc 0x75fe03b1 sst_ipc_tx_msg_reply_complete +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-ipc 0x8e561c14 sst_ipc_tx_message_wait +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-ipc 0x9a80ba96 sst_ipc_drop_all +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-ipc 0xd936b340 sst_ipc_tx_message_nowait +EXPORT_SYMBOL_GPL sound/soc/intel/haswell/snd-soc-sst-haswell-pcm 0xd1f69f64 sst_hsw_device_set_config +EXPORT_SYMBOL_GPL sound/soc/intel/haswell/snd-soc-sst-haswell-pcm 0xd3e68471 sst_hsw_dsp_init +EXPORT_SYMBOL_GPL sound/soc/intel/haswell/snd-soc-sst-haswell-pcm 0xfe4771c5 sst_hsw_dsp_free +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0796a12c snd_soc_bytes_put +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x084647c3 snd_soc_dapm_get_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x09909b56 snd_soc_dapm_force_enable_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x09a57f30 snd_soc_jack_free_gpios +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0a03c747 snd_soc_suspend +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0b6939e1 soc_ac97_ops +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0cfaed6f snd_soc_dapm_put_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0d2aae4a snd_soc_component_write +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0dc25736 snd_soc_cnew +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x112e2846 snd_soc_debugfs_root +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x13a05f31 snd_soc_codec_set_sysclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1574b0d2 snd_soc_dai_set_sysclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x157998ca snd_soc_component_init_regmap +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x15ab6230 snd_soc_get_volsw_range +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1635ef4f snd_soc_jack_notifier_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x17e0248b snd_soc_dapm_ignore_suspend +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x17ea0cfa snd_soc_jack_add_gpiods +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1aeb698d snd_soc_get_strobe +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1bf81132 snd_soc_dapm_get_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1d92ceee snd_soc_bytes_get +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1f5538ec snd_soc_put_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1f657750 snd_soc_dai_set_bclk_ratio +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x230b10c6 snd_soc_dapm_nc_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x24372ee7 snd_soc_test_bits +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x250f8540 snd_soc_add_codec_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2541a979 snd_soc_calc_frame_size +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x261ff928 snd_soc_lookup_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x277b8788 snd_soc_component_exit_regmap +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2bbb6ca0 snd_soc_dapm_new_widgets +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2d134905 snd_soc_info_xr_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2d9bed1c snd_soc_dapm_sync_unlocked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2ecb6bb8 snd_dmaengine_pcm_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2f624d73 snd_soc_poweroff +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x306ae770 snd_soc_dpcm_can_be_params +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x30fb7d49 snd_soc_dapm_get_pin_status +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x314c9a0f snd_soc_info_volsw_range +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x37d64f8d snd_soc_card_jack_new +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x389b3672 snd_soc_register_card +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3afb4d00 snd_soc_jack_notifier_unregister +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3ed2df19 snd_soc_of_parse_tdm_slot +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3f45fe2f snd_soc_dai_set_pll +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3f92bc06 snd_soc_dpcm_get_substream +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x410a67ca snd_soc_unregister_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x42f63374 snd_soc_dapm_enable_pin_unlocked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x44531da9 snd_soc_dapm_nc_pin_unlocked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4469868f snd_soc_runtime_set_dai_fmt +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x44798233 snd_soc_register_component +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x465f7b83 snd_soc_get_xr_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x46f20fc2 snd_soc_component_async_complete +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x493fe70a snd_soc_resume +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4c73f931 snd_soc_dai_digital_mute +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x50e37408 snd_soc_get_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x531c7c00 snd_soc_free_ac97_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x531d0de3 dpcm_be_dai_trigger +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x53f0fbd9 snd_soc_get_dai_substream +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5486f899 snd_soc_of_parse_audio_simple_widgets +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x561a4f2c snd_soc_put_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x58a58f8f snd_soc_unregister_card +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x58fa6573 snd_soc_write +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5970ad1e snd_soc_limit_volume +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5a1d2ed4 snd_soc_put_volsw_range +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5aa0e4a2 snd_soc_dai_set_channel_map +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5c016d37 snd_soc_put_volsw_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5e393a72 snd_soc_jack_report +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5e8235ea snd_soc_set_runtime_hwparams +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5f1ebf28 snd_soc_of_parse_audio_routing +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x60679d13 snd_soc_new_ac97_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x626efc18 snd_soc_unregister_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x64dc25bd snd_soc_dpcm_be_get_state +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x66f8063e snd_soc_set_ac97_ops_of_reset +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x696773e4 snd_soc_jack_add_gpios +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x69c71c35 snd_soc_bytes_tlv_callback +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x72ef4b9b snd_soc_put_strobe +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x73bcc3e2 snd_soc_add_platform_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x78e63892 snd_soc_jack_get_type +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7ab9a7ba snd_soc_platform_read +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7b85d252 snd_soc_of_get_dai_link_codecs +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7b8f427d snd_soc_jack_add_pins +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7ddaa235 devm_snd_soc_register_component +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7e606130 snd_soc_calc_bclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x80014c9f snd_soc_pm_ops +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x81c06940 dapm_mark_endpoints_dirty +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8308c1e5 snd_soc_platform_write +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x83170c74 snd_soc_unregister_component +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8498cf09 snd_soc_dapm_mux_update_power +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x86f29cc8 snd_soc_dapm_put_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8eed879a snd_soc_dai_set_tdm_slot +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8f8ba1fe snd_soc_get_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x93625a41 devm_snd_dmaengine_pcm_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x94f1c435 snd_soc_dapm_sync +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x95bfef03 snd_dmaengine_pcm_unregister +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x95f9f100 snd_soc_get_volsw_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x99fa436d snd_soc_add_card_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9ac63e1a snd_soc_info_volsw_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9ad19931 snd_soc_component_test_bits +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9ae5a833 snd_soc_dai_set_fmt +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9b607d29 snd_soc_dapm_kcontrol_dapm +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9d1c391f snd_soc_get_pcm_runtime +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9d634b59 snd_soc_component_update_bits +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9d6efc3e snd_soc_register_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9fce9551 snd_soc_put_xr_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa019484a snd_soc_dpcm_be_set_state +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa1fbbe2c snd_soc_bytes_info_ext +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa22901fe dapm_kcontrol_get_value +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa2bf50aa snd_soc_dpcm_be_can_update +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa45c539c snd_soc_card_get_kcontrol +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa5b1afdc snd_soc_dai_set_tristate +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa5eeaa07 snd_soc_set_ac97_ops +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa606d722 snd_soc_info_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xaf1513b5 snd_soc_read +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb3824b7e snd_soc_add_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xbb9fb4fa snd_soc_dapm_force_bias_level +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xbd14643d snd_soc_codec_set_pll +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xbd3eff67 dapm_clock_event +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xbee141f2 snd_soc_platform_trigger +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc266b4c1 snd_soc_dapm_new_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc28d1c37 snd_soc_dapm_disable_pin_unlocked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc3b217b0 snd_soc_update_bits +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc462fa63 snd_soc_dpcm_can_be_free_stop +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc4ab756f snd_soc_dapm_get_pin_switch +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc611e6f0 snd_soc_dapm_weak_routes +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc8269f94 snd_soc_params_to_frame_size +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc90184b2 dapm_regulator_event +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xcb6fc28d snd_soc_dapm_force_enable_pin_unlocked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xcd68da6f devm_snd_soc_register_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xce9f87f2 snd_soc_dapm_put_pin_switch +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd0c203cb snd_soc_dapm_del_routes +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd1e5bdde snd_soc_component_update_bits_async +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd51ba597 snd_soc_dapm_add_routes +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd6b5fc64 snd_soc_component_read +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd802de59 snd_soc_dai_set_clkdiv +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd94dba2f snd_soc_of_get_dai_name +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xddd7b7fb snd_soc_bytes_info +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xde96df15 snd_soc_dapm_mixer_update_power +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe297b038 snd_soc_dapm_enable_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe499a874 snd_soc_of_parse_daifmt +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe5665687 snd_soc_jack_add_zones +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe9a0467a snd_soc_add_dai_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe9e3a17d devm_snd_soc_register_card +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xeb711ae7 snd_soc_params_to_bclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xec8c9037 snd_soc_dpcm_fe_can_update +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xee31213e snd_soc_of_parse_card_name +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xefba7b03 snd_soc_register_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf5e9b276 snd_soc_info_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf86a6307 snd_soc_add_component_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xfb39e91e snd_dmaengine_pcm_prepare_slave_config +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xfb4a983e snd_soc_remove_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xfd043ffd snd_soc_dapm_info_pin_switch +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xfe4aa925 snd_soc_dapm_disable_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xffb27fdd snd_soc_dapm_free +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x202a1b1b line6_midi_id +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x2106ab9d line6_suspend +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x51c44616 line6_resume +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x84141e75 line6_send_sysex_message +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x88f59d2d line6_send_raw_message_async +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x8ec973cd line6_start_timer +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x97de269f line6_pcm_acquire +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x98725f18 line6_alloc_sysex_buffer +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x996f24ac line6_probe +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xa317416e line6_write_data +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xbddd2b0e line6_read_data +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xce4029f8 line6_init_midi +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xd0f8e25a line6_disconnect +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xd44b28ed line6_pcm_release +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xd9bc4f00 line6_init_pcm +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xe1359e34 line6_version_request_async +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xea4f5417 line6_read_serial_number +EXPORT_SYMBOL_GPL vmlinux 0x0002d791 gnttab_unmap_refs +EXPORT_SYMBOL_GPL vmlinux 0x0012d44f pinctrl_pm_select_default_state +EXPORT_SYMBOL_GPL vmlinux 0x00160647 pci_enable_pasid +EXPORT_SYMBOL_GPL vmlinux 0x00167de1 regulator_bulk_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x001cc7fb key_type_asymmetric +EXPORT_SYMBOL_GPL vmlinux 0x001f3130 __efivar_entry_delete +EXPORT_SYMBOL_GPL vmlinux 0x002a77d0 md_rdev_init +EXPORT_SYMBOL_GPL vmlinux 0x0034f3b6 xen_has_pv_nic_devices +EXPORT_SYMBOL_GPL vmlinux 0x0035ae48 inet6_csk_search_req +EXPORT_SYMBOL_GPL vmlinux 0x004f8b72 devres_get +EXPORT_SYMBOL_GPL vmlinux 0x006820b4 pci_write_msi_msg +EXPORT_SYMBOL_GPL vmlinux 0x0070ef14 __tracepoint_rpm_idle +EXPORT_SYMBOL_GPL vmlinux 0x009304b6 ata_tf_from_fis +EXPORT_SYMBOL_GPL vmlinux 0x00a4cfa0 __platform_create_bundle +EXPORT_SYMBOL_GPL vmlinux 0x00c1c006 sata_link_debounce +EXPORT_SYMBOL_GPL vmlinux 0x00d1b407 tpm_chip_unregister +EXPORT_SYMBOL_GPL vmlinux 0x00da6301 user_preparse +EXPORT_SYMBOL_GPL vmlinux 0x00eaeaea blk_insert_cloned_request +EXPORT_SYMBOL_GPL vmlinux 0x00ebcb5d ata_id_string +EXPORT_SYMBOL_GPL vmlinux 0x00ffec3d clk_register_fractional_divider +EXPORT_SYMBOL_GPL vmlinux 0x01003c82 __blk_end_request_err +EXPORT_SYMBOL_GPL vmlinux 0x01010c6d klist_add_before +EXPORT_SYMBOL_GPL vmlinux 0x0116f95f driver_for_each_device +EXPORT_SYMBOL_GPL vmlinux 0x011aa409 fl6_sock_lookup +EXPORT_SYMBOL_GPL vmlinux 0x011cf028 regulator_suspend_finish +EXPORT_SYMBOL_GPL vmlinux 0x012e708f usb_autopm_get_interface +EXPORT_SYMBOL_GPL vmlinux 0x01345806 ata_acpi_gtm +EXPORT_SYMBOL_GPL vmlinux 0x01589a1e tty_wakeup +EXPORT_SYMBOL_GPL vmlinux 0x015a644e devm_remove_action +EXPORT_SYMBOL_GPL vmlinux 0x01631721 device_create +EXPORT_SYMBOL_GPL vmlinux 0x01848a8e local_apic_timer_c2_ok +EXPORT_SYMBOL_GPL vmlinux 0x01a5096b __clk_mux_determine_rate_closest +EXPORT_SYMBOL_GPL vmlinux 0x01a60b06 ata_pci_remove_one +EXPORT_SYMBOL_GPL vmlinux 0x01c8a6fd fuse_dev_alloc +EXPORT_SYMBOL_GPL vmlinux 0x01e1a8de kgdb_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x01ed3ddf xenbus_dev_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x02092586 iommu_domain_alloc +EXPORT_SYMBOL_GPL vmlinux 0x02138525 __fsnotify_inode_delete +EXPORT_SYMBOL_GPL vmlinux 0x02585106 cpufreq_freq_attr_scaling_available_freqs +EXPORT_SYMBOL_GPL vmlinux 0x026211e2 memory_failure_queue +EXPORT_SYMBOL_GPL vmlinux 0x0272401f pwm_get +EXPORT_SYMBOL_GPL vmlinux 0x0276b089 wm8350_block_write +EXPORT_SYMBOL_GPL vmlinux 0x02785422 device_create_with_groups +EXPORT_SYMBOL_GPL vmlinux 0x02791874 transport_add_device +EXPORT_SYMBOL_GPL vmlinux 0x02811152 gpiod_to_irq +EXPORT_SYMBOL_GPL vmlinux 0x029084c7 btree_visitor +EXPORT_SYMBOL_GPL vmlinux 0x02c4943b alarm_init +EXPORT_SYMBOL_GPL vmlinux 0x02c508fe __pm_runtime_resume +EXPORT_SYMBOL_GPL vmlinux 0x02cdb3ed usb_hcd_pci_probe +EXPORT_SYMBOL_GPL vmlinux 0x02e07c1e pci_probe_reset_bus +EXPORT_SYMBOL_GPL vmlinux 0x02f1ebb0 subsys_virtual_register +EXPORT_SYMBOL_GPL vmlinux 0x02f6c0e3 thermal_zone_device_register +EXPORT_SYMBOL_GPL vmlinux 0x02fea2ae rcu_note_context_switch +EXPORT_SYMBOL_GPL vmlinux 0x0313497a wm831x_auxadc_read_uv +EXPORT_SYMBOL_GPL vmlinux 0x033832c7 usb_amd_hang_symptom_quirk +EXPORT_SYMBOL_GPL vmlinux 0x033b9499 tpm_do_selftest +EXPORT_SYMBOL_GPL vmlinux 0x033dc396 regmap_get_max_register +EXPORT_SYMBOL_GPL vmlinux 0x0343bdf1 __i2c_board_list +EXPORT_SYMBOL_GPL vmlinux 0x0351189a unregister_wide_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x035bc872 subsys_dev_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0x036e358e regmap_raw_write_async +EXPORT_SYMBOL_GPL vmlinux 0x039fd867 trace_clock_global +EXPORT_SYMBOL_GPL vmlinux 0x03c5ed2d fpu__save +EXPORT_SYMBOL_GPL vmlinux 0x03e3686c ata_timing_cycle2mode +EXPORT_SYMBOL_GPL vmlinux 0x03e72652 usb_reset_endpoint +EXPORT_SYMBOL_GPL vmlinux 0x0402cbbf preempt_notifier_inc +EXPORT_SYMBOL_GPL vmlinux 0x04060083 __sock_recv_timestamp +EXPORT_SYMBOL_GPL vmlinux 0x040b3715 debugfs_create_x16 +EXPORT_SYMBOL_GPL vmlinux 0x041d4038 usb_kill_urb +EXPORT_SYMBOL_GPL vmlinux 0x0420c814 pci_enable_pcie_error_reporting +EXPORT_SYMBOL_GPL vmlinux 0x042b5ee9 devm_spi_register_master +EXPORT_SYMBOL_GPL vmlinux 0x042ce63c rtnl_register +EXPORT_SYMBOL_GPL vmlinux 0x0465a073 regmap_reg_in_ranges +EXPORT_SYMBOL_GPL vmlinux 0x04768710 debugfs_create_u32 +EXPORT_SYMBOL_GPL vmlinux 0x0480aced blk_rq_unprep_clone +EXPORT_SYMBOL_GPL vmlinux 0x0485655f amd_get_nodes_per_socket +EXPORT_SYMBOL_GPL vmlinux 0x048b5f8d twl4030_audio_get_mclk +EXPORT_SYMBOL_GPL vmlinux 0x048bdd6a ata_sff_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x0499deb0 __clk_get_rate +EXPORT_SYMBOL_GPL vmlinux 0x04a612fd iommu_group_get +EXPORT_SYMBOL_GPL vmlinux 0x04c3f2c1 gnttab_empty_grant_references +EXPORT_SYMBOL_GPL vmlinux 0x04c4f603 mpi_get_buffer +EXPORT_SYMBOL_GPL vmlinux 0x04d15644 ata_wait_register +EXPORT_SYMBOL_GPL vmlinux 0x04d69e3a blkg_lookup_create +EXPORT_SYMBOL_GPL vmlinux 0x04df8fbc lzo1x_decompress_safe +EXPORT_SYMBOL_GPL vmlinux 0x04e63141 serial8250_do_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x04ecfb5c set_memory_wt +EXPORT_SYMBOL_GPL vmlinux 0x051876cc component_master_del +EXPORT_SYMBOL_GPL vmlinux 0x053494cb tpm_get_random +EXPORT_SYMBOL_GPL vmlinux 0x054e550b kernel_halt +EXPORT_SYMBOL_GPL vmlinux 0x0576d7c0 nd_numa_attribute_group +EXPORT_SYMBOL_GPL vmlinux 0x058b582a vt_get_leds +EXPORT_SYMBOL_GPL vmlinux 0x05a7c0a9 usb_altnum_to_altsetting +EXPORT_SYMBOL_GPL vmlinux 0x05a95789 tps6586x_update +EXPORT_SYMBOL_GPL vmlinux 0x05b2b049 pci_test_config_bits +EXPORT_SYMBOL_GPL vmlinux 0x05ec7346 scsi_autopm_put_device +EXPORT_SYMBOL_GPL vmlinux 0x05fa296f md_rdev_clear +EXPORT_SYMBOL_GPL vmlinux 0x061b26ee mmc_send_tuning +EXPORT_SYMBOL_GPL vmlinux 0x0626da5f od_unregister_powersave_bias_handler +EXPORT_SYMBOL_GPL vmlinux 0x063cb860 clockevents_register_device +EXPORT_SYMBOL_GPL vmlinux 0x064db9a5 mark_mounts_for_expiry +EXPORT_SYMBOL_GPL vmlinux 0x06796ae4 pci_destroy_slot +EXPORT_SYMBOL_GPL vmlinux 0x069792b7 ata_ehi_clear_desc +EXPORT_SYMBOL_GPL vmlinux 0x06984624 rio_unmap_inb_region +EXPORT_SYMBOL_GPL vmlinux 0x06d1fec4 virtqueue_get_used +EXPORT_SYMBOL_GPL vmlinux 0x06d549e6 pinctrl_free_gpio +EXPORT_SYMBOL_GPL vmlinux 0x07027313 locks_release_private +EXPORT_SYMBOL_GPL vmlinux 0x0739f429 x509_check_signature +EXPORT_SYMBOL_GPL vmlinux 0x075b0132 alarm_forward +EXPORT_SYMBOL_GPL vmlinux 0x075e7fa6 irq_set_default_host +EXPORT_SYMBOL_GPL vmlinux 0x0762403c edac_put_sysfs_subsys +EXPORT_SYMBOL_GPL vmlinux 0x0790924f ablkcipher_walk_phys +EXPORT_SYMBOL_GPL vmlinux 0x07a5780f sdio_readb +EXPORT_SYMBOL_GPL vmlinux 0x07acfc4f devres_destroy +EXPORT_SYMBOL_GPL vmlinux 0x07b21f85 kdb_get_kbd_char +EXPORT_SYMBOL_GPL vmlinux 0x07b52e38 rtnl_unregister +EXPORT_SYMBOL_GPL vmlinux 0x07e35189 fwnode_get_named_gpiod +EXPORT_SYMBOL_GPL vmlinux 0x08156773 name_to_dev_t +EXPORT_SYMBOL_GPL vmlinux 0x0817571c cpufreq_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0x083043ee ehci_cf_port_reset_rwsem +EXPORT_SYMBOL_GPL vmlinux 0x08452d4e i2c_recover_bus +EXPORT_SYMBOL_GPL vmlinux 0x0861c7a3 pwmchip_add +EXPORT_SYMBOL_GPL vmlinux 0x087318dd rhashtable_init +EXPORT_SYMBOL_GPL vmlinux 0x088bfa7e cancel_work_sync +EXPORT_SYMBOL_GPL vmlinux 0x08b32160 show_class_attr_string +EXPORT_SYMBOL_GPL vmlinux 0x08bc0870 compat_put_timespec +EXPORT_SYMBOL_GPL vmlinux 0x08bcd43e ata_host_detach +EXPORT_SYMBOL_GPL vmlinux 0x08c5f340 xhci_resume +EXPORT_SYMBOL_GPL vmlinux 0x08ce7b01 class_dev_iter_next +EXPORT_SYMBOL_GPL vmlinux 0x0915eb1e perf_event_create_kernel_counter +EXPORT_SYMBOL_GPL vmlinux 0x09161bde bd_link_disk_holder +EXPORT_SYMBOL_GPL vmlinux 0x091eb9b4 round_jiffies +EXPORT_SYMBOL_GPL vmlinux 0x092d028d page_mkclean +EXPORT_SYMBOL_GPL vmlinux 0x09364bb7 ata_std_bios_param +EXPORT_SYMBOL_GPL vmlinux 0x09437748 ring_buffer_read_events_cpu +EXPORT_SYMBOL_GPL vmlinux 0x09469482 kfree_call_rcu +EXPORT_SYMBOL_GPL vmlinux 0x0977a520 debugfs_remove +EXPORT_SYMBOL_GPL vmlinux 0x09812655 regulator_put +EXPORT_SYMBOL_GPL vmlinux 0x09830c51 bus_sort_breadthfirst +EXPORT_SYMBOL_GPL vmlinux 0x09d37eb0 serial8250_clear_and_reinit_fifos +EXPORT_SYMBOL_GPL vmlinux 0x09d60422 dev_pm_clear_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0x0a19cf21 subsys_dev_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x0a1ee298 pci_bus_max_busnr +EXPORT_SYMBOL_GPL vmlinux 0x0a2c874c preempt_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0x0a37d2f3 nd_cmd_in_size +EXPORT_SYMBOL_GPL vmlinux 0x0a4fde00 idr_alloc +EXPORT_SYMBOL_GPL vmlinux 0x0a657bb3 seq_open_net +EXPORT_SYMBOL_GPL vmlinux 0x0a6e095b acpi_dma_request_slave_chan_by_name +EXPORT_SYMBOL_GPL vmlinux 0x0a74da4e uprobe_unregister +EXPORT_SYMBOL_GPL vmlinux 0x0a889cb1 bpf_prog_destroy +EXPORT_SYMBOL_GPL vmlinux 0x0ad375e4 thermal_notify_framework +EXPORT_SYMBOL_GPL vmlinux 0x0b07abe2 unshare_fs_struct +EXPORT_SYMBOL_GPL vmlinux 0x0b07d3f6 sata_lpm_ignore_phy_events +EXPORT_SYMBOL_GPL vmlinux 0x0b1f1104 pinconf_generic_dump_config +EXPORT_SYMBOL_GPL vmlinux 0x0b52e502 apei_resources_add +EXPORT_SYMBOL_GPL vmlinux 0x0b53ca9b regulator_map_voltage_linear_range +EXPORT_SYMBOL_GPL vmlinux 0x0b5e3f68 spi_bus_unlock +EXPORT_SYMBOL_GPL vmlinux 0x0b82af78 gpiochip_remove +EXPORT_SYMBOL_GPL vmlinux 0x0b8f76dd led_classdev_unregister +EXPORT_SYMBOL_GPL vmlinux 0x0ba86c4a pci_user_write_config_word +EXPORT_SYMBOL_GPL vmlinux 0x0bae57b1 __rio_local_read_config_32 +EXPORT_SYMBOL_GPL vmlinux 0x0bec5a06 md_kick_rdev_from_array +EXPORT_SYMBOL_GPL vmlinux 0x0bfa3a19 rcu_idle_exit +EXPORT_SYMBOL_GPL vmlinux 0x0c078523 crypto_unregister_algs +EXPORT_SYMBOL_GPL vmlinux 0x0c0c015e ring_buffer_swap_cpu +EXPORT_SYMBOL_GPL vmlinux 0x0c0faeab vfs_setxattr +EXPORT_SYMBOL_GPL vmlinux 0x0c1f989f devm_of_phy_provider_unregister +EXPORT_SYMBOL_GPL vmlinux 0x0c2cdbf1 synchronize_sched +EXPORT_SYMBOL_GPL vmlinux 0x0c60da73 blk_mq_request_started +EXPORT_SYMBOL_GPL vmlinux 0x0c805f93 clflush_cache_range +EXPORT_SYMBOL_GPL vmlinux 0x0c80e3fe efivar_init +EXPORT_SYMBOL_GPL vmlinux 0x0c8ab215 ata_pci_bmdma_prepare_host +EXPORT_SYMBOL_GPL vmlinux 0x0c8b6fb9 power_supply_powers +EXPORT_SYMBOL_GPL vmlinux 0x0c91b14b blk_rq_err_bytes +EXPORT_SYMBOL_GPL vmlinux 0x0c94fbda wakeup_source_destroy +EXPORT_SYMBOL_GPL vmlinux 0x0c9d1ecf tcp_cong_avoid_ai +EXPORT_SYMBOL_GPL vmlinux 0x0ca4406b regulator_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0x0ca54a09 bio_clone_mddev +EXPORT_SYMBOL_GPL vmlinux 0x0cc1e40f crypto_it_tab +EXPORT_SYMBOL_GPL vmlinux 0x0ce6ea6b init_dummy_netdev +EXPORT_SYMBOL_GPL vmlinux 0x0cfcbaf5 platform_device_alloc +EXPORT_SYMBOL_GPL vmlinux 0x0d42b692 __mmdrop +EXPORT_SYMBOL_GPL vmlinux 0x0d4961de nf_log_buf_open +EXPORT_SYMBOL_GPL vmlinux 0x0d5e0640 regulator_bulk_free +EXPORT_SYMBOL_GPL vmlinux 0x0d7509fd pinctrl_force_sleep +EXPORT_SYMBOL_GPL vmlinux 0x0d7d4d70 rcu_batches_completed +EXPORT_SYMBOL_GPL vmlinux 0x0d80d2f4 event_triggers_post_call +EXPORT_SYMBOL_GPL vmlinux 0x0d896b27 rio_dev_put +EXPORT_SYMBOL_GPL vmlinux 0x0d8bda51 gpiod_get_raw_value +EXPORT_SYMBOL_GPL vmlinux 0x0d8cc596 crypto_shash_setkey +EXPORT_SYMBOL_GPL vmlinux 0x0d9e679a perf_event_read_value +EXPORT_SYMBOL_GPL vmlinux 0x0dc5b557 platform_driver_unregister +EXPORT_SYMBOL_GPL vmlinux 0x0dce7d12 dev_pm_qos_update_request +EXPORT_SYMBOL_GPL vmlinux 0x0dd918fc power_supply_register +EXPORT_SYMBOL_GPL vmlinux 0x0ddb1cd7 llist_reverse_order +EXPORT_SYMBOL_GPL vmlinux 0x0de12812 spi_unregister_master +EXPORT_SYMBOL_GPL vmlinux 0x0de33259 acpi_dma_controller_register +EXPORT_SYMBOL_GPL vmlinux 0x0df2bf69 usb_unanchor_urb +EXPORT_SYMBOL_GPL vmlinux 0x0df925f6 btree_init_mempool +EXPORT_SYMBOL_GPL vmlinux 0x0e007edf xen_evtchn_nr_channels +EXPORT_SYMBOL_GPL vmlinux 0x0e009fcf ip6_flush_pending_frames +EXPORT_SYMBOL_GPL vmlinux 0x0e038535 __rio_local_write_config_8 +EXPORT_SYMBOL_GPL vmlinux 0x0e0a62a2 rtc_class_open +EXPORT_SYMBOL_GPL vmlinux 0x0e0d787e handle_level_irq +EXPORT_SYMBOL_GPL vmlinux 0x0e0fcd16 acpi_device_modalias +EXPORT_SYMBOL_GPL vmlinux 0x0e117baf tpmm_chip_alloc +EXPORT_SYMBOL_GPL vmlinux 0x0e122d86 __pm_stay_awake +EXPORT_SYMBOL_GPL vmlinux 0x0e13cb4d apei_resources_release +EXPORT_SYMBOL_GPL vmlinux 0x0e1c296c i2c_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x0e601420 hwmon_device_register_with_groups +EXPORT_SYMBOL_GPL vmlinux 0x0ea41f64 pm_qos_add_request +EXPORT_SYMBOL_GPL vmlinux 0x0ecf823a static_key_slow_dec +EXPORT_SYMBOL_GPL vmlinux 0x0ed9944f usb_hcd_start_port_resume +EXPORT_SYMBOL_GPL vmlinux 0x0edb07eb class_remove_file_ns +EXPORT_SYMBOL_GPL vmlinux 0x0edfd1b5 arizona_free_irq +EXPORT_SYMBOL_GPL vmlinux 0x0ee682a7 map_vm_area +EXPORT_SYMBOL_GPL vmlinux 0x0efe550c blkg_prfill_rwstat +EXPORT_SYMBOL_GPL vmlinux 0x0f2d7d87 mce_unregister_decode_chain +EXPORT_SYMBOL_GPL vmlinux 0x0f32e087 sdio_writew +EXPORT_SYMBOL_GPL vmlinux 0x0f336d7f rcutorture_get_gp_data +EXPORT_SYMBOL_GPL vmlinux 0x0f467c6e powercap_unregister_zone +EXPORT_SYMBOL_GPL vmlinux 0x0f4a2ab7 sock_diag_register_inet_compat +EXPORT_SYMBOL_GPL vmlinux 0x0f52b472 regmap_init_spi +EXPORT_SYMBOL_GPL vmlinux 0x0f553881 usb_driver_set_configuration +EXPORT_SYMBOL_GPL vmlinux 0x0f5ff387 dma_buf_fd +EXPORT_SYMBOL_GPL vmlinux 0x0f602c62 hypervisor_kobj +EXPORT_SYMBOL_GPL vmlinux 0x0f70082e lp8788_write_byte +EXPORT_SYMBOL_GPL vmlinux 0x0f751aea input_event_from_user +EXPORT_SYMBOL_GPL vmlinux 0x0f8e9b4d pm_runtime_allow +EXPORT_SYMBOL_GPL vmlinux 0x0f9164bf devm_regulator_bulk_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x0f989c53 sdio_readsb +EXPORT_SYMBOL_GPL vmlinux 0x0fa138de xen_hvm_need_lapic +EXPORT_SYMBOL_GPL vmlinux 0x0fcc1969 copy_from_user_nmi +EXPORT_SYMBOL_GPL vmlinux 0x0fe1e20d wm831x_reg_unlock +EXPORT_SYMBOL_GPL vmlinux 0x0fe2d570 xenbus_directory +EXPORT_SYMBOL_GPL vmlinux 0x0fff8748 inet6_csk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x10114c45 iommu_domain_window_disable +EXPORT_SYMBOL_GPL vmlinux 0x10138352 tracing_on +EXPORT_SYMBOL_GPL vmlinux 0x1058fa24 acpi_kobj +EXPORT_SYMBOL_GPL vmlinux 0x10b5a75e register_virtio_device +EXPORT_SYMBOL_GPL vmlinux 0x10bc648f pinctrl_pm_select_idle_state +EXPORT_SYMBOL_GPL vmlinux 0x10d3bb20 blk_queue_flush +EXPORT_SYMBOL_GPL vmlinux 0x10ecc52c usb_amd_quirk_pll_enable +EXPORT_SYMBOL_GPL vmlinux 0x110106c1 cper_severity_to_aer +EXPORT_SYMBOL_GPL vmlinux 0x1115121e ata_pci_bmdma_init +EXPORT_SYMBOL_GPL vmlinux 0x111fd099 get_task_mm +EXPORT_SYMBOL_GPL vmlinux 0x1124b4b4 ata_sas_async_probe +EXPORT_SYMBOL_GPL vmlinux 0x112e0910 tps65912_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x114f1a20 balloon_stats +EXPORT_SYMBOL_GPL vmlinux 0x11715484 __tracepoint_mc_event +EXPORT_SYMBOL_GPL vmlinux 0x1172ce54 rtc_ktime_to_tm +EXPORT_SYMBOL_GPL vmlinux 0x117c7305 hwpoison_filter_dev_major +EXPORT_SYMBOL_GPL vmlinux 0x119af014 cpu_bit_bitmap +EXPORT_SYMBOL_GPL vmlinux 0x11caddc7 trace_seq_printf +EXPORT_SYMBOL_GPL vmlinux 0x11ce5bfa devres_alloc +EXPORT_SYMBOL_GPL vmlinux 0x11cee444 crypto_alloc_instance2 +EXPORT_SYMBOL_GPL vmlinux 0x11ec8c8c crypto_register_template +EXPORT_SYMBOL_GPL vmlinux 0x11eddf73 gpiod_get_value +EXPORT_SYMBOL_GPL vmlinux 0x12136036 platform_device_del +EXPORT_SYMBOL_GPL vmlinux 0x121d958a unregister_die_notifier +EXPORT_SYMBOL_GPL vmlinux 0x122b9515 uhci_reset_hc +EXPORT_SYMBOL_GPL vmlinux 0x12327eab pci_find_ht_capability +EXPORT_SYMBOL_GPL vmlinux 0x12338873 pci_slots_kset +EXPORT_SYMBOL_GPL vmlinux 0x12445f39 ping_seq_start +EXPORT_SYMBOL_GPL vmlinux 0x124f2056 crypto_get_attr_type +EXPORT_SYMBOL_GPL vmlinux 0x125d8529 edac_subsys +EXPORT_SYMBOL_GPL vmlinux 0x1268f060 shash_register_instance +EXPORT_SYMBOL_GPL vmlinux 0x1268f357 resume_device_irqs +EXPORT_SYMBOL_GPL vmlinux 0x12709936 iommu_detach_group +EXPORT_SYMBOL_GPL vmlinux 0x127a5e91 klp_unregister_patch +EXPORT_SYMBOL_GPL vmlinux 0x127cf7a5 gpiod_get_array +EXPORT_SYMBOL_GPL vmlinux 0x1294d80a get_xsave_addr +EXPORT_SYMBOL_GPL vmlinux 0x1297b00c tcp_reno_cong_avoid +EXPORT_SYMBOL_GPL vmlinux 0x12a563a3 tps6586x_get_version +EXPORT_SYMBOL_GPL vmlinux 0x12b5193c fwnode_handle_put +EXPORT_SYMBOL_GPL vmlinux 0x12c75d8b sata_pmp_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x12dfd515 ata_sff_wait_after_reset +EXPORT_SYMBOL_GPL vmlinux 0x12ea3c14 btree_remove +EXPORT_SYMBOL_GPL vmlinux 0x12f82a28 user_read +EXPORT_SYMBOL_GPL vmlinux 0x13063dd1 get_pid_task +EXPORT_SYMBOL_GPL vmlinux 0x130bd388 check_tsc_disabled +EXPORT_SYMBOL_GPL vmlinux 0x130de01d trace_seq_bitmask +EXPORT_SYMBOL_GPL vmlinux 0x131a5ed7 regmap_del_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0x131db64a system_long_wq +EXPORT_SYMBOL_GPL vmlinux 0x13367159 tty_perform_flush +EXPORT_SYMBOL_GPL vmlinux 0x13368cf2 devm_rtc_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x133d501b __clk_mux_determine_rate +EXPORT_SYMBOL_GPL vmlinux 0x1345d65c devm_phy_put +EXPORT_SYMBOL_GPL vmlinux 0x136209db power_supply_reg_notifier +EXPORT_SYMBOL_GPL vmlinux 0x138aff76 gnttab_init +EXPORT_SYMBOL_GPL vmlinux 0x138be61d pci_create_root_bus +EXPORT_SYMBOL_GPL vmlinux 0x13ad647f scatterwalk_bytes_sglen +EXPORT_SYMBOL_GPL vmlinux 0x13b6c15b crypto_ahash_final +EXPORT_SYMBOL_GPL vmlinux 0x13b7e976 irq_domain_simple_ops +EXPORT_SYMBOL_GPL vmlinux 0x13b89dee pinctrl_request_gpio +EXPORT_SYMBOL_GPL vmlinux 0x13ce87e8 asn1_ber_decoder +EXPORT_SYMBOL_GPL vmlinux 0x13d7359c get_task_pid +EXPORT_SYMBOL_GPL vmlinux 0x13f51fc3 ms_hyperv +EXPORT_SYMBOL_GPL vmlinux 0x1400eec2 acpi_match_device +EXPORT_SYMBOL_GPL vmlinux 0x142fa606 dev_change_net_namespace +EXPORT_SYMBOL_GPL vmlinux 0x1433cbc4 __tracepoint_wbc_writepage +EXPORT_SYMBOL_GPL vmlinux 0x1442a6f6 regulator_set_voltage_time_sel +EXPORT_SYMBOL_GPL vmlinux 0x1453b88a regulator_enable +EXPORT_SYMBOL_GPL vmlinux 0x14726f7b __pm_runtime_use_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0x149ca972 xen_remap_domain_mfn_array +EXPORT_SYMBOL_GPL vmlinux 0x14b3bb66 ping_hash +EXPORT_SYMBOL_GPL vmlinux 0x14ec36ea thermal_zone_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x15010e1f arbitrary_virt_to_machine +EXPORT_SYMBOL_GPL vmlinux 0x151d76bf find_symbol +EXPORT_SYMBOL_GPL vmlinux 0x15421d7a __irq_domain_add +EXPORT_SYMBOL_GPL vmlinux 0x15513007 driver_attach +EXPORT_SYMBOL_GPL vmlinux 0x15892417 async_synchronize_cookie +EXPORT_SYMBOL_GPL vmlinux 0x15913398 sdio_align_size +EXPORT_SYMBOL_GPL vmlinux 0x159173bd rt_mutex_destroy +EXPORT_SYMBOL_GPL vmlinux 0x1594bd6d da9052_adc_manual_read +EXPORT_SYMBOL_GPL vmlinux 0x15970fe0 usb_add_hcd +EXPORT_SYMBOL_GPL vmlinux 0x15b0606e e820_any_mapped +EXPORT_SYMBOL_GPL vmlinux 0x15bbca1b posix_timer_event +EXPORT_SYMBOL_GPL vmlinux 0x15c19f8f fib_rules_lookup +EXPORT_SYMBOL_GPL vmlinux 0x15cdbf4f bus_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x15ef1e28 pcie_port_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x15efd446 rcu_batches_started +EXPORT_SYMBOL_GPL vmlinux 0x16000a3c dm_device_name +EXPORT_SYMBOL_GPL vmlinux 0x16016e29 dm_set_target_max_io_len +EXPORT_SYMBOL_GPL vmlinux 0x161bdff2 klp_disable_patch +EXPORT_SYMBOL_GPL vmlinux 0x16284e64 wm8350_block_read +EXPORT_SYMBOL_GPL vmlinux 0x1629974d usb_hcd_end_port_resume +EXPORT_SYMBOL_GPL vmlinux 0x1650bf27 rcutorture_record_progress +EXPORT_SYMBOL_GPL vmlinux 0x1685028b eventfd_ctx_fileget +EXPORT_SYMBOL_GPL vmlinux 0x16918edb md_find_rdev_nr_rcu +EXPORT_SYMBOL_GPL vmlinux 0x16b6d804 pci_try_reset_function +EXPORT_SYMBOL_GPL vmlinux 0x16bf754b dev_pm_qos_add_ancestor_request +EXPORT_SYMBOL_GPL vmlinux 0x16c83e2b unix_peer_get +EXPORT_SYMBOL_GPL vmlinux 0x16e1347a power_supply_get_property +EXPORT_SYMBOL_GPL vmlinux 0x16fad5a5 sata_link_resume +EXPORT_SYMBOL_GPL vmlinux 0x1711a597 cpufreq_driver_target +EXPORT_SYMBOL_GPL vmlinux 0x171fa0b5 serial8250_do_set_mctrl +EXPORT_SYMBOL_GPL vmlinux 0x1727604a max8997_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0x172817ee list_lru_walk_node +EXPORT_SYMBOL_GPL vmlinux 0x1729e65e relay_close +EXPORT_SYMBOL_GPL vmlinux 0x17367463 skb_splice_bits +EXPORT_SYMBOL_GPL vmlinux 0x1753271c thermal_zone_get_zone_by_name +EXPORT_SYMBOL_GPL vmlinux 0x1753a32f hash_digest_size +EXPORT_SYMBOL_GPL vmlinux 0x175ba24e virtio_check_driver_offered_feature +EXPORT_SYMBOL_GPL vmlinux 0x17614bf3 apei_resources_sub +EXPORT_SYMBOL_GPL vmlinux 0x176b5fb6 component_bind_all +EXPORT_SYMBOL_GPL vmlinux 0x177494b0 reservation_object_get_fences_rcu +EXPORT_SYMBOL_GPL vmlinux 0x177c338d twl_get_version +EXPORT_SYMBOL_GPL vmlinux 0x17c18ea9 tty_ldisc_flush +EXPORT_SYMBOL_GPL vmlinux 0x17ca0d0c ohci_resume +EXPORT_SYMBOL_GPL vmlinux 0x17d162c9 thermal_zone_get_temp +EXPORT_SYMBOL_GPL vmlinux 0x17d81958 tcp_set_state +EXPORT_SYMBOL_GPL vmlinux 0x17da53b5 get_dcookie +EXPORT_SYMBOL_GPL vmlinux 0x17eb45ce __srcu_read_lock +EXPORT_SYMBOL_GPL vmlinux 0x17f8efc8 posix_clock_unregister +EXPORT_SYMBOL_GPL vmlinux 0x1818dc10 sysfs_create_groups +EXPORT_SYMBOL_GPL vmlinux 0x181fee7f inet6_lookup +EXPORT_SYMBOL_GPL vmlinux 0x1829b9ed hwpoison_filter_memcg +EXPORT_SYMBOL_GPL vmlinux 0x182f1853 ata_ehi_push_desc +EXPORT_SYMBOL_GPL vmlinux 0x184699b1 debugfs_create_regset32 +EXPORT_SYMBOL_GPL vmlinux 0x1848d7d7 __tracepoint_rpm_resume +EXPORT_SYMBOL_GPL vmlinux 0x1853653c btree_alloc +EXPORT_SYMBOL_GPL vmlinux 0x18582826 amd_pmu_disable_virt +EXPORT_SYMBOL_GPL vmlinux 0x1866cec2 ring_buffer_size +EXPORT_SYMBOL_GPL vmlinux 0x1878f62b edac_err_assert +EXPORT_SYMBOL_GPL vmlinux 0x1892c7ad ohci_suspend +EXPORT_SYMBOL_GPL vmlinux 0x1894b5ec rtnl_af_register +EXPORT_SYMBOL_GPL vmlinux 0x18abfac2 regmap_raw_write +EXPORT_SYMBOL_GPL vmlinux 0x18be0b2d __module_address +EXPORT_SYMBOL_GPL vmlinux 0x18c5c23a usb_add_phy +EXPORT_SYMBOL_GPL vmlinux 0x18ce07b3 skcipher_geniv_init +EXPORT_SYMBOL_GPL vmlinux 0x18f5e50e arch_apei_enable_cmcff +EXPORT_SYMBOL_GPL vmlinux 0x18f83fab gnttab_grant_foreign_access_ref +EXPORT_SYMBOL_GPL vmlinux 0x193d48e0 trace_current_buffer_unlock_commit +EXPORT_SYMBOL_GPL vmlinux 0x194dd5f5 pkey_algo_name +EXPORT_SYMBOL_GPL vmlinux 0x196614ce hw_breakpoint_restore +EXPORT_SYMBOL_GPL vmlinux 0x1991738c rio_mport_chk_dev_access +EXPORT_SYMBOL_GPL vmlinux 0x19a22981 tps80031_ext_power_req_config +EXPORT_SYMBOL_GPL vmlinux 0x19a304ba usb_disabled +EXPORT_SYMBOL_GPL vmlinux 0x19a5a957 ata_pci_device_do_suspend +EXPORT_SYMBOL_GPL vmlinux 0x19b384a5 hash_algo_name +EXPORT_SYMBOL_GPL vmlinux 0x19cfa2ce dma_get_slave_caps +EXPORT_SYMBOL_GPL vmlinux 0x19daedfe debugfs_create_blob +EXPORT_SYMBOL_GPL vmlinux 0x1a0dca4a sock_prot_inuse_add +EXPORT_SYMBOL_GPL vmlinux 0x1a34e23d dev_pm_get_subsys_data +EXPORT_SYMBOL_GPL vmlinux 0x1a378ad7 blkg_conf_prep +EXPORT_SYMBOL_GPL vmlinux 0x1a679bdd __inet_lookup_established +EXPORT_SYMBOL_GPL vmlinux 0x1a967885 cpufreq_frequency_get_table +EXPORT_SYMBOL_GPL vmlinux 0x1aa7cab8 rio_set_port_lockout +EXPORT_SYMBOL_GPL vmlinux 0x1ab55619 xen_swiotlb_alloc_coherent +EXPORT_SYMBOL_GPL vmlinux 0x1acef7d2 pm_freezing +EXPORT_SYMBOL_GPL vmlinux 0x1ad9c81a pm_runtime_enable +EXPORT_SYMBOL_GPL vmlinux 0x1b0a55d2 vring_new_virtqueue +EXPORT_SYMBOL_GPL vmlinux 0x1b29e3e7 rtnl_af_unregister +EXPORT_SYMBOL_GPL vmlinux 0x1b38b3c6 klist_prev +EXPORT_SYMBOL_GPL vmlinux 0x1b628b2c init_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0x1b8822d8 pinctrl_gpio_direction_output +EXPORT_SYMBOL_GPL vmlinux 0x1b8bc60e gpiochip_add +EXPORT_SYMBOL_GPL vmlinux 0x1b95d6a6 pci_hp_add_bridge +EXPORT_SYMBOL_GPL vmlinux 0x1b973ecb bmp085_remove +EXPORT_SYMBOL_GPL vmlinux 0x1b9aca3f jprobe_return +EXPORT_SYMBOL_GPL vmlinux 0x1ba934d4 usb_get_current_frame_number +EXPORT_SYMBOL_GPL vmlinux 0x1bc0e7e6 adp5520_read +EXPORT_SYMBOL_GPL vmlinux 0x1bc5eebe pinctrl_gpio_direction_input +EXPORT_SYMBOL_GPL vmlinux 0x1bcf0d15 gpiochip_add_pin_range +EXPORT_SYMBOL_GPL vmlinux 0x1bf87776 blk_abort_request +EXPORT_SYMBOL_GPL vmlinux 0x1c4a004c regcache_drop_region +EXPORT_SYMBOL_GPL vmlinux 0x1c4b62db xen_swiotlb_set_dma_mask +EXPORT_SYMBOL_GPL vmlinux 0x1c53a26b usb_hcd_poll_rh_status +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 0x1c6660c7 btree_merge +EXPORT_SYMBOL_GPL vmlinux 0x1c80d27d btree_geo128 +EXPORT_SYMBOL_GPL vmlinux 0x1c87a811 __round_jiffies_up +EXPORT_SYMBOL_GPL vmlinux 0x1c87f101 ata_std_sched_eh +EXPORT_SYMBOL_GPL vmlinux 0x1c967b98 acpi_subsys_suspend_late +EXPORT_SYMBOL_GPL vmlinux 0x1c970338 rtc_read_alarm +EXPORT_SYMBOL_GPL vmlinux 0x1c9c3898 pci_load_and_free_saved_state +EXPORT_SYMBOL_GPL vmlinux 0x1ca83d54 xenbus_dev_probe +EXPORT_SYMBOL_GPL vmlinux 0x1cb4787f bpf_prog_alloc +EXPORT_SYMBOL_GPL vmlinux 0x1cbf9a81 spi_sync +EXPORT_SYMBOL_GPL vmlinux 0x1cdb2147 zs_malloc +EXPORT_SYMBOL_GPL vmlinux 0x1cf10450 udp6_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x1d05d28e gpiod_set_raw_value +EXPORT_SYMBOL_GPL vmlinux 0x1d09cec1 usb_alloc_coherent +EXPORT_SYMBOL_GPL vmlinux 0x1d41108f usb_hcd_platform_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x1d459685 xstate_size +EXPORT_SYMBOL_GPL vmlinux 0x1d58ae14 lpddr2_jedec_timings +EXPORT_SYMBOL_GPL vmlinux 0x1d6b16d6 device_remove_file_self +EXPORT_SYMBOL_GPL vmlinux 0x1d739e1c xen_set_callback_via +EXPORT_SYMBOL_GPL vmlinux 0x1d749be4 wm8350_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x1d74a837 da903x_reads +EXPORT_SYMBOL_GPL vmlinux 0x1d77b0f8 unix_socket_table +EXPORT_SYMBOL_GPL vmlinux 0x1d7c0168 __ftrace_vprintk +EXPORT_SYMBOL_GPL vmlinux 0x1d7cb586 clk_register_fixed_rate_with_accuracy +EXPORT_SYMBOL_GPL vmlinux 0x1d89763a get_cpu_device +EXPORT_SYMBOL_GPL vmlinux 0x1d978195 use_mm +EXPORT_SYMBOL_GPL vmlinux 0x1dade819 param_set_bool_enable_only +EXPORT_SYMBOL_GPL vmlinux 0x1dd6f2a2 inet_csk_clone_lock +EXPORT_SYMBOL_GPL vmlinux 0x1def880e bind_interdomain_evtchn_to_irq +EXPORT_SYMBOL_GPL vmlinux 0x1dfb20fc serial8250_tx_chars +EXPORT_SYMBOL_GPL vmlinux 0x1e000879 hwpoison_filter_enable +EXPORT_SYMBOL_GPL vmlinux 0x1e0fb564 fwnode_property_read_u16_array +EXPORT_SYMBOL_GPL vmlinux 0x1e49341a dma_buf_kunmap_atomic +EXPORT_SYMBOL_GPL vmlinux 0x1e5b03dc pm_qos_add_notifier +EXPORT_SYMBOL_GPL vmlinux 0x1e62336e pinctrl_utils_reserve_map +EXPORT_SYMBOL_GPL vmlinux 0x1e68ce14 trace_seq_putc +EXPORT_SYMBOL_GPL vmlinux 0x1e736e41 disk_map_sector_rcu +EXPORT_SYMBOL_GPL vmlinux 0x1e7bbcb3 kernel_restart +EXPORT_SYMBOL_GPL vmlinux 0x1eae17fc blocking_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0x1eb9516e round_jiffies_relative +EXPORT_SYMBOL_GPL vmlinux 0x1ebac2bd getboottime64 +EXPORT_SYMBOL_GPL vmlinux 0x1ebf6c2a pci_power_names +EXPORT_SYMBOL_GPL vmlinux 0x1ed0ae3a elv_unregister +EXPORT_SYMBOL_GPL vmlinux 0x1edc21cb hwpoison_filter_flags_mask +EXPORT_SYMBOL_GPL vmlinux 0x1ede364f xenbus_switch_state +EXPORT_SYMBOL_GPL vmlinux 0x1f1988f7 hwpoison_filter_flags_value +EXPORT_SYMBOL_GPL vmlinux 0x1f36d599 __udp6_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x1f446f87 unregister_pernet_device +EXPORT_SYMBOL_GPL vmlinux 0x1f50e057 default_iommu_map_sg +EXPORT_SYMBOL_GPL vmlinux 0x1f62e5c1 serial8250_rpm_get +EXPORT_SYMBOL_GPL vmlinux 0x1f69cfe8 devm_phy_create +EXPORT_SYMBOL_GPL vmlinux 0x1f7e77d6 regulator_bulk_enable +EXPORT_SYMBOL_GPL vmlinux 0x1f8544b8 panic_timeout +EXPORT_SYMBOL_GPL vmlinux 0x1f8db7f9 ring_buffer_overrun_cpu +EXPORT_SYMBOL_GPL vmlinux 0x1fa52690 rio_route_add_entry +EXPORT_SYMBOL_GPL vmlinux 0x1fa57780 regulator_get_current_limit +EXPORT_SYMBOL_GPL vmlinux 0x1fbe9b35 pcie_update_link_speed +EXPORT_SYMBOL_GPL vmlinux 0x1fc0b2d1 i2c_probe_func_quick_read +EXPORT_SYMBOL_GPL vmlinux 0x1fc3f88a usb_get_phy +EXPORT_SYMBOL_GPL vmlinux 0x1fe8c703 blk_trace_remove +EXPORT_SYMBOL_GPL vmlinux 0x1feadb91 regulator_count_voltages +EXPORT_SYMBOL_GPL vmlinux 0x1ffaecd9 acpi_subsys_runtime_resume +EXPORT_SYMBOL_GPL vmlinux 0x20031e06 __blkdev_driver_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x20058589 ata_sff_pause +EXPORT_SYMBOL_GPL vmlinux 0x200f9044 crypto_ahash_setkey +EXPORT_SYMBOL_GPL vmlinux 0x205c5a1b __devm_of_phy_provider_register +EXPORT_SYMBOL_GPL vmlinux 0x20675b23 ip_build_and_send_pkt +EXPORT_SYMBOL_GPL vmlinux 0x2075b166 get_task_comm +EXPORT_SYMBOL_GPL vmlinux 0x207f2ede hwrng_unregister +EXPORT_SYMBOL_GPL vmlinux 0x209b353a irq_get_irq_data +EXPORT_SYMBOL_GPL vmlinux 0x209c07d0 acpi_dev_resume_early +EXPORT_SYMBOL_GPL vmlinux 0x209ec764 xen_event_channel_op_compat +EXPORT_SYMBOL_GPL vmlinux 0x20a140fb inet_csk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x20aa6f51 cpuidle_enable_device +EXPORT_SYMBOL_GPL vmlinux 0x20aa956b extcon_unregister_interest +EXPORT_SYMBOL_GPL vmlinux 0x20c4f7ca wm5110_i2c_regmap +EXPORT_SYMBOL_GPL vmlinux 0x20c89811 simple_attr_open +EXPORT_SYMBOL_GPL vmlinux 0x20ee75fd rt_mutex_timed_lock +EXPORT_SYMBOL_GPL vmlinux 0x20f935a0 klist_add_tail +EXPORT_SYMBOL_GPL vmlinux 0x2125148d pci_user_write_config_byte +EXPORT_SYMBOL_GPL vmlinux 0x2141567b gpiod_to_chip +EXPORT_SYMBOL_GPL vmlinux 0x2167632f relay_subbufs_consumed +EXPORT_SYMBOL_GPL vmlinux 0x217828e5 unregister_virtio_device +EXPORT_SYMBOL_GPL vmlinux 0x21883120 nf_ipv6_ops +EXPORT_SYMBOL_GPL vmlinux 0x21a563da clk_get_accuracy +EXPORT_SYMBOL_GPL vmlinux 0x21ac8b77 iommu_group_get_by_id +EXPORT_SYMBOL_GPL vmlinux 0x21bc4c9f driver_remove_file +EXPORT_SYMBOL_GPL vmlinux 0x21c54904 rtc_device_register +EXPORT_SYMBOL_GPL vmlinux 0x21c641d2 devm_extcon_dev_free +EXPORT_SYMBOL_GPL vmlinux 0x21c6c0eb usb_get_status +EXPORT_SYMBOL_GPL vmlinux 0x21c92f53 cpufreq_table_validate_and_show +EXPORT_SYMBOL_GPL vmlinux 0x21c9e55a efivars_register +EXPORT_SYMBOL_GPL vmlinux 0x21e733d1 tpm_pm_suspend +EXPORT_SYMBOL_GPL vmlinux 0x2201bac9 device_create_vargs +EXPORT_SYMBOL_GPL vmlinux 0x222b37b0 pci_probe_reset_slot +EXPORT_SYMBOL_GPL vmlinux 0x228074b5 ata_host_register +EXPORT_SYMBOL_GPL vmlinux 0x2296c00d crypto_attr_u32 +EXPORT_SYMBOL_GPL vmlinux 0x2299ec81 perf_assign_events +EXPORT_SYMBOL_GPL vmlinux 0x229e7010 crypto_destroy_tfm +EXPORT_SYMBOL_GPL vmlinux 0x22a496f0 devm_led_classdev_register +EXPORT_SYMBOL_GPL vmlinux 0x22e8adc3 cpuidle_register +EXPORT_SYMBOL_GPL vmlinux 0x22f86ffd clk_gate_ops +EXPORT_SYMBOL_GPL vmlinux 0x2303d72f mbox_client_peek_data +EXPORT_SYMBOL_GPL vmlinux 0x2306244e ohci_setup +EXPORT_SYMBOL_GPL vmlinux 0x2352ddd2 regulator_get_bypass_regmap +EXPORT_SYMBOL_GPL vmlinux 0x235bc872 device_find_child +EXPORT_SYMBOL_GPL vmlinux 0x2366a2c0 errata +EXPORT_SYMBOL_GPL vmlinux 0x23818647 pm_generic_resume +EXPORT_SYMBOL_GPL vmlinux 0x23835ae5 dev_pm_qos_add_request +EXPORT_SYMBOL_GPL vmlinux 0x23864ce7 cpuset_mem_spread_node +EXPORT_SYMBOL_GPL vmlinux 0x2396c7f0 clk_set_parent +EXPORT_SYMBOL_GPL vmlinux 0x239cb40f __inet_twsk_hashdance +EXPORT_SYMBOL_GPL vmlinux 0x239d44c8 pci_find_ext_capability +EXPORT_SYMBOL_GPL vmlinux 0x23b9806a spi_add_device +EXPORT_SYMBOL_GPL vmlinux 0x23c9b021 ata_noop_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0x23ca0103 usb_unlocked_enable_lpm +EXPORT_SYMBOL_GPL vmlinux 0x23cedc9f napi_hash_add +EXPORT_SYMBOL_GPL vmlinux 0x23fe1dad tcp_ca_get_key_by_name +EXPORT_SYMBOL_GPL vmlinux 0x24011e14 vbin_printf +EXPORT_SYMBOL_GPL vmlinux 0x241f5575 power_supply_external_power_changed +EXPORT_SYMBOL_GPL vmlinux 0x242286ce regmap_multi_reg_write_bypassed +EXPORT_SYMBOL_GPL vmlinux 0x242a2857 dax_zero_page_range +EXPORT_SYMBOL_GPL vmlinux 0x2445170e virtqueue_notify +EXPORT_SYMBOL_GPL vmlinux 0x24457174 audit_enabled +EXPORT_SYMBOL_GPL vmlinux 0x247aec8e nvdimm_name +EXPORT_SYMBOL_GPL vmlinux 0x247ef831 kdb_unregister +EXPORT_SYMBOL_GPL vmlinux 0x2480fb8b mddev_congested +EXPORT_SYMBOL_GPL vmlinux 0x24957121 pid_vnr +EXPORT_SYMBOL_GPL vmlinux 0x24aac4d9 crypto_aes_expand_key +EXPORT_SYMBOL_GPL vmlinux 0x24b43670 pci_sriov_get_totalvfs +EXPORT_SYMBOL_GPL vmlinux 0x24c7698a xenbus_write +EXPORT_SYMBOL_GPL vmlinux 0x24cb411c sock_diag_check_cookie +EXPORT_SYMBOL_GPL vmlinux 0x24d41893 srcu_init_notifier_head +EXPORT_SYMBOL_GPL vmlinux 0x24eb7e32 leds_list +EXPORT_SYMBOL_GPL vmlinux 0x24f286ad x509_request_asymmetric_key +EXPORT_SYMBOL_GPL vmlinux 0x24f3291d blk_lld_busy +EXPORT_SYMBOL_GPL vmlinux 0x24f39c39 reset_control_reset +EXPORT_SYMBOL_GPL vmlinux 0x24f45195 usb_wait_anchor_empty_timeout +EXPORT_SYMBOL_GPL vmlinux 0x25073184 user_destroy +EXPORT_SYMBOL_GPL vmlinux 0x251c7771 skb_morph +EXPORT_SYMBOL_GPL vmlinux 0x25288989 rdev_set_badblocks +EXPORT_SYMBOL_GPL vmlinux 0x25379e73 clk_set_min_rate +EXPORT_SYMBOL_GPL vmlinux 0x253c1867 regulator_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x2545c170 unregister_xenbus_watch +EXPORT_SYMBOL_GPL vmlinux 0x25574504 clk_fixed_rate_ops +EXPORT_SYMBOL_GPL vmlinux 0x258fab3f gpiod_set_raw_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x2598ccd3 mbox_chan_received_data +EXPORT_SYMBOL_GPL vmlinux 0x25bcbdea nd_blk_region_set_provider_data +EXPORT_SYMBOL_GPL vmlinux 0x25c01a1c print_context_stack +EXPORT_SYMBOL_GPL vmlinux 0x25c4fe8a __gpiod_get_optional +EXPORT_SYMBOL_GPL vmlinux 0x25c9be91 security_inode_create +EXPORT_SYMBOL_GPL vmlinux 0x25d83648 ata_pio_need_iordy +EXPORT_SYMBOL_GPL vmlinux 0x25e3538f cpu_device_create +EXPORT_SYMBOL_GPL vmlinux 0x25ef23d2 serial8250_modem_status +EXPORT_SYMBOL_GPL vmlinux 0x25f02c87 xen_p2m_addr +EXPORT_SYMBOL_GPL vmlinux 0x25f2929d pinctrl_add_gpio_range +EXPORT_SYMBOL_GPL vmlinux 0x25f4809a vfs_listxattr +EXPORT_SYMBOL_GPL vmlinux 0x260d9818 __mmu_notifier_invalidate_range_end +EXPORT_SYMBOL_GPL vmlinux 0x26181695 i2c_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0x262f20a8 local_clock +EXPORT_SYMBOL_GPL vmlinux 0x264ae4c6 usb_anchor_resume_wakeups +EXPORT_SYMBOL_GPL vmlinux 0x26520970 vm_memory_committed +EXPORT_SYMBOL_GPL vmlinux 0x265f4a5d debugfs_rename +EXPORT_SYMBOL_GPL vmlinux 0x266b7638 interval_tree_remove +EXPORT_SYMBOL_GPL vmlinux 0x2684d97c usb_disable_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0x26965721 slow_virt_to_phys +EXPORT_SYMBOL_GPL vmlinux 0x269bfbd1 gpiod_get_array_optional +EXPORT_SYMBOL_GPL vmlinux 0x26b3c701 __wake_up_sync +EXPORT_SYMBOL_GPL vmlinux 0x26b71fb4 ring_buffer_time_stamp +EXPORT_SYMBOL_GPL vmlinux 0x26b91d6f usb_sg_init +EXPORT_SYMBOL_GPL vmlinux 0x26c90ea4 scsi_eh_get_sense +EXPORT_SYMBOL_GPL vmlinux 0x26d2d34a fb_deferred_io_open +EXPORT_SYMBOL_GPL vmlinux 0x26d89a27 wm8350_reg_unlock +EXPORT_SYMBOL_GPL vmlinux 0x26fceac7 vga_default_device +EXPORT_SYMBOL_GPL vmlinux 0x271d36db task_user_regset_view +EXPORT_SYMBOL_GPL vmlinux 0x2733bf23 xenbus_dev_changed +EXPORT_SYMBOL_GPL vmlinux 0x2737c130 spi_async_locked +EXPORT_SYMBOL_GPL vmlinux 0x274c162e mnt_want_write_file +EXPORT_SYMBOL_GPL vmlinux 0x274cf5e1 __clk_get_flags +EXPORT_SYMBOL_GPL vmlinux 0x275c49c9 gov_queue_work +EXPORT_SYMBOL_GPL vmlinux 0x2774d326 ata_port_desc +EXPORT_SYMBOL_GPL vmlinux 0x279cb985 apei_exec_pre_map_gars +EXPORT_SYMBOL_GPL vmlinux 0x27a675e1 sock_diag_save_cookie +EXPORT_SYMBOL_GPL vmlinux 0x27c0c4be eventfd_ctx_read +EXPORT_SYMBOL_GPL vmlinux 0x27c1e63f usb_amd_find_chipset_info +EXPORT_SYMBOL_GPL vmlinux 0x27d5472f __mmu_notifier_invalidate_range +EXPORT_SYMBOL_GPL vmlinux 0x27d92167 regulator_list_voltage_linear_range +EXPORT_SYMBOL_GPL vmlinux 0x27dfbd41 debugfs_create_u64 +EXPORT_SYMBOL_GPL vmlinux 0x27e6f437 proc_mkdir_data +EXPORT_SYMBOL_GPL vmlinux 0x27f4f029 ftrace_set_global_filter +EXPORT_SYMBOL_GPL vmlinux 0x27fa66e1 nr_free_buffer_pages +EXPORT_SYMBOL_GPL vmlinux 0x282cdabc usb_led_activity +EXPORT_SYMBOL_GPL vmlinux 0x28522b1b raw_seq_start +EXPORT_SYMBOL_GPL vmlinux 0x28cf65ee usb_autopm_put_interface +EXPORT_SYMBOL_GPL vmlinux 0x28d5728d rtc_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x28e64c64 xen_has_pv_and_legacy_disk_devices +EXPORT_SYMBOL_GPL vmlinux 0x29257383 rhashtable_walk_init +EXPORT_SYMBOL_GPL vmlinux 0x292cabb2 usb_ep0_reinit +EXPORT_SYMBOL_GPL vmlinux 0x292e72ef regulator_list_voltage +EXPORT_SYMBOL_GPL vmlinux 0x294a2fa6 mmu_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x2959c01f register_wide_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x298d0a27 wm831x_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0x2997ebc8 __clk_determine_rate +EXPORT_SYMBOL_GPL vmlinux 0x29a16e5e nvdimm_bus_attribute_group +EXPORT_SYMBOL_GPL vmlinux 0x29a78fbd cpufreq_cpu_get +EXPORT_SYMBOL_GPL vmlinux 0x29ad3899 pci_sriov_set_totalvfs +EXPORT_SYMBOL_GPL vmlinux 0x29c0f4f3 sysfs_unmerge_group +EXPORT_SYMBOL_GPL vmlinux 0x29ce06e0 dev_pm_qos_add_notifier +EXPORT_SYMBOL_GPL vmlinux 0x2a3a3e56 crypto_alloc_rng +EXPORT_SYMBOL_GPL vmlinux 0x2a5514c9 devm_phy_destroy +EXPORT_SYMBOL_GPL vmlinux 0x2a678a13 __suspend_report_result +EXPORT_SYMBOL_GPL vmlinux 0x2a901042 xfrm_output_resume +EXPORT_SYMBOL_GPL vmlinux 0x2aa5cba2 srcu_batches_completed +EXPORT_SYMBOL_GPL vmlinux 0x2ac9a7e3 __ip6_local_out +EXPORT_SYMBOL_GPL vmlinux 0x2acf228c ata_do_dev_read_id +EXPORT_SYMBOL_GPL vmlinux 0x2ad6a019 pinctrl_utils_add_config +EXPORT_SYMBOL_GPL vmlinux 0x2ad7ce6d pci_disable_pri +EXPORT_SYMBOL_GPL vmlinux 0x2af50447 pci_hp_deregister +EXPORT_SYMBOL_GPL vmlinux 0x2af63321 acpi_dev_resource_address_space +EXPORT_SYMBOL_GPL vmlinux 0x2b069ab2 pci_remove_root_bus +EXPORT_SYMBOL_GPL vmlinux 0x2b148cc1 blk_end_request_err +EXPORT_SYMBOL_GPL vmlinux 0x2b1833e8 scsi_target_block +EXPORT_SYMBOL_GPL vmlinux 0x2b497fcc xenbus_dev_error +EXPORT_SYMBOL_GPL vmlinux 0x2b4f9b64 xfrm_audit_policy_delete +EXPORT_SYMBOL_GPL vmlinux 0x2b54d33a user_update +EXPORT_SYMBOL_GPL vmlinux 0x2b8c5809 mbox_chan_txdone +EXPORT_SYMBOL_GPL vmlinux 0x2b952517 clk_has_parent +EXPORT_SYMBOL_GPL vmlinux 0x2ba986c9 ahash_register_instance +EXPORT_SYMBOL_GPL vmlinux 0x2bac95ea acpi_bus_trim +EXPORT_SYMBOL_GPL vmlinux 0x2bb032e0 screen_glyph +EXPORT_SYMBOL_GPL vmlinux 0x2bb4e7cf fuse_file_poll +EXPORT_SYMBOL_GPL vmlinux 0x2be498dc devm_regmap_init_spi +EXPORT_SYMBOL_GPL vmlinux 0x2bfa985e nd_cmd_dimm_desc +EXPORT_SYMBOL_GPL vmlinux 0x2bfc4643 netlink_add_tap +EXPORT_SYMBOL_GPL vmlinux 0x2c133868 bit_wait_io_timeout +EXPORT_SYMBOL_GPL vmlinux 0x2c149cd5 sdio_disable_func +EXPORT_SYMBOL_GPL vmlinux 0x2c208607 power_supply_is_system_supplied +EXPORT_SYMBOL_GPL vmlinux 0x2c2e683d tcp_send_ack +EXPORT_SYMBOL_GPL vmlinux 0x2c3054f9 net_inc_ingress_queue +EXPORT_SYMBOL_GPL vmlinux 0x2c47a2df relay_reset +EXPORT_SYMBOL_GPL vmlinux 0x2c4a312a rdev_get_id +EXPORT_SYMBOL_GPL vmlinux 0x2c6a2b2a blk_add_driver_data +EXPORT_SYMBOL_GPL vmlinux 0x2c7d9c64 xen_store_interface +EXPORT_SYMBOL_GPL vmlinux 0x2c7db649 irq_dispose_mapping +EXPORT_SYMBOL_GPL vmlinux 0x2cac549b to_nd_desc +EXPORT_SYMBOL_GPL vmlinux 0x2cd2ab9c net_ns_type_operations +EXPORT_SYMBOL_GPL vmlinux 0x2cd38b3b alarm_try_to_cancel +EXPORT_SYMBOL_GPL vmlinux 0x2ce98559 kcrypto_wq +EXPORT_SYMBOL_GPL vmlinux 0x2cea32ee unregister_oldmem_pfn_is_ram +EXPORT_SYMBOL_GPL vmlinux 0x2cf60118 rtc_initialize_alarm +EXPORT_SYMBOL_GPL vmlinux 0x2d0fae3b unregister_virtio_driver +EXPORT_SYMBOL_GPL vmlinux 0x2d13b3f9 tps65912_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x2d1b02d2 usermodehelper_read_lock_wait +EXPORT_SYMBOL_GPL vmlinux 0x2d2896ee fat_setattr +EXPORT_SYMBOL_GPL vmlinux 0x2d29c4b4 ata_acpi_cbl_80wire +EXPORT_SYMBOL_GPL vmlinux 0x2d3434be __rtnl_register +EXPORT_SYMBOL_GPL vmlinux 0x2d41e6f5 __trace_puts +EXPORT_SYMBOL_GPL vmlinux 0x2d4dc088 param_ops_bool_enable_only +EXPORT_SYMBOL_GPL vmlinux 0x2d59c954 edac_handlers +EXPORT_SYMBOL_GPL vmlinux 0x2d676020 component_del +EXPORT_SYMBOL_GPL vmlinux 0x2d682793 crypto_unregister_pcomp +EXPORT_SYMBOL_GPL vmlinux 0x2d7e1e55 bsg_job_done +EXPORT_SYMBOL_GPL vmlinux 0x2d9f2ce3 sched_clock_idle_wakeup_event +EXPORT_SYMBOL_GPL vmlinux 0x2dce48e8 rio_dev_get +EXPORT_SYMBOL_GPL vmlinux 0x2dcfeb71 find_get_pid +EXPORT_SYMBOL_GPL vmlinux 0x2dde889f ata_sff_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x2dfcd172 ata_scsi_slave_config +EXPORT_SYMBOL_GPL vmlinux 0x2e1da9fb probe_kernel_read +EXPORT_SYMBOL_GPL vmlinux 0x2e2360b1 ftrace_set_global_notrace +EXPORT_SYMBOL_GPL vmlinux 0x2e2df7f4 irq_remapping_cap +EXPORT_SYMBOL_GPL vmlinux 0x2e2f1740 ring_buffer_record_disable_cpu +EXPORT_SYMBOL_GPL vmlinux 0x2e32a83a platform_device_register_full +EXPORT_SYMBOL_GPL vmlinux 0x2e49b985 thermal_zone_bind_cooling_device +EXPORT_SYMBOL_GPL vmlinux 0x2e6678de list_lru_walk_one +EXPORT_SYMBOL_GPL vmlinux 0x2e6851c5 regmap_field_write +EXPORT_SYMBOL_GPL vmlinux 0x2e6a75f1 blkio_cgrp_subsys +EXPORT_SYMBOL_GPL vmlinux 0x2e6b2630 devm_regmap_field_free +EXPORT_SYMBOL_GPL vmlinux 0x2e78257e ip6_local_out_sk +EXPORT_SYMBOL_GPL vmlinux 0x2e92ba0f acpi_device_update_power +EXPORT_SYMBOL_GPL vmlinux 0x2e97c15d wakeup_source_remove +EXPORT_SYMBOL_GPL vmlinux 0x2ebe3135 cpu_is_hotpluggable +EXPORT_SYMBOL_GPL vmlinux 0x2ec3c0a3 ata_bmdma_qc_issue +EXPORT_SYMBOL_GPL vmlinux 0x2ec4eee6 __tracepoint_suspend_resume +EXPORT_SYMBOL_GPL vmlinux 0x2ec6de88 skb_complete_tx_timestamp +EXPORT_SYMBOL_GPL vmlinux 0x2eca33b0 devm_hwmon_device_register_with_groups +EXPORT_SYMBOL_GPL vmlinux 0x2ed5185c percpu_ida_destroy +EXPORT_SYMBOL_GPL vmlinux 0x2ef16248 gpio_to_desc +EXPORT_SYMBOL_GPL vmlinux 0x2f01201f __inet_lookup_listener +EXPORT_SYMBOL_GPL vmlinux 0x2f0d9053 usb_otg_state_string +EXPORT_SYMBOL_GPL vmlinux 0x2f26f34e relay_switch_subbuf +EXPORT_SYMBOL_GPL vmlinux 0x2f3d5a6a apply_to_page_range +EXPORT_SYMBOL_GPL vmlinux 0x2f4113a2 dcookie_register +EXPORT_SYMBOL_GPL vmlinux 0x2f64415f unregister_acpi_hed_notifier +EXPORT_SYMBOL_GPL vmlinux 0x2f766c59 xen_swiotlb_dma_supported +EXPORT_SYMBOL_GPL vmlinux 0x2f8a5bca da903x_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x2f8b318d device_dma_is_coherent +EXPORT_SYMBOL_GPL vmlinux 0x2fbd5875 bus_get_kset +EXPORT_SYMBOL_GPL vmlinux 0x2fd8cba9 freeze_wake +EXPORT_SYMBOL_GPL vmlinux 0x2ff9eb8b hwmon_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x300b4976 platform_device_add_resources +EXPORT_SYMBOL_GPL vmlinux 0x30147780 iommu_map +EXPORT_SYMBOL_GPL vmlinux 0x302ac83d crypto_alloc_akcipher +EXPORT_SYMBOL_GPL vmlinux 0x303ea810 __inet_inherit_port +EXPORT_SYMBOL_GPL vmlinux 0x303edeb9 pwm_enable +EXPORT_SYMBOL_GPL vmlinux 0x30635782 cpu_has_xfeatures +EXPORT_SYMBOL_GPL vmlinux 0x3067376d ata_port_schedule_eh +EXPORT_SYMBOL_GPL vmlinux 0x3085061b dma_release_channel +EXPORT_SYMBOL_GPL vmlinux 0x309471b6 xen_xlate_unmap_gfn_range +EXPORT_SYMBOL_GPL vmlinux 0x309e694f pwm_set_polarity +EXPORT_SYMBOL_GPL vmlinux 0x30a1bbb4 save_stack_trace_tsk +EXPORT_SYMBOL_GPL vmlinux 0x30b151d0 of_pwm_get +EXPORT_SYMBOL_GPL vmlinux 0x30cdcd4d kill_pid_info_as_cred +EXPORT_SYMBOL_GPL vmlinux 0x30ceade4 dm_internal_resume +EXPORT_SYMBOL_GPL vmlinux 0x3109b751 cpu_clock +EXPORT_SYMBOL_GPL vmlinux 0x31128b8e hv_remove_kexec_handler +EXPORT_SYMBOL_GPL vmlinux 0x31266931 con_debug_leave +EXPORT_SYMBOL_GPL vmlinux 0x313a417b dm_get_table_device +EXPORT_SYMBOL_GPL vmlinux 0x3153dee9 trace_event_buffer_lock_reserve +EXPORT_SYMBOL_GPL vmlinux 0x31c0c2d1 dm_put +EXPORT_SYMBOL_GPL vmlinux 0x31c7970f pciserial_suspend_ports +EXPORT_SYMBOL_GPL vmlinux 0x320694c2 gpiod_set_array_value +EXPORT_SYMBOL_GPL vmlinux 0x321bdbb1 compat_get_timeval +EXPORT_SYMBOL_GPL vmlinux 0x322e8d14 crypto_ahash_digest +EXPORT_SYMBOL_GPL vmlinux 0x3230f76c n_tty_inherit_ops +EXPORT_SYMBOL_GPL vmlinux 0x32340f6f regulator_get_hardware_vsel_register +EXPORT_SYMBOL_GPL vmlinux 0x323f8556 dev_pm_qos_expose_latency_limit +EXPORT_SYMBOL_GPL vmlinux 0x325e677c gnttab_grant_foreign_transfer_ref +EXPORT_SYMBOL_GPL vmlinux 0x328095b1 noop_backing_dev_info +EXPORT_SYMBOL_GPL vmlinux 0x3288fca8 led_trigger_store +EXPORT_SYMBOL_GPL vmlinux 0x328995b5 tracing_generic_entry_update +EXPORT_SYMBOL_GPL vmlinux 0x32aea08c regulator_get_exclusive +EXPORT_SYMBOL_GPL vmlinux 0x32b2e626 devm_regmap_init_mmio_clk +EXPORT_SYMBOL_GPL vmlinux 0x32b7da02 wb_writeout_inc +EXPORT_SYMBOL_GPL vmlinux 0x32bc0fcf preempt_notifier_dec +EXPORT_SYMBOL_GPL vmlinux 0x32bded08 __tracepoint_block_bio_remap +EXPORT_SYMBOL_GPL vmlinux 0x32c3cb4e class_compat_register +EXPORT_SYMBOL_GPL vmlinux 0x32c8e2b4 inet_csk_listen_start +EXPORT_SYMBOL_GPL vmlinux 0x32d26ccb regmap_init_i2c +EXPORT_SYMBOL_GPL vmlinux 0x32d4b7f0 iptunnel_handle_offloads +EXPORT_SYMBOL_GPL vmlinux 0x32d58fb0 tty_mode_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x3324703c pinctrl_register +EXPORT_SYMBOL_GPL vmlinux 0x332c1287 phy_create_lookup +EXPORT_SYMBOL_GPL vmlinux 0x33333748 exportfs_encode_fh +EXPORT_SYMBOL_GPL vmlinux 0x3358d246 xfrm_audit_state_replay +EXPORT_SYMBOL_GPL vmlinux 0x335c570f enable_percpu_irq +EXPORT_SYMBOL_GPL vmlinux 0x335d76cc rhashtable_walk_stop +EXPORT_SYMBOL_GPL vmlinux 0x335fc03b clk_gpio_gate_ops +EXPORT_SYMBOL_GPL vmlinux 0x336154ca rcutorture_record_test_transition +EXPORT_SYMBOL_GPL vmlinux 0x3362b03c xen_p2m_size +EXPORT_SYMBOL_GPL vmlinux 0x33655159 xen_pcpu_hotplug_sync +EXPORT_SYMBOL_GPL vmlinux 0x33657a81 fuse_put_request +EXPORT_SYMBOL_GPL vmlinux 0x33861006 platform_add_devices +EXPORT_SYMBOL_GPL vmlinux 0x33a5b75a unregister_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x33b96e5d apei_exec_write_register +EXPORT_SYMBOL_GPL vmlinux 0x33ee2f26 inet6_csk_xmit +EXPORT_SYMBOL_GPL vmlinux 0x33f2f8ca relay_buf_full +EXPORT_SYMBOL_GPL vmlinux 0x33f8d099 put_pid +EXPORT_SYMBOL_GPL vmlinux 0x340b46fa transport_class_unregister +EXPORT_SYMBOL_GPL vmlinux 0x34107398 do_unregister_con_driver +EXPORT_SYMBOL_GPL vmlinux 0x341b5d43 dma_buf_vunmap +EXPORT_SYMBOL_GPL vmlinux 0x34271c8d wakeup_source_prepare +EXPORT_SYMBOL_GPL vmlinux 0x342f43c8 PageHuge +EXPORT_SYMBOL_GPL vmlinux 0x3465fce6 __tracepoint_block_bio_complete +EXPORT_SYMBOL_GPL vmlinux 0x3479ea4f key_set_timeout +EXPORT_SYMBOL_GPL vmlinux 0x347b44e8 cpci_hp_register_controller +EXPORT_SYMBOL_GPL vmlinux 0x347fd4b3 eventfd_ctx_get +EXPORT_SYMBOL_GPL vmlinux 0x348721a0 iommu_attach_group +EXPORT_SYMBOL_GPL vmlinux 0x34a4f63d irq_find_host +EXPORT_SYMBOL_GPL vmlinux 0x34a86ba1 skcipher_geniv_exit +EXPORT_SYMBOL_GPL vmlinux 0x34b52f52 usb_phy_generic_register +EXPORT_SYMBOL_GPL vmlinux 0x34c71f51 xenbus_dev_resume +EXPORT_SYMBOL_GPL vmlinux 0x34ce7e01 ping_init_sock +EXPORT_SYMBOL_GPL vmlinux 0x34e62222 crypto_alloc_instance +EXPORT_SYMBOL_GPL vmlinux 0x34e9c06b rio_mport_get_feature +EXPORT_SYMBOL_GPL vmlinux 0x34edbed3 spi_busnum_to_master +EXPORT_SYMBOL_GPL vmlinux 0x3502c9e8 crypto_drop_spawn +EXPORT_SYMBOL_GPL vmlinux 0x3503f9bf mddev_resume +EXPORT_SYMBOL_GPL vmlinux 0x35176301 rcu_batches_completed_sched +EXPORT_SYMBOL_GPL vmlinux 0x352650ee gnttab_batch_map +EXPORT_SYMBOL_GPL vmlinux 0x35281b25 extcon_dev_free +EXPORT_SYMBOL_GPL vmlinux 0x352dde56 ata_port_freeze +EXPORT_SYMBOL_GPL vmlinux 0x35310ff5 dax_truncate_page +EXPORT_SYMBOL_GPL vmlinux 0x354e1b25 pm_generic_poweroff +EXPORT_SYMBOL_GPL vmlinux 0x356b58f9 iptunnel_pull_header +EXPORT_SYMBOL_GPL vmlinux 0x35791f2e extcon_dev_unregister +EXPORT_SYMBOL_GPL vmlinux 0x358ff60f twl_get_hfclk_rate +EXPORT_SYMBOL_GPL vmlinux 0x3590f058 usb_match_one_id +EXPORT_SYMBOL_GPL vmlinux 0x35910f72 tcp_orphan_count +EXPORT_SYMBOL_GPL vmlinux 0x359b3e35 regulator_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x35b0a99c pci_reset_slot +EXPORT_SYMBOL_GPL vmlinux 0x35bf2acd nd_fletcher64 +EXPORT_SYMBOL_GPL vmlinux 0x35f10f43 nfq_ct_nat_hook +EXPORT_SYMBOL_GPL vmlinux 0x36075bb5 iommu_group_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x36159417 ip_route_output_flow +EXPORT_SYMBOL_GPL vmlinux 0x361e2bcc save_stack_trace +EXPORT_SYMBOL_GPL vmlinux 0x362d6090 spi_register_master +EXPORT_SYMBOL_GPL vmlinux 0x3642df11 usb_hcd_giveback_urb +EXPORT_SYMBOL_GPL vmlinux 0x366656c9 crypto_register_alg +EXPORT_SYMBOL_GPL vmlinux 0x368f1fea static_key_slow_inc +EXPORT_SYMBOL_GPL vmlinux 0x369fcd70 tracing_snapshot +EXPORT_SYMBOL_GPL vmlinux 0x36a3d8bf crypto_grab_spawn +EXPORT_SYMBOL_GPL vmlinux 0x36b5497e intel_iommu_enabled +EXPORT_SYMBOL_GPL vmlinux 0x36bda7b0 cpuidle_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0x36c2c584 crypto_register_shash +EXPORT_SYMBOL_GPL vmlinux 0x36ca2b57 tty_encode_baud_rate +EXPORT_SYMBOL_GPL vmlinux 0x36dab97f trace_clock_jiffies +EXPORT_SYMBOL_GPL vmlinux 0x36de6ac0 watchdog_init_timeout +EXPORT_SYMBOL_GPL vmlinux 0x37061d78 irq_domain_associate +EXPORT_SYMBOL_GPL vmlinux 0x370d6dc6 extcon_get_cable_state +EXPORT_SYMBOL_GPL vmlinux 0x374055c4 pci_max_pasids +EXPORT_SYMBOL_GPL vmlinux 0x3741f64c platform_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x376b5e2f crypto_unregister_rngs +EXPORT_SYMBOL_GPL vmlinux 0x37a1fedb uhci_check_and_reset_hc +EXPORT_SYMBOL_GPL vmlinux 0x37d39caa lp8788_read_byte +EXPORT_SYMBOL_GPL vmlinux 0x37da5e30 iommu_domain_set_attr +EXPORT_SYMBOL_GPL vmlinux 0x37df3c61 ohci_hub_status_data +EXPORT_SYMBOL_GPL vmlinux 0x37f1ffbf gdt_page +EXPORT_SYMBOL_GPL vmlinux 0x38017716 bitmap_resize +EXPORT_SYMBOL_GPL vmlinux 0x3812671a crypto_alg_mod_lookup +EXPORT_SYMBOL_GPL vmlinux 0x38336f92 inet_csk_compat_getsockopt +EXPORT_SYMBOL_GPL vmlinux 0x3839542c regulator_is_supported_voltage +EXPORT_SYMBOL_GPL vmlinux 0x384a71d4 ata_port_abort +EXPORT_SYMBOL_GPL vmlinux 0x384c72ca bus_rescan_devices +EXPORT_SYMBOL_GPL vmlinux 0x385efb40 xen_swiotlb_unmap_page +EXPORT_SYMBOL_GPL vmlinux 0x38722f80 kernel_fpu_end +EXPORT_SYMBOL_GPL vmlinux 0x389d1680 usb_enable_intel_xhci_ports +EXPORT_SYMBOL_GPL vmlinux 0x38aaedc3 vfs_getxattr +EXPORT_SYMBOL_GPL vmlinux 0x38b24b77 blk_queue_bypass_start +EXPORT_SYMBOL_GPL vmlinux 0x38c5ca42 swiotlb_tbl_unmap_single +EXPORT_SYMBOL_GPL vmlinux 0x38d44d2c crypto_spawn_tfm +EXPORT_SYMBOL_GPL vmlinux 0x38e26595 console_drivers +EXPORT_SYMBOL_GPL vmlinux 0x38e5bc5a clk_set_rate_range +EXPORT_SYMBOL_GPL vmlinux 0x38f5e6b0 device_property_read_string_array +EXPORT_SYMBOL_GPL vmlinux 0x38fe3396 mnt_clone_write +EXPORT_SYMBOL_GPL vmlinux 0x3911e1f2 gpiod_direction_output +EXPORT_SYMBOL_GPL vmlinux 0x391c1368 rtc_set_time +EXPORT_SYMBOL_GPL vmlinux 0x391e07b8 pci_assign_unassigned_bridge_resources +EXPORT_SYMBOL_GPL vmlinux 0x393d4a42 regmap_irq_get_domain +EXPORT_SYMBOL_GPL vmlinux 0x3944853e kernfs_get +EXPORT_SYMBOL_GPL vmlinux 0x39c5721a xenbus_free_evtchn +EXPORT_SYMBOL_GPL vmlinux 0x39ca07cc maxim_charger_calc_reg_current +EXPORT_SYMBOL_GPL vmlinux 0x39e61495 nf_logger_request_module +EXPORT_SYMBOL_GPL vmlinux 0x3a08f2d2 each_symbol_section +EXPORT_SYMBOL_GPL vmlinux 0x3a1eaf83 dev_pm_set_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0x3a26ed11 sched_clock +EXPORT_SYMBOL_GPL vmlinux 0x3a305c20 crypto_aes_set_key +EXPORT_SYMBOL_GPL vmlinux 0x3a37ce81 hrtimer_try_to_cancel +EXPORT_SYMBOL_GPL vmlinux 0x3a38dc65 memory_failure +EXPORT_SYMBOL_GPL vmlinux 0x3a3d2d6a bmp085_detect +EXPORT_SYMBOL_GPL vmlinux 0x3a4f6a32 ata_sff_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x3a536bd7 ring_buffer_read_finish +EXPORT_SYMBOL_GPL vmlinux 0x3a53b643 crypto_alloc_tfm +EXPORT_SYMBOL_GPL vmlinux 0x3a7d80f9 xen_max_p2m_pfn +EXPORT_SYMBOL_GPL vmlinux 0x3a8bad5f netdev_set_default_ethtool_ops +EXPORT_SYMBOL_GPL vmlinux 0x3a927111 hrtimer_cancel +EXPORT_SYMBOL_GPL vmlinux 0x3a953c87 fwnode_property_read_u64_array +EXPORT_SYMBOL_GPL vmlinux 0x3a9b36f2 pci_ignore_hotplug +EXPORT_SYMBOL_GPL vmlinux 0x3a9be019 asymmetric_key_id_partial +EXPORT_SYMBOL_GPL vmlinux 0x3acdf325 twl4030_audio_enable_resource +EXPORT_SYMBOL_GPL vmlinux 0x3ad0e201 scatterwalk_copychunks +EXPORT_SYMBOL_GPL vmlinux 0x3ae86d4a security_inode_mkdir +EXPORT_SYMBOL_GPL vmlinux 0x3afa11ca percpu_ida_free +EXPORT_SYMBOL_GPL vmlinux 0x3afc8863 ping_proc_unregister +EXPORT_SYMBOL_GPL vmlinux 0x3b11c5fc crypto_chain +EXPORT_SYMBOL_GPL vmlinux 0x3b22f02f wm8350_gpio_config +EXPORT_SYMBOL_GPL vmlinux 0x3b443afe inode_sb_list_add +EXPORT_SYMBOL_GPL vmlinux 0x3b5f79f7 virtqueue_disable_cb +EXPORT_SYMBOL_GPL vmlinux 0x3b653236 pwm_request +EXPORT_SYMBOL_GPL vmlinux 0x3b7145bb apei_exec_read_register_value +EXPORT_SYMBOL_GPL vmlinux 0x3bd4ceb7 dmaengine_unmap_put +EXPORT_SYMBOL_GPL vmlinux 0x3be712d2 crypto_shash_digest +EXPORT_SYMBOL_GPL vmlinux 0x3c2bae7d inet_csk_compat_setsockopt +EXPORT_SYMBOL_GPL vmlinux 0x3c2bb994 tty_buffer_set_limit +EXPORT_SYMBOL_GPL vmlinux 0x3c9390db pci_vpd_find_tag +EXPORT_SYMBOL_GPL vmlinux 0x3c993146 crypto_larval_lookup +EXPORT_SYMBOL_GPL vmlinux 0x3c997055 task_cgroup_path +EXPORT_SYMBOL_GPL vmlinux 0x3cc82b59 xfrm_audit_state_replay_overflow +EXPORT_SYMBOL_GPL vmlinux 0x3cd06035 add_input_randomness +EXPORT_SYMBOL_GPL vmlinux 0x3cdf85be ping_common_sendmsg +EXPORT_SYMBOL_GPL vmlinux 0x3d1d1b4d vfs_removexattr +EXPORT_SYMBOL_GPL vmlinux 0x3d388324 dpm_resume_end +EXPORT_SYMBOL_GPL vmlinux 0x3d5a9e4f ata_cable_sata +EXPORT_SYMBOL_GPL vmlinux 0x3d5f392d acpi_os_unmap_memory +EXPORT_SYMBOL_GPL vmlinux 0x3d62cc00 wakeup_source_drop +EXPORT_SYMBOL_GPL vmlinux 0x3d6c0e7e gpiod_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x3d6d0d58 wm5110_revd_irq +EXPORT_SYMBOL_GPL vmlinux 0x3d7ea99a gnttab_grant_foreign_transfer +EXPORT_SYMBOL_GPL vmlinux 0x3dae6404 unregister_jprobes +EXPORT_SYMBOL_GPL vmlinux 0x3dc249ae tps65912_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x3dc916b6 crypto_fl_tab +EXPORT_SYMBOL_GPL vmlinux 0x3dd58961 usb_hcd_link_urb_to_ep +EXPORT_SYMBOL_GPL vmlinux 0x3dd8181e __clk_get_parent +EXPORT_SYMBOL_GPL vmlinux 0x3de9cae1 crypto_remove_final +EXPORT_SYMBOL_GPL vmlinux 0x3debe528 inet6_hash_connect +EXPORT_SYMBOL_GPL vmlinux 0x3dfc436e percpu_ref_kill_and_confirm +EXPORT_SYMBOL_GPL vmlinux 0x3e02ebb5 dma_get_slave_channel +EXPORT_SYMBOL_GPL vmlinux 0x3e54b244 btree_lookup +EXPORT_SYMBOL_GPL vmlinux 0x3e573eb2 gpiochip_set_chained_irqchip +EXPORT_SYMBOL_GPL vmlinux 0x3e5e1937 rcu_batches_started_sched +EXPORT_SYMBOL_GPL vmlinux 0x3e5e5171 register_pernet_subsys +EXPORT_SYMBOL_GPL vmlinux 0x3e6765ef scsi_schedule_eh +EXPORT_SYMBOL_GPL vmlinux 0x3e7080cb mpi_read_from_buffer +EXPORT_SYMBOL_GPL vmlinux 0x3e781ffc ehci_setup +EXPORT_SYMBOL_GPL vmlinux 0x3e8ebfc7 rtc_irq_unregister +EXPORT_SYMBOL_GPL vmlinux 0x3e9130f9 usb_hcd_unlink_urb_from_ep +EXPORT_SYMBOL_GPL vmlinux 0x3ea5196d apei_osc_setup +EXPORT_SYMBOL_GPL vmlinux 0x3ebeef20 wm831x_device_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x3ed07c32 seq_release_net +EXPORT_SYMBOL_GPL vmlinux 0x3ee3c99b lp8788_update_bits +EXPORT_SYMBOL_GPL vmlinux 0x3efb35c9 get_online_cpus +EXPORT_SYMBOL_GPL vmlinux 0x3f229c4c oops_begin +EXPORT_SYMBOL_GPL vmlinux 0x3f27ea57 ata_sas_port_start +EXPORT_SYMBOL_GPL vmlinux 0x3f3d7f5f arizona_pm_ops +EXPORT_SYMBOL_GPL vmlinux 0x3f418be0 usb_acpi_set_power_state +EXPORT_SYMBOL_GPL vmlinux 0x3f453cbe phy_power_off +EXPORT_SYMBOL_GPL vmlinux 0x3f4587ac pci_user_read_config_byte +EXPORT_SYMBOL_GPL vmlinux 0x3f84d4c9 gnttab_release_grant_reference +EXPORT_SYMBOL_GPL vmlinux 0x3f918ae4 pm_runtime_barrier +EXPORT_SYMBOL_GPL vmlinux 0x3fa5af9c nd_cmd_bus_desc +EXPORT_SYMBOL_GPL vmlinux 0x3fa601f2 free_vm_area +EXPORT_SYMBOL_GPL vmlinux 0x3fbe8098 pwm_put +EXPORT_SYMBOL_GPL vmlinux 0x3fc72d3d __tracepoint_kfree_skb +EXPORT_SYMBOL_GPL vmlinux 0x3fc90022 cpufreq_frequency_table_get_index +EXPORT_SYMBOL_GPL vmlinux 0x3fe6df3b fat_dir_empty +EXPORT_SYMBOL_GPL vmlinux 0x3feae2a1 rio_mport_get_efb +EXPORT_SYMBOL_GPL vmlinux 0x3feb39c3 component_master_add +EXPORT_SYMBOL_GPL vmlinux 0x3ff896f9 __mnt_is_readonly +EXPORT_SYMBOL_GPL vmlinux 0x3ffd0273 device_remove_bin_file +EXPORT_SYMBOL_GPL vmlinux 0x4006ed3a unuse_mm +EXPORT_SYMBOL_GPL vmlinux 0x400a024b acpi_scan_lock_release +EXPORT_SYMBOL_GPL vmlinux 0x4017454f ata_platform_remove_one +EXPORT_SYMBOL_GPL vmlinux 0x40364507 disk_part_iter_next +EXPORT_SYMBOL_GPL vmlinux 0x40365542 regmap_check_range_table +EXPORT_SYMBOL_GPL vmlinux 0x403f9529 gpio_request_one +EXPORT_SYMBOL_GPL vmlinux 0x4045c494 filter_match_preds +EXPORT_SYMBOL_GPL vmlinux 0x4054f8c2 crypto_unregister_instance +EXPORT_SYMBOL_GPL vmlinux 0x40645928 xenbus_dev_groups +EXPORT_SYMBOL_GPL vmlinux 0x4065d168 pm_print_active_wakeup_sources +EXPORT_SYMBOL_GPL vmlinux 0x406c4cb1 hrtimer_resolution +EXPORT_SYMBOL_GPL vmlinux 0x4081127f usb_get_phy_dev +EXPORT_SYMBOL_GPL vmlinux 0x4084cec8 blkdev_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x40956073 sysfs_remove_groups +EXPORT_SYMBOL_GPL vmlinux 0x40af0dec ata_xfer_mode2mask +EXPORT_SYMBOL_GPL vmlinux 0x40d46b21 crypto_ft_tab +EXPORT_SYMBOL_GPL vmlinux 0x40f0683e reset_control_put +EXPORT_SYMBOL_GPL vmlinux 0x40fd188e tpm_get_timeouts +EXPORT_SYMBOL_GPL vmlinux 0x41041184 inode_congested +EXPORT_SYMBOL_GPL vmlinux 0x410bf7d8 ata_sas_slave_configure +EXPORT_SYMBOL_GPL vmlinux 0x412dbf61 devfreq_event_remove_edev +EXPORT_SYMBOL_GPL vmlinux 0x4138f2bc da903x_writes +EXPORT_SYMBOL_GPL vmlinux 0x413add64 xenbus_alloc_evtchn +EXPORT_SYMBOL_GPL vmlinux 0x415ae569 usb_disable_lpm +EXPORT_SYMBOL_GPL vmlinux 0x415e5e55 device_get_next_child_node +EXPORT_SYMBOL_GPL vmlinux 0x41694c17 add_disk_randomness +EXPORT_SYMBOL_GPL vmlinux 0x41742338 subsys_interface_unregister +EXPORT_SYMBOL_GPL vmlinux 0x41814cb8 dirty_writeback_interval +EXPORT_SYMBOL_GPL vmlinux 0x41827f45 key_type_logon +EXPORT_SYMBOL_GPL vmlinux 0x418cf7a2 dma_buf_mmap +EXPORT_SYMBOL_GPL vmlinux 0x41948fa7 pwm_can_sleep +EXPORT_SYMBOL_GPL vmlinux 0x419bd823 attribute_container_unregister +EXPORT_SYMBOL_GPL vmlinux 0x41aa38e8 usb_wakeup_notification +EXPORT_SYMBOL_GPL vmlinux 0x41c51c2d pci_device_is_present +EXPORT_SYMBOL_GPL vmlinux 0x4213a51a efivar_entry_set_safe +EXPORT_SYMBOL_GPL vmlinux 0x4215bd8a ata_sff_hsm_move +EXPORT_SYMBOL_GPL vmlinux 0x4218e085 debugfs_create_file +EXPORT_SYMBOL_GPL vmlinux 0x4227baaa device_reprobe +EXPORT_SYMBOL_GPL vmlinux 0x42371278 iommu_unmap +EXPORT_SYMBOL_GPL vmlinux 0x423a0434 led_trigger_blink +EXPORT_SYMBOL_GPL vmlinux 0x424580a4 inet6_sk_rebuild_header +EXPORT_SYMBOL_GPL vmlinux 0x424acc6d scatterwalk_done +EXPORT_SYMBOL_GPL vmlinux 0x427d5c68 register_jprobes +EXPORT_SYMBOL_GPL vmlinux 0x42825ce2 rcu_scheduler_active +EXPORT_SYMBOL_GPL vmlinux 0x429251b9 acpi_subsys_prepare +EXPORT_SYMBOL_GPL vmlinux 0x42954599 ata_sff_data_xfer_noirq +EXPORT_SYMBOL_GPL vmlinux 0x42a8b648 rio_get_comptag +EXPORT_SYMBOL_GPL vmlinux 0x42bb8d80 perf_trace_buf_prepare +EXPORT_SYMBOL_GPL vmlinux 0x42cd39e2 sysfs_chmod_file +EXPORT_SYMBOL_GPL vmlinux 0x43005674 bus_create_file +EXPORT_SYMBOL_GPL vmlinux 0x430065bc class_interface_register +EXPORT_SYMBOL_GPL vmlinux 0x431bf93c wm5110_irq +EXPORT_SYMBOL_GPL vmlinux 0x4357582e max8997_read_reg +EXPORT_SYMBOL_GPL vmlinux 0x43619e1a scatterwalk_ffwd +EXPORT_SYMBOL_GPL vmlinux 0x4363e800 __efivar_entry_get +EXPORT_SYMBOL_GPL vmlinux 0x4393b098 acpi_dev_runtime_suspend +EXPORT_SYMBOL_GPL vmlinux 0x4395953e usb_kill_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x439afda2 devm_mdiobus_alloc_size +EXPORT_SYMBOL_GPL vmlinux 0x43a53735 __alloc_workqueue_key +EXPORT_SYMBOL_GPL vmlinux 0x43c38b57 usb_hcd_pci_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x43cfa983 usb_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x43d91ea4 usb_block_urb +EXPORT_SYMBOL_GPL vmlinux 0x43f56e82 ata_xfer_mode2shift +EXPORT_SYMBOL_GPL vmlinux 0x43f81957 clk_round_rate +EXPORT_SYMBOL_GPL vmlinux 0x440729ea power_supply_unregister +EXPORT_SYMBOL_GPL vmlinux 0x441fa356 irq_ts_save +EXPORT_SYMBOL_GPL vmlinux 0x44224412 sdev_evt_send +EXPORT_SYMBOL_GPL vmlinux 0x442a1294 ata_sff_exec_command +EXPORT_SYMBOL_GPL vmlinux 0x44305183 regmap_async_complete +EXPORT_SYMBOL_GPL vmlinux 0x44326ea8 gpiod_set_raw_array_value +EXPORT_SYMBOL_GPL vmlinux 0x44667437 tpm2_startup +EXPORT_SYMBOL_GPL vmlinux 0x4484a5a4 wait_for_device_probe +EXPORT_SYMBOL_GPL vmlinux 0x44abdab1 clockevents_config_and_register +EXPORT_SYMBOL_GPL vmlinux 0x44d89c06 rio_request_outb_dbell +EXPORT_SYMBOL_GPL vmlinux 0x44d8f1ac irq_domain_remove +EXPORT_SYMBOL_GPL vmlinux 0x44da1f95 ata_pci_device_suspend +EXPORT_SYMBOL_GPL vmlinux 0x44f45cd5 fat_build_inode +EXPORT_SYMBOL_GPL vmlinux 0x4508e361 devm_regulator_bulk_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x450fb522 kmsg_dump_get_buffer +EXPORT_SYMBOL_GPL vmlinux 0x45147327 blocking_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0x45152b4f thermal_zone_unbind_cooling_device +EXPORT_SYMBOL_GPL vmlinux 0x4532e810 led_trigger_blink_oneshot +EXPORT_SYMBOL_GPL vmlinux 0x4541fe0d mtrr_state +EXPORT_SYMBOL_GPL vmlinux 0x4546beba devres_for_each_res +EXPORT_SYMBOL_GPL vmlinux 0x4550c532 nvdimm_volatile_region_create +EXPORT_SYMBOL_GPL vmlinux 0x457594fa crypto_alg_list +EXPORT_SYMBOL_GPL vmlinux 0x45a6ca63 crypto_alloc_pcomp +EXPORT_SYMBOL_GPL vmlinux 0x45b7d6a0 btree_destroy +EXPORT_SYMBOL_GPL vmlinux 0x45bf1ff3 crypto_inc +EXPORT_SYMBOL_GPL vmlinux 0x45d14bdf hypercall_page +EXPORT_SYMBOL_GPL vmlinux 0x46013233 net_dec_ingress_queue +EXPORT_SYMBOL_GPL vmlinux 0x460f31aa rodata_test_data +EXPORT_SYMBOL_GPL vmlinux 0x460f7531 wait_rcu_gp +EXPORT_SYMBOL_GPL vmlinux 0x461d635d class_for_each_device +EXPORT_SYMBOL_GPL vmlinux 0x461e7b4a ata_sff_data_xfer +EXPORT_SYMBOL_GPL vmlinux 0x463d24ea ipv6_fixup_options +EXPORT_SYMBOL_GPL vmlinux 0x46434934 disable_kprobe +EXPORT_SYMBOL_GPL vmlinux 0x465a293c od_register_powersave_bias_handler +EXPORT_SYMBOL_GPL vmlinux 0x466f78a4 usb_debug_root +EXPORT_SYMBOL_GPL vmlinux 0x4672af3d regulator_disable_regmap +EXPORT_SYMBOL_GPL vmlinux 0x4672e88b __crypto_dequeue_request +EXPORT_SYMBOL_GPL vmlinux 0x4678157d pci_bus_sem +EXPORT_SYMBOL_GPL vmlinux 0x46826fbb pm_generic_restore_early +EXPORT_SYMBOL_GPL vmlinux 0x4688d7ec pvclock_gtod_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x469143c4 x509_free_certificate +EXPORT_SYMBOL_GPL vmlinux 0x46b1c097 rio_request_inb_mbox +EXPORT_SYMBOL_GPL vmlinux 0x46bf41f5 sysfs_notify +EXPORT_SYMBOL_GPL vmlinux 0x46c07f22 reservation_object_wait_timeout_rcu +EXPORT_SYMBOL_GPL vmlinux 0x46d4f866 __dev_forward_skb +EXPORT_SYMBOL_GPL vmlinux 0x46e087f1 ip4_datagram_release_cb +EXPORT_SYMBOL_GPL vmlinux 0x46e0e615 phy_create +EXPORT_SYMBOL_GPL vmlinux 0x46f8c521 ip6_dst_lookup_flow +EXPORT_SYMBOL_GPL vmlinux 0x470523a9 nl_table +EXPORT_SYMBOL_GPL vmlinux 0x470da38c __blkg_prfill_rwstat +EXPORT_SYMBOL_GPL vmlinux 0x47229b5c gpio_request +EXPORT_SYMBOL_GPL vmlinux 0x47333502 power_supply_get_by_name +EXPORT_SYMBOL_GPL vmlinux 0x4761f17c register_netevent_notifier +EXPORT_SYMBOL_GPL vmlinux 0x47884890 system_power_efficient_wq +EXPORT_SYMBOL_GPL vmlinux 0x47aad3b9 have_governor_per_policy +EXPORT_SYMBOL_GPL vmlinux 0x47c34751 devm_extcon_dev_allocate +EXPORT_SYMBOL_GPL vmlinux 0x47d0eea2 acpi_lpat_temp_to_raw +EXPORT_SYMBOL_GPL vmlinux 0x47de0dc7 clk_unregister_mux +EXPORT_SYMBOL_GPL vmlinux 0x47f4f13c pinctrl_dev_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x481c2cb0 look_up_OID +EXPORT_SYMBOL_GPL vmlinux 0x4828e77b acpi_scan_lock_acquire +EXPORT_SYMBOL_GPL vmlinux 0x4830316c __page_file_index +EXPORT_SYMBOL_GPL vmlinux 0x483982ea wakeup_source_register +EXPORT_SYMBOL_GPL vmlinux 0x484e9201 usb_find_alt_setting +EXPORT_SYMBOL_GPL vmlinux 0x4851d836 __blk_run_queue_uncond +EXPORT_SYMBOL_GPL vmlinux 0x48682db9 perf_guest_get_msrs +EXPORT_SYMBOL_GPL vmlinux 0x4868c3b4 rcu_batches_started_bh +EXPORT_SYMBOL_GPL vmlinux 0x4872ae93 phy_init +EXPORT_SYMBOL_GPL vmlinux 0x4876d6c2 adp5520_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x48781dab md_stop +EXPORT_SYMBOL_GPL vmlinux 0x48791c75 reset_controller_unregister +EXPORT_SYMBOL_GPL vmlinux 0x487c5d33 nf_log_buf_add +EXPORT_SYMBOL_GPL vmlinux 0x488bbf67 ata_pci_sff_prepare_host +EXPORT_SYMBOL_GPL vmlinux 0x4896791f subsys_interface_register +EXPORT_SYMBOL_GPL vmlinux 0x48afe886 ata_sff_qc_issue +EXPORT_SYMBOL_GPL vmlinux 0x48bb8dba blk_update_request +EXPORT_SYMBOL_GPL vmlinux 0x48d2c4d5 efivar_entry_remove +EXPORT_SYMBOL_GPL vmlinux 0x48d4c96e devm_kmalloc +EXPORT_SYMBOL_GPL vmlinux 0x48e527ca extcon_set_cable_state_ +EXPORT_SYMBOL_GPL vmlinux 0x48edad3e find_vpid +EXPORT_SYMBOL_GPL vmlinux 0x48f52912 regulator_list_hardware_vsel +EXPORT_SYMBOL_GPL vmlinux 0x48f58719 xfrm_audit_state_notfound +EXPORT_SYMBOL_GPL vmlinux 0x490a8df6 x86_platform +EXPORT_SYMBOL_GPL vmlinux 0x492548fb tty_init_termios +EXPORT_SYMBOL_GPL vmlinux 0x4952f6b2 xfrm_audit_state_add +EXPORT_SYMBOL_GPL vmlinux 0x496127ae fib_rules_register +EXPORT_SYMBOL_GPL vmlinux 0x4964d248 ping_seq_fops +EXPORT_SYMBOL_GPL vmlinux 0x49728bbf wm8400_reset_codec_reg_cache +EXPORT_SYMBOL_GPL vmlinux 0x498d293a trace_buffer_unlock_commit +EXPORT_SYMBOL_GPL vmlinux 0x499043d3 crypto_init_queue +EXPORT_SYMBOL_GPL vmlinux 0x49ae917b do_unbind_con_driver +EXPORT_SYMBOL_GPL vmlinux 0x49b50d81 regulator_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x49ba1687 inet6_lookup_listener +EXPORT_SYMBOL_GPL vmlinux 0x49c68476 register_mce_write_callback +EXPORT_SYMBOL_GPL vmlinux 0x49e4045e phy_pm_runtime_get_sync +EXPORT_SYMBOL_GPL vmlinux 0x49e96999 cond_synchronize_rcu +EXPORT_SYMBOL_GPL vmlinux 0x4a3c3cf9 microcode_sanity_check +EXPORT_SYMBOL_GPL vmlinux 0x4a420d09 acpi_bus_detach_private_data +EXPORT_SYMBOL_GPL vmlinux 0x4a450d02 regulator_disable +EXPORT_SYMBOL_GPL vmlinux 0x4a7096ad pm_generic_freeze_late +EXPORT_SYMBOL_GPL vmlinux 0x4a71d6c9 generic_fh_to_parent +EXPORT_SYMBOL_GPL vmlinux 0x4a896a9a __blk_put_request +EXPORT_SYMBOL_GPL vmlinux 0x4a8f18d2 ata_bmdma_post_internal_cmd +EXPORT_SYMBOL_GPL vmlinux 0x4a8f8c25 irq_gc_mask_clr_bit +EXPORT_SYMBOL_GPL vmlinux 0x4a90160e bprintf +EXPORT_SYMBOL_GPL vmlinux 0x4aadeb9a ring_buffer_alloc_read_page +EXPORT_SYMBOL_GPL vmlinux 0x4ae9922d of_reset_control_get +EXPORT_SYMBOL_GPL vmlinux 0x4af5fbd4 unregister_kretprobes +EXPORT_SYMBOL_GPL vmlinux 0x4aff0fff virtio_break_device +EXPORT_SYMBOL_GPL vmlinux 0x4b494056 vfs_kern_mount +EXPORT_SYMBOL_GPL vmlinux 0x4b5e4775 usb_hcd_pci_remove +EXPORT_SYMBOL_GPL vmlinux 0x4b808ed5 device_property_present +EXPORT_SYMBOL_GPL vmlinux 0x4b8d7dae ata_sff_softreset +EXPORT_SYMBOL_GPL vmlinux 0x4b8fcbad usb_driver_release_interface +EXPORT_SYMBOL_GPL vmlinux 0x4b9ad14f __rtnl_link_unregister +EXPORT_SYMBOL_GPL vmlinux 0x4bc65fd3 thermal_zone_device_update +EXPORT_SYMBOL_GPL vmlinux 0x4bed6fbb pci_disable_rom +EXPORT_SYMBOL_GPL vmlinux 0x4c10875b __fsnotify_parent +EXPORT_SYMBOL_GPL vmlinux 0x4c12c161 iommu_set_fault_handler +EXPORT_SYMBOL_GPL vmlinux 0x4c23df63 regmap_read +EXPORT_SYMBOL_GPL vmlinux 0x4c24a44c regmap_can_raw_write +EXPORT_SYMBOL_GPL vmlinux 0x4c2a472b __static_cpu_has_safe +EXPORT_SYMBOL_GPL vmlinux 0x4c520254 virtqueue_enable_cb_prepare +EXPORT_SYMBOL_GPL vmlinux 0x4c602bf1 __blkg_release_rcu +EXPORT_SYMBOL_GPL vmlinux 0x4c645f9e static_key_slow_dec_deferred +EXPORT_SYMBOL_GPL vmlinux 0x4c68f8a7 pinctrl_dev_get_name +EXPORT_SYMBOL_GPL vmlinux 0x4c759827 byte_rev_table +EXPORT_SYMBOL_GPL vmlinux 0x4c86b855 devm_led_classdev_unregister +EXPORT_SYMBOL_GPL vmlinux 0x4c887137 acpi_dev_suspend_late +EXPORT_SYMBOL_GPL vmlinux 0x4c982920 xhci_init_driver +EXPORT_SYMBOL_GPL vmlinux 0x4cd156ea crypto_grab_skcipher +EXPORT_SYMBOL_GPL vmlinux 0x4d0015e2 cpu_hotplug_disable +EXPORT_SYMBOL_GPL vmlinux 0x4d172df5 wbc_account_io +EXPORT_SYMBOL_GPL vmlinux 0x4d2755cf fat_search_long +EXPORT_SYMBOL_GPL vmlinux 0x4d37f40b pwm_disable +EXPORT_SYMBOL_GPL vmlinux 0x4d3c6e7c evm_inode_init_security +EXPORT_SYMBOL_GPL vmlinux 0x4d5474e7 acpi_processor_get_performance_info +EXPORT_SYMBOL_GPL vmlinux 0x4dc4b2e3 da9052_adc_read_temp +EXPORT_SYMBOL_GPL vmlinux 0x4de17ab3 usb_state_string +EXPORT_SYMBOL_GPL vmlinux 0x4de32258 ata_pci_sff_init_one +EXPORT_SYMBOL_GPL vmlinux 0x4df5b7a4 xen_xlate_remap_gfn_array +EXPORT_SYMBOL_GPL vmlinux 0x4e082a2a trace_event_buffer_reserve +EXPORT_SYMBOL_GPL vmlinux 0x4e109192 ring_buffer_entries +EXPORT_SYMBOL_GPL vmlinux 0x4e187d1f regmap_fields_update_bits +EXPORT_SYMBOL_GPL vmlinux 0x4e1ea947 __list_lru_init +EXPORT_SYMBOL_GPL vmlinux 0x4e242f5f pstore_cannot_block_path +EXPORT_SYMBOL_GPL vmlinux 0x4e523042 md_allow_write +EXPORT_SYMBOL_GPL vmlinux 0x4e57723d apei_read +EXPORT_SYMBOL_GPL vmlinux 0x4e74e625 gnttab_batch_copy +EXPORT_SYMBOL_GPL vmlinux 0x4e7ea64a __rtnl_link_register +EXPORT_SYMBOL_GPL vmlinux 0x4e97a832 tcp_death_row +EXPORT_SYMBOL_GPL vmlinux 0x4eabccfe fb_deferred_io_init +EXPORT_SYMBOL_GPL vmlinux 0x4ecee686 wm8350_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x4ef4fa60 mbox_controller_unregister +EXPORT_SYMBOL_GPL vmlinux 0x4ef5bcf4 perf_swevent_get_recursion_context +EXPORT_SYMBOL_GPL vmlinux 0x4f020dee public_key_verify_signature +EXPORT_SYMBOL_GPL vmlinux 0x4f181953 adp5520_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x4f5b7b01 wm8997_irq +EXPORT_SYMBOL_GPL vmlinux 0x4f67c368 locks_alloc_lock +EXPORT_SYMBOL_GPL vmlinux 0x4f6a07fe show_rcu_gp_kthreads +EXPORT_SYMBOL_GPL vmlinux 0x4f7eeafd __inet_hash_nolisten +EXPORT_SYMBOL_GPL vmlinux 0x4f9a71a7 tty_port_register_device +EXPORT_SYMBOL_GPL vmlinux 0x4fa59529 dequeue_signal +EXPORT_SYMBOL_GPL vmlinux 0x4fb187f6 anon_inode_getfd +EXPORT_SYMBOL_GPL vmlinux 0x4fc08f19 nvdimm_bus_check_dimm_count +EXPORT_SYMBOL_GPL vmlinux 0x4fd4e89d ring_buffer_empty_cpu +EXPORT_SYMBOL_GPL vmlinux 0x4fdc945d sata_deb_timing_normal +EXPORT_SYMBOL_GPL vmlinux 0x4fe1eddf unregister_netevent_notifier +EXPORT_SYMBOL_GPL vmlinux 0x4fe81a22 da903x_update +EXPORT_SYMBOL_GPL vmlinux 0x500ac004 hvc_remove +EXPORT_SYMBOL_GPL vmlinux 0x5026585c xen_irq_from_gsi +EXPORT_SYMBOL_GPL vmlinux 0x5048ad63 rio_unlock_device +EXPORT_SYMBOL_GPL vmlinux 0x507de8c6 add_memory +EXPORT_SYMBOL_GPL vmlinux 0x5086ac3a alg_test +EXPORT_SYMBOL_GPL vmlinux 0x508e5a3d usb_enable_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0x5091b823 ring_buffer_read_start +EXPORT_SYMBOL_GPL vmlinux 0x509e3a5d da903x_write +EXPORT_SYMBOL_GPL vmlinux 0x50aa23eb pingv6_ops +EXPORT_SYMBOL_GPL vmlinux 0x50d1f870 pgprot_writecombine +EXPORT_SYMBOL_GPL vmlinux 0x50e7193a __i2c_first_dynamic_bus_num +EXPORT_SYMBOL_GPL vmlinux 0x50fad434 round_jiffies_up +EXPORT_SYMBOL_GPL vmlinux 0x51277719 rio_mport_read_config_32 +EXPORT_SYMBOL_GPL vmlinux 0x512b1d19 register_kprobe +EXPORT_SYMBOL_GPL vmlinux 0x51361246 put_device +EXPORT_SYMBOL_GPL vmlinux 0x513debea gpiochip_free_own_desc +EXPORT_SYMBOL_GPL vmlinux 0x514e9875 divider_get_val +EXPORT_SYMBOL_GPL vmlinux 0x5187ac4b xen_store_evtchn +EXPORT_SYMBOL_GPL vmlinux 0x518c2fc6 hpet_rtc_dropped_irq +EXPORT_SYMBOL_GPL vmlinux 0x5191bd3c efivar_work +EXPORT_SYMBOL_GPL vmlinux 0x51c91033 inet_ctl_sock_create +EXPORT_SYMBOL_GPL vmlinux 0x51ca62da fat_time_unix2fat +EXPORT_SYMBOL_GPL vmlinux 0x51cd23af acpi_unbind_one +EXPORT_SYMBOL_GPL vmlinux 0x51e5e233 unregister_kretprobe +EXPORT_SYMBOL_GPL vmlinux 0x51f274f6 usb_hcd_map_urb_for_dma +EXPORT_SYMBOL_GPL vmlinux 0x5210a5bf hsi_board_list +EXPORT_SYMBOL_GPL vmlinux 0x522f538b tpm_send +EXPORT_SYMBOL_GPL vmlinux 0x524ed870 ata_sff_lost_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x525d3342 gpiod_is_active_low +EXPORT_SYMBOL_GPL vmlinux 0x5272d8bc __cookie_v4_check +EXPORT_SYMBOL_GPL vmlinux 0x5276f1a2 xen_swiotlb_map_sg_attrs +EXPORT_SYMBOL_GPL vmlinux 0x52899814 fat_free_clusters +EXPORT_SYMBOL_GPL vmlinux 0x52a41251 __cookie_v4_init_sequence +EXPORT_SYMBOL_GPL vmlinux 0x52d8c375 clk_register_divider +EXPORT_SYMBOL_GPL vmlinux 0x52da6e18 pwm_config +EXPORT_SYMBOL_GPL vmlinux 0x5312c7fc __xenbus_register_frontend +EXPORT_SYMBOL_GPL vmlinux 0x53279cfe arizona_dev_init +EXPORT_SYMBOL_GPL vmlinux 0x533f41b0 regulator_list_voltage_linear +EXPORT_SYMBOL_GPL vmlinux 0x5358fc36 ring_buffer_discard_commit +EXPORT_SYMBOL_GPL vmlinux 0x53614269 get_cpu_idle_time_us +EXPORT_SYMBOL_GPL vmlinux 0x536bff57 efivar_entry_add +EXPORT_SYMBOL_GPL vmlinux 0x539acb0b usb_control_msg +EXPORT_SYMBOL_GPL vmlinux 0x539f157b pci_xen_swiotlb_init_late +EXPORT_SYMBOL_GPL vmlinux 0x53a1ee75 disk_get_part +EXPORT_SYMBOL_GPL vmlinux 0x53a5183d netlink_remove_tap +EXPORT_SYMBOL_GPL vmlinux 0x53b77b61 rtnl_link_register +EXPORT_SYMBOL_GPL vmlinux 0x53b7c0b1 dev_pm_enable_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0x53bd10a6 securityfs_remove +EXPORT_SYMBOL_GPL vmlinux 0x53cad526 fib_rules_unregister +EXPORT_SYMBOL_GPL vmlinux 0x53d5d073 pinctrl_put +EXPORT_SYMBOL_GPL vmlinux 0x53dde04f ip6_sk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x53eb2403 acpi_dma_controller_free +EXPORT_SYMBOL_GPL vmlinux 0x53fa5953 ip6_push_pending_frames +EXPORT_SYMBOL_GPL vmlinux 0x541bd60a irq_work_run +EXPORT_SYMBOL_GPL vmlinux 0x54215db5 visitor64 +EXPORT_SYMBOL_GPL vmlinux 0x5421c300 ata_qc_complete_multiple +EXPORT_SYMBOL_GPL vmlinux 0x5425d145 bit_wait_timeout +EXPORT_SYMBOL_GPL vmlinux 0x54283c6d pci_check_and_mask_intx +EXPORT_SYMBOL_GPL vmlinux 0x54436800 dev_pm_put_subsys_data +EXPORT_SYMBOL_GPL vmlinux 0x5454966f sysfs_remove_group +EXPORT_SYMBOL_GPL vmlinux 0x54592da2 dma_buf_attach +EXPORT_SYMBOL_GPL vmlinux 0x5460c8d8 fsnotify_get_cookie +EXPORT_SYMBOL_GPL vmlinux 0x5462d14c modify_user_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x54740eb7 get_cpu_idle_time +EXPORT_SYMBOL_GPL vmlinux 0x547f5b83 set_primary_fwnode +EXPORT_SYMBOL_GPL vmlinux 0x54836e85 regmap_get_val_bytes +EXPORT_SYMBOL_GPL vmlinux 0x54851542 usb_alloc_dev +EXPORT_SYMBOL_GPL vmlinux 0x54905d3e phy_pm_runtime_allow +EXPORT_SYMBOL_GPL vmlinux 0x549525ef handle_nested_irq +EXPORT_SYMBOL_GPL vmlinux 0x5495ad5d mddev_init +EXPORT_SYMBOL_GPL vmlinux 0x549fab89 xen_swiotlb_unmap_sg_attrs +EXPORT_SYMBOL_GPL vmlinux 0x54abe438 crypto_givcipher_type +EXPORT_SYMBOL_GPL vmlinux 0x54b38ba6 pinctrl_utils_add_map_configs +EXPORT_SYMBOL_GPL vmlinux 0x54c602a5 xen_remap_domain_mfn_range +EXPORT_SYMBOL_GPL vmlinux 0x54cf3a77 sysfs_remove_bin_file +EXPORT_SYMBOL_GPL vmlinux 0x54d46690 uart_parse_earlycon +EXPORT_SYMBOL_GPL vmlinux 0x5501dd73 alarm_expires_remaining +EXPORT_SYMBOL_GPL vmlinux 0x550ce709 pat_enabled +EXPORT_SYMBOL_GPL vmlinux 0x550fbf98 clk_mux_ops +EXPORT_SYMBOL_GPL vmlinux 0x5526faea regulator_disable_deferred +EXPORT_SYMBOL_GPL vmlinux 0x553a453e sdio_set_host_pm_flags +EXPORT_SYMBOL_GPL vmlinux 0x553b49a4 cpufreq_get_driver_data +EXPORT_SYMBOL_GPL vmlinux 0x55417264 unregister_vt_notifier +EXPORT_SYMBOL_GPL vmlinux 0x55526907 xen_features +EXPORT_SYMBOL_GPL vmlinux 0x55564753 pm_generic_freeze_noirq +EXPORT_SYMBOL_GPL vmlinux 0x556e4390 clk_get_rate +EXPORT_SYMBOL_GPL vmlinux 0x55784228 regmap_irq_get_virq +EXPORT_SYMBOL_GPL vmlinux 0x55863955 spi_async +EXPORT_SYMBOL_GPL vmlinux 0x558e8228 crypto_tfm_in_queue +EXPORT_SYMBOL_GPL vmlinux 0x559dc4a5 pci_stop_root_bus +EXPORT_SYMBOL_GPL vmlinux 0x55a3a0ea bus_register +EXPORT_SYMBOL_GPL vmlinux 0x55c4a3e1 devm_regulator_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x55caa535 wakeup_source_add +EXPORT_SYMBOL_GPL vmlinux 0x56256e8a orderly_poweroff +EXPORT_SYMBOL_GPL vmlinux 0x56310925 regulator_mode_to_status +EXPORT_SYMBOL_GPL vmlinux 0x563797b5 tpm_calc_ordinal_duration +EXPORT_SYMBOL_GPL vmlinux 0x56398615 mark_tsc_unstable +EXPORT_SYMBOL_GPL vmlinux 0x563e0a7d regulator_set_voltage +EXPORT_SYMBOL_GPL vmlinux 0x5641485b tty_termios_encode_baud_rate +EXPORT_SYMBOL_GPL vmlinux 0x5654f836 erst_get_record_id_next +EXPORT_SYMBOL_GPL vmlinux 0x565b6892 uuid_le_gen +EXPORT_SYMBOL_GPL vmlinux 0x5667ec02 bus_find_device +EXPORT_SYMBOL_GPL vmlinux 0x56886b19 scatterwalk_map +EXPORT_SYMBOL_GPL vmlinux 0x56947347 dmi_walk +EXPORT_SYMBOL_GPL vmlinux 0x569f0711 alarm_start_relative +EXPORT_SYMBOL_GPL vmlinux 0x56d697ce cpu_up +EXPORT_SYMBOL_GPL vmlinux 0x56e37743 xenbus_grant_ring +EXPORT_SYMBOL_GPL vmlinux 0x56e75d47 klist_node_attached +EXPORT_SYMBOL_GPL vmlinux 0x57016a65 kobject_create_and_add +EXPORT_SYMBOL_GPL vmlinux 0x57231f45 ring_buffer_record_on +EXPORT_SYMBOL_GPL vmlinux 0x572e2909 usb_unpoison_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x5735513d srcu_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x574115bb xenbus_dev_cancel +EXPORT_SYMBOL_GPL vmlinux 0x57533403 pci_get_hp_params +EXPORT_SYMBOL_GPL vmlinux 0x575c5f94 execute_in_process_context +EXPORT_SYMBOL_GPL vmlinux 0x5779d445 xenbus_exists +EXPORT_SYMBOL_GPL vmlinux 0x5790e7a0 pci_unlock_rescan_remove +EXPORT_SYMBOL_GPL vmlinux 0x579d17e9 ipv6_proxy_select_ident +EXPORT_SYMBOL_GPL vmlinux 0x579e0bf5 rtnl_unregister_all +EXPORT_SYMBOL_GPL vmlinux 0x57a07d64 ehci_suspend +EXPORT_SYMBOL_GPL vmlinux 0x57c39727 kdb_register_flags +EXPORT_SYMBOL_GPL vmlinux 0x57c4941b blk_mq_free_hctx_request +EXPORT_SYMBOL_GPL vmlinux 0x57e8f6cb rio_lock_device +EXPORT_SYMBOL_GPL vmlinux 0x57ea3d7a devres_remove_group +EXPORT_SYMBOL_GPL vmlinux 0x57f1597b led_classdev_resume +EXPORT_SYMBOL_GPL vmlinux 0x57f8062c acpi_dev_resource_io +EXPORT_SYMBOL_GPL vmlinux 0x58273cb4 agp_remove_bridge +EXPORT_SYMBOL_GPL vmlinux 0x58292e5f clk_fixed_factor_ops +EXPORT_SYMBOL_GPL vmlinux 0x58488004 component_unbind_all +EXPORT_SYMBOL_GPL vmlinux 0x585704ab aer_recover_queue +EXPORT_SYMBOL_GPL vmlinux 0x58643ad0 pci_cfg_access_trylock +EXPORT_SYMBOL_GPL vmlinux 0x5882b315 xenbus_register_driver_common +EXPORT_SYMBOL_GPL vmlinux 0x589bae1a usb_free_urb +EXPORT_SYMBOL_GPL vmlinux 0x589e4569 syscon_regmap_lookup_by_pdevname +EXPORT_SYMBOL_GPL vmlinux 0x58a78602 rhashtable_walk_start +EXPORT_SYMBOL_GPL vmlinux 0x58b44283 sysfs_add_link_to_group +EXPORT_SYMBOL_GPL vmlinux 0x58e19c1e blocking_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x58fd3a31 fsstack_copy_inode_size +EXPORT_SYMBOL_GPL vmlinux 0x58fe9409 rio_inb_pwrite_handler +EXPORT_SYMBOL_GPL vmlinux 0x5901d4c4 devm_pwm_put +EXPORT_SYMBOL_GPL vmlinux 0x590a1252 usb_hcd_is_primary_hcd +EXPORT_SYMBOL_GPL vmlinux 0x590c0ebd irq_set_chip_and_handler_name +EXPORT_SYMBOL_GPL vmlinux 0x595499c6 inet_hash +EXPORT_SYMBOL_GPL vmlinux 0x59621df7 clockevent_delta2ns +EXPORT_SYMBOL_GPL vmlinux 0x59688cf7 atomic_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0x596db8a9 pci_cleanup_aer_uncorrect_error_status +EXPORT_SYMBOL_GPL vmlinux 0x598fe065 wait_for_tpm_stat +EXPORT_SYMBOL_GPL vmlinux 0x59b0882b md_is_badblock +EXPORT_SYMBOL_GPL vmlinux 0x59b2adbf input_ff_effect_from_user +EXPORT_SYMBOL_GPL vmlinux 0x59e2743e call_rcu_bh +EXPORT_SYMBOL_GPL vmlinux 0x59eae699 ring_buffer_read_prepare +EXPORT_SYMBOL_GPL vmlinux 0x59eb8326 blkcg_deactivate_policy +EXPORT_SYMBOL_GPL vmlinux 0x5a0d06e8 do_take_over_console +EXPORT_SYMBOL_GPL vmlinux 0x5a0e0127 crypto_register_algs +EXPORT_SYMBOL_GPL vmlinux 0x5a174d81 inet_getpeer +EXPORT_SYMBOL_GPL vmlinux 0x5a2b1b67 gnttab_free_grant_reference +EXPORT_SYMBOL_GPL vmlinux 0x5a2b9064 device_attach +EXPORT_SYMBOL_GPL vmlinux 0x5a3029fc devm_of_phy_get_by_index +EXPORT_SYMBOL_GPL vmlinux 0x5a3f5b8d posix_acl_create +EXPORT_SYMBOL_GPL vmlinux 0x5a441ebd efi_query_variable_store +EXPORT_SYMBOL_GPL vmlinux 0x5a4b37a1 fpstate_init +EXPORT_SYMBOL_GPL vmlinux 0x5a4b6e4d ata_host_suspend +EXPORT_SYMBOL_GPL vmlinux 0x5a5680b3 __sock_recv_wifi_status +EXPORT_SYMBOL_GPL vmlinux 0x5a7bfe41 crypto_probing_notify +EXPORT_SYMBOL_GPL vmlinux 0x5a8cb582 sata_scr_read +EXPORT_SYMBOL_GPL vmlinux 0x5ac2727f smp_call_function_any +EXPORT_SYMBOL_GPL vmlinux 0x5ae429a1 nd_cmd_out_size +EXPORT_SYMBOL_GPL vmlinux 0x5ae43100 rio_enable_rx_tx_port +EXPORT_SYMBOL_GPL vmlinux 0x5ae84847 sdio_run_irqs +EXPORT_SYMBOL_GPL vmlinux 0x5af03a28 gnttab_claim_grant_reference +EXPORT_SYMBOL_GPL vmlinux 0x5af17a10 gpiochip_find +EXPORT_SYMBOL_GPL vmlinux 0x5af70b3d ata_dev_disable +EXPORT_SYMBOL_GPL vmlinux 0x5b02725a register_user_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x5b14b354 regulator_get_init_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x5b2bf23c ftrace_set_notrace +EXPORT_SYMBOL_GPL vmlinux 0x5b492f3d usb_get_urb +EXPORT_SYMBOL_GPL vmlinux 0x5b5157ff bus_set_iommu +EXPORT_SYMBOL_GPL vmlinux 0x5b654d37 device_property_read_u8_array +EXPORT_SYMBOL_GPL vmlinux 0x5b7057d1 mmu_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0x5b822d6b to_nvdimm +EXPORT_SYMBOL_GPL vmlinux 0x5b850fdc is_skb_forwardable +EXPORT_SYMBOL_GPL vmlinux 0x5b9f3077 power_supply_changed +EXPORT_SYMBOL_GPL vmlinux 0x5bb5ace9 bus_find_device_by_name +EXPORT_SYMBOL_GPL vmlinux 0x5bc7c383 devm_devfreq_event_add_edev +EXPORT_SYMBOL_GPL vmlinux 0x5bce8ca1 __atomic_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x5bd0748f crypto_del_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x5bd48ac5 fb_bl_default_curve +EXPORT_SYMBOL_GPL vmlinux 0x5bdbac4e rcu_unexpedite_gp +EXPORT_SYMBOL_GPL vmlinux 0x5bebd5c2 init_user_ns +EXPORT_SYMBOL_GPL vmlinux 0x5c04fac3 acpi_gpiochip_free_interrupts +EXPORT_SYMBOL_GPL vmlinux 0x5c0a0d9f inet_csk_listen_stop +EXPORT_SYMBOL_GPL vmlinux 0x5c10a2f3 pci_cfg_access_unlock +EXPORT_SYMBOL_GPL vmlinux 0x5c219fc8 phy_power_on +EXPORT_SYMBOL_GPL vmlinux 0x5c4f8770 fsstack_copy_attr_all +EXPORT_SYMBOL_GPL vmlinux 0x5c55362d pwmchip_add_with_polarity +EXPORT_SYMBOL_GPL vmlinux 0x5c5a1b16 tick_broadcast_control +EXPORT_SYMBOL_GPL vmlinux 0x5c66e90c efivar_run_worker +EXPORT_SYMBOL_GPL vmlinux 0x5c8f4ba8 __hvc_resize +EXPORT_SYMBOL_GPL vmlinux 0x5c9802df wm831x_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x5cabdced dev_pm_qos_remove_global_notifier +EXPORT_SYMBOL_GPL vmlinux 0x5cc509a4 nsecs_to_jiffies +EXPORT_SYMBOL_GPL vmlinux 0x5ce6871e cpci_hp_unregister_controller +EXPORT_SYMBOL_GPL vmlinux 0x5cf8a882 __tracepoint_block_rq_remap +EXPORT_SYMBOL_GPL vmlinux 0x5d0b1d28 gpiochip_unlock_as_irq +EXPORT_SYMBOL_GPL vmlinux 0x5d12e48f input_event_to_user +EXPORT_SYMBOL_GPL vmlinux 0x5d19a08a xfrm_audit_state_icvfail +EXPORT_SYMBOL_GPL vmlinux 0x5d366dec gnttab_cancel_free_callback +EXPORT_SYMBOL_GPL vmlinux 0x5d62d212 regmap_get_device +EXPORT_SYMBOL_GPL vmlinux 0x5d8a7594 bpf_prog_get +EXPORT_SYMBOL_GPL vmlinux 0x5d8f4ec9 spi_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x5d940c38 nvdimm_attribute_group +EXPORT_SYMBOL_GPL vmlinux 0x5d9b9eb0 pm_generic_restore +EXPORT_SYMBOL_GPL vmlinux 0x5da67adc zs_compact +EXPORT_SYMBOL_GPL vmlinux 0x5daa4279 ping_seq_next +EXPORT_SYMBOL_GPL vmlinux 0x5db1c1d3 __tracepoint_block_split +EXPORT_SYMBOL_GPL vmlinux 0x5dbcfa4f boot_cpu_physical_apicid +EXPORT_SYMBOL_GPL vmlinux 0x5dcd7160 trace_seq_vprintf +EXPORT_SYMBOL_GPL vmlinux 0x5deea3df unregister_ftrace_function +EXPORT_SYMBOL_GPL vmlinux 0x5df81013 cpuidle_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x5dfc84e5 tpm2_do_selftest +EXPORT_SYMBOL_GPL vmlinux 0x5e37178f platform_bus +EXPORT_SYMBOL_GPL vmlinux 0x5e3d30e6 crypto_unregister_alg +EXPORT_SYMBOL_GPL vmlinux 0x5e4bcdd1 xenbus_map_ring +EXPORT_SYMBOL_GPL vmlinux 0x5e51cd74 swiotlb_nr_tbl +EXPORT_SYMBOL_GPL vmlinux 0x5e65c984 rio_mport_class +EXPORT_SYMBOL_GPL vmlinux 0x5e69edf3 regulator_map_voltage_iterate +EXPORT_SYMBOL_GPL vmlinux 0x5e6e51d7 tasklet_hrtimer_init +EXPORT_SYMBOL_GPL vmlinux 0x5e7304f1 vfs_setlease +EXPORT_SYMBOL_GPL vmlinux 0x5e9a9cf7 ahash_attr_alg +EXPORT_SYMBOL_GPL vmlinux 0x5ea7cf96 shash_ahash_digest +EXPORT_SYMBOL_GPL vmlinux 0x5eccd240 fuse_request_send_background +EXPORT_SYMBOL_GPL vmlinux 0x5ecfd2e0 lp8788_read_multi_bytes +EXPORT_SYMBOL_GPL vmlinux 0x5edf938b max8997_update_reg +EXPORT_SYMBOL_GPL vmlinux 0x5eee82f4 device_for_each_child_reverse +EXPORT_SYMBOL_GPL vmlinux 0x5f1a9dd5 tps6586x_read +EXPORT_SYMBOL_GPL vmlinux 0x5f226035 mod_delayed_work_on +EXPORT_SYMBOL_GPL vmlinux 0x5f2da8c4 check_tsc_unstable +EXPORT_SYMBOL_GPL vmlinux 0x5f360392 pci_ioremap_bar +EXPORT_SYMBOL_GPL vmlinux 0x5f45acba kobject_move +EXPORT_SYMBOL_GPL vmlinux 0x5f508855 fat_getattr +EXPORT_SYMBOL_GPL vmlinux 0x5f543299 wait_on_page_bit_killable_timeout +EXPORT_SYMBOL_GPL vmlinux 0x5f5b2d9d platform_get_resource +EXPORT_SYMBOL_GPL vmlinux 0x5f5c9124 regulator_get +EXPORT_SYMBOL_GPL vmlinux 0x5f79a98b __tracepoint_napi_poll +EXPORT_SYMBOL_GPL vmlinux 0x5f7c8105 blkcg_policy_register +EXPORT_SYMBOL_GPL vmlinux 0x5f9186b8 find_extend_vma +EXPORT_SYMBOL_GPL vmlinux 0x5fc27be9 acpi_dev_irq_flags +EXPORT_SYMBOL_GPL vmlinux 0x5fc49c04 regmap_fields_write +EXPORT_SYMBOL_GPL vmlinux 0x5fc749d2 efivars_unregister +EXPORT_SYMBOL_GPL vmlinux 0x5fdad83d of_pwm_xlate_with_flags +EXPORT_SYMBOL_GPL vmlinux 0x5fdfa2c1 amd_pmu_enable_virt +EXPORT_SYMBOL_GPL vmlinux 0x5fe907b7 hwrng_register +EXPORT_SYMBOL_GPL vmlinux 0x60091316 clk_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x6014ce25 crypto_blkcipher_type +EXPORT_SYMBOL_GPL vmlinux 0x601e5d64 __online_page_increment_counters +EXPORT_SYMBOL_GPL vmlinux 0x60329c91 pm_generic_thaw +EXPORT_SYMBOL_GPL vmlinux 0x604b77e0 devm_add_action +EXPORT_SYMBOL_GPL vmlinux 0x60506751 unmap_kernel_range_noflush +EXPORT_SYMBOL_GPL vmlinux 0x60561bbd alarm_cancel +EXPORT_SYMBOL_GPL vmlinux 0x606e21fd hvc_poll +EXPORT_SYMBOL_GPL vmlinux 0x6090299c blkcipher_walk_virt_block +EXPORT_SYMBOL_GPL vmlinux 0x60930d37 save_mc_for_early +EXPORT_SYMBOL_GPL vmlinux 0x60a13e90 rcu_barrier +EXPORT_SYMBOL_GPL vmlinux 0x60a8240f gpiod_get_direction +EXPORT_SYMBOL_GPL vmlinux 0x60a8c787 gpiod_put +EXPORT_SYMBOL_GPL vmlinux 0x60cd73ed pv_apic_ops +EXPORT_SYMBOL_GPL vmlinux 0x60ea3525 ata_cable_80wire +EXPORT_SYMBOL_GPL vmlinux 0x610030d0 __get_user_pages_fast +EXPORT_SYMBOL_GPL vmlinux 0x61249309 dax_clear_blocks +EXPORT_SYMBOL_GPL vmlinux 0x612da4c1 platform_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x615b4c40 __wake_up_locked +EXPORT_SYMBOL_GPL vmlinux 0x616fa857 irq_gc_mask_set_bit +EXPORT_SYMBOL_GPL vmlinux 0x6170b080 usb_anchor_urb +EXPORT_SYMBOL_GPL vmlinux 0x6196cac4 preempt_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x61b3a7b6 netlink_has_listeners +EXPORT_SYMBOL_GPL vmlinux 0x61c46f88 acpi_bind_one +EXPORT_SYMBOL_GPL vmlinux 0x61cde409 acpi_dev_resource_memory +EXPORT_SYMBOL_GPL vmlinux 0x61dd05b8 __class_create +EXPORT_SYMBOL_GPL vmlinux 0x62042f73 ata_pci_device_do_resume +EXPORT_SYMBOL_GPL vmlinux 0x622c7922 register_oom_notifier +EXPORT_SYMBOL_GPL vmlinux 0x623587ba fib_table_lookup +EXPORT_SYMBOL_GPL vmlinux 0x623803c8 hest_disable +EXPORT_SYMBOL_GPL vmlinux 0x626dfac9 pci_walk_bus +EXPORT_SYMBOL_GPL vmlinux 0x6279831c nvdimm_pmem_region_create +EXPORT_SYMBOL_GPL vmlinux 0x62a1c981 klist_add_head +EXPORT_SYMBOL_GPL vmlinux 0x62ef3d46 __trace_note_message +EXPORT_SYMBOL_GPL vmlinux 0x63150e06 clk_get_parent +EXPORT_SYMBOL_GPL vmlinux 0x631cd59b tpm2_probe +EXPORT_SYMBOL_GPL vmlinux 0x632a8faf platform_device_put +EXPORT_SYMBOL_GPL vmlinux 0x632d94c6 netdev_rx_handler_register +EXPORT_SYMBOL_GPL vmlinux 0x6340f8da skb_segment +EXPORT_SYMBOL_GPL vmlinux 0x634bdb44 serial8250_do_startup +EXPORT_SYMBOL_GPL vmlinux 0x635ec980 apei_exec_post_unmap_gars +EXPORT_SYMBOL_GPL vmlinux 0x63773236 cpufreq_frequency_table_cpuinfo +EXPORT_SYMBOL_GPL vmlinux 0x63815666 ata_host_alloc +EXPORT_SYMBOL_GPL vmlinux 0x638aaee6 phy_destroy +EXPORT_SYMBOL_GPL vmlinux 0x638fe045 unregister_kprobe +EXPORT_SYMBOL_GPL vmlinux 0x6396fe13 list_lru_destroy +EXPORT_SYMBOL_GPL vmlinux 0x63a821c7 sk_detach_filter +EXPORT_SYMBOL_GPL vmlinux 0x63aa4799 xenbus_read_otherend_details +EXPORT_SYMBOL_GPL vmlinux 0x63c0d2db pm_generic_thaw_noirq +EXPORT_SYMBOL_GPL vmlinux 0x63c7cf11 inet_putpeer +EXPORT_SYMBOL_GPL vmlinux 0x63d56c32 driver_create_file +EXPORT_SYMBOL_GPL vmlinux 0x63ea80b3 cper_mem_err_type_str +EXPORT_SYMBOL_GPL vmlinux 0x63fc3686 wm5110_spi_regmap +EXPORT_SYMBOL_GPL vmlinux 0x6403f8bb skb_zerocopy_headlen +EXPORT_SYMBOL_GPL vmlinux 0x6404f0bf xen_unregister_device_domain_owner +EXPORT_SYMBOL_GPL vmlinux 0x6410e160 ktime_mono_to_any +EXPORT_SYMBOL_GPL vmlinux 0x6411770c remove_irq +EXPORT_SYMBOL_GPL vmlinux 0x64318593 acpi_dev_filter_resource_type +EXPORT_SYMBOL_GPL vmlinux 0x645f1535 device_initialize +EXPORT_SYMBOL_GPL vmlinux 0x64705ebe acpi_dev_get_property_reference +EXPORT_SYMBOL_GPL vmlinux 0x6473fc79 skb_copy_ubufs +EXPORT_SYMBOL_GPL vmlinux 0x647ec8b4 xen_swiotlb_sync_sg_for_cpu +EXPORT_SYMBOL_GPL vmlinux 0x6488caa7 blk_add_request_payload +EXPORT_SYMBOL_GPL vmlinux 0x64a37961 sdio_release_host +EXPORT_SYMBOL_GPL vmlinux 0x64b7069e apei_mce_report_mem_error +EXPORT_SYMBOL_GPL vmlinux 0x64c22be9 ata_sff_tf_read +EXPORT_SYMBOL_GPL vmlinux 0x64cc7fee usb_mon_register +EXPORT_SYMBOL_GPL vmlinux 0x64d11537 pm_runtime_autosuspend_expiration +EXPORT_SYMBOL_GPL vmlinux 0x64d23d16 mbox_client_txdone +EXPORT_SYMBOL_GPL vmlinux 0x64dd8730 acpi_dev_get_property_array +EXPORT_SYMBOL_GPL vmlinux 0x64e7a897 ata_scsi_unlock_native_capacity +EXPORT_SYMBOL_GPL vmlinux 0x64f5ea37 devfreq_event_set_event +EXPORT_SYMBOL_GPL vmlinux 0x6527a231 dbgp_external_startup +EXPORT_SYMBOL_GPL vmlinux 0x6536953b btree_last +EXPORT_SYMBOL_GPL vmlinux 0x654fab11 sata_set_spd +EXPORT_SYMBOL_GPL vmlinux 0x656cf3f2 regmap_update_bits_check +EXPORT_SYMBOL_GPL vmlinux 0x6578c1cb pci_generic_config_read +EXPORT_SYMBOL_GPL vmlinux 0x658c8186 amd_get_nb_id +EXPORT_SYMBOL_GPL vmlinux 0x6591670f rio_release_inb_mbox +EXPORT_SYMBOL_GPL vmlinux 0x65a7ea47 sata_pmp_qc_defer_cmd_switch +EXPORT_SYMBOL_GPL vmlinux 0x65bbbc78 schedule_hrtimeout_range +EXPORT_SYMBOL_GPL vmlinux 0x65ca5477 init_uts_ns +EXPORT_SYMBOL_GPL vmlinux 0x65ccb6f0 call_netevent_notifiers +EXPORT_SYMBOL_GPL vmlinux 0x65e72a61 dma_buf_detach +EXPORT_SYMBOL_GPL vmlinux 0x6609ca42 ping_seq_stop +EXPORT_SYMBOL_GPL vmlinux 0x661601de sprint_symbol +EXPORT_SYMBOL_GPL vmlinux 0x662a1997 tpm2_calc_ordinal_duration +EXPORT_SYMBOL_GPL vmlinux 0x6630306c acpi_find_child_device +EXPORT_SYMBOL_GPL vmlinux 0x6636a178 nvdimm_create +EXPORT_SYMBOL_GPL vmlinux 0x6636c3c9 irq_set_vcpu_affinity +EXPORT_SYMBOL_GPL vmlinux 0x663c46bc sysfs_remove_mount_point +EXPORT_SYMBOL_GPL vmlinux 0x6660373e ata_bmdma_port_start +EXPORT_SYMBOL_GPL vmlinux 0x6667d282 tcp_register_congestion_control +EXPORT_SYMBOL_GPL vmlinux 0x666c0b39 pinctrl_utils_add_map_mux +EXPORT_SYMBOL_GPL vmlinux 0x666f0a76 clk_register_gpio_gate +EXPORT_SYMBOL_GPL vmlinux 0x668402aa crypto_put_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x66c3d703 handle_simple_irq +EXPORT_SYMBOL_GPL vmlinux 0x66c6b8a7 tcp_ca_get_name_by_key +EXPORT_SYMBOL_GPL vmlinux 0x66d87d38 symbol_put_addr +EXPORT_SYMBOL_GPL vmlinux 0x66f1feed crypto_shash_finup +EXPORT_SYMBOL_GPL vmlinux 0x66f952e0 fwnode_property_read_string +EXPORT_SYMBOL_GPL vmlinux 0x6722ac81 inet6_destroy_sock +EXPORT_SYMBOL_GPL vmlinux 0x6724d167 ata_base_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x6730e507 pm_runtime_forbid +EXPORT_SYMBOL_GPL vmlinux 0x6739a503 balloon_set_new_target +EXPORT_SYMBOL_GPL vmlinux 0x67477d41 nd_blk_region_provider_data +EXPORT_SYMBOL_GPL vmlinux 0x674e13e1 public_key_destroy +EXPORT_SYMBOL_GPL vmlinux 0x6754ac18 clk_get_parent_by_index +EXPORT_SYMBOL_GPL vmlinux 0x67708375 devm_mdiobus_free +EXPORT_SYMBOL_GPL vmlinux 0x6778db3a __put_net +EXPORT_SYMBOL_GPL vmlinux 0x67955ce6 profile_hits +EXPORT_SYMBOL_GPL vmlinux 0x67b32300 vfs_truncate +EXPORT_SYMBOL_GPL vmlinux 0x67c8e668 user_describe +EXPORT_SYMBOL_GPL vmlinux 0x67e74194 regmap_exit +EXPORT_SYMBOL_GPL vmlinux 0x680b404d vfs_lock_file +EXPORT_SYMBOL_GPL vmlinux 0x680bed5f rio_mport_write_config_8 +EXPORT_SYMBOL_GPL vmlinux 0x680c54c7 ipv6_recv_error +EXPORT_SYMBOL_GPL vmlinux 0x68338745 acpi_pci_check_ejectable +EXPORT_SYMBOL_GPL vmlinux 0x683c85ad __wake_up_locked_key +EXPORT_SYMBOL_GPL vmlinux 0x684ae879 rio_request_inb_pwrite +EXPORT_SYMBOL_GPL vmlinux 0x685f88e7 mbox_controller_register +EXPORT_SYMBOL_GPL vmlinux 0x68607454 pm_generic_freeze +EXPORT_SYMBOL_GPL vmlinux 0x687b497f bpf_prog_create +EXPORT_SYMBOL_GPL vmlinux 0x687c77ef ata_sff_dma_pause +EXPORT_SYMBOL_GPL vmlinux 0x6881c7a1 regcache_cache_bypass +EXPORT_SYMBOL_GPL vmlinux 0x68a86063 cpu_subsys +EXPORT_SYMBOL_GPL vmlinux 0x68b5fb03 efivar_entry_find +EXPORT_SYMBOL_GPL vmlinux 0x68f6417a sdio_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0x691e9132 eventfd_fget +EXPORT_SYMBOL_GPL vmlinux 0x6921aa34 compat_put_timeval +EXPORT_SYMBOL_GPL vmlinux 0x69221e37 kset_create_and_add +EXPORT_SYMBOL_GPL vmlinux 0x6923ce63 irq_work_sync +EXPORT_SYMBOL_GPL vmlinux 0x69447467 ring_buffer_write +EXPORT_SYMBOL_GPL vmlinux 0x6946ee0f gpiod_count +EXPORT_SYMBOL_GPL vmlinux 0x697c5d0d tracing_snapshot_alloc +EXPORT_SYMBOL_GPL vmlinux 0x698a899f ring_buffer_peek +EXPORT_SYMBOL_GPL vmlinux 0x6990c49b uprobe_register +EXPORT_SYMBOL_GPL vmlinux 0x69993c28 unregister_net_sysctl_table +EXPORT_SYMBOL_GPL vmlinux 0x69aadc58 sdev_evt_send_simple +EXPORT_SYMBOL_GPL vmlinux 0x69bc440a unix_outq_len +EXPORT_SYMBOL_GPL vmlinux 0x69bd430f pm_generic_suspend_late +EXPORT_SYMBOL_GPL vmlinux 0x69ddd30b power_supply_am_i_supplied +EXPORT_SYMBOL_GPL vmlinux 0x6a0387cb of_phy_get +EXPORT_SYMBOL_GPL vmlinux 0x6a1733eb iommu_group_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x6a32d2b4 irq_alloc_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x6a44aeab posix_timers_register_clock +EXPORT_SYMBOL_GPL vmlinux 0x6a4f623b mmu_notifier_synchronize +EXPORT_SYMBOL_GPL vmlinux 0x6a5fb566 rcu_sched_force_quiescent_state +EXPORT_SYMBOL_GPL vmlinux 0x6a63c537 alloc_page_buffers +EXPORT_SYMBOL_GPL vmlinux 0x6a6761df component_add +EXPORT_SYMBOL_GPL vmlinux 0x6a6b300e arizona_set_irq_wake +EXPORT_SYMBOL_GPL vmlinux 0x6a6c6263 simple_attr_read +EXPORT_SYMBOL_GPL vmlinux 0x6a6cafd2 ring_buffer_read_page +EXPORT_SYMBOL_GPL vmlinux 0x6a8441be cpci_hp_start +EXPORT_SYMBOL_GPL vmlinux 0x6aac82d7 usb_free_coherent +EXPORT_SYMBOL_GPL vmlinux 0x6ab1b8bb usb_unlink_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x6acad21f acpi_get_cpuid +EXPORT_SYMBOL_GPL vmlinux 0x6b05f983 ata_dummy_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x6b0dc565 xen_set_irq_priority +EXPORT_SYMBOL_GPL vmlinux 0x6b29a1fa ring_buffer_event_length +EXPORT_SYMBOL_GPL vmlinux 0x6b30c777 perf_pmu_migrate_context +EXPORT_SYMBOL_GPL vmlinux 0x6b3eaad6 alarm_start +EXPORT_SYMBOL_GPL vmlinux 0x6b46dd7f relay_open +EXPORT_SYMBOL_GPL vmlinux 0x6b615738 inet_csk_reqsk_queue_hash_add +EXPORT_SYMBOL_GPL vmlinux 0x6b815d56 pci_find_next_capability +EXPORT_SYMBOL_GPL vmlinux 0x6b81c38b power_supply_unreg_notifier +EXPORT_SYMBOL_GPL vmlinux 0x6b9eff9f crypto_unregister_shash +EXPORT_SYMBOL_GPL vmlinux 0x6bb363aa xenbus_dev_suspend +EXPORT_SYMBOL_GPL vmlinux 0x6bd52c47 usb_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0x6bebf961 swiotlb_tbl_map_single +EXPORT_SYMBOL_GPL vmlinux 0x6bf1b90d dmi_memdev_name +EXPORT_SYMBOL_GPL vmlinux 0x6c07d933 add_uevent_var +EXPORT_SYMBOL_GPL vmlinux 0x6c1251fd apei_exec_read_register +EXPORT_SYMBOL_GPL vmlinux 0x6c389761 acpi_bus_get_private_data +EXPORT_SYMBOL_GPL vmlinux 0x6c4b6684 reset_control_assert +EXPORT_SYMBOL_GPL vmlinux 0x6c4ef4c3 ata_wait_after_reset +EXPORT_SYMBOL_GPL vmlinux 0x6c655913 register_acpi_hed_notifier +EXPORT_SYMBOL_GPL vmlinux 0x6c66bb91 regmap_register_patch +EXPORT_SYMBOL_GPL vmlinux 0x6c6d3b29 crypto_unregister_ahash +EXPORT_SYMBOL_GPL vmlinux 0x6c7e5a3f ata_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x6ca4bf88 async_synchronize_full_domain +EXPORT_SYMBOL_GPL vmlinux 0x6ca702aa rio_release_outb_dbell +EXPORT_SYMBOL_GPL vmlinux 0x6cbe3ba7 crypto_alloc_ahash +EXPORT_SYMBOL_GPL vmlinux 0x6cc4d534 sock_diag_register +EXPORT_SYMBOL_GPL vmlinux 0x6cc8a84b regulator_allow_bypass +EXPORT_SYMBOL_GPL vmlinux 0x6cd21997 ata_tf_to_fis +EXPORT_SYMBOL_GPL vmlinux 0x6cdbeae6 ata_acpi_stm +EXPORT_SYMBOL_GPL vmlinux 0x6cdfda26 register_virtio_driver +EXPORT_SYMBOL_GPL vmlinux 0x6ce1a36e nd_device_attribute_group +EXPORT_SYMBOL_GPL vmlinux 0x6ce90a27 usb_enable_ltm +EXPORT_SYMBOL_GPL vmlinux 0x6cfb84d2 xenbus_dev_is_online +EXPORT_SYMBOL_GPL vmlinux 0x6d01534b dax_fault +EXPORT_SYMBOL_GPL vmlinux 0x6d172fb7 swiotlb_unmap_page +EXPORT_SYMBOL_GPL vmlinux 0x6d1c7905 tty_port_tty_hangup +EXPORT_SYMBOL_GPL vmlinux 0x6d2fc5a6 net_namespace_list +EXPORT_SYMBOL_GPL vmlinux 0x6d4b4366 task_cls_state +EXPORT_SYMBOL_GPL vmlinux 0x6d4b4df9 ata_bmdma_port_intr +EXPORT_SYMBOL_GPL vmlinux 0x6d5160b9 __udp4_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x6d5c3765 inet_twsk_alloc +EXPORT_SYMBOL_GPL vmlinux 0x6dad4842 pm_generic_suspend_noirq +EXPORT_SYMBOL_GPL vmlinux 0x6dbd441f usb_phy_set_event +EXPORT_SYMBOL_GPL vmlinux 0x6ddb7bcd exportfs_decode_fh +EXPORT_SYMBOL_GPL vmlinux 0x6deb2dfb usb_hub_find_child +EXPORT_SYMBOL_GPL vmlinux 0x6e03c747 devm_regulator_get_optional +EXPORT_SYMBOL_GPL vmlinux 0x6e03fd4b ata_eh_analyze_ncq_error +EXPORT_SYMBOL_GPL vmlinux 0x6e04a077 usb_bind_phy +EXPORT_SYMBOL_GPL vmlinux 0x6e1e925a tty_port_link_device +EXPORT_SYMBOL_GPL vmlinux 0x6e3cb940 crypto_lookup_template +EXPORT_SYMBOL_GPL vmlinux 0x6e42f614 __rio_local_read_config_8 +EXPORT_SYMBOL_GPL vmlinux 0x6e58ddf0 gnttab_end_foreign_transfer_ref +EXPORT_SYMBOL_GPL vmlinux 0x6e666213 __efivar_entry_iter +EXPORT_SYMBOL_GPL vmlinux 0x6e6b5e94 irq_create_strict_mappings +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 0x6ea98361 ioremap_page_range +EXPORT_SYMBOL_GPL vmlinux 0x6f1505d1 scsi_queue_work +EXPORT_SYMBOL_GPL vmlinux 0x6f1ee69e kgdb_unregister_io_module +EXPORT_SYMBOL_GPL vmlinux 0x6f2c35f0 regmap_fields_read +EXPORT_SYMBOL_GPL vmlinux 0x6f402ba6 acpi_dev_resource_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x6f412624 mmc_get_ext_csd +EXPORT_SYMBOL_GPL vmlinux 0x6f499cb0 fuse_direct_io +EXPORT_SYMBOL_GPL vmlinux 0x6f707e3e dma_buf_map_attachment +EXPORT_SYMBOL_GPL vmlinux 0x6f829e43 pci_user_read_config_dword +EXPORT_SYMBOL_GPL vmlinux 0x6fab276c ata_dev_next +EXPORT_SYMBOL_GPL vmlinux 0x6fe3d8cf ktime_add_safe +EXPORT_SYMBOL_GPL vmlinux 0x6ff607b6 crypto_get_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x7015b36d driver_find_device +EXPORT_SYMBOL_GPL vmlinux 0x7027a7bf da903x_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x7056b6f2 __clk_get_name +EXPORT_SYMBOL_GPL vmlinux 0x7065493d led_classdev_suspend +EXPORT_SYMBOL_GPL vmlinux 0x70761622 klp_enable_patch +EXPORT_SYMBOL_GPL vmlinux 0x707ff1bb ata_xfer_mask2mode +EXPORT_SYMBOL_GPL vmlinux 0x70820d7f acpi_subsys_resume_early +EXPORT_SYMBOL_GPL vmlinux 0x70838e0f ata_do_eh +EXPORT_SYMBOL_GPL vmlinux 0x709b0278 devm_regulator_get_exclusive +EXPORT_SYMBOL_GPL vmlinux 0x70be4a1a kobject_get_path +EXPORT_SYMBOL_GPL vmlinux 0x70bffecc led_trigger_show +EXPORT_SYMBOL_GPL vmlinux 0x70c688a4 shash_free_instance +EXPORT_SYMBOL_GPL vmlinux 0x70cbe910 simple_attr_write +EXPORT_SYMBOL_GPL vmlinux 0x70cf032f usb_hcd_irq +EXPORT_SYMBOL_GPL vmlinux 0x70db6132 usb_poison_urb +EXPORT_SYMBOL_GPL vmlinux 0x71047d92 pwmchip_remove +EXPORT_SYMBOL_GPL vmlinux 0x710c73b6 crypto_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x71270332 xenbus_frontend_closed +EXPORT_SYMBOL_GPL vmlinux 0x715fd3e9 cpufreq_generic_init +EXPORT_SYMBOL_GPL vmlinux 0x716265c7 debugfs_initialized +EXPORT_SYMBOL_GPL vmlinux 0x718ea88a thermal_cooling_device_register +EXPORT_SYMBOL_GPL vmlinux 0x71954d4c regmap_get_val_endian +EXPORT_SYMBOL_GPL vmlinux 0x719cd571 fuse_sync_release +EXPORT_SYMBOL_GPL vmlinux 0x719e17ff clk_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0x71c362c6 da9052_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0x71ca0570 irq_domain_associate_many +EXPORT_SYMBOL_GPL vmlinux 0x71d1888d extcon_set_cable_state +EXPORT_SYMBOL_GPL vmlinux 0x71dc9998 crypto_il_tab +EXPORT_SYMBOL_GPL vmlinux 0x7229effe usb_remove_phy +EXPORT_SYMBOL_GPL vmlinux 0x72431b3d tpm_chip_register +EXPORT_SYMBOL_GPL vmlinux 0x72741f25 trace_vbprintk +EXPORT_SYMBOL_GPL vmlinux 0x7278d328 all_vm_events +EXPORT_SYMBOL_GPL vmlinux 0x72b24f6d fuse_conn_get +EXPORT_SYMBOL_GPL vmlinux 0x72ceb8f6 phy_pm_runtime_put_sync +EXPORT_SYMBOL_GPL vmlinux 0x72cf714d klist_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x72e2a5ef dummy_con +EXPORT_SYMBOL_GPL vmlinux 0x72fef4d4 spi_bus_lock +EXPORT_SYMBOL_GPL vmlinux 0x73013896 xenbus_printf +EXPORT_SYMBOL_GPL vmlinux 0x731094ac regmap_raw_read +EXPORT_SYMBOL_GPL vmlinux 0x7312a154 crypto_aead_setkey +EXPORT_SYMBOL_GPL vmlinux 0x731dba7a xen_domain_type +EXPORT_SYMBOL_GPL vmlinux 0x732dbcfb serial8250_get_port +EXPORT_SYMBOL_GPL vmlinux 0x732e3333 x509_cert_parse +EXPORT_SYMBOL_GPL vmlinux 0x73437b1a iommu_domain_free +EXPORT_SYMBOL_GPL vmlinux 0x73510609 fl6_update_dst +EXPORT_SYMBOL_GPL vmlinux 0x738f5136 napi_by_id +EXPORT_SYMBOL_GPL vmlinux 0x73a48b4a ata_sff_std_ports +EXPORT_SYMBOL_GPL vmlinux 0x73afb372 usb_show_dynids +EXPORT_SYMBOL_GPL vmlinux 0x73c2554f __iowrite64_copy +EXPORT_SYMBOL_GPL vmlinux 0x73c832f2 ata_dev_classify +EXPORT_SYMBOL_GPL vmlinux 0x73d69364 ring_buffer_change_overwrite +EXPORT_SYMBOL_GPL vmlinux 0x73d6a9a2 md_do_sync +EXPORT_SYMBOL_GPL vmlinux 0x73e4dfad pinctrl_add_gpio_ranges +EXPORT_SYMBOL_GPL vmlinux 0x73ef4bec get_net_ns_by_fd +EXPORT_SYMBOL_GPL vmlinux 0x73f36283 sata_scr_write +EXPORT_SYMBOL_GPL vmlinux 0x74021c04 xen_swiotlb_free_coherent +EXPORT_SYMBOL_GPL vmlinux 0x743a165e ata_pack_xfermask +EXPORT_SYMBOL_GPL vmlinux 0x74457e56 apei_resources_fini +EXPORT_SYMBOL_GPL vmlinux 0x744b48a5 regmap_update_bits_async +EXPORT_SYMBOL_GPL vmlinux 0x7452adff user_return_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x7454f525 debugfs_create_atomic_t +EXPORT_SYMBOL_GPL vmlinux 0x7464ea38 dev_pm_qos_add_global_notifier +EXPORT_SYMBOL_GPL vmlinux 0x746a42de ping_getfrag +EXPORT_SYMBOL_GPL vmlinux 0x748d801a pcap_adc_sync +EXPORT_SYMBOL_GPL vmlinux 0x7491efc5 crypto_hash_walk_done +EXPORT_SYMBOL_GPL vmlinux 0x74a3423f virtqueue_add_sgs +EXPORT_SYMBOL_GPL vmlinux 0x74a3843e synchronize_srcu_expedited +EXPORT_SYMBOL_GPL vmlinux 0x74b5ea68 lcm_not_zero +EXPORT_SYMBOL_GPL vmlinux 0x74baf17a tracing_is_on +EXPORT_SYMBOL_GPL vmlinux 0x74c08941 kvm_async_pf_task_wake +EXPORT_SYMBOL_GPL vmlinux 0x74deb10c used_vectors +EXPORT_SYMBOL_GPL vmlinux 0x75133f6e visitor128 +EXPORT_SYMBOL_GPL vmlinux 0x7515c4dc crypto_create_tfm +EXPORT_SYMBOL_GPL vmlinux 0x7521afb6 leave_mm +EXPORT_SYMBOL_GPL vmlinux 0x7522f3ba irq_modify_status +EXPORT_SYMBOL_GPL vmlinux 0x7524499f tpm2_gen_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x75383e7f spi_alloc_master +EXPORT_SYMBOL_GPL vmlinux 0x75494799 print_context_stack_bp +EXPORT_SYMBOL_GPL vmlinux 0x757a0ffa gnttab_unmap_refs_async +EXPORT_SYMBOL_GPL vmlinux 0x757b49d2 kmsg_dump_get_line +EXPORT_SYMBOL_GPL vmlinux 0x758a782e blk_fill_rwbs +EXPORT_SYMBOL_GPL vmlinux 0x7597519b restore_online_page_callback +EXPORT_SYMBOL_GPL vmlinux 0x75c1a37e xfrm_audit_policy_add +EXPORT_SYMBOL_GPL vmlinux 0x75c90bc1 usb_ifnum_to_if +EXPORT_SYMBOL_GPL vmlinux 0x75d48bed wm831x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x7604dc3a fat_flush_inodes +EXPORT_SYMBOL_GPL vmlinux 0x760c61e0 raw_seq_stop +EXPORT_SYMBOL_GPL vmlinux 0x760f037f phy_optional_get +EXPORT_SYMBOL_GPL vmlinux 0x762eec11 spi_master_resume +EXPORT_SYMBOL_GPL vmlinux 0x7630ffb6 pin_is_valid +EXPORT_SYMBOL_GPL vmlinux 0x76437689 cleanup_srcu_struct +EXPORT_SYMBOL_GPL vmlinux 0x764b36ce __remove_pages +EXPORT_SYMBOL_GPL vmlinux 0x7663e776 device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x7681946c unregister_pm_notifier +EXPORT_SYMBOL_GPL vmlinux 0x769b91de transport_setup_device +EXPORT_SYMBOL_GPL vmlinux 0x76b015fd gpiochip_request_own_desc +EXPORT_SYMBOL_GPL vmlinux 0x76b9006e devm_acpi_dma_controller_free +EXPORT_SYMBOL_GPL vmlinux 0x76c42e73 skb_gso_transport_seglen +EXPORT_SYMBOL_GPL vmlinux 0x76c5a1d4 regmap_parse_val +EXPORT_SYMBOL_GPL vmlinux 0x76cce63f regulator_set_voltage_time +EXPORT_SYMBOL_GPL vmlinux 0x76d9b876 clk_set_rate +EXPORT_SYMBOL_GPL vmlinux 0x76f900f8 watchdog_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0x7712771a unbind_from_irqhandler +EXPORT_SYMBOL_GPL vmlinux 0x7729cbdd task_handoff_register +EXPORT_SYMBOL_GPL vmlinux 0x772fbcaf trace_buffer_unlock_commit_regs +EXPORT_SYMBOL_GPL vmlinux 0x77339ce0 iommu_get_domain_for_dev +EXPORT_SYMBOL_GPL vmlinux 0x7737c846 i2c_generic_gpio_recovery +EXPORT_SYMBOL_GPL vmlinux 0x774b328e trace_event_raw_init +EXPORT_SYMBOL_GPL vmlinux 0x7754bc11 dm_hold +EXPORT_SYMBOL_GPL vmlinux 0x7757b51a clk_unregister +EXPORT_SYMBOL_GPL vmlinux 0x775a6ef5 kvm_read_and_reset_pf_reason +EXPORT_SYMBOL_GPL vmlinux 0x7773a87e regmap_add_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0x778f18d2 devm_regulator_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x77a68be7 devres_close_group +EXPORT_SYMBOL_GPL vmlinux 0x77abee17 usb_lock_device_for_reset +EXPORT_SYMBOL_GPL vmlinux 0x77bc8b6f usb_phy_gen_create_phy +EXPORT_SYMBOL_GPL vmlinux 0x77dde3fe srcu_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0x77e2d046 device_add +EXPORT_SYMBOL_GPL vmlinux 0x77f666de tracepoint_probe_register +EXPORT_SYMBOL_GPL vmlinux 0x782adb74 hpet_rtc_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x783d0b8f rio_dma_prep_xfer +EXPORT_SYMBOL_GPL vmlinux 0x78575bee atomic_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x7874b5ec unix_table_lock +EXPORT_SYMBOL_GPL vmlinux 0x78793cfa extcon_dev_register +EXPORT_SYMBOL_GPL vmlinux 0x787c882b lzo1x_1_compress +EXPORT_SYMBOL_GPL vmlinux 0x78ae8175 smp_call_function_single_async +EXPORT_SYMBOL_GPL vmlinux 0x78d30c09 dummy_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0x78d3a7c5 tpm2_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x78d93c3c __bpf_prog_free +EXPORT_SYMBOL_GPL vmlinux 0x78fc2722 device_show_bool +EXPORT_SYMBOL_GPL vmlinux 0x7943b574 dev_forward_skb +EXPORT_SYMBOL_GPL vmlinux 0x7944e0fc tracing_off +EXPORT_SYMBOL_GPL vmlinux 0x794b7271 orderly_reboot +EXPORT_SYMBOL_GPL vmlinux 0x796c2d48 dm_get_md +EXPORT_SYMBOL_GPL vmlinux 0x7973b388 fpu__activate_curr +EXPORT_SYMBOL_GPL vmlinux 0x7974b95c component_master_add_with_match +EXPORT_SYMBOL_GPL vmlinux 0x7991fd8d crash_vmclear_loaded_vmcss +EXPORT_SYMBOL_GPL vmlinux 0x79ca7e1c of_phy_simple_xlate +EXPORT_SYMBOL_GPL vmlinux 0x79d9ccbc sysfs_create_bin_file +EXPORT_SYMBOL_GPL vmlinux 0x79defbe1 kthread_should_park +EXPORT_SYMBOL_GPL vmlinux 0x79e69460 intel_iommu_gfx_mapped +EXPORT_SYMBOL_GPL vmlinux 0x79f41d5b try_get_online_cpus +EXPORT_SYMBOL_GPL vmlinux 0x7a093833 set_memory_array_wt +EXPORT_SYMBOL_GPL vmlinux 0x7a2e4b44 ezx_pcap_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x7a319404 clk_register_fixed_rate +EXPORT_SYMBOL_GPL vmlinux 0x7a3a179f usb_find_interface +EXPORT_SYMBOL_GPL vmlinux 0x7a47aaa6 sg_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x7a627d45 add_page_wait_queue +EXPORT_SYMBOL_GPL vmlinux 0x7a6e99f2 rio_add_device +EXPORT_SYMBOL_GPL vmlinux 0x7a944007 rcu_idle_enter +EXPORT_SYMBOL_GPL vmlinux 0x7aa58f5c wm8400_block_read +EXPORT_SYMBOL_GPL vmlinux 0x7aacf5d6 sata_scr_valid +EXPORT_SYMBOL_GPL vmlinux 0x7abb276f inet_csk_addr2sockaddr +EXPORT_SYMBOL_GPL vmlinux 0x7abfd09e kthread_park +EXPORT_SYMBOL_GPL vmlinux 0x7ac1ae41 pci_set_cacheline_size +EXPORT_SYMBOL_GPL vmlinux 0x7ac33eb5 bus_get_device_klist +EXPORT_SYMBOL_GPL vmlinux 0x7ac668a6 devfreq_event_reset_event +EXPORT_SYMBOL_GPL vmlinux 0x7ac8e5b0 acpi_gsi_to_irq +EXPORT_SYMBOL_GPL vmlinux 0x7ad51b25 perf_pmu_register +EXPORT_SYMBOL_GPL vmlinux 0x7ad9a0f5 crypto_unregister_shashes +EXPORT_SYMBOL_GPL vmlinux 0x7b0f1ab3 ring_buffer_free_read_page +EXPORT_SYMBOL_GPL vmlinux 0x7b136ace crypto_ahash_walk_first +EXPORT_SYMBOL_GPL vmlinux 0x7b1d544d edac_handler_set +EXPORT_SYMBOL_GPL vmlinux 0x7b202401 usb_poison_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x7b2ecb4e __pneigh_lookup +EXPORT_SYMBOL_GPL vmlinux 0x7b683848 rio_unregister_scan +EXPORT_SYMBOL_GPL vmlinux 0x7b70ed5c pm_qos_request_active +EXPORT_SYMBOL_GPL vmlinux 0x7b90d1a9 bind_virq_to_irqhandler +EXPORT_SYMBOL_GPL vmlinux 0x7bd38120 __module_text_address +EXPORT_SYMBOL_GPL vmlinux 0x7c0072cf cpci_hp_unregister_bus +EXPORT_SYMBOL_GPL vmlinux 0x7c1abd3e sata_async_notification +EXPORT_SYMBOL_GPL vmlinux 0x7c346357 pkey_algo +EXPORT_SYMBOL_GPL vmlinux 0x7c51b771 regulator_get_linear_step +EXPORT_SYMBOL_GPL vmlinux 0x7c5b6658 dev_get_regmap +EXPORT_SYMBOL_GPL vmlinux 0x7c5da147 __online_page_free +EXPORT_SYMBOL_GPL vmlinux 0x7c9a7371 clk_prepare +EXPORT_SYMBOL_GPL vmlinux 0x7c9f3e69 __tracepoint_add_device_to_group +EXPORT_SYMBOL_GPL vmlinux 0x7ca058d6 serial8250_release_dma +EXPORT_SYMBOL_GPL vmlinux 0x7ca22f18 devm_clk_register +EXPORT_SYMBOL_GPL vmlinux 0x7ca796bf device_register +EXPORT_SYMBOL_GPL vmlinux 0x7cade89a pci_cfg_access_lock +EXPORT_SYMBOL_GPL vmlinux 0x7ccb13dd powercap_register_zone +EXPORT_SYMBOL_GPL vmlinux 0x7cd6f042 cpufreq_get_current_driver +EXPORT_SYMBOL_GPL vmlinux 0x7cd8c6e5 trace_seq_putmem_hex +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 0x7d2f22f8 ata_eh_thaw_port +EXPORT_SYMBOL_GPL vmlinux 0x7d3950c9 dma_request_slave_channel_reason +EXPORT_SYMBOL_GPL vmlinux 0x7d59dd46 pm_wq +EXPORT_SYMBOL_GPL vmlinux 0x7d86afc9 i2c_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0x7d96c44e pci_common_swizzle +EXPORT_SYMBOL_GPL vmlinux 0x7d9ef798 devm_regulator_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x7dab26b6 wm831x_isinkv_values +EXPORT_SYMBOL_GPL vmlinux 0x7dda30af unregister_tracepoint_module_notifier +EXPORT_SYMBOL_GPL vmlinux 0x7de65a03 acpi_lpat_free_conversion_table +EXPORT_SYMBOL_GPL vmlinux 0x7defdc3d pci_restore_ats_state +EXPORT_SYMBOL_GPL vmlinux 0x7df900d1 crypto_alg_extsize +EXPORT_SYMBOL_GPL vmlinux 0x7e000be8 crypto_register_pcomp +EXPORT_SYMBOL_GPL vmlinux 0x7e02ee6a regulator_is_enabled_regmap +EXPORT_SYMBOL_GPL vmlinux 0x7e2244fe arizona_clk32k_enable +EXPORT_SYMBOL_GPL vmlinux 0x7e2d3353 pci_try_reset_bus +EXPORT_SYMBOL_GPL vmlinux 0x7e35c945 nf_queue_entry_get_refs +EXPORT_SYMBOL_GPL vmlinux 0x7e374ef7 subsys_find_device_by_id +EXPORT_SYMBOL_GPL vmlinux 0x7e42776d bitmap_load +EXPORT_SYMBOL_GPL vmlinux 0x7e64181d usb_calc_bus_time +EXPORT_SYMBOL_GPL vmlinux 0x7e7c0767 task_active_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0x7e807892 crypto_unregister_aead +EXPORT_SYMBOL_GPL vmlinux 0x7e80c6e2 usb_get_descriptor +EXPORT_SYMBOL_GPL vmlinux 0x7ea1a2bc probe_kernel_write +EXPORT_SYMBOL_GPL vmlinux 0x7ebffd04 usb_create_hcd +EXPORT_SYMBOL_GPL vmlinux 0x7edae6a8 ata_eh_qc_complete +EXPORT_SYMBOL_GPL vmlinux 0x7edc75a5 rio_attach_device +EXPORT_SYMBOL_GPL vmlinux 0x7f10d9d6 aead_geniv_free +EXPORT_SYMBOL_GPL vmlinux 0x7f13d491 pm_qos_remove_request +EXPORT_SYMBOL_GPL vmlinux 0x7f475027 ping_close +EXPORT_SYMBOL_GPL vmlinux 0x7f4c4465 sysfs_remove_link +EXPORT_SYMBOL_GPL vmlinux 0x7f4e68f8 pm_generic_resume_early +EXPORT_SYMBOL_GPL vmlinux 0x7f6c4ec5 mm_kobj +EXPORT_SYMBOL_GPL vmlinux 0x7f7bfb32 usb_reset_configuration +EXPORT_SYMBOL_GPL vmlinux 0x7f8a116a subsys_system_register +EXPORT_SYMBOL_GPL vmlinux 0x7f9b15f0 class_find_device +EXPORT_SYMBOL_GPL vmlinux 0x7fdc1a23 tps65912_clear_bits +EXPORT_SYMBOL_GPL vmlinux 0x80156244 register_kprobes +EXPORT_SYMBOL_GPL vmlinux 0x8065a4fc mmu_notifier_call_srcu +EXPORT_SYMBOL_GPL vmlinux 0x807cf387 ata_cable_unknown +EXPORT_SYMBOL_GPL vmlinux 0x808cb6d0 crypto_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x808ec1a3 crypto_alg_tested +EXPORT_SYMBOL_GPL vmlinux 0x80993249 dev_pm_disable_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0x80c68137 nf_log_buf_close +EXPORT_SYMBOL_GPL vmlinux 0x80c77c0a get_governor_parent_kobj +EXPORT_SYMBOL_GPL vmlinux 0x80d2346d fat_remove_entries +EXPORT_SYMBOL_GPL vmlinux 0x80d3927f __tracepoint_block_unplug +EXPORT_SYMBOL_GPL vmlinux 0x80d5e57a mpi_free +EXPORT_SYMBOL_GPL vmlinux 0x80de2008 ata_bmdma_port_start32 +EXPORT_SYMBOL_GPL vmlinux 0x80f3268f __trace_printk +EXPORT_SYMBOL_GPL vmlinux 0x80fc882b __gpiod_get +EXPORT_SYMBOL_GPL vmlinux 0x8114467b cn_netlink_send_mult +EXPORT_SYMBOL_GPL vmlinux 0x811dc334 usb_unregister_notify +EXPORT_SYMBOL_GPL vmlinux 0x8140152f virtqueue_enable_cb +EXPORT_SYMBOL_GPL vmlinux 0x8144c064 pci_enable_sriov +EXPORT_SYMBOL_GPL vmlinux 0x81463b68 sata_link_scr_lpm +EXPORT_SYMBOL_GPL vmlinux 0x8149ea54 ata_timing_find_mode +EXPORT_SYMBOL_GPL vmlinux 0x815588a6 clk_enable +EXPORT_SYMBOL_GPL vmlinux 0x815630cb uart_handle_dcd_change +EXPORT_SYMBOL_GPL vmlinux 0x819f2634 pci_try_reset_slot +EXPORT_SYMBOL_GPL vmlinux 0x81c4a51b out_of_line_wait_on_bit_timeout +EXPORT_SYMBOL_GPL vmlinux 0x8223bcba __tracepoint_xhci_dbg_quirks +EXPORT_SYMBOL_GPL vmlinux 0x822a9296 ipv6_stub +EXPORT_SYMBOL_GPL vmlinux 0x825886d7 class_compat_create_link +EXPORT_SYMBOL_GPL vmlinux 0x825a717b ata_eh_qc_retry +EXPORT_SYMBOL_GPL vmlinux 0x825dd453 devm_usb_get_phy_by_node +EXPORT_SYMBOL_GPL vmlinux 0x825ee2bf blk_trace_setup +EXPORT_SYMBOL_GPL vmlinux 0x82729f23 rio_release_outb_mbox +EXPORT_SYMBOL_GPL vmlinux 0x829845ce page_cache_async_readahead +EXPORT_SYMBOL_GPL vmlinux 0x829cd069 pinctrl_lookup_state +EXPORT_SYMBOL_GPL vmlinux 0x82a0ef67 root_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x82b11343 virtqueue_kick_prepare +EXPORT_SYMBOL_GPL vmlinux 0x82d79b51 sysctl_vfs_cache_pressure +EXPORT_SYMBOL_GPL vmlinux 0x82dbec19 erst_write +EXPORT_SYMBOL_GPL vmlinux 0x82e0a97d nd_region_attribute_group +EXPORT_SYMBOL_GPL vmlinux 0x82e275f3 devm_extcon_dev_unregister +EXPORT_SYMBOL_GPL vmlinux 0x82e4786b platform_device_register +EXPORT_SYMBOL_GPL vmlinux 0x8319cf1b ata_bmdma_status +EXPORT_SYMBOL_GPL vmlinux 0x83259a7c md_new_event +EXPORT_SYMBOL_GPL vmlinux 0x833a6dbb usb_autopm_get_interface_no_resume +EXPORT_SYMBOL_GPL vmlinux 0x834616bb sdev_evt_alloc +EXPORT_SYMBOL_GPL vmlinux 0x834e5caa usb_get_dev +EXPORT_SYMBOL_GPL vmlinux 0x83578562 xenbus_probe_devices +EXPORT_SYMBOL_GPL vmlinux 0x836fdab6 dma_request_slave_channel +EXPORT_SYMBOL_GPL vmlinux 0x83831c5d blkcg_policy_unregister +EXPORT_SYMBOL_GPL vmlinux 0x838b13e7 ring_buffer_free +EXPORT_SYMBOL_GPL vmlinux 0x83b117f9 pci_set_pcie_reset_state +EXPORT_SYMBOL_GPL vmlinux 0x83bd643f regmap_update_bits_check_async +EXPORT_SYMBOL_GPL vmlinux 0x83c932d6 rio_route_clr_table +EXPORT_SYMBOL_GPL vmlinux 0x83f7e857 dma_buf_vmap +EXPORT_SYMBOL_GPL vmlinux 0x840cef25 ata_common_sdev_attrs +EXPORT_SYMBOL_GPL vmlinux 0x840fc70d devres_find +EXPORT_SYMBOL_GPL vmlinux 0x843d70ef acpi_is_root_bridge +EXPORT_SYMBOL_GPL vmlinux 0x8487a2b6 flush_work +EXPORT_SYMBOL_GPL vmlinux 0x84993dea sdio_writesb +EXPORT_SYMBOL_GPL vmlinux 0x84bec88d regulator_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x84c90640 ata_sff_qc_fill_rtf +EXPORT_SYMBOL_GPL vmlinux 0x84fd1ce2 power_supply_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x85050965 __irq_alloc_descs +EXPORT_SYMBOL_GPL vmlinux 0x8506baa8 clk_unregister_gate +EXPORT_SYMBOL_GPL vmlinux 0x85092b2b add_to_page_cache_lru +EXPORT_SYMBOL_GPL vmlinux 0x850f6f7b crypto_enqueue_request +EXPORT_SYMBOL_GPL vmlinux 0x851105b4 smpboot_update_cpumask_percpu_thread +EXPORT_SYMBOL_GPL vmlinux 0x851e69a8 sysfs_merge_group +EXPORT_SYMBOL_GPL vmlinux 0x85216155 ezx_pcap_read +EXPORT_SYMBOL_GPL vmlinux 0x85300cf0 usb_reset_device +EXPORT_SYMBOL_GPL vmlinux 0x85543000 pcie_bus_configure_settings +EXPORT_SYMBOL_GPL vmlinux 0x85706aea invalidate_inode_pages2 +EXPORT_SYMBOL_GPL vmlinux 0x85946f75 relay_file_operations +EXPORT_SYMBOL_GPL vmlinux 0x859aea9a xen_set_domain_pte +EXPORT_SYMBOL_GPL vmlinux 0x85b0c4b7 usb_get_intf +EXPORT_SYMBOL_GPL vmlinux 0x85c7f674 ring_buffer_normalize_time_stamp +EXPORT_SYMBOL_GPL vmlinux 0x85ca5f65 device_pm_wait_for_dev +EXPORT_SYMBOL_GPL vmlinux 0x85cb2c45 xen_has_pv_devices +EXPORT_SYMBOL_GPL vmlinux 0x85d5488b sk_set_memalloc +EXPORT_SYMBOL_GPL vmlinux 0x85d7edfd hpet_set_periodic_freq +EXPORT_SYMBOL_GPL vmlinux 0x85dcf9a8 dma_buf_get +EXPORT_SYMBOL_GPL vmlinux 0x86009da0 xen_xenbus_fops +EXPORT_SYMBOL_GPL vmlinux 0x863c91ae devm_regulator_bulk_get +EXPORT_SYMBOL_GPL vmlinux 0x8648298f register_kretprobe +EXPORT_SYMBOL_GPL vmlinux 0x8654be58 hv_remove_vmbus_irq +EXPORT_SYMBOL_GPL vmlinux 0x86623fd7 notify_remote_via_irq +EXPORT_SYMBOL_GPL vmlinux 0x86786286 klist_add_behind +EXPORT_SYMBOL_GPL vmlinux 0x86819bc6 irq_ts_restore +EXPORT_SYMBOL_GPL vmlinux 0x868784cb __symbol_get +EXPORT_SYMBOL_GPL vmlinux 0x86979862 blk_queue_lld_busy +EXPORT_SYMBOL_GPL vmlinux 0x86a51007 gnttab_end_foreign_transfer +EXPORT_SYMBOL_GPL vmlinux 0x86c525bf rtc_update_irq_enable +EXPORT_SYMBOL_GPL vmlinux 0x86d817b4 cpufreq_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x86e02dff efivar_entry_set +EXPORT_SYMBOL_GPL vmlinux 0x86f0d974 get_cached_msi_msg +EXPORT_SYMBOL_GPL vmlinux 0x86f65ef5 apic +EXPORT_SYMBOL_GPL vmlinux 0x86f6b99d synchronize_rcu_expedited +EXPORT_SYMBOL_GPL vmlinux 0x86f8c910 pcap_set_ts_bits +EXPORT_SYMBOL_GPL vmlinux 0x8702e548 process_srcu +EXPORT_SYMBOL_GPL vmlinux 0x870e16b7 xen_test_irq_shared +EXPORT_SYMBOL_GPL vmlinux 0x873fbaea edac_atomic_assert_error +EXPORT_SYMBOL_GPL vmlinux 0x87522969 dax_do_io +EXPORT_SYMBOL_GPL vmlinux 0x876056e1 vma_kernel_pagesize +EXPORT_SYMBOL_GPL vmlinux 0x8773b836 platform_get_irq_byname +EXPORT_SYMBOL_GPL vmlinux 0x879dfdb5 led_stop_software_blink +EXPORT_SYMBOL_GPL vmlinux 0x879e6147 ata_sff_postreset +EXPORT_SYMBOL_GPL vmlinux 0x87bc3f26 handle_mm_fault +EXPORT_SYMBOL_GPL vmlinux 0x87c83349 regulator_bulk_disable +EXPORT_SYMBOL_GPL vmlinux 0x87ed93d7 devm_regmap_init +EXPORT_SYMBOL_GPL vmlinux 0x87f06ed9 ipv4_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x87f851d4 crypto_spawn_tfm2 +EXPORT_SYMBOL_GPL vmlinux 0x8801e524 sysfs_add_file_to_group +EXPORT_SYMBOL_GPL vmlinux 0x8810ad5e crypto_xor +EXPORT_SYMBOL_GPL vmlinux 0x88136838 wm8997_i2c_regmap +EXPORT_SYMBOL_GPL vmlinux 0x88324884 acpi_ec_remove_query_handler +EXPORT_SYMBOL_GPL vmlinux 0x883c2740 __cookie_v6_init_sequence +EXPORT_SYMBOL_GPL vmlinux 0x88488f85 perf_event_disable +EXPORT_SYMBOL_GPL vmlinux 0x884d0380 debugfs_create_u32_array +EXPORT_SYMBOL_GPL vmlinux 0x8850a23d __netlink_alloc_skb +EXPORT_SYMBOL_GPL vmlinux 0x886a2aaa dma_buf_unmap_attachment +EXPORT_SYMBOL_GPL vmlinux 0x88ab6fe3 kgdb_active +EXPORT_SYMBOL_GPL vmlinux 0x88b5647c trace_clock_local +EXPORT_SYMBOL_GPL vmlinux 0x8914ed57 device_del +EXPORT_SYMBOL_GPL vmlinux 0x891a5a7f gnttab_max_grant_frames +EXPORT_SYMBOL_GPL vmlinux 0x8924eb1e rcu_force_quiescent_state +EXPORT_SYMBOL_GPL vmlinux 0x89268af0 __class_register +EXPORT_SYMBOL_GPL vmlinux 0x892d4d5f smp_ops +EXPORT_SYMBOL_GPL vmlinux 0x893467a9 regulator_get_voltage_sel_regmap +EXPORT_SYMBOL_GPL vmlinux 0x894017ad crypto_register_ahash +EXPORT_SYMBOL_GPL vmlinux 0x89485687 iommu_group_put +EXPORT_SYMBOL_GPL vmlinux 0x8956aeae apei_exec_ctx_init +EXPORT_SYMBOL_GPL vmlinux 0x895f9305 sock_diag_unregister +EXPORT_SYMBOL_GPL vmlinux 0x898c1039 usb_set_configuration +EXPORT_SYMBOL_GPL vmlinux 0x8990cd98 simple_attr_release +EXPORT_SYMBOL_GPL vmlinux 0x8992cb6d virtqueue_add_inbuf +EXPORT_SYMBOL_GPL vmlinux 0x89975310 kobject_rename +EXPORT_SYMBOL_GPL vmlinux 0x89ad2984 clone_private_mount +EXPORT_SYMBOL_GPL vmlinux 0x89b7f1e8 cpci_hp_register_bus +EXPORT_SYMBOL_GPL vmlinux 0x89bbafc6 usb_register_notify +EXPORT_SYMBOL_GPL vmlinux 0x89bf5c98 acpi_dev_pm_attach +EXPORT_SYMBOL_GPL vmlinux 0x89d183a5 sysfs_create_mount_point +EXPORT_SYMBOL_GPL vmlinux 0x89efc9a7 da903x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x8a2259a4 adp5520_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x8a2811a2 led_trigger_set +EXPORT_SYMBOL_GPL vmlinux 0x8a4b8066 unregister_kprobes +EXPORT_SYMBOL_GPL vmlinux 0x8a559846 gnttab_setup_auto_xlat_frames +EXPORT_SYMBOL_GPL vmlinux 0x8a78989f irq_from_evtchn +EXPORT_SYMBOL_GPL vmlinux 0x8a79cd0f crypto_nivaead_type +EXPORT_SYMBOL_GPL vmlinux 0x8a7cb9c4 platform_thermal_package_rate_control +EXPORT_SYMBOL_GPL vmlinux 0x8a7f02d1 xenbus_match +EXPORT_SYMBOL_GPL vmlinux 0x8a7f92f2 nd_region_provider_data +EXPORT_SYMBOL_GPL vmlinux 0x8a85935d ip6_append_data +EXPORT_SYMBOL_GPL vmlinux 0x8abacc47 get_max_files +EXPORT_SYMBOL_GPL vmlinux 0x8ac1b3f8 irq_setup_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x8ad531b7 cpufreq_show_cpus +EXPORT_SYMBOL_GPL vmlinux 0x8ad7372a queue_kthread_work +EXPORT_SYMBOL_GPL vmlinux 0x8aeaa570 irq_find_mapping +EXPORT_SYMBOL_GPL vmlinux 0x8b04668e bind_interdomain_evtchn_to_irqhandler +EXPORT_SYMBOL_GPL vmlinux 0x8b149c36 clk_is_match +EXPORT_SYMBOL_GPL vmlinux 0x8b4a7994 ip6_sk_redirect +EXPORT_SYMBOL_GPL vmlinux 0x8b5cd647 regulator_bulk_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x8b604646 crypto_init_ahash_spawn +EXPORT_SYMBOL_GPL vmlinux 0x8b87039c blk_execute_rq_nowait +EXPORT_SYMBOL_GPL vmlinux 0x8b9200fd lookup_address +EXPORT_SYMBOL_GPL vmlinux 0x8ba521d6 __put_task_struct +EXPORT_SYMBOL_GPL vmlinux 0x8bb8b0a6 extcon_get_cable_state_ +EXPORT_SYMBOL_GPL vmlinux 0x8bd0a97b class_create_file_ns +EXPORT_SYMBOL_GPL vmlinux 0x8bdc2578 tpm_gen_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x8bf3e312 cpufreq_register_governor +EXPORT_SYMBOL_GPL vmlinux 0x8bfb789a ata_scsi_queuecmd +EXPORT_SYMBOL_GPL vmlinux 0x8c0215f2 pm_system_wakeup +EXPORT_SYMBOL_GPL vmlinux 0x8c03d20c destroy_workqueue +EXPORT_SYMBOL_GPL vmlinux 0x8c06a108 xenbus_transaction_start +EXPORT_SYMBOL_GPL vmlinux 0x8c19efad power_supply_put +EXPORT_SYMBOL_GPL vmlinux 0x8c244650 __blocking_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x8c3a9ab3 da9055_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0x8c4b970b tcp_unregister_congestion_control +EXPORT_SYMBOL_GPL vmlinux 0x8c5c0696 devm_reset_control_get +EXPORT_SYMBOL_GPL vmlinux 0x8c646600 edac_report_status +EXPORT_SYMBOL_GPL vmlinux 0x8c743fb6 reset_control_status +EXPORT_SYMBOL_GPL vmlinux 0x8c9d1661 arch_phys_wc_index +EXPORT_SYMBOL_GPL vmlinux 0x8ca5bf17 pci_hp_create_module_link +EXPORT_SYMBOL_GPL vmlinux 0x8ccf1622 device_create_bin_file +EXPORT_SYMBOL_GPL vmlinux 0x8cd9f935 setup_APIC_eilvt +EXPORT_SYMBOL_GPL vmlinux 0x8ce08f00 ata_dummy_port_info +EXPORT_SYMBOL_GPL vmlinux 0x8cea765f memalloc_socks +EXPORT_SYMBOL_GPL vmlinux 0x8cea783c ata_port_pbar_desc +EXPORT_SYMBOL_GPL vmlinux 0x8cf56009 tty_port_install +EXPORT_SYMBOL_GPL vmlinux 0x8d1692ab devm_regulator_put +EXPORT_SYMBOL_GPL vmlinux 0x8d175608 devm_get_free_pages +EXPORT_SYMBOL_GPL vmlinux 0x8d17a9fc fuse_request_send +EXPORT_SYMBOL_GPL vmlinux 0x8d22bb58 iommu_group_alloc +EXPORT_SYMBOL_GPL vmlinux 0x8d3f644d ata_dev_set_feature +EXPORT_SYMBOL_GPL vmlinux 0x8d5344d3 sysfs_remove_file_ns +EXPORT_SYMBOL_GPL vmlinux 0x8d877f3d pci_load_saved_state +EXPORT_SYMBOL_GPL vmlinux 0x8d9fa235 acpi_os_map_iomem +EXPORT_SYMBOL_GPL vmlinux 0x8dba21b7 ata_eh_freeze_port +EXPORT_SYMBOL_GPL vmlinux 0x8dc9bb7f zap_vma_ptes +EXPORT_SYMBOL_GPL vmlinux 0x8de56aea gpiod_unexport +EXPORT_SYMBOL_GPL vmlinux 0x8e02b1ea register_asymmetric_key_parser +EXPORT_SYMBOL_GPL vmlinux 0x8e1c7dca debugfs_create_u8 +EXPORT_SYMBOL_GPL vmlinux 0x8e214b2f __xenbus_register_backend +EXPORT_SYMBOL_GPL vmlinux 0x8e3fa50e scsi_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x8e6f00af ata_sff_check_status +EXPORT_SYMBOL_GPL vmlinux 0x8e9769a9 pcc_mbox_request_channel +EXPORT_SYMBOL_GPL vmlinux 0x8ecf8093 devm_kstrdup +EXPORT_SYMBOL_GPL vmlinux 0x8ed7c84b scsi_nl_sock +EXPORT_SYMBOL_GPL vmlinux 0x8ed8e78a rio_register_mport +EXPORT_SYMBOL_GPL vmlinux 0x8edfb574 injectm +EXPORT_SYMBOL_GPL vmlinux 0x8ee49595 __netpoll_free_async +EXPORT_SYMBOL_GPL vmlinux 0x8eec1db9 irq_domain_xlate_onetwocell +EXPORT_SYMBOL_GPL vmlinux 0x8ef29b8d led_trigger_register_simple +EXPORT_SYMBOL_GPL vmlinux 0x8f04aab4 mbox_send_message +EXPORT_SYMBOL_GPL vmlinux 0x8f0748af rcu_expedite_gp +EXPORT_SYMBOL_GPL vmlinux 0x8f1a89a7 pci_enable_ats +EXPORT_SYMBOL_GPL vmlinux 0x8f43041b efivar_entry_size +EXPORT_SYMBOL_GPL vmlinux 0x8f568b0d dm_send_uevents +EXPORT_SYMBOL_GPL vmlinux 0x8f59d553 regulator_list_voltage_table +EXPORT_SYMBOL_GPL vmlinux 0x8f6cee77 __round_jiffies_relative +EXPORT_SYMBOL_GPL vmlinux 0x8f902558 usb_bus_list_lock +EXPORT_SYMBOL_GPL vmlinux 0x8f959cce clockevents_unbind_device +EXPORT_SYMBOL_GPL vmlinux 0x8fa7f083 crypto_find_alg +EXPORT_SYMBOL_GPL vmlinux 0x8fae0ee4 netdev_rx_handler_unregister +EXPORT_SYMBOL_GPL vmlinux 0x8fb68799 spi_write_then_read +EXPORT_SYMBOL_GPL vmlinux 0x8fd6498e tty_buffer_lock_exclusive +EXPORT_SYMBOL_GPL vmlinux 0x9009602a acpi_bus_get_ejd +EXPORT_SYMBOL_GPL vmlinux 0x9009fd3a dev_attr_em_message_type +EXPORT_SYMBOL_GPL vmlinux 0x9020c679 blk_mq_cancel_requeue_work +EXPORT_SYMBOL_GPL vmlinux 0x903b627c list_lru_isolate_move +EXPORT_SYMBOL_GPL vmlinux 0x903bb65b acpi_dev_resource_ext_address_space +EXPORT_SYMBOL_GPL vmlinux 0x9048c890 crypto_register_aead +EXPORT_SYMBOL_GPL vmlinux 0x904e4527 powercap_register_control_type +EXPORT_SYMBOL_GPL vmlinux 0x9062c322 ring_buffer_consume +EXPORT_SYMBOL_GPL vmlinux 0x9079fdf9 irq_remove_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x90a1004a crypto_has_alg +EXPORT_SYMBOL_GPL vmlinux 0x90af71cc pci_find_next_ext_capability +EXPORT_SYMBOL_GPL vmlinux 0x90c42576 sdio_writeb +EXPORT_SYMBOL_GPL vmlinux 0x90dc29df aout_dump_debugregs +EXPORT_SYMBOL_GPL vmlinux 0x90de0452 platform_thermal_package_notify +EXPORT_SYMBOL_GPL vmlinux 0x90debb8c kobj_sysfs_ops +EXPORT_SYMBOL_GPL vmlinux 0x910371a9 hvc_alloc +EXPORT_SYMBOL_GPL vmlinux 0x911f0f9f unregister_acpi_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x91286d63 gpiod_put_array +EXPORT_SYMBOL_GPL vmlinux 0x9129aa6a irq_generic_chip_ops +EXPORT_SYMBOL_GPL vmlinux 0x9136f212 debugfs_create_size_t +EXPORT_SYMBOL_GPL vmlinux 0x91398d48 pm_stay_awake +EXPORT_SYMBOL_GPL vmlinux 0x91503888 devm_pinctrl_get +EXPORT_SYMBOL_GPL vmlinux 0x91549f0a irq_alloc_domain_generic_chips +EXPORT_SYMBOL_GPL vmlinux 0x91577f7c acpi_subsys_runtime_suspend +EXPORT_SYMBOL_GPL vmlinux 0x91792c17 inet_unhash +EXPORT_SYMBOL_GPL vmlinux 0x9182ac3f call_filter_check_discard +EXPORT_SYMBOL_GPL vmlinux 0x9183868c rio_request_dma +EXPORT_SYMBOL_GPL vmlinux 0x918a929d usb_create_shared_hcd +EXPORT_SYMBOL_GPL vmlinux 0x918ad429 ring_buffer_lock_reserve +EXPORT_SYMBOL_GPL vmlinux 0x9198eb1d __clocksource_update_freq_scale +EXPORT_SYMBOL_GPL vmlinux 0x91c6e5b0 pcap_to_irq +EXPORT_SYMBOL_GPL vmlinux 0x91cb62ac driver_register +EXPORT_SYMBOL_GPL vmlinux 0x91cd0bc0 pci_reset_bridge_secondary_bus +EXPORT_SYMBOL_GPL vmlinux 0x91e52093 blk_mq_free_request +EXPORT_SYMBOL_GPL vmlinux 0x91efb9b1 rio_route_get_entry +EXPORT_SYMBOL_GPL vmlinux 0x91f87a06 kern_mount_data +EXPORT_SYMBOL_GPL vmlinux 0x920cc389 visitorl +EXPORT_SYMBOL_GPL vmlinux 0x920f2349 tps6586x_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0x923fb52b acpi_subsys_complete +EXPORT_SYMBOL_GPL vmlinux 0x9244143d pinctrl_utils_dt_free_map +EXPORT_SYMBOL_GPL vmlinux 0x924a036f gpiod_set_value +EXPORT_SYMBOL_GPL vmlinux 0x924bc7ca gpiod_export +EXPORT_SYMBOL_GPL vmlinux 0x924c46f8 zs_unmap_object +EXPORT_SYMBOL_GPL vmlinux 0x924f30aa wm8350_read_auxadc +EXPORT_SYMBOL_GPL vmlinux 0x925efd98 platform_get_irq +EXPORT_SYMBOL_GPL vmlinux 0x9269f444 regulator_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x92759733 ata_sff_port_intr +EXPORT_SYMBOL_GPL vmlinux 0x92816350 sk_clone_lock +EXPORT_SYMBOL_GPL vmlinux 0x9292ceee mnt_drop_write +EXPORT_SYMBOL_GPL vmlinux 0x9295e6fa da9052_disable_irq_nosync +EXPORT_SYMBOL_GPL vmlinux 0x92a5c3fe devm_free_pages +EXPORT_SYMBOL_GPL vmlinux 0x92bf10db rhashtable_free_and_destroy +EXPORT_SYMBOL_GPL vmlinux 0x92d31cfb fixed_phy_add +EXPORT_SYMBOL_GPL vmlinux 0x92db8f68 do_trace_rcu_torture_read +EXPORT_SYMBOL_GPL vmlinux 0x92e990c2 led_trigger_rename_static +EXPORT_SYMBOL_GPL vmlinux 0x92f0eeab rio_mport_read_config_8 +EXPORT_SYMBOL_GPL vmlinux 0x9312d80e evtchn_put +EXPORT_SYMBOL_GPL vmlinux 0x931f05d3 ktime_get_raw +EXPORT_SYMBOL_GPL vmlinux 0x932066f9 device_for_each_child +EXPORT_SYMBOL_GPL vmlinux 0x9334c7e6 thermal_generate_netlink_event +EXPORT_SYMBOL_GPL vmlinux 0x933f6fec blk_mq_tags_cpumask +EXPORT_SYMBOL_GPL vmlinux 0x9341533c percpu_ida_free_tags +EXPORT_SYMBOL_GPL vmlinux 0x934537b1 dev_pm_qos_expose_latency_tolerance +EXPORT_SYMBOL_GPL vmlinux 0x934d6b7b acpi_dma_simple_xlate +EXPORT_SYMBOL_GPL vmlinux 0x936b8657 raw_seq_next +EXPORT_SYMBOL_GPL vmlinux 0x937bf804 crypto_rng_reset +EXPORT_SYMBOL_GPL vmlinux 0x938fce47 irq_set_chained_handler_and_data +EXPORT_SYMBOL_GPL vmlinux 0x93a11a9b dma_wait_for_async_tx +EXPORT_SYMBOL_GPL vmlinux 0x93a604d7 regmap_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0x93a604eb nvdimm_bus_unregister +EXPORT_SYMBOL_GPL vmlinux 0x93c836cf i2c_new_probed_device +EXPORT_SYMBOL_GPL vmlinux 0x93ce3a94 file_ra_state_init +EXPORT_SYMBOL_GPL vmlinux 0x93dc2586 pgprot_writethrough +EXPORT_SYMBOL_GPL vmlinux 0x93dc9c9c key_type_user +EXPORT_SYMBOL_GPL vmlinux 0x93e31019 ata_bmdma_setup +EXPORT_SYMBOL_GPL vmlinux 0x93fe0e0a __page_file_mapping +EXPORT_SYMBOL_GPL vmlinux 0x941f2aaa eventfd_ctx_put +EXPORT_SYMBOL_GPL vmlinux 0x943fc708 xen_setup_shutdown_event +EXPORT_SYMBOL_GPL vmlinux 0x944b4930 pci_hp_change_slot_info +EXPORT_SYMBOL_GPL vmlinux 0x949e08dd crypto_register_akcipher +EXPORT_SYMBOL_GPL vmlinux 0x949f7342 __alloc_percpu +EXPORT_SYMBOL_GPL vmlinux 0x94b9a5b4 scsi_flush_work +EXPORT_SYMBOL_GPL vmlinux 0x94c318be apei_exec_collect_resources +EXPORT_SYMBOL_GPL vmlinux 0x94d65a89 regulator_force_disable +EXPORT_SYMBOL_GPL vmlinux 0x94ef4d05 cpci_hp_stop +EXPORT_SYMBOL_GPL vmlinux 0x9504df26 irq_wake_thread +EXPORT_SYMBOL_GPL vmlinux 0x952664c5 do_exit +EXPORT_SYMBOL_GPL vmlinux 0x9529c2d5 pci_bus_add_device +EXPORT_SYMBOL_GPL vmlinux 0x953e1b9e ktime_get_real_seconds +EXPORT_SYMBOL_GPL vmlinux 0x954edb06 dma_buf_end_cpu_access +EXPORT_SYMBOL_GPL vmlinux 0x955b0e2e kthread_worker_fn +EXPORT_SYMBOL_GPL vmlinux 0x95743d40 blk_queue_bypass_end +EXPORT_SYMBOL_GPL vmlinux 0x958df3ac zs_free +EXPORT_SYMBOL_GPL vmlinux 0x958e7768 efivar_entry_set_get_size +EXPORT_SYMBOL_GPL vmlinux 0x95a81869 fuse_dev_release +EXPORT_SYMBOL_GPL vmlinux 0x95b6a7bf scsi_autopm_get_device +EXPORT_SYMBOL_GPL vmlinux 0x95b7d79b gpiochip_lock_as_irq +EXPORT_SYMBOL_GPL vmlinux 0x95bc9078 btree_free +EXPORT_SYMBOL_GPL vmlinux 0x95c978ab mmput +EXPORT_SYMBOL_GPL vmlinux 0x95d11a15 cpufreq_freq_transition_end +EXPORT_SYMBOL_GPL vmlinux 0x95dea083 ahash_free_instance +EXPORT_SYMBOL_GPL vmlinux 0x95faaf16 single_open_net +EXPORT_SYMBOL_GPL vmlinux 0x961c00db devfreq_event_get_edev_count +EXPORT_SYMBOL_GPL vmlinux 0x9621849f ring_buffer_event_data +EXPORT_SYMBOL_GPL vmlinux 0x964add15 xenbus_scanf +EXPORT_SYMBOL_GPL vmlinux 0x964d5c39 acpi_os_map_memory +EXPORT_SYMBOL_GPL vmlinux 0x96554810 register_keyboard_notifier +EXPORT_SYMBOL_GPL vmlinux 0x9673aa73 rtc_irq_set_freq +EXPORT_SYMBOL_GPL vmlinux 0x9683755f spi_new_device +EXPORT_SYMBOL_GPL vmlinux 0x968480ec __ip_route_output_key +EXPORT_SYMBOL_GPL vmlinux 0x96857306 inet6_csk_addr2sockaddr +EXPORT_SYMBOL_GPL vmlinux 0x96ab568f cn_add_callback +EXPORT_SYMBOL_GPL vmlinux 0x96b0ed31 blk_queue_flush_queueable +EXPORT_SYMBOL_GPL vmlinux 0x96d31383 blkdev_write_iter +EXPORT_SYMBOL_GPL vmlinux 0x96d34bb3 bd_unlink_disk_holder +EXPORT_SYMBOL_GPL vmlinux 0x96dc5440 vfs_cancel_lock +EXPORT_SYMBOL_GPL vmlinux 0x96e1abc5 btree_init +EXPORT_SYMBOL_GPL vmlinux 0x96fb40f3 usb_init_urb +EXPORT_SYMBOL_GPL vmlinux 0x9724c51f ping_get_port +EXPORT_SYMBOL_GPL vmlinux 0x9731d447 blk_queue_rq_timed_out +EXPORT_SYMBOL_GPL vmlinux 0x973ab8ad cper_estatus_print +EXPORT_SYMBOL_GPL vmlinux 0x9743dc33 extcon_set_state +EXPORT_SYMBOL_GPL vmlinux 0x975519c1 asymmetric_key_id_same +EXPORT_SYMBOL_GPL vmlinux 0x97a27eec sis_info133_for_sata +EXPORT_SYMBOL_GPL vmlinux 0x97c53938 set_cpus_allowed_ptr +EXPORT_SYMBOL_GPL vmlinux 0x97de2b83 debug_locks_silent +EXPORT_SYMBOL_GPL vmlinux 0x97e34468 fat_attach +EXPORT_SYMBOL_GPL vmlinux 0x97ec759f usb_get_hcd +EXPORT_SYMBOL_GPL vmlinux 0x97eec2ef acpi_dev_add_driver_gpios +EXPORT_SYMBOL_GPL vmlinux 0x9801fe2c skcipher_geniv_alloc +EXPORT_SYMBOL_GPL vmlinux 0x98092aaa klp_register_patch +EXPORT_SYMBOL_GPL vmlinux 0x981ac772 ata_pci_bmdma_clear_simplex +EXPORT_SYMBOL_GPL vmlinux 0x9833bc0c hvc_kick +EXPORT_SYMBOL_GPL vmlinux 0x98503a63 mpi_alloc +EXPORT_SYMBOL_GPL vmlinux 0x9879932b crypto_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x98813530 led_classdev_register +EXPORT_SYMBOL_GPL vmlinux 0x9881ffbd ipv4_redirect +EXPORT_SYMBOL_GPL vmlinux 0x9888b595 debugfs_create_x64 +EXPORT_SYMBOL_GPL vmlinux 0x98eff1b4 dev_pm_qos_remove_request +EXPORT_SYMBOL_GPL vmlinux 0x98f804ca sdhci_pci_o2_fujin2_pci_init +EXPORT_SYMBOL_GPL vmlinux 0x98fa1e20 dm_get_reserved_rq_based_ios +EXPORT_SYMBOL_GPL vmlinux 0x98fb9fea hrtimer_start_range_ns +EXPORT_SYMBOL_GPL vmlinux 0x98fcf128 irq_work_queue_on +EXPORT_SYMBOL_GPL vmlinux 0x990f0e19 bdev_direct_access +EXPORT_SYMBOL_GPL vmlinux 0x9918e09c fat_scan +EXPORT_SYMBOL_GPL vmlinux 0x9924c496 __usb_get_extra_descriptor +EXPORT_SYMBOL_GPL vmlinux 0x995d1071 prof_on +EXPORT_SYMBOL_GPL vmlinux 0x9961eb8c ftrace_set_filter_ip +EXPORT_SYMBOL_GPL vmlinux 0x9965e1bc ipv6_find_tlv +EXPORT_SYMBOL_GPL vmlinux 0x99691dfe wm8997_patch +EXPORT_SYMBOL_GPL vmlinux 0x9973add9 __cookie_v6_check +EXPORT_SYMBOL_GPL vmlinux 0x997c4347 unmap_kernel_range +EXPORT_SYMBOL_GPL vmlinux 0x99840d00 timecounter_init +EXPORT_SYMBOL_GPL vmlinux 0x99948537 swiotlb_tbl_sync_single +EXPORT_SYMBOL_GPL vmlinux 0x99a9ff9a cpuidle_register_device +EXPORT_SYMBOL_GPL vmlinux 0x99b585d1 adp5520_write +EXPORT_SYMBOL_GPL vmlinux 0x99c61b52 sysfs_remove_files +EXPORT_SYMBOL_GPL vmlinux 0x99e28f10 __tracepoint_remove_device_from_group +EXPORT_SYMBOL_GPL vmlinux 0x9a11a0fc crypto_attr_alg_name +EXPORT_SYMBOL_GPL vmlinux 0x9a1ad377 alarm_forward_now +EXPORT_SYMBOL_GPL vmlinux 0x9a2079a3 scsi_internal_device_block +EXPORT_SYMBOL_GPL vmlinux 0x9a400957 fuse_do_open +EXPORT_SYMBOL_GPL vmlinux 0x9a714c36 __pci_hp_register +EXPORT_SYMBOL_GPL vmlinux 0x9a7aefd2 ata_link_online +EXPORT_SYMBOL_GPL vmlinux 0x9a84d89d device_add_property_set +EXPORT_SYMBOL_GPL vmlinux 0x9a89dbf7 lpddr2_jedec_min_tck +EXPORT_SYMBOL_GPL vmlinux 0x9a94b6e0 i2c_lock_adapter +EXPORT_SYMBOL_GPL vmlinux 0x9aa347f5 pci_rescan_bus +EXPORT_SYMBOL_GPL vmlinux 0x9ac11b74 suspend_set_ops +EXPORT_SYMBOL_GPL vmlinux 0x9adf98c5 __clocksource_register_scale +EXPORT_SYMBOL_GPL vmlinux 0x9aeacb87 ring_buffer_iter_empty +EXPORT_SYMBOL_GPL vmlinux 0x9af89b1d pci_restore_msi_state +EXPORT_SYMBOL_GPL vmlinux 0x9b028872 key_type_encrypted +EXPORT_SYMBOL_GPL vmlinux 0x9b4b4953 gen_pool_size +EXPORT_SYMBOL_GPL vmlinux 0x9b51ee61 perf_event_enable +EXPORT_SYMBOL_GPL vmlinux 0x9b52888a wm8350_device_exit +EXPORT_SYMBOL_GPL vmlinux 0x9b6a7412 idle_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x9b720312 acpi_target_system_state +EXPORT_SYMBOL_GPL vmlinux 0x9b74dfb2 nvdimm_provider_data +EXPORT_SYMBOL_GPL vmlinux 0x9b96816a blkcg_root +EXPORT_SYMBOL_GPL vmlinux 0x9b9f3648 pcibios_scan_specific_bus +EXPORT_SYMBOL_GPL vmlinux 0x9ba2bb2b gpio_request_array +EXPORT_SYMBOL_GPL vmlinux 0x9bc81b69 acpi_initialize_hp_context +EXPORT_SYMBOL_GPL vmlinux 0x9bca03ca ata_sff_queue_delayed_work +EXPORT_SYMBOL_GPL vmlinux 0x9bd72b78 apei_write +EXPORT_SYMBOL_GPL vmlinux 0x9bece81b mpi_cmp_ui +EXPORT_SYMBOL_GPL vmlinux 0x9c09de78 ata_sff_prereset +EXPORT_SYMBOL_GPL vmlinux 0x9c0b348e clear_foreign_p2m_mapping +EXPORT_SYMBOL_GPL vmlinux 0x9c0e951f regmap_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0x9c2c0762 device_remove_file +EXPORT_SYMBOL_GPL vmlinux 0x9c2de449 memory_add_physaddr_to_nid +EXPORT_SYMBOL_GPL vmlinux 0x9c2e4b66 acpi_unregister_gsi +EXPORT_SYMBOL_GPL vmlinux 0x9c3ee2ec crypto_init_shash_spawn +EXPORT_SYMBOL_GPL vmlinux 0x9c462261 klist_iter_init_node +EXPORT_SYMBOL_GPL vmlinux 0x9c634121 reservation_object_test_signaled_rcu +EXPORT_SYMBOL_GPL vmlinux 0x9c959465 ata_do_set_mode +EXPORT_SYMBOL_GPL vmlinux 0x9cbf3827 platform_get_resource_byname +EXPORT_SYMBOL_GPL vmlinux 0x9cc4f70a register_pm_notifier +EXPORT_SYMBOL_GPL vmlinux 0x9ccdf526 list_lru_add +EXPORT_SYMBOL_GPL vmlinux 0x9cd6b35c pinctrl_find_gpio_range_from_pin +EXPORT_SYMBOL_GPL vmlinux 0x9cd76711 percpu_ida_alloc +EXPORT_SYMBOL_GPL vmlinux 0x9cee57a0 zs_create_pool +EXPORT_SYMBOL_GPL vmlinux 0x9cf5ba77 xattr_getsecurity +EXPORT_SYMBOL_GPL vmlinux 0x9d06688b register_xenbus_watch +EXPORT_SYMBOL_GPL vmlinux 0x9d2d237d cpufreq_generic_frequency_table_verify +EXPORT_SYMBOL_GPL vmlinux 0x9d2e8287 shmem_truncate_range +EXPORT_SYMBOL_GPL vmlinux 0x9d3850e1 gnttab_alloc_grant_references +EXPORT_SYMBOL_GPL vmlinux 0x9d93b539 class_interface_unregister +EXPORT_SYMBOL_GPL vmlinux 0x9d9e155d pv_info +EXPORT_SYMBOL_GPL vmlinux 0x9da21a6a pci_disable_pcie_error_reporting +EXPORT_SYMBOL_GPL vmlinux 0x9da7db21 pci_enable_pri +EXPORT_SYMBOL_GPL vmlinux 0x9dadbb88 cpufreq_boost_supported +EXPORT_SYMBOL_GPL vmlinux 0x9dc612cb extcon_update_state +EXPORT_SYMBOL_GPL vmlinux 0x9df3a822 regmap_field_free +EXPORT_SYMBOL_GPL vmlinux 0x9df44bcd sdhci_pci_o2_resume +EXPORT_SYMBOL_GPL vmlinux 0x9df86093 tcp_ca_openreq_child +EXPORT_SYMBOL_GPL vmlinux 0x9e05499a init_srcu_struct +EXPORT_SYMBOL_GPL vmlinux 0x9e0d74c4 efivar_entry_delete +EXPORT_SYMBOL_GPL vmlinux 0x9e0effd5 serial8250_rpm_put +EXPORT_SYMBOL_GPL vmlinux 0x9e1e9210 md_ack_all_badblocks +EXPORT_SYMBOL_GPL vmlinux 0x9e36bd0c skcipher_geniv_free +EXPORT_SYMBOL_GPL vmlinux 0x9e3777d4 iommu_group_remove_device +EXPORT_SYMBOL_GPL vmlinux 0x9e472f5f snmp_fold_field +EXPORT_SYMBOL_GPL vmlinux 0x9e636a74 ip6_datagram_send_ctl +EXPORT_SYMBOL_GPL vmlinux 0x9e6b808d xen_swiotlb_dma_mapping_error +EXPORT_SYMBOL_GPL vmlinux 0x9eaf62bb wm5102_spi_regmap +EXPORT_SYMBOL_GPL vmlinux 0x9ece1e04 posix_acl_access_xattr_handler +EXPORT_SYMBOL_GPL vmlinux 0x9ece7f7f device_reset +EXPORT_SYMBOL_GPL vmlinux 0x9ecf6fc8 sdio_enable_func +EXPORT_SYMBOL_GPL vmlinux 0x9ed554b3 unregister_keyboard_notifier +EXPORT_SYMBOL_GPL vmlinux 0x9ee95afa crypto_unregister_template +EXPORT_SYMBOL_GPL vmlinux 0x9f099cf6 x509_get_sig_params +EXPORT_SYMBOL_GPL vmlinux 0x9f21547e nfq_ct_hook +EXPORT_SYMBOL_GPL vmlinux 0x9f43e1cf shake_page +EXPORT_SYMBOL_GPL vmlinux 0x9fc57ae7 gpiod_set_array_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x9fce80db fb_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x9fd0eb88 gpiod_set_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x9fe939e1 mpi_powm +EXPORT_SYMBOL_GPL vmlinux 0x9ffcb8b1 __platform_driver_register +EXPORT_SYMBOL_GPL vmlinux 0xa014a6ac trace_seq_bprintf +EXPORT_SYMBOL_GPL vmlinux 0xa02e9893 skb_tstamp_tx +EXPORT_SYMBOL_GPL vmlinux 0xa04b6593 usb_hcd_check_unlink_urb +EXPORT_SYMBOL_GPL vmlinux 0xa05d1b40 srcu_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0xa080a67b phy_remove_lookup +EXPORT_SYMBOL_GPL vmlinux 0xa08549a0 pci_disable_pasid +EXPORT_SYMBOL_GPL vmlinux 0xa085a7d4 sdio_writeb_readb +EXPORT_SYMBOL_GPL vmlinux 0xa091d10d fwnode_property_present +EXPORT_SYMBOL_GPL vmlinux 0xa0bee92e dma_buf_kmap_atomic +EXPORT_SYMBOL_GPL vmlinux 0xa0c70e25 nl_table_lock +EXPORT_SYMBOL_GPL vmlinux 0xa0c753eb max8997_write_reg +EXPORT_SYMBOL_GPL vmlinux 0xa0e50db7 usb_match_id +EXPORT_SYMBOL_GPL vmlinux 0xa0f95a12 __srcu_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xa108a1c2 pci_pasid_features +EXPORT_SYMBOL_GPL vmlinux 0xa10975a4 rhashtable_insert_rehash +EXPORT_SYMBOL_GPL vmlinux 0xa11216be xen_store_domain_type +EXPORT_SYMBOL_GPL vmlinux 0xa1167dc4 clk_divider_ops +EXPORT_SYMBOL_GPL vmlinux 0xa11b55b2 xen_start_info +EXPORT_SYMBOL_GPL vmlinux 0xa12d72db sdio_readl +EXPORT_SYMBOL_GPL vmlinux 0xa1488951 acpi_device_uevent_modalias +EXPORT_SYMBOL_GPL vmlinux 0xa156a1f2 erst_get_record_id_end +EXPORT_SYMBOL_GPL vmlinux 0xa15ea82b pm_generic_suspend +EXPORT_SYMBOL_GPL vmlinux 0xa1885487 acpi_dev_get_resources +EXPORT_SYMBOL_GPL vmlinux 0xa18f9433 mpi_read_buffer +EXPORT_SYMBOL_GPL vmlinux 0xa1a88da8 skb_cow_data +EXPORT_SYMBOL_GPL vmlinux 0xa1d6f157 rio_bus_type +EXPORT_SYMBOL_GPL vmlinux 0xa1e9abe0 __gpiod_get_index +EXPORT_SYMBOL_GPL vmlinux 0xa1ed9c8b add_hwgenerator_randomness +EXPORT_SYMBOL_GPL vmlinux 0xa1f79553 xen_create_contiguous_region +EXPORT_SYMBOL_GPL vmlinux 0xa1fb0618 device_init_wakeup +EXPORT_SYMBOL_GPL vmlinux 0xa2192f1c balloon_page_enqueue +EXPORT_SYMBOL_GPL vmlinux 0xa24b6024 power_supply_property_is_writeable +EXPORT_SYMBOL_GPL vmlinux 0xa26d9b4f workqueue_congested +EXPORT_SYMBOL_GPL vmlinux 0xa27d3ead dma_buf_export +EXPORT_SYMBOL_GPL vmlinux 0xa2822d04 bus_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0xa2ac5519 percpu_ref_init +EXPORT_SYMBOL_GPL vmlinux 0xa2acc67b ata_bmdma_dumb_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0xa2ad0a22 usb_put_phy +EXPORT_SYMBOL_GPL vmlinux 0xa2b9c993 clk_register_fixed_factor +EXPORT_SYMBOL_GPL vmlinux 0xa2bafa40 interval_tree_insert +EXPORT_SYMBOL_GPL vmlinux 0xa2c1f95e blk_trace_startstop +EXPORT_SYMBOL_GPL vmlinux 0xa2c4a509 usb_unpoison_urb +EXPORT_SYMBOL_GPL vmlinux 0xa2e6292f sched_setscheduler +EXPORT_SYMBOL_GPL vmlinux 0xa2e84949 acpi_dev_get_property +EXPORT_SYMBOL_GPL vmlinux 0xa353fffc xenbus_rm +EXPORT_SYMBOL_GPL vmlinux 0xa366e0ca kthread_unpark +EXPORT_SYMBOL_GPL vmlinux 0xa36ef82c acpi_gpiochip_request_interrupts +EXPORT_SYMBOL_GPL vmlinux 0xa370ea13 device_property_read_u32_array +EXPORT_SYMBOL_GPL vmlinux 0xa37b7de5 sdio_claim_host +EXPORT_SYMBOL_GPL vmlinux 0xa3851775 sysfs_remove_link_from_group +EXPORT_SYMBOL_GPL vmlinux 0xa38602cd drain_workqueue +EXPORT_SYMBOL_GPL vmlinux 0xa386c029 trace_seq_to_user +EXPORT_SYMBOL_GPL vmlinux 0xa389a49a profile_event_register +EXPORT_SYMBOL_GPL vmlinux 0xa390f701 regcache_sync +EXPORT_SYMBOL_GPL vmlinux 0xa3a04602 btree_geo64 +EXPORT_SYMBOL_GPL vmlinux 0xa3a36e10 ata_bmdma_irq_clear +EXPORT_SYMBOL_GPL vmlinux 0xa3b958ce reset_hung_task_detector +EXPORT_SYMBOL_GPL vmlinux 0xa3e455c8 crypto_unregister_akcipher +EXPORT_SYMBOL_GPL vmlinux 0xa3e7c113 ring_buffer_iter_peek +EXPORT_SYMBOL_GPL vmlinux 0xa40cb5c4 i2c_new_device +EXPORT_SYMBOL_GPL vmlinux 0xa415be97 xfrm_inner_extract_output +EXPORT_SYMBOL_GPL vmlinux 0xa4434336 device_rename +EXPORT_SYMBOL_GPL vmlinux 0xa452c297 hpet_mask_rtc_irq_bit +EXPORT_SYMBOL_GPL vmlinux 0xa452f2a4 xen_pirq_from_irq +EXPORT_SYMBOL_GPL vmlinux 0xa45ba40d pinctrl_dev_get_devname +EXPORT_SYMBOL_GPL vmlinux 0xa466de38 acpi_processor_ffh_cstate_enter +EXPORT_SYMBOL_GPL vmlinux 0xa48196c8 kdb_poll_idx +EXPORT_SYMBOL_GPL vmlinux 0xa494ca23 sata_std_hardreset +EXPORT_SYMBOL_GPL vmlinux 0xa4ab569b crypto_shash_update +EXPORT_SYMBOL_GPL vmlinux 0xa4d28faf regcache_sync_region +EXPORT_SYMBOL_GPL vmlinux 0xa4f816d7 reset_control_get +EXPORT_SYMBOL_GPL vmlinux 0xa4fcacf7 rio_request_outb_mbox +EXPORT_SYMBOL_GPL vmlinux 0xa53cdced aead_geniv_init +EXPORT_SYMBOL_GPL vmlinux 0xa54ffe6a dma_buf_kmap +EXPORT_SYMBOL_GPL vmlinux 0xa553958e device_get_child_node_count +EXPORT_SYMBOL_GPL vmlinux 0xa55b9c96 debugfs_print_regs32 +EXPORT_SYMBOL_GPL vmlinux 0xa56f080b blkcipher_walk_virt +EXPORT_SYMBOL_GPL vmlinux 0xa586abd6 crypto_register_aeads +EXPORT_SYMBOL_GPL vmlinux 0xa59fb7f3 inet_twsk_schedule +EXPORT_SYMBOL_GPL vmlinux 0xa5e407e4 wm5110_aod +EXPORT_SYMBOL_GPL vmlinux 0xa5efbf4c async_synchronize_full +EXPORT_SYMBOL_GPL vmlinux 0xa5f5385c blkg_conf_finish +EXPORT_SYMBOL_GPL vmlinux 0xa5f921c0 usb_set_device_state +EXPORT_SYMBOL_GPL vmlinux 0xa611f0a8 hrtimer_forward +EXPORT_SYMBOL_GPL vmlinux 0xa61459ea sdio_set_block_size +EXPORT_SYMBOL_GPL vmlinux 0xa617dd7b __tracepoint_map +EXPORT_SYMBOL_GPL vmlinux 0xa625110d kmsg_dump_rewind +EXPORT_SYMBOL_GPL vmlinux 0xa62892c6 efivar_sysfs_list +EXPORT_SYMBOL_GPL vmlinux 0xa6394879 regmap_init +EXPORT_SYMBOL_GPL vmlinux 0xa63d3a9c virtio_config_changed +EXPORT_SYMBOL_GPL vmlinux 0xa63fce00 rt_mutex_lock +EXPORT_SYMBOL_GPL vmlinux 0xa64bacc7 __ablkcipher_walk_complete +EXPORT_SYMBOL_GPL vmlinux 0xa653461e wm831x_auxadc_read +EXPORT_SYMBOL_GPL vmlinux 0xa65aa020 xhci_suspend +EXPORT_SYMBOL_GPL vmlinux 0xa66438e8 erst_read +EXPORT_SYMBOL_GPL vmlinux 0xa66b11cc tps6586x_write +EXPORT_SYMBOL_GPL vmlinux 0xa66fe092 transport_configure_device +EXPORT_SYMBOL_GPL vmlinux 0xa6980a93 pci_disable_ats +EXPORT_SYMBOL_GPL vmlinux 0xa69e96bb sata_link_hardreset +EXPORT_SYMBOL_GPL vmlinux 0xa6b21ef2 dpm_suspend_end +EXPORT_SYMBOL_GPL vmlinux 0xa6b5b7f4 led_sysfs_enable +EXPORT_SYMBOL_GPL vmlinux 0xa6c4ba0c devres_open_group +EXPORT_SYMBOL_GPL vmlinux 0xa6cd04fd dma_get_required_mask +EXPORT_SYMBOL_GPL vmlinux 0xa6e1a69d kick_all_cpus_sync +EXPORT_SYMBOL_GPL vmlinux 0xa6e87b23 skb_pull_rcsum +EXPORT_SYMBOL_GPL vmlinux 0xa6ec03d9 crypto_unregister_rng +EXPORT_SYMBOL_GPL vmlinux 0xa7360c40 regulator_set_current_limit +EXPORT_SYMBOL_GPL vmlinux 0xa75312bc call_rcu_sched +EXPORT_SYMBOL_GPL vmlinux 0xa75d3785 ata_sas_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0xa77e312c balloon_page_dequeue +EXPORT_SYMBOL_GPL vmlinux 0xa7e13a6a clk_mux_ro_ops +EXPORT_SYMBOL_GPL vmlinux 0xa7e4601e get_user_pages_fast +EXPORT_SYMBOL_GPL vmlinux 0xa7fc788b pm_relax +EXPORT_SYMBOL_GPL vmlinux 0xa801b359 efivar_entry_iter_begin +EXPORT_SYMBOL_GPL vmlinux 0xa81048bb uart_set_options +EXPORT_SYMBOL_GPL vmlinux 0xa81a5868 gpiochip_remove_pin_ranges +EXPORT_SYMBOL_GPL vmlinux 0xa851973a raw_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xa86b4979 scsi_internal_device_unblock +EXPORT_SYMBOL_GPL vmlinux 0xa87d5569 usb_get_from_anchor +EXPORT_SYMBOL_GPL vmlinux 0xa894ac76 sysfs_remove_file_from_group +EXPORT_SYMBOL_GPL vmlinux 0xa8957f01 blkcg_print_blkgs +EXPORT_SYMBOL_GPL vmlinux 0xa8ae7bfa regmap_update_bits +EXPORT_SYMBOL_GPL vmlinux 0xa8b76a68 timecounter_cyc2time +EXPORT_SYMBOL_GPL vmlinux 0xa8bebafb pci_reset_pri +EXPORT_SYMBOL_GPL vmlinux 0xa8e1b21d perf_event_refresh +EXPORT_SYMBOL_GPL vmlinux 0xa9000315 led_trigger_remove +EXPORT_SYMBOL_GPL vmlinux 0xa9126bff hpet_set_rtc_irq_bit +EXPORT_SYMBOL_GPL vmlinux 0xa925e478 __tracepoint_rpm_return_int +EXPORT_SYMBOL_GPL vmlinux 0xa9320d27 ktime_get_seconds +EXPORT_SYMBOL_GPL vmlinux 0xa938a0a7 crypto_larval_kill +EXPORT_SYMBOL_GPL vmlinux 0xa980af16 RSA_public_key_algorithm +EXPORT_SYMBOL_GPL vmlinux 0xa997adf2 cpufreq_cpu_put +EXPORT_SYMBOL_GPL vmlinux 0xa9a485d9 wm8997_aod +EXPORT_SYMBOL_GPL vmlinux 0xa9b48c49 event_triggers_call +EXPORT_SYMBOL_GPL vmlinux 0xa9b67919 xhci_dbg_trace +EXPORT_SYMBOL_GPL vmlinux 0xa9cb7cf1 kobject_uevent_env +EXPORT_SYMBOL_GPL vmlinux 0xa9e18049 task_handoff_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa9fde3c9 blocking_notifier_chain_cond_register +EXPORT_SYMBOL_GPL vmlinux 0xaa004b81 user_free_preparse +EXPORT_SYMBOL_GPL vmlinux 0xaa14a022 tty_standard_install +EXPORT_SYMBOL_GPL vmlinux 0xaa31cce1 inet6_csk_bind_conflict +EXPORT_SYMBOL_GPL vmlinux 0xaa545288 evm_verifyxattr +EXPORT_SYMBOL_GPL vmlinux 0xaa8436fd thermal_cooling_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xaa858d3a bio_associate_current +EXPORT_SYMBOL_GPL vmlinux 0xaa9455d9 regulator_get_voltage +EXPORT_SYMBOL_GPL vmlinux 0xaaa918c9 ftrace_dump +EXPORT_SYMBOL_GPL vmlinux 0xaac31c45 pm_generic_poweroff_noirq +EXPORT_SYMBOL_GPL vmlinux 0xaaefb328 xen_swiotlb_sync_sg_for_device +EXPORT_SYMBOL_GPL vmlinux 0xaafcb3f5 sysfs_rename_link_ns +EXPORT_SYMBOL_GPL vmlinux 0xab01acbe gnttab_request_free_callback +EXPORT_SYMBOL_GPL vmlinux 0xab0cd009 rtc_irq_register +EXPORT_SYMBOL_GPL vmlinux 0xab14d56d get_kernel_page +EXPORT_SYMBOL_GPL vmlinux 0xab18cf53 xenbus_probe_node +EXPORT_SYMBOL_GPL vmlinux 0xab1b7ebd ata_sff_freeze +EXPORT_SYMBOL_GPL vmlinux 0xab1e0e93 hv_setup_kexec_handler +EXPORT_SYMBOL_GPL vmlinux 0xab291ecb dm_get_rq_mapinfo +EXPORT_SYMBOL_GPL vmlinux 0xab29ad96 cpuidle_disable_device +EXPORT_SYMBOL_GPL vmlinux 0xab337640 ata_pci_device_resume +EXPORT_SYMBOL_GPL vmlinux 0xab3e96e0 sprint_OID +EXPORT_SYMBOL_GPL vmlinux 0xab49fcd3 crypto_attr_alg2 +EXPORT_SYMBOL_GPL vmlinux 0xab4b3fe3 devm_hwrng_unregister +EXPORT_SYMBOL_GPL vmlinux 0xab567d31 percpu_ref_reinit +EXPORT_SYMBOL_GPL vmlinux 0xab5a5de4 fixed_phy_del +EXPORT_SYMBOL_GPL vmlinux 0xab682876 ip6_datagram_connect +EXPORT_SYMBOL_GPL vmlinux 0xab6babaf pm_qos_request +EXPORT_SYMBOL_GPL vmlinux 0xab6ecc1a usb_hub_release_port +EXPORT_SYMBOL_GPL vmlinux 0xab70d26c device_store_ulong +EXPORT_SYMBOL_GPL vmlinux 0xab7153c3 efivar_entry_iter +EXPORT_SYMBOL_GPL vmlinux 0xab994520 usb_choose_configuration +EXPORT_SYMBOL_GPL vmlinux 0xabc640f3 list_lru_isolate +EXPORT_SYMBOL_GPL vmlinux 0xabdfd36e ata_qc_complete +EXPORT_SYMBOL_GPL vmlinux 0xabea4176 ehci_resume +EXPORT_SYMBOL_GPL vmlinux 0xac07073c wm8400_reg_read +EXPORT_SYMBOL_GPL vmlinux 0xac0721d2 tcp_fetch_timewait_stamp +EXPORT_SYMBOL_GPL vmlinux 0xac412bf2 __pci_reset_function +EXPORT_SYMBOL_GPL vmlinux 0xac723136 __cpufreq_driver_target +EXPORT_SYMBOL_GPL vmlinux 0xac7328f6 rtc_alarm_irq_enable +EXPORT_SYMBOL_GPL vmlinux 0xac7487b8 da9052_disable_irq +EXPORT_SYMBOL_GPL vmlinux 0xac94e8e8 crypto_lookup_aead +EXPORT_SYMBOL_GPL vmlinux 0xac9ce195 kvm_async_pf_task_wait +EXPORT_SYMBOL_GPL vmlinux 0xacafa8e7 vector_used_by_percpu_irq +EXPORT_SYMBOL_GPL vmlinux 0xacb12a3d nd_mapping_attribute_group +EXPORT_SYMBOL_GPL vmlinux 0xaccce2c3 __of_phy_provider_register +EXPORT_SYMBOL_GPL vmlinux 0xacd25d3a tty_get_pgrp +EXPORT_SYMBOL_GPL vmlinux 0xace5c0fc usb_bus_list +EXPORT_SYMBOL_GPL vmlinux 0xacef4117 ehci_adjust_port_wakeup_flags +EXPORT_SYMBOL_GPL vmlinux 0xad05c250 pci_vfs_assigned +EXPORT_SYMBOL_GPL vmlinux 0xad0a8205 gpiod_get_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0xad1b54ae __tracepoint_extlog_mem_event +EXPORT_SYMBOL_GPL vmlinux 0xad1e4866 spi_sync_locked +EXPORT_SYMBOL_GPL vmlinux 0xad48df4e devres_add +EXPORT_SYMBOL_GPL vmlinux 0xad4e6e2f spi_master_suspend +EXPORT_SYMBOL_GPL vmlinux 0xad54c7b8 fl6_merge_options +EXPORT_SYMBOL_GPL vmlinux 0xad8d8ab0 xen_physdev_op_compat +EXPORT_SYMBOL_GPL vmlinux 0xad90ec29 ata_sff_dev_classify +EXPORT_SYMBOL_GPL vmlinux 0xadc785ec kgdb_register_io_module +EXPORT_SYMBOL_GPL vmlinux 0xadd3e10b ipv6_opt_accepted +EXPORT_SYMBOL_GPL vmlinux 0xade07100 fuse_dev_operations +EXPORT_SYMBOL_GPL vmlinux 0xade63c4d usb_submit_urb +EXPORT_SYMBOL_GPL vmlinux 0xade7857f for_each_kernel_tracepoint +EXPORT_SYMBOL_GPL vmlinux 0xadf6aa4d tpm_pcr_read +EXPORT_SYMBOL_GPL vmlinux 0xadf8de8c dm_suspended +EXPORT_SYMBOL_GPL vmlinux 0xae0d9889 fuse_get_req +EXPORT_SYMBOL_GPL vmlinux 0xae2ee9c7 extcon_register_interest +EXPORT_SYMBOL_GPL vmlinux 0xae35be1a transport_destroy_device +EXPORT_SYMBOL_GPL vmlinux 0xae40e4c5 replace_page_cache_page +EXPORT_SYMBOL_GPL vmlinux 0xae69b1c1 usermodehelper_read_unlock +EXPORT_SYMBOL_GPL vmlinux 0xae6eaf93 hwpoison_filter_dev_minor +EXPORT_SYMBOL_GPL vmlinux 0xae7c231d mpi_cmp +EXPORT_SYMBOL_GPL vmlinux 0xaead74dd rio_register_driver +EXPORT_SYMBOL_GPL vmlinux 0xaec56c3d sdio_readw +EXPORT_SYMBOL_GPL vmlinux 0xaee886d5 ip6_datagram_recv_ctl +EXPORT_SYMBOL_GPL vmlinux 0xaef32dab device_release_driver +EXPORT_SYMBOL_GPL vmlinux 0xaf0d9bb5 mmc_regulator_get_supply +EXPORT_SYMBOL_GPL vmlinux 0xaf217534 ehci_reset +EXPORT_SYMBOL_GPL vmlinux 0xaf32ab26 __mmu_notifier_invalidate_range_start +EXPORT_SYMBOL_GPL vmlinux 0xaf37ee15 crypto_alg_lookup +EXPORT_SYMBOL_GPL vmlinux 0xaf5bd53d devm_usb_put_phy +EXPORT_SYMBOL_GPL vmlinux 0xaf6170a9 ima_file_check +EXPORT_SYMBOL_GPL vmlinux 0xaf7b43bc inet_csk_search_req +EXPORT_SYMBOL_GPL vmlinux 0xaf92666b syscon_node_to_regmap +EXPORT_SYMBOL_GPL vmlinux 0xaf9439db leds_list_lock +EXPORT_SYMBOL_GPL vmlinux 0xaf9cbd05 iommu_domain_get_attr +EXPORT_SYMBOL_GPL vmlinux 0xaf9dab60 pciserial_init_ports +EXPORT_SYMBOL_GPL vmlinux 0xafa765a6 __rt_mutex_init +EXPORT_SYMBOL_GPL vmlinux 0xafcbf130 blkg_rwstat_recursive_sum +EXPORT_SYMBOL_GPL vmlinux 0xafcd117c platform_device_add +EXPORT_SYMBOL_GPL vmlinux 0xafe1adf3 pci_intx +EXPORT_SYMBOL_GPL vmlinux 0xafe9b328 cpu_tlbstate +EXPORT_SYMBOL_GPL vmlinux 0xb002010f irq_domain_add_simple +EXPORT_SYMBOL_GPL vmlinux 0xb002b58b alarmtimer_get_rtcdev +EXPORT_SYMBOL_GPL vmlinux 0xb0261179 devm_kmemdup +EXPORT_SYMBOL_GPL vmlinux 0xb02ac411 register_xenstore_notifier +EXPORT_SYMBOL_GPL vmlinux 0xb0400c6b add_timer_on +EXPORT_SYMBOL_GPL vmlinux 0xb04e4ced led_trigger_unregister_simple +EXPORT_SYMBOL_GPL vmlinux 0xb068cf9c kernfs_notify +EXPORT_SYMBOL_GPL vmlinux 0xb06c6ed8 perf_pmu_unregister +EXPORT_SYMBOL_GPL vmlinux 0xb077e70a clk_unprepare +EXPORT_SYMBOL_GPL vmlinux 0xb07fdef5 rtnl_link_unregister +EXPORT_SYMBOL_GPL vmlinux 0xb084be70 smpboot_register_percpu_thread +EXPORT_SYMBOL_GPL vmlinux 0xb084e571 vfs_fallocate +EXPORT_SYMBOL_GPL vmlinux 0xb0a5d1e8 crypto_shash_final +EXPORT_SYMBOL_GPL vmlinux 0xb0b04709 to_nd_region +EXPORT_SYMBOL_GPL vmlinux 0xb0b71eda spi_setup +EXPORT_SYMBOL_GPL vmlinux 0xb0b85f47 ring_buffer_iter_reset +EXPORT_SYMBOL_GPL vmlinux 0xb0ce11f7 devm_kasprintf +EXPORT_SYMBOL_GPL vmlinux 0xb0d10ce0 posix_clock_register +EXPORT_SYMBOL_GPL vmlinux 0xb0d1656c gpio_free_array +EXPORT_SYMBOL_GPL vmlinux 0xb108f08e tcp_get_info +EXPORT_SYMBOL_GPL vmlinux 0xb12609dc blkg_stat_recursive_sum +EXPORT_SYMBOL_GPL vmlinux 0xb12686fa __mmu_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0xb140d14c ring_buffer_read +EXPORT_SYMBOL_GPL vmlinux 0xb1425b32 dm_table_add_target_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xb16585f4 ip6_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0xb172ffac efivars_sysfs_init +EXPORT_SYMBOL_GPL vmlinux 0xb1793f44 crypto_alg_sem +EXPORT_SYMBOL_GPL vmlinux 0xb183e5fb regmap_async_complete_cb +EXPORT_SYMBOL_GPL vmlinux 0xb18429eb suspend_device_irqs +EXPORT_SYMBOL_GPL vmlinux 0xb1899a72 watchdog_register_device +EXPORT_SYMBOL_GPL vmlinux 0xb1a12844 usb_phy_generic_unregister +EXPORT_SYMBOL_GPL vmlinux 0xb1a5f2fe usb_anchor_empty +EXPORT_SYMBOL_GPL vmlinux 0xb1acbcce rcu_barrier_sched +EXPORT_SYMBOL_GPL vmlinux 0xb1aee192 anon_transport_class_unregister +EXPORT_SYMBOL_GPL vmlinux 0xb1ba4afc crypto_register_rngs +EXPORT_SYMBOL_GPL vmlinux 0xb1bed25d dpm_resume_start +EXPORT_SYMBOL_GPL vmlinux 0xb1bedeb7 register_jprobe +EXPORT_SYMBOL_GPL vmlinux 0xb1c0c1c2 async_schedule_domain +EXPORT_SYMBOL_GPL vmlinux 0xb1cf5c69 tps6586x_reads +EXPORT_SYMBOL_GPL vmlinux 0xb1deb238 hrtimer_init +EXPORT_SYMBOL_GPL vmlinux 0xb1e25684 __trace_bputs +EXPORT_SYMBOL_GPL vmlinux 0xb1e2f4cc sysfs_create_link +EXPORT_SYMBOL_GPL vmlinux 0xb1f12164 irq_gc_ack_set_bit +EXPORT_SYMBOL_GPL vmlinux 0xb2102deb ata_timing_compute +EXPORT_SYMBOL_GPL vmlinux 0xb2210d64 reset_control_deassert +EXPORT_SYMBOL_GPL vmlinux 0xb2446715 __mnt_drop_write +EXPORT_SYMBOL_GPL vmlinux 0xb26a1add elfcorehdr_addr +EXPORT_SYMBOL_GPL vmlinux 0xb278ee9e acpi_subsys_suspend +EXPORT_SYMBOL_GPL vmlinux 0xb285b8f8 xen_in_preemptible_hcall +EXPORT_SYMBOL_GPL vmlinux 0xb2952a41 ehci_init_driver +EXPORT_SYMBOL_GPL vmlinux 0xb295ec53 devfreq_event_get_event +EXPORT_SYMBOL_GPL vmlinux 0xb29afb09 __sock_recv_ts_and_drops +EXPORT_SYMBOL_GPL vmlinux 0xb2bc71a4 devfreq_event_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0xb2bd4f3f gpiod_set_debounce +EXPORT_SYMBOL_GPL vmlinux 0xb2e764e8 suspend_valid_only_mem +EXPORT_SYMBOL_GPL vmlinux 0xb30a929f usb_unlocked_disable_lpm +EXPORT_SYMBOL_GPL vmlinux 0xb3200df5 dma_buf_begin_cpu_access +EXPORT_SYMBOL_GPL vmlinux 0xb3253ed9 hpet_rtc_timer_init +EXPORT_SYMBOL_GPL vmlinux 0xb32af9f7 attribute_container_register +EXPORT_SYMBOL_GPL vmlinux 0xb32d5525 __blkg_prfill_u64 +EXPORT_SYMBOL_GPL vmlinux 0xb33f0d48 __pm_runtime_idle +EXPORT_SYMBOL_GPL vmlinux 0xb347bb2c work_busy +EXPORT_SYMBOL_GPL vmlinux 0xb34d3506 bpf_prog_free +EXPORT_SYMBOL_GPL vmlinux 0xb37d67c6 rio_map_inb_region +EXPORT_SYMBOL_GPL vmlinux 0xb3839b6e acpi_driver_match_device +EXPORT_SYMBOL_GPL vmlinux 0xb3a853c5 regmap_write +EXPORT_SYMBOL_GPL vmlinux 0xb3b3395b tty_ldisc_deref +EXPORT_SYMBOL_GPL vmlinux 0xb3bf6ae5 extcon_get_extcon_dev +EXPORT_SYMBOL_GPL vmlinux 0xb3d89ff0 pinctrl_remove_gpio_range +EXPORT_SYMBOL_GPL vmlinux 0xb3f0b633 clk_debugfs_add_file +EXPORT_SYMBOL_GPL vmlinux 0xb407040d blk_rq_prep_clone +EXPORT_SYMBOL_GPL vmlinux 0xb419072c crypto_mod_put +EXPORT_SYMBOL_GPL vmlinux 0xb438b0ac regulator_can_change_voltage +EXPORT_SYMBOL_GPL vmlinux 0xb43e803c bio_associate_blkcg +EXPORT_SYMBOL_GPL vmlinux 0xb4557e67 __wake_up_sync_key +EXPORT_SYMBOL_GPL vmlinux 0xb4759adc stop_machine +EXPORT_SYMBOL_GPL vmlinux 0xb4772bda crypto_register_rng +EXPORT_SYMBOL_GPL vmlinux 0xb47920ae aead_geniv_exit +EXPORT_SYMBOL_GPL vmlinux 0xb4b34c5c sata_pmp_error_handler +EXPORT_SYMBOL_GPL vmlinux 0xb4b97c90 pvclock_gtod_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xb4be9d67 sdio_claim_irq +EXPORT_SYMBOL_GPL vmlinux 0xb4c1e79c dpm_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0xb4e14553 gnttab_query_foreign_access +EXPORT_SYMBOL_GPL vmlinux 0xb4e7b826 ata_host_resume +EXPORT_SYMBOL_GPL vmlinux 0xb4ea7cf7 kgdb_connected +EXPORT_SYMBOL_GPL vmlinux 0xb4eca444 wait_for_stable_page +EXPORT_SYMBOL_GPL vmlinux 0xb4ee77fb sdio_release_irq +EXPORT_SYMBOL_GPL vmlinux 0xb4ee878a pinctrl_find_and_add_gpio_range +EXPORT_SYMBOL_GPL vmlinux 0xb50e282b device_property_read_string +EXPORT_SYMBOL_GPL vmlinux 0xb51f28fe need_load_eval +EXPORT_SYMBOL_GPL vmlinux 0xb51fbd64 edac_op_state +EXPORT_SYMBOL_GPL vmlinux 0xb53620d1 pci_vpd_find_info_keyword +EXPORT_SYMBOL_GPL vmlinux 0xb547e089 fs_kobj +EXPORT_SYMBOL_GPL vmlinux 0xb56bcff1 uart_console_write +EXPORT_SYMBOL_GPL vmlinux 0xb5848bae __iowrite32_copy +EXPORT_SYMBOL_GPL vmlinux 0xb5859039 sdio_memcpy_toio +EXPORT_SYMBOL_GPL vmlinux 0xb58dcfa2 synchronize_sched_expedited +EXPORT_SYMBOL_GPL vmlinux 0xb58de4b2 regmap_write_async +EXPORT_SYMBOL_GPL vmlinux 0xb5a0e11e lpddr2_jedec_addressing_table +EXPORT_SYMBOL_GPL vmlinux 0xb5b0bf33 da9052_request_irq +EXPORT_SYMBOL_GPL vmlinux 0xb5bd9d12 sdio_f0_writeb +EXPORT_SYMBOL_GPL vmlinux 0xb5c25bbf rio_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0xb5dabd8c con_debug_enter +EXPORT_SYMBOL_GPL vmlinux 0xb5f17edf perf_register_guest_info_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xb619ee83 sched_setattr +EXPORT_SYMBOL_GPL vmlinux 0xb6230f1f gnttab_grant_foreign_access +EXPORT_SYMBOL_GPL vmlinux 0xb6261484 register_die_notifier +EXPORT_SYMBOL_GPL vmlinux 0xb645ba78 skb_to_sgvec_nomark +EXPORT_SYMBOL_GPL vmlinux 0xb66421b2 acpi_str_to_uuid +EXPORT_SYMBOL_GPL vmlinux 0xb6846fce inverse_translate +EXPORT_SYMBOL_GPL vmlinux 0xb6aeb661 ata_id_c_string +EXPORT_SYMBOL_GPL vmlinux 0xb6cf4d71 kobject_uevent +EXPORT_SYMBOL_GPL vmlinux 0xb6e6d99d clk_disable +EXPORT_SYMBOL_GPL vmlinux 0xb707add8 xenbus_watch_pathfmt +EXPORT_SYMBOL_GPL vmlinux 0xb718f2f9 sfi_table_parse +EXPORT_SYMBOL_GPL vmlinux 0xb71df2b0 rdev_get_dev +EXPORT_SYMBOL_GPL vmlinux 0xb72b4191 kernfs_put +EXPORT_SYMBOL_GPL vmlinux 0xb7329c06 clk_set_phase +EXPORT_SYMBOL_GPL vmlinux 0xb73b740a trace_print_bitmask_seq +EXPORT_SYMBOL_GPL vmlinux 0xb7600560 regmap_attach_dev +EXPORT_SYMBOL_GPL vmlinux 0xb778af96 disk_part_iter_init +EXPORT_SYMBOL_GPL vmlinux 0xb77bba8d acpi_get_pci_dev +EXPORT_SYMBOL_GPL vmlinux 0xb77e7c32 ata_sff_dev_select +EXPORT_SYMBOL_GPL vmlinux 0xb7a949d0 device_store_int +EXPORT_SYMBOL_GPL vmlinux 0xb7bf4b67 iommu_group_add_device +EXPORT_SYMBOL_GPL vmlinux 0xb7c366c5 acpi_register_gsi +EXPORT_SYMBOL_GPL vmlinux 0xb7d7c12e hpet_set_alarm_time +EXPORT_SYMBOL_GPL vmlinux 0xb7f6e2fd subsys_dev_iter_next +EXPORT_SYMBOL_GPL vmlinux 0xb7f77027 rtc_tm_to_ktime +EXPORT_SYMBOL_GPL vmlinux 0xb80b4354 devfreq_event_enable_edev +EXPORT_SYMBOL_GPL vmlinux 0xb81b89a8 percpu_ida_for_each_free +EXPORT_SYMBOL_GPL vmlinux 0xb82ff556 usb_unlink_urb +EXPORT_SYMBOL_GPL vmlinux 0xb8481327 devm_usb_get_phy_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0xb8494cef __pm_wakeup_event +EXPORT_SYMBOL_GPL vmlinux 0xb85de0d2 component_master_add_child +EXPORT_SYMBOL_GPL vmlinux 0xb8b2b1f7 mce_register_decode_chain +EXPORT_SYMBOL_GPL vmlinux 0xb8ba6eb8 tty_buffer_request_room +EXPORT_SYMBOL_GPL vmlinux 0xb8cd3a7f nf_logger_put +EXPORT_SYMBOL_GPL vmlinux 0xb8ec3706 gnttab_unmap_refs_sync +EXPORT_SYMBOL_GPL vmlinux 0xb903674c scatterwalk_map_and_copy +EXPORT_SYMBOL_GPL vmlinux 0xb91c82b5 rtc_class_close +EXPORT_SYMBOL_GPL vmlinux 0xb967cfe9 get_current_tty +EXPORT_SYMBOL_GPL vmlinux 0xb96c5501 led_trigger_set_default +EXPORT_SYMBOL_GPL vmlinux 0xb97416c2 gpiod_set_raw_array_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0xb98a4c77 ata_sff_drain_fifo +EXPORT_SYMBOL_GPL vmlinux 0xb98b937c bus_unregister +EXPORT_SYMBOL_GPL vmlinux 0xb99d5837 xenbus_read +EXPORT_SYMBOL_GPL vmlinux 0xb9b9df41 usb_amd_dev_put +EXPORT_SYMBOL_GPL vmlinux 0xb9c425de register_syscore_ops +EXPORT_SYMBOL_GPL vmlinux 0xb9cd4d1f kernfs_path +EXPORT_SYMBOL_GPL vmlinux 0xb9d025c9 llist_del_first +EXPORT_SYMBOL_GPL vmlinux 0xb9ebfb0b devm_of_phy_get +EXPORT_SYMBOL_GPL vmlinux 0xb9fda037 inet6_csk_reqsk_queue_hash_add +EXPORT_SYMBOL_GPL vmlinux 0xba2b7f64 cpufreq_generic_get +EXPORT_SYMBOL_GPL vmlinux 0xba3549a1 gen_pool_avail +EXPORT_SYMBOL_GPL vmlinux 0xba3889cb __clk_get_hw +EXPORT_SYMBOL_GPL vmlinux 0xba435b87 br_fdb_test_addr_hook +EXPORT_SYMBOL_GPL vmlinux 0xba52eef8 usb_register_device_driver +EXPORT_SYMBOL_GPL vmlinux 0xba791d08 fat_sync_inode +EXPORT_SYMBOL_GPL vmlinux 0xba84576d gpiod_direction_input +EXPORT_SYMBOL_GPL vmlinux 0xba899caa usb_set_interface +EXPORT_SYMBOL_GPL vmlinux 0xba94c685 cper_estatus_check +EXPORT_SYMBOL_GPL vmlinux 0xba9abfed dev_set_name +EXPORT_SYMBOL_GPL vmlinux 0xba9c832a page_endio +EXPORT_SYMBOL_GPL vmlinux 0xbaa7e4b6 tty_ldisc_ref_wait +EXPORT_SYMBOL_GPL vmlinux 0xbab9a9f0 maxim_charger_currents +EXPORT_SYMBOL_GPL vmlinux 0xbabf807e virtqueue_poll +EXPORT_SYMBOL_GPL vmlinux 0xbada2cef pm_runtime_irq_safe +EXPORT_SYMBOL_GPL vmlinux 0xbaf8a381 usb_remove_hcd +EXPORT_SYMBOL_GPL vmlinux 0xbb038ce4 perf_unregister_guest_info_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xbb0ab47b debug_locks +EXPORT_SYMBOL_GPL vmlinux 0xbb1095d3 pcc_mbox_free_channel +EXPORT_SYMBOL_GPL vmlinux 0xbb127643 tty_prepare_flip_string +EXPORT_SYMBOL_GPL vmlinux 0xbb128381 irq_set_affinity_hint +EXPORT_SYMBOL_GPL vmlinux 0xbb1c5a40 __add_pages +EXPORT_SYMBOL_GPL vmlinux 0xbb218fc4 debugfs_create_x32 +EXPORT_SYMBOL_GPL vmlinux 0xbb463c8a set_pages_array_wt +EXPORT_SYMBOL_GPL vmlinux 0xbb5c04db usb_hcd_amd_remote_wakeup_quirk +EXPORT_SYMBOL_GPL vmlinux 0xbb5c3fc1 debugfs_create_u16 +EXPORT_SYMBOL_GPL vmlinux 0xbb6b4801 fanout_mutex +EXPORT_SYMBOL_GPL vmlinux 0xbb6f025a asymmetric_key_generate_id +EXPORT_SYMBOL_GPL vmlinux 0xbbb72857 device_store_bool +EXPORT_SYMBOL_GPL vmlinux 0xbbb98859 edid_info +EXPORT_SYMBOL_GPL vmlinux 0xbbc5820f ata_bmdma_port_ops +EXPORT_SYMBOL_GPL vmlinux 0xbbd4f657 xen_pcpu_id +EXPORT_SYMBOL_GPL vmlinux 0xbbd7dc4c dm_get_queue_limits +EXPORT_SYMBOL_GPL vmlinux 0xbbe9498c x86_hyper_kvm +EXPORT_SYMBOL_GPL vmlinux 0xbbec7ba1 bus_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xbbf0ae4d crypto_alloc_base +EXPORT_SYMBOL_GPL vmlinux 0xbbfd5303 max8997_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0xbbfdf7b5 usb_deregister_dev +EXPORT_SYMBOL_GPL vmlinux 0xbc01f259 virtio_device_freeze +EXPORT_SYMBOL_GPL vmlinux 0xbc0bc6bd securityfs_create_file +EXPORT_SYMBOL_GPL vmlinux 0xbc1f9fac devres_release_group +EXPORT_SYMBOL_GPL vmlinux 0xbc47fd49 __tracepoint_detach_device_from_domain +EXPORT_SYMBOL_GPL vmlinux 0xbc48bb2c wm5110_patch +EXPORT_SYMBOL_GPL vmlinux 0xbc62b790 blockdev_superblock +EXPORT_SYMBOL_GPL vmlinux 0xbc6589dc dev_attr_link_power_management_policy +EXPORT_SYMBOL_GPL vmlinux 0xbc6f7f7d iommu_domain_window_enable +EXPORT_SYMBOL_GPL vmlinux 0xbcac6160 pm_qos_remove_notifier +EXPORT_SYMBOL_GPL vmlinux 0xbcadc8e2 ata_sas_sync_probe +EXPORT_SYMBOL_GPL vmlinux 0xbcb76da7 securityfs_create_dir +EXPORT_SYMBOL_GPL vmlinux 0xbcb838a1 amd_flush_garts +EXPORT_SYMBOL_GPL vmlinux 0xbcbc9ae0 to_nvdimm_bus +EXPORT_SYMBOL_GPL vmlinux 0xbccfd4d8 register_oldmem_pfn_is_ram +EXPORT_SYMBOL_GPL vmlinux 0xbcd0e0e8 tty_port_tty_wakeup +EXPORT_SYMBOL_GPL vmlinux 0xbcd9a2ad skb_append_pagefrags +EXPORT_SYMBOL_GPL vmlinux 0xbcdd5b99 iommu_group_set_name +EXPORT_SYMBOL_GPL vmlinux 0xbd054b57 usb_sg_wait +EXPORT_SYMBOL_GPL vmlinux 0xbd3251d6 bitmap_copy_from_slot +EXPORT_SYMBOL_GPL vmlinux 0xbd3fe1e3 disable_hardirq +EXPORT_SYMBOL_GPL vmlinux 0xbd43c06c power_supply_class +EXPORT_SYMBOL_GPL vmlinux 0xbd5cb8b9 ring_buffer_resize +EXPORT_SYMBOL_GPL vmlinux 0xbd63d6f4 ata_sas_port_stop +EXPORT_SYMBOL_GPL vmlinux 0xbd64fa80 ip_local_out_sk +EXPORT_SYMBOL_GPL vmlinux 0xbd671048 __alloc_percpu_gfp +EXPORT_SYMBOL_GPL vmlinux 0xbd82ec67 tty_port_register_device_attr +EXPORT_SYMBOL_GPL vmlinux 0xbd839d72 devm_hwrng_register +EXPORT_SYMBOL_GPL vmlinux 0xbd86b127 usb_scuttle_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0xbd89c51b device_move +EXPORT_SYMBOL_GPL vmlinux 0xbd8cd7ba bus_remove_file +EXPORT_SYMBOL_GPL vmlinux 0xbd9aca9e ipv4_sk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0xbdb5fbc9 dev_pm_domain_detach +EXPORT_SYMBOL_GPL vmlinux 0xbdd295f0 trace_vprintk +EXPORT_SYMBOL_GPL vmlinux 0xbdd2f42a rcu_bh_force_quiescent_state +EXPORT_SYMBOL_GPL vmlinux 0xbdd5f10f apei_hest_parse +EXPORT_SYMBOL_GPL vmlinux 0xbdff77df to_nd_blk_region +EXPORT_SYMBOL_GPL vmlinux 0xbe11055d pskb_put +EXPORT_SYMBOL_GPL vmlinux 0xbe1887e4 ata_unpack_xfermask +EXPORT_SYMBOL_GPL vmlinux 0xbe3bb231 acpiphp_unregister_attention +EXPORT_SYMBOL_GPL vmlinux 0xbe494779 blkg_lookup +EXPORT_SYMBOL_GPL vmlinux 0xbe5d0996 idle_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0xbe5d511c dio_end_io +EXPORT_SYMBOL_GPL vmlinux 0xbe687e88 wake_up_all_idle_cpus +EXPORT_SYMBOL_GPL vmlinux 0xbe822f6b skb_zerocopy +EXPORT_SYMBOL_GPL vmlinux 0xbea5ff1e static_key_initialized +EXPORT_SYMBOL_GPL vmlinux 0xbeb41622 firmware_kobj +EXPORT_SYMBOL_GPL vmlinux 0xbec3f1f6 sata_port_ops +EXPORT_SYMBOL_GPL vmlinux 0xbec8c6d3 powercap_unregister_control_type +EXPORT_SYMBOL_GPL vmlinux 0xbee21107 dm_internal_suspend_noflush +EXPORT_SYMBOL_GPL vmlinux 0xbef0ff6e ip6_sk_dst_lookup_flow +EXPORT_SYMBOL_GPL vmlinux 0xbf041102 register_vt_notifier +EXPORT_SYMBOL_GPL vmlinux 0xbf13c49b debugfs_create_file_size +EXPORT_SYMBOL_GPL vmlinux 0xbf70c548 __srcu_read_unlock +EXPORT_SYMBOL_GPL vmlinux 0xbf9adccc crypto_alloc_shash +EXPORT_SYMBOL_GPL vmlinux 0xbfabd074 napi_hash_del +EXPORT_SYMBOL_GPL vmlinux 0xbfaf7621 usb_add_phy_dev +EXPORT_SYMBOL_GPL vmlinux 0xbfb1be70 hv_setup_vmbus_irq +EXPORT_SYMBOL_GPL vmlinux 0xbfb1db41 ptp_classify_raw +EXPORT_SYMBOL_GPL vmlinux 0xbfb7cec4 regulator_set_drvdata +EXPORT_SYMBOL_GPL vmlinux 0xbfbc5434 pciserial_resume_ports +EXPORT_SYMBOL_GPL vmlinux 0xbfc7a8c3 xfrm_audit_state_delete +EXPORT_SYMBOL_GPL vmlinux 0xbfc8c17a dma_buf_put +EXPORT_SYMBOL_GPL vmlinux 0xbfd10bb7 clk_register_mux_table +EXPORT_SYMBOL_GPL vmlinux 0xbfd685f5 usb_disable_xhci_ports +EXPORT_SYMBOL_GPL vmlinux 0xbfe5616d tick_broadcast_oneshot_control +EXPORT_SYMBOL_GPL vmlinux 0xbff5e2b0 crypto_alloc_aead +EXPORT_SYMBOL_GPL vmlinux 0xbffde8ec compat_alloc_user_space +EXPORT_SYMBOL_GPL vmlinux 0xc021928f rdev_clear_badblocks +EXPORT_SYMBOL_GPL vmlinux 0xc022961f tcp_twsk_unique +EXPORT_SYMBOL_GPL vmlinux 0xc04b21bd acpi_os_unmap_iomem +EXPORT_SYMBOL_GPL vmlinux 0xc08647ff ring_buffer_bytes_cpu +EXPORT_SYMBOL_GPL vmlinux 0xc089adfb fuse_do_ioctl +EXPORT_SYMBOL_GPL vmlinux 0xc0900fcf acpi_os_get_iomem +EXPORT_SYMBOL_GPL vmlinux 0xc09f57cf dev_attr_sw_activity +EXPORT_SYMBOL_GPL vmlinux 0xc0a96e14 rcu_gp_is_expedited +EXPORT_SYMBOL_GPL vmlinux 0xc0d26387 kmsg_dump_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc0df8865 timerqueue_add +EXPORT_SYMBOL_GPL vmlinux 0xc0e42aca pci_intx_mask_supported +EXPORT_SYMBOL_GPL vmlinux 0xc0ea12ec xhci_run +EXPORT_SYMBOL_GPL vmlinux 0xc115a8db irq_create_of_mapping +EXPORT_SYMBOL_GPL vmlinux 0xc13793b7 usb_sg_cancel +EXPORT_SYMBOL_GPL vmlinux 0xc14c2824 xenbus_probe +EXPORT_SYMBOL_GPL vmlinux 0xc164642e xenbus_otherend_changed +EXPORT_SYMBOL_GPL vmlinux 0xc17515d7 usb_hcds_loaded +EXPORT_SYMBOL_GPL vmlinux 0xc1a4e6e0 xen_register_device_domain_owner +EXPORT_SYMBOL_GPL vmlinux 0xc1d05379 phy_pm_runtime_get +EXPORT_SYMBOL_GPL vmlinux 0xc1e0c3f4 sdhci_pci_o2_probe_slot +EXPORT_SYMBOL_GPL vmlinux 0xc1e8a955 elv_register +EXPORT_SYMBOL_GPL vmlinux 0xc1f04980 single_release_net +EXPORT_SYMBOL_GPL vmlinux 0xc22a3091 vm_unmap_aliases +EXPORT_SYMBOL_GPL vmlinux 0xc25b8971 hv_remove_crash_handler +EXPORT_SYMBOL_GPL vmlinux 0xc26351f8 bind_evtchn_to_irq +EXPORT_SYMBOL_GPL vmlinux 0xc26e3a87 pci_hp_remove_module_link +EXPORT_SYMBOL_GPL vmlinux 0xc280fb46 kdb_register +EXPORT_SYMBOL_GPL vmlinux 0xc287d96a kvm_set_posted_intr_wakeup_handler +EXPORT_SYMBOL_GPL vmlinux 0xc28cb8ce regmap_get_reg_stride +EXPORT_SYMBOL_GPL vmlinux 0xc28f08fb set_online_page_callback +EXPORT_SYMBOL_GPL vmlinux 0xc29ec6d0 dm_accept_partial_bio +EXPORT_SYMBOL_GPL vmlinux 0xc29ff3d1 shmem_read_mapping_page_gfp +EXPORT_SYMBOL_GPL vmlinux 0xc2a2b98a __fib_lookup +EXPORT_SYMBOL_GPL vmlinux 0xc2c5fba7 dma_run_dependencies +EXPORT_SYMBOL_GPL vmlinux 0xc2c8246c regmap_multi_reg_write +EXPORT_SYMBOL_GPL vmlinux 0xc2d97f20 cpufreq_frequency_table_verify +EXPORT_SYMBOL_GPL vmlinux 0xc311c679 tracepoint_probe_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc33e834d iommu_present +EXPORT_SYMBOL_GPL vmlinux 0xc341ae6d zs_map_object +EXPORT_SYMBOL_GPL vmlinux 0xc357923c pm_qos_update_request +EXPORT_SYMBOL_GPL vmlinux 0xc35c9ce2 sata_sff_hardreset +EXPORT_SYMBOL_GPL vmlinux 0xc369e616 phy_pm_runtime_forbid +EXPORT_SYMBOL_GPL vmlinux 0xc37226a5 tpm_pcr_extend +EXPORT_SYMBOL_GPL vmlinux 0xc3f4f470 get_net_ns_by_pid +EXPORT_SYMBOL_GPL vmlinux 0xc402da40 cpuidle_get_cpu_driver +EXPORT_SYMBOL_GPL vmlinux 0xc404f3ef sock_diag_put_meminfo +EXPORT_SYMBOL_GPL vmlinux 0xc428068d sata_deb_timing_long +EXPORT_SYMBOL_GPL vmlinux 0xc447dd93 enable_kprobe +EXPORT_SYMBOL_GPL vmlinux 0xc450ddce pci_add_dynid +EXPORT_SYMBOL_GPL vmlinux 0xc454fc7b twl_get_type +EXPORT_SYMBOL_GPL vmlinux 0xc457e93a ata_port_wait_eh +EXPORT_SYMBOL_GPL vmlinux 0xc471c67a twl4030_audio_disable_resource +EXPORT_SYMBOL_GPL vmlinux 0xc48b7ccf ata_mode_string +EXPORT_SYMBOL_GPL vmlinux 0xc4953190 bdev_read_page +EXPORT_SYMBOL_GPL vmlinux 0xc49945f2 acpi_ec_add_query_handler +EXPORT_SYMBOL_GPL vmlinux 0xc4a86481 hvc_instantiate +EXPORT_SYMBOL_GPL vmlinux 0xc4b32d7c ata_std_qc_defer +EXPORT_SYMBOL_GPL vmlinux 0xc4bb353c da9052_enable_irq +EXPORT_SYMBOL_GPL vmlinux 0xc512626a __supported_pte_mask +EXPORT_SYMBOL_GPL vmlinux 0xc5216422 blkcipher_walk_done +EXPORT_SYMBOL_GPL vmlinux 0xc5228490 ata_sas_port_suspend +EXPORT_SYMBOL_GPL vmlinux 0xc5302c28 ata_std_error_handler +EXPORT_SYMBOL_GPL vmlinux 0xc5386a50 rtc_set_alarm +EXPORT_SYMBOL_GPL vmlinux 0xc5397da6 xenbus_mkdir +EXPORT_SYMBOL_GPL vmlinux 0xc53ab2bb vring_del_virtqueue +EXPORT_SYMBOL_GPL vmlinux 0xc542933a timecounter_read +EXPORT_SYMBOL_GPL vmlinux 0xc55bf19e pci_assign_unassigned_bus_resources +EXPORT_SYMBOL_GPL vmlinux 0xc562d69d ata_link_next +EXPORT_SYMBOL_GPL vmlinux 0xc575c737 debug_locks_off +EXPORT_SYMBOL_GPL vmlinux 0xc5767144 ata_link_offline +EXPORT_SYMBOL_GPL vmlinux 0xc5774ac4 __fat_fs_error +EXPORT_SYMBOL_GPL vmlinux 0xc586ec58 mbox_free_channel +EXPORT_SYMBOL_GPL vmlinux 0xc586ede1 devm_regmap_init_i2c +EXPORT_SYMBOL_GPL vmlinux 0xc5a1c470 fwnode_property_read_u8_array +EXPORT_SYMBOL_GPL vmlinux 0xc5a46102 apei_get_debugfs_dir +EXPORT_SYMBOL_GPL vmlinux 0xc5b49ec4 gen_pool_get +EXPORT_SYMBOL_GPL vmlinux 0xc5c338d5 usb_interrupt_msg +EXPORT_SYMBOL_GPL vmlinux 0xc5c65031 devfreq_event_add_edev +EXPORT_SYMBOL_GPL vmlinux 0xc5d96b3b fat_get_dotdot_entry +EXPORT_SYMBOL_GPL vmlinux 0xc5ea9f9d usb_store_new_id +EXPORT_SYMBOL_GPL vmlinux 0xc5eb42cf device_set_wakeup_capable +EXPORT_SYMBOL_GPL vmlinux 0xc5f11b3d skb_scrub_packet +EXPORT_SYMBOL_GPL vmlinux 0xc5f65526 setup_irq +EXPORT_SYMBOL_GPL vmlinux 0xc600f15a usb_hcd_pci_pm_ops +EXPORT_SYMBOL_GPL vmlinux 0xc617f82c unregister_oom_notifier +EXPORT_SYMBOL_GPL vmlinux 0xc61d3d9a regulator_bulk_force_disable +EXPORT_SYMBOL_GPL vmlinux 0xc6217f47 acpi_create_platform_device +EXPORT_SYMBOL_GPL vmlinux 0xc63036e9 usb_enable_lpm +EXPORT_SYMBOL_GPL vmlinux 0xc63d847d ktime_get_mono_fast_ns +EXPORT_SYMBOL_GPL vmlinux 0xc64269d1 get_hwpoison_page +EXPORT_SYMBOL_GPL vmlinux 0xc6575275 trace_seq_path +EXPORT_SYMBOL_GPL vmlinux 0xc659ef1e dma_get_any_slave_channel +EXPORT_SYMBOL_GPL vmlinux 0xc65d3eed ring_buffer_entries_cpu +EXPORT_SYMBOL_GPL vmlinux 0xc66019cc xen_resume_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc66b77b1 iommu_group_set_iommudata +EXPORT_SYMBOL_GPL vmlinux 0xc6793f1f crypto_grab_aead +EXPORT_SYMBOL_GPL vmlinux 0xc68321e1 trace_event_buffer_commit +EXPORT_SYMBOL_GPL vmlinux 0xc690fca4 xen_pci_frontend +EXPORT_SYMBOL_GPL vmlinux 0xc69b7ee5 zs_destroy_pool +EXPORT_SYMBOL_GPL vmlinux 0xc6a21201 acpi_debugfs_dir +EXPORT_SYMBOL_GPL vmlinux 0xc6a4a872 __clk_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0xc6b2c76b rhashtable_walk_next +EXPORT_SYMBOL_GPL vmlinux 0xc6ba01ca blk_queue_rq_timeout +EXPORT_SYMBOL_GPL vmlinux 0xc6bf4e77 sock_gen_put +EXPORT_SYMBOL_GPL vmlinux 0xc6c0aba3 clk_fractional_divider_ops +EXPORT_SYMBOL_GPL vmlinux 0xc6c99c7a pwm_free +EXPORT_SYMBOL_GPL vmlinux 0xc6d4690d hrtimer_get_remaining +EXPORT_SYMBOL_GPL vmlinux 0xc6dd0639 mmc_regulator_set_ocr +EXPORT_SYMBOL_GPL vmlinux 0xc6e812f8 usb_driver_claim_interface +EXPORT_SYMBOL_GPL vmlinux 0xc6f1ee36 ata_sas_port_destroy +EXPORT_SYMBOL_GPL vmlinux 0xc6f62a5e xenbus_unmap_ring_vfree +EXPORT_SYMBOL_GPL vmlinux 0xc7002ac4 evtchn_make_refcounted +EXPORT_SYMBOL_GPL vmlinux 0xc700561e rio_mport_read_config_16 +EXPORT_SYMBOL_GPL vmlinux 0xc7163c9b crypto_unregister_aeads +EXPORT_SYMBOL_GPL vmlinux 0xc72e1233 __trace_bprintk +EXPORT_SYMBOL_GPL vmlinux 0xc75299c6 crypto_aead_setauthsize +EXPORT_SYMBOL_GPL vmlinux 0xc76c9b90 mmu_notifier_unregister_no_release +EXPORT_SYMBOL_GPL vmlinux 0xc770ca7b __netpoll_cleanup +EXPORT_SYMBOL_GPL vmlinux 0xc783eea0 usb_gen_phy_shutdown +EXPORT_SYMBOL_GPL vmlinux 0xc78cfbf7 shmem_get_seals +EXPORT_SYMBOL_GPL vmlinux 0xc78d806a cpufreq_governor_dbs +EXPORT_SYMBOL_GPL vmlinux 0xc7a1840e llist_add_batch +EXPORT_SYMBOL_GPL vmlinux 0xc7b09b2c input_ff_create +EXPORT_SYMBOL_GPL vmlinux 0xc7c6391c mpi_set_buffer +EXPORT_SYMBOL_GPL vmlinux 0xc7e39bca ring_buffer_dropped_events_cpu +EXPORT_SYMBOL_GPL vmlinux 0xc83c90ee gpiochip_irqchip_add +EXPORT_SYMBOL_GPL vmlinux 0xc8425fed dma_buf_kunmap +EXPORT_SYMBOL_GPL vmlinux 0xc842789a device_create_file +EXPORT_SYMBOL_GPL vmlinux 0xc8432127 kick_process +EXPORT_SYMBOL_GPL vmlinux 0xc86f63c5 ping_rcv +EXPORT_SYMBOL_GPL vmlinux 0xc87c1f84 ktime_get +EXPORT_SYMBOL_GPL vmlinux 0xc87e487a sched_clock_idle_sleep_event +EXPORT_SYMBOL_GPL vmlinux 0xc880b3d3 blk_queue_dma_drain +EXPORT_SYMBOL_GPL vmlinux 0xc8add232 ring_buffer_record_disable +EXPORT_SYMBOL_GPL vmlinux 0xc8b1f5a3 blk_mq_freeze_queue_start +EXPORT_SYMBOL_GPL vmlinux 0xc8b41d59 inet_csk_get_port +EXPORT_SYMBOL_GPL vmlinux 0xc8c0df7f usb_acpi_power_manageable +EXPORT_SYMBOL_GPL vmlinux 0xc8c7629a inet_twsk_put +EXPORT_SYMBOL_GPL vmlinux 0xc8c904b5 xfrm_output +EXPORT_SYMBOL_GPL vmlinux 0xc8d2bc1c blk_unprep_request +EXPORT_SYMBOL_GPL vmlinux 0xc8d66671 regulator_set_bypass_regmap +EXPORT_SYMBOL_GPL vmlinux 0xc8de802f cn_netlink_send +EXPORT_SYMBOL_GPL vmlinux 0xc90fbd91 iommu_capable +EXPORT_SYMBOL_GPL vmlinux 0xc91277a1 kgdb_schedule_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0xc91b3fbf wm8350_device_init +EXPORT_SYMBOL_GPL vmlinux 0xc9207764 pm_generic_restore_noirq +EXPORT_SYMBOL_GPL vmlinux 0xc955db65 ref_module +EXPORT_SYMBOL_GPL vmlinux 0xc9561772 fb_destroy_modelist +EXPORT_SYMBOL_GPL vmlinux 0xc9641b48 visitor32 +EXPORT_SYMBOL_GPL vmlinux 0xc9705eeb has_newer_microcode +EXPORT_SYMBOL_GPL vmlinux 0xc99acd38 wm8350_reg_lock +EXPORT_SYMBOL_GPL vmlinux 0xc9a68d55 sdio_writel +EXPORT_SYMBOL_GPL vmlinux 0xc9c3f176 hpet_register_irq_handler +EXPORT_SYMBOL_GPL vmlinux 0xc9c8882a ata_scsi_change_queue_depth +EXPORT_SYMBOL_GPL vmlinux 0xc9ec4e21 free_percpu +EXPORT_SYMBOL_GPL vmlinux 0xc9f8de8d of_css +EXPORT_SYMBOL_GPL vmlinux 0xca07945d ablkcipher_walk_done +EXPORT_SYMBOL_GPL vmlinux 0xca48eb66 pci_num_vf +EXPORT_SYMBOL_GPL vmlinux 0xca4f4890 crypto_register_instance +EXPORT_SYMBOL_GPL vmlinux 0xca7d8764 kthread_freezable_should_stop +EXPORT_SYMBOL_GPL vmlinux 0xca81ea9a xenbus_transaction_end +EXPORT_SYMBOL_GPL vmlinux 0xca9271ee dev_pm_set_dedicated_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0xca94ff44 ata_bmdma_stop +EXPORT_SYMBOL_GPL vmlinux 0xca9f36f0 rt_mutex_lock_interruptible +EXPORT_SYMBOL_GPL vmlinux 0xcaa0e7de dev_pm_qos_remove_notifier +EXPORT_SYMBOL_GPL vmlinux 0xcaa517ff shmem_file_setup +EXPORT_SYMBOL_GPL vmlinux 0xcaaa8431 ata_bmdma_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0xcabe04de cpuidle_resume_and_unlock +EXPORT_SYMBOL_GPL vmlinux 0xcaeed9f7 mnt_want_write +EXPORT_SYMBOL_GPL vmlinux 0xcb15eee9 sdhci_pci_get_data +EXPORT_SYMBOL_GPL vmlinux 0xcb20296e nf_register_afinfo +EXPORT_SYMBOL_GPL vmlinux 0xcb2c6606 pid_nr_ns +EXPORT_SYMBOL_GPL vmlinux 0xcb43022c xenbus_watch_path +EXPORT_SYMBOL_GPL vmlinux 0xcb469d2b ddebug_add_module +EXPORT_SYMBOL_GPL vmlinux 0xcb665a3c kobject_init_and_add +EXPORT_SYMBOL_GPL vmlinux 0xcb770d02 udp4_hwcsum +EXPORT_SYMBOL_GPL vmlinux 0xcb87014a ioremap_uc +EXPORT_SYMBOL_GPL vmlinux 0xcb8d7464 cpufreq_freq_transition_begin +EXPORT_SYMBOL_GPL vmlinux 0xcb8ece1c ata_bmdma_error_handler +EXPORT_SYMBOL_GPL vmlinux 0xcbb91978 gpiod_export_link +EXPORT_SYMBOL_GPL vmlinux 0xcbe56bc2 zs_get_total_pages +EXPORT_SYMBOL_GPL vmlinux 0xcbee20b2 get_cpu_iowait_time_us +EXPORT_SYMBOL_GPL vmlinux 0xcbef9f26 dev_pm_qos_hide_latency_limit +EXPORT_SYMBOL_GPL vmlinux 0xcc1286e9 __pci_complete_power_transition +EXPORT_SYMBOL_GPL vmlinux 0xcc14a07f blkcg_activate_policy +EXPORT_SYMBOL_GPL vmlinux 0xcc20434a hwmon_device_register +EXPORT_SYMBOL_GPL vmlinux 0xcc497a60 fpu__restore +EXPORT_SYMBOL_GPL vmlinux 0xcc62513e pingv6_prot +EXPORT_SYMBOL_GPL vmlinux 0xcc641662 __pci_reset_function_locked +EXPORT_SYMBOL_GPL vmlinux 0xcc64b087 regcache_cache_only +EXPORT_SYMBOL_GPL vmlinux 0xcc85fcb6 async_schedule +EXPORT_SYMBOL_GPL vmlinux 0xcc872659 blkg_prfill_stat +EXPORT_SYMBOL_GPL vmlinux 0xcc968ecb tcp_done +EXPORT_SYMBOL_GPL vmlinux 0xccba8f26 ata_bmdma32_port_ops +EXPORT_SYMBOL_GPL vmlinux 0xcccfb2fa sata_deb_timing_hotplug +EXPORT_SYMBOL_GPL vmlinux 0xccdabeba input_ff_destroy +EXPORT_SYMBOL_GPL vmlinux 0xccdd329a spi_get_device_id +EXPORT_SYMBOL_GPL vmlinux 0xccea4e34 perf_get_x86_pmu_capability +EXPORT_SYMBOL_GPL vmlinux 0xccf56177 irq_setup_alt_chip +EXPORT_SYMBOL_GPL vmlinux 0xcd21d3d4 rio_release_inb_dbell +EXPORT_SYMBOL_GPL vmlinux 0xcd338d8f device_bind_driver +EXPORT_SYMBOL_GPL vmlinux 0xcd411ea1 devm_usb_get_phy_dev +EXPORT_SYMBOL_GPL vmlinux 0xcd4735bb tps6586x_writes +EXPORT_SYMBOL_GPL vmlinux 0xcd54794c __pm_runtime_disable +EXPORT_SYMBOL_GPL vmlinux 0xcd5d4ef9 btree_update +EXPORT_SYMBOL_GPL vmlinux 0xcd91b127 system_highpri_wq +EXPORT_SYMBOL_GPL vmlinux 0xcd974f00 rcu_all_qs +EXPORT_SYMBOL_GPL vmlinux 0xcdb6adcc ras_userspace_consumers +EXPORT_SYMBOL_GPL vmlinux 0xcdb917a1 fat_detach +EXPORT_SYMBOL_GPL vmlinux 0xcdca3691 nr_irqs +EXPORT_SYMBOL_GPL vmlinux 0xcdcb9262 md_stop_writes +EXPORT_SYMBOL_GPL vmlinux 0xcdd44be8 pinctrl_unregister +EXPORT_SYMBOL_GPL vmlinux 0xcdf77640 nf_unregister_afinfo +EXPORT_SYMBOL_GPL vmlinux 0xce12d037 btree_insert +EXPORT_SYMBOL_GPL vmlinux 0xce1a1237 crypto_init_spawn2 +EXPORT_SYMBOL_GPL vmlinux 0xce2dcccc pm_runtime_no_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xce2de3bb usb_queue_reset_device +EXPORT_SYMBOL_GPL vmlinux 0xce3d80da irq_get_domain_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0xce67ab7c put_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0xce6a9d9a trace_current_buffer_discard_commit +EXPORT_SYMBOL_GPL vmlinux 0xce6db656 rcu_is_watching +EXPORT_SYMBOL_GPL vmlinux 0xce80a8cd __rtnl_af_unregister +EXPORT_SYMBOL_GPL vmlinux 0xce83e61a clk_register +EXPORT_SYMBOL_GPL vmlinux 0xce99e06c tps6586x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xcea75d82 nvdimm_blk_region_create +EXPORT_SYMBOL_GPL vmlinux 0xceb02566 iommu_attach_device +EXPORT_SYMBOL_GPL vmlinux 0xceb1f126 mpi_read_raw_data +EXPORT_SYMBOL_GPL vmlinux 0xcec89ed1 ata_link_abort +EXPORT_SYMBOL_GPL vmlinux 0xcecc4e91 devm_devfreq_event_remove_edev +EXPORT_SYMBOL_GPL vmlinux 0xcedb16ec mbox_request_channel_byname +EXPORT_SYMBOL_GPL vmlinux 0xcee1641c kgdb_unregister_nmi_console +EXPORT_SYMBOL_GPL vmlinux 0xcef1dd0e perf_check_microcode +EXPORT_SYMBOL_GPL vmlinux 0xcf135708 rhashtable_destroy +EXPORT_SYMBOL_GPL vmlinux 0xcf1cf595 regulator_bulk_get +EXPORT_SYMBOL_GPL vmlinux 0xcf22a131 fuse_conn_init +EXPORT_SYMBOL_GPL vmlinux 0xcf24240a device_set_wakeup_enable +EXPORT_SYMBOL_GPL vmlinux 0xcf34cb45 generic_access_phys +EXPORT_SYMBOL_GPL vmlinux 0xcf3983d9 __rio_local_read_config_16 +EXPORT_SYMBOL_GPL vmlinux 0xcf54ea93 async_unregister_domain +EXPORT_SYMBOL_GPL vmlinux 0xcf62f540 fwnode_property_read_string_array +EXPORT_SYMBOL_GPL vmlinux 0xcf65e31e unix_inq_len +EXPORT_SYMBOL_GPL vmlinux 0xcfa1aebe pci_scan_child_bus +EXPORT_SYMBOL_GPL vmlinux 0xcfa39eca __tracepoint_rpm_suspend +EXPORT_SYMBOL_GPL vmlinux 0xcfaf5fe0 pinctrl_get +EXPORT_SYMBOL_GPL vmlinux 0xcfb201c6 regulator_get_mode +EXPORT_SYMBOL_GPL vmlinux 0xcfb5871c irq_work_queue +EXPORT_SYMBOL_GPL vmlinux 0xcfbb1d3a __get_vm_area +EXPORT_SYMBOL_GPL vmlinux 0xcfbc7b9a list_lru_del +EXPORT_SYMBOL_GPL vmlinux 0xcfc68341 synchronize_rcu_bh +EXPORT_SYMBOL_GPL vmlinux 0xcfca784a cpufreq_unregister_governor +EXPORT_SYMBOL_GPL vmlinux 0xcfdb3b4a ata_pci_bmdma_init_one +EXPORT_SYMBOL_GPL vmlinux 0xcfe244c0 crypto_mod_get +EXPORT_SYMBOL_GPL vmlinux 0xcff8c226 devm_pwm_get +EXPORT_SYMBOL_GPL vmlinux 0xcfff5468 fuse_get_req_for_background +EXPORT_SYMBOL_GPL vmlinux 0xd010328a usb_autopm_put_interface_async +EXPORT_SYMBOL_GPL vmlinux 0xd0127ea4 xen_swiotlb_sync_single_for_cpu +EXPORT_SYMBOL_GPL vmlinux 0xd03c7700 secure_ipv4_port_ephemeral +EXPORT_SYMBOL_GPL vmlinux 0xd041f074 pm_generic_poweroff_late +EXPORT_SYMBOL_GPL vmlinux 0xd042eee9 pci_store_saved_state +EXPORT_SYMBOL_GPL vmlinux 0xd0458ccb xenbus_strstate +EXPORT_SYMBOL_GPL vmlinux 0xd05bf606 edac_get_sysfs_subsys +EXPORT_SYMBOL_GPL vmlinux 0xd06524ba raw_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd067d3c5 system_freezable_power_efficient_wq +EXPORT_SYMBOL_GPL vmlinux 0xd07ae74b dev_pm_qos_flags +EXPORT_SYMBOL_GPL vmlinux 0xd08e4b5a wm831x_reg_lock +EXPORT_SYMBOL_GPL vmlinux 0xd0b5840b gpiochip_add_pingroup_range +EXPORT_SYMBOL_GPL vmlinux 0xd0c05159 emergency_restart +EXPORT_SYMBOL_GPL vmlinux 0xd0c0956f uart_handle_cts_change +EXPORT_SYMBOL_GPL vmlinux 0xd0c7a1dd crypto_aead_reqsize +EXPORT_SYMBOL_GPL vmlinux 0xd0e66d9d virtqueue_detach_unused_buf +EXPORT_SYMBOL_GPL vmlinux 0xd0f9eea5 klist_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0xd0fac3c6 blkcipher_walk_phys +EXPORT_SYMBOL_GPL vmlinux 0xd1180d7b __rio_local_write_config_32 +EXPORT_SYMBOL_GPL vmlinux 0xd11b4b84 reset_controller_register +EXPORT_SYMBOL_GPL vmlinux 0xd13d2eb9 rtnl_put_cacheinfo +EXPORT_SYMBOL_GPL vmlinux 0xd14f945d regulator_set_mode +EXPORT_SYMBOL_GPL vmlinux 0xd1507e59 erst_clear +EXPORT_SYMBOL_GPL vmlinux 0xd1553b3b srcu_barrier +EXPORT_SYMBOL_GPL vmlinux 0xd1605501 ping_bind +EXPORT_SYMBOL_GPL vmlinux 0xd16712f3 crypto_check_attr_type +EXPORT_SYMBOL_GPL vmlinux 0xd180931f inet_csk_route_child_sock +EXPORT_SYMBOL_GPL vmlinux 0xd180d625 sk_clear_memalloc +EXPORT_SYMBOL_GPL vmlinux 0xd1f2eee2 nf_logger_find_get +EXPORT_SYMBOL_GPL vmlinux 0xd209ed64 usb_hc_died +EXPORT_SYMBOL_GPL vmlinux 0xd20bf6ba dcookie_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd217e9e6 trace_set_clr_event +EXPORT_SYMBOL_GPL vmlinux 0xd2413342 __pm_runtime_set_status +EXPORT_SYMBOL_GPL vmlinux 0xd273b1b1 __round_jiffies_up_relative +EXPORT_SYMBOL_GPL vmlinux 0xd28285ef power_supply_notifier +EXPORT_SYMBOL_GPL vmlinux 0xd28b944a device_show_ulong +EXPORT_SYMBOL_GPL vmlinux 0xd29b8012 thermal_of_cooling_device_register +EXPORT_SYMBOL_GPL vmlinux 0xd2b9b695 i2c_unlock_adapter +EXPORT_SYMBOL_GPL vmlinux 0xd2c58ab2 apei_exec_noop +EXPORT_SYMBOL_GPL vmlinux 0xd2e88de5 clk_register_gate +EXPORT_SYMBOL_GPL vmlinux 0xd2ead1cf bio_trim +EXPORT_SYMBOL_GPL vmlinux 0xd2edf4b7 ata_get_cmd_descript +EXPORT_SYMBOL_GPL vmlinux 0xd2f97770 cpufreq_frequency_table_target +EXPORT_SYMBOL_GPL vmlinux 0xd2f9cc45 exportfs_encode_inode_fh +EXPORT_SYMBOL_GPL vmlinux 0xd2ff575c pci_create_slot +EXPORT_SYMBOL_GPL vmlinux 0xd300b897 pstore_register +EXPORT_SYMBOL_GPL vmlinux 0xd308724f ata_pci_sff_activate_host +EXPORT_SYMBOL_GPL vmlinux 0xd3194550 fat_alloc_new_dir +EXPORT_SYMBOL_GPL vmlinux 0xd348d0b5 wm831x_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0xd3555b59 palmas_ext_control_req_config +EXPORT_SYMBOL_GPL vmlinux 0xd39f7c04 sock_prot_inuse_get +EXPORT_SYMBOL_GPL vmlinux 0xd3bd0cef fat_fill_super +EXPORT_SYMBOL_GPL vmlinux 0xd3bedcbc pinctrl_pm_select_sleep_state +EXPORT_SYMBOL_GPL vmlinux 0xd3edaf35 virtqueue_get_vring_size +EXPORT_SYMBOL_GPL vmlinux 0xd3f7b9a4 attribute_container_find_class_device +EXPORT_SYMBOL_GPL vmlinux 0xd3fa1874 usb_string +EXPORT_SYMBOL_GPL vmlinux 0xd4034828 system_freezable_wq +EXPORT_SYMBOL_GPL vmlinux 0xd4123538 xen_swiotlb_map_page +EXPORT_SYMBOL_GPL vmlinux 0xd41fffab interval_tree_iter_first +EXPORT_SYMBOL_GPL vmlinux 0xd421dbfc bsg_request_fn +EXPORT_SYMBOL_GPL vmlinux 0xd426dbc4 erst_get_record_count +EXPORT_SYMBOL_GPL vmlinux 0xd42ec1cc serial8250_rx_chars +EXPORT_SYMBOL_GPL vmlinux 0xd4487fd5 snprint_stack_trace +EXPORT_SYMBOL_GPL vmlinux 0xd44a5eac kgdb_register_nmi_console +EXPORT_SYMBOL_GPL vmlinux 0xd455da95 irq_domain_add_legacy +EXPORT_SYMBOL_GPL vmlinux 0xd46eba6a sk_attach_filter +EXPORT_SYMBOL_GPL vmlinux 0xd47f8529 page_cache_sync_readahead +EXPORT_SYMBOL_GPL vmlinux 0xd486b0a6 nd_blk_region_to_dimm +EXPORT_SYMBOL_GPL vmlinux 0xd48edc9a gpiod_direction_output_raw +EXPORT_SYMBOL_GPL vmlinux 0xd4c14632 system_unbound_wq +EXPORT_SYMBOL_GPL vmlinux 0xd4d0109b sock_diag_unregister_inet_compat +EXPORT_SYMBOL_GPL vmlinux 0xd4f65e59 tcp_peer_is_proven +EXPORT_SYMBOL_GPL vmlinux 0xd5157e2d regmap_field_update_bits +EXPORT_SYMBOL_GPL vmlinux 0xd5336bde tcp_reno_ssthresh +EXPORT_SYMBOL_GPL vmlinux 0xd53382eb fuse_request_alloc +EXPORT_SYMBOL_GPL vmlinux 0xd540a67d perf_tp_event +EXPORT_SYMBOL_GPL vmlinux 0xd548217f pci_generic_config_write32 +EXPORT_SYMBOL_GPL vmlinux 0xd5550d5f pci_bus_resource_n +EXPORT_SYMBOL_GPL vmlinux 0xd55ad93b iommu_group_get_iommudata +EXPORT_SYMBOL_GPL vmlinux 0xd56b5f64 ktime_get_ts64 +EXPORT_SYMBOL_GPL vmlinux 0xd5790a82 da903x_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0xd57e3b83 trace_define_field +EXPORT_SYMBOL_GPL vmlinux 0xd592b0d2 rio_release_dma +EXPORT_SYMBOL_GPL vmlinux 0xd59f9d7b gpiod_get_raw_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0xd5a0c701 fuse_conn_put +EXPORT_SYMBOL_GPL vmlinux 0xd5bd7dac ring_buffer_record_enable_cpu +EXPORT_SYMBOL_GPL vmlinux 0xd5c36c40 __tracepoint_attach_device_to_domain +EXPORT_SYMBOL_GPL vmlinux 0xd5c4933a invalidate_inode_pages2_range +EXPORT_SYMBOL_GPL vmlinux 0xd5d7981a __i2c_board_lock +EXPORT_SYMBOL_GPL vmlinux 0xd5e4a454 power_supply_set_battery_charged +EXPORT_SYMBOL_GPL vmlinux 0xd5f0a3e6 raw_seq_open +EXPORT_SYMBOL_GPL vmlinux 0xd60c99b5 rcu_batches_completed_bh +EXPORT_SYMBOL_GPL vmlinux 0xd60ec015 skb_partial_csum_set +EXPORT_SYMBOL_GPL vmlinux 0xd6176db5 pci_reset_function +EXPORT_SYMBOL_GPL vmlinux 0xd61cbbb1 pm_runtime_force_suspend +EXPORT_SYMBOL_GPL vmlinux 0xd61e807e regulator_map_voltage_ascend +EXPORT_SYMBOL_GPL vmlinux 0xd622049f rtc_update_irq +EXPORT_SYMBOL_GPL vmlinux 0xd631323a class_compat_remove_link +EXPORT_SYMBOL_GPL vmlinux 0xd63437a1 transport_class_register +EXPORT_SYMBOL_GPL vmlinux 0xd650bb22 pci_dev_run_wake +EXPORT_SYMBOL_GPL vmlinux 0xd670d8c8 ata_sas_port_init +EXPORT_SYMBOL_GPL vmlinux 0xd67364f7 eventfd_ctx_fdget +EXPORT_SYMBOL_GPL vmlinux 0xd67f6d81 led_trigger_event +EXPORT_SYMBOL_GPL vmlinux 0xd6b0f5ff acpi_dev_runtime_resume +EXPORT_SYMBOL_GPL vmlinux 0xd6b26a27 pinctrl_force_default +EXPORT_SYMBOL_GPL vmlinux 0xd6b49a81 adp5520_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0xd6c57099 virtqueue_add_outbuf +EXPORT_SYMBOL_GPL vmlinux 0xd6c7322a usb_hcd_unmap_urb_setup_for_dma +EXPORT_SYMBOL_GPL vmlinux 0xd6d2fe70 da9052_free_irq +EXPORT_SYMBOL_GPL vmlinux 0xd6d569a4 devm_phy_optional_get +EXPORT_SYMBOL_GPL vmlinux 0xd6e10cc1 ata_sff_queue_pio_task +EXPORT_SYMBOL_GPL vmlinux 0xd6ed3a8e cper_next_record_id +EXPORT_SYMBOL_GPL vmlinux 0xd6f183f5 bmp085_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0xd6f36aae usb_put_dev +EXPORT_SYMBOL_GPL vmlinux 0xd6feefa5 agp_num_entries +EXPORT_SYMBOL_GPL vmlinux 0xd705b4c7 schedule_hrtimeout +EXPORT_SYMBOL_GPL vmlinux 0xd7107d5c get_device +EXPORT_SYMBOL_GPL vmlinux 0xd72feba2 xenbus_read_driver_state +EXPORT_SYMBOL_GPL vmlinux 0xd73254d1 devres_remove +EXPORT_SYMBOL_GPL vmlinux 0xd7399d2a efivar_entry_iter_end +EXPORT_SYMBOL_GPL vmlinux 0xd74e81b1 devm_usb_get_phy +EXPORT_SYMBOL_GPL vmlinux 0xd764d265 inet_hashinfo_init +EXPORT_SYMBOL_GPL vmlinux 0xd768e985 regulator_has_full_constraints +EXPORT_SYMBOL_GPL vmlinux 0xd7709dd9 public_key_subtype +EXPORT_SYMBOL_GPL vmlinux 0xd77259d1 usb_alloc_urb +EXPORT_SYMBOL_GPL vmlinux 0xd7737260 ata_sff_thaw +EXPORT_SYMBOL_GPL vmlinux 0xd77c0bc8 klist_remove +EXPORT_SYMBOL_GPL vmlinux 0xd79b1e46 xenbus_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0xd7a47c42 rio_request_inb_dbell +EXPORT_SYMBOL_GPL vmlinux 0xd7a85c5a list_lru_count_one +EXPORT_SYMBOL_GPL vmlinux 0xd7d79132 put_online_cpus +EXPORT_SYMBOL_GPL vmlinux 0xd7fbe73e cpuidle_get_driver +EXPORT_SYMBOL_GPL vmlinux 0xd80d1e2f regulator_register +EXPORT_SYMBOL_GPL vmlinux 0xd81de62c ring_buffer_record_enable +EXPORT_SYMBOL_GPL vmlinux 0xd820c283 eventfd_ctx_remove_wait_queue +EXPORT_SYMBOL_GPL vmlinux 0xd854ba34 ata_sff_data_xfer32 +EXPORT_SYMBOL_GPL vmlinux 0xd87601cc ring_buffer_unlock_commit +EXPORT_SYMBOL_GPL vmlinux 0xd87fc0a0 usb_amd_prefetch_quirk +EXPORT_SYMBOL_GPL vmlinux 0xd8a1bf4f bmp085_probe +EXPORT_SYMBOL_GPL vmlinux 0xd8b273b7 set_task_ioprio +EXPORT_SYMBOL_GPL vmlinux 0xd8ca03ab pinctrl_get_group_pins +EXPORT_SYMBOL_GPL vmlinux 0xd8e4cb2c da903x_read +EXPORT_SYMBOL_GPL vmlinux 0xd90033f9 fwnode_property_read_u32_array +EXPORT_SYMBOL_GPL vmlinux 0xd9025881 iptunnel_xmit +EXPORT_SYMBOL_GPL vmlinux 0xd919806a amd_cache_northbridges +EXPORT_SYMBOL_GPL vmlinux 0xd93013ab irq_map_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0xd93bad28 acpi_dma_request_slave_chan_by_index +EXPORT_SYMBOL_GPL vmlinux 0xd942d353 ring_buffer_record_off +EXPORT_SYMBOL_GPL vmlinux 0xd95bffea rt_mutex_unlock +EXPORT_SYMBOL_GPL vmlinux 0xd96babb4 interval_tree_iter_next +EXPORT_SYMBOL_GPL vmlinux 0xd9781471 dmi_kobj +EXPORT_SYMBOL_GPL vmlinux 0xd986dad1 kernel_fpu_begin +EXPORT_SYMBOL_GPL vmlinux 0xd98a1a52 dev_attr_em_message +EXPORT_SYMBOL_GPL vmlinux 0xd9af8769 sysfs_create_files +EXPORT_SYMBOL_GPL vmlinux 0xd9b714c0 usb_gen_phy_init +EXPORT_SYMBOL_GPL vmlinux 0xd9bd4241 mmc_switch +EXPORT_SYMBOL_GPL vmlinux 0xd9ecb670 ring_buffer_overruns +EXPORT_SYMBOL_GPL vmlinux 0xda0fdf29 serial8250_request_dma +EXPORT_SYMBOL_GPL vmlinux 0xda5259f2 usb_free_streams +EXPORT_SYMBOL_GPL vmlinux 0xda6384a8 dbs_check_cpu +EXPORT_SYMBOL_GPL vmlinux 0xda6ac769 system_trusted_keyring +EXPORT_SYMBOL_GPL vmlinux 0xda76f444 driver_unregister +EXPORT_SYMBOL_GPL vmlinux 0xda84b765 __ata_ehi_push_desc +EXPORT_SYMBOL_GPL vmlinux 0xda8d25d3 inet_peer_base_init +EXPORT_SYMBOL_GPL vmlinux 0xdaa06dc1 acpi_lpat_raw_to_temp +EXPORT_SYMBOL_GPL vmlinux 0xdaa1eb07 blk_rq_check_limits +EXPORT_SYMBOL_GPL vmlinux 0xdad3322c pm_runtime_set_memalloc_noio +EXPORT_SYMBOL_GPL vmlinux 0xdaed3073 timerqueue_del +EXPORT_SYMBOL_GPL vmlinux 0xdaf4dfb3 fb_mode_option +EXPORT_SYMBOL_GPL vmlinux 0xdaf5e53a device_wakeup_enable +EXPORT_SYMBOL_GPL vmlinux 0xdb297583 __dma_request_channel +EXPORT_SYMBOL_GPL vmlinux 0xdb365fa6 perf_event_release_kernel +EXPORT_SYMBOL_GPL vmlinux 0xdb55b330 wm8350_reg_write +EXPORT_SYMBOL_GPL vmlinux 0xdb5df220 scsi_mode_select +EXPORT_SYMBOL_GPL vmlinux 0xdb63a944 acpi_lpat_get_conversion_table +EXPORT_SYMBOL_GPL vmlinux 0xdb831dcc device_property_read_u64_array +EXPORT_SYMBOL_GPL vmlinux 0xdb8a1b3f usermodehelper_read_trylock +EXPORT_SYMBOL_GPL vmlinux 0xdb8f02c5 usb_deregister_device_driver +EXPORT_SYMBOL_GPL vmlinux 0xdb916fd0 trace_seq_putmem +EXPORT_SYMBOL_GPL vmlinux 0xdbb3a015 ata_host_init +EXPORT_SYMBOL_GPL vmlinux 0xdbe2722f ipv4_sk_redirect +EXPORT_SYMBOL_GPL vmlinux 0xdbe4a25f raw_unhash_sk +EXPORT_SYMBOL_GPL vmlinux 0xdbf7cb70 mpi_get_nbits +EXPORT_SYMBOL_GPL vmlinux 0xdc0625db rio_local_get_device_id +EXPORT_SYMBOL_GPL vmlinux 0xdc14a211 xen_hvm_evtchn_do_upcall +EXPORT_SYMBOL_GPL vmlinux 0xdc241cca spi_bus_type +EXPORT_SYMBOL_GPL vmlinux 0xdc2c31a0 phy_put +EXPORT_SYMBOL_GPL vmlinux 0xdc5574f9 shash_ahash_update +EXPORT_SYMBOL_GPL vmlinux 0xdc55e985 iommu_group_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0xdc607381 trace_call_bpf +EXPORT_SYMBOL_GPL vmlinux 0xdc6699cb acpi_dev_free_resource_list +EXPORT_SYMBOL_GPL vmlinux 0xdc825d6c usb_amd_quirk_pll_disable +EXPORT_SYMBOL_GPL vmlinux 0xdc97af2e syscore_suspend +EXPORT_SYMBOL_GPL vmlinux 0xdc9fa232 raw_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0xdcaac7a8 bus_for_each_drv +EXPORT_SYMBOL_GPL vmlinux 0xdcbfc74a pwm_set_chip_data +EXPORT_SYMBOL_GPL vmlinux 0xdcd8fc37 alloc_vm_area +EXPORT_SYMBOL_GPL vmlinux 0xdcf86c17 vring_transport_features +EXPORT_SYMBOL_GPL vmlinux 0xdd126efa xhci_gen_setup +EXPORT_SYMBOL_GPL vmlinux 0xdd17ffec trace_clock +EXPORT_SYMBOL_GPL vmlinux 0xdd1e14d5 rio_mport_write_config_32 +EXPORT_SYMBOL_GPL vmlinux 0xdd1f4d0d pci_generic_config_read32 +EXPORT_SYMBOL_GPL vmlinux 0xdd2efc0f ring_buffer_reset_cpu +EXPORT_SYMBOL_GPL vmlinux 0xdd316628 find_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0xdd390831 sdio_f0_readb +EXPORT_SYMBOL_GPL vmlinux 0xdd391eff profile_event_unregister +EXPORT_SYMBOL_GPL vmlinux 0xdd4b5807 pci_enable_rom +EXPORT_SYMBOL_GPL vmlinux 0xdd4e42ff pm_generic_runtime_suspend +EXPORT_SYMBOL_GPL vmlinux 0xdd57e2b5 percpu_ref_exit +EXPORT_SYMBOL_GPL vmlinux 0xdd6b7c06 trace_event_reg +EXPORT_SYMBOL_GPL vmlinux 0xdd7dac33 unregister_pernet_subsys +EXPORT_SYMBOL_GPL vmlinux 0xdd97a3f7 wm5102_i2c_regmap +EXPORT_SYMBOL_GPL vmlinux 0xdd99d0bb ata_slave_link_init +EXPORT_SYMBOL_GPL vmlinux 0xddbeeecc pci_lock_rescan_remove +EXPORT_SYMBOL_GPL vmlinux 0xddd58dc0 ring_buffer_reset +EXPORT_SYMBOL_GPL vmlinux 0xde02adf3 of_phy_provider_unregister +EXPORT_SYMBOL_GPL vmlinux 0xde0b3102 regmap_init_mmio_clk +EXPORT_SYMBOL_GPL vmlinux 0xde435db2 ping_err +EXPORT_SYMBOL_GPL vmlinux 0xde60da1d __netpoll_setup +EXPORT_SYMBOL_GPL vmlinux 0xde87424d ehci_handshake +EXPORT_SYMBOL_GPL vmlinux 0xde8dd926 klist_next +EXPORT_SYMBOL_GPL vmlinux 0xdea9ade3 pm_runtime_set_autosuspend_delay +EXPORT_SYMBOL_GPL vmlinux 0xdeb05020 devfreq_event_get_edev_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0xded29bb3 ata_cable_ignore +EXPORT_SYMBOL_GPL vmlinux 0xdefdbb03 arizona_request_irq +EXPORT_SYMBOL_GPL vmlinux 0xdf0db58f usb_put_intf +EXPORT_SYMBOL_GPL vmlinux 0xdf0f75c6 eventfd_signal +EXPORT_SYMBOL_GPL vmlinux 0xdf1882af dbgp_reset_prep +EXPORT_SYMBOL_GPL vmlinux 0xdf4b9680 ata_scsi_slave_destroy +EXPORT_SYMBOL_GPL vmlinux 0xdf622181 clk_register_divider_table +EXPORT_SYMBOL_GPL vmlinux 0xdf66ca81 ucode_cpu_info +EXPORT_SYMBOL_GPL vmlinux 0xdf75282c inet_twsk_purge +EXPORT_SYMBOL_GPL vmlinux 0xdfa01d6f rio_release_inb_pwrite +EXPORT_SYMBOL_GPL vmlinux 0xdfc21936 aead_register_instance +EXPORT_SYMBOL_GPL vmlinux 0xdfd8e33b ehci_hub_control +EXPORT_SYMBOL_GPL vmlinux 0xdfdf9c10 __tracepoint_unmap +EXPORT_SYMBOL_GPL vmlinux 0xdfe92718 attribute_container_classdev_to_container +EXPORT_SYMBOL_GPL vmlinux 0xdfed0e88 xenbus_dev_fatal +EXPORT_SYMBOL_GPL vmlinux 0xe007de41 kallsyms_lookup_name +EXPORT_SYMBOL_GPL vmlinux 0xe0205f56 driver_find +EXPORT_SYMBOL_GPL vmlinux 0xe024d847 ftrace_set_filter +EXPORT_SYMBOL_GPL vmlinux 0xe026fd60 split_page +EXPORT_SYMBOL_GPL vmlinux 0xe02eb6d0 ring_buffer_commit_overrun_cpu +EXPORT_SYMBOL_GPL vmlinux 0xe031ff05 filter_check_discard +EXPORT_SYMBOL_GPL vmlinux 0xe041302b rtc_read_time +EXPORT_SYMBOL_GPL vmlinux 0xe049a5ca crypto_lookup_skcipher +EXPORT_SYMBOL_GPL vmlinux 0xe04a270e debugfs_create_symlink +EXPORT_SYMBOL_GPL vmlinux 0xe04b7dfc clk_register_mux +EXPORT_SYMBOL_GPL vmlinux 0xe059edbc fb_deferred_io_cleanup +EXPORT_SYMBOL_GPL vmlinux 0xe07dfdc8 mddev_unlock +EXPORT_SYMBOL_GPL vmlinux 0xe089cfcc agp_memory_reserved +EXPORT_SYMBOL_GPL vmlinux 0xe0992500 mbox_request_channel +EXPORT_SYMBOL_GPL vmlinux 0xe09adfa8 rio_mport_write_config_16 +EXPORT_SYMBOL_GPL vmlinux 0xe0a023d7 arizona_clk32k_disable +EXPORT_SYMBOL_GPL vmlinux 0xe0a60ea1 rtc_irq_set_state +EXPORT_SYMBOL_GPL vmlinux 0xe0a6faaf acpi_dev_gpio_irq_get +EXPORT_SYMBOL_GPL vmlinux 0xe0b1c103 clk_set_max_rate +EXPORT_SYMBOL_GPL vmlinux 0xe0c77bb5 mce_notify_irq +EXPORT_SYMBOL_GPL vmlinux 0xe0c811b0 synchronize_srcu +EXPORT_SYMBOL_GPL vmlinux 0xe0e97261 power_supply_set_property +EXPORT_SYMBOL_GPL vmlinux 0xe0f237ff fixed_phy_set_link_update +EXPORT_SYMBOL_GPL vmlinux 0xe0f39dfd inet_csk_bind_conflict +EXPORT_SYMBOL_GPL vmlinux 0xe1003072 usb_deregister +EXPORT_SYMBOL_GPL vmlinux 0xe10c00be transport_remove_device +EXPORT_SYMBOL_GPL vmlinux 0xe10cd6ad erst_get_record_id_begin +EXPORT_SYMBOL_GPL vmlinux 0xe13fa09a i2c_add_numbered_adapter +EXPORT_SYMBOL_GPL vmlinux 0xe16b0d30 unregister_jprobe +EXPORT_SYMBOL_GPL vmlinux 0xe1775ee7 dm_get_reserved_bio_based_ios +EXPORT_SYMBOL_GPL vmlinux 0xe1785eb7 ata_host_start +EXPORT_SYMBOL_GPL vmlinux 0xe17c9988 module_mutex +EXPORT_SYMBOL_GPL vmlinux 0xe1831ff2 scsi_eh_ready_devs +EXPORT_SYMBOL_GPL vmlinux 0xe18e180d class_dev_iter_init +EXPORT_SYMBOL_GPL vmlinux 0xe19c9784 irq_domain_xlate_onecell +EXPORT_SYMBOL_GPL vmlinux 0xe1bd6c99 rio_init_mports +EXPORT_SYMBOL_GPL vmlinux 0xe1f27512 devm_phy_get +EXPORT_SYMBOL_GPL vmlinux 0xe1f2d2df input_ff_upload +EXPORT_SYMBOL_GPL vmlinux 0xe1f39540 ohci_hub_control +EXPORT_SYMBOL_GPL vmlinux 0xe248b53d sata_scr_write_flush +EXPORT_SYMBOL_GPL vmlinux 0xe2565bbd irq_domain_xlate_twocell +EXPORT_SYMBOL_GPL vmlinux 0xe25e720e sdio_get_host_pm_caps +EXPORT_SYMBOL_GPL vmlinux 0xe260b179 ping_recvmsg +EXPORT_SYMBOL_GPL vmlinux 0xe28a1d1a sdhci_pci_spt_drive_strength +EXPORT_SYMBOL_GPL vmlinux 0xe295c0ff is_hpet_enabled +EXPORT_SYMBOL_GPL vmlinux 0xe2ad5d02 nf_queue_entry_release_refs +EXPORT_SYMBOL_GPL vmlinux 0xe2b05b47 ata_sff_tf_load +EXPORT_SYMBOL_GPL vmlinux 0xe2df5ec3 class_destroy +EXPORT_SYMBOL_GPL vmlinux 0xe2e7adb5 usb_autopm_get_interface_async +EXPORT_SYMBOL_GPL vmlinux 0xe3043ff9 request_any_context_irq +EXPORT_SYMBOL_GPL vmlinux 0xe315bb52 pwm_get_chip_data +EXPORT_SYMBOL_GPL vmlinux 0xe3487cfb spi_finalize_current_transfer +EXPORT_SYMBOL_GPL vmlinux 0xe34ab393 __audit_inode_child +EXPORT_SYMBOL_GPL vmlinux 0xe3769c7b regmap_reinit_cache +EXPORT_SYMBOL_GPL vmlinux 0xe384a102 usb_speed_string +EXPORT_SYMBOL_GPL vmlinux 0xe389b282 udp4_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0xe38be756 crypto_alloc_ablkcipher +EXPORT_SYMBOL_GPL vmlinux 0xe3948ff4 acpi_walk_dep_device_list +EXPORT_SYMBOL_GPL vmlinux 0xe3a723ca pwm_request_from_chip +EXPORT_SYMBOL_GPL vmlinux 0xe3bc7fd4 hpet_unregister_irq_handler +EXPORT_SYMBOL_GPL vmlinux 0xe3bda663 inet_ehash_locks_alloc +EXPORT_SYMBOL_GPL vmlinux 0xe3c281eb xenbus_dev_remove +EXPORT_SYMBOL_GPL vmlinux 0xe3e76fa1 skb_to_sgvec +EXPORT_SYMBOL_GPL vmlinux 0xe3f3e300 __mmc_switch +EXPORT_SYMBOL_GPL vmlinux 0xe3f7ac9e sock_update_netprioidx +EXPORT_SYMBOL_GPL vmlinux 0xe3fee7be ata_host_alloc_pinfo +EXPORT_SYMBOL_GPL vmlinux 0xe3ffa7f0 wm8350_clear_bits +EXPORT_SYMBOL_GPL vmlinux 0xe411c16d alarm_restart +EXPORT_SYMBOL_GPL vmlinux 0xe41534ce bind_evtchn_to_irqhandler +EXPORT_SYMBOL_GPL vmlinux 0xe421eddd class_dev_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0xe4309905 syscore_resume +EXPORT_SYMBOL_GPL vmlinux 0xe43818dc ipv6_dup_options +EXPORT_SYMBOL_GPL vmlinux 0xe44cbb0c ata_pci_sff_init_host +EXPORT_SYMBOL_GPL vmlinux 0xe454b0b6 sb800_prefetch +EXPORT_SYMBOL_GPL vmlinux 0xe45f2d9d rio_get_asm +EXPORT_SYMBOL_GPL vmlinux 0xe4689576 ktime_get_with_offset +EXPORT_SYMBOL_GPL vmlinux 0xe48916f3 fat_add_entries +EXPORT_SYMBOL_GPL vmlinux 0xe4971ade tracing_alloc_snapshot +EXPORT_SYMBOL_GPL vmlinux 0xe4b74087 xenbus_map_ring_valloc +EXPORT_SYMBOL_GPL vmlinux 0xe4b8910a irq_create_mapping +EXPORT_SYMBOL_GPL vmlinux 0xe4c18f7a usb_hub_claim_port +EXPORT_SYMBOL_GPL vmlinux 0xe4d6ee16 acpi_is_pnp_device +EXPORT_SYMBOL_GPL vmlinux 0xe4e68bc8 apei_map_generic_address +EXPORT_SYMBOL_GPL vmlinux 0xe509818f blkcipher_aead_walk_virt_block +EXPORT_SYMBOL_GPL vmlinux 0xe514d401 usb_anchor_suspend_wakeups +EXPORT_SYMBOL_GPL vmlinux 0xe5222289 pci_find_next_ht_capability +EXPORT_SYMBOL_GPL vmlinux 0xe52db470 devfreq_event_disable_edev +EXPORT_SYMBOL_GPL vmlinux 0xe53dc395 ping_proc_register +EXPORT_SYMBOL_GPL vmlinux 0xe5427e5c devm_hwmon_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe5883bd9 class_compat_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe58fb452 aer_irq +EXPORT_SYMBOL_GPL vmlinux 0xe5b8082b cper_estatus_check_header +EXPORT_SYMBOL_GPL vmlinux 0xe5c2ed59 ata_bmdma_start +EXPORT_SYMBOL_GPL vmlinux 0xe5ce688a cm_notify_event +EXPORT_SYMBOL_GPL vmlinux 0xe5d99c8f devm_acpi_dma_controller_register +EXPORT_SYMBOL_GPL vmlinux 0xe6071ab6 debugfs_remove_recursive +EXPORT_SYMBOL_GPL vmlinux 0xe619b1ce ata_sff_wait_ready +EXPORT_SYMBOL_GPL vmlinux 0xe6297754 debugfs_create_devm_seqfile +EXPORT_SYMBOL_GPL vmlinux 0xe6477581 key_type_trusted +EXPORT_SYMBOL_GPL vmlinux 0xe64a8735 led_trigger_register +EXPORT_SYMBOL_GPL vmlinux 0xe64ad8ea unregister_nmi_handler +EXPORT_SYMBOL_GPL vmlinux 0xe651f76e selinux_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0xe658c803 digsig_verify +EXPORT_SYMBOL_GPL vmlinux 0xe672bbdb debugfs_create_bool +EXPORT_SYMBOL_GPL vmlinux 0xe6807a36 led_sysfs_disable +EXPORT_SYMBOL_GPL vmlinux 0xe6aabc9c device_property_read_u16_array +EXPORT_SYMBOL_GPL vmlinux 0xe6b0d827 acpi_pci_find_root +EXPORT_SYMBOL_GPL vmlinux 0xe6b34d56 fsnotify +EXPORT_SYMBOL_GPL vmlinux 0xe6b4cb22 __pm_runtime_suspend +EXPORT_SYMBOL_GPL vmlinux 0xe6befbd7 devm_of_pwm_get +EXPORT_SYMBOL_GPL vmlinux 0xe6c68334 ddebug_remove_module +EXPORT_SYMBOL_GPL vmlinux 0xe6e1c5fe uuid_be_gen +EXPORT_SYMBOL_GPL vmlinux 0xe6ef4abf dm_internal_resume_fast +EXPORT_SYMBOL_GPL vmlinux 0xe6f48d65 fixed_phy_register +EXPORT_SYMBOL_GPL vmlinux 0xe6f83837 acpi_bus_attach_private_data +EXPORT_SYMBOL_GPL vmlinux 0xe6ff7c60 __clk_round_rate +EXPORT_SYMBOL_GPL vmlinux 0xe7232e0f user_return_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe7316d4d input_ff_event +EXPORT_SYMBOL_GPL vmlinux 0xe736d3d2 regulator_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0xe73ad5f6 kernfs_find_and_get_ns +EXPORT_SYMBOL_GPL vmlinux 0xe745e342 cpuidle_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe746db0f splice_to_pipe +EXPORT_SYMBOL_GPL vmlinux 0xe74fd92e security_kernel_fw_from_file +EXPORT_SYMBOL_GPL vmlinux 0xe751fa8c ata_sas_port_resume +EXPORT_SYMBOL_GPL vmlinux 0xe763197f blk_mq_register_disk +EXPORT_SYMBOL_GPL vmlinux 0xe769232e sprint_symbol_no_offset +EXPORT_SYMBOL_GPL vmlinux 0xe770be2a pci_disable_sriov +EXPORT_SYMBOL_GPL vmlinux 0xe7910f33 __platform_driver_probe +EXPORT_SYMBOL_GPL vmlinux 0xe792b2f9 virtqueue_enable_cb_delayed +EXPORT_SYMBOL_GPL vmlinux 0xe7a5da0d devm_power_supply_register_no_ws +EXPORT_SYMBOL_GPL vmlinux 0xe7b8a774 virtqueue_is_broken +EXPORT_SYMBOL_GPL vmlinux 0xe7c1ae45 tty_find_polling_driver +EXPORT_SYMBOL_GPL vmlinux 0xe7cb82ea divider_round_rate +EXPORT_SYMBOL_GPL vmlinux 0xe7ffe877 pcpu_base_addr +EXPORT_SYMBOL_GPL vmlinux 0xe8025b94 usb_register_dev +EXPORT_SYMBOL_GPL vmlinux 0xe808e544 __irq_set_handler +EXPORT_SYMBOL_GPL vmlinux 0xe818b32b ata_bmdma_interrupt +EXPORT_SYMBOL_GPL vmlinux 0xe82ca1a8 i2c_generic_scl_recovery +EXPORT_SYMBOL_GPL vmlinux 0xe830ffcd scsi_ioctl_block_when_processing_errors +EXPORT_SYMBOL_GPL vmlinux 0xe84f6e5c pciserial_remove_ports +EXPORT_SYMBOL_GPL vmlinux 0xe862c4b7 dpm_suspend_start +EXPORT_SYMBOL_GPL vmlinux 0xe869ee7a dev_pm_qos_expose_flags +EXPORT_SYMBOL_GPL vmlinux 0xe8734441 register_net_sysctl +EXPORT_SYMBOL_GPL vmlinux 0xe89a6e91 input_ff_erase +EXPORT_SYMBOL_GPL vmlinux 0xe89bd243 ata_sff_queue_work +EXPORT_SYMBOL_GPL vmlinux 0xe8bd830b crypto_hash_walk_first +EXPORT_SYMBOL_GPL vmlinux 0xe8c67d7a ping_unhash +EXPORT_SYMBOL_GPL vmlinux 0xe8f0c1ad mddev_suspend +EXPORT_SYMBOL_GPL vmlinux 0xe9022dcf rio_get_device +EXPORT_SYMBOL_GPL vmlinux 0xe90f31ae genlmsg_new_unicast +EXPORT_SYMBOL_GPL vmlinux 0xe915a6e4 handle_fasteoi_irq +EXPORT_SYMBOL_GPL vmlinux 0xe918c23d __pm_relax +EXPORT_SYMBOL_GPL vmlinux 0xe91c1652 desc_to_gpio +EXPORT_SYMBOL_GPL vmlinux 0xe9316619 sysfs_create_file_ns +EXPORT_SYMBOL_GPL vmlinux 0xe9395f6e regulator_get_optional +EXPORT_SYMBOL_GPL vmlinux 0xe93e49c3 devres_free +EXPORT_SYMBOL_GPL vmlinux 0xe9456389 usb_alloc_streams +EXPORT_SYMBOL_GPL vmlinux 0xe950d0d3 phy_exit +EXPORT_SYMBOL_GPL vmlinux 0xe998681e extcon_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0xe9b6e53c trace_output_call +EXPORT_SYMBOL_GPL vmlinux 0xe9ce931a kvm_para_available +EXPORT_SYMBOL_GPL vmlinux 0xe9d1b7cf irq_to_pcap +EXPORT_SYMBOL_GPL vmlinux 0xe9ed3fd0 rio_request_mport_dma +EXPORT_SYMBOL_GPL vmlinux 0xe9fe7be1 flush_kthread_worker +EXPORT_SYMBOL_GPL vmlinux 0xea124bd1 gcd +EXPORT_SYMBOL_GPL vmlinux 0xea17aef0 generic_fh_to_dentry +EXPORT_SYMBOL_GPL vmlinux 0xea1cd521 sdio_memcpy_fromio +EXPORT_SYMBOL_GPL vmlinux 0xea1f7060 cgroup_attach_task_all +EXPORT_SYMBOL_GPL vmlinux 0xea2e0d05 register_kretprobes +EXPORT_SYMBOL_GPL vmlinux 0xea418e0f atapi_cmd_type +EXPORT_SYMBOL_GPL vmlinux 0xea628c20 bstr_printf +EXPORT_SYMBOL_GPL vmlinux 0xeaa2bcf2 regulator_sync_voltage +EXPORT_SYMBOL_GPL vmlinux 0xeaa7c4d2 crypto_dequeue_request +EXPORT_SYMBOL_GPL vmlinux 0xead51421 ohci_restart +EXPORT_SYMBOL_GPL vmlinux 0xeadff75d tcp_twsk_destructor +EXPORT_SYMBOL_GPL vmlinux 0xeaec5e42 efivars_kobject +EXPORT_SYMBOL_GPL vmlinux 0xeb03235b unregister_asymmetric_key_parser +EXPORT_SYMBOL_GPL vmlinux 0xeb1ffca4 pm_schedule_suspend +EXPORT_SYMBOL_GPL vmlinux 0xeb2798f7 xen_destroy_contiguous_region +EXPORT_SYMBOL_GPL vmlinux 0xeb2a4098 bpf_prog_put +EXPORT_SYMBOL_GPL vmlinux 0xeb2da9d6 devm_regulator_unregister +EXPORT_SYMBOL_GPL vmlinux 0xeb370805 __apei_exec_run +EXPORT_SYMBOL_GPL vmlinux 0xeb3ec314 ohci_init_driver +EXPORT_SYMBOL_GPL vmlinux 0xeb3f3d90 spi_alloc_device +EXPORT_SYMBOL_GPL vmlinux 0xeb6156a3 ata_cable_40wire +EXPORT_SYMBOL_GPL vmlinux 0xeb7d183e jump_label_rate_limit +EXPORT_SYMBOL_GPL vmlinux 0xeb833c22 xen_has_pv_disk_devices +EXPORT_SYMBOL_GPL vmlinux 0xeb83d9a7 usb_disable_ltm +EXPORT_SYMBOL_GPL vmlinux 0xeba745e1 irq_set_affinity_notifier +EXPORT_SYMBOL_GPL vmlinux 0xebafd1b6 gnttab_map_refs +EXPORT_SYMBOL_GPL vmlinux 0xebe3907b anon_inode_getfile +EXPORT_SYMBOL_GPL vmlinux 0xebec57c4 ring_buffer_oldest_event_ts +EXPORT_SYMBOL_GPL vmlinux 0xec07439f swiotlb_map_page +EXPORT_SYMBOL_GPL vmlinux 0xec0ab1f1 sdio_register_driver +EXPORT_SYMBOL_GPL vmlinux 0xec1b043e regulator_suspend_prepare +EXPORT_SYMBOL_GPL vmlinux 0xec25f967 klist_del +EXPORT_SYMBOL_GPL vmlinux 0xec3325e2 __clk_get_num_parents +EXPORT_SYMBOL_GPL vmlinux 0xec35738a hrtimer_active +EXPORT_SYMBOL_GPL vmlinux 0xec62ca04 pm_generic_thaw_early +EXPORT_SYMBOL_GPL vmlinux 0xec631f34 remove_memory +EXPORT_SYMBOL_GPL vmlinux 0xec698e37 kernel_kobj +EXPORT_SYMBOL_GPL vmlinux 0xec76706f regulator_unregister +EXPORT_SYMBOL_GPL vmlinux 0xec965a65 virtqueue_kick +EXPORT_SYMBOL_GPL vmlinux 0xecad3b34 do_machine_check +EXPORT_SYMBOL_GPL vmlinux 0xecc90964 pci_stop_and_remove_bus_device_locked +EXPORT_SYMBOL_GPL vmlinux 0xecd4b462 crypto_register_shashes +EXPORT_SYMBOL_GPL vmlinux 0xecd5faa7 device_destroy +EXPORT_SYMBOL_GPL vmlinux 0xecdbcd95 ip6_route_lookup +EXPORT_SYMBOL_GPL vmlinux 0xecf6e128 efivar_entry_get +EXPORT_SYMBOL_GPL vmlinux 0xed1f26e8 dm_disk +EXPORT_SYMBOL_GPL vmlinux 0xed26693b tty_ldisc_ref +EXPORT_SYMBOL_GPL vmlinux 0xed4f5f56 sk_setup_caps +EXPORT_SYMBOL_GPL vmlinux 0xed6213f5 smpboot_unregister_percpu_thread +EXPORT_SYMBOL_GPL vmlinux 0xed6b110c ata_acpi_gtm_xfermask +EXPORT_SYMBOL_GPL vmlinux 0xed85d1ad i2c_adapter_type +EXPORT_SYMBOL_GPL vmlinux 0xed9711a8 list_lru_count_node +EXPORT_SYMBOL_GPL vmlinux 0xedaac9c0 tty_set_termios +EXPORT_SYMBOL_GPL vmlinux 0xedafd236 crypto_aead_type +EXPORT_SYMBOL_GPL vmlinux 0xedbc6f67 gnttab_end_foreign_access +EXPORT_SYMBOL_GPL vmlinux 0xedcd95ea bpf_prog_realloc +EXPORT_SYMBOL_GPL vmlinux 0xee0a7145 blkdev_read_iter +EXPORT_SYMBOL_GPL vmlinux 0xee13e697 set_personality_ia32 +EXPORT_SYMBOL_GPL vmlinux 0xee20932b device_show_int +EXPORT_SYMBOL_GPL vmlinux 0xee216fed md_run +EXPORT_SYMBOL_GPL vmlinux 0xee264087 _submit_bh +EXPORT_SYMBOL_GPL vmlinux 0xee56e8ad blk_set_queue_dying +EXPORT_SYMBOL_GPL vmlinux 0xee56fc3a cpufreq_freq_attr_scaling_boost_freqs +EXPORT_SYMBOL_GPL vmlinux 0xee648013 spi_finalize_current_message +EXPORT_SYMBOL_GPL vmlinux 0xee65e64b usb_hcd_resume_root_hub +EXPORT_SYMBOL_GPL vmlinux 0xee6b71c4 syscon_regmap_lookup_by_compatible +EXPORT_SYMBOL_GPL vmlinux 0xee833b6a blk_mq_freeze_queue +EXPORT_SYMBOL_GPL vmlinux 0xef1f6e23 apei_resources_request +EXPORT_SYMBOL_GPL vmlinux 0xef257d9f crypto_shoot_alg +EXPORT_SYMBOL_GPL vmlinux 0xef329cb0 phy_get +EXPORT_SYMBOL_GPL vmlinux 0xef4dbf06 xen_unmap_domain_mfn_range +EXPORT_SYMBOL_GPL vmlinux 0xef4e0c99 __crypto_alloc_tfm +EXPORT_SYMBOL_GPL vmlinux 0xef6c3f70 round_jiffies_up_relative +EXPORT_SYMBOL_GPL vmlinux 0xef6d007a sigset_from_compat +EXPORT_SYMBOL_GPL vmlinux 0xef7d9c5b debugfs_create_x8 +EXPORT_SYMBOL_GPL vmlinux 0xef823245 devm_regulator_register +EXPORT_SYMBOL_GPL vmlinux 0xef84e589 pm_generic_runtime_resume +EXPORT_SYMBOL_GPL vmlinux 0xef8c7850 pcap_adc_async +EXPORT_SYMBOL_GPL vmlinux 0xefa2c27d register_tracepoint_module_notifier +EXPORT_SYMBOL_GPL vmlinux 0xeffa6b8f __tracepoint_cpu_idle +EXPORT_SYMBOL_GPL vmlinux 0xf03c072f __ftrace_vbprintk +EXPORT_SYMBOL_GPL vmlinux 0xf0696401 acpi_pci_detect_ejectable +EXPORT_SYMBOL_GPL vmlinux 0xf06ffc26 xfrm_local_error +EXPORT_SYMBOL_GPL vmlinux 0xf0727f12 ktime_get_raw_fast_ns +EXPORT_SYMBOL_GPL vmlinux 0xf07fbf82 tty_buffer_unlock_exclusive +EXPORT_SYMBOL_GPL vmlinux 0xf088e4c2 rio_dma_prep_slave_sg +EXPORT_SYMBOL_GPL vmlinux 0xf09066f0 ip6_datagram_connect_v6_only +EXPORT_SYMBOL_GPL vmlinux 0xf097712e usb_hcd_unmap_urb_for_dma +EXPORT_SYMBOL_GPL vmlinux 0xf0acb626 gpiochip_is_requested +EXPORT_SYMBOL_GPL vmlinux 0xf0d3bd3c tps6586x_irq_get_virq +EXPORT_SYMBOL_GPL vmlinux 0xf0ec7027 pm_generic_resume_noirq +EXPORT_SYMBOL_GPL vmlinux 0xf0f5dbc2 timerqueue_iterate_next +EXPORT_SYMBOL_GPL vmlinux 0xf0fd36e5 dm_path_uevent +EXPORT_SYMBOL_GPL vmlinux 0xf10c69f5 usb_put_hcd +EXPORT_SYMBOL_GPL vmlinux 0xf1134ec8 devm_extcon_dev_register +EXPORT_SYMBOL_GPL vmlinux 0xf1192a86 bsg_unregister_queue +EXPORT_SYMBOL_GPL vmlinux 0xf11eb7f4 regulator_enable_regmap +EXPORT_SYMBOL_GPL vmlinux 0xf12d413c wakeup_source_unregister +EXPORT_SYMBOL_GPL vmlinux 0xf13cc7dc __nvdimm_bus_register +EXPORT_SYMBOL_GPL vmlinux 0xf152febd fuse_dev_free +EXPORT_SYMBOL_GPL vmlinux 0xf1625399 led_trigger_unregister +EXPORT_SYMBOL_GPL vmlinux 0xf16ac1df sdhci_pci_o2_probe +EXPORT_SYMBOL_GPL vmlinux 0xf184d189 kernel_power_off +EXPORT_SYMBOL_GPL vmlinux 0xf1b087e9 security_inode_setattr +EXPORT_SYMBOL_GPL vmlinux 0xf1b31314 delayacct_on +EXPORT_SYMBOL_GPL vmlinux 0xf1b551d9 ibft_addr +EXPORT_SYMBOL_GPL vmlinux 0xf1c789eb ata_scsi_port_error_handler +EXPORT_SYMBOL_GPL vmlinux 0xf1f5d77d devm_kfree +EXPORT_SYMBOL_GPL vmlinux 0xf204ea12 get_kernel_pages +EXPORT_SYMBOL_GPL vmlinux 0xf21e1f9b disable_percpu_irq +EXPORT_SYMBOL_GPL vmlinux 0xf234525e devm_clk_unregister +EXPORT_SYMBOL_GPL vmlinux 0xf234bbe6 pci_generic_config_write +EXPORT_SYMBOL_GPL vmlinux 0xf264a7ad regmap_field_read +EXPORT_SYMBOL_GPL vmlinux 0xf27977e2 async_synchronize_cookie_domain +EXPORT_SYMBOL_GPL vmlinux 0xf2938ff8 ndo_dflt_bridge_getlink +EXPORT_SYMBOL_GPL vmlinux 0xf2cc2c74 verify_signature +EXPORT_SYMBOL_GPL vmlinux 0xf2eb8f69 efivar_validate +EXPORT_SYMBOL_GPL vmlinux 0xf2f077cc pkey_id_type_name +EXPORT_SYMBOL_GPL vmlinux 0xf2fca922 uart_parse_options +EXPORT_SYMBOL_GPL vmlinux 0xf306e601 ata_dev_pair +EXPORT_SYMBOL_GPL vmlinux 0xf30e105d ezx_pcap_write +EXPORT_SYMBOL_GPL vmlinux 0xf31b3fd1 workqueue_set_max_active +EXPORT_SYMBOL_GPL vmlinux 0xf3260d11 dev_pm_domain_attach +EXPORT_SYMBOL_GPL vmlinux 0xf32648be skb_complete_wifi_ack +EXPORT_SYMBOL_GPL vmlinux 0xf32bdc5d unregister_xenstore_notifier +EXPORT_SYMBOL_GPL vmlinux 0xf331236f btree_geo32 +EXPORT_SYMBOL_GPL vmlinux 0xf3334209 bsg_register_queue +EXPORT_SYMBOL_GPL vmlinux 0xf341a4fb rt_mutex_trylock +EXPORT_SYMBOL_GPL vmlinux 0xf34c5b25 cpufreq_generic_attr +EXPORT_SYMBOL_GPL vmlinux 0xf364f7da dev_coredumpm +EXPORT_SYMBOL_GPL vmlinux 0xf36eeff4 scsi_target_unblock +EXPORT_SYMBOL_GPL vmlinux 0xf37e766f rdev_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0xf3808cb1 get_state_synchronize_rcu +EXPORT_SYMBOL_GPL vmlinux 0xf393d6fa ata_sff_irq_on +EXPORT_SYMBOL_GPL vmlinux 0xf3b451ca kdb_poll_funcs +EXPORT_SYMBOL_GPL vmlinux 0xf3bcc9ea dm_internal_suspend_fast +EXPORT_SYMBOL_GPL vmlinux 0xf3c7a94a crypto_ahash_finup +EXPORT_SYMBOL_GPL vmlinux 0xf3d16a69 trace_seq_puts +EXPORT_SYMBOL_GPL vmlinux 0xf3d1b31d tty_register_device_attr +EXPORT_SYMBOL_GPL vmlinux 0xf3dd3ec1 atomic_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0xf3ebf4eb arch_apei_report_mem_error +EXPORT_SYMBOL_GPL vmlinux 0xf3f12778 dev_pm_qos_hide_flags +EXPORT_SYMBOL_GPL vmlinux 0xf3f18238 ktime_get_resolution_ns +EXPORT_SYMBOL_GPL vmlinux 0xf413e6ed fuse_abort_conn +EXPORT_SYMBOL_GPL vmlinux 0xf42f0f35 devm_regmap_field_alloc +EXPORT_SYMBOL_GPL vmlinux 0xf42f7042 pinctrl_select_state +EXPORT_SYMBOL_GPL vmlinux 0xf4437218 ip6_dst_lookup +EXPORT_SYMBOL_GPL vmlinux 0xf44f4346 ip_tunnel_get_stats64 +EXPORT_SYMBOL_GPL vmlinux 0xf46be58e ata_scsi_simulate +EXPORT_SYMBOL_GPL vmlinux 0xf46f0671 register_trace_event +EXPORT_SYMBOL_GPL vmlinux 0xf475454d pci_ats_queue_depth +EXPORT_SYMBOL_GPL vmlinux 0xf494f618 mmc_regulator_get_ocrmask +EXPORT_SYMBOL_GPL vmlinux 0xf499fdb2 rcu_barrier_bh +EXPORT_SYMBOL_GPL vmlinux 0xf49ac031 sysfs_update_group +EXPORT_SYMBOL_GPL vmlinux 0xf4fc2d6c __ring_buffer_alloc +EXPORT_SYMBOL_GPL vmlinux 0xf503555e usb_autopm_put_interface_no_suspend +EXPORT_SYMBOL_GPL vmlinux 0xf519d4ab register_ftrace_function +EXPORT_SYMBOL_GPL vmlinux 0xf52a8ffa call_srcu +EXPORT_SYMBOL_GPL vmlinux 0xf54bd49b lcm +EXPORT_SYMBOL_GPL vmlinux 0xf553318d cpuidle_pause_and_lock +EXPORT_SYMBOL_GPL vmlinux 0xf5715ba8 kallsyms_on_each_symbol +EXPORT_SYMBOL_GPL vmlinux 0xf57621c2 uart_insert_char +EXPORT_SYMBOL_GPL vmlinux 0xf5774f2a __ata_change_queue_depth +EXPORT_SYMBOL_GPL vmlinux 0xf5785b42 evtchn_get +EXPORT_SYMBOL_GPL vmlinux 0xf589dd75 pci_check_and_unmask_intx +EXPORT_SYMBOL_GPL vmlinux 0xf5945bac gnttab_free_grant_references +EXPORT_SYMBOL_GPL vmlinux 0xf5a691cd invalidate_bh_lrus +EXPORT_SYMBOL_GPL vmlinux 0xf5b61188 irq_create_direct_mapping +EXPORT_SYMBOL_GPL vmlinux 0xf5b87b4c rio_register_scan +EXPORT_SYMBOL_GPL vmlinux 0xf5b8891d rhashtable_insert_slow +EXPORT_SYMBOL_GPL vmlinux 0xf5b9f42d aead_geniv_alloc +EXPORT_SYMBOL_GPL vmlinux 0xf5bd9a1e serial8250_handle_irq +EXPORT_SYMBOL_GPL vmlinux 0xf5c5fd0f iommu_detach_device +EXPORT_SYMBOL_GPL vmlinux 0xf5d290b9 yield_to +EXPORT_SYMBOL_GPL vmlinux 0xf5da0b5f devm_power_supply_register +EXPORT_SYMBOL_GPL vmlinux 0xf5f107f3 devm_rtc_device_register +EXPORT_SYMBOL_GPL vmlinux 0xf6004ae2 rhashtable_walk_exit +EXPORT_SYMBOL_GPL vmlinux 0xf60306e8 __online_page_set_limits +EXPORT_SYMBOL_GPL vmlinux 0xf608ac06 iommu_iova_to_phys +EXPORT_SYMBOL_GPL vmlinux 0xf60defa8 i2c_new_dummy +EXPORT_SYMBOL_GPL vmlinux 0xf60fd999 power_supply_register_no_ws +EXPORT_SYMBOL_GPL vmlinux 0xf6276d1b flush_kthread_work +EXPORT_SYMBOL_GPL vmlinux 0xf628b07e fb_deferred_io_fsync +EXPORT_SYMBOL_GPL vmlinux 0xf6393002 vfs_test_lock +EXPORT_SYMBOL_GPL vmlinux 0xf65eb72e __init_kthread_worker +EXPORT_SYMBOL_GPL vmlinux 0xf6623e72 usb_clear_halt +EXPORT_SYMBOL_GPL vmlinux 0xf686cc77 wm831x_reg_read +EXPORT_SYMBOL_GPL vmlinux 0xf6976672 agp_add_bridge +EXPORT_SYMBOL_GPL vmlinux 0xf6a9556a btree_grim_visitor +EXPORT_SYMBOL_GPL vmlinux 0xf6bcd1cc platform_device_add_data +EXPORT_SYMBOL_GPL vmlinux 0xf6c71a25 cper_severity_str +EXPORT_SYMBOL_GPL vmlinux 0xf6c8dc62 cpu_hotplug_enable +EXPORT_SYMBOL_GPL vmlinux 0xf6cda457 rio_mport_get_physefb +EXPORT_SYMBOL_GPL vmlinux 0xf6e874f5 ata_timing_merge +EXPORT_SYMBOL_GPL vmlinux 0xf6eeafae __rio_local_write_config_16 +EXPORT_SYMBOL_GPL vmlinux 0xf6f39970 raw_hash_sk +EXPORT_SYMBOL_GPL vmlinux 0xf7016530 xenbus_gather +EXPORT_SYMBOL_GPL vmlinux 0xf711cc47 ata_sas_queuecmd +EXPORT_SYMBOL_GPL vmlinux 0xf727ff38 ata_sas_port_alloc +EXPORT_SYMBOL_GPL vmlinux 0xf7322bc8 pv_time_ops +EXPORT_SYMBOL_GPL vmlinux 0xf74a4334 ata_sff_busy_sleep +EXPORT_SYMBOL_GPL vmlinux 0xf751d9bd spi_get_next_queued_message +EXPORT_SYMBOL_GPL vmlinux 0xf7608cdf __tracepoint_io_page_fault +EXPORT_SYMBOL_GPL vmlinux 0xf7790faa disk_part_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0xf7860eb3 hrtimer_init_sleeper +EXPORT_SYMBOL_GPL vmlinux 0xf78b49f3 shash_attr_alg +EXPORT_SYMBOL_GPL vmlinux 0xf798fe30 arizona_dev_exit +EXPORT_SYMBOL_GPL vmlinux 0xf7b6fbdd sysfs_create_group +EXPORT_SYMBOL_GPL vmlinux 0xf7c3f273 xen_resume_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0xf7cfd6f1 syscon_regmap_lookup_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0xf7dce3b0 pm_wakeup_event +EXPORT_SYMBOL_GPL vmlinux 0xf81e4c67 ip6_local_out +EXPORT_SYMBOL_GPL vmlinux 0xf82650d2 crypto_remove_spawns +EXPORT_SYMBOL_GPL vmlinux 0xf82f0189 anon_transport_class_register +EXPORT_SYMBOL_GPL vmlinux 0xf82f3657 work_on_cpu +EXPORT_SYMBOL_GPL vmlinux 0xf85c838c __skb_tstamp_tx +EXPORT_SYMBOL_GPL vmlinux 0xf87d5b40 devm_regulator_get +EXPORT_SYMBOL_GPL vmlinux 0xf8802492 print_stack_trace +EXPORT_SYMBOL_GPL vmlinux 0xf891bc29 bio_alloc_mddev +EXPORT_SYMBOL_GPL vmlinux 0xf8a3dd13 ata_std_postreset +EXPORT_SYMBOL_GPL vmlinux 0xf8a6dae0 acpiphp_register_attention +EXPORT_SYMBOL_GPL vmlinux 0xf8d439b1 part_round_stats +EXPORT_SYMBOL_GPL vmlinux 0xf8dc9fc7 crypto_larval_alloc +EXPORT_SYMBOL_GPL vmlinux 0xf8dffde3 inet_hash_connect +EXPORT_SYMBOL_GPL vmlinux 0xf8e3cc80 ata_sg_init +EXPORT_SYMBOL_GPL vmlinux 0xf8e6b564 hibernation_set_ops +EXPORT_SYMBOL_GPL vmlinux 0xf8f21684 usb_hub_clear_tt_buffer +EXPORT_SYMBOL_GPL vmlinux 0xf8f3a0fb ata_ratelimit +EXPORT_SYMBOL_GPL vmlinux 0xf8f6b269 pci_user_write_config_dword +EXPORT_SYMBOL_GPL vmlinux 0xf8fe3d0b kmsg_dump_register +EXPORT_SYMBOL_GPL vmlinux 0xf92ce956 kdb_printf +EXPORT_SYMBOL_GPL vmlinux 0xf932015f __raw_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xf935b740 pci_user_read_config_word +EXPORT_SYMBOL_GPL vmlinux 0xf94080cd phy_pm_runtime_put +EXPORT_SYMBOL_GPL vmlinux 0xf948cb60 dev_pm_qos_hide_latency_tolerance +EXPORT_SYMBOL_GPL vmlinux 0xf95322f4 kthread_parkme +EXPORT_SYMBOL_GPL vmlinux 0xf9547a17 divider_recalc_rate +EXPORT_SYMBOL_GPL vmlinux 0xf9650545 __root_device_register +EXPORT_SYMBOL_GPL vmlinux 0xf9765833 dmi_match +EXPORT_SYMBOL_GPL vmlinux 0xf991c09f rcu_qs_ctr +EXPORT_SYMBOL_GPL vmlinux 0xf9924426 arch_add_memory +EXPORT_SYMBOL_GPL vmlinux 0xf995ea1b request_firmware_direct +EXPORT_SYMBOL_GPL vmlinux 0xf997a2f2 mmc_app_cmd +EXPORT_SYMBOL_GPL vmlinux 0xf99c44eb class_unregister +EXPORT_SYMBOL_GPL vmlinux 0xf9a054b5 __round_jiffies +EXPORT_SYMBOL_GPL vmlinux 0xf9abb8c5 extcon_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xf9c27030 ata_std_prereset +EXPORT_SYMBOL_GPL vmlinux 0xf9c2da57 clkdev_create +EXPORT_SYMBOL_GPL vmlinux 0xf9ca3160 ata_id_xfermask +EXPORT_SYMBOL_GPL vmlinux 0xf9d9264e xen_have_vector_callback +EXPORT_SYMBOL_GPL vmlinux 0xf9e4fdf6 regulator_map_voltage_linear +EXPORT_SYMBOL_GPL vmlinux 0xf9ebf72b extcon_get_edev_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0xf9f50d97 pm_runtime_force_resume +EXPORT_SYMBOL_GPL vmlinux 0xfa1eb910 unregister_syscore_ops +EXPORT_SYMBOL_GPL vmlinux 0xfa1f4662 scatterwalk_start +EXPORT_SYMBOL_GPL vmlinux 0xfa1fd844 wakeup_source_create +EXPORT_SYMBOL_GPL vmlinux 0xfa35044a alternatives_patched +EXPORT_SYMBOL_GPL vmlinux 0xfa416004 tun_get_socket +EXPORT_SYMBOL_GPL vmlinux 0xfa658e65 register_acpi_bus_type +EXPORT_SYMBOL_GPL vmlinux 0xfa6e9532 scsi_get_vpd_page +EXPORT_SYMBOL_GPL vmlinux 0xfa7ad50f xfrm_audit_state_notfound_simple +EXPORT_SYMBOL_GPL vmlinux 0xfa8711c7 device_wakeup_disable +EXPORT_SYMBOL_GPL vmlinux 0xfa901b31 compat_get_timespec +EXPORT_SYMBOL_GPL vmlinux 0xfa9e33f7 klist_init +EXPORT_SYMBOL_GPL vmlinux 0xfad82f63 tty_buffer_space_avail +EXPORT_SYMBOL_GPL vmlinux 0xfaf860b1 __percpu_ida_init +EXPORT_SYMBOL_GPL vmlinux 0xfb1169a0 pci_reset_bus +EXPORT_SYMBOL_GPL vmlinux 0xfb1f041b dev_attr_unload_heads +EXPORT_SYMBOL_GPL vmlinux 0xfb23639e find_module +EXPORT_SYMBOL_GPL vmlinux 0xfb25ce06 btree_get_prev +EXPORT_SYMBOL_GPL vmlinux 0xfb32b30f ring_buffer_read_prepare_sync +EXPORT_SYMBOL_GPL vmlinux 0xfb38cb98 regulator_set_voltage_sel_regmap +EXPORT_SYMBOL_GPL vmlinux 0xfb4e3b95 crypto_init_spawn +EXPORT_SYMBOL_GPL vmlinux 0xfb64b230 acpi_processor_ffh_cstate_probe +EXPORT_SYMBOL_GPL vmlinux 0xfb6eedf9 power_group_name +EXPORT_SYMBOL_GPL vmlinux 0xfb72c56e ip6_redirect +EXPORT_SYMBOL_GPL vmlinux 0xfb753860 acpi_subsys_freeze +EXPORT_SYMBOL_GPL vmlinux 0xfb84438f shash_ahash_finup +EXPORT_SYMBOL_GPL vmlinux 0xfba1c75f virtio_device_restore +EXPORT_SYMBOL_GPL vmlinux 0xfba262b6 input_class +EXPORT_SYMBOL_GPL vmlinux 0xfbb9a47a ping_queue_rcv_skb +EXPORT_SYMBOL_GPL vmlinux 0xfbbd41ca no_action +EXPORT_SYMBOL_GPL vmlinux 0xfbc4943b tty_put_char +EXPORT_SYMBOL_GPL vmlinux 0xfbcd640c ata_msleep +EXPORT_SYMBOL_GPL vmlinux 0xfbdf21e2 virtqueue_get_avail +EXPORT_SYMBOL_GPL vmlinux 0xfc03d97a page_is_ram +EXPORT_SYMBOL_GPL vmlinux 0xfc201b66 sprint_oid +EXPORT_SYMBOL_GPL vmlinux 0xfc254d15 gnttab_free_auto_xlat_frames +EXPORT_SYMBOL_GPL vmlinux 0xfc2d9ec4 bsg_setup_queue +EXPORT_SYMBOL_GPL vmlinux 0xfc3b4246 acpi_bus_update_power +EXPORT_SYMBOL_GPL vmlinux 0xfc5cf7bc blk_mq_unfreeze_queue +EXPORT_SYMBOL_GPL vmlinux 0xfc6792c5 register_pernet_device +EXPORT_SYMBOL_GPL vmlinux 0xfc7d508a inet_csk_route_req +EXPORT_SYMBOL_GPL vmlinux 0xfc952388 regulator_set_load +EXPORT_SYMBOL_GPL vmlinux 0xfc968c8b apei_exec_write_register_value +EXPORT_SYMBOL_GPL vmlinux 0xfca979bf __lock_page_killable +EXPORT_SYMBOL_GPL vmlinux 0xfcc058d0 set_foreign_p2m_mapping +EXPORT_SYMBOL_GPL vmlinux 0xfcd7bc0b ring_buffer_empty +EXPORT_SYMBOL_GPL vmlinux 0xfd2786f4 is_dock_device +EXPORT_SYMBOL_GPL vmlinux 0xfd365619 regcache_mark_dirty +EXPORT_SYMBOL_GPL vmlinux 0xfd3d382c tpm_pm_resume +EXPORT_SYMBOL_GPL vmlinux 0xfd4974bd unregister_trace_event +EXPORT_SYMBOL_GPL vmlinux 0xfd51b281 gnttab_end_foreign_access_ref +EXPORT_SYMBOL_GPL vmlinux 0xfd679ada __gpiod_get_index_optional +EXPORT_SYMBOL_GPL vmlinux 0xfd695f3b sync_page_io +EXPORT_SYMBOL_GPL vmlinux 0xfd6dba23 dm_noflush_suspending +EXPORT_SYMBOL_GPL vmlinux 0xfd7243c7 erst_disable +EXPORT_SYMBOL_GPL vmlinux 0xfd73fabd crypto_ahash_type +EXPORT_SYMBOL_GPL vmlinux 0xfd7a50ea set_timer_slack +EXPORT_SYMBOL_GPL vmlinux 0xfd82c47d bdev_write_page +EXPORT_SYMBOL_GPL vmlinux 0xfd8ea967 dev_coredumpv +EXPORT_SYMBOL_GPL vmlinux 0xfdaf67f8 usb_root_hub_lost_power +EXPORT_SYMBOL_GPL vmlinux 0xfdc45d4e debugfs_create_dir +EXPORT_SYMBOL_GPL vmlinux 0xfdcc62c1 posix_acl_default_xattr_handler +EXPORT_SYMBOL_GPL vmlinux 0xfde57272 virtqueue_get_buf +EXPORT_SYMBOL_GPL vmlinux 0xfdf437ce rio_mport_send_doorbell +EXPORT_SYMBOL_GPL vmlinux 0xfe2a42ff regmap_field_alloc +EXPORT_SYMBOL_GPL vmlinux 0xfe448a7b bpf_prog_select_runtime +EXPORT_SYMBOL_GPL vmlinux 0xfe4b650c xen_swiotlb_sync_single_for_device +EXPORT_SYMBOL_GPL vmlinux 0xfe524d7b cpuidle_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0xfe5fda81 dax_pfn_mkwrite +EXPORT_SYMBOL_GPL vmlinux 0xfe727411 get_phys_to_machine +EXPORT_SYMBOL_GPL vmlinux 0xfe734d9a devm_pinctrl_put +EXPORT_SYMBOL_GPL vmlinux 0xfe814308 devres_release +EXPORT_SYMBOL_GPL vmlinux 0xfe990052 gpio_free +EXPORT_SYMBOL_GPL vmlinux 0xfeb94e8d proc_get_parent_data +EXPORT_SYMBOL_GPL vmlinux 0xfebfea3a devm_regulator_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0xfec4e0de relay_flush +EXPORT_SYMBOL_GPL vmlinux 0xfed11ed1 usb_mon_deregister +EXPORT_SYMBOL_GPL vmlinux 0xfeeaf22b hwpoison_filter +EXPORT_SYMBOL_GPL vmlinux 0xfef8a166 trace_current_buffer_lock_reserve +EXPORT_SYMBOL_GPL vmlinux 0xfefe9069 xenbus_unmap_ring +EXPORT_SYMBOL_GPL vmlinux 0xff05fa13 vring_interrupt +EXPORT_SYMBOL_GPL vmlinux 0xff291ecf clk_unregister_divider +EXPORT_SYMBOL_GPL vmlinux 0xff2ce747 machine_check_poll +EXPORT_SYMBOL_GPL vmlinux 0xff2e0719 usb_bulk_msg +EXPORT_SYMBOL_GPL vmlinux 0xff4242f3 shmem_add_seals +EXPORT_SYMBOL_GPL vmlinux 0xff42db8a ata_host_activate +EXPORT_SYMBOL_GPL vmlinux 0xff439ca6 tcp_slow_start +EXPORT_SYMBOL_GPL vmlinux 0xff5a8cfe cn_del_callback +EXPORT_SYMBOL_GPL vmlinux 0xff633558 vprintk_default +EXPORT_SYMBOL_GPL vmlinux 0xff67d6a0 crypto_ablkcipher_type +EXPORT_SYMBOL_GPL vmlinux 0xfff3a93e xen_find_device_domain_owner --- linux-raspi2-4.2.0.orig/debian.master/abi/4.2.0-26.31/amd64/generic.compiler +++ linux-raspi2-4.2.0/debian.master/abi/4.2.0-26.31/amd64/generic.compiler @@ -0,0 +1 @@ +GCC: (Ubuntu 5.2.1-22ubuntu2) 5.2.1 20151010 --- linux-raspi2-4.2.0.orig/debian.master/abi/4.2.0-26.31/amd64/generic.modules +++ linux-raspi2-4.2.0/debian.master/abi/4.2.0-26.31/amd64/generic.modules @@ -0,0 +1,4467 @@ +3c574_cs +3c589_cs +3c59x +3w-9xxx +3w-sas +3w-xxxx +6lowpan +6pack +8021q +8139cp +8139too +8250_dw +8250_fintek +8255 +8255_pci +8390 +842 +842_compress +842_decompress +88pm800 +88pm805 +88pm80x +88pm80x_onkey +88pm8607 +88pm860x_battery +88pm860x_bl +88pm860x_charger +88pm860x_onkey +88pm860x-ts +9p +9pnet +9pnet_rdma +9pnet_virtio +a100u2w +a3d +a8293 +aacraid +aat2870_bl +aat2870-regulator +ab3100 +ab3100-otp +abituguru +abituguru3 +ablk_helper +ac97_bus +acard-ahci +acecad +acenic +acerhdf +acer-wmi +acpi-als +acpi_extlog +acpi_ipmi +acpi_pad +acpiphp_ibm +acpi_power_meter +acpi_thermal_rel +acquirewdt +act200l-sir +act8865-regulator +act_bpf +act_connmark +act_csum +act_gact +act_ipt +actisys-sir +act_mirred +act_nat +act_pedit +act_police +act_simple +act_skbedit +act_vlan +ad2s1200 +ad2s1210 +ad2s90 +ad5064 +ad525x_dpot +ad525x_dpot-i2c +ad525x_dpot-spi +ad5360 +ad5380 +ad5398 +ad5421 +ad5446 +ad5449 +ad5504 +ad5624r_spi +ad5686 +ad5755 +ad5764 +ad5791 +ad5933 +ad714x +ad714x-i2c +ad714x-spi +ad7150 +ad7152 +ad7192 +ad7266 +ad7280a +ad7291 +ad7298 +ad7303 +ad7314 +ad7414 +ad7418 +ad7476 +ad7606 +ad7746 +ad7780 +ad7791 +ad7793 +ad7816 +ad7877 +ad7879 +ad7879-i2c +ad7879-spi +ad7887 +ad7923 +ad799x +ad8366 +ad9523 +ad9832 +ad9834 +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 +ade7753 +ade7754 +ade7758 +ade7759 +ade7854 +ade7854-i2c +ade7854-spi +adf4350 +adfs +adi +adis16060 +adis16080 +adis16130 +adis16136 +adis16201 +adis16203 +adis16204 +adis16209 +adis16220 +adis16240 +adis16260 +adis16400 +adis16480 +adis_lib +adjd_s311 +adl_pci6208 +adl_pci7x3x +adl_pci8164 +adl_pci9111 +adl_pci9118 +adm1021 +adm1025 +adm1026 +adm1029 +adm1031 +adm1275 +adm8211 +adm9240 +adp5520_bl +adp5520-keys +adp5588-keys +adp5589-keys +adp8860_bl +adp8870_bl +adq12b +ads1015 +ads7828 +ads7846 +ads7871 +ad_sigma_delta +adt7310 +adt7316 +adt7316-i2c +adt7316-spi +adt7410 +adt7411 +adt7462 +adt7470 +adt7475 +adt7x10 +adummy +adutux +adv7170 +adv7175 +adv7511 +adv7604 +adv7842 +advansys +advantechwdt +adv_pci1710 +adv_pci1723 +adv_pci1724 +adv_pci_dio +adxl34x +adxl34x-i2c +adxl34x-spi +adxrs450 +aesni-intel +aes-x86_64 +af9013 +af9033 +af_alg +affs +af_key +af_packet_diag +af-rxrpc +ah4 +ah6 +aha152x_cs +ahci +ahci_platform +aic79xx +aic7xxx +aic94xx +aio_aio12_8 +aio_iiro_16 +aiptek +aircable +airo +airo_cs +airspy +ak8975 +al3320a +algif_aead +algif_hash +algif_rng +algif_skcipher +alienware-wmi +ali-ircc +alim1535_wdt +alim7101_wdt +altera-ci +altera_jtaguart +altera_ps2 +altera-stapl +altera_tse +altera_uart +alx +am53c974 +ambassador +amc6821 +amd +amd5536udc +amd64_edac_mod +amd76xrom +amd8111e +amd_freq_sensitivity +amdgpu +amd_iommu_v2 +amdkfd +amd-rng +amilo-rfkill +amplc_dio200 +amplc_dio200_common +amplc_dio200_pci +amplc_pc236 +amplc_pc236_common +amplc_pc263 +amplc_pci224 +amplc_pci230 +amplc_pci236 +amplc_pci263 +ams369fg06 +analog +anatop-regulator +ansi_cprng +anubis +aoe +apanel +apds9300 +apds9802als +apds990x +apple_bl +appledisplay +apple-gmux +applesmc +appletalk +appletouch +applicom +ar5523 +ar7part +arc4 +arcfb +arcmsr +arcnet +arc_ps2 +arc-rawmode +arc-rimi +arc_uart +arizona-haptics +arizona-i2c +arizona-ldo1 +arizona-micsupp +arizona-spi +ark3116 +arkfb +arptable_filter +arp_tables +arpt_mangle +as102_fe +as3711_bl +as3711-regulator +as3935 +as5011 +asb100 +asc7621 +asix +ast +asus_atk0110 +asus-laptop +asus-nb-wmi +asus-wmi +async_memcpy +async_pq +async_raid6_recov +async_tx +async_xor +at24 +at25 +at76c50x-usb +at803x +at86rf230 +atbm8830 +aten +ath +ath10k_core +ath10k_pci +ath3k +ath5k +ath6kl_core +ath6kl_sdio +ath6kl_usb +ath9k +ath9k_common +ath9k_htc +ath9k_hw +ati_remote +ati_remote2 +atl1 +atl1c +atl1e +atl2 +atlas_btns +atm +atmel +atmel_cs +atmel_mxt_ts +atmel_pci +atmtcp +atp +atp870u +atusb +atxp1 +aty128fb +atyfb +au0828 +au8522_common +au8522_decoder +au8522_dig +aufs +auo_k1900fb +auo_k1901fb +auo_k190x +auo-pixcir-ts +authenc +authencesn +auth_rpcgss +autofs4 +avma1_cs +avm_cs +avmfritz +ax25 +ax88179_178a +axnet_cs +axp20x-pek +axp20x-regulator +axp288_adc +axp288_charger +axp288_fuel_gauge +b1 +b1dma +b1pci +b1pcmcia +b2c2-flexcop +b2c2-flexcop-pci +b2c2-flexcop-usb +b43 +b43legacy +b44 +bas_gigaset +batman-adv +baycom_par +baycom_ser_fdx +baycom_ser_hdx +bcache +bch +bcm203x +bcm3510 +bcm590xx +bcm590xx-regulator +bcm5974 +bcm7xxx +bcm87xx +bcma +bcma-hcd +bd6107 +bdc +bdc_pci +be2iscsi +be2net +befs +belkin_sa +bfa +bfs +bfusb +bh1750 +bh1770glc +bh1780gli +binfmt_misc +block2mtd +blocklayoutdriver +blowfish_common +blowfish_generic +blowfish-x86_64 +bluecard_cs +bluetooth +bluetooth_6lowpan +bma150 +bma180 +bmc150-accel +bmc150_magn +bmg160 +bmp085-i2c +bmp085-spi +bmp280 +bna +bnep +bnx2 +bnx2fc +bnx2i +bnx2x +bonding +bpa10x +bpck +bpqether +bq2415x_charger +bq24190_charger +bq24257_charger +bq24735-charger +bq25890_charger +bq27x00_battery +br2684 +brcmfmac +brcmsmac +brcmutil +bridge +br_netfilter +broadcom +broadsheetfb +bsd_comp +bt3c_cs +bt819 +bt856 +bt866 +bt878 +btbcm +btcoexist +btintel +btmrvl +btmrvl_sdio +btrfs +btrtl +btsdio +bttv +btuart_cs +btusb +btwilink +bu21013_ts +budget +budget-av +budget-ci +budget-core +budget-patch +BusLogic +c2port-duramar2150 +c4 +c67x00 +c6xdigio +cachefiles +cadence_wdt +cafe_ccic +cafe_nand +caif +caif_hsi +caif_serial +caif_socket +caif_usb +caif_virtio +camellia-aesni-avx2 +camellia-aesni-avx-x86_64 +camellia_generic +camellia-x86_64 +can +can-bcm +can-dev +can-gw +can-raw +capi +capidrv +capmode +carl9170 +carminefb +cassini +cast5-avx-x86_64 +cast5_generic +cast6-avx-x86_64 +cast6_generic +cast_common +catc +cb710 +cb710-mmc +cb_das16_cs +cb_pcidas +cb_pcidas64 +cb_pcidda +cb_pcimdas +cb_pcimdda +cc10001_adc +cc2520 +cc770 +cc770_isa +cc770_platform +c_can +c_can_pci +c_can_platform +cciss +ccm +ccp +ccp-crypto +cdc-acm +cdc_eem +cdc_ether +cdc_mbim +cdc_ncm +cdc-phonet +cdc_subset +cdc-wdm +ceph +cfag12864b +cfag12864bfb +cfg80211 +cfi_cmdset_0001 +cfi_cmdset_0002 +cfi_cmdset_0020 +cfi_probe +cfi_util +cfspi_slave +ch +ch341 +ch7006 +chacha20_generic +chacha20poly1305 +chaoskey +chipreg +chnl_net +chromeos_laptop +chromeos_pstore +cicada +cifs +ci_hdrc +ci_hdrc_msm +ci_hdrc_pci +ci_hdrc_usb2 +ci_hdrc_zevio +cirrus +cirrusfb +ck804xrom +classmate-laptop +clip +clk-cdce706 +clk-palmas +clk-pwm +clk-s2mps11 +clk-si5351 +clk-twl6040 +clk-wm831x +cls_basic +cls_bpf +cls_cgroup +cls_flow +cls_flower +cls_fw +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_cs +com20020-pci +com90io +com90xx +comedi +comedi_8254 +comedi_8255 +comedi_bond +comedi_isadma +comedi_parport +comedi_pci +comedi_pcmcia +comedi_test +comedi_usb +comm +compal-laptop +configfs +contec_pci_dio +cordic +core +coretemp +cp210x +cpcihp_generic +cpcihp_zt5550 +cpia2 +cpsw_ale +cpu5wdt +cpuid +cpu-notifier-error-inject +cramfs +cr_bllcd +crc32 +crc32-pclmul +crc7 +crc8 +crc-ccitt +crc-itu-t +crct10dif-pclmul +cros_ec +cros_ec_devs +cros_ec_i2c +cros_ec_keyb +cros_ec_lpc +cros_ec_spi +crvml +cryptd +cryptoloop +crypto_null +crypto_user +cs5345 +cs53l32a +csiostor +ct82c710 +ctr +cts +cuse +cw1200_core +cw1200_wlan_sdio +cw1200_wlan_spi +cx18 +cx18-alsa +cx22700 +cx22702 +cx231xx +cx231xx-alsa +cx231xx-dvb +cx2341x +cx23885 +cx24110 +cx24113 +cx24116 +cx24117 +cx24120 +cx24123 +cx25821 +cx25821-alsa +cx25840 +cx82310_eth +cx8800 +cx8802 +cx88-alsa +cx88-blackbird +cx88-dvb +cx88-vp3054-i2c +cx88xx +cxacru +cxd2099 +cxd2820r +cxgb +cxgb3 +cxgb3i +cxgb4 +cxgb4i +cxgb4vf +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 +da9030_battery +da9034-ts +da903x +da903x_bl +da9052-battery +da9052_bl +da9052-hwmon +da9052_onkey +da9052-regulator +da9052_tsi +da9052_wdt +da9055-hwmon +da9055_onkey +da9055-regulator +da9055_wdt +da9063_onkey +da9063-regulator +da9063_wdt +da9150-charger +da9150-core +da9150-gpadc +da9210-regulator +da9211-regulator +dac02 +DAC960 +daqboard2000 +das08 +das08_cs +das08_isa +das08_pci +das16 +das16m1 +das1800 +das6402 +das800 +davicom +db9 +dc395x +dca +dccp +dccp_diag +dccp_ipv4 +dccp_ipv6 +dccp_probe +dcdbas +ddbridge +de2104x +de4x5 +decnet +deflate +defxx +dell-laptop +dell-led +dell-rbtn +dell_rbu +dell-smm-hwmon +dell-smo8800 +dell-wmi +dell-wmi-aio +denali +denali_dt +denali_pci +des3_ede-x86_64 +des_generic +designware_i2s +dgap +dgnc +dht11 +dib0070 +dib0090 +dib3000mb +dib3000mc +dib7000m +dib7000p +dib8000 +dibx000_common +digi_acceleport +diskonchip +divacapi +divadidd +diva_idi +diva_mnt +divas +dl2k +dlci +dlm +dln2 +dm1105 +dm9601 +dm-bio-prison +dm-bufio +dm-cache +dm-cache-cleaner +dm-cache-mq +dm-cache-smq +dm-crypt +dm-delay +dme1737 +dm-era +dmfe +dm-flakey +dmi-sysfs +dm-log +dm-log-userspace +dm-log-writes +dmm32at +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-verity +dmx3191d +dm-zero +dnet +dn_rtmsg +docg3 +docg4 +dp83867 +dpt_i2o +drbd +drbg +drm +drm_kms_helper +drv260x +drv2665 +drv2667 +drx39xyj +drxd +drxk +ds1621 +ds1682 +ds1wm +ds2482 +ds2490 +ds2760_battery +ds2780_battery +ds2781_battery +ds2782_battery +ds3000 +ds620 +dsbr100 +dscc4 +dss1_divert +dst +dst_ca +dstr +dt2801 +dt2811 +dt2814 +dt2815 +dt2817 +dt282x +dt3000 +dt3155 +dt9812 +dtl1_cs +dummy +dummy-irq +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-digitv +dvb-usb-dtt200u +dvb-usb-dtv5100 +dvb-usb-dvbsky +dvb-usb-dw2102 +dvb-usb-ec168 +dvb-usb-friio +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_v2 +dvb-usb-vp702x +dvb-usb-vp7045 +dwc3 +dwc3-pci +dw_dmac +dw_dmac_core +dw_dmac_pci +dwmac-generic +dw_wdt +dyna_pci10xx +dynapro +e100 +e1000 +e1000e +e3x0-button +e4000 +e752x_edac +earth-pt1 +earth-pt3 +eata +ebt_802_3 +ebtable_broute +ebtable_filter +ebtable_nat +ebtables +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 +ec100 +ec_bhf +echainiv +echo +ec_sys +edac_core +edac_mce_amd +edt-ft5x06 +eeepc-laptop +eeepc-wmi +eeprom +eeprom_93cx6 +eeprom_93xx46 +eeti_ts +efi-pstore +efs +ehset +einj +elan_i2c +elants_i2c +elo +elsa_cs +em28xx +em28xx-alsa +em28xx-dvb +em28xx-rc +em28xx-v4l +emc1403 +emc2103 +emc6w201 +em_canid +em_cmp +emi26 +emi62 +em_ipset +em_meta +em_nbyte +empeg +ems_pci +ems_pcmcia +ems_usb +em_text +emu10k1-gp +em_u32 +enc28j60 +enclosure +ene_ir +eni +enic +epat +epia +epic100 +eql +esas2r +esb2rom +esd_usb2 +esi-sir +esp4 +esp6 +esp_scsi +et1011c +et131x +ethoc +eurotechwdt +evbug +exofs +extcon-adc-jack +extcon-arizona +extcon-axp288 +extcon-gpio +extcon-max14577 +extcon-max77693 +extcon-max77843 +extcon-max8997 +extcon-palmas +extcon-rt8973a +extcon-sm5502 +extcon-usb-gpio +ezusb +f2fs +f71805f +f71808e_wdt +f71882fg +f75375s +f81232 +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_ssd1289 +fb_ssd1306 +fb_ssd1331 +fb_ssd1351 +fb_st7735r +fb_sys_fops +fbtft +fbtft_device +fb_tinylcd +fb_tls8204 +fb_uc1701 +fb_upd161704 +fb_watterott +fc0011 +fc0012 +fc0013 +fc2580 +fcoe +fcrypt +fdomain +fdomain_cs +fealnx +ff-memless +fid +fintek-cir +firedtv +firestream +firewire-core +firewire-net +firewire-ohci +firewire-sbp2 +firewire-serial +fit2 +fit3 +fixed +fl512 +fld +flexfb +floppy +fm10k +fm801-gp +fmc +fmc-chardev +fmc-fakedev +fmc-trivial +fmc-write-eeprom +fm_drv +fmvj18x_cs +fnic +forcedeth +fore_200e +fotg210-hcd +fotg210-udc +fou +freevxfs +friq +frpw +fsa9480 +fscache +fschmd +fsl_lpuart +ft1000 +ft1000_pcmcia +ftdi-elan +ftdi_sio +ftl +fujitsu-laptop +fujitsu-tablet +fujitsu_ts +fusbh200-hcd +g450_pll +g760a +g762 +g_acm_ms +gadgetfs +gamecon +gameport +garmin_gps +garp +g_audio +g_cdc +gcm +g_dbgp +gdmtty +gdmulte +gdmwm +gdth +generic +generic-adc-battery +generic_bl +genet +geneve +geneve_core +gen_probe +genwqe_card +g_ether +gf128mul +gf2k +g_ffs +gfs2 +ghash-clmulni-intel +ghash-generic +g_hid +gigaset +girbil-sir +gl518sm +gl520sm +gl620a +gluebi +glue_helper +gma500_gfx +g_mass_storage +g_midi +g_ncm +g_nokia +go7007 +go7007-loader +go7007-usb +goku_udc +goodix +gp2ap002a00f +gp2ap020a00f +gpio +gpio-addr-flash +gpio-adp5520 +gpio-adp5588 +gpio-amd8111 +gpio-arizona +gpio_backlight +gpio-beeper +gpio-charger +gpio-crystalcove +gpio-da9052 +gpio-da9055 +gpio-dln2 +gpio-dwapb +gpio-f7188x +gpio-fan +gpio-generic +gpio-ich +gpio-ir-recv +gpio-it8761e +gpio-janz-ttl +gpio-kempld +gpio_keys +gpio_keys_polled +gpio-lp3943 +gpio-max7300 +gpio-max7301 +gpio-max730x +gpio-max732x +gpio-mc33880 +gpio-mcp23s08 +gpio-ml-ioh +gpio_mouse +gpio-pca953x +gpio-pcf857x +gpio-rdc321x +gpio-regulator +gpio-sch +gpio-sch311x +gpio_tilt_polled +gpio-tps65912 +gpio-twl4030 +gpio-twl6040 +gpio-ucb1400 +gpio-viperboard +gpio-vx855 +gpio-wm831x +gpio-wm8350 +gpio-wm8994 +g_printer +grace +gre +grip +grip_mp +gr_udc +gsc_hpdi +g_serial +gs_fpga +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 +gs_usb +gtco +guillemot +gunze +g_webcam +g_zero +hackrf +hamachi +hampshire +hangcheck-timer +hanwang +hci +hci_uart +hci_vhci +hdaps +hdlc +hdlc_cisco +hdlcdrv +hdlc_fr +hdlc_ppp +hdlc_raw +hdlc_raw_eth +hdlc_x25 +hdpvr +he +hecubafb +hexium_gemini +hexium_orion +hfc4s8s_l1 +hfcmulti +hfcpci +hfcsusb +hfc_usb +hfs +hfsplus +hgafb +hid +hid-a4tech +hid-apple +hid-appleir +hid-aureal +hid-axff +hid-belkin +hid-betopff +hid-cherry +hid-chicony +hid-cp2112 +hid-cypress +hid-dr +hid-elecom +hid-elo +hid-emsff +hid-ezkey +hid-gaff +hid-generic +hid-gt683r +hid-gyration +hid-holtekff +hid-holtek-kbd +hid-holtek-mouse +hid-hyperv +hid-icade +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 +hidp +hid-penmount +hid-petalynx +hid-picolcd +hid-pl +hid-plantronics +hid-primax +hid-prodikeys +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-iio-common +hid-sensor-incl-3d +hid-sensor-magn-3d +hid-sensor-press +hid-sensor-prox +hid-sensor-rotation +hid-sensor-trigger +hid-sjoy +hid-sony +hid-speedlink +hid-steelseries +hid-sunplus +hid-thingm +hid-tivo +hid-tmff +hid-topseed +hid-twinhan +hid-uclogic +hid-waltop +hid-wiimote +hid-xinmo +hid-zpff +hid-zydacron +hih6130 +hisax +hisax_fcpcipnp +hisax_isac +hisax_st5481 +hisi504_nand +hmc5843_core +hmc5843_i2c +hmc5843_spi +hmc6352 +hopper +horizon +hostap +hostap_cs +hostap_pci +hostap_plx +hp100 +hp_accel +hpfs +hpilo +hpsa +hptiop +hpwdt +hp-wireless +hp-wmi +hsi +hsi_char +hso +hsr +hsu_dma +hsu_dma_pci +htc-pasic3 +htu21 +huawei_cdc_ncm +hv_balloon +hv_netvsc +hv_storvsc +hv_utils +hv_vmbus +hwa-hc +hwa-rc +hwmon-vid +hwpoison-inject +hx8357 +hyperv_fb +hyperv-keyboard +hysdn +i1480-dfu-usb +i1480-est +i2400m +i2400m-usb +i2c-algo-bit +i2c-algo-pca +i2c-ali1535 +i2c-ali1563 +i2c-ali15x3 +i2c-amd756 +i2c-amd756-s4882 +i2c-amd8111 +i2c-cbus-gpio +i2c-cros-ec-tunnel +i2c-designware-core +i2c-designware-pci +i2c-designware-platform +i2c-diolan-u2c +i2c-dln2 +i2c-gpio +i2c-hid +i2c-i801 +i2c-isch +i2c-ismt +i2c-kempld +i2c-matroxfb +i2c-mux +i2c-mux-gpio +i2c-mux-pca9541 +i2c-mux-pca954x +i2c-mux-pinctrl +i2c-nforce2 +i2c-nforce2-s4985 +i2c-ocores +i2c-parport +i2c-parport-light +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 +i40e +i40evf +i5000_edac +i5100_edac +i5400_edac +i5500_temp +i5k_amb +i6300esb +i7300_edac +i7300_idle +i740fb +i7core_edac +i810 +i82092 +i82975x_edac +i915 +ib700wdt +ib_addr +ib_cm +ib_core +ib_ipath +ib_ipoib +ib_iser +ib_isert +ib_mad +ibmaem +ibmasm +ibmasr +ibmpex +ibm_rtl +ib_mthca +ib_qib +ib_sa +ib_srp +ib_srpt +ib_ucm +ib_umad +ib_uverbs +ichxrom +icplus +icp_multi +ics932s401 +ideapad-laptop +ideapad_slidebar +idma64 +idmouse +idt77252 +idtcps +idt_gen2 +ie31200_edac +ie6xx_wdt +ieee802154 +ieee802154_6lowpan +ieee802154_socket +ifb +iforce +igb +igbvf +igorplugusb +iguanair +iio_dummy +iio_hwmon +iio-trig-interrupt +iio-trig-periodic-rtc +iio-trig-sysfs +ii_pci20kc +ili210x +ili922x +ili9320 +imm +imon +ims-pcu +imx074 +ina209 +ina2xx +industrialio +industrialio-triggered-buffer +inet_diag +inexio +inftl +initio +input-leds +input-polldev +int3400_thermal +int3402_thermal +int3403_thermal +int340x_thermal_zone +int51x1 +intelfb +intel_ips +intel-lpss +intel-lpss-acpi +intel-lpss-pci +intel_menlow +intel_oaktrail +intel_pmc_ipc +intel_powerclamp +intel_qat +intel_quark_i2c_gpio +intel_rapl +intel-rng +intel-rst +intel-smartconnect +intel_soc_dts_iosf +intel_soc_dts_thermal +intel_vr_nor +interact +interval_tree_test +inv-mpu6050 +ioatdma +ioc4 +io_edgeport +io_ti +iowarrior +ip6_gre +ip6table_filter +ip6table_mangle +ip6table_nat +ip6table_raw +ip6_tables +ip6table_security +ip6t_ah +ip6t_eui64 +ip6t_frag +ip6t_hbh +ip6t_ipv6header +ip6t_MASQUERADE +ip6t_mh +ip6t_NPT +ip6t_REJECT +ip6t_rpfilter +ip6t_rt +ip6t_SYNPROXY +ip6_tunnel +ip6_udp_tunnel +ip6_vti +ipack +ipaq +ipcomp +ipcomp6 +ipddp +ipg +ip_gre +iphase +ipheth +ipip +ipmi_devintf +ipmi_msghandler +ipmi_poweroff +ipmi_si +ipmi_ssif +ipmi_watchdog +ipoctal +ipr +ips +ip_set +ip_set_bitmap_ip +ip_set_bitmap_ipmac +ip_set_bitmap_port +ip_set_hash_ip +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 +iptable_filter +iptable_mangle +iptable_nat +iptable_raw +ip_tables +iptable_security +ipt_ah +ipt_CLUSTERIP +ipt_ECN +ipt_MASQUERADE +ipt_REJECT +ipt_rpfilter +ipt_SYNPROXY +ip_tunnel +ipvlan +ip_vs +ip_vs_dh +ip_vs_fo +ip_vs_ftp +ip_vs_lblc +ip_vs_lblcr +ip_vs_lc +ip_vs_nq +ip_vs_pe_sip +ip_vs_rr +ip_vs_sed +ip_vs_sh +ip_vs_wlc +ip_vs_wrr +ip_vti +ipw +ipw2100 +ipw2200 +ipwireless +ipx +ircomm +ircomm-tty +irda +irda-usb +ir-hix5hd2 +ir-jvc-decoder +ir-kbd-i2c +irlan +ir-lirc-codec +ir-mce_kbd-decoder +ir-nec-decoder +irnet +ir-rc5-decoder +ir-rc6-decoder +ir-sanyo-decoder +ir-sharp-decoder +ir-sony-decoder +irtty-sir +ir-usb +ir-xmp-decoder +isci +iscsi_boot_sysfs +iscsi_ibft +iscsi_target_mod +iscsi_tcp +isdn +isdn_bsdcomp +isdnhdlc +isicom +isight_firmware +isl29003 +isl29018 +isl29020 +isl29028 +isl29125 +isl6271a-regulator +isl6405 +isl6421 +isl6423 +isl9305 +isofs +isp116x-hcd +isp1362-hcd +isp1704_charger +isp1760 +it87 +it8712f_wdt +it87_wdt +it913x +iTCO_vendor_support +iTCO_wdt +itd1000 +ite-cir +itg3200 +iuu_phoenix +ivtv +ivtv-alsa +ivtvfb +iw_c2 +iw_cm +iw_cxgb3 +iw_cxgb4 +iwl3945 +iwl4965 +iwldvm +iwlegacy +iwlmvm +iwlwifi +iw_nes +ix2505v +ixgb +ixgbe +ixgbevf +janz-cmodio +janz-ican3 +jc42 +jedec_probe +jffs2 +jfs +jitterentropy_rng +jmb38x_ms +jme +joydev +joydump +jr3_pci +jsa1212 +jsm +k10temp +k8temp +kafs +kalmia +kaweth +kb3886_bl +kbic +kbtab +kcomedilib +ke_counter +kempld-core +kempld_wdt +kernelcapi +keyspan +keyspan_pda +keyspan_remote +kfifo_buf +khazad +kingsun-sir +kl5kusb105 +kmx61 +ko2iblnd +kobil_sct +ks0108 +ks0127 +ks8842 +ks8851 +ks8851_mll +ks959-sir +ksdazzle-sir +ksocklnd +ksz884x +ktti +kvaser_pci +kvaser_usb +kvm +kvm-amd +kvm-intel +kxcjk-1013 +kxsd9 +kxtj9 +kyrofb +l1oip +l2tp_core +l2tp_debugfs +l2tp_eth +l2tp_ip +l2tp_ip6 +l2tp_netlink +l2tp_ppp +l440gx +l4f00242t03 +l64781 +lanai +lapb +lapbether +latch-addr-flash +lattice-ecp3-config +lcd +ld9040 +ldusb +lec +led-class-flash +leds-88pm860x +leds-adp5520 +leds-bd2802 +leds-blinkm +leds-clevo-mail +leds-da903x +leds-da9052 +leds-dac124s085 +leds-gpio +leds-lm3530 +leds-lm3533 +leds-lm355x +leds-lm3642 +leds-lp3944 +leds-lp8788 +leds-lp8860 +leds-lt3593 +leds-max8997 +leds-mc13783 +leds-menf21bmc +leds-pca9532 +leds-pca955x +leds-pca963x +leds-pm8941-wled +leds-pwm +leds-regulator +leds-ss4200 +leds-tca6507 +leds-tlc591xx +leds-wm831x-status +leds-wm8350 +ledtrig-backlight +ledtrig-camera +ledtrig-default-on +ledtrig-gpio +ledtrig-heartbeat +ledtrig-oneshot +ledtrig-timer +ledtrig-transient +legousbtower +lg2160 +lgdt3305 +lgdt3306a +lgdt330x +lgs8gxx +lg-vl600 +lib80211 +lib80211_crypt_ccmp +lib80211_crypt_tkip +lib80211_crypt_wep +libahci +libahci_platform +libceph +libcfs +libcomposite +libcrc32c +libcxgbi +libertas +libertas_cs +libertas_sdio +libertas_spi +libertas_tf +libertas_tf_usb +libfc +libfcoe +libipw +libiscsi +libiscsi_tcp +libore +libosd +libsas +lightning +lineage-pem +linear +liquidio +lirc_bt829 +lirc_dev +lirc_imon +lirc_parallel +lirc_sasem +lirc_serial +lirc_sir +lirc_zilog +lis3l02dq +lis3lv02d +lis3lv02d_i2c +litelink-sir +lkkbd +llc +llc2 +llite_lloop +lm25066 +lm3533-als +lm3533_bl +lm3533-core +lm3533-ctrlbank +lm3630a_bl +lm3639_bl +lm63 +lm70 +lm73 +lm75 +lm77 +lm78 +lm80 +lm83 +lm8323 +lm8333 +lm85 +lm87 +lm90 +lm92 +lm93 +lm95234 +lm95241 +lm95245 +lmc +lms283gf05 +lms501kf03 +lmv +lnbp21 +lnbp22 +lnet +lnet_selftest +lockd +locktorture +lov +lp +lp3943 +lp3971 +lp3972 +lp855x_bl +lp8727_charger +lp872x +lp8755 +lp8788_adc +lp8788_bl +lp8788-buck +lp8788-charger +lp8788-ldo +lpc_ich +lpc_sch +lpddr_cmds +lpfc +lru_cache +lrw +ltc2941-battery-gauge +ltc2945 +ltc2978 +ltc3589 +ltc4151 +ltc4215 +ltc4222 +ltc4245 +ltc4260 +ltc4261 +ltr501 +ltv350qv +lustre +lv5207lp +lvstest +lxt +lz4 +lz4_compress +lz4hc +lz4hc_compress +m25p80 +m2m-deinterlace +m52790 +m62332 +m88ds3103 +m88rs2000 +m88rs6000t +ma600-sir +mac80211 +mac80211_hwsim +mac802154 +macb +mac-celtic +mac-centeuro +mac-croatian +mac-cyrillic +mac-gaelic +mac-greek +mac_hid +machzwd +mac-iceland +mac-inuit +macmodes +mac-roman +mac-romanian +mac-turkish +macvlan +macvtap +mag3110 +magellan +mailbox-altera +mantis +mantis_core +map_absent +map_funcs +map_ram +map_rom +marvell +matrix-keymap +matrix_keypad +matroxfb_accel +matroxfb_base +matroxfb_crtc2 +matroxfb_DAC1064 +matroxfb_g450 +matroxfb_maven +matroxfb_misc +matroxfb_Ti3026 +matrox_w1 +max1027 +max1111 +max11801_ts +max1363 +max14577 +max14577_charger +max1586 +max16064 +max16065 +max1619 +max1668 +max17040_battery +max17042_battery +max197 +max2165 +max3100 +max3421-hcd +max34440 +max517 +max63xx_wdt +max6639 +max6642 +max6650 +max6697 +max6875 +max7359_keypad +max77693 +max77693_charger +max77693-haptic +max77843 +max77843-haptic +max8649 +max8660 +max8688 +max8903_charger +max8907 +max8907-regulator +max8925_bl +max8925_onkey +max8925_power +max8925-regulator +max8952 +max8973-regulator +max8997 +max8997_charger +max8997_haptic +max8998 +max8998_charger +mb862xxfb +mb86a16 +mb86a20s +mc13783-adc +mc13783-pwrbutton +mc13783-regulator +mc13783_ts +mc13892-regulator +mc13xxx-core +mc13xxx-i2c +mc13xxx-regulator-core +mc13xxx-spi +mc44s803 +m_can +mcb +mcb-pci +mce_amd_inj +mce-inject +mceusb +mcp2120-sir +mcp251x +mcp3021 +mcp320x +mcp3422 +mcp4725 +mcp4922 +mcryptd +mcs5000_ts +mcs7780 +mcs7830 +mcs_touchkey +mct_u232 +md4 +mdc +mdc800 +md-cluster +mdio +mdio-bcm-unimac +mdio-bitbang +mdio-gpio +mdio-octeon +me4000 +me_daq +media +megaraid +megaraid_mbox +megaraid_mm +megaraid_sas +mei +mei-me +mei_phy +mei-txe +memory-notifier-error-inject +memstick +mena21_wdt +menf21bmc +menf21bmc_hwmon +menf21bmc_wdt +men_z135_uart +men_z188_adc +metronomefb +metro-usb +meye +mf6x4 +mga +mgc +mic_bus +mic_card +michael_mic +mic_host +micrel +microread +microread_i2c +microread_mei +microtek +mic_x100_dma +mii +minix +mip6 +mISDN_core +mISDN_dsp +mISDNinfineon +mISDNipac +mISDNisar +mite +mk712 +mkiss +mlx4_core +mlx4_en +mlx4_ib +mlx5_core +mlx5_ib +mlx90614 +mma8450 +mma8452 +mma9551 +mma9551_core +mma9553 +mmc35240 +mmc_block +mmc_spi +mms114 +mn88472 +mn88473 +mos7720 +mos7840 +moxa +mpc624 +mpl115 +mpl3115 +mpls_gso +mpls_router +mpoa +mpr121_touchkey +mpt2sas +mpt3sas +mptbase +mptctl +mptfc +mptlan +mptsas +mptscsih +mptspi +mpu3050 +mrf24j40 +mrp +ms5611_core +ms5611_i2c +ms5611_spi +ms_block +msdos +msi001 +msi2500 +msi-laptop +msi-wmi +msp3400 +mspro_block +msr +mt2060 +mt2063 +mt20xx +mt2131 +mt2266 +mt29f_spinand +mt312 +mt352 +mt6397-core +mt6397-regulator +mt7601u +mt9m001 +mt9m111 +mt9t031 +mt9t112 +mt9v011 +mt9v022 +mtd +mtd_blkdevs +mtdblock +mtdblock_ro +mtd_dataflash +mtdoops +mtdram +mtdswap +mtip32xx +mtk-sd +mtouch +multipath +multiq3 +musb_hdrc +mvmdio +mvsas +mv_u3d_core +mv_udc +mvumi +mwave +mwifiex +mwifiex_pcie +mwifiex_sdio +mwifiex_usb +mwl8k +mxb +mxl111sf-demod +mxl111sf-tuner +mxl301rf +mxl5005s +mxl5007t +mxm-wmi +mxser +mxuport +myri10ge +n411 +nand +nand_bch +nand_ecc +nand_ids +nandsim +national +natsemi +nau7802 +navman +nbd +nci +nci_uart +ncpfs +nct6683 +nct6775 +nct7802 +nct7904 +nd_blk +nd_btt +nd_pmem +ne2k-pci +neofb +net1080 +net2272 +net2280 +netconsole +netjet +netlink_diag +netrom +nettel +netxen_nic +newtonkbd +nfc +nfc_digital +nfcmrvl +nfcmrvl_uart +nfcmrvl_usb +nf_conntrack +nf_conntrack_amanda +nf_conntrack_broadcast +nf_conntrack_ftp +nf_conntrack_h323 +nf_conntrack_ipv4 +nf_conntrack_ipv6 +nf_conntrack_irc +nf_conntrack_netbios_ns +nf_conntrack_netlink +nf_conntrack_pptp +nf_conntrack_proto_dccp +nf_conntrack_proto_gre +nf_conntrack_proto_sctp +nf_conntrack_proto_udplite +nf_conntrack_sane +nf_conntrack_sip +nf_conntrack_snmp +nf_conntrack_tftp +nfcsim +nfcwilink +nf_defrag_ipv4 +nf_defrag_ipv6 +nfit +nf_log_arp +nf_log_bridge +nf_log_common +nf_log_ipv4 +nf_log_ipv6 +nf_nat +nf_nat_amanda +nf_nat_ftp +nf_nat_h323 +nf_nat_ipv4 +nf_nat_ipv6 +nf_nat_irc +nf_nat_masquerade_ipv4 +nf_nat_masquerade_ipv6 +nf_nat_pptp +nf_nat_proto_dccp +nf_nat_proto_gre +nf_nat_proto_sctp +nf_nat_proto_udplite +nf_nat_redirect +nf_nat_sip +nf_nat_snmp_basic +nf_nat_tftp +nfnetlink +nfnetlink_acct +nfnetlink_cthelper +nfnetlink_cttimeout +nfnetlink_log +nfnetlink_queue +nf_reject_ipv4 +nf_reject_ipv6 +nfs +nfs_acl +nfsd +nfs_layout_flexfiles +nfs_layout_nfsv41_files +nfsv2 +nfsv3 +nfsv4 +nf_synproxy_core +nf_tables +nf_tables_arp +nf_tables_bridge +nf_tables_inet +nf_tables_ipv4 +nf_tables_ipv6 +nf_tables_netdev +nft_chain_nat_ipv4 +nft_chain_nat_ipv6 +nft_chain_route_ipv4 +nft_chain_route_ipv6 +nft_compat +nft_counter +nft_ct +nft_exthdr +nft_hash +nftl +nft_limit +nft_log +nft_masq +nft_masq_ipv4 +nft_masq_ipv6 +nft_meta +nft_meta_bridge +nft_nat +nft_queue +nft_rbtree +nft_redir +nft_redir_ipv4 +nft_redir_ipv6 +nft_reject +nft_reject_bridge +nft_reject_inet +nft_reject_ipv4 +nft_reject_ipv6 +ngene +n_gsm +nhc_dest +nhc_fragment +nhc_hop +nhc_ipv6 +nhc_mobility +nhc_routing +nhc_udp +n_hdlc +ni_6527 +ni_65xx +ni_660x +ni_670x +ni_at_a2150 +ni_at_ao +ni_atmio +ni_atmio16d +nicpf +nicstar +nicvf +ni_daq_700 +ni_daq_dio24 +ni_labpc +ni_labpc_common +ni_labpc_cs +ni_labpc_isadma +ni_labpc_pci +nilfs2 +ni_mio_cs +ni_pcidio +ni_pcimio +ni_tio +ni_tiocmd +niu +ni_usb6501 +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 +nosy +notifier-error-inject +nouveau +nozomi +n_r3964 +ns558 +ns83820 +nsc-ircc +ntb +ntb_hw_intel +ntb_netdev +ntb_pingpong +ntb_tool +ntb_transport +ntc_thermistor +ntfs +n_tracerouter +n_tracesink +null_blk +nuvoton-cir +nvidiafb +nvme +nvram +nv_tco +nxp-nci +nxp-nci_i2c +nxt200x +nxt6000 +obdclass +obdecho +objlayoutdriver +ocfb +ocfs2 +ocfs2_dlm +ocfs2_dlmfs +ocfs2_nodemanager +ocfs2_stackglue +ocfs2_stack_o2cb +ocfs2_stack_user +ocrdma +of_xilinx_wdt +old_belkin-sir +omfs +omninet +on20 +on26 +onenand +opencores-kbd +openvswitch +oprofile +opticon +option +or51132 +or51211 +orinoco +orinoco_cs +orinoco_nortel +orinoco_plx +orinoco_tmd +orinoco_usb +osc +osd +osdblk +osst +oti6858 +ov2640 +ov5642 +ov6650 +ov7640 +ov7670 +ov772x +ov9640 +ov9740 +overlay +oxu210hp-hcd +ozwpan +p4-clockmod +p54common +p54pci +p54spi +p54usb +p8022 +p8023 +padlock-aes +padlock-sha +palmas-pwrbutton +palmas-regulator +panasonic-laptop +pandora_bl +panel +paride +parkbd +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 +pc300too +pc87360 +pc87413_wdt +pc87427 +pcap_keys +pcap-regulator +pcap_ts +pcbc +pcd +pcf50633 +pcf50633-adc +pcf50633-backlight +pcf50633-charger +pcf50633-gpio +pcf50633-input +pcf50633-regulator +pcf8574_keypad +pcf8591 +pch_udc +pci +pci200syn +pcips2 +pci-stub +pcl711 +pcl724 +pcl726 +pcl730 +pcl812 +pcl816 +pcl818 +pcm3724 +pcmad +pcmcia +pcmcia_core +pcmciamtd +pcmcia_rsrc +pcmda12 +pcmmio +pcmuio +pcnet32 +pcnet_cs +pcrypt +pcspkr +pcwd_pci +pcwd_usb +pd +pd6729 +pda_power +pdc_adma +peak_pci +peak_pcmcia +peak_usb +pegasus +penmount +percpu_test +pf +pfuze100-regulator +pg +phantom +phonet +phram +phy-bcm-kona-usb2 +phy-exynos-usb2 +phy-gpio-vbus-usb +phy-isp1301 +phy-pxa-28nm-hsic +phy-pxa-28nm-usb2 +physmap +phy-tahvo +phy-tusb1210 +pinctrl-cherryview +pinctrl-intel +pinctrl-sunrisepoint +pixcir_i2c_ts +pkcs7_message +pkcs7_test_key +pktcdvd +pktgen +pl2303 +platform_lcd +plat_nand +plat-ram +plip +plusb +pluto2 +plx_pci +pm2fb +pm3fb +pm80xx +pmbus +pmbus_core +pmc551 +pmcraid +pm-notifier-error-inject +pn533 +pn544 +pn544_i2c +pn544_mei +pn_pep +poly1305_generic +port100 +powermate +powr1220 +ppa +ppdev +ppp_async +ppp_deflate +ppp_mppe +pppoatm +pppoe +pppox +ppp_synctty +pps_core +pps-gpio +pps-ldisc +pps_parport +pptp +prism2_usb +processor_thermal_device +ps2mult +psmouse +psnap +pt +ptlrpc +ptp +punit_atom_debug +pvpanic +pvrusb2 +pwc +pwm-beeper +pwm_bl +pwm-lp3943 +pwm-lpss +pwm-lpss-pci +pwm-lpss-platform +pwm-regulator +pwm-twl +pwm-twl-led +pxa27x_udc +qat_dh895xcc +qcaux +qcom-spmi-iadc +qcom_spmi-regulator +qcom-spmi-vadc +qcserial +qinfo_probe +qla1280 +qla2xxx +qla3xxx +qla4xxx +qlcnic +qlge +qlogic_cs +qlogicfas408 +qm1d1c0042 +qmi_wwan +qnx4 +qnx6 +qsemi +qt1010 +qt1070 +qt2160 +quatech2 +quatech_daqp_cs +quota_tree +quota_v1 +quota_v2 +qxl +r128 +r592 +r6040 +r8152 +r8169 +r8188eu +r8192e_pci +r8192u_usb +r820t +r852 +r8712u +r8723au +r8a66597-hcd +r8a66597-udc +radeon +radeonfb +radio-bcm2048 +radio-i2c-si470x +radio-keene +radio-ma901 +radio-maxiradio +radio-mr800 +radio-platform-si4713 +radio-raremono +radio-shark +radio-si476x +radio-tea5764 +radio-usb-si470x +radio-usb-si4713 +radio-wl1273 +raid0 +raid1 +raid10 +raid456 +raid6_pq +raid6test +raid_class +ramoops +raw +ray_cs +rbd +rbtree_test +rc5t583-regulator +rc-adstech-dvb-t-pci +rc-alink-dtu-m +rc-anysee +rc-apac-viewcomp +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-behold +rc-behold-columbus +rc-budget-ci-old +rc-cinergy +rc-cinergy-1400 +rc-core +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-dvbsky +rc-em-terratec +rc-encore-enltv +rc-encore-enltv2 +rc-encore-enltv-fm53 +rc-evga-indtube +rc-eztv +rc-flydvb +rc-flyvideo +rc-fusionhdtv-mce +rc-gadmei-rm008z +rc-genius-tvgo-a11mce +rc-gotview7135 +rc-hauppauge +rc-imon-mce +rc-imon-pad +rc-iodata-bctv7e +rc-it913x-v1 +rc-it913x-v2 +rc-kaiomy +rc-kworld-315u +rc-kworld-pc150u +rc-kworld-plus-tv-analog +rc-leadtek-y04g0051 +rc-lirc +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-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-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-twinhan1027 +rc-twinhan-dtv-cab-ci +rc-videomate-m1f +rc-videomate-s350 +rc-videomate-tv-pvr +rc-winfast +rc-winfast-usbii-deluxe +rdc321x-southbridge +rdma_cm +rdma_ucm +rds +rds_rdma +rds_tcp +realtek +redboot +redrat3 +reed_solomon +regmap-spmi +regulator-haptic +reiserfs +remoteproc +retu-mfd +retu-pwrbutton +retu_wdt +rfc1051 +rfc1201 +rfcomm +rfd_ftl +rfkill-gpio +rfkill-regulator +rio500 +rionet +rio-scan +rivafb +rj54n1cb0c +rmd128 +rmd160 +rmd256 +rmd320 +rn5t618 +rn5t618-regulator +rn5t618_wdt +rndis_host +rndis_wlan +rocket +romfs +rose +rotary_encoder +rp2 +rpcrdma +rpcsec_gss_krb5 +rsa_generic +rsi_91x +rsi_sdio +rsi_usb +rsxx +rt2400pci +rt2500pci +rt2500usb +rt2800lib +rt2800mmio +rt2800pci +rt2800usb +rt2x00lib +rt2x00mmio +rt2x00pci +rt2x00usb +rt5033 +rt5033_battery +rt5033-regulator +rt61pci +rt73usb +rt9455_charger +rtc-88pm80x +rtc-88pm860x +rtc-ab3100 +rtc-ab-b5ze-s3 +rtc-abx80x +rtc-bq32k +rtc-bq4802 +rtc-da9052 +rtc-da9055 +rtc-da9063 +rtc-ds1286 +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-ds3234 +rtc-em3027 +rtc-fm3130 +rtc-hid-sensor-time +rtc-isl12022 +rtc-isl12057 +rtc-isl1208 +rtc-lp8788 +rtc-m41t80 +rtc-m41t93 +rtc-m41t94 +rtc-m48t35 +rtc-m48t59 +rtc-m48t86 +rtc-max6900 +rtc-max6902 +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-pcf8563 +rtc-pcf8583 +rtc-r9701 +rtc-rc5t583 +rtc-rp5c01 +rtc-rs5c348 +rtc-rs5c372 +rtc-rv3029c2 +rtc-rx4581 +rtc-rx8025 +rtc-rx8581 +rtc-s35390a +rtc-s5m +rtc-stk17ta8 +rtc-tps6586x +rtc-tps65910 +rtc-tps80031 +rtc-twl +rtc-v3020 +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 +rtl8723ae +rtl8723be +rtl8723-common +rtl8821ae +rtllib +rtllib_crypt_ccmp +rtllib_crypt_tkip +rtllib_crypt_wep +rtl_pci +rtl_usb +rtlwifi +rts5208 +rtsx_pci +rtsx_pci_ms +rtsx_pci_sdmmc +rtsx_usb +rtsx_usb_ms +rtsx_usb_sdmmc +rx51_battery +rxkad +s1d13xxxfb +s2250 +s2255drv +s2io +s2mpa01 +s2mps11 +s3fb +s526 +s5h1409 +s5h1411 +s5h1420 +s5m8767 +s626 +s6e63m0 +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 +salsa20-x86_64 +samsung-keypad +samsung-laptop +samsung-q10 +samsung-sxgbe +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 +savage +savagefb +sb1000 +sbc60xxwdt +sbc_epx_c3 +sbc_fitpc2_wdt +sbc_gxx +sb_edac +sbni +sbp_target +sbs +sbs-battery +sbshc +sc1200wdt +sc16is7xx +sc92031 +sca3000 +scb2_flash +sch311x_wdt +sch5627 +sch5636 +sch56xx-common +sch_atm +sch_cbq +sch_choke +sch_codel +sch_drr +sch_dsmark +sch_fq +sch_fq_codel +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_tbf +sch_teql +scif +scif_bus +scsi_debug +scsi_dh +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_probe +sdhci +sdhci-acpi +sdhci-pci +sdhci-pltfm +sdio_uart +sdricoh_cs +sedlbauer_cs +seed +sensorhub +seqiv +ser_gigaset +serial2002 +serial_cs +serio_raw +sermouse +serpent-avx2 +serpent-avx-x86_64 +serpent_generic +serpent-sse2-x86_64 +serport +ses +sfc +sha1-mb +sha1-ssse3 +sha256-ssse3 +sha512-ssse3 +shark2 +shpchp +sht15 +sht21 +shtc1 +sh_veu +si2157 +si2165 +si2168 +si21xx +si4713 +si476x-core +si7005 +si7020 +sidewinder +sierra +sierra_net +sil164 +sir-dev +sis +sis190 +sis5595 +sis900 +sis-agp +sisfb +sisusbvga +sit +sja1000 +sja1000_isa +sja1000_platform +skd +skfp +skge +sky2 +sky81452 +sky81452-backlight +sky81452-regulator +sl811_cs +sl811-hcd +slcan +slicoss +slip +slram +sm501 +sm501fb +sm750fb +sm7xxfb +smb347-charger +smc91c92_cs +sm_common +sm_ftl +smipcie +smm665 +smsc +smsc37b787_wdt +smsc47b397 +smsc47m1 +smsc47m192 +smsc75xx +smsc911x +smsc9420 +smsc95xx +smsc-ircc2 +smscufx +smsdvb +smsmdtv +smssdio +smsusb +snd +snd-ac97-codec +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-firewire-lib +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-intel8x0 +snd-intel8x0m +snd-intel-sst-acpi +snd-intel-sst-core +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-pcm-oss +snd-pcsp +snd-pcxhr +snd-pdaudiocf +snd-portman2x4 +snd-pt2258 +snd-rawmidi +snd-riptide +snd-rme32 +snd-rme96 +snd-rme9652 +snd-sb-common +snd-scs1x +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-ac97 +snd-soc-adau1701 +snd-soc-ak4104 +snd-soc-ak4554 +snd-soc-ak4642 +snd-soc-ak5386 +snd-soc-alc5623 +snd-soc-core +snd-soc-cs35l32 +snd-soc-cs4265 +snd-soc-cs4270 +snd-soc-cs4271 +snd-soc-cs4271-i2c +snd-soc-cs4271-spi +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-es8328 +snd-soc-fsl-asrc +snd-soc-fsl-esai +snd-soc-fsl-sai +snd-soc-fsl-spdif +snd-soc-fsl-ssi +snd-soc-hdmi-codec +snd-soc-imx-audmux +snd-soc-max98090 +snd-soc-pcm1681 +snd-soc-pcm1792a-codec +snd-soc-pcm512x +snd-soc-pcm512x-i2c +snd-soc-pcm512x-spi +snd-soc-rl6231 +snd-soc-rl6347a +snd-soc-rt286 +snd-soc-rt5631 +snd-soc-rt5640 +snd-soc-rt5645 +snd-soc-rt5670 +snd-soc-sgtl5000 +snd-soc-si476x +snd-soc-sigmadsp +snd-soc-sigmadsp-i2c +snd-soc-simple-card +snd-soc-spdif-rx +snd-soc-spdif-tx +snd-soc-ssm2602 +snd-soc-ssm2602-i2c +snd-soc-ssm2602-spi +snd-soc-ssm4567 +snd-soc-sst-acpi +snd-soc-sst-baytrail-pcm +snd-soc-sst-broadwell +snd-soc-sst-bytcr-rt5640 +snd-soc-sst-byt-max98090-mach +snd-soc-sst-byt-rt5640-mach +snd-soc-sst-cht-bsw-max98090_ti +snd-soc-sst-cht-bsw-rt5645 +snd-soc-sst-cht-bsw-rt5672 +snd-soc-sst-dsp +snd-soc-sst-haswell +snd-soc-sst-haswell-pcm +snd-soc-sst-ipc +snd-soc-sst-mfld-platform +snd-soc-sta32x +snd-soc-sta350 +snd-soc-tas2552 +snd-soc-tas5086 +snd-soc-tas571x +snd-soc-tfa9879 +snd-soc-tlv320aic23 +snd-soc-tlv320aic23-i2c +snd-soc-tlv320aic23-spi +snd-soc-tlv320aic31xx +snd-soc-tlv320aic3x +snd-soc-tpa6130a2 +snd-soc-ts3a227e +snd-soc-wm8510 +snd-soc-wm8523 +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-wm8804 +snd-soc-wm8804-i2c +snd-soc-wm8804-spi +snd-soc-wm8903 +snd-soc-wm8962 +snd-soc-wm8978 +snd-soc-xtfpga-i2s +snd-sonicvibes +snd-timer +snd-trident +snd-ua101 +snd-usb-6fire +snd-usb-audio +snd-usb-caiaq +snd-usb-hiface +snd-usb-line6 +snd-usbmidi-lib +snd-usb-pod +snd-usb-podhd +snd-usb-toneport +snd-usb-us122l +snd-usb-usx2y +snd-usb-variax +snd-util-mem +snd-via82xx +snd-via82xx-modem +snd-virmidi +snd-virtuoso +snd-vx222 +snd-vx-lib +snd-vxpocket +snd-ymfpci +snic +soc_button_array +soc_camera +soc_camera_platform +soc_mediabus +softdog +softing +softing_cs +solo6x10 +solos-pci +sony-btf-mpx +sony-laptop +soundcore +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-bitbang +spi-butterfly +spi-cadence +spidev +spi-dln2 +spi-dw +spi-dw-midpci +spi-dw-mmio +spi-gpio +spi_ks8995 +spi-lm70llp +spi-nor +spi-oc-tiny +spi-pxa2xx-pci +spi-pxa2xx-platform +spi-sc18is602 +spi-tle62x0 +spi-xcomm +spi-zynqmp-gqspi +spmi +squashfs +sr9700 +sr9800 +ssb +ssb-hcd +ssfdc +ssp_accel_sensor +ssp_gyro_sensor +ssp_iio +sst25l +sstfb +ssu100 +st +st1232 +st21nfca_hci +st21nfca_i2c +st_accel +st_accel_i2c +st_accel_spi +starfire +stb0899 +stb6000 +stb6100 +st_drv +ste10Xp +ste_modem_rproc +stex +st_gyro +st_gyro_i2c +st_gyro_spi +stinger +stir4200 +stk1160 +stk3310 +stk8312 +stk8ba50 +stkwebcam +st_magn +st_magn_i2c +st_magn_spi +stmmac +stmmac-platform +st-nci +st-nci_i2c +stowaway +stp +st_pressure +st_pressure_i2c +st_pressure_spi +streamzap +st_sensors +st_sensors_i2c +st_sensors_spi +stv0288 +stv0297 +stv0299 +stv0367 +stv0900 +stv090x +stv6110 +stv6110x +sundance +sungem +sungem_phy +sunhme +suni +sunkbd +sunrpc +sur40 +svgalib +sx8 +sx8654 +sx9500 +sym53c500_cs +sym53c8xx +symbolserial +synaptics_i2c +synaptics_i2c_rmi4 +synaptics_usb +synclink +synclink_cs +synclink_gt +synclinkmp +syscopyarea +sysfillrect +sysimgblt +sysv +t1pci +t5403 +target_core_file +target_core_iblock +target_core_mod +target_core_pscsi +target_core_user +tc74 +tc90522 +tca6416-keypad +tca8418_keypad +tcm_fc +tcm_loop +tcm_qla2xxx +tcm_usb_gadget +tcp_bic +tcp_cdg +tcp_dctcp +tcp_diag +tcp_highspeed +tcp_htcp +tcp_hybla +tcp_illinois +tcp_lp +tcp_probe +tcp_scalable +tcp_vegas +tcp_veno +tcp_westwood +tcp_yeah +tcrypt +tcs3414 +tcs3472 +tda10021 +tda10023 +tda10048 +tda1004x +tda10071 +tda10086 +tda18212 +tda18218 +tda18271 +tda18271c2dd +tda665x +tda7432 +tda8083 +tda8261 +tda826x +tda827x +tda8290 +tda9840 +tda9887 +tda998x +tdfx +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 +tekram-sir +teles_cs +test_bpf +test_firmware +test-hexdump +test-kstrtox +test_module +test_power +test-string_helpers +test_udelay +test_user_copy +tg3 +tgr192 +thinkpad_acpi +thmc50 +thunder_bgx +thunderbolt +ti-adc081c +ti-adc128s052 +ti_am335x_adc +ti_am335x_tsc +ti_am335x_tscadc +ti_dac7512 +tifm_7xx1 +tifm_core +tifm_ms +tifm_sd +timeriomem-rng +tipc +ti_usb_3410_5052 +tlan +tlclk +tm6000 +tm6000-alsa +tm6000-dvb +tmdc +tmem +tmp006 +tmp102 +tmp103 +tmp401 +tmp421 +toim3232-sir +topstar-laptop +torture +toshiba_acpi +toshiba_bluetooth +toshiba_haps +toshsd +touchit213 +touchright +touchwin +tpci200 +tpm_atmel +tpm_crb +tpm_i2c_atmel +tpm_i2c_infineon +tpm_i2c_nuvoton +tpm_infineon +tpm_nsc +tpm-rng +tpm_st33zp24 +tpm_st33zp24_i2c +tpm_st33zp24_spi +tps40422 +tps51632-regulator +tps6105x +tps6105x-regulator +tps62360-regulator +tps65010 +tps65023-regulator +tps6507x +tps6507x-regulator +tps6507x-ts +tps65090-charger +tps65090-regulator +tps65217 +tps65217_bl +tps65217-regulator +tps65218 +tps65218-pwrbutton +tps6524x-regulator +tps6586x-regulator +tps65910-regulator +tps65912-regulator +tps80031-regulator +trancevibrator +trf7970a +tridentfb +ts2020 +ts_bm +tsc2005 +tsc2007 +tsc40 +ts_fsm +tsi568 +tsi57x +tsi721_mport +ts_kmp +tsl2550 +tsl2563 +tsl2583 +tsl2x7x_core +tsl4531 +ttm +ttpci-eeprom +ttusb_dec +ttusbdecfe +ttusbir +tua6100 +tua9001 +tulip +tuner +tuner-simple +tuner-types +tuner-xc2028 +tunnel4 +tunnel6 +turbografx +tvaudio +tveeprom +tvp5150 +tw2804 +tw68 +tw9903 +tw9906 +tw9910 +twidjoy +twl4030_charger +twl4030_keypad +twl4030-madc +twl4030_madc_battery +twl4030-madc-hwmon +twl4030-pwrbutton +twl4030-vibra +twl4030_wdt +twl6030-gpadc +twl6040-vibra +twl-regulator +twofish-avx-x86_64 +twofish_common +twofish_generic +twofish-x86_64 +twofish-x86_64-3way +typhoon +u132-hcd +uas +ubi +ubifs +ucb1400_core +ucb1400_ts +ucd9000 +ucd9200 +uda1342 +udc-core +udf +udl +udlfb +udp_diag +udp_tunnel +ueagle-atm +u_ether +ufs +ufshcd +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 +uli526x +ulpi +umc +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 +unioxx5 +unix_diag +upd64031a +upd64083 +uPD98402 +usb3503 +usb_8dev +usb8xxx +usbatm +usb_debug +usbdux +usbduxfast +usbduxsigma +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_uac1 +usb_f_uac2 +usb_f_uvc +usb_gigaset +usbhid +usbip-core +usbip-host +usbkbd +usblcd +usbled +usblp +usbmon +usbmouse +usbnet +usbserial +usb-serial-simple +usbsevseg +usb-storage +usbtest +usbtmc +usbtouchscreen +usbtv +usbvision +usb_wwan +usdhi6rol0 +u_serial +userspace-consumer +ushc +usnic_verbs +uss720 +uvcvideo +uvesafb +uwb +v4l2-common +v4l2-dv-timings +v4l2-flash-led-class +v4l2-mem2mem +vboxguest +vboxsf +vboxvideo +vcan +vcnl4000 +ves1820 +ves1x93 +veth +vfio +vfio_iommu_type1 +vfio-pci +vfio_virqfd +vga16fb +vgastate +vgem +vgg2432a4 +vhci-hcd +vhost +vhost_net +vhost_scsi +via +via686a +via-camera +via-cputemp +viafb +via-ircc +via-rhine +via-rng +via-sdmmc +via-velocity +via_wdt +video +videobuf2-core +videobuf2-dma-contig +videobuf2-dma-sg +videobuf2-dvb +videobuf2-memops +videobuf2-vmalloc +videobuf-core +videobuf-dma-sg +videobuf-dvb +videobuf-vmalloc +videocodec +videodev +vim2m +viperboard +viperboard_adc +virt-dma +virtio-gpu +virtio_input +virtio-rng +virtio_scsi +virtual +visor +visorbus +visornic +vitesse +vivid +vlsi_ir +vmac +vme_ca91cx42 +vme_pio2 +vme_tsi148 +vme_user +vme_vmivme7805 +vmk80xx +vmlfb +vmw_balloon +vmwgfx +vmw_pvscsi +vmw_vmci +vmw_vsock_vmci_transport +vmxnet3 +vp27smpx +vport-geneve +vport-gre +vport-vxlan +vpx3220 +vringh +vsock +vsxxxaa +vt1211 +vt6655_stage +vt6656_stage +vt8231 +vt8623fb +vub300 +vx855 +vxge +vxlan +w1_bq27000 +w1_ds2406 +w1_ds2408 +w1_ds2413 +w1_ds2423 +w1_ds2431 +w1_ds2433 +w1_ds2760 +w1_ds2780 +w1_ds2781 +w1_ds28e04 +w1-gpio +w1_smem +w1_therm +w5100 +w5300 +w6692 +w83627ehf +w83627hf +w83627hf_wdt +w83781d +w83791d +w83792d +w83793 +w83795 +w83877f_wdt +w83977af_ir +w83977f_wdt +w83l785ts +w83l786ng +wacom +wacom_i2c +wacom_serial4 +wacom_w8001 +wafer5823wdt +walkera0701 +wanxl +warrior +wbsd +wcn36xx +wd719x +wdt87xx_i2c +wdt_pci +whci +whci-hcd +whc-rc +whiteheat +wil6210 +wimax +winbond-840 +winbond-cir +wire +wishbone-serial +wl1251 +wl1251_sdio +wl1251_spi +wl1273-core +wl12xx +wl18xx +wl3501_cs +wlcore +wlcore_sdio +wlcore_spi +wm831x_backup +wm831x_bl +wm831x-dcdc +wm831x-hwmon +wm831x-isink +wm831x-ldo +wm831x-on +wm831x_power +wm831x-ts +wm831x_wdt +wm8350-hwmon +wm8350_power +wm8350-regulator +wm8350_wdt +wm8400-regulator +wm8739 +wm8775 +wm8994-core +wm8994-irq +wm8994-regmap +wm8994-regulator +wm97xx-ts +wmi +wp512 +wusb-cbaf +wusbcore +wusb-wa +x25 +x25_asy +x38_edac +x86_pkg_temp_thermal +xc4000 +xc5000 +xcbc +xen-blkback +xen-evtchn +xen-fbfront +xenfs +xen-gntalloc +xen-gntdev +xen-kbdfront +xen-netback +xen-pciback +xen-pcifront +xen-privcmd +xen-scsiback +xen-scsifront +xen-tpmfront +xen_wdt +xfrm4_mode_beet +xfrm4_mode_transport +xfrm4_mode_tunnel +xfrm4_tunnel +xfrm6_mode_beet +xfrm6_mode_ro +xfrm6_mode_transport +xfrm6_mode_tunnel +xfrm6_tunnel +xfrm_algo +xfrm_ipcomp +xfrm_user +xfs +xgifb +xhci-plat-hcd +xillybus_core +xillybus_pcie +xirc2ps_cs +xircom_cb +xor +xpad +xsens_mt +x_tables +xt_addrtype +xt_AUDIT +xt_bpf +xt_cgroup +xt_CHECKSUM +xt_CLASSIFY +xt_cluster +xt_comment +xt_connbytes +xt_connlabel +xt_connlimit +xt_connmark +xt_CONNSECMARK +xt_conntrack +xt_cpu +xt_CT +xt_dccp +xt_devgroup +xt_dscp +xt_DSCP +xt_ecn +xt_esp +xt_hashlimit +xt_helper +xt_hl +xt_HL +xt_HMARK +xt_IDLETIMER +xt_ipcomp +xt_iprange +xt_ipvs +xtkbd +xt_l2tp +xt_LED +xt_length +xt_limit +xt_LOG +xt_mac +xt_mark +xt_multiport +xt_nat +xt_NETMAP +xt_nfacct +xt_NFLOG +xt_NFQUEUE +xt_osf +xt_owner +xt_physdev +xt_pkttype +xt_policy +xt_quota +xt_rateest +xt_RATEEST +xt_realm +xt_recent +xt_REDIRECT +xts +xt_sctp +xt_SECMARK +xt_set +xt_socket +xt_state +xt_statistic +xt_string +xt_tcpmss +xt_TCPMSS +xt_TCPOPTSTRIP +xt_tcpudp +xt_TEE +xt_time +xt_TPROXY +xt_TRACE +xt_u32 +xusbatm +xz_dec_test +yam +yealink +yellowfin +yenta_socket +yurex +zatm +zaurus +zd1201 +zd1211rw +zforce_ts +zhenhua +zl10036 +zl10039 +zl10353 +zl6100 +zlib +zr36016 +zr36050 +zr36060 +zr36067 +zr364xx +zram --- linux-raspi2-4.2.0.orig/debian.master/abi/4.2.0-26.31/amd64/lowlatency +++ linux-raspi2-4.2.0/debian.master/abi/4.2.0-26.31/amd64/lowlatency @@ -0,0 +1,19481 @@ +EXPORT_SYMBOL arch/x86/kvm/kvm 0x5341ff31 kvm_cpu_has_pending_timer +EXPORT_SYMBOL crypto/gf128mul 0x0c2f123f gf128mul_4k_bbe +EXPORT_SYMBOL crypto/gf128mul 0x1068004b gf128mul_bbe +EXPORT_SYMBOL crypto/gf128mul 0x2f2889a0 gf128mul_init_64k_lle +EXPORT_SYMBOL crypto/gf128mul 0x3755f990 gf128mul_init_64k_bbe +EXPORT_SYMBOL crypto/gf128mul 0x384ef9ce gf128mul_64k_bbe +EXPORT_SYMBOL crypto/gf128mul 0x56af0dbd gf128mul_x_ble +EXPORT_SYMBOL crypto/gf128mul 0x83581089 gf128mul_init_4k_lle +EXPORT_SYMBOL crypto/gf128mul 0x9b2560b9 gf128mul_init_4k_bbe +EXPORT_SYMBOL crypto/gf128mul 0x9e13f6f6 gf128mul_lle +EXPORT_SYMBOL crypto/gf128mul 0xbd17a0df gf128mul_4k_lle +EXPORT_SYMBOL crypto/gf128mul 0xc0890413 gf128mul_64k_lle +EXPORT_SYMBOL crypto/gf128mul 0xd60736ec gf128mul_free_64k +EXPORT_SYMBOL crypto/mcryptd 0x73892a61 mcryptd_arm_flusher +EXPORT_SYMBOL crypto/xor 0x5b6c00e6 xor_blocks +EXPORT_SYMBOL drivers/acpi/nfit 0xa7e9a159 to_nfit_uuid +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 0x8826c13b acpi_video_register +EXPORT_SYMBOL drivers/acpi/video 0x8e66699a acpi_video_get_edid +EXPORT_SYMBOL drivers/acpi/video 0xe92ca535 acpi_video_set_dmi_backlight_type +EXPORT_SYMBOL drivers/atm/suni 0x2fff3cb0 suni_init +EXPORT_SYMBOL drivers/atm/uPD98402 0xf44cc742 uPD98402_init +EXPORT_SYMBOL drivers/bcma/bcma 0xdbd70f20 bcma_core_dma_translation +EXPORT_SYMBOL drivers/bcma/bcma 0xfad119d3 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 0x02e638b0 pi_disconnect +EXPORT_SYMBOL drivers/block/paride/paride 0x0d7662ca pi_read_block +EXPORT_SYMBOL drivers/block/paride/paride 0x115c40e8 pi_schedule_claimed +EXPORT_SYMBOL drivers/block/paride/paride 0x1f20fc6d pi_do_claimed +EXPORT_SYMBOL drivers/block/paride/paride 0x3a377d07 pi_read_regr +EXPORT_SYMBOL drivers/block/paride/paride 0x40afe2a3 pi_connect +EXPORT_SYMBOL drivers/block/paride/paride 0x4267110a pi_register_driver +EXPORT_SYMBOL drivers/block/paride/paride 0x6f73c28f pi_init +EXPORT_SYMBOL drivers/block/paride/paride 0x7b8d5c26 paride_unregister +EXPORT_SYMBOL drivers/block/paride/paride 0x946b4100 pi_release +EXPORT_SYMBOL drivers/block/paride/paride 0x96975da9 pi_write_regr +EXPORT_SYMBOL drivers/block/paride/paride 0xaa20e275 paride_register +EXPORT_SYMBOL drivers/block/paride/paride 0xac442005 pi_write_block +EXPORT_SYMBOL drivers/block/paride/paride 0xb21ba07d pi_unregister_driver +EXPORT_SYMBOL drivers/bluetooth/btbcm 0x5fe84674 btbcm_patchram +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x1348760d ipmi_request_settime +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x16dcec76 ipmi_set_my_address +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x1a10c898 ipmi_set_maintenance_mode +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x1aba5db8 ipmi_unregister_smi +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x1fae3bac ipmi_addr_src_to_str +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x3600b8e1 ipmi_register_smi +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x40f2b10c ipmi_alloc_smi_msg +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x423b776a ipmi_create_user +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x4c971bec ipmi_smi_msg_received +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x50650a7f ipmi_smi_watcher_unregister +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x524f6f51 ipmi_get_my_address +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x5e80f37c ipmi_unregister_for_cmd +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x5fcdcc05 ipmi_get_my_LUN +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x67cb9784 ipmi_poll_interface +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x78fd36e7 ipmi_request_supply_msgs +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x804f922a ipmi_addr_length +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x80c30c9c ipmi_smi_watcher_register +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x8c8ee770 ipmi_destroy_user +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x96cbcc81 ipmi_get_version +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xa2a98b91 ipmi_get_maintenance_mode +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xca794e04 ipmi_get_smi_info +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xd69f8567 ipmi_set_gets_events +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xe0fa83f2 ipmi_register_for_cmd +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xe47a0f0e ipmi_smi_add_proc_entry +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xe4f4665b ipmi_validate_addr +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xe6ab72a6 ipmi_set_my_LUN +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xf2576cb9 ipmi_smi_watchdog_pretimeout +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xfcb77cfd ipmi_free_recv_msg +EXPORT_SYMBOL drivers/char/nvram 0x0f28cb91 nvram_read_byte +EXPORT_SYMBOL drivers/char/nvram 0x17ff2c1d __nvram_read_byte +EXPORT_SYMBOL drivers/char/nvram 0x2adec1e0 __nvram_check_checksum +EXPORT_SYMBOL drivers/char/nvram 0x7da28f12 nvram_check_checksum +EXPORT_SYMBOL drivers/char/nvram 0x9ce3f83f nvram_write_byte +EXPORT_SYMBOL drivers/char/nvram 0xa8813189 __nvram_write_byte +EXPORT_SYMBOL drivers/char/tpm/st33zp24/tpm_st33zp24 0x4fc4f9a2 st33zp24_pm_suspend +EXPORT_SYMBOL drivers/char/tpm/st33zp24/tpm_st33zp24 0x77f1dfdd st33zp24_probe +EXPORT_SYMBOL drivers/char/tpm/st33zp24/tpm_st33zp24 0xd66af88a st33zp24_remove +EXPORT_SYMBOL drivers/char/tpm/st33zp24/tpm_st33zp24 0xeec5b48b st33zp24_pm_resume +EXPORT_SYMBOL drivers/char/xillybus/xillybus_core 0x25978d50 xillybus_isr +EXPORT_SYMBOL drivers/char/xillybus/xillybus_core 0x47e7d3a8 xillybus_endpoint_remove +EXPORT_SYMBOL drivers/char/xillybus/xillybus_core 0xb542840f xillybus_endpoint_discovery +EXPORT_SYMBOL drivers/char/xillybus/xillybus_core 0xcb44c25a xillybus_init_endpoint +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0x1eae0fa9 dw_dma_cyclic_prep +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0x5699e7e1 dw_dma_get_src_addr +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0x68bd0359 dw_dma_cyclic_start +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0x731faac8 dw_dma_get_dst_addr +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0xa6812a3e dw_dma_cyclic_stop +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0xeaf49059 dw_dma_cyclic_free +EXPORT_SYMBOL drivers/dma/ioat/ioatdma 0x9a1fed2a ioat_dma_setup_interrupts +EXPORT_SYMBOL drivers/edac/edac_core 0xd97f0b77 edac_mc_find +EXPORT_SYMBOL drivers/firewire/firewire-core 0x04d0f641 fw_core_remove_descriptor +EXPORT_SYMBOL drivers/firewire/firewire-core 0x0d9d7080 fw_iso_context_start +EXPORT_SYMBOL drivers/firewire/firewire-core 0x0f7d6af8 fw_csr_string +EXPORT_SYMBOL drivers/firewire/firewire-core 0x16e91e21 fw_csr_iterator_next +EXPORT_SYMBOL drivers/firewire/firewire-core 0x2088bb41 fw_card_add +EXPORT_SYMBOL drivers/firewire/firewire-core 0x286820e3 fw_core_remove_address_handler +EXPORT_SYMBOL drivers/firewire/firewire-core 0x2885fec5 fw_get_request_speed +EXPORT_SYMBOL drivers/firewire/firewire-core 0x3c56ef91 fw_workqueue +EXPORT_SYMBOL drivers/firewire/firewire-core 0x4f2f564b fw_fill_response +EXPORT_SYMBOL drivers/firewire/firewire-core 0x50f6afaa fw_device_enable_phys_dma +EXPORT_SYMBOL drivers/firewire/firewire-core 0x53cb1f01 fw_core_add_address_handler +EXPORT_SYMBOL drivers/firewire/firewire-core 0x5cf2f7a3 fw_bus_type +EXPORT_SYMBOL drivers/firewire/firewire-core 0x645b715f fw_core_add_descriptor +EXPORT_SYMBOL drivers/firewire/firewire-core 0x65c9438b fw_csr_iterator_init +EXPORT_SYMBOL drivers/firewire/firewire-core 0x696cec87 fw_iso_context_destroy +EXPORT_SYMBOL drivers/firewire/firewire-core 0x6b46a0bb fw_schedule_bus_reset +EXPORT_SYMBOL drivers/firewire/firewire-core 0x6ff684ad fw_iso_buffer_init +EXPORT_SYMBOL drivers/firewire/firewire-core 0x776124b7 fw_core_handle_request +EXPORT_SYMBOL drivers/firewire/firewire-core 0x86468d44 fw_rcode_string +EXPORT_SYMBOL drivers/firewire/firewire-core 0x892e5282 fw_send_response +EXPORT_SYMBOL drivers/firewire/firewire-core 0x8bd2fe30 fw_iso_buffer_destroy +EXPORT_SYMBOL drivers/firewire/firewire-core 0x8edd43d0 fw_run_transaction +EXPORT_SYMBOL drivers/firewire/firewire-core 0x90863005 fw_high_memory_region +EXPORT_SYMBOL drivers/firewire/firewire-core 0x9941a332 fw_iso_context_create +EXPORT_SYMBOL drivers/firewire/firewire-core 0x9e75ff44 fw_send_request +EXPORT_SYMBOL drivers/firewire/firewire-core 0xa0d59046 fw_core_remove_card +EXPORT_SYMBOL drivers/firewire/firewire-core 0xad6238a1 fw_iso_context_queue +EXPORT_SYMBOL drivers/firewire/firewire-core 0xbbefd561 fw_core_handle_bus_reset +EXPORT_SYMBOL drivers/firewire/firewire-core 0xcad77c19 fw_core_handle_response +EXPORT_SYMBOL drivers/firewire/firewire-core 0xcbf9f2dd fw_cancel_transaction +EXPORT_SYMBOL drivers/firewire/firewire-core 0xccfab00f fw_iso_context_flush_completions +EXPORT_SYMBOL drivers/firewire/firewire-core 0xe4a59106 fw_card_initialize +EXPORT_SYMBOL drivers/firewire/firewire-core 0xeaa6f01f fw_iso_context_queue_flush +EXPORT_SYMBOL drivers/firewire/firewire-core 0xf1d39865 fw_iso_resource_manage +EXPORT_SYMBOL drivers/firewire/firewire-core 0xf7c0ff8d fw_iso_context_stop +EXPORT_SYMBOL drivers/firmware/dcdbas 0xa75079d6 dcdbas_smi_request +EXPORT_SYMBOL drivers/fmc/fmc 0x002860de fmc_driver_register +EXPORT_SYMBOL drivers/fmc/fmc 0x0e104067 fmc_free_sdb_tree +EXPORT_SYMBOL drivers/fmc/fmc 0x290d0f9b fmc_device_unregister +EXPORT_SYMBOL drivers/fmc/fmc 0x42ad48a5 fmc_show_sdb_tree +EXPORT_SYMBOL drivers/fmc/fmc 0x42b8fe77 fmc_find_sdb_device +EXPORT_SYMBOL drivers/fmc/fmc 0x567cfd0c fmc_driver_unregister +EXPORT_SYMBOL drivers/fmc/fmc 0x6ac86684 fmc_device_register +EXPORT_SYMBOL drivers/fmc/fmc 0x871c4e61 fmc_device_unregister_n +EXPORT_SYMBOL drivers/fmc/fmc 0x8a066f16 fmc_scan_sdb_tree +EXPORT_SYMBOL drivers/fmc/fmc 0xac2bdc0d fmc_reprogram +EXPORT_SYMBOL drivers/fmc/fmc 0xe6dc854c fmc_device_register_n +EXPORT_SYMBOL drivers/gpu/drm/amd/amdkfd/amdkfd 0xb98987b5 kgd2kfd_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0079ff39 drm_panel_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x007e55f7 drm_master_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00e876ae drm_modeset_legacy_acquire_ctx +EXPORT_SYMBOL drivers/gpu/drm/drm 0x03946439 drm_warn_on_modeset_not_all_locked +EXPORT_SYMBOL drivers/gpu/drm/drm 0x03a57d29 drm_gem_dumb_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0643ea87 drm_mode_plane_set_obj_prop +EXPORT_SYMBOL drivers/gpu/drm/drm 0x073aaf5d drm_clflush_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0x07fb1bb6 drm_vblank_count +EXPORT_SYMBOL drivers/gpu/drm/drm 0x084ed358 drm_mode_object_find +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0893aa00 drm_gem_dmabuf_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x08da811d drm_connector_register +EXPORT_SYMBOL drivers/gpu/drm/drm 0x090ee8a3 drm_bridge_mode_set +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0a0873f2 drm_bridge_attach +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0a5be470 drm_mode_probed_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0a72f765 drm_clflush_virt_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0ae4b94c drm_ht_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0b513b3b drm_encoder_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0f7f4748 drm_flip_work_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0fd60df2 drm_get_connector_status_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x104650e7 drm_framebuffer_lookup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x107742a9 drm_get_subpixel_order_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1080cb68 drm_av_sync_delay +EXPORT_SYMBOL drivers/gpu/drm/drm 0x13049627 drm_send_vblank_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0x136a5380 drm_legacy_addbufs_agp +EXPORT_SYMBOL drivers/gpu/drm/drm 0x13c6ed85 drm_atomic_state_default_clear +EXPORT_SYMBOL drivers/gpu/drm/drm 0x14614fcf drm_atomic_set_fb_for_plane +EXPORT_SYMBOL drivers/gpu/drm/drm 0x14a41b5f drm_i2c_encoder_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x14a9a178 drm_get_format_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x14c1042e drm_gem_mmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x16aacc5b drm_legacy_mmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x16dd76dc drm_debugfs_create_files +EXPORT_SYMBOL drivers/gpu/drm/drm 0x194eadaa drm_edid_header_is_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x19ef56b4 drm_framebuffer_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1a22d3f7 drm_vma_offset_lookup_locked +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1a546ddd drm_mm_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1a6a5d03 drm_modeset_lock_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1a770ac3 drm_detect_hdmi_monitor +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1b242cf7 drm_vma_offset_lookup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1bd7ae30 drm_get_pci_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1bf35541 drm_mm_dump_table +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1dd71f7a drm_err +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1ec4ceba drm_plane_force_disable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x205fda72 drm_mode_get_tile_group +EXPORT_SYMBOL drivers/gpu/drm/drm 0x20645642 drm_debug +EXPORT_SYMBOL drivers/gpu/drm/drm 0x210af288 drm_gem_vm_close +EXPORT_SYMBOL drivers/gpu/drm/drm 0x21425b87 drm_bridge_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x22acaf62 drm_get_cea_aspect_ratio +EXPORT_SYMBOL drivers/gpu/drm/drm 0x231ae5a6 drm_add_modes_noedid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x23260a1b drm_mode_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2422460d drm_put_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0x24333fec drm_bridge_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0x278df942 drm_atomic_plane_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x27dce922 drm_gem_object_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x28b0693d drm_match_cea_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x29a010e6 drm_mm_insert_node_in_range_generic +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2a50560c drm_legacy_rmmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2a6e4876 drm_gem_create_mmap_offset_size +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2aa5c7b7 drm_connector_unplug_all +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2adcc8d9 drm_mode_create_suggested_offset_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2af64aed drm_calc_vbltimestamp_from_scanoutpos +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2b3ff448 drm_mode_validate_basic +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2d187eae drm_crtc_index +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2d50570f drm_rect_calc_hscale +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2d6a88f2 drm_legacy_ioremap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2e12b0fd drm_mode_group_init_legacy_group +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2e7a4300 drm_rgb_quant_range_selectable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2fbb0353 drm_i2c_encoder_detect +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2fcf18da drm_vma_node_revoke +EXPORT_SYMBOL drivers/gpu/drm/drm 0x30711b3f drm_master_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0x32365ae7 drm_modeset_unlock_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3500895b drm_prime_gem_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x357882a8 drm_gem_handle_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x35f01c92 drm_i2c_encoder_prepare +EXPORT_SYMBOL drivers/gpu/drm/drm 0x36e067a8 drm_legacy_ioremapfree +EXPORT_SYMBOL drivers/gpu/drm/drm 0x37ebe743 drm_mm_replace_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0x38905701 drm_mode_config_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x38a4f7ae drm_format_num_planes +EXPORT_SYMBOL drivers/gpu/drm/drm 0x38f5d3ba drm_crtc_vblank_off +EXPORT_SYMBOL drivers/gpu/drm/drm 0x39c38a51 drm_pci_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3a70da8a drm_atomic_connectors_for_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3ac1fef9 drm_mode_legacy_fb_format +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3b9d009a drm_format_plane_cpp +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3d6e16a4 drm_mode_create_scaling_mode_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3e4487ef drm_legacy_ioremap_wc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3eb37b9d drm_ht_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x423ef5ee drm_connector_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x431f7517 drm_legacy_idlelock_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x43681f9e drm_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x44083437 drm_crtc_handle_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0x44a29b48 drm_vblank_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0x452403d3 drm_mode_config_reset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4770038d drm_atomic_crtc_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x48396a43 drm_plane_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x490cfb78 drm_mm_reserve_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4a7a2c58 drm_gem_prime_fd_to_handle +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4aeb3533 drm_agp_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4ba4df3e drm_vma_offset_manager_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4c511235 drm_edid_is_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4c7d6f7b drm_property_create_bitmask +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4d6cc777 drm_plane_index +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4ea1f5a2 drm_gem_object_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4ec2794b drm_atomic_state_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4f468d7a drm_atomic_legacy_backoff +EXPORT_SYMBOL drivers/gpu/drm/drm 0x50added2 drm_crtc_vblank_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0x50e28c07 drm_edid_to_sad +EXPORT_SYMBOL drivers/gpu/drm/drm 0x51d944a5 drm_ati_pcigart_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x51e9b98d drm_legacy_getsarea +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5208c97b drm_platform_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x525fc338 drm_vblank_on +EXPORT_SYMBOL drivers/gpu/drm/drm 0x526f6f71 drm_rect_calc_hscale_relaxed +EXPORT_SYMBOL drivers/gpu/drm/drm 0x53a46486 drm_mode_set_crtcinfo +EXPORT_SYMBOL drivers/gpu/drm/drm 0x53fb794e drm_bridge_post_disable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x54db1bd4 drm_vblank_count_and_time +EXPORT_SYMBOL drivers/gpu/drm/drm 0x560d5299 drm_gem_vm_open +EXPORT_SYMBOL drivers/gpu/drm/drm 0x57b6efe3 drm_ioctl_flags +EXPORT_SYMBOL drivers/gpu/drm/drm 0x588ad89a drm_agp_acquire +EXPORT_SYMBOL drivers/gpu/drm/drm 0x58a6e783 drm_agp_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x58e512d3 drm_vma_node_is_allowed +EXPORT_SYMBOL drivers/gpu/drm/drm 0x59a860b2 drm_vblank_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x59cf674d drm_mode_parse_command_line_for_connector +EXPORT_SYMBOL drivers/gpu/drm/drm 0x59ef50f0 drm_edid_block_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5a1888cd drm_atomic_state_default_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5b15ba43 drm_atomic_state_clear +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5b4e91c5 drm_mode_vrefresh +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5b72fcb1 drm_object_property_get_value +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5b82bfa1 drm_dev_set_unique +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5d545dbd drm_mode_equal +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5d7318dc drm_global_item_ref +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5db08f2e drm_wait_one_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0x60288b56 drm_gem_mmap_obj +EXPORT_SYMBOL drivers/gpu/drm/drm 0x60df4635 drm_object_property_set_value +EXPORT_SYMBOL drivers/gpu/drm/drm 0x60fcecaf drm_edid_to_eld +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6119c3bb drm_mode_create_tv_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6178d0be drm_panel_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6243b6fb drm_mode_connector_attach_encoder +EXPORT_SYMBOL drivers/gpu/drm/drm 0x629c05e1 drm_clflush_sg +EXPORT_SYMBOL drivers/gpu/drm/drm 0x63807ae8 drm_mode_create_dirty_info_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6539f172 drm_mode_create_tile_group +EXPORT_SYMBOL drivers/gpu/drm/drm 0x66291e6f drm_modeset_lock +EXPORT_SYMBOL drivers/gpu/drm/drm 0x67633846 drm_mm_insert_node_generic +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6817d20c drm_hdmi_avi_infoframe_from_display_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x68289144 drm_get_edid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x68aa6104 drm_gem_put_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6900d335 drm_rect_clip_scaled +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6a02bc46 drm_modeset_backoff_interruptible +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6a26fa00 drm_property_create_object +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6b983b33 drm_property_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6bad4150 drm_legacy_addbufs_pci +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6bb66d3e drm_compat_ioctl +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6bb91def drm_mode_copy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6bbfc387 drm_gem_free_mmap_offset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6bdf155c drm_vma_offset_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6dabd04e drm_gem_prime_import +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6e30ba8e drm_rect_rotate_inv +EXPORT_SYMBOL drivers/gpu/drm/drm 0x706d3106 drm_vma_offset_manager_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7119a731 drm_gem_prime_export +EXPORT_SYMBOL drivers/gpu/drm/drm 0x722fce23 drm_mode_prune_invalid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7385e797 drm_connector_index +EXPORT_SYMBOL drivers/gpu/drm/drm 0x747bfd66 drm_mode_set_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x74c5b90b drm_object_attach_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7518446a drm_atomic_state_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7530447d drm_atomic_get_crtc_state +EXPORT_SYMBOL drivers/gpu/drm/drm 0x75978499 drm_dev_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7599a242 drm_panel_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x763ba93c drm_atomic_add_affected_connectors +EXPORT_SYMBOL drivers/gpu/drm/drm 0x76758778 drm_flip_work_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x768d7706 drm_debugfs_remove_files +EXPORT_SYMBOL drivers/gpu/drm/drm 0x784d459d drm_bridge_mode_fixup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x78d82670 drm_i2c_encoder_mode_set +EXPORT_SYMBOL drivers/gpu/drm/drm 0x79d2391d drm_gem_handle_delete +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7a7731f4 drm_dev_unregister +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7a93db32 drm_atomic_get_connector_state +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7c647f8d drm_framebuffer_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7f508950 drm_agp_unbind +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7faab565 drm_atomic_set_crtc_for_plane +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7fe0488f drm_vma_node_allow +EXPORT_SYMBOL drivers/gpu/drm/drm 0x82c2998f drm_flip_work_allocate_task +EXPORT_SYMBOL drivers/gpu/drm/drm 0x834e82d5 drm_vblank_pre_modeset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8357cd64 drm_flip_work_queue +EXPORT_SYMBOL drivers/gpu/drm/drm 0x85edc6bc drm_legacy_idlelock_take +EXPORT_SYMBOL drivers/gpu/drm/drm 0x86725025 drm_agp_info +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8697c6d1 drm_mode_create_aspect_ratio_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x871ab41a drm_rect_intersect +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8981d3b3 drm_modeset_unlock_all +EXPORT_SYMBOL drivers/gpu/drm/drm 0x89e60170 drm_mode_connector_set_path_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8a833a90 drm_i2c_encoder_restore +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8ad4bc77 drm_mode_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8b6b9d6f drm_atomic_state_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8c6ce0cd drm_legacy_rmmap_locked +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8c97f7cd drm_modeset_unlock +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8dad0c52 drm_handle_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8de13715 drm_format_vert_chroma_subsampling +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8eff9111 drm_ht_find_item +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9030af64 drm_vblank_off +EXPORT_SYMBOL drivers/gpu/drm/drm 0x91d9ba4d drm_mode_create_from_cmdline_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x91fec1cc drm_rect_calc_vscale +EXPORT_SYMBOL drivers/gpu/drm/drm 0x92408488 drm_mm_scan_add_block +EXPORT_SYMBOL drivers/gpu/drm/drm 0x936a5fef drm_property_create_enum +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9569784b drm_framebuffer_unreference +EXPORT_SYMBOL drivers/gpu/drm/drm 0x95731f86 drm_crtc_send_vblank_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0x966c6aac drm_reinit_primary_mode_group +EXPORT_SYMBOL drivers/gpu/drm/drm 0x97ccb4af drm_mode_find_dmt +EXPORT_SYMBOL drivers/gpu/drm/drm 0x97efb539 drm_framebuffer_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9881bace drm_crtc_vblank_on +EXPORT_SYMBOL drivers/gpu/drm/drm 0x98adc4fb drm_modeset_drop_locks +EXPORT_SYMBOL drivers/gpu/drm/drm 0x98ba9ecc drm_gem_get_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9972db48 drm_rect_calc_vscale_relaxed +EXPORT_SYMBOL drivers/gpu/drm/drm 0x998f8281 drm_connector_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9b9c1f0b drm_pci_exit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9c8e48d5 drm_add_edid_modes +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9d054621 drm_mode_validate_size +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9dd56808 drm_bridge_enable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9e016771 drm_agp_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9e3a347b drm_mode_equal_no_clocks_no_stereo +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9f100adc drm_crtc_check_viewport +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9fd81dd4 drm_property_reference_blob +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa1c9c5da drm_display_info_set_bus_formats +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa1de1fbd drm_i2c_encoder_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa267ce42 drm_dev_unref +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa28078b2 drm_edid_duplicate +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa2837e3f drm_cvt_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa4466414 drm_mm_remove_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa55076d5 drm_framebuffer_reference +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa58d07dd drm_noop +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa76a2495 drm_plane_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa7798cf9 drm_gtf_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa7af2a14 drm_irq_uninstall +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa92701a7 drm_mode_config_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa96acfcb drm_rect_debug_print +EXPORT_SYMBOL drivers/gpu/drm/drm 0xaa346115 drm_crtc_wait_one_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0xaa90f73b drm_open +EXPORT_SYMBOL drivers/gpu/drm/drm 0xac00ee23 drm_framebuffer_unregister_private +EXPORT_SYMBOL drivers/gpu/drm/drm 0xac2e4c7b drm_vblank_post_modeset +EXPORT_SYMBOL drivers/gpu/drm/drm 0xac88839c drm_property_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0xacfbf996 drm_read +EXPORT_SYMBOL drivers/gpu/drm/drm 0xaf95b38e drm_property_create_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb01cfd37 drm_hdmi_vendor_infoframe_from_display_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb04056ab drm_universal_plane_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb053adda drm_rect_rotate +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb1f58a31 drm_panel_attach +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb34de41f drm_flip_work_queue_task +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb40363ef drm_agp_bind_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb46ad421 drm_pci_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb5540008 drm_global_item_unref +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb58fc572 drm_atomic_add_affected_planes +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb6b64572 drm_bridge_disable +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb73bd3e5 drm_crtc_vblank_count +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb864cdce drm_ati_pcigart_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb895832f drm_mode_create_rotation_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb8b59b15 drm_sysfs_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb8ce2f57 drm_platform_set_busid +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb8e0b9cf drm_crtc_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb93b4989 drm_bridge_pre_enable +EXPORT_SYMBOL drivers/gpu/drm/drm 0xba94ccf5 drm_irq_install +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbb76c3bc drm_vblank_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbc720c17 drm_atomic_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbd7e7b99 drm_property_lookup_blob +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbf8f166a drm_vblank_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc0777db5 drm_modeset_lock_all_crtcs +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc250aa25 drm_probe_ddc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc33eeb22 drm_atomic_connector_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc360e7e2 drm_ut_debug_printk +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc3cdb3d8 drm_set_preferred_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc4454ec2 drm_gem_object_lookup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc62802c0 drm_i2c_encoder_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc7500fbb drm_ioctl +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc8c89d9c drm_gtf_mode_complex +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc974a44e drm_crtc_init_with_planes +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc9f0d561 drm_mode_connector_update_edid_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xca45efbc drm_format_horz_chroma_subsampling +EXPORT_SYMBOL drivers/gpu/drm/drm 0xca46d0f6 drm_mode_hsync +EXPORT_SYMBOL drivers/gpu/drm/drm 0xca5c7790 drm_mm_init_scan_with_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcabaed10 drm_atomic_get_plane_state +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcb911cd7 drm_mode_connector_list_update +EXPORT_SYMBOL drivers/gpu/drm/drm 0xccdbf677 drm_unplug_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcd0fc417 drm_ht_just_insert_please +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcd55edcf drm_mode_crtc_set_gamma_size +EXPORT_SYMBOL drivers/gpu/drm/drm 0xce0562f8 drm_mode_debug_printmodeline +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd18f53d3 drm_vma_offset_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd2335101 drm_fb_get_bpp_depth +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd280839f drm_mode_connector_set_tile_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd334f0b9 drm_modeset_backoff +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd3839035 drm_modeset_lock_all +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd38e4f38 drm_prime_sg_to_page_addr_arrays +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd3e4d639 drm_gem_prime_handle_to_fd +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd42c73a5 drm_legacy_addmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd52b1d11 drm_mm_init_scan +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd55b15fd drm_calc_timestamping_constants +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd70c8470 drm_mm_debug_table +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd821c0a0 drm_pcie_get_speed_cap_mask +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd938823e drm_prime_pages_to_sg +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdbb5a9f5 drm_ht_remove_item +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdc222b43 drm_dev_register +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdd150721 drm_mm_takedown +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdd62aca7 drm_pci_set_busid +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdf666902 drm_rotation_simplify +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe0cc72c4 drm_poll +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe10fe8ff drm_crtc_vblank_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe1ad6981 drm_modeset_acquire_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe4d31243 drm_dev_ref +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe507d299 drm_crtc_get_hv_timing +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe51d89b5 drm_mm_clean +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe69b72f5 drm_agp_enable +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe6fcf8cd drm_atomic_check_only +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe7197773 drm_ht_insert_item +EXPORT_SYMBOL drivers/gpu/drm/drm 0xea41667b drm_property_create_bool +EXPORT_SYMBOL drivers/gpu/drm/drm 0xebbfb3a3 drm_gem_object_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xebf5ca2f drm_property_add_enum +EXPORT_SYMBOL drivers/gpu/drm/drm 0xecb47890 drm_property_create_signed_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0xed437f30 drm_modeset_lock_interruptible +EXPORT_SYMBOL drivers/gpu/drm/drm 0xee2c8625 drm_mode_set_config_internal +EXPORT_SYMBOL drivers/gpu/drm/drm 0xeefdfc33 drm_atomic_async_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf096969a drm_i2c_encoder_save +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf1421d13 drm_mode_sort +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf183a5c3 drm_agp_bind +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf26ba199 drm_property_create_blob +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf4c60f35 drm_panel_detach +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf4dc1f72 drm_crtc_vblank_reset +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf5287198 drm_plane_from_index +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf68d1b5e drm_gem_private_object_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf6c030d2 drm_connector_unregister +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf7eba688 drm_mode_create_dvi_i_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf87a3231 drm_gem_create_mmap_offset +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf8857905 drm_atomic_set_mode_prop_for_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf8a2afbc __drm_modeset_lock_all +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf8d2cdd0 drm_i2c_encoder_dpms +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf934ea8d drm_select_eld +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf9544196 drm_property_unreference_blob +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf99739b6 drm_encoder_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfb325563 drm_flip_work_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfb7e6f8b drm_atomic_set_mode_for_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfbc5463c drm_pci_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfbea98e6 drm_modeset_acquire_fini +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfcf54a4f drm_mm_scan_remove_block +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfd063935 drm_edid_to_speaker_allocation +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfd6258a1 drm_mode_duplicate +EXPORT_SYMBOL drivers/gpu/drm/drm 0xffbb08af drm_i2c_encoder_mode_fixup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xffc6c87a drm_detect_monitor_audio +EXPORT_SYMBOL drivers/gpu/drm/drm 0xffe25ef7 drm_atomic_set_crtc_for_connector +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x029c9249 drm_fb_helper_single_add_all_connectors +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x02e25438 drm_dp_mst_topology_mgr_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x06159bf4 __drm_atomic_helper_crtc_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x070a768f drm_atomic_helper_crtc_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x075b35d0 drm_helper_encoder_in_use +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x090e7423 drm_atomic_helper_check +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x098e47d2 drm_dp_link_train_clock_recovery_delay +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0f96ec70 drm_dp_clock_recovery_ok +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x1016efc0 drm_dp_dpcd_write +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x10a01114 drm_fb_helper_restore_fbdev_mode_unlocked +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x10c3a6d5 drm_fb_helper_fill_var +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x120afb56 drm_fb_helper_initial_config +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x14966314 drm_fb_helper_fini +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x163251c8 drm_dp_link_train_channel_eq_delay +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x1766c1e1 drm_atomic_helper_cleanup_planes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x1b879778 drm_atomic_helper_commit +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x1dfcb24b drm_plane_helper_update +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x1f764cf9 drm_fb_helper_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x236d5833 drm_fb_helper_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x268ded9e drm_dp_link_power_up +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2ffec341 drm_fb_helper_pan_display +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x33172a51 drm_atomic_helper_crtc_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x34871adf drm_dp_channel_eq_ok +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x362329b4 drm_fb_helper_set_par +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x36cdfd89 drm_atomic_helper_check_planes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x39765852 drm_helper_mode_fill_fb_struct +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x39b14384 drm_crtc_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3b1fc7e1 drm_fb_helper_debug_leave +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3f518f6f drm_dp_mst_topology_mgr_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x40f17679 drm_atomic_helper_crtc_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x419a2ee6 drm_primary_helper_disable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4364c1e3 drm_dp_dpcd_read_link_status +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x45bba96c drm_dp_link_power_down +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x466e953c drm_atomic_helper_disable_plane +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x472826d4 drm_atomic_helper_commit_planes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4877a124 drm_helper_crtc_in_use +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4ddfa833 drm_helper_resume_force_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4f19241e drm_atomic_helper_plane_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x543d5324 drm_atomic_helper_connector_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x544b5caa drm_atomic_helper_swap_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x55e82fa0 drm_dp_link_probe +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x58ded3f3 __drm_atomic_helper_crtc_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5cb5e14e drm_fb_helper_debug_enter +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5cc6d924 __drm_atomic_helper_connector_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5ce364a0 drm_dp_mst_deallocate_vcpi +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5d064a83 drm_crtc_helper_set_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x62095dd3 drm_fb_helper_check_var +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x69721108 drm_atomic_helper_update_legacy_modeset_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6d805622 drm_helper_probe_single_connector_modes_nomerge +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x711a004a drm_dp_link_rate_to_bw_code +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x72d326df drm_dp_mst_get_edid +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7414cd93 drm_kms_helper_poll_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x750e2270 drm_kms_helper_poll_enable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7540c077 drm_atomic_helper_wait_for_vblanks +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x76e575e4 drm_atomic_helper_set_config +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7b834193 drm_atomic_helper_update_plane +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x80a5231e drm_helper_disable_unused_functions +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x82e282a5 drm_dp_mst_topology_mgr_resume +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x84cc5209 drm_dp_find_vcpi_slots +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x84e924ba drm_dp_get_adjust_request_pre_emphasis +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x85266f9e drm_dp_mst_dump_topology +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8835b858 drm_dp_mst_detect_port +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x892f8ad9 drm_dp_mst_hpd_irq +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8ad113b4 drm_dp_aux_register +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8afab4f1 drm_primary_helper_funcs +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8c53eed3 drm_plane_helper_check_update +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8efd4fbc drm_fb_helper_remove_one_connector +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x90f5c7fe drm_dp_mst_allocate_vcpi +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x96287922 drm_helper_move_panel_connectors_to_head +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x98e28359 drm_kms_helper_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9d5f2bbb drm_fb_helper_prepare +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9faaa46c drm_crtc_helper_set_config +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9fdcbcfe drm_primary_helper_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa1c17135 drm_dp_check_act_status +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa47826e4 drm_dp_calc_pbn_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa77858bb drm_dp_get_adjust_request_voltage +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa81e729d drm_fb_helper_setcmap +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa8d6809d drm_dp_bw_code_to_link_rate +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xacfeea27 drm_atomic_helper_connector_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xad6151f3 drm_dp_aux_unregister +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xad813aec drm_kms_helper_poll_disable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xadeb0699 drm_dp_link_configure +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xae1d878f drm_primary_helper_update +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb0bed44d drm_has_preferred_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb66ee6d2 drm_fb_helper_blank +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb89ef55f drm_atomic_helper_page_flip +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xbdbb0615 drm_helper_connector_dpms +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xbdcd8752 __drm_atomic_helper_connector_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xbdec7bc0 drm_atomic_helper_commit_planes_on_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xbeb7bd59 drm_atomic_helper_connector_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc0169596 drm_atomic_helper_commit_modeset_disables +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc4f38b94 drm_dp_update_payload_part1 +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc646f36e drm_helper_crtc_mode_set +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xca6df94a drm_plane_helper_disable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xcbcbf410 drm_helper_hpd_irq_event +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xcc82b458 drm_dp_dpcd_read +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xcd9c3d96 drm_fb_helper_add_one_connector +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xcdfcc613 drm_atomic_helper_plane_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xcec5719d drm_atomic_helper_connector_dpms +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xcf242b07 drm_fb_helper_fill_fix +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd7861351 drm_helper_crtc_mode_set_base +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd7bd47b2 drm_atomic_helper_plane_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd8278e66 drm_dp_mst_get_vcpi_slots +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd89888b8 __drm_atomic_helper_plane_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd9da2606 drm_atomic_helper_crtc_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xdb11876d drm_kms_helper_poll_fini +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xde1502d6 drm_atomic_helper_prepare_planes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe12cfa3c drm_pick_cmdline_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe17f7e1b drm_atomic_helper_plane_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe1acab83 drm_dp_mst_reset_vcpi_slots +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe3452044 drm_helper_probe_single_connector_modes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe5758ca0 drm_dp_mst_topology_mgr_suspend +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe9a05e10 drm_atomic_helper_check_modeset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xeb5c3d79 drm_dp_update_payload_part2 +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xef605ad4 __drm_atomic_helper_plane_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf11be91b drm_atomic_helper_commit_modeset_enables +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf26deeb6 drm_atomic_helper_connector_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xfc5ec139 drm_dp_mst_topology_mgr_set_mst +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x01d3622f ttm_bo_mem_space +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x0714717d ttm_bo_kmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x087a6efb ttm_bo_add_to_lru +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x0bab7f47 ttm_read_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x0e0d275a ttm_mem_io_reserve +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x152e3af9 ttm_bo_swapout_all +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x160550e5 ttm_agp_tt_unpopulate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x18d1ca85 ttm_mem_global_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x1940e4cd ttm_write_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x1aece0ff ttm_bo_init_mm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x1cb20277 ttm_mem_global_free +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x22ec80fe ttm_vt_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x23b21969 ttm_bo_acc_size +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x24765c33 ttm_read_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x26e34e5e ttm_agp_tt_create +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x2a835392 ttm_bo_wait +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x2b54aa9a ttm_object_file_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x31f63ab1 ttm_bo_mem_put +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x3940641a ttm_bo_create +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x3d798637 ttm_tt_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x4293e37a ttm_mem_global_alloc +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x439e9f74 ttm_bo_del_sub_from_lru +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x43ae08ec ttm_pool_populate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x485a5bc0 ttm_ref_object_add +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x4e8dd264 ttm_bo_global_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x5167f946 ttm_bo_device_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x538ddf64 ttm_bo_validate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x564e1aee ttm_bo_global_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x5ae8fdd0 ttm_agp_tt_populate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x6052860c ttm_round_pot +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x64bb488b ttm_bo_device_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x67afe767 ttm_pool_unpopulate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x6b8c8400 ttm_mem_io_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x6c8dc6bf ttm_vt_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x6e875de9 ttm_lock_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x6f73c45a ttm_fbdev_mmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x6fbf8307 ttm_eu_fence_buffer_objects +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x73ba3f1e ttm_bo_kunmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x749ecc4b ttm_bo_clean_mm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x7bfa2821 ttm_bo_unref +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x7c4048f9 ttm_mem_global_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x80d86f0e ttm_object_device_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x826f1915 ttm_bo_synccpu_write_grab +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x836d8fd0 ttm_suspend_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x838f5c5c ttm_bo_move_memcpy +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x87abc893 ttm_eu_backoff_reservation +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x880a15ad ttm_base_object_lookup +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x946d9ea3 ttm_write_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x94894449 ttm_base_object_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x998e45c0 ttm_ref_object_base_unref +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x9f6e33a1 ttm_bo_move_accel_cleanup +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xa0766242 ttm_bo_move_ttm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xa4f15fe2 ttm_mem_io_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xa6bc399c ttm_mem_io_free +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xab8d333f ttm_bo_unlock_delayed_workqueue +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xaf5766ad ttm_dma_tt_fini +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xb1759f20 ttm_bo_unmap_virtual +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xb553ff4b ttm_bo_dma_acc_size +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xc02e67f3 ttm_bo_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xc22c40c2 ttm_eu_reserve_buffers +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xc39ffce0 ttm_bo_lock_delayed_workqueue +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xc4d4618d ttm_io_prot +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xce6e43a8 ttm_base_object_lookup_for_ref +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xcf109c0f ttm_tt_fini +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xcf2a482b ttm_object_device_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xcf49f835 ttm_suspend_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xcf67c299 ttm_ref_object_exists +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xd3eb7c6d ttm_prime_object_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xd421c244 ttm_bo_synccpu_write_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xd4e350dc ttm_page_alloc_debugfs +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xd8edb115 ttm_base_object_unref +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xe4f66ce2 ttm_tt_set_placement_caching +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xe67256fa ttm_bo_evict_mm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xeef18631 ttm_bo_mmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xf8e66c88 ttm_tt_bind +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xfb13726a ttm_dma_tt_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xfbc2c5ec ttm_object_file_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xfdcf9cc4 ttm_bo_manager_func +EXPORT_SYMBOL drivers/hv/hv_vmbus 0x1174b0ee vmbus_sendpacket +EXPORT_SYMBOL drivers/hv/hv_vmbus 0x58e8adcb vmbus_recvpacket +EXPORT_SYMBOL drivers/hv/hv_vmbus 0x7e4bb2dd vmbus_sendpacket_ctl +EXPORT_SYMBOL drivers/hwmon/hwmon-vid 0x0903c239 vid_from_reg +EXPORT_SYMBOL drivers/hwmon/hwmon-vid 0xef1c781c vid_which_vrm +EXPORT_SYMBOL drivers/hwmon/sch56xx-common 0x0e2a6864 sch56xx_read_virtual_reg +EXPORT_SYMBOL drivers/hwmon/sch56xx-common 0x0f5877d4 sch56xx_read_virtual_reg16 +EXPORT_SYMBOL drivers/hwmon/sch56xx-common 0x34257f35 sch56xx_watchdog_unregister +EXPORT_SYMBOL drivers/hwmon/sch56xx-common 0x789c9678 sch56xx_watchdog_register +EXPORT_SYMBOL drivers/hwmon/sch56xx-common 0xe5022f95 sch56xx_read_virtual_reg12 +EXPORT_SYMBOL drivers/hwmon/sch56xx-common 0xed1d2a08 sch56xx_write_virtual_reg +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-bit 0x635b83ba i2c_bit_add_bus +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-bit 0x7a47b799 i2c_bit_add_numbered_bus +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-bit 0xcc714c12 i2c_bit_algo +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-pca 0x4f056166 i2c_pca_add_numbered_bus +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-pca 0xfee845a0 i2c_pca_add_bus +EXPORT_SYMBOL drivers/i2c/busses/i2c-amd756 0x4e9ba225 amd756_smbus +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x192a4c28 mma9551_read_config_byte +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x1c5fb472 mma9551_read_version +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x349e45ab mma9551_write_config_words +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x350ca9fd mma9551_update_config_bits +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x3d97652d mma9551_write_config_word +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x41ef446c mma9551_read_accel_scale +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x561db257 mma9551_set_power_state +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x5d3f6c02 mma9551_gpio_config +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x616846b9 mma9551_read_status_word +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x78bc3062 mma9551_read_status_byte +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x9d131f25 mma9551_read_status_words +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xae8c792a mma9551_read_accel_chan +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xb100c7fe mma9551_write_config_byte +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xb6a21a7a mma9551_set_device_state +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xbcd7fe96 mma9551_sleep +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xcbfee860 mma9551_app_reset +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xdc54ba7e mma9551_read_config_words +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xf700784b mma9551_read_config_word +EXPORT_SYMBOL drivers/iio/accel/st_accel 0x6a4506a5 st_accel_common_probe +EXPORT_SYMBOL drivers/iio/accel/st_accel 0xac1b8c0a st_accel_common_remove +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x08a35510 hid_sensor_read_raw_hyst_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x268c559d hid_sensor_write_raw_hyst_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x31a64cbe hid_sensor_read_poll_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x3c38b5fd hid_sensor_write_samp_freq_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x3ec06cf5 hid_sensor_read_samp_freq_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x9b0e7b4e hid_sensor_parse_common_attributes +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0xc83a92bf hid_sensor_format_scale +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-trigger 0x37e28dae hid_sensor_pm_ops +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-trigger 0x5a01220f hid_sensor_setup_trigger +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-trigger 0xcef22b0a hid_sensor_power_state +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-trigger 0xd4389d97 hid_sensor_remove_trigger +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0x008f75c8 ssp_get_sensor_delay +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0x4a29bbfe ssp_change_delay +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0x5c135761 ssp_disable_sensor +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0xc5a2aba6 ssp_register_consumer +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0xde7ac4ef ssp_enable_sensor +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/ssp_iio 0x842e3139 ssp_common_process_data +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/ssp_iio 0xb4eb1818 ssp_common_buffer_postdisable +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/ssp_iio 0xe9800002 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 0x0bee3474 st_sensors_read_info_raw +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x1c78dace st_sensors_power_enable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x1d9d0c82 st_sensors_set_dataready_irq +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x255c8413 st_sensors_set_odr +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x307fc98e st_sensors_allocate_trigger +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x33626fe6 st_sensors_sysfs_sampling_frequency_avail +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x886ad25f st_sensors_deallocate_trigger +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x95a8315a st_sensors_check_device_support +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xa357186f st_sensors_set_enable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xab6769e5 st_sensors_get_buffer_element +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xabfeda04 st_sensors_set_fullscale_by_gain +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xbd949ab1 st_sensors_power_disable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xca121ec4 st_sensors_sysfs_scale_avail +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xe244b6e2 st_sensors_init_sensor +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xf640935c st_sensors_set_axis_enable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors_i2c 0x33adf060 st_sensors_i2c_configure +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors_spi 0x39a5da0e st_sensors_spi_configure +EXPORT_SYMBOL drivers/iio/gyro/st_gyro 0x9550ceda st_gyro_common_probe +EXPORT_SYMBOL drivers/iio/gyro/st_gyro 0xd04d0895 st_gyro_common_remove +EXPORT_SYMBOL drivers/iio/imu/adis_lib 0x31f0a275 adis_enable_irq +EXPORT_SYMBOL drivers/iio/imu/adis_lib 0x67d5d0db adis_debugfs_reg_access +EXPORT_SYMBOL drivers/iio/industrialio 0x0f63f0b1 iio_read_const_attr +EXPORT_SYMBOL drivers/iio/industrialio 0x19e2be7f iio_trigger_register +EXPORT_SYMBOL drivers/iio/industrialio 0x2d6bcdcb iio_trigger_generic_data_rdy_poll +EXPORT_SYMBOL drivers/iio/industrialio 0x2e1232c0 iio_push_event +EXPORT_SYMBOL drivers/iio/industrialio 0x32821d7d iio_triggered_buffer_predisable +EXPORT_SYMBOL drivers/iio/industrialio 0x346a3b6b iio_trigger_free +EXPORT_SYMBOL drivers/iio/industrialio 0x364220ac iio_buffer_init +EXPORT_SYMBOL drivers/iio/industrialio 0x4e750336 iio_bus_type +EXPORT_SYMBOL drivers/iio/industrialio 0x77dd2e15 iio_device_free +EXPORT_SYMBOL drivers/iio/industrialio 0x7f37fe91 iio_trigger_notify_done +EXPORT_SYMBOL drivers/iio/industrialio 0x831ef33b iio_triggered_buffer_postenable +EXPORT_SYMBOL drivers/iio/industrialio 0x89e3615b iio_trigger_alloc +EXPORT_SYMBOL drivers/iio/industrialio 0xa12a6f70 iio_device_register +EXPORT_SYMBOL drivers/iio/industrialio 0xa7fde6d1 iio_device_alloc +EXPORT_SYMBOL drivers/iio/industrialio 0xdf76bbeb iio_pollfunc_store_time +EXPORT_SYMBOL drivers/iio/industrialio 0xe5d7819e iio_trigger_poll_chained +EXPORT_SYMBOL drivers/iio/industrialio 0xf95bd4fd iio_trigger_poll +EXPORT_SYMBOL drivers/iio/industrialio 0xfbd73eff iio_trigger_unregister +EXPORT_SYMBOL drivers/iio/industrialio 0xfe6d564b iio_device_unregister +EXPORT_SYMBOL drivers/iio/industrialio-triggered-buffer 0x6d588521 iio_triggered_buffer_setup +EXPORT_SYMBOL drivers/iio/industrialio-triggered-buffer 0xc9760963 iio_triggered_buffer_cleanup +EXPORT_SYMBOL drivers/iio/kfifo_buf 0x0b74b5c5 devm_iio_kfifo_free +EXPORT_SYMBOL drivers/iio/kfifo_buf 0x935f8028 iio_kfifo_free +EXPORT_SYMBOL drivers/iio/kfifo_buf 0xe6b884c6 devm_iio_kfifo_allocate +EXPORT_SYMBOL drivers/iio/kfifo_buf 0xff813f54 iio_kfifo_allocate +EXPORT_SYMBOL drivers/iio/magnetometer/st_magn 0xaa59e0c9 st_magn_common_remove +EXPORT_SYMBOL drivers/iio/magnetometer/st_magn 0xebe23a51 st_magn_common_probe +EXPORT_SYMBOL drivers/iio/pressure/ms5611_core 0x831533ad ms5611_probe +EXPORT_SYMBOL drivers/iio/pressure/st_pressure 0x51e538ef st_press_common_remove +EXPORT_SYMBOL drivers/iio/pressure/st_pressure 0xf60899bf st_press_common_probe +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x049ace30 rdma_addr_find_smac_by_sgid +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x04b8b6d7 rdma_translate_ip +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x1c3c0ad3 rdma_addr_size +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x1edc4064 rdma_addr_unregister_client +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x273f4cca rdma_addr_cancel +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x87451b6a rdma_copy_addr +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x9846b88f rdma_resolve_ip +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x9d9cabc5 rdma_addr_register_client +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0xf029eb25 rdma_addr_find_dmac_by_grh +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x1a4642f4 ib_create_cm_id +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x22947f84 ib_send_cm_dreq +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x2382b312 ib_send_cm_rep +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x30a8e055 ib_destroy_cm_id +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x74b64769 ib_send_cm_sidr_rep +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x7c9d8895 ib_send_cm_drep +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x916cd30c ib_send_cm_apr +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x9bca96a9 ib_cm_listen +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xa24ac47b ib_send_cm_rej +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xb25ed5ea ib_send_cm_mra +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xc4452dbb ib_send_cm_lap +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xca21a43b ib_send_cm_sidr_req +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xd0bc6316 cm_class +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xd1168e45 ib_send_cm_rtu +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xe315c7ab ib_cm_notify +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xe4152ea3 ib_cm_init_qp_attr +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xe91980ef ib_send_cm_req +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x015e45df ibnl_put_attr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x01927118 ibnl_add_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x02a6b8fb ib_alloc_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x030337d3 ib_get_dma_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x07b7b6e7 ib_fmr_pool_unmap +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0c1b9ac1 ib_ud_header_unpack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0ecb6b63 ib_get_cached_lmc +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0fe90f29 ibnl_multicast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x12af1757 ib_detach_mcast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1a764c31 ib_alloc_fast_reg_page_list +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1b2537cb ib_create_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1e491a04 ib_unmap_fmr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1fec04d4 ib_dealloc_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2220d317 ib_unregister_event_handler +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x22f3cf93 ib_pack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x24113570 ib_umem_odp_map_dma_pages +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2b421f88 ib_resolve_eth_l2_attrs +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2ed6e386 ib_ud_header_pack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2ef23a6e ib_set_client_data +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x32631545 ib_destroy_flow +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x3360602b ib_destroy_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x39ceef06 ib_get_cached_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x3b9c1cc7 ib_fmr_pool_map_phys +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x3ffb0bd0 ib_create_flow +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x43d51535 ib_destroy_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x491cffa6 ib_get_client_data +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x4e1abe07 ib_init_ah_from_wc +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x4eda9db9 ib_modify_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x50919195 ib_resize_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x50abb99c ib_query_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x50dbc447 ib_flush_fmr_pool +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x52203192 ib_alloc_pd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5611cdea rdma_node_get_transport +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5671d931 ib_find_cached_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5ad722ae ib_query_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5b6e1c16 ib_dealloc_xrcd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x60c66ee6 ib_query_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x63448cc4 ib_destroy_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x63b52ff5 ib_dealloc_pd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6e030e26 ib_modify_qp_is_ok +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x716a1acd ib_open_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x718938e2 ib_unregister_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x785a9cf6 ib_query_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7a83adaa ib_alloc_xrcd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7cf5f430 ib_modify_port +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x821d07c2 ib_unregister_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x8285f957 ib_create_fmr_pool +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x83723a5c ib_close_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x86da09d3 ib_dealloc_mw +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x878b9187 ib_modify_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x87ee649a ib_register_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x8e986eae ib_create_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x8f2650e5 ib_find_cached_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x9004f9b9 ib_dereg_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x974ec47e ib_alloc_mw +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x9899333d ibnl_put_msg +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x9a8603a9 ib_destroy_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x9c274e4e ib_query_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x9c56acce ib_destroy_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x9f617aa9 ib_reg_phys_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa432baf6 ib_unpack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa451547f ib_alloc_fast_reg_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xab0a3467 mult_to_ib_rate +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xac8efc35 ib_register_event_handler +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb2b57e4b rdma_port_get_link_layer +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb56ef171 ib_umem_get +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb84a525d ib_query_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb93a52b0 ib_rate_to_mbps +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xbadd8259 ib_rate_to_mult +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xbc6b8be9 ib_find_exact_cached_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xbe86a6b8 ib_get_cached_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc14e873a ib_create_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc2c2067c ib_query_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc32b59ff ib_destroy_fmr_pool +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc5f904b4 ib_find_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc67f14a5 ibnl_remove_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc9d08acc ib_umem_release +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xcfa2a09f ib_event_msg +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd15d2db9 ib_query_port +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd2d75680 ib_create_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd49442ec ib_umem_odp_unmap_dma_pages +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd52346cc ib_alloc_fmr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd8623ffe ib_modify_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xddc3adf3 ib_create_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe42c3af2 ib_free_fast_reg_page_list +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe5840ec6 ib_wc_status_msg +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe67bb399 ib_modify_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xebfb37b2 ib_register_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xec096ae6 ib_create_ah_from_wc +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xed978ec6 ib_find_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xeeacb01b ib_check_mr_status +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf4d46dcf ib_modify_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf890f103 ib_attach_mcast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf8b32091 ib_rereg_phys_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xfa420099 ib_umem_page_count +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xfb2562e4 ib_dispatch_event +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xfc150956 ib_ud_header_init +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xfcfa0e47 ib_umem_copy_from +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xfdbc406e ibnl_unicast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xff28d22d ib_dealloc_fmr +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x1c32e3b4 ib_unregister_mad_agent +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x2142cbc7 ib_register_mad_snoop +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x2f0ea69e ib_response_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x4d398527 ib_get_rmpp_segment +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x6cedebde ib_process_mad_wc +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x6e4212f6 ib_mad_kernel_rmpp_agent +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x6f077fcf ib_get_mad_data_offset +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x7b5d4b7a ib_is_mad_class_rmpp +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x88fe4a6d ib_redirect_mad_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xaaa58e1c ib_cancel_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xb063db62 ib_modify_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xb51f13df ib_free_recv_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xbf2ab0f0 ib_post_send_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xd23c9fb5 ib_create_send_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xee03689c ib_register_mad_agent +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xf2708c29 ib_free_send_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x05f51c4a ib_sa_register_client +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x22f07253 ib_sa_unpack_path +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x23c0e2fa ib_sa_get_mcmember_rec +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x287d1e73 ib_sa_unregister_client +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x576fdbac ib_sa_free_multicast +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x5f26b5b5 ib_sa_path_rec_get +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x88dff7d6 ib_sa_join_multicast +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xabed900f ib_sa_service_rec_query +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xca1b8707 ib_init_ah_from_mcmember +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xda0d50ec ib_sa_cancel_query +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xddc330e7 ib_sa_pack_path +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xe06a40c4 ib_init_ah_from_path +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xf6409648 ib_sa_guid_info_rec_query +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x2569d757 ib_copy_path_rec_to_user +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x52a6ce77 ib_copy_ah_attr_to_user +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x7971c00e ib_copy_qp_attr_to_user +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0xe350f2aa ib_copy_path_rec_from_user +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x03e9262c iw_cm_listen +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x0ff9f042 iwpm_remove_mapinfo +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x271a798f iwpm_ack_mapping_info_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x339c0b6d iw_cm_disconnect +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x37242d3f iw_create_cm_id +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x3b7801db iwpm_add_and_query_mapping_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x46d56365 iw_cm_reject +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x5da59312 iwpm_register_pid +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x6968573d iwpm_add_mapping +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x6c74c344 iwpm_get_remote_info +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x75a56fea iwpm_register_pid_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x826c44d8 iw_cm_connect +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x904609a0 iwpm_remove_mapping +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x91a914d6 iwpm_init +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x9327be67 iwpm_exit +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x99edf901 iwpm_valid_pid +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xa05d2671 iwpm_mapping_error_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xcae46f68 iw_cm_init_qp_attr +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xcf12d891 iwpm_add_mapping_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xcfe1d0a4 iwpm_remote_info_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xd42a4eb2 iwpm_mapping_info_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xd447b24a iwpm_create_mapinfo +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xe1405447 iw_destroy_cm_id +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xec4dd8b5 iw_cm_accept +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xf380aa0f iwpm_add_and_query_mapping +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x091631cb rdma_resolve_addr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x263eade5 rdma_accept +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x2fbda801 rdma_create_qp +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x64ccf130 rdma_set_reuseaddr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x6c39d7d3 rdma_set_service_type +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x76f1763e rdma_resolve_route +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x82f4d7df rdma_set_afonly +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x907df803 rdma_event_msg +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x9292b3c3 rdma_disconnect +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x96eacbff rdma_destroy_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xb411a176 rdma_reject +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xbc320752 rdma_destroy_qp +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xc8a4efce rdma_join_multicast +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xd137ab5f rdma_create_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xd3ec990c rdma_get_service_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xd8dafa73 rdma_set_ib_paths +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xe49c5786 rdma_init_qp_attr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xe731d507 rdma_notify +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xe88cf42c rdma_connect +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xe9c13fc9 rdma_listen +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xf2acf4ba rdma_bind_addr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xfa316650 rdma_leave_multicast +EXPORT_SYMBOL drivers/input/gameport/gameport 0x04fe95e9 gameport_close +EXPORT_SYMBOL drivers/input/gameport/gameport 0x0a7f40bb gameport_stop_polling +EXPORT_SYMBOL drivers/input/gameport/gameport 0x6695bad0 gameport_unregister_driver +EXPORT_SYMBOL drivers/input/gameport/gameport 0x83d13f61 gameport_unregister_port +EXPORT_SYMBOL drivers/input/gameport/gameport 0x8b58b546 gameport_start_polling +EXPORT_SYMBOL drivers/input/gameport/gameport 0xc1933cfc gameport_set_phys +EXPORT_SYMBOL drivers/input/gameport/gameport 0xc99b6770 __gameport_register_port +EXPORT_SYMBOL drivers/input/gameport/gameport 0xe22636ab __gameport_register_driver +EXPORT_SYMBOL drivers/input/gameport/gameport 0xfd28f5d7 gameport_open +EXPORT_SYMBOL drivers/input/input-polldev 0x1346b1f9 input_free_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0x3e8818a2 input_allocate_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0x4b23b943 input_unregister_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0xc35e4b60 input_register_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0xf390d96d devm_input_allocate_polled_device +EXPORT_SYMBOL drivers/input/matrix-keymap 0xa0860c4c matrix_keypad_build_keymap +EXPORT_SYMBOL drivers/input/misc/ad714x 0x6cd950ef ad714x_disable +EXPORT_SYMBOL drivers/input/misc/ad714x 0x79f1721b ad714x_enable +EXPORT_SYMBOL drivers/input/misc/ad714x 0xebe46323 ad714x_remove +EXPORT_SYMBOL drivers/input/misc/ad714x 0xef32f5d8 ad714x_probe +EXPORT_SYMBOL drivers/input/misc/cma3000_d0x 0x827b7963 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/sparse-keymap 0x541a581f sparse_keymap_report_entry +EXPORT_SYMBOL drivers/input/sparse-keymap 0x80f0d67e sparse_keymap_entry_from_keycode +EXPORT_SYMBOL drivers/input/sparse-keymap 0xca78bd2a sparse_keymap_free +EXPORT_SYMBOL drivers/input/sparse-keymap 0xebe52570 sparse_keymap_report_event +EXPORT_SYMBOL drivers/input/sparse-keymap 0xf6d6807c sparse_keymap_entry_from_scancode +EXPORT_SYMBOL drivers/input/sparse-keymap 0xfce21d83 sparse_keymap_setup +EXPORT_SYMBOL drivers/input/touchscreen/ad7879 0x52b07baa ad7879_probe +EXPORT_SYMBOL drivers/input/touchscreen/ad7879 0x97f83edf ad7879_remove +EXPORT_SYMBOL drivers/input/touchscreen/ad7879 0xa8474f76 ad7879_pm_ops +EXPORT_SYMBOL drivers/iommu/amd_iommu_v2 0x58e4762d amd_iommu_bind_pasid +EXPORT_SYMBOL drivers/iommu/amd_iommu_v2 0x642d0e5f amd_iommu_set_invalid_ppr_cb +EXPORT_SYMBOL drivers/iommu/amd_iommu_v2 0x7bd2e60e amd_iommu_unbind_pasid +EXPORT_SYMBOL drivers/iommu/amd_iommu_v2 0xb7988960 amd_iommu_init_device +EXPORT_SYMBOL drivers/iommu/amd_iommu_v2 0xce30aa39 amd_iommu_set_invalidate_ctx_cb +EXPORT_SYMBOL drivers/iommu/amd_iommu_v2 0xd2a6f141 amd_iommu_free_device +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x04403fcf unregister_capi_driver +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x09a06b1a capi_ctr_resume_output +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x14f2aa5a capi20_get_version +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x26c25d14 capi_ctr_down +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x2b8eab1f capilib_free_ncci +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x2baa6586 capilib_new_ncci +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x31c24aa4 capi20_isinstalled +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x33b6a4ed capi_ctr_ready +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x50b33ca4 capi_cmsg2message +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x5150686a capi_ctr_handle_message +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x6057c6f3 capi_message2cmsg +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x62e32d43 capilib_data_b3_conf +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x6ab80ee8 capi20_release +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x71e8d5ba capilib_data_b3_req +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x7292ab34 cdebbuf_free +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x72a25a72 capi_cmsg2str +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x7a33596c capi20_get_serial +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x7e6f1307 capi20_get_manufacturer +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x8197a0b7 detach_capi_ctr +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x883a61e0 capi20_register +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x8f699913 capilib_release +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x915ca3bf attach_capi_ctr +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x9f823278 register_capi_driver +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xa92a47c9 capi20_put_message +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xaa165d27 capilib_release_appl +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xb19fda8d capi_cmd2str +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xb408f776 capi_ctr_suspend_output +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xb60e5e5f capi_cmsg_header +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xc42d9ec1 capi20_manufacturer +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xe19a11ac capi20_get_profile +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xfd552f7a capi_message2str +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x0afa87df avmcard_dma_free +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x1da82b2f b1_load_t4file +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x3e005f8d b1ctl_proc_fops +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x56f77d17 b1_register_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x5b0318be b1_loaded +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x5b1f5176 b1_send_message +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x653ec41d b1_getrevision +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x85f09690 b1_irq_table +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x87d1e19d b1_release_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x980ab153 b1_parse_version +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x9ec32201 avmcard_dma_alloc +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xa20b83ec b1_reset_ctr +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xa2245c92 b1_load_firmware +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xabd26bc0 b1_free_card +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xd8493e6f b1_alloc_card +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xdfd28376 b1_detect +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xe07d7d2f b1_load_config +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xfa10fee4 b1_interrupt +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x354ec3d6 b1pciv4_detect +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x3e449198 b1dma_load_firmware +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x45cab91c b1dma_send_message +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x7172e174 b1dma_release_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x737df4b7 t1pci_detect +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x788df340 b1dma_reset_ctr +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xd15e4f05 b1dmactl_proc_fops +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xd5738c6b b1dma_reset +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xd6f9f1ea b1dma_interrupt +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xf67b986f b1dma_register_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1pcmcia 0x29562993 b1pcmcia_delcard +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1pcmcia 0xaec3240e b1pcmcia_addcard_m1 +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1pcmcia 0xea620116 b1pcmcia_addcard_m2 +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1pcmcia 0xf14bf8b1 b1pcmcia_addcard_b1 +EXPORT_SYMBOL drivers/isdn/hardware/eicon/divadidd 0x2974ead1 DIVA_DIDD_Read +EXPORT_SYMBOL drivers/isdn/hardware/eicon/divadidd 0x7ab59853 proc_net_eicon +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0x487e24d6 mISDNipac_irq +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0x8c2c2354 mISDNipac_init +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0xcf265e83 mISDNisac_init +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0xf88259a4 mISDNisac_irq +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNisar 0x9dbb046d mISDNisar_irq +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNisar 0xc6d242c8 mISDNisar_init +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x07f4f2ce hisax_unregister +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x148f0c99 FsmFree +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x6fe1ca04 FsmDelTimer +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x93a64734 FsmChangeState +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x9df0cd27 FsmEvent +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x9f987c85 FsmRestartTimer +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0xa1bc94b9 FsmInitTimer +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0xe86eeb1f hisax_init_pcmcia +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0xee93522c hisax_register +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0xf0a16657 FsmNew +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0xfc27303b HiSax_closecard +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x22309328 isac_init +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x3f3b323a isac_d_l2l1 +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x68fdfdf1 isac_setup +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x9f72d090 isac_irq +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0xa092ac98 isacsx_irq +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0xf997750e isacsx_setup +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0x0154d32f register_isdn +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0xeabe380f isdn_ppp_register_compressor +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0xfa06820f isdn_register_divert +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0xfa757ef2 isdn_ppp_unregister_compressor +EXPORT_SYMBOL drivers/isdn/i4l/isdnhdlc 0x3b71e4fc isdnhdlc_decode +EXPORT_SYMBOL drivers/isdn/i4l/isdnhdlc 0x59cc8a7e isdnhdlc_out_init +EXPORT_SYMBOL drivers/isdn/i4l/isdnhdlc 0x8ee38862 isdnhdlc_rcv_init +EXPORT_SYMBOL drivers/isdn/i4l/isdnhdlc 0xfd9d4c09 isdnhdlc_encode +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x06fcebef mISDN_FsmDelTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x19c25ef9 mISDN_initbchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x1cf196fb mISDN_FsmAddTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x2348cc3c mISDN_FsmFree +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x298c1b0f bchannel_senddata +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x29fa5b43 mISDN_FsmRestartTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x2f1eed1a dchannel_senddata +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x311f3876 recv_Echannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x3365d4b3 mISDN_unregister_Bprotocol +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x36ec1940 mISDN_FsmInitTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x3cff8c7b mISDN_freebchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x40aa887e mISDN_initdchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x453ea83a mISDNDevName4ch +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x4ead8e5a mISDN_register_Bprotocol +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x50c2230c mISDN_FsmChangeState +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x54958263 get_next_dframe +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x588886a6 l1_event +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x72069175 mISDN_clear_bchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x7741a52c recv_Dchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x8507a2f8 get_next_bframe +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x89923a26 recv_Bchannel_skb +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x8a4e99fb mISDN_clock_update +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x8eeccf9c create_l1 +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x988a264e mISDN_unregister_device +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xc3401729 mISDN_register_clock +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 0xd9fb933c recv_Dchannel_skb +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xdc59b1a8 bchannel_get_rxbuf +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xe5194a2c mISDN_freedchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xe51ce1f3 queue_ch_frame +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xe6f86b8b recv_Bchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xe8f617eb mISDN_unregister_clock +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xf6e3cd33 mISDN_ctrl_bchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xf919c06d mISDN_register_device +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xf9e7832f mISDN_FsmNew +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_dsp 0x01087af0 mISDN_dsp_element_unregister +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_dsp 0x60721da7 dsp_audio_law_to_s32 +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_dsp 0xa215f1b2 dsp_audio_s16_to_law +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_dsp 0xb98308d8 mISDN_dsp_element_register +EXPORT_SYMBOL drivers/md/bcache/bcache 0x1f529ce8 bch_bset_build_written_tree +EXPORT_SYMBOL drivers/md/bcache/bcache 0x42d0f0c7 closure_sync +EXPORT_SYMBOL drivers/md/bcache/bcache 0x440b4830 bch_btree_iter_next +EXPORT_SYMBOL drivers/md/bcache/bcache 0x44a37d62 bch_btree_iter_init +EXPORT_SYMBOL drivers/md/bcache/bcache 0x5b59b856 bch_btree_insert_key +EXPORT_SYMBOL drivers/md/bcache/bcache 0x7daccb73 bch_btree_keys_alloc +EXPORT_SYMBOL drivers/md/bcache/bcache 0x7f2a56c0 bch_bset_sort_state_init +EXPORT_SYMBOL drivers/md/bcache/bcache 0x8833b0e8 bch_btree_keys_free +EXPORT_SYMBOL drivers/md/bcache/bcache 0x8f8fc624 bch_btree_sort_lazy +EXPORT_SYMBOL drivers/md/bcache/bcache 0xa3c5c702 bch_bset_fix_invalidated_key +EXPORT_SYMBOL drivers/md/bcache/bcache 0xaac1144f closure_sub +EXPORT_SYMBOL drivers/md/bcache/bcache 0xb1e32cda closure_put +EXPORT_SYMBOL drivers/md/bcache/bcache 0xca5df778 __bch_bset_search +EXPORT_SYMBOL drivers/md/bcache/bcache 0xce47a6d9 bch_btree_keys_init +EXPORT_SYMBOL drivers/md/bcache/bcache 0xd2813054 bch_bset_insert +EXPORT_SYMBOL drivers/md/bcache/bcache 0xd97c32a1 bch_btree_sort_partial +EXPORT_SYMBOL drivers/md/bcache/bcache 0xdf892351 bch_bkey_try_merge +EXPORT_SYMBOL drivers/md/bcache/bcache 0xdfa5712d closure_wait +EXPORT_SYMBOL drivers/md/bcache/bcache 0xe3c17af1 __closure_wake_up +EXPORT_SYMBOL drivers/md/bcache/bcache 0xec6f33d0 bch_bset_init_next +EXPORT_SYMBOL drivers/md/dm-bufio 0x268682d2 dm_bufio_forget +EXPORT_SYMBOL drivers/md/dm-bufio 0x72f07bf4 dm_bufio_set_minimum_buffers +EXPORT_SYMBOL drivers/md/dm-log 0x1555e69d dm_dirty_log_create +EXPORT_SYMBOL drivers/md/dm-log 0x1f8420c6 dm_dirty_log_destroy +EXPORT_SYMBOL drivers/md/dm-log 0x749e5dd3 dm_dirty_log_type_register +EXPORT_SYMBOL drivers/md/dm-log 0x83dca0ad dm_dirty_log_type_unregister +EXPORT_SYMBOL drivers/md/dm-snapshot 0x077703c8 dm_exception_store_destroy +EXPORT_SYMBOL drivers/md/dm-snapshot 0x3cb60b06 dm_exception_store_type_unregister +EXPORT_SYMBOL drivers/md/dm-snapshot 0x5e9523d0 dm_snap_origin +EXPORT_SYMBOL drivers/md/dm-snapshot 0x7d1b772a dm_exception_store_create +EXPORT_SYMBOL drivers/md/dm-snapshot 0x9a792a16 dm_exception_store_type_register +EXPORT_SYMBOL drivers/md/dm-snapshot 0xbaf95dc7 dm_snap_cow +EXPORT_SYMBOL drivers/md/raid456 0x30a01543 raid5_set_cache_size +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x0e538d52 flexcop_wan_set_speed +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x18200217 flexcop_device_kmalloc +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x2bc92973 flexcop_eeprom_check_mac_addr +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x425b6333 flexcop_pass_dmx_data +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x4fd23bc3 flexcop_i2c_request +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x72104625 flexcop_sram_set_dest +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x78854598 flexcop_dump_reg +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x80539856 flexcop_device_exit +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xa49ba9d0 flexcop_pid_feed_control +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xb4a02ba1 flexcop_pass_dmx_packets +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xc8b21ac0 flexcop_sram_ctrl +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xcc662d99 flexcop_device_initialize +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xe18fa8bd flexcop_device_kfree +EXPORT_SYMBOL drivers/media/common/cx2341x 0x1ca0c084 cx2341x_log_status +EXPORT_SYMBOL drivers/media/common/cx2341x 0x2f25eee2 cx2341x_update +EXPORT_SYMBOL drivers/media/common/cx2341x 0x30cb4cd7 cx2341x_ext_ctrls +EXPORT_SYMBOL drivers/media/common/cx2341x 0x38b8cbe8 cx2341x_handler_set_busy +EXPORT_SYMBOL drivers/media/common/cx2341x 0x3db8be82 cx2341x_ctrl_query +EXPORT_SYMBOL drivers/media/common/cx2341x 0x47818fd2 cx2341x_handler_set_50hz +EXPORT_SYMBOL drivers/media/common/cx2341x 0x48376f30 cx2341x_handler_init +EXPORT_SYMBOL drivers/media/common/cx2341x 0xb7c75a3a cx2341x_handler_setup +EXPORT_SYMBOL drivers/media/common/cx2341x 0xc184ec1e cx2341x_ctrl_get_menu +EXPORT_SYMBOL drivers/media/common/cx2341x 0xcf76ce95 cx2341x_fill_defaults +EXPORT_SYMBOL drivers/media/common/cx2341x 0xcf8b77a4 cx2341x_mpeg_ctrls +EXPORT_SYMBOL drivers/media/common/cypress_firmware 0x9cd49d76 cypress_load_firmware +EXPORT_SYMBOL drivers/media/common/tveeprom 0x223d20fd tveeprom_read +EXPORT_SYMBOL drivers/media/common/tveeprom 0x8f6a855a tveeprom_hauppauge_analog +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x08c0ecf2 dvb_ringbuffer_read +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x0a2fd3f6 dvb_generic_open +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x0d3c856a dvb_ringbuffer_empty +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x12f5425e dvb_ringbuffer_flush +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x14fdf0ee dvb_ringbuffer_write_user +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x3405dbfc dvb_ringbuffer_avail +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x3b8f7120 dvb_register_device +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x438dca49 dvb_dmx_swfilter_packets +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x4bcc287d dvb_dmx_swfilter_204 +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x4cf3b0d9 dvb_ringbuffer_read_user +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x59f5134e dvb_dmx_swfilter +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x6400592b dvb_unregister_adapter +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x6560e532 dvb_ringbuffer_write +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x6b6b7124 dvb_frontend_reinitialise +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x6eb94878 dvb_unregister_frontend +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x70b8ab58 dvb_dmx_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x74a5a698 dvb_filter_pes2ts_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x75d584c0 dvb_register_frontend +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x76878967 dvb_dmx_swfilter_raw +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x7a09e7e3 dvb_generic_ioctl +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x7b832966 dvb_net_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x7c3dbf11 dvb_net_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x7dc975a7 dvb_ca_en50221_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x7e9da480 dvb_register_adapter +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x80e3832d dvb_filter_get_ac3info +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x85f27dbc dvb_ca_en50221_frda_irq +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x8bcbbafd dvb_ringbuffer_free +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x8d469ee9 dvb_frontend_resume +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x9a58529b dvb_dmx_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x9ceb3e23 dvb_unregister_device +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xa11e5bd7 dvb_ca_en50221_camchange_irq +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xa1578a41 dvb_ca_en50221_camready_irq +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xa24eff08 dvb_generic_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xac4ca1b0 intlog2 +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xd2bbcd50 dvb_frontend_suspend +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xd8988b7b dvb_ringbuffer_flush_spinlock_wakeup +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xdbe1549e dvb_dmxdev_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xe5ae8707 intlog10 +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xeaf47cb5 dvb_ringbuffer_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xef9af060 dvb_ca_en50221_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xf3be381b dvb_frontend_detach +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xf821d629 dvb_frontend_sleep_until +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xf826deb0 dvb_filter_pes2ts +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xfb83f1bf dvb_dmxdev_init +EXPORT_SYMBOL drivers/media/dvb-frontends/a8293 0x96d37276 a8293_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/af9013 0x620144ca af9013_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/atbm8830 0xd998dd5f atbm8830_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x270cbaae au8522_analog_i2c_gate_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x2836bd36 au8522_readreg +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x444bd106 au8522_release_state +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x7eeffb20 au8522_writereg +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x8ffb89a5 au8522_init +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x94189b77 au8522_led_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0xb240f3cd au8522_get_state +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0xbd86b729 au8522_i2c_gate_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0xe892860a au8522_sleep +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_dig 0xfd68d728 au8522_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/bcm3510 0x67f46b48 bcm3510_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx22700 0xc7659e1f cx22700_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx22702 0xf135d978 cx22702_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24110 0x08fc52c3 cx24110_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24113 0x5b060600 cx24113_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24113 0x9ab37e32 cx24113_agc_callback +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24116 0x4919a1d4 cx24116_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24120 0xc0497a75 cx24120_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24123 0x9d28b1c6 cx24123_get_tuner_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24123 0xdae776f0 cx24123_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cxd2820r 0xe5d6e289 cxd2820r_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0x255ceb61 dib0070_get_rf_output +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0x2fb856fb dib0070_set_rf_output +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0x8dfb54c8 dib0070_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0x98bf79e5 dib0070_wbd_offset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0xdb7cd951 dib0070_ctrl_agc_filter +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x049fcf2a dib0090_get_current_gain +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x227f6573 dib0090_set_tune_state +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x243630f4 dib0090_update_tuning_table_7090 +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x266275d9 dib0090_get_tune_state +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x44a0a2c8 dib0090_fw_register +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x5cad00d0 dib0090_register +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x64155192 dib0090_get_wbd_target +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x655d3108 dib0090_dcc_freq +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x6d5b595e dib0090_set_dc_servo +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x6d6b5702 dib0090_update_rframp_7090 +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x6ec0958d dib0090_set_vga +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xc7e7b1ad dib0090_get_wbd_offset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xd355a3f3 dib0090_set_switch +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xd79db180 dib0090_gain_control +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xea3b2b1d dib0090_pwm_gain_reset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mb 0xd249006c dib3000mb_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x0883b289 dib3000mc_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x1d06cfe0 dib3000mc_get_tuner_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x2b64e160 dib3000mc_set_config +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0xcff59797 dib3000mc_i2c_enumeration +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0xe4bb9ac5 dib3000mc_pid_control +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0xe725e9cd dib3000mc_pid_parse +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0x5b20bdf9 dib7000m_pid_filter +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0xc5dc3e21 dib7000m_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0xc622bbab dib7000m_get_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0xea352461 dib7000m_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0x1ed2a536 dib7000p_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x639ba57c dib8000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0x47931731 dibx000_reset_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0x74232af4 dibx000_i2c_set_speed +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0x878bc92d dibx000_get_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0x9972d726 dibx000_exit_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0xad3ad91c systime +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0xbb1d54d1 dibx000_init_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/drx39xyj/drx39xyj 0xfd125c9d drx39xxj_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/drxd 0x643fba35 drxd_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/drxk 0xdfd7b0f5 drxk_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ds3000 0x801c96f6 ds3000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dvb-pll 0x7dbbe778 dvb_pll_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ec100 0x35897db8 ec100_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/isl6405 0x5715a242 isl6405_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/isl6421 0xa6fa252e isl6421_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/isl6423 0xf5071bc6 isl6423_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/itd1000 0x91bc0a83 itd1000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ix2505v 0x0cea5c7f ix2505v_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/l64781 0x50b6d718 l64781_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lg2160 0xb8eecb3a lg2160_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgdt3305 0x1b30a291 lgdt3305_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgdt3306a 0xf05a5a8e lgdt3306a_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgdt330x 0x6ee94acd lgdt330x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgs8gxx 0x41e08585 lgs8gxx_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lnbp21 0x0a886cb7 lnbh24_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lnbp21 0xed14da52 lnbp21_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lnbp22 0xf15c9388 lnbp22_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/m88ds3103 0x46997ee9 m88ds3103_get_agc_pwm +EXPORT_SYMBOL drivers/media/dvb-frontends/m88ds3103 0xac56d6c2 m88ds3103_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/m88rs2000 0xdbaff288 m88rs2000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mb86a16 0xdf6c34dd mb86a16_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mb86a20s 0xc6534daf mb86a20s_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mt312 0x9ad34172 mt312_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mt352 0xd4f9b7ca mt352_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/nxt200x 0xa9cb77e8 nxt200x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/nxt6000 0x2d94b424 nxt6000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/or51132 0x121587dd or51132_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/or51211 0x5192cceb or51211_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1409 0xda6d0ad8 s5h1409_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1411 0x629453e9 s5h1411_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1420 0x866b416a s5h1420_get_tuner_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1420 0x93e1e861 s5h1420_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s921 0xc4cdcd84 s921_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/si2165 0x3e08d849 si2165_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/si21xx 0x4e62bba7 si21xx_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/sp8870 0x21b2594b sp8870_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/sp887x 0x72079b8a sp887x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stb0899 0x1ceec204 stb0899_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stb6000 0x617595db stb6000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stb6100 0x1e5a2e4c stb6100_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0288 0x86a74b44 stv0288_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0297 0xccdf91a1 stv0297_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0299 0xf773900b stv0299_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0367 0xbc86ec7f stv0367ter_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0367 0xbfdfd465 stv0367cab_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0900 0x3ef82698 stv0900_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv090x 0x2c03eea2 stv090x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv6110 0x8599d83f stv6110_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv6110x 0x3b11fb74 stv6110x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10021 0xe7c68303 tda10021_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10023 0xf1cfd50f tda10023_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10048 0x995372b2 tda10048_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda1004x 0x06187ac7 tda10045_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda1004x 0x320dd2af tda10046_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10071 0xf1908c4c tda10071_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10086 0x820a36ec tda10086_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda665x 0x4d14fb2a tda665x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda8083 0xaadf9e43 tda8083_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda8261 0x28c855c3 tda8261_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda826x 0x66263b94 tda826x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ts2020 0xdc2ce4b6 ts2020_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tua6100 0xaabf081a tua6100_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ves1820 0x8d924434 ves1820_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ves1x93 0xc7aa8d58 ves1x93_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/zl10036 0x30a7eaee zl10036_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/zl10039 0x35fb8c73 zl10039_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/zl10353 0x7f6bda56 zl10353_attach +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x31d94f7a flexcop_dma_config +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x76282745 flexcop_dma_control_size_irq +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x96e04b1a flexcop_dma_free +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x9ac52bfc flexcop_dma_config_timer +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0xac2c021f flexcop_dma_xfer_control +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0xae95be69 flexcop_dma_allocate +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0xeb721ad1 flexcop_dma_control_timer_irq +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0x4783eb5c bt878_start +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0x70e3453f bt878 +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0x72437146 bt878_device_control +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0xd5d0bdef bt878_num +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0xe2a1ec36 bt878_stop +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0x11dc4b6d bttv_gpio_enable +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0x2a657a14 bttv_sub_unregister +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0x875599f2 bttv_get_pcidev +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0x8ecf4acc bttv_write_gpio +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0xaa8ed488 bttv_sub_register +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0xbcf2d2fb bttv_read_gpio +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x43df2007 dst_attach +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x54f07015 write_dst +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x59afd380 dst_error_bailout +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x73d398b6 dst_error_recovery +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x78c445e3 dst_comm_init +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xa859e3ed read_dst +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xe06e7eb1 rdc_reset_state +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xe94b8c9c dst_check_sum +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xf565c5d8 dst_pio_disable +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xf89add1a dst_wait_dst_ready +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst_ca 0x330e91b7 dst_ca_attach +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x15f58bb1 cx18_ext_init +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x1773ed42 cx18_claim_stream +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x2cdea06d cx18_reset_ir_gpio +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x6d9aa6f0 cx18_start_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x7ab4fbce cx18_release_stream +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0xa57cbca9 cx18_stop_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/cx23885/altera-ci 0x38edd627 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 0x17e56eac cx25821_sram_channel_dump_audio +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x425b4a0f cx25821_dev_unregister +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x784853c3 cx25821_print_irqbits +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x88cb5ab6 cx25821_sram_channel_setup_audio +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x9e1d2799 cx25821_set_gpiopin_direction +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x9f0b70c6 cx25821_riscmem_alloc +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xac7dab98 cx25821_dev_get +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xc5d38741 cx25821_sram_channels +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xfdc6eb9b cx25821_risc_databuffer_audio +EXPORT_SYMBOL drivers/media/pci/cx88/cx88-vp3054-i2c 0x21d75359 vp3054_i2c_remove +EXPORT_SYMBOL drivers/media/pci/cx88/cx88-vp3054-i2c 0xb6dfeaf0 vp3054_i2c_probe +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0x04f31612 cx88_video_mux +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0x066e1fcf cx88_set_freq +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0x599adcef cx88_enum_input +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0xb60a8f6d cx88_querycap +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x02700fdc cx8802_buf_prepare +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x0e5a6c67 cx8802_buf_queue +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x17a74a3c cx8802_get_driver +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x29180d48 cx8802_start_dma +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x65115b6d cx8802_cancel_buffers +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x7af17e80 cx8802_register_driver +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0xeaba6277 cx8802_unregister_driver +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x123ab579 cx88_ir_stop +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x1a18575b cx88_vdev_init +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x2325855b cx88_set_tvnorm +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x249e14ad cx88_shutdown +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x2c07cd67 cx88_set_scale +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x3483c273 cx88_dsp_detect_stereo_sap +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x4216fc84 cx88_sram_channels +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x454b425d cx88_set_tvaudio +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x495282f0 cx88_newstation +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x563cc919 cx88_reset +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x6141c8c5 cx88_tuner_callback +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x68dc3c37 cx88_get_stereo +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x6fd7f1e2 cx88_sram_channel_setup +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x7642ed3c cx88_print_irqbits +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x7c4ac705 cx88_risc_databuffer +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x7ed4948c cx88_sram_channel_dump +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x904b8696 cx88_audio_thread +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xa00f57eb cx88_set_stereo +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xa11a945c cx88_core_irq +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xa9d07b40 cx88_core_put +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xad17f8d6 cx88_core_get +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xbbd2cb24 cx88_risc_buffer +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xbcc5f564 cx88_ir_start +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xd862d58c cx88_wakeup +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x0484997c ivtv_ext_init +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x09748f57 ivtv_release_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x1301a894 ivtv_claim_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x14f67530 ivtv_debug +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x1ad9a957 ivtv_udma_prepare +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x2d4150c7 ivtv_init_on_first_open +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x2e8543fb ivtv_clear_irq_mask +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x31615120 ivtv_udma_setup +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x3646c334 ivtv_api +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x5b5ac9f8 ivtv_reset_ir_gpio +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x723d9204 ivtv_start_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x7b7060ed ivtv_udma_alloc +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xb314bc26 ivtv_set_irq_mask +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xd15bf558 ivtv_firmware_check +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xda5503f7 ivtv_vapi_result +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xde0cd06c ivtv_vapi +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xe5598b8e ivtv_udma_unmap +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xf328f78d ivtv_stop_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x04e83446 saa7134_tuner_callback +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x10aeddaf saa7134_ts_register +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x1211df5d saa7134_devlist +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x1d4dfa0b saa7134_pgtable_build +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x33522eb1 saa7134_pgtable_alloc +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x68dd0d03 saa7134_set_gpio +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x71ddd17b saa7134_dmasound_exit +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x75c66969 saa7134_boards +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x85e9898a saa7134_dmasound_init +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x8e709ec3 saa7134_tvaudio_setmute +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x92fdc77c saa_dsp_writel +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x989fdf6d saa7134_set_dmabits +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xd1e40a8d saa7134_devlist_lock +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xe4150b6f saa7134_pgtable_free +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xfa87a3c3 saa7134_ts_unregister +EXPORT_SYMBOL drivers/media/pci/ttpci/ttpci-eeprom 0xc3e4c127 ttpci_eeprom_decode_mac +EXPORT_SYMBOL drivers/media/pci/ttpci/ttpci-eeprom 0xdf9278d3 ttpci_eeprom_parse_mac +EXPORT_SYMBOL drivers/media/pci/zoran/videocodec 0x38521d4c videocodec_attach +EXPORT_SYMBOL drivers/media/pci/zoran/videocodec 0x7d141eee videocodec_register +EXPORT_SYMBOL drivers/media/pci/zoran/videocodec 0xd4f604d8 videocodec_detach +EXPORT_SYMBOL drivers/media/pci/zoran/videocodec 0xd84cce3b videocodec_unregister +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x15cba9fa soc_camera_power_off +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x287fb0c3 soc_camera_apply_board_flags +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x49f45db4 soc_camera_host_register +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x6c0667f0 soc_camera_host_unregister +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x83fc448b soc_camera_power_on +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0xa066a6fd soc_camera_xlate_by_fourcc +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0xeabb79fe soc_camera_power_init +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0x25c52d97 soc_mbus_samples_per_pixel +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0x2863728e soc_mbus_image_size +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0x29f5a98b soc_mbus_get_fmtdesc +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0x5f3e3558 soc_mbus_bytes_per_line +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0xc8b28da5 soc_mbus_config_compatible +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0xdc5dafe2 soc_mbus_find_fmtdesc +EXPORT_SYMBOL drivers/media/radio/tea575x 0x2bb31ed0 snd_tea575x_hw_init +EXPORT_SYMBOL drivers/media/radio/tea575x 0x7e229094 snd_tea575x_exit +EXPORT_SYMBOL drivers/media/radio/tea575x 0xd83962c7 snd_tea575x_g_tuner +EXPORT_SYMBOL drivers/media/radio/tea575x 0xf48d14d1 snd_tea575x_s_hw_freq_seek +EXPORT_SYMBOL drivers/media/radio/tea575x 0xf4bd9d8b snd_tea575x_init +EXPORT_SYMBOL drivers/media/radio/tea575x 0xf50f4ef7 snd_tea575x_set_freq +EXPORT_SYMBOL drivers/media/radio/tea575x 0xfda8c13a snd_tea575x_enum_freq_bands +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x04dca738 lirc_unregister_driver +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x081c577d lirc_dev_fop_open +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x16d4ed20 lirc_dev_fop_read +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x28d0dd5b lirc_get_pdata +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x29251982 lirc_dev_fop_close +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x29bbd2dc lirc_dev_fop_poll +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x97726ccf lirc_dev_fop_write +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x99bc2f38 lirc_register_driver +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0xf20ef014 lirc_dev_fop_ioctl +EXPORT_SYMBOL drivers/media/rc/rc-core 0xe3e711df ir_raw_handler_register +EXPORT_SYMBOL drivers/media/rc/rc-core 0xf3d0ffbe ir_raw_handler_unregister +EXPORT_SYMBOL drivers/media/tuners/fc0011 0x1155faaa fc0011_attach +EXPORT_SYMBOL drivers/media/tuners/fc0012 0xcd0c8157 fc0012_attach +EXPORT_SYMBOL drivers/media/tuners/fc0013 0x4f7b7fb5 fc0013_rc_cal_add +EXPORT_SYMBOL drivers/media/tuners/fc0013 0xa0e3ceaf fc0013_rc_cal_reset +EXPORT_SYMBOL drivers/media/tuners/fc0013 0xdd1e9d62 fc0013_attach +EXPORT_SYMBOL drivers/media/tuners/max2165 0x26d39c62 max2165_attach +EXPORT_SYMBOL drivers/media/tuners/mc44s803 0x08b5a259 mc44s803_attach +EXPORT_SYMBOL drivers/media/tuners/mt2060 0x20fbf224 mt2060_attach +EXPORT_SYMBOL drivers/media/tuners/mt2131 0x18b34501 mt2131_attach +EXPORT_SYMBOL drivers/media/tuners/mt2266 0x02cbd6b1 mt2266_attach +EXPORT_SYMBOL drivers/media/tuners/mxl5005s 0xec2a095d mxl5005s_attach +EXPORT_SYMBOL drivers/media/tuners/qt1010 0x7b64d59b qt1010_attach +EXPORT_SYMBOL drivers/media/tuners/tda18218 0x14bcc0a6 tda18218_attach +EXPORT_SYMBOL drivers/media/tuners/tuner-types 0x0cb4b189 tuners +EXPORT_SYMBOL drivers/media/tuners/tuner-types 0xc2821775 tuner_count +EXPORT_SYMBOL drivers/media/tuners/tuner-xc2028 0x923a1995 xc2028_attach +EXPORT_SYMBOL drivers/media/tuners/xc4000 0x5e2e0dc7 xc4000_attach +EXPORT_SYMBOL drivers/media/tuners/xc5000 0x3b0732b8 xc5000_attach +EXPORT_SYMBOL drivers/media/usb/cx231xx/cx231xx 0x593c2341 cx231xx_unregister_extension +EXPORT_SYMBOL drivers/media/usb/cx231xx/cx231xx 0x9799cd9b cx231xx_register_extension +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x24573c62 dvb_usbv2_generic_rw_locked +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x2d738e08 dvb_usbv2_suspend +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x56cd1c0f dvb_usbv2_resume +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x6355daca dvb_usbv2_generic_rw +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x88a367ab dvb_usbv2_generic_write_locked +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0xa24aaae4 dvb_usbv2_disconnect +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0xb840f9ca dvb_usbv2_reset_resume +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0xc7e435b2 dvb_usbv2_generic_write +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0xf537b63b dvb_usbv2_probe +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x28f2a62d usb_cypress_load_firmware +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x2df35e86 dvb_usb_generic_write +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x5f9c4e49 dvb_usb_nec_rc_key_to_event +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x66cebbec dvb_usb_generic_rw +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x791b9226 dvb_usb_device_init +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0xbbdff1a2 dvb_usb_get_hexline +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0xc0e8d68e dvb_usb_device_exit +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-af9005-remote 0x13e247e0 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 0xd5d46e0c af9005_rc_decode +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x01683e7b dibusb_read_eeprom_byte +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x1f60e08e dibusb_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x4f1a9616 dibusb_dib3000mc_frontend_attach +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x5ccfd052 dibusb2_0_streaming_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x79db31a1 dibusb_power_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x7f8bb113 dibusb_streaming_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x990c15c8 dibusb_i2c_algo +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xa2c33fdb dibusb2_0_power_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xb47559e0 rc_map_dibusb_table +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xd65dde7e dibusb_pid_filter +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xd7256f15 dibusb_dib3000mc_tuner_attach +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xe347ff91 dibusb_rc_query +EXPORT_SYMBOL drivers/media/usb/em28xx/em28xx 0x8e5644c2 em28xx_register_extension +EXPORT_SYMBOL drivers/media/usb/em28xx/em28xx 0xa2d0ef49 em28xx_unregister_extension +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x26744c38 go7007_read_addr +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x2f52c921 go7007_update_board +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x53ab35d0 go7007_register_encoder +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x831a635d go7007_parse_video_stream +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x9aaa8a40 go7007_read_interrupt +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0xa1afaf2f go7007_boot_encoder +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0xaded11cb go7007_snd_remove +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0xb0b6ff1a go7007_snd_init +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0xeae78596 go7007_alloc +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x0d32e198 gspca_expo_autogain +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x2d27bb0f gspca_frame_add +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x813b968e gspca_dev_probe +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x917b7619 gspca_disconnect +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x9670af2c gspca_debug +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0xa15a8863 gspca_dev_probe2 +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0xa8d178c9 gspca_suspend +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0xb6b5b0de gspca_resume +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0xf5364782 gspca_coarse_grained_expo_autogain +EXPORT_SYMBOL drivers/media/usb/tm6000/tm6000 0x393a0f5a tm6000_register_extension +EXPORT_SYMBOL drivers/media/usb/tm6000/tm6000 0x68e22ce4 tm6000_unregister_extension +EXPORT_SYMBOL drivers/media/usb/tm6000/tm6000 0xc0db6f3d tm6000_init_digital_mode +EXPORT_SYMBOL drivers/media/usb/ttusb-dec/ttusbdecfe 0x9784d5d4 ttusbdecfe_dvbt_attach +EXPORT_SYMBOL drivers/media/usb/ttusb-dec/ttusbdecfe 0xbc43d41e ttusbdecfe_dvbs_attach +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-common 0xabe27502 v4l2_ctrl_query_fill +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-mem2mem 0x2dead51f v4l2_m2m_job_finish +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-mem2mem 0x459e133f v4l2_m2m_get_curr_priv +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-mem2mem 0xb5496a5f v4l2_m2m_mmap +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-mem2mem 0xea369e2f v4l2_m2m_get_vq +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0x071eba9f videobuf_dvb_register_bus +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0x914fe1ba videobuf_dvb_get_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0xae6d997a videobuf_dvb_find_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0xc02aa334 videobuf_dvb_dealloc_frontends +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0xd8f73e35 videobuf_dvb_alloc_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0xe6f1a808 videobuf_dvb_unregister_bus +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-core 0x5233544d vb2_querybuf +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0x44fcc3e6 vb2_dvb_get_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0x5686853b vb2_dvb_alloc_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0x7ae560f9 vb2_dvb_register_bus +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0xcffbee42 vb2_dvb_dealloc_frontends +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0xd3477fee vb2_dvb_find_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0xee2f9303 vb2_dvb_unregister_bus +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x018e2b95 v4l2_ctrl_handler_setup +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x03f03a34 video_device_alloc +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x046176d7 v4l2_ctrl_handler_free +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x0614dd5a v4l2_video_std_frame_period +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x0cad8ac6 v4l2_clk_set_rate +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x0ebdddef v4l2_ctrl_new_std +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x116e0ab2 v4l2_ctrl_log_status +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 0x1787bd4a v4l2_ctrl_sub_ev_ops +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x185ff1f6 v4l2_ctrl_grab +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x191ac5e6 v4l2_clk_unregister +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x1b5c0864 v4l2_ctrl_merge +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x1ecbcc53 __v4l2_ctrl_s_ctrl_string +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x1ee2357f v4l2_ctrl_new_int_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x1f4efa68 v4l2_ctrl_subdev_log_status +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x2342f1ae v4l2_prio_open +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x28c01b5d v4l2_ctrl_g_ctrl_int64 +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x2eb80088 v4l2_ctrl_new_custom +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x316945d1 v4l2_ctrl_subscribe_event +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x35e42eef v4l2_async_notifier_register +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x36847d11 v4l2_ctrl_get_int_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x3ac2e258 v4l2_ctrl_find +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x3adbd595 v4l2_field_names +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x3bb9a123 v4l2_querymenu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x3bdd0f94 v4l2_prio_change +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x415402f7 v4l2_clk_disable +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x458fcb9b v4l2_async_register_subdev +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x45a44c24 v4l2_ctrl_fill +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x46b97623 v4l2_async_unregister_subdev +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x495426ee v4l2_ctrl_get_name +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x4ade76eb v4l2_subdev_init +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x4b77c88d v4l2_ctrl_replace +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x4c1e21fc __v4l2_ctrl_modify_range +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x4ce5d7d1 v4l2_query_ext_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x4d26efa4 v4l2_ctrl_add_handler +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x4db26dc6 v4l2_queryctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x4eef7ec6 v4l2_ctrl_handler_init_class +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x50e38fd6 __v4l2_ctrl_s_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x526ecfb8 v4l2_s_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x52a29bf7 video_usercopy +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x53db5c2c v4l2_ctrl_poll +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x5444d37f v4l2_subdev_s_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x54bf361d v4l2_ctrl_add_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x558d9255 v4l2_subdev_s_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x5b6bd96b v4l2_ctrl_handler_log_status +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x68b99fe1 v4l2_ctrl_subdev_subscribe_event +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x69bcc1a2 v4l2_clk_register +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x6e0ef01e v4l2_ctrl_auto_cluster +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x6f011a0c video_device_release +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x7a3cd015 v4l2_ctrl_get_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x7f717357 v4l2_ctrl_g_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x8106095a v4l2_prio_max +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x815e3d0a video_unregister_device +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x8608bace __v4l2_ctrl_s_ctrl_int64 +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x8866d3b0 v4l2_ctrl_activate +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x8adc1f92 v4l2_clk_get_rate +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x8e3abb26 video_device_release_empty +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x9736ca06 v4l2_ctrl_new_std_menu_items +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x9a6b7e55 v4l2_subdev_g_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xa46c65d6 v4l2_ctrl_radio_filter +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xa855f275 v4l2_clk_get +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb08fbc0e v4l2_try_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb77b0159 v4l2_prio_init +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb855511e v4l2_clk_put +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb8f5bd28 v4l2_ctrl_notify +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xbc5671dc v4l_printk_ioctl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xbd773e1e v4l2_ctrl_new_std_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xbf95e4c3 v4l2_clk_unregister_fixed +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xc09697b5 v4l2_g_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xc6b4879c v4l2_g_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xca0d5a91 video_devdata +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xcda04a5b v4l2_prio_close +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xcee56b3e v4l2_clk_enable +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xcfbda1b0 v4l2_async_notifier_unregister +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xd18d3ab4 __video_register_device +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xd6fa7266 video_ioctl2 +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xde4c4375 v4l2_ctrl_cluster +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe2b92059 v4l2_video_std_construct +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf3251e7b v4l2_norm_to_name +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf7ac6204 v4l2_subdev_g_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf85745e6 v4l2_subdev_try_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf8e5e0d5 __v4l2_clk_register_fixed +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf979c1ea v4l2_s_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xfb3bc86e v4l2_subdev_queryctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xff7009e6 v4l2_subdev_querymenu +EXPORT_SYMBOL drivers/memstick/core/memstick 0x0216aab1 memstick_new_req +EXPORT_SYMBOL drivers/memstick/core/memstick 0x046e2e3c memstick_add_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x0c60a63b memstick_free_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x2579cc14 memstick_unregister_driver +EXPORT_SYMBOL drivers/memstick/core/memstick 0x4233a465 memstick_register_driver +EXPORT_SYMBOL drivers/memstick/core/memstick 0x4cdd943e memstick_resume_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x5d820a02 memstick_init_req_sg +EXPORT_SYMBOL drivers/memstick/core/memstick 0x690bb40f memstick_remove_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x8c956bde memstick_next_req +EXPORT_SYMBOL drivers/memstick/core/memstick 0xa4529f84 memstick_detect_change +EXPORT_SYMBOL drivers/memstick/core/memstick 0xdc07e67e memstick_init_req +EXPORT_SYMBOL drivers/memstick/core/memstick 0xe55da954 memstick_suspend_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0xe7fe81a5 memstick_alloc_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0xeeae92fd memstick_set_rw_addr +EXPORT_SYMBOL drivers/memstick/host/r592 0x52f1b23b memstick_debug_get_tpc_name +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x084c375f mpt_raid_phys_disk_get_num_paths +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x1173f563 mpt_clear_taskmgmt_in_progress_flag +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x126affa7 mpt_device_driver_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x168da480 mpt_attach +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x19c88b7d mpt_put_msg_frame_hi_pri +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x1fd03720 mpt_event_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x27fc1e29 mpt_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x34638afc mpt_get_msg_frame +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x36813fe4 mpt_put_msg_frame +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x4526289b mpt_event_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x4914cf52 mpt_raid_phys_disk_pg1 +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x4b6dfc8a mpt_suspend +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x4d6e966c mpt_GetIocState +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x4d923a23 mpt_print_ioc_summary +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x4f635a95 mpt_raid_phys_disk_pg0 +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x502108d0 mpt_fwfault_debug +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x504de4a0 mptbase_sas_persist_operation +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x5b748222 mpt_verify_adapter +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x5cd42755 mpt_HardResetHandler +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x67d2bb42 mpt_findImVolumes +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x6d5da63f mpt_config +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x8ab88567 mpt_detach +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x8bfb8db1 mpt_set_taskmgmt_in_progress_flag +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x9789723a mpt_resume +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xa0fd1cb1 mpt_send_handshake_request +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xa5f0363c mpt_halt_firmware +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xb534b559 mpt_Soft_Hard_ResetHandler +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xc0e69f82 mpt_device_driver_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xc15720d5 mpt_free_msg_frame +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xc47c22e8 mpt_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xd0ee1fde mpt_reset_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xd4503d74 mpt_alloc_fw_memory +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xd9a92a75 mpt_reset_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xdd805159 ioc_list +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xe4770521 mpt_free_fw_memory +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x111cfc96 mptscsih_ioc_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x18bb8731 mptscsih_shutdown +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x1f9254df mptscsih_qcmd +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x3238f68d mptscsih_host_attrs +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x3b844453 mptscsih_taskmgmt_response_code +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x3e1cd68d mptscsih_bus_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x4242c364 mptscsih_remove +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x6796c758 mptscsih_show_info +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x6a07ada3 mptscsih_io_done +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x7768e83c mptscsih_taskmgmt_complete +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x7b056a8e mptscsih_flush_running_cmds +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x8628086b mptscsih_IssueTaskMgmt +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x8c00319e mptscsih_slave_destroy +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x9a31250b mptscsih_dev_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xa0f4cdb7 mptscsih_suspend +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xa29ffe13 mptscsih_slave_configure +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xa45ed374 mptscsih_change_queue_depth +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xb2db2e6e mptscsih_get_scsi_lookup +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xb4f3a195 mptscsih_bios_param +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xb9e279db mptscsih_abort +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xbc5749d6 mptscsih_resume +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xc1de4c1f mptscsih_event_process +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xc4beca8f mptscsih_is_phys_disk +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xdcfd30b3 mptscsih_scandv_complete +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xebf36642 mptscsih_host_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xec5f5580 mptscsih_raid_id_to_num +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xf3e49b19 mptscsih_info +EXPORT_SYMBOL drivers/mfd/cros_ec 0x66415553 cros_ec_resume +EXPORT_SYMBOL drivers/mfd/cros_ec 0x6c7a450f cros_ec_register +EXPORT_SYMBOL drivers/mfd/cros_ec 0xe7107972 cros_ec_suspend +EXPORT_SYMBOL drivers/mfd/cros_ec 0xfcd1e2e2 cros_ec_remove +EXPORT_SYMBOL drivers/mfd/dln2 0x3a1cceb2 dln2_unregister_event_cb +EXPORT_SYMBOL drivers/mfd/dln2 0x68e6ffec dln2_transfer +EXPORT_SYMBOL drivers/mfd/dln2 0x7577d325 dln2_register_event_cb +EXPORT_SYMBOL drivers/mfd/htc-pasic3 0xa00818c1 pasic3_read_register +EXPORT_SYMBOL drivers/mfd/htc-pasic3 0xe36d1193 pasic3_write_register +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x1e2127f8 mc13xxx_unlock +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x4673f84f mc13xxx_reg_read +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x4847f193 mc13xxx_irq_mask +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x55dab9e2 mc13xxx_irq_unmask +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x67e161f6 mc13xxx_get_flags +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x977bc80f mc13xxx_irq_free +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x9d7ecbb3 mc13xxx_irq_request +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xbcb84b4d mc13xxx_irq_status +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xc1d298ac mc13xxx_lock +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xc5d32a64 mc13xxx_reg_rmw +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xcbbf8a66 mc13xxx_reg_write +EXPORT_SYMBOL drivers/mfd/tps6105x 0x478b3e35 tps6105x_mask_and_set +EXPORT_SYMBOL drivers/mfd/tps6105x 0x66e8232f tps6105x_set +EXPORT_SYMBOL drivers/mfd/tps6105x 0xbe245ab9 tps6105x_get +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-irq 0x291f1235 wm8994_irq_init +EXPORT_SYMBOL drivers/mfd/wm8994-irq 0xc7343f61 wm8994_irq_exit +EXPORT_SYMBOL drivers/mfd/wm8994-regmap 0x525b7ef0 wm8958_regmap_config +EXPORT_SYMBOL drivers/mfd/wm8994-regmap 0x6061c569 wm8994_regmap_config +EXPORT_SYMBOL drivers/mfd/wm8994-regmap 0x9f846538 wm8994_base_regmap_config +EXPORT_SYMBOL drivers/mfd/wm8994-regmap 0xcd397cdd wm1811_regmap_config +EXPORT_SYMBOL drivers/misc/ad525x_dpot 0x1be7029e ad_dpot_probe +EXPORT_SYMBOL drivers/misc/ad525x_dpot 0x6b97fafb ad_dpot_remove +EXPORT_SYMBOL drivers/misc/altera-stapl/altera-stapl 0x483c4f11 altera_init +EXPORT_SYMBOL drivers/misc/c2port/core 0x0f70592c c2port_device_register +EXPORT_SYMBOL drivers/misc/c2port/core 0x1f23f295 c2port_device_unregister +EXPORT_SYMBOL drivers/misc/ioc4 0x9f9c951a ioc4_register_submodule +EXPORT_SYMBOL drivers/misc/ioc4 0xa312af9a ioc4_unregister_submodule +EXPORT_SYMBOL drivers/misc/mei/mei 0x2e409d94 __tracepoint_mei_reg_write +EXPORT_SYMBOL drivers/misc/mei/mei 0xbcb373db __tracepoint_mei_reg_read +EXPORT_SYMBOL drivers/misc/tifm_core 0x06167eb5 tifm_alloc_device +EXPORT_SYMBOL drivers/misc/tifm_core 0x06a5d0a8 tifm_remove_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0x21e66d4e tifm_eject +EXPORT_SYMBOL drivers/misc/tifm_core 0x3179de7a tifm_map_sg +EXPORT_SYMBOL drivers/misc/tifm_core 0x47fec778 tifm_unregister_driver +EXPORT_SYMBOL drivers/misc/tifm_core 0x58add2fc tifm_register_driver +EXPORT_SYMBOL drivers/misc/tifm_core 0x70edf984 tifm_free_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0xa8c2ec46 tifm_queue_work +EXPORT_SYMBOL drivers/misc/tifm_core 0xb2cbb0f9 tifm_free_device +EXPORT_SYMBOL drivers/misc/tifm_core 0xdb8f52b4 tifm_unmap_sg +EXPORT_SYMBOL drivers/misc/tifm_core 0xed836628 tifm_add_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0xfaf5d269 tifm_has_ms_pif +EXPORT_SYMBOL drivers/misc/tifm_core 0xfdef637a tifm_alloc_adapter +EXPORT_SYMBOL drivers/mmc/card/mmc_block 0x3deee571 mmc_cleanup_queue +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x425f86b3 cfi_varsize_frob +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x695d3d34 cfi_send_gen_cmd +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x6a06be75 cfi_build_cmd +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x91afaead cfi_build_cmd_addr +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0xa146463f cfi_fixup +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0xe6c33778 cfi_read_pri +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0xee38fd65 cfi_merge_status +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0xff9fa623 cfi_udelay +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0x27c9bfbe register_mtd_chip_driver +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0x73d69a89 map_destroy +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0x833452ea do_map_probe +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0xbb1cbb8b unregister_mtd_chip_driver +EXPORT_SYMBOL drivers/mtd/chips/gen_probe 0xaeddbbb8 mtd_do_chip_probe +EXPORT_SYMBOL drivers/mtd/lpddr/lpddr_cmds 0x079a1356 lpddr_cmdset +EXPORT_SYMBOL drivers/mtd/maps/map_funcs 0xb9a6eb59 simple_map_init +EXPORT_SYMBOL drivers/mtd/mtd 0x0e9479ce mtd_concat_destroy +EXPORT_SYMBOL drivers/mtd/mtd 0x35feb95c mtd_concat_create +EXPORT_SYMBOL drivers/mtd/nand/denali 0x2d5f310e denali_init +EXPORT_SYMBOL drivers/mtd/nand/denali 0x2fec3e69 denali_remove +EXPORT_SYMBOL drivers/mtd/nand/nand 0x0d60233c nand_unlock +EXPORT_SYMBOL drivers/mtd/nand/nand 0x494eac17 nand_scan_ident +EXPORT_SYMBOL drivers/mtd/nand/nand 0x5b8b6022 nand_scan_tail +EXPORT_SYMBOL drivers/mtd/nand/nand 0xa80492bc nand_lock +EXPORT_SYMBOL drivers/mtd/nand/nand 0xd5835e7a nand_scan +EXPORT_SYMBOL drivers/mtd/nand/nand 0xef859391 onfi_async_timing_mode_to_sdr_timings +EXPORT_SYMBOL drivers/mtd/nand/nand 0xf6a2228f nand_scan_bbt +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0x70097aa0 nand_bch_free +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0x993ff084 nand_bch_correct_data +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0xb5d9c45d nand_bch_init +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0xcc27f4c3 nand_bch_calculate_ecc +EXPORT_SYMBOL drivers/mtd/nand/nand_ecc 0x2ed7f7eb nand_calculate_ecc +EXPORT_SYMBOL drivers/mtd/nand/nand_ecc 0x3132ee65 __nand_calculate_ecc +EXPORT_SYMBOL drivers/mtd/nand/nand_ecc 0xa447abe5 nand_correct_data +EXPORT_SYMBOL drivers/mtd/nand/nand_ecc 0xb4b94377 __nand_correct_data +EXPORT_SYMBOL drivers/mtd/nand/nand_ids 0x8cfcf75c nand_flash_ids +EXPORT_SYMBOL drivers/mtd/nand/nand_ids 0xa336feb7 nand_manuf_ids +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0x05904235 onenand_scan_bbt +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0x0f35ead0 flexonenand_region +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0x20b62e29 onenand_addr +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0x5e0526f5 onenand_default_bbt +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x062224a3 arcnet_timeout +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x3706460c arc_raw_proto +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x42c6cc2a arcnet_close +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x4469c4b9 alloc_arcdev +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x4dabb757 arc_proto_map +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x580e7d67 arcnet_send_packet +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x6534792a arcnet_debug +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x8d8c98f1 arc_bcast_proto +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xa03de42b arc_proto_default +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xb4562a1d arcnet_open +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xb9533779 arcnet_unregister_proto +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xecb730b0 arcnet_interrupt +EXPORT_SYMBOL drivers/net/arcnet/com20020 0x52354ee3 com20020_check +EXPORT_SYMBOL drivers/net/arcnet/com20020 0x96fa7da2 com20020_netdev_ops +EXPORT_SYMBOL drivers/net/arcnet/com20020 0xa7880353 com20020_found +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x0de8f153 __alloc_ei_netdev +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x119721ac ei_interrupt +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x1f12301b ei_tx_timeout +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x242be4d0 ei_netdev_ops +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x339e5cca ei_open +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x386e2d03 ei_set_multicast_list +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x80bea8ab ei_close +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x8193d7d2 ei_get_stats +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xa241709f NS8390_init +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xdd80f9b0 ei_poll +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xf8b534a6 ei_start_xmit +EXPORT_SYMBOL drivers/net/ethernet/broadcom/bnx2x/bnx2x 0x2b53c6aa bnx2x_schedule_sp_rtnl +EXPORT_SYMBOL drivers/net/ethernet/broadcom/cnic 0x636af174 cnic_unregister_driver +EXPORT_SYMBOL drivers/net/ethernet/broadcom/cnic 0xf3e6762a cnic_register_driver +EXPORT_SYMBOL drivers/net/ethernet/cavium/thunder/thunder_bgx 0x285bde59 bgx_get_rx_stats +EXPORT_SYMBOL drivers/net/ethernet/cavium/thunder/thunder_bgx 0x42264715 bgx_get_lmac_count +EXPORT_SYMBOL drivers/net/ethernet/cavium/thunder/thunder_bgx 0x6dc1648d bgx_get_lmac_mac +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 0xe48ca42a bgx_get_tx_stats +EXPORT_SYMBOL drivers/net/ethernet/cavium/thunder/thunder_bgx 0xf101d1b2 bgx_get_lmac_link_state +EXPORT_SYMBOL drivers/net/ethernet/cavium/thunder/thunder_bgx 0xf9508980 bgx_set_lmac_mac +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x2b02b4c5 t3_l2t_send_event +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x5ba77959 cxgb3_remove_tid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x5e83700b cxgb3_insert_tid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x669254b7 t3_register_cpl_handler +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x7f911105 cxgb3_ofld_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x8ae668fd cxgb3_alloc_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x8f6525aa dev2t3cdev +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xa9a758c9 cxgb3_free_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xb1e35889 cxgb3_free_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xb92f18db t3_l2t_send_slow +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xbd50e387 t3_l2t_get +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xda797848 cxgb3_unregister_client +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xdce46e79 cxgb3_register_client +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xe20fced2 t3_l2e_free +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xf5744204 cxgb3_alloc_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xfca0b798 cxgb3_queue_tid_release +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x03076d82 cxgb4_port_idx +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x12cc0d1a cxgb4_free_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x1e025477 cxgb4_l2t_release +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x23826303 cxgb4_bar2_sge_qregs +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x32d7f5e1 cxgb4_l2t_get +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x36f5d4d4 cxgb4_ofld_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x3dfdb2ad cxgb4_alloc_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x3e9c8eee cxgb4_select_ntuple +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x454b4b25 cxgb4_get_tcp_stats +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x5010781c cxgb4_port_chan +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x50ee5c07 cxgb4_best_aligned_mtu +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x5759aaa4 cxgb4_clip_release +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x6ab70118 cxgb4_port_viid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x761e146b cxgb4_read_tpte +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x8011a13b cxgb4_remove_server +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x8e7e68fa cxgb4_read_sge_timestamp +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x974399f5 cxgb4_update_root_dev_clip +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xaa70550f cxgb4_l2t_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xadae47ab cxgb4_clip_get +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xae1e8013 cxgb4_create_server6 +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xc55fc89b cxgb4_sync_txq_pidx +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xc6837b7a cxgb4_pktgl_to_skb +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xc6d47d34 t4_cleanup_clip_tbl +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xc6f2224d cxgb4_alloc_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xc96c3de5 cxgb4_flush_eq_cache +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xcb35f7d1 cxgb4_iscsi_init +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xd00e5a36 cxgb4_unregister_uld +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xd523a650 cxgb4_dbfifo_count +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xd69a0294 cxgb4_best_mtu +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xd74a302a cxgb4_remove_tid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xdeadef38 cxgb4_remove_server_filter +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xe1e697b3 cxgb4_register_uld +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xe5bc9e33 cxgb4_dcb_enabled +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xec185ec3 cxgb4_alloc_sftid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xed309db3 cxgb4_create_server +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xf2b694cd cxgb4_create_server_filter +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xfa970f85 cxgb4_free_atid +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0x0e712340 vnic_dev_get_res +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0x40da6a39 enic_api_devcmd_proxy_by_index +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0x4f650da7 vnic_dev_get_res_count +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0x8798bba1 vnic_dev_get_pdev +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0x8a9ca689 vnic_dev_register +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0x9196d804 vnic_dev_unregister +EXPORT_SYMBOL drivers/net/ethernet/emulex/benet/be2net 0xbab62e22 be_roce_mcc_cmd +EXPORT_SYMBOL drivers/net/ethernet/emulex/benet/be2net 0xbe111c67 be_roce_unregister_driver +EXPORT_SYMBOL drivers/net/ethernet/emulex/benet/be2net 0xfb589526 be_roce_register_driver +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x02510070 mlx4_gen_guid_change_eqe +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0945fd78 mlx4_get_slave_port_state +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0e42d9a9 mlx4_SET_MCAST_FLTR +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x11902381 mlx4_eq_get_irq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x15f34d67 mlx4_gen_port_state_change_eqe +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1777b96d mlx4_SET_VPORT_QOS_get +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x33bf7c34 mlx4_release_eq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x395106e2 mlx4_ALLOCATE_VPP_get +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x396a0b4b mlx4_put_slave_node_guid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3fd5b630 mlx4_is_slave_active +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x429f8f7e mlx4_get_slave_node_guid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x48cd366d mlx4_tunnel_steer_add +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4ece310b mlx4_gen_slaves_port_mgt_ev +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5783b54c mlx4_get_module_info +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6d81d8e2 mlx4_SET_VPORT_QOS_set +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x73e11e4c mlx4_get_eqs_per_port +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x782d4271 mlx4_SET_PORT_SCHEDULER +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7ebd82ce mlx4_get_cpu_rmap +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x805d4691 mlx4_gen_pkey_eqe +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9acc8e64 mlx4_is_eq_vector_valid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9e1090e4 mlx4_test_interrupts +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa774a820 mlx4_assign_eq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa9fccb28 mlx4_is_eq_shared +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xace33dd5 mlx4_SET_PORT_qpn_calc +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xaee1d0ed mlx4_SET_PORT_PRIO2TC +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb739cf4f mlx4_SET_PORT_BEACON +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb824cce7 mlx4_get_parav_qkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc419c1e9 mlx4_get_slave_pkey_gid_tbl_len +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc8d73924 mlx4_SET_PORT_general +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xcc35bc02 mlx4_ALLOCATE_VPP_set +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd0de81b2 mlx4_SET_PORT_fcs_check +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd772dac8 mlx4_get_slave_from_roce_gid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe7655551 mlx4_sync_pkey_table +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xec7a367d mlx4_get_roce_gid_from_slave +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xef35089b set_and_calc_slave_port_state +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xffb72db0 mlx4_SET_PORT_VXLAN +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x060eec95 mlx5_cmd_comp_handler +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x0857aabd mlx5_get_flow_table_id +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x0eb7287e mlx5_del_flow_table_entry +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x0f0dfbdd mlx5_get_protocol_dev +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x117a5489 mlx5_core_dump_fill_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x16d8ebee mlx5_core_query_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x1843bd27 mlx5_core_destroy_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x199bf767 mlx5_cmd_free_uar +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x1d10970c mlx5_cmd_exec +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x1e51d6e0 mlx5_core_destroy_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x20dd2973 mlx5_vector2eqn +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x26381ff6 mlx5_core_destroy_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x2a0e7a77 mlx5_register_interface +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x2f32756f mlx5_cmd_alloc_uar +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x32521b62 mlx5_core_create_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x3a5781fd mlx5_query_vport_state +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x3c97aaba mlx5_cmd_init +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x523b74ac mlx5_cmd_exec_cb +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x62a46600 mlx5_core_query_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x70525ab8 mlx5_query_nic_vport_mac_address +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x763fe1e0 mlx5_core_create_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x7c2a9b1d mlx5_core_alloc_pd +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x86f26e23 mlx5_core_query_vendor_id +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x8e41708a mlx5_core_arm_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x9546e9fb mlx5_core_create_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa3b897c1 mlx5_unregister_interface +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xaf5aaa69 mlx5_core_destroy_psv +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xb84732e6 mlx5_cmd_cleanup +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xb90de6c0 mlx5_create_flow_table +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xbfcf5228 mlx5_core_query_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xd52f5063 mlx5_debugfs_root +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xd73aca40 mlx5_core_modify_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe4112d79 mlx5_core_dealloc_pd +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe6af33e4 mlx5_destroy_flow_table +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe722c04f mlx5_core_detach_mcg +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xecba52b5 mlx5_core_create_psv +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf060932e mlx5_alloc_map_uar +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf7718661 mlx5_core_attach_mcg +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf8bccf61 mlx5_unmap_free_uar +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf8db37e9 mlx5_core_get_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xfc728a49 mlx5_add_flow_table_entry +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x1ddd1cd0 hdlcdrv_register +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x3c52f58a hdlcdrv_receiver +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x78c18447 hdlcdrv_transmitter +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x955cc4ee hdlcdrv_arbitrate +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0xed9efed0 hdlcdrv_unregister +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x6c5e9bdf sirdev_raw_read +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x701d311f irda_register_dongle +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x9beb492e sirdev_set_dongle +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xabd5e9a0 sirdev_get_instance +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xadd7422f sirdev_put_instance +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xb9c6556e sirdev_set_dtr_rts +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xd4c26507 sirdev_write_complete +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xe379b792 sirdev_receive +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xea3a9107 sirdev_raw_write +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xf54b8399 irda_unregister_dongle +EXPORT_SYMBOL drivers/net/mdio 0x22bce513 mdio_mii_ioctl +EXPORT_SYMBOL drivers/net/mdio 0x43e4defc mdio45_nway_restart +EXPORT_SYMBOL drivers/net/mdio 0x7577f992 mdio_set_flag +EXPORT_SYMBOL drivers/net/mdio 0xa1a29548 mdio45_probe +EXPORT_SYMBOL drivers/net/mdio 0xc6b1163f mdio45_links_ok +EXPORT_SYMBOL drivers/net/mdio 0xddc98749 mdio45_ethtool_gset_npage +EXPORT_SYMBOL drivers/net/mii 0x3ee05604 generic_mii_ioctl +EXPORT_SYMBOL drivers/net/mii 0x54a2d0f0 mii_nway_restart +EXPORT_SYMBOL drivers/net/mii 0x873d82dc mii_check_gmii_support +EXPORT_SYMBOL drivers/net/mii 0x987cd6f2 mii_ethtool_gset +EXPORT_SYMBOL drivers/net/mii 0xc6ec5fa9 mii_link_ok +EXPORT_SYMBOL drivers/net/mii 0xe4ea559b mii_check_media +EXPORT_SYMBOL drivers/net/mii 0xec9bcaec mii_ethtool_sset +EXPORT_SYMBOL drivers/net/mii 0xf49478f6 mii_check_link +EXPORT_SYMBOL drivers/net/phy/mdio-bitbang 0x66377a0e free_mdio_bitbang +EXPORT_SYMBOL drivers/net/phy/mdio-bitbang 0x75d4ebad alloc_mdio_bitbang +EXPORT_SYMBOL drivers/net/phy/mdio-octeon 0x8a1d5c26 octeon_mdiobus_force_mod_depencency +EXPORT_SYMBOL drivers/net/phy/vitesse 0xeba703dd vsc824x_add_skew +EXPORT_SYMBOL drivers/net/ppp/pppox 0x26bb6ed0 register_pppox_proto +EXPORT_SYMBOL drivers/net/ppp/pppox 0x5ca1b9cc pppox_unbind_sock +EXPORT_SYMBOL drivers/net/ppp/pppox 0x97886df7 pppox_ioctl +EXPORT_SYMBOL drivers/net/ppp/pppox 0xe0ff7a18 unregister_pppox_proto +EXPORT_SYMBOL drivers/net/sungem_phy 0x1b7b88d6 sungem_phy_probe +EXPORT_SYMBOL drivers/net/team/team 0x0ae7a758 team_option_inst_set_change +EXPORT_SYMBOL drivers/net/team/team 0x1e85685b team_modeop_port_change_dev_addr +EXPORT_SYMBOL drivers/net/team/team 0x295bfb12 team_options_change_check +EXPORT_SYMBOL drivers/net/team/team 0x5e7fb1f3 team_options_unregister +EXPORT_SYMBOL drivers/net/team/team 0x746d8e60 team_mode_unregister +EXPORT_SYMBOL drivers/net/team/team 0x8c3f0fd1 team_mode_register +EXPORT_SYMBOL drivers/net/team/team 0xbae07ccd team_options_register +EXPORT_SYMBOL drivers/net/team/team 0xff35beb6 team_modeop_port_enter +EXPORT_SYMBOL drivers/net/usb/usbnet 0x196fa3b2 usbnet_device_suggests_idle +EXPORT_SYMBOL drivers/net/usb/usbnet 0x45634c13 usbnet_manage_power +EXPORT_SYMBOL drivers/net/usb/usbnet 0xd9473547 usbnet_link_change +EXPORT_SYMBOL drivers/net/wan/hdlc 0x1852cac7 hdlc_start_xmit +EXPORT_SYMBOL drivers/net/wan/hdlc 0x18eee140 hdlc_change_mtu +EXPORT_SYMBOL drivers/net/wan/hdlc 0x1c8d5826 detach_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0x3286bfa4 register_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0x3bd8b067 hdlc_close +EXPORT_SYMBOL drivers/net/wan/hdlc 0x51a2b7cd unregister_hdlc_device +EXPORT_SYMBOL drivers/net/wan/hdlc 0x7152399f unregister_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0x7f9f2d2c attach_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0x8e0dfbdf hdlc_ioctl +EXPORT_SYMBOL drivers/net/wan/hdlc 0x953ded65 alloc_hdlcdev +EXPORT_SYMBOL drivers/net/wan/hdlc 0xfab1bf0b hdlc_open +EXPORT_SYMBOL drivers/net/wimax/i2400m/i2400m 0x6f430a71 i2400m_unknown_barker +EXPORT_SYMBOL drivers/net/wireless/airo 0xdb9bff8b reset_airo_card +EXPORT_SYMBOL drivers/net/wireless/airo 0xf660ac3c init_airo_card +EXPORT_SYMBOL drivers/net/wireless/airo 0xfd252c2c stop_airo_card +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x2cfa4e36 ath_rxbuf_alloc +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x319c6026 ath_is_49ghz_allowed +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x3b77497a ath_hw_keyreset +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x4101a102 ath_regd_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x55259944 ath_hw_setbssidmask +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x5e0a41b2 ath_hw_cycle_counters_update +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x74919634 dfs_pattern_detector_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x78fae3d0 ath_key_delete +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x8119cccb ath_reg_notifier_apply +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x917d7dec ath_hw_get_listen_time +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xaafdb617 ath_is_world_regd +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xb49ad9c8 ath_is_mybeacon +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xbab84e17 ath_printk +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xc7e2029f ath_key_config +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xfb4de67a ath_regd_get_band_ctl +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x20489b4a ath10k_debug_get_new_fw_crash_data +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x2de0dfba ath10k_core_unregister +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x335e3dc2 ath10k_core_start +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x63b05587 ath10k_print_driver_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x724f1d0e ath10k_core_stop +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x7e888c1c ath10k_err +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x89f2958f ath10k_core_create +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x9af7b7a7 ath10k_core_destroy +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xa8f2151f ath10k_warn +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xc44c1127 ath10k_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xc55df4b0 ath10k_core_register +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x031394bc ath6kl_cfg80211_resume +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x118f871c ath6kl_core_create +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x4f760ccf ath6kl_cfg80211_suspend +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x53f83916 ath6kl_core_rx_complete +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x57e9d875 ath6kl_core_tx_complete +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x6d461900 ath6kl_hif_intr_bh_handler +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x7b317424 ath6kl_printk +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x80a09613 ath6kl_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x8c522212 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 0xa0e1ff7e ath6kl_stop_txrx +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xa6f66cc1 ath6kl_warn +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xcb014460 ath6kl_err +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xd8528093 ath6kl_core_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xe81aa367 ath6kl_core_destroy +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x10ed02ea ath9k_cmn_debug_modal_eeprom +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x1516dcb9 ath9k_cmn_process_rate +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x16b99e7a ath9k_cmn_beacon_config_adhoc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x2b4d6110 ath9k_cmn_spectral_deinit_debug +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x2d15177d ath9k_cmn_debug_stat_rx +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x403aa17b ath9k_cmn_beacon_config_sta +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x493bb407 ath9k_cmn_process_rssi +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x56ba9aa5 ath9k_cmn_beacon_config_ap +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x589741ac ath9k_cmn_init_channels_rates +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x72613050 ath9k_cmn_get_channel +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x76aae6ec ath9k_cmn_spectral_scan_config +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x799d4c61 ath_cmn_process_fft +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x7b5031de ath9k_cmn_init_crypto +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x856b27fb ath9k_cmn_rx_accept +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x9b4b9889 ath9k_cmn_spectral_scan_trigger +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xa24d9268 ath9k_cmn_update_txpow +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xb52eea8d ath9k_cmn_debug_recv +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xd2981357 ath9k_cmn_count_streams +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xd7682ecf ath9k_cmn_rx_skb_postprocess +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xdbb04768 ath9k_cmn_reload_chainmask +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xe6048d38 ath9k_cmn_get_hw_crypto_keytype +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xf227d15a ath9k_cmn_setup_ht_cap +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xf4053f65 ath9k_cmn_debug_phy_err +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xf663968b ath9k_cmn_debug_base_eeprom +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xfc9573f9 ath9k_cmn_spectral_init_debug +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x004c16bd ath9k_hw_reset +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x026638b6 ath9k_hw_txstart +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x052611f5 ath9k_hw_set_tx_filter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0729d897 ar9003_mci_setup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x075bdaae ath9k_hw_setup_statusring +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x07f84aef ath9k_hw_btcoex_init_3wire +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x09a73897 ath9k_hw_setrxfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x106edeef ar9003_paprd_create_curve +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x107c4ff7 ath_gen_timer_free +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1157c17a ar9003_mci_get_interrupt +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x14ec4abf ath9k_hw_ani_monitor +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1553bf45 ath9k_hw_set_gpio +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x17420661 ath9k_hw_set_txpowerlimit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x23011c06 ar9003_paprd_init_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x28049f4b ar9003_is_paprd_enabled +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x28ebcc60 ath9k_hw_setantenna +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2a75d31c ath9k_hw_puttxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2a8c142c ath9k_hw_check_alive +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2e211c4e ath9k_hw_check_nav +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x309bbbb2 ath9k_hw_abortpcurecv +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x338e3702 ar9003_paprd_is_done +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x341f3b75 ath9k_hw_setpower +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x380e0232 ath9k_hw_setrxabort +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x39868655 ath9k_hw_gen_timer_stop +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x39bde78a ath9k_hw_getchan_noise +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x3e575209 ath9k_hw_updatetxtriglevel +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x3ebed433 ar9003_paprd_populate_single_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x3fbb88a3 ath9k_hw_wow_wakeup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x40d42c57 ar9003_mci_cleanup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x43915486 ath9k_hw_beaconq_setup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x46305a08 ath9k_hw_enable_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x47683904 ath9k_hw_settsf64 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x485d645d ath9k_hw_putrxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x49fad0e9 ath9k_hw_cfg_output +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4adfcf4d ath9k_hw_setmcastfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4bd8b966 ath9k_hw_gpio_get +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4bfe0957 ath9k_hw_wait +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4f7bb7d2 ath9k_hw_reset_calvalid +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x52fe12cb ath9k_hw_disable_mib_counters +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x53afbea3 ath9k_hw_get_txq_props +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x5d3df803 ar9003_get_pll_sqsum_dvc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x5f781712 ath9k_hw_btcoex_enable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6526df05 ath9k_hw_rxprocdesc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6ce1bfca ath9k_hw_setuptxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6dedb909 ath9k_hw_getrxfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6e2391c4 ar9003_mci_send_wlan_channels +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6e73d71b ath_gen_timer_isr +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x74c2e6f8 ath9k_hw_btcoex_init_scheme +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x787af08b ath9k_hw_btcoex_bt_stomp +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7bba636d ath9k_hw_phy_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x80d86a88 ath9k_hw_gettxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x82d6f0fa ath9k_hw_startpcureceive +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x82f30268 ar9003_hw_bb_watchdog_dbg_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x853bcb18 ath9k_hw_intrpend +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x87b6a73d ath9k_hw_deinit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x87d5ec77 ar9003_mci_set_bt_version +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8f0b7c2b ath9k_hw_init_btcoex_hw +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x907fae77 ath9k_hw_bstuck_nfcal +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x912bc132 ath9k_hw_process_rxdesc_edma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x91e503d3 ath9k_hw_stopdmarecv +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x961fb68c ar9003_mci_send_message +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9c0c4a56 ath9k_hw_cfg_gpio_input +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9d151e41 ath9k_hw_set_txq_props +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9d29148d ath9k_hw_reset_tsf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9d9c252a ath9k_hw_set_sta_beacon_timers +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9d9e9680 ath9k_hw_set_rx_bufsize +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa0eba6d8 ath9k_hw_gettsf32 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa224cde7 ath9k_hw_gettsf64 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa68ead89 ath9k_hw_wow_apply_pattern +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa8e08a45 ath9k_hw_gen_timer_start +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa947f002 ath9k_hw_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xab9cc7c6 ath9k_hw_stop_dma_queue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb0bcf1e5 ath9k_hw_computetxtime +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb21ce706 ath9k_hw_request_gpio +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb2f2929a ar9003_paprd_setup_gain_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb51a6b8f ath9k_hw_addrxbuf_edma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xbad460c4 ath9k_hw_kill_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xbc38f1a8 ath9k_hw_btcoex_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xbe21c8a0 ar9003_paprd_enable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xbe2c0781 ath9k_hw_abort_tx_dma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xbecc7891 ath9k_hw_setopmode +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc6a0366a ath9k_hw_btcoex_set_concur_txprio +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc7a434be ar9003_mci_state +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc9143000 ath9k_hw_beaconinit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xca426d88 ath9k_hw_set_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xcc53257f ath9k_hw_releasetxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xcfb1dea6 ar9003_hw_bb_watchdog_check +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd039a014 ath9k_hw_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd12107be ath9k_hw_numtxpending +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd3208b6e ar9003_hw_disable_phy_restart +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xda0dbad0 ath9k_hw_resettxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xdb6cb354 ath9k_hw_write_associd +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xdb87ebeb ath9k_hw_getnf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xdd9564fc ar9003_mci_get_next_gpm_offset +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xde4caa28 ath9k_hw_btcoex_set_weight +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe2e9ca4c ath_gen_timer_alloc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe4b34a52 ath9k_hw_btcoex_init_mci +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xea06f994 ath9k_hw_init_global_settings +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xea086ca8 ath9k_hw_setuprxdesc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf0603dca ath9k_hw_btcoex_init_2wire +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf0d6e448 ath9k_hw_wow_enable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf29d31f0 ath9k_hw_set_tsfadjust +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf43ae229 ath9k_hw_disable_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf4532fe9 ath9k_hw_name +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xffd02408 ath9k_hw_get_tsf_offset +EXPORT_SYMBOL drivers/net/wireless/atmel 0x0912d3b8 init_atmel_card +EXPORT_SYMBOL drivers/net/wireless/atmel 0x9554f608 stop_atmel_card +EXPORT_SYMBOL drivers/net/wireless/atmel 0xa6944b4b atmel_open +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x05d776d8 brcmu_pktq_mdeq +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x0edd5016 brcmu_pkt_buf_get_skb +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x1de0c80b brcmu_pktq_penq +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x3f2988a1 brcmu_dotrev_str +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x445d0eaf brcmu_pktq_pdeq_tail +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x52986df3 brcmu_pktq_flush +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x774465dd brcmu_pktq_peek_tail +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x8d734dc3 brcmu_pktq_pflush +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x9f4b5dcf brcmu_d11_attach +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xa4590eea brcmu_pktq_mlen +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xaf7add80 brcmu_pktq_penq_head +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xb27f2b6d brcmu_pkt_buf_free_skb +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xcc7d3a66 brcmu_pktq_pdeq +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xd261b8a6 brcmu_boardrev_str +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xd3ccbb69 brcmu_pktq_init +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xf396b222 brcmu_pktq_pdeq_match +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x04259dae hostap_add_interface +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x12b09d13 hostap_set_encryption +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x1321ec2b hostap_set_word +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x1723ac32 hostap_set_multicast_list_queue +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x2aade3ee hostap_80211_ops +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x47d74506 hostap_init_data +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x55c6d7bc hostap_set_antsel +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x58db9ea6 hostap_init_proc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x61684df3 hostap_info_process +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x6d4bbc24 hostap_init_ap_proc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x7572f1ca hostap_set_roaming +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x7a74fa5a hostap_set_hostapd_sta +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x87dd71b8 hostap_set_string +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x8e7d926f hostap_master_start_xmit +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x91df11f3 prism2_update_comms_qual +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xa10d2c08 hostap_check_sta_fw_version +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xa12ad27f hostap_dump_tx_header +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xb1b4fc2f hostap_free_data +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xb2a945e0 hostap_dump_rx_header +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xb4b77c8b hostap_80211_get_hdrlen +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xc5e6557b hostap_get_porttype +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xcd178459 hostap_80211_rx +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xcd9ab2b4 hostap_handle_sta_tx_exc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xd211df87 hostap_remove_proc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xd7007566 hostap_info_init +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xd899f32e hostap_set_hostapd +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xe7a991d7 hostap_set_auth_algs +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xe94f2a53 hostap_remove_interface +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xec691158 hostap_setup_dev +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x103e8087 libipw_get_channel +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x11bed1b1 libipw_get_channel_flags +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x234788d6 libipw_wx_set_encodeext +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x2b68db92 libipw_wx_get_encodeext +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x35c8b02a libipw_rx +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x3be00dcc libipw_freq_to_channel +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x693cc7c4 libipw_get_geo +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x84eb9db7 libipw_channel_to_index +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x922dc94c libipw_txb_free +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x946253cc libipw_channel_to_freq +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x9566d241 libipw_set_geo +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xaa61b7d1 free_libipw +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xab6e5465 libipw_wx_get_scan +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xc3dd7a9e libipw_wx_get_encode +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xcc022e15 libipw_xmit +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xdf301c20 alloc_libipw +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xe4304d7a libipw_is_valid_channel +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xe477f0ea libipw_networks_age +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xe4f19cb0 libipw_wx_set_encode +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xec551e98 libipw_change_mtu +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xed130d53 libipw_rx_mgt +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x01dea484 il_leds_exit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x02977f19 il_pm_ops +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x04aae0f0 il_power_update_mode +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x06541864 il_set_rate +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x06f4e7ba il_clear_ucode_stations +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x083760b2 il_apm_stop +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x0d50a67c il_tx_queue_free +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x0e0a5b56 il_rd_prph +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x1634e9cb il_mac_config +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x16f5377f il_send_lq_cmd +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x1860d5e3 il_hdl_spectrum_measurement +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x1c87faff il_is_ht40_tx_allowed +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x1dd85c08 il_tx_cmd_protection +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x1f4c3bec il_full_rxon_required +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x208a0ca2 _il_apm_stop +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x21673646 il_read_targ_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x245ec033 il_send_cmd +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x25df141e il_eeprom_query_addr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x27a0d30a il_tx_queue_reset +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x29ff8eab il_set_decrypted_flag +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x2c04f5a4 il_clear_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x2f1a9e3f il_send_stats_request +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x3273e77a il_set_rxon_channel +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x3839e18c il_add_beacon_time +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x38be633b il_setup_scan_deferred_work +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x3bd097fa il_wr_prph +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x3d6241e9 il_get_passive_dwell_time +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x3e02746a il_free_channel_map +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x410d1efa il_scan_cancel +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4186600e il_free_txq_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x438ee2fc il_init_geos +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x43caca09 il_txq_update_write_ptr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x45332d13 il_power_initialize +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4a3d4007 il_mac_sta_remove +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4aa39103 il_get_cmd_string +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4b430fc5 il_send_add_sta +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x50e28aad il_hdl_pm_debug_stats +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x551c1f13 il_eeprom_query16 +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x564c6740 il_debug_level +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x57ce91e6 il_setup_rx_scan_handlers +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x5acd2939 il_hdl_csa +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x5c0c53e5 il_mac_bss_info_changed +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x5f94e41a il_poll_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x603ccac9 il_dbgfs_register +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x623c7bac il_mac_conf_tx +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x6a7f6164 il_free_geos +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x6c81bdee il_send_bt_config +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x6e3296ce il_irq_handle_error +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x703de7b7 il_write_targ_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x7c320dd2 il_send_cmd_pdu_async +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x7d2f1f21 il_usecs_to_beacons +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x84920ac9 il_apm_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x889f8884 il_set_flags_for_band +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x8b3ba860 il_tx_queue_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x8d4c5c03 il_tx_cmd_complete +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x8e4e9d89 il_cancel_scan_deferred_work +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x95ca89e0 il_get_single_channel_number +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa2387363 _il_poll_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa317a9ba il_update_stats +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa584aa2e il_get_channel_info +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa8cab661 il_send_cmd_pdu +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa9b64806 il_get_active_dwell_time +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xab9eacaf il_mac_hw_scan +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb0aad675 il_hdl_pm_sleep +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb16e8806 il_get_free_ucode_key_idx +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb2cf0b02 il_force_reset +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb7ae74de il_rx_queue_space +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb7bd33ff il_isr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xba1ec428 il_rx_queue_alloc +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xba6248e8 il_chswitch_done +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xbb415429 il_leds_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xbdb2d95e il_restore_stations +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xbee71bf5 il_scan_cancel_timeout +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xbf39e476 il_mac_change_interface +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xbfdc2c97 il_set_rxon_ht +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc0458675 il_init_scan_params +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc39cf12c il_bg_watchdog +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc419a331 il_set_tx_power +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xcbea191a il_mac_flush +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xce8df9a1 il_rx_queue_update_write_ptr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd00dc2a0 il_set_rxon_hwcrypto +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd26bc918 il_dbgfs_unregister +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd26fb31e il_init_channel_map +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd396b123 il_alloc_txq_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xdbc81577 il_setup_watchdog +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xdc6d4af4 il_cmd_queue_free +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xddf23ff6 il_eeprom_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xdf6641ca il_check_rxon_cmd +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe435493a il_queue_space +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe79c3e4b il_hdl_error +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe9372e30 il_add_station_common +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xea17b037 il_connection_init_rx_config +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xeb4fb096 il_mac_remove_interface +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xed8e12a8 il_mac_add_interface +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xede471b6 il_cmd_queue_unmap +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xedead468 il_mac_reset_tsf +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xeed8170a il_tx_queue_unmap +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf0602a61 il_send_rxon_timing +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf4f80b39 il_eeprom_free +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf501278b il_bcast_addr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf5322937 il_get_lowest_plcp +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf76aa889 il_send_cmd_sync +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xfbaaab16 il_set_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xfc74d052 il_fill_probe_req +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x2f7b7e55 __tracepoint_iwlwifi_dev_ucode_wrap_event +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x3b9d00d6 __tracepoint_iwlwifi_dev_ioread32 +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x779dd6f5 __tracepoint_iwlwifi_dev_iowrite32 +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x85c1bb84 __tracepoint_iwlwifi_dev_iowrite8 +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x963a6f8a __tracepoint_iwlwifi_dev_ucode_error +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0xb8f7026f __tracepoint_iwlwifi_dev_ucode_cont_event +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0xf9ec6bdd __tracepoint_iwlwifi_dev_ucode_event +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x02cf7fcf hermes_struct_init +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x09546094 orinoco_if_del +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x339a8538 orinoco_if_add +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x3b91a96c orinoco_init +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x3fe0eea8 __orinoco_ev_info +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x7e6597cb __orinoco_ev_rx +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x83e24742 orinoco_change_mtu +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x898dc607 orinoco_get_stats +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xa887a587 orinoco_process_xmit_skb +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xb6739926 orinoco_open +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xc87389d1 free_orinocodev +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xce3237f9 orinoco_set_multicast_list +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xd0c48a6d orinoco_tx_timeout +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xd2ceb2b8 orinoco_up +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xe58d6d3d orinoco_down +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xeb26c4bb alloc_orinocodev +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xf1155169 orinoco_stop +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xffe27bca orinoco_interrupt +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/btcoexist/btcoexist 0x5ed4459f rtl_btc_get_ops_pointer +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x05ea39b8 rtl92c_phy_query_bb_reg +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x071b6d62 rtl92c_phy_set_bw_mode +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x0b1e45bd rtl92c_phy_set_rfpath_switch +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x0df9f714 rtl92c_phy_lc_calibrate +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x0ed68d98 rtl92c_fill_h2c_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x1315f910 _rtl92c_phy_init_bb_rf_register_definition +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x15bb8594 rtl92c_dm_check_txpower_tracking +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x29752c5e rtl92c_dm_rf_saving +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x2f4c6c65 rtl92c_set_fw_joinbss_report_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x33ecb945 rtl92c_phy_sw_chnl_callback +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x36713b98 rtl92c_dm_init_edca_turbo +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x425d449d _rtl92c_phy_bb8192c_config_parafile +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x670e8f97 rtl92c_set_fw_rsvdpagepkt +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x7041acfc rtl92c_bt_rssi_state_change +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x7a82414c rtl92ce_phy_set_rf_on +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x7e6c883e rtl92c_phy_set_txpower_level +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x8da76e5d rtl92c_phy_ap_calibrate +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x9202db76 _rtl92c_store_pwrIndex_diffrate_offset +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x96b580ed rtl92c_dm_init_rate_adaptive_mask +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x9bcb69a2 rtl8192_phy_check_is_legal_rfpath +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x9bfcecbc _rtl92c_phy_fw_rf_serial_write +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x9d741d32 rtl92c_download_fw +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x9d81cd30 rtl92c_phy_iq_calibrate +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xa34c3203 _rtl92c_phy_set_rf_sleep +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xb3314d48 _rtl92c_phy_calculate_bit_shift +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xb6b5e018 rtl92c_phy_rf_config +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xbd0fba7a _rtl92c_phy_fw_rf_serial_read +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xc127bef5 rtl92c_phy_set_io_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xc2834b1b _rtl92c_phy_rf_serial_write +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xc6bb36dc rtl92c_phy_sw_chnl +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xc7a6bb2a rtl92c_dm_watchdog +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xcb823d26 _rtl92c_phy_rf_serial_read +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xd07dd25c rtl92c_firmware_selfreset +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xd1c3fdc8 rtl92c_phy_set_bb_reg +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xd30bd3ce rtl92c_phy_update_txpower_dbm +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xd397d4a6 rtl92c_set_fw_pwrmode_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xd54b3c7f _rtl92c_phy_dbm_to_txpwr_idx +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xd5ae472f rtl92c_dm_bt_coexist +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xe7b2c4c4 rtl92c_dm_write_dig +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xf3d5a3ae rtl92c_phy_set_io +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xf7bd0b3f rtl92c_dm_init +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xf86f9c71 _rtl92c_phy_txpwr_idx_to_dbm +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x6fb9f06f rtl8723_fill_dummy +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_pci 0x17df5a7d rtl_pci_probe +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_pci 0x5ddd47d3 rtl_pci_suspend +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_pci 0x8f0c7554 rtl_pci_disconnect +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_pci 0x9dc3c492 rtl_pci_resume +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_usb 0x135be25d rtl_usb_resume +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_usb 0x287b5591 rtl_usb_suspend +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_usb 0xd8e74f4e rtl_usb_disconnect +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_usb 0xfb72a76f rtl_usb_probe +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x018d15cc rtl_ps_set_rf_state +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x0f52156d rtl_hal_pwrseqcmdparsing +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x14cfb52f rtl_wowlan_fw_cb +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x1509ba78 rtl_fw_cb +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x1a2d02bc efuse_read_1byte +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x1b630bd3 rtl_process_phyinfo +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x1eeb7920 rtl_lps_leave +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x207fbb70 rtl_evm_db_to_percentage +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x22a3562e rtl_cam_get_free_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x4b51458e efuse_one_byte_read +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x4d446694 rtl_rfreg_delay +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x4d7371e5 rtl_ps_disable_nic +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x53b348b5 efuse_shadow_read +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x6622ec32 rtl_cam_del_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x72557b5c rtl_dm_diginit +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x77d71a03 rtl_cmd_send_packet +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x79188a02 rtl_query_rxpwrpercentage +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x870f64a9 rtl_cam_delete_one_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x980848e2 rtl_addr_delay +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x9e0c7990 rtl_phy_scan_operation_backup +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xa4354422 rtl_cam_mark_invalid +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xa47fe01e rtl_get_tcb_desc +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xb1fb9a12 rtlwifi_rate_mapping +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xba699566 rtl_bb_delay +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xbb936f2a rtl_init_rfkill +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xc2e65cc2 rtl_efuse_shadow_map_update +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xca6e2e64 rtl_send_smps_action +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xd5ff69af rtl_signal_scale_mapping +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xe0e556e9 rtl_lps_enter +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xeddecbac rtl_cam_empty_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xf15b679e rtl_ps_enable_nic +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xf7abb5e1 rtl_cam_reset_all_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xfbff6271 rtl_cam_add_one_entry +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0x46f96353 wl1271_free_tx_id +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0x503ab8f3 wlcore_calc_packet_alignment +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0xa1dd9e5d wlcore_tx_complete +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0xb6823095 wl12xx_is_dummy_packet +EXPORT_SYMBOL drivers/nfc/microread/microread 0x9800f5d8 microread_probe +EXPORT_SYMBOL drivers/nfc/microread/microread 0xb3bbc613 microread_remove +EXPORT_SYMBOL drivers/nfc/nxp-nci/nxp-nci 0x0eb6bb07 nxp_nci_fw_recv_frame +EXPORT_SYMBOL drivers/nfc/nxp-nci/nxp-nci 0x37473bb5 nxp_nci_probe +EXPORT_SYMBOL drivers/nfc/nxp-nci/nxp-nci 0xae03d743 nxp_nci_remove +EXPORT_SYMBOL drivers/nfc/pn544/pn544 0x7ad95a1e pn544_hci_remove +EXPORT_SYMBOL drivers/nfc/pn544/pn544 0xd12c6479 pn544_hci_probe +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x10625535 ndlc_recv +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x31d74ec2 st_nci_se_deinit +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x5a1ca1d3 st_nci_se_init +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x605a55cc ndlc_send +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x6db33087 ndlc_open +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x81c2d352 ndlc_remove +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x8944efc9 ndlc_close +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0xc546b38b st_nci_se_io +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0xdce431c3 ndlc_probe +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x04ce8a05 st21nfca_hci_probe +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x129553b5 st21nfca_se_deinit +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x18438678 st21nfca_im_send_dep_req +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x1da286f9 st21nfca_hci_discover_se +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x2f8e9648 st21nfca_connectivity_event_received +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x45ec295d st21nfca_hci_se_io +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x6a6cad63 st21nfca_hci_disable_se +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x6f26d390 st21nfca_se_init +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x77ee203e st21nfca_tm_send_dep_res +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x9555d3d6 st21nfca_apdu_reader_event_received +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xaef9919d st21nfca_hci_remove +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xbdb17942 st21nfca_dep_deinit +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xd2376921 st21nfca_im_send_atr_req +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xea90fbed st21nfca_dep_init +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xfea3cd80 st21nfca_hci_enable_se +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xffc27ccc st21nfca_dep_event_received +EXPORT_SYMBOL drivers/ntb/ntb 0x0fccd549 ntb_unregister_client +EXPORT_SYMBOL drivers/ntb/ntb 0x3c6c8e06 __ntb_register_client +EXPORT_SYMBOL drivers/ntb/ntb 0x3dc1d757 ntb_unregister_device +EXPORT_SYMBOL drivers/ntb/ntb 0x5f294045 ntb_set_ctx +EXPORT_SYMBOL drivers/ntb/ntb 0x878c3702 ntb_clear_ctx +EXPORT_SYMBOL drivers/ntb/ntb 0x8ea0152b ntb_link_event +EXPORT_SYMBOL drivers/ntb/ntb 0xf24f1259 ntb_db_event +EXPORT_SYMBOL drivers/ntb/ntb 0xf38142b8 ntb_register_device +EXPORT_SYMBOL drivers/nvdimm/nd_btt 0x8999b298 nvdimm_namespace_attach_btt +EXPORT_SYMBOL drivers/nvdimm/nd_btt 0xef94f1de nvdimm_namespace_detach_btt +EXPORT_SYMBOL drivers/parport/parport 0x09f22b2e parport_ieee1284_ecp_write_addr +EXPORT_SYMBOL drivers/parport/parport 0x11dc4184 parport_ieee1284_epp_write_data +EXPORT_SYMBOL drivers/parport/parport 0x198d3d38 parport_unregister_device +EXPORT_SYMBOL drivers/parport/parport 0x1e31c271 parport_del_port +EXPORT_SYMBOL drivers/parport/parport 0x215d380c parport_find_base +EXPORT_SYMBOL drivers/parport/parport 0x3b2b6a0a parport_claim +EXPORT_SYMBOL drivers/parport/parport 0x3df56e0a parport_get_port +EXPORT_SYMBOL drivers/parport/parport 0x4d2a941b parport_ieee1284_interrupt +EXPORT_SYMBOL drivers/parport/parport 0x5620d35d parport_ieee1284_read_byte +EXPORT_SYMBOL drivers/parport/parport 0x5640515e parport_ieee1284_epp_read_addr +EXPORT_SYMBOL drivers/parport/parport 0x5e3a3912 parport_irq_handler +EXPORT_SYMBOL drivers/parport/parport 0x663e88b9 parport_ieee1284_read_nibble +EXPORT_SYMBOL drivers/parport/parport 0x67fbdf27 parport_ieee1284_ecp_read_data +EXPORT_SYMBOL drivers/parport/parport 0x787b6c7b parport_remove_port +EXPORT_SYMBOL drivers/parport/parport 0x8139a2a2 parport_release +EXPORT_SYMBOL drivers/parport/parport 0x86e359f7 parport_negotiate +EXPORT_SYMBOL drivers/parport/parport 0x87bf2f59 parport_announce_port +EXPORT_SYMBOL drivers/parport/parport 0x96d394fb parport_wait_event +EXPORT_SYMBOL drivers/parport/parport 0x97027ff5 parport_ieee1284_write_compat +EXPORT_SYMBOL drivers/parport/parport 0x9c0b66a3 parport_read +EXPORT_SYMBOL drivers/parport/parport 0xac631e92 parport_find_number +EXPORT_SYMBOL drivers/parport/parport 0xbe743054 parport_wait_peripheral +EXPORT_SYMBOL drivers/parport/parport 0xc14cb5e1 parport_register_device +EXPORT_SYMBOL drivers/parport/parport 0xd0c7e7fe __parport_register_driver +EXPORT_SYMBOL drivers/parport/parport 0xd6cf7871 parport_unregister_driver +EXPORT_SYMBOL drivers/parport/parport 0xde626d15 parport_write +EXPORT_SYMBOL drivers/parport/parport 0xe0f31f65 parport_register_dev_model +EXPORT_SYMBOL drivers/parport/parport 0xe9122d48 parport_ieee1284_epp_write_addr +EXPORT_SYMBOL drivers/parport/parport 0xeab1725d parport_set_timeout +EXPORT_SYMBOL drivers/parport/parport 0xee93d056 parport_claim_or_block +EXPORT_SYMBOL drivers/parport/parport 0xf13c47e2 parport_ieee1284_ecp_write_data +EXPORT_SYMBOL drivers/parport/parport 0xf341cf85 parport_put_port +EXPORT_SYMBOL drivers/parport/parport 0xfa3db121 parport_register_port +EXPORT_SYMBOL drivers/parport/parport 0xfa804afb parport_ieee1284_epp_read_data +EXPORT_SYMBOL drivers/parport/parport_pc 0xb361e9e5 parport_pc_probe_port +EXPORT_SYMBOL drivers/parport/parport_pc 0xcb426c4e parport_pc_unregister_port +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x00bd311a pcmcia_request_window +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x01e87c39 pcmcia_read_config_byte +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x154b2ec2 pcmcia_get_mac_from_cis +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x1b0d74de pcmcia_loop_config +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x1e9390d1 pcmcia_enable_device +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x2b55b567 __pcmcia_request_exclusive_irq +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x2bcb1ca3 pcmcia_fixup_vpp +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x2f371e51 pcmcia_write_config_byte +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x4d8e9ebe pcmcia_get_tuple +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x5be92921 pcmcia_request_irq +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x73cff93b pcmcia_loop_tuple +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x742f5665 pcmcia_parse_tuple +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x7f478aa7 pcmcia_disable_device +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xacf0e314 pcmcia_register_driver +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xbb6037aa pcmcia_unregister_driver +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xbbc4a4dc pcmcia_map_mem_page +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xc1c24a7f pcmcia_request_io +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xc996c2b8 pcmcia_dev_present +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xeac56266 pcmcia_release_window +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xf0e877f4 pcmcia_fixup_iowidth +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x00fcfbec pcmcia_unregister_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x212db8d2 pcmcia_socket_list +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x46847f5a pcmcia_parse_uevents +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x755f108d pcmcia_reset_card +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x85f28ddf pcmcia_socket_list_rwsem +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x8e3a40ff pcmcia_get_socket_by_nr +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x8e468b78 pcmcia_register_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xa7215f7d pcmcia_parse_events +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xb8de259a pccard_register_pcmcia +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xc24ca6ef pcmcia_put_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xca2758d1 pcmcia_get_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xcf97f3bd dead_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xcfe702af pcmcia_socket_class +EXPORT_SYMBOL drivers/pcmcia/pcmcia_rsrc 0xba8e67b4 pccard_static_ops +EXPORT_SYMBOL drivers/pcmcia/pcmcia_rsrc 0xf42bfc14 pccard_nonstatic_ops +EXPORT_SYMBOL drivers/platform/x86/sony-laptop 0x5bb1e117 sony_pic_camera_command +EXPORT_SYMBOL drivers/pps/pps_core 0x3317a989 pps_event +EXPORT_SYMBOL drivers/pps/pps_core 0x63045b38 pps_lookup_dev +EXPORT_SYMBOL drivers/pps/pps_core 0xb1ce20d2 pps_unregister_source +EXPORT_SYMBOL drivers/pps/pps_core 0xc22d3d10 pps_register_source +EXPORT_SYMBOL drivers/ptp/ptp 0x10b79e45 ptp_clock_index +EXPORT_SYMBOL drivers/ptp/ptp 0x10f704d9 ptp_clock_unregister +EXPORT_SYMBOL drivers/ptp/ptp 0x4620fa3d ptp_find_pin +EXPORT_SYMBOL drivers/ptp/ptp 0x5eb88321 ptp_clock_event +EXPORT_SYMBOL drivers/ptp/ptp 0xd00adf8f ptp_clock_register +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x2b94856f rproc_boot +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x4facfbe3 rproc_get_by_phandle +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x68136d4b rproc_add +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x97b8b6c6 rproc_alloc +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0xcfefa872 rproc_del +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0xd80ffb05 rproc_vq_interrupt +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0xede026b2 rproc_report_crash +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0xfcaad3d7 rproc_shutdown +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0xfe55f56f rproc_da_to_va +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0xfff6eb59 rproc_put +EXPORT_SYMBOL drivers/rtc/rtc-ds1685 0x0d0177f6 ds1685_rtc_poweroff +EXPORT_SYMBOL drivers/scsi/esp_scsi 0x4a29ab38 scsi_esp_intr +EXPORT_SYMBOL drivers/scsi/esp_scsi 0x75120ff7 scsi_esp_template +EXPORT_SYMBOL drivers/scsi/esp_scsi 0x92c6ab51 scsi_esp_register +EXPORT_SYMBOL drivers/scsi/esp_scsi 0xc29ed2d4 scsi_esp_cmd +EXPORT_SYMBOL drivers/scsi/esp_scsi 0xeaa6d1e8 scsi_esp_unregister +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x08fc0290 fcoe_fcf_get_selected +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x1ddba713 fcoe_ctlr_destroy_store +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x36e72d76 fcoe_ctlr_els_send +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x57eb250b fcoe_ctlr_set_fip_mode +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x648aab1a fcoe_transport_attach +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x9f6e8ea0 fcoe_ctlr_link_up +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xa5b6da4f fcoe_ctlr_recv_flogi +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xa69e5519 fcoe_ctlr_destroy +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xcc8c0a92 fcoe_transport_detach +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xda256571 fcoe_ctlr_init +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xe76fb454 fcoe_ctlr_recv +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xe9a8330d fcoe_ctlr_link_down +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x0066e8cb fc_vport_setlink +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x010234a4 fc_exch_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x07c8bd8f fc_frame_crc_check +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x09b6a95a fc_fc4_register_provider +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x0a866861 fc_lport_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x12b72e7c fc_lport_config +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x1603ff7d fc_set_mfs +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x17852fba fc_fabric_logoff +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x1da4d51d fc_exch_mgr_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x22b90986 fc_exch_mgr_del +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x25b9600e fc_linkdown +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x2968e017 fc_get_host_stats +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x2b00a751 fc_frame_alloc_fill +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x2c493610 fc_fcp_destroy +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x2f47bedb fc_vport_id_lookup +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x34a75c3e fc_exch_mgr_add +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x36e5fbaf fc_cpu_mask +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x3cb4aac0 fc_lport_set_local_id +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x3d9f4c3f fc_exch_mgr_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x3e7e67d4 _fc_frame_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x3f76b1c8 fc_lport_destroy +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x46dc7d4f fc_fcp_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x4992e515 fc_lport_iterate +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x5170728f fc_elsct_send +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x53ddf7ab libfc_vport_create +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x5b658f6f fc_rport_terminate_io +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x658e8b31 fc_lport_logo_resp +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x6717f220 fc_lport_flogi_resp +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x69cebf12 fc_linkup +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x6cc593c6 fc_eh_host_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x6dd2b70e fc_exch_mgr_free +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x736cd53f fc_lport_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x76f6744c fc_exch_recv +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x7ddc00a1 fc_disc_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x85180f17 fc_exch_update_stats +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x89979ae6 fc_fabric_login +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x8c6d3dbc fc_fill_hdr +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x92309add fc_eh_device_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x94c892c8 fc_lport_bsg_request +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x973a5b2e fc_fill_reply_hdr +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x9eef106e fc_exch_mgr_list_clone +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xa0fb4ffe fc_elsct_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xb52f70f1 fc_slave_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xba61db22 fc_set_rport_loss_tmo +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xbb376e74 fc_eh_abort +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xc8ec7b29 fc_queuecommand +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xdc0567c5 fc_fc4_deregister_provider +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xdc337226 fc_get_host_port_state +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xe36d16c4 fc_get_host_speed +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xf7464d6a fc_disc_config +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xfacb3ec5 fc_rport_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xfeb48bf1 fc_lport_notifier_head +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x49047ea9 sas_prep_resume_ha +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x49e7aacc sas_wait_eh +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x6ff06786 sas_suspend_ha +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x8a87e724 try_test_sas_gpio_gp_bit +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0xceaf5853 sas_resume_ha +EXPORT_SYMBOL drivers/scsi/megaraid/megaraid_mm 0x2250c66e mraid_mm_adapter_app_handle +EXPORT_SYMBOL drivers/scsi/megaraid/megaraid_mm 0x512c956d mraid_mm_unregister_adp +EXPORT_SYMBOL drivers/scsi/megaraid/megaraid_mm 0xc6928f9b mraid_mm_register_adp +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x0741f964 osd_req_flush_collection +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x0c17edb1 osd_sec_init_nosec_doall_caps +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x120d743d osd_req_decode_sense_full +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x1f97543f osd_req_create_object +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x228d5c97 osd_req_add_get_attr_list +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x2b961301 osd_req_flush_obsd +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x32e4cd5b osd_req_read_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x36dcd522 osd_req_create_partition +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x3980c951 osd_req_decode_get_attr_list +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x3c6724b7 osd_execute_request_async +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x3dd7c9a3 osd_auto_detect_ver +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x4a13963d osd_dev_init +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x4dff60cc osd_req_flush_partition +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x57a060cb osd_req_remove_object +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x6cf4b50e osd_req_format +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x72f89d6d osd_req_list_partition_collections +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x74db1746 osd_req_read_sg +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x8de9e30d osd_req_list_dev_partitions +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x91cb14f0 osd_req_flush_object +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x94616276 osd_req_add_get_attr_page +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x96b3b1f3 osd_req_list_partition_objects +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xba9ef2df osd_req_set_attributes +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xc16a9c27 osd_req_read_sg_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xc50c3b7e osd_req_write_sg_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xc936b327 osd_finalize_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xc95a5bc0 osd_req_write_sg +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xcc5350e8 osd_req_list_collection_objects +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xce08431b osd_req_write +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xd6edeabf osd_req_add_set_attr_list +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xd7c38818 osd_req_read +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xe641ba19 osd_end_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xe7eb00ee osd_req_remove_partition +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xef45c191 osd_execute_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xeff74b89 osd_req_write_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xf0a0efe3 osd_req_get_attributes +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xf2e3968b osd_dev_fini +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xf40ecbde osd_start_request +EXPORT_SYMBOL drivers/scsi/osd/osd 0x4108eb2e osduld_path_lookup +EXPORT_SYMBOL drivers/scsi/osd/osd 0x44ca6069 osduld_info_lookup +EXPORT_SYMBOL drivers/scsi/osd/osd 0x53460b20 osduld_device_same +EXPORT_SYMBOL drivers/scsi/osd/osd 0x5fc48609 osduld_unregister_test +EXPORT_SYMBOL drivers/scsi/osd/osd 0x60465949 osduld_register_test +EXPORT_SYMBOL drivers/scsi/osd/osd 0xf2c65534 osduld_put_device +EXPORT_SYMBOL drivers/scsi/osd/osd 0xf813a80f osduld_device_info +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x098063d8 qlt_rdy_to_xfer +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x0a802cd1 qlt_unreg_sess +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x19c5a3c6 qlt_stop_phase1 +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x1ca2d456 qlt_enable_vha +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x1e690a4a qlt_xmit_tm_rsp +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x20039d27 qlt_xmit_response +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x4ee3a75b qlt_lport_register +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x719c2cf6 qlt_free_mcmd +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x73a32081 qlt_abort_cmd +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x7f331d56 qlt_lport_deregister +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x9265cbb6 qlt_free_cmd +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xf407aa2c qlt_stop_phase2 +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x1f55cd70 qlogicfas408_ihandl +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x2e180a37 qlogicfas408_queuecommand +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x3fd8cd71 qlogicfas408_detect +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x51e9665f qlogicfas408_info +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0xb7361929 qlogicfas408_disable_ints +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0xdbce6ba4 qlogicfas408_bus_reset +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0xde533a5c qlogicfas408_biosparam +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0xe1db910d qlogicfas408_abort +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0xe76b3b20 qlogicfas408_get_chip_type +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0xf2b95199 qlogicfas408_setup +EXPORT_SYMBOL drivers/scsi/raid_class 0x2439fab2 raid_class_release +EXPORT_SYMBOL drivers/scsi/raid_class 0x3d3cbbd3 raid_component_add +EXPORT_SYMBOL drivers/scsi/raid_class 0x5e5fd36d raid_class_attach +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x003d8a97 scsi_is_fc_vport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x0b0025cf fc_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x1ea7e819 fc_host_post_event +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x20eb30d7 fc_remote_port_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x46246a3e fc_remote_port_rolechg +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x479dc632 fc_vport_create +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x65c35a40 fc_block_scsi_eh +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x68914964 fc_host_post_vendor_event +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x7954b1ea fc_get_event_number +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x7a241b0d fc_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x9c83943a fc_remove_host +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xa3ae20c9 scsi_is_fc_rport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xe8f39eaf fc_remote_port_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xed574b25 fc_vport_terminate +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x0c291cdb sas_port_delete_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x0ddd1579 sas_rphy_remove +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x135b3b85 sas_port_alloc_num +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x1662e6e9 sas_rphy_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x18963455 sas_port_mark_backlink +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x1ca36747 sas_end_device_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x3a1480cc sas_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x3dc94222 sas_port_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x629a9bee sas_remove_host +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x7b68fd0c sas_port_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x81c94242 sas_read_port_mode_page +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x85cca57f sas_rphy_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x8c8ef902 sas_phy_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x944eecb0 sas_phy_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xa7d31349 scsi_is_sas_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xad8981e4 sas_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xae840f34 sas_phy_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xaf24c100 sas_port_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xb195a0e1 scsi_is_sas_port +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xb1aa6188 sas_expander_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xbc594f71 sas_rphy_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xc0753bf2 sas_remove_children +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xc885b301 sas_rphy_unlink +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xd7c1d10d sas_port_add_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xdab06742 sas_phy_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xe8f0a592 sas_port_get_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xeb3f3c90 sas_port_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xef2c4800 scsi_is_sas_rphy +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x3686ea09 spi_print_msg +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x554ccede spi_schedule_dv_device +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x56d6e696 spi_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x68454fe0 spi_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0xba509a14 spi_display_xfer_agreement +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0xf3308cb0 spi_dv_device +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0x09b366bf srp_rport_get +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0x405b6e05 srp_parse_tmo +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0x68169f8b srp_start_tl_fail_timers +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0x98f2fc32 srp_reconnect_rport +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0xb0e2d4fe srp_rport_put +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0x36813a42 ufshcd_shutdown +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0x4179b76e ufshcd_runtime_idle +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0x7278bfd8 ufshcd_runtime_suspend +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0xa7d240dc ufshcd_system_resume +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0xbb592971 ufshcd_alloc_host +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0xcf947c58 ufshcd_system_suspend +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0xf6e3dc2c ufshcd_runtime_resume +EXPORT_SYMBOL drivers/ssb/ssb 0x127ef0d8 ssb_device_disable +EXPORT_SYMBOL drivers/ssb/ssb 0x13c4a7fa ssb_bus_unregister +EXPORT_SYMBOL drivers/ssb/ssb 0x190faa80 ssb_bus_powerup +EXPORT_SYMBOL drivers/ssb/ssb 0x1db13dc0 ssb_bus_suspend +EXPORT_SYMBOL drivers/ssb/ssb 0x2b392957 ssb_chipco_gpio_control +EXPORT_SYMBOL drivers/ssb/ssb 0x2e13636f ssb_pmu_set_ldo_paref +EXPORT_SYMBOL drivers/ssb/ssb 0x307e9981 __ssb_driver_register +EXPORT_SYMBOL drivers/ssb/ssb 0x3478776d ssb_bus_sdiobus_register +EXPORT_SYMBOL drivers/ssb/ssb 0x3bab3621 ssb_device_is_enabled +EXPORT_SYMBOL drivers/ssb/ssb 0x5d8bf58f ssb_bus_may_powerdown +EXPORT_SYMBOL drivers/ssb/ssb 0x6ba76f36 ssb_set_devtypedata +EXPORT_SYMBOL drivers/ssb/ssb 0x72134161 ssb_pcicore_dev_irqvecs_enable +EXPORT_SYMBOL drivers/ssb/ssb 0x93acc40a ssb_pmu_set_ldo_voltage +EXPORT_SYMBOL drivers/ssb/ssb 0xad750d6d ssb_dma_translation +EXPORT_SYMBOL drivers/ssb/ssb 0xb7b4eb9d ssb_clockspeed +EXPORT_SYMBOL drivers/ssb/ssb 0xc0512e0f ssb_admatch_base +EXPORT_SYMBOL drivers/ssb/ssb 0xcb9783e3 ssb_commit_settings +EXPORT_SYMBOL drivers/ssb/ssb 0xcd0f7d8a ssb_driver_unregister +EXPORT_SYMBOL drivers/ssb/ssb 0xcf7dd44d ssb_device_enable +EXPORT_SYMBOL drivers/ssb/ssb 0xd1ccb7aa ssb_bus_pcibus_register +EXPORT_SYMBOL drivers/ssb/ssb 0xd481192b ssb_admatch_size +EXPORT_SYMBOL drivers/ssb/ssb 0xd8201e40 ssb_pcihost_register +EXPORT_SYMBOL drivers/ssb/ssb 0xee985b5f ssb_bus_resume +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x01ce311f fbtft_unregister_framebuffer +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x1edfa589 fbtft_write_gpio8_wr +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x35a11a08 fbtft_write_vmem16_bus9 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x44a3da65 fbtft_framebuffer_alloc +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x4cca7dbd fbtft_write_reg16_bus16 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x50db672f fbtft_write_vmem16_bus16 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x54766502 fbtft_remove_common +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x5addb7db fbtft_probe_common +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x6805f5c2 fbtft_write_reg8_bus9 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x6d45c548 fbtft_write_vmem16_bus8 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x879299ad fbtft_unregister_backlight +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x95111a94 fbtft_write_spi_emulate_9 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xa68bf5f3 fbtft_write_gpio16_wr +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xaae218e3 fbtft_init_display +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xb79bfdaa fbtft_dbg_hex +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xce767ae7 fbtft_register_backlight +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xe152f73b fbtft_read_spi +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xe9a39200 fbtft_write_vmem8_bus8 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xefbf19fb fbtft_write_reg8_bus8 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xf0d510fc fbtft_write_gpio16_wr_latched +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xf46663ba fbtft_write_reg16_bus8 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xfecf766f fbtft_framebuffer_release +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xfee9e032 fbtft_write_spi +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xffa69982 fbtft_register_framebuffer +EXPORT_SYMBOL drivers/staging/fwserial/firewire-serial 0x04bb6eca fwtty_port_get +EXPORT_SYMBOL drivers/staging/fwserial/firewire-serial 0x94475843 fwtty_port_put +EXPORT_SYMBOL drivers/staging/iio/addac/adt7316 0x37ddddfe adt7316_probe +EXPORT_SYMBOL drivers/staging/iio/magnetometer/hmc5843_core 0x58219ec5 hmc5843_common_suspend +EXPORT_SYMBOL drivers/staging/iio/magnetometer/hmc5843_core 0x5877acfd hmc5843_common_remove +EXPORT_SYMBOL drivers/staging/iio/magnetometer/hmc5843_core 0xe0f62d0a hmc5843_common_probe +EXPORT_SYMBOL drivers/staging/iio/magnetometer/hmc5843_core 0xe1fea0b5 hmc5843_common_resume +EXPORT_SYMBOL drivers/staging/iio/meter/ade7854 0x759605c6 ade7854_remove +EXPORT_SYMBOL drivers/staging/iio/meter/ade7854 0x9dd057f9 ade7854_probe +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x01a8f3a4 lnet_unregister_lnd +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x0d1d8144 lnet_finalize +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x1366b7ac LNetSetLazyPortal +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x16ba3535 lnet_parse +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x19670622 LNetNIInit +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x1b191752 lnet_msgtyp2str +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x1b658cdb lnet_copy_kiov2kiov +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x1ee5f15e lnet_ipif_query +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x1fe16fd5 LNetGet +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x204b8151 lnet_counters_reset +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x2aa9953d lnet_cpt_of_nid +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x2ac93e90 lnet_connect_console_error +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x33202a6c LNetGetId +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x38f88606 lnet_copy_iov2kiov +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x3c779ee0 LNetPut +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x3ee40991 lnet_sock_write +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x3f4f5b46 LNetNIFini +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x44183161 lnet_extract_kiov +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x4671758b lnet_net2ni +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x46959fa2 lnet_sock_connect +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x473ad33b LNetDist +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x49993ea3 lnet_extract_iov +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x4aa780b7 lnet_register_lnd +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x58a1ca89 LNetMDUnlink +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x5eaf1c2b lnet_copy_kiov2iov +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x5fee352c lnet_acceptor_timeout +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x61f784b2 LNetClearLazyPortal +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x64cdea3a LNetCtl +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x65242d57 lnet_create_reply_msg +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x66d449b1 lnet_ipif_enumerate +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x6f7be171 LNetEQGet +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x722c76e5 LNetMDAttach +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x7c6ff377 lnet_kiov_nob +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x7d59a7fe LNetMEInsert +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x80ee3b29 lnet_sock_accept +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x854ab844 LNetEQWait +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x9207cdec lnet_sock_getaddr +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x9de986d3 LNetEQAlloc +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xa56de08d lnet_ipif_free_enumeration +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xaa414970 LNetMEUnlink +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xaa9b477e LNetMDBind +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xb20da2b1 lnet_copy_iov2iov +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xb75f7953 LNetEQFree +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xba5566d2 lnet_acceptor_port +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xbf0760a2 LNetMEAttach +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xc44a2d50 lnet_notify +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xcabf4c5e lnet_set_reply_msg_len +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xd7c50cb9 lnet_init +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xdb5b0f9b lnet_sock_read +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xdf2e2272 lnet_sock_getbuf +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xe0fd4277 lnet_sock_listen +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xe4c7eea3 lnet_connect +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xe7407276 lnet_sock_setbuf +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xe8124744 lnet_fini +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xe864dc28 the_lnet +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xf1b316bf LNetSnprintHandle +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xf5dc6337 lnet_iov_nob +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xfa106804 lnet_counters_get +EXPORT_SYMBOL drivers/staging/lustre/lnet/selftest/lnet_selftest 0x078db139 lstcon_ioctl_entry +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0x149b1330 seq_client_flush +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0x1c4bb5f9 LU_OBF_FID +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0x35d64206 seq_client_alloc_fid +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0x375e6f8d LUSTRE_BFL_FID +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0x546b7ec7 client_fid_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0x8d2ac5a1 client_fid_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0x9a1669ce seq_client_get_seq +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0xae61cff5 LU_DOT_LUSTRE_FID +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0xc997a02f LUSTRE_SEQ_SPACE_RANGE +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0xca5b65c5 seq_client_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0xecee2727 LUSTRE_SEQ_ZERO_RANGE +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0xefd98d38 seq_client_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0x014ac772 fld_client_del_target +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0x74ab48c6 fld_client_lookup +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0x9cdf6f03 fld_client_debugfs_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0xb61dc51d fld_client_add_target +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0xde437b92 fld_client_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0xfbd5bad6 fld_client_flush +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0xfd9586f1 fld_client_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x000c507f libcfs_debug_dumplog +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x01db5172 cfs_percpt_atomic_summary +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x03ae0009 cfs_hash_lookup +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x069f9bb2 cfs_wi_schedule +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x08ada613 libcfs_console_backoff +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x0aa98a7a cfs_hash_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x0b4b1546 libcfs_lnd2modname +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x0de6c369 cfs_cap_lower +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x0f5eff79 cfs_percpt_number +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x12cd873d cfs_cpt_nodemask +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x13550229 lbug_with_loc +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x1574b0a7 cfs_hash_debug_str +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x15f6b527 libcfs_kkuc_msg_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x17ac7833 libcfs_deregister_ioctl +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x1a60d439 cfs_parse_nidlist +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x1b1e5f13 cfs_percpt_lock_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x2143ceb7 cfs_cpt_table_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x24f39469 cfs_cpt_cpumask +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x2663147a __cfs_fail_timeout_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x26b80c60 cfs_cpt_current +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x27b6d3ba cfs_ip_addr_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x297fac97 cfs_hash_bd_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x2a4ed56a cfs_hash_rehash_key +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x2adae33e cfs_init_timer +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x2c4efe0b cfs_hash_dual_bd_lookup_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x2da017ea cfs_cpt_set_node +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x2dbe54b2 cfs_trimwhite +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x2ef02848 cfs_hash_del_key +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x31a4294d cfs_cpt_unset_nodemask +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x31fc5082 cfs_crypto_hash_update +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x346b9d41 cfs_cpt_weight +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x361e82d4 cfs_firststr +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x36b60398 cfs_race_waitq +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x377f93fb cfs_srand +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x389ca502 libcfs_debug_mb +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x39fdcd2b libcfs_debug_set_level +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x3c1285bd libcfs_subsystem_debug +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x3c4937a9 cfs_hash_for_each_empty +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x3d2cce75 cfs_cpt_set_nodemask +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x3d5e6098 cfs_race_state +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x3ef0d90c libcfs_kkuc_group_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x3fe13eaa cfs_cpt_unset_node +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x4062f92b libcfs_run_lbug_upcall +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x411db754 cfs_crypto_hash_final +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x413c5299 cfs_hash_bd_move_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x42393d2a cfs_hash_bd_lookup_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x44839bbb cfs_rand +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x463e853d cfs_hash_rehash_cancel_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x475f4d26 cfs_hash_getref +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x48f163c6 libcfs_str2anynid +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x4a95faa2 cfs_timer_deadline +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x4a99af72 cfs_clear_sigpending +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x4e8fbec5 cfs_cpt_table_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x4f1f2fa5 cfs_crypto_hash_digest +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x50345570 libcfs_str2net +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x5051b6d2 portal_enter_debugger +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x509d38b0 libcfs_net2str +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x50bca709 cfs_cpt_spread_node +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x5202f151 cfs_percpt_lock_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x54fd9a71 cfs_percpt_index +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x56a518ce cfs_cpt_set_cpu +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x575d3042 libcfs_kkuc_group_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x58a7ee00 libcfs_catastrophe +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x5946ec2b cfs_percpt_current +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x59f95db2 cfs_cpt_clear +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x5aee0169 cfs_percpt_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x5c013b81 cfs_expr_list_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x5dce9e80 libcfs_lnd2str +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x600fae9b cfs_hash_for_each_key +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x61d6e1e0 cfs_hash_add_unique +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x62289d65 cfs_array_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x62b9cb2e cfs_percpt_atomic_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x64685fef libcfs_console_min_delay +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x6564c55b libcfs_console_max_delay +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x65dd9f0c libcfs_run_upcall +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x67398404 cfs_wi_sched_destroy +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x675e1725 cfs_hash_bd_add_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x6aa9d0e6 cfs_hash_size_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x6b18b7fc cfs_hash_for_each_safe +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x6c905b5f libcfs_watchdog_ratelimit +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x71f662a3 libcfs_debug +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x76eb211e cfs_crypto_hash_update_page +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x77ef5792 cfs_hash_dual_bd_unlock +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x7a63872e cfs_timer_disarm +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x7b0b748a cfs_ip_addr_parse +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x7d11d8ec cfs_cpt_unset_cpumask +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x7e6f6485 cfs_ip_addr_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x7f04ceef cfs_hash_bd_peek_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x7fab218c cfs_hash_dual_bd_findadd_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x7fda989d cfs_fail_loc +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x8151c3aa cfs_cap_raised +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x83d795e4 cfs_match_nid +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x857aaea7 libcfs_register_ioctl +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x865483a9 libcfs_kvzalloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x8840f591 cfs_block_allsigs +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x8c500d25 cfs_cpt_table_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x8c85e4e6 cfs_crypto_hash_speed +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x8f5f81ec cfs_hash_dual_bd_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x91504e8b libcfs_kmemory +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x924ef5a8 cfs_hash_is_empty +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x940ed192 libcfs_stack +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x94c8f789 cfs_hash_cond_del +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x95620e8c cfs_wi_deschedule +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x97b0b9bc cfs_enter_debugger +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x9879b229 cfs_get_random_bytes +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x994ac27f cfs_cpt_table +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x9bd94a35 cfs_hash_bd_del_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x9d7193e4 cfs_hash_rehash_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x9e420643 cfs_restore_sigs +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x9f82f712 cfs_trace_copyout_string +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xa0650897 cfs_cpt_unset_cpu +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xa2b68b2a cfs_array_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xa4069c5c cfs_percpt_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xa6b9dee6 libcfs_kkuc_group_rem +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xa6be5411 add_wait_queue_exclusive_head +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xa9088531 cfs_expr_list_values +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xa9c0ca61 cfs_timer_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xa9dc74e2 cfs_trace_copyin_string +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xae1545e4 cfs_hash_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xb09e1f19 libcfs_kvzalloc_cpt +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xb18cbfd1 cfs_hash_del +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xb1b8f05d cfs_percpt_unlock +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xb289de95 cfs_hash_bd_finddel_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xb4e48237 cfs_cpt_online +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xb8c52b1b cfs_timer_done +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xbab4f34e cfs_timer_arm +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xbb18b4f1 cfs_hash_for_each +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xbf7a37f1 cfs_signal_pending +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xc05afcd7 cfs_hash_rehash +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xc0ea7fc0 cfs_expr_list_parse +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xc2dfd791 libcfs_console_ratelimit +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xc39fd2f9 libcfs_panic_on_lbug +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xc3ab0e9f cfs_hash_findadd_unique +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xc49b1c62 cfs_percpt_atomic_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xcb385db9 libcfs_debug_binary +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xcc001df7 cfs_hash_bd_findadd_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xcc20e694 libcfs_nid2str +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xccc45639 cfs_free_nidlist +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xcd38904c cfs_wi_exit +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xce1a88f2 libcfs_arch_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xcf61bacb __cfs_fail_check_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xd6a52be3 libcfs_printk +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xd96f406d cfs_cap_raise +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xda3a5d85 cfs_hash_for_each_nolock +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xde17bb8d libcfs_isknown_lnd +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xdf2789c0 cfs_curproc_cap_pack +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xdfca7737 cfs_hash_putref +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xdfecb98d cfs_block_sigs +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xe012b076 cfs_hash_dual_bd_finddel_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xe262a6e2 cfs_timer_is_armed +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xe2f91ce3 libcfs_debug_msg +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xe3bf6897 cfs_percpt_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xe5c5e952 cfs_wi_sched_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xe7b54314 libcfs_arch_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xea411f63 cfs_block_sigsinv +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xeaf51f70 cfs_hash_hlist_for_each +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xeb4913fd cfs_cpt_number +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xec1f56d5 libcfs_str2nid +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xeceac781 cfs_fail_val +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xef66c80b cfs_cpt_set_cpumask +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xf1872998 cfs_cpt_of_cpu +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xf3565b71 libcfs_debug_vmsg2 +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xf440bb38 libcfs_kkuc_group_foreach +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xf8a8644b libcfs_id2str +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xf94025d1 libcfs_str2lnd +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xf9701ad1 cfs_hash_dual_bd_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xfc4c70a2 cfs_cpt_bind +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xfe565fa9 cfs_crypto_hash_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xfeb05a56 cfs_hash_debug_header +EXPORT_SYMBOL drivers/staging/lustre/lustre/llite/lustre 0x13a95cd7 ll_iocontrol_register +EXPORT_SYMBOL drivers/staging/lustre/lustre/llite/lustre 0x3e4c6828 ll_stats_ops_tally +EXPORT_SYMBOL drivers/staging/lustre/lustre/llite/lustre 0x57d36c2c ll_osscapa_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/llite/lustre 0x9b9f3346 ll_direct_rw_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/llite/lustre 0xcd3cde92 ll_iocontrol_unregister +EXPORT_SYMBOL drivers/staging/lustre/lustre/lov/lov 0x207c6a69 lov_stripe_unlock +EXPORT_SYMBOL drivers/staging/lustre/lustre/lov/lov 0x23e937ab lov_stripe_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/lov/lov 0x2c64976c lov_lsm_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/lov/lov 0x2ff85c3c lov_lsm_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/lov/lov 0x9f5d1b92 lov_device_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/lov/lov 0xc7bb24cd lov_read_and_clear_async_rc +EXPORT_SYMBOL drivers/staging/lustre/lustre/mdc/mdc 0x0df21540 it_set_disposition +EXPORT_SYMBOL drivers/staging/lustre/lustre/mdc/mdc 0x5919b6d6 it_clear_disposition +EXPORT_SYMBOL drivers/staging/lustre/lustre/mdc/mdc 0x5ef8417d it_disposition +EXPORT_SYMBOL drivers/staging/lustre/lustre/mdc/mdc 0xfe26c5a6 it_open_error +EXPORT_SYMBOL drivers/staging/lustre/lustre/mgc/mgc 0xdc287f95 mgc_fsname2resid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x00d6b39c cl_env_unplant +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0148ff4b cl_lock_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x01665e34 class_parse_net +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x018d8cf3 lu_object_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x01dddafa lustre_common_put_super +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0204d2c7 cl_page_list_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x023ea32e dt_index_walk +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x02adec48 lprocfs_rd_atomic +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x035852d0 lustre_swab_llog_rec +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0374d84c cl_unuse_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x03b37a9c lu_kmem_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x041586e0 cl_io_slice_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x04a0eda5 llog_close +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x057f6d4b class_find_old_param +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x05af6aa1 cl_enqueue_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x063c273f lprocfs_seq_read_frac_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x06d82d96 class_handle_unhash +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x07183483 dt_device_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x071ed06e cl_io_prepare_write +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x07406b92 cl_io_iter_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x07682fe0 cl_sync_io_note +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x07aa68bb lustre_swab_lustre_cfg +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x07cf78dc lu_device_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x07d45876 obdo_set_parent_fid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x083942ff class_del_profile +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0845dd0a lu_context_key_quiesce +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x088dccc2 lprocfs_oh_tally +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0892d6d3 cl_lock_discard_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x093f6acb lu_cdebug_printer +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x099a1ead llog_cat_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x09f1ae63 cl_io_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0a018184 class_config_llog_handler +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0a6dd87e obdo_from_md +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0aad0835 dt_version_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0ab898b5 obdo_cpu_to_le +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0b513ee7 obd_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0be72884 lu_site_init_finish +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0c080c58 llog_open_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0c378d79 lustre_swab_llog_hdr +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0c608ae1 cl_page_unassume +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0e8e3397 dt_find_or_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x10910cb4 cl_io_unlock +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x10e3523a class_import_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x11495519 lprocfs_write_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x117bd7dc cl_site_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x120e2a08 cl_lock_enqueue_wait +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x123e5b5b dt_directory_features +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x12c03711 cl_page_find +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x12c70ac8 lustre_process_log +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x142f6d88 ldebugfs_add_simple +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1491dc30 lu_context_tags_clear +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x14a4b6b8 lprocfs_single_release +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x14c9f0ed lprocfs_rd_server_uuid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x15834ca2 lu_site_purge +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x173fbd9f lu_context_enter +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x192796fc llog_declare_write_rec +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1b6b59a6 cl_lock_is_intransit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1b936541 obdo_to_inode +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1d0cc2af cl_page_completion +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1d239f3a cl_io_is_going +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1d60164a cl_page_list_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1e1259ef class_decref +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1e485f36 cl_page_top +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1fcb90f7 ldebugfs_register +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x20646dd6 class_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x20724388 cl_index +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x20a2cb9b lustre_register_client_fill_super +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2145ec73 cl_lock_get_trust +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x221826f1 class_parse_nid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x24a59e14 cl_wait_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x24aff8c4 llog_write +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x24efdfcd lprocfs_rd_conn_uuid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2547efae lustre_uuid_to_peer +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x25a76fe3 cl_2queue_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x275cdc7a cl_env_reexit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x27ad75ed cl_lock_request +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x27c1d175 ldebugfs_add_vars +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x286860f5 class_handle_free_cb +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x297cf5e0 class_handle2object +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x29bb846e cl_page_list_unmap +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2a08e9a6 lu_context_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2a9f210f cl_unuse +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2ae1cd79 kuc_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2bc0d253 cl_io_rw_advance +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2bc2eed3 cl_2queue_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2bdde2e5 class_exp2obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2c049f98 obd_export_evict_by_uuid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2cceb7a3 class_handle_hash +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2ce9eef3 cl_io_rw_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2dc371aa cl_lock_hold_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2dd44e67 lprocfs_obd_rd_max_pages_per_rpc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2de24032 llog_cat_init_and_process +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2eef4835 class_connect +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2f75ad8b llog_copy_handler +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2fe7fa82 cl_object_attr_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3077a9f7 cl_lock_slice_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x311bc2a0 dt_txn_hook_commit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x316d9b5a capa_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x31b8bef2 cl_page_prep +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3242ed35 obdo_cachep +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x32ba7a38 dt_quota_slv_features +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x333f1d26 cl_site_stats_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x33c151e3 lu_buf_realloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3419861f dt_device_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3625143e llog_write_rec +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x369be015 obdo_le_to_cpu +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x37ed6e4b at_early_margin +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3832cd23 cl_object_find +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3839bc8f llog_cat_reverse_process +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x388cf186 obd_export_evict_by_nid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x38fb0c90 class_match_param +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3a1ef08a lu_object_anon +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3aaf7f86 lprocfs_rd_u64 +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3bb25f25 lu_context_exit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3bb28242 lprocfs_free_md_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3bc40164 class_conn2cliimp +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3bfc355d cl_lock_extransit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3df589fb dt_txn_hook_stop +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3eab7bfe LU_BUF_NULL +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3ef4577b capa_lookup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3f25c782 obd_max_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4089dfb7 __llog_ctxt_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x40a79424 cl_object_glimpse +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x40bc7a6e lustre_end_log +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x419da90f cl_lock_mutex_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x41a92d36 cl_lock_disclosure +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x41d27b1c dt_index_read +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4357b315 lprocfs_counter_sub +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x44775db7 class_uuid2obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x44c1da62 llog_init_handle +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x44f61783 cl_lock_closure_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x452f559a lu_buf_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x45310272 class_unlink_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x45772cc6 cl_object_attr_unlock +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x45bdafae llog_cat_add_rec +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x46346d43 class_name2obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x46c1b4e3 lprocfs_obd_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x471ef8ab cl_page_lookup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x474ed5bd lustre_swab_ll_fid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x475abef7 dt_version_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x47b35f7d statfs_unpack +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x482d3cb5 capa_cachep +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x494cfb52 lustre_acl_xattr_merge2ext +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x49a0f6ea lustre_posix_acl_xattr_2ext +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x49ac2afd llog_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x49da3dd2 class_add_conn +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4a58e4e4 obdo_from_la +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4a907b63 lu_device_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4ac58713 obd_connect_flags2str +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4ad9cb20 class_get_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4b37d5ea lprocfs_rd_state +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4c190aad lprocfs_find_named_value +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4c299a4a cl_page_gang_lookup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4c4c700b obd_alloc_fail +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4c71819f cl_io_start +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4cb940cb cl_pages_prune +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4d13458b kuc_len +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4d1cb55f cl_object_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4e26403b cl_page_is_under_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4f2230ce llog_open +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4f231721 cl_page_list_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4f55712d dt_txn_hook_start +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4f92cd76 cl_queue_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4fee36e5 cl_page_slice_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x500aa1a0 cl_io_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x50313824 cl_type_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x505b3c78 ldebugfs_add_symlink +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x507d033c lu_context_key_revive_many +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x50c7fc36 ptlrpc_put_connection_superhack +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x50e30710 cl_object_prune +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x513635bf cl_page_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5140ee00 class_export_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5151c076 llog_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x52d841ef cl_lock_error +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x52f9c972 class_import_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x53a0a2b6 lprocfs_rd_timeouts +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x544a5167 la_from_obdo +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x54885f87 ldlm_timeout +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x554eaaf5 cl_req_page_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5569d7a5 dt_txn_callback_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x557e7b14 lustre_posix_acl_xattr_filter +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x558bec27 obd_ioctl_getdata +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x564e9d44 init_capa_hash +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x570d09ae lustre_swab_lu_fid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x582b013d dt_quota_glb_features +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5847930e obd_memory +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x58592b59 obdo_from_inode +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5a20d896 obd_memory_max +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5a3a9988 cl_env_nested_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5aaf82ec cl_lock_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5ba157c1 cl_page_clip +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5bc022c5 lprocfs_dt_rd_filestotal +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5cc18214 lu_device_type_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5cd7532e llog_is_empty +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5cdd9997 cl_lock_hold_release +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5d077548 cl_enqueue +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5d34ae0d cl_lock_mode_name +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5da3f5b8 ldebugfs_seq_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5deef2bf cl_io_end +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5ed568da llog_reverse_process +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5f1c5333 cl_stack_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5f629c92 dt_try_as_dir +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5fe97b73 block_debug_check +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x600f1f3b cl_object_header_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x602fb31c cl_env_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6033b908 obdo_cmp_md +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x60c78fc8 class_conn2obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x61482e8b cl_page_disown +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x631fd7b9 lustre_ext_acl_xattr_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x633a10c5 lu_context_key_degister +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6568bbcf cl_io_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x65a7170a lu_object_put_nocache +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x67296c74 dt_read +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6734adbd lprocfs_read_frac_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x675244fa dt_otable_features +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x676da781 llog_declare_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x67ea83f4 cl_req_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x685a0fd5 cl_object_attr_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6890d175 lustre_get_jobid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x68bd49da lprocfs_oh_clear +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x69586952 lprocfs_wr_uint +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x698b61fc cl_lvb2attr +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x698f2797 lu_device_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x69af8945 ldebugfs_register_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x69c42114 at_min +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x69c8ce35 cl_2queue_discard +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x69da6a5d cl_offset +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6a57cbbe class_detach +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6b6d3e86 cl_use_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6c8e922a llog_cat_process +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6cd65a0a lprocfs_init_ldlm_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6d8d8b85 cl_lock_intransit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6fcb7042 lprocfs_counter_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6ff1bdeb cl_io_lock_alloc_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7047858c llog_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7092d7c9 cl_lock_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x716e2f17 cl_lock_hold +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7340c2d5 lu_dev_add_linkage +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x73cc5a60 dt_locate_at +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x73ed6019 cl_io_loop +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x742559b1 class_unregister_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x74e6f91f cl_lock_at_pgoff +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x752f71a8 class_get_profile +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x756a77f3 class_parse_nid_quiet +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x76e2031f cl_io_lock_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x77498e9f lu_site_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x77d2089a class_name2dev +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7802fcd7 lustre_swab_llogd_conn_body +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x789796a1 obd_zombie_barrier +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x78a12149 class_find_client_obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7b4fc57b at_max +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7b65dee3 cl_page_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7ce08177 class_export_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7d8aba2d cl_page_find_sub +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7de301ac lu_object_find_at +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7edcafa0 cl_env_reenter +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7f1e5fd3 lprocfs_init_ops_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7f70bfcc lu_device_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7f7d7cd9 lu_buf_check_and_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7fd486cc cl_page_flush +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7fe5561a obd_dirty_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8031efb8 lprocfs_dt_rd_kbytestotal +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x806cc497 class_add_uuid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x80ce6cd2 llog_cat_cancel_records +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x80fc0ab6 lu_object_header_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x816bacd0 lu_context_key_quiesce_many +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x81742d89 obd_ioctl_popdata +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x81eb3905 lprocfs_free_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x829d38eb cl_req_attr_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x831f656c class_process_config +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8446b9a8 obdo_to_ioobj +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8489f086 obd_alloc_fail_rate +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x849e5385 obd_update_maxusage +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8503c454 lu_buf_check_and_grow +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x85898443 lprocfs_clear_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x860b0f10 cl_2queue_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x86753b4c lu_env_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x873f51ae llog_sync +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x87606f70 class_num2obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x87af25e8 cl_page_size +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x87d9de64 cl_wait +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8819c051 dt_object_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x88993fc6 cl_page_vmpage +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x88ab2ac5 class_exp2cliimp +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8a4bead1 cl_lock_nr_mutexed +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8aa2c358 lprocfs_dt_rd_blksize +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8b3e9269 lprocfs_exp_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8b5f4057 lu_context_tags_update +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8ba6e479 lustre_swab_lu_seq_range +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8e06a867 class_disconnect_exports +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8e10e6d6 server_name2svname +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8e8451e3 llog_declare_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8effc058 cl_lock_modify +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8f063a5d cl_lock_enclosure +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8f67314c obd_dump_on_eviction +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x90f69ed1 cl_lock_weigh +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9129defe cl_lock_peek +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9148e563 cl_page_list_discard +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9187cab8 lu_context_key_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9213d013 cl_page_list_splice +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9221d024 lprocfs_init_mps_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x925215a9 dt_lookup_dir +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x92e58479 obd_dump_on_timeout +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9388ac85 dt_declare_version_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x93b46468 lu_session_tags_clear +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x93e51c99 lu_object_header_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9420e2b8 cl_env_peek +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x942f8612 class_config_parse_llog +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9512d507 lustre_acl_xattr_merge2posix +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x955e813a dt_txn_callback_del +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x955f5220 ldlm_timeout_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x95735c6c at_extra +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x959efc68 lu_context_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x95e0c302 cl_lock_descr_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x95f9a44e cl_lock_closure_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x95ff6717 cl_req_page_done +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9767adce class_uuid2dev +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x97be79c3 cl_io_read_page +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x97d03783 at_history +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x99b35f27 _debug_capa +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9ac5fdfc cl_page_delete +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9b1ed9d8 obd_jobid_var +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9cdb5f94 cl_io_sub_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9ce0419e lu_context_key_degister_many +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9db60cf5 cl_sync_io_wait +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9dbb17b6 lprocfs_dt_rd_kbytesfree +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9e7aa316 lprocfs_wr_atomic +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9f6bc28b obd_max_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa12afa1e class_put_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa160da4a lu_object_header_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa1614e9e cl_lock_at +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa2cc4f9a cl_lock_release +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa34a1269 ldebugfs_remove +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa3d26f99 cl_env_nested_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa3ef6f9f llog_erase +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa4c2140f class_fail_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa56d2545 cl_lock_ext_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa5fb234f lprocfs_write_frac_u64_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa6746bec ldebugfs_obd_seq_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa674c241 kuc_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa79bac4d cl_2queue_disown +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa7e16614 lu_kmem_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa82c1b5e llog_cat_declare_add_rec +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa8588134 lu_object_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa87329b3 class_search_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa9794c7e capa_cpy +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xaa18a67f cl_page_make_ready +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xaa21b7a0 lustre_register_quota_process_config +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xab1f3bee obd_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xab5cc887 cl_io_submit_sync +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xab829776 llog_backup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xabccd08c cl_page_is_vmlocked +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xabf45922 capa_decrypt_id +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xac78092b cl_object_kill +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xac7f1596 kuc_ptr +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xacc11b8c md_from_obdo +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xad239800 lu_site_stats_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xad9d225e cl_lock_mutex_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xaebaa82c lu_site_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb01963a6 class_uuid_unparse +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb1b89b6d class_attach +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb1cb48c0 cl_io_commit_write +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb2410ef7 class_register_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb2649a5b dt_store_resolve +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb2a7d499 lu_object_unhash +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb35519ed lustre_swab_cfg_marker +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb37807f5 lprocfs_rd_name +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb3c37622 lprocfs_rd_connect_flags +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb41998cd lustre_cfg_rename +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb444a798 cl_lock_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb473d2eb cl_page_list_assume +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb4792683 lu_object_add_top +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb4b3fe79 cl_lock_user_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb4d2819f class_new_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb4f4c7d2 lu_env_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb4f8ee63 lprocfs_read_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb51d9a2d dump_exports +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb5b466f8 cl_lock_unhold +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb5d2b158 lu_env_refill_by_tags +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb635af9e dt_acct_features +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb69329fa obdo_refresh_inode +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb6ba5dd5 kuc_ispayload +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb743ec6a dt_mode_to_dft +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb7587df5 cl_io_top +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb7909e1d lu_env_refill +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb7b7dfa1 dt_store_open +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb7b80f13 lu_context_refill +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb8c62bd0 lprocfs_oh_tally_log2 +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xba985283 lustre_register_client_process_config +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbacac922 lprocfs_write_frac_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbb715a25 obdo_from_iattr +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbba2a27a llog_cancel_rec +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbc436a0d obdo_cpy_md +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbc702db7 cl_io_submit_rw +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbe0151fb llog_cat_close +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbe664cc7 cl_page_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbf26b692 cl_object_attr_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbf8c5d45 lustre_register_kill_super_cb +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc09d4f85 lprocfs_at_hist_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc0bf7ef2 obd_debug_peer_on_timeout +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc0cfb7ee lu_object_locate +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc15bb899 cl_io_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc18d06cf lu_buf_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc1df9fc2 lprocfs_alloc_md_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc27c0500 cl_page_cache_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc29aa5a9 cl_lock_user_del +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc30e4269 cl_vmpage_page +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc369ea5c cl_page_assume +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc3b02de2 obd_exports_barrier +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc404837c lprocfs_stats_alloc_one +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc510876e cl_page_list_own +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc66e9c69 class_destroy_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc70cd678 cl_2queue_init_page +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc737fdf1 llog_exist +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc8607f18 cl_lock_closure_build +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc8da7bfe cl_object_header_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc8eacfd0 lu_object_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc9882756 cl_object_top +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc9c2c222 lprocfs_alloc_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcaf32079 cl_object_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcb0ab67f obd_max_dirty_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcc0c46a0 llog_cat_process_or_fork +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xccde7342 cl_req_prep +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcd44111a class_devices_in_group +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcd7537ee get_devices_count +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcdf4b0eb cl_page_is_owned +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcfcced5e obd_export_nid2str +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd0101fc1 lprocfs_counter_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd08827c0 server_name2fsname +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd0a45333 cl_lock_is_mutexed +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd10aa042 lustre_swab_llog_id +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd2017930 lprocfs_oh_sum +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd22c3879 lu_context_key_revive +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd2914490 cl_lock_descr_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd3145bae class_disconnect_stale_exports +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd337fa4f cl_page_list_disown +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd35c634d lu_object_find +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd452f247 lu_dev_del_linkage +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd488ce16 cl_env_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd49819f2 llog_process +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd4a161c3 class_conn2export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd4bcccdb class_disconnect +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd552c0ce cl_page_unmap +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd579a558 lu_stack_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd62410ad cl_env_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd6a21e1d obd_devs +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd70fe669 lustre_swab_llogd_body +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd715d0d1 llog_process_or_fork +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd76e1cb9 lu_object_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd7764e3e cl_object_has_locks +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd7bc8654 obd_timeout +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd7bfbc9c lprocfs_dt_rd_filesfree +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd7f7b340 cl_lock_mode_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd96c0ea0 cl_env_implant +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xda03bb19 cl_page_own_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xda2d2ca7 class_new_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xda5b1ced class_find_param +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdac644c8 lustre_posix_acl_xattr_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdb13dce1 capa_list +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdb2994ef iattr_from_obdo +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdba7e0cb class_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdcc40af0 class_check_uuid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdcff2ffe cl_lock_signal +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdd495d62 cl_page_header_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdd9d8182 lu_object_find_slice +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xde7d985b obd_dirty_transit_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdf956ac4 cl_lock_state_wait +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe028cf84 capa_encrypt_id +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe03a5d3c class_incref +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe0518783 lprocfs_rd_uint +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe0abe520 dump_lniobuf +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe0ac8691 cl_locks_prune +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe0eed2e7 cl_lock_delete +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe146cccb cl_sync_io_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe1579bfb lprocfs_stats_collect +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe1a7144f cl_lock_mutex_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe2431fbe lprocfs_obd_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe265f466 cl_site_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe29a7df4 cl_attr2lvb +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe2eb4470 class_get_next_param +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe694dfdf cl_lock_state_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe741d785 lprocfs_free_obd_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe74c3485 cl_req_completion +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe7d83236 cleanup_capa_hash +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe8e84c32 class_match_nid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xeaed3b50 lu_device_type_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xebf63495 lprocfs_rd_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xec7d6b85 obd_timeout_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xed1e5be4 cl_page_at +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xee0e4793 capa_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xee2f8ae7 lu_object_invariant +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xee68bc29 lu_session_tags_update +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xee80b9dd class_connected_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xeeeb79fa do_lcfg +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xef76f858 block_debug_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xefb6d161 cl_page_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf01e2527 server_name2index +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf0cfef45 class_config_dump_llog +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf10711e9 cl_io_iter_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf137cc32 llog_thread_key +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf1ba77cf dt_object_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf1e4bb19 cl_page_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf26196da dt_record_write +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf28c0031 class_process_proc_param +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf2fd6695 statfs_pack +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf37ae573 cl_page_own +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf3bc5b9d dt_lfsck_features +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf3f29e16 cl_page_list_del +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf3fb5721 lu_context_key_register +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf490d5f9 class_del_profiles +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf4e13789 lprocfs_seq_release +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf5eb5b1d cl_2queue_assume +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf601f7a2 dt_key +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf60d4659 capa_count +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf7020831 lprocfs_dt_rd_kbytesavail +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf7562e98 lu_context_key_register_many +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf7dd9178 lu_object_assign_fid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf85a148d cl_page_list_move +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf917f0d5 cl_page_discard +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf9d685e0 cl_conf_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfa1e4308 class_handle_hash_back +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfa813d06 capa_hmac +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfb51a4f4 lu_site_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfb9ee2ce lu_object_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfbc28dfd llog_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfbea0098 lu_types_stop +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfc7f18d0 obd_pages_max +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfd68d17a class_notify_sptlrpc_conf +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfdbe1557 lprocfs_write_u64_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfdcf39d2 lprocfs_alloc_obd_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfeab5d51 llog_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfec1ac00 cl_req_slice_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfede80d4 class_manual_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xff57e92d class_match_net +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xff660c68 dt_record_read +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfffc1f11 lustre_swab_ost_id +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x00cb99c1 RQF_LDLM_INTENT_GETXATTR +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x00d95039 ptlrpcd_decref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x01bf52ef ptlrpc_save_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x01d6ef7f ldlm_pools_recalc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x01f623f3 lprocfs_rd_pinger_recov +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0227136f req_capsule_server_sized_swab_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x03ef7df2 ptlrpc_lprocfs_brw +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x04622886 ldlm_prep_enqueue_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x048b59d5 lustre_msg_set_handle +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0515f93b RQF_FLD_QUERY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x05cfcfa6 req_capsule_server_pack +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x06b3942b lustre_swab_lov_user_md_objects +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x071fc74a RQF_LDLM_ENQUEUE_LVB +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x07605c7d interval_find +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x08bb2d27 lustre_swab_obd_ioobj +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x095587d0 lustre_msg_buflen +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0a3130b0 RMF_MDT_EPOCH +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0a96ac65 req_capsule_server_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0ac252b2 lustre_msg_set_jobid +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0b174c28 ptlrpc_set_destroy +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0bcacb5d RMF_MDS_HSM_USER_ITEM +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0c2d9c43 lustre_swab_lip_header +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0cf343dd RQF_LDLM_INTENT_BASIC +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0d827a3b ldlm_namespace_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0eacbe53 ptlrpc_error +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0f3e4486 lustre_pack_reply_flags +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x10f18f20 interval_iterate_reverse +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x11393abc ptlrpc_at_set_req_timeout +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x115017f6 req_layout_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x11ba484a ptlrpc_prep_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x12a8f2f5 sptlrpc_cli_enlarge_reqbuf +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x12b6f5a3 ptlrpc_connection_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x14708afc lustre_swab_mdt_rec_reint +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1483eca4 ldlm_lock_addref_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x14ab8b71 ldlm_prep_elc_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x14d192db lustre_msg_size +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x15545046 ptlrpc_resend_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x15a3e4db RMF_GETINFO_VAL +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x15e4e7c7 ldlm_namespace_new +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x172fb86d lustre_msg_hdr_size +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1747d8b3 ldlm_lockname +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x17950f60 RQF_SEC_CTX +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x187c8ef2 ldlm_cli_cancel_unused +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x19108a0f RQF_OST_DISCONNECT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x19295c3d ldlm_pool_shrink +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x19c08934 RQF_LDLM_INTENT_CREATE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1a6a3ce9 RQF_OST_GET_INFO_LAST_ID +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1a9b76aa RMF_OBD_QUOTACTL +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1abd3258 RMF_SETINFO_VAL +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1ace4b5f RQF_LDLM_BL_CALLBACK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1ad6c330 RMF_EAVALS +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1ae46aef ptlrpc_request_alloc_pool +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1b9ddb7a sptlrpc_import_flush_my_ctx +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1bae0270 interval_iterate +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1be21715 lustre_msg_size_v2 +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1c300d8e lustre_msg_get_slv +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1c588bc1 ptlrpc_set_add_cb +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1d043548 lustre_msg_set_op_flags +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1dc2051d RMF_SEQ_OPC +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1de9c288 lustre_swab_layout_intent +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1e465289 req_capsule_shrink +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1e4b1acc ptlrpc_prep_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1e8e48a4 sptlrpc_flavor_has_bulk +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1eb2a65f RQF_OST_GETATTR +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1ee46b51 lustre_init_msg_v2 +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1ee9eb3c RQF_MDS_QUOTACTL +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2096f5b5 RQF_OST_SET_GRANT_INFO +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x20d6b82c RQF_LDLM_INTENT_QUOTA +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x20fd01ef ldlm_lock_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x21561cfc sptlrpc_sec_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x21585075 ptlrpc_deactivate_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x218a36ce ldlm_cli_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x219391ec RMF_EAVALS_LENS +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x233790b5 RMF_OST_BODY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x237ef170 ptlrpc_reconnect_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2439ea94 ptlrpc_unregister_service +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x244e5558 lustre_msg_get_version +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x24aafdba RMF_MGS_TARGET_INFO +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2585a629 RMF_SEQ_RANGE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2587513c RQF_LDLM_CP_CALLBACK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x269554ce RQF_LDLM_INTENT_GETATTR +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x26d47913 client_disconnect_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x26f99d16 RQF_MGS_CONFIG_READ +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2830492c sptlrpc_cli_unwrap_bulk_write +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x285e5b99 lustre_msg_set_conn_cnt +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x29e0869a sptlrpc_get_hash_name +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2a63a472 lustre_swab_ptlrpc_body +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2b2551c0 ptlrpc_req_finished_with_imp_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2b8fc7bc ptlrpc_request_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2c00c60d ptlrpc_sample_next_xid +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2ca92fa8 ldlm_lock_decref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2ccd5b87 ldlm_cli_cancel_list_local +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2d56f168 ptlrpc_pinger_ir_up +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2d6e6065 ptlrpc_prep_bulk_imp +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2d798316 RMF_MGS_CONFIG_RES +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2db1204f ptlrpc_replay_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2dc05c88 ptlrpc_activate_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2e4562fe RQF_LLOG_ORIGIN_HANDLE_CREATE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2e4ca396 RQF_LDLM_INTENT_UNLINK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2ecd7515 lustre_msg_check_version +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2f0e4f87 RQF_OST_QUOTACTL +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2f793215 lustre_swab_ost_body +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2fab3539 lustre_swab_ost_lvb_v1 +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2fd2f737 lustre_msg_set_limit +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x301d4fcd RQF_MDS_READPAGE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x302937e0 RQF_MDS_CONNECT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3060b9c6 sptlrpc_rule_set_expand +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x31838cb4 RMF_IDX_INFO +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3261b862 RQF_OST_SYNC +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x329f5c05 ldlm_completion_ast +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x32dac3c4 ldlm_cancel_resource_local +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x33bb7761 ldlm_typename +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x343cd69e ptlrpc_prep_fcset +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x354b5db0 ptlrpc_pinger_add_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x35939a3d lustre_swab_fiemap +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x378e8c2d ptlrpc_prep_req_pool +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3835ab4b RQF_LLOG_ORIGIN_CONNECT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3858fb94 RMF_OBD_STATFS +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3888e42c client_import_add_conn +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x38c01799 RQF_LDLM_CALLBACK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x38fce533 lustre_msg_set_versions +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3967831d sptlrpc_unregister_policy +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x39f60a5f RMF_OST_ID +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3a0ad128 sptlrpc_conf_client_adapt +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3a1e4bcb __lustre_unpack_msg +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3ab90f6e lustre_msg_bufcount +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3ac00716 lustre_swab_hsm_user_state +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3b6b7cba dump_ioo +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3bedb0c7 RMF_LLOGD_CONN_BODY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3bf9471f ptlrpc_pinger_sending_on_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3c4f7f4e req_capsule_init_area +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3c63e62b RQF_MDS_REINT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3c74f7a3 sptlrpc_cli_ctx_expire +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3c8b16ab lustre_swab_ost_lvb +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3ca50f33 RQF_MDS_HSM_CT_REGISTER +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3cf4e248 ptlrpc_obd_ping +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3d7dc5f9 ldlm_pools_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3dc47695 lustre_msg_get_magic +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3e0dc61a req_capsule_client_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3f034caf lustre_msg_get_status +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3f752e78 RQF_MDS_STATFS +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x400b4ad2 ldlm_destroy_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x41008cef RQF_LDLM_CANCEL +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x421d8903 ptlrpc_send_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x42239dc0 unlock_res_and_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x43168488 RQF_MDS_RELEASE_CLOSE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x435c59fb ptlrpc_pinger_del_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x43705ee4 RQF_LOG_CANCEL +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x43d7efc8 lustre_msg_set_transno +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x44036eda RQF_MDS_GET_INFO +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x440c2a71 RMF_FIEMAP_VAL +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x443103ce target_send_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x44690c6e lustre_pack_request +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4481591d RQF_OST_SET_INFO_LAST_FID +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x44e6c14b ldlm_lock_convert +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x45d05893 lustre_swab_lustre_capa +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x45e30cea lustre_swab_ldlm_intent +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4618c4b8 ptlrpc_commit_replies +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x469d9b41 sptlrpc_cli_wrap_bulk +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x46ed7dc4 ptlrpcd_add_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x474b339a sptlrpc_sec_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x479bc43f ldlm_namespace_dump +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x47f5e903 RMF_MDS_HSM_REQUEST +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x489ce2a4 ptlrpc_request_addref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x48b2670c ptlrpcd_wake +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x48f2e7a1 client_obd_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4970f086 target_pack_pool_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4988ee10 ptlrpc_unpack_rep_msg +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x498c03c5 lustre_msg_set_last_xid +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4a5a2416 RMF_DLM_REQ +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4acfc5d3 sptlrpc_enc_pool_get_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4b2a3843 ldlm_resource_unlink_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4b2d5f4a ldlm_lock_fail_match_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4cfb8532 ptlrpc_request_alloc_pack +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4d1463e4 ptlrpc_add_rqs_to_pool +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4d6c7ffc ldlm_pool_get_slv +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4d73ab30 ptlrpc_invalidate_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4d7580d0 lustre_swab_hsm_user_item +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4e1706e5 lustre_msg_buf +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4e3a70c5 ldlm_init_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4e696b96 ptlrpcd_queue_work +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4eb03a6f ptlrpcd_destroy_work +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4f162fcf sptlrpc_gc_add_sec +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4f766c3b lustre_swab_generic_32s +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4ff3d7cc ldlm_lock2handle +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x50443f6a ptlrpc_init_client +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5050d04d ldlm_pool_del +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x50dd74f8 RMF_STRING +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5295aa84 ptlrpc_set_add_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x52c62150 RMF_RCS +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x53411557 RMF_DLM_REP +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5364b70a ldlm_cli_update_pool +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x53a4a004 bulk_sec_desc_unpack +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x54a4c31d ldlm_replay_locks +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x54ae5021 ldlm_lock_addref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x55266495 ptlrpc_fail_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x555eb7fe RQF_MDS_HSM_STATE_SET +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5721e2d4 lock_res_and_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x57a4c0f6 __ptlrpc_prep_bulk_page +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x588035b4 RMF_UPDATE_REPLY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x58a9c981 ldlm_pool_get_limit +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x594227f9 req_capsule_other_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x595ab175 lustre_swab_obd_quotactl +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x596582bf RMF_GETINFO_VALLEN +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x59810a66 ldlm_blocking_ast_nocheck +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x59b5c9d3 ptlrpc_unregister_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x59e3cd3a ldlm_namespace_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5a057439 interval_search +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5a88fcb4 req_capsule_client_dump +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5af0d02a ldlm_lock_dump_handle +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5b6ba895 lustre_packed_msg_size +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5c0d4a98 ldlm_destroy_flock_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5c617edf req_capsule_server_grow +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5c6a3a83 RQF_SEQ_QUERY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5c91f214 ptlrpc_req_xid +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5c923325 ldlm_pool_set_clv +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5ca1b491 lustre_swab_close_data +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5caae213 ptlrpc_next_xid +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5db6696e req_capsule_filled_sizes +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5e0b19b1 RMF_CLUUID +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5e2b7558 lustre_msghdr_get_flags +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5e6f435d RQF_OST_BRW_READ +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5e80f899 RQF_LLOG_ORIGIN_HANDLE_READ_HEADER +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5ebae5e7 ptlrpc_unregister_bulk +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5ec3284d RQF_MDS_HSM_CT_UNREGISTER +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5ef831ee lustre_msg_get_handle +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5f96ccdd ptlrpc_connection_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5fc78394 ptlrpc_check_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5fc9a455 RMF_CLOSE_DATA +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5fed8084 llog_initiator_connect +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6042bc15 RQF_MDS_REINT_RENAME +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x604e2505 RMF_SWAP_LAYOUTS +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x607ec932 lustre_msg_set_buflen +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x60cd26ad RQF_MDS_REINT_CREATE_SYM +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x61646e1b RQF_MDS_SWAP_LAYOUTS +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x618ad203 RQF_OST_GET_INFO_LAST_FID +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x62aaae3f RQF_MDS_HSM_REQUEST +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6315dd4c RMF_LLOGD_BODY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6352a62d ldlm_get_ref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6375d3aa ldlm_namespace_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x645dc64b ptlrpcd_alloc_work +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x647b6e48 lustre_swab_ldlm_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x653723dc RMF_LOGCOOKIES +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x666efa30 req_capsule_has_field +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x668a4246 ldlm_cli_enqueue +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6708c734 ptlrpc_abort_inflight +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6854b95d sptlrpc_get_bulk_checksum +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x685eeaba RMF_DLM_GL_DESC +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x688bc323 sptlrpc_lprocfs_cliobd_attach +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x68cb2541 interval_is_overlapped +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x68f49e5e ptlrpc_expired_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6912990a RQF_OST_QUOTACHECK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x695724ed ldlm_pool_get_lvf +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x696ba811 lustre_msg_get_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x698b09c2 ptlrpc_request_pack +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x69c9f04d RQF_MDS_REINT_LINK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x69feb37e ptlrpc_service_health_check +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6a3785c9 RMF_EADATA +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6b0bcdfc ptlrpc_connect_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6c57bbf6 dump_obdo +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6d72828c sptlrpc_conf_log_update_end +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6d7931cc RQF_UPDATE_OBJ +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6ed20499 ldlm_revalidate_lock_handle +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6efa82b0 RQF_MGS_TARGET_REG +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6efb32a2 ptlrpc_set_wait +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6f6dc736 lustre_swab_mdt_remote_perm +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6fb92092 sptlrpc_flavor2name_bulk +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x703538e4 lustre_swab_hsm_current_action +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x723d43b6 sptlrpc_rule_set_dump +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x725a892c RQF_MDS_REINT_OPEN +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7319a81d ldlm_pool_set_slv +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x746c96c3 lustre_free_reply_state +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x74840056 lustre_msg_set_status +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x75347a2e sptlrpc_register_policy +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x75457acc ldlm_lock_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7571b892 ptlrpc_init_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7588e1ad ldlm_pool_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x75a2c40d ldlm_put_ref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x76b728e5 lustre_swab_update_buf +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x77840c82 sptlrpc_rule_set_choose +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x779eaf09 req_capsule_client_sized_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x786b6c35 lprocfs_wr_pinger_recov +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x78b3f301 ptlrpc_buf_need_swab +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x78bf9136 lustre_swab_ldlm_lock_desc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7a7a1299 target_print_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7a832f10 RMF_CONN +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7b158da4 lustre_swab_ldlm_request +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7bbf8001 RMF_MDT_BODY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7c4c6107 RQF_LDLM_CONVERT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7d1ecd7f RQF_LDLM_INTENT_LAYOUT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7d41a8b9 RQF_QUOTA_DQACQ +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7d87f596 ldlm_cli_cancel_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7dc0e7cd RMF_QUOTA_BODY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7dfb3c18 lustre_msg_clear_flags +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7e4124e2 req_capsule_server_dump +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7f4925d8 interval_expand +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7f4c99b1 ldlm_expired_completion_wait +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7f5a1cc7 lustre_msg_set_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7f6d2357 lustre_msg_is_v1 +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x80a9e8c3 lustre_msg_get_last_xid +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x80ecb4e3 RMF_MDS_HSM_CURRENT_ACTION +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x817d7f1f lustre_msg_add_flags +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x826d3c4f RQF_LDLM_GL_CALLBACK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x837efb00 RMF_NAME +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x83958409 ptlrpc_register_service +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x842af075 req_capsule_extend +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x84ce9328 req_capsule_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x84d655c5 __ptlrpc_free_bulk +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x85135801 RMF_DLM_LVB +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8524ab14 req_capsule_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8581bae8 sptlrpc_sec_destroy +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x85a9e0d8 RMF_FID +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x85eecf67 sptlrpc_get_hash_alg +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x86221557 ldlm_cli_enqueue_local +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x863db6eb RMF_HSM_USER_STATE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x86fa8c3b ldlm_cli_convert +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x874c2e7b ptlrpc_start_threads +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8760beaf lustre_swab_ldlm_policy_data +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x876c2551 RMF_GETINFO_KEY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x87bf7b3c sptlrpc_get_next_secid +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8872f3d2 RMF_SETINFO_KEY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x889b98d3 client_import_find_conn +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x88fff52d RMF_CAPA2 +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x89a21c9a sec2target_str +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x89d7d619 client_connect_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x89f9edf7 RQF_MDS_REINT_SETXATTR +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8a1ea476 lustre_swab_hsm_state_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8a257736 RQF_MDS_HSM_STATE_GET +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8a97573c __ldlm_handle2lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8ac440fa ptlrpc_uuid_to_connection +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8b80d93c sptlrpc_cli_ctx_wakeup +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8b854254 lustre_swab_mgs_config_res +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8b9ffff2 client_obd_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8bdfd985 ldlm_resource_putref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8cb71d4b RQF_MDS_REINT_CREATE_SLAVE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8ccb8070 ldlm_lock_fail_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8d74a430 lustre_pack_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8d77ea75 lustre_msg_set_flags +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8da3fca7 lustre_msg_add_version +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8e9abe4d RMF_GENERIC_DATA +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8f0aceac RQF_MDS_HSM_ACTION +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8fec0451 lustre_msg_get_limit +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x919c4ce3 RMF_OBD_ID +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x91cf58d3 RQF_MDS_PIN +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9228392f lustre_swab_mdt_body +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9379393c sptlrpc_gc_del_sec +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x937b1ee0 lustre_swab_mdt_ioepoch +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9385fe0f ldlm_pool_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9553c633 RQF_LDLM_INTENT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x959c3f4b ptlrpcd_add_rqset +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x95d08f0c lustre_swab_mgs_target_info +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9660ace0 RMF_FLD_MDFLD +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x967bfd52 RQF_OBD_PING +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9798f2f1 RQF_MDS_GETATTR +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x980fcfdc ptlrpc_connection_addref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x981fb5fd ptlrpc_lprocfs_unregister_obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x993d850e ptlrpc_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9999cf7a dump_ost_body +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9a258886 RQF_MDS_GETSTATUS +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9a6f2f6d lustre_msg_set_opc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9b88f6ce RMF_NIOBUF_REMOTE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9b8dfaee ldlm_get_enq_timeout +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9bb5198b RQF_MDS_CLOSE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9c09841d ldlm_pool_set_limit +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9c3512a1 ldlm_lock_change_resource +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9cb8bc70 ptlrpc_cleanup_client +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9d7ea314 sptlrpc_pack_user_desc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9e57feaf sptlrpc_import_sec_ref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9fb088f1 lustre_swab_lov_mds_md +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9fd59977 ldlm_namespace_foreach +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa0b362b1 ptlrpc_unpack_req_msg +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa10f0d3d RMF_UPDATE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa163f4c3 dump_rniobuf +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa1da5f45 ldlm_lock_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa1dcc483 ptlrpc_schedule_difficult_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa20e64a7 ldlm_lock_allow_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa2244636 RQF_MDS_GETATTR_NAME +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa22c0086 ldlm_error2errno +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa30a39fb _debug_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa3d2a6ee RMF_CAPA1 +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa47787ef RMF_PTLRPC_BODY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa4a2d089 RQF_OST_PUNCH +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa4bea5ef lustre_swab_lmv_user_md +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa5458dad ldlm_lock_decref_and_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa5880075 ldlm_errno2error +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa6c436ca RQF_MDS_WRITEPAGE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa700d314 sptlrpc_cli_ctx_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa7d55cc3 RQF_MDS_REINT_CREATE_RMT_ACL +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa7e360b1 RMF_OBD_IOOBJ +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa7ec567d RMF_CONNECT_DATA +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa900d442 ldlm_completion_ast_async +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa9111519 ldlm_lock_downgrade +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa9704f80 lustre_msg_get_last_committed +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa9c4658e lustre_swab_lov_user_md_v3 +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa9edf09d RQF_OBD_IDX_READ +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xaa5b3a4b ldlm_cli_cancel_list +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xaa7139b7 llog_client_ops +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xab2fe853 ldlm_pool_get_clv +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xab4668b6 ptlrpc_disconnect_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xaca678dc sptlrpc_target_sec_part +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xacd6a7d7 lustre_swab_ost_last_id +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xace4fa10 req_capsule_get_size +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xad5e0ea5 ptlrpc_stop_all_threads +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xadbf2620 lprocfs_wr_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xaddc3979 lustre_swab_lustre_capa_key +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xae9de7f4 ptlrpc_add_timeout_client +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xaf4e9658 RQF_MDS_SYNC +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xaf50a0d6 RMF_HSM_STATE_SET +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xaf90d722 ptlrpc_request_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb0751fa4 RQF_LLOG_ORIGIN_HANDLE_DESTROY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb1b43d8a dump_rcs +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb27c2374 lustre_msg_get_jobid +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb291473d lustre_msg_early_size +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb2f3989a sptlrpc_target_update_exp_flavor +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb341b748 ldlm_pool_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb4a7ecf3 lustre_msg_add_op_flags +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb512ebc2 sptlrpc_parse_flavor +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb61cb95a RQF_MDS_GETXATTR +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb62b8818 ldlm_namespace_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb68476df interval_erase +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb6aafd03 RQF_MDS_DONE_WRITING +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb6b4a4e6 ptlrpc_req_set_repsize +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb7b38189 RMF_MDT_MD +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb7fa3cc8 RMF_LLOG_LOG_HDR +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb847fc05 ptlrpc_restart_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb8c79d5f do_set_info_async +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb903634e RQF_OST_CONNECT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb979479d ptlrpc_nrs_policy_unregister +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb9b631cf lustre_swab_mgs_config_body +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbaa76097 lustre_msg_string +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbc1370dc lustre_shrink_msg +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbce33ed3 ldlm_extent_shift_kms +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbd0893de ldlm_cli_cancel_unused_resource +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbd83bc44 RQF_OBD_SET_INFO +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbe47bc7e ping_evictor_start +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbef769cc RQF_CONNECT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbef8ad86 sptlrpc_import_flush_all_ctx +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbf98b86f RQF_MDS_QUOTACHECK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbffd4313 RQF_OST_BRW_WRITE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc06c4670 lustre_msg_get_versions +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc084d021 ptlrpc_buf_set_swabbed +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc0867da7 RMF_REC_REINT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc0a3e86c ptlrpc_nrs_policy_register +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc0cdf55e RMF_MGS_SEND_PARAM +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc2986d28 lustre_swab_ldlm_res_id +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc2b1af57 RQF_MGS_SET_INFO +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc2be922a RMF_SYMTGT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc385bd4a ldlm_lock_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc3d29141 ptlrpc_hpreq_handler +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc559a634 RMF_LAYOUT_INTENT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc60a60e1 RQF_OST_STATFS +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc694be4b RQF_LLOG_ORIGIN_HANDLE_PREV_BLOCK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc763fabc sptlrpc_process_config +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc777cb50 lprocfs_wr_ping +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc79b9c67 ldlm_pools_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc7ca8257 RQF_MDS_REINT_SETATTR +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc7e47564 ptlrpc_interrupted_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc8f586a9 ptlrpc_connection_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc8fce305 ptlrpc_register_bulk +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc8fd8481 sptlrpc_svc_ctx_invalidate +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc913ab5a ldlm_register_intent +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc98484b3 ldlm_lock_allow_match_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xca5a81ec ptlrpc_pinger_ir_down +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xca600b39 ldlm_glimpse_ast +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xcb03e430 client_destroy_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xcb21c8fa req_capsule_set_size +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xcb2cc0cf lustre_swab_lquota_lvb +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xcb2ceaff sptlrpc_secflags2str +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xcd7556cf ldlm_enqueue_pack +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xcdc53dba lprocfs_wr_evict_client +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xce1a689b sptlrpc_enc_pool_add_user +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xce2c0a07 sptlrpc_gc_add_ctx +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xce86066d lustre_msg_set_slv +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xcec513c9 RQF_MDS_UNPIN +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xced015be sptlrpc_rule_set_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xcf9963db lustre_msg_get_op_flags +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xcf9aab6a RQF_MDS_DISCONNECT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xcffbed6e ptlrpc_request_committed +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd17ee218 sptlrpc_req_replace_dead_ctx +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd1cfdd71 req_capsule_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd2762c50 ptlrpc_wake_delayed +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd2983334 lustre_swab_swap_layouts +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd2e0d4eb lustre_msg_get_opc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd3dae408 ldlm_it2str +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd67a5d7b lustre_swab_update_reply_buf +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd69e0a27 RQF_MDS_IS_SUBDIR +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd6c3ebfb RMF_FIEMAP_KEY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd7910326 lustre_swab_obd_statfs +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd8b91b3e lustre_swab_lov_desc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd8f06300 RQF_MDS_HSM_PROGRESS +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd9561861 RQF_LDLM_INTENT_OPEN +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd95c3309 ptlrpc_send_error +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd9ad9df0 req_capsule_server_sized_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd9e295d6 ptlrpc_mark_interrupted +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xdb1fb0a2 RQF_MDS_REINT_CREATE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xdb7aea4b ptlrpc_cleanup_imp +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xdb9d5a6a lustre_swab_niobuf_remote +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xdc12e6ec ldlm_pool_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xdc7aef9d ptlrpc_resend +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xdd0ffb04 sptlrpc_flavor2name +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xdd30d7bf RMF_ACL +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xddc40a85 lustre_msg_get_flags +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xde12d36b RMF_MDS_HSM_ARCHIVE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xde555d70 sptlrpc_enc_pool_del_user +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xdee87192 sptlrpc_conf_log_update_begin +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xdf701ae7 lustre_swab_fid2path +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xdff6f1a6 sptlrpc_target_export_check +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe0cc694c RQF_LLOG_ORIGIN_HANDLE_NEXT_BLOCK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe13bab83 ptlrpc_request_bufs_pack +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe13c5dde ptl_send_rpc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe3738053 ptlrpc_set_next_timeout +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe3799783 sptlrpc_cli_unwrap_bulk_read +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe37e6db4 _ldlm_lock_debug +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe40e0a50 lustre_msg_get_transno +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe57bd972 sptlrpc_current_user_desc_size +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe624de52 ptlrpc_free_rq_pool +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe643998e RQF_OST_SETATTR +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe65488b9 ldlm_blocking_ast +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe6f0dc96 RQF_OST_CREATE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe7062b5f RMF_U32 +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe7415d6f ptlrpc_init_rq_pool +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe7512278 ptlrpcd_addref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe85b6da3 lustre_swab_obdo +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe9adb995 lustre_pack_reply_v2 +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xeabac4fc sptlrpc_rule_set_merge +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xeb466a52 ldlm_init_flock_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xeb68e1c0 ldlm_cli_enqueue_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xebb64e68 req_layout_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xec1b2482 ptlrpc_lprocfs_register_obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xec226f66 ping_evictor_stop +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xec939a00 RQF_MDS_REINT_UNLINK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xecace5c1 RQF_OST_GET_INFO_GENERIC +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xed1c10d6 ptlrpc_connection_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xedcb740d sptlrpc_name2flavor_base +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xee8abc3e ldlm_resource_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xef1aeca9 RMF_FLD_OPC +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xef3fccec ptlrpc_set_import_active +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xefef5117 ptlrpc_retain_replayable_request +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf0241d6e lustre_swab_hsm_progress_kernel +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf0d52b5f ptlrpc_pinger_suppress_pings +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf0e42288 sptlrpc_enc_pool_put_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf1300275 _sptlrpc_enlarge_msg_inplace +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf277c125 RQF_OST_GET_INFO_FIEMAP +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf27d49dc sptlrpc_target_choose_flavor +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf35f132b lustre_swab_ldlm_resource_desc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf38da5e4 ptlrpc_request_set_replen +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf3d44370 RQF_OST_DESTROY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf43540b9 lustre_swab_mgs_nidtbl_entry +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf45085e1 sptlrpc_conf_log_stop +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf50946d2 sptlrpc_cli_ctx_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf5246024 ldlm_flock_completion_ast +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf5588778 req_capsule_server_swab_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf55c033b RMF_MGS_CONFIG_BODY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf584a16b sptlrpc_part2name +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf596e9ae sptlrpc_conf_log_start +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf607fc23 sptlrpc_flavor2name_base +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf617ab8a lustre_msg_get_conn_cnt +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf697b756 ldlm_dump_all_namespaces +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf7408f84 lustre_swab_hsm_request +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf7ba40c0 RMF_MDS_HSM_PROGRESS +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf7f4b295 req_capsule_field_present +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf81e6077 ptlrpc_queue_wait +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf8244512 ptlrpc_recover_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf85cb27e sptlrpc_parse_rule +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf870fed9 RQF_LDLM_GL_DESC_CALLBACK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf8f1223f req_capsule_client_swab_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf8f42728 ldlm_lock2desc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf9051bd6 RQF_QC_CALLBACK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf94e41e0 deuuidify +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf973aa93 lustre_swab_lov_user_md_v1 +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf9ee11e2 lustre_msg_set_last_committed +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf9f72dfc RMF_TGTUUID +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xfa51688d interval_insert +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xfa5c6b0e ptlrpc_set_add_new_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xfbdba582 ldlm_reprocess_all_ns +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xfc2bd6ec ldlm_resource_foreach +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xfc2fa83f ptlrpc_del_timeout_client +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xfcc14c0e client_import_del_conn +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xfd148bf8 RMF_LDLM_INTENT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xff02a0e9 ldlm_lock_set_data +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xff7989e5 ptlrpc_req_finished +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xffc807e8 sptlrpc_unpack_user_desc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xffe29c3f RQF_LDLM_ENQUEUE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xffee3476 ldlm_resource_iterate +EXPORT_SYMBOL drivers/staging/media/cxd2099/cxd2099 0xa0da38c6 cxd2099_attach +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x02696ae9 rtllib_wx_get_scan +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x0a93b616 rtllib_stop_scan +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x0d7e5df9 rtllib_wx_set_mode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x19248c12 rtllib_start_send_beacons +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x19cdf520 rtllib_softmac_stop_protocol +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x1a833000 rtllib_act_scanning +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x22917799 rtllib_wx_get_freq +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x22e76402 rtllib_stop_send_beacons +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x2dc8b61a Dot11d_Channelmap +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x31e9604c rtllib_legal_channel +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x35baeada rtllib_wx_set_encode_ext +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x41fdd4ac free_rtllib +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x4c82b40d rtllib_ps_tx_ack +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x4d527492 rtllib_xmit +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x51a6f5ce rtllib_MgntDisconnect +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x60143f76 rtllib_rx +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x6872e58a rtllib_DisableIntelPromiscuousMode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x6fc2eff7 rtllib_get_beacon +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x770436ca rtllib_wx_set_rate +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x7e878fbe alloc_rtllib +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x86fd6768 rtllib_wx_get_encode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x87b812d3 rtllib_wpa_supplicant_ioctl +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x881a7175 rtllib_wx_set_encode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x88b6066b rtllib_softmac_start_protocol +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x8c3527ec rtllib_wx_get_name +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x8ea884f2 rtllib_wx_set_auth +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x90b584dd rtllib_wx_get_mode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x9296ecc8 rtllib_reset_queue +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x95d1915b dot11d_init +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x9fa2b3cd rtllib_wx_set_scan +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xaecc53b2 rtllib_wx_get_rts +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xb408264f rtllib_sta_ps_send_null_frame +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xb409307e HT_update_self_and_peer_setting +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xb762d837 rtllib_wx_set_rts +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xb84daa52 rtllib_wx_set_rawtx +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xbe1420f2 rt_global_debug_component +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xbf5aaebd rtllib_wx_set_freq +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xc0381182 rtllib_wx_get_wap +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xc4e94219 rtllib_wx_get_power +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xc7815356 rtllib_start_scan_syncro +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xcf97bbbd notify_wx_assoc_event +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xd6da9d4a rtllib_wx_set_essid +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xd8130fd8 rtllib_stop_scan_syncro +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xd9969a07 rtllib_wx_set_wap +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xdf78f620 rtllib_wlan_frequencies +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xea44b242 rtllib_wx_get_essid +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xeacfefee rtllib_wx_get_rate +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xee28a924 rtllib_wx_set_mlme +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xf1e359bd rtllib_EnableIntelPromiscuousMode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xf8776d11 rtllib_wx_set_power +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xfe964ca8 rtllib_wx_set_gen_ie +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xff56533e RemovePeerTS +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x0aed015a ieee80211_wx_get_mode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x0dbf293c ieee80211_txb_free_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x0ee30986 ieee80211_wx_set_wap_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x0f099f61 ieee80211_is_54g_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x0fb6d367 ieee80211_wx_get_rts_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x126a9aa1 ieee80211_wx_set_scan_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x170cfc3f ieee80211_wx_get_essid_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x1b36b54c Dot11d_Init +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x2023f385 ieee80211_softmac_stop_protocol_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x270e85bd ieee80211_wx_set_auth_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x27e50b90 ieee80211_wx_get_power_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x288c9bae notify_wx_assoc_event_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x2de76acb ieee80211_ps_tx_ack_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x34095ab4 ieee80211_rx_mgt_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x390b8cac ieee80211_wx_get_freq_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x3fd1afc2 IsLegalChannel +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x489b43af ieee80211_wx_get_scan_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x4929aa9e ieee80211_wx_get_encode_ext_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x4a6be069 ieee80211_wx_get_name_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x4b0fd6be ieee80211_get_beacon_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x4fc325af ToLegalChannel +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x501cd854 ieee80211_wx_set_mode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x53d6753a ieee80211_rx_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x61ea895d ieee80211_is_shortslot_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x63fa55a2 ieee80211_wx_set_freq_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x6b6f34d3 Dot11d_UpdateCountryIe +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x70ba6f78 Dot11d_Reset +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x7311bef4 ieee80211_stop_scan_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x7ecb8fcd ieee80211_send_probe_requests_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x7ed912dc ieee80211_start_scan_syncro_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x90b17764 ieee80211_stop_queue_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x9d3114f7 ieee80211_wx_get_rate_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xa21c7fdf ieee80211_softmac_xmit_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xa8370c62 ieee80211_wx_set_encode_ext_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xad01f6ad ieee80211_reset_queue_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xb24d20ca ieee80211_wx_get_encode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xb255f516 ieee80211_wx_set_mlme_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xbc3982cf ieee80211_wpa_supplicant_ioctl_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xc007d74e ieee80211_wx_set_power_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xc370a43e ieee80211_wlan_frequencies_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xc491343f HTUpdateSelfAndPeerSetting +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xc7c0cdf9 ieee80211_wx_set_rate_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xcafd7f94 DOT11D_ScanComplete +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xce7da9f4 ieee80211_disassociate_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xd3c13dc5 ieee80211_wx_set_encode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xd83eb0cc ieee80211_softmac_start_protocol_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xdc553c18 DOT11D_GetMaxTxPwrInDbm +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xec51f8e9 ieee80211_wx_set_gen_ie_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xecf410ab ieee80211_wx_set_rawtx_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xf05496be ieee80211_start_send_beacons_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xf0ee20e1 ieee80211_wx_set_essid_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xf429244a ieee80211_wake_queue_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xf4e5da10 ieee80211_stop_send_beacons_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xf75014b0 SendDisassociation_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xfae51c78 ieee80211_wx_get_wap_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xfbb0c699 ieee80211_wx_set_rts_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xfc3e9f35 ieee80211_softmac_scan_syncro_rsl +EXPORT_SYMBOL drivers/staging/unisys/visorbus/visorbus 0xd5867168 visorbus_get_device_by_id +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x0ff6b7fe iscsit_logout_post_handler +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x10e4aebd iscsit_build_text_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x151c35ee iscsit_build_reject +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x175464f2 iscsit_check_dataout_hdr +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x1d1fd844 iscsit_register_transport +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x3036a32c iscsit_stop_dataout_timer +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x3d88d5c6 iscsit_sequence_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x3e695be3 iscsit_increment_maxcmdsn +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x51c7f13b iscsit_build_rsp_pdu +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x59b3b3d0 iscsit_unregister_transport +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x5a6c82c7 iscsit_setup_scsi_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x5aaf2125 iscsit_build_logout_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x5ace183b iscsit_tmr_post_handler +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x77252dcb iscsit_process_nop_out +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x84264a48 iscsit_set_unsoliticed_dataout +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x892e4839 iscsit_check_dataout_payload +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x90a385ac iscsit_build_task_mgt_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x9245dd74 iscsit_handle_task_mgt_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x98cbf2a0 iscsit_cause_connection_reinstatement +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x9e79d16e iscsit_build_nopin_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xaaf0f9a3 iscsit_allocate_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xb0c09147 iscsit_release_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xbef1bcc6 iscsit_process_text_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xc10cf488 iscsit_setup_nop_out +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xc17dae1a iscsit_find_cmd_from_itt +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xcd761c59 iscsit_handle_logout_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xe2de381e iscsit_setup_text_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xee1e1988 iscsit_process_scsi_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x02de3b18 transport_set_vpd_ident +EXPORT_SYMBOL drivers/target/target_core_mod 0x03f63a39 target_lun_is_rdonly +EXPORT_SYMBOL drivers/target/target_core_mod 0x0a21cd99 sbc_parse_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0x141da0c8 target_get_sess_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x15eb504f transport_backend_register +EXPORT_SYMBOL drivers/target/target_core_mod 0x1bb450ed spc_emulate_evpd_83 +EXPORT_SYMBOL drivers/target/target_core_mod 0x2116a7ee transport_handle_cdb_direct +EXPORT_SYMBOL drivers/target/target_core_mod 0x25ffce20 transport_generic_new_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x29144926 spc_parse_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0x2ca4f089 transport_check_aborted_status +EXPORT_SYMBOL drivers/target/target_core_mod 0x30e1a6de sbc_get_device_type +EXPORT_SYMBOL drivers/target/target_core_mod 0x320a5b71 target_depend_item +EXPORT_SYMBOL drivers/target/target_core_mod 0x33896727 target_nacl_find_deve +EXPORT_SYMBOL drivers/target/target_core_mod 0x3582ea5d transport_generic_handle_tmr +EXPORT_SYMBOL drivers/target/target_core_mod 0x40e25882 sbc_attrib_attrs +EXPORT_SYMBOL drivers/target/target_core_mod 0x491d9187 transport_init_se_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x621e0429 transport_register_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x62a2546c target_complete_cmd_with_length +EXPORT_SYMBOL drivers/target/target_core_mod 0x6359d9cf transport_lookup_tmr_lun +EXPORT_SYMBOL drivers/target/target_core_mod 0x6cb7e9f4 target_put_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x6f2e0ae6 core_tpg_check_initiator_node_acl +EXPORT_SYMBOL drivers/target/target_core_mod 0x6fffedf5 target_put_sess_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x73e86246 core_tpg_set_initiator_node_queue_depth +EXPORT_SYMBOL drivers/target/target_core_mod 0x7a9976bb core_tpg_set_initiator_node_tag +EXPORT_SYMBOL drivers/target/target_core_mod 0x7b65514f transport_kmap_data_sg +EXPORT_SYMBOL drivers/target/target_core_mod 0x7b9da791 transport_init_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x7dbada9d transport_set_vpd_ident_type +EXPORT_SYMBOL drivers/target/target_core_mod 0x800f11e8 __transport_register_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x85aa880c transport_set_vpd_assoc +EXPORT_SYMBOL drivers/target/target_core_mod 0x879e1643 target_unregister_template +EXPORT_SYMBOL drivers/target/target_core_mod 0x88c922ae passthrough_attrib_attrs +EXPORT_SYMBOL drivers/target/target_core_mod 0x895d1fb5 target_setup_cmd_from_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0x8b0c1948 target_backend_unregister +EXPORT_SYMBOL drivers/target/target_core_mod 0x8fe9ae04 core_tpg_deregister +EXPORT_SYMBOL drivers/target/target_core_mod 0x930efb9f transport_wait_for_tasks +EXPORT_SYMBOL drivers/target/target_core_mod 0x94ab6fac sbc_dif_copy_prot +EXPORT_SYMBOL drivers/target/target_core_mod 0x9bec3a2c spc_emulate_inquiry_std +EXPORT_SYMBOL drivers/target/target_core_mod 0xa436fce2 target_register_template +EXPORT_SYMBOL drivers/target/target_core_mod 0xaa5a05c1 transport_init_session_tags +EXPORT_SYMBOL drivers/target/target_core_mod 0xaa6a6992 target_submit_cmd_map_sgls +EXPORT_SYMBOL drivers/target/target_core_mod 0xacb2c323 target_undepend_item +EXPORT_SYMBOL drivers/target/target_core_mod 0xacc07ec2 target_complete_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xad01cc2b transport_generic_request_failure +EXPORT_SYMBOL drivers/target/target_core_mod 0xb1c68b55 target_submit_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xb3aceea1 core_tpg_get_initiator_node_acl +EXPORT_SYMBOL drivers/target/target_core_mod 0xb79b95fa transport_alloc_session_tags +EXPORT_SYMBOL drivers/target/target_core_mod 0xc6286ef0 transport_deregister_session_configfs +EXPORT_SYMBOL drivers/target/target_core_mod 0xc7fd4a8c target_get_session +EXPORT_SYMBOL drivers/target/target_core_mod 0xcba2a187 target_sess_cmd_list_set_waiting +EXPORT_SYMBOL drivers/target/target_core_mod 0xce512ab6 transport_free_session +EXPORT_SYMBOL drivers/target/target_core_mod 0xd0a5b835 target_submit_tmr +EXPORT_SYMBOL drivers/target/target_core_mod 0xd0ee3c70 transport_send_check_condition_and_sense +EXPORT_SYMBOL drivers/target/target_core_mod 0xd24c0eb4 transport_deregister_session +EXPORT_SYMBOL drivers/target/target_core_mod 0xd3270c87 transport_kunmap_data_sg +EXPORT_SYMBOL drivers/target/target_core_mod 0xdde80224 transport_generic_free_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xdec24c2d core_tpg_register +EXPORT_SYMBOL drivers/target/target_core_mod 0xe1a1c151 sbc_get_write_same_sectors +EXPORT_SYMBOL drivers/target/target_core_mod 0xe30e2792 target_show_dynamic_sessions +EXPORT_SYMBOL drivers/target/target_core_mod 0xe3bc33ee sbc_dif_verify +EXPORT_SYMBOL drivers/target/target_core_mod 0xe7f993ea core_alua_check_nonop_delay +EXPORT_SYMBOL drivers/target/target_core_mod 0xe948d716 passthrough_parse_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0xe94914b6 target_execute_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xec2572b8 core_tmr_alloc_req +EXPORT_SYMBOL drivers/target/target_core_mod 0xf01621c7 transport_set_vpd_proto_id +EXPORT_SYMBOL drivers/target/target_core_mod 0xf6766202 target_wait_for_sess_cmds +EXPORT_SYMBOL drivers/target/target_core_mod 0xfc32e9b8 spc_emulate_report_luns +EXPORT_SYMBOL drivers/target/target_core_mod 0xfeee1118 transport_lookup_cmd_lun +EXPORT_SYMBOL drivers/thermal/int340x_thermal/acpi_thermal_rel 0x1887763e acpi_thermal_rel_misc_device_add +EXPORT_SYMBOL drivers/thermal/int340x_thermal/acpi_thermal_rel 0x5007fc2c acpi_parse_art +EXPORT_SYMBOL drivers/thermal/int340x_thermal/acpi_thermal_rel 0x86c998e6 acpi_thermal_rel_misc_device_remove +EXPORT_SYMBOL drivers/thermal/int340x_thermal/acpi_thermal_rel 0xdf707fab acpi_parse_trt +EXPORT_SYMBOL drivers/usb/class/cdc-wdm 0x8cd5f7d1 usb_cdc_wdm_register +EXPORT_SYMBOL drivers/usb/gadget/function/usb_f_uvc 0x92e9ebac uvc_set_trace_param +EXPORT_SYMBOL drivers/usb/gadget/libcomposite 0xba1e9b94 usb_os_desc_prepare_interf_dir +EXPORT_SYMBOL drivers/usb/host/sl811-hcd 0x4e16531e sl811h_driver +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x13a67191 usb_wwan_open +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x1a160600 usb_wwan_resume +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x2bf73897 usb_wwan_close +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x49047d64 usb_wwan_dtr_rts +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x7f58e1e0 usb_wwan_tiocmset +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x8eb4523d usb_wwan_ioctl +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xbbe5ea4d usb_wwan_suspend +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xc190bea1 usb_wwan_write_room +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xde8a8f2f usb_wwan_write +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xe70453a5 usb_wwan_chars_in_buffer +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xeade84fd usb_wwan_port_remove +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xf28d92d7 usb_wwan_tiocmget +EXPORT_SYMBOL drivers/usb/serial/usbserial 0x40d293f1 usb_serial_resume +EXPORT_SYMBOL drivers/usb/serial/usbserial 0x78583d92 usb_serial_suspend +EXPORT_SYMBOL drivers/vhost/vringh 0x0fd987f7 vringh_abandon_user +EXPORT_SYMBOL drivers/vhost/vringh 0x14397bb5 vringh_notify_disable_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x32da6f89 vringh_notify_enable_user +EXPORT_SYMBOL drivers/vhost/vringh 0x39c9d7a5 vringh_complete_multi_user +EXPORT_SYMBOL drivers/vhost/vringh 0x3b304ebb vringh_iov_push_user +EXPORT_SYMBOL drivers/vhost/vringh 0x3c71c418 vringh_getdesc_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x4311cd91 vringh_iov_pull_user +EXPORT_SYMBOL drivers/vhost/vringh 0x4f384f8b vringh_need_notify_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x58abf4ed vringh_init_user +EXPORT_SYMBOL drivers/vhost/vringh 0x5fedea44 vringh_getdesc_user +EXPORT_SYMBOL drivers/vhost/vringh 0x6432894b vringh_init_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x8d080d03 vringh_need_notify_user +EXPORT_SYMBOL drivers/vhost/vringh 0x95e62337 vringh_abandon_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x97fa07e9 vringh_iov_push_kern +EXPORT_SYMBOL drivers/vhost/vringh 0xb4b63575 vringh_notify_enable_kern +EXPORT_SYMBOL drivers/vhost/vringh 0xc578f0f7 vringh_complete_user +EXPORT_SYMBOL drivers/vhost/vringh 0xd355e031 vringh_complete_kern +EXPORT_SYMBOL drivers/vhost/vringh 0xd609393d vringh_notify_disable_user +EXPORT_SYMBOL drivers/vhost/vringh 0xde804bb9 vringh_iov_pull_kern +EXPORT_SYMBOL drivers/video/backlight/lcd 0x41cc0613 devm_lcd_device_register +EXPORT_SYMBOL drivers/video/backlight/lcd 0x6f6a8baa lcd_device_register +EXPORT_SYMBOL drivers/video/backlight/lcd 0xc1f84cee lcd_device_unregister +EXPORT_SYMBOL drivers/video/backlight/lcd 0xf8c5cedd devm_lcd_device_unregister +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x0f670230 svga_tilecopy +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 0x2dda9a63 svga_tileblit +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x2fd3d3c0 svga_settile +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x4ab38ef2 svga_set_default_crt_regs +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x6e4adb1e svga_check_timings +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x80f24d95 svga_wcrt_multi +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x8de63fb4 svga_set_timings +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x945f837c svga_get_tilemax +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xa5637236 svga_tilefill +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xc7a3a3de svga_tilecursor +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xd1429fca svga_wseq_multi +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xd22ca511 svga_set_default_atc_regs +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xdde594fd svga_get_caps +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xe28d2a49 svga_set_default_gfx_regs +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xef774f5d svga_compute_pll +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xf2db5956 svga_match_format +EXPORT_SYMBOL drivers/video/fbdev/core/syscopyarea 0x69140cef sys_copyarea +EXPORT_SYMBOL drivers/video/fbdev/core/sysfillrect 0x4167fde1 sys_fillrect +EXPORT_SYMBOL drivers/video/fbdev/core/sysimgblt 0xcde1c4c6 sys_imageblit +EXPORT_SYMBOL drivers/video/fbdev/cyber2000fb 0x0cc3ede5 cyber2000fb_detach +EXPORT_SYMBOL drivers/video/fbdev/cyber2000fb 0x30d51a5b 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 0xadacea6c mac_find_mode +EXPORT_SYMBOL drivers/video/fbdev/macmodes 0xe2304303 mac_map_monitor_sense +EXPORT_SYMBOL drivers/video/fbdev/matrox/g450_pll 0x109634ca matroxfb_g450_setpll_cond +EXPORT_SYMBOL drivers/video/fbdev/matrox/g450_pll 0x6fe8898b g450_mnp2f +EXPORT_SYMBOL drivers/video/fbdev/matrox/g450_pll 0xab2457e8 matroxfb_g450_setclk +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_DAC1064 0x1a458843 matrox_mystique +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_DAC1064 0x44ae6046 DAC1064_global_init +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_DAC1064 0x94716241 DAC1064_global_restore +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_DAC1064 0xad24f941 matrox_G100 +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_Ti3026 0x6beb23d0 matrox_millennium +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_accel 0x6b412406 matrox_cfbX_init +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_base 0x89e4cb73 matroxfb_unregister_driver +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_base 0xaf6bccb2 matroxfb_register_driver +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_base 0xe4862b6b matroxfb_enable_irq +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_base 0xe64194fe matroxfb_wait_for_sync +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_g450 0x0cdcd208 matroxfb_g450_connect +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_g450 0xda52d1b5 matroxfb_g450_shutdown +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0x25cf8049 matroxfb_PLL_calcclock +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0x25f6fbe7 matroxfb_read_pins +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0x26aba72e matroxfb_DAC_in +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0x4691e30c matroxfb_DAC_out +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0x79bee29e matroxfb_vgaHWrestore +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0xcdc90c64 matroxfb_var2my +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0xdb64c99b matroxfb_vgaHWinit +EXPORT_SYMBOL drivers/video/fbdev/mb862xx/mb862xxfb 0xdf54693c mb862xxfb_init_accel +EXPORT_SYMBOL drivers/video/fbdev/sis/sisfb 0x3037658e sis_malloc +EXPORT_SYMBOL drivers/video/fbdev/sis/sisfb 0x454a3cf0 sis_free +EXPORT_SYMBOL drivers/video/vgastate 0x686de290 restore_vga +EXPORT_SYMBOL drivers/video/vgastate 0xe7a2620e save_vga +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0x1e9c62f3 w1_ds2760_store_eeprom +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0x66ae2af2 w1_ds2760_recall_eeprom +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0xb0d3329b w1_ds2760_write +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0xd885edbb w1_ds2760_read +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2780 0x9174f4ea w1_ds2780_eeprom_cmd +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2780 0xb494da7d w1_ds2780_io +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2781 0x447f8eb0 w1_ds2781_eeprom_cmd +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2781 0xdbbeb503 w1_ds2781_io +EXPORT_SYMBOL drivers/w1/wire 0x173d2d38 w1_remove_master_device +EXPORT_SYMBOL drivers/w1/wire 0x33c18617 w1_unregister_family +EXPORT_SYMBOL drivers/w1/wire 0x7585bb03 w1_register_family +EXPORT_SYMBOL drivers/w1/wire 0x889e7a04 w1_add_master_device +EXPORT_SYMBOL drivers/watchdog/iTCO_vendor_support 0x04e133fc iTCO_vendor_check_noreboot_on +EXPORT_SYMBOL drivers/watchdog/iTCO_vendor_support 0xa78bd894 iTCO_vendor_pre_set_heartbeat +EXPORT_SYMBOL drivers/watchdog/iTCO_vendor_support 0xb5f20875 iTCO_vendor_pre_keepalive +EXPORT_SYMBOL drivers/watchdog/iTCO_vendor_support 0xc4f657bf iTCO_vendor_pre_stop +EXPORT_SYMBOL drivers/watchdog/iTCO_vendor_support 0xdc6effc9 iTCO_vendor_pre_start +EXPORT_SYMBOL fs/configfs/configfs 0x058a058f config_item_put +EXPORT_SYMBOL fs/configfs/configfs 0x08b87d7b config_group_init_type_name +EXPORT_SYMBOL fs/configfs/configfs 0x22fbbf0d config_group_find_item +EXPORT_SYMBOL fs/configfs/configfs 0x4c4d433e config_group_init +EXPORT_SYMBOL fs/configfs/configfs 0x5bd8f5ab configfs_depend_item +EXPORT_SYMBOL fs/configfs/configfs 0x5ce97e61 config_item_get +EXPORT_SYMBOL fs/configfs/configfs 0x8524952a config_item_init_type_name +EXPORT_SYMBOL fs/configfs/configfs 0x91430b91 configfs_unregister_subsystem +EXPORT_SYMBOL fs/configfs/configfs 0xc7420261 config_item_set_name +EXPORT_SYMBOL fs/configfs/configfs 0xce5e43d7 configfs_register_subsystem +EXPORT_SYMBOL fs/configfs/configfs 0xdcf7733c configfs_undepend_item +EXPORT_SYMBOL fs/exofs/libore 0x05b9c2ef ore_remove +EXPORT_SYMBOL fs/exofs/libore 0x1e64abe3 extract_attr_from_ios +EXPORT_SYMBOL fs/exofs/libore 0x1eaea599 ore_truncate +EXPORT_SYMBOL fs/exofs/libore 0x28806871 ore_verify_layout +EXPORT_SYMBOL fs/exofs/libore 0x308d16b0 ore_create +EXPORT_SYMBOL fs/exofs/libore 0x3ce973ac ore_read +EXPORT_SYMBOL fs/exofs/libore 0x4527e170 ore_calc_stripe_info +EXPORT_SYMBOL fs/exofs/libore 0x5300863b ore_get_io_state +EXPORT_SYMBOL fs/exofs/libore 0x5d4bdc85 ore_put_io_state +EXPORT_SYMBOL fs/exofs/libore 0x8d584418 ore_write +EXPORT_SYMBOL fs/exofs/libore 0xa3d2a634 g_attr_logical_length +EXPORT_SYMBOL fs/exofs/libore 0xbae905d1 ore_check_io +EXPORT_SYMBOL fs/exofs/libore 0xc10706e3 ore_get_rw_state +EXPORT_SYMBOL fs/fscache/fscache 0x0199bd17 __fscache_unregister_netfs +EXPORT_SYMBOL fs/fscache/fscache 0x05a09e06 __fscache_enable_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x06876c97 __fscache_check_consistency +EXPORT_SYMBOL fs/fscache/fscache 0x0c2cc55c fscache_operation_init +EXPORT_SYMBOL fs/fscache/fscache 0x0d487b82 __fscache_invalidate +EXPORT_SYMBOL fs/fscache/fscache 0x1b61492f __fscache_acquire_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x1c523336 __fscache_maybe_release_page +EXPORT_SYMBOL fs/fscache/fscache 0x1d2280c4 fscache_object_init +EXPORT_SYMBOL fs/fscache/fscache 0x1f0b0852 fscache_enqueue_operation +EXPORT_SYMBOL fs/fscache/fscache 0x1fc5947b __fscache_readpages_cancel +EXPORT_SYMBOL fs/fscache/fscache 0x270e5a3d fscache_object_retrying_stale +EXPORT_SYMBOL fs/fscache/fscache 0x278c443a __fscache_read_or_alloc_pages +EXPORT_SYMBOL fs/fscache/fscache 0x27e452eb __fscache_attr_changed +EXPORT_SYMBOL fs/fscache/fscache 0x280ae708 __fscache_wait_on_invalidate +EXPORT_SYMBOL fs/fscache/fscache 0x314a4ee8 fscache_op_complete +EXPORT_SYMBOL fs/fscache/fscache 0x331be29f fscache_add_cache +EXPORT_SYMBOL fs/fscache/fscache 0x35a3a208 __fscache_uncache_page +EXPORT_SYMBOL fs/fscache/fscache 0x3b2fea77 fscache_object_mark_killed +EXPORT_SYMBOL fs/fscache/fscache 0x4e25adf8 fscache_object_destroy +EXPORT_SYMBOL fs/fscache/fscache 0x5894713c fscache_mark_page_cached +EXPORT_SYMBOL fs/fscache/fscache 0x6e0eabcd __fscache_update_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x73be92b4 fscache_io_error +EXPORT_SYMBOL fs/fscache/fscache 0x74530ecd fscache_op_debug_id +EXPORT_SYMBOL fs/fscache/fscache 0x7a172a23 __fscache_write_page +EXPORT_SYMBOL fs/fscache/fscache 0x7f8e8f5f fscache_check_aux +EXPORT_SYMBOL fs/fscache/fscache 0x83b1f236 __fscache_check_page_write +EXPORT_SYMBOL fs/fscache/fscache 0x8941a13a fscache_mark_pages_cached +EXPORT_SYMBOL fs/fscache/fscache 0x8ac54cc6 __fscache_alloc_page +EXPORT_SYMBOL fs/fscache/fscache 0x9bdf323e fscache_cache_cleared_wq +EXPORT_SYMBOL fs/fscache/fscache 0xa27a9606 __fscache_uncache_all_inode_pages +EXPORT_SYMBOL fs/fscache/fscache 0xad438849 fscache_withdraw_cache +EXPORT_SYMBOL fs/fscache/fscache 0xb39605e0 fscache_put_operation +EXPORT_SYMBOL fs/fscache/fscache 0xbbd9843b __fscache_wait_on_page_write +EXPORT_SYMBOL fs/fscache/fscache 0xbd67abbc fscache_object_lookup_negative +EXPORT_SYMBOL fs/fscache/fscache 0xc0301730 fscache_init_cache +EXPORT_SYMBOL fs/fscache/fscache 0xc4d8da70 __fscache_relinquish_cookie +EXPORT_SYMBOL fs/fscache/fscache 0xc90e9459 __fscache_read_or_alloc_page +EXPORT_SYMBOL fs/fscache/fscache 0xccdd8e34 fscache_fsdef_index +EXPORT_SYMBOL fs/fscache/fscache 0xcf7cafba fscache_obtained_object +EXPORT_SYMBOL fs/fscache/fscache 0xdb703155 __fscache_register_netfs +EXPORT_SYMBOL fs/fscache/fscache 0xf1495bd4 __fscache_disable_cookie +EXPORT_SYMBOL fs/ocfs2/cluster/ocfs2_nodemanager 0xbfd7d7a2 o2hb_global_heartbeat_active +EXPORT_SYMBOL fs/quota/quota_tree 0x546d9cda qtree_read_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0x7af3d01b qtree_entry_unused +EXPORT_SYMBOL fs/quota/quota_tree 0x96f82060 qtree_write_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0x9c88248f qtree_delete_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0xb50661f7 qtree_release_dquot +EXPORT_SYMBOL lib/cordic 0x434bfd07 cordic_calc_iq +EXPORT_SYMBOL lib/crc-ccitt 0x1a703ba1 crc_ccitt +EXPORT_SYMBOL lib/crc-ccitt 0x75811312 crc_ccitt_table +EXPORT_SYMBOL lib/crc-itu-t 0x6d356209 crc_itu_t +EXPORT_SYMBOL lib/crc-itu-t 0xd29b009f crc_itu_t_table +EXPORT_SYMBOL lib/crc7 0x56329ecc crc7_be +EXPORT_SYMBOL lib/crc7 0x7a222007 crc7_be_syndrome_table +EXPORT_SYMBOL lib/crc8 0xab9ad613 crc8_populate_lsb +EXPORT_SYMBOL lib/crc8 0xd09b2cba crc8 +EXPORT_SYMBOL lib/crc8 0xd4534d80 crc8_populate_msb +EXPORT_SYMBOL lib/libcrc32c 0x27000b29 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 0x3f3c92ac 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 0xef763c54 lc_seq_printf_stats +EXPORT_SYMBOL lib/lru_cache 0xefec290a lc_find +EXPORT_SYMBOL lib/lru_cache 0xfd525ec7 lc_put +EXPORT_SYMBOL lib/lz4/lz4_compress 0x0c222eb5 lz4_compress +EXPORT_SYMBOL lib/lz4/lz4hc_compress 0x682a23e0 lz4hc_compress +EXPORT_SYMBOL lib/raid6/raid6_pq 0x0bd662f6 raid6_gfmul +EXPORT_SYMBOL lib/raid6/raid6_pq 0x15fe0cd3 raid6_gfexp +EXPORT_SYMBOL lib/raid6/raid6_pq 0x5ba93f9d raid6_gfinv +EXPORT_SYMBOL lib/raid6/raid6_pq 0xb0d904b7 raid6_empty_zero_page +EXPORT_SYMBOL lib/raid6/raid6_pq 0xce45a6f1 raid6_gfexi +EXPORT_SYMBOL lib/raid6/raid6_pq 0xd9e91f83 raid6_vgfmul +EXPORT_SYMBOL net/6lowpan/6lowpan 0x17ec01c8 lowpan_nhc_del +EXPORT_SYMBOL net/6lowpan/6lowpan 0x681a0218 lowpan_nhc_add +EXPORT_SYMBOL net/802/p8022 0x8b279405 register_8022_client +EXPORT_SYMBOL net/802/p8022 0xfb62fef4 unregister_8022_client +EXPORT_SYMBOL net/802/p8023 0xc412afcd make_8023_client +EXPORT_SYMBOL net/802/p8023 0xe8051346 destroy_8023_client +EXPORT_SYMBOL net/802/psnap 0x4433ddc8 unregister_snap_client +EXPORT_SYMBOL net/802/psnap 0x4d86b5af register_snap_client +EXPORT_SYMBOL net/9p/9pnet 0x08bddfd0 p9_client_disconnect +EXPORT_SYMBOL net/9p/9pnet 0x092794bd p9_tag_lookup +EXPORT_SYMBOL net/9p/9pnet 0x130e986e p9_client_getlock_dotl +EXPORT_SYMBOL net/9p/9pnet 0x1b38e143 p9_client_cb +EXPORT_SYMBOL net/9p/9pnet 0x2463fd2c p9_client_begin_disconnect +EXPORT_SYMBOL net/9p/9pnet 0x28169cc7 p9_release_pages +EXPORT_SYMBOL net/9p/9pnet 0x35d1e27e p9_idpool_get +EXPORT_SYMBOL net/9p/9pnet 0x36b629df v9fs_unregister_trans +EXPORT_SYMBOL net/9p/9pnet 0x3aeaa2d6 p9_parse_header +EXPORT_SYMBOL net/9p/9pnet 0x3aeab165 p9_client_open +EXPORT_SYMBOL net/9p/9pnet 0x3d73a797 p9_errstr2errno +EXPORT_SYMBOL net/9p/9pnet 0x44d2c2c0 p9stat_free +EXPORT_SYMBOL net/9p/9pnet 0x47a5b90f p9_is_proto_dotl +EXPORT_SYMBOL net/9p/9pnet 0x53db61b1 v9fs_get_default_trans +EXPORT_SYMBOL net/9p/9pnet 0x5f79ce60 p9_client_lock_dotl +EXPORT_SYMBOL net/9p/9pnet 0x6aa9af11 p9_client_mkdir_dotl +EXPORT_SYMBOL net/9p/9pnet 0x6d813f90 p9_client_walk +EXPORT_SYMBOL net/9p/9pnet 0x708f233f p9_client_setattr +EXPORT_SYMBOL net/9p/9pnet 0x7168feb5 p9_client_getattr_dotl +EXPORT_SYMBOL net/9p/9pnet 0x75baee1b p9_client_create +EXPORT_SYMBOL net/9p/9pnet 0x769c5018 p9_client_write +EXPORT_SYMBOL net/9p/9pnet 0x7736e919 p9_client_readlink +EXPORT_SYMBOL net/9p/9pnet 0x7df99d07 p9_client_renameat +EXPORT_SYMBOL net/9p/9pnet 0x8621452a p9_client_create_dotl +EXPORT_SYMBOL net/9p/9pnet 0x8b8d9d97 p9stat_read +EXPORT_SYMBOL net/9p/9pnet 0x8c1e21ea v9fs_register_trans +EXPORT_SYMBOL net/9p/9pnet 0x8d04328e p9_client_unlinkat +EXPORT_SYMBOL net/9p/9pnet 0x90f66a5c p9dirent_read +EXPORT_SYMBOL net/9p/9pnet 0x913fc136 v9fs_get_trans_by_name +EXPORT_SYMBOL net/9p/9pnet 0x94baa660 p9_client_readdir +EXPORT_SYMBOL net/9p/9pnet 0xa42ba148 p9_client_rename +EXPORT_SYMBOL net/9p/9pnet 0xa962dc39 p9_client_destroy +EXPORT_SYMBOL net/9p/9pnet 0xc585776a p9_client_fcreate +EXPORT_SYMBOL net/9p/9pnet 0xc5db54a9 p9_idpool_destroy +EXPORT_SYMBOL net/9p/9pnet 0xc7cba696 p9_client_stat +EXPORT_SYMBOL net/9p/9pnet 0xca8f6c37 p9_client_remove +EXPORT_SYMBOL net/9p/9pnet 0xd286227a p9_is_proto_dotu +EXPORT_SYMBOL net/9p/9pnet 0xd30f2ce6 p9_client_clunk +EXPORT_SYMBOL net/9p/9pnet 0xd9a31107 p9_client_symlink +EXPORT_SYMBOL net/9p/9pnet 0xdad98121 p9_client_wstat +EXPORT_SYMBOL net/9p/9pnet 0xdb8ead32 p9_client_read +EXPORT_SYMBOL net/9p/9pnet 0xe04390b2 p9_client_statfs +EXPORT_SYMBOL net/9p/9pnet 0xe050eb0c p9_client_link +EXPORT_SYMBOL net/9p/9pnet 0xe58a3360 p9_error_init +EXPORT_SYMBOL net/9p/9pnet 0xf182db28 p9_client_fsync +EXPORT_SYMBOL net/9p/9pnet 0xf1d38827 p9_client_attach +EXPORT_SYMBOL net/9p/9pnet 0xf4a111d8 p9_idpool_create +EXPORT_SYMBOL net/9p/9pnet 0xf84f2022 p9_idpool_put +EXPORT_SYMBOL net/9p/9pnet 0xfd40c79d p9_idpool_check +EXPORT_SYMBOL net/9p/9pnet 0xfece6ca5 p9_client_mknod_dotl +EXPORT_SYMBOL net/appletalk/appletalk 0x1718c1c6 atrtr_get_dev +EXPORT_SYMBOL net/appletalk/appletalk 0xdc91112d atalk_find_dev_addr +EXPORT_SYMBOL net/appletalk/appletalk 0xdee8b16f alloc_ltalkdev +EXPORT_SYMBOL net/appletalk/appletalk 0xed20f8a0 aarp_send_ddp +EXPORT_SYMBOL net/atm/atm 0x1bfbb10f vcc_sklist_lock +EXPORT_SYMBOL net/atm/atm 0x1ebffdf0 atm_alloc_charge +EXPORT_SYMBOL net/atm/atm 0x262705c2 vcc_insert_socket +EXPORT_SYMBOL net/atm/atm 0x2866a0c7 atm_charge +EXPORT_SYMBOL net/atm/atm 0x2a4d593b atm_dev_release_vccs +EXPORT_SYMBOL net/atm/atm 0x2cc2d52d vcc_hash +EXPORT_SYMBOL net/atm/atm 0x30f6c949 atm_dev_signal_change +EXPORT_SYMBOL net/atm/atm 0x43ee955a atm_init_aal5 +EXPORT_SYMBOL net/atm/atm 0x4443d399 atm_proc_root +EXPORT_SYMBOL net/atm/atm 0x55fc6dd7 atm_dev_deregister +EXPORT_SYMBOL net/atm/atm 0x860ed734 deregister_atm_ioctl +EXPORT_SYMBOL net/atm/atm 0x95e19dcd 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 0xb7817585 vcc_process_recv_queue +EXPORT_SYMBOL net/atm/atm 0xbb18101b register_atm_ioctl +EXPORT_SYMBOL net/atm/atm 0xcac288c2 vcc_release_async +EXPORT_SYMBOL net/atm/atm 0xe09dd801 atm_dev_lookup +EXPORT_SYMBOL net/atm/atm 0xf49bc67a atm_pcr_goal +EXPORT_SYMBOL net/ax25/ax25 0x03e75b99 ax25_send_frame +EXPORT_SYMBOL net/ax25/ax25 0x1ee4c08f ax25_header_ops +EXPORT_SYMBOL net/ax25/ax25 0x242852b9 ax25_uid_policy +EXPORT_SYMBOL net/ax25/ax25 0x32646dd2 ax25_find_cb +EXPORT_SYMBOL net/ax25/ax25 0x3afee63e ax25_findbyuid +EXPORT_SYMBOL net/ax25/ax25 0x4502c65a asc2ax +EXPORT_SYMBOL net/ax25/ax25 0x53dea1ff ax2asc +EXPORT_SYMBOL net/ax25/ax25 0x6585fa9e ax25_linkfail_register +EXPORT_SYMBOL net/ax25/ax25 0x7f4d0a26 ax25_ip_xmit +EXPORT_SYMBOL net/ax25/ax25 0x8ede9e26 ax25_protocol_release +EXPORT_SYMBOL net/ax25/ax25 0xa7f3015b ax25_display_timer +EXPORT_SYMBOL net/ax25/ax25 0xbd86d90c ax25_listen_register +EXPORT_SYMBOL net/ax25/ax25 0xc1444946 ax25cmp +EXPORT_SYMBOL net/ax25/ax25 0xc791bb3f ax25_linkfail_release +EXPORT_SYMBOL net/ax25/ax25 0xd43ecbf1 null_ax25_address +EXPORT_SYMBOL net/ax25/ax25 0xf76a9811 ax25_listen_release +EXPORT_SYMBOL net/bluetooth/bluetooth 0x04c3f328 hci_reset_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x089eec69 l2cap_chan_close +EXPORT_SYMBOL net/bluetooth/bluetooth 0x0e80ff9e l2cap_conn_put +EXPORT_SYMBOL net/bluetooth/bluetooth 0x0ff9aff0 bt_sock_wait_ready +EXPORT_SYMBOL net/bluetooth/bluetooth 0x1391b693 hci_conn_check_secure +EXPORT_SYMBOL net/bluetooth/bluetooth 0x1b64c7f5 bt_sock_stream_recvmsg +EXPORT_SYMBOL net/bluetooth/bluetooth 0x24d57396 hci_conn_switch_role +EXPORT_SYMBOL net/bluetooth/bluetooth 0x294b8c43 bt_sock_reclassify_lock +EXPORT_SYMBOL net/bluetooth/bluetooth 0x297a5af4 bt_sock_register +EXPORT_SYMBOL net/bluetooth/bluetooth 0x2a08f124 hci_unregister_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x3f2094fe bt_sock_link +EXPORT_SYMBOL net/bluetooth/bluetooth 0x47022514 bt_err +EXPORT_SYMBOL net/bluetooth/bluetooth 0x49f1c57c hci_recv_frame +EXPORT_SYMBOL net/bluetooth/bluetooth 0x55b15dc0 hci_free_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x57a905b4 __hci_cmd_sync_ev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x5ab21c2b l2cap_conn_get +EXPORT_SYMBOL net/bluetooth/bluetooth 0x618cb10a l2cap_is_socket +EXPORT_SYMBOL net/bluetooth/bluetooth 0x6cec5b91 __hci_cmd_sync +EXPORT_SYMBOL net/bluetooth/bluetooth 0x70c4ac83 hci_mgmt_chan_unregister +EXPORT_SYMBOL net/bluetooth/bluetooth 0x7282d631 hci_conn_security +EXPORT_SYMBOL net/bluetooth/bluetooth 0x752a21c1 hci_register_cb +EXPORT_SYMBOL net/bluetooth/bluetooth 0x8138a9cc bt_sock_poll +EXPORT_SYMBOL net/bluetooth/bluetooth 0x8d5d86b9 bt_accept_dequeue +EXPORT_SYMBOL net/bluetooth/bluetooth 0x8fea24bd bt_sock_unregister +EXPORT_SYMBOL net/bluetooth/bluetooth 0x91c9a325 bt_to_errno +EXPORT_SYMBOL net/bluetooth/bluetooth 0x93973fc1 bt_accept_enqueue +EXPORT_SYMBOL net/bluetooth/bluetooth 0x9ace533b hci_resume_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xa7e0299b bt_sock_unlink +EXPORT_SYMBOL net/bluetooth/bluetooth 0xa82806b7 bt_procfs_init +EXPORT_SYMBOL net/bluetooth/bluetooth 0xab135128 hci_register_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xb2ad8317 hci_mgmt_chan_register +EXPORT_SYMBOL net/bluetooth/bluetooth 0xc0ea4059 bt_procfs_cleanup +EXPORT_SYMBOL net/bluetooth/bluetooth 0xc2a77ab4 l2cap_unregister_user +EXPORT_SYMBOL net/bluetooth/bluetooth 0xc3772fd1 bt_sock_recvmsg +EXPORT_SYMBOL net/bluetooth/bluetooth 0xc9eaca8d bt_sock_ioctl +EXPORT_SYMBOL net/bluetooth/bluetooth 0xcc1fb551 baswap +EXPORT_SYMBOL net/bluetooth/bluetooth 0xd265c25a hci_alloc_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xd444b159 l2cap_register_user +EXPORT_SYMBOL net/bluetooth/bluetooth 0xd52c9143 hci_get_route +EXPORT_SYMBOL net/bluetooth/bluetooth 0xd7442057 bt_info +EXPORT_SYMBOL net/bluetooth/bluetooth 0xe27e377e hci_suspend_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xf28e1765 bt_sock_wait_state +EXPORT_SYMBOL net/bluetooth/bluetooth 0xf420a8bc hci_unregister_cb +EXPORT_SYMBOL net/bluetooth/bluetooth 0xfb821bd6 bt_accept_unlink +EXPORT_SYMBOL net/bridge/bridge 0xed7df951 br_should_route_hook +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0x21e72cdd ebt_do_table +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0x3dff4388 ebt_unregister_table +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0xbfe76e18 ebt_register_table +EXPORT_SYMBOL net/caif/caif 0x05935a40 caif_enroll_dev +EXPORT_SYMBOL net/caif/caif 0x114d242a caif_disconnect_client +EXPORT_SYMBOL net/caif/caif 0x12351069 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 0x2b258237 caif_connect_client +EXPORT_SYMBOL net/caif/caif 0x329dbd06 cfpkt_info +EXPORT_SYMBOL net/caif/caif 0x38701a7c cfcnfg_del_phy_layer +EXPORT_SYMBOL net/caif/caif 0x4a237e57 cfpkt_tonative +EXPORT_SYMBOL net/caif/caif 0x6a44fc70 cfpkt_extr_head +EXPORT_SYMBOL net/caif/caif 0x839ddb7b cfcnfg_set_phy_state +EXPORT_SYMBOL net/caif/caif 0x966d7de2 cfpkt_add_head +EXPORT_SYMBOL net/caif/caif 0x9e3e305d cfpkt_set_prio +EXPORT_SYMBOL net/caif/caif 0xb7b6874e caif_free_client +EXPORT_SYMBOL net/caif/caif 0xc21225da cfcnfg_add_phy_layer +EXPORT_SYMBOL net/can/can 0x504e1620 can_rx_unregister +EXPORT_SYMBOL net/can/can 0x5c1e40a9 can_ioctl +EXPORT_SYMBOL net/can/can 0x81d9c92f can_send +EXPORT_SYMBOL net/can/can 0xa13f27ed can_rx_register +EXPORT_SYMBOL net/can/can 0xadddc618 can_proto_unregister +EXPORT_SYMBOL net/can/can 0xc2569191 can_proto_register +EXPORT_SYMBOL net/ceph/libceph 0x0128ee07 osd_req_op_extent_osd_data_pagelist +EXPORT_SYMBOL net/ceph/libceph 0x02d8bd88 ceph_auth_invalidate_authorizer +EXPORT_SYMBOL net/ceph/libceph 0x02e841bd osd_req_op_watch_init +EXPORT_SYMBOL net/ceph/libceph 0x04057257 ceph_osdc_sync +EXPORT_SYMBOL net/ceph/libceph 0x08de5a1b ceph_auth_is_authenticated +EXPORT_SYMBOL net/ceph/libceph 0x09290ab3 ceph_debugfs_init +EXPORT_SYMBOL net/ceph/libceph 0x098e0712 ceph_osdc_put_event +EXPORT_SYMBOL net/ceph/libceph 0x0c89a2e1 ceph_msg_dump +EXPORT_SYMBOL net/ceph/libceph 0x12f30d68 ceph_con_open +EXPORT_SYMBOL net/ceph/libceph 0x1a17fba3 ceph_osdc_new_request +EXPORT_SYMBOL net/ceph/libceph 0x20d151cb ceph_osdc_setup +EXPORT_SYMBOL net/ceph/libceph 0x215760f4 osd_req_op_cls_response_data_pages +EXPORT_SYMBOL net/ceph/libceph 0x21c60751 ceph_pagelist_free_reserve +EXPORT_SYMBOL net/ceph/libceph 0x242e54ef osd_req_op_cls_response_data +EXPORT_SYMBOL net/ceph/libceph 0x24d897df ceph_pagelist_release +EXPORT_SYMBOL net/ceph/libceph 0x258cbee8 ceph_pg_poolid_by_name +EXPORT_SYMBOL net/ceph/libceph 0x26a4f4cf ceph_osdc_get_request +EXPORT_SYMBOL net/ceph/libceph 0x26e816ce ceph_osdc_start_request +EXPORT_SYMBOL net/ceph/libceph 0x28a6ead3 ceph_monc_got_mdsmap +EXPORT_SYMBOL net/ceph/libceph 0x2d2e50be ceph_check_fsid +EXPORT_SYMBOL net/ceph/libceph 0x2db717f3 ceph_destroy_options +EXPORT_SYMBOL net/ceph/libceph 0x305acc4f ceph_msg_data_add_pagelist +EXPORT_SYMBOL net/ceph/libceph 0x30b3fc65 ceph_msg_get +EXPORT_SYMBOL net/ceph/libceph 0x31ff46b0 osd_req_op_cls_request_data_pages +EXPORT_SYMBOL net/ceph/libceph 0x3abec91f ceph_pr_addr +EXPORT_SYMBOL net/ceph/libceph 0x3b7ca601 ceph_osdc_readpages +EXPORT_SYMBOL net/ceph/libceph 0x3e8e0381 osd_req_op_extent_init +EXPORT_SYMBOL net/ceph/libceph 0x3f688151 ceph_put_snap_context +EXPORT_SYMBOL net/ceph/libceph 0x419cb09b ceph_pagelist_truncate +EXPORT_SYMBOL net/ceph/libceph 0x43e458f6 ceph_file_part +EXPORT_SYMBOL net/ceph/libceph 0x43efd647 ceph_calc_file_object_mapping +EXPORT_SYMBOL net/ceph/libceph 0x4454c4ca ceph_osdc_cancel_request +EXPORT_SYMBOL net/ceph/libceph 0x446f06c7 osd_req_op_cls_init +EXPORT_SYMBOL net/ceph/libceph 0x44d18e46 ceph_release_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x454e6b43 ceph_monc_wait_osdmap +EXPORT_SYMBOL net/ceph/libceph 0x466b85b8 libceph_compatible +EXPORT_SYMBOL net/ceph/libceph 0x4728c106 ceph_copy_user_to_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x49266e24 ceph_monc_do_get_version +EXPORT_SYMBOL net/ceph/libceph 0x4a54de46 ceph_con_close +EXPORT_SYMBOL net/ceph/libceph 0x4b7b3064 ceph_monc_do_statfs +EXPORT_SYMBOL net/ceph/libceph 0x4eae62bc ceph_monc_validate_auth +EXPORT_SYMBOL net/ceph/libceph 0x51c2538c ceph_con_send +EXPORT_SYMBOL net/ceph/libceph 0x5379cea3 ceph_caps_for_mode +EXPORT_SYMBOL net/ceph/libceph 0x541a19ff ceph_print_client_options +EXPORT_SYMBOL net/ceph/libceph 0x54467f42 ceph_osdc_writepages +EXPORT_SYMBOL net/ceph/libceph 0x57baf885 ceph_str_hash +EXPORT_SYMBOL net/ceph/libceph 0x5aa033e7 ceph_monc_init +EXPORT_SYMBOL net/ceph/libceph 0x5b662022 osd_req_op_init +EXPORT_SYMBOL net/ceph/libceph 0x5bcbb76f ceph_destroy_client +EXPORT_SYMBOL net/ceph/libceph 0x5ce56a8c ceph_con_init +EXPORT_SYMBOL net/ceph/libceph 0x60f93339 ceph_auth_create_authorizer +EXPORT_SYMBOL net/ceph/libceph 0x63758856 ceph_str_hash_name +EXPORT_SYMBOL net/ceph/libceph 0x640db6d2 ceph_osdc_wait_request +EXPORT_SYMBOL net/ceph/libceph 0x64474c3e ceph_oloc_oid_to_pg +EXPORT_SYMBOL net/ceph/libceph 0x65ec26c3 ceph_zero_page_vector_range +EXPORT_SYMBOL net/ceph/libceph 0x68f65973 ceph_auth_update_authorizer +EXPORT_SYMBOL net/ceph/libceph 0x6b2e3bcd ceph_get_snap_context +EXPORT_SYMBOL net/ceph/libceph 0x6fcdafef ceph_buffer_new +EXPORT_SYMBOL net/ceph/libceph 0x7007d464 ceph_messenger_fini +EXPORT_SYMBOL net/ceph/libceph 0x74636bf5 ceph_msg_data_add_bio +EXPORT_SYMBOL net/ceph/libceph 0x79a8e389 ceph_osdc_create_event +EXPORT_SYMBOL net/ceph/libceph 0x79b2ca1a osd_req_op_extent_osd_data_bio +EXPORT_SYMBOL net/ceph/libceph 0x7ae0072c osd_req_op_alloc_hint_init +EXPORT_SYMBOL net/ceph/libceph 0x807b28c3 ceph_osdc_cancel_event +EXPORT_SYMBOL net/ceph/libceph 0x80936fcc ceph_osdc_flush_notifies +EXPORT_SYMBOL net/ceph/libceph 0x80c5de9d ceph_con_keepalive +EXPORT_SYMBOL net/ceph/libceph 0x85cdb535 osd_req_op_xattr_init +EXPORT_SYMBOL net/ceph/libceph 0x8739506f ceph_client_id +EXPORT_SYMBOL net/ceph/libceph 0x8cbe66d5 ceph_osdc_alloc_request +EXPORT_SYMBOL net/ceph/libceph 0x8e8a902f ceph_compare_options +EXPORT_SYMBOL net/ceph/libceph 0x908471b2 ceph_pg_pool_name_by_id +EXPORT_SYMBOL net/ceph/libceph 0x90c0c8a0 ceph_msg_new +EXPORT_SYMBOL net/ceph/libceph 0x93441bfe ceph_create_client +EXPORT_SYMBOL net/ceph/libceph 0x99e36571 ceph_osdc_cleanup +EXPORT_SYMBOL net/ceph/libceph 0x9f534f4d ceph_buffer_release +EXPORT_SYMBOL net/ceph/libceph 0xadcf33f4 ceph_calc_pg_primary +EXPORT_SYMBOL net/ceph/libceph 0xae3515ba ceph_create_snap_context +EXPORT_SYMBOL net/ceph/libceph 0xae468d36 ceph_messenger_init +EXPORT_SYMBOL net/ceph/libceph 0xafb8a407 ceph_msgr_flush +EXPORT_SYMBOL net/ceph/libceph 0xb000cef9 osd_req_op_extent_update +EXPORT_SYMBOL net/ceph/libceph 0xb1df308d osd_req_op_extent_osd_data +EXPORT_SYMBOL net/ceph/libceph 0xb54676fa ceph_msg_type_name +EXPORT_SYMBOL net/ceph/libceph 0xb6081d6d ceph_msgr_exit +EXPORT_SYMBOL net/ceph/libceph 0xb7f13de1 ceph_get_direct_page_vector +EXPORT_SYMBOL net/ceph/libceph 0xbc55a7bb ceph_auth_destroy_authorizer +EXPORT_SYMBOL net/ceph/libceph 0xbd332ab9 ceph_open_session +EXPORT_SYMBOL net/ceph/libceph 0xbea0c8c7 ceph_copy_from_page_vector +EXPORT_SYMBOL net/ceph/libceph 0xc22d61b6 __ceph_open_session +EXPORT_SYMBOL net/ceph/libceph 0xc3dec1e3 ceph_alloc_page_vector +EXPORT_SYMBOL net/ceph/libceph 0xc49937bf ceph_put_page_vector +EXPORT_SYMBOL net/ceph/libceph 0xc4a80955 ceph_debugfs_cleanup +EXPORT_SYMBOL net/ceph/libceph 0xc6f713a9 ceph_copy_to_page_vector +EXPORT_SYMBOL net/ceph/libceph 0xc9f82b38 ceph_msgr_init +EXPORT_SYMBOL net/ceph/libceph 0xcb50a624 ceph_parse_ips +EXPORT_SYMBOL net/ceph/libceph 0xcef0c298 ceph_auth_verify_authorizer_reply +EXPORT_SYMBOL net/ceph/libceph 0xcfa3d632 ceph_msg_put +EXPORT_SYMBOL net/ceph/libceph 0xd2c107bb ceph_flags_to_mode +EXPORT_SYMBOL net/ceph/libceph 0xd7acd83f ceph_pagelist_set_cursor +EXPORT_SYMBOL net/ceph/libceph 0xd92ca564 ceph_osdc_build_request +EXPORT_SYMBOL net/ceph/libceph 0xdc699a64 ceph_monc_stop +EXPORT_SYMBOL net/ceph/libceph 0xdd23ec7c ceph_osdc_put_request +EXPORT_SYMBOL net/ceph/libceph 0xdd8e7550 ceph_parse_options +EXPORT_SYMBOL net/ceph/libceph 0xe31dbf0b osd_req_op_extent_osd_data_pages +EXPORT_SYMBOL net/ceph/libceph 0xe320c584 ceph_msg_data_add_pages +EXPORT_SYMBOL net/ceph/libceph 0xe3b042ca ceph_pagelist_append +EXPORT_SYMBOL net/ceph/libceph 0xe5cc96e3 ceph_monc_request_next_osdmap +EXPORT_SYMBOL net/ceph/libceph 0xeca1ac7b ceph_monc_open_session +EXPORT_SYMBOL net/ceph/libceph 0xf0176919 ceph_osdc_set_request_linger +EXPORT_SYMBOL net/ceph/libceph 0xf35cb4d9 ceph_pagelist_reserve +EXPORT_SYMBOL net/ceph/libceph 0xf8ed684a osd_req_op_raw_data_in_pages +EXPORT_SYMBOL net/ceph/libceph 0xf937868f osd_req_op_cls_request_data_pagelist +EXPORT_SYMBOL net/dccp/dccp_ipv4 0x184a4a86 dccp_req_err +EXPORT_SYMBOL net/dccp/dccp_ipv4 0xe0a79605 dccp_syn_ack_timeout +EXPORT_SYMBOL net/ieee802154/6lowpan/ieee802154_6lowpan 0x9f863814 lowpan_frag_rcv +EXPORT_SYMBOL net/ieee802154/ieee802154 0x065cd15f wpan_phy_free +EXPORT_SYMBOL net/ieee802154/ieee802154 0x4a784af5 wpan_phy_for_each +EXPORT_SYMBOL net/ieee802154/ieee802154 0x6835e086 wpan_phy_find +EXPORT_SYMBOL net/ieee802154/ieee802154 0x9555e6e5 wpan_phy_register +EXPORT_SYMBOL net/ieee802154/ieee802154 0x9912d434 wpan_phy_unregister +EXPORT_SYMBOL net/ieee802154/ieee802154 0xef68152b wpan_phy_new +EXPORT_SYMBOL net/ipv4/fou 0x03916fe4 gue_encap_hlen +EXPORT_SYMBOL net/ipv4/fou 0x1feaa344 gue_build_header +EXPORT_SYMBOL net/ipv4/fou 0x7a38253c fou_build_header +EXPORT_SYMBOL net/ipv4/fou 0x7a8411a2 fou_encap_hlen +EXPORT_SYMBOL net/ipv4/ip_tunnel 0x09840994 ip_tunnel_encap_add_ops +EXPORT_SYMBOL net/ipv4/ip_tunnel 0x13012721 ip_tunnel_dst_reset_all +EXPORT_SYMBOL net/ipv4/ip_tunnel 0x2e36a951 ip_tunnel_get_link_net +EXPORT_SYMBOL net/ipv4/ip_tunnel 0x6450bfab ip_tunnel_encap_del_ops +EXPORT_SYMBOL net/ipv4/ip_tunnel 0xb1439599 ip_tunnel_get_iflink +EXPORT_SYMBOL net/ipv4/ip_tunnel 0xfb1299ea ip_tunnel_encap +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0x3a8e2153 arpt_unregister_table +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0x8f53ff52 arpt_register_table +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0x97ce74c9 arpt_do_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0x5682d0c8 ipt_register_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0x5f6b28d0 ipt_unregister_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0xbf454c75 ipt_do_table +EXPORT_SYMBOL net/ipv4/tunnel4 0x3b78eb2c xfrm4_tunnel_deregister +EXPORT_SYMBOL net/ipv4/tunnel4 0xa0398ada xfrm4_tunnel_register +EXPORT_SYMBOL net/ipv4/udp_tunnel 0xf518803a udp_sock_create4 +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0x29c5ced9 ip6_tnl_get_iflink +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0x2ff38cd7 ip6_tnl_parse_tlv_enc_lim +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0x445ed8aa ip6_tnl_get_link_net +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0xbfb545db ip6_tnl_get_cap +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0x43897853 ip6t_do_table +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0x84ff5cbd ip6t_unregister_table +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0xb96a5525 ip6t_register_table +EXPORT_SYMBOL net/ipv6/tunnel6 0xa22ba770 xfrm6_tunnel_deregister +EXPORT_SYMBOL net/ipv6/tunnel6 0xf3bc42b5 xfrm6_tunnel_register +EXPORT_SYMBOL net/ipv6/xfrm6_tunnel 0xcf051bc0 xfrm6_tunnel_spi_lookup +EXPORT_SYMBOL net/ipv6/xfrm6_tunnel 0xe3bd0086 xfrm6_tunnel_alloc_spi +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x4532c53b ircomm_connect_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x601b0b54 ircomm_flow_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x67687edc ircomm_data_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x823199e0 ircomm_control_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x912f0765 ircomm_disconnect_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0xa187b4ea ircomm_connect_response +EXPORT_SYMBOL net/irda/ircomm/ircomm 0xc0a1bba7 ircomm_close +EXPORT_SYMBOL net/irda/ircomm/ircomm 0xc1ecb311 ircomm_open +EXPORT_SYMBOL net/irda/irda 0x05145a63 irlmp_open_lsap +EXPORT_SYMBOL net/irda/irda 0x06a3ee58 irias_new_integer_value +EXPORT_SYMBOL net/irda/irda 0x07d3647c irlmp_register_service +EXPORT_SYMBOL net/irda/irda 0x0963c24b irias_add_string_attrib +EXPORT_SYMBOL net/irda/irda 0x09939c11 irias_add_integer_attrib +EXPORT_SYMBOL net/irda/irda 0x23bbc2ce irias_find_object +EXPORT_SYMBOL net/irda/irda 0x24e074ba irttp_close_tsap +EXPORT_SYMBOL net/irda/irda 0x2b432980 hashbin_get_next +EXPORT_SYMBOL net/irda/irda 0x327e7eee iriap_getvaluebyclass_request +EXPORT_SYMBOL net/irda/irda 0x33cbe2c6 proc_irda +EXPORT_SYMBOL net/irda/irda 0x380eb79a irttp_disconnect_request +EXPORT_SYMBOL net/irda/irda 0x385847aa irias_delete_object +EXPORT_SYMBOL net/irda/irda 0x3cde0e69 irlap_open +EXPORT_SYMBOL net/irda/irda 0x448b8aaa irda_qos_bits_to_value +EXPORT_SYMBOL net/irda/irda 0x449a7162 alloc_irdadev +EXPORT_SYMBOL net/irda/irda 0x46b00fdf irias_insert_object +EXPORT_SYMBOL net/irda/irda 0x46c1c4a2 irlmp_unregister_service +EXPORT_SYMBOL net/irda/irda 0x50a8602b iriap_close +EXPORT_SYMBOL net/irda/irda 0x53a97468 irttp_open_tsap +EXPORT_SYMBOL net/irda/irda 0x6b043eba irda_init_max_qos_capabilies +EXPORT_SYMBOL net/irda/irda 0x6b7c1ab0 irda_device_set_media_busy +EXPORT_SYMBOL net/irda/irda 0x7042bc54 irlmp_register_client +EXPORT_SYMBOL net/irda/irda 0x70a3f20f hashbin_lock_find +EXPORT_SYMBOL net/irda/irda 0x763e54a4 irlmp_unregister_client +EXPORT_SYMBOL net/irda/irda 0x774aa8a9 irlmp_connect_request +EXPORT_SYMBOL net/irda/irda 0x7957f728 irlmp_update_client +EXPORT_SYMBOL net/irda/irda 0x7c74c358 async_wrap_skb +EXPORT_SYMBOL net/irda/irda 0x7f52a8bf irda_param_insert +EXPORT_SYMBOL net/irda/irda 0x8a13fb36 irlmp_data_request +EXPORT_SYMBOL net/irda/irda 0x8ae2c8c1 irlmp_connect_response +EXPORT_SYMBOL net/irda/irda 0x8d4f6362 irda_notify_init +EXPORT_SYMBOL net/irda/irda 0x91815586 irda_param_pack +EXPORT_SYMBOL net/irda/irda 0x94a824db irda_param_extract_all +EXPORT_SYMBOL net/irda/irda 0x950cbbe3 irttp_udata_request +EXPORT_SYMBOL net/irda/irda 0x98a8b3b4 hashbin_delete +EXPORT_SYMBOL net/irda/irda 0x9ccbdfca hashbin_insert +EXPORT_SYMBOL net/irda/irda 0x9fcfc3fd irlmp_disconnect_request +EXPORT_SYMBOL net/irda/irda 0xac3dc858 irias_add_octseq_attrib +EXPORT_SYMBOL net/irda/irda 0xadb90290 irttp_data_request +EXPORT_SYMBOL net/irda/irda 0xaeeff2b5 hashbin_find +EXPORT_SYMBOL net/irda/irda 0xb25f2905 irttp_connect_request +EXPORT_SYMBOL net/irda/irda 0xb9394173 irias_delete_value +EXPORT_SYMBOL net/irda/irda 0xbcd3ef13 irias_object_change_attribute +EXPORT_SYMBOL net/irda/irda 0xbe40ace9 irlmp_discovery_request +EXPORT_SYMBOL net/irda/irda 0xc19ec16e irttp_flow_request +EXPORT_SYMBOL net/irda/irda 0xc51d7bf7 irlap_close +EXPORT_SYMBOL net/irda/irda 0xcd59d2a7 iriap_open +EXPORT_SYMBOL net/irda/irda 0xd6deeaae irda_setup_dma +EXPORT_SYMBOL net/irda/irda 0xd928f0b4 async_unwrap_char +EXPORT_SYMBOL net/irda/irda 0xdc0196c2 hashbin_remove +EXPORT_SYMBOL net/irda/irda 0xde4c6b3c irlmp_service_to_hint +EXPORT_SYMBOL net/irda/irda 0xe1ba6308 irias_new_object +EXPORT_SYMBOL net/irda/irda 0xe329462a hashbin_get_first +EXPORT_SYMBOL net/irda/irda 0xe6c768bb irlmp_close_lsap +EXPORT_SYMBOL net/irda/irda 0xeb78333e hashbin_remove_this +EXPORT_SYMBOL net/irda/irda 0xec242b93 hashbin_new +EXPORT_SYMBOL net/irda/irda 0xedd521c2 irlmp_get_discoveries +EXPORT_SYMBOL net/irda/irda 0xf2380bb3 irttp_connect_response +EXPORT_SYMBOL net/irda/irda 0xf5518837 irttp_dup +EXPORT_SYMBOL net/l2tp/l2tp_core 0xee379682 l2tp_recv_common +EXPORT_SYMBOL net/lapb/lapb 0x13e9655c lapb_setparms +EXPORT_SYMBOL net/lapb/lapb 0x4c6589d3 lapb_getparms +EXPORT_SYMBOL net/lapb/lapb 0x4dcbb755 lapb_register +EXPORT_SYMBOL net/lapb/lapb 0x6be398ac lapb_disconnect_request +EXPORT_SYMBOL net/lapb/lapb 0x821c162f lapb_connect_request +EXPORT_SYMBOL net/lapb/lapb 0xd413ab06 lapb_data_request +EXPORT_SYMBOL net/lapb/lapb 0xd73e43af lapb_unregister +EXPORT_SYMBOL net/lapb/lapb 0xed80d62a lapb_data_received +EXPORT_SYMBOL net/llc/llc 0x38b92846 llc_remove_pack +EXPORT_SYMBOL net/llc/llc 0x4e818419 llc_sap_close +EXPORT_SYMBOL net/llc/llc 0x5051c2df llc_set_station_handler +EXPORT_SYMBOL net/llc/llc 0x52d7b2fd llc_sap_list +EXPORT_SYMBOL net/llc/llc 0x940bbcea llc_sap_find +EXPORT_SYMBOL net/llc/llc 0xb86d179a llc_build_and_send_ui_pkt +EXPORT_SYMBOL net/llc/llc 0xe10414b4 llc_sap_open +EXPORT_SYMBOL net/llc/llc 0xe25b8743 llc_add_pack +EXPORT_SYMBOL net/llc/llc 0xf16963c5 llc_mac_hdr_init +EXPORT_SYMBOL net/mac80211/mac80211 0x05c541f0 ieee80211_alloc_hw_nm +EXPORT_SYMBOL net/mac80211/mac80211 0x0bd609f2 ieee80211_get_key_tx_seq +EXPORT_SYMBOL net/mac80211/mac80211 0x0be210db ieee80211_rate_control_register +EXPORT_SYMBOL net/mac80211/mac80211 0x11cc6acb ieee80211_free_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x14ad99f5 ieee80211_probereq_get +EXPORT_SYMBOL net/mac80211/mac80211 0x167b540c ieee80211_send_bar +EXPORT_SYMBOL net/mac80211/mac80211 0x17928dd9 wiphy_to_ieee80211_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x1795e80b __ieee80211_create_tpt_led_trigger +EXPORT_SYMBOL net/mac80211/mac80211 0x24f7de08 ieee80211_csa_update_counter +EXPORT_SYMBOL net/mac80211/mac80211 0x27804319 ieee80211_beacon_get_tim +EXPORT_SYMBOL net/mac80211/mac80211 0x285ecd15 ieee80211_stop_rx_ba_session_offl +EXPORT_SYMBOL net/mac80211/mac80211 0x28f5329b ieee80211_rx +EXPORT_SYMBOL net/mac80211/mac80211 0x2bafb387 ieee80211_find_sta +EXPORT_SYMBOL net/mac80211/mac80211 0x2cf36ef1 ieee80211_cqm_rssi_notify +EXPORT_SYMBOL net/mac80211/mac80211 0x2f145bc1 __ieee80211_get_radio_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0x30f02fb8 ieee80211_start_tx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0x384a96f0 ieee80211_wake_queue +EXPORT_SYMBOL net/mac80211/mac80211 0x38537e12 __ieee80211_get_tx_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0x38af1045 ieee80211_proberesp_get +EXPORT_SYMBOL net/mac80211/mac80211 0x3d117168 ieee80211_stop_queue +EXPORT_SYMBOL net/mac80211/mac80211 0x3fdf650a ieee80211_wake_queues +EXPORT_SYMBOL net/mac80211/mac80211 0x419c0202 ieee80211_get_tkip_p1k_iv +EXPORT_SYMBOL net/mac80211/mac80211 0x434eac2e ieee80211_unregister_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x48e49797 ieee80211_rts_get +EXPORT_SYMBOL net/mac80211/mac80211 0x4c2b011a ieee80211_get_tkip_rx_p1k +EXPORT_SYMBOL net/mac80211/mac80211 0x4d3bbf3e rate_control_send_low +EXPORT_SYMBOL net/mac80211/mac80211 0x55f97e4f ieee80211_get_key_rx_seq +EXPORT_SYMBOL net/mac80211/mac80211 0x5a24b8df __ieee80211_get_rx_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0x5d2a383b ieee80211_queue_work +EXPORT_SYMBOL net/mac80211/mac80211 0x640dbebe ieee80211_stop_tx_ba_cb_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0x663721c3 ieee80211_sta_eosp +EXPORT_SYMBOL net/mac80211/mac80211 0x6890d28e ieee80211_generic_frame_duration +EXPORT_SYMBOL net/mac80211/mac80211 0x6972f452 ieee80211_unreserve_tid +EXPORT_SYMBOL net/mac80211/mac80211 0x6b229088 ieee80211_queue_stopped +EXPORT_SYMBOL net/mac80211/mac80211 0x70897918 rate_control_set_rates +EXPORT_SYMBOL net/mac80211/mac80211 0x71d5d64f ieee80211_tx_dequeue +EXPORT_SYMBOL net/mac80211/mac80211 0x72f80b2d ieee80211_sched_scan_results +EXPORT_SYMBOL net/mac80211/mac80211 0x77ea65c4 ieee80211_update_p2p_noa +EXPORT_SYMBOL net/mac80211/mac80211 0x785461a0 ieee80211_rate_control_unregister +EXPORT_SYMBOL net/mac80211/mac80211 0x7f29309a ieee80211_reserve_tid +EXPORT_SYMBOL net/mac80211/mac80211 0x80362cb8 ieee80211_sched_scan_stopped +EXPORT_SYMBOL net/mac80211/mac80211 0x835a9ca6 ieee80211_beacon_get_template +EXPORT_SYMBOL net/mac80211/mac80211 0x87b2b773 ieee80211_stop_rx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0x8dcffb04 ieee80211_get_buffered_bc +EXPORT_SYMBOL net/mac80211/mac80211 0x8ef9625b ieee80211_connection_loss +EXPORT_SYMBOL net/mac80211/mac80211 0x92823a70 ieee80211_chswitch_done +EXPORT_SYMBOL net/mac80211/mac80211 0x962bdde8 ieee80211_aes_cmac_calculate_k1_k2 +EXPORT_SYMBOL net/mac80211/mac80211 0x9c7639e6 ieee80211_free_txskb +EXPORT_SYMBOL net/mac80211/mac80211 0x9c85f51f ieee80211_get_tx_rates +EXPORT_SYMBOL net/mac80211/mac80211 0x9c92fe7e ieee80211_cqm_beacon_loss_notify +EXPORT_SYMBOL net/mac80211/mac80211 0x9e7913dd ieee80211_ctstoself_duration +EXPORT_SYMBOL net/mac80211/mac80211 0x9ee4def0 ieee80211_tx_status_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0xa0063d52 ieee80211_enable_rssi_reports +EXPORT_SYMBOL net/mac80211/mac80211 0xabafdab4 ieee80211_tx_status_noskb +EXPORT_SYMBOL net/mac80211/mac80211 0xac1ac956 ieee80211_report_low_ack +EXPORT_SYMBOL net/mac80211/mac80211 0xadcea751 ieee80211_report_wowlan_wakeup +EXPORT_SYMBOL net/mac80211/mac80211 0xb0008af4 ieee80211_ap_probereq_get +EXPORT_SYMBOL net/mac80211/mac80211 0xb71a9cfa ieee80211_iter_keys +EXPORT_SYMBOL net/mac80211/mac80211 0xb78a25f6 ieee80211_get_tkip_p2k +EXPORT_SYMBOL net/mac80211/mac80211 0xb987da1d ieee80211_pspoll_get +EXPORT_SYMBOL net/mac80211/mac80211 0xbbb1297c ieee80211_queue_delayed_work +EXPORT_SYMBOL net/mac80211/mac80211 0xc0862b9c ieee80211_tdls_oper_request +EXPORT_SYMBOL net/mac80211/mac80211 0xc0c2a7f0 ieee80211_radar_detected +EXPORT_SYMBOL net/mac80211/mac80211 0xc2c1a024 ieee80211_disable_rssi_reports +EXPORT_SYMBOL net/mac80211/mac80211 0xc42ae7e1 __ieee80211_get_assoc_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0xc5654c56 ieee80211_csa_is_complete +EXPORT_SYMBOL net/mac80211/mac80211 0xc819ccad ieee80211_ctstoself_get +EXPORT_SYMBOL net/mac80211/mac80211 0xc9b508f4 ieee80211_stop_tx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0xcbe8756c ieee80211_restart_hw +EXPORT_SYMBOL net/mac80211/mac80211 0xcf2828c4 ieee80211_sta_set_buffered +EXPORT_SYMBOL net/mac80211/mac80211 0xcfdc30b1 ieee80211_csa_finish +EXPORT_SYMBOL net/mac80211/mac80211 0xd72625cb ieee80211_parse_p2p_noa +EXPORT_SYMBOL net/mac80211/mac80211 0xdd386176 ieee80211_rts_duration +EXPORT_SYMBOL net/mac80211/mac80211 0xdd6d1418 ieee80211_start_tx_ba_cb_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0xe1f71e1e ieee80211_register_hw +EXPORT_SYMBOL net/mac80211/mac80211 0xe35a4982 ieee80211_sta_ps_transition +EXPORT_SYMBOL net/mac80211/mac80211 0xe44233de ieee80211_scan_completed +EXPORT_SYMBOL net/mac80211/mac80211 0xe60025ec ieee80211_start_rx_ba_session_offl +EXPORT_SYMBOL net/mac80211/mac80211 0xe703ecd6 ieee80211_tx_prepare_skb +EXPORT_SYMBOL net/mac80211/mac80211 0xe79263b5 ieee80211_rx_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0xe9375da2 ieee80211_stop_queues +EXPORT_SYMBOL net/mac80211/mac80211 0xf4ccd474 ieee80211_nullfunc_get +EXPORT_SYMBOL net/mac80211/mac80211 0xf5870738 ieee80211_sta_block_awake +EXPORT_SYMBOL net/mac80211/mac80211 0xf6509386 ieee80211_tx_status +EXPORT_SYMBOL net/mac80211/mac80211 0xfdbf7acc ieee80211_beacon_loss +EXPORT_SYMBOL net/mac802154/mac802154 0x1ae93ba7 ieee802154_register_hw +EXPORT_SYMBOL net/mac802154/mac802154 0x3f7e9abc ieee802154_stop_queue +EXPORT_SYMBOL net/mac802154/mac802154 0x40fdcf3c ieee802154_unregister_hw +EXPORT_SYMBOL net/mac802154/mac802154 0x43d1aea4 ieee802154_free_hw +EXPORT_SYMBOL net/mac802154/mac802154 0xa4c4ef95 ieee802154_wake_queue +EXPORT_SYMBOL net/mac802154/mac802154 0xad638925 ieee802154_rx +EXPORT_SYMBOL net/mac802154/mac802154 0xb30f25c7 ieee802154_rx_irqsafe +EXPORT_SYMBOL net/mac802154/mac802154 0xf32e922d ieee802154_xmit_complete +EXPORT_SYMBOL net/mac802154/mac802154 0xfb5b25bc ieee802154_alloc_hw +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x09718634 register_ip_vs_app +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x18271d26 register_ip_vs_scheduler +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x6201be97 ip_vs_tcp_conn_listen +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x64ba4ba2 ip_vs_proto_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x7ce796e0 unregister_ip_vs_app +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x82099d17 ip_vs_conn_out_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xa64ea9b6 ip_vs_nfct_expect_related +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xb61755ce register_ip_vs_app_inc +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xbe1674ce unregister_ip_vs_scheduler +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xc820af23 ip_vs_conn_in_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xcb6af265 ip_vs_conn_put +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xce65da48 ip_vs_conn_new +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xd831a1a2 ip_vs_proto_name +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xe6b89ed6 ip_vs_scheduler_err +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xf418cc2f ip_vs_proto_data_get +EXPORT_SYMBOL net/netfilter/nf_conntrack 0x8fc9273d nf_conntrack_untracked +EXPORT_SYMBOL net/netfilter/nf_conntrack 0xa6b41c17 __nf_ct_ext_destroy +EXPORT_SYMBOL net/netfilter/nf_conntrack 0xbdf652ab __nf_ct_ext_add_length +EXPORT_SYMBOL net/netfilter/nf_conntrack_pptp 0x827cc6a1 pptp_msg_name +EXPORT_SYMBOL net/netfilter/nf_nat 0x3a2715e6 nf_nat_follow_master +EXPORT_SYMBOL net/netfilter/nf_nat 0x48da929f nf_nat_setup_info +EXPORT_SYMBOL net/netfilter/nf_nat 0x4d238726 nf_nat_mangle_udp_packet +EXPORT_SYMBOL net/netfilter/nf_nat 0xa63c08bd nf_nat_used_tuple +EXPORT_SYMBOL net/netfilter/nf_nat 0xb5967881 nf_xfrm_me_harder +EXPORT_SYMBOL net/netfilter/nf_nat 0xb6b82ee9 __nf_nat_mangle_tcp_packet +EXPORT_SYMBOL net/netfilter/x_tables 0x088863a3 xt_register_target +EXPORT_SYMBOL net/netfilter/x_tables 0x253e8b44 xt_compat_init_offsets +EXPORT_SYMBOL net/netfilter/x_tables 0x2cfd18c8 xt_find_match +EXPORT_SYMBOL net/netfilter/x_tables 0x30733337 xt_register_matches +EXPORT_SYMBOL net/netfilter/x_tables 0x44da0f28 xt_unregister_target +EXPORT_SYMBOL net/netfilter/x_tables 0x482d26fd xt_alloc_table_info +EXPORT_SYMBOL net/netfilter/x_tables 0x51efa261 xt_register_targets +EXPORT_SYMBOL net/netfilter/x_tables 0x5a97033d xt_unregister_matches +EXPORT_SYMBOL net/netfilter/x_tables 0xad22e3ca xt_register_match +EXPORT_SYMBOL net/netfilter/x_tables 0xb150af4f xt_unregister_targets +EXPORT_SYMBOL net/netfilter/x_tables 0xb429e39c xt_find_target +EXPORT_SYMBOL net/netfilter/x_tables 0xbfd70aea xt_unregister_match +EXPORT_SYMBOL net/netfilter/x_tables 0xd1a21986 xt_free_table_info +EXPORT_SYMBOL net/nfc/hci/hci 0x1ca0aa0f nfc_hci_send_cmd_async +EXPORT_SYMBOL net/nfc/hci/hci 0x243aa244 nfc_hci_connect_gate +EXPORT_SYMBOL net/nfc/hci/hci 0x36293108 nfc_hci_reset_pipes +EXPORT_SYMBOL net/nfc/hci/hci 0x3d2a034b nfc_hci_free_device +EXPORT_SYMBOL net/nfc/hci/hci 0x43028a27 nfc_hci_result_to_errno +EXPORT_SYMBOL net/nfc/hci/hci 0x485a525e nfc_hci_driver_failure +EXPORT_SYMBOL net/nfc/hci/hci 0x7e655782 nfc_hci_disconnect_all_gates +EXPORT_SYMBOL net/nfc/hci/hci 0x9ec6b519 nfc_hci_unregister_device +EXPORT_SYMBOL net/nfc/hci/hci 0xa8871db2 nfc_hci_target_discovered +EXPORT_SYMBOL net/nfc/hci/hci 0xaaf3c43b nfc_hci_register_device +EXPORT_SYMBOL net/nfc/hci/hci 0xac55c7c2 nfc_hci_get_param +EXPORT_SYMBOL net/nfc/hci/hci 0xbca0b4fd nfc_hci_sak_to_protocol +EXPORT_SYMBOL net/nfc/hci/hci 0xc4b1a15a nfc_hci_set_clientdata +EXPORT_SYMBOL net/nfc/hci/hci 0xc990bd8e nfc_hci_get_clientdata +EXPORT_SYMBOL net/nfc/hci/hci 0xd0971c57 nfc_hci_reset_pipes_per_host +EXPORT_SYMBOL net/nfc/hci/hci 0xd87b57fd nfc_hci_send_event +EXPORT_SYMBOL net/nfc/hci/hci 0xdc178c59 nfc_hci_disconnect_gate +EXPORT_SYMBOL net/nfc/hci/hci 0xe02a804a nfc_hci_send_cmd +EXPORT_SYMBOL net/nfc/hci/hci 0xe733eeeb nfc_hci_allocate_device +EXPORT_SYMBOL net/nfc/hci/hci 0xfdc7680a nfc_hci_recv_frame +EXPORT_SYMBOL net/nfc/hci/hci 0xfff3913f nfc_hci_set_param +EXPORT_SYMBOL net/nfc/nci/nci 0x18e58c02 nci_hci_dev_session_init +EXPORT_SYMBOL net/nfc/nci/nci 0x1940d78c nci_core_conn_create +EXPORT_SYMBOL net/nfc/nci/nci 0x1a6a38d4 nci_free_device +EXPORT_SYMBOL net/nfc/nci/nci 0x28c8e624 nci_hci_open_pipe +EXPORT_SYMBOL net/nfc/nci/nci 0x2e381e3f nci_hci_send_event +EXPORT_SYMBOL net/nfc/nci/nci 0x30c11370 nci_req_complete +EXPORT_SYMBOL net/nfc/nci/nci 0x5482a628 nci_core_conn_close +EXPORT_SYMBOL net/nfc/nci/nci 0x6e79ea14 nci_hci_connect_gate +EXPORT_SYMBOL net/nfc/nci/nci 0x797c0aba nci_nfcee_discover +EXPORT_SYMBOL net/nfc/nci/nci 0x85dacf18 nci_set_config +EXPORT_SYMBOL net/nfc/nci/nci 0x868dd1ca nci_recv_frame +EXPORT_SYMBOL net/nfc/nci/nci 0x8adc2f48 nci_hci_send_cmd +EXPORT_SYMBOL net/nfc/nci/nci 0x96c23631 nci_hci_get_param +EXPORT_SYMBOL net/nfc/nci/nci 0x9be92ca3 nci_unregister_device +EXPORT_SYMBOL net/nfc/nci/nci 0x9fdd88fb nci_allocate_device +EXPORT_SYMBOL net/nfc/nci/nci 0xa401a904 nci_nfcee_mode_set +EXPORT_SYMBOL net/nfc/nci/nci 0xa68bd8b2 nci_prop_cmd +EXPORT_SYMBOL net/nfc/nci/nci 0xba490602 nci_to_errno +EXPORT_SYMBOL net/nfc/nci/nci 0xdac42d23 nci_hci_set_param +EXPORT_SYMBOL net/nfc/nci/nci 0xfba61349 nci_register_device +EXPORT_SYMBOL net/nfc/nfc 0x15702a33 nfc_add_se +EXPORT_SYMBOL net/nfc/nfc 0x3604c614 nfc_alloc_recv_skb +EXPORT_SYMBOL net/nfc/nfc 0x368a9341 nfc_allocate_device +EXPORT_SYMBOL net/nfc/nfc 0x38bc9b67 nfc_fw_download_done +EXPORT_SYMBOL net/nfc/nfc 0x497c1c0f nfc_driver_failure +EXPORT_SYMBOL net/nfc/nfc 0x4ed09550 nfc_send_to_raw_sock +EXPORT_SYMBOL net/nfc/nfc 0x5d13f666 nfc_targets_found +EXPORT_SYMBOL net/nfc/nfc 0x7948e9a6 nfc_se_transaction +EXPORT_SYMBOL net/nfc/nfc 0x7a2a7a3b nfc_register_device +EXPORT_SYMBOL net/nfc/nfc 0x83e4e9e2 nfc_proto_unregister +EXPORT_SYMBOL net/nfc/nfc 0x89067b4c nfc_tm_deactivated +EXPORT_SYMBOL net/nfc/nfc 0x8d6709e4 nfc_find_se +EXPORT_SYMBOL net/nfc/nfc 0x9012cd2c nfc_proto_register +EXPORT_SYMBOL net/nfc/nfc 0x93b37396 nfc_class +EXPORT_SYMBOL net/nfc/nfc 0xa06f44f3 nfc_get_local_general_bytes +EXPORT_SYMBOL net/nfc/nfc 0xa4d9a677 nfc_dep_link_is_up +EXPORT_SYMBOL net/nfc/nfc 0xb0d6dc44 nfc_tm_activated +EXPORT_SYMBOL net/nfc/nfc 0xb698fb93 nfc_target_lost +EXPORT_SYMBOL net/nfc/nfc 0xc1130122 nfc_unregister_device +EXPORT_SYMBOL net/nfc/nfc 0xd593fd36 nfc_set_remote_general_bytes +EXPORT_SYMBOL net/nfc/nfc 0xf0d7b028 nfc_tm_data_received +EXPORT_SYMBOL net/nfc/nfc 0xfd0014f6 nfc_remove_se +EXPORT_SYMBOL net/nfc/nfc_digital 0x3b1ffa5a nfc_digital_register_device +EXPORT_SYMBOL net/nfc/nfc_digital 0x6c47af7d nfc_digital_unregister_device +EXPORT_SYMBOL net/nfc/nfc_digital 0x6f756d38 nfc_digital_allocate_device +EXPORT_SYMBOL net/nfc/nfc_digital 0x84f3de3d nfc_digital_free_device +EXPORT_SYMBOL net/phonet/phonet 0x1cd7820f pn_sock_get_port +EXPORT_SYMBOL net/phonet/phonet 0x6089e22e pn_skb_send +EXPORT_SYMBOL net/phonet/phonet 0x7e777438 phonet_proto_register +EXPORT_SYMBOL net/phonet/phonet 0x99ef8bd2 pn_sock_unhash +EXPORT_SYMBOL net/phonet/phonet 0x9a3a957b phonet_stream_ops +EXPORT_SYMBOL net/phonet/phonet 0xad65df55 phonet_proto_unregister +EXPORT_SYMBOL net/phonet/phonet 0xf902a9ea phonet_header_ops +EXPORT_SYMBOL net/phonet/phonet 0xff35cf75 pn_sock_hash +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x00ac36ea rxrpc_kernel_accept_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x06992fa7 rxrpc_kernel_reject_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x0cad2862 rxrpc_kernel_end_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x33828225 rxrpc_kernel_get_abort_code +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x343045c5 rxrpc_kernel_abort_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x3c6e7f03 rxrpc_kernel_send_data +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x4f56f489 rxrpc_kernel_data_delivered +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x567e1f3f rxrpc_kernel_get_error_number +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x5fb55ed6 rxrpc_kernel_intercept_rx_messages +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x615b201f rxrpc_kernel_begin_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x89f106e6 key_type_rxrpc +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xbfbd9b9d rxrpc_get_null_key +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xcf6c4666 rxrpc_get_server_data_key +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xe5551088 rxrpc_kernel_free_skb +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xf5e5c771 rxrpc_kernel_is_data_last +EXPORT_SYMBOL net/sctp/sctp 0x0d924900 sctp_do_peeloff +EXPORT_SYMBOL net/sunrpc/auth_gss/auth_rpcgss 0x31d08922 gss_pseudoflavor_to_service +EXPORT_SYMBOL net/sunrpc/auth_gss/auth_rpcgss 0x58221be0 gss_mech_put +EXPORT_SYMBOL net/sunrpc/auth_gss/auth_rpcgss 0xd5da35f2 gss_mech_get +EXPORT_SYMBOL net/sunrpc/sunrpc 0x052417b7 xdr_truncate_encode +EXPORT_SYMBOL net/sunrpc/sunrpc 0x17b42070 svc_pool_stats_open +EXPORT_SYMBOL net/sunrpc/sunrpc 0xe50b4179 xdr_restrict_buflen +EXPORT_SYMBOL net/wimax/wimax 0x04bc7a6f wimax_reset +EXPORT_SYMBOL net/wimax/wimax 0xdf7d400c wimax_rfkill +EXPORT_SYMBOL net/wireless/cfg80211 0x034a5869 wiphy_apply_custom_regulatory +EXPORT_SYMBOL net/wireless/cfg80211 0x0818b8c2 wiphy_rfkill_set_hw_state +EXPORT_SYMBOL net/wireless/cfg80211 0x09c64fbd ieee80211_frequency_to_channel +EXPORT_SYMBOL net/wireless/cfg80211 0x0ded7f0c cfg80211_get_drvinfo +EXPORT_SYMBOL net/wireless/cfg80211 0x134423d5 cfg80211_pmksa_candidate_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x14b9551d wiphy_rfkill_start_polling +EXPORT_SYMBOL net/wireless/cfg80211 0x17e90262 ieee80211_get_hdrlen_from_skb +EXPORT_SYMBOL net/wireless/cfg80211 0x1879fcbd bridge_tunnel_header +EXPORT_SYMBOL net/wireless/cfg80211 0x19e03378 cfg80211_get_p2p_attr +EXPORT_SYMBOL net/wireless/cfg80211 0x1ac27f61 cfg80211_rx_mlme_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0x1f594d32 cfg80211_new_sta +EXPORT_SYMBOL net/wireless/cfg80211 0x24d0fcf2 cfg80211_roamed +EXPORT_SYMBOL net/wireless/cfg80211 0x27294386 cfg80211_rx_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0x27a8796a cfg80211_del_sta_sinfo +EXPORT_SYMBOL net/wireless/cfg80211 0x2f09e425 wiphy_rfkill_stop_polling +EXPORT_SYMBOL net/wireless/cfg80211 0x353f9c0f cfg80211_cqm_pktloss_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x3699c108 ieee80211_data_from_8023 +EXPORT_SYMBOL net/wireless/cfg80211 0x3703f4e2 cfg80211_rx_assoc_resp +EXPORT_SYMBOL net/wireless/cfg80211 0x3d0db330 cfg80211_inform_bss_width_frame +EXPORT_SYMBOL net/wireless/cfg80211 0x3d470c4d cfg80211_chandef_compatible +EXPORT_SYMBOL net/wireless/cfg80211 0x3d7dbeeb cfg80211_reg_can_beacon +EXPORT_SYMBOL net/wireless/cfg80211 0x3dba7b3c cfg80211_chandef_usable +EXPORT_SYMBOL net/wireless/cfg80211 0x3e285fec cfg80211_chandef_valid +EXPORT_SYMBOL net/wireless/cfg80211 0x3f5c3707 __cfg80211_alloc_event_skb +EXPORT_SYMBOL net/wireless/cfg80211 0x495457ff cfg80211_calculate_bitrate +EXPORT_SYMBOL net/wireless/cfg80211 0x4fd8fdff freq_reg_info +EXPORT_SYMBOL net/wireless/cfg80211 0x50214c28 ieee80211_bss_get_ie +EXPORT_SYMBOL net/wireless/cfg80211 0x537ba734 cfg80211_ft_event +EXPORT_SYMBOL net/wireless/cfg80211 0x551c120b __cfg80211_send_event_skb +EXPORT_SYMBOL net/wireless/cfg80211 0x5817d833 cfg80211_check_combinations +EXPORT_SYMBOL net/wireless/cfg80211 0x59d1b352 cfg80211_put_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x5e6adacf cfg80211_cqm_rssi_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x60b25d7a regulatory_hint +EXPORT_SYMBOL net/wireless/cfg80211 0x62975df9 cfg80211_probe_status +EXPORT_SYMBOL net/wireless/cfg80211 0x6509ac4a cfg80211_rx_unprot_mlme_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0x67b9fc62 cfg80211_auth_timeout +EXPORT_SYMBOL net/wireless/cfg80211 0x69b18f43 rfc1042_header +EXPORT_SYMBOL net/wireless/cfg80211 0x6c66267f cfg80211_report_wowlan_wakeup +EXPORT_SYMBOL net/wireless/cfg80211 0x6d6cb9ad ieee80211_operating_class_to_band +EXPORT_SYMBOL net/wireless/cfg80211 0x731772d2 cfg80211_radar_event +EXPORT_SYMBOL net/wireless/cfg80211 0x73509f4f cfg80211_connect_result +EXPORT_SYMBOL net/wireless/cfg80211 0x74c5f5ca cfg80211_iter_combinations +EXPORT_SYMBOL net/wireless/cfg80211 0x751a803a cfg80211_conn_failed +EXPORT_SYMBOL net/wireless/cfg80211 0x7b6512ec cfg80211_rx_unexpected_4addr_frame +EXPORT_SYMBOL net/wireless/cfg80211 0x7bf92f93 cfg80211_crit_proto_stopped +EXPORT_SYMBOL net/wireless/cfg80211 0x7c7aa5ea cfg80211_michael_mic_failure +EXPORT_SYMBOL net/wireless/cfg80211 0x7ef39823 ieee80211_hdrlen +EXPORT_SYMBOL net/wireless/cfg80211 0x7f16aca6 cfg80211_sched_scan_stopped_rtnl +EXPORT_SYMBOL net/wireless/cfg80211 0x7fe1a403 cfg80211_find_ie +EXPORT_SYMBOL net/wireless/cfg80211 0x8314a0c4 cfg80211_disconnected +EXPORT_SYMBOL net/wireless/cfg80211 0x83289dbb cfg80211_cqm_beacon_loss_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x83786dfc cfg80211_ibss_joined +EXPORT_SYMBOL net/wireless/cfg80211 0x8492a430 ieee80211_get_response_rate +EXPORT_SYMBOL net/wireless/cfg80211 0x868f70c2 cfg80211_unregister_wdev +EXPORT_SYMBOL net/wireless/cfg80211 0x877b8ef4 cfg80211_ref_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x87c57fc7 cfg80211_gtk_rekey_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x88f3782b cfg80211_notify_new_peer_candidate +EXPORT_SYMBOL net/wireless/cfg80211 0x892fbcec cfg80211_get_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x8a7062a5 ieee80211_mandatory_rates +EXPORT_SYMBOL net/wireless/cfg80211 0x8af5bd8b __cfg80211_alloc_reply_skb +EXPORT_SYMBOL net/wireless/cfg80211 0x8d0f42db cfg80211_get_station +EXPORT_SYMBOL net/wireless/cfg80211 0x8d2050dd cfg80211_cac_event +EXPORT_SYMBOL net/wireless/cfg80211 0x8dbf38ce cfg80211_chandef_dfs_required +EXPORT_SYMBOL net/wireless/cfg80211 0x8e048d87 cfg80211_unlink_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x8f69af1e regulatory_set_wiphy_regd_sync_rtnl +EXPORT_SYMBOL net/wireless/cfg80211 0x91d7a142 ieee80211_ie_split_ric +EXPORT_SYMBOL net/wireless/cfg80211 0x92b31172 cfg80211_sched_scan_stopped +EXPORT_SYMBOL net/wireless/cfg80211 0x9604f61c cfg80211_ready_on_channel +EXPORT_SYMBOL net/wireless/cfg80211 0x9656abcc cfg80211_remain_on_channel_expired +EXPORT_SYMBOL net/wireless/cfg80211 0x982e6b6d ieee80211_radiotap_iterator_init +EXPORT_SYMBOL net/wireless/cfg80211 0x99c7526c wiphy_register +EXPORT_SYMBOL net/wireless/cfg80211 0x9a25374d cfg80211_reg_can_beacon_relax +EXPORT_SYMBOL net/wireless/cfg80211 0x9d32f327 cfg80211_mgmt_tx_status +EXPORT_SYMBOL net/wireless/cfg80211 0xa01a1a18 cfg80211_check_station_change +EXPORT_SYMBOL net/wireless/cfg80211 0xa1425906 ieee80211_channel_to_frequency +EXPORT_SYMBOL net/wireless/cfg80211 0xa197b1ff ieee80211_get_mesh_hdrlen +EXPORT_SYMBOL net/wireless/cfg80211 0xa19d99d0 cfg80211_tx_mlme_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0xa793b48b cfg80211_rx_spurious_frame +EXPORT_SYMBOL net/wireless/cfg80211 0xa9d9b15f cfg80211_stop_iface +EXPORT_SYMBOL net/wireless/cfg80211 0xaa0faede wiphy_new_nm +EXPORT_SYMBOL net/wireless/cfg80211 0xad81b497 regulatory_set_wiphy_regd +EXPORT_SYMBOL net/wireless/cfg80211 0xbc379f4e cfg80211_ch_switch_started_notify +EXPORT_SYMBOL net/wireless/cfg80211 0xc18d4357 __ieee80211_get_channel +EXPORT_SYMBOL net/wireless/cfg80211 0xc40802af cfg80211_roamed_bss +EXPORT_SYMBOL net/wireless/cfg80211 0xc55c5798 wiphy_unregister +EXPORT_SYMBOL net/wireless/cfg80211 0xc63f1b81 ieee80211_radiotap_iterator_next +EXPORT_SYMBOL net/wireless/cfg80211 0xc90fde22 ieee80211_chandef_to_operating_class +EXPORT_SYMBOL net/wireless/cfg80211 0xc9db9ad2 ieee80211_data_to_8023 +EXPORT_SYMBOL net/wireless/cfg80211 0xcef23cdf cfg80211_ch_switch_notify +EXPORT_SYMBOL net/wireless/cfg80211 0xcf77a68c cfg80211_assoc_timeout +EXPORT_SYMBOL net/wireless/cfg80211 0xd1a51c39 cfg80211_report_obss_beacon +EXPORT_SYMBOL net/wireless/cfg80211 0xd37a4def ieee80211_get_num_supported_channels +EXPORT_SYMBOL net/wireless/cfg80211 0xd3b5e650 wiphy_free +EXPORT_SYMBOL net/wireless/cfg80211 0xd3c338cf ieee80211_amsdu_to_8023s +EXPORT_SYMBOL net/wireless/cfg80211 0xd50b0a22 ieee80211_ie_split +EXPORT_SYMBOL net/wireless/cfg80211 0xdba126c1 reg_initiator_name +EXPORT_SYMBOL net/wireless/cfg80211 0xe785d070 cfg80211_sched_scan_results +EXPORT_SYMBOL net/wireless/cfg80211 0xeb14c65a cfg80211_classify8021d +EXPORT_SYMBOL net/wireless/cfg80211 0xedc6f645 cfg80211_tdls_oper_request +EXPORT_SYMBOL net/wireless/cfg80211 0xefc56354 cfg80211_chandef_create +EXPORT_SYMBOL net/wireless/cfg80211 0xf8d69ead cfg80211_scan_done +EXPORT_SYMBOL net/wireless/cfg80211 0xfd8f44ad cfg80211_inform_bss_width +EXPORT_SYMBOL net/wireless/cfg80211 0xfed4d591 cfg80211_find_vendor_ie +EXPORT_SYMBOL net/wireless/cfg80211 0xfeda8bdf cfg80211_cqm_txe_notify +EXPORT_SYMBOL net/wireless/lib80211 0x5d920536 lib80211_crypt_info_init +EXPORT_SYMBOL net/wireless/lib80211 0x8a844206 lib80211_crypt_delayed_deinit +EXPORT_SYMBOL net/wireless/lib80211 0x9b24beb3 lib80211_get_crypto_ops +EXPORT_SYMBOL net/wireless/lib80211 0xa8171b97 lib80211_unregister_crypto_ops +EXPORT_SYMBOL net/wireless/lib80211 0xbcd24856 lib80211_crypt_info_free +EXPORT_SYMBOL net/wireless/lib80211 0xda78afc6 lib80211_register_crypto_ops +EXPORT_SYMBOL sound/ac97_bus 0x23821408 ac97_bus_type +EXPORT_SYMBOL sound/core/oss/snd-mixer-oss 0x15afb454 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 0x75397cd2 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 0x9e1362cb snd_seq_kernel_client_write_poll +EXPORT_SYMBOL sound/core/seq/snd-seq 0xb779953e snd_seq_kernel_client_enqueue_blocking +EXPORT_SYMBOL sound/core/seq/snd-seq 0xb8e448a0 snd_seq_set_queue_tempo +EXPORT_SYMBOL sound/core/seq/snd-seq 0xcac0a3be snd_seq_kernel_client_enqueue +EXPORT_SYMBOL sound/core/seq/snd-seq 0xe2dd51b3 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-device 0x091def1c snd_seq_autoload_exit +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0x370a0736 snd_seq_autoload_init +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0x6081fbe6 snd_seq_device_new +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0x6339b6d0 snd_seq_device_load_drivers +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 0xf0a1fdb3 snd_midi_process_event +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x205395a0 snd_midi_event_encode_byte +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x614705ff snd_midi_event_no_status +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x7746bb9b snd_midi_event_decode +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x79794472 snd_midi_event_new +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x991c0f60 snd_midi_event_reset_encode +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0xef8fa3d2 snd_midi_event_free +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0xf3f0324e snd_midi_event_reset_decode +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0xf6fdda44 snd_midi_event_encode +EXPORT_SYMBOL sound/core/seq/snd-seq-virmidi 0x8376a917 snd_virmidi_new +EXPORT_SYMBOL sound/core/snd 0x01472995 snd_info_free_entry +EXPORT_SYMBOL sound/core/snd 0x025cf720 snd_device_new +EXPORT_SYMBOL sound/core/snd 0x02b29226 snd_card_new +EXPORT_SYMBOL sound/core/snd 0x0368af9b snd_card_disconnect +EXPORT_SYMBOL sound/core/snd 0x0e39fb28 snd_ctl_rename_id +EXPORT_SYMBOL sound/core/snd 0x115441e9 snd_card_register +EXPORT_SYMBOL sound/core/snd 0x1516e27d snd_cards +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 0x20a4b0c4 snd_jack_add_new_kctl +EXPORT_SYMBOL sound/core/snd 0x24a94b26 snd_info_get_line +EXPORT_SYMBOL sound/core/snd 0x24c7f87c snd_ctl_register_ioctl +EXPORT_SYMBOL sound/core/snd 0x26dfbfbb snd_device_free +EXPORT_SYMBOL sound/core/snd 0x2ae3deaa release_and_free_resource +EXPORT_SYMBOL sound/core/snd 0x2d7cb8ac snd_ctl_free_one +EXPORT_SYMBOL sound/core/snd 0x31630282 snd_jack_set_key +EXPORT_SYMBOL sound/core/snd 0x3272edf6 snd_register_oss_device +EXPORT_SYMBOL sound/core/snd 0x342a2354 copy_to_user_fromio +EXPORT_SYMBOL sound/core/snd 0x3971b4df snd_ecards_limit +EXPORT_SYMBOL sound/core/snd 0x3b701509 snd_jack_report +EXPORT_SYMBOL sound/core/snd 0x41b3002c snd_device_register +EXPORT_SYMBOL sound/core/snd 0x42a0d905 snd_card_free_when_closed +EXPORT_SYMBOL sound/core/snd 0x43763d49 snd_register_device +EXPORT_SYMBOL sound/core/snd 0x4a3ea5c0 snd_request_card +EXPORT_SYMBOL sound/core/snd 0x4ee5b86e snd_mixer_oss_notify_callback +EXPORT_SYMBOL sound/core/snd 0x5382e5ac snd_ctl_find_id +EXPORT_SYMBOL sound/core/snd 0x5e048f9e snd_ctl_make_virtual_master +EXPORT_SYMBOL sound/core/snd 0x6458e2ed snd_info_register +EXPORT_SYMBOL sound/core/snd 0x670e2e8f snd_ctl_register_ioctl_compat +EXPORT_SYMBOL sound/core/snd 0x70c15ac1 snd_dma_disable +EXPORT_SYMBOL sound/core/snd 0x78a3d25c snd_jack_new +EXPORT_SYMBOL sound/core/snd 0x7af34d13 snd_ctl_new1 +EXPORT_SYMBOL sound/core/snd 0x7d61138a snd_ctl_find_numid +EXPORT_SYMBOL sound/core/snd 0x7e650436 snd_component_add +EXPORT_SYMBOL sound/core/snd 0x8084c2f5 snd_card_free +EXPORT_SYMBOL sound/core/snd 0x81b69e41 snd_ctl_enum_info +EXPORT_SYMBOL sound/core/snd 0x8987d8b2 snd_ctl_boolean_mono_info +EXPORT_SYMBOL sound/core/snd 0x8df3789f snd_oss_info_register +EXPORT_SYMBOL sound/core/snd 0x8f595b11 snd_major +EXPORT_SYMBOL sound/core/snd 0x92ac3e65 snd_ctl_remove_id +EXPORT_SYMBOL sound/core/snd 0x9b4358ab snd_jack_set_parent +EXPORT_SYMBOL sound/core/snd 0x9c020422 snd_ctl_unregister_ioctl_compat +EXPORT_SYMBOL sound/core/snd 0x9e6d79f8 snd_info_get_str +EXPORT_SYMBOL sound/core/snd 0x9ed7cb56 snd_ctl_unregister_ioctl +EXPORT_SYMBOL sound/core/snd 0x9f161a9b snd_card_set_id +EXPORT_SYMBOL sound/core/snd 0xa0fd2427 snd_pci_quirk_lookup_id +EXPORT_SYMBOL sound/core/snd 0xa57a7954 snd_card_file_remove +EXPORT_SYMBOL sound/core/snd 0xb2e5ae4a snd_lookup_minor_data +EXPORT_SYMBOL sound/core/snd 0xb4f9ad33 snd_ctl_notify +EXPORT_SYMBOL sound/core/snd 0xc1e90b37 snd_info_create_card_entry +EXPORT_SYMBOL sound/core/snd 0xc4710c8d snd_ctl_remove +EXPORT_SYMBOL sound/core/snd 0xcd0346c4 snd_unregister_device +EXPORT_SYMBOL sound/core/snd 0xd093bcaf snd_power_wait +EXPORT_SYMBOL sound/core/snd 0xd0ba595b snd_card_file_add +EXPORT_SYMBOL sound/core/snd 0xd7efeb84 snd_unregister_oss_device +EXPORT_SYMBOL sound/core/snd 0xe012f27d snd_ctl_boolean_stereo_info +EXPORT_SYMBOL sound/core/snd 0xe42ec645 snd_ctl_replace +EXPORT_SYMBOL sound/core/snd 0xe8b2df31 snd_info_create_module_entry +EXPORT_SYMBOL sound/core/snd 0xf30776b3 snd_ctl_add +EXPORT_SYMBOL sound/core/snd 0xf9f73dc0 snd_seq_root +EXPORT_SYMBOL sound/core/snd 0xfa38b8f8 _snd_ctl_add_slave +EXPORT_SYMBOL sound/core/snd 0xffbcc929 snd_pci_quirk_lookup +EXPORT_SYMBOL sound/core/snd 0xfffd89db copy_from_user_toio +EXPORT_SYMBOL sound/core/snd-hwdep 0xa801de76 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 0x06474b9e snd_pcm_stop +EXPORT_SYMBOL sound/core/snd-pcm 0x06b310c9 snd_free_pages +EXPORT_SYMBOL sound/core/snd-pcm 0x0a1f346b snd_pcm_new_internal +EXPORT_SYMBOL sound/core/snd-pcm 0x0ef64640 snd_pcm_lib_get_vmalloc_page +EXPORT_SYMBOL sound/core/snd-pcm 0x131e67e1 snd_pcm_lib_malloc_pages +EXPORT_SYMBOL sound/core/snd-pcm 0x1d027e4b snd_pcm_format_signed +EXPORT_SYMBOL sound/core/snd-pcm 0x212ac0a4 snd_pcm_suspend +EXPORT_SYMBOL sound/core/snd-pcm 0x243c6b7a snd_dma_free_pages +EXPORT_SYMBOL sound/core/snd-pcm 0x2a7dd56e snd_pcm_hw_constraint_ranges +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 0x39e947f8 snd_pcm_hw_rule_noresample +EXPORT_SYMBOL sound/core/snd-pcm 0x3afb8826 snd_pcm_period_elapsed +EXPORT_SYMBOL sound/core/snd-pcm 0x3ea2ef6c snd_pcm_lib_free_pages +EXPORT_SYMBOL sound/core/snd-pcm 0x464c989f snd_pcm_lib_ioctl +EXPORT_SYMBOL sound/core/snd-pcm 0x4d42912c snd_pcm_hw_rule_add +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 0x50fe24e2 _snd_pcm_lib_alloc_vmalloc_buffer +EXPORT_SYMBOL sound/core/snd-pcm 0x511eaf43 snd_pcm_set_ops +EXPORT_SYMBOL sound/core/snd-pcm 0x514a4f78 snd_pcm_lib_preallocate_free_for_all +EXPORT_SYMBOL sound/core/snd-pcm 0x52e3e4a5 snd_pcm_hw_param_value +EXPORT_SYMBOL sound/core/snd-pcm 0x5898dcba snd_malloc_pages +EXPORT_SYMBOL sound/core/snd-pcm 0x59456593 snd_pcm_lib_readv +EXPORT_SYMBOL sound/core/snd-pcm 0x5af50ac3 snd_pcm_hw_constraint_ratdens +EXPORT_SYMBOL sound/core/snd-pcm 0x5e4c00fa snd_pcm_lib_mmap_iomem +EXPORT_SYMBOL sound/core/snd-pcm 0x5e7f4920 snd_pcm_format_set_silence +EXPORT_SYMBOL sound/core/snd-pcm 0x63f674a0 snd_pcm_new_stream +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 0x6a8553f9 snd_pcm_hw_constraint_step +EXPORT_SYMBOL sound/core/snd-pcm 0x6b82caf1 snd_pcm_new +EXPORT_SYMBOL sound/core/snd-pcm 0x6d5a5688 snd_pcm_hw_constraint_msbits +EXPORT_SYMBOL sound/core/snd-pcm 0x6ef8fcd8 snd_pcm_format_linear +EXPORT_SYMBOL sound/core/snd-pcm 0x7332e068 snd_dma_alloc_pages_fallback +EXPORT_SYMBOL sound/core/snd-pcm 0x7c340899 snd_pcm_hw_param_last +EXPORT_SYMBOL sound/core/snd-pcm 0x82376503 snd_pcm_hw_constraint_integer +EXPORT_SYMBOL sound/core/snd-pcm 0x834dc955 snd_pcm_format_size +EXPORT_SYMBOL sound/core/snd-pcm 0x8429c76c snd_pcm_hw_refine +EXPORT_SYMBOL sound/core/snd-pcm 0x8d2950f1 snd_pcm_hw_param_first +EXPORT_SYMBOL sound/core/snd-pcm 0x8d6aa8ed snd_pcm_hw_constraint_minmax +EXPORT_SYMBOL sound/core/snd-pcm 0x8ea8bd61 snd_pcm_suspend_all +EXPORT_SYMBOL sound/core/snd-pcm 0x90a910fb snd_pcm_notify +EXPORT_SYMBOL sound/core/snd-pcm 0x93b880ac snd_pcm_hw_constraint_mask64 +EXPORT_SYMBOL sound/core/snd-pcm 0x94098ff8 snd_interval_list +EXPORT_SYMBOL sound/core/snd-pcm 0x98e51217 snd_pcm_open_substream +EXPORT_SYMBOL sound/core/snd-pcm 0x9c2763fd snd_pcm_lib_read +EXPORT_SYMBOL sound/core/snd-pcm 0xa61aa028 snd_pcm_format_unsigned +EXPORT_SYMBOL sound/core/snd-pcm 0xb384d23e snd_pcm_lib_preallocate_pages +EXPORT_SYMBOL sound/core/snd-pcm 0xb7eda002 snd_pcm_mmap_data +EXPORT_SYMBOL sound/core/snd-pcm 0xb9638db4 snd_pcm_rate_to_rate_bit +EXPORT_SYMBOL sound/core/snd-pcm 0xc3af4205 snd_pcm_hw_constraint_ratnums +EXPORT_SYMBOL sound/core/snd-pcm 0xca34c226 snd_sgbuf_get_chunk_size +EXPORT_SYMBOL sound/core/snd-pcm 0xd89b0f63 snd_pcm_lib_free_vmalloc_buffer +EXPORT_SYMBOL sound/core/snd-pcm 0xd8eb2c97 snd_pcm_lib_writev +EXPORT_SYMBOL sound/core/snd-pcm 0xdb905d1a snd_pcm_hw_constraint_list +EXPORT_SYMBOL sound/core/snd-pcm 0xdbcb1362 snd_pcm_lib_write +EXPORT_SYMBOL sound/core/snd-pcm 0xe35ed8df snd_dma_alloc_pages +EXPORT_SYMBOL sound/core/snd-pcm 0xe568ed1a snd_pcm_kernel_ioctl +EXPORT_SYMBOL sound/core/snd-pcm 0xe56a9336 snd_pcm_format_width +EXPORT_SYMBOL sound/core/snd-pcm 0xe67fd1ce snd_pcm_release_substream +EXPORT_SYMBOL sound/core/snd-pcm 0xeb327da7 snd_pcm_set_sync +EXPORT_SYMBOL sound/core/snd-pcm 0xf3797152 snd_interval_ratnum +EXPORT_SYMBOL sound/core/snd-pcm 0xf745e3ee snd_pcm_limit_hw_rates +EXPORT_SYMBOL sound/core/snd-pcm 0xf8c347f5 snd_pcm_sgbuf_ops_page +EXPORT_SYMBOL sound/core/snd-pcm 0xfc0eeb44 snd_pcm_lib_preallocate_pages_for_all +EXPORT_SYMBOL sound/core/snd-pcm 0xff16744f snd_pcm_hw_constraint_pow2 +EXPORT_SYMBOL sound/core/snd-pcm 0xff6104d0 snd_pcm_rate_bit_to_rate +EXPORT_SYMBOL sound/core/snd-rawmidi 0x0f03de4d snd_rawmidi_kernel_open +EXPORT_SYMBOL sound/core/snd-rawmidi 0x28f59dab snd_rawmidi_transmit_peek +EXPORT_SYMBOL sound/core/snd-rawmidi 0x559fb597 snd_rawmidi_drop_output +EXPORT_SYMBOL sound/core/snd-rawmidi 0x5cc8471c snd_rawmidi_kernel_write +EXPORT_SYMBOL sound/core/snd-rawmidi 0x60d74298 snd_rawmidi_transmit_empty +EXPORT_SYMBOL sound/core/snd-rawmidi 0x76f41eea snd_rawmidi_receive +EXPORT_SYMBOL sound/core/snd-rawmidi 0x7eb82eff snd_rawmidi_kernel_read +EXPORT_SYMBOL sound/core/snd-rawmidi 0x830b9319 snd_rawmidi_kernel_release +EXPORT_SYMBOL sound/core/snd-rawmidi 0x83572c69 snd_rawmidi_drain_output +EXPORT_SYMBOL sound/core/snd-rawmidi 0x8764964d snd_rawmidi_output_params +EXPORT_SYMBOL sound/core/snd-rawmidi 0x90ab7dbf snd_rawmidi_set_ops +EXPORT_SYMBOL sound/core/snd-rawmidi 0x91aba957 snd_rawmidi_info_select +EXPORT_SYMBOL sound/core/snd-rawmidi 0xaab5656a snd_rawmidi_transmit +EXPORT_SYMBOL sound/core/snd-rawmidi 0xbf153bc2 snd_rawmidi_new +EXPORT_SYMBOL sound/core/snd-rawmidi 0xc3ba0c08 snd_rawmidi_drain_input +EXPORT_SYMBOL sound/core/snd-rawmidi 0xcb8ea692 snd_rawmidi_input_params +EXPORT_SYMBOL sound/core/snd-rawmidi 0xfe7a6acd snd_rawmidi_transmit_ack +EXPORT_SYMBOL sound/core/snd-timer 0x0aa23090 snd_timer_global_new +EXPORT_SYMBOL sound/core/snd-timer 0x0ad986a5 snd_timer_pause +EXPORT_SYMBOL sound/core/snd-timer 0x49b2d393 snd_timer_open +EXPORT_SYMBOL sound/core/snd-timer 0x4d27bf96 snd_timer_stop +EXPORT_SYMBOL sound/core/snd-timer 0x679faeeb snd_timer_continue +EXPORT_SYMBOL sound/core/snd-timer 0x7f8620c9 snd_timer_interrupt +EXPORT_SYMBOL sound/core/snd-timer 0x80ca0f9f snd_timer_resolution +EXPORT_SYMBOL sound/core/snd-timer 0xc7c0f151 snd_timer_notify +EXPORT_SYMBOL sound/core/snd-timer 0xd75ae60d snd_timer_close +EXPORT_SYMBOL sound/core/snd-timer 0xe9bc4916 snd_timer_global_register +EXPORT_SYMBOL sound/core/snd-timer 0xf023fe5e snd_timer_start +EXPORT_SYMBOL sound/core/snd-timer 0xf6bcb024 snd_timer_new +EXPORT_SYMBOL sound/core/snd-timer 0xf7bfa4f1 snd_timer_global_free +EXPORT_SYMBOL sound/drivers/mpu401/snd-mpu401-uart 0x6d629c59 snd_mpu401_uart_interrupt_tx +EXPORT_SYMBOL sound/drivers/mpu401/snd-mpu401-uart 0x993d8c85 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 0x0b922652 snd_opl3_load_patch +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x145e708b snd_opl3_reset +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x15674559 snd_opl3_new +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x170b37eb snd_opl3_timer_new +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x535005e8 snd_opl3_find_patch +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x58656b7c snd_opl3_create +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xc290d925 snd_opl3_init +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xc99c5570 snd_opl3_interrupt +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xdacfaf76 snd_opl3_hwdep_new +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x027f0d34 snd_vx_check_reg_bit +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x0353b721 snd_vx_load_boot_image +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x19eec17d 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 0x38bb9801 snd_vx_resume +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x5cb28d4d snd_vx_dsp_boot +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x79fe4853 snd_vx_dsp_load +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x7ca91479 snd_vx_suspend +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x9851680c snd_vx_setup_firmware +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xd9fe00cf snd_vx_create +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xf1f04d23 snd_vx_irq_handler +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x098cb449 amdtp_stream_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x1ef3c158 amdtp_stream_add_pcm_hw_constraints +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x20254e45 amdtp_syt_intervals +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x280a7913 snd_fw_transaction +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x2ffd1ff5 avc_general_set_sig_fmt +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x30b7c6e5 amdtp_stream_set_parameters +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x31e7a384 fw_iso_resources_allocate +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x397f0d82 amdtp_stream_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x3c72660d cmp_connection_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x3d0d8570 iso_packets_buffer_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x52b44ba5 amdtp_stream_set_pcm_format +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x53ca18e8 amdtp_rate_table +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x56acc6ad cmp_connection_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x56d2fde7 amdtp_stream_get_max_payload +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x6816787d iso_packets_buffer_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x686a52cc cmp_connection_establish +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x6c07cb64 amdtp_stream_pcm_abort +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x85f35002 amdtp_stream_pcm_prepare +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x8e799ecb fw_iso_resources_update +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x8e8bfe80 fw_iso_resources_free +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x954fa6b0 fcp_avc_transaction +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x9ea87da0 amdtp_stream_stop +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xc3c94ac7 fw_iso_resources_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xc8dd5603 amdtp_stream_start +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xce53f8ad amdtp_stream_update +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xdb6cbc40 amdtp_stream_pcm_pointer +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xdc2184a2 avc_general_get_sig_fmt +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xdcf2a192 cmp_connection_break +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xe45ee6ae fcp_bus_reset +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xecc4c404 fw_iso_resources_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xeede0a44 cmp_connection_update +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xf55fa6fb avc_general_get_plug_info +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xf8a38c6e cmp_connection_check_used +EXPORT_SYMBOL sound/i2c/other/snd-ak4113 0x778804f4 snd_ak4113_suspend +EXPORT_SYMBOL sound/i2c/other/snd-ak4113 0xdb80ac12 snd_ak4113_resume +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x14d22dc0 snd_ak4114_check_rate_and_errors +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x17172eea snd_ak4114_resume +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x5091a035 snd_ak4114_reinit +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x68e1ae21 snd_ak4114_suspend +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x79e0b9e1 snd_ak4114_create +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0xaf8221bd snd_ak4114_reg_write +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0xc9284d82 snd_ak4114_external_rate +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0xe5fccdb0 snd_ak4114_build +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0x12eed3ac snd_ak4117_reg_write +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0x35bd41b1 snd_ak4117_reinit +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0x35d75e60 snd_ak4117_create +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0x40e28ce7 snd_ak4117_build +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0xee2ce1ca snd_ak4117_check_rate_and_errors +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0xf234f967 snd_ak4117_external_rate +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0x30a420dc snd_akm4xxx_write +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0xd1d4e3a4 snd_akm4xxx_reset +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0xf1008ca8 snd_akm4xxx_build_controls +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0xf41761d4 snd_akm4xxx_init +EXPORT_SYMBOL sound/i2c/other/snd-pt2258 0x64fe2424 snd_pt2258_reset +EXPORT_SYMBOL sound/i2c/other/snd-pt2258 0xc2e0e85d snd_pt2258_build_controls +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x2478789e snd_cs8427_iec958_pcm +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x687696b0 snd_cs8427_init +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x9d746626 snd_cs8427_iec958_build +EXPORT_SYMBOL sound/i2c/snd-cs8427 0xa4636cb2 snd_cs8427_create +EXPORT_SYMBOL sound/i2c/snd-cs8427 0xae50bda6 snd_cs8427_iec958_active +EXPORT_SYMBOL sound/i2c/snd-cs8427 0xcab15ece snd_cs8427_reg_write +EXPORT_SYMBOL sound/i2c/snd-i2c 0x1496c390 snd_i2c_sendbytes +EXPORT_SYMBOL sound/i2c/snd-i2c 0x3ccc8189 snd_i2c_probeaddr +EXPORT_SYMBOL sound/i2c/snd-i2c 0x62ec5670 snd_i2c_device_free +EXPORT_SYMBOL sound/i2c/snd-i2c 0x9c807ada snd_i2c_bus_create +EXPORT_SYMBOL sound/i2c/snd-i2c 0xee4d4909 snd_i2c_device_create +EXPORT_SYMBOL sound/i2c/snd-i2c 0xff888c8d snd_i2c_readbytes +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x17002f55 snd_sbmixer_write +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x1d09e717 snd_sbmixer_read +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x33cdd93d snd_sbdsp_command +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x4a846af0 snd_sbmixer_new +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x559e7561 snd_sbmixer_suspend +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x5cc4f60f snd_sbmixer_resume +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x94e382e4 snd_sbdsp_create +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x9d85f317 snd_sbdsp_get_byte +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0xa9349084 snd_sbdsp_reset +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0xcc41b492 snd_sbmixer_add_ctl +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x21a819e3 snd_ac97_update_bits +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x2920728d snd_ac97_write +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x34b60085 snd_ac97_mixer +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x3c330fe3 snd_ac97_bus +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x3f0ce78d snd_ac97_pcm_double_rate_rules +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x4f110b8d snd_ac97_pcm_assign +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x614e3276 snd_ac97_pcm_close +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x6642434a snd_ac97_resume +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x6b132f1d snd_ac97_suspend +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x7ef865b0 snd_ac97_pcm_open +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x96f99086 snd_ac97_read +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x984d9868 snd_ac97_update +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x9cb6c8ef snd_ac97_write_cache +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xbe52b625 snd_ac97_tune_hardware +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xc5328806 snd_ac97_update_power +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xe085fd4f snd_ac97_set_rate +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xf1ffc8fa snd_ac97_get_short_name +EXPORT_SYMBOL sound/pci/asihpi/snd-asihpi 0x4161a763 hpi_send_recv +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x20ff845b snd_emu10k1_synth_copy_from_user +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x4716f198 snd_emu10k1_ptr_write +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x5bae3a28 snd_emu10k1_synth_bzero +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x85dc55f9 snd_emu10k1_voice_free +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x8efe6ff2 snd_emu10k1_voice_alloc +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x8f4e602e snd_emu10k1_ptr_read +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xa0cf8a4c snd_emu10k1_synth_alloc +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xc883ac76 snd_emu10k1_memblk_map +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xe0c7e117 snd_emu10k1_synth_free +EXPORT_SYMBOL sound/pci/ice1712/snd-ice17xx-ak4xxx 0x0d15018d snd_ice1712_akm4xxx_build_controls +EXPORT_SYMBOL sound/pci/ice1712/snd-ice17xx-ak4xxx 0x1e79c1db snd_ice1712_akm4xxx_free +EXPORT_SYMBOL sound/pci/ice1712/snd-ice17xx-ak4xxx 0xa1b436cc snd_ice1712_akm4xxx_init +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x03ca5ce5 oxygen_pci_shutdown +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x144f2b1d oxygen_write8_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x18f818f7 oxygen_write_ac97 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x2312be23 oxygen_write16 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x314ac744 oxygen_write_spi +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x4324d068 oxygen_pci_probe +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x4fcdc60e oxygen_read_ac97 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x5d7ea7b2 oxygen_pci_remove +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x67d9cd8c oxygen_update_dac_routing +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x67dc1448 oxygen_pci_pm +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x6b651361 oxygen_write16_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x6e69d435 oxygen_write32 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x75f794d4 oxygen_reset_uart +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x7a07af58 oxygen_read16 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x91d4f859 oxygen_write_ac97_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x9f383d0e oxygen_read8 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xa80b03f9 oxygen_write8 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xbf28721b oxygen_write_uart +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xc7bb183c oxygen_write_i2c +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xd95c2668 oxygen_write32_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xeda1297a oxygen_read32 +EXPORT_SYMBOL sound/pci/trident/snd-trident 0x3c83438d snd_trident_alloc_voice +EXPORT_SYMBOL sound/pci/trident/snd-trident 0x4eaf2576 snd_trident_write_voice_regs +EXPORT_SYMBOL sound/pci/trident/snd-trident 0x504c9c90 snd_trident_stop_voice +EXPORT_SYMBOL sound/pci/trident/snd-trident 0x7a505245 snd_trident_start_voice +EXPORT_SYMBOL sound/pci/trident/snd-trident 0x9f177bba snd_trident_free_voice +EXPORT_SYMBOL sound/soc/codecs/snd-soc-tlv320aic23 0x99321a69 tlv320aic23_probe +EXPORT_SYMBOL sound/soc/codecs/snd-soc-tlv320aic23 0xb3610c4f tlv320aic23_regmap +EXPORT_SYMBOL sound/soc/intel/common/snd-soc-sst-dsp 0x205a6ffa sst_dma_new +EXPORT_SYMBOL sound/soc/intel/common/snd-soc-sst-dsp 0xdc045797 sst_dma_free +EXPORT_SYMBOL sound/soc/snd-soc-core 0x044f000f snd_soc_alloc_ac97_codec +EXPORT_SYMBOL sound/soundcore 0x1e8ea044 sound_class +EXPORT_SYMBOL sound/soundcore 0x67cb2830 register_sound_dsp +EXPORT_SYMBOL sound/soundcore 0x7afc9d8a unregister_sound_mixer +EXPORT_SYMBOL sound/soundcore 0x891b4652 register_sound_mixer +EXPORT_SYMBOL sound/soundcore 0x99c95fa5 unregister_sound_special +EXPORT_SYMBOL sound/soundcore 0xa003d8dc register_sound_special +EXPORT_SYMBOL sound/soundcore 0xcd083b10 unregister_sound_dsp +EXPORT_SYMBOL sound/soundcore 0xfadf7702 register_sound_special_device +EXPORT_SYMBOL sound/soundcore 0xfdab6de3 unregister_sound_midi +EXPORT_SYMBOL sound/soundcore 0xfe666750 register_sound_midi +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x29c36635 snd_emux_terminate_all +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x50fd4592 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 0x7bdf5bef snd_emux_register +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0xc8061967 snd_emux_free +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0xd7b3f848 snd_emux_new +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0xf19d9140 snd_emux_lock_voice +EXPORT_SYMBOL sound/synth/snd-util-mem 0x30081e34 snd_util_memhdr_free +EXPORT_SYMBOL sound/synth/snd-util-mem 0x3abc132f snd_util_mem_avail +EXPORT_SYMBOL sound/synth/snd-util-mem 0x3f9958e6 snd_util_mem_alloc +EXPORT_SYMBOL sound/synth/snd-util-mem 0x936e396c __snd_util_mem_alloc +EXPORT_SYMBOL sound/synth/snd-util-mem 0x9d92e80a snd_util_memhdr_new +EXPORT_SYMBOL sound/synth/snd-util-mem 0xe96b72e5 __snd_util_mem_free +EXPORT_SYMBOL sound/synth/snd-util-mem 0xeab56c88 __snd_util_memblk_new +EXPORT_SYMBOL sound/synth/snd-util-mem 0xf6813965 snd_util_mem_free +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0x0b707e30 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 ubuntu/vbox/vboxguest/vboxguest 0x00322056 VBoxGuest_RTMpCpuIdFromSetIndex +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x01674ab7 VBoxGuest_RTSemMutexRequestNoResume +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x0429a6f0 VBoxGuest_RTThreadCreate +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x057fd386 VBoxGuest_RTR0MemObjLockKernelTag +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x0731e88d VBoxGuest_RTAssertMsg2Add +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x079b132d VBoxGuest_RTMemTmpAllocTag +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x08ed98db VBoxGuest_RTMemDupExTag +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x09a88bc3 VBoxGuest_RTTimeExplode +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x0a442050 VBoxGuest_RTAssertAreQuiet +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x0b94344b VBoxGuest_g_pszRTAssertExpr +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x0beb235d VBoxGuest_RTMpIsCpuWorkPending +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x0cd1b64d VBoxGuest_RTMpCurSetIndex +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x0d10d1ca VBoxGuest_RTTimeNormalize +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x0f3e114a VBoxGuest_RTSemSpinMutexCreate +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x0f884b3a VBoxGuest_RTStrToInt64Ex +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x11ced39a VBoxGuest_RTSemEventWaitEx +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x11e95d2e VBoxGuest_RTLogLoggerEx +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x11f80121 VBoxGuest_RTSemMutexRelease +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x12614b82 VBoxGuest_RTStrToInt8Ex +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x12f430f3 VBoxGuest_RTAssertMsg2AddV +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x147206e1 VBoxGuest_RTStrToUInt64 +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x151752ec VBoxGuest_RTHeapSimpleGetFreeSize +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x1520b2c8 VBoxGuest_RTLogCreateEx +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x160b14d4 VBoxGuest_RTMpGetPresentSet +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x1926b25c VBoxGuest_RTLogRelLogger +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x19790b4c VBoxGuest_RTLogFlags +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x197acd65 VBoxGuest_RTR0Init +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x1a6d7d86 VBoxGuest_RTThreadPreemptIsEnabled +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x1ae28abb VBoxGuest_RTThreadIsSelfAlive +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x1c3b0f90 VBoxGuest_RTR0MemObjAddressR3 +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x1dc5ebbe VBoxGuest_RTThreadWaitNoResume +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x1f3e577b VBoxGuest_RTMemTmpAllocZTag +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x1f70d065 VBoxGuest_RTErrConvertToErrno +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x2003169b VBoxGuest_RTSpinlockAcquire +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x20728ae6 VBoxGuest_RTThreadCreateV +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x20d9d625 VBoxGuest_RTTimeToString +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x22058511 VBoxGuest_RTSemMutexRequestDebug +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x2254228b VBoxGuest_RTMpGetPresentCount +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x2387f039 VBoxGuest_RTMpIsCpuPresent +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x25219f5e VBoxGuest_RTR0Term +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x2580d04c VBoxGuest_RTSemEventMultiSignal +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x2632a013 VBoxGuest_RTLogRelLoggerV +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x29708cf0 VBoxGuest_RTR0MemUserCopyTo +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x2a2284fb VBoxGuest_RTAssertMayPanic +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x2af3453c VBoxGuest_RTLogPrintf +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x2c2b5b46 VBoxGuest_RTTimerGetSystemGranularity +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x2cfefa48 VBoxGuest_RTLogBackdoorPrintfV +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x2d445217 VBoxGuest_RTStrToInt64Full +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x2d581c06 VBoxGuest_RTMpCurSetIndexAndId +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x2eca7777 VBoxGuest_RTHeapSimpleAlloc +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x2fb7502f VBoxGuest_RTThreadSetName +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x30e40c69 VBoxGuest_RTLogSetDefaultInstanceThread +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x3168cadf VBoxGuest_RTTimeSystemMilliTS +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x31ac4c5f VBoxGuest_RTThreadIsInitialized +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x33d7313a VBoxGuest_RTMpCpuId +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x343e3e1b VBoxGuest_RTLogGetDestinations +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x3480f453 VBoxGuest_RTSemMutexDestroy +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x358153bb VBoxGuest_RTStrCopy +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x362275e8 VBoxGuest_RTMemContFree +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x372d5e29 VBoxGuest_RTPowerNotificationDeregister +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x376d539c VBoxGuest_RTThreadGetType +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x381d7c24 VBoxGuest_RTMemAllocVarTag +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x383a0b9d VBoxGuest_RTMpPokeCpu +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x3a47392e VBoxGuest_RTErrConvertFromErrno +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x3b04381e VBoxGuest_RTSemEventMultiReset +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x3b231c95 VBoxGuest_RTTimeNanoTS +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x3bcf543a VBoxGuest_RTLogGetDefaultInstanceEx +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x3d00f113 VBoxGuest_g_u32RTAssertLine +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x3de43f66 VBoxGuest_RTSemEventCreate +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x3dfc9ab8 VBoxGuest_RTSemMutexIsOwned +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x3fbf3c07 VBoxGuest_RTThreadIsInInterrupt +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x40996438 VBoxGuest_RTSemEventMultiWait +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x42ecc6d1 VBoxGuest_RTThreadPreemptRestore +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x43fdd8d9 VBoxGuest_RTSemFastMutexRelease +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x44cfbc28 VBoxGuest_RTThreadGetNative +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x461fa9fe VBoxGuest_RTLogRelGetDefaultInstance +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x46c14223 VBoxGuest_RTLogSetCustomPrefixCallback +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x49f1be17 VBoxGuest_RTThreadFromNative +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x49f4d19c VBoxGuest_RTLogDefaultInstance +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x4bbec091 VBoxGuest_RTR0MemObjGetPagePhysAddr +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x4c7d8a56 VBoxGuest_RTSemEventMultiCreate +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x4cac3157 VBoxGuest_RTLogFormatV +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x4cecc93d VBoxGuest_RTR0MemObjEnterPhysTag +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x4cf913a1 VBoxGuest_RTThreadGetName +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x4ea67110 VBoxGuest_RTStrToInt32 +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x4f041d39 VBoxGuest_RTMemContAlloc +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x4fc8e10c VBoxGuest_RTMpGetSet +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x4fe9e5f1 VBoxGuest_RTR0MemObjProtect +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x5040043b VBoxGuest_RTSemEventWaitExDebug +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x508bb2c4 VBoxGuest_RTLogSetDefaultInstance +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x51ec28bd VBoxGuest_RTLogGetFlags +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x53265abc VBoxGuest_RTLogSetBuffering +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x5352c915 VBoxGuest_RTSemMutexRequest +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x54098f34 VBoxGuest_RTTimerStop +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x54ddf87c VBoxGuest_RTThreadPreemptIsPossible +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x5595fc22 VBoxGuest_RTSpinlockDestroy +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x56596e82 VBoxGuest_RTThreadSelfName +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x56c939fe VBoxGuest_RTAssertMsg1 +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x5847ae52 VBoxGuest_RTMpGetCount +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x58d1b65e VBoxGuest_RTThreadPreemptIsPending +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x598d3622 VBoxGuest_RTAssertMsg2AddWeak +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x5a97195c VBoxGuest_RTHeapSimpleRelocate +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x5aa6ed66 VBoxGuest_RTPowerSignalEvent +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x5b3a5164 VBoxGuest_RTLogWriteUser +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x5cc0b1b2 VBoxGuest_RTProcSelf +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x5d3b1bd6 VBoxGuest_RTSemSpinMutexRelease +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x5e071eb3 VBoxGuest_RTSemEventMultiDestroy +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x5e17b70e VBoxGuest_RTSpinlockRelease +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x5e75c570 VBoxGuest_RTStrToUInt16 +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x5eaea89a VBoxGuest_RTSemFastMutexCreate +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x5ee65bb7 VBoxGuest_RTStrToUInt16Ex +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x5ef42fe5 VBoxGuest_RTTimerStart +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x5f2f48bb VBoxGuest_RTLogWriteStdErr +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x61143878 VBoxGuestIDCCall +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x6173b384 VBoxGuest_RTMpOnPairIsConcurrentExecSupported +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x61770e8c VBoxGuest_RTStrToUInt32 +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x63378722 VBoxGuest_RTLogBackdoorPrintf +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x634946f7 VBoxGuest_RTMpIsCpuOnline +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x637a1d69 VBoxGuest_RTLogWriteStdOut +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x6381bb97 VBoxGuest_RTStrFormat +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x63b1fde6 VBoxGuest_RTMpCpuIdToSetIndex +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x63bc10b0 VBoxGuest_RTLogCreateExV +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x658cd915 VBoxGuest_RTR0MemObjFree +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x67135d2b VBoxGuest_RTSemFastMutexRequest +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x6862822a VBoxGuest_RTHeapSimpleSize +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x695d63ad VBoxGuest_RTMpNotificationDeregister +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x6b01bbf3 VBoxGuest_RTMpOnSpecific +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x6b58b79d VBoxGuest_RTSemSpinMutexDestroy +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x6b91f1ce VBoxGuest_RTStrFormatTypeDeregister +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x6c8460ac VBoxGuest_RTLogRelGetDefaultInstanceEx +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x6cec7c3b VBoxGuest_RTTimerCreateEx +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x6d8e9c87 VBoxGuest_RTTimeNow +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x6e8541b7 VBoxGuest_RTAssertMsg2Weak +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x704e1f6f VBoxGuest_RTAssertMsg2AddWeakV +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x70867323 VBoxGuest_RTStrToUInt8Ex +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x71060970 VBoxGuest_RTStrToUInt16Full +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x716e3be3 VBoxGuest_RTMpGetOnlineCount +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x729cc4ab VBoxGuest_RTR0MemObjSize +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x72ff1bc3 VBoxGuest_RTTimeIsLeapYear +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x730a01b0 VBoxGuest_RTLogRelSetDefaultInstance +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x74812dde VBoxGuest_RTStrToInt32Ex +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x759e7492 VBoxGuest_RTSemFastMutexDestroy +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x764ecb18 VBoxGuest_RTR0MemObjAllocLowTag +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x76a3c47b VBoxGuest_RTMemAllocZVarTag +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x79d59e24 VBoxGuest_RTSemSpinMutexRequest +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x7d0d9dae VBoxGuest_RTR0MemObjAllocPhysNCTag +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x7d15e878 VBoxGuest_RTMpGetOnlineSet +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x7dcc30d8 VBoxGuest_RTStrToInt32Full +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x7e29739a VBoxGuest_RTStrToInt16 +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x7f0a40ea VBoxGuest_RTLogComPrintfV +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x7fc5bdcf VBoxGuest_RTR0MemObjAllocPhysTag +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x8196c4e6 VBoxGuest_RTSemSpinMutexTryRequest +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x82e081bc VBoxGuest_RTStrFormatTypeSetUser +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x83e78406 VBoxGuest_RTR0MemAreKrnlAndUsrDifferent +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x841e42e9 VBoxGuest_RTSemMutexCreate +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x8484a0d6 VBoxGuest_RTStrToInt16Ex +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x84e227f6 VBoxGuest_RTThreadIsSelfKnown +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x86120100 VBoxGuest_RTLogDumpPrintfV +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x867be0d2 VBoxGuest_RTLogDestroy +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x868b79a5 VBoxGuest_RTStrPrintf +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x879761cf VBoxGuest_RTR0MemObjAllocPhysExTag +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x87da3860 VBoxGuest_RTAssertSetQuiet +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x8826d9de VBoxGuest_RTMpGetMaxCpuId +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x883d496c VBoxGuest_RTMpGetCoreCount +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x885274fe VBoxGuest_RTThreadUserWaitNoResume +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x89117f68 VBoxGuest_RTMemExecAllocTag +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x8a3c154f VBoxGuest_RTR0MemObjLockUserTag +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x8a454b31 VBoxGuest_RTSemEventGetResolution +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x8e01e3fd VBoxGuest_RTStrFormatV +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x8f1309e3 VBoxGuest_RTAssertMsg2 +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x90312938 VBoxGuest_RTStrToUInt64Ex +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x91204a9b VBoxGuest_RTTimeSpecToString +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x916e42f0 VBoxGuest_RTAssertMsg1Weak +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x9264ffc0 VBoxGuest_RTLogRelPrintfV +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x926bf9f7 VBoxGuest_RTThreadPreemptDisable +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x92e716ae VBoxGuest_RTLogGetDefaultInstance +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x94f7365f VBoxGuest_RTPowerNotificationRegister +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x95fa480d VBoxGuest_RTSpinlockCreate +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x961772f3 VBoxGuestIDCOpen +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x967ea4b6 VBoxGuest_RTStrToInt64 +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x96893ce3 VBoxGuest_RTR0MemObjAllocPageTag +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x96f2e65b VBoxGuest_RTR0MemUserCopyFrom +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x9796440b VBoxGuest_RTSemEventWaitNoResume +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x97eb2414 VBoxGuest_RTThreadNativeSelf +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x9874cd16 VBoxGuest_RTMpIsCpuPossible +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x9909ff3d VBoxGuest_g_pszRTAssertFunction +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x9a2ee747 VBoxGuest_RTSemEventDestroy +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x9bcc539d VBoxGuest_RTThreadUserReset +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x9cd9213f VBoxGuest_RTR0MemKernelIsValidAddr +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x9d6b527c VBoxGuest_RTThreadWait +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x9dbd63d6 VBoxGuest_RTStrPrintfEx +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x9eaecd9d VBoxGuest_RTStrPrintfV +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x9f301085 VBoxGuest_RTTimeSpecFromString +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x9f4f616a VBoxGuest_RTLogLogger +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x9fb0596d VBoxGuest_RTMemDupTag +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xa168a070 VBoxGuest_RTLogLoggerExV +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xa34eb1b3 VBoxGuest_RTTimeSystemNanoTS +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xa486e710 VBoxGuestIDCClose +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xa554bd97 VBoxGuest_RTLogFlushRC +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xa5a26703 VBoxGuest_RTMpNotificationRegister +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xa696baed VBoxGuest_RTR0MemObjAddress +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xa6a22472 VBoxGuest_RTThreadUserWait +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xa6de1bcd VBoxGuest_RTTimerChangeInterval +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xa86c5a96 VBoxGuest_RTSemEventSignal +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xaba9bc9c VBoxGuest_RTLogCloneRC +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xac990d74 VBoxGuest_RTTimerCanDoHighResolution +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xacaac41d VBoxGuest_g_szRTAssertMsg1 +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xacd719ba VBoxGuest_RTLogPrintfV +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xad4fdf4e VBoxGuest_RTSemMutexRequestNoResumeDebug +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xad649089 VBoxGuest_RTStrToUInt64Full +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xae3e0ecd VBoxGuest_RTLogRelPrintf +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xaf6ffbfc VBoxGuest_RTThreadSleep +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xb05840a7 VBoxGuest_RTSemEventMultiWaitExDebug +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xb1cc9148 VBoxGuest_RTLogWriteCom +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xb42ea0e3 VBoxGuest_g_pszRTAssertFile +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xb444f4a1 VBoxGuest_RTLogDestinations +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xb6941b2e VBoxGuest_RTStrToUInt8 +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xb8c6e615 VBoxGuest_RTStrToUInt32Full +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xb8ca8fcb VBoxGuest_RTMpOnPair +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xb8df2b3a VBoxGuest_RTAssertShouldPanic +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xb9b070b7 VBoxGuest_RTAssertMsg2V +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xb9d7a27d VBoxGuest_RTHeapSimpleDump +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xbaa97421 VBoxGuest_g_szRTAssertMsg2 +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xbb1ead73 VBoxGuest_RTR0MemKernelCopyTo +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xbba928e6 VBoxGuest_RTHeapSimpleGetHeapSize +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xbc4d30f6 VBoxGuest_RTR0MemObjAllocContTag +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xbc85935a VBoxGuest_RTR0MemKernelCopyFrom +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xbe4e6114 VBoxGuest_RTLogFlushToLogger +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xbffedb55 VBoxGuest_RTMemAllocExTag +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xc1095c44 VBoxGuest_RTTimeImplode +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xc1b3ada4 VBoxGuest_RTAssertMsg2WeakV +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xc3a1e5de VBoxGuest_RTLogGetGroupSettings +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xc3fee96e VBoxGuest_RTMemAllocTag +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xc4bd5fd8 VBoxGuest_RTStrPrintfExV +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xc63cc2f0 VBoxGuest_RTR0MemExecDonate +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xc71362b7 VBoxGuest_RTLogRelSetBuffering +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xc8fbf4aa VBoxGuest_RTHeapSimpleInit +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xc91cea98 VBoxGuest_RTStrCopyEx +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xc9a6a8e7 VBoxGuest_RTThreadCreateF +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xcaee97bf VBoxGuest_RTLogComPrintf +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xcb2a6b54 VBoxGuest_RTMemExecFree +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xceae9d6a VBoxGuest_RTStrConvertHexBytes +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xd14e8ec2 VBoxGuest_RTTimerDestroy +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xd1f3f0b9 VBoxGuest_RTSemEventWait +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xd2a37e73 VBoxGuest_RTTimerReleaseSystemGranularity +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xd2d290ab VBoxGuest_RTStrToUInt8Full +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xd3a125cb VBoxGuest_RTR0MemObjMapKernelTag +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xd46c35d4 VBoxGuest_RTMpOnAll +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xd4b597fc VBoxGuest_RTStrCopyP +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xd5bfc897 VBoxGuest_RTHeapSimpleAllocZ +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xd637869e VBoxGuest_RTMemReallocTag +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xd69bc8e4 VBoxGuest_RTR0MemObjReserveUserTag +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xd706d85c VBoxGuest_RTTimeFromString +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xd88c9330 VBoxGuest_RTLogLoggerV +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xd984a7f4 VBoxGuest_RTStrFormatTypeRegister +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xdc700594 VBoxGuest_RTSemEventMultiGetResolution +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xde9ca744 VBoxGuest_RTThreadYield +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xdfbc69bb VBoxGuest_RTThreadPreemptIsPendingTrusty +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xe054d759 VBoxGuest_RTMemTmpFree +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xe095cef8 VBoxGuest_RTThreadSetType +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xe0dc7391 VBoxGuest_RTThreadIsMain +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xe1c6b3d7 VBoxGuest_RTR0MemObjMapKernelExTag +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xe2765c54 VBoxGuest_RTR0AssertPanicSystem +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xe38d562c VBoxGuest_RTStrFormatNumber +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xe3fd228f VBoxGuest_RTTimeMilliTS +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xe7e42113 VBoxGuest_RTThreadSleepNoLog +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xe88dae73 VBoxGuest_RTMemFree +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xe8fad285 VBoxGuest_RTSemEventMultiWaitNoResume +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xea2f2944 VBoxGuest_RTStrToInt8Full +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xea38e4f7 VBoxGuest_RTLogDefaultInstanceEx +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xea71842b VBoxGuest_RTMpGetPresentCoreCount +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xebeefa0e VBoxGuest_RTR0ProcHandleSelf +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xec3cc9a6 VBoxGuest_RTSemEventMultiWaitEx +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xee774b8e VBoxGuest_RTLogWriteDebugger +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xeea4ee73 VBoxGuest_RTR0MemObjMapUserTag +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xef6e1359 VBoxGuest_RTMpOnOthers +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xf02f22ab VBoxGuest_RTMemAllocZTag +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xf0dbb702 VBoxGuest_RTHeapSimpleFree +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xf26294bb VBoxGuest_RTR0MemObjIsMapping +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xf2aa79bb VBoxGuest_RTThreadUserSignal +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xf3943009 VBoxGuest_RTTimerRequestSystemGranularity +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xf5d89855 VBoxGuest_RTLogGroupSettings +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xf69aec24 VBoxGuest_RTStrToInt16Full +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xf7397dd2 VBoxGuest_RTAssertSetMayPanic +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xf8113d66 VBoxGuest_RTMpOnAllIsConcurrentSafe +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xf956a4e8 VBoxGuest_RTLogFlush +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xf958d9cb VBoxGuest_RTLogCreate +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xfa7d95c9 VBoxGuest_RTR0MemUserIsValidAddr +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xfb31e12b VBoxGuest_RTStrToUInt32Ex +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xfba93ac9 VBoxGuest_RTR0MemObjReserveKernelTag +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xfbc67e88 VBoxGuest_RTMemFreeEx +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xfe72cef7 VBoxGuest_RTStrToInt8 +EXPORT_SYMBOL vmlinux 0x002a8584 twl6040_clear_bits +EXPORT_SYMBOL vmlinux 0x00521a1b phy_device_create +EXPORT_SYMBOL vmlinux 0x005d6b62 key_instantiate_and_link +EXPORT_SYMBOL vmlinux 0x0070cd1f queue_delayed_work_on +EXPORT_SYMBOL vmlinux 0x0084c8f8 dev_get_by_index_rcu +EXPORT_SYMBOL vmlinux 0x00897ac9 md_write_start +EXPORT_SYMBOL vmlinux 0x00aa9116 security_path_chown +EXPORT_SYMBOL vmlinux 0x00b8c3a7 mempool_alloc +EXPORT_SYMBOL vmlinux 0x00c22716 uart_register_driver +EXPORT_SYMBOL vmlinux 0x00d53e72 inet6_register_protosw +EXPORT_SYMBOL vmlinux 0x00d7e722 vme_lm_count +EXPORT_SYMBOL vmlinux 0x00dd96c0 i2c_transfer +EXPORT_SYMBOL vmlinux 0x00ef4b0d agp_generic_type_to_mask_type +EXPORT_SYMBOL vmlinux 0x00ff6cf4 genphy_soft_reset +EXPORT_SYMBOL vmlinux 0x01000e51 schedule +EXPORT_SYMBOL vmlinux 0x0101d5b1 ip_idents_reserve +EXPORT_SYMBOL vmlinux 0x01137224 dquot_quotactl_ops +EXPORT_SYMBOL vmlinux 0x01137d0c d_make_root +EXPORT_SYMBOL vmlinux 0x01173ae1 security_inode_readlink +EXPORT_SYMBOL vmlinux 0x0127e21b tcp_child_process +EXPORT_SYMBOL vmlinux 0x012ae68f dcbnl_ieee_notify +EXPORT_SYMBOL vmlinux 0x01381e72 skb_copy_bits +EXPORT_SYMBOL vmlinux 0x01458f07 blk_get_backing_dev_info +EXPORT_SYMBOL vmlinux 0x014bfc9d fb_pan_display +EXPORT_SYMBOL vmlinux 0x016e5c2a mod_timer +EXPORT_SYMBOL vmlinux 0x0193c7d5 phy_stop_interrupts +EXPORT_SYMBOL vmlinux 0x019e8492 freezing_slow_path +EXPORT_SYMBOL vmlinux 0x01a7e68e skb_free_datagram +EXPORT_SYMBOL vmlinux 0x01ba6223 netif_carrier_on +EXPORT_SYMBOL vmlinux 0x01cea477 sk_stream_wait_memory +EXPORT_SYMBOL vmlinux 0x01ef2fb3 phy_register_fixup +EXPORT_SYMBOL vmlinux 0x01f25e93 ht_create_irq +EXPORT_SYMBOL vmlinux 0x01f62ae3 skb_free_datagram_locked +EXPORT_SYMBOL vmlinux 0x01f77635 amd_iommu_enable_device_erratum +EXPORT_SYMBOL vmlinux 0x02124474 ip_send_check +EXPORT_SYMBOL vmlinux 0x0213d846 block_is_partially_uptodate +EXPORT_SYMBOL vmlinux 0x02227d31 bio_integrity_alloc +EXPORT_SYMBOL vmlinux 0x0228f869 tcp_syn_ack_timeout +EXPORT_SYMBOL vmlinux 0x0237b57a arch_unregister_cpu +EXPORT_SYMBOL vmlinux 0x024bf827 radix_tree_gang_lookup_tag_slot +EXPORT_SYMBOL vmlinux 0x025a6fa3 netif_device_attach +EXPORT_SYMBOL vmlinux 0x02645072 kill_bdev +EXPORT_SYMBOL vmlinux 0x02649054 security_sock_rcv_skb +EXPORT_SYMBOL vmlinux 0x02710626 scsi_verify_blk_ioctl +EXPORT_SYMBOL vmlinux 0x0274dc2b netif_get_num_default_rss_queues +EXPORT_SYMBOL vmlinux 0x0282919a __skb_get_hash +EXPORT_SYMBOL vmlinux 0x029444f0 native_read_tsc +EXPORT_SYMBOL vmlinux 0x029eeff9 ipv6_find_hdr +EXPORT_SYMBOL vmlinux 0x02a18c74 nf_conntrack_destroy +EXPORT_SYMBOL vmlinux 0x02a6ce5a crc16_table +EXPORT_SYMBOL vmlinux 0x02b02f64 neigh_for_each +EXPORT_SYMBOL vmlinux 0x02b78524 unlink_framebuffer +EXPORT_SYMBOL vmlinux 0x02b8f973 remove_proc_subtree +EXPORT_SYMBOL vmlinux 0x02c02a64 locks_mandatory_area +EXPORT_SYMBOL vmlinux 0x02d35627 __inc_zone_page_state +EXPORT_SYMBOL vmlinux 0x02ea111e scsi_driverbyte_string +EXPORT_SYMBOL vmlinux 0x02ed29ab param_set_int +EXPORT_SYMBOL vmlinux 0x03338647 pipe_lock +EXPORT_SYMBOL vmlinux 0x0334da4e scsi_command_size_tbl +EXPORT_SYMBOL vmlinux 0x03498156 cpu_rmap_update +EXPORT_SYMBOL vmlinux 0x0351edba d_prune_aliases +EXPORT_SYMBOL vmlinux 0x03592ea0 security_unix_stream_connect +EXPORT_SYMBOL vmlinux 0x035c5eaf input_mt_get_slot_by_key +EXPORT_SYMBOL vmlinux 0x035f8c55 unmap_mapping_range +EXPORT_SYMBOL vmlinux 0x0366307a console_suspend_enabled +EXPORT_SYMBOL vmlinux 0x037175fc inc_zone_page_state +EXPORT_SYMBOL vmlinux 0x0378561e vfs_create +EXPORT_SYMBOL vmlinux 0x037a0cba kfree +EXPORT_SYMBOL vmlinux 0x03ae261b simple_nosetlease +EXPORT_SYMBOL vmlinux 0x03e5ae59 nosteal_pipe_buf_ops +EXPORT_SYMBOL vmlinux 0x03ebda85 dns_query +EXPORT_SYMBOL vmlinux 0x03f78ba3 gnet_stats_copy_app +EXPORT_SYMBOL vmlinux 0x03fd2571 vm_unmap_ram +EXPORT_SYMBOL vmlinux 0x0422fe4a inet_csk_timer_bug_msg +EXPORT_SYMBOL vmlinux 0x0426ba24 idr_for_each +EXPORT_SYMBOL vmlinux 0x04362cf1 __alloc_pages_nodemask +EXPORT_SYMBOL vmlinux 0x04482cdb __refrigerator +EXPORT_SYMBOL vmlinux 0x044be298 __inode_permission +EXPORT_SYMBOL vmlinux 0x0454427c setup_new_exec +EXPORT_SYMBOL vmlinux 0x04735dc4 vm_insert_pfn +EXPORT_SYMBOL vmlinux 0x0487f831 fb_find_best_display +EXPORT_SYMBOL vmlinux 0x04927208 cpu_active_mask +EXPORT_SYMBOL vmlinux 0x04c62fd7 __memset +EXPORT_SYMBOL vmlinux 0x04d7aa51 swiotlb_sync_single_for_cpu +EXPORT_SYMBOL vmlinux 0x04d8c750 release_perfctr_nmi +EXPORT_SYMBOL vmlinux 0x04dee469 elevator_init +EXPORT_SYMBOL vmlinux 0x04ea56f9 _kstrtol +EXPORT_SYMBOL vmlinux 0x04ea5d10 ksize +EXPORT_SYMBOL vmlinux 0x04ee2018 unmap_underlying_metadata +EXPORT_SYMBOL vmlinux 0x050877b9 dmi_first_match +EXPORT_SYMBOL vmlinux 0x051c2a64 sock_from_file +EXPORT_SYMBOL vmlinux 0x05240ee7 percpu_counter_batch +EXPORT_SYMBOL vmlinux 0x054a40d0 __tracepoint_fence_emit +EXPORT_SYMBOL vmlinux 0x0556cf08 dentry_open +EXPORT_SYMBOL vmlinux 0x055867ae sock_kmalloc +EXPORT_SYMBOL vmlinux 0x055c8559 __kfifo_dma_in_prepare_r +EXPORT_SYMBOL vmlinux 0x059c7696 _dev_info +EXPORT_SYMBOL vmlinux 0x05cf296d pm860x_bulk_read +EXPORT_SYMBOL vmlinux 0x05d5bde9 bio_integrity_enabled +EXPORT_SYMBOL vmlinux 0x05dd0c6e clkdev_drop +EXPORT_SYMBOL vmlinux 0x05f41aab blk_queue_start_tag +EXPORT_SYMBOL vmlinux 0x05f85d1e param_array_ops +EXPORT_SYMBOL vmlinux 0x06052f8d __memmove +EXPORT_SYMBOL vmlinux 0x061651be strcat +EXPORT_SYMBOL vmlinux 0x061f4039 acpi_get_table_with_size +EXPORT_SYMBOL vmlinux 0x062bd966 pm8606_osc_enable +EXPORT_SYMBOL vmlinux 0x0632a3f0 submit_bio +EXPORT_SYMBOL vmlinux 0x0634100a bitmap_parselist_user +EXPORT_SYMBOL vmlinux 0x063e8038 fsnotify_put_group +EXPORT_SYMBOL vmlinux 0x0640a9ba dquot_claim_space_nodirty +EXPORT_SYMBOL vmlinux 0x066ab1c5 tcf_hash_create +EXPORT_SYMBOL vmlinux 0x067d8d35 security_release_secctx +EXPORT_SYMBOL vmlinux 0x068c7263 ioremap_cache +EXPORT_SYMBOL vmlinux 0x0696d68c blk_rq_count_integrity_sg +EXPORT_SYMBOL vmlinux 0x069fd31f unregister_md_personality +EXPORT_SYMBOL vmlinux 0x06a0d501 mmc_alloc_host +EXPORT_SYMBOL vmlinux 0x06c0dae5 __kernel_fpu_end +EXPORT_SYMBOL vmlinux 0x06c4d224 nf_log_register +EXPORT_SYMBOL vmlinux 0x06dbea77 iov_iter_alignment +EXPORT_SYMBOL vmlinux 0x06f64a33 path_get +EXPORT_SYMBOL vmlinux 0x06fe3b14 default_grn +EXPORT_SYMBOL vmlinux 0x06ff73a9 mipi_dsi_dcs_set_column_address +EXPORT_SYMBOL vmlinux 0x0703df54 xfrm_init_replay +EXPORT_SYMBOL vmlinux 0x071bd1fb passthru_features_check +EXPORT_SYMBOL vmlinux 0x07216e13 ilookup5 +EXPORT_SYMBOL vmlinux 0x0727c4f3 iowrite8 +EXPORT_SYMBOL vmlinux 0x072b5ef7 dev_deactivate +EXPORT_SYMBOL vmlinux 0x072f901c vme_master_rmw +EXPORT_SYMBOL vmlinux 0x0733068b padata_free +EXPORT_SYMBOL vmlinux 0x07412b19 posix_acl_from_xattr +EXPORT_SYMBOL vmlinux 0x074a3ce2 udp_disconnect +EXPORT_SYMBOL vmlinux 0x0761d579 nf_log_unregister +EXPORT_SYMBOL vmlinux 0x077d6cde follow_pfn +EXPORT_SYMBOL vmlinux 0x07935958 bio_integrity_add_page +EXPORT_SYMBOL vmlinux 0x07a4b576 flex_array_free +EXPORT_SYMBOL vmlinux 0x07a69fbf dev_queue_xmit_sk +EXPORT_SYMBOL vmlinux 0x07a890c8 fb_alloc_cmap +EXPORT_SYMBOL vmlinux 0x07abc56d md_check_no_bitmap +EXPORT_SYMBOL vmlinux 0x07b53933 dmam_alloc_coherent +EXPORT_SYMBOL vmlinux 0x07cc4a5d printk_timed_ratelimit +EXPORT_SYMBOL vmlinux 0x07e3833c skb_get_hash_perturb +EXPORT_SYMBOL vmlinux 0x07e667de dma_async_device_unregister +EXPORT_SYMBOL vmlinux 0x08181408 skb_append +EXPORT_SYMBOL vmlinux 0x081991a2 blk_run_queue +EXPORT_SYMBOL vmlinux 0x082c3213 pci_root_buses +EXPORT_SYMBOL vmlinux 0x083eb21c rfkill_unregister +EXPORT_SYMBOL vmlinux 0x086a4cd9 sock_no_getsockopt +EXPORT_SYMBOL vmlinux 0x0883fc64 sock_alloc_send_pskb +EXPORT_SYMBOL vmlinux 0x0897287b acpi_disable_all_gpes +EXPORT_SYMBOL vmlinux 0x08a2a53e __skb_recv_datagram +EXPORT_SYMBOL vmlinux 0x08a8c5a0 put_io_context +EXPORT_SYMBOL vmlinux 0x08b964ff iw_handler_set_thrspy +EXPORT_SYMBOL vmlinux 0x08e8e7e9 netlink_unicast +EXPORT_SYMBOL vmlinux 0x08ea69e7 mipi_dsi_packet_format_is_long +EXPORT_SYMBOL vmlinux 0x092bf97f d_rehash +EXPORT_SYMBOL vmlinux 0x0953c49d generic_pipe_buf_confirm +EXPORT_SYMBOL vmlinux 0x09580deb init_timer_key +EXPORT_SYMBOL vmlinux 0x09696626 acpi_decode_pld_buffer +EXPORT_SYMBOL vmlinux 0x096e39e9 skb_put +EXPORT_SYMBOL vmlinux 0x098431ba acpi_get_current_resources +EXPORT_SYMBOL vmlinux 0x098b71c6 fb_dealloc_cmap +EXPORT_SYMBOL vmlinux 0x098c330d agp_alloc_page_array +EXPORT_SYMBOL vmlinux 0x09c55cec schedule_timeout_interruptible +EXPORT_SYMBOL vmlinux 0x09c8eb55 font_vga_8x16 +EXPORT_SYMBOL vmlinux 0x09d44df9 in_lock_functions +EXPORT_SYMBOL vmlinux 0x09e88526 __init_waitqueue_head +EXPORT_SYMBOL vmlinux 0x0a00b877 inet_sendpage +EXPORT_SYMBOL vmlinux 0x0a0555aa vfs_whiteout +EXPORT_SYMBOL vmlinux 0x0a1cf5b3 save_mount_options +EXPORT_SYMBOL vmlinux 0x0a2487e0 unblock_all_signals +EXPORT_SYMBOL vmlinux 0x0a292872 reservation_seqcount_class +EXPORT_SYMBOL vmlinux 0x0a3cafbc da903x_query_status +EXPORT_SYMBOL vmlinux 0x0a4b9927 pci_clear_mwi +EXPORT_SYMBOL vmlinux 0x0a4d29ad tty_unthrottle +EXPORT_SYMBOL vmlinux 0x0a527a38 search_binary_handler +EXPORT_SYMBOL vmlinux 0x0a57863e cancel_delayed_work_sync +EXPORT_SYMBOL vmlinux 0x0a5bc82a gnttab_alloc_pages +EXPORT_SYMBOL vmlinux 0x0a5ccce8 tty_port_alloc_xmit_buf +EXPORT_SYMBOL vmlinux 0x0a661faa lg_local_unlock +EXPORT_SYMBOL vmlinux 0x0a770832 register_memory_notifier +EXPORT_SYMBOL vmlinux 0x0a851442 tcf_hash_search +EXPORT_SYMBOL vmlinux 0x0a97af6f sock_no_ioctl +EXPORT_SYMBOL vmlinux 0x0aa309cf synchronize_hardirq +EXPORT_SYMBOL vmlinux 0x0aa68d7d rt6_lookup +EXPORT_SYMBOL vmlinux 0x0aa724b1 register_netdevice +EXPORT_SYMBOL vmlinux 0x0acf7679 dma_issue_pending_all +EXPORT_SYMBOL vmlinux 0x0addfa67 netpoll_send_udp +EXPORT_SYMBOL vmlinux 0x0b0d1907 devfreq_monitor_suspend +EXPORT_SYMBOL vmlinux 0x0b0d888b icmpv6_err_convert +EXPORT_SYMBOL vmlinux 0x0b1beb31 vmalloc_32_user +EXPORT_SYMBOL vmlinux 0x0b38ada5 file_remove_privs +EXPORT_SYMBOL vmlinux 0x0b410de2 blk_put_queue +EXPORT_SYMBOL vmlinux 0x0b51340f crypto_sha512_update +EXPORT_SYMBOL vmlinux 0x0b62275f i2c_master_send +EXPORT_SYMBOL vmlinux 0x0b6c7df0 fsnotify_alloc_group +EXPORT_SYMBOL vmlinux 0x0b742fd7 simple_strtol +EXPORT_SYMBOL vmlinux 0x0b905c66 __percpu_counter_init +EXPORT_SYMBOL vmlinux 0x0b934c4d nlmsg_notify +EXPORT_SYMBOL vmlinux 0x0b966057 read_code +EXPORT_SYMBOL vmlinux 0x0bb1d189 ip6_frag_init +EXPORT_SYMBOL vmlinux 0x0bb9140f locks_copy_lock +EXPORT_SYMBOL vmlinux 0x0bbc5908 gen_estimator_active +EXPORT_SYMBOL vmlinux 0x0bc477a2 irq_set_irq_type +EXPORT_SYMBOL vmlinux 0x0bd73154 inode_sub_bytes +EXPORT_SYMBOL vmlinux 0x0bfe1f66 dev_add_pack +EXPORT_SYMBOL vmlinux 0x0c0775a3 tcp_openreq_init_rwin +EXPORT_SYMBOL vmlinux 0x0c0872e5 __scm_destroy +EXPORT_SYMBOL vmlinux 0x0c21d019 flush_delayed_work +EXPORT_SYMBOL vmlinux 0x0c3bd4d6 dquot_quota_off +EXPORT_SYMBOL vmlinux 0x0c40a5ba __break_lease +EXPORT_SYMBOL vmlinux 0x0c45fc96 vfs_lstat +EXPORT_SYMBOL vmlinux 0x0c469188 have_submounts +EXPORT_SYMBOL vmlinux 0x0c58a8cd netdev_increment_features +EXPORT_SYMBOL vmlinux 0x0c6bdc3f vme_master_read +EXPORT_SYMBOL vmlinux 0x0c6d265d blk_post_runtime_suspend +EXPORT_SYMBOL vmlinux 0x0c71db5b ndo_dflt_fdb_add +EXPORT_SYMBOL vmlinux 0x0ca0c882 twl6030_interrupt_mask +EXPORT_SYMBOL vmlinux 0x0ca38cd0 kernel_getsockname +EXPORT_SYMBOL vmlinux 0x0ca41ebb simple_dentry_operations +EXPORT_SYMBOL vmlinux 0x0ca7b7a8 acpi_check_region +EXPORT_SYMBOL vmlinux 0x0cae232b utf16s_to_utf8s +EXPORT_SYMBOL vmlinux 0x0cca14c2 arp_xmit +EXPORT_SYMBOL vmlinux 0x0cdb7d12 __kernel_fpu_begin +EXPORT_SYMBOL vmlinux 0x0ceefa8d mount_bdev +EXPORT_SYMBOL vmlinux 0x0d3dda14 acpi_get_type +EXPORT_SYMBOL vmlinux 0x0d542439 __ipv6_addr_type +EXPORT_SYMBOL vmlinux 0x0d61eeee __bitmap_subset +EXPORT_SYMBOL vmlinux 0x0d6f2f7b iommu_tbl_range_alloc +EXPORT_SYMBOL vmlinux 0x0d80efb5 acpi_evaluate_ost +EXPORT_SYMBOL vmlinux 0x0da10ec3 security_sock_graft +EXPORT_SYMBOL vmlinux 0x0da26919 netpoll_poll_disable +EXPORT_SYMBOL vmlinux 0x0dcddd07 register_filesystem +EXPORT_SYMBOL vmlinux 0x0dda1270 pnp_unregister_card_driver +EXPORT_SYMBOL vmlinux 0x0dfc1838 genlmsg_multicast_allns +EXPORT_SYMBOL vmlinux 0x0e258985 find_inode_nowait +EXPORT_SYMBOL vmlinux 0x0e33b405 compat_sock_get_timestampns +EXPORT_SYMBOL vmlinux 0x0e6693ee sock_update_memcg +EXPORT_SYMBOL vmlinux 0x0e6da44a set_normalized_timespec +EXPORT_SYMBOL vmlinux 0x0e7f490d netif_napi_del +EXPORT_SYMBOL vmlinux 0x0eb5d724 sk_page_frag_refill +EXPORT_SYMBOL vmlinux 0x0ec5babe vme_dma_free +EXPORT_SYMBOL vmlinux 0x0ed8cc7b acpi_evaluate_object_typed +EXPORT_SYMBOL vmlinux 0x0efcbb1b set_current_groups +EXPORT_SYMBOL vmlinux 0x0f14869d skb_vlan_pop +EXPORT_SYMBOL vmlinux 0x0f315223 __sk_backlog_rcv +EXPORT_SYMBOL vmlinux 0x0f3b2aff tcf_register_action +EXPORT_SYMBOL vmlinux 0x0f4c91ed ns_to_timespec +EXPORT_SYMBOL vmlinux 0x0f51d81f key_link +EXPORT_SYMBOL vmlinux 0x0f6a3b5c string_get_size +EXPORT_SYMBOL vmlinux 0x0f793d66 i2c_smbus_write_byte_data +EXPORT_SYMBOL vmlinux 0x0f8dde28 skb_split +EXPORT_SYMBOL vmlinux 0x0fa263f4 zpool_register_driver +EXPORT_SYMBOL vmlinux 0x0faef0ed __tasklet_schedule +EXPORT_SYMBOL vmlinux 0x0fb0e516 rtnl_configure_link +EXPORT_SYMBOL vmlinux 0x0fb2f8a4 mktime64 +EXPORT_SYMBOL vmlinux 0x0fcb0cd1 ppp_register_compressor +EXPORT_SYMBOL vmlinux 0x0fcc0375 km_is_alive +EXPORT_SYMBOL vmlinux 0x0fd00a68 acpi_clear_event +EXPORT_SYMBOL vmlinux 0x0fddc6da inet_del_protocol +EXPORT_SYMBOL vmlinux 0x0fed8d9b pci_add_new_bus +EXPORT_SYMBOL vmlinux 0x0ff2b602 slhc_compress +EXPORT_SYMBOL vmlinux 0x0ff987fa inet_put_port +EXPORT_SYMBOL vmlinux 0x10541270 jbd2_journal_restart +EXPORT_SYMBOL vmlinux 0x105862cb param_ops_ushort +EXPORT_SYMBOL vmlinux 0x106c35b4 find_get_entry +EXPORT_SYMBOL vmlinux 0x106c3ce8 pci_set_master +EXPORT_SYMBOL vmlinux 0x1071c848 proc_set_size +EXPORT_SYMBOL vmlinux 0x1072a394 csum_partial_copy_from_user +EXPORT_SYMBOL vmlinux 0x107e5878 zlib_inflateEnd +EXPORT_SYMBOL vmlinux 0x1090b857 blkdev_get_by_path +EXPORT_SYMBOL vmlinux 0x10950ee1 radix_tree_tag_clear +EXPORT_SYMBOL vmlinux 0x10a0c0ac call_usermodehelper_setup +EXPORT_SYMBOL vmlinux 0x10ba13ca tcf_hash_insert +EXPORT_SYMBOL vmlinux 0x10c2f187 gen_pool_virt_to_phys +EXPORT_SYMBOL vmlinux 0x10c706d8 ___pskb_trim +EXPORT_SYMBOL vmlinux 0x10d27a3f kdb_current_task +EXPORT_SYMBOL vmlinux 0x10e1787c pcim_iomap_table +EXPORT_SYMBOL vmlinux 0x10e5bdc9 set_pages_wb +EXPORT_SYMBOL vmlinux 0x10ee20bb default_blu +EXPORT_SYMBOL vmlinux 0x11089ac7 _ctype +EXPORT_SYMBOL vmlinux 0x1130059c bitmap_close_sync +EXPORT_SYMBOL vmlinux 0x1163f0a7 blk_max_low_pfn +EXPORT_SYMBOL vmlinux 0x116858f2 nf_unregister_hook +EXPORT_SYMBOL vmlinux 0x117093be qdisc_class_hash_init +EXPORT_SYMBOL vmlinux 0x118a5e56 blk_limits_io_min +EXPORT_SYMBOL vmlinux 0x11a044f6 mod_timer_pinned +EXPORT_SYMBOL vmlinux 0x11cc7a4c blk_post_runtime_resume +EXPORT_SYMBOL vmlinux 0x11f7ed4c hex_to_bin +EXPORT_SYMBOL vmlinux 0x120b336a __rb_insert_augmented +EXPORT_SYMBOL vmlinux 0x120d67d4 unregister_memory_isolate_notifier +EXPORT_SYMBOL vmlinux 0x120fc6b1 kstrdup_const +EXPORT_SYMBOL vmlinux 0x12109421 seq_file_path +EXPORT_SYMBOL vmlinux 0x12117658 nobh_writepage +EXPORT_SYMBOL vmlinux 0x1221e5c4 register_md_personality +EXPORT_SYMBOL vmlinux 0x1239e57e cleancache_register_ops +EXPORT_SYMBOL vmlinux 0x123bcb3c dev_mc_del +EXPORT_SYMBOL vmlinux 0x123ca058 phy_get_eee_err +EXPORT_SYMBOL vmlinux 0x123f82f3 getrawmonotonic64 +EXPORT_SYMBOL vmlinux 0x1250c7e1 _raw_spin_trylock +EXPORT_SYMBOL vmlinux 0x1250ced4 padata_do_parallel +EXPORT_SYMBOL vmlinux 0x125a4896 iterate_fd +EXPORT_SYMBOL vmlinux 0x126163e2 dquot_commit_info +EXPORT_SYMBOL vmlinux 0x12723171 tso_build_hdr +EXPORT_SYMBOL vmlinux 0x129de341 wrmsr_on_cpus +EXPORT_SYMBOL vmlinux 0x12a38747 usleep_range +EXPORT_SYMBOL vmlinux 0x12a96034 iw_handler_get_thrspy +EXPORT_SYMBOL vmlinux 0x12b455a3 commit_creds +EXPORT_SYMBOL vmlinux 0x12d0ed47 xfrm_unregister_mode +EXPORT_SYMBOL vmlinux 0x12dfeb12 vprintk_emit +EXPORT_SYMBOL vmlinux 0x12e9a4e3 sync_inode_metadata +EXPORT_SYMBOL vmlinux 0x12ec4aec twl6040_power +EXPORT_SYMBOL vmlinux 0x12ed30ad mmc_erase_group_aligned +EXPORT_SYMBOL vmlinux 0x12f0d214 pskb_expand_head +EXPORT_SYMBOL vmlinux 0x1305d532 ucs2_strncmp +EXPORT_SYMBOL vmlinux 0x130f86af generic_writepages +EXPORT_SYMBOL vmlinux 0x131b3ef5 generic_write_end +EXPORT_SYMBOL vmlinux 0x13243d4b wl1251_get_platform_data +EXPORT_SYMBOL vmlinux 0x132f189e agp_bind_memory +EXPORT_SYMBOL vmlinux 0x13307fde vsscanf +EXPORT_SYMBOL vmlinux 0x13315729 flex_array_alloc +EXPORT_SYMBOL vmlinux 0x13d0adf7 __kfifo_out +EXPORT_SYMBOL vmlinux 0x13d311ee vme_register_bridge +EXPORT_SYMBOL vmlinux 0x13e4006d locks_copy_conflock +EXPORT_SYMBOL vmlinux 0x13eafcdd inet6_ioctl +EXPORT_SYMBOL vmlinux 0x13f42152 system_entering_hibernation +EXPORT_SYMBOL vmlinux 0x13fc7400 try_to_writeback_inodes_sb_nr +EXPORT_SYMBOL vmlinux 0x13fd253d sock_get_timestamp +EXPORT_SYMBOL vmlinux 0x14024cf2 bio_init +EXPORT_SYMBOL vmlinux 0x1413cd3a agp_generic_enable +EXPORT_SYMBOL vmlinux 0x143db96c pnp_disable_dev +EXPORT_SYMBOL vmlinux 0x14473bc0 __inet_stream_connect +EXPORT_SYMBOL vmlinux 0x14618415 param_set_short +EXPORT_SYMBOL vmlinux 0x14622df7 tcp_prequeue +EXPORT_SYMBOL vmlinux 0x1474c4fa skb_copy_datagram_from_iter +EXPORT_SYMBOL vmlinux 0x147abc67 uart_add_one_port +EXPORT_SYMBOL vmlinux 0x1489a8b9 pci_bus_type +EXPORT_SYMBOL vmlinux 0x14a0c2b5 i2c_smbus_xfer +EXPORT_SYMBOL vmlinux 0x14ae3ff8 nobh_truncate_page +EXPORT_SYMBOL vmlinux 0x14bafbc1 dst_destroy +EXPORT_SYMBOL vmlinux 0x14de5772 netpoll_poll_enable +EXPORT_SYMBOL vmlinux 0x150389d6 acpi_processor_power_init_bm_check +EXPORT_SYMBOL vmlinux 0x151d4857 swiotlb_sync_single_for_device +EXPORT_SYMBOL vmlinux 0x1526d5a2 user_revoke +EXPORT_SYMBOL vmlinux 0x15497caf inet6_add_offload +EXPORT_SYMBOL vmlinux 0x154acf06 fb_validate_mode +EXPORT_SYMBOL vmlinux 0x154c6338 dm_kcopyd_client_destroy +EXPORT_SYMBOL vmlinux 0x1565ac30 param_ops_string +EXPORT_SYMBOL vmlinux 0x156a8a59 down_trylock +EXPORT_SYMBOL vmlinux 0x1597cdde blk_mq_kick_requeue_list +EXPORT_SYMBOL vmlinux 0x15bafe29 unregister_md_cluster_operations +EXPORT_SYMBOL vmlinux 0x15d8e883 user_path_at_empty +EXPORT_SYMBOL vmlinux 0x15de7550 sock_recv_errqueue +EXPORT_SYMBOL vmlinux 0x15e2a75a nvdimm_namespace_disk_name +EXPORT_SYMBOL vmlinux 0x160ea4c8 sfi_disabled +EXPORT_SYMBOL vmlinux 0x160ef3c9 nla_put +EXPORT_SYMBOL vmlinux 0x1616cb30 acpi_evaluate_dsm +EXPORT_SYMBOL vmlinux 0x16305289 warn_slowpath_null +EXPORT_SYMBOL vmlinux 0x1630def9 input_free_device +EXPORT_SYMBOL vmlinux 0x16656946 max8925_set_bits +EXPORT_SYMBOL vmlinux 0x166f5b29 d_instantiate_unique +EXPORT_SYMBOL vmlinux 0x167c5967 print_hex_dump +EXPORT_SYMBOL vmlinux 0x167e7f9d __get_user_1 +EXPORT_SYMBOL vmlinux 0x168ecf66 param_ops_bool +EXPORT_SYMBOL vmlinux 0x16c73e8a ppp_output_wakeup +EXPORT_SYMBOL vmlinux 0x16dc4d1f fence_init +EXPORT_SYMBOL vmlinux 0x16f2e50f mutex_trylock +EXPORT_SYMBOL vmlinux 0x16f71a5c scsi_register +EXPORT_SYMBOL vmlinux 0x170c25ee acpi_get_next_object +EXPORT_SYMBOL vmlinux 0x170df153 kthread_bind +EXPORT_SYMBOL vmlinux 0x172e2666 xfrm_unregister_km +EXPORT_SYMBOL vmlinux 0x1733e678 open_exec +EXPORT_SYMBOL vmlinux 0x17510bf8 dev_change_flags +EXPORT_SYMBOL vmlinux 0x17661e7b md_reload_sb +EXPORT_SYMBOL vmlinux 0x178fc438 gen_new_estimator +EXPORT_SYMBOL vmlinux 0x1793f685 radix_tree_tagged +EXPORT_SYMBOL vmlinux 0x179e8a3f skb_store_bits +EXPORT_SYMBOL vmlinux 0x179edbb8 sb_min_blocksize +EXPORT_SYMBOL vmlinux 0x17a39067 mapping_tagged +EXPORT_SYMBOL vmlinux 0x17af2243 __d_drop +EXPORT_SYMBOL vmlinux 0x17b1125d gen_kill_estimator +EXPORT_SYMBOL vmlinux 0x17b3b6ff clear_inode +EXPORT_SYMBOL vmlinux 0x17cd5548 vfs_getxattr_alloc +EXPORT_SYMBOL vmlinux 0x17ddb84c vfs_fsync +EXPORT_SYMBOL vmlinux 0x17e0af35 memory_cgrp_subsys +EXPORT_SYMBOL vmlinux 0x17ebd797 scsi_dma_unmap +EXPORT_SYMBOL vmlinux 0x17f341a0 i8042_lock_chip +EXPORT_SYMBOL vmlinux 0x17fe83b9 sk_mc_loop +EXPORT_SYMBOL vmlinux 0x1829d188 wait_woken +EXPORT_SYMBOL vmlinux 0x18323be1 blk_start_queue +EXPORT_SYMBOL vmlinux 0x183fa88b mempool_alloc_slab +EXPORT_SYMBOL vmlinux 0x184b82fb mmc_vddrange_to_ocrmask +EXPORT_SYMBOL vmlinux 0x1881710b jbd2_journal_begin_ordered_truncate +EXPORT_SYMBOL vmlinux 0x188a3dfb timespec_trunc +EXPORT_SYMBOL vmlinux 0x188f2acb lease_modify +EXPORT_SYMBOL vmlinux 0x189868d7 get_random_bytes_arch +EXPORT_SYMBOL vmlinux 0x189db02b sync_dirty_buffer +EXPORT_SYMBOL vmlinux 0x18a0a432 kill_pid +EXPORT_SYMBOL vmlinux 0x18aea334 sock_i_uid +EXPORT_SYMBOL vmlinux 0x18b72573 register_kmmio_probe +EXPORT_SYMBOL vmlinux 0x18bb301d pci_bus_write_config_byte +EXPORT_SYMBOL vmlinux 0x18c9f62d posix_lock_inode_wait +EXPORT_SYMBOL vmlinux 0x18ca6192 lockref_get_not_dead +EXPORT_SYMBOL vmlinux 0x18da8807 seq_release_private +EXPORT_SYMBOL vmlinux 0x190cbe8c eth_commit_mac_addr_change +EXPORT_SYMBOL vmlinux 0x1913e03f tty_port_close_end +EXPORT_SYMBOL vmlinux 0x1916e38c _raw_spin_unlock_irqrestore +EXPORT_SYMBOL vmlinux 0x191f0a7f ppp_unregister_compressor +EXPORT_SYMBOL vmlinux 0x193ff8ce swiotlb_unmap_sg_attrs +EXPORT_SYMBOL vmlinux 0x194fe2ed __register_nls +EXPORT_SYMBOL vmlinux 0x1965b035 km_query +EXPORT_SYMBOL vmlinux 0x1969aad8 pnp_possible_config +EXPORT_SYMBOL vmlinux 0x197f27fc generic_permission +EXPORT_SYMBOL vmlinux 0x198d8ae5 __blkdev_reread_part +EXPORT_SYMBOL vmlinux 0x1990da8d security_path_mknod +EXPORT_SYMBOL vmlinux 0x1992e924 security_path_symlink +EXPORT_SYMBOL vmlinux 0x199df22d pci_msix_vec_count +EXPORT_SYMBOL vmlinux 0x199ed0cd net_disable_timestamp +EXPORT_SYMBOL vmlinux 0x19a58078 dm_register_target +EXPORT_SYMBOL vmlinux 0x19a74dfe mmc_power_restore_host +EXPORT_SYMBOL vmlinux 0x19bbbe0e init_special_inode +EXPORT_SYMBOL vmlinux 0x19bd383b security_secmark_refcount_dec +EXPORT_SYMBOL vmlinux 0x19c3cc2e __xfrm_state_destroy +EXPORT_SYMBOL vmlinux 0x19ef1a37 always_delete_dentry +EXPORT_SYMBOL vmlinux 0x1a11ba24 bdi_register_dev +EXPORT_SYMBOL vmlinux 0x1a34f562 do_truncate +EXPORT_SYMBOL vmlinux 0x1a445808 __page_symlink +EXPORT_SYMBOL vmlinux 0x1a458673 nd_integrity_init +EXPORT_SYMBOL vmlinux 0x1a45cb6c acpi_disabled +EXPORT_SYMBOL vmlinux 0x1a5ed20a dev_addr_add +EXPORT_SYMBOL vmlinux 0x1a635e71 sock_edemux +EXPORT_SYMBOL vmlinux 0x1a63af34 vga_switcheroo_process_delayed_switch +EXPORT_SYMBOL vmlinux 0x1a815d5e i2c_add_adapter +EXPORT_SYMBOL vmlinux 0x1a9093fa ip_defrag +EXPORT_SYMBOL vmlinux 0x1ab07c25 default_file_splice_read +EXPORT_SYMBOL vmlinux 0x1ac4e081 blk_queue_invalidate_tags +EXPORT_SYMBOL vmlinux 0x1ac59cfb key_task_permission +EXPORT_SYMBOL vmlinux 0x1ac5d3cb strcspn +EXPORT_SYMBOL vmlinux 0x1ad38082 unlock_new_inode +EXPORT_SYMBOL vmlinux 0x1ad3c202 simple_dir_inode_operations +EXPORT_SYMBOL vmlinux 0x1ae1ee0d ata_scsi_cmd_error_handler +EXPORT_SYMBOL vmlinux 0x1ae7f4ec __secpath_destroy +EXPORT_SYMBOL vmlinux 0x1aecfe57 scsi_get_device_flags_keyed +EXPORT_SYMBOL vmlinux 0x1aefebbd inode_init_owner +EXPORT_SYMBOL vmlinux 0x1af717d6 forget_all_cached_acls +EXPORT_SYMBOL vmlinux 0x1afb1aaa acpi_mark_gpe_for_wake +EXPORT_SYMBOL vmlinux 0x1b015d25 bitmap_parselist +EXPORT_SYMBOL vmlinux 0x1b06a209 blk_set_default_limits +EXPORT_SYMBOL vmlinux 0x1b0f0542 tty_insert_flip_string_fixed_flag +EXPORT_SYMBOL vmlinux 0x1b1868f7 alloc_disk_node +EXPORT_SYMBOL vmlinux 0x1b1e1088 sg_nents +EXPORT_SYMBOL vmlinux 0x1b2ed29c current_fs_time +EXPORT_SYMBOL vmlinux 0x1b38c122 tcp_rtx_synack +EXPORT_SYMBOL vmlinux 0x1b570d23 acpi_warning +EXPORT_SYMBOL vmlinux 0x1b6314fd in_aton +EXPORT_SYMBOL vmlinux 0x1b82fefa md_unplug +EXPORT_SYMBOL vmlinux 0x1b8b95ad i8042_unlock_chip +EXPORT_SYMBOL vmlinux 0x1bb31047 add_timer +EXPORT_SYMBOL vmlinux 0x1be1dd26 lg_global_lock +EXPORT_SYMBOL vmlinux 0x1c1d9434 fb_set_suspend +EXPORT_SYMBOL vmlinux 0x1c281f08 agp_copy_info +EXPORT_SYMBOL vmlinux 0x1c35700b dquot_commit +EXPORT_SYMBOL vmlinux 0x1c837819 inet_confirm_addr +EXPORT_SYMBOL vmlinux 0x1c8840bf fbcon_rotate_cw +EXPORT_SYMBOL vmlinux 0x1c893693 dqput +EXPORT_SYMBOL vmlinux 0x1c8a04b0 acpi_reset +EXPORT_SYMBOL vmlinux 0x1ca72bff compat_tcp_setsockopt +EXPORT_SYMBOL vmlinux 0x1cc67cad tcp_sendmsg +EXPORT_SYMBOL vmlinux 0x1cde1019 sync_inodes_sb +EXPORT_SYMBOL vmlinux 0x1cdf5287 param_set_ushort +EXPORT_SYMBOL vmlinux 0x1ce32430 vga_get +EXPORT_SYMBOL vmlinux 0x1ce7967d blk_queue_alignment_offset +EXPORT_SYMBOL vmlinux 0x1d09dfb4 jbd2_journal_abort +EXPORT_SYMBOL vmlinux 0x1d1056e5 crc32_be +EXPORT_SYMBOL vmlinux 0x1d25c406 sock_no_connect +EXPORT_SYMBOL vmlinux 0x1d26cd5f sock_alloc_file +EXPORT_SYMBOL vmlinux 0x1d3031dd dquot_quota_sync +EXPORT_SYMBOL vmlinux 0x1d3b6d21 __fib6_flush_trees +EXPORT_SYMBOL vmlinux 0x1d4ab758 rtnl_set_sk_err +EXPORT_SYMBOL vmlinux 0x1d56e1fd inet_csk_accept +EXPORT_SYMBOL vmlinux 0x1d5c73ab filemap_write_and_wait_range +EXPORT_SYMBOL vmlinux 0x1d91cd4c fb_prepare_logo +EXPORT_SYMBOL vmlinux 0x1da9a232 pci_unregister_driver +EXPORT_SYMBOL vmlinux 0x1dab0980 set_user_nice +EXPORT_SYMBOL vmlinux 0x1db7706b __copy_user_nocache +EXPORT_SYMBOL vmlinux 0x1dc36131 fb_destroy_modedb +EXPORT_SYMBOL vmlinux 0x1dcc9569 nla_append +EXPORT_SYMBOL vmlinux 0x1dd571e6 fb_copy_cmap +EXPORT_SYMBOL vmlinux 0x1dd5b248 pci_assign_resource +EXPORT_SYMBOL vmlinux 0x1ddce19e cdrom_get_last_written +EXPORT_SYMBOL vmlinux 0x1de74f72 acpi_execute_simple_method +EXPORT_SYMBOL vmlinux 0x1e036c98 acpi_set_gpe +EXPORT_SYMBOL vmlinux 0x1e047854 warn_slowpath_fmt +EXPORT_SYMBOL vmlinux 0x1e0c2be4 ioremap_wc +EXPORT_SYMBOL vmlinux 0x1e26be3b get_anon_bdev +EXPORT_SYMBOL vmlinux 0x1e362351 inet_add_offload +EXPORT_SYMBOL vmlinux 0x1e3c330f netif_set_real_num_tx_queues +EXPORT_SYMBOL vmlinux 0x1e487a72 inet_get_local_port_range +EXPORT_SYMBOL vmlinux 0x1e6d26a8 strstr +EXPORT_SYMBOL vmlinux 0x1e723ae0 get_empty_filp +EXPORT_SYMBOL vmlinux 0x1e9c58ff eth_header_parse +EXPORT_SYMBOL vmlinux 0x1e9edfb7 seq_hlist_start_head_rcu +EXPORT_SYMBOL vmlinux 0x1eb922a3 IO_APIC_get_PCI_irq_vector +EXPORT_SYMBOL vmlinux 0x1ec0f8f5 xfrm_state_register_afinfo +EXPORT_SYMBOL vmlinux 0x1ec990c8 efi +EXPORT_SYMBOL vmlinux 0x1eca9e4c twl6030_mmc_card_detect +EXPORT_SYMBOL vmlinux 0x1f4a5077 __dev_remove_pack +EXPORT_SYMBOL vmlinux 0x1f57a87a __mark_inode_dirty +EXPORT_SYMBOL vmlinux 0x1f6ce67a sg_pcopy_to_buffer +EXPORT_SYMBOL vmlinux 0x1f74b9e7 blk_queue_chunk_sectors +EXPORT_SYMBOL vmlinux 0x1fa1530a ihold +EXPORT_SYMBOL vmlinux 0x1fbd16da ip_tos2prio +EXPORT_SYMBOL vmlinux 0x1fc687a8 arp_create +EXPORT_SYMBOL vmlinux 0x1fc79096 devfreq_add_governor +EXPORT_SYMBOL vmlinux 0x1fca3fc4 tcp_enter_memory_pressure +EXPORT_SYMBOL vmlinux 0x1fcb2279 d_alloc_pseudo +EXPORT_SYMBOL vmlinux 0x1fd07fff kdb_grepping_flag +EXPORT_SYMBOL vmlinux 0x1fe912f1 netdev_alloc_frag +EXPORT_SYMBOL vmlinux 0x1fe9f800 unregister_cpu_notifier +EXPORT_SYMBOL vmlinux 0x1fedf0f4 __request_region +EXPORT_SYMBOL vmlinux 0x1ff52d2e cpu_info +EXPORT_SYMBOL vmlinux 0x1ffe556a security_inode_permission +EXPORT_SYMBOL vmlinux 0x20000329 simple_strtoul +EXPORT_SYMBOL vmlinux 0x20006016 phy_device_free +EXPORT_SYMBOL vmlinux 0x2001e25e padata_add_cpu +EXPORT_SYMBOL vmlinux 0x2005e68a acpi_remove_fixed_event_handler +EXPORT_SYMBOL vmlinux 0x20092385 acpi_enter_sleep_state_s4bios +EXPORT_SYMBOL vmlinux 0x200b2041 in6addr_any +EXPORT_SYMBOL vmlinux 0x201b0ac0 lg_global_unlock +EXPORT_SYMBOL vmlinux 0x2044aea7 amd_iommu_pc_get_max_banks +EXPORT_SYMBOL vmlinux 0x204b8c16 register_sysctl_paths +EXPORT_SYMBOL vmlinux 0x204c19f5 tcp_alloc_md5sig_pool +EXPORT_SYMBOL vmlinux 0x20568bde netpoll_setup +EXPORT_SYMBOL vmlinux 0x2059a447 cpu_sibling_map +EXPORT_SYMBOL vmlinux 0x205dc4b7 mb_cache_entry_insert +EXPORT_SYMBOL vmlinux 0x205e75b5 __xfrm_route_forward +EXPORT_SYMBOL vmlinux 0x206652e1 abx500_mask_and_set_register_interruptible +EXPORT_SYMBOL vmlinux 0x2072ee9b request_threaded_irq +EXPORT_SYMBOL vmlinux 0x2078f261 security_mmap_file +EXPORT_SYMBOL vmlinux 0x208739f6 acpi_load_table +EXPORT_SYMBOL vmlinux 0x20a61c28 serio_interrupt +EXPORT_SYMBOL vmlinux 0x20a789ac irq_set_chip_data +EXPORT_SYMBOL vmlinux 0x20abc15b acpi_processor_register_performance +EXPORT_SYMBOL vmlinux 0x20c1fcb0 ipv6_select_ident +EXPORT_SYMBOL vmlinux 0x20c34db3 nf_register_sockopt +EXPORT_SYMBOL vmlinux 0x20c55ae0 sscanf +EXPORT_SYMBOL vmlinux 0x20cca1c2 seq_pad +EXPORT_SYMBOL vmlinux 0x20d8c49f pm_vt_switch_required +EXPORT_SYMBOL vmlinux 0x20df5a3d vme_dma_pci_attribute +EXPORT_SYMBOL vmlinux 0x20eadeb6 ip_compute_csum +EXPORT_SYMBOL vmlinux 0x20fe9382 mmc_set_blockcount +EXPORT_SYMBOL vmlinux 0x210325f4 ip_mc_check_igmp +EXPORT_SYMBOL vmlinux 0x21035312 dput +EXPORT_SYMBOL vmlinux 0x211f68f1 getnstimeofday64 +EXPORT_SYMBOL vmlinux 0x21282077 netdev_lower_get_first_private_rcu +EXPORT_SYMBOL vmlinux 0x2147f624 gro_find_complete_by_type +EXPORT_SYMBOL vmlinux 0x214c2e6b __qdisc_calculate_pkt_len +EXPORT_SYMBOL vmlinux 0x21552ed5 shrink_dcache_parent +EXPORT_SYMBOL vmlinux 0x216dad21 pv_cpu_ops +EXPORT_SYMBOL vmlinux 0x219e4f74 devm_request_threaded_irq +EXPORT_SYMBOL vmlinux 0x21a58d0b inet_del_offload +EXPORT_SYMBOL vmlinux 0x21a701fe fence_signal +EXPORT_SYMBOL vmlinux 0x21b1a1ca vfs_rename +EXPORT_SYMBOL vmlinux 0x21c1d96b pcie_capability_write_dword +EXPORT_SYMBOL vmlinux 0x21d17564 serio_close +EXPORT_SYMBOL vmlinux 0x21d7a506 vme_irq_handler +EXPORT_SYMBOL vmlinux 0x21df74d9 bitmap_set +EXPORT_SYMBOL vmlinux 0x21e992a5 ida_simple_get +EXPORT_SYMBOL vmlinux 0x2207a57f prepare_to_wait_event +EXPORT_SYMBOL vmlinux 0x22133859 skb_prepare_seq_read +EXPORT_SYMBOL vmlinux 0x22210ca5 mmc_retune_timer_stop +EXPORT_SYMBOL vmlinux 0x2224393f agp_allocate_memory +EXPORT_SYMBOL vmlinux 0x2225fe23 ps2_sendbyte +EXPORT_SYMBOL vmlinux 0x222e7ce2 sysfs_streq +EXPORT_SYMBOL vmlinux 0x2245647d mdiobus_register +EXPORT_SYMBOL vmlinux 0x225bd101 build_skb +EXPORT_SYMBOL vmlinux 0x2276db98 kstrtoint +EXPORT_SYMBOL vmlinux 0x22a87acd nf_hook_slow +EXPORT_SYMBOL vmlinux 0x22b325d5 kd_mksound +EXPORT_SYMBOL vmlinux 0x22d1f946 inode_add_rsv_space +EXPORT_SYMBOL vmlinux 0x22eb04fa skb_checksum_trimmed +EXPORT_SYMBOL vmlinux 0x231d4001 fb_edid_add_monspecs +EXPORT_SYMBOL vmlinux 0x232792a6 skb_copy_and_csum_datagram_msg +EXPORT_SYMBOL vmlinux 0x232d18ec rps_sock_flow_table +EXPORT_SYMBOL vmlinux 0x2361fa5d ethtool_op_get_ts_info +EXPORT_SYMBOL vmlinux 0x236b8a62 skb_vlan_push +EXPORT_SYMBOL vmlinux 0x238f5c1a _raw_write_unlock_irqrestore +EXPORT_SYMBOL vmlinux 0x23a574fd security_secmark_relabel_packet +EXPORT_SYMBOL vmlinux 0x23b9d6e2 mangle_path +EXPORT_SYMBOL vmlinux 0x23c8f257 slhc_uncompress +EXPORT_SYMBOL vmlinux 0x23c9891c kstrtoint_from_user +EXPORT_SYMBOL vmlinux 0x23ccb7eb ipv6_getsockopt +EXPORT_SYMBOL vmlinux 0x23cf97db vm_event_states +EXPORT_SYMBOL vmlinux 0x23e68d77 pm860x_page_bulk_read +EXPORT_SYMBOL vmlinux 0x23fd3028 vmalloc_node +EXPORT_SYMBOL vmlinux 0x2417522c block_write_end +EXPORT_SYMBOL vmlinux 0x24212d86 __frontswap_invalidate_page +EXPORT_SYMBOL vmlinux 0x2423dab8 __breadahead +EXPORT_SYMBOL vmlinux 0x242ecab7 netdev_change_features +EXPORT_SYMBOL vmlinux 0x2438c336 unlock_page +EXPORT_SYMBOL vmlinux 0x24428be5 strncpy_from_user +EXPORT_SYMBOL vmlinux 0x24461a7c kmem_cache_shrink +EXPORT_SYMBOL vmlinux 0x2459bbcc console_set_on_cmdline +EXPORT_SYMBOL vmlinux 0x2460831a flush_signals +EXPORT_SYMBOL vmlinux 0x2463500e sock_create +EXPORT_SYMBOL vmlinux 0x2482e688 vsprintf +EXPORT_SYMBOL vmlinux 0x2484adc3 __kfifo_to_user_r +EXPORT_SYMBOL vmlinux 0x2489e6e8 noop_fsync +EXPORT_SYMBOL vmlinux 0x249d96d9 poll_initwait +EXPORT_SYMBOL vmlinux 0x24a27785 bio_reset +EXPORT_SYMBOL vmlinux 0x24eebdd1 ipv6_skip_exthdr +EXPORT_SYMBOL vmlinux 0x24fdac79 wake_bit_function +EXPORT_SYMBOL vmlinux 0x250d4f36 compat_sock_common_setsockopt +EXPORT_SYMBOL vmlinux 0x2514753c vlan_vid_del +EXPORT_SYMBOL vmlinux 0x25150f68 nd_namespace_blk_validate +EXPORT_SYMBOL vmlinux 0x25277497 rfkill_register +EXPORT_SYMBOL vmlinux 0x2544a980 lookup_bdev +EXPORT_SYMBOL vmlinux 0x2570a138 reservation_seqcount_string +EXPORT_SYMBOL vmlinux 0x25820c64 fs_overflowuid +EXPORT_SYMBOL vmlinux 0x2585932c blk_init_tags +EXPORT_SYMBOL vmlinux 0x25abb5cc jbd2_journal_start_commit +EXPORT_SYMBOL vmlinux 0x25ad9738 register_shrinker +EXPORT_SYMBOL vmlinux 0x25c68fd6 read_dev_sector +EXPORT_SYMBOL vmlinux 0x25d05147 blk_queue_make_request +EXPORT_SYMBOL vmlinux 0x25e5be7b dev_mc_flush +EXPORT_SYMBOL vmlinux 0x25e8ed29 sg_nents_for_len +EXPORT_SYMBOL vmlinux 0x25e9d4bd resource_list_free +EXPORT_SYMBOL vmlinux 0x25f9673f pci_iounmap +EXPORT_SYMBOL vmlinux 0x260267e9 zerocopy_sg_from_iter +EXPORT_SYMBOL vmlinux 0x2607330a input_set_capability +EXPORT_SYMBOL vmlinux 0x26089064 mount_subtree +EXPORT_SYMBOL vmlinux 0x26201347 __module_put_and_exit +EXPORT_SYMBOL vmlinux 0x262a862e peernet2id_alloc +EXPORT_SYMBOL vmlinux 0x263beb75 ecryptfs_get_versions +EXPORT_SYMBOL vmlinux 0x2650d835 sysctl_ip_early_demux +EXPORT_SYMBOL vmlinux 0x2665d53a key_create_or_update +EXPORT_SYMBOL vmlinux 0x26727df0 kernel_bind +EXPORT_SYMBOL vmlinux 0x2675e643 blk_queue_max_segment_size +EXPORT_SYMBOL vmlinux 0x268cfbe8 bdev_read_only +EXPORT_SYMBOL vmlinux 0x26948d96 copy_user_enhanced_fast_string +EXPORT_SYMBOL vmlinux 0x26973b19 tty_schedule_flip +EXPORT_SYMBOL vmlinux 0x26a87f08 netdev_master_upper_dev_get +EXPORT_SYMBOL vmlinux 0x26bd6c7a mmc_hw_reset +EXPORT_SYMBOL vmlinux 0x26cb34a2 mempool_create +EXPORT_SYMBOL vmlinux 0x26cbb9eb kernel_param_lock +EXPORT_SYMBOL vmlinux 0x26e298e0 unregister_memory_notifier +EXPORT_SYMBOL vmlinux 0x26e76fb8 sysctl_udp_wmem_min +EXPORT_SYMBOL vmlinux 0x26febcb5 pci_save_state +EXPORT_SYMBOL vmlinux 0x271cba95 acpi_bus_private_data_handler +EXPORT_SYMBOL vmlinux 0x272d394e mtrr_del +EXPORT_SYMBOL vmlinux 0x2730b71c dev_remove_pack +EXPORT_SYMBOL vmlinux 0x274d08dc __kfifo_dma_out_prepare +EXPORT_SYMBOL vmlinux 0x275b98ea netdev_lower_get_next_private_rcu +EXPORT_SYMBOL vmlinux 0x276703b3 module_refcount +EXPORT_SYMBOL vmlinux 0x2779ec44 inet6_offloads +EXPORT_SYMBOL vmlinux 0x27864d57 memparse +EXPORT_SYMBOL vmlinux 0x27866435 security_xfrm_state_alloc +EXPORT_SYMBOL vmlinux 0x27882b9b ida_simple_remove +EXPORT_SYMBOL vmlinux 0x2793af41 neigh_seq_start +EXPORT_SYMBOL vmlinux 0x27942828 get_cached_acl_rcu +EXPORT_SYMBOL vmlinux 0x27959755 vfs_statfs +EXPORT_SYMBOL vmlinux 0x279860c5 input_unregister_handle +EXPORT_SYMBOL vmlinux 0x279bae0f flow_get_u32_dst +EXPORT_SYMBOL vmlinux 0x27a7e4bc tcp_splice_read +EXPORT_SYMBOL vmlinux 0x27ae7d0c ec_transaction +EXPORT_SYMBOL vmlinux 0x27bbf221 disable_irq_nosync +EXPORT_SYMBOL vmlinux 0x27c33efe csum_ipv6_magic +EXPORT_SYMBOL vmlinux 0x27d0fa78 gnet_stats_copy_basic +EXPORT_SYMBOL vmlinux 0x27e1a049 printk +EXPORT_SYMBOL vmlinux 0x27f26327 replace_mount_options +EXPORT_SYMBOL vmlinux 0x27f72c94 pci_clear_master +EXPORT_SYMBOL vmlinux 0x27f7379e agp_find_bridge +EXPORT_SYMBOL vmlinux 0x27fb80dd sock_common_setsockopt +EXPORT_SYMBOL vmlinux 0x280eef3d phy_init_hw +EXPORT_SYMBOL vmlinux 0x2810fcdb dentry_update_name_case +EXPORT_SYMBOL vmlinux 0x281823c5 __kfifo_out_peek +EXPORT_SYMBOL vmlinux 0x28199a63 pm860x_reg_read +EXPORT_SYMBOL vmlinux 0x28318305 snprintf +EXPORT_SYMBOL vmlinux 0x284fe59b ipv6_push_nfrag_opts +EXPORT_SYMBOL vmlinux 0x285bf2f1 __vfs_read +EXPORT_SYMBOL vmlinux 0x28649b55 security_path_chmod +EXPORT_SYMBOL vmlinux 0x287ca030 mipi_dsi_dcs_set_page_address +EXPORT_SYMBOL vmlinux 0x2883c8d2 blk_pm_runtime_init +EXPORT_SYMBOL vmlinux 0x2886ddc9 pagevec_lookup_tag +EXPORT_SYMBOL vmlinux 0x28a2b29f radix_tree_range_tag_if_tagged +EXPORT_SYMBOL vmlinux 0x28a2ed02 scsi_build_sense_buffer +EXPORT_SYMBOL vmlinux 0x28a7b12b dquot_transfer +EXPORT_SYMBOL vmlinux 0x28abfe6e scsi_kmap_atomic_sg +EXPORT_SYMBOL vmlinux 0x28b5fed4 inet_accept +EXPORT_SYMBOL vmlinux 0x28d199b2 xfrm6_rcv +EXPORT_SYMBOL vmlinux 0x28e09af1 iosf_mbi_available +EXPORT_SYMBOL vmlinux 0x28fa5529 to_nd_btt +EXPORT_SYMBOL vmlinux 0x2926afbd user_path_create +EXPORT_SYMBOL vmlinux 0x29537c9e alloc_chrdev_region +EXPORT_SYMBOL vmlinux 0x296c713d netpoll_send_skb_on_dev +EXPORT_SYMBOL vmlinux 0x29821eda devfreq_add_device +EXPORT_SYMBOL vmlinux 0x29840e3c dev_uc_add +EXPORT_SYMBOL vmlinux 0x298982cf up_write +EXPORT_SYMBOL vmlinux 0x29b19dd4 scsi_init_io +EXPORT_SYMBOL vmlinux 0x29cda4bf security_task_getsecid +EXPORT_SYMBOL vmlinux 0x29e6ae1f __xfrm_state_delete +EXPORT_SYMBOL vmlinux 0x2a28f247 pci_find_bus +EXPORT_SYMBOL vmlinux 0x2a303d4d check_signature +EXPORT_SYMBOL vmlinux 0x2a318ac0 xfrm_state_delete +EXPORT_SYMBOL vmlinux 0x2a343496 dev_uc_init +EXPORT_SYMBOL vmlinux 0x2a37d074 dma_pool_free +EXPORT_SYMBOL vmlinux 0x2a3ccd1f ipv4_specific +EXPORT_SYMBOL vmlinux 0x2a565a25 wait_for_completion_timeout +EXPORT_SYMBOL vmlinux 0x2a8eeae0 __i2c_transfer +EXPORT_SYMBOL vmlinux 0x2aad35de mb_cache_destroy +EXPORT_SYMBOL vmlinux 0x2ab0eec9 dev_uc_sync_multiple +EXPORT_SYMBOL vmlinux 0x2acf0feb vfs_fstat +EXPORT_SYMBOL vmlinux 0x2adad2f5 inet6_del_offload +EXPORT_SYMBOL vmlinux 0x2aece4f7 scsi_change_queue_depth +EXPORT_SYMBOL vmlinux 0x2b0ba2b0 scsi_sense_desc_find +EXPORT_SYMBOL vmlinux 0x2b280cf1 inet_getname +EXPORT_SYMBOL vmlinux 0x2b2ce78b kstrtos8 +EXPORT_SYMBOL vmlinux 0x2b47c5a0 redirty_page_for_writepage +EXPORT_SYMBOL vmlinux 0x2b5138aa pm860x_page_reg_write +EXPORT_SYMBOL vmlinux 0x2b54643a mmc_detect_card_removed +EXPORT_SYMBOL vmlinux 0x2b686aad max8998_write_reg +EXPORT_SYMBOL vmlinux 0x2b6e315e vga_con +EXPORT_SYMBOL vmlinux 0x2b75da15 mmc_calc_max_discard +EXPORT_SYMBOL vmlinux 0x2b79eb54 mmc_add_host +EXPORT_SYMBOL vmlinux 0x2b7b3a7e sock_create_kern +EXPORT_SYMBOL vmlinux 0x2b84e980 blk_start_request +EXPORT_SYMBOL vmlinux 0x2b9da7a4 genl_lock +EXPORT_SYMBOL vmlinux 0x2ba707a8 sysctl_tcp_low_latency +EXPORT_SYMBOL vmlinux 0x2bb55d6e acpi_remove_notify_handler +EXPORT_SYMBOL vmlinux 0x2be2489c sk_prot_clear_portaddr_nulls +EXPORT_SYMBOL vmlinux 0x2bfeb410 acpi_get_handle +EXPORT_SYMBOL vmlinux 0x2c0fe13b pnp_start_dev +EXPORT_SYMBOL vmlinux 0x2c139f47 jbd2_journal_check_available_features +EXPORT_SYMBOL vmlinux 0x2c256e1f input_scancode_to_scalar +EXPORT_SYMBOL vmlinux 0x2c44c6eb cros_ec_prepare_tx +EXPORT_SYMBOL vmlinux 0x2c52fa1d blk_alloc_queue_node +EXPORT_SYMBOL vmlinux 0x2c626981 blk_mq_delay_queue +EXPORT_SYMBOL vmlinux 0x2c72050f fbcon_set_bitops +EXPORT_SYMBOL vmlinux 0x2c720ed5 softnet_data +EXPORT_SYMBOL vmlinux 0x2c900d91 cpufreq_put_global_kobject +EXPORT_SYMBOL vmlinux 0x2ca0ebb9 simple_fill_super +EXPORT_SYMBOL vmlinux 0x2ca319a6 wrmsrl_safe_on_cpu +EXPORT_SYMBOL vmlinux 0x2cab29ac skb_abort_seq_read +EXPORT_SYMBOL vmlinux 0x2cc40ecf fence_remove_callback +EXPORT_SYMBOL vmlinux 0x2ccc3db2 scsi_register_interface +EXPORT_SYMBOL vmlinux 0x2cdc84d7 copy_from_iter +EXPORT_SYMBOL vmlinux 0x2cf35746 mntput +EXPORT_SYMBOL vmlinux 0x2cf73cb7 kstrtoll_from_user +EXPORT_SYMBOL vmlinux 0x2cfd6031 pci_enable_device +EXPORT_SYMBOL vmlinux 0x2d140a58 genl_unlock +EXPORT_SYMBOL vmlinux 0x2d144e21 rdmsrl_on_cpu +EXPORT_SYMBOL vmlinux 0x2d21a4ff pci_match_id +EXPORT_SYMBOL vmlinux 0x2d264943 iw_handler_get_spy +EXPORT_SYMBOL vmlinux 0x2d2fa2ad read_cache_page +EXPORT_SYMBOL vmlinux 0x2d30596c from_kqid_munged +EXPORT_SYMBOL vmlinux 0x2d3385d3 system_wq +EXPORT_SYMBOL vmlinux 0x2d4030ab simple_setattr +EXPORT_SYMBOL vmlinux 0x2d4121a3 pci_dev_get +EXPORT_SYMBOL vmlinux 0x2d512691 blk_get_request +EXPORT_SYMBOL vmlinux 0x2d575957 dev_set_mtu +EXPORT_SYMBOL vmlinux 0x2d67a889 agp_generic_alloc_user +EXPORT_SYMBOL vmlinux 0x2d6a8b3e scsi_remove_device +EXPORT_SYMBOL vmlinux 0x2d915f78 xfrm_state_unregister_afinfo +EXPORT_SYMBOL vmlinux 0x2d9479c2 abort_creds +EXPORT_SYMBOL vmlinux 0x2d993a6f bio_copy_data +EXPORT_SYMBOL vmlinux 0x2dcdfdeb bdi_set_max_ratio +EXPORT_SYMBOL vmlinux 0x2dd16564 arch_register_cpu +EXPORT_SYMBOL vmlinux 0x2dd77cb1 scsi_test_unit_ready +EXPORT_SYMBOL vmlinux 0x2dd9a36b flex_array_shrink +EXPORT_SYMBOL vmlinux 0x2dddb6ae _raw_write_lock_irqsave +EXPORT_SYMBOL vmlinux 0x2deda4a1 security_sk_classify_flow +EXPORT_SYMBOL vmlinux 0x2dedc4c2 acpi_format_exception +EXPORT_SYMBOL vmlinux 0x2def7f76 rtc_cmos_write +EXPORT_SYMBOL vmlinux 0x2e0d2f7f queue_work_on +EXPORT_SYMBOL vmlinux 0x2e17fdc7 tcp_md5_do_del +EXPORT_SYMBOL vmlinux 0x2e1ca751 clk_put +EXPORT_SYMBOL vmlinux 0x2e2b40d2 strncat +EXPORT_SYMBOL vmlinux 0x2e2ce9e0 sysctl_tcp_syncookies +EXPORT_SYMBOL vmlinux 0x2e5202f6 _raw_read_unlock +EXPORT_SYMBOL vmlinux 0x2e7ebfdb skb_queue_head +EXPORT_SYMBOL vmlinux 0x2ef63ad6 scsi_dev_info_list_del_keyed +EXPORT_SYMBOL vmlinux 0x2f00cd29 kmem_cache_alloc +EXPORT_SYMBOL vmlinux 0x2f03fc4b security_secmark_refcount_inc +EXPORT_SYMBOL vmlinux 0x2f064b55 allocate_resource +EXPORT_SYMBOL vmlinux 0x2f183514 iter_file_splice_write +EXPORT_SYMBOL vmlinux 0x2f2887af agp_generic_insert_memory +EXPORT_SYMBOL vmlinux 0x2f384db3 acpi_is_video_device +EXPORT_SYMBOL vmlinux 0x2f463da1 __alloc_page_frag +EXPORT_SYMBOL vmlinux 0x2f88f68c pci_disable_link_state +EXPORT_SYMBOL vmlinux 0x2f973e15 tcp_proc_register +EXPORT_SYMBOL vmlinux 0x2f99a793 gen_pool_create +EXPORT_SYMBOL vmlinux 0x2f9abeb0 blk_queue_merge_bvec +EXPORT_SYMBOL vmlinux 0x2fb3750c on_each_cpu_mask +EXPORT_SYMBOL vmlinux 0x2fb6de5d add_device_randomness +EXPORT_SYMBOL vmlinux 0x2fc55d88 kmem_cache_free +EXPORT_SYMBOL vmlinux 0x2fe252cc unregister_inet6addr_notifier +EXPORT_SYMBOL vmlinux 0x2ff063b5 acpi_get_name +EXPORT_SYMBOL vmlinux 0x30226ddf agp_device_command +EXPORT_SYMBOL vmlinux 0x303041c6 udp_flow_hashrnd +EXPORT_SYMBOL vmlinux 0x304895bc proc_dointvec_ms_jiffies +EXPORT_SYMBOL vmlinux 0x30625297 dev_alloc_name +EXPORT_SYMBOL vmlinux 0x3065bf90 security_path_link +EXPORT_SYMBOL vmlinux 0x307c2fd0 generic_check_addressable +EXPORT_SYMBOL vmlinux 0x3096be16 names_cachep +EXPORT_SYMBOL vmlinux 0x309b4452 tcf_em_register +EXPORT_SYMBOL vmlinux 0x30a80826 __kfifo_from_user +EXPORT_SYMBOL vmlinux 0x30ac650b abx500_register_ops +EXPORT_SYMBOL vmlinux 0x30b04526 ida_init +EXPORT_SYMBOL vmlinux 0x30bac1ab devfreq_remove_governor +EXPORT_SYMBOL vmlinux 0x30bdd335 rwsem_down_write_failed +EXPORT_SYMBOL vmlinux 0x30c1ec57 fasync_helper +EXPORT_SYMBOL vmlinux 0x30e74134 tty_termios_copy_hw +EXPORT_SYMBOL vmlinux 0x30f58103 dquot_reclaim_space_nodirty +EXPORT_SYMBOL vmlinux 0x3102d70b frontswap_curr_pages +EXPORT_SYMBOL vmlinux 0x312e1788 get_disk +EXPORT_SYMBOL vmlinux 0x313125a0 phy_connect_direct +EXPORT_SYMBOL vmlinux 0x3143270e invalidate_mapping_pages +EXPORT_SYMBOL vmlinux 0x3145216f pci_dev_present +EXPORT_SYMBOL vmlinux 0x31463af1 dm_unregister_target +EXPORT_SYMBOL vmlinux 0x3147857d default_red +EXPORT_SYMBOL vmlinux 0x316a033c unregister_filesystem +EXPORT_SYMBOL vmlinux 0x3174bd79 bitmap_clear +EXPORT_SYMBOL vmlinux 0x317584f6 scsi_execute +EXPORT_SYMBOL vmlinux 0x319e0726 __tracepoint_kmalloc +EXPORT_SYMBOL vmlinux 0x31a6991d phy_ethtool_gset +EXPORT_SYMBOL vmlinux 0x31b31f5c csum_partial_copy_nocheck +EXPORT_SYMBOL vmlinux 0x31c04e3c bdget +EXPORT_SYMBOL vmlinux 0x31c780e1 __page_cache_alloc +EXPORT_SYMBOL vmlinux 0x31ce05fb find_vma +EXPORT_SYMBOL vmlinux 0x31db3198 out_of_line_wait_on_bit +EXPORT_SYMBOL vmlinux 0x31e57792 tcf_hash_check +EXPORT_SYMBOL vmlinux 0x31e76b57 recalibrate_cpu_khz +EXPORT_SYMBOL vmlinux 0x31ecc5f3 scsi_host_get +EXPORT_SYMBOL vmlinux 0x3202435a wrmsr_safe_regs +EXPORT_SYMBOL vmlinux 0x321e737a __pagevec_release +EXPORT_SYMBOL vmlinux 0x32361f69 vlan_ioctl_set +EXPORT_SYMBOL vmlinux 0x32418054 loop_register_transfer +EXPORT_SYMBOL vmlinux 0x324e2a03 scsi_ioctl +EXPORT_SYMBOL vmlinux 0x324e942d backlight_device_unregister +EXPORT_SYMBOL vmlinux 0x3255f0b9 unregister_key_type +EXPORT_SYMBOL vmlinux 0x325cc553 neigh_sysctl_register +EXPORT_SYMBOL vmlinux 0x326425ca pci_unmap_biosrom +EXPORT_SYMBOL vmlinux 0x327c6cdc udp_prot +EXPORT_SYMBOL vmlinux 0x3282771a deactivate_locked_super +EXPORT_SYMBOL vmlinux 0x328c8f06 kthread_stop +EXPORT_SYMBOL vmlinux 0x328dfcf1 ip_options_rcv_srr +EXPORT_SYMBOL vmlinux 0x3299275d __set_page_dirty_buffers +EXPORT_SYMBOL vmlinux 0x32bcb6bb clk_add_alias +EXPORT_SYMBOL vmlinux 0x32c7e36a phy_drivers_unregister +EXPORT_SYMBOL vmlinux 0x32d9fd5a pci_lost_interrupt +EXPORT_SYMBOL vmlinux 0x32dd0dfe __dax_fault +EXPORT_SYMBOL vmlinux 0x32debb16 cpumask_next_and +EXPORT_SYMBOL vmlinux 0x32e4b96c simple_rename +EXPORT_SYMBOL vmlinux 0x32e6f1a0 acpi_video_backlight_string +EXPORT_SYMBOL vmlinux 0x32fa852e mipi_dsi_driver_register_full +EXPORT_SYMBOL vmlinux 0x33022ba1 lru_cache_add_file +EXPORT_SYMBOL vmlinux 0x333cb37c __kfifo_dma_out_prepare_r +EXPORT_SYMBOL vmlinux 0x334d79ef dev_uc_add_excl +EXPORT_SYMBOL vmlinux 0x3356b90b cpu_tss +EXPORT_SYMBOL vmlinux 0x3360c747 md_check_recovery +EXPORT_SYMBOL vmlinux 0x337e8d09 __dynamic_dev_dbg +EXPORT_SYMBOL vmlinux 0x33837504 scsicam_bios_param +EXPORT_SYMBOL vmlinux 0x3385c8b0 blk_mq_init_queue +EXPORT_SYMBOL vmlinux 0x338d6872 set_pages_x +EXPORT_SYMBOL vmlinux 0x33a4d691 dev_set_group +EXPORT_SYMBOL vmlinux 0x33b84f74 copy_page +EXPORT_SYMBOL vmlinux 0x33c7435c prandom_u32_state +EXPORT_SYMBOL vmlinux 0x33c7ca38 blk_execute_rq +EXPORT_SYMBOL vmlinux 0x33f0768c cpufreq_quick_get_max +EXPORT_SYMBOL vmlinux 0x33f6b987 devm_request_any_context_irq +EXPORT_SYMBOL vmlinux 0x33fcf44a __kfifo_out_r +EXPORT_SYMBOL vmlinux 0x34184afe current_kernel_time +EXPORT_SYMBOL vmlinux 0x341cbed2 cpu_present_mask +EXPORT_SYMBOL vmlinux 0x3439f954 cookie_ecn_ok +EXPORT_SYMBOL vmlinux 0x34434a2e blk_rq_init +EXPORT_SYMBOL vmlinux 0x344f3ebb __sock_tx_timestamp +EXPORT_SYMBOL vmlinux 0x345b549e compat_ip_setsockopt +EXPORT_SYMBOL vmlinux 0x3465caa3 cpu_maps_update_begin +EXPORT_SYMBOL vmlinux 0x347013de nla_validate +EXPORT_SYMBOL vmlinux 0x3487205f blk_queue_max_discard_sectors +EXPORT_SYMBOL vmlinux 0x349c4f86 do_splice_from +EXPORT_SYMBOL vmlinux 0x349cba85 strchr +EXPORT_SYMBOL vmlinux 0x34a842e9 fb_set_var +EXPORT_SYMBOL vmlinux 0x34cc9cef delete_from_page_cache +EXPORT_SYMBOL vmlinux 0x34ec4898 tty_hung_up_p +EXPORT_SYMBOL vmlinux 0x34f16815 downgrade_write +EXPORT_SYMBOL vmlinux 0x34f3484e security_tun_dev_attach_queue +EXPORT_SYMBOL vmlinux 0x34f9bb51 jbd2_journal_lock_updates +EXPORT_SYMBOL vmlinux 0x34fd00b9 blk_queue_init_tags +EXPORT_SYMBOL vmlinux 0x3516c65a input_set_keycode +EXPORT_SYMBOL vmlinux 0x3517383e register_reboot_notifier +EXPORT_SYMBOL vmlinux 0x35262ad7 pci_biosrom_size +EXPORT_SYMBOL vmlinux 0x3539f11b match_strlcpy +EXPORT_SYMBOL vmlinux 0x353e21e3 acpi_bios_warning +EXPORT_SYMBOL vmlinux 0x354b1983 devm_release_resource +EXPORT_SYMBOL vmlinux 0x355ba7c4 blk_queue_update_dma_alignment +EXPORT_SYMBOL vmlinux 0x356461c8 rtc_time64_to_tm +EXPORT_SYMBOL vmlinux 0x3564e315 nonseekable_open +EXPORT_SYMBOL vmlinux 0x35888805 xfrm6_rcv_cb +EXPORT_SYMBOL vmlinux 0x35931145 tcp_parse_options +EXPORT_SYMBOL vmlinux 0x35a88f28 zlib_inflateInit2 +EXPORT_SYMBOL vmlinux 0x35a967e6 netif_carrier_off +EXPORT_SYMBOL vmlinux 0x35b08cc3 d_alloc +EXPORT_SYMBOL vmlinux 0x35de9638 keyring_search +EXPORT_SYMBOL vmlinux 0x3604f0c7 dev_uc_sync +EXPORT_SYMBOL vmlinux 0x360b1afe probe_irq_mask +EXPORT_SYMBOL vmlinux 0x36166d66 __pskb_pull_tail +EXPORT_SYMBOL vmlinux 0x3619c930 generic_readlink +EXPORT_SYMBOL vmlinux 0x361eb3e3 scsi_host_set_state +EXPORT_SYMBOL vmlinux 0x36327579 scsi_execute_req_flags +EXPORT_SYMBOL vmlinux 0x3648fa7e jbd2_journal_invalidatepage +EXPORT_SYMBOL vmlinux 0x36533e63 nobh_write_begin +EXPORT_SYMBOL vmlinux 0x366095c8 input_set_abs_params +EXPORT_SYMBOL vmlinux 0x36638a25 netdev_upper_get_next_dev_rcu +EXPORT_SYMBOL vmlinux 0x366531d5 __napi_schedule_irqoff +EXPORT_SYMBOL vmlinux 0x3678d0d6 inet_select_addr +EXPORT_SYMBOL vmlinux 0x3687f929 simple_transaction_get +EXPORT_SYMBOL vmlinux 0x3698528b __init_rwsem +EXPORT_SYMBOL vmlinux 0x369e1115 kstrtou8_from_user +EXPORT_SYMBOL vmlinux 0x36bd681b groups_alloc +EXPORT_SYMBOL vmlinux 0x36c2e378 vfs_writev +EXPORT_SYMBOL vmlinux 0x36c66098 i2c_get_adapter +EXPORT_SYMBOL vmlinux 0x36ca9311 simple_transaction_set +EXPORT_SYMBOL vmlinux 0x36da9b08 tcp_v4_md5_hash_skb +EXPORT_SYMBOL vmlinux 0x36dfedd3 bdev_stack_limits +EXPORT_SYMBOL vmlinux 0x36fb8262 __dst_free +EXPORT_SYMBOL vmlinux 0x3701a196 csum_partial_copy_to_user +EXPORT_SYMBOL vmlinux 0x37054897 __kernel_write +EXPORT_SYMBOL vmlinux 0x3715e788 kernel_connect +EXPORT_SYMBOL vmlinux 0x3719c9b6 pci_try_set_mwi +EXPORT_SYMBOL vmlinux 0x37318d8a inet_recvmsg +EXPORT_SYMBOL vmlinux 0x373d8d42 agp_backend_release +EXPORT_SYMBOL vmlinux 0x3744cf36 vmalloc_to_pfn +EXPORT_SYMBOL vmlinux 0x374cab79 skb_append_datato_frags +EXPORT_SYMBOL vmlinux 0x377e83d4 jbd2_journal_get_undo_access +EXPORT_SYMBOL vmlinux 0x37911652 simple_pin_fs +EXPORT_SYMBOL vmlinux 0x37ac5758 bh_submit_read +EXPORT_SYMBOL vmlinux 0x37af3190 dm_table_run_md_queue_async +EXPORT_SYMBOL vmlinux 0x37befc70 jiffies_to_msecs +EXPORT_SYMBOL vmlinux 0x37d333db release_firmware +EXPORT_SYMBOL vmlinux 0x37db8f19 dmi_get_date +EXPORT_SYMBOL vmlinux 0x37e1df72 pci_enable_device_io +EXPORT_SYMBOL vmlinux 0x37eb6dd5 kern_path +EXPORT_SYMBOL vmlinux 0x37ec297f scsi_unregister +EXPORT_SYMBOL vmlinux 0x37f69569 rtnl_create_link +EXPORT_SYMBOL vmlinux 0x38022ec4 bioset_free +EXPORT_SYMBOL vmlinux 0x38099e13 wrmsrl_on_cpu +EXPORT_SYMBOL vmlinux 0x3810345a __netlink_ns_capable +EXPORT_SYMBOL vmlinux 0x381274aa padata_set_cpumasks +EXPORT_SYMBOL vmlinux 0x381a798a setup_max_cpus +EXPORT_SYMBOL vmlinux 0x3822ea86 neigh_parms_release +EXPORT_SYMBOL vmlinux 0x38570cfd pci_bus_put +EXPORT_SYMBOL vmlinux 0x38706019 inc_nlink +EXPORT_SYMBOL vmlinux 0x3882b0c7 pci_find_capability +EXPORT_SYMBOL vmlinux 0x38869d88 kstat +EXPORT_SYMBOL vmlinux 0x38a71b7e pci_free_resource_list +EXPORT_SYMBOL vmlinux 0x38a9f7c5 in6addr_loopback +EXPORT_SYMBOL vmlinux 0x38af23d7 blk_limits_max_hw_sectors +EXPORT_SYMBOL vmlinux 0x38d016d7 netlink_rcv_skb +EXPORT_SYMBOL vmlinux 0x38d237ef mmc_register_driver +EXPORT_SYMBOL vmlinux 0x38d321c0 pci_disable_msi +EXPORT_SYMBOL vmlinux 0x38dc62e5 elevator_change +EXPORT_SYMBOL vmlinux 0x38f33bed dump_fpu +EXPORT_SYMBOL vmlinux 0x38f7d8a3 vme_irq_generate +EXPORT_SYMBOL vmlinux 0x3928efe9 __per_cpu_offset +EXPORT_SYMBOL vmlinux 0x3939f8f0 rfkill_pause_polling +EXPORT_SYMBOL vmlinux 0x393d4de9 crc32_le +EXPORT_SYMBOL vmlinux 0x39461d6a in_egroup_p +EXPORT_SYMBOL vmlinux 0x39542d72 flock_lock_inode_wait +EXPORT_SYMBOL vmlinux 0x3955fcf6 __kfifo_in_r +EXPORT_SYMBOL vmlinux 0x39823473 genphy_config_init +EXPORT_SYMBOL vmlinux 0x39841cac __skb_gso_segment +EXPORT_SYMBOL vmlinux 0x3988c2c8 ipv6_mc_check_mld +EXPORT_SYMBOL vmlinux 0x398c7c58 locks_init_lock +EXPORT_SYMBOL vmlinux 0x39991865 icmp_global_allow +EXPORT_SYMBOL vmlinux 0x399ad043 __kfifo_dma_out_finish_r +EXPORT_SYMBOL vmlinux 0x39a055f3 acpi_remove_gpe_handler +EXPORT_SYMBOL vmlinux 0x39b52d19 __bitmap_and +EXPORT_SYMBOL vmlinux 0x39bd9bb5 vc_resize +EXPORT_SYMBOL vmlinux 0x39e0557a devm_get_gpiod_from_child +EXPORT_SYMBOL vmlinux 0x39e509e3 pnp_activate_dev +EXPORT_SYMBOL vmlinux 0x39f1c2f4 ida_get_new_above +EXPORT_SYMBOL vmlinux 0x3a08475f platform_thermal_notify +EXPORT_SYMBOL vmlinux 0x3a0abef4 xfrm_state_delete_tunnel +EXPORT_SYMBOL vmlinux 0x3a223c11 dcbnl_cee_notify +EXPORT_SYMBOL vmlinux 0x3a32839e intel_gtt_chipset_flush +EXPORT_SYMBOL vmlinux 0x3a3b30ce tty_kref_put +EXPORT_SYMBOL vmlinux 0x3a3dc1c8 dev_emerg +EXPORT_SYMBOL vmlinux 0x3a572bdf framebuffer_release +EXPORT_SYMBOL vmlinux 0x3a7cc7ef jbd2_journal_init_dev +EXPORT_SYMBOL vmlinux 0x3a9b6fb9 blk_unregister_region +EXPORT_SYMBOL vmlinux 0x3aaf5dc6 inetdev_by_index +EXPORT_SYMBOL vmlinux 0x3ac12d38 dquot_quota_on +EXPORT_SYMBOL vmlinux 0x3ae8a102 fbcon_rotate_ud +EXPORT_SYMBOL vmlinux 0x3af5fca4 ip_setsockopt +EXPORT_SYMBOL vmlinux 0x3b03ef30 make_kprojid +EXPORT_SYMBOL vmlinux 0x3b17ae01 cdrom_release +EXPORT_SYMBOL vmlinux 0x3b3384e6 nf_ip_checksum +EXPORT_SYMBOL vmlinux 0x3b459110 nf_log_unbind_pf +EXPORT_SYMBOL vmlinux 0x3b58cb05 blk_queue_max_segments +EXPORT_SYMBOL vmlinux 0x3b5eb9cb blk_queue_physical_block_size +EXPORT_SYMBOL vmlinux 0x3b640ea9 mipi_dsi_host_unregister +EXPORT_SYMBOL vmlinux 0x3b644591 __bitmap_shift_left +EXPORT_SYMBOL vmlinux 0x3b6f6cd2 udp_table +EXPORT_SYMBOL vmlinux 0x3b854958 dst_discard_sk +EXPORT_SYMBOL vmlinux 0x3bb5114a prepare_to_wait +EXPORT_SYMBOL vmlinux 0x3bb90cd3 pagecache_isize_extended +EXPORT_SYMBOL vmlinux 0x3bc7b6b3 __put_cred +EXPORT_SYMBOL vmlinux 0x3be94b95 truncate_inode_pages_final +EXPORT_SYMBOL vmlinux 0x3beaab4b mmc_gpio_request_cd +EXPORT_SYMBOL vmlinux 0x3beb0ae5 ipv6_setsockopt +EXPORT_SYMBOL vmlinux 0x3bee0c25 netlink_kernel_release +EXPORT_SYMBOL vmlinux 0x3bfc0c31 bitmap_endwrite +EXPORT_SYMBOL vmlinux 0x3bfea9ea lock_sock_nested +EXPORT_SYMBOL vmlinux 0x3c113ced skb_insert +EXPORT_SYMBOL vmlinux 0x3c1ec007 blk_mq_can_queue +EXPORT_SYMBOL vmlinux 0x3c253f21 __cleancache_invalidate_fs +EXPORT_SYMBOL vmlinux 0x3c28435f scsi_device_set_state +EXPORT_SYMBOL vmlinux 0x3c2b36f1 vlan_vids_del_by_dev +EXPORT_SYMBOL vmlinux 0x3c3fce39 __local_bh_enable_ip +EXPORT_SYMBOL vmlinux 0x3c45fc16 mmc_gpio_request_ro +EXPORT_SYMBOL vmlinux 0x3c483012 radix_tree_delete +EXPORT_SYMBOL vmlinux 0x3c60c691 rawv6_mh_filter_register +EXPORT_SYMBOL vmlinux 0x3c80c06c kstrtoull +EXPORT_SYMBOL vmlinux 0x3caf0d8e sock_register +EXPORT_SYMBOL vmlinux 0x3ce3ccb4 get_agp_version +EXPORT_SYMBOL vmlinux 0x3ce4ca6f disable_irq +EXPORT_SYMBOL vmlinux 0x3cef8203 udp_push_pending_frames +EXPORT_SYMBOL vmlinux 0x3d05e423 __quota_error +EXPORT_SYMBOL vmlinux 0x3d0b168b udp_proc_unregister +EXPORT_SYMBOL vmlinux 0x3d326c64 fput +EXPORT_SYMBOL vmlinux 0x3d3ae1f8 __netlink_kernel_create +EXPORT_SYMBOL vmlinux 0x3d4dc4ff dev_getfirstbyhwtype +EXPORT_SYMBOL vmlinux 0x3d555811 hdmi_infoframe_log +EXPORT_SYMBOL vmlinux 0x3d56a8a8 phy_register_fixup_for_uid +EXPORT_SYMBOL vmlinux 0x3d581546 __frontswap_store +EXPORT_SYMBOL vmlinux 0x3d65e7a0 pci_bus_write_config_word +EXPORT_SYMBOL vmlinux 0x3d7c1ed7 msrs_alloc +EXPORT_SYMBOL vmlinux 0x3d7fc7c9 xfrm_state_walk +EXPORT_SYMBOL vmlinux 0x3d99abde param_set_byte +EXPORT_SYMBOL vmlinux 0x3d9a4bb3 prepare_kernel_cred +EXPORT_SYMBOL vmlinux 0x3d9ee9f0 clear_page +EXPORT_SYMBOL vmlinux 0x3da171f9 pci_mem_start +EXPORT_SYMBOL vmlinux 0x3dbf36c9 sg_copy_buffer +EXPORT_SYMBOL vmlinux 0x3dcb88a0 irq_set_handler_data +EXPORT_SYMBOL vmlinux 0x3dd49836 eth_header_cache_update +EXPORT_SYMBOL vmlinux 0x3de5a99d inode_change_ok +EXPORT_SYMBOL vmlinux 0x3dfc897c seq_hlist_start_head +EXPORT_SYMBOL vmlinux 0x3e07be8d dev_get_by_index +EXPORT_SYMBOL vmlinux 0x3e2ae3a8 acpi_release_global_lock +EXPORT_SYMBOL vmlinux 0x3e617b60 __alloc_skb +EXPORT_SYMBOL vmlinux 0x3e708838 bdi_init +EXPORT_SYMBOL vmlinux 0x3e882943 pcibios_align_resource +EXPORT_SYMBOL vmlinux 0x3e90c73a make_bad_inode +EXPORT_SYMBOL vmlinux 0x3e9110fa __hw_addr_unsync +EXPORT_SYMBOL vmlinux 0x3e95083c vme_slave_get +EXPORT_SYMBOL vmlinux 0x3e9dc07a __task_pid_nr_ns +EXPORT_SYMBOL vmlinux 0x3ea9baff ip_getsockopt +EXPORT_SYMBOL vmlinux 0x3ec3596b filemap_write_and_wait +EXPORT_SYMBOL vmlinux 0x3ef13841 generic_end_io_acct +EXPORT_SYMBOL vmlinux 0x3ef9a742 twl6040_get_sysclk +EXPORT_SYMBOL vmlinux 0x3efe7dc9 param_get_ushort +EXPORT_SYMBOL vmlinux 0x3f0546a8 ioread32_rep +EXPORT_SYMBOL vmlinux 0x3f0c8fc5 netpoll_parse_options +EXPORT_SYMBOL vmlinux 0x3f0cc7b1 devfreq_monitor_start +EXPORT_SYMBOL vmlinux 0x3f0d9f32 _raw_read_trylock +EXPORT_SYMBOL vmlinux 0x3f19a177 setattr_copy +EXPORT_SYMBOL vmlinux 0x3f20ca97 rtc_lock +EXPORT_SYMBOL vmlinux 0x3f2a2c88 alloc_buffer_head +EXPORT_SYMBOL vmlinux 0x3f2e02b6 mpage_writepages +EXPORT_SYMBOL vmlinux 0x3f325f86 blk_recount_segments +EXPORT_SYMBOL vmlinux 0x3f42da5d _raw_write_unlock_irq +EXPORT_SYMBOL vmlinux 0x3f4547a7 put_unused_fd +EXPORT_SYMBOL vmlinux 0x3f4c2722 bitmap_unplug +EXPORT_SYMBOL vmlinux 0x3f4c7ab2 vm_mmap +EXPORT_SYMBOL vmlinux 0x3f6620cf skb_vlan_untag +EXPORT_SYMBOL vmlinux 0x3f89e229 netlink_ack +EXPORT_SYMBOL vmlinux 0x3fa69fcc param_set_uint +EXPORT_SYMBOL vmlinux 0x3faa1a33 uart_remove_one_port +EXPORT_SYMBOL vmlinux 0x3fc03aa2 ip6_route_output +EXPORT_SYMBOL vmlinux 0x3fcb9a10 mipi_dsi_detach +EXPORT_SYMBOL vmlinux 0x3fe2ccbe memweight +EXPORT_SYMBOL vmlinux 0x3fec048f sg_next +EXPORT_SYMBOL vmlinux 0x402b2894 netdev_emerg +EXPORT_SYMBOL vmlinux 0x402b8281 __request_module +EXPORT_SYMBOL vmlinux 0x4039918a clk_register_clkdev +EXPORT_SYMBOL vmlinux 0x405c1144 get_seconds +EXPORT_SYMBOL vmlinux 0x408ff42c gen_pool_dma_alloc +EXPORT_SYMBOL vmlinux 0x40931273 sk_reset_timer +EXPORT_SYMBOL vmlinux 0x40973662 sysctl_udp_mem +EXPORT_SYMBOL vmlinux 0x4097fa45 acpi_read_bit_register +EXPORT_SYMBOL vmlinux 0x409873e3 tty_termios_baud_rate +EXPORT_SYMBOL vmlinux 0x40a27c37 scsi_dev_info_remove_list +EXPORT_SYMBOL vmlinux 0x40a9b349 vzalloc +EXPORT_SYMBOL vmlinux 0x40c01859 gen_pool_best_fit +EXPORT_SYMBOL vmlinux 0x40c7247c si_meminfo +EXPORT_SYMBOL vmlinux 0x40c7e396 udp6_csum_init +EXPORT_SYMBOL vmlinux 0x40c89d46 acpi_get_table_by_index +EXPORT_SYMBOL vmlinux 0x40d04664 console_trylock +EXPORT_SYMBOL vmlinux 0x40d3a4ee tcp_poll +EXPORT_SYMBOL vmlinux 0x40d59096 unregister_restart_handler +EXPORT_SYMBOL vmlinux 0x40d6dda8 set_anon_super +EXPORT_SYMBOL vmlinux 0x40f262db blk_queue_bounce_limit +EXPORT_SYMBOL vmlinux 0x41154b95 rawv6_mh_filter_unregister +EXPORT_SYMBOL vmlinux 0x41161cb7 scsi_device_quiesce +EXPORT_SYMBOL vmlinux 0x4123e5be neigh_ifdown +EXPORT_SYMBOL vmlinux 0x412d34dd __napi_complete +EXPORT_SYMBOL vmlinux 0x412f19c6 xfrm_register_km +EXPORT_SYMBOL vmlinux 0x41482d8b strndup_user +EXPORT_SYMBOL vmlinux 0x41731062 amd_iommu_domain_clear_gcr3 +EXPORT_SYMBOL vmlinux 0x417def2d __getblk_slow +EXPORT_SYMBOL vmlinux 0x417dfe49 ip6_frag_match +EXPORT_SYMBOL vmlinux 0x4188d439 neigh_rand_reach_time +EXPORT_SYMBOL vmlinux 0x4194ecb6 __skb_flow_get_ports +EXPORT_SYMBOL vmlinux 0x41b27c27 dquot_alloc +EXPORT_SYMBOL vmlinux 0x41c0b354 blk_mq_start_request +EXPORT_SYMBOL vmlinux 0x41dbd57e netdev_class_remove_file_ns +EXPORT_SYMBOL vmlinux 0x41df784e jbd2_journal_release_jbd_inode +EXPORT_SYMBOL vmlinux 0x41e42512 register_framebuffer +EXPORT_SYMBOL vmlinux 0x41ea21ad bdevname +EXPORT_SYMBOL vmlinux 0x420722b6 iov_iter_bvec +EXPORT_SYMBOL vmlinux 0x4215aa35 padata_unregister_cpumask_notifier +EXPORT_SYMBOL vmlinux 0x42160169 flush_workqueue +EXPORT_SYMBOL vmlinux 0x42350e8d ucs2_strlen +EXPORT_SYMBOL vmlinux 0x4248ae3c single_task_running +EXPORT_SYMBOL vmlinux 0x42493a5f input_release_device +EXPORT_SYMBOL vmlinux 0x424d3620 zlib_inflateIncomp +EXPORT_SYMBOL vmlinux 0x42595e58 vgacon_text_force +EXPORT_SYMBOL vmlinux 0x427a56c3 poll_freewait +EXPORT_SYMBOL vmlinux 0x427c5808 filemap_map_pages +EXPORT_SYMBOL vmlinux 0x4289fed6 proc_mkdir_mode +EXPORT_SYMBOL vmlinux 0x428dc847 netdev_alert +EXPORT_SYMBOL vmlinux 0x429ae826 tcp_req_err +EXPORT_SYMBOL vmlinux 0x429d1122 kernel_listen +EXPORT_SYMBOL vmlinux 0x42a1b208 gen_pool_first_fit +EXPORT_SYMBOL vmlinux 0x42a66bc7 dquot_mark_dquot_dirty +EXPORT_SYMBOL vmlinux 0x42ae77ec sock_no_accept +EXPORT_SYMBOL vmlinux 0x42b66425 __find_get_block +EXPORT_SYMBOL vmlinux 0x42b883bb bmap +EXPORT_SYMBOL vmlinux 0x42c8de35 ioremap_nocache +EXPORT_SYMBOL vmlinux 0x42e894ed __sb_end_write +EXPORT_SYMBOL vmlinux 0x42f6c336 try_module_get +EXPORT_SYMBOL vmlinux 0x42f7ec19 registered_fb +EXPORT_SYMBOL vmlinux 0x43000b30 dev_crit +EXPORT_SYMBOL vmlinux 0x4302d0eb free_pages +EXPORT_SYMBOL vmlinux 0x4304491b scsi_eh_restore_cmnd +EXPORT_SYMBOL vmlinux 0x431da830 compat_nf_getsockopt +EXPORT_SYMBOL vmlinux 0x4337b26d ppp_input_error +EXPORT_SYMBOL vmlinux 0x4347535b mutex_unlock +EXPORT_SYMBOL vmlinux 0x434c1b5d skb_checksum +EXPORT_SYMBOL vmlinux 0x4351577a fb_parse_edid +EXPORT_SYMBOL vmlinux 0x435a22b7 md_cluster_mod +EXPORT_SYMBOL vmlinux 0x436197ad bio_map_kern +EXPORT_SYMBOL vmlinux 0x4366419e blk_mq_alloc_request +EXPORT_SYMBOL vmlinux 0x436c2179 iowrite32 +EXPORT_SYMBOL vmlinux 0x436cb707 __get_page_tail +EXPORT_SYMBOL vmlinux 0x4382939b vme_master_request +EXPORT_SYMBOL vmlinux 0x438610bd security_tun_dev_alloc_security +EXPORT_SYMBOL vmlinux 0x438937df inet_frags_fini +EXPORT_SYMBOL vmlinux 0x43ad0e05 jbd2__journal_restart +EXPORT_SYMBOL vmlinux 0x43b0c9c3 preempt_schedule +EXPORT_SYMBOL vmlinux 0x43c407ee freeze_super +EXPORT_SYMBOL vmlinux 0x43c4942d crypto_sha256_finup +EXPORT_SYMBOL vmlinux 0x43cfe6cb lockref_put_or_lock +EXPORT_SYMBOL vmlinux 0x43e7d460 xfrm_state_walk_done +EXPORT_SYMBOL vmlinux 0x43e9ce01 i2c_smbus_read_byte +EXPORT_SYMBOL vmlinux 0x43f23311 dm_table_get_md +EXPORT_SYMBOL vmlinux 0x4405ac2c devfreq_monitor_stop +EXPORT_SYMBOL vmlinux 0x4411c503 prandom_seed +EXPORT_SYMBOL vmlinux 0x44235e88 dec_zone_page_state +EXPORT_SYMBOL vmlinux 0x4435c1ed ip_check_defrag +EXPORT_SYMBOL vmlinux 0x4456737a __dynamic_netdev_dbg +EXPORT_SYMBOL vmlinux 0x446d8ef4 blk_alloc_queue +EXPORT_SYMBOL vmlinux 0x4489da02 register_sysctl_table +EXPORT_SYMBOL vmlinux 0x448e085f prepare_to_wait_exclusive +EXPORT_SYMBOL vmlinux 0x448eac3e kmemdup +EXPORT_SYMBOL vmlinux 0x4499186c kobject_get +EXPORT_SYMBOL vmlinux 0x449ad0a7 memcmp +EXPORT_SYMBOL vmlinux 0x449fe84b acpi_set_firmware_waking_vectors +EXPORT_SYMBOL vmlinux 0x44a81d5f acpi_evaluate_object +EXPORT_SYMBOL vmlinux 0x44aaf30f tsc_khz +EXPORT_SYMBOL vmlinux 0x44b1d426 __dynamic_pr_debug +EXPORT_SYMBOL vmlinux 0x44b2147c filp_close +EXPORT_SYMBOL vmlinux 0x44b3b4cd dquot_alloc_inode +EXPORT_SYMBOL vmlinux 0x44cee924 blk_mq_init_allocated_queue +EXPORT_SYMBOL vmlinux 0x44e9a829 match_token +EXPORT_SYMBOL vmlinux 0x44f69964 _raw_read_unlock_bh +EXPORT_SYMBOL vmlinux 0x44ff993d param_get_short +EXPORT_SYMBOL vmlinux 0x45081703 ec_get_handle +EXPORT_SYMBOL vmlinux 0x45318986 fixed_size_llseek +EXPORT_SYMBOL vmlinux 0x453c8403 pci_msi_enabled +EXPORT_SYMBOL vmlinux 0x4555c13b padata_do_serial +EXPORT_SYMBOL vmlinux 0x456ecec1 xfrm4_rcv +EXPORT_SYMBOL vmlinux 0x4578f528 __kfifo_to_user +EXPORT_SYMBOL vmlinux 0x45817d53 __dec_zone_page_state +EXPORT_SYMBOL vmlinux 0x4590d5d0 amd_iommu_domain_set_gcr3 +EXPORT_SYMBOL vmlinux 0x45993ab5 get_thermal_instance +EXPORT_SYMBOL vmlinux 0x45a6be13 cpufreq_sysfs_remove_file +EXPORT_SYMBOL vmlinux 0x45a765cf pci_add_resource +EXPORT_SYMBOL vmlinux 0x45c61ef0 acpi_bus_register_driver +EXPORT_SYMBOL vmlinux 0x45cbfd14 pci_bus_read_config_byte +EXPORT_SYMBOL vmlinux 0x45cf7684 elevator_alloc +EXPORT_SYMBOL vmlinux 0x45cfacba unload_nls +EXPORT_SYMBOL vmlinux 0x45eb64c0 tcp_md5_hash_header +EXPORT_SYMBOL vmlinux 0x45f8dfb5 max8998_bulk_read +EXPORT_SYMBOL vmlinux 0x45f9baa7 keyring_clear +EXPORT_SYMBOL vmlinux 0x4604a43a mem_section +EXPORT_SYMBOL vmlinux 0x461ac773 kstrtol_from_user +EXPORT_SYMBOL vmlinux 0x4629334c __preempt_count +EXPORT_SYMBOL vmlinux 0x465237d4 __devm_request_region +EXPORT_SYMBOL vmlinux 0x465cab34 secure_ipv6_port_ephemeral +EXPORT_SYMBOL vmlinux 0x46638aa3 sk_stream_wait_connect +EXPORT_SYMBOL vmlinux 0x46649cd1 vme_lm_set +EXPORT_SYMBOL vmlinux 0x466c14a7 __delay +EXPORT_SYMBOL vmlinux 0x46729ee9 inet6_add_protocol +EXPORT_SYMBOL vmlinux 0x467dc199 twl6040_set_bits +EXPORT_SYMBOL vmlinux 0x467df16d netdev_rss_key_fill +EXPORT_SYMBOL vmlinux 0x468326e5 ppp_unregister_channel +EXPORT_SYMBOL vmlinux 0x468a08d7 dev_add_offload +EXPORT_SYMBOL vmlinux 0x469624dc audit_log_start +EXPORT_SYMBOL vmlinux 0x46a1cf57 __napi_schedule +EXPORT_SYMBOL vmlinux 0x46c47fb6 __node_distance +EXPORT_SYMBOL vmlinux 0x46c81c44 nd_region_release_lane +EXPORT_SYMBOL vmlinux 0x46c83945 uart_suspend_port +EXPORT_SYMBOL vmlinux 0x46c9b72b tcp_check_req +EXPORT_SYMBOL vmlinux 0x46cf9723 blk_integrity_merge_bio +EXPORT_SYMBOL vmlinux 0x46d35608 mmc_wait_for_cmd +EXPORT_SYMBOL vmlinux 0x46ddb4e3 send_sig +EXPORT_SYMBOL vmlinux 0x46df9375 mmc_remove_host +EXPORT_SYMBOL vmlinux 0x46ec6409 d_instantiate_no_diralias +EXPORT_SYMBOL vmlinux 0x46feb099 dm_read_arg +EXPORT_SYMBOL vmlinux 0x46ff178e dquot_scan_active +EXPORT_SYMBOL vmlinux 0x47416e14 cpu_rmap_add +EXPORT_SYMBOL vmlinux 0x475f010b acpi_purge_cached_objects +EXPORT_SYMBOL vmlinux 0x476d8696 inet_frag_kill +EXPORT_SYMBOL vmlinux 0x4775e9c3 pci_msi_vec_count +EXPORT_SYMBOL vmlinux 0x4779dd09 sock_no_listen +EXPORT_SYMBOL vmlinux 0x477e6dcb amd_iommu_pc_get_set_reg_val +EXPORT_SYMBOL vmlinux 0x478d10b2 ht_destroy_irq +EXPORT_SYMBOL vmlinux 0x47939e0d __tasklet_hi_schedule +EXPORT_SYMBOL vmlinux 0x479c3c86 find_next_zero_bit +EXPORT_SYMBOL vmlinux 0x479dbd24 nobh_write_end +EXPORT_SYMBOL vmlinux 0x47cb1a54 jbd2_journal_clear_err +EXPORT_SYMBOL vmlinux 0x47edf38e dquot_set_dqinfo +EXPORT_SYMBOL vmlinux 0x47f83f96 sock_no_shutdown +EXPORT_SYMBOL vmlinux 0x47fc30b2 single_open_size +EXPORT_SYMBOL vmlinux 0x480c1edd __sock_create +EXPORT_SYMBOL vmlinux 0x480e2987 clkdev_add +EXPORT_SYMBOL vmlinux 0x48193639 acpi_lid_open +EXPORT_SYMBOL vmlinux 0x481cb9ab acpi_enter_sleep_state_prep +EXPORT_SYMBOL vmlinux 0x482115fc vfs_path_lookup +EXPORT_SYMBOL vmlinux 0x4826d4d8 sync_inode +EXPORT_SYMBOL vmlinux 0x4841bdee strnchr +EXPORT_SYMBOL vmlinux 0x48459aa5 get_user_pages +EXPORT_SYMBOL vmlinux 0x4859b8bb rtc_year_days +EXPORT_SYMBOL vmlinux 0x4867fc0a pci_alloc_dev +EXPORT_SYMBOL vmlinux 0x486c5423 dmam_free_noncoherent +EXPORT_SYMBOL vmlinux 0x4874ac93 security_inode_notifysecctx +EXPORT_SYMBOL vmlinux 0x48b99a13 vme_lm_free +EXPORT_SYMBOL vmlinux 0x48d50e79 amd_iommu_register_ppr_notifier +EXPORT_SYMBOL vmlinux 0x48da77b6 pci_scan_bus +EXPORT_SYMBOL vmlinux 0x48dada6e clear_page_dirty_for_io +EXPORT_SYMBOL vmlinux 0x48dc04a4 sk_alloc +EXPORT_SYMBOL vmlinux 0x48e3ee48 inet_sk_rx_dst_set +EXPORT_SYMBOL vmlinux 0x49045426 icmp_err_convert +EXPORT_SYMBOL vmlinux 0x491ea326 generic_shutdown_super +EXPORT_SYMBOL vmlinux 0x491f9a34 sg_miter_skip +EXPORT_SYMBOL vmlinux 0x4946b92b __sk_mem_reclaim +EXPORT_SYMBOL vmlinux 0x494e3393 vm_get_page_prot +EXPORT_SYMBOL vmlinux 0x495c96f8 posix_acl_init +EXPORT_SYMBOL vmlinux 0x49603fb8 security_sb_copy_data +EXPORT_SYMBOL vmlinux 0x4980d00c blk_queue_segment_boundary +EXPORT_SYMBOL vmlinux 0x498f3751 mmc_gpio_get_ro +EXPORT_SYMBOL vmlinux 0x499c06a3 blk_queue_max_hw_sectors +EXPORT_SYMBOL vmlinux 0x49b07aec tcp_select_initial_window +EXPORT_SYMBOL vmlinux 0x49b163b8 acpi_bus_scan +EXPORT_SYMBOL vmlinux 0x49b66ee5 qdisc_reset +EXPORT_SYMBOL vmlinux 0x49f71442 dev_close_many +EXPORT_SYMBOL vmlinux 0x4a13d2eb unregister_qdisc +EXPORT_SYMBOL vmlinux 0x4a40ebf0 acl_by_type +EXPORT_SYMBOL vmlinux 0x4a9e49bb ip6_xmit +EXPORT_SYMBOL vmlinux 0x4abbe3c2 vm_brk +EXPORT_SYMBOL vmlinux 0x4abd6c7a genl_unregister_family +EXPORT_SYMBOL vmlinux 0x4acd93d3 release_resource +EXPORT_SYMBOL vmlinux 0x4afe9a77 scsi_partsize +EXPORT_SYMBOL vmlinux 0x4b085dbf agp3_generic_configure +EXPORT_SYMBOL vmlinux 0x4b3b8807 mmc_set_blocklen +EXPORT_SYMBOL vmlinux 0x4b3d8f0a phy_print_status +EXPORT_SYMBOL vmlinux 0x4b3fb8c9 d_lookup +EXPORT_SYMBOL vmlinux 0x4b42a069 free_inode_nonrcu +EXPORT_SYMBOL vmlinux 0x4b5fd49e dm_kcopyd_do_callback +EXPORT_SYMBOL vmlinux 0x4b667176 lg_local_lock_cpu +EXPORT_SYMBOL vmlinux 0x4b73748e qdisc_create_dflt +EXPORT_SYMBOL vmlinux 0x4b794faf set_groups +EXPORT_SYMBOL vmlinux 0x4b7a69ab mipi_dsi_dcs_set_display_on +EXPORT_SYMBOL vmlinux 0x4b7dc12a nf_register_hook +EXPORT_SYMBOL vmlinux 0x4b86b4e5 intel_gmch_probe +EXPORT_SYMBOL vmlinux 0x4b88c2fb param_ops_long +EXPORT_SYMBOL vmlinux 0x4b9dfb04 _raw_spin_trylock_bh +EXPORT_SYMBOL vmlinux 0x4bae5a6a generic_cont_expand_simple +EXPORT_SYMBOL vmlinux 0x4baf35a7 vme_master_get +EXPORT_SYMBOL vmlinux 0x4bbaa60c ppp_register_net_channel +EXPORT_SYMBOL vmlinux 0x4bbcf008 __tcf_hash_release +EXPORT_SYMBOL vmlinux 0x4c02ccea jbd2_journal_errno +EXPORT_SYMBOL vmlinux 0x4c0671ae skb_realloc_headroom +EXPORT_SYMBOL vmlinux 0x4c18e3ef scsi_block_when_processing_errors +EXPORT_SYMBOL vmlinux 0x4c310241 dup_iter +EXPORT_SYMBOL vmlinux 0x4c346a53 kvasprintf +EXPORT_SYMBOL vmlinux 0x4c40fab0 inode_sub_rsv_space +EXPORT_SYMBOL vmlinux 0x4c4761af set_trace_device +EXPORT_SYMBOL vmlinux 0x4c4f1833 boot_cpu_data +EXPORT_SYMBOL vmlinux 0x4c504857 remove_proc_entry +EXPORT_SYMBOL vmlinux 0x4c56199a md_error +EXPORT_SYMBOL vmlinux 0x4c5e11c0 pm_vt_switch_unregister +EXPORT_SYMBOL vmlinux 0x4c6d90f1 elv_dispatch_sort +EXPORT_SYMBOL vmlinux 0x4c7bdbfa tty_port_block_til_ready +EXPORT_SYMBOL vmlinux 0x4c878322 iosf_mbi_modify +EXPORT_SYMBOL vmlinux 0x4c8ad03d param_get_ullong +EXPORT_SYMBOL vmlinux 0x4c8e8721 input_mt_report_pointer_emulation +EXPORT_SYMBOL vmlinux 0x4c9d28b0 phys_base +EXPORT_SYMBOL vmlinux 0x4ca9669f scnprintf +EXPORT_SYMBOL vmlinux 0x4cb85bda fbcon_rotate_ccw +EXPORT_SYMBOL vmlinux 0x4cd5bcad abx500_remove_ops +EXPORT_SYMBOL vmlinux 0x4cdb3178 ns_to_timeval +EXPORT_SYMBOL vmlinux 0x4ce49ac8 km_report +EXPORT_SYMBOL vmlinux 0x4d0b92a5 skb_kill_datagram +EXPORT_SYMBOL vmlinux 0x4d121a83 register_quota_format +EXPORT_SYMBOL vmlinux 0x4d162cbd __netif_schedule +EXPORT_SYMBOL vmlinux 0x4d1d5d1d __ps2_command +EXPORT_SYMBOL vmlinux 0x4d294bb4 bit_wait_io +EXPORT_SYMBOL vmlinux 0x4d578d2a free_xenballooned_pages +EXPORT_SYMBOL vmlinux 0x4d5a6594 param_get_int +EXPORT_SYMBOL vmlinux 0x4d61a791 dquot_resume +EXPORT_SYMBOL vmlinux 0x4d67890e tty_insert_flip_string_flags +EXPORT_SYMBOL vmlinux 0x4d69de73 pci_bus_get +EXPORT_SYMBOL vmlinux 0x4d6bbd88 netif_tx_stop_all_queues +EXPORT_SYMBOL vmlinux 0x4d820259 vm_map_ram +EXPORT_SYMBOL vmlinux 0x4d8b77a3 amd_iommu_domain_enable_v2 +EXPORT_SYMBOL vmlinux 0x4d974b9c register_sysrq_key +EXPORT_SYMBOL vmlinux 0x4d9b652b rb_erase +EXPORT_SYMBOL vmlinux 0x4da74d98 tty_driver_kref_put +EXPORT_SYMBOL vmlinux 0x4da784fc sock_get_timestampns +EXPORT_SYMBOL vmlinux 0x4db3d2aa ndisc_mc_map +EXPORT_SYMBOL vmlinux 0x4dd278b2 pci_iomap +EXPORT_SYMBOL vmlinux 0x4de34a07 cpu_rmap_put +EXPORT_SYMBOL vmlinux 0x4df119fa __bitmap_parse +EXPORT_SYMBOL vmlinux 0x4e09b1ee pci_request_region +EXPORT_SYMBOL vmlinux 0x4e12f295 simple_open +EXPORT_SYMBOL vmlinux 0x4e135773 add_disk +EXPORT_SYMBOL vmlinux 0x4e17fc50 ndo_dflt_fdb_dump +EXPORT_SYMBOL vmlinux 0x4e1bb62b blk_rq_map_user +EXPORT_SYMBOL vmlinux 0x4e219db7 __sk_dst_check +EXPORT_SYMBOL vmlinux 0x4e3077c0 jbd2_journal_dirty_metadata +EXPORT_SYMBOL vmlinux 0x4e3567f7 match_int +EXPORT_SYMBOL vmlinux 0x4e38383a rps_may_expire_flow +EXPORT_SYMBOL vmlinux 0x4e3d2121 serial8250_do_pm +EXPORT_SYMBOL vmlinux 0x4e5bb75d write_dirty_buffer +EXPORT_SYMBOL vmlinux 0x4e68e9be rb_next_postorder +EXPORT_SYMBOL vmlinux 0x4e6e8ea7 fg_console +EXPORT_SYMBOL vmlinux 0x4ea21476 dev_uc_unsync +EXPORT_SYMBOL vmlinux 0x4ea25709 dql_reset +EXPORT_SYMBOL vmlinux 0x4ea6c633 get_task_io_context +EXPORT_SYMBOL vmlinux 0x4eaa2185 __f_setown +EXPORT_SYMBOL vmlinux 0x4eb5e50e udp_flush_pending_frames +EXPORT_SYMBOL vmlinux 0x4ed307e5 devm_ioport_map +EXPORT_SYMBOL vmlinux 0x4edd72f7 block_all_signals +EXPORT_SYMBOL vmlinux 0x4ef3d91c mmc_flush_cache +EXPORT_SYMBOL vmlinux 0x4f1cd128 security_tun_dev_create +EXPORT_SYMBOL vmlinux 0x4f1df3db cont_write_begin +EXPORT_SYMBOL vmlinux 0x4f217599 page_symlink +EXPORT_SYMBOL vmlinux 0x4f2250ba rtc_tm_to_time64 +EXPORT_SYMBOL vmlinux 0x4f2f72aa mb_cache_entry_find_first +EXPORT_SYMBOL vmlinux 0x4f391d0e nla_parse +EXPORT_SYMBOL vmlinux 0x4f3f8a98 xfrm_state_check_expire +EXPORT_SYMBOL vmlinux 0x4f476e96 init_cdrom_command +EXPORT_SYMBOL vmlinux 0x4f550dc0 xfrm_state_update +EXPORT_SYMBOL vmlinux 0x4f68e5c9 do_gettimeofday +EXPORT_SYMBOL vmlinux 0x4f6b400b _copy_from_user +EXPORT_SYMBOL vmlinux 0x4f6ce62d neigh_seq_next +EXPORT_SYMBOL vmlinux 0x4f783f30 acpi_read +EXPORT_SYMBOL vmlinux 0x4f7a4827 trace_print_hex_seq +EXPORT_SYMBOL vmlinux 0x4f7b0019 vme_bus_type +EXPORT_SYMBOL vmlinux 0x4f800d61 filemap_fdatawait_range +EXPORT_SYMBOL vmlinux 0x4f8b5ddb _copy_to_user +EXPORT_SYMBOL vmlinux 0x4f9d79d6 rwsem_wake +EXPORT_SYMBOL vmlinux 0x4fa831cd bioset_create_nobvec +EXPORT_SYMBOL vmlinux 0x4fae32ef prepare_binprm +EXPORT_SYMBOL vmlinux 0x4fd199e2 serial8250_do_set_termios +EXPORT_SYMBOL vmlinux 0x4fd7faf5 find_get_pages_contig +EXPORT_SYMBOL vmlinux 0x4fdd93e8 page_zero_new_buffers +EXPORT_SYMBOL vmlinux 0x4fdee897 i8042_command +EXPORT_SYMBOL vmlinux 0x50097088 security_tun_dev_free_security +EXPORT_SYMBOL vmlinux 0x5015e11a grab_cache_page_write_begin +EXPORT_SYMBOL vmlinux 0x501a5dd9 init_net +EXPORT_SYMBOL vmlinux 0x5037de29 compat_tcp_getsockopt +EXPORT_SYMBOL vmlinux 0x50529870 acpi_get_gpe_status +EXPORT_SYMBOL vmlinux 0x5063df40 __posix_acl_create +EXPORT_SYMBOL vmlinux 0x5084238b __pagevec_lru_add +EXPORT_SYMBOL vmlinux 0x5084d41c sdev_enable_disk_events +EXPORT_SYMBOL vmlinux 0x5095110e fifo_create_dflt +EXPORT_SYMBOL vmlinux 0x509b64ea acpi_has_method +EXPORT_SYMBOL vmlinux 0x50a4a6af serio_unregister_driver +EXPORT_SYMBOL vmlinux 0x50a90e8d bsearch +EXPORT_SYMBOL vmlinux 0x50ba769a kblockd_schedule_work +EXPORT_SYMBOL vmlinux 0x50c16a6b vme_slave_request +EXPORT_SYMBOL vmlinux 0x50c6df93 netdev_master_upper_dev_get_rcu +EXPORT_SYMBOL vmlinux 0x50caddb7 dquot_enable +EXPORT_SYMBOL vmlinux 0x50d68377 arch_phys_wc_del +EXPORT_SYMBOL vmlinux 0x50dbe3f7 phy_start_aneg +EXPORT_SYMBOL vmlinux 0x50ded37c __posix_acl_chmod +EXPORT_SYMBOL vmlinux 0x50fde2fb __inode_sub_bytes +EXPORT_SYMBOL vmlinux 0x51164ad9 cmdline_parts_set +EXPORT_SYMBOL vmlinux 0x5118c382 secure_dccp_sequence_number +EXPORT_SYMBOL vmlinux 0x5120fe13 sock_diag_put_filterinfo +EXPORT_SYMBOL vmlinux 0x51719973 dq_data_lock +EXPORT_SYMBOL vmlinux 0x51c6e1e0 __skb_get_hash_flowi6 +EXPORT_SYMBOL vmlinux 0x51c9c653 scsi_scan_host +EXPORT_SYMBOL vmlinux 0x51d12d4e acpi_pci_disabled +EXPORT_SYMBOL vmlinux 0x52026cdf security_sb_parse_opts_str +EXPORT_SYMBOL vmlinux 0x52095e19 acpi_get_data +EXPORT_SYMBOL vmlinux 0x52130046 acpi_check_address_range +EXPORT_SYMBOL vmlinux 0x5213a452 console_start +EXPORT_SYMBOL vmlinux 0x521b36b5 qdisc_put_rtab +EXPORT_SYMBOL vmlinux 0x52398614 __neigh_for_each_release +EXPORT_SYMBOL vmlinux 0x523a18de block_invalidatepage +EXPORT_SYMBOL vmlinux 0x52428cc8 parent_mem_cgroup +EXPORT_SYMBOL vmlinux 0x52594a5a serio_unregister_child_port +EXPORT_SYMBOL vmlinux 0x525e026f acpi_os_unmap_generic_address +EXPORT_SYMBOL vmlinux 0x5287a61b blk_put_request +EXPORT_SYMBOL vmlinux 0x52983a4f vme_master_write +EXPORT_SYMBOL vmlinux 0x52aec227 tcf_exts_validate +EXPORT_SYMBOL vmlinux 0x52d05588 inode_reclaim_rsv_space +EXPORT_SYMBOL vmlinux 0x52db24d3 free_buffer_head +EXPORT_SYMBOL vmlinux 0x52ed85ef mmc_fixup_device +EXPORT_SYMBOL vmlinux 0x530b1e98 pm_suspend +EXPORT_SYMBOL vmlinux 0x53148649 sync_blockdev +EXPORT_SYMBOL vmlinux 0x531b604e __virt_addr_valid +EXPORT_SYMBOL vmlinux 0x532dae98 sock_no_sendpage +EXPORT_SYMBOL vmlinux 0x53326531 mempool_alloc_pages +EXPORT_SYMBOL vmlinux 0x533a0af4 tcp_connect +EXPORT_SYMBOL vmlinux 0x5344269d ppp_dev_name +EXPORT_SYMBOL vmlinux 0x5352fb61 bdi_setup_and_register +EXPORT_SYMBOL vmlinux 0x53569707 this_cpu_off +EXPORT_SYMBOL vmlinux 0x535c8308 vme_dma_pattern_attribute +EXPORT_SYMBOL vmlinux 0x536cc847 memcg_kmem_enabled_key +EXPORT_SYMBOL vmlinux 0x5377e556 hex2bin +EXPORT_SYMBOL vmlinux 0x53861a82 cfb_copyarea +EXPORT_SYMBOL vmlinux 0x539af73c __sg_alloc_table +EXPORT_SYMBOL vmlinux 0x53c3abf4 mmc_put_card +EXPORT_SYMBOL vmlinux 0x53dc4838 xfrm_state_alloc +EXPORT_SYMBOL vmlinux 0x53dd1c02 _raw_read_lock_irqsave +EXPORT_SYMBOL vmlinux 0x54059a2a amd_iommu_pc_get_max_counters +EXPORT_SYMBOL vmlinux 0x5409775b free_irq_cpu_rmap +EXPORT_SYMBOL vmlinux 0x5413a670 del_random_ready_callback +EXPORT_SYMBOL vmlinux 0x54245b39 kstrtoull_from_user +EXPORT_SYMBOL vmlinux 0x5433975c qdisc_warn_nonwc +EXPORT_SYMBOL vmlinux 0x543ef284 seq_hlist_start +EXPORT_SYMBOL vmlinux 0x54494247 security_sb_clone_mnt_opts +EXPORT_SYMBOL vmlinux 0x544b0c11 acpi_lid_notifier_register +EXPORT_SYMBOL vmlinux 0x54578b4f sync_mapping_buffers +EXPORT_SYMBOL vmlinux 0x5464d3f6 acpi_remove_sci_handler +EXPORT_SYMBOL vmlinux 0x547cfe53 in_dev_finish_destroy +EXPORT_SYMBOL vmlinux 0x54a9db5f _kstrtoul +EXPORT_SYMBOL vmlinux 0x54aaf22b __devm_gpiod_get_index +EXPORT_SYMBOL vmlinux 0x54b24194 fsnotify_add_mark +EXPORT_SYMBOL vmlinux 0x54b963ea skb_mac_gso_segment +EXPORT_SYMBOL vmlinux 0x54ba3563 kernel_getpeername +EXPORT_SYMBOL vmlinux 0x54c256e0 vme_check_window +EXPORT_SYMBOL vmlinux 0x54e6fcdd net_enable_timestamp +EXPORT_SYMBOL vmlinux 0x54f24d1a fence_default_wait +EXPORT_SYMBOL vmlinux 0x5509769d inet6_protos +EXPORT_SYMBOL vmlinux 0x551bd071 __rb_erase_color +EXPORT_SYMBOL vmlinux 0x551bedc7 fence_enable_sw_signaling +EXPORT_SYMBOL vmlinux 0x552fc3b8 copy_page_from_iter +EXPORT_SYMBOL vmlinux 0x5541ea93 on_each_cpu +EXPORT_SYMBOL vmlinux 0x5542e96f d_obtain_alias +EXPORT_SYMBOL vmlinux 0x555f6938 lockref_get +EXPORT_SYMBOL vmlinux 0x5567c227 kernel_cpustat +EXPORT_SYMBOL vmlinux 0x556db7ca jbd2_journal_init_jbd_inode +EXPORT_SYMBOL vmlinux 0x55afd849 tty_wait_until_sent +EXPORT_SYMBOL vmlinux 0x55b276da pnp_unregister_driver +EXPORT_SYMBOL vmlinux 0x55c333b8 skb_seq_read +EXPORT_SYMBOL vmlinux 0x55c75e1a __sync_dirty_buffer +EXPORT_SYMBOL vmlinux 0x55c9488c __skb_tx_hash +EXPORT_SYMBOL vmlinux 0x55d45ee9 genphy_setup_forced +EXPORT_SYMBOL vmlinux 0x55d481c9 hdmi_infoframe_unpack +EXPORT_SYMBOL vmlinux 0x55f2a382 ip_do_fragment +EXPORT_SYMBOL vmlinux 0x55f5019b __kmalloc_node +EXPORT_SYMBOL vmlinux 0x560a90b4 dev_open +EXPORT_SYMBOL vmlinux 0x5613b863 led_blink_set +EXPORT_SYMBOL vmlinux 0x561e65b5 set_nlink +EXPORT_SYMBOL vmlinux 0x563225c1 padata_stop +EXPORT_SYMBOL vmlinux 0x5635a60a vmalloc_user +EXPORT_SYMBOL vmlinux 0x5641419b wait_for_completion_killable_timeout +EXPORT_SYMBOL vmlinux 0x56809796 reservation_object_reserve_shared +EXPORT_SYMBOL vmlinux 0x56a1c307 end_page_writeback +EXPORT_SYMBOL vmlinux 0x56a79eef scsi_scan_target +EXPORT_SYMBOL vmlinux 0x56c3bde1 ndo_dflt_fdb_del +EXPORT_SYMBOL vmlinux 0x56c8799d scsi_kunmap_atomic_sg +EXPORT_SYMBOL vmlinux 0x56df8b76 pci_set_mwi +EXPORT_SYMBOL vmlinux 0x56e0e6cc input_alloc_absinfo +EXPORT_SYMBOL vmlinux 0x56e1fc4a cdev_alloc +EXPORT_SYMBOL vmlinux 0x570107d7 dcb_ieee_getapp_mask +EXPORT_SYMBOL vmlinux 0x570a672b netdev_upper_dev_unlink +EXPORT_SYMBOL vmlinux 0x571b6820 pneigh_lookup +EXPORT_SYMBOL vmlinux 0x572016b9 kmem_cache_create +EXPORT_SYMBOL vmlinux 0x572e85d4 blk_lookup_devt +EXPORT_SYMBOL vmlinux 0x572eb3fd page_readlink +EXPORT_SYMBOL vmlinux 0x574c2e74 bitmap_release_region +EXPORT_SYMBOL vmlinux 0x57572fed skb_clone +EXPORT_SYMBOL vmlinux 0x57575f08 dmaengine_put +EXPORT_SYMBOL vmlinux 0x57674fd7 __sw_hweight16 +EXPORT_SYMBOL vmlinux 0x577d35f3 hdmi_avi_infoframe_pack +EXPORT_SYMBOL vmlinux 0x5782249a f_setown +EXPORT_SYMBOL vmlinux 0x5792f848 strlcpy +EXPORT_SYMBOL vmlinux 0x5799e0b0 dev_mc_add +EXPORT_SYMBOL vmlinux 0x57ada4cf udp_seq_open +EXPORT_SYMBOL vmlinux 0x57ba72ab fence_wait_timeout +EXPORT_SYMBOL vmlinux 0x57d224ea security_inode_init_security +EXPORT_SYMBOL vmlinux 0x581bdd6d vfs_symlink +EXPORT_SYMBOL vmlinux 0x581f98da zlib_inflate +EXPORT_SYMBOL vmlinux 0x5838f6c9 rtc_valid_tm +EXPORT_SYMBOL vmlinux 0x583d72ca uart_resume_port +EXPORT_SYMBOL vmlinux 0x584738f9 rdmsr_safe_on_cpu +EXPORT_SYMBOL vmlinux 0x5857b225 ioread16_rep +EXPORT_SYMBOL vmlinux 0x586103be acpi_setup_gpe_for_wake +EXPORT_SYMBOL vmlinux 0x5864b647 n_tty_ioctl_helper +EXPORT_SYMBOL vmlinux 0x5869d894 block_read_full_page +EXPORT_SYMBOL vmlinux 0x58728c77 blk_register_region +EXPORT_SYMBOL vmlinux 0x587616f1 vfs_fstatat +EXPORT_SYMBOL vmlinux 0x58965f36 netif_tx_wake_queue +EXPORT_SYMBOL vmlinux 0x5896b47a pci_stop_and_remove_bus_device +EXPORT_SYMBOL vmlinux 0x58b73bc7 match_wildcard +EXPORT_SYMBOL vmlinux 0x58c172ea __insert_inode_hash +EXPORT_SYMBOL vmlinux 0x58f43081 __scm_send +EXPORT_SYMBOL vmlinux 0x58fc4717 vfs_llseek +EXPORT_SYMBOL vmlinux 0x59140fba rtnl_link_get_net +EXPORT_SYMBOL vmlinux 0x593d8c89 skb_dequeue_tail +EXPORT_SYMBOL vmlinux 0x5944d015 __cachemode2pte_tbl +EXPORT_SYMBOL vmlinux 0x594bf15b ioport_map +EXPORT_SYMBOL vmlinux 0x5967c929 __tracepoint_kmem_cache_alloc_node +EXPORT_SYMBOL vmlinux 0x598e4904 mod_timer_pending +EXPORT_SYMBOL vmlinux 0x59a264d8 mmc_wait_for_app_cmd +EXPORT_SYMBOL vmlinux 0x59aa14cf fence_release +EXPORT_SYMBOL vmlinux 0x59bc9609 acpi_write_bit_register +EXPORT_SYMBOL vmlinux 0x59bf4c14 __get_user_pages +EXPORT_SYMBOL vmlinux 0x59bf8260 fb_get_mode +EXPORT_SYMBOL vmlinux 0x59c18f68 jbd2_journal_stop +EXPORT_SYMBOL vmlinux 0x59e32be0 generic_setlease +EXPORT_SYMBOL vmlinux 0x59fb126a generic_start_io_acct +EXPORT_SYMBOL vmlinux 0x5a0b73d0 zlib_deflateInit2 +EXPORT_SYMBOL vmlinux 0x5a34b80f udp_del_offload +EXPORT_SYMBOL vmlinux 0x5a4896a8 __put_user_2 +EXPORT_SYMBOL vmlinux 0x5a4ae259 xfrm_policy_unregister_afinfo +EXPORT_SYMBOL vmlinux 0x5a82c44a complete_and_exit +EXPORT_SYMBOL vmlinux 0x5a8c49c0 try_to_writeback_inodes_sb +EXPORT_SYMBOL vmlinux 0x5a921311 strncmp +EXPORT_SYMBOL vmlinux 0x5aa7bcbf skb_find_text +EXPORT_SYMBOL vmlinux 0x5abc4b76 bdi_register +EXPORT_SYMBOL vmlinux 0x5ac376a5 acpi_install_fixed_event_handler +EXPORT_SYMBOL vmlinux 0x5ace1d51 mount_nodev +EXPORT_SYMBOL vmlinux 0x5aed547a remap_vmalloc_range_partial +EXPORT_SYMBOL vmlinux 0x5aff4177 vme_lm_get +EXPORT_SYMBOL vmlinux 0x5b03c918 generic_perform_write +EXPORT_SYMBOL vmlinux 0x5b147fd8 update_devfreq +EXPORT_SYMBOL vmlinux 0x5b2e48e6 alloc_fcdev +EXPORT_SYMBOL vmlinux 0x5b3e84d0 blk_queue_logical_block_size +EXPORT_SYMBOL vmlinux 0x5b56860c vm_munmap +EXPORT_SYMBOL vmlinux 0x5b6827c7 ps2_handle_ack +EXPORT_SYMBOL vmlinux 0x5b6839c3 pipe_unlock +EXPORT_SYMBOL vmlinux 0x5b7bfc5e genphy_resume +EXPORT_SYMBOL vmlinux 0x5b88450f dev_set_promiscuity +EXPORT_SYMBOL vmlinux 0x5b8c668d __generic_file_write_iter +EXPORT_SYMBOL vmlinux 0x5b9a7b5e cap_mmap_file +EXPORT_SYMBOL vmlinux 0x5bc10524 printk_emit +EXPORT_SYMBOL vmlinux 0x5bc4c9c4 wireless_send_event +EXPORT_SYMBOL vmlinux 0x5bc73bb7 scsi_unblock_requests +EXPORT_SYMBOL vmlinux 0x5bc8ca8a nvdimm_namespace_capacity +EXPORT_SYMBOL vmlinux 0x5bc8d583 copy_from_user_overflow +EXPORT_SYMBOL vmlinux 0x5bcf5ad9 devm_gpiod_get_array_optional +EXPORT_SYMBOL vmlinux 0x5c0442fd acpi_gbl_FADT +EXPORT_SYMBOL vmlinux 0x5c04daf1 xfrm_state_flush +EXPORT_SYMBOL vmlinux 0x5c0c2e8a dev_mc_add_global +EXPORT_SYMBOL vmlinux 0x5c12ec43 tty_port_init +EXPORT_SYMBOL vmlinux 0x5c4994a3 get_super +EXPORT_SYMBOL vmlinux 0x5c5cf777 register_gifconf +EXPORT_SYMBOL vmlinux 0x5c66e3b1 __devm_gpiod_get +EXPORT_SYMBOL vmlinux 0x5c677895 __generic_file_fsync +EXPORT_SYMBOL vmlinux 0x5c9b026a inode_sb_list_lock +EXPORT_SYMBOL vmlinux 0x5cb2eb5c cros_ec_check_result +EXPORT_SYMBOL vmlinux 0x5cb4c696 cdrom_open +EXPORT_SYMBOL vmlinux 0x5cbd615a compat_ipv6_getsockopt +EXPORT_SYMBOL vmlinux 0x5ccde1a4 generic_file_direct_write +EXPORT_SYMBOL vmlinux 0x5cd8b8e6 pci_map_biosrom +EXPORT_SYMBOL vmlinux 0x5cf53ce2 input_free_minor +EXPORT_SYMBOL vmlinux 0x5d0161ec proc_doulongvec_minmax +EXPORT_SYMBOL vmlinux 0x5d042fd3 fb_blank +EXPORT_SYMBOL vmlinux 0x5d1f237d dquot_disable +EXPORT_SYMBOL vmlinux 0x5d22a372 tcp_conn_request +EXPORT_SYMBOL vmlinux 0x5d34792f submit_bh +EXPORT_SYMBOL vmlinux 0x5d545d8c tcp_proc_unregister +EXPORT_SYMBOL vmlinux 0x5d550c4d scsi_sd_probe_domain +EXPORT_SYMBOL vmlinux 0x5d55fe4f inet6_getname +EXPORT_SYMBOL vmlinux 0x5d6f8e24 scsi_cmd_ioctl +EXPORT_SYMBOL vmlinux 0x5d74dbcf pnp_range_reserved +EXPORT_SYMBOL vmlinux 0x5d798413 max8998_bulk_write +EXPORT_SYMBOL vmlinux 0x5d7a6702 generic_write_checks +EXPORT_SYMBOL vmlinux 0x5d8475e0 completion_done +EXPORT_SYMBOL vmlinux 0x5d89368b tcp_v4_connect +EXPORT_SYMBOL vmlinux 0x5d9b5912 seq_read +EXPORT_SYMBOL vmlinux 0x5daa2299 xfrm_policy_hash_rebuild +EXPORT_SYMBOL vmlinux 0x5e024dbf blk_integrity_merge_rq +EXPORT_SYMBOL vmlinux 0x5e0e3a04 cdev_del +EXPORT_SYMBOL vmlinux 0x5e11a69b __starget_for_each_device +EXPORT_SYMBOL vmlinux 0x5e19d902 skb_try_coalesce +EXPORT_SYMBOL vmlinux 0x5e21e78c module_layout +EXPORT_SYMBOL vmlinux 0x5e3280c8 nvdimm_bus_unlock +EXPORT_SYMBOL vmlinux 0x5e95b1cd current_umask +EXPORT_SYMBOL vmlinux 0x5eb24829 dm_shift_arg +EXPORT_SYMBOL vmlinux 0x5ed040b0 pm_set_vt_switch +EXPORT_SYMBOL vmlinux 0x5f005368 kstrtou8 +EXPORT_SYMBOL vmlinux 0x5f051c6f mmc_get_card +EXPORT_SYMBOL vmlinux 0x5f098b2a in6addr_interfacelocal_allrouters +EXPORT_SYMBOL vmlinux 0x5f098ec6 pv_mmu_ops +EXPORT_SYMBOL vmlinux 0x5f2dfb7f blk_mq_free_tag_set +EXPORT_SYMBOL vmlinux 0x5f3710e1 __skb_checksum +EXPORT_SYMBOL vmlinux 0x5f5fb85f lockref_get_not_zero +EXPORT_SYMBOL vmlinux 0x5f71904f __bread_gfp +EXPORT_SYMBOL vmlinux 0x5f973ddd tcf_destroy_chain +EXPORT_SYMBOL vmlinux 0x5fb2e8ef idr_init +EXPORT_SYMBOL vmlinux 0x5fb41e48 put_cmsg +EXPORT_SYMBOL vmlinux 0x5fda0227 vfs_stat +EXPORT_SYMBOL vmlinux 0x600683d3 do_unblank_screen +EXPORT_SYMBOL vmlinux 0x601f665f dm_io_client_create +EXPORT_SYMBOL vmlinux 0x602334c6 phy_disconnect +EXPORT_SYMBOL vmlinux 0x602ed00d acpi_current_gpe_count +EXPORT_SYMBOL vmlinux 0x60341c26 pnp_register_driver +EXPORT_SYMBOL vmlinux 0x60352082 register_inet6addr_notifier +EXPORT_SYMBOL vmlinux 0x6035dbb7 param_set_invbool +EXPORT_SYMBOL vmlinux 0x603867cc blk_mq_stop_hw_queues +EXPORT_SYMBOL vmlinux 0x604316d8 acpi_finish_gpe +EXPORT_SYMBOL vmlinux 0x604e9f2b truncate_pagecache_range +EXPORT_SYMBOL vmlinux 0x60635752 lookup_one_len +EXPORT_SYMBOL vmlinux 0x606d0b09 secure_tcpv6_sequence_number +EXPORT_SYMBOL vmlinux 0x60815906 dma_supported +EXPORT_SYMBOL vmlinux 0x6091644e flow_keys_dissector +EXPORT_SYMBOL vmlinux 0x609a12c5 jbd2_journal_set_triggers +EXPORT_SYMBOL vmlinux 0x609f1c7e synchronize_net +EXPORT_SYMBOL vmlinux 0x609f5b35 ucs2_strnlen +EXPORT_SYMBOL vmlinux 0x60a32ea9 pm_power_off +EXPORT_SYMBOL vmlinux 0x60a4b18e netif_receive_skb_sk +EXPORT_SYMBOL vmlinux 0x60aa1d0b scsi_print_sense +EXPORT_SYMBOL vmlinux 0x60cf85d2 _raw_read_lock_bh +EXPORT_SYMBOL vmlinux 0x60d5ec36 seq_write +EXPORT_SYMBOL vmlinux 0x60df1e3b posix_acl_equiv_mode +EXPORT_SYMBOL vmlinux 0x610aaa40 mempool_destroy +EXPORT_SYMBOL vmlinux 0x6128b5fc __printk_ratelimit +EXPORT_SYMBOL vmlinux 0x612ae5d5 __nlmsg_put +EXPORT_SYMBOL vmlinux 0x614bb773 radix_tree_insert +EXPORT_SYMBOL vmlinux 0x61520529 trace_print_symbols_seq +EXPORT_SYMBOL vmlinux 0x616cdd69 vga_switcheroo_client_fb_set +EXPORT_SYMBOL vmlinux 0x61788d35 kmem_cache_destroy +EXPORT_SYMBOL vmlinux 0x618911fc numa_node +EXPORT_SYMBOL vmlinux 0x618dd5c0 swiotlb_alloc_coherent +EXPORT_SYMBOL vmlinux 0x619cb7dd simple_read_from_buffer +EXPORT_SYMBOL vmlinux 0x61a9bacd component_match_add +EXPORT_SYMBOL vmlinux 0x61b7b126 simple_strtoull +EXPORT_SYMBOL vmlinux 0x61d39003 get_io_context +EXPORT_SYMBOL vmlinux 0x61f31abf max8998_read_reg +EXPORT_SYMBOL vmlinux 0x61fb248a node_states +EXPORT_SYMBOL vmlinux 0x62049256 acpi_disable +EXPORT_SYMBOL vmlinux 0x6214aef2 cpufreq_unregister_notifier +EXPORT_SYMBOL vmlinux 0x621575f4 netdev_all_upper_get_next_dev_rcu +EXPORT_SYMBOL vmlinux 0x6218fa69 security_d_instantiate +EXPORT_SYMBOL vmlinux 0x62198cf8 jbd2_log_wait_commit +EXPORT_SYMBOL vmlinux 0x6225637e md5_transform +EXPORT_SYMBOL vmlinux 0x6226b9fa machine_to_phys_mapping +EXPORT_SYMBOL vmlinux 0x6228c21f smp_call_function_single +EXPORT_SYMBOL vmlinux 0x6237f6b5 acpi_enable_event +EXPORT_SYMBOL vmlinux 0x623c4949 dev_driver_string +EXPORT_SYMBOL vmlinux 0x623f9605 sg_miter_stop +EXPORT_SYMBOL vmlinux 0x62628578 security_old_inode_init_security +EXPORT_SYMBOL vmlinux 0x62737e1d sock_unregister +EXPORT_SYMBOL vmlinux 0x62748e70 acpi_set_current_resources +EXPORT_SYMBOL vmlinux 0x62827bec security_secctx_to_secid +EXPORT_SYMBOL vmlinux 0x62849ac7 dev_valid_name +EXPORT_SYMBOL vmlinux 0x628531c3 tcf_action_dump_1 +EXPORT_SYMBOL vmlinux 0x62861b98 mmc_free_host +EXPORT_SYMBOL vmlinux 0x6286304e tty_unregister_device +EXPORT_SYMBOL vmlinux 0x628d71b5 input_mt_init_slots +EXPORT_SYMBOL vmlinux 0x628ffce8 from_kprojid_munged +EXPORT_SYMBOL vmlinux 0x62955145 mdio_bus_type +EXPORT_SYMBOL vmlinux 0x629df2da jbd2_journal_check_used_features +EXPORT_SYMBOL vmlinux 0x62b6ba29 seq_putc +EXPORT_SYMBOL vmlinux 0x62fc2946 param_ops_uint +EXPORT_SYMBOL vmlinux 0x63058425 copy_page_to_iter +EXPORT_SYMBOL vmlinux 0x63187451 pcie_aspm_support_enabled +EXPORT_SYMBOL vmlinux 0x6333c460 fddi_change_mtu +EXPORT_SYMBOL vmlinux 0x6334749e inet_frag_destroy +EXPORT_SYMBOL vmlinux 0x6368d730 uart_match_port +EXPORT_SYMBOL vmlinux 0x6368f981 writeback_inodes_sb_nr +EXPORT_SYMBOL vmlinux 0x636a5691 acpi_register_ioapic +EXPORT_SYMBOL vmlinux 0x6388591c down_timeout +EXPORT_SYMBOL vmlinux 0x638b6fc3 param_ops_ullong +EXPORT_SYMBOL vmlinux 0x63a01291 acpi_leave_sleep_state_prep +EXPORT_SYMBOL vmlinux 0x63a7c28c bitmap_find_free_region +EXPORT_SYMBOL vmlinux 0x63bc9740 mdiobus_scan +EXPORT_SYMBOL vmlinux 0x63c13e70 _raw_write_unlock +EXPORT_SYMBOL vmlinux 0x63c4d61f __bitmap_weight +EXPORT_SYMBOL vmlinux 0x63eb9355 panic_blink +EXPORT_SYMBOL vmlinux 0x63fc232f strlen_user +EXPORT_SYMBOL vmlinux 0x6403e338 tcp_memory_pressure +EXPORT_SYMBOL vmlinux 0x64057b1e flush_old_exec +EXPORT_SYMBOL vmlinux 0x64127b67 bitmap_find_next_zero_area_off +EXPORT_SYMBOL vmlinux 0x6416a655 kernel_recvmsg +EXPORT_SYMBOL vmlinux 0x642be2e7 uart_unregister_driver +EXPORT_SYMBOL vmlinux 0x6449fd41 acpi_install_address_space_handler +EXPORT_SYMBOL vmlinux 0x645613e4 mmc_gpiod_request_cd_irq +EXPORT_SYMBOL vmlinux 0x645930fb _raw_write_lock_bh +EXPORT_SYMBOL vmlinux 0x646b9260 blk_complete_request +EXPORT_SYMBOL vmlinux 0x6474ba16 do_SAK +EXPORT_SYMBOL vmlinux 0x647ff1fa neigh_direct_output +EXPORT_SYMBOL vmlinux 0x6481d1ec nf_getsockopt +EXPORT_SYMBOL vmlinux 0x64999478 congestion_wait +EXPORT_SYMBOL vmlinux 0x649ea9b6 fb_firmware_edid +EXPORT_SYMBOL vmlinux 0x64a05cd6 mmc_gpiod_request_cd +EXPORT_SYMBOL vmlinux 0x64a53469 blk_queue_free_tags +EXPORT_SYMBOL vmlinux 0x64ab0e98 wait_for_completion +EXPORT_SYMBOL vmlinux 0x64bbc288 string_unescape +EXPORT_SYMBOL vmlinux 0x64bcc9a8 fbcon_set_tileops +EXPORT_SYMBOL vmlinux 0x64c60438 kobject_init +EXPORT_SYMBOL vmlinux 0x64d3e0e9 inode_newsize_ok +EXPORT_SYMBOL vmlinux 0x64d73176 inet_stream_ops +EXPORT_SYMBOL vmlinux 0x64e4d762 dev_queue_xmit_accel +EXPORT_SYMBOL vmlinux 0x64eae7ad set_memory_array_wb +EXPORT_SYMBOL vmlinux 0x64f2f65c may_umount +EXPORT_SYMBOL vmlinux 0x64f9df5b d_path +EXPORT_SYMBOL vmlinux 0x64fa0117 __generic_block_fiemap +EXPORT_SYMBOL vmlinux 0x64fa7693 __acpi_handle_debug +EXPORT_SYMBOL vmlinux 0x64fecef9 mnt_drop_write_file +EXPORT_SYMBOL vmlinux 0x64ff41d8 init_task +EXPORT_SYMBOL vmlinux 0x6513a3fa fb_get_color_depth +EXPORT_SYMBOL vmlinux 0x651a4139 test_taint +EXPORT_SYMBOL vmlinux 0x652ce9aa nla_memcmp +EXPORT_SYMBOL vmlinux 0x65408378 zlib_inflate_blob +EXPORT_SYMBOL vmlinux 0x65467c42 thermal_cdev_update +EXPORT_SYMBOL vmlinux 0x655f1ab0 set_memory_array_wc +EXPORT_SYMBOL vmlinux 0x656c1a0e string_escape_mem +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 0x65f3ad9a fb_videomode_to_var +EXPORT_SYMBOL vmlinux 0x6624d47d simple_symlink_inode_operations +EXPORT_SYMBOL vmlinux 0x66303965 pnp_device_detach +EXPORT_SYMBOL vmlinux 0x663f7cd0 acpi_install_table_handler +EXPORT_SYMBOL vmlinux 0x665a58b1 __nla_put_nohdr +EXPORT_SYMBOL vmlinux 0x665e80ac blk_queue_max_write_same_sectors +EXPORT_SYMBOL vmlinux 0x665feebc acpi_device_set_power +EXPORT_SYMBOL vmlinux 0x66957bac jbd2_journal_blocks_per_page +EXPORT_SYMBOL vmlinux 0x66d804b1 percpu_counter_destroy +EXPORT_SYMBOL vmlinux 0x670651d8 mntget +EXPORT_SYMBOL vmlinux 0x671c4d0a open_check_o_direct +EXPORT_SYMBOL vmlinux 0x671eb08a __serio_register_driver +EXPORT_SYMBOL vmlinux 0x6722f3bc _raw_write_lock +EXPORT_SYMBOL vmlinux 0x6729d3df __get_user_4 +EXPORT_SYMBOL vmlinux 0x673f815e agp_bridges +EXPORT_SYMBOL vmlinux 0x67686e67 pcibios_bus_to_resource +EXPORT_SYMBOL vmlinux 0x67733cf4 mb_cache_create +EXPORT_SYMBOL vmlinux 0x678bc04f crypto_sha512_finup +EXPORT_SYMBOL vmlinux 0x6791bfa3 set_security_override +EXPORT_SYMBOL vmlinux 0x67b08fac consume_skb +EXPORT_SYMBOL vmlinux 0x67b27ec1 tty_std_termios +EXPORT_SYMBOL vmlinux 0x67b78eb3 seq_hlist_next_rcu +EXPORT_SYMBOL vmlinux 0x67d999db netdev_features_change +EXPORT_SYMBOL vmlinux 0x67debcb3 posix_unblock_lock +EXPORT_SYMBOL vmlinux 0x67fca2d5 dma_find_channel +EXPORT_SYMBOL vmlinux 0x6805b989 simple_readpage +EXPORT_SYMBOL vmlinux 0x6808b453 __unregister_cpu_notifier +EXPORT_SYMBOL vmlinux 0x680ec266 _raw_spin_lock_irqsave +EXPORT_SYMBOL vmlinux 0x681a5df1 sk_net_capable +EXPORT_SYMBOL vmlinux 0x685e91dc down_read_trylock +EXPORT_SYMBOL vmlinux 0x687b6a16 kdbgetsymval +EXPORT_SYMBOL vmlinux 0x688a92dc inode_init_once +EXPORT_SYMBOL vmlinux 0x68aede0f neigh_connected_output +EXPORT_SYMBOL vmlinux 0x68b83ac6 posix_acl_alloc +EXPORT_SYMBOL vmlinux 0x68c4fdae neigh_lookup_nodev +EXPORT_SYMBOL vmlinux 0x68c5d47c kmem_cache_alloc_node +EXPORT_SYMBOL vmlinux 0x68c6bb0f bio_clone_bioset +EXPORT_SYMBOL vmlinux 0x68c7695b genphy_config_aneg +EXPORT_SYMBOL vmlinux 0x68db8139 padata_alloc +EXPORT_SYMBOL vmlinux 0x68de9c23 pcix_get_max_mmrbc +EXPORT_SYMBOL vmlinux 0x68ebe53e cdrom_media_changed +EXPORT_SYMBOL vmlinux 0x68f3fc0c skb_ensure_writable +EXPORT_SYMBOL vmlinux 0x690362d3 blk_queue_bounce +EXPORT_SYMBOL vmlinux 0x691001b5 acpi_evaluate_integer +EXPORT_SYMBOL vmlinux 0x691ac350 call_netdevice_notifiers +EXPORT_SYMBOL vmlinux 0x6920ff27 proc_dointvec_userhz_jiffies +EXPORT_SYMBOL vmlinux 0x69632860 read_cache_page_gfp +EXPORT_SYMBOL vmlinux 0x6967cd28 scsi_is_host_device +EXPORT_SYMBOL vmlinux 0x6971447a rtc_month_days +EXPORT_SYMBOL vmlinux 0x6981f2cd twl6040_get_pll +EXPORT_SYMBOL vmlinux 0x6988d0ca cpu_dr7 +EXPORT_SYMBOL vmlinux 0x6992c992 input_register_handle +EXPORT_SYMBOL vmlinux 0x699560c1 scsi_device_put +EXPORT_SYMBOL vmlinux 0x69966ede compat_sock_common_getsockopt +EXPORT_SYMBOL vmlinux 0x699ff80f mipi_dsi_driver_unregister +EXPORT_SYMBOL vmlinux 0x69a0ca7d iowrite16be +EXPORT_SYMBOL vmlinux 0x69a358a6 iomem_resource +EXPORT_SYMBOL vmlinux 0x69a8ba1a gen_pool_for_each_chunk +EXPORT_SYMBOL vmlinux 0x69a94083 d_delete +EXPORT_SYMBOL vmlinux 0x69acdf38 memcpy +EXPORT_SYMBOL vmlinux 0x69ad2f20 kstrtouint +EXPORT_SYMBOL vmlinux 0x69b7c91a sock_dequeue_err_skb +EXPORT_SYMBOL vmlinux 0x69e0797a amd_iommu_complete_ppr +EXPORT_SYMBOL vmlinux 0x69fbc0a2 acpi_get_event_resources +EXPORT_SYMBOL vmlinux 0x6a004448 vme_lm_request +EXPORT_SYMBOL vmlinux 0x6a037cf1 mempool_kfree +EXPORT_SYMBOL vmlinux 0x6a168aaf mipi_dsi_set_maximum_return_packet_size +EXPORT_SYMBOL vmlinux 0x6a1f6442 km_policy_notify +EXPORT_SYMBOL vmlinux 0x6a33b76a set_wb_congested +EXPORT_SYMBOL vmlinux 0x6a342d9c arch_debugfs_dir +EXPORT_SYMBOL vmlinux 0x6a3741f2 scsi_remove_target +EXPORT_SYMBOL vmlinux 0x6a5b9295 truncate_setsize +EXPORT_SYMBOL vmlinux 0x6a5e2dc2 set_page_dirty +EXPORT_SYMBOL vmlinux 0x6a5ecb18 unregister_module_notifier +EXPORT_SYMBOL vmlinux 0x6a5fa363 sigprocmask +EXPORT_SYMBOL vmlinux 0x6a60277d acpi_buffer_to_resource +EXPORT_SYMBOL vmlinux 0x6a76f3ac blk_iopoll_enable +EXPORT_SYMBOL vmlinux 0x6aa19f5f jbd2_journal_set_features +EXPORT_SYMBOL vmlinux 0x6ab3eb9f sock_no_getname +EXPORT_SYMBOL vmlinux 0x6abf85df filemap_page_mkwrite +EXPORT_SYMBOL vmlinux 0x6ac7998c neigh_changeaddr +EXPORT_SYMBOL vmlinux 0x6acafd5b cookie_timestamp_decode +EXPORT_SYMBOL vmlinux 0x6acb973d iowrite32be +EXPORT_SYMBOL vmlinux 0x6ad85887 acpi_enable_gpe +EXPORT_SYMBOL vmlinux 0x6add5c9a dmi_find_device +EXPORT_SYMBOL vmlinux 0x6aeefac4 zlib_deflateReset +EXPORT_SYMBOL vmlinux 0x6b06fdce delayed_work_timer_fn +EXPORT_SYMBOL vmlinux 0x6b1b67d3 __bdevname +EXPORT_SYMBOL vmlinux 0x6b1c0ed2 blk_pre_runtime_suspend +EXPORT_SYMBOL vmlinux 0x6b29bc48 dquot_writeback_dquots +EXPORT_SYMBOL vmlinux 0x6b2dc060 dump_stack +EXPORT_SYMBOL vmlinux 0x6b2e560c pneigh_enqueue +EXPORT_SYMBOL vmlinux 0x6b48a70d jbd2_complete_transaction +EXPORT_SYMBOL vmlinux 0x6b559b99 set_disk_ro +EXPORT_SYMBOL vmlinux 0x6b640864 nla_strlcpy +EXPORT_SYMBOL vmlinux 0x6b74b9be bit_waitqueue +EXPORT_SYMBOL vmlinux 0x6b7eab15 fb_is_primary_device +EXPORT_SYMBOL vmlinux 0x6b83c0da __invalidate_device +EXPORT_SYMBOL vmlinux 0x6b855237 vme_new_dma_list +EXPORT_SYMBOL vmlinux 0x6b8a9be5 tcf_action_exec +EXPORT_SYMBOL vmlinux 0x6b94d3a5 bdgrab +EXPORT_SYMBOL vmlinux 0x6b9ab4ab dev_printk_emit +EXPORT_SYMBOL vmlinux 0x6ba4827c wait_on_page_bit +EXPORT_SYMBOL vmlinux 0x6bc3fbc0 __unregister_chrdev +EXPORT_SYMBOL vmlinux 0x6bcc490e gen_pool_free +EXPORT_SYMBOL vmlinux 0x6bd9f258 alloc_fddidev +EXPORT_SYMBOL vmlinux 0x6bdcfd99 qdisc_class_hash_remove +EXPORT_SYMBOL vmlinux 0x6bf01fad devfreq_recommended_opp +EXPORT_SYMBOL vmlinux 0x6bf1c17f pv_lock_ops +EXPORT_SYMBOL vmlinux 0x6c05f2c9 block_page_mkwrite +EXPORT_SYMBOL vmlinux 0x6c09c2a4 del_timer +EXPORT_SYMBOL vmlinux 0x6c2625b0 dev_uc_del +EXPORT_SYMBOL vmlinux 0x6c2819ab tcp_v4_do_rcv +EXPORT_SYMBOL vmlinux 0x6c44bc15 neigh_proc_dointvec +EXPORT_SYMBOL vmlinux 0x6c51a836 sysctl_tcp_notsent_lowat +EXPORT_SYMBOL vmlinux 0x6c52a8d7 touch_atime +EXPORT_SYMBOL vmlinux 0x6c61ce70 num_registered_fb +EXPORT_SYMBOL vmlinux 0x6c6249f3 put_tty_driver +EXPORT_SYMBOL vmlinux 0x6c702af7 sysctl_udp_rmem_min +EXPORT_SYMBOL vmlinux 0x6c791224 clocksource_change_rating +EXPORT_SYMBOL vmlinux 0x6c79e639 csum_and_copy_to_iter +EXPORT_SYMBOL vmlinux 0x6c8f9230 ppp_unit_number +EXPORT_SYMBOL vmlinux 0x6ca86d18 pci_find_parent_resource +EXPORT_SYMBOL vmlinux 0x6cb8aa66 tcp_v4_conn_request +EXPORT_SYMBOL vmlinux 0x6cc42aee proc_dointvec_minmax +EXPORT_SYMBOL vmlinux 0x6d0076b1 sdev_prefix_printk +EXPORT_SYMBOL vmlinux 0x6d0f1f89 dm_table_get_mode +EXPORT_SYMBOL vmlinux 0x6d1c113d dquot_quotactl_sysfile_ops +EXPORT_SYMBOL vmlinux 0x6d1d5d9b iosf_mbi_write +EXPORT_SYMBOL vmlinux 0x6d294e43 clock_t_to_jiffies +EXPORT_SYMBOL vmlinux 0x6d2ee1cf blk_mq_complete_request +EXPORT_SYMBOL vmlinux 0x6d334118 __get_user_8 +EXPORT_SYMBOL vmlinux 0x6d340f64 tty_termios_input_baud_rate +EXPORT_SYMBOL vmlinux 0x6d3dc4f8 pagevec_lookup +EXPORT_SYMBOL vmlinux 0x6d67593e kernel_accept +EXPORT_SYMBOL vmlinux 0x6d69778d inode_permission +EXPORT_SYMBOL vmlinux 0x6d6bd0c2 blk_mq_tag_busy_iter +EXPORT_SYMBOL vmlinux 0x6d875d69 __free_pages +EXPORT_SYMBOL vmlinux 0x6d9a8dcc jbd2__journal_start +EXPORT_SYMBOL vmlinux 0x6da9fe2e proto_unregister +EXPORT_SYMBOL vmlinux 0x6dc0c9dc down_interruptible +EXPORT_SYMBOL vmlinux 0x6dc6dd56 down +EXPORT_SYMBOL vmlinux 0x6dc8c6d4 ppp_register_channel +EXPORT_SYMBOL vmlinux 0x6def2db2 half_md4_transform +EXPORT_SYMBOL vmlinux 0x6df1aaf1 kernel_sigaction +EXPORT_SYMBOL vmlinux 0x6df93842 phy_read_mmd_indirect +EXPORT_SYMBOL vmlinux 0x6e1d54a9 ip_route_me_harder +EXPORT_SYMBOL vmlinux 0x6e421349 devm_gpio_free +EXPORT_SYMBOL vmlinux 0x6e6c3bcc param_set_long +EXPORT_SYMBOL vmlinux 0x6e720ff2 rtnl_unlock +EXPORT_SYMBOL vmlinux 0x6e77d9f2 md_done_sync +EXPORT_SYMBOL vmlinux 0x6e7f0fd2 cmdline_parts_parse +EXPORT_SYMBOL vmlinux 0x6e9bddd5 flow_cache_lookup +EXPORT_SYMBOL vmlinux 0x6e9dd606 __symbol_put +EXPORT_SYMBOL vmlinux 0x6ea04758 udp_proc_register +EXPORT_SYMBOL vmlinux 0x6ec2beea tty_unregister_driver +EXPORT_SYMBOL vmlinux 0x6ee5308c blk_queue_prep_rq +EXPORT_SYMBOL vmlinux 0x6ee68075 tty_port_close +EXPORT_SYMBOL vmlinux 0x6eec9d1a revert_creds +EXPORT_SYMBOL vmlinux 0x6f007b3f mdiobus_read +EXPORT_SYMBOL vmlinux 0x6f00d2ed jbd2_journal_unlock_updates +EXPORT_SYMBOL vmlinux 0x6f20960a full_name_hash +EXPORT_SYMBOL vmlinux 0x6f2e4f46 __cond_resched_lock +EXPORT_SYMBOL vmlinux 0x6f46be98 genphy_restart_aneg +EXPORT_SYMBOL vmlinux 0x6f556bdb acpi_get_gpe_device +EXPORT_SYMBOL vmlinux 0x6f6910d9 d_move +EXPORT_SYMBOL vmlinux 0x6f7c9bf0 xfrm_find_acq +EXPORT_SYMBOL vmlinux 0x6f811c1c force_sig +EXPORT_SYMBOL vmlinux 0x6f88effb hdmi_avi_infoframe_init +EXPORT_SYMBOL vmlinux 0x6fbf07cd __free_page_frag +EXPORT_SYMBOL vmlinux 0x6fc21c9b netif_napi_add +EXPORT_SYMBOL vmlinux 0x6fcb87a1 touch_softlockup_watchdog +EXPORT_SYMBOL vmlinux 0x6fd4be26 alloc_disk +EXPORT_SYMBOL vmlinux 0x6fe6f9a2 mmc_can_secure_erase_trim +EXPORT_SYMBOL vmlinux 0x6feb2039 acpi_write +EXPORT_SYMBOL vmlinux 0x6ff486cd qdisc_watchdog_init +EXPORT_SYMBOL vmlinux 0x6ffb01c6 insert_inode_locked4 +EXPORT_SYMBOL vmlinux 0x6ffb531d udp_lib_rehash +EXPORT_SYMBOL vmlinux 0x6ffe4974 bio_integrity_prep +EXPORT_SYMBOL vmlinux 0x700517c1 splice_direct_to_actor +EXPORT_SYMBOL vmlinux 0x701e7a23 netdev_lower_get_next_private +EXPORT_SYMBOL vmlinux 0x7023bea8 unregister_acpi_notifier +EXPORT_SYMBOL vmlinux 0x7029f11b iommu_tbl_pool_init +EXPORT_SYMBOL vmlinux 0x70324f92 sock_no_recvmsg +EXPORT_SYMBOL vmlinux 0x703d37e6 skb_make_writable +EXPORT_SYMBOL vmlinux 0x7043a19c pci_disable_msix +EXPORT_SYMBOL vmlinux 0x7051f063 generic_delete_inode +EXPORT_SYMBOL vmlinux 0x70523a7a __cond_resched_softirq +EXPORT_SYMBOL vmlinux 0x7054a3e4 request_dma +EXPORT_SYMBOL vmlinux 0x706d051c del_timer_sync +EXPORT_SYMBOL vmlinux 0x7078696a devm_devfreq_register_opp_notifier +EXPORT_SYMBOL vmlinux 0x707ce40d simple_statfs +EXPORT_SYMBOL vmlinux 0x707f43f6 __ctzdi2 +EXPORT_SYMBOL vmlinux 0x708a79f7 __percpu_counter_compare +EXPORT_SYMBOL vmlinux 0x7092e009 ps2_handle_response +EXPORT_SYMBOL vmlinux 0x70cb05b8 forget_cached_acl +EXPORT_SYMBOL vmlinux 0x70d8ab82 acpi_acquire_global_lock +EXPORT_SYMBOL vmlinux 0x70df3595 datagram_poll +EXPORT_SYMBOL vmlinux 0x70eb1846 skb_clone_sk +EXPORT_SYMBOL vmlinux 0x70f96f88 glob_match +EXPORT_SYMBOL vmlinux 0x711b2c1e mount_single +EXPORT_SYMBOL vmlinux 0x711b72db generic_getxattr +EXPORT_SYMBOL vmlinux 0x7127946b writeback_inodes_sb +EXPORT_SYMBOL vmlinux 0x7129e5f8 hex_asc +EXPORT_SYMBOL vmlinux 0x7152ff6c vme_unregister_driver +EXPORT_SYMBOL vmlinux 0x7171121c overflowgid +EXPORT_SYMBOL vmlinux 0x71828a66 proc_dostring +EXPORT_SYMBOL vmlinux 0x7193b1d0 inet_csk_destroy_sock +EXPORT_SYMBOL vmlinux 0x71a50dbc register_blkdev +EXPORT_SYMBOL vmlinux 0x71a672ef dmam_pool_destroy +EXPORT_SYMBOL vmlinux 0x71aab716 agp_free_memory +EXPORT_SYMBOL vmlinux 0x71bc2dcf vga_switcheroo_init_domain_pm_optimus_hdmi_audio +EXPORT_SYMBOL vmlinux 0x71d2e744 page_put_link +EXPORT_SYMBOL vmlinux 0x71dbf609 xfrm_state_add +EXPORT_SYMBOL vmlinux 0x71e5c709 iov_iter_fault_in_readable +EXPORT_SYMBOL vmlinux 0x7218da49 blk_end_request_cur +EXPORT_SYMBOL vmlinux 0x721ee0af do_splice_direct +EXPORT_SYMBOL vmlinux 0x7235e927 seq_puts +EXPORT_SYMBOL vmlinux 0x723ded9c request_key_with_auxdata +EXPORT_SYMBOL vmlinux 0x7260e249 ___preempt_schedule_notrace +EXPORT_SYMBOL vmlinux 0x7274de61 gnet_stats_copy_queue +EXPORT_SYMBOL vmlinux 0x728542a1 dev_get_iflink +EXPORT_SYMBOL vmlinux 0x728f720c d_walk +EXPORT_SYMBOL vmlinux 0x72a04262 xfrm_sad_getinfo +EXPORT_SYMBOL vmlinux 0x72a2c4b2 vfs_mknod +EXPORT_SYMBOL vmlinux 0x72a98fdb copy_user_generic_unrolled +EXPORT_SYMBOL vmlinux 0x72ae5727 scsi_report_device_reset +EXPORT_SYMBOL vmlinux 0x72b243d4 free_dma +EXPORT_SYMBOL vmlinux 0x72b6be05 __nd_driver_register +EXPORT_SYMBOL vmlinux 0x72bf2140 mtrr_add +EXPORT_SYMBOL vmlinux 0x72ea7b2d scsi_device_type +EXPORT_SYMBOL vmlinux 0x72fce50a xfrm_state_lookup_byspi +EXPORT_SYMBOL vmlinux 0x7315a4e9 twl6030_mmc_card_detect_config +EXPORT_SYMBOL vmlinux 0x733c3b54 kasprintf +EXPORT_SYMBOL vmlinux 0x733c4c37 d_genocide +EXPORT_SYMBOL vmlinux 0x733c7e00 netif_schedule_queue +EXPORT_SYMBOL vmlinux 0x73455890 alloc_netdev_mqs +EXPORT_SYMBOL vmlinux 0x735a0bd5 native_io_delay +EXPORT_SYMBOL vmlinux 0x73709752 jbd2_journal_get_write_access +EXPORT_SYMBOL vmlinux 0x7376fb2b amd_northbridges +EXPORT_SYMBOL vmlinux 0x737d7e49 nf_log_trace +EXPORT_SYMBOL vmlinux 0x738223df sdev_disable_disk_events +EXPORT_SYMBOL vmlinux 0x738714db ida_pre_get +EXPORT_SYMBOL vmlinux 0x73a76ccf phy_init_eee +EXPORT_SYMBOL vmlinux 0x73dd54eb irq_fpu_usable +EXPORT_SYMBOL vmlinux 0x73f89af1 posix_lock_file +EXPORT_SYMBOL vmlinux 0x74074f20 rc5t583_ext_power_req_config +EXPORT_SYMBOL vmlinux 0x74093be2 set_blocksize +EXPORT_SYMBOL vmlinux 0x740a1b95 reserve_evntsel_nmi +EXPORT_SYMBOL vmlinux 0x7410aba2 strreplace +EXPORT_SYMBOL vmlinux 0x7425a864 generic_make_request +EXPORT_SYMBOL vmlinux 0x745d4488 tty_port_open +EXPORT_SYMBOL vmlinux 0x745f20a3 idr_is_empty +EXPORT_SYMBOL vmlinux 0x747195f0 hdmi_vendor_infoframe_init +EXPORT_SYMBOL vmlinux 0x7485e15e unregister_chrdev_region +EXPORT_SYMBOL vmlinux 0x74c134b9 __sw_hweight32 +EXPORT_SYMBOL vmlinux 0x74c6660e install_exec_creds +EXPORT_SYMBOL vmlinux 0x74d0bfbb mmc_request_done +EXPORT_SYMBOL vmlinux 0x74d8bc1d mipi_dsi_dcs_write_buffer +EXPORT_SYMBOL vmlinux 0x74e5ff1a udpv6_encap_enable +EXPORT_SYMBOL vmlinux 0x7500c435 vlan_dev_real_dev +EXPORT_SYMBOL vmlinux 0x750fe08f dquot_release +EXPORT_SYMBOL vmlinux 0x7532588a alloc_pages_exact +EXPORT_SYMBOL vmlinux 0x7538b132 agp_off +EXPORT_SYMBOL vmlinux 0x754d539c strlen +EXPORT_SYMBOL vmlinux 0x755e3707 pci_bus_write_config_dword +EXPORT_SYMBOL vmlinux 0x756331f5 vlan_uses_dev +EXPORT_SYMBOL vmlinux 0x7563da0b eth_gro_complete +EXPORT_SYMBOL vmlinux 0x75658b9d param_get_invbool +EXPORT_SYMBOL vmlinux 0x75797c0e rtnl_unicast +EXPORT_SYMBOL vmlinux 0x758f15e7 truncate_inode_pages +EXPORT_SYMBOL vmlinux 0x7590d0ec vfs_iter_read +EXPORT_SYMBOL vmlinux 0x7595ac17 dev_notice +EXPORT_SYMBOL vmlinux 0x75b27397 pm860x_set_bits +EXPORT_SYMBOL vmlinux 0x75babaf2 tty_port_raise_dtr_rts +EXPORT_SYMBOL vmlinux 0x75bc549a x86_cpu_to_apicid +EXPORT_SYMBOL vmlinux 0x75bda77a seq_hlist_next +EXPORT_SYMBOL vmlinux 0x75bdea12 iommu_area_alloc +EXPORT_SYMBOL vmlinux 0x75db94f1 acpi_processor_notify_smm +EXPORT_SYMBOL vmlinux 0x75fbdefd acpi_remove_address_space_handler +EXPORT_SYMBOL vmlinux 0x760a0f4f yield +EXPORT_SYMBOL vmlinux 0x7617b74b pagecache_write_end +EXPORT_SYMBOL vmlinux 0x76297970 __vfs_write +EXPORT_SYMBOL vmlinux 0x7645af6f sg_pcopy_from_buffer +EXPORT_SYMBOL vmlinux 0x7647726c handle_sysrq +EXPORT_SYMBOL vmlinux 0x764bd77c request_resource +EXPORT_SYMBOL vmlinux 0x765bb974 filemap_flush +EXPORT_SYMBOL vmlinux 0x765ff474 crc_t10dif_generic +EXPORT_SYMBOL vmlinux 0x766f5a02 con_copy_unimap +EXPORT_SYMBOL vmlinux 0x767c02e6 sock_init_data +EXPORT_SYMBOL vmlinux 0x767dd8fd acpi_get_irq_routing_table +EXPORT_SYMBOL vmlinux 0x767ddb02 set_memory_wc +EXPORT_SYMBOL vmlinux 0x767ee5b2 i8042_check_port_owner +EXPORT_SYMBOL vmlinux 0x76869ac8 rdmsr_on_cpus +EXPORT_SYMBOL vmlinux 0x7686abd6 xfrm_state_lookup +EXPORT_SYMBOL vmlinux 0x7688611b xfrm_init_state +EXPORT_SYMBOL vmlinux 0x76d3cd60 laptop_mode +EXPORT_SYMBOL vmlinux 0x76d451c4 add_taint +EXPORT_SYMBOL vmlinux 0x76d80c8e devm_ioremap_nocache +EXPORT_SYMBOL vmlinux 0x76d869dd seq_put_decimal_ull +EXPORT_SYMBOL vmlinux 0x76fb08a7 amd_iommu_unregister_ppr_notifier +EXPORT_SYMBOL vmlinux 0x76ff453d blk_rq_unmap_user +EXPORT_SYMBOL vmlinux 0x771b8ec4 queue_write_lock_slowpath +EXPORT_SYMBOL vmlinux 0x771cf835 dma_pool_alloc +EXPORT_SYMBOL vmlinux 0x772d2da8 kill_pgrp +EXPORT_SYMBOL vmlinux 0x773fa409 __kfifo_dma_in_finish_r +EXPORT_SYMBOL vmlinux 0x77456e0a acpi_root_dir +EXPORT_SYMBOL vmlinux 0x774d060f tty_flip_buffer_push +EXPORT_SYMBOL vmlinux 0x7754585f scsi_host_put +EXPORT_SYMBOL vmlinux 0x7763a22b blk_stack_limits +EXPORT_SYMBOL vmlinux 0x77816a3d scsi_device_resume +EXPORT_SYMBOL vmlinux 0x779a18af kstrtoll +EXPORT_SYMBOL vmlinux 0x779b30b2 kmem_cache_alloc_trace +EXPORT_SYMBOL vmlinux 0x779be81d pci_request_region_exclusive +EXPORT_SYMBOL vmlinux 0x77ad9c75 simple_rmdir +EXPORT_SYMBOL vmlinux 0x77bc13a0 strim +EXPORT_SYMBOL vmlinux 0x77c4b0f2 kernel_setsockopt +EXPORT_SYMBOL vmlinux 0x77d8a9da netlink_broadcast_filtered +EXPORT_SYMBOL vmlinux 0x77ddc538 fsnotify_init_mark +EXPORT_SYMBOL vmlinux 0x77df96b2 generic_update_time +EXPORT_SYMBOL vmlinux 0x77e0c3c4 generic_block_fiemap +EXPORT_SYMBOL vmlinux 0x77f51e8b register_key_type +EXPORT_SYMBOL vmlinux 0x77f53abc acpi_get_vendor_resource +EXPORT_SYMBOL vmlinux 0x78065aa5 input_get_keycode +EXPORT_SYMBOL vmlinux 0x780b2e4f param_ops_charp +EXPORT_SYMBOL vmlinux 0x780fdfd1 intel_enable_gtt +EXPORT_SYMBOL vmlinux 0x781b8bdf xfrm_policy_walk +EXPORT_SYMBOL vmlinux 0x78264769 buffer_migrate_page +EXPORT_SYMBOL vmlinux 0x782b087e reservation_object_add_excl_fence +EXPORT_SYMBOL vmlinux 0x783a0c2a cros_ec_cmd_xfer +EXPORT_SYMBOL vmlinux 0x783b3563 wake_up_atomic_t +EXPORT_SYMBOL vmlinux 0x78439cc8 dm_put_device +EXPORT_SYMBOL vmlinux 0x7846af3e __kfifo_len_r +EXPORT_SYMBOL vmlinux 0x78485a21 tcf_em_tree_destroy +EXPORT_SYMBOL vmlinux 0x785c5cf1 bdput +EXPORT_SYMBOL vmlinux 0x786c8e21 bio_get_nr_vecs +EXPORT_SYMBOL vmlinux 0x7871d4ea agp_generic_destroy_pages +EXPORT_SYMBOL vmlinux 0x78764f4e pv_irq_ops +EXPORT_SYMBOL vmlinux 0x787cde39 input_mt_sync_frame +EXPORT_SYMBOL vmlinux 0x7880c781 dm_kcopyd_prepare_callback +EXPORT_SYMBOL vmlinux 0x7893ddfb tcp_make_synack +EXPORT_SYMBOL vmlinux 0x7899a988 mod_zone_page_state +EXPORT_SYMBOL vmlinux 0x789affb1 frontswap_tmem_exclusive_gets +EXPORT_SYMBOL vmlinux 0x78a5ff8a fence_add_callback +EXPORT_SYMBOL vmlinux 0x78a9b470 km_new_mapping +EXPORT_SYMBOL vmlinux 0x78b4abf1 end_buffer_write_sync +EXPORT_SYMBOL vmlinux 0x78baf550 __mem_cgroup_count_vm_event +EXPORT_SYMBOL vmlinux 0x78df6bd7 no_pci_devices +EXPORT_SYMBOL vmlinux 0x78e739aa up +EXPORT_SYMBOL vmlinux 0x78ee5cc6 __neigh_create +EXPORT_SYMBOL vmlinux 0x78f329a4 get_super_thawed +EXPORT_SYMBOL vmlinux 0x78fb0a14 abx500_startup_irq_enabled +EXPORT_SYMBOL vmlinux 0x79068fda acpi_install_method +EXPORT_SYMBOL vmlinux 0x790e6723 con_set_default_unimap +EXPORT_SYMBOL vmlinux 0x791ed1c9 rename_lock +EXPORT_SYMBOL vmlinux 0x7922b9b3 i2c_del_driver +EXPORT_SYMBOL vmlinux 0x792b8d85 misc_deregister +EXPORT_SYMBOL vmlinux 0x794a7eba ab3100_event_register +EXPORT_SYMBOL vmlinux 0x796fc5ce scsi_get_sense_info_fld +EXPORT_SYMBOL vmlinux 0x797f984a bio_integrity_advance +EXPORT_SYMBOL vmlinux 0x7984eefc key_update +EXPORT_SYMBOL vmlinux 0x7985d043 radix_tree_tag_set +EXPORT_SYMBOL vmlinux 0x798b6d1c scsi_rescan_device +EXPORT_SYMBOL vmlinux 0x799d7956 __ip_dev_find +EXPORT_SYMBOL vmlinux 0x79a1430a unlock_buffer +EXPORT_SYMBOL vmlinux 0x79a33f85 vme_get_size +EXPORT_SYMBOL vmlinux 0x79a85a94 put_filp +EXPORT_SYMBOL vmlinux 0x79aa04a2 get_random_bytes +EXPORT_SYMBOL vmlinux 0x79b6a6da xfrm6_protocol_deregister +EXPORT_SYMBOL vmlinux 0x79d7b808 __ip_select_ident +EXPORT_SYMBOL vmlinux 0x79e38790 bioset_create +EXPORT_SYMBOL vmlinux 0x79ecb861 drop_nlink +EXPORT_SYMBOL vmlinux 0x79efd2ed xfrm_policy_destroy +EXPORT_SYMBOL vmlinux 0x79f7f959 sock_wmalloc +EXPORT_SYMBOL vmlinux 0x7a0032e9 netpoll_cleanup +EXPORT_SYMBOL vmlinux 0x7a01062b devfreq_suspend_device +EXPORT_SYMBOL vmlinux 0x7a18f6b9 capable_wrt_inode_uidgid +EXPORT_SYMBOL vmlinux 0x7a27c184 ewma_init +EXPORT_SYMBOL vmlinux 0x7a2af7b4 cpu_number +EXPORT_SYMBOL vmlinux 0x7a3ae32e _raw_write_trylock +EXPORT_SYMBOL vmlinux 0x7a4497db kzfree +EXPORT_SYMBOL vmlinux 0x7a4dd2b8 iov_iter_fault_in_multipages_readable +EXPORT_SYMBOL vmlinux 0x7a5a743b bio_alloc_pages +EXPORT_SYMBOL vmlinux 0x7a6cdedc do_settimeofday64 +EXPORT_SYMBOL vmlinux 0x7a82cb47 rdmsrl_safe_on_cpu +EXPORT_SYMBOL vmlinux 0x7a87cf8a inet_ioctl +EXPORT_SYMBOL vmlinux 0x7a8b3902 i2c_smbus_write_word_data +EXPORT_SYMBOL vmlinux 0x7a925833 cpufreq_get_global_kobject +EXPORT_SYMBOL vmlinux 0x7aa109b3 __dquot_free_space +EXPORT_SYMBOL vmlinux 0x7aa1756e kvfree +EXPORT_SYMBOL vmlinux 0x7aa3bca6 param_set_bool +EXPORT_SYMBOL vmlinux 0x7ab4245d from_kuid_munged +EXPORT_SYMBOL vmlinux 0x7ab88a45 system_freezing_cnt +EXPORT_SYMBOL vmlinux 0x7ad050b9 qid_lt +EXPORT_SYMBOL vmlinux 0x7add44b5 posix_acl_valid +EXPORT_SYMBOL vmlinux 0x7aec9089 clear_user +EXPORT_SYMBOL vmlinux 0x7af2de7b get_user_pages_unlocked +EXPORT_SYMBOL vmlinux 0x7b00b56a blk_mq_all_tag_busy_iter +EXPORT_SYMBOL vmlinux 0x7b09eef5 is_nvdimm_bus_locked +EXPORT_SYMBOL vmlinux 0x7b16235f hdmi_vendor_infoframe_pack +EXPORT_SYMBOL vmlinux 0x7b28230b dget_parent +EXPORT_SYMBOL vmlinux 0x7b2aef6c __krealloc +EXPORT_SYMBOL vmlinux 0x7b52a859 wrmsr_safe_on_cpu +EXPORT_SYMBOL vmlinux 0x7b6f9d27 scmd_printk +EXPORT_SYMBOL vmlinux 0x7b75fd20 blkdev_issue_zeroout +EXPORT_SYMBOL vmlinux 0x7b7c6207 jbd2_journal_start +EXPORT_SYMBOL vmlinux 0x7b7d2b24 tty_hangup +EXPORT_SYMBOL vmlinux 0x7bad7a1a acpi_walk_resources +EXPORT_SYMBOL vmlinux 0x7bb9e671 sock_queue_rcv_skb +EXPORT_SYMBOL vmlinux 0x7bbec471 blk_queue_unprep_rq +EXPORT_SYMBOL vmlinux 0x7bd0a261 file_open_root +EXPORT_SYMBOL vmlinux 0x7be75ffc acpi_walk_resource_buffer +EXPORT_SYMBOL vmlinux 0x7bec08fa xfrm_unregister_type +EXPORT_SYMBOL vmlinux 0x7bf5eb8c cfb_fillrect +EXPORT_SYMBOL vmlinux 0x7c1372e8 panic +EXPORT_SYMBOL vmlinux 0x7c13dcc9 qdisc_class_hash_grow +EXPORT_SYMBOL vmlinux 0x7c173634 __bitmap_complement +EXPORT_SYMBOL vmlinux 0x7c210d69 disk_stack_limits +EXPORT_SYMBOL vmlinux 0x7c23cb33 netdev_rx_csum_fault +EXPORT_SYMBOL vmlinux 0x7c2613de sk_filter +EXPORT_SYMBOL vmlinux 0x7c2d098f krealloc +EXPORT_SYMBOL vmlinux 0x7c46233a cpufreq_quick_get +EXPORT_SYMBOL vmlinux 0x7c4ac45c kiocb_set_cancel_fn +EXPORT_SYMBOL vmlinux 0x7c61340c __release_region +EXPORT_SYMBOL vmlinux 0x7c644c44 vme_master_mmap +EXPORT_SYMBOL vmlinux 0x7c75c65c ip6_expire_frag_queue +EXPORT_SYMBOL vmlinux 0x7c98845d twl_i2c_read +EXPORT_SYMBOL vmlinux 0x7cb1ae69 cpu_down +EXPORT_SYMBOL vmlinux 0x7cd469aa neigh_resolve_output +EXPORT_SYMBOL vmlinux 0x7cdb2362 scsi_cmd_blk_ioctl +EXPORT_SYMBOL vmlinux 0x7ce18c9f from_kqid +EXPORT_SYMBOL vmlinux 0x7ce83365 acpi_remove_table_handler +EXPORT_SYMBOL vmlinux 0x7ceb165d qdisc_list_del +EXPORT_SYMBOL vmlinux 0x7cf35220 vme_master_free +EXPORT_SYMBOL vmlinux 0x7d087ef0 agp_collect_device_status +EXPORT_SYMBOL vmlinux 0x7d0db45c jiffies_to_clock_t +EXPORT_SYMBOL vmlinux 0x7d0e6c25 __tcf_em_tree_match +EXPORT_SYMBOL vmlinux 0x7d11c268 jiffies +EXPORT_SYMBOL vmlinux 0x7d149bb3 ns_capable +EXPORT_SYMBOL vmlinux 0x7d1e28b9 mark_buffer_dirty +EXPORT_SYMBOL vmlinux 0x7d268638 poll_schedule_timeout +EXPORT_SYMBOL vmlinux 0x7d287136 neigh_proc_dointvec_ms_jiffies +EXPORT_SYMBOL vmlinux 0x7d496b15 param_get_byte +EXPORT_SYMBOL vmlinux 0x7d705738 blk_start_plug +EXPORT_SYMBOL vmlinux 0x7d7d2e3f write_one_page +EXPORT_SYMBOL vmlinux 0x7d8268b5 __hw_addr_sync_dev +EXPORT_SYMBOL vmlinux 0x7d92cc52 pci_set_dma_max_seg_size +EXPORT_SYMBOL vmlinux 0x7d94f746 acpi_os_write_port +EXPORT_SYMBOL vmlinux 0x7d96cea3 wait_for_completion_interruptible +EXPORT_SYMBOL vmlinux 0x7dbc2e57 mmiotrace_printk +EXPORT_SYMBOL vmlinux 0x7dd554fc unregister_kmmio_probe +EXPORT_SYMBOL vmlinux 0x7deff673 dm_consume_args +EXPORT_SYMBOL vmlinux 0x7e226a7f __vlan_find_dev_deep_rcu +EXPORT_SYMBOL vmlinux 0x7e2ff645 inode_init_always +EXPORT_SYMBOL vmlinux 0x7e54086f textsearch_destroy +EXPORT_SYMBOL vmlinux 0x7e590ecc phy_driver_register +EXPORT_SYMBOL vmlinux 0x7e6065d5 sk_free +EXPORT_SYMBOL vmlinux 0x7e659544 unregister_cdrom +EXPORT_SYMBOL vmlinux 0x7e7fc3fb __wake_up_bit +EXPORT_SYMBOL vmlinux 0x7ea5d650 inet_addr_type +EXPORT_SYMBOL vmlinux 0x7eb11d34 from_kgid +EXPORT_SYMBOL vmlinux 0x7ebd4be4 trace_print_flags_seq +EXPORT_SYMBOL vmlinux 0x7ecb80bf icmpv6_send +EXPORT_SYMBOL vmlinux 0x7ee6d93a nsecs_to_jiffies64 +EXPORT_SYMBOL vmlinux 0x7ef65ba2 kernel_sock_ioctl +EXPORT_SYMBOL vmlinux 0x7f02188f __msecs_to_jiffies +EXPORT_SYMBOL vmlinux 0x7f098ad9 udp_lib_unhash +EXPORT_SYMBOL vmlinux 0x7f0e1fa5 framebuffer_alloc +EXPORT_SYMBOL vmlinux 0x7f14a942 security_inode_getsecctx +EXPORT_SYMBOL vmlinux 0x7f24de73 jiffies_to_usecs +EXPORT_SYMBOL vmlinux 0x7f5f0dce put_disk +EXPORT_SYMBOL vmlinux 0x7f62a045 cpu_maps_update_done +EXPORT_SYMBOL vmlinux 0x7f85eea0 devm_kvasprintf +EXPORT_SYMBOL vmlinux 0x7fa00b46 dcb_ieee_delapp +EXPORT_SYMBOL vmlinux 0x7fa2e826 netdev_boot_setup_check +EXPORT_SYMBOL vmlinux 0x7fb05c0a dev_activate +EXPORT_SYMBOL vmlinux 0x7fbad642 netdev_master_upper_dev_link +EXPORT_SYMBOL vmlinux 0x7fbd10d2 radix_tree_next_chunk +EXPORT_SYMBOL vmlinux 0x7fe2aabb xfrm_state_insert +EXPORT_SYMBOL vmlinux 0x7fe32873 rb_replace_node +EXPORT_SYMBOL vmlinux 0x7fe38f48 sg_copy_to_buffer +EXPORT_SYMBOL vmlinux 0x7fe62cc6 twl6040_reg_read +EXPORT_SYMBOL vmlinux 0x7feaa79f ps2_cmd_aborted +EXPORT_SYMBOL vmlinux 0x7ffc0004 kernel_sendpage +EXPORT_SYMBOL vmlinux 0x800f95e0 mmc_can_discard +EXPORT_SYMBOL vmlinux 0x8014fa00 pci_bus_add_devices +EXPORT_SYMBOL vmlinux 0x801aac1d scsi_command_normalize_sense +EXPORT_SYMBOL vmlinux 0x801ec18f __skb_checksum_complete +EXPORT_SYMBOL vmlinux 0x8026df61 netlink_capable +EXPORT_SYMBOL vmlinux 0x802c8cda proc_symlink +EXPORT_SYMBOL vmlinux 0x8041d822 tty_mutex +EXPORT_SYMBOL vmlinux 0x805128b8 xfrm_input_register_afinfo +EXPORT_SYMBOL vmlinux 0x8055a547 noop_qdisc +EXPORT_SYMBOL vmlinux 0x805d296e __devm_release_region +EXPORT_SYMBOL vmlinux 0x8068c15c kblockd_schedule_delayed_work +EXPORT_SYMBOL vmlinux 0x806dd196 dma_set_mask +EXPORT_SYMBOL vmlinux 0x80791a8c radix_tree_gang_lookup_slot +EXPORT_SYMBOL vmlinux 0x807ebc9d kset_register +EXPORT_SYMBOL vmlinux 0x80824030 inet_csk_init_xmit_timers +EXPORT_SYMBOL vmlinux 0x80928876 ioc_lookup_icq +EXPORT_SYMBOL vmlinux 0x809388ca idr_destroy +EXPORT_SYMBOL vmlinux 0x809b23ef input_register_device +EXPORT_SYMBOL vmlinux 0x80ca5026 _bin2bcd +EXPORT_SYMBOL vmlinux 0x80d147db skb_dequeue +EXPORT_SYMBOL vmlinux 0x80d68d3e fb_register_client +EXPORT_SYMBOL vmlinux 0x80dbeb30 iput +EXPORT_SYMBOL vmlinux 0x80e2bd66 serial8250_register_8250_port +EXPORT_SYMBOL vmlinux 0x80eb423b acpi_get_object_info +EXPORT_SYMBOL vmlinux 0x81144f9d idr_find_slowpath +EXPORT_SYMBOL vmlinux 0x8118240d pcie_capability_read_dword +EXPORT_SYMBOL vmlinux 0x8132a393 pci_scan_bridge +EXPORT_SYMBOL vmlinux 0x813a1fd0 __xfrm_decode_session +EXPORT_SYMBOL vmlinux 0x813e2e28 bprm_change_interp +EXPORT_SYMBOL vmlinux 0x81472677 acpi_get_table +EXPORT_SYMBOL vmlinux 0x814e7730 nf_ct_destroy +EXPORT_SYMBOL vmlinux 0x81510b05 dma_alloc_attrs +EXPORT_SYMBOL vmlinux 0x81533963 sysfs_format_mac +EXPORT_SYMBOL vmlinux 0x815b5dd4 match_octal +EXPORT_SYMBOL vmlinux 0x815f2897 empty_zero_page +EXPORT_SYMBOL vmlinux 0x816014dc nla_put_nohdr +EXPORT_SYMBOL vmlinux 0x816e12e9 tcp_md5_hash_key +EXPORT_SYMBOL vmlinux 0x81a4a453 __blk_mq_end_request +EXPORT_SYMBOL vmlinux 0x81d9fb7a jbd2_journal_init_inode +EXPORT_SYMBOL vmlinux 0x81db6ebb xz_dec_reset +EXPORT_SYMBOL vmlinux 0x81e6b37f dmi_get_system_info +EXPORT_SYMBOL vmlinux 0x82072614 tasklet_kill +EXPORT_SYMBOL vmlinux 0x82072ebb skb_add_rx_frag +EXPORT_SYMBOL vmlinux 0x8212721d xenbus_dev_request_and_reply +EXPORT_SYMBOL vmlinux 0x82458f7f radix_tree_delete_item +EXPORT_SYMBOL vmlinux 0x82480410 sock_common_getsockopt +EXPORT_SYMBOL vmlinux 0x82619f27 serio_reconnect +EXPORT_SYMBOL vmlinux 0x8261b0af md_reap_sync_thread +EXPORT_SYMBOL vmlinux 0x82701365 int_to_scsilun +EXPORT_SYMBOL vmlinux 0x828062b1 __frontswap_init +EXPORT_SYMBOL vmlinux 0x82871b60 dmt_modes +EXPORT_SYMBOL vmlinux 0x828890eb __bio_clone_fast +EXPORT_SYMBOL vmlinux 0x829534b3 fence_free +EXPORT_SYMBOL vmlinux 0x82acfb70 blk_iopoll_sched +EXPORT_SYMBOL vmlinux 0x82ce0e95 inet_shutdown +EXPORT_SYMBOL vmlinux 0x8304733a blk_set_stacking_limits +EXPORT_SYMBOL vmlinux 0x830e547b ioremap_prot +EXPORT_SYMBOL vmlinux 0x83186f87 devfreq_monitor_resume +EXPORT_SYMBOL vmlinux 0x833c03aa acpi_enable_all_runtime_gpes +EXPORT_SYMBOL vmlinux 0x8354b52c notify_change +EXPORT_SYMBOL vmlinux 0x835bc301 netif_device_detach +EXPORT_SYMBOL vmlinux 0x83650d34 led_update_brightness +EXPORT_SYMBOL vmlinux 0x8368cde2 set_page_dirty_lock +EXPORT_SYMBOL vmlinux 0x836ca242 add_to_page_cache_locked +EXPORT_SYMBOL vmlinux 0x837485a6 pnp_get_resource +EXPORT_SYMBOL vmlinux 0x8384647a acpi_map_pxm_to_online_node +EXPORT_SYMBOL vmlinux 0x839430b2 __register_cpu_notifier +EXPORT_SYMBOL vmlinux 0x83a09be1 blkdev_put +EXPORT_SYMBOL vmlinux 0x83aa57bc alloc_anon_inode +EXPORT_SYMBOL vmlinux 0x83abf896 vga_switcheroo_unregister_client +EXPORT_SYMBOL vmlinux 0x83b009ea xfrm_state_walk_init +EXPORT_SYMBOL vmlinux 0x83c52fba xfrm4_protocol_init +EXPORT_SYMBOL vmlinux 0x83e8637c __tty_alloc_driver +EXPORT_SYMBOL vmlinux 0x83ea6e20 sock_no_mmap +EXPORT_SYMBOL vmlinux 0x84060081 xen_poll_irq_timeout +EXPORT_SYMBOL vmlinux 0x8408aea6 pci_map_rom +EXPORT_SYMBOL vmlinux 0x8411ecfd dev_mc_sync_multiple +EXPORT_SYMBOL vmlinux 0x8417f512 acpi_update_all_gpes +EXPORT_SYMBOL vmlinux 0x841df879 skb_page_frag_refill +EXPORT_SYMBOL vmlinux 0x84469dd9 no_llseek +EXPORT_SYMBOL vmlinux 0x844e3767 radix_tree_lookup +EXPORT_SYMBOL vmlinux 0x845aba0d blk_init_allocated_queue +EXPORT_SYMBOL vmlinux 0x84702341 inet6_del_protocol +EXPORT_SYMBOL vmlinux 0x84731761 copy_to_iter +EXPORT_SYMBOL vmlinux 0x84782ec5 check_disk_size_change +EXPORT_SYMBOL vmlinux 0x84793ecc __dquot_alloc_space +EXPORT_SYMBOL vmlinux 0x84798ad6 netdev_printk +EXPORT_SYMBOL vmlinux 0x8480fa05 agp_generic_mask_memory +EXPORT_SYMBOL vmlinux 0x84ac9ed3 end_buffer_read_sync +EXPORT_SYMBOL vmlinux 0x84b9bfd7 pci_release_selected_regions +EXPORT_SYMBOL vmlinux 0x84dfc004 from_kuid +EXPORT_SYMBOL vmlinux 0x84ecbd55 mmc_gpiod_request_ro +EXPORT_SYMBOL vmlinux 0x84fab064 __blk_end_request +EXPORT_SYMBOL vmlinux 0x84ffea8b idr_preload +EXPORT_SYMBOL vmlinux 0x8507c383 proc_dointvec +EXPORT_SYMBOL vmlinux 0x85107e51 devm_ioport_unmap +EXPORT_SYMBOL vmlinux 0x851165b3 blk_rq_map_kern +EXPORT_SYMBOL vmlinux 0x85147d9a tcf_exts_change +EXPORT_SYMBOL vmlinux 0x8519e646 pci_enable_device_mem +EXPORT_SYMBOL vmlinux 0x8526c35a remove_wait_queue +EXPORT_SYMBOL vmlinux 0x852cefd3 ab3100_event_unregister +EXPORT_SYMBOL vmlinux 0x8534612d pcie_get_readrq +EXPORT_SYMBOL vmlinux 0x85362a82 dst_alloc +EXPORT_SYMBOL vmlinux 0x85562250 __devm_gpiod_get_index_optional +EXPORT_SYMBOL vmlinux 0x85670f1d rtnl_is_locked +EXPORT_SYMBOL vmlinux 0x85707550 find_lock_entry +EXPORT_SYMBOL vmlinux 0x857582f7 acpi_enable_all_wakeup_gpes +EXPORT_SYMBOL vmlinux 0x8578d7ab inet_frags_init +EXPORT_SYMBOL vmlinux 0x859172be pci_release_regions +EXPORT_SYMBOL vmlinux 0x8593c1d1 dquot_operations +EXPORT_SYMBOL vmlinux 0x85971216 dcb_ieee_setapp +EXPORT_SYMBOL vmlinux 0x859be8ba mmc_can_sanitize +EXPORT_SYMBOL vmlinux 0x85af5599 devm_devfreq_add_device +EXPORT_SYMBOL vmlinux 0x85b5e625 rfkill_set_states +EXPORT_SYMBOL vmlinux 0x85be62d5 inet_dgram_ops +EXPORT_SYMBOL vmlinux 0x85be70ab nf_reinject +EXPORT_SYMBOL vmlinux 0x85c4a65c dma_async_tx_descriptor_init +EXPORT_SYMBOL vmlinux 0x85df9b6c strsep +EXPORT_SYMBOL vmlinux 0x85efc7e0 zero_pfn +EXPORT_SYMBOL vmlinux 0x86024834 __blk_run_queue +EXPORT_SYMBOL vmlinux 0x86040cf8 set_pages_array_wc +EXPORT_SYMBOL vmlinux 0x860824d9 input_reset_device +EXPORT_SYMBOL vmlinux 0x8608aeba tty_port_destroy +EXPORT_SYMBOL vmlinux 0x8612cb9e devm_backlight_device_register +EXPORT_SYMBOL vmlinux 0x861e22a4 acpi_map_cpu +EXPORT_SYMBOL vmlinux 0x862d4445 sock_kzfree_s +EXPORT_SYMBOL vmlinux 0x8643c13e locks_remove_posix +EXPORT_SYMBOL vmlinux 0x864d7e3c input_inject_event +EXPORT_SYMBOL vmlinux 0x865029ac __hw_addr_sync +EXPORT_SYMBOL vmlinux 0x86588053 gen_pool_destroy +EXPORT_SYMBOL vmlinux 0x865d263c tcp_sockets_allocated +EXPORT_SYMBOL vmlinux 0x8664f62e cpufreq_update_policy +EXPORT_SYMBOL vmlinux 0x86680674 proto_register +EXPORT_SYMBOL vmlinux 0x868acba5 get_options +EXPORT_SYMBOL vmlinux 0x86af270b scsi_print_result +EXPORT_SYMBOL vmlinux 0x86c4c973 __scsi_device_lookup +EXPORT_SYMBOL vmlinux 0x86ca8e44 mmc_read_bkops_status +EXPORT_SYMBOL vmlinux 0x86e991dc agp_alloc_bridge +EXPORT_SYMBOL vmlinux 0x86f2a7b6 __register_chrdev +EXPORT_SYMBOL vmlinux 0x86f719aa neigh_parms_alloc +EXPORT_SYMBOL vmlinux 0x86fb9b05 bitmap_parse_user +EXPORT_SYMBOL vmlinux 0x86fe3084 reservation_object_add_shared_fence +EXPORT_SYMBOL vmlinux 0x8712c771 netif_rx_ni +EXPORT_SYMBOL vmlinux 0x8715d250 swiotlb_sync_sg_for_device +EXPORT_SYMBOL vmlinux 0x871c0a7e fiemap_check_flags +EXPORT_SYMBOL vmlinux 0x872d143c sk_stream_wait_close +EXPORT_SYMBOL vmlinux 0x8737449c register_cdrom +EXPORT_SYMBOL vmlinux 0x873d7fcc mmc_of_parse +EXPORT_SYMBOL vmlinux 0x874a0d8a kernel_sock_shutdown +EXPORT_SYMBOL vmlinux 0x876225ee kobject_set_name +EXPORT_SYMBOL vmlinux 0x876be75d scsi_cmd_get_serial +EXPORT_SYMBOL vmlinux 0x876dafc3 ec_write +EXPORT_SYMBOL vmlinux 0x878ab3ce sysctl_tcp_adv_win_scale +EXPORT_SYMBOL vmlinux 0x878cd015 wait_for_completion_interruptible_timeout +EXPORT_SYMBOL vmlinux 0x87a9b462 fb_set_cmap +EXPORT_SYMBOL vmlinux 0x87aaddf8 wrmsr_safe_regs_on_cpu +EXPORT_SYMBOL vmlinux 0x87c58a96 smp_call_function_many +EXPORT_SYMBOL vmlinux 0x87f4d7ba add_random_ready_callback +EXPORT_SYMBOL vmlinux 0x87f89ce0 _raw_read_unlock_irqrestore +EXPORT_SYMBOL vmlinux 0x88009cd8 kobject_put +EXPORT_SYMBOL vmlinux 0x8800cbba _raw_read_unlock_irq +EXPORT_SYMBOL vmlinux 0x88030fb7 cfb_imageblit +EXPORT_SYMBOL vmlinux 0x8819a1dc linkwatch_fire_event +EXPORT_SYMBOL vmlinux 0x88201ee6 mipi_dsi_dcs_get_pixel_format +EXPORT_SYMBOL vmlinux 0x8823b98d tcp_rcv_established +EXPORT_SYMBOL vmlinux 0x882f706a blk_finish_request +EXPORT_SYMBOL vmlinux 0x88588afb free_page_put_link +EXPORT_SYMBOL vmlinux 0x885c1cfc genlmsg_put +EXPORT_SYMBOL vmlinux 0x88751b04 simple_getattr +EXPORT_SYMBOL vmlinux 0x88778eac cancel_dirty_page +EXPORT_SYMBOL vmlinux 0x887fa47e __getnstimeofday64 +EXPORT_SYMBOL vmlinux 0x88cb9963 unregister_framebuffer +EXPORT_SYMBOL vmlinux 0x88f1a7a8 x86_dma_fallback_dev +EXPORT_SYMBOL vmlinux 0x8902824a is_bad_inode +EXPORT_SYMBOL vmlinux 0x891bef26 vm_stat +EXPORT_SYMBOL vmlinux 0x892321cf vme_register_driver +EXPORT_SYMBOL vmlinux 0x892b26a0 set_memory_nx +EXPORT_SYMBOL vmlinux 0x892d2293 vga_switcheroo_register_audio_client +EXPORT_SYMBOL vmlinux 0x894ad605 skb_copy_and_csum_dev +EXPORT_SYMBOL vmlinux 0x899b1e79 jbd2_journal_flush +EXPORT_SYMBOL vmlinux 0x89afe34e __kfifo_dma_in_prepare +EXPORT_SYMBOL vmlinux 0x89c4fd42 gnet_stats_start_copy_compat +EXPORT_SYMBOL vmlinux 0x89d5538d fb_pad_aligned_buffer +EXPORT_SYMBOL vmlinux 0x89de6683 zpool_unregister_driver +EXPORT_SYMBOL vmlinux 0x89feaf69 input_handler_for_each_handle +EXPORT_SYMBOL vmlinux 0x89febb43 loop_backing_file +EXPORT_SYMBOL vmlinux 0x8a0b12c6 complete_all +EXPORT_SYMBOL vmlinux 0x8a0ba435 ata_port_printk +EXPORT_SYMBOL vmlinux 0x8a0e7244 up_read +EXPORT_SYMBOL vmlinux 0x8a137d67 inet_reqsk_alloc +EXPORT_SYMBOL vmlinux 0x8a1ab4ee timeval_to_jiffies +EXPORT_SYMBOL vmlinux 0x8a490c90 rfkill_set_sw_state +EXPORT_SYMBOL vmlinux 0x8a51d565 quota_send_warning +EXPORT_SYMBOL vmlinux 0x8a653f57 tso_count_descs +EXPORT_SYMBOL vmlinux 0x8a6944f9 percpu_counter_set +EXPORT_SYMBOL vmlinux 0x8a6af65c kstrtoul_from_user +EXPORT_SYMBOL vmlinux 0x8a6c47b1 dcb_setapp +EXPORT_SYMBOL vmlinux 0x8a7d1c31 high_memory +EXPORT_SYMBOL vmlinux 0x8a80d7a5 acpi_error +EXPORT_SYMBOL vmlinux 0x8a864967 param_get_ulong +EXPORT_SYMBOL vmlinux 0x8a99a016 mempool_free_slab +EXPORT_SYMBOL vmlinux 0x8a9c108a dm_kcopyd_copy +EXPORT_SYMBOL vmlinux 0x8aa2fe33 scsi_block_requests +EXPORT_SYMBOL vmlinux 0x8aa6d90d nf_ct_attach +EXPORT_SYMBOL vmlinux 0x8ab19de0 register_xen_selfballooning +EXPORT_SYMBOL vmlinux 0x8ac64082 neigh_xmit +EXPORT_SYMBOL vmlinux 0x8adc6008 tcp_read_sock +EXPORT_SYMBOL vmlinux 0x8af4ae3e gnet_stats_copy_rate_est +EXPORT_SYMBOL vmlinux 0x8b1e0099 iov_iter_get_pages_alloc +EXPORT_SYMBOL vmlinux 0x8b32a1d8 sk_stream_write_space +EXPORT_SYMBOL vmlinux 0x8b35e873 sg_last +EXPORT_SYMBOL vmlinux 0x8b43159b register_cpu_notifier +EXPORT_SYMBOL vmlinux 0x8b5dfbe2 mmc_gpio_set_cd_isr +EXPORT_SYMBOL vmlinux 0x8b618d08 overflowuid +EXPORT_SYMBOL vmlinux 0x8b749b1a xen_biovec_phys_mergeable +EXPORT_SYMBOL vmlinux 0x8b75d636 pci_write_vpd +EXPORT_SYMBOL vmlinux 0x8b8059bd in_group_p +EXPORT_SYMBOL vmlinux 0x8b8b1c84 tty_chars_in_buffer +EXPORT_SYMBOL vmlinux 0x8b97661f vfs_write +EXPORT_SYMBOL vmlinux 0x8b989cf9 acpi_bus_can_wakeup +EXPORT_SYMBOL vmlinux 0x8bad5681 set_pages_array_uc +EXPORT_SYMBOL vmlinux 0x8bcdc27d ipv6_chk_addr +EXPORT_SYMBOL vmlinux 0x8bd07afd __skb_get_hash_flowi4 +EXPORT_SYMBOL vmlinux 0x8bf303fe dst_cow_metrics_generic +EXPORT_SYMBOL vmlinux 0x8bf7c3ba jbd2_journal_revoke +EXPORT_SYMBOL vmlinux 0x8c183cbe iowrite16 +EXPORT_SYMBOL vmlinux 0x8c1f35d8 netdev_refcnt_read +EXPORT_SYMBOL vmlinux 0x8c2204d2 mfd_cell_disable +EXPORT_SYMBOL vmlinux 0x8c391537 __pskb_copy_fclone +EXPORT_SYMBOL vmlinux 0x8c637d43 irq_cpu_rmap_add +EXPORT_SYMBOL vmlinux 0x8c6b21ab cdrom_mode_sense +EXPORT_SYMBOL vmlinux 0x8c8495d5 neigh_app_ns +EXPORT_SYMBOL vmlinux 0x8c99abeb follow_up +EXPORT_SYMBOL vmlinux 0x8cab69d5 dquot_free_inode +EXPORT_SYMBOL vmlinux 0x8cbb70d6 scsi_target_quiesce +EXPORT_SYMBOL vmlinux 0x8cbd0db2 __sb_start_write +EXPORT_SYMBOL vmlinux 0x8cc2ecc8 napi_get_frags +EXPORT_SYMBOL vmlinux 0x8cc79cab iowrite16_rep +EXPORT_SYMBOL vmlinux 0x8cda8029 xen_clear_irq_pending +EXPORT_SYMBOL vmlinux 0x8cead155 tcp_md5_do_add +EXPORT_SYMBOL vmlinux 0x8ced82f4 xfrm_policy_walk_done +EXPORT_SYMBOL vmlinux 0x8cf41890 inode_add_bytes +EXPORT_SYMBOL vmlinux 0x8d03871b serio_unregister_port +EXPORT_SYMBOL vmlinux 0x8d0cc3b2 pci_bus_set_ops +EXPORT_SYMBOL vmlinux 0x8d238b32 inet_dev_addr_type +EXPORT_SYMBOL vmlinux 0x8d38c858 tcp_create_openreq_child +EXPORT_SYMBOL vmlinux 0x8d551bef sysctl_tcp_rmem +EXPORT_SYMBOL vmlinux 0x8d55bb8a qid_eq +EXPORT_SYMBOL vmlinux 0x8d73278e hex_asc_upper +EXPORT_SYMBOL vmlinux 0x8d73b5b0 mmc_set_data_timeout +EXPORT_SYMBOL vmlinux 0x8d773d69 kmem_cache_size +EXPORT_SYMBOL vmlinux 0x8d838d91 ida_remove +EXPORT_SYMBOL vmlinux 0x8d84862d udp_set_csum +EXPORT_SYMBOL vmlinux 0x8d8517aa inet_twsk_deschedule +EXPORT_SYMBOL vmlinux 0x8d8d96c6 acpi_get_sleep_type_data +EXPORT_SYMBOL vmlinux 0x8d9191c7 sg_miter_start +EXPORT_SYMBOL vmlinux 0x8d930135 key_invalidate +EXPORT_SYMBOL vmlinux 0x8da1a0ed generic_error_remove_page +EXPORT_SYMBOL vmlinux 0x8da1a3cb acpi_remove_interface +EXPORT_SYMBOL vmlinux 0x8daf8c42 dql_init +EXPORT_SYMBOL vmlinux 0x8dbd7eb8 iov_iter_zero +EXPORT_SYMBOL vmlinux 0x8dcf7ebb ipv6_chk_prefix +EXPORT_SYMBOL vmlinux 0x8de23a2b t10_pi_type1_ip +EXPORT_SYMBOL vmlinux 0x8deabc6c elv_rb_del +EXPORT_SYMBOL vmlinux 0x8df92f66 memchr_inv +EXPORT_SYMBOL vmlinux 0x8e002cda acpi_remove_gpe_block +EXPORT_SYMBOL vmlinux 0x8e082688 _raw_read_lock +EXPORT_SYMBOL vmlinux 0x8e119012 vmalloc_to_page +EXPORT_SYMBOL vmlinux 0x8e26b629 __nla_reserve_nohdr +EXPORT_SYMBOL vmlinux 0x8e2dae4f inet_csk_clear_xmit_timers +EXPORT_SYMBOL vmlinux 0x8e3d014e remove_arg_zero +EXPORT_SYMBOL vmlinux 0x8e60c876 compat_ipv6_setsockopt +EXPORT_SYMBOL vmlinux 0x8e7b659a agp_generic_free_by_type +EXPORT_SYMBOL vmlinux 0x8e81405e pid_task +EXPORT_SYMBOL vmlinux 0x8e88fab2 unregister_netdevice_queue +EXPORT_SYMBOL vmlinux 0x8eaf2a5f vga_switcheroo_unregister_handler +EXPORT_SYMBOL vmlinux 0x8eda370f agp_create_memory +EXPORT_SYMBOL vmlinux 0x8ef9932c scsi_report_opcode +EXPORT_SYMBOL vmlinux 0x8f065544 vga_switcheroo_fini_domain_pm_ops +EXPORT_SYMBOL vmlinux 0x8f2703b7 wbinvd_on_all_cpus +EXPORT_SYMBOL vmlinux 0x8f2e4e99 kfree_put_link +EXPORT_SYMBOL vmlinux 0x8f41dd5f skb_copy_and_csum_bits +EXPORT_SYMBOL vmlinux 0x8f4a8590 pci_get_domain_bus_and_slot +EXPORT_SYMBOL vmlinux 0x8f507124 gen_pool_alloc +EXPORT_SYMBOL vmlinux 0x8f68bc1d textsearch_find_continuous +EXPORT_SYMBOL vmlinux 0x8f8165a4 sock_efree +EXPORT_SYMBOL vmlinux 0x8f8f477a sock_no_sendmsg +EXPORT_SYMBOL vmlinux 0x8f9c199c __get_user_2 +EXPORT_SYMBOL vmlinux 0x8fa6fc8c i8042_remove_filter +EXPORT_SYMBOL vmlinux 0x8fb44415 nvdimm_bus_lock +EXPORT_SYMBOL vmlinux 0x8fbe07e4 fb_show_logo +EXPORT_SYMBOL vmlinux 0x8fd2ed68 __mutex_init +EXPORT_SYMBOL vmlinux 0x8fdf124d blk_queue_stack_limits +EXPORT_SYMBOL vmlinux 0x900a7c84 mipi_dsi_dcs_get_power_mode +EXPORT_SYMBOL vmlinux 0x904409c6 acpi_set_firmware_waking_vector +EXPORT_SYMBOL vmlinux 0x906146d6 blk_queue_update_dma_pad +EXPORT_SYMBOL vmlinux 0x906b0e30 netlink_broadcast +EXPORT_SYMBOL vmlinux 0x9084a02e generic_file_read_iter +EXPORT_SYMBOL vmlinux 0x90a92485 tcp_proto_cgroup +EXPORT_SYMBOL vmlinux 0x90b0a8af uart_write_wakeup +EXPORT_SYMBOL vmlinux 0x90c24a46 netif_rx +EXPORT_SYMBOL vmlinux 0x90d9f308 pci_get_subsys +EXPORT_SYMBOL vmlinux 0x90edd9a1 alloc_pages_current +EXPORT_SYMBOL vmlinux 0x91123229 iov_iter_init +EXPORT_SYMBOL vmlinux 0x91206f86 tcf_hash_destroy +EXPORT_SYMBOL vmlinux 0x91463b1d kstrtos16 +EXPORT_SYMBOL vmlinux 0x91607d95 set_memory_wb +EXPORT_SYMBOL vmlinux 0x9161e000 neigh_event_ns +EXPORT_SYMBOL vmlinux 0x9166fada strncpy +EXPORT_SYMBOL vmlinux 0x916b12a0 get_gendisk +EXPORT_SYMBOL vmlinux 0x91715312 sprintf +EXPORT_SYMBOL vmlinux 0x917d19dd md_update_sb +EXPORT_SYMBOL vmlinux 0x91967e8e xen_selfballoon_init +EXPORT_SYMBOL vmlinux 0x9198dc5a pcie_set_readrq +EXPORT_SYMBOL vmlinux 0x91a6b0bc release_pages +EXPORT_SYMBOL vmlinux 0x91ac822f vscnprintf +EXPORT_SYMBOL vmlinux 0x91bbc442 abx500_get_chip_id +EXPORT_SYMBOL vmlinux 0x91c07190 xfrm4_prepare_output +EXPORT_SYMBOL vmlinux 0x91cbd32b xfrm_spd_getinfo +EXPORT_SYMBOL vmlinux 0x91d857d8 blk_pre_runtime_resume +EXPORT_SYMBOL vmlinux 0x91dd2c2b dquot_quota_on_mount +EXPORT_SYMBOL vmlinux 0x91f6b6e9 udplite_prot +EXPORT_SYMBOL vmlinux 0x91fc4bb4 complete_request_key +EXPORT_SYMBOL vmlinux 0x920017ce sock_common_recvmsg +EXPORT_SYMBOL vmlinux 0x92036a61 kill_fasync +EXPORT_SYMBOL vmlinux 0x92112faf processors +EXPORT_SYMBOL vmlinux 0x921d55b7 bio_split +EXPORT_SYMBOL vmlinux 0x922ea8fc inet_dgram_connect +EXPORT_SYMBOL vmlinux 0x9238738a padata_remove_cpu +EXPORT_SYMBOL vmlinux 0x923a2f22 to_ndd +EXPORT_SYMBOL vmlinux 0x923b1276 dmaengine_get +EXPORT_SYMBOL vmlinux 0x923c1029 filemap_fdatawrite +EXPORT_SYMBOL vmlinux 0x92462ab6 ping_prot +EXPORT_SYMBOL vmlinux 0x925e0924 __wait_on_bit +EXPORT_SYMBOL vmlinux 0x926f5716 request_firmware +EXPORT_SYMBOL vmlinux 0x9277ed1f pnp_register_card_driver +EXPORT_SYMBOL vmlinux 0x9291cd3b memdup_user +EXPORT_SYMBOL vmlinux 0x92a9c60c time_to_tm +EXPORT_SYMBOL vmlinux 0x92c276be tty_port_lower_dtr_rts +EXPORT_SYMBOL vmlinux 0x92e4d2fe flow_hash_from_keys +EXPORT_SYMBOL vmlinux 0x92ee58c1 tso_start +EXPORT_SYMBOL vmlinux 0x92f03dca lro_flush_all +EXPORT_SYMBOL vmlinux 0x92f6767f lg_local_lock +EXPORT_SYMBOL vmlinux 0x92fa5abb vme_lm_detach +EXPORT_SYMBOL vmlinux 0x92fc369f fb_class +EXPORT_SYMBOL vmlinux 0x93022ba6 __scsi_format_command +EXPORT_SYMBOL vmlinux 0x9305f8e6 cpufreq_get +EXPORT_SYMBOL vmlinux 0x9313c383 override_creds +EXPORT_SYMBOL vmlinux 0x9314f161 sock_i_ino +EXPORT_SYMBOL vmlinux 0x932493a8 iosf_mbi_read +EXPORT_SYMBOL vmlinux 0x932f15be devm_ioremap_resource +EXPORT_SYMBOL vmlinux 0x93448c57 screen_info +EXPORT_SYMBOL vmlinux 0x9349c518 jbd2_journal_load +EXPORT_SYMBOL vmlinux 0x9372c854 dcache_dir_lseek +EXPORT_SYMBOL vmlinux 0x937733e3 qid_valid +EXPORT_SYMBOL vmlinux 0x937ff458 mmc_gpio_get_cd +EXPORT_SYMBOL vmlinux 0x939611db ps2_command +EXPORT_SYMBOL vmlinux 0x939d074c sock_kfree_s +EXPORT_SYMBOL vmlinux 0x93a34806 rwsem_downgrade_wake +EXPORT_SYMBOL vmlinux 0x93a8605c pci_pme_capable +EXPORT_SYMBOL vmlinux 0x93b3fc74 register_dcbevent_notifier +EXPORT_SYMBOL vmlinux 0x93baf1d0 napi_gro_receive +EXPORT_SYMBOL vmlinux 0x93bb3b9b x86_hyper +EXPORT_SYMBOL vmlinux 0x93ca1c2e xfrm_state_lookup_byaddr +EXPORT_SYMBOL vmlinux 0x93d01c96 pnp_stop_dev +EXPORT_SYMBOL vmlinux 0x93f0f674 simple_dname +EXPORT_SYMBOL vmlinux 0x93f3e52b acpi_extract_package +EXPORT_SYMBOL vmlinux 0x93f90033 key_reject_and_link +EXPORT_SYMBOL vmlinux 0x93fca811 __get_free_pages +EXPORT_SYMBOL vmlinux 0x9402a6a5 scsilun_to_int +EXPORT_SYMBOL vmlinux 0x940d1ec3 netlink_net_capable +EXPORT_SYMBOL vmlinux 0x9411eab2 phy_start +EXPORT_SYMBOL vmlinux 0x941c5a24 i2c_smbus_read_block_data +EXPORT_SYMBOL vmlinux 0x941d8662 amd_iommu_flush_page +EXPORT_SYMBOL vmlinux 0x9454f713 skb_checksum_help +EXPORT_SYMBOL vmlinux 0x9470f86a blk_queue_io_opt +EXPORT_SYMBOL vmlinux 0x94797c8d may_umount_tree +EXPORT_SYMBOL vmlinux 0x94961283 vunmap +EXPORT_SYMBOL vmlinux 0x94eed35c i2c_use_client +EXPORT_SYMBOL vmlinux 0x95395301 acpi_exception +EXPORT_SYMBOL vmlinux 0x9545af6d tasklet_init +EXPORT_SYMBOL vmlinux 0x955545bd inet6_unregister_icmp_sender +EXPORT_SYMBOL vmlinux 0x955a832f ___preempt_schedule +EXPORT_SYMBOL vmlinux 0x958adcea tty_register_driver +EXPORT_SYMBOL vmlinux 0x958b6387 sockfd_lookup +EXPORT_SYMBOL vmlinux 0x9593dfe8 bio_clone_fast +EXPORT_SYMBOL vmlinux 0x95a3d37d skb_pad +EXPORT_SYMBOL vmlinux 0x95a91d54 mount_pseudo +EXPORT_SYMBOL vmlinux 0x95bd6e26 acpi_install_sci_handler +EXPORT_SYMBOL vmlinux 0x95c27e10 tag_pages_for_writeback +EXPORT_SYMBOL vmlinux 0x95e20e06 dma_common_get_sgtable +EXPORT_SYMBOL vmlinux 0x95fad238 scsi_remove_host +EXPORT_SYMBOL vmlinux 0x96058400 jbd2_journal_extend +EXPORT_SYMBOL vmlinux 0x960680f1 km_policy_expired +EXPORT_SYMBOL vmlinux 0x961637dd xfrm_policy_register_afinfo +EXPORT_SYMBOL vmlinux 0x9640fbaf phy_device_register +EXPORT_SYMBOL vmlinux 0x96454adf brioctl_set +EXPORT_SYMBOL vmlinux 0x96695769 __dev_kfree_skb_any +EXPORT_SYMBOL vmlinux 0x96699263 iterate_mounts +EXPORT_SYMBOL vmlinux 0x967461dc __devm_gpiod_get_optional +EXPORT_SYMBOL vmlinux 0x96779749 tty_port_carrier_raised +EXPORT_SYMBOL vmlinux 0x9682ff69 generic_show_options +EXPORT_SYMBOL vmlinux 0x9690e811 pcie_get_mps +EXPORT_SYMBOL vmlinux 0x969ae2af filemap_fdatawrite_range +EXPORT_SYMBOL vmlinux 0x969c0f35 acpi_processor_unregister_performance +EXPORT_SYMBOL vmlinux 0x969f4b77 vga_switcheroo_register_handler +EXPORT_SYMBOL vmlinux 0x96aba385 proc_dointvec_jiffies +EXPORT_SYMBOL vmlinux 0x96ad45f8 blkdev_get +EXPORT_SYMBOL vmlinux 0x96b29254 strncasecmp +EXPORT_SYMBOL vmlinux 0x96b77880 dev_disable_lro +EXPORT_SYMBOL vmlinux 0x96cd2b04 scsi_sense_key_string +EXPORT_SYMBOL vmlinux 0x96e78eda __scsi_alloc_queue +EXPORT_SYMBOL vmlinux 0x96ff3e3e blk_integrity_register +EXPORT_SYMBOL vmlinux 0x971b472e devm_gpiod_get_array +EXPORT_SYMBOL vmlinux 0x971deb73 mark_info_dirty +EXPORT_SYMBOL vmlinux 0x9735e54f prepare_creds +EXPORT_SYMBOL vmlinux 0x973a603c d_obtain_root +EXPORT_SYMBOL vmlinux 0x973fa82e register_acpi_notifier +EXPORT_SYMBOL vmlinux 0x974b1f69 copy_strings_kernel +EXPORT_SYMBOL vmlinux 0x9754ec10 radix_tree_preload +EXPORT_SYMBOL vmlinux 0x9757d997 sock_alloc_send_skb +EXPORT_SYMBOL vmlinux 0x97789883 kthread_create_on_node +EXPORT_SYMBOL vmlinux 0x97868aef __kfifo_alloc +EXPORT_SYMBOL vmlinux 0x978c5381 devm_ioremap_wc +EXPORT_SYMBOL vmlinux 0x97999817 rfkill_set_hw_state +EXPORT_SYMBOL vmlinux 0x97a57333 crc_t10dif_update +EXPORT_SYMBOL vmlinux 0x97c5bd0a acpi_unload_parent_table +EXPORT_SYMBOL vmlinux 0x97de0ddd acpi_install_gpe_block +EXPORT_SYMBOL vmlinux 0x97e1738b tty_throttle +EXPORT_SYMBOL vmlinux 0x9806f9c6 locks_free_lock +EXPORT_SYMBOL vmlinux 0x980fd2fe blk_mq_end_request +EXPORT_SYMBOL vmlinux 0x9818e7d4 pcie_capability_clear_and_set_word +EXPORT_SYMBOL vmlinux 0x981c3056 sk_receive_skb +EXPORT_SYMBOL vmlinux 0x9820b644 warn_slowpath_fmt_taint +EXPORT_SYMBOL vmlinux 0x9829897d crypto_sha1_update +EXPORT_SYMBOL vmlinux 0x9829fc11 __kfifo_out_peek_r +EXPORT_SYMBOL vmlinux 0x9856c472 ip_mc_leave_group +EXPORT_SYMBOL vmlinux 0x98571ac4 param_get_uint +EXPORT_SYMBOL vmlinux 0x986e6135 fb_pad_unaligned_buffer +EXPORT_SYMBOL vmlinux 0x9878745c _atomic_dec_and_lock +EXPORT_SYMBOL vmlinux 0x988ed85d set_memory_x +EXPORT_SYMBOL vmlinux 0x989cb238 get_user_pages_locked +EXPORT_SYMBOL vmlinux 0x98b2b9d0 mipi_dsi_dcs_write +EXPORT_SYMBOL vmlinux 0x98c68c41 __gnet_stats_copy_basic +EXPORT_SYMBOL vmlinux 0x98e0f5ad set_device_ro +EXPORT_SYMBOL vmlinux 0x98e82efa crypto_sha1_finup +EXPORT_SYMBOL vmlinux 0x98fef9fc simple_transaction_read +EXPORT_SYMBOL vmlinux 0x99195078 vsnprintf +EXPORT_SYMBOL vmlinux 0x9930091c uart_get_baud_rate +EXPORT_SYMBOL vmlinux 0x9939eba0 backlight_unregister_notifier +EXPORT_SYMBOL vmlinux 0x993e774d console_stop +EXPORT_SYMBOL vmlinux 0x9944653a input_flush_device +EXPORT_SYMBOL vmlinux 0x99517682 udp_encap_enable +EXPORT_SYMBOL vmlinux 0x99591a7a ipv6_ext_hdr +EXPORT_SYMBOL vmlinux 0x995f4866 acpi_pm_device_run_wake +EXPORT_SYMBOL vmlinux 0x9968e709 mb_cache_entry_get +EXPORT_SYMBOL vmlinux 0x9981ef71 dma_free_attrs +EXPORT_SYMBOL vmlinux 0x99855ba1 ip_mc_dec_group +EXPORT_SYMBOL vmlinux 0x998d6ce8 phy_ethtool_set_wol +EXPORT_SYMBOL vmlinux 0x9994c0ca ps2_is_keyboard_id +EXPORT_SYMBOL vmlinux 0x999e8297 vfree +EXPORT_SYMBOL vmlinux 0x99af83ef d_splice_alias +EXPORT_SYMBOL vmlinux 0x99b72160 tcp_v4_md5_lookup +EXPORT_SYMBOL vmlinux 0x99ba3e01 acpi_notifier_call_chain +EXPORT_SYMBOL vmlinux 0x99cdc86b sysctl_tcp_reordering +EXPORT_SYMBOL vmlinux 0x99d3a43c dm_table_get_size +EXPORT_SYMBOL vmlinux 0x99da82b5 kill_block_super +EXPORT_SYMBOL vmlinux 0x99daa9bf try_offline_node +EXPORT_SYMBOL vmlinux 0x99f068d5 x86_cpu_to_node_map +EXPORT_SYMBOL vmlinux 0x9a0c2b6e bio_add_pc_page +EXPORT_SYMBOL vmlinux 0x9a1dfd65 strpbrk +EXPORT_SYMBOL vmlinux 0x9a1fc4b4 jiffies_to_timeval +EXPORT_SYMBOL vmlinux 0x9a3d4d7a dm_ratelimit_state +EXPORT_SYMBOL vmlinux 0x9a58343b sk_stop_timer +EXPORT_SYMBOL vmlinux 0x9a5ffc64 __tracepoint_kmem_cache_alloc +EXPORT_SYMBOL vmlinux 0x9a8aa09b dma_common_mmap +EXPORT_SYMBOL vmlinux 0x9a956725 kill_anon_super +EXPORT_SYMBOL vmlinux 0x9a96c1ca dev_mc_sync +EXPORT_SYMBOL vmlinux 0x9ab30635 simple_follow_link +EXPORT_SYMBOL vmlinux 0x9ace5fd1 led_set_brightness +EXPORT_SYMBOL vmlinux 0x9ade99c8 skb_recv_datagram +EXPORT_SYMBOL vmlinux 0x9aeb07e8 vme_lm_attach +EXPORT_SYMBOL vmlinux 0x9afa039e lockref_mark_dead +EXPORT_SYMBOL vmlinux 0x9afcb885 phy_ethtool_set_eee +EXPORT_SYMBOL vmlinux 0x9b0b6dab blk_mq_stop_hw_queue +EXPORT_SYMBOL vmlinux 0x9b2b8422 deactivate_super +EXPORT_SYMBOL vmlinux 0x9b33e0d7 unregister_dcbevent_notifier +EXPORT_SYMBOL vmlinux 0x9b388444 get_zeroed_page +EXPORT_SYMBOL vmlinux 0x9b59aba0 __destroy_inode +EXPORT_SYMBOL vmlinux 0x9b6e7381 write_inode_now +EXPORT_SYMBOL vmlinux 0x9b78442e vlan_dev_vlan_proto +EXPORT_SYMBOL vmlinux 0x9b815a35 bioset_integrity_create +EXPORT_SYMBOL vmlinux 0x9b94a8fd compat_mc_setsockopt +EXPORT_SYMBOL vmlinux 0x9b9e05f9 alloc_cpu_rmap +EXPORT_SYMBOL vmlinux 0x9ba146bf wait_for_completion_io_timeout +EXPORT_SYMBOL vmlinux 0x9ba7089d argv_split +EXPORT_SYMBOL vmlinux 0x9bb57996 agp_generic_destroy_page +EXPORT_SYMBOL vmlinux 0x9bbe88b3 flex_array_put +EXPORT_SYMBOL vmlinux 0x9bc17421 pcix_get_mmrbc +EXPORT_SYMBOL vmlinux 0x9bc6c888 simple_write_begin +EXPORT_SYMBOL vmlinux 0x9bd889d2 __test_set_page_writeback +EXPORT_SYMBOL vmlinux 0x9be7bde4 security_tun_dev_attach +EXPORT_SYMBOL vmlinux 0x9bf7a52f __nla_reserve +EXPORT_SYMBOL vmlinux 0x9c15da63 mark_buffer_async_write +EXPORT_SYMBOL vmlinux 0x9c257fac debugfs_create_automount +EXPORT_SYMBOL vmlinux 0x9c491f60 sg_alloc_table +EXPORT_SYMBOL vmlinux 0x9c57b2cb jbd2_journal_ack_err +EXPORT_SYMBOL vmlinux 0x9c6889af input_unregister_handler +EXPORT_SYMBOL vmlinux 0x9c84f7a3 neigh_destroy +EXPORT_SYMBOL vmlinux 0x9c90ad65 swiotlb_sync_sg_for_cpu +EXPORT_SYMBOL vmlinux 0x9cab34a6 rfkill_set_led_trigger_name +EXPORT_SYMBOL vmlinux 0x9cc22fcc iterate_supers_type +EXPORT_SYMBOL vmlinux 0x9ceed98f phy_attach_direct +EXPORT_SYMBOL vmlinux 0x9cfbf4d2 ipv6_sock_mc_join +EXPORT_SYMBOL vmlinux 0x9d02fbe4 __register_binfmt +EXPORT_SYMBOL vmlinux 0x9d0d6206 unregister_netdevice_notifier +EXPORT_SYMBOL vmlinux 0x9d221c76 ilookup +EXPORT_SYMBOL vmlinux 0x9d292679 mipi_dsi_generic_read +EXPORT_SYMBOL vmlinux 0x9d332bd9 generic_pipe_buf_steal +EXPORT_SYMBOL vmlinux 0x9d33ef5e acpi_enable +EXPORT_SYMBOL vmlinux 0x9d3635fd proc_doulongvec_ms_jiffies_minmax +EXPORT_SYMBOL vmlinux 0x9d36bf47 nf_log_unset +EXPORT_SYMBOL vmlinux 0x9d3aa376 blk_iopoll_init +EXPORT_SYMBOL vmlinux 0x9d3d89a7 dcache_readdir +EXPORT_SYMBOL vmlinux 0x9d46d7bf vga_put +EXPORT_SYMBOL vmlinux 0x9d485de4 pcie_capability_write_word +EXPORT_SYMBOL vmlinux 0x9d4f206a task_tgid_nr_ns +EXPORT_SYMBOL vmlinux 0x9d563d89 vme_dma_list_free +EXPORT_SYMBOL vmlinux 0x9d59aef3 generic_file_write_iter +EXPORT_SYMBOL vmlinux 0x9d6b7a4b inet_csk_delete_keepalive_timer +EXPORT_SYMBOL vmlinux 0x9d8f8800 serial8250_set_isa_configurator +EXPORT_SYMBOL vmlinux 0x9da05e10 mipi_dsi_create_packet +EXPORT_SYMBOL vmlinux 0x9dab4188 dmam_alloc_noncoherent +EXPORT_SYMBOL vmlinux 0x9dbff30e mb_cache_shrink +EXPORT_SYMBOL vmlinux 0x9de946e2 xfrm6_find_1stfragopt +EXPORT_SYMBOL vmlinux 0x9decc15f vga_client_register +EXPORT_SYMBOL vmlinux 0x9e0c711d vzalloc_node +EXPORT_SYMBOL vmlinux 0x9e19962d pci_request_selected_regions_exclusive +EXPORT_SYMBOL vmlinux 0x9e1adcef pci_set_power_state +EXPORT_SYMBOL vmlinux 0x9e21fea8 scsi_bios_ptable +EXPORT_SYMBOL vmlinux 0x9e2f8c90 lz4_decompress_unknownoutputsize +EXPORT_SYMBOL vmlinux 0x9e363b6b acpi_disable_gpe +EXPORT_SYMBOL vmlinux 0x9e45ac4a bdi_destroy +EXPORT_SYMBOL vmlinux 0x9e4b0b0a d_find_any_alias +EXPORT_SYMBOL vmlinux 0x9e4faeef dm_io_client_destroy +EXPORT_SYMBOL vmlinux 0x9e61bb05 set_freezable +EXPORT_SYMBOL vmlinux 0x9e64fbfe rtc_cmos_read +EXPORT_SYMBOL vmlinux 0x9e6ed9ae seq_open_private +EXPORT_SYMBOL vmlinux 0x9e763530 reciprocal_value +EXPORT_SYMBOL vmlinux 0x9e7d6bd0 __udelay +EXPORT_SYMBOL vmlinux 0x9e90ff39 tc_classify_compat +EXPORT_SYMBOL vmlinux 0x9ebd4c04 adjust_resource +EXPORT_SYMBOL vmlinux 0x9ecea39e agp_generic_remove_memory +EXPORT_SYMBOL vmlinux 0x9ee28915 from_kprojid +EXPORT_SYMBOL vmlinux 0x9efa9eeb remap_vmalloc_range +EXPORT_SYMBOL vmlinux 0x9efc160d vga_switcheroo_register_client +EXPORT_SYMBOL vmlinux 0x9f18bcd8 phy_ethtool_sset +EXPORT_SYMBOL vmlinux 0x9f424a7e __scsi_device_lookup_by_target +EXPORT_SYMBOL vmlinux 0x9f46ced8 __sw_hweight64 +EXPORT_SYMBOL vmlinux 0x9f4a284c __dev_getfirstbyhwtype +EXPORT_SYMBOL vmlinux 0x9f4e32aa sock_create_lite +EXPORT_SYMBOL vmlinux 0x9f4fa21f pci_dev_driver +EXPORT_SYMBOL vmlinux 0x9f542467 request_key_async +EXPORT_SYMBOL vmlinux 0x9f58f3c1 bh_uptodate_or_lock +EXPORT_SYMBOL vmlinux 0x9f683851 padata_register_cpumask_notifier +EXPORT_SYMBOL vmlinux 0x9f7280c2 pcim_pin_device +EXPORT_SYMBOL vmlinux 0x9f74ade0 blk_mq_unique_tag +EXPORT_SYMBOL vmlinux 0x9f77bdb8 qdisc_list_add +EXPORT_SYMBOL vmlinux 0x9f7c1be8 skb_flow_dissector_init +EXPORT_SYMBOL vmlinux 0x9f984513 strrchr +EXPORT_SYMBOL vmlinux 0x9fd7cda1 flex_array_prealloc +EXPORT_SYMBOL vmlinux 0x9fdc5cae mdiobus_free +EXPORT_SYMBOL vmlinux 0x9fdecc31 unregister_netdevice_many +EXPORT_SYMBOL vmlinux 0x9feaf4bc d_add_ci +EXPORT_SYMBOL vmlinux 0x9ffa3a75 netdev_max_backlog +EXPORT_SYMBOL vmlinux 0xa00aca2a dql_completed +EXPORT_SYMBOL vmlinux 0xa035ff16 clk_get +EXPORT_SYMBOL vmlinux 0xa0436e98 in6addr_linklocal_allnodes +EXPORT_SYMBOL vmlinux 0xa04a01bd qdisc_class_hash_insert +EXPORT_SYMBOL vmlinux 0xa052be18 agp_bridge +EXPORT_SYMBOL vmlinux 0xa05c03df mempool_kmalloc +EXPORT_SYMBOL vmlinux 0xa06ff399 unregister_sysctl_table +EXPORT_SYMBOL vmlinux 0xa07a37f0 memchr +EXPORT_SYMBOL vmlinux 0xa07ed110 xz_dec_init +EXPORT_SYMBOL vmlinux 0xa084749a __bitmap_or +EXPORT_SYMBOL vmlinux 0xa08952c8 first_ec +EXPORT_SYMBOL vmlinux 0xa09170ae kernel_read +EXPORT_SYMBOL vmlinux 0xa0b04675 vmalloc_32 +EXPORT_SYMBOL vmlinux 0xa0bacaa1 netdev_notify_peers +EXPORT_SYMBOL vmlinux 0xa0ca311d inet_csk_prepare_forced_close +EXPORT_SYMBOL vmlinux 0xa0ccea93 devm_backlight_device_unregister +EXPORT_SYMBOL vmlinux 0xa0dad88e netdev_adjacent_get_private +EXPORT_SYMBOL vmlinux 0xa0ebd14c sysctl_tcp_mem +EXPORT_SYMBOL vmlinux 0xa0fbac79 wake_up_bit +EXPORT_SYMBOL vmlinux 0xa0ff74d6 udp_memory_allocated +EXPORT_SYMBOL vmlinux 0xa103f7c6 devfreq_unregister_opp_notifier +EXPORT_SYMBOL vmlinux 0xa108eb4d sysctl_optmem_max +EXPORT_SYMBOL vmlinux 0xa10b0636 gnet_stats_start_copy +EXPORT_SYMBOL vmlinux 0xa10cdc81 arp_tbl +EXPORT_SYMBOL vmlinux 0xa111d410 path_put +EXPORT_SYMBOL vmlinux 0xa1149017 inet_frag_find +EXPORT_SYMBOL vmlinux 0xa116a6ac devm_gpiod_put +EXPORT_SYMBOL vmlinux 0xa117c560 __inet_hash +EXPORT_SYMBOL vmlinux 0xa120d33c tty_unregister_ldisc +EXPORT_SYMBOL vmlinux 0xa12187b5 dev_loopback_xmit +EXPORT_SYMBOL vmlinux 0xa132554f jbd2_journal_file_inode +EXPORT_SYMBOL vmlinux 0xa13f4459 bitmap_start_sync +EXPORT_SYMBOL vmlinux 0xa1415618 twl6030_interrupt_unmask +EXPORT_SYMBOL vmlinux 0xa146d5dd pci_remove_bus +EXPORT_SYMBOL vmlinux 0xa14a48a3 iget_locked +EXPORT_SYMBOL vmlinux 0xa14b3f5d flex_array_free_parts +EXPORT_SYMBOL vmlinux 0xa14f3d8c ewma_add +EXPORT_SYMBOL vmlinux 0xa15289ee tcp_close +EXPORT_SYMBOL vmlinux 0xa169b7aa sb_set_blocksize +EXPORT_SYMBOL vmlinux 0xa16c1d7b freeze_bdev +EXPORT_SYMBOL vmlinux 0xa197974c mipi_dsi_dcs_set_display_off +EXPORT_SYMBOL vmlinux 0xa19cd325 scsi_set_medium_removal +EXPORT_SYMBOL vmlinux 0xa1b759ce fb_add_videomode +EXPORT_SYMBOL vmlinux 0xa1c76e0a _cond_resched +EXPORT_SYMBOL vmlinux 0xa1f7b39d drop_super +EXPORT_SYMBOL vmlinux 0xa202a8e5 kmalloc_order_trace +EXPORT_SYMBOL vmlinux 0xa209451c bitmap_fold +EXPORT_SYMBOL vmlinux 0xa2160e19 simple_dir_operations +EXPORT_SYMBOL vmlinux 0xa242d4b9 agp_put_bridge +EXPORT_SYMBOL vmlinux 0xa24bfe9f handle_edge_irq +EXPORT_SYMBOL vmlinux 0xa24d30fd param_ops_byte +EXPORT_SYMBOL vmlinux 0xa2546131 netif_wake_subqueue +EXPORT_SYMBOL vmlinux 0xa26193ed dev_base_lock +EXPORT_SYMBOL vmlinux 0xa2623d69 cdrom_ioctl +EXPORT_SYMBOL vmlinux 0xa2848c50 ecryptfs_get_auth_tok_key +EXPORT_SYMBOL vmlinux 0xa289c121 netpoll_print_options +EXPORT_SYMBOL vmlinux 0xa2a335bd vme_alloc_consistent +EXPORT_SYMBOL vmlinux 0xa2ab4936 shrink_dcache_sb +EXPORT_SYMBOL vmlinux 0xa2d0bf59 netdev_err +EXPORT_SYMBOL vmlinux 0xa2e32aac nf_register_hooks +EXPORT_SYMBOL vmlinux 0xa2fcbd19 account_page_dirtied +EXPORT_SYMBOL vmlinux 0xa31149aa i2c_register_driver +EXPORT_SYMBOL vmlinux 0xa31bdf07 vme_master_set +EXPORT_SYMBOL vmlinux 0xa3296f76 ata_dev_printk +EXPORT_SYMBOL vmlinux 0xa346a8d5 pci_disable_device +EXPORT_SYMBOL vmlinux 0xa34fcb2d mempool_create_node +EXPORT_SYMBOL vmlinux 0xa350a8f8 set_memory_array_uc +EXPORT_SYMBOL vmlinux 0xa353edac ppp_input +EXPORT_SYMBOL vmlinux 0xa35cd97c genphy_suspend +EXPORT_SYMBOL vmlinux 0xa366df2e security_path_unlink +EXPORT_SYMBOL vmlinux 0xa36790eb dentry_path_raw +EXPORT_SYMBOL vmlinux 0xa370caee netdev_info +EXPORT_SYMBOL vmlinux 0xa3730670 revalidate_disk +EXPORT_SYMBOL vmlinux 0xa37e78b6 flex_array_get +EXPORT_SYMBOL vmlinux 0xa386591d iget5_locked +EXPORT_SYMBOL vmlinux 0xa38d249a tcp_sendpage +EXPORT_SYMBOL vmlinux 0xa3a78fd1 vme_dma_list_exec +EXPORT_SYMBOL vmlinux 0xa3a9c690 genphy_read_status +EXPORT_SYMBOL vmlinux 0xa3ad04ff tcp_get_cookie_sock +EXPORT_SYMBOL vmlinux 0xa3d6fc56 unregister_netdev +EXPORT_SYMBOL vmlinux 0xa3f14441 dentry_unhash +EXPORT_SYMBOL vmlinux 0xa3fc3d50 __tracepoint_module_get +EXPORT_SYMBOL vmlinux 0xa40ea3f2 kobject_add +EXPORT_SYMBOL vmlinux 0xa4192abf pnp_is_active +EXPORT_SYMBOL vmlinux 0xa42da44a vme_dma_request +EXPORT_SYMBOL vmlinux 0xa4511467 crc16 +EXPORT_SYMBOL vmlinux 0xa4586d8d tty_free_termios +EXPORT_SYMBOL vmlinux 0xa4701e9e timekeeping_inject_offset +EXPORT_SYMBOL vmlinux 0xa490f8bf sock_no_setsockopt +EXPORT_SYMBOL vmlinux 0xa49e3978 genphy_update_link +EXPORT_SYMBOL vmlinux 0xa4a05800 scsi_add_device +EXPORT_SYMBOL vmlinux 0xa4a41941 bioset_integrity_free +EXPORT_SYMBOL vmlinux 0xa4a47376 blk_integrity_unregister +EXPORT_SYMBOL vmlinux 0xa4adcb19 md_integrity_add_rdev +EXPORT_SYMBOL vmlinux 0xa4b45ea5 out_of_line_wait_on_bit_lock +EXPORT_SYMBOL vmlinux 0xa4b94fea iowrite8_rep +EXPORT_SYMBOL vmlinux 0xa4ccfc49 generic_splice_sendpage +EXPORT_SYMBOL vmlinux 0xa4d4f0e6 global_cache_flush +EXPORT_SYMBOL vmlinux 0xa4e83527 wake_up_process +EXPORT_SYMBOL vmlinux 0xa4ea60da i2c_smbus_write_byte +EXPORT_SYMBOL vmlinux 0xa5084e44 vme_dma_list_add +EXPORT_SYMBOL vmlinux 0xa508ec7f ip_options_compile +EXPORT_SYMBOL vmlinux 0xa52de350 d_hash_and_lookup +EXPORT_SYMBOL vmlinux 0xa53c9f44 get_acl +EXPORT_SYMBOL vmlinux 0xa5526619 rb_insert_color +EXPORT_SYMBOL vmlinux 0xa56b5830 i2c_clients_command +EXPORT_SYMBOL vmlinux 0xa580adb6 mdiobus_alloc_size +EXPORT_SYMBOL vmlinux 0xa598e29c vesa_modes +EXPORT_SYMBOL vmlinux 0xa5a51eee __crc32c_le +EXPORT_SYMBOL vmlinux 0xa5b598fa input_mt_drop_unused +EXPORT_SYMBOL vmlinux 0xa5c1a053 rtnetlink_put_metrics +EXPORT_SYMBOL vmlinux 0xa6079c35 cdev_init +EXPORT_SYMBOL vmlinux 0xa607de3e vfs_unlink +EXPORT_SYMBOL vmlinux 0xa62a6bcb scsi_eh_finish_cmd +EXPORT_SYMBOL vmlinux 0xa63322c6 hdmi_audio_infoframe_pack +EXPORT_SYMBOL vmlinux 0xa63a776e i2c_verify_client +EXPORT_SYMBOL vmlinux 0xa63d85ab slhc_remember +EXPORT_SYMBOL vmlinux 0xa65b4d6d unregister_console +EXPORT_SYMBOL vmlinux 0xa675804c utf8s_to_utf16s +EXPORT_SYMBOL vmlinux 0xa67c549f icmp_send +EXPORT_SYMBOL vmlinux 0xa681fe88 generate_random_uuid +EXPORT_SYMBOL vmlinux 0xa683535d __frontswap_test +EXPORT_SYMBOL vmlinux 0xa6872ec6 md_finish_reshape +EXPORT_SYMBOL vmlinux 0xa699bec0 pnp_request_card_device +EXPORT_SYMBOL vmlinux 0xa69e24b9 devm_gpio_request_one +EXPORT_SYMBOL vmlinux 0xa6ba262b make_kuid +EXPORT_SYMBOL vmlinux 0xa6bbd805 __wake_up +EXPORT_SYMBOL vmlinux 0xa6bd63ca acpi_bios_error +EXPORT_SYMBOL vmlinux 0xa6ffec60 woken_wake_function +EXPORT_SYMBOL vmlinux 0xa70606eb compat_nf_setsockopt +EXPORT_SYMBOL vmlinux 0xa70fabbe release_evntsel_nmi +EXPORT_SYMBOL vmlinux 0xa721c475 pci_bus_read_config_dword +EXPORT_SYMBOL vmlinux 0xa72a0f5b nr_online_nodes +EXPORT_SYMBOL vmlinux 0xa735db59 prandom_u32 +EXPORT_SYMBOL vmlinux 0xa788f1a0 i8253_lock +EXPORT_SYMBOL vmlinux 0xa793f552 mpage_readpages +EXPORT_SYMBOL vmlinux 0xa797810a eth_header +EXPORT_SYMBOL vmlinux 0xa7e38851 padata_start +EXPORT_SYMBOL vmlinux 0xa7f47c29 seq_release +EXPORT_SYMBOL vmlinux 0xa81e768a blk_requeue_request +EXPORT_SYMBOL vmlinux 0xa8232c78 strtobool +EXPORT_SYMBOL vmlinux 0xa82bea9f noop_llseek +EXPORT_SYMBOL vmlinux 0xa843805a get_unused_fd_flags +EXPORT_SYMBOL vmlinux 0xa848120d dev_get_phys_port_id +EXPORT_SYMBOL vmlinux 0xa85c8e49 kernel_getsockopt +EXPORT_SYMBOL vmlinux 0xa860b2ef xfrm4_protocol_deregister +EXPORT_SYMBOL vmlinux 0xa864c0b8 param_ops_ulong +EXPORT_SYMBOL vmlinux 0xa8721b97 system_state +EXPORT_SYMBOL vmlinux 0xa891ca4a agp3_generic_tlbflush +EXPORT_SYMBOL vmlinux 0xa8aab3f6 jbd2_journal_force_commit +EXPORT_SYMBOL vmlinux 0xa8b44b58 new_inode +EXPORT_SYMBOL vmlinux 0xa8c8f763 backlight_force_update +EXPORT_SYMBOL vmlinux 0xa8e11a7b generic_pipe_buf_get +EXPORT_SYMBOL vmlinux 0xa8f43e8a dev_alert +EXPORT_SYMBOL vmlinux 0xa8fef7bb security_unix_may_send +EXPORT_SYMBOL vmlinux 0xa9168676 xmit_recursion +EXPORT_SYMBOL vmlinux 0xa916b694 strnlen +EXPORT_SYMBOL vmlinux 0xa92fcafa fifo_set_limit +EXPORT_SYMBOL vmlinux 0xa93b3516 ll_rw_block +EXPORT_SYMBOL vmlinux 0xa93f156a acpi_bus_get_status +EXPORT_SYMBOL vmlinux 0xa943d95a param_set_ullong +EXPORT_SYMBOL vmlinux 0xa9522f97 i2c_smbus_read_i2c_block_data +EXPORT_SYMBOL vmlinux 0xa95c3281 set_pages_nx +EXPORT_SYMBOL vmlinux 0xa976957d bitmap_remap +EXPORT_SYMBOL vmlinux 0xa97a7f2c __dev_kfree_skb_irq +EXPORT_SYMBOL vmlinux 0xa97fd5b4 iov_iter_kvec +EXPORT_SYMBOL vmlinux 0xa99b39c2 prandom_bytes +EXPORT_SYMBOL vmlinux 0xa9a8e17f arch_phys_wc_add +EXPORT_SYMBOL vmlinux 0xa9b0c050 buffer_check_dirty_writeback +EXPORT_SYMBOL vmlinux 0xa9bd2676 __vmalloc +EXPORT_SYMBOL vmlinux 0xa9bfa3a2 d_drop +EXPORT_SYMBOL vmlinux 0xa9c63b69 security_xfrm_policy_free +EXPORT_SYMBOL vmlinux 0xa9d4bfc1 mmc_erase +EXPORT_SYMBOL vmlinux 0xa9d798de wait_for_key_construction +EXPORT_SYMBOL vmlinux 0xa9dd5884 dma_sync_wait +EXPORT_SYMBOL vmlinux 0xa9f0aebe tcp_v4_mtu_reduced +EXPORT_SYMBOL vmlinux 0xaa0073b7 __net_get_random_once +EXPORT_SYMBOL vmlinux 0xaa26e41f _raw_read_lock_irq +EXPORT_SYMBOL vmlinux 0xaa5754d6 eth_type_trans +EXPORT_SYMBOL vmlinux 0xaa59d5cc pci_restore_state +EXPORT_SYMBOL vmlinux 0xaa5bd08d __pv_queued_spin_lock_slowpath +EXPORT_SYMBOL vmlinux 0xaa6f23ad rfkill_get_led_trigger_name +EXPORT_SYMBOL vmlinux 0xaa901f0b nf_nat_decode_session_hook +EXPORT_SYMBOL vmlinux 0xaab29aca mutex_lock_killable +EXPORT_SYMBOL vmlinux 0xaab3cc6a tso_build_data +EXPORT_SYMBOL vmlinux 0xaad0ae78 __bitmap_shift_right +EXPORT_SYMBOL vmlinux 0xaad2c693 dev_mc_unsync +EXPORT_SYMBOL vmlinux 0xaad6d92f rfkill_init_sw_state +EXPORT_SYMBOL vmlinux 0xaae8ab0e acpi_bus_power_manageable +EXPORT_SYMBOL vmlinux 0xaaf7a808 pci_bus_read_dev_vendor_id +EXPORT_SYMBOL vmlinux 0xaaf943e8 phy_register_fixup_for_id +EXPORT_SYMBOL vmlinux 0xaafdc258 strcasecmp +EXPORT_SYMBOL vmlinux 0xab12a092 __napi_alloc_skb +EXPORT_SYMBOL vmlinux 0xab1fe927 kernel_write +EXPORT_SYMBOL vmlinux 0xab33c9b0 __block_write_begin +EXPORT_SYMBOL vmlinux 0xab4f3312 dquot_acquire +EXPORT_SYMBOL vmlinux 0xab551fad acpi_get_data_full +EXPORT_SYMBOL vmlinux 0xab5d5471 inet_frag_maybe_warn_overflow +EXPORT_SYMBOL vmlinux 0xab600421 probe_irq_off +EXPORT_SYMBOL vmlinux 0xab65ed80 set_memory_uc +EXPORT_SYMBOL vmlinux 0xab6bde28 sysctl_max_syn_backlog +EXPORT_SYMBOL vmlinux 0xab6ff051 netdev_bonding_info_change +EXPORT_SYMBOL vmlinux 0xab770678 rdmsr_safe_regs_on_cpu +EXPORT_SYMBOL vmlinux 0xab781570 fb_get_options +EXPORT_SYMBOL vmlinux 0xab99eaed get_cached_acl +EXPORT_SYMBOL vmlinux 0xababf04d dev_get_nest_level +EXPORT_SYMBOL vmlinux 0xabb2ed2b seq_lseek +EXPORT_SYMBOL vmlinux 0xabb89a50 jbd2_journal_clear_features +EXPORT_SYMBOL vmlinux 0xabc6dd63 cpufreq_sysfs_create_file +EXPORT_SYMBOL vmlinux 0xabcaa577 free_anon_bdev +EXPORT_SYMBOL vmlinux 0xabccc5f4 con_is_bound +EXPORT_SYMBOL vmlinux 0xabe0c939 inet_offloads +EXPORT_SYMBOL vmlinux 0xac0ba8c1 blk_iopoll_disable +EXPORT_SYMBOL vmlinux 0xac1a55be unregister_reboot_notifier +EXPORT_SYMBOL vmlinux 0xac2218d2 neigh_lookup +EXPORT_SYMBOL vmlinux 0xac398912 flex_array_clear +EXPORT_SYMBOL vmlinux 0xac3ad26d lock_rename +EXPORT_SYMBOL vmlinux 0xac458b91 mark_buffer_dirty_inode +EXPORT_SYMBOL vmlinux 0xac6f03e9 xfrm_register_mode +EXPORT_SYMBOL vmlinux 0xac7e8f56 dev_trans_start +EXPORT_SYMBOL vmlinux 0xac868f70 file_ns_capable +EXPORT_SYMBOL vmlinux 0xac9f2f25 ps2_begin_command +EXPORT_SYMBOL vmlinux 0xacab29b7 seq_hlist_start_percpu +EXPORT_SYMBOL vmlinux 0xacac094d devm_gen_pool_create +EXPORT_SYMBOL vmlinux 0xacb8c982 agp_generic_create_gatt_table +EXPORT_SYMBOL vmlinux 0xacb99769 ida_destroy +EXPORT_SYMBOL vmlinux 0xaccabc6a in4_pton +EXPORT_SYMBOL vmlinux 0xacd7e8f7 update_region +EXPORT_SYMBOL vmlinux 0xacd81eb3 jbd2_inode_cache +EXPORT_SYMBOL vmlinux 0xaceaaa43 vme_irq_free +EXPORT_SYMBOL vmlinux 0xacf4d843 match_strdup +EXPORT_SYMBOL vmlinux 0xacfa807d phy_start_interrupts +EXPORT_SYMBOL vmlinux 0xad01744f kstrtos8_from_user +EXPORT_SYMBOL vmlinux 0xad0413d4 match_hex +EXPORT_SYMBOL vmlinux 0xad13c689 acpi_os_execute +EXPORT_SYMBOL vmlinux 0xad164875 kstrtos16_from_user +EXPORT_SYMBOL vmlinux 0xad380345 bio_integrity_clone +EXPORT_SYMBOL vmlinux 0xad3fa64a param_get_charp +EXPORT_SYMBOL vmlinux 0xad46c94c lease_get_mtime +EXPORT_SYMBOL vmlinux 0xad4c3025 devfreq_interval_update +EXPORT_SYMBOL vmlinux 0xad4c9933 generic_file_llseek_size +EXPORT_SYMBOL vmlinux 0xad698f77 dqstats +EXPORT_SYMBOL vmlinux 0xad6e4bb6 mempool_free +EXPORT_SYMBOL vmlinux 0xad714ff9 flow_cache_fini +EXPORT_SYMBOL vmlinux 0xad786258 pci_back_from_sleep +EXPORT_SYMBOL vmlinux 0xad84bef8 dm_table_event +EXPORT_SYMBOL vmlinux 0xad92d295 put_page +EXPORT_SYMBOL vmlinux 0xad936092 register_md_cluster_operations +EXPORT_SYMBOL vmlinux 0xad9c1b32 generic_block_bmap +EXPORT_SYMBOL vmlinux 0xada40791 nf_register_queue_handler +EXPORT_SYMBOL vmlinux 0xadc237b0 dm_kcopyd_zero +EXPORT_SYMBOL vmlinux 0xadd702e1 tcp_gro_complete +EXPORT_SYMBOL vmlinux 0xade3c540 neigh_table_clear +EXPORT_SYMBOL vmlinux 0xaded2865 agp_enable +EXPORT_SYMBOL vmlinux 0xadf92630 __cleancache_invalidate_inode +EXPORT_SYMBOL vmlinux 0xadfdfcef __bitmap_andnot +EXPORT_SYMBOL vmlinux 0xae044bc7 panic_notifier_list +EXPORT_SYMBOL vmlinux 0xae0961e6 blk_mq_start_hw_queues +EXPORT_SYMBOL vmlinux 0xae22b191 d_instantiate +EXPORT_SYMBOL vmlinux 0xae342558 stop_tty +EXPORT_SYMBOL vmlinux 0xae3a82b9 inet6_unregister_protosw +EXPORT_SYMBOL vmlinux 0xae729e59 security_req_classify_flow +EXPORT_SYMBOL vmlinux 0xae83f6b5 scsi_free_host_dev +EXPORT_SYMBOL vmlinux 0xaea2d5b6 eth_change_mtu +EXPORT_SYMBOL vmlinux 0xaea61b6d ps2_init +EXPORT_SYMBOL vmlinux 0xaea976a8 acpi_check_resource_conflict +EXPORT_SYMBOL vmlinux 0xaeb07f76 vlan_dev_vlan_id +EXPORT_SYMBOL vmlinux 0xaebdc60a setup_arg_pages +EXPORT_SYMBOL vmlinux 0xaedb057b vlan_vids_add_by_dev +EXPORT_SYMBOL vmlinux 0xaeeca53c ip6_route_me_harder +EXPORT_SYMBOL vmlinux 0xaf09251a xfrm_policy_alloc +EXPORT_SYMBOL vmlinux 0xaf26904c __elv_add_request +EXPORT_SYMBOL vmlinux 0xaf3dd7dc scsi_logging_level +EXPORT_SYMBOL vmlinux 0xaf611eac amd_nb_misc_ids +EXPORT_SYMBOL vmlinux 0xaf6ae696 kstrndup +EXPORT_SYMBOL vmlinux 0xaf6de037 devfreq_resume_device +EXPORT_SYMBOL vmlinux 0xafa22e1c twl6040_get_vibralr_status +EXPORT_SYMBOL vmlinux 0xafb32902 __wait_on_bit_lock +EXPORT_SYMBOL vmlinux 0xafb8c6ff copy_user_generic_string +EXPORT_SYMBOL vmlinux 0xafbedbad key_revoke +EXPORT_SYMBOL vmlinux 0xafc06ca9 block_write_begin +EXPORT_SYMBOL vmlinux 0xafd5ff2c amd_iommu_v2_supported +EXPORT_SYMBOL vmlinux 0xafd97623 pcim_iounmap_regions +EXPORT_SYMBOL vmlinux 0xb015cd74 udp_sendmsg +EXPORT_SYMBOL vmlinux 0xb01b1db8 intel_gtt_insert_sg_entries +EXPORT_SYMBOL vmlinux 0xb03c62d4 param_ops_bint +EXPORT_SYMBOL vmlinux 0xb05fc310 sysctl_rmem_max +EXPORT_SYMBOL vmlinux 0xb073e9ea ata_link_printk +EXPORT_SYMBOL vmlinux 0xb07ed010 do_splice_to +EXPORT_SYMBOL vmlinux 0xb0860a4b scsi_register_driver +EXPORT_SYMBOL vmlinux 0xb0a0da0c rational_best_approximation +EXPORT_SYMBOL vmlinux 0xb0c03500 vfs_writef +EXPORT_SYMBOL vmlinux 0xb0c5abd1 skb_queue_tail +EXPORT_SYMBOL vmlinux 0xb0c84222 textsearch_register +EXPORT_SYMBOL vmlinux 0xb0cc9d21 key_type_keyring +EXPORT_SYMBOL vmlinux 0xb0d2ff30 qdisc_destroy +EXPORT_SYMBOL vmlinux 0xb0e10781 get_option +EXPORT_SYMBOL vmlinux 0xb0e602eb memmove +EXPORT_SYMBOL vmlinux 0xb0eb41ff iommu_tbl_range_free +EXPORT_SYMBOL vmlinux 0xb0f8801b xfrm_policy_delete +EXPORT_SYMBOL vmlinux 0xb121390a probe_irq_on +EXPORT_SYMBOL vmlinux 0xb123cd96 elevator_exit +EXPORT_SYMBOL vmlinux 0xb12cbacb fb_unregister_client +EXPORT_SYMBOL vmlinux 0xb139b1b5 mb_cache_entry_find_next +EXPORT_SYMBOL vmlinux 0xb1466fce pci_scan_slot +EXPORT_SYMBOL vmlinux 0xb15c234c __frontswap_load +EXPORT_SYMBOL vmlinux 0xb15cb614 security_xfrm_policy_alloc +EXPORT_SYMBOL vmlinux 0xb1645a2e sg_free_table +EXPORT_SYMBOL vmlinux 0xb16aade1 submit_bio_wait +EXPORT_SYMBOL vmlinux 0xb183db61 dev_printk +EXPORT_SYMBOL vmlinux 0xb18433bf eth_mac_addr +EXPORT_SYMBOL vmlinux 0xb187b3a8 lg_lock_init +EXPORT_SYMBOL vmlinux 0xb19b1eda kfree_skb +EXPORT_SYMBOL vmlinux 0xb1b7f7b7 acpi_bus_unregister_driver +EXPORT_SYMBOL vmlinux 0xb1b95c55 generic_removexattr +EXPORT_SYMBOL vmlinux 0xb1c3a01a oops_in_progress +EXPORT_SYMBOL vmlinux 0xb1cf44df fb_find_best_mode +EXPORT_SYMBOL vmlinux 0xb1cf846d max8925_reg_read +EXPORT_SYMBOL vmlinux 0xb1cfad22 rdmsr_on_cpu +EXPORT_SYMBOL vmlinux 0xb1d0f55e skb_orphan_partial +EXPORT_SYMBOL vmlinux 0xb1dc8a72 pci_unmap_rom +EXPORT_SYMBOL vmlinux 0xb1ef410e generic_file_mmap +EXPORT_SYMBOL vmlinux 0xb20be3b3 __cleancache_init_shared_fs +EXPORT_SYMBOL vmlinux 0xb20ecf88 acpi_run_osc +EXPORT_SYMBOL vmlinux 0xb219d56c wbinvd_on_cpu +EXPORT_SYMBOL vmlinux 0xb21cbc23 security_inode_setsecctx +EXPORT_SYMBOL vmlinux 0xb260a909 serio_rescan +EXPORT_SYMBOL vmlinux 0xb2682405 utf8_to_utf32 +EXPORT_SYMBOL vmlinux 0xb2921e92 simple_lookup +EXPORT_SYMBOL vmlinux 0xb29886f2 dev_get_phys_port_name +EXPORT_SYMBOL vmlinux 0xb2be6e92 netdev_stats_to_stats64 +EXPORT_SYMBOL vmlinux 0xb2be83e2 default_llseek +EXPORT_SYMBOL vmlinux 0xb2d5a552 complete +EXPORT_SYMBOL vmlinux 0xb2f74fb6 intel_gmch_remove +EXPORT_SYMBOL vmlinux 0xb2fd5ceb __put_user_4 +EXPORT_SYMBOL vmlinux 0xb30b5419 xfrm4_rcv_cb +EXPORT_SYMBOL vmlinux 0xb30c1f68 ip_queue_xmit +EXPORT_SYMBOL vmlinux 0xb30d83ac agp_backend_acquire +EXPORT_SYMBOL vmlinux 0xb3279da5 dev_load +EXPORT_SYMBOL vmlinux 0xb3284531 acpi_dbg_layer +EXPORT_SYMBOL vmlinux 0xb346cdb4 pci_scan_root_bus +EXPORT_SYMBOL vmlinux 0xb3496c17 input_mt_report_finger_count +EXPORT_SYMBOL vmlinux 0xb352177e find_first_bit +EXPORT_SYMBOL vmlinux 0xb3547100 pci_setup_cardbus +EXPORT_SYMBOL vmlinux 0xb389dec3 napi_complete_done +EXPORT_SYMBOL vmlinux 0xb38ac4fe alloc_xenballooned_pages +EXPORT_SYMBOL vmlinux 0xb39f5b9c security_file_permission +EXPORT_SYMBOL vmlinux 0xb3a6ad40 proc_remove +EXPORT_SYMBOL vmlinux 0xb3a890d3 dquot_file_open +EXPORT_SYMBOL vmlinux 0xb3c540e2 address_space_init_once +EXPORT_SYMBOL vmlinux 0xb3c9e7e3 __genl_register_family +EXPORT_SYMBOL vmlinux 0xb3d2c76d scsi_hostbyte_string +EXPORT_SYMBOL vmlinux 0xb3e5141d netdev_upper_dev_link +EXPORT_SYMBOL vmlinux 0xb3e948fc seq_open +EXPORT_SYMBOL vmlinux 0xb3f7646e kthread_should_stop +EXPORT_SYMBOL vmlinux 0xb423dba1 console_blanked +EXPORT_SYMBOL vmlinux 0xb42746f2 pm860x_bulk_write +EXPORT_SYMBOL vmlinux 0xb42fec42 dma_ops +EXPORT_SYMBOL vmlinux 0xb434bac2 elv_add_request +EXPORT_SYMBOL vmlinux 0xb438940a starget_for_each_device +EXPORT_SYMBOL vmlinux 0xb43e1bf8 fb_get_buffer_offset +EXPORT_SYMBOL vmlinux 0xb44322af security_sb_set_mnt_opts +EXPORT_SYMBOL vmlinux 0xb44330a5 touch_buffer +EXPORT_SYMBOL vmlinux 0xb4521f21 pcim_iomap_regions +EXPORT_SYMBOL vmlinux 0xb4549bb3 scsi_is_target_device +EXPORT_SYMBOL vmlinux 0xb4709322 scsi_dev_info_add_list +EXPORT_SYMBOL vmlinux 0xb47189b5 reservation_ww_class +EXPORT_SYMBOL vmlinux 0xb490a2ee dm_put_table_device +EXPORT_SYMBOL vmlinux 0xb494aecd cdrom_check_events +EXPORT_SYMBOL vmlinux 0xb499f656 tcp_simple_retransmit +EXPORT_SYMBOL vmlinux 0xb4ac0b76 inode_owner_or_capable +EXPORT_SYMBOL vmlinux 0xb4c33840 md_set_array_sectors +EXPORT_SYMBOL vmlinux 0xb4fba63d init_buffer +EXPORT_SYMBOL vmlinux 0xb502777b dev_get_flags +EXPORT_SYMBOL vmlinux 0xb52ee8be intel_gtt_clear_range +EXPORT_SYMBOL vmlinux 0xb53e55a0 tty_register_device +EXPORT_SYMBOL vmlinux 0xb548da3e lro_receive_skb +EXPORT_SYMBOL vmlinux 0xb55111d7 ethtool_op_get_link +EXPORT_SYMBOL vmlinux 0xb56273af vfs_mkdir +EXPORT_SYMBOL vmlinux 0xb568feac netdev_warn +EXPORT_SYMBOL vmlinux 0xb56b1085 simple_release_fs +EXPORT_SYMBOL vmlinux 0xb57343c2 frontswap_shrink +EXPORT_SYMBOL vmlinux 0xb586b566 __cleancache_get_page +EXPORT_SYMBOL vmlinux 0xb59823e1 seq_dentry +EXPORT_SYMBOL vmlinux 0xb59ee266 down_read +EXPORT_SYMBOL vmlinux 0xb5a459dc unregister_blkdev +EXPORT_SYMBOL vmlinux 0xb5aa7165 dma_pool_destroy +EXPORT_SYMBOL vmlinux 0xb5ca1c46 slhc_free +EXPORT_SYMBOL vmlinux 0xb5cb65cc in6_dev_finish_destroy +EXPORT_SYMBOL vmlinux 0xb5ceafa5 free_user_ns +EXPORT_SYMBOL vmlinux 0xb5cecc6f simple_write_end +EXPORT_SYMBOL vmlinux 0xb5d3f2a9 sched_autogroup_detach +EXPORT_SYMBOL vmlinux 0xb5dbd16a __percpu_counter_sum +EXPORT_SYMBOL vmlinux 0xb6244511 sg_init_one +EXPORT_SYMBOL vmlinux 0xb661d99e __dev_get_by_flags +EXPORT_SYMBOL vmlinux 0xb674a534 acpi_unmap_cpu +EXPORT_SYMBOL vmlinux 0xb678366f int_sqrt +EXPORT_SYMBOL vmlinux 0xb680d4a6 gen_pool_add_virt +EXPORT_SYMBOL vmlinux 0xb683391f input_open_device +EXPORT_SYMBOL vmlinux 0xb6936ffe _bcd2bin +EXPORT_SYMBOL vmlinux 0xb6a68816 find_last_bit +EXPORT_SYMBOL vmlinux 0xb6b03b75 mmc_detect_change +EXPORT_SYMBOL vmlinux 0xb6c8e1d3 fget_raw +EXPORT_SYMBOL vmlinux 0xb6db0884 mem_cgroup_begin_page_stat +EXPORT_SYMBOL vmlinux 0xb716fadb skb_queue_purge +EXPORT_SYMBOL vmlinux 0xb7240a6b truncate_inode_pages_range +EXPORT_SYMBOL vmlinux 0xb7422567 tty_port_put +EXPORT_SYMBOL vmlinux 0xb7488905 scsi_normalize_sense +EXPORT_SYMBOL vmlinux 0xb748fb9d md_integrity_register +EXPORT_SYMBOL vmlinux 0xb74bb4b2 ip6_find_1stfragopt +EXPORT_SYMBOL vmlinux 0xb758b225 acpi_disable_event +EXPORT_SYMBOL vmlinux 0xb75ae4c7 tcp_try_fastopen +EXPORT_SYMBOL vmlinux 0xb77131b1 psched_ratecfg_precompute +EXPORT_SYMBOL vmlinux 0xb78b4d80 udp_lib_getsockopt +EXPORT_SYMBOL vmlinux 0xb78e873e padata_alloc_possible +EXPORT_SYMBOL vmlinux 0xb794f73a __dev_get_by_index +EXPORT_SYMBOL vmlinux 0xb7a990a3 inet_frags_exit_net +EXPORT_SYMBOL vmlinux 0xb7b1c8c3 sock_wfree +EXPORT_SYMBOL vmlinux 0xb825a281 soft_cursor +EXPORT_SYMBOL vmlinux 0xb838977d acpi_pm_device_sleep_state +EXPORT_SYMBOL vmlinux 0xb84b9353 xfrm6_rcv_spi +EXPORT_SYMBOL vmlinux 0xb86b0579 dev_addr_del +EXPORT_SYMBOL vmlinux 0xb86e6594 inet_add_protocol +EXPORT_SYMBOL vmlinux 0xb874b87a __clzsi2 +EXPORT_SYMBOL vmlinux 0xb876e735 sock_setsockopt +EXPORT_SYMBOL vmlinux 0xb882d29c seq_escape +EXPORT_SYMBOL vmlinux 0xb895ef74 __netdev_alloc_skb +EXPORT_SYMBOL vmlinux 0xb8b6a76c __percpu_counter_add +EXPORT_SYMBOL vmlinux 0xb8d045c7 free_netdev +EXPORT_SYMBOL vmlinux 0xb8d6509f amd_iommu_device_info +EXPORT_SYMBOL vmlinux 0xb8e38a0b tty_lock +EXPORT_SYMBOL vmlinux 0xb8e7ce2c __put_user_8 +EXPORT_SYMBOL vmlinux 0xb8f67222 xfrm6_protocol_register +EXPORT_SYMBOL vmlinux 0xb8fdcd10 mempool_resize +EXPORT_SYMBOL vmlinux 0xb907513f unpoison_memory +EXPORT_SYMBOL vmlinux 0xb91763a8 tcp_v4_send_check +EXPORT_SYMBOL vmlinux 0xb923d121 kill_litter_super +EXPORT_SYMBOL vmlinux 0xb9249d16 cpu_possible_mask +EXPORT_SYMBOL vmlinux 0xb940051d tcp_recvmsg +EXPORT_SYMBOL vmlinux 0xb9846241 udp_poll +EXPORT_SYMBOL vmlinux 0xb98fd3e5 scm_detach_fds +EXPORT_SYMBOL vmlinux 0xb997d1cf udp_ioctl +EXPORT_SYMBOL vmlinux 0xb9a15bbc generic_pipe_buf_release +EXPORT_SYMBOL vmlinux 0xb9b2e085 nf_log_bind_pf +EXPORT_SYMBOL vmlinux 0xb9c22b4e mutex_lock_interruptible +EXPORT_SYMBOL vmlinux 0xb9d69ff8 follow_down +EXPORT_SYMBOL vmlinux 0xb9e8e2cc in6addr_sitelocal_allrouters +EXPORT_SYMBOL vmlinux 0xba0eeb6e netif_set_real_num_rx_queues +EXPORT_SYMBOL vmlinux 0xba11b7ab dev_graft_qdisc +EXPORT_SYMBOL vmlinux 0xba2d8594 ec_read +EXPORT_SYMBOL vmlinux 0xba41e3fb dmam_free_coherent +EXPORT_SYMBOL vmlinux 0xba497f13 loops_per_jiffy +EXPORT_SYMBOL vmlinux 0xba5722ff nd_region_to_nstype +EXPORT_SYMBOL vmlinux 0xba74a895 key_payload_reserve +EXPORT_SYMBOL vmlinux 0xba756e68 __lock_page +EXPORT_SYMBOL vmlinux 0xba80cfc6 elv_rb_find +EXPORT_SYMBOL vmlinux 0xba99a105 blk_peek_request +EXPORT_SYMBOL vmlinux 0xbaa24030 file_update_time +EXPORT_SYMBOL vmlinux 0xbab900d6 compat_sock_get_timestamp +EXPORT_SYMBOL vmlinux 0xbabdb269 ip4_datagram_connect +EXPORT_SYMBOL vmlinux 0xbacd28a9 cpufreq_generic_suspend +EXPORT_SYMBOL vmlinux 0xbad0f05d inet_unregister_protosw +EXPORT_SYMBOL vmlinux 0xbadc058b fsnotify_put_mark +EXPORT_SYMBOL vmlinux 0xbaf6a32e pci_release_region +EXPORT_SYMBOL vmlinux 0xbb0540aa zlib_inflateReset +EXPORT_SYMBOL vmlinux 0xbb3406ba try_to_release_page +EXPORT_SYMBOL vmlinux 0xbb34134a iov_shorten +EXPORT_SYMBOL vmlinux 0xbb35675b __bitmap_intersects +EXPORT_SYMBOL vmlinux 0xbb4e096d __kfree_skb +EXPORT_SYMBOL vmlinux 0xbb4f4766 simple_write_to_buffer +EXPORT_SYMBOL vmlinux 0xbb5190cc md_unregister_thread +EXPORT_SYMBOL vmlinux 0xbb52d1cf devm_gpio_request +EXPORT_SYMBOL vmlinux 0xbb5866a4 pci_get_device +EXPORT_SYMBOL vmlinux 0xbb5d343d xfrm_get_acqseq +EXPORT_SYMBOL vmlinux 0xbb5f05c7 seq_put_decimal_ll +EXPORT_SYMBOL vmlinux 0xbb6e8d9c swiotlb_unmap_sg +EXPORT_SYMBOL vmlinux 0xbb99125c get_default_font +EXPORT_SYMBOL vmlinux 0xbba70a2d _raw_spin_unlock_bh +EXPORT_SYMBOL vmlinux 0xbbaeb559 memcg_socket_limit_enabled +EXPORT_SYMBOL vmlinux 0xbbb13bc4 d_tmpfile +EXPORT_SYMBOL vmlinux 0xbbbb451a _raw_write_unlock_bh +EXPORT_SYMBOL vmlinux 0xbbd76e57 bit_wait +EXPORT_SYMBOL vmlinux 0xbbeb1ec6 ioremap_wt +EXPORT_SYMBOL vmlinux 0xbbf38a72 nla_reserve_nohdr +EXPORT_SYMBOL vmlinux 0xbc2031de acpi_processor_get_bios_limit +EXPORT_SYMBOL vmlinux 0xbc54e5a6 tty_set_operations +EXPORT_SYMBOL vmlinux 0xbc758d49 agp_generic_alloc_by_type +EXPORT_SYMBOL vmlinux 0xbcc308bb strnlen_user +EXPORT_SYMBOL vmlinux 0xbcc67266 sk_dst_check +EXPORT_SYMBOL vmlinux 0xbcecd7d1 generic_file_readonly_mmap +EXPORT_SYMBOL vmlinux 0xbcf2d027 mmc_stop_bkops +EXPORT_SYMBOL vmlinux 0xbcfdf9f7 security_inode_listsecurity +EXPORT_SYMBOL vmlinux 0xbd100793 cpu_online_mask +EXPORT_SYMBOL vmlinux 0xbd1217c5 fddi_type_trans +EXPORT_SYMBOL vmlinux 0xbd462b55 __kfifo_init +EXPORT_SYMBOL vmlinux 0xbd52cddf is_nd_btt +EXPORT_SYMBOL vmlinux 0xbd5d243f mmc_interrupt_hpi +EXPORT_SYMBOL vmlinux 0xbd607dc5 skb_coalesce_rx_frag +EXPORT_SYMBOL vmlinux 0xbd630947 pci_select_bars +EXPORT_SYMBOL vmlinux 0xbd70dc8a cpufreq_get_policy +EXPORT_SYMBOL vmlinux 0xbd7eb7f8 __splice_from_pipe +EXPORT_SYMBOL vmlinux 0xbd813e0f tcp_disconnect +EXPORT_SYMBOL vmlinux 0xbd878481 param_set_ulong +EXPORT_SYMBOL vmlinux 0xbd9074b1 blk_finish_plug +EXPORT_SYMBOL vmlinux 0xbdaf5b07 acpi_os_read_port +EXPORT_SYMBOL vmlinux 0xbdc69e75 wait_iff_congested +EXPORT_SYMBOL vmlinux 0xbdd0739f mb_cache_entry_free +EXPORT_SYMBOL vmlinux 0xbdd51c68 zero_fill_bio +EXPORT_SYMBOL vmlinux 0xbdd7ac15 bitmap_end_sync +EXPORT_SYMBOL vmlinux 0xbdf10b33 find_get_pages_tag +EXPORT_SYMBOL vmlinux 0xbdfb6dbb __fentry__ +EXPORT_SYMBOL vmlinux 0xbe0084f6 acpi_get_hp_hw_control_from_firmware +EXPORT_SYMBOL vmlinux 0xbe1bb112 bitmap_onto +EXPORT_SYMBOL vmlinux 0xbe3b460e eth_gro_receive +EXPORT_SYMBOL vmlinux 0xbe3ba78c jbd2_journal_wipe +EXPORT_SYMBOL vmlinux 0xbe47d970 bd_set_size +EXPORT_SYMBOL vmlinux 0xbe63efac __skb_flow_dissect +EXPORT_SYMBOL vmlinux 0xbe726beb __block_page_mkwrite +EXPORT_SYMBOL vmlinux 0xbec30d05 x86_match_cpu +EXPORT_SYMBOL vmlinux 0xbef43296 console_conditional_schedule +EXPORT_SYMBOL vmlinux 0xbf1171a4 dma_pool_create +EXPORT_SYMBOL vmlinux 0xbf1456c8 pfifo_qdisc_ops +EXPORT_SYMBOL vmlinux 0xbf289184 blk_run_queue_async +EXPORT_SYMBOL vmlinux 0xbf2cc181 call_usermodehelper_exec +EXPORT_SYMBOL vmlinux 0xbf37ef7e dev_warn +EXPORT_SYMBOL vmlinux 0xbf54d0a4 tcp_release_cb +EXPORT_SYMBOL vmlinux 0xbf7fd2f5 schedule_timeout_killable +EXPORT_SYMBOL vmlinux 0xbf8770d4 __check_sticky +EXPORT_SYMBOL vmlinux 0xbf8ba54a vprintk +EXPORT_SYMBOL vmlinux 0xbf9bcc8d __cap_empty_set +EXPORT_SYMBOL vmlinux 0xbfab10ff nd_device_unregister +EXPORT_SYMBOL vmlinux 0xbfb1f098 blk_rq_map_sg +EXPORT_SYMBOL vmlinux 0xbfb96f05 ipv6_chk_custom_prefix +EXPORT_SYMBOL vmlinux 0xbfc177bc iowrite32_rep +EXPORT_SYMBOL vmlinux 0xbfcaaf3a netdev_update_features +EXPORT_SYMBOL vmlinux 0xbfdd068c neigh_table_init +EXPORT_SYMBOL vmlinux 0xbfe6f427 _raw_spin_unlock_irq +EXPORT_SYMBOL vmlinux 0xbfee3ad5 loop_unregister_transfer +EXPORT_SYMBOL vmlinux 0xbff85df8 t10_pi_type3_crc +EXPORT_SYMBOL vmlinux 0xc00abcf0 textsearch_prepare +EXPORT_SYMBOL vmlinux 0xc016df9d dm_get_device +EXPORT_SYMBOL vmlinux 0xc05e355f idr_alloc_cyclic +EXPORT_SYMBOL vmlinux 0xc0740c5c __remove_inode_hash +EXPORT_SYMBOL vmlinux 0xc0763484 rfkill_blocked +EXPORT_SYMBOL vmlinux 0xc0811496 ioctl_by_bdev +EXPORT_SYMBOL vmlinux 0xc0823e4c twl_i2c_write +EXPORT_SYMBOL vmlinux 0xc09b6389 alloc_skb_with_frags +EXPORT_SYMBOL vmlinux 0xc09f0612 md_register_thread +EXPORT_SYMBOL vmlinux 0xc0a3d105 find_next_bit +EXPORT_SYMBOL vmlinux 0xc0a71944 inet_listen +EXPORT_SYMBOL vmlinux 0xc0abd6f7 pci_disable_link_state_locked +EXPORT_SYMBOL vmlinux 0xc0b6bba3 mipi_dsi_dcs_enter_sleep_mode +EXPORT_SYMBOL vmlinux 0xc0c1f444 input_grab_device +EXPORT_SYMBOL vmlinux 0xc0cd3b13 ___ratelimit +EXPORT_SYMBOL vmlinux 0xc0e0f78b atomic_dec_and_mutex_lock +EXPORT_SYMBOL vmlinux 0xc0f0db50 seq_path +EXPORT_SYMBOL vmlinux 0xc15a44c6 memzero_explicit +EXPORT_SYMBOL vmlinux 0xc18195b2 gnttab_free_pages +EXPORT_SYMBOL vmlinux 0xc1b06f5c fb_find_mode +EXPORT_SYMBOL vmlinux 0xc1b8155f pci_fixup_device +EXPORT_SYMBOL vmlinux 0xc1d3adf7 phy_attach +EXPORT_SYMBOL vmlinux 0xc1d8cfaf __fdget +EXPORT_SYMBOL vmlinux 0xc1e50c0b rtnl_nla_parse_ifla +EXPORT_SYMBOL vmlinux 0xc1ffd2aa write_cache_pages +EXPORT_SYMBOL vmlinux 0xc2039801 mmc_wait_for_req +EXPORT_SYMBOL vmlinux 0xc21c014a pcie_port_service_unregister +EXPORT_SYMBOL vmlinux 0xc2224d9d frontswap_register_ops +EXPORT_SYMBOL vmlinux 0xc2424641 agp3_generic_cleanup +EXPORT_SYMBOL vmlinux 0xc246b1fa blk_mq_abort_requeue_list +EXPORT_SYMBOL vmlinux 0xc248c8d7 dquot_initialize +EXPORT_SYMBOL vmlinux 0xc253b6b5 kfree_skb_partial +EXPORT_SYMBOL vmlinux 0xc26e4758 mfd_remove_devices +EXPORT_SYMBOL vmlinux 0xc27aad3f security_path_mkdir +EXPORT_SYMBOL vmlinux 0xc29bf967 strspn +EXPORT_SYMBOL vmlinux 0xc2b1a1f9 mipi_dsi_attach +EXPORT_SYMBOL vmlinux 0xc2b9377d d_alloc_name +EXPORT_SYMBOL vmlinux 0xc2c63556 devm_request_resource +EXPORT_SYMBOL vmlinux 0xc2d58d15 tty_check_change +EXPORT_SYMBOL vmlinux 0xc2e587d1 reset_devices +EXPORT_SYMBOL vmlinux 0xc2f9c045 timespec_to_jiffies +EXPORT_SYMBOL vmlinux 0xc2fb2f6a blk_queue_dma_pad +EXPORT_SYMBOL vmlinux 0xc2ff8c91 generic_file_open +EXPORT_SYMBOL vmlinux 0xc304ca20 migrate_page +EXPORT_SYMBOL vmlinux 0xc305552c filemap_fdatawait +EXPORT_SYMBOL vmlinux 0xc310b981 strnstr +EXPORT_SYMBOL vmlinux 0xc31490b7 bdget_disk +EXPORT_SYMBOL vmlinux 0xc322c18c abx500_event_registers_startup_state_get +EXPORT_SYMBOL vmlinux 0xc32aebf5 del_gendisk +EXPORT_SYMBOL vmlinux 0xc33c60d1 bio_advance +EXPORT_SYMBOL vmlinux 0xc352d8df finish_open +EXPORT_SYMBOL vmlinux 0xc35c0eca mipi_dsi_host_register +EXPORT_SYMBOL vmlinux 0xc3797e4e module_put +EXPORT_SYMBOL vmlinux 0xc3aaf0a9 __put_user_1 +EXPORT_SYMBOL vmlinux 0xc3b5059d __scsi_iterate_devices +EXPORT_SYMBOL vmlinux 0xc3c2be91 mipi_dsi_packet_format_is_short +EXPORT_SYMBOL vmlinux 0xc3c565cd eth_validate_addr +EXPORT_SYMBOL vmlinux 0xc3f281e4 pci_prepare_to_sleep +EXPORT_SYMBOL vmlinux 0xc3f717d0 blk_rq_set_block_pc +EXPORT_SYMBOL vmlinux 0xc3f7ac1c request_firmware_nowait +EXPORT_SYMBOL vmlinux 0xc40b066d bio_copy_kern +EXPORT_SYMBOL vmlinux 0xc4401e85 xfrm_find_acq_byseq +EXPORT_SYMBOL vmlinux 0xc46c522a netlink_set_err +EXPORT_SYMBOL vmlinux 0xc46e6e27 blk_free_tags +EXPORT_SYMBOL vmlinux 0xc48307db lz4_decompress +EXPORT_SYMBOL vmlinux 0xc48795fb xfrm_stateonly_find +EXPORT_SYMBOL vmlinux 0xc494aab7 key_put +EXPORT_SYMBOL vmlinux 0xc499ae1e kstrdup +EXPORT_SYMBOL vmlinux 0xc4b175e9 inet_bind +EXPORT_SYMBOL vmlinux 0xc4bada9a dst_release +EXPORT_SYMBOL vmlinux 0xc4bc1c49 tty_port_tty_set +EXPORT_SYMBOL vmlinux 0xc4f48d0e cdrom_get_media_event +EXPORT_SYMBOL vmlinux 0xc4fe09de bio_endio +EXPORT_SYMBOL vmlinux 0xc5137552 x86_bios_cpu_apicid +EXPORT_SYMBOL vmlinux 0xc54fb5a7 ip_mc_inc_group +EXPORT_SYMBOL vmlinux 0xc5534d64 ioread16 +EXPORT_SYMBOL vmlinux 0xc558530d profile_pc +EXPORT_SYMBOL vmlinux 0xc5757f03 filemap_fault +EXPORT_SYMBOL vmlinux 0xc593eaf0 tty_write_room +EXPORT_SYMBOL vmlinux 0xc599a772 security_xfrm_state_delete +EXPORT_SYMBOL vmlinux 0xc5c3730f __bforget +EXPORT_SYMBOL vmlinux 0xc5c896a3 dev_set_allmulti +EXPORT_SYMBOL vmlinux 0xc5c96d88 set_pages_uc +EXPORT_SYMBOL vmlinux 0xc5d9c46c agp_try_unsupported_boot +EXPORT_SYMBOL vmlinux 0xc5e34437 mpage_readpage +EXPORT_SYMBOL vmlinux 0xc5fdef94 call_usermodehelper +EXPORT_SYMBOL vmlinux 0xc604d410 napi_gro_flush +EXPORT_SYMBOL vmlinux 0xc606ba95 inet_csk_reqsk_queue_drop +EXPORT_SYMBOL vmlinux 0xc615e97a vme_unregister_bridge +EXPORT_SYMBOL vmlinux 0xc631580a console_unlock +EXPORT_SYMBOL vmlinux 0xc646786d kmalloc_dma_caches +EXPORT_SYMBOL vmlinux 0xc65abeb7 agp3_generic_sizes +EXPORT_SYMBOL vmlinux 0xc666a132 crc_t10dif +EXPORT_SYMBOL vmlinux 0xc6772da2 radix_tree_lookup_slot +EXPORT_SYMBOL vmlinux 0xc67963e6 register_qdisc +EXPORT_SYMBOL vmlinux 0xc67a5a31 blkdev_issue_flush +EXPORT_SYMBOL vmlinux 0xc68c0574 proc_create_data +EXPORT_SYMBOL vmlinux 0xc691a0c2 tty_unlock +EXPORT_SYMBOL vmlinux 0xc694ba6d end_buffer_async_write +EXPORT_SYMBOL vmlinux 0xc698177a input_register_handler +EXPORT_SYMBOL vmlinux 0xc6b368d3 acpi_gpe_count +EXPORT_SYMBOL vmlinux 0xc6bbd312 vga_switcheroo_set_dynamic_switch +EXPORT_SYMBOL vmlinux 0xc6c1bf8d bio_chain +EXPORT_SYMBOL vmlinux 0xc6cb465a __kfifo_max_r +EXPORT_SYMBOL vmlinux 0xc6cbbc89 capable +EXPORT_SYMBOL vmlinux 0xc6d27ee6 __skb_warn_lro_forwarding +EXPORT_SYMBOL vmlinux 0xc6e84282 __ip4_datagram_connect +EXPORT_SYMBOL vmlinux 0xc6f369d7 blk_queue_resize_tags +EXPORT_SYMBOL vmlinux 0xc6fc81ef bio_integrity_endio +EXPORT_SYMBOL vmlinux 0xc704c208 mutex_lock +EXPORT_SYMBOL vmlinux 0xc7070b5d inet_sk_rebuild_header +EXPORT_SYMBOL vmlinux 0xc70f89e4 jbd2_journal_force_commit_nested +EXPORT_SYMBOL vmlinux 0xc7208c3a serial8250_resume_port +EXPORT_SYMBOL vmlinux 0xc72f0b34 nd_btt_sb_checksum +EXPORT_SYMBOL vmlinux 0xc73b945d iov_iter_copy_from_user_atomic +EXPORT_SYMBOL vmlinux 0xc73d7099 pci_fixup_cardbus +EXPORT_SYMBOL vmlinux 0xc7494eaf thaw_super +EXPORT_SYMBOL vmlinux 0xc7563db8 twl_set_regcache_bypass +EXPORT_SYMBOL vmlinux 0xc76a9070 scsi_host_alloc +EXPORT_SYMBOL vmlinux 0xc781bd9f rfkill_resume_polling +EXPORT_SYMBOL vmlinux 0xc7856a3d inet6addr_notifier_call_chain +EXPORT_SYMBOL vmlinux 0xc7910c45 inet_peer_xrlim_allow +EXPORT_SYMBOL vmlinux 0xc79bcd36 dm_vcalloc +EXPORT_SYMBOL vmlinux 0xc7a4fbed rtnl_lock +EXPORT_SYMBOL vmlinux 0xc7a84517 tcp_getsockopt +EXPORT_SYMBOL vmlinux 0xc7a99a3e fs_bio_set +EXPORT_SYMBOL vmlinux 0xc7ae9ce0 param_get_string +EXPORT_SYMBOL vmlinux 0xc7ca210a sk_send_sigurg +EXPORT_SYMBOL vmlinux 0xc7d93ba3 security_dentry_init_security +EXPORT_SYMBOL vmlinux 0xc7fcc5bf acpi_resource_to_address64 +EXPORT_SYMBOL vmlinux 0xc806b047 scsi_ioctl_reset +EXPORT_SYMBOL vmlinux 0xc82869ff blk_integrity_is_initialized +EXPORT_SYMBOL vmlinux 0xc8289f56 mmc_align_data_size +EXPORT_SYMBOL vmlinux 0xc82df8d3 mipi_dsi_dcs_nop +EXPORT_SYMBOL vmlinux 0xc832c939 inet_proto_csum_replace16 +EXPORT_SYMBOL vmlinux 0xc83b4d5b posix_acl_from_mode +EXPORT_SYMBOL vmlinux 0xc83f5cfc cmdline_parts_find +EXPORT_SYMBOL vmlinux 0xc84a0a7e seq_hlist_start_rcu +EXPORT_SYMBOL vmlinux 0xc86011bf blk_queue_find_tag +EXPORT_SYMBOL vmlinux 0xc872fd85 in6addr_interfacelocal_allnodes +EXPORT_SYMBOL vmlinux 0xc890c008 zlib_deflateEnd +EXPORT_SYMBOL vmlinux 0xc897c382 sg_init_table +EXPORT_SYMBOL vmlinux 0xc8a5c48c kern_path_mountpoint +EXPORT_SYMBOL vmlinux 0xc8a91f5b cpumask_local_spread +EXPORT_SYMBOL vmlinux 0xc8b57c27 autoremove_wake_function +EXPORT_SYMBOL vmlinux 0xc8ce5955 get_fs_type +EXPORT_SYMBOL vmlinux 0xc8df74b4 nd_btt_probe +EXPORT_SYMBOL vmlinux 0xc8e81c4d d_find_alias +EXPORT_SYMBOL vmlinux 0xc9056b46 ww_mutex_unlock +EXPORT_SYMBOL vmlinux 0xc909e915 fsnotify_get_group +EXPORT_SYMBOL vmlinux 0xc911b9d5 eth_get_headlen +EXPORT_SYMBOL vmlinux 0xc9328443 scsi_track_queue_full +EXPORT_SYMBOL vmlinux 0xc936c2b9 vme_slot_num +EXPORT_SYMBOL vmlinux 0xc946f16a vme_bus_num +EXPORT_SYMBOL vmlinux 0xc9634df9 in6addr_linklocal_allrouters +EXPORT_SYMBOL vmlinux 0xc963ce7e alloc_etherdev_mqs +EXPORT_SYMBOL vmlinux 0xc96c635d neigh_proc_dointvec_jiffies +EXPORT_SYMBOL vmlinux 0xc976513b blk_fetch_request +EXPORT_SYMBOL vmlinux 0xc978479a xz_dec_run +EXPORT_SYMBOL vmlinux 0xc99e2a55 twl_rev +EXPORT_SYMBOL vmlinux 0xc99f6aae dma_spin_lock +EXPORT_SYMBOL vmlinux 0xc9b2a2ec phy_ethtool_get_eee +EXPORT_SYMBOL vmlinux 0xc9b4989b should_remove_suid +EXPORT_SYMBOL vmlinux 0xc9bf23f4 mfd_cell_enable +EXPORT_SYMBOL vmlinux 0xc9c56555 netdev_class_create_file_ns +EXPORT_SYMBOL vmlinux 0xc9f6d573 blk_mq_tag_to_rq +EXPORT_SYMBOL vmlinux 0xc9fef317 add_wait_queue +EXPORT_SYMBOL vmlinux 0xca0f0194 tcp_md5_do_lookup +EXPORT_SYMBOL vmlinux 0xca0f4667 readlink_copy +EXPORT_SYMBOL vmlinux 0xca10655c amd_iommu_get_v2_domain +EXPORT_SYMBOL vmlinux 0xca224ccd blk_mq_add_to_requeue_list +EXPORT_SYMBOL vmlinux 0xca26cb3b tcf_exts_dump_stats +EXPORT_SYMBOL vmlinux 0xca47bb12 napi_disable +EXPORT_SYMBOL vmlinux 0xca5ee09a vme_free_consistent +EXPORT_SYMBOL vmlinux 0xca785d9e rfkill_alloc +EXPORT_SYMBOL vmlinux 0xca832efe kmalloc_order +EXPORT_SYMBOL vmlinux 0xca8acc78 acpi_dbg_level +EXPORT_SYMBOL vmlinux 0xca9360b5 rb_next +EXPORT_SYMBOL vmlinux 0xcabee315 I_BDEV +EXPORT_SYMBOL vmlinux 0xcad478f2 inet_sendmsg +EXPORT_SYMBOL vmlinux 0xcaf2c603 scsi_sd_pm_domain +EXPORT_SYMBOL vmlinux 0xcaf54bee register_tcf_proto_ops +EXPORT_SYMBOL vmlinux 0xcb0288ea ledtrig_cpu +EXPORT_SYMBOL vmlinux 0xcb196968 __neigh_event_send +EXPORT_SYMBOL vmlinux 0xcb281ac9 iget_failed +EXPORT_SYMBOL vmlinux 0xcb5e8f09 posix_acl_chmod +EXPORT_SYMBOL vmlinux 0xcb692ee8 i2c_smbus_write_i2c_block_data +EXPORT_SYMBOL vmlinux 0xcb733bf2 acpi_bus_set_power +EXPORT_SYMBOL vmlinux 0xcb936989 hdmi_infoframe_pack +EXPORT_SYMBOL vmlinux 0xcbae6c7a acpi_lid_notifier_unregister +EXPORT_SYMBOL vmlinux 0xcbbc737a inet_proto_csum_replace4 +EXPORT_SYMBOL vmlinux 0xcbbf0a6f audit_log_task_context +EXPORT_SYMBOL vmlinux 0xcbc1cfac nd_region_acquire_lane +EXPORT_SYMBOL vmlinux 0xcbc9557f unregister_sysrq_key +EXPORT_SYMBOL vmlinux 0xcbe9d8dc blk_mq_start_hw_queue +EXPORT_SYMBOL vmlinux 0xcbfaf318 dquot_get_state +EXPORT_SYMBOL vmlinux 0xcc06082e i2c_smbus_write_block_data +EXPORT_SYMBOL vmlinux 0xcc08ff17 x86_hyper_xen +EXPORT_SYMBOL vmlinux 0xcc187c91 block_truncate_page +EXPORT_SYMBOL vmlinux 0xcc248d26 serial8250_suspend_port +EXPORT_SYMBOL vmlinux 0xcc35ea76 mmc_start_bkops +EXPORT_SYMBOL vmlinux 0xcc366370 blk_integrity_compare +EXPORT_SYMBOL vmlinux 0xcc4cb91e tcf_exts_dump +EXPORT_SYMBOL vmlinux 0xcc5005fe msleep_interruptible +EXPORT_SYMBOL vmlinux 0xcc532430 scsi_device_lookup +EXPORT_SYMBOL vmlinux 0xcc5c5afd dev_mc_init +EXPORT_SYMBOL vmlinux 0xcc778cc3 __tracepoint_fence_annotate_wait_on +EXPORT_SYMBOL vmlinux 0xcc79bfe4 bio_uncopy_user +EXPORT_SYMBOL vmlinux 0xcc838223 __pte2cachemode_tbl +EXPORT_SYMBOL vmlinux 0xcc85d606 default_qdisc_ops +EXPORT_SYMBOL vmlinux 0xcc9aa2a6 register_sysctl +EXPORT_SYMBOL vmlinux 0xccb3bf28 page_waitqueue +EXPORT_SYMBOL vmlinux 0xccbcd248 mark_page_accessed +EXPORT_SYMBOL vmlinux 0xccc21f5e input_get_new_minor +EXPORT_SYMBOL vmlinux 0xcceee0aa __pci_enable_wake +EXPORT_SYMBOL vmlinux 0xcd0d7556 vfs_rmdir +EXPORT_SYMBOL vmlinux 0xcd20667a kstrtou16_from_user +EXPORT_SYMBOL vmlinux 0xcd279169 nla_find +EXPORT_SYMBOL vmlinux 0xcd552419 clear_wb_congested +EXPORT_SYMBOL vmlinux 0xcd57f7b0 radix_tree_tag_get +EXPORT_SYMBOL vmlinux 0xcd5bf55a jbd2_journal_get_create_access +EXPORT_SYMBOL vmlinux 0xcd635e83 skb_copy_expand +EXPORT_SYMBOL vmlinux 0xcd642ccb ps2_drain +EXPORT_SYMBOL vmlinux 0xcd725d49 d_invalidate +EXPORT_SYMBOL vmlinux 0xcd7c8c66 __scsi_print_sense +EXPORT_SYMBOL vmlinux 0xcd8d36f4 flow_get_u32_src +EXPORT_SYMBOL vmlinux 0xcd951363 free_task +EXPORT_SYMBOL vmlinux 0xcd978e6b compat_ip_getsockopt +EXPORT_SYMBOL vmlinux 0xcda0cff1 blkdev_reread_part +EXPORT_SYMBOL vmlinux 0xcdbbf0d5 load_nls +EXPORT_SYMBOL vmlinux 0xcdc39c9e security_ismaclabel +EXPORT_SYMBOL vmlinux 0xcdc6a546 md_cluster_ops +EXPORT_SYMBOL vmlinux 0xcdd0d070 mb_cache_entry_release +EXPORT_SYMBOL vmlinux 0xcddb56a6 vlan_vid_add +EXPORT_SYMBOL vmlinux 0xcddca661 vfs_getattr +EXPORT_SYMBOL vmlinux 0xce11d5fa sched_autogroup_create_attach +EXPORT_SYMBOL vmlinux 0xce2840e7 irq_set_irq_wake +EXPORT_SYMBOL vmlinux 0xce2c45cc wait_for_completion_io +EXPORT_SYMBOL vmlinux 0xce2f4a37 qdisc_watchdog_schedule_ns +EXPORT_SYMBOL vmlinux 0xce456fdf uart_update_timeout +EXPORT_SYMBOL vmlinux 0xce4904a4 acpi_leave_sleep_state +EXPORT_SYMBOL vmlinux 0xce4cc1a2 cad_pid +EXPORT_SYMBOL vmlinux 0xce4e47b6 __kfifo_skip_r +EXPORT_SYMBOL vmlinux 0xce5ac24f zlib_inflate_workspacesize +EXPORT_SYMBOL vmlinux 0xce5b6e45 nf_setsockopt +EXPORT_SYMBOL vmlinux 0xce68580c neigh_update +EXPORT_SYMBOL vmlinux 0xce7850e1 crc32_le_shift +EXPORT_SYMBOL vmlinux 0xcea251a4 swiotlb_map_sg +EXPORT_SYMBOL vmlinux 0xceab0311 strchrnul +EXPORT_SYMBOL vmlinux 0xceae504f cmdline_parts_free +EXPORT_SYMBOL vmlinux 0xceb7b150 led_blink_set_oneshot +EXPORT_SYMBOL vmlinux 0xcec25ecf misc_register +EXPORT_SYMBOL vmlinux 0xcec6e0c7 posix_acl_to_xattr +EXPORT_SYMBOL vmlinux 0xcec89489 __dquot_transfer +EXPORT_SYMBOL vmlinux 0xced2ec9e audit_log_task_info +EXPORT_SYMBOL vmlinux 0xcef466be __module_get +EXPORT_SYMBOL vmlinux 0xcef51982 kstrtou16 +EXPORT_SYMBOL vmlinux 0xcef8134b key_unlink +EXPORT_SYMBOL vmlinux 0xcefcd99a serial8250_unregister_port +EXPORT_SYMBOL vmlinux 0xcf010c12 vfs_fsync_range +EXPORT_SYMBOL vmlinux 0xcf12e2a8 generic_file_splice_read +EXPORT_SYMBOL vmlinux 0xcf3ee6ce jbd2_journal_update_sb_errno +EXPORT_SYMBOL vmlinux 0xcf443e45 abx500_get_register_page_interruptible +EXPORT_SYMBOL vmlinux 0xcf57b358 qdisc_watchdog_cancel +EXPORT_SYMBOL vmlinux 0xcf64a802 dma_async_device_register +EXPORT_SYMBOL vmlinux 0xcf65a92f pcie_get_minimum_link +EXPORT_SYMBOL vmlinux 0xcf6bc653 pci_enable_msi_range +EXPORT_SYMBOL vmlinux 0xcf6cfe1f msrs_free +EXPORT_SYMBOL vmlinux 0xcf6d15c6 done_path_create +EXPORT_SYMBOL vmlinux 0xcf7137a5 __blk_end_request_cur +EXPORT_SYMBOL vmlinux 0xcf77654e mipi_dsi_dcs_soft_reset +EXPORT_SYMBOL vmlinux 0xcf78ad41 lock_fb_info +EXPORT_SYMBOL vmlinux 0xcf8c9d47 tty_port_hangup +EXPORT_SYMBOL vmlinux 0xcf930508 jbd2_journal_try_to_free_buffers +EXPORT_SYMBOL vmlinux 0xcf96f86a iov_iter_get_pages +EXPORT_SYMBOL vmlinux 0xcfac1c92 __blk_end_request_all +EXPORT_SYMBOL vmlinux 0xcfb4a296 trace_print_array_seq +EXPORT_SYMBOL vmlinux 0xcfe53c56 dev_get_by_name_rcu +EXPORT_SYMBOL vmlinux 0xd0128b3b neigh_seq_stop +EXPORT_SYMBOL vmlinux 0xd03a7951 block_commit_write +EXPORT_SYMBOL vmlinux 0xd0552c1c pcim_iomap +EXPORT_SYMBOL vmlinux 0xd0720a17 on_each_cpu_cond +EXPORT_SYMBOL vmlinux 0xd08f6239 sg_copy_from_buffer +EXPORT_SYMBOL vmlinux 0xd09623f5 devm_input_allocate_device +EXPORT_SYMBOL vmlinux 0xd09b0199 fence_context_alloc +EXPORT_SYMBOL vmlinux 0xd0a2847c sha_init +EXPORT_SYMBOL vmlinux 0xd0a91bab skip_spaces +EXPORT_SYMBOL vmlinux 0xd0b21242 xfrm_alloc_spi +EXPORT_SYMBOL vmlinux 0xd0c5f1a5 mdiobus_write +EXPORT_SYMBOL vmlinux 0xd0d0aa72 acpi_processor_preregister_performance +EXPORT_SYMBOL vmlinux 0xd0e258fe unregister_binfmt +EXPORT_SYMBOL vmlinux 0xd0e6a8fa tcf_unregister_action +EXPORT_SYMBOL vmlinux 0xd0ee38b8 schedule_timeout_uninterruptible +EXPORT_SYMBOL vmlinux 0xd0f36f0d audit_log_format +EXPORT_SYMBOL vmlinux 0xd0f820f7 bitmap_cond_end_sync +EXPORT_SYMBOL vmlinux 0xd0fb7cd4 __tasklet_hi_schedule_first +EXPORT_SYMBOL vmlinux 0xd0fef3b2 agp_free_key +EXPORT_SYMBOL vmlinux 0xd113b301 release_sock +EXPORT_SYMBOL vmlinux 0xd14294a3 max8998_update_reg +EXPORT_SYMBOL vmlinux 0xd14c4680 tcf_hash_cleanup +EXPORT_SYMBOL vmlinux 0xd15647c4 ip_ct_attach +EXPORT_SYMBOL vmlinux 0xd15cc214 page_cache_prev_hole +EXPORT_SYMBOL vmlinux 0xd1652a93 acpi_info +EXPORT_SYMBOL vmlinux 0xd16f2f27 inet6_bind +EXPORT_SYMBOL vmlinux 0xd1744d3f dm_kobject_release +EXPORT_SYMBOL vmlinux 0xd17f5a91 udp_add_offload +EXPORT_SYMBOL vmlinux 0xd1816f32 frontswap_writethrough +EXPORT_SYMBOL vmlinux 0xd181be64 tty_devnum +EXPORT_SYMBOL vmlinux 0xd185447f copy_from_iter_nocache +EXPORT_SYMBOL vmlinux 0xd18deecd mmc_can_trim +EXPORT_SYMBOL vmlinux 0xd19f9de6 bio_alloc_bioset +EXPORT_SYMBOL vmlinux 0xd1b2e1ac tcp_seq_open +EXPORT_SYMBOL vmlinux 0xd1d0d001 __mod_zone_page_state +EXPORT_SYMBOL vmlinux 0xd1d562cc inet_rtx_syn_ack +EXPORT_SYMBOL vmlinux 0xd1d87e92 scsi_mlreturn_string +EXPORT_SYMBOL vmlinux 0xd1e8ae6e tcp_sync_mss +EXPORT_SYMBOL vmlinux 0xd1f6c5f3 smp_num_siblings +EXPORT_SYMBOL vmlinux 0xd2064e2f idr_replace +EXPORT_SYMBOL vmlinux 0xd20fcc21 blkdev_fsync +EXPORT_SYMBOL vmlinux 0xd217dd29 remap_pfn_range +EXPORT_SYMBOL vmlinux 0xd21909cc set_bh_page +EXPORT_SYMBOL vmlinux 0xd220cf8a jiffies_to_timespec +EXPORT_SYMBOL vmlinux 0xd251d7b0 security_socket_getpeersec_dgram +EXPORT_SYMBOL vmlinux 0xd254a4a0 clkdev_alloc +EXPORT_SYMBOL vmlinux 0xd2555f19 jiffies_64_to_clock_t +EXPORT_SYMBOL vmlinux 0xd25d4f74 console_blank_hook +EXPORT_SYMBOL vmlinux 0xd266133e unregister_shrinker +EXPORT_SYMBOL vmlinux 0xd27b25dd blk_check_plugged +EXPORT_SYMBOL vmlinux 0xd2922251 jbd2_journal_free_reserved +EXPORT_SYMBOL vmlinux 0xd2b09ce5 __kmalloc +EXPORT_SYMBOL vmlinux 0xd2d05a3d cdrom_number_of_slots +EXPORT_SYMBOL vmlinux 0xd2da1048 register_netdevice_notifier +EXPORT_SYMBOL vmlinux 0xd2eb69a1 input_mt_report_slot_state +EXPORT_SYMBOL vmlinux 0xd2f01692 swiotlb_dma_mapping_error +EXPORT_SYMBOL vmlinux 0xd31a0d1b devm_ioremap +EXPORT_SYMBOL vmlinux 0xd3294f9e get_tz_trend +EXPORT_SYMBOL vmlinux 0xd32dfff2 pcibios_resource_to_bus +EXPORT_SYMBOL vmlinux 0xd3520d36 page_cache_next_hole +EXPORT_SYMBOL vmlinux 0xd36bfe9a blk_stop_queue +EXPORT_SYMBOL vmlinux 0xd36e3d59 prandom_bytes_state +EXPORT_SYMBOL vmlinux 0xd3719d59 paravirt_ticketlocks_enabled +EXPORT_SYMBOL vmlinux 0xd38d0461 dmam_pool_create +EXPORT_SYMBOL vmlinux 0xd392036c phy_find_first +EXPORT_SYMBOL vmlinux 0xd3a242f7 cdrom_mode_select +EXPORT_SYMBOL vmlinux 0xd3a7b9da kmem_cache_alloc_node_trace +EXPORT_SYMBOL vmlinux 0xd3a89ece tc_classify +EXPORT_SYMBOL vmlinux 0xd3ac4df2 blk_mq_run_hw_queues +EXPORT_SYMBOL vmlinux 0xd3f9530f acpi_device_hid +EXPORT_SYMBOL vmlinux 0xd422cdff xfrm4_rcv_encap +EXPORT_SYMBOL vmlinux 0xd4400801 igrab +EXPORT_SYMBOL vmlinux 0xd44af1ba vm_iomap_memory +EXPORT_SYMBOL vmlinux 0xd4556d9b sock_no_socketpair +EXPORT_SYMBOL vmlinux 0xd4567cbc skb_trim +EXPORT_SYMBOL vmlinux 0xd45cc6ca bin2hex +EXPORT_SYMBOL vmlinux 0xd465a466 filp_open +EXPORT_SYMBOL vmlinux 0xd466f55b scsi_print_sense_hdr +EXPORT_SYMBOL vmlinux 0xd4804a77 jbd2_journal_destroy +EXPORT_SYMBOL vmlinux 0xd4835ef8 dmi_check_system +EXPORT_SYMBOL vmlinux 0xd48e9aa8 blk_init_queue +EXPORT_SYMBOL vmlinux 0xd4986d87 kfree_skb_list +EXPORT_SYMBOL vmlinux 0xd49aa328 scsi_host_lookup +EXPORT_SYMBOL vmlinux 0xd4a45be8 vga_switcheroo_init_domain_pm_ops +EXPORT_SYMBOL vmlinux 0xd4b1eaff jbd2_log_start_commit +EXPORT_SYMBOL vmlinux 0xd4b4cde0 mmc_release_host +EXPORT_SYMBOL vmlinux 0xd4b9762c dev_mc_add_excl +EXPORT_SYMBOL vmlinux 0xd4c57149 sk_capable +EXPORT_SYMBOL vmlinux 0xd4d3f31c x86_hyper_ms_hyperv +EXPORT_SYMBOL vmlinux 0xd4eaeaee scsi_device_lookup_by_target +EXPORT_SYMBOL vmlinux 0xd4f4d69d phy_suspend +EXPORT_SYMBOL vmlinux 0xd50fef48 acpi_detach_data +EXPORT_SYMBOL vmlinux 0xd54e6153 i2c_del_adapter +EXPORT_SYMBOL vmlinux 0xd54f41ce try_to_del_timer_sync +EXPORT_SYMBOL vmlinux 0xd550f962 xfrm_input_unregister_afinfo +EXPORT_SYMBOL vmlinux 0xd55e1e5f invalidate_bdev +EXPORT_SYMBOL vmlinux 0xd5634446 pci_reenable_device +EXPORT_SYMBOL vmlinux 0xd5793151 blk_init_queue_node +EXPORT_SYMBOL vmlinux 0xd58431f6 irq_to_desc +EXPORT_SYMBOL vmlinux 0xd5b0863f pcim_iomap_regions_request_all +EXPORT_SYMBOL vmlinux 0xd5b66273 xfrm4_protocol_register +EXPORT_SYMBOL vmlinux 0xd5b842a6 __ww_mutex_lock +EXPORT_SYMBOL vmlinux 0xd5b90e9b page_follow_link_light +EXPORT_SYMBOL vmlinux 0xd5dc20b1 netif_stacked_transfer_operstate +EXPORT_SYMBOL vmlinux 0xd5e64fba nf_log_set +EXPORT_SYMBOL vmlinux 0xd5edca6a unlock_two_nondirectories +EXPORT_SYMBOL vmlinux 0xd5fbf0e1 security_path_truncate +EXPORT_SYMBOL vmlinux 0xd607c6a4 ppp_channel_index +EXPORT_SYMBOL vmlinux 0xd614a10a skb_tx_error +EXPORT_SYMBOL vmlinux 0xd616683a ecryptfs_fill_auth_tok +EXPORT_SYMBOL vmlinux 0xd62115d8 inet_sock_destruct +EXPORT_SYMBOL vmlinux 0xd62c833f schedule_timeout +EXPORT_SYMBOL vmlinux 0xd6337a8f blkdev_get_by_dev +EXPORT_SYMBOL vmlinux 0xd648e564 fb_match_mode +EXPORT_SYMBOL vmlinux 0xd65f9b16 pcim_enable_device +EXPORT_SYMBOL vmlinux 0xd665632b page_symlink_inode_operations +EXPORT_SYMBOL vmlinux 0xd688716b dm_kcopyd_client_create +EXPORT_SYMBOL vmlinux 0xd69322db lock_two_nondirectories +EXPORT_SYMBOL vmlinux 0xd6b2a97d elv_dispatch_add_tail +EXPORT_SYMBOL vmlinux 0xd6b2ed5f generate_pm_trace +EXPORT_SYMBOL vmlinux 0xd6b33026 cpu_khz +EXPORT_SYMBOL vmlinux 0xd6b453a6 mpage_writepage +EXPORT_SYMBOL vmlinux 0xd6bf7a43 dev_addr_init +EXPORT_SYMBOL vmlinux 0xd6c25c58 pci_wait_for_pending_transaction +EXPORT_SYMBOL vmlinux 0xd6d39f56 mipi_dsi_dcs_set_tear_on +EXPORT_SYMBOL vmlinux 0xd6ee688f vmalloc +EXPORT_SYMBOL vmlinux 0xd6f36d5b dev_get_by_name +EXPORT_SYMBOL vmlinux 0xd6faf34c blk_end_request +EXPORT_SYMBOL vmlinux 0xd7090ba2 reqsk_queue_hash_req +EXPORT_SYMBOL vmlinux 0xd7166dfd ether_setup +EXPORT_SYMBOL vmlinux 0xd71aa996 blk_queue_end_tag +EXPORT_SYMBOL vmlinux 0xd730959d seqno_fence_ops +EXPORT_SYMBOL vmlinux 0xd75c79df smp_call_function +EXPORT_SYMBOL vmlinux 0xd75f42b2 blk_limits_io_opt +EXPORT_SYMBOL vmlinux 0xd7790bbe finish_no_open +EXPORT_SYMBOL vmlinux 0xd77d88a0 mipi_dsi_dcs_read +EXPORT_SYMBOL vmlinux 0xd78e6f89 security_skb_classify_flow +EXPORT_SYMBOL vmlinux 0xd7d363ce bio_integrity_trim +EXPORT_SYMBOL vmlinux 0xd7dd777b reserve_perfctr_nmi +EXPORT_SYMBOL vmlinux 0xd7e2d336 dmaengine_get_unmap_data +EXPORT_SYMBOL vmlinux 0xd7e56a4e simple_strtoll +EXPORT_SYMBOL vmlinux 0xd7ea7094 nf_unregister_queue_handler +EXPORT_SYMBOL vmlinux 0xd7fd1902 tty_register_ldisc +EXPORT_SYMBOL vmlinux 0xd80adf2c phy_ethtool_get_wol +EXPORT_SYMBOL vmlinux 0xd84a26ed elv_rb_former_request +EXPORT_SYMBOL vmlinux 0xd8728cdf skb_copy +EXPORT_SYMBOL vmlinux 0xd89692a3 nla_reserve +EXPORT_SYMBOL vmlinux 0xd89da37f movable_zone +EXPORT_SYMBOL vmlinux 0xd8a994eb scsi_extd_sense_format +EXPORT_SYMBOL vmlinux 0xd8b49c36 inet_release +EXPORT_SYMBOL vmlinux 0xd8c661cb d_set_fallthru +EXPORT_SYMBOL vmlinux 0xd8ded085 radix_tree_maybe_preload +EXPORT_SYMBOL vmlinux 0xd8e33c44 blk_sync_queue +EXPORT_SYMBOL vmlinux 0xd8e454c6 fib_default_rule_add +EXPORT_SYMBOL vmlinux 0xd8e484f0 register_chrdev_region +EXPORT_SYMBOL vmlinux 0xd8fc3f00 dev_mc_del_global +EXPORT_SYMBOL vmlinux 0xd9091363 acpi_install_notify_handler +EXPORT_SYMBOL vmlinux 0xd9114a68 pci_get_slot +EXPORT_SYMBOL vmlinux 0xd92e2dca tcp_hashinfo +EXPORT_SYMBOL vmlinux 0xd9376809 request_key +EXPORT_SYMBOL vmlinux 0xd94322e7 acpi_evaluate_reference +EXPORT_SYMBOL vmlinux 0xd969b2c7 amd_e400_c1e_detected +EXPORT_SYMBOL vmlinux 0xd985dc99 mempool_free_pages +EXPORT_SYMBOL vmlinux 0xd98986d1 amd_iommu_flush_tlb +EXPORT_SYMBOL vmlinux 0xd98d561a pci_find_next_bus +EXPORT_SYMBOL vmlinux 0xd996c42e scsi_dma_map +EXPORT_SYMBOL vmlinux 0xd9bba052 rtnl_notify +EXPORT_SYMBOL vmlinux 0xd9d3bcd3 _raw_spin_lock_bh +EXPORT_SYMBOL vmlinux 0xd9d8fd16 register_restart_handler +EXPORT_SYMBOL vmlinux 0xd9da9671 dquot_get_dqblk +EXPORT_SYMBOL vmlinux 0xd9dfa0b4 blk_mq_alloc_tag_set +EXPORT_SYMBOL vmlinux 0xd9ea2041 pcie_set_mps +EXPORT_SYMBOL vmlinux 0xd9eddf2c cros_ec_query_all +EXPORT_SYMBOL vmlinux 0xda15211f genphy_aneg_done +EXPORT_SYMBOL vmlinux 0xda17a5d8 irq_set_chip +EXPORT_SYMBOL vmlinux 0xda251901 scsi_eh_prep_cmnd +EXPORT_SYMBOL vmlinux 0xda3d10a8 security_tun_dev_open +EXPORT_SYMBOL vmlinux 0xda61c1be flow_cache_init +EXPORT_SYMBOL vmlinux 0xda795e07 twl6040_reg_write +EXPORT_SYMBOL vmlinux 0xda7ca6cb fb_mode_is_equal +EXPORT_SYMBOL vmlinux 0xda8999d4 sock_release +EXPORT_SYMBOL vmlinux 0xda89c05c pnpacpi_protocol +EXPORT_SYMBOL vmlinux 0xda8af7ad fb_find_nearest_mode +EXPORT_SYMBOL vmlinux 0xdaa5115e pci_bus_find_capability +EXPORT_SYMBOL vmlinux 0xdac4913a bitmap_allocate_region +EXPORT_SYMBOL vmlinux 0xdace8187 gro_find_receive_by_type +EXPORT_SYMBOL vmlinux 0xdae5f6b4 audit_log +EXPORT_SYMBOL vmlinux 0xdae80100 _raw_spin_unlock +EXPORT_SYMBOL vmlinux 0xdaea6e0d mfd_clone_cell +EXPORT_SYMBOL vmlinux 0xdaf68716 pm860x_reg_write +EXPORT_SYMBOL vmlinux 0xdb24475d abx500_get_register_interruptible +EXPORT_SYMBOL vmlinux 0xdb2a407b pci_bus_assign_resources +EXPORT_SYMBOL vmlinux 0xdb2e6b7a vfs_readf +EXPORT_SYMBOL vmlinux 0xdb3bcca6 cancel_delayed_work +EXPORT_SYMBOL vmlinux 0xdb546f2f sk_stream_kill_queues +EXPORT_SYMBOL vmlinux 0xdb6884cb __netlink_dump_start +EXPORT_SYMBOL vmlinux 0xdb68bbad rfkill_destroy +EXPORT_SYMBOL vmlinux 0xdb7305a1 __stack_chk_fail +EXPORT_SYMBOL vmlinux 0xdb7604bf agp_generic_alloc_page +EXPORT_SYMBOL vmlinux 0xdb760f52 __kfifo_free +EXPORT_SYMBOL vmlinux 0xdbaaab28 twl6040_set_pll +EXPORT_SYMBOL vmlinux 0xdbb7393d iov_iter_npages +EXPORT_SYMBOL vmlinux 0xdbcfe889 security_path_rmdir +EXPORT_SYMBOL vmlinux 0xdbee4021 pci_request_regions_exclusive +EXPORT_SYMBOL vmlinux 0xdc03c1c2 blk_queue_dma_alignment +EXPORT_SYMBOL vmlinux 0xdc047fc4 scsi_dev_info_list_add_keyed +EXPORT_SYMBOL vmlinux 0xdc14eda7 pci_pci_problems +EXPORT_SYMBOL vmlinux 0xdc276c24 sock_rfree +EXPORT_SYMBOL vmlinux 0xdc3c41a8 __crypto_memneq +EXPORT_SYMBOL vmlinux 0xdc3fcbc9 __sw_hweight8 +EXPORT_SYMBOL vmlinux 0xdc512134 backlight_register_notifier +EXPORT_SYMBOL vmlinux 0xdc57f532 acpi_install_gpe_handler +EXPORT_SYMBOL vmlinux 0xdc5e35db skb_pull +EXPORT_SYMBOL vmlinux 0xdc5f5da8 lockref_put_return +EXPORT_SYMBOL vmlinux 0xdc65f093 inode_set_flags +EXPORT_SYMBOL vmlinux 0xdc67e78d netif_set_xps_queue +EXPORT_SYMBOL vmlinux 0xdc80ad4b clocksource_unregister +EXPORT_SYMBOL vmlinux 0xdca57d7c blkdev_issue_write_same +EXPORT_SYMBOL vmlinux 0xdcab9611 __ww_mutex_lock_interruptible +EXPORT_SYMBOL vmlinux 0xdcac2c87 devfreq_remove_device +EXPORT_SYMBOL vmlinux 0xdcb0349b sys_close +EXPORT_SYMBOL vmlinux 0xdcd59489 mmc_can_erase +EXPORT_SYMBOL vmlinux 0xdd0c1220 single_open +EXPORT_SYMBOL vmlinux 0xdd19fd7c nvdimm_revalidate_disk +EXPORT_SYMBOL vmlinux 0xdd23066a pci_set_dma_seg_boundary +EXPORT_SYMBOL vmlinux 0xdd255d76 devfreq_register_opp_notifier +EXPORT_SYMBOL vmlinux 0xdd356548 xfrm_garbage_collect +EXPORT_SYMBOL vmlinux 0xdd63d403 blk_get_queue +EXPORT_SYMBOL vmlinux 0xdd66baff generic_key_instantiate +EXPORT_SYMBOL vmlinux 0xdd6b24c7 xfrm_user_policy +EXPORT_SYMBOL vmlinux 0xdd9099ee seq_printf +EXPORT_SYMBOL vmlinux 0xdd947401 serio_open +EXPORT_SYMBOL vmlinux 0xddb874fc uart_get_divisor +EXPORT_SYMBOL vmlinux 0xddbafc84 xfrm6_input_addr +EXPORT_SYMBOL vmlinux 0xdde83545 intel_gtt_get +EXPORT_SYMBOL vmlinux 0xddec318f csum_and_copy_from_iter +EXPORT_SYMBOL vmlinux 0xddfa273f sg_miter_next +EXPORT_SYMBOL vmlinux 0xde0113ce tcp_mtup_init +EXPORT_SYMBOL vmlinux 0xde153c15 udp_lib_get_port +EXPORT_SYMBOL vmlinux 0xde16dc16 tboot +EXPORT_SYMBOL vmlinux 0xde371a56 key_alloc +EXPORT_SYMBOL vmlinux 0xde395091 __cleancache_put_page +EXPORT_SYMBOL vmlinux 0xde405132 mmc_start_req +EXPORT_SYMBOL vmlinux 0xde454702 scsi_mode_sense +EXPORT_SYMBOL vmlinux 0xde4ff387 xfrm_register_type +EXPORT_SYMBOL vmlinux 0xde5ac4ae xfrm6_prepare_output +EXPORT_SYMBOL vmlinux 0xde6151db tcp_memory_allocated +EXPORT_SYMBOL vmlinux 0xde7371db sock_sendmsg +EXPORT_SYMBOL vmlinux 0xde85c7e2 xfrm_input_resume +EXPORT_SYMBOL vmlinux 0xde934d35 bfifo_qdisc_ops +EXPORT_SYMBOL vmlinux 0xde9360ba totalram_pages +EXPORT_SYMBOL vmlinux 0xde9b17ed agp3_generic_fetch_size +EXPORT_SYMBOL vmlinux 0xdea7e7ff i2c_smbus_read_word_data +EXPORT_SYMBOL vmlinux 0xdeb2c0c2 dev_getbyhwaddr_rcu +EXPORT_SYMBOL vmlinux 0xded01d1a give_up_console +EXPORT_SYMBOL vmlinux 0xdedb6611 try_wait_for_completion +EXPORT_SYMBOL vmlinux 0xdee1c11c bio_phys_segments +EXPORT_SYMBOL vmlinux 0xdf0ceacf netdev_notice +EXPORT_SYMBOL vmlinux 0xdf0da3cc acpi_get_devices +EXPORT_SYMBOL vmlinux 0xdf12a927 acpi_check_dsm +EXPORT_SYMBOL vmlinux 0xdf1427e5 idr_remove +EXPORT_SYMBOL vmlinux 0xdf2c2742 rb_last +EXPORT_SYMBOL vmlinux 0xdf54a8f7 netlink_unregister_notifier +EXPORT_SYMBOL vmlinux 0xdf60cc27 __print_symbol +EXPORT_SYMBOL vmlinux 0xdf79f7d3 crypto_sha256_update +EXPORT_SYMBOL vmlinux 0xdf7d339e iunique +EXPORT_SYMBOL vmlinux 0xdf7e6eb2 pcix_set_mmrbc +EXPORT_SYMBOL vmlinux 0xdf8c695a __ndelay +EXPORT_SYMBOL vmlinux 0xdf929370 fs_overflowgid +EXPORT_SYMBOL vmlinux 0xdf983a10 xfrm_policy_bysel_ctx +EXPORT_SYMBOL vmlinux 0xdfa4b3b8 blk_dump_rq_flags +EXPORT_SYMBOL vmlinux 0xdfa9693e input_unregister_device +EXPORT_SYMBOL vmlinux 0xdfc5169b slhc_init +EXPORT_SYMBOL vmlinux 0xdfcb012d inode_set_bytes +EXPORT_SYMBOL vmlinux 0xdfd3a075 wait_for_completion_killable +EXPORT_SYMBOL vmlinux 0xdff905e5 vme_slave_free +EXPORT_SYMBOL vmlinux 0xdffd6800 send_sig_info +EXPORT_SYMBOL vmlinux 0xe01ed833 clk_register_clkdevs +EXPORT_SYMBOL vmlinux 0xe0271a45 param_set_copystring +EXPORT_SYMBOL vmlinux 0xe0364772 dquot_drop +EXPORT_SYMBOL vmlinux 0xe04f7caa dm_read_arg_group +EXPORT_SYMBOL vmlinux 0xe06141e9 security_sk_clone +EXPORT_SYMBOL vmlinux 0xe066138b elv_rq_merge_ok +EXPORT_SYMBOL vmlinux 0xe06e4199 cpu_all_bits +EXPORT_SYMBOL vmlinux 0xe0736ba3 blk_cleanup_queue +EXPORT_SYMBOL vmlinux 0xe075d6eb iter_div_u64_rem +EXPORT_SYMBOL vmlinux 0xe083e246 gen_pool_first_fit_order_align +EXPORT_SYMBOL vmlinux 0xe0935c85 mfd_add_devices +EXPORT_SYMBOL vmlinux 0xe09b7aac tcp_setsockopt +EXPORT_SYMBOL vmlinux 0xe0a0843a sock_recvmsg +EXPORT_SYMBOL vmlinux 0xe0aa9d3a tcp_enter_cwr +EXPORT_SYMBOL vmlinux 0xe0ac8bd2 acpi_bus_generate_netlink_event +EXPORT_SYMBOL vmlinux 0xe0b13336 argv_free +EXPORT_SYMBOL vmlinux 0xe0c65cc6 xfrm_policy_byid +EXPORT_SYMBOL vmlinux 0xe0ed854a devm_clk_put +EXPORT_SYMBOL vmlinux 0xe0f3cb2c pci_bus_alloc_resource +EXPORT_SYMBOL vmlinux 0xe0f57e65 nf_unregister_sockopt +EXPORT_SYMBOL vmlinux 0xe113bbbc csum_partial +EXPORT_SYMBOL vmlinux 0xe12015b3 inet_csk_reset_keepalive_timer +EXPORT_SYMBOL vmlinux 0xe121887e pci_pme_active +EXPORT_SYMBOL vmlinux 0xe127c98a netdev_has_upper_dev +EXPORT_SYMBOL vmlinux 0xe12bc246 mb_cache_entry_alloc +EXPORT_SYMBOL vmlinux 0xe12c04e2 check_disk_change +EXPORT_SYMBOL vmlinux 0xe13815ec param_get_long +EXPORT_SYMBOL vmlinux 0xe13cd8a7 dmi_name_in_vendors +EXPORT_SYMBOL vmlinux 0xe1509f4e pci_get_class +EXPORT_SYMBOL vmlinux 0xe1761617 security_inet_conn_request +EXPORT_SYMBOL vmlinux 0xe1770d6a xfrm_input +EXPORT_SYMBOL vmlinux 0xe1786c32 make_flow_keys_digest +EXPORT_SYMBOL vmlinux 0xe188792b scsi_target_resume +EXPORT_SYMBOL vmlinux 0xe1b57211 tty_port_close_start +EXPORT_SYMBOL vmlinux 0xe1c2fa03 dev_remove_offload +EXPORT_SYMBOL vmlinux 0xe1ea0679 set_cached_acl +EXPORT_SYMBOL vmlinux 0xe200f872 secure_dccpv6_sequence_number +EXPORT_SYMBOL vmlinux 0xe20372ae radix_tree_gang_lookup +EXPORT_SYMBOL vmlinux 0xe225dd16 inode_get_bytes +EXPORT_SYMBOL vmlinux 0xe23ae481 blk_iopoll_complete +EXPORT_SYMBOL vmlinux 0xe24d3a97 jiffies_64 +EXPORT_SYMBOL vmlinux 0xe259ae9e _raw_spin_lock +EXPORT_SYMBOL vmlinux 0xe25f7f13 load_nls_default +EXPORT_SYMBOL vmlinux 0xe2614902 scm_fp_dup +EXPORT_SYMBOL vmlinux 0xe26384b8 pcie_capability_read_word +EXPORT_SYMBOL vmlinux 0xe27890ff pci_scan_single_device +EXPORT_SYMBOL vmlinux 0xe28840b6 blk_queue_io_min +EXPORT_SYMBOL vmlinux 0xe29a745e input_mt_assign_slots +EXPORT_SYMBOL vmlinux 0xe29b04e9 acpi_set_firmware_waking_vector64 +EXPORT_SYMBOL vmlinux 0xe29e1d0e out_of_line_wait_on_atomic_t +EXPORT_SYMBOL vmlinux 0xe2a68321 proc_mkdir +EXPORT_SYMBOL vmlinux 0xe2d3e512 sg_alloc_table_from_pages +EXPORT_SYMBOL vmlinux 0xe2d5255a strcmp +EXPORT_SYMBOL vmlinux 0xe2df6483 dcb_getapp +EXPORT_SYMBOL vmlinux 0xe2e8102c elv_rb_latter_request +EXPORT_SYMBOL vmlinux 0xe2f425e7 rps_cpu_mask +EXPORT_SYMBOL vmlinux 0xe2f95adf sk_wait_data +EXPORT_SYMBOL vmlinux 0xe30d32a9 simple_unlink +EXPORT_SYMBOL vmlinux 0xe319eb24 acpi_pci_osc_control_set +EXPORT_SYMBOL vmlinux 0xe31a17a9 mmc_unregister_driver +EXPORT_SYMBOL vmlinux 0xe3399a75 native_queued_spin_lock_slowpath +EXPORT_SYMBOL vmlinux 0xe33b7696 swiotlb_free_coherent +EXPORT_SYMBOL vmlinux 0xe33d4464 vga_switcheroo_get_client_state +EXPORT_SYMBOL vmlinux 0xe36e67a4 invalidate_inode_buffers +EXPORT_SYMBOL vmlinux 0xe3a53f4c sort +EXPORT_SYMBOL vmlinux 0xe3a78b53 genl_notify +EXPORT_SYMBOL vmlinux 0xe3b7ffaa __ethtool_get_settings +EXPORT_SYMBOL vmlinux 0xe3d6f284 fb_find_mode_cvt +EXPORT_SYMBOL vmlinux 0xe3db4921 dquot_set_dqblk +EXPORT_SYMBOL vmlinux 0xe3e87496 nf_afinfo +EXPORT_SYMBOL vmlinux 0xe408809a ip_route_input_noref +EXPORT_SYMBOL vmlinux 0xe410b304 inode_needs_sync +EXPORT_SYMBOL vmlinux 0xe41c2f3d set_pages_array_wb +EXPORT_SYMBOL vmlinux 0xe41d9260 agp_unbind_memory +EXPORT_SYMBOL vmlinux 0xe4377467 phy_write_mmd_indirect +EXPORT_SYMBOL vmlinux 0xe459d85a pnp_device_attach +EXPORT_SYMBOL vmlinux 0xe46e6c38 ipv6_dev_get_saddr +EXPORT_SYMBOL vmlinux 0xe484e35f ioread32 +EXPORT_SYMBOL vmlinux 0xe49c0f5a xfrm_lookup_route +EXPORT_SYMBOL vmlinux 0xe4a71c8a would_dump +EXPORT_SYMBOL vmlinux 0xe4b60f17 unregister_quota_format +EXPORT_SYMBOL vmlinux 0xe51eadd6 get_phy_device +EXPORT_SYMBOL vmlinux 0xe523ad75 synchronize_irq +EXPORT_SYMBOL vmlinux 0xe530d757 acpi_clear_gpe +EXPORT_SYMBOL vmlinux 0xe539de62 gnet_stats_finish_copy +EXPORT_SYMBOL vmlinux 0xe54ed03f fget +EXPORT_SYMBOL vmlinux 0xe5532e3b nd_device_register +EXPORT_SYMBOL vmlinux 0xe55dd50e dev_err +EXPORT_SYMBOL vmlinux 0xe55f05b6 current_task +EXPORT_SYMBOL vmlinux 0xe5603afb km_state_notify +EXPORT_SYMBOL vmlinux 0xe566af82 tcp_rcv_state_process +EXPORT_SYMBOL vmlinux 0xe56fdc80 simple_link +EXPORT_SYMBOL vmlinux 0xe57878a1 in6_pton +EXPORT_SYMBOL vmlinux 0xe5815f8a _raw_spin_lock_irq +EXPORT_SYMBOL vmlinux 0xe5867808 dlci_ioctl_set +EXPORT_SYMBOL vmlinux 0xe5b5b402 dump_trace +EXPORT_SYMBOL vmlinux 0xe5b695fd skb_copy_datagram_iter +EXPORT_SYMBOL vmlinux 0xe5c07f90 block_write_full_page +EXPORT_SYMBOL vmlinux 0xe5c4ad20 input_close_device +EXPORT_SYMBOL vmlinux 0xe5c78a99 do_blank_screen +EXPORT_SYMBOL vmlinux 0xe5dc7b71 alloc_file +EXPORT_SYMBOL vmlinux 0xe5ed5467 xfrm_policy_walk_init +EXPORT_SYMBOL vmlinux 0xe5ede98e kern_path_create +EXPORT_SYMBOL vmlinux 0xe6162877 down_killable +EXPORT_SYMBOL vmlinux 0xe63898c2 __xfrm_policy_check +EXPORT_SYMBOL vmlinux 0xe64d98fe rdmsr_safe_regs +EXPORT_SYMBOL vmlinux 0xe697d108 __blk_iopoll_complete +EXPORT_SYMBOL vmlinux 0xe69a9df4 hdmi_spd_infoframe_pack +EXPORT_SYMBOL vmlinux 0xe6a9dd50 bio_unmap_user +EXPORT_SYMBOL vmlinux 0xe6c8d9fa netif_skb_features +EXPORT_SYMBOL vmlinux 0xe6fb675c node_to_cpumask_map +EXPORT_SYMBOL vmlinux 0xe6fbe430 can_do_mlock +EXPORT_SYMBOL vmlinux 0xe6fd4eee devm_gpiod_put_array +EXPORT_SYMBOL vmlinux 0xe6fde6f4 cdev_add +EXPORT_SYMBOL vmlinux 0xe708904e account_page_redirty +EXPORT_SYMBOL vmlinux 0xe716baed acpi_unregister_ioapic +EXPORT_SYMBOL vmlinux 0xe75731f5 param_ops_invbool +EXPORT_SYMBOL vmlinux 0xe7966fb8 blk_delay_queue +EXPORT_SYMBOL vmlinux 0xe7a664c4 nf_hooks +EXPORT_SYMBOL vmlinux 0xe7a81967 audit_log_secctx +EXPORT_SYMBOL vmlinux 0xe7a9a9e0 dquot_destroy +EXPORT_SYMBOL vmlinux 0xe7c9b77e insert_inode_locked +EXPORT_SYMBOL vmlinux 0xe7d13e7d nvdimm_namespace_common_probe +EXPORT_SYMBOL vmlinux 0xe7d4daac seq_list_next +EXPORT_SYMBOL vmlinux 0xe7da45e3 read_cache_pages +EXPORT_SYMBOL vmlinux 0xe7e6c227 dm_io +EXPORT_SYMBOL vmlinux 0xe804397b compat_mc_getsockopt +EXPORT_SYMBOL vmlinux 0xe807ebbe nf_unregister_hooks +EXPORT_SYMBOL vmlinux 0xe81ef1dd remove_conflicting_framebuffers +EXPORT_SYMBOL vmlinux 0xe8214184 tcf_exts_destroy +EXPORT_SYMBOL vmlinux 0xe832a763 cpu_core_map +EXPORT_SYMBOL vmlinux 0xe85abdab empty_aops +EXPORT_SYMBOL vmlinux 0xe872f2ba km_state_expired +EXPORT_SYMBOL vmlinux 0xe8794ce1 slhc_toss +EXPORT_SYMBOL vmlinux 0xe887d6c5 blk_rq_map_user_iov +EXPORT_SYMBOL vmlinux 0xe8890f75 blk_queue_softirq_done +EXPORT_SYMBOL vmlinux 0xe890eac6 _raw_write_lock_irq +EXPORT_SYMBOL vmlinux 0xe893fee7 mem_cgroup_end_page_stat +EXPORT_SYMBOL vmlinux 0xe89de95c vga_tryget +EXPORT_SYMBOL vmlinux 0xe89ef3de down_write_trylock +EXPORT_SYMBOL vmlinux 0xe8a613c0 phy_driver_unregister +EXPORT_SYMBOL vmlinux 0xe8b5ceec inet_register_protosw +EXPORT_SYMBOL vmlinux 0xe8bea3bc qdisc_put_stab +EXPORT_SYMBOL vmlinux 0xe8c28087 vm_insert_page +EXPORT_SYMBOL vmlinux 0xe8c7cc36 skb_unlink +EXPORT_SYMBOL vmlinux 0xe8dd14fd set_create_files_as +EXPORT_SYMBOL vmlinux 0xe8f70c63 tty_name +EXPORT_SYMBOL vmlinux 0xe8f95816 inet_stream_connect +EXPORT_SYMBOL vmlinux 0xe8fed181 __nd_iostat_start +EXPORT_SYMBOL vmlinux 0xe90db79f vfs_read +EXPORT_SYMBOL vmlinux 0xe91376a7 mipi_dsi_dcs_set_tear_off +EXPORT_SYMBOL vmlinux 0xe914e41e strcpy +EXPORT_SYMBOL vmlinux 0xe92f731d register_console +EXPORT_SYMBOL vmlinux 0xe9509d6a secpath_dup +EXPORT_SYMBOL vmlinux 0xe953b21f get_next_ino +EXPORT_SYMBOL vmlinux 0xe95d737d param_set_bint +EXPORT_SYMBOL vmlinux 0xe95e00cf flex_array_get_ptr +EXPORT_SYMBOL vmlinux 0xe963b01b devm_iounmap +EXPORT_SYMBOL vmlinux 0xe98cd9b6 iov_iter_advance +EXPORT_SYMBOL vmlinux 0xe98cdb95 mnt_set_expiry +EXPORT_SYMBOL vmlinux 0xe997667b wrmsr_on_cpu +EXPORT_SYMBOL vmlinux 0xe9984a52 iw_handler_set_spy +EXPORT_SYMBOL vmlinux 0xe9acfac4 tcf_hash_new_index +EXPORT_SYMBOL vmlinux 0xe9afa46a __brelse +EXPORT_SYMBOL vmlinux 0xe9be1ff6 padata_set_cpumask +EXPORT_SYMBOL vmlinux 0xe9cbb642 acpi_match_device_ids +EXPORT_SYMBOL vmlinux 0xe9e99689 i2c_verify_adapter +EXPORT_SYMBOL vmlinux 0xe9f7149c zlib_deflate_workspacesize +EXPORT_SYMBOL vmlinux 0xe9fc4d80 single_release +EXPORT_SYMBOL vmlinux 0xea054b22 nla_policy_len +EXPORT_SYMBOL vmlinux 0xea07a8a6 netdev_lower_dev_get_private +EXPORT_SYMBOL vmlinux 0xea16dd4c tcp_destroy_cgroup +EXPORT_SYMBOL vmlinux 0xea298e06 iterate_dir +EXPORT_SYMBOL vmlinux 0xea6daf0f ip_cmsg_recv_offset +EXPORT_SYMBOL vmlinux 0xea6e8b23 __ht_create_irq +EXPORT_SYMBOL vmlinux 0xea7a42f9 __sg_free_table +EXPORT_SYMBOL vmlinux 0xea7b8a44 acpi_install_interface +EXPORT_SYMBOL vmlinux 0xea80cb9d pci_iomap_range +EXPORT_SYMBOL vmlinux 0xea90bdd3 acpi_attach_data +EXPORT_SYMBOL vmlinux 0xea9b7a73 blk_make_request +EXPORT_SYMBOL vmlinux 0xea9da011 generic_read_dir +EXPORT_SYMBOL vmlinux 0xeaaeeb2a pci_request_regions +EXPORT_SYMBOL vmlinux 0xeac416f6 elv_unregister_queue +EXPORT_SYMBOL vmlinux 0xeac73847 irq_regs +EXPORT_SYMBOL vmlinux 0xeae3dfd6 __const_udelay +EXPORT_SYMBOL vmlinux 0xeb16a837 devm_devfreq_remove_device +EXPORT_SYMBOL vmlinux 0xeb235dd8 inet6_release +EXPORT_SYMBOL vmlinux 0xeb241feb mipi_dsi_dcs_exit_sleep_mode +EXPORT_SYMBOL vmlinux 0xeb37101c audit_log_end +EXPORT_SYMBOL vmlinux 0xeb44339a free_pages_exact +EXPORT_SYMBOL vmlinux 0xeb44be19 __mmc_claim_host +EXPORT_SYMBOL vmlinux 0xeb4585b9 sk_stream_error +EXPORT_SYMBOL vmlinux 0xeb68974a tcf_em_tree_validate +EXPORT_SYMBOL vmlinux 0xeb7dd2f1 ata_std_end_eh +EXPORT_SYMBOL vmlinux 0xeba635ca __serio_register_port +EXPORT_SYMBOL vmlinux 0xebb75c8c mipi_dsi_dcs_set_pixel_format +EXPORT_SYMBOL vmlinux 0xebd18f07 import_iovec +EXPORT_SYMBOL vmlinux 0xebff5cf5 fence_signal_locked +EXPORT_SYMBOL vmlinux 0xec021bf8 node_data +EXPORT_SYMBOL vmlinux 0xec113804 agp_generic_free_gatt_table +EXPORT_SYMBOL vmlinux 0xec119c78 __cleancache_init_fs +EXPORT_SYMBOL vmlinux 0xec4d9e3a clk_get_sys +EXPORT_SYMBOL vmlinux 0xec9157b1 dev_vprintk_emit +EXPORT_SYMBOL vmlinux 0xecab3acc adjust_managed_page_count +EXPORT_SYMBOL vmlinux 0xecac8407 __memcpy +EXPORT_SYMBOL vmlinux 0xecae34d7 __skb_checksum_complete_head +EXPORT_SYMBOL vmlinux 0xecc049a8 kset_unregister +EXPORT_SYMBOL vmlinux 0xecc512f0 blk_end_request_all +EXPORT_SYMBOL vmlinux 0xecc8bd60 vga_set_legacy_decoding +EXPORT_SYMBOL vmlinux 0xecc96723 jbd2_trans_will_send_data_barrier +EXPORT_SYMBOL vmlinux 0xeccd3e0c acpi_handle_printk +EXPORT_SYMBOL vmlinux 0xecd92b71 vm_insert_mixed +EXPORT_SYMBOL vmlinux 0xece784c2 rb_first +EXPORT_SYMBOL vmlinux 0xecfd68ef acpi_get_node +EXPORT_SYMBOL vmlinux 0xecfe2d89 input_allocate_device +EXPORT_SYMBOL vmlinux 0xecfe40d4 generic_listxattr +EXPORT_SYMBOL vmlinux 0xecffc9a6 pci_enable_msix_range +EXPORT_SYMBOL vmlinux 0xed0ffd9d phy_detach +EXPORT_SYMBOL vmlinux 0xed14341b request_key_async_with_auxdata +EXPORT_SYMBOL vmlinux 0xed20b0f6 __lock_buffer +EXPORT_SYMBOL vmlinux 0xed25cd8c from_kgid_munged +EXPORT_SYMBOL vmlinux 0xed3730c8 vfs_getattr_nosec +EXPORT_SYMBOL vmlinux 0xed588c69 mount_ns +EXPORT_SYMBOL vmlinux 0xed597524 qdisc_get_rtab +EXPORT_SYMBOL vmlinux 0xed80132b arp_send +EXPORT_SYMBOL vmlinux 0xed9f9a20 __ctzsi2 +EXPORT_SYMBOL vmlinux 0xedbaee5e nla_strcmp +EXPORT_SYMBOL vmlinux 0xedc03953 iounmap +EXPORT_SYMBOL vmlinux 0xeddea57e amd_iommu_domain_direct_map +EXPORT_SYMBOL vmlinux 0xeddfdfa1 keyring_alloc +EXPORT_SYMBOL vmlinux 0xedf10805 tty_do_resize +EXPORT_SYMBOL vmlinux 0xedf43be0 of_find_mipi_dsi_device_by_node +EXPORT_SYMBOL vmlinux 0xedf578ce param_ops_int +EXPORT_SYMBOL vmlinux 0xedfd671c scsi_is_sdev_device +EXPORT_SYMBOL vmlinux 0xee03b5b9 netdev_lower_get_next +EXPORT_SYMBOL vmlinux 0xee11a803 sk_common_release +EXPORT_SYMBOL vmlinux 0xee221668 blk_mq_map_queue +EXPORT_SYMBOL vmlinux 0xee22c25b inetpeer_invalidate_tree +EXPORT_SYMBOL vmlinux 0xee2661cb dump_emit +EXPORT_SYMBOL vmlinux 0xee2d0fc7 _local_bh_enable +EXPORT_SYMBOL vmlinux 0xee37c031 pagecache_get_page +EXPORT_SYMBOL vmlinux 0xee46f5e1 dev_close +EXPORT_SYMBOL vmlinux 0xee6b6a42 fixed_phy_update_state +EXPORT_SYMBOL vmlinux 0xee7eb9e1 pnp_platform_devices +EXPORT_SYMBOL vmlinux 0xee91879b rb_first_postorder +EXPORT_SYMBOL vmlinux 0xeea9dbaf bitmap_bitremap +EXPORT_SYMBOL vmlinux 0xeeb5bd3b __tracepoint_kfree +EXPORT_SYMBOL vmlinux 0xeec69352 ip6_dst_hoplimit +EXPORT_SYMBOL vmlinux 0xeecb6e72 phy_connect +EXPORT_SYMBOL vmlinux 0xeed60f72 tcp_shutdown +EXPORT_SYMBOL vmlinux 0xeef161aa groups_free +EXPORT_SYMBOL vmlinux 0xeef1ee2b truncate_pagecache +EXPORT_SYMBOL vmlinux 0xeef427cb lockref_get_or_lock +EXPORT_SYMBOL vmlinux 0xeefd1242 i8042_install_filter +EXPORT_SYMBOL vmlinux 0xef0b40c0 inet6_register_icmp_sender +EXPORT_SYMBOL vmlinux 0xef30b362 tcp_timewait_state_process +EXPORT_SYMBOL vmlinux 0xef5e77ea vmap +EXPORT_SYMBOL vmlinux 0xef66b760 lock_sock_fast +EXPORT_SYMBOL vmlinux 0xef685b71 dev_addr_flush +EXPORT_SYMBOL vmlinux 0xef6cf183 fbcon_set_rotate +EXPORT_SYMBOL vmlinux 0xef8de1c0 tty_vhangup +EXPORT_SYMBOL vmlinux 0xef95b2d2 devm_free_irq +EXPORT_SYMBOL vmlinux 0xef9aedfc boot_option_idle_override +EXPORT_SYMBOL vmlinux 0xefd1624a vme_dma_free_attribute +EXPORT_SYMBOL vmlinux 0xefda8d99 abort_exclusive_wait +EXPORT_SYMBOL vmlinux 0xefdb5a41 tcp_v4_destroy_sock +EXPORT_SYMBOL vmlinux 0xefdd70ce security_secid_to_secctx +EXPORT_SYMBOL vmlinux 0xefe099c3 acpi_get_event_status +EXPORT_SYMBOL vmlinux 0xefe97812 abx500_set_register_interruptible +EXPORT_SYMBOL vmlinux 0xefec7f9b create_empty_buffers +EXPORT_SYMBOL vmlinux 0xf0009fee put_pages_list +EXPORT_SYMBOL vmlinux 0xf00f7de0 agp_generic_alloc_pages +EXPORT_SYMBOL vmlinux 0xf013a923 ilookup5_nowait +EXPORT_SYMBOL vmlinux 0xf0187927 __sg_page_iter_next +EXPORT_SYMBOL vmlinux 0xf01b63d9 fsync_bdev +EXPORT_SYMBOL vmlinux 0xf05dcab3 backlight_device_register +EXPORT_SYMBOL vmlinux 0xf05ffa15 fb_var_to_videomode +EXPORT_SYMBOL vmlinux 0xf065f629 ioread16be +EXPORT_SYMBOL vmlinux 0xf067257c register_memory_isolate_notifier +EXPORT_SYMBOL vmlinux 0xf08242c2 finish_wait +EXPORT_SYMBOL vmlinux 0xf08983da textsearch_unregister +EXPORT_SYMBOL vmlinux 0xf08c67de napi_alloc_frag +EXPORT_SYMBOL vmlinux 0xf094c76d tcf_em_tree_dump +EXPORT_SYMBOL vmlinux 0xf09de776 get_random_int +EXPORT_SYMBOL vmlinux 0xf0a8237a radix_tree_gang_lookup_tag +EXPORT_SYMBOL vmlinux 0xf0adef22 gen_replace_estimator +EXPORT_SYMBOL vmlinux 0xf0b1f546 tty_driver_flush_buffer +EXPORT_SYMBOL vmlinux 0xf0b36c2a param_get_bool +EXPORT_SYMBOL vmlinux 0xf0c1452c inode_dio_wait +EXPORT_SYMBOL vmlinux 0xf0d47fec __inet6_lookup_established +EXPORT_SYMBOL vmlinux 0xf0d99f83 pcim_iounmap +EXPORT_SYMBOL vmlinux 0xf0df189e vfs_iter_write +EXPORT_SYMBOL vmlinux 0xf0ea1279 vfs_setpos +EXPORT_SYMBOL vmlinux 0xf0ef15b4 list_sort +EXPORT_SYMBOL vmlinux 0xf0ffc5a8 nf_log_packet +EXPORT_SYMBOL vmlinux 0xf10526ac verify_spi_info +EXPORT_SYMBOL vmlinux 0xf10b91f4 pm8606_osc_disable +EXPORT_SYMBOL vmlinux 0xf10de535 ioread8 +EXPORT_SYMBOL vmlinux 0xf11543ff find_first_zero_bit +EXPORT_SYMBOL vmlinux 0xf116d4b5 copy_in_user +EXPORT_SYMBOL vmlinux 0xf1172714 pcie_capability_clear_and_set_dword +EXPORT_SYMBOL vmlinux 0xf11e3564 phy_mii_ioctl +EXPORT_SYMBOL vmlinux 0xf12a9bd9 __xfrm_init_state +EXPORT_SYMBOL vmlinux 0xf134bfa4 __nla_put +EXPORT_SYMBOL vmlinux 0xf1398e2e lg_local_unlock_cpu +EXPORT_SYMBOL vmlinux 0xf1430814 napi_gro_frags +EXPORT_SYMBOL vmlinux 0xf147dcb2 hdmi_spd_infoframe_init +EXPORT_SYMBOL vmlinux 0xf1499312 param_set_charp +EXPORT_SYMBOL vmlinux 0xf15ec4bc ata_print_version +EXPORT_SYMBOL vmlinux 0xf160fc40 key_validate +EXPORT_SYMBOL vmlinux 0xf16366e9 get_mm_exe_file +EXPORT_SYMBOL vmlinux 0xf195c682 fb_invert_cmaps +EXPORT_SYMBOL vmlinux 0xf1969a8e __usecs_to_jiffies +EXPORT_SYMBOL vmlinux 0xf19af9c7 cpufreq_global_kobject +EXPORT_SYMBOL vmlinux 0xf1aed73d tcp_prot +EXPORT_SYMBOL vmlinux 0xf1bb865a netlink_ns_capable +EXPORT_SYMBOL vmlinux 0xf1d58239 __hw_addr_unsync_dev +EXPORT_SYMBOL vmlinux 0xf1db1704 nla_memcpy +EXPORT_SYMBOL vmlinux 0xf1db4699 dcache_dir_close +EXPORT_SYMBOL vmlinux 0xf1e98c74 avenrun +EXPORT_SYMBOL vmlinux 0xf20dabd8 free_irq +EXPORT_SYMBOL vmlinux 0xf222210e __set_page_dirty_nobuffers +EXPORT_SYMBOL vmlinux 0xf230fcf3 t10_pi_type1_crc +EXPORT_SYMBOL vmlinux 0xf233b28f qdisc_tree_decrease_qlen +EXPORT_SYMBOL vmlinux 0xf233b8e7 scsi_device_get +EXPORT_SYMBOL vmlinux 0xf23fcb99 __kfifo_in +EXPORT_SYMBOL vmlinux 0xf24f26e9 xfrm_policy_insert +EXPORT_SYMBOL vmlinux 0xf28ed6e2 machine_to_phys_nr +EXPORT_SYMBOL vmlinux 0xf2997713 tty_termios_hw_change +EXPORT_SYMBOL vmlinux 0xf29d25c8 bio_integrity_free +EXPORT_SYMBOL vmlinux 0xf2a0af8f backlight_device_registered +EXPORT_SYMBOL vmlinux 0xf2a2b163 resource_list_create_entry +EXPORT_SYMBOL vmlinux 0xf2c0bd82 i2c_put_adapter +EXPORT_SYMBOL vmlinux 0xf2c43f3f zlib_deflate +EXPORT_SYMBOL vmlinux 0xf2cd003e pnp_release_card_device +EXPORT_SYMBOL vmlinux 0xf2f22cc3 trace_raw_output_prep +EXPORT_SYMBOL vmlinux 0xf3059353 __skb_gro_checksum_complete +EXPORT_SYMBOL vmlinux 0xf312cb9d ucs2_strsize +EXPORT_SYMBOL vmlinux 0xf313da4e sha_transform +EXPORT_SYMBOL vmlinux 0xf3341268 __clear_user +EXPORT_SYMBOL vmlinux 0xf341dc7b dev_get_stats +EXPORT_SYMBOL vmlinux 0xf3442a7b tcp_v4_syn_recv_sock +EXPORT_SYMBOL vmlinux 0xf346231f seq_list_start_head +EXPORT_SYMBOL vmlinux 0xf353a698 register_module_notifier +EXPORT_SYMBOL vmlinux 0xf371b757 __neigh_set_probe_once +EXPORT_SYMBOL vmlinux 0xf389fe60 __hw_addr_init +EXPORT_SYMBOL vmlinux 0xf3916987 global_cursor_default +EXPORT_SYMBOL vmlinux 0xf396cd21 tcp_parse_md5sig_option +EXPORT_SYMBOL vmlinux 0xf3986b06 acpi_os_map_generic_address +EXPORT_SYMBOL vmlinux 0xf3bc7070 __scsi_add_device +EXPORT_SYMBOL vmlinux 0xf3c8ac30 path_is_under +EXPORT_SYMBOL vmlinux 0xf3e6402e __bitmap_equal +EXPORT_SYMBOL vmlinux 0xf4045b00 max8925_reg_write +EXPORT_SYMBOL vmlinux 0xf40851ec max8925_bulk_write +EXPORT_SYMBOL vmlinux 0xf4236f09 swiotlb_map_sg_attrs +EXPORT_SYMBOL vmlinux 0xf441ac43 ioread8_rep +EXPORT_SYMBOL vmlinux 0xf4448b5f phy_resume +EXPORT_SYMBOL vmlinux 0xf474c21c bitmap_print_to_pagebuf +EXPORT_SYMBOL vmlinux 0xf474fdcb kfree_const +EXPORT_SYMBOL vmlinux 0xf4839a26 netdev_state_change +EXPORT_SYMBOL vmlinux 0xf48bac4d n_tty_compat_ioctl_helper +EXPORT_SYMBOL vmlinux 0xf48db6dd dump_page +EXPORT_SYMBOL vmlinux 0xf4a01aff i2c_master_recv +EXPORT_SYMBOL vmlinux 0xf4a5c213 avail_to_resrv_perfctr_nmi_bit +EXPORT_SYMBOL vmlinux 0xf4b6a37c eth_prepare_mac_addr_change +EXPORT_SYMBOL vmlinux 0xf4b754fd acpi_resources_are_enforced +EXPORT_SYMBOL vmlinux 0xf4bdbeb9 __frontswap_invalidate_area +EXPORT_SYMBOL vmlinux 0xf4d8d680 dcache_dir_open +EXPORT_SYMBOL vmlinux 0xf4eb7e8e netdev_master_upper_dev_link_private +EXPORT_SYMBOL vmlinux 0xf4f14de6 rtnl_trylock +EXPORT_SYMBOL vmlinux 0xf4f97432 __cleancache_invalidate_page +EXPORT_SYMBOL vmlinux 0xf5105a39 __get_user_pages_unlocked +EXPORT_SYMBOL vmlinux 0xf51ae235 touch_nmi_watchdog +EXPORT_SYMBOL vmlinux 0xf51bf88b nf_hooks_needed +EXPORT_SYMBOL vmlinux 0xf5221d9e tty_port_tty_get +EXPORT_SYMBOL vmlinux 0xf530cfec netdev_crit +EXPORT_SYMBOL vmlinux 0xf536d22e acpi_set_gpe_wake_mask +EXPORT_SYMBOL vmlinux 0xf53d4c26 qdisc_class_hash_destroy +EXPORT_SYMBOL vmlinux 0xf53daaf4 __pci_register_driver +EXPORT_SYMBOL vmlinux 0xf541019c fib_default_rule_pref +EXPORT_SYMBOL vmlinux 0xf544e0ae vc_cons +EXPORT_SYMBOL vmlinux 0xf55b706e posix_test_lock +EXPORT_SYMBOL vmlinux 0xf56a4ade set_security_override_from_ctx +EXPORT_SYMBOL vmlinux 0xf56bddba devm_clk_get +EXPORT_SYMBOL vmlinux 0xf57abf79 blk_mq_requeue_request +EXPORT_SYMBOL vmlinux 0xf57d6655 balance_dirty_pages_ratelimited +EXPORT_SYMBOL vmlinux 0xf57fa70c unlock_rename +EXPORT_SYMBOL vmlinux 0xf5a10e25 vme_slave_set +EXPORT_SYMBOL vmlinux 0xf5b10e67 acpi_install_global_event_handler +EXPORT_SYMBOL vmlinux 0xf5c2d34d hdmi_audio_infoframe_init +EXPORT_SYMBOL vmlinux 0xf5c9bd39 vme_irq_request +EXPORT_SYMBOL vmlinux 0xf5d35187 max8925_bulk_read +EXPORT_SYMBOL vmlinux 0xf5eb86ea blk_verify_command +EXPORT_SYMBOL vmlinux 0xf5ee0f39 pci_claim_resource +EXPORT_SYMBOL vmlinux 0xf621bb7d queue_read_lock_slowpath +EXPORT_SYMBOL vmlinux 0xf62351b9 generic_ro_fops +EXPORT_SYMBOL vmlinux 0xf626f5ef scsi_get_host_dev +EXPORT_SYMBOL vmlinux 0xf62f64e8 sock_no_poll +EXPORT_SYMBOL vmlinux 0xf62fa3ec input_event +EXPORT_SYMBOL vmlinux 0xf630a265 kernel_sendmsg +EXPORT_SYMBOL vmlinux 0xf6388c56 sysctl_ip_default_ttl +EXPORT_SYMBOL vmlinux 0xf64bbfd0 kern_unmount +EXPORT_SYMBOL vmlinux 0xf6770391 mac_pton +EXPORT_SYMBOL vmlinux 0xf68285c0 register_inetaddr_notifier +EXPORT_SYMBOL vmlinux 0xf68687be __sg_page_iter_start +EXPORT_SYMBOL vmlinux 0xf689419c pci_bus_size_bridges +EXPORT_SYMBOL vmlinux 0xf693a145 irq_stat +EXPORT_SYMBOL vmlinux 0xf69c613c register_netdev +EXPORT_SYMBOL vmlinux 0xf6a1f3a4 md_wait_for_blocked_rdev +EXPORT_SYMBOL vmlinux 0xf6a2e7f8 xfrm_prepare_input +EXPORT_SYMBOL vmlinux 0xf6bb4729 color_table +EXPORT_SYMBOL vmlinux 0xf6d15f27 ip_generic_getfrag +EXPORT_SYMBOL vmlinux 0xf6db71d4 wireless_spy_update +EXPORT_SYMBOL vmlinux 0xf6ebc03b net_ratelimit +EXPORT_SYMBOL vmlinux 0xf6fc8791 __bitmap_xor +EXPORT_SYMBOL vmlinux 0xf711f6be md_wakeup_thread +EXPORT_SYMBOL vmlinux 0xf722694b t10_pi_type3_ip +EXPORT_SYMBOL vmlinux 0xf7289d14 __tracepoint_kmem_cache_free +EXPORT_SYMBOL vmlinux 0xf7382618 pagecache_write_begin +EXPORT_SYMBOL vmlinux 0xf73a5b8f proc_set_user +EXPORT_SYMBOL vmlinux 0xf74a570e phy_mac_interrupt +EXPORT_SYMBOL vmlinux 0xf74e8e83 pci_platform_rom +EXPORT_SYMBOL vmlinux 0xf7584a9c find_font +EXPORT_SYMBOL vmlinux 0xf75b0dd1 nd_iostat_end +EXPORT_SYMBOL vmlinux 0xf764868a udplite_table +EXPORT_SYMBOL vmlinux 0xf78aa83d __seq_open_private +EXPORT_SYMBOL vmlinux 0xf78bc011 generic_setxattr +EXPORT_SYMBOL vmlinux 0xf79e97cd acpi_get_physical_device_location +EXPORT_SYMBOL vmlinux 0xf7a674fd follow_down_one +EXPORT_SYMBOL vmlinux 0xf7adcaf3 __tracepoint_kmalloc_node +EXPORT_SYMBOL vmlinux 0xf7d65bb0 pci_enable_msix +EXPORT_SYMBOL vmlinux 0xf7eaa670 nf_ip6_checksum +EXPORT_SYMBOL vmlinux 0xf805d1a6 sock_queue_err_skb +EXPORT_SYMBOL vmlinux 0xf811e69d scsi_eh_flush_done_q +EXPORT_SYMBOL vmlinux 0xf812cff6 memscan +EXPORT_SYMBOL vmlinux 0xf8162bd5 tcp_initialize_rcv_mss +EXPORT_SYMBOL vmlinux 0xf827cb83 free_reserved_area +EXPORT_SYMBOL vmlinux 0xf82abc1d isa_dma_bridge_buggy +EXPORT_SYMBOL vmlinux 0xf82ec573 rb_prev +EXPORT_SYMBOL vmlinux 0xf85622cf dev_change_carrier +EXPORT_SYMBOL vmlinux 0xf8848569 tty_port_free_xmit_buf +EXPORT_SYMBOL vmlinux 0xf88a5e4e xfrm_policy_flush +EXPORT_SYMBOL vmlinux 0xf88e0ee2 acpi_get_table_header +EXPORT_SYMBOL vmlinux 0xf8a45979 vfs_readv +EXPORT_SYMBOL vmlinux 0xf8b45ce5 start_tty +EXPORT_SYMBOL vmlinux 0xf8c7dad7 inode_claim_rsv_space +EXPORT_SYMBOL vmlinux 0xf8d04f09 __crc32c_le_shift +EXPORT_SYMBOL vmlinux 0xf8d42771 security_path_rename +EXPORT_SYMBOL vmlinux 0xf8dbb09f dev_set_mac_address +EXPORT_SYMBOL vmlinux 0xf8f909be __dst_destroy_metrics_generic +EXPORT_SYMBOL vmlinux 0xf900383b vfs_link +EXPORT_SYMBOL vmlinux 0xf925a2fa sock_wake_async +EXPORT_SYMBOL vmlinux 0xf929127a fd_install +EXPORT_SYMBOL vmlinux 0xf94292ab pci_bus_read_config_word +EXPORT_SYMBOL vmlinux 0xf9447399 ip_mc_join_group +EXPORT_SYMBOL vmlinux 0xf945d8ff skb_push +EXPORT_SYMBOL vmlinux 0xf95886d4 tcp_ioctl +EXPORT_SYMBOL vmlinux 0xf95c52bb ipv6_chk_addr_and_flags +EXPORT_SYMBOL vmlinux 0xf95d289c invalidate_partition +EXPORT_SYMBOL vmlinux 0xf960177d tcp_init_xmit_timers +EXPORT_SYMBOL vmlinux 0xf972bd82 rtmsg_ifinfo +EXPORT_SYMBOL vmlinux 0xf99b411b pci_choose_state +EXPORT_SYMBOL vmlinux 0xf9a482f9 msleep +EXPORT_SYMBOL vmlinux 0xf9a66347 __sk_mem_schedule +EXPORT_SYMBOL vmlinux 0xf9c0b663 strlcat +EXPORT_SYMBOL vmlinux 0xf9c68114 __getblk_gfp +EXPORT_SYMBOL vmlinux 0xf9e7d1b2 kmalloc_caches +EXPORT_SYMBOL vmlinux 0xf9ea50cf sock_no_bind +EXPORT_SYMBOL vmlinux 0xf9ec03b3 tcp_md5_hash_skb_data +EXPORT_SYMBOL vmlinux 0xf9f06eb3 scsi_print_command +EXPORT_SYMBOL vmlinux 0xf9f224eb mdiobus_unregister +EXPORT_SYMBOL vmlinux 0xfa0ee510 generic_file_fsync +EXPORT_SYMBOL vmlinux 0xfa1ba264 elv_rb_add +EXPORT_SYMBOL vmlinux 0xfa371a48 __blockdev_direct_IO +EXPORT_SYMBOL vmlinux 0xfa3d893b d_set_d_op +EXPORT_SYMBOL vmlinux 0xfa458309 rwsem_down_read_failed +EXPORT_SYMBOL vmlinux 0xfa599bb2 netlink_register_notifier +EXPORT_SYMBOL vmlinux 0xfa741160 input_mt_destroy_slots +EXPORT_SYMBOL vmlinux 0xfa93184f neigh_sysctl_unregister +EXPORT_SYMBOL vmlinux 0xfaa829ea tcp_init_sock +EXPORT_SYMBOL vmlinux 0xfaac2c47 kernel_param_unlock +EXPORT_SYMBOL vmlinux 0xfabadebd unregister_nls +EXPORT_SYMBOL vmlinux 0xfac8865f sysctl_wmem_max +EXPORT_SYMBOL vmlinux 0xfacd8e72 vme_dma_vme_attribute +EXPORT_SYMBOL vmlinux 0xfaced743 gen_pool_set_algo +EXPORT_SYMBOL vmlinux 0xfadcdb8f scsi_report_bus_reset +EXPORT_SYMBOL vmlinux 0xfae15f0b elv_register_queue +EXPORT_SYMBOL vmlinux 0xfae67b1f cap_mmap_addr +EXPORT_SYMBOL vmlinux 0xfaeafa70 __devcgroup_inode_permission +EXPORT_SYMBOL vmlinux 0xfafd196e redraw_screen +EXPORT_SYMBOL vmlinux 0xfb0443fb acpi_get_parent +EXPORT_SYMBOL vmlinux 0xfb0d83c5 md_write_end +EXPORT_SYMBOL vmlinux 0xfb14fca6 make_kgid +EXPORT_SYMBOL vmlinux 0xfb1e74a8 mmc_can_reset +EXPORT_SYMBOL vmlinux 0xfb1e82c6 ipv6_sock_mc_drop +EXPORT_SYMBOL vmlinux 0xfb436d54 pci_dev_put +EXPORT_SYMBOL vmlinux 0xfb578fc5 memset +EXPORT_SYMBOL vmlinux 0xfb6af58d recalc_sigpending +EXPORT_SYMBOL vmlinux 0xfb731eed try_to_free_buffers +EXPORT_SYMBOL vmlinux 0xfb73f161 sync_filesystem +EXPORT_SYMBOL vmlinux 0xfb80c7a0 acpi_walk_namespace +EXPORT_SYMBOL vmlinux 0xfb877010 dqget +EXPORT_SYMBOL vmlinux 0xfb94103e __clzdi2 +EXPORT_SYMBOL vmlinux 0xfbaaf01e console_lock +EXPORT_SYMBOL vmlinux 0xfbbc2a05 fsnotify_destroy_mark +EXPORT_SYMBOL vmlinux 0xfbc3c46b ps2_end_command +EXPORT_SYMBOL vmlinux 0xfbc4f89e io_schedule_timeout +EXPORT_SYMBOL vmlinux 0xfbe19519 xfrm_dst_ifdown +EXPORT_SYMBOL vmlinux 0xfbe82adc bitmap_startwrite +EXPORT_SYMBOL vmlinux 0xfc02b7ad sysctl_tcp_wmem +EXPORT_SYMBOL vmlinux 0xfc39e32f ioport_unmap +EXPORT_SYMBOL vmlinux 0xfc3fda45 simple_transaction_release +EXPORT_SYMBOL vmlinux 0xfc472e70 generic_file_llseek +EXPORT_SYMBOL vmlinux 0xfc4eef1f pci_read_vpd +EXPORT_SYMBOL vmlinux 0xfc573441 __dev_get_by_name +EXPORT_SYMBOL vmlinux 0xfc624777 pci_wake_from_d3 +EXPORT_SYMBOL vmlinux 0xfc6aa8b0 phy_drivers_register +EXPORT_SYMBOL vmlinux 0xfc872fd1 get_ibs_caps +EXPORT_SYMBOL vmlinux 0xfc99e586 clear_nlink +EXPORT_SYMBOL vmlinux 0xfcac0d40 acpi_install_interface_handler +EXPORT_SYMBOL vmlinux 0xfcb926cd kstrtouint_from_user +EXPORT_SYMBOL vmlinux 0xfcc2a43c utf32_to_utf8 +EXPORT_SYMBOL vmlinux 0xfcc9b7bc tcp_get_md5sig_pool +EXPORT_SYMBOL vmlinux 0xfccc0f17 udp_lib_setsockopt +EXPORT_SYMBOL vmlinux 0xfcd3bda0 eth_header_cache +EXPORT_SYMBOL vmlinux 0xfcd575b3 simple_empty +EXPORT_SYMBOL vmlinux 0xfcd653bb down_write +EXPORT_SYMBOL vmlinux 0xfce9b627 mmc_power_save_host +EXPORT_SYMBOL vmlinux 0xfcec0987 enable_irq +EXPORT_SYMBOL vmlinux 0xfcfa03ff fb_videomode_to_modelist +EXPORT_SYMBOL vmlinux 0xfd000457 dentry_needs_remove_privs +EXPORT_SYMBOL vmlinux 0xfd01294a acpi_bus_get_device +EXPORT_SYMBOL vmlinux 0xfd04739b iov_iter_single_seg_count +EXPORT_SYMBOL vmlinux 0xfd2f4d43 pcie_port_service_register +EXPORT_SYMBOL vmlinux 0xfd561fc4 pci_request_selected_regions +EXPORT_SYMBOL vmlinux 0xfd6c6a25 blk_rq_map_integrity_sg +EXPORT_SYMBOL vmlinux 0xfd7229e4 x86_hyper_vmware +EXPORT_SYMBOL vmlinux 0xfd8f38ea generic_fillattr +EXPORT_SYMBOL vmlinux 0xfd99623a ip_frag_ecn_table +EXPORT_SYMBOL vmlinux 0xfd9a5fc6 dump_align +EXPORT_SYMBOL vmlinux 0xfd9e3d7e dump_skip +EXPORT_SYMBOL vmlinux 0xfda64865 blkdev_issue_discard +EXPORT_SYMBOL vmlinux 0xfdb9b629 ioread32be +EXPORT_SYMBOL vmlinux 0xfdbe0288 pci_add_resource_offset +EXPORT_SYMBOL vmlinux 0xfde49974 __wait_on_buffer +EXPORT_SYMBOL vmlinux 0xfdeb9209 blk_mq_start_stopped_hw_queues +EXPORT_SYMBOL vmlinux 0xfdfb792f amd_iommu_pc_supported +EXPORT_SYMBOL vmlinux 0xfdfc0b3b fiemap_fill_next_extent +EXPORT_SYMBOL vmlinux 0xfdfd6c90 add_wait_queue_exclusive +EXPORT_SYMBOL vmlinux 0xfe013ccf set_binfmt +EXPORT_SYMBOL vmlinux 0xfe01c7e1 phy_stop +EXPORT_SYMBOL vmlinux 0xfe029963 unregister_inetaddr_notifier +EXPORT_SYMBOL vmlinux 0xfe047ce6 acpi_enter_sleep_state +EXPORT_SYMBOL vmlinux 0xfe0b2cab thaw_bdev +EXPORT_SYMBOL vmlinux 0xfe13c522 acpi_install_gpe_raw_handler +EXPORT_SYMBOL vmlinux 0xfe17047b kblockd_schedule_delayed_work_on +EXPORT_SYMBOL vmlinux 0xfe204736 unregister_tcf_proto_ops +EXPORT_SYMBOL vmlinux 0xfe26fc7c nr_node_ids +EXPORT_SYMBOL vmlinux 0xfe374874 seq_vprintf +EXPORT_SYMBOL vmlinux 0xfe58faf8 udp6_set_csum +EXPORT_SYMBOL vmlinux 0xfe5d4bb2 sys_tz +EXPORT_SYMBOL vmlinux 0xfe661ee5 PDE_DATA +EXPORT_SYMBOL vmlinux 0xfe6ae41f tcp_init_cgroup +EXPORT_SYMBOL vmlinux 0xfe7c4287 nr_cpu_ids +EXPORT_SYMBOL vmlinux 0xfe8a9d09 mipi_dsi_generic_write +EXPORT_SYMBOL vmlinux 0xfe916dc6 hex_dump_to_buffer +EXPORT_SYMBOL vmlinux 0xfe9ebbbb acpi_osi_is_win8 +EXPORT_SYMBOL vmlinux 0xfec7a5a2 i2c_smbus_read_byte_data +EXPORT_SYMBOL vmlinux 0xfec9f046 jbd2_journal_start_reserved +EXPORT_SYMBOL vmlinux 0xfedcdb60 seq_hlist_next_percpu +EXPORT_SYMBOL vmlinux 0xfee19420 i2c_release_client +EXPORT_SYMBOL vmlinux 0xfeebc7c4 __kfifo_from_user_r +EXPORT_SYMBOL vmlinux 0xfef2c78f idr_get_next +EXPORT_SYMBOL vmlinux 0xfef9bda2 kobject_del +EXPORT_SYMBOL vmlinux 0xff124ab4 sget +EXPORT_SYMBOL vmlinux 0xff17607d md_flush_request +EXPORT_SYMBOL vmlinux 0xff1e9dd8 seq_list_start +EXPORT_SYMBOL vmlinux 0xff27b558 devm_devfreq_unregister_opp_notifier +EXPORT_SYMBOL vmlinux 0xff297dc9 skb_checksum_setup +EXPORT_SYMBOL vmlinux 0xff335e37 scsi_add_host_with_dma +EXPORT_SYMBOL vmlinux 0xff636ec5 dev_uc_flush +EXPORT_SYMBOL vmlinux 0xff6878cf fb_default_cmap +EXPORT_SYMBOL vmlinux 0xff6e9ee3 param_ops_short +EXPORT_SYMBOL vmlinux 0xff704104 sk_ns_capable +EXPORT_SYMBOL vmlinux 0xff7559e4 ioport_resource +EXPORT_SYMBOL vmlinux 0xff77c9cf file_path +EXPORT_SYMBOL vmlinux 0xff81dab0 jbd2_journal_forget +EXPORT_SYMBOL vmlinux 0xff9ca065 fb_edid_to_monspecs +EXPORT_SYMBOL vmlinux 0xff9de7a8 bio_add_page +EXPORT_SYMBOL vmlinux 0xffa355d1 __register_nmi_handler +EXPORT_SYMBOL vmlinux 0xffb9954b get_unmapped_area +EXPORT_SYMBOL vmlinux 0xffc31b3c xfrm_lookup +EXPORT_SYMBOL vmlinux 0xffd1fca5 bio_put +EXPORT_SYMBOL vmlinux 0xffd5a395 default_wake_function +EXPORT_SYMBOL vmlinux 0xffe6b700 tcf_em_unregister +EXPORT_SYMBOL vmlinux 0xffe7e514 swiotlb_dma_supported +EXPORT_SYMBOL_GPL arch/x86/crypto/aes-x86_64 0x7060bf0a crypto_aes_encrypt_x86 +EXPORT_SYMBOL_GPL arch/x86/crypto/aes-x86_64 0xe409b491 crypto_aes_decrypt_x86 +EXPORT_SYMBOL_GPL arch/x86/crypto/camellia-aesni-avx-x86_64 0x13a65ecf camellia_ecb_enc_16way +EXPORT_SYMBOL_GPL arch/x86/crypto/camellia-aesni-avx-x86_64 0x17bf48dc camellia_xts_dec_16way +EXPORT_SYMBOL_GPL arch/x86/crypto/camellia-aesni-avx-x86_64 0x1a08ded1 camellia_xts_enc +EXPORT_SYMBOL_GPL arch/x86/crypto/camellia-aesni-avx-x86_64 0x47129015 camellia_xts_enc_16way +EXPORT_SYMBOL_GPL arch/x86/crypto/camellia-aesni-avx-x86_64 0x7d54edc2 camellia_cbc_dec_16way +EXPORT_SYMBOL_GPL arch/x86/crypto/camellia-aesni-avx-x86_64 0x7e87ef55 camellia_ecb_dec_16way +EXPORT_SYMBOL_GPL arch/x86/crypto/camellia-aesni-avx-x86_64 0x8f185793 camellia_xts_dec +EXPORT_SYMBOL_GPL arch/x86/crypto/camellia-aesni-avx-x86_64 0x9e8086dc camellia_ctr_16way +EXPORT_SYMBOL_GPL arch/x86/crypto/camellia-x86_64 0x16061d06 __camellia_setkey +EXPORT_SYMBOL_GPL arch/x86/crypto/camellia-x86_64 0x1636abdf __camellia_enc_blk +EXPORT_SYMBOL_GPL arch/x86/crypto/camellia-x86_64 0x1da0e256 camellia_crypt_ctr +EXPORT_SYMBOL_GPL arch/x86/crypto/camellia-x86_64 0x31bbe42b camellia_crypt_ctr_2way +EXPORT_SYMBOL_GPL arch/x86/crypto/camellia-x86_64 0x43eee2b8 xts_camellia_setkey +EXPORT_SYMBOL_GPL arch/x86/crypto/camellia-x86_64 0x50dc55b6 __camellia_enc_blk_2way +EXPORT_SYMBOL_GPL arch/x86/crypto/camellia-x86_64 0x930f687f camellia_decrypt_cbc_2way +EXPORT_SYMBOL_GPL arch/x86/crypto/camellia-x86_64 0xa41a5ad3 camellia_dec_blk +EXPORT_SYMBOL_GPL arch/x86/crypto/camellia-x86_64 0xb2893c24 lrw_camellia_setkey +EXPORT_SYMBOL_GPL arch/x86/crypto/camellia-x86_64 0xf4521fda camellia_dec_blk_2way +EXPORT_SYMBOL_GPL arch/x86/crypto/camellia-x86_64 0xf4b828a8 lrw_camellia_exit_tfm +EXPORT_SYMBOL_GPL arch/x86/crypto/glue_helper 0x4a3a0de2 glue_cbc_decrypt_128bit +EXPORT_SYMBOL_GPL arch/x86/crypto/glue_helper 0x59759caa glue_ecb_crypt_128bit +EXPORT_SYMBOL_GPL arch/x86/crypto/glue_helper 0x61f1ad22 glue_ctr_crypt_128bit +EXPORT_SYMBOL_GPL arch/x86/crypto/glue_helper 0x8f02ac4d glue_xts_crypt_128bit_one +EXPORT_SYMBOL_GPL arch/x86/crypto/glue_helper 0xd7cf3bad glue_cbc_encrypt_128bit +EXPORT_SYMBOL_GPL arch/x86/crypto/glue_helper 0xdfdc1e7c glue_xts_crypt_128bit +EXPORT_SYMBOL_GPL arch/x86/crypto/serpent-avx-x86_64 0x016a957f serpent_xts_enc_8way_avx +EXPORT_SYMBOL_GPL arch/x86/crypto/serpent-avx-x86_64 0x0c5a8af6 serpent_xts_dec_8way_avx +EXPORT_SYMBOL_GPL arch/x86/crypto/serpent-avx-x86_64 0x0ff3c26d serpent_xts_dec +EXPORT_SYMBOL_GPL arch/x86/crypto/serpent-avx-x86_64 0x1be8c7c6 lrw_serpent_exit_tfm +EXPORT_SYMBOL_GPL arch/x86/crypto/serpent-avx-x86_64 0x5c3290a5 lrw_serpent_setkey +EXPORT_SYMBOL_GPL arch/x86/crypto/serpent-avx-x86_64 0x606a8162 serpent_cbc_dec_8way_avx +EXPORT_SYMBOL_GPL arch/x86/crypto/serpent-avx-x86_64 0x79ff0b7a serpent_ecb_dec_8way_avx +EXPORT_SYMBOL_GPL arch/x86/crypto/serpent-avx-x86_64 0x87c07386 xts_serpent_setkey +EXPORT_SYMBOL_GPL arch/x86/crypto/serpent-avx-x86_64 0x9ae34b2f serpent_xts_enc +EXPORT_SYMBOL_GPL arch/x86/crypto/serpent-avx-x86_64 0x9e018632 __serpent_crypt_ctr +EXPORT_SYMBOL_GPL arch/x86/crypto/serpent-avx-x86_64 0x9f99663c serpent_ctr_8way_avx +EXPORT_SYMBOL_GPL arch/x86/crypto/serpent-avx-x86_64 0xa84ea33d serpent_ecb_enc_8way_avx +EXPORT_SYMBOL_GPL arch/x86/crypto/twofish-x86_64 0x19dc7881 twofish_dec_blk +EXPORT_SYMBOL_GPL arch/x86/crypto/twofish-x86_64 0x5e752773 twofish_enc_blk +EXPORT_SYMBOL_GPL arch/x86/crypto/twofish-x86_64-3way 0x10e4091a lrw_twofish_exit_tfm +EXPORT_SYMBOL_GPL arch/x86/crypto/twofish-x86_64-3way 0x1fd77fb1 twofish_dec_blk_3way +EXPORT_SYMBOL_GPL arch/x86/crypto/twofish-x86_64-3way 0x37fce988 xts_twofish_setkey +EXPORT_SYMBOL_GPL arch/x86/crypto/twofish-x86_64-3way 0x61694b97 twofish_dec_blk_cbc_3way +EXPORT_SYMBOL_GPL arch/x86/crypto/twofish-x86_64-3way 0x84c03759 lrw_twofish_setkey +EXPORT_SYMBOL_GPL arch/x86/crypto/twofish-x86_64-3way 0x8d75ab44 twofish_enc_blk_ctr +EXPORT_SYMBOL_GPL arch/x86/crypto/twofish-x86_64-3way 0x8e856922 twofish_enc_blk_ctr_3way +EXPORT_SYMBOL_GPL arch/x86/crypto/twofish-x86_64-3way 0xf2e80e9c __twofish_enc_blk_3way +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x00250794 kvm_require_cpl +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x00aaf935 kvm_disable_tdp +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x020739c0 kvm_arch_start_assignment +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x0344f41f kvm_vcpu_gfn_to_pfn +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x03bdb01a kvm_inject_nmi +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x04a3c69c kvm_init_shadow_mmu +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x064b2619 kvm_requeue_exception_e +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x07766369 reprogram_fixed_counter +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x0a5de1c8 kvm_gfn_to_hva_cache_init +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x0b395a1b kvm_cpu_has_interrupt +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x1211d613 reprogram_counter +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x12b670fa kvm_set_msr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x12c45b33 mark_page_dirty +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x1307bc14 kvm_get_rflags +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x1b448a7c kvm_read_guest_cached +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x1bfee27e kvm_find_cpuid_entry +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x1e46bad1 kvm_read_guest_atomic +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x1f7af249 __tracepoint_kvm_ple_window +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x20b8d423 kvm_set_apic_base +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x20de5193 kvm_disable_largepages +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x2142e95e kvm_vcpu_block +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x233c6698 __x86_set_memory_region +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x2592a56e kvm_queue_exception +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x27046576 kvm_exit +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x29d8c879 kvm_emulate_cpuid +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x2ba565a4 kvm_read_guest_page_mmu +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x2c78b8d4 __gfn_to_pfn_memslot +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x2d65f8c7 __tracepoint_kvm_pml_full +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x2faf8139 __kvm_set_memory_region +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x317f9e6b kvm_enable_efer_bits +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x318eb4ef kvm_vcpu_gfn_to_page +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x31ea5d20 kvm_set_cr3 +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x32ddd308 kvm_mmu_get_spte_hierarchy +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x33cf0663 kvm_put_kvm +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x3670de36 kvm_mmu_reset_context +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x37930789 kvm_after_handle_nmi +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x38654aa4 kvm_emulate_hypercall +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x38687ea8 reprogram_gp_counter +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x3974de90 kvm_arch_register_noncoherent_dma +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x39892e13 x86_emulate_instruction +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x3b242710 kvm_get_dirty_log +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x3b5dd35e __tracepoint_kvm_msr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x3b6238cc kvm_vcpu_halt +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x3b6ded1c kvm_mmu_page_fault +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x3c4f13d5 kvm_write_guest_cached +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x3d92bc81 kvm_get_apic_base +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x3e1f72e0 kvm_vcpu_cache +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x3ff0d7ca kvm_vcpu_yield_to +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x42018754 kvm_mmu_slot_set_dirty +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x43842d1e kvm_queue_exception_e +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x44545b8a kvm_get_dirty_log_protect +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x4714e133 gfn_to_hva +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x47b7ddf9 kvm_valid_efer +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x485cd7f6 kvm_rebooting +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x4a0619bf kvm_set_msr_common +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x4abb8d3a gfn_to_memslot +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x4c51f664 __tracepoint_kvm_exit +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x4f0b1f7c kvm_cpuid +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x4fa97775 kvm_get_kvm +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x53a2a3f7 __tracepoint_kvm_inj_virq +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x55efa409 kvm_vcpu_kick +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x58b9445b kvm_get_dr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x59a298b0 kvm_apic_write_nodecode +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x5d8cc737 cpuid_query_maxphyaddr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x5f71747c kvm_release_page_clean +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x6051ba5a kvm_rdpmc +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x63a1ca63 kvm_fast_pio_out +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x64020e10 kvm_set_shared_msr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x6487276c kvm_inject_realmode_interrupt +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x64a34f49 __tracepoint_kvm_nested_vmexit_inject +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x6564281a kvm_vcpu_gfn_to_pfn_atomic +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x669da1fd kvm_set_pfn_dirty +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x69bca636 kvm_vcpu_uninit +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x6a041bd0 kvm_mmu_load +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x6bd2f104 kvm_mtrr_get_guest_memory_type +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x6c1c52ef kvm_arch_end_assignment +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x6c913368 kvm_vcpu_on_spin +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x708313e8 kvm_x86_ops +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x709cd8cb kvm_spurious_fault +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x74506437 kvm_get_cr8 +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x76649161 kvm_read_guest_virt +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x7679217c kvm_write_guest +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x77ba7a6e kvm_set_cr8 +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x79cca1a3 kvm_vcpu_read_guest_page +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x7aa64803 kvm_release_pfn_clean +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x7c502ab9 __tracepoint_kvm_nested_intr_vmexit +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x7f2c1163 __tracepoint_kvm_nested_vmexit +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x7f83639f kvm_flush_remote_tlbs +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x7f9901a1 kvm_io_bus_write +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x803afb7a gfn_to_page_many_atomic +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x828b3233 kvm_mtrr_valid +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x831327da kvm_max_guest_tsc_khz +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x8a26f7b0 __tracepoint_kvm_nested_intercepts +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x8a4d9bcc kvm_set_cr0 +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x8be69a07 kvm_irq_has_notifier +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x8ce4f3ab kvm_enable_tdp +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x8da01274 kvm_get_pfn +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x8e1cd06f kvm_set_pfn_accessed +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x8e4d5a1c kvm_read_guest +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x8ea53b1b kvm_requeue_exception +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x8ecd9e73 kvm_is_linear_rip +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x900a30b9 kvm_task_switch +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x987049eb kvm_mmu_slot_leaf_clear_dirty +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x9890657c gfn_to_pfn_atomic +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x998680a0 kvm_inject_pending_timer_irqs +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x9a216313 kvm_define_shared_msr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x9a3303a0 kvm_vcpu_init +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x9a4cbcf4 kvm_set_xcr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x9ae72a7b kvm_set_dr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x9e399db6 kvm_vcpu_reload_apic_access_page +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x9ee59155 __tracepoint_kvm_page_fault +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xa040b91f kvm_inject_page_fault +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xa0ec3a0a gfn_to_hva_memslot +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xa18bb283 kvm_write_guest_virt_system +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xa508e36b __tracepoint_kvm_skinit +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xa5138b92 kvm_mmu_unprotect_page_virt +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xa9288ccd kvm_mmu_unload +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xaa79cab5 __tracepoint_kvm_cr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xacf7f97c gfn_to_pfn_memslot_atomic +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xad6a0fbe kvm_emulate_halt +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xaf275715 __tracepoint_kvm_nested_vmrun +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xaf520e2c kvm_mmu_slot_largepage_remove_write_access +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xb361ec1d kvm_complete_insn_gp +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xb43eb6d7 kvm_vcpu_read_guest_atomic +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xb7596f35 kvm_vcpu_write_guest +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xb8a89836 kvm_is_visible_gfn +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xba406fbc kvm_mmu_clear_dirty_pt_masked +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xba9ed435 kvm_mmu_set_mmio_spte_mask +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xbc4fd3b7 kvm_vcpu_mark_page_dirty +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xbd703db3 kvm_set_rflags +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xc1510ea4 kvm_clear_guest +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xc2135adf kvm_get_msr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xc42e57cf load_pdptrs +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xc56d75ce __kvm_apic_update_irr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xc6484aa5 kvm_arch_has_noncoherent_dma +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xc8cd17fa x86_set_memory_region +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xc8d4728a kvm_debugfs_dir +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xcb9d7b82 kvm_get_cs_db_l_bits +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xcef3fec5 __tracepoint_kvm_write_tsc_offset +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xd0459e67 kvm_has_tsc_control +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xd0b2727a kvm_mmu_set_mask_ptes +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xd25106d5 gfn_to_pfn +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xd42c5637 kvm_apic_set_eoi_accelerated +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xd47bf330 kvm_arch_has_assigned_device +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xd7f74f96 handle_mmio_page_fault_common +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xd93bbd46 gfn_to_pfn_memslot +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xda29a936 kvm_lapic_set_eoi +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xdc7fb32f kvm_release_page_dirty +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xde3bed40 kvm_emulate_wbinvd +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xde46ec54 gfn_to_pfn_prot +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xdeb9e564 __tracepoint_kvm_invlpga +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xdf142338 gfn_to_page +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xe01aa4e0 kvm_get_linear_rip +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xe16131eb kvm_lmsw +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xe2475d96 kvm_init_shadow_ept_mmu +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xe25eb8f8 kvm_read_guest_page +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xe39b37d4 kvm_require_dr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xe4e4d9bf kvm_vcpu_write_guest_page +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xe5588ec1 kvm_mmu_unprotect_page +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xe811d4de kvm_cpu_get_interrupt +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xe8fa70f2 kvm_vcpu_gfn_to_hva +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xe9165d95 kvm_vcpu_read_guest +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xe9d40930 kvm_write_tsc +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xea69d909 kvm_before_handle_nmi +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xeb9bb64a kvm_clear_guest_page +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xecf9ef2b kvm_arch_unregister_noncoherent_dma +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xeee49fc3 kvm_mmu_invlpg +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xef2780ab kvm_get_msr_common +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xef2addc5 kvm_write_guest_page +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xef7c3303 kvm_mmu_sync_roots +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xf4b66b1d kvm_set_cr4 +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xf525885c kvm_init +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xf7a186db kvm_apic_update_irr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xfdfb2a27 kvm_set_memory_region +EXPORT_SYMBOL_GPL crypto/ablk_helper 0x2a777f7f ablk_init_common +EXPORT_SYMBOL_GPL crypto/ablk_helper 0x4afaac5a ablk_init +EXPORT_SYMBOL_GPL crypto/ablk_helper 0x84672b4f ablk_decrypt +EXPORT_SYMBOL_GPL crypto/ablk_helper 0x88bcd5ff ablk_encrypt +EXPORT_SYMBOL_GPL crypto/ablk_helper 0x9bc93d53 ablk_set_key +EXPORT_SYMBOL_GPL crypto/ablk_helper 0xaff02ee8 __ablk_encrypt +EXPORT_SYMBOL_GPL crypto/ablk_helper 0xf0c0636f ablk_exit +EXPORT_SYMBOL_GPL crypto/af_alg 0x0eedea76 af_alg_complete +EXPORT_SYMBOL_GPL crypto/af_alg 0x11badcb8 af_alg_wait_for_completion +EXPORT_SYMBOL_GPL crypto/af_alg 0x2c789cef af_alg_register_type +EXPORT_SYMBOL_GPL crypto/af_alg 0x3b77c4d9 af_alg_free_sg +EXPORT_SYMBOL_GPL crypto/af_alg 0x75aafd1e af_alg_link_sg +EXPORT_SYMBOL_GPL crypto/af_alg 0x98081281 af_alg_cmsg_send +EXPORT_SYMBOL_GPL crypto/af_alg 0xa1f481d3 af_alg_accept +EXPORT_SYMBOL_GPL crypto/af_alg 0xd500634c af_alg_release +EXPORT_SYMBOL_GPL crypto/af_alg 0xdefdd156 af_alg_unregister_type +EXPORT_SYMBOL_GPL crypto/af_alg 0xeb91aaa4 af_alg_make_sg +EXPORT_SYMBOL_GPL crypto/asymmetric_keys/pkcs7_message 0x1c8f3d8f pkcs7_parse_message +EXPORT_SYMBOL_GPL crypto/asymmetric_keys/pkcs7_message 0x91d2fecf pkcs7_validate_trust +EXPORT_SYMBOL_GPL crypto/asymmetric_keys/pkcs7_message 0xbe82ff95 pkcs7_get_content_data +EXPORT_SYMBOL_GPL crypto/asymmetric_keys/pkcs7_message 0xcc45da99 pkcs7_free_message +EXPORT_SYMBOL_GPL crypto/asymmetric_keys/pkcs7_message 0xe9ff17e6 pkcs7_verify +EXPORT_SYMBOL_GPL crypto/async_tx/async_memcpy 0x3e9df072 async_memcpy +EXPORT_SYMBOL_GPL crypto/async_tx/async_pq 0x4b21546e async_gen_syndrome +EXPORT_SYMBOL_GPL crypto/async_tx/async_pq 0xb0bc667c async_syndrome_val +EXPORT_SYMBOL_GPL crypto/async_tx/async_raid6_recov 0x793b83b1 async_raid6_datap_recov +EXPORT_SYMBOL_GPL crypto/async_tx/async_raid6_recov 0x9118003d async_raid6_2data_recov +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0x2a09d57f async_tx_submit +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0x598eccb7 async_trigger_callback +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0xcb8bfd2a __async_tx_find_channel +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0xd65f9ccd async_tx_quiesce +EXPORT_SYMBOL_GPL crypto/async_tx/async_xor 0x4a70396f async_xor_val +EXPORT_SYMBOL_GPL crypto/async_tx/async_xor 0xcbdbe4b1 async_xor +EXPORT_SYMBOL_GPL crypto/authenc 0x587ef278 crypto_authenc_extractkeys +EXPORT_SYMBOL_GPL crypto/blowfish_common 0xf8c63532 blowfish_setkey +EXPORT_SYMBOL_GPL crypto/cast5_generic 0x27278ca9 __cast5_encrypt +EXPORT_SYMBOL_GPL crypto/cast5_generic 0x4a2a3ca6 __cast5_decrypt +EXPORT_SYMBOL_GPL crypto/cast5_generic 0xb96a4783 cast5_setkey +EXPORT_SYMBOL_GPL crypto/cast6_generic 0x1291971c __cast6_setkey +EXPORT_SYMBOL_GPL crypto/cast6_generic 0x1e2c961f __cast6_decrypt +EXPORT_SYMBOL_GPL crypto/cast6_generic 0x8f04034a __cast6_encrypt +EXPORT_SYMBOL_GPL crypto/cast6_generic 0xa3b12c60 cast6_setkey +EXPORT_SYMBOL_GPL crypto/cast_common 0x08aa6fb7 cast_s1 +EXPORT_SYMBOL_GPL crypto/cast_common 0x0c5fbf8a cast_s3 +EXPORT_SYMBOL_GPL crypto/cast_common 0xe39dd4b4 cast_s2 +EXPORT_SYMBOL_GPL crypto/cast_common 0xee83a4f3 cast_s4 +EXPORT_SYMBOL_GPL crypto/cryptd 0x1517edef cryptd_shash_desc +EXPORT_SYMBOL_GPL crypto/cryptd 0x41a2c369 cryptd_free_ablkcipher +EXPORT_SYMBOL_GPL crypto/cryptd 0x4c1f8c02 cryptd_alloc_aead +EXPORT_SYMBOL_GPL crypto/cryptd 0x570491fa cryptd_aead_child +EXPORT_SYMBOL_GPL crypto/cryptd 0x625bc241 cryptd_ahash_child +EXPORT_SYMBOL_GPL crypto/cryptd 0x72d50114 cryptd_free_aead +EXPORT_SYMBOL_GPL crypto/cryptd 0xad7e8eb7 cryptd_free_ahash +EXPORT_SYMBOL_GPL crypto/cryptd 0xc32ee1db cryptd_alloc_ahash +EXPORT_SYMBOL_GPL crypto/cryptd 0xfc414023 cryptd_alloc_ablkcipher +EXPORT_SYMBOL_GPL crypto/cryptd 0xffd12fa1 cryptd_ablkcipher_child +EXPORT_SYMBOL_GPL crypto/crypto_null 0x21cd536a crypto_put_default_null_skcipher +EXPORT_SYMBOL_GPL crypto/crypto_null 0x7b29a0d6 crypto_get_default_null_skcipher +EXPORT_SYMBOL_GPL crypto/des_generic 0xcfd9a2c0 des_ekey +EXPORT_SYMBOL_GPL crypto/des_generic 0xf8c78d49 __des3_ede_setkey +EXPORT_SYMBOL_GPL crypto/lrw 0x3864eb66 lrw_free_table +EXPORT_SYMBOL_GPL crypto/lrw 0xcd074900 lrw_init_table +EXPORT_SYMBOL_GPL crypto/lrw 0xf67b5454 lrw_crypt +EXPORT_SYMBOL_GPL crypto/mcryptd 0x1a7fb8aa shash_ahash_mcryptd_update +EXPORT_SYMBOL_GPL crypto/mcryptd 0x3d11309a mcryptd_shash_desc +EXPORT_SYMBOL_GPL crypto/mcryptd 0x43c18e47 mcryptd_ahash_child +EXPORT_SYMBOL_GPL crypto/mcryptd 0x7241df76 shash_ahash_mcryptd_finup +EXPORT_SYMBOL_GPL crypto/mcryptd 0x74c6c6f6 shash_ahash_mcryptd_digest +EXPORT_SYMBOL_GPL crypto/mcryptd 0x8347667c mcryptd_flusher +EXPORT_SYMBOL_GPL crypto/mcryptd 0xc3b4b701 mcryptd_free_ahash +EXPORT_SYMBOL_GPL crypto/mcryptd 0xf56b2dd4 mcryptd_alloc_ahash +EXPORT_SYMBOL_GPL crypto/mcryptd 0xf9187896 shash_ahash_mcryptd_final +EXPORT_SYMBOL_GPL crypto/rsa_generic 0xadc25bd8 rsa_parse_key +EXPORT_SYMBOL_GPL crypto/rsa_generic 0xf1b141d1 rsa_free_key +EXPORT_SYMBOL_GPL crypto/serpent_generic 0x5ddb33e9 __serpent_encrypt +EXPORT_SYMBOL_GPL crypto/serpent_generic 0x61a9c52d serpent_setkey +EXPORT_SYMBOL_GPL crypto/serpent_generic 0x77b39cb4 __serpent_setkey +EXPORT_SYMBOL_GPL crypto/serpent_generic 0x8a1a99ad __serpent_decrypt +EXPORT_SYMBOL_GPL crypto/twofish_common 0x6c3229bb __twofish_setkey +EXPORT_SYMBOL_GPL crypto/twofish_common 0x8ac3e953 twofish_setkey +EXPORT_SYMBOL_GPL crypto/xts 0xc0f1e56d xts_crypt +EXPORT_SYMBOL_GPL drivers/acpi/nfit 0x3e576048 acpi_nfit_attribute_groups +EXPORT_SYMBOL_GPL drivers/acpi/nfit 0x43b26bd8 acpi_nfit_init +EXPORT_SYMBOL_GPL drivers/acpi/sbshc 0x1c8984c7 acpi_smbus_unregister_callback +EXPORT_SYMBOL_GPL drivers/acpi/sbshc 0x87bd07bd acpi_smbus_register_callback +EXPORT_SYMBOL_GPL drivers/acpi/sbshc 0xb9a141b0 acpi_smbus_read +EXPORT_SYMBOL_GPL drivers/acpi/sbshc 0xe1372311 acpi_smbus_write +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x07e2f21d ahci_qc_issue +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x1237a6f8 ahci_kick_engine +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x21e7aa8c ahci_fill_cmd_slot +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x23652d07 ahci_save_initial_config +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x31d7f5d2 ahci_start_fis_rx +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x34cc0998 ahci_reset_em +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x3ec92cd8 ahci_pmp_retry_srst_ops +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x3fbd7330 ahci_init_controller +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x41e1fe53 ahci_reset_controller +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x44f3c387 ahci_error_handler +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x4f0b43fb ahci_check_ready +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x55e4ac50 ahci_sdev_attrs +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x601d26d1 ahci_start_engine +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x727560db ahci_set_em_messages +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x7f23de14 ahci_stop_engine +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x8ba854ac ahci_em_messages +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xa265f1cf ahci_print_info +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xac391255 ahci_host_activate +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xb3cc3c72 ahci_do_softreset +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xc4019da0 ahci_shost_attrs +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xc7ad28a6 ahci_dev_classify +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xea50dad3 ahci_ignore_sss +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xf080ed04 ahci_port_resume +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xf7f4360b ahci_ops +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x09ee64f1 ahci_platform_suspend +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x0e0f8495 ahci_platform_enable_clks +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x2baaf4d1 ahci_platform_enable_resources +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x2fa4edd4 ahci_platform_enable_regulators +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x38f7dc57 ahci_platform_disable_regulators +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x391919ae ahci_platform_resume_host +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x3d31ab2c ahci_platform_resume +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x5badddec ahci_platform_suspend_host +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0xae302475 ahci_platform_disable_clks +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0xb9aab8a1 ahci_platform_init_host +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0xcf25344f ahci_platform_disable_resources +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0xdb69c85f ahci_platform_get_resources +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0xe7043fb7 ahci_platform_ops +EXPORT_SYMBOL_GPL drivers/ata/pata_platform 0xa4ed443d __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/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-spmi 0x0b4b06fb devm_regmap_init_spmi_base +EXPORT_SYMBOL_GPL drivers/base/regmap/regmap-spmi 0x59ff3484 devm_regmap_init_spmi_ext +EXPORT_SYMBOL_GPL drivers/base/regmap/regmap-spmi 0xbc0ad27d regmap_init_spmi_ext +EXPORT_SYMBOL_GPL drivers/base/regmap/regmap-spmi 0xcfcfb9a5 regmap_init_spmi_base +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x02b37117 bcma_core_disable +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x1163cfa0 bcma_chipco_chipctl_maskset +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x246e1fd6 bcma_chipco_gpio_out +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x2d82cc74 bcma_driver_unregister +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x4153d7a1 bcma_pmu_get_bus_clock +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x60ebe1da bcma_chipco_regctl_maskset +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x62a65dda bcma_core_set_clockmode +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x716e4373 bcma_host_pci_irq_ctl +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x740fc834 bcma_chipco_b_mii_write +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x7a682010 __bcma_driver_register +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x87ddd090 bcma_pmu_spuravoid_pllupdate +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x8f327572 bcma_core_enable +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x97bc77a1 bcma_chipco_pll_write +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x9b6e3f12 bcma_chipco_get_alp_clock +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xa7574c0b bcma_core_is_enabled +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xbb2bad1d bcma_chipco_pll_maskset +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xbc7621a0 bcma_chipco_gpio_control +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xc99aa7cb bcma_chipco_gpio_outen +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xd3e66ea4 bcma_core_pci_power_save +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xd9014afd bcma_host_pci_up +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xdc1cf9e6 bcma_chipco_pll_read +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xe44f7647 bcma_find_core_unit +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xec785275 bcma_host_pci_down +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xf39b606c bcma_core_pll_ctl +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0x5d36bb6e btbcm_initialize +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0x6310f6b4 btbcm_finalize +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0x809f7c49 btbcm_setup_patchram +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0xb8f12c40 btbcm_set_bdaddr +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0xc0907099 btbcm_setup_apple +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0xe30d518e btbcm_check_bdaddr +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0x6b9bac9d btintel_set_bdaddr +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0xe6376e5a btintel_check_bdaddr +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x0d73fd50 btmrvl_enable_ps +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x27fa1b2f btmrvl_register_hdev +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x2c70d74d btmrvl_check_evtpkt +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x44da586a btmrvl_enable_hs +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x573f4314 btmrvl_add_card +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x8c1b1622 btmrvl_interrupt +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xa1282d19 btmrvl_send_module_cfg_cmd +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xa4a75aad btmrvl_remove_card +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xc8c8e5b6 btmrvl_send_hscfg_cmd +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xe29b20c1 btmrvl_pscan_window_reporting +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xf2ca3e58 btmrvl_process_event +EXPORT_SYMBOL_GPL drivers/bluetooth/btrtl 0xf70c1f51 btrtl_setup_realtek +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 0x5de74b06 ccp_enqueue_cmd +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0x11b619a6 adf_dev_start +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0x1562054c adf_cfg_add_key_value_param +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0x2401e65f adf_disable_aer +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0x3031e9bc adf_cfg_dev_add +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0x3da37124 adf_devmgr_add_dev +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0x4139f80b adf_dev_stop +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0x4c12ea06 adf_response_handler +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0x4cbfd15b adf_cfg_dev_remove +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0x51ff0a97 adf_enable_aer +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0x65c58d47 adf_devmgr_rm_dev +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0x7b276baf adf_dev_init +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0x7c7206f3 adf_dev_shutdown +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0x8db072df adf_service_unregister +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0x9e8036de adf_devmgr_pci_to_accel_dev +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0xa328ba75 adf_service_register +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0xa7aec9c3 adf_cleanup_etr_data +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0xbe466d46 adf_init_etr_data +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0xc9d3802f adf_cfg_section_add +EXPORT_SYMBOL_GPL drivers/dca/dca 0x01a33ab9 dca_unregister_notify +EXPORT_SYMBOL_GPL drivers/dca/dca 0x1ade4115 free_dca_provider +EXPORT_SYMBOL_GPL drivers/dca/dca 0x31a2c8df dca_get_tag +EXPORT_SYMBOL_GPL drivers/dca/dca 0x52f036b1 register_dca_provider +EXPORT_SYMBOL_GPL drivers/dca/dca 0x57665d80 dca3_get_tag +EXPORT_SYMBOL_GPL drivers/dca/dca 0x75727d8f unregister_dca_provider +EXPORT_SYMBOL_GPL drivers/dca/dca 0xac34ecec dca_register_notify +EXPORT_SYMBOL_GPL drivers/dca/dca 0xb884b79e dca_remove_requester +EXPORT_SYMBOL_GPL drivers/dca/dca 0xcae0af80 alloc_dca_provider +EXPORT_SYMBOL_GPL drivers/dca/dca 0xf73842f6 dca_add_requester +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0x20da8d2b dw_dma_disable +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0x22aec85d dw_dma_probe +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0x280e9f87 dw_dma_filter +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0x66ae52b8 dw_dma_remove +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0xcd014380 dw_dma_enable +EXPORT_SYMBOL_GPL drivers/dma/hsu/hsu_dma 0x21a10556 hsu_dma_irq +EXPORT_SYMBOL_GPL drivers/dma/hsu/hsu_dma 0x371a7a23 hsu_dma_remove +EXPORT_SYMBOL_GPL drivers/dma/hsu/hsu_dma 0xcb0b6fdb hsu_dma_probe +EXPORT_SYMBOL_GPL drivers/dma/virt-dma 0x1e0c7dc9 vchan_dma_desc_free_list +EXPORT_SYMBOL_GPL drivers/dma/virt-dma 0x5a14d79c vchan_find_desc +EXPORT_SYMBOL_GPL drivers/dma/virt-dma 0x6ea037ad vchan_init +EXPORT_SYMBOL_GPL drivers/dma/virt-dma 0xeac95893 vchan_tx_submit +EXPORT_SYMBOL_GPL drivers/edac/amd64_edac_mod 0xee1ffc17 amd64_get_dram_hole_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x02f74558 edac_pci_release_generic_ctl +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x0c32ff8a edac_pci_alloc_index +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x20eeae52 edac_mc_handle_error +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x29e30c3a edac_mc_add_mc_with_groups +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x2c8dd6b8 edac_mem_types +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x34ab752a edac_pci_add_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x3a1fa9cc edac_mc_find_csrow_by_page +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x3ad54a58 edac_pci_del_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x4119927f edac_mc_free +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x50b1081e edac_pci_create_generic_ctl +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x54d3f20b find_mci_by_dev +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x584265f4 edac_pci_handle_pe +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x5c504d4d edac_raw_mc_handle_error +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x605f64d6 edac_pci_reset_delay_period +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x679f802e edac_device_free_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x68e2e6f0 edac_pci_handle_npe +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x6e3ff83a edac_device_alloc_index +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xaa4d0519 edac_mc_del_mc +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xb9bb2805 edac_pci_free_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xbf96f56a edac_mc_alloc +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xc0dcb59e edac_layer_name +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xcae98a8e edac_device_handle_ue +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xdb6dc426 edac_pci_alloc_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xed839562 edac_device_del_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xee98f264 edac_device_add_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xefaf2bcf edac_device_handle_ce +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xfe75b290 edac_device_alloc_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_mce_amd 0x14878009 amd_report_gart_errors +EXPORT_SYMBOL_GPL drivers/edac/edac_mce_amd 0x1d34e996 pp_msgs +EXPORT_SYMBOL_GPL drivers/edac/edac_mce_amd 0x21626132 amd_register_ecc_decoder +EXPORT_SYMBOL_GPL drivers/edac/edac_mce_amd 0x737912b3 amd_unregister_ecc_decoder +EXPORT_SYMBOL_GPL drivers/edac/edac_mce_amd 0xb30b7e56 amd_decode_mce +EXPORT_SYMBOL_GPL drivers/firewire/firewire-core 0xf4ade51f fw_card_release +EXPORT_SYMBOL_GPL drivers/gpio/gpio-generic 0x84be2ef1 bgpio_remove +EXPORT_SYMBOL_GPL drivers/gpio/gpio-generic 0x9f628502 bgpio_init +EXPORT_SYMBOL_GPL drivers/gpio/gpio-max730x 0x1bbbf69b __max730x_probe +EXPORT_SYMBOL_GPL drivers/gpio/gpio-max730x 0x2795f615 __max730x_remove +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x512a2fc2 drm_class_device_unregister +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xe3293e22 drm_do_get_edid +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xe9c887c8 drm_class_device_register +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 0xe7237b0b i915_gpu_turbo_disable +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0x102c2356 ttm_dma_page_alloc_debugfs +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0x66b82231 ttm_dma_unpopulate +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0x6adf436b ttm_prime_fd_to_handle +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0x990290a0 ttm_dma_populate +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0xce36343e ttm_prime_handle_to_fd +EXPORT_SYMBOL_GPL drivers/hid/hid 0x05495392 hid_debug +EXPORT_SYMBOL_GPL drivers/hid/hid 0x07bb85f8 hid_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x0a811617 hid_debug_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0x0cbd8389 hid_dump_input +EXPORT_SYMBOL_GPL drivers/hid/hid 0x1029d146 hid_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x250a61a6 hidinput_find_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0x29ae0b0a hid_dump_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x309f33c0 hid_register_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x36bcaaaa hid_open_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x36ccb632 hid_dump_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0x396bc52a hidraw_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x4226c736 hidinput_report_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0x4906a967 hid_snto32 +EXPORT_SYMBOL_GPL drivers/hid/hid 0x5657e021 hid_parse_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x5a9b45c6 hidraw_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x5ff6d018 hidinput_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x684ce1c7 hid_output_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x6c632848 hid_unregister_driver +EXPORT_SYMBOL_GPL drivers/hid/hid 0x792d9797 __hid_register_driver +EXPORT_SYMBOL_GPL drivers/hid/hid 0x7a263c6f hid_add_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0x80370125 hid_resolv_usage +EXPORT_SYMBOL_GPL drivers/hid/hid 0x882977b3 __hid_request +EXPORT_SYMBOL_GPL drivers/hid/hid 0x9b2c9c2f hid_report_raw_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0x9be9adaa hidraw_report_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0xa0c825dc hidinput_get_led_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0xa116ef1a hid_input_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0xab8897c9 hid_validate_values +EXPORT_SYMBOL_GPL drivers/hid/hid 0xb2d0845c hid_field_extract +EXPORT_SYMBOL_GPL drivers/hid/hid 0xc982dd28 hid_ignore +EXPORT_SYMBOL_GPL drivers/hid/hid 0xd0a96cf4 hid_allocate_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0xd36c4a04 hidinput_calc_abs_res +EXPORT_SYMBOL_GPL drivers/hid/hid 0xd3ce11f4 hidinput_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0xd7fe1beb hid_destroy_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0xdb23cd79 hid_set_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0xdcd22c81 hid_dump_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0xefedb16c hidinput_count_leds +EXPORT_SYMBOL_GPL drivers/hid/hid 0xf6f4d9df hid_check_keys_pressed +EXPORT_SYMBOL_GPL drivers/hid/hid 0xf75652a2 hid_alloc_report_buf +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat 0x2f622ea1 roccat_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat 0x8c4181ec roccat_report_event +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat 0x9dc269ee roccat_connect +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x0c5b8e85 roccat_common2_send_with_status +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x4dd35f31 roccat_common2_sysfs_write +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x5b8d2658 roccat_common2_device_init_struct +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0xa3cdc32d roccat_common2_receive +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0xcb2565a6 roccat_common2_send +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0xfa1d87f7 roccat_common2_sysfs_read +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x05f0eecf hid_sensor_get_usage_index +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x0d8b1c8c sensor_hub_device_close +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x21917229 sensor_hub_input_attr_get_raw_value +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0xaf1f588e sensor_hub_device_open +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0xb40fbb5d sensor_hub_remove_callback +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0xd60fcc0f sensor_hub_register_callback +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0xdaad6e1a sensor_hub_set_feature +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0xe05dbbbd sensor_hub_get_feature +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0xe4d1a37f sensor_hub_input_get_attribute_info +EXPORT_SYMBOL_GPL drivers/hid/usbhid/usbhid 0x01fd453e usbhid_lookup_quirk +EXPORT_SYMBOL_GPL drivers/hid/usbhid/usbhid 0xd45083f8 hiddev_hid_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x135e3251 hsi_remove_client +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x2da8e400 hsi_get_channel_id_by_name +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x703241de hsi_put_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x719e14a1 hsi_async +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x7ef9da96 hsi_register_port_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x7f557d22 hsi_alloc_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x90a17545 hsi_alloc_msg +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x958b9fd0 hsi_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x9732c064 hsi_unregister_port_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xb3dc654a hsi_new_client +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xb4d80d4c hsi_register_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xb9f03c53 hsi_unregister_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xc3940527 hsi_release_port +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xc3f7574f hsi_port_unregister_clients +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xe918b8e3 hsi_claim_port +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xf61388db hsi_register_client_driver +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xfcd85353 hsi_free_msg +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x006aa176 vmbus_open +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x00ba175e vmbus_teardown_gpadl +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x02277a24 vmbus_sendpacket_multipagebuffer +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x14b4813c vmbus_get_outgoing_channel +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x1d5ea3e8 vmbus_sendpacket_pagebuffer +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x20c65138 vmbus_set_sc_create_callback +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x22583ca7 __vmbus_driver_register +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x339ae80f vmbus_driver_unregister +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x358fafa5 vmbus_prep_negotiate_resp +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x46a417ca vmbus_proto_version +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x51e12678 vmbus_sendpacket_pagebuffer_ctl +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x66dec4d5 vmbus_are_subchannels_present +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x929afeda vmbus_recvpacket_raw +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x9c74d3e6 vmbus_allocate_mmio +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0xaba78114 vmbus_close +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0xe6967427 vmbus_sendpacket_mpb_desc +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0xf8f8bce4 vmbus_establish_gpadl +EXPORT_SYMBOL_GPL drivers/hwmon/adt7x10 0x346c1e19 adt7x10_dev_pm_ops +EXPORT_SYMBOL_GPL drivers/hwmon/adt7x10 0x70fa8cf1 adt7x10_remove +EXPORT_SYMBOL_GPL drivers/hwmon/adt7x10 0xc06ed613 adt7x10_probe +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x0427ecd6 pmbus_clear_cache +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x3d1b5e40 pmbus_write_byte +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x46ed4ec4 pmbus_do_probe +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x6244b5f8 pmbus_check_word_register +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x64891f2d pmbus_write_byte_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x73942abf pmbus_clear_faults +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x9404be8f pmbus_set_page +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x94e48ed5 pmbus_get_driver_info +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x9ecef746 pmbus_check_byte_register +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xaa59f854 pmbus_do_remove +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xac413ee1 pmbus_read_byte_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xaed8c4dd pmbus_read_word_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xb83d0e05 pmbus_regulator_ops +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xeb6ba881 pmbus_write_word_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xfac9a8ce pmbus_update_byte_data +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x2fd9c63a i2c_dw_disable_int +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x5a8c9494 i2c_dw_xfer +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x5bb1170b i2c_dw_isr +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x5ca44a25 i2c_dw_is_enabled +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x6c12d5d2 i2c_dw_enable +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x96c51af4 i2c_dw_func +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0xbe30aacf i2c_dw_disable +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0xc327c151 i2c_dw_init +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0xd1790b34 i2c_dw_clear_int +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0xf3d49429 i2c_dw_read_comp_param +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-nforce2 0x73f87712 nforce2_smbus +EXPORT_SYMBOL_GPL drivers/i2c/i2c-mux 0x3abe78fa i2c_del_mux_adapter +EXPORT_SYMBOL_GPL drivers/i2c/i2c-mux 0xefd8a105 i2c_add_mux_adapter +EXPORT_SYMBOL_GPL drivers/i2c/i2c-smbus 0x113b8713 i2c_setup_smbus_alert +EXPORT_SYMBOL_GPL drivers/i2c/i2c-smbus 0x17535f42 i2c_handle_smbus_alert +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x09dc8e6e ad_sd_set_comm +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x2f56e7dc ad_sd_validate_trigger +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x60eca74b ad_sd_cleanup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x841bdf81 ad_sigma_delta_single_conversion +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xb096aed7 ad_sd_calibrate_all +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xcbc17e5e ad_sd_write_reg +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xe967318a ad_sd_setup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xefa2ea17 ad_sd_read_reg +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xfd6c004b ad_sd_init +EXPORT_SYMBOL_GPL drivers/iio/adc/twl4030-madc 0x4362dc66 twl4030_get_madc_conversion +EXPORT_SYMBOL_GPL drivers/iio/adc/twl4030-madc 0xb1be4a75 twl4030_madc_conversion +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x09007e64 adis_init +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x1019817e adis_update_scan_mode +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x12c68bf2 adis_reset +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x1d316dca adis_cleanup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x99ac3f13 adis_probe_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x9e6db21f adis_check_status +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x9f3aa571 adis_read_reg +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xb0159eb8 adis_remove_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xb4c72d21 adis_write_reg +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xcd699df7 adis_initial_startup +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xe1aafa78 adis_single_conversion +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xe8b0e0f1 adis_setup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x01bf8eb0 iio_buffer_get +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x1c6da515 devm_iio_device_alloc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x267c0508 iio_channel_release_all_cb +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x26eac2f2 iio_read_channel_average_raw +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x26f6b499 iio_str_to_fixpoint +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x293194b4 iio_read_channel_raw +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x2a1fab3c iio_channel_stop_all_cb +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x2b9c9f6e iio_enum_available_read +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x4c688dce iio_enum_write +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x57b0ba90 iio_update_demux +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x60aa80d9 iio_enum_read +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x63bf61a4 devm_iio_trigger_free +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x645d2dd4 iio_push_to_buffers +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x73877bf0 iio_map_array_register +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x7985fd54 iio_buffer_put +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x79c13d01 devm_iio_device_unregister +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x7a711aef iio_channel_start_all_cb +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x84fde2c6 devm_iio_trigger_alloc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x8f63e315 iio_validate_scan_mask_onehot +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x94ab48e4 iio_map_array_unregister +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x9f86dfb6 iio_scan_mask_query +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xa24196ea iio_update_buffers +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xb010f45f iio_alloc_pollfunc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xbef47e5b iio_read_channel_scale +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xc49a3d46 devm_iio_device_register +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xc77f7d56 iio_get_channel_type +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xc908f2cb iio_channel_get_all_cb +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xca5d727c iio_convert_raw_to_processed +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xcdc88484 iio_channel_cb_get_channels +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xcf27dcab iio_read_channel_processed +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xe47bacba iio_write_channel_raw +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xe483ec39 iio_dealloc_pollfunc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xe8c59f9e iio_channel_get +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xf4bfe4ee iio_channel_release_all +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xf75219c8 iio_channel_get_all +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xfc6809f6 devm_iio_device_free +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xff7f5ae3 iio_channel_release +EXPORT_SYMBOL_GPL drivers/infiniband/core/ib_core 0xdbd019c4 ib_wq +EXPORT_SYMBOL_GPL drivers/infiniband/hw/ipath/ib_ipath 0x1514b2b2 ipath_debug +EXPORT_SYMBOL_GPL drivers/input/ff-memless 0x0a4b83a2 input_ff_create_memless +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 0x90eda1bc adxl34x_probe +EXPORT_SYMBOL_GPL drivers/input/misc/adxl34x 0xe4586827 adxl34x_resume +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp4_core 0x24fd9d51 cyttsp4_probe +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp4_core 0x86f12dd6 cyttsp4_pm_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp4_core 0xaddafab9 cyttsp4_remove +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_core 0x0c3382e0 cyttsp_probe +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_core 0x55c74b1d cyttsp_pm_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_core 0xf73c68e7 cyttsp_remove +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_i2c_common 0x5192909a cyttsp_i2c_read_block_data +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_i2c_common 0xc7a84e62 cyttsp_i2c_write_block_data +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x158ec176 wm9713_codec +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x172cbc2a wm97xx_reg_write +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x423719a3 wm97xx_reg_read +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x6655e311 wm97xx_read_aux_adc +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x6c9ab77d wm97xx_set_gpio +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x8edb5a95 wm97xx_unregister_mach_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x96e8cf40 wm97xx_set_suspend_mode +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xc49adcb2 wm9705_codec +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xce473fc5 wm97xx_register_mach_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xcfed079c wm97xx_config_gpio +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xd2162d94 wm97xx_get_gpio +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xd924c1e8 wm9712_codec +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x055ab4e0 ipack_get_device +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x2b9b21d1 ipack_driver_unregister +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x315bf8e2 ipack_device_add +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x672b30c4 ipack_bus_unregister +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x980f70e2 ipack_device_del +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0xd43080ea ipack_put_device +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0xdaabf256 ipack_driver_register +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0xdb5579b0 ipack_bus_register +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0xe33dbc87 ipack_device_init +EXPORT_SYMBOL_GPL drivers/isdn/capi/kernelcapi 0x23359aff unregister_capictr_notifier +EXPORT_SYMBOL_GPL drivers/isdn/capi/kernelcapi 0xce1414b2 register_capictr_notifier +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x1009722c gigaset_stop +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x1dc4d0b3 gigaset_initcs +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x26f073bf gigaset_freecs +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x2efaaf2d gigaset_freedriver +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x2f251a57 gigaset_add_event +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x3a56d4c2 gigaset_initdriver +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x3f3d7688 gigaset_m10x_send_skb +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x3f589ceb gigaset_skb_sent +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x454aa44f gigaset_debuglevel +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x47317105 gigaset_m10x_input +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x571e4116 gigaset_skb_rcvd +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x6cdcc554 gigaset_shutdown +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x822282dd gigaset_if_receive +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x89186992 gigaset_blockdriver +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x961ad025 gigaset_fill_inbuf +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x96e2b6c8 gigaset_handle_modem_response +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xa3151853 gigaset_dbg_buffer +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xba8ce73c gigaset_start +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xdb2d3e47 gigaset_isdn_rcv_err +EXPORT_SYMBOL_GPL drivers/leds/dell-led 0x86fd1ffb dell_app_wmi_led_set +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0x1ff92764 led_classdev_flash_register +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0x864f6a1c led_update_flash_brightness +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0x8d02604c led_classdev_flash_unregister +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0xc98cf8e1 led_set_flash_timeout +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0xd4380b93 led_set_flash_brightness +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0xe35b0d77 led_get_flash_fault +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/mcb/mcb 0x06a4a186 mcb_request_mem +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x0f70d7dc mcb_bus_get +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x3d749764 mcb_bus_add_devices +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x42917e4a mcb_free_dev +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x45d0cce9 mcb_get_irq +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x5894453a mcb_bus_put +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x5ac33b1b mcb_alloc_bus +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x8bf52ac0 mcb_release_mem +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x9ada7129 mcb_unregister_driver +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0xc3a55a38 mcb_alloc_dev +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0xc7fa8f3a mcb_release_bus +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0xde2e1a28 __mcb_register_driver +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0xdf231996 mcb_device_register +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0xf0949c4b chameleon_parse_cells +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x0ec17d44 __tracepoint_bcache_bypass_congested +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x26062738 __tracepoint_bcache_alloc_fail +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x2fc380ce __tracepoint_bcache_invalidate +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x40c27b88 __tracepoint_bcache_cache_insert +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x4c49fc16 __tracepoint_bcache_btree_node_split +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x51a15737 __tracepoint_bcache_btree_set_root +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x616b6217 __tracepoint_bcache_read +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x6907ac0d __tracepoint_bcache_request_end +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x7be42a1c __tracepoint_bcache_journal_replay_key +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x7e532a71 __tracepoint_bcache_btree_cache_cannibalize +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x914361f4 __tracepoint_bcache_journal_entry_full +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x9272fb0f __tracepoint_bcache_read_retry +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x938cc2b2 __tracepoint_bcache_btree_insert_key +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xa649dd21 __tracepoint_bcache_btree_node_alloc +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xb157059f __tracepoint_bcache_gc_copy_collision +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xb317649e __tracepoint_bcache_btree_node_alloc_fail +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xb493772a __tracepoint_bcache_gc_start +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xb834c124 __tracepoint_bcache_btree_write +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xbb1fc0a4 __tracepoint_bcache_journal_full +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xbc4fcb1e __tracepoint_bcache_write +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xc1474d91 __tracepoint_bcache_btree_read +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xc379085a __tracepoint_bcache_bypass_sequential +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xc5aed8ad __tracepoint_bcache_writeback_collision +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xc7eda602 __tracepoint_bcache_btree_node_compact +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xce055cbe __tracepoint_bcache_btree_gc_coalesce +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xe20fe821 __tracepoint_bcache_gc_end +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xe24daf87 __tracepoint_bcache_gc_copy +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xe2ed0930 __tracepoint_bcache_btree_node_free +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xea2303e0 __tracepoint_bcache_journal_write +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xef1156ee __tracepoint_bcache_writeback +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xfc131205 __tracepoint_bcache_request_start +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x17dd39d6 dm_deferred_set_create +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x26a97727 dm_cell_promote_or_release +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x2a09023e dm_bio_detain +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x2eb01e04 dm_deferred_set_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x642ed4ae dm_get_cell +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x6791a44e dm_deferred_entry_dec +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x733525da dm_bio_prison_free_cell +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x753e20b2 dm_bio_prison_create +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x832eb2c9 dm_bio_prison_alloc_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 0xd96fdd0a dm_cell_error +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xe51bdf8a dm_cell_release_no_holder +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xebe55c1b dm_cell_visit_release +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xfde62a1b dm_cell_release +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x0ad0dc4f dm_bufio_mark_buffer_dirty +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x6aba7f5e dm_bufio_get_block_number +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x6d3f57bd dm_bufio_get_client +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 0x9310ba06 dm_bufio_release_move +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x9c256008 dm_bufio_get_device_size +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xa1d2413a dm_bufio_read +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xa448e19f dm_bufio_prefetch +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xa82b2066 dm_bufio_write_dirty_buffers +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xafbda3f3 dm_bufio_new +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xc9a3422d dm_bufio_write_dirty_buffers_async +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xcbb1bae2 dm_bufio_get +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xd4bddf5c dm_bufio_issue_flush +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 0xf702ff0c dm_bufio_client_create +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x06e9cd4f dm_cache_policy_get_name +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x0782a848 dm_cache_policy_get_hint_size +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x0c0bf28e dm_cache_policy_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x1c18ac55 dm_cache_policy_unregister +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x3967e7c6 dm_cache_policy_create +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x8acb5995 dm_cache_policy_register +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xc0476e93 dm_cache_policy_get_version +EXPORT_SYMBOL_GPL drivers/md/dm-multipath 0xb3e59e76 dm_register_path_selector +EXPORT_SYMBOL_GPL drivers/md/dm-multipath 0xf7b970e0 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 0x0ca48005 dm_rh_delay +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x1574a389 dm_rh_mark_nosync +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x3044a229 dm_rh_dirty_log +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 0x4430764e dm_rh_region_to_sector +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x45ab972a dm_rh_dec +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x5a6941ed dm_region_hash_create +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x63dcac29 dm_rh_bio_to_region +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 0xa53387c7 dm_rh_flush +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xa68e1f06 dm_rh_get_state +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 0xf52bab0a dm_rh_inc_pending +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xfad9d53a dm_rh_get_region_size +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xfc62ef4e dm_rh_get_region_key +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 0x01445176 dm_btree_find_highest_key +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x0604db1b dm_btree_remove_leaves +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x17c36f29 dm_bm_checksum +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x1e3f728d dm_block_data +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x2025e954 dm_array_info_init +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x24fa6664 dm_bitset_set_bit +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x2c112836 dm_block_location +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 0x32b5f546 dm_array_empty +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 0x3ad0f55b dm_bm_flush +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x40f7bd91 dm_tm_inc +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x42dbdfc3 dm_tm_read_lock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x4360913e dm_btree_find_lowest_key +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x49b35849 dm_sm_disk_create +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x55b4bd4d dm_tm_create_with_sm +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x5aed1dd7 dm_bitset_flush +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x5e6aea80 dm_btree_walk +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x62c1b9ee dm_array_walk +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 0x72289260 dm_block_manager_destroy +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x7657e859 dm_bitset_clear_bit +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 0x80c89b3d dm_tm_unlock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x827a42f4 dm_tm_open_with_sm +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x832bf228 dm_array_del +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x858c8d94 dm_array_set_value +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x89f1e1cc dm_btree_insert_notify +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 0x966a8838 dm_btree_lookup +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 0x9f624559 dm_sm_disk_open +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xa87c5b4d dm_array_resize +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xab96bd2d dm_bitset_test_bit +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xaee02382 dm_btree_empty +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xafeda29f dm_bm_write_lock_zero +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xb7bad799 dm_bm_unlock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xb9a6ecf8 dm_tm_dec +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xba47c03a dm_bitset_del +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xbd50ebbb dm_btree_del +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xca40abd5 dm_btree_insert +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xd041d62b dm_array_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 0xd29923fb dm_tm_shadow_block +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xed1e1f96 dm_btree_remove +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xed58cfa1 dm_bitset_empty +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xf12ec3cd dm_disk_bitset_init +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xf375d009 dm_bm_write_lock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xf5455120 dm_bm_read_lock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xf694c192 dm_block_manager_create +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xffff2ac3 dm_bitset_resize +EXPORT_SYMBOL_GPL drivers/media/common/b2c2/b2c2-flexcop 0x66c0289a b2c2_flexcop_debug +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x17e41d0b saa7146_pgtable_build_single +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x5f52be64 saa7146_setgpio +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x84a088f1 saa7146_wait_for_debi_done +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x8a85af2a saa7146_unregister_extension +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xac313121 saa7146_vmalloc_build_pgtable +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xaee995f1 saa7146_pgtable_free +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xb5d373d1 saa7146_register_extension +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xc4944a33 saa7146_vfree_destroy_pgtable +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xe3cd9b5c saa7146_debug +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xec0bb1aa saa7146_i2c_adapter_prepare +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xfdc031f4 saa7146_pgtable_alloc +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x439deee6 saa7146_set_hps_source_and_sync +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x49a2a2c5 saa7146_vv_release +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x55774d06 saa7146_register_device +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x7e1a2fd5 saa7146_stop_preview +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0xc1df49ab saa7146_vv_init +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0xd6d428dd saa7146_start_preview +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0xf44a9d4b saa7146_unregister_device +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x09c7da92 sms_board_led_feedback +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x0b1b1d1b smscore_register_device +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x0bdf3f3f smscore_get_board_id +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x0c7674e5 smscore_unregister_hotplug +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x11dc9445 smscore_set_board_id +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x17ab5b89 sms_board_lna_control +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x21e36bf2 smscore_registry_getmode +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x26eb9a5f smscore_putbuffer +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x37d91069 smsendian_handle_tx_message +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x406afeed smscore_register_client +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x41944176 smscore_get_device_mode +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x45284ae9 smsendian_handle_rx_message +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x498f2f38 smscore_register_hotplug +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x527bab92 smscore_getbuffer +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x6b5f94cb sms_board_event +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x74ee9098 sms_board_load_modules +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x75534598 sms_board_setup +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x77401caf smscore_unregister_device +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 0x92298cca smscore_onresponse +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x99a81ab3 smsclient_sendrequest +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x9c2225ed smscore_translate_msg +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x9f6867ac sms_board_power +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xbbdb5c42 smscore_unregister_client +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xd1c32467 smscore_start_device +EXPORT_SYMBOL_GPL drivers/media/dvb-frontends/as102_fe 0xb24f8f39 as102_attach +EXPORT_SYMBOL_GPL drivers/media/dvb-frontends/cx24117 0xccb772fd cx24117_attach +EXPORT_SYMBOL_GPL drivers/media/dvb-frontends/tda18271c2dd 0x875c12e6 tda18271c2dd_attach +EXPORT_SYMBOL_GPL drivers/media/media 0x0fa69fda media_entity_setup_link +EXPORT_SYMBOL_GPL drivers/media/media 0x2f7d94e8 media_device_register_entity +EXPORT_SYMBOL_GPL drivers/media/media 0x30cfb045 media_entity_cleanup +EXPORT_SYMBOL_GPL drivers/media/media 0x318491b6 media_entity_create_link +EXPORT_SYMBOL_GPL drivers/media/media 0x32aa7d33 __media_device_register +EXPORT_SYMBOL_GPL drivers/media/media 0x3c6bef93 media_entity_pipeline_start +EXPORT_SYMBOL_GPL drivers/media/media 0x553cba8f media_entity_put +EXPORT_SYMBOL_GPL drivers/media/media 0x568ce0ae media_entity_remote_pad +EXPORT_SYMBOL_GPL drivers/media/media 0x5fdc7a22 media_entity_get +EXPORT_SYMBOL_GPL drivers/media/media 0x6ebf9e94 media_device_unregister +EXPORT_SYMBOL_GPL drivers/media/media 0xc5f29083 media_entity_init +EXPORT_SYMBOL_GPL drivers/media/media 0xca67df0e media_entity_graph_walk_start +EXPORT_SYMBOL_GPL drivers/media/media 0xcb81792c __media_entity_remove_links +EXPORT_SYMBOL_GPL drivers/media/media 0xd980ae3a media_entity_find_link +EXPORT_SYMBOL_GPL drivers/media/media 0xdad67a90 media_entity_pipeline_stop +EXPORT_SYMBOL_GPL drivers/media/media 0xdc7f012e media_device_unregister_entity +EXPORT_SYMBOL_GPL drivers/media/media 0xe44fee39 media_entity_remove_links +EXPORT_SYMBOL_GPL drivers/media/media 0xef9e37d3 media_entity_graph_walk_next +EXPORT_SYMBOL_GPL drivers/media/pci/cx88/cx88xx 0x7a373754 cx88_setup_xc3028 +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x09f74f1e mantis_dma_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x1d60ef8c mantis_pci_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x1fc0fd4e mantis_input_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x326be854 mantis_gpio_set_bits +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x40a3173f mantis_get_mac +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x46161d43 mantis_input_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x4631cad3 mantis_frontend_soft_reset +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x6eeb1616 mantis_dma_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x722c802e mantis_frontend_power +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x982c2868 mantis_dvb_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xa31d75dd mantis_i2c_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xc247baf4 mantis_pci_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xc4012cd5 mantis_i2c_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xd1755b9d mantis_uart_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xd21cbe2d mantis_stream_control +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xd3044d06 mantis_ca_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xe6d448a5 mantis_uart_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xfaff9498 mantis_ca_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xff307160 mantis_dvb_init +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x08427a87 saa7134_querystd +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x1b99a149 saa7134_enum_input +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x24b92b99 saa7134_ts_start_streaming +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x29721247 saa7134_ts_buffer_prepare +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x4260a218 saa7134_s_input +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x48351a39 saa7134_vb2_buffer_queue +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x73d063c5 saa7134_ts_queue_setup +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x78887d18 saa7134_s_frequency +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x7ea03383 saa7134_ts_qops +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x943c8e1d saa7134_s_tuner +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x9a5dbbab saa7134_ts_stop_streaming +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xaaa4af73 saa7134_g_tuner +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xb8431619 saa7134_stop_streaming +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xd14e9232 saa7134_s_std +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xd37d79a1 saa7134_querycap +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xdf1bb2fa saa7134_g_frequency +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xf08153af saa7134_g_std +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xf3d7d5d5 saa7134_g_input +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xfe168240 saa7134_ts_buffer_init +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x3068b80f ttpci_budget_set_video_port +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x3abe43a4 ttpci_budget_deinit +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x4114295f ttpci_budget_init +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x7948c222 budget_debug +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0xa920c40e ttpci_budget_init_hooks +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0xdcca4c2d ttpci_budget_irq10_handler +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0xe6344ce0 ttpci_budget_debiread +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0xf76f0a76 ttpci_budget_debiwrite +EXPORT_SYMBOL_GPL drivers/media/radio/shark2 0x3afe57ad radio_tea5777_exit +EXPORT_SYMBOL_GPL drivers/media/radio/shark2 0xbca2cf89 radio_tea5777_init +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x161d125d ir_raw_event_store_with_filter +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x352707bd rc_keydown +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x3536303b rc_open +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x3eae3481 rc_close +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x3f21e497 rc_register_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x45ee5180 ir_raw_event_store_edge +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x47e6ec8e rc_unregister_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x553efb91 rc_core_debug +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x555fe69a rc_keyup +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x5c73151d rc_allocate_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x6d63f7fd ir_raw_event_set_idle +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x832a803f rc_map_unregister +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x9b793152 rc_keydown_notimeout +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x9cc556a5 rc_repeat +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xa26a2b5f ir_raw_event_store +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xa93ae45b rc_free_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xaf23c6cd rc_map_get +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xb7d8b07e ir_raw_event_handle +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xbfe5bf6c rc_g_keycode_from_table +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xf27c1ca7 rc_map_register +EXPORT_SYMBOL_GPL drivers/media/tuners/mt2063 0xb2c74d71 mt2063_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/mt20xx 0x237ea045 microtune_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/mxl5007t 0x2c4272bf mxl5007t_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/r820t 0x79a303de r820t_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda18271 0x113f54e5 tda18271_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda827x 0x8d6b90e0 tda827x_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda8290 0x8c4d4ed8 tda829x_probe +EXPORT_SYMBOL_GPL drivers/media/tuners/tda8290 0xca4a601e tda829x_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda9887 0x08b852f5 tda9887_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5761 0x5d82c65f tea5761_autodetection +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5761 0x9a208235 tea5761_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5767 0x73ae286b tea5767_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5767 0xf9a8653a tea5767_autodetection +EXPORT_SYMBOL_GPL drivers/media/tuners/tuner-simple 0x04ff369c simple_tuner_attach +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x00f538d8 cx231xx_set_alt_setting +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x017ea7c7 cx231xx_tuner_callback +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x04131e29 cx231xx_init_bulk +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x093ba129 cx231xx_get_i2c_adap +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x230dc3b0 cx231xx_capture_start +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x538e5a18 cx231xx_uninit_bulk +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x6bdecfe9 cx231xx_uninit_vbi_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x7095e491 cx231xx_dev_uninit +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x723dc791 cx231xx_dev_init +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x80a48f83 cx231xx_uninit_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x8740aac0 cx231xx_init_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x8b3a8a71 cx231xx_disable656 +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x915eca76 cx231xx_unmute_audio +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xcac4aaa8 cx231xx_enable656 +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xe47c8e50 cx231xx_send_usb_command +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xe9b37cd0 is_fw_load +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xed8cbfa7 cx231xx_enable_i2c_port_3 +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xedadfdfb cx231xx_demod_reset +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xf4c68728 cx231xx_send_gpio_cmd +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xf8c401fd cx231xx_init_vbi_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xff7a7248 cx231xx_set_mode +EXPORT_SYMBOL_GPL drivers/media/usb/dvb-usb-v2/mxl111sf-demod 0x6abf9e36 mxl111sf_demod_attach +EXPORT_SYMBOL_GPL drivers/media/usb/dvb-usb-v2/mxl111sf-tuner 0xf3904bdd mxl111sf_tuner_attach +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x23c15f9a em28xx_read_ac97 +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x33f0ada7 em28xx_audio_analog_set +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x3abc98a0 em28xx_find_led +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x45022639 em28xx_toggle_reg_bits +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x45afcc15 em28xx_audio_setup +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x462af624 em28xx_write_regs +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x695ec2a9 em28xx_init_camera +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x6d578f78 em28xx_boards +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x7564cecb em28xx_uninit_usb_xfer +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x7ef1044d em28xx_alloc_urbs +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x7fc8652c em28xx_tuner_callback +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x84dc95b3 em28xx_read_reg +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x865e3f76 em28xx_gpio_set +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xbb095da9 em28xx_write_ac97 +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xc3829146 em28xx_setup_xc3028 +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xcd75ef7f em28xx_free_device +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xe054100c em28xx_write_reg +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xe64999ee em28xx_set_mode +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xef01f27d em28xx_write_reg_bits +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xf0c83577 em28xx_stop_urbs +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xfbf092c5 em28xx_init_usb_xfer +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x2309a6d6 tm6000_xc5000_callback +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x472c5ffb tm6000_set_reg_mask +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x5405259f tm6000_get_reg +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x7d4e7724 tm6000_set_reg +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x89b611dd tm6000_debug +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0xaa810f05 tm6000_set_audio_bitrate +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0xdff8e89d tm6000_tuner_callback +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x01c483a9 v4l2_get_timestamp +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x3cd7090c v4l2_i2c_new_subdev_board +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x71c7a750 v4l2_i2c_subdev_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x759664d3 v4l2_spi_new_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x7fd86711 v4l2_spi_subdev_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x813f3de4 v4l2_find_nearest_format +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0xa89d9792 v4l2_i2c_subdev_addr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0xab46767d v4l2_i2c_new_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0xf2a353ac v4l2_i2c_tuner_addrs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0xf5ef842e v4l_bound_align_image +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x08982d59 v4l2_match_dv_timings +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x4103badb v4l2_print_dv_timings +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x5491c182 v4l2_enum_dv_timings_cap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x67b8205b v4l2_detect_cvt +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x6f344bb9 v4l2_calc_aspect_ratio +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0xb0891da2 v4l2_dv_timings_presets +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0xdfa5a008 v4l2_valid_dv_timings +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0xf0e1988c v4l2_find_dv_timings_cap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0xf98d0f9d v4l2_detect_gtf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-flash-led-class 0x17e9b760 v4l2_flash_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-flash-led-class 0x25a23e86 v4l2_flash_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x011d6eee v4l2_m2m_try_schedule +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x072323a7 v4l2_m2m_ctx_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x08e1d1aa v4l2_m2m_ioctl_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x17eb0eee v4l2_m2m_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x1aab7a2b v4l2_m2m_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x1dd7f418 v4l2_m2m_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x2cbfaf73 v4l2_m2m_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x30ddf931 v4l2_m2m_next_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x376ad4a5 v4l2_m2m_ioctl_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x3cc2a939 v4l2_m2m_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x3d278122 v4l2_m2m_ioctl_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x422ff9b8 v4l2_m2m_buf_queue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x62a909cc v4l2_m2m_fop_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x77813dd0 v4l2_m2m_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x78c7d2e4 v4l2_m2m_ioctl_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x79224f5a v4l2_m2m_ioctl_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x7ad5261b v4l2_m2m_fop_mmap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x976954b7 v4l2_m2m_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x9e68d0cd v4l2_m2m_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xa25c3a06 v4l2_m2m_ioctl_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xafe5daf5 v4l2_m2m_ioctl_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xb57880f4 v4l2_m2m_ioctl_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xc03f71d4 v4l2_m2m_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xc6fca5ad v4l2_m2m_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xd8d4f528 v4l2_m2m_ioctl_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xdbebbf2e v4l2_m2m_buf_remove +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xec1f36e7 v4l2_m2m_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xee63e97f v4l2_m2m_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xf9b7b7f1 v4l2_m2m_ctx_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x0ccb8cea videobuf_poll_stream +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x3aa47ffc videobuf_mmap_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x48453b4c videobuf_queue_is_busy +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x4a4dfa06 videobuf_next_field +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x4fd1fedc videobuf_alloc_vb +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x5c2fe1cc videobuf_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x6d9c5325 __videobuf_mmap_setup +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x6ea6b9b9 videobuf_queue_core_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x7fefde01 videobuf_mmap_mapper +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x8ac6a8e3 videobuf_read_stop +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x8e3d3e8c videobuf_mmap_setup +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x92954bc6 videobuf_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x954f431e videobuf_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x964ad38f videobuf_read_stream +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x9ae707bd videobuf_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x9bff7c89 videobuf_iolock +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xad8b3828 videobuf_waiton +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xbed71292 videobuf_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xd442ee49 videobuf_read_start +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xd5ed0171 videobuf_queue_cancel +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xde06b325 videobuf_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xf0268a89 videobuf_read_one +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xf0893f29 videobuf_stop +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xf973d39c videobuf_queue_to_vaddr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x3733775b videobuf_queue_sg_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x4871abfb videobuf_to_dma +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x4c0b8429 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 0x639f4c12 videobuf_dma_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-vmalloc 0x3a777c4b videobuf_vmalloc_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-vmalloc 0x3cc96a87 videobuf_queue_vmalloc_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-vmalloc 0xb2fe15d5 videobuf_to_vmalloc +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x11f5c8cc vb2_fop_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x156a3f1d vb2_ioctl_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x1b9a0b43 vb2_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x340149df vb2_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x381b3fc1 vb2_queue_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x4871f6da vb2_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x4be304a6 vb2_write +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x57ee5eac vb2_fop_mmap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x57eea989 vb2_plane_vaddr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x5e32f3a7 vb2_ioctl_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x63df370b vb2_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x641eb271 vb2_read +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x6a71b3f2 vb2_buffer_done +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x6b10615d vb2_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x6d3c252b vb2_ioctl_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x7962ede7 vb2_ioctl_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x7b4eb23f vb2_ops_wait_prepare +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x7c396691 vb2_fop_read +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x804c57fa vb2_ioctl_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x909148c7 vb2_ioctl_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x995ab476 vb2_ops_wait_finish +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x9b7a056a vb2_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x9fa8eb00 vb2_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xa0a13bb0 vb2_ioctl_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xa58af833 _vb2_fop_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xa7840fcf vb2_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xae137085 vb2_ioctl_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xb073e181 vb2_queue_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xb9eee0ad vb2_queue_error +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xcb16558b vb2_plane_cookie +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xcc2e9e8e vb2_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xd03c4f76 vb2_thread_start +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xe0f25393 vb2_thread_stop +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xe1d8d8c9 vb2_fop_write +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xea9327bc vb2_ioctl_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xebad3d3d vb2_discard_done +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xf0fc9ecc vb2_wait_for_all_buffers +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xf563ff0b vb2_mmap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xffe17a1f vb2_fop_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-contig 0x01a39650 vb2_dma_contig_memops +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-contig 0xbcb19afa vb2_dma_contig_init_ctx +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-contig 0xe57f0426 vb2_dma_contig_cleanup_ctx +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-sg 0x657600ef vb2_dma_sg_init_ctx +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-sg 0x725c003a vb2_dma_sg_memops +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-sg 0xd30ec30f vb2_dma_sg_cleanup_ctx +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-memops 0x489d15cd vb2_get_contig_userptr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-memops 0x60eee8b0 vb2_put_vma +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-memops 0x8e53c98c vb2_common_vm_ops +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-memops 0x90fa2ded vb2_get_vma +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-vmalloc 0xbfa3ff8f vb2_vmalloc_memops +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x0292b1e0 v4l2_event_dequeue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x175aa90f v4l2_device_set_name +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x1a432a4c v4l2_event_subscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x1f7f48a9 v4l2_device_put +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x2348640b v4l2_device_register_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x27aa0e6f v4l2_fh_exit +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x285d3eff v4l2_event_subdev_unsubscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x2d108e41 v4l2_device_disconnect +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x3c44fa35 v4l2_fh_is_singular +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x5d1a938e v4l2_event_pending +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x74f9c6ec v4l2_src_change_event_subscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x765c2011 v4l2_src_change_event_subdev_subscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x8b4b9b65 v4l2_device_unregister +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x95767410 v4l2_compat_ioctl32 +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x9f27ce7a v4l2_event_queue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xa6ac78cb v4l2_event_queue_fh +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xb044d1f5 v4l2_device_register +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xb9a4d1d5 v4l2_fh_open +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xcc9d9451 v4l2_fh_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xd14d0ff4 v4l2_event_unsubscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xdb696063 v4l2_subdev_link_validate_default +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xdcf52d7e v4l2_fh_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xe46b90ce v4l2_fh_del +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xe7b75a25 v4l2_fh_add +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xe8184b33 v4l2_device_unregister_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xee0ed618 v4l2_device_register_subdev_nodes +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xf7eacd76 v4l2_event_unsubscribe_all +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xfac77efc v4l2_subdev_link_validate +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0x21b0ab65 pm80x_pm_ops +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0x345c9ba9 pm80x_init +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0x841fd61d pm80x_regmap_config +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0xd99fd720 pm80x_deinit +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0x328683d7 da9150_set_bits +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0x35f7b4f4 da9150_bulk_write +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0xc51c7294 da9150_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0xdfe27e3a da9150_bulk_read +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0xf47932da da9150_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/intel-lpss 0x04bb80fb intel_lpss_probe +EXPORT_SYMBOL_GPL drivers/mfd/intel-lpss 0x26b16067 intel_lpss_suspend +EXPORT_SYMBOL_GPL drivers/mfd/intel-lpss 0x7822660a intel_lpss_resume +EXPORT_SYMBOL_GPL drivers/mfd/intel-lpss 0x9af50a04 intel_lpss_prepare +EXPORT_SYMBOL_GPL drivers/mfd/intel-lpss 0xa1869211 intel_lpss_remove +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x18f10ffa kempld_read16 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x2686a314 kempld_write8 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x3347ac9f kempld_get_mutex +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x578395bd kempld_write32 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x6c83bf23 kempld_write16 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x8a65805a kempld_read8 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x965f2c6d kempld_release_mutex +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x99f09c37 kempld_read32 +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0xac7b0f30 lm3533_write +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0xba364f94 lm3533_read +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0xcae7634f lm3533_update +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x4af77d6d lm3533_ctrlbank_set_pwm +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x4ca687f5 lm3533_ctrlbank_enable +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x4d937b71 lm3533_ctrlbank_set_brightness +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x6a22a5c4 lm3533_ctrlbank_set_max_current +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0xcd22275a lm3533_ctrlbank_get_pwm +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0xdf5d52fa lm3533_ctrlbank_get_brightness +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0xfa285be5 lm3533_ctrlbank_disable +EXPORT_SYMBOL_GPL drivers/mfd/lp3943 0x6ce6aa54 lp3943_write_byte +EXPORT_SYMBOL_GPL drivers/mfd/lp3943 0xa4e3b800 lp3943_read_byte +EXPORT_SYMBOL_GPL drivers/mfd/lp3943 0xad4fb9e0 lp3943_update_bits +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x1dd21c5c mc13xxx_common_init +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x8920e7c6 mc13xxx_variant_mc13783 +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x8b7233b0 mc13xxx_common_exit +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x9b2f12ae mc13xxx_variant_mc34708 +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0xb889ee9c mc13xxx_adc_do_conversion +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0xc99aace6 mc13xxx_variant_mc13892 +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x12c2a318 pcf50633_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x36748c30 pcf50633_irq_mask_get +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x41dc8acc pcf50633_reg_set_bit_mask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x437bc693 pcf50633_read_block +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x7d404481 pcf50633_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x8e098a1c pcf50633_irq_mask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xb7cca592 pcf50633_write_block +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xe018dc3d pcf50633_free_irq +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xe4a5a8c9 pcf50633_irq_unmask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xea6088af pcf50633_register_irq +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xfcfbb18c pcf50633_reg_clear_bits +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-adc 0x2bdc3c6b pcf50633_adc_async_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-adc 0x4545bfe3 pcf50633_adc_sync_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x00a54158 pcf50633_gpio_invert_get +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x1426f4e8 pcf50633_gpio_get +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x7f888869 pcf50633_gpio_invert_set +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x9ad07754 pcf50633_gpio_power_supply_set +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0xba8d31a7 pcf50633_gpio_set +EXPORT_SYMBOL_GPL drivers/mfd/retu-mfd 0x01a33234 retu_write +EXPORT_SYMBOL_GPL drivers/mfd/retu-mfd 0x4fca3918 retu_read +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x09902816 rtsx_pci_read_ppbuf +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x09c5cc5c rtsx_pci_card_power_off +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x19afe03b rtsx_pci_card_pull_ctl_enable +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x1ca2fc78 rtsx_pci_card_pull_ctl_disable +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x24f9927d rtsx_pci_start_run +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x27942153 rtsx_pci_read_phy_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x2a107562 rtsx_pci_send_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x2c443334 rtsx_pci_add_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x2fc75082 rtsx_pci_transfer_data +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x56ff8770 rtsx_pci_card_exclusive_check +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x63304578 rtsx_pci_stop_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x80d757bf rtsx_pci_read_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x86a9ee00 rtsx_pci_switch_clock +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x872fb2f8 rtsx_pci_card_power_on +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x8b8d68ef rtsx_pci_switch_output_voltage +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x9b7a09f0 rtsx_pci_complete_unfinished_transfer +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x9ee63f80 rtsx_pci_dma_map_sg +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xaa83ff75 rtsx_pci_write_phy_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xbb56bc29 rtsx_pci_card_exist +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xbbcc3b9b rtsx_pci_write_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xd181d958 rtsx_pci_write_ppbuf +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xe837ffe8 rtsx_pci_dma_transfer +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xfa9f4471 rtsx_pci_dma_unmap_sg +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xfd52bfe8 rtsx_pci_send_cmd_no_wait +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x0f2f4284 rtsx_usb_get_rsp +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x239c9038 rtsx_usb_read_ppbuf +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x2ba1f0f7 rtsx_usb_write_ppbuf +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x2ee41adf rtsx_usb_switch_clock +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x536ebbb4 rtsx_usb_ep0_read_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x75dd0309 rtsx_usb_get_card_status +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x8b3cadd1 rtsx_usb_add_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x97bd77bf rtsx_usb_read_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0xa4600353 rtsx_usb_ep0_write_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0xd6828d09 rtsx_usb_card_exclusive_check +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0xdd3299da rtsx_usb_transfer_data +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0xddc87b03 rtsx_usb_write_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0xf2f46234 rtsx_usb_send_cmd +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x00c6be7e si476x_core_cmd_func_info +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x05da6bc8 devm_regmap_init_si476x +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x0b19ff0b si476x_core_is_a_primary_tuner +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x18dc133a si476x_core_i2c_xfer +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x1c95d151 si476x_core_cmd_am_acf_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x2552d746 si476x_core_cmd_ana_audio_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x28923dcf si476x_core_stop +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x2a2345a9 si476x_core_cmd_fm_phase_div_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x322cf021 si476x_core_is_a_secondary_tuner +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x3994d2f5 si476x_core_cmd_power_up +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x3b46aa73 si476x_core_cmd_fm_seek_start +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x5622836c si476x_core_cmd_agc_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x59f2e015 si476x_core_has_diversity +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x5ded3098 si476x_core_cmd_am_seek_start +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x6268567f si476x_core_has_am +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x7667d677 si476x_core_cmd_get_property +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x780a59ff si476x_core_cmd_fm_phase_diversity +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x8f0ad72c si476x_core_cmd_ic_link_gpo_ctl_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x92df89e1 si476x_core_cmd_dig_audio_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x9d80bf47 si476x_core_cmd_fm_acf_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xa3d86959 si476x_core_cmd_fm_rsq_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xa60df10b si476x_core_cmd_power_down +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xa9397220 si476x_core_is_powered_up +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xbc21d17f si476x_core_cmd_set_property +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xbd19f2bf si476x_core_cmd_fm_rds_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xd581a7c8 si476x_core_cmd_am_rsq_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xd6cdcda2 si476x_core_cmd_intb_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xd72a26e8 si476x_core_cmd_fm_rds_blockcount +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xdcf06681 si476x_core_cmd_zif_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xdeeccf7b si476x_core_cmd_am_tune_freq +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xe5c06d27 si476x_core_start +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xf43f47a5 si476x_core_set_power_state +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xf6b0e700 si476x_core_cmd_fm_tune_freq +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xfdd188e0 si476x_core_is_in_am_receiver_mode +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x7a5db5d4 sm501_modify_reg +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x9d720eb3 sm501_unit_power +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0xb14a4742 sm501_set_clock +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0xba5ab6af sm501_find_clock +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0xf4b38b63 sm501_misc_control +EXPORT_SYMBOL_GPL drivers/mfd/ti_am335x_tscadc 0x7573fbec am335x_tsc_se_adc_done +EXPORT_SYMBOL_GPL drivers/mfd/ti_am335x_tscadc 0xb099c71f am335x_tsc_se_clr +EXPORT_SYMBOL_GPL drivers/mfd/ti_am335x_tscadc 0xc8da32c7 am335x_tsc_se_set_once +EXPORT_SYMBOL_GPL drivers/mfd/ti_am335x_tscadc 0xf65175c7 am335x_tsc_se_set_cache +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0x43ea0f22 tps65217_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0x85a4d1c6 tps65217_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0x9a9c3509 tps65217_set_bits +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0xd81cd7dd tps65217_clear_bits +EXPORT_SYMBOL_GPL drivers/mfd/tps65218 0x0336dedd tps65218_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/tps65218 0x44254efa tps65218_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/tps65218 0x83e4f666 tps65218_set_bits +EXPORT_SYMBOL_GPL drivers/mfd/tps65218 0xff5e217c tps65218_clear_bits +EXPORT_SYMBOL_GPL drivers/mfd/ucb1400_core 0x6eeb5b96 ucb1400_adc_read +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0x0d7d54fd cb710_sg_dwiter_read_next_block +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0xbe9d6f8a cb710_set_irq_handler +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0xc99abfe8 cb710_pci_update_config_reg +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0xf1290c8f cb710_sg_dwiter_write_next_block +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0x1a1b5249 oslec_flush +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0x2feda75b oslec_hpf_tx +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0x3227a28e oslec_snapshot +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0x7dc9dddd oslec_adaption_mode +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0xb2c66001 oslec_create +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0xc8b5a524 oslec_free +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0xd370f679 oslec_update +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0x27cb133b eeprom_93cx6_multiread +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0x63d2ff63 eeprom_93cx6_wren +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0x793fc8de eeprom_93cx6_multireadb +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0x822222db eeprom_93cx6_write +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0x98bb5a22 eeprom_93cx6_read +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0xdb9ca14b eeprom_93cx6_readb +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x03e29b82 enclosure_find +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x2c97b023 enclosure_unregister +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x91f9f7ac enclosure_component_register +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x99f2b0c5 enclosure_remove_device +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0xa08f9c0b enclosure_component_alloc +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0xee86874b enclosure_register +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0xeeebec22 enclosure_add_device +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0xf185bb84 enclosure_for_each_device +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x39d5a3c2 lis3_dev +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x4133c212 lis3lv02d_init_dt +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x6c83ef8a lis3lv02d_poweroff +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x7e94c483 lis3lv02d_remove_fs +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x93d99443 lis3lv02d_joystick_disable +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xe6e8dd84 lis3lv02d_init_device +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xf1f151a5 lis3lv02d_joystick_enable +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xfddae274 lis3lv02d_poweron +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x03194b67 mei_irq_write_handler +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x0b8e04f8 mei_cl_send +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x1d198183 mei_irq_read_handler +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x20b57cec mei_start +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x29606937 mei_cl_set_drvdata +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x2dd75977 mei_cl_enable_device +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x46dd752a mei_hbm_pg +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x4af037b1 mei_cl_get_drvdata +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x54babc87 mei_register +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x5bff399e mei_hbm_pg_resume +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x7fd67eec mei_stop +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x84a21955 mei_cl_disable_device +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x9112393c mei_device_init +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0xa6d5c56f mei_irq_compl_handler +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0xbadd6563 mei_restart +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0xbb58d727 mei_write_is_idle +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0xc00746f0 __mei_cl_driver_register +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0xd21ab96c mei_cl_recv +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0xd2faf434 mei_cl_driver_unregister +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0xe8dd0278 mei_fw_status2str +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0xf04613c3 mei_cancel_work +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0xf1efe48d mei_cl_register_event_cb +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0xf36c411b mei_deregister +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0xf4a15d26 mei_reset +EXPORT_SYMBOL_GPL drivers/misc/mic/bus/mic_bus 0x229ba02e mbus_unregister_driver +EXPORT_SYMBOL_GPL drivers/misc/mic/bus/mic_bus 0x98766b11 mbus_register_device +EXPORT_SYMBOL_GPL drivers/misc/mic/bus/mic_bus 0xdfbb4e30 mbus_register_driver +EXPORT_SYMBOL_GPL drivers/misc/mic/bus/mic_bus 0xea19184c mbus_unregister_device +EXPORT_SYMBOL_GPL drivers/misc/mic/bus/scif_bus 0x4d76cbe4 scif_unregister_device +EXPORT_SYMBOL_GPL drivers/misc/mic/bus/scif_bus 0x668bebe0 scif_register_driver +EXPORT_SYMBOL_GPL drivers/misc/mic/bus/scif_bus 0x7c3f09e2 scif_register_device +EXPORT_SYMBOL_GPL drivers/misc/mic/bus/scif_bus 0xecb0e507 scif_unregister_driver +EXPORT_SYMBOL_GPL drivers/misc/mic/scif/scif 0x16bd9386 scif_open +EXPORT_SYMBOL_GPL drivers/misc/mic/scif/scif 0x1f68537c scif_recv +EXPORT_SYMBOL_GPL drivers/misc/mic/scif/scif 0x31f517c5 scif_get_node_ids +EXPORT_SYMBOL_GPL drivers/misc/mic/scif/scif 0x3527a11c scif_accept +EXPORT_SYMBOL_GPL drivers/misc/mic/scif/scif 0x5c2fadc7 scif_close +EXPORT_SYMBOL_GPL drivers/misc/mic/scif/scif 0x7fa0a61a scif_bind +EXPORT_SYMBOL_GPL drivers/misc/mic/scif/scif 0x94b87892 scif_listen +EXPORT_SYMBOL_GPL drivers/misc/mic/scif/scif 0xbecee454 scif_send +EXPORT_SYMBOL_GPL drivers/misc/mic/scif/scif 0xe29c5044 scif_connect +EXPORT_SYMBOL_GPL drivers/misc/ti-st/st_drv 0x5d394195 st_unregister +EXPORT_SYMBOL_GPL drivers/misc/ti-st/st_drv 0xda6c558a st_register +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x0f6680ea vmci_qpair_produce_buf_ready +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x1152e318 vmci_qpair_get_produce_indexes +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x13aa5a5d vmci_datagram_create_handle +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x1872c7af vmci_qpair_produce_free_space +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x1a195863 vmci_context_get_priv_flags +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x297191fe vmci_qpair_dequev +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x3ef56cd5 vmci_qpair_alloc +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x4b630dac vmci_get_context_id +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x4ba5c46b vmci_qpair_peek +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x50a255c9 vmci_doorbell_create +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x612df9ae vmci_qpair_detach +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x677c36d0 vmci_is_context_owner +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x69ef87ff vmci_datagram_destroy_handle +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x6cc1a5f7 vmci_datagram_create_handle_priv +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x722d488a vmci_event_unsubscribe +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x7d540b50 vmci_qpair_consume_free_space +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x819031c5 vmci_qpair_enquev +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x81d61eef vmci_qpair_dequeue +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x9624c58c vmci_datagram_send +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x9973b9b2 vmci_qpair_consume_buf_ready +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x9d16164a vmci_send_datagram +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x9e7bc8e0 vmci_qpair_peekv +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0xccbb53d1 vmci_doorbell_notify +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0xcf5ed7ef vmci_event_subscribe +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0xdac94780 vmci_qpair_get_consume_indexes +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0xe67343c1 vmci_qpair_enqueue +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0xe7e7c107 vmci_doorbell_destroy +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x1519d42f sdhci_suspend_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x16331f68 sdhci_set_bus_width +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x18bef125 sdhci_runtime_resume_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x55326117 sdhci_free_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x63fcf458 sdhci_reset +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x7ee4fe1b sdhci_alloc_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x86015802 sdhci_send_command +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x8f40b089 sdhci_remove_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x8f630cac sdhci_runtime_suspend_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xb43dd0ed sdhci_enable_irq_wakeups +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xd365580e sdhci_set_uhs_signaling +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xdb0e6241 sdhci_add_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xddd5c4a4 sdhci_resume_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xf75aebdf sdhci_set_clock +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x001c759c sdhci_pltfm_resume +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x352ec68e sdhci_get_of_property +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x5bed49d6 sdhci_pltfm_unregister +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x61db8908 sdhci_pltfm_suspend +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x83c12d09 sdhci_pltfm_clk_get_max_clock +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0xb2e9d004 sdhci_pltfm_init +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0xd504a07e sdhci_pltfm_pmops +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0xdd210cb8 sdhci_pltfm_register +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0xdfe128fc sdhci_pltfm_free +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0x545431d6 cfi_cmdset_0001 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0x6b7d143e cfi_cmdset_0003 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0x966331a8 cfi_cmdset_0200 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0x521f751f cfi_cmdset_0701 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0xa1e6ba99 cfi_cmdset_0002 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0xdfb4f149 cfi_cmdset_0006 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0020 0xe52ee04d cfi_cmdset_0020 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0x6609eca1 cfi_qry_mode_on +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0xde435e0e cfi_qry_present +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0xfd1b18e2 cfi_qry_mode_off +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x01c60bc7 mount_mtd +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x045d02c1 get_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x0a4ffc5d mtd_get_user_prot_info +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x0f2d799d mtd_device_parse_register +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x114dba8f mtd_kmalloc_up_to +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x147d15c5 __mtd_next_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x19f0e486 mtd_block_isbad +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x1dbae52b mtd_unpoint +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x2829bfa5 __put_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x298e9796 mtd_unlock +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x3ac9022b mtd_get_fact_prot_info +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x3c35ca64 mtd_erase_callback +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x40db6071 deregister_mtd_parser +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x431fcbd8 mtd_read +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x437350a0 mtd_lock_user_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x49a1dd93 mtd_block_markbad +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x58e212d0 get_mtd_device_nm +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x5b752500 mtd_write +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x5bbe5566 unregister_mtd_user +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x63aaa89c register_mtd_parser +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x6758c909 mtd_writev +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x70d990cd mtd_del_partition +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x7754ad05 mtd_point +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x7778c8d0 mtd_write_user_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x7e3aad9a mtd_lock +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x82b9b112 mtd_read_user_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x84721cfa mtd_add_partition +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x863442f6 mtd_get_device_size +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x8a41ddf9 mtd_block_isreserved +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x8a9790bc mtd_erase +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x982bd5ba mtd_is_locked +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xb1b82efd mtd_read_fact_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xb3291420 mtd_panic_write +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xc1d4a101 mtd_table_mutex +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xc1daf0a4 mtd_is_partition +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xcbee9663 mtd_read_oob +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xcde4ec16 __get_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xd983ef13 mtd_get_unmapped_area +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xe0591b10 kill_mtd_super +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xe107b203 register_mtd_user +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xe3262ba6 mtd_device_unregister +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xf670cb64 put_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0x04cd0f20 del_mtd_blktrans_dev +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0x47345c4b mtd_blktrans_cease_background +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0x49c169e1 register_mtd_blktrans +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0x716fc44c deregister_mtd_blktrans +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0xd0bfc7b4 add_mtd_blktrans_dev +EXPORT_SYMBOL_GPL drivers/mtd/nand/nand 0xb379a1ea nand_wait_ready +EXPORT_SYMBOL_GPL drivers/mtd/nand/nand 0xd5b42bf4 nand_release +EXPORT_SYMBOL_GPL drivers/mtd/nand/sm_common 0xc8bcc483 sm_register_device +EXPORT_SYMBOL_GPL drivers/mtd/onenand/onenand 0xe4e9e777 onenand_scan +EXPORT_SYMBOL_GPL drivers/mtd/onenand/onenand 0xf8af64ce onenand_release +EXPORT_SYMBOL_GPL drivers/mtd/spi-nor/spi-nor 0xb0403555 spi_nor_scan +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x120c82b3 ubi_leb_write +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x136d229b ubi_leb_read +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x14bbe345 ubi_open_volume_path +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x225a25db ubi_get_volume_info +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x2317191b ubi_is_mapped +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x24b4b91f ubi_close_volume +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x269bd0ca ubi_leb_unmap +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x2b5631d3 ubi_open_volume +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 0x577b0199 ubi_leb_read_sg +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x5cfdd22d ubi_get_device_info +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x65a9c9ba ubi_do_get_device_info +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x85a8ee76 ubi_unregister_volume_notifier +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xa366fe8e ubi_leb_erase +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xb04283b1 ubi_leb_map +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xdf60fdc3 ubi_leb_change +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xefed4798 ubi_open_volume_nm +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xf5ee9ba8 ubi_register_volume_notifier +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x20989977 alloc_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x2b08b53f free_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x46cebec3 c_can_power_down +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x8af31e11 unregister_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0xb4d1b425 register_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0xd459e8da c_can_power_up +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x0730aeba can_get_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x0781f375 alloc_canfd_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x0b23d8cb can_led_event +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x22171c5e alloc_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x222c295a can_len2dlc +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x2a145b8a alloc_can_err_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x5498e239 can_change_mtu +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x5e32335d alloc_can_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x79d9a255 can_change_state +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x7d9f18b6 close_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x8d19e03b devm_can_led_init +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xa4dceda0 can_bus_off +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xaafaa597 safe_candev_priv +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xaf340656 unregister_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xb346573b can_dlc2len +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xb86a9efc can_put_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xbd304b9b free_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xe2f7a03e can_free_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xe83d6677 register_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xf8a9a692 open_candev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0x13ca661b alloc_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0x49e51e36 unregister_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0x9d5ef520 free_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0xa1463ee2 register_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x33ba03c0 register_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x3ce9ecf7 alloc_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x49ebd0d2 sja1000_interrupt +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0xc6c0912c free_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0xed80cbb0 unregister_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x00537840 mlx4_get_base_gid_ix +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x01d16309 mlx4_ACCESS_PTYS_REG +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x06494cfe mlx4_get_protocol_dev +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0ad8e8aa mlx4_mr_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0be6397e mlx4_unregister_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0c4010f5 mlx4_multicast_promisc_add +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x116d11e4 mlx4_set_vf_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1488be33 mlx4_unregister_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x198e4e64 mlx4_read_clock +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x214d768b mlx4_set_vf_link_state +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x21623141 mlx4_srq_arm +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x22cc149b mlx4_pd_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x22d6bd58 mlx4_multicast_promisc_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x25c738ca __mlx4_cmd +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x27ef9cf8 mlx4_get_default_counter_index +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x281c5c35 mlx4_wol_write +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2864bbb3 mlx4_flow_steer_promisc_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2ffb2e1f mlx4_set_vf_spoofchk +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x301a9950 mlx4_vf_get_enable_smi_admin +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3099dc71 mlx4_get_vf_config +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x310be90a mlx4_qp_to_ready +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3450df49 mlx4_set_admin_guid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3573238b mlx4_uar_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x38d00395 mlx4_write_mtt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x39e1461f __mlx4_replace_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3be168bc mlx4_fmr_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3fe1654c mlx4_xrcd_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x48155906 mlx4_fmr_unmap +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x499bdc9c mlx4_map_sw_to_hw_steering_id +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4aa0851f mlx4_cq_resize +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4b8ee5fb mlx4_alloc_hwq_res +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4c6a303d mlx4_qp_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4e97b7d2 mlx4_mr_hw_put_mpt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x537637e5 mlx4_unicast_attach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x55bed3c6 mlx4_FLOW_STEERING_IB_UC_QP_RANGE +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5688a182 mlx4_SYNC_TPT +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x57e6d387 mlx4_mr_hw_change_access +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x58ca0b2d mlx4_get_counter_stats +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x59ba3199 mlx4_unicast_detach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5ca33591 __mlx4_register_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x606a15a6 mlx4_slave_convert_port +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x647d731a mlx4_mr_hw_change_pd +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x678893a1 mlx4_buf_write_mtt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6d1ffadd mlx4_fmr_enable +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6eb36ef6 mlx4_alloc_cmd_mailbox +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7192e3a5 mlx4_register_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x75b39562 mlx4_bf_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7667f5b2 mlx4_buf_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x77dba521 mlx4_unicast_promisc_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x77ef4193 mlx4_port_map_set +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7fa412a9 mlx4_qp_modify +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x820f5189 mlx4_flow_attach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x84140843 mlx4_counter_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x85fe77c1 mlx4_buf_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8e046555 __mlx4_unregister_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x90cf4731 mlx4_qp_reserve_range +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x91640156 mlx4_get_admin_guid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9278c231 mlx4_get_internal_clock_params +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9391f923 mlx4_qp_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x947652ce mlx4_multicast_attach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x94921824 mlx4_phys_to_slaves_pport_actv +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x951899a0 mlx4_mr_enable +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x95d675e9 mlx4_srq_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x969a68a0 mlx4_pd_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x96ab269c mlx4_srq_lookup +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x994d6f73 mlx4_mr_rereg_mem_cleanup +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9a084c67 mlx4_unbond +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9a2a3f1e mlx4_uar_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9a6aee1a mlx4_find_cached_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9c3859fa mlx4_cq_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9d34b86f mlx4_mtt_init +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa2b72d61 mlx4_free_hwq_res +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa5c20913 mlx4_mr_hw_get_mpt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa60db5e4 mlx4_wol_read +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa6c1dbf2 mlx4_srq_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa6d30442 mlx4_get_vf_stats +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa7aee421 mlx4_multicast_detach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xab8898fd mlx4_mr_rereg_mem_write +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xac78a9d9 mlx4_set_vf_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xae2e8c70 mlx4_free_cmd_mailbox +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xaf1d85df mlx4_mw_enable +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb23fdcae mlx4_update_qp +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb269fdec mlx4_config_vxlan_port +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb28f6236 mlx4_qp_release_range +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb9941a3a mlx4_bf_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbb3710ae mlx4_vf_smi_enabled +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbbc76876 mlx4_fmr_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbcf46dd3 mlx4_get_active_ports +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc11ec59b mlx4_bond +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc4a14d6e mlx4_mr_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc813ec54 mlx4_srq_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc9ed8cd3 mlx4_get_slave_default_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xca2ffc31 mlx4_cq_modify +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xcbc334f8 mlx4_map_phys_fmr +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xcc529931 mlx4_db_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xccbab635 mlx4_phys_to_slave_port +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xcec20ad2 mlx4_qp_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xcf0d73e8 mlx4_mw_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd4496d07 mlx4_unicast_promisc_add +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd4d9ee91 mlx4_qp_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xdc99e4cf mlx4_config_dev_retrieval +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xde051c2d mlx4_counter_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe124e674 mlx4_register_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe5a2241b mlx4_mr_hw_write_mpt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe5afbe2d mlx4_register_interface +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xea6a3a72 mlx4_db_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xeb5e411a mlx4_hw_rule_sz +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xefab7031 mlx4_flow_detach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf0495650 mlx4_CLOSE_PORT +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf1ec841a mlx4_cq_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf21b9eb1 mlx4_map_sw_to_hw_steering_mode +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf2e83457 mlx4_get_base_qpn +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf410ebc2 mlx4_phys_to_slaves_pport +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf4b99903 mlx4_vf_set_enable_smi_admin +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf4f9f9c7 mlx4_set_vf_rate +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf564a5d0 mlx4_find_cached_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf8b5fe44 mlx4_xrcd_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xfbf2786c mlx4_INIT_PORT +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xfc707ecc mlx4_mw_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xfd1ebf01 mlx4_unregister_interface +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xfe21e00e mlx4_flow_steer_promisc_add +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xff71bd6e mlx4_mtt_cleanup +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xff8dbf64 mlx4_mtt_addr +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x01c6ec9d mlx5_query_hca_vport_system_image_guid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x09543b3d mlx5_fill_page_array +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x0a740858 mlx5_query_hca_vport_context +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x1228195c mlx5_query_port_ptys +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x1a200acf mlx5_core_eq_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x1af641fa mlx5_set_port_proto +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x265c6fb2 mlx5_query_port_proto_cap +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x34560594 mlx5_buf_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x3582eeb7 mlx5_create_map_eq +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x38088c47 mlx5_set_port_admin_status +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x4352cf7f mlx5_core_mad_ifc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x43881a83 mlx5_query_port_vl_hw_cap +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x48eaf20a mlx5_query_hca_vport_node_guid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x4a4f4735 mlx5_query_port_max_mtu +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x4ca17725 mlx5_core_xrcd_dealloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x54263499 mlx5_core_create_qp +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x5aa867c2 mlx5_query_port_admin_status +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x6346b895 mlx5_db_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x680420a7 mlx5_buf_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x864369ca mlx5_query_hca_vport_pkey +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x924e6213 mlx5_query_port_proto_oper +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x930cf0b7 mlx5_set_port_mtu +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x96f44bc6 mlx5_query_port_proto_admin +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa7587254 mlx5_core_access_reg +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa7b5a0e0 mlx5_core_destroy_qp +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xaddf508f mlx5_db_alloc_node +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xc54bf7e7 mlx5_core_page_fault_resume +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xc6ba2d93 mlx5_db_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xc752ef64 mlx5_query_hca_vport_gid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xd482e41a mlx5_query_port_oper_mtu +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xde4d524e mlx5_query_port_link_width_oper +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xdead7fa6 mlx5_core_qp_modify +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe7eb49f4 mlx5_core_xrcd_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xee549c1a mlx5_destroy_unmap_eq +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xeead883b mlx5_set_port_caps +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xef9202c3 mlx5_core_qp_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac 0x15e00189 stmmac_resume +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac 0x68fe83b6 stmmac_dvr_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac 0xcc289f0b stmmac_dvr_probe +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac 0xd2e69c85 stmmac_suspend +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac-platform 0x060f334a stmmac_pltfr_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac-platform 0x75c64958 stmmac_pltfr_probe +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac-platform 0xc9012643 stmmac_pltfr_pm_ops +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x0cb6563b cpsw_ale_add_ucast +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x198c2018 cpsw_ale_del_mcast +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x1a482021 cpsw_ale_control_set +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x28e6134b cpsw_ale_add_mcast +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x38d785e3 cpsw_ale_del_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x45c708af cpsw_ale_dump +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x5714b834 cpsw_ale_del_ucast +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x8fd91cee cpsw_ale_set_allmulti +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x94c167ed cpsw_ale_control_get +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x94cc2035 cpsw_ale_flush_multicast +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x9ba8a06a cpsw_ale_create +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x9d97f130 cpsw_ale_start +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0xa130f623 cpsw_ale_destroy +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0xaa447d22 cpsw_ale_stop +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0xabaa872d cpsw_ale_add_vlan +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x0e3f3144 macvlan_common_newlink +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x75645667 macvlan_common_setup +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x7fe7829a macvlan_dellink +EXPORT_SYMBOL_GPL drivers/net/macvlan 0xbc8b8d69 macvlan_link_register +EXPORT_SYMBOL_GPL drivers/net/macvtap 0xd2f4e9be macvtap_get_socket +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0x5fc19eef usbnet_cdc_status +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0xbb99d5e6 usbnet_cdc_bind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0xd9ba0834 usbnet_cdc_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0xec9d3e03 usbnet_generic_cdc_bind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x0a9ffb6d cdc_ncm_select_altsetting +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x0ed851b7 cdc_ncm_bind_common +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x21e2c442 cdc_ncm_rx_verify_ndp16 +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x3eec6234 cdc_ncm_tx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x541b721f cdc_ncm_fill_tx_frame +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0xb0d37ee8 cdc_ncm_rx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0xc026c0e0 cdc_ncm_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0xc36734e0 cdc_ncm_rx_verify_nth16 +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x227c6f23 rndis_rx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x3d1072d9 rndis_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x42079e8a rndis_tx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x425115d4 rndis_command +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x549fdeaa rndis_status +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x86ec9375 generic_rndis_bind +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x00500861 usbnet_write_cmd +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x03f5eaf3 usbnet_defer_kevent +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x0aeaf618 usbnet_write_cmd_async +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x0fbeee9c usbnet_start_xmit +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x1d6b654b usbnet_status_start +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x210c7f82 usbnet_unlink_rx_urbs +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x3419b23f usbnet_get_ethernet_addr +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x34689992 usbnet_disconnect +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x69d5d2e6 usbnet_read_cmd +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x7591f1a8 usbnet_purge_paused_rxq +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x7a6aac9e usbnet_update_max_qlen +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x802fd894 usbnet_probe +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x994a9c33 usbnet_set_msglevel +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xa24f0618 usbnet_change_mtu +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xa28c2325 usbnet_pause_rx +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xa47fad45 usbnet_tx_timeout +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xb2a5ecae usbnet_set_settings +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xb6d20517 usbnet_get_msglevel +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xb7a999ee usbnet_get_link +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xbff2a54d usbnet_open +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xc3b5b911 usbnet_get_drvinfo +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xc95ecf51 usbnet_read_cmd_nopm +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xce2415a3 usbnet_get_endpoints +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xcfb6e5c1 usbnet_nway_reset +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xd2e6f346 usbnet_suspend +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xdbcb16a9 usbnet_stop +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xe76a7857 usbnet_write_cmd_nopm +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xeaf1df0a usbnet_resume +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xf2b1e034 usbnet_get_settings +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xf5add889 usbnet_resume_rx +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xf825bb55 usbnet_status_stop +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xffcdf3c0 usbnet_skb_return +EXPORT_SYMBOL_GPL drivers/net/vxlan 0x80e8d93e vxlan_xmit_skb +EXPORT_SYMBOL_GPL drivers/net/vxlan 0x86ae700d vxlan_get_rx_port +EXPORT_SYMBOL_GPL drivers/net/vxlan 0x8a76afa3 vxlan_sock_add +EXPORT_SYMBOL_GPL drivers/net/vxlan 0xb353c99d vxlan_sock_release +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x08d7044f i2400m_error_recovery +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x2a69babd i2400m_dev_reset_handle +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x332acea6 i2400m_post_reset +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x55eeb0c3 i2400m_tx +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x5bd31088 i2400m_dev_bootstrap +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x71d20873 i2400m_netdev_setup +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x8376da40 i2400m_tx_msg_sent +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x87b2b7bb i2400m_rx +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x8a869d65 i2400m_cmd_enter_powersave +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xb00b793c i2400m_bm_cmd_prepare +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xb9417eed i2400m_is_boot_barker +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xbfa67530 i2400m_reset +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xcc0130b7 i2400m_pre_reset +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xce05b44e i2400m_init +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xd0633e36 i2400m_setup +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xe19c76e2 i2400m_tx_msg_get +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xe4bf0949 i2400m_release +EXPORT_SYMBOL_GPL drivers/net/wireless/cw1200/cw1200_core 0x1b2f7de3 cw1200_can_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/cw1200/cw1200_core 0x29b2702e cw1200_core_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/cw1200/cw1200_core 0x8018be20 cw1200_core_release +EXPORT_SYMBOL_GPL drivers/net/wireless/cw1200/cw1200_core 0xa261c9f3 cw1200_irq_handler +EXPORT_SYMBOL_GPL drivers/net/wireless/ipw2x00/libipw 0x90a4ff66 libipw_rx_any +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0x01d07973 il_dealloc_bcast_stations +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0xabc41b10 il_prep_station +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0xb1cf305c il_mac_tx_last_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0xce86ca30 il_remove_station +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0xf5ca6a8c _il_grab_nic_access +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x002366d2 __iwl_crit +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x0718ab17 iwl_write_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x0d10118a iwl_opmode_register +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x0e52e501 iwl_clear_bits_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x1b074767 iwl_abort_notification_waits +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x1e2b2311 iwl_parse_nvm_data +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x21a9a277 iwl_force_nmi +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x2d245fee iwl_init_notification_wait +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x35033c81 iwl_phy_db_free +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x3e860b53 iwl_phy_db_init +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x3ed537a7 __iwl_info +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x444acffc iwl_read_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x46f9cefd iwl_remove_notification +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x51b657cd iwlwifi_mod_params +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x5c52e109 iwl_opmode_deregister +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x5d382e61 iwl_set_bits_mask_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x5d8bf835 iwl_write_direct32 +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x72585bd7 iwl_parse_nvm_mcc_info +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x776221bf iwl_send_phy_db_data +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x78d8188f iwl_parse_eeprom_data +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x8c5d5ab3 iwl_phy_db_set_section +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x94d3a97b __iwl_dbg +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x9c8e3fa2 iwl_wait_notification +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xa49c9622 iwl_read_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xa6ec9a60 __iwl_err +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xa86e0a5b iwl_nvm_check_version +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xab4a9c3f iwl_notification_wait_notify +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xb8979af3 iwl_notification_wait_init +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xc09fd6ea __iwl_warn +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xd3de17f9 iwl_poll_direct_bit +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xd63c45e9 iwl_poll_bit +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xda125918 iwl_read_direct32 +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xee68cdb1 iwl_set_bits_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x0a3ae2f8 __lbs_cmd +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x0de086ed lbs_cmd_copyback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x275dea12 lbs_stop_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x39255585 lbs_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x5fdf38b8 lbs_disablemesh +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x67e186e5 lbs_get_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x6e26d7d9 lbs_queue_event +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x7056269c lbs_host_sleep_cfg +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x95f37c2d lbs_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x9e7ca659 lbs_host_to_card_done +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xa4c43ffd lbs_start_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xa7eba392 lbs_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xab9194ec lbs_notify_command_response +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xbe18a681 lbs_send_tx_feedback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xc8a14dbd lbs_process_rxed_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xd85cdf84 lbs_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xe7222338 lbs_get_firmware_async +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xf64277de lbs_debug +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x193170a8 lbtf_cmd_copyback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x1e5162c4 lbtf_cmd_response_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x3427a039 lbtf_send_tx_feedback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x631549b1 lbtf_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x7848b8ed lbtf_bcn_sent +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xb41627ed __lbtf_cmd +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xbe1be317 lbtf_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xc85e6899 lbtf_debug +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xeacb3bb7 lbtf_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x049258dc mwifiex_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x15cb3c42 mwifiex_del_virtual_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x2e699a3f mwifiex_process_hs_config +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x31bd9748 mwifiex_alloc_dma_align_buf +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x383cb365 mwifiex_init_shutdown_fw +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x49852318 mwifiex_cancel_hs +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x51e95eed mwifiex_deauthenticate_all +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x5e35ac45 mwifiex_handle_rx_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x78f0a777 mwifiex_queue_main_work +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x7f61d930 mwifiex_upload_device_dump +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x8f8fd89f mwifiex_enable_hs +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x8fa06978 mwifiex_disable_auto_ds +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x9a52cf3e mwifiex_write_data_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x9d95457f mwifiex_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xa42b7c17 mwifiex_process_sleep_confirm_resp +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xb54fdbb7 mwifiex_main_process +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xb79e432a mwifiex_drv_info_dump +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xe30d0018 mwifiex_add_virtual_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x2cbcb1c3 p54_free_skb +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x55e0e8a0 p54_register_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x68587f78 p54_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x9982fbb5 p54_parse_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xaa392c69 p54_read_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xb6d8719d p54_free_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xc2d52fc4 p54_parse_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xecb2ba08 p54_init_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xee82bf88 p54_unregister_common +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0x1cfc22bf rsi_91x_deinit +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0x598167dd rsi_91x_init +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0x7201b98a rsi_dbg +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0xace082a8 rsi_read_pkt +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0xdb3ca0e5 rsi_zone_enabled +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0xfca23bbf rsi_mac80211_detach +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x050e09bb rt2800_write_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x0963ad31 rt2800_link_tuner +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x0e15d986 rt2800_process_rxwi +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x100b2c88 rt2800_sta_add +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x12d921bd rt2800_get_key_seq +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x258eb411 rt2800_sta_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x27b82e6d rt2800_disable_wpdma +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x335c2e75 rt2800_enable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x3395877e rt2800_conf_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x34ce638e rt2800_write_tx_data +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x4a05e7ff rt2800_clear_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x4f62e470 rt2800_wait_wpdma_ready +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x566b4765 rt2800_vco_calibration +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x5ecef3fa rt2800_txdone_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x60dce160 rt2800_mcu_request +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x7952a9e1 rt2800_get_tsf +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x8478aa1f rt2800_config_pairwise_key +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x858c12eb rt2800_gain_calibration +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x9100a5cd rt2800_config_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x9360fb46 rt2800_ampdu_action +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xa0ecac51 rt2800_config_ant +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xa6ad4043 rt2800_check_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xa6b58c02 rt2800_config_filter +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xa9eb7936 rt2800_probe_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xb16bf92a rt2800_link_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xb4fd3539 rt2800_wait_csr_ready +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xb76c9746 rt2800_config_erp +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xba017a02 rt2800_read_eeprom_efuse +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xc5c1b9da rt2800_efuse_detect +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xc837ef23 rt2800_reset_tuner +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xc931cf50 rt2800_disable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xca1db48e rt2800_config +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xe005c6b1 rt2800_set_rts_threshold +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xe0061aa6 rt2800_rfkill_poll +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xe41c7f68 rt2800_load_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xe771cbed rt2800_get_txwi_rxwi_size +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xf4134e97 rt2800_get_survey +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xfb23cc52 rt2800_config_shared_key +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x024ab8db rt2800mmio_get_txwi +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x0319ad77 rt2800mmio_toggle_irq +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x0fad1430 rt2800mmio_pretbtt_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x2505789d rt2800mmio_tbtt_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x421924ed rt2800mmio_start_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x444f299e rt2800mmio_init_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x4f6d450f rt2800mmio_enable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x5fa4db64 rt2800mmio_interrupt +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x63d11973 rt2800mmio_clear_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x6a17c0f2 rt2800mmio_get_entry_state +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x84b5b8c4 rt2800mmio_write_tx_desc +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x92c0bcd1 rt2800mmio_rxdone_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x99e239af rt2800mmio_init_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x9a89d452 rt2800mmio_fill_rxdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xc6a1455e rt2800mmio_autowake_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xc9b83bc4 rt2800mmio_stop_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xcab7e6d1 rt2800mmio_kick_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xd8e8f884 rt2800mmio_queue_init +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xe28f94c7 rt2800mmio_txstatus_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x0058a247 rt2x00mac_flush +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x04a795c2 rt2x00lib_dmadone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x0539eca8 rt2x00lib_get_bssidx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x071a63f7 rt2x00mac_set_tim +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x07dad365 rt2x00lib_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x0e43c08c rt2x00queue_for_each_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x1125e0bb rt2x00mac_set_key +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x1369f39a rt2x00mac_stop +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x24ca4c28 rt2x00lib_beacondone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x25595e0a rt2x00lib_pretbtt +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x25c0c430 rt2x00lib_dmastart +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x2c669364 rt2x00mac_config +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x2ed2bb8a rt2x00queue_pause_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x33492496 rt2x00queue_map_txskb +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x356afbf1 rt2x00mac_remove_interface +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x39e8856f rt2x00mac_sta_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x4f41857d rt2x00mac_get_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x50c1ef9e rt2x00mac_start +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x5a6dc4a3 rt2x00lib_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x6979ed1e rt2x00mac_sta_add +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x6a188c3a rt2x00queue_get_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x721e5186 rt2x00lib_txdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x76accde2 rt2x00queue_stop_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x81638aea rt2x00mac_rfkill_poll +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x888a275b rt2x00mac_get_antenna +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x8ffc134f rt2x00mac_configure_filter +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x90abb5e6 rt2x00queue_start_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x9309cf53 rt2x00mac_sw_scan_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x9d2ed34e rt2x00queue_unpause_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x9f59f151 rt2x00mac_add_interface +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xa34466b1 rt2x00lib_probe_dev +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xb0054a02 rt2x00queue_unmap_skb +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xc3b893dc rt2x00mac_tx_frames_pending +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xcd0cce55 rt2x00lib_txdone_noinfo +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xd14ea487 rt2x00mac_get_ringparam +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xd37901fa rt2x00mac_set_antenna +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xd6b3bfcf rt2x00lib_remove_dev +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xd8637980 rt2x00mac_bss_info_changed +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xdf4469aa rt2x00mac_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xe16322ce rt2x00mac_sw_scan_start +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xe7843627 rt2x00queue_flush_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xee739083 rt2x00mac_conf_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xf8ae9a11 rt2x00queue_stop_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xf9a16619 rt2x00queue_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xfb175a36 rt2x00lib_rxdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xff255970 rt2x00queue_start_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0x3caccc4f rt2x00mmio_rxdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0x4bc47510 rt2x00mmio_initialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0x8e889c59 rt2x00mmio_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0x8f67af84 rt2x00mmio_uninitialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0x968b34b0 rt2x00mmio_regbusy_read +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0x379e0738 rt2x00pci_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0x5c95691f rt2x00pci_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0xaf153f46 rt2x00pci_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0xc4853e86 rt2x00pci_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x0047a4ea rt2x00usb_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x1079c7fd rt2x00usb_uninitialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x149c863d rt2x00usb_disable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x15eb8d84 rt2x00usb_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x31a88a6b rt2x00usb_watchdog +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x338bf102 rt2x00usb_register_read_async +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x4d6e23bd rt2x00usb_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x57abdb8a rt2x00usb_clear_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x59d5e64b rt2x00usb_vendor_request +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x628f9420 rt2x00usb_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x757f1ce2 rt2x00usb_vendor_request_buff +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x7b604ca2 rt2x00usb_disconnect +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x94ccdf7c rt2x00usb_regbusy_read +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xd0eec0cd rt2x00usb_kick_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xe4f68c5e rt2x00usb_initialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xe76304c6 rt2x00usb_vendor_req_buff_lock +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x2db3ae94 dm_restorepowerindex +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x543779d8 dm_writepowerindex +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xa17d9625 rtl92c_set_p2p_ps_offload_cmd +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xe3891878 dm_savepowerindex +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x05dff5c8 rtl8723_phy_set_bb_reg +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x0a1dee15 rtl8723_dm_init_edca_turbo +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x1abfb2ef rtl8723_phy_reload_adda_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x1e637de0 rtl8723_enable_fw_download +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x215704ff rtl8723_phy_path_a_fill_iqk_matrix +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x215c725d rtl8723_phy_query_bb_reg +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x383a174a rtl8723_phy_save_mac_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x4cc0c614 rtl8723_phy_path_a_standby +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x4f73d115 rtl8723_phy_mac_setting_calibration +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x54e53383 rtl8723ae_firmware_selfreset +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x55a38efa rtl8723_write_fw +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x637d975b rtl8723_phy_txpwr_idx_to_dbm +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x6a88a6fb rtl8723_phy_path_adda_on +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x6c88e4a6 rtl8723_phy_reload_mac_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x6ef51fc8 rtl8723_fw_page_write +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x6fee3a6c rtl8723_phy_set_sw_chnl_cmdarray +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x7e865990 rtl8723_save_adda_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x90a84215 rtl8723_phy_rf_serial_write +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xa0e9c6fa rtl8723_cmd_send_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xaf4d6d94 rtl8723_phy_calculate_bit_shift +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xbba211e1 rtl8723_fw_free_to_go +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xc9dde6c7 rtl8723_dm_init_dynamic_bb_powersaving +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xcbd630d6 rtl8723_download_fw +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xd14ca524 rtl8723_phy_pi_mode_switch +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xd8e546c3 rtl8723_fw_block_write +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xe23315d3 rtl8723_phy_rf_serial_read +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xe93dfe3f rtl8723_dm_init_dynamic_txpower +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xea716728 rtl8723_phy_init_bb_rf_reg_def +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xfd9ac167 rtl8723be_firmware_selfreset +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x113f69d8 rtl_p2p_info +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x1286c979 rtl_deinit_rfkill +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x241dedc1 rtl_tid_to_ac +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x2921a4d4 rtl_btc_status_false +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x30a0a292 rtl_action_proc +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x31864ffc rtl_is_special_data +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x32d2755f rtl_deinit_core +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x3a5c4097 rtl_tx_mgmt_proc +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x58c9c0b7 rtl_swlps_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x6b4de810 rtl_lps_change_work_callback +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x9fbec1f9 rtl_deinit_deferred_work +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xafcdc668 rtl_global_var +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xb7b0e79e rtl_ops +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xb831cf13 rtl_dbgp_flag_init +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xbc8412b5 rtl_init_rx_config +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xc18d9571 rtl_attribute_group +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xc6fc34e7 rtl_beacon_statistic +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xdca59ab5 rtl_init_core +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xde10fd6e read_efuse_byte +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xe56cc62b rtl_recognize_peer +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xfe9c0b2c rtl_ips_nic_on +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0x11b53384 wl1251_init_ieee80211 +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0x919811b1 wl1251_free_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0x9887e80d wl1251_alloc_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x033434bf wlcore_event_sched_scan_completed +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x07dd296c wlcore_event_soft_gemini_sense +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x0836cfc5 wlcore_disable_interrupts +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x09a11675 wlcore_event_roc_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x09cd29ab wlcore_synchronize_interrupts +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x1139369a wlcore_event_inactive_sta +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x13da112c wlcore_set_scan_chan_params +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x20826b23 wl1271_acx_init_mem_config +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x3465d0b6 wl1271_cmd_data_path +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x39df7457 wlcore_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x3e68975b wl1271_tx_flush +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x41348737 wl12xx_cmd_build_probe_req +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x4586c812 wlcore_set_key +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x4640f1f0 wl1271_ps_elp_sleep +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x46644b26 wlcore_translate_addr +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x4bf27619 wlcore_event_beacon_loss +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x4ddeafd0 wlcore_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x52746e7a wlcore_scan_sched_scan_results +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x53dff67d wl12xx_debug_level +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x5c08c600 wlcore_event_dummy_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x63bc25c7 wl1271_cmd_send +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x6bb68899 wlcore_boot_upload_nvs +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x720a959a wl12xx_acx_mem_cfg +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x77092dcc wlcore_get_native_channel_type +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x7b4906b0 wlcore_free_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x84ba3e2c wlcore_alloc_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x855fbe57 wlcore_boot_run_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x858081e6 wl1271_cmd_test +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x8a194eba wlcore_boot_upload_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x8aeb16a7 wlcore_scan_sched_scan_ssid_list +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x9155e26a wl1271_ps_elp_wakeup +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x951bcff7 wlcore_event_channel_switch +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xb1008fbb wl1271_acx_pm_config +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xb216e873 wl1271_debugfs_update_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xb58c299d wl1271_tx_min_rate_get +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xb805a0fa wl1271_format_buffer +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xb9832908 wlcore_set_partition +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xbddf1c49 wl1271_cmd_configure +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xc59037b2 wlcore_disable_interrupts_nosync +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xc8a0d0cd wlcore_cmd_wait_for_event_or_timeout +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xc949f96d wl1271_acx_set_ht_capabilities +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xcc6a0bf3 wlcore_event_rssi_trigger +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xe0eaca19 wlcore_event_ba_rx_constraint +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xe616174e wl1271_acx_sleep_auth +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xe7fb28fb wlcore_event_max_tx_failure +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xfc6d849b wlcore_enable_interrupts +EXPORT_SYMBOL_GPL drivers/nfc/mei_phy 0x8d08f20f mei_phy_ops +EXPORT_SYMBOL_GPL drivers/nfc/mei_phy 0xceb555a2 nfc_mei_phy_alloc +EXPORT_SYMBOL_GPL drivers/nfc/mei_phy 0xed782e61 nfc_mei_phy_free +EXPORT_SYMBOL_GPL drivers/nfc/nfcmrvl/nfcmrvl 0x248c41f8 nfcmrvl_nci_unregister_dev +EXPORT_SYMBOL_GPL drivers/nfc/nfcmrvl/nfcmrvl 0x69835ec2 nfcmrvl_nci_register_dev +EXPORT_SYMBOL_GPL drivers/nfc/nfcmrvl/nfcmrvl 0xc3e72b0c nfcmrvl_nci_recv_frame +EXPORT_SYMBOL_GPL drivers/nfc/nfcmrvl/nfcmrvl 0xf87377a4 nfcmrvl_parse_dt +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x1432560e st_nci_enable_se +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x18857ae8 st_nci_probe +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x85e873b0 st_nci_hci_event_received +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0xb5831e36 st_nci_hci_cmd_received +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0xb5d5527a st_nci_discover_se +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0xdca2d4ee st_nci_remove +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0xdec9e5bf st_nci_disable_se +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0xfd915ab3 st_nci_hci_load_session +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 0x39d102bb ntb_transport_register_client +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 0x5fb2aaa6 ntb_transport_unregister_client +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x82e6c13d ntb_transport_qp_num +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x90de01fc 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/pinctrl/intel/pinctrl-intel 0x616be757 intel_pinctrl_suspend +EXPORT_SYMBOL_GPL drivers/pinctrl/intel/pinctrl-intel 0xa10c07d1 intel_pinctrl_resume +EXPORT_SYMBOL_GPL drivers/pinctrl/intel/pinctrl-intel 0xbb3c0a6e intel_pinctrl_remove +EXPORT_SYMBOL_GPL drivers/pinctrl/intel/pinctrl-intel 0xdc9a16a0 intel_pinctrl_probe +EXPORT_SYMBOL_GPL drivers/platform/x86/asus-wmi 0x59da8c32 asus_wmi_unregister_driver +EXPORT_SYMBOL_GPL drivers/platform/x86/asus-wmi 0x6e436017 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/intel_ips 0x46809fa9 ips_link_to_i915_driver +EXPORT_SYMBOL_GPL drivers/platform/x86/intel_pmc_ipc 0x56235c72 intel_pmc_ipc_command +EXPORT_SYMBOL_GPL drivers/platform/x86/intel_pmc_ipc 0x75068282 intel_pmc_ipc_raw_cmd +EXPORT_SYMBOL_GPL drivers/platform/x86/intel_pmc_ipc 0xdea07053 intel_pmc_ipc_simple_command +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/thinkpad_acpi 0x706cdcef tpacpi_led_set +EXPORT_SYMBOL_GPL drivers/platform/x86/wmi 0x3ecf6cfc wmi_install_notify_handler +EXPORT_SYMBOL_GPL drivers/platform/x86/wmi 0x561c634a wmi_evaluate_method +EXPORT_SYMBOL_GPL drivers/platform/x86/wmi 0x876d29f1 wmi_get_event_data +EXPORT_SYMBOL_GPL drivers/platform/x86/wmi 0xb5a6ebe2 wmi_remove_notify_handler +EXPORT_SYMBOL_GPL drivers/platform/x86/wmi 0xc9d4d6d1 wmi_has_guid +EXPORT_SYMBOL_GPL drivers/platform/x86/wmi 0xda29f8b0 wmi_set_block +EXPORT_SYMBOL_GPL drivers/platform/x86/wmi 0xfb882fb7 wmi_query_block +EXPORT_SYMBOL_GPL drivers/power/pcf50633-charger 0x03ec1dc7 pcf50633_mbc_get_status +EXPORT_SYMBOL_GPL drivers/power/pcf50633-charger 0x64d9aab7 pcf50633_mbc_usb_curlim_set +EXPORT_SYMBOL_GPL drivers/power/pcf50633-charger 0x996b3e02 pcf50633_mbc_get_usb_online_status +EXPORT_SYMBOL_GPL drivers/pwm/pwm-lpss 0x21e22848 pwm_lpss_byt_info +EXPORT_SYMBOL_GPL drivers/pwm/pwm-lpss 0x81ca2e1d pwm_lpss_bsw_info +EXPORT_SYMBOL_GPL drivers/pwm/pwm-lpss 0xb563cdb0 pwm_lpss_remove +EXPORT_SYMBOL_GPL drivers/pwm/pwm-lpss 0xfa64430c pwm_lpss_probe +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x4b902a7a mc13xxx_regulator_ops +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x8a4cd1c1 mc13xxx_fixed_regulator_set_voltage +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0xac53dc66 mc13xxx_fixed_regulator_ops +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x05f49ad1 wm8350_dcdc25_set_mode +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x7c66f3ed wm8350_ldo_set_slot +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0xa48a78bb wm8350_isink_set_flash +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0xab26319d wm8350_register_regulator +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0xb8bc796a wm8350_dcdc_set_slot +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0xb9db3228 wm8350_register_led +EXPORT_SYMBOL_GPL drivers/regulator/wm8400-regulator 0x7df310b8 wm8400_register_regulator +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x03e68a57 cxgbi_create_conn +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x0cc00ba8 cxgbi_get_conn_stats +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x0e2c8a1b cxgbi_sock_rcv_peer_close +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x12878a38 cxgbi_device_find_by_netdev_rcu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x15989832 cxgbi_device_portmap_cleanup +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x1b10351b cxgbi_sock_purge_wr_queue +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x203912d6 cxgbi_sock_skb_entail +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x25cfbe35 cxgbi_device_register +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x32362778 cxgbi_get_ep_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x3a5c4389 cxgbi_ddp_page_size_factor +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x401e3867 cxgbi_sock_rcv_abort_rpl +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x41508c84 cxgbi_sock_rcv_close_conn_rpl +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x50353764 cxgbi_set_host_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x53d89782 cxgbi_ddp_cleanup +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x57a65f13 cxgbi_parse_pdu_itt +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x5e6d3130 cxgbi_conn_xmit_pdu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x64c3a63b cxgbi_conn_pdu_ready +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x65e1082a cxgbi_hbas_remove +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x668be156 cxgbi_cleanup_task +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x671a4485 cxgbi_iscsi_cleanup +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x6b32ff4d cxgbi_ddp_init +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x731fdf32 cxgbi_create_session +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x77fe9bed cxgbi_ddp_ppod_set +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x7d9e9c2e cxgbi_ep_poll +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x7e52d9c6 cxgbi_device_unregister +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x7ef1ad09 cxgbi_sock_closed +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x7fdb6004 cxgbi_device_unregister_all +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x849a1f54 cxgbi_sock_rcv_wr_ack +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x85dee908 cxgbi_conn_init_pdu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x8c2ba369 cxgbi_ddp_ppod_clear +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x90298a23 cxgbi_sock_free_cpl_skbs +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x91087501 cxgbi_bind_conn +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x99ddbca6 cxgbi_device_portmap_create +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x9af364ce cxgbi_get_host_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x9cac91bf cxgbi_ep_connect +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xa2a7d6f0 cxgbi_device_find_by_lldev +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xab35e6b1 cxgbi_hbas_add +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xae790c73 cxgbi_sock_established +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xba368f0a cxgbi_sock_act_open_req_arp_failure +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xbc00c74e cxgbi_device_find_by_netdev +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xc8a30914 cxgbi_ep_disconnect +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xcb44df3e cxgbi_sock_select_mss +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xd30c7887 cxgbi_conn_tx_open +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xd3628e17 cxgbi_sock_check_wr_invariants +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xd508455e cxgbi_iscsi_init +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xd9a9b4df cxgbi_set_conn_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xedb69a42 cxgbi_conn_alloc_pdu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xedf41487 cxgbi_destroy_session +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xef346615 cxgbi_attr_is_visible +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xf58bc1fa cxgbi_sock_fail_act_open +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x4e61478f scsi_register_device_handler +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x4fa85be8 scsi_dh_attach +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x515bd48f scsi_unregister_device_handler +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x593a36c2 scsi_dh_handler_exist +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x5fc0ef38 scsi_dh_attached_handler_name +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x7c6d896a scsi_dh_activate +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x7e022059 scsi_dh_set_params +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x93db892f scsi_dh_detach +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x00a79200 fcoe_start_io +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x08565474 fcoe_check_wait_queue +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x0fb51275 fcoe_queue_timer +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x15a2b95c fcoe_get_paged_crc_eof +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x234cbd41 fcoe_fcf_device_add +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x247b3a82 fcoe_ctlr_device_add +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x24d8fab2 fcoe_get_wwn +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x374c1e1c fcoe_wwn_from_mac +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x5400920a fcoe_fcf_device_delete +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x64baed24 fcoe_fc_crc +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x64fb09b1 fcoe_libfc_config +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x68d3e913 fcoe_clean_pending_queue +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x84b3d915 fcoe_wwn_to_str +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x84e4a4b4 fcoe_validate_vport_create +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x8dfa8008 fcoe_get_lesb +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x9d81a38e fcoe_ctlr_get_lesb +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xb5d5a7a7 fcoe_link_speed_update +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xd7fa03d8 fcoe_ctlr_device_delete +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xffe7f658 __fcoe_get_lesb +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x478db8a3 iscsi_boot_create_target +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x82dad93c iscsi_boot_create_initiator +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0xbd8a0ed9 iscsi_boot_create_kset +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0xc4e901aa iscsi_boot_destroy_kset +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0xe4287ea6 iscsi_boot_create_host_kset +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0xf906c4eb iscsi_boot_create_ethernet +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x0789f0b5 __iscsi_complete_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x102cfd79 __iscsi_get_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x12b2ad06 iscsi_switch_str_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x17cd41bc iscsi_conn_stop +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x20840204 iscsi_complete_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x208cbc8c iscsi_eh_abort +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x25bcb089 iscsi_put_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x26e086a0 iscsi_target_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x296c339c iscsi_host_remove +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x2d0f4b13 iscsi_update_cmdsn +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x32e415a9 iscsi_itt_to_ctask +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x349b0d8f iscsi_conn_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x3bef2f73 iscsi_pool_init +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x40d7ac06 iscsi_conn_bind +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x417affa3 iscsi_verify_itt +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x54952cc9 iscsi_session_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x56b25c9c iscsi_eh_device_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x59429e1a iscsi_conn_send_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x5a3b4563 iscsi_eh_target_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x65c5a112 iscsi_conn_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x6840a391 iscsi_requeue_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x7448c02e iscsi_session_recovery_timedout +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x7bacaeb3 iscsi_conn_queue_work +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x7bf620ad iscsi_session_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x7c5f88c2 iscsi_suspend_queue +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x805e1d2e iscsi_prep_data_out_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x8067effd iscsi_complete_scsi_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x8d303b1b iscsi_pool_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x8dbc7043 iscsi_conn_failure +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x9074b193 iscsi_host_add +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x9b620492 iscsi_itt_to_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x9e1ece2b iscsi_eh_session_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xaf105200 iscsi_set_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xafec3f99 iscsi_host_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xb06743a4 iscsi_host_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xb1678426 __iscsi_put_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xbf8c9136 iscsi_conn_get_addr_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xc134b28b iscsi_session_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xc6aba4ea iscsi_queuecommand +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xc84d542c iscsi_host_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xc9672f6a iscsi_session_failure +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xcce23ff4 iscsi_conn_start +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xcdce2a11 iscsi_eh_recover_target +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xd9a18a6b iscsi_conn_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xeae74653 iscsi_suspend_tx +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xfcabc17f iscsi_host_set_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x04cdecb2 iscsi_segment_seek_sg +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x079731d5 iscsi_segment_init_linear +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x07f73f0b iscsi_tcp_segment_done +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x099ac739 iscsi_tcp_dgst_header +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x0ffabcea iscsi_tcp_conn_get_stats +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x210524e6 iscsi_tcp_conn_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x22c22150 iscsi_tcp_task_xmit +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x366197f5 iscsi_tcp_conn_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x56d08f91 iscsi_tcp_r2tpool_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x95b7222f iscsi_tcp_recv_segment_is_hdr +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x9d27a68a iscsi_tcp_r2tpool_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xac9df1ee iscsi_tcp_cleanup_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xb0ec9f51 iscsi_tcp_segment_unmap +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xbde420a8 iscsi_tcp_set_max_r2t +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xd9bfc6c8 iscsi_tcp_task_init +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xe9f78c39 iscsi_tcp_recv_skb +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xec01145d iscsi_tcp_hdr_recv_prep +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x03288403 sas_register_ha +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x0da1a87c sas_queuecommand +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x1172ccbc sas_alloc_slow_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x184e4469 sas_phy_reset +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x1ae72da0 sas_slave_configure +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x1bb43489 sas_target_destroy +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x2228df39 sas_change_queue_depth +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x29254396 sas_eh_device_reset_handler +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x2cf58bcf sas_ssp_task_response +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x395025b9 sas_bios_param +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x3c221a8b sas_domain_attach_transport +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x53e7cd81 sas_domain_release_transport +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x625d5a24 sas_free_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x70e7a538 sas_ata_schedule_reset +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x757d09c1 sas_get_local_phy +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x90c3a3fd sas_request_addr +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x9fc8190b sas_unregister_ha +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xa6e88c42 sas_alloc_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xbf3456dc sas_drain_work +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xc2a7f274 sas_ioctl +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xca365441 sas_target_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xde5e56ea sas_task_abort +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xe4908cfa sas_eh_abort_handler +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xf21dea14 sas_eh_bus_reset_handler +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x00c4e2db iscsi_create_flashnode_sess +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x03a0c68a iscsi_destroy_iface +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x0479dec6 iscsi_ping_comp_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x0bf13b41 iscsi_destroy_flashnode_sess +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x11b6b903 iscsi_create_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x12675174 iscsi_destroy_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x140b1cac iscsi_unblock_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x24887ebe iscsi_flashnode_bus_match +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x37b29d35 iscsi_is_session_online +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x3a68e427 iscsi_get_port_state_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x52a81899 iscsi_create_iface +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x56e17c0f iscsi_is_flashnode_conn_dev +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x5a360b19 iscsi_scan_finished +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x699fe53e iscsi_get_discovery_parent_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x6c36a42e iscsi_post_host_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x721cbf54 iscsi_alloc_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x73a621b4 iscsi_find_flashnode_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x77728502 iscsi_destroy_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x84a005f1 iscsi_get_router_state_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x860657d5 iscsi_host_for_each_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x86ff74c2 iscsi_find_flashnode_sess +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x8a0bef7e iscsi_get_port_speed_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x8b836c52 iscsi_block_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x91ae484d iscsi_lookup_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x92e82fca iscsi_session_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x92f761b1 iscsi_unregister_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x9889ac3a iscsi_free_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xa4cc2938 iscsi_recv_pdu +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xacfd03e8 iscsi_conn_error_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xae61e2cb iscsi_destroy_all_flashnode +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xb24a1f90 iscsi_block_scsi_eh +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xb8a01c8e iscsi_remove_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xbba580fd iscsi_conn_login_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xbc071179 iscsi_get_ipaddress_state_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xc83fa149 iscsi_offload_mesg +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xd77afec1 iscsi_add_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xdc8a112d iscsi_session_chkready +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xe7b548ef iscsi_register_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xeeb866f2 iscsi_is_session_dev +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xf0643dc1 iscsi_create_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xf492cc08 iscsi_create_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xf94a8cc3 iscsi_destroy_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xfc824451 iscsi_create_flashnode_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0x20bc6638 sas_is_tlr_enabled +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0x4f658d62 sas_disable_tlr +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0x52c6eba2 sas_enable_tlr +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0xa60b5373 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 0xcffa2aff spi_populate_width_msg +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_spi 0xd93b74c5 spi_populate_tag_msg +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x240f0004 srp_attach_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x60b49aca srp_stop_rport_timers +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x76278f3d srp_rport_del +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x7e913a13 srp_release_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x9ee14a94 srp_remove_host +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0xe9167cd0 srp_rport_add +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0xee891cc0 srp_tmo_valid +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0x4e410e06 ufshcd_dme_get_attr +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0x7a43fe5e ufshcd_init +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0x8b1e0a0b ufshcd_dme_set_attr +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0xd023c87e ufshcd_remove +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x1781bcfe spi_bitbang_stop +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x464ed591 spi_bitbang_setup_transfer +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x77380fe3 spi_bitbang_setup +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x8c7f17f2 spi_bitbang_start +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0xc4de9420 spi_bitbang_cleanup +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0x2d092ef4 dw_spi_resume_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0x7e3c06ba dw_spi_add_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0xa63f8bff dw_spi_remove_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0xb10737c4 dw_spi_suspend_host +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x13cd688c spmi_ext_register_readl +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x258157f1 spmi_ext_register_writel +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x415c7b2e spmi_ext_register_write +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x44b75d9b spmi_driver_register +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x540f4d89 spmi_command_reset +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x5ad36a68 spmi_register_read +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x6403ed97 spmi_ext_register_read +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x6429e590 spmi_command_shutdown +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x687b088f spmi_device_remove +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x7bdce42d spmi_command_sleep +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x7ca16759 spmi_controller_add +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x9fa6d0e9 spmi_register_zero_write +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xb4a0d0ab spmi_command_wakeup +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xbea0fc43 spmi_controller_remove +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xc461e990 spmi_controller_alloc +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xc8c39781 spmi_register_write +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xe0831812 spmi_device_add +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xe40938fa spmi_device_alloc +EXPORT_SYMBOL_GPL drivers/ssb/ssb 0x9ed7c893 ssb_pmu_spuravoid_pllupdate +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x016ca2d5 comedi_dev_get_from_minor +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x03791f2c comedi_buf_write_samples +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x06ce3b17 comedi_inc_scan_progress +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x0cd330f4 range_unknown +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x0f992c55 comedi_set_hw_dev +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x1af93a68 comedi_alloc_spriv +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x1ee02840 comedi_readback_insn_read +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x20efb1e3 comedi_alloc_subdevices +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x21102f87 range_0_32mA +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x24e0e016 comedi_buf_read_n_available +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x27ed9f6d comedi_nsamples_left +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x2e1113a3 comedi_buf_read_alloc +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x2f0ad9d3 range_bipolar5 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x3d93e05a comedi_dev_put +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x40ae5df8 comedi_dio_update_state +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x4236eaaf range_4_20mA +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x4275034b comedi_dio_insn_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x43e42939 comedi_timeout +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x4aa6f2d4 comedi_alloc_subdev_readback +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x4af2eb63 comedi_driver_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x4fe634f3 range_bipolar2_5 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x50b03f02 comedi_legacy_detach +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x56db6749 __comedi_request_region +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x590f658c comedi_set_spriv_auto_free +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x5982f907 comedi_handle_events +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x5c3aefb5 comedi_request_region +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x8113872c range_unipolar10 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x8413b41d comedi_load_firmware +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x87043932 comedi_buf_write_free +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x88f0bc47 comedi_bytes_per_scan +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x8a1e6515 comedi_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x8af62dd7 comedi_buf_read_free +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xa7888058 comedi_auto_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xb647b59c comedi_nscans_left +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xb679cebc range_0_20mA +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xb6fae34b comedi_auto_unconfig +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xb8a90c1e comedi_is_subdevice_running +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 0xc4ba4b42 comedi_buf_read_samples +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xd98a8b7a comedi_alloc_devpriv +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xdb2044b2 range_unipolar5 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xea5174c8 comedi_event +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xfe6d81ae comedi_check_chanlist +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xfe7cf740 comedi_buf_write_alloc +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0x433de778 comedi_pci_enable +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0x9706ab87 comedi_pci_driver_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0xc281ef33 comedi_pci_auto_unconfig +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0xcee99958 comedi_pci_auto_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0xd93878a1 comedi_to_pci_dev +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0xdc662a29 comedi_pci_detach +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0xe1b63979 comedi_pci_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0xe9861537 comedi_pci_disable +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pcmcia 0x049c6c4c comedi_pcmcia_driver_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pcmcia 0x06615664 comedi_pcmcia_enable +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pcmcia 0x1b204eee comedi_to_pcmcia_dev +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pcmcia 0x2ef449f9 comedi_pcmcia_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pcmcia 0x552efd6e comedi_pcmcia_auto_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pcmcia 0xc18f5a66 comedi_pcmcia_disable +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pcmcia 0xdc898397 comedi_pcmcia_auto_unconfig +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0x12b1e8bb comedi_usb_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0x18654e55 comedi_usb_driver_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0x28bc2d6b comedi_to_usb_dev +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0xa313c2a1 comedi_to_usb_interface +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0xb5984a11 comedi_usb_auto_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0xd3fb2eb2 comedi_usb_auto_unconfig +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/addi_watchdog 0x4b8083f8 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 0x4dbce144 amplc_dio200_common_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/amplc_dio200_common 0x53f7bb45 amplc_dio200_set_enhance +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/amplc_pc236_common 0x189622ef amplc_pc236_common_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x339a6d6d comedi_8254_pacer_enable +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x3b819169 comedi_8254_write +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x56e3bbe1 comedi_8254_read +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x6dedac87 comedi_8254_set_mode +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x70841432 comedi_8254_mm_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x70d72413 comedi_8254_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x728b33a1 comedi_8254_ns_to_timer +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x7b7925d5 comedi_8254_subdevice_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0xcf4da28e comedi_8254_update_divisors +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0xd5979e8f comedi_8254_cascade_ns_to_timer +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0xd8249629 comedi_8254_set_busy +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0xdf38359e comedi_8254_load +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0xf4896493 comedi_8254_status +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8255 0x34fd8e9a subdev_8255_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8255 0x5f9305a4 subdev_8255_mm_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8255 0x61776398 subdev_8255_regbase +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_isadma 0x0d68fcd9 comedi_isadma_poll +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 0x6815a033 comedi_isadma_free +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_isadma 0x9c967a33 comedi_isadma_alloc +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_isadma 0xa3d01a85 comedi_isadma_program +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_isadma 0xa7ebb8a3 comedi_isadma_set_mode +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/das08 0xd517911c das08_common_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x10d87c00 mite_dma_tcr +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x24f72775 mite_detach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x37ee63f0 mite_bytes_read_from_memory_ub +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x40169457 mite_bytes_read_from_memory_lb +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x52027f16 mite_dma_disarm +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x5c03c320 mite_bytes_in_transit +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x5cfd1a88 mite_release_channel +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x6159ddfc mite_done +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x643c328d mite_dma_arm +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x65fbd65d mite_sync_input_dma +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x69c0e93d mite_alloc +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x746f38cd mite_alloc_ring +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x75fb53be mite_get_status +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x7b480ef7 mite_setup2 +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x88d33935 mite_buf_change +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x8f8c879b mite_bytes_written_to_memory_lb +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x913696a1 mite_request_channel_in_range +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x9ade904d mite_prep_dma +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xe3060671 mite_free_ring +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xf874703c mite_bytes_written_to_memory_ub +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xff2e0ac4 mite_sync_output_dma +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_common 0x4b0a8f1e labpc_common_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_common 0x8e88cf5c labpc_common_detach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_isadma 0x16ca10c0 labpc_drain_dma +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_isadma 0x4b0d0c22 labpc_init_dma_chan +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_isadma 0x61cbd833 labpc_setup_dma +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_isadma 0x97999911 labpc_free_dma_chan +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_isadma 0xa1a4d4a1 labpc_handle_dma_status +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x0354419d ni_tio_init_counter +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x4410e820 ni_gpct_device_construct +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x48b48536 ni_tio_arm +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x5adcd918 ni_tio_insn_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x6f8277f2 ni_tio_set_gate_src +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x7a02ba20 ni_gpct_device_destroy +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x906a63e8 ni_tio_insn_write +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0xd10d1016 ni_tio_insn_read +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0x043d25b3 ni_tio_cancel +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0x0eb48d42 ni_tio_cmd +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0x11fb83c9 ni_tio_set_mite_channel +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0x3fe031ff ni_tio_handle_interrupt +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0x61856b78 ni_tio_acknowledge +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0x88a6363e ni_tio_cmdtest +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x786b5946 comedi_dio_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0xa57605bb comedi_find_subdevice_by_type +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0xa6536dc9 comedi_dio_bitfield2 +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0xc804e185 comedi_close +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0xcb827194 comedi_dio_get_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0xdcd8e770 comedi_get_n_channels +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0xf70f0e7e comedi_open +EXPORT_SYMBOL_GPL drivers/staging/iio/addac/adt7316 0x80bf97f7 adt7316_pm_ops +EXPORT_SYMBOL_GPL drivers/staging/lustre/lustre/obdclass/obdclass 0x59c86cd6 lustre_attr_store +EXPORT_SYMBOL_GPL drivers/staging/lustre/lustre/obdclass/obdclass 0x5bbac7a1 lustre_kobj +EXPORT_SYMBOL_GPL drivers/staging/lustre/lustre/obdclass/obdclass 0x8f791459 lustre_sysfs_ops +EXPORT_SYMBOL_GPL drivers/staging/lustre/lustre/obdclass/obdclass 0xaa230e37 lustre_attr_show +EXPORT_SYMBOL_GPL drivers/staging/lustre/lustre/obdclass/obdclass 0xc54749ae debugfs_lustre_root +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x0e81c76d spk_serial_out +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x14f06fe7 spk_serial_in_nowait +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x2ab8daa7 speakup_info +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x3efb6aaf spk_synth_immediate +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 0x475e158a synth_request_region +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x71162001 spk_var_store +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x8b3aeb81 speakup_event +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x8e146195 synth_release_region +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x9167dc79 spk_synth_flush +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x92402056 spk_synth_is_alive_nop +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x96fedddc spk_synth_is_alive_restart +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x9a888082 synth_buffer_getc +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xa6372645 synth_add +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xaf46a6b3 spk_serial_synth_probe +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xb48956f8 synth_buffer_peek +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xb6fc3acb synth_remove +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xbbd15a51 speakup_start_ttys +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xbd96a5fd spk_var_show +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xc766ae09 synth_printf +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xd1b551a2 spk_get_var +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xe7cd4558 spk_serial_release +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xe7e810f8 spk_serial_in +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xf566b32c spk_do_catch_up +EXPORT_SYMBOL_GPL drivers/staging/unisys/visorbus/visorbus 0x0877dd5c visor_periodic_work_start +EXPORT_SYMBOL_GPL drivers/staging/unisys/visorbus/visorbus 0x0ec0434e visorchannel_zoneid +EXPORT_SYMBOL_GPL drivers/staging/unisys/visorbus/visorbus 0x149bde55 visorchannel_clear +EXPORT_SYMBOL_GPL drivers/staging/unisys/visorbus/visorbus 0x28a61e64 visorbus_register_visor_driver +EXPORT_SYMBOL_GPL drivers/staging/unisys/visorbus/visorbus 0x28c58726 visorbus_enable_channel_interrupts +EXPORT_SYMBOL_GPL drivers/staging/unisys/visorbus/visorbus 0x37626eff visorchannel_get_clientpartition +EXPORT_SYMBOL_GPL drivers/staging/unisys/visorbus/visorbus 0x39fe5de1 visorchannel_signalqueue_max_slots +EXPORT_SYMBOL_GPL drivers/staging/unisys/visorbus/visorbus 0x4063ea9d visorchannel_signalqueue_slots_avail +EXPORT_SYMBOL_GPL drivers/staging/unisys/visorbus/visorbus 0x4e4bfbe5 visorchannel_signalremove +EXPORT_SYMBOL_GPL drivers/staging/unisys/visorbus/visorbus 0x5e533597 visor_periodic_work_nextperiod +EXPORT_SYMBOL_GPL drivers/staging/unisys/visorbus/visorbus 0x60aaf74b visorchannel_uuid_id +EXPORT_SYMBOL_GPL drivers/staging/unisys/visorbus/visorbus 0x6d35d8a5 visorbus_clear_channel +EXPORT_SYMBOL_GPL drivers/staging/unisys/visorbus/visorbus 0x720775df visorchannel_set_clientpartition +EXPORT_SYMBOL_GPL drivers/staging/unisys/visorbus/visorbus 0x7948d062 visorchannel_get_header +EXPORT_SYMBOL_GPL drivers/staging/unisys/visorbus/visorbus 0x7a4ec5c5 visor_periodic_work_stop +EXPORT_SYMBOL_GPL drivers/staging/unisys/visorbus/visorbus 0x85b49e2d visorchannel_get_uuid +EXPORT_SYMBOL_GPL drivers/staging/unisys/visorbus/visorbus 0x865e5ab6 visor_periodic_work_destroy +EXPORT_SYMBOL_GPL drivers/staging/unisys/visorbus/visorbus 0x87faaeb6 visorbus_disable_channel_interrupts +EXPORT_SYMBOL_GPL drivers/staging/unisys/visorbus/visorbus 0x96401fe5 visor_periodic_work_create +EXPORT_SYMBOL_GPL drivers/staging/unisys/visorbus/visorbus 0xa428b832 visorchannel_create +EXPORT_SYMBOL_GPL drivers/staging/unisys/visorbus/visorbus 0xac7771ac visorchannel_signalinsert +EXPORT_SYMBOL_GPL drivers/staging/unisys/visorbus/visorbus 0xae9128e9 visorchannel_create_with_lock +EXPORT_SYMBOL_GPL drivers/staging/unisys/visorbus/visorbus 0xb4aab617 visorchannel_write +EXPORT_SYMBOL_GPL drivers/staging/unisys/visorbus/visorbus 0xb8b79365 visorbus_read_channel +EXPORT_SYMBOL_GPL drivers/staging/unisys/visorbus/visorbus 0xca18358d visorchannel_id +EXPORT_SYMBOL_GPL drivers/staging/unisys/visorbus/visorbus 0xcc89f91f visorchannel_destroy +EXPORT_SYMBOL_GPL drivers/staging/unisys/visorbus/visorbus 0xd50a1ee0 visorchannel_debug +EXPORT_SYMBOL_GPL drivers/staging/unisys/visorbus/visorbus 0xd7a9d7e7 visorbus_registerdevnode +EXPORT_SYMBOL_GPL drivers/staging/unisys/visorbus/visorbus 0xdf6cc3ca visorchipset_register_busdev +EXPORT_SYMBOL_GPL drivers/staging/unisys/visorbus/visorbus 0xe3b5efe1 visorchannel_get_physaddr +EXPORT_SYMBOL_GPL drivers/staging/unisys/visorbus/visorbus 0xebc569a9 visorbus_unregister_visor_driver +EXPORT_SYMBOL_GPL drivers/staging/unisys/visorbus/visorbus 0xed313c21 visorchannel_read +EXPORT_SYMBOL_GPL drivers/staging/unisys/visorbus/visorbus 0xf990f627 visorchannel_get_nbytes +EXPORT_SYMBOL_GPL drivers/staging/unisys/visorbus/visorbus 0xf9e972da visorbus_write_channel +EXPORT_SYMBOL_GPL drivers/thermal/int340x_thermal/int340x_thermal_zone 0x74005721 int340x_thermal_zone_add +EXPORT_SYMBOL_GPL drivers/thermal/int340x_thermal/int340x_thermal_zone 0xf8551926 int340x_thermal_zone_remove +EXPORT_SYMBOL_GPL drivers/thermal/intel_soc_dts_iosf 0x3fddd40c intel_soc_dts_iosf_init +EXPORT_SYMBOL_GPL drivers/thermal/intel_soc_dts_iosf 0x57255852 intel_soc_dts_iosf_exit +EXPORT_SYMBOL_GPL drivers/thermal/intel_soc_dts_iosf 0x5d68da2e intel_soc_dts_iosf_interrupt_handler +EXPORT_SYMBOL_GPL drivers/thermal/intel_soc_dts_iosf 0xaea09ed8 intel_soc_dts_iosf_add_read_only_critical_trip +EXPORT_SYMBOL_GPL drivers/tty/n_tracesink 0x585ebaac n_tracesink_datadrain +EXPORT_SYMBOL_GPL drivers/uio/uio 0x36ff04dd uio_event_notify +EXPORT_SYMBOL_GPL drivers/uio/uio 0x8152da03 uio_unregister_device +EXPORT_SYMBOL_GPL drivers/uio/uio 0xc2dc098b __uio_register_device +EXPORT_SYMBOL_GPL drivers/usb/atm/usbatm 0x0142d204 usbatm_usb_disconnect +EXPORT_SYMBOL_GPL drivers/usb/atm/usbatm 0x801db700 usbatm_usb_probe +EXPORT_SYMBOL_GPL drivers/usb/chipidea/ci_hdrc 0x219b4618 ci_hdrc_add_device +EXPORT_SYMBOL_GPL drivers/usb/chipidea/ci_hdrc 0x649b7f02 ci_hdrc_remove_device +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0x02f514b7 ulpi_register_driver +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0x18eaf18b ulpi_unregister_driver +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0x1a7758df ulpi_unregister_interface +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0x5a4a0098 ulpi_write +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0x5c2ecab9 ulpi_register_interface +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0xf2a0b5d3 ulpi_read +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x0573cfe4 gether_set_dev_addr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x07515c8a gether_disconnect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x08f87e1e gether_set_gadget +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x1682bb32 gether_set_host_addr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x24da29cb gether_get_ifname +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x6e4d8267 gether_setup_name +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x8878cfa6 gether_cleanup +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x94e7aeb9 gether_get_host_addr_u8 +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x9c785c89 gether_get_qmult +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xa024062d gether_get_dev_addr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xb4293b92 gether_register_netdev +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xbb239f71 gether_set_qmult +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xeddffe58 gether_get_host_addr_cdc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xeed93a1c gether_connect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xf6cbdf24 gether_get_host_addr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xfbe77aa1 gether_setup_name_default +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0x33bfdca2 gserial_alloc_line +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0x63d302d2 gserial_connect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0x84ea891a gserial_disconnect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0x89263781 gs_free_req +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0xb6652875 gserial_free_line +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0xf9e5ceeb gs_alloc_req +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_fs 0x3bbaaddf ffs_single_dev +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_fs 0x8d5aee0b ffs_name_dev +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_fs 0xeec501b3 ffs_lock +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x0a5230df fsg_common_set_nluns +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 0x15dc2b5f 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 0x1b1cc3af store_cdrom_address +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 0x277664a2 fsg_store_nofua +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 0x2d10b6a7 fsg_common_create_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 0x423845e4 fsg_ss_bulk_in_comp_desc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x51707c29 fsg_common_run_thread +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 0x63bdacd6 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 0x6ba7469d fsg_show_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 0x8b782190 fsg_show_file +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x956555dc fsg_show_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 0x99023bfc fsg_common_put +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x99bf819a fsg_show_ro +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 0x9dc025a5 fsg_common_free_luns +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x9e9c72b8 fsg_show_removable +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xa46e6443 fsg_common_get +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 0xa7e8071e fsg_lun_open +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xa8dc138d fsg_store_removable +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xa9a9497e fsg_store_ro +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 0xc36c29aa fsg_store_cdrom +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xc849d9d6 fsg_common_set_cdev +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xd3ae3b65 fsg_common_create_luns +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xd468f882 fsg_common_set_ops +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xe4d1591e fsg_config_from_params +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xef7043c2 fsg_common_remove_lun +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 0xf6cb77cd fsg_lun_fsync_sub +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x1bbf6a59 rndis_add_hdr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x1d73528d rndis_register +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x1fb9d87c rndis_deregister +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x342a5506 rndis_signal_connect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x366efdb8 rndis_borrow_net +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x48cfecfd rndis_signal_disconnect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x4dc20877 rndis_set_param_medium +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x53c055fe rndis_set_host_mac +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x7092933e rndis_msg_parser +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x756c0838 rndis_set_param_vendor +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xaec33e36 rndis_free_response +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xb5d9fd20 rndis_rm_hdr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xc692198d rndis_set_param_dev +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xcf70cc34 rndis_get_next_response +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xedadbe6b rndis_uninit +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x047294ae usb_string_id +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x070b1e5e usb_composite_setup_continue +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x0b322529 usb_assign_descriptors +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x13a7d7ab usb_add_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x199920f1 usb_get_function_instance +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x1a7d229f usb_string_ids_tab +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x1f9ae0d6 usb_composite_probe +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x2a9cc470 usb_ep_autoconfig +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x2e09263f usb_copy_descriptors +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x34db37ce usb_function_unregister +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x3dcd9141 usb_free_all_descriptors +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x446b75d4 usb_interface_id +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x50c91498 usb_composite_overwrite_options +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x51d05007 usb_put_function_instance +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x56a067d9 usb_function_register +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x65921acc usb_function_activate +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x94d7075a usb_gadget_get_string +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x9575f5cb config_ep_by_speed +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xa073382d alloc_ep_req +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xb0247fa1 usb_get_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xb0a7f9ec usb_gstrings_attach +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xb241ec12 usb_add_config_only +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xb3838f21 usb_add_config +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xb6160434 usb_string_ids_n +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xbc154e77 usb_function_deactivate +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xc4d6f143 usb_ep_autoconfig_ss +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xc59d2ffd usb_ep_autoconfig_reset +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xcf046630 usb_remove_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xd2ea2134 usb_descriptor_fillbuf +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xd8c3b4b9 usb_put_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xe09cf047 usb_composite_unregister +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xf474a207 usb_gadget_config_buf +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xfb669620 unregister_gadget_item +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x219a0749 usb_add_gadget_udc +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x2aab6f65 usb_gadget_map_request +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x2c018474 usb_gadget_unmap_request +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x352cf494 usb_gadget_giveback_request +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x7a03bfe2 usb_add_gadget_udc_release +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x984407aa usb_gadget_probe_driver +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x9a0ed2e7 usb_gadget_udc_reset +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x9ba0fc87 usb_udc_attach_driver +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0xaec49e21 usb_udc_vbus_handler +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0xc42fd1be usb_gadget_set_state +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0xcc798fa7 usb_del_gadget_udc +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0xfa89e0d4 usb_gadget_unregister_driver +EXPORT_SYMBOL_GPL drivers/usb/misc/ezusb 0x9f9f9bf6 ezusb_fx1_set_reset +EXPORT_SYMBOL_GPL drivers/usb/misc/ezusb 0xa704243a ezusb_fx1_ihex_firmware_download +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x0fabc055 ftdi_elan_gone_away +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x3ce29c9d usb_ftdi_elan_read_pcimem +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x40be717a usb_ftdi_elan_edset_single +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x611f1c7f usb_ftdi_elan_edset_flush +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x698fa72e usb_ftdi_elan_edset_output +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x6e2afe88 usb_ftdi_elan_write_pcimem +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x7837d88b usb_ftdi_elan_edset_empty +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xe2327d9f usb_ftdi_elan_edset_setup +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xe4f249b2 usb_ftdi_elan_edset_input +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0x0892ae1a musb_writew +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0x33fe79c3 musb_interrupt +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0x56d31820 musb_writel +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0x72234dd6 musb_readw +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0x96919667 musb_readl +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0xac5f3d70 musb_readb +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0xcb32cb36 musb_writeb +EXPORT_SYMBOL_GPL drivers/usb/phy/phy-isp1301 0xc8b8c410 isp1301_get_client +EXPORT_SYMBOL_GPL drivers/usb/serial/usb_wwan 0xf22899c2 usb_wwan_port_probe +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x12b62e77 usb_serial_generic_tiocmiwait +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x1395e299 usb_serial_handle_dcd_change +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x2ece314d usb_serial_generic_write_start +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x38afac53 usb_serial_generic_unthrottle +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x409722ec usb_serial_register_drivers +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x49a60bf4 usb_serial_generic_submit_read_urbs +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x4a7a0968 usb_serial_generic_throttle +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x556437a2 usb_serial_generic_read_bulk_callback +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x78b0f9a0 usb_serial_generic_write_bulk_callback +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x8295c6a1 usb_serial_generic_chars_in_buffer +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xaa7af823 usb_serial_handle_break +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xb36af1b7 usb_serial_deregister_drivers +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xbb369270 usb_serial_generic_write +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xbc0d067e usb_serial_generic_resume +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xbcc8e7e7 usb_serial_generic_get_icount +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xc2bc21b2 usb_serial_generic_process_read_urb +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xc5cf0910 usb_serial_generic_open +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xd941692b usb_serial_generic_close +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xe5ffdb83 usb_serial_handle_sysrq_char +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xeebc81a4 usb_serial_port_softint +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xf381a046 usb_serial_generic_wait_until_sent +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x09d3b0d7 usb_stor_disconnect +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x16a607e9 usb_stor_ctrl_transfer +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x1bc3edc2 usb_stor_sense_invalidCDB +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x28303142 usb_stor_Bulk_transport +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x2c4d1b2b usb_stor_probe2 +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x2f39cb2b usb_stor_host_template_init +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x682d51c8 usb_stor_suspend +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x6ce16a8b usb_stor_CB_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x70db46d0 usb_stor_bulk_transfer_buf +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x74a9a65c usb_stor_resume +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x899f18c7 usb_stor_pre_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x96ce1ecc usb_stor_probe1 +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x9a501296 usb_stor_post_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x9bacc46a usb_stor_bulk_transfer_sg +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xa3770172 usb_stor_CB_transport +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xb1a88258 usb_stor_access_xfer_buf +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xb65736d8 usb_stor_reset_resume +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xcea023da fill_inquiry_response +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xd008a1c8 usb_stor_transparent_scsi_command +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xd37a2feb usb_stor_control_msg +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xd3b3c692 usb_stor_bulk_srb +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xd3fb7bc9 usb_stor_Bulk_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xdd4f3a21 usb_stor_set_xfer_buf +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xf86ee37f usb_stor_adjust_quirks +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xf98dde7b usb_stor_clear_halt +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x24925108 usbip_start_eh +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x51f24a5d usbip_pack_pdu +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x554a5040 usbip_recv +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x6196a5cf dev_attr_usbip_debug +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x78b72f44 usbip_debug_flag +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x89c920a5 usbip_dump_urb +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x92f5098f usbip_pad_iso +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x951277d2 usbip_recv_iso +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x98e444a6 usbip_event_happened +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xa2c5ae40 usbip_alloc_iso_desc_pdu +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xb64a963c usbip_recv_xbuff +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xc588968d usbip_event_add +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xd02753dc usbip_header_correct_endian +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xde2a7a07 usbip_stop_eh +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xe1ea0586 usbip_dump_header +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x03321466 rpipe_clear_feature_stalled +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x0bd816f0 wa_process_errored_transfers_run +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x122f15ac wa_urb_enqueue_run +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x4c81becc __wa_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x54540288 wa_urb_dequeue +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x7742e56e rpipe_ep_disable +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x7b4626da wa_dti_start +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xaf05a006 wa_urb_enqueue +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xcb55ad58 rpipe_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xd488f32e wa_create +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x00fa761b wusbhc_handle_dn +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x0365d688 wusbhc_rh_control +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x067a599f wusbhc_b_create +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x0bb6bf5e wusb_cluster_id_get +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x1b988203 wusbhc_b_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x304a6796 wusbhc_rh_status_data +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x5dc9c3e1 wusbhc_chid_set +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x67e92827 wusbhc_rh_start_port_reset +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x6f03d05c wusbhc_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x7f0b7631 wusb_dev_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x820f6145 wusbhc_giveback_urb +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x8786222b wusbhc_mmcie_rm +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xb162a2e2 wusbhc_mmcie_set +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xb725d128 wusb_cluster_id_put +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xc28ccd1a wusbhc_create +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xc732bb43 wusbhc_reset_all +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xf770a6b4 wusbd +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xfd888451 __wusb_dev_get_by_usb_dev +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xfe2e17d7 wusb_et_name +EXPORT_SYMBOL_GPL drivers/uwb/i1480/dfu/i1480-dfu-usb 0x391ca44e i1480_cmd +EXPORT_SYMBOL_GPL drivers/uwb/i1480/dfu/i1480-dfu-usb 0x5f9791e4 i1480_rceb_check +EXPORT_SYMBOL_GPL drivers/uwb/i1480/dfu/i1480-dfu-usb 0xdd294049 i1480_fw_upload +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x2da567bd umc_device_create +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x641b9747 umc_controller_reset +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x7e276738 __umc_driver_register +EXPORT_SYMBOL_GPL drivers/uwb/umc 0xc59402c9 umc_device_register +EXPORT_SYMBOL_GPL drivers/uwb/umc 0xd67022a6 umc_bus_type +EXPORT_SYMBOL_GPL drivers/uwb/umc 0xd6d2d7a3 umc_match_pci_id +EXPORT_SYMBOL_GPL drivers/uwb/umc 0xe713d24d umc_device_unregister +EXPORT_SYMBOL_GPL drivers/uwb/umc 0xea7348e3 umc_driver_unregister +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x0d78016e __uwb_addr_print +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x0fc02440 uwb_est_unregister +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x187c8ba2 uwb_rc_vcmd +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x1e85cc68 uwb_dev_try_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x221ecd46 uwb_rc_cmd_async +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x27be472e uwb_dev_for_each +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x2c248ccf uwb_rc_neh_error +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x3805d175 uwb_rsv_destroy +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x455cbd3d uwb_rsv_create +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x4d57ae3c uwb_rsv_type_str +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x53a61039 uwb_est_find_size +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x5cd0837a uwb_rsv_modify +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x5dbe26db uwb_rc_add +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x6309dfaa uwb_radio_stop +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x6406699f uwb_notifs_deregister +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x76b98dd8 uwb_notifs_register +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x7a09f0dc uwb_rc_put +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x7b8d2746 uwb_rc_reset_all +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x816b9e92 uwb_est_register +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x837db786 __uwb_rc_try_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x866f5f88 uwb_rc_dev_addr_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x89721c89 uwb_rc_alloc +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x8d20b9bd uwb_radio_start +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x8d94f804 uwb_rsv_accept +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x9540eb5d uwb_rc_post_reset +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x96e77297 uwb_rsv_get_usable_mas +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x98413234 uwb_rsv_state_str +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x9962fd31 uwb_rsv_establish +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xab107e90 uwb_rc_neh_grok +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xac97316b uwb_ie_next +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xb42fccdc uwb_rc_mac_addr_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xc172eb56 uwb_rc_pre_reset +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xc290eeac uwb_rc_rm +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xc96894c1 uwb_pal_init +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xcae4d2cd uwb_pal_register +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xce087789 uwb_rc_ie_rm +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xd41662db uwb_rc_ie_add +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xd73b12db uwb_rc_get_by_dev +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xdb493881 uwb_pal_unregister +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xdf61bf6f uwb_rsv_terminate +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xf0a414f5 uwb_rc_cmd +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xf4c8a63f uwb_rc_get_by_grandpa +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xf65679b8 uwb_rc_init +EXPORT_SYMBOL_GPL drivers/uwb/whci 0x52e6c8f7 whci_wait_for +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x231114bd vfio_unregister_iommu_driver +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x3567743b vfio_external_user_iommu_id +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 0x9d33d1ba vfio_register_iommu_driver +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0xa24d9e5c vfio_group_get_external_user +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0xaa26876a vfio_device_get_from_dev +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0xb4bfcefe vfio_add_group_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 0xcffd6fb7 vfio_del_group_dev +EXPORT_SYMBOL_GPL drivers/vfio/vfio_virqfd 0x046c48e0 vfio_virqfd_enable +EXPORT_SYMBOL_GPL drivers/vfio/vfio_virqfd 0x538c5135 vfio_virqfd_disable +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x0a5f9a4c vhost_log_access_ok +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x12aba44c vhost_dev_set_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x13eda9ee vhost_dev_init +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x1a2b5ec8 vhost_signal +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x269f7a09 vhost_dev_reset_owner_prepare +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x27cd2e51 vhost_dev_ioctl +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x305d9f24 vhost_dev_check_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x35a14e89 vhost_init_used +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x36d40e74 vhost_dev_stop +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x3fb935e4 vhost_add_used_and_signal +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x4a9d283f vhost_poll_stop +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x4cb96f77 vhost_work_init +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x4e4cba6f vhost_log_write +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x546d7329 vhost_work_flush +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x56bc4f77 vhost_get_vq_desc +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x5d284247 vhost_work_queue +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x61694f79 vhost_dev_has_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x673de910 vhost_enable_notify +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x7c8db821 vhost_vq_access_ok +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x86abceaf vhost_discard_vq_desc +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x96ec2f62 vhost_poll_init +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x986e0b3a vhost_vring_ioctl +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xb1abbb5d vhost_add_used +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xbcf26131 vhost_add_used_and_signal_n +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xcff45390 vhost_poll_flush +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xd0a700f4 vhost_add_used_n +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xd7386b6a vhost_disable_notify +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xdaa7dda5 vhost_poll_start +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xe2b582df vhost_dev_cleanup +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xe55d4045 vhost_dev_reset_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xe9cd0028 vhost_poll_queue +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 0x47b107c2 ili9320_suspend +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x4cd6c822 ili9320_resume +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x76318a6e ili9320_remove +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x77dfe106 ili9320_write_regs +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0xa76dd2ea ili9320_probe_spi +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0xc4e9b082 ili9320_shutdown +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0xce11c25c ili9320_write +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x10e6f4a4 auok190x_send_cmdargs +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x213d0296 auok190x_send_cmdargs_pixels_nowait +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x710b261e auok190x_send_cmdargs_pixels +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x849b60f6 auok190x_send_command +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x91e09a2f auok190x_send_command_nowait +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x982f1b56 auok190x_send_cmdargs_nowait +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0xb4e44827 auok190x_common_remove +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0xbbee2f6b auok190x_read_cmdargs +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0xd5905ef0 auok190x_pm +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0xfcdc433a auok190x_common_probe +EXPORT_SYMBOL_GPL drivers/video/fbdev/core/fb_ddc 0xbde0aaca fb_ddc_read +EXPORT_SYMBOL_GPL drivers/video/fbdev/core/fb_sys_fops 0x70c9bcd1 fb_sys_write +EXPORT_SYMBOL_GPL drivers/video/fbdev/core/fb_sys_fops 0xcb3b620b fb_sys_read +EXPORT_SYMBOL_GPL drivers/video/fbdev/sis/sisfb 0x0f157108 sis_malloc_new +EXPORT_SYMBOL_GPL drivers/video/fbdev/sis/sisfb 0xba698d93 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 0x22a7af24 viafb_dma_copy_out_sg +EXPORT_SYMBOL_GPL drivers/video/fbdev/via/viafb 0x292da7a2 viafb_irq_enable +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 0x5f7bbd30 viafb_find_i2c_adapter +EXPORT_SYMBOL_GPL drivers/video/fbdev/via/viafb 0x79e6190a 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 0xfff2dfd2 viafb_gpio_lookup +EXPORT_SYMBOL_GPL drivers/w1/wire 0x055423d2 w1_write_8 +EXPORT_SYMBOL_GPL drivers/w1/wire 0x075b91b4 w1_read_block +EXPORT_SYMBOL_GPL drivers/w1/wire 0x31d13e88 w1_touch_block +EXPORT_SYMBOL_GPL drivers/w1/wire 0x32272b3d w1_write_block +EXPORT_SYMBOL_GPL drivers/w1/wire 0x7c2f2afb w1_calc_crc8 +EXPORT_SYMBOL_GPL drivers/w1/wire 0x8abe2dad w1_reset_resume_command +EXPORT_SYMBOL_GPL drivers/w1/wire 0xc7314e96 w1_read_8 +EXPORT_SYMBOL_GPL drivers/w1/wire 0xd99982bc w1_reset_bus +EXPORT_SYMBOL_GPL drivers/w1/wire 0xf2988163 w1_reset_select_slave +EXPORT_SYMBOL_GPL drivers/w1/wire 0xf6ccc4bc w1_next_pullup +EXPORT_SYMBOL_GPL drivers/xen/xen-privcmd 0xaa0b075c xen_privcmd_fops +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x29043a53 dlm_posix_lock +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x2c9dced3 dlm_posix_unlock +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x4453bd8a dlm_posix_get +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x9321df95 dlm_lock +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xc6dc8c2f dlm_new_lockspace +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xcf9f3328 dlm_release_lockspace +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xdc583c08 dlm_unlock +EXPORT_SYMBOL_GPL fs/fscache/fscache 0x092cf98e fscache_object_sleep_till_congested +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x31793ee6 lockd_up +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x451ec88f nlmsvc_unlock_all_by_sb +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x4f30e8d9 nlmclnt_init +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x5724e3f5 nlmsvc_ops +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x577fa615 nlmclnt_done +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x687af146 lockd_down +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x6fa7222a nlmclnt_proc +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x77e35ccc nlmsvc_unlock_all_by_ip +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0012046d nfs_file_release +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x003e2766 nfs_revalidate_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x036d96a7 nfs_pageio_reset_write_mds +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x03b3fdcb nfs_rmdir +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x09e8976c nfs_access_set_mask +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0b6bfb66 put_nfs_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0f1416aa nfs_setattr_update_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x100efb56 nfs_clear_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1030a3bd nfs_probe_fsinfo +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x10bec985 nfs_flock +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1309c0a2 nfs_kill_super +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x17c33a74 nfs_force_lookup_revalidate +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1d4f0673 nfs_mknod +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1df530c1 alloc_nfs_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1e33f8d3 nfs_file_flush +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x22bbd911 register_nfs_version +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x26884ff7 nfs_alloc_fhandle +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x27dd9113 nfs_getattr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2a3efeaa nfs_sync_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2c329bb3 nfs_free_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2e7a7c2f nfs_sops +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2ebca205 nfs_rename +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x31bcd371 nfs_pageio_init +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x32937a8e nfs_retry_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x36cf058a nfs_fs_mount_common +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3707ed4a nfs_set_sb_security +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x37136352 nfs_alloc_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x399705e0 nfs_sb_deactive +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x39be098d nfs_mark_client_ready +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x39e05ac3 nfs_idmap_cache_timeout +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3adf14d8 nfs_show_options +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3ca31f35 nfs_net_id +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3f2690f2 nfs_check_flags +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3f5aea1a nfs_init_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4093741f nfs_instantiate +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x41156f52 nfs_commit_free +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x42f2c81f nfs4_client_id_uniquifier +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4704a5be nfs_init_server_rpcclient +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x48d8f7d4 nfs4_label_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4c2ced49 nfs_wait_client_init_complete +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4cb9e001 recover_lost_locks +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4d80667e nfs_file_write +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4fe8c10f nfs_pgio_data_destroy +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x515ad79b nfs_fhget +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 0x5a0fd667 nfs_pgio_header_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5a103938 nfs_wb_all +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5e1d863a nfs_sockaddr_match_ipaddr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5e34447c nfs_lock +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6056996e nfs_file_set_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x60917870 nfs_get_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6162e052 nfs_put_lock_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x628ca736 nfs_free_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x640bd2a3 nfs_clone_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x66895ff4 nfs_server_remove_lists +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x69410984 nfs4_dentry_operations +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6b31c5b6 nfs_write_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6c35a6e1 nfs_link +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6e2c219d nfs_file_fsync_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6eb6e991 nfs_atomic_open +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6f6d0d6f nfs_show_devname +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x75f10b6b nfs_generic_pg_test +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7763a910 nfs_put_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x77970feb nfs_file_splice_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x78ad70f1 nfs_post_op_update_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x78d3b79b nfs_fscache_open_file +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7b3ccf39 nfs_submount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7b7266dd nfs_pageio_init_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7c9722ba nfs_dreq_bytes_left +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7d7d5b7c nfs_pageio_init_write +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7e9146f2 nfs_writeback_update_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7f49d31c nfs_fill_super +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x844b91d9 nfs_show_path +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x848733f6 nfs_file_operations +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x86222a11 nfs_commitdata_release +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 0x92ff5751 nfs_init_cinfo +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x94d64685 __tracepoint_nfs_fsync_exit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x95295f65 nfs_request_add_commit_list +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x95c5e728 nfs_setattr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x97619c68 nfs_may_open +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9cecf3be nfs_destroy_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9ebba17b nfs_pageio_resend +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa603c2ec nfs_symlink +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa664d827 nfs_zap_acl_cache +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa6c865ee nfs_wait_bit_killable +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa8d2d1ce nfs_callback_tcpport +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa8e9e1ae send_implementation_id +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xaa10bd55 nfs_close_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xaa22bc56 nfs_inode_attach_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xaa3e64fd nfs_invalidate_atime +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xaa9ca3b8 nfs_server_insert_lists +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xac90755d __tracepoint_nfs_fsync_enter +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xace3a18d nfs_request_add_commit_list_locked +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb409f3f2 nfs_sb_active +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb41bda84 nfs_fs_type +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb5910fb7 nfs_create +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb5d15592 nfs_generic_pgio +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb606e716 nfs_fattr_init +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbc6d766c get_nfs_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbea2bcca nfs_create_rpc_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbf20340d nfs_access_zap_cache +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc2c712d7 nfs_refresh_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc4ff1e9f nfs_auth_info_match +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc50d7ff0 nfs_fs_mount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc597f4eb nfs_do_submount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc5ef47d5 nfs_init_timeout_values +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc6237757 nfs_clone_sb_security +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc7369cd9 nfs_commitdata_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xca20bfbd nfs_mkdir +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xca2e3365 nfs_statfs +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xcb26dc2b nfs_path +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xcbe3a5ed nfs_dentry_operations +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xcd236f12 nfs_alloc_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xcec93c6e nfs_try_mount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd2513081 _nfs_display_fhandle_hash +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd277150b nfs_umount_begin +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd340dd49 nfs_show_stats +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd5e80fb3 nfs_init_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd674ee3a nfs_create_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd718b560 nfs_setsecurity +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd9a1a48a nfs_initiate_pgio +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdae9b5d7 nfs4_disable_idmapping +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdb8eb1f0 nfs_file_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdbc3e7ed nfs_drop_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdc0009d0 nfs_remount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe06007d9 nfs_file_mmap +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe4fe4e2d nfs_file_llseek +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe59e43c6 nfs_permission +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe7f61354 nfs_pgheader_init +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe92c510d nfs_direct_set_resched_writes +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xebced21a nfs4_fs_type +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xec8a4d7f nfs_server_copy_userdata +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xed76689a nfs_pageio_reset_read_mds +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf2a39e61 nfs_lookup +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf38a4d03 nfs_alloc_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf3e856cd nfs_request_remove_commit_list +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf93d1c7f nfs_post_op_update_inode_force_wcc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf975714b unregister_nfs_version +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf9eaa39a nfs_pgio_header_free +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfa794e14 nfs_initiate_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfa8e1ef1 nfs_unlink +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfb7ee006 nfs_alloc_fattr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfbae5471 nfs_pgio_current_mirror +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfc619abd _nfs_display_fhandle +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfc873854 nfs_access_add_cache +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xffcd6bca nfs_get_lock_context +EXPORT_SYMBOL_GPL fs/nfs/nfsv3 0xfc274552 nfs3_set_ds_client +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x018c7096 pnfs_layoutcommit_inode +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x06c36816 __tracepoint_nfs4_pnfs_write +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x06fbb41d nfs4_put_deviceid_node +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x10c28256 pnfs_ld_write_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x149dd821 pnfs_generic_recover_commit_reqs +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x16cfe1fc nfs4_init_deviceid_node +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x170f3ed6 nfs41_maxgetdevinfo_overhead +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x1732e8bc pnfs_generic_pg_test +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x24e39e0e pnfs_put_lseg_locked +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x2c8d2045 nfs41_sequence_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x3dfe6fe3 __tracepoint_nfs4_pnfs_read +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x4183df7f nfs4_schedule_session_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x442fcfcf nfs4_schedule_stateid_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x471de0a9 __tracepoint_nfs4_pnfs_commit_ds +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x4bb9d4d6 nfs4_sequence_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x4f82266d pnfs_read_resend_pnfs +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x50d5dc00 nfs4_find_get_deviceid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x54e62706 nfs4_pnfs_ds_add +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x57384824 pnfs_generic_pg_init_write +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x57e7db53 nfs4_pnfs_ds_connect +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x5e7bc393 pnfs_set_lo_fail +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x60625833 nfs4_mark_deviceid_unavailable +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x6085edbd nfs_map_string_to_numeric +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x60fb4144 pnfs_put_lseg +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x69d3558d pnfs_generic_rw_release +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x6c30ea43 nfs4_proc_getdeviceinfo +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x6ea36f99 nfs4_schedule_lease_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x6f3d928e pnfs_generic_write_commit_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x707eef94 pnfs_generic_scan_commit_lists +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x7802d34c pnfs_generic_pg_readpages +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x7de06d1f pnfs_read_done_resend_to_mds +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x7ee661ab nfs4_find_or_create_ds_client +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x83ae6aaa nfs4_pnfs_v3_ds_connect_unload +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x83d0ec13 nfs4_pnfs_ds_put +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x903724e0 _pnfs_return_layout +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x9101bca4 nfs4_test_deviceid_unavailable +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x93ad59e5 pnfs_ld_read_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x99ff71ee nfs4_delete_deviceid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x9c8ca1f8 pnfs_nfs_generic_sync +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x9cd98509 nfs41_setup_sequence +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x9e4a972b pnfs_generic_clear_request_commit +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xa0d82dec pnfs_generic_pg_cleanup +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xab1b8593 nfs4_set_rw_stateid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xae25bd7c nfs4_decode_mp_ds_addr +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xb0c7371e pnfs_destroy_layout +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xb2b7b557 nfs40_setup_sequence +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xb2e63d51 nfs4_schedule_migration_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xb553d9f7 pnfs_generic_sync +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xb7b263ad pnfs_generic_prepare_to_resend_writes +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xb80dd7f7 pnfs_layout_mark_request_commit +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xc23a3461 pnfs_register_layoutdriver +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xd1fccaf7 pnfs_error_mark_layout_for_return +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xd558ca33 nfs4_set_ds_client +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xd764ac83 pnfs_update_layout +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xded45f84 pnfs_generic_commit_pagelist +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xe357c269 pnfs_generic_pg_writepages +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xe5f12a70 pnfs_write_done_resend_to_mds +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xe7671f51 pnfs_report_layoutstat +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xe916686a nfs_remove_bad_delegation +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xeca55429 pnfs_set_layoutcommit +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xed15fb41 nfs4_print_deviceid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xf1db639e nfs4_schedule_lease_moved_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xf999267e pnfs_generic_commit_release +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xfade9fd8 pnfs_unregister_layoutdriver +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xfe24c609 pnfs_generic_pg_init_read +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xff8c32d5 nfs4_init_ds_session +EXPORT_SYMBOL_GPL fs/nfs_common/grace 0x17ce645d locks_end_grace +EXPORT_SYMBOL_GPL fs/nfs_common/grace 0x85e4ef5c locks_start_grace +EXPORT_SYMBOL_GPL fs/nfs_common/grace 0xf5c52a9d locks_in_grace +EXPORT_SYMBOL_GPL fs/nfs_common/nfs_acl 0x0433b1bd nfsacl_decode +EXPORT_SYMBOL_GPL fs/nfs_common/nfs_acl 0x6b0a6aab nfsacl_encode +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x11736b03 __mlog_printk +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x14c5785f o2hb_unregister_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x151f40c8 o2nm_node_put +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x1b89c6ee o2hb_fill_node_map +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x1d747ce3 o2hb_check_node_heartbeating +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x36418553 o2net_send_message +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x36a28a9e 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 0x655716cd o2nm_node_get +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x818684df o2hb_setup_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x81a17396 mlog_and_bits +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x85fe0cfb o2nm_get_node_by_num +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xa1ae48e1 o2hb_check_node_heartbeating_no_sem +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xa82a8645 o2nm_this_node +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xa87bc9e7 o2nm_configured_node_map +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xad6e4e7a o2hb_register_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xae808bac o2net_register_handler +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xbaeb4700 o2hb_check_node_heartbeating_from_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xc3679d7b o2hb_get_all_regions +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xc7e36d85 o2nm_get_node_by_ip +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xd60f2c6c o2hb_check_local_node_heartbeating +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/dlm/ocfs2_dlm 0x0dba92d7 dlm_register_domain +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x36696ee7 dlmlock +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x54122b70 dlm_unregister_domain +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x6d6cf018 dlmunlock +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x782d5a72 dlm_print_one_lock +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x7a1211f8 dlm_setup_eviction_cb +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xa1bdbe76 dlm_register_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 0xfb86b96f dlm_errname +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x269d63fd ocfs2_cluster_disconnect +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x316904e1 ocfs2_dlm_unlock +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x3bcef5f3 ocfs2_dlm_lock_status +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x40718c92 ocfs2_dlm_lock +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x4226705d ocfs2_dlm_dump_lksb +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x424241c9 ocfs2_dlm_lvb +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x4d3af7fa ocfs2_cluster_hangup +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x5a3fd795 ocfs2_stack_glue_unregister +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x60f4bcef ocfs2_dlm_lvb_valid +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x9ccafa05 ocfs2_cluster_this_node +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xa06fbc10 ocfs2_cluster_connect_agnostic +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xbbc4ef97 ocfs2_stack_supports_plocks +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xbf9068ab ocfs2_cluster_connect +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xe40cffce ocfs2_stack_glue_set_max_proto_version +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xf3a5d09a ocfs2_plock +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xf4de7b31 ocfs2_stack_glue_register +EXPORT_SYMBOL_GPL kernel/torture 0x089f9876 _torture_create_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 0x4c7529bd torture_shutdown_absorb +EXPORT_SYMBOL_GPL kernel/torture 0x52665f8b torture_random +EXPORT_SYMBOL_GPL kernel/torture 0x5346b23b torture_shuffle_cleanup +EXPORT_SYMBOL_GPL kernel/torture 0x6364b2f0 stutter_wait +EXPORT_SYMBOL_GPL kernel/torture 0x679d9e50 torture_must_stop +EXPORT_SYMBOL_GPL kernel/torture 0x688e6a64 torture_cleanup_end +EXPORT_SYMBOL_GPL kernel/torture 0x6bdeda8f torture_onoff_init +EXPORT_SYMBOL_GPL kernel/torture 0x715c0155 _torture_stop_kthread +EXPORT_SYMBOL_GPL kernel/torture 0x8b0e1d2f torture_shuffle_init +EXPORT_SYMBOL_GPL kernel/torture 0xb71f1872 torture_shuffle_task_register +EXPORT_SYMBOL_GPL kernel/torture 0xc1361afc torture_onoff_cleanup +EXPORT_SYMBOL_GPL kernel/torture 0xc6527045 torture_init_begin +EXPORT_SYMBOL_GPL kernel/torture 0xc67a49d4 torture_cleanup_begin +EXPORT_SYMBOL_GPL kernel/torture 0xdbc5277a torture_shutdown_init +EXPORT_SYMBOL_GPL kernel/torture 0xe6989fd3 torture_init_end +EXPORT_SYMBOL_GPL kernel/torture 0xe9ff1468 torture_stutter_init +EXPORT_SYMBOL_GPL kernel/torture 0xf6d34fb5 torture_kthread_stopping +EXPORT_SYMBOL_GPL lib/842/842_compress 0x1ce013cf sw842_compress +EXPORT_SYMBOL_GPL lib/842/842_decompress 0x0d22f116 sw842_decompress +EXPORT_SYMBOL_GPL lib/bch 0x231d70fc encode_bch +EXPORT_SYMBOL_GPL lib/bch 0x6b770f49 decode_bch +EXPORT_SYMBOL_GPL lib/bch 0x9463ff71 init_bch +EXPORT_SYMBOL_GPL lib/bch 0xbdf512de free_bch +EXPORT_SYMBOL_GPL lib/notifier-error-inject 0x8792372d notifier_err_inject_dir +EXPORT_SYMBOL_GPL lib/notifier-error-inject 0xb861220e 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 0x201d8ea3 encode_rs8 +EXPORT_SYMBOL_GPL lib/reed_solomon/reed_solomon 0x29fa419f decode_rs8 +EXPORT_SYMBOL_GPL lib/reed_solomon/reed_solomon 0x300d7e57 free_rs +EXPORT_SYMBOL_GPL lib/reed_solomon/reed_solomon 0x6fbb3bd9 init_rs_non_canonical +EXPORT_SYMBOL_GPL lib/reed_solomon/reed_solomon 0xabda1e2e decode_rs16 +EXPORT_SYMBOL_GPL lib/reed_solomon/reed_solomon 0xb050f329 init_rs +EXPORT_SYMBOL_GPL net/6lowpan/6lowpan 0x7004dd7a lowpan_header_compress +EXPORT_SYMBOL_GPL net/6lowpan/6lowpan 0x928e4a45 lowpan_header_decompress +EXPORT_SYMBOL_GPL net/802/garp 0x3e497e3c garp_register_application +EXPORT_SYMBOL_GPL net/802/garp 0x4e45fee4 garp_unregister_application +EXPORT_SYMBOL_GPL net/802/garp 0x6da681a8 garp_request_leave +EXPORT_SYMBOL_GPL net/802/garp 0x93381e62 garp_init_applicant +EXPORT_SYMBOL_GPL net/802/garp 0xaa09b9af garp_uninit_applicant +EXPORT_SYMBOL_GPL net/802/garp 0xbc628466 garp_request_join +EXPORT_SYMBOL_GPL net/802/mrp 0x05ae8c43 mrp_request_leave +EXPORT_SYMBOL_GPL net/802/mrp 0x22c4c747 mrp_init_applicant +EXPORT_SYMBOL_GPL net/802/mrp 0x4f392a4d mrp_request_join +EXPORT_SYMBOL_GPL net/802/mrp 0xa9454728 mrp_uninit_applicant +EXPORT_SYMBOL_GPL net/802/mrp 0xb4f0cf43 mrp_unregister_application +EXPORT_SYMBOL_GPL net/802/mrp 0xf643426f mrp_register_application +EXPORT_SYMBOL_GPL net/802/stp 0x5788678b stp_proto_register +EXPORT_SYMBOL_GPL net/802/stp 0x9987a64e stp_proto_unregister +EXPORT_SYMBOL_GPL net/9p/9pnet 0x2ac9b867 p9_client_xattrwalk +EXPORT_SYMBOL_GPL net/9p/9pnet 0x4ff3b41a 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 0x6bc380b0 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 0x12eb87fd l2cap_chan_set_defaults +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x151b05db l2cap_chan_send +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x46a18272 l2cap_add_psm +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x4916a926 l2cap_chan_connect +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0xa6ddf8a1 l2cap_chan_put +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0xad19200a l2cap_chan_create +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0xea5db444 l2cap_chan_del +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0xf32ba640 bt_debugfs +EXPORT_SYMBOL_GPL net/bridge/br_netfilter 0x0cb0f8b7 br_netfilter_enable +EXPORT_SYMBOL_GPL net/bridge/bridge 0x0758ad2d br_handle_frame_finish +EXPORT_SYMBOL_GPL net/bridge/bridge 0x11f844f2 br_multicast_has_querier_adjacent +EXPORT_SYMBOL_GPL net/bridge/bridge 0x6071ba1c br_dev_queue_push_xmit +EXPORT_SYMBOL_GPL net/bridge/bridge 0x64344fdb br_multicast_has_querier_anywhere +EXPORT_SYMBOL_GPL net/bridge/bridge 0x8bb3a031 br_forward_finish +EXPORT_SYMBOL_GPL net/bridge/bridge 0x8ee81042 br_multicast_list_adjacent +EXPORT_SYMBOL_GPL net/bridge/bridge 0xd1d58017 nf_br_ops +EXPORT_SYMBOL_GPL net/bridge/bridge 0xd3bc40a5 br_deliver +EXPORT_SYMBOL_GPL net/bridge/netfilter/nf_tables_bridge 0x141b2059 nft_bridge_ip6hdr_validate +EXPORT_SYMBOL_GPL net/bridge/netfilter/nf_tables_bridge 0x37adf466 nft_bridge_iphdr_validate +EXPORT_SYMBOL_GPL net/dccp/dccp 0x0340b0e2 dccp_send_sync +EXPORT_SYMBOL_GPL net/dccp/dccp 0x19502c25 dccp_sendmsg +EXPORT_SYMBOL_GPL net/dccp/dccp 0x1d99d49a dccp_timestamp +EXPORT_SYMBOL_GPL net/dccp/dccp 0x23672cd0 dccp_hashinfo +EXPORT_SYMBOL_GPL net/dccp/dccp 0x35781de1 dccp_check_req +EXPORT_SYMBOL_GPL net/dccp/dccp 0x3c9b1d67 dccp_shutdown +EXPORT_SYMBOL_GPL net/dccp/dccp 0x49ba60de dccp_sync_mss +EXPORT_SYMBOL_GPL net/dccp/dccp 0x4cdd391d dccp_feat_list_purge +EXPORT_SYMBOL_GPL net/dccp/dccp 0x4e2d4d99 dccp_death_row +EXPORT_SYMBOL_GPL net/dccp/dccp 0x4ec35231 dccp_ackvec_parsed_add +EXPORT_SYMBOL_GPL net/dccp/dccp 0x56c9e152 dccp_reqsk_send_ack +EXPORT_SYMBOL_GPL net/dccp/dccp 0x59814a84 dccp_statistics +EXPORT_SYMBOL_GPL net/dccp/dccp 0x5a69f049 dccp_disconnect +EXPORT_SYMBOL_GPL net/dccp/dccp 0x658829a1 compat_dccp_getsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0x6849f073 dccp_feat_signal_nn_change +EXPORT_SYMBOL_GPL net/dccp/dccp 0x6c899787 dccp_getsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0x7571b351 dccp_init_sock +EXPORT_SYMBOL_GPL net/dccp/dccp 0x7e5e4e87 dccp_rcv_state_process +EXPORT_SYMBOL_GPL net/dccp/dccp 0x7ec62ed8 compat_dccp_setsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0x7f5c884c dccp_send_ack +EXPORT_SYMBOL_GPL net/dccp/dccp 0x86be7924 dccp_packet_name +EXPORT_SYMBOL_GPL net/dccp/dccp 0x8ad35cb1 dccp_reqsk_init +EXPORT_SYMBOL_GPL net/dccp/dccp 0x8c040130 dccp_destroy_sock +EXPORT_SYMBOL_GPL net/dccp/dccp 0x927b41e5 dccp_feat_nn_get +EXPORT_SYMBOL_GPL net/dccp/dccp 0x9598d24d dccp_ackvec_parsed_cleanup +EXPORT_SYMBOL_GPL net/dccp/dccp 0x97e7a752 dccp_poll +EXPORT_SYMBOL_GPL net/dccp/dccp 0xab6c3f03 dccp_connect +EXPORT_SYMBOL_GPL net/dccp/dccp 0xac6700d8 dccp_insert_option +EXPORT_SYMBOL_GPL net/dccp/dccp 0xacc1c870 dccp_set_state +EXPORT_SYMBOL_GPL net/dccp/dccp 0xb0536983 dccp_parse_options +EXPORT_SYMBOL_GPL net/dccp/dccp 0xb2033641 dccp_setsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0xbbd816d5 inet_dccp_listen +EXPORT_SYMBOL_GPL net/dccp/dccp 0xc3c68c8d dccp_create_openreq_child +EXPORT_SYMBOL_GPL net/dccp/dccp 0xc46327d3 dccp_child_process +EXPORT_SYMBOL_GPL net/dccp/dccp 0xcfa1a8c9 dccp_ctl_make_reset +EXPORT_SYMBOL_GPL net/dccp/dccp 0xd6de22ec dccp_rcv_established +EXPORT_SYMBOL_GPL net/dccp/dccp 0xd9f0e442 dccp_close +EXPORT_SYMBOL_GPL net/dccp/dccp 0xda4405c2 dccp_orphan_count +EXPORT_SYMBOL_GPL net/dccp/dccp 0xf377d6a9 dccp_recvmsg +EXPORT_SYMBOL_GPL net/dccp/dccp 0xf4620f7b dccp_make_response +EXPORT_SYMBOL_GPL net/dccp/dccp 0xfe40db95 dccp_done +EXPORT_SYMBOL_GPL net/dccp/dccp 0xff50373e dccp_ioctl +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x00dc41f1 dccp_v4_connect +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x3ae334f5 dccp_v4_send_check +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x3f14fbc5 dccp_v4_do_rcv +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x6d350c9b dccp_v4_request_recv_sock +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0xaf6c5337 dccp_invalid_packet +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0xd8558703 dccp_v4_conn_request +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0x4d7aef69 ieee802154_max_payload +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0x4e7c1d3b ieee802154_hdr_peek_addrs +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0x5781ad3a ieee802154_hdr_peek +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0x9bfe9740 ieee802154_hdr_pull +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0xfd2aea9a ieee802154_hdr_push +EXPORT_SYMBOL_GPL net/ipv4/geneve_core 0x5bb95886 geneve_sock_add +EXPORT_SYMBOL_GPL net/ipv4/geneve_core 0x93b2decb geneve_xmit_skb +EXPORT_SYMBOL_GPL net/ipv4/geneve_core 0xf3305290 geneve_sock_release +EXPORT_SYMBOL_GPL net/ipv4/gre 0x28b064a0 gre_add_protocol +EXPORT_SYMBOL_GPL net/ipv4/gre 0x4e13a797 gre_cisco_unregister +EXPORT_SYMBOL_GPL net/ipv4/gre 0xad0969f1 gre_del_protocol +EXPORT_SYMBOL_GPL net/ipv4/gre 0xcf699f47 gre_build_header +EXPORT_SYMBOL_GPL net/ipv4/gre 0xd261a02f gre_cisco_register +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x2b260f2b inet_diag_register +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x3272a4ed inet_diag_dump_icsk +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x3e626566 inet_diag_dump_one_icsk +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0xbc09d2ec inet_diag_bc_sk +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0xc7805d50 inet_diag_unregister +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0xcd260da4 inet_sk_diag_fill +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x008d1562 ip_tunnel_init_net +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x0a109a08 ip_tunnel_ioctl +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x11223f82 ip_tunnel_newlink +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x169b24de ip_tunnel_encap_setup +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x36a77f7d ip_tunnel_change_mtu +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x4128593d ip_tunnel_lookup +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x4835150f ip_tunnel_dellink +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x6c06d094 ip_tunnel_rcv +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x7c4281bb ip_tunnel_delete_net +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x7e389377 ip_tunnel_xmit +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x9c0056ce ip_tunnel_changelink +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xc04e1ab0 ip_tunnel_setup +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xd85b013d ip_tunnel_init +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xf9725079 ip_tunnel_uninit +EXPORT_SYMBOL_GPL net/ipv4/netfilter/arp_tables 0xcff63b1b arpt_alloc_initial_table +EXPORT_SYMBOL_GPL net/ipv4/netfilter/ip_tables 0x0a4a4edf ipt_alloc_initial_table +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_defrag_ipv4 0x6b6c3d10 nf_defrag_ipv4_enable +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_ipv4 0x72b4d9ea nf_nat_ipv4_fn +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_ipv4 0x88dcce0a nf_nat_ipv4_local_fn +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_ipv4 0x9afe8f4a nf_nat_ipv4_out +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_ipv4 0xa213b32d nf_nat_icmp_reply_translation +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_ipv4 0xe3c81c63 nf_nat_ipv4_in +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_masquerade_ipv4 0x3f5c468e nf_nat_masquerade_ipv4_unregister_notifier +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_masquerade_ipv4 0x91df1b72 nf_nat_masquerade_ipv4 +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_masquerade_ipv4 0xfedbf252 nf_nat_masquerade_ipv4_register_notifier +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_proto_gre 0x636b12c8 nf_nat_need_gre +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0x08b96cc8 nf_reject_ip_tcphdr_put +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0x0d981fd1 nf_reject_ip_tcphdr_get +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0x12b64dd6 nf_send_unreach +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0x38c62ce8 nf_send_reset +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0xeed2b75c nf_reject_iphdr_put +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_tables_ipv4 0x8fc93737 nft_af_ipv4 +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x19ce9f6a tcp_vegas_get_info +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x4340e742 tcp_vegas_pkts_acked +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x8a995fb6 tcp_vegas_state +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0xa552ae69 tcp_vegas_init +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0xd7133de5 tcp_vegas_cwnd_event +EXPORT_SYMBOL_GPL net/ipv4/udp_tunnel 0x5e95eb52 udp_tunnel_xmit_skb +EXPORT_SYMBOL_GPL net/ipv4/udp_tunnel 0x6f1c2ceb udp_tunnel_sock_release +EXPORT_SYMBOL_GPL net/ipv4/udp_tunnel 0x75b43fbf setup_udp_tunnel_sock +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x2f373323 ip6_tnl_rcv_ctl +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x5e9abc63 ip6_tnl_xmit_ctl +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x6b0c7642 ip6_tnl_dst_check +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x858e1365 ip6_tnl_dst_reset +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0xa416a219 ip6_tnl_dst_store +EXPORT_SYMBOL_GPL net/ipv6/ip6_udp_tunnel 0x46a1315e udp_sock_create6 +EXPORT_SYMBOL_GPL net/ipv6/ip6_udp_tunnel 0x54afbf37 udp_tunnel6_xmit_skb +EXPORT_SYMBOL_GPL net/ipv6/netfilter/ip6_tables 0x2a2596cb ip6t_alloc_initial_table +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_defrag_ipv6 0x6eb85693 nf_defrag_ipv6_enable +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_ipv6 0x614f3946 nf_nat_ipv6_local_fn +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_ipv6 0x89c35a57 nf_nat_ipv6_fn +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_ipv6 0xb92b6f20 nf_nat_ipv6_out +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_ipv6 0xd486a778 nf_nat_icmpv6_reply_translation +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_ipv6 0xf119cb9d nf_nat_ipv6_in +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_masquerade_ipv6 0x2293972c nf_nat_masquerade_ipv6_unregister_notifier +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_masquerade_ipv6 0x38d4401a nf_nat_masquerade_ipv6_register_notifier +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_masquerade_ipv6 0xc5ac73ba nf_nat_masquerade_ipv6 +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0x03ad57dc nf_reject_ip6_tcphdr_get +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0x13d78c84 nf_send_unreach6 +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0x4688b2e1 nf_reject_ip6_tcphdr_put +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0x64fccf4b nf_reject_ip6hdr_put +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0xd56e94ba nf_send_reset6 +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_tables_ipv6 0xd78821ce nft_af_ipv6 +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x0102b6f2 l2tp_session_free +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x0b4c1264 l2tp_session_create +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x4f528472 l2tp_tunnel_find +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x69b493ac l2tp_session_find +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x6fd86ab2 l2tp_xmit_skb +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x76dd39e5 l2tp_session_find_nth +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x87fb78c7 l2tp_tunnel_delete +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x8c5e9cf8 l2tp_session_set_header_len +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x910c0ad4 l2tp_session_find_by_ifname +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x996786fc l2tp_tunnel_create +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xafcf2125 l2tp_tunnel_closeall +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xcd76e998 l2tp_udp_encap_recv +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xd4ace107 __l2tp_session_unhash +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xe3c21231 l2tp_tunnel_find_nth +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xeab22c97 l2tp_session_queue_purge +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xff29049b l2tp_session_delete +EXPORT_SYMBOL_GPL net/l2tp/l2tp_netlink 0x31fbe1c2 l2tp_nl_register_ops +EXPORT_SYMBOL_GPL net/l2tp/l2tp_netlink 0x337f2432 l2tp_nl_unregister_ops +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x06782d53 ieee80211_vif_to_wdev +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x0d79b0aa ieee80211_gtk_rekey_notify +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x11253ba2 ieee80211_remain_on_channel_expired +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x11e1f72f ieee80211_set_key_rx_seq +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x1f216d2c ieee80211_set_key_tx_seq +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x1ffa6b49 ieee80211_ready_on_channel +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x2d05fafb ieee80211_napi_add +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x2e3a30ab wdev_to_ieee80211_vif +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x2f185235 ieee80211_resume_disconnect +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x58a151ae ieee80211_remove_key +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x663fd591 ieee80211_iterate_active_interfaces_rtnl +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x68c0a384 ieee80211_iterate_stations_atomic +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x73fc9a49 ieee80211_iter_chan_contexts_atomic +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x7f8b19a6 ieee80211_request_smps +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xb15e7525 ieee80211_iterate_interfaces +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xb32d1e26 ieee80211_ave_rssi +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xc6fd15a5 ieee80211_gtk_rekey_add +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xe4445c9b ieee80211_find_sta_by_ifaddr +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xf2eb1d5e ieee80211_iterate_active_interfaces_atomic +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x02d64f43 ip_set_put_byindex +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x108946d8 ip_set_get_byname +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x2157ab2e ip_set_put_extensions +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x397f6231 ip_set_free +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x3ea48b02 ip_set_test +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x57d299c4 ip_set_nfnl_get_byindex +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x65fd1e68 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 0x79db2202 ip_set_nfnl_put +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x7e905a19 ip_set_type_unregister +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x81fff2d1 ip_set_netmask_map +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x856ffe3c ip_set_del +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x8b4505c2 ip_set_add +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x99633e31 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 0xa2d623f3 ip_set_range_to_cidr +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xa4b6ef3b ip_set_name_byindex +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xbec18d86 ip_set_elem_len +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xc2424f67 ip_set_get_ip_port +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xcc001bd9 ip_set_extensions +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xd1eaaa44 ip_set_get_extensions +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xf3b4d4ae ip_set_alloc +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xfad4b6c0 ip_set_get_ip4_port +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0x02a9f8d0 register_ip_vs_pe +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0x25e03f28 ip_vs_conn_out_get_proto +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0x458823e2 unregister_ip_vs_pe +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0xe6f85cbc ip_vs_conn_in_get_proto +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x03116661 nf_ct_tmpl_free +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x045072cd nf_ct_port_nla_policy +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x062ef717 nf_connlabel_set +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x0666b2b8 __nf_conntrack_helper_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x067cc2b3 nf_conntrack_helper_try_module_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x074cad49 nf_ct_timeout_put_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x0c4233a9 seq_print_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x0e8b06ee nf_ct_l4proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x0ec82967 nf_ct_unexpect_related +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x1497885b nf_conntrack_locks +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x1cb58aef nf_conntrack_helper_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x200ab2ec __nf_ct_refresh_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x273587cd nf_conntrack_free +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x2813a764 nf_ct_extend_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x289c3714 nf_ct_alloc_hashtable +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x298687d7 nf_ct_delete +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x330306eb __nf_ct_kill_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x34459c82 nf_conntrack_set_hashsize +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x34542e13 nf_ct_helper_log +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x37386cac nf_conntrack_hash_rnd +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x37480339 nf_ct_l4proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x383fe1ce __nf_ct_expect_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3e3ea0a9 nf_connlabels_replace +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3f5b1415 nf_ct_port_nlattr_to_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x4255154e nf_conntrack_helper_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x45587e00 nf_ct_remove_expectations +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x4c6ee8de nf_ct_l3proto_pernet_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x50236249 nf_ct_l4proto_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x53d75cf9 nf_ct_l4proto_pernet_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x5a7b67ee nf_ct_tmpl_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x5fa1d3ba nf_conntrack_hash_check_insert +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x5fa6816a nf_ct_expect_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x603436c6 nf_conntrack_alter_reply +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x62813e5c nf_ct_port_nlattr_tuple_size +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x648e77db nf_ct_deliver_cached_events +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6573a64f nf_ct_l3proto_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x689ff39e nf_ct_helper_ext_add +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x693c3961 nf_ct_helper_hash +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6a18dc58 nf_conntrack_expect_lock +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6c8d26e3 nf_ct_expect_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6e224a7a need_conntrack +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6f94491a nf_ct_seq_offset +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x78f9b710 nf_ct_l3proto_try_module_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x7fa1614b nf_ct_invert_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x82a14c66 nf_conntrack_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x82da57d0 __nf_ct_l4proto_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x849028d9 nf_ct_unlink_expect_report +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x863e00d2 nf_ct_helper_expectfn_find_by_name +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x88f75a30 nf_ct_l3proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8a57357a nf_ct_seq_adjust +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8a9611e0 nf_ct_extend_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8a9914ac __nf_ct_try_assign_helper +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8d10bc3d __nf_conntrack_confirm +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8ffe7e89 nf_conntrack_htable_size +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x90ff6c9f nf_ct_invert_tuplepr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x9baa9ed7 nf_ct_expect_unregister_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x9e7c122b nf_conntrack_l4proto_tcp6 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x9fce847e nf_ct_helper_expectfn_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa17cf5c8 nf_ct_expect_init +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa2c88394 nf_conntrack_unregister_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa3f6582e nf_ct_helper_expectfn_find_by_symbol +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xaaf213f7 nf_ct_l4proto_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xab3d1f95 nf_ct_untracked_status_or +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xac4a70a9 nf_conntrack_l4proto_tcp4 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xad1bb027 nf_ct_free_hashtable +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb2632212 nf_ct_l4proto_pernet_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb602c57e nf_ct_l3proto_module_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb7e3080f nf_ct_expect_register_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xbc8d416a nf_ct_l3proto_register +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 0xc716f795 nf_ct_get_tuplepr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xcdd2bd3b nfnetlink_parse_nat_setup_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd1843d53 nf_conntrack_register_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd28c8885 nf_ct_seqadj_set +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd2ba9f1c nf_conntrack_l4proto_udp4 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd6a6b29f nf_ct_expect_related_report +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xdcbe3447 nf_ct_port_tuple_to_nlattr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xe07bed36 nf_ct_l3protos +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xe08cfd9e nf_conntrack_l4proto_udp6 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xe0d0ae73 nf_ct_tcp_seqadj_set +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xe1ef7cdb nf_ct_l3proto_pernet_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xe402618d nf_conntrack_in +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xe42a8071 nf_connlabel_match +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xeb2bf909 nf_ct_get_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf38bcdf3 nf_conntrack_max +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf3b0abd8 nf_conntrack_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf671c83d nf_ct_seqadj_init +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf68db274 nf_ct_timeout_find_get_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf7af382c nf_conntrack_tuple_taken +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf87fa2b7 nf_ct_expect_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf8a5a8ff nf_ct_helper_expectfn_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xfdc32374 nf_ct_iterate_cleanup +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xfde68e59 nf_conntrack_l3proto_generic +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_amanda 0xfc013585 nf_nat_amanda_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_broadcast 0xe4101d5b nf_conntrack_broadcast_help +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_ftp 0x176da516 nf_nat_ftp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x0a85249e set_h225_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x200f1fe4 nat_t120_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x47c52b80 set_ras_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x57be71cb get_h225_addr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xa0f40b45 nat_q931_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xa44e0e03 set_sig_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xb8c57bb1 nat_callforwarding_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xbd3fa1aa nat_rtp_rtcp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xdd6223a2 set_h245_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xf085dd9d nat_h245_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_irc 0x7a0793b3 nf_nat_irc_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0x2a198699 nf_nat_pptp_hook_expectfn +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0x2b1a794c nf_nat_pptp_hook_exp_gre +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0x48cc34ed nf_nat_pptp_hook_outbound +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0xe6549362 nf_nat_pptp_hook_inbound +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_proto_gre 0x70b60cd9 nf_ct_gre_keymap_destroy +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_proto_gre 0xfe7a78c2 nf_ct_gre_keymap_add +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x04555ada ct_sip_parse_request +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x546a6407 ct_sip_parse_address_param +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x7dff5355 ct_sip_parse_numerical_param +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xa25421dc ct_sip_parse_header_uri +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xb0f15749 nf_nat_sip_hooks +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xbd60af67 ct_sip_get_sdp_header +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xc602c392 ct_sip_get_header +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_snmp 0x8e0f34bf nf_nat_snmp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_tftp 0xbd98946d nf_nat_tftp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_log_common 0x4b239473 nf_log_dump_packet_common +EXPORT_SYMBOL_GPL net/netfilter/nf_log_common 0xb7ad00ef nf_log_dump_udp_header +EXPORT_SYMBOL_GPL net/netfilter/nf_log_common 0xd501a748 nf_log_dump_tcp_header +EXPORT_SYMBOL_GPL net/netfilter/nf_log_common 0xe9d4928a nf_log_dump_sk_uid_gid +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x0d9bae4b nf_nat_l4proto_nlattr_to_range +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x131f636c nf_nat_l4proto_in_range +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x1f2ca670 __nf_nat_l4proto_find +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x4dbe6908 nf_nat_l3proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x59314a09 nf_ct_nat_ext_add +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x6a2687ac nf_nat_alloc_null_binding +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x91183a8e nf_nat_l4proto_unique_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xb0b22146 nf_nat_l4proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xb555c3f6 nf_nat_packet +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xdfcee944 nf_nat_l4proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xe4116851 nf_nat_l3proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_nat_redirect 0x5ec73fd8 nf_nat_redirect_ipv6 +EXPORT_SYMBOL_GPL net/netfilter/nf_nat_redirect 0xac8a72e2 nf_nat_redirect_ipv4 +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x11a006b5 synproxy_check_timestamp_cookie +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x375cc52e synproxy_parse_options +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x8841d39b synproxy_build_options +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x90298227 synproxy_init_timestamp_cookie +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0xb42e336a synproxy_options_size +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0xc1b0301f synproxy_tstamp_adjust +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0xef7db50c synproxy_net_id +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x1a589f74 nft_dump_register +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x1b594ade nft_unregister_chain_type +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x1e6b75a3 nft_parse_register +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x319a4fcd nft_register_set +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x4ea05ce1 nft_unregister_expr +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x55c4c03f nft_unregister_afinfo +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x5778f241 nft_chain_validate_hooks +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x5d5654b5 nft_unregister_basechain +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x68088bee nft_data_uninit +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x6cfe27ce nft_set_elem_destroy +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x993619c4 nft_do_chain +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x9e0290f0 nft_register_basechain +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xa2284604 nft_set_gc_batch_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xad5201fa nft_register_afinfo +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xbe6ec5aa nft_register_expr +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xbf63bb61 nft_set_gc_batch_release +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xcf03e214 nft_chain_validate_dependency +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xcfba7732 nft_validate_register_store +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xd4eac125 nft_register_chain_type +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xdc05c271 nft_data_init +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xdfc23e85 nft_unregister_set +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xe09dada2 nft_set_ext_types +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xeaac4782 nft_data_dump +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xed33c632 nft_validate_register_load +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x0149bf51 nfnetlink_alloc_skb +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x146ce23d nfnetlink_subsys_register +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x2868214e nfnetlink_has_listeners +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x5ce3b588 nfnl_lock +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x82a50ac9 nfnetlink_subsys_unregister +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x91e068c5 nfnetlink_unicast +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xc561f484 nfnetlink_send +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xdb065657 nfnl_unlock +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xff8a2489 nfnetlink_set_err +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0x0c071ca0 nfnl_acct_update +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0x21f6bba6 nfnl_acct_find_get +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0x573b602a nfnl_acct_overquota +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0xbecf5d14 nfnl_acct_put +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_log 0xf03b0e63 nfulnl_log_packet +EXPORT_SYMBOL_GPL net/netfilter/nft_masq 0x27bf0e52 nft_masq_dump +EXPORT_SYMBOL_GPL net/netfilter/nft_masq 0x659509e3 nft_masq_validate +EXPORT_SYMBOL_GPL net/netfilter/nft_masq 0x9d9284a0 nft_masq_init +EXPORT_SYMBOL_GPL net/netfilter/nft_masq 0xe3b8ea21 nft_masq_policy +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0x289dcd8a nft_meta_set_init +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0x424e5412 nft_meta_get_init +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0x8c172b93 nft_meta_set_eval +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0x8c617562 nft_meta_set_dump +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0xb80e8358 nft_meta_policy +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0xbac2ecf4 nft_meta_get_eval +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0xc7d30766 nft_meta_get_dump +EXPORT_SYMBOL_GPL net/netfilter/nft_redir 0x212f0557 nft_redir_init +EXPORT_SYMBOL_GPL net/netfilter/nft_redir 0xa5be1e1e nft_redir_policy +EXPORT_SYMBOL_GPL net/netfilter/nft_redir 0xc68f5b43 nft_redir_dump +EXPORT_SYMBOL_GPL net/netfilter/nft_redir 0xdcb16ec9 nft_redir_validate +EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0xa2db3c7f nft_reject_policy +EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0xbc39f4ac nft_reject_dump +EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0xddf15889 nft_reject_icmp_code +EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0xe45449d1 nft_reject_init +EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0xe8cdab4e nft_reject_icmpv6_code +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x161d1417 xt_compat_unlock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x1eb5a42e xt_compat_target_from_user +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x1ee99a31 xt_request_find_match +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x218a7372 xt_check_match +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x2190a1b0 xt_replace_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x2ff0588c xt_register_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x40728a63 xt_find_revision +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x506e0d2e xt_proto_fini +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x51d93caf xt_table_unlock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x5f82f1f7 xt_compat_flush_offsets +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x691a6d69 xt_compat_calc_jump +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x696c2559 xt_hook_link +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x72394c27 xt_compat_match_offset +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x75e524bf xt_compat_match_to_user +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x807d2b2c xt_recseq +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xa5909543 xt_unregister_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xaf56bc8e xt_hook_unlink +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xb8d41abe xt_compat_target_offset +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xbedd0b7a xt_request_find_target +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xc746a72d xt_check_target +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xc7746be4 xt_compat_match_from_user +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xceac666e xt_compat_target_to_user +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xdb160631 xt_proto_init +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xe0b4971b xt_compat_lock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xec24fd82 xt_compat_add_offset +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xfe6a6e8d xt_find_table_lock +EXPORT_SYMBOL_GPL net/netfilter/xt_RATEEST 0x4c32c169 xt_rateest_lookup +EXPORT_SYMBOL_GPL net/netfilter/xt_RATEEST 0xb7459345 xt_rateest_put +EXPORT_SYMBOL_GPL net/nfc/nci/nci 0xa9d902c8 nci_spi_read +EXPORT_SYMBOL_GPL net/nfc/nci/nci 0xc0a6bc59 nci_spi_send +EXPORT_SYMBOL_GPL net/nfc/nci/nci 0xdf7701d9 nci_spi_allocate_spi +EXPORT_SYMBOL_GPL net/nfc/nci/nci_uart 0x8045b58c nci_uart_unregister +EXPORT_SYMBOL_GPL net/nfc/nci/nci_uart 0xa8295dc7 nci_uart_set_config +EXPORT_SYMBOL_GPL net/nfc/nci/nci_uart 0xea245eed nci_uart_register +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x09aed3c7 ovs_vport_alloc +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x0dfc2499 ovs_vport_deferred_free +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x2f70055e ovs_vport_ops_register +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x37a5f266 ovs_vport_receive +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x3c250e06 ovs_tunnel_get_egress_info +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x470aa0ec ovs_vport_free +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0xd1514298 ovs_vport_ops_unregister +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0xda83411d ovs_net_id +EXPORT_SYMBOL_GPL net/rds/rds 0x00a467af rds_wq +EXPORT_SYMBOL_GPL net/rds/rds 0x01f62c62 rds_rdma_send_complete +EXPORT_SYMBOL_GPL net/rds/rds 0x0aed1def rds_info_deregister_func +EXPORT_SYMBOL_GPL net/rds/rds 0x0fbb02ba rds_conn_create +EXPORT_SYMBOL_GPL net/rds/rds 0x203c8802 rds_inc_put +EXPORT_SYMBOL_GPL net/rds/rds 0x22d2b106 rds_message_put +EXPORT_SYMBOL_GPL net/rds/rds 0x2c5c5514 rds_message_add_rdma_dest_extension +EXPORT_SYMBOL_GPL net/rds/rds 0x30ce57f9 rds_atomic_send_complete +EXPORT_SYMBOL_GPL net/rds/rds 0x3101936e rds_message_add_extension +EXPORT_SYMBOL_GPL net/rds/rds 0x3b4fc0fc rds_page_remainder_alloc +EXPORT_SYMBOL_GPL net/rds/rds 0x3ba0a2cf rds_send_get_message +EXPORT_SYMBOL_GPL net/rds/rds 0x50cbe7b3 rds_stats +EXPORT_SYMBOL_GPL net/rds/rds 0x57188e52 rds_page_copy_user +EXPORT_SYMBOL_GPL net/rds/rds 0x599414d7 rds_inc_init +EXPORT_SYMBOL_GPL net/rds/rds 0x5b18d832 rds_send_drop_acked +EXPORT_SYMBOL_GPL net/rds/rds 0x64ea658c rds_conn_create_outgoing +EXPORT_SYMBOL_GPL net/rds/rds 0x713a0e95 rds_message_unmapped +EXPORT_SYMBOL_GPL net/rds/rds 0x73aac73d rds_message_populate_header +EXPORT_SYMBOL_GPL net/rds/rds 0x7445d853 rds_conn_drop +EXPORT_SYMBOL_GPL net/rds/rds 0x7991d3e4 rds_message_addref +EXPORT_SYMBOL_GPL net/rds/rds 0x7bc62829 rds_stats_info_copy +EXPORT_SYMBOL_GPL net/rds/rds 0xb80dea1f rds_conn_destroy +EXPORT_SYMBOL_GPL net/rds/rds 0xc13440c1 rds_for_each_conn_info +EXPORT_SYMBOL_GPL net/rds/rds 0xc2dab779 rds_info_copy +EXPORT_SYMBOL_GPL net/rds/rds 0xde673448 rds_cong_map_updated +EXPORT_SYMBOL_GPL net/rds/rds 0xe185f496 rds_trans_register +EXPORT_SYMBOL_GPL net/rds/rds 0xe5380b82 rds_conn_connect_if_down +EXPORT_SYMBOL_GPL net/rds/rds 0xe9970c2c rds_info_register_func +EXPORT_SYMBOL_GPL net/rds/rds 0xf9504c20 rds_recv_incoming +EXPORT_SYMBOL_GPL net/rds/rds 0xfe0d9a33 rds_connect_complete +EXPORT_SYMBOL_GPL net/rds/rds 0xfeece188 rds_trans_unregister +EXPORT_SYMBOL_GPL net/rxrpc/af-rxrpc 0x6fedaf2b rxrpc_register_security +EXPORT_SYMBOL_GPL net/rxrpc/af-rxrpc 0xe4e0d093 rxrpc_unregister_security +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x00c52ef5 g_make_token_header +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x5a2480b9 gss_mech_register +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x8d1a827e svcauth_gss_register_pseudoflavor +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xb5dea7ef g_token_size +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xc5dae091 gss_mech_unregister +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xca1a4a1a svcauth_gss_flavor +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xf8b2ff6e g_verify_token_header +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x001da62d rpc_find_or_alloc_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x017f6b07 rpc_put_task_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x023cca5b svc_proc_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x026ae134 rpc_release_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0277b275 rpc_wake_up_queued_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x045834e9 rpcauth_get_pseudoflavor +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x05098ea2 svc_max_payload +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x050d6d0c rpc_protocol +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 0x081a6408 rpc_setbufsize +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x097027cf csum_partial_copy_to_xdr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0b30fb83 rpc_malloc +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0bc4a632 xprt_adjust_cwnd +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0bfa2267 rpc_init_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0cee2254 xprt_wake_pending_tasks +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0f668ba9 svc_auth_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0f71a3a7 xdr_buf_trim +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0fb3da8f svc_create_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x118065d4 rpc_sleep_on_priority +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x12b40f14 sunrpc_init_cache_detail +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1657bcae svc_reserve +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1bddeedd rpc_remove_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1ca0a87a rpc_queue_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1d395f26 xdr_skb_read_bits +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1d703a6b xdr_encode_array2 +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1e5c578e rpc_pipe_generic_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1f242331 auth_domain_find +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1f2a9970 rpc_ntop +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2118c32b svc_addsock +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x22726866 xprt_set_retrans_timeout_def +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2297cc0a rpc_unlink +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x23baddc1 rpc_force_rebind +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x240eed46 rpc_task_reset_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x258aea1c rpc_clone_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x266a30fe xprt_reserve_xprt_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2742c0fb svc_xprt_copy_addrs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2748d85f svc_xprt_put +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x28c4fa9c xprt_destroy_backchannel +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2919b156 xdr_decode_string_inplace +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2ac82aad svc_alien_sock +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2bc7485a xdr_init_decode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2c47b6a0 rpc_rmdir +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2e6c7a2c xdr_buf_subsegment +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2eec63c9 xdr_encode_netobj +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2fdd212a rpc_call_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x31a89d59 rpc_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x31b08fce cache_check +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x32852a5a svc_xprt_names +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x34064dc1 rpc_lookup_cred_nonblock +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x34a4da1c bc_svc_process +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x36f8530e rpc_call_null +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x37f333f3 rpc_max_payload +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x387e1639 rpc_pipefs_notifier_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x39947290 xdr_encode_word +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3a212bbc cache_purge +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3a4f0878 svc_seq_show +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3b32e894 svc_unreg_xprt_class +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3c112fc6 svc_reg_xprt_class +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3c1892ef svc_prepare_thread +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3c46572e rpc_destroy_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3cc71199 svc_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3dba46e7 rpcauth_lookup_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3dd0b7a8 rpc_restart_call_prepare +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3eefa7b3 rpc_shutdown_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3fa40a91 auth_domain_put +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x411fc0d1 svc_drop +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x41b0211c rpc_get_sb_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x41e186d5 xprt_free +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x428d3449 svc_authenticate +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x43fa580d xprt_wait_for_buffer_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x471195ef xprt_setup_backchannel +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x47d08872 rpcauth_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x47e402a6 xdr_init_decode_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x48599789 rpc_alloc_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x491848c5 rpc_call_sync +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4956e66a xdr_set_scratch_buffer +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4edf0fac xdr_process_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x51b56f69 svc_print_addr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x52d3694d rpcauth_key_timeout_notify +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x52ffe10f rpc_clone_client_set_auth +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x53445f68 nlm_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5361c415 xprt_disconnect_done +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5364d414 rpcauth_init_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x54749c62 xprt_release_xprt_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x558a4adf auth_domain_lookup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x576b1e5f xprt_alloc_slot +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x58fc3084 sunrpc_cache_lookup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5b20ac2f svc_process +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5c5105bf rpc_lookup_machine_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5c9efd37 rpc_peeraddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5d21f7e2 rpc_add_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x600827b7 rpc_put_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x60f9f381 rpc_run_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x65d012e9 rpc_localaddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x69c866ef rpc_bind_new_program +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6c0c7bf0 rpc_init_pipe_dir_head +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6c2badcf xprt_release_rqst_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x716b54b1 xdr_terminate_string +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x71fa908a cache_flush +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x73cc6d51 xdr_decode_array2 +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x748aa0b9 sunrpc_destroy_cache_detail +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7795161c svcauth_unix_purge +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7b552eb3 rpcauth_cred_key_to_expire +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7ce5de80 xdr_partial_copy_from_skb +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7d1f0fd3 gssd_running +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7dc2ea4b xprt_complete_rqst +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7de53067 rpc_init_rtt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7dea4f2c xprt_register_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7f15ae77 xdr_init_encode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7ffd173e svc_set_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x80951b28 rpcauth_get_gssinfo +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x811f5ab3 rpc_delay +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8173d159 rpc_d_lookup_sb +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x81765e60 svc_rpcb_cleanup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x840c7f7d xdr_write_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x84cd7eac rpc_clnt_swap_activate +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x85696a54 rpc_restart_call +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x85c62021 cache_destroy_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x86c2ba7a svc_set_num_threads +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8a2e1c07 xdr_buf_from_iov +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8a8a8bc4 __rpc_wait_for_completion_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8e19e62b xdr_reserve_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8e381ca3 rpc_init_priority_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8e9ecc19 xprt_unregister_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8edb6325 svc_xprt_enqueue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8ffce37b svc_recv +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x91441bc3 xprt_lookup_rqst +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x91d1caa6 svc_xprt_init +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x93f1ab96 rpc_proc_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x945f8ce4 svc_exit_thread +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x95d63c44 rpc_lookup_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x96bae6e9 xdr_enter_page +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x97f2d4c8 rpc_net_ns +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x98b75d64 rpcauth_list_flavors +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9981a01e rpc_get_timeout +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9b8c86aa svc_wake_up +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9c8b270f rpc_call_start +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa099ffd7 rpc_destroy_pipe_data +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa10e6ad9 svc_shutdown_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa14cca27 xprt_release_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa1d4014a svc_bind +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa2d31163 rpc_proc_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa2d8d305 sunrpc_cache_pipe_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa5cb7583 svcauth_unix_set_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xaa5d16cc rpc_sleep_on +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xac797416 rpc_pton +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xae63e424 rpc_wake_up_first +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xaf5bf6ef nfs_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xafe54bcf rpcauth_generic_bind_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb15a59ca _copy_from_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb3df258b rpcauth_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb51a3724 rpc_pipefs_notifier_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb5fb00a5 xdr_read_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb73fb3df rpc_killall_tasks +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb759a3a9 rpcauth_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb96ecddc rpc_create_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb984d2d0 xprt_reserve_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb9ff9cb3 rpc_wake_up_status +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbb5115e3 xdr_inline_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbb7287a9 rpcauth_stringify_acceptor +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbc9e3e4e xprt_alloc +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbf9d1b96 nfsd_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc0c200db rpc_switch_client_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc12435e3 rpc_calc_rto +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc1f400a0 svc_create_pooled +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc3880471 xdr_decode_netobj +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc5518dfb rpc_clnt_swap_deactivate +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc87c18ea sunrpc_cache_unregister_pipefs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc8e96dea qword_addhex +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcb51d96c rpc_peeraddr2str +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcbbc301d sunrpc_cache_update +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xccd3ade5 cache_register_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcce0d66a rpc_count_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcee467f3 xprt_load_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd0c5e0bf rpc_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd0ef6428 rpc_wake_up_next +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd12d0da7 sunrpc_cache_register_pipefs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd14c8eb9 rpc_wake_up +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd3cdff2c rpcb_getport_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd512ce66 svc_auth_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd5d80856 svc_rpcb_setup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd611fe06 svc_destroy +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd815d0e7 rpc_mkpipe_dentry +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdbbeab50 xprt_lock_and_alloc_slot +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdcb26450 xdr_buf_read_netobj +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdf737e4d svc_close_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe0cb9c20 rpc_count_iostats_metrics +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe1ac2bb8 sunrpc_net_id +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe2e29c29 xdr_stream_pos +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe4678138 svc_find_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe5919cb1 xdr_encode_opaque +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe70a2954 rpcauth_init_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe8d0bd26 rpc_put_sb_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe92365df svc_proc_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe97f4ce5 qword_get +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe98302f4 xdr_shift_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe9f18d12 rpc_print_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xed0a793b xdr_commit_encode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xedcf6be4 qword_add +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xee2fad06 xdr_decode_word +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xeeacab69 rpc_update_rtt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xef3c398e cache_unregister_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf2210150 rpcauth_lookupcred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf29bbc6f rpc_exit +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf3490b18 rpcauth_destroy_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf4f216a6 write_bytes_to_xdr_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf69e08f8 cache_create_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf749c76c put_rpccred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf7971e60 xprt_set_retrans_timeout_rtt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf80d4c02 rpc_free_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf9d1164c rpc_free +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfaa4416a read_bytes_from_xdr_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfb6a80b6 rpc_uaddr2sockaddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfb983a06 unix_domain_find +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfc61d6bc rpc_init_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfd86e7e6 xdr_inline_decode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfe6ecbb7 xprt_write_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xff05a89b svc_sock_update_bufs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xff5e7644 rpc_mkpipe_data +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x09f5d8b2 vsock_find_connected_socket +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x0c79d5ef vm_sockets_get_local_cid +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x14514615 vsock_remove_pending +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x15c0c57c vsock_addr_init +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x2663cb64 vsock_addr_equals_addr +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x2ebc700d vsock_for_each_connected_socket +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x3fa6b613 vsock_remove_connected +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x469a5549 vsock_stream_has_space +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x57077e58 __vsock_create +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x59d943c8 vsock_addr_cast +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x751ff010 vsock_addr_unbind +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x79c2ccc2 vsock_add_pending +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x7f730c80 vsock_core_exit +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x970b77bc vsock_pending_work +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x98ecc064 vsock_find_bound_socket +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xa148300b vsock_insert_connected +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xb7318a61 vsock_enqueue_accept +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xbd0f699d vsock_addr_bound +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xc60682e1 __vsock_core_init +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xc66aac84 vsock_stream_has_data +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xd95ac116 vsock_addr_validate +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xf07c0f4e vsock_remove_bound +EXPORT_SYMBOL_GPL net/wimax/wimax 0x73b02efa wimax_report_rfkill_sw +EXPORT_SYMBOL_GPL net/wimax/wimax 0x8043d47e wimax_msg_len +EXPORT_SYMBOL_GPL net/wimax/wimax 0x8142fbc2 wimax_msg_data_len +EXPORT_SYMBOL_GPL net/wimax/wimax 0x82eaf8cf wimax_msg_send +EXPORT_SYMBOL_GPL net/wimax/wimax 0x92f6114a wimax_state_change +EXPORT_SYMBOL_GPL net/wimax/wimax 0xa14c1d7f wimax_dev_add +EXPORT_SYMBOL_GPL net/wimax/wimax 0xa2e823eb wimax_msg +EXPORT_SYMBOL_GPL net/wimax/wimax 0xaaaec7d4 wimax_dev_init +EXPORT_SYMBOL_GPL net/wimax/wimax 0xb0dcb8f5 wimax_report_rfkill_hw +EXPORT_SYMBOL_GPL net/wimax/wimax 0xb934c5ad wimax_state_get +EXPORT_SYMBOL_GPL net/wimax/wimax 0xbe508205 wimax_msg_alloc +EXPORT_SYMBOL_GPL net/wimax/wimax 0xca0b3f7b wimax_msg_data +EXPORT_SYMBOL_GPL net/wimax/wimax 0xcac004a6 wimax_dev_rm +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x0c12c01c cfg80211_wext_giwrange +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x3b7dde3d cfg80211_wext_siwscan +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x3e3ad140 cfg80211_wext_giwretry +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x55c3fe81 cfg80211_wext_siwrts +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x865f8a43 cfg80211_vendor_cmd_reply +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x8b8c913c cfg80211_wext_giwname +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x9eaeb937 cfg80211_wext_giwfrag +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xa4fd92c1 cfg80211_wext_giwrts +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xaf1edf38 cfg80211_wext_siwmode +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xb2da51ef cfg80211_shutdown_all_interfaces +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xdd0713aa cfg80211_wext_giwscan +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xe883c6cb cfg80211_wext_siwfrag +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xff46bfb5 cfg80211_wext_giwmode +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 0x3bf471d7 xfrm_calg_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x47b34e60 xfrm_ealg_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x60b73277 xfrm_aead_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x7a8ca627 xfrm_count_pfkey_enc_supported +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x834ba96d xfrm_aalg_get_byid +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xa6e66685 xfrm_aalg_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xaa762fe2 xfrm_aalg_get_byidx +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xad1b60ed xfrm_calg_get_byid +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xdbfc35c8 xfrm_ealg_get_byidx +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xdfea3a6d xfrm_ealg_get_byid +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0x1e63dd38 ipcomp_destroy +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0x3db3367b ipcomp_input +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0x497f2011 ipcomp_init_state +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0xc903f1a6 ipcomp_output +EXPORT_SYMBOL_GPL sound/core/seq/snd-seq-device 0x09d1f22b snd_seq_driver_unregister +EXPORT_SYMBOL_GPL sound/core/seq/snd-seq-device 0x955a609e __snd_seq_driver_register +EXPORT_SYMBOL_GPL sound/core/snd 0x353bed56 snd_ctl_sync_vmaster +EXPORT_SYMBOL_GPL sound/core/snd 0x7aa2fc06 snd_ctl_add_vmaster_hook +EXPORT_SYMBOL_GPL sound/core/snd 0x818345c5 snd_card_add_dev_attr +EXPORT_SYMBOL_GPL sound/core/snd 0xb00a1a89 snd_device_initialize +EXPORT_SYMBOL_GPL sound/core/snd 0xb3fb560e snd_device_disconnect +EXPORT_SYMBOL_GPL sound/core/snd 0xc623c808 snd_ctl_activate_id +EXPORT_SYMBOL_GPL sound/core/snd 0xdba63dad snd_ctl_get_preferred_subdevice +EXPORT_SYMBOL_GPL sound/core/snd-compress 0xa2711bc6 snd_compress_register +EXPORT_SYMBOL_GPL sound/core/snd-compress 0xa751ea37 snd_compress_new +EXPORT_SYMBOL_GPL sound/core/snd-compress 0xd68f1ea8 snd_compress_deregister +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 0x187726f2 snd_pcm_stream_lock_irq +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x254b0806 snd_pcm_stop_xrun +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x40521227 snd_pcm_stream_unlock +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x60534c1f snd_pcm_stream_unlock_irqrestore +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x9a53ada7 _snd_pcm_stream_lock_irqsave +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x9bfa3df0 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 0xd79de72d snd_pcm_lib_default_mmap +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0xda7e71bd snd_pcm_add_chmap_ctls +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0xe73a9bb2 snd_pcm_stream_unlock_irq +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x0dbc3178 snd_hwparams_to_dma_slave_config +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x20e6edc5 snd_dmaengine_pcm_close +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x21c2774c snd_dmaengine_pcm_request_channel +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x29c5b7d4 snd_dmaengine_pcm_pointer_no_residue +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x6e79cbed snd_dmaengine_pcm_close_release_chan +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x7cde4b22 snd_dmaengine_pcm_pointer +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x88d34f02 snd_dmaengine_pcm_trigger +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0xc0522d26 snd_dmaengine_pcm_get_chan +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0xc3cad933 snd_dmaengine_pcm_open_request_chan +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0xfe43a964 snd_dmaengine_pcm_set_config_from_dai_data +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0xff8060ed snd_dmaengine_pcm_open +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x0499d2da snd_hdac_set_codec_wakeup +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x12018447 snd_hdac_bus_update_rirb +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x13570337 snd_hdac_dsp_trigger +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x13a28a3c snd_hdac_regmap_update_raw +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x14df68ec snd_hdac_bus_exit +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x17ee4eec snd_hdac_device_exit +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x189e7838 snd_hdac_stream_sync_trigger +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x1a8ae97c snd_hdac_get_sub_nodes +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x1e6fb0f8 snd_hdac_is_supported_format +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x21f683c1 snd_hdac_bus_exit_link_reset +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x256d0ec1 snd_hdac_regmap_exit +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x2a427649 snd_hdac_read +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x2dcf383d snd_hdac_bus_stop_cmd_io +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x2de82448 snd_hdac_regmap_add_vendor_verb +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x3081d5a3 snd_hdac_link_power +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x3789e36d snd_hdac_bus_stop_chip +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x37bb9a1e snd_hdac_display_power +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x3b4fb290 snd_hdac_bus_queue_event +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x3e1170a5 snd_hda_bus_type +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x3fe41b49 snd_hdac_i915_exit +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x4296e696 snd_hdac_bus_get_response +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x4768a89b snd_hdac_stream_reset +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x4b40b76d snd_hdac_regmap_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x4bf17102 snd_hdac_bus_free_stream_pages +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x514c037e snd_hdac_bus_handle_stream_irq +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x564fc0ea snd_hdac_get_connections +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x59435a37 _snd_hdac_read_parm +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x5958275c snd_hdac_power_up_pm +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x5c760438 snd_hdac_i915_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x5cbf3469 snd_hdac_stream_set_params +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x6dd21d4c snd_hdac_bus_add_device +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x712b82e4 snd_hdac_device_unregister +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x7471a448 snd_hdac_stream_cleanup +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x754be564 snd_hdac_regmap_write_raw +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x77591d50 snd_hdac_device_register +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x7c671082 snd_hdac_power_down +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x7fe25ece snd_hdac_i915_register_notifier +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x8382ddb1 snd_hdac_bus_send_cmd +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x8475cee8 snd_hdac_power_down_pm +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x84aa2e74 snd_hdac_regmap_read_raw +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x854349c2 snd_hdac_stream_sync +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x870028e6 snd_hdac_bus_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x8b86069c snd_hdac_power_up +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x9308f07a snd_hdac_stream_release +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x9a8e1877 snd_array_free +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x9e899ac6 snd_hdac_stream_setup_periods +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x9ff4c4f1 snd_hdac_stream_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xa79d77f3 snd_hdac_bus_remove_device +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xa96f2375 hdac_get_device_id +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xb1d03320 snd_hdac_bus_exec_verb +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xb697fcdd snd_hdac_bus_exec_verb_unlocked +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xbe7dd7dc snd_array_new +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xc1691a8e snd_hdac_stream_stop +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xc29f1013 snd_hdac_dsp_prepare +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xc381e6b7 snd_hdac_stream_setup +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xc5dd9d86 snd_hdac_exec_verb +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xc7b83262 snd_hdac_read_parm_uncached +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xca8eb8aa snd_hdac_device_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xcc7ddbf1 snd_hdac_bus_init_cmd_io +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xd379bb0d snd_hdac_refresh_widgets +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xd5215419 snd_hdac_query_supported_pcm +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xd53adc29 snd_hdac_stream_start +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xdd9a804a snd_hdac_calc_stream_format +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xe2a378bb snd_hdac_stream_clear +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xe48a0240 snd_hdac_dsp_cleanup +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xe70a861a snd_hdac_stream_timecounter_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xe78c293e snd_hdac_make_cmd +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xea934085 snd_hdac_bus_init_chip +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xef9f2538 snd_hdac_override_parm +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xf14fe186 snd_hdac_bus_enter_link_reset +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xf3dbff8f snd_hdac_stream_assign +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xf3e9bb21 snd_hdac_get_display_clk +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xf7ea7533 snd_hdac_bus_alloc_stream_pages +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x03518a5e snd_ak4113_reinit +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x0ee28ee3 snd_ak4113_check_rate_and_errors +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x1c3fd387 snd_ak4113_create +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x71f6b52c snd_ak4113_reg_write +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x77cd3418 snd_ak4113_external_rate +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x8b7a5897 snd_ak4113_build +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x012847f2 snd_hda_codec_get_pin_target +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x056cf7e4 snd_hda_codec_update_widgets +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 0x07e4fca6 __snd_hda_codec_cleanup_stream +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0a25c996 snd_hda_mixer_amp_switch_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0c0ed29f snd_hda_codec_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0cc01eb2 azx_codec_configure +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0cfae876 _snd_hda_set_pin_ctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x12f5c96b azx_stop_all_streams +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x13a44555 snd_hda_mixer_bind_ctls_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x14fc5b0f snd_hda_pick_fixup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x152dd012 snd_hda_mixer_amp_volume_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1b06a6f4 snd_hda_pin_sense +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x25a301d6 snd_hda_mixer_amp_switch_put_beep +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x295e46d9 snd_hda_jack_set_gating_jack +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x29eebb5a snd_hda_lock_devices +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2b4b6eb1 azx_bus_init +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2c294be1 snd_hda_jack_detect_enable +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x338f2278 azx_free_streams +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3471ee15 snd_hda_apply_fixup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x36343586 snd_hda_find_mixer_ctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x375cacd5 snd_hda_input_mux_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x38b1badd snd_hda_enum_helper_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x38ce402b azx_interrupt +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3ae45dd1 snd_hda_spdif_ctls_unassign +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3b06b08a snd_hda_check_amp_list_power +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3cf3e85b snd_hda_codec_setup_stream +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3dcf46ab snd_hda_codec_set_pin_target +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3eeb683b snd_hda_get_hint +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3f5e1045 snd_hda_codec_set_power_to_all +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x402566fb azx_probe_codecs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4246ff4b snd_hda_override_amp_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x43799324 snd_hda_codec_amp_stereo +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4f1849a2 snd_hda_multi_out_dig_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x561112a2 snd_hda_sequence_write +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x56698f5b snd_hda_attach_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x580aaf1e snd_hda_register_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5978eac5 snd_hda_pick_pin_fixup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5a29cc24 snd_hda_mixer_bind_tlv +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5d3f36ae snd_hda_multi_out_dig_open +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5e136410 snd_hda_multi_out_analog_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6379ed1b snd_hda_get_connections +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x68793d2d snd_hda_mixer_amp_volume_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6955fdb1 __hda_codec_driver_register +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x69ae7556 snd_hda_codec_pcm_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6f6b83e8 snd_hda_create_spdif_share_sw +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6fea7e5b snd_hda_apply_verbs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x70996aab azx_get_pos_posbuf +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x70c03a31 snd_hda_multi_out_analog_open +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x71572c64 snd_hda_codec_amp_update +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x777124a9 snd_hda_mixer_amp_switch_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7862129f snd_hda_load_patch +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7c435a3d snd_hda_codec_set_pincfg +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7de2e80f snd_hda_ctl_add +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7f25cfa8 snd_hda_mixer_bind_switch_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8148ee78 snd_hda_mixer_amp_switch_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x82126265 snd_hda_bind_vol +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8234ea7e snd_hda_create_dig_out_ctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x82a8d608 snd_hda_check_amp_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8518807f azx_get_position +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x855558a9 snd_hda_codec_load_dsp_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8564364f hda_codec_driver_unregister +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x875e9e2e __snd_hda_add_vmaster +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x87d927da snd_hda_add_nid +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x891c0579 snd_hda_mixer_bind_switch_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8931258f snd_hda_get_conn_list +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8961779c snd_hda_add_vmaster_hook +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8a2f0b98 snd_hda_codec_amp_init_stereo +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8c7f866a snd_hda_get_default_vref +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x947cc6ce snd_hda_override_conn_list +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x987e2b32 snd_hda_multi_out_dig_close +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x98c962bb snd_hda_mixer_bind_ctls_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9e40f7fc snd_hda_mixer_amp_volume_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9f7ab2a0 snd_hda_get_int_hint +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa06d6896 snd_hda_detach_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa11f98fa snd_hda_codec_eapd_power_filter +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa2827d76 snd_hda_get_jack_location +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa3a15824 snd_hda_get_bool_hint +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xaa930cd5 snd_hda_codec_get_pincfg +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xaac8e1ca snd_hda_multi_out_dig_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xafa893df snd_hda_add_new_ctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb493f8ed snd_hda_jack_tbl_get_from_tag +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb4dd34b5 snd_hda_jack_report_sync +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc04af296 hda_get_autocfg_input_label +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc1ac0047 snd_hda_add_verbs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc3f67b9f snd_hda_jack_add_kctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc58e7782 snd_hda_multi_out_analog_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc652fd69 snd_hda_get_jack_connectivity +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc7a97ff9 snd_hda_create_spdif_in_ctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc84411a3 snd_hda_set_power_save +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc85dac2e snd_hda_apply_pincfgs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc89d20a8 is_jack_detectable +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc931092c snd_hda_unlock_devices +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xcadf1c61 snd_hda_get_conn_index +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xcafb7e9f snd_hda_codec_load_dsp_trigger +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xcb301b6e snd_hda_get_jack_type +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xcc3d07be snd_hda_jack_poll_all +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xccfadcfe snd_hda_spdif_ctls_assign +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xcdee65f6 azx_get_pos_lpib +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xce1c64ae snd_hda_parse_pin_defcfg +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd0305986 snd_hda_jack_detect_state +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd085e6b4 snd_hda_mixer_amp_switch_get_beep +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd0a36a24 snd_hda_codec_new +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd293b7bd snd_hda_input_mux_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd4003c13 query_amp_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd574175f snd_hda_codec_configure +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd66b22d1 snd_hda_add_imux_item +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd6de60e0 snd_hda_codec_load_dsp_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd70e0d8b snd_hda_codec_amp_init +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd78bc489 snd_hda_enable_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd7bf0be0 snd_hda_set_vmaster_tlv +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd8634970 snd_hda_codec_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xdc0473d1 snd_hda_mixer_amp_tlv +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe118de5d snd_pcm_2_1_chmaps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe30f50c4 snd_hda_jack_detect_enable_callback +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe3530974 snd_hda_correct_pin_ctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe59d8f84 snd_hda_mixer_bind_ctls_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xea264891 azx_init_streams +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xeaa84683 snd_hda_jack_add_kctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xed6010c1 snd_hda_codec_read +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xed921a32 azx_stop_chip +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xeda3a721 snd_print_pcm_bits +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xee468359 snd_hda_bind_sw +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf100dd05 snd_hda_jack_set_dirty_all +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf157d948 snd_hda_codec_pcm_new +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf58f80b9 snd_hda_get_pin_label +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf5bf4ce1 azx_init_chip +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf7590f57 snd_hda_codec_write +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf788f6f9 snd_hda_sync_vmaster_hook +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf8b07d8f snd_hda_jack_tbl_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf8f88b17 snd_hda_jack_unsol_event +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xfce42020 snd_hda_shutup_pins +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xff232adf snd_hda_spdif_out_of_nid +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x077a0fd8 snd_hda_gen_build_controls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x224b9bbe snd_hda_parse_nid_path +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x2bfa58b9 snd_hda_gen_path_power_filter +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x3b4ec432 snd_hda_gen_update_outputs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x4591cdc6 snd_hda_activate_path +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x5ba04485 snd_hda_get_path_idx +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x5fc6c8c2 snd_hda_get_nid_path +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x68a90621 snd_hda_gen_stream_pm +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x69344d22 snd_hda_gen_fix_pin_power +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x764c8b53 snd_hda_gen_spec_init +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 0x8cf95424 snd_hda_gen_mic_autoswitch +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x9a30bf17 snd_hda_gen_add_kctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xa17702df snd_hda_gen_line_automute +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xc53d9584 snd_hda_gen_free +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xca68e371 snd_hda_add_new_path +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xcd04ba84 snd_hda_gen_hp_automute +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xd0d2c1d5 snd_hda_gen_init +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xdbe0592b snd_hda_get_path_from_idx +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xe3bfafb9 snd_hda_gen_build_pcms +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xe743fea6 snd_hda_gen_parse_auto_config +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xfd574450 snd_hda_gen_check_power_status +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs4271 0x47aacef9 cs4271_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs4271 0xe8a4c09d cs4271_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42l51 0x0accdc26 cs42l51_regmap +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42l51 0x375ad98c cs42l51_of_match +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42l51 0x6872109e cs42l51_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0x0245c4f2 cs42xx8_of_match +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0x1457618f cs42xx8_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0x68779860 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-cs42xx8 0xf83a8d2b cs42xx8_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-es8328 0x97d98feb es8328_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-es8328 0xc58e9ece es8328_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-max98090 0x7e0fe3b4 max98090_mic_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm512x 0x8334343f pcm512x_remove +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm512x 0x8a1a9ba2 pcm512x_pm_ops +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm512x 0x8fd9aa41 pcm512x_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm512x 0xe021ff6c pcm512x_regmap +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rl6231 0x70617a04 rl6231_get_clk_info +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rl6231 0x7f68b24d rl6231_pll_calc +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 0x951625b0 rt286_mic_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5640 0x27aec771 rt5640_dmic_enable +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5645 0x5314bcef rt5645_set_jack_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5645 0xc9a28055 rt5645_sel_asrc_clk_src +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5670 0x19746200 rt5670_jack_resume +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5670 0x19c74061 rt5670_jack_suspend +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5670 0x84e4b4b3 rt5670_sel_asrc_clk_src +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5670 0xe8be7542 rt5670_set_jack_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0x08e2f416 sigmadsp_reset +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0x6941d370 sigmadsp_attach +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0x9771aa88 sigmadsp_setup +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0x9b3b20c2 devm_sigmadsp_init +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0x9ed99c15 sigmadsp_restrict_params +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp-i2c 0x5158d9a1 devm_sigmadsp_init_i2c +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-ssm2602 0x900ad302 ssm2602_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-ssm2602 0xf92ee838 ssm2602_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-tpa6130a2 0xb33b1e3f tpa6130a2_stereo_enable +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-tpa6130a2 0xd8d5e7da tpa6130a2_add_controls +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-ts3a227e 0x30764a47 ts3a227e_enable_jack_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8804 0x0030b8bb wm8804_pm +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8804 0x4567068b wm8804_remove +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8804 0x4f0e4c59 wm8804_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8804 0xc589888d wm8804_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8903 0x05e5fb4f wm8903_mic_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8962 0xe17ba352 wm8962_mic_detect +EXPORT_SYMBOL_GPL sound/soc/fsl/snd-soc-fsl-asrc 0x34e2ff1f fsl_asrc_platform +EXPORT_SYMBOL_GPL sound/soc/fsl/snd-soc-fsl-asrc 0xa89af949 fsl_asrc_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/intel/atom/snd-soc-sst-mfld-platform 0x7c7e2bfc sst_unregister_dsp +EXPORT_SYMBOL_GPL sound/soc/intel/atom/snd-soc-sst-mfld-platform 0xe2e3e122 sst_register_dsp +EXPORT_SYMBOL_GPL sound/soc/intel/atom/sst/snd-intel-sst-core 0x1ba31eda sst_context_cleanup +EXPORT_SYMBOL_GPL sound/soc/intel/atom/sst/snd-intel-sst-core 0x34375b98 sst_alloc_drv_context +EXPORT_SYMBOL_GPL sound/soc/intel/atom/sst/snd-intel-sst-core 0xab14edd5 relocate_imr_addr_mrfld +EXPORT_SYMBOL_GPL sound/soc/intel/atom/sst/snd-intel-sst-core 0xac676cb1 sst_configure_runtime_pm +EXPORT_SYMBOL_GPL sound/soc/intel/atom/sst/snd-intel-sst-core 0xe3461537 intel_sst_pm +EXPORT_SYMBOL_GPL sound/soc/intel/atom/sst/snd-intel-sst-core 0xe9c8a144 sst_context_init +EXPORT_SYMBOL_GPL sound/soc/intel/baytrail/snd-soc-sst-baytrail-pcm 0x4ae8b077 sst_byt_dsp_suspend_late +EXPORT_SYMBOL_GPL sound/soc/intel/baytrail/snd-soc-sst-baytrail-pcm 0x7607dcd9 sst_byt_dsp_boot +EXPORT_SYMBOL_GPL sound/soc/intel/baytrail/snd-soc-sst-baytrail-pcm 0x7b9402f2 sst_byt_dsp_init +EXPORT_SYMBOL_GPL sound/soc/intel/baytrail/snd-soc-sst-baytrail-pcm 0xa3f51491 sst_byt_dsp_free +EXPORT_SYMBOL_GPL sound/soc/intel/baytrail/snd-soc-sst-baytrail-pcm 0xd896c691 sst_byt_dsp_wait_for_ready +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x0754ac88 sst_module_runtime_free +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x0808cf21 sst_dsp_shim_update_bits_unlocked +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x13548749 sst_mem_block_register +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x13997819 sst_dsp_shim_read64_unlocked +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x1535f2b6 sst_dsp_ipc_msg_tx +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x17d7c104 sst_dsp_get_offset +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x18ca8aae sst_dsp_dma_copyfrom +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x1b269262 sst_dsp_sleep +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x1b5e8b82 sst_shim32_read +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x23bbd599 sst_dsp_stall +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x27140a67 sst_fw_unload +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x29b776c2 sst_dsp_new +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x2b8fe52e sst_module_free +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x2f1cd092 sst_dsp_boot +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x34e2f5f8 sst_fw_free +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x3801760f sst_dsp_shim_write64 +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x3a3da13b sst_block_alloc_scratch +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x3d2325e6 sst_dsp_shim_read64 +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x499663a6 sst_module_runtime_restore +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x4a045773 sst_shim32_write +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x4bf5af62 sst_free_blocks +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x50a4f7b5 sst_fw_reload +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x536b967c sst_module_get_from_id +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x537f47ca sst_dsp_outbox_read +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x5957e18d sst_module_alloc_blocks +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x5fc51069 sst_fw_free_all +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x6383ecc8 sst_module_runtime_save +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x66005d0e sst_dsp_inbox_write +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x6d6ffe4b sst_dsp_outbox_write +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x7bf9cefa sst_memcpy_toio_32 +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x8230eb25 sst_mem_block_unregister_all +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x851012f4 sst_dsp_shim_update_bits64 +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x88f3ef5c sst_block_free_scratch +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x8df8b777 sst_dsp_dma_get_channel +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x8fc588af sst_dsp_wake +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x9cc82691 sst_dsp_shim_read_unlocked +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x9ce4774c sst_dsp_shim_write_unlocked +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xa36c5b27 sst_dsp_ipc_msg_rx +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xa4fd65b1 sst_dsp_shim_write +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xb74fb0b5 sst_dsp_dump +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xbcec5387 sst_shim32_read64 +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xc66327a4 sst_memcpy_fromio_32 +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xc85696d8 sst_fw_new +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xcaa55d3e sst_dsp_reset +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xcae3a5f8 sst_module_new +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xcb566f8d sst_dsp_mailbox_init +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xcbd70db0 sst_module_runtime_alloc_blocks +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xcf824791 sst_dsp_free +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xd2307fc9 sst_dsp_shim_read +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xd9a2c94c sst_shim32_write64 +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xda457269 sst_module_runtime_free_blocks +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xe283d2b0 sst_dsp_dma_put_channel +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xe3be0449 sst_module_free_blocks +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xe4a4c1cc sst_module_runtime_get_from_id +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xe6091a16 sst_alloc_blocks +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xe6440ff8 sst_dsp_dma_copyto +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xe7032305 sst_dsp_inbox_read +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xe7e59096 sst_dsp_shim_update_bits64_unlocked +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xea926ed2 sst_dsp_shim_update_bits +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xeec1bd02 sst_dsp_shim_write64_unlocked +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xfd278c5d sst_module_runtime_new +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-ipc 0x1e2ecdb7 sst_ipc_reply_find_msg +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-ipc 0x4c242c7e sst_ipc_tx_message_nowait +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-ipc 0x6eaf5f11 sst_ipc_drop_all +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-ipc 0x744c0a97 sst_ipc_fini +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-ipc 0xaf4ee713 sst_ipc_tx_msg_reply_complete +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-ipc 0xebe8b6f9 sst_ipc_init +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-ipc 0xfd836f95 sst_ipc_tx_message_wait +EXPORT_SYMBOL_GPL sound/soc/intel/haswell/snd-soc-sst-haswell-pcm 0xce52bb09 sst_hsw_dsp_free +EXPORT_SYMBOL_GPL sound/soc/intel/haswell/snd-soc-sst-haswell-pcm 0xd1f69f64 sst_hsw_device_set_config +EXPORT_SYMBOL_GPL sound/soc/intel/haswell/snd-soc-sst-haswell-pcm 0xd60be415 sst_hsw_dsp_init +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0007872e snd_soc_dapm_info_pin_switch +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00c2726a snd_soc_dapm_get_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x042deeec snd_soc_info_xr_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x05be7af7 snd_dmaengine_pcm_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x062da0eb snd_soc_bytes_info_ext +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x06d04830 snd_soc_dpcm_can_be_free_stop +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0b6ca4e8 snd_soc_dai_set_bclk_ratio +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0e23adc6 snd_soc_dapm_mux_update_power +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1095723e snd_soc_jack_free_gpios +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1142eb03 snd_soc_of_parse_tdm_slot +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x14db9f81 snd_soc_jack_notifier_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x16605598 snd_soc_lookup_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1783cb1e snd_soc_dai_set_fmt +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x18a51167 dapm_mark_endpoints_dirty +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1f799f04 snd_soc_jack_add_gpiods +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x209acd14 snd_soc_dai_set_pll +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x21174785 devm_snd_soc_register_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x235ccd60 snd_soc_test_bits +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2541a979 snd_soc_calc_frame_size +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x26707432 snd_soc_get_dai_substream +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2a69d701 snd_soc_put_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2bf80071 snd_soc_cnew +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2c6c3fcb snd_soc_of_parse_audio_simple_widgets +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2caeea53 snd_soc_of_get_dai_name +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2d67f49a snd_soc_set_ac97_ops +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2d8d806f snd_soc_dai_set_clkdiv +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2ed96c6a snd_soc_dapm_sync +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x305c0ddb soc_ac97_ops +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3063543a snd_soc_dapm_force_enable_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3363c10f snd_soc_dapm_disable_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x34306414 snd_soc_codec_set_pll +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x36bbabed snd_soc_bytes_get +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x38bcdde2 snd_soc_of_parse_audio_routing +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x39b89179 snd_soc_register_card +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3a48a710 snd_soc_dapm_new_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3ac48e43 snd_soc_unregister_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3df576ce snd_soc_get_volsw_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x402b475a snd_soc_add_platform_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4078ee8f snd_soc_component_write +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x43c524f7 snd_soc_dapm_enable_pin_unlocked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x446c4521 snd_soc_platform_read +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x452a1e7d snd_soc_dapm_add_routes +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x46350e4b snd_soc_dapm_sync_unlocked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4a4f5635 snd_soc_get_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4c354c16 snd_soc_get_volsw_range +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4d0f168b snd_soc_new_ac97_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4da263bd snd_soc_put_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4ee9eb41 snd_soc_unregister_component +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x506ddf78 snd_soc_dpcm_fe_can_update +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5080050a snd_soc_component_read +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x51399d46 snd_soc_dapm_weak_routes +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x516a0a83 snd_soc_set_runtime_hwparams +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x52c04fdb snd_soc_dapm_put_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5382b13b snd_dmaengine_pcm_unregister +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x545d998f snd_soc_info_volsw_range +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5521eaca snd_soc_card_jack_new +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x58878c2d snd_soc_dapm_mixer_update_power +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5910db51 snd_soc_platform_trigger +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5a753f8d snd_soc_dapm_disable_pin_unlocked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5c119b2b devm_snd_soc_register_component +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5d60f45e snd_soc_add_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5dd74ef6 snd_soc_dapm_get_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5e4c64f1 snd_soc_component_init_regmap +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5f0976b3 snd_soc_of_get_dai_link_codecs +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5f4c0832 snd_soc_dpcm_be_get_state +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x63183d26 snd_soc_update_bits +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x652b3dd4 snd_soc_info_volsw_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x65940c52 snd_soc_dapm_enable_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x65f8a732 snd_soc_of_parse_daifmt +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6b548ce4 snd_soc_dapm_put_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6b9d2c1e snd_soc_dapm_del_routes +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6ec6364e snd_soc_dapm_get_pin_status +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x71d43937 snd_soc_add_component_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x765efdb3 snd_soc_component_update_bits_async +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x77089f2f snd_soc_dapm_force_bias_level +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7d65e242 snd_soc_bytes_put +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7de3fc59 snd_soc_put_strobe +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7e606130 snd_soc_calc_bclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7ef6106f snd_soc_dpcm_be_set_state +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7ff12ad3 snd_soc_jack_notifier_unregister +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x80cd52d4 snd_soc_put_xr_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8316682b dapm_clock_event +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8720675c snd_soc_get_xr_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x88637925 snd_soc_jack_add_gpios +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8d12494f snd_soc_dapm_get_pin_switch +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8f004004 snd_soc_add_dai_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9011f922 snd_soc_get_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x93ce7b59 snd_soc_dpcm_get_substream +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9491f74d snd_soc_set_ac97_ops_of_reset +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9553cc4d snd_soc_unregister_card +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x980f1a49 snd_soc_dapm_new_widgets +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x993e7a65 snd_soc_resume +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9aea5006 snd_soc_dapm_put_pin_switch +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9e871a7e snd_soc_get_strobe +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9fea799a snd_soc_dapm_nc_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa402a8ac snd_soc_dpcm_can_be_params +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa4b24261 snd_soc_component_exit_regmap +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa559583a snd_soc_debugfs_root +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa677defb snd_soc_free_ac97_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa6e562a1 snd_soc_info_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa74d8f5a dapm_kcontrol_get_value +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa776db7e snd_soc_codec_set_sysclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa95205c2 snd_soc_jack_get_type +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xac348b5a snd_soc_dapm_nc_pin_unlocked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xac39959e snd_soc_component_update_bits +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xacc365db snd_soc_add_codec_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xad43af84 snd_soc_dai_set_channel_map +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xae596082 snd_soc_put_volsw_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb44139d5 snd_soc_add_card_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb7f63269 dapm_regulator_event +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb944c49b devm_snd_dmaengine_pcm_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb9cb9780 snd_soc_pm_ops +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb9f51f1e snd_soc_dai_set_tdm_slot +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xbbd72f71 snd_soc_register_component +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xbc1a1419 snd_soc_info_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc176026a snd_soc_component_test_bits +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc2fd4288 snd_soc_dapm_ignore_suspend +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc342c302 snd_soc_of_parse_card_name +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc8269f94 snd_soc_params_to_frame_size +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc90f7c9b snd_soc_suspend +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xcdd4bf1f snd_soc_jack_report +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xce2bad9b snd_soc_dai_set_tristate +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xceb235de snd_soc_get_pcm_runtime +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xceeca345 snd_soc_runtime_set_dai_fmt +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xcf28345b snd_soc_dai_digital_mute +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd1405133 snd_soc_bytes_info +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd14de214 snd_soc_remove_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd333fbad snd_dmaengine_pcm_prepare_slave_config +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd38edb4a devm_snd_soc_register_card +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd60574e1 snd_soc_unregister_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd6ff209f snd_soc_jack_add_zones +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd816cfef snd_soc_jack_add_pins +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd8c616f2 snd_soc_write +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd9583a0d snd_soc_register_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xdda1d187 snd_soc_platform_write +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xdea2216a snd_soc_limit_volume +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xdf27722b snd_soc_dapm_force_enable_pin_unlocked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe485b00f snd_soc_card_get_kcontrol +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe9406b43 snd_soc_component_async_complete +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe975ddbd snd_soc_poweroff +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xeaf299bc snd_soc_dapm_free +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xeb711ae7 snd_soc_params_to_bclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xedd9ec7f snd_soc_read +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xef02a33a snd_soc_register_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf0658875 snd_soc_dai_set_sysclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf06dc125 dpcm_be_dai_trigger +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf5847389 snd_soc_bytes_tlv_callback +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf64d6235 snd_soc_put_volsw_range +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf7399843 snd_soc_dpcm_be_can_update +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xfdb74d9e snd_soc_dapm_kcontrol_dapm +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x0339da7e line6_probe +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x1e912440 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 0x26fad48b line6_pcm_release +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x3be36ef0 line6_read_data +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x3cfee8fb line6_resume +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x4a34c73e line6_version_request_async +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x4de98a34 line6_disconnect +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x6f8e301d line6_init_midi +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x85557621 line6_write_data +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x8b6c32f5 line6_alloc_sysex_buffer +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x8ec973cd line6_start_timer +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xace2a2f0 line6_suspend +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xb85658a2 line6_send_sysex_message +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xba7d8f07 line6_send_raw_message_async +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xc5b167c8 line6_pcm_acquire +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xfb404b9b line6_init_pcm +EXPORT_SYMBOL_GPL vmlinux 0x0002d791 gnttab_unmap_refs +EXPORT_SYMBOL_GPL vmlinux 0x0008b30f napi_by_id +EXPORT_SYMBOL_GPL vmlinux 0x0012d44f pinctrl_pm_select_default_state +EXPORT_SYMBOL_GPL vmlinux 0x00160647 pci_enable_pasid +EXPORT_SYMBOL_GPL vmlinux 0x001cc7fb key_type_asymmetric +EXPORT_SYMBOL_GPL vmlinux 0x001f3130 __efivar_entry_delete +EXPORT_SYMBOL_GPL vmlinux 0x0034f3b6 xen_has_pv_nic_devices +EXPORT_SYMBOL_GPL vmlinux 0x004f8b72 devres_get +EXPORT_SYMBOL_GPL vmlinux 0x006820b4 pci_write_msi_msg +EXPORT_SYMBOL_GPL vmlinux 0x0070ef14 __tracepoint_rpm_idle +EXPORT_SYMBOL_GPL vmlinux 0x00845cf8 ata_host_start +EXPORT_SYMBOL_GPL vmlinux 0x009304b6 ata_tf_from_fis +EXPORT_SYMBOL_GPL vmlinux 0x00c183ec ata_std_prereset +EXPORT_SYMBOL_GPL vmlinux 0x00da6301 user_preparse +EXPORT_SYMBOL_GPL vmlinux 0x00e6e45c pci_cleanup_aer_uncorrect_error_status +EXPORT_SYMBOL_GPL vmlinux 0x00ebcb5d ata_id_string +EXPORT_SYMBOL_GPL vmlinux 0x00ecd2eb dequeue_signal +EXPORT_SYMBOL_GPL vmlinux 0x00fd741f usb_hcd_unmap_urb_for_dma +EXPORT_SYMBOL_GPL vmlinux 0x00ffec3d clk_register_fractional_divider +EXPORT_SYMBOL_GPL vmlinux 0x01004630 acpi_dma_controller_free +EXPORT_SYMBOL_GPL vmlinux 0x01010c6d klist_add_before +EXPORT_SYMBOL_GPL vmlinux 0x0116f95f driver_for_each_device +EXPORT_SYMBOL_GPL vmlinux 0x011cf028 regulator_suspend_finish +EXPORT_SYMBOL_GPL vmlinux 0x015a644e devm_remove_action +EXPORT_SYMBOL_GPL vmlinux 0x015d3073 device_register +EXPORT_SYMBOL_GPL vmlinux 0x01848a8e local_apic_timer_c2_ok +EXPORT_SYMBOL_GPL vmlinux 0x01851ebf fl6_sock_lookup +EXPORT_SYMBOL_GPL vmlinux 0x01c4331e unregister_net_sysctl_table +EXPORT_SYMBOL_GPL vmlinux 0x01e1a8de kgdb_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x01e8b07e security_inode_mkdir +EXPORT_SYMBOL_GPL vmlinux 0x0205504f xfrm_audit_state_delete +EXPORT_SYMBOL_GPL vmlinux 0x02092586 iommu_domain_alloc +EXPORT_SYMBOL_GPL vmlinux 0x02305fe0 __pm_runtime_suspend +EXPORT_SYMBOL_GPL vmlinux 0x02585106 cpufreq_freq_attr_scaling_available_freqs +EXPORT_SYMBOL_GPL vmlinux 0x0260f382 blk_trace_startstop +EXPORT_SYMBOL_GPL vmlinux 0x026211e2 memory_failure_queue +EXPORT_SYMBOL_GPL vmlinux 0x0272401f pwm_get +EXPORT_SYMBOL_GPL vmlinux 0x02789d7c nd_blk_region_to_dimm +EXPORT_SYMBOL_GPL vmlinux 0x02791874 transport_add_device +EXPORT_SYMBOL_GPL vmlinux 0x029084c7 btree_visitor +EXPORT_SYMBOL_GPL vmlinux 0x02a1ff7f hvc_poll +EXPORT_SYMBOL_GPL vmlinux 0x02b6893c crypto_hash_walk_first +EXPORT_SYMBOL_GPL vmlinux 0x02c4943b alarm_init +EXPORT_SYMBOL_GPL vmlinux 0x02c73e6e i2c_unlock_adapter +EXPORT_SYMBOL_GPL vmlinux 0x02dc18b5 register_net_sysctl +EXPORT_SYMBOL_GPL vmlinux 0x02f1ebb0 subsys_virtual_register +EXPORT_SYMBOL_GPL vmlinux 0x02fd0ed5 inet6_lookup +EXPORT_SYMBOL_GPL vmlinux 0x02fea2ae rcu_note_context_switch +EXPORT_SYMBOL_GPL vmlinux 0x0313497a wm831x_auxadc_read_uv +EXPORT_SYMBOL_GPL vmlinux 0x0320fb5d desc_to_gpio +EXPORT_SYMBOL_GPL vmlinux 0x032e51e1 ata_pci_sff_init_one +EXPORT_SYMBOL_GPL vmlinux 0x033832c7 usb_amd_hang_symptom_quirk +EXPORT_SYMBOL_GPL vmlinux 0x0343bdf1 __i2c_board_list +EXPORT_SYMBOL_GPL vmlinux 0x03531819 fuse_request_alloc +EXPORT_SYMBOL_GPL vmlinux 0x0356f8a2 event_triggers_call +EXPORT_SYMBOL_GPL vmlinux 0x035bc872 subsys_dev_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0x037a0a72 wm8350_block_read +EXPORT_SYMBOL_GPL vmlinux 0x039fd867 trace_clock_global +EXPORT_SYMBOL_GPL vmlinux 0x03c4dbaa uart_console_write +EXPORT_SYMBOL_GPL vmlinux 0x03c5ed2d fpu__save +EXPORT_SYMBOL_GPL vmlinux 0x03e3686c ata_timing_cycle2mode +EXPORT_SYMBOL_GPL vmlinux 0x0401b66f xhci_init_driver +EXPORT_SYMBOL_GPL vmlinux 0x0402cbbf preempt_notifier_inc +EXPORT_SYMBOL_GPL vmlinux 0x041a3e51 xenbus_dev_resume +EXPORT_SYMBOL_GPL vmlinux 0x043bd9a7 usb_choose_configuration +EXPORT_SYMBOL_GPL vmlinux 0x045fe1a6 __gpiod_get_index +EXPORT_SYMBOL_GPL vmlinux 0x0465a073 regmap_reg_in_ranges +EXPORT_SYMBOL_GPL vmlinux 0x047157e4 crypto_enqueue_request +EXPORT_SYMBOL_GPL vmlinux 0x04811716 acpi_find_child_device +EXPORT_SYMBOL_GPL vmlinux 0x0485655f amd_get_nodes_per_socket +EXPORT_SYMBOL_GPL vmlinux 0x048b5f8d twl4030_audio_get_mclk +EXPORT_SYMBOL_GPL vmlinux 0x0499deb0 __clk_get_rate +EXPORT_SYMBOL_GPL vmlinux 0x04a612fd iommu_group_get +EXPORT_SYMBOL_GPL vmlinux 0x04c3f2c1 gnttab_empty_grant_references +EXPORT_SYMBOL_GPL vmlinux 0x04c4f603 mpi_get_buffer +EXPORT_SYMBOL_GPL vmlinux 0x04d65e5d pci_user_read_config_dword +EXPORT_SYMBOL_GPL vmlinux 0x04df8fbc lzo1x_decompress_safe +EXPORT_SYMBOL_GPL vmlinux 0x04ecfb5c set_memory_wt +EXPORT_SYMBOL_GPL vmlinux 0x051876cc component_master_del +EXPORT_SYMBOL_GPL vmlinux 0x053494cb tpm_get_random +EXPORT_SYMBOL_GPL vmlinux 0x054e550b kernel_halt +EXPORT_SYMBOL_GPL vmlinux 0x055dfdc6 devm_regmap_init_spi +EXPORT_SYMBOL_GPL vmlinux 0x058b582a vt_get_leds +EXPORT_SYMBOL_GPL vmlinux 0x059b270b device_wakeup_enable +EXPORT_SYMBOL_GPL vmlinux 0x059ba0ad usb_put_phy +EXPORT_SYMBOL_GPL vmlinux 0x059f28d3 input_ff_upload +EXPORT_SYMBOL_GPL vmlinux 0x05d5cb8f fat_remove_entries +EXPORT_SYMBOL_GPL vmlinux 0x05f688f5 gpiochip_add +EXPORT_SYMBOL_GPL vmlinux 0x05f711d7 crypto_init_ahash_spawn +EXPORT_SYMBOL_GPL vmlinux 0x0626da5f od_unregister_powersave_bias_handler +EXPORT_SYMBOL_GPL vmlinux 0x06416b30 device_attach +EXPORT_SYMBOL_GPL vmlinux 0x0643429c acpi_is_pnp_device +EXPORT_SYMBOL_GPL vmlinux 0x064db9a5 mark_mounts_for_expiry +EXPORT_SYMBOL_GPL vmlinux 0x06796ae4 pci_destroy_slot +EXPORT_SYMBOL_GPL vmlinux 0x067980a9 split_page +EXPORT_SYMBOL_GPL vmlinux 0x0682cd84 __blkdev_driver_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x06984624 rio_unmap_inb_region +EXPORT_SYMBOL_GPL vmlinux 0x06d1fec4 virtqueue_get_used +EXPORT_SYMBOL_GPL vmlinux 0x06d549e6 pinctrl_free_gpio +EXPORT_SYMBOL_GPL vmlinux 0x072e5e77 pci_generic_config_write +EXPORT_SYMBOL_GPL vmlinux 0x0735a57e sata_scr_write_flush +EXPORT_SYMBOL_GPL vmlinux 0x0739f429 x509_check_signature +EXPORT_SYMBOL_GPL vmlinux 0x0739f6cb ip6_sk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x07479b5f device_create_file +EXPORT_SYMBOL_GPL vmlinux 0x075b0132 alarm_forward +EXPORT_SYMBOL_GPL vmlinux 0x075e7fa6 irq_set_default_host +EXPORT_SYMBOL_GPL vmlinux 0x0762403c edac_put_sysfs_subsys +EXPORT_SYMBOL_GPL vmlinux 0x07acfc4f devres_destroy +EXPORT_SYMBOL_GPL vmlinux 0x07b21f85 kdb_get_kbd_char +EXPORT_SYMBOL_GPL vmlinux 0x07b52e38 rtnl_unregister +EXPORT_SYMBOL_GPL vmlinux 0x07b97cdc xfrm_audit_state_notfound_simple +EXPORT_SYMBOL_GPL vmlinux 0x07c3ae10 bpf_prog_create +EXPORT_SYMBOL_GPL vmlinux 0x07c9e10f regmap_exit +EXPORT_SYMBOL_GPL vmlinux 0x080acd75 uhci_reset_hc +EXPORT_SYMBOL_GPL vmlinux 0x08156773 name_to_dev_t +EXPORT_SYMBOL_GPL vmlinux 0x0828b7fb usb_phy_generic_unregister +EXPORT_SYMBOL_GPL vmlinux 0x082a299e nf_ipv6_ops +EXPORT_SYMBOL_GPL vmlinux 0x083fb169 unuse_mm +EXPORT_SYMBOL_GPL vmlinux 0x0861c7a3 pwmchip_add +EXPORT_SYMBOL_GPL vmlinux 0x088bfa7e cancel_work_sync +EXPORT_SYMBOL_GPL vmlinux 0x08b32160 show_class_attr_string +EXPORT_SYMBOL_GPL vmlinux 0x08bc0870 compat_put_timespec +EXPORT_SYMBOL_GPL vmlinux 0x08bf3efa map_vm_area +EXPORT_SYMBOL_GPL vmlinux 0x08c7210a sata_lpm_ignore_phy_events +EXPORT_SYMBOL_GPL vmlinux 0x08ce7b01 class_dev_iter_next +EXPORT_SYMBOL_GPL vmlinux 0x08d8ef79 inode_congested +EXPORT_SYMBOL_GPL vmlinux 0x091eb9b4 round_jiffies +EXPORT_SYMBOL_GPL vmlinux 0x09437748 ring_buffer_read_events_cpu +EXPORT_SYMBOL_GPL vmlinux 0x09469482 kfree_call_rcu +EXPORT_SYMBOL_GPL vmlinux 0x094b0e0a ata_bmdma_setup +EXPORT_SYMBOL_GPL vmlinux 0x096654a5 crypto_shash_update +EXPORT_SYMBOL_GPL vmlinux 0x09830c51 bus_sort_breadthfirst +EXPORT_SYMBOL_GPL vmlinux 0x0991efa8 fb_deferred_io_init +EXPORT_SYMBOL_GPL vmlinux 0x09a6ae5e ata_acpi_gtm +EXPORT_SYMBOL_GPL vmlinux 0x09d1fc5c usb_unlocked_disable_lpm +EXPORT_SYMBOL_GPL vmlinux 0x09d60422 dev_pm_clear_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0x09d88f08 kobject_uevent_env +EXPORT_SYMBOL_GPL vmlinux 0x09ecac8e register_acpi_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x0a19cf21 subsys_dev_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x0a22a20d debugfs_rename +EXPORT_SYMBOL_GPL vmlinux 0x0a2b5735 cpuidle_register +EXPORT_SYMBOL_GPL vmlinux 0x0a30d6d8 crypto_register_ahash +EXPORT_SYMBOL_GPL vmlinux 0x0a3ac436 clockevents_config_and_register +EXPORT_SYMBOL_GPL vmlinux 0x0a4fde00 idr_alloc +EXPORT_SYMBOL_GPL vmlinux 0x0a726a67 dma_buf_vmap +EXPORT_SYMBOL_GPL vmlinux 0x0a7b358a inet6_csk_search_req +EXPORT_SYMBOL_GPL vmlinux 0x0ab38699 vfs_getxattr +EXPORT_SYMBOL_GPL vmlinux 0x0aed7475 crypto_attr_alg2 +EXPORT_SYMBOL_GPL vmlinux 0x0af1a7c8 mmc_switch +EXPORT_SYMBOL_GPL vmlinux 0x0b07abe2 unshare_fs_struct +EXPORT_SYMBOL_GPL vmlinux 0x0b1f1104 pinconf_generic_dump_config +EXPORT_SYMBOL_GPL vmlinux 0x0b2574de spi_setup +EXPORT_SYMBOL_GPL vmlinux 0x0b4a0bfe scsi_internal_device_block +EXPORT_SYMBOL_GPL vmlinux 0x0b52e502 apei_resources_add +EXPORT_SYMBOL_GPL vmlinux 0x0b53ca9b regulator_map_voltage_linear_range +EXPORT_SYMBOL_GPL vmlinux 0x0b6d990b usb_register_dev +EXPORT_SYMBOL_GPL vmlinux 0x0b8f76dd led_classdev_unregister +EXPORT_SYMBOL_GPL vmlinux 0x0b91ce00 dma_buf_attach +EXPORT_SYMBOL_GPL vmlinux 0x0b9bdbb2 xfrm_inner_extract_output +EXPORT_SYMBOL_GPL vmlinux 0x0b9db7c2 scsi_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x0ba7dafc xfrm_audit_state_replay_overflow +EXPORT_SYMBOL_GPL vmlinux 0x0bae57b1 __rio_local_read_config_32 +EXPORT_SYMBOL_GPL vmlinux 0x0bfa3a19 rcu_idle_exit +EXPORT_SYMBOL_GPL vmlinux 0x0c0c015e ring_buffer_swap_cpu +EXPORT_SYMBOL_GPL vmlinux 0x0c1f989f devm_of_phy_provider_unregister +EXPORT_SYMBOL_GPL vmlinux 0x0c2cdbf1 synchronize_sched +EXPORT_SYMBOL_GPL vmlinux 0x0c39be9a blk_execute_rq_nowait +EXPORT_SYMBOL_GPL vmlinux 0x0c3f550c regulator_get_current_limit +EXPORT_SYMBOL_GPL vmlinux 0x0c5a8966 usb_get_phy +EXPORT_SYMBOL_GPL vmlinux 0x0c7c42ae skb_splice_bits +EXPORT_SYMBOL_GPL vmlinux 0x0c805f93 clflush_cache_range +EXPORT_SYMBOL_GPL vmlinux 0x0c80e3fe efivar_init +EXPORT_SYMBOL_GPL vmlinux 0x0c8b6fb9 power_supply_powers +EXPORT_SYMBOL_GPL vmlinux 0x0cbdc4cc crypto_aead_reqsize +EXPORT_SYMBOL_GPL vmlinux 0x0cc1e40f crypto_it_tab +EXPORT_SYMBOL_GPL vmlinux 0x0cdb72b5 sock_diag_unregister_inet_compat +EXPORT_SYMBOL_GPL vmlinux 0x0d222fb9 regmap_raw_write +EXPORT_SYMBOL_GPL vmlinux 0x0d4961de nf_log_buf_open +EXPORT_SYMBOL_GPL vmlinux 0x0d614aab gpiod_direction_output +EXPORT_SYMBOL_GPL vmlinux 0x0d7509fd pinctrl_force_sleep +EXPORT_SYMBOL_GPL vmlinux 0x0d7598e9 xenbus_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0x0d7d4d70 rcu_batches_completed +EXPORT_SYMBOL_GPL vmlinux 0x0d896b27 rio_dev_put +EXPORT_SYMBOL_GPL vmlinux 0x0daadc18 xfrm_audit_policy_delete +EXPORT_SYMBOL_GPL vmlinux 0x0dd918fc power_supply_register +EXPORT_SYMBOL_GPL vmlinux 0x0ddb1cd7 llist_reverse_order +EXPORT_SYMBOL_GPL vmlinux 0x0de6ba50 device_init_wakeup +EXPORT_SYMBOL_GPL vmlinux 0x0df36ef0 disk_part_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x0df925f6 btree_init_mempool +EXPORT_SYMBOL_GPL vmlinux 0x0e007edf xen_evtchn_nr_channels +EXPORT_SYMBOL_GPL vmlinux 0x0e038535 __rio_local_write_config_8 +EXPORT_SYMBOL_GPL vmlinux 0x0e13cb4d apei_resources_release +EXPORT_SYMBOL_GPL vmlinux 0x0e601420 hwmon_device_register_with_groups +EXPORT_SYMBOL_GPL vmlinux 0x0e68ac8b crypto_aead_setkey +EXPORT_SYMBOL_GPL vmlinux 0x0e8465f8 usb_hcd_start_port_resume +EXPORT_SYMBOL_GPL vmlinux 0x0ea41f64 pm_qos_add_request +EXPORT_SYMBOL_GPL vmlinux 0x0eb0c336 crypto_unregister_shashes +EXPORT_SYMBOL_GPL vmlinux 0x0ecf823a static_key_slow_dec +EXPORT_SYMBOL_GPL vmlinux 0x0ed92374 __pm_runtime_set_status +EXPORT_SYMBOL_GPL vmlinux 0x0edb07eb class_remove_file_ns +EXPORT_SYMBOL_GPL vmlinux 0x0edfd1b5 arizona_free_irq +EXPORT_SYMBOL_GPL vmlinux 0x0ee6c784 crypto_alloc_ahash +EXPORT_SYMBOL_GPL vmlinux 0x0efe7768 pm_runtime_irq_safe +EXPORT_SYMBOL_GPL vmlinux 0x0f2d7d87 mce_unregister_decode_chain +EXPORT_SYMBOL_GPL vmlinux 0x0f336d7f rcutorture_get_gp_data +EXPORT_SYMBOL_GPL vmlinux 0x0f467c6e powercap_unregister_zone +EXPORT_SYMBOL_GPL vmlinux 0x0f53fd70 add_disk_randomness +EXPORT_SYMBOL_GPL vmlinux 0x0f602c62 hypervisor_kobj +EXPORT_SYMBOL_GPL vmlinux 0x0f6478e6 da903x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x0f751aea input_event_from_user +EXPORT_SYMBOL_GPL vmlinux 0x0f8e9c32 pm_runtime_allow +EXPORT_SYMBOL_GPL vmlinux 0x0f9164bf devm_regulator_bulk_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x0f95f010 trace_event_buffer_commit +EXPORT_SYMBOL_GPL vmlinux 0x0fa138de xen_hvm_need_lapic +EXPORT_SYMBOL_GPL vmlinux 0x0fcc1969 copy_from_user_nmi +EXPORT_SYMBOL_GPL vmlinux 0x0fe1e20d wm831x_reg_unlock +EXPORT_SYMBOL_GPL vmlinux 0x0fe2d570 xenbus_directory +EXPORT_SYMBOL_GPL vmlinux 0x100ebbc7 pci_generic_config_write32 +EXPORT_SYMBOL_GPL vmlinux 0x10114c45 iommu_domain_window_disable +EXPORT_SYMBOL_GPL vmlinux 0x1012581a tps6586x_writes +EXPORT_SYMBOL_GPL vmlinux 0x10138352 tracing_on +EXPORT_SYMBOL_GPL vmlinux 0x10167318 __clk_determine_rate +EXPORT_SYMBOL_GPL vmlinux 0x102ea831 crypto_register_pcomp +EXPORT_SYMBOL_GPL vmlinux 0x10427f08 crypto_unregister_shash +EXPORT_SYMBOL_GPL vmlinux 0x1046acf9 __mnt_drop_write +EXPORT_SYMBOL_GPL vmlinux 0x107cee1b crypto_alloc_ablkcipher +EXPORT_SYMBOL_GPL vmlinux 0x109a909d inet_csk_listen_start +EXPORT_SYMBOL_GPL vmlinux 0x109da921 __skb_tstamp_tx +EXPORT_SYMBOL_GPL vmlinux 0x10b21f55 __ata_ehi_push_desc +EXPORT_SYMBOL_GPL vmlinux 0x10b50893 relay_open +EXPORT_SYMBOL_GPL vmlinux 0x10b5a75e register_virtio_device +EXPORT_SYMBOL_GPL vmlinux 0x10bc648f pinctrl_pm_select_idle_state +EXPORT_SYMBOL_GPL vmlinux 0x10c725df ata_std_postreset +EXPORT_SYMBOL_GPL vmlinux 0x10ecc52c usb_amd_quirk_pll_enable +EXPORT_SYMBOL_GPL vmlinux 0x110106c1 cper_severity_to_aer +EXPORT_SYMBOL_GPL vmlinux 0x110804fc ata_std_qc_defer +EXPORT_SYMBOL_GPL vmlinux 0x11299fee device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x112e0910 tps65912_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x113563dc uhci_check_and_reset_hc +EXPORT_SYMBOL_GPL vmlinux 0x114f1a20 balloon_stats +EXPORT_SYMBOL_GPL vmlinux 0x11715484 __tracepoint_mc_event +EXPORT_SYMBOL_GPL vmlinux 0x1172ce54 rtc_ktime_to_tm +EXPORT_SYMBOL_GPL vmlinux 0x117c7305 hwpoison_filter_dev_major +EXPORT_SYMBOL_GPL vmlinux 0x117f3522 gpiod_get_raw_value +EXPORT_SYMBOL_GPL vmlinux 0x119af014 cpu_bit_bitmap +EXPORT_SYMBOL_GPL vmlinux 0x11ae6130 sock_diag_register_inet_compat +EXPORT_SYMBOL_GPL vmlinux 0x11b916c2 dma_release_channel +EXPORT_SYMBOL_GPL vmlinux 0x11caddc7 trace_seq_printf +EXPORT_SYMBOL_GPL vmlinux 0x11ce5bfa devres_alloc +EXPORT_SYMBOL_GPL vmlinux 0x11dbcf36 tcp_reno_ssthresh +EXPORT_SYMBOL_GPL vmlinux 0x1201fe5e kobject_uevent +EXPORT_SYMBOL_GPL vmlinux 0x1203b89c pm_runtime_enable +EXPORT_SYMBOL_GPL vmlinux 0x121d958a unregister_die_notifier +EXPORT_SYMBOL_GPL vmlinux 0x12276f08 sdio_readb +EXPORT_SYMBOL_GPL vmlinux 0x122a037a save_stack_trace_tsk +EXPORT_SYMBOL_GPL vmlinux 0x12338873 pci_slots_kset +EXPORT_SYMBOL_GPL vmlinux 0x124f2056 crypto_get_attr_type +EXPORT_SYMBOL_GPL vmlinux 0x125d8529 edac_subsys +EXPORT_SYMBOL_GPL vmlinux 0x1268f357 resume_device_irqs +EXPORT_SYMBOL_GPL vmlinux 0x12709936 iommu_detach_group +EXPORT_SYMBOL_GPL vmlinux 0x127477df ping_get_port +EXPORT_SYMBOL_GPL vmlinux 0x1294d80a get_xsave_addr +EXPORT_SYMBOL_GPL vmlinux 0x12b5193c fwnode_handle_put +EXPORT_SYMBOL_GPL vmlinux 0x12b5ad32 __inet_lookup_established +EXPORT_SYMBOL_GPL vmlinux 0x12beb9c1 blk_mq_request_started +EXPORT_SYMBOL_GPL vmlinux 0x12ea3c14 btree_remove +EXPORT_SYMBOL_GPL vmlinux 0x12f11d2d max8997_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0x12f58dec use_mm +EXPORT_SYMBOL_GPL vmlinux 0x12f909c4 bitmap_resize +EXPORT_SYMBOL_GPL vmlinux 0x130bd388 check_tsc_disabled +EXPORT_SYMBOL_GPL vmlinux 0x130de01d trace_seq_bitmask +EXPORT_SYMBOL_GPL vmlinux 0x131a5ed7 regmap_del_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0x131db64a system_long_wq +EXPORT_SYMBOL_GPL vmlinux 0x132a7aaf __ip_route_output_key +EXPORT_SYMBOL_GPL vmlinux 0x13368cf2 devm_rtc_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x1345d65c devm_phy_put +EXPORT_SYMBOL_GPL vmlinux 0x134df844 i2c_lock_adapter +EXPORT_SYMBOL_GPL vmlinux 0x136209db power_supply_reg_notifier +EXPORT_SYMBOL_GPL vmlinux 0x138aff76 gnttab_init +EXPORT_SYMBOL_GPL vmlinux 0x138e4838 dev_pm_put_subsys_data +EXPORT_SYMBOL_GPL vmlinux 0x13ad647f scatterwalk_bytes_sglen +EXPORT_SYMBOL_GPL vmlinux 0x13aea0ce xattr_getsecurity +EXPORT_SYMBOL_GPL vmlinux 0x13b7e976 irq_domain_simple_ops +EXPORT_SYMBOL_GPL vmlinux 0x13b89dee pinctrl_request_gpio +EXPORT_SYMBOL_GPL vmlinux 0x13ce87e8 asn1_ber_decoder +EXPORT_SYMBOL_GPL vmlinux 0x13f51fc3 ms_hyperv +EXPORT_SYMBOL_GPL vmlinux 0x1415ca36 da903x_reads +EXPORT_SYMBOL_GPL vmlinux 0x1426c33f acpi_dev_get_property_reference +EXPORT_SYMBOL_GPL vmlinux 0x142f34af devm_usb_put_phy +EXPORT_SYMBOL_GPL vmlinux 0x1433cbc4 __tracepoint_wbc_writepage +EXPORT_SYMBOL_GPL vmlinux 0x1465c18b tpm2_probe +EXPORT_SYMBOL_GPL vmlinux 0x146a8fc8 key_type_logon +EXPORT_SYMBOL_GPL vmlinux 0x146c5303 bio_alloc_mddev +EXPORT_SYMBOL_GPL vmlinux 0x147f24c2 i2c_add_numbered_adapter +EXPORT_SYMBOL_GPL vmlinux 0x1489fe03 ehci_resume +EXPORT_SYMBOL_GPL vmlinux 0x1493eae9 fuse_dev_operations +EXPORT_SYMBOL_GPL vmlinux 0x149c149d usb_unlink_urb +EXPORT_SYMBOL_GPL vmlinux 0x15010e1f arbitrary_virt_to_machine +EXPORT_SYMBOL_GPL vmlinux 0x15092194 page_cache_async_readahead +EXPORT_SYMBOL_GPL vmlinux 0x152e3c16 crypto_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x15421d7a __irq_domain_add +EXPORT_SYMBOL_GPL vmlinux 0x1542fa35 skb_zerocopy_headlen +EXPORT_SYMBOL_GPL vmlinux 0x1545bb48 fat_attach +EXPORT_SYMBOL_GPL vmlinux 0x156a355b md_do_sync +EXPORT_SYMBOL_GPL vmlinux 0x1572f160 bsg_register_queue +EXPORT_SYMBOL_GPL vmlinux 0x15763354 bsg_setup_queue +EXPORT_SYMBOL_GPL vmlinux 0x157be79e da903x_write +EXPORT_SYMBOL_GPL vmlinux 0x1582b3a7 ata_sff_pause +EXPORT_SYMBOL_GPL vmlinux 0x1583a2a9 scsi_target_block +EXPORT_SYMBOL_GPL vmlinux 0x15892417 async_synchronize_cookie +EXPORT_SYMBOL_GPL vmlinux 0x1594bd6d da9052_adc_manual_read +EXPORT_SYMBOL_GPL vmlinux 0x15b0606e e820_any_mapped +EXPORT_SYMBOL_GPL vmlinux 0x15c4bd10 pci_intx_mask_supported +EXPORT_SYMBOL_GPL vmlinux 0x15cdbf4f bus_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x15e71f67 seq_open_net +EXPORT_SYMBOL_GPL vmlinux 0x15ef1e28 pcie_port_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x15efd446 rcu_batches_started +EXPORT_SYMBOL_GPL vmlinux 0x15fc414f shash_ahash_finup +EXPORT_SYMBOL_GPL vmlinux 0x16000a3c dm_device_name +EXPORT_SYMBOL_GPL vmlinux 0x1650bf27 rcutorture_record_progress +EXPORT_SYMBOL_GPL vmlinux 0x165372b9 pci_generic_config_read +EXPORT_SYMBOL_GPL vmlinux 0x16b6c13e nvdimm_provider_data +EXPORT_SYMBOL_GPL vmlinux 0x16b9ca6b ata_host_activate +EXPORT_SYMBOL_GPL vmlinux 0x16c31e7c debugfs_create_atomic_t +EXPORT_SYMBOL_GPL vmlinux 0x16e1347a power_supply_get_property +EXPORT_SYMBOL_GPL vmlinux 0x16e40587 nvdimm_name +EXPORT_SYMBOL_GPL vmlinux 0x16f2ec00 device_bind_driver +EXPORT_SYMBOL_GPL vmlinux 0x17019a7f regulator_list_hardware_vsel +EXPORT_SYMBOL_GPL vmlinux 0x172817ee list_lru_walk_node +EXPORT_SYMBOL_GPL vmlinux 0x17375b95 device_property_read_u16_array +EXPORT_SYMBOL_GPL vmlinux 0x17382a3c regmap_reinit_cache +EXPORT_SYMBOL_GPL vmlinux 0x173f1551 __fsnotify_inode_delete +EXPORT_SYMBOL_GPL vmlinux 0x1749e422 nl_table +EXPORT_SYMBOL_GPL vmlinux 0x1753a32f hash_digest_size +EXPORT_SYMBOL_GPL vmlinux 0x175ba24e virtio_check_driver_offered_feature +EXPORT_SYMBOL_GPL vmlinux 0x17614bf3 apei_resources_sub +EXPORT_SYMBOL_GPL vmlinux 0x176b5fb6 component_bind_all +EXPORT_SYMBOL_GPL vmlinux 0x177c338d twl_get_version +EXPORT_SYMBOL_GPL vmlinux 0x1781006c devm_usb_get_phy_dev +EXPORT_SYMBOL_GPL vmlinux 0x1796b162 debugfs_remove +EXPORT_SYMBOL_GPL vmlinux 0x179d02b2 inet_twsk_alloc +EXPORT_SYMBOL_GPL vmlinux 0x17eb45ce __srcu_read_lock +EXPORT_SYMBOL_GPL vmlinux 0x17fba626 __mmu_notifier_invalidate_range_end +EXPORT_SYMBOL_GPL vmlinux 0x17fff2c8 dm_get_table_device +EXPORT_SYMBOL_GPL vmlinux 0x1809a344 relay_close +EXPORT_SYMBOL_GPL vmlinux 0x1818dc10 sysfs_create_groups +EXPORT_SYMBOL_GPL vmlinux 0x18255b2a platform_device_add +EXPORT_SYMBOL_GPL vmlinux 0x1829b9ed hwpoison_filter_memcg +EXPORT_SYMBOL_GPL vmlinux 0x182d46e6 usb_match_id +EXPORT_SYMBOL_GPL vmlinux 0x1838bb78 xfrm_output +EXPORT_SYMBOL_GPL vmlinux 0x18418752 ipv6_dup_options +EXPORT_SYMBOL_GPL vmlinux 0x1848d7d7 __tracepoint_rpm_resume +EXPORT_SYMBOL_GPL vmlinux 0x18498e89 uart_insert_char +EXPORT_SYMBOL_GPL vmlinux 0x184bc389 __netpoll_cleanup +EXPORT_SYMBOL_GPL vmlinux 0x1853653c btree_alloc +EXPORT_SYMBOL_GPL vmlinux 0x18582826 amd_pmu_disable_virt +EXPORT_SYMBOL_GPL vmlinux 0x1866cec2 ring_buffer_size +EXPORT_SYMBOL_GPL vmlinux 0x1878f62b edac_err_assert +EXPORT_SYMBOL_GPL vmlinux 0x187a2702 ip6_datagram_recv_ctl +EXPORT_SYMBOL_GPL vmlinux 0x18ac04bb wm8350_reg_lock +EXPORT_SYMBOL_GPL vmlinux 0x18f5e50e arch_apei_enable_cmcff +EXPORT_SYMBOL_GPL vmlinux 0x18f83fab gnttab_grant_foreign_access_ref +EXPORT_SYMBOL_GPL vmlinux 0x190cbe68 ata_bmdma_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x193d48e0 trace_current_buffer_unlock_commit +EXPORT_SYMBOL_GPL vmlinux 0x194dd5f5 pkey_algo_name +EXPORT_SYMBOL_GPL vmlinux 0x19523acf print_context_stack_bp +EXPORT_SYMBOL_GPL vmlinux 0x1965e4a4 need_load_eval +EXPORT_SYMBOL_GPL vmlinux 0x196614ce hw_breakpoint_restore +EXPORT_SYMBOL_GPL vmlinux 0x197f71f1 find_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0x1991738c rio_mport_chk_dev_access +EXPORT_SYMBOL_GPL vmlinux 0x19a304ba usb_disabled +EXPORT_SYMBOL_GPL vmlinux 0x19b384a5 hash_algo_name +EXPORT_SYMBOL_GPL vmlinux 0x1a0d022e udp4_hwcsum +EXPORT_SYMBOL_GPL vmlinux 0x1a707a90 i2c_new_device +EXPORT_SYMBOL_GPL vmlinux 0x1a85772f sdio_writeb_readb +EXPORT_SYMBOL_GPL vmlinux 0x1a967885 cpufreq_frequency_get_table +EXPORT_SYMBOL_GPL vmlinux 0x1aa7cab8 rio_set_port_lockout +EXPORT_SYMBOL_GPL vmlinux 0x1aaa34e7 dev_pm_qos_hide_flags +EXPORT_SYMBOL_GPL vmlinux 0x1ab3aff8 tty_port_register_device +EXPORT_SYMBOL_GPL vmlinux 0x1ab55619 xen_swiotlb_alloc_coherent +EXPORT_SYMBOL_GPL vmlinux 0x1ab617ad usb_hc_died +EXPORT_SYMBOL_GPL vmlinux 0x1acef7d2 pm_freezing +EXPORT_SYMBOL_GPL vmlinux 0x1acf996c blk_queue_bypass_start +EXPORT_SYMBOL_GPL vmlinux 0x1ae102c0 ata_bmdma_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0x1af7b563 regulator_is_supported_voltage +EXPORT_SYMBOL_GPL vmlinux 0x1afd453b inet6_csk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x1b0a55d2 vring_new_virtqueue +EXPORT_SYMBOL_GPL vmlinux 0x1b38b3c6 klist_prev +EXPORT_SYMBOL_GPL vmlinux 0x1b87b976 fuse_request_send +EXPORT_SYMBOL_GPL vmlinux 0x1b8822d8 pinctrl_gpio_direction_output +EXPORT_SYMBOL_GPL vmlinux 0x1b95d6a6 pci_hp_add_bridge +EXPORT_SYMBOL_GPL vmlinux 0x1b973ecb bmp085_remove +EXPORT_SYMBOL_GPL vmlinux 0x1b9aca3f jprobe_return +EXPORT_SYMBOL_GPL vmlinux 0x1ba6c22e ata_sas_async_probe +EXPORT_SYMBOL_GPL vmlinux 0x1bb6afb2 perf_event_disable +EXPORT_SYMBOL_GPL vmlinux 0x1bb7e5c1 regmap_update_bits_check_async +EXPORT_SYMBOL_GPL vmlinux 0x1bb92a1d platform_bus +EXPORT_SYMBOL_GPL vmlinux 0x1bc5eebe pinctrl_gpio_direction_input +EXPORT_SYMBOL_GPL vmlinux 0x1bd86337 inet_ctl_sock_create +EXPORT_SYMBOL_GPL vmlinux 0x1bdaaa47 blk_rq_unprep_clone +EXPORT_SYMBOL_GPL vmlinux 0x1c017617 crypto_spawn_tfm2 +EXPORT_SYMBOL_GPL vmlinux 0x1c16d3aa max8997_update_reg +EXPORT_SYMBOL_GPL vmlinux 0x1c238260 dma_buf_map_attachment +EXPORT_SYMBOL_GPL vmlinux 0x1c309752 usb_control_msg +EXPORT_SYMBOL_GPL vmlinux 0x1c4a004c regcache_drop_region +EXPORT_SYMBOL_GPL vmlinux 0x1c4b62db xen_swiotlb_set_dma_mask +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 0x1c6660c7 btree_merge +EXPORT_SYMBOL_GPL vmlinux 0x1c781711 hvc_instantiate +EXPORT_SYMBOL_GPL vmlinux 0x1c80d27d btree_geo128 +EXPORT_SYMBOL_GPL vmlinux 0x1c87a811 __round_jiffies_up +EXPORT_SYMBOL_GPL vmlinux 0x1c8ca752 usb_alloc_streams +EXPORT_SYMBOL_GPL vmlinux 0x1cb4787f bpf_prog_alloc +EXPORT_SYMBOL_GPL vmlinux 0x1cbff5a2 ip4_datagram_release_cb +EXPORT_SYMBOL_GPL vmlinux 0x1cc6e6db rdev_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x1cd581db usb_remove_hcd +EXPORT_SYMBOL_GPL vmlinux 0x1cdb2147 zs_malloc +EXPORT_SYMBOL_GPL vmlinux 0x1cfd0c01 spi_bus_lock +EXPORT_SYMBOL_GPL vmlinux 0x1d07126e regulator_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x1d0ee4ed fuse_abort_conn +EXPORT_SYMBOL_GPL vmlinux 0x1d2740a6 get_user_pages_fast +EXPORT_SYMBOL_GPL vmlinux 0x1d459685 xstate_size +EXPORT_SYMBOL_GPL vmlinux 0x1d58ae14 lpddr2_jedec_timings +EXPORT_SYMBOL_GPL vmlinux 0x1d739e1c xen_set_callback_via +EXPORT_SYMBOL_GPL vmlinux 0x1d75b411 pcc_mbox_request_channel +EXPORT_SYMBOL_GPL vmlinux 0x1d77b0f8 unix_socket_table +EXPORT_SYMBOL_GPL vmlinux 0x1d7c0168 __ftrace_vprintk +EXPORT_SYMBOL_GPL vmlinux 0x1d7cb586 clk_register_fixed_rate_with_accuracy +EXPORT_SYMBOL_GPL vmlinux 0x1d83c0f8 __pci_reset_function +EXPORT_SYMBOL_GPL vmlinux 0x1da0e955 rtc_irq_set_freq +EXPORT_SYMBOL_GPL vmlinux 0x1dade819 param_set_bool_enable_only +EXPORT_SYMBOL_GPL vmlinux 0x1db54495 blkg_prfill_rwstat +EXPORT_SYMBOL_GPL vmlinux 0x1dc7a888 fuse_conn_init +EXPORT_SYMBOL_GPL vmlinux 0x1dcb2d62 tps6586x_reads +EXPORT_SYMBOL_GPL vmlinux 0x1dce35dd serial8250_get_port +EXPORT_SYMBOL_GPL vmlinux 0x1def880e bind_interdomain_evtchn_to_irq +EXPORT_SYMBOL_GPL vmlinux 0x1dfa2e79 nd_cmd_in_size +EXPORT_SYMBOL_GPL vmlinux 0x1e000879 hwpoison_filter_enable +EXPORT_SYMBOL_GPL vmlinux 0x1e0fb564 fwnode_property_read_u16_array +EXPORT_SYMBOL_GPL vmlinux 0x1e56b251 devm_spi_register_master +EXPORT_SYMBOL_GPL vmlinux 0x1e5b03dc pm_qos_add_notifier +EXPORT_SYMBOL_GPL vmlinux 0x1e62336e pinctrl_utils_reserve_map +EXPORT_SYMBOL_GPL vmlinux 0x1e68ce14 trace_seq_putc +EXPORT_SYMBOL_GPL vmlinux 0x1e7bbcb3 kernel_restart +EXPORT_SYMBOL_GPL vmlinux 0x1eadf1b0 bitmap_load +EXPORT_SYMBOL_GPL vmlinux 0x1eb9516e round_jiffies_relative +EXPORT_SYMBOL_GPL vmlinux 0x1ebac2bd getboottime64 +EXPORT_SYMBOL_GPL vmlinux 0x1ebba4d3 dev_pm_qos_hide_latency_limit +EXPORT_SYMBOL_GPL vmlinux 0x1ebf6c2a pci_power_names +EXPORT_SYMBOL_GPL vmlinux 0x1edc21cb hwpoison_filter_flags_mask +EXPORT_SYMBOL_GPL vmlinux 0x1ede364f xenbus_switch_state +EXPORT_SYMBOL_GPL vmlinux 0x1ee6f26e crypto_init_spawn +EXPORT_SYMBOL_GPL vmlinux 0x1f15bc2b ehci_adjust_port_wakeup_flags +EXPORT_SYMBOL_GPL vmlinux 0x1f1988f7 hwpoison_filter_flags_value +EXPORT_SYMBOL_GPL vmlinux 0x1f50e057 default_iommu_map_sg +EXPORT_SYMBOL_GPL vmlinux 0x1f69cfe8 devm_phy_create +EXPORT_SYMBOL_GPL vmlinux 0x1f8544b8 panic_timeout +EXPORT_SYMBOL_GPL vmlinux 0x1f8db7f9 ring_buffer_overrun_cpu +EXPORT_SYMBOL_GPL vmlinux 0x1fa52690 rio_route_add_entry +EXPORT_SYMBOL_GPL vmlinux 0x1fb21ee6 each_symbol_section +EXPORT_SYMBOL_GPL vmlinux 0x1fb703c8 ping_rcv +EXPORT_SYMBOL_GPL vmlinux 0x1fbea051 blk_add_driver_data +EXPORT_SYMBOL_GPL vmlinux 0x1fcdbb82 blk_queue_flush_queueable +EXPORT_SYMBOL_GPL vmlinux 0x1fdab09f ip6_flush_pending_frames +EXPORT_SYMBOL_GPL vmlinux 0x1fea0d01 wait_for_tpm_stat +EXPORT_SYMBOL_GPL vmlinux 0x2030cd84 pcie_bus_configure_settings +EXPORT_SYMBOL_GPL vmlinux 0x203de8fe perf_event_enable +EXPORT_SYMBOL_GPL vmlinux 0x203ee1bc pci_dev_run_wake +EXPORT_SYMBOL_GPL vmlinux 0x204976dc register_user_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x205c5a1b __devm_of_phy_provider_register +EXPORT_SYMBOL_GPL vmlinux 0x206614a9 register_pernet_device +EXPORT_SYMBOL_GPL vmlinux 0x207d468f devm_regmap_init_i2c +EXPORT_SYMBOL_GPL vmlinux 0x207f2ede hwrng_unregister +EXPORT_SYMBOL_GPL vmlinux 0x2090347d dm_accept_partial_bio +EXPORT_SYMBOL_GPL vmlinux 0x20924ab3 wm8350_device_init +EXPORT_SYMBOL_GPL vmlinux 0x209b4421 eventfd_fget +EXPORT_SYMBOL_GPL vmlinux 0x209ec764 xen_event_channel_op_compat +EXPORT_SYMBOL_GPL vmlinux 0x20a4343a inet_csk_search_req +EXPORT_SYMBOL_GPL vmlinux 0x20aa6f51 cpuidle_enable_device +EXPORT_SYMBOL_GPL vmlinux 0x20aa956b extcon_unregister_interest +EXPORT_SYMBOL_GPL vmlinux 0x20b6cad1 module_mutex +EXPORT_SYMBOL_GPL vmlinux 0x20bfcdcb put_pid +EXPORT_SYMBOL_GPL vmlinux 0x20c4f7ca wm5110_i2c_regmap +EXPORT_SYMBOL_GPL vmlinux 0x20f8ca24 __netpoll_free_async +EXPORT_SYMBOL_GPL vmlinux 0x20f935a0 klist_add_tail +EXPORT_SYMBOL_GPL vmlinux 0x2137541f inet6_csk_addr2sockaddr +EXPORT_SYMBOL_GPL vmlinux 0x217828e5 unregister_virtio_device +EXPORT_SYMBOL_GPL vmlinux 0x219d45c1 usb_autopm_put_interface +EXPORT_SYMBOL_GPL vmlinux 0x21a17760 __pci_complete_power_transition +EXPORT_SYMBOL_GPL vmlinux 0x21a563da clk_get_accuracy +EXPORT_SYMBOL_GPL vmlinux 0x21ac8b77 iommu_group_get_by_id +EXPORT_SYMBOL_GPL vmlinux 0x21b8c1dc platform_device_add_resources +EXPORT_SYMBOL_GPL vmlinux 0x21bc4c9f driver_remove_file +EXPORT_SYMBOL_GPL vmlinux 0x21c54904 rtc_device_register +EXPORT_SYMBOL_GPL vmlinux 0x21c641d2 devm_extcon_dev_free +EXPORT_SYMBOL_GPL vmlinux 0x21c92f53 cpufreq_table_validate_and_show +EXPORT_SYMBOL_GPL vmlinux 0x21c9e55a efivars_register +EXPORT_SYMBOL_GPL vmlinux 0x21df4905 ata_sff_queue_pio_task +EXPORT_SYMBOL_GPL vmlinux 0x21e37960 user_read +EXPORT_SYMBOL_GPL vmlinux 0x21f9e219 device_add_property_set +EXPORT_SYMBOL_GPL vmlinux 0x224b6d09 gpiod_to_irq +EXPORT_SYMBOL_GPL vmlinux 0x225c3fe5 regmap_get_max_register +EXPORT_SYMBOL_GPL vmlinux 0x22750532 nvdimm_bus_unregister +EXPORT_SYMBOL_GPL vmlinux 0x2296c00d crypto_attr_u32 +EXPORT_SYMBOL_GPL vmlinux 0x2299ec81 perf_assign_events +EXPORT_SYMBOL_GPL vmlinux 0x22a496f0 devm_led_classdev_register +EXPORT_SYMBOL_GPL vmlinux 0x22ab9796 pid_nr_ns +EXPORT_SYMBOL_GPL vmlinux 0x22be85eb wm8350_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x22cbfd68 xhci_suspend +EXPORT_SYMBOL_GPL vmlinux 0x22d51044 blk_mq_unfreeze_queue +EXPORT_SYMBOL_GPL vmlinux 0x22ee74d2 pci_check_and_mask_intx +EXPORT_SYMBOL_GPL vmlinux 0x22f5bc4d inet6_sk_rebuild_header +EXPORT_SYMBOL_GPL vmlinux 0x22f86ffd clk_gate_ops +EXPORT_SYMBOL_GPL vmlinux 0x2303d72f mbox_client_peek_data +EXPORT_SYMBOL_GPL vmlinux 0x233863e7 ata_pci_bmdma_prepare_host +EXPORT_SYMBOL_GPL vmlinux 0x233d6fb6 relay_subbufs_consumed +EXPORT_SYMBOL_GPL vmlinux 0x2352ddd2 regulator_get_bypass_regmap +EXPORT_SYMBOL_GPL vmlinux 0x236592fc generic_fh_to_dentry +EXPORT_SYMBOL_GPL vmlinux 0x2366a2c0 errata +EXPORT_SYMBOL_GPL vmlinux 0x23818647 pm_generic_resume +EXPORT_SYMBOL_GPL vmlinux 0x23864ce7 cpuset_mem_spread_node +EXPORT_SYMBOL_GPL vmlinux 0x2396c7f0 clk_set_parent +EXPORT_SYMBOL_GPL vmlinux 0x23bc5b8e dma_buf_kunmap +EXPORT_SYMBOL_GPL vmlinux 0x23cf960b regulator_put +EXPORT_SYMBOL_GPL vmlinux 0x23fe1dad tcp_ca_get_key_by_name +EXPORT_SYMBOL_GPL vmlinux 0x24011e14 vbin_printf +EXPORT_SYMBOL_GPL vmlinux 0x240ee05e ipv6_stub +EXPORT_SYMBOL_GPL vmlinux 0x241f5575 power_supply_external_power_changed +EXPORT_SYMBOL_GPL vmlinux 0x2430f732 usb_enable_lpm +EXPORT_SYMBOL_GPL vmlinux 0x24333e1a regmap_field_update_bits +EXPORT_SYMBOL_GPL vmlinux 0x2445170e virtqueue_notify +EXPORT_SYMBOL_GPL vmlinux 0x24457174 audit_enabled +EXPORT_SYMBOL_GPL vmlinux 0x244a6421 sdhci_pci_o2_probe +EXPORT_SYMBOL_GPL vmlinux 0x244e6a72 usb_free_coherent +EXPORT_SYMBOL_GPL vmlinux 0x245b1466 irq_gc_mask_clr_bit +EXPORT_SYMBOL_GPL vmlinux 0x24663207 crypto_aead_setauthsize +EXPORT_SYMBOL_GPL vmlinux 0x2469810f __rcu_read_unlock +EXPORT_SYMBOL_GPL vmlinux 0x247a507e fuse_direct_io +EXPORT_SYMBOL_GPL vmlinux 0x247ef831 kdb_unregister +EXPORT_SYMBOL_GPL vmlinux 0x24aac4d9 crypto_aes_expand_key +EXPORT_SYMBOL_GPL vmlinux 0x24b43670 pci_sriov_get_totalvfs +EXPORT_SYMBOL_GPL vmlinux 0x24c1c858 usb_driver_set_configuration +EXPORT_SYMBOL_GPL vmlinux 0x24c7698a xenbus_write +EXPORT_SYMBOL_GPL vmlinux 0x24eb7e32 leds_list +EXPORT_SYMBOL_GPL vmlinux 0x24f09a4d acpi_subsys_prepare +EXPORT_SYMBOL_GPL vmlinux 0x24f39c39 reset_control_reset +EXPORT_SYMBOL_GPL vmlinux 0x24f45195 usb_wait_anchor_empty_timeout +EXPORT_SYMBOL_GPL vmlinux 0x25379e73 clk_set_min_rate +EXPORT_SYMBOL_GPL vmlinux 0x253bbe1d posix_clock_unregister +EXPORT_SYMBOL_GPL vmlinux 0x253d0bc4 task_active_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0x2545c170 unregister_xenbus_watch +EXPORT_SYMBOL_GPL vmlinux 0x25574504 clk_fixed_rate_ops +EXPORT_SYMBOL_GPL vmlinux 0x2598ccd3 mbox_chan_received_data +EXPORT_SYMBOL_GPL vmlinux 0x25a5f519 bio_clone_mddev +EXPORT_SYMBOL_GPL vmlinux 0x25b827a6 rtc_update_irq +EXPORT_SYMBOL_GPL vmlinux 0x25d54c23 rdev_clear_badblocks +EXPORT_SYMBOL_GPL vmlinux 0x25e1ad5b __blkg_prfill_rwstat +EXPORT_SYMBOL_GPL vmlinux 0x25f02c87 xen_p2m_addr +EXPORT_SYMBOL_GPL vmlinux 0x25f2929d pinctrl_add_gpio_range +EXPORT_SYMBOL_GPL vmlinux 0x25f5de2a dbs_check_cpu +EXPORT_SYMBOL_GPL vmlinux 0x25f734d5 thermal_zone_device_register +EXPORT_SYMBOL_GPL vmlinux 0x262f20a8 local_clock +EXPORT_SYMBOL_GPL vmlinux 0x263f1e4d device_remove_file +EXPORT_SYMBOL_GPL vmlinux 0x264ae4c6 usb_anchor_resume_wakeups +EXPORT_SYMBOL_GPL vmlinux 0x26520970 vm_memory_committed +EXPORT_SYMBOL_GPL vmlinux 0x266b7638 interval_tree_remove +EXPORT_SYMBOL_GPL vmlinux 0x26866019 vfs_kern_mount +EXPORT_SYMBOL_GPL vmlinux 0x26965721 slow_virt_to_phys +EXPORT_SYMBOL_GPL vmlinux 0x26a37593 ata_sff_qc_issue +EXPORT_SYMBOL_GPL vmlinux 0x26a61d04 platform_device_put +EXPORT_SYMBOL_GPL vmlinux 0x26a767e8 gpiochip_remove +EXPORT_SYMBOL_GPL vmlinux 0x26a82852 cn_add_callback +EXPORT_SYMBOL_GPL vmlinux 0x26b3c701 __wake_up_sync +EXPORT_SYMBOL_GPL vmlinux 0x26b71fb4 ring_buffer_time_stamp +EXPORT_SYMBOL_GPL vmlinux 0x26c90ea4 scsi_eh_get_sense +EXPORT_SYMBOL_GPL vmlinux 0x26cfe7e9 locks_release_private +EXPORT_SYMBOL_GPL vmlinux 0x26ef5c35 __page_file_index +EXPORT_SYMBOL_GPL vmlinux 0x271a1e12 task_user_regset_view +EXPORT_SYMBOL_GPL vmlinux 0x2720c7b6 crypto_register_aeads +EXPORT_SYMBOL_GPL vmlinux 0x2737ab9b ip6_sk_dst_lookup_flow +EXPORT_SYMBOL_GPL vmlinux 0x273c1458 blkcg_activate_policy +EXPORT_SYMBOL_GPL vmlinux 0x274cf5e1 __clk_get_flags +EXPORT_SYMBOL_GPL vmlinux 0x279aec0c aead_register_instance +EXPORT_SYMBOL_GPL vmlinux 0x279cb985 apei_exec_pre_map_gars +EXPORT_SYMBOL_GPL vmlinux 0x27c0c4be eventfd_ctx_read +EXPORT_SYMBOL_GPL vmlinux 0x27c1e63f usb_amd_find_chipset_info +EXPORT_SYMBOL_GPL vmlinux 0x27d92167 regulator_list_voltage_linear_range +EXPORT_SYMBOL_GPL vmlinux 0x27f197c7 regulator_get +EXPORT_SYMBOL_GPL vmlinux 0x27f4f029 ftrace_set_global_filter +EXPORT_SYMBOL_GPL vmlinux 0x27fa66e1 nr_free_buffer_pages +EXPORT_SYMBOL_GPL vmlinux 0x27ffb3d1 usb_hub_claim_port +EXPORT_SYMBOL_GPL vmlinux 0x282965c5 i2c_new_dummy +EXPORT_SYMBOL_GPL vmlinux 0x282cdabc usb_led_activity +EXPORT_SYMBOL_GPL vmlinux 0x28781c61 spi_busnum_to_master +EXPORT_SYMBOL_GPL vmlinux 0x28d5728d rtc_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x28d8f951 blkcg_root +EXPORT_SYMBOL_GPL vmlinux 0x28e64c64 xen_has_pv_and_legacy_disk_devices +EXPORT_SYMBOL_GPL vmlinux 0x28eded83 vfs_setxattr +EXPORT_SYMBOL_GPL vmlinux 0x28ee6567 xfrm_audit_state_replay +EXPORT_SYMBOL_GPL vmlinux 0x295335cc md_stop +EXPORT_SYMBOL_GPL vmlinux 0x2960283e crypto_grab_spawn +EXPORT_SYMBOL_GPL vmlinux 0x29651ff2 fat_scan +EXPORT_SYMBOL_GPL vmlinux 0x298681cd skb_pull_rcsum +EXPORT_SYMBOL_GPL vmlinux 0x298d0a27 wm831x_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0x299d86fe i2c_generic_scl_recovery +EXPORT_SYMBOL_GPL vmlinux 0x29ad3899 pci_sriov_set_totalvfs +EXPORT_SYMBOL_GPL vmlinux 0x29c0f4f3 sysfs_unmerge_group +EXPORT_SYMBOL_GPL vmlinux 0x29ef3639 acpi_dev_suspend_late +EXPORT_SYMBOL_GPL vmlinux 0x2a2e8b25 usb_disable_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0x2a38e059 unregister_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x2a4cc1a2 spi_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x2a4db1b6 ata_ehi_clear_desc +EXPORT_SYMBOL_GPL vmlinux 0x2a4f6fa9 tcp_peer_is_proven +EXPORT_SYMBOL_GPL vmlinux 0x2a5514c9 devm_phy_destroy +EXPORT_SYMBOL_GPL vmlinux 0x2a5f5e28 sdio_writesb +EXPORT_SYMBOL_GPL vmlinux 0x2a678a13 __suspend_report_result +EXPORT_SYMBOL_GPL vmlinux 0x2a692928 debugfs_create_file +EXPORT_SYMBOL_GPL vmlinux 0x2aa5cba2 srcu_batches_completed +EXPORT_SYMBOL_GPL vmlinux 0x2aa740a1 unregister_kretprobes +EXPORT_SYMBOL_GPL vmlinux 0x2ad6a019 pinctrl_utils_add_config +EXPORT_SYMBOL_GPL vmlinux 0x2ad7ce6d pci_disable_pri +EXPORT_SYMBOL_GPL vmlinux 0x2af21460 of_css +EXPORT_SYMBOL_GPL vmlinux 0x2af63321 acpi_dev_resource_address_space +EXPORT_SYMBOL_GPL vmlinux 0x2b00bf29 evm_verifyxattr +EXPORT_SYMBOL_GPL vmlinux 0x2b069ab2 pci_remove_root_bus +EXPORT_SYMBOL_GPL vmlinux 0x2b29a779 mddev_resume +EXPORT_SYMBOL_GPL vmlinux 0x2b497fcc xenbus_dev_error +EXPORT_SYMBOL_GPL vmlinux 0x2b8c5809 mbox_chan_txdone +EXPORT_SYMBOL_GPL vmlinux 0x2b952517 clk_has_parent +EXPORT_SYMBOL_GPL vmlinux 0x2b9d7c7e __udp4_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x2bbb431b usb_autopm_get_interface +EXPORT_SYMBOL_GPL vmlinux 0x2bcdbff5 crypto_shash_finup +EXPORT_SYMBOL_GPL vmlinux 0x2bd52a35 usb_mon_register +EXPORT_SYMBOL_GPL vmlinux 0x2beb67c7 ata_bmdma_status +EXPORT_SYMBOL_GPL vmlinux 0x2bf6bf9a file_ra_state_init +EXPORT_SYMBOL_GPL vmlinux 0x2bfa985e nd_cmd_dimm_desc +EXPORT_SYMBOL_GPL vmlinux 0x2bfbfa34 tcp_unregister_congestion_control +EXPORT_SYMBOL_GPL vmlinux 0x2c133868 bit_wait_io_timeout +EXPORT_SYMBOL_GPL vmlinux 0x2c208607 power_supply_is_system_supplied +EXPORT_SYMBOL_GPL vmlinux 0x2c3054f9 net_inc_ingress_queue +EXPORT_SYMBOL_GPL vmlinux 0x2c7d9c64 xen_store_interface +EXPORT_SYMBOL_GPL vmlinux 0x2c7db649 irq_dispose_mapping +EXPORT_SYMBOL_GPL vmlinux 0x2c90b2a3 crypto_lookup_template +EXPORT_SYMBOL_GPL vmlinux 0x2c9aa072 spi_add_device +EXPORT_SYMBOL_GPL vmlinux 0x2ca0a151 usb_sg_cancel +EXPORT_SYMBOL_GPL vmlinux 0x2ca4d2c1 bdev_write_page +EXPORT_SYMBOL_GPL vmlinux 0x2cb7a47e gpiod_put +EXPORT_SYMBOL_GPL vmlinux 0x2cb85c3c br_fdb_test_addr_hook +EXPORT_SYMBOL_GPL vmlinux 0x2cd38b3b alarm_try_to_cancel +EXPORT_SYMBOL_GPL vmlinux 0x2ce98559 kcrypto_wq +EXPORT_SYMBOL_GPL vmlinux 0x2cea32ee unregister_oldmem_pfn_is_ram +EXPORT_SYMBOL_GPL vmlinux 0x2d0fae3b unregister_virtio_driver +EXPORT_SYMBOL_GPL vmlinux 0x2d104310 ata_sg_init +EXPORT_SYMBOL_GPL vmlinux 0x2d13b3f9 tps65912_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x2d1b02d2 usermodehelper_read_lock_wait +EXPORT_SYMBOL_GPL vmlinux 0x2d41e6f5 __trace_puts +EXPORT_SYMBOL_GPL vmlinux 0x2d4dc088 param_ops_bool_enable_only +EXPORT_SYMBOL_GPL vmlinux 0x2d59c954 edac_handlers +EXPORT_SYMBOL_GPL vmlinux 0x2d676020 component_del +EXPORT_SYMBOL_GPL vmlinux 0x2d9f2ce3 sched_clock_idle_wakeup_event +EXPORT_SYMBOL_GPL vmlinux 0x2db457d4 sock_gen_put +EXPORT_SYMBOL_GPL vmlinux 0x2dce48e8 rio_dev_get +EXPORT_SYMBOL_GPL vmlinux 0x2dd0e267 n_tty_inherit_ops +EXPORT_SYMBOL_GPL vmlinux 0x2e1da9fb probe_kernel_read +EXPORT_SYMBOL_GPL vmlinux 0x2e2360b1 ftrace_set_global_notrace +EXPORT_SYMBOL_GPL vmlinux 0x2e2df7f4 irq_remapping_cap +EXPORT_SYMBOL_GPL vmlinux 0x2e2f1740 ring_buffer_record_disable_cpu +EXPORT_SYMBOL_GPL vmlinux 0x2e6678de list_lru_walk_one +EXPORT_SYMBOL_GPL vmlinux 0x2ea29561 vma_kernel_pagesize +EXPORT_SYMBOL_GPL vmlinux 0x2ea2c520 ata_dummy_port_info +EXPORT_SYMBOL_GPL vmlinux 0x2ebe3135 cpu_is_hotpluggable +EXPORT_SYMBOL_GPL vmlinux 0x2ec4eee6 __tracepoint_suspend_resume +EXPORT_SYMBOL_GPL vmlinux 0x2eca33b0 devm_hwmon_device_register_with_groups +EXPORT_SYMBOL_GPL vmlinux 0x2ed5185c percpu_ida_destroy +EXPORT_SYMBOL_GPL vmlinux 0x2edb7fa7 rdev_set_badblocks +EXPORT_SYMBOL_GPL vmlinux 0x2edbda81 regulator_get_hardware_vsel_register +EXPORT_SYMBOL_GPL vmlinux 0x2eecb919 dax_clear_blocks +EXPORT_SYMBOL_GPL vmlinux 0x2ef2761c handle_fasteoi_irq +EXPORT_SYMBOL_GPL vmlinux 0x2f0d9053 usb_otg_state_string +EXPORT_SYMBOL_GPL vmlinux 0x2f2231db inet6_destroy_sock +EXPORT_SYMBOL_GPL vmlinux 0x2f31f9d9 blkcg_policy_register +EXPORT_SYMBOL_GPL vmlinux 0x2f4113a2 dcookie_register +EXPORT_SYMBOL_GPL vmlinux 0x2f64415f unregister_acpi_hed_notifier +EXPORT_SYMBOL_GPL vmlinux 0x2f72d845 usb_autopm_put_interface_async +EXPORT_SYMBOL_GPL vmlinux 0x2f766c59 xen_swiotlb_dma_supported +EXPORT_SYMBOL_GPL vmlinux 0x2f80dcf6 bd_unlink_disk_holder +EXPORT_SYMBOL_GPL vmlinux 0x2f98408a nf_unregister_afinfo +EXPORT_SYMBOL_GPL vmlinux 0x2f9c6624 wb_writeout_inc +EXPORT_SYMBOL_GPL vmlinux 0x2fb8688c sock_prot_inuse_add +EXPORT_SYMBOL_GPL vmlinux 0x2fbd5875 bus_get_kset +EXPORT_SYMBOL_GPL vmlinux 0x2fd8cba9 freeze_wake +EXPORT_SYMBOL_GPL vmlinux 0x2ff9eb8b hwmon_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x30060394 splice_to_pipe +EXPORT_SYMBOL_GPL vmlinux 0x30147780 iommu_map +EXPORT_SYMBOL_GPL vmlinux 0x3030885a crypto_alg_lookup +EXPORT_SYMBOL_GPL vmlinux 0x303edeb9 pwm_enable +EXPORT_SYMBOL_GPL vmlinux 0x30522da1 device_for_each_child_reverse +EXPORT_SYMBOL_GPL vmlinux 0x30570504 pci_add_dynid +EXPORT_SYMBOL_GPL vmlinux 0x30619f18 scsi_internal_device_unblock +EXPORT_SYMBOL_GPL vmlinux 0x30635782 cpu_has_xfeatures +EXPORT_SYMBOL_GPL vmlinux 0x3088d40e rtnl_put_cacheinfo +EXPORT_SYMBOL_GPL vmlinux 0x309471b6 xen_xlate_unmap_gfn_range +EXPORT_SYMBOL_GPL vmlinux 0x309e694f pwm_set_polarity +EXPORT_SYMBOL_GPL vmlinux 0x30b151d0 of_pwm_get +EXPORT_SYMBOL_GPL vmlinux 0x30ceade4 dm_internal_resume +EXPORT_SYMBOL_GPL vmlinux 0x30d624d7 gpiod_to_chip +EXPORT_SYMBOL_GPL vmlinux 0x30f9d223 ping_queue_rcv_skb +EXPORT_SYMBOL_GPL vmlinux 0x3101ce80 pci_reset_slot +EXPORT_SYMBOL_GPL vmlinux 0x3109b751 cpu_clock +EXPORT_SYMBOL_GPL vmlinux 0x31128b8e hv_remove_kexec_handler +EXPORT_SYMBOL_GPL vmlinux 0x31266931 con_debug_leave +EXPORT_SYMBOL_GPL vmlinux 0x315bba6a crypto_hash_walk_done +EXPORT_SYMBOL_GPL vmlinux 0x31a36534 rhashtable_init +EXPORT_SYMBOL_GPL vmlinux 0x31c0c2d1 dm_put +EXPORT_SYMBOL_GPL vmlinux 0x31c7970f pciserial_suspend_ports +EXPORT_SYMBOL_GPL vmlinux 0x31fb24fe regulator_bulk_disable +EXPORT_SYMBOL_GPL vmlinux 0x3211d408 reservation_object_get_fences_rcu +EXPORT_SYMBOL_GPL vmlinux 0x321bdbb1 compat_get_timeval +EXPORT_SYMBOL_GPL vmlinux 0x325e677c gnttab_grant_foreign_transfer_ref +EXPORT_SYMBOL_GPL vmlinux 0x32659f8f crypto_lookup_aead +EXPORT_SYMBOL_GPL vmlinux 0x328678b8 shmem_get_seals +EXPORT_SYMBOL_GPL vmlinux 0x3288fca8 led_trigger_store +EXPORT_SYMBOL_GPL vmlinux 0x328995b5 tracing_generic_entry_update +EXPORT_SYMBOL_GPL vmlinux 0x32b2e626 devm_regmap_init_mmio_clk +EXPORT_SYMBOL_GPL vmlinux 0x32bc0fcf preempt_notifier_dec +EXPORT_SYMBOL_GPL vmlinux 0x32bded08 __tracepoint_block_bio_remap +EXPORT_SYMBOL_GPL vmlinux 0x32c3cb4e class_compat_register +EXPORT_SYMBOL_GPL vmlinux 0x32c5941a acpi_subsys_complete +EXPORT_SYMBOL_GPL vmlinux 0x32ddd5b6 call_rcu +EXPORT_SYMBOL_GPL vmlinux 0x32f0dfdc nvdimm_pmem_region_create +EXPORT_SYMBOL_GPL vmlinux 0x3324703c pinctrl_register +EXPORT_SYMBOL_GPL vmlinux 0x332c1287 phy_create_lookup +EXPORT_SYMBOL_GPL vmlinux 0x335c570f enable_percpu_irq +EXPORT_SYMBOL_GPL vmlinux 0x335fc03b clk_gpio_gate_ops +EXPORT_SYMBOL_GPL vmlinux 0x336154ca rcutorture_record_test_transition +EXPORT_SYMBOL_GPL vmlinux 0x3362b03c xen_p2m_size +EXPORT_SYMBOL_GPL vmlinux 0x33655159 xen_pcpu_hotplug_sync +EXPORT_SYMBOL_GPL vmlinux 0x337e6492 crypto_chain +EXPORT_SYMBOL_GPL vmlinux 0x33a2492b debugfs_create_u8 +EXPORT_SYMBOL_GPL vmlinux 0x33b96e5d apei_exec_write_register +EXPORT_SYMBOL_GPL vmlinux 0x33d4e7c1 regulator_get_linear_step +EXPORT_SYMBOL_GPL vmlinux 0x340588cc __ip6_local_out +EXPORT_SYMBOL_GPL vmlinux 0x340ace90 tcp_ca_openreq_child +EXPORT_SYMBOL_GPL vmlinux 0x340b46fa transport_class_unregister +EXPORT_SYMBOL_GPL vmlinux 0x34111b49 crypto_shash_final +EXPORT_SYMBOL_GPL vmlinux 0x341d0d4d __get_vm_area +EXPORT_SYMBOL_GPL vmlinux 0x344634a4 eventfd_ctx_fileget +EXPORT_SYMBOL_GPL vmlinux 0x345ce799 ip_build_and_send_pkt +EXPORT_SYMBOL_GPL vmlinux 0x3465fce6 __tracepoint_block_bio_complete +EXPORT_SYMBOL_GPL vmlinux 0x347fd4b3 eventfd_ctx_get +EXPORT_SYMBOL_GPL vmlinux 0x348721a0 iommu_attach_group +EXPORT_SYMBOL_GPL vmlinux 0x3496d3c1 ata_ehi_push_desc +EXPORT_SYMBOL_GPL vmlinux 0x34a4f63d irq_find_host +EXPORT_SYMBOL_GPL vmlinux 0x34d56291 tty_buffer_space_avail +EXPORT_SYMBOL_GPL vmlinux 0x34e9c06b rio_mport_get_feature +EXPORT_SYMBOL_GPL vmlinux 0x34ec6c6e blk_queue_flush +EXPORT_SYMBOL_GPL vmlinux 0x35176301 rcu_batches_completed_sched +EXPORT_SYMBOL_GPL vmlinux 0x3520a726 nf_register_afinfo +EXPORT_SYMBOL_GPL vmlinux 0x352650ee gnttab_batch_map +EXPORT_SYMBOL_GPL vmlinux 0x35281b25 extcon_dev_free +EXPORT_SYMBOL_GPL vmlinux 0x354e1b25 pm_generic_poweroff +EXPORT_SYMBOL_GPL vmlinux 0x355af742 sk_setup_caps +EXPORT_SYMBOL_GPL vmlinux 0x3564775c device_store_bool +EXPORT_SYMBOL_GPL vmlinux 0x356801a5 ata_port_pbar_desc +EXPORT_SYMBOL_GPL vmlinux 0x35791f2e extcon_dev_unregister +EXPORT_SYMBOL_GPL vmlinux 0x35867b0f ipv4_sk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x358ff60f twl_get_hfclk_rate +EXPORT_SYMBOL_GPL vmlinux 0x35910f72 tcp_orphan_count +EXPORT_SYMBOL_GPL vmlinux 0x35a3c859 ip6_redirect +EXPORT_SYMBOL_GPL vmlinux 0x35bf2acd nd_fletcher64 +EXPORT_SYMBOL_GPL vmlinux 0x35ca1519 thermal_zone_unbind_cooling_device +EXPORT_SYMBOL_GPL vmlinux 0x35f10f43 nfq_ct_nat_hook +EXPORT_SYMBOL_GPL vmlinux 0x35fe646d platform_device_register_full +EXPORT_SYMBOL_GPL vmlinux 0x3600a96e pci_bus_max_busnr +EXPORT_SYMBOL_GPL vmlinux 0x36075bb5 iommu_group_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x3614424a __mmu_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x36164846 pingv6_prot +EXPORT_SYMBOL_GPL vmlinux 0x361e2bcc save_stack_trace +EXPORT_SYMBOL_GPL vmlinux 0x363a34d3 xen_xenbus_fops +EXPORT_SYMBOL_GPL vmlinux 0x366cd11e wm8350_gpio_config +EXPORT_SYMBOL_GPL vmlinux 0x368f1fea static_key_slow_inc +EXPORT_SYMBOL_GPL vmlinux 0x369bffda crypto_unregister_rng +EXPORT_SYMBOL_GPL vmlinux 0x369fcd70 tracing_snapshot +EXPORT_SYMBOL_GPL vmlinux 0x36ae4d05 pm_stay_awake +EXPORT_SYMBOL_GPL vmlinux 0x36b5497e intel_iommu_enabled +EXPORT_SYMBOL_GPL vmlinux 0x36bda7b0 cpuidle_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0x36d0aff1 gpiod_set_debounce +EXPORT_SYMBOL_GPL vmlinux 0x36d9b43c usb_hcd_giveback_urb +EXPORT_SYMBOL_GPL vmlinux 0x36dab97f trace_clock_jiffies +EXPORT_SYMBOL_GPL vmlinux 0x36de6ac0 watchdog_init_timeout +EXPORT_SYMBOL_GPL vmlinux 0x36df16f0 ip6_append_data +EXPORT_SYMBOL_GPL vmlinux 0x36f3d85d pm_runtime_barrier +EXPORT_SYMBOL_GPL vmlinux 0x36fc322e dev_pm_qos_add_notifier +EXPORT_SYMBOL_GPL vmlinux 0x3701097b pci_disable_pcie_error_reporting +EXPORT_SYMBOL_GPL vmlinux 0x370318f0 gpiod_get_value +EXPORT_SYMBOL_GPL vmlinux 0x37061d78 irq_domain_associate +EXPORT_SYMBOL_GPL vmlinux 0x370d6dc6 extcon_get_cable_state +EXPORT_SYMBOL_GPL vmlinux 0x374055c4 pci_max_pasids +EXPORT_SYMBOL_GPL vmlinux 0x37532dfc sg_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x3777d567 alloc_vm_area +EXPORT_SYMBOL_GPL vmlinux 0x377b8590 mddev_suspend +EXPORT_SYMBOL_GPL vmlinux 0x378c5d31 blk_add_request_payload +EXPORT_SYMBOL_GPL vmlinux 0x37bf451a irq_get_domain_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x37d2889e ata_bmdma_post_internal_cmd +EXPORT_SYMBOL_GPL vmlinux 0x37da5e30 iommu_domain_set_attr +EXPORT_SYMBOL_GPL vmlinux 0x37f1ffbf gdt_page +EXPORT_SYMBOL_GPL vmlinux 0x3802bd70 usb_debug_root +EXPORT_SYMBOL_GPL vmlinux 0x38369056 dev_attr_em_message +EXPORT_SYMBOL_GPL vmlinux 0x384c72ca bus_rescan_devices +EXPORT_SYMBOL_GPL vmlinux 0x385efb40 xen_swiotlb_unmap_page +EXPORT_SYMBOL_GPL vmlinux 0x3861f4f1 gpiod_is_active_low +EXPORT_SYMBOL_GPL vmlinux 0x3863eeb5 clk_register +EXPORT_SYMBOL_GPL vmlinux 0x38722f80 kernel_fpu_end +EXPORT_SYMBOL_GPL vmlinux 0x389a47df acpi_dma_controller_register +EXPORT_SYMBOL_GPL vmlinux 0x38be6c50 net_ns_type_operations +EXPORT_SYMBOL_GPL vmlinux 0x38d56e10 fat_time_unix2fat +EXPORT_SYMBOL_GPL vmlinux 0x38e5bc5a clk_set_rate_range +EXPORT_SYMBOL_GPL vmlinux 0x391e07b8 pci_assign_unassigned_bridge_resources +EXPORT_SYMBOL_GPL vmlinux 0x393d4a42 regmap_irq_get_domain +EXPORT_SYMBOL_GPL vmlinux 0x39435e46 sdio_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0x3954119e sk_detach_filter +EXPORT_SYMBOL_GPL vmlinux 0x395a1f74 set_cpus_allowed_ptr +EXPORT_SYMBOL_GPL vmlinux 0x395e59d7 klp_disable_patch +EXPORT_SYMBOL_GPL vmlinux 0x39c5721a xenbus_free_evtchn +EXPORT_SYMBOL_GPL vmlinux 0x39ca07cc maxim_charger_calc_reg_current +EXPORT_SYMBOL_GPL vmlinux 0x39d7acfc usb_alloc_dev +EXPORT_SYMBOL_GPL vmlinux 0x39e61495 nf_logger_request_module +EXPORT_SYMBOL_GPL vmlinux 0x39f66830 usb_acpi_set_power_state +EXPORT_SYMBOL_GPL vmlinux 0x3a1eaf83 dev_pm_set_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0x3a26ed11 sched_clock +EXPORT_SYMBOL_GPL vmlinux 0x3a2e9867 ipv4_sk_redirect +EXPORT_SYMBOL_GPL vmlinux 0x3a37ce81 hrtimer_try_to_cancel +EXPORT_SYMBOL_GPL vmlinux 0x3a38dc65 memory_failure +EXPORT_SYMBOL_GPL vmlinux 0x3a3d2d6a bmp085_detect +EXPORT_SYMBOL_GPL vmlinux 0x3a4f6a32 ata_sff_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x3a536bd7 ring_buffer_read_finish +EXPORT_SYMBOL_GPL vmlinux 0x3a7c18e6 anon_inode_getfile +EXPORT_SYMBOL_GPL vmlinux 0x3a7d80f9 xen_max_p2m_pfn +EXPORT_SYMBOL_GPL vmlinux 0x3a927111 hrtimer_cancel +EXPORT_SYMBOL_GPL vmlinux 0x3a953c87 fwnode_property_read_u64_array +EXPORT_SYMBOL_GPL vmlinux 0x3a9be019 asymmetric_key_id_partial +EXPORT_SYMBOL_GPL vmlinux 0x3acdf325 twl4030_audio_enable_resource +EXPORT_SYMBOL_GPL vmlinux 0x3ad0e201 scatterwalk_copychunks +EXPORT_SYMBOL_GPL vmlinux 0x3af9a8da apei_get_debugfs_dir +EXPORT_SYMBOL_GPL vmlinux 0x3afa11ca percpu_ida_free +EXPORT_SYMBOL_GPL vmlinux 0x3b00061f wakeup_source_register +EXPORT_SYMBOL_GPL vmlinux 0x3b014787 __pm_wakeup_event +EXPORT_SYMBOL_GPL vmlinux 0x3b38466b inet_csk_route_child_sock +EXPORT_SYMBOL_GPL vmlinux 0x3b40c022 device_property_read_u8_array +EXPORT_SYMBOL_GPL vmlinux 0x3b4418b1 sdio_writel +EXPORT_SYMBOL_GPL vmlinux 0x3b5f79f7 virtqueue_disable_cb +EXPORT_SYMBOL_GPL vmlinux 0x3b653236 pwm_request +EXPORT_SYMBOL_GPL vmlinux 0x3b7145bb apei_exec_read_register_value +EXPORT_SYMBOL_GPL vmlinux 0x3b7e913e tty_set_termios +EXPORT_SYMBOL_GPL vmlinux 0x3ba1e0c6 serial8250_rpm_get +EXPORT_SYMBOL_GPL vmlinux 0x3c1d6413 blkcipher_walk_phys +EXPORT_SYMBOL_GPL vmlinux 0x3c2b4ec6 tty_perform_flush +EXPORT_SYMBOL_GPL vmlinux 0x3c904d26 ata_pci_bmdma_init_one +EXPORT_SYMBOL_GPL vmlinux 0x3c9390db pci_vpd_find_tag +EXPORT_SYMBOL_GPL vmlinux 0x3cbc205c pci_ignore_hotplug +EXPORT_SYMBOL_GPL vmlinux 0x3cc10aad blk_queue_bypass_end +EXPORT_SYMBOL_GPL vmlinux 0x3cd06035 add_input_randomness +EXPORT_SYMBOL_GPL vmlinux 0x3cef0eab blk_insert_cloned_request +EXPORT_SYMBOL_GPL vmlinux 0x3cf28a27 fanout_mutex +EXPORT_SYMBOL_GPL vmlinux 0x3d108c88 sata_link_debounce +EXPORT_SYMBOL_GPL vmlinux 0x3d116534 tcp_cong_avoid_ai +EXPORT_SYMBOL_GPL vmlinux 0x3d28d101 pci_store_saved_state +EXPORT_SYMBOL_GPL vmlinux 0x3d2e7a52 tps6586x_read +EXPORT_SYMBOL_GPL vmlinux 0x3d388324 dpm_resume_end +EXPORT_SYMBOL_GPL vmlinux 0x3d3b8fe2 dax_fault +EXPORT_SYMBOL_GPL vmlinux 0x3d5f392d acpi_os_unmap_memory +EXPORT_SYMBOL_GPL vmlinux 0x3d6d0d58 wm5110_revd_irq +EXPORT_SYMBOL_GPL vmlinux 0x3d718d8f blk_set_queue_dying +EXPORT_SYMBOL_GPL vmlinux 0x3d77c2c7 elv_register +EXPORT_SYMBOL_GPL vmlinux 0x3d7ea99a gnttab_grant_foreign_transfer +EXPORT_SYMBOL_GPL vmlinux 0x3dae6404 unregister_jprobes +EXPORT_SYMBOL_GPL vmlinux 0x3dc249ae tps65912_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x3dc916b6 crypto_fl_tab +EXPORT_SYMBOL_GPL vmlinux 0x3dd2a38a part_round_stats +EXPORT_SYMBOL_GPL vmlinux 0x3dd8181e __clk_get_parent +EXPORT_SYMBOL_GPL vmlinux 0x3de9cae1 crypto_remove_final +EXPORT_SYMBOL_GPL vmlinux 0x3dea77fb ata_pci_sff_activate_host +EXPORT_SYMBOL_GPL vmlinux 0x3dfc436e percpu_ref_kill_and_confirm +EXPORT_SYMBOL_GPL vmlinux 0x3e19907c find_module +EXPORT_SYMBOL_GPL vmlinux 0x3e237ba3 mmu_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x3e3ba7d3 blocking_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0x3e3e984f acpi_subsys_resume_early +EXPORT_SYMBOL_GPL vmlinux 0x3e5000fb invalidate_inode_pages2 +EXPORT_SYMBOL_GPL vmlinux 0x3e54b244 btree_lookup +EXPORT_SYMBOL_GPL vmlinux 0x3e5e1937 rcu_batches_started_sched +EXPORT_SYMBOL_GPL vmlinux 0x3e6c09eb dax_do_io +EXPORT_SYMBOL_GPL vmlinux 0x3e7080cb mpi_read_from_buffer +EXPORT_SYMBOL_GPL vmlinux 0x3ea5196d apei_osc_setup +EXPORT_SYMBOL_GPL vmlinux 0x3eb6755d regulator_disable_deferred +EXPORT_SYMBOL_GPL vmlinux 0x3ebeef20 wm831x_device_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x3ec486d1 acpi_create_platform_device +EXPORT_SYMBOL_GPL vmlinux 0x3ee30432 inet_csk_get_port +EXPORT_SYMBOL_GPL vmlinux 0x3eeb32e5 security_inode_create +EXPORT_SYMBOL_GPL vmlinux 0x3ef22703 ata_scsi_slave_destroy +EXPORT_SYMBOL_GPL vmlinux 0x3ef797ff ata_scsi_simulate +EXPORT_SYMBOL_GPL vmlinux 0x3efb35c9 get_online_cpus +EXPORT_SYMBOL_GPL vmlinux 0x3f0179c7 tty_prepare_flip_string +EXPORT_SYMBOL_GPL vmlinux 0x3f069c5e irq_map_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x3f229c4c oops_begin +EXPORT_SYMBOL_GPL vmlinux 0x3f453cbe phy_power_off +EXPORT_SYMBOL_GPL vmlinux 0x3f5aaf31 is_dock_device +EXPORT_SYMBOL_GPL vmlinux 0x3f84d4c9 gnttab_release_grant_reference +EXPORT_SYMBOL_GPL vmlinux 0x3fa5af9c nd_cmd_bus_desc +EXPORT_SYMBOL_GPL vmlinux 0x3fbe8098 pwm_put +EXPORT_SYMBOL_GPL vmlinux 0x3fc51481 ata_sas_port_init +EXPORT_SYMBOL_GPL vmlinux 0x3fc72d3d __tracepoint_kfree_skb +EXPORT_SYMBOL_GPL vmlinux 0x3fc90022 cpufreq_frequency_table_get_index +EXPORT_SYMBOL_GPL vmlinux 0x3fd39fcf scsi_flush_work +EXPORT_SYMBOL_GPL vmlinux 0x3fdd5bf9 skcipher_geniv_free +EXPORT_SYMBOL_GPL vmlinux 0x3feae2a1 rio_mport_get_efb +EXPORT_SYMBOL_GPL vmlinux 0x3feb39c3 component_master_add +EXPORT_SYMBOL_GPL vmlinux 0x400a024b acpi_scan_lock_release +EXPORT_SYMBOL_GPL vmlinux 0x401b92d8 uart_handle_dcd_change +EXPORT_SYMBOL_GPL vmlinux 0x403f9529 gpio_request_one +EXPORT_SYMBOL_GPL vmlinux 0x4045c494 filter_match_preds +EXPORT_SYMBOL_GPL vmlinux 0x404a3376 get_current_tty +EXPORT_SYMBOL_GPL vmlinux 0x4065d168 pm_print_active_wakeup_sources +EXPORT_SYMBOL_GPL vmlinux 0x406c2065 lp8788_read_byte +EXPORT_SYMBOL_GPL vmlinux 0x406c4cb1 hrtimer_resolution +EXPORT_SYMBOL_GPL vmlinux 0x40800e4e crypto_alloc_akcipher +EXPORT_SYMBOL_GPL vmlinux 0x408038a8 ata_platform_remove_one +EXPORT_SYMBOL_GPL vmlinux 0x40956073 sysfs_remove_groups +EXPORT_SYMBOL_GPL vmlinux 0x40964c7f thermal_zone_get_temp +EXPORT_SYMBOL_GPL vmlinux 0x40a5c0bb ata_sff_tf_load +EXPORT_SYMBOL_GPL vmlinux 0x40af0dec ata_xfer_mode2mask +EXPORT_SYMBOL_GPL vmlinux 0x40d46b21 crypto_ft_tab +EXPORT_SYMBOL_GPL vmlinux 0x40d4cbbd spi_alloc_master +EXPORT_SYMBOL_GPL vmlinux 0x40f0683e reset_control_put +EXPORT_SYMBOL_GPL vmlinux 0x410e36e7 debugfs_create_u64 +EXPORT_SYMBOL_GPL vmlinux 0x410e87d3 debugfs_create_dir +EXPORT_SYMBOL_GPL vmlinux 0x412dbf61 devfreq_event_remove_edev +EXPORT_SYMBOL_GPL vmlinux 0x413add64 xenbus_alloc_evtchn +EXPORT_SYMBOL_GPL vmlinux 0x4148b3c4 irq_set_chip_and_handler_name +EXPORT_SYMBOL_GPL vmlinux 0x41492a80 device_move +EXPORT_SYMBOL_GPL vmlinux 0x41742338 subsys_interface_unregister +EXPORT_SYMBOL_GPL vmlinux 0x41814cb8 dirty_writeback_interval +EXPORT_SYMBOL_GPL vmlinux 0x41948fa7 pwm_can_sleep +EXPORT_SYMBOL_GPL vmlinux 0x419bd823 attribute_container_unregister +EXPORT_SYMBOL_GPL vmlinux 0x41bf3932 usb_queue_reset_device +EXPORT_SYMBOL_GPL vmlinux 0x41ce61e5 hvc_alloc +EXPORT_SYMBOL_GPL vmlinux 0x41d71157 spi_async_locked +EXPORT_SYMBOL_GPL vmlinux 0x41f1f723 blkcg_policy_unregister +EXPORT_SYMBOL_GPL vmlinux 0x4213a51a efivar_entry_set_safe +EXPORT_SYMBOL_GPL vmlinux 0x4227baaa device_reprobe +EXPORT_SYMBOL_GPL vmlinux 0x42371278 iommu_unmap +EXPORT_SYMBOL_GPL vmlinux 0x423a0434 led_trigger_blink +EXPORT_SYMBOL_GPL vmlinux 0x424acc6d scatterwalk_done +EXPORT_SYMBOL_GPL vmlinux 0x42668e79 iptunnel_handle_offloads +EXPORT_SYMBOL_GPL vmlinux 0x427d5c68 register_jprobes +EXPORT_SYMBOL_GPL vmlinux 0x42825ce2 rcu_scheduler_active +EXPORT_SYMBOL_GPL vmlinux 0x428aa1f2 nvdimm_blk_region_create +EXPORT_SYMBOL_GPL vmlinux 0x428b107c elv_unregister +EXPORT_SYMBOL_GPL vmlinux 0x429327a5 ata_bmdma_dumb_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0x42981ced queue_kthread_work +EXPORT_SYMBOL_GPL vmlinux 0x42a8b648 rio_get_comptag +EXPORT_SYMBOL_GPL vmlinux 0x42bb8d80 perf_trace_buf_prepare +EXPORT_SYMBOL_GPL vmlinux 0x42cd39e2 sysfs_chmod_file +EXPORT_SYMBOL_GPL vmlinux 0x42def5c0 ata_sff_drain_fifo +EXPORT_SYMBOL_GPL vmlinux 0x42e30b7b __init_kthread_worker +EXPORT_SYMBOL_GPL vmlinux 0x43005674 bus_create_file +EXPORT_SYMBOL_GPL vmlinux 0x430065bc class_interface_register +EXPORT_SYMBOL_GPL vmlinux 0x43141afa ata_bmdma_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x431bf93c wm5110_irq +EXPORT_SYMBOL_GPL vmlinux 0x4340a84a get_task_pid +EXPORT_SYMBOL_GPL vmlinux 0x434b50e0 serial8250_rpm_put +EXPORT_SYMBOL_GPL vmlinux 0x43619e1a scatterwalk_ffwd +EXPORT_SYMBOL_GPL vmlinux 0x4363e800 __efivar_entry_get +EXPORT_SYMBOL_GPL vmlinux 0x43908836 pci_cfg_access_lock +EXPORT_SYMBOL_GPL vmlinux 0x43923f45 usb_block_urb +EXPORT_SYMBOL_GPL vmlinux 0x4395953e usb_kill_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x4397f13e blkg_conf_prep +EXPORT_SYMBOL_GPL vmlinux 0x43a04186 device_show_bool +EXPORT_SYMBOL_GPL vmlinux 0x43a53735 __alloc_workqueue_key +EXPORT_SYMBOL_GPL vmlinux 0x43a53fcb _submit_bh +EXPORT_SYMBOL_GPL vmlinux 0x43c9780b crypto_alg_extsize +EXPORT_SYMBOL_GPL vmlinux 0x43d16524 udp4_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x43ea9599 regulator_set_current_limit +EXPORT_SYMBOL_GPL vmlinux 0x43ed04ab crypto_grab_skcipher +EXPORT_SYMBOL_GPL vmlinux 0x43f56e82 ata_xfer_mode2shift +EXPORT_SYMBOL_GPL vmlinux 0x43f81957 clk_round_rate +EXPORT_SYMBOL_GPL vmlinux 0x4403a836 ablkcipher_walk_done +EXPORT_SYMBOL_GPL vmlinux 0x440729ea power_supply_unregister +EXPORT_SYMBOL_GPL vmlinux 0x441fa356 irq_ts_save +EXPORT_SYMBOL_GPL vmlinux 0x442b9d4d skb_to_sgvec_nomark +EXPORT_SYMBOL_GPL vmlinux 0x44472d3a __clocksource_register_scale +EXPORT_SYMBOL_GPL vmlinux 0x444ac84d ata_port_schedule_eh +EXPORT_SYMBOL_GPL vmlinux 0x4454d747 __module_address +EXPORT_SYMBOL_GPL vmlinux 0x4484a5a4 wait_for_device_probe +EXPORT_SYMBOL_GPL vmlinux 0x4493a535 pcc_mbox_free_channel +EXPORT_SYMBOL_GPL vmlinux 0x44972457 tps6586x_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0x44981043 xenbus_dev_suspend +EXPORT_SYMBOL_GPL vmlinux 0x4498753a ata_dev_set_feature +EXPORT_SYMBOL_GPL vmlinux 0x44c1a38b spi_master_resume +EXPORT_SYMBOL_GPL vmlinux 0x44ca28ce dev_pm_qos_expose_latency_tolerance +EXPORT_SYMBOL_GPL vmlinux 0x44d89c06 rio_request_outb_dbell +EXPORT_SYMBOL_GPL vmlinux 0x44d8f1ac irq_domain_remove +EXPORT_SYMBOL_GPL vmlinux 0x44e2b5f4 regmap_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0x4508e361 devm_regulator_bulk_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x450fb522 kmsg_dump_get_buffer +EXPORT_SYMBOL_GPL vmlinux 0x45163899 free_vm_area +EXPORT_SYMBOL_GPL vmlinux 0x4532e810 led_trigger_blink_oneshot +EXPORT_SYMBOL_GPL vmlinux 0x453b1bbc swiotlb_tbl_sync_single +EXPORT_SYMBOL_GPL vmlinux 0x4541fe0d mtrr_state +EXPORT_SYMBOL_GPL vmlinux 0x4546beba devres_for_each_res +EXPORT_SYMBOL_GPL vmlinux 0x457594fa crypto_alg_list +EXPORT_SYMBOL_GPL vmlinux 0x4575a829 uart_set_options +EXPORT_SYMBOL_GPL vmlinux 0x45afc8d4 fuse_do_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x45b7d6a0 btree_destroy +EXPORT_SYMBOL_GPL vmlinux 0x45bf1ff3 crypto_inc +EXPORT_SYMBOL_GPL vmlinux 0x45c1708e rtc_set_alarm +EXPORT_SYMBOL_GPL vmlinux 0x45d14bdf hypercall_page +EXPORT_SYMBOL_GPL vmlinux 0x45d3c301 dpm_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0x45d3d463 skcipher_geniv_alloc +EXPORT_SYMBOL_GPL vmlinux 0x45f93d39 pid_vnr +EXPORT_SYMBOL_GPL vmlinux 0x46013233 net_dec_ingress_queue +EXPORT_SYMBOL_GPL vmlinux 0x460f31aa rodata_test_data +EXPORT_SYMBOL_GPL vmlinux 0x460f7531 wait_rcu_gp +EXPORT_SYMBOL_GPL vmlinux 0x461d635d class_for_each_device +EXPORT_SYMBOL_GPL vmlinux 0x4625de29 relay_file_operations +EXPORT_SYMBOL_GPL vmlinux 0x463d24ea ipv6_fixup_options +EXPORT_SYMBOL_GPL vmlinux 0x46434934 disable_kprobe +EXPORT_SYMBOL_GPL vmlinux 0x466208a4 sock_diag_check_cookie +EXPORT_SYMBOL_GPL vmlinux 0x46713f78 nd_device_attribute_group +EXPORT_SYMBOL_GPL vmlinux 0x4672af3d regulator_disable_regmap +EXPORT_SYMBOL_GPL vmlinux 0x4672e88b __crypto_dequeue_request +EXPORT_SYMBOL_GPL vmlinux 0x4678157d pci_bus_sem +EXPORT_SYMBOL_GPL vmlinux 0x467d2018 usb_hcd_amd_remote_wakeup_quirk +EXPORT_SYMBOL_GPL vmlinux 0x46825057 nd_mapping_attribute_group +EXPORT_SYMBOL_GPL vmlinux 0x46826fbb pm_generic_restore_early +EXPORT_SYMBOL_GPL vmlinux 0x4688d7ec pvclock_gtod_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x469143c4 x509_free_certificate +EXPORT_SYMBOL_GPL vmlinux 0x46b1c097 rio_request_inb_mbox +EXPORT_SYMBOL_GPL vmlinux 0x46bf41f5 sysfs_notify +EXPORT_SYMBOL_GPL vmlinux 0x46c45803 sata_scr_valid +EXPORT_SYMBOL_GPL vmlinux 0x46e0e615 phy_create +EXPORT_SYMBOL_GPL vmlinux 0x471cd08b ata_sff_freeze +EXPORT_SYMBOL_GPL vmlinux 0x47229b5c gpio_request +EXPORT_SYMBOL_GPL vmlinux 0x472e798d ip_route_output_flow +EXPORT_SYMBOL_GPL vmlinux 0x47333502 power_supply_get_by_name +EXPORT_SYMBOL_GPL vmlinux 0x474f2ead blkcipher_walk_done +EXPORT_SYMBOL_GPL vmlinux 0x4761f17c register_netevent_notifier +EXPORT_SYMBOL_GPL vmlinux 0x4762c955 adp5520_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0x47766d50 ata_pci_bmdma_init +EXPORT_SYMBOL_GPL vmlinux 0x477b06a6 to_nd_desc +EXPORT_SYMBOL_GPL vmlinux 0x4780bf30 mmc_send_tuning +EXPORT_SYMBOL_GPL vmlinux 0x47884890 system_power_efficient_wq +EXPORT_SYMBOL_GPL vmlinux 0x478c09e9 xen_register_device_domain_owner +EXPORT_SYMBOL_GPL vmlinux 0x47aad3b9 have_governor_per_policy +EXPORT_SYMBOL_GPL vmlinux 0x47beaed3 platform_device_add_data +EXPORT_SYMBOL_GPL vmlinux 0x47c34751 devm_extcon_dev_allocate +EXPORT_SYMBOL_GPL vmlinux 0x47d0eea2 acpi_lpat_temp_to_raw +EXPORT_SYMBOL_GPL vmlinux 0x47de0dc7 clk_unregister_mux +EXPORT_SYMBOL_GPL vmlinux 0x47ea1ba8 xfrm_local_error +EXPORT_SYMBOL_GPL vmlinux 0x47eab365 regmap_write +EXPORT_SYMBOL_GPL vmlinux 0x47ece866 i2c_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0x47f4f13c pinctrl_dev_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x481c2cb0 look_up_OID +EXPORT_SYMBOL_GPL vmlinux 0x4828e77b acpi_scan_lock_acquire +EXPORT_SYMBOL_GPL vmlinux 0x4840e3d8 tty_mode_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x484cbc38 __online_page_set_limits +EXPORT_SYMBOL_GPL vmlinux 0x48682db9 perf_guest_get_msrs +EXPORT_SYMBOL_GPL vmlinux 0x4868c3b4 rcu_batches_started_bh +EXPORT_SYMBOL_GPL vmlinux 0x4872ae93 phy_init +EXPORT_SYMBOL_GPL vmlinux 0x48791c75 reset_controller_unregister +EXPORT_SYMBOL_GPL vmlinux 0x487c5d33 nf_log_buf_add +EXPORT_SYMBOL_GPL vmlinux 0x4896791f subsys_interface_register +EXPORT_SYMBOL_GPL vmlinux 0x48999f2c irq_setup_alt_chip +EXPORT_SYMBOL_GPL vmlinux 0x489d7994 i2c_recover_bus +EXPORT_SYMBOL_GPL vmlinux 0x48c3b152 proc_mkdir_data +EXPORT_SYMBOL_GPL vmlinux 0x48d2c4d5 efivar_entry_remove +EXPORT_SYMBOL_GPL vmlinux 0x48d4c96e devm_kmalloc +EXPORT_SYMBOL_GPL vmlinux 0x48e527ca extcon_set_cable_state_ +EXPORT_SYMBOL_GPL vmlinux 0x490a8df6 x86_platform +EXPORT_SYMBOL_GPL vmlinux 0x49120036 rt_mutex_destroy +EXPORT_SYMBOL_GPL vmlinux 0x491fc8a7 crypto_alloc_base +EXPORT_SYMBOL_GPL vmlinux 0x4926dc90 usb_gen_phy_init +EXPORT_SYMBOL_GPL vmlinux 0x49290cea pci_user_read_config_word +EXPORT_SYMBOL_GPL vmlinux 0x495cb498 get_dcookie +EXPORT_SYMBOL_GPL vmlinux 0x4964e917 blk_mq_free_request +EXPORT_SYMBOL_GPL vmlinux 0x4966fa40 shash_ahash_digest +EXPORT_SYMBOL_GPL vmlinux 0x496a08b0 pci_load_and_free_saved_state +EXPORT_SYMBOL_GPL vmlinux 0x498d293a trace_buffer_unlock_commit +EXPORT_SYMBOL_GPL vmlinux 0x499043d3 crypto_init_queue +EXPORT_SYMBOL_GPL vmlinux 0x49923706 acpi_subsys_runtime_suspend +EXPORT_SYMBOL_GPL vmlinux 0x49b9afb0 gpiochip_lock_as_irq +EXPORT_SYMBOL_GPL vmlinux 0x49cef85f tps80031_ext_power_req_config +EXPORT_SYMBOL_GPL vmlinux 0x49e4045e phy_pm_runtime_get_sync +EXPORT_SYMBOL_GPL vmlinux 0x49e96999 cond_synchronize_rcu +EXPORT_SYMBOL_GPL vmlinux 0x49f2e33f gpiod_set_raw_array_value +EXPORT_SYMBOL_GPL vmlinux 0x4a02415e ehci_handshake +EXPORT_SYMBOL_GPL vmlinux 0x4a3c3cf9 microcode_sanity_check +EXPORT_SYMBOL_GPL vmlinux 0x4a420d09 acpi_bus_detach_private_data +EXPORT_SYMBOL_GPL vmlinux 0x4a7096ad pm_generic_freeze_late +EXPORT_SYMBOL_GPL vmlinux 0x4a890867 blkcg_print_blkgs +EXPORT_SYMBOL_GPL vmlinux 0x4a90160e bprintf +EXPORT_SYMBOL_GPL vmlinux 0x4aa80684 kallsyms_on_each_symbol +EXPORT_SYMBOL_GPL vmlinux 0x4aaa4a28 regulator_bulk_free +EXPORT_SYMBOL_GPL vmlinux 0x4aadeb9a ring_buffer_alloc_read_page +EXPORT_SYMBOL_GPL vmlinux 0x4abae2ea do_take_over_console +EXPORT_SYMBOL_GPL vmlinux 0x4ad22be8 wm8350_device_exit +EXPORT_SYMBOL_GPL vmlinux 0x4ae644a4 crypto_register_aead +EXPORT_SYMBOL_GPL vmlinux 0x4ae9922d of_reset_control_get +EXPORT_SYMBOL_GPL vmlinux 0x4af5ad73 gpiod_get_raw_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x4af7e80c debugfs_create_size_t +EXPORT_SYMBOL_GPL vmlinux 0x4aff0fff virtio_break_device +EXPORT_SYMBOL_GPL vmlinux 0x4b080488 tcp_twsk_destructor +EXPORT_SYMBOL_GPL vmlinux 0x4b0e5d52 ping_init_sock +EXPORT_SYMBOL_GPL vmlinux 0x4b2cd512 sdio_readl +EXPORT_SYMBOL_GPL vmlinux 0x4b325820 sched_setattr +EXPORT_SYMBOL_GPL vmlinux 0x4b519da9 exportfs_encode_fh +EXPORT_SYMBOL_GPL vmlinux 0x4b8ddafc ping_close +EXPORT_SYMBOL_GPL vmlinux 0x4beb96de xenbus_dev_probe +EXPORT_SYMBOL_GPL vmlinux 0x4bed6fbb pci_disable_rom +EXPORT_SYMBOL_GPL vmlinux 0x4c12c161 iommu_set_fault_handler +EXPORT_SYMBOL_GPL vmlinux 0x4c2a472b __static_cpu_has_safe +EXPORT_SYMBOL_GPL vmlinux 0x4c34534f regulator_count_voltages +EXPORT_SYMBOL_GPL vmlinux 0x4c3986f9 acpi_dev_get_property_array +EXPORT_SYMBOL_GPL vmlinux 0x4c50101a usb_get_from_anchor +EXPORT_SYMBOL_GPL vmlinux 0x4c520254 virtqueue_enable_cb_prepare +EXPORT_SYMBOL_GPL vmlinux 0x4c602bf1 __blkg_release_rcu +EXPORT_SYMBOL_GPL vmlinux 0x4c6337a1 sis_info133_for_sata +EXPORT_SYMBOL_GPL vmlinux 0x4c645f9e static_key_slow_dec_deferred +EXPORT_SYMBOL_GPL vmlinux 0x4c65c3da perf_event_read_value +EXPORT_SYMBOL_GPL vmlinux 0x4c68f8a7 pinctrl_dev_get_name +EXPORT_SYMBOL_GPL vmlinux 0x4c6a2b65 fat_getattr +EXPORT_SYMBOL_GPL vmlinux 0x4c759827 byte_rev_table +EXPORT_SYMBOL_GPL vmlinux 0x4c7e8c82 pm_runtime_set_memalloc_noio +EXPORT_SYMBOL_GPL vmlinux 0x4c86b855 devm_led_classdev_unregister +EXPORT_SYMBOL_GPL vmlinux 0x4c8ab0c4 dm_noflush_suspending +EXPORT_SYMBOL_GPL vmlinux 0x4cfbb132 ima_file_check +EXPORT_SYMBOL_GPL vmlinux 0x4d0015e2 cpu_hotplug_disable +EXPORT_SYMBOL_GPL vmlinux 0x4d29b203 simple_attr_read +EXPORT_SYMBOL_GPL vmlinux 0x4d37f40b pwm_disable +EXPORT_SYMBOL_GPL vmlinux 0x4d5ed13e cpufreq_generic_init +EXPORT_SYMBOL_GPL vmlinux 0x4d81abb6 rtc_irq_unregister +EXPORT_SYMBOL_GPL vmlinux 0x4dc4b2e3 da9052_adc_read_temp +EXPORT_SYMBOL_GPL vmlinux 0x4dca1d16 nd_cmd_out_size +EXPORT_SYMBOL_GPL vmlinux 0x4de17ab3 usb_state_string +EXPORT_SYMBOL_GPL vmlinux 0x4df5b7a4 xen_xlate_remap_gfn_array +EXPORT_SYMBOL_GPL vmlinux 0x4e085265 tpm_gen_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x4e109192 ring_buffer_entries +EXPORT_SYMBOL_GPL vmlinux 0x4e1ea947 __list_lru_init +EXPORT_SYMBOL_GPL vmlinux 0x4e242f5f pstore_cannot_block_path +EXPORT_SYMBOL_GPL vmlinux 0x4e57723d apei_read +EXPORT_SYMBOL_GPL vmlinux 0x4e66d61b pci_enable_pcie_error_reporting +EXPORT_SYMBOL_GPL vmlinux 0x4e71195b rt_mutex_trylock +EXPORT_SYMBOL_GPL vmlinux 0x4e74e625 gnttab_batch_copy +EXPORT_SYMBOL_GPL vmlinux 0x4e97a832 tcp_death_row +EXPORT_SYMBOL_GPL vmlinux 0x4ea68d7e blkg_conf_finish +EXPORT_SYMBOL_GPL vmlinux 0x4ec1ebd3 user_update +EXPORT_SYMBOL_GPL vmlinux 0x4ed35591 uprobe_register +EXPORT_SYMBOL_GPL vmlinux 0x4ef4fa60 mbox_controller_unregister +EXPORT_SYMBOL_GPL vmlinux 0x4ef5bcf4 perf_swevent_get_recursion_context +EXPORT_SYMBOL_GPL vmlinux 0x4ef65133 gpiochip_add_pingroup_range +EXPORT_SYMBOL_GPL vmlinux 0x4ef72170 sdio_align_size +EXPORT_SYMBOL_GPL vmlinux 0x4f020dee public_key_verify_signature +EXPORT_SYMBOL_GPL vmlinux 0x4f0517c8 cpuidle_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0x4f0b15e8 __lock_page_killable +EXPORT_SYMBOL_GPL vmlinux 0x4f1d726a fat_free_clusters +EXPORT_SYMBOL_GPL vmlinux 0x4f362015 usb_ep0_reinit +EXPORT_SYMBOL_GPL vmlinux 0x4f4cd9a4 sdhci_pci_o2_fujin2_pci_init +EXPORT_SYMBOL_GPL vmlinux 0x4f5b7b01 wm8997_irq +EXPORT_SYMBOL_GPL vmlinux 0x4f6a07fe show_rcu_gp_kthreads +EXPORT_SYMBOL_GPL vmlinux 0x4f725c18 unregister_trace_event +EXPORT_SYMBOL_GPL vmlinux 0x4fb0f399 __rtnl_link_register +EXPORT_SYMBOL_GPL vmlinux 0x4fc50942 evm_inode_init_security +EXPORT_SYMBOL_GPL vmlinux 0x4fd017a1 usb_clear_halt +EXPORT_SYMBOL_GPL vmlinux 0x4fd4e89d ring_buffer_empty_cpu +EXPORT_SYMBOL_GPL vmlinux 0x4fdc945d sata_deb_timing_normal +EXPORT_SYMBOL_GPL vmlinux 0x4fe1eddf unregister_netevent_notifier +EXPORT_SYMBOL_GPL vmlinux 0x4ff68180 regmap_update_bits_check +EXPORT_SYMBOL_GPL vmlinux 0x4ffd09cc acpi_subsys_runtime_resume +EXPORT_SYMBOL_GPL vmlinux 0x500d405a set_foreign_p2m_mapping +EXPORT_SYMBOL_GPL vmlinux 0x5026585c xen_irq_from_gsi +EXPORT_SYMBOL_GPL vmlinux 0x50295764 tty_ldisc_ref_wait +EXPORT_SYMBOL_GPL vmlinux 0x5048ad63 rio_unlock_device +EXPORT_SYMBOL_GPL vmlinux 0x504bac3a __xenbus_register_frontend +EXPORT_SYMBOL_GPL vmlinux 0x504cd35c adp5520_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x505be901 dma_get_any_slave_channel +EXPORT_SYMBOL_GPL vmlinux 0x506ff474 regulator_bulk_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x507de8c6 add_memory +EXPORT_SYMBOL_GPL vmlinux 0x5086ac3a alg_test +EXPORT_SYMBOL_GPL vmlinux 0x50871f70 device_create_vargs +EXPORT_SYMBOL_GPL vmlinux 0x5091b823 ring_buffer_read_start +EXPORT_SYMBOL_GPL vmlinux 0x509c6b82 regmap_init_i2c +EXPORT_SYMBOL_GPL vmlinux 0x50cc56a3 __ata_change_queue_depth +EXPORT_SYMBOL_GPL vmlinux 0x50d1f870 pgprot_writecombine +EXPORT_SYMBOL_GPL vmlinux 0x50e7193a __i2c_first_dynamic_bus_num +EXPORT_SYMBOL_GPL vmlinux 0x50ed39a9 acpi_processor_get_performance_info +EXPORT_SYMBOL_GPL vmlinux 0x50fad434 round_jiffies_up +EXPORT_SYMBOL_GPL vmlinux 0x50fec45b pci_set_cacheline_size +EXPORT_SYMBOL_GPL vmlinux 0x51277719 rio_mport_read_config_32 +EXPORT_SYMBOL_GPL vmlinux 0x512b1d19 register_kprobe +EXPORT_SYMBOL_GPL vmlinux 0x512d118c user_describe +EXPORT_SYMBOL_GPL vmlinux 0x514e9875 divider_get_val +EXPORT_SYMBOL_GPL vmlinux 0x516ea4b4 acpi_dev_gpio_irq_get +EXPORT_SYMBOL_GPL vmlinux 0x51860fb5 __blkg_prfill_u64 +EXPORT_SYMBOL_GPL vmlinux 0x5187ac4b xen_store_evtchn +EXPORT_SYMBOL_GPL vmlinux 0x518c2fc6 hpet_rtc_dropped_irq +EXPORT_SYMBOL_GPL vmlinux 0x5191bd3c efivar_work +EXPORT_SYMBOL_GPL vmlinux 0x51a2d9e2 scsi_autopm_put_device +EXPORT_SYMBOL_GPL vmlinux 0x51e70f21 blkdev_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x5201a711 blk_mq_register_disk +EXPORT_SYMBOL_GPL vmlinux 0x5210a5bf hsi_board_list +EXPORT_SYMBOL_GPL vmlinux 0x5215ecaa usb_hcd_pci_pm_ops +EXPORT_SYMBOL_GPL vmlinux 0x5217d6c6 __pm_runtime_idle +EXPORT_SYMBOL_GPL vmlinux 0x5219099b irq_generic_chip_ops +EXPORT_SYMBOL_GPL vmlinux 0x522f538b tpm_send +EXPORT_SYMBOL_GPL vmlinux 0x523141e5 regulator_set_voltage_time +EXPORT_SYMBOL_GPL vmlinux 0x5251e968 spi_bus_unlock +EXPORT_SYMBOL_GPL vmlinux 0x5272d8bc __cookie_v4_check +EXPORT_SYMBOL_GPL vmlinux 0x5276f1a2 xen_swiotlb_map_sg_attrs +EXPORT_SYMBOL_GPL vmlinux 0x52a37776 smpboot_update_cpumask_percpu_thread +EXPORT_SYMBOL_GPL vmlinux 0x52a41251 __cookie_v4_init_sequence +EXPORT_SYMBOL_GPL vmlinux 0x52c3a8ba debugfs_create_x8 +EXPORT_SYMBOL_GPL vmlinux 0x52cf6707 do_unregister_con_driver +EXPORT_SYMBOL_GPL vmlinux 0x52d8c375 clk_register_divider +EXPORT_SYMBOL_GPL vmlinux 0x52da6e18 pwm_config +EXPORT_SYMBOL_GPL vmlinux 0x52dbccc0 cpufreq_governor_dbs +EXPORT_SYMBOL_GPL vmlinux 0x52ed88b0 acpi_dma_request_slave_chan_by_name +EXPORT_SYMBOL_GPL vmlinux 0x5305036c ata_wait_register +EXPORT_SYMBOL_GPL vmlinux 0x533f41b0 regulator_list_voltage_linear +EXPORT_SYMBOL_GPL vmlinux 0x5358fc36 ring_buffer_discard_commit +EXPORT_SYMBOL_GPL vmlinux 0x535fdc6e regulator_set_voltage +EXPORT_SYMBOL_GPL vmlinux 0x53614269 get_cpu_idle_time_us +EXPORT_SYMBOL_GPL vmlinux 0x536bff57 efivar_entry_add +EXPORT_SYMBOL_GPL vmlinux 0x537045b3 ata_pci_device_do_suspend +EXPORT_SYMBOL_GPL vmlinux 0x539f157b pci_xen_swiotlb_init_late +EXPORT_SYMBOL_GPL vmlinux 0x53a5b0ce usb_ifnum_to_if +EXPORT_SYMBOL_GPL vmlinux 0x53b7c0b1 dev_pm_enable_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0x53d5d073 pinctrl_put +EXPORT_SYMBOL_GPL vmlinux 0x53ff5cb6 blk_end_request_err +EXPORT_SYMBOL_GPL vmlinux 0x541b0de9 usb_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x541bd60a irq_work_run +EXPORT_SYMBOL_GPL vmlinux 0x54215db5 visitor64 +EXPORT_SYMBOL_GPL vmlinux 0x5425d145 bit_wait_timeout +EXPORT_SYMBOL_GPL vmlinux 0x5437d755 ehci_reset +EXPORT_SYMBOL_GPL vmlinux 0x5454966f sysfs_remove_group +EXPORT_SYMBOL_GPL vmlinux 0x5456f4af ata_timing_compute +EXPORT_SYMBOL_GPL vmlinux 0x5460c8d8 fsnotify_get_cookie +EXPORT_SYMBOL_GPL vmlinux 0x54740eb7 get_cpu_idle_time +EXPORT_SYMBOL_GPL vmlinux 0x54905d3e phy_pm_runtime_allow +EXPORT_SYMBOL_GPL vmlinux 0x549525ef handle_nested_irq +EXPORT_SYMBOL_GPL vmlinux 0x549c6902 ata_common_sdev_attrs +EXPORT_SYMBOL_GPL vmlinux 0x549fab89 xen_swiotlb_unmap_sg_attrs +EXPORT_SYMBOL_GPL vmlinux 0x54ab2226 device_wakeup_disable +EXPORT_SYMBOL_GPL vmlinux 0x54b38ba6 pinctrl_utils_add_map_configs +EXPORT_SYMBOL_GPL vmlinux 0x54cf3a77 sysfs_remove_bin_file +EXPORT_SYMBOL_GPL vmlinux 0x54d46690 uart_parse_earlycon +EXPORT_SYMBOL_GPL vmlinux 0x54e18d56 blk_rq_err_bytes +EXPORT_SYMBOL_GPL vmlinux 0x5501dd73 alarm_expires_remaining +EXPORT_SYMBOL_GPL vmlinux 0x55060b44 xen_find_device_domain_owner +EXPORT_SYMBOL_GPL vmlinux 0x550ce709 pat_enabled +EXPORT_SYMBOL_GPL vmlinux 0x550fbf98 clk_mux_ops +EXPORT_SYMBOL_GPL vmlinux 0x553b49a4 cpufreq_get_driver_data +EXPORT_SYMBOL_GPL vmlinux 0x55417264 unregister_vt_notifier +EXPORT_SYMBOL_GPL vmlinux 0x55526907 xen_features +EXPORT_SYMBOL_GPL vmlinux 0x55564753 pm_generic_freeze_noirq +EXPORT_SYMBOL_GPL vmlinux 0x55619533 security_kernel_fw_from_file +EXPORT_SYMBOL_GPL vmlinux 0x556e4390 clk_get_rate +EXPORT_SYMBOL_GPL vmlinux 0x5571c395 md_allow_write +EXPORT_SYMBOL_GPL vmlinux 0x55784228 regmap_irq_get_virq +EXPORT_SYMBOL_GPL vmlinux 0x55829e47 apply_to_page_range +EXPORT_SYMBOL_GPL vmlinux 0x558827b6 ata_bmdma_port_start +EXPORT_SYMBOL_GPL vmlinux 0x559dc4a5 pci_stop_root_bus +EXPORT_SYMBOL_GPL vmlinux 0x559e8d43 fuse_do_open +EXPORT_SYMBOL_GPL vmlinux 0x55a3a0ea bus_register +EXPORT_SYMBOL_GPL vmlinux 0x55c4a3e1 devm_regulator_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x55cd58bd irq_alloc_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x55de57ec fat_build_inode +EXPORT_SYMBOL_GPL vmlinux 0x5615bc8f crypto_find_alg +EXPORT_SYMBOL_GPL vmlinux 0x56256e8a orderly_poweroff +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 0x564e045d kernfs_notify +EXPORT_SYMBOL_GPL vmlinux 0x5653be85 pci_reset_bridge_secondary_bus +EXPORT_SYMBOL_GPL vmlinux 0x5654f836 erst_get_record_id_next +EXPORT_SYMBOL_GPL vmlinux 0x565b6892 uuid_le_gen +EXPORT_SYMBOL_GPL vmlinux 0x5667ec02 bus_find_device +EXPORT_SYMBOL_GPL vmlinux 0x56886b19 scatterwalk_map +EXPORT_SYMBOL_GPL vmlinux 0x56947347 dmi_walk +EXPORT_SYMBOL_GPL vmlinux 0x569f0711 alarm_start_relative +EXPORT_SYMBOL_GPL vmlinux 0x56b519e7 gpiod_set_array_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x56d697ce cpu_up +EXPORT_SYMBOL_GPL vmlinux 0x56e37743 xenbus_grant_ring +EXPORT_SYMBOL_GPL vmlinux 0x56e75d47 klist_node_attached +EXPORT_SYMBOL_GPL vmlinux 0x57016a65 kobject_create_and_add +EXPORT_SYMBOL_GPL vmlinux 0x57231f45 ring_buffer_record_on +EXPORT_SYMBOL_GPL vmlinux 0x572e2909 usb_unpoison_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x575c5f94 execute_in_process_context +EXPORT_SYMBOL_GPL vmlinux 0x576e7361 ehci_cf_port_reset_rwsem +EXPORT_SYMBOL_GPL vmlinux 0x5779d445 xenbus_exists +EXPORT_SYMBOL_GPL vmlinux 0x57895698 regmap_fields_update_bits +EXPORT_SYMBOL_GPL vmlinux 0x5790e7a0 pci_unlock_rescan_remove +EXPORT_SYMBOL_GPL vmlinux 0x579a0816 usb_hcd_map_urb_for_dma +EXPORT_SYMBOL_GPL vmlinux 0x579e0bf5 rtnl_unregister_all +EXPORT_SYMBOL_GPL vmlinux 0x57b0d57b xfrm_audit_policy_add +EXPORT_SYMBOL_GPL vmlinux 0x57c22c58 gpiod_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x57c39727 kdb_register_flags +EXPORT_SYMBOL_GPL vmlinux 0x57c853b1 usb_reset_configuration +EXPORT_SYMBOL_GPL vmlinux 0x57e8f6cb rio_lock_device +EXPORT_SYMBOL_GPL vmlinux 0x57e93e37 wm8400_block_read +EXPORT_SYMBOL_GPL vmlinux 0x57ea3d7a devres_remove_group +EXPORT_SYMBOL_GPL vmlinux 0x57f1597b led_classdev_resume +EXPORT_SYMBOL_GPL vmlinux 0x57f8062c acpi_dev_resource_io +EXPORT_SYMBOL_GPL vmlinux 0x5819112a key_type_encrypted +EXPORT_SYMBOL_GPL vmlinux 0x58292e5f clk_fixed_factor_ops +EXPORT_SYMBOL_GPL vmlinux 0x58488004 component_unbind_all +EXPORT_SYMBOL_GPL vmlinux 0x585704ab aer_recover_queue +EXPORT_SYMBOL_GPL vmlinux 0x589b64d2 bd_link_disk_holder +EXPORT_SYMBOL_GPL vmlinux 0x589e4569 syscon_regmap_lookup_by_pdevname +EXPORT_SYMBOL_GPL vmlinux 0x58b44283 sysfs_add_link_to_group +EXPORT_SYMBOL_GPL vmlinux 0x58c647db unix_outq_len +EXPORT_SYMBOL_GPL vmlinux 0x58fa3c94 tty_buffer_set_limit +EXPORT_SYMBOL_GPL vmlinux 0x58fd3a31 fsstack_copy_inode_size +EXPORT_SYMBOL_GPL vmlinux 0x58fe9409 rio_inb_pwrite_handler +EXPORT_SYMBOL_GPL vmlinux 0x5901d4c4 devm_pwm_put +EXPORT_SYMBOL_GPL vmlinux 0x59293599 inet6_csk_xmit +EXPORT_SYMBOL_GPL vmlinux 0x59657647 ata_eh_qc_retry +EXPORT_SYMBOL_GPL vmlinux 0x59688cf7 atomic_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0x596956bf rtc_irq_set_state +EXPORT_SYMBOL_GPL vmlinux 0x598f6a93 ata_qc_complete +EXPORT_SYMBOL_GPL vmlinux 0x59b0882b md_is_badblock +EXPORT_SYMBOL_GPL vmlinux 0x59b2adbf input_ff_effect_from_user +EXPORT_SYMBOL_GPL vmlinux 0x59b3ed90 pm_runtime_autosuspend_expiration +EXPORT_SYMBOL_GPL vmlinux 0x59bbd344 skb_zerocopy +EXPORT_SYMBOL_GPL vmlinux 0x59c8f0d2 ata_std_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x59d7a2c5 debugfs_print_regs32 +EXPORT_SYMBOL_GPL vmlinux 0x59e2743e call_rcu_bh +EXPORT_SYMBOL_GPL vmlinux 0x59eae699 ring_buffer_read_prepare +EXPORT_SYMBOL_GPL vmlinux 0x5a15b9be ata_slave_link_init +EXPORT_SYMBOL_GPL vmlinux 0x5a174d81 inet_getpeer +EXPORT_SYMBOL_GPL vmlinux 0x5a2b1b67 gnttab_free_grant_reference +EXPORT_SYMBOL_GPL vmlinux 0x5a3029fc devm_of_phy_get_by_index +EXPORT_SYMBOL_GPL vmlinux 0x5a3f1a02 lp8788_update_bits +EXPORT_SYMBOL_GPL vmlinux 0x5a43481f regulator_can_change_voltage +EXPORT_SYMBOL_GPL vmlinux 0x5a441ebd efi_query_variable_store +EXPORT_SYMBOL_GPL vmlinux 0x5a4b37a1 fpstate_init +EXPORT_SYMBOL_GPL vmlinux 0x5a7bfe41 crypto_probing_notify +EXPORT_SYMBOL_GPL vmlinux 0x5abc11d4 usb_deregister_dev +EXPORT_SYMBOL_GPL vmlinux 0x5ac2727f smp_call_function_any +EXPORT_SYMBOL_GPL vmlinux 0x5ac67e03 ata_bmdma_irq_clear +EXPORT_SYMBOL_GPL vmlinux 0x5ad71767 cpufreq_cpu_get +EXPORT_SYMBOL_GPL vmlinux 0x5ae43100 rio_enable_rx_tx_port +EXPORT_SYMBOL_GPL vmlinux 0x5af03a28 gnttab_claim_grant_reference +EXPORT_SYMBOL_GPL vmlinux 0x5b11c678 usb_sg_init +EXPORT_SYMBOL_GPL vmlinux 0x5b14b354 regulator_get_init_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x5b293285 netdev_rx_handler_register +EXPORT_SYMBOL_GPL vmlinux 0x5b5157ff bus_set_iommu +EXPORT_SYMBOL_GPL vmlinux 0x5b588acf srcu_init_notifier_head +EXPORT_SYMBOL_GPL vmlinux 0x5b6d3d10 xen_unmap_domain_mfn_range +EXPORT_SYMBOL_GPL vmlinux 0x5b7a199b regulator_list_voltage +EXPORT_SYMBOL_GPL vmlinux 0x5b865d4a cpufreq_freq_transition_end +EXPORT_SYMBOL_GPL vmlinux 0x5b8fdf09 ohci_suspend +EXPORT_SYMBOL_GPL vmlinux 0x5b9f3077 power_supply_changed +EXPORT_SYMBOL_GPL vmlinux 0x5ba57979 ata_bmdma32_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x5bb4ecfe regulator_bulk_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x5bb5ace9 bus_find_device_by_name +EXPORT_SYMBOL_GPL vmlinux 0x5bc7c383 devm_devfreq_event_add_edev +EXPORT_SYMBOL_GPL vmlinux 0x5bc9923a adp5520_read +EXPORT_SYMBOL_GPL vmlinux 0x5bce8ca1 __atomic_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x5bd0748f crypto_del_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x5bdbac4e rcu_unexpedite_gp +EXPORT_SYMBOL_GPL vmlinux 0x5c05442a inet_twsk_schedule +EXPORT_SYMBOL_GPL vmlinux 0x5c07917e relay_switch_subbuf +EXPORT_SYMBOL_GPL vmlinux 0x5c219fc8 phy_power_on +EXPORT_SYMBOL_GPL vmlinux 0x5c423132 thermal_zone_bind_cooling_device +EXPORT_SYMBOL_GPL vmlinux 0x5c4f8770 fsstack_copy_attr_all +EXPORT_SYMBOL_GPL vmlinux 0x5c55362d pwmchip_add_with_polarity +EXPORT_SYMBOL_GPL vmlinux 0x5c5987b3 scsi_schedule_eh +EXPORT_SYMBOL_GPL vmlinux 0x5c5a1b16 tick_broadcast_control +EXPORT_SYMBOL_GPL vmlinux 0x5c64d776 xenbus_match +EXPORT_SYMBOL_GPL vmlinux 0x5c66e90c efivar_run_worker +EXPORT_SYMBOL_GPL vmlinux 0x5c93d35e register_pernet_subsys +EXPORT_SYMBOL_GPL vmlinux 0x5c9802df wm831x_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x5cabdced dev_pm_qos_remove_global_notifier +EXPORT_SYMBOL_GPL vmlinux 0x5cbe954a devm_clk_register +EXPORT_SYMBOL_GPL vmlinux 0x5cc1566e arizona_clk32k_enable +EXPORT_SYMBOL_GPL vmlinux 0x5cc509a4 nsecs_to_jiffies +EXPORT_SYMBOL_GPL vmlinux 0x5cf3884a call_filter_check_discard +EXPORT_SYMBOL_GPL vmlinux 0x5cf8a882 __tracepoint_block_rq_remap +EXPORT_SYMBOL_GPL vmlinux 0x5d0f7af6 platform_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x5d12e48f input_event_to_user +EXPORT_SYMBOL_GPL vmlinux 0x5d22f6bd usb_disable_ltm +EXPORT_SYMBOL_GPL vmlinux 0x5d366dec gnttab_cancel_free_callback +EXPORT_SYMBOL_GPL vmlinux 0x5d80c6d5 usb_set_device_state +EXPORT_SYMBOL_GPL vmlinux 0x5d8a7594 bpf_prog_get +EXPORT_SYMBOL_GPL vmlinux 0x5d8dd65c blk_rq_prep_clone +EXPORT_SYMBOL_GPL vmlinux 0x5d9a202f __clk_mux_determine_rate_closest +EXPORT_SYMBOL_GPL vmlinux 0x5d9b9eb0 pm_generic_restore +EXPORT_SYMBOL_GPL vmlinux 0x5da67adc zs_compact +EXPORT_SYMBOL_GPL vmlinux 0x5db1c1d3 __tracepoint_block_split +EXPORT_SYMBOL_GPL vmlinux 0x5dbcfa4f boot_cpu_physical_apicid +EXPORT_SYMBOL_GPL vmlinux 0x5dc4d45b get_pid_task +EXPORT_SYMBOL_GPL vmlinux 0x5dcd7160 trace_seq_vprintf +EXPORT_SYMBOL_GPL vmlinux 0x5e0428d6 relay_buf_full +EXPORT_SYMBOL_GPL vmlinux 0x5e0671cd clockevent_delta2ns +EXPORT_SYMBOL_GPL vmlinux 0x5e0dff16 mmu_notifier_unregister_no_release +EXPORT_SYMBOL_GPL vmlinux 0x5e0f90d9 ata_bmdma_port_start32 +EXPORT_SYMBOL_GPL vmlinux 0x5e0fa639 bsg_request_fn +EXPORT_SYMBOL_GPL vmlinux 0x5e3d6bb9 netlink_add_tap +EXPORT_SYMBOL_GPL vmlinux 0x5e4aea5b usb_hcd_pci_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x5e4bcdd1 xenbus_map_ring +EXPORT_SYMBOL_GPL vmlinux 0x5e4f24b2 perf_event_release_kernel +EXPORT_SYMBOL_GPL vmlinux 0x5e51cd74 swiotlb_nr_tbl +EXPORT_SYMBOL_GPL vmlinux 0x5e65c984 rio_mport_class +EXPORT_SYMBOL_GPL vmlinux 0x5e69edf3 regulator_map_voltage_iterate +EXPORT_SYMBOL_GPL vmlinux 0x5e6e51d7 tasklet_hrtimer_init +EXPORT_SYMBOL_GPL vmlinux 0x5e7336f6 debugfs_create_regset32 +EXPORT_SYMBOL_GPL vmlinux 0x5e893dc9 fl6_merge_options +EXPORT_SYMBOL_GPL vmlinux 0x5e9d9030 pci_device_is_present +EXPORT_SYMBOL_GPL vmlinux 0x5ea045ba skb_to_sgvec +EXPORT_SYMBOL_GPL vmlinux 0x5ed26b00 driver_attach +EXPORT_SYMBOL_GPL vmlinux 0x5ed9fa2f xenbus_read_otherend_details +EXPORT_SYMBOL_GPL vmlinux 0x5efb2888 ata_pci_sff_init_host +EXPORT_SYMBOL_GPL vmlinux 0x5f0a2b17 nvdimm_bus_check_dimm_count +EXPORT_SYMBOL_GPL vmlinux 0x5f226035 mod_delayed_work_on +EXPORT_SYMBOL_GPL vmlinux 0x5f2da8c4 check_tsc_unstable +EXPORT_SYMBOL_GPL vmlinux 0x5f45acba kobject_move +EXPORT_SYMBOL_GPL vmlinux 0x5f4f9273 clockevents_unbind_device +EXPORT_SYMBOL_GPL vmlinux 0x5f62cef2 acpi_initialize_hp_context +EXPORT_SYMBOL_GPL vmlinux 0x5f669508 sched_setscheduler +EXPORT_SYMBOL_GPL vmlinux 0x5f6cb70c pm_relax +EXPORT_SYMBOL_GPL vmlinux 0x5f79a98b __tracepoint_napi_poll +EXPORT_SYMBOL_GPL vmlinux 0x5f7b4627 raw_hash_sk +EXPORT_SYMBOL_GPL vmlinux 0x5f85cf2e wm8350_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x5faed0ba ping_seq_fops +EXPORT_SYMBOL_GPL vmlinux 0x5fc27be9 acpi_dev_irq_flags +EXPORT_SYMBOL_GPL vmlinux 0x5fc311ae __pm_runtime_disable +EXPORT_SYMBOL_GPL vmlinux 0x5fc749d2 efivars_unregister +EXPORT_SYMBOL_GPL vmlinux 0x5fd4205f ehci_init_driver +EXPORT_SYMBOL_GPL vmlinux 0x5fda3f58 spi_get_next_queued_message +EXPORT_SYMBOL_GPL vmlinux 0x5fdad83d of_pwm_xlate_with_flags +EXPORT_SYMBOL_GPL vmlinux 0x5fdfa2c1 amd_pmu_enable_virt +EXPORT_SYMBOL_GPL vmlinux 0x5fe907b7 hwrng_register +EXPORT_SYMBOL_GPL vmlinux 0x60091316 clk_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x600b3a7e skb_append_pagefrags +EXPORT_SYMBOL_GPL vmlinux 0x60329c91 pm_generic_thaw +EXPORT_SYMBOL_GPL vmlinux 0x604b77e0 devm_add_action +EXPORT_SYMBOL_GPL vmlinux 0x60506751 unmap_kernel_range_noflush +EXPORT_SYMBOL_GPL vmlinux 0x60561bbd alarm_cancel +EXPORT_SYMBOL_GPL vmlinux 0x60759f48 ata_do_eh +EXPORT_SYMBOL_GPL vmlinux 0x6091797f synchronize_rcu +EXPORT_SYMBOL_GPL vmlinux 0x60930d37 save_mc_for_early +EXPORT_SYMBOL_GPL vmlinux 0x60a13e90 rcu_barrier +EXPORT_SYMBOL_GPL vmlinux 0x60afb2ae udp6_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x60bdd9fb regmap_multi_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x60cd73ed pv_apic_ops +EXPORT_SYMBOL_GPL vmlinux 0x614bd89a ata_bmdma_port_intr +EXPORT_SYMBOL_GPL vmlinux 0x615b4c40 __wake_up_locked +EXPORT_SYMBOL_GPL vmlinux 0x616343bc srcu_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0x61c503f7 fib_rules_unregister +EXPORT_SYMBOL_GPL vmlinux 0x61cde409 acpi_dev_resource_memory +EXPORT_SYMBOL_GPL vmlinux 0x61d07b9d serial8250_request_dma +EXPORT_SYMBOL_GPL vmlinux 0x61dd05b8 __class_create +EXPORT_SYMBOL_GPL vmlinux 0x61e2eef5 usb_hcd_pci_remove +EXPORT_SYMBOL_GPL vmlinux 0x61fbb806 inet_csk_compat_setsockopt +EXPORT_SYMBOL_GPL vmlinux 0x6207c678 __netlink_alloc_skb +EXPORT_SYMBOL_GPL vmlinux 0x6212a647 usb_root_hub_lost_power +EXPORT_SYMBOL_GPL vmlinux 0x62276d90 crypto_larval_kill +EXPORT_SYMBOL_GPL vmlinux 0x622c7922 register_oom_notifier +EXPORT_SYMBOL_GPL vmlinux 0x623803c8 hest_disable +EXPORT_SYMBOL_GPL vmlinux 0x624ec31a nd_blk_region_set_provider_data +EXPORT_SYMBOL_GPL vmlinux 0x6250d3be device_property_present +EXPORT_SYMBOL_GPL vmlinux 0x626dfac9 pci_walk_bus +EXPORT_SYMBOL_GPL vmlinux 0x6280ce96 aead_geniv_alloc +EXPORT_SYMBOL_GPL vmlinux 0x62a1c981 klist_add_head +EXPORT_SYMBOL_GPL vmlinux 0x62a56994 ata_base_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x62a70cb6 debugfs_create_u32 +EXPORT_SYMBOL_GPL vmlinux 0x62ce53fb crypto_create_tfm +EXPORT_SYMBOL_GPL vmlinux 0x62dabcb3 debugfs_create_x16 +EXPORT_SYMBOL_GPL vmlinux 0x6300a545 inet6_csk_reqsk_queue_hash_add +EXPORT_SYMBOL_GPL vmlinux 0x63150e06 clk_get_parent +EXPORT_SYMBOL_GPL vmlinux 0x63191e46 ata_host_resume +EXPORT_SYMBOL_GPL vmlinux 0x633f795d ata_pci_remove_one +EXPORT_SYMBOL_GPL vmlinux 0x6344bc3e regulator_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x635ec980 apei_exec_post_unmap_gars +EXPORT_SYMBOL_GPL vmlinux 0x63773236 cpufreq_frequency_table_cpuinfo +EXPORT_SYMBOL_GPL vmlinux 0x638aaee6 phy_destroy +EXPORT_SYMBOL_GPL vmlinux 0x638fe045 unregister_kprobe +EXPORT_SYMBOL_GPL vmlinux 0x6396fe13 list_lru_destroy +EXPORT_SYMBOL_GPL vmlinux 0x63c0d2db pm_generic_thaw_noirq +EXPORT_SYMBOL_GPL vmlinux 0x63c7cf11 inet_putpeer +EXPORT_SYMBOL_GPL vmlinux 0x63d56c32 driver_create_file +EXPORT_SYMBOL_GPL vmlinux 0x63ea80b3 cper_mem_err_type_str +EXPORT_SYMBOL_GPL vmlinux 0x63fc3686 wm5110_spi_regmap +EXPORT_SYMBOL_GPL vmlinux 0x6410e160 ktime_mono_to_any +EXPORT_SYMBOL_GPL vmlinux 0x641b4567 rt_mutex_unlock +EXPORT_SYMBOL_GPL vmlinux 0x64318593 acpi_dev_filter_resource_type +EXPORT_SYMBOL_GPL vmlinux 0x6436e271 sock_diag_save_cookie +EXPORT_SYMBOL_GPL vmlinux 0x644ce37e ping_bind +EXPORT_SYMBOL_GPL vmlinux 0x64547813 ata_dev_disable +EXPORT_SYMBOL_GPL vmlinux 0x646e36be pci_user_write_config_word +EXPORT_SYMBOL_GPL vmlinux 0x647c0e95 wm8350_read_auxadc +EXPORT_SYMBOL_GPL vmlinux 0x647ec8b4 xen_swiotlb_sync_sg_for_cpu +EXPORT_SYMBOL_GPL vmlinux 0x648a4aed cpufreq_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0x64b7069e apei_mce_report_mem_error +EXPORT_SYMBOL_GPL vmlinux 0x64c6db02 __put_task_struct +EXPORT_SYMBOL_GPL vmlinux 0x64d23d16 mbox_client_txdone +EXPORT_SYMBOL_GPL vmlinux 0x64d2d658 kernfs_put +EXPORT_SYMBOL_GPL vmlinux 0x64ddfaf9 nd_region_attribute_group +EXPORT_SYMBOL_GPL vmlinux 0x64e89f65 usb_phy_gen_create_phy +EXPORT_SYMBOL_GPL vmlinux 0x64edfa6d bio_associate_current +EXPORT_SYMBOL_GPL vmlinux 0x64f5ea37 devfreq_event_set_event +EXPORT_SYMBOL_GPL vmlinux 0x6527a231 dbgp_external_startup +EXPORT_SYMBOL_GPL vmlinux 0x6536953b btree_last +EXPORT_SYMBOL_GPL vmlinux 0x6551f63d sata_pmp_qc_defer_cmd_switch +EXPORT_SYMBOL_GPL vmlinux 0x658c8186 amd_get_nb_id +EXPORT_SYMBOL_GPL vmlinux 0x6591670f rio_release_inb_mbox +EXPORT_SYMBOL_GPL vmlinux 0x659563e5 posix_clock_register +EXPORT_SYMBOL_GPL vmlinux 0x65b1e5de acpi_device_uevent_modalias +EXPORT_SYMBOL_GPL vmlinux 0x65ba0007 fat_sync_inode +EXPORT_SYMBOL_GPL vmlinux 0x65bbbc78 schedule_hrtimeout_range +EXPORT_SYMBOL_GPL vmlinux 0x65ccb6f0 call_netevent_notifiers +EXPORT_SYMBOL_GPL vmlinux 0x6606ea80 tcp_done +EXPORT_SYMBOL_GPL vmlinux 0x660916bd spi_sync_locked +EXPORT_SYMBOL_GPL vmlinux 0x661601de sprint_symbol +EXPORT_SYMBOL_GPL vmlinux 0x662f9861 xenbus_dev_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x6636c3c9 irq_set_vcpu_affinity +EXPORT_SYMBOL_GPL vmlinux 0x663c46bc sysfs_remove_mount_point +EXPORT_SYMBOL_GPL vmlinux 0x66589085 fat_fill_super +EXPORT_SYMBOL_GPL vmlinux 0x6663a197 ip6_datagram_connect +EXPORT_SYMBOL_GPL vmlinux 0x666c0b39 pinctrl_utils_add_map_mux +EXPORT_SYMBOL_GPL vmlinux 0x666f0a76 clk_register_gpio_gate +EXPORT_SYMBOL_GPL vmlinux 0x668402aa crypto_put_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x66c6b8a7 tcp_ca_get_name_by_key +EXPORT_SYMBOL_GPL vmlinux 0x66cdbe98 od_register_powersave_bias_handler +EXPORT_SYMBOL_GPL vmlinux 0x66d87d38 symbol_put_addr +EXPORT_SYMBOL_GPL vmlinux 0x66e37b32 spi_sync +EXPORT_SYMBOL_GPL vmlinux 0x66f952e0 fwnode_property_read_string +EXPORT_SYMBOL_GPL vmlinux 0x6739a503 balloon_set_new_target +EXPORT_SYMBOL_GPL vmlinux 0x674e13e1 public_key_destroy +EXPORT_SYMBOL_GPL vmlinux 0x67539a27 ata_sff_hsm_move +EXPORT_SYMBOL_GPL vmlinux 0x6754ac18 clk_get_parent_by_index +EXPORT_SYMBOL_GPL vmlinux 0x67587cb5 regulator_get_mode +EXPORT_SYMBOL_GPL vmlinux 0x676b6071 reservation_object_test_signaled_rcu +EXPORT_SYMBOL_GPL vmlinux 0x67829163 blk_rq_check_limits +EXPORT_SYMBOL_GPL vmlinux 0x67955ce6 profile_hits +EXPORT_SYMBOL_GPL vmlinux 0x67ea23fd pci_common_swizzle +EXPORT_SYMBOL_GPL vmlinux 0x680bed5f rio_mport_write_config_8 +EXPORT_SYMBOL_GPL vmlinux 0x680db7c7 __rt_mutex_init +EXPORT_SYMBOL_GPL vmlinux 0x683c85ad __wake_up_locked_key +EXPORT_SYMBOL_GPL vmlinux 0x683e871c usb_get_current_frame_number +EXPORT_SYMBOL_GPL vmlinux 0x684ae879 rio_request_inb_pwrite +EXPORT_SYMBOL_GPL vmlinux 0x685f88e7 mbox_controller_register +EXPORT_SYMBOL_GPL vmlinux 0x685f9e53 netlink_has_listeners +EXPORT_SYMBOL_GPL vmlinux 0x68607454 pm_generic_freeze +EXPORT_SYMBOL_GPL vmlinux 0x6868edac __add_pages +EXPORT_SYMBOL_GPL vmlinux 0x6881c7a1 regcache_cache_bypass +EXPORT_SYMBOL_GPL vmlinux 0x68826efd ata_pci_device_suspend +EXPORT_SYMBOL_GPL vmlinux 0x68875168 blocking_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0x68b5fb03 efivar_entry_find +EXPORT_SYMBOL_GPL vmlinux 0x68da21a0 crypto_unregister_instance +EXPORT_SYMBOL_GPL vmlinux 0x6911d34c usb_remove_phy +EXPORT_SYMBOL_GPL vmlinux 0x6921aa34 compat_put_timeval +EXPORT_SYMBOL_GPL vmlinux 0x69221e37 kset_create_and_add +EXPORT_SYMBOL_GPL vmlinux 0x6923ce63 irq_work_sync +EXPORT_SYMBOL_GPL vmlinux 0x692673e4 xfrm_audit_state_notfound +EXPORT_SYMBOL_GPL vmlinux 0x6943f0b9 acpi_gpiochip_request_interrupts +EXPORT_SYMBOL_GPL vmlinux 0x69447467 ring_buffer_write +EXPORT_SYMBOL_GPL vmlinux 0x696219c9 klp_enable_patch +EXPORT_SYMBOL_GPL vmlinux 0x69646726 usb_get_status +EXPORT_SYMBOL_GPL vmlinux 0x69655ef2 console_drivers +EXPORT_SYMBOL_GPL vmlinux 0x6979d5cb device_store_int +EXPORT_SYMBOL_GPL vmlinux 0x697c5d0d tracing_snapshot_alloc +EXPORT_SYMBOL_GPL vmlinux 0x698a899f ring_buffer_peek +EXPORT_SYMBOL_GPL vmlinux 0x69b2e8e5 dev_pm_qos_remove_notifier +EXPORT_SYMBOL_GPL vmlinux 0x69bd430f pm_generic_suspend_late +EXPORT_SYMBOL_GPL vmlinux 0x69d63c62 arizona_clk32k_disable +EXPORT_SYMBOL_GPL vmlinux 0x69d915f6 usb_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0x69ddd30b power_supply_am_i_supplied +EXPORT_SYMBOL_GPL vmlinux 0x69e43277 dev_pm_get_subsys_data +EXPORT_SYMBOL_GPL vmlinux 0x6a0387cb of_phy_get +EXPORT_SYMBOL_GPL vmlinux 0x6a0d46e7 xen_unregister_device_domain_owner +EXPORT_SYMBOL_GPL vmlinux 0x6a1733eb iommu_group_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x6a1c467f napi_hash_add +EXPORT_SYMBOL_GPL vmlinux 0x6a4f623b mmu_notifier_synchronize +EXPORT_SYMBOL_GPL vmlinux 0x6a5fb566 rcu_sched_force_quiescent_state +EXPORT_SYMBOL_GPL vmlinux 0x6a6761df component_add +EXPORT_SYMBOL_GPL vmlinux 0x6a6b300e arizona_set_irq_wake +EXPORT_SYMBOL_GPL vmlinux 0x6a6cafd2 ring_buffer_read_page +EXPORT_SYMBOL_GPL vmlinux 0x6a8441be cpci_hp_start +EXPORT_SYMBOL_GPL vmlinux 0x6a8e406b wbc_account_io +EXPORT_SYMBOL_GPL vmlinux 0x6aa27aa8 ipv4_redirect +EXPORT_SYMBOL_GPL vmlinux 0x6aa6ecad ata_link_online +EXPORT_SYMBOL_GPL vmlinux 0x6ab1b8bb usb_unlink_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x6acad21f acpi_get_cpuid +EXPORT_SYMBOL_GPL vmlinux 0x6b0dc565 xen_set_irq_priority +EXPORT_SYMBOL_GPL vmlinux 0x6b29a1fa ring_buffer_event_length +EXPORT_SYMBOL_GPL vmlinux 0x6b3eaad6 alarm_start +EXPORT_SYMBOL_GPL vmlinux 0x6b45bd56 ata_sff_wait_after_reset +EXPORT_SYMBOL_GPL vmlinux 0x6b574f6c __pm_stay_awake +EXPORT_SYMBOL_GPL vmlinux 0x6b81c38b power_supply_unreg_notifier +EXPORT_SYMBOL_GPL vmlinux 0x6b8f1cb5 dmaengine_unmap_put +EXPORT_SYMBOL_GPL vmlinux 0x6b91bac7 netdev_set_default_ethtool_ops +EXPORT_SYMBOL_GPL vmlinux 0x6bb9704e preempt_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0x6bca1d20 thermal_notify_framework +EXPORT_SYMBOL_GPL vmlinux 0x6bf1b90d dmi_memdev_name +EXPORT_SYMBOL_GPL vmlinux 0x6c07d933 add_uevent_var +EXPORT_SYMBOL_GPL vmlinux 0x6c1251fd apei_exec_read_register +EXPORT_SYMBOL_GPL vmlinux 0x6c1553f1 usb_unpoison_urb +EXPORT_SYMBOL_GPL vmlinux 0x6c389761 acpi_bus_get_private_data +EXPORT_SYMBOL_GPL vmlinux 0x6c4b6684 reset_control_assert +EXPORT_SYMBOL_GPL vmlinux 0x6c4cc87c dev_attr_em_message_type +EXPORT_SYMBOL_GPL vmlinux 0x6c54c151 scsi_nl_sock +EXPORT_SYMBOL_GPL vmlinux 0x6c63b660 perf_pmu_register +EXPORT_SYMBOL_GPL vmlinux 0x6c655913 register_acpi_hed_notifier +EXPORT_SYMBOL_GPL vmlinux 0x6ca4bf88 async_synchronize_full_domain +EXPORT_SYMBOL_GPL vmlinux 0x6ca702aa rio_release_outb_dbell +EXPORT_SYMBOL_GPL vmlinux 0x6caffd75 fat_setattr +EXPORT_SYMBOL_GPL vmlinux 0x6ccbbad2 gpiod_set_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x6cd21997 ata_tf_to_fis +EXPORT_SYMBOL_GPL vmlinux 0x6cd8ae0b dma_get_slave_channel +EXPORT_SYMBOL_GPL vmlinux 0x6cdfda26 register_virtio_driver +EXPORT_SYMBOL_GPL vmlinux 0x6cea5c84 flush_kthread_worker +EXPORT_SYMBOL_GPL vmlinux 0x6cf4ca78 con_debug_enter +EXPORT_SYMBOL_GPL vmlinux 0x6cfb84d2 xenbus_dev_is_online +EXPORT_SYMBOL_GPL vmlinux 0x6d072622 __clk_mux_determine_rate +EXPORT_SYMBOL_GPL vmlinux 0x6d07316e sdio_release_host +EXPORT_SYMBOL_GPL vmlinux 0x6d1531fc irq_remove_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x6d2fc5a6 net_namespace_list +EXPORT_SYMBOL_GPL vmlinux 0x6d3a30d0 regmap_get_device +EXPORT_SYMBOL_GPL vmlinux 0x6d5851de crypto_init_spawn2 +EXPORT_SYMBOL_GPL vmlinux 0x6d5ee1f7 palmas_ext_control_req_config +EXPORT_SYMBOL_GPL vmlinux 0x6d7127a9 ohci_resume +EXPORT_SYMBOL_GPL vmlinux 0x6d7b4378 rtc_update_irq_enable +EXPORT_SYMBOL_GPL vmlinux 0x6dad4842 pm_generic_suspend_noirq +EXPORT_SYMBOL_GPL vmlinux 0x6dcc0d1e x509_request_asymmetric_key +EXPORT_SYMBOL_GPL vmlinux 0x6dcdbb1a kthread_park +EXPORT_SYMBOL_GPL vmlinux 0x6ddb7145 get_task_comm +EXPORT_SYMBOL_GPL vmlinux 0x6de41235 fat_dir_empty +EXPORT_SYMBOL_GPL vmlinux 0x6df16012 skb_segment +EXPORT_SYMBOL_GPL vmlinux 0x6df266bf ata_sas_port_destroy +EXPORT_SYMBOL_GPL vmlinux 0x6e024b25 cpufreq_unregister_governor +EXPORT_SYMBOL_GPL vmlinux 0x6e03c747 devm_regulator_get_optional +EXPORT_SYMBOL_GPL vmlinux 0x6e04a077 usb_bind_phy +EXPORT_SYMBOL_GPL vmlinux 0x6e282213 regulator_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x6e42f614 __rio_local_read_config_8 +EXPORT_SYMBOL_GPL vmlinux 0x6e4cdff1 gpiochip_request_own_desc +EXPORT_SYMBOL_GPL vmlinux 0x6e53fd86 inet_hash +EXPORT_SYMBOL_GPL vmlinux 0x6e58ddf0 gnttab_end_foreign_transfer_ref +EXPORT_SYMBOL_GPL vmlinux 0x6e666213 __efivar_entry_iter +EXPORT_SYMBOL_GPL vmlinux 0x6e6b5e94 irq_create_strict_mappings +EXPORT_SYMBOL_GPL vmlinux 0x6e7943ec iommu_group_id +EXPORT_SYMBOL_GPL vmlinux 0x6e7fe538 device_pm_wait_for_dev +EXPORT_SYMBOL_GPL vmlinux 0x6e85b00b local_touch_nmi +EXPORT_SYMBOL_GPL vmlinux 0x6e89a560 regmap_irq_chip_get_base +EXPORT_SYMBOL_GPL vmlinux 0x6ea98361 ioremap_page_range +EXPORT_SYMBOL_GPL vmlinux 0x6ec363cb spi_write_then_read +EXPORT_SYMBOL_GPL vmlinux 0x6ee0402b sdio_claim_host +EXPORT_SYMBOL_GPL vmlinux 0x6ee7b261 usb_alloc_coherent +EXPORT_SYMBOL_GPL vmlinux 0x6f10287d acpi_bus_trim +EXPORT_SYMBOL_GPL vmlinux 0x6f1cf034 usb_unanchor_urb +EXPORT_SYMBOL_GPL vmlinux 0x6f1ee69e kgdb_unregister_io_module +EXPORT_SYMBOL_GPL vmlinux 0x6f3a5f04 page_mkclean +EXPORT_SYMBOL_GPL vmlinux 0x6f402ba6 acpi_dev_resource_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x6f8d8461 inet_hash_connect +EXPORT_SYMBOL_GPL vmlinux 0x6fa7c870 kern_mount_data +EXPORT_SYMBOL_GPL vmlinux 0x6fe3d8cf ktime_add_safe +EXPORT_SYMBOL_GPL vmlinux 0x6ff607b6 crypto_get_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x7008787b trace_define_field +EXPORT_SYMBOL_GPL vmlinux 0x7015b36d driver_find_device +EXPORT_SYMBOL_GPL vmlinux 0x70225a80 tty_port_link_device +EXPORT_SYMBOL_GPL vmlinux 0x7049217e usb_acpi_power_manageable +EXPORT_SYMBOL_GPL vmlinux 0x7056b6f2 __clk_get_name +EXPORT_SYMBOL_GPL vmlinux 0x7065493d led_classdev_suspend +EXPORT_SYMBOL_GPL vmlinux 0x707ff1bb ata_xfer_mask2mode +EXPORT_SYMBOL_GPL vmlinux 0x708aeed7 device_destroy +EXPORT_SYMBOL_GPL vmlinux 0x7093c042 disk_part_iter_next +EXPORT_SYMBOL_GPL vmlinux 0x709b0278 devm_regulator_get_exclusive +EXPORT_SYMBOL_GPL vmlinux 0x709d33e5 dma_buf_kmap +EXPORT_SYMBOL_GPL vmlinux 0x70be4a1a kobject_get_path +EXPORT_SYMBOL_GPL vmlinux 0x70bffecc led_trigger_show +EXPORT_SYMBOL_GPL vmlinux 0x70cf032f usb_hcd_irq +EXPORT_SYMBOL_GPL vmlinux 0x70e88626 swiotlb_tbl_map_single +EXPORT_SYMBOL_GPL vmlinux 0x70f2c241 __rtnl_link_unregister +EXPORT_SYMBOL_GPL vmlinux 0x70f7a169 scsi_target_unblock +EXPORT_SYMBOL_GPL vmlinux 0x70fba2c5 ata_dummy_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x70fde313 usb_create_hcd +EXPORT_SYMBOL_GPL vmlinux 0x71047d92 pwmchip_remove +EXPORT_SYMBOL_GPL vmlinux 0x710c73b6 crypto_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x710da91f crypto_register_algs +EXPORT_SYMBOL_GPL vmlinux 0x71270332 xenbus_frontend_closed +EXPORT_SYMBOL_GPL vmlinux 0x712e05f7 crypto_alloc_shash +EXPORT_SYMBOL_GPL vmlinux 0x713cb48d locks_alloc_lock +EXPORT_SYMBOL_GPL vmlinux 0x715ab7e0 put_device +EXPORT_SYMBOL_GPL vmlinux 0x716265c7 debugfs_initialized +EXPORT_SYMBOL_GPL vmlinux 0x719e17ff clk_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0x71afc14a pstore_register +EXPORT_SYMBOL_GPL vmlinux 0x71c362c6 da9052_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0x71ca0570 irq_domain_associate_many +EXPORT_SYMBOL_GPL vmlinux 0x71d1888d extcon_set_cable_state +EXPORT_SYMBOL_GPL vmlinux 0x71dc9998 crypto_il_tab +EXPORT_SYMBOL_GPL vmlinux 0x72017f9c dax_pfn_mkwrite +EXPORT_SYMBOL_GPL vmlinux 0x720e3a22 aead_geniv_exit +EXPORT_SYMBOL_GPL vmlinux 0x722116cb usb_driver_release_interface +EXPORT_SYMBOL_GPL vmlinux 0x722af869 devm_mdiobus_free +EXPORT_SYMBOL_GPL vmlinux 0x72690c56 fat_get_dotdot_entry +EXPORT_SYMBOL_GPL vmlinux 0x72741f25 trace_vbprintk +EXPORT_SYMBOL_GPL vmlinux 0x72744090 device_get_next_child_node +EXPORT_SYMBOL_GPL vmlinux 0x72751498 __platform_driver_probe +EXPORT_SYMBOL_GPL vmlinux 0x7278d328 all_vm_events +EXPORT_SYMBOL_GPL vmlinux 0x72bd8b62 device_remove_file_self +EXPORT_SYMBOL_GPL vmlinux 0x72ceb8f6 phy_pm_runtime_put_sync +EXPORT_SYMBOL_GPL vmlinux 0x72cf714d klist_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x72d50665 ata_pci_bmdma_clear_simplex +EXPORT_SYMBOL_GPL vmlinux 0x72e2a5ef dummy_con +EXPORT_SYMBOL_GPL vmlinux 0x72ef53d8 tty_wakeup +EXPORT_SYMBOL_GPL vmlinux 0x73013896 xenbus_printf +EXPORT_SYMBOL_GPL vmlinux 0x730c214b irq_gc_mask_set_bit +EXPORT_SYMBOL_GPL vmlinux 0x731dba7a xen_domain_type +EXPORT_SYMBOL_GPL vmlinux 0x732e3333 x509_cert_parse +EXPORT_SYMBOL_GPL vmlinux 0x73425709 blkcipher_aead_walk_virt_block +EXPORT_SYMBOL_GPL vmlinux 0x73437b1a iommu_domain_free +EXPORT_SYMBOL_GPL vmlinux 0x73510609 fl6_update_dst +EXPORT_SYMBOL_GPL vmlinux 0x737523d6 bitmap_copy_from_slot +EXPORT_SYMBOL_GPL vmlinux 0x739a4369 __blocking_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x73a48b4a ata_sff_std_ports +EXPORT_SYMBOL_GPL vmlinux 0x73ae0365 regulator_get_exclusive +EXPORT_SYMBOL_GPL vmlinux 0x73afb372 usb_show_dynids +EXPORT_SYMBOL_GPL vmlinux 0x73b3b394 cpuidle_get_cpu_driver +EXPORT_SYMBOL_GPL vmlinux 0x73c2554f __iowrite64_copy +EXPORT_SYMBOL_GPL vmlinux 0x73c832f2 ata_dev_classify +EXPORT_SYMBOL_GPL vmlinux 0x73d20b48 dma_wait_for_async_tx +EXPORT_SYMBOL_GPL vmlinux 0x73d69364 ring_buffer_change_overwrite +EXPORT_SYMBOL_GPL vmlinux 0x73df3f27 usb_deregister_device_driver +EXPORT_SYMBOL_GPL vmlinux 0x73e4dfad pinctrl_add_gpio_ranges +EXPORT_SYMBOL_GPL vmlinux 0x74021c04 xen_swiotlb_free_coherent +EXPORT_SYMBOL_GPL vmlinux 0x7418bc9b tps6586x_irq_get_virq +EXPORT_SYMBOL_GPL vmlinux 0x742d42e0 dma_buf_get +EXPORT_SYMBOL_GPL vmlinux 0x743a165e ata_pack_xfermask +EXPORT_SYMBOL_GPL vmlinux 0x74457e56 apei_resources_fini +EXPORT_SYMBOL_GPL vmlinux 0x7447d2bc unix_inq_len +EXPORT_SYMBOL_GPL vmlinux 0x744b9958 md_stop_writes +EXPORT_SYMBOL_GPL vmlinux 0x74520ebd spi_get_device_id +EXPORT_SYMBOL_GPL vmlinux 0x7452adff user_return_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x7463a575 perf_pmu_migrate_context +EXPORT_SYMBOL_GPL vmlinux 0x7464ea38 dev_pm_qos_add_global_notifier +EXPORT_SYMBOL_GPL vmlinux 0x74660f0c dma_request_slave_channel +EXPORT_SYMBOL_GPL vmlinux 0x746cbfd2 ip6_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x748d801a pcap_adc_sync +EXPORT_SYMBOL_GPL vmlinux 0x749edfd3 crypto_blkcipher_type +EXPORT_SYMBOL_GPL vmlinux 0x74a3423f virtqueue_add_sgs +EXPORT_SYMBOL_GPL vmlinux 0x74a3843e synchronize_srcu_expedited +EXPORT_SYMBOL_GPL vmlinux 0x74a73268 ata_std_bios_param +EXPORT_SYMBOL_GPL vmlinux 0x74b5ea68 lcm_not_zero +EXPORT_SYMBOL_GPL vmlinux 0x74baf17a tracing_is_on +EXPORT_SYMBOL_GPL vmlinux 0x74c08941 kvm_async_pf_task_wake +EXPORT_SYMBOL_GPL vmlinux 0x74deb10c used_vectors +EXPORT_SYMBOL_GPL vmlinux 0x7501a57f usb_hub_release_port +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 0x7563e3aa key_set_timeout +EXPORT_SYMBOL_GPL vmlinux 0x757a0ffa gnttab_unmap_refs_async +EXPORT_SYMBOL_GPL vmlinux 0x757b49d2 kmsg_dump_get_line +EXPORT_SYMBOL_GPL vmlinux 0x758a782e blk_fill_rwbs +EXPORT_SYMBOL_GPL vmlinux 0x7598ff96 device_dma_is_coherent +EXPORT_SYMBOL_GPL vmlinux 0x75d48bed wm831x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x75eba966 tty_port_register_device_attr +EXPORT_SYMBOL_GPL vmlinux 0x76029d1a rhashtable_free_and_destroy +EXPORT_SYMBOL_GPL vmlinux 0x760f037f phy_optional_get +EXPORT_SYMBOL_GPL vmlinux 0x76260eeb blkg_lookup +EXPORT_SYMBOL_GPL vmlinux 0x762b6338 sata_pmp_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x7630ffb6 pin_is_valid +EXPORT_SYMBOL_GPL vmlinux 0x76437689 cleanup_srcu_struct +EXPORT_SYMBOL_GPL vmlinux 0x765bf1f7 __mnt_is_readonly +EXPORT_SYMBOL_GPL vmlinux 0x767aa25a blk_trace_setup +EXPORT_SYMBOL_GPL vmlinux 0x7681946c unregister_pm_notifier +EXPORT_SYMBOL_GPL vmlinux 0x76993243 single_release_net +EXPORT_SYMBOL_GPL vmlinux 0x769b91de transport_setup_device +EXPORT_SYMBOL_GPL vmlinux 0x76a8afc3 __module_text_address +EXPORT_SYMBOL_GPL vmlinux 0x76d4c489 bdev_read_page +EXPORT_SYMBOL_GPL vmlinux 0x76d9b876 clk_set_rate +EXPORT_SYMBOL_GPL vmlinux 0x76dbefe3 usb_get_intf +EXPORT_SYMBOL_GPL vmlinux 0x76ef3721 regulator_set_load +EXPORT_SYMBOL_GPL vmlinux 0x76f900f8 watchdog_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0x7700b292 bsg_unregister_queue +EXPORT_SYMBOL_GPL vmlinux 0x770fc367 ata_port_wait_eh +EXPORT_SYMBOL_GPL vmlinux 0x7712771a unbind_from_irqhandler +EXPORT_SYMBOL_GPL vmlinux 0x7729cbdd task_handoff_register +EXPORT_SYMBOL_GPL vmlinux 0x772fbcaf trace_buffer_unlock_commit_regs +EXPORT_SYMBOL_GPL vmlinux 0x77339ce0 iommu_get_domain_for_dev +EXPORT_SYMBOL_GPL vmlinux 0x7734589f __sock_recv_timestamp +EXPORT_SYMBOL_GPL vmlinux 0x774d890f regulator_set_mode +EXPORT_SYMBOL_GPL vmlinux 0x7754bc11 dm_hold +EXPORT_SYMBOL_GPL vmlinux 0x7757b51a clk_unregister +EXPORT_SYMBOL_GPL vmlinux 0x775a6ef5 kvm_read_and_reset_pf_reason +EXPORT_SYMBOL_GPL vmlinux 0x7773a87e regmap_add_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0x77760a67 pci_hp_deregister +EXPORT_SYMBOL_GPL vmlinux 0x7777522c device_remove_bin_file +EXPORT_SYMBOL_GPL vmlinux 0x778f18d2 devm_regulator_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x77a68be7 devres_close_group +EXPORT_SYMBOL_GPL vmlinux 0x77aab3e6 sata_std_hardreset +EXPORT_SYMBOL_GPL vmlinux 0x77f666de tracepoint_probe_register +EXPORT_SYMBOL_GPL vmlinux 0x77f85a1e invalidate_inode_pages2_range +EXPORT_SYMBOL_GPL vmlinux 0x782535b4 system_trusted_keyring +EXPORT_SYMBOL_GPL vmlinux 0x7827f8a0 crypto_register_shash +EXPORT_SYMBOL_GPL vmlinux 0x782adb74 hpet_rtc_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x783d0b8f rio_dma_prep_xfer +EXPORT_SYMBOL_GPL vmlinux 0x78403449 ipv6_proxy_select_ident +EXPORT_SYMBOL_GPL vmlinux 0x78575bee atomic_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x7864d7bb regulator_set_voltage_time_sel +EXPORT_SYMBOL_GPL vmlinux 0x786be3b1 arizona_dev_init +EXPORT_SYMBOL_GPL vmlinux 0x7874b5ec unix_table_lock +EXPORT_SYMBOL_GPL vmlinux 0x78793cfa extcon_dev_register +EXPORT_SYMBOL_GPL vmlinux 0x787c882b lzo1x_1_compress +EXPORT_SYMBOL_GPL vmlinux 0x78ae8175 smp_call_function_single_async +EXPORT_SYMBOL_GPL vmlinux 0x78b650b0 acpi_subsys_suspend +EXPORT_SYMBOL_GPL vmlinux 0x78d30c09 dummy_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0x78d93c3c __bpf_prog_free +EXPORT_SYMBOL_GPL vmlinux 0x78faf612 xenbus_register_driver_common +EXPORT_SYMBOL_GPL vmlinux 0x7944e0fc tracing_off +EXPORT_SYMBOL_GPL vmlinux 0x794b7271 orderly_reboot +EXPORT_SYMBOL_GPL vmlinux 0x796c2d48 dm_get_md +EXPORT_SYMBOL_GPL vmlinux 0x7973b388 fpu__activate_curr +EXPORT_SYMBOL_GPL vmlinux 0x7974b95c component_master_add_with_match +EXPORT_SYMBOL_GPL vmlinux 0x7991fd8d crash_vmclear_loaded_vmcss +EXPORT_SYMBOL_GPL vmlinux 0x7997340a pci_generic_config_read32 +EXPORT_SYMBOL_GPL vmlinux 0x79ca7e1c of_phy_simple_xlate +EXPORT_SYMBOL_GPL vmlinux 0x79d9ccbc sysfs_create_bin_file +EXPORT_SYMBOL_GPL vmlinux 0x79defbe1 kthread_should_park +EXPORT_SYMBOL_GPL vmlinux 0x79e69460 intel_iommu_gfx_mapped +EXPORT_SYMBOL_GPL vmlinux 0x79f41d5b try_get_online_cpus +EXPORT_SYMBOL_GPL vmlinux 0x7a093833 set_memory_array_wt +EXPORT_SYMBOL_GPL vmlinux 0x7a2e4b44 ezx_pcap_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x7a319404 clk_register_fixed_rate +EXPORT_SYMBOL_GPL vmlinux 0x7a36eb3f regmap_field_free +EXPORT_SYMBOL_GPL vmlinux 0x7a3ba35d platform_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x7a57c4f0 rtnl_af_unregister +EXPORT_SYMBOL_GPL vmlinux 0x7a6e99f2 rio_add_device +EXPORT_SYMBOL_GPL vmlinux 0x7a944007 rcu_idle_enter +EXPORT_SYMBOL_GPL vmlinux 0x7ac0306a yield_to +EXPORT_SYMBOL_GPL vmlinux 0x7ac33eb5 bus_get_device_klist +EXPORT_SYMBOL_GPL vmlinux 0x7ac668a6 devfreq_event_reset_event +EXPORT_SYMBOL_GPL vmlinux 0x7ac74020 ahash_attr_alg +EXPORT_SYMBOL_GPL vmlinux 0x7ac8e5b0 acpi_gsi_to_irq +EXPORT_SYMBOL_GPL vmlinux 0x7b0f1ab3 ring_buffer_free_read_page +EXPORT_SYMBOL_GPL vmlinux 0x7b1d544d edac_handler_set +EXPORT_SYMBOL_GPL vmlinux 0x7b202401 usb_poison_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x7b2a1983 regmap_async_complete +EXPORT_SYMBOL_GPL vmlinux 0x7b35d0b9 __dev_forward_skb +EXPORT_SYMBOL_GPL vmlinux 0x7b683848 rio_unregister_scan +EXPORT_SYMBOL_GPL vmlinux 0x7b685426 is_skb_forwardable +EXPORT_SYMBOL_GPL vmlinux 0x7b6a626f ata_eh_thaw_port +EXPORT_SYMBOL_GPL vmlinux 0x7b70ed5c pm_qos_request_active +EXPORT_SYMBOL_GPL vmlinux 0x7b7a77c5 get_task_mm +EXPORT_SYMBOL_GPL vmlinux 0x7b90d1a9 bind_virq_to_irqhandler +EXPORT_SYMBOL_GPL vmlinux 0x7b96edd7 __gpiod_get +EXPORT_SYMBOL_GPL vmlinux 0x7bfeeb3b ipv6_find_tlv +EXPORT_SYMBOL_GPL vmlinux 0x7c01a798 perf_event_create_kernel_counter +EXPORT_SYMBOL_GPL vmlinux 0x7c049cfb ip_local_out_sk +EXPORT_SYMBOL_GPL vmlinux 0x7c1d1310 da903x_writes +EXPORT_SYMBOL_GPL vmlinux 0x7c346357 pkey_algo +EXPORT_SYMBOL_GPL vmlinux 0x7c8e3ce9 tcp_slow_start +EXPORT_SYMBOL_GPL vmlinux 0x7c91b0fa crypto_remove_spawns +EXPORT_SYMBOL_GPL vmlinux 0x7c9a7371 clk_prepare +EXPORT_SYMBOL_GPL vmlinux 0x7c9f3e69 __tracepoint_add_device_to_group +EXPORT_SYMBOL_GPL vmlinux 0x7ca427b6 dev_set_name +EXPORT_SYMBOL_GPL vmlinux 0x7ccb13dd powercap_register_zone +EXPORT_SYMBOL_GPL vmlinux 0x7cd6c24f posix_acl_create +EXPORT_SYMBOL_GPL vmlinux 0x7cd6f042 cpufreq_get_current_driver +EXPORT_SYMBOL_GPL vmlinux 0x7cd7aec9 usb_put_intf +EXPORT_SYMBOL_GPL vmlinux 0x7cd8c6e5 trace_seq_putmem_hex +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 0x7d0f24fc __irq_set_handler +EXPORT_SYMBOL_GPL vmlinux 0x7d30c629 gpiochip_set_chained_irqchip +EXPORT_SYMBOL_GPL vmlinux 0x7d362462 fuse_dev_release +EXPORT_SYMBOL_GPL vmlinux 0x7d387b67 ata_sff_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x7d51213d crypto_givcipher_type +EXPORT_SYMBOL_GPL vmlinux 0x7d541f51 pm_runtime_force_resume +EXPORT_SYMBOL_GPL vmlinux 0x7d59dd46 pm_wq +EXPORT_SYMBOL_GPL vmlinux 0x7d5f579e gpiod_set_raw_value +EXPORT_SYMBOL_GPL vmlinux 0x7d9ef798 devm_regulator_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x7dab26b6 wm831x_isinkv_values +EXPORT_SYMBOL_GPL vmlinux 0x7dbf864f find_extend_vma +EXPORT_SYMBOL_GPL vmlinux 0x7dd02579 crypto_alloc_instance2 +EXPORT_SYMBOL_GPL vmlinux 0x7dda30af unregister_tracepoint_module_notifier +EXPORT_SYMBOL_GPL vmlinux 0x7dddfda5 crypto_unregister_pcomp +EXPORT_SYMBOL_GPL vmlinux 0x7de65a03 acpi_lpat_free_conversion_table +EXPORT_SYMBOL_GPL vmlinux 0x7dec8588 tty_port_install +EXPORT_SYMBOL_GPL vmlinux 0x7defdc3d pci_restore_ats_state +EXPORT_SYMBOL_GPL vmlinux 0x7dff0275 ata_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x7e02ee6a regulator_is_enabled_regmap +EXPORT_SYMBOL_GPL vmlinux 0x7e0a3e2b key_type_user +EXPORT_SYMBOL_GPL vmlinux 0x7e374ef7 subsys_find_device_by_id +EXPORT_SYMBOL_GPL vmlinux 0x7e5831b2 usb_kill_urb +EXPORT_SYMBOL_GPL vmlinux 0x7e5d3807 seq_release_net +EXPORT_SYMBOL_GPL vmlinux 0x7e64181d usb_calc_bus_time +EXPORT_SYMBOL_GPL vmlinux 0x7e75260f adp5520_write +EXPORT_SYMBOL_GPL vmlinux 0x7e7f52e7 skb_gso_transport_seglen +EXPORT_SYMBOL_GPL vmlinux 0x7e7f898d screen_glyph +EXPORT_SYMBOL_GPL vmlinux 0x7e99c363 ata_bmdma_qc_issue +EXPORT_SYMBOL_GPL vmlinux 0x7e9fe0f2 to_nvdimm_bus +EXPORT_SYMBOL_GPL vmlinux 0x7ea1a2bc probe_kernel_write +EXPORT_SYMBOL_GPL vmlinux 0x7ea9b6e6 fuse_dev_alloc +EXPORT_SYMBOL_GPL vmlinux 0x7ec995a7 crypto_alloc_instance +EXPORT_SYMBOL_GPL vmlinux 0x7edc75a5 rio_attach_device +EXPORT_SYMBOL_GPL vmlinux 0x7f1148d5 input_ff_create +EXPORT_SYMBOL_GPL vmlinux 0x7f13d491 pm_qos_remove_request +EXPORT_SYMBOL_GPL vmlinux 0x7f146b7d inet_unhash +EXPORT_SYMBOL_GPL vmlinux 0x7f498464 iptunnel_pull_header +EXPORT_SYMBOL_GPL vmlinux 0x7f4c4465 sysfs_remove_link +EXPORT_SYMBOL_GPL vmlinux 0x7f4e68f8 pm_generic_resume_early +EXPORT_SYMBOL_GPL vmlinux 0x7f54d2eb modify_user_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x7f6b81da skcipher_geniv_exit +EXPORT_SYMBOL_GPL vmlinux 0x7f8a116a subsys_system_register +EXPORT_SYMBOL_GPL vmlinux 0x7f960dfa blk_queue_lld_busy +EXPORT_SYMBOL_GPL vmlinux 0x7f9b15f0 class_find_device +EXPORT_SYMBOL_GPL vmlinux 0x7faac8b5 init_uts_ns +EXPORT_SYMBOL_GPL vmlinux 0x7fbef062 ata_sff_data_xfer32 +EXPORT_SYMBOL_GPL vmlinux 0x7fc00587 ata_sff_data_xfer +EXPORT_SYMBOL_GPL vmlinux 0x7fc243a4 spi_finalize_current_transfer +EXPORT_SYMBOL_GPL vmlinux 0x7fdc1a23 tps65912_clear_bits +EXPORT_SYMBOL_GPL vmlinux 0x80156244 register_kprobes +EXPORT_SYMBOL_GPL vmlinux 0x80180be1 trace_event_buffer_reserve +EXPORT_SYMBOL_GPL vmlinux 0x802c184d irq_get_irq_data +EXPORT_SYMBOL_GPL vmlinux 0x804c9390 device_release_driver +EXPORT_SYMBOL_GPL vmlinux 0x804cae6a cpu_tlbstate +EXPORT_SYMBOL_GPL vmlinux 0x805896cd spi_alloc_device +EXPORT_SYMBOL_GPL vmlinux 0x8065a4fc mmu_notifier_call_srcu +EXPORT_SYMBOL_GPL vmlinux 0x808ec1a3 crypto_alg_tested +EXPORT_SYMBOL_GPL vmlinux 0x80993249 dev_pm_disable_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0x8099389d crypto_destroy_tfm +EXPORT_SYMBOL_GPL vmlinux 0x80c3cced thermal_cooling_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x80c68137 nf_log_buf_close +EXPORT_SYMBOL_GPL vmlinux 0x80d3927f __tracepoint_block_unplug +EXPORT_SYMBOL_GPL vmlinux 0x80d57da4 usb_hcd_link_urb_to_ep +EXPORT_SYMBOL_GPL vmlinux 0x80d5e57a mpi_free +EXPORT_SYMBOL_GPL vmlinux 0x80e85f04 dev_attr_link_power_management_policy +EXPORT_SYMBOL_GPL vmlinux 0x80f0415b crypto_mod_put +EXPORT_SYMBOL_GPL vmlinux 0x80f3268f __trace_printk +EXPORT_SYMBOL_GPL vmlinux 0x80fc2e5a devm_regmap_field_alloc +EXPORT_SYMBOL_GPL vmlinux 0x8114467b cn_netlink_send_mult +EXPORT_SYMBOL_GPL vmlinux 0x811ce532 trace_event_reg +EXPORT_SYMBOL_GPL vmlinux 0x811dc334 usb_unregister_notify +EXPORT_SYMBOL_GPL vmlinux 0x812226e8 usb_hcd_end_port_resume +EXPORT_SYMBOL_GPL vmlinux 0x8140152f virtqueue_enable_cb +EXPORT_SYMBOL_GPL vmlinux 0x8144c064 pci_enable_sriov +EXPORT_SYMBOL_GPL vmlinux 0x8149ea54 ata_timing_find_mode +EXPORT_SYMBOL_GPL vmlinux 0x815588a6 clk_enable +EXPORT_SYMBOL_GPL vmlinux 0x8165dc5a dma_get_slave_caps +EXPORT_SYMBOL_GPL vmlinux 0x8179da3c device_property_read_u32_array +EXPORT_SYMBOL_GPL vmlinux 0x8196727c dma_buf_export +EXPORT_SYMBOL_GPL vmlinux 0x81c4a51b out_of_line_wait_on_bit_timeout +EXPORT_SYMBOL_GPL vmlinux 0x81f56afb fb_bl_default_curve +EXPORT_SYMBOL_GPL vmlinux 0x8223bcba __tracepoint_xhci_dbg_quirks +EXPORT_SYMBOL_GPL vmlinux 0x822528a1 aead_geniv_free +EXPORT_SYMBOL_GPL vmlinux 0x8255929a fat_search_long +EXPORT_SYMBOL_GPL vmlinux 0x825886d7 class_compat_create_link +EXPORT_SYMBOL_GPL vmlinux 0x826417d0 crypto_shash_digest +EXPORT_SYMBOL_GPL vmlinux 0x82729f23 rio_release_outb_mbox +EXPORT_SYMBOL_GPL vmlinux 0x8272b974 dev_pm_qos_flags +EXPORT_SYMBOL_GPL vmlinux 0x8275d1ba xfrm_audit_state_icvfail +EXPORT_SYMBOL_GPL vmlinux 0x82893ea2 sata_async_notification +EXPORT_SYMBOL_GPL vmlinux 0x829cd069 pinctrl_lookup_state +EXPORT_SYMBOL_GPL vmlinux 0x82b11343 virtqueue_kick_prepare +EXPORT_SYMBOL_GPL vmlinux 0x82d79b51 sysctl_vfs_cache_pressure +EXPORT_SYMBOL_GPL vmlinux 0x82dbec19 erst_write +EXPORT_SYMBOL_GPL vmlinux 0x82e275f3 devm_extcon_dev_unregister +EXPORT_SYMBOL_GPL vmlinux 0x83026f78 crypto_nivaead_type +EXPORT_SYMBOL_GPL vmlinux 0x8303eac5 generic_fh_to_parent +EXPORT_SYMBOL_GPL vmlinux 0x83269b20 bio_trim +EXPORT_SYMBOL_GPL vmlinux 0x833a9c86 ip6_local_out +EXPORT_SYMBOL_GPL vmlinux 0x8345a39f tcp_get_info +EXPORT_SYMBOL_GPL vmlinux 0x834616bb sdev_evt_alloc +EXPORT_SYMBOL_GPL vmlinux 0x83653094 kernel_kobj +EXPORT_SYMBOL_GPL vmlinux 0x837a1588 ip6_datagram_connect_v6_only +EXPORT_SYMBOL_GPL vmlinux 0x837e7971 tty_get_pgrp +EXPORT_SYMBOL_GPL vmlinux 0x8386aa75 ohci_init_driver +EXPORT_SYMBOL_GPL vmlinux 0x838b13e7 ring_buffer_free +EXPORT_SYMBOL_GPL vmlinux 0x838bfe0d crypto_ahash_type +EXPORT_SYMBOL_GPL vmlinux 0x83b88ae0 xenbus_dev_cancel +EXPORT_SYMBOL_GPL vmlinux 0x83c4d263 raw_seq_stop +EXPORT_SYMBOL_GPL vmlinux 0x83c932d6 rio_route_clr_table +EXPORT_SYMBOL_GPL vmlinux 0x840fb5d4 __fib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x840fc70d devres_find +EXPORT_SYMBOL_GPL vmlinux 0x843d70ef acpi_is_root_bridge +EXPORT_SYMBOL_GPL vmlinux 0x846b27d1 wm8400_reset_codec_reg_cache +EXPORT_SYMBOL_GPL vmlinux 0x846bd18b bsg_job_done +EXPORT_SYMBOL_GPL vmlinux 0x846f811f shash_attr_alg +EXPORT_SYMBOL_GPL vmlinux 0x847d1a18 acpi_dev_get_resources +EXPORT_SYMBOL_GPL vmlinux 0x8487a2b6 flush_work +EXPORT_SYMBOL_GPL vmlinux 0x84911891 xen_remap_domain_mfn_range +EXPORT_SYMBOL_GPL vmlinux 0x84a0742c vfs_test_lock +EXPORT_SYMBOL_GPL vmlinux 0x84c3d286 __pci_hp_register +EXPORT_SYMBOL_GPL vmlinux 0x84c8ffaa tcp_fetch_timewait_stamp +EXPORT_SYMBOL_GPL vmlinux 0x84d2c9e3 pci_probe_reset_bus +EXPORT_SYMBOL_GPL vmlinux 0x84e9b425 da903x_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x84ef5be1 device_create_bin_file +EXPORT_SYMBOL_GPL vmlinux 0x84f564de ping_hash +EXPORT_SYMBOL_GPL vmlinux 0x84fcee32 adp5520_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x84fd1ce2 power_supply_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x85050965 __irq_alloc_descs +EXPORT_SYMBOL_GPL vmlinux 0x8506baa8 clk_unregister_gate +EXPORT_SYMBOL_GPL vmlinux 0x851e69a8 sysfs_merge_group +EXPORT_SYMBOL_GPL vmlinux 0x85216155 ezx_pcap_read +EXPORT_SYMBOL_GPL vmlinux 0x8532f458 blk_abort_request +EXPORT_SYMBOL_GPL vmlinux 0x854b4fcb crypto_unregister_aead +EXPORT_SYMBOL_GPL vmlinux 0x85650526 clk_debugfs_add_file +EXPORT_SYMBOL_GPL vmlinux 0x856b9284 pci_check_and_unmask_intx +EXPORT_SYMBOL_GPL vmlinux 0x859aea9a xen_set_domain_pte +EXPORT_SYMBOL_GPL vmlinux 0x85aa8ceb zap_vma_ptes +EXPORT_SYMBOL_GPL vmlinux 0x85b32508 irq_gc_ack_set_bit +EXPORT_SYMBOL_GPL vmlinux 0x85c7f674 ring_buffer_normalize_time_stamp +EXPORT_SYMBOL_GPL vmlinux 0x85cb2c45 xen_has_pv_devices +EXPORT_SYMBOL_GPL vmlinux 0x85d0f493 blk_trace_remove +EXPORT_SYMBOL_GPL vmlinux 0x85d7edfd hpet_set_periodic_freq +EXPORT_SYMBOL_GPL vmlinux 0x86318d53 pskb_put +EXPORT_SYMBOL_GPL vmlinux 0x8637c103 spi_register_master +EXPORT_SYMBOL_GPL vmlinux 0x863c91ae devm_regulator_bulk_get +EXPORT_SYMBOL_GPL vmlinux 0x8641b6ce ata_msleep +EXPORT_SYMBOL_GPL vmlinux 0x864f264e usb_phy_set_event +EXPORT_SYMBOL_GPL vmlinux 0x8654be58 hv_remove_vmbus_irq +EXPORT_SYMBOL_GPL vmlinux 0x86623fd7 notify_remote_via_irq +EXPORT_SYMBOL_GPL vmlinux 0x86786286 klist_add_behind +EXPORT_SYMBOL_GPL vmlinux 0x86819bc6 irq_ts_restore +EXPORT_SYMBOL_GPL vmlinux 0x868784cb __symbol_get +EXPORT_SYMBOL_GPL vmlinux 0x868a4104 get_net_ns_by_fd +EXPORT_SYMBOL_GPL vmlinux 0x86a51007 gnttab_end_foreign_transfer +EXPORT_SYMBOL_GPL vmlinux 0x86bb0beb acpi_debugfs_dir +EXPORT_SYMBOL_GPL vmlinux 0x86cc7238 ip6_dst_lookup_flow +EXPORT_SYMBOL_GPL vmlinux 0x86e02dff efivar_entry_set +EXPORT_SYMBOL_GPL vmlinux 0x86f0d974 get_cached_msi_msg +EXPORT_SYMBOL_GPL vmlinux 0x86f65ef5 apic +EXPORT_SYMBOL_GPL vmlinux 0x86f6b99d synchronize_rcu_expedited +EXPORT_SYMBOL_GPL vmlinux 0x86f8c910 pcap_set_ts_bits +EXPORT_SYMBOL_GPL vmlinux 0x8702e548 process_srcu +EXPORT_SYMBOL_GPL vmlinux 0x87090330 tps6586x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x870e16b7 xen_test_irq_shared +EXPORT_SYMBOL_GPL vmlinux 0x872ce43c device_set_wakeup_enable +EXPORT_SYMBOL_GPL vmlinux 0x873fbaea edac_atomic_assert_error +EXPORT_SYMBOL_GPL vmlinux 0x8776c1c2 request_firmware_direct +EXPORT_SYMBOL_GPL vmlinux 0x879dfdb5 led_stop_software_blink +EXPORT_SYMBOL_GPL vmlinux 0x87c2394d usb_add_phy +EXPORT_SYMBOL_GPL vmlinux 0x87da66db __hvc_resize +EXPORT_SYMBOL_GPL vmlinux 0x8801e524 sysfs_add_file_to_group +EXPORT_SYMBOL_GPL vmlinux 0x8810ad5e crypto_xor +EXPORT_SYMBOL_GPL vmlinux 0x88136838 wm8997_i2c_regmap +EXPORT_SYMBOL_GPL vmlinux 0x883c2740 __cookie_v6_init_sequence +EXPORT_SYMBOL_GPL vmlinux 0x88448629 devm_usb_get_phy_by_node +EXPORT_SYMBOL_GPL vmlinux 0x888d13de agp_add_bridge +EXPORT_SYMBOL_GPL vmlinux 0x88a2ecde blk_unprep_request +EXPORT_SYMBOL_GPL vmlinux 0x88ab6fe3 kgdb_active +EXPORT_SYMBOL_GPL vmlinux 0x88b5647c trace_clock_local +EXPORT_SYMBOL_GPL vmlinux 0x88c14198 nf_queue_entry_release_refs +EXPORT_SYMBOL_GPL vmlinux 0x891998e7 rhashtable_walk_start +EXPORT_SYMBOL_GPL vmlinux 0x891a5a7f gnttab_max_grant_frames +EXPORT_SYMBOL_GPL vmlinux 0x891c0416 devm_regmap_init +EXPORT_SYMBOL_GPL vmlinux 0x8924eb1e rcu_force_quiescent_state +EXPORT_SYMBOL_GPL vmlinux 0x89268af0 __class_register +EXPORT_SYMBOL_GPL vmlinux 0x893467a9 regulator_get_voltage_sel_regmap +EXPORT_SYMBOL_GPL vmlinux 0x89485687 iommu_group_put +EXPORT_SYMBOL_GPL vmlinux 0x8949a2e8 fuse_get_req_for_background +EXPORT_SYMBOL_GPL vmlinux 0x8956aeae apei_exec_ctx_init +EXPORT_SYMBOL_GPL vmlinux 0x896f9537 pcie_update_link_speed +EXPORT_SYMBOL_GPL vmlinux 0x89742748 debugfs_create_file_size +EXPORT_SYMBOL_GPL vmlinux 0x8974fbcd md_find_rdev_nr_rcu +EXPORT_SYMBOL_GPL vmlinux 0x8976cd72 fb_deferred_io_cleanup +EXPORT_SYMBOL_GPL vmlinux 0x898168e9 ping_getfrag +EXPORT_SYMBOL_GPL vmlinux 0x8992cb6d virtqueue_add_inbuf +EXPORT_SYMBOL_GPL vmlinux 0x89975310 kobject_rename +EXPORT_SYMBOL_GPL vmlinux 0x899a254b ata_acpi_cbl_80wire +EXPORT_SYMBOL_GPL vmlinux 0x89bbafc6 usb_register_notify +EXPORT_SYMBOL_GPL vmlinux 0x89cef091 __pneigh_lookup +EXPORT_SYMBOL_GPL vmlinux 0x89d183a5 sysfs_create_mount_point +EXPORT_SYMBOL_GPL vmlinux 0x89f099b7 ata_acpi_gtm_xfermask +EXPORT_SYMBOL_GPL vmlinux 0x89f4b042 to_nd_blk_region +EXPORT_SYMBOL_GPL vmlinux 0x8a161811 bpf_prog_destroy +EXPORT_SYMBOL_GPL vmlinux 0x8a2811a2 led_trigger_set +EXPORT_SYMBOL_GPL vmlinux 0x8a42c5e1 crypto_register_template +EXPORT_SYMBOL_GPL vmlinux 0x8a4b8066 unregister_kprobes +EXPORT_SYMBOL_GPL vmlinux 0x8a559846 gnttab_setup_auto_xlat_frames +EXPORT_SYMBOL_GPL vmlinux 0x8a72b8ae ata_link_abort +EXPORT_SYMBOL_GPL vmlinux 0x8a7392a9 crypto_register_rng +EXPORT_SYMBOL_GPL vmlinux 0x8a78989f irq_from_evtchn +EXPORT_SYMBOL_GPL vmlinux 0x8a7cb9c4 platform_thermal_package_rate_control +EXPORT_SYMBOL_GPL vmlinux 0x8ab8d5d7 crypto_init_shash_spawn +EXPORT_SYMBOL_GPL vmlinux 0x8abacc47 get_max_files +EXPORT_SYMBOL_GPL vmlinux 0x8ad531b7 cpufreq_show_cpus +EXPORT_SYMBOL_GPL vmlinux 0x8ad9002f mnt_want_write_file +EXPORT_SYMBOL_GPL vmlinux 0x8aeaa570 irq_find_mapping +EXPORT_SYMBOL_GPL vmlinux 0x8af0a2b1 acpi_match_device +EXPORT_SYMBOL_GPL vmlinux 0x8afdf18a pci_rescan_bus +EXPORT_SYMBOL_GPL vmlinux 0x8b04668e bind_interdomain_evtchn_to_irqhandler +EXPORT_SYMBOL_GPL vmlinux 0x8b0cf0a6 crypto_ahash_setkey +EXPORT_SYMBOL_GPL vmlinux 0x8b149c36 clk_is_match +EXPORT_SYMBOL_GPL vmlinux 0x8b2896f2 balloon_page_dequeue +EXPORT_SYMBOL_GPL vmlinux 0x8b2f4cfb ip6_sk_redirect +EXPORT_SYMBOL_GPL vmlinux 0x8b48a2ae regulator_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x8b64eb24 ata_scsi_unlock_native_capacity +EXPORT_SYMBOL_GPL vmlinux 0x8b8451e5 ata_host_detach +EXPORT_SYMBOL_GPL vmlinux 0x8b90532d bdev_direct_access +EXPORT_SYMBOL_GPL vmlinux 0x8b9200fd lookup_address +EXPORT_SYMBOL_GPL vmlinux 0x8bb2041d pci_get_hp_params +EXPORT_SYMBOL_GPL vmlinux 0x8bb8b0a6 extcon_get_cable_state_ +EXPORT_SYMBOL_GPL vmlinux 0x8bd0a97b class_create_file_ns +EXPORT_SYMBOL_GPL vmlinux 0x8c0215f2 pm_system_wakeup +EXPORT_SYMBOL_GPL vmlinux 0x8c03d20c destroy_workqueue +EXPORT_SYMBOL_GPL vmlinux 0x8c06a108 xenbus_transaction_start +EXPORT_SYMBOL_GPL vmlinux 0x8c19efad power_supply_put +EXPORT_SYMBOL_GPL vmlinux 0x8c31560f trace_output_call +EXPORT_SYMBOL_GPL vmlinux 0x8c3a9ab3 da9055_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0x8c4dad48 device_create +EXPORT_SYMBOL_GPL vmlinux 0x8c5c0696 devm_reset_control_get +EXPORT_SYMBOL_GPL vmlinux 0x8c646600 edac_report_status +EXPORT_SYMBOL_GPL vmlinux 0x8c743fb6 reset_control_status +EXPORT_SYMBOL_GPL vmlinux 0x8c9d1661 arch_phys_wc_index +EXPORT_SYMBOL_GPL vmlinux 0x8ca5bf17 pci_hp_create_module_link +EXPORT_SYMBOL_GPL vmlinux 0x8cd9f935 setup_APIC_eilvt +EXPORT_SYMBOL_GPL vmlinux 0x8ce9c5df tty_init_termios +EXPORT_SYMBOL_GPL vmlinux 0x8cea765f memalloc_socks +EXPORT_SYMBOL_GPL vmlinux 0x8d1692ab devm_regulator_put +EXPORT_SYMBOL_GPL vmlinux 0x8d175608 devm_get_free_pages +EXPORT_SYMBOL_GPL vmlinux 0x8d22bb58 iommu_group_alloc +EXPORT_SYMBOL_GPL vmlinux 0x8d522714 __rcu_read_lock +EXPORT_SYMBOL_GPL vmlinux 0x8d5344d3 sysfs_remove_file_ns +EXPORT_SYMBOL_GPL vmlinux 0x8d5f7840 init_user_ns +EXPORT_SYMBOL_GPL vmlinux 0x8d9062f0 key_type_trusted +EXPORT_SYMBOL_GPL vmlinux 0x8d9d32a4 blkdev_write_iter +EXPORT_SYMBOL_GPL vmlinux 0x8d9fa235 acpi_os_map_iomem +EXPORT_SYMBOL_GPL vmlinux 0x8de56aea gpiod_unexport +EXPORT_SYMBOL_GPL vmlinux 0x8de86ade __i2c_board_lock +EXPORT_SYMBOL_GPL vmlinux 0x8e02b1ea register_asymmetric_key_parser +EXPORT_SYMBOL_GPL vmlinux 0x8e0384f8 i2c_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x8e214b2f __xenbus_register_backend +EXPORT_SYMBOL_GPL vmlinux 0x8e4f88c2 balloon_page_enqueue +EXPORT_SYMBOL_GPL vmlinux 0x8e6442f9 crypto_shoot_alg +EXPORT_SYMBOL_GPL vmlinux 0x8e64c769 sdio_release_irq +EXPORT_SYMBOL_GPL vmlinux 0x8ecf8093 devm_kstrdup +EXPORT_SYMBOL_GPL vmlinux 0x8ed8e78a rio_register_mport +EXPORT_SYMBOL_GPL vmlinux 0x8edfb574 injectm +EXPORT_SYMBOL_GPL vmlinux 0x8eec1db9 irq_domain_xlate_onetwocell +EXPORT_SYMBOL_GPL vmlinux 0x8ef29b8d led_trigger_register_simple +EXPORT_SYMBOL_GPL vmlinux 0x8f04aab4 mbox_send_message +EXPORT_SYMBOL_GPL vmlinux 0x8f0748af rcu_expedite_gp +EXPORT_SYMBOL_GPL vmlinux 0x8f15a303 perf_pmu_unregister +EXPORT_SYMBOL_GPL vmlinux 0x8f1a89a7 pci_enable_ats +EXPORT_SYMBOL_GPL vmlinux 0x8f24d8ea crypto_ablkcipher_type +EXPORT_SYMBOL_GPL vmlinux 0x8f43041b efivar_entry_size +EXPORT_SYMBOL_GPL vmlinux 0x8f59d553 regulator_list_voltage_table +EXPORT_SYMBOL_GPL vmlinux 0x8f6cee77 __round_jiffies_relative +EXPORT_SYMBOL_GPL vmlinux 0x8f759cfb register_trace_event +EXPORT_SYMBOL_GPL vmlinux 0x8fbe30a8 unregister_pernet_subsys +EXPORT_SYMBOL_GPL vmlinux 0x8fc7f43a smpboot_unregister_percpu_thread +EXPORT_SYMBOL_GPL vmlinux 0x8fe096e4 cgroup_attach_task_all +EXPORT_SYMBOL_GPL vmlinux 0x8fe7f04d handle_mm_fault +EXPORT_SYMBOL_GPL vmlinux 0x8ffbbf1f dm_suspended +EXPORT_SYMBOL_GPL vmlinux 0x9009602a acpi_bus_get_ejd +EXPORT_SYMBOL_GPL vmlinux 0x90200038 regmap_multi_reg_write_bypassed +EXPORT_SYMBOL_GPL vmlinux 0x903b627c list_lru_isolate_move +EXPORT_SYMBOL_GPL vmlinux 0x903bb65b acpi_dev_resource_ext_address_space +EXPORT_SYMBOL_GPL vmlinux 0x904e4527 powercap_register_control_type +EXPORT_SYMBOL_GPL vmlinux 0x9062c322 ring_buffer_consume +EXPORT_SYMBOL_GPL vmlinux 0x908caa42 crypto_alloc_aead +EXPORT_SYMBOL_GPL vmlinux 0x909530e7 regmap_async_complete_cb +EXPORT_SYMBOL_GPL vmlinux 0x909eef2f blk_mq_tags_cpumask +EXPORT_SYMBOL_GPL vmlinux 0x90a1004a crypto_has_alg +EXPORT_SYMBOL_GPL vmlinux 0x90aeade0 blk_mq_cancel_requeue_work +EXPORT_SYMBOL_GPL vmlinux 0x90dc29df aout_dump_debugregs +EXPORT_SYMBOL_GPL vmlinux 0x90de0452 platform_thermal_package_notify +EXPORT_SYMBOL_GPL vmlinux 0x90debb8c kobj_sysfs_ops +EXPORT_SYMBOL_GPL vmlinux 0x90df1919 ipv6_opt_accepted +EXPORT_SYMBOL_GPL vmlinux 0x90ef26fd tun_get_socket +EXPORT_SYMBOL_GPL vmlinux 0x91503888 devm_pinctrl_get +EXPORT_SYMBOL_GPL vmlinux 0x9183868c rio_request_dma +EXPORT_SYMBOL_GPL vmlinux 0x91887709 blk_mq_freeze_queue +EXPORT_SYMBOL_GPL vmlinux 0x918ad429 ring_buffer_lock_reserve +EXPORT_SYMBOL_GPL vmlinux 0x91a78618 platform_get_resource +EXPORT_SYMBOL_GPL vmlinux 0x91c6e5b0 pcap_to_irq +EXPORT_SYMBOL_GPL vmlinux 0x91cb62ac driver_register +EXPORT_SYMBOL_GPL vmlinux 0x91efb9b1 rio_route_get_entry +EXPORT_SYMBOL_GPL vmlinux 0x920cc389 visitorl +EXPORT_SYMBOL_GPL vmlinux 0x921792aa cpci_hp_register_bus +EXPORT_SYMBOL_GPL vmlinux 0x921e4a9d dev_attr_unload_heads +EXPORT_SYMBOL_GPL vmlinux 0x9221689e crypto_lookup_skcipher +EXPORT_SYMBOL_GPL vmlinux 0x9244143d pinctrl_utils_dt_free_map +EXPORT_SYMBOL_GPL vmlinux 0x924bc7ca gpiod_export +EXPORT_SYMBOL_GPL vmlinux 0x924c46f8 zs_unmap_object +EXPORT_SYMBOL_GPL vmlinux 0x9264660b acpi_device_modalias +EXPORT_SYMBOL_GPL vmlinux 0x92893549 tpm2_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x928b2de1 xen_remap_domain_mfn_array +EXPORT_SYMBOL_GPL vmlinux 0x92931895 xhci_gen_setup +EXPORT_SYMBOL_GPL vmlinux 0x9295e6fa da9052_disable_irq_nosync +EXPORT_SYMBOL_GPL vmlinux 0x92a5c3fe devm_free_pages +EXPORT_SYMBOL_GPL vmlinux 0x92acc494 regmap_field_alloc +EXPORT_SYMBOL_GPL vmlinux 0x92ae2f1e usb_deregister +EXPORT_SYMBOL_GPL vmlinux 0x92d31cfb fixed_phy_add +EXPORT_SYMBOL_GPL vmlinux 0x92db8f68 do_trace_rcu_torture_read +EXPORT_SYMBOL_GPL vmlinux 0x92e990c2 led_trigger_rename_static +EXPORT_SYMBOL_GPL vmlinux 0x92f0eeab rio_mport_read_config_8 +EXPORT_SYMBOL_GPL vmlinux 0x9312d80e evtchn_put +EXPORT_SYMBOL_GPL vmlinux 0x9318884c get_device +EXPORT_SYMBOL_GPL vmlinux 0x931f05d3 ktime_get_raw +EXPORT_SYMBOL_GPL vmlinux 0x932c0e6b usb_find_interface +EXPORT_SYMBOL_GPL vmlinux 0x9341533c percpu_ida_free_tags +EXPORT_SYMBOL_GPL vmlinux 0x9347582e pci_try_reset_slot +EXPORT_SYMBOL_GPL vmlinux 0x934d5af6 pci_set_pcie_reset_state +EXPORT_SYMBOL_GPL vmlinux 0x9353f1b2 sdhci_pci_o2_resume +EXPORT_SYMBOL_GPL vmlinux 0x935a8a1e scsi_eh_ready_devs +EXPORT_SYMBOL_GPL vmlinux 0x9391e7e5 posix_acl_default_xattr_handler +EXPORT_SYMBOL_GPL vmlinux 0x93a078ad rhashtable_insert_rehash +EXPORT_SYMBOL_GPL vmlinux 0x93c6b3f2 __udp6_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x93dc2586 pgprot_writethrough +EXPORT_SYMBOL_GPL vmlinux 0x941f2aaa eventfd_ctx_put +EXPORT_SYMBOL_GPL vmlinux 0x94284566 pci_cfg_access_unlock +EXPORT_SYMBOL_GPL vmlinux 0x943fc708 xen_setup_shutdown_event +EXPORT_SYMBOL_GPL vmlinux 0x94880419 device_add +EXPORT_SYMBOL_GPL vmlinux 0x9489ea84 md_kick_rdev_from_array +EXPORT_SYMBOL_GPL vmlinux 0x948c4192 gpiod_count +EXPORT_SYMBOL_GPL vmlinux 0x9496f666 input_ff_event +EXPORT_SYMBOL_GPL vmlinux 0x949f7342 __alloc_percpu +EXPORT_SYMBOL_GPL vmlinux 0x94aaec4e rt_mutex_lock_interruptible +EXPORT_SYMBOL_GPL vmlinux 0x94c318be apei_exec_collect_resources +EXPORT_SYMBOL_GPL vmlinux 0x94ef4d05 cpci_hp_stop +EXPORT_SYMBOL_GPL vmlinux 0x9504df26 irq_wake_thread +EXPORT_SYMBOL_GPL vmlinux 0x952664c5 do_exit +EXPORT_SYMBOL_GPL vmlinux 0x9529c2d5 pci_bus_add_device +EXPORT_SYMBOL_GPL vmlinux 0x953e1b9e ktime_get_real_seconds +EXPORT_SYMBOL_GPL vmlinux 0x9547f9de fuse_file_poll +EXPORT_SYMBOL_GPL vmlinux 0x9551a087 shmem_read_mapping_page_gfp +EXPORT_SYMBOL_GPL vmlinux 0x955b0e2e kthread_worker_fn +EXPORT_SYMBOL_GPL vmlinux 0x9584b468 sata_scr_read +EXPORT_SYMBOL_GPL vmlinux 0x958df3ac zs_free +EXPORT_SYMBOL_GPL vmlinux 0x958e7768 efivar_entry_set_get_size +EXPORT_SYMBOL_GPL vmlinux 0x9597961e dev_pm_qos_add_ancestor_request +EXPORT_SYMBOL_GPL vmlinux 0x95a9b7d3 sata_scr_write +EXPORT_SYMBOL_GPL vmlinux 0x95b0bcf2 ping_seq_next +EXPORT_SYMBOL_GPL vmlinux 0x95bc6d0c usb_bus_list_lock +EXPORT_SYMBOL_GPL vmlinux 0x95bc9078 btree_free +EXPORT_SYMBOL_GPL vmlinux 0x95c31d3c sk_set_memalloc +EXPORT_SYMBOL_GPL vmlinux 0x95cf7ec6 ftrace_set_notrace +EXPORT_SYMBOL_GPL vmlinux 0x95f73931 regulator_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x961c00db devfreq_event_get_edev_count +EXPORT_SYMBOL_GPL vmlinux 0x9621849f ring_buffer_event_data +EXPORT_SYMBOL_GPL vmlinux 0x96263b7c tcp_register_congestion_control +EXPORT_SYMBOL_GPL vmlinux 0x962bcd25 clone_private_mount +EXPORT_SYMBOL_GPL vmlinux 0x96350f1b usb_add_hcd +EXPORT_SYMBOL_GPL vmlinux 0x963dcd94 dev_get_regmap +EXPORT_SYMBOL_GPL vmlinux 0x964add15 xenbus_scanf +EXPORT_SYMBOL_GPL vmlinux 0x964d5c39 acpi_os_map_memory +EXPORT_SYMBOL_GPL vmlinux 0x96554810 register_keyboard_notifier +EXPORT_SYMBOL_GPL vmlinux 0x96794a04 device_create_with_groups +EXPORT_SYMBOL_GPL vmlinux 0x9680ae0e crypto_unregister_aeads +EXPORT_SYMBOL_GPL vmlinux 0x9697b8be rtc_class_close +EXPORT_SYMBOL_GPL vmlinux 0x96b8aaa0 get_kernel_pages +EXPORT_SYMBOL_GPL vmlinux 0x96e1abc5 btree_init +EXPORT_SYMBOL_GPL vmlinux 0x973ab8ad cper_estatus_print +EXPORT_SYMBOL_GPL vmlinux 0x9743dc33 extcon_set_state +EXPORT_SYMBOL_GPL vmlinux 0x975519c1 asymmetric_key_id_same +EXPORT_SYMBOL_GPL vmlinux 0x9765ad74 dma_run_dependencies +EXPORT_SYMBOL_GPL vmlinux 0x97a6d435 cpu_subsys +EXPORT_SYMBOL_GPL vmlinux 0x97c03319 blkdev_read_iter +EXPORT_SYMBOL_GPL vmlinux 0x97c9f97d regmap_raw_read +EXPORT_SYMBOL_GPL vmlinux 0x97d4909f rtnl_register +EXPORT_SYMBOL_GPL vmlinux 0x97de2b83 debug_locks_silent +EXPORT_SYMBOL_GPL vmlinux 0x980928d0 tps6586x_write +EXPORT_SYMBOL_GPL vmlinux 0x9833bc0c hvc_kick +EXPORT_SYMBOL_GPL vmlinux 0x98503a63 mpi_alloc +EXPORT_SYMBOL_GPL vmlinux 0x98586121 pci_ioremap_bar +EXPORT_SYMBOL_GPL vmlinux 0x985c61b9 init_dummy_netdev +EXPORT_SYMBOL_GPL vmlinux 0x985f8324 crypto_unregister_ahash +EXPORT_SYMBOL_GPL vmlinux 0x986312a4 dma_buf_fd +EXPORT_SYMBOL_GPL vmlinux 0x986f4133 disk_map_sector_rcu +EXPORT_SYMBOL_GPL vmlinux 0x9879932b crypto_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x98813530 led_classdev_register +EXPORT_SYMBOL_GPL vmlinux 0x9896cf84 generic_access_phys +EXPORT_SYMBOL_GPL vmlinux 0x9898ff20 usb_hcd_resume_root_hub +EXPORT_SYMBOL_GPL vmlinux 0x98c94019 __nvdimm_bus_register +EXPORT_SYMBOL_GPL vmlinux 0x98ce80f1 crypto_alg_mod_lookup +EXPORT_SYMBOL_GPL vmlinux 0x98fa1e20 dm_get_reserved_rq_based_ios +EXPORT_SYMBOL_GPL vmlinux 0x98fb9fea hrtimer_start_range_ns +EXPORT_SYMBOL_GPL vmlinux 0x98fcf128 irq_work_queue_on +EXPORT_SYMBOL_GPL vmlinux 0x9924c496 __usb_get_extra_descriptor +EXPORT_SYMBOL_GPL vmlinux 0x995d1071 prof_on +EXPORT_SYMBOL_GPL vmlinux 0x99691dfe wm8997_patch +EXPORT_SYMBOL_GPL vmlinux 0x99717dea device_store_ulong +EXPORT_SYMBOL_GPL vmlinux 0x99730799 __sock_recv_wifi_status +EXPORT_SYMBOL_GPL vmlinux 0x9973add9 __cookie_v6_check +EXPORT_SYMBOL_GPL vmlinux 0x99780009 preempt_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x997c4347 unmap_kernel_range +EXPORT_SYMBOL_GPL vmlinux 0x997e00bd tcp_send_ack +EXPORT_SYMBOL_GPL vmlinux 0x99840d00 timecounter_init +EXPORT_SYMBOL_GPL vmlinux 0x998d1cf1 cpuidle_unregister +EXPORT_SYMBOL_GPL vmlinux 0x99970744 nd_blk_region_provider_data +EXPORT_SYMBOL_GPL vmlinux 0x99a9ff9a cpuidle_register_device +EXPORT_SYMBOL_GPL vmlinux 0x99c61b52 sysfs_remove_files +EXPORT_SYMBOL_GPL vmlinux 0x99e28f10 __tracepoint_remove_device_from_group +EXPORT_SYMBOL_GPL vmlinux 0x9a11a0fc crypto_attr_alg_name +EXPORT_SYMBOL_GPL vmlinux 0x9a1ad377 alarm_forward_now +EXPORT_SYMBOL_GPL vmlinux 0x9a502d31 sock_diag_put_meminfo +EXPORT_SYMBOL_GPL vmlinux 0x9a51e108 nfq_ct_hook +EXPORT_SYMBOL_GPL vmlinux 0x9a574235 shmem_add_seals +EXPORT_SYMBOL_GPL vmlinux 0x9a6f42aa regulator_enable +EXPORT_SYMBOL_GPL vmlinux 0x9a74f6f5 ata_scsi_change_queue_depth +EXPORT_SYMBOL_GPL vmlinux 0x9a89dbf7 lpddr2_jedec_min_tck +EXPORT_SYMBOL_GPL vmlinux 0x9a96db61 blockdev_superblock +EXPORT_SYMBOL_GPL vmlinux 0x9a9e1b08 blk_mq_freeze_queue_start +EXPORT_SYMBOL_GPL vmlinux 0x9aa3e35e sdio_run_irqs +EXPORT_SYMBOL_GPL vmlinux 0x9ab2859c nvdimm_attribute_group +EXPORT_SYMBOL_GPL vmlinux 0x9abfb281 inet6_lookup_listener +EXPORT_SYMBOL_GPL vmlinux 0x9ac11b74 suspend_set_ops +EXPORT_SYMBOL_GPL vmlinux 0x9acef8cd wakeup_source_remove +EXPORT_SYMBOL_GPL vmlinux 0x9aeacb87 ring_buffer_iter_empty +EXPORT_SYMBOL_GPL vmlinux 0x9aeedc67 crypto_unregister_rngs +EXPORT_SYMBOL_GPL vmlinux 0x9af89b1d pci_restore_msi_state +EXPORT_SYMBOL_GPL vmlinux 0x9afd915c rhashtable_destroy +EXPORT_SYMBOL_GPL vmlinux 0x9b4b4953 gen_pool_size +EXPORT_SYMBOL_GPL vmlinux 0x9b596798 usb_autopm_get_interface_async +EXPORT_SYMBOL_GPL vmlinux 0x9b609deb inet_csk_compat_getsockopt +EXPORT_SYMBOL_GPL vmlinux 0x9b638ded fuse_sync_release +EXPORT_SYMBOL_GPL vmlinux 0x9b6a7412 idle_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x9b720312 acpi_target_system_state +EXPORT_SYMBOL_GPL vmlinux 0x9b9f3648 pcibios_scan_specific_bus +EXPORT_SYMBOL_GPL vmlinux 0x9ba2bb2b gpio_request_array +EXPORT_SYMBOL_GPL vmlinux 0x9bbd514e pci_reset_bus +EXPORT_SYMBOL_GPL vmlinux 0x9bca03ca ata_sff_queue_delayed_work +EXPORT_SYMBOL_GPL vmlinux 0x9bd72b78 apei_write +EXPORT_SYMBOL_GPL vmlinux 0x9be064c0 tpm_calc_ordinal_duration +EXPORT_SYMBOL_GPL vmlinux 0x9bece81b mpi_cmp_ui +EXPORT_SYMBOL_GPL vmlinux 0x9bf3d555 klp_unregister_patch +EXPORT_SYMBOL_GPL vmlinux 0x9bfc6501 pci_find_next_capability +EXPORT_SYMBOL_GPL vmlinux 0x9bff4dd8 ata_host_init +EXPORT_SYMBOL_GPL vmlinux 0x9c2de449 memory_add_physaddr_to_nid +EXPORT_SYMBOL_GPL vmlinux 0x9c2dff67 agp_remove_bridge +EXPORT_SYMBOL_GPL vmlinux 0x9c2e4b66 acpi_unregister_gsi +EXPORT_SYMBOL_GPL vmlinux 0x9c3409d0 sdhci_pci_o2_probe_slot +EXPORT_SYMBOL_GPL vmlinux 0x9c462261 klist_iter_init_node +EXPORT_SYMBOL_GPL vmlinux 0x9c54a25b usb_enable_intel_xhci_ports +EXPORT_SYMBOL_GPL vmlinux 0x9c799073 unregister_ftrace_function +EXPORT_SYMBOL_GPL vmlinux 0x9cc4f70a register_pm_notifier +EXPORT_SYMBOL_GPL vmlinux 0x9cc62fdb ata_bmdma_stop +EXPORT_SYMBOL_GPL vmlinux 0x9ccc2cee debugfs_create_blob +EXPORT_SYMBOL_GPL vmlinux 0x9ccdf526 list_lru_add +EXPORT_SYMBOL_GPL vmlinux 0x9cd6b35c pinctrl_find_gpio_range_from_pin +EXPORT_SYMBOL_GPL vmlinux 0x9cd76711 percpu_ida_alloc +EXPORT_SYMBOL_GPL vmlinux 0x9cee57a0 zs_create_pool +EXPORT_SYMBOL_GPL vmlinux 0x9d06688b register_xenbus_watch +EXPORT_SYMBOL_GPL vmlinux 0x9d1a9d35 sata_link_hardreset +EXPORT_SYMBOL_GPL vmlinux 0x9d21b868 scsi_get_vpd_page +EXPORT_SYMBOL_GPL vmlinux 0x9d2d237d cpufreq_generic_frequency_table_verify +EXPORT_SYMBOL_GPL vmlinux 0x9d32a030 usb_reset_device +EXPORT_SYMBOL_GPL vmlinux 0x9d3850e1 gnttab_alloc_grant_references +EXPORT_SYMBOL_GPL vmlinux 0x9d399000 rhashtable_insert_slow +EXPORT_SYMBOL_GPL vmlinux 0x9d485a4a shake_page +EXPORT_SYMBOL_GPL vmlinux 0x9d7bbced ata_eh_freeze_port +EXPORT_SYMBOL_GPL vmlinux 0x9d830648 usb_set_interface +EXPORT_SYMBOL_GPL vmlinux 0x9d93b539 class_interface_unregister +EXPORT_SYMBOL_GPL vmlinux 0x9d9e155d pv_info +EXPORT_SYMBOL_GPL vmlinux 0x9d9e9aaa __gpiod_get_optional +EXPORT_SYMBOL_GPL vmlinux 0x9da7db21 pci_enable_pri +EXPORT_SYMBOL_GPL vmlinux 0x9dadbb88 cpufreq_boost_supported +EXPORT_SYMBOL_GPL vmlinux 0x9dc612cb extcon_update_state +EXPORT_SYMBOL_GPL vmlinux 0x9dc95c82 usb_autopm_put_interface_no_suspend +EXPORT_SYMBOL_GPL vmlinux 0x9dd834e6 ata_cable_80wire +EXPORT_SYMBOL_GPL vmlinux 0x9de68e5c securityfs_remove +EXPORT_SYMBOL_GPL vmlinux 0x9e05499a init_srcu_struct +EXPORT_SYMBOL_GPL vmlinux 0x9e0d74c4 efivar_entry_delete +EXPORT_SYMBOL_GPL vmlinux 0x9e0f52ed PageHuge +EXPORT_SYMBOL_GPL vmlinux 0x9e1e9210 md_ack_all_badblocks +EXPORT_SYMBOL_GPL vmlinux 0x9e2c2076 inet_csk_bind_conflict +EXPORT_SYMBOL_GPL vmlinux 0x9e2f0018 put_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0x9e2f31e7 devm_hwrng_register +EXPORT_SYMBOL_GPL vmlinux 0x9e2fd0c1 fixed_phy_register +EXPORT_SYMBOL_GPL vmlinux 0x9e3777d4 iommu_group_remove_device +EXPORT_SYMBOL_GPL vmlinux 0x9e3e0d87 __dma_request_channel +EXPORT_SYMBOL_GPL vmlinux 0x9e3f7d82 regulator_allow_bypass +EXPORT_SYMBOL_GPL vmlinux 0x9e472f5f snmp_fold_field +EXPORT_SYMBOL_GPL vmlinux 0x9e48fa08 ata_dev_pair +EXPORT_SYMBOL_GPL vmlinux 0x9e68672e wait_for_stable_page +EXPORT_SYMBOL_GPL vmlinux 0x9e6b808d xen_swiotlb_dma_mapping_error +EXPORT_SYMBOL_GPL vmlinux 0x9e7b7aef ata_qc_complete_multiple +EXPORT_SYMBOL_GPL vmlinux 0x9e85f4a9 __pm_runtime_resume +EXPORT_SYMBOL_GPL vmlinux 0x9eaf62bb wm5102_spi_regmap +EXPORT_SYMBOL_GPL vmlinux 0x9ece7f7f device_reset +EXPORT_SYMBOL_GPL vmlinux 0x9ed554b3 unregister_keyboard_notifier +EXPORT_SYMBOL_GPL vmlinux 0x9f099cf6 x509_get_sig_params +EXPORT_SYMBOL_GPL vmlinux 0x9f1b1191 regmap_update_bits_async +EXPORT_SYMBOL_GPL vmlinux 0x9f4c24d9 blkcipher_walk_virt +EXPORT_SYMBOL_GPL vmlinux 0x9f554f09 i2c_adapter_type +EXPORT_SYMBOL_GPL vmlinux 0x9f5b0740 nvdimm_create +EXPORT_SYMBOL_GPL vmlinux 0x9f8235af to_nd_region +EXPORT_SYMBOL_GPL vmlinux 0x9fce80db fb_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x9fe939e1 mpi_powm +EXPORT_SYMBOL_GPL vmlinux 0xa0089af7 shash_ahash_update +EXPORT_SYMBOL_GPL vmlinux 0xa0110af1 inet_twsk_put +EXPORT_SYMBOL_GPL vmlinux 0xa014a6ac trace_seq_bprintf +EXPORT_SYMBOL_GPL vmlinux 0xa02248ba usb_hub_find_child +EXPORT_SYMBOL_GPL vmlinux 0xa03248aa regulator_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xa080a67b phy_remove_lookup +EXPORT_SYMBOL_GPL vmlinux 0xa08549a0 pci_disable_pasid +EXPORT_SYMBOL_GPL vmlinux 0xa08fcd06 acpi_kobj +EXPORT_SYMBOL_GPL vmlinux 0xa091d10d fwnode_property_present +EXPORT_SYMBOL_GPL vmlinux 0xa0aa5e7b regmap_write_async +EXPORT_SYMBOL_GPL vmlinux 0xa0b7f13d crypto_tfm_in_queue +EXPORT_SYMBOL_GPL vmlinux 0xa0bfd6ec sk_clear_memalloc +EXPORT_SYMBOL_GPL vmlinux 0xa0c70e25 nl_table_lock +EXPORT_SYMBOL_GPL vmlinux 0xa0cc438d dma_buf_begin_cpu_access +EXPORT_SYMBOL_GPL vmlinux 0xa108a1c2 pci_pasid_features +EXPORT_SYMBOL_GPL vmlinux 0xa11216be xen_store_domain_type +EXPORT_SYMBOL_GPL vmlinux 0xa114b5a5 pci_user_write_config_byte +EXPORT_SYMBOL_GPL vmlinux 0xa1167dc4 clk_divider_ops +EXPORT_SYMBOL_GPL vmlinux 0xa11b55b2 xen_start_info +EXPORT_SYMBOL_GPL vmlinux 0xa156a1f2 erst_get_record_id_end +EXPORT_SYMBOL_GPL vmlinux 0xa15ea82b pm_generic_suspend +EXPORT_SYMBOL_GPL vmlinux 0xa18f9433 mpi_read_buffer +EXPORT_SYMBOL_GPL vmlinux 0xa1a9cb4b mmu_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa1bfdb3d gpiochip_irqchip_add +EXPORT_SYMBOL_GPL vmlinux 0xa1d6f157 rio_bus_type +EXPORT_SYMBOL_GPL vmlinux 0xa1ed9c8b add_hwgenerator_randomness +EXPORT_SYMBOL_GPL vmlinux 0xa1f79553 xen_create_contiguous_region +EXPORT_SYMBOL_GPL vmlinux 0xa205a5fc devm_acpi_dma_controller_register +EXPORT_SYMBOL_GPL vmlinux 0xa20a98d5 kthread_unpark +EXPORT_SYMBOL_GPL vmlinux 0xa2221f59 find_vpid +EXPORT_SYMBOL_GPL vmlinux 0xa237997e device_find_child +EXPORT_SYMBOL_GPL vmlinux 0xa24b6024 power_supply_property_is_writeable +EXPORT_SYMBOL_GPL vmlinux 0xa26d9b4f workqueue_congested +EXPORT_SYMBOL_GPL vmlinux 0xa2822d04 bus_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0xa287b4a0 usb_hub_clear_tt_buffer +EXPORT_SYMBOL_GPL vmlinux 0xa2ac5519 percpu_ref_init +EXPORT_SYMBOL_GPL vmlinux 0xa2ae0322 da903x_update +EXPORT_SYMBOL_GPL vmlinux 0xa2b9c993 clk_register_fixed_factor +EXPORT_SYMBOL_GPL vmlinux 0xa2bafa40 interval_tree_insert +EXPORT_SYMBOL_GPL vmlinux 0xa2cc1f04 gpiod_get_array +EXPORT_SYMBOL_GPL vmlinux 0xa2d08dff tty_register_device_attr +EXPORT_SYMBOL_GPL vmlinux 0xa2e5bc6a gpiochip_find +EXPORT_SYMBOL_GPL vmlinux 0xa2e7da50 cpci_hp_register_controller +EXPORT_SYMBOL_GPL vmlinux 0xa2ed4074 rt_mutex_lock +EXPORT_SYMBOL_GPL vmlinux 0xa2f81054 sk_clone_lock +EXPORT_SYMBOL_GPL vmlinux 0xa33208c0 get_net_ns_by_pid +EXPORT_SYMBOL_GPL vmlinux 0xa3398028 xen_pci_frontend +EXPORT_SYMBOL_GPL vmlinux 0xa34f9b7d da903x_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xa353fffc xenbus_rm +EXPORT_SYMBOL_GPL vmlinux 0xa3726334 clear_foreign_p2m_mapping +EXPORT_SYMBOL_GPL vmlinux 0xa3851775 sysfs_remove_link_from_group +EXPORT_SYMBOL_GPL vmlinux 0xa38602cd drain_workqueue +EXPORT_SYMBOL_GPL vmlinux 0xa386c029 trace_seq_to_user +EXPORT_SYMBOL_GPL vmlinux 0xa389a49a profile_event_register +EXPORT_SYMBOL_GPL vmlinux 0xa390f701 regcache_sync +EXPORT_SYMBOL_GPL vmlinux 0xa3a04602 btree_geo64 +EXPORT_SYMBOL_GPL vmlinux 0xa3ab4eec devm_regmap_field_free +EXPORT_SYMBOL_GPL vmlinux 0xa3b958ce reset_hung_task_detector +EXPORT_SYMBOL_GPL vmlinux 0xa3e7c113 ring_buffer_iter_peek +EXPORT_SYMBOL_GPL vmlinux 0xa4292a8e hwpoison_filter +EXPORT_SYMBOL_GPL vmlinux 0xa4507c1e perf_tp_event +EXPORT_SYMBOL_GPL vmlinux 0xa452c297 hpet_mask_rtc_irq_bit +EXPORT_SYMBOL_GPL vmlinux 0xa452f2a4 xen_pirq_from_irq +EXPORT_SYMBOL_GPL vmlinux 0xa45ba40d pinctrl_dev_get_devname +EXPORT_SYMBOL_GPL vmlinux 0xa466de38 acpi_processor_ffh_cstate_enter +EXPORT_SYMBOL_GPL vmlinux 0xa473b496 gov_queue_work +EXPORT_SYMBOL_GPL vmlinux 0xa48196c8 kdb_poll_idx +EXPORT_SYMBOL_GPL vmlinux 0xa4842ceb xhci_run +EXPORT_SYMBOL_GPL vmlinux 0xa4ad524b ip_tunnel_get_stats64 +EXPORT_SYMBOL_GPL vmlinux 0xa4d28faf regcache_sync_region +EXPORT_SYMBOL_GPL vmlinux 0xa4df3791 dm_send_uevents +EXPORT_SYMBOL_GPL vmlinux 0xa4ef2263 smpboot_register_percpu_thread +EXPORT_SYMBOL_GPL vmlinux 0xa4f816d7 reset_control_get +EXPORT_SYMBOL_GPL vmlinux 0xa4fcacf7 rio_request_outb_mbox +EXPORT_SYMBOL_GPL vmlinux 0xa506cd4a mnt_clone_write +EXPORT_SYMBOL_GPL vmlinux 0xa50935bd regulator_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa50b0e3b ping_proc_register +EXPORT_SYMBOL_GPL vmlinux 0xa5270727 skb_complete_wifi_ack +EXPORT_SYMBOL_GPL vmlinux 0xa5437cb6 mddev_congested +EXPORT_SYMBOL_GPL vmlinux 0xa54d015e ftrace_set_filter +EXPORT_SYMBOL_GPL vmlinux 0xa571cd35 ata_sff_port_intr +EXPORT_SYMBOL_GPL vmlinux 0xa596e558 fuse_conn_get +EXPORT_SYMBOL_GPL vmlinux 0xa5be7ae8 tpm_chip_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa5c40cab sdio_writeb +EXPORT_SYMBOL_GPL vmlinux 0xa5c892c4 ahash_register_instance +EXPORT_SYMBOL_GPL vmlinux 0xa5d78d09 ata_sas_queuecmd +EXPORT_SYMBOL_GPL vmlinux 0xa5e407e4 wm5110_aod +EXPORT_SYMBOL_GPL vmlinux 0xa5efbf4c async_synchronize_full +EXPORT_SYMBOL_GPL vmlinux 0xa611f0a8 hrtimer_forward +EXPORT_SYMBOL_GPL vmlinux 0xa617dd7b __tracepoint_map +EXPORT_SYMBOL_GPL vmlinux 0xa625110d kmsg_dump_rewind +EXPORT_SYMBOL_GPL vmlinux 0xa62892c6 efivar_sysfs_list +EXPORT_SYMBOL_GPL vmlinux 0xa630366b xfrm_output_resume +EXPORT_SYMBOL_GPL vmlinux 0xa635de98 dma_buf_kunmap_atomic +EXPORT_SYMBOL_GPL vmlinux 0xa63d3a9c virtio_config_changed +EXPORT_SYMBOL_GPL vmlinux 0xa653461e wm831x_auxadc_read +EXPORT_SYMBOL_GPL vmlinux 0xa66438e8 erst_read +EXPORT_SYMBOL_GPL vmlinux 0xa66fe092 transport_configure_device +EXPORT_SYMBOL_GPL vmlinux 0xa6980a93 pci_disable_ats +EXPORT_SYMBOL_GPL vmlinux 0xa6b21ef2 dpm_suspend_end +EXPORT_SYMBOL_GPL vmlinux 0xa6b5b7f4 led_sysfs_enable +EXPORT_SYMBOL_GPL vmlinux 0xa6c4ba0c devres_open_group +EXPORT_SYMBOL_GPL vmlinux 0xa6c5bbd6 blkcipher_walk_virt_block +EXPORT_SYMBOL_GPL vmlinux 0xa6c74b14 napi_hash_del +EXPORT_SYMBOL_GPL vmlinux 0xa6e1a69d kick_all_cpus_sync +EXPORT_SYMBOL_GPL vmlinux 0xa6fb3013 acpi_unbind_one +EXPORT_SYMBOL_GPL vmlinux 0xa6feb9db xenbus_probe_devices +EXPORT_SYMBOL_GPL vmlinux 0xa72d1a4b sock_diag_register +EXPORT_SYMBOL_GPL vmlinux 0xa75312bc call_rcu_sched +EXPORT_SYMBOL_GPL vmlinux 0xa7536d00 sdio_set_block_size +EXPORT_SYMBOL_GPL vmlinux 0xa7604739 skb_partial_csum_set +EXPORT_SYMBOL_GPL vmlinux 0xa785c547 sdio_memcpy_toio +EXPORT_SYMBOL_GPL vmlinux 0xa79df72f ohci_setup +EXPORT_SYMBOL_GPL vmlinux 0xa7b60e51 pm_wakeup_event +EXPORT_SYMBOL_GPL vmlinux 0xa7e13a6a clk_mux_ro_ops +EXPORT_SYMBOL_GPL vmlinux 0xa7e399b3 dm_disk +EXPORT_SYMBOL_GPL vmlinux 0xa801b359 efivar_entry_iter_begin +EXPORT_SYMBOL_GPL vmlinux 0xa8172482 rtc_read_time +EXPORT_SYMBOL_GPL vmlinux 0xa830903f rdev_get_dev +EXPORT_SYMBOL_GPL vmlinux 0xa84ddd93 posix_acl_access_xattr_handler +EXPORT_SYMBOL_GPL vmlinux 0xa851973a raw_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xa8783d32 tty_port_tty_wakeup +EXPORT_SYMBOL_GPL vmlinux 0xa8876e87 bio_associate_blkcg +EXPORT_SYMBOL_GPL vmlinux 0xa894ac76 sysfs_remove_file_from_group +EXPORT_SYMBOL_GPL vmlinux 0xa8b76a68 timecounter_cyc2time +EXPORT_SYMBOL_GPL vmlinux 0xa8bebafb pci_reset_pri +EXPORT_SYMBOL_GPL vmlinux 0xa9000315 led_trigger_remove +EXPORT_SYMBOL_GPL vmlinux 0xa9126bff hpet_set_rtc_irq_bit +EXPORT_SYMBOL_GPL vmlinux 0xa925e478 __tracepoint_rpm_return_int +EXPORT_SYMBOL_GPL vmlinux 0xa9320d27 ktime_get_seconds +EXPORT_SYMBOL_GPL vmlinux 0xa9508c92 tty_port_tty_hangup +EXPORT_SYMBOL_GPL vmlinux 0xa980af16 RSA_public_key_algorithm +EXPORT_SYMBOL_GPL vmlinux 0xa98d7648 ata_do_dev_read_id +EXPORT_SYMBOL_GPL vmlinux 0xa9a485d9 wm8997_aod +EXPORT_SYMBOL_GPL vmlinux 0xa9d35187 debugfs_create_symlink +EXPORT_SYMBOL_GPL vmlinux 0xa9e18049 task_handoff_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa9fcf1d5 acpi_subsys_suspend_late +EXPORT_SYMBOL_GPL vmlinux 0xaa004b81 user_free_preparse +EXPORT_SYMBOL_GPL vmlinux 0xaa115c9a blk_lld_busy +EXPORT_SYMBOL_GPL vmlinux 0xaa4a7313 usb_get_dev +EXPORT_SYMBOL_GPL vmlinux 0xaa6c9d64 usb_sg_wait +EXPORT_SYMBOL_GPL vmlinux 0xaa8647ea pci_user_write_config_dword +EXPORT_SYMBOL_GPL vmlinux 0xaa876016 single_open_net +EXPORT_SYMBOL_GPL vmlinux 0xaaa918c9 ftrace_dump +EXPORT_SYMBOL_GPL vmlinux 0xaaa92768 xenbus_dev_changed +EXPORT_SYMBOL_GPL vmlinux 0xaabc73dc crypto_ahash_finup +EXPORT_SYMBOL_GPL vmlinux 0xaabfa32d regmap_check_range_table +EXPORT_SYMBOL_GPL vmlinux 0xaac31c45 pm_generic_poweroff_noirq +EXPORT_SYMBOL_GPL vmlinux 0xaace603c regulator_sync_voltage +EXPORT_SYMBOL_GPL vmlinux 0xaadb342b gpiod_direction_output_raw +EXPORT_SYMBOL_GPL vmlinux 0xaae15ee2 dev_forward_skb +EXPORT_SYMBOL_GPL vmlinux 0xaaefb328 xen_swiotlb_sync_sg_for_device +EXPORT_SYMBOL_GPL vmlinux 0xaafcb3f5 sysfs_rename_link_ns +EXPORT_SYMBOL_GPL vmlinux 0xab01acbe gnttab_request_free_callback +EXPORT_SYMBOL_GPL vmlinux 0xab0e3801 devm_usb_get_phy +EXPORT_SYMBOL_GPL vmlinux 0xab1e0e93 hv_setup_kexec_handler +EXPORT_SYMBOL_GPL vmlinux 0xab29ad96 cpuidle_disable_device +EXPORT_SYMBOL_GPL vmlinux 0xab3e96e0 sprint_OID +EXPORT_SYMBOL_GPL vmlinux 0xab567d31 percpu_ref_reinit +EXPORT_SYMBOL_GPL vmlinux 0xab5a5de4 fixed_phy_del +EXPORT_SYMBOL_GPL vmlinux 0xab6babaf pm_qos_request +EXPORT_SYMBOL_GPL vmlinux 0xab7153c3 efivar_entry_iter +EXPORT_SYMBOL_GPL vmlinux 0xabc640f3 list_lru_isolate +EXPORT_SYMBOL_GPL vmlinux 0xabccd3d2 regmap_get_reg_stride +EXPORT_SYMBOL_GPL vmlinux 0xabd17866 sync_page_io +EXPORT_SYMBOL_GPL vmlinux 0xac19359e spi_bus_type +EXPORT_SYMBOL_GPL vmlinux 0xac4b3d1e simple_attr_write +EXPORT_SYMBOL_GPL vmlinux 0xac5d7b12 __ablkcipher_walk_complete +EXPORT_SYMBOL_GPL vmlinux 0xac7487b8 da9052_disable_irq +EXPORT_SYMBOL_GPL vmlinux 0xac7afc01 ata_cable_40wire +EXPORT_SYMBOL_GPL vmlinux 0xac9ce195 kvm_async_pf_task_wait +EXPORT_SYMBOL_GPL vmlinux 0xacafa8e7 vector_used_by_percpu_irq +EXPORT_SYMBOL_GPL vmlinux 0xacb212cb tps6586x_get_version +EXPORT_SYMBOL_GPL vmlinux 0xacc3b96c ata_port_desc +EXPORT_SYMBOL_GPL vmlinux 0xacc7640a da903x_read +EXPORT_SYMBOL_GPL vmlinux 0xaccce2c3 __of_phy_provider_register +EXPORT_SYMBOL_GPL vmlinux 0xacda77fc skb_cow_data +EXPORT_SYMBOL_GPL vmlinux 0xace5c0fc usb_bus_list +EXPORT_SYMBOL_GPL vmlinux 0xad000c6b replace_page_cache_page +EXPORT_SYMBOL_GPL vmlinux 0xad05c250 pci_vfs_assigned +EXPORT_SYMBOL_GPL vmlinux 0xad1b54ae __tracepoint_extlog_mem_event +EXPORT_SYMBOL_GPL vmlinux 0xad2c18c2 ata_sff_error_handler +EXPORT_SYMBOL_GPL vmlinux 0xad48df4e devres_add +EXPORT_SYMBOL_GPL vmlinux 0xad6065ad tty_ldisc_flush +EXPORT_SYMBOL_GPL vmlinux 0xad6e81d4 dma_request_slave_channel_reason +EXPORT_SYMBOL_GPL vmlinux 0xad8d8ab0 xen_physdev_op_compat +EXPORT_SYMBOL_GPL vmlinux 0xadc785ec kgdb_register_io_module +EXPORT_SYMBOL_GPL vmlinux 0xaddce757 acpi_dev_get_property +EXPORT_SYMBOL_GPL vmlinux 0xade7857f for_each_kernel_tracepoint +EXPORT_SYMBOL_GPL vmlinux 0xadf6aa4d tpm_pcr_read +EXPORT_SYMBOL_GPL vmlinux 0xae1732dc ip6_dst_lookup +EXPORT_SYMBOL_GPL vmlinux 0xae1f80ab usb_driver_claim_interface +EXPORT_SYMBOL_GPL vmlinux 0xae2ee9c7 extcon_register_interest +EXPORT_SYMBOL_GPL vmlinux 0xae35be1a transport_destroy_device +EXPORT_SYMBOL_GPL vmlinux 0xae69b1c1 usermodehelper_read_unlock +EXPORT_SYMBOL_GPL vmlinux 0xae6eaf93 hwpoison_filter_dev_minor +EXPORT_SYMBOL_GPL vmlinux 0xae7c231d mpi_cmp +EXPORT_SYMBOL_GPL vmlinux 0xae88e3d0 ohci_hub_status_data +EXPORT_SYMBOL_GPL vmlinux 0xae949ad1 device_get_child_node_count +EXPORT_SYMBOL_GPL vmlinux 0xaead74dd rio_register_driver +EXPORT_SYMBOL_GPL vmlinux 0xaeee30eb regmap_fields_read +EXPORT_SYMBOL_GPL vmlinux 0xaefa2f09 swiotlb_map_page +EXPORT_SYMBOL_GPL vmlinux 0xaf0c65b7 ata_sff_postreset +EXPORT_SYMBOL_GPL vmlinux 0xaf290217 regmap_parse_val +EXPORT_SYMBOL_GPL vmlinux 0xaf56b8eb blk_queue_rq_timeout +EXPORT_SYMBOL_GPL vmlinux 0xaf56e986 usb_free_streams +EXPORT_SYMBOL_GPL vmlinux 0xaf66621e pci_reset_function +EXPORT_SYMBOL_GPL vmlinux 0xaf80b1be ata_port_freeze +EXPORT_SYMBOL_GPL vmlinux 0xaf81a6ce get_governor_parent_kobj +EXPORT_SYMBOL_GPL vmlinux 0xaf8bf1e6 thermal_zone_get_zone_by_name +EXPORT_SYMBOL_GPL vmlinux 0xaf92666b syscon_node_to_regmap +EXPORT_SYMBOL_GPL vmlinux 0xaf9439db leds_list_lock +EXPORT_SYMBOL_GPL vmlinux 0xaf9cbd05 iommu_domain_get_attr +EXPORT_SYMBOL_GPL vmlinux 0xaff0b6ea raw_unhash_sk +EXPORT_SYMBOL_GPL vmlinux 0xaff3f8eb pm_runtime_set_autosuspend_delay +EXPORT_SYMBOL_GPL vmlinux 0xaffdf9e9 ata_pci_device_do_resume +EXPORT_SYMBOL_GPL vmlinux 0xb002010f irq_domain_add_simple +EXPORT_SYMBOL_GPL vmlinux 0xb00fdd9f ata_pci_sff_prepare_host +EXPORT_SYMBOL_GPL vmlinux 0xb0165147 rhashtable_walk_next +EXPORT_SYMBOL_GPL vmlinux 0xb0261179 devm_kmemdup +EXPORT_SYMBOL_GPL vmlinux 0xb02ac411 register_xenstore_notifier +EXPORT_SYMBOL_GPL vmlinux 0xb0400c6b add_timer_on +EXPORT_SYMBOL_GPL vmlinux 0xb04d4a8f devm_usb_get_phy_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0xb04e4ced led_trigger_unregister_simple +EXPORT_SYMBOL_GPL vmlinux 0xb077e70a clk_unprepare +EXPORT_SYMBOL_GPL vmlinux 0xb08450fa dev_pm_domain_attach +EXPORT_SYMBOL_GPL vmlinux 0xb0b85f47 ring_buffer_iter_reset +EXPORT_SYMBOL_GPL vmlinux 0xb0ce11f7 devm_kasprintf +EXPORT_SYMBOL_GPL vmlinux 0xb0d1656c gpio_free_array +EXPORT_SYMBOL_GPL vmlinux 0xb0d87ffc usb_put_hcd +EXPORT_SYMBOL_GPL vmlinux 0xb0f3d170 xhci_dbg_trace +EXPORT_SYMBOL_GPL vmlinux 0xb104495c crypto_mod_get +EXPORT_SYMBOL_GPL vmlinux 0xb10d0b74 pciserial_init_ports +EXPORT_SYMBOL_GPL vmlinux 0xb1126265 arizona_pm_ops +EXPORT_SYMBOL_GPL vmlinux 0xb140d14c ring_buffer_read +EXPORT_SYMBOL_GPL vmlinux 0xb1425b32 dm_table_add_target_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xb15c5377 sdio_f0_readb +EXPORT_SYMBOL_GPL vmlinux 0xb172ffac efivars_sysfs_init +EXPORT_SYMBOL_GPL vmlinux 0xb17d3b90 irq_setup_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0xb18429eb suspend_device_irqs +EXPORT_SYMBOL_GPL vmlinux 0xb1854fb2 securityfs_create_file +EXPORT_SYMBOL_GPL vmlinux 0xb1899a72 watchdog_register_device +EXPORT_SYMBOL_GPL vmlinux 0xb190ecea tty_ldisc_deref +EXPORT_SYMBOL_GPL vmlinux 0xb1a5f2fe usb_anchor_empty +EXPORT_SYMBOL_GPL vmlinux 0xb1acbcce rcu_barrier_sched +EXPORT_SYMBOL_GPL vmlinux 0xb1aee192 anon_transport_class_unregister +EXPORT_SYMBOL_GPL vmlinux 0xb1bed25d dpm_resume_start +EXPORT_SYMBOL_GPL vmlinux 0xb1bedeb7 register_jprobe +EXPORT_SYMBOL_GPL vmlinux 0xb1c0c1c2 async_schedule_domain +EXPORT_SYMBOL_GPL vmlinux 0xb1cadba9 regulator_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0xb1deb238 hrtimer_init +EXPORT_SYMBOL_GPL vmlinux 0xb1e25684 __trace_bputs +EXPORT_SYMBOL_GPL vmlinux 0xb1e2f4cc sysfs_create_link +EXPORT_SYMBOL_GPL vmlinux 0xb1e4fb36 __blk_put_request +EXPORT_SYMBOL_GPL vmlinux 0xb20c1185 arizona_dev_exit +EXPORT_SYMBOL_GPL vmlinux 0xb2210d64 reset_control_deassert +EXPORT_SYMBOL_GPL vmlinux 0xb2437aa8 debugfs_remove_recursive +EXPORT_SYMBOL_GPL vmlinux 0xb26a1add elfcorehdr_addr +EXPORT_SYMBOL_GPL vmlinux 0xb26ced81 dma_buf_unmap_attachment +EXPORT_SYMBOL_GPL vmlinux 0xb28204dd find_symbol +EXPORT_SYMBOL_GPL vmlinux 0xb295ec53 devfreq_event_get_event +EXPORT_SYMBOL_GPL vmlinux 0xb2b3448a regulator_set_drvdata +EXPORT_SYMBOL_GPL vmlinux 0xb2bc71a4 devfreq_event_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0xb2e764e8 suspend_valid_only_mem +EXPORT_SYMBOL_GPL vmlinux 0xb2eb396a get_kernel_page +EXPORT_SYMBOL_GPL vmlinux 0xb302a5cd inet_csk_listen_stop +EXPORT_SYMBOL_GPL vmlinux 0xb30422d5 tpm2_do_selftest +EXPORT_SYMBOL_GPL vmlinux 0xb304fb05 register_kretprobes +EXPORT_SYMBOL_GPL vmlinux 0xb31b5773 ata_sas_sync_probe +EXPORT_SYMBOL_GPL vmlinux 0xb3253ed9 hpet_rtc_timer_init +EXPORT_SYMBOL_GPL vmlinux 0xb32af9f7 attribute_container_register +EXPORT_SYMBOL_GPL vmlinux 0xb336379c dev_change_net_namespace +EXPORT_SYMBOL_GPL vmlinux 0xb347bb2c work_busy +EXPORT_SYMBOL_GPL vmlinux 0xb34d3506 bpf_prog_free +EXPORT_SYMBOL_GPL vmlinux 0xb354b998 dma_buf_mmap +EXPORT_SYMBOL_GPL vmlinux 0xb37d67c6 rio_map_inb_region +EXPORT_SYMBOL_GPL vmlinux 0xb381c6fe disk_part_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0xb396b3b6 gpiod_set_raw_array_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0xb3bf6ae5 extcon_get_extcon_dev +EXPORT_SYMBOL_GPL vmlinux 0xb3c309e3 acpi_device_update_power +EXPORT_SYMBOL_GPL vmlinux 0xb3d89ff0 pinctrl_remove_gpio_range +EXPORT_SYMBOL_GPL vmlinux 0xb3e47f85 blocking_notifier_chain_cond_register +EXPORT_SYMBOL_GPL vmlinux 0xb413dbc1 rtnl_link_register +EXPORT_SYMBOL_GPL vmlinux 0xb4259620 i2c_probe_func_quick_read +EXPORT_SYMBOL_GPL vmlinux 0xb42a8017 kernfs_find_and_get_ns +EXPORT_SYMBOL_GPL vmlinux 0xb44e6710 input_class +EXPORT_SYMBOL_GPL vmlinux 0xb4557e67 __wake_up_sync_key +EXPORT_SYMBOL_GPL vmlinux 0xb4759adc stop_machine +EXPORT_SYMBOL_GPL vmlinux 0xb483e5d5 crypto_aead_type +EXPORT_SYMBOL_GPL vmlinux 0xb4ab396d usb_get_urb +EXPORT_SYMBOL_GPL vmlinux 0xb4b97c90 pvclock_gtod_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xb4d81069 page_cache_sync_readahead +EXPORT_SYMBOL_GPL vmlinux 0xb4e14553 gnttab_query_foreign_access +EXPORT_SYMBOL_GPL vmlinux 0xb4ea7cf7 kgdb_connected +EXPORT_SYMBOL_GPL vmlinux 0xb4ee878a pinctrl_find_and_add_gpio_range +EXPORT_SYMBOL_GPL vmlinux 0xb51fbd64 edac_op_state +EXPORT_SYMBOL_GPL vmlinux 0xb53620d1 pci_vpd_find_info_keyword +EXPORT_SYMBOL_GPL vmlinux 0xb53ac190 rtc_read_alarm +EXPORT_SYMBOL_GPL vmlinux 0xb555426c pci_user_read_config_byte +EXPORT_SYMBOL_GPL vmlinux 0xb5687c22 serial8250_release_dma +EXPORT_SYMBOL_GPL vmlinux 0xb5692729 shash_register_instance +EXPORT_SYMBOL_GPL vmlinux 0xb5795265 pci_scan_child_bus +EXPORT_SYMBOL_GPL vmlinux 0xb5848bae __iowrite32_copy +EXPORT_SYMBOL_GPL vmlinux 0xb58dcfa2 synchronize_sched_expedited +EXPORT_SYMBOL_GPL vmlinux 0xb58ef732 mmc_regulator_get_supply +EXPORT_SYMBOL_GPL vmlinux 0xb5a0e11e lpddr2_jedec_addressing_table +EXPORT_SYMBOL_GPL vmlinux 0xb5a32676 platform_get_resource_byname +EXPORT_SYMBOL_GPL vmlinux 0xb5af39f0 set_task_ioprio +EXPORT_SYMBOL_GPL vmlinux 0xb5b0bf33 da9052_request_irq +EXPORT_SYMBOL_GPL vmlinux 0xb5c25bbf rio_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0xb5f17edf perf_register_guest_info_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xb603e033 devm_mdiobus_alloc_size +EXPORT_SYMBOL_GPL vmlinux 0xb6230f1f gnttab_grant_foreign_access +EXPORT_SYMBOL_GPL vmlinux 0xb6261484 register_die_notifier +EXPORT_SYMBOL_GPL vmlinux 0xb66421b2 acpi_str_to_uuid +EXPORT_SYMBOL_GPL vmlinux 0xb67597c8 posix_timers_register_clock +EXPORT_SYMBOL_GPL vmlinux 0xb67cef88 sdio_claim_irq +EXPORT_SYMBOL_GPL vmlinux 0xb680a39c device_property_read_string_array +EXPORT_SYMBOL_GPL vmlinux 0xb6846fce inverse_translate +EXPORT_SYMBOL_GPL vmlinux 0xb694aac3 swiotlb_unmap_page +EXPORT_SYMBOL_GPL vmlinux 0xb6955ece sata_port_ops +EXPORT_SYMBOL_GPL vmlinux 0xb69d5de9 register_ftrace_function +EXPORT_SYMBOL_GPL vmlinux 0xb6a56d47 usb_put_dev +EXPORT_SYMBOL_GPL vmlinux 0xb6aeb661 ata_id_c_string +EXPORT_SYMBOL_GPL vmlinux 0xb6b11b37 register_mce_write_callback +EXPORT_SYMBOL_GPL vmlinux 0xb6cafb92 unregister_wide_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0xb6e6d99d clk_disable +EXPORT_SYMBOL_GPL vmlinux 0xb6fc887c serial8250_do_set_mctrl +EXPORT_SYMBOL_GPL vmlinux 0xb707add8 xenbus_watch_pathfmt +EXPORT_SYMBOL_GPL vmlinux 0xb718f2f9 sfi_table_parse +EXPORT_SYMBOL_GPL vmlinux 0xb7329c06 clk_set_phase +EXPORT_SYMBOL_GPL vmlinux 0xb73b740a trace_print_bitmask_seq +EXPORT_SYMBOL_GPL vmlinux 0xb7817c57 sdio_readsb +EXPORT_SYMBOL_GPL vmlinux 0xb792176a usb_set_configuration +EXPORT_SYMBOL_GPL vmlinux 0xb7945ccc get_hwpoison_page +EXPORT_SYMBOL_GPL vmlinux 0xb7bf4b67 iommu_group_add_device +EXPORT_SYMBOL_GPL vmlinux 0xb7c015a4 tty_put_char +EXPORT_SYMBOL_GPL vmlinux 0xb7ccf4db ndo_dflt_bridge_getlink +EXPORT_SYMBOL_GPL vmlinux 0xb7d7c12e hpet_set_alarm_time +EXPORT_SYMBOL_GPL vmlinux 0xb7f6e2fd subsys_dev_iter_next +EXPORT_SYMBOL_GPL vmlinux 0xb7f77027 rtc_tm_to_ktime +EXPORT_SYMBOL_GPL vmlinux 0xb80b28b8 __platform_driver_register +EXPORT_SYMBOL_GPL vmlinux 0xb80b4354 devfreq_event_enable_edev +EXPORT_SYMBOL_GPL vmlinux 0xb81b89a8 percpu_ida_for_each_free +EXPORT_SYMBOL_GPL vmlinux 0xb835913c spi_async +EXPORT_SYMBOL_GPL vmlinux 0xb836622c acpi_dev_runtime_resume +EXPORT_SYMBOL_GPL vmlinux 0xb85de0d2 component_master_add_child +EXPORT_SYMBOL_GPL vmlinux 0xb8681d59 relay_flush +EXPORT_SYMBOL_GPL vmlinux 0xb882a544 rhashtable_walk_stop +EXPORT_SYMBOL_GPL vmlinux 0xb8b2b1f7 mce_register_decode_chain +EXPORT_SYMBOL_GPL vmlinux 0xb8c39ace tpm2_startup +EXPORT_SYMBOL_GPL vmlinux 0xb8c3c317 sdev_evt_send +EXPORT_SYMBOL_GPL vmlinux 0xb8cd3a7f nf_logger_put +EXPORT_SYMBOL_GPL vmlinux 0xb8ec3706 gnttab_unmap_refs_sync +EXPORT_SYMBOL_GPL vmlinux 0xb903674c scatterwalk_map_and_copy +EXPORT_SYMBOL_GPL vmlinux 0xb944e965 user_destroy +EXPORT_SYMBOL_GPL vmlinux 0xb94f1fbf tps6586x_update +EXPORT_SYMBOL_GPL vmlinux 0xb9530528 gpiochip_add_pin_range +EXPORT_SYMBOL_GPL vmlinux 0xb955155b regmap_init +EXPORT_SYMBOL_GPL vmlinux 0xb9691b75 dm_set_target_max_io_len +EXPORT_SYMBOL_GPL vmlinux 0xb969f1f6 platform_device_del +EXPORT_SYMBOL_GPL vmlinux 0xb96b8bbd tty_buffer_unlock_exclusive +EXPORT_SYMBOL_GPL vmlinux 0xb96c5501 led_trigger_set_default +EXPORT_SYMBOL_GPL vmlinux 0xb98406f8 ata_sff_busy_sleep +EXPORT_SYMBOL_GPL vmlinux 0xb98b937c bus_unregister +EXPORT_SYMBOL_GPL vmlinux 0xb99d5837 xenbus_read +EXPORT_SYMBOL_GPL vmlinux 0xb9a976e4 regmap_register_patch +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 0xb9d1f31d add_to_page_cache_lru +EXPORT_SYMBOL_GPL vmlinux 0xb9dad382 fuse_conn_put +EXPORT_SYMBOL_GPL vmlinux 0xb9ebfb0b devm_of_phy_get +EXPORT_SYMBOL_GPL vmlinux 0xba09c14c tpm_pm_suspend +EXPORT_SYMBOL_GPL vmlinux 0xba107e2f __inet_inherit_port +EXPORT_SYMBOL_GPL vmlinux 0xba2581b4 crypto_spawn_tfm +EXPORT_SYMBOL_GPL vmlinux 0xba28da47 __clk_get_hw +EXPORT_SYMBOL_GPL vmlinux 0xba2b7f64 cpufreq_generic_get +EXPORT_SYMBOL_GPL vmlinux 0xba347e47 ping_proc_unregister +EXPORT_SYMBOL_GPL vmlinux 0xba3549a1 gen_pool_avail +EXPORT_SYMBOL_GPL vmlinux 0xba64ed47 regmap_field_write +EXPORT_SYMBOL_GPL vmlinux 0xba71d363 flush_kthread_work +EXPORT_SYMBOL_GPL vmlinux 0xba88bba4 usb_hcd_unmap_urb_setup_for_dma +EXPORT_SYMBOL_GPL vmlinux 0xba8cb161 handle_simple_irq +EXPORT_SYMBOL_GPL vmlinux 0xba94c685 cper_estatus_check +EXPORT_SYMBOL_GPL vmlinux 0xbab9a9f0 maxim_charger_currents +EXPORT_SYMBOL_GPL vmlinux 0xbabf807e virtqueue_poll +EXPORT_SYMBOL_GPL vmlinux 0xbad12de9 __root_device_register +EXPORT_SYMBOL_GPL vmlinux 0xbaee8daf usb_phy_generic_register +EXPORT_SYMBOL_GPL vmlinux 0xbaf0d1be cpufreq_register_driver +EXPORT_SYMBOL_GPL vmlinux 0xbb038ce4 perf_unregister_guest_info_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xbb0ab47b debug_locks +EXPORT_SYMBOL_GPL vmlinux 0xbb128381 irq_set_affinity_hint +EXPORT_SYMBOL_GPL vmlinux 0xbb315c43 securityfs_create_dir +EXPORT_SYMBOL_GPL vmlinux 0xbb417acb wm8350_block_write +EXPORT_SYMBOL_GPL vmlinux 0xbb45e358 wakeup_source_prepare +EXPORT_SYMBOL_GPL vmlinux 0xbb6f025a asymmetric_key_generate_id +EXPORT_SYMBOL_GPL vmlinux 0xbb9846ea vga_default_device +EXPORT_SYMBOL_GPL vmlinux 0xbbad17e0 platform_device_alloc +EXPORT_SYMBOL_GPL vmlinux 0xbbb98859 edid_info +EXPORT_SYMBOL_GPL vmlinux 0xbbcc25ea dev_pm_qos_remove_request +EXPORT_SYMBOL_GPL vmlinux 0xbbd4f657 xen_pcpu_id +EXPORT_SYMBOL_GPL vmlinux 0xbbd7dc4c dm_get_queue_limits +EXPORT_SYMBOL_GPL vmlinux 0xbbe9498c x86_hyper_kvm +EXPORT_SYMBOL_GPL vmlinux 0xbbec7ba1 bus_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xbc01f259 virtio_device_freeze +EXPORT_SYMBOL_GPL vmlinux 0xbc047769 crypto_register_rngs +EXPORT_SYMBOL_GPL vmlinux 0xbc1f9fac devres_release_group +EXPORT_SYMBOL_GPL vmlinux 0xbc2b8751 wm8350_clear_bits +EXPORT_SYMBOL_GPL vmlinux 0xbc47fd49 __tracepoint_detach_device_from_domain +EXPORT_SYMBOL_GPL vmlinux 0xbc48bb2c wm5110_patch +EXPORT_SYMBOL_GPL vmlinux 0xbc4e6ab0 ablkcipher_walk_phys +EXPORT_SYMBOL_GPL vmlinux 0xbc625cd7 __online_page_increment_counters +EXPORT_SYMBOL_GPL vmlinux 0xbc6f7f7d iommu_domain_window_enable +EXPORT_SYMBOL_GPL vmlinux 0xbcaa1823 max8997_write_reg +EXPORT_SYMBOL_GPL vmlinux 0xbcac6160 pm_qos_remove_notifier +EXPORT_SYMBOL_GPL vmlinux 0xbcb838a1 amd_flush_garts +EXPORT_SYMBOL_GPL vmlinux 0xbccfd4d8 register_oldmem_pfn_is_ram +EXPORT_SYMBOL_GPL vmlinux 0xbcdd5b99 iommu_group_set_name +EXPORT_SYMBOL_GPL vmlinux 0xbce2f45d fat_detach +EXPORT_SYMBOL_GPL vmlinux 0xbceff1cc input_ff_destroy +EXPORT_SYMBOL_GPL vmlinux 0xbcf6aba8 mmc_get_ext_csd +EXPORT_SYMBOL_GPL vmlinux 0xbcf6ea33 usb_alloc_urb +EXPORT_SYMBOL_GPL vmlinux 0xbd3fe1e3 disable_hardirq +EXPORT_SYMBOL_GPL vmlinux 0xbd43c06c power_supply_class +EXPORT_SYMBOL_GPL vmlinux 0xbd47d750 rtc_initialize_alarm +EXPORT_SYMBOL_GPL vmlinux 0xbd5a3903 gpiod_put_array +EXPORT_SYMBOL_GPL vmlinux 0xbd5cb8b9 ring_buffer_resize +EXPORT_SYMBOL_GPL vmlinux 0xbd671048 __alloc_percpu_gfp +EXPORT_SYMBOL_GPL vmlinux 0xbd6b5b76 crypto_ahash_digest +EXPORT_SYMBOL_GPL vmlinux 0xbd7f2525 find_get_pid +EXPORT_SYMBOL_GPL vmlinux 0xbd86b127 usb_scuttle_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0xbd8cd7ba bus_remove_file +EXPORT_SYMBOL_GPL vmlinux 0xbd9e5c19 nd_numa_attribute_group +EXPORT_SYMBOL_GPL vmlinux 0xbdd295f0 trace_vprintk +EXPORT_SYMBOL_GPL vmlinux 0xbdd2f42a rcu_bh_force_quiescent_state +EXPORT_SYMBOL_GPL vmlinux 0xbdd5f10f apei_hest_parse +EXPORT_SYMBOL_GPL vmlinux 0xbdd75289 wakeup_source_create +EXPORT_SYMBOL_GPL vmlinux 0xbde0e7cf usb_enable_ltm +EXPORT_SYMBOL_GPL vmlinux 0xbe11ba0a sata_pmp_error_handler +EXPORT_SYMBOL_GPL vmlinux 0xbe1569bd inet_csk_reqsk_queue_hash_add +EXPORT_SYMBOL_GPL vmlinux 0xbe1887e4 ata_unpack_xfermask +EXPORT_SYMBOL_GPL vmlinux 0xbe2d5fa3 acpi_dev_resume_early +EXPORT_SYMBOL_GPL vmlinux 0xbe3906ff trace_event_buffer_lock_reserve +EXPORT_SYMBOL_GPL vmlinux 0xbe3d89ce fs_kobj +EXPORT_SYMBOL_GPL vmlinux 0xbe5d0996 idle_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0xbe687e88 wake_up_all_idle_cpus +EXPORT_SYMBOL_GPL vmlinux 0xbea5c930 crypto_unregister_algs +EXPORT_SYMBOL_GPL vmlinux 0xbea5ff1e static_key_initialized +EXPORT_SYMBOL_GPL vmlinux 0xbeb41622 firmware_kobj +EXPORT_SYMBOL_GPL vmlinux 0xbebe7ecd device_del +EXPORT_SYMBOL_GPL vmlinux 0xbec8c6d3 powercap_unregister_control_type +EXPORT_SYMBOL_GPL vmlinux 0xbedf623d ata_sff_dev_classify +EXPORT_SYMBOL_GPL vmlinux 0xbee21107 dm_internal_suspend_noflush +EXPORT_SYMBOL_GPL vmlinux 0xbee39c84 blk_queue_dma_drain +EXPORT_SYMBOL_GPL vmlinux 0xbf041102 register_vt_notifier +EXPORT_SYMBOL_GPL vmlinux 0xbf16c20f reservation_object_wait_timeout_rcu +EXPORT_SYMBOL_GPL vmlinux 0xbf1bba42 ping_unhash +EXPORT_SYMBOL_GPL vmlinux 0xbf3ab680 device_show_int +EXPORT_SYMBOL_GPL vmlinux 0xbf4131f5 netdev_rx_handler_unregister +EXPORT_SYMBOL_GPL vmlinux 0xbf46ec98 rt_mutex_timed_lock +EXPORT_SYMBOL_GPL vmlinux 0xbf59ab33 simple_attr_open +EXPORT_SYMBOL_GPL vmlinux 0xbf634825 blkcg_deactivate_policy +EXPORT_SYMBOL_GPL vmlinux 0xbf70c548 __srcu_read_unlock +EXPORT_SYMBOL_GPL vmlinux 0xbf842ad6 cpci_hp_unregister_controller +EXPORT_SYMBOL_GPL vmlinux 0xbfb1be70 hv_setup_vmbus_irq +EXPORT_SYMBOL_GPL vmlinux 0xbfb1db41 ptp_classify_raw +EXPORT_SYMBOL_GPL vmlinux 0xbfbc5434 pciserial_resume_ports +EXPORT_SYMBOL_GPL vmlinux 0xbfce0f7f gpiod_get_array_optional +EXPORT_SYMBOL_GPL vmlinux 0xbfd10bb7 clk_register_mux_table +EXPORT_SYMBOL_GPL vmlinux 0xbfd17452 blk_mq_free_hctx_request +EXPORT_SYMBOL_GPL vmlinux 0xbfe5616d tick_broadcast_oneshot_control +EXPORT_SYMBOL_GPL vmlinux 0xbffde8ec compat_alloc_user_space +EXPORT_SYMBOL_GPL vmlinux 0xc04b0ace blkg_prfill_stat +EXPORT_SYMBOL_GPL vmlinux 0xc04b21bd acpi_os_unmap_iomem +EXPORT_SYMBOL_GPL vmlinux 0xc050940f dma_buf_end_cpu_access +EXPORT_SYMBOL_GPL vmlinux 0xc08647ff ring_buffer_bytes_cpu +EXPORT_SYMBOL_GPL vmlinux 0xc0867a8f regmap_can_raw_write +EXPORT_SYMBOL_GPL vmlinux 0xc0900fcf acpi_os_get_iomem +EXPORT_SYMBOL_GPL vmlinux 0xc0943676 ata_scsi_queuecmd +EXPORT_SYMBOL_GPL vmlinux 0xc0a96e14 rcu_gp_is_expedited +EXPORT_SYMBOL_GPL vmlinux 0xc0d26387 kmsg_dump_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc0de969f lp8788_write_byte +EXPORT_SYMBOL_GPL vmlinux 0xc0dee685 __crypto_alloc_tfm +EXPORT_SYMBOL_GPL vmlinux 0xc0df8865 timerqueue_add +EXPORT_SYMBOL_GPL vmlinux 0xc0f6197f skb_copy_ubufs +EXPORT_SYMBOL_GPL vmlinux 0xc115a8db irq_create_of_mapping +EXPORT_SYMBOL_GPL vmlinux 0xc131d530 skb_complete_tx_timestamp +EXPORT_SYMBOL_GPL vmlinux 0xc1447de6 ping_seq_stop +EXPORT_SYMBOL_GPL vmlinux 0xc144ef3a crypto_aes_set_key +EXPORT_SYMBOL_GPL vmlinux 0xc14c2824 xenbus_probe +EXPORT_SYMBOL_GPL vmlinux 0xc164642e xenbus_otherend_changed +EXPORT_SYMBOL_GPL vmlinux 0xc17515d7 usb_hcds_loaded +EXPORT_SYMBOL_GPL vmlinux 0xc18b0122 dma_buf_vunmap +EXPORT_SYMBOL_GPL vmlinux 0xc18b55cc tpm_get_timeouts +EXPORT_SYMBOL_GPL vmlinux 0xc19c7444 tcp_set_state +EXPORT_SYMBOL_GPL vmlinux 0xc1a78942 __netpoll_setup +EXPORT_SYMBOL_GPL vmlinux 0xc1d05379 phy_pm_runtime_get +EXPORT_SYMBOL_GPL vmlinux 0xc1f30835 ohci_hub_control +EXPORT_SYMBOL_GPL vmlinux 0xc20e22d0 crypto_dequeue_request +EXPORT_SYMBOL_GPL vmlinux 0xc214b5bb perf_event_refresh +EXPORT_SYMBOL_GPL vmlinux 0xc22a3091 vm_unmap_aliases +EXPORT_SYMBOL_GPL vmlinux 0xc245cb5f sdio_readw +EXPORT_SYMBOL_GPL vmlinux 0xc25b8971 hv_remove_crash_handler +EXPORT_SYMBOL_GPL vmlinux 0xc262cd87 i2c_new_probed_device +EXPORT_SYMBOL_GPL vmlinux 0xc26351f8 bind_evtchn_to_irq +EXPORT_SYMBOL_GPL vmlinux 0xc26e3a87 pci_hp_remove_module_link +EXPORT_SYMBOL_GPL vmlinux 0xc280fb46 kdb_register +EXPORT_SYMBOL_GPL vmlinux 0xc287d96a kvm_set_posted_intr_wakeup_handler +EXPORT_SYMBOL_GPL vmlinux 0xc2d3df93 dev_pm_qos_update_request +EXPORT_SYMBOL_GPL vmlinux 0xc2d97f20 cpufreq_frequency_table_verify +EXPORT_SYMBOL_GPL vmlinux 0xc2eac21e page_endio +EXPORT_SYMBOL_GPL vmlinux 0xc311c679 tracepoint_probe_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc3251e2b tpm2_gen_interrupt +EXPORT_SYMBOL_GPL vmlinux 0xc33e834d iommu_present +EXPORT_SYMBOL_GPL vmlinux 0xc341ae6d zs_map_object +EXPORT_SYMBOL_GPL vmlinux 0xc357923c pm_qos_update_request +EXPORT_SYMBOL_GPL vmlinux 0xc35ef5e9 crypto_ahash_final +EXPORT_SYMBOL_GPL vmlinux 0xc369e616 phy_pm_runtime_forbid +EXPORT_SYMBOL_GPL vmlinux 0xc37226a5 tpm_pcr_extend +EXPORT_SYMBOL_GPL vmlinux 0xc38a7ce9 __pci_reset_function_locked +EXPORT_SYMBOL_GPL vmlinux 0xc395582c vfs_removexattr +EXPORT_SYMBOL_GPL vmlinux 0xc3b25c97 blkg_stat_recursive_sum +EXPORT_SYMBOL_GPL vmlinux 0xc3f83e26 rtc_class_open +EXPORT_SYMBOL_GPL vmlinux 0xc424dbef pci_try_reset_function +EXPORT_SYMBOL_GPL vmlinux 0xc428068d sata_deb_timing_long +EXPORT_SYMBOL_GPL vmlinux 0xc447dd93 enable_kprobe +EXPORT_SYMBOL_GPL vmlinux 0xc454fc7b twl_get_type +EXPORT_SYMBOL_GPL vmlinux 0xc471c67a twl4030_audio_disable_resource +EXPORT_SYMBOL_GPL vmlinux 0xc48b7ccf ata_mode_string +EXPORT_SYMBOL_GPL vmlinux 0xc49d30e7 crypto_larval_alloc +EXPORT_SYMBOL_GPL vmlinux 0xc4b750b4 __remove_pages +EXPORT_SYMBOL_GPL vmlinux 0xc4bb353c da9052_enable_irq +EXPORT_SYMBOL_GPL vmlinux 0xc4d44048 fuse_get_req +EXPORT_SYMBOL_GPL vmlinux 0xc4e50d48 crypto_register_akcipher +EXPORT_SYMBOL_GPL vmlinux 0xc4f2e640 usb_disable_lpm +EXPORT_SYMBOL_GPL vmlinux 0xc512626a __supported_pte_mask +EXPORT_SYMBOL_GPL vmlinux 0xc524e251 thermal_cooling_device_register +EXPORT_SYMBOL_GPL vmlinux 0xc5397da6 xenbus_mkdir +EXPORT_SYMBOL_GPL vmlinux 0xc53ab2bb vring_del_virtqueue +EXPORT_SYMBOL_GPL vmlinux 0xc542933a timecounter_read +EXPORT_SYMBOL_GPL vmlinux 0xc554ca70 ata_sff_wait_ready +EXPORT_SYMBOL_GPL vmlinux 0xc55bf19e pci_assign_unassigned_bus_resources +EXPORT_SYMBOL_GPL vmlinux 0xc55f92ff ata_sas_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0xc5709554 simple_attr_release +EXPORT_SYMBOL_GPL vmlinux 0xc575c737 debug_locks_off +EXPORT_SYMBOL_GPL vmlinux 0xc586ec58 mbox_free_channel +EXPORT_SYMBOL_GPL vmlinux 0xc5943b8a serial8250_tx_chars +EXPORT_SYMBOL_GPL vmlinux 0xc5a1c470 fwnode_property_read_u8_array +EXPORT_SYMBOL_GPL vmlinux 0xc5aabdba genlmsg_new_unicast +EXPORT_SYMBOL_GPL vmlinux 0xc5b49ec4 gen_pool_get +EXPORT_SYMBOL_GPL vmlinux 0xc5b4a17c __get_user_pages_fast +EXPORT_SYMBOL_GPL vmlinux 0xc5c65031 devfreq_event_add_edev +EXPORT_SYMBOL_GPL vmlinux 0xc617f82c unregister_oom_notifier +EXPORT_SYMBOL_GPL vmlinux 0xc63d847d ktime_get_mono_fast_ns +EXPORT_SYMBOL_GPL vmlinux 0xc6574b98 fuse_dev_free +EXPORT_SYMBOL_GPL vmlinux 0xc65d3eed ring_buffer_entries_cpu +EXPORT_SYMBOL_GPL vmlinux 0xc66019cc xen_resume_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc66b77b1 iommu_group_set_iommudata +EXPORT_SYMBOL_GPL vmlinux 0xc66b86a2 __clocksource_update_freq_scale +EXPORT_SYMBOL_GPL vmlinux 0xc68d36c1 __pm_relax +EXPORT_SYMBOL_GPL vmlinux 0xc697fd2e ata_cable_unknown +EXPORT_SYMBOL_GPL vmlinux 0xc69b7ee5 zs_destroy_pool +EXPORT_SYMBOL_GPL vmlinux 0xc6a4a872 __clk_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0xc6ae9787 remove_irq +EXPORT_SYMBOL_GPL vmlinux 0xc6c0aba3 clk_fractional_divider_ops +EXPORT_SYMBOL_GPL vmlinux 0xc6c99c7a pwm_free +EXPORT_SYMBOL_GPL vmlinux 0xc6d4690d hrtimer_get_remaining +EXPORT_SYMBOL_GPL vmlinux 0xc6d86440 usb_submit_urb +EXPORT_SYMBOL_GPL vmlinux 0xc6ddf163 regmap_read +EXPORT_SYMBOL_GPL vmlinux 0xc6dfca4d exportfs_encode_inode_fh +EXPORT_SYMBOL_GPL vmlinux 0xc6f62a5e xenbus_unmap_ring_vfree +EXPORT_SYMBOL_GPL vmlinux 0xc7002ac4 evtchn_make_refcounted +EXPORT_SYMBOL_GPL vmlinux 0xc700561e rio_mport_read_config_16 +EXPORT_SYMBOL_GPL vmlinux 0xc7132f5c dev_attr_sw_activity +EXPORT_SYMBOL_GPL vmlinux 0xc72e1233 __trace_bprintk +EXPORT_SYMBOL_GPL vmlinux 0xc73f2820 crypto_alg_sem +EXPORT_SYMBOL_GPL vmlinux 0xc79029da srcu_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xc7a1840e llist_add_batch +EXPORT_SYMBOL_GPL vmlinux 0xc7c17af4 serial8250_handle_irq +EXPORT_SYMBOL_GPL vmlinux 0xc7c6391c mpi_set_buffer +EXPORT_SYMBOL_GPL vmlinux 0xc7d51cc4 tpm2_calc_ordinal_duration +EXPORT_SYMBOL_GPL vmlinux 0xc7d890f5 thermal_zone_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc7e39bca ring_buffer_dropped_events_cpu +EXPORT_SYMBOL_GPL vmlinux 0xc7e7468e dma_buf_kmap_atomic +EXPORT_SYMBOL_GPL vmlinux 0xc8129688 crypto_register_alg +EXPORT_SYMBOL_GPL vmlinux 0xc816b8a6 xhci_resume +EXPORT_SYMBOL_GPL vmlinux 0xc81d2e0f trace_event_raw_init +EXPORT_SYMBOL_GPL vmlinux 0xc853e308 hrtimer_init_sleeper +EXPORT_SYMBOL_GPL vmlinux 0xc876dc0b __inet_twsk_hashdance +EXPORT_SYMBOL_GPL vmlinux 0xc87c1f84 ktime_get +EXPORT_SYMBOL_GPL vmlinux 0xc87e487a sched_clock_idle_sleep_event +EXPORT_SYMBOL_GPL vmlinux 0xc8919cee serial8250_modem_status +EXPORT_SYMBOL_GPL vmlinux 0xc895c77a pci_try_reset_bus +EXPORT_SYMBOL_GPL vmlinux 0xc8add232 ring_buffer_record_disable +EXPORT_SYMBOL_GPL vmlinux 0xc8b430e1 usb_disable_xhci_ports +EXPORT_SYMBOL_GPL vmlinux 0xc8d50d32 vfs_cancel_lock +EXPORT_SYMBOL_GPL vmlinux 0xc8d66671 regulator_set_bypass_regmap +EXPORT_SYMBOL_GPL vmlinux 0xc8de802f cn_netlink_send +EXPORT_SYMBOL_GPL vmlinux 0xc8e3f32f usb_hcd_is_primary_hcd +EXPORT_SYMBOL_GPL vmlinux 0xc90fbd91 iommu_capable +EXPORT_SYMBOL_GPL vmlinux 0xc91277a1 kgdb_schedule_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0xc91634cd spi_finalize_current_message +EXPORT_SYMBOL_GPL vmlinux 0xc9207764 pm_generic_restore_noirq +EXPORT_SYMBOL_GPL vmlinux 0xc94bc2a7 platform_device_register +EXPORT_SYMBOL_GPL vmlinux 0xc9561772 fb_destroy_modelist +EXPORT_SYMBOL_GPL vmlinux 0xc9641b48 visitor32 +EXPORT_SYMBOL_GPL vmlinux 0xc9705eeb has_newer_microcode +EXPORT_SYMBOL_GPL vmlinux 0xc9769145 register_kretprobe +EXPORT_SYMBOL_GPL vmlinux 0xc9833a50 acpiphp_register_attention +EXPORT_SYMBOL_GPL vmlinux 0xc9a10db7 usb_hcd_check_unlink_urb +EXPORT_SYMBOL_GPL vmlinux 0xc9a172cf vfs_setlease +EXPORT_SYMBOL_GPL vmlinux 0xc9b3f576 set_primary_fwnode +EXPORT_SYMBOL_GPL vmlinux 0xc9c3f176 hpet_register_irq_handler +EXPORT_SYMBOL_GPL vmlinux 0xc9d249af max8997_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0xc9e981f5 acpi_subsys_freeze +EXPORT_SYMBOL_GPL vmlinux 0xc9ec4e21 free_percpu +EXPORT_SYMBOL_GPL vmlinux 0xca30bea4 ata_cable_ignore +EXPORT_SYMBOL_GPL vmlinux 0xca3b6041 usb_string +EXPORT_SYMBOL_GPL vmlinux 0xca48eb66 pci_num_vf +EXPORT_SYMBOL_GPL vmlinux 0xca4dd03c tpmm_chip_alloc +EXPORT_SYMBOL_GPL vmlinux 0xca7d8764 kthread_freezable_should_stop +EXPORT_SYMBOL_GPL vmlinux 0xca81ea9a xenbus_transaction_end +EXPORT_SYMBOL_GPL vmlinux 0xca8f8525 ip6_local_out_sk +EXPORT_SYMBOL_GPL vmlinux 0xca9271ee dev_pm_set_dedicated_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0xca98b215 usb_match_one_id +EXPORT_SYMBOL_GPL vmlinux 0xca99a17d __mmu_notifier_invalidate_range +EXPORT_SYMBOL_GPL vmlinux 0xcaa3bed2 device_initialize +EXPORT_SYMBOL_GPL vmlinux 0xcabe04de cpuidle_resume_and_unlock +EXPORT_SYMBOL_GPL vmlinux 0xcaec1caa clockevents_register_device +EXPORT_SYMBOL_GPL vmlinux 0xcaf02c66 fsnotify +EXPORT_SYMBOL_GPL vmlinux 0xcb13187d pci_find_next_ext_capability +EXPORT_SYMBOL_GPL vmlinux 0xcb15eee9 sdhci_pci_get_data +EXPORT_SYMBOL_GPL vmlinux 0xcb1ba4a8 serial8250_clear_and_reinit_fifos +EXPORT_SYMBOL_GPL vmlinux 0xcb43022c xenbus_watch_path +EXPORT_SYMBOL_GPL vmlinux 0xcb469d2b ddebug_add_module +EXPORT_SYMBOL_GPL vmlinux 0xcb594e2b wm8400_reg_read +EXPORT_SYMBOL_GPL vmlinux 0xcb5e5c14 __trace_note_message +EXPORT_SYMBOL_GPL vmlinux 0xcb665a3c kobject_init_and_add +EXPORT_SYMBOL_GPL vmlinux 0xcb87014a ioremap_uc +EXPORT_SYMBOL_GPL vmlinux 0xcb9e93d5 rhashtable_walk_exit +EXPORT_SYMBOL_GPL vmlinux 0xcbb2d24e blocking_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xcbb91978 gpiod_export_link +EXPORT_SYMBOL_GPL vmlinux 0xcbd24916 crypto_register_shashes +EXPORT_SYMBOL_GPL vmlinux 0xcbe56bc2 zs_get_total_pages +EXPORT_SYMBOL_GPL vmlinux 0xcbee20b2 get_cpu_iowait_time_us +EXPORT_SYMBOL_GPL vmlinux 0xcc20434a hwmon_device_register +EXPORT_SYMBOL_GPL vmlinux 0xcc25e954 do_unbind_con_driver +EXPORT_SYMBOL_GPL vmlinux 0xcc3a337f crypto_shash_setkey +EXPORT_SYMBOL_GPL vmlinux 0xcc497a60 fpu__restore +EXPORT_SYMBOL_GPL vmlinux 0xcc64b087 regcache_cache_only +EXPORT_SYMBOL_GPL vmlinux 0xcc85fcb6 async_schedule +EXPORT_SYMBOL_GPL vmlinux 0xcc8b530e i2c_generic_gpio_recovery +EXPORT_SYMBOL_GPL vmlinux 0xcc8de615 usb_register_device_driver +EXPORT_SYMBOL_GPL vmlinux 0xcc9fa694 md_new_event +EXPORT_SYMBOL_GPL vmlinux 0xcca21189 ata_acpi_stm +EXPORT_SYMBOL_GPL vmlinux 0xccc7785d sk_attach_filter +EXPORT_SYMBOL_GPL vmlinux 0xcccfb2fa sata_deb_timing_hotplug +EXPORT_SYMBOL_GPL vmlinux 0xccea4e34 perf_get_x86_pmu_capability +EXPORT_SYMBOL_GPL vmlinux 0xccfa5f81 da903x_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0xcd02c36e dev_pm_domain_detach +EXPORT_SYMBOL_GPL vmlinux 0xcd1f6008 unregister_kretprobe +EXPORT_SYMBOL_GPL vmlinux 0xcd21d3d4 rio_release_inb_dbell +EXPORT_SYMBOL_GPL vmlinux 0xcd3cfa83 fuse_request_send_background +EXPORT_SYMBOL_GPL vmlinux 0xcd4ed445 sdio_set_host_pm_flags +EXPORT_SYMBOL_GPL vmlinux 0xcd5d4ef9 btree_update +EXPORT_SYMBOL_GPL vmlinux 0xcd73abe7 digsig_verify +EXPORT_SYMBOL_GPL vmlinux 0xcd864b54 mddev_unlock +EXPORT_SYMBOL_GPL vmlinux 0xcd8ac641 init_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0xcd91b127 system_highpri_wq +EXPORT_SYMBOL_GPL vmlinux 0xcd974f00 rcu_all_qs +EXPORT_SYMBOL_GPL vmlinux 0xcd9bc332 anon_inode_getfd +EXPORT_SYMBOL_GPL vmlinux 0xcda59fef alarmtimer_get_rtcdev +EXPORT_SYMBOL_GPL vmlinux 0xcdb6adcc ras_userspace_consumers +EXPORT_SYMBOL_GPL vmlinux 0xcdca3691 nr_irqs +EXPORT_SYMBOL_GPL vmlinux 0xcdd44be8 pinctrl_unregister +EXPORT_SYMBOL_GPL vmlinux 0xce0d7875 mnt_drop_write +EXPORT_SYMBOL_GPL vmlinux 0xce12d037 btree_insert +EXPORT_SYMBOL_GPL vmlinux 0xce6a9d9a trace_current_buffer_discard_commit +EXPORT_SYMBOL_GPL vmlinux 0xce6d457f skcipher_geniv_init +EXPORT_SYMBOL_GPL vmlinux 0xce6db656 rcu_is_watching +EXPORT_SYMBOL_GPL vmlinux 0xce8b0e88 ata_pci_device_resume +EXPORT_SYMBOL_GPL vmlinux 0xce93d397 pm_runtime_force_suspend +EXPORT_SYMBOL_GPL vmlinux 0xceb02566 iommu_attach_device +EXPORT_SYMBOL_GPL vmlinux 0xceb1f126 mpi_read_raw_data +EXPORT_SYMBOL_GPL vmlinux 0xcebbc80d regmap_init_spi +EXPORT_SYMBOL_GPL vmlinux 0xcec4d51b wm8350_reg_unlock +EXPORT_SYMBOL_GPL vmlinux 0xcecc4e91 devm_devfreq_event_remove_edev +EXPORT_SYMBOL_GPL vmlinux 0xcedb16ec mbox_request_channel_byname +EXPORT_SYMBOL_GPL vmlinux 0xcee1641c kgdb_unregister_nmi_console +EXPORT_SYMBOL_GPL vmlinux 0xcef1dd0e perf_check_microcode +EXPORT_SYMBOL_GPL vmlinux 0xcef4b4c7 fat_flush_inodes +EXPORT_SYMBOL_GPL vmlinux 0xcf3983d9 __rio_local_read_config_16 +EXPORT_SYMBOL_GPL vmlinux 0xcf54ea93 async_unregister_domain +EXPORT_SYMBOL_GPL vmlinux 0xcf62f540 fwnode_property_read_string_array +EXPORT_SYMBOL_GPL vmlinux 0xcf6dee32 ata_host_alloc +EXPORT_SYMBOL_GPL vmlinux 0xcf90cc03 ping_seq_start +EXPORT_SYMBOL_GPL vmlinux 0xcfa39eca __tracepoint_rpm_suspend +EXPORT_SYMBOL_GPL vmlinux 0xcfaf5fe0 pinctrl_get +EXPORT_SYMBOL_GPL vmlinux 0xcfb5871c irq_work_queue +EXPORT_SYMBOL_GPL vmlinux 0xcfbc7b9a list_lru_del +EXPORT_SYMBOL_GPL vmlinux 0xcfc68341 synchronize_rcu_bh +EXPORT_SYMBOL_GPL vmlinux 0xcfe541f1 raw_seq_next +EXPORT_SYMBOL_GPL vmlinux 0xcfe5570c input_ff_erase +EXPORT_SYMBOL_GPL vmlinux 0xcff451e8 pci_intx +EXPORT_SYMBOL_GPL vmlinux 0xcff8c226 devm_pwm_get +EXPORT_SYMBOL_GPL vmlinux 0xd004ffa7 rtnl_af_register +EXPORT_SYMBOL_GPL vmlinux 0xd0096666 rhashtable_walk_init +EXPORT_SYMBOL_GPL vmlinux 0xd0127ea4 xen_swiotlb_sync_single_for_cpu +EXPORT_SYMBOL_GPL vmlinux 0xd01577eb __pm_runtime_use_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0xd03c7700 secure_ipv4_port_ephemeral +EXPORT_SYMBOL_GPL vmlinux 0xd041bfe8 gpio_to_desc +EXPORT_SYMBOL_GPL vmlinux 0xd041f074 pm_generic_poweroff_late +EXPORT_SYMBOL_GPL vmlinux 0xd0458ccb xenbus_strstate +EXPORT_SYMBOL_GPL vmlinux 0xd05bf606 edac_get_sysfs_subsys +EXPORT_SYMBOL_GPL vmlinux 0xd06524ba raw_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd067d3c5 system_freezable_power_efficient_wq +EXPORT_SYMBOL_GPL vmlinux 0xd08e4b5a wm831x_reg_lock +EXPORT_SYMBOL_GPL vmlinux 0xd09cae2b usb_enable_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0xd0c05159 emergency_restart +EXPORT_SYMBOL_GPL vmlinux 0xd0e155c1 devm_acpi_dma_controller_free +EXPORT_SYMBOL_GPL vmlinux 0xd0e66d9d virtqueue_detach_unused_buf +EXPORT_SYMBOL_GPL vmlinux 0xd0f9eea5 klist_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0xd1180d7b __rio_local_write_config_32 +EXPORT_SYMBOL_GPL vmlinux 0xd11b4b84 reset_controller_register +EXPORT_SYMBOL_GPL vmlinux 0xd12d806f gpiod_set_value +EXPORT_SYMBOL_GPL vmlinux 0xd13645fb ata_link_offline +EXPORT_SYMBOL_GPL vmlinux 0xd14fff91 ata_sff_lost_interrupt +EXPORT_SYMBOL_GPL vmlinux 0xd1507e59 erst_clear +EXPORT_SYMBOL_GPL vmlinux 0xd1553b3b srcu_barrier +EXPORT_SYMBOL_GPL vmlinux 0xd16712f3 crypto_check_attr_type +EXPORT_SYMBOL_GPL vmlinux 0xd1b20a1c xenbus_dev_remove +EXPORT_SYMBOL_GPL vmlinux 0xd1c4715f __inet_lookup_listener +EXPORT_SYMBOL_GPL vmlinux 0xd1c7f7bb __online_page_free +EXPORT_SYMBOL_GPL vmlinux 0xd1f2eee2 nf_logger_find_get +EXPORT_SYMBOL_GPL vmlinux 0xd20bf6ba dcookie_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd213c0d9 platform_get_irq +EXPORT_SYMBOL_GPL vmlinux 0xd217e9e6 trace_set_clr_event +EXPORT_SYMBOL_GPL vmlinux 0xd2212482 acpi_dma_request_slave_chan_by_index +EXPORT_SYMBOL_GPL vmlinux 0xd22fa30c ata_sff_thaw +EXPORT_SYMBOL_GPL vmlinux 0xd2414af5 __cpufreq_driver_target +EXPORT_SYMBOL_GPL vmlinux 0xd2561283 shmem_file_setup +EXPORT_SYMBOL_GPL vmlinux 0xd273b1b1 __round_jiffies_up_relative +EXPORT_SYMBOL_GPL vmlinux 0xd28285ef power_supply_notifier +EXPORT_SYMBOL_GPL vmlinux 0xd2833bfa device_set_wakeup_capable +EXPORT_SYMBOL_GPL vmlinux 0xd2884213 pci_find_ht_capability +EXPORT_SYMBOL_GPL vmlinux 0xd2b05050 blkg_rwstat_recursive_sum +EXPORT_SYMBOL_GPL vmlinux 0xd2b4e5b4 ehci_setup +EXPORT_SYMBOL_GPL vmlinux 0xd2b6ff43 task_cls_state +EXPORT_SYMBOL_GPL vmlinux 0xd2c58ab2 apei_exec_noop +EXPORT_SYMBOL_GPL vmlinux 0xd2e88de5 clk_register_gate +EXPORT_SYMBOL_GPL vmlinux 0xd2edf4b7 ata_get_cmd_descript +EXPORT_SYMBOL_GPL vmlinux 0xd2f97770 cpufreq_frequency_table_target +EXPORT_SYMBOL_GPL vmlinux 0xd2ff575c pci_create_slot +EXPORT_SYMBOL_GPL vmlinux 0xd3080c08 pm_runtime_no_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xd323b15a inet6_csk_bind_conflict +EXPORT_SYMBOL_GPL vmlinux 0xd348d0b5 wm831x_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0xd3acd469 crypto_unregister_alg +EXPORT_SYMBOL_GPL vmlinux 0xd3bedcbc pinctrl_pm_select_sleep_state +EXPORT_SYMBOL_GPL vmlinux 0xd3cbc7a9 max8997_read_reg +EXPORT_SYMBOL_GPL vmlinux 0xd3d03832 devm_clk_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd3edaf35 virtqueue_get_vring_size +EXPORT_SYMBOL_GPL vmlinux 0xd3f7b9a4 attribute_container_find_class_device +EXPORT_SYMBOL_GPL vmlinux 0xd4034828 system_freezable_wq +EXPORT_SYMBOL_GPL vmlinux 0xd4123538 xen_swiotlb_map_page +EXPORT_SYMBOL_GPL vmlinux 0xd41fffab interval_tree_iter_first +EXPORT_SYMBOL_GPL vmlinux 0xd426dbc4 erst_get_record_count +EXPORT_SYMBOL_GPL vmlinux 0xd43ff151 serial8250_do_shutdown +EXPORT_SYMBOL_GPL vmlinux 0xd4440de5 mm_kobj +EXPORT_SYMBOL_GPL vmlinux 0xd4487fd5 snprint_stack_trace +EXPORT_SYMBOL_GPL vmlinux 0xd44a5eac kgdb_register_nmi_console +EXPORT_SYMBOL_GPL vmlinux 0xd455da95 irq_domain_add_legacy +EXPORT_SYMBOL_GPL vmlinux 0xd47c083d pci_probe_reset_slot +EXPORT_SYMBOL_GPL vmlinux 0xd4c14632 system_unbound_wq +EXPORT_SYMBOL_GPL vmlinux 0xd4ecbcfa debugfs_create_u32_array +EXPORT_SYMBOL_GPL vmlinux 0xd4f3b697 scsi_queue_work +EXPORT_SYMBOL_GPL vmlinux 0xd51c4f5e ata_eh_analyze_ncq_error +EXPORT_SYMBOL_GPL vmlinux 0xd5409e31 dev_pm_qos_hide_latency_tolerance +EXPORT_SYMBOL_GPL vmlinux 0xd5429c94 regmap_fields_write +EXPORT_SYMBOL_GPL vmlinux 0xd5550d5f pci_bus_resource_n +EXPORT_SYMBOL_GPL vmlinux 0xd55ad93b iommu_group_get_iommudata +EXPORT_SYMBOL_GPL vmlinux 0xd56b5f64 ktime_get_ts64 +EXPORT_SYMBOL_GPL vmlinux 0xd592b0d2 rio_release_dma +EXPORT_SYMBOL_GPL vmlinux 0xd5bd7dac ring_buffer_record_enable_cpu +EXPORT_SYMBOL_GPL vmlinux 0xd5c30f4e sdio_get_host_pm_caps +EXPORT_SYMBOL_GPL vmlinux 0xd5c36c40 __tracepoint_attach_device_to_domain +EXPORT_SYMBOL_GPL vmlinux 0xd5d93195 tpm_pm_resume +EXPORT_SYMBOL_GPL vmlinux 0xd5e4a454 power_supply_set_battery_charged +EXPORT_SYMBOL_GPL vmlinux 0xd5f62644 __fsnotify_parent +EXPORT_SYMBOL_GPL vmlinux 0xd60c99b5 rcu_batches_completed_bh +EXPORT_SYMBOL_GPL vmlinux 0xd61e807e regulator_map_voltage_ascend +EXPORT_SYMBOL_GPL vmlinux 0xd631323a class_compat_remove_link +EXPORT_SYMBOL_GPL vmlinux 0xd631a94b dev_pm_qos_expose_flags +EXPORT_SYMBOL_GPL vmlinux 0xd63437a1 transport_class_register +EXPORT_SYMBOL_GPL vmlinux 0xd6394713 md_rdev_init +EXPORT_SYMBOL_GPL vmlinux 0xd6438ba4 __audit_inode_child +EXPORT_SYMBOL_GPL vmlinux 0xd64bc7df vfs_lock_file +EXPORT_SYMBOL_GPL vmlinux 0xd653bbd4 __blk_run_queue_uncond +EXPORT_SYMBOL_GPL vmlinux 0xd655b0dd __page_file_mapping +EXPORT_SYMBOL_GPL vmlinux 0xd67364f7 eventfd_ctx_fdget +EXPORT_SYMBOL_GPL vmlinux 0xd67ed670 ata_port_abort +EXPORT_SYMBOL_GPL vmlinux 0xd67f6d81 led_trigger_event +EXPORT_SYMBOL_GPL vmlinux 0xd6940d43 dma_get_required_mask +EXPORT_SYMBOL_GPL vmlinux 0xd6b26a27 pinctrl_force_default +EXPORT_SYMBOL_GPL vmlinux 0xd6c57099 virtqueue_add_outbuf +EXPORT_SYMBOL_GPL vmlinux 0xd6d2fe70 da9052_free_irq +EXPORT_SYMBOL_GPL vmlinux 0xd6d569a4 devm_phy_optional_get +EXPORT_SYMBOL_GPL vmlinux 0xd6ed3a8e cper_next_record_id +EXPORT_SYMBOL_GPL vmlinux 0xd6f183f5 bmp085_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0xd6feefa5 agp_num_entries +EXPORT_SYMBOL_GPL vmlinux 0xd705b4c7 schedule_hrtimeout +EXPORT_SYMBOL_GPL vmlinux 0xd71d55c7 platform_driver_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd71eafd3 ata_noop_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0xd72feba2 xenbus_read_driver_state +EXPORT_SYMBOL_GPL vmlinux 0xd73254d1 devres_remove +EXPORT_SYMBOL_GPL vmlinux 0xd7399d2a efivar_entry_iter_end +EXPORT_SYMBOL_GPL vmlinux 0xd761ddf1 dax_zero_page_range +EXPORT_SYMBOL_GPL vmlinux 0xd764d265 inet_hashinfo_init +EXPORT_SYMBOL_GPL vmlinux 0xd768e985 regulator_has_full_constraints +EXPORT_SYMBOL_GPL vmlinux 0xd7709dd9 public_key_subtype +EXPORT_SYMBOL_GPL vmlinux 0xd77c0bc8 klist_remove +EXPORT_SYMBOL_GPL vmlinux 0xd78b0dc0 usb_hcd_poll_rh_status +EXPORT_SYMBOL_GPL vmlinux 0xd78ba79d ping_recvmsg +EXPORT_SYMBOL_GPL vmlinux 0xd7918e16 nvdimm_volatile_region_create +EXPORT_SYMBOL_GPL vmlinux 0xd7a47c42 rio_request_inb_dbell +EXPORT_SYMBOL_GPL vmlinux 0xd7a85c5a list_lru_count_one +EXPORT_SYMBOL_GPL vmlinux 0xd7cf661d register_wide_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0xd7d79132 put_online_cpus +EXPORT_SYMBOL_GPL vmlinux 0xd7efd900 sdio_f0_writeb +EXPORT_SYMBOL_GPL vmlinux 0xd81de62c ring_buffer_record_enable +EXPORT_SYMBOL_GPL vmlinux 0xd820c283 eventfd_ctx_remove_wait_queue +EXPORT_SYMBOL_GPL vmlinux 0xd8223386 pci_test_config_bits +EXPORT_SYMBOL_GPL vmlinux 0xd845dace sock_diag_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd85a4688 pci_find_next_ht_capability +EXPORT_SYMBOL_GPL vmlinux 0xd87601cc ring_buffer_unlock_commit +EXPORT_SYMBOL_GPL vmlinux 0xd8786050 acpi_register_gsi +EXPORT_SYMBOL_GPL vmlinux 0xd87de2ef device_show_ulong +EXPORT_SYMBOL_GPL vmlinux 0xd87fc0a0 usb_amd_prefetch_quirk +EXPORT_SYMBOL_GPL vmlinux 0xd88d926a srcu_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd8a1bf4f bmp085_probe +EXPORT_SYMBOL_GPL vmlinux 0xd8a6e837 ata_sas_port_resume +EXPORT_SYMBOL_GPL vmlinux 0xd8ca03ab pinctrl_get_group_pins +EXPORT_SYMBOL_GPL vmlinux 0xd8d5f922 regulator_bulk_enable +EXPORT_SYMBOL_GPL vmlinux 0xd8f68ebf usb_poison_urb +EXPORT_SYMBOL_GPL vmlinux 0xd90033f9 fwnode_property_read_u32_array +EXPORT_SYMBOL_GPL vmlinux 0xd907d3b5 usb_reset_endpoint +EXPORT_SYMBOL_GPL vmlinux 0xd919806a amd_cache_northbridges +EXPORT_SYMBOL_GPL vmlinux 0xd942d353 ring_buffer_record_off +EXPORT_SYMBOL_GPL vmlinux 0xd94d1e74 ata_wait_after_reset +EXPORT_SYMBOL_GPL vmlinux 0xd9614eb2 sdio_register_driver +EXPORT_SYMBOL_GPL vmlinux 0xd96babb4 interval_tree_iter_next +EXPORT_SYMBOL_GPL vmlinux 0xd9781471 dmi_kobj +EXPORT_SYMBOL_GPL vmlinux 0xd986dad1 kernel_fpu_begin +EXPORT_SYMBOL_GPL vmlinux 0xd9a16c8d debugfs_create_bool +EXPORT_SYMBOL_GPL vmlinux 0xd9af8769 sysfs_create_files +EXPORT_SYMBOL_GPL vmlinux 0xd9d2acbe wakeup_source_add +EXPORT_SYMBOL_GPL vmlinux 0xd9e50c78 cpufreq_register_governor +EXPORT_SYMBOL_GPL vmlinux 0xd9ecb670 ring_buffer_overruns +EXPORT_SYMBOL_GPL vmlinux 0xd9ee999b regulator_force_disable +EXPORT_SYMBOL_GPL vmlinux 0xda45bd68 usb_get_phy_dev +EXPORT_SYMBOL_GPL vmlinux 0xda478b58 sdio_enable_func +EXPORT_SYMBOL_GPL vmlinux 0xda76f444 driver_unregister +EXPORT_SYMBOL_GPL vmlinux 0xda7d6146 fixed_phy_set_link_update +EXPORT_SYMBOL_GPL vmlinux 0xda8d25d3 inet_peer_base_init +EXPORT_SYMBOL_GPL vmlinux 0xda95772c wm8350_reg_write +EXPORT_SYMBOL_GPL vmlinux 0xdaa06dc1 acpi_lpat_raw_to_temp +EXPORT_SYMBOL_GPL vmlinux 0xdaed3073 timerqueue_del +EXPORT_SYMBOL_GPL vmlinux 0xdaf48ed3 usb_anchor_urb +EXPORT_SYMBOL_GPL vmlinux 0xdaf4dfb3 fb_mode_option +EXPORT_SYMBOL_GPL vmlinux 0xdb63a944 acpi_lpat_get_conversion_table +EXPORT_SYMBOL_GPL vmlinux 0xdb8a1b3f usermodehelper_read_trylock +EXPORT_SYMBOL_GPL vmlinux 0xdb916fd0 trace_seq_putmem +EXPORT_SYMBOL_GPL vmlinux 0xdbab6362 cpufreq_cpu_put +EXPORT_SYMBOL_GPL vmlinux 0xdbaee35d xfrm_audit_state_add +EXPORT_SYMBOL_GPL vmlinux 0xdbaf47d1 wakeup_source_destroy +EXPORT_SYMBOL_GPL vmlinux 0xdbc0bf23 __sock_recv_ts_and_drops +EXPORT_SYMBOL_GPL vmlinux 0xdbf7cb70 mpi_get_nbits +EXPORT_SYMBOL_GPL vmlinux 0xdc0625db rio_local_get_device_id +EXPORT_SYMBOL_GPL vmlinux 0xdc135763 cpuidle_get_driver +EXPORT_SYMBOL_GPL vmlinux 0xdc14264d regmap_attach_dev +EXPORT_SYMBOL_GPL vmlinux 0xdc14a211 xen_hvm_evtchn_do_upcall +EXPORT_SYMBOL_GPL vmlinux 0xdc22f309 gpiochip_remove_pin_ranges +EXPORT_SYMBOL_GPL vmlinux 0xdc2c31a0 phy_put +EXPORT_SYMBOL_GPL vmlinux 0xdc3a0a56 security_inode_setattr +EXPORT_SYMBOL_GPL vmlinux 0xdc55e985 iommu_group_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0xdc590f1a pm_runtime_forbid +EXPORT_SYMBOL_GPL vmlinux 0xdc5d69c1 usb_hcd_pci_probe +EXPORT_SYMBOL_GPL vmlinux 0xdc607381 trace_call_bpf +EXPORT_SYMBOL_GPL vmlinux 0xdc6699cb acpi_dev_free_resource_list +EXPORT_SYMBOL_GPL vmlinux 0xdc79897b cpufreq_driver_target +EXPORT_SYMBOL_GPL vmlinux 0xdc825d6c usb_amd_quirk_pll_disable +EXPORT_SYMBOL_GPL vmlinux 0xdc95ba20 iptunnel_xmit +EXPORT_SYMBOL_GPL vmlinux 0xdc97af2e syscore_suspend +EXPORT_SYMBOL_GPL vmlinux 0xdc9fa232 raw_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0xdcaac7a8 bus_for_each_drv +EXPORT_SYMBOL_GPL vmlinux 0xdcbfc74a pwm_set_chip_data +EXPORT_SYMBOL_GPL vmlinux 0xdce086cc acpi_ec_add_query_handler +EXPORT_SYMBOL_GPL vmlinux 0xdcf153d3 wakeup_source_drop +EXPORT_SYMBOL_GPL vmlinux 0xdcf86c17 vring_transport_features +EXPORT_SYMBOL_GPL vmlinux 0xdcfa0ada ata_sff_check_status +EXPORT_SYMBOL_GPL vmlinux 0xdd02faa8 dio_end_io +EXPORT_SYMBOL_GPL vmlinux 0xdd062815 gpiochip_unlock_as_irq +EXPORT_SYMBOL_GPL vmlinux 0xdd17ffec trace_clock +EXPORT_SYMBOL_GPL vmlinux 0xdd1e14d5 rio_mport_write_config_32 +EXPORT_SYMBOL_GPL vmlinux 0xdd240139 acpi_dma_simple_xlate +EXPORT_SYMBOL_GPL vmlinux 0xdd2b8ee1 sdio_memcpy_fromio +EXPORT_SYMBOL_GPL vmlinux 0xdd2efc0f ring_buffer_reset_cpu +EXPORT_SYMBOL_GPL vmlinux 0xdd391eff profile_event_unregister +EXPORT_SYMBOL_GPL vmlinux 0xdd4b5807 pci_enable_rom +EXPORT_SYMBOL_GPL vmlinux 0xdd4e42ff pm_generic_runtime_suspend +EXPORT_SYMBOL_GPL vmlinux 0xdd57e2b5 percpu_ref_exit +EXPORT_SYMBOL_GPL vmlinux 0xdd5f4b93 nvdimm_bus_attribute_group +EXPORT_SYMBOL_GPL vmlinux 0xdd6f6ac1 kernfs_path +EXPORT_SYMBOL_GPL vmlinux 0xdd8db467 debugfs_create_u16 +EXPORT_SYMBOL_GPL vmlinux 0xdd8df7d0 uart_handle_cts_change +EXPORT_SYMBOL_GPL vmlinux 0xdd92e82c rtc_alarm_irq_enable +EXPORT_SYMBOL_GPL vmlinux 0xdd97a3f7 wm5102_i2c_regmap +EXPORT_SYMBOL_GPL vmlinux 0xddbb7ba2 irq_alloc_domain_generic_chips +EXPORT_SYMBOL_GPL vmlinux 0xddbeeecc pci_lock_rescan_remove +EXPORT_SYMBOL_GPL vmlinux 0xddc05909 usb_init_urb +EXPORT_SYMBOL_GPL vmlinux 0xddc0d748 inode_sb_list_add +EXPORT_SYMBOL_GPL vmlinux 0xddc317b1 fb_deferred_io_open +EXPORT_SYMBOL_GPL vmlinux 0xddc47549 ata_sas_port_start +EXPORT_SYMBOL_GPL vmlinux 0xddcd8a30 crypto_register_instance +EXPORT_SYMBOL_GPL vmlinux 0xddd476d1 device_rename +EXPORT_SYMBOL_GPL vmlinux 0xddd58dc0 ring_buffer_reset +EXPORT_SYMBOL_GPL vmlinux 0xdde7d5d1 exportfs_decode_fh +EXPORT_SYMBOL_GPL vmlinux 0xddf00462 debugfs_create_x32 +EXPORT_SYMBOL_GPL vmlinux 0xde02adf3 of_phy_provider_unregister +EXPORT_SYMBOL_GPL vmlinux 0xde0b3102 regmap_init_mmio_clk +EXPORT_SYMBOL_GPL vmlinux 0xde4ee593 __fat_fs_error +EXPORT_SYMBOL_GPL vmlinux 0xde849456 cpuidle_register_driver +EXPORT_SYMBOL_GPL vmlinux 0xde8dd926 klist_next +EXPORT_SYMBOL_GPL vmlinux 0xde9e05ef ohci_restart +EXPORT_SYMBOL_GPL vmlinux 0xdeb05020 devfreq_event_get_edev_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0xdeb8ec3b wakeup_source_unregister +EXPORT_SYMBOL_GPL vmlinux 0xdec429b3 acpi_pci_check_ejectable +EXPORT_SYMBOL_GPL vmlinux 0xdeea4046 tty_buffer_lock_exclusive +EXPORT_SYMBOL_GPL vmlinux 0xdefdbb03 arizona_request_irq +EXPORT_SYMBOL_GPL vmlinux 0xdf0f75c6 eventfd_signal +EXPORT_SYMBOL_GPL vmlinux 0xdf1882af dbgp_reset_prep +EXPORT_SYMBOL_GPL vmlinux 0xdf2a9b2a ata_sas_port_stop +EXPORT_SYMBOL_GPL vmlinux 0xdf4a08d7 regmap_update_bits +EXPORT_SYMBOL_GPL vmlinux 0xdf59c43d sock_prot_inuse_get +EXPORT_SYMBOL_GPL vmlinux 0xdf622181 clk_register_divider_table +EXPORT_SYMBOL_GPL vmlinux 0xdf66ca81 ucode_cpu_info +EXPORT_SYMBOL_GPL vmlinux 0xdf714e31 platform_get_irq_byname +EXPORT_SYMBOL_GPL vmlinux 0xdf75282c inet_twsk_purge +EXPORT_SYMBOL_GPL vmlinux 0xdfa01d6f rio_release_inb_pwrite +EXPORT_SYMBOL_GPL vmlinux 0xdfdc4a9b usb_wakeup_notification +EXPORT_SYMBOL_GPL vmlinux 0xdfdf9c10 __tracepoint_unmap +EXPORT_SYMBOL_GPL vmlinux 0xdfe92718 attribute_container_classdev_to_container +EXPORT_SYMBOL_GPL vmlinux 0xdfed0e88 xenbus_dev_fatal +EXPORT_SYMBOL_GPL vmlinux 0xe0073907 sock_update_netprioidx +EXPORT_SYMBOL_GPL vmlinux 0xe007de41 kallsyms_lookup_name +EXPORT_SYMBOL_GPL vmlinux 0xe01f3be9 gpiod_get_direction +EXPORT_SYMBOL_GPL vmlinux 0xe0205f56 driver_find +EXPORT_SYMBOL_GPL vmlinux 0xe02eb6d0 ring_buffer_commit_overrun_cpu +EXPORT_SYMBOL_GPL vmlinux 0xe0355b54 tty_ldisc_ref +EXPORT_SYMBOL_GPL vmlinux 0xe03a00f1 __rtnl_register +EXPORT_SYMBOL_GPL vmlinux 0xe04b7dfc clk_register_mux +EXPORT_SYMBOL_GPL vmlinux 0xe06ec0be trace_seq_path +EXPORT_SYMBOL_GPL vmlinux 0xe0840801 pci_create_root_bus +EXPORT_SYMBOL_GPL vmlinux 0xe089cfcc agp_memory_reserved +EXPORT_SYMBOL_GPL vmlinux 0xe091e733 serial8250_do_startup +EXPORT_SYMBOL_GPL vmlinux 0xe0992500 mbox_request_channel +EXPORT_SYMBOL_GPL vmlinux 0xe09adfa8 rio_mport_write_config_16 +EXPORT_SYMBOL_GPL vmlinux 0xe0b1c103 clk_set_max_rate +EXPORT_SYMBOL_GPL vmlinux 0xe0c77bb5 mce_notify_irq +EXPORT_SYMBOL_GPL vmlinux 0xe0c811b0 synchronize_srcu +EXPORT_SYMBOL_GPL vmlinux 0xe0dca275 nf_queue_entry_get_refs +EXPORT_SYMBOL_GPL vmlinux 0xe0e97261 power_supply_set_property +EXPORT_SYMBOL_GPL vmlinux 0xe10c00be transport_remove_device +EXPORT_SYMBOL_GPL vmlinux 0xe10cd6ad erst_get_record_id_begin +EXPORT_SYMBOL_GPL vmlinux 0xe10ee7c3 pci_find_ext_capability +EXPORT_SYMBOL_GPL vmlinux 0xe14f02fc inet6_hash_connect +EXPORT_SYMBOL_GPL vmlinux 0xe16b0d30 unregister_jprobe +EXPORT_SYMBOL_GPL vmlinux 0xe1775ee7 dm_get_reserved_bio_based_ios +EXPORT_SYMBOL_GPL vmlinux 0xe184b7d0 vfs_listxattr +EXPORT_SYMBOL_GPL vmlinux 0xe18e180d class_dev_iter_init +EXPORT_SYMBOL_GPL vmlinux 0xe19c9784 irq_domain_xlate_onecell +EXPORT_SYMBOL_GPL vmlinux 0xe1aa11d7 relay_reset +EXPORT_SYMBOL_GPL vmlinux 0xe1ac09a3 ata_cable_sata +EXPORT_SYMBOL_GPL vmlinux 0xe1bd6c99 rio_init_mports +EXPORT_SYMBOL_GPL vmlinux 0xe1dd30af inet_csk_addr2sockaddr +EXPORT_SYMBOL_GPL vmlinux 0xe1e6daf7 usb_find_alt_setting +EXPORT_SYMBOL_GPL vmlinux 0xe1f24515 md_rdev_clear +EXPORT_SYMBOL_GPL vmlinux 0xe1f27512 devm_phy_get +EXPORT_SYMBOL_GPL vmlinux 0xe21b9f2e uprobe_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe21ea59d xenbus_dev_groups +EXPORT_SYMBOL_GPL vmlinux 0xe2565bbd irq_domain_xlate_twocell +EXPORT_SYMBOL_GPL vmlinux 0xe26caae2 ata_bmdma_start +EXPORT_SYMBOL_GPL vmlinux 0xe28a1d1a sdhci_pci_spt_drive_strength +EXPORT_SYMBOL_GPL vmlinux 0xe295c0ff is_hpet_enabled +EXPORT_SYMBOL_GPL vmlinux 0xe2c6c4b5 __gpiod_get_index_optional +EXPORT_SYMBOL_GPL vmlinux 0xe2df5ec3 class_destroy +EXPORT_SYMBOL_GPL vmlinux 0xe3043ff9 request_any_context_irq +EXPORT_SYMBOL_GPL vmlinux 0xe315bb52 pwm_get_chip_data +EXPORT_SYMBOL_GPL vmlinux 0xe31de5f3 scsi_mode_select +EXPORT_SYMBOL_GPL vmlinux 0xe32749ca cpufreq_freq_transition_begin +EXPORT_SYMBOL_GPL vmlinux 0xe34c35d8 swiotlb_tbl_unmap_single +EXPORT_SYMBOL_GPL vmlinux 0xe384a102 usb_speed_string +EXPORT_SYMBOL_GPL vmlinux 0xe38ef590 tcp_twsk_unique +EXPORT_SYMBOL_GPL vmlinux 0xe3948ff4 acpi_walk_dep_device_list +EXPORT_SYMBOL_GPL vmlinux 0xe3a6fb2e __mmc_switch +EXPORT_SYMBOL_GPL vmlinux 0xe3a723ca pwm_request_from_chip +EXPORT_SYMBOL_GPL vmlinux 0xe3abb77f ata_host_register +EXPORT_SYMBOL_GPL vmlinux 0xe3bc7fd4 hpet_unregister_irq_handler +EXPORT_SYMBOL_GPL vmlinux 0xe3bda663 inet_ehash_locks_alloc +EXPORT_SYMBOL_GPL vmlinux 0xe3d0b7ee device_for_each_child +EXPORT_SYMBOL_GPL vmlinux 0xe3ece046 skb_tstamp_tx +EXPORT_SYMBOL_GPL vmlinux 0xe40ac2f7 set_pages_array_wt +EXPORT_SYMBOL_GPL vmlinux 0xe411c16d alarm_restart +EXPORT_SYMBOL_GPL vmlinux 0xe414a290 ata_sff_qc_fill_rtf +EXPORT_SYMBOL_GPL vmlinux 0xe41534ce bind_evtchn_to_irqhandler +EXPORT_SYMBOL_GPL vmlinux 0xe421eddd class_dev_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0xe42a6cb5 regulator_disable +EXPORT_SYMBOL_GPL vmlinux 0xe4309905 syscore_resume +EXPORT_SYMBOL_GPL vmlinux 0xe45f2d9d rio_get_asm +EXPORT_SYMBOL_GPL vmlinux 0xe4689576 ktime_get_with_offset +EXPORT_SYMBOL_GPL vmlinux 0xe4971ade tracing_alloc_snapshot +EXPORT_SYMBOL_GPL vmlinux 0xe49a651f usb_hcd_platform_shutdown +EXPORT_SYMBOL_GPL vmlinux 0xe49ea4e8 spi_master_suspend +EXPORT_SYMBOL_GPL vmlinux 0xe4a6992f to_nvdimm +EXPORT_SYMBOL_GPL vmlinux 0xe4b74087 xenbus_map_ring_valloc +EXPORT_SYMBOL_GPL vmlinux 0xe4b8910a irq_create_mapping +EXPORT_SYMBOL_GPL vmlinux 0xe4e68bc8 apei_map_generic_address +EXPORT_SYMBOL_GPL vmlinux 0xe4efe956 acpi_get_pci_dev +EXPORT_SYMBOL_GPL vmlinux 0xe514d401 usb_anchor_suspend_wakeups +EXPORT_SYMBOL_GPL vmlinux 0xe5267cc8 ata_scsi_port_error_handler +EXPORT_SYMBOL_GPL vmlinux 0xe52db470 devfreq_event_disable_edev +EXPORT_SYMBOL_GPL vmlinux 0xe5427e5c devm_hwmon_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe549ef86 blk_update_request +EXPORT_SYMBOL_GPL vmlinux 0xe556a19a ata_sas_slave_configure +EXPORT_SYMBOL_GPL vmlinux 0xe56476c1 shmem_truncate_range +EXPORT_SYMBOL_GPL vmlinux 0xe5883bd9 class_compat_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe58fb452 aer_irq +EXPORT_SYMBOL_GPL vmlinux 0xe5b8082b cper_estatus_check_header +EXPORT_SYMBOL_GPL vmlinux 0xe5ce688a cm_notify_event +EXPORT_SYMBOL_GPL vmlinux 0xe5fe5954 alloc_page_buffers +EXPORT_SYMBOL_GPL vmlinux 0xe609ab78 filter_check_discard +EXPORT_SYMBOL_GPL vmlinux 0xe6103e97 debugfs_create_devm_seqfile +EXPORT_SYMBOL_GPL vmlinux 0xe61ab0da mmc_app_cmd +EXPORT_SYMBOL_GPL vmlinux 0xe61d17ab hvc_remove +EXPORT_SYMBOL_GPL vmlinux 0xe64a8735 led_trigger_register +EXPORT_SYMBOL_GPL vmlinux 0xe64ad8ea unregister_nmi_handler +EXPORT_SYMBOL_GPL vmlinux 0xe651f76e selinux_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0xe6807a36 led_sysfs_disable +EXPORT_SYMBOL_GPL vmlinux 0xe6ac2844 acpi_dev_pm_attach +EXPORT_SYMBOL_GPL vmlinux 0xe6befbd7 devm_of_pwm_get +EXPORT_SYMBOL_GPL vmlinux 0xe6c68334 ddebug_remove_module +EXPORT_SYMBOL_GPL vmlinux 0xe6e1c5fe uuid_be_gen +EXPORT_SYMBOL_GPL vmlinux 0xe6ebc4be serial8250_rx_chars +EXPORT_SYMBOL_GPL vmlinux 0xe6ef4abf dm_internal_resume_fast +EXPORT_SYMBOL_GPL vmlinux 0xe6f83837 acpi_bus_attach_private_data +EXPORT_SYMBOL_GPL vmlinux 0xe6ff7c60 __clk_round_rate +EXPORT_SYMBOL_GPL vmlinux 0xe7180823 ata_sff_exec_command +EXPORT_SYMBOL_GPL vmlinux 0xe7232e0f user_return_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe74b7041 ata_sff_data_xfer_noirq +EXPORT_SYMBOL_GPL vmlinux 0xe769232e sprint_symbol_no_offset +EXPORT_SYMBOL_GPL vmlinux 0xe770be2a pci_disable_sriov +EXPORT_SYMBOL_GPL vmlinux 0xe792b2f9 virtqueue_enable_cb_delayed +EXPORT_SYMBOL_GPL vmlinux 0xe7954bf5 sata_set_spd +EXPORT_SYMBOL_GPL vmlinux 0xe7974972 wait_on_page_bit_killable_timeout +EXPORT_SYMBOL_GPL vmlinux 0xe7a28277 mnt_want_write +EXPORT_SYMBOL_GPL vmlinux 0xe7a5da0d devm_power_supply_register_no_ws +EXPORT_SYMBOL_GPL vmlinux 0xe7a6e62a raw_seq_open +EXPORT_SYMBOL_GPL vmlinux 0xe7b8a774 virtqueue_is_broken +EXPORT_SYMBOL_GPL vmlinux 0xe7cb0763 klp_register_patch +EXPORT_SYMBOL_GPL vmlinux 0xe7cb82ea divider_round_rate +EXPORT_SYMBOL_GPL vmlinux 0xe7e79f60 ata_dev_next +EXPORT_SYMBOL_GPL vmlinux 0xe7ec7af6 fuse_put_request +EXPORT_SYMBOL_GPL vmlinux 0xe7ffe877 pcpu_base_addr +EXPORT_SYMBOL_GPL vmlinux 0xe818b32b ata_bmdma_interrupt +EXPORT_SYMBOL_GPL vmlinux 0xe81bba70 ata_do_set_mode +EXPORT_SYMBOL_GPL vmlinux 0xe84aef3f gpiod_get_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0xe84f6e5c pciserial_remove_ports +EXPORT_SYMBOL_GPL vmlinux 0xe84fb4e5 kick_process +EXPORT_SYMBOL_GPL vmlinux 0xe850824a tty_standard_install +EXPORT_SYMBOL_GPL vmlinux 0xe85ee668 restore_online_page_callback +EXPORT_SYMBOL_GPL vmlinux 0xe862c4b7 dpm_suspend_start +EXPORT_SYMBOL_GPL vmlinux 0xe864cffb fat_alloc_new_dir +EXPORT_SYMBOL_GPL vmlinux 0xe8686513 i2c_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0xe89bd243 ata_sff_queue_work +EXPORT_SYMBOL_GPL vmlinux 0xe8db09b1 vfs_truncate +EXPORT_SYMBOL_GPL vmlinux 0xe90130ae task_cgroup_path +EXPORT_SYMBOL_GPL vmlinux 0xe9022dcf rio_get_device +EXPORT_SYMBOL_GPL vmlinux 0xe9316619 sysfs_create_file_ns +EXPORT_SYMBOL_GPL vmlinux 0xe93d741e thermal_zone_device_update +EXPORT_SYMBOL_GPL vmlinux 0xe93e49c3 devres_free +EXPORT_SYMBOL_GPL vmlinux 0xe950d0d3 phy_exit +EXPORT_SYMBOL_GPL vmlinux 0xe952d79a __rtnl_af_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe959ae68 ata_link_next +EXPORT_SYMBOL_GPL vmlinux 0xe96f1e15 acpi_dev_runtime_suspend +EXPORT_SYMBOL_GPL vmlinux 0xe984fa24 unix_peer_get +EXPORT_SYMBOL_GPL vmlinux 0xe998681e extcon_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0xe9ce931a kvm_para_available +EXPORT_SYMBOL_GPL vmlinux 0xe9d1b7cf irq_to_pcap +EXPORT_SYMBOL_GPL vmlinux 0xe9ed3fd0 rio_request_mport_dma +EXPORT_SYMBOL_GPL vmlinux 0xea0cc7e7 usb_get_hcd +EXPORT_SYMBOL_GPL vmlinux 0xea124bd1 gcd +EXPORT_SYMBOL_GPL vmlinux 0xea1d8504 gpiod_direction_input +EXPORT_SYMBOL_GPL vmlinux 0xea3ef7f2 aead_geniv_init +EXPORT_SYMBOL_GPL vmlinux 0xea418e0f atapi_cmd_type +EXPORT_SYMBOL_GPL vmlinux 0xea457c8d ata_sff_dev_select +EXPORT_SYMBOL_GPL vmlinux 0xea4a6198 lp8788_read_multi_bytes +EXPORT_SYMBOL_GPL vmlinux 0xea628c20 bstr_printf +EXPORT_SYMBOL_GPL vmlinux 0xea67a545 usb_lock_device_for_reset +EXPORT_SYMBOL_GPL vmlinux 0xea7624d7 sdev_evt_send_simple +EXPORT_SYMBOL_GPL vmlinux 0xea8a7de0 crypto_ahash_walk_first +EXPORT_SYMBOL_GPL vmlinux 0xea9ca2a6 crypto_larval_lookup +EXPORT_SYMBOL_GPL vmlinux 0xeabbb147 crypto_unregister_template +EXPORT_SYMBOL_GPL vmlinux 0xeac31f9f devm_hwrng_unregister +EXPORT_SYMBOL_GPL vmlinux 0xeac642ed regmap_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0xead0be61 rdev_get_id +EXPORT_SYMBOL_GPL vmlinux 0xeadf96db ata_scsi_slave_config +EXPORT_SYMBOL_GPL vmlinux 0xeaec5e42 efivars_kobject +EXPORT_SYMBOL_GPL vmlinux 0xeb03235b unregister_asymmetric_key_parser +EXPORT_SYMBOL_GPL vmlinux 0xeb06848f __platform_create_bundle +EXPORT_SYMBOL_GPL vmlinux 0xeb14a89c __mmdrop +EXPORT_SYMBOL_GPL vmlinux 0xeb1d5269 acpiphp_unregister_attention +EXPORT_SYMBOL_GPL vmlinux 0xeb2798f7 xen_destroy_contiguous_region +EXPORT_SYMBOL_GPL vmlinux 0xeb27bc15 shash_free_instance +EXPORT_SYMBOL_GPL vmlinux 0xeb2a4098 bpf_prog_put +EXPORT_SYMBOL_GPL vmlinux 0xeb2da9d6 devm_regulator_unregister +EXPORT_SYMBOL_GPL vmlinux 0xeb370805 __apei_exec_run +EXPORT_SYMBOL_GPL vmlinux 0xeb4ed7bd inet_csk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0xeb7d183e jump_label_rate_limit +EXPORT_SYMBOL_GPL vmlinux 0xeb7d9aa7 usb_add_phy_dev +EXPORT_SYMBOL_GPL vmlinux 0xeb833c22 xen_has_pv_disk_devices +EXPORT_SYMBOL_GPL vmlinux 0xeb999999 sata_link_scr_lpm +EXPORT_SYMBOL_GPL vmlinux 0xeba45601 ip6_push_pending_frames +EXPORT_SYMBOL_GPL vmlinux 0xeba745e1 irq_set_affinity_notifier +EXPORT_SYMBOL_GPL vmlinux 0xebafd1b6 gnttab_map_refs +EXPORT_SYMBOL_GPL vmlinux 0xebcae6f0 netlink_remove_tap +EXPORT_SYMBOL_GPL vmlinux 0xebe3d461 crypto_grab_aead +EXPORT_SYMBOL_GPL vmlinux 0xebec57c4 ring_buffer_oldest_event_ts +EXPORT_SYMBOL_GPL vmlinux 0xebf39eb9 ehci_suspend +EXPORT_SYMBOL_GPL vmlinux 0xec14a035 crypto_drop_spawn +EXPORT_SYMBOL_GPL vmlinux 0xec1b043e regulator_suspend_prepare +EXPORT_SYMBOL_GPL vmlinux 0xec1eb2ea ata_pio_need_iordy +EXPORT_SYMBOL_GPL vmlinux 0xec25f3a2 skb_scrub_packet +EXPORT_SYMBOL_GPL vmlinux 0xec25f967 klist_del +EXPORT_SYMBOL_GPL vmlinux 0xec3325e2 __clk_get_num_parents +EXPORT_SYMBOL_GPL vmlinux 0xec35738a hrtimer_active +EXPORT_SYMBOL_GPL vmlinux 0xec62ca04 pm_generic_thaw_early +EXPORT_SYMBOL_GPL vmlinux 0xec631f34 remove_memory +EXPORT_SYMBOL_GPL vmlinux 0xec94ddc7 usb_gen_phy_shutdown +EXPORT_SYMBOL_GPL vmlinux 0xec965a65 virtqueue_kick +EXPORT_SYMBOL_GPL vmlinux 0xecad3b34 do_machine_check +EXPORT_SYMBOL_GPL vmlinux 0xecb053d4 crypto_alloc_pcomp +EXPORT_SYMBOL_GPL vmlinux 0xecb6b6cb irq_set_chained_handler_and_data +EXPORT_SYMBOL_GPL vmlinux 0xecc90964 pci_stop_and_remove_bus_device_locked +EXPORT_SYMBOL_GPL vmlinux 0xecdb72b6 ata_sff_dma_pause +EXPORT_SYMBOL_GPL vmlinux 0xecdbaa23 pci_hp_change_slot_info +EXPORT_SYMBOL_GPL vmlinux 0xecdbf2c1 xenbus_probe_node +EXPORT_SYMBOL_GPL vmlinux 0xecded105 usb_hcd_unlink_urb_from_ep +EXPORT_SYMBOL_GPL vmlinux 0xecf6e128 efivar_entry_get +EXPORT_SYMBOL_GPL vmlinux 0xecfc1765 crypto_unregister_akcipher +EXPORT_SYMBOL_GPL vmlinux 0xed1ba2f4 ata_sas_port_alloc +EXPORT_SYMBOL_GPL vmlinux 0xed2ef238 inet_csk_clone_lock +EXPORT_SYMBOL_GPL vmlinux 0xed447094 regulator_bulk_get +EXPORT_SYMBOL_GPL vmlinux 0xed817b57 usb_free_urb +EXPORT_SYMBOL_GPL vmlinux 0xed9711a8 list_lru_count_node +EXPORT_SYMBOL_GPL vmlinux 0xedbc6f67 gnttab_end_foreign_access +EXPORT_SYMBOL_GPL vmlinux 0xedcd95ea bpf_prog_realloc +EXPORT_SYMBOL_GPL vmlinux 0xede09ff9 sdio_writew +EXPORT_SYMBOL_GPL vmlinux 0xede0d6c5 regulator_get_optional +EXPORT_SYMBOL_GPL vmlinux 0xee017d1a noop_backing_dev_info +EXPORT_SYMBOL_GPL vmlinux 0xee13e697 set_personality_ia32 +EXPORT_SYMBOL_GPL vmlinux 0xee1533ef fb_deferred_io_fsync +EXPORT_SYMBOL_GPL vmlinux 0xee39587b acpi_driver_match_device +EXPORT_SYMBOL_GPL vmlinux 0xee3ebee7 raw_seq_start +EXPORT_SYMBOL_GPL vmlinux 0xee486d5a usb_create_shared_hcd +EXPORT_SYMBOL_GPL vmlinux 0xee54d987 pingv6_ops +EXPORT_SYMBOL_GPL vmlinux 0xee56fc3a cpufreq_freq_attr_scaling_boost_freqs +EXPORT_SYMBOL_GPL vmlinux 0xee5cc5c3 ip6_route_lookup +EXPORT_SYMBOL_GPL vmlinux 0xee6b71c4 syscon_regmap_lookup_by_compatible +EXPORT_SYMBOL_GPL vmlinux 0xee96b15a __blk_end_request_err +EXPORT_SYMBOL_GPL vmlinux 0xee975b25 pci_load_saved_state +EXPORT_SYMBOL_GPL vmlinux 0xeea4dbe5 ipv4_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0xef1f6e23 apei_resources_request +EXPORT_SYMBOL_GPL vmlinux 0xef26af87 spi_new_device +EXPORT_SYMBOL_GPL vmlinux 0xef329cb0 phy_get +EXPORT_SYMBOL_GPL vmlinux 0xef34fe38 tpm_do_selftest +EXPORT_SYMBOL_GPL vmlinux 0xef52a73c event_triggers_post_call +EXPORT_SYMBOL_GPL vmlinux 0xef5cbcf4 fib_rules_lookup +EXPORT_SYMBOL_GPL vmlinux 0xef6c3f70 round_jiffies_up_relative +EXPORT_SYMBOL_GPL vmlinux 0xef6d007a sigset_from_compat +EXPORT_SYMBOL_GPL vmlinux 0xef823245 devm_regulator_register +EXPORT_SYMBOL_GPL vmlinux 0xef84e589 pm_generic_runtime_resume +EXPORT_SYMBOL_GPL vmlinux 0xef8c7850 pcap_adc_async +EXPORT_SYMBOL_GPL vmlinux 0xefa2c27d register_tracepoint_module_notifier +EXPORT_SYMBOL_GPL vmlinux 0xefc31e26 crypto_alloc_rng +EXPORT_SYMBOL_GPL vmlinux 0xefce011a platform_add_devices +EXPORT_SYMBOL_GPL vmlinux 0xefd60910 tpm_chip_register +EXPORT_SYMBOL_GPL vmlinux 0xefe98cc8 crypto_alloc_tfm +EXPORT_SYMBOL_GPL vmlinux 0xeffa6b8f __tracepoint_cpu_idle +EXPORT_SYMBOL_GPL vmlinux 0xf03c072f __ftrace_vbprintk +EXPORT_SYMBOL_GPL vmlinux 0xf05c2ee2 mddev_init +EXPORT_SYMBOL_GPL vmlinux 0xf0696401 acpi_pci_detect_ejectable +EXPORT_SYMBOL_GPL vmlinux 0xf0727f12 ktime_get_raw_fast_ns +EXPORT_SYMBOL_GPL vmlinux 0xf0875312 fwnode_get_named_gpiod +EXPORT_SYMBOL_GPL vmlinux 0xf088e4c2 rio_dma_prep_slave_sg +EXPORT_SYMBOL_GPL vmlinux 0xf0a28b80 blk_queue_rq_timed_out +EXPORT_SYMBOL_GPL vmlinux 0xf0c714ac regmap_raw_write_async +EXPORT_SYMBOL_GPL vmlinux 0xf0d74be7 acpi_ec_remove_query_handler +EXPORT_SYMBOL_GPL vmlinux 0xf0d988c0 dm_get_rq_mapinfo +EXPORT_SYMBOL_GPL vmlinux 0xf0ec7027 pm_generic_resume_noirq +EXPORT_SYMBOL_GPL vmlinux 0xf0f5dbc2 timerqueue_iterate_next +EXPORT_SYMBOL_GPL vmlinux 0xf1134ec8 devm_extcon_dev_register +EXPORT_SYMBOL_GPL vmlinux 0xf117e4c3 dma_buf_put +EXPORT_SYMBOL_GPL vmlinux 0xf11eb7f4 regulator_enable_regmap +EXPORT_SYMBOL_GPL vmlinux 0xf1359065 acpi_pci_find_root +EXPORT_SYMBOL_GPL vmlinux 0xf1625399 led_trigger_unregister +EXPORT_SYMBOL_GPL vmlinux 0xf179fbf1 dax_truncate_page +EXPORT_SYMBOL_GPL vmlinux 0xf184d189 kernel_power_off +EXPORT_SYMBOL_GPL vmlinux 0xf196c73b add_page_wait_queue +EXPORT_SYMBOL_GPL vmlinux 0xf1b31314 delayacct_on +EXPORT_SYMBOL_GPL vmlinux 0xf1b551d9 ibft_addr +EXPORT_SYMBOL_GPL vmlinux 0xf1dac6fd __mmu_notifier_invalidate_range_start +EXPORT_SYMBOL_GPL vmlinux 0xf1f25ab9 regmap_field_read +EXPORT_SYMBOL_GPL vmlinux 0xf1f5d77d devm_kfree +EXPORT_SYMBOL_GPL vmlinux 0xf21e1f9b disable_percpu_irq +EXPORT_SYMBOL_GPL vmlinux 0xf264af4a posix_timer_event +EXPORT_SYMBOL_GPL vmlinux 0xf27977e2 async_synchronize_cookie_domain +EXPORT_SYMBOL_GPL vmlinux 0xf294e1fa ipv6_recv_error +EXPORT_SYMBOL_GPL vmlinux 0xf2970d6e kernfs_get +EXPORT_SYMBOL_GPL vmlinux 0xf2a844c6 fat_add_entries +EXPORT_SYMBOL_GPL vmlinux 0xf2cc2c74 verify_signature +EXPORT_SYMBOL_GPL vmlinux 0xf2d01c0b device_property_read_u64_array +EXPORT_SYMBOL_GPL vmlinux 0xf2eb8f69 efivar_validate +EXPORT_SYMBOL_GPL vmlinux 0xf2f077cc pkey_id_type_name +EXPORT_SYMBOL_GPL vmlinux 0xf2fca922 uart_parse_options +EXPORT_SYMBOL_GPL vmlinux 0xf30c7ce1 regulator_get_voltage +EXPORT_SYMBOL_GPL vmlinux 0xf30e105d ezx_pcap_write +EXPORT_SYMBOL_GPL vmlinux 0xf31b3fd1 workqueue_set_max_active +EXPORT_SYMBOL_GPL vmlinux 0xf32877fe rtnl_link_unregister +EXPORT_SYMBOL_GPL vmlinux 0xf32bdc5d unregister_xenstore_notifier +EXPORT_SYMBOL_GPL vmlinux 0xf32ec3a7 setup_irq +EXPORT_SYMBOL_GPL vmlinux 0xf331236f btree_geo32 +EXPORT_SYMBOL_GPL vmlinux 0xf34bf75f unregister_pernet_device +EXPORT_SYMBOL_GPL vmlinux 0xf34c5b25 cpufreq_generic_attr +EXPORT_SYMBOL_GPL vmlinux 0xf34f40f4 cpci_hp_unregister_bus +EXPORT_SYMBOL_GPL vmlinux 0xf364f7da dev_coredumpm +EXPORT_SYMBOL_GPL vmlinux 0xf3808cb1 get_state_synchronize_rcu +EXPORT_SYMBOL_GPL vmlinux 0xf3b2b160 dev_pm_qos_expose_latency_limit +EXPORT_SYMBOL_GPL vmlinux 0xf3b451ca kdb_poll_funcs +EXPORT_SYMBOL_GPL vmlinux 0xf3b7c367 mmput +EXPORT_SYMBOL_GPL vmlinux 0xf3bcc9ea dm_internal_suspend_fast +EXPORT_SYMBOL_GPL vmlinux 0xf3d16a69 trace_seq_puts +EXPORT_SYMBOL_GPL vmlinux 0xf3dd3ec1 atomic_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0xf3ebf4eb arch_apei_report_mem_error +EXPORT_SYMBOL_GPL vmlinux 0xf3f17bc0 acpi_gpiochip_free_interrupts +EXPORT_SYMBOL_GPL vmlinux 0xf3f18238 ktime_get_resolution_ns +EXPORT_SYMBOL_GPL vmlinux 0xf42487b1 tty_encode_baud_rate +EXPORT_SYMBOL_GPL vmlinux 0xf4270311 crypto_rng_reset +EXPORT_SYMBOL_GPL vmlinux 0xf42f7042 pinctrl_select_state +EXPORT_SYMBOL_GPL vmlinux 0xf43b52cb spi_unregister_master +EXPORT_SYMBOL_GPL vmlinux 0xf45628c2 print_context_stack +EXPORT_SYMBOL_GPL vmlinux 0xf475454d pci_ats_queue_depth +EXPORT_SYMBOL_GPL vmlinux 0xf48faca4 usb_get_descriptor +EXPORT_SYMBOL_GPL vmlinux 0xf494f618 mmc_regulator_get_ocrmask +EXPORT_SYMBOL_GPL vmlinux 0xf499fdb2 rcu_barrier_bh +EXPORT_SYMBOL_GPL vmlinux 0xf49ac031 sysfs_update_group +EXPORT_SYMBOL_GPL vmlinux 0xf4abbda3 sata_sff_hardreset +EXPORT_SYMBOL_GPL vmlinux 0xf4b70299 gpiod_set_raw_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0xf4bd2272 scsi_autopm_get_device +EXPORT_SYMBOL_GPL vmlinux 0xf4c93e1e acpi_bind_one +EXPORT_SYMBOL_GPL vmlinux 0xf4fc2d6c __ring_buffer_alloc +EXPORT_SYMBOL_GPL vmlinux 0xf5041e91 skb_morph +EXPORT_SYMBOL_GPL vmlinux 0xf505f424 ata_std_sched_eh +EXPORT_SYMBOL_GPL vmlinux 0xf52690ef adp5520_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xf52a8ffa call_srcu +EXPORT_SYMBOL_GPL vmlinux 0xf54bd49b lcm +EXPORT_SYMBOL_GPL vmlinux 0xf553318d cpuidle_pause_and_lock +EXPORT_SYMBOL_GPL vmlinux 0xf56bbad8 ping_common_sendmsg +EXPORT_SYMBOL_GPL vmlinux 0xf5785b42 evtchn_get +EXPORT_SYMBOL_GPL vmlinux 0xf58d16a6 ping_err +EXPORT_SYMBOL_GPL vmlinux 0xf5945bac gnttab_free_grant_references +EXPORT_SYMBOL_GPL vmlinux 0xf5a691cd invalidate_bh_lrus +EXPORT_SYMBOL_GPL vmlinux 0xf5b3013d kill_pid_info_as_cred +EXPORT_SYMBOL_GPL vmlinux 0xf5b61188 irq_create_direct_mapping +EXPORT_SYMBOL_GPL vmlinux 0xf5b87b4c rio_register_scan +EXPORT_SYMBOL_GPL vmlinux 0xf5c5fd0f iommu_detach_device +EXPORT_SYMBOL_GPL vmlinux 0xf5da0b5f devm_power_supply_register +EXPORT_SYMBOL_GPL vmlinux 0xf5dece1d __inet_hash_nolisten +EXPORT_SYMBOL_GPL vmlinux 0xf5e7532e device_property_read_string +EXPORT_SYMBOL_GPL vmlinux 0xf5f02936 usb_unlocked_enable_lpm +EXPORT_SYMBOL_GPL vmlinux 0xf5f107f3 devm_rtc_device_register +EXPORT_SYMBOL_GPL vmlinux 0xf608ac06 iommu_iova_to_phys +EXPORT_SYMBOL_GPL vmlinux 0xf60fd999 power_supply_register_no_ws +EXPORT_SYMBOL_GPL vmlinux 0xf61e73f1 usb_altnum_to_altsetting +EXPORT_SYMBOL_GPL vmlinux 0xf669972a vfs_fallocate +EXPORT_SYMBOL_GPL vmlinux 0xf67458e0 usb_autopm_get_interface_no_resume +EXPORT_SYMBOL_GPL vmlinux 0xf686cc77 wm831x_reg_read +EXPORT_SYMBOL_GPL vmlinux 0xf6a46205 usb_bulk_msg +EXPORT_SYMBOL_GPL vmlinux 0xf6a9556a btree_grim_visitor +EXPORT_SYMBOL_GPL vmlinux 0xf6b41ee7 __put_net +EXPORT_SYMBOL_GPL vmlinux 0xf6b4dd1b ehci_hub_control +EXPORT_SYMBOL_GPL vmlinux 0xf6c71a25 cper_severity_str +EXPORT_SYMBOL_GPL vmlinux 0xf6c8dc62 cpu_hotplug_enable +EXPORT_SYMBOL_GPL vmlinux 0xf6cda457 rio_mport_get_physefb +EXPORT_SYMBOL_GPL vmlinux 0xf6d69ab0 tty_buffer_request_room +EXPORT_SYMBOL_GPL vmlinux 0xf6e22654 ata_host_alloc_pinfo +EXPORT_SYMBOL_GPL vmlinux 0xf6e874f5 ata_timing_merge +EXPORT_SYMBOL_GPL vmlinux 0xf6eeafae __rio_local_write_config_16 +EXPORT_SYMBOL_GPL vmlinux 0xf6f1ecc2 ata_sff_irq_on +EXPORT_SYMBOL_GPL vmlinux 0xf7016530 xenbus_gather +EXPORT_SYMBOL_GPL vmlinux 0xf70e4a4d preempt_schedule_notrace +EXPORT_SYMBOL_GPL vmlinux 0xf7322bc8 pv_time_ops +EXPORT_SYMBOL_GPL vmlinux 0xf7608cdf __tracepoint_io_page_fault +EXPORT_SYMBOL_GPL vmlinux 0xf7b6fbdd sysfs_create_group +EXPORT_SYMBOL_GPL vmlinux 0xf7c3f273 xen_resume_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0xf7cfd6f1 syscon_regmap_lookup_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0xf82f0189 anon_transport_class_register +EXPORT_SYMBOL_GPL vmlinux 0xf82f3657 work_on_cpu +EXPORT_SYMBOL_GPL vmlinux 0xf87d5b40 devm_regulator_get +EXPORT_SYMBOL_GPL vmlinux 0xf8802492 print_stack_trace +EXPORT_SYMBOL_GPL vmlinux 0xf8867e70 regmap_get_val_endian +EXPORT_SYMBOL_GPL vmlinux 0xf8b11579 tty_find_polling_driver +EXPORT_SYMBOL_GPL vmlinux 0xf8d8d6bf root_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xf8e6b564 hibernation_set_ops +EXPORT_SYMBOL_GPL vmlinux 0xf8f3a0fb ata_ratelimit +EXPORT_SYMBOL_GPL vmlinux 0xf8f7689c nd_region_provider_data +EXPORT_SYMBOL_GPL vmlinux 0xf8fe3d0b kmsg_dump_register +EXPORT_SYMBOL_GPL vmlinux 0xf90957e5 ata_sas_port_suspend +EXPORT_SYMBOL_GPL vmlinux 0xf92ce956 kdb_printf +EXPORT_SYMBOL_GPL vmlinux 0xf932015f __raw_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xf93cf61f scsi_ioctl_block_when_processing_errors +EXPORT_SYMBOL_GPL vmlinux 0xf94080cd phy_pm_runtime_put +EXPORT_SYMBOL_GPL vmlinux 0xf95322f4 kthread_parkme +EXPORT_SYMBOL_GPL vmlinux 0xf9540707 fib_rules_register +EXPORT_SYMBOL_GPL vmlinux 0xf9547a17 divider_recalc_rate +EXPORT_SYMBOL_GPL vmlinux 0xf95f6042 dm_path_uevent +EXPORT_SYMBOL_GPL vmlinux 0xf9765833 dmi_match +EXPORT_SYMBOL_GPL vmlinux 0xf98512c2 pci_cfg_access_trylock +EXPORT_SYMBOL_GPL vmlinux 0xf991c09f rcu_qs_ctr +EXPORT_SYMBOL_GPL vmlinux 0xf9924426 arch_add_memory +EXPORT_SYMBOL_GPL vmlinux 0xf99c44eb class_unregister +EXPORT_SYMBOL_GPL vmlinux 0xf9a054b5 __round_jiffies +EXPORT_SYMBOL_GPL vmlinux 0xf9abb8c5 extcon_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xf9c2da57 clkdev_create +EXPORT_SYMBOL_GPL vmlinux 0xf9c8a0fd disk_get_part +EXPORT_SYMBOL_GPL vmlinux 0xf9ca3160 ata_id_xfermask +EXPORT_SYMBOL_GPL vmlinux 0xf9d9264e xen_have_vector_callback +EXPORT_SYMBOL_GPL vmlinux 0xf9dd8903 acpi_dev_add_driver_gpios +EXPORT_SYMBOL_GPL vmlinux 0xf9e4fdf6 regulator_map_voltage_linear +EXPORT_SYMBOL_GPL vmlinux 0xf9ebf72b extcon_get_edev_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0xf9ee4d05 proc_get_parent_data +EXPORT_SYMBOL_GPL vmlinux 0xf9fa8a32 ata_host_suspend +EXPORT_SYMBOL_GPL vmlinux 0xf9febafc handle_level_irq +EXPORT_SYMBOL_GPL vmlinux 0xfa1407c5 set_online_page_callback +EXPORT_SYMBOL_GPL vmlinux 0xfa1eb910 unregister_syscore_ops +EXPORT_SYMBOL_GPL vmlinux 0xfa1f4662 scatterwalk_start +EXPORT_SYMBOL_GPL vmlinux 0xfa2dd2d1 get_cpu_device +EXPORT_SYMBOL_GPL vmlinux 0xfa35044a alternatives_patched +EXPORT_SYMBOL_GPL vmlinux 0xfa69d0d1 unregister_acpi_bus_type +EXPORT_SYMBOL_GPL vmlinux 0xfa70c2fd gpiochip_free_own_desc +EXPORT_SYMBOL_GPL vmlinux 0xfa727453 sata_link_resume +EXPORT_SYMBOL_GPL vmlinux 0xfa901b31 compat_get_timespec +EXPORT_SYMBOL_GPL vmlinux 0xfa9e33f7 klist_init +EXPORT_SYMBOL_GPL vmlinux 0xfaf1890f sb800_prefetch +EXPORT_SYMBOL_GPL vmlinux 0xfaf860b1 __percpu_ida_init +EXPORT_SYMBOL_GPL vmlinux 0xfb25ce06 btree_get_prev +EXPORT_SYMBOL_GPL vmlinux 0xfb2a2fa0 regulator_register +EXPORT_SYMBOL_GPL vmlinux 0xfb32b30f ring_buffer_read_prepare_sync +EXPORT_SYMBOL_GPL vmlinux 0xfb38cb98 regulator_set_voltage_sel_regmap +EXPORT_SYMBOL_GPL vmlinux 0xfb4ea632 pm_schedule_suspend +EXPORT_SYMBOL_GPL vmlinux 0xfb64b230 acpi_processor_ffh_cstate_probe +EXPORT_SYMBOL_GPL vmlinux 0xfb6eedf9 power_group_name +EXPORT_SYMBOL_GPL vmlinux 0xfb8dfe64 ahash_free_instance +EXPORT_SYMBOL_GPL vmlinux 0xfba1c75f virtio_device_restore +EXPORT_SYMBOL_GPL vmlinux 0xfbbd41ca no_action +EXPORT_SYMBOL_GPL vmlinux 0xfbc648c3 rtc_irq_register +EXPORT_SYMBOL_GPL vmlinux 0xfbda8837 usb_store_new_id +EXPORT_SYMBOL_GPL vmlinux 0xfbdf21e2 virtqueue_get_avail +EXPORT_SYMBOL_GPL vmlinux 0xfbf0971e smp_ops +EXPORT_SYMBOL_GPL vmlinux 0xfbf69975 ata_sff_tf_read +EXPORT_SYMBOL_GPL vmlinux 0xfc020a9c blkio_cgrp_subsys +EXPORT_SYMBOL_GPL vmlinux 0xfc03d97a page_is_ram +EXPORT_SYMBOL_GPL vmlinux 0xfc201b66 sprint_oid +EXPORT_SYMBOL_GPL vmlinux 0xfc254d15 gnttab_free_auto_xlat_frames +EXPORT_SYMBOL_GPL vmlinux 0xfc37c5b4 tcp_reno_cong_avoid +EXPORT_SYMBOL_GPL vmlinux 0xfc3b4246 acpi_bus_update_power +EXPORT_SYMBOL_GPL vmlinux 0xfc4d84fe blkg_lookup_create +EXPORT_SYMBOL_GPL vmlinux 0xfc4f20a8 ftrace_set_filter_ip +EXPORT_SYMBOL_GPL vmlinux 0xfc968c8b apei_exec_write_register_value +EXPORT_SYMBOL_GPL vmlinux 0xfca23783 ata_sff_prereset +EXPORT_SYMBOL_GPL vmlinux 0xfcd7bc0b ring_buffer_empty +EXPORT_SYMBOL_GPL vmlinux 0xfce342f0 fib_table_lookup +EXPORT_SYMBOL_GPL vmlinux 0xfce35ff2 regulator_bulk_force_disable +EXPORT_SYMBOL_GPL vmlinux 0xfd22ebcb __srcu_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xfd365619 regcache_mark_dirty +EXPORT_SYMBOL_GPL vmlinux 0xfd51b281 gnttab_end_foreign_access_ref +EXPORT_SYMBOL_GPL vmlinux 0xfd7243c7 erst_disable +EXPORT_SYMBOL_GPL vmlinux 0xfd7a50ea set_timer_slack +EXPORT_SYMBOL_GPL vmlinux 0xfd8ea967 dev_coredumpv +EXPORT_SYMBOL_GPL vmlinux 0xfda84310 regmap_get_val_bytes +EXPORT_SYMBOL_GPL vmlinux 0xfde57272 virtqueue_get_buf +EXPORT_SYMBOL_GPL vmlinux 0xfde8ef99 mmc_regulator_set_ocr +EXPORT_SYMBOL_GPL vmlinux 0xfdec6f8f usb_interrupt_msg +EXPORT_SYMBOL_GPL vmlinux 0xfdf437ce rio_mport_send_doorbell +EXPORT_SYMBOL_GPL vmlinux 0xfdf4607e ip6_datagram_send_ctl +EXPORT_SYMBOL_GPL vmlinux 0xfe0ad15d gpiod_set_array_value +EXPORT_SYMBOL_GPL vmlinux 0xfe32192e cpu_device_create +EXPORT_SYMBOL_GPL vmlinux 0xfe347021 inet_csk_route_req +EXPORT_SYMBOL_GPL vmlinux 0xfe448a7b bpf_prog_select_runtime +EXPORT_SYMBOL_GPL vmlinux 0xfe4b650c xen_swiotlb_sync_single_for_device +EXPORT_SYMBOL_GPL vmlinux 0xfe53b6cc ref_module +EXPORT_SYMBOL_GPL vmlinux 0xfe593e33 debugfs_create_x64 +EXPORT_SYMBOL_GPL vmlinux 0xfe6ab05b sdio_disable_func +EXPORT_SYMBOL_GPL vmlinux 0xfe727411 get_phys_to_machine +EXPORT_SYMBOL_GPL vmlinux 0xfe734d9a devm_pinctrl_put +EXPORT_SYMBOL_GPL vmlinux 0xfe814308 devres_release +EXPORT_SYMBOL_GPL vmlinux 0xfe990052 gpio_free +EXPORT_SYMBOL_GPL vmlinux 0xfea582fe dma_buf_detach +EXPORT_SYMBOL_GPL vmlinux 0xfebfea3a devm_regulator_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0xfed11ed1 usb_mon_deregister +EXPORT_SYMBOL_GPL vmlinux 0xfedcbdd0 dev_pm_qos_add_request +EXPORT_SYMBOL_GPL vmlinux 0xfeee789f thermal_of_cooling_device_register +EXPORT_SYMBOL_GPL vmlinux 0xfef06957 rtc_set_time +EXPORT_SYMBOL_GPL vmlinux 0xfef8a166 trace_current_buffer_lock_reserve +EXPORT_SYMBOL_GPL vmlinux 0xfefbbd34 md_run +EXPORT_SYMBOL_GPL vmlinux 0xfefe9069 xenbus_unmap_ring +EXPORT_SYMBOL_GPL vmlinux 0xff05fa13 vring_interrupt +EXPORT_SYMBOL_GPL vmlinux 0xff18c220 gpiochip_is_requested +EXPORT_SYMBOL_GPL vmlinux 0xff1b3b34 thermal_generate_netlink_event +EXPORT_SYMBOL_GPL vmlinux 0xff291ecf clk_unregister_divider +EXPORT_SYMBOL_GPL vmlinux 0xff2ce747 machine_check_poll +EXPORT_SYMBOL_GPL vmlinux 0xff5a8cfe cn_del_callback +EXPORT_SYMBOL_GPL vmlinux 0xff633558 vprintk_default +EXPORT_SYMBOL_GPL vmlinux 0xffe4dfba ata_sff_softreset +EXPORT_SYMBOL_GPL vmlinux 0xfff84b4d ata_eh_qc_complete --- linux-raspi2-4.2.0.orig/debian.master/abi/4.2.0-26.31/amd64/lowlatency.compiler +++ linux-raspi2-4.2.0/debian.master/abi/4.2.0-26.31/amd64/lowlatency.compiler @@ -0,0 +1 @@ +GCC: (Ubuntu 5.2.1-22ubuntu2) 5.2.1 20151010 --- linux-raspi2-4.2.0.orig/debian.master/abi/4.2.0-26.31/amd64/lowlatency.modules +++ linux-raspi2-4.2.0/debian.master/abi/4.2.0-26.31/amd64/lowlatency.modules @@ -0,0 +1,4466 @@ +3c574_cs +3c589_cs +3c59x +3w-9xxx +3w-sas +3w-xxxx +6lowpan +6pack +8021q +8139cp +8139too +8250_dw +8250_fintek +8255 +8255_pci +8390 +842 +842_compress +842_decompress +88pm800 +88pm805 +88pm80x +88pm80x_onkey +88pm8607 +88pm860x_battery +88pm860x_bl +88pm860x_charger +88pm860x_onkey +88pm860x-ts +9p +9pnet +9pnet_rdma +9pnet_virtio +a100u2w +a3d +a8293 +aacraid +aat2870_bl +aat2870-regulator +ab3100 +ab3100-otp +abituguru +abituguru3 +ablk_helper +ac97_bus +acard-ahci +acecad +acenic +acerhdf +acer-wmi +acpi-als +acpi_extlog +acpi_ipmi +acpi_pad +acpiphp_ibm +acpi_power_meter +acpi_thermal_rel +acquirewdt +act200l-sir +act8865-regulator +act_bpf +act_connmark +act_csum +act_gact +act_ipt +actisys-sir +act_mirred +act_nat +act_pedit +act_police +act_simple +act_skbedit +act_vlan +ad2s1200 +ad2s1210 +ad2s90 +ad5064 +ad525x_dpot +ad525x_dpot-i2c +ad525x_dpot-spi +ad5360 +ad5380 +ad5398 +ad5421 +ad5446 +ad5449 +ad5504 +ad5624r_spi +ad5686 +ad5755 +ad5764 +ad5791 +ad5933 +ad714x +ad714x-i2c +ad714x-spi +ad7150 +ad7152 +ad7192 +ad7266 +ad7280a +ad7291 +ad7298 +ad7303 +ad7314 +ad7414 +ad7418 +ad7476 +ad7606 +ad7746 +ad7780 +ad7791 +ad7793 +ad7816 +ad7877 +ad7879 +ad7879-i2c +ad7879-spi +ad7887 +ad7923 +ad799x +ad8366 +ad9523 +ad9832 +ad9834 +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 +ade7753 +ade7754 +ade7758 +ade7759 +ade7854 +ade7854-i2c +ade7854-spi +adf4350 +adfs +adi +adis16060 +adis16080 +adis16130 +adis16136 +adis16201 +adis16203 +adis16204 +adis16209 +adis16220 +adis16240 +adis16260 +adis16400 +adis16480 +adis_lib +adjd_s311 +adl_pci6208 +adl_pci7x3x +adl_pci8164 +adl_pci9111 +adl_pci9118 +adm1021 +adm1025 +adm1026 +adm1029 +adm1031 +adm1275 +adm8211 +adm9240 +adp5520_bl +adp5520-keys +adp5588-keys +adp5589-keys +adp8860_bl +adp8870_bl +adq12b +ads1015 +ads7828 +ads7846 +ads7871 +ad_sigma_delta +adt7310 +adt7316 +adt7316-i2c +adt7316-spi +adt7410 +adt7411 +adt7462 +adt7470 +adt7475 +adt7x10 +adummy +adutux +adv7170 +adv7175 +adv7511 +adv7604 +adv7842 +advansys +advantechwdt +adv_pci1710 +adv_pci1723 +adv_pci1724 +adv_pci_dio +adxl34x +adxl34x-i2c +adxl34x-spi +adxrs450 +aesni-intel +aes-x86_64 +af9013 +af9033 +af_alg +affs +af_key +af_packet_diag +af-rxrpc +ah4 +ah6 +aha152x_cs +ahci +ahci_platform +aic79xx +aic7xxx +aic94xx +aio_aio12_8 +aio_iiro_16 +aiptek +aircable +airo +airo_cs +airspy +ak8975 +al3320a +algif_aead +algif_hash +algif_rng +algif_skcipher +alienware-wmi +ali-ircc +alim1535_wdt +alim7101_wdt +altera-ci +altera_jtaguart +altera_ps2 +altera-stapl +altera_tse +altera_uart +alx +am53c974 +ambassador +amc6821 +amd +amd5536udc +amd64_edac_mod +amd76xrom +amd8111e +amd_freq_sensitivity +amdgpu +amd_iommu_v2 +amdkfd +amd-rng +amilo-rfkill +amplc_dio200 +amplc_dio200_common +amplc_dio200_pci +amplc_pc236 +amplc_pc236_common +amplc_pc263 +amplc_pci224 +amplc_pci230 +amplc_pci236 +amplc_pci263 +ams369fg06 +analog +anatop-regulator +ansi_cprng +anubis +aoe +apanel +apds9300 +apds9802als +apds990x +apple_bl +appledisplay +apple-gmux +applesmc +appletalk +appletouch +applicom +ar5523 +ar7part +arc4 +arcfb +arcmsr +arcnet +arc_ps2 +arc-rawmode +arc-rimi +arc_uart +arizona-haptics +arizona-i2c +arizona-ldo1 +arizona-micsupp +arizona-spi +ark3116 +arkfb +arptable_filter +arp_tables +arpt_mangle +as102_fe +as3711_bl +as3711-regulator +as3935 +as5011 +asb100 +asc7621 +asix +ast +asus_atk0110 +asus-laptop +asus-nb-wmi +asus-wmi +async_memcpy +async_pq +async_raid6_recov +async_tx +async_xor +at24 +at25 +at76c50x-usb +at803x +at86rf230 +atbm8830 +aten +ath +ath10k_core +ath10k_pci +ath3k +ath5k +ath6kl_core +ath6kl_sdio +ath6kl_usb +ath9k +ath9k_common +ath9k_htc +ath9k_hw +ati_remote +ati_remote2 +atl1 +atl1c +atl1e +atl2 +atlas_btns +atm +atmel +atmel_cs +atmel_mxt_ts +atmel_pci +atmtcp +atp +atp870u +atusb +atxp1 +aty128fb +atyfb +au0828 +au8522_common +au8522_decoder +au8522_dig +aufs +auo_k1900fb +auo_k1901fb +auo_k190x +auo-pixcir-ts +authenc +authencesn +auth_rpcgss +autofs4 +avma1_cs +avm_cs +avmfritz +ax25 +ax88179_178a +axnet_cs +axp20x-pek +axp20x-regulator +axp288_adc +axp288_charger +axp288_fuel_gauge +b1 +b1dma +b1pci +b1pcmcia +b2c2-flexcop +b2c2-flexcop-pci +b2c2-flexcop-usb +b43 +b43legacy +b44 +bas_gigaset +batman-adv +baycom_par +baycom_ser_fdx +baycom_ser_hdx +bcache +bch +bcm203x +bcm3510 +bcm590xx +bcm590xx-regulator +bcm5974 +bcm7xxx +bcm87xx +bcma +bcma-hcd +bd6107 +bdc +bdc_pci +be2iscsi +be2net +befs +belkin_sa +bfa +bfs +bfusb +bh1750 +bh1770glc +bh1780gli +binfmt_misc +block2mtd +blocklayoutdriver +blowfish_common +blowfish_generic +blowfish-x86_64 +bluecard_cs +bluetooth +bluetooth_6lowpan +bma150 +bma180 +bmc150-accel +bmc150_magn +bmg160 +bmp085-i2c +bmp085-spi +bmp280 +bna +bnep +bnx2 +bnx2fc +bnx2i +bnx2x +bonding +bpa10x +bpck +bpqether +bq2415x_charger +bq24190_charger +bq24257_charger +bq24735-charger +bq25890_charger +bq27x00_battery +br2684 +brcmfmac +brcmsmac +brcmutil +bridge +br_netfilter +broadcom +broadsheetfb +bsd_comp +bt3c_cs +bt819 +bt856 +bt866 +bt878 +btbcm +btcoexist +btintel +btmrvl +btmrvl_sdio +btrfs +btrtl +btsdio +bttv +btuart_cs +btusb +btwilink +bu21013_ts +budget +budget-av +budget-ci +budget-core +budget-patch +BusLogic +c2port-duramar2150 +c4 +c67x00 +c6xdigio +cachefiles +cadence_wdt +cafe_ccic +cafe_nand +caif +caif_hsi +caif_serial +caif_socket +caif_usb +caif_virtio +camellia-aesni-avx2 +camellia-aesni-avx-x86_64 +camellia_generic +camellia-x86_64 +can +can-bcm +can-dev +can-gw +can-raw +capi +capidrv +capmode +carl9170 +carminefb +cassini +cast5-avx-x86_64 +cast5_generic +cast6-avx-x86_64 +cast6_generic +cast_common +catc +cb710 +cb710-mmc +cb_das16_cs +cb_pcidas +cb_pcidas64 +cb_pcidda +cb_pcimdas +cb_pcimdda +cc10001_adc +cc2520 +cc770 +cc770_isa +cc770_platform +c_can +c_can_pci +c_can_platform +cciss +ccm +ccp +ccp-crypto +cdc-acm +cdc_eem +cdc_ether +cdc_mbim +cdc_ncm +cdc-phonet +cdc_subset +cdc-wdm +ceph +cfag12864b +cfag12864bfb +cfg80211 +cfi_cmdset_0001 +cfi_cmdset_0002 +cfi_cmdset_0020 +cfi_probe +cfi_util +cfspi_slave +ch +ch341 +ch7006 +chacha20_generic +chacha20poly1305 +chaoskey +chipreg +chnl_net +chromeos_laptop +chromeos_pstore +cicada +cifs +ci_hdrc +ci_hdrc_msm +ci_hdrc_pci +ci_hdrc_usb2 +ci_hdrc_zevio +cirrus +cirrusfb +ck804xrom +classmate-laptop +clip +clk-cdce706 +clk-palmas +clk-pwm +clk-s2mps11 +clk-si5351 +clk-twl6040 +clk-wm831x +cls_basic +cls_bpf +cls_cgroup +cls_flow +cls_flower +cls_fw +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_cs +com20020-pci +com90io +com90xx +comedi +comedi_8254 +comedi_8255 +comedi_bond +comedi_isadma +comedi_parport +comedi_pci +comedi_pcmcia +comedi_test +comedi_usb +comm +compal-laptop +configfs +contec_pci_dio +cordic +core +coretemp +cp210x +cpcihp_generic +cpcihp_zt5550 +cpia2 +cpsw_ale +cpu5wdt +cpuid +cpu-notifier-error-inject +cramfs +cr_bllcd +crc32 +crc32-pclmul +crc7 +crc8 +crc-ccitt +crc-itu-t +crct10dif-pclmul +cros_ec +cros_ec_devs +cros_ec_i2c +cros_ec_keyb +cros_ec_lpc +cros_ec_spi +crvml +cryptd +cryptoloop +crypto_null +crypto_user +cs5345 +cs53l32a +csiostor +ct82c710 +ctr +cts +cuse +cw1200_core +cw1200_wlan_sdio +cw1200_wlan_spi +cx18 +cx18-alsa +cx22700 +cx22702 +cx231xx +cx231xx-alsa +cx231xx-dvb +cx2341x +cx23885 +cx24110 +cx24113 +cx24116 +cx24117 +cx24120 +cx24123 +cx25821 +cx25821-alsa +cx25840 +cx82310_eth +cx8800 +cx8802 +cx88-alsa +cx88-blackbird +cx88-dvb +cx88-vp3054-i2c +cx88xx +cxacru +cxd2099 +cxd2820r +cxgb +cxgb3 +cxgb3i +cxgb4 +cxgb4i +cxgb4vf +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 +da9030_battery +da9034-ts +da903x +da903x_bl +da9052-battery +da9052_bl +da9052-hwmon +da9052_onkey +da9052-regulator +da9052_tsi +da9052_wdt +da9055-hwmon +da9055_onkey +da9055-regulator +da9055_wdt +da9063_onkey +da9063-regulator +da9063_wdt +da9150-charger +da9150-core +da9150-gpadc +da9210-regulator +da9211-regulator +dac02 +DAC960 +daqboard2000 +das08 +das08_cs +das08_isa +das08_pci +das16 +das16m1 +das1800 +das6402 +das800 +davicom +db9 +dc395x +dca +dccp +dccp_diag +dccp_ipv4 +dccp_ipv6 +dccp_probe +dcdbas +ddbridge +de2104x +de4x5 +decnet +deflate +defxx +dell-laptop +dell-led +dell-rbtn +dell_rbu +dell-smm-hwmon +dell-smo8800 +dell-wmi +dell-wmi-aio +denali +denali_dt +denali_pci +des3_ede-x86_64 +des_generic +designware_i2s +dgap +dgnc +dht11 +dib0070 +dib0090 +dib3000mb +dib3000mc +dib7000m +dib7000p +dib8000 +dibx000_common +digi_acceleport +diskonchip +divacapi +divadidd +diva_idi +diva_mnt +divas +dl2k +dlci +dlm +dln2 +dm1105 +dm9601 +dm-bio-prison +dm-bufio +dm-cache +dm-cache-cleaner +dm-cache-mq +dm-cache-smq +dm-crypt +dm-delay +dme1737 +dm-era +dmfe +dm-flakey +dmi-sysfs +dm-log +dm-log-userspace +dm-log-writes +dmm32at +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-verity +dmx3191d +dm-zero +dnet +dn_rtmsg +docg3 +docg4 +dp83867 +dpt_i2o +drbd +drbg +drm +drm_kms_helper +drv260x +drv2665 +drv2667 +drx39xyj +drxd +drxk +ds1621 +ds1682 +ds1wm +ds2482 +ds2490 +ds2760_battery +ds2780_battery +ds2781_battery +ds2782_battery +ds3000 +ds620 +dsbr100 +dscc4 +dss1_divert +dst +dst_ca +dstr +dt2801 +dt2811 +dt2814 +dt2815 +dt2817 +dt282x +dt3000 +dt3155 +dt9812 +dtl1_cs +dummy +dummy-irq +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-digitv +dvb-usb-dtt200u +dvb-usb-dtv5100 +dvb-usb-dvbsky +dvb-usb-dw2102 +dvb-usb-ec168 +dvb-usb-friio +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_v2 +dvb-usb-vp702x +dvb-usb-vp7045 +dwc3 +dwc3-pci +dw_dmac +dw_dmac_core +dw_dmac_pci +dwmac-generic +dw_wdt +dyna_pci10xx +dynapro +e100 +e1000 +e1000e +e3x0-button +e4000 +e752x_edac +earth-pt1 +earth-pt3 +eata +ebt_802_3 +ebtable_broute +ebtable_filter +ebtable_nat +ebtables +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 +ec100 +ec_bhf +echainiv +echo +ec_sys +edac_core +edac_mce_amd +edt-ft5x06 +eeepc-laptop +eeepc-wmi +eeprom +eeprom_93cx6 +eeprom_93xx46 +eeti_ts +efi-pstore +efs +ehset +einj +elan_i2c +elants_i2c +elo +elsa_cs +em28xx +em28xx-alsa +em28xx-dvb +em28xx-rc +em28xx-v4l +emc1403 +emc2103 +emc6w201 +em_canid +em_cmp +emi26 +emi62 +em_ipset +em_meta +em_nbyte +empeg +ems_pci +ems_pcmcia +ems_usb +em_text +emu10k1-gp +em_u32 +enc28j60 +enclosure +ene_ir +eni +enic +epat +epia +epic100 +eql +esas2r +esb2rom +esd_usb2 +esi-sir +esp4 +esp6 +esp_scsi +et1011c +et131x +ethoc +eurotechwdt +evbug +exofs +extcon-adc-jack +extcon-arizona +extcon-axp288 +extcon-gpio +extcon-max14577 +extcon-max77693 +extcon-max77843 +extcon-max8997 +extcon-palmas +extcon-rt8973a +extcon-sm5502 +extcon-usb-gpio +ezusb +f2fs +f71805f +f71808e_wdt +f71882fg +f75375s +f81232 +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_ssd1289 +fb_ssd1306 +fb_ssd1331 +fb_ssd1351 +fb_st7735r +fb_sys_fops +fbtft +fbtft_device +fb_tinylcd +fb_tls8204 +fb_uc1701 +fb_upd161704 +fb_watterott +fc0011 +fc0012 +fc0013 +fc2580 +fcoe +fcrypt +fdomain +fdomain_cs +fealnx +ff-memless +fid +fintek-cir +firedtv +firestream +firewire-core +firewire-net +firewire-ohci +firewire-sbp2 +firewire-serial +fit2 +fit3 +fixed +fl512 +fld +flexfb +floppy +fm10k +fm801-gp +fmc +fmc-chardev +fmc-fakedev +fmc-trivial +fmc-write-eeprom +fm_drv +fmvj18x_cs +fnic +forcedeth +fore_200e +fotg210-hcd +fotg210-udc +fou +freevxfs +friq +frpw +fsa9480 +fscache +fschmd +fsl_lpuart +ft1000 +ft1000_pcmcia +ftdi-elan +ftdi_sio +ftl +fujitsu-laptop +fujitsu-tablet +fujitsu_ts +fusbh200-hcd +g450_pll +g760a +g762 +g_acm_ms +gadgetfs +gamecon +gameport +garmin_gps +garp +g_audio +g_cdc +gcm +g_dbgp +gdmtty +gdmulte +gdmwm +gdth +generic +generic-adc-battery +generic_bl +genet +geneve +geneve_core +gen_probe +genwqe_card +g_ether +gf128mul +gf2k +g_ffs +gfs2 +ghash-clmulni-intel +ghash-generic +g_hid +gigaset +girbil-sir +gl518sm +gl520sm +gl620a +gluebi +glue_helper +gma500_gfx +g_mass_storage +g_midi +g_ncm +g_nokia +go7007 +go7007-loader +go7007-usb +goku_udc +goodix +gp2ap002a00f +gp2ap020a00f +gpio +gpio-addr-flash +gpio-adp5520 +gpio-adp5588 +gpio-amd8111 +gpio-arizona +gpio_backlight +gpio-beeper +gpio-charger +gpio-crystalcove +gpio-da9052 +gpio-da9055 +gpio-dln2 +gpio-dwapb +gpio-f7188x +gpio-fan +gpio-generic +gpio-ich +gpio-ir-recv +gpio-it8761e +gpio-janz-ttl +gpio-kempld +gpio_keys +gpio_keys_polled +gpio-lp3943 +gpio-max7300 +gpio-max7301 +gpio-max730x +gpio-max732x +gpio-mc33880 +gpio-mcp23s08 +gpio-ml-ioh +gpio_mouse +gpio-pca953x +gpio-pcf857x +gpio-rdc321x +gpio-regulator +gpio-sch +gpio-sch311x +gpio_tilt_polled +gpio-tps65912 +gpio-twl4030 +gpio-twl6040 +gpio-ucb1400 +gpio-viperboard +gpio-vx855 +gpio-wm831x +gpio-wm8350 +gpio-wm8994 +g_printer +grace +gre +grip +grip_mp +gr_udc +gsc_hpdi +g_serial +gs_fpga +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 +gs_usb +gtco +guillemot +gunze +g_webcam +g_zero +hackrf +hamachi +hampshire +hangcheck-timer +hanwang +hci +hci_uart +hci_vhci +hdaps +hdlc +hdlc_cisco +hdlcdrv +hdlc_fr +hdlc_ppp +hdlc_raw +hdlc_raw_eth +hdlc_x25 +hdpvr +he +hecubafb +hexium_gemini +hexium_orion +hfc4s8s_l1 +hfcmulti +hfcpci +hfcsusb +hfc_usb +hfs +hfsplus +hgafb +hid +hid-a4tech +hid-apple +hid-appleir +hid-aureal +hid-axff +hid-belkin +hid-betopff +hid-cherry +hid-chicony +hid-cp2112 +hid-cypress +hid-dr +hid-elecom +hid-elo +hid-emsff +hid-ezkey +hid-gaff +hid-generic +hid-gt683r +hid-gyration +hid-holtekff +hid-holtek-kbd +hid-holtek-mouse +hid-hyperv +hid-icade +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 +hidp +hid-penmount +hid-petalynx +hid-picolcd +hid-pl +hid-plantronics +hid-primax +hid-prodikeys +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-iio-common +hid-sensor-incl-3d +hid-sensor-magn-3d +hid-sensor-press +hid-sensor-prox +hid-sensor-rotation +hid-sensor-trigger +hid-sjoy +hid-sony +hid-speedlink +hid-steelseries +hid-sunplus +hid-thingm +hid-tivo +hid-tmff +hid-topseed +hid-twinhan +hid-uclogic +hid-waltop +hid-wiimote +hid-xinmo +hid-zpff +hid-zydacron +hih6130 +hisax +hisax_fcpcipnp +hisax_isac +hisax_st5481 +hisi504_nand +hmc5843_core +hmc5843_i2c +hmc5843_spi +hmc6352 +hopper +horizon +hostap +hostap_cs +hostap_pci +hostap_plx +hp100 +hp_accel +hpfs +hpilo +hpsa +hptiop +hpwdt +hp-wireless +hp-wmi +hsi +hsi_char +hso +hsr +hsu_dma +hsu_dma_pci +htc-pasic3 +htu21 +huawei_cdc_ncm +hv_balloon +hv_netvsc +hv_storvsc +hv_utils +hv_vmbus +hwa-hc +hwa-rc +hwmon-vid +hwpoison-inject +hx8357 +hyperv_fb +hyperv-keyboard +hysdn +i1480-dfu-usb +i1480-est +i2400m +i2400m-usb +i2c-algo-bit +i2c-algo-pca +i2c-ali1535 +i2c-ali1563 +i2c-ali15x3 +i2c-amd756 +i2c-amd756-s4882 +i2c-amd8111 +i2c-cbus-gpio +i2c-cros-ec-tunnel +i2c-designware-core +i2c-designware-pci +i2c-designware-platform +i2c-diolan-u2c +i2c-dln2 +i2c-gpio +i2c-hid +i2c-i801 +i2c-isch +i2c-ismt +i2c-kempld +i2c-matroxfb +i2c-mux +i2c-mux-gpio +i2c-mux-pca9541 +i2c-mux-pca954x +i2c-mux-pinctrl +i2c-nforce2 +i2c-nforce2-s4985 +i2c-ocores +i2c-parport +i2c-parport-light +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 +i40e +i40evf +i5000_edac +i5100_edac +i5400_edac +i5500_temp +i5k_amb +i6300esb +i7300_edac +i7300_idle +i740fb +i7core_edac +i82092 +i82975x_edac +i915 +ib700wdt +ib_addr +ib_cm +ib_core +ib_ipath +ib_ipoib +ib_iser +ib_isert +ib_mad +ibmaem +ibmasm +ibmasr +ibmpex +ibm_rtl +ib_mthca +ib_qib +ib_sa +ib_srp +ib_srpt +ib_ucm +ib_umad +ib_uverbs +ichxrom +icplus +icp_multi +ics932s401 +ideapad-laptop +ideapad_slidebar +idma64 +idmouse +idt77252 +idtcps +idt_gen2 +ie31200_edac +ie6xx_wdt +ieee802154 +ieee802154_6lowpan +ieee802154_socket +ifb +iforce +igb +igbvf +igorplugusb +iguanair +iio_dummy +iio_hwmon +iio-trig-interrupt +iio-trig-periodic-rtc +iio-trig-sysfs +ii_pci20kc +ili210x +ili922x +ili9320 +imm +imon +ims-pcu +imx074 +ina209 +ina2xx +industrialio +industrialio-triggered-buffer +inet_diag +inexio +inftl +initio +input-leds +input-polldev +int3400_thermal +int3402_thermal +int3403_thermal +int340x_thermal_zone +int51x1 +intelfb +intel_ips +intel-lpss +intel-lpss-acpi +intel-lpss-pci +intel_menlow +intel_oaktrail +intel_pmc_ipc +intel_powerclamp +intel_qat +intel_quark_i2c_gpio +intel_rapl +intel-rng +intel-rst +intel-smartconnect +intel_soc_dts_iosf +intel_soc_dts_thermal +intel_vr_nor +interact +interval_tree_test +inv-mpu6050 +ioatdma +ioc4 +io_edgeport +io_ti +iowarrior +ip6_gre +ip6table_filter +ip6table_mangle +ip6table_nat +ip6table_raw +ip6_tables +ip6table_security +ip6t_ah +ip6t_eui64 +ip6t_frag +ip6t_hbh +ip6t_ipv6header +ip6t_MASQUERADE +ip6t_mh +ip6t_NPT +ip6t_REJECT +ip6t_rpfilter +ip6t_rt +ip6t_SYNPROXY +ip6_tunnel +ip6_udp_tunnel +ip6_vti +ipack +ipaq +ipcomp +ipcomp6 +ipddp +ipg +ip_gre +iphase +ipheth +ipip +ipmi_devintf +ipmi_msghandler +ipmi_poweroff +ipmi_si +ipmi_ssif +ipmi_watchdog +ipoctal +ipr +ips +ip_set +ip_set_bitmap_ip +ip_set_bitmap_ipmac +ip_set_bitmap_port +ip_set_hash_ip +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 +iptable_filter +iptable_mangle +iptable_nat +iptable_raw +ip_tables +iptable_security +ipt_ah +ipt_CLUSTERIP +ipt_ECN +ipt_MASQUERADE +ipt_REJECT +ipt_rpfilter +ipt_SYNPROXY +ip_tunnel +ipvlan +ip_vs +ip_vs_dh +ip_vs_fo +ip_vs_ftp +ip_vs_lblc +ip_vs_lblcr +ip_vs_lc +ip_vs_nq +ip_vs_pe_sip +ip_vs_rr +ip_vs_sed +ip_vs_sh +ip_vs_wlc +ip_vs_wrr +ip_vti +ipw +ipw2100 +ipw2200 +ipwireless +ipx +ircomm +ircomm-tty +irda +irda-usb +ir-hix5hd2 +ir-jvc-decoder +ir-kbd-i2c +irlan +ir-lirc-codec +ir-mce_kbd-decoder +ir-nec-decoder +irnet +ir-rc5-decoder +ir-rc6-decoder +ir-sanyo-decoder +ir-sharp-decoder +ir-sony-decoder +irtty-sir +ir-usb +ir-xmp-decoder +isci +iscsi_boot_sysfs +iscsi_ibft +iscsi_target_mod +iscsi_tcp +isdn +isdn_bsdcomp +isdnhdlc +isicom +isight_firmware +isl29003 +isl29018 +isl29020 +isl29028 +isl29125 +isl6271a-regulator +isl6405 +isl6421 +isl6423 +isl9305 +isofs +isp116x-hcd +isp1362-hcd +isp1704_charger +isp1760 +it87 +it8712f_wdt +it87_wdt +it913x +iTCO_vendor_support +iTCO_wdt +itd1000 +ite-cir +itg3200 +iuu_phoenix +ivtv +ivtv-alsa +ivtvfb +iw_c2 +iw_cm +iw_cxgb3 +iw_cxgb4 +iwl3945 +iwl4965 +iwldvm +iwlegacy +iwlmvm +iwlwifi +iw_nes +ix2505v +ixgb +ixgbe +ixgbevf +janz-cmodio +janz-ican3 +jc42 +jedec_probe +jffs2 +jfs +jitterentropy_rng +jmb38x_ms +jme +joydev +joydump +jr3_pci +jsa1212 +jsm +k10temp +k8temp +kafs +kalmia +kaweth +kb3886_bl +kbic +kbtab +kcomedilib +ke_counter +kempld-core +kempld_wdt +kernelcapi +keyspan +keyspan_pda +keyspan_remote +kfifo_buf +khazad +kingsun-sir +kl5kusb105 +kmx61 +ko2iblnd +kobil_sct +ks0108 +ks0127 +ks8842 +ks8851 +ks8851_mll +ks959-sir +ksdazzle-sir +ksocklnd +ksz884x +ktti +kvaser_pci +kvaser_usb +kvm +kvm-amd +kvm-intel +kxcjk-1013 +kxsd9 +kxtj9 +kyrofb +l1oip +l2tp_core +l2tp_debugfs +l2tp_eth +l2tp_ip +l2tp_ip6 +l2tp_netlink +l2tp_ppp +l440gx +l4f00242t03 +l64781 +lanai +lapb +lapbether +latch-addr-flash +lattice-ecp3-config +lcd +ld9040 +ldusb +lec +led-class-flash +leds-88pm860x +leds-adp5520 +leds-bd2802 +leds-blinkm +leds-clevo-mail +leds-da903x +leds-da9052 +leds-dac124s085 +leds-gpio +leds-lm3530 +leds-lm3533 +leds-lm355x +leds-lm3642 +leds-lp3944 +leds-lp8788 +leds-lp8860 +leds-lt3593 +leds-max8997 +leds-mc13783 +leds-menf21bmc +leds-pca9532 +leds-pca955x +leds-pca963x +leds-pm8941-wled +leds-pwm +leds-regulator +leds-ss4200 +leds-tca6507 +leds-tlc591xx +leds-wm831x-status +leds-wm8350 +ledtrig-backlight +ledtrig-camera +ledtrig-default-on +ledtrig-gpio +ledtrig-heartbeat +ledtrig-oneshot +ledtrig-timer +ledtrig-transient +legousbtower +lg2160 +lgdt3305 +lgdt3306a +lgdt330x +lgs8gxx +lg-vl600 +lib80211 +lib80211_crypt_ccmp +lib80211_crypt_tkip +lib80211_crypt_wep +libahci +libahci_platform +libceph +libcfs +libcomposite +libcrc32c +libcxgbi +libertas +libertas_cs +libertas_sdio +libertas_spi +libertas_tf +libertas_tf_usb +libfc +libfcoe +libipw +libiscsi +libiscsi_tcp +libore +libosd +libsas +lightning +lineage-pem +linear +liquidio +lirc_bt829 +lirc_dev +lirc_imon +lirc_parallel +lirc_sasem +lirc_serial +lirc_sir +lirc_zilog +lis3l02dq +lis3lv02d +lis3lv02d_i2c +litelink-sir +lkkbd +llc +llc2 +llite_lloop +lm25066 +lm3533-als +lm3533_bl +lm3533-core +lm3533-ctrlbank +lm3630a_bl +lm3639_bl +lm63 +lm70 +lm73 +lm75 +lm77 +lm78 +lm80 +lm83 +lm8323 +lm8333 +lm85 +lm87 +lm90 +lm92 +lm93 +lm95234 +lm95241 +lm95245 +lmc +lms283gf05 +lms501kf03 +lmv +lnbp21 +lnbp22 +lnet +lnet_selftest +lockd +locktorture +lov +lp +lp3943 +lp3971 +lp3972 +lp855x_bl +lp8727_charger +lp872x +lp8755 +lp8788_adc +lp8788_bl +lp8788-buck +lp8788-charger +lp8788-ldo +lpc_ich +lpc_sch +lpddr_cmds +lpfc +lru_cache +lrw +ltc2941-battery-gauge +ltc2945 +ltc2978 +ltc3589 +ltc4151 +ltc4215 +ltc4222 +ltc4245 +ltc4260 +ltc4261 +ltr501 +ltv350qv +lustre +lv5207lp +lvstest +lxt +lz4 +lz4_compress +lz4hc +lz4hc_compress +m25p80 +m2m-deinterlace +m52790 +m62332 +m88ds3103 +m88rs2000 +m88rs6000t +ma600-sir +mac80211 +mac80211_hwsim +mac802154 +macb +mac-celtic +mac-centeuro +mac-croatian +mac-cyrillic +mac-gaelic +mac-greek +mac_hid +machzwd +mac-iceland +mac-inuit +macmodes +mac-roman +mac-romanian +mac-turkish +macvlan +macvtap +mag3110 +magellan +mailbox-altera +mantis +mantis_core +map_absent +map_funcs +map_ram +map_rom +marvell +matrix-keymap +matrix_keypad +matroxfb_accel +matroxfb_base +matroxfb_crtc2 +matroxfb_DAC1064 +matroxfb_g450 +matroxfb_maven +matroxfb_misc +matroxfb_Ti3026 +matrox_w1 +max1027 +max1111 +max11801_ts +max1363 +max14577 +max14577_charger +max1586 +max16064 +max16065 +max1619 +max1668 +max17040_battery +max17042_battery +max197 +max2165 +max3100 +max3421-hcd +max34440 +max517 +max63xx_wdt +max6639 +max6642 +max6650 +max6697 +max6875 +max7359_keypad +max77693 +max77693_charger +max77693-haptic +max77843 +max77843-haptic +max8649 +max8660 +max8688 +max8903_charger +max8907 +max8907-regulator +max8925_bl +max8925_onkey +max8925_power +max8925-regulator +max8952 +max8973-regulator +max8997 +max8997_charger +max8997_haptic +max8998 +max8998_charger +mb862xxfb +mb86a16 +mb86a20s +mc13783-adc +mc13783-pwrbutton +mc13783-regulator +mc13783_ts +mc13892-regulator +mc13xxx-core +mc13xxx-i2c +mc13xxx-regulator-core +mc13xxx-spi +mc44s803 +m_can +mcb +mcb-pci +mce_amd_inj +mce-inject +mceusb +mcp2120-sir +mcp251x +mcp3021 +mcp320x +mcp3422 +mcp4725 +mcp4922 +mcryptd +mcs5000_ts +mcs7780 +mcs7830 +mcs_touchkey +mct_u232 +md4 +mdc +mdc800 +md-cluster +mdio +mdio-bcm-unimac +mdio-bitbang +mdio-gpio +mdio-octeon +me4000 +me_daq +media +megaraid +megaraid_mbox +megaraid_mm +megaraid_sas +mei +mei-me +mei_phy +mei-txe +memory-notifier-error-inject +memstick +mena21_wdt +menf21bmc +menf21bmc_hwmon +menf21bmc_wdt +men_z135_uart +men_z188_adc +metronomefb +metro-usb +meye +mf6x4 +mga +mgc +mic_bus +mic_card +michael_mic +mic_host +micrel +microread +microread_i2c +microread_mei +microtek +mic_x100_dma +mii +minix +mip6 +mISDN_core +mISDN_dsp +mISDNinfineon +mISDNipac +mISDNisar +mite +mk712 +mkiss +mlx4_core +mlx4_en +mlx4_ib +mlx5_core +mlx5_ib +mlx90614 +mma8450 +mma8452 +mma9551 +mma9551_core +mma9553 +mmc35240 +mmc_block +mmc_spi +mms114 +mn88472 +mn88473 +mos7720 +mos7840 +moxa +mpc624 +mpl115 +mpl3115 +mpls_gso +mpls_router +mpoa +mpr121_touchkey +mpt2sas +mpt3sas +mptbase +mptctl +mptfc +mptlan +mptsas +mptscsih +mptspi +mpu3050 +mrf24j40 +mrp +ms5611_core +ms5611_i2c +ms5611_spi +ms_block +msdos +msi001 +msi2500 +msi-laptop +msi-wmi +msp3400 +mspro_block +msr +mt2060 +mt2063 +mt20xx +mt2131 +mt2266 +mt29f_spinand +mt312 +mt352 +mt6397-core +mt6397-regulator +mt7601u +mt9m001 +mt9m111 +mt9t031 +mt9t112 +mt9v011 +mt9v022 +mtd +mtd_blkdevs +mtdblock +mtdblock_ro +mtd_dataflash +mtdoops +mtdram +mtdswap +mtip32xx +mtk-sd +mtouch +multipath +multiq3 +musb_hdrc +mvmdio +mvsas +mv_u3d_core +mv_udc +mvumi +mwave +mwifiex +mwifiex_pcie +mwifiex_sdio +mwifiex_usb +mwl8k +mxb +mxl111sf-demod +mxl111sf-tuner +mxl301rf +mxl5005s +mxl5007t +mxm-wmi +mxser +mxuport +myri10ge +n411 +nand +nand_bch +nand_ecc +nand_ids +nandsim +national +natsemi +nau7802 +navman +nbd +nci +nci_uart +ncpfs +nct6683 +nct6775 +nct7802 +nct7904 +nd_blk +nd_btt +nd_pmem +ne2k-pci +neofb +net1080 +net2272 +net2280 +netconsole +netjet +netlink_diag +netrom +nettel +netxen_nic +newtonkbd +nfc +nfc_digital +nfcmrvl +nfcmrvl_uart +nfcmrvl_usb +nf_conntrack +nf_conntrack_amanda +nf_conntrack_broadcast +nf_conntrack_ftp +nf_conntrack_h323 +nf_conntrack_ipv4 +nf_conntrack_ipv6 +nf_conntrack_irc +nf_conntrack_netbios_ns +nf_conntrack_netlink +nf_conntrack_pptp +nf_conntrack_proto_dccp +nf_conntrack_proto_gre +nf_conntrack_proto_sctp +nf_conntrack_proto_udplite +nf_conntrack_sane +nf_conntrack_sip +nf_conntrack_snmp +nf_conntrack_tftp +nfcsim +nfcwilink +nf_defrag_ipv4 +nf_defrag_ipv6 +nfit +nf_log_arp +nf_log_bridge +nf_log_common +nf_log_ipv4 +nf_log_ipv6 +nf_nat +nf_nat_amanda +nf_nat_ftp +nf_nat_h323 +nf_nat_ipv4 +nf_nat_ipv6 +nf_nat_irc +nf_nat_masquerade_ipv4 +nf_nat_masquerade_ipv6 +nf_nat_pptp +nf_nat_proto_dccp +nf_nat_proto_gre +nf_nat_proto_sctp +nf_nat_proto_udplite +nf_nat_redirect +nf_nat_sip +nf_nat_snmp_basic +nf_nat_tftp +nfnetlink +nfnetlink_acct +nfnetlink_cthelper +nfnetlink_cttimeout +nfnetlink_log +nfnetlink_queue +nf_reject_ipv4 +nf_reject_ipv6 +nfs +nfs_acl +nfsd +nfs_layout_flexfiles +nfs_layout_nfsv41_files +nfsv2 +nfsv3 +nfsv4 +nf_synproxy_core +nf_tables +nf_tables_arp +nf_tables_bridge +nf_tables_inet +nf_tables_ipv4 +nf_tables_ipv6 +nf_tables_netdev +nft_chain_nat_ipv4 +nft_chain_nat_ipv6 +nft_chain_route_ipv4 +nft_chain_route_ipv6 +nft_compat +nft_counter +nft_ct +nft_exthdr +nft_hash +nftl +nft_limit +nft_log +nft_masq +nft_masq_ipv4 +nft_masq_ipv6 +nft_meta +nft_meta_bridge +nft_nat +nft_queue +nft_rbtree +nft_redir +nft_redir_ipv4 +nft_redir_ipv6 +nft_reject +nft_reject_bridge +nft_reject_inet +nft_reject_ipv4 +nft_reject_ipv6 +ngene +n_gsm +nhc_dest +nhc_fragment +nhc_hop +nhc_ipv6 +nhc_mobility +nhc_routing +nhc_udp +n_hdlc +ni_6527 +ni_65xx +ni_660x +ni_670x +ni_at_a2150 +ni_at_ao +ni_atmio +ni_atmio16d +nicpf +nicstar +nicvf +ni_daq_700 +ni_daq_dio24 +ni_labpc +ni_labpc_common +ni_labpc_cs +ni_labpc_isadma +ni_labpc_pci +nilfs2 +ni_mio_cs +ni_pcidio +ni_pcimio +ni_tio +ni_tiocmd +niu +ni_usb6501 +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 +nosy +notifier-error-inject +nouveau +nozomi +n_r3964 +ns558 +ns83820 +nsc-ircc +ntb +ntb_hw_intel +ntb_netdev +ntb_pingpong +ntb_tool +ntb_transport +ntc_thermistor +ntfs +n_tracerouter +n_tracesink +null_blk +nuvoton-cir +nvidiafb +nvme +nvram +nv_tco +nxp-nci +nxp-nci_i2c +nxt200x +nxt6000 +obdclass +obdecho +objlayoutdriver +ocfb +ocfs2 +ocfs2_dlm +ocfs2_dlmfs +ocfs2_nodemanager +ocfs2_stackglue +ocfs2_stack_o2cb +ocfs2_stack_user +ocrdma +of_xilinx_wdt +old_belkin-sir +omfs +omninet +on20 +on26 +onenand +opencores-kbd +openvswitch +oprofile +opticon +option +or51132 +or51211 +orinoco +orinoco_cs +orinoco_nortel +orinoco_plx +orinoco_tmd +orinoco_usb +osc +osd +osdblk +osst +oti6858 +ov2640 +ov5642 +ov6650 +ov7640 +ov7670 +ov772x +ov9640 +ov9740 +overlay +oxu210hp-hcd +ozwpan +p4-clockmod +p54common +p54pci +p54spi +p54usb +p8022 +p8023 +padlock-aes +padlock-sha +palmas-pwrbutton +palmas-regulator +panasonic-laptop +pandora_bl +panel +paride +parkbd +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 +pc300too +pc87360 +pc87413_wdt +pc87427 +pcap_keys +pcap-regulator +pcap_ts +pcbc +pcd +pcf50633 +pcf50633-adc +pcf50633-backlight +pcf50633-charger +pcf50633-gpio +pcf50633-input +pcf50633-regulator +pcf8574_keypad +pcf8591 +pch_udc +pci +pci200syn +pcips2 +pci-stub +pcl711 +pcl724 +pcl726 +pcl730 +pcl812 +pcl816 +pcl818 +pcm3724 +pcmad +pcmcia +pcmcia_core +pcmciamtd +pcmcia_rsrc +pcmda12 +pcmmio +pcmuio +pcnet32 +pcnet_cs +pcrypt +pcspkr +pcwd_pci +pcwd_usb +pd +pd6729 +pda_power +pdc_adma +peak_pci +peak_pcmcia +peak_usb +pegasus +penmount +percpu_test +pf +pfuze100-regulator +pg +phantom +phonet +phram +phy-bcm-kona-usb2 +phy-exynos-usb2 +phy-gpio-vbus-usb +phy-isp1301 +phy-pxa-28nm-hsic +phy-pxa-28nm-usb2 +physmap +phy-tahvo +phy-tusb1210 +pinctrl-cherryview +pinctrl-intel +pinctrl-sunrisepoint +pixcir_i2c_ts +pkcs7_message +pkcs7_test_key +pktcdvd +pktgen +pl2303 +platform_lcd +plat_nand +plat-ram +plip +plusb +pluto2 +plx_pci +pm2fb +pm3fb +pm80xx +pmbus +pmbus_core +pmc551 +pmcraid +pm-notifier-error-inject +pn533 +pn544 +pn544_i2c +pn544_mei +pn_pep +poly1305_generic +port100 +powermate +powr1220 +ppa +ppdev +ppp_async +ppp_deflate +ppp_mppe +pppoatm +pppoe +pppox +ppp_synctty +pps_core +pps-gpio +pps-ldisc +pps_parport +pptp +prism2_usb +processor_thermal_device +ps2mult +psmouse +psnap +pt +ptlrpc +ptp +punit_atom_debug +pvpanic +pvrusb2 +pwc +pwm-beeper +pwm_bl +pwm-lp3943 +pwm-lpss +pwm-lpss-pci +pwm-lpss-platform +pwm-regulator +pwm-twl +pwm-twl-led +pxa27x_udc +qat_dh895xcc +qcaux +qcom-spmi-iadc +qcom_spmi-regulator +qcom-spmi-vadc +qcserial +qinfo_probe +qla1280 +qla2xxx +qla3xxx +qla4xxx +qlcnic +qlge +qlogic_cs +qlogicfas408 +qm1d1c0042 +qmi_wwan +qnx4 +qnx6 +qsemi +qt1010 +qt1070 +qt2160 +quatech2 +quatech_daqp_cs +quota_tree +quota_v1 +quota_v2 +qxl +r128 +r592 +r6040 +r8152 +r8169 +r8188eu +r8192e_pci +r8192u_usb +r820t +r852 +r8712u +r8723au +r8a66597-hcd +r8a66597-udc +radeon +radeonfb +radio-bcm2048 +radio-i2c-si470x +radio-keene +radio-ma901 +radio-maxiradio +radio-mr800 +radio-platform-si4713 +radio-raremono +radio-shark +radio-si476x +radio-tea5764 +radio-usb-si470x +radio-usb-si4713 +radio-wl1273 +raid0 +raid1 +raid10 +raid456 +raid6_pq +raid6test +raid_class +ramoops +raw +ray_cs +rbd +rbtree_test +rc5t583-regulator +rc-adstech-dvb-t-pci +rc-alink-dtu-m +rc-anysee +rc-apac-viewcomp +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-behold +rc-behold-columbus +rc-budget-ci-old +rc-cinergy +rc-cinergy-1400 +rc-core +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-dvbsky +rc-em-terratec +rc-encore-enltv +rc-encore-enltv2 +rc-encore-enltv-fm53 +rc-evga-indtube +rc-eztv +rc-flydvb +rc-flyvideo +rc-fusionhdtv-mce +rc-gadmei-rm008z +rc-genius-tvgo-a11mce +rc-gotview7135 +rc-hauppauge +rc-imon-mce +rc-imon-pad +rc-iodata-bctv7e +rc-it913x-v1 +rc-it913x-v2 +rc-kaiomy +rc-kworld-315u +rc-kworld-pc150u +rc-kworld-plus-tv-analog +rc-leadtek-y04g0051 +rc-lirc +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-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-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-twinhan1027 +rc-twinhan-dtv-cab-ci +rc-videomate-m1f +rc-videomate-s350 +rc-videomate-tv-pvr +rc-winfast +rc-winfast-usbii-deluxe +rdc321x-southbridge +rdma_cm +rdma_ucm +rds +rds_rdma +rds_tcp +realtek +redboot +redrat3 +reed_solomon +regmap-spmi +regulator-haptic +reiserfs +remoteproc +retu-mfd +retu-pwrbutton +retu_wdt +rfc1051 +rfc1201 +rfcomm +rfd_ftl +rfkill-gpio +rfkill-regulator +rio500 +rionet +rio-scan +rivafb +rj54n1cb0c +rmd128 +rmd160 +rmd256 +rmd320 +rn5t618 +rn5t618-regulator +rn5t618_wdt +rndis_host +rndis_wlan +rocket +romfs +rose +rotary_encoder +rp2 +rpcrdma +rpcsec_gss_krb5 +rsa_generic +rsi_91x +rsi_sdio +rsi_usb +rsxx +rt2400pci +rt2500pci +rt2500usb +rt2800lib +rt2800mmio +rt2800pci +rt2800usb +rt2x00lib +rt2x00mmio +rt2x00pci +rt2x00usb +rt5033 +rt5033_battery +rt5033-regulator +rt61pci +rt73usb +rt9455_charger +rtc-88pm80x +rtc-88pm860x +rtc-ab3100 +rtc-ab-b5ze-s3 +rtc-abx80x +rtc-bq32k +rtc-bq4802 +rtc-da9052 +rtc-da9055 +rtc-da9063 +rtc-ds1286 +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-ds3234 +rtc-em3027 +rtc-fm3130 +rtc-hid-sensor-time +rtc-isl12022 +rtc-isl12057 +rtc-isl1208 +rtc-lp8788 +rtc-m41t80 +rtc-m41t93 +rtc-m41t94 +rtc-m48t35 +rtc-m48t59 +rtc-m48t86 +rtc-max6900 +rtc-max6902 +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-pcf8563 +rtc-pcf8583 +rtc-r9701 +rtc-rc5t583 +rtc-rp5c01 +rtc-rs5c348 +rtc-rs5c372 +rtc-rv3029c2 +rtc-rx4581 +rtc-rx8025 +rtc-rx8581 +rtc-s35390a +rtc-s5m +rtc-stk17ta8 +rtc-tps6586x +rtc-tps65910 +rtc-tps80031 +rtc-twl +rtc-v3020 +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 +rtl8723ae +rtl8723be +rtl8723-common +rtl8821ae +rtllib +rtllib_crypt_ccmp +rtllib_crypt_tkip +rtllib_crypt_wep +rtl_pci +rtl_usb +rtlwifi +rts5208 +rtsx_pci +rtsx_pci_ms +rtsx_pci_sdmmc +rtsx_usb +rtsx_usb_ms +rtsx_usb_sdmmc +rx51_battery +rxkad +s1d13xxxfb +s2250 +s2255drv +s2io +s2mpa01 +s2mps11 +s3fb +s526 +s5h1409 +s5h1411 +s5h1420 +s5m8767 +s626 +s6e63m0 +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 +salsa20-x86_64 +samsung-keypad +samsung-laptop +samsung-q10 +samsung-sxgbe +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 +savage +savagefb +sb1000 +sbc60xxwdt +sbc_epx_c3 +sbc_fitpc2_wdt +sbc_gxx +sb_edac +sbni +sbp_target +sbs +sbs-battery +sbshc +sc1200wdt +sc16is7xx +sc92031 +sca3000 +scb2_flash +sch311x_wdt +sch5627 +sch5636 +sch56xx-common +sch_atm +sch_cbq +sch_choke +sch_codel +sch_drr +sch_dsmark +sch_fq +sch_fq_codel +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_tbf +sch_teql +scif +scif_bus +scsi_debug +scsi_dh +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_probe +sdhci +sdhci-acpi +sdhci-pci +sdhci-pltfm +sdio_uart +sdricoh_cs +sedlbauer_cs +seed +sensorhub +seqiv +ser_gigaset +serial2002 +serial_cs +serio_raw +sermouse +serpent-avx2 +serpent-avx-x86_64 +serpent_generic +serpent-sse2-x86_64 +serport +ses +sfc +sha1-mb +sha1-ssse3 +sha256-ssse3 +sha512-ssse3 +shark2 +shpchp +sht15 +sht21 +shtc1 +sh_veu +si2157 +si2165 +si2168 +si21xx +si4713 +si476x-core +si7005 +si7020 +sidewinder +sierra +sierra_net +sil164 +sir-dev +sis +sis190 +sis5595 +sis900 +sis-agp +sisfb +sisusbvga +sit +sja1000 +sja1000_isa +sja1000_platform +skd +skfp +skge +sky2 +sky81452 +sky81452-backlight +sky81452-regulator +sl811_cs +sl811-hcd +slcan +slicoss +slip +slram +sm501 +sm501fb +sm750fb +sm7xxfb +smb347-charger +smc91c92_cs +sm_common +sm_ftl +smipcie +smm665 +smsc +smsc37b787_wdt +smsc47b397 +smsc47m1 +smsc47m192 +smsc75xx +smsc911x +smsc9420 +smsc95xx +smsc-ircc2 +smscufx +smsdvb +smsmdtv +smssdio +smsusb +snd +snd-ac97-codec +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-firewire-lib +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-intel8x0 +snd-intel8x0m +snd-intel-sst-acpi +snd-intel-sst-core +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-pcm-oss +snd-pcsp +snd-pcxhr +snd-pdaudiocf +snd-portman2x4 +snd-pt2258 +snd-rawmidi +snd-riptide +snd-rme32 +snd-rme96 +snd-rme9652 +snd-sb-common +snd-scs1x +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-ac97 +snd-soc-adau1701 +snd-soc-ak4104 +snd-soc-ak4554 +snd-soc-ak4642 +snd-soc-ak5386 +snd-soc-alc5623 +snd-soc-core +snd-soc-cs35l32 +snd-soc-cs4265 +snd-soc-cs4270 +snd-soc-cs4271 +snd-soc-cs4271-i2c +snd-soc-cs4271-spi +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-es8328 +snd-soc-fsl-asrc +snd-soc-fsl-esai +snd-soc-fsl-sai +snd-soc-fsl-spdif +snd-soc-fsl-ssi +snd-soc-hdmi-codec +snd-soc-imx-audmux +snd-soc-max98090 +snd-soc-pcm1681 +snd-soc-pcm1792a-codec +snd-soc-pcm512x +snd-soc-pcm512x-i2c +snd-soc-pcm512x-spi +snd-soc-rl6231 +snd-soc-rl6347a +snd-soc-rt286 +snd-soc-rt5631 +snd-soc-rt5640 +snd-soc-rt5645 +snd-soc-rt5670 +snd-soc-sgtl5000 +snd-soc-si476x +snd-soc-sigmadsp +snd-soc-sigmadsp-i2c +snd-soc-simple-card +snd-soc-spdif-rx +snd-soc-spdif-tx +snd-soc-ssm2602 +snd-soc-ssm2602-i2c +snd-soc-ssm2602-spi +snd-soc-ssm4567 +snd-soc-sst-acpi +snd-soc-sst-baytrail-pcm +snd-soc-sst-broadwell +snd-soc-sst-bytcr-rt5640 +snd-soc-sst-byt-max98090-mach +snd-soc-sst-byt-rt5640-mach +snd-soc-sst-cht-bsw-max98090_ti +snd-soc-sst-cht-bsw-rt5645 +snd-soc-sst-cht-bsw-rt5672 +snd-soc-sst-dsp +snd-soc-sst-haswell +snd-soc-sst-haswell-pcm +snd-soc-sst-ipc +snd-soc-sst-mfld-platform +snd-soc-sta32x +snd-soc-sta350 +snd-soc-tas2552 +snd-soc-tas5086 +snd-soc-tas571x +snd-soc-tfa9879 +snd-soc-tlv320aic23 +snd-soc-tlv320aic23-i2c +snd-soc-tlv320aic23-spi +snd-soc-tlv320aic31xx +snd-soc-tlv320aic3x +snd-soc-tpa6130a2 +snd-soc-ts3a227e +snd-soc-wm8510 +snd-soc-wm8523 +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-wm8804 +snd-soc-wm8804-i2c +snd-soc-wm8804-spi +snd-soc-wm8903 +snd-soc-wm8962 +snd-soc-wm8978 +snd-soc-xtfpga-i2s +snd-sonicvibes +snd-timer +snd-trident +snd-ua101 +snd-usb-6fire +snd-usb-audio +snd-usb-caiaq +snd-usb-hiface +snd-usb-line6 +snd-usbmidi-lib +snd-usb-pod +snd-usb-podhd +snd-usb-toneport +snd-usb-us122l +snd-usb-usx2y +snd-usb-variax +snd-util-mem +snd-via82xx +snd-via82xx-modem +snd-virmidi +snd-virtuoso +snd-vx222 +snd-vx-lib +snd-vxpocket +snd-ymfpci +snic +soc_button_array +soc_camera +soc_camera_platform +soc_mediabus +softdog +softing +softing_cs +solo6x10 +solos-pci +sony-btf-mpx +sony-laptop +soundcore +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-bitbang +spi-butterfly +spi-cadence +spidev +spi-dln2 +spi-dw +spi-dw-midpci +spi-dw-mmio +spi-gpio +spi_ks8995 +spi-lm70llp +spi-nor +spi-oc-tiny +spi-pxa2xx-pci +spi-pxa2xx-platform +spi-sc18is602 +spi-tle62x0 +spi-xcomm +spi-zynqmp-gqspi +spmi +squashfs +sr9700 +sr9800 +ssb +ssb-hcd +ssfdc +ssp_accel_sensor +ssp_gyro_sensor +ssp_iio +sst25l +sstfb +ssu100 +st +st1232 +st21nfca_hci +st21nfca_i2c +st_accel +st_accel_i2c +st_accel_spi +starfire +stb0899 +stb6000 +stb6100 +st_drv +ste10Xp +ste_modem_rproc +stex +st_gyro +st_gyro_i2c +st_gyro_spi +stinger +stir4200 +stk1160 +stk3310 +stk8312 +stk8ba50 +stkwebcam +st_magn +st_magn_i2c +st_magn_spi +stmmac +stmmac-platform +st-nci +st-nci_i2c +stowaway +stp +st_pressure +st_pressure_i2c +st_pressure_spi +streamzap +st_sensors +st_sensors_i2c +st_sensors_spi +stv0288 +stv0297 +stv0299 +stv0367 +stv0900 +stv090x +stv6110 +stv6110x +sundance +sungem +sungem_phy +sunhme +suni +sunkbd +sunrpc +sur40 +svgalib +sx8 +sx8654 +sx9500 +sym53c500_cs +sym53c8xx +symbolserial +synaptics_i2c +synaptics_i2c_rmi4 +synaptics_usb +synclink +synclink_cs +synclink_gt +synclinkmp +syscopyarea +sysfillrect +sysimgblt +sysv +t1pci +t5403 +target_core_file +target_core_iblock +target_core_mod +target_core_pscsi +target_core_user +tc74 +tc90522 +tca6416-keypad +tca8418_keypad +tcm_fc +tcm_loop +tcm_qla2xxx +tcm_usb_gadget +tcp_bic +tcp_cdg +tcp_dctcp +tcp_diag +tcp_highspeed +tcp_htcp +tcp_hybla +tcp_illinois +tcp_lp +tcp_probe +tcp_scalable +tcp_vegas +tcp_veno +tcp_westwood +tcp_yeah +tcrypt +tcs3414 +tcs3472 +tda10021 +tda10023 +tda10048 +tda1004x +tda10071 +tda10086 +tda18212 +tda18218 +tda18271 +tda18271c2dd +tda665x +tda7432 +tda8083 +tda8261 +tda826x +tda827x +tda8290 +tda9840 +tda9887 +tda998x +tdfx +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 +tekram-sir +teles_cs +test_bpf +test_firmware +test-hexdump +test-kstrtox +test_module +test_power +test-string_helpers +test_udelay +test_user_copy +tg3 +tgr192 +thinkpad_acpi +thmc50 +thunder_bgx +thunderbolt +ti-adc081c +ti-adc128s052 +ti_am335x_adc +ti_am335x_tsc +ti_am335x_tscadc +ti_dac7512 +tifm_7xx1 +tifm_core +tifm_ms +tifm_sd +timeriomem-rng +tipc +ti_usb_3410_5052 +tlan +tlclk +tm6000 +tm6000-alsa +tm6000-dvb +tmdc +tmem +tmp006 +tmp102 +tmp103 +tmp401 +tmp421 +toim3232-sir +topstar-laptop +torture +toshiba_acpi +toshiba_bluetooth +toshiba_haps +toshsd +touchit213 +touchright +touchwin +tpci200 +tpm_atmel +tpm_crb +tpm_i2c_atmel +tpm_i2c_infineon +tpm_i2c_nuvoton +tpm_infineon +tpm_nsc +tpm-rng +tpm_st33zp24 +tpm_st33zp24_i2c +tpm_st33zp24_spi +tps40422 +tps51632-regulator +tps6105x +tps6105x-regulator +tps62360-regulator +tps65010 +tps65023-regulator +tps6507x +tps6507x-regulator +tps6507x-ts +tps65090-charger +tps65090-regulator +tps65217 +tps65217_bl +tps65217-regulator +tps65218 +tps65218-pwrbutton +tps6524x-regulator +tps6586x-regulator +tps65910-regulator +tps65912-regulator +tps80031-regulator +trancevibrator +trf7970a +tridentfb +ts2020 +ts_bm +tsc2005 +tsc2007 +tsc40 +ts_fsm +tsi568 +tsi57x +tsi721_mport +ts_kmp +tsl2550 +tsl2563 +tsl2583 +tsl2x7x_core +tsl4531 +ttm +ttpci-eeprom +ttusb_dec +ttusbdecfe +ttusbir +tua6100 +tua9001 +tulip +tuner +tuner-simple +tuner-types +tuner-xc2028 +tunnel4 +tunnel6 +turbografx +tvaudio +tveeprom +tvp5150 +tw2804 +tw68 +tw9903 +tw9906 +tw9910 +twidjoy +twl4030_charger +twl4030_keypad +twl4030-madc +twl4030_madc_battery +twl4030-madc-hwmon +twl4030-pwrbutton +twl4030-vibra +twl4030_wdt +twl6030-gpadc +twl6040-vibra +twl-regulator +twofish-avx-x86_64 +twofish_common +twofish_generic +twofish-x86_64 +twofish-x86_64-3way +typhoon +u132-hcd +uas +ubi +ubifs +ucb1400_core +ucb1400_ts +ucd9000 +ucd9200 +uda1342 +udc-core +udf +udl +udlfb +udp_diag +udp_tunnel +ueagle-atm +u_ether +ufs +ufshcd +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 +uli526x +ulpi +umc +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 +unioxx5 +unix_diag +upd64031a +upd64083 +uPD98402 +usb3503 +usb_8dev +usb8xxx +usbatm +usb_debug +usbdux +usbduxfast +usbduxsigma +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_uac1 +usb_f_uac2 +usb_f_uvc +usb_gigaset +usbhid +usbip-core +usbip-host +usbkbd +usblcd +usbled +usblp +usbmon +usbmouse +usbnet +usbserial +usb-serial-simple +usbsevseg +usb-storage +usbtest +usbtmc +usbtouchscreen +usbtv +usbvision +usb_wwan +usdhi6rol0 +u_serial +userspace-consumer +ushc +usnic_verbs +uss720 +uvcvideo +uvesafb +uwb +v4l2-common +v4l2-dv-timings +v4l2-flash-led-class +v4l2-mem2mem +vboxguest +vboxsf +vboxvideo +vcan +vcnl4000 +ves1820 +ves1x93 +veth +vfio +vfio_iommu_type1 +vfio-pci +vfio_virqfd +vga16fb +vgastate +vgem +vgg2432a4 +vhci-hcd +vhost +vhost_net +vhost_scsi +via +via686a +via-camera +via-cputemp +viafb +via-ircc +via-rhine +via-rng +via-sdmmc +via-velocity +via_wdt +video +videobuf2-core +videobuf2-dma-contig +videobuf2-dma-sg +videobuf2-dvb +videobuf2-memops +videobuf2-vmalloc +videobuf-core +videobuf-dma-sg +videobuf-dvb +videobuf-vmalloc +videocodec +videodev +vim2m +viperboard +viperboard_adc +virt-dma +virtio-gpu +virtio_input +virtio-rng +virtio_scsi +virtual +visor +visorbus +visornic +vitesse +vivid +vlsi_ir +vmac +vme_ca91cx42 +vme_pio2 +vme_tsi148 +vme_user +vme_vmivme7805 +vmk80xx +vmlfb +vmw_balloon +vmwgfx +vmw_pvscsi +vmw_vmci +vmw_vsock_vmci_transport +vmxnet3 +vp27smpx +vport-geneve +vport-gre +vport-vxlan +vpx3220 +vringh +vsock +vsxxxaa +vt1211 +vt6655_stage +vt6656_stage +vt8231 +vt8623fb +vub300 +vx855 +vxge +vxlan +w1_bq27000 +w1_ds2406 +w1_ds2408 +w1_ds2413 +w1_ds2423 +w1_ds2431 +w1_ds2433 +w1_ds2760 +w1_ds2780 +w1_ds2781 +w1_ds28e04 +w1-gpio +w1_smem +w1_therm +w5100 +w5300 +w6692 +w83627ehf +w83627hf +w83627hf_wdt +w83781d +w83791d +w83792d +w83793 +w83795 +w83877f_wdt +w83977af_ir +w83977f_wdt +w83l785ts +w83l786ng +wacom +wacom_i2c +wacom_serial4 +wacom_w8001 +wafer5823wdt +walkera0701 +wanxl +warrior +wbsd +wcn36xx +wd719x +wdt87xx_i2c +wdt_pci +whci +whci-hcd +whc-rc +whiteheat +wil6210 +wimax +winbond-840 +winbond-cir +wire +wishbone-serial +wl1251 +wl1251_sdio +wl1251_spi +wl1273-core +wl12xx +wl18xx +wl3501_cs +wlcore +wlcore_sdio +wlcore_spi +wm831x_backup +wm831x_bl +wm831x-dcdc +wm831x-hwmon +wm831x-isink +wm831x-ldo +wm831x-on +wm831x_power +wm831x-ts +wm831x_wdt +wm8350-hwmon +wm8350_power +wm8350-regulator +wm8350_wdt +wm8400-regulator +wm8739 +wm8775 +wm8994-core +wm8994-irq +wm8994-regmap +wm8994-regulator +wm97xx-ts +wmi +wp512 +wusb-cbaf +wusbcore +wusb-wa +x25 +x25_asy +x38_edac +x86_pkg_temp_thermal +xc4000 +xc5000 +xcbc +xen-blkback +xen-evtchn +xen-fbfront +xenfs +xen-gntalloc +xen-gntdev +xen-kbdfront +xen-netback +xen-pciback +xen-pcifront +xen-privcmd +xen-scsiback +xen-scsifront +xen-tpmfront +xen_wdt +xfrm4_mode_beet +xfrm4_mode_transport +xfrm4_mode_tunnel +xfrm4_tunnel +xfrm6_mode_beet +xfrm6_mode_ro +xfrm6_mode_transport +xfrm6_mode_tunnel +xfrm6_tunnel +xfrm_algo +xfrm_ipcomp +xfrm_user +xfs +xgifb +xhci-plat-hcd +xillybus_core +xillybus_pcie +xirc2ps_cs +xircom_cb +xor +xpad +xsens_mt +x_tables +xt_addrtype +xt_AUDIT +xt_bpf +xt_cgroup +xt_CHECKSUM +xt_CLASSIFY +xt_cluster +xt_comment +xt_connbytes +xt_connlabel +xt_connlimit +xt_connmark +xt_CONNSECMARK +xt_conntrack +xt_cpu +xt_CT +xt_dccp +xt_devgroup +xt_dscp +xt_DSCP +xt_ecn +xt_esp +xt_hashlimit +xt_helper +xt_hl +xt_HL +xt_HMARK +xt_IDLETIMER +xt_ipcomp +xt_iprange +xt_ipvs +xtkbd +xt_l2tp +xt_LED +xt_length +xt_limit +xt_LOG +xt_mac +xt_mark +xt_multiport +xt_nat +xt_NETMAP +xt_nfacct +xt_NFLOG +xt_NFQUEUE +xt_osf +xt_owner +xt_physdev +xt_pkttype +xt_policy +xt_quota +xt_rateest +xt_RATEEST +xt_realm +xt_recent +xt_REDIRECT +xts +xt_sctp +xt_SECMARK +xt_set +xt_socket +xt_state +xt_statistic +xt_string +xt_tcpmss +xt_TCPMSS +xt_TCPOPTSTRIP +xt_tcpudp +xt_TEE +xt_time +xt_TPROXY +xt_TRACE +xt_u32 +xusbatm +xz_dec_test +yam +yealink +yellowfin +yenta_socket +yurex +zatm +zaurus +zd1201 +zd1211rw +zforce_ts +zhenhua +zl10036 +zl10039 +zl10353 +zl6100 +zlib +zr36016 +zr36050 +zr36060 +zr36067 +zr364xx +zram --- linux-raspi2-4.2.0.orig/debian.master/abi/4.2.0-26.31/arm64/generic +++ linux-raspi2-4.2.0/debian.master/abi/4.2.0-26.31/arm64/generic @@ -0,0 +1,18363 @@ +EXPORT_SYMBOL arch/arm64/crypto/aes-ce-cipher 0xa2125399 ce_aes_expandkey +EXPORT_SYMBOL arch/arm64/crypto/aes-ce-cipher 0xbe0fab83 ce_aes_setkey +EXPORT_SYMBOL crypto/gf128mul 0x0c2f123f gf128mul_4k_bbe +EXPORT_SYMBOL crypto/gf128mul 0x1068004b gf128mul_bbe +EXPORT_SYMBOL crypto/gf128mul 0x2f2889a0 gf128mul_init_64k_lle +EXPORT_SYMBOL crypto/gf128mul 0x3755f990 gf128mul_init_64k_bbe +EXPORT_SYMBOL crypto/gf128mul 0x384ef9ce gf128mul_64k_bbe +EXPORT_SYMBOL crypto/gf128mul 0x56af0dbd gf128mul_x_ble +EXPORT_SYMBOL crypto/gf128mul 0x83581089 gf128mul_init_4k_lle +EXPORT_SYMBOL crypto/gf128mul 0x9b2560b9 gf128mul_init_4k_bbe +EXPORT_SYMBOL crypto/gf128mul 0x9e13f6f6 gf128mul_lle +EXPORT_SYMBOL crypto/gf128mul 0xbd17a0df gf128mul_4k_lle +EXPORT_SYMBOL crypto/gf128mul 0xc0890413 gf128mul_64k_lle +EXPORT_SYMBOL crypto/gf128mul 0xd60736ec gf128mul_free_64k +EXPORT_SYMBOL crypto/mcryptd 0x7726d288 mcryptd_arm_flusher +EXPORT_SYMBOL crypto/xor 0x5b6c00e6 xor_blocks +EXPORT_SYMBOL drivers/acpi/nfit 0xa7e9a159 to_nfit_uuid +EXPORT_SYMBOL drivers/atm/suni 0x99a6ea19 suni_init +EXPORT_SYMBOL drivers/bcma/bcma 0x405ff233 bcma_core_dma_translation +EXPORT_SYMBOL drivers/bcma/bcma 0x7ed1d277 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/bluetooth/btbcm 0x77ae45f5 btbcm_patchram +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x1348760d ipmi_request_settime +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x16dcec76 ipmi_set_my_address +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x1a10c898 ipmi_set_maintenance_mode +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x1ab20d62 ipmi_register_smi +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x1aba5db8 ipmi_unregister_smi +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x1fae3bac ipmi_addr_src_to_str +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x40f2b10c ipmi_alloc_smi_msg +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x423b776a ipmi_create_user +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x4c971bec ipmi_smi_msg_received +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x524f6f51 ipmi_get_my_address +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x5e80f37c ipmi_unregister_for_cmd +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x5fcdcc05 ipmi_get_my_LUN +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x66045706 ipmi_get_smi_info +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x67cb9784 ipmi_poll_interface +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x78fd36e7 ipmi_request_supply_msgs +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x804f922a ipmi_addr_length +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x8c8ee770 ipmi_destroy_user +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x96cbcc81 ipmi_get_version +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x9ee609c0 ipmi_smi_watcher_unregister +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xa2a98b91 ipmi_get_maintenance_mode +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xd69f8567 ipmi_set_gets_events +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xdcc2f894 ipmi_smi_add_proc_entry +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xe0fa83f2 ipmi_register_for_cmd +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xe4f4665b ipmi_validate_addr +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xe6ab72a6 ipmi_set_my_LUN +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xf2576cb9 ipmi_smi_watchdog_pretimeout +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xf479998b ipmi_smi_watcher_register +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xfcb77cfd ipmi_free_recv_msg +EXPORT_SYMBOL drivers/char/tpm/st33zp24/tpm_st33zp24 0x70fe0ed3 st33zp24_pm_suspend +EXPORT_SYMBOL drivers/char/tpm/st33zp24/tpm_st33zp24 0xc36eab8d st33zp24_pm_resume +EXPORT_SYMBOL drivers/char/tpm/st33zp24/tpm_st33zp24 0xf93b8b79 st33zp24_probe +EXPORT_SYMBOL drivers/char/tpm/st33zp24/tpm_st33zp24 0xfe35a691 st33zp24_remove +EXPORT_SYMBOL drivers/char/xillybus/xillybus_core 0x25978d50 xillybus_isr +EXPORT_SYMBOL drivers/char/xillybus/xillybus_core 0x492a7b79 xillybus_init_endpoint +EXPORT_SYMBOL drivers/char/xillybus/xillybus_core 0x78693f5d xillybus_endpoint_discovery +EXPORT_SYMBOL drivers/char/xillybus/xillybus_core 0xfcb9ad29 xillybus_endpoint_remove +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0x0d5e2497 dw_dma_cyclic_prep +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0x74efedfa dw_dma_cyclic_start +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0xb8bdc741 dw_dma_cyclic_free +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0xd49d5a62 dw_dma_get_dst_addr +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0xee941cc3 dw_dma_get_src_addr +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0xfead5536 dw_dma_cyclic_stop +EXPORT_SYMBOL drivers/dma/pl330 0x70a237d9 pl330_filter +EXPORT_SYMBOL drivers/edac/edac_core 0xb4fce727 edac_mc_find +EXPORT_SYMBOL drivers/firewire/firewire-core 0x04d0f641 fw_core_remove_descriptor +EXPORT_SYMBOL drivers/firewire/firewire-core 0x0f7d6af8 fw_csr_string +EXPORT_SYMBOL drivers/firewire/firewire-core 0x12eeef7f fw_card_add +EXPORT_SYMBOL drivers/firewire/firewire-core 0x15a4b9e9 fw_iso_context_flush_completions +EXPORT_SYMBOL drivers/firewire/firewire-core 0x16e91e21 fw_csr_iterator_next +EXPORT_SYMBOL drivers/firewire/firewire-core 0x18dea9df fw_device_enable_phys_dma +EXPORT_SYMBOL drivers/firewire/firewire-core 0x1b49045f fw_card_initialize +EXPORT_SYMBOL drivers/firewire/firewire-core 0x1f812756 fw_schedule_bus_reset +EXPORT_SYMBOL drivers/firewire/firewire-core 0x23e458ea fw_bus_type +EXPORT_SYMBOL drivers/firewire/firewire-core 0x2554fd20 fw_iso_buffer_destroy +EXPORT_SYMBOL drivers/firewire/firewire-core 0x2885fec5 fw_get_request_speed +EXPORT_SYMBOL drivers/firewire/firewire-core 0x29234ca3 fw_core_remove_address_handler +EXPORT_SYMBOL drivers/firewire/firewire-core 0x2cfbd7ee fw_core_handle_request +EXPORT_SYMBOL drivers/firewire/firewire-core 0x36cc6021 fw_iso_context_destroy +EXPORT_SYMBOL drivers/firewire/firewire-core 0x3c56ef91 fw_workqueue +EXPORT_SYMBOL drivers/firewire/firewire-core 0x4e9f6f2c fw_iso_context_start +EXPORT_SYMBOL drivers/firewire/firewire-core 0x516ddedd fw_run_transaction +EXPORT_SYMBOL drivers/firewire/firewire-core 0x55718ae0 fw_iso_context_create +EXPORT_SYMBOL drivers/firewire/firewire-core 0x645b715f fw_core_add_descriptor +EXPORT_SYMBOL drivers/firewire/firewire-core 0x649c2879 fw_iso_buffer_init +EXPORT_SYMBOL drivers/firewire/firewire-core 0x65c9438b fw_csr_iterator_init +EXPORT_SYMBOL drivers/firewire/firewire-core 0x68c24c93 fw_core_handle_response +EXPORT_SYMBOL drivers/firewire/firewire-core 0x75a9691d fw_iso_context_queue +EXPORT_SYMBOL drivers/firewire/firewire-core 0x7b09777c fw_iso_context_queue_flush +EXPORT_SYMBOL drivers/firewire/firewire-core 0x7dfe819e fw_cancel_transaction +EXPORT_SYMBOL drivers/firewire/firewire-core 0x86468d44 fw_rcode_string +EXPORT_SYMBOL drivers/firewire/firewire-core 0x901ebc7f fw_iso_context_stop +EXPORT_SYMBOL drivers/firewire/firewire-core 0x90863005 fw_high_memory_region +EXPORT_SYMBOL drivers/firewire/firewire-core 0xa1979205 fw_send_response +EXPORT_SYMBOL drivers/firewire/firewire-core 0xa2fd83cb fw_core_handle_bus_reset +EXPORT_SYMBOL drivers/firewire/firewire-core 0xb8ce4dd0 fw_fill_response +EXPORT_SYMBOL drivers/firewire/firewire-core 0xbe5afeda fw_core_add_address_handler +EXPORT_SYMBOL drivers/firewire/firewire-core 0xc164ef57 fw_send_request +EXPORT_SYMBOL drivers/firewire/firewire-core 0xe942ec59 fw_core_remove_card +EXPORT_SYMBOL drivers/firewire/firewire-core 0xedb74484 fw_iso_resource_manage +EXPORT_SYMBOL drivers/fmc/fmc 0x0a89c484 fmc_find_sdb_device +EXPORT_SYMBOL drivers/fmc/fmc 0x0be65e44 fmc_show_sdb_tree +EXPORT_SYMBOL drivers/fmc/fmc 0x1944e4db fmc_driver_unregister +EXPORT_SYMBOL drivers/fmc/fmc 0x2ccc12ce fmc_scan_sdb_tree +EXPORT_SYMBOL drivers/fmc/fmc 0x3a576473 fmc_free_sdb_tree +EXPORT_SYMBOL drivers/fmc/fmc 0x8a290b06 fmc_driver_register +EXPORT_SYMBOL drivers/fmc/fmc 0xaa12662b fmc_reprogram +EXPORT_SYMBOL drivers/fmc/fmc 0xab20e64a fmc_device_unregister_n +EXPORT_SYMBOL drivers/fmc/fmc 0xdb3fe70c fmc_device_register_n +EXPORT_SYMBOL drivers/fmc/fmc 0xe3ae3a25 fmc_device_unregister +EXPORT_SYMBOL drivers/fmc/fmc 0xf1d2c37e fmc_device_register +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0016b23e drm_crtc_send_vblank_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0x01318920 drm_dev_unregister +EXPORT_SYMBOL drivers/gpu/drm/drm 0x05ce38a8 drm_hdmi_avi_infoframe_from_display_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x06a094a2 drm_mode_connector_update_edid_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x088e51a8 drm_flip_work_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x08c82b48 drm_vma_offset_lookup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x08d01ce6 drm_modeset_lock_all +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0937db9b drm_poll +EXPORT_SYMBOL drivers/gpu/drm/drm 0x09985e46 drm_legacy_idlelock_take +EXPORT_SYMBOL drivers/gpu/drm/drm 0x09bc3dc8 drm_get_pci_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0a72f765 drm_clflush_virt_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0aa0c389 drm_crtc_check_viewport +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0aa2c88f drm_vma_offset_manager_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0ae4b94c drm_ht_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0b3ae995 drm_mode_create_suggested_offset_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0be4ad80 drm_vblank_off +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0c9f6a76 drm_mode_create_tv_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0db6f3d6 drm_dev_register +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0ece16ad drm_gem_handle_create +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 0x11cef0de drm_flip_work_queue +EXPORT_SYMBOL drivers/gpu/drm/drm 0x12598d1c drm_bridge_enable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x13a70836 drm_prime_sg_to_page_addr_arrays +EXPORT_SYMBOL drivers/gpu/drm/drm 0x14a9a178 drm_get_format_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x168fc091 drm_atomic_check_only +EXPORT_SYMBOL drivers/gpu/drm/drm 0x16c636db drm_mode_set_crtcinfo +EXPORT_SYMBOL drivers/gpu/drm/drm 0x16d33709 drm_gem_prime_fd_to_handle +EXPORT_SYMBOL drivers/gpu/drm/drm 0x16d57e8e drm_legacy_getsarea +EXPORT_SYMBOL drivers/gpu/drm/drm 0x18462c7d drm_platform_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1847d277 drm_mode_duplicate +EXPORT_SYMBOL drivers/gpu/drm/drm 0x185463f0 drm_crtc_init_with_planes +EXPORT_SYMBOL drivers/gpu/drm/drm 0x18f2dc6c drm_dev_set_unique +EXPORT_SYMBOL drivers/gpu/drm/drm 0x193c5825 drm_mode_probed_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0x194eadaa drm_edid_header_is_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1960f97f drm_bridge_pre_enable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1a546ddd drm_mm_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1a770ac3 drm_detect_hdmi_monitor +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1b15e63b drm_property_unreference_blob +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1dd71f7a drm_err +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1e3bbd9f drm_atomic_state_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1ea33311 drm_modeset_lock_interruptible +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1ea45501 drm_property_create_signed_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1fc5772a drm_ati_pcigart_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2045b5bc drm_panel_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0x20645642 drm_debug +EXPORT_SYMBOL drivers/gpu/drm/drm 0x21444d0f drm_ioctl +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2207f55c drm_universal_plane_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2297d340 drm_mode_create_dvi_i_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0x22a654d8 drm_modeset_drop_locks +EXPORT_SYMBOL drivers/gpu/drm/drm 0x22acaf62 drm_get_cea_aspect_ratio +EXPORT_SYMBOL drivers/gpu/drm/drm 0x22ae2322 drm_send_vblank_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0x24027611 drm_property_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x24ff9acc drm_open +EXPORT_SYMBOL drivers/gpu/drm/drm 0x25932873 drm_vblank_post_modeset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x270b8649 drm_master_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0x27e5fac3 drm_i2c_encoder_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x281703a3 drm_crtc_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x29110fbf drm_connector_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2946e48d drm_property_lookup_blob +EXPORT_SYMBOL drivers/gpu/drm/drm 0x296ae6e2 drm_calc_vbltimestamp_from_scanoutpos +EXPORT_SYMBOL drivers/gpu/drm/drm 0x29a010e6 drm_mm_insert_node_in_range_generic +EXPORT_SYMBOL drivers/gpu/drm/drm 0x29d3fa76 drm_legacy_idlelock_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2a6c99ef drm_unplug_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2ba91232 drm_mode_create_rotation_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2bf0540b drm_framebuffer_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2d50570f drm_rect_calc_hscale +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2e7a4300 drm_rgb_quant_range_selectable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2ebe65ab drm_framebuffer_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2f299bd2 drm_encoder_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3065044f drm_vma_offset_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x31e6fe5f drm_vblank_count +EXPORT_SYMBOL drivers/gpu/drm/drm 0x32cc26a5 drm_mode_equal +EXPORT_SYMBOL drivers/gpu/drm/drm 0x33d47b1e drm_object_property_get_value +EXPORT_SYMBOL drivers/gpu/drm/drm 0x34e3be02 drm_mode_hsync +EXPORT_SYMBOL drivers/gpu/drm/drm 0x36e8e937 drm_property_create_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0x37ebe743 drm_mm_replace_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0x38a4f7ae drm_format_num_planes +EXPORT_SYMBOL drivers/gpu/drm/drm 0x397e26e4 drm_bridge_mode_set +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3a58d691 drm_mode_equal_no_clocks_no_stereo +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3ac1fef9 drm_mode_legacy_fb_format +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3b9d009a drm_format_plane_cpp +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3bdd604e drm_legacy_mmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3c669a5e drm_gem_object_lookup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3c744db4 drm_legacy_rmmap_locked +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3ce6e1fb drm_panel_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3d1f8e48 drm_handle_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3d23a7e3 drm_framebuffer_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3eb37b9d drm_ht_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3f2add66 drm_gem_object_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3f65a34a drm_legacy_rmmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3f77a664 drm_modeset_legacy_acquire_ctx +EXPORT_SYMBOL drivers/gpu/drm/drm 0x400f9593 drm_atomic_connectors_for_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x407ad7f7 drm_bridge_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0x40961632 drm_atomic_add_affected_planes +EXPORT_SYMBOL drivers/gpu/drm/drm 0x454c1afc drm_mode_create_aspect_ratio_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4587a834 drm_av_sync_delay +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4616532e drm_crtc_index +EXPORT_SYMBOL drivers/gpu/drm/drm 0x490cfb78 drm_mm_reserve_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4946acfd drm_pci_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4bcf32d1 drm_connector_unregister +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4c16119e drm_connector_index +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4c511235 drm_edid_is_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4e1af0a3 drm_flip_work_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4ea1f5a2 drm_gem_object_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4f63f4cc drm_object_property_set_value +EXPORT_SYMBOL drivers/gpu/drm/drm 0x50e28c07 drm_edid_to_sad +EXPORT_SYMBOL drivers/gpu/drm/drm 0x51ae1933 drm_atomic_state_default_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x51b8f8a2 drm_mode_crtc_set_gamma_size +EXPORT_SYMBOL drivers/gpu/drm/drm 0x51f0c700 drm_legacy_ioremapfree +EXPORT_SYMBOL drivers/gpu/drm/drm 0x526f6f71 drm_rect_calc_hscale_relaxed +EXPORT_SYMBOL drivers/gpu/drm/drm 0x52b7a5f2 drm_cvt_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5502a0d3 drm_mode_get_tile_group +EXPORT_SYMBOL drivers/gpu/drm/drm 0x55627c25 drm_vblank_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x56b4b20f drm_mode_validate_size +EXPORT_SYMBOL drivers/gpu/drm/drm 0x57b6efe3 drm_ioctl_flags +EXPORT_SYMBOL drivers/gpu/drm/drm 0x57d932dd drm_bridge_disable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5823cf1b drm_crtc_handle_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0x59ef50f0 drm_edid_block_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5a17c874 drm_clflush_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5c7160de drm_prime_gem_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5d1b4682 drm_match_cea_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5d7318dc drm_global_item_ref +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5fe3d305 drm_mode_config_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x613e0772 drm_gem_create_mmap_offset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6259cf76 drm_bridge_post_disable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x629c05e1 drm_clflush_sg +EXPORT_SYMBOL drivers/gpu/drm/drm 0x62ece09f drm_probe_ddc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6397ed32 drm_atomic_get_plane_state +EXPORT_SYMBOL drivers/gpu/drm/drm 0x640ff243 drm_object_attach_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x66c55c40 drm_add_edid_modes +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6706fff2 drm_connector_unplug_all +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6715e3d9 drm_vma_node_allow +EXPORT_SYMBOL drivers/gpu/drm/drm 0x67633846 drm_mm_insert_node_generic +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6900d335 drm_rect_clip_scaled +EXPORT_SYMBOL drivers/gpu/drm/drm 0x69da8cb6 drm_property_create_object +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6a06f77b drm_gem_free_mmap_offset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6a2d2394 drm_irq_uninstall +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6ac7b9d7 drm_dev_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6c883e0c drm_i2c_encoder_restore +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6cc4a0f1 drm_atomic_get_crtc_state +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6db94667 drm_vblank_pre_modeset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6e30ba8e drm_rect_rotate_inv +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6f255b23 drm_mode_plane_set_obj_prop +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6fbde939 drm_gtf_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x73bf74fa drm_pci_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x745592dc drm_connector_register +EXPORT_SYMBOL drivers/gpu/drm/drm 0x75c48020 drm_framebuffer_reference +EXPORT_SYMBOL drivers/gpu/drm/drm 0x75d92459 drm_mode_set_config_internal +EXPORT_SYMBOL drivers/gpu/drm/drm 0x770b54cf __drm_modeset_lock_all +EXPORT_SYMBOL drivers/gpu/drm/drm 0x770c54ab drm_i2c_encoder_prepare +EXPORT_SYMBOL drivers/gpu/drm/drm 0x77a0f4b4 drm_property_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x78f08cea drm_atomic_state_clear +EXPORT_SYMBOL drivers/gpu/drm/drm 0x79ff9851 drm_property_create_bool +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7b0753aa drm_gem_prime_import +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7d897a65 drm_mode_create_tile_group +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7e920ea9 drm_vma_offset_lookup_locked +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7eda57ee drm_legacy_addmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7fa0b08b drm_hdmi_vendor_infoframe_from_display_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x82042ea5 drm_crtc_vblank_count +EXPORT_SYMBOL drivers/gpu/drm/drm 0x823090e7 drm_plane_from_index +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8247c65d drm_of_find_possible_crtcs +EXPORT_SYMBOL drivers/gpu/drm/drm 0x82c2998f drm_flip_work_allocate_task +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8385ff31 drm_atomic_add_affected_connectors +EXPORT_SYMBOL drivers/gpu/drm/drm 0x842c312d drm_sysfs_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0x84f8f49d drm_mode_find_dmt +EXPORT_SYMBOL drivers/gpu/drm/drm 0x86239500 drm_modeset_lock_all_crtcs +EXPORT_SYMBOL drivers/gpu/drm/drm 0x871ab41a drm_rect_intersect +EXPORT_SYMBOL drivers/gpu/drm/drm 0x87442e66 drm_gtf_mode_complex +EXPORT_SYMBOL drivers/gpu/drm/drm 0x87891432 drm_modeset_acquire_fini +EXPORT_SYMBOL drivers/gpu/drm/drm 0x894abaf2 drm_dev_ref +EXPORT_SYMBOL drivers/gpu/drm/drm 0x89846969 drm_mm_dump_table +EXPORT_SYMBOL drivers/gpu/drm/drm 0x89f6c10e drm_framebuffer_unreference +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8ab1769c drm_modeset_unlock_all +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8c433242 drm_mode_object_find +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8c91bb07 drm_mode_config_reset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8dd06a0f drm_platform_set_busid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8de13715 drm_format_vert_chroma_subsampling +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8e3a06be drm_i2c_encoder_save +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8eff9111 drm_ht_find_item +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8fa2ee51 drm_pci_exit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8fdab61e drm_crtc_vblank_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8fe22b10 drm_gem_create_mmap_offset_size +EXPORT_SYMBOL drivers/gpu/drm/drm 0x90a8df11 drm_atomic_get_connector_state +EXPORT_SYMBOL drivers/gpu/drm/drm 0x919b5f76 drm_gem_vm_open +EXPORT_SYMBOL drivers/gpu/drm/drm 0x91e3794b drm_gem_put_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0x91fec1cc drm_rect_calc_vscale +EXPORT_SYMBOL drivers/gpu/drm/drm 0x92408488 drm_mm_scan_add_block +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9303a811 drm_crtc_vblank_on +EXPORT_SYMBOL drivers/gpu/drm/drm 0x934e011d drm_modeset_lock_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x943694d8 drm_atomic_state_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x945f4c72 drm_vma_node_revoke +EXPORT_SYMBOL drivers/gpu/drm/drm 0x946bd3b0 drm_crtc_vblank_off +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9486b1c8 drm_mode_connector_set_tile_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x956e38e2 drm_gem_private_object_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x959ba8ad drm_gem_mmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9635d640 drm_pcie_get_speed_cap_mask +EXPORT_SYMBOL drivers/gpu/drm/drm 0x984dd406 drm_flip_work_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9972db48 drm_rect_calc_vscale_relaxed +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9a8cf849 drm_bridge_attach +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9a9c2957 drm_atomic_connector_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9c926acd drm_vma_offset_manager_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9c939131 drm_debugfs_create_files +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9cfb96c6 drm_atomic_set_fb_for_plane +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9d08374d drm_crtc_vblank_reset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9d810b55 drm_mode_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9deecced drm_modeset_unlock +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9f087447 drm_atomic_legacy_backoff +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9fca8a50 drm_select_eld +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa0ade2d5 drm_pci_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa1663a1f drm_modeset_backoff_interruptible +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa1c9c5da drm_display_info_set_bus_formats +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa1d4e64e drm_gem_get_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa28078b2 drm_edid_duplicate +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa2914bdd drm_property_add_enum +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa3d0507a drm_warn_on_modeset_not_all_locked +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa4466414 drm_mm_remove_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa4ab90ce drm_mode_group_init_legacy_group +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa565ca06 drm_modeset_backoff +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa57d36e0 drm_vblank_count_and_time +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa5da6387 drm_calc_timestamping_constants +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa6660cba drm_atomic_set_crtc_for_plane +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa75a2734 drm_gem_prime_export +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa7818764 drm_atomic_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa799287d drm_atomic_async_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa7ed629e drm_atomic_set_mode_for_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa84367ef drm_crtc_get_hv_timing +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa9520045 drm_ati_pcigart_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa9698db2 drm_mode_config_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa96acfcb drm_rect_debug_print +EXPORT_SYMBOL drivers/gpu/drm/drm 0xab0b5d3f drm_vblank_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0xab83b00f drm_mode_connector_list_update +EXPORT_SYMBOL drivers/gpu/drm/drm 0xad2d3bae drm_read +EXPORT_SYMBOL drivers/gpu/drm/drm 0xad3b718d drm_atomic_set_crtc_for_connector +EXPORT_SYMBOL drivers/gpu/drm/drm 0xadd94cca drm_mode_connector_set_path_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb053adda drm_rect_rotate +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb248bef2 of_drm_find_panel +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb2e32b3d drm_vblank_on +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb46b6bbb drm_i2c_encoder_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb5540008 drm_global_item_unref +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb56b2681 drm_i2c_encoder_mode_set +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb5d86856 drm_modeset_acquire_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb5f95177 drm_get_edid +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb70f35c0 drm_panel_detach +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb73780cf drm_gem_dmabuf_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb7ff778f drm_plane_force_disable +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbac4eb44 drm_vma_offset_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbaff3cf9 drm_modeset_lock +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbc3db8c5 drm_prime_pages_to_sg +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbda553f9 drm_property_create_enum +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbe532ab3 drm_noop +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbe6d42ea drm_property_create_bitmask +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbf35d99e drm_i2c_encoder_mode_fixup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc032a06b drm_framebuffer_lookup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc066c834 drm_vblank_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc0f27eb2 drm_debugfs_remove_files +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc19d3361 drm_legacy_ioremap +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc277f272 drm_property_create_blob +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc360e7e2 drm_ut_debug_printk +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc37c8d5d drm_property_reference_blob +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc6abb7ea drm_plane_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc7b73bb6 drm_panel_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc8ee670f drm_put_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc95b35d1 drm_gem_dumb_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0xca45efbc drm_format_horz_chroma_subsampling +EXPORT_SYMBOL drivers/gpu/drm/drm 0xca5c7790 drm_mm_init_scan_with_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcb6f3613 drm_panel_attach +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcc1915ea drm_atomic_plane_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xccd86ca7 drm_set_preferred_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcd0fc417 drm_ht_just_insert_please +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcd877632 drm_pci_set_busid +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcf745511 drm_i2c_encoder_dpms +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd03f8ca5 drm_legacy_addbufs_pci +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd0d380ef drm_mode_copy +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd1456a73 drm_flip_work_queue_task +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd2335101 drm_fb_get_bpp_depth +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd250916f drm_atomic_crtc_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd331d8b8 drm_gem_mmap_obj +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd34c68ff drm_gem_prime_handle_to_fd +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd3a374f4 drm_compat_ioctl +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd52b1d11 drm_mm_init_scan +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd55222a5 drm_framebuffer_unregister_private +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd6a3545f drm_gem_vm_close +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd70c8470 drm_mm_debug_table +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd7d97915 drm_mode_set_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd8a68133 drm_mode_create_dirty_info_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd93ae9fc drm_mode_connector_attach_encoder +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd9b844af drm_bridge_mode_fixup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xda3069ef drm_add_modes_noedid +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdafeccb1 drm_connector_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdbb5a9f5 drm_ht_remove_item +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdc14005c drm_dev_unref +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdcad2681 drm_vblank_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdd150721 drm_mm_takedown +EXPORT_SYMBOL drivers/gpu/drm/drm 0xddb3a21f drm_modeset_unlock_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdec29e32 drm_bridge_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdf2d3c39 drm_i2c_encoder_detect +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdf666902 drm_rotation_simplify +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe0ba6498 drm_edid_to_eld +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe342600b of_drm_find_bridge +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe3e5191d drm_plane_index +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe4c10814 drm_gem_object_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe51d89b5 drm_mm_clean +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe594cb59 drm_irq_install +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe7197773 drm_ht_insert_item +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe8a90d5d drm_mode_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0xea130a00 drm_i2c_encoder_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0xecc92b72 drm_mode_parse_command_line_for_connector +EXPORT_SYMBOL drivers/gpu/drm/drm 0xedc6de99 drm_vma_node_is_allowed +EXPORT_SYMBOL drivers/gpu/drm/drm 0xedffaec6 drm_wait_one_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0xef3387e6 drm_mode_create_from_cmdline_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0xefc1568a drm_encoder_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xeffdfe64 drm_master_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf1421d13 drm_mode_sort +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf1598fcd drm_mode_prune_invalid +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf313fe1c drm_atomic_state_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf373067e drm_crtc_wait_one_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf43a8e9b drm_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf49e544f drm_reinit_primary_mode_group +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf4aa6856 drm_legacy_ioremap_wc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf4dc63cd drm_mode_debug_printmodeline +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf6767ca5 drm_atomic_set_mode_prop_for_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf6cfb869 drm_mode_create_scaling_mode_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf83f8608 drm_mode_validate_basic +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf8ec4ab6 drm_mode_vrefresh +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfa103063 drm_plane_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfa7abb53 drm_gem_handle_delete +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfbe45f1e drm_crtc_vblank_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfcf54a4f drm_mm_scan_remove_block +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfd063935 drm_edid_to_speaker_allocation +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfeab50c8 drm_atomic_state_default_clear +EXPORT_SYMBOL drivers/gpu/drm/drm 0xffc6c87a drm_detect_monitor_audio +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x025c773f drm_fb_helper_single_add_all_connectors +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0272948c drm_kms_helper_poll_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0276a17e drm_fb_helper_initial_config +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x089f138c drm_dp_mst_deallocate_vcpi +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x098e47d2 drm_dp_link_train_clock_recovery_delay +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0acbba22 drm_atomic_helper_commit_planes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0f96ec70 drm_dp_clock_recovery_ok +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x109ceb7f drm_dp_dpcd_read +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x120fbf3c drm_dp_dpcd_read_link_status +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x14b7efc0 drm_atomic_helper_swap_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x163251c8 drm_dp_link_train_channel_eq_delay +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x17c9aa30 drm_dp_aux_unregister +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x18a3b007 drm_atomic_helper_check_modeset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x18adb69b drm_dp_aux_register +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x1f56deeb drm_helper_probe_single_connector_modes_nomerge +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x1ff0e046 drm_plane_helper_check_update +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x21231eed drm_fb_helper_add_one_connector +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x217c8f31 drm_pick_cmdline_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x25ba34b3 drm_atomic_helper_plane_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x28614f58 drm_primary_helper_funcs +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2a109b30 drm_helper_resume_force_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2a912131 drm_atomic_helper_set_config +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2c45cae3 drm_atomic_helper_connector_dpms +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2c623dfa drm_helper_connector_dpms +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2c66fea5 drm_dp_update_payload_part2 +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2d719985 drm_atomic_helper_disable_plane +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x333260fa drm_atomic_helper_page_flip +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x34871adf drm_dp_channel_eq_ok +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x354c27a5 drm_dp_mst_topology_mgr_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x39ca9642 drm_helper_probe_single_connector_modes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3a77b6df drm_primary_helper_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3b26a33b drm_primary_helper_update +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3b585267 drm_helper_encoder_in_use +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3ca8ded5 __drm_atomic_helper_connector_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x42d2ea3c drm_fb_helper_prepare +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x43c18bbe drm_plane_helper_disable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x48a9f8b7 drm_fb_helper_restore_fbdev_mode_unlocked +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x491bfa17 drm_dp_link_configure +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x49e1b790 drm_fb_helper_blank +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4c8b5c62 drm_helper_crtc_mode_set +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4ec977a9 drm_atomic_helper_crtc_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5389ed17 drm_atomic_helper_commit +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x589f45b5 drm_dp_link_probe +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5a4158e6 drm_fb_helper_setcmap +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5f4fbe78 drm_kms_helper_poll_fini +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5f7919b4 drm_plane_helper_update +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x623d335c drm_atomic_helper_update_legacy_modeset_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x62bbefc3 drm_helper_hpd_irq_event +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x66439ea7 drm_atomic_helper_plane_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x666a338c drm_helper_disable_unused_functions +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x67daee36 drm_fb_helper_set_par +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6ba918a2 drm_dp_check_act_status +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6f5c5791 drm_atomic_helper_prepare_planes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x711a004a drm_dp_link_rate_to_bw_code +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x730b7937 drm_dp_mst_topology_mgr_resume +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x754445b1 drm_atomic_helper_check +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7a5f4b09 drm_helper_crtc_in_use +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7a93ab32 drm_dp_mst_topology_mgr_set_mst +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7cf44799 drm_fb_helper_remove_one_connector +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7d6f5314 drm_fb_helper_debug_leave +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x84c05a6a __drm_atomic_helper_plane_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x84e924ba drm_dp_get_adjust_request_pre_emphasis +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x865c9490 drm_atomic_helper_update_plane +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x87f6afc3 drm_atomic_helper_commit_planes_on_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x888adf64 drm_atomic_helper_cleanup_planes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x896a5289 drm_dp_mst_get_edid +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8a7d83c0 drm_dp_dpcd_write +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8b429950 drm_atomic_helper_crtc_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8e1435aa drm_fb_helper_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8e1d7d99 drm_dp_mst_topology_mgr_suspend +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9510f8e4 drm_dp_mst_get_vcpi_slots +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x96e9c155 drm_primary_helper_disable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x98a5cc89 drm_atomic_helper_connector_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x98f1e073 drm_atomic_helper_crtc_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa47826e4 drm_dp_calc_pbn_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa72b958a drm_fb_helper_debug_enter +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa77858bb drm_dp_get_adjust_request_voltage +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa794e57a drm_atomic_helper_commit_modeset_enables +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa8d6809d drm_dp_bw_code_to_link_rate +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa9ba25ce drm_dp_mst_reset_vcpi_slots +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xad42f0cc drm_fb_helper_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xaf4cc752 drm_atomic_helper_commit_modeset_disables +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb10a64c9 drm_atomic_helper_wait_for_vblanks +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb45c2682 drm_fb_helper_pan_display +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb6195d95 __drm_atomic_helper_plane_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb7d0a686 drm_fb_helper_check_var +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb9ce9a35 drm_helper_crtc_mode_set_base +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xbcdf6cd9 drm_fb_helper_fill_var +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xbfadfb6b drm_helper_move_panel_connectors_to_head +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc2a6fc62 __drm_atomic_helper_connector_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc5389fcb drm_dp_mst_detect_port +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc5e02da0 drm_atomic_helper_plane_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc979f11e drm_kms_helper_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xcadea67a drm_dp_link_power_up +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xcb68f36c drm_dp_update_payload_part1 +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xcba5d218 drm_atomic_helper_connector_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xcecff885 drm_has_preferred_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd0a1e0a5 drm_helper_mode_fill_fb_struct +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd0d74a91 drm_atomic_helper_connector_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd1676db8 drm_fb_helper_fill_fix +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd29f7f33 drm_dp_mst_topology_mgr_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd5119095 __drm_atomic_helper_crtc_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd796bd40 drm_atomic_helper_connector_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd9560414 drm_atomic_helper_plane_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe22fe6a6 drm_crtc_helper_set_config +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe34c0e48 drm_crtc_helper_set_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe3522961 drm_kms_helper_poll_disable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe48a802c drm_dp_mst_dump_topology +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xea3a1fe6 drm_atomic_helper_crtc_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xeab95cb8 drm_dp_link_power_down +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xee010084 drm_dp_mst_allocate_vcpi +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xee4900da drm_atomic_helper_check_planes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf1eceb4b drm_kms_helper_poll_enable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf23a1bb2 drm_dp_find_vcpi_slots +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf7281a05 __drm_atomic_helper_crtc_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xfab9ad00 drm_crtc_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xfc83534a drm_dp_mst_hpd_irq +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xfcdab516 drm_fb_helper_fini +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x00cdbe9b ttm_bo_move_ttm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x02a7e0b7 ttm_bo_unref +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x02b6191e ttm_eu_reserve_buffers +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x15a8fc39 ttm_bo_mem_put +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x18788bab ttm_bo_mem_space +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x1a593896 ttm_bo_mmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x1effc956 ttm_bo_evict_mm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x20ced457 ttm_bo_synccpu_write_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x23803717 ttm_eu_backoff_reservation +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x263756e0 ttm_vt_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x2b54aa9a ttm_object_file_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x2b64e6d0 ttm_fbdev_mmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x2c1fc621 ttm_read_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x2d82dd1a ttm_bo_del_sub_from_lru +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x2fb30479 ttm_dma_tt_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x30a57a5a ttm_bo_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x3152f2f7 ttm_bo_clean_mm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x378924df ttm_bo_kmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x38b6860d ttm_bo_add_to_lru +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x3ac6c90c ttm_tt_bind +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x3e2baa13 ttm_bo_device_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x485a5bc0 ttm_ref_object_add +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x48e60099 ttm_bo_move_accel_cleanup +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x4c3c78a8 ttm_tt_fini +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x4c7347a7 ttm_bo_init_mm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x4da2e39d ttm_bo_acc_size +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x4e8dd264 ttm_bo_global_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x5555118d ttm_bo_device_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x5570c7f7 ttm_read_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x564e1aee ttm_bo_global_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x56bcfe8a ttm_bo_lock_delayed_workqueue +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x591d7b41 ttm_write_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x5ee757e7 ttm_vt_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x6052860c ttm_round_pot +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x681b051d ttm_bo_unlock_delayed_workqueue +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x6cf01439 ttm_pool_populate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x6fa23711 ttm_suspend_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x7457b93d ttm_mem_io_reserve +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x7cec3dfc ttm_mem_global_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x7ebe2b8f ttm_bo_validate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x80d86f0e ttm_object_device_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x880a15ad ttm_base_object_lookup +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x945618a2 ttm_bo_swapout_all +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x94894449 ttm_base_object_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x95d2ff0e ttm_lock_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x998e45c0 ttm_ref_object_base_unref +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x9df81935 ttm_bo_wait +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x9e3193f2 ttm_pool_unpopulate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xa0a96198 ttm_bo_create +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xa0e1f89b ttm_write_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xa6c7935b ttm_bo_move_memcpy +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xa7bdad3a ttm_eu_fence_buffer_objects +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xa8ed7631 ttm_object_device_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xae87b61d ttm_io_prot +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xb5b35376 ttm_mem_global_alloc +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xbdf60fcb ttm_bo_unmap_virtual +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xc349e69a ttm_dma_tt_fini +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xc811633b ttm_mem_io_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xc9eaf9b1 ttm_tt_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xcc24fc80 ttm_mem_global_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xce6e43a8 ttm_base_object_lookup_for_ref +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xceac478e ttm_bo_manager_func +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xcf67c299 ttm_ref_object_exists +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xd18f70d1 ttm_mem_global_free +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xd4415e2c ttm_mem_io_free +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xd8edb115 ttm_base_object_unref +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xda47f36e ttm_mem_io_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xe0551d07 ttm_tt_set_placement_caching +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xe6ec87f5 ttm_suspend_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xec0e78f3 ttm_bo_kunmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xeedce519 ttm_bo_dma_acc_size +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xf4b82003 ttm_bo_synccpu_write_grab +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xf8b72ada ttm_prime_object_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xfbc2c5ec ttm_object_file_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xfecefea4 ttm_page_alloc_debugfs +EXPORT_SYMBOL drivers/hwmon/hwmon-vid 0x0903c239 vid_from_reg +EXPORT_SYMBOL drivers/hwmon/hwmon-vid 0xef1c781c vid_which_vrm +EXPORT_SYMBOL drivers/hwmon/sch56xx-common 0x0e2a6864 sch56xx_read_virtual_reg +EXPORT_SYMBOL drivers/hwmon/sch56xx-common 0x0f5877d4 sch56xx_read_virtual_reg16 +EXPORT_SYMBOL drivers/hwmon/sch56xx-common 0x34257f35 sch56xx_watchdog_unregister +EXPORT_SYMBOL drivers/hwmon/sch56xx-common 0x84d4eaf9 sch56xx_watchdog_register +EXPORT_SYMBOL drivers/hwmon/sch56xx-common 0xe5022f95 sch56xx_read_virtual_reg12 +EXPORT_SYMBOL drivers/hwmon/sch56xx-common 0xed1d2a08 sch56xx_write_virtual_reg +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-bit 0x0ed38ee8 i2c_bit_add_numbered_bus +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-bit 0x79488fc2 i2c_bit_add_bus +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-bit 0x7e3603ca i2c_bit_algo +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-pca 0x7423fe95 i2c_pca_add_numbered_bus +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-pca 0x8ad132b0 i2c_pca_add_bus +EXPORT_SYMBOL drivers/i2c/busses/i2c-amd756 0x36585055 amd756_smbus +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x0b29a84d mma9551_write_config_byte +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x22b8bf89 mma9551_read_status_byte +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x3ed3c981 mma9551_set_power_state +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x41625bbc mma9551_write_config_word +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x41b2ef26 mma9551_read_version +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x41ef446c mma9551_read_accel_scale +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x48dc906d mma9551_read_config_words +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x5bc3c42d mma9551_read_accel_chan +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x62ff2343 mma9551_set_device_state +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x7f7a749b mma9551_write_config_words +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x981e0c34 mma9551_read_status_word +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x9d6edddd mma9551_update_config_bits +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xb5d4ee80 mma9551_gpio_config +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xbcd7fe96 mma9551_sleep +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xd2c01de7 mma9551_app_reset +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xe66ac63e mma9551_read_config_word +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xe70e0884 mma9551_read_config_byte +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xf0d031e0 mma9551_read_status_words +EXPORT_SYMBOL drivers/iio/accel/st_accel 0x2310afe7 st_accel_common_remove +EXPORT_SYMBOL drivers/iio/accel/st_accel 0x289c8493 st_accel_common_probe +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x411c3db5 hid_sensor_write_raw_hyst_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x5579f73b hid_sensor_read_poll_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x995ec8e3 hid_sensor_read_raw_hyst_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0xb9e8a36b hid_sensor_read_samp_freq_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0xbb91e818 hid_sensor_parse_common_attributes +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0xc83a92bf hid_sensor_format_scale +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0xf4c4defe hid_sensor_write_samp_freq_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-trigger 0x50362259 hid_sensor_setup_trigger +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-trigger 0x6399fe78 hid_sensor_pm_ops +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-trigger 0x7fe7957d hid_sensor_remove_trigger +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-trigger 0x93acbe6c hid_sensor_power_state +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0x5360d53c ssp_enable_sensor +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0x6dacf876 ssp_register_consumer +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0x7dbac5d3 ssp_get_sensor_delay +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0x9be6bd53 ssp_disable_sensor +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0xf5b075c6 ssp_change_delay +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/ssp_iio 0x034aaa37 ssp_common_buffer_postdisable +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/ssp_iio 0x4d68c51a ssp_common_buffer_postenable +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/ssp_iio 0xe91ef7f0 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 0x0b7e19f1 st_sensors_check_device_support +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x36a13495 st_sensors_power_enable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x3ce2c19a st_sensors_set_axis_enable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x41f6b597 st_sensors_set_dataready_irq +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x6713cf9a st_sensors_set_fullscale_by_gain +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x6bd1cc58 st_sensors_allocate_trigger +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x6e8c9157 st_sensors_get_buffer_element +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x79e9b36f st_sensors_read_info_raw +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x7a8826e9 st_sensors_init_sensor +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x8321340f st_sensors_set_enable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xb85f5cd8 st_sensors_set_odr +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xc7f01fed st_sensors_sysfs_scale_avail +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xdb5137df st_sensors_deallocate_trigger +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xe781be55 st_sensors_power_disable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xfecd8ff0 st_sensors_sysfs_sampling_frequency_avail +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors_i2c 0x40582cb8 st_sensors_i2c_configure +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors_i2c 0xae327f03 st_sensors_of_i2c_probe +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors_spi 0xded1516d st_sensors_spi_configure +EXPORT_SYMBOL drivers/iio/gyro/st_gyro 0x6751235f st_gyro_common_remove +EXPORT_SYMBOL drivers/iio/gyro/st_gyro 0xecb1a6c9 st_gyro_common_probe +EXPORT_SYMBOL drivers/iio/imu/adis_lib 0xbdcd5a52 adis_enable_irq +EXPORT_SYMBOL drivers/iio/imu/adis_lib 0xcf575541 adis_debugfs_reg_access +EXPORT_SYMBOL drivers/iio/industrialio 0x024f6c97 iio_trigger_unregister +EXPORT_SYMBOL drivers/iio/industrialio 0x2339002f iio_device_unregister +EXPORT_SYMBOL drivers/iio/industrialio 0x2d6bcdcb iio_trigger_generic_data_rdy_poll +EXPORT_SYMBOL drivers/iio/industrialio 0x9bad8096 iio_push_event +EXPORT_SYMBOL drivers/iio/industrialio 0xa6b9463c iio_device_free +EXPORT_SYMBOL drivers/iio/industrialio 0xa92a9842 iio_device_alloc +EXPORT_SYMBOL drivers/iio/industrialio 0xb137bb16 iio_bus_type +EXPORT_SYMBOL drivers/iio/industrialio 0xb7d7c032 iio_buffer_init +EXPORT_SYMBOL drivers/iio/industrialio 0xb97f7d16 iio_trigger_notify_done +EXPORT_SYMBOL drivers/iio/industrialio 0xbb6000f9 iio_read_const_attr +EXPORT_SYMBOL drivers/iio/industrialio 0xbed5177d iio_trigger_poll +EXPORT_SYMBOL drivers/iio/industrialio 0xc0ae79d5 iio_trigger_alloc +EXPORT_SYMBOL drivers/iio/industrialio 0xc402764d iio_triggered_buffer_postenable +EXPORT_SYMBOL drivers/iio/industrialio 0xce24b7ff iio_trigger_free +EXPORT_SYMBOL drivers/iio/industrialio 0xdc8e8724 iio_trigger_register +EXPORT_SYMBOL drivers/iio/industrialio 0xdf76bbeb iio_pollfunc_store_time +EXPORT_SYMBOL drivers/iio/industrialio 0xecfce92e iio_triggered_buffer_predisable +EXPORT_SYMBOL drivers/iio/industrialio 0xfdde60e9 iio_device_register +EXPORT_SYMBOL drivers/iio/industrialio 0xff777ca4 iio_trigger_poll_chained +EXPORT_SYMBOL drivers/iio/industrialio-triggered-buffer 0x07807582 iio_triggered_buffer_setup +EXPORT_SYMBOL drivers/iio/industrialio-triggered-buffer 0xdbeb0a8f iio_triggered_buffer_cleanup +EXPORT_SYMBOL drivers/iio/kfifo_buf 0x43532101 iio_kfifo_free +EXPORT_SYMBOL drivers/iio/kfifo_buf 0x66ab2a2a devm_iio_kfifo_free +EXPORT_SYMBOL drivers/iio/kfifo_buf 0x88c36ccb iio_kfifo_allocate +EXPORT_SYMBOL drivers/iio/kfifo_buf 0xc0bf070b devm_iio_kfifo_allocate +EXPORT_SYMBOL drivers/iio/magnetometer/st_magn 0x6838342c st_magn_common_probe +EXPORT_SYMBOL drivers/iio/magnetometer/st_magn 0xb7b5bc3a st_magn_common_remove +EXPORT_SYMBOL drivers/iio/pressure/ms5611_core 0xb2892cd9 ms5611_probe +EXPORT_SYMBOL drivers/iio/pressure/st_pressure 0x1f1a7649 st_press_common_probe +EXPORT_SYMBOL drivers/iio/pressure/st_pressure 0x452112df st_press_common_remove +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x049ace30 rdma_addr_find_smac_by_sgid +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x04b8b6d7 rdma_translate_ip +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x1c3c0ad3 rdma_addr_size +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x273f4cca rdma_addr_cancel +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x4c33e170 rdma_addr_unregister_client +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x4fa3893d rdma_resolve_ip +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x61560234 rdma_copy_addr +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0xf029eb25 rdma_addr_find_dmac_by_grh +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0xfe6e58a5 rdma_addr_register_client +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x0479be69 cm_class +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x0f32a84f ib_send_cm_mra +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x19b97df0 ib_send_cm_req +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x25e4aea7 ib_cm_notify +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x40cddfac ib_cm_init_qp_attr +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x4df25aba ib_send_cm_sidr_req +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x5c17329d ib_send_cm_dreq +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x621d66e1 ib_destroy_cm_id +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x65e47c5b ib_send_cm_lap +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x74332f83 ib_send_cm_drep +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x80a67e4d ib_send_cm_sidr_rep +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x952bb2c2 ib_send_cm_apr +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xb32a8073 ib_send_cm_rep +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xced9297c ib_send_cm_rej +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xd34c7ea8 ib_send_cm_rtu +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xe540166f ib_create_cm_id +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xf362dd61 ib_cm_listen +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x030bb833 ibnl_put_msg +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x077b5f50 ibnl_add_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x080f09c9 ib_dealloc_fmr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0aec6fd7 ib_find_cached_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0bd1be4d ib_unregister_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0c1b9ac1 ib_ud_header_unpack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0c6105fb ib_get_cached_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0f6203c4 ib_close_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x12c45622 ib_modify_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x13542db1 ib_destroy_flow +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x14d693d6 ib_get_cached_lmc +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1537c51a ib_init_ah_from_wc +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x17cfe317 ib_register_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x19505802 ib_destroy_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1ade573e ibnl_put_attr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1b59cfc2 ib_query_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1cf927a7 ib_destroy_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1e491a04 ib_unmap_fmr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x22f3cf93 ib_pack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2780bc1f ib_open_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x27de17c5 ib_umem_odp_unmap_dma_pages +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x286b49cd ib_dispatch_event +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2d71306f ib_query_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2daaad73 ib_find_cached_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2ed6e386 ib_ud_header_pack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x3710370d ib_umem_copy_from +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x373cd1ae ib_modify_port +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x3a47db26 ib_alloc_fmr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x3b4ff61d ib_dealloc_xrcd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x40b42828 ib_alloc_xrcd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x40cbf162 ib_query_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x424456c1 ibnl_unicast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x45af889b ib_get_client_data +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x49dd4707 ib_find_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x4bfebe58 ib_alloc_mw +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x4d86e391 ib_create_flow +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x50dbc447 ib_flush_fmr_pool +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x52dd52bd ib_umem_get +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5611cdea rdma_node_get_transport +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x56534e9b ib_umem_release +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5a1c69ee ib_dereg_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6013e018 ib_dealloc_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6d8d7c88 ib_alloc_pd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6e030e26 ib_modify_qp_is_ok +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x70744fc9 ib_fmr_pool_unmap +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x78443c1e ib_alloc_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7b33ba4e ib_create_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7c3d86f6 ib_rereg_phys_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7dbfb408 ib_destroy_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x83d921d5 ib_get_cached_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x866d1cc7 ib_alloc_fast_reg_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x86d4f964 ib_modify_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x8703bfeb ib_dealloc_pd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x89380241 ib_query_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x95151f95 ib_query_port +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x984c2f79 ib_free_fast_reg_page_list +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x9a02add6 ib_check_mr_status +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x9f44ebdc ib_unregister_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa033a12e ib_query_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa3655b3b ib_reg_phys_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa432baf6 ib_unpack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa58f4021 ib_attach_mcast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa7b67362 ib_create_ah_from_wc +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa975bc67 ib_create_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa99f60b8 ib_alloc_fast_reg_page_list +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xab0a3467 mult_to_ib_rate +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xade02625 ib_umem_odp_map_dma_pages +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb5fa0bc3 ib_create_fmr_pool +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb93a52b0 ib_rate_to_mbps +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb982e7a6 ib_create_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xbadd8259 ib_rate_to_mult +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc32b59ff ib_destroy_fmr_pool +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc33387fd ib_resolve_eth_l2_attrs +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc569420f ib_fmr_pool_map_phys +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc67f14a5 ibnl_remove_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc69d9195 ib_destroy_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xcf5cd044 ib_query_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xcfa2a09f ib_event_msg +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd3c1881d ib_resize_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd42d5fe6 ibnl_multicast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd5257935 ib_create_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd9f27c9e ib_set_client_data +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xda8090c5 ib_find_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xdfa312a8 ib_destroy_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe1419db7 ib_modify_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe4b36d47 ib_detach_mcast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe5840ec6 ib_wc_status_msg +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe6e1e234 ib_create_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xea7a5c07 ib_umem_page_count +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xeb77850c ib_unregister_event_handler +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xebaf8206 ib_query_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xee8f0c57 rdma_port_get_link_layer +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf24e5ff1 ib_get_dma_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf472dd42 ib_register_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf50cccac ib_find_exact_cached_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf807b813 ib_modify_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf809b4f7 ib_register_event_handler +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf8a5e27f ib_modify_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xfc150956 ib_ud_header_init +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xff1b027b ib_dealloc_mw +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x093e7f38 ib_free_recv_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x0aa358a8 ib_post_send_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x0bc1c3f8 ib_cancel_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x0ffd2355 ib_unregister_mad_agent +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x2f0ea69e ib_response_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x336ad69b ib_redirect_mad_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x5066b572 ib_get_rmpp_segment +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x6ad4a4e9 ib_register_mad_snoop +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x6f077fcf ib_get_mad_data_offset +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x7b5d4b7a ib_is_mad_class_rmpp +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x8b310e3f ib_mad_kernel_rmpp_agent +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xa34ba033 ib_create_send_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xae40ea17 ib_process_mad_wc +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xb49d4571 ib_register_mad_agent +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xe8dc128a ib_free_send_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xfd7cc707 ib_modify_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x01ee2900 ib_sa_service_rec_query +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x22f07253 ib_sa_unpack_path +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x576fdbac ib_sa_free_multicast +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x5f2b375c ib_sa_path_rec_get +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x6f7e97ab ib_sa_unregister_client +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x708e3cb6 ib_init_ah_from_path +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x710d214d ib_sa_get_mcmember_rec +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x7cf8bc35 ib_sa_join_multicast +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x8ed9af46 ib_sa_register_client +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x9f8727ad ib_init_ah_from_mcmember +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xb26dc1b2 ib_sa_guid_info_rec_query +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xda0d50ec ib_sa_cancel_query +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xddc330e7 ib_sa_pack_path +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x2569d757 ib_copy_path_rec_to_user +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x52a6ce77 ib_copy_ah_attr_to_user +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x7971c00e ib_copy_qp_attr_to_user +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0xe350f2aa ib_copy_path_rec_from_user +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x0e8622f7 iwpm_ack_mapping_info_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x0ff9f042 iwpm_remove_mapinfo +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x1502f9ce iwpm_register_pid_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x26a56a4c iwpm_add_and_query_mapping_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x5da59312 iwpm_register_pid +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x6968573d iwpm_add_mapping +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x6c74c344 iwpm_get_remote_info +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x6f0e37c1 iwpm_remote_info_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x75a6bd4d iw_cm_init_qp_attr +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x81eca446 iw_cm_accept +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x874d7781 iwpm_mapping_error_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x8c6804f6 iw_destroy_cm_id +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x8e3622f3 iw_cm_connect +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x904609a0 iwpm_remove_mapping +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x91a914d6 iwpm_init +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x93035f4e iw_cm_disconnect +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x9327be67 iwpm_exit +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x986e6d73 iw_cm_reject +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x99edf901 iwpm_valid_pid +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xc1c098d8 iw_cm_listen +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xca08af5b iw_create_cm_id +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xd1325065 iwpm_add_mapping_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xd447b24a iwpm_create_mapinfo +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xf380aa0f iwpm_add_and_query_mapping +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xfa434555 iwpm_mapping_info_cb +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x110689c3 rdma_destroy_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x110ddf53 rdma_set_service_type +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x1264d572 rdma_set_ib_paths +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x2948d8d8 rdma_join_multicast +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x344878d8 rdma_disconnect +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x4ff86e10 rdma_connect +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x532f6510 rdma_create_qp +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x568c9204 rdma_set_reuseaddr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x766f5242 rdma_resolve_addr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x7d7551f0 rdma_leave_multicast +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x8a2c85f9 rdma_get_service_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x907df803 rdma_event_msg +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x96f94df7 rdma_set_afonly +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x9a143749 rdma_notify +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x9b609a60 rdma_accept +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xa4454b12 rdma_destroy_qp +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xa74e6df3 rdma_listen +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xb02ed826 rdma_init_qp_attr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xf2e9bc50 rdma_create_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xf8a603d5 rdma_bind_addr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xf99a6c3a rdma_resolve_route +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xffbd0463 rdma_reject +EXPORT_SYMBOL drivers/input/gameport/gameport 0x0d41e141 gameport_unregister_port +EXPORT_SYMBOL drivers/input/gameport/gameport 0x1402c78e gameport_unregister_driver +EXPORT_SYMBOL drivers/input/gameport/gameport 0x1afb3479 gameport_stop_polling +EXPORT_SYMBOL drivers/input/gameport/gameport 0x2dbd36ed __gameport_register_port +EXPORT_SYMBOL drivers/input/gameport/gameport 0x490b8362 gameport_close +EXPORT_SYMBOL drivers/input/gameport/gameport 0x6669c3c3 gameport_start_polling +EXPORT_SYMBOL drivers/input/gameport/gameport 0x6e09f82c gameport_set_phys +EXPORT_SYMBOL drivers/input/gameport/gameport 0x9a674750 __gameport_register_driver +EXPORT_SYMBOL drivers/input/gameport/gameport 0x9a8b1005 gameport_open +EXPORT_SYMBOL drivers/input/input-polldev 0x3933d0bd devm_input_allocate_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0xc51e6a11 input_allocate_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0xd9dd8ac5 input_free_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0xddd9e3da input_register_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0xf7793cf0 input_unregister_polled_device +EXPORT_SYMBOL drivers/input/matrix-keymap 0xbe3a5c2a matrix_keypad_build_keymap +EXPORT_SYMBOL drivers/input/misc/ad714x 0x0a2cc121 ad714x_remove +EXPORT_SYMBOL drivers/input/misc/ad714x 0x1084f018 ad714x_enable +EXPORT_SYMBOL drivers/input/misc/ad714x 0x6b8f49ab ad714x_disable +EXPORT_SYMBOL drivers/input/misc/ad714x 0xb75b46ec ad714x_probe +EXPORT_SYMBOL drivers/input/misc/cma3000_d0x 0x74e54cbb 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/sparse-keymap 0x46ba4f47 sparse_keymap_free +EXPORT_SYMBOL drivers/input/sparse-keymap 0x6c475b15 sparse_keymap_report_event +EXPORT_SYMBOL drivers/input/sparse-keymap 0x96302b51 sparse_keymap_report_entry +EXPORT_SYMBOL drivers/input/sparse-keymap 0xa1050aa8 sparse_keymap_entry_from_keycode +EXPORT_SYMBOL drivers/input/sparse-keymap 0xde5ba774 sparse_keymap_entry_from_scancode +EXPORT_SYMBOL drivers/input/sparse-keymap 0xefeecf7f sparse_keymap_setup +EXPORT_SYMBOL drivers/input/touchscreen/ad7879 0x58aad077 ad7879_probe +EXPORT_SYMBOL drivers/input/touchscreen/ad7879 0x97f83edf ad7879_remove +EXPORT_SYMBOL drivers/input/touchscreen/ad7879 0xea065a63 ad7879_pm_ops +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x04403fcf unregister_capi_driver +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x14f2aa5a capi20_get_version +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x2b8eab1f capilib_free_ncci +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x2baa6586 capilib_new_ncci +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x31c24aa4 capi20_isinstalled +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x386f6ed8 detach_capi_ctr +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x50b33ca4 capi_cmsg2message +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x59907ac8 capi_ctr_down +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x6057c6f3 capi_message2cmsg +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x625c3e02 attach_capi_ctr +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x62e32d43 capilib_data_b3_conf +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x646a6afb capi20_release +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x6d1ccc43 capi_ctr_ready +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x71e8d5ba capilib_data_b3_req +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x7292ab34 cdebbuf_free +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x72a25a72 capi_cmsg2str +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x7a33596c capi20_get_serial +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x7e6f1307 capi20_get_manufacturer +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x8f699913 capilib_release +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x94baedb2 capi_ctr_resume_output +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x9f823278 register_capi_driver +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xaa165d27 capilib_release_appl +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xac2c9536 capi20_put_message +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xb19fda8d capi_cmd2str +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xb56a34ec capi20_register +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xb60e5e5f capi_cmsg_header +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xbefbabed capi_ctr_handle_message +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xc42d9ec1 capi20_manufacturer +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xe19a11ac capi20_get_profile +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xf6501377 capi_ctr_suspend_output +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xfd552f7a capi_message2str +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x0b80173f avmcard_dma_free +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x25f86a3a b1_getrevision +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x3f0ad854 b1_reset_ctr +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x45d4b02d b1_release_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x651784b1 b1_loaded +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x6e74f4a6 b1ctl_proc_fops +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x72a928d5 b1_parse_version +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x7bdbef26 b1_send_message +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x85f09690 b1_irq_table +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x8e0f436d b1_load_t4file +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x97c7a5ee b1_register_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xcabbd056 b1_load_config +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xdfd28376 b1_detect +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xe059f6f7 avmcard_dma_alloc +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xe5a065c7 b1_alloc_card +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xfa10fee4 b1_interrupt +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xfcf6d5f4 b1_load_firmware +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xff79e5d9 b1_free_card +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x249ddec4 b1dma_send_message +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x47eb0e2d b1pciv4_detect +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x509f239c b1dma_reset +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x5c222142 b1dma_load_firmware +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x637b38d0 b1dma_reset_ctr +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x74c94aea t1pci_detect +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x8adb2b59 b1dma_register_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xcceed71c b1dma_release_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xd6f9f1ea b1dma_interrupt +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xffdd3653 b1dmactl_proc_fops +EXPORT_SYMBOL drivers/isdn/hardware/eicon/divadidd 0x2974ead1 DIVA_DIDD_Read +EXPORT_SYMBOL drivers/isdn/hardware/eicon/divadidd 0x7ab59853 proc_net_eicon +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0x0f5baede mISDNisac_irq +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0x28e37868 mISDNipac_init +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0x424a1835 mISDNisac_init +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0xa110c633 mISDNipac_irq +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNisar 0x2f1bc508 mISDNisar_irq +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNisar 0xf876eeb7 mISDNisar_init +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x07f4f2ce hisax_unregister +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x148f0c99 FsmFree +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x6fe1ca04 FsmDelTimer +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x87378072 hisax_init_pcmcia +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x93a64734 FsmChangeState +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x9df0cd27 FsmEvent +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x9f987c85 FsmRestartTimer +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0xa1bc94b9 FsmInitTimer +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0xee93522c hisax_register +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0xf0a16657 FsmNew +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0xfc27303b HiSax_closecard +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x24186424 isac_setup +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x3f3b323a isac_d_l2l1 +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x5ca3e95c isacsx_irq +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0xa49991dd isac_init +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0xaa5b7d2e isac_irq +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0xce73def5 isacsx_setup +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0x48c2721a isdn_ppp_unregister_compressor +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0xb687d213 isdn_ppp_register_compressor +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0xe8a52d72 register_isdn +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0xfa06820f isdn_register_divert +EXPORT_SYMBOL drivers/isdn/i4l/isdnhdlc 0x3b71e4fc isdnhdlc_decode +EXPORT_SYMBOL drivers/isdn/i4l/isdnhdlc 0x59cc8a7e isdnhdlc_out_init +EXPORT_SYMBOL drivers/isdn/i4l/isdnhdlc 0x8ee38862 isdnhdlc_rcv_init +EXPORT_SYMBOL drivers/isdn/i4l/isdnhdlc 0xfd9d4c09 isdnhdlc_encode +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x014121b9 mISDN_unregister_device +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x06992264 mISDN_freedchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x06fcebef mISDN_FsmDelTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x0848633e get_next_dframe +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x0d7e6921 recv_Bchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x1088d8ac queue_ch_frame +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x1cf196fb mISDN_FsmAddTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x2348cc3c mISDN_FsmFree +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x29fa5b43 mISDN_FsmRestartTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x34a9f0e1 mISDN_register_Bprotocol +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x36ec1940 mISDN_FsmInitTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x4a16a4e5 mISDN_freebchannel +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 0x59e6921b mISDN_initdchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x5b8e4601 create_l1 +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x6699490f get_next_bframe +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x6b5b5638 recv_Bchannel_skb +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x6bc4f6d1 mISDN_ctrl_bchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x7b2c27c8 dchannel_senddata +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x848e85ce bchannel_senddata +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x8a4e99fb mISDN_clock_update +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x925dfa1d mISDNDevName4ch +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xb1d39733 mISDN_initbchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xc3401729 mISDN_register_clock +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xc98c85a0 bchannel_get_rxbuf +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xcf292250 mISDN_register_device +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xd1ff532b recv_Echannel +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 0xe61ed2b3 recv_Dchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xe8f4a852 recv_Dchannel_skb +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xe8f617eb mISDN_unregister_clock +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xedaa863e mISDN_unregister_Bprotocol +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xf9e7832f mISDN_FsmNew +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xfb82d4a4 mISDN_clear_bchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_dsp 0x01087af0 mISDN_dsp_element_unregister +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_dsp 0x60721da7 dsp_audio_law_to_s32 +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_dsp 0xa215f1b2 dsp_audio_s16_to_law +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_dsp 0xb98308d8 mISDN_dsp_element_register +EXPORT_SYMBOL drivers/md/bcache/bcache 0x0c161f5b bch_bset_sort_state_init +EXPORT_SYMBOL drivers/md/bcache/bcache 0x11f9991b bch_btree_sort_partial +EXPORT_SYMBOL drivers/md/bcache/bcache 0x1f529ce8 bch_bset_build_written_tree +EXPORT_SYMBOL drivers/md/bcache/bcache 0x2c647132 closure_sub +EXPORT_SYMBOL drivers/md/bcache/bcache 0x41650d4f closure_wait +EXPORT_SYMBOL drivers/md/bcache/bcache 0x440b4830 bch_btree_iter_next +EXPORT_SYMBOL drivers/md/bcache/bcache 0x44a37d62 bch_btree_iter_init +EXPORT_SYMBOL drivers/md/bcache/bcache 0x5b59b856 bch_btree_insert_key +EXPORT_SYMBOL drivers/md/bcache/bcache 0x6d7dda0f bch_btree_sort_lazy +EXPORT_SYMBOL drivers/md/bcache/bcache 0x7daccb73 bch_btree_keys_alloc +EXPORT_SYMBOL drivers/md/bcache/bcache 0x8833b0e8 bch_btree_keys_free +EXPORT_SYMBOL drivers/md/bcache/bcache 0xa3c5c702 bch_bset_fix_invalidated_key +EXPORT_SYMBOL drivers/md/bcache/bcache 0xc9d83571 closure_put +EXPORT_SYMBOL drivers/md/bcache/bcache 0xca5df778 __bch_bset_search +EXPORT_SYMBOL drivers/md/bcache/bcache 0xce47a6d9 bch_btree_keys_init +EXPORT_SYMBOL drivers/md/bcache/bcache 0xd2813054 bch_bset_insert +EXPORT_SYMBOL drivers/md/bcache/bcache 0xdd08ef99 closure_sync +EXPORT_SYMBOL drivers/md/bcache/bcache 0xdf892351 bch_bkey_try_merge +EXPORT_SYMBOL drivers/md/bcache/bcache 0xe3c17af1 __closure_wake_up +EXPORT_SYMBOL drivers/md/bcache/bcache 0xec6f33d0 bch_bset_init_next +EXPORT_SYMBOL drivers/md/dm-bufio 0x268682d2 dm_bufio_forget +EXPORT_SYMBOL drivers/md/dm-bufio 0x72f07bf4 dm_bufio_set_minimum_buffers +EXPORT_SYMBOL drivers/md/dm-log 0x96659735 dm_dirty_log_create +EXPORT_SYMBOL drivers/md/dm-log 0x9e957377 dm_dirty_log_destroy +EXPORT_SYMBOL drivers/md/dm-log 0xb9096c1b dm_dirty_log_type_unregister +EXPORT_SYMBOL drivers/md/dm-log 0xe71c135b dm_dirty_log_type_register +EXPORT_SYMBOL drivers/md/dm-snapshot 0x03b922d4 dm_exception_store_create +EXPORT_SYMBOL drivers/md/dm-snapshot 0x1a52ed0c dm_exception_store_destroy +EXPORT_SYMBOL drivers/md/dm-snapshot 0x40142b8f dm_snap_cow +EXPORT_SYMBOL drivers/md/dm-snapshot 0x87c2bfe7 dm_snap_origin +EXPORT_SYMBOL drivers/md/dm-snapshot 0xd1e45382 dm_exception_store_type_register +EXPORT_SYMBOL drivers/md/dm-snapshot 0xd834c06d dm_exception_store_type_unregister +EXPORT_SYMBOL drivers/md/raid456 0x00ec5e99 raid5_set_cache_size +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x27a9d64e flexcop_device_exit +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x39520fc3 flexcop_pass_dmx_packets +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x63516ca6 flexcop_device_initialize +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x71a02ae8 flexcop_wan_set_speed +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x733de9af flexcop_device_kmalloc +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x73423ac6 flexcop_sram_set_dest +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x797c8d27 flexcop_pid_feed_control +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xa29596c8 flexcop_device_kfree +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xc0837cf6 flexcop_sram_ctrl +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xcecdc375 flexcop_dump_reg +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xcfa058fb flexcop_eeprom_check_mac_addr +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xdaf9e602 flexcop_pass_dmx_data +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xfef6038f flexcop_i2c_request +EXPORT_SYMBOL drivers/media/common/cx2341x 0x1ca0c084 cx2341x_log_status +EXPORT_SYMBOL drivers/media/common/cx2341x 0x2f25eee2 cx2341x_update +EXPORT_SYMBOL drivers/media/common/cx2341x 0x30cb4cd7 cx2341x_ext_ctrls +EXPORT_SYMBOL drivers/media/common/cx2341x 0x3573732a cx2341x_handler_set_busy +EXPORT_SYMBOL drivers/media/common/cx2341x 0x3db8be82 cx2341x_ctrl_query +EXPORT_SYMBOL drivers/media/common/cx2341x 0x6581062a cx2341x_handler_setup +EXPORT_SYMBOL drivers/media/common/cx2341x 0x7cae506d cx2341x_handler_set_50hz +EXPORT_SYMBOL drivers/media/common/cx2341x 0xa8f09342 cx2341x_handler_init +EXPORT_SYMBOL drivers/media/common/cx2341x 0xc184ec1e cx2341x_ctrl_get_menu +EXPORT_SYMBOL drivers/media/common/cx2341x 0xcf76ce95 cx2341x_fill_defaults +EXPORT_SYMBOL drivers/media/common/cx2341x 0xcf8b77a4 cx2341x_mpeg_ctrls +EXPORT_SYMBOL drivers/media/common/cypress_firmware 0x9c589dc9 cypress_load_firmware +EXPORT_SYMBOL drivers/media/common/tveeprom 0x1b698706 tveeprom_read +EXPORT_SYMBOL drivers/media/common/tveeprom 0x6efcd695 tveeprom_hauppauge_analog +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x02dbaa3b dvb_ca_en50221_camready_irq +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x0b3e7ea1 dvb_net_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x1b51919c dvb_frontend_resume +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x21bbf531 dvb_generic_open +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x237b5737 dvb_register_device +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x27e53ef6 dvb_ca_en50221_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x2975b9bd dvb_ringbuffer_empty +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x3a1c25ed dvb_ca_en50221_camchange_irq +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x4246fe28 dvb_unregister_frontend +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x4bf694ce dvb_register_frontend +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x589cacef dvb_dmx_swfilter +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x5ab4496e dvb_ringbuffer_free +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x60d7f247 dvb_generic_ioctl +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x6adb95ec dvb_frontend_suspend +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x7092ba42 dvb_ringbuffer_write_user +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x70b5b407 dvb_frontend_reinitialise +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x73c71e9b dvb_net_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x74a5a698 dvb_filter_pes2ts_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x75ff42c3 dvb_dmx_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x7ba8a71b dvb_dmx_swfilter_raw +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x7caa224e dvb_ringbuffer_read +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x80e3832d dvb_filter_get_ac3info +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x87efdfae dvb_dmxdev_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x900f4a09 dvb_dmxdev_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x9510a851 dvb_ringbuffer_flush +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xa10e976c dvb_ringbuffer_flush_spinlock_wakeup +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xa34aff51 dvb_ca_en50221_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xa62e902b dvb_dmx_swfilter_204 +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xab56e804 dvb_ringbuffer_avail +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xac4ca1b0 intlog2 +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xbaac6797 dvb_frontend_detach +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xc017aa88 dvb_dmx_swfilter_packets +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xc3c77f8d dvb_ringbuffer_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xc7e5a673 dvb_register_adapter +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xdaf29cfc dvb_generic_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xddf676f8 dvb_ca_en50221_frda_irq +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xe5ae8707 intlog10 +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xe60d865f dvb_ringbuffer_write +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xee04d951 dvb_unregister_adapter +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xf197fbeb dvb_dmx_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xf23a08e3 dvb_ringbuffer_read_user +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xf821d629 dvb_frontend_sleep_until +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xf826deb0 dvb_filter_pes2ts +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xfae6acfa dvb_unregister_device +EXPORT_SYMBOL drivers/media/dvb-frontends/a8293 0xb2439d07 a8293_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/af9013 0xa3d5e5ee af9013_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/atbm8830 0x702f03bb atbm8830_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x101e9285 au8522_init +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x122a42ee au8522_readreg +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x2d541969 au8522_writereg +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x4016f8f9 au8522_i2c_gate_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x57e67baa au8522_sleep +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x760c46f8 au8522_release_state +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0xc0979979 au8522_led_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0xdcb316dc au8522_analog_i2c_gate_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0xe8735db7 au8522_get_state +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_dig 0xe73192e8 au8522_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/bcm3510 0xbd70862e bcm3510_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx22700 0x935bec11 cx22700_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx22702 0xf7a44ab6 cx22702_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24110 0x5cc220cd cx24110_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24113 0x2526c8b8 cx24113_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24113 0xa53ea4b5 cx24113_agc_callback +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24116 0xe497f732 cx24116_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24120 0xbc6b1ff1 cx24120_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24123 0x5a72a93e cx24123_get_tuner_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24123 0xdb13d4d8 cx24123_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cxd2820r 0xbc9b05eb cxd2820r_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0x0e689668 dib0070_get_rf_output +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0x6873cf14 dib0070_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0x81b05cf3 dib0070_set_rf_output +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0xc78674c9 dib0070_wbd_offset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0xf6f3c01b dib0070_ctrl_agc_filter +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x12a11872 dib0090_update_tuning_table_7090 +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x295efb0b dib0090_get_current_gain +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x2f4e5da0 dib0090_set_vga +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x340e1e92 dib0090_get_tune_state +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x59b4c491 dib0090_register +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x63c8b6e5 dib0090_update_rframp_7090 +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x797f9eb7 dib0090_dcc_freq +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x912fc4e6 dib0090_set_switch +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x9ed10a75 dib0090_get_wbd_target +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xca91605e dib0090_pwm_gain_reset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xd236bccb dib0090_set_dc_servo +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xdd749ab9 dib0090_set_tune_state +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xeefdcb6c dib0090_gain_control +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xfdabaf03 dib0090_get_wbd_offset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xfe05ffb0 dib0090_fw_register +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mb 0x8e0eedf9 dib3000mb_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x175834cd dib3000mc_pid_parse +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x3c2b3a7d dib3000mc_get_tuner_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x4dd18fd7 dib3000mc_i2c_enumeration +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x8531f6ad dib3000mc_pid_control +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0xc1ec2265 dib3000mc_set_config +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0xc65a85ec dib3000mc_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0x2df55431 dib7000m_pid_filter +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0x9d9a92b9 dib7000m_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0xa0559109 dib7000m_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0xb1986194 dib7000m_get_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0xc92da24a dib7000p_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x5611a965 dib8000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0x07f92b96 dibx000_get_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0x240fac96 dibx000_i2c_set_speed +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0x2fde0876 dibx000_reset_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0x3133eff4 dibx000_init_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0xad3ad91c systime +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0xbeb66854 dibx000_exit_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/drx39xyj/drx39xyj 0xf7b55510 drx39xxj_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/drxd 0x34aa732f drxd_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/drxk 0xb115798c drxk_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ds3000 0xeefb7b18 ds3000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dvb-pll 0xe19a78d5 dvb_pll_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ec100 0x2fda4686 ec100_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/isl6405 0x6b5e0813 isl6405_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/isl6421 0x0e01dbe4 isl6421_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/isl6423 0x449aba07 isl6423_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/itd1000 0xb69adbc6 itd1000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ix2505v 0xff0471d0 ix2505v_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/l64781 0xa0783f12 l64781_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lg2160 0x4664f8f4 lg2160_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgdt3305 0x5f61623b lgdt3305_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgdt3306a 0xcd486f6f lgdt3306a_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgdt330x 0xe50567f7 lgdt330x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgs8gxx 0x14d9aaab lgs8gxx_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lnbp21 0x10e962d3 lnbp21_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lnbp21 0x42c6ec93 lnbh24_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lnbp22 0x1b0f24af lnbp22_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/m88ds3103 0x4aac554c m88ds3103_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/m88ds3103 0x9e76f28d m88ds3103_get_agc_pwm +EXPORT_SYMBOL drivers/media/dvb-frontends/m88rs2000 0xd1d08e90 m88rs2000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mb86a16 0x7778d94c mb86a16_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mb86a20s 0x2f94fb9c mb86a20s_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mt312 0x4cbadb3c mt312_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mt352 0x0122978b mt352_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/nxt200x 0x2772c1c1 nxt200x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/nxt6000 0xc5e2bdc6 nxt6000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/or51132 0x9cac31f4 or51132_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/or51211 0x1bcf78e1 or51211_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1409 0x1bb9abfc s5h1409_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1411 0x0876725c s5h1411_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1420 0x41315992 s5h1420_get_tuner_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1420 0xc2e440f4 s5h1420_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s921 0xf8a5391d s921_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/si2165 0x5c0dbae4 si2165_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/si21xx 0x48f32869 si21xx_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/sp8870 0x7acb39c7 sp8870_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/sp887x 0x297efb06 sp887x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stb0899 0xab358608 stb0899_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stb6000 0xaad1a543 stb6000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stb6100 0x218ee634 stb6100_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0288 0xf97574ca stv0288_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0297 0xcb86413c stv0297_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0299 0x0fc3b3de stv0299_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0367 0x149201ee stv0367ter_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0367 0x17cb39f4 stv0367cab_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0900 0xd87d2b2e stv0900_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv090x 0x596be878 stv090x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv6110 0xb18d5c3b stv6110_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv6110x 0xd05bb9ea stv6110x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10021 0xdbb9bdac tda10021_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10023 0xfbb0a917 tda10023_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10048 0x8516a4db tda10048_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda1004x 0x9d0bf657 tda10045_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda1004x 0xa91e5e3f tda10046_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10071 0xcd7e0425 tda10071_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10086 0x71e41b43 tda10086_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda665x 0x53cc6750 tda665x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda8083 0xfee1ec4d tda8083_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda8261 0x1d7c099b tda8261_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda826x 0x69c1e0cf tda826x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ts2020 0xb2ee2dcf ts2020_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tua6100 0x611b3882 tua6100_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ves1820 0xa70b6e93 ves1820_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ves1x93 0x2e6d3b6b ves1x93_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/zl10036 0x88b24a3b zl10036_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/zl10039 0xf07898c3 zl10039_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/zl10353 0xf0531070 zl10353_attach +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x013db79b flexcop_dma_config +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x0cdd278c flexcop_dma_free +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x1ca728b5 flexcop_dma_control_timer_irq +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x4064eba9 flexcop_dma_config_timer +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x75852d5c flexcop_dma_control_size_irq +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x8ec0b220 flexcop_dma_allocate +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0xcbd03375 flexcop_dma_xfer_control +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0x09e71a02 bt878_device_control +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0x3c3be493 bt878_start +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0x68620d7a bt878 +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0xd52017b6 bt878_stop +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0xd5d0bdef bt878_num +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0x00772873 bttv_get_pcidev +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0x11dc4b6d bttv_gpio_enable +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0x5b852604 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 0xfc4cccdc bttv_sub_register +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x087b7153 dst_comm_init +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x11e58702 dst_error_recovery +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x485dda6f write_dst +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x5d08e012 rdc_reset_state +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xa44ab041 read_dst +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xb5e2a12b dst_error_bailout +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xbe4de735 dst_pio_disable +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xe3504a57 dst_wait_dst_ready +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xe94b8c9c dst_check_sum +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xfd641809 dst_attach +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst_ca 0xe2f476ea dst_ca_attach +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x00a0403a cx18_stop_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x18e5bfc2 cx18_ext_init +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x2cdea06d cx18_reset_ir_gpio +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x662d14c7 cx18_start_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x83afaa9c cx18_release_stream +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0xa72aaff4 cx18_claim_stream +EXPORT_SYMBOL drivers/media/pci/cx23885/altera-ci 0x235e7daa 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 0x10b29cb7 cx25821_dev_get +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x252b45dc cx25821_sram_channel_dump_audio +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x784853c3 cx25821_print_irqbits +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x79ab3398 cx25821_risc_databuffer_audio +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x7d811e1d cx25821_dev_unregister +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xa0dc349a cx25821_sram_channel_setup_audio +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xc5d38741 cx25821_sram_channels +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xdb583fa2 cx25821_riscmem_alloc +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xfcb1c66f cx25821_set_gpiopin_direction +EXPORT_SYMBOL drivers/media/pci/cx88/cx88-vp3054-i2c 0x7bdb499b vp3054_i2c_probe +EXPORT_SYMBOL drivers/media/pci/cx88/cx88-vp3054-i2c 0x8849b693 vp3054_i2c_remove +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0x3610cb71 cx88_set_freq +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0x3fe5e1fa cx88_querycap +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0x5ed241af cx88_video_mux +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0xb0432deb cx88_enum_input +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x2aacb329 cx8802_cancel_buffers +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x627a02f3 cx8802_unregister_driver +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x72e53b3a cx8802_get_driver +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0xa5e7d2a4 cx8802_register_driver +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0xaacee7d0 cx8802_start_dma +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0xb8c08378 cx8802_buf_prepare +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0xd8675e26 cx8802_buf_queue +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x0ff91054 cx88_risc_buffer +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x1cf919eb cx88_core_put +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x1d6a2129 cx88_set_tvaudio +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x39f55314 cx88_shutdown +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x4216fc84 cx88_sram_channels +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x4796341d cx88_ir_start +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x591fde9e cx88_sram_channel_dump +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x6141c8c5 cx88_tuner_callback +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x73f8975a cx88_reset +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x7477ac69 cx88_set_scale +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x762fd5ec cx88_set_tvnorm +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x7642ed3c cx88_print_irqbits +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x788254b0 cx88_dsp_detect_stereo_sap +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x904b8696 cx88_audio_thread +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x920e2764 cx88_core_irq +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xa120a6e8 cx88_vdev_init +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xa68118db cx88_get_stereo +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xb2f00763 cx88_ir_stop +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xbe7cae73 cx88_set_stereo +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xcebc7536 cx88_newstation +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xd6d1ff97 cx88_sram_channel_setup +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xe70a5f18 cx88_wakeup +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xf9aeafcd cx88_risc_databuffer +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xfca8619b cx88_core_get +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x02eda28f ivtv_start_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x032e85c5 ivtv_clear_irq_mask +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x03314e8f ivtv_release_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x0f0003b4 ivtv_stop_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x14f67530 ivtv_debug +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x17ef8da7 ivtv_reset_ir_gpio +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x30cc4f36 ivtv_firmware_check +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x4a882631 ivtv_api +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x565da8a6 ivtv_udma_prepare +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x867680e6 ivtv_ext_init +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xa7ec496d ivtv_vapi_result +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xbddc52e7 ivtv_udma_alloc +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xca48c9ee ivtv_vapi +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xd451fb71 ivtv_udma_unmap +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xd805e4af ivtv_udma_setup +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xdca5ce62 ivtv_init_on_first_open +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xe2bdd325 ivtv_claim_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xeb0ba91a ivtv_set_irq_mask +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x0138010b saa_dsp_writel +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x023f1b23 saa7134_devlist_lock +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x04e83446 saa7134_tuner_callback +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x11784edc saa7134_pgtable_alloc +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x1211df5d saa7134_devlist +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x1846e0f6 saa7134_ts_register +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x39a51457 saa7134_dmasound_exit +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x520580fc saa7134_pgtable_build +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x59c7aa11 saa7134_set_dmabits +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x5afa66a6 saa7134_ts_unregister +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x75c66969 saa7134_boards +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xb95b4397 saa7134_dmasound_init +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xbe4e5b95 saa7134_tvaudio_setmute +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xc6770ed0 saa7134_pgtable_free +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xd427ac39 saa7134_set_gpio +EXPORT_SYMBOL drivers/media/pci/ttpci/ttpci-eeprom 0x78129b3f ttpci_eeprom_parse_mac +EXPORT_SYMBOL drivers/media/pci/ttpci/ttpci-eeprom 0xc3e4c127 ttpci_eeprom_decode_mac +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x282088d8 soc_camera_host_register +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x38f1251e soc_camera_apply_board_flags +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x5b12b4e7 soc_camera_power_init +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x74e7249c soc_camera_xlate_by_fourcc +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x8c3f9850 soc_camera_power_on +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x9c39d308 soc_camera_power_off +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0xd82e26d1 soc_camera_host_unregister +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0x25c52d97 soc_mbus_samples_per_pixel +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0x2863728e soc_mbus_image_size +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0x29f5a98b soc_mbus_get_fmtdesc +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0x5f3e3558 soc_mbus_bytes_per_line +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0xc8b28da5 soc_mbus_config_compatible +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0xdc5dafe2 soc_mbus_find_fmtdesc +EXPORT_SYMBOL drivers/media/radio/tea575x 0x1c120625 snd_tea575x_enum_freq_bands +EXPORT_SYMBOL drivers/media/radio/tea575x 0x3193c9e0 snd_tea575x_init +EXPORT_SYMBOL drivers/media/radio/tea575x 0x33ce70f3 snd_tea575x_exit +EXPORT_SYMBOL drivers/media/radio/tea575x 0x59744e1e snd_tea575x_g_tuner +EXPORT_SYMBOL drivers/media/radio/tea575x 0x69cc504c snd_tea575x_hw_init +EXPORT_SYMBOL drivers/media/radio/tea575x 0xa80484ad snd_tea575x_set_freq +EXPORT_SYMBOL drivers/media/radio/tea575x 0xc4dc4635 snd_tea575x_s_hw_freq_seek +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x04dca738 lirc_unregister_driver +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x079e56d2 lirc_dev_fop_close +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x0dbdc03b lirc_dev_fop_poll +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x39273529 lirc_dev_fop_open +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x5eda4d5d lirc_dev_fop_ioctl +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x86586773 lirc_dev_fop_read +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x88d08256 lirc_dev_fop_write +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0xbec751e6 lirc_register_driver +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0xc502ad00 lirc_get_pdata +EXPORT_SYMBOL drivers/media/rc/rc-core 0x1dd0637a ir_raw_handler_unregister +EXPORT_SYMBOL drivers/media/rc/rc-core 0xf08b09e1 ir_raw_handler_register +EXPORT_SYMBOL drivers/media/tuners/fc0011 0x57003bed fc0011_attach +EXPORT_SYMBOL drivers/media/tuners/fc0012 0x6907c1d7 fc0012_attach +EXPORT_SYMBOL drivers/media/tuners/fc0013 0x006a0ed5 fc0013_rc_cal_reset +EXPORT_SYMBOL drivers/media/tuners/fc0013 0xbb5a9a89 fc0013_attach +EXPORT_SYMBOL drivers/media/tuners/fc0013 0xffae4802 fc0013_rc_cal_add +EXPORT_SYMBOL drivers/media/tuners/max2165 0x82c09a64 max2165_attach +EXPORT_SYMBOL drivers/media/tuners/mc44s803 0xb78c04f9 mc44s803_attach +EXPORT_SYMBOL drivers/media/tuners/mt2060 0xe53fe954 mt2060_attach +EXPORT_SYMBOL drivers/media/tuners/mt2131 0xdd775e71 mt2131_attach +EXPORT_SYMBOL drivers/media/tuners/mt2266 0x26870142 mt2266_attach +EXPORT_SYMBOL drivers/media/tuners/mxl5005s 0x82e8c024 mxl5005s_attach +EXPORT_SYMBOL drivers/media/tuners/qt1010 0x5f280268 qt1010_attach +EXPORT_SYMBOL drivers/media/tuners/tda18218 0x20a844a2 tda18218_attach +EXPORT_SYMBOL drivers/media/tuners/tuner-types 0x0cb4b189 tuners +EXPORT_SYMBOL drivers/media/tuners/tuner-types 0xc2821775 tuner_count +EXPORT_SYMBOL drivers/media/tuners/tuner-xc2028 0xebb458da xc2028_attach +EXPORT_SYMBOL drivers/media/tuners/xc4000 0x34cc2c72 xc4000_attach +EXPORT_SYMBOL drivers/media/tuners/xc5000 0x6a029a2d xc5000_attach +EXPORT_SYMBOL drivers/media/usb/cx231xx/cx231xx 0x208054ac cx231xx_register_extension +EXPORT_SYMBOL drivers/media/usb/cx231xx/cx231xx 0x423e4707 cx231xx_unregister_extension +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x36308720 dvb_usbv2_generic_rw_locked +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x483570fe dvb_usbv2_resume +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x508ddcfd dvb_usbv2_generic_write +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x5516081a dvb_usbv2_probe +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x5a41fa08 dvb_usbv2_suspend +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x9fa174aa dvb_usbv2_generic_rw +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0xba92e1a8 dvb_usbv2_disconnect +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0xc0228bfc dvb_usbv2_reset_resume +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0xf6a3050b dvb_usbv2_generic_write_locked +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x1b4a3763 dvb_usb_generic_rw +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x20842bcb dvb_usb_device_init +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x2c037356 dvb_usb_device_exit +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x5616269f dvb_usb_generic_write +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x5bc6d6a2 usb_cypress_load_firmware +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x7eb6c8e6 dvb_usb_get_hexline +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0xe5427100 dvb_usb_nec_rc_key_to_event +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-af9005-remote 0x13e247e0 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 0xe5dc21bf af9005_rc_decode +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x19a13f57 dibusb2_0_power_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x1f670077 dibusb_rc_query +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x2c6815c3 dibusb_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x3284a5f1 dibusb_read_eeprom_byte +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x3b0e3830 dibusb_streaming_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x4d46e769 dibusb_pid_filter +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x57d1a2e0 dibusb_power_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x86faa91b dibusb_i2c_algo +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xb47559e0 rc_map_dibusb_table +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xe6974fea dibusb_dib3000mc_frontend_attach +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xecc8df96 dibusb2_0_streaming_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xf4ec54ef dibusb_dib3000mc_tuner_attach +EXPORT_SYMBOL drivers/media/usb/em28xx/em28xx 0x3e419ab2 em28xx_unregister_extension +EXPORT_SYMBOL drivers/media/usb/em28xx/em28xx 0x41d56825 em28xx_register_extension +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x5a2e1acd go7007_snd_remove +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x7dd0b019 go7007_snd_init +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0xaee60e73 go7007_parse_video_stream +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0xb406c50e go7007_alloc +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0xb7a5e87b go7007_boot_encoder +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0xca247369 go7007_update_board +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0xd328d9f2 go7007_read_interrupt +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0xdc37ec3a go7007_register_encoder +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0xe241c52e go7007_read_addr +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x27e62f5c gspca_resume +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x4d7da35f gspca_suspend +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x573d6648 gspca_expo_autogain +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x7e60d163 gspca_disconnect +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x87a6e735 gspca_dev_probe +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x9670af2c gspca_debug +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0xc62dfdc8 gspca_dev_probe2 +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0xe9314c64 gspca_coarse_grained_expo_autogain +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0xfb2e62f4 gspca_frame_add +EXPORT_SYMBOL drivers/media/usb/tm6000/tm6000 0x0a3886b5 tm6000_register_extension +EXPORT_SYMBOL drivers/media/usb/tm6000/tm6000 0x69244bbc tm6000_init_digital_mode +EXPORT_SYMBOL drivers/media/usb/tm6000/tm6000 0x6b434482 tm6000_unregister_extension +EXPORT_SYMBOL drivers/media/usb/ttusb-dec/ttusbdecfe 0xd8de6f03 ttusbdecfe_dvbt_attach +EXPORT_SYMBOL drivers/media/usb/ttusb-dec/ttusbdecfe 0xf3196ec9 ttusbdecfe_dvbs_attach +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-common 0xabe27502 v4l2_ctrl_query_fill +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-mem2mem 0x459e133f v4l2_m2m_get_curr_priv +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-mem2mem 0x9c49f336 v4l2_m2m_mmap +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-mem2mem 0xa9b7787f v4l2_m2m_job_finish +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-mem2mem 0xda1cdce9 v4l2_m2m_get_vq +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0x249338b7 videobuf_dvb_dealloc_frontends +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0x849b9f8e videobuf_dvb_unregister_bus +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0x9ef4a1e4 videobuf_dvb_find_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0xaea17fb4 videobuf_dvb_register_bus +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0xb49c598f videobuf_dvb_get_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0xbf7ce2ee videobuf_dvb_alloc_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-core 0xe3d0695c vb2_querybuf +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0x28d9c772 vb2_dvb_get_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0x44c66219 vb2_dvb_alloc_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0x4a105adc vb2_dvb_dealloc_frontends +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0xa4708147 vb2_dvb_register_bus +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0xf0e3785e vb2_dvb_find_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0xf6f5bcb2 vb2_dvb_unregister_bus +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x0319494e v4l2_querymenu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x034866af v4l2_ctrl_activate +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x0372c6a8 video_ioctl2 +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x05a5c0bd v4l2_s_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x0614dd5a v4l2_video_std_frame_period +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x08ab96a1 v4l2_of_parse_endpoint +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x0931d958 v4l2_queryctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x0addfcd6 v4l2_g_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x0d1a4b7e v4l2_async_unregister_subdev +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x0e6db258 v4l2_ctrl_add_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x0ef1f4df v4l2_of_parse_link +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x123959a1 v4l2_type_names +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x1254214c v4l2_ctrl_new_int_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x12a219e6 v4l2_of_free_endpoint +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x1450df28 __v4l2_ctrl_modify_range +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x15ebc818 v4l2_subdev_s_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x16244fe5 v4l2_prio_check +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x1a6da8b3 v4l2_ctrl_cluster +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x1b5c0864 v4l2_ctrl_merge +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x1dea37da v4l2_ctrl_log_status +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x1dfab6d7 v4l2_query_ext_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x1f18df4f video_unregister_device +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x2342f1ae v4l2_prio_open +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x263260a9 v4l2_clk_get +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x2854049c v4l2_ctrl_notify +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x2db51f6a video_device_alloc +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x2f1dc444 v4l2_ctrl_radio_filter +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x329ae75a v4l2_ctrl_auto_cluster +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x32d507b6 v4l2_ctrl_grab +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x33200c28 v4l2_of_put_link +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x36847d11 v4l2_ctrl_get_int_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x3adbd595 v4l2_field_names +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x3bc04211 v4l2_clk_disable +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x3bdd0f94 v4l2_prio_change +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x3cf4543b __v4l2_ctrl_s_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x3d924f48 v4l2_clk_enable +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x44064c94 __v4l2_clk_register_fixed +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x454f6c7c v4l2_async_register_subdev +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x45a44c24 v4l2_ctrl_fill +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x4943429b __v4l2_ctrl_s_ctrl_int64 +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x495426ee v4l2_ctrl_get_name +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x4a558756 v4l2_clk_get_rate +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x4b402471 v4l2_subdev_s_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x4b77c88d v4l2_ctrl_replace +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x4e39f1ac v4l2_ctrl_g_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x5342fc33 v4l2_s_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x547f6c21 v4l2_subdev_g_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x6fcebb8a v4l2_ctrl_subdev_subscribe_event +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x762b98eb __video_register_device +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x762c8c17 v4l2_subdev_queryctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x7a3cd015 v4l2_ctrl_get_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x8106095a v4l2_prio_max +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x81f0f7da v4l2_ctrl_new_custom +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x833d1d35 v4l2_async_notifier_unregister +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x867027e9 v4l2_ctrl_new_std +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x87883d48 v4l2_ctrl_sub_ev_ops +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x8a69a25c v4l2_ctrl_add_handler +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x8d07f5ec v4l2_ctrl_handler_setup +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x8e811084 video_devdata +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x8edd2197 v4l2_ctrl_subdev_log_status +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x997eb6af v4l2_subdev_querymenu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xab83d3f8 v4l2_async_notifier_register +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb0595d54 v4l2_ctrl_g_ctrl_int64 +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb0ddd8fa v4l2_ctrl_new_std_menu_items +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb718e27e v4l2_try_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb77b0159 v4l2_prio_init +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb84b5d7f v4l2_ctrl_handler_free +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb882cebc video_usercopy +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xbc5671dc v4l_printk_ioctl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xbcc5fb0a v4l2_ctrl_new_std_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xc7109337 video_device_release +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xc84f0458 v4l2_subdev_init +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xcbffce6b v4l2_clk_unregister +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xcda04a5b v4l2_prio_close +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xceab5aa5 v4l2_ctrl_find +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xd22f44b3 video_device_release_empty +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xd48d4e42 v4l2_ctrl_handler_log_status +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xd6a4cfa3 v4l2_subdev_g_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xda393385 v4l2_clk_set_rate +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xdd70d2c6 v4l2_clk_register +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xdd7fb872 v4l2_g_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xdf05d10f __v4l2_ctrl_s_ctrl_string +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xdf98c86d v4l2_subdev_try_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe2b92059 v4l2_video_std_construct +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe3f144f5 v4l2_ctrl_poll +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe3fcdff2 v4l2_clk_unregister_fixed +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf207566b v4l2_clk_put +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf3251e7b v4l2_norm_to_name +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf544356a v4l2_of_alloc_parse_endpoint +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf6fd785d v4l2_ctrl_subscribe_event +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xfacb6584 v4l2_ctrl_handler_init_class +EXPORT_SYMBOL drivers/memstick/core/memstick 0x1bd063b3 memstick_free_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x1c091801 memstick_new_req +EXPORT_SYMBOL drivers/memstick/core/memstick 0x2161245d memstick_remove_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x21942d3f memstick_resume_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x2ebf0686 memstick_suspend_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x5d820a02 memstick_init_req_sg +EXPORT_SYMBOL drivers/memstick/core/memstick 0x8a8e8bb3 memstick_register_driver +EXPORT_SYMBOL drivers/memstick/core/memstick 0x93e906e8 memstick_detect_change +EXPORT_SYMBOL drivers/memstick/core/memstick 0x9ad3be63 memstick_unregister_driver +EXPORT_SYMBOL drivers/memstick/core/memstick 0x9d6da77c memstick_alloc_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0xbf15be67 memstick_next_req +EXPORT_SYMBOL drivers/memstick/core/memstick 0xdc07e67e memstick_init_req +EXPORT_SYMBOL drivers/memstick/core/memstick 0xdc232a9c memstick_set_rw_addr +EXPORT_SYMBOL drivers/memstick/core/memstick 0xf32130aa memstick_add_host +EXPORT_SYMBOL drivers/memstick/host/r592 0x52f1b23b memstick_debug_get_tpc_name +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x06d49973 mpt_get_msg_frame +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x202061f8 mpt_attach +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x29a6a927 mpt_findImVolumes +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x2da8fb73 mpt_put_msg_frame +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x32975b2a mpt_resume +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x3d239ebb mpt_free_msg_frame +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x3e5f9e9e mpt_alloc_fw_memory +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x4526289b mpt_event_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x49405de4 mpt_device_driver_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x4b71f05b mpt_halt_firmware +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x502108d0 mpt_fwfault_debug +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x51353aa3 mpt_reset_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x5f959359 mpt_event_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x6fe2289b mpt_print_ioc_summary +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x75506d54 mpt_send_handshake_request +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x80681f38 mpt_put_msg_frame_hi_pri +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x8f1577bf mptbase_sas_persist_operation +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x90eb74e9 mpt_clear_taskmgmt_in_progress_flag +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x9df3ce92 mpt_raid_phys_disk_pg0 +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xa56fd378 mpt_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xa76921f8 mpt_verify_adapter +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xaf5749d0 mpt_set_taskmgmt_in_progress_flag +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xb9bf5a4f mpt_Soft_Hard_ResetHandler +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xc0e69f82 mpt_device_driver_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xc47c22e8 mpt_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xc84360d1 mpt_raid_phys_disk_pg1 +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xcce45779 mpt_GetIocState +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xce37ead9 mpt_HardResetHandler +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xd0c171eb mpt_free_fw_memory +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xd9a92a75 mpt_reset_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xda65a614 mpt_raid_phys_disk_get_num_paths +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xdd805159 ioc_list +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xe3ec714b mpt_detach +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xf7096b27 mpt_config +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xfd5eefb8 mpt_suspend +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x182f83de mptscsih_flush_running_cmds +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x1dce066f mptscsih_ioc_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x368af904 mptscsih_taskmgmt_response_code +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x3cfe9457 mptscsih_slave_destroy +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x45871ba3 mptscsih_scandv_complete +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x4a03ad36 mptscsih_qcmd +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x595c0a2e mptscsih_bus_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x65030c5c mptscsih_host_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x6921140c mptscsih_is_phys_disk +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x6ba6f4f7 mptscsih_suspend +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x78018ea9 mptscsih_io_done +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x959f09f2 mptscsih_slave_configure +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x9da28591 mptscsih_remove +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xbade83f6 mptscsih_shutdown +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xc095be75 mptscsih_taskmgmt_complete +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xc0e370d1 mptscsih_raid_id_to_num +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xcd0f53f0 mptscsih_show_info +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xcdf3fbff mptscsih_info +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xd461fa2b mptscsih_dev_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xdd8bb322 mptscsih_bios_param +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xdd966127 mptscsih_change_queue_depth +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xdee532c1 mptscsih_host_attrs +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xdf84dd4a mptscsih_event_process +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xf0e2abe6 mptscsih_get_scsi_lookup +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xf9183af0 mptscsih_abort +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xfd3b2f73 mptscsih_IssueTaskMgmt +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xff7c958b mptscsih_resume +EXPORT_SYMBOL drivers/mfd/cros_ec 0x2b3930a7 cros_ec_suspend +EXPORT_SYMBOL drivers/mfd/cros_ec 0x3811c2f5 cros_ec_resume +EXPORT_SYMBOL drivers/mfd/cros_ec 0x448027df cros_ec_register +EXPORT_SYMBOL drivers/mfd/cros_ec 0xd24f04ca cros_ec_remove +EXPORT_SYMBOL drivers/mfd/dln2 0x000de52d dln2_register_event_cb +EXPORT_SYMBOL drivers/mfd/dln2 0x7548a108 dln2_transfer +EXPORT_SYMBOL drivers/mfd/dln2 0xf8fae962 dln2_unregister_event_cb +EXPORT_SYMBOL drivers/mfd/htc-pasic3 0x40f85871 pasic3_read_register +EXPORT_SYMBOL drivers/mfd/htc-pasic3 0x89cc3132 pasic3_write_register +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x28894a58 mc13xxx_unlock +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x291841ae mc13xxx_reg_read +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x2d74e2a4 mc13xxx_irq_status +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x3957931f mc13xxx_lock +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x67fc705d mc13xxx_get_flags +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x81e39e1e mc13xxx_irq_free +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x94953246 mc13xxx_reg_rmw +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x9882ff34 mc13xxx_reg_write +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x9ce46986 mc13xxx_irq_request +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xddc09790 mc13xxx_irq_mask +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xe39cb5c2 mc13xxx_irq_unmask +EXPORT_SYMBOL drivers/mfd/qcom_rpm 0x295fb567 qcom_rpm_write +EXPORT_SYMBOL drivers/mfd/tps6105x 0x105ed601 tps6105x_set +EXPORT_SYMBOL drivers/mfd/tps6105x 0x839ffcc8 tps6105x_get +EXPORT_SYMBOL drivers/mfd/tps6105x 0xefd01638 tps6105x_mask_and_set +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-irq 0x3b076c1f wm8994_irq_init +EXPORT_SYMBOL drivers/mfd/wm8994-irq 0xbb7663bd wm8994_irq_exit +EXPORT_SYMBOL drivers/mfd/wm8994-regmap 0x1799c4a0 wm8958_regmap_config +EXPORT_SYMBOL drivers/mfd/wm8994-regmap 0x25a37f39 wm8994_regmap_config +EXPORT_SYMBOL drivers/mfd/wm8994-regmap 0x88fbc68d wm1811_regmap_config +EXPORT_SYMBOL drivers/mfd/wm8994-regmap 0xca7dfd63 wm8994_base_regmap_config +EXPORT_SYMBOL drivers/misc/ad525x_dpot 0x4ec242f4 ad_dpot_probe +EXPORT_SYMBOL drivers/misc/ad525x_dpot 0x7b908b84 ad_dpot_remove +EXPORT_SYMBOL drivers/misc/altera-stapl/altera-stapl 0x0616d479 altera_init +EXPORT_SYMBOL drivers/misc/c2port/core 0x3579639c c2port_device_unregister +EXPORT_SYMBOL drivers/misc/c2port/core 0x67f873eb c2port_device_register +EXPORT_SYMBOL drivers/misc/ioc4 0xc9668384 ioc4_register_submodule +EXPORT_SYMBOL drivers/misc/ioc4 0xe7378432 ioc4_unregister_submodule +EXPORT_SYMBOL drivers/misc/tifm_core 0x15e728cc tifm_unregister_driver +EXPORT_SYMBOL drivers/misc/tifm_core 0x30b141e4 tifm_eject +EXPORT_SYMBOL drivers/misc/tifm_core 0x3e57f56b tifm_map_sg +EXPORT_SYMBOL drivers/misc/tifm_core 0x4bf07a9d tifm_has_ms_pif +EXPORT_SYMBOL drivers/misc/tifm_core 0x5c380aa9 tifm_free_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0x7ef4d322 tifm_add_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0x86ff6aee tifm_alloc_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0x8b8e3de7 tifm_remove_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0x9c49a3a5 tifm_alloc_device +EXPORT_SYMBOL drivers/misc/tifm_core 0xa8c2ec46 tifm_queue_work +EXPORT_SYMBOL drivers/misc/tifm_core 0xc0fc4e10 tifm_register_driver +EXPORT_SYMBOL drivers/misc/tifm_core 0xcc9560db tifm_unmap_sg +EXPORT_SYMBOL drivers/misc/tifm_core 0xfe286a76 tifm_free_device +EXPORT_SYMBOL drivers/mmc/host/dw_mmc 0x38a03156 dw_mci_suspend +EXPORT_SYMBOL drivers/mmc/host/dw_mmc 0x99c04240 dw_mci_resume +EXPORT_SYMBOL drivers/mmc/host/dw_mmc 0xaa6faadc dw_mci_remove +EXPORT_SYMBOL drivers/mmc/host/dw_mmc 0xe8628a2e dw_mci_probe +EXPORT_SYMBOL drivers/mmc/host/of_mmc_spi 0x0a409912 mmc_spi_get_pdata +EXPORT_SYMBOL drivers/mmc/host/of_mmc_spi 0xfb3eb03c mmc_spi_put_pdata +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x15a956cd cfi_build_cmd +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x37ade4ec cfi_send_gen_cmd +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x729b2a45 cfi_merge_status +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x81770287 cfi_fixup +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x82c0bf9a cfi_varsize_frob +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0xd1597012 cfi_build_cmd_addr +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0xf59c5b0f cfi_read_pri +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0xff9fa623 cfi_udelay +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0x094fc5ec unregister_mtd_chip_driver +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0x8583d400 do_map_probe +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0xaa3c71e5 register_mtd_chip_driver +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0xcdf0bbfa map_destroy +EXPORT_SYMBOL drivers/mtd/chips/gen_probe 0x0db15366 mtd_do_chip_probe +EXPORT_SYMBOL drivers/mtd/lpddr/lpddr_cmds 0x0af5cb7f lpddr_cmdset +EXPORT_SYMBOL drivers/mtd/maps/map_funcs 0x5f1dfa8c simple_map_init +EXPORT_SYMBOL drivers/mtd/mtd 0x1787ed3b mtd_concat_create +EXPORT_SYMBOL drivers/mtd/mtd 0x5756cad0 mtd_concat_destroy +EXPORT_SYMBOL drivers/mtd/nand/denali 0x25d2adba denali_init +EXPORT_SYMBOL drivers/mtd/nand/denali 0x459709e3 denali_remove +EXPORT_SYMBOL drivers/mtd/nand/nand 0x15dd52bf nand_unlock +EXPORT_SYMBOL drivers/mtd/nand/nand 0x3ec8bbbf nand_lock +EXPORT_SYMBOL drivers/mtd/nand/nand 0x8d03596d nand_scan_ident +EXPORT_SYMBOL drivers/mtd/nand/nand 0xa12a1b0c nand_scan_bbt +EXPORT_SYMBOL drivers/mtd/nand/nand 0xc6f1af10 nand_scan +EXPORT_SYMBOL drivers/mtd/nand/nand 0xdb05efd7 nand_scan_tail +EXPORT_SYMBOL drivers/mtd/nand/nand 0xef859391 onfi_async_timing_mode_to_sdr_timings +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0x228c99b8 nand_bch_calculate_ecc +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0x70097aa0 nand_bch_free +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0x967c4b77 nand_bch_init +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0xe1930a94 nand_bch_correct_data +EXPORT_SYMBOL drivers/mtd/nand/nand_ecc 0x3132ee65 __nand_calculate_ecc +EXPORT_SYMBOL drivers/mtd/nand/nand_ecc 0xb4b94377 __nand_correct_data +EXPORT_SYMBOL drivers/mtd/nand/nand_ecc 0xbd343cd9 nand_calculate_ecc +EXPORT_SYMBOL drivers/mtd/nand/nand_ecc 0xf116af1c nand_correct_data +EXPORT_SYMBOL drivers/mtd/nand/nand_ids 0x8cfcf75c nand_flash_ids +EXPORT_SYMBOL drivers/mtd/nand/nand_ids 0xa336feb7 nand_manuf_ids +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0x19b65bd9 flexonenand_region +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0x8189e21b onenand_scan_bbt +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0xef543f84 onenand_addr +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0xf5f178f1 onenand_default_bbt +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x0a8162f2 arcnet_send_packet +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x22ca1b8e arc_proto_default +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x2ca1b5a7 arcnet_unregister_proto +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x4416602f arcnet_close +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x578b242e arc_raw_proto +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x6534792a arcnet_debug +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x659b4008 arcnet_open +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x6b916873 arcnet_timeout +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x8982be28 arc_bcast_proto +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x9d5564d4 alloc_arcdev +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xd1cdfffb arc_proto_map +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xecb730b0 arcnet_interrupt +EXPORT_SYMBOL drivers/net/arcnet/com20020 0x6dd9e618 com20020_check +EXPORT_SYMBOL drivers/net/arcnet/com20020 0x7bccb2e5 com20020_netdev_ops +EXPORT_SYMBOL drivers/net/arcnet/com20020 0xa993522b com20020_found +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x119721ac ei_interrupt +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x121c3fba NS8390_init +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x1445b888 ei_start_xmit +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x38950d56 ei_set_multicast_list +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x3dcd3663 ei_close +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x437cb0b0 __alloc_ei_netdev +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x8179197a ei_get_stats +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xa0f9fd2e ei_tx_timeout +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xa6a16a02 ei_poll +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xad738645 ei_open +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xb55751e8 ei_netdev_ops +EXPORT_SYMBOL drivers/net/ethernet/broadcom/bnx2x/bnx2x 0xacab7e00 bnx2x_schedule_sp_rtnl +EXPORT_SYMBOL drivers/net/ethernet/broadcom/cnic 0x0d9b8b17 cnic_register_driver +EXPORT_SYMBOL drivers/net/ethernet/broadcom/cnic 0x636af174 cnic_unregister_driver +EXPORT_SYMBOL drivers/net/ethernet/cavium/thunder/thunder_bgx 0x285bde59 bgx_get_rx_stats +EXPORT_SYMBOL drivers/net/ethernet/cavium/thunder/thunder_bgx 0x42264715 bgx_get_lmac_count +EXPORT_SYMBOL drivers/net/ethernet/cavium/thunder/thunder_bgx 0x6dc1648d bgx_get_lmac_mac +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 0xe48ca42a bgx_get_tx_stats +EXPORT_SYMBOL drivers/net/ethernet/cavium/thunder/thunder_bgx 0xf101d1b2 bgx_get_lmac_link_state +EXPORT_SYMBOL drivers/net/ethernet/cavium/thunder/thunder_bgx 0xf9508980 bgx_set_lmac_mac +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x0506e773 cxgb3_alloc_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x297b9efb t3_l2t_send_slow +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x37692a56 cxgb3_queue_tid_release +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x5592711f t3_l2e_free +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x6c5148e3 t3_register_cpl_handler +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x75f0639d cxgb3_unregister_client +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x8258fb26 cxgb3_free_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x89f706f2 cxgb3_insert_tid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x8a16ba92 cxgb3_remove_tid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x8e247ad0 t3_l2t_send_event +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x93c30483 dev2t3cdev +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x98ff9ead t3_l2t_get +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x9b946584 cxgb3_ofld_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xa289f2f9 cxgb3_register_client +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xfa6a83ae cxgb3_free_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xfb2f1c5a cxgb3_alloc_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x006cb95d cxgb4_read_tpte +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x0f033374 cxgb4_l2t_get +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x10c48d95 cxgb4_clip_get +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x16eac327 cxgb4_free_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x26903e81 cxgb4_pktgl_to_skb +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x26ddc46c cxgb4_select_ntuple +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x2c4126f6 cxgb4_dcb_enabled +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x2cafade5 t4_cleanup_clip_tbl +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x30ab567b cxgb4_register_uld +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x398c649d cxgb4_dbfifo_count +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x3e492533 cxgb4_free_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x414bfec2 cxgb4_get_tcp_stats +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x49a51976 cxgb4_update_root_dev_clip +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x50ee5c07 cxgb4_best_aligned_mtu +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x530b85c5 cxgb4_create_server6 +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x588839c5 cxgb4_port_chan +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x5aa8fbcd cxgb4_port_idx +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x623b389e cxgb4_l2t_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x63577c22 cxgb4_remove_tid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x67fb07ab cxgb4_alloc_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x834481fa cxgb4_alloc_sftid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x8503248c cxgb4_create_server_filter +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xab58a40a cxgb4_sync_txq_pidx +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xad45e847 cxgb4_remove_server +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xb1ef2cb9 cxgb4_iscsi_init +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xb28edf3d cxgb4_alloc_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xbb96791c cxgb4_l2t_release +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xca22797c cxgb4_remove_server_filter +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xcb90d514 cxgb4_ofld_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xcece2e53 cxgb4_create_server +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xd00e5a36 cxgb4_unregister_uld +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xd0ae4e23 cxgb4_read_sge_timestamp +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xd69a0294 cxgb4_best_mtu +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xdb38dd50 cxgb4_flush_eq_cache +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xe59d3b80 cxgb4_clip_release +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xedee1dde cxgb4_bar2_sge_qregs +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xf7b08ffc cxgb4_port_viid +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0x0e712340 vnic_dev_get_res +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0x2864a562 vnic_dev_register +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0x4f650da7 vnic_dev_get_res_count +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0x51578874 vnic_dev_get_pdev +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0x9196d804 vnic_dev_unregister +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0xcf922e81 enic_api_devcmd_proxy_by_index +EXPORT_SYMBOL drivers/net/ethernet/emulex/benet/be2net 0xad59bd98 be_roce_unregister_driver +EXPORT_SYMBOL drivers/net/ethernet/emulex/benet/be2net 0xb9af8b9f be_roce_register_driver +EXPORT_SYMBOL drivers/net/ethernet/emulex/benet/be2net 0xbab62e22 be_roce_mcc_cmd +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x025ef8a9 mlx4_SET_VPORT_QOS_set +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0488083a mlx4_sync_pkey_table +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x051b0309 mlx4_SET_PORT_qpn_calc +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x053b5186 mlx4_put_slave_node_guid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0c282e58 mlx4_is_eq_shared +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x229f80cb mlx4_gen_pkey_eqe +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x33b355c7 mlx4_get_slave_port_state +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x36c77a91 mlx4_SET_PORT_BEACON +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3a533ee4 mlx4_is_eq_vector_valid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3c5e98eb set_and_calc_slave_port_state +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3c661dbf mlx4_gen_port_state_change_eqe +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4057753e mlx4_get_module_info +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x48d034ce mlx4_ALLOCATE_VPP_set +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6621a4a6 mlx4_SET_VPORT_QOS_get +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6857a9a1 mlx4_gen_guid_change_eqe +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6e321c76 mlx4_get_slave_from_roce_gid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x73b369e5 mlx4_SET_PORT_PRIO2TC +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x791e9578 mlx4_SET_PORT_SCHEDULER +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7c471c5a mlx4_gen_slaves_port_mgt_ev +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7f9b20a0 mlx4_SET_MCAST_FLTR +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8c7cce71 mlx4_test_interrupts +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x949f3e56 mlx4_get_roce_gid_from_slave +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x983f9bd4 mlx4_SET_PORT_VXLAN +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9b309a33 mlx4_SET_PORT_fcs_check +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa4852907 mlx4_get_slave_node_guid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xcc6bbd64 mlx4_ALLOCATE_VPP_get +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xcee7b0cc mlx4_get_slave_pkey_gid_tbl_len +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd31e2754 mlx4_release_eq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd3737ffb mlx4_assign_eq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xdaba1ed9 mlx4_get_eqs_per_port +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe42849c1 mlx4_is_slave_active +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe9468e12 mlx4_SET_PORT_general +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe983c225 mlx4_get_cpu_rmap +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xea932452 mlx4_get_parav_qkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf45fc161 mlx4_eq_get_irq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xfb4a489e mlx4_tunnel_steer_add +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x05ff4637 mlx5_core_create_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x0857aabd mlx5_get_flow_table_id +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x0ae45589 mlx5_cmd_comp_handler +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x0bbffa17 mlx5_cmd_exec +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x0de66fb5 mlx5_cmd_exec_cb +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x0eb7287e mlx5_del_flow_table_entry +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x1cd1ae6c mlx5_query_nic_vport_mac_address +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x1ea50a4d mlx5_core_query_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x332a1e82 mlx5_get_protocol_dev +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x348e5828 mlx5_core_query_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x373be3af mlx5_cmd_alloc_uar +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x37ccac1f mlx5_core_destroy_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x4b35e1fe mlx5_unmap_free_uar +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x53349b6d mlx5_core_query_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x54b20593 mlx5_core_query_vendor_id +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x5cf58b7b mlx5_cmd_free_uar +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x5f4e1bca mlx5_core_get_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x5fac64a2 mlx5_create_flow_table +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x64211da0 mlx5_cmd_init +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x65eb8010 mlx5_core_detach_mcg +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x6daf49cf mlx5_core_dealloc_pd +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x7b89a016 mlx5_core_create_psv +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x7c37b0ed mlx5_core_dump_fill_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x7d4d6b99 mlx5_register_interface +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x835a8203 mlx5_query_vport_state +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x88032dd2 mlx5_debugfs_root +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x8a23404f mlx5_core_arm_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x9353b2af mlx5_unregister_interface +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x95272333 mlx5_core_modify_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x9cb5a176 mlx5_core_alloc_pd +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xab9cd0f3 mlx5_core_create_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xadf9aff4 mlx5_core_destroy_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xb2213d49 mlx5_core_create_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xcc8b41b6 mlx5_alloc_map_uar +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xd1a9619f mlx5_core_destroy_psv +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xddffac40 mlx5_core_destroy_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe0e6a234 mlx5_cmd_cleanup +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe495a682 mlx5_vector2eqn +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe6af33e4 mlx5_destroy_flow_table +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe7d39712 mlx5_core_attach_mcg +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xfc728a49 mlx5_add_flow_table_entry +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x73854314 hdlcdrv_transmitter +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x89314bf1 hdlcdrv_unregister +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x8d235767 hdlcdrv_register +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0xe8f87874 hdlcdrv_receiver +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0xee243078 hdlcdrv_arbitrate +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x06db7d5f irda_register_dongle +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x2bf0967b sirdev_raw_read +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x32553d98 sirdev_put_instance +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x5791a435 irda_unregister_dongle +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xa701f2c8 sirdev_raw_write +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xc84bed41 sirdev_get_instance +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xd0fa343d sirdev_write_complete +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xddf42f77 sirdev_set_dtr_rts +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xf18ad1ef sirdev_receive +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xf9185e7b sirdev_set_dongle +EXPORT_SYMBOL drivers/net/mdio 0x22bce513 mdio_mii_ioctl +EXPORT_SYMBOL drivers/net/mdio 0x43e4defc mdio45_nway_restart +EXPORT_SYMBOL drivers/net/mdio 0x7577f992 mdio_set_flag +EXPORT_SYMBOL drivers/net/mdio 0xa1a29548 mdio45_probe +EXPORT_SYMBOL drivers/net/mdio 0xc6b1163f mdio45_links_ok +EXPORT_SYMBOL drivers/net/mdio 0xddc98749 mdio45_ethtool_gset_npage +EXPORT_SYMBOL drivers/net/phy/mdio-bitbang 0x433e9716 alloc_mdio_bitbang +EXPORT_SYMBOL drivers/net/phy/mdio-bitbang 0x6f6a361d free_mdio_bitbang +EXPORT_SYMBOL drivers/net/phy/mdio-octeon 0x8a1d5c26 octeon_mdiobus_force_mod_depencency +EXPORT_SYMBOL drivers/net/phy/vitesse 0x91490a35 vsc824x_add_skew +EXPORT_SYMBOL drivers/net/ppp/pppox 0x091b4466 pppox_ioctl +EXPORT_SYMBOL drivers/net/ppp/pppox 0x3a199ca3 pppox_unbind_sock +EXPORT_SYMBOL drivers/net/ppp/pppox 0x5d9f09fa register_pppox_proto +EXPORT_SYMBOL drivers/net/ppp/pppox 0xe0ff7a18 unregister_pppox_proto +EXPORT_SYMBOL drivers/net/sungem_phy 0x96216c9b sungem_phy_probe +EXPORT_SYMBOL drivers/net/team/team 0x052f99d2 team_mode_unregister +EXPORT_SYMBOL drivers/net/team/team 0x104e4aa5 team_modeop_port_change_dev_addr +EXPORT_SYMBOL drivers/net/team/team 0x37496aae team_options_unregister +EXPORT_SYMBOL drivers/net/team/team 0x692ccaf0 team_mode_register +EXPORT_SYMBOL drivers/net/team/team 0x7c2a66c2 team_options_change_check +EXPORT_SYMBOL drivers/net/team/team 0x86196e47 team_modeop_port_enter +EXPORT_SYMBOL drivers/net/team/team 0x8b495be8 team_option_inst_set_change +EXPORT_SYMBOL drivers/net/team/team 0x97385f05 team_options_register +EXPORT_SYMBOL drivers/net/usb/usbnet 0x5e87e9a9 usbnet_link_change +EXPORT_SYMBOL drivers/net/usb/usbnet 0xe2f14551 usbnet_device_suggests_idle +EXPORT_SYMBOL drivers/net/usb/usbnet 0xf9b28208 usbnet_manage_power +EXPORT_SYMBOL drivers/net/wan/hdlc 0x0482df5e hdlc_change_mtu +EXPORT_SYMBOL drivers/net/wan/hdlc 0x1f54fe1e hdlc_ioctl +EXPORT_SYMBOL drivers/net/wan/hdlc 0x2504b7b8 detach_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0x29d8a339 alloc_hdlcdev +EXPORT_SYMBOL drivers/net/wan/hdlc 0x3a72bdd4 hdlc_close +EXPORT_SYMBOL drivers/net/wan/hdlc 0x44a250f1 hdlc_start_xmit +EXPORT_SYMBOL drivers/net/wan/hdlc 0x6ef1aca0 unregister_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0x76a1ea3c attach_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0x7ed370a9 register_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0x9bfa78fd hdlc_open +EXPORT_SYMBOL drivers/net/wan/hdlc 0xc89717f3 unregister_hdlc_device +EXPORT_SYMBOL drivers/net/wimax/i2400m/i2400m 0xd511a6a4 i2400m_unknown_barker +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x0d10863f dfs_pattern_detector_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x319c6026 ath_is_49ghz_allowed +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x3613ab6a ath_regd_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x50c8f129 ath_is_mybeacon +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x5a6e3073 ath_hw_keyreset +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x8bd6d594 ath_hw_cycle_counters_update +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x8e71db68 ath_rxbuf_alloc +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x8eeda487 ath_printk +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x97814f6c ath_hw_get_listen_time +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xaafdb617 ath_is_world_regd +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xaf92f2a6 ath_key_delete +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xce840795 ath_reg_notifier_apply +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xe9dcf3a6 ath_key_config +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xf80e9d6f ath_hw_setbssidmask +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xfb4de67a ath_regd_get_band_ctl +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x2f3922d9 ath10k_core_stop +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x577f7f50 ath10k_core_unregister +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xa20b81b4 ath10k_debug_get_new_fw_crash_data +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xa4b28f25 ath10k_print_driver_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xa669e85f ath10k_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xaaaf35ec ath10k_core_destroy +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xc9165120 ath10k_core_start +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xd74f982b ath10k_core_create +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xd9550f3f ath10k_warn +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xe2f42406 ath10k_core_register +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xf67201ec ath10k_err +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x061d1cd7 ath6kl_core_rx_complete +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x221a94a6 ath6kl_core_destroy +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x3cf277e5 ath6kl_core_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x4fcd9b91 ath6kl_cfg80211_suspend +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x525356f2 ath6kl_core_tx_complete +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x5fc35acf ath6kl_core_cleanup +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x7b317424 ath6kl_printk +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x80a09613 ath6kl_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x91cfb84a ath6kl_hif_rw_comp_handler +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x94783543 ath6kl_core_create +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x9ca9a465 ath6kl_cfg80211_resume +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xa6f66cc1 ath6kl_warn +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xbcee8127 ath6kl_stop_txrx +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xcb014460 ath6kl_err +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xf6e9088d ath6kl_hif_intr_bh_handler +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x263c3fdd ath9k_cmn_get_hw_crypto_keytype +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x2d15177d ath9k_cmn_debug_stat_rx +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x3085e79c ath9k_cmn_rx_accept +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x32571f88 ath9k_cmn_debug_modal_eeprom +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x38f35d79 ath_cmn_process_fft +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x3b301b26 ath9k_cmn_process_rssi +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x47e06a42 ath9k_cmn_debug_recv +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x722c8a75 ath9k_cmn_spectral_deinit_debug +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x7530cc31 ath9k_cmn_spectral_scan_config +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x86dae393 ath9k_cmn_reload_chainmask +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x8c9a8178 ath9k_cmn_debug_phy_err +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x93c174be ath9k_cmn_rx_skb_postprocess +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x93fb4732 ath9k_cmn_beacon_config_ap +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x98501b2f ath9k_cmn_init_channels_rates +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x9874e811 ath9k_cmn_get_channel +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xa02f78f6 ath9k_cmn_beacon_config_sta +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xa51c02e7 ath9k_cmn_init_crypto +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xb3f8cada ath9k_cmn_beacon_config_adhoc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xb5bb2225 ath9k_cmn_spectral_init_debug +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xd2981357 ath9k_cmn_count_streams +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xd5b01e8e ath9k_cmn_spectral_scan_trigger +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xd73be6fe ath9k_cmn_debug_base_eeprom +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xe7766a41 ath9k_cmn_process_rate +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xebc34aee ath9k_cmn_setup_ht_cap +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xf2984aed ath9k_cmn_update_txpow +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x00bd628a ath9k_hw_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x047a1ec6 ath9k_hw_addrxbuf_edma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0583af6b ath9k_hw_init_btcoex_hw +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x09b39023 ath9k_hw_set_tsfadjust +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0b6b03e3 ath9k_hw_setopmode +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0cac0055 ath9k_hw_deinit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0cd97849 ath9k_hw_name +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0ce74eaf ath9k_hw_gettsf64 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1128078f ath9k_hw_numtxpending +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x12559122 ath9k_hw_getnf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1785da4c ath9k_hw_btcoex_set_concur_txprio +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x189479c9 ath9k_hw_setantenna +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1aae158c ath9k_hw_enable_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1ce8a45f ath9k_hw_abort_tx_dma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1ebe483a ar9003_hw_bb_watchdog_dbg_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x21e5dcbe ath9k_hw_gen_timer_stop +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x23792059 ath9k_hw_wow_wakeup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x296baf98 ar9003_mci_send_wlan_channels +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2a7307a3 ath9k_hw_stop_dma_queue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2c123245 ath9k_hw_set_txpowerlimit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2cf3030d ar9003_paprd_is_done +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2e9138de ar9003_paprd_setup_gain_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x3374d082 ath9k_hw_intrpend +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x352e52a3 ath9k_hw_getrxfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x3783d76f ath9k_hw_gpio_get +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4574a57b ath9k_hw_beaconq_setup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x47d4630a ar9003_mci_send_message +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4853f99b ar9003_mci_get_next_gpm_offset +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x49223b6f ath9k_hw_btcoex_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4c8f420d ath9k_hw_disable_mib_counters +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4ca66147 ath9k_hw_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4ec34379 ath9k_hw_request_gpio +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x52d1978d ath9k_hw_set_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x53a4ab29 ath9k_hw_cfg_gpio_input +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x59c5710d ath9k_hw_btcoex_init_scheme +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x5fcfbd85 ar9003_mci_setup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x61206f05 ath9k_hw_phy_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x63c49e9d ath9k_hw_btcoex_init_2wire +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x63df553a ath9k_hw_setuptxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x649d30e9 ath9k_hw_abortpcurecv +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x65d1b338 ath9k_hw_set_tx_filter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x67abd0a2 ar9003_get_pll_sqsum_dvc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6a41647a ath9k_hw_reset_tsf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6b551820 ath9k_hw_stopdmarecv +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6b9d0d70 ath9k_hw_updatetxtriglevel +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6e049f06 ath9k_hw_set_txq_props +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x70fa51e6 ar9003_mci_cleanup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x77a7924b ath9k_hw_releasetxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7a48494d ath9k_hw_get_txq_props +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7bef7b65 ath9k_hw_getchan_noise +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7d05e10e ar9003_hw_bb_watchdog_check +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7dba808e ath9k_hw_gettxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x869fbb53 ath9k_hw_btcoex_init_3wire +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x875502f8 ath9k_hw_puttxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x87bf8215 ath9k_hw_setmcastfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8908ce3e ath9k_hw_write_associd +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x89c75fba ar9003_mci_get_interrupt +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8cc1f6e3 ath_gen_timer_free +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8de920ee ath9k_hw_wow_apply_pattern +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8f477d20 ath9k_hw_setrxfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9071862c ath9k_hw_wait +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x91bd3fcb ath9k_hw_cfg_output +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x96639501 ath_gen_timer_alloc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x96843cc2 ath9k_hw_setup_statusring +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9d660ff8 ath9k_hw_btcoex_set_weight +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9daa42f6 ath9k_hw_resettxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9dcec6e5 ath9k_hw_gettsf32 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9e21367c ath9k_hw_reset +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa0601e84 ath9k_hw_setrxabort +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa0f6ee4a ath9k_hw_process_rxdesc_edma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa2808367 ath9k_hw_setpower +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa2eee81d ath9k_hw_disable_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa672969b ath9k_hw_kill_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa90c812f ar9003_mci_state +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xab6040f3 ath9k_hw_check_nav +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xad5ae3a2 ath9k_hw_settsf64 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xafd13d44 ar9003_is_paprd_enabled +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb375a0b7 ath9k_hw_bstuck_nfcal +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb4ec7f7e ath9k_hw_set_sta_beacon_timers +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb54b7129 ath9k_hw_startpcureceive +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb8829acb ath_gen_timer_isr +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xbb4d7a1b ath9k_hw_check_alive +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xbe2ff182 ath9k_hw_wow_enable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc4119718 ath9k_hw_gen_timer_start +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc5c954a8 ath9k_hw_btcoex_enable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc94aa8e8 ar9003_paprd_init_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc9c25b36 ath9k_hw_reset_calvalid +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xce29ab72 ath9k_hw_putrxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xcff85cae ath9k_hw_beaconinit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd4b9d7e4 ath9k_hw_set_rx_bufsize +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd753bb23 ath9k_hw_init_global_settings +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd9c6e71e ath9k_hw_computetxtime +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xda61e98d ath9k_hw_setuprxdesc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xda761ece ar9003_mci_set_bt_version +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xdb2e2b57 ath9k_hw_ani_monitor +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xdf2fcdc2 ath9k_hw_btcoex_bt_stomp +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe8bf5282 ath9k_hw_rxprocdesc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe969c859 ar9003_paprd_create_curve +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xeffa5abd ath9k_hw_txstart +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf042b592 ar9003_hw_disable_phy_restart +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf0d83a8c ar9003_paprd_enable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf795eef2 ath9k_hw_set_gpio +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xfbd54729 ath9k_hw_btcoex_init_mci +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xffd02408 ath9k_hw_get_tsf_offset +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xfffd1075 ar9003_paprd_populate_single_table +EXPORT_SYMBOL drivers/net/wireless/atmel 0x1552fb91 atmel_open +EXPORT_SYMBOL drivers/net/wireless/atmel 0x5eea3e38 stop_atmel_card +EXPORT_SYMBOL drivers/net/wireless/atmel 0x9e0e5941 init_atmel_card +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x07ef2740 brcmu_pktq_mlen +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x08384f63 brcmu_pktq_mdeq +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x1e52d420 brcmu_pkt_buf_get_skb +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x29c946d2 brcmu_pktq_penq_head +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x31575690 brcmu_pktq_init +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x3f2988a1 brcmu_dotrev_str +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x78fca577 brcmu_pktq_pdeq_tail +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x7fa16c0b brcmu_pktq_peek_tail +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x85944634 brcmu_pkt_buf_free_skb +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x95ac6f75 brcmu_pktq_pdeq +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x9f4b5dcf brcmu_d11_attach +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xa3779164 brcmu_pktq_pdeq_match +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xbf3f02af brcmu_pktq_penq +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xc70d4651 brcmu_pktq_flush +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xd261b8a6 brcmu_boardrev_str +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xeca6375f brcmu_pktq_pflush +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x128221a0 hostap_80211_ops +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x13d1f4f6 hostap_setup_dev +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x1723ac32 hostap_set_multicast_list_queue +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x310d8ed0 hostap_remove_proc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x339bf84b hostap_master_start_xmit +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x3dc74401 prism2_update_comms_qual +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x41ac8d11 hostap_set_hostapd +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x4cac5769 hostap_free_data +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x4ec40be8 hostap_info_init +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x59b47010 hostap_check_sta_fw_version +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x5c308233 hostap_set_auth_algs +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x5faffd19 hostap_80211_rx +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x72600b36 hostap_handle_sta_tx_exc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x79126321 hostap_info_process +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x7c411f60 hostap_add_interface +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x9402e253 hostap_set_encryption +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x9943d360 hostap_set_roaming +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xa12ad27f hostap_dump_tx_header +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xb0608aa8 hostap_remove_interface +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xb2a945e0 hostap_dump_rx_header +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xb49b222c hostap_init_data +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xb4b77c8b hostap_80211_get_hdrlen +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xbf348c17 hostap_init_ap_proc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xcba6e3b1 hostap_init_proc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xd4459540 hostap_set_antsel +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xe020147f hostap_set_hostapd_sta +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xe0a6c426 hostap_set_string +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xe76587f3 hostap_get_porttype +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xf5a130d1 hostap_set_word +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x03ade07c libipw_get_channel +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x041a7750 libipw_is_valid_channel +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x191fbe4d libipw_rx +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x1c048397 libipw_wx_get_scan +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x4b50b914 alloc_libipw +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x79756783 libipw_freq_to_channel +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x7f7487cc libipw_wx_set_encode +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x80db0bef libipw_get_channel_flags +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x82e31b81 free_libipw +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x83785c88 libipw_rx_mgt +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x93855a23 libipw_wx_get_encodeext +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x9bd19e2a libipw_get_geo +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xb540be8f libipw_wx_get_encode +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xbbf8395f libipw_change_mtu +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xbc4da033 libipw_set_geo +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xc34c7422 libipw_channel_to_freq +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xc5ea8ce1 libipw_txb_free +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xce69107f libipw_wx_set_encodeext +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xe62a1baa libipw_networks_age +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xf6c3a4dc libipw_channel_to_index +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xfcf9f815 libipw_xmit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x01c6d0eb il_send_stats_request +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x03913161 il_send_cmd_pdu_async +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x060104bf il_leds_exit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x0d08b8a5 il_leds_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x0d32d323 il_dbgfs_register +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x0e1158fe il_apm_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x0ffbdf12 il_update_stats +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x1391338e _il_poll_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x1536b0a4 il_send_lq_cmd +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x184c37f2 il_write_targ_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x23f24633 il_pm_ops +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x250f92e8 il_tx_queue_free +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x2c0d4d36 il_mac_sta_remove +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x2ed387ab il_scan_cancel +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x34576987 il_set_tx_power +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x37436a11 il_mac_remove_interface +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x39d8947a il_cancel_scan_deferred_work +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x3adb31c5 il_set_rate +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x3d8f7aa0 il_hdl_pm_debug_stats +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x3e3b0820 il_mac_flush +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x41bce923 il_mac_conf_tx +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x47e215f8 il_force_reset +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4aa39103 il_get_cmd_string +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x52ff11fc il_txq_update_write_ptr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x53b641e8 il_mac_add_interface +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x53f4f709 il_full_rxon_required +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x54706fff il_power_update_mode +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x5595044b il_dbgfs_unregister +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x564c6740 il_debug_level +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x57da7cf4 il_cmd_queue_free +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x58ecd709 il_send_add_sta +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x5b94b0da il_hdl_spectrum_measurement +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x5c108846 il_alloc_txq_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x5c268c24 il_send_cmd_pdu +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x647ba0e4 il_get_active_dwell_time +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x6e6aee3a il_clear_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x6f4782f9 il_send_cmd_sync +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x728eb1fd il_send_bt_config +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x7389bdd3 il_mac_bss_info_changed +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x7485bbe0 il_setup_scan_deferred_work +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x75f4e780 il_eeprom_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x76ecf79b il_tx_queue_unmap +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x7763598e il_init_channel_map +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x7c1016fa il_get_channel_info +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x7ca7df9d il_set_rxon_channel +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x7d24ce99 il_mac_change_interface +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x7efa81f1 il_tx_cmd_complete +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x81525ef8 il_setup_rx_scan_handlers +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x8412f118 il_irq_handle_error +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x84d0d4fd il_init_scan_params +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x84ed45dd il_set_rxon_hwcrypto +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x8793bdd8 il_send_cmd +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x8831dd37 il_connection_init_rx_config +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x88bbf145 il_hdl_pm_sleep +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x89bd0cc0 il_cmd_queue_unmap +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x8adbe4ad il_add_beacon_time +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x8f8539e9 il_poll_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x93073836 il_apm_stop +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x93b37964 il_add_station_common +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x968e3061 _il_apm_stop +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x992e667a il_read_targ_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x9bb33792 il_mac_hw_scan +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x9f8546fc il_free_channel_map +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa07e1fce il_get_single_channel_number +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa2a30a1a il_restore_stations +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa6f5a5b1 il_get_passive_dwell_time +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa8cc87ab il_set_flags_for_band +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa9fc7907 il_check_rxon_cmd +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xac4ed096 il_send_rxon_timing +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xaf5db97f il_hdl_csa +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb492ab89 il_get_free_ucode_key_idx +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb6cfc667 il_eeprom_query16 +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb7bd33ff il_isr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb83d4320 il_tx_queue_reset +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb8f0c6f8 il_set_decrypted_flag +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xbdc6483a il_rx_queue_space +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc0d6451e il_setup_watchdog +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc30b9a05 il_init_geos +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc39cf12c il_bg_watchdog +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xcd15249f il_fill_probe_req +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd1afb057 il_rx_queue_update_write_ptr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd45281c1 il_scan_cancel_timeout +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd6fdf2ac il_rx_queue_alloc +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xdc56abfc il_eeprom_query_addr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xdeab3e39 il_mac_config +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe0171e9c il_free_geos +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe182e688 il_tx_cmd_protection +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe22ef271 il_power_initialize +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe435493a il_queue_space +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe4a9e970 il_free_txq_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe5bb0ce2 il_tx_queue_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe6034f3d il_rd_prph +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe7835da1 il_set_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe8226729 il_wr_prph +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe95b6388 il_is_ht40_tx_allowed +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xed7a76ca il_clear_ucode_stations +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf03ea710 il_mac_reset_tsf +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf261aac3 il_usecs_to_beacons +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf2924acf il_get_lowest_plcp +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf501278b il_bcast_addr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xfd429d9a il_set_rxon_ht +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xfde272b1 il_chswitch_done +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xfe4f1ca2 il_eeprom_free +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xfe992bd3 il_hdl_error +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x2f7b7e55 __tracepoint_iwlwifi_dev_ucode_wrap_event +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x3b9d00d6 __tracepoint_iwlwifi_dev_ioread32 +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x779dd6f5 __tracepoint_iwlwifi_dev_iowrite32 +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x85c1bb84 __tracepoint_iwlwifi_dev_iowrite8 +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x963a6f8a __tracepoint_iwlwifi_dev_ucode_error +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0xb8f7026f __tracepoint_iwlwifi_dev_ucode_cont_event +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0xf9ec6bdd __tracepoint_iwlwifi_dev_ucode_event +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x32701bca orinoco_down +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x3ad2b700 orinoco_get_stats +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x54137605 orinoco_if_add +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x786b06d1 orinoco_process_xmit_skb +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x7ab9f0a9 orinoco_open +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x7cce94c9 orinoco_stop +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x85018b45 orinoco_init +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x90855f6b orinoco_set_multicast_list +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x999ada95 alloc_orinocodev +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x9bfdd926 __orinoco_ev_info +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x9dc139b9 orinoco_if_del +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xa15df660 orinoco_up +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xa175ec0d free_orinocodev +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xa3aaceb2 orinoco_tx_timeout +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xcaae7377 orinoco_change_mtu +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xeec937d1 __orinoco_ev_rx +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xef64033b hermes_struct_init +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xffe27bca orinoco_interrupt +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/btcoexist/btcoexist 0xc4a712d1 rtl_btc_get_ops_pointer +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x0572fc01 rtl92c_phy_query_bb_reg +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x0e04dbff rtl92ce_phy_set_rf_on +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x12c0704e rtl92c_dm_watchdog +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x24c9d27c _rtl92c_phy_init_bb_rf_register_definition +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x25c0ee61 rtl92c_phy_set_bb_reg +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x2db37f01 rtl92c_dm_init +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x370dbd41 rtl92c_dm_write_dig +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x38d6ac0b rtl92c_phy_lc_calibrate +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x3a330cbe rtl92c_set_fw_joinbss_report_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x3ef3ac63 _rtl92c_phy_rf_serial_read +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x410acb76 rtl92c_phy_set_rfpath_switch +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x41f59aba rtl92c_phy_set_txpower_level +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x44ed3815 rtl92c_dm_init_rate_adaptive_mask +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x4f6c41a1 rtl92c_dm_check_txpower_tracking +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x53499527 rtl92c_phy_sw_chnl +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x54c3decf rtl92c_phy_ap_calibrate +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x6930b2a4 _rtl92c_phy_fw_rf_serial_write +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x6ded5923 rtl92c_set_fw_rsvdpagepkt +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x79c666ae _rtl92c_phy_bb8192c_config_parafile +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x7b0678d7 rtl92c_phy_set_bw_mode +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x7bd69338 _rtl92c_phy_txpwr_idx_to_dbm +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x7f560691 rtl92c_dm_bt_coexist +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x84eecb53 rtl92c_phy_set_io_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x8b9743f1 rtl92c_phy_sw_chnl_callback +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x8e3d3c06 _rtl92c_phy_dbm_to_txpwr_idx +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x92d3a2ad rtl92c_fill_h2c_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x95ab9128 rtl92c_phy_iq_calibrate +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xa81af53a rtl92c_dm_init_edca_turbo +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xaaba9879 rtl8192_phy_check_is_legal_rfpath +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xb1adf4bd rtl92c_bt_rssi_state_change +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xb3314d48 _rtl92c_phy_calculate_bit_shift +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xbeb82367 rtl92c_set_fw_pwrmode_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xc8de5403 rtl92c_phy_update_txpower_dbm +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xd2b9a64d rtl92c_firmware_selfreset +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xd64ac920 rtl92c_phy_set_io +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xd8398baa _rtl92c_store_pwrIndex_diffrate_offset +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xdb4789ec rtl92c_dm_rf_saving +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xe01bfa6c _rtl92c_phy_rf_serial_write +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xeddbf70f rtl92c_download_fw +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xf4141e3a _rtl92c_phy_fw_rf_serial_read +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xfa046efb _rtl92c_phy_set_rf_sleep +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xfa7f9842 rtl92c_phy_rf_config +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x6fb9f06f rtl8723_fill_dummy +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_pci 0x292b4059 rtl_pci_disconnect +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_pci 0x5400cf98 rtl_pci_resume +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_pci 0x614e3a2d rtl_pci_probe +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_pci 0xed857cd7 rtl_pci_suspend +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_usb 0x022b5734 rtl_usb_probe +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_usb 0x7ee7e745 rtl_usb_disconnect +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_usb 0xc636202e rtl_usb_resume +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_usb 0xed9c018c rtl_usb_suspend +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x16d019d5 rtl_wowlan_fw_cb +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x19a119c7 rtl_efuse_shadow_map_update +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x19f2ee20 rtl_fw_cb +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x1ec46b66 rtl_get_tcb_desc +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x207fbb70 rtl_evm_db_to_percentage +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x2460549a rtl_dm_diginit +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x298e2ed1 rtl_hal_pwrseqcmdparsing +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x2c162ade rtl_cam_delete_one_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x455d4d88 rtl_ps_set_rf_state +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x4744f407 rtl_process_phyinfo +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x47deb3bb efuse_one_byte_read +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x48ff30f5 rtl_send_smps_action +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x532be11c rtl_rfreg_delay +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x5e5a377c rtl_phy_scan_operation_backup +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x5fd8dc76 rtl_signal_scale_mapping +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x6339ddbd rtl_ps_disable_nic +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x63d02ae2 efuse_read_1byte +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x79188a02 rtl_query_rxpwrpercentage +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x8178edb6 rtl_cam_mark_invalid +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x89ac7b2f rtl_cmd_send_packet +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x97eaa05f rtl_bb_delay +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x980848e2 rtl_addr_delay +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xa259ccac rtl_ps_enable_nic +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xa316c2e4 rtl_cam_get_free_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xad5319ab rtl_lps_enter +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xbca2d9e8 rtl_lps_leave +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xc0d4ab3d rtl_cam_reset_all_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xcca9cdb1 rtl_init_rfkill +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xdca1cb6d rtl_cam_del_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xe1d0b0bb rtl_cam_empty_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xf0509fac efuse_shadow_read +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xf50bd275 rtlwifi_rate_mapping +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xf6b97f91 rtl_cam_add_one_entry +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0x1caf4df3 wlcore_tx_complete +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0x51abeaab wlcore_calc_packet_alignment +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0xcb58eb24 wl12xx_is_dummy_packet +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0xf5220f64 wl1271_free_tx_id +EXPORT_SYMBOL drivers/nfc/microread/microread 0x20a7c747 microread_remove +EXPORT_SYMBOL drivers/nfc/microread/microread 0x4fa04f7a microread_probe +EXPORT_SYMBOL drivers/nfc/nxp-nci/nxp-nci 0x088cde95 nxp_nci_probe +EXPORT_SYMBOL drivers/nfc/nxp-nci/nxp-nci 0x6b1213c3 nxp_nci_fw_recv_frame +EXPORT_SYMBOL drivers/nfc/nxp-nci/nxp-nci 0xad137819 nxp_nci_remove +EXPORT_SYMBOL drivers/nfc/pn544/pn544 0x8ff6b67f pn544_hci_probe +EXPORT_SYMBOL drivers/nfc/pn544/pn544 0xe966f643 pn544_hci_remove +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x28020c15 st_nci_se_io +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x2b6c851b ndlc_probe +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x4b70d348 ndlc_open +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x779d4cd8 ndlc_close +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0xc1efe133 ndlc_remove +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0xcfa6a4b4 ndlc_recv +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0xf13d7312 ndlc_send +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0xfa25a0e0 st_nci_se_init +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0xfb3513b1 st_nci_se_deinit +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x109a6b92 st21nfca_hci_disable_se +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x182dae36 st21nfca_se_deinit +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x1f8188ff st21nfca_se_init +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x2ef3469b st21nfca_apdu_reader_event_received +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x39ffe009 st21nfca_im_send_atr_req +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x3b01f659 st21nfca_hci_discover_se +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x439ed82e st21nfca_hci_remove +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x5cf0d64f st21nfca_dep_init +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x6e17a39b st21nfca_hci_probe +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x703b3f0c st21nfca_dep_deinit +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x81f9e76b st21nfca_hci_enable_se +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x8f601f7a st21nfca_im_send_dep_req +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x971be59d st21nfca_dep_event_received +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xa94d4040 st21nfca_tm_send_dep_res +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xac9a7c8f st21nfca_connectivity_event_received +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xc79cf88a st21nfca_hci_se_io +EXPORT_SYMBOL drivers/ntb/ntb 0x203245b5 ntb_db_event +EXPORT_SYMBOL drivers/ntb/ntb 0x219d5bd8 ntb_set_ctx +EXPORT_SYMBOL drivers/ntb/ntb 0x461bf7ca ntb_unregister_client +EXPORT_SYMBOL drivers/ntb/ntb 0xbe2c1e09 ntb_register_device +EXPORT_SYMBOL drivers/ntb/ntb 0xc798ee82 __ntb_register_client +EXPORT_SYMBOL drivers/ntb/ntb 0xd9b63bd2 ntb_clear_ctx +EXPORT_SYMBOL drivers/ntb/ntb 0xddb96494 ntb_link_event +EXPORT_SYMBOL drivers/ntb/ntb 0xf5bf30d9 ntb_unregister_device +EXPORT_SYMBOL drivers/nvdimm/nd_btt 0x0357c01c nvdimm_namespace_detach_btt +EXPORT_SYMBOL drivers/nvdimm/nd_btt 0x400dde02 nvdimm_namespace_attach_btt +EXPORT_SYMBOL drivers/parport/parport 0x0314367a parport_find_base +EXPORT_SYMBOL drivers/parport/parport 0x1b28109a parport_unregister_driver +EXPORT_SYMBOL drivers/parport/parport 0x1b789518 parport_del_port +EXPORT_SYMBOL drivers/parport/parport 0x25795515 parport_register_device +EXPORT_SYMBOL drivers/parport/parport 0x28c2e16c parport_negotiate +EXPORT_SYMBOL drivers/parport/parport 0x2927f36f parport_register_port +EXPORT_SYMBOL drivers/parport/parport 0x32f28ed9 parport_claim +EXPORT_SYMBOL drivers/parport/parport 0x38661834 parport_read +EXPORT_SYMBOL drivers/parport/parport 0x3cc5283f parport_ieee1284_epp_write_data +EXPORT_SYMBOL drivers/parport/parport 0x489ed5f7 parport_find_number +EXPORT_SYMBOL drivers/parport/parport 0x4d2a941b parport_ieee1284_interrupt +EXPORT_SYMBOL drivers/parport/parport 0x516bc4a4 parport_register_dev_model +EXPORT_SYMBOL drivers/parport/parport 0x589171b6 parport_ieee1284_ecp_write_addr +EXPORT_SYMBOL drivers/parport/parport 0x5978b9c5 parport_wait_event +EXPORT_SYMBOL drivers/parport/parport 0x5e3a3912 parport_irq_handler +EXPORT_SYMBOL drivers/parport/parport 0x6582fe83 __parport_register_driver +EXPORT_SYMBOL drivers/parport/parport 0x65b09b1c parport_ieee1284_epp_read_data +EXPORT_SYMBOL drivers/parport/parport 0x70050f10 parport_unregister_device +EXPORT_SYMBOL drivers/parport/parport 0x71ddb671 parport_ieee1284_write_compat +EXPORT_SYMBOL drivers/parport/parport 0x7eded8bf parport_write +EXPORT_SYMBOL drivers/parport/parport 0x821e5365 parport_ieee1284_epp_write_addr +EXPORT_SYMBOL drivers/parport/parport 0x822b17fc parport_announce_port +EXPORT_SYMBOL drivers/parport/parport 0x84304bb2 parport_ieee1284_ecp_read_data +EXPORT_SYMBOL drivers/parport/parport 0x92942300 parport_release +EXPORT_SYMBOL drivers/parport/parport 0x952d0d18 parport_ieee1284_read_byte +EXPORT_SYMBOL drivers/parport/parport 0x9aee1c55 parport_ieee1284_epp_read_addr +EXPORT_SYMBOL drivers/parport/parport 0xa328bf34 parport_get_port +EXPORT_SYMBOL drivers/parport/parport 0xadf8de4c parport_wait_peripheral +EXPORT_SYMBOL drivers/parport/parport 0xb263baa5 parport_claim_or_block +EXPORT_SYMBOL drivers/parport/parport 0xbf9f3ee3 parport_remove_port +EXPORT_SYMBOL drivers/parport/parport 0xc3e24d62 parport_ieee1284_read_nibble +EXPORT_SYMBOL drivers/parport/parport 0xcd90130a parport_put_port +EXPORT_SYMBOL drivers/parport/parport 0xe4a8c3a8 parport_set_timeout +EXPORT_SYMBOL drivers/parport/parport 0xe64a0aec parport_ieee1284_ecp_write_data +EXPORT_SYMBOL drivers/pps/pps_core 0x3313c44c pps_unregister_source +EXPORT_SYMBOL drivers/pps/pps_core 0x6d29a01b pps_register_source +EXPORT_SYMBOL drivers/pps/pps_core 0xdcc9a71f pps_lookup_dev +EXPORT_SYMBOL drivers/pps/pps_core 0xe3d28c8b pps_event +EXPORT_SYMBOL drivers/ptp/ptp 0x839fe42e ptp_clock_unregister +EXPORT_SYMBOL drivers/ptp/ptp 0xb61f45f7 ptp_clock_index +EXPORT_SYMBOL drivers/ptp/ptp 0xbace6148 ptp_clock_event +EXPORT_SYMBOL drivers/ptp/ptp 0xd5664042 ptp_find_pin +EXPORT_SYMBOL drivers/ptp/ptp 0xff655f0f ptp_clock_register +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x21d7d2dd rproc_shutdown +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x23495e9b rproc_add +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x422b6efe rproc_report_crash +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x68c0cb4c rproc_put +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x6a21ceb3 rproc_boot +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x8ef6cfcb rproc_del +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0xb56a994d rproc_get_by_phandle +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0xbbf5f4c9 rproc_vq_interrupt +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0xcc156609 rproc_da_to_va +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0xd36d232b rproc_alloc +EXPORT_SYMBOL drivers/rtc/rtc-ds1685 0xe0bb0b92 ds1685_rtc_poweroff +EXPORT_SYMBOL drivers/scsi/esp_scsi 0x4a29ab38 scsi_esp_intr +EXPORT_SYMBOL drivers/scsi/esp_scsi 0x566d27db scsi_esp_template +EXPORT_SYMBOL drivers/scsi/esp_scsi 0x807ab2a2 scsi_esp_unregister +EXPORT_SYMBOL drivers/scsi/esp_scsi 0xc7973d0b scsi_esp_register +EXPORT_SYMBOL drivers/scsi/esp_scsi 0xe9d4aacc scsi_esp_cmd +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x089d5a80 fcoe_ctlr_link_down +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x21f5dbdb fcoe_ctlr_init +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x2c4018ef fcoe_fcf_get_selected +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x3b943ee1 fcoe_ctlr_destroy +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x72a01569 fcoe_transport_detach +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x8978cd4f fcoe_ctlr_els_send +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xb7638e8d fcoe_ctlr_link_up +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xc42c1c64 fcoe_ctlr_recv_flogi +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xd32bb7e5 fcoe_ctlr_destroy_store +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xda89f9c2 fcoe_ctlr_recv +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xddcd4b1a fcoe_transport_attach +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xf22755b8 fcoe_ctlr_set_fip_mode +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x049168e2 fc_lport_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x06c07fc6 fc_slave_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x07c8bd8f fc_frame_crc_check +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x14683255 fc_exch_recv +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x16f41712 fc_lport_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x22868020 fc_disc_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x22b90986 fc_exch_mgr_del +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x283c5988 fc_rport_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x29f97c74 fc_queuecommand +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x2b00a751 fc_frame_alloc_fill +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x31a077e8 fc_eh_abort +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x35ba5596 fc_exch_mgr_list_clone +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x36c454de fc_lport_destroy +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x36e5fbaf fc_cpu_mask +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x37aaf638 fc_eh_host_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x3d51666b fc_linkup +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x3e7e67d4 _fc_frame_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x4648b53c fc_exch_mgr_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x5bbb6dea fc_fcp_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x602379c6 fc_get_host_stats +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x608fea8c fc_elsct_send +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x61255e1f fc_fc4_deregister_provider +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x6395ebee fc_set_mfs +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x658e8b31 fc_lport_logo_resp +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x6717f220 fc_lport_flogi_resp +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x74b188ba fc_lport_set_local_id +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x783bc33a fc_exch_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x7a752356 fc_fabric_login +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x84e0eaf4 fc_vport_id_lookup +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x8c6d3dbc fc_fill_hdr +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x8c9232ea fc_linkdown +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x927ddbc9 fc_elsct_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x973a5b2e fc_fill_reply_hdr +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x9c691f82 fc_exch_mgr_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xa23bb13b fc_exch_mgr_free +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xa82bd82d fc_fcp_destroy +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xa8ef7a8f fc_fc4_register_provider +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xad11a604 fc_set_rport_loss_tmo +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xb73e11e3 fc_lport_config +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xbdef62d2 fc_exch_mgr_add +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xc7fcdd27 fc_lport_bsg_request +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xcb83ce72 fc_disc_config +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xd1263f3c fc_lport_notifier_head +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xd1a66803 fc_rport_terminate_io +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xe1b9a73e fc_lport_iterate +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xe47dd5fc fc_eh_device_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xe6f1cafa fc_exch_update_stats +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xef62fcbb fc_get_host_port_state +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xf5e905a6 fc_get_host_speed +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xf87aa384 libfc_vport_create +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xfa13d6a0 fc_vport_setlink +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xfc08f1ef fc_fabric_logoff +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x65ea8b27 sas_resume_ha +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x8a87e724 try_test_sas_gpio_gp_bit +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x909951df sas_wait_eh +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0xc8f12ad3 sas_prep_resume_ha +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0xdf1fb303 sas_suspend_ha +EXPORT_SYMBOL drivers/scsi/megaraid/megaraid_mm 0x2250c66e mraid_mm_adapter_app_handle +EXPORT_SYMBOL drivers/scsi/megaraid/megaraid_mm 0x2bfeb5be mraid_mm_register_adp +EXPORT_SYMBOL drivers/scsi/megaraid/megaraid_mm 0x512c956d mraid_mm_unregister_adp +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x0c17edb1 osd_sec_init_nosec_doall_caps +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x0eae3051 osd_req_create_object +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x1280cdc7 osd_req_read_sg +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x1663a8e8 osd_dev_init +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x18424376 osd_start_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x18628f42 osd_execute_request_async +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x2414d8d3 osd_req_set_attributes +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x26de8f15 osd_req_write_sg +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x2e05c56a osd_execute_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x31ff5a81 osd_req_list_dev_partitions +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x3ce6ecfa osd_req_list_collection_objects +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x3e5281cf osd_req_read +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x49ab64c0 osd_req_decode_get_attr_list +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x4f5c71ba osd_req_decode_sense_full +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x531cbac5 osd_req_add_set_attr_list +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x5b5c0e92 osd_req_read_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x5c5ac651 osd_req_get_attributes +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x6f213353 osd_req_flush_collection +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x796675dd osd_req_format +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x815c8a4e osd_finalize_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x93ccffc4 osd_req_add_get_attr_page +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x96e5299c osd_end_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x9832eada osd_req_read_sg_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xa0b3b70e osd_req_remove_partition +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xa2ed8ecb osd_req_remove_object +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xa68d0f91 osd_req_list_partition_objects +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xc23e3b8a osd_req_flush_obsd +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xcad3143f osd_req_create_partition +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xd0a3b810 osd_req_flush_partition +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xd9be3c20 osd_req_write +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xdfad65b6 osd_dev_fini +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xe2e54fa2 osd_auto_detect_ver +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xe7220e2f osd_req_write_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xea8365c5 osd_req_flush_object +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xf0db0760 osd_req_write_sg_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xf60eb768 osd_req_list_partition_collections +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xf7e57b14 osd_req_add_get_attr_list +EXPORT_SYMBOL drivers/scsi/osd/osd 0x07988ae8 osduld_info_lookup +EXPORT_SYMBOL drivers/scsi/osd/osd 0x12918b8d osduld_put_device +EXPORT_SYMBOL drivers/scsi/osd/osd 0x1dffddb2 osduld_device_info +EXPORT_SYMBOL drivers/scsi/osd/osd 0x5fc48609 osduld_unregister_test +EXPORT_SYMBOL drivers/scsi/osd/osd 0x6a032e74 osduld_path_lookup +EXPORT_SYMBOL drivers/scsi/osd/osd 0xd5b7a996 osduld_register_test +EXPORT_SYMBOL drivers/scsi/osd/osd 0xe24f3b24 osduld_device_same +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x0004c291 qlt_free_cmd +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x087dcf86 qlt_lport_register +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x1cc59db6 qlt_lport_deregister +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x20766dab qlt_rdy_to_xfer +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x32c89404 qlt_xmit_response +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x46bb0525 qlt_stop_phase1 +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x6e7238ab qlt_free_mcmd +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x805804ef qlt_xmit_tm_rsp +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x978822d7 qlt_stop_phase2 +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xa6c51942 qlt_enable_vha +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xb27a1934 qlt_abort_cmd +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xcd818f47 qlt_unreg_sess +EXPORT_SYMBOL drivers/scsi/raid_class 0x2d1c6687 raid_class_attach +EXPORT_SYMBOL drivers/scsi/raid_class 0x89fdc23b raid_component_add +EXPORT_SYMBOL drivers/scsi/raid_class 0xbc32c2c3 raid_class_release +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x11f6aca3 fc_remote_port_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x12626944 scsi_is_fc_rport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x13e74dcd fc_remove_host +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x1a123bd3 fc_host_post_vendor_event +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x39b93811 fc_block_scsi_eh +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x40dce8ea fc_vport_terminate +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x424071ae fc_remote_port_rolechg +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x7954b1ea fc_get_event_number +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x9b8d6293 scsi_is_fc_vport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xb1d28d38 fc_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xc060b730 fc_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xca1d384a fc_host_post_event +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xccbf5f67 fc_vport_create +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xd0860455 fc_remote_port_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x031586f5 sas_rphy_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x03680b5f sas_phy_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x042645a4 sas_port_alloc_num +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x0fe3866a sas_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x17cb7484 sas_remove_host +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x1a86f024 sas_phy_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x25d1ae8e scsi_is_sas_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x29926771 sas_remove_children +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x341e0049 sas_rphy_unlink +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x374ebeb1 sas_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x378b18ea sas_port_add_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x3b17df36 sas_port_delete_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x43f06ac6 sas_port_mark_backlink +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x56768a55 sas_read_port_mode_page +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x586fe8af sas_port_get_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x5b3ae619 sas_end_device_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x6b321054 sas_phy_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x75345af0 sas_port_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x9ccac34c scsi_is_sas_port +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xab3d23ea sas_phy_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xc7934994 sas_port_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xc8079e0d sas_port_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xcfea3ced sas_rphy_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xd01d6235 sas_port_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xdf454dcc sas_expander_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xe9ae6fd6 sas_rphy_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xef4a9484 sas_rphy_remove +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xf4d7e1ee scsi_is_sas_rphy +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x2116bd42 spi_dv_device +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x2238fa33 spi_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x3686ea09 spi_print_msg +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x3f40da0e spi_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x54dadbec spi_schedule_dv_device +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x66184e1e spi_display_xfer_agreement +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0x30d38c3f srp_reconnect_rport +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0x330335cd srp_rport_put +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0x405b6e05 srp_parse_tmo +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0x9f8b96b0 srp_start_tl_fail_timers +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0xf7f08c11 srp_rport_get +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0x48064ff2 ufshcd_alloc_host +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0x898f2bc8 ufshcd_shutdown +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0xa4723cda ufshcd_runtime_suspend +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0xa4795069 ufshcd_runtime_resume +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0xc8539b1d ufshcd_system_resume +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0xe958b430 ufshcd_runtime_idle +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0xf376a334 ufshcd_system_suspend +EXPORT_SYMBOL drivers/ssb/ssb 0x0bc7d63d ssb_driver_unregister +EXPORT_SYMBOL drivers/ssb/ssb 0x481a079b ssb_bus_sdiobus_register +EXPORT_SYMBOL drivers/ssb/ssb 0x48b589de ssb_bus_powerup +EXPORT_SYMBOL drivers/ssb/ssb 0x57df1bb9 ssb_pcihost_register +EXPORT_SYMBOL drivers/ssb/ssb 0x5e805c5b ssb_pmu_set_ldo_paref +EXPORT_SYMBOL drivers/ssb/ssb 0x67985eb1 ssb_dma_translation +EXPORT_SYMBOL drivers/ssb/ssb 0x68694977 ssb_bus_may_powerdown +EXPORT_SYMBOL drivers/ssb/ssb 0x689857b8 ssb_chipco_gpio_control +EXPORT_SYMBOL drivers/ssb/ssb 0x768eb6ad ssb_pcicore_dev_irqvecs_enable +EXPORT_SYMBOL drivers/ssb/ssb 0x790a5947 ssb_bus_suspend +EXPORT_SYMBOL drivers/ssb/ssb 0x8db77bbe ssb_set_devtypedata +EXPORT_SYMBOL drivers/ssb/ssb 0x903699be ssb_commit_settings +EXPORT_SYMBOL drivers/ssb/ssb 0x9a71451b ssb_device_enable +EXPORT_SYMBOL drivers/ssb/ssb 0xb22f8e5b ssb_bus_unregister +EXPORT_SYMBOL drivers/ssb/ssb 0xbccb9484 ssb_device_disable +EXPORT_SYMBOL drivers/ssb/ssb 0xc0512e0f ssb_admatch_base +EXPORT_SYMBOL drivers/ssb/ssb 0xcdaf330f ssb_clockspeed +EXPORT_SYMBOL drivers/ssb/ssb 0xd481192b ssb_admatch_size +EXPORT_SYMBOL drivers/ssb/ssb 0xdbf2da1b ssb_bus_resume +EXPORT_SYMBOL drivers/ssb/ssb 0xdd530743 ssb_pmu_set_ldo_voltage +EXPORT_SYMBOL drivers/ssb/ssb 0xdeb864c4 ssb_bus_pcibus_register +EXPORT_SYMBOL drivers/ssb/ssb 0xe464c32e ssb_device_is_enabled +EXPORT_SYMBOL drivers/ssb/ssb 0xee00d240 __ssb_driver_register +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x0067e345 fbtft_write_reg16_bus8 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x181b9626 fbtft_write_spi +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x2b186f0f fbtft_remove_common +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x36de84ca fbtft_write_gpio16_wr_latched +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x36eb0949 fbtft_framebuffer_alloc +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x37421fe9 fbtft_write_vmem16_bus16 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x3bcaf8ad fbtft_unregister_backlight +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x500dbddd fbtft_dbg_hex +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x544fe017 fbtft_framebuffer_release +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x54c9acd7 fbtft_write_vmem16_bus8 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x6b1f03d3 fbtft_write_gpio16_wr +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x8cd48ee5 fbtft_write_reg8_bus8 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x9a313dd7 fbtft_write_vmem16_bus9 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xa54255ca fbtft_write_gpio8_wr +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xaa99af1e fbtft_probe_common +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xb5e33e17 fbtft_register_framebuffer +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xc51541a2 fbtft_unregister_framebuffer +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xc84be111 fbtft_register_backlight +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xcc1a6d4a fbtft_write_vmem8_bus8 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xccfb7d72 fbtft_write_spi_emulate_9 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xe075522c fbtft_write_reg8_bus9 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xe2a854d2 fbtft_read_spi +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xf4c227dc fbtft_write_reg16_bus16 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xf95d4f95 fbtft_init_display +EXPORT_SYMBOL drivers/staging/fsl-mc/bus/mc-bus-driver 0x164efcd0 dpbp_enable +EXPORT_SYMBOL drivers/staging/fsl-mc/bus/mc-bus-driver 0x1bd252a4 dpbp_get_attributes +EXPORT_SYMBOL drivers/staging/fsl-mc/bus/mc-bus-driver 0x1fd3a9e9 dprc_get_obj_region +EXPORT_SYMBOL drivers/staging/fsl-mc/bus/mc-bus-driver 0x375810f5 dprc_close +EXPORT_SYMBOL drivers/staging/fsl-mc/bus/mc-bus-driver 0x51f76652 dprc_get_portal_paddr +EXPORT_SYMBOL drivers/staging/fsl-mc/bus/mc-bus-driver 0x59600f94 mc_send_command +EXPORT_SYMBOL drivers/staging/fsl-mc/bus/mc-bus-driver 0x5ce5e655 dprc_get_obj +EXPORT_SYMBOL drivers/staging/fsl-mc/bus/mc-bus-driver 0x6f684983 dprc_get_res_count +EXPORT_SYMBOL drivers/staging/fsl-mc/bus/mc-bus-driver 0xa8bad8c9 dpbp_close +EXPORT_SYMBOL drivers/staging/fsl-mc/bus/mc-bus-driver 0xc14a99c4 dprc_get_obj_count +EXPORT_SYMBOL drivers/staging/fsl-mc/bus/mc-bus-driver 0xccba174c dprc_get_res_ids +EXPORT_SYMBOL drivers/staging/fsl-mc/bus/mc-bus-driver 0xd0c1b4b7 dpbp_open +EXPORT_SYMBOL drivers/staging/fsl-mc/bus/mc-bus-driver 0xd7c1db45 dpbp_disable +EXPORT_SYMBOL drivers/staging/fsl-mc/bus/mc-bus-driver 0xf58e8205 dprc_open +EXPORT_SYMBOL drivers/staging/fwserial/firewire-serial 0x53036595 fwtty_port_get +EXPORT_SYMBOL drivers/staging/fwserial/firewire-serial 0xefd34f32 fwtty_port_put +EXPORT_SYMBOL drivers/staging/iio/addac/adt7316 0x89a941c6 adt7316_probe +EXPORT_SYMBOL drivers/staging/iio/magnetometer/hmc5843_core 0x59b23b85 hmc5843_common_suspend +EXPORT_SYMBOL drivers/staging/iio/magnetometer/hmc5843_core 0xb06069ad hmc5843_common_remove +EXPORT_SYMBOL drivers/staging/iio/magnetometer/hmc5843_core 0xee47c9ae hmc5843_common_resume +EXPORT_SYMBOL drivers/staging/iio/magnetometer/hmc5843_core 0xfc6a999e hmc5843_common_probe +EXPORT_SYMBOL drivers/staging/iio/meter/ade7854 0xa683af47 ade7854_remove +EXPORT_SYMBOL drivers/staging/iio/meter/ade7854 0xfaa5a9e4 ade7854_probe +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x1366b7ac LNetSetLazyPortal +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x18174566 lnet_unregister_lnd +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x19670622 LNetNIInit +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x1ab9f075 lnet_create_reply_msg +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x1b191752 lnet_msgtyp2str +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x1ca49d54 lnet_copy_kiov2kiov +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x1ee5f15e lnet_ipif_query +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x1fe16fd5 LNetGet +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x204b8151 lnet_counters_reset +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x2aa9953d lnet_cpt_of_nid +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x2ac93e90 lnet_connect_console_error +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x327baacd lnet_net2ni +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x33202a6c LNetGetId +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x366cbfc4 lnet_sock_setbuf +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x3c749832 lnet_copy_iov2kiov +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x3c779ee0 LNetPut +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x3f4f5b46 LNetNIFini +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x4007d699 lnet_connect +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x44137b1c lnet_sock_read +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x45a42361 lnet_sock_accept +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x473ad33b LNetDist +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x49993ea3 lnet_extract_iov +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x53923efe lnet_extract_kiov +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x58a1ca89 LNetMDUnlink +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x5fee352c lnet_acceptor_timeout +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x61f784b2 LNetClearLazyPortal +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x64cdea3a LNetCtl +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x66d449b1 lnet_ipif_enumerate +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x6a544078 lnet_sock_getbuf +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x6f7be171 LNetEQGet +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x722c76e5 LNetMDAttach +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x79ba8db7 lnet_sock_write +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x7d59a7fe LNetMEInsert +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x854ab844 LNetEQWait +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x974332ec lnet_sock_getaddr +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x989f5bf4 lnet_sock_listen +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x9d9e5562 lnet_set_reply_msg_len +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x9de986d3 LNetEQAlloc +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x9ffce87f lnet_sock_connect +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xa56de08d lnet_ipif_free_enumeration +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xaa414970 LNetMEUnlink +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xaa9b477e LNetMDBind +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xb20da2b1 lnet_copy_iov2iov +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xb75f7953 LNetEQFree +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xba5566d2 lnet_acceptor_port +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xbf0760a2 LNetMEAttach +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xd2443ded lnet_notify +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xd7c50cb9 lnet_init +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xe2310fb4 the_lnet +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xe5ec7315 lnet_copy_kiov2iov +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xe8124744 lnet_fini +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xee3170f9 lnet_parse +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xefc1745e lnet_finalize +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xf1b316bf LNetSnprintHandle +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xf5dc6337 lnet_iov_nob +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xf6cfe34a lnet_kiov_nob +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xf87e9b8d lnet_register_lnd +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xfa106804 lnet_counters_get +EXPORT_SYMBOL drivers/staging/lustre/lnet/selftest/lnet_selftest 0x078db139 lstcon_ioctl_entry +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0x1c4bb5f9 LU_OBF_FID +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0x375e6f8d LUSTRE_BFL_FID +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0x58939191 seq_client_get_seq +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0x83989507 client_fid_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0x9668ba03 seq_client_flush +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0xae61cff5 LU_DOT_LUSTRE_FID +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0xb69afcbc seq_client_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0xc997a02f LUSTRE_SEQ_SPACE_RANGE +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0xd9296423 seq_client_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0xdf831591 seq_client_alloc_fid +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0xecee2727 LUSTRE_SEQ_ZERO_RANGE +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0xfdee334d client_fid_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0x2e0bb5d7 fld_client_flush +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0x4cc8f233 fld_client_del_target +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0x7a97a958 fld_client_debugfs_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0x81c1ae09 fld_client_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0x885ef16e fld_client_add_target +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0x922717d3 fld_client_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0xf72a4e77 fld_client_lookup +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x000c507f libcfs_debug_dumplog +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x01db5172 cfs_percpt_atomic_summary +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x03dea4d3 cfs_race_waitq +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x04634c77 cfs_cpt_of_cpu +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x069f9bb2 cfs_wi_schedule +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x08ada613 libcfs_console_backoff +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x09a8154d cfs_cpt_bind +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x0a772ef0 cfs_cpt_set_cpu +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x0a92bb19 cfs_hash_getref +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x0b3ad299 cfs_hash_findadd_unique +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x0b4b1546 libcfs_lnd2modname +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x0ca2d23f cfs_hash_rehash +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x0de6c369 cfs_cap_lower +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x0f5eff79 cfs_percpt_number +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x0ff51426 cfs_hash_dual_bd_finddel_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x13550229 lbug_with_loc +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x168786c2 cfs_cpt_set_cpumask +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x17ac7833 libcfs_deregister_ioctl +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x1a60d439 cfs_parse_nidlist +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x2663147a __cfs_fail_timeout_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x26bedd60 cfs_hash_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x27b6d3ba cfs_ip_addr_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x2a582c5a cfs_hash_del_key +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x2adae33e cfs_init_timer +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x2dbe54b2 cfs_trimwhite +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x30d585c5 cfs_hash_lookup +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x31fc5082 cfs_crypto_hash_update +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x34f32dc9 cfs_hash_for_each_safe +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x351c98a1 cfs_cpt_cpumask +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x361e82d4 cfs_firststr +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x377f93fb cfs_srand +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x389ca502 libcfs_debug_mb +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x39fdcd2b libcfs_debug_set_level +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x3c1285bd libcfs_subsystem_debug +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x3cc97a08 cfs_hash_for_each_nolock +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x3d5e6098 cfs_race_state +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x3d70958c libcfs_kvzalloc_cpt +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x3ef0d90c libcfs_kkuc_group_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x404a882e cfs_cpt_number +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x4062f92b libcfs_run_lbug_upcall +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x4100e7d8 cfs_cpt_online +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x411db754 cfs_crypto_hash_final +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x44839bbb cfs_rand +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x48f163c6 libcfs_str2anynid +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x4a95faa2 cfs_timer_deadline +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x4a99af72 cfs_clear_sigpending +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x4aaba153 cfs_hash_bd_findadd_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x4b792dc7 cfs_hash_bd_lookup_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x4f1d3adf cfs_hash_del +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x4f1f2fa5 cfs_crypto_hash_digest +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x50345570 libcfs_str2net +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x5051b6d2 portal_enter_debugger +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x509d38b0 libcfs_net2str +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x54fd9a71 cfs_percpt_index +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x56595649 cfs_hash_bd_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x58a7ee00 libcfs_catastrophe +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x5946ec2b cfs_percpt_current +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x5b5293bf cfs_percpt_lock_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x5c013b81 cfs_expr_list_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x5dce9e80 libcfs_lnd2str +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x5e57c1b4 cfs_cpt_table_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x60c4896d libcfs_kkuc_group_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x61963be9 cfs_hash_is_empty +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x62289d65 cfs_array_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x63330894 cfs_cpt_unset_node +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x6421446a cfs_crypto_hash_update_page +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x64685fef libcfs_console_min_delay +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x6564c55b libcfs_console_max_delay +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x65dd9f0c libcfs_run_upcall +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x67398404 cfs_wi_sched_destroy +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x6b6fce89 cfs_hash_dual_bd_lookup_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x6c905b5f libcfs_watchdog_ratelimit +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x717221d4 cfs_cpt_set_node +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x71f662a3 libcfs_debug +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x7310795b cfs_wi_sched_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x740cdd58 cfs_hash_size_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x742d26e0 cfs_hash_bd_finddel_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x755f3504 cfs_percpt_unlock +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x7565fbba cfs_hash_putref +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x7a63872e cfs_timer_disarm +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x7a75b523 cfs_hash_for_each +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x7b0b748a cfs_ip_addr_parse +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x7b41d9bb cfs_cpt_nodemask +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x7d3b386c cfs_hash_rehash_cancel_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x7e6f6485 cfs_ip_addr_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x7ed18cb6 cfs_hash_debug_header +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x7fda989d cfs_fail_loc +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x8151c3aa cfs_cap_raised +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x81bb548e cfs_cpt_table_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x831e04fb cfs_hash_bd_peek_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x83d795e4 cfs_match_nid +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x83f2c5c9 cfs_hash_rehash_key +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x841e4c39 cfs_hash_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x84f09625 cfs_cpt_unset_cpumask +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x857aaea7 libcfs_register_ioctl +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x865483a9 libcfs_kvzalloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x8840f591 cfs_block_allsigs +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x8a405564 cfs_cpt_table_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x8a8f66da cfs_hash_dual_bd_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x8c85e4e6 cfs_crypto_hash_speed +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x9040d73a cfs_percpt_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x91504e8b libcfs_kmemory +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x92e3737a cfs_hash_bd_move_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x940ed192 libcfs_stack +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x95620e8c cfs_wi_deschedule +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x95daeb22 cfs_percpt_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x975daec1 cfs_percpt_atomic_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x97b0b9bc cfs_enter_debugger +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x9879b229 cfs_get_random_bytes +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x9c43568d cfs_hash_cond_del +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x9e420643 cfs_restore_sigs +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x9f702602 cfs_hash_bd_add_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x9f82f712 cfs_trace_copyout_string +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xa176acf0 libcfs_kkuc_msg_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xa2b68b2a cfs_array_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xa558c2e6 cfs_cpt_spread_node +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xa59e6cdc cfs_hash_rehash_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xa6b9dee6 libcfs_kkuc_group_rem +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xa9088531 cfs_expr_list_values +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xa9c0ca61 cfs_timer_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xa9dc74e2 cfs_trace_copyin_string +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xac1d385d cfs_cpt_clear +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xb141dff7 add_wait_queue_exclusive_head +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xb42d008e cfs_hash_bd_del_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xb8c52b1b cfs_timer_done +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xbab4f34e cfs_timer_arm +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xbf7a37f1 cfs_signal_pending +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xc0ea7fc0 cfs_expr_list_parse +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xc18ff8ae cfs_cpt_weight +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xc2dfd791 libcfs_console_ratelimit +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xc39fd2f9 libcfs_panic_on_lbug +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xc49b1c62 cfs_percpt_atomic_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xc598f441 cfs_cpt_table +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xcb385db9 libcfs_debug_binary +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xcc20e694 libcfs_nid2str +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xccc45639 cfs_free_nidlist +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xcd38904c cfs_wi_exit +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xce1a88f2 libcfs_arch_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xcf61bacb __cfs_fail_check_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xd35c698f cfs_cpt_current +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xd3e5b217 cfs_cpt_unset_nodemask +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xd6a52be3 libcfs_printk +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xd96f406d cfs_cap_raise +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xd9783a01 cfs_hash_hlist_for_each +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xde17bb8d libcfs_isknown_lnd +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xdf2789c0 cfs_curproc_cap_pack +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xdf6d552f cfs_cpt_set_nodemask +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xdfecb98d cfs_block_sigs +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xe262a6e2 cfs_timer_is_armed +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xe2f91ce3 libcfs_debug_msg +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xe3bf6897 cfs_percpt_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xe7b54314 libcfs_arch_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xe8bc9e52 cfs_percpt_lock_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xea411f63 cfs_block_sigsinv +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xebe084c1 cfs_hash_dual_bd_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xec1f56d5 libcfs_str2nid +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xeceac781 cfs_fail_val +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xed240fc4 cfs_hash_debug_str +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xedbfa1db cfs_hash_dual_bd_findadd_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xf1f98ed4 cfs_hash_dual_bd_unlock +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xf3565b71 libcfs_debug_vmsg2 +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xf440bb38 libcfs_kkuc_group_foreach +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xf4d96eb4 cfs_hash_for_each_empty +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xf5f64f4d cfs_hash_add_unique +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xf8a8644b libcfs_id2str +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xf94025d1 libcfs_str2lnd +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xfcb73ea9 cfs_cpt_unset_cpu +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xfd6a0184 cfs_hash_for_each_key +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xfe565fa9 cfs_crypto_hash_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/llite/lustre 0x381128ed ll_direct_rw_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/llite/lustre 0x40912e20 ll_iocontrol_register +EXPORT_SYMBOL drivers/staging/lustre/lustre/llite/lustre 0x44ba851d ll_osscapa_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/llite/lustre 0xad15d6a9 ll_stats_ops_tally +EXPORT_SYMBOL drivers/staging/lustre/lustre/llite/lustre 0xcd3cde92 ll_iocontrol_unregister +EXPORT_SYMBOL drivers/staging/lustre/lustre/lov/lov 0x2d456477 lov_lsm_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/lov/lov 0x42e55f2e lov_stripe_unlock +EXPORT_SYMBOL drivers/staging/lustre/lustre/lov/lov 0x5fafa955 lov_device_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/lov/lov 0x6493083c lov_stripe_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/lov/lov 0x6872be13 lov_lsm_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/lov/lov 0xd426d808 lov_read_and_clear_async_rc +EXPORT_SYMBOL drivers/staging/lustre/lustre/mdc/mdc 0x0df21540 it_set_disposition +EXPORT_SYMBOL drivers/staging/lustre/lustre/mdc/mdc 0x5919b6d6 it_clear_disposition +EXPORT_SYMBOL drivers/staging/lustre/lustre/mdc/mdc 0x5ef8417d it_disposition +EXPORT_SYMBOL drivers/staging/lustre/lustre/mdc/mdc 0xfe26c5a6 it_open_error +EXPORT_SYMBOL drivers/staging/lustre/lustre/mgc/mgc 0xdc287f95 mgc_fsname2resid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x00db7afb lu_context_key_revive_many +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x01665e34 class_parse_net +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x017fac14 cl_site_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x02735a88 dt_locate_at +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x035852d0 lustre_swab_llog_rec +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x039237cd class_import_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x03ab7bb3 lu_object_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x03b37a9c lu_kmem_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0413fe6e cl_2queue_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x046d2af9 lu_object_locate +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x057f6d4b class_find_old_param +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0590dfcd cl_io_sub_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x05fed2e4 cl_io_unlock +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x07aa68bb lustre_swab_lustre_cfg +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x07afc85c class_get_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x07d45876 obdo_set_parent_fid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x083942ff class_del_profile +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0845523a cl_io_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x08ca46b3 dt_txn_callback_del +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x08d3f469 cl_page_lookup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x08f8056a class_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x09c79601 lu_site_stats_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x09e8a066 dt_version_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0ab898b5 obdo_cpu_to_le +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0b513ee7 obd_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0bf9f0b7 class_detach +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0c378d79 lustre_swab_llog_hdr +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0cdd2f1f cl_lock_discard_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0e69fc1a cl_lock_release +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0ec2f8c4 class_new_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0fa983bd lu_object_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0fda75d0 lprocfs_rd_state +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x10c600ac cl_req_slice_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x112bdc51 lprocfs_obd_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x112cc172 lu_device_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x11495519 lprocfs_write_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x116893da llog_open_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x116cda0e llog_is_empty +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x117b4f3c cl_env_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x123e5b5b dt_directory_features +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1278cb01 dt_txn_callback_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x138e2ab2 cl_object_glimpse +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x13919198 cl_io_iter_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1491dc30 lu_context_tags_clear +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x15176173 cl_lock_is_mutexed +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x156585ab obdo_from_iattr +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x15bd8143 cl_page_list_disown +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x15d57a46 lu_device_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1629989d dt_txn_hook_start +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x16657f64 lprocfs_counter_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1752c28e lprocfs_alloc_obd_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1839e8bb cl_page_slice_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1a3a7829 cl_unuse_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1a4cad98 cl_lock_signal +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1a4d8f81 cl_2queue_disown +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1acacee2 lu_context_key_quiesce +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1c1933b0 class_add_conn +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1d5fc89f llog_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1fd85901 lu_stack_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2055c24a cl_object_has_locks +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2075efe6 cl_site_stats_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x209a0dba cl_page_list_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x221826f1 class_parse_nid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x22ebc2e8 cl_page_prep +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x237934e7 cl_lock_delete +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x23c5dcb7 ldebugfs_obd_seq_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x23fd9334 cl_io_lock_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x24257f5e lu_device_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2431330d llog_copy_handler +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2473e0a9 lprocfs_clear_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x25169738 cl_page_list_discard +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2547efae lustre_uuid_to_peer +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2705ff5f cl_lock_descr_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x275cdc7a cl_env_reexit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2811b9e0 llog_process_or_fork +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x286860f5 class_handle_free_cb +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x287d40c6 cl_lock_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x297cf5e0 class_handle2object +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x299cfc1b lprocfs_oh_tally +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2a25214b lprocfs_rd_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2a7925ab cl_stack_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2ae1cd79 kuc_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2b23672a cl_use_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2b24f17b lprocfs_wr_atomic +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2c3c35b2 lustre_process_log +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2c62ed1a cl_req_page_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2f0c99b1 capa_cpy +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2f63907d cl_page_completion +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x30cb70f5 class_disconnect +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x316d5083 cl_object_header_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x320bfa2b dt_try_as_dir +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3242ed35 obdo_cachep +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x32a9715d cl_object_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x32ba7a38 dt_quota_slv_features +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x33c151e3 lu_buf_realloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x34dbf893 lprocfs_alloc_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x35c11beb llog_exist +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x35c921dc cl_page_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x35e9b2f7 lprocfs_rd_uint +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x36123621 cl_offset +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x369be015 obdo_le_to_cpu +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x36e02a11 class_fail_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x375a675a lprocfs_init_ops_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x378f36e4 cl_page_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x37a18041 lprocfs_at_hist_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x37ed6e4b at_early_margin +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x38a02ab7 llog_reverse_process +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x38fb0c90 class_match_param +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3934416a cl_page_is_owned +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x394059bf cl_enqueue +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3a5a5798 class_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3aa07300 class_num2obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3abb8368 llog_cat_init_and_process +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3ade400a cl_2queue_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3b654fcb cl_lock_get_trust +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3b8256aa lu_site_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3c87be42 lu_object_put_nocache +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3d173843 lu_env_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3eab7bfe LU_BUF_NULL +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3f25c782 obd_max_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3f5c5828 cl_lock_descr_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x40943471 lu_site_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4098fba0 cl_2queue_init_page +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x415474eb class_connected_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x415a3287 cl_wait_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x42585e80 dt_read +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x43af28d1 llog_open +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x444b6bd6 lu_context_refill +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x448478e9 lustre_end_log +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x452f559a lu_buf_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x459cce99 ldebugfs_remove +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x45e90298 lu_context_key_quiesce_many +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x46b15c5a lu_object_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x46cbdc4d cl_page_cache_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x474ed5bd lustre_swab_ll_fid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x47b35f7d statfs_unpack +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x482d3cb5 capa_cachep +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x482f6679 class_conn2export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x48486dcb cl_lock_unhold +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x487fd8d1 capa_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x490a3c33 cl_object_top +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x494cfb52 lustre_acl_xattr_merge2ext +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x49a0f6ea lustre_posix_acl_xattr_2ext +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4a58e4e4 obdo_from_la +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4ac58713 obd_connect_flags2str +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4c190aad lprocfs_find_named_value +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4c4c700b obd_alloc_fail +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4d13458b kuc_len +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4d29f449 cl_env_implant +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4d6389a9 lprocfs_rd_atomic +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4e049e4d lu_object_unhash +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4e732ec2 cl_object_attr_unlock +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4ea81dbf lprocfs_obd_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4ef19c7e cl_lock_at_pgoff +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4f3deab1 lprocfs_single_release +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4f6b654f cl_lock_error +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x500ec4d6 class_manual_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x508a7090 llog_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x50c7fc36 ptlrpc_put_connection_superhack +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5124f25f lprocfs_oh_tally_log2 +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x517f6ad5 cl_env_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x523ab046 lprocfs_rd_timeouts +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x526f38ff lu_device_type_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x54452d47 cl_lock_hold_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x544a5167 la_from_obdo +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x54570c3c cl_page_at +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x54885f87 ldlm_timeout +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x557e7b14 lustre_posix_acl_xattr_filter +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x558bec27 obd_ioctl_getdata +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x564e9d44 init_capa_hash +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x56db2012 dt_key +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x570d09ae lustre_swab_lu_fid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x57567392 cl_lock_is_intransit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x57596212 lprocfs_wr_uint +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x580ff67e llog_cat_close +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x582b013d dt_quota_glb_features +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x585d2ac3 cl_page_assume +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x586bad73 obd_export_evict_by_uuid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5a20d896 obd_memory_max +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5bc022c5 lprocfs_dt_rd_filestotal +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5c2f35b0 lu_object_find_slice +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5c44fea6 class_exp2cliimp +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5c4735b2 lprocfs_rd_server_uuid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5d34ae0d cl_lock_mode_name +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5d73b1e2 llog_declare_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5d9eb6d7 lu_object_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5e3d6789 cl_lock_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5eeff1ee llog_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5f99a85a cl_lock_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5fe97b73 block_debug_check +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x60172a1d lprocfs_counter_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6033b908 obdo_cmp_md +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x62870cc0 cl_lock_disclosure +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x631fd7b9 lustre_ext_acl_xattr_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x63d45bee class_connect +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x640b2be2 cl_2queue_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6470a3ab cl_type_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x649fabc7 cl_page_list_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x64e71e60 lu_device_type_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x65b5ea71 cl_page_flush +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x66c5534f iattr_from_obdo +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x66cce97d cl_page_list_splice +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x66ea1144 dump_lniobuf +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x66edd332 cl_object_prune +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x67333176 dt_index_read +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6734adbd lprocfs_read_frac_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x675244fa dt_otable_features +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6792238d dt_object_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x67a6ccdb cl_object_attr_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x67d33f00 class_search_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x67de0b2b llog_write_rec +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x67f0f095 lu_context_key_register +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x68336cea cl_enqueue_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6880396e lu_context_key_register_many +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6890d175 lustre_get_jobid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x68bb8d75 lu_context_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x698b61fc cl_lvb2attr +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x69c42114 at_min +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6aa03170 ldebugfs_register +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6aa5f78e dt_txn_hook_commit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6b2cf30a lu_context_key_degister_many +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6bbf54bd cl_lock_hold_release +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6bdbf879 lu_env_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6c10a7f2 lprocfs_rd_conn_uuid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6d3345eb cl_page_own +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6f39cb11 class_disconnect_stale_exports +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6f7d4e17 obdo_from_inode +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x700c63e0 cl_req_completion +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x70e066b4 cl_page_list_del +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x71e074be obd_export_nid2str +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7203326c lustre_common_put_super +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x72a1426d cl_page_list_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x742559b1 class_unregister_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x74376549 cl_io_top +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7471c511 cl_lock_extransit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x74d7a138 dt_version_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x752f71a8 class_get_profile +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x756a77f3 class_parse_nid_quiet +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x76689c82 cl_lock_at +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x771f852a cl_page_find +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x775f1bb0 lustre_register_kill_super_cb +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x77d2089a class_name2dev +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7802fcd7 lustre_swab_llogd_conn_body +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x789796a1 obd_zombie_barrier +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x789e7679 capa_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x78b76879 lu_object_invariant +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7904519b cl_sync_io_wait +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x79fe2612 lu_dev_del_linkage +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7a04246a cl_io_lock_alloc_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7ab2137c cl_io_end +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7adfc9c7 cl_io_slice_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7b173d63 cl_io_submit_rw +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7b4fc57b at_max +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7b6abfe9 cl_env_nested_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7c84b87e cl_lock_weigh +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7cb2175c obdo_refresh_inode +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7d30143e cl_lock_peek +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7dc6986a lu_context_key_revive +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7dfb05f8 cl_page_list_move +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7e81c459 cl_io_submit_sync +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7e9ed756 lu_object_find +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7edcafa0 cl_env_reenter +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7f7d7cd9 lu_buf_check_and_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7fc5c691 cl_req_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7fe5561a obd_dirty_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8031efb8 lprocfs_dt_rd_kbytestotal +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x806cc497 class_add_uuid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x809fb81d lu_object_add_top +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x80a81036 class_process_proc_param +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x80e35f6c cl_page_make_ready +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x80fc0ab6 lu_object_header_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x81742d89 obd_ioctl_popdata +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x82c6a24b cl_lock_nr_mutexed +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x82feba76 lprocfs_rd_u64 +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x831f656c class_process_config +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x838f59d3 cl_page_clip +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x83a7f8fe llog_cat_add_rec +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x841e3694 cl_page_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8446b9a8 obdo_to_ioobj +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8476217b cl_io_commit_write +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8489f086 obd_alloc_fail_rate +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x849ca632 lu_object_header_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x849e5385 obd_update_maxusage +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8503c454 lu_buf_check_and_grow +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8514b716 llog_process +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x856ecd8c llog_declare_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x85925e37 cl_io_read_page +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x85e9018c cl_io_rw_advance +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x85ea5cd3 class_decref +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x865ac8b7 cl_io_prepare_write +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x86c96d08 ldebugfs_seq_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x88042bcc dt_lookup_dir +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8a2e155d lu_object_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8aa2c358 lprocfs_dt_rd_blksize +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8b5f4057 lu_context_tags_update +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8ba6e479 lustre_swab_lu_seq_range +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8c111595 cl_page_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8d2a084a lu_site_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8ddc5b5f cl_object_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8e10e6d6 server_name2svname +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8e5f421c cl_env_unplant +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8f1d9927 cl_page_is_under_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8f67314c obd_dump_on_eviction +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8f825b3d llog_sync +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9031dc48 lprocfs_oh_sum +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x90ef9232 class_export_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x915a7aa9 obdo_to_inode +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x91f4eef7 cl_lock_slice_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x92825a74 cl_page_top +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x92dc11b5 ldebugfs_add_symlink +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x92e58479 obd_dump_on_timeout +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x931e3505 cl_lock_enqueue_wait +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x93b46468 lu_session_tags_clear +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x940a107f cl_page_header_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x94c5c232 dt_device_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x94fae5fb dt_txn_hook_stop +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9512d507 lustre_acl_xattr_merge2posix +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x952bb346 cl_page_find_sub +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x953e2432 class_find_client_obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x955f5220 ldlm_timeout_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x95735c6c at_extra +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9574f4a4 cl_io_start +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x95b78c46 lprocfs_init_mps_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x95c9d056 lu_context_exit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x96148cfb class_handle_hash +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9767adce class_uuid2dev +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x97acfbcc lu_object_anon +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x97d03783 at_history +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x985385b0 lu_object_find_at +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x99b35f27 _debug_capa +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9a82b81c cl_index +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9aa82a96 cl_lock_state_wait +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9b1ed9d8 obd_jobid_var +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9ba516f2 lprocfs_rd_connect_flags +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9c8f1e98 cl_io_loop +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9d64b382 llog_close +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9d77e5d7 cl_lock_hold +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9dae83d4 lprocfs_stats_collect +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9dbb17b6 lprocfs_dt_rd_kbytesfree +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9e525b63 cl_lock_enclosure +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9ee8d1b4 dt_store_resolve +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9f6bc28b obd_max_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9fbd3d3d cl_io_iter_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa0ae05c6 llog_init_handle +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa160da4a lu_object_header_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa1896287 lu_device_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa2a9342c class_disconnect_exports +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa2c98709 class_put_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa31bc95e lu_object_assign_fid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa3cab9ac lustre_register_client_fill_super +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa54a496d lprocfs_counter_sub +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa57255f4 cl_lock_ext_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa5b62809 class_unlink_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa5fb234f lprocfs_write_frac_u64_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa635189a cl_io_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa674c241 kuc_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa6871654 dt_declare_version_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa6acd55f class_handle_hash_back +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa7167495 cl_io_is_going +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa72b56bd cl_lock_user_del +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa7b9fee5 lprocfs_rd_name +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa7e16614 lu_kmem_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa80b9325 cl_page_gang_lookup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa9532df8 obd_export_evict_by_nid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa9edd959 lprocfs_oh_clear +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xaa21b7a0 lustre_register_quota_process_config +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xab1f3bee obd_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xab8a4231 cl_page_unmap +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xabd47fa3 cl_page_discard +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xabf45922 capa_decrypt_id +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xac0f007b cl_page_delete +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xac7f1596 kuc_ptr +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xad3cbdfe cl_io_rw_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xad58a690 cl_lock_user_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xada897b2 lu_dev_add_linkage +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xadce46cb dt_record_read +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xaf058cd8 llog_cat_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xaf614b76 cl_object_header_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xaf86cb85 cl_conf_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xaf9852e7 __llog_ctxt_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xaf9d2249 lu_env_refill +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xafa1af9e cl_req_page_done +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb01963a6 class_uuid_unparse +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb0ba1cea class_new_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb120b35f cl_page_unassume +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb1b89b6d class_attach +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb1eea3b8 lu_site_purge +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb20043e7 lu_cdebug_printer +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb2875456 class_incref +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb35519ed lustre_swab_cfg_marker +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb41998cd lustre_cfg_rename +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb4a870f9 lprocfs_stats_alloc_one +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb4f8ee63 lprocfs_read_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb4fce9e5 cl_page_list_assume +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb635af9e dt_acct_features +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb6ba5dd5 kuc_ispayload +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb6de8ba3 cl_wait +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb6e5c0e6 cl_io_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb743ec6a dt_mode_to_dft +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb76d8990 cl_sync_io_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb7a76139 cl_page_list_own +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb8444ee8 cl_pages_prune +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb84b4dd0 llog_cat_reverse_process +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb93e2794 class_config_llog_handler +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb9537813 lu_context_enter +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb9aeb01d class_config_parse_llog +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb9eba835 cl_object_attr_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xba985283 lustre_register_client_process_config +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbacac922 lprocfs_write_frac_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbb567be2 cl_io_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbc249b3d lprocfs_seq_read_frac_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbc436a0d obdo_cpy_md +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbdfba62b lprocfs_exp_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc03d7960 cl_lock_mutex_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc08f3d8b class_conn2cliimp +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc0bf7ef2 obd_debug_peer_on_timeout +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc18d06cf lu_buf_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc18d30e9 class_name2obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc40c8659 class_import_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc635c731 class_handle_unhash +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc68d79fb llog_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc964946b lu_env_refill_by_tags +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc9938df3 llog_thread_key +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xca200365 lprocfs_alloc_md_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcac07e1a lu_context_key_degister +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcb0ab67f obd_max_dirty_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcb86f8e9 ldebugfs_add_simple +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcc38492e cl_2queue_discard +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcc817507 cl_page_own_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcd0c6a81 cl_lock_state_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcd7537ee get_devices_count +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xce63c72b dt_device_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xce975c45 lprocfs_free_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcf39923f ldebugfs_register_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcfcfc8ea dt_find_or_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcff3e31d cl_lock_mutex_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcfff4746 cl_env_peek +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd06ed07b lprocfs_obd_rd_max_pages_per_rpc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd08827c0 server_name2fsname +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd09706ed cl_lock_modify +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd10aa042 lustre_swab_llog_id +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd1d30b31 cl_page_size +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd1d9e43f md_from_obdo +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd1f8863a obd_memory +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd23f9822 llog_cat_process +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd5832da9 cl_env_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd5e16d9a cl_sync_io_note +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd70fe669 lustre_swab_llogd_body +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd7bc8654 obd_timeout +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd7bfbc9c lprocfs_dt_rd_filesfree +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd7d9d702 class_exp2obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd7f7b340 cl_lock_mode_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd9a8aa01 class_conn2obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xda5b1ced class_find_param +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdac644c8 lustre_posix_acl_xattr_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdb13dce1 capa_list +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdb436d77 llog_cancel_rec +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdb50f3ed cl_2queue_assume +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdc0fd68b llog_erase +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdcc40af0 class_check_uuid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdd948a91 lu_context_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xddd2f7db cl_lock_closure_build +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdddbd64e cl_page_is_vmlocked +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xde7d985b obd_dirty_transit_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xde81d2e6 cl_page_vmpage +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdf998b85 cl_env_nested_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe02345ab dt_store_open +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe028cf84 capa_encrypt_id +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe03f6e7d cl_vmpage_page +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe16fa1f5 cl_site_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe1817718 llog_declare_write_rec +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe29a7df4 cl_attr2lvb +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe2d7ac43 cl_queue_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe2eb4470 class_get_next_param +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe3bd00c5 cl_locks_prune +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe4babcaa cl_object_attr_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe4c45580 llog_cat_declare_add_rec +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe575a30d cl_page_disown +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe57667a6 llog_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe5cd417f lprocfs_seq_release +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe749d161 lprocfs_init_ldlm_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe77d76d1 cl_page_list_unmap +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe7d83236 cleanup_capa_hash +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe86d33af cl_lock_closure_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe8e84c32 class_match_nid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe992cd13 class_destroy_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe9de8145 cl_unuse +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe9df0181 dt_record_write +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xeae6991f obd_devs +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xec3f700d cl_req_attr_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xec7d6b85 obd_timeout_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xec886345 llog_backup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xee68bc29 lu_session_tags_update +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xee836877 cl_page_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xeeeb79fa do_lcfg +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xef52e248 dt_index_walk +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xef76f858 block_debug_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf01e2527 server_name2index +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf01f9e2f cl_lock_closure_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf2fd6695 statfs_pack +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf326c85e cl_lock_request +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf332807a dump_exports +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf339e942 cl_lock_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf3bc5b9d dt_lfsck_features +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf3c0e463 lu_context_key_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf4468d43 cl_object_kill +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf490d5f9 class_del_profiles +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf4b74882 class_devices_in_group +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf4da8072 obd_exports_barrier +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf4f58c51 llog_cat_cancel_records +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf515529d obdo_from_md +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf5a0ce2b cl_lock_mutex_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf60d4659 capa_count +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf7020831 lprocfs_dt_rd_kbytesavail +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf831b90b cl_object_find +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf9cac6ec class_uuid2obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfa813d06 capa_hmac +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfabc9b8a lprocfs_free_md_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfad5d313 class_register_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfb07cf8e ldebugfs_add_vars +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfbada9e1 llog_cat_process_or_fork +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfbea0098 lu_types_stop +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfc7c8c8f capa_lookup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfc7f18d0 obd_pages_max +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfcbcd49a class_config_dump_llog +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfd68d17a class_notify_sptlrpc_conf +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfdbe1557 lprocfs_write_u64_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfdc26cf5 lprocfs_free_obd_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfdf11183 llog_write +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfe2b9f25 dt_object_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfe682b46 class_export_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfeb00953 lu_site_init_finish +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfed520d7 cl_req_prep +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xff50074b cl_lock_intransit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xff57e92d class_match_net +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfffc1f11 lustre_swab_ost_id +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x00670d4b req_capsule_client_swab_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x00cb99c1 RQF_LDLM_INTENT_GETXATTR +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x00d95039 ptlrpcd_decref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x01d6ef7f ldlm_pools_recalc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x028f4a12 ptlrpc_recover_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x029d4ce1 req_capsule_filled_sizes +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x044cf96d ptlrpc_hpreq_handler +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x048b59d5 lustre_msg_set_handle +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0515f93b RQF_FLD_QUERY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x057187ae ldlm_completion_ast +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x06767bb9 ptlrpc_prep_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x06b3942b lustre_swab_lov_user_md_objects +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x06d4a110 ldlm_resource_putref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0711f926 sptlrpc_import_flush_my_ctx +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x071fc74a RQF_LDLM_ENQUEUE_LVB +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x07605c7d interval_find +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0767475c ldlm_completion_ast_async +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x07c1ee32 ptlrpc_stop_all_threads +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x08bb2d27 lustre_swab_obd_ioobj +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0920e6f6 ptlrpc_wake_delayed +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x095587d0 lustre_msg_buflen +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0a253f9e ptlrpcd_add_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0a3130b0 RMF_MDT_EPOCH +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0ac252b2 lustre_msg_set_jobid +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0ac54708 lustre_errno_hton +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0bcacb5d RMF_MDS_HSM_USER_ITEM +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0c25aaed sptlrpc_register_policy +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0c2d9c43 lustre_swab_lip_header +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0cf343dd RQF_LDLM_INTENT_BASIC +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0d05975c req_capsule_server_sized_swab_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0d9fe67e sptlrpc_target_export_check +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0e73efb8 lustre_pack_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x10f18f20 interval_iterate_reverse +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x115017f6 req_layout_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1281028b sec2target_str +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x12b6f5a3 ptlrpc_connection_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x12d0d6b8 ldlm_lock_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x13ef0537 ptlrpc_buf_need_swab +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x14708afc lustre_swab_mdt_rec_reint +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1483eca4 ldlm_lock_addref_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x14d192db lustre_msg_size +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x152d2e5f ldlm_lock_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x156b98df ptlrpc_request_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x15a3e4db RMF_GETINFO_VAL +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x15cf83ab ptlrpc_mark_interrupted +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x160b91e3 ptlrpc_send_error +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x16322e3e req_capsule_client_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x16b70202 ldlm_get_enq_timeout +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x172fb86d lustre_msg_hdr_size +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1747d8b3 ldlm_lockname +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1786ba5c req_capsule_shrink +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x17950f60 RQF_SEC_CTX +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x17ca568e ptlrpc_pinger_del_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x18ba7e5e ptlrpc_unpack_req_msg +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x19108a0f RQF_OST_DISCONNECT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x19b1909f ldlm_pool_get_limit +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x19c08934 RQF_LDLM_INTENT_CREATE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x19d6e5f0 ptlrpc_register_service +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1a6a3ce9 RQF_OST_GET_INFO_LAST_ID +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1a9b76aa RMF_OBD_QUOTACTL +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1abd3258 RMF_SETINFO_VAL +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1ace4b5f RQF_LDLM_BL_CALLBACK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1ad6c330 RMF_EAVALS +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1bae0270 interval_iterate +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1bcaa3c1 _debug_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1be21715 lustre_msg_size_v2 +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1c300d8e lustre_msg_get_slv +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1d014a2d ldlm_extent_shift_kms +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1d043548 lustre_msg_set_op_flags +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1dc2051d RMF_SEQ_OPC +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1de9c288 lustre_swab_layout_intent +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1e8e48a4 sptlrpc_flavor_has_bulk +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1eb2a65f RQF_OST_GETATTR +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1ee46b51 lustre_init_msg_v2 +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1ee9eb3c RQF_MDS_QUOTACTL +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2096f5b5 RQF_OST_SET_GRANT_INFO +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x20d6b82c RQF_LDLM_INTENT_QUOTA +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x218a36ce ldlm_cli_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x219391ec RMF_EAVALS_LENS +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x21cce11d ptlrpc_unregister_service +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x21fedadb ptlrpc_resend +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x223f50c8 ldlm_destroy_flock_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x228b0c0b ptlrpcd_wake +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x22b05d14 lustre_pack_reply_flags +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x22cab94b ptlrpc_deactivate_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x230763ae ptlrpc_add_rqs_to_pool +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x233790b5 RMF_OST_BODY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x244e5558 lustre_msg_get_version +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x24aafdba RMF_MGS_TARGET_INFO +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2585a629 RMF_SEQ_RANGE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2587513c RQF_LDLM_CP_CALLBACK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x269554ce RQF_LDLM_INTENT_GETATTR +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x26f99d16 RQF_MGS_CONFIG_READ +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x285e5b99 lustre_msg_set_conn_cnt +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x292f7902 ldlm_pool_get_clv +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x29b8fce1 sptlrpc_sec_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x29e0869a sptlrpc_get_hash_name +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2a63a472 lustre_swab_ptlrpc_body +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2a8a2290 req_capsule_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2b14c8a3 ptlrpc_set_destroy +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2b8173e4 lprocfs_wr_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2bd2dc5a ptlrpc_cleanup_client +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2c00c60d ptlrpc_sample_next_xid +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2ca92fa8 ldlm_lock_decref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2ccd5b87 ldlm_cli_cancel_list_local +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2d56f168 ptlrpc_pinger_ir_up +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2d737d48 ldlm_prep_elc_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2d798316 RMF_MGS_CONFIG_RES +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2e4562fe RQF_LLOG_ORIGIN_HANDLE_CREATE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2e4ca396 RQF_LDLM_INTENT_UNLINK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2ecd7515 lustre_msg_check_version +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2f0e4f87 RQF_OST_QUOTACTL +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2f22e3f4 req_capsule_get_size +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2f793215 lustre_swab_ost_body +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2fab3539 lustre_swab_ost_lvb_v1 +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2fd2f737 lustre_msg_set_limit +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x301d4fcd RQF_MDS_READPAGE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x302937e0 RQF_MDS_CONNECT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3060b9c6 sptlrpc_rule_set_expand +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x30c43403 ldlm_namespace_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x31838cb4 RMF_IDX_INFO +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x318cb489 ptlrpc_lprocfs_brw +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3261b862 RQF_OST_SYNC +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x33bb7761 ldlm_typename +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x33ef1b44 ldlm_reprocess_all_ns +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x345008bc ptlrpc_set_import_active +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x353b1300 ldlm_lock_convert +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x35939a3d lustre_swab_fiemap +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x37d2dcb9 ldlm_namespace_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3835ab4b RQF_LLOG_ORIGIN_CONNECT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3858fb94 RMF_OBD_STATFS +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x38c01799 RQF_LDLM_CALLBACK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x38e22cea sptlrpc_cli_ctx_wakeup +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x38fce533 lustre_msg_set_versions +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x39d9c386 req_capsule_field_present +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x39f60a5f RMF_OST_ID +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3a1e4bcb __lustre_unpack_msg +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3ab90f6e lustre_msg_bufcount +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3abe0d52 llog_client_ops +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3ac00716 lustre_swab_hsm_user_state +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3b6b7cba dump_ioo +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3bedb0c7 RMF_LLOGD_CONN_BODY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3c63e62b RQF_MDS_REINT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3c8b16ab lustre_swab_ost_lvb +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3ca50f33 RQF_MDS_HSM_CT_REGISTER +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3cfdafc0 ldlm_register_intent +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3d105f78 ldlm_resource_iterate +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3d7dc5f9 ldlm_pools_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3dc47695 lustre_msg_get_magic +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3dfc202b __ptlrpc_free_bulk +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3f034caf lustre_msg_get_status +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3f2bdda9 ldlm_cli_cancel_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3f752e78 RQF_MDS_STATFS +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x40daf475 ldlm_pool_set_slv +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x41008cef RQF_LDLM_CANCEL +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x41fedcce ptlrpc_request_committed +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x43168488 RQF_MDS_RELEASE_CLOSE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x43705ee4 RQF_LOG_CANCEL +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x43d7efc8 lustre_msg_set_transno +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x44036eda RQF_MDS_GET_INFO +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x440c2a71 RMF_FIEMAP_VAL +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x442f1b08 ptlrpcd_alloc_work +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4481591d RQF_OST_SET_INFO_LAST_FID +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x44fc4174 ldlm_destroy_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x45d05893 lustre_swab_lustre_capa +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x45e30cea lustre_swab_ldlm_intent +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x47f5e903 RMF_MDS_HSM_REQUEST +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x481d040f ptlrpc_unpack_rep_msg +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x498c03c5 lustre_msg_set_last_xid +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4a5a2416 RMF_DLM_REQ +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4ad3e410 ldlm_lock_change_resource +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4ad986c3 lprocfs_wr_pinger_recov +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4d21bc34 sptlrpc_cli_ctx_expire +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4d32feb2 ldlm_pool_get_slv +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4d7580d0 lustre_swab_hsm_user_item +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4e1706e5 lustre_msg_buf +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4e5510d6 ptlrpc_request_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4e696b96 ptlrpcd_queue_work +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4eb03a6f ptlrpcd_destroy_work +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4f766c3b lustre_swab_generic_32s +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x50443f6a ptlrpc_init_client +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5097d4e9 ptlrpc_error +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x50dd74f8 RMF_STRING +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x524bdf54 ptlrpc_req_finished_with_imp_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x52c62150 RMF_RCS +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x53411557 RMF_DLM_REP +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x53a4a004 bulk_sec_desc_unpack +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x54ae5021 ldlm_lock_addref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x54d41ffb ptlrpc_request_pack +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x55182d2d ptlrpc_connect_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x555eb7fe RQF_MDS_HSM_STATE_SET +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x560cb0ba ptlrpc_set_next_timeout +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x584fbfc8 sptlrpc_gc_add_sec +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x588035b4 RMF_UPDATE_REPLY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x58b228b9 client_destroy_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x595ab175 lustre_swab_obd_quotactl +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x596582bf RMF_GETINFO_VALLEN +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x597a1036 ldlm_namespace_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5a057439 interval_search +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5aaa4c47 ldlm_pool_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5abdb6cc ldlm_namespace_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5af0d02a ldlm_lock_dump_handle +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5b6ba895 lustre_packed_msg_size +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5c6a3a83 RQF_SEQ_QUERY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5ca1b491 lustre_swab_close_data +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5caae213 ptlrpc_next_xid +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5d693d26 ptlrpc_at_set_req_timeout +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5e0b19b1 RMF_CLUUID +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5e2b7558 lustre_msghdr_get_flags +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5e6f435d RQF_OST_BRW_READ +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5e80f899 RQF_LLOG_ORIGIN_HANDLE_READ_HEADER +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5ec3284d RQF_MDS_HSM_CT_UNREGISTER +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5ef831ee lustre_msg_get_handle +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5f96ccdd ptlrpc_connection_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5fb30c98 ptlrpc_free_rq_pool +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5fc9a455 RMF_CLOSE_DATA +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x602c9c81 _ldlm_lock_debug +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6042bc15 RQF_MDS_REINT_RENAME +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x604e2505 RMF_SWAP_LAYOUTS +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x607ec932 lustre_msg_set_buflen +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x60cd26ad RQF_MDS_REINT_CREATE_SYM +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x60ddcd0c sptlrpc_cli_ctx_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x61646e1b RQF_MDS_SWAP_LAYOUTS +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x618ad203 RQF_OST_GET_INFO_LAST_FID +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x627924e5 ptlrpc_pinger_sending_on_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x62aaae3f RQF_MDS_HSM_REQUEST +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6315dd4c RMF_LLOGD_BODY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6352a62d ldlm_get_ref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x63586169 ptlrpc_prep_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x647b6e48 lustre_swab_ldlm_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x653723dc RMF_LOGCOOKIES +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x65901a17 sptlrpc_target_update_exp_flavor +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x66fdbded client_import_add_conn +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x685eeaba RMF_DLM_GL_DESC +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x68cb2541 interval_is_overlapped +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x68f49e5e ptlrpc_expired_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6912990a RQF_OST_QUOTACHECK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x69669be7 ptlrpc_save_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x696ba811 lustre_msg_get_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x69c9f04d RQF_MDS_REINT_LINK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6a127663 ldlm_cli_enqueue_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6a2e2d9c req_capsule_init_area +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6a3785c9 RMF_EADATA +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6c57bbf6 dump_obdo +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6c68ecb9 ldlm_lock_fail_match_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6ceee892 ldlm_flock_completion_ast +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6d72828c sptlrpc_conf_log_update_end +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6d7931cc RQF_UPDATE_OBJ +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6ddd7c6c ldlm_cli_cancel_list +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6ea16401 sptlrpc_unregister_policy +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6ed20499 ldlm_revalidate_lock_handle +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6efa82b0 RQF_MGS_TARGET_REG +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6f394f09 ptlrpc_request_set_replen +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6f6dc736 lustre_swab_mdt_remote_perm +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6fb92092 sptlrpc_flavor2name_bulk +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6fefb19e ptlrpc_cleanup_imp +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x703538e4 lustre_swab_hsm_current_action +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x723a65c6 ptlrpc_request_addref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x723d43b6 sptlrpc_rule_set_dump +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x725a892c RQF_MDS_REINT_OPEN +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x72e605ab ptlrpc_check_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7351ab7d ptlrpc_activate_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x739e16a4 ptl_send_rpc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x74840056 lustre_msg_set_status +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x75a2c40d ldlm_put_ref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x75dff9ef client_import_del_conn +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x76b728e5 lustre_swab_update_buf +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x76c895b0 ptlrpc_resend_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x77159fda ptlrpc_prep_req_pool +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x774161d7 ldlm_enqueue_pack +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7746dc03 ldlm_cancel_resource_local +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x77840c82 sptlrpc_rule_set_choose +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x781bb0df lustre_pack_request +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x78a0df80 client_obd_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x78bf9136 lustre_swab_ldlm_lock_desc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x78c98ae8 ptlrpcd_add_rqset +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7a832f10 RMF_CONN +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7b158da4 lustre_swab_ldlm_request +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7b1fa3e3 ptlrpc_unregister_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7b399a63 ldlm_pool_set_clv +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7b748603 ldlm_cli_cancel_unused +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7bbf8001 RMF_MDT_BODY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7c4c6107 RQF_LDLM_CONVERT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7d1ecd7f RQF_LDLM_INTENT_LAYOUT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7d41a8b9 RQF_QUOTA_DQACQ +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7dc0e7cd RMF_QUOTA_BODY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7dfb3c18 lustre_msg_clear_flags +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7e82b7fa req_capsule_server_swab_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7f4925d8 interval_expand +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7f4c99b1 ldlm_expired_completion_wait +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7f5a1cc7 lustre_msg_set_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7f6d2357 lustre_msg_is_v1 +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x80682d7b ldlm_prep_enqueue_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x80a9e8c3 lustre_msg_get_last_xid +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x80ecb4e3 RMF_MDS_HSM_CURRENT_ACTION +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x815a8ee5 ldlm_lock_fail_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x817d7f1f lustre_msg_add_flags +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x826d3c4f RQF_LDLM_GL_CALLBACK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x837efb00 RMF_NAME +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x84066a0c sptlrpc_gc_add_ctx +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x85135801 RMF_DLM_LVB +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x85a9e0d8 RMF_FID +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x85eecf67 sptlrpc_get_hash_alg +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x863213a5 ldlm_cli_enqueue_local +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x863db6eb RMF_HSM_USER_STATE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x86fa8c3b ldlm_cli_convert +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8760beaf lustre_swab_ldlm_policy_data +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x876c2551 RMF_GETINFO_KEY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x87bf7b3c sptlrpc_get_next_secid +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8872f3d2 RMF_SETINFO_KEY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x88c98865 ldlm_init_flock_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x88fff52d RMF_CAPA2 +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x896bbcd5 ldlm_glimpse_ast +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x89b733a5 req_capsule_server_dump +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x89f9edf7 RQF_MDS_REINT_SETXATTR +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8a1ea476 lustre_swab_hsm_state_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8a257736 RQF_MDS_HSM_STATE_GET +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8ac440fa ptlrpc_uuid_to_connection +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8b854254 lustre_swab_mgs_config_res +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8cb71d4b RQF_MDS_REINT_CREATE_SLAVE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8d77ea75 lustre_msg_set_flags +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8d8b19d6 ptlrpc_request_alloc_pack +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8da3fca7 lustre_msg_add_version +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8e9abe4d RMF_GENERIC_DATA +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8f0aceac RQF_MDS_HSM_ACTION +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8fec0451 lustre_msg_get_limit +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8ffb0af9 sptlrpc_cli_unwrap_bulk_read +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9192464f ptlrpc_replay_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x919c4ce3 RMF_OBD_ID +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x91cf58d3 RQF_MDS_PIN +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9228392f lustre_swab_mdt_body +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9297f81d ldlm_resource_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x937b1ee0 lustre_swab_mdt_ioepoch +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x950d7b7d ptlrpc_prep_fcset +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x951cfd14 sptlrpc_target_sec_part +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9553c633 RQF_LDLM_INTENT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x95d08f0c lustre_swab_mgs_target_info +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9660ace0 RMF_FLD_MDFLD +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x967bfd52 RQF_OBD_PING +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9723ce6d client_disconnect_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9798f2f1 RQF_MDS_GETATTR +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x980fcfdc ptlrpc_connection_addref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9999cf7a dump_ost_body +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9a258886 RQF_MDS_GETSTATUS +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9a48a1e2 sptlrpc_lprocfs_cliobd_attach +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9a672e88 llog_initiator_connect +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9a6f2f6d lustre_msg_set_opc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9a7890e8 ptlrpc_schedule_difficult_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9a97b4a0 ldlm_pool_del +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9b88f6ce RMF_NIOBUF_REMOTE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9bb5198b RQF_MDS_CLOSE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9bce88fb ldlm_blocking_ast +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9c943f52 sptlrpc_cli_ctx_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9cf398a3 sptlrpc_import_flush_all_ctx +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9d7ea314 sptlrpc_pack_user_desc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9dcc63fb do_set_info_async +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9e327aef req_capsule_extend +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9e96b41a ldlm_lock_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9edd6bf6 ldlm_lock_downgrade +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9fb088f1 lustre_swab_lov_mds_md +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa10f0d3d RMF_UPDATE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa163f4c3 dump_rniobuf +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa19f0c7c req_capsule_has_field +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa20632af ptlrpc_set_add_new_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa2244636 RQF_MDS_GETATTR_NAME +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa22c0086 ldlm_error2errno +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa26b0404 client_import_find_conn +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa2b49e47 ldlm_pool_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa38d9753 ptlrpc_start_threads +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa3ceaa19 ldlm_pool_get_lvf +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa3d2a6ee RMF_CAPA1 +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa41a84a6 sptlrpc_get_bulk_checksum +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa428891c req_capsule_client_dump +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa47787ef RMF_PTLRPC_BODY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa4a2d089 RQF_OST_PUNCH +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa4b794f5 sptlrpc_cli_wrap_bulk +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa4bea5ef lustre_swab_lmv_user_md +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa536e3b5 ptlrpc_unregister_bulk +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa5458dad ldlm_lock_decref_and_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa5880075 ldlm_errno2error +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa6c436ca RQF_MDS_WRITEPAGE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa7d55cc3 RQF_MDS_REINT_CREATE_RMT_ACL +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa7e360b1 RMF_OBD_IOOBJ +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa7ebe7a1 ptlrpc_req_xid +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa7ec567d RMF_CONNECT_DATA +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa8225aee req_capsule_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa85ed5c8 unlock_res_and_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa908d77b ptlrpc_send_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa9704f80 lustre_msg_get_last_committed +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa9c4658e lustre_swab_lov_user_md_v3 +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa9deadf6 ldlm_lock2desc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa9edf09d RQF_OBD_IDX_READ +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xab9c2de9 lustre_pack_reply_v2 +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xabd68220 ldlm_resource_unlink_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xac64477d sptlrpc_cli_unwrap_bulk_write +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xacd6a7d7 lustre_swab_ost_last_id +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xaddc3979 lustre_swab_lustre_capa_key +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xae51004a ptlrpc_register_bulk +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xae9de7f4 ptlrpc_add_timeout_client +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xaf4e9658 RQF_MDS_SYNC +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xaf50a0d6 RMF_HSM_STATE_SET +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xafb56e2b sptlrpc_sec_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb00f7648 sptlrpc_cli_enlarge_reqbuf +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb0751fa4 RQF_LLOG_ORIGIN_HANDLE_DESTROY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb08dd3df ptlrpc_set_add_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb1b43d8a dump_rcs +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb27c2374 lustre_msg_get_jobid +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb291473d lustre_msg_early_size +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb3f8ad7b ldlm_pool_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb4a7ecf3 lustre_msg_add_op_flags +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb512ebc2 sptlrpc_parse_flavor +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb52fce25 ptlrpc_nrs_policy_unregister +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb55cf982 ptlrpc_buf_set_swabbed +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb61cb95a RQF_MDS_GETXATTR +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb68476df interval_erase +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb6aafd03 RQF_MDS_DONE_WRITING +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb6be9a10 ptlrpc_lprocfs_register_obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb6f09048 req_capsule_set_size +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb7b38189 RMF_MDT_MD +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb7c48405 ldlm_pool_shrink +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb7fa3cc8 RMF_LLOG_LOG_HDR +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb903634e RQF_OST_CONNECT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb95b80ec ldlm_blocking_ast_nocheck +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb9b631cf lustre_swab_mgs_config_body +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb9ba50d4 ptlrpc_request_bufs_pack +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbaa76097 lustre_msg_string +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbafbbe31 target_print_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbc1370dc lustre_shrink_msg +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbd83bc44 RQF_OBD_SET_INFO +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbe47bc7e ping_evictor_start +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbe9f95c8 target_pack_pool_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbef660ce __ldlm_handle2lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbef769cc RQF_CONNECT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbf4b1397 ldlm_namespace_foreach +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbf98b86f RQF_MDS_QUOTACHECK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbfa436cd ldlm_cli_enqueue +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbffd4313 RQF_OST_BRW_WRITE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc02e3343 ldlm_lock_allow_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc06c4670 lustre_msg_get_versions +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc0867da7 RMF_REC_REINT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc0cdf55e RMF_MGS_SEND_PARAM +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc0d315e1 ptlrpc_prep_bulk_imp +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc1bd7311 ldlm_lock_allow_match_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc2986d28 lustre_swab_ldlm_res_id +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc2b1af57 RQF_MGS_SET_INFO +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc2be922a RMF_SYMTGT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc2c21a40 ptlrpc_retain_replayable_request +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc559a634 RMF_LAYOUT_INTENT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc60a60e1 RQF_OST_STATFS +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc640ff19 ldlm_cli_update_pool +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc67d4b2a req_capsule_server_sized_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc694be4b RQF_LLOG_ORIGIN_HANDLE_PREV_BLOCK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc763fabc sptlrpc_process_config +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc79b9c67 ldlm_pools_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc7ca8257 RQF_MDS_REINT_SETATTR +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc7e47564 ptlrpc_interrupted_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc8f586a9 ptlrpc_connection_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc9466cde req_capsule_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xca009939 ldlm_resource_foreach +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xca5a81ec ptlrpc_pinger_ir_down +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xcb2cc0cf lustre_swab_lquota_lvb +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xcb2ceaff sptlrpc_secflags2str +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xcb40c395 lprocfs_rd_pinger_recov +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xcbedd5af ptlrpc_commit_replies +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xccf4c094 ldlm_replay_locks +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xcda792bc ptlrpc_req_finished +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xce1a689b sptlrpc_enc_pool_add_user +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xce86066d lustre_msg_set_slv +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xcec513c9 RQF_MDS_UNPIN +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xced015be sptlrpc_rule_set_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xcf9963db lustre_msg_get_op_flags +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xcf9aab6a RQF_MDS_DISCONNECT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd0667273 sptlrpc_enc_pool_put_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd0ec197f ptlrpc_nrs_policy_register +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd1587fec ldlm_pool_set_limit +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd2983334 lustre_swab_swap_layouts +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd2e0d4eb lustre_msg_get_opc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd32e5ce4 ptlrpc_pinger_add_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd3dae408 ldlm_it2str +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd42b13a9 sptlrpc_import_sec_ref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd5b9fe17 ldlm_lock2handle +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd5bc4d7a sptlrpc_gc_del_sec +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd67a5d7b lustre_swab_update_reply_buf +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd69e0a27 RQF_MDS_IS_SUBDIR +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd6c3ebfb RMF_FIEMAP_KEY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd7910326 lustre_swab_obd_statfs +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd7dcd661 req_capsule_server_pack +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd8776b1c sptlrpc_sec_destroy +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd8b91b3e lustre_swab_lov_desc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd8f06300 RQF_MDS_HSM_PROGRESS +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd91bc932 ldlm_cli_cancel_unused_resource +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd9561861 RQF_LDLM_INTENT_OPEN +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xda5945c8 sptlrpc_req_replace_dead_ctx +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xdad69ae7 req_capsule_server_grow +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xdb1fb0a2 RQF_MDS_REINT_CREATE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xdb9d5a6a lustre_swab_niobuf_remote +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xdce0a645 ldlm_pool_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xdd0ffb04 sptlrpc_flavor2name +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xdd30d7bf RMF_ACL +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xdd856fd5 ptlrpc_restart_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xddc40a85 lustre_msg_get_flags +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xde12d36b RMF_MDS_HSM_ARCHIVE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xde266fdc req_capsule_client_sized_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xde555d70 sptlrpc_enc_pool_del_user +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xdeab5466 req_capsule_server_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xdee87192 sptlrpc_conf_log_update_begin +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xdf701ae7 lustre_swab_fid2path +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe0cc694c RQF_LLOG_ORIGIN_HANDLE_NEXT_BLOCK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe217cbda ptlrpc_req_set_repsize +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe3d83b29 ptlrpc_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe40e0a50 lustre_msg_get_transno +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe4b8389a ptlrpc_abort_inflight +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe4e4f2ad ptlrpc_request_alloc_pool +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe57bd972 sptlrpc_current_user_desc_size +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe5e8169b lustre_errno_ntoh +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe643998e RQF_OST_SETATTR +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe6f0dc96 RQF_OST_CREATE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe7062b5f RMF_U32 +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe7512278 ptlrpcd_addref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe75199b2 ptlrpc_queue_wait +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe85b6da3 lustre_swab_obdo +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xea040e4a target_send_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xea92a023 ptlrpc_lprocfs_unregister_obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xeabac4fc sptlrpc_rule_set_merge +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xeb4df8cd client_connect_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xeb77cc0c ptlrpc_obd_ping +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xebb64e68 req_layout_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xec226f66 ping_evictor_stop +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xec939a00 RQF_MDS_REINT_UNLINK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xecace5c1 RQF_OST_GET_INFO_GENERIC +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xed1c10d6 ptlrpc_connection_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xed2804f7 ptlrpc_service_health_check +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xedcb740d sptlrpc_name2flavor_base +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xee34763d sptlrpc_conf_client_adapt +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xee825be9 ptlrpc_fail_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xeedb2c72 ptlrpc_invalidate_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xef1aeca9 RMF_FLD_OPC +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xef4ec154 lock_res_and_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xefbbdde9 sptlrpc_svc_ctx_invalidate +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf0241d6e lustre_swab_hsm_progress_kernel +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf06e09c0 ldlm_lock_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf0d52b5f ptlrpc_pinger_suppress_pings +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf11cb970 lprocfs_wr_evict_client +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf1300275 _sptlrpc_enlarge_msg_inplace +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf277c125 RQF_OST_GET_INFO_FIEMAP +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf27d49dc sptlrpc_target_choose_flavor +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf2b1939a __ptlrpc_prep_bulk_page +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf31076c2 client_obd_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf35f132b lustre_swab_ldlm_resource_desc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf390dea6 ptlrpc_init_rq_pool +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf3d44370 RQF_OST_DESTROY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf43540b9 lustre_swab_mgs_nidtbl_entry +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf45085e1 sptlrpc_conf_log_stop +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf4f36d0d ptlrpc_init_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf55c033b RMF_MGS_CONFIG_BODY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf584a16b sptlrpc_part2name +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf596e9ae sptlrpc_conf_log_start +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf607fc23 sptlrpc_flavor2name_base +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf617ab8a lustre_msg_get_conn_cnt +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf697b756 ldlm_dump_all_namespaces +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf6b4320a ldlm_namespace_new +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf7408f84 lustre_swab_hsm_request +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf7ba40c0 RMF_MDS_HSM_PROGRESS +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf80eda3d ptlrpc_reconnect_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf833757f lprocfs_wr_ping +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf85cb27e sptlrpc_parse_rule +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf870fed9 RQF_LDLM_GL_DESC_CALLBACK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf9051bd6 RQF_QC_CALLBACK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf94e41e0 deuuidify +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf973aa93 lustre_swab_lov_user_md_v1 +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf9d53a99 ptlrpc_disconnect_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf9ee11e2 lustre_msg_set_last_committed +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf9f72dfc RMF_TGTUUID +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xfa3d7196 sptlrpc_enc_pool_get_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xfa51688d interval_insert +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xfa987c5a req_capsule_other_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xfb665956 ptlrpc_set_add_cb +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xfc2fa83f ptlrpc_del_timeout_client +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xfc8eeee2 ptlrpc_set_wait +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xfd148bf8 RMF_LDLM_INTENT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xfead05ee ldlm_init_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xff02a0e9 ldlm_lock_set_data +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xff7a6adb ldlm_namespace_dump +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xffc807e8 sptlrpc_unpack_user_desc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xffd1f795 lustre_free_reply_state +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xffe29c3f RQF_LDLM_ENQUEUE +EXPORT_SYMBOL drivers/staging/media/cxd2099/cxd2099 0xfc6e2dcd cxd2099_attach +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x0450256b rtllib_wx_get_scan +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x065723ab rtllib_wx_get_rate +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x0a9463d2 rtllib_wx_get_mode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x0bb98c57 rtllib_wx_get_name +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x11edb1f4 notify_wx_assoc_event +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x249641c5 rtllib_wx_set_rate +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x25fe8d5e rtllib_wx_set_rts +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x26914705 rtllib_wx_set_scan +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x285501bc rtllib_wx_set_mode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x2ff2cca2 rtllib_get_beacon +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x37f59b1e rtllib_stop_scan +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x3ef17355 rtllib_stop_send_beacons +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x44802a6a rtllib_wx_set_freq +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x4549e68c rtllib_wx_get_essid +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x47517ca1 HT_update_self_and_peer_setting +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x4ce79e76 rtllib_wx_set_rawtx +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x4d4ae1ed rtllib_DisableIntelPromiscuousMode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x4ebbf1c5 RemovePeerTS +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x51a66bca rtllib_wx_set_power +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x51ab5114 alloc_rtllib +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x57c3af8a rtllib_wx_set_encode_ext +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x60354420 rtllib_wpa_supplicant_ioctl +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x639c1d6b rtllib_wx_set_gen_ie +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x66414804 rtllib_wx_get_freq +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x6654b401 rtllib_wx_set_wap +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x825598ec rtllib_legal_channel +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x88e2ee12 rtllib_start_send_beacons +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x945fdc41 rtllib_reset_queue +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x946ec3af rtllib_stop_scan_syncro +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x9847cc99 rtllib_wx_set_mlme +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xa52063b7 rtllib_wx_get_wap +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xa5699662 rtllib_wx_get_encode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xa6dc621f rtllib_start_scan_syncro +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xb2d42b7a rtllib_rx +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xb36ad2f9 Dot11d_Channelmap +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xb9a411b2 rtllib_MgntDisconnect +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xbcfad0a8 free_rtllib +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xbda7c6eb rtllib_sta_ps_send_null_frame +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xbe1420f2 rt_global_debug_component +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xbeeff650 rtllib_EnableIntelPromiscuousMode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xd0d24ce9 rtllib_softmac_stop_protocol +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xd45774a4 rtllib_softmac_start_protocol +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xdf78f620 rtllib_wlan_frequencies +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xe68a5ae8 rtllib_wx_get_rts +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xe941c5f1 rtllib_xmit +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xeba522a1 dot11d_init +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xef616bb1 rtllib_wx_set_essid +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xf05ed3d3 rtllib_wx_set_auth +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xf9238023 rtllib_act_scanning +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xfaae7c3f rtllib_ps_tx_ack +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xfb8ee6f7 rtllib_wx_get_power +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xfdabf2fe rtllib_wx_set_encode +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x007a69b5 ieee80211_start_send_beacons_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x0224716f SendDisassociation_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x057896ec ieee80211_wx_get_power_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x0f099f61 ieee80211_is_54g_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x102c4a36 notify_wx_assoc_event_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x1603ebf1 ieee80211_wx_set_essid_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x1c01d77a ieee80211_wx_set_gen_ie_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x1e402f50 ieee80211_wx_get_freq_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x21041897 IsLegalChannel +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x2512a63a ieee80211_wx_set_mode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x2e005961 ieee80211_wx_get_wap_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x38f18963 Dot11d_Init +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x395f4820 ieee80211_wx_get_scan_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x43307b75 ieee80211_wx_set_rts_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x4400aaea ieee80211_wpa_supplicant_ioctl_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x483c5f8a ieee80211_wx_get_name_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x4d136c7f ieee80211_wx_set_auth_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x4ef5773e ieee80211_wx_get_essid_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x4fb025cd ieee80211_ps_tx_ack_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x553fd00a Dot11d_UpdateCountryIe +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x5c5bfed4 ieee80211_wx_set_rate_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x5d8e0a23 ieee80211_wx_set_power_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x607fa4af ieee80211_rx_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x61c0247c ieee80211_wx_set_encode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x61ea895d ieee80211_is_shortslot_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x6211c1f0 ToLegalChannel +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x67f28fef ieee80211_rx_mgt_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x68ce8533 ieee80211_disassociate_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x6922ea43 ieee80211_wake_queue_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x69dda560 ieee80211_txb_free_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x6a430dc1 ieee80211_wx_get_encode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x6eae46d0 HTUpdateSelfAndPeerSetting +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x70bbb91c ieee80211_start_scan_syncro_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x8090f16d ieee80211_wx_set_freq_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x90355078 ieee80211_softmac_stop_protocol_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x911e4253 DOT11D_GetMaxTxPwrInDbm +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x99b8eaec ieee80211_reset_queue_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x9a3197b0 ieee80211_wx_set_mlme_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x9a4bc766 ieee80211_wx_set_wap_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x9d8433cf ieee80211_wx_get_encode_ext_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xa2f196cf ieee80211_stop_queue_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xa78f961d ieee80211_wx_set_scan_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xab1d8888 ieee80211_get_beacon_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xaf838cfa DOT11D_ScanComplete +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xb97640be ieee80211_softmac_scan_syncro_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xbbc27807 ieee80211_wx_get_mode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xbc97ef1d ieee80211_wx_set_rawtx_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xc1c8bc64 Dot11d_Reset +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xc27ccae7 ieee80211_wx_set_encode_ext_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xc28b20e9 ieee80211_wx_get_rate_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xc370a43e ieee80211_wlan_frequencies_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xc573ede4 ieee80211_send_probe_requests_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xe56613bd ieee80211_stop_send_beacons_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xec8c8ded ieee80211_stop_scan_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xf38f6faa ieee80211_softmac_xmit_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xf77be572 ieee80211_wx_get_rts_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xfd53376d ieee80211_softmac_start_protocol_rsl +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x004430d8 iscsit_stop_dataout_timer +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x02da86aa iscsit_build_nopin_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x07b7bd23 iscsit_build_text_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x15f13399 iscsit_cause_connection_reinstatement +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x1b44e432 iscsit_build_rsp_pdu +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x1b84def6 iscsit_process_scsi_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x1ebe47a0 iscsit_build_task_mgt_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x354a042a iscsit_handle_task_mgt_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x4bc61f0f iscsit_handle_logout_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x598b119c iscsit_check_dataout_hdr +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x60f1602d iscsit_process_nop_out +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x6327d7ab iscsit_sequence_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x700c908f iscsit_logout_post_handler +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x7eb31f1b iscsit_increment_maxcmdsn +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x8e5f323c iscsit_unregister_transport +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x9ae499cf iscsit_register_transport +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xa0690160 iscsit_tmr_post_handler +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xa7d1bb00 iscsit_set_unsoliticed_dataout +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xa8429de8 iscsit_setup_text_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xaa38b1fa iscsit_find_cmd_from_itt +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xadf42ee0 iscsit_setup_nop_out +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xbf0fdc18 iscsit_build_reject +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xd3e1e294 iscsit_process_text_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xd869f548 iscsit_allocate_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xe52de3c1 iscsit_check_dataout_payload +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xf7d8d848 iscsit_build_logout_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xfa48d0ee iscsit_setup_scsi_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xff4174af iscsit_release_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x0139b0d6 core_tpg_get_initiator_node_acl +EXPORT_SYMBOL drivers/target/target_core_mod 0x02de3b18 transport_set_vpd_ident +EXPORT_SYMBOL drivers/target/target_core_mod 0x0e0bbf36 passthrough_attrib_attrs +EXPORT_SYMBOL drivers/target/target_core_mod 0x0e1c0d1e __transport_register_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x10df7b57 target_undepend_item +EXPORT_SYMBOL drivers/target/target_core_mod 0x12c26c03 sbc_attrib_attrs +EXPORT_SYMBOL drivers/target/target_core_mod 0x12f9dc6b sbc_dif_verify +EXPORT_SYMBOL drivers/target/target_core_mod 0x218c41ed transport_handle_cdb_direct +EXPORT_SYMBOL drivers/target/target_core_mod 0x23c5d864 target_setup_cmd_from_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0x27712760 core_tpg_set_initiator_node_tag +EXPORT_SYMBOL drivers/target/target_core_mod 0x2b060854 transport_generic_handle_tmr +EXPORT_SYMBOL drivers/target/target_core_mod 0x2c1b005e transport_generic_new_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x3174166c target_submit_tmr +EXPORT_SYMBOL drivers/target/target_core_mod 0x322f16c6 target_show_dynamic_sessions +EXPORT_SYMBOL drivers/target/target_core_mod 0x34603bd4 transport_lookup_tmr_lun +EXPORT_SYMBOL drivers/target/target_core_mod 0x36e800b4 target_submit_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x39dc42cc transport_generic_request_failure +EXPORT_SYMBOL drivers/target/target_core_mod 0x42b82897 target_depend_item +EXPORT_SYMBOL drivers/target/target_core_mod 0x4a9df59d core_tpg_deregister +EXPORT_SYMBOL drivers/target/target_core_mod 0x4b991e51 transport_kmap_data_sg +EXPORT_SYMBOL drivers/target/target_core_mod 0x540ec6db target_submit_cmd_map_sgls +EXPORT_SYMBOL drivers/target/target_core_mod 0x5f6293ca transport_generic_free_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x647786d0 target_nacl_find_deve +EXPORT_SYMBOL drivers/target/target_core_mod 0x66a47e7c target_register_template +EXPORT_SYMBOL drivers/target/target_core_mod 0x7806453f transport_deregister_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x7dbada9d transport_set_vpd_ident_type +EXPORT_SYMBOL drivers/target/target_core_mod 0x7f2acf10 transport_check_aborted_status +EXPORT_SYMBOL drivers/target/target_core_mod 0x83421ec8 sbc_dif_copy_prot +EXPORT_SYMBOL drivers/target/target_core_mod 0x83832bb1 core_tpg_check_initiator_node_acl +EXPORT_SYMBOL drivers/target/target_core_mod 0x85aa880c transport_set_vpd_assoc +EXPORT_SYMBOL drivers/target/target_core_mod 0x872d5c93 spc_emulate_evpd_83 +EXPORT_SYMBOL drivers/target/target_core_mod 0x895ecd5c transport_alloc_session_tags +EXPORT_SYMBOL drivers/target/target_core_mod 0x95a91d35 transport_init_se_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x97a7e96d target_sess_cmd_list_set_waiting +EXPORT_SYMBOL drivers/target/target_core_mod 0x9d4ec7d7 target_get_session +EXPORT_SYMBOL drivers/target/target_core_mod 0xa25fc336 target_put_session +EXPORT_SYMBOL drivers/target/target_core_mod 0xa280cb67 transport_kunmap_data_sg +EXPORT_SYMBOL drivers/target/target_core_mod 0xa5edd876 core_tpg_set_initiator_node_queue_depth +EXPORT_SYMBOL drivers/target/target_core_mod 0xa708ec4d core_alua_check_nonop_delay +EXPORT_SYMBOL drivers/target/target_core_mod 0xa8f32c9f transport_send_check_condition_and_sense +EXPORT_SYMBOL drivers/target/target_core_mod 0xa924775f transport_init_session_tags +EXPORT_SYMBOL drivers/target/target_core_mod 0xaa89816e spc_emulate_report_luns +EXPORT_SYMBOL drivers/target/target_core_mod 0xb218ef5a target_unregister_template +EXPORT_SYMBOL drivers/target/target_core_mod 0xb4ac12db sbc_parse_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0xb809809a core_tpg_register +EXPORT_SYMBOL drivers/target/target_core_mod 0xbe8b5c69 target_complete_cmd_with_length +EXPORT_SYMBOL drivers/target/target_core_mod 0xc291cf8f transport_init_session +EXPORT_SYMBOL drivers/target/target_core_mod 0xc5ca09a6 spc_emulate_inquiry_std +EXPORT_SYMBOL drivers/target/target_core_mod 0xc7732227 target_lun_is_rdonly +EXPORT_SYMBOL drivers/target/target_core_mod 0xc9e2f83d target_get_sess_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xd3eb043b target_put_sess_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xd42b6a7f transport_lookup_cmd_lun +EXPORT_SYMBOL drivers/target/target_core_mod 0xd695edaf transport_backend_register +EXPORT_SYMBOL drivers/target/target_core_mod 0xdbb2ca3a target_backend_unregister +EXPORT_SYMBOL drivers/target/target_core_mod 0xdc5ebab5 transport_register_session +EXPORT_SYMBOL drivers/target/target_core_mod 0xdce3c19d spc_parse_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0xddb4b99e sbc_get_device_type +EXPORT_SYMBOL drivers/target/target_core_mod 0xdff3c6ba transport_wait_for_tasks +EXPORT_SYMBOL drivers/target/target_core_mod 0xe35011c3 sbc_get_write_same_sectors +EXPORT_SYMBOL drivers/target/target_core_mod 0xe3715e3c passthrough_parse_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0xe605a039 transport_free_session +EXPORT_SYMBOL drivers/target/target_core_mod 0xe7a3908b transport_deregister_session_configfs +EXPORT_SYMBOL drivers/target/target_core_mod 0xea4462ba target_complete_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xec6c51a8 target_execute_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xec82f271 core_tmr_alloc_req +EXPORT_SYMBOL drivers/target/target_core_mod 0xf01621c7 transport_set_vpd_proto_id +EXPORT_SYMBOL drivers/target/target_core_mod 0xf3f22d1a target_wait_for_sess_cmds +EXPORT_SYMBOL drivers/usb/class/cdc-wdm 0x32890ce9 usb_cdc_wdm_register +EXPORT_SYMBOL drivers/usb/gadget/function/usb_f_uvc 0x92e9ebac uvc_set_trace_param +EXPORT_SYMBOL drivers/usb/gadget/libcomposite 0x4db24b98 usb_os_desc_prepare_interf_dir +EXPORT_SYMBOL drivers/usb/host/sl811-hcd 0x0019352d sl811h_driver +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x0e81cb90 usb_wwan_ioctl +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x1ab36f8d usb_wwan_write_room +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x2519d8c7 usb_wwan_chars_in_buffer +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x28acf528 usb_wwan_write +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x4cd94121 usb_wwan_suspend +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x5a543cbb usb_wwan_dtr_rts +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x6fc34888 usb_wwan_tiocmset +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x7119b28f usb_wwan_resume +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x72237012 usb_wwan_tiocmget +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x7517d5fd usb_wwan_close +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x88ed5bd3 usb_wwan_open +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xafb6ebf7 usb_wwan_port_remove +EXPORT_SYMBOL drivers/usb/serial/usbserial 0x062dabcd usb_serial_suspend +EXPORT_SYMBOL drivers/usb/serial/usbserial 0x222cf452 usb_serial_resume +EXPORT_SYMBOL drivers/vhost/vringh 0x0fd987f7 vringh_abandon_user +EXPORT_SYMBOL drivers/vhost/vringh 0x14397bb5 vringh_notify_disable_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x32da6f89 vringh_notify_enable_user +EXPORT_SYMBOL drivers/vhost/vringh 0x39c9d7a5 vringh_complete_multi_user +EXPORT_SYMBOL drivers/vhost/vringh 0x3b304ebb vringh_iov_push_user +EXPORT_SYMBOL drivers/vhost/vringh 0x3c71c418 vringh_getdesc_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x4311cd91 vringh_iov_pull_user +EXPORT_SYMBOL drivers/vhost/vringh 0x4f384f8b vringh_need_notify_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x58abf4ed vringh_init_user +EXPORT_SYMBOL drivers/vhost/vringh 0x5fedea44 vringh_getdesc_user +EXPORT_SYMBOL drivers/vhost/vringh 0x6432894b vringh_init_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x8d080d03 vringh_need_notify_user +EXPORT_SYMBOL drivers/vhost/vringh 0x95e62337 vringh_abandon_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x97fa07e9 vringh_iov_push_kern +EXPORT_SYMBOL drivers/vhost/vringh 0xb4b63575 vringh_notify_enable_kern +EXPORT_SYMBOL drivers/vhost/vringh 0xc578f0f7 vringh_complete_user +EXPORT_SYMBOL drivers/vhost/vringh 0xd355e031 vringh_complete_kern +EXPORT_SYMBOL drivers/vhost/vringh 0xd609393d vringh_notify_disable_user +EXPORT_SYMBOL drivers/vhost/vringh 0xde804bb9 vringh_iov_pull_kern +EXPORT_SYMBOL drivers/video/backlight/lcd 0x99f47c26 lcd_device_unregister +EXPORT_SYMBOL drivers/video/backlight/lcd 0xc1b7c5e0 devm_lcd_device_unregister +EXPORT_SYMBOL drivers/video/backlight/lcd 0xe263985a devm_lcd_device_register +EXPORT_SYMBOL drivers/video/backlight/lcd 0xf595a897 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 0x286868e0 svga_settile +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x48cb7ca4 svga_tilecursor +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x4ab38ef2 svga_set_default_crt_regs +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x6bb60505 svga_tileblit +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x6e4adb1e svga_check_timings +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x79fe3f66 svga_tilefill +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x80f24d95 svga_wcrt_multi +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x8de63fb4 svga_set_timings +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xa69bc982 svga_get_tilemax +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xc7910541 svga_get_caps +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xd1429fca svga_wseq_multi +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xd22ca511 svga_set_default_atc_regs +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xe28d2a49 svga_set_default_gfx_regs +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xef774f5d svga_compute_pll +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xf2db5956 svga_match_format +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xf6a18506 svga_tilecopy +EXPORT_SYMBOL drivers/video/fbdev/core/syscopyarea 0xc4ab2eb8 sys_copyarea +EXPORT_SYMBOL drivers/video/fbdev/core/sysfillrect 0x848f46b5 sys_fillrect +EXPORT_SYMBOL drivers/video/fbdev/core/sysimgblt 0xe626b68e 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 0xb39f68d1 cyber2000fb_enable_extregs +EXPORT_SYMBOL drivers/video/fbdev/cyber2000fb 0xfb34f09d cyber2000fb_attach +EXPORT_SYMBOL drivers/video/fbdev/macmodes 0x233917d1 mac_vmode_to_var +EXPORT_SYMBOL drivers/video/fbdev/macmodes 0x43f0d686 mac_find_mode +EXPORT_SYMBOL drivers/video/fbdev/macmodes 0xe2304303 mac_map_monitor_sense +EXPORT_SYMBOL drivers/video/fbdev/matrox/g450_pll 0x17859c29 matroxfb_g450_setclk +EXPORT_SYMBOL drivers/video/fbdev/matrox/g450_pll 0xac56f379 matroxfb_g450_setpll_cond +EXPORT_SYMBOL drivers/video/fbdev/matrox/g450_pll 0xfa02ee9c g450_mnp2f +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_DAC1064 0x054aae25 matrox_G100 +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_DAC1064 0x204ec09e DAC1064_global_init +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_DAC1064 0xcdd8001f DAC1064_global_restore +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_DAC1064 0xe481bdd1 matrox_mystique +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_Ti3026 0x7e2ff1af matrox_millennium +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_accel 0xd296026b matrox_cfbX_init +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_base 0x02fa4496 matroxfb_enable_irq +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_base 0x0979821e matroxfb_wait_for_sync +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_base 0x4619c601 matroxfb_register_driver +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_base 0x7127d75a matroxfb_unregister_driver +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_g450 0x99a097a6 matroxfb_g450_connect +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_g450 0xeef63037 matroxfb_g450_shutdown +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0x25cf8049 matroxfb_PLL_calcclock +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0x555ec3cd matroxfb_DAC_out +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0x6d7df72b matroxfb_DAC_in +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0x950b6396 matroxfb_vgaHWinit +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0xbd2a7600 matroxfb_vgaHWrestore +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0xcdc90c64 matroxfb_var2my +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0xeab23c05 matroxfb_read_pins +EXPORT_SYMBOL drivers/video/fbdev/mb862xx/mb862xxfb 0x24b4976f mb862xxfb_init_accel +EXPORT_SYMBOL drivers/video/fbdev/sis/sisfb 0x3037658e sis_malloc +EXPORT_SYMBOL drivers/video/fbdev/sis/sisfb 0x454a3cf0 sis_free +EXPORT_SYMBOL drivers/video/vgastate 0x686de290 restore_vga +EXPORT_SYMBOL drivers/video/vgastate 0xe7a2620e save_vga +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0x8c67c38c w1_ds2760_write +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0x964548a6 w1_ds2760_recall_eeprom +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0xd44b243f w1_ds2760_store_eeprom +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0xee8c7d8e w1_ds2760_read +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2780 0x5c838d9e w1_ds2780_io +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2780 0xdbfa918a w1_ds2780_eeprom_cmd +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2781 0x9549dffc w1_ds2781_eeprom_cmd +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2781 0xfdc97fb4 w1_ds2781_io +EXPORT_SYMBOL drivers/w1/wire 0x347995fd w1_add_master_device +EXPORT_SYMBOL drivers/w1/wire 0x637ae94f w1_remove_master_device +EXPORT_SYMBOL drivers/w1/wire 0xbfc56e1d w1_register_family +EXPORT_SYMBOL drivers/w1/wire 0xe4b31ac2 w1_unregister_family +EXPORT_SYMBOL fs/configfs/configfs 0x0f533216 config_item_put +EXPORT_SYMBOL fs/configfs/configfs 0x13aef29f config_item_init_type_name +EXPORT_SYMBOL fs/configfs/configfs 0x16f4573b config_item_set_name +EXPORT_SYMBOL fs/configfs/configfs 0x1b30481f config_group_init +EXPORT_SYMBOL fs/configfs/configfs 0x43cea470 config_item_get +EXPORT_SYMBOL fs/configfs/configfs 0x61cb6cd8 config_group_find_item +EXPORT_SYMBOL fs/configfs/configfs 0x668c63f8 configfs_register_subsystem +EXPORT_SYMBOL fs/configfs/configfs 0xa23e5889 configfs_depend_item +EXPORT_SYMBOL fs/configfs/configfs 0xbc8e56c5 configfs_unregister_subsystem +EXPORT_SYMBOL fs/configfs/configfs 0xcf3de686 config_group_init_type_name +EXPORT_SYMBOL fs/configfs/configfs 0xd79df084 configfs_undepend_item +EXPORT_SYMBOL fs/exofs/libore 0x1278994b ore_get_io_state +EXPORT_SYMBOL fs/exofs/libore 0x28806871 ore_verify_layout +EXPORT_SYMBOL fs/exofs/libore 0x33740a0d extract_attr_from_ios +EXPORT_SYMBOL fs/exofs/libore 0x3851225c ore_truncate +EXPORT_SYMBOL fs/exofs/libore 0x4527e170 ore_calc_stripe_info +EXPORT_SYMBOL fs/exofs/libore 0x6b76f5a9 ore_create +EXPORT_SYMBOL fs/exofs/libore 0x968577e1 ore_remove +EXPORT_SYMBOL fs/exofs/libore 0x979e464e ore_write +EXPORT_SYMBOL fs/exofs/libore 0xa3d2a634 g_attr_logical_length +EXPORT_SYMBOL fs/exofs/libore 0xbf82827b ore_check_io +EXPORT_SYMBOL fs/exofs/libore 0xdbe5d808 ore_get_rw_state +EXPORT_SYMBOL fs/exofs/libore 0xedf9da97 ore_read +EXPORT_SYMBOL fs/exofs/libore 0xf18c0a3f ore_put_io_state +EXPORT_SYMBOL fs/fscache/fscache 0x01ece65d fscache_object_init +EXPORT_SYMBOL fs/fscache/fscache 0x21dd168e __fscache_read_or_alloc_page +EXPORT_SYMBOL fs/fscache/fscache 0x35536383 __fscache_check_consistency +EXPORT_SYMBOL fs/fscache/fscache 0x3a645c85 __fscache_wait_on_page_write +EXPORT_SYMBOL fs/fscache/fscache 0x3f3931b9 __fscache_acquire_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x46839c29 __fscache_write_page +EXPORT_SYMBOL fs/fscache/fscache 0x481d9b2f fscache_add_cache +EXPORT_SYMBOL fs/fscache/fscache 0x4af85489 fscache_object_lookup_negative +EXPORT_SYMBOL fs/fscache/fscache 0x4c59ea9d fscache_object_retrying_stale +EXPORT_SYMBOL fs/fscache/fscache 0x527818dc __fscache_alloc_page +EXPORT_SYMBOL fs/fscache/fscache 0x63aa171a fscache_mark_pages_cached +EXPORT_SYMBOL fs/fscache/fscache 0x6674b0d3 __fscache_wait_on_invalidate +EXPORT_SYMBOL fs/fscache/fscache 0x74530ecd fscache_op_debug_id +EXPORT_SYMBOL fs/fscache/fscache 0x747b5fdd fscache_obtained_object +EXPORT_SYMBOL fs/fscache/fscache 0x7afcbe01 __fscache_read_or_alloc_pages +EXPORT_SYMBOL fs/fscache/fscache 0x7df9eefd __fscache_maybe_release_page +EXPORT_SYMBOL fs/fscache/fscache 0x841510b7 fscache_cache_cleared_wq +EXPORT_SYMBOL fs/fscache/fscache 0x8b31479d __fscache_uncache_all_inode_pages +EXPORT_SYMBOL fs/fscache/fscache 0x8b952a18 __fscache_enable_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x8c6daf44 fscache_object_mark_killed +EXPORT_SYMBOL fs/fscache/fscache 0x93d2672b __fscache_readpages_cancel +EXPORT_SYMBOL fs/fscache/fscache 0x9b00004f __fscache_update_cookie +EXPORT_SYMBOL fs/fscache/fscache 0xa0d49926 __fscache_unregister_netfs +EXPORT_SYMBOL fs/fscache/fscache 0xa1507dfb fscache_operation_init +EXPORT_SYMBOL fs/fscache/fscache 0xc01d5135 fscache_io_error +EXPORT_SYMBOL fs/fscache/fscache 0xc93b7d1a fscache_mark_page_cached +EXPORT_SYMBOL fs/fscache/fscache 0xd16be91e fscache_enqueue_operation +EXPORT_SYMBOL fs/fscache/fscache 0xd3877e07 __fscache_disable_cookie +EXPORT_SYMBOL fs/fscache/fscache 0xd59f1215 fscache_check_aux +EXPORT_SYMBOL fs/fscache/fscache 0xe02ab5d1 __fscache_check_page_write +EXPORT_SYMBOL fs/fscache/fscache 0xe3a8899c __fscache_attr_changed +EXPORT_SYMBOL fs/fscache/fscache 0xe3fbaf84 __fscache_relinquish_cookie +EXPORT_SYMBOL fs/fscache/fscache 0xe6343feb __fscache_register_netfs +EXPORT_SYMBOL fs/fscache/fscache 0xe6d4b9a6 fscache_put_operation +EXPORT_SYMBOL fs/fscache/fscache 0xe9c78fe2 __fscache_invalidate +EXPORT_SYMBOL fs/fscache/fscache 0xeb7be319 fscache_op_complete +EXPORT_SYMBOL fs/fscache/fscache 0xecc61fbc __fscache_uncache_page +EXPORT_SYMBOL fs/fscache/fscache 0xf5a162b1 fscache_withdraw_cache +EXPORT_SYMBOL fs/fscache/fscache 0xf9d70d6a fscache_fsdef_index +EXPORT_SYMBOL fs/fscache/fscache 0xfa569347 fscache_init_cache +EXPORT_SYMBOL fs/fscache/fscache 0xff176b32 fscache_object_destroy +EXPORT_SYMBOL fs/ocfs2/cluster/ocfs2_nodemanager 0xbfd7d7a2 o2hb_global_heartbeat_active +EXPORT_SYMBOL fs/quota/quota_tree 0x64d9c582 qtree_delete_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0x8f388a80 qtree_release_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0x9848f6f1 qtree_read_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0xa51822ac qtree_write_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0xef7a7ce8 qtree_entry_unused +EXPORT_SYMBOL lib/cordic 0x434bfd07 cordic_calc_iq +EXPORT_SYMBOL lib/crc-ccitt 0x1a703ba1 crc_ccitt +EXPORT_SYMBOL lib/crc-ccitt 0x75811312 crc_ccitt_table +EXPORT_SYMBOL lib/crc-itu-t 0x6d356209 crc_itu_t +EXPORT_SYMBOL lib/crc-itu-t 0xd29b009f crc_itu_t_table +EXPORT_SYMBOL lib/crc7 0x56329ecc crc7_be +EXPORT_SYMBOL lib/crc7 0x7a222007 crc7_be_syndrome_table +EXPORT_SYMBOL lib/crc8 0xab9ad613 crc8_populate_lsb +EXPORT_SYMBOL lib/crc8 0xd09b2cba crc8 +EXPORT_SYMBOL lib/crc8 0xd4534d80 crc8_populate_msb +EXPORT_SYMBOL lib/libcrc32c 0x27000b29 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 0x6668eef3 lc_seq_dump_details +EXPORT_SYMBOL lib/lru_cache 0x7257beee lc_element_by_index +EXPORT_SYMBOL lib/lru_cache 0x9134feb7 lc_get +EXPORT_SYMBOL lib/lru_cache 0x9a6b54de lc_seq_printf_stats +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/lz4_compress 0x0c222eb5 lz4_compress +EXPORT_SYMBOL lib/lz4/lz4hc_compress 0x682a23e0 lz4hc_compress +EXPORT_SYMBOL lib/raid6/raid6_pq 0x0bd662f6 raid6_gfmul +EXPORT_SYMBOL lib/raid6/raid6_pq 0x15fe0cd3 raid6_gfexp +EXPORT_SYMBOL lib/raid6/raid6_pq 0x5ba93f9d raid6_gfinv +EXPORT_SYMBOL lib/raid6/raid6_pq 0xb0d904b7 raid6_empty_zero_page +EXPORT_SYMBOL lib/raid6/raid6_pq 0xce45a6f1 raid6_gfexi +EXPORT_SYMBOL lib/raid6/raid6_pq 0xd9e91f83 raid6_vgfmul +EXPORT_SYMBOL net/6lowpan/6lowpan 0x12587d8f lowpan_nhc_add +EXPORT_SYMBOL net/6lowpan/6lowpan 0x68e86aaa lowpan_nhc_del +EXPORT_SYMBOL net/802/p8022 0xa27f6d5b unregister_8022_client +EXPORT_SYMBOL net/802/p8022 0xd7eda28c register_8022_client +EXPORT_SYMBOL net/802/p8023 0x2479cd50 make_8023_client +EXPORT_SYMBOL net/802/p8023 0xbd6c90ef destroy_8023_client +EXPORT_SYMBOL net/802/psnap 0x27c24475 unregister_snap_client +EXPORT_SYMBOL net/802/psnap 0x87d1a42e register_snap_client +EXPORT_SYMBOL net/9p/9pnet 0x01667783 p9_client_wstat +EXPORT_SYMBOL net/9p/9pnet 0x05ba33b6 p9_client_mkdir_dotl +EXPORT_SYMBOL net/9p/9pnet 0x0d099bdc p9_client_begin_disconnect +EXPORT_SYMBOL net/9p/9pnet 0x12f08dcc p9_client_cb +EXPORT_SYMBOL net/9p/9pnet 0x162c04b9 p9_client_clunk +EXPORT_SYMBOL net/9p/9pnet 0x165b1dcf p9_client_renameat +EXPORT_SYMBOL net/9p/9pnet 0x2d011f47 p9_client_destroy +EXPORT_SYMBOL net/9p/9pnet 0x31070442 p9_tag_lookup +EXPORT_SYMBOL net/9p/9pnet 0x31b8857a p9_client_fcreate +EXPORT_SYMBOL net/9p/9pnet 0x35d1e27e p9_idpool_get +EXPORT_SYMBOL net/9p/9pnet 0x3aeaa2d6 p9_parse_header +EXPORT_SYMBOL net/9p/9pnet 0x3b608fc6 p9_client_stat +EXPORT_SYMBOL net/9p/9pnet 0x3d73a797 p9_errstr2errno +EXPORT_SYMBOL net/9p/9pnet 0x44d2c2c0 p9stat_free +EXPORT_SYMBOL net/9p/9pnet 0x4b65c2d8 p9_is_proto_dotl +EXPORT_SYMBOL net/9p/9pnet 0x4cece08f v9fs_get_trans_by_name +EXPORT_SYMBOL net/9p/9pnet 0x50143b8a v9fs_unregister_trans +EXPORT_SYMBOL net/9p/9pnet 0x517f082b p9_client_statfs +EXPORT_SYMBOL net/9p/9pnet 0x54c95f92 v9fs_register_trans +EXPORT_SYMBOL net/9p/9pnet 0x564c52eb p9_client_lock_dotl +EXPORT_SYMBOL net/9p/9pnet 0x591b30bd p9_client_attach +EXPORT_SYMBOL net/9p/9pnet 0x6b2f6ff5 p9stat_read +EXPORT_SYMBOL net/9p/9pnet 0x706d3823 p9_client_getattr_dotl +EXPORT_SYMBOL net/9p/9pnet 0x82435fb7 p9_client_readdir +EXPORT_SYMBOL net/9p/9pnet 0x9134647e p9_client_link +EXPORT_SYMBOL net/9p/9pnet 0xb535cb5c v9fs_get_default_trans +EXPORT_SYMBOL net/9p/9pnet 0xba2c0084 p9dirent_read +EXPORT_SYMBOL net/9p/9pnet 0xbf3d4591 p9_client_rename +EXPORT_SYMBOL net/9p/9pnet 0xc0550991 p9_client_symlink +EXPORT_SYMBOL net/9p/9pnet 0xc5db54a9 p9_idpool_destroy +EXPORT_SYMBOL net/9p/9pnet 0xc71d00c8 p9_client_fsync +EXPORT_SYMBOL net/9p/9pnet 0xcc9e0a2f p9_client_remove +EXPORT_SYMBOL net/9p/9pnet 0xd4781bdf p9_client_setattr +EXPORT_SYMBOL net/9p/9pnet 0xd741fcc9 p9_client_disconnect +EXPORT_SYMBOL net/9p/9pnet 0xd80bef89 p9_client_getlock_dotl +EXPORT_SYMBOL net/9p/9pnet 0xd85371dc p9_client_mknod_dotl +EXPORT_SYMBOL net/9p/9pnet 0xd92379b1 p9_client_open +EXPORT_SYMBOL net/9p/9pnet 0xe16306ed p9_client_create_dotl +EXPORT_SYMBOL net/9p/9pnet 0xe58a3360 p9_error_init +EXPORT_SYMBOL net/9p/9pnet 0xe64a44a3 p9_is_proto_dotu +EXPORT_SYMBOL net/9p/9pnet 0xe9ee6391 p9_client_unlinkat +EXPORT_SYMBOL net/9p/9pnet 0xeec980d2 p9_client_walk +EXPORT_SYMBOL net/9p/9pnet 0xf0b05a72 p9_client_readlink +EXPORT_SYMBOL net/9p/9pnet 0xf4a111d8 p9_idpool_create +EXPORT_SYMBOL net/9p/9pnet 0xf5ed572d p9_client_read +EXPORT_SYMBOL net/9p/9pnet 0xf84f2022 p9_idpool_put +EXPORT_SYMBOL net/9p/9pnet 0xf9fd1b46 p9_client_create +EXPORT_SYMBOL net/9p/9pnet 0xfd40c79d p9_idpool_check +EXPORT_SYMBOL net/9p/9pnet 0xfdd29e3f p9_client_write +EXPORT_SYMBOL net/9p/9pnet 0xffb304d9 p9_release_pages +EXPORT_SYMBOL net/appletalk/appletalk 0x641281ff atrtr_get_dev +EXPORT_SYMBOL net/appletalk/appletalk 0x73050fe0 alloc_ltalkdev +EXPORT_SYMBOL net/appletalk/appletalk 0x83fb88bb aarp_send_ddp +EXPORT_SYMBOL net/appletalk/appletalk 0xeb714a83 atalk_find_dev_addr +EXPORT_SYMBOL net/atm/atm 0x0a7e45e5 atm_dev_signal_change +EXPORT_SYMBOL net/atm/atm 0x161e925a deregister_atm_ioctl +EXPORT_SYMBOL net/atm/atm 0x247a9623 atm_init_aal5 +EXPORT_SYMBOL net/atm/atm 0x27aa2a94 register_atm_ioctl +EXPORT_SYMBOL net/atm/atm 0x2cc2d52d vcc_hash +EXPORT_SYMBOL net/atm/atm 0x2eea9741 atm_dev_release_vccs +EXPORT_SYMBOL net/atm/atm 0x442438c0 atm_dev_register +EXPORT_SYMBOL net/atm/atm 0x4443d399 atm_proc_root +EXPORT_SYMBOL net/atm/atm 0x48de45da atm_dev_lookup +EXPORT_SYMBOL net/atm/atm 0x72975db3 vcc_process_recv_queue +EXPORT_SYMBOL net/atm/atm 0x767392f5 vcc_insert_socket +EXPORT_SYMBOL net/atm/atm 0x8cb33cab 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 0xdc13158c atm_charge +EXPORT_SYMBOL net/atm/atm 0xed6b61ab atm_dev_deregister +EXPORT_SYMBOL net/atm/atm 0xf1933d3b atm_alloc_charge +EXPORT_SYMBOL net/atm/atm 0xf49bc67a atm_pcr_goal +EXPORT_SYMBOL net/atm/atm 0xfac5ae25 vcc_sklist_lock +EXPORT_SYMBOL net/ax25/ax25 0x186ee870 ax25_send_frame +EXPORT_SYMBOL net/ax25/ax25 0x242852b9 ax25_uid_policy +EXPORT_SYMBOL net/ax25/ax25 0x378ef2b5 ax25_ip_xmit +EXPORT_SYMBOL net/ax25/ax25 0x3afee63e ax25_findbyuid +EXPORT_SYMBOL net/ax25/ax25 0x431f1cea ax25_find_cb +EXPORT_SYMBOL net/ax25/ax25 0x4502c65a asc2ax +EXPORT_SYMBOL net/ax25/ax25 0x52a2d93a ax25_linkfail_release +EXPORT_SYMBOL net/ax25/ax25 0x53dea1ff ax2asc +EXPORT_SYMBOL net/ax25/ax25 0x53df0b0e ax25_listen_release +EXPORT_SYMBOL net/ax25/ax25 0x8ede9e26 ax25_protocol_release +EXPORT_SYMBOL net/ax25/ax25 0xa31dbfef ax25_linkfail_register +EXPORT_SYMBOL net/ax25/ax25 0xa471d0ba ax25_listen_register +EXPORT_SYMBOL net/ax25/ax25 0xa7f3015b ax25_display_timer +EXPORT_SYMBOL net/ax25/ax25 0xb97c47da ax25_header_ops +EXPORT_SYMBOL net/ax25/ax25 0xc1444946 ax25cmp +EXPORT_SYMBOL net/ax25/ax25 0xd43ecbf1 null_ax25_address +EXPORT_SYMBOL net/bluetooth/bluetooth 0x13033bbf hci_mgmt_chan_unregister +EXPORT_SYMBOL net/bluetooth/bluetooth 0x14a2a77c bt_sock_wait_state +EXPORT_SYMBOL net/bluetooth/bluetooth 0x16841dfa l2cap_register_user +EXPORT_SYMBOL net/bluetooth/bluetooth 0x1ba66dd5 __hci_cmd_sync_ev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x204918bb bt_accept_enqueue +EXPORT_SYMBOL net/bluetooth/bluetooth 0x2b4d17dd bt_sock_ioctl +EXPORT_SYMBOL net/bluetooth/bluetooth 0x2be7c098 hci_conn_switch_role +EXPORT_SYMBOL net/bluetooth/bluetooth 0x35de2f4f hci_reset_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x37eaa092 l2cap_chan_close +EXPORT_SYMBOL net/bluetooth/bluetooth 0x3819d249 bt_procfs_init +EXPORT_SYMBOL net/bluetooth/bluetooth 0x3a2702c0 hci_suspend_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x3a9419c0 bt_sock_stream_recvmsg +EXPORT_SYMBOL net/bluetooth/bluetooth 0x427c309d bt_sock_unlink +EXPORT_SYMBOL net/bluetooth/bluetooth 0x429ffcae hci_recv_frame +EXPORT_SYMBOL net/bluetooth/bluetooth 0x47022514 bt_err +EXPORT_SYMBOL net/bluetooth/bluetooth 0x4c8b06a8 hci_conn_security +EXPORT_SYMBOL net/bluetooth/bluetooth 0x676159ef hci_free_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x71506c0c hci_conn_check_secure +EXPORT_SYMBOL net/bluetooth/bluetooth 0x76e48d5a l2cap_unregister_user +EXPORT_SYMBOL net/bluetooth/bluetooth 0x77679f63 hci_register_cb +EXPORT_SYMBOL net/bluetooth/bluetooth 0x7db803be hci_get_route +EXPORT_SYMBOL net/bluetooth/bluetooth 0x80f03c48 bt_sock_poll +EXPORT_SYMBOL net/bluetooth/bluetooth 0x82300971 hci_unregister_cb +EXPORT_SYMBOL net/bluetooth/bluetooth 0x847c4313 bt_sock_wait_ready +EXPORT_SYMBOL net/bluetooth/bluetooth 0x8aea6c0c bt_accept_unlink +EXPORT_SYMBOL net/bluetooth/bluetooth 0x8cf5bba7 __hci_cmd_sync +EXPORT_SYMBOL net/bluetooth/bluetooth 0x8e784851 bt_sock_reclassify_lock +EXPORT_SYMBOL net/bluetooth/bluetooth 0x8fea24bd bt_sock_unregister +EXPORT_SYMBOL net/bluetooth/bluetooth 0x91c9a325 bt_to_errno +EXPORT_SYMBOL net/bluetooth/bluetooth 0xa75a3a8b bt_sock_register +EXPORT_SYMBOL net/bluetooth/bluetooth 0xae0ed5b9 bt_accept_dequeue +EXPORT_SYMBOL net/bluetooth/bluetooth 0xae7b962e bt_sock_link +EXPORT_SYMBOL net/bluetooth/bluetooth 0xafffcbde l2cap_is_socket +EXPORT_SYMBOL net/bluetooth/bluetooth 0xb1133766 hci_unregister_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xbd9ffff5 l2cap_conn_get +EXPORT_SYMBOL net/bluetooth/bluetooth 0xca873387 hci_register_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xcc1fb551 baswap +EXPORT_SYMBOL net/bluetooth/bluetooth 0xd16d171d bt_procfs_cleanup +EXPORT_SYMBOL net/bluetooth/bluetooth 0xd7442057 bt_info +EXPORT_SYMBOL net/bluetooth/bluetooth 0xd77f10f8 hci_alloc_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xd789a746 l2cap_conn_put +EXPORT_SYMBOL net/bluetooth/bluetooth 0xe54fa64b bt_sock_recvmsg +EXPORT_SYMBOL net/bluetooth/bluetooth 0xe6179e35 hci_resume_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xfd483497 hci_mgmt_chan_register +EXPORT_SYMBOL net/bridge/bridge 0xb06e8cd0 br_should_route_hook +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0x17139db8 ebt_register_table +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0xb24a75f2 ebt_unregister_table +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0xc515940b ebt_do_table +EXPORT_SYMBOL net/caif/caif 0x0c33f821 get_cfcnfg +EXPORT_SYMBOL net/caif/caif 0x1446b60a caif_client_register_refcnt +EXPORT_SYMBOL net/caif/caif 0x260a3676 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 0x4a237e57 cfpkt_tonative +EXPORT_SYMBOL net/caif/caif 0x51f03c58 cfcnfg_add_phy_layer +EXPORT_SYMBOL net/caif/caif 0x6a44fc70 cfpkt_extr_head +EXPORT_SYMBOL net/caif/caif 0x839ddb7b cfcnfg_set_phy_state +EXPORT_SYMBOL net/caif/caif 0x966d7de2 cfpkt_add_head +EXPORT_SYMBOL net/caif/caif 0x9e3e305d cfpkt_set_prio +EXPORT_SYMBOL net/caif/caif 0xb7b6874e caif_free_client +EXPORT_SYMBOL net/caif/caif 0xc14b1a13 caif_enroll_dev +EXPORT_SYMBOL net/caif/caif 0xd6e1d13d caif_connect_client +EXPORT_SYMBOL net/can/can 0x03a87eb9 can_proto_register +EXPORT_SYMBOL net/can/can 0x101bb4e1 can_send +EXPORT_SYMBOL net/can/can 0x83a50aa5 can_rx_register +EXPORT_SYMBOL net/can/can 0x95c2ed42 can_rx_unregister +EXPORT_SYMBOL net/can/can 0xa694ea4d can_ioctl +EXPORT_SYMBOL net/can/can 0xede3af84 can_proto_unregister +EXPORT_SYMBOL net/ceph/libceph 0x00eb221b ceph_monc_wait_osdmap +EXPORT_SYMBOL net/ceph/libceph 0x060c987e ceph_msg_dump +EXPORT_SYMBOL net/ceph/libceph 0x064e7b3b ceph_osdc_flush_notifies +EXPORT_SYMBOL net/ceph/libceph 0x0655ef45 ceph_calc_pg_primary +EXPORT_SYMBOL net/ceph/libceph 0x077dfcf0 osd_req_op_extent_update +EXPORT_SYMBOL net/ceph/libceph 0x08d4cea3 ceph_auth_update_authorizer +EXPORT_SYMBOL net/ceph/libceph 0x090f9a66 osd_req_op_xattr_init +EXPORT_SYMBOL net/ceph/libceph 0x09290ab3 ceph_debugfs_init +EXPORT_SYMBOL net/ceph/libceph 0x11ee690b ceph_osdc_writepages +EXPORT_SYMBOL net/ceph/libceph 0x125452c0 ceph_osdc_get_request +EXPORT_SYMBOL net/ceph/libceph 0x1965af6d ceph_auth_is_authenticated +EXPORT_SYMBOL net/ceph/libceph 0x198be5db ceph_monc_open_session +EXPORT_SYMBOL net/ceph/libceph 0x1a1cb7f8 osd_req_op_cls_response_data +EXPORT_SYMBOL net/ceph/libceph 0x1a77fdcc ceph_check_fsid +EXPORT_SYMBOL net/ceph/libceph 0x1f49b77b osd_req_op_cls_init +EXPORT_SYMBOL net/ceph/libceph 0x20d151cb ceph_osdc_setup +EXPORT_SYMBOL net/ceph/libceph 0x211ca79f ceph_copy_user_to_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x21c60751 ceph_pagelist_free_reserve +EXPORT_SYMBOL net/ceph/libceph 0x2399ab4a osd_req_op_cls_request_data_pagelist +EXPORT_SYMBOL net/ceph/libceph 0x24aa8eb7 ceph_con_keepalive +EXPORT_SYMBOL net/ceph/libceph 0x24d897df ceph_pagelist_release +EXPORT_SYMBOL net/ceph/libceph 0x25458aff ceph_client_id +EXPORT_SYMBOL net/ceph/libceph 0x2db717f3 ceph_destroy_options +EXPORT_SYMBOL net/ceph/libceph 0x2ecee9cd osd_req_op_watch_init +EXPORT_SYMBOL net/ceph/libceph 0x32adb192 osd_req_op_extent_osd_data +EXPORT_SYMBOL net/ceph/libceph 0x3709bebf osd_req_op_extent_osd_data_bio +EXPORT_SYMBOL net/ceph/libceph 0x385863d1 ceph_con_open +EXPORT_SYMBOL net/ceph/libceph 0x3abec91f ceph_pr_addr +EXPORT_SYMBOL net/ceph/libceph 0x3c49acab ceph_print_client_options +EXPORT_SYMBOL net/ceph/libceph 0x3d239e87 ceph_osdc_readpages +EXPORT_SYMBOL net/ceph/libceph 0x3d765527 __ceph_open_session +EXPORT_SYMBOL net/ceph/libceph 0x3f688151 ceph_put_snap_context +EXPORT_SYMBOL net/ceph/libceph 0x402e145f osd_req_op_alloc_hint_init +EXPORT_SYMBOL net/ceph/libceph 0x419cb09b ceph_pagelist_truncate +EXPORT_SYMBOL net/ceph/libceph 0x43b54fab ceph_compare_options +EXPORT_SYMBOL net/ceph/libceph 0x43e458f6 ceph_file_part +EXPORT_SYMBOL net/ceph/libceph 0x43efd647 ceph_calc_file_object_mapping +EXPORT_SYMBOL net/ceph/libceph 0x4476beec ceph_msg_data_add_bio +EXPORT_SYMBOL net/ceph/libceph 0x45f43f71 ceph_auth_verify_authorizer_reply +EXPORT_SYMBOL net/ceph/libceph 0x466b85b8 libceph_compatible +EXPORT_SYMBOL net/ceph/libceph 0x4d804bc1 ceph_create_client +EXPORT_SYMBOL net/ceph/libceph 0x4fdd2669 ceph_osdc_cancel_request +EXPORT_SYMBOL net/ceph/libceph 0x53099812 ceph_osdc_sync +EXPORT_SYMBOL net/ceph/libceph 0x5379cea3 ceph_caps_for_mode +EXPORT_SYMBOL net/ceph/libceph 0x57baf885 ceph_str_hash +EXPORT_SYMBOL net/ceph/libceph 0x60a09b9c ceph_con_send +EXPORT_SYMBOL net/ceph/libceph 0x63758856 ceph_str_hash_name +EXPORT_SYMBOL net/ceph/libceph 0x64183fd4 ceph_get_direct_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x66e73971 ceph_copy_from_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x69b8380d ceph_osdc_build_request +EXPORT_SYMBOL net/ceph/libceph 0x6b2e3bcd ceph_get_snap_context +EXPORT_SYMBOL net/ceph/libceph 0x6f55a184 ceph_osdc_cancel_event +EXPORT_SYMBOL net/ceph/libceph 0x6fcb131c ceph_monc_stop +EXPORT_SYMBOL net/ceph/libceph 0x6fcdafef ceph_buffer_new +EXPORT_SYMBOL net/ceph/libceph 0x71c5a348 ceph_copy_to_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x7243aae9 ceph_zero_page_vector_range +EXPORT_SYMBOL net/ceph/libceph 0x72f935c8 ceph_auth_destroy_authorizer +EXPORT_SYMBOL net/ceph/libceph 0x7363a687 ceph_osdc_set_request_linger +EXPORT_SYMBOL net/ceph/libceph 0x736ab1d4 ceph_messenger_fini +EXPORT_SYMBOL net/ceph/libceph 0x73a5a1c2 ceph_open_session +EXPORT_SYMBOL net/ceph/libceph 0x744648ef ceph_messenger_init +EXPORT_SYMBOL net/ceph/libceph 0x7c386f83 osd_req_op_raw_data_in_pages +EXPORT_SYMBOL net/ceph/libceph 0x7cd72255 ceph_monc_do_get_version +EXPORT_SYMBOL net/ceph/libceph 0x7d3dfe36 ceph_con_close +EXPORT_SYMBOL net/ceph/libceph 0x827d99f1 ceph_msg_data_add_pagelist +EXPORT_SYMBOL net/ceph/libceph 0x84df8d1b ceph_destroy_client +EXPORT_SYMBOL net/ceph/libceph 0x8bf13546 ceph_auth_create_authorizer +EXPORT_SYMBOL net/ceph/libceph 0x9385f75e ceph_msg_new +EXPORT_SYMBOL net/ceph/libceph 0x94dd8e3c ceph_osdc_create_event +EXPORT_SYMBOL net/ceph/libceph 0x97b9e4f5 ceph_pg_pool_name_by_id +EXPORT_SYMBOL net/ceph/libceph 0x99e36571 ceph_osdc_cleanup +EXPORT_SYMBOL net/ceph/libceph 0x9a68dfdf ceph_alloc_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x9bd09f03 ceph_release_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x9c0614ef ceph_monc_init +EXPORT_SYMBOL net/ceph/libceph 0x9f534f4d ceph_buffer_release +EXPORT_SYMBOL net/ceph/libceph 0xa6be6dee ceph_osdc_wait_request +EXPORT_SYMBOL net/ceph/libceph 0xa7c92f20 ceph_pg_poolid_by_name +EXPORT_SYMBOL net/ceph/libceph 0xac8226ea ceph_auth_invalidate_authorizer +EXPORT_SYMBOL net/ceph/libceph 0xae3515ba ceph_create_snap_context +EXPORT_SYMBOL net/ceph/libceph 0xafb8a407 ceph_msgr_flush +EXPORT_SYMBOL net/ceph/libceph 0xb54676fa ceph_msg_type_name +EXPORT_SYMBOL net/ceph/libceph 0xb6081d6d ceph_msgr_exit +EXPORT_SYMBOL net/ceph/libceph 0xb8b51c7b osd_req_op_cls_request_data_pages +EXPORT_SYMBOL net/ceph/libceph 0xb9f36226 ceph_osdc_put_event +EXPORT_SYMBOL net/ceph/libceph 0xbf88cef1 ceph_osdc_alloc_request +EXPORT_SYMBOL net/ceph/libceph 0xc0fc26bd ceph_monc_got_mdsmap +EXPORT_SYMBOL net/ceph/libceph 0xc4a80955 ceph_debugfs_cleanup +EXPORT_SYMBOL net/ceph/libceph 0xc679facd ceph_monc_validate_auth +EXPORT_SYMBOL net/ceph/libceph 0xc9f82b38 ceph_msgr_init +EXPORT_SYMBOL net/ceph/libceph 0xcb50a624 ceph_parse_ips +EXPORT_SYMBOL net/ceph/libceph 0xce375a17 osd_req_op_extent_osd_data_pages +EXPORT_SYMBOL net/ceph/libceph 0xd2c107bb ceph_flags_to_mode +EXPORT_SYMBOL net/ceph/libceph 0xd7acd83f ceph_pagelist_set_cursor +EXPORT_SYMBOL net/ceph/libceph 0xda3abe15 ceph_monc_request_next_osdmap +EXPORT_SYMBOL net/ceph/libceph 0xdd8e7550 ceph_parse_options +EXPORT_SYMBOL net/ceph/libceph 0xdfaeea65 ceph_msg_put +EXPORT_SYMBOL net/ceph/libceph 0xe3b042ca ceph_pagelist_append +EXPORT_SYMBOL net/ceph/libceph 0xe5aaa34f ceph_put_page_vector +EXPORT_SYMBOL net/ceph/libceph 0xe945dac0 osd_req_op_cls_response_data_pages +EXPORT_SYMBOL net/ceph/libceph 0xea6b594e ceph_osdc_put_request +EXPORT_SYMBOL net/ceph/libceph 0xeac8c2b5 osd_req_op_extent_init +EXPORT_SYMBOL net/ceph/libceph 0xee7321fc ceph_oloc_oid_to_pg +EXPORT_SYMBOL net/ceph/libceph 0xf03b3e40 osd_req_op_extent_osd_data_pagelist +EXPORT_SYMBOL net/ceph/libceph 0xf2f0c0fb ceph_monc_do_statfs +EXPORT_SYMBOL net/ceph/libceph 0xf35cb4d9 ceph_pagelist_reserve +EXPORT_SYMBOL net/ceph/libceph 0xf829a2ec ceph_msg_get +EXPORT_SYMBOL net/ceph/libceph 0xf8cf5231 ceph_osdc_start_request +EXPORT_SYMBOL net/ceph/libceph 0xfb2d4cb9 ceph_msg_data_add_pages +EXPORT_SYMBOL net/ceph/libceph 0xfbe036be ceph_osdc_new_request +EXPORT_SYMBOL net/ceph/libceph 0xffa25f30 osd_req_op_init +EXPORT_SYMBOL net/ceph/libceph 0xffa51a02 ceph_con_init +EXPORT_SYMBOL net/dccp/dccp_ipv4 0x8eb9e7f7 dccp_syn_ack_timeout +EXPORT_SYMBOL net/dccp/dccp_ipv4 0xda6996da dccp_req_err +EXPORT_SYMBOL net/ieee802154/6lowpan/ieee802154_6lowpan 0x6820b239 lowpan_frag_rcv +EXPORT_SYMBOL net/ieee802154/ieee802154 0x21b0c91d wpan_phy_for_each +EXPORT_SYMBOL net/ieee802154/ieee802154 0x35fb69a4 wpan_phy_find +EXPORT_SYMBOL net/ieee802154/ieee802154 0x36b330fb wpan_phy_unregister +EXPORT_SYMBOL net/ieee802154/ieee802154 0x6cc7a6be wpan_phy_new +EXPORT_SYMBOL net/ieee802154/ieee802154 0x773f19b7 wpan_phy_free +EXPORT_SYMBOL net/ieee802154/ieee802154 0x84a85b07 wpan_phy_register +EXPORT_SYMBOL net/ipv4/fou 0x03916fe4 gue_encap_hlen +EXPORT_SYMBOL net/ipv4/fou 0x2b6d04e8 gue_build_header +EXPORT_SYMBOL net/ipv4/fou 0x5e5410a9 fou_build_header +EXPORT_SYMBOL net/ipv4/fou 0x7a8411a2 fou_encap_hlen +EXPORT_SYMBOL net/ipv4/ip_tunnel 0x03acd56d ip_tunnel_encap_del_ops +EXPORT_SYMBOL net/ipv4/ip_tunnel 0x3efe4095 ip_tunnel_get_iflink +EXPORT_SYMBOL net/ipv4/ip_tunnel 0x6b472a1e ip_tunnel_get_link_net +EXPORT_SYMBOL net/ipv4/ip_tunnel 0x7cdd2fcd ip_tunnel_encap +EXPORT_SYMBOL net/ipv4/ip_tunnel 0xa16f9d7a ip_tunnel_dst_reset_all +EXPORT_SYMBOL net/ipv4/ip_tunnel 0xf5a2abd6 ip_tunnel_encap_add_ops +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0x8c56be22 arpt_do_table +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0xb8091de9 arpt_register_table +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0xd4fb44e6 arpt_unregister_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0x2aff7430 ipt_do_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0x4ca6b67f ipt_register_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0x7c3229bb ipt_unregister_table +EXPORT_SYMBOL net/ipv4/tunnel4 0x0d5cf1f9 xfrm4_tunnel_register +EXPORT_SYMBOL net/ipv4/tunnel4 0x4bb5b445 xfrm4_tunnel_deregister +EXPORT_SYMBOL net/ipv4/udp_tunnel 0x4685ce33 udp_sock_create4 +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0x11cfcaf9 ip6_tnl_get_iflink +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0x1b0d682c ip6_tnl_get_link_net +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0x29e0cba5 ip6_tnl_get_cap +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0x4b8cf230 ip6_tnl_parse_tlv_enc_lim +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0x66d65a21 ip6t_register_table +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0x6c19b578 ip6t_do_table +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0xd905049c ip6t_unregister_table +EXPORT_SYMBOL net/ipv6/tunnel6 0x7f8dd501 xfrm6_tunnel_deregister +EXPORT_SYMBOL net/ipv6/tunnel6 0xd4957d79 xfrm6_tunnel_register +EXPORT_SYMBOL net/ipv6/xfrm6_tunnel 0x014d5bbb xfrm6_tunnel_alloc_spi +EXPORT_SYMBOL net/ipv6/xfrm6_tunnel 0xe4db7f20 xfrm6_tunnel_spi_lookup +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x118d410b ircomm_flow_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x20c4caec ircomm_open +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x65c3bef5 ircomm_data_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x701ee4bd ircomm_disconnect_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x7833ab02 ircomm_control_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x7b98a2d6 ircomm_connect_response +EXPORT_SYMBOL net/irda/ircomm/ircomm 0xec3765b1 ircomm_connect_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0xfffa68c1 ircomm_close +EXPORT_SYMBOL net/irda/irda 0x01590a8b irias_delete_object +EXPORT_SYMBOL net/irda/irda 0x041570a9 irias_insert_object +EXPORT_SYMBOL net/irda/irda 0x06a3ee58 irias_new_integer_value +EXPORT_SYMBOL net/irda/irda 0x07015ee1 hashbin_delete +EXPORT_SYMBOL net/irda/irda 0x07d3647c irlmp_register_service +EXPORT_SYMBOL net/irda/irda 0x0b382d83 irttp_open_tsap +EXPORT_SYMBOL net/irda/irda 0x1a9f11b6 hashbin_get_first +EXPORT_SYMBOL net/irda/irda 0x2682a762 irttp_udata_request +EXPORT_SYMBOL net/irda/irda 0x29042ec8 irlmp_disconnect_request +EXPORT_SYMBOL net/irda/irda 0x2a17732a hashbin_insert +EXPORT_SYMBOL net/irda/irda 0x2f7d8d4e async_unwrap_char +EXPORT_SYMBOL net/irda/irda 0x328d8fa4 irttp_disconnect_request +EXPORT_SYMBOL net/irda/irda 0x33cbe2c6 proc_irda +EXPORT_SYMBOL net/irda/irda 0x448b8aaa irda_qos_bits_to_value +EXPORT_SYMBOL net/irda/irda 0x46c1c4a2 irlmp_unregister_service +EXPORT_SYMBOL net/irda/irda 0x53d70f6c irlmp_connect_request +EXPORT_SYMBOL net/irda/irda 0x55593918 irttp_data_request +EXPORT_SYMBOL net/irda/irda 0x56b99f6a hashbin_new +EXPORT_SYMBOL net/irda/irda 0x57dc1934 irttp_dup +EXPORT_SYMBOL net/irda/irda 0x6b043eba irda_init_max_qos_capabilies +EXPORT_SYMBOL net/irda/irda 0x6b7f50b3 hashbin_find +EXPORT_SYMBOL net/irda/irda 0x6fd84712 irttp_connect_request +EXPORT_SYMBOL net/irda/irda 0x7042bc54 irlmp_register_client +EXPORT_SYMBOL net/irda/irda 0x763e54a4 irlmp_unregister_client +EXPORT_SYMBOL net/irda/irda 0x76a529c1 iriap_getvaluebyclass_request +EXPORT_SYMBOL net/irda/irda 0x7957f728 irlmp_update_client +EXPORT_SYMBOL net/irda/irda 0x7f52a8bf irda_param_insert +EXPORT_SYMBOL net/irda/irda 0x7fd46b48 alloc_irdadev +EXPORT_SYMBOL net/irda/irda 0x91815586 irda_param_pack +EXPORT_SYMBOL net/irda/irda 0x93b46cdc irlmp_data_request +EXPORT_SYMBOL net/irda/irda 0x94a824db irda_param_extract_all +EXPORT_SYMBOL net/irda/irda 0x9516f690 irias_add_integer_attrib +EXPORT_SYMBOL net/irda/irda 0xaa32712a irlap_open +EXPORT_SYMBOL net/irda/irda 0xaad2d90a irias_find_object +EXPORT_SYMBOL net/irda/irda 0xaec635e4 irias_add_octseq_attrib +EXPORT_SYMBOL net/irda/irda 0xb7f0710a irlap_close +EXPORT_SYMBOL net/irda/irda 0xb9394173 irias_delete_value +EXPORT_SYMBOL net/irda/irda 0xbc63d14b iriap_close +EXPORT_SYMBOL net/irda/irda 0xbcd3ef13 irias_object_change_attribute +EXPORT_SYMBOL net/irda/irda 0xbe40ace9 irlmp_discovery_request +EXPORT_SYMBOL net/irda/irda 0xbffe16a9 irlmp_connect_response +EXPORT_SYMBOL net/irda/irda 0xcebc4826 irttp_close_tsap +EXPORT_SYMBOL net/irda/irda 0xd1d2e1b3 irda_device_set_media_busy +EXPORT_SYMBOL net/irda/irda 0xd22e8861 irias_add_string_attrib +EXPORT_SYMBOL net/irda/irda 0xd2708581 async_wrap_skb +EXPORT_SYMBOL net/irda/irda 0xd6adacf3 irlmp_close_lsap +EXPORT_SYMBOL net/irda/irda 0xd7702e20 irias_new_object +EXPORT_SYMBOL net/irda/irda 0xd83b774e irttp_flow_request +EXPORT_SYMBOL net/irda/irda 0xdd988ce6 hashbin_lock_find +EXPORT_SYMBOL net/irda/irda 0xde4c6b3c irlmp_service_to_hint +EXPORT_SYMBOL net/irda/irda 0xe4e7a809 irttp_connect_response +EXPORT_SYMBOL net/irda/irda 0xe58ba397 hashbin_get_next +EXPORT_SYMBOL net/irda/irda 0xe7aa593d hashbin_remove_this +EXPORT_SYMBOL net/irda/irda 0xedd521c2 irlmp_get_discoveries +EXPORT_SYMBOL net/irda/irda 0xf0f25ffe hashbin_remove +EXPORT_SYMBOL net/irda/irda 0xf51bf368 iriap_open +EXPORT_SYMBOL net/irda/irda 0xf70f0a7b irda_notify_init +EXPORT_SYMBOL net/irda/irda 0xf7e51323 irlmp_open_lsap +EXPORT_SYMBOL net/l2tp/l2tp_core 0xf80deeb2 l2tp_recv_common +EXPORT_SYMBOL net/lapb/lapb 0x0682fa37 lapb_register +EXPORT_SYMBOL net/lapb/lapb 0x18564864 lapb_data_request +EXPORT_SYMBOL net/lapb/lapb 0x21048bfc lapb_data_received +EXPORT_SYMBOL net/lapb/lapb 0x71d91e55 lapb_connect_request +EXPORT_SYMBOL net/lapb/lapb 0x82e4ad83 lapb_disconnect_request +EXPORT_SYMBOL net/lapb/lapb 0x8dbcfd09 lapb_setparms +EXPORT_SYMBOL net/lapb/lapb 0xba9061a3 lapb_getparms +EXPORT_SYMBOL net/lapb/lapb 0xc44b096b lapb_unregister +EXPORT_SYMBOL net/llc/llc 0x0cf5219d llc_sap_open +EXPORT_SYMBOL net/llc/llc 0x2e3aa14f llc_sap_find +EXPORT_SYMBOL net/llc/llc 0x38b92846 llc_remove_pack +EXPORT_SYMBOL net/llc/llc 0x52d7b2fd llc_sap_list +EXPORT_SYMBOL net/llc/llc 0x7c5bd5c6 llc_build_and_send_ui_pkt +EXPORT_SYMBOL net/llc/llc 0xb6a86882 llc_set_station_handler +EXPORT_SYMBOL net/llc/llc 0xecf6fc9c llc_sap_close +EXPORT_SYMBOL net/llc/llc 0xf96edfc2 llc_add_pack +EXPORT_SYMBOL net/llc/llc 0xfd4d1873 llc_mac_hdr_init +EXPORT_SYMBOL net/mac80211/mac80211 0x00887640 ieee80211_connection_loss +EXPORT_SYMBOL net/mac80211/mac80211 0x02cf6252 ieee80211_sched_scan_results +EXPORT_SYMBOL net/mac80211/mac80211 0x067784e1 ieee80211_start_rx_ba_session_offl +EXPORT_SYMBOL net/mac80211/mac80211 0x06bff540 ieee80211_cqm_rssi_notify +EXPORT_SYMBOL net/mac80211/mac80211 0x0872689c ieee80211_rts_get +EXPORT_SYMBOL net/mac80211/mac80211 0x0bd609f2 ieee80211_get_key_tx_seq +EXPORT_SYMBOL net/mac80211/mac80211 0x0d09279f ieee80211_cqm_beacon_loss_notify +EXPORT_SYMBOL net/mac80211/mac80211 0x0e3e095e ieee80211_csa_finish +EXPORT_SYMBOL net/mac80211/mac80211 0x158984ae ieee80211_ctstoself_duration +EXPORT_SYMBOL net/mac80211/mac80211 0x1621db32 ieee80211_sched_scan_stopped +EXPORT_SYMBOL net/mac80211/mac80211 0x165f6914 ieee80211_pspoll_get +EXPORT_SYMBOL net/mac80211/mac80211 0x1a96e537 ieee80211_rts_duration +EXPORT_SYMBOL net/mac80211/mac80211 0x1eecae3a ieee80211_unreserve_tid +EXPORT_SYMBOL net/mac80211/mac80211 0x1f32496d ieee80211_stop_tx_ba_cb_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0x20f63d2c ieee80211_sta_block_awake +EXPORT_SYMBOL net/mac80211/mac80211 0x22894807 ieee80211_alloc_hw_nm +EXPORT_SYMBOL net/mac80211/mac80211 0x251dbcaf ieee80211_get_buffered_bc +EXPORT_SYMBOL net/mac80211/mac80211 0x269c32b4 ieee80211_csa_is_complete +EXPORT_SYMBOL net/mac80211/mac80211 0x31470f0f ieee80211_report_wowlan_wakeup +EXPORT_SYMBOL net/mac80211/mac80211 0x34f865db ieee80211_restart_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x35d1f8cd ieee80211_enable_rssi_reports +EXPORT_SYMBOL net/mac80211/mac80211 0x3b570281 ieee80211_disable_rssi_reports +EXPORT_SYMBOL net/mac80211/mac80211 0x3be84e83 ieee80211_free_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x4145e30f ieee80211_stop_rx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0x419c0202 ieee80211_get_tkip_p1k_iv +EXPORT_SYMBOL net/mac80211/mac80211 0x4c2b011a ieee80211_get_tkip_rx_p1k +EXPORT_SYMBOL net/mac80211/mac80211 0x4fb4552e ieee80211_send_bar +EXPORT_SYMBOL net/mac80211/mac80211 0x55f97e4f ieee80211_get_key_rx_seq +EXPORT_SYMBOL net/mac80211/mac80211 0x595384f5 rate_control_send_low +EXPORT_SYMBOL net/mac80211/mac80211 0x5ad8ce08 ieee80211_sta_set_buffered +EXPORT_SYMBOL net/mac80211/mac80211 0x60f139d2 ieee80211_ap_probereq_get +EXPORT_SYMBOL net/mac80211/mac80211 0x60f687b0 ieee80211_stop_queue +EXPORT_SYMBOL net/mac80211/mac80211 0x62890f83 ieee80211_tdls_oper_request +EXPORT_SYMBOL net/mac80211/mac80211 0x691a12b3 ieee80211_start_tx_ba_cb_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0x6c61402e ieee80211_tx_prepare_skb +EXPORT_SYMBOL net/mac80211/mac80211 0x709e8cf8 ieee80211_proberesp_get +EXPORT_SYMBOL net/mac80211/mac80211 0x73b98f35 ieee80211_start_tx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0x776622d3 ieee80211_nullfunc_get +EXPORT_SYMBOL net/mac80211/mac80211 0x77ea65c4 ieee80211_update_p2p_noa +EXPORT_SYMBOL net/mac80211/mac80211 0x7bdb6e90 ieee80211_register_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x7ea37f0b ieee80211_beacon_get_template +EXPORT_SYMBOL net/mac80211/mac80211 0x83ccfdf3 ieee80211_free_txskb +EXPORT_SYMBOL net/mac80211/mac80211 0x84dc78ac ieee80211_rate_control_unregister +EXPORT_SYMBOL net/mac80211/mac80211 0x86c96477 ieee80211_scan_completed +EXPORT_SYMBOL net/mac80211/mac80211 0x9547184a ieee80211_queue_delayed_work +EXPORT_SYMBOL net/mac80211/mac80211 0x95e75bb4 ieee80211_radar_detected +EXPORT_SYMBOL net/mac80211/mac80211 0x962bdde8 ieee80211_aes_cmac_calculate_k1_k2 +EXPORT_SYMBOL net/mac80211/mac80211 0x96b61409 ieee80211_sta_ps_transition +EXPORT_SYMBOL net/mac80211/mac80211 0x97d6e5c7 ieee80211_report_low_ack +EXPORT_SYMBOL net/mac80211/mac80211 0x9996a283 ieee80211_find_sta +EXPORT_SYMBOL net/mac80211/mac80211 0x9b799d0c ieee80211_queue_stopped +EXPORT_SYMBOL net/mac80211/mac80211 0xa7e2e07b ieee80211_wake_queues +EXPORT_SYMBOL net/mac80211/mac80211 0xa938b8f9 ieee80211_csa_update_counter +EXPORT_SYMBOL net/mac80211/mac80211 0xaa877ad8 __ieee80211_get_tx_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0xac041338 ieee80211_beacon_get_tim +EXPORT_SYMBOL net/mac80211/mac80211 0xada5a7fd __ieee80211_get_assoc_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0xae1ff36b ieee80211_tx_status +EXPORT_SYMBOL net/mac80211/mac80211 0xaff6d66a __ieee80211_get_radio_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0xb00cccd1 ieee80211_beacon_loss +EXPORT_SYMBOL net/mac80211/mac80211 0xb8563eba ieee80211_stop_tx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0xbde25411 ieee80211_rate_control_register +EXPORT_SYMBOL net/mac80211/mac80211 0xc09b4601 ieee80211_ctstoself_get +EXPORT_SYMBOL net/mac80211/mac80211 0xc0b6ab7d ieee80211_queue_work +EXPORT_SYMBOL net/mac80211/mac80211 0xc11d8b0a ieee80211_unregister_hw +EXPORT_SYMBOL net/mac80211/mac80211 0xc45377c7 ieee80211_tx_status_noskb +EXPORT_SYMBOL net/mac80211/mac80211 0xce4dd769 rate_control_set_rates +EXPORT_SYMBOL net/mac80211/mac80211 0xcffebbb3 ieee80211_get_tx_rates +EXPORT_SYMBOL net/mac80211/mac80211 0xd72625cb ieee80211_parse_p2p_noa +EXPORT_SYMBOL net/mac80211/mac80211 0xd83088e5 __ieee80211_create_tpt_led_trigger +EXPORT_SYMBOL net/mac80211/mac80211 0xd9be41a3 ieee80211_stop_queues +EXPORT_SYMBOL net/mac80211/mac80211 0xdaaf5753 ieee80211_get_tkip_p2k +EXPORT_SYMBOL net/mac80211/mac80211 0xdca27e84 ieee80211_probereq_get +EXPORT_SYMBOL net/mac80211/mac80211 0xde0d6546 ieee80211_tx_dequeue +EXPORT_SYMBOL net/mac80211/mac80211 0xe250c401 ieee80211_reserve_tid +EXPORT_SYMBOL net/mac80211/mac80211 0xe5759224 ieee80211_stop_rx_ba_session_offl +EXPORT_SYMBOL net/mac80211/mac80211 0xe64b6209 ieee80211_chswitch_done +EXPORT_SYMBOL net/mac80211/mac80211 0xe8569719 __ieee80211_get_rx_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0xefd248ee ieee80211_iter_keys +EXPORT_SYMBOL net/mac80211/mac80211 0xeff0faf8 ieee80211_tx_status_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0xf311ba63 ieee80211_rx_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0xf3f68431 ieee80211_rx +EXPORT_SYMBOL net/mac80211/mac80211 0xf50c4418 ieee80211_sta_eosp +EXPORT_SYMBOL net/mac80211/mac80211 0xf8be4ee4 ieee80211_wake_queue +EXPORT_SYMBOL net/mac80211/mac80211 0xfaa4b123 ieee80211_generic_frame_duration +EXPORT_SYMBOL net/mac80211/mac80211 0xfd90422b wiphy_to_ieee80211_hw +EXPORT_SYMBOL net/mac802154/mac802154 0x26366dd2 ieee802154_free_hw +EXPORT_SYMBOL net/mac802154/mac802154 0x4bc74e42 ieee802154_unregister_hw +EXPORT_SYMBOL net/mac802154/mac802154 0x6ad10125 ieee802154_xmit_complete +EXPORT_SYMBOL net/mac802154/mac802154 0x6dc9d165 ieee802154_rx +EXPORT_SYMBOL net/mac802154/mac802154 0x6f903d0c ieee802154_alloc_hw +EXPORT_SYMBOL net/mac802154/mac802154 0x70503aeb ieee802154_stop_queue +EXPORT_SYMBOL net/mac802154/mac802154 0xa18a32e6 ieee802154_wake_queue +EXPORT_SYMBOL net/mac802154/mac802154 0xbc894c8e ieee802154_register_hw +EXPORT_SYMBOL net/mac802154/mac802154 0xc6eda2aa ieee802154_rx_irqsafe +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x00ee711a register_ip_vs_scheduler +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x1855942f ip_vs_nfct_expect_related +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x1e8a654b ip_vs_conn_in_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x3113db68 register_ip_vs_app_inc +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x6bbd7689 ip_vs_proto_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x9507f5a6 unregister_ip_vs_app +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x97b41bc9 ip_vs_tcp_conn_listen +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xa539a51d ip_vs_scheduler_err +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xa6fc356a ip_vs_conn_new +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xb067b8f9 register_ip_vs_app +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xb0e96c1c ip_vs_proto_data_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xbf31554a unregister_ip_vs_scheduler +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xc1b6deb7 ip_vs_conn_out_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xd831a1a2 ip_vs_proto_name +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xdbc7bf0b ip_vs_conn_put +EXPORT_SYMBOL net/netfilter/nf_conntrack 0x2b00e085 nf_conntrack_untracked +EXPORT_SYMBOL net/netfilter/nf_conntrack 0x6e19f202 __nf_ct_ext_add_length +EXPORT_SYMBOL net/netfilter/nf_conntrack 0xa2503b12 __nf_ct_ext_destroy +EXPORT_SYMBOL net/netfilter/nf_conntrack_pptp 0x827cc6a1 pptp_msg_name +EXPORT_SYMBOL net/netfilter/nf_nat 0x1e8bcaa4 nf_xfrm_me_harder +EXPORT_SYMBOL net/netfilter/nf_nat 0x2c424ec5 nf_nat_used_tuple +EXPORT_SYMBOL net/netfilter/nf_nat 0x2ffba49f nf_nat_follow_master +EXPORT_SYMBOL net/netfilter/nf_nat 0x3f2d55e6 __nf_nat_mangle_tcp_packet +EXPORT_SYMBOL net/netfilter/nf_nat 0x4b3dbdfd nf_nat_mangle_udp_packet +EXPORT_SYMBOL net/netfilter/nf_nat 0x65772086 nf_nat_setup_info +EXPORT_SYMBOL net/netfilter/x_tables 0x01c268af xt_register_targets +EXPORT_SYMBOL net/netfilter/x_tables 0x253e8b44 xt_compat_init_offsets +EXPORT_SYMBOL net/netfilter/x_tables 0x46c1b2e4 xt_register_match +EXPORT_SYMBOL net/netfilter/x_tables 0x471a29af xt_unregister_matches +EXPORT_SYMBOL net/netfilter/x_tables 0x482d26fd xt_alloc_table_info +EXPORT_SYMBOL net/netfilter/x_tables 0x5c02f7b3 xt_find_target +EXPORT_SYMBOL net/netfilter/x_tables 0x5de014fe xt_unregister_targets +EXPORT_SYMBOL net/netfilter/x_tables 0x627d4864 xt_find_match +EXPORT_SYMBOL net/netfilter/x_tables 0x6421e873 xt_unregister_match +EXPORT_SYMBOL net/netfilter/x_tables 0x7f66f6ad xt_register_target +EXPORT_SYMBOL net/netfilter/x_tables 0xcad8707a xt_unregister_target +EXPORT_SYMBOL net/netfilter/x_tables 0xd1a21986 xt_free_table_info +EXPORT_SYMBOL net/netfilter/x_tables 0xd60c7c14 xt_register_matches +EXPORT_SYMBOL net/nfc/hci/hci 0x06c83abf nfc_hci_register_device +EXPORT_SYMBOL net/nfc/hci/hci 0x197504fd nfc_hci_reset_pipes +EXPORT_SYMBOL net/nfc/hci/hci 0x1a2dcd91 nfc_hci_unregister_device +EXPORT_SYMBOL net/nfc/hci/hci 0x1aa42def nfc_hci_reset_pipes_per_host +EXPORT_SYMBOL net/nfc/hci/hci 0x39e103c6 nfc_hci_allocate_device +EXPORT_SYMBOL net/nfc/hci/hci 0x43028a27 nfc_hci_result_to_errno +EXPORT_SYMBOL net/nfc/hci/hci 0x46fa690c nfc_hci_connect_gate +EXPORT_SYMBOL net/nfc/hci/hci 0x4e698ca4 nfc_hci_disconnect_all_gates +EXPORT_SYMBOL net/nfc/hci/hci 0x542dcf90 nfc_hci_send_cmd +EXPORT_SYMBOL net/nfc/hci/hci 0x5e86b74d nfc_hci_disconnect_gate +EXPORT_SYMBOL net/nfc/hci/hci 0x7c92ce29 nfc_hci_send_event +EXPORT_SYMBOL net/nfc/hci/hci 0x83a146bc nfc_hci_set_param +EXPORT_SYMBOL net/nfc/hci/hci 0x877ceed7 nfc_hci_target_discovered +EXPORT_SYMBOL net/nfc/hci/hci 0x9666818b nfc_hci_send_cmd_async +EXPORT_SYMBOL net/nfc/hci/hci 0x97e7bc58 nfc_hci_get_param +EXPORT_SYMBOL net/nfc/hci/hci 0xbca0b4fd nfc_hci_sak_to_protocol +EXPORT_SYMBOL net/nfc/hci/hci 0xc6c0d442 nfc_hci_free_device +EXPORT_SYMBOL net/nfc/hci/hci 0xd16dd75f nfc_hci_get_clientdata +EXPORT_SYMBOL net/nfc/hci/hci 0xdcb94c27 nfc_hci_driver_failure +EXPORT_SYMBOL net/nfc/hci/hci 0xed825a35 nfc_hci_set_clientdata +EXPORT_SYMBOL net/nfc/hci/hci 0xee3449db nfc_hci_recv_frame +EXPORT_SYMBOL net/nfc/nci/nci 0x04f81eae nci_prop_cmd +EXPORT_SYMBOL net/nfc/nci/nci 0x15952c84 nci_set_config +EXPORT_SYMBOL net/nfc/nci/nci 0x1c18dd8b nci_nfcee_mode_set +EXPORT_SYMBOL net/nfc/nci/nci 0x35fb620c nci_hci_set_param +EXPORT_SYMBOL net/nfc/nci/nci 0x4006f2d6 nci_hci_send_cmd +EXPORT_SYMBOL net/nfc/nci/nci 0x4d491db7 nci_free_device +EXPORT_SYMBOL net/nfc/nci/nci 0x556ac016 nci_recv_frame +EXPORT_SYMBOL net/nfc/nci/nci 0x5c84ec84 nci_hci_dev_session_init +EXPORT_SYMBOL net/nfc/nci/nci 0x6f7b90ae nci_req_complete +EXPORT_SYMBOL net/nfc/nci/nci 0x71c69ee9 nci_hci_send_event +EXPORT_SYMBOL net/nfc/nci/nci 0x882c2a01 nci_core_conn_close +EXPORT_SYMBOL net/nfc/nci/nci 0x8834ea40 nci_unregister_device +EXPORT_SYMBOL net/nfc/nci/nci 0x885f3611 nci_nfcee_discover +EXPORT_SYMBOL net/nfc/nci/nci 0x8b6bad41 nci_register_device +EXPORT_SYMBOL net/nfc/nci/nci 0x8bd55e36 nci_allocate_device +EXPORT_SYMBOL net/nfc/nci/nci 0x90c8c24d nci_core_conn_create +EXPORT_SYMBOL net/nfc/nci/nci 0xba490602 nci_to_errno +EXPORT_SYMBOL net/nfc/nci/nci 0xc0ba56fb nci_hci_connect_gate +EXPORT_SYMBOL net/nfc/nci/nci 0xcf18b9f6 nci_hci_open_pipe +EXPORT_SYMBOL net/nfc/nci/nci 0xe1b43606 nci_hci_get_param +EXPORT_SYMBOL net/nfc/nfc 0x04063aba nfc_unregister_device +EXPORT_SYMBOL net/nfc/nfc 0x23727f3c nfc_se_transaction +EXPORT_SYMBOL net/nfc/nfc 0x2770dbe6 nfc_target_lost +EXPORT_SYMBOL net/nfc/nfc 0x2f91459d nfc_remove_se +EXPORT_SYMBOL net/nfc/nfc 0x3dff7508 nfc_alloc_recv_skb +EXPORT_SYMBOL net/nfc/nfc 0x3f44b004 nfc_fw_download_done +EXPORT_SYMBOL net/nfc/nfc 0x49976a04 nfc_driver_failure +EXPORT_SYMBOL net/nfc/nfc 0x4ec300af nfc_dep_link_is_up +EXPORT_SYMBOL net/nfc/nfc 0x85fc1f0a nfc_register_device +EXPORT_SYMBOL net/nfc/nfc 0x8cb6063c nfc_send_to_raw_sock +EXPORT_SYMBOL net/nfc/nfc 0xa9a6ec3d nfc_class +EXPORT_SYMBOL net/nfc/nfc 0xb1a0704b nfc_add_se +EXPORT_SYMBOL net/nfc/nfc 0xb1ced329 nfc_tm_data_received +EXPORT_SYMBOL net/nfc/nfc 0xb616ac94 nfc_tm_deactivated +EXPORT_SYMBOL net/nfc/nfc 0xbf0b86fc nfc_targets_found +EXPORT_SYMBOL net/nfc/nfc 0xc123cc95 nfc_find_se +EXPORT_SYMBOL net/nfc/nfc 0xc216eb86 nfc_tm_activated +EXPORT_SYMBOL net/nfc/nfc 0xc8c2c0b8 nfc_allocate_device +EXPORT_SYMBOL net/nfc/nfc 0xd05d16b6 nfc_proto_unregister +EXPORT_SYMBOL net/nfc/nfc 0xde2365a0 nfc_proto_register +EXPORT_SYMBOL net/nfc/nfc 0xf38ffbc5 nfc_get_local_general_bytes +EXPORT_SYMBOL net/nfc/nfc 0xfc0fe190 nfc_set_remote_general_bytes +EXPORT_SYMBOL net/nfc/nfc_digital 0x9fff71f6 nfc_digital_free_device +EXPORT_SYMBOL net/nfc/nfc_digital 0xd0479e95 nfc_digital_allocate_device +EXPORT_SYMBOL net/nfc/nfc_digital 0xe6a9eac0 nfc_digital_unregister_device +EXPORT_SYMBOL net/nfc/nfc_digital 0xecfb0ab7 nfc_digital_register_device +EXPORT_SYMBOL net/phonet/phonet 0x0b3777f5 phonet_header_ops +EXPORT_SYMBOL net/phonet/phonet 0x362dce0c pn_sock_unhash +EXPORT_SYMBOL net/phonet/phonet 0x661c9628 phonet_proto_unregister +EXPORT_SYMBOL net/phonet/phonet 0x859772b7 pn_sock_get_port +EXPORT_SYMBOL net/phonet/phonet 0xa34c75e0 pn_skb_send +EXPORT_SYMBOL net/phonet/phonet 0xa75e4ffd pn_sock_hash +EXPORT_SYMBOL net/phonet/phonet 0xc16086ec phonet_stream_ops +EXPORT_SYMBOL net/phonet/phonet 0xfa98c12b phonet_proto_register +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x05699f80 rxrpc_kernel_is_data_last +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x1519c2d0 rxrpc_kernel_reject_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x30d7f8a2 rxrpc_kernel_begin_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x3837077b rxrpc_kernel_get_error_number +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x4947f2e4 rxrpc_kernel_abort_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x5c3d7261 rxrpc_kernel_intercept_rx_messages +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x680fbfdf rxrpc_kernel_free_skb +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x6843ee8b rxrpc_kernel_accept_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x6cfea862 key_type_rxrpc +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x8f42d111 rxrpc_kernel_data_delivered +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xa31c9ba4 rxrpc_kernel_end_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xac512b98 rxrpc_kernel_send_data +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xd07c435c rxrpc_get_server_data_key +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xd39be070 rxrpc_kernel_get_abort_code +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xe2b288f4 rxrpc_get_null_key +EXPORT_SYMBOL net/sctp/sctp 0x747eaef8 sctp_do_peeloff +EXPORT_SYMBOL net/sunrpc/auth_gss/auth_rpcgss 0x95431889 gss_mech_put +EXPORT_SYMBOL net/sunrpc/auth_gss/auth_rpcgss 0xa73d2cc1 gss_mech_get +EXPORT_SYMBOL net/sunrpc/auth_gss/auth_rpcgss 0xdb652441 gss_pseudoflavor_to_service +EXPORT_SYMBOL net/sunrpc/sunrpc 0x16c22be6 xdr_restrict_buflen +EXPORT_SYMBOL net/sunrpc/sunrpc 0x1fc07b92 xdr_truncate_encode +EXPORT_SYMBOL net/sunrpc/sunrpc 0x4716ff46 svc_pool_stats_open +EXPORT_SYMBOL net/wimax/wimax 0x06af75b9 wimax_reset +EXPORT_SYMBOL net/wimax/wimax 0x3365ba02 wimax_rfkill +EXPORT_SYMBOL net/wireless/cfg80211 0x03c367a1 ieee80211_get_hdrlen_from_skb +EXPORT_SYMBOL net/wireless/cfg80211 0x05657c62 cfg80211_scan_done +EXPORT_SYMBOL net/wireless/cfg80211 0x05f57da1 freq_reg_info +EXPORT_SYMBOL net/wireless/cfg80211 0x063de411 cfg80211_roamed +EXPORT_SYMBOL net/wireless/cfg80211 0x09c64fbd ieee80211_frequency_to_channel +EXPORT_SYMBOL net/wireless/cfg80211 0x0c0ceed3 cfg80211_pmksa_candidate_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x0c3032ed cfg80211_rx_unprot_mlme_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0x1879fcbd bridge_tunnel_header +EXPORT_SYMBOL net/wireless/cfg80211 0x19e03378 cfg80211_get_p2p_attr +EXPORT_SYMBOL net/wireless/cfg80211 0x1de62d42 cfg80211_del_sta_sinfo +EXPORT_SYMBOL net/wireless/cfg80211 0x1f53b985 cfg80211_reg_can_beacon +EXPORT_SYMBOL net/wireless/cfg80211 0x2122c040 cfg80211_stop_iface +EXPORT_SYMBOL net/wireless/cfg80211 0x25d7cfba cfg80211_ibss_joined +EXPORT_SYMBOL net/wireless/cfg80211 0x2ec3c165 cfg80211_get_drvinfo +EXPORT_SYMBOL net/wireless/cfg80211 0x2f5b7413 cfg80211_probe_status +EXPORT_SYMBOL net/wireless/cfg80211 0x3011f746 cfg80211_radar_event +EXPORT_SYMBOL net/wireless/cfg80211 0x3a5665a4 cfg80211_reg_can_beacon_relax +EXPORT_SYMBOL net/wireless/cfg80211 0x3bbc8341 wiphy_new_nm +EXPORT_SYMBOL net/wireless/cfg80211 0x3d470c4d cfg80211_chandef_compatible +EXPORT_SYMBOL net/wireless/cfg80211 0x3e285fec cfg80211_chandef_valid +EXPORT_SYMBOL net/wireless/cfg80211 0x3f6cfe22 cfg80211_ch_switch_started_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x44170c55 cfg80211_disconnected +EXPORT_SYMBOL net/wireless/cfg80211 0x47ebb95e ieee80211_data_from_8023 +EXPORT_SYMBOL net/wireless/cfg80211 0x48231482 wiphy_rfkill_stop_polling +EXPORT_SYMBOL net/wireless/cfg80211 0x48765297 cfg80211_conn_failed +EXPORT_SYMBOL net/wireless/cfg80211 0x495457ff cfg80211_calculate_bitrate +EXPORT_SYMBOL net/wireless/cfg80211 0x4b4832e1 cfg80211_auth_timeout +EXPORT_SYMBOL net/wireless/cfg80211 0x4b7c63b7 ieee80211_data_to_8023 +EXPORT_SYMBOL net/wireless/cfg80211 0x4fa50f01 cfg80211_get_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x50214c28 ieee80211_bss_get_ie +EXPORT_SYMBOL net/wireless/cfg80211 0x521110cb cfg80211_mgmt_tx_status +EXPORT_SYMBOL net/wireless/cfg80211 0x5294ebfb cfg80211_check_combinations +EXPORT_SYMBOL net/wireless/cfg80211 0x562ca0c1 wiphy_rfkill_start_polling +EXPORT_SYMBOL net/wireless/cfg80211 0x58956452 cfg80211_notify_new_peer_candidate +EXPORT_SYMBOL net/wireless/cfg80211 0x5baa591c cfg80211_inform_bss_width_frame +EXPORT_SYMBOL net/wireless/cfg80211 0x5caa734c cfg80211_classify8021d +EXPORT_SYMBOL net/wireless/cfg80211 0x5e07be06 cfg80211_sched_scan_stopped +EXPORT_SYMBOL net/wireless/cfg80211 0x5e176f74 cfg80211_chandef_usable +EXPORT_SYMBOL net/wireless/cfg80211 0x5f40b8eb cfg80211_rx_mlme_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0x5f67557a cfg80211_check_station_change +EXPORT_SYMBOL net/wireless/cfg80211 0x5faff0f5 cfg80211_get_station +EXPORT_SYMBOL net/wireless/cfg80211 0x69b18f43 rfc1042_header +EXPORT_SYMBOL net/wireless/cfg80211 0x6a725c05 wiphy_register +EXPORT_SYMBOL net/wireless/cfg80211 0x6d572ad1 cfg80211_michael_mic_failure +EXPORT_SYMBOL net/wireless/cfg80211 0x6d6cb9ad ieee80211_operating_class_to_band +EXPORT_SYMBOL net/wireless/cfg80211 0x6d79a34a cfg80211_cqm_txe_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x71ea1c47 cfg80211_sched_scan_stopped_rtnl +EXPORT_SYMBOL net/wireless/cfg80211 0x72b42570 regulatory_set_wiphy_regd_sync_rtnl +EXPORT_SYMBOL net/wireless/cfg80211 0x73b14b95 cfg80211_ft_event +EXPORT_SYMBOL net/wireless/cfg80211 0x74128663 cfg80211_ch_switch_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x75e83e66 cfg80211_inform_bss_width +EXPORT_SYMBOL net/wireless/cfg80211 0x780df765 cfg80211_cqm_beacon_loss_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x7aad3ea3 cfg80211_rx_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0x7be93408 cfg80211_ref_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x7ef39823 ieee80211_hdrlen +EXPORT_SYMBOL net/wireless/cfg80211 0x7fe1a403 cfg80211_find_ie +EXPORT_SYMBOL net/wireless/cfg80211 0x8077d7eb cfg80211_iter_combinations +EXPORT_SYMBOL net/wireless/cfg80211 0x8492a430 ieee80211_get_response_rate +EXPORT_SYMBOL net/wireless/cfg80211 0x8909b3e0 cfg80211_cqm_pktloss_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x8a7062a5 ieee80211_mandatory_rates +EXPORT_SYMBOL net/wireless/cfg80211 0x91d7a142 ieee80211_ie_split_ric +EXPORT_SYMBOL net/wireless/cfg80211 0x9625c5f5 __cfg80211_alloc_event_skb +EXPORT_SYMBOL net/wireless/cfg80211 0x982e6b6d ieee80211_radiotap_iterator_init +EXPORT_SYMBOL net/wireless/cfg80211 0x9a267463 __ieee80211_get_channel +EXPORT_SYMBOL net/wireless/cfg80211 0x9f394d9c cfg80211_cac_event +EXPORT_SYMBOL net/wireless/cfg80211 0xa1425906 ieee80211_channel_to_frequency +EXPORT_SYMBOL net/wireless/cfg80211 0xa197b1ff ieee80211_get_mesh_hdrlen +EXPORT_SYMBOL net/wireless/cfg80211 0xa61b9aa6 cfg80211_gtk_rekey_notify +EXPORT_SYMBOL net/wireless/cfg80211 0xa6d2606b cfg80211_crit_proto_stopped +EXPORT_SYMBOL net/wireless/cfg80211 0xa892f055 cfg80211_put_bss +EXPORT_SYMBOL net/wireless/cfg80211 0xab1dd373 cfg80211_connect_result +EXPORT_SYMBOL net/wireless/cfg80211 0xac216212 regulatory_hint +EXPORT_SYMBOL net/wireless/cfg80211 0xad8da328 regulatory_set_wiphy_regd +EXPORT_SYMBOL net/wireless/cfg80211 0xaee9f8f6 cfg80211_unlink_bss +EXPORT_SYMBOL net/wireless/cfg80211 0xb2923ba9 cfg80211_tdls_oper_request +EXPORT_SYMBOL net/wireless/cfg80211 0xb6666e1c cfg80211_tx_mlme_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0xb6ba8611 wiphy_free +EXPORT_SYMBOL net/wireless/cfg80211 0xc1410c78 __cfg80211_send_event_skb +EXPORT_SYMBOL net/wireless/cfg80211 0xc2bd7051 cfg80211_roamed_bss +EXPORT_SYMBOL net/wireless/cfg80211 0xc3d3e200 cfg80211_remain_on_channel_expired +EXPORT_SYMBOL net/wireless/cfg80211 0xc63f1b81 ieee80211_radiotap_iterator_next +EXPORT_SYMBOL net/wireless/cfg80211 0xc78520bd wiphy_rfkill_set_hw_state +EXPORT_SYMBOL net/wireless/cfg80211 0xc7e3ade1 cfg80211_unregister_wdev +EXPORT_SYMBOL net/wireless/cfg80211 0xc90fde22 ieee80211_chandef_to_operating_class +EXPORT_SYMBOL net/wireless/cfg80211 0xc954848f cfg80211_sched_scan_results +EXPORT_SYMBOL net/wireless/cfg80211 0xcdcbb14e cfg80211_new_sta +EXPORT_SYMBOL net/wireless/cfg80211 0xd4ffb468 cfg80211_chandef_dfs_required +EXPORT_SYMBOL net/wireless/cfg80211 0xd50b0a22 ieee80211_ie_split +EXPORT_SYMBOL net/wireless/cfg80211 0xd9b9d0f6 cfg80211_rx_spurious_frame +EXPORT_SYMBOL net/wireless/cfg80211 0xdba126c1 reg_initiator_name +EXPORT_SYMBOL net/wireless/cfg80211 0xdca0f893 cfg80211_assoc_timeout +EXPORT_SYMBOL net/wireless/cfg80211 0xde8c2855 __cfg80211_alloc_reply_skb +EXPORT_SYMBOL net/wireless/cfg80211 0xe10e2d55 ieee80211_get_num_supported_channels +EXPORT_SYMBOL net/wireless/cfg80211 0xe44f647c cfg80211_ready_on_channel +EXPORT_SYMBOL net/wireless/cfg80211 0xeac81511 ieee80211_amsdu_to_8023s +EXPORT_SYMBOL net/wireless/cfg80211 0xec416950 wiphy_apply_custom_regulatory +EXPORT_SYMBOL net/wireless/cfg80211 0xecd5062d wiphy_unregister +EXPORT_SYMBOL net/wireless/cfg80211 0xecd571d3 cfg80211_rx_assoc_resp +EXPORT_SYMBOL net/wireless/cfg80211 0xefc56354 cfg80211_chandef_create +EXPORT_SYMBOL net/wireless/cfg80211 0xf3b68601 cfg80211_report_wowlan_wakeup +EXPORT_SYMBOL net/wireless/cfg80211 0xf42627a3 cfg80211_report_obss_beacon +EXPORT_SYMBOL net/wireless/cfg80211 0xf464584c cfg80211_rx_unexpected_4addr_frame +EXPORT_SYMBOL net/wireless/cfg80211 0xf4b9b7a8 cfg80211_cqm_rssi_notify +EXPORT_SYMBOL net/wireless/cfg80211 0xfed4d591 cfg80211_find_vendor_ie +EXPORT_SYMBOL net/wireless/lib80211 0x1cacfaff lib80211_crypt_info_init +EXPORT_SYMBOL net/wireless/lib80211 0x4b2de061 lib80211_register_crypto_ops +EXPORT_SYMBOL net/wireless/lib80211 0x619ab9e7 lib80211_crypt_delayed_deinit +EXPORT_SYMBOL net/wireless/lib80211 0x7e5d9c90 lib80211_get_crypto_ops +EXPORT_SYMBOL net/wireless/lib80211 0x91cce11d lib80211_crypt_info_free +EXPORT_SYMBOL net/wireless/lib80211 0xcdf92d46 lib80211_unregister_crypto_ops +EXPORT_SYMBOL sound/ac97_bus 0x680b27e9 ac97_bus_type +EXPORT_SYMBOL sound/core/oss/snd-mixer-oss 0xafd094df snd_mixer_oss_ioctl_card +EXPORT_SYMBOL sound/core/seq/snd-seq 0x0cad6345 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 0x5cfa9f3f 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 0xb8e448a0 snd_seq_set_queue_tempo +EXPORT_SYMBOL sound/core/seq/snd-seq 0xb9c9f6a8 snd_seq_kernel_client_enqueue_blocking +EXPORT_SYMBOL sound/core/seq/snd-seq 0xcac0a3be snd_seq_kernel_client_enqueue +EXPORT_SYMBOL sound/core/seq/snd-seq 0xde78c127 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-device 0x091def1c snd_seq_autoload_exit +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0x370a0736 snd_seq_autoload_init +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0x6339b6d0 snd_seq_device_load_drivers +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0xd0a61d23 snd_seq_device_new +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 0xf0a1fdb3 snd_midi_process_event +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x045df6a4 snd_midi_event_free +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x19644b06 snd_midi_event_reset_encode +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x237c480c snd_midi_event_no_status +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x46d509d4 snd_midi_event_encode +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x48501cc2 snd_midi_event_new +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x57427cce snd_midi_event_reset_decode +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x6e4581b3 snd_midi_event_decode +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0xfdab5ab4 snd_midi_event_encode_byte +EXPORT_SYMBOL sound/core/seq/snd-seq-virmidi 0x693b8a77 snd_virmidi_new +EXPORT_SYMBOL sound/core/snd 0x0c19a713 snd_unregister_oss_device +EXPORT_SYMBOL sound/core/snd 0x125b545e snd_ctl_register_ioctl_compat +EXPORT_SYMBOL sound/core/snd 0x131bdf8e snd_register_device +EXPORT_SYMBOL sound/core/snd 0x1688f42d snd_info_free_entry +EXPORT_SYMBOL sound/core/snd 0x198788b4 snd_lookup_oss_minor_data +EXPORT_SYMBOL sound/core/snd 0x19e5e42e snd_unregister_device +EXPORT_SYMBOL sound/core/snd 0x20fbed36 snd_ctl_register_ioctl +EXPORT_SYMBOL sound/core/snd 0x24a94b26 snd_info_get_line +EXPORT_SYMBOL sound/core/snd 0x25175734 snd_card_free_when_closed +EXPORT_SYMBOL sound/core/snd 0x252f2ff4 snd_card_file_add +EXPORT_SYMBOL sound/core/snd 0x262e39fe snd_ctl_replace +EXPORT_SYMBOL sound/core/snd 0x29b8f03f snd_power_wait +EXPORT_SYMBOL sound/core/snd 0x2ae3deaa release_and_free_resource +EXPORT_SYMBOL sound/core/snd 0x2d001e3f snd_jack_set_key +EXPORT_SYMBOL sound/core/snd 0x2f1a6ae9 snd_ctl_boolean_stereo_info +EXPORT_SYMBOL sound/core/snd 0x342a2354 copy_to_user_fromio +EXPORT_SYMBOL sound/core/snd 0x3971b4df snd_ecards_limit +EXPORT_SYMBOL sound/core/snd 0x45157c02 snd_info_register +EXPORT_SYMBOL sound/core/snd 0x455db141 snd_card_register +EXPORT_SYMBOL sound/core/snd 0x4a3ea5c0 snd_request_card +EXPORT_SYMBOL sound/core/snd 0x4e824eb3 snd_card_new +EXPORT_SYMBOL sound/core/snd 0x51b8227b snd_seq_root +EXPORT_SYMBOL sound/core/snd 0x5508def4 snd_card_file_remove +EXPORT_SYMBOL sound/core/snd 0x5943b586 snd_ctl_boolean_mono_info +EXPORT_SYMBOL sound/core/snd 0x5ae5c258 snd_pci_quirk_lookup +EXPORT_SYMBOL sound/core/snd 0x5b033001 snd_device_free +EXPORT_SYMBOL sound/core/snd 0x65d9ccc7 snd_card_disconnect +EXPORT_SYMBOL sound/core/snd 0x68eec704 snd_jack_report +EXPORT_SYMBOL sound/core/snd 0x6bc3ce4b snd_ctl_make_virtual_master +EXPORT_SYMBOL sound/core/snd 0x76599419 snd_ctl_add +EXPORT_SYMBOL sound/core/snd 0x7d2cccfa snd_card_free +EXPORT_SYMBOL sound/core/snd 0x81862267 snd_mixer_oss_notify_callback +EXPORT_SYMBOL sound/core/snd 0x81b69e41 snd_ctl_enum_info +EXPORT_SYMBOL sound/core/snd 0x82498401 _snd_ctl_add_slave +EXPORT_SYMBOL sound/core/snd 0x83654093 snd_ctl_remove_id +EXPORT_SYMBOL sound/core/snd 0x865a0435 snd_ctl_remove +EXPORT_SYMBOL sound/core/snd 0x89f4ccc9 snd_ctl_unregister_ioctl +EXPORT_SYMBOL sound/core/snd 0x8b675776 snd_device_register +EXPORT_SYMBOL sound/core/snd 0x8c1a54bb snd_info_create_module_entry +EXPORT_SYMBOL sound/core/snd 0x8c50290b snd_jack_new +EXPORT_SYMBOL sound/core/snd 0x8d44a0d9 snd_component_add +EXPORT_SYMBOL sound/core/snd 0x8df3789f snd_oss_info_register +EXPORT_SYMBOL sound/core/snd 0x8e2a3fa4 snd_device_new +EXPORT_SYMBOL sound/core/snd 0x8f595b11 snd_major +EXPORT_SYMBOL sound/core/snd 0x9cf3a975 snd_ctl_find_id +EXPORT_SYMBOL sound/core/snd 0x9e6d79f8 snd_info_get_str +EXPORT_SYMBOL sound/core/snd 0xa0fd2427 snd_pci_quirk_lookup_id +EXPORT_SYMBOL sound/core/snd 0xa54180bd snd_info_create_card_entry +EXPORT_SYMBOL sound/core/snd 0xadddfd9a snd_ctl_find_numid +EXPORT_SYMBOL sound/core/snd 0xb0fb2a2e snd_ctl_free_one +EXPORT_SYMBOL sound/core/snd 0xb2e5ae4a snd_lookup_minor_data +EXPORT_SYMBOL sound/core/snd 0xb5eb8940 snd_ctl_rename_id +EXPORT_SYMBOL sound/core/snd 0xde2345ab snd_cards +EXPORT_SYMBOL sound/core/snd 0xeeb53d5a snd_jack_set_parent +EXPORT_SYMBOL sound/core/snd 0xef4619b0 snd_card_set_id +EXPORT_SYMBOL sound/core/snd 0xf163de46 snd_ctl_notify +EXPORT_SYMBOL sound/core/snd 0xf77b718c snd_ctl_new1 +EXPORT_SYMBOL sound/core/snd 0xf7fc6f6d snd_jack_add_new_kctl +EXPORT_SYMBOL sound/core/snd 0xfeae09a3 snd_ctl_unregister_ioctl_compat +EXPORT_SYMBOL sound/core/snd 0xffd76a58 snd_register_oss_device +EXPORT_SYMBOL sound/core/snd 0xfffd89db copy_from_user_toio +EXPORT_SYMBOL sound/core/snd-hwdep 0x01306d1c snd_hwdep_new +EXPORT_SYMBOL sound/core/snd-pcm 0x01553125 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 0x06b310c9 snd_free_pages +EXPORT_SYMBOL sound/core/snd-pcm 0x0a36dcb9 snd_pcm_hw_constraint_pow2 +EXPORT_SYMBOL sound/core/snd-pcm 0x0a846a77 snd_pcm_hw_param_last +EXPORT_SYMBOL sound/core/snd-pcm 0x0f63b9fe snd_pcm_period_elapsed +EXPORT_SYMBOL sound/core/snd-pcm 0x180f23f1 _snd_pcm_lib_alloc_vmalloc_buffer +EXPORT_SYMBOL sound/core/snd-pcm 0x1a78603b snd_pcm_hw_constraint_step +EXPORT_SYMBOL sound/core/snd-pcm 0x1bea2883 snd_pcm_open_substream +EXPORT_SYMBOL sound/core/snd-pcm 0x1d027e4b snd_pcm_format_signed +EXPORT_SYMBOL sound/core/snd-pcm 0x255ac48d snd_pcm_mmap_data +EXPORT_SYMBOL sound/core/snd-pcm 0x26f3ca31 snd_pcm_hw_constraint_msbits +EXPORT_SYMBOL sound/core/snd-pcm 0x27418d9d snd_pcm_suspend +EXPORT_SYMBOL sound/core/snd-pcm 0x324ee3d3 snd_pcm_lib_ioctl +EXPORT_SYMBOL sound/core/snd-pcm 0x36311b56 snd_pcm_hw_constraint_ratdens +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 0x4667ee0f 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 0x506655d3 snd_pcm_hw_constraint_mask64 +EXPORT_SYMBOL sound/core/snd-pcm 0x52e3e4a5 snd_pcm_hw_param_value +EXPORT_SYMBOL sound/core/snd-pcm 0x53462cb1 snd_pcm_new +EXPORT_SYMBOL sound/core/snd-pcm 0x5898dcba snd_malloc_pages +EXPORT_SYMBOL sound/core/snd-pcm 0x59d92066 snd_pcm_new_stream +EXPORT_SYMBOL sound/core/snd-pcm 0x5e7f4920 snd_pcm_format_set_silence +EXPORT_SYMBOL sound/core/snd-pcm 0x6193dfdf snd_dma_free_pages +EXPORT_SYMBOL sound/core/snd-pcm 0x650f8603 snd_pcm_format_silence_64 +EXPORT_SYMBOL sound/core/snd-pcm 0x67414427 snd_pcm_hw_constraint_list +EXPORT_SYMBOL sound/core/snd-pcm 0x68a24153 snd_pcm_format_physical_width +EXPORT_SYMBOL sound/core/snd-pcm 0x6e246648 snd_pcm_stop +EXPORT_SYMBOL sound/core/snd-pcm 0x6ef8fcd8 snd_pcm_format_linear +EXPORT_SYMBOL sound/core/snd-pcm 0x74fb0c7c snd_pcm_lib_readv +EXPORT_SYMBOL sound/core/snd-pcm 0x7b9e1fc5 snd_pcm_lib_malloc_pages +EXPORT_SYMBOL sound/core/snd-pcm 0x82fdb7bd snd_pcm_lib_free_vmalloc_buffer +EXPORT_SYMBOL sound/core/snd-pcm 0x834dc955 snd_pcm_format_size +EXPORT_SYMBOL sound/core/snd-pcm 0x860d7952 snd_pcm_hw_constraint_ranges +EXPORT_SYMBOL sound/core/snd-pcm 0x8d94650d snd_pcm_set_sync +EXPORT_SYMBOL sound/core/snd-pcm 0x8f0e21d0 snd_dma_alloc_pages_fallback +EXPORT_SYMBOL sound/core/snd-pcm 0x8f1aee40 snd_pcm_lib_get_vmalloc_page +EXPORT_SYMBOL sound/core/snd-pcm 0x911e15c9 snd_pcm_lib_free_pages +EXPORT_SYMBOL sound/core/snd-pcm 0x94098ff8 snd_interval_list +EXPORT_SYMBOL sound/core/snd-pcm 0xa5f15297 snd_pcm_hw_constraint_minmax +EXPORT_SYMBOL sound/core/snd-pcm 0xa61aa028 snd_pcm_format_unsigned +EXPORT_SYMBOL sound/core/snd-pcm 0xac1902f7 snd_pcm_hw_constraint_integer +EXPORT_SYMBOL sound/core/snd-pcm 0xafa39167 snd_pcm_lib_preallocate_pages_for_all +EXPORT_SYMBOL sound/core/snd-pcm 0xb0f414de snd_pcm_hw_rule_noresample +EXPORT_SYMBOL sound/core/snd-pcm 0xb30b5971 snd_pcm_kernel_ioctl +EXPORT_SYMBOL sound/core/snd-pcm 0xb3c49517 snd_pcm_hw_param_first +EXPORT_SYMBOL sound/core/snd-pcm 0xb3ea806f snd_pcm_hw_refine +EXPORT_SYMBOL sound/core/snd-pcm 0xb9638db4 snd_pcm_rate_to_rate_bit +EXPORT_SYMBOL sound/core/snd-pcm 0xbab7ddf0 snd_pcm_notify +EXPORT_SYMBOL sound/core/snd-pcm 0xbae74734 snd_pcm_release_substream +EXPORT_SYMBOL sound/core/snd-pcm 0xbdcd3681 snd_pcm_set_ops +EXPORT_SYMBOL sound/core/snd-pcm 0xc9c3a98a snd_pcm_lib_preallocate_pages +EXPORT_SYMBOL sound/core/snd-pcm 0xd4faa5ba snd_pcm_suspend_all +EXPORT_SYMBOL sound/core/snd-pcm 0xd5ea5d87 snd_pcm_limit_hw_rates +EXPORT_SYMBOL sound/core/snd-pcm 0xe176f7a7 snd_dma_alloc_pages +EXPORT_SYMBOL sound/core/snd-pcm 0xe368e334 snd_pcm_lib_read +EXPORT_SYMBOL sound/core/snd-pcm 0xe56a9336 snd_pcm_format_width +EXPORT_SYMBOL sound/core/snd-pcm 0xeb2aab71 snd_pcm_hw_constraint_ratnums +EXPORT_SYMBOL sound/core/snd-pcm 0xf08c13c4 snd_pcm_hw_rule_add +EXPORT_SYMBOL sound/core/snd-pcm 0xf3797152 snd_interval_ratnum +EXPORT_SYMBOL sound/core/snd-pcm 0xf9ee6ed5 snd_pcm_lib_write +EXPORT_SYMBOL sound/core/snd-pcm 0xff15a311 snd_pcm_lib_writev +EXPORT_SYMBOL sound/core/snd-pcm 0xff6104d0 snd_pcm_rate_bit_to_rate +EXPORT_SYMBOL sound/core/snd-rawmidi 0x109ab3cf snd_rawmidi_new +EXPORT_SYMBOL sound/core/snd-rawmidi 0x1b72aa06 snd_rawmidi_transmit +EXPORT_SYMBOL sound/core/snd-rawmidi 0x2eaac04b snd_rawmidi_input_params +EXPORT_SYMBOL sound/core/snd-rawmidi 0x3361d4dc snd_rawmidi_kernel_open +EXPORT_SYMBOL sound/core/snd-rawmidi 0x5c64c5ce snd_rawmidi_transmit_peek +EXPORT_SYMBOL sound/core/snd-rawmidi 0x6547ce43 snd_rawmidi_set_ops +EXPORT_SYMBOL sound/core/snd-rawmidi 0x66febf0e snd_rawmidi_transmit_empty +EXPORT_SYMBOL sound/core/snd-rawmidi 0x6cb40869 snd_rawmidi_drain_input +EXPORT_SYMBOL sound/core/snd-rawmidi 0x7686e8e1 snd_rawmidi_kernel_release +EXPORT_SYMBOL sound/core/snd-rawmidi 0x7751aa74 snd_rawmidi_info_select +EXPORT_SYMBOL sound/core/snd-rawmidi 0x787c2b6f snd_rawmidi_output_params +EXPORT_SYMBOL sound/core/snd-rawmidi 0x91eef5c3 snd_rawmidi_kernel_write +EXPORT_SYMBOL sound/core/snd-rawmidi 0x9bc7ff9c snd_rawmidi_drop_output +EXPORT_SYMBOL sound/core/snd-rawmidi 0xc0b12bf9 snd_rawmidi_kernel_read +EXPORT_SYMBOL sound/core/snd-rawmidi 0xcc0d2bce snd_rawmidi_receive +EXPORT_SYMBOL sound/core/snd-rawmidi 0xd436b8cd snd_rawmidi_transmit_ack +EXPORT_SYMBOL sound/core/snd-rawmidi 0xd940ca0d snd_rawmidi_drain_output +EXPORT_SYMBOL sound/core/snd-timer 0x09254c16 snd_timer_pause +EXPORT_SYMBOL sound/core/snd-timer 0x14fcc0f2 snd_timer_open +EXPORT_SYMBOL sound/core/snd-timer 0x1cc47c0c snd_timer_start +EXPORT_SYMBOL sound/core/snd-timer 0x21384e66 snd_timer_global_register +EXPORT_SYMBOL sound/core/snd-timer 0x2a56f0f9 snd_timer_notify +EXPORT_SYMBOL sound/core/snd-timer 0x2aa08f5c snd_timer_global_free +EXPORT_SYMBOL sound/core/snd-timer 0x85c4b3c1 snd_timer_resolution +EXPORT_SYMBOL sound/core/snd-timer 0x87b62b63 snd_timer_stop +EXPORT_SYMBOL sound/core/snd-timer 0xb58754d2 snd_timer_global_new +EXPORT_SYMBOL sound/core/snd-timer 0xce38f6cd snd_timer_close +EXPORT_SYMBOL sound/core/snd-timer 0xda34ee30 snd_timer_interrupt +EXPORT_SYMBOL sound/core/snd-timer 0xe7e04d00 snd_timer_continue +EXPORT_SYMBOL sound/core/snd-timer 0xf4d7dc29 snd_timer_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/mpu401/snd-mpu401-uart 0xddd3406c snd_mpu401_uart_new +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x05060a19 snd_opl3_regmap +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x072de906 snd_opl3_timer_new +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x2dc27aef snd_opl3_reset +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x31d79310 snd_opl3_hwdep_new +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x36fd0637 snd_opl3_new +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x39c92c5a snd_opl3_create +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x688849e0 snd_opl3_interrupt +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xad94d8ed snd_opl3_load_patch +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xe9ad0ca2 snd_opl3_init +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xf9f85c94 snd_opl3_find_patch +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x226138b0 snd_vx_threaded_irq_handler +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x37c22e6f snd_vx_create +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x450df213 snd_vx_check_reg_bit +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x58a1679e snd_vx_dsp_boot +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xa9d8ca92 snd_vx_load_boot_image +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xb0311c4d snd_vx_setup_firmware +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xba03049b snd_vx_free_firmware +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xddc78481 snd_vx_resume +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xe40b4ff7 snd_vx_suspend +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xf1f04d23 snd_vx_irq_handler +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xf3bb5995 snd_vx_dsp_load +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x001b12ea snd_fw_transaction +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x0751b20b cmp_connection_break +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x0848f640 amdtp_stream_pcm_abort +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x0bb99d3f cmp_connection_check_used +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x110558dc amdtp_stream_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x20254e45 amdtp_syt_intervals +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x30099bc6 fw_iso_resources_free +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x317888ab fw_iso_resources_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x34cd8cec amdtp_stream_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x4b837171 amdtp_stream_get_max_payload +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x4e0d3b96 amdtp_stream_pcm_pointer +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x4f147c63 cmp_connection_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x53ca18e8 amdtp_rate_table +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x54c7c3dc amdtp_stream_start +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x577df6b6 fw_iso_resources_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x6b95d7fc cmp_connection_update +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x78f206e8 fw_iso_resources_allocate +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x7c2a7533 amdtp_stream_stop +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x8decadfb avc_general_get_sig_fmt +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x93593176 avc_general_get_plug_info +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x96a90e2e amdtp_stream_pcm_prepare +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x97530987 amdtp_stream_set_parameters +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x9f842cde fcp_avc_transaction +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xa5deef94 iso_packets_buffer_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xaf501377 cmp_connection_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xbf635ac1 amdtp_stream_update +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xbfd3a2b4 amdtp_stream_add_pcm_hw_constraints +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xd272cd6e avc_general_set_sig_fmt +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xd3a19828 iso_packets_buffer_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xdfd87e3e fcp_bus_reset +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xea167fb4 fw_iso_resources_update +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xee984e6e cmp_connection_establish +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xfa2ab198 amdtp_stream_set_pcm_format +EXPORT_SYMBOL sound/i2c/other/snd-ak4113 0x1328fc6b snd_ak4113_suspend +EXPORT_SYMBOL sound/i2c/other/snd-ak4113 0x18a70633 snd_ak4113_resume +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x23906299 snd_ak4114_create +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x25708250 snd_ak4114_reg_write +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x9bc1d649 snd_ak4114_reinit +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0xc5cd353b snd_ak4114_check_rate_and_errors +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0xc63c0728 snd_ak4114_build +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0xd91ea6a4 snd_ak4114_resume +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0xdf3e5640 snd_ak4114_external_rate +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0xfc0097f7 snd_ak4114_suspend +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0x0a5d2a5c snd_akm4xxx_build_controls +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0x85b5ad31 snd_akm4xxx_reset +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0x9c77915b snd_akm4xxx_init +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0xcad0cca9 snd_akm4xxx_write +EXPORT_SYMBOL sound/i2c/other/snd-pt2258 0x5ef88a7b snd_pt2258_build_controls +EXPORT_SYMBOL sound/i2c/other/snd-pt2258 0x8076a2bf snd_pt2258_reset +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x1c814632 snd_cs8427_reg_write +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x2ed20e26 snd_cs8427_init +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x42b78809 snd_cs8427_iec958_active +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x98531bdd snd_cs8427_create +EXPORT_SYMBOL sound/i2c/snd-cs8427 0xa4b16ba4 snd_cs8427_iec958_pcm +EXPORT_SYMBOL sound/i2c/snd-cs8427 0xfa547549 snd_cs8427_iec958_build +EXPORT_SYMBOL sound/i2c/snd-i2c 0x0c5d88ce snd_i2c_device_create +EXPORT_SYMBOL sound/i2c/snd-i2c 0x73776673 snd_i2c_bus_create +EXPORT_SYMBOL sound/i2c/snd-i2c 0x95451d61 snd_i2c_readbytes +EXPORT_SYMBOL sound/i2c/snd-i2c 0xa1141983 snd_i2c_device_free +EXPORT_SYMBOL sound/i2c/snd-i2c 0xb913c1aa snd_i2c_sendbytes +EXPORT_SYMBOL sound/i2c/snd-i2c 0xf1fae5c7 snd_i2c_probeaddr +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x00d8060d snd_ac97_update_bits +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x0ed67f5b snd_ac97_suspend +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x1c8cb2fc snd_ac97_update_power +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x205e0b25 snd_ac97_pcm_double_rate_rules +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x2b4637e7 snd_ac97_write_cache +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x71b013bf snd_ac97_bus +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x76f69c44 snd_ac97_update +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xb420fb6e snd_ac97_pcm_close +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xb4f7fc02 snd_ac97_mixer +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xb95092a4 snd_ac97_tune_hardware +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xba081473 snd_ac97_pcm_assign +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xc7a33d46 snd_ac97_pcm_open +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xdd007a3c snd_ac97_get_short_name +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xe36d963a snd_ac97_write +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xf65312f9 snd_ac97_set_rate +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xf84bdf98 snd_ac97_resume +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xff8d6601 snd_ac97_read +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x44d6cc08 snd_emu10k1_ptr_write +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x49b68ffe snd_emu10k1_voice_alloc +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x63805054 snd_emu10k1_synth_bzero +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x7b631485 snd_emu10k1_synth_copy_from_user +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x802c4ab0 snd_emu10k1_memblk_map +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xa3fb7c4e snd_emu10k1_synth_free +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xa5a2b547 snd_emu10k1_voice_free +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xae6942d3 snd_emu10k1_synth_alloc +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xd6b400bf snd_emu10k1_ptr_read +EXPORT_SYMBOL sound/pci/ice1712/snd-ice17xx-ak4xxx 0x48f44caa snd_ice1712_akm4xxx_init +EXPORT_SYMBOL sound/pci/ice1712/snd-ice17xx-ak4xxx 0xb54fcb38 snd_ice1712_akm4xxx_free +EXPORT_SYMBOL sound/pci/ice1712/snd-ice17xx-ak4xxx 0xc9983732 snd_ice1712_akm4xxx_build_controls +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x04dee241 oxygen_write_i2c +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x0b1de8a6 oxygen_pci_pm +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x1bf5af8b oxygen_write_ac97_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x244bbc53 oxygen_write16 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x3f9813e1 oxygen_update_dac_routing +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x44888002 oxygen_write8_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x51ef9702 oxygen_reset_uart +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x5bad8896 oxygen_pci_probe +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x6d43839a oxygen_pci_shutdown +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x7cd7f1a9 oxygen_write32 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x8e8c8096 oxygen_read16 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x9589d3e3 oxygen_write32_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xa201667d oxygen_read32 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xacc67f15 oxygen_write_spi +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xafc1d745 oxygen_write_ac97 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xb0b36ea7 oxygen_write16_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xb164b969 oxygen_read8 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xb45041ad oxygen_write_uart +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xc0f1836b oxygen_write8 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xc6a8d727 oxygen_pci_remove +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xffd24437 oxygen_read_ac97 +EXPORT_SYMBOL sound/pci/trident/snd-trident 0x050c3d44 snd_trident_free_voice +EXPORT_SYMBOL sound/pci/trident/snd-trident 0x18da1b5a snd_trident_write_voice_regs +EXPORT_SYMBOL sound/pci/trident/snd-trident 0x4419bb9e snd_trident_alloc_voice +EXPORT_SYMBOL sound/pci/trident/snd-trident 0x5d3cae12 snd_trident_start_voice +EXPORT_SYMBOL sound/pci/trident/snd-trident 0x6976af29 snd_trident_stop_voice +EXPORT_SYMBOL sound/soc/codecs/snd-soc-tlv320aic23 0x42b634d9 tlv320aic23_probe +EXPORT_SYMBOL sound/soc/codecs/snd-soc-tlv320aic23 0xad5ee9e8 tlv320aic23_regmap +EXPORT_SYMBOL sound/soc/snd-soc-core 0xe2733389 snd_soc_alloc_ac97_codec +EXPORT_SYMBOL sound/soundcore 0x076b0622 register_sound_special +EXPORT_SYMBOL sound/soundcore 0x15dfbaa6 register_sound_mixer +EXPORT_SYMBOL sound/soundcore 0x520c418c register_sound_midi +EXPORT_SYMBOL sound/soundcore 0x7afc9d8a unregister_sound_mixer +EXPORT_SYMBOL sound/soundcore 0x99c95fa5 unregister_sound_special +EXPORT_SYMBOL sound/soundcore 0xa5e38f38 sound_class +EXPORT_SYMBOL sound/soundcore 0xb87cc1a0 register_sound_dsp +EXPORT_SYMBOL sound/soundcore 0xbb4941d2 register_sound_special_device +EXPORT_SYMBOL sound/soundcore 0xcd083b10 unregister_sound_dsp +EXPORT_SYMBOL sound/soundcore 0xfdab6de3 unregister_sound_midi +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x008feae5 snd_emux_lock_voice +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x172c400f snd_emux_register +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x2f00e0f9 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 0x87df8d44 snd_emux_terminate_all +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0xadc3fdef snd_emux_free +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0xeedd0783 snd_emux_new +EXPORT_SYMBOL sound/synth/snd-util-mem 0x17c0c3e9 __snd_util_memblk_new +EXPORT_SYMBOL sound/synth/snd-util-mem 0x3196361b snd_util_mem_avail +EXPORT_SYMBOL sound/synth/snd-util-mem 0x5c390e74 snd_util_mem_free +EXPORT_SYMBOL sound/synth/snd-util-mem 0x64e2a20d snd_util_memhdr_free +EXPORT_SYMBOL sound/synth/snd-util-mem 0x81ef30f9 snd_util_memhdr_new +EXPORT_SYMBOL sound/synth/snd-util-mem 0xbcaf0638 __snd_util_mem_alloc +EXPORT_SYMBOL sound/synth/snd-util-mem 0xf7066462 snd_util_mem_alloc +EXPORT_SYMBOL sound/synth/snd-util-mem 0xfe4c0770 __snd_util_mem_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 0xe107a499 snd_usbmidi_create +EXPORT_SYMBOL vmlinux 0x00065f90 pci_set_dma_max_seg_size +EXPORT_SYMBOL vmlinux 0x0035f977 phy_register_fixup +EXPORT_SYMBOL vmlinux 0x006b4bcd cpu_to_node_map +EXPORT_SYMBOL vmlinux 0x0070cd1f queue_delayed_work_on +EXPORT_SYMBOL vmlinux 0x00823933 user_revoke +EXPORT_SYMBOL vmlinux 0x00af002e dm_io +EXPORT_SYMBOL vmlinux 0x00bce95d mark_buffer_async_write +EXPORT_SYMBOL vmlinux 0x00c5f610 numa_add_memblk +EXPORT_SYMBOL vmlinux 0x00c8e9c2 ping_prot +EXPORT_SYMBOL vmlinux 0x00d6080a fsnotify_destroy_mark +EXPORT_SYMBOL vmlinux 0x00d7e722 vme_lm_count +EXPORT_SYMBOL vmlinux 0x00e3473c tcp_v4_md5_lookup +EXPORT_SYMBOL vmlinux 0x00e82de1 __netlink_dump_start +EXPORT_SYMBOL vmlinux 0x01000e51 schedule +EXPORT_SYMBOL vmlinux 0x0101d5b1 ip_idents_reserve +EXPORT_SYMBOL vmlinux 0x012d1e5d sock_queue_rcv_skb +EXPORT_SYMBOL vmlinux 0x015f7089 bio_copy_kern +EXPORT_SYMBOL vmlinux 0x0164b1a0 generic_file_write_iter +EXPORT_SYMBOL vmlinux 0x016e5c2a mod_timer +EXPORT_SYMBOL vmlinux 0x0171d14d tcp_sockets_allocated +EXPORT_SYMBOL vmlinux 0x01790e94 csum_partial_copy +EXPORT_SYMBOL vmlinux 0x017bbef2 netlink_broadcast +EXPORT_SYMBOL vmlinux 0x017edd64 inet_reqsk_alloc +EXPORT_SYMBOL vmlinux 0x01838207 eth_header_cache +EXPORT_SYMBOL vmlinux 0x018417b9 vlan_dev_vlan_id +EXPORT_SYMBOL vmlinux 0x0185ad73 pci_bus_set_ops +EXPORT_SYMBOL vmlinux 0x01a2554d generic_file_llseek_size +EXPORT_SYMBOL vmlinux 0x01ab98a5 of_get_cpu_node +EXPORT_SYMBOL vmlinux 0x01ceda91 jbd2_journal_start_reserved +EXPORT_SYMBOL vmlinux 0x01d04190 lru_cache_add_file +EXPORT_SYMBOL vmlinux 0x01de7ec5 dev_mc_add_excl +EXPORT_SYMBOL vmlinux 0x01ff7a16 rtnl_notify +EXPORT_SYMBOL vmlinux 0x02124474 ip_send_check +EXPORT_SYMBOL vmlinux 0x0216c0ba phy_init_hw +EXPORT_SYMBOL vmlinux 0x022769cf freeze_bdev +EXPORT_SYMBOL vmlinux 0x024bf827 radix_tree_gang_lookup_tag_slot +EXPORT_SYMBOL vmlinux 0x0255fb83 pci_release_regions +EXPORT_SYMBOL vmlinux 0x025e73c7 __neigh_set_probe_once +EXPORT_SYMBOL vmlinux 0x025e987c swiotlb_dma_supported +EXPORT_SYMBOL vmlinux 0x02611b4b tty_flip_buffer_push +EXPORT_SYMBOL vmlinux 0x02649054 security_sock_rcv_skb +EXPORT_SYMBOL vmlinux 0x027466ea blk_queue_prep_rq +EXPORT_SYMBOL vmlinux 0x0274dc2b netif_get_num_default_rss_queues +EXPORT_SYMBOL vmlinux 0x029afed8 ipv6_select_ident +EXPORT_SYMBOL vmlinux 0x02a18c74 nf_conntrack_destroy +EXPORT_SYMBOL vmlinux 0x02a6ce5a crc16_table +EXPORT_SYMBOL vmlinux 0x02d5dd45 netpoll_setup +EXPORT_SYMBOL vmlinux 0x02df446c bio_uncopy_user +EXPORT_SYMBOL vmlinux 0x02ea111e scsi_driverbyte_string +EXPORT_SYMBOL vmlinux 0x0309c766 dev_get_stats +EXPORT_SYMBOL vmlinux 0x0311eefe security_inode_init_security +EXPORT_SYMBOL vmlinux 0x03134377 rwsem_down_read_failed +EXPORT_SYMBOL vmlinux 0x031cb4e1 ip_defrag +EXPORT_SYMBOL vmlinux 0x0334da4e scsi_command_size_tbl +EXPORT_SYMBOL vmlinux 0x03394fc8 phy_start_aneg +EXPORT_SYMBOL vmlinux 0x034a6cdc devfreq_resume_device +EXPORT_SYMBOL vmlinux 0x03592ea0 security_unix_stream_connect +EXPORT_SYMBOL vmlinux 0x035f891b down_interruptible +EXPORT_SYMBOL vmlinux 0x0366307a console_suspend_enabled +EXPORT_SYMBOL vmlinux 0x0371af3c blk_pre_runtime_suspend +EXPORT_SYMBOL vmlinux 0x0372f212 pnp_release_card_device +EXPORT_SYMBOL vmlinux 0x03793a20 scsi_remove_host +EXPORT_SYMBOL vmlinux 0x037a0cba kfree +EXPORT_SYMBOL vmlinux 0x03886b84 km_policy_notify +EXPORT_SYMBOL vmlinux 0x038a267c scsi_rescan_device +EXPORT_SYMBOL vmlinux 0x03b60ecf lro_flush_all +EXPORT_SYMBOL vmlinux 0x03b88264 netdev_master_upper_dev_get_rcu +EXPORT_SYMBOL vmlinux 0x03ebda85 dns_query +EXPORT_SYMBOL vmlinux 0x03fba39f __tty_alloc_driver +EXPORT_SYMBOL vmlinux 0x03fd2571 vm_unmap_ram +EXPORT_SYMBOL vmlinux 0x03fd3c31 kmem_cache_size +EXPORT_SYMBOL vmlinux 0x0404d1bf generic_file_read_iter +EXPORT_SYMBOL vmlinux 0x0417c8a5 gnet_stats_start_copy +EXPORT_SYMBOL vmlinux 0x0422fe4a inet_csk_timer_bug_msg +EXPORT_SYMBOL vmlinux 0x042b818d generic_show_options +EXPORT_SYMBOL vmlinux 0x043cc5c1 tcp_recvmsg +EXPORT_SYMBOL vmlinux 0x04482cdb __refrigerator +EXPORT_SYMBOL vmlinux 0x0452f233 skb_copy_and_csum_dev +EXPORT_SYMBOL vmlinux 0x0487f831 fb_find_best_display +EXPORT_SYMBOL vmlinux 0x048e51c1 kfree_skb_partial +EXPORT_SYMBOL vmlinux 0x04b77fe5 generic_mii_ioctl +EXPORT_SYMBOL vmlinux 0x04d833d1 genphy_aneg_done +EXPORT_SYMBOL vmlinux 0x04ea56f9 _kstrtol +EXPORT_SYMBOL vmlinux 0x04ea5d10 ksize +EXPORT_SYMBOL vmlinux 0x04f477e0 dquot_commit +EXPORT_SYMBOL vmlinux 0x050877b9 dmi_first_match +EXPORT_SYMBOL vmlinux 0x05186ca4 flush_icache_range +EXPORT_SYMBOL vmlinux 0x051a23ff i2c_smbus_write_word_data +EXPORT_SYMBOL vmlinux 0x05207639 twl6040_power +EXPORT_SYMBOL vmlinux 0x05240ee7 percpu_counter_batch +EXPORT_SYMBOL vmlinux 0x053ecaee clear_inode +EXPORT_SYMBOL vmlinux 0x054a40d0 __tracepoint_fence_emit +EXPORT_SYMBOL vmlinux 0x054efb01 dentry_update_name_case +EXPORT_SYMBOL vmlinux 0x055c8559 __kfifo_dma_in_prepare_r +EXPORT_SYMBOL vmlinux 0x056061ee vlan_vids_del_by_dev +EXPORT_SYMBOL vmlinux 0x056fab95 bio_put +EXPORT_SYMBOL vmlinux 0x05a7cfcd simple_dir_inode_operations +EXPORT_SYMBOL vmlinux 0x05bd70d0 unregister_netdev +EXPORT_SYMBOL vmlinux 0x05dd0c6e clkdev_drop +EXPORT_SYMBOL vmlinux 0x061651be strcat +EXPORT_SYMBOL vmlinux 0x061952c5 nf_afinfo +EXPORT_SYMBOL vmlinux 0x061f4039 acpi_get_table_with_size +EXPORT_SYMBOL vmlinux 0x06259b92 __ethtool_get_settings +EXPORT_SYMBOL vmlinux 0x062ba2e2 dma_release_from_coherent +EXPORT_SYMBOL vmlinux 0x0634100a bitmap_parselist_user +EXPORT_SYMBOL vmlinux 0x0634db7b register_framebuffer +EXPORT_SYMBOL vmlinux 0x064929f0 simple_release_fs +EXPORT_SYMBOL vmlinux 0x06525f57 xfrm_policy_flush +EXPORT_SYMBOL vmlinux 0x0658e5cb dquot_release +EXPORT_SYMBOL vmlinux 0x065a17ef page_cache_next_hole +EXPORT_SYMBOL vmlinux 0x065cfc7b tcp_create_openreq_child +EXPORT_SYMBOL vmlinux 0x066020b5 vm_iomap_memory +EXPORT_SYMBOL vmlinux 0x067d8d35 security_release_secctx +EXPORT_SYMBOL vmlinux 0x06869be8 inet6_del_protocol +EXPORT_SYMBOL vmlinux 0x068def92 get_acl +EXPORT_SYMBOL vmlinux 0x069dd997 tcp_md5_hash_skb_data +EXPORT_SYMBOL vmlinux 0x06a74d60 blk_queue_bounce +EXPORT_SYMBOL vmlinux 0x06be2789 __secpath_destroy +EXPORT_SYMBOL vmlinux 0x06d3b0f8 __frontswap_load +EXPORT_SYMBOL vmlinux 0x06e6a288 sched_autogroup_detach +EXPORT_SYMBOL vmlinux 0x06fe3b14 default_grn +EXPORT_SYMBOL vmlinux 0x071ee338 xfrm6_protocol_register +EXPORT_SYMBOL vmlinux 0x072f901c vme_master_rmw +EXPORT_SYMBOL vmlinux 0x07352865 bioset_create_nobvec +EXPORT_SYMBOL vmlinux 0x07355958 dma_ops +EXPORT_SYMBOL vmlinux 0x074d12a4 ip6_route_output +EXPORT_SYMBOL vmlinux 0x076c6ea4 pci_get_slot +EXPORT_SYMBOL vmlinux 0x0784cb67 invalidate_inode_buffers +EXPORT_SYMBOL vmlinux 0x0787dd8f param_set_long +EXPORT_SYMBOL vmlinux 0x0799e998 dquot_commit_info +EXPORT_SYMBOL vmlinux 0x07a071aa blk_rq_map_user +EXPORT_SYMBOL vmlinux 0x07a4b576 flex_array_free +EXPORT_SYMBOL vmlinux 0x07a72e2b scsi_cmd_ioctl +EXPORT_SYMBOL vmlinux 0x07a890c8 fb_alloc_cmap +EXPORT_SYMBOL vmlinux 0x07c115cb generic_writepages +EXPORT_SYMBOL vmlinux 0x07c3185b mipi_dsi_host_register +EXPORT_SYMBOL vmlinux 0x07cc4a5d printk_timed_ratelimit +EXPORT_SYMBOL vmlinux 0x07dc58d1 seq_put_decimal_ll +EXPORT_SYMBOL vmlinux 0x07f86c54 page_cache_prev_hole +EXPORT_SYMBOL vmlinux 0x07fd69bd blk_mq_unique_tag +EXPORT_SYMBOL vmlinux 0x0818e98c blk_end_request_cur +EXPORT_SYMBOL vmlinux 0x081bf720 dev_mc_add +EXPORT_SYMBOL vmlinux 0x082c3213 pci_root_buses +EXPORT_SYMBOL vmlinux 0x083eb21c rfkill_unregister +EXPORT_SYMBOL vmlinux 0x0847415b tty_driver_flush_buffer +EXPORT_SYMBOL vmlinux 0x08972034 d_alloc_name +EXPORT_SYMBOL vmlinux 0x08bcd1bd eth_change_mtu +EXPORT_SYMBOL vmlinux 0x08c15c8a phy_register_fixup_for_uid +EXPORT_SYMBOL vmlinux 0x08d8749c eth_gro_complete +EXPORT_SYMBOL vmlinux 0x08ea69e7 mipi_dsi_packet_format_is_long +EXPORT_SYMBOL vmlinux 0x08f00c29 netif_device_detach +EXPORT_SYMBOL vmlinux 0x091df570 get_io_context +EXPORT_SYMBOL vmlinux 0x092083a3 __blockdev_direct_IO +EXPORT_SYMBOL vmlinux 0x0923796b jbd2_complete_transaction +EXPORT_SYMBOL vmlinux 0x092b32f4 seq_printf +EXPORT_SYMBOL vmlinux 0x093bfc3f proc_dointvec_userhz_jiffies +EXPORT_SYMBOL vmlinux 0x0948d4f2 __f_setown +EXPORT_SYMBOL vmlinux 0x094a5d3a inode_claim_rsv_space +EXPORT_SYMBOL vmlinux 0x09580deb init_timer_key +EXPORT_SYMBOL vmlinux 0x09696626 acpi_decode_pld_buffer +EXPORT_SYMBOL vmlinux 0x096a889f dev_alert +EXPORT_SYMBOL vmlinux 0x096f73f2 tty_schedule_flip +EXPORT_SYMBOL vmlinux 0x098431ba acpi_get_current_resources +EXPORT_SYMBOL vmlinux 0x098b71c6 fb_dealloc_cmap +EXPORT_SYMBOL vmlinux 0x09bddafd acpi_notifier_call_chain +EXPORT_SYMBOL vmlinux 0x09c55cec schedule_timeout_interruptible +EXPORT_SYMBOL vmlinux 0x09c8d779 pcim_iounmap +EXPORT_SYMBOL vmlinux 0x09c8eb55 font_vga_8x16 +EXPORT_SYMBOL vmlinux 0x09d44df9 in_lock_functions +EXPORT_SYMBOL vmlinux 0x09d62e45 dev_mc_del_global +EXPORT_SYMBOL vmlinux 0x09e5daa4 fddi_type_trans +EXPORT_SYMBOL vmlinux 0x0a07c837 security_inode_listsecurity +EXPORT_SYMBOL vmlinux 0x0a2487e0 unblock_all_signals +EXPORT_SYMBOL vmlinux 0x0a292872 reservation_seqcount_class +EXPORT_SYMBOL vmlinux 0x0a57863e cancel_delayed_work_sync +EXPORT_SYMBOL vmlinux 0x0a5cc940 __fib6_flush_trees +EXPORT_SYMBOL vmlinux 0x0aa309cf synchronize_hardirq +EXPORT_SYMBOL vmlinux 0x0aa70c4c of_graph_get_endpoint_by_regs +EXPORT_SYMBOL vmlinux 0x0ab04aa9 tcp_try_fastopen +EXPORT_SYMBOL vmlinux 0x0ab7c51a page_put_link +EXPORT_SYMBOL vmlinux 0x0abda87c param_ops_int +EXPORT_SYMBOL vmlinux 0x0acf7679 dma_issue_pending_all +EXPORT_SYMBOL vmlinux 0x0add464d of_find_node_with_property +EXPORT_SYMBOL vmlinux 0x0aff1064 dump_emit +EXPORT_SYMBOL vmlinux 0x0aff4dcb param_set_copystring +EXPORT_SYMBOL vmlinux 0x0affb49b save_mount_options +EXPORT_SYMBOL vmlinux 0x0b0d888b icmpv6_err_convert +EXPORT_SYMBOL vmlinux 0x0b1beb31 vmalloc_32_user +EXPORT_SYMBOL vmlinux 0x0b3856ab tcp_prequeue +EXPORT_SYMBOL vmlinux 0x0b4eccef tcp_getsockopt +EXPORT_SYMBOL vmlinux 0x0b57decc mmc_interrupt_hpi +EXPORT_SYMBOL vmlinux 0x0b742fd7 simple_strtol +EXPORT_SYMBOL vmlinux 0x0b77209d d_add_ci +EXPORT_SYMBOL vmlinux 0x0b7f6b4e simple_dname +EXPORT_SYMBOL vmlinux 0x0b864351 genl_unregister_family +EXPORT_SYMBOL vmlinux 0x0b8e6da1 lockref_get_not_zero +EXPORT_SYMBOL vmlinux 0x0b9a68ab blk_rq_count_integrity_sg +EXPORT_SYMBOL vmlinux 0x0ba4ebec __starget_for_each_device +EXPORT_SYMBOL vmlinux 0x0baa2c00 down_write +EXPORT_SYMBOL vmlinux 0x0bbc5908 gen_estimator_active +EXPORT_SYMBOL vmlinux 0x0bc477a2 irq_set_irq_type +EXPORT_SYMBOL vmlinux 0x0bca8be8 inode_set_flags +EXPORT_SYMBOL vmlinux 0x0bd902a3 thermal_cdev_update +EXPORT_SYMBOL vmlinux 0x0be80150 dev_add_offload +EXPORT_SYMBOL vmlinux 0x0bf561a0 follow_pfn +EXPORT_SYMBOL vmlinux 0x0c02ecc4 blk_queue_make_request +EXPORT_SYMBOL vmlinux 0x0c10e2fc blk_mq_add_to_requeue_list +EXPORT_SYMBOL vmlinux 0x0c21d019 flush_delayed_work +EXPORT_SYMBOL vmlinux 0x0c289a9f compat_sock_common_setsockopt +EXPORT_SYMBOL vmlinux 0x0c3b5dea of_find_node_opts_by_path +EXPORT_SYMBOL vmlinux 0x0c45fc96 vfs_lstat +EXPORT_SYMBOL vmlinux 0x0c4f1f7f mmc_detect_card_removed +EXPORT_SYMBOL vmlinux 0x0c58a8cd netdev_increment_features +EXPORT_SYMBOL vmlinux 0x0c6bdc3f vme_master_read +EXPORT_SYMBOL vmlinux 0x0c79651a nd_device_unregister +EXPORT_SYMBOL vmlinux 0x0c8a025d textsearch_find_continuous +EXPORT_SYMBOL vmlinux 0x0c8edcf4 dquot_writeback_dquots +EXPORT_SYMBOL vmlinux 0x0c95a52b ip_queue_xmit +EXPORT_SYMBOL vmlinux 0x0ca0c882 twl6030_interrupt_mask +EXPORT_SYMBOL vmlinux 0x0ca7b7a8 acpi_check_region +EXPORT_SYMBOL vmlinux 0x0ca9b7c9 lock_sock_nested +EXPORT_SYMBOL vmlinux 0x0cae232b utf16s_to_utf8s +EXPORT_SYMBOL vmlinux 0x0cf58982 simple_link +EXPORT_SYMBOL vmlinux 0x0d12d897 dquot_reclaim_space_nodirty +EXPORT_SYMBOL vmlinux 0x0d391a55 cros_ec_cmd_xfer +EXPORT_SYMBOL vmlinux 0x0d3dda14 acpi_get_type +EXPORT_SYMBOL vmlinux 0x0d4360f2 copy_page_to_iter +EXPORT_SYMBOL vmlinux 0x0d4e1550 blk_mq_init_queue +EXPORT_SYMBOL vmlinux 0x0d542439 __ipv6_addr_type +EXPORT_SYMBOL vmlinux 0x0d5ea5ba swiotlb_dma_mapping_error +EXPORT_SYMBOL vmlinux 0x0d61eeee __bitmap_subset +EXPORT_SYMBOL vmlinux 0x0d80efb5 acpi_evaluate_ost +EXPORT_SYMBOL vmlinux 0x0d9038f4 get_user_pages_locked +EXPORT_SYMBOL vmlinux 0x0da10ec3 security_sock_graft +EXPORT_SYMBOL vmlinux 0x0ddf93f5 kern_path_mountpoint +EXPORT_SYMBOL vmlinux 0x0de23607 simple_transaction_set +EXPORT_SYMBOL vmlinux 0x0deb9cde param_get_int +EXPORT_SYMBOL vmlinux 0x0e08dd6e gro_find_receive_by_type +EXPORT_SYMBOL vmlinux 0x0e2f61bb elv_rb_latter_request +EXPORT_SYMBOL vmlinux 0x0e30449b blk_rq_init +EXPORT_SYMBOL vmlinux 0x0e433902 inode_init_owner +EXPORT_SYMBOL vmlinux 0x0e6da44a set_normalized_timespec +EXPORT_SYMBOL vmlinux 0x0e77a781 lockref_put_return +EXPORT_SYMBOL vmlinux 0x0e8b90c5 mount_nodev +EXPORT_SYMBOL vmlinux 0x0e9150bf scsi_device_lookup_by_target +EXPORT_SYMBOL vmlinux 0x0eb0b447 bio_integrity_alloc +EXPORT_SYMBOL vmlinux 0x0ec5babe vme_dma_free +EXPORT_SYMBOL vmlinux 0x0ec63707 cpufreq_get_policy +EXPORT_SYMBOL vmlinux 0x0ed8cc7b acpi_evaluate_object_typed +EXPORT_SYMBOL vmlinux 0x0eeae688 pci_claim_resource +EXPORT_SYMBOL vmlinux 0x0eebe424 setattr_copy +EXPORT_SYMBOL vmlinux 0x0ef04cdd give_up_console +EXPORT_SYMBOL vmlinux 0x0efa8355 cdev_alloc +EXPORT_SYMBOL vmlinux 0x0efcbb1b set_current_groups +EXPORT_SYMBOL vmlinux 0x0eff3950 blk_queue_dma_alignment +EXPORT_SYMBOL vmlinux 0x0f42b4f2 tty_port_alloc_xmit_buf +EXPORT_SYMBOL vmlinux 0x0f42e33a __vlan_find_dev_deep_rcu +EXPORT_SYMBOL vmlinux 0x0f4c91ed ns_to_timespec +EXPORT_SYMBOL vmlinux 0x0f4d8fa2 mpage_readpages +EXPORT_SYMBOL vmlinux 0x0f6a3b5c string_get_size +EXPORT_SYMBOL vmlinux 0x0f72e566 security_inode_getsecctx +EXPORT_SYMBOL vmlinux 0x0f97b3e9 netdev_upper_dev_link +EXPORT_SYMBOL vmlinux 0x0faef0ed __tasklet_schedule +EXPORT_SYMBOL vmlinux 0x0fb2f8a4 mktime64 +EXPORT_SYMBOL vmlinux 0x0ff2b602 slhc_compress +EXPORT_SYMBOL vmlinux 0x0ff2c759 proc_doulongvec_ms_jiffies_minmax +EXPORT_SYMBOL vmlinux 0x1001727f blk_requeue_request +EXPORT_SYMBOL vmlinux 0x100782ee __getblk_gfp +EXPORT_SYMBOL vmlinux 0x10206d1b param_set_byte +EXPORT_SYMBOL vmlinux 0x10499233 pci_assign_resource +EXPORT_SYMBOL vmlinux 0x104b4096 kmem_cache_shrink +EXPORT_SYMBOL vmlinux 0x10514d2a d_obtain_alias +EXPORT_SYMBOL vmlinux 0x1066eb64 set_security_override_from_ctx +EXPORT_SYMBOL vmlinux 0x106a3694 padata_free +EXPORT_SYMBOL vmlinux 0x1072a394 csum_partial_copy_from_user +EXPORT_SYMBOL vmlinux 0x107e5878 zlib_inflateEnd +EXPORT_SYMBOL vmlinux 0x108c4df8 inode_init_once +EXPORT_SYMBOL vmlinux 0x10950ee1 radix_tree_tag_clear +EXPORT_SYMBOL vmlinux 0x10cfa6d8 tty_insert_flip_string_flags +EXPORT_SYMBOL vmlinux 0x10d404b0 key_type_keyring +EXPORT_SYMBOL vmlinux 0x10e321b7 inet_get_local_port_range +EXPORT_SYMBOL vmlinux 0x10ee20bb default_blu +EXPORT_SYMBOL vmlinux 0x10ef151f pci_request_region +EXPORT_SYMBOL vmlinux 0x1101374d registered_fb +EXPORT_SYMBOL vmlinux 0x1107cab2 inode_dio_wait +EXPORT_SYMBOL vmlinux 0x11089ac7 _ctype +EXPORT_SYMBOL vmlinux 0x11168cf7 inode_sub_rsv_space +EXPORT_SYMBOL vmlinux 0x1163b0f7 __dev_kfree_skb_irq +EXPORT_SYMBOL vmlinux 0x1163f0a7 blk_max_low_pfn +EXPORT_SYMBOL vmlinux 0x117093be qdisc_class_hash_init +EXPORT_SYMBOL vmlinux 0x118a5e56 blk_limits_io_min +EXPORT_SYMBOL vmlinux 0x118e9025 key_revoke +EXPORT_SYMBOL vmlinux 0x11928532 phy_device_create +EXPORT_SYMBOL vmlinux 0x11a044f6 mod_timer_pinned +EXPORT_SYMBOL vmlinux 0x11a6ddd2 input_mt_drop_unused +EXPORT_SYMBOL vmlinux 0x11ad2303 jbd2_journal_lock_updates +EXPORT_SYMBOL vmlinux 0x11ade19b blkdev_put +EXPORT_SYMBOL vmlinux 0x11b1a3ce bdput +EXPORT_SYMBOL vmlinux 0x11cc51ff tty_port_close_start +EXPORT_SYMBOL vmlinux 0x11d65b22 pci_find_bus +EXPORT_SYMBOL vmlinux 0x11dff3d2 genphy_resume +EXPORT_SYMBOL vmlinux 0x11e52abd ppp_unregister_channel +EXPORT_SYMBOL vmlinux 0x11f7ed4c hex_to_bin +EXPORT_SYMBOL vmlinux 0x11fd00ea numa_set_distance +EXPORT_SYMBOL vmlinux 0x1209e592 mipi_dsi_generic_write +EXPORT_SYMBOL vmlinux 0x120b336a __rb_insert_augmented +EXPORT_SYMBOL vmlinux 0x120fc6b1 kstrdup_const +EXPORT_SYMBOL vmlinux 0x121772a1 inet_add_offload +EXPORT_SYMBOL vmlinux 0x122c94cf filemap_fault +EXPORT_SYMBOL vmlinux 0x122ed388 input_set_capability +EXPORT_SYMBOL vmlinux 0x123f82f3 getrawmonotonic64 +EXPORT_SYMBOL vmlinux 0x124e96ac inet_frags_fini +EXPORT_SYMBOL vmlinux 0x1271477d skb_copy_datagram_iter +EXPORT_SYMBOL vmlinux 0x1271e85b mmc_free_host +EXPORT_SYMBOL vmlinux 0x1287d29d pci_request_selected_regions_exclusive +EXPORT_SYMBOL vmlinux 0x12897633 reqsk_queue_hash_req +EXPORT_SYMBOL vmlinux 0x129e2094 gen_pool_for_each_chunk +EXPORT_SYMBOL vmlinux 0x12a38747 usleep_range +EXPORT_SYMBOL vmlinux 0x12b44690 from_kgid_munged +EXPORT_SYMBOL vmlinux 0x12b68dd2 blk_free_tags +EXPORT_SYMBOL vmlinux 0x12cc5038 start_tty +EXPORT_SYMBOL vmlinux 0x12d411f4 pci_dev_get +EXPORT_SYMBOL vmlinux 0x12dfeb12 vprintk_emit +EXPORT_SYMBOL vmlinux 0x12e2b319 __dec_zone_page_state +EXPORT_SYMBOL vmlinux 0x1305d532 ucs2_strncmp +EXPORT_SYMBOL vmlinux 0x13243d4b wl1251_get_platform_data +EXPORT_SYMBOL vmlinux 0x13282de1 nlmsg_notify +EXPORT_SYMBOL vmlinux 0x132fc163 dev_uc_unsync +EXPORT_SYMBOL vmlinux 0x13307fde vsscanf +EXPORT_SYMBOL vmlinux 0x13315729 flex_array_alloc +EXPORT_SYMBOL vmlinux 0x133b52e9 acpi_bus_unregister_driver +EXPORT_SYMBOL vmlinux 0x137935ad udp_proc_register +EXPORT_SYMBOL vmlinux 0x13d0adf7 __kfifo_out +EXPORT_SYMBOL vmlinux 0x13e4854a abx500_get_register_page_interruptible +EXPORT_SYMBOL vmlinux 0x14032ddb __pagevec_lru_add +EXPORT_SYMBOL vmlinux 0x140737c0 nd_iostat_end +EXPORT_SYMBOL vmlinux 0x1416803f cpumask_of_node +EXPORT_SYMBOL vmlinux 0x1417c0ec ip_options_compile +EXPORT_SYMBOL vmlinux 0x14235cd7 blk_integrity_unregister +EXPORT_SYMBOL vmlinux 0x144177ed bio_map_kern +EXPORT_SYMBOL vmlinux 0x1444ab07 proc_remove +EXPORT_SYMBOL vmlinux 0x14456ba7 gnttab_free_pages +EXPORT_SYMBOL vmlinux 0x14555efe blkdev_issue_zeroout +EXPORT_SYMBOL vmlinux 0x1493e65b page_symlink +EXPORT_SYMBOL vmlinux 0x149eb8d2 devfreq_suspend_device +EXPORT_SYMBOL vmlinux 0x149ff898 __sb_start_write +EXPORT_SYMBOL vmlinux 0x14c1e6ad dma_declare_coherent_memory +EXPORT_SYMBOL vmlinux 0x14d8f746 padata_do_serial +EXPORT_SYMBOL vmlinux 0x1509b908 bioset_integrity_free +EXPORT_SYMBOL vmlinux 0x15263335 __napi_schedule +EXPORT_SYMBOL vmlinux 0x1532685f netdev_info +EXPORT_SYMBOL vmlinux 0x15364b63 ida_remove +EXPORT_SYMBOL vmlinux 0x154c6338 dm_kcopyd_client_destroy +EXPORT_SYMBOL vmlinux 0x155e1499 genlmsg_multicast_allns +EXPORT_SYMBOL vmlinux 0x1581ddfa noop_llseek +EXPORT_SYMBOL vmlinux 0x15864078 tcp_initialize_rcv_mss +EXPORT_SYMBOL vmlinux 0x15b5bc48 netlink_kernel_release +EXPORT_SYMBOL vmlinux 0x15bafe29 unregister_md_cluster_operations +EXPORT_SYMBOL vmlinux 0x15c702ca call_usermodehelper_setup +EXPORT_SYMBOL vmlinux 0x15d121fc blk_get_backing_dev_info +EXPORT_SYMBOL vmlinux 0x15d4f58f make_bad_inode +EXPORT_SYMBOL vmlinux 0x15eb521b scsi_execute +EXPORT_SYMBOL vmlinux 0x15f229a8 soft_cursor +EXPORT_SYMBOL vmlinux 0x160b1ed2 pm860x_page_reg_write +EXPORT_SYMBOL vmlinux 0x160ef3c9 nla_put +EXPORT_SYMBOL vmlinux 0x1616cb30 acpi_evaluate_dsm +EXPORT_SYMBOL vmlinux 0x162bb128 dmam_free_noncoherent +EXPORT_SYMBOL vmlinux 0x16305289 warn_slowpath_null +EXPORT_SYMBOL vmlinux 0x16324b4a pcim_enable_device +EXPORT_SYMBOL vmlinux 0x163a4a90 inetdev_by_index +EXPORT_SYMBOL vmlinux 0x164ecb8f fb_firmware_edid +EXPORT_SYMBOL vmlinux 0x165a9d8a scsi_get_host_dev +EXPORT_SYMBOL vmlinux 0x165c6d7f dev_mc_unsync +EXPORT_SYMBOL vmlinux 0x166c032f d_splice_alias +EXPORT_SYMBOL vmlinux 0x166f9d76 lro_receive_skb +EXPORT_SYMBOL vmlinux 0x16766435 vm_get_page_prot +EXPORT_SYMBOL vmlinux 0x167c5967 print_hex_dump +EXPORT_SYMBOL vmlinux 0x16829ddf xfrm_state_lookup_byaddr +EXPORT_SYMBOL vmlinux 0x168c2f8b devm_ioremap_resource +EXPORT_SYMBOL vmlinux 0x1699e3d5 qdisc_list_del +EXPORT_SYMBOL vmlinux 0x16a4af62 netdev_master_upper_dev_get +EXPORT_SYMBOL vmlinux 0x16b0b95d of_device_unregister +EXPORT_SYMBOL vmlinux 0x16d008c6 PDE_DATA +EXPORT_SYMBOL vmlinux 0x16d35466 xfrm6_rcv_spi +EXPORT_SYMBOL vmlinux 0x16d5d2cd cpu_all_bits +EXPORT_SYMBOL vmlinux 0x16dbcc74 set_page_dirty +EXPORT_SYMBOL vmlinux 0x16e563cf mnt_set_expiry +EXPORT_SYMBOL vmlinux 0x17094762 __register_nls +EXPORT_SYMBOL vmlinux 0x170c25ee acpi_get_next_object +EXPORT_SYMBOL vmlinux 0x170ca1f6 kern_unmount +EXPORT_SYMBOL vmlinux 0x17108525 dev_err +EXPORT_SYMBOL vmlinux 0x172654cc cdev_add +EXPORT_SYMBOL vmlinux 0x172b5091 seq_put_decimal_ull +EXPORT_SYMBOL vmlinux 0x174e4412 input_mt_report_finger_count +EXPORT_SYMBOL vmlinux 0x1756a682 __scsi_device_lookup_by_target +EXPORT_SYMBOL vmlinux 0x1765fd71 gnet_stats_copy_app +EXPORT_SYMBOL vmlinux 0x17840fbf skb_dequeue +EXPORT_SYMBOL vmlinux 0x1793f685 radix_tree_tagged +EXPORT_SYMBOL vmlinux 0x179b3c8d pskb_expand_head +EXPORT_SYMBOL vmlinux 0x17a142df __copy_from_user +EXPORT_SYMBOL vmlinux 0x17a4a287 blk_queue_free_tags +EXPORT_SYMBOL vmlinux 0x17b1125d gen_kill_estimator +EXPORT_SYMBOL vmlinux 0x17c750d9 in6_dev_finish_destroy +EXPORT_SYMBOL vmlinux 0x17d3edcf vfs_whiteout +EXPORT_SYMBOL vmlinux 0x17dddc69 free_xenballooned_pages +EXPORT_SYMBOL vmlinux 0x17e90e56 tty_mutex +EXPORT_SYMBOL vmlinux 0x1806514c tcf_em_register +EXPORT_SYMBOL vmlinux 0x181a8db8 max8998_write_reg +EXPORT_SYMBOL vmlinux 0x1829d188 wait_woken +EXPORT_SYMBOL vmlinux 0x183fa88b mempool_alloc_slab +EXPORT_SYMBOL vmlinux 0x184b82fb mmc_vddrange_to_ocrmask +EXPORT_SYMBOL vmlinux 0x18690c98 ll_rw_block +EXPORT_SYMBOL vmlinux 0x18777cd1 wireless_send_event +EXPORT_SYMBOL vmlinux 0x188a3dfb timespec_trunc +EXPORT_SYMBOL vmlinux 0x189868d7 get_random_bytes_arch +EXPORT_SYMBOL vmlinux 0x18b3ac84 sg_miter_stop +EXPORT_SYMBOL vmlinux 0x18b48e28 __memset_io +EXPORT_SYMBOL vmlinux 0x18c6fb72 scsi_ioctl_reset +EXPORT_SYMBOL vmlinux 0x18ca7338 i2c_smbus_read_word_data +EXPORT_SYMBOL vmlinux 0x18fef9cb xen_start_info +EXPORT_SYMBOL vmlinux 0x192499eb pnp_stop_dev +EXPORT_SYMBOL vmlinux 0x1957c200 mount_pseudo +EXPORT_SYMBOL vmlinux 0x19669261 of_get_pci_address +EXPORT_SYMBOL vmlinux 0x1980dc20 filemap_write_and_wait_range +EXPORT_SYMBOL vmlinux 0x198e57d3 try_to_release_page +EXPORT_SYMBOL vmlinux 0x1992d8dd tcf_hash_new_index +EXPORT_SYMBOL vmlinux 0x199ed0cd net_disable_timestamp +EXPORT_SYMBOL vmlinux 0x19a1de5f pci_dev_put +EXPORT_SYMBOL vmlinux 0x19b192cf scsi_test_unit_ready +EXPORT_SYMBOL vmlinux 0x19b523d7 end_page_writeback +EXPORT_SYMBOL vmlinux 0x19b7c769 __invalidate_device +EXPORT_SYMBOL vmlinux 0x19bd383b security_secmark_refcount_dec +EXPORT_SYMBOL vmlinux 0x19bf50bc dev_get_by_name +EXPORT_SYMBOL vmlinux 0x19ed6d46 mii_link_ok +EXPORT_SYMBOL vmlinux 0x1a0793bd kset_register +EXPORT_SYMBOL vmlinux 0x1a45cb6c acpi_disabled +EXPORT_SYMBOL vmlinux 0x1a5baab4 __dquot_transfer +EXPORT_SYMBOL vmlinux 0x1a61b99b iov_iter_fault_in_readable +EXPORT_SYMBOL vmlinux 0x1a6b8160 __wait_on_buffer +EXPORT_SYMBOL vmlinux 0x1a7b9522 crypto_sha1_finup +EXPORT_SYMBOL vmlinux 0x1ab06748 lockref_get_or_lock +EXPORT_SYMBOL vmlinux 0x1ac5d3cb strcspn +EXPORT_SYMBOL vmlinux 0x1ae5537f dquot_disable +EXPORT_SYMBOL vmlinux 0x1aec4833 unregister_sysctl_table +EXPORT_SYMBOL vmlinux 0x1af0e1bb pci_bus_put +EXPORT_SYMBOL vmlinux 0x1afa6568 xfrm_register_mode +EXPORT_SYMBOL vmlinux 0x1b015b45 pci_enable_msix_range +EXPORT_SYMBOL vmlinux 0x1b015d25 bitmap_parselist +EXPORT_SYMBOL vmlinux 0x1b06a209 blk_set_default_limits +EXPORT_SYMBOL vmlinux 0x1b199cdf sock_wake_async +EXPORT_SYMBOL vmlinux 0x1b1e1088 sg_nents +EXPORT_SYMBOL vmlinux 0x1b2d118a mipi_dsi_dcs_set_tear_on +EXPORT_SYMBOL vmlinux 0x1b38b92c __skb_tx_hash +EXPORT_SYMBOL vmlinux 0x1b405df1 seq_open +EXPORT_SYMBOL vmlinux 0x1b4621b9 path_is_under +EXPORT_SYMBOL vmlinux 0x1b570d23 acpi_warning +EXPORT_SYMBOL vmlinux 0x1b6314fd in_aton +EXPORT_SYMBOL vmlinux 0x1b6b7cc6 page_symlink_inode_operations +EXPORT_SYMBOL vmlinux 0x1b82fefa md_unplug +EXPORT_SYMBOL vmlinux 0x1b88b7f8 get_mm_exe_file +EXPORT_SYMBOL vmlinux 0x1b99e69d inode_add_rsv_space +EXPORT_SYMBOL vmlinux 0x1b9cbd77 abx500_set_register_interruptible +EXPORT_SYMBOL vmlinux 0x1bb31047 add_timer +EXPORT_SYMBOL vmlinux 0x1bca2a90 prepare_to_wait +EXPORT_SYMBOL vmlinux 0x1bcbccbb uart_add_one_port +EXPORT_SYMBOL vmlinux 0x1bd57ae4 netif_carrier_off +EXPORT_SYMBOL vmlinux 0x1be5499e mmc_wait_for_app_cmd +EXPORT_SYMBOL vmlinux 0x1c0b0bcc iov_iter_copy_from_user_atomic +EXPORT_SYMBOL vmlinux 0x1c348908 unregister_nls +EXPORT_SYMBOL vmlinux 0x1c4836f0 vga_set_legacy_decoding +EXPORT_SYMBOL vmlinux 0x1c49f7b0 try_to_writeback_inodes_sb +EXPORT_SYMBOL vmlinux 0x1c64a69c keyring_alloc +EXPORT_SYMBOL vmlinux 0x1c673790 iw_handler_set_spy +EXPORT_SYMBOL vmlinux 0x1c6abcfb simple_pin_fs +EXPORT_SYMBOL vmlinux 0x1c6b27d5 bioset_integrity_create +EXPORT_SYMBOL vmlinux 0x1c8a04b0 acpi_reset +EXPORT_SYMBOL vmlinux 0x1c8d8d94 n_tty_compat_ioctl_helper +EXPORT_SYMBOL vmlinux 0x1c9990c7 skb_pad +EXPORT_SYMBOL vmlinux 0x1cbd572d devm_backlight_device_unregister +EXPORT_SYMBOL vmlinux 0x1cda35b7 xfrm_policy_register_afinfo +EXPORT_SYMBOL vmlinux 0x1ce3874b simple_write_end +EXPORT_SYMBOL vmlinux 0x1ce76702 mpage_writepage +EXPORT_SYMBOL vmlinux 0x1cfc352c __getblk_slow +EXPORT_SYMBOL vmlinux 0x1d1056e5 crc32_be +EXPORT_SYMBOL vmlinux 0x1d1fdfe4 skb_clone +EXPORT_SYMBOL vmlinux 0x1d38c8a6 mipi_dsi_driver_register_full +EXPORT_SYMBOL vmlinux 0x1d529c21 __breadahead +EXPORT_SYMBOL vmlinux 0x1d6b56fc xfrm_spd_getinfo +EXPORT_SYMBOL vmlinux 0x1d8145b3 security_task_getsecid +EXPORT_SYMBOL vmlinux 0x1d844311 posix_acl_chmod +EXPORT_SYMBOL vmlinux 0x1d89bdac neigh_proc_dointvec +EXPORT_SYMBOL vmlinux 0x1d92d898 complete_and_exit +EXPORT_SYMBOL vmlinux 0x1dc3546e udp_sendmsg +EXPORT_SYMBOL vmlinux 0x1dc36131 fb_destroy_modedb +EXPORT_SYMBOL vmlinux 0x1dcc9569 nla_append +EXPORT_SYMBOL vmlinux 0x1dcf6418 __netdev_alloc_skb +EXPORT_SYMBOL vmlinux 0x1dd571e6 fb_copy_cmap +EXPORT_SYMBOL vmlinux 0x1de0a0b3 netlink_capable +EXPORT_SYMBOL vmlinux 0x1de3c54e tty_insert_flip_string_fixed_flag +EXPORT_SYMBOL vmlinux 0x1de74f72 acpi_execute_simple_method +EXPORT_SYMBOL vmlinux 0x1df66c6d block_write_end +EXPORT_SYMBOL vmlinux 0x1dfc4640 block_invalidatepage +EXPORT_SYMBOL vmlinux 0x1dfe09f0 scsi_set_medium_removal +EXPORT_SYMBOL vmlinux 0x1e047854 warn_slowpath_fmt +EXPORT_SYMBOL vmlinux 0x1e08487b i2c_master_recv +EXPORT_SYMBOL vmlinux 0x1e0902a8 param_get_charp +EXPORT_SYMBOL vmlinux 0x1e20c565 __cleancache_invalidate_page +EXPORT_SYMBOL vmlinux 0x1e26be3b get_anon_bdev +EXPORT_SYMBOL vmlinux 0x1e3f09db mmc_gpio_request_ro +EXPORT_SYMBOL vmlinux 0x1e6d26a8 strstr +EXPORT_SYMBOL vmlinux 0x1e795b57 vc_resize +EXPORT_SYMBOL vmlinux 0x1e7fe59f sock_from_file +EXPORT_SYMBOL vmlinux 0x1e8214b1 mmc_add_host +EXPORT_SYMBOL vmlinux 0x1e8660a5 blk_get_queue +EXPORT_SYMBOL vmlinux 0x1e907b1c skb_checksum_setup +EXPORT_SYMBOL vmlinux 0x1e977f01 inetpeer_invalidate_tree +EXPORT_SYMBOL vmlinux 0x1e9edfb7 seq_hlist_start_head_rcu +EXPORT_SYMBOL vmlinux 0x1ea06663 _raw_write_lock +EXPORT_SYMBOL vmlinux 0x1ea0a7ab kernel_neon_begin_partial +EXPORT_SYMBOL vmlinux 0x1eb41fe4 skb_coalesce_rx_frag +EXPORT_SYMBOL vmlinux 0x1ebdf179 of_device_is_compatible +EXPORT_SYMBOL vmlinux 0x1ec990c8 efi +EXPORT_SYMBOL vmlinux 0x1edbfed3 splice_direct_to_actor +EXPORT_SYMBOL vmlinux 0x1edd5bec single_open +EXPORT_SYMBOL vmlinux 0x1ee43a3b pm860x_set_bits +EXPORT_SYMBOL vmlinux 0x1eeb7c9b lock_two_nondirectories +EXPORT_SYMBOL vmlinux 0x1f10cec7 deactivate_locked_super +EXPORT_SYMBOL vmlinux 0x1f3ced89 scsi_report_bus_reset +EXPORT_SYMBOL vmlinux 0x1f6bcf24 ilookup5 +EXPORT_SYMBOL vmlinux 0x1f6ce67a sg_pcopy_to_buffer +EXPORT_SYMBOL vmlinux 0x1f6db587 make_kgid +EXPORT_SYMBOL vmlinux 0x1f81f1b3 devm_request_threaded_irq +EXPORT_SYMBOL vmlinux 0x1f99b41b rt6_lookup +EXPORT_SYMBOL vmlinux 0x1faafdc3 nobh_write_begin +EXPORT_SYMBOL vmlinux 0x1fb09776 of_find_node_by_name +EXPORT_SYMBOL vmlinux 0x1fb31c2e kfree_skb_list +EXPORT_SYMBOL vmlinux 0x1fbb6fd7 nf_log_unset +EXPORT_SYMBOL vmlinux 0x1fbd16da ip_tos2prio +EXPORT_SYMBOL vmlinux 0x1fcf4d4b _raw_read_unlock_bh +EXPORT_SYMBOL vmlinux 0x1fd07fff kdb_grepping_flag +EXPORT_SYMBOL vmlinux 0x1fd226b1 jbd2_journal_get_create_access +EXPORT_SYMBOL vmlinux 0x1fdc7df2 _mcount +EXPORT_SYMBOL vmlinux 0x1fe3a969 mb_cache_entry_get +EXPORT_SYMBOL vmlinux 0x1fe912f1 netdev_alloc_frag +EXPORT_SYMBOL vmlinux 0x1fe9f800 unregister_cpu_notifier +EXPORT_SYMBOL vmlinux 0x1fedf0f4 __request_region +EXPORT_SYMBOL vmlinux 0x1ff21d04 kernel_write +EXPORT_SYMBOL vmlinux 0x1ff7e512 pci_bus_write_config_dword +EXPORT_SYMBOL vmlinux 0x20000329 simple_strtoul +EXPORT_SYMBOL vmlinux 0x200785ed rtnetlink_put_metrics +EXPORT_SYMBOL vmlinux 0x200b2041 in6addr_any +EXPORT_SYMBOL vmlinux 0x204346af proc_dostring +EXPORT_SYMBOL vmlinux 0x204c19f5 tcp_alloc_md5sig_pool +EXPORT_SYMBOL vmlinux 0x205d2fa1 neigh_app_ns +EXPORT_SYMBOL vmlinux 0x205de5b3 tc_classify_compat +EXPORT_SYMBOL vmlinux 0x206d8706 redraw_screen +EXPORT_SYMBOL vmlinux 0x2072ee9b request_threaded_irq +EXPORT_SYMBOL vmlinux 0x208739f6 acpi_load_table +EXPORT_SYMBOL vmlinux 0x208dfccc sock_no_bind +EXPORT_SYMBOL vmlinux 0x20906cd5 idr_destroy +EXPORT_SYMBOL vmlinux 0x2096012c ip4_datagram_connect +EXPORT_SYMBOL vmlinux 0x20a789ac irq_set_chip_data +EXPORT_SYMBOL vmlinux 0x20ab904c netdev_master_upper_dev_link_private +EXPORT_SYMBOL vmlinux 0x20b0c339 elv_dispatch_add_tail +EXPORT_SYMBOL vmlinux 0x20c55ae0 sscanf +EXPORT_SYMBOL vmlinux 0x20d57ae5 uart_update_timeout +EXPORT_SYMBOL vmlinux 0x20df5a3d vme_dma_pci_attribute +EXPORT_SYMBOL vmlinux 0x20eadeb6 ip_compute_csum +EXPORT_SYMBOL vmlinux 0x20ffa7f6 _raw_spin_lock_irq +EXPORT_SYMBOL vmlinux 0x21147ece set_nlink +EXPORT_SYMBOL vmlinux 0x211f68f1 getnstimeofday64 +EXPORT_SYMBOL vmlinux 0x212c748d vfs_writev +EXPORT_SYMBOL vmlinux 0x21346e9a xfrm_lookup_route +EXPORT_SYMBOL vmlinux 0x213bf371 tcf_em_tree_validate +EXPORT_SYMBOL vmlinux 0x215f67db find_get_pages_contig +EXPORT_SYMBOL vmlinux 0x218d68eb devm_ioremap_wc +EXPORT_SYMBOL vmlinux 0x218e2ff7 tcp_poll +EXPORT_SYMBOL vmlinux 0x21a5d7cb dummy_dma_ops +EXPORT_SYMBOL vmlinux 0x21c90ffb ndo_dflt_fdb_del +EXPORT_SYMBOL vmlinux 0x21df74d9 bitmap_set +EXPORT_SYMBOL vmlinux 0x21eedc0a register_filesystem +EXPORT_SYMBOL vmlinux 0x220824dc scsi_free_host_dev +EXPORT_SYMBOL vmlinux 0x220defb6 set_user_nice +EXPORT_SYMBOL vmlinux 0x222e7ce2 sysfs_streq +EXPORT_SYMBOL vmlinux 0x22481f71 scsi_eh_finish_cmd +EXPORT_SYMBOL vmlinux 0x224ff4ad wait_for_completion_interruptible_timeout +EXPORT_SYMBOL vmlinux 0x224ffa80 __inc_zone_page_state +EXPORT_SYMBOL vmlinux 0x225cec59 starget_for_each_device +EXPORT_SYMBOL vmlinux 0x22710ef7 netdev_lower_dev_get_private +EXPORT_SYMBOL vmlinux 0x2276db98 kstrtoint +EXPORT_SYMBOL vmlinux 0x22aa5ccb skb_queue_head +EXPORT_SYMBOL vmlinux 0x22b325d5 kd_mksound +EXPORT_SYMBOL vmlinux 0x22b39c90 dqget +EXPORT_SYMBOL vmlinux 0x22baea3d proc_dointvec_minmax +EXPORT_SYMBOL vmlinux 0x22d0ed3a mark_info_dirty +EXPORT_SYMBOL vmlinux 0x22d155eb input_mt_report_slot_state +EXPORT_SYMBOL vmlinux 0x23195b86 mmc_set_blocklen +EXPORT_SYMBOL vmlinux 0x231d4001 fb_edid_add_monspecs +EXPORT_SYMBOL vmlinux 0x2339a991 lock_fb_info +EXPORT_SYMBOL vmlinux 0x23483b37 of_mdio_find_bus +EXPORT_SYMBOL vmlinux 0x2353367a inet_csk_clear_xmit_timers +EXPORT_SYMBOL vmlinux 0x235f32bf dev_emerg +EXPORT_SYMBOL vmlinux 0x2364c326 lockref_put_or_lock +EXPORT_SYMBOL vmlinux 0x23653b74 simple_unlink +EXPORT_SYMBOL vmlinux 0x2366295e generic_readlink +EXPORT_SYMBOL vmlinux 0x237186c5 sk_alloc +EXPORT_SYMBOL vmlinux 0x23730b54 xfrm_policy_walk +EXPORT_SYMBOL vmlinux 0x23752653 jbd2_journal_dirty_metadata +EXPORT_SYMBOL vmlinux 0x23a574fd security_secmark_relabel_packet +EXPORT_SYMBOL vmlinux 0x23b9d6e2 mangle_path +EXPORT_SYMBOL vmlinux 0x23c574d6 vfs_rename +EXPORT_SYMBOL vmlinux 0x23c8f257 slhc_uncompress +EXPORT_SYMBOL vmlinux 0x23c9891c kstrtoint_from_user +EXPORT_SYMBOL vmlinux 0x23dd2be3 tcp_hashinfo +EXPORT_SYMBOL vmlinux 0x23fd3028 vmalloc_node +EXPORT_SYMBOL vmlinux 0x23ff3913 sock_dequeue_err_skb +EXPORT_SYMBOL vmlinux 0x2401811f thaw_super +EXPORT_SYMBOL vmlinux 0x241549d9 forget_all_cached_acls +EXPORT_SYMBOL vmlinux 0x24212d86 __frontswap_invalidate_page +EXPORT_SYMBOL vmlinux 0x2436fea9 rtmsg_ifinfo +EXPORT_SYMBOL vmlinux 0x24428be5 strncpy_from_user +EXPORT_SYMBOL vmlinux 0x24554b35 try_wait_for_completion +EXPORT_SYMBOL vmlinux 0x2459bbcc console_set_on_cmdline +EXPORT_SYMBOL vmlinux 0x2482e688 vsprintf +EXPORT_SYMBOL vmlinux 0x2484adc3 __kfifo_to_user_r +EXPORT_SYMBOL vmlinux 0x249acb07 loop_backing_file +EXPORT_SYMBOL vmlinux 0x24a14267 scsi_unregister +EXPORT_SYMBOL vmlinux 0x24f5760e dmam_declare_coherent_memory +EXPORT_SYMBOL vmlinux 0x24fdac79 wake_bit_function +EXPORT_SYMBOL vmlinux 0x25277497 rfkill_register +EXPORT_SYMBOL vmlinux 0x2545abaf block_truncate_page +EXPORT_SYMBOL vmlinux 0x255bb072 change_bit +EXPORT_SYMBOL vmlinux 0x2570a138 reservation_seqcount_string +EXPORT_SYMBOL vmlinux 0x25798657 input_set_keycode +EXPORT_SYMBOL vmlinux 0x25805011 nd_device_register +EXPORT_SYMBOL vmlinux 0x25820c64 fs_overflowuid +EXPORT_SYMBOL vmlinux 0x25ac033d ilookup +EXPORT_SYMBOL vmlinux 0x25ad9738 register_shrinker +EXPORT_SYMBOL vmlinux 0x25da8321 inet_dev_addr_type +EXPORT_SYMBOL vmlinux 0x25e8ed29 sg_nents_for_len +EXPORT_SYMBOL vmlinux 0x25e9d4bd resource_list_free +EXPORT_SYMBOL vmlinux 0x25fba9b4 pci_platform_rom +EXPORT_SYMBOL vmlinux 0x260bed31 dma_async_tx_descriptor_init +EXPORT_SYMBOL vmlinux 0x263beb75 ecryptfs_get_versions +EXPORT_SYMBOL vmlinux 0x2650d835 sysctl_ip_early_demux +EXPORT_SYMBOL vmlinux 0x2651f201 netpoll_send_udp +EXPORT_SYMBOL vmlinux 0x26595736 fasync_helper +EXPORT_SYMBOL vmlinux 0x2665d53a key_create_or_update +EXPORT_SYMBOL vmlinux 0x267c4b5b genphy_config_init +EXPORT_SYMBOL vmlinux 0x268e9510 bitmap_close_sync +EXPORT_SYMBOL vmlinux 0x26a09691 generic_file_direct_write +EXPORT_SYMBOL vmlinux 0x26a67afb put_page +EXPORT_SYMBOL vmlinux 0x26b0d20d skb_free_datagram +EXPORT_SYMBOL vmlinux 0x26d70890 tcf_register_action +EXPORT_SYMBOL vmlinux 0x26dccad2 led_blink_set_oneshot +EXPORT_SYMBOL vmlinux 0x26dcec9a commit_creds +EXPORT_SYMBOL vmlinux 0x26e76fb8 sysctl_udp_wmem_min +EXPORT_SYMBOL vmlinux 0x26f08bd8 rtnl_set_sk_err +EXPORT_SYMBOL vmlinux 0x26f3e51a __devm_request_region +EXPORT_SYMBOL vmlinux 0x27034a8d simple_lookup +EXPORT_SYMBOL vmlinux 0x2708c1f4 vga_tryget +EXPORT_SYMBOL vmlinux 0x27150113 ipv6_sock_mc_join +EXPORT_SYMBOL vmlinux 0x271b83fe skb_copy +EXPORT_SYMBOL vmlinux 0x271cba95 acpi_bus_private_data_handler +EXPORT_SYMBOL vmlinux 0x2724ba66 __ioremap +EXPORT_SYMBOL vmlinux 0x2735b69c tcp_rcv_state_process +EXPORT_SYMBOL vmlinux 0x273a82e1 neigh_proc_dointvec_ms_jiffies +EXPORT_SYMBOL vmlinux 0x273d6880 __sk_backlog_rcv +EXPORT_SYMBOL vmlinux 0x274d08dc __kfifo_dma_out_prepare +EXPORT_SYMBOL vmlinux 0x2756dacf netif_skb_features +EXPORT_SYMBOL vmlinux 0x2760b597 sock_no_shutdown +EXPORT_SYMBOL vmlinux 0x27756fd2 tcp_splice_read +EXPORT_SYMBOL vmlinux 0x27864d57 memparse +EXPORT_SYMBOL vmlinux 0x27866435 security_xfrm_state_alloc +EXPORT_SYMBOL vmlinux 0x279bae0f flow_get_u32_dst +EXPORT_SYMBOL vmlinux 0x27ae7d0c ec_transaction +EXPORT_SYMBOL vmlinux 0x27b16f18 pm_vt_switch_unregister +EXPORT_SYMBOL vmlinux 0x27b25c31 clocksource_unregister +EXPORT_SYMBOL vmlinux 0x27bbf221 disable_irq_nosync +EXPORT_SYMBOL vmlinux 0x27d58944 acpi_get_hp_hw_control_from_firmware +EXPORT_SYMBOL vmlinux 0x27e1a049 printk +EXPORT_SYMBOL vmlinux 0x27f54c67 md_error +EXPORT_SYMBOL vmlinux 0x281823c5 __kfifo_out_peek +EXPORT_SYMBOL vmlinux 0x282bd7e9 param_ops_charp +EXPORT_SYMBOL vmlinux 0x28318305 snprintf +EXPORT_SYMBOL vmlinux 0x283b8021 sk_filter +EXPORT_SYMBOL vmlinux 0x283ea672 vga_put +EXPORT_SYMBOL vmlinux 0x2895f143 dev_change_carrier +EXPORT_SYMBOL vmlinux 0x289b0fa6 pcie_set_readrq +EXPORT_SYMBOL vmlinux 0x289c61c7 __set_page_dirty_nobuffers +EXPORT_SYMBOL vmlinux 0x28a2b29f radix_tree_range_tag_if_tagged +EXPORT_SYMBOL vmlinux 0x28a2ed02 scsi_build_sense_buffer +EXPORT_SYMBOL vmlinux 0x28abfe6e scsi_kmap_atomic_sg +EXPORT_SYMBOL vmlinux 0x28c347fd scsi_verify_blk_ioctl +EXPORT_SYMBOL vmlinux 0x28d7ffea lg_local_unlock +EXPORT_SYMBOL vmlinux 0x28d95c5d udplite_prot +EXPORT_SYMBOL vmlinux 0x28e5ca90 udp_flush_pending_frames +EXPORT_SYMBOL vmlinux 0x28f0ec64 elevator_change +EXPORT_SYMBOL vmlinux 0x2918ca60 md_integrity_add_rdev +EXPORT_SYMBOL vmlinux 0x291ba05d udplite_table +EXPORT_SYMBOL vmlinux 0x294c9174 devm_devfreq_register_opp_notifier +EXPORT_SYMBOL vmlinux 0x29537c9e alloc_chrdev_region +EXPORT_SYMBOL vmlinux 0x2980dd82 uart_match_port +EXPORT_SYMBOL vmlinux 0x29b83a63 sk_stream_error +EXPORT_SYMBOL vmlinux 0x29d08c6f inet_csk_delete_keepalive_timer +EXPORT_SYMBOL vmlinux 0x29dd7e55 eth_mac_addr +EXPORT_SYMBOL vmlinux 0x29ec894c blkdev_get_by_dev +EXPORT_SYMBOL vmlinux 0x29fcc0fc remove_arg_zero +EXPORT_SYMBOL vmlinux 0x2a010f93 swiotlb_alloc_coherent +EXPORT_SYMBOL vmlinux 0x2a0b8959 vme_bus_type +EXPORT_SYMBOL vmlinux 0x2a303d4d check_signature +EXPORT_SYMBOL vmlinux 0x2a32ea45 dquot_quotactl_sysfile_ops +EXPORT_SYMBOL vmlinux 0x2a37d074 dma_pool_free +EXPORT_SYMBOL vmlinux 0x2a3d5650 xfrm_input +EXPORT_SYMBOL vmlinux 0x2a532e14 capable_wrt_inode_uidgid +EXPORT_SYMBOL vmlinux 0x2a5e850c ata_port_printk +EXPORT_SYMBOL vmlinux 0x2a7258a2 napi_get_frags +EXPORT_SYMBOL vmlinux 0x2a808a14 param_ops_string +EXPORT_SYMBOL vmlinux 0x2aa1ad41 _raw_write_lock_irq +EXPORT_SYMBOL vmlinux 0x2aad35de mb_cache_destroy +EXPORT_SYMBOL vmlinux 0x2ab63241 backlight_device_unregister +EXPORT_SYMBOL vmlinux 0x2ab73beb submit_bh +EXPORT_SYMBOL vmlinux 0x2ac82770 d_set_fallthru +EXPORT_SYMBOL vmlinux 0x2acf0feb vfs_fstat +EXPORT_SYMBOL vmlinux 0x2ad0ee53 ip6_find_1stfragopt +EXPORT_SYMBOL vmlinux 0x2addae08 pci_find_parent_resource +EXPORT_SYMBOL vmlinux 0x2aefcfb8 pagecache_write_end +EXPORT_SYMBOL vmlinux 0x2afa7652 blkdev_issue_flush +EXPORT_SYMBOL vmlinux 0x2b0105d5 __napi_complete +EXPORT_SYMBOL vmlinux 0x2b0ba2b0 scsi_sense_desc_find +EXPORT_SYMBOL vmlinux 0x2b2ce78b kstrtos8 +EXPORT_SYMBOL vmlinux 0x2b372b01 finish_open +EXPORT_SYMBOL vmlinux 0x2b395832 udp_lib_getsockopt +EXPORT_SYMBOL vmlinux 0x2b466496 param_get_long +EXPORT_SYMBOL vmlinux 0x2b82be49 fbcon_set_tileops +EXPORT_SYMBOL vmlinux 0x2b9a0625 dcb_ieee_setapp +EXPORT_SYMBOL vmlinux 0x2b9da7a4 genl_lock +EXPORT_SYMBOL vmlinux 0x2ba707a8 sysctl_tcp_low_latency +EXPORT_SYMBOL vmlinux 0x2bb55d6e acpi_remove_notify_handler +EXPORT_SYMBOL vmlinux 0x2bdcac79 dcache_dir_close +EXPORT_SYMBOL vmlinux 0x2be0f12d dql_completed +EXPORT_SYMBOL vmlinux 0x2be933ad ipv6_chk_custom_prefix +EXPORT_SYMBOL vmlinux 0x2beade8e uart_suspend_port +EXPORT_SYMBOL vmlinux 0x2bf3b5a6 kernel_accept +EXPORT_SYMBOL vmlinux 0x2bf68639 fifo_set_limit +EXPORT_SYMBOL vmlinux 0x2bfeb410 acpi_get_handle +EXPORT_SYMBOL vmlinux 0x2bffed9d inet_getname +EXPORT_SYMBOL vmlinux 0x2c13a1ca of_mm_gpiochip_add +EXPORT_SYMBOL vmlinux 0x2c233de9 vme_slave_request +EXPORT_SYMBOL vmlinux 0x2c256e1f input_scancode_to_scalar +EXPORT_SYMBOL vmlinux 0x2c27c9ca __blk_end_request_all +EXPORT_SYMBOL vmlinux 0x2c400ed7 register_sysctl_table +EXPORT_SYMBOL vmlinux 0x2c51e021 xfrm_user_policy +EXPORT_SYMBOL vmlinux 0x2c6c64a8 cdev_del +EXPORT_SYMBOL vmlinux 0x2c900d91 cpufreq_put_global_kobject +EXPORT_SYMBOL vmlinux 0x2cb27fcb scsi_report_opcode +EXPORT_SYMBOL vmlinux 0x2cc9990b __tcf_hash_release +EXPORT_SYMBOL vmlinux 0x2ce71822 __dquot_free_space +EXPORT_SYMBOL vmlinux 0x2cef12a8 ip_options_rcv_srr +EXPORT_SYMBOL vmlinux 0x2cefd881 ps2_drain +EXPORT_SYMBOL vmlinux 0x2cf73cb7 kstrtoll_from_user +EXPORT_SYMBOL vmlinux 0x2d076301 jbd2_journal_forget +EXPORT_SYMBOL vmlinux 0x2d140a58 genl_unlock +EXPORT_SYMBOL vmlinux 0x2d2deca2 current_fs_time +EXPORT_SYMBOL vmlinux 0x2d30596c from_kqid_munged +EXPORT_SYMBOL vmlinux 0x2d3385d3 system_wq +EXPORT_SYMBOL vmlinux 0x2d41219c md_write_start +EXPORT_SYMBOL vmlinux 0x2d4620f5 of_find_all_nodes +EXPORT_SYMBOL vmlinux 0x2d49730b set_create_files_as +EXPORT_SYMBOL vmlinux 0x2d6ee592 genphy_read_status +EXPORT_SYMBOL vmlinux 0x2d7fc9a6 max8925_bulk_write +EXPORT_SYMBOL vmlinux 0x2d87d797 pci_request_regions_exclusive +EXPORT_SYMBOL vmlinux 0x2d9061c4 bdi_register_dev +EXPORT_SYMBOL vmlinux 0x2d9f004b udp_ioctl +EXPORT_SYMBOL vmlinux 0x2da7ff50 udp_set_csum +EXPORT_SYMBOL vmlinux 0x2dc8e0de of_translate_address +EXPORT_SYMBOL vmlinux 0x2dce2f1c __irq_regs +EXPORT_SYMBOL vmlinux 0x2dd9a36b flex_array_shrink +EXPORT_SYMBOL vmlinux 0x2dded563 kobject_set_name +EXPORT_SYMBOL vmlinux 0x2de1327b bit_waitqueue +EXPORT_SYMBOL vmlinux 0x2deda4a1 security_sk_classify_flow +EXPORT_SYMBOL vmlinux 0x2dedc4c2 acpi_format_exception +EXPORT_SYMBOL vmlinux 0x2e0d2f7f queue_work_on +EXPORT_SYMBOL vmlinux 0x2e0ecbe0 freezing_slow_path +EXPORT_SYMBOL vmlinux 0x2e1ca751 clk_put +EXPORT_SYMBOL vmlinux 0x2e22afe5 xfrm_register_type +EXPORT_SYMBOL vmlinux 0x2e2b40d2 strncat +EXPORT_SYMBOL vmlinux 0x2e2ce9e0 sysctl_tcp_syncookies +EXPORT_SYMBOL vmlinux 0x2e354756 input_mt_destroy_slots +EXPORT_SYMBOL vmlinux 0x2e6bd450 input_grab_device +EXPORT_SYMBOL vmlinux 0x2e71adbd inet_csk_destroy_sock +EXPORT_SYMBOL vmlinux 0x2e7be112 _raw_read_lock_irqsave +EXPORT_SYMBOL vmlinux 0x2ea4c1c9 lg_global_unlock +EXPORT_SYMBOL vmlinux 0x2eb8d6ef tcp_get_cookie_sock +EXPORT_SYMBOL vmlinux 0x2eca77ec ps2_sendbyte +EXPORT_SYMBOL vmlinux 0x2ed87176 tty_name +EXPORT_SYMBOL vmlinux 0x2ef63ad6 scsi_dev_info_list_del_keyed +EXPORT_SYMBOL vmlinux 0x2efbe28a tty_hangup +EXPORT_SYMBOL vmlinux 0x2f03fc4b security_secmark_refcount_inc +EXPORT_SYMBOL vmlinux 0x2f064b55 allocate_resource +EXPORT_SYMBOL vmlinux 0x2f13a0cf vfs_readv +EXPORT_SYMBOL vmlinux 0x2f273bdc blk_integrity_compare +EXPORT_SYMBOL vmlinux 0x2f2a4a9d vfs_path_lookup +EXPORT_SYMBOL vmlinux 0x2f2d51ae i2c_smbus_read_i2c_block_data +EXPORT_SYMBOL vmlinux 0x2f384db3 acpi_is_video_device +EXPORT_SYMBOL vmlinux 0x2f3857e2 _raw_write_lock_irqsave +EXPORT_SYMBOL vmlinux 0x2f41d433 mipi_dsi_generic_read +EXPORT_SYMBOL vmlinux 0x2f4284fa tcp_child_process +EXPORT_SYMBOL vmlinux 0x2f463da1 __alloc_page_frag +EXPORT_SYMBOL vmlinux 0x2f4ade49 md_reap_sync_thread +EXPORT_SYMBOL vmlinux 0x2f51d5db mmc_calc_max_discard +EXPORT_SYMBOL vmlinux 0x2f596200 scm_detach_fds +EXPORT_SYMBOL vmlinux 0x2f5f2a57 rps_sock_flow_table +EXPORT_SYMBOL vmlinux 0x2f7abd06 __netlink_kernel_create +EXPORT_SYMBOL vmlinux 0x2f7c06a8 skb_insert +EXPORT_SYMBOL vmlinux 0x2f84992d sg_alloc_table_from_pages +EXPORT_SYMBOL vmlinux 0x2f8bbf79 pci_wake_from_d3 +EXPORT_SYMBOL vmlinux 0x2f9984b1 read_cache_page +EXPORT_SYMBOL vmlinux 0x2f9db4df mb_cache_entry_insert +EXPORT_SYMBOL vmlinux 0x2fac754f netdev_lower_get_next_private_rcu +EXPORT_SYMBOL vmlinux 0x2fb2fbdb iov_iter_bvec +EXPORT_SYMBOL vmlinux 0x2fb6de5d add_device_randomness +EXPORT_SYMBOL vmlinux 0x2fbd44ef param_ops_ushort +EXPORT_SYMBOL vmlinux 0x2fc001fa fb_validate_mode +EXPORT_SYMBOL vmlinux 0x2fe252cc unregister_inet6addr_notifier +EXPORT_SYMBOL vmlinux 0x2fe3ed43 generic_ro_fops +EXPORT_SYMBOL vmlinux 0x2fe95acf cpufreq_power_cooling_register +EXPORT_SYMBOL vmlinux 0x2ff063b5 acpi_get_name +EXPORT_SYMBOL vmlinux 0x2ff81859 audit_log +EXPORT_SYMBOL vmlinux 0x2ff957cb scsi_register_interface +EXPORT_SYMBOL vmlinux 0x300ba36d neigh_table_clear +EXPORT_SYMBOL vmlinux 0x300d9209 skb_kill_datagram +EXPORT_SYMBOL vmlinux 0x3010a2e7 pci_bus_add_devices +EXPORT_SYMBOL vmlinux 0x30186ef2 __dax_fault +EXPORT_SYMBOL vmlinux 0x3024503f scsi_change_queue_depth +EXPORT_SYMBOL vmlinux 0x302e026b gnet_stats_start_copy_compat +EXPORT_SYMBOL vmlinux 0x303041c6 udp_flow_hashrnd +EXPORT_SYMBOL vmlinux 0x304358cd dev_set_mtu +EXPORT_SYMBOL vmlinux 0x30439c20 locks_mandatory_area +EXPORT_SYMBOL vmlinux 0x304ec72b _raw_write_trylock +EXPORT_SYMBOL vmlinux 0x3050a7ff netif_set_real_num_rx_queues +EXPORT_SYMBOL vmlinux 0x305cec12 _raw_spin_trylock +EXPORT_SYMBOL vmlinux 0x307c2fd0 generic_check_addressable +EXPORT_SYMBOL vmlinux 0x309323cc register_netdevice +EXPORT_SYMBOL vmlinux 0x3096be16 names_cachep +EXPORT_SYMBOL vmlinux 0x30a80826 __kfifo_from_user +EXPORT_SYMBOL vmlinux 0x30ac622f netdev_state_change +EXPORT_SYMBOL vmlinux 0x30adb426 uart_get_divisor +EXPORT_SYMBOL vmlinux 0x30c7e030 kernel_sendmsg +EXPORT_SYMBOL vmlinux 0x30cd6c80 serio_unregister_child_port +EXPORT_SYMBOL vmlinux 0x30df1ec1 serial8250_do_set_termios +EXPORT_SYMBOL vmlinux 0x30e74134 tty_termios_copy_hw +EXPORT_SYMBOL vmlinux 0x30f35d8a md_update_sb +EXPORT_SYMBOL vmlinux 0x31014e1c inet6_unregister_protosw +EXPORT_SYMBOL vmlinux 0x3102d70b frontswap_curr_pages +EXPORT_SYMBOL vmlinux 0x310aaed1 blk_rq_unmap_user +EXPORT_SYMBOL vmlinux 0x31197d0c fib_default_rule_pref +EXPORT_SYMBOL vmlinux 0x31411b2f peernet2id_alloc +EXPORT_SYMBOL vmlinux 0x3145216f pci_dev_present +EXPORT_SYMBOL vmlinux 0x3147857d default_red +EXPORT_SYMBOL vmlinux 0x31595680 tcp_v4_mtu_reduced +EXPORT_SYMBOL vmlinux 0x316e2e30 tty_unlock +EXPORT_SYMBOL vmlinux 0x3171d5d0 input_unregister_handler +EXPORT_SYMBOL vmlinux 0x3174bd79 bitmap_clear +EXPORT_SYMBOL vmlinux 0x3174f202 update_region +EXPORT_SYMBOL vmlinux 0x319c5f7d sock_no_getsockopt +EXPORT_SYMBOL vmlinux 0x319e0726 __tracepoint_kmalloc +EXPORT_SYMBOL vmlinux 0x31a17304 xfrm6_rcv +EXPORT_SYMBOL vmlinux 0x31ae5352 input_close_device +EXPORT_SYMBOL vmlinux 0x31b235f4 security_path_rename +EXPORT_SYMBOL vmlinux 0x31bc49d6 blk_queue_update_dma_alignment +EXPORT_SYMBOL vmlinux 0x31d97135 param_set_ulong +EXPORT_SYMBOL vmlinux 0x31db3198 out_of_line_wait_on_bit +EXPORT_SYMBOL vmlinux 0x32033720 devfreq_add_governor +EXPORT_SYMBOL vmlinux 0x3209a397 page_zero_new_buffers +EXPORT_SYMBOL vmlinux 0x320ab600 mipi_dsi_dcs_nop +EXPORT_SYMBOL vmlinux 0x3222eb0f t10_pi_type1_ip +EXPORT_SYMBOL vmlinux 0x3237f6ed serio_close +EXPORT_SYMBOL vmlinux 0x3238ac7a devm_gpiod_put +EXPORT_SYMBOL vmlinux 0x324b3877 up +EXPORT_SYMBOL vmlinux 0x3261b9fa iov_iter_npages +EXPORT_SYMBOL vmlinux 0x326a14c6 jbd2_journal_start +EXPORT_SYMBOL vmlinux 0x328f24b3 param_set_int +EXPORT_SYMBOL vmlinux 0x32b15a3a mdiobus_write +EXPORT_SYMBOL vmlinux 0x32b4a9aa ndo_dflt_fdb_add +EXPORT_SYMBOL vmlinux 0x32c5a589 netdev_has_upper_dev +EXPORT_SYMBOL vmlinux 0x32c5d02e blk_mq_init_allocated_queue +EXPORT_SYMBOL vmlinux 0x32d37486 neigh_sysctl_unregister +EXPORT_SYMBOL vmlinux 0x32db1aae skb_pull +EXPORT_SYMBOL vmlinux 0x32e6f1a0 acpi_video_backlight_string +EXPORT_SYMBOL vmlinux 0x32f72d29 shrink_dcache_sb +EXPORT_SYMBOL vmlinux 0x3303e177 sync_blockdev +EXPORT_SYMBOL vmlinux 0x33065516 param_ops_bool +EXPORT_SYMBOL vmlinux 0x332e737d inet6_unregister_icmp_sender +EXPORT_SYMBOL vmlinux 0x333cb37c __kfifo_dma_out_prepare_r +EXPORT_SYMBOL vmlinux 0x3362b699 pm860x_page_bulk_read +EXPORT_SYMBOL vmlinux 0x339b28f2 inet6_release +EXPORT_SYMBOL vmlinux 0x339cbf08 xfrm6_protocol_deregister +EXPORT_SYMBOL vmlinux 0x33b981af jbd2_journal_set_triggers +EXPORT_SYMBOL vmlinux 0x33c00ba6 generic_error_remove_page +EXPORT_SYMBOL vmlinux 0x33c7435c prandom_u32_state +EXPORT_SYMBOL vmlinux 0x33d11950 seq_putc +EXPORT_SYMBOL vmlinux 0x33d3c530 zerocopy_sg_from_iter +EXPORT_SYMBOL vmlinux 0x33f0768c cpufreq_quick_get_max +EXPORT_SYMBOL vmlinux 0x33fadd00 dev_open +EXPORT_SYMBOL vmlinux 0x33fbb735 cros_ec_prepare_tx +EXPORT_SYMBOL vmlinux 0x33fc92da iterate_dir +EXPORT_SYMBOL vmlinux 0x33fcf44a __kfifo_out_r +EXPORT_SYMBOL vmlinux 0x34184afe current_kernel_time +EXPORT_SYMBOL vmlinux 0x342f7734 dmam_alloc_noncoherent +EXPORT_SYMBOL vmlinux 0x3449e297 module_refcount +EXPORT_SYMBOL vmlinux 0x34558763 devm_free_irq +EXPORT_SYMBOL vmlinux 0x3465caa3 cpu_maps_update_begin +EXPORT_SYMBOL vmlinux 0x3467aa84 bio_clone_fast +EXPORT_SYMBOL vmlinux 0x347013de nla_validate +EXPORT_SYMBOL vmlinux 0x347d756b nd_btt_probe +EXPORT_SYMBOL vmlinux 0x347ff6ca pm8606_osc_enable +EXPORT_SYMBOL vmlinux 0x348d577a elv_rb_former_request +EXPORT_SYMBOL vmlinux 0x34964ad0 neigh_event_ns +EXPORT_SYMBOL vmlinux 0x349cba85 strchr +EXPORT_SYMBOL vmlinux 0x34b16a32 swiotlb_sync_single_for_cpu +EXPORT_SYMBOL vmlinux 0x34cab81b locks_init_lock +EXPORT_SYMBOL vmlinux 0x34cb68b8 __free_pages +EXPORT_SYMBOL vmlinux 0x34ed0830 check_disk_change +EXPORT_SYMBOL vmlinux 0x34f3484e security_tun_dev_attach_queue +EXPORT_SYMBOL vmlinux 0x3517383e register_reboot_notifier +EXPORT_SYMBOL vmlinux 0x351cec76 vme_dma_list_free +EXPORT_SYMBOL vmlinux 0x352f3435 xfrm_state_flush +EXPORT_SYMBOL vmlinux 0x3531e0ec skb_tx_error +EXPORT_SYMBOL vmlinux 0x3539f11b match_strlcpy +EXPORT_SYMBOL vmlinux 0x353e21e3 acpi_bios_warning +EXPORT_SYMBOL vmlinux 0x353ee581 phy_read_mmd_indirect +EXPORT_SYMBOL vmlinux 0x3542cfe0 alloc_fcdev +EXPORT_SYMBOL vmlinux 0x354310d3 empty_zero_page +EXPORT_SYMBOL vmlinux 0x356461c8 rtc_time64_to_tm +EXPORT_SYMBOL vmlinux 0x358a1ef3 inet6_register_protosw +EXPORT_SYMBOL vmlinux 0x35953e79 add_to_page_cache_locked +EXPORT_SYMBOL vmlinux 0x3598c901 register_quota_format +EXPORT_SYMBOL vmlinux 0x359fdde3 vfs_read +EXPORT_SYMBOL vmlinux 0x35a88f28 zlib_inflateInit2 +EXPORT_SYMBOL vmlinux 0x35b1df0f pcix_set_mmrbc +EXPORT_SYMBOL vmlinux 0x35b6cc22 hdmi_infoframe_log +EXPORT_SYMBOL vmlinux 0x35c670bf jbd2_journal_ack_err +EXPORT_SYMBOL vmlinux 0x35cd948a serial8250_do_pm +EXPORT_SYMBOL vmlinux 0x35d128bd jbd2_log_wait_commit +EXPORT_SYMBOL vmlinux 0x35d3177e __nlmsg_put +EXPORT_SYMBOL vmlinux 0x35e70775 ppp_register_compressor +EXPORT_SYMBOL vmlinux 0x35efffd5 netif_wake_subqueue +EXPORT_SYMBOL vmlinux 0x35f53d24 scsi_device_lookup +EXPORT_SYMBOL vmlinux 0x360b1afe probe_irq_mask +EXPORT_SYMBOL vmlinux 0x360d9284 scsi_register +EXPORT_SYMBOL vmlinux 0x360f8f8a __cond_resched_lock +EXPORT_SYMBOL vmlinux 0x360ff19f down +EXPORT_SYMBOL vmlinux 0x3632a72d msm_pinctrl_remove +EXPORT_SYMBOL vmlinux 0x363dfe24 ndo_dflt_fdb_dump +EXPORT_SYMBOL vmlinux 0x3650bb1e eth_gro_receive +EXPORT_SYMBOL vmlinux 0x3664013d ppp_output_wakeup +EXPORT_SYMBOL vmlinux 0x36802159 tty_port_close_end +EXPORT_SYMBOL vmlinux 0x368cae18 page_waitqueue +EXPORT_SYMBOL vmlinux 0x369e1115 kstrtou8_from_user +EXPORT_SYMBOL vmlinux 0x36bd681b groups_alloc +EXPORT_SYMBOL vmlinux 0x36bdaf7f blk_dump_rq_flags +EXPORT_SYMBOL vmlinux 0x37109489 tty_port_tty_set +EXPORT_SYMBOL vmlinux 0x3721bb0e __hw_addr_sync_dev +EXPORT_SYMBOL vmlinux 0x3721c38f tcf_action_dump_1 +EXPORT_SYMBOL vmlinux 0x3744cf36 vmalloc_to_pfn +EXPORT_SYMBOL vmlinux 0x3753e79e param_get_uint +EXPORT_SYMBOL vmlinux 0x37623238 __insert_inode_hash +EXPORT_SYMBOL vmlinux 0x377cb324 phy_device_free +EXPORT_SYMBOL vmlinux 0x37a7a266 dm_kcopyd_copy +EXPORT_SYMBOL vmlinux 0x37a84bce blk_mq_start_stopped_hw_queues +EXPORT_SYMBOL vmlinux 0x37af3190 dm_table_run_md_queue_async +EXPORT_SYMBOL vmlinux 0x37befc70 jiffies_to_msecs +EXPORT_SYMBOL vmlinux 0x37bf13c1 ipv6_getsockopt +EXPORT_SYMBOL vmlinux 0x37d55032 __qdisc_calculate_pkt_len +EXPORT_SYMBOL vmlinux 0x37db8f19 dmi_get_date +EXPORT_SYMBOL vmlinux 0x37dc700c iov_iter_kvec +EXPORT_SYMBOL vmlinux 0x380ee87a abort_exclusive_wait +EXPORT_SYMBOL vmlinux 0x381a798a setup_max_cpus +EXPORT_SYMBOL vmlinux 0x381df056 ata_dev_printk +EXPORT_SYMBOL vmlinux 0x381fc0d8 flush_signals +EXPORT_SYMBOL vmlinux 0x38560c36 netif_set_real_num_tx_queues +EXPORT_SYMBOL vmlinux 0x3866b524 kmem_cache_alloc +EXPORT_SYMBOL vmlinux 0x387946bc pcibios_resource_to_bus +EXPORT_SYMBOL vmlinux 0x38869d88 kstat +EXPORT_SYMBOL vmlinux 0x38a71b7e pci_free_resource_list +EXPORT_SYMBOL vmlinux 0x38a9f7c5 in6addr_loopback +EXPORT_SYMBOL vmlinux 0x38af23d7 blk_limits_max_hw_sectors +EXPORT_SYMBOL vmlinux 0x38c8b7d4 pci_bus_write_config_byte +EXPORT_SYMBOL vmlinux 0x38cc21ab neigh_table_init +EXPORT_SYMBOL vmlinux 0x38cde695 amba_driver_register +EXPORT_SYMBOL vmlinux 0x38ee1e8f mmc_can_erase +EXPORT_SYMBOL vmlinux 0x38f0e85a d_instantiate_unique +EXPORT_SYMBOL vmlinux 0x38fd7f94 of_graph_get_remote_port_parent +EXPORT_SYMBOL vmlinux 0x39015483 dquot_drop +EXPORT_SYMBOL vmlinux 0x3911b321 proc_set_size +EXPORT_SYMBOL vmlinux 0x3939f8f0 rfkill_pause_polling +EXPORT_SYMBOL vmlinux 0x393d4de9 crc32_le +EXPORT_SYMBOL vmlinux 0x39461d6a in_egroup_p +EXPORT_SYMBOL vmlinux 0x394c4b0e elv_rb_del +EXPORT_SYMBOL vmlinux 0x394e1c55 truncate_inode_pages_final +EXPORT_SYMBOL vmlinux 0x395439e5 compat_nf_setsockopt +EXPORT_SYMBOL vmlinux 0x3955fcf6 __kfifo_in_r +EXPORT_SYMBOL vmlinux 0x3956ec98 filp_open +EXPORT_SYMBOL vmlinux 0x398b041d sock_i_uid +EXPORT_SYMBOL vmlinux 0x3995189d request_key +EXPORT_SYMBOL vmlinux 0x39991865 icmp_global_allow +EXPORT_SYMBOL vmlinux 0x399ad043 __kfifo_dma_out_finish_r +EXPORT_SYMBOL vmlinux 0x39a0be56 __xfrm_state_destroy +EXPORT_SYMBOL vmlinux 0x39b52d19 __bitmap_and +EXPORT_SYMBOL vmlinux 0x39f22d50 do_SAK +EXPORT_SYMBOL vmlinux 0x3a6baed9 twl6040_get_sysclk +EXPORT_SYMBOL vmlinux 0x3a99cfe4 pci_release_selected_regions +EXPORT_SYMBOL vmlinux 0x3a9b6fb9 blk_unregister_region +EXPORT_SYMBOL vmlinux 0x3ab41b25 __copy_in_user +EXPORT_SYMBOL vmlinux 0x3b25bd5b gnet_stats_finish_copy +EXPORT_SYMBOL vmlinux 0x3b300948 percpu_counter_set +EXPORT_SYMBOL vmlinux 0x3b644591 __bitmap_shift_left +EXPORT_SYMBOL vmlinux 0x3b99bdb0 make_kprojid +EXPORT_SYMBOL vmlinux 0x3b9c6842 elv_register_queue +EXPORT_SYMBOL vmlinux 0x3b9ffb8b ip_mc_check_igmp +EXPORT_SYMBOL vmlinux 0x3bb07125 abx500_register_ops +EXPORT_SYMBOL vmlinux 0x3bb9d0b8 dentry_needs_remove_privs +EXPORT_SYMBOL vmlinux 0x3bbae659 dquot_quota_on_mount +EXPORT_SYMBOL vmlinux 0x3bd52f63 mapping_tagged +EXPORT_SYMBOL vmlinux 0x3bfcf6c1 twl6040_reg_write +EXPORT_SYMBOL vmlinux 0x3bfdda60 scsi_host_put +EXPORT_SYMBOL vmlinux 0x3c2663ed kernel_getpeername +EXPORT_SYMBOL vmlinux 0x3c3fce39 __local_bh_enable_ip +EXPORT_SYMBOL vmlinux 0x3c483012 radix_tree_delete +EXPORT_SYMBOL vmlinux 0x3c5b9f1f pci_release_region +EXPORT_SYMBOL vmlinux 0x3c61747a mipi_dsi_detach +EXPORT_SYMBOL vmlinux 0x3c6929e7 unregister_key_type +EXPORT_SYMBOL vmlinux 0x3c80c06c kstrtoull +EXPORT_SYMBOL vmlinux 0x3c958d1d skb_get_hash_perturb +EXPORT_SYMBOL vmlinux 0x3ca11091 acpi_bus_get_status +EXPORT_SYMBOL vmlinux 0x3cafa4f9 d_find_alias +EXPORT_SYMBOL vmlinux 0x3cb8d60e pcim_iounmap_regions +EXPORT_SYMBOL vmlinux 0x3cd6e4b9 mnt_drop_write_file +EXPORT_SYMBOL vmlinux 0x3cdf5e60 dm_ratelimit_state +EXPORT_SYMBOL vmlinux 0x3ce4ca6f disable_irq +EXPORT_SYMBOL vmlinux 0x3cea78f0 of_get_next_parent +EXPORT_SYMBOL vmlinux 0x3cf0b065 pnp_register_driver +EXPORT_SYMBOL vmlinux 0x3cfae893 _raw_spin_trylock_bh +EXPORT_SYMBOL vmlinux 0x3cfc1fda skb_checksum_trimmed +EXPORT_SYMBOL vmlinux 0x3d03b46e neigh_seq_stop +EXPORT_SYMBOL vmlinux 0x3d093081 __percpu_counter_add +EXPORT_SYMBOL vmlinux 0x3d255bc2 tcp_sync_mss +EXPORT_SYMBOL vmlinux 0x3d272ef9 tcp_v4_send_check +EXPORT_SYMBOL vmlinux 0x3d2dab39 of_graph_get_next_endpoint +EXPORT_SYMBOL vmlinux 0x3d339c9d mmc_erase_group_aligned +EXPORT_SYMBOL vmlinux 0x3d52312a dst_cow_metrics_generic +EXPORT_SYMBOL vmlinux 0x3d740d6c unregister_tcf_proto_ops +EXPORT_SYMBOL vmlinux 0x3d9ee9f0 clear_page +EXPORT_SYMBOL vmlinux 0x3da58fd0 input_mt_report_pointer_emulation +EXPORT_SYMBOL vmlinux 0x3db981a5 nf_register_queue_handler +EXPORT_SYMBOL vmlinux 0x3dbf36c9 sg_copy_buffer +EXPORT_SYMBOL vmlinux 0x3dc0668f __mmc_claim_host +EXPORT_SYMBOL vmlinux 0x3dcb88a0 irq_set_handler_data +EXPORT_SYMBOL vmlinux 0x3de73942 blk_mq_abort_requeue_list +EXPORT_SYMBOL vmlinux 0x3deddcc5 get_super +EXPORT_SYMBOL vmlinux 0x3dfc897c seq_hlist_start_head +EXPORT_SYMBOL vmlinux 0x3e1d3345 on_each_cpu_mask +EXPORT_SYMBOL vmlinux 0x3e31deee bdevname +EXPORT_SYMBOL vmlinux 0x3e40f3a4 from_kgid +EXPORT_SYMBOL vmlinux 0x3e50638b simple_fill_super +EXPORT_SYMBOL vmlinux 0x3e5e5c68 devm_gpio_free +EXPORT_SYMBOL vmlinux 0x3e6470ff rtnl_link_get_net +EXPORT_SYMBOL vmlinux 0x3e6d672e zpool_register_driver +EXPORT_SYMBOL vmlinux 0x3e6ecdae kmem_cache_free +EXPORT_SYMBOL vmlinux 0x3e9110fa __hw_addr_unsync +EXPORT_SYMBOL vmlinux 0x3e95083c vme_slave_get +EXPORT_SYMBOL vmlinux 0x3e9d4c76 rtnl_configure_link +EXPORT_SYMBOL vmlinux 0x3e9d8e4e empty_aops +EXPORT_SYMBOL vmlinux 0x3ecfb458 mii_nway_restart +EXPORT_SYMBOL vmlinux 0x3f03c979 sync_filesystem +EXPORT_SYMBOL vmlinux 0x3f15c9c3 mmc_start_bkops +EXPORT_SYMBOL vmlinux 0x3f16cb6b __tcf_em_tree_match +EXPORT_SYMBOL vmlinux 0x3f1f55e0 d_path +EXPORT_SYMBOL vmlinux 0x3f3a4463 set_blocksize +EXPORT_SYMBOL vmlinux 0x3f3d900a __page_symlink +EXPORT_SYMBOL vmlinux 0x3f4547a7 put_unused_fd +EXPORT_SYMBOL vmlinux 0x3f4ab641 __brelse +EXPORT_SYMBOL vmlinux 0x3f4c12d6 put_tty_driver +EXPORT_SYMBOL vmlinux 0x3f58dd50 skb_dequeue_tail +EXPORT_SYMBOL vmlinux 0x3f63e0a1 nvdimm_revalidate_disk +EXPORT_SYMBOL vmlinux 0x3f6c1b12 jbd2_log_start_commit +EXPORT_SYMBOL vmlinux 0x3f7e8b7a dev_addr_del +EXPORT_SYMBOL vmlinux 0x3f832739 inet_listen +EXPORT_SYMBOL vmlinux 0x3f98dfc5 __cleancache_invalidate_inode +EXPORT_SYMBOL vmlinux 0x3f99b68d dma_alloc_from_coherent +EXPORT_SYMBOL vmlinux 0x3faa2d8b iterate_fd +EXPORT_SYMBOL vmlinux 0x3fba6e72 tcp_sendpage +EXPORT_SYMBOL vmlinux 0x3fd25c3f of_get_named_gpio_flags +EXPORT_SYMBOL vmlinux 0x3fe2ccbe memweight +EXPORT_SYMBOL vmlinux 0x3fe5e4a7 pcim_pin_device +EXPORT_SYMBOL vmlinux 0x3fec048f sg_next +EXPORT_SYMBOL vmlinux 0x402b5e0f ndisc_mc_map +EXPORT_SYMBOL vmlinux 0x402b8281 __request_module +EXPORT_SYMBOL vmlinux 0x40380b6d kthread_bind +EXPORT_SYMBOL vmlinux 0x4039918a clk_register_clkdev +EXPORT_SYMBOL vmlinux 0x4055722e inode_newsize_ok +EXPORT_SYMBOL vmlinux 0x405c1144 get_seconds +EXPORT_SYMBOL vmlinux 0x406682c6 __mark_inode_dirty +EXPORT_SYMBOL vmlinux 0x408c1759 debugfs_create_automount +EXPORT_SYMBOL vmlinux 0x40973662 sysctl_udp_mem +EXPORT_SYMBOL vmlinux 0x409873e3 tty_termios_baud_rate +EXPORT_SYMBOL vmlinux 0x40a27c37 scsi_dev_info_remove_list +EXPORT_SYMBOL vmlinux 0x40a80b21 ethtool_op_get_ts_info +EXPORT_SYMBOL vmlinux 0x40a9b349 vzalloc +EXPORT_SYMBOL vmlinux 0x40bd07a6 __percpu_counter_compare +EXPORT_SYMBOL vmlinux 0x40c01859 gen_pool_best_fit +EXPORT_SYMBOL vmlinux 0x40c7247c si_meminfo +EXPORT_SYMBOL vmlinux 0x40c89d46 acpi_get_table_by_index +EXPORT_SYMBOL vmlinux 0x40d04664 console_trylock +EXPORT_SYMBOL vmlinux 0x40d31309 blk_queue_unprep_rq +EXPORT_SYMBOL vmlinux 0x40d59096 unregister_restart_handler +EXPORT_SYMBOL vmlinux 0x40db266c get_thermal_instance +EXPORT_SYMBOL vmlinux 0x40db3ba0 tcp_read_sock +EXPORT_SYMBOL vmlinux 0x40f33033 posix_acl_to_xattr +EXPORT_SYMBOL vmlinux 0x4104627c netlink_set_err +EXPORT_SYMBOL vmlinux 0x4147d12b bioset_create +EXPORT_SYMBOL vmlinux 0x41482d8b strndup_user +EXPORT_SYMBOL vmlinux 0x416f745d dev_add_pack +EXPORT_SYMBOL vmlinux 0x417e3173 simple_readpage +EXPORT_SYMBOL vmlinux 0x41875866 first_ec +EXPORT_SYMBOL vmlinux 0x4188d439 neigh_rand_reach_time +EXPORT_SYMBOL vmlinux 0x41983b82 tcf_action_exec +EXPORT_SYMBOL vmlinux 0x41a05f52 nf_log_bind_pf +EXPORT_SYMBOL vmlinux 0x41a2ce6b mmc_gpio_set_cd_isr +EXPORT_SYMBOL vmlinux 0x41b2c6e0 __cleancache_put_page +EXPORT_SYMBOL vmlinux 0x41e15742 mii_check_link +EXPORT_SYMBOL vmlinux 0x41e1a24c __inode_permission +EXPORT_SYMBOL vmlinux 0x41fa7fb2 of_phy_find_device +EXPORT_SYMBOL vmlinux 0x4212852b iunique +EXPORT_SYMBOL vmlinux 0x42160169 flush_workqueue +EXPORT_SYMBOL vmlinux 0x4223601a pci_pme_capable +EXPORT_SYMBOL vmlinux 0x422e3a09 __inet_hash +EXPORT_SYMBOL vmlinux 0x4233fdfe add_disk +EXPORT_SYMBOL vmlinux 0x42350e8d ucs2_strlen +EXPORT_SYMBOL vmlinux 0x4248ae3c single_task_running +EXPORT_SYMBOL vmlinux 0x424d3620 zlib_inflateIncomp +EXPORT_SYMBOL vmlinux 0x42507752 phy_drivers_unregister +EXPORT_SYMBOL vmlinux 0x426a8ac5 cpu_active_mask +EXPORT_SYMBOL vmlinux 0x42a1b208 gen_pool_first_fit +EXPORT_SYMBOL vmlinux 0x42ae5af0 dqstats +EXPORT_SYMBOL vmlinux 0x42b7d510 clear_nlink +EXPORT_SYMBOL vmlinux 0x42deb908 __vfs_write +EXPORT_SYMBOL vmlinux 0x42e8ebe4 tcf_exts_validate +EXPORT_SYMBOL vmlinux 0x42f7841b i2c_add_adapter +EXPORT_SYMBOL vmlinux 0x4302d0eb free_pages +EXPORT_SYMBOL vmlinux 0x430a3125 xfrm_policy_destroy +EXPORT_SYMBOL vmlinux 0x4314ffab serial8250_register_8250_port +EXPORT_SYMBOL vmlinux 0x4338c696 skb_trim +EXPORT_SYMBOL vmlinux 0x434c0b11 devm_devfreq_remove_device +EXPORT_SYMBOL vmlinux 0x43512175 skb_copy_bits +EXPORT_SYMBOL vmlinux 0x4351577a fb_parse_edid +EXPORT_SYMBOL vmlinux 0x435bc120 vme_dma_list_exec +EXPORT_SYMBOL vmlinux 0x437c8076 sock_no_connect +EXPORT_SYMBOL vmlinux 0x438610bd security_tun_dev_alloc_security +EXPORT_SYMBOL vmlinux 0x43a6a4da mii_ethtool_gset +EXPORT_SYMBOL vmlinux 0x43a6b3a8 phy_mii_ioctl +EXPORT_SYMBOL vmlinux 0x43b22eca __init_rwsem +EXPORT_SYMBOL vmlinux 0x43c996fd dmam_release_declared_memory +EXPORT_SYMBOL vmlinux 0x43e773b4 set_device_ro +EXPORT_SYMBOL vmlinux 0x43f23311 dm_table_get_md +EXPORT_SYMBOL vmlinux 0x4411c503 prandom_seed +EXPORT_SYMBOL vmlinux 0x4442c6f3 bdi_setup_and_register +EXPORT_SYMBOL vmlinux 0x446dafeb nobh_writepage +EXPORT_SYMBOL vmlinux 0x4472da95 dqput +EXPORT_SYMBOL vmlinux 0x4473affe ppp_unit_number +EXPORT_SYMBOL vmlinux 0x448eac3e kmemdup +EXPORT_SYMBOL vmlinux 0x449ad0a7 memcmp +EXPORT_SYMBOL vmlinux 0x44a81d5f acpi_evaluate_object +EXPORT_SYMBOL vmlinux 0x44ac9b0c mdiobus_scan +EXPORT_SYMBOL vmlinux 0x44b1d426 __dynamic_pr_debug +EXPORT_SYMBOL vmlinux 0x44b5d018 nf_getsockopt +EXPORT_SYMBOL vmlinux 0x44e9a829 match_token +EXPORT_SYMBOL vmlinux 0x44f75697 ip_setsockopt +EXPORT_SYMBOL vmlinux 0x45081703 ec_get_handle +EXPORT_SYMBOL vmlinux 0x4511e90a dev_mc_init +EXPORT_SYMBOL vmlinux 0x45328b5f blk_queue_io_opt +EXPORT_SYMBOL vmlinux 0x45394676 ip6_xmit +EXPORT_SYMBOL vmlinux 0x453c8403 pci_msi_enabled +EXPORT_SYMBOL vmlinux 0x455d149f serio_reconnect +EXPORT_SYMBOL vmlinux 0x45773d25 blk_finish_request +EXPORT_SYMBOL vmlinux 0x45782859 inet_accept +EXPORT_SYMBOL vmlinux 0x4578f528 __kfifo_to_user +EXPORT_SYMBOL vmlinux 0x45947dcd pcie_capability_write_dword +EXPORT_SYMBOL vmlinux 0x45a55ec8 __iounmap +EXPORT_SYMBOL vmlinux 0x45a6be13 cpufreq_sysfs_remove_file +EXPORT_SYMBOL vmlinux 0x45a765cf pci_add_resource +EXPORT_SYMBOL vmlinux 0x45ba1a70 security_path_truncate +EXPORT_SYMBOL vmlinux 0x45e38936 inet_stream_connect +EXPORT_SYMBOL vmlinux 0x461ac773 kstrtol_from_user +EXPORT_SYMBOL vmlinux 0x462c660f proc_dointvec +EXPORT_SYMBOL vmlinux 0x46396aa4 of_get_property +EXPORT_SYMBOL vmlinux 0x464258ec pci_clear_mwi +EXPORT_SYMBOL vmlinux 0x4646af3a nf_log_packet +EXPORT_SYMBOL vmlinux 0x465cab34 secure_ipv6_port_ephemeral +EXPORT_SYMBOL vmlinux 0x46649cd1 vme_lm_set +EXPORT_SYMBOL vmlinux 0x4667d946 netif_tx_wake_queue +EXPORT_SYMBOL vmlinux 0x466c14a7 __delay +EXPORT_SYMBOL vmlinux 0x467b8e08 reservation_object_add_shared_fence +EXPORT_SYMBOL vmlinux 0x467caba4 node_data +EXPORT_SYMBOL vmlinux 0x467df16d netdev_rss_key_fill +EXPORT_SYMBOL vmlinux 0x46800556 input_register_handler +EXPORT_SYMBOL vmlinux 0x46acc7e9 tcp_v4_conn_request +EXPORT_SYMBOL vmlinux 0x46b15986 netdev_err +EXPORT_SYMBOL vmlinux 0x46bbeb91 init_net +EXPORT_SYMBOL vmlinux 0x46c47fb6 __node_distance +EXPORT_SYMBOL vmlinux 0x46ce64a7 kmalloc_caches +EXPORT_SYMBOL vmlinux 0x46d43f50 dquot_set_dqblk +EXPORT_SYMBOL vmlinux 0x46e19507 fget +EXPORT_SYMBOL vmlinux 0x46ee6280 netdev_crit +EXPORT_SYMBOL vmlinux 0x46feb099 dm_read_arg +EXPORT_SYMBOL vmlinux 0x4703b273 ip_check_defrag +EXPORT_SYMBOL vmlinux 0x47197972 dm_kcopyd_zero +EXPORT_SYMBOL vmlinux 0x47303e04 sk_stream_wait_memory +EXPORT_SYMBOL vmlinux 0x47315ce9 param_get_bool +EXPORT_SYMBOL vmlinux 0x47416e14 cpu_rmap_add +EXPORT_SYMBOL vmlinux 0x474f6c45 vm_insert_mixed +EXPORT_SYMBOL vmlinux 0x47580d37 vfs_fsync_range +EXPORT_SYMBOL vmlinux 0x475f010b acpi_purge_cached_objects +EXPORT_SYMBOL vmlinux 0x4774b336 param_ops_uint +EXPORT_SYMBOL vmlinux 0x477a1706 pci_stop_and_remove_bus_device +EXPORT_SYMBOL vmlinux 0x47939e0d __tasklet_hi_schedule +EXPORT_SYMBOL vmlinux 0x479c3c86 find_next_zero_bit +EXPORT_SYMBOL vmlinux 0x47ad4df1 of_mm_gpiochip_remove +EXPORT_SYMBOL vmlinux 0x47b34e98 sock_create_kern +EXPORT_SYMBOL vmlinux 0x48036e7f tty_port_raise_dtr_rts +EXPORT_SYMBOL vmlinux 0x480e2987 clkdev_add +EXPORT_SYMBOL vmlinux 0x48193639 acpi_lid_open +EXPORT_SYMBOL vmlinux 0x481b4fb5 blk_queue_max_hw_sectors +EXPORT_SYMBOL vmlinux 0x481cb9ab acpi_enter_sleep_state_prep +EXPORT_SYMBOL vmlinux 0x48292e6d ip6_route_me_harder +EXPORT_SYMBOL vmlinux 0x4829a47e memcpy +EXPORT_SYMBOL vmlinux 0x4837b10e single_open_size +EXPORT_SYMBOL vmlinux 0x4841bdee strnchr +EXPORT_SYMBOL vmlinux 0x485178c4 file_ns_capable +EXPORT_SYMBOL vmlinux 0x4859b8bb rtc_year_days +EXPORT_SYMBOL vmlinux 0x485f78f7 dentry_open +EXPORT_SYMBOL vmlinux 0x486256d4 netdev_class_create_file_ns +EXPORT_SYMBOL vmlinux 0x4866af39 blk_rq_map_kern +EXPORT_SYMBOL vmlinux 0x487dbb21 cancel_dirty_page +EXPORT_SYMBOL vmlinux 0x48894577 xen_biovec_phys_mergeable +EXPORT_SYMBOL vmlinux 0x48988db5 inet6_ioctl +EXPORT_SYMBOL vmlinux 0x48b1e096 udp_prot +EXPORT_SYMBOL vmlinux 0x48b99a13 vme_lm_free +EXPORT_SYMBOL vmlinux 0x48e2b86f t10_pi_type3_ip +EXPORT_SYMBOL vmlinux 0x48ed94ec sdev_enable_disk_events +EXPORT_SYMBOL vmlinux 0x48fafd0a devm_clk_get +EXPORT_SYMBOL vmlinux 0x48ff8f3a pcie_capability_clear_and_set_word +EXPORT_SYMBOL vmlinux 0x49045426 icmp_err_convert +EXPORT_SYMBOL vmlinux 0x490c6fda input_unregister_device +EXPORT_SYMBOL vmlinux 0x490ce9fe sock_create_lite +EXPORT_SYMBOL vmlinux 0x4914d4b5 downgrade_write +EXPORT_SYMBOL vmlinux 0x4916b69e vmalloc_to_page +EXPORT_SYMBOL vmlinux 0x494eb184 write_one_page +EXPORT_SYMBOL vmlinux 0x495c1dd4 set_page_dirty_lock +EXPORT_SYMBOL vmlinux 0x495c96f8 posix_acl_init +EXPORT_SYMBOL vmlinux 0x49603fb8 security_sb_copy_data +EXPORT_SYMBOL vmlinux 0x49664aa2 abx500_remove_ops +EXPORT_SYMBOL vmlinux 0x497ac7f5 mb_cache_shrink +EXPORT_SYMBOL vmlinux 0x4981c955 sock_no_setsockopt +EXPORT_SYMBOL vmlinux 0x49855f4e inet_csk_prepare_forced_close +EXPORT_SYMBOL vmlinux 0x49889479 generic_listxattr +EXPORT_SYMBOL vmlinux 0x49930938 idr_replace +EXPORT_SYMBOL vmlinux 0x4999e3b4 scsi_init_io +EXPORT_SYMBOL vmlinux 0x49b07aec tcp_select_initial_window +EXPORT_SYMBOL vmlinux 0x49b163b8 acpi_bus_scan +EXPORT_SYMBOL vmlinux 0x49c41bf0 skb_push +EXPORT_SYMBOL vmlinux 0x49da51b8 vlan_ioctl_set +EXPORT_SYMBOL vmlinux 0x49dd422e tcp_setsockopt +EXPORT_SYMBOL vmlinux 0x49e029c5 skb_ensure_writable +EXPORT_SYMBOL vmlinux 0x49f71442 dev_close_many +EXPORT_SYMBOL vmlinux 0x4a2349c3 fd_install +EXPORT_SYMBOL vmlinux 0x4a25ee20 blk_queue_io_min +EXPORT_SYMBOL vmlinux 0x4a273d44 pci_alloc_dev +EXPORT_SYMBOL vmlinux 0x4a36efa6 vme_lm_request +EXPORT_SYMBOL vmlinux 0x4a65e936 flow_cache_fini +EXPORT_SYMBOL vmlinux 0x4a8ba9ac pci_choose_state +EXPORT_SYMBOL vmlinux 0x4a93cd90 would_dump +EXPORT_SYMBOL vmlinux 0x4a978d93 fs_bio_set +EXPORT_SYMBOL vmlinux 0x4aa43505 devm_request_resource +EXPORT_SYMBOL vmlinux 0x4ab647c4 inode_permission +EXPORT_SYMBOL vmlinux 0x4ab8c8a2 mmc_hw_reset +EXPORT_SYMBOL vmlinux 0x4abbe3c2 vm_brk +EXPORT_SYMBOL vmlinux 0x4abce7cc vme_new_dma_list +EXPORT_SYMBOL vmlinux 0x4acce6b0 md_reload_sb +EXPORT_SYMBOL vmlinux 0x4acd93d3 release_resource +EXPORT_SYMBOL vmlinux 0x4adaa144 security_inode_permission +EXPORT_SYMBOL vmlinux 0x4af4a427 devfreq_add_device +EXPORT_SYMBOL vmlinux 0x4afe9a77 scsi_partsize +EXPORT_SYMBOL vmlinux 0x4b3afda1 nf_unregister_hooks +EXPORT_SYMBOL vmlinux 0x4b42cbea dev_mc_add_global +EXPORT_SYMBOL vmlinux 0x4b583061 con_is_bound +EXPORT_SYMBOL vmlinux 0x4b5fd49e dm_kcopyd_do_callback +EXPORT_SYMBOL vmlinux 0x4b6c6594 xfrm_policy_alloc +EXPORT_SYMBOL vmlinux 0x4b84ee7a vga_client_register +EXPORT_SYMBOL vmlinux 0x4b86b9d2 dcache_readdir +EXPORT_SYMBOL vmlinux 0x4b9ad643 xfrm_policy_byid +EXPORT_SYMBOL vmlinux 0x4baf35a7 vme_master_get +EXPORT_SYMBOL vmlinux 0x4bb862b8 security_mmap_file +EXPORT_SYMBOL vmlinux 0x4bb9e535 xfrm_sad_getinfo +EXPORT_SYMBOL vmlinux 0x4bd07a02 mmc_read_bkops_status +EXPORT_SYMBOL vmlinux 0x4bd19989 __find_get_block +EXPORT_SYMBOL vmlinux 0x4bd6c66e poll_initwait +EXPORT_SYMBOL vmlinux 0x4bda6d85 sock_no_recvmsg +EXPORT_SYMBOL vmlinux 0x4bea6fff fb_set_suspend +EXPORT_SYMBOL vmlinux 0x4bf0c65a jbd2_journal_force_commit_nested +EXPORT_SYMBOL vmlinux 0x4bf1db80 seq_escape +EXPORT_SYMBOL vmlinux 0x4c27a9d0 __lock_buffer +EXPORT_SYMBOL vmlinux 0x4c296c97 dquot_alloc_inode +EXPORT_SYMBOL vmlinux 0x4c2edba1 pci_request_selected_regions +EXPORT_SYMBOL vmlinux 0x4c346a53 kvasprintf +EXPORT_SYMBOL vmlinux 0x4c63f9f3 scsi_command_normalize_sense +EXPORT_SYMBOL vmlinux 0x4c6f9ef3 test_and_change_bit +EXPORT_SYMBOL vmlinux 0x4c8facc3 pci_scan_bus +EXPORT_SYMBOL vmlinux 0x4ca68a15 inet_csk_reqsk_queue_drop +EXPORT_SYMBOL vmlinux 0x4ca9669f scnprintf +EXPORT_SYMBOL vmlinux 0x4caab9ce request_key_with_auxdata +EXPORT_SYMBOL vmlinux 0x4cb64b26 ip_do_fragment +EXPORT_SYMBOL vmlinux 0x4cbcbc03 xfrm_unregister_mode +EXPORT_SYMBOL vmlinux 0x4cdb3178 ns_to_timeval +EXPORT_SYMBOL vmlinux 0x4ce704d3 vlan_dev_vlan_proto +EXPORT_SYMBOL vmlinux 0x4d0d163d copy_page +EXPORT_SYMBOL vmlinux 0x4d294bb4 bit_wait_io +EXPORT_SYMBOL vmlinux 0x4d2aa51d release_sock +EXPORT_SYMBOL vmlinux 0x4d493d06 release_firmware +EXPORT_SYMBOL vmlinux 0x4d56ffec swiotlb_map_sg +EXPORT_SYMBOL vmlinux 0x4d58fec5 __cleancache_invalidate_fs +EXPORT_SYMBOL vmlinux 0x4d741b9d sock_efree +EXPORT_SYMBOL vmlinux 0x4d974b9c register_sysrq_key +EXPORT_SYMBOL vmlinux 0x4d9b652b rb_erase +EXPORT_SYMBOL vmlinux 0x4da30850 ip_mc_join_group +EXPORT_SYMBOL vmlinux 0x4dcb7720 dev_addr_init +EXPORT_SYMBOL vmlinux 0x4dd1e67a fixed_phy_update_state +EXPORT_SYMBOL vmlinux 0x4de34a07 cpu_rmap_put +EXPORT_SYMBOL vmlinux 0x4df119fa __bitmap_parse +EXPORT_SYMBOL vmlinux 0x4df3675c pcim_iomap_regions_request_all +EXPORT_SYMBOL vmlinux 0x4dfb8119 sk_common_release +EXPORT_SYMBOL vmlinux 0x4e2b0225 proc_dointvec_ms_jiffies +EXPORT_SYMBOL vmlinux 0x4e3567f7 match_int +EXPORT_SYMBOL vmlinux 0x4e587a55 i2c_del_driver +EXPORT_SYMBOL vmlinux 0x4e61406c do_truncate +EXPORT_SYMBOL vmlinux 0x4e68e9be rb_next_postorder +EXPORT_SYMBOL vmlinux 0x4e6e8ea7 fg_console +EXPORT_SYMBOL vmlinux 0x4e806eb9 iw_handler_get_spy +EXPORT_SYMBOL vmlinux 0x4e81605f __alloc_skb +EXPORT_SYMBOL vmlinux 0x4e8c616c ppp_input +EXPORT_SYMBOL vmlinux 0x4e9dffb5 ip_fast_csum +EXPORT_SYMBOL vmlinux 0x4eca22a7 inet_sk_rebuild_header +EXPORT_SYMBOL vmlinux 0x4edd72f7 block_all_signals +EXPORT_SYMBOL vmlinux 0x4ee97a73 __neigh_event_send +EXPORT_SYMBOL vmlinux 0x4f1cd128 security_tun_dev_create +EXPORT_SYMBOL vmlinux 0x4f2250ba rtc_tm_to_time64 +EXPORT_SYMBOL vmlinux 0x4f281b17 tag_pages_for_writeback +EXPORT_SYMBOL vmlinux 0x4f391d0e nla_parse +EXPORT_SYMBOL vmlinux 0x4f392992 mmc_gpio_get_cd +EXPORT_SYMBOL vmlinux 0x4f476e96 init_cdrom_command +EXPORT_SYMBOL vmlinux 0x4f4baf87 vm_insert_pfn +EXPORT_SYMBOL vmlinux 0x4f51fd1d xfrm_state_walk_done +EXPORT_SYMBOL vmlinux 0x4f68e5c9 do_gettimeofday +EXPORT_SYMBOL vmlinux 0x4f710859 inet_proto_csum_replace4 +EXPORT_SYMBOL vmlinux 0x4f783f30 acpi_read +EXPORT_SYMBOL vmlinux 0x4f7a4827 trace_print_hex_seq +EXPORT_SYMBOL vmlinux 0x4f853c10 tcp_proc_unregister +EXPORT_SYMBOL vmlinux 0x4f9481ee dquot_alloc +EXPORT_SYMBOL vmlinux 0x4fb3d632 d_walk +EXPORT_SYMBOL vmlinux 0x4fd129ed fb_show_logo +EXPORT_SYMBOL vmlinux 0x4fe39683 dentry_path_raw +EXPORT_SYMBOL vmlinux 0x4fff8540 pci_bus_assign_resources +EXPORT_SYMBOL vmlinux 0x50025ac2 inet_frag_find +EXPORT_SYMBOL vmlinux 0x50097088 security_tun_dev_free_security +EXPORT_SYMBOL vmlinux 0x501ce262 __get_page_tail +EXPORT_SYMBOL vmlinux 0x5033f00c arp_create +EXPORT_SYMBOL vmlinux 0x503bdeb6 of_get_child_by_name +EXPORT_SYMBOL vmlinux 0x504ea37f secpath_dup +EXPORT_SYMBOL vmlinux 0x50542d11 wait_for_completion_killable +EXPORT_SYMBOL vmlinux 0x5063c3fa fbcon_rotate_ud +EXPORT_SYMBOL vmlinux 0x5063df40 __posix_acl_create +EXPORT_SYMBOL vmlinux 0x506e74da devfreq_monitor_start +EXPORT_SYMBOL vmlinux 0x5072bd19 path_put +EXPORT_SYMBOL vmlinux 0x50991d0c nf_log_unbind_pf +EXPORT_SYMBOL vmlinux 0x509b64ea acpi_has_method +EXPORT_SYMBOL vmlinux 0x50a60823 from_kuid +EXPORT_SYMBOL vmlinux 0x50a90e8d bsearch +EXPORT_SYMBOL vmlinux 0x50ba769a kblockd_schedule_work +EXPORT_SYMBOL vmlinux 0x50d40439 _dev_info +EXPORT_SYMBOL vmlinux 0x50deab26 clear_wb_congested +EXPORT_SYMBOL vmlinux 0x50ded37c __posix_acl_chmod +EXPORT_SYMBOL vmlinux 0x51120cad of_iomap +EXPORT_SYMBOL vmlinux 0x51164ad9 cmdline_parts_set +EXPORT_SYMBOL vmlinux 0x5116b492 vme_dma_list_add +EXPORT_SYMBOL vmlinux 0x5118c382 secure_dccp_sequence_number +EXPORT_SYMBOL vmlinux 0x511c6aa2 generic_update_time +EXPORT_SYMBOL vmlinux 0x511fdf0a module_put +EXPORT_SYMBOL vmlinux 0x51281125 clk_add_alias +EXPORT_SYMBOL vmlinux 0x515a5b6c prepare_creds +EXPORT_SYMBOL vmlinux 0x51749fc8 _raw_read_lock_irq +EXPORT_SYMBOL vmlinux 0x5179847d tcp_init_cgroup +EXPORT_SYMBOL vmlinux 0x518bbae4 blk_complete_request +EXPORT_SYMBOL vmlinux 0x5193d0d4 mod_zone_page_state +EXPORT_SYMBOL vmlinux 0x51d12d4e acpi_pci_disabled +EXPORT_SYMBOL vmlinux 0x51d79a8e md_flush_request +EXPORT_SYMBOL vmlinux 0x51e77c97 pfn_valid +EXPORT_SYMBOL vmlinux 0x51ec2ae9 __alloc_pages_nodemask +EXPORT_SYMBOL vmlinux 0x51fa9c19 register_console +EXPORT_SYMBOL vmlinux 0x52026cdf security_sb_parse_opts_str +EXPORT_SYMBOL vmlinux 0x52076821 xfrm_state_lookup_byspi +EXPORT_SYMBOL vmlinux 0x52095e19 acpi_get_data +EXPORT_SYMBOL vmlinux 0x520c165a cfb_imageblit +EXPORT_SYMBOL vmlinux 0x52130046 acpi_check_address_range +EXPORT_SYMBOL vmlinux 0x521b36b5 qdisc_put_rtab +EXPORT_SYMBOL vmlinux 0x521bb28e cont_write_begin +EXPORT_SYMBOL vmlinux 0x5231de20 of_find_node_by_phandle +EXPORT_SYMBOL vmlinux 0x5239ce3b ___ratelimit +EXPORT_SYMBOL vmlinux 0x523d6a81 dev_driver_string +EXPORT_SYMBOL vmlinux 0x52428cc8 parent_mem_cgroup +EXPORT_SYMBOL vmlinux 0x52440088 gen_pool_destroy +EXPORT_SYMBOL vmlinux 0x525248c0 neigh_proc_dointvec_jiffies +EXPORT_SYMBOL vmlinux 0x525e026f acpi_os_unmap_generic_address +EXPORT_SYMBOL vmlinux 0x52702ba8 of_find_backlight_by_node +EXPORT_SYMBOL vmlinux 0x527f7199 textsearch_destroy +EXPORT_SYMBOL vmlinux 0x5290ccd4 mmc_gpiod_request_cd_irq +EXPORT_SYMBOL vmlinux 0x52973fdd skb_prepare_seq_read +EXPORT_SYMBOL vmlinux 0x52983a4f vme_master_write +EXPORT_SYMBOL vmlinux 0x52ad9464 mmc_flush_cache +EXPORT_SYMBOL vmlinux 0x52ce27bb alloc_etherdev_mqs +EXPORT_SYMBOL vmlinux 0x52d2055f mipi_dsi_dcs_set_page_address +EXPORT_SYMBOL vmlinux 0x52d2f706 scsi_block_when_processing_errors +EXPORT_SYMBOL vmlinux 0x52d7f12e fbcon_set_bitops +EXPORT_SYMBOL vmlinux 0x52e3608b acpi_pm_device_run_wake +EXPORT_SYMBOL vmlinux 0x530b1e98 pm_suspend +EXPORT_SYMBOL vmlinux 0x53156032 proc_mkdir_mode +EXPORT_SYMBOL vmlinux 0x53326531 mempool_alloc_pages +EXPORT_SYMBOL vmlinux 0x5332f6a6 __inode_sub_bytes +EXPORT_SYMBOL vmlinux 0x535c8308 vme_dma_pattern_attribute +EXPORT_SYMBOL vmlinux 0x535d88ef blk_mq_stop_hw_queues +EXPORT_SYMBOL vmlinux 0x536cc847 memcg_kmem_enabled_key +EXPORT_SYMBOL vmlinux 0x5377e556 hex2bin +EXPORT_SYMBOL vmlinux 0x5380a9e0 mipi_dsi_driver_unregister +EXPORT_SYMBOL vmlinux 0x539849ec mmc_can_secure_erase_trim +EXPORT_SYMBOL vmlinux 0x539af73c __sg_alloc_table +EXPORT_SYMBOL vmlinux 0x539c7feb __scm_destroy +EXPORT_SYMBOL vmlinux 0x53a29c6a setup_arg_pages +EXPORT_SYMBOL vmlinux 0x53b4d356 d_invalidate +EXPORT_SYMBOL vmlinux 0x53c6075f kernel_getsockopt +EXPORT_SYMBOL vmlinux 0x53febbd5 d_genocide +EXPORT_SYMBOL vmlinux 0x53ff79f2 sock_edemux +EXPORT_SYMBOL vmlinux 0x5400b547 padata_unregister_cpumask_notifier +EXPORT_SYMBOL vmlinux 0x5409775b free_irq_cpu_rmap +EXPORT_SYMBOL vmlinux 0x540ecd83 __xfrm_init_state +EXPORT_SYMBOL vmlinux 0x541a2b04 blk_mq_alloc_request +EXPORT_SYMBOL vmlinux 0x54245b39 kstrtoull_from_user +EXPORT_SYMBOL vmlinux 0x543ef284 seq_hlist_start +EXPORT_SYMBOL vmlinux 0x54499a96 iov_iter_fault_in_multipages_readable +EXPORT_SYMBOL vmlinux 0x544b0c11 acpi_lid_notifier_register +EXPORT_SYMBOL vmlinux 0x54700633 seq_lseek +EXPORT_SYMBOL vmlinux 0x54748c84 pci_save_state +EXPORT_SYMBOL vmlinux 0x547f2009 generic_block_fiemap +EXPORT_SYMBOL vmlinux 0x5488335f tcf_exts_dump_stats +EXPORT_SYMBOL vmlinux 0x54a9db5f _kstrtoul +EXPORT_SYMBOL vmlinux 0x54af0822 kernel_sock_shutdown +EXPORT_SYMBOL vmlinux 0x54c256e0 vme_check_window +EXPORT_SYMBOL vmlinux 0x54c407e3 inet_csk_accept +EXPORT_SYMBOL vmlinux 0x54d4bded ida_init +EXPORT_SYMBOL vmlinux 0x54e6fcdd net_enable_timestamp +EXPORT_SYMBOL vmlinux 0x54ef96ea qdisc_watchdog_cancel +EXPORT_SYMBOL vmlinux 0x54f7a08c abx500_startup_irq_enabled +EXPORT_SYMBOL vmlinux 0x5515b6a7 tcp_syn_ack_timeout +EXPORT_SYMBOL vmlinux 0x551bd071 __rb_erase_color +EXPORT_SYMBOL vmlinux 0x5541ea93 on_each_cpu +EXPORT_SYMBOL vmlinux 0x556112ae fence_signal_locked +EXPORT_SYMBOL vmlinux 0x5567c227 kernel_cpustat +EXPORT_SYMBOL vmlinux 0x55846627 touch_atime +EXPORT_SYMBOL vmlinux 0x558b85a1 param_set_ullong +EXPORT_SYMBOL vmlinux 0x558c7027 tty_check_change +EXPORT_SYMBOL vmlinux 0x55a87c2e mipi_dsi_dcs_get_power_mode +EXPORT_SYMBOL vmlinux 0x55ab3d97 compat_sock_common_getsockopt +EXPORT_SYMBOL vmlinux 0x55b40037 jbd2_journal_blocks_per_page +EXPORT_SYMBOL vmlinux 0x55d481c9 hdmi_infoframe_unpack +EXPORT_SYMBOL vmlinux 0x55d8a4b8 param_array_ops +EXPORT_SYMBOL vmlinux 0x55e5cb6b d_set_d_op +EXPORT_SYMBOL vmlinux 0x55eb4681 phy_get_eee_err +EXPORT_SYMBOL vmlinux 0x55f5019b __kmalloc_node +EXPORT_SYMBOL vmlinux 0x55f6e22e tcp_ioctl +EXPORT_SYMBOL vmlinux 0x5624a2b5 __dst_free +EXPORT_SYMBOL vmlinux 0x562c036e blk_queue_softirq_done +EXPORT_SYMBOL vmlinux 0x562f0f22 ida_simple_remove +EXPORT_SYMBOL vmlinux 0x56342ce1 down_timeout +EXPORT_SYMBOL vmlinux 0x5635a60a vmalloc_user +EXPORT_SYMBOL vmlinux 0x56490c88 tcp_close +EXPORT_SYMBOL vmlinux 0x56498416 swiotlb_sync_single_for_device +EXPORT_SYMBOL vmlinux 0x564f151f devm_ioremap_nocache +EXPORT_SYMBOL vmlinux 0x565f5037 fb_class +EXPORT_SYMBOL vmlinux 0x56600e41 vfs_fsync +EXPORT_SYMBOL vmlinux 0x566f75ac ata_link_printk +EXPORT_SYMBOL vmlinux 0x56833339 read_dev_sector +EXPORT_SYMBOL vmlinux 0x568d2d92 dmaengine_get_unmap_data +EXPORT_SYMBOL vmlinux 0x56947b95 request_firmware +EXPORT_SYMBOL vmlinux 0x56c39ebe inet_frags_exit_net +EXPORT_SYMBOL vmlinux 0x56c8799d scsi_kunmap_atomic_sg +EXPORT_SYMBOL vmlinux 0x56c940a5 __generic_file_write_iter +EXPORT_SYMBOL vmlinux 0x5701a417 dcache_dir_open +EXPORT_SYMBOL vmlinux 0x5708d0ad dev_notice +EXPORT_SYMBOL vmlinux 0x571efdda sock_i_ino +EXPORT_SYMBOL vmlinux 0x572d0104 _raw_write_unlock_irqrestore +EXPORT_SYMBOL vmlinux 0x572e85d4 blk_lookup_devt +EXPORT_SYMBOL vmlinux 0x574c2e74 bitmap_release_region +EXPORT_SYMBOL vmlinux 0x57575f08 dmaengine_put +EXPORT_SYMBOL vmlinux 0x57674fd7 __sw_hweight16 +EXPORT_SYMBOL vmlinux 0x577d35f3 hdmi_avi_infoframe_pack +EXPORT_SYMBOL vmlinux 0x5792f848 strlcpy +EXPORT_SYMBOL vmlinux 0x57a8792d walk_stackframe +EXPORT_SYMBOL vmlinux 0x57d349df sock_kfree_s +EXPORT_SYMBOL vmlinux 0x57fa1f5c md_wait_for_blocked_rdev +EXPORT_SYMBOL vmlinux 0x581bb64d lockref_mark_dead +EXPORT_SYMBOL vmlinux 0x581f98da zlib_inflate +EXPORT_SYMBOL vmlinux 0x5838f6c9 rtc_valid_tm +EXPORT_SYMBOL vmlinux 0x58695617 write_cache_pages +EXPORT_SYMBOL vmlinux 0x587061e5 qdisc_list_add +EXPORT_SYMBOL vmlinux 0x587616f1 vfs_fstatat +EXPORT_SYMBOL vmlinux 0x589ceefc xfrm_find_acq +EXPORT_SYMBOL vmlinux 0x58a97641 blk_end_request_all +EXPORT_SYMBOL vmlinux 0x58b73bc7 match_wildcard +EXPORT_SYMBOL vmlinux 0x58d8c06d acpi_device_set_power +EXPORT_SYMBOL vmlinux 0x58e6ee91 security_inode_setsecctx +EXPORT_SYMBOL vmlinux 0x592d959e padata_do_parallel +EXPORT_SYMBOL vmlinux 0x5967c929 __tracepoint_kmem_cache_alloc_node +EXPORT_SYMBOL vmlinux 0x5968430d devm_devfreq_add_device +EXPORT_SYMBOL vmlinux 0x5970ae2a inet_dgram_connect +EXPORT_SYMBOL vmlinux 0x597dda50 gen_pool_alloc +EXPORT_SYMBOL vmlinux 0x598799aa tty_register_device +EXPORT_SYMBOL vmlinux 0x598e4904 mod_timer_pending +EXPORT_SYMBOL vmlinux 0x59a2fe45 rwsem_downgrade_wake +EXPORT_SYMBOL vmlinux 0x59aa14cf fence_release +EXPORT_SYMBOL vmlinux 0x59d6a9a6 bio_add_pc_page +EXPORT_SYMBOL vmlinux 0x5a0b73d0 zlib_deflateInit2 +EXPORT_SYMBOL vmlinux 0x5a13e351 bh_uptodate_or_lock +EXPORT_SYMBOL vmlinux 0x5a208986 qdisc_tree_decrease_qlen +EXPORT_SYMBOL vmlinux 0x5a33f4d2 pm860x_reg_read +EXPORT_SYMBOL vmlinux 0x5a354991 pci_bus_type +EXPORT_SYMBOL vmlinux 0x5a5accd7 dec_zone_page_state +EXPORT_SYMBOL vmlinux 0x5a669a09 max8998_read_reg +EXPORT_SYMBOL vmlinux 0x5a73639a compat_mc_setsockopt +EXPORT_SYMBOL vmlinux 0x5a75fd1b phy_print_status +EXPORT_SYMBOL vmlinux 0x5a921311 strncmp +EXPORT_SYMBOL vmlinux 0x5a9570da ps2_command +EXPORT_SYMBOL vmlinux 0x5a963823 alloc_disk_node +EXPORT_SYMBOL vmlinux 0x5a9aad06 dquot_file_open +EXPORT_SYMBOL vmlinux 0x5a9c9cf3 lg_lock_init +EXPORT_SYMBOL vmlinux 0x5a9f1d63 memmove +EXPORT_SYMBOL vmlinux 0x5aabc756 km_state_expired +EXPORT_SYMBOL vmlinux 0x5ac5e5cb eth_commit_mac_addr_change +EXPORT_SYMBOL vmlinux 0x5ac8e46b tty_port_carrier_raised +EXPORT_SYMBOL vmlinux 0x5acc112d skb_recv_datagram +EXPORT_SYMBOL vmlinux 0x5aff4177 vme_lm_get +EXPORT_SYMBOL vmlinux 0x5b2ec7f0 neigh_sysctl_register +EXPORT_SYMBOL vmlinux 0x5b56860c vm_munmap +EXPORT_SYMBOL vmlinux 0x5b61bd64 filemap_map_pages +EXPORT_SYMBOL vmlinux 0x5b7f66b4 tty_port_init +EXPORT_SYMBOL vmlinux 0x5b99e97e twl6030_mmc_card_detect +EXPORT_SYMBOL vmlinux 0x5bb40b6b release_pages +EXPORT_SYMBOL vmlinux 0x5bc10524 printk_emit +EXPORT_SYMBOL vmlinux 0x5bc17c61 mmc_can_discard +EXPORT_SYMBOL vmlinux 0x5bc25011 d_obtain_root +EXPORT_SYMBOL vmlinux 0x5bca51c7 jbd2_journal_invalidatepage +EXPORT_SYMBOL vmlinux 0x5bcfeaa1 scsi_print_result +EXPORT_SYMBOL vmlinux 0x5bf5a5d8 cdev_init +EXPORT_SYMBOL vmlinux 0x5bf83e76 dma_common_get_sgtable +EXPORT_SYMBOL vmlinux 0x5c0442fd acpi_gbl_FADT +EXPORT_SYMBOL vmlinux 0x5c0664de jbd2_journal_errno +EXPORT_SYMBOL vmlinux 0x5c1152f3 flock_lock_inode_wait +EXPORT_SYMBOL vmlinux 0x5c38a8ad netif_schedule_queue +EXPORT_SYMBOL vmlinux 0x5c4aeca9 i2c_smbus_read_block_data +EXPORT_SYMBOL vmlinux 0x5c53604b dma_common_mmap +EXPORT_SYMBOL vmlinux 0x5c6e49e7 param_ops_ullong +EXPORT_SYMBOL vmlinux 0x5c89d599 tcp_prot +EXPORT_SYMBOL vmlinux 0x5c8e4778 serio_rescan +EXPORT_SYMBOL vmlinux 0x5c98fe18 xfrm_stateonly_find +EXPORT_SYMBOL vmlinux 0x5cb6c60c register_key_type +EXPORT_SYMBOL vmlinux 0x5cc1eceb mount_subtree +EXPORT_SYMBOL vmlinux 0x5cd885d5 _raw_spin_lock +EXPORT_SYMBOL vmlinux 0x5cdb9c49 ip_cmsg_recv_offset +EXPORT_SYMBOL vmlinux 0x5cf53ce2 input_free_minor +EXPORT_SYMBOL vmlinux 0x5d112304 __memcpy_fromio +EXPORT_SYMBOL vmlinux 0x5d184834 crypto_sha512_finup +EXPORT_SYMBOL vmlinux 0x5d191302 twl6040_reg_read +EXPORT_SYMBOL vmlinux 0x5d2b3d89 blk_queue_max_write_same_sectors +EXPORT_SYMBOL vmlinux 0x5d335057 padata_stop +EXPORT_SYMBOL vmlinux 0x5d550c4d scsi_sd_probe_domain +EXPORT_SYMBOL vmlinux 0x5d6a471a scsi_eh_prep_cmnd +EXPORT_SYMBOL vmlinux 0x5d74dbcf pnp_range_reserved +EXPORT_SYMBOL vmlinux 0x5d781890 param_get_ushort +EXPORT_SYMBOL vmlinux 0x5da09d7d param_get_ulong +EXPORT_SYMBOL vmlinux 0x5da554d2 eth_header +EXPORT_SYMBOL vmlinux 0x5da67263 serial8250_set_isa_configurator +EXPORT_SYMBOL vmlinux 0x5dafc6c5 phy_drivers_register +EXPORT_SYMBOL vmlinux 0x5dd88c92 fsnotify_init_mark +EXPORT_SYMBOL vmlinux 0x5e03ff98 nf_ip6_checksum +EXPORT_SYMBOL vmlinux 0x5e06aa90 gnttab_alloc_pages +EXPORT_SYMBOL vmlinux 0x5e21797a dev_uc_sync +EXPORT_SYMBOL vmlinux 0x5e24e974 mmc_wait_for_req +EXPORT_SYMBOL vmlinux 0x5e3946a5 abx500_get_register_interruptible +EXPORT_SYMBOL vmlinux 0x5e813f9a netlink_unicast +EXPORT_SYMBOL vmlinux 0x5e8bb953 __get_user_pages_unlocked +EXPORT_SYMBOL vmlinux 0x5e8d398f pci_setup_cardbus +EXPORT_SYMBOL vmlinux 0x5e95558d vc_cons +EXPORT_SYMBOL vmlinux 0x5e95b1cd current_umask +EXPORT_SYMBOL vmlinux 0x5ea79efe fence_default_wait +EXPORT_SYMBOL vmlinux 0x5ea7fc70 netif_tx_stop_all_queues +EXPORT_SYMBOL vmlinux 0x5eb24829 dm_shift_arg +EXPORT_SYMBOL vmlinux 0x5ed040b0 pm_set_vt_switch +EXPORT_SYMBOL vmlinux 0x5edc37e4 neigh_direct_output +EXPORT_SYMBOL vmlinux 0x5ee134ea pci_unregister_driver +EXPORT_SYMBOL vmlinux 0x5f005368 kstrtou8 +EXPORT_SYMBOL vmlinux 0x5f098b2a in6addr_interfacelocal_allrouters +EXPORT_SYMBOL vmlinux 0x5f587ec9 default_qdisc_ops +EXPORT_SYMBOL vmlinux 0x5f70e72a wake_up_process +EXPORT_SYMBOL vmlinux 0x5f75557a of_match_device +EXPORT_SYMBOL vmlinux 0x5f7e67e9 phy_write_mmd_indirect +EXPORT_SYMBOL vmlinux 0x5f84d4d1 __sock_tx_timestamp +EXPORT_SYMBOL vmlinux 0x5fa820d2 pnp_start_dev +EXPORT_SYMBOL vmlinux 0x5fce7ed6 install_exec_creds +EXPORT_SYMBOL vmlinux 0x5fda0227 vfs_stat +EXPORT_SYMBOL vmlinux 0x60018ef7 ipv6_sock_mc_drop +EXPORT_SYMBOL vmlinux 0x60047b74 ipv6_dev_get_saddr +EXPORT_SYMBOL vmlinux 0x600683d3 do_unblank_screen +EXPORT_SYMBOL vmlinux 0x601b701c xfrm6_find_1stfragopt +EXPORT_SYMBOL vmlinux 0x601f665f dm_io_client_create +EXPORT_SYMBOL vmlinux 0x602ed00d acpi_current_gpe_count +EXPORT_SYMBOL vmlinux 0x60352082 register_inet6addr_notifier +EXPORT_SYMBOL vmlinux 0x60375a5a xfrm_state_update +EXPORT_SYMBOL vmlinux 0x6068bd11 inet_shutdown +EXPORT_SYMBOL vmlinux 0x606d0b09 secure_tcpv6_sequence_number +EXPORT_SYMBOL vmlinux 0x60814ab4 d_lookup +EXPORT_SYMBOL vmlinux 0x60873b39 amba_request_regions +EXPORT_SYMBOL vmlinux 0x6091644e flow_keys_dissector +EXPORT_SYMBOL vmlinux 0x609f1c7e synchronize_net +EXPORT_SYMBOL vmlinux 0x609f5b35 ucs2_strnlen +EXPORT_SYMBOL vmlinux 0x60b0cacd simple_transaction_read +EXPORT_SYMBOL vmlinux 0x60bfaf13 blk_alloc_queue +EXPORT_SYMBOL vmlinux 0x60c67df5 end_buffer_async_write +EXPORT_SYMBOL vmlinux 0x60c96b7d inet_bind +EXPORT_SYMBOL vmlinux 0x60df1e3b posix_acl_equiv_mode +EXPORT_SYMBOL vmlinux 0x60e30fcd cookie_ecn_ok +EXPORT_SYMBOL vmlinux 0x6128b5fc __printk_ratelimit +EXPORT_SYMBOL vmlinux 0x612b3884 km_policy_expired +EXPORT_SYMBOL vmlinux 0x6136bd28 vme_irq_request +EXPORT_SYMBOL vmlinux 0x614bb773 radix_tree_insert +EXPORT_SYMBOL vmlinux 0x61520529 trace_print_symbols_seq +EXPORT_SYMBOL vmlinux 0x6180e0e7 __kernel_write +EXPORT_SYMBOL vmlinux 0x618911fc numa_node +EXPORT_SYMBOL vmlinux 0x6192786b __check_sticky +EXPORT_SYMBOL vmlinux 0x619cb7dd simple_read_from_buffer +EXPORT_SYMBOL vmlinux 0x61a565b4 simple_rename +EXPORT_SYMBOL vmlinux 0x61aff0ac dquot_set_dqinfo +EXPORT_SYMBOL vmlinux 0x61b06b8a pci_write_vpd +EXPORT_SYMBOL vmlinux 0x61b7b126 simple_strtoull +EXPORT_SYMBOL vmlinux 0x61c5c3db jbd2_journal_revoke +EXPORT_SYMBOL vmlinux 0x61d50a86 i2c_clients_command +EXPORT_SYMBOL vmlinux 0x61ebe5e4 ps2_begin_command +EXPORT_SYMBOL vmlinux 0x6214aef2 cpufreq_unregister_notifier +EXPORT_SYMBOL vmlinux 0x6225637e md5_transform +EXPORT_SYMBOL vmlinux 0x6228c21f smp_call_function_single +EXPORT_SYMBOL vmlinux 0x622afb42 udp_lib_unhash +EXPORT_SYMBOL vmlinux 0x62469371 ipv6_chk_prefix +EXPORT_SYMBOL vmlinux 0x624ee12b nf_hook_slow +EXPORT_SYMBOL vmlinux 0x6270aee9 scsi_execute_req_flags +EXPORT_SYMBOL vmlinux 0x62737e1d sock_unregister +EXPORT_SYMBOL vmlinux 0x62748e70 acpi_set_current_resources +EXPORT_SYMBOL vmlinux 0x6276c0de dquot_acquire +EXPORT_SYMBOL vmlinux 0x62827bec security_secctx_to_secid +EXPORT_SYMBOL vmlinux 0x62849ac7 dev_valid_name +EXPORT_SYMBOL vmlinux 0x62a211b5 __bforget +EXPORT_SYMBOL vmlinux 0x62a603ba sk_capable +EXPORT_SYMBOL vmlinux 0x62afc73e unregister_binfmt +EXPORT_SYMBOL vmlinux 0x62c3297e param_set_charp +EXPORT_SYMBOL vmlinux 0x62c3e7f0 pcie_set_mps +EXPORT_SYMBOL vmlinux 0x62c4be27 mfd_cell_disable +EXPORT_SYMBOL vmlinux 0x62e86d1e kthread_stop +EXPORT_SYMBOL vmlinux 0x62f335a5 flow_cache_init +EXPORT_SYMBOL vmlinux 0x630ec583 __nd_driver_register +EXPORT_SYMBOL vmlinux 0x630f384e cdrom_media_changed +EXPORT_SYMBOL vmlinux 0x63122422 sk_mc_loop +EXPORT_SYMBOL vmlinux 0x63180d12 audit_log_task_info +EXPORT_SYMBOL vmlinux 0x63187451 pcie_aspm_support_enabled +EXPORT_SYMBOL vmlinux 0x633471ff mb_cache_entry_find_next +EXPORT_SYMBOL vmlinux 0x634b3ccd jbd2_journal_update_sb_errno +EXPORT_SYMBOL vmlinux 0x634c7a89 fsnotify_alloc_group +EXPORT_SYMBOL vmlinux 0x638cd1ae fbcon_rotate_cw +EXPORT_SYMBOL vmlinux 0x63957d33 dev_addr_flush +EXPORT_SYMBOL vmlinux 0x63a01291 acpi_leave_sleep_state_prep +EXPORT_SYMBOL vmlinux 0x63a7c28c bitmap_find_free_region +EXPORT_SYMBOL vmlinux 0x63c4d61f __bitmap_weight +EXPORT_SYMBOL vmlinux 0x63eb9355 panic_blink +EXPORT_SYMBOL vmlinux 0x63fc232f strlen_user +EXPORT_SYMBOL vmlinux 0x6403e338 tcp_memory_pressure +EXPORT_SYMBOL vmlinux 0x640ce4d4 filp_close +EXPORT_SYMBOL vmlinux 0x64127b67 bitmap_find_next_zero_area_off +EXPORT_SYMBOL vmlinux 0x641ae393 xfrm6_rcv_cb +EXPORT_SYMBOL vmlinux 0x6449fd41 acpi_install_address_space_handler +EXPORT_SYMBOL vmlinux 0x64760eab pci_try_set_mwi +EXPORT_SYMBOL vmlinux 0x64999478 congestion_wait +EXPORT_SYMBOL vmlinux 0x649df057 inode_needs_sync +EXPORT_SYMBOL vmlinux 0x64bbc288 string_unescape +EXPORT_SYMBOL vmlinux 0x64d185b3 pci_enable_msi_range +EXPORT_SYMBOL vmlinux 0x64d6ee58 napi_disable +EXPORT_SYMBOL vmlinux 0x64debd32 get_tz_trend +EXPORT_SYMBOL vmlinux 0x64e3b84b softnet_data +EXPORT_SYMBOL vmlinux 0x64ec5de9 dcbnl_ieee_notify +EXPORT_SYMBOL vmlinux 0x64f90839 md_cluster_mod +EXPORT_SYMBOL vmlinux 0x64fa7693 __acpi_handle_debug +EXPORT_SYMBOL vmlinux 0x650c41d2 max8925_bulk_read +EXPORT_SYMBOL vmlinux 0x650d6ad9 kmem_cache_destroy +EXPORT_SYMBOL vmlinux 0x6513a3fa fb_get_color_depth +EXPORT_SYMBOL vmlinux 0x651a4139 test_taint +EXPORT_SYMBOL vmlinux 0x6523a8b3 pci_set_power_state +EXPORT_SYMBOL vmlinux 0x652ce9aa nla_memcmp +EXPORT_SYMBOL vmlinux 0x65320b52 dentry_unhash +EXPORT_SYMBOL vmlinux 0x65345022 __wake_up +EXPORT_SYMBOL vmlinux 0x6535bfb4 input_mt_init_slots +EXPORT_SYMBOL vmlinux 0x653a8b7c dev_get_phys_port_name +EXPORT_SYMBOL vmlinux 0x65400b7a security_inode_readlink +EXPORT_SYMBOL vmlinux 0x65408378 zlib_inflate_blob +EXPORT_SYMBOL vmlinux 0x6546d785 tty_chars_in_buffer +EXPORT_SYMBOL vmlinux 0x656c1a0e string_escape_mem +EXPORT_SYMBOL vmlinux 0x657458d1 xfrm_lookup +EXPORT_SYMBOL vmlinux 0x6581c070 rc5t583_ext_power_req_config +EXPORT_SYMBOL vmlinux 0x659e3671 iter_file_splice_write +EXPORT_SYMBOL vmlinux 0x65af4da2 dev_get_by_index +EXPORT_SYMBOL vmlinux 0x65cb1779 keyring_search +EXPORT_SYMBOL vmlinux 0x65d0194b xfrm_input_unregister_afinfo +EXPORT_SYMBOL vmlinux 0x65d9e877 cpufreq_register_notifier +EXPORT_SYMBOL vmlinux 0x65dccf13 xz_dec_end +EXPORT_SYMBOL vmlinux 0x65dd77c9 follow_down_one +EXPORT_SYMBOL vmlinux 0x65ded283 fb_blank +EXPORT_SYMBOL vmlinux 0x65e0d6d7 memory_read_from_buffer +EXPORT_SYMBOL vmlinux 0x65f3ad9a fb_videomode_to_var +EXPORT_SYMBOL vmlinux 0x65f94dda jbd2_journal_stop +EXPORT_SYMBOL vmlinux 0x65fcb59b blk_rq_map_user_iov +EXPORT_SYMBOL vmlinux 0x66104d52 __devm_gpiod_get_optional +EXPORT_SYMBOL vmlinux 0x663324dd of_io_request_and_map +EXPORT_SYMBOL vmlinux 0x663f7cd0 acpi_install_table_handler +EXPORT_SYMBOL vmlinux 0x6659d501 skb_make_writable +EXPORT_SYMBOL vmlinux 0x665a58b1 __nla_put_nohdr +EXPORT_SYMBOL vmlinux 0x6663c161 skb_page_frag_refill +EXPORT_SYMBOL vmlinux 0x666ad91d iommu_tbl_range_alloc +EXPORT_SYMBOL vmlinux 0x6673e47e pm8606_osc_disable +EXPORT_SYMBOL vmlinux 0x6684a0cd sock_queue_err_skb +EXPORT_SYMBOL vmlinux 0x669a8ac1 dev_remove_pack +EXPORT_SYMBOL vmlinux 0x669dc6fa wait_on_page_bit +EXPORT_SYMBOL vmlinux 0x669e7c41 pci_enable_device +EXPORT_SYMBOL vmlinux 0x66b7feb0 generic_start_io_acct +EXPORT_SYMBOL vmlinux 0x66c5dc27 end_buffer_write_sync +EXPORT_SYMBOL vmlinux 0x66c69aaa vfs_readf +EXPORT_SYMBOL vmlinux 0x66da9734 scsi_cmd_blk_ioctl +EXPORT_SYMBOL vmlinux 0x66de3757 is_nd_btt +EXPORT_SYMBOL vmlinux 0x66f689e3 try_module_get +EXPORT_SYMBOL vmlinux 0x67007b86 rtnl_create_link +EXPORT_SYMBOL vmlinux 0x67276286 gen_new_estimator +EXPORT_SYMBOL vmlinux 0x67426c13 bio_alloc_bioset +EXPORT_SYMBOL vmlinux 0x674f013b __inet6_lookup_established +EXPORT_SYMBOL vmlinux 0x67640816 of_dev_get +EXPORT_SYMBOL vmlinux 0x67733cf4 mb_cache_create +EXPORT_SYMBOL vmlinux 0x6791fdf6 netif_set_xps_queue +EXPORT_SYMBOL vmlinux 0x67b27ec1 tty_std_termios +EXPORT_SYMBOL vmlinux 0x67b59e4c max8925_reg_write +EXPORT_SYMBOL vmlinux 0x67b78eb3 seq_hlist_next_rcu +EXPORT_SYMBOL vmlinux 0x67d12b42 ab3100_event_register +EXPORT_SYMBOL vmlinux 0x67d2ae5e inet_put_port +EXPORT_SYMBOL vmlinux 0x67d5509b mipi_dsi_dcs_set_tear_off +EXPORT_SYMBOL vmlinux 0x67e68345 input_free_device +EXPORT_SYMBOL vmlinux 0x67f72ad2 __netlink_ns_capable +EXPORT_SYMBOL vmlinux 0x6808b453 __unregister_cpu_notifier +EXPORT_SYMBOL vmlinux 0x681659a1 netlink_rcv_skb +EXPORT_SYMBOL vmlinux 0x681f63b4 pcie_capability_clear_and_set_dword +EXPORT_SYMBOL vmlinux 0x68301d7e dev_vprintk_emit +EXPORT_SYMBOL vmlinux 0x68314d48 page_follow_link_light +EXPORT_SYMBOL vmlinux 0x687b6a16 kdbgetsymval +EXPORT_SYMBOL vmlinux 0x687ebb7f proc_create_data +EXPORT_SYMBOL vmlinux 0x68958081 netif_carrier_on +EXPORT_SYMBOL vmlinux 0x689fc55e param_get_string +EXPORT_SYMBOL vmlinux 0x68a765b6 remap_vmalloc_range_partial +EXPORT_SYMBOL vmlinux 0x68b63260 setup_new_exec +EXPORT_SYMBOL vmlinux 0x68b83ac6 posix_acl_alloc +EXPORT_SYMBOL vmlinux 0x68e14077 bitmap_unplug +EXPORT_SYMBOL vmlinux 0x68f8cfee default_file_splice_read +EXPORT_SYMBOL vmlinux 0x690d09c5 kernel_setsockopt +EXPORT_SYMBOL vmlinux 0x691001b5 acpi_evaluate_integer +EXPORT_SYMBOL vmlinux 0x6963e091 set_bh_page +EXPORT_SYMBOL vmlinux 0x69646c9b msm_pinctrl_probe +EXPORT_SYMBOL vmlinux 0x6966b728 nf_register_sockopt +EXPORT_SYMBOL vmlinux 0x6971447a rtc_month_days +EXPORT_SYMBOL vmlinux 0x69a358a6 iomem_resource +EXPORT_SYMBOL vmlinux 0x69ad2f20 kstrtouint +EXPORT_SYMBOL vmlinux 0x69f4f1f6 tty_driver_kref_put +EXPORT_SYMBOL vmlinux 0x69fbc0a2 acpi_get_event_resources +EXPORT_SYMBOL vmlinux 0x6a037cf1 mempool_kfree +EXPORT_SYMBOL vmlinux 0x6a17aa43 load_nls +EXPORT_SYMBOL vmlinux 0x6a3104a7 nd_region_to_nstype +EXPORT_SYMBOL vmlinux 0x6a36581c netdev_bonding_info_change +EXPORT_SYMBOL vmlinux 0x6a37cfb2 jbd2_journal_file_inode +EXPORT_SYMBOL vmlinux 0x6a39a029 fsnotify_add_mark +EXPORT_SYMBOL vmlinux 0x6a3f5e2f abx500_get_chip_id +EXPORT_SYMBOL vmlinux 0x6a48d2c4 fsnotify_put_group +EXPORT_SYMBOL vmlinux 0x6a4b4bbc dquot_get_dqblk +EXPORT_SYMBOL vmlinux 0x6a4f086c lookup_one_len +EXPORT_SYMBOL vmlinux 0x6a5ecb18 unregister_module_notifier +EXPORT_SYMBOL vmlinux 0x6a5fa363 sigprocmask +EXPORT_SYMBOL vmlinux 0x6a60277d acpi_buffer_to_resource +EXPORT_SYMBOL vmlinux 0x6a76f3ac blk_iopoll_enable +EXPORT_SYMBOL vmlinux 0x6aa3d7a2 bio_flush_dcache_pages +EXPORT_SYMBOL vmlinux 0x6acafd5b cookie_timestamp_decode +EXPORT_SYMBOL vmlinux 0x6ad6c599 param_get_short +EXPORT_SYMBOL vmlinux 0x6add5c9a dmi_find_device +EXPORT_SYMBOL vmlinux 0x6ae0870c sock_create +EXPORT_SYMBOL vmlinux 0x6aeefac4 zlib_deflateReset +EXPORT_SYMBOL vmlinux 0x6af098ee block_write_full_page +EXPORT_SYMBOL vmlinux 0x6af7854e inc_zone_page_state +EXPORT_SYMBOL vmlinux 0x6b06fdce delayed_work_timer_fn +EXPORT_SYMBOL vmlinux 0x6b07dd5d unregister_netdevice_queue +EXPORT_SYMBOL vmlinux 0x6b0d1d81 pnp_possible_config +EXPORT_SYMBOL vmlinux 0x6b19b7dd blk_mq_all_tag_busy_iter +EXPORT_SYMBOL vmlinux 0x6b1b67d3 __bdevname +EXPORT_SYMBOL vmlinux 0x6b27b5eb qdisc_destroy +EXPORT_SYMBOL vmlinux 0x6b2a7c30 netlink_broadcast_filtered +EXPORT_SYMBOL vmlinux 0x6b2dc060 dump_stack +EXPORT_SYMBOL vmlinux 0x6b50e66c ioctl_by_bdev +EXPORT_SYMBOL vmlinux 0x6b543131 mutex_lock_interruptible +EXPORT_SYMBOL vmlinux 0x6b640864 nla_strlcpy +EXPORT_SYMBOL vmlinux 0x6b67e8c3 ip_mc_inc_group +EXPORT_SYMBOL vmlinux 0x6b9051cd generic_perform_write +EXPORT_SYMBOL vmlinux 0x6bb09366 fput +EXPORT_SYMBOL vmlinux 0x6bb09951 generic_delete_inode +EXPORT_SYMBOL vmlinux 0x6bbcd760 km_new_mapping +EXPORT_SYMBOL vmlinux 0x6bbe2473 kmem_cache_alloc_node +EXPORT_SYMBOL vmlinux 0x6bc3fbc0 __unregister_chrdev +EXPORT_SYMBOL vmlinux 0x6bcdc7ad from_kuid_munged +EXPORT_SYMBOL vmlinux 0x6bdcfd99 qdisc_class_hash_remove +EXPORT_SYMBOL vmlinux 0x6be06e52 backlight_force_update +EXPORT_SYMBOL vmlinux 0x6c09c2a4 del_timer +EXPORT_SYMBOL vmlinux 0x6c2cdc47 add_wait_queue_exclusive +EXPORT_SYMBOL vmlinux 0x6c375b90 pcie_port_service_register +EXPORT_SYMBOL vmlinux 0x6c51a836 sysctl_tcp_notsent_lowat +EXPORT_SYMBOL vmlinux 0x6c61ce70 num_registered_fb +EXPORT_SYMBOL vmlinux 0x6c702af7 sysctl_udp_rmem_min +EXPORT_SYMBOL vmlinux 0x6c7999ac __elv_add_request +EXPORT_SYMBOL vmlinux 0x6cac140b mipi_dsi_dcs_soft_reset +EXPORT_SYMBOL vmlinux 0x6ceb63a7 con_set_default_unimap +EXPORT_SYMBOL vmlinux 0x6cf19457 handle_edge_irq +EXPORT_SYMBOL vmlinux 0x6cfec0e7 generic_file_fsync +EXPORT_SYMBOL vmlinux 0x6d0f1f89 dm_table_get_mode +EXPORT_SYMBOL vmlinux 0x6d171c7c i2c_get_adapter +EXPORT_SYMBOL vmlinux 0x6d243f88 __generic_block_fiemap +EXPORT_SYMBOL vmlinux 0x6d294e43 clock_t_to_jiffies +EXPORT_SYMBOL vmlinux 0x6d340f64 tty_termios_input_baud_rate +EXPORT_SYMBOL vmlinux 0x6d5ee31b dump_skip +EXPORT_SYMBOL vmlinux 0x6d61f886 unload_nls +EXPORT_SYMBOL vmlinux 0x6d998f07 __blk_run_queue +EXPORT_SYMBOL vmlinux 0x6daf5ddb elv_dispatch_sort +EXPORT_SYMBOL vmlinux 0x6dba873b sock_wmalloc +EXPORT_SYMBOL vmlinux 0x6ddf7f64 unregister_quota_format +EXPORT_SYMBOL vmlinux 0x6de8f48f scsi_host_alloc +EXPORT_SYMBOL vmlinux 0x6def2db2 half_md4_transform +EXPORT_SYMBOL vmlinux 0x6df1aaf1 kernel_sigaction +EXPORT_SYMBOL vmlinux 0x6e00588b param_ops_long +EXPORT_SYMBOL vmlinux 0x6e00c77f dev_mc_flush +EXPORT_SYMBOL vmlinux 0x6e119e20 dump_page +EXPORT_SYMBOL vmlinux 0x6e21ea0f xen_dma_ops +EXPORT_SYMBOL vmlinux 0x6e439ceb set_disk_ro +EXPORT_SYMBOL vmlinux 0x6e6b23cc tcp_seq_open +EXPORT_SYMBOL vmlinux 0x6e720ff2 rtnl_unlock +EXPORT_SYMBOL vmlinux 0x6e7cc7f8 neigh_for_each +EXPORT_SYMBOL vmlinux 0x6e7f0fd2 cmdline_parts_parse +EXPORT_SYMBOL vmlinux 0x6e805810 fence_init +EXPORT_SYMBOL vmlinux 0x6e9416fc tso_build_data +EXPORT_SYMBOL vmlinux 0x6e9dd606 __symbol_put +EXPORT_SYMBOL vmlinux 0x6ea76843 ida_get_new_above +EXPORT_SYMBOL vmlinux 0x6ea8558a pnp_get_resource +EXPORT_SYMBOL vmlinux 0x6eeb0cab netlink_ack +EXPORT_SYMBOL vmlinux 0x6ef0c45e gen_pool_virt_to_phys +EXPORT_SYMBOL vmlinux 0x6ef11847 sk_prot_clear_portaddr_nulls +EXPORT_SYMBOL vmlinux 0x6f003f2e tcp_proc_register +EXPORT_SYMBOL vmlinux 0x6f07c3f6 module_layout +EXPORT_SYMBOL vmlinux 0x6f195595 __wait_on_bit_lock +EXPORT_SYMBOL vmlinux 0x6f20960a full_name_hash +EXPORT_SYMBOL vmlinux 0x6f26cb7b idr_get_next +EXPORT_SYMBOL vmlinux 0x6f5b412c kdb_current_task +EXPORT_SYMBOL vmlinux 0x6f5ec7ec idr_init +EXPORT_SYMBOL vmlinux 0x6f696819 param_set_uint +EXPORT_SYMBOL vmlinux 0x6f6f9f88 mipi_dsi_dcs_get_pixel_format +EXPORT_SYMBOL vmlinux 0x6f85eb5a input_set_abs_params +EXPORT_SYMBOL vmlinux 0x6f88effb hdmi_avi_infoframe_init +EXPORT_SYMBOL vmlinux 0x6f9914f1 __devcgroup_inode_permission +EXPORT_SYMBOL vmlinux 0x6fa3e56b request_key_async_with_auxdata +EXPORT_SYMBOL vmlinux 0x6fb89597 scsi_unblock_requests +EXPORT_SYMBOL vmlinux 0x6fbf07cd __free_page_frag +EXPORT_SYMBOL vmlinux 0x6fcb87a1 touch_softlockup_watchdog +EXPORT_SYMBOL vmlinux 0x6feb2039 acpi_write +EXPORT_SYMBOL vmlinux 0x700dccdf phy_device_register +EXPORT_SYMBOL vmlinux 0x7023bea8 unregister_acpi_notifier +EXPORT_SYMBOL vmlinux 0x7033440f scsi_cmd_get_serial +EXPORT_SYMBOL vmlinux 0x704a0ad7 scsi_target_quiesce +EXPORT_SYMBOL vmlinux 0x704ae1a4 scsi_is_host_device +EXPORT_SYMBOL vmlinux 0x70523a7a __cond_resched_softirq +EXPORT_SYMBOL vmlinux 0x70629fd8 __serio_register_port +EXPORT_SYMBOL vmlinux 0x7065640b nf_register_hook +EXPORT_SYMBOL vmlinux 0x706d051c del_timer_sync +EXPORT_SYMBOL vmlinux 0x7077069f pci_disable_link_state +EXPORT_SYMBOL vmlinux 0x707f43f6 __ctzdi2 +EXPORT_SYMBOL vmlinux 0x709e40fb scsi_dma_unmap +EXPORT_SYMBOL vmlinux 0x70b1c488 neigh_seq_start +EXPORT_SYMBOL vmlinux 0x70b77229 pneigh_lookup +EXPORT_SYMBOL vmlinux 0x70bd5c16 xfrm_input_resume +EXPORT_SYMBOL vmlinux 0x70cb01a5 write_dirty_buffer +EXPORT_SYMBOL vmlinux 0x70f96f88 glob_match +EXPORT_SYMBOL vmlinux 0x70fbce7e mmc_of_parse +EXPORT_SYMBOL vmlinux 0x7119a8d6 i2c_release_client +EXPORT_SYMBOL vmlinux 0x71231fed netdev_notify_peers +EXPORT_SYMBOL vmlinux 0x7129e5f8 hex_asc +EXPORT_SYMBOL vmlinux 0x713859aa seq_vprintf +EXPORT_SYMBOL vmlinux 0x713bf692 copy_from_iter +EXPORT_SYMBOL vmlinux 0x71510675 vfs_link +EXPORT_SYMBOL vmlinux 0x7151198c find_get_pages_tag +EXPORT_SYMBOL vmlinux 0x71618486 inode_add_bytes +EXPORT_SYMBOL vmlinux 0x7171121c overflowgid +EXPORT_SYMBOL vmlinux 0x71895063 textsearch_prepare +EXPORT_SYMBOL vmlinux 0x718a08a9 posix_test_lock +EXPORT_SYMBOL vmlinux 0x7194f6c5 cdrom_open +EXPORT_SYMBOL vmlinux 0x71a50dbc register_blkdev +EXPORT_SYMBOL vmlinux 0x71a672ef dmam_pool_destroy +EXPORT_SYMBOL vmlinux 0x71a9ad6d pci_bus_read_config_word +EXPORT_SYMBOL vmlinux 0x71b304c5 scsi_bios_ptable +EXPORT_SYMBOL vmlinux 0x71b7ceca sock_update_memcg +EXPORT_SYMBOL vmlinux 0x71c53594 alloc_netdev_mqs +EXPORT_SYMBOL vmlinux 0x71ca84c4 kobject_get +EXPORT_SYMBOL vmlinux 0x71e21f24 follow_down +EXPORT_SYMBOL vmlinux 0x71eb1768 pci_set_mwi +EXPORT_SYMBOL vmlinux 0x71f7929f skb_store_bits +EXPORT_SYMBOL vmlinux 0x720105e7 vme_slot_num +EXPORT_SYMBOL vmlinux 0x720b90ac vfs_mkdir +EXPORT_SYMBOL vmlinux 0x721af9fb jbd2_journal_load +EXPORT_SYMBOL vmlinux 0x7220a87a default_llseek +EXPORT_SYMBOL vmlinux 0x72262876 ps2_cmd_aborted +EXPORT_SYMBOL vmlinux 0x7257c3b6 prepare_binprm +EXPORT_SYMBOL vmlinux 0x727f7ee6 of_get_next_available_child +EXPORT_SYMBOL vmlinux 0x72a34b1f eth_type_trans +EXPORT_SYMBOL vmlinux 0x72a85620 __mod_zone_page_state +EXPORT_SYMBOL vmlinux 0x72e5ec2a scsi_mode_sense +EXPORT_SYMBOL vmlinux 0x72e9fd07 eth_prepare_mac_addr_change +EXPORT_SYMBOL vmlinux 0x72ea7b2d scsi_device_type +EXPORT_SYMBOL vmlinux 0x7315a4e9 twl6030_mmc_card_detect_config +EXPORT_SYMBOL vmlinux 0x7318f289 dev_set_mac_address +EXPORT_SYMBOL vmlinux 0x731d2c3e sock_rfree +EXPORT_SYMBOL vmlinux 0x731dba7a xen_domain_type +EXPORT_SYMBOL vmlinux 0x732210bf jbd2_journal_begin_ordered_truncate +EXPORT_SYMBOL vmlinux 0x7327cda2 of_dev_put +EXPORT_SYMBOL vmlinux 0x73326dfd ata_print_version +EXPORT_SYMBOL vmlinux 0x733c3b54 kasprintf +EXPORT_SYMBOL vmlinux 0x735c6cf1 pci_get_class +EXPORT_SYMBOL vmlinux 0x73753e4c kill_bdev +EXPORT_SYMBOL vmlinux 0x739335ce alloc_file +EXPORT_SYMBOL vmlinux 0x73c0dd0e blk_mq_free_tag_set +EXPORT_SYMBOL vmlinux 0x73c2e06a mmc_retune_timer_stop +EXPORT_SYMBOL vmlinux 0x73d0ef8f xfrm4_rcv_cb +EXPORT_SYMBOL vmlinux 0x7410aba2 strreplace +EXPORT_SYMBOL vmlinux 0x7413a79c misc_deregister +EXPORT_SYMBOL vmlinux 0x741608c3 cpu_possible_mask +EXPORT_SYMBOL vmlinux 0x742fcc54 mdiobus_alloc_size +EXPORT_SYMBOL vmlinux 0x74330783 neigh_lookup_nodev +EXPORT_SYMBOL vmlinux 0x74557ce9 bdget_disk +EXPORT_SYMBOL vmlinux 0x745787ed sk_ns_capable +EXPORT_SYMBOL vmlinux 0x7466fe8a vm_insert_page +EXPORT_SYMBOL vmlinux 0x747195f0 hdmi_vendor_infoframe_init +EXPORT_SYMBOL vmlinux 0x7485e15e unregister_chrdev_region +EXPORT_SYMBOL vmlinux 0x748b5b58 __sk_mem_schedule +EXPORT_SYMBOL vmlinux 0x7497d527 nf_setsockopt +EXPORT_SYMBOL vmlinux 0x7498f8d0 add_random_ready_callback +EXPORT_SYMBOL vmlinux 0x74c134b9 __sw_hweight32 +EXPORT_SYMBOL vmlinux 0x74c7b4ab kernel_param_lock +EXPORT_SYMBOL vmlinux 0x74ccb842 get_user_pages_unlocked +EXPORT_SYMBOL vmlinux 0x74dce3d8 tcp_connect +EXPORT_SYMBOL vmlinux 0x74e5ff1a udpv6_encap_enable +EXPORT_SYMBOL vmlinux 0x750401b1 sk_stream_wait_connect +EXPORT_SYMBOL vmlinux 0x75176db2 simple_dentry_operations +EXPORT_SYMBOL vmlinux 0x7532588a alloc_pages_exact +EXPORT_SYMBOL vmlinux 0x75492ed8 devfreq_register_opp_notifier +EXPORT_SYMBOL vmlinux 0x7561ce5b kthread_create_on_node +EXPORT_SYMBOL vmlinux 0x75623d74 generic_file_mmap +EXPORT_SYMBOL vmlinux 0x7570696c mmc_erase +EXPORT_SYMBOL vmlinux 0x75850d01 __vmalloc +EXPORT_SYMBOL vmlinux 0x75a3714a get_super_thawed +EXPORT_SYMBOL vmlinux 0x75bda77a seq_hlist_next +EXPORT_SYMBOL vmlinux 0x75bdea12 iommu_area_alloc +EXPORT_SYMBOL vmlinux 0x75da2eb5 netdev_rx_csum_fault +EXPORT_SYMBOL vmlinux 0x75e24d72 inet_csk_init_xmit_timers +EXPORT_SYMBOL vmlinux 0x75edba5e may_umount_tree +EXPORT_SYMBOL vmlinux 0x75fbdefd acpi_remove_address_space_handler +EXPORT_SYMBOL vmlinux 0x76030e4b key_put +EXPORT_SYMBOL vmlinux 0x760a0f4f yield +EXPORT_SYMBOL vmlinux 0x7611d31f skb_append +EXPORT_SYMBOL vmlinux 0x763165ed invalidate_mapping_pages +EXPORT_SYMBOL vmlinux 0x76353625 blk_sync_queue +EXPORT_SYMBOL vmlinux 0x7645af6f sg_pcopy_from_buffer +EXPORT_SYMBOL vmlinux 0x7647726c handle_sysrq +EXPORT_SYMBOL vmlinux 0x764bd77c request_resource +EXPORT_SYMBOL vmlinux 0x7655352e kern_path_create +EXPORT_SYMBOL vmlinux 0x76555837 generic_pipe_buf_confirm +EXPORT_SYMBOL vmlinux 0x7657383a netif_stacked_transfer_operstate +EXPORT_SYMBOL vmlinux 0x765ff474 crc_t10dif_generic +EXPORT_SYMBOL vmlinux 0x7676358e sk_free +EXPORT_SYMBOL vmlinux 0x767dd8fd acpi_get_irq_routing_table +EXPORT_SYMBOL vmlinux 0x767e4e86 inet_frags_init +EXPORT_SYMBOL vmlinux 0x767f8b22 of_device_alloc +EXPORT_SYMBOL vmlinux 0x7694aa63 i2c_smbus_write_byte_data +EXPORT_SYMBOL vmlinux 0x76a5b343 iommu_tbl_range_free +EXPORT_SYMBOL vmlinux 0x76adb976 mmc_detect_change +EXPORT_SYMBOL vmlinux 0x76d3cd60 laptop_mode +EXPORT_SYMBOL vmlinux 0x76d451c4 add_taint +EXPORT_SYMBOL vmlinux 0x76ead244 amba_driver_unregister +EXPORT_SYMBOL vmlinux 0x7705c27c elv_add_request +EXPORT_SYMBOL vmlinux 0x770d8184 mipi_dsi_attach +EXPORT_SYMBOL vmlinux 0x7714fb80 padata_remove_cpu +EXPORT_SYMBOL vmlinux 0x771c72fa simple_statfs +EXPORT_SYMBOL vmlinux 0x771cf835 dma_pool_alloc +EXPORT_SYMBOL vmlinux 0x77290d00 up_write +EXPORT_SYMBOL vmlinux 0x7730e84b inet_recvmsg +EXPORT_SYMBOL vmlinux 0x7733192f mutex_unlock +EXPORT_SYMBOL vmlinux 0x773fa409 __kfifo_dma_in_finish_r +EXPORT_SYMBOL vmlinux 0x7741adcd __i2c_transfer +EXPORT_SYMBOL vmlinux 0x77456e0a acpi_root_dir +EXPORT_SYMBOL vmlinux 0x775abe00 tcp_parse_options +EXPORT_SYMBOL vmlinux 0x77628d37 mount_bdev +EXPORT_SYMBOL vmlinux 0x7763a22b blk_stack_limits +EXPORT_SYMBOL vmlinux 0x7764f264 pnp_is_active +EXPORT_SYMBOL vmlinux 0x77717741 nf_register_hooks +EXPORT_SYMBOL vmlinux 0x7785575f tty_port_open +EXPORT_SYMBOL vmlinux 0x779a18af kstrtoll +EXPORT_SYMBOL vmlinux 0x77abc2fd kill_pid +EXPORT_SYMBOL vmlinux 0x77bc13a0 strim +EXPORT_SYMBOL vmlinux 0x77bd12b4 phy_connect_direct +EXPORT_SYMBOL vmlinux 0x77df41ed ppp_register_net_channel +EXPORT_SYMBOL vmlinux 0x77e36fba iov_iter_advance +EXPORT_SYMBOL vmlinux 0x77e48f2f generic_fillattr +EXPORT_SYMBOL vmlinux 0x77e5b338 vfs_iter_read +EXPORT_SYMBOL vmlinux 0x77ef3611 mutex_lock_killable +EXPORT_SYMBOL vmlinux 0x77f53abc acpi_get_vendor_resource +EXPORT_SYMBOL vmlinux 0x77fe2d1e mdiobus_register +EXPORT_SYMBOL vmlinux 0x780a3c56 of_find_mipi_dsi_device_by_node +EXPORT_SYMBOL vmlinux 0x783b3563 wake_up_atomic_t +EXPORT_SYMBOL vmlinux 0x7846af3e __kfifo_len_r +EXPORT_SYMBOL vmlinux 0x785a990e new_inode +EXPORT_SYMBOL vmlinux 0x7880c781 dm_kcopyd_prepare_callback +EXPORT_SYMBOL vmlinux 0x78930651 mfd_add_devices +EXPORT_SYMBOL vmlinux 0x789affb1 frontswap_tmem_exclusive_gets +EXPORT_SYMBOL vmlinux 0x78b7094a dm_kobject_release +EXPORT_SYMBOL vmlinux 0x78c19a6d mempool_resize +EXPORT_SYMBOL vmlinux 0x78cc998b netdev_lower_get_next_private +EXPORT_SYMBOL vmlinux 0x78d2b81f __xfrm_policy_check +EXPORT_SYMBOL vmlinux 0x78df6bd7 no_pci_devices +EXPORT_SYMBOL vmlinux 0x790120b8 mark_page_accessed +EXPORT_SYMBOL vmlinux 0x79068fda acpi_install_method +EXPORT_SYMBOL vmlinux 0x790cc7e7 account_page_redirty +EXPORT_SYMBOL vmlinux 0x790fe4a4 pci_unmap_rom +EXPORT_SYMBOL vmlinux 0x791533d9 nf_log_unregister +EXPORT_SYMBOL vmlinux 0x79307dfd pagecache_get_page +EXPORT_SYMBOL vmlinux 0x79383dfd dev_mc_sync +EXPORT_SYMBOL vmlinux 0x793b4fb5 blk_init_queue_node +EXPORT_SYMBOL vmlinux 0x793db510 xfrm_state_check_expire +EXPORT_SYMBOL vmlinux 0x795d0b48 ipv6_setsockopt +EXPORT_SYMBOL vmlinux 0x796fc5ce scsi_get_sense_info_fld +EXPORT_SYMBOL vmlinux 0x7984eefc key_update +EXPORT_SYMBOL vmlinux 0x7985d043 radix_tree_tag_set +EXPORT_SYMBOL vmlinux 0x79a33f85 vme_get_size +EXPORT_SYMBOL vmlinux 0x79aa04a2 get_random_bytes +EXPORT_SYMBOL vmlinux 0x79c214f2 netif_rx +EXPORT_SYMBOL vmlinux 0x79f83e57 pneigh_enqueue +EXPORT_SYMBOL vmlinux 0x7a1b39b4 generic_write_checks +EXPORT_SYMBOL vmlinux 0x7a26e25d dst_discard_sk +EXPORT_SYMBOL vmlinux 0x7a27c184 ewma_init +EXPORT_SYMBOL vmlinux 0x7a4497db kzfree +EXPORT_SYMBOL vmlinux 0x7a548a95 node_states +EXPORT_SYMBOL vmlinux 0x7a579765 kernel_connect +EXPORT_SYMBOL vmlinux 0x7a63d0aa i2c_smbus_write_i2c_block_data +EXPORT_SYMBOL vmlinux 0x7a64bc8e mmc_can_reset +EXPORT_SYMBOL vmlinux 0x7a6cdedc do_settimeofday64 +EXPORT_SYMBOL vmlinux 0x7a7b5c0a bitmap_end_sync +EXPORT_SYMBOL vmlinux 0x7a877e6b of_find_property +EXPORT_SYMBOL vmlinux 0x7a925833 cpufreq_get_global_kobject +EXPORT_SYMBOL vmlinux 0x7aa1756e kvfree +EXPORT_SYMBOL vmlinux 0x7aad2746 dev_printk +EXPORT_SYMBOL vmlinux 0x7ab88a45 system_freezing_cnt +EXPORT_SYMBOL vmlinux 0x7ad050b9 qid_lt +EXPORT_SYMBOL vmlinux 0x7add44b5 posix_acl_valid +EXPORT_SYMBOL vmlinux 0x7af36efd remove_proc_subtree +EXPORT_SYMBOL vmlinux 0x7b0624e9 skb_mac_gso_segment +EXPORT_SYMBOL vmlinux 0x7b16235f hdmi_vendor_infoframe_pack +EXPORT_SYMBOL vmlinux 0x7b2aef6c __krealloc +EXPORT_SYMBOL vmlinux 0x7b3f183c writeback_inodes_sb +EXPORT_SYMBOL vmlinux 0x7b6646bb _raw_read_lock +EXPORT_SYMBOL vmlinux 0x7b809578 wait_for_completion_io_timeout +EXPORT_SYMBOL vmlinux 0x7b8a7a25 netif_napi_del +EXPORT_SYMBOL vmlinux 0x7ba821a2 ip6_frag_init +EXPORT_SYMBOL vmlinux 0x7bad7a1a acpi_walk_resources +EXPORT_SYMBOL vmlinux 0x7baec79d ip_generic_getfrag +EXPORT_SYMBOL vmlinux 0x7bb3fdf0 pcie_port_service_unregister +EXPORT_SYMBOL vmlinux 0x7be0f8e7 dev_uc_add +EXPORT_SYMBOL vmlinux 0x7be75ffc acpi_walk_resource_buffer +EXPORT_SYMBOL vmlinux 0x7c1372e8 panic +EXPORT_SYMBOL vmlinux 0x7c173634 __bitmap_complement +EXPORT_SYMBOL vmlinux 0x7c2d098f krealloc +EXPORT_SYMBOL vmlinux 0x7c46233a cpufreq_quick_get +EXPORT_SYMBOL vmlinux 0x7c61340c __release_region +EXPORT_SYMBOL vmlinux 0x7c80aca0 pci_msix_vec_count +EXPORT_SYMBOL vmlinux 0x7c9366a4 padata_set_cpumask +EXPORT_SYMBOL vmlinux 0x7c98845d twl_i2c_read +EXPORT_SYMBOL vmlinux 0x7cae67f9 sdev_disable_disk_events +EXPORT_SYMBOL vmlinux 0x7cb1ae69 cpu_down +EXPORT_SYMBOL vmlinux 0x7cb8acfa napi_gro_flush +EXPORT_SYMBOL vmlinux 0x7ce18c9f from_kqid +EXPORT_SYMBOL vmlinux 0x7ce2e23a xfrm_input_register_afinfo +EXPORT_SYMBOL vmlinux 0x7ce83365 acpi_remove_table_handler +EXPORT_SYMBOL vmlinux 0x7cec435e compat_sock_get_timestamp +EXPORT_SYMBOL vmlinux 0x7cf069eb blk_start_request +EXPORT_SYMBOL vmlinux 0x7cf28fa7 mpage_writepages +EXPORT_SYMBOL vmlinux 0x7cf35220 vme_master_free +EXPORT_SYMBOL vmlinux 0x7d0db45c jiffies_to_clock_t +EXPORT_SYMBOL vmlinux 0x7d0dfabd gen_pool_dma_alloc +EXPORT_SYMBOL vmlinux 0x7d11c268 jiffies +EXPORT_SYMBOL vmlinux 0x7d272ad8 tcp_release_cb +EXPORT_SYMBOL vmlinux 0x7d28d4e8 __genl_register_family +EXPORT_SYMBOL vmlinux 0x7d34c13d mfd_cell_enable +EXPORT_SYMBOL vmlinux 0x7d37d069 xfrm_policy_delete +EXPORT_SYMBOL vmlinux 0x7d510a46 inet6_add_offload +EXPORT_SYMBOL vmlinux 0x7d705738 blk_start_plug +EXPORT_SYMBOL vmlinux 0x7d7d63df cpumask_next_and +EXPORT_SYMBOL vmlinux 0x7d8c53cf alloc_fddidev +EXPORT_SYMBOL vmlinux 0x7d8cd2cd kmalloc_dma_caches +EXPORT_SYMBOL vmlinux 0x7d905038 __module_get +EXPORT_SYMBOL vmlinux 0x7d94f746 acpi_os_write_port +EXPORT_SYMBOL vmlinux 0x7deff673 dm_consume_args +EXPORT_SYMBOL vmlinux 0x7e146804 of_device_is_available +EXPORT_SYMBOL vmlinux 0x7e30af65 sk_dst_check +EXPORT_SYMBOL vmlinux 0x7e38387d kernel_read +EXPORT_SYMBOL vmlinux 0x7e5db8c3 sync_inode_metadata +EXPORT_SYMBOL vmlinux 0x7e6139a5 shrink_dcache_parent +EXPORT_SYMBOL vmlinux 0x7e6a847e bio_copy_data +EXPORT_SYMBOL vmlinux 0x7e70132a dst_destroy +EXPORT_SYMBOL vmlinux 0x7e9da777 __percpu_counter_init +EXPORT_SYMBOL vmlinux 0x7eb1bbbd devm_input_allocate_device +EXPORT_SYMBOL vmlinux 0x7ebd4be4 trace_print_flags_seq +EXPORT_SYMBOL vmlinux 0x7ed2413a of_platform_device_create +EXPORT_SYMBOL vmlinux 0x7ee5cb15 flush_old_exec +EXPORT_SYMBOL vmlinux 0x7ee6d93a nsecs_to_jiffies64 +EXPORT_SYMBOL vmlinux 0x7efc1e3c cros_ec_query_all +EXPORT_SYMBOL vmlinux 0x7f02188f __msecs_to_jiffies +EXPORT_SYMBOL vmlinux 0x7f069fe0 file_update_time +EXPORT_SYMBOL vmlinux 0x7f0ea713 get_cached_acl_rcu +EXPORT_SYMBOL vmlinux 0x7f17ccc3 generic_file_open +EXPORT_SYMBOL vmlinux 0x7f24de73 jiffies_to_usecs +EXPORT_SYMBOL vmlinux 0x7f4c631f scsi_host_lookup +EXPORT_SYMBOL vmlinux 0x7f51344b jbd2_journal_force_commit +EXPORT_SYMBOL vmlinux 0x7f62a045 cpu_maps_update_done +EXPORT_SYMBOL vmlinux 0x7f74855c jbd2_journal_set_features +EXPORT_SYMBOL vmlinux 0x7f885f49 poll_schedule_timeout +EXPORT_SYMBOL vmlinux 0x7f9a6695 posix_lock_file +EXPORT_SYMBOL vmlinux 0x7fbd10d2 radix_tree_next_chunk +EXPORT_SYMBOL vmlinux 0x7fc780d7 pcix_get_mmrbc +EXPORT_SYMBOL vmlinux 0x7fcd26bd key_task_permission +EXPORT_SYMBOL vmlinux 0x7fe32873 rb_replace_node +EXPORT_SYMBOL vmlinux 0x7fe38f48 sg_copy_to_buffer +EXPORT_SYMBOL vmlinux 0x7fe4d75f posix_lock_inode_wait +EXPORT_SYMBOL vmlinux 0x7fee87ac __mutex_init +EXPORT_SYMBOL vmlinux 0x7ff8df3f tcf_hash_destroy +EXPORT_SYMBOL vmlinux 0x7ff92cec rawv6_mh_filter_unregister +EXPORT_SYMBOL vmlinux 0x800619f6 mmc_gpiod_request_ro +EXPORT_SYMBOL vmlinux 0x800851c9 netdev_upper_dev_unlink +EXPORT_SYMBOL vmlinux 0x800d6e94 netdev_all_upper_get_next_dev_rcu +EXPORT_SYMBOL vmlinux 0x80138c34 fixed_size_llseek +EXPORT_SYMBOL vmlinux 0x802436a3 compat_tcp_getsockopt +EXPORT_SYMBOL vmlinux 0x80291e48 skb_free_datagram_locked +EXPORT_SYMBOL vmlinux 0x8035c652 __pci_enable_wake +EXPORT_SYMBOL vmlinux 0x8048e271 mntput +EXPORT_SYMBOL vmlinux 0x8049b07f load_nls_default +EXPORT_SYMBOL vmlinux 0x804ca715 alloc_disk +EXPORT_SYMBOL vmlinux 0x80580472 cpufreq_generic_suspend +EXPORT_SYMBOL vmlinux 0x805b2dc8 icmp_send +EXPORT_SYMBOL vmlinux 0x805c9a0f padata_start +EXPORT_SYMBOL vmlinux 0x8068c15c kblockd_schedule_delayed_work +EXPORT_SYMBOL vmlinux 0x807917ef pci_dev_driver +EXPORT_SYMBOL vmlinux 0x80791a8c radix_tree_gang_lookup_slot +EXPORT_SYMBOL vmlinux 0x80868fd5 bio_add_page +EXPORT_SYMBOL vmlinux 0x80ae43d6 vme_unregister_driver +EXPORT_SYMBOL vmlinux 0x80c37182 uart_write_wakeup +EXPORT_SYMBOL vmlinux 0x80c66f43 bitmap_cond_end_sync +EXPORT_SYMBOL vmlinux 0x80ca5026 _bin2bcd +EXPORT_SYMBOL vmlinux 0x80ccff04 put_disk +EXPORT_SYMBOL vmlinux 0x80cf2d3b pm860x_bulk_read +EXPORT_SYMBOL vmlinux 0x80d68d3e fb_register_client +EXPORT_SYMBOL vmlinux 0x80eb423b acpi_get_object_info +EXPORT_SYMBOL vmlinux 0x813c3759 __dev_get_by_index +EXPORT_SYMBOL vmlinux 0x814646bf insert_inode_locked +EXPORT_SYMBOL vmlinux 0x81472677 acpi_get_table +EXPORT_SYMBOL vmlinux 0x814e7730 nf_ct_destroy +EXPORT_SYMBOL vmlinux 0x81533963 sysfs_format_mac +EXPORT_SYMBOL vmlinux 0x81566166 sb_set_blocksize +EXPORT_SYMBOL vmlinux 0x815b5dd4 match_octal +EXPORT_SYMBOL vmlinux 0x816014dc nla_put_nohdr +EXPORT_SYMBOL vmlinux 0x8161b780 alloc_skb_with_frags +EXPORT_SYMBOL vmlinux 0x81665d41 security_sb_clone_mnt_opts +EXPORT_SYMBOL vmlinux 0x8168a0f7 do_splice_direct +EXPORT_SYMBOL vmlinux 0x816b5343 register_cdrom +EXPORT_SYMBOL vmlinux 0x817546e2 sock_no_poll +EXPORT_SYMBOL vmlinux 0x81a929fd search_binary_handler +EXPORT_SYMBOL vmlinux 0x81afc4af nf_ct_attach +EXPORT_SYMBOL vmlinux 0x81b8976e dev_alloc_name +EXPORT_SYMBOL vmlinux 0x81db6ebb xz_dec_reset +EXPORT_SYMBOL vmlinux 0x81e1bbe3 bio_clone_bioset +EXPORT_SYMBOL vmlinux 0x81e64230 dcb_getapp +EXPORT_SYMBOL vmlinux 0x81e6b37f dmi_get_system_info +EXPORT_SYMBOL vmlinux 0x8200a62c of_cpufreq_power_cooling_register +EXPORT_SYMBOL vmlinux 0x8200cc40 __dev_kfree_skb_any +EXPORT_SYMBOL vmlinux 0x82072614 tasklet_kill +EXPORT_SYMBOL vmlinux 0x8212721d xenbus_dev_request_and_reply +EXPORT_SYMBOL vmlinux 0x82155a94 pci_enable_msix +EXPORT_SYMBOL vmlinux 0x82194467 input_handler_for_each_handle +EXPORT_SYMBOL vmlinux 0x8220b674 __quota_error +EXPORT_SYMBOL vmlinux 0x822731df nvdimm_namespace_capacity +EXPORT_SYMBOL vmlinux 0x82458f7f radix_tree_delete_item +EXPORT_SYMBOL vmlinux 0x82508f79 tty_port_lower_dtr_rts +EXPORT_SYMBOL vmlinux 0x82701365 int_to_scsilun +EXPORT_SYMBOL vmlinux 0x827788f2 notify_change +EXPORT_SYMBOL vmlinux 0x828062b1 __frontswap_init +EXPORT_SYMBOL vmlinux 0x82871b60 dmt_modes +EXPORT_SYMBOL vmlinux 0x82944e47 fb_find_mode +EXPORT_SYMBOL vmlinux 0x82acfb70 blk_iopoll_sched +EXPORT_SYMBOL vmlinux 0x82bc465a pm860x_reg_write +EXPORT_SYMBOL vmlinux 0x82dd8713 qdisc_class_hash_grow +EXPORT_SYMBOL vmlinux 0x8304733a blk_set_stacking_limits +EXPORT_SYMBOL vmlinux 0x83149f73 compat_ip_getsockopt +EXPORT_SYMBOL vmlinux 0x8322ae4d phy_ethtool_get_eee +EXPORT_SYMBOL vmlinux 0x834479f8 t10_pi_type3_crc +EXPORT_SYMBOL vmlinux 0x83459bba clk_get +EXPORT_SYMBOL vmlinux 0x835cda3d register_qdisc +EXPORT_SYMBOL vmlinux 0x836f38fd d_hash_and_lookup +EXPORT_SYMBOL vmlinux 0x8373964a devm_gpiod_get_array_optional +EXPORT_SYMBOL vmlinux 0x8383ff74 mmc_set_data_timeout +EXPORT_SYMBOL vmlinux 0x839430b2 __register_cpu_notifier +EXPORT_SYMBOL vmlinux 0x83b009ea xfrm_state_walk_init +EXPORT_SYMBOL vmlinux 0x83c52fba xfrm4_protocol_init +EXPORT_SYMBOL vmlinux 0x83e0e2fa skb_copy_datagram_from_iter +EXPORT_SYMBOL vmlinux 0x8401f42f kset_unregister +EXPORT_SYMBOL vmlinux 0x84060081 xen_poll_irq_timeout +EXPORT_SYMBOL vmlinux 0x840c9d73 dev_activate +EXPORT_SYMBOL vmlinux 0x84115ea1 redirty_page_for_writepage +EXPORT_SYMBOL vmlinux 0x841971c0 udp_proc_unregister +EXPORT_SYMBOL vmlinux 0x841a1660 kfree_skb +EXPORT_SYMBOL vmlinux 0x843bf4f9 truncate_pagecache_range +EXPORT_SYMBOL vmlinux 0x84440f69 scsi_print_sense +EXPORT_SYMBOL vmlinux 0x844c2afb genphy_restart_aneg +EXPORT_SYMBOL vmlinux 0x844e3767 radix_tree_lookup +EXPORT_SYMBOL vmlinux 0x84599252 ip_route_me_harder +EXPORT_SYMBOL vmlinux 0x8488cacc blk_fetch_request +EXPORT_SYMBOL vmlinux 0x84c15d2b pci_disable_msix +EXPORT_SYMBOL vmlinux 0x84d71ec7 pnp_unregister_card_driver +EXPORT_SYMBOL vmlinux 0x84f57440 key_invalidate +EXPORT_SYMBOL vmlinux 0x84ffea8b idr_preload +EXPORT_SYMBOL vmlinux 0x85061b76 _raw_write_lock_bh +EXPORT_SYMBOL vmlinux 0x8509e8a9 csum_and_copy_to_iter +EXPORT_SYMBOL vmlinux 0x851a02f2 pci_add_new_bus +EXPORT_SYMBOL vmlinux 0x851a9e1c sock_common_recvmsg +EXPORT_SYMBOL vmlinux 0x852ef3cc scsi_is_target_device +EXPORT_SYMBOL vmlinux 0x8536e14e vfs_unlink +EXPORT_SYMBOL vmlinux 0x854d06a3 serio_unregister_driver +EXPORT_SYMBOL vmlinux 0x855ec102 netdev_update_features +EXPORT_SYMBOL vmlinux 0x85670f1d rtnl_is_locked +EXPORT_SYMBOL vmlinux 0x8570c668 eth_header_parse +EXPORT_SYMBOL vmlinux 0x857b6c8f input_allocate_device +EXPORT_SYMBOL vmlinux 0x857bca9e dma_release_declared_memory +EXPORT_SYMBOL vmlinux 0x8585ec38 km_report +EXPORT_SYMBOL vmlinux 0x859dce69 __skb_checksum_complete +EXPORT_SYMBOL vmlinux 0x85b5e625 rfkill_set_states +EXPORT_SYMBOL vmlinux 0x85db35a9 tty_unregister_driver +EXPORT_SYMBOL vmlinux 0x85df9b6c strsep +EXPORT_SYMBOL vmlinux 0x85ec398b dev_get_iflink +EXPORT_SYMBOL vmlinux 0x85eef426 generic_getxattr +EXPORT_SYMBOL vmlinux 0x85efc7e0 zero_pfn +EXPORT_SYMBOL vmlinux 0x85f53ebd __blk_mq_end_request +EXPORT_SYMBOL vmlinux 0x85fb7096 dev_queue_xmit_accel +EXPORT_SYMBOL vmlinux 0x86024854 of_find_device_by_node +EXPORT_SYMBOL vmlinux 0x862391a3 generic_read_dir +EXPORT_SYMBOL vmlinux 0x862c0c2a register_gifconf +EXPORT_SYMBOL vmlinux 0x862d3ece mount_single +EXPORT_SYMBOL vmlinux 0x8646fa50 gen_pool_set_algo +EXPORT_SYMBOL vmlinux 0x865029ac __hw_addr_sync +EXPORT_SYMBOL vmlinux 0x8664f62e cpufreq_update_policy +EXPORT_SYMBOL vmlinux 0x86890879 simple_symlink_inode_operations +EXPORT_SYMBOL vmlinux 0x868acba5 get_options +EXPORT_SYMBOL vmlinux 0x868c5679 tcp_init_sock +EXPORT_SYMBOL vmlinux 0x86a6824d udp_del_offload +EXPORT_SYMBOL vmlinux 0x86b7f042 mipi_dsi_dcs_write +EXPORT_SYMBOL vmlinux 0x86bf49f0 blk_integrity_merge_bio +EXPORT_SYMBOL vmlinux 0x86c93191 __devm_gpiod_get_index_optional +EXPORT_SYMBOL vmlinux 0x86ceeff4 __kfree_skb +EXPORT_SYMBOL vmlinux 0x86d5fc16 jbd2_journal_destroy +EXPORT_SYMBOL vmlinux 0x86ea4d38 complete_all +EXPORT_SYMBOL vmlinux 0x86fb9b05 bitmap_parse_user +EXPORT_SYMBOL vmlinux 0x86fc265b acl_by_type +EXPORT_SYMBOL vmlinux 0x871c0a7e fiemap_check_flags +EXPORT_SYMBOL vmlinux 0x871df9bb inet6_del_offload +EXPORT_SYMBOL vmlinux 0x872dbd3e amba_device_register +EXPORT_SYMBOL vmlinux 0x87303607 bh_submit_read +EXPORT_SYMBOL vmlinux 0x87569f5c i2c_put_adapter +EXPORT_SYMBOL vmlinux 0x87635b37 tcp_conn_request +EXPORT_SYMBOL vmlinux 0x876dafc3 ec_write +EXPORT_SYMBOL vmlinux 0x8770f220 ipv6_mc_check_mld +EXPORT_SYMBOL vmlinux 0x878ab3ce sysctl_tcp_adv_win_scale +EXPORT_SYMBOL vmlinux 0x87a27c8c d_instantiate_no_diralias +EXPORT_SYMBOL vmlinux 0x87afc79c flow_cache_lookup +EXPORT_SYMBOL vmlinux 0x87c5aa8d param_ops_byte +EXPORT_SYMBOL vmlinux 0x87dcc17a pm_vt_switch_required +EXPORT_SYMBOL vmlinux 0x87de1c35 block_is_partially_uptodate +EXPORT_SYMBOL vmlinux 0x87de8f33 netdev_warn +EXPORT_SYMBOL vmlinux 0x87f9d9ce rwsem_down_write_failed +EXPORT_SYMBOL vmlinux 0x87fee720 acpi_bus_get_device +EXPORT_SYMBOL vmlinux 0x881abc3b uart_register_driver +EXPORT_SYMBOL vmlinux 0x8828e703 nvdimm_namespace_common_probe +EXPORT_SYMBOL vmlinux 0x885aad05 pid_task +EXPORT_SYMBOL vmlinux 0x88664a62 kobject_del +EXPORT_SYMBOL vmlinux 0x887fa47e __getnstimeofday64 +EXPORT_SYMBOL vmlinux 0x88858824 backlight_device_register +EXPORT_SYMBOL vmlinux 0x88b4e83b down_trylock +EXPORT_SYMBOL vmlinux 0x88c23123 kobject_put +EXPORT_SYMBOL vmlinux 0x88c790f6 __cleancache_get_page +EXPORT_SYMBOL vmlinux 0x88e44da1 nobh_write_end +EXPORT_SYMBOL vmlinux 0x891bef26 vm_stat +EXPORT_SYMBOL vmlinux 0x892bb595 of_phy_connect +EXPORT_SYMBOL vmlinux 0x895c3c45 ip6_dst_hoplimit +EXPORT_SYMBOL vmlinux 0x896d2672 tcp_check_req +EXPORT_SYMBOL vmlinux 0x8987189e noop_qdisc +EXPORT_SYMBOL vmlinux 0x898e1f08 blk_queue_update_dma_pad +EXPORT_SYMBOL vmlinux 0x89a77871 cap_mmap_file +EXPORT_SYMBOL vmlinux 0x89afe34e __kfifo_dma_in_prepare +EXPORT_SYMBOL vmlinux 0x89b534f6 blk_queue_max_segments +EXPORT_SYMBOL vmlinux 0x89d397d9 filemap_fdatawait_range +EXPORT_SYMBOL vmlinux 0x89d5538d fb_pad_aligned_buffer +EXPORT_SYMBOL vmlinux 0x89d91163 blk_mq_stop_hw_queue +EXPORT_SYMBOL vmlinux 0x89e0aee0 stop_tty +EXPORT_SYMBOL vmlinux 0x89fab63c scsi_host_get +EXPORT_SYMBOL vmlinux 0x8a1ab4ee timeval_to_jiffies +EXPORT_SYMBOL vmlinux 0x8a1cb619 uart_resume_port +EXPORT_SYMBOL vmlinux 0x8a2678ef pci_pme_active +EXPORT_SYMBOL vmlinux 0x8a490c90 rfkill_set_sw_state +EXPORT_SYMBOL vmlinux 0x8a51d565 quota_send_warning +EXPORT_SYMBOL vmlinux 0x8a6af65c kstrtoul_from_user +EXPORT_SYMBOL vmlinux 0x8a7d1c31 high_memory +EXPORT_SYMBOL vmlinux 0x8a80d7a5 acpi_error +EXPORT_SYMBOL vmlinux 0x8a9240b7 xfrm4_rcv +EXPORT_SYMBOL vmlinux 0x8a99a016 mempool_free_slab +EXPORT_SYMBOL vmlinux 0x8aa57c4f udp_table +EXPORT_SYMBOL vmlinux 0x8aaa5a6d compat_sock_get_timestampns +EXPORT_SYMBOL vmlinux 0x8ac493b2 set_binfmt +EXPORT_SYMBOL vmlinux 0x8ac94c46 to_nd_btt +EXPORT_SYMBOL vmlinux 0x8b063791 scsi_add_device +EXPORT_SYMBOL vmlinux 0x8b0b5e12 cdrom_ioctl +EXPORT_SYMBOL vmlinux 0x8b220fa3 of_find_i2c_device_by_node +EXPORT_SYMBOL vmlinux 0x8b22dc79 pci_enable_device_mem +EXPORT_SYMBOL vmlinux 0x8b2e2f1f init_special_inode +EXPORT_SYMBOL vmlinux 0x8b3489f8 blk_put_queue +EXPORT_SYMBOL vmlinux 0x8b35e873 sg_last +EXPORT_SYMBOL vmlinux 0x8b42a61d mipi_dsi_host_unregister +EXPORT_SYMBOL vmlinux 0x8b43159b register_cpu_notifier +EXPORT_SYMBOL vmlinux 0x8b44fcfa __napi_schedule_irqoff +EXPORT_SYMBOL vmlinux 0x8b484538 iommu_tbl_pool_init +EXPORT_SYMBOL vmlinux 0x8b56f658 d_alloc_pseudo +EXPORT_SYMBOL vmlinux 0x8b618d08 overflowuid +EXPORT_SYMBOL vmlinux 0x8b7ee597 qdisc_create_dflt +EXPORT_SYMBOL vmlinux 0x8b8059bd in_group_p +EXPORT_SYMBOL vmlinux 0x8b823b3e tso_count_descs +EXPORT_SYMBOL vmlinux 0x8b989cf9 acpi_bus_can_wakeup +EXPORT_SYMBOL vmlinux 0x8bb9612c dput +EXPORT_SYMBOL vmlinux 0x8bd0a3fd _raw_write_unlock_bh +EXPORT_SYMBOL vmlinux 0x8be07f82 uart_get_baud_rate +EXPORT_SYMBOL vmlinux 0x8beef76e inet_register_protosw +EXPORT_SYMBOL vmlinux 0x8bf8580f vmap +EXPORT_SYMBOL vmlinux 0x8c52a50e of_translate_dma_address +EXPORT_SYMBOL vmlinux 0x8c63319b jbd2_journal_get_write_access +EXPORT_SYMBOL vmlinux 0x8c637d43 irq_cpu_rmap_add +EXPORT_SYMBOL vmlinux 0x8c98928f inet_addr_type +EXPORT_SYMBOL vmlinux 0x8cb9bbb0 rwsem_wake +EXPORT_SYMBOL vmlinux 0x8cbd695a __scsi_print_sense +EXPORT_SYMBOL vmlinux 0x8cd768e5 free_buffer_head +EXPORT_SYMBOL vmlinux 0x8cd88905 unregister_md_personality +EXPORT_SYMBOL vmlinux 0x8cda8029 xen_clear_irq_pending +EXPORT_SYMBOL vmlinux 0x8d001f06 datagram_poll +EXPORT_SYMBOL vmlinux 0x8d0ff999 jbd2_journal_free_reserved +EXPORT_SYMBOL vmlinux 0x8d13b40e truncate_inode_pages_range +EXPORT_SYMBOL vmlinux 0x8d1cdf86 key_unlink +EXPORT_SYMBOL vmlinux 0x8d3e1ed7 __cleancache_init_shared_fs +EXPORT_SYMBOL vmlinux 0x8d4c5050 ps2_init +EXPORT_SYMBOL vmlinux 0x8d551bef sysctl_tcp_rmem +EXPORT_SYMBOL vmlinux 0x8d55bb8a qid_eq +EXPORT_SYMBOL vmlinux 0x8d5c28fa ipv4_specific +EXPORT_SYMBOL vmlinux 0x8d73278e hex_asc_upper +EXPORT_SYMBOL vmlinux 0x8d7807c0 devm_release_resource +EXPORT_SYMBOL vmlinux 0x8d7a0e87 tcp_get_md5sig_pool +EXPORT_SYMBOL vmlinux 0x8d8d96c6 acpi_get_sleep_type_data +EXPORT_SYMBOL vmlinux 0x8d92bc61 free_inode_nonrcu +EXPORT_SYMBOL vmlinux 0x8da1a3cb acpi_remove_interface +EXPORT_SYMBOL vmlinux 0x8ddbde2f free_page_put_link +EXPORT_SYMBOL vmlinux 0x8de5befb tty_port_block_til_ready +EXPORT_SYMBOL vmlinux 0x8dedcfa7 blk_queue_invalidate_tags +EXPORT_SYMBOL vmlinux 0x8df92f66 memchr_inv +EXPORT_SYMBOL vmlinux 0x8e0a1b9e scsi_is_sdev_device +EXPORT_SYMBOL vmlinux 0x8e0e5b62 unregister_console +EXPORT_SYMBOL vmlinux 0x8e1a8c71 unlock_rename +EXPORT_SYMBOL vmlinux 0x8e1c8862 thaw_bdev +EXPORT_SYMBOL vmlinux 0x8e22741e kernel_bind +EXPORT_SYMBOL vmlinux 0x8e26b629 __nla_reserve_nohdr +EXPORT_SYMBOL vmlinux 0x8e2a5781 __skb_recv_datagram +EXPORT_SYMBOL vmlinux 0x8e3c2746 phy_ethtool_sset +EXPORT_SYMBOL vmlinux 0x8e3cd486 scm_fp_dup +EXPORT_SYMBOL vmlinux 0x8e6046ed migrate_page +EXPORT_SYMBOL vmlinux 0x8e6714f5 ns_capable +EXPORT_SYMBOL vmlinux 0x8e6b4478 ip6_frag_match +EXPORT_SYMBOL vmlinux 0x8e6c11c9 dst_release +EXPORT_SYMBOL vmlinux 0x8e8af549 skb_unlink +EXPORT_SYMBOL vmlinux 0x8ebaa876 lg_local_lock_cpu +EXPORT_SYMBOL vmlinux 0x8ebf97c4 crypto_sha256_finup +EXPORT_SYMBOL vmlinux 0x8ec833e5 tty_set_operations +EXPORT_SYMBOL vmlinux 0x8ece1bdf jbd2__journal_restart +EXPORT_SYMBOL vmlinux 0x8ed2ebb4 invalidate_partition +EXPORT_SYMBOL vmlinux 0x8ed46f6f elevator_exit +EXPORT_SYMBOL vmlinux 0x8ed78930 block_write_begin +EXPORT_SYMBOL vmlinux 0x8f3787be panic_notifier_list +EXPORT_SYMBOL vmlinux 0x8f3a5fa9 __ip4_datagram_connect +EXPORT_SYMBOL vmlinux 0x8f678b07 __stack_chk_guard +EXPORT_SYMBOL vmlinux 0x8f6f9bbf dget_parent +EXPORT_SYMBOL vmlinux 0x8f713093 buffer_migrate_page +EXPORT_SYMBOL vmlinux 0x8f7b5385 md_write_end +EXPORT_SYMBOL vmlinux 0x8fb8ef1a blk_queue_start_tag +EXPORT_SYMBOL vmlinux 0x8fcf7f30 blk_rq_map_integrity_sg +EXPORT_SYMBOL vmlinux 0x8fcfd15f ipv6_push_nfrag_opts +EXPORT_SYMBOL vmlinux 0x8fd55a7d skb_queue_purge +EXPORT_SYMBOL vmlinux 0x8fda0b35 xfrm_state_walk +EXPORT_SYMBOL vmlinux 0x8fdfe7b7 in_dev_finish_destroy +EXPORT_SYMBOL vmlinux 0x8fe37d8b of_gpio_simple_xlate +EXPORT_SYMBOL vmlinux 0x8ffdd691 genphy_suspend +EXPORT_SYMBOL vmlinux 0x90236ffa blk_queue_max_discard_sectors +EXPORT_SYMBOL vmlinux 0x903306ab fb_pan_display +EXPORT_SYMBOL vmlinux 0x905dfc86 qdisc_watchdog_schedule_ns +EXPORT_SYMBOL vmlinux 0x906d3a53 inet_stream_ops +EXPORT_SYMBOL vmlinux 0x908b590a sock_common_getsockopt +EXPORT_SYMBOL vmlinux 0x9090c025 generic_permission +EXPORT_SYMBOL vmlinux 0x90a5d0d5 vga_get +EXPORT_SYMBOL vmlinux 0x90ac3102 dev_base_lock +EXPORT_SYMBOL vmlinux 0x90cb5774 del_gendisk +EXPORT_SYMBOL vmlinux 0x9100f11f sock_common_setsockopt +EXPORT_SYMBOL vmlinux 0x9127e0f0 blk_start_queue +EXPORT_SYMBOL vmlinux 0x91323eaa amba_release_regions +EXPORT_SYMBOL vmlinux 0x91463b1d kstrtos16 +EXPORT_SYMBOL vmlinux 0x9161dfbb inet6_register_icmp_sender +EXPORT_SYMBOL vmlinux 0x9166fada strncpy +EXPORT_SYMBOL vmlinux 0x91715312 sprintf +EXPORT_SYMBOL vmlinux 0x917685a3 pnp_device_detach +EXPORT_SYMBOL vmlinux 0x917e62e9 skb_clone_sk +EXPORT_SYMBOL vmlinux 0x9183611a dev_get_phys_port_id +EXPORT_SYMBOL vmlinux 0x918c6374 mempool_alloc +EXPORT_SYMBOL vmlinux 0x91925d18 blk_queue_physical_block_size +EXPORT_SYMBOL vmlinux 0x919ff0bc of_get_parent +EXPORT_SYMBOL vmlinux 0x91ac822f vscnprintf +EXPORT_SYMBOL vmlinux 0x91fece70 inet_proto_csum_replace16 +EXPORT_SYMBOL vmlinux 0x9206b605 i2c_del_adapter +EXPORT_SYMBOL vmlinux 0x921b06f8 atomic_dec_and_mutex_lock +EXPORT_SYMBOL vmlinux 0x921e981a d_make_root +EXPORT_SYMBOL vmlinux 0x92367d1e phy_disconnect +EXPORT_SYMBOL vmlinux 0x923b1276 dmaengine_get +EXPORT_SYMBOL vmlinux 0x928a4d9a max8998_bulk_read +EXPORT_SYMBOL vmlinux 0x9291cd3b memdup_user +EXPORT_SYMBOL vmlinux 0x92a153b0 input_get_keycode +EXPORT_SYMBOL vmlinux 0x92a44a80 fence_add_callback +EXPORT_SYMBOL vmlinux 0x92a9c60c time_to_tm +EXPORT_SYMBOL vmlinux 0x92beab17 skb_try_coalesce +EXPORT_SYMBOL vmlinux 0x92e4d2fe flow_hash_from_keys +EXPORT_SYMBOL vmlinux 0x92e5c6a0 abx500_event_registers_startup_state_get +EXPORT_SYMBOL vmlinux 0x92fa5abb vme_lm_detach +EXPORT_SYMBOL vmlinux 0x92fec7ee jbd2_journal_restart +EXPORT_SYMBOL vmlinux 0x93022ba6 __scsi_format_command +EXPORT_SYMBOL vmlinux 0x93034001 reservation_object_reserve_shared +EXPORT_SYMBOL vmlinux 0x9305f8e6 cpufreq_get +EXPORT_SYMBOL vmlinux 0x9314cd09 jbd2_journal_start_commit +EXPORT_SYMBOL vmlinux 0x9315b1c9 pci_request_regions +EXPORT_SYMBOL vmlinux 0x9340d751 path_get +EXPORT_SYMBOL vmlinux 0x93462cc2 fget_raw +EXPORT_SYMBOL vmlinux 0x937733e3 qid_valid +EXPORT_SYMBOL vmlinux 0x937a523a drop_nlink +EXPORT_SYMBOL vmlinux 0x937a5b3d pci_scan_root_bus +EXPORT_SYMBOL vmlinux 0x9390f226 ida_destroy +EXPORT_SYMBOL vmlinux 0x93a93a82 bprm_change_interp +EXPORT_SYMBOL vmlinux 0x93b3fc74 register_dcbevent_notifier +EXPORT_SYMBOL vmlinux 0x93ddddf9 blk_mq_can_queue +EXPORT_SYMBOL vmlinux 0x93f3e52b acpi_extract_package +EXPORT_SYMBOL vmlinux 0x93fca811 __get_free_pages +EXPORT_SYMBOL vmlinux 0x9402a6a5 scsilun_to_int +EXPORT_SYMBOL vmlinux 0x94191da5 create_empty_buffers +EXPORT_SYMBOL vmlinux 0x941c14fa led_set_brightness +EXPORT_SYMBOL vmlinux 0x94450a3b udp_add_offload +EXPORT_SYMBOL vmlinux 0x9445764b __neigh_create +EXPORT_SYMBOL vmlinux 0x94569d70 filemap_page_mkwrite +EXPORT_SYMBOL vmlinux 0x945ebbbb pnp_disable_dev +EXPORT_SYMBOL vmlinux 0x9465d3c4 dev_get_nest_level +EXPORT_SYMBOL vmlinux 0x947b895d compat_nf_getsockopt +EXPORT_SYMBOL vmlinux 0x94961283 vunmap +EXPORT_SYMBOL vmlinux 0x949b754f mempool_destroy +EXPORT_SYMBOL vmlinux 0x94ac6eb1 pci_get_subsys +EXPORT_SYMBOL vmlinux 0x94ade98a inode_init_always +EXPORT_SYMBOL vmlinux 0x94b3f845 touch_buffer +EXPORT_SYMBOL vmlinux 0x94b85ea2 jbd2_journal_wipe +EXPORT_SYMBOL vmlinux 0x94d1b48c remove_proc_entry +EXPORT_SYMBOL vmlinux 0x94ed2a33 ata_std_end_eh +EXPORT_SYMBOL vmlinux 0x94fc00e5 dq_data_lock +EXPORT_SYMBOL vmlinux 0x9507b2a8 __register_chrdev +EXPORT_SYMBOL vmlinux 0x9514c231 nobh_truncate_page +EXPORT_SYMBOL vmlinux 0x951f95f9 inet_ioctl +EXPORT_SYMBOL vmlinux 0x9520027e cad_pid +EXPORT_SYMBOL vmlinux 0x9537a004 nvdimm_bus_unlock +EXPORT_SYMBOL vmlinux 0x95395301 acpi_exception +EXPORT_SYMBOL vmlinux 0x953a65a8 proc_mkdir +EXPORT_SYMBOL vmlinux 0x953b0f43 passthru_features_check +EXPORT_SYMBOL vmlinux 0x9540eb02 tty_lock +EXPORT_SYMBOL vmlinux 0x9545af6d tasklet_init +EXPORT_SYMBOL vmlinux 0x95b2f9dc mmc_can_trim +EXPORT_SYMBOL vmlinux 0x95b4f8a4 param_ops_bint +EXPORT_SYMBOL vmlinux 0x95c6318b devfreq_interval_update +EXPORT_SYMBOL vmlinux 0x95d7817d max8925_reg_read +EXPORT_SYMBOL vmlinux 0x9607b570 xfrm_prepare_input +EXPORT_SYMBOL vmlinux 0x960fa564 fddi_change_mtu +EXPORT_SYMBOL vmlinux 0x96220280 _raw_spin_lock_irqsave +EXPORT_SYMBOL vmlinux 0x9629513b i2c_verify_adapter +EXPORT_SYMBOL vmlinux 0x9632199d fence_enable_sw_signaling +EXPORT_SYMBOL vmlinux 0x9644140a dev_addr_add +EXPORT_SYMBOL vmlinux 0x9644a558 tcp_rtx_synack +EXPORT_SYMBOL vmlinux 0x96547e43 skb_split +EXPORT_SYMBOL vmlinux 0x965664b6 do_splice_from +EXPORT_SYMBOL vmlinux 0x965ae81b xfrm_unregister_type +EXPORT_SYMBOL vmlinux 0x966650e3 submit_bio_wait +EXPORT_SYMBOL vmlinux 0x966bccdf smp_call_function_many +EXPORT_SYMBOL vmlinux 0x966d2489 mmc_release_host +EXPORT_SYMBOL vmlinux 0x9672d98b inet_sk_rx_dst_set +EXPORT_SYMBOL vmlinux 0x96a28d6c kernel_sendpage +EXPORT_SYMBOL vmlinux 0x96a6c99d ip_mc_dec_group +EXPORT_SYMBOL vmlinux 0x96b29254 strncasecmp +EXPORT_SYMBOL vmlinux 0x96cd2b04 scsi_sense_key_string +EXPORT_SYMBOL vmlinux 0x96f474b4 bdgrab +EXPORT_SYMBOL vmlinux 0x973fa82e register_acpi_notifier +EXPORT_SYMBOL vmlinux 0x975169ae truncate_setsize +EXPORT_SYMBOL vmlinux 0x9754ec10 radix_tree_preload +EXPORT_SYMBOL vmlinux 0x97868aef __kfifo_alloc +EXPORT_SYMBOL vmlinux 0x97986791 tty_port_put +EXPORT_SYMBOL vmlinux 0x97999817 rfkill_set_hw_state +EXPORT_SYMBOL vmlinux 0x97a5398a compat_tcp_setsockopt +EXPORT_SYMBOL vmlinux 0x97a57333 crc_t10dif_update +EXPORT_SYMBOL vmlinux 0x97be2af8 i2c_transfer +EXPORT_SYMBOL vmlinux 0x97c5bd0a acpi_unload_parent_table +EXPORT_SYMBOL vmlinux 0x97d576c8 devm_ioport_unmap +EXPORT_SYMBOL vmlinux 0x97d7ba1b of_graph_get_port_by_id +EXPORT_SYMBOL vmlinux 0x97d83766 d_alloc +EXPORT_SYMBOL vmlinux 0x97f947a6 d_drop +EXPORT_SYMBOL vmlinux 0x97fa965e iw_handler_set_thrspy +EXPORT_SYMBOL vmlinux 0x97fdbab9 _raw_spin_unlock_irqrestore +EXPORT_SYMBOL vmlinux 0x98082893 __copy_to_user +EXPORT_SYMBOL vmlinux 0x980c48d1 km_query +EXPORT_SYMBOL vmlinux 0x9820b644 warn_slowpath_fmt_taint +EXPORT_SYMBOL vmlinux 0x9823b1b1 blkdev_get_by_path +EXPORT_SYMBOL vmlinux 0x9825da2a arp_send +EXPORT_SYMBOL vmlinux 0x9829fc11 __kfifo_out_peek_r +EXPORT_SYMBOL vmlinux 0x982a238f tcf_exts_dump +EXPORT_SYMBOL vmlinux 0x983a59ee kmem_cache_create +EXPORT_SYMBOL vmlinux 0x985b4baa ether_setup +EXPORT_SYMBOL vmlinux 0x985b6165 input_register_handle +EXPORT_SYMBOL vmlinux 0x986e6135 fb_pad_unaligned_buffer +EXPORT_SYMBOL vmlinux 0x988391d2 neigh_parms_alloc +EXPORT_SYMBOL vmlinux 0x9887ca8f input_reset_device +EXPORT_SYMBOL vmlinux 0x98978f39 i2c_smbus_read_byte_data +EXPORT_SYMBOL vmlinux 0x98b7be52 dev_trans_start +EXPORT_SYMBOL vmlinux 0x98ba051e serio_interrupt +EXPORT_SYMBOL vmlinux 0x98ba997e devm_ioport_map +EXPORT_SYMBOL vmlinux 0x98c50d1c read_cache_pages +EXPORT_SYMBOL vmlinux 0x98c68c41 __gnet_stats_copy_basic +EXPORT_SYMBOL vmlinux 0x98cf60b3 strlen +EXPORT_SYMBOL vmlinux 0x98e4136f udp_lib_setsockopt +EXPORT_SYMBOL vmlinux 0x98fe7a91 tty_do_resize +EXPORT_SYMBOL vmlinux 0x98ff70db pci_wait_for_pending_transaction +EXPORT_SYMBOL vmlinux 0x990e5c1b mount_ns +EXPORT_SYMBOL vmlinux 0x99141506 mii_check_media +EXPORT_SYMBOL vmlinux 0x99195078 vsnprintf +EXPORT_SYMBOL vmlinux 0x992875f3 memory_cgrp_subsys +EXPORT_SYMBOL vmlinux 0x99322bc5 wait_iff_congested +EXPORT_SYMBOL vmlinux 0x9939eba0 backlight_unregister_notifier +EXPORT_SYMBOL vmlinux 0x99517682 udp_encap_enable +EXPORT_SYMBOL vmlinux 0x99591a7a ipv6_ext_hdr +EXPORT_SYMBOL vmlinux 0x999368b6 blk_mq_complete_request +EXPORT_SYMBOL vmlinux 0x9994c0ca ps2_is_keyboard_id +EXPORT_SYMBOL vmlinux 0x999e8297 vfree +EXPORT_SYMBOL vmlinux 0x99c7d8a6 twl6040_set_bits +EXPORT_SYMBOL vmlinux 0x99cdc86b sysctl_tcp_reordering +EXPORT_SYMBOL vmlinux 0x99d338b9 phy_init_eee +EXPORT_SYMBOL vmlinux 0x99d3a43c dm_table_get_size +EXPORT_SYMBOL vmlinux 0x99de7f2d ethtool_op_get_link +EXPORT_SYMBOL vmlinux 0x9a1643a7 locks_copy_lock +EXPORT_SYMBOL vmlinux 0x9a1a65b3 bdev_read_only +EXPORT_SYMBOL vmlinux 0x9a1dfd65 strpbrk +EXPORT_SYMBOL vmlinux 0x9a1fc4b4 jiffies_to_timeval +EXPORT_SYMBOL vmlinux 0x9a5ffc64 __tracepoint_kmem_cache_alloc +EXPORT_SYMBOL vmlinux 0x9a6b9d66 poll_freewait +EXPORT_SYMBOL vmlinux 0x9a6de606 tcp_rcv_established +EXPORT_SYMBOL vmlinux 0x9a908b80 test_and_clear_bit +EXPORT_SYMBOL vmlinux 0x9a9ffda9 iget_locked +EXPORT_SYMBOL vmlinux 0x9aa311fe dquot_destroy +EXPORT_SYMBOL vmlinux 0x9aa40306 skb_realloc_headroom +EXPORT_SYMBOL vmlinux 0x9ac73919 __skb_get_hash +EXPORT_SYMBOL vmlinux 0x9ad628b6 bd_set_size +EXPORT_SYMBOL vmlinux 0x9ae259fe blk_mq_start_request +EXPORT_SYMBOL vmlinux 0x9aeb07e8 vme_lm_attach +EXPORT_SYMBOL vmlinux 0x9aeed85b n_tty_ioctl_helper +EXPORT_SYMBOL vmlinux 0x9af03cc4 bitmap_endwrite +EXPORT_SYMBOL vmlinux 0x9afa423f balance_dirty_pages_ratelimited +EXPORT_SYMBOL vmlinux 0x9afe1b35 bitmap_start_sync +EXPORT_SYMBOL vmlinux 0x9b162888 __skb_warn_lro_forwarding +EXPORT_SYMBOL vmlinux 0x9b33e0d7 unregister_dcbevent_notifier +EXPORT_SYMBOL vmlinux 0x9b388444 get_zeroed_page +EXPORT_SYMBOL vmlinux 0x9b43a290 copy_page_from_iter +EXPORT_SYMBOL vmlinux 0x9b47f486 d_prune_aliases +EXPORT_SYMBOL vmlinux 0x9b52c527 vme_unregister_bridge +EXPORT_SYMBOL vmlinux 0x9b8e2c94 nf_unregister_sockopt +EXPORT_SYMBOL vmlinux 0x9b9e05f9 alloc_cpu_rmap +EXPORT_SYMBOL vmlinux 0x9ba7089d argv_split +EXPORT_SYMBOL vmlinux 0x9ba9fd5f pagevec_lookup +EXPORT_SYMBOL vmlinux 0x9bb28ff3 mark_buffer_dirty_inode +EXPORT_SYMBOL vmlinux 0x9bb7b372 generic_removexattr +EXPORT_SYMBOL vmlinux 0x9bbe88b3 flex_array_put +EXPORT_SYMBOL vmlinux 0x9bc6ef31 add_wait_queue +EXPORT_SYMBOL vmlinux 0x9bc91de6 xfrm_state_delete +EXPORT_SYMBOL vmlinux 0x9bcdabec seq_file_path +EXPORT_SYMBOL vmlinux 0x9bd8f7f8 of_root +EXPORT_SYMBOL vmlinux 0x9be1964b __pskb_pull_tail +EXPORT_SYMBOL vmlinux 0x9be7bde4 security_tun_dev_attach +EXPORT_SYMBOL vmlinux 0x9bee9cda pci_bus_read_config_dword +EXPORT_SYMBOL vmlinux 0x9bf7a52f __nla_reserve +EXPORT_SYMBOL vmlinux 0x9bfc1b05 vme_register_driver +EXPORT_SYMBOL vmlinux 0x9c038b00 iov_iter_get_pages +EXPORT_SYMBOL vmlinux 0x9c270f0e security_inode_notifysecctx +EXPORT_SYMBOL vmlinux 0x9c31d432 __block_write_begin +EXPORT_SYMBOL vmlinux 0x9c38882e mipi_dsi_dcs_read +EXPORT_SYMBOL vmlinux 0x9c491f60 sg_alloc_table +EXPORT_SYMBOL vmlinux 0x9c4c9023 bio_unmap_user +EXPORT_SYMBOL vmlinux 0x9c5bc552 finish_wait +EXPORT_SYMBOL vmlinux 0x9c8ee862 open_exec +EXPORT_SYMBOL vmlinux 0x9ca46774 acpi_device_hid +EXPORT_SYMBOL vmlinux 0x9cab34a6 rfkill_set_led_trigger_name +EXPORT_SYMBOL vmlinux 0x9cbbeb8e d_rehash +EXPORT_SYMBOL vmlinux 0x9cc8048f tcf_em_tree_dump +EXPORT_SYMBOL vmlinux 0x9ccb74ed frontswap_register_ops +EXPORT_SYMBOL vmlinux 0x9cdf968f of_find_node_by_type +EXPORT_SYMBOL vmlinux 0x9cec5493 pci_bus_alloc_resource +EXPORT_SYMBOL vmlinux 0x9d0d6206 unregister_netdevice_notifier +EXPORT_SYMBOL vmlinux 0x9d2f3052 devm_gen_pool_create +EXPORT_SYMBOL vmlinux 0x9d3aa376 blk_iopoll_init +EXPORT_SYMBOL vmlinux 0x9d3b376a phy_driver_unregister +EXPORT_SYMBOL vmlinux 0x9d3f5c19 devm_clk_put +EXPORT_SYMBOL vmlinux 0x9d422d75 kmem_cache_alloc_node_trace +EXPORT_SYMBOL vmlinux 0x9d6aed76 of_get_min_tck +EXPORT_SYMBOL vmlinux 0x9d6ea2eb __sk_dst_check +EXPORT_SYMBOL vmlinux 0x9d744f72 seq_release_private +EXPORT_SYMBOL vmlinux 0x9d79c06f generic_pipe_buf_steal +EXPORT_SYMBOL vmlinux 0x9d8b87ba file_remove_privs +EXPORT_SYMBOL vmlinux 0x9d9c3bf7 sync_mapping_buffers +EXPORT_SYMBOL vmlinux 0x9da05e10 mipi_dsi_create_packet +EXPORT_SYMBOL vmlinux 0x9daebb90 task_tgid_nr_ns +EXPORT_SYMBOL vmlinux 0x9df21b11 kernel_sock_ioctl +EXPORT_SYMBOL vmlinux 0x9df62847 scsi_device_resume +EXPORT_SYMBOL vmlinux 0x9dfce0ce param_get_byte +EXPORT_SYMBOL vmlinux 0x9e0c711d vzalloc_node +EXPORT_SYMBOL vmlinux 0x9e18d93e gen_pool_create +EXPORT_SYMBOL vmlinux 0x9e2d4fd4 blk_mq_alloc_tag_set +EXPORT_SYMBOL vmlinux 0x9e2f8c90 lz4_decompress_unknownoutputsize +EXPORT_SYMBOL vmlinux 0x9e3be7c6 scsi_dma_map +EXPORT_SYMBOL vmlinux 0x9e4faeef dm_io_client_destroy +EXPORT_SYMBOL vmlinux 0x9e594fad vfs_create +EXPORT_SYMBOL vmlinux 0x9e61bb05 set_freezable +EXPORT_SYMBOL vmlinux 0x9e6f2d0b pci_find_next_bus +EXPORT_SYMBOL vmlinux 0x9e763530 reciprocal_value +EXPORT_SYMBOL vmlinux 0x9e7d6bd0 __udelay +EXPORT_SYMBOL vmlinux 0x9e978734 blkdev_fsync +EXPORT_SYMBOL vmlinux 0x9e986cca md_set_array_sectors +EXPORT_SYMBOL vmlinux 0x9ebb6122 __get_user_pages +EXPORT_SYMBOL vmlinux 0x9ebd4c04 adjust_resource +EXPORT_SYMBOL vmlinux 0x9eeff41d blk_rq_map_sg +EXPORT_SYMBOL vmlinux 0x9ef90b98 tcp_openreq_init_rwin +EXPORT_SYMBOL vmlinux 0x9f04c177 scsi_device_quiesce +EXPORT_SYMBOL vmlinux 0x9f11be7e down_killable +EXPORT_SYMBOL vmlinux 0x9f354e4c pci_get_device +EXPORT_SYMBOL vmlinux 0x9f3dbb22 dquot_operations +EXPORT_SYMBOL vmlinux 0x9f46ced8 __sw_hweight64 +EXPORT_SYMBOL vmlinux 0x9f67ebcd blk_mq_tag_busy_iter +EXPORT_SYMBOL vmlinux 0x9f7c1692 nd_namespace_blk_validate +EXPORT_SYMBOL vmlinux 0x9f7c1be8 skb_flow_dissector_init +EXPORT_SYMBOL vmlinux 0x9f8c27f5 phy_suspend +EXPORT_SYMBOL vmlinux 0x9f984513 strrchr +EXPORT_SYMBOL vmlinux 0x9fa9c5f5 fifo_create_dflt +EXPORT_SYMBOL vmlinux 0x9fb956cf iov_iter_init +EXPORT_SYMBOL vmlinux 0x9fcbd473 dev_set_group +EXPORT_SYMBOL vmlinux 0x9fd7cda1 flex_array_prealloc +EXPORT_SYMBOL vmlinux 0x9fdecc31 unregister_netdevice_many +EXPORT_SYMBOL vmlinux 0x9fe13e44 always_delete_dentry +EXPORT_SYMBOL vmlinux 0x9fe91e50 insert_inode_locked4 +EXPORT_SYMBOL vmlinux 0x9ffa3a75 netdev_max_backlog +EXPORT_SYMBOL vmlinux 0xa0123169 __pskb_copy_fclone +EXPORT_SYMBOL vmlinux 0xa01f7c4b dev_load +EXPORT_SYMBOL vmlinux 0xa0436e98 in6addr_linklocal_allnodes +EXPORT_SYMBOL vmlinux 0xa04a01bd qdisc_class_hash_insert +EXPORT_SYMBOL vmlinux 0xa04a3ac2 blk_mq_start_hw_queue +EXPORT_SYMBOL vmlinux 0xa05c03df mempool_kmalloc +EXPORT_SYMBOL vmlinux 0xa063de79 inet6_add_protocol +EXPORT_SYMBOL vmlinux 0xa06d66d4 pagecache_isize_extended +EXPORT_SYMBOL vmlinux 0xa06deb6e tty_free_termios +EXPORT_SYMBOL vmlinux 0xa07278e5 input_mt_sync_frame +EXPORT_SYMBOL vmlinux 0xa07a37f0 memchr +EXPORT_SYMBOL vmlinux 0xa07ed110 xz_dec_init +EXPORT_SYMBOL vmlinux 0xa084749a __bitmap_or +EXPORT_SYMBOL vmlinux 0xa084a8d8 mipi_dsi_dcs_set_column_address +EXPORT_SYMBOL vmlinux 0xa08f8b08 xfrm_policy_bysel_ctx +EXPORT_SYMBOL vmlinux 0xa0b04675 vmalloc_32 +EXPORT_SYMBOL vmlinux 0xa0c39345 __pci_register_driver +EXPORT_SYMBOL vmlinux 0xa0c475a7 pci_request_region_exclusive +EXPORT_SYMBOL vmlinux 0xa0c4dda4 uart_remove_one_port +EXPORT_SYMBOL vmlinux 0xa0cb7dc9 scsi_add_host_with_dma +EXPORT_SYMBOL vmlinux 0xa0d0647a mmc_alloc_host +EXPORT_SYMBOL vmlinux 0xa0d1426e tty_port_hangup +EXPORT_SYMBOL vmlinux 0xa0dad88e netdev_adjacent_get_private +EXPORT_SYMBOL vmlinux 0xa0e3eb42 single_release +EXPORT_SYMBOL vmlinux 0xa0ebd14c sysctl_tcp_mem +EXPORT_SYMBOL vmlinux 0xa0fbac79 wake_up_bit +EXPORT_SYMBOL vmlinux 0xa0ff74d6 udp_memory_allocated +EXPORT_SYMBOL vmlinux 0xa108eb4d sysctl_optmem_max +EXPORT_SYMBOL vmlinux 0xa120d33c tty_unregister_ldisc +EXPORT_SYMBOL vmlinux 0xa1415618 twl6030_interrupt_unmask +EXPORT_SYMBOL vmlinux 0xa14b3f5d flex_array_free_parts +EXPORT_SYMBOL vmlinux 0xa14f3d8c ewma_add +EXPORT_SYMBOL vmlinux 0xa17137b2 dev_mc_sync_multiple +EXPORT_SYMBOL vmlinux 0xa183640d bdev_stack_limits +EXPORT_SYMBOL vmlinux 0xa1b759ce fb_add_videomode +EXPORT_SYMBOL vmlinux 0xa1c76e0a _cond_resched +EXPORT_SYMBOL vmlinux 0xa1e8d5be pci_fixup_cardbus +EXPORT_SYMBOL vmlinux 0xa202a8e5 kmalloc_order_trace +EXPORT_SYMBOL vmlinux 0xa209451c bitmap_fold +EXPORT_SYMBOL vmlinux 0xa20b2801 jbd2_journal_unlock_updates +EXPORT_SYMBOL vmlinux 0xa2307792 audit_log_start +EXPORT_SYMBOL vmlinux 0xa240115a udp6_csum_init +EXPORT_SYMBOL vmlinux 0xa2412d09 filemap_write_and_wait +EXPORT_SYMBOL vmlinux 0xa257e6b8 unlock_new_inode +EXPORT_SYMBOL vmlinux 0xa2795f82 swiotlb_sync_sg_for_device +EXPORT_SYMBOL vmlinux 0xa2848c50 ecryptfs_get_auth_tok_key +EXPORT_SYMBOL vmlinux 0xa28c345c netif_rx_ni +EXPORT_SYMBOL vmlinux 0xa29413ee input_open_device +EXPORT_SYMBOL vmlinux 0xa2964e74 bio_integrity_prep +EXPORT_SYMBOL vmlinux 0xa2a335bd vme_alloc_consistent +EXPORT_SYMBOL vmlinux 0xa2a36a2b register_netdev +EXPORT_SYMBOL vmlinux 0xa2a434d3 xfrm_policy_unregister_afinfo +EXPORT_SYMBOL vmlinux 0xa2aabf88 phy_ethtool_gset +EXPORT_SYMBOL vmlinux 0xa2c16edf genphy_update_link +EXPORT_SYMBOL vmlinux 0xa2cec8f0 tcf_hash_create +EXPORT_SYMBOL vmlinux 0xa2e8a527 buffer_check_dirty_writeback +EXPORT_SYMBOL vmlinux 0xa2f9048d bdget +EXPORT_SYMBOL vmlinux 0xa31bdf07 vme_master_set +EXPORT_SYMBOL vmlinux 0xa32fd1e6 bioset_free +EXPORT_SYMBOL vmlinux 0xa345be9d pagecache_write_begin +EXPORT_SYMBOL vmlinux 0xa345e064 put_filp +EXPORT_SYMBOL vmlinux 0xa355eeef kmem_cache_alloc_trace +EXPORT_SYMBOL vmlinux 0xa3769b96 mmc_remove_host +EXPORT_SYMBOL vmlinux 0xa37e78b6 flex_array_get +EXPORT_SYMBOL vmlinux 0xa381944f dql_reset +EXPORT_SYMBOL vmlinux 0xa39a1cde skb_checksum +EXPORT_SYMBOL vmlinux 0xa39a315d netdev_class_remove_file_ns +EXPORT_SYMBOL vmlinux 0xa3a0951a ppp_dev_name +EXPORT_SYMBOL vmlinux 0xa3cdbec8 inet_offloads +EXPORT_SYMBOL vmlinux 0xa3e17f56 node_to_cpumask_map +EXPORT_SYMBOL vmlinux 0xa3fc3d50 __tracepoint_module_get +EXPORT_SYMBOL vmlinux 0xa43ae3e6 dev_uc_init +EXPORT_SYMBOL vmlinux 0xa43de4c7 tty_write_room +EXPORT_SYMBOL vmlinux 0xa4511467 crc16 +EXPORT_SYMBOL vmlinux 0xa454bb11 simple_setattr +EXPORT_SYMBOL vmlinux 0xa46ee61f finish_no_open +EXPORT_SYMBOL vmlinux 0xa4701e9e timekeeping_inject_offset +EXPORT_SYMBOL vmlinux 0xa48a3e2f component_match_add +EXPORT_SYMBOL vmlinux 0xa4920e88 tcp_md5_hash_key +EXPORT_SYMBOL vmlinux 0xa494ae7c I_BDEV +EXPORT_SYMBOL vmlinux 0xa4b45ea5 out_of_line_wait_on_bit_lock +EXPORT_SYMBOL vmlinux 0xa4baa145 jbd2_journal_flush +EXPORT_SYMBOL vmlinux 0xa4c9e715 input_alloc_absinfo +EXPORT_SYMBOL vmlinux 0xa4ca525d elv_rb_find +EXPORT_SYMBOL vmlinux 0xa4cdaf7b udp_lib_get_port +EXPORT_SYMBOL vmlinux 0xa4d099e5 __blk_end_request +EXPORT_SYMBOL vmlinux 0xa4dfe7e3 set_wb_congested +EXPORT_SYMBOL vmlinux 0xa4e10181 of_find_matching_node_and_match +EXPORT_SYMBOL vmlinux 0xa4f987b8 __skb_gso_segment +EXPORT_SYMBOL vmlinux 0xa5093df5 textsearch_register +EXPORT_SYMBOL vmlinux 0xa50f34bd dma_async_device_register +EXPORT_SYMBOL vmlinux 0xa54a1f4d vme_irq_free +EXPORT_SYMBOL vmlinux 0xa5526619 rb_insert_color +EXPORT_SYMBOL vmlinux 0xa56dd088 blk_mq_delay_queue +EXPORT_SYMBOL vmlinux 0xa598e29c vesa_modes +EXPORT_SYMBOL vmlinux 0xa5a51eee __crc32c_le +EXPORT_SYMBOL vmlinux 0xa5df02ce simple_transaction_get +EXPORT_SYMBOL vmlinux 0xa5ee1994 genphy_config_aneg +EXPORT_SYMBOL vmlinux 0xa5f2c052 fb_prepare_logo +EXPORT_SYMBOL vmlinux 0xa5feb12c forget_cached_acl +EXPORT_SYMBOL vmlinux 0xa61b19d3 mmc_can_sanitize +EXPORT_SYMBOL vmlinux 0xa629f95e skb_vlan_untag +EXPORT_SYMBOL vmlinux 0xa62dd1ae igrab +EXPORT_SYMBOL vmlinux 0xa63322c6 hdmi_audio_infoframe_pack +EXPORT_SYMBOL vmlinux 0xa63d85ab slhc_remember +EXPORT_SYMBOL vmlinux 0xa649351a qdisc_watchdog_init +EXPORT_SYMBOL vmlinux 0xa673bcbe __blk_end_request_cur +EXPORT_SYMBOL vmlinux 0xa675804c utf8s_to_utf16s +EXPORT_SYMBOL vmlinux 0xa681fe88 generate_random_uuid +EXPORT_SYMBOL vmlinux 0xa6b0c8a8 __skb_gro_checksum_complete +EXPORT_SYMBOL vmlinux 0xa6bd63ca acpi_bios_error +EXPORT_SYMBOL vmlinux 0xa6c14d54 __bio_clone_fast +EXPORT_SYMBOL vmlinux 0xa6c96fc3 dcb_setapp +EXPORT_SYMBOL vmlinux 0xa6cec496 tty_register_ldisc +EXPORT_SYMBOL vmlinux 0xa6ffec60 woken_wake_function +EXPORT_SYMBOL vmlinux 0xa71bc5f1 __scsi_alloc_queue +EXPORT_SYMBOL vmlinux 0xa72a0f5b nr_online_nodes +EXPORT_SYMBOL vmlinux 0xa735db59 prandom_u32 +EXPORT_SYMBOL vmlinux 0xa74c5933 sock_sendmsg +EXPORT_SYMBOL vmlinux 0xa7855827 blk_init_tags +EXPORT_SYMBOL vmlinux 0xa7966257 neigh_seq_next +EXPORT_SYMBOL vmlinux 0xa798331d tcp_req_err +EXPORT_SYMBOL vmlinux 0xa7be526f _atomic_dec_and_lock +EXPORT_SYMBOL vmlinux 0xa7cfeca3 pci_iomap +EXPORT_SYMBOL vmlinux 0xa7fa8582 inet_unregister_protosw +EXPORT_SYMBOL vmlinux 0xa819b48f sync_dirty_buffer +EXPORT_SYMBOL vmlinux 0xa81c6d4b __wait_on_bit +EXPORT_SYMBOL vmlinux 0xa8232c78 strtobool +EXPORT_SYMBOL vmlinux 0xa82ed8ca vfs_write +EXPORT_SYMBOL vmlinux 0xa83402f4 __ip_dev_find +EXPORT_SYMBOL vmlinux 0xa843805a get_unused_fd_flags +EXPORT_SYMBOL vmlinux 0xa8721b97 system_state +EXPORT_SYMBOL vmlinux 0xa8736d40 prepare_kernel_cred +EXPORT_SYMBOL vmlinux 0xa87bf0e5 swiotlb_sync_sg_for_cpu +EXPORT_SYMBOL vmlinux 0xa87cf413 clear_bit +EXPORT_SYMBOL vmlinux 0xa88bb3dc rawv6_mh_filter_register +EXPORT_SYMBOL vmlinux 0xa8a8110c kernel_neon_end +EXPORT_SYMBOL vmlinux 0xa8bbe299 scsi_remove_device +EXPORT_SYMBOL vmlinux 0xa8dd9b57 mmc_power_save_host +EXPORT_SYMBOL vmlinux 0xa8f02773 of_n_addr_cells +EXPORT_SYMBOL vmlinux 0xa8f6bd27 dev_disable_lro +EXPORT_SYMBOL vmlinux 0xa8fef7bb security_unix_may_send +EXPORT_SYMBOL vmlinux 0xa9051b1e netpoll_cleanup +EXPORT_SYMBOL vmlinux 0xa9168676 xmit_recursion +EXPORT_SYMBOL vmlinux 0xa916b694 strnlen +EXPORT_SYMBOL vmlinux 0xa927fc2d cdrom_number_of_slots +EXPORT_SYMBOL vmlinux 0xa976957d bitmap_remap +EXPORT_SYMBOL vmlinux 0xa99b39c2 prandom_bytes +EXPORT_SYMBOL vmlinux 0xa9b248b6 idr_for_each +EXPORT_SYMBOL vmlinux 0xa9b702b1 key_validate +EXPORT_SYMBOL vmlinux 0xa9c63b69 security_xfrm_policy_free +EXPORT_SYMBOL vmlinux 0xa9d267cd crypto_sha256_update +EXPORT_SYMBOL vmlinux 0xa9d8771d i2c_smbus_write_block_data +EXPORT_SYMBOL vmlinux 0xaa0073b7 __net_get_random_once +EXPORT_SYMBOL vmlinux 0xaa3afc10 sock_get_timestampns +EXPORT_SYMBOL vmlinux 0xaa423f84 blk_mq_tag_to_rq +EXPORT_SYMBOL vmlinux 0xaa53a58e zpool_unregister_driver +EXPORT_SYMBOL vmlinux 0xaa5e2a0d vm_event_states +EXPORT_SYMBOL vmlinux 0xaa6f23ad rfkill_get_led_trigger_name +EXPORT_SYMBOL vmlinux 0xaa755bd1 skb_add_rx_frag +EXPORT_SYMBOL vmlinux 0xaaa72398 xfrm_policy_insert +EXPORT_SYMBOL vmlinux 0xaab3a7da uart_unregister_driver +EXPORT_SYMBOL vmlinux 0xaabba3fa blk_recount_segments +EXPORT_SYMBOL vmlinux 0xaacc3134 idr_find_slowpath +EXPORT_SYMBOL vmlinux 0xaad0ae78 __bitmap_shift_right +EXPORT_SYMBOL vmlinux 0xaad6d92f rfkill_init_sw_state +EXPORT_SYMBOL vmlinux 0xaad7dbaf devfreq_monitor_suspend +EXPORT_SYMBOL vmlinux 0xaae411a3 bio_get_nr_vecs +EXPORT_SYMBOL vmlinux 0xaae8ab0e acpi_bus_power_manageable +EXPORT_SYMBOL vmlinux 0xaafdc258 strcasecmp +EXPORT_SYMBOL vmlinux 0xab1009b6 bio_integrity_trim +EXPORT_SYMBOL vmlinux 0xab2071de of_graph_parse_endpoint +EXPORT_SYMBOL vmlinux 0xab244adb revert_creds +EXPORT_SYMBOL vmlinux 0xab259875 clocksource_change_rating +EXPORT_SYMBOL vmlinux 0xab27ad78 pci_get_domain_bus_and_slot +EXPORT_SYMBOL vmlinux 0xab2e9558 inet_frag_destroy +EXPORT_SYMBOL vmlinux 0xab37b527 pci_remove_bus +EXPORT_SYMBOL vmlinux 0xab40cca9 __init_waitqueue_head +EXPORT_SYMBOL vmlinux 0xab551fad acpi_get_data_full +EXPORT_SYMBOL vmlinux 0xab600421 probe_irq_off +EXPORT_SYMBOL vmlinux 0xab6bde28 sysctl_max_syn_backlog +EXPORT_SYMBOL vmlinux 0xab781570 fb_get_options +EXPORT_SYMBOL vmlinux 0xab8bb630 dquot_free_inode +EXPORT_SYMBOL vmlinux 0xab97263f mmc_fixup_device +EXPORT_SYMBOL vmlinux 0xabbbd444 _raw_spin_unlock_bh +EXPORT_SYMBOL vmlinux 0xabc6dd63 cpufreq_sysfs_create_file +EXPORT_SYMBOL vmlinux 0xabcaa577 free_anon_bdev +EXPORT_SYMBOL vmlinux 0xac0ba8c1 blk_iopoll_disable +EXPORT_SYMBOL vmlinux 0xac13bd49 dev_mc_del +EXPORT_SYMBOL vmlinux 0xac1a55be unregister_reboot_notifier +EXPORT_SYMBOL vmlinux 0xac398912 flex_array_clear +EXPORT_SYMBOL vmlinux 0xac3eeab4 udp_seq_open +EXPORT_SYMBOL vmlinux 0xac477d23 dquot_scan_active +EXPORT_SYMBOL vmlinux 0xac545d95 security_path_chown +EXPORT_SYMBOL vmlinux 0xac72a82d call_usermodehelper_exec +EXPORT_SYMBOL vmlinux 0xac76b4b5 of_graph_get_remote_port +EXPORT_SYMBOL vmlinux 0xac7b575c get_cached_acl +EXPORT_SYMBOL vmlinux 0xac7ed91c sync_inodes_sb +EXPORT_SYMBOL vmlinux 0xac82c0dd bio_integrity_free +EXPORT_SYMBOL vmlinux 0xac881f6e inet_sock_destruct +EXPORT_SYMBOL vmlinux 0xacab29b7 seq_hlist_start_percpu +EXPORT_SYMBOL vmlinux 0xacbcd6b4 mmc_cleanup_queue +EXPORT_SYMBOL vmlinux 0xacc15c7c truncate_inode_pages +EXPORT_SYMBOL vmlinux 0xacc5b5d2 csum_ipv6_magic +EXPORT_SYMBOL vmlinux 0xaccabc6a in4_pton +EXPORT_SYMBOL vmlinux 0xacd81eb3 jbd2_inode_cache +EXPORT_SYMBOL vmlinux 0xacdc11d9 blk_queue_dma_pad +EXPORT_SYMBOL vmlinux 0xacf4d843 match_strdup +EXPORT_SYMBOL vmlinux 0xad01744f kstrtos8_from_user +EXPORT_SYMBOL vmlinux 0xad034e4c of_parse_phandle_with_fixed_args +EXPORT_SYMBOL vmlinux 0xad0413d4 match_hex +EXPORT_SYMBOL vmlinux 0xad13c689 acpi_os_execute +EXPORT_SYMBOL vmlinux 0xad164875 kstrtos16_from_user +EXPORT_SYMBOL vmlinux 0xad25b065 generic_splice_sendpage +EXPORT_SYMBOL vmlinux 0xad333357 __frontswap_test +EXPORT_SYMBOL vmlinux 0xad7f8959 register_sysctl +EXPORT_SYMBOL vmlinux 0xad84bef8 dm_table_event +EXPORT_SYMBOL vmlinux 0xad8915ed proc_symlink +EXPORT_SYMBOL vmlinux 0xad9590c0 mdiobus_free +EXPORT_SYMBOL vmlinux 0xaddba93f __skb_get_hash_flowi4 +EXPORT_SYMBOL vmlinux 0xaddde93d sockfd_lookup +EXPORT_SYMBOL vmlinux 0xadf07b8d jbd2_journal_release_jbd_inode +EXPORT_SYMBOL vmlinux 0xadfca636 pcim_iomap_regions +EXPORT_SYMBOL vmlinux 0xadfdfcef __bitmap_andnot +EXPORT_SYMBOL vmlinux 0xae097fc0 tcp_gro_complete +EXPORT_SYMBOL vmlinux 0xae18f1b7 __nd_iostat_start +EXPORT_SYMBOL vmlinux 0xae3e030f mmc_stop_bkops +EXPORT_SYMBOL vmlinux 0xae466da4 sock_wfree +EXPORT_SYMBOL vmlinux 0xae4a1bda csum_tcpudp_nofold +EXPORT_SYMBOL vmlinux 0xae692d00 tty_throttle +EXPORT_SYMBOL vmlinux 0xae729e59 security_req_classify_flow +EXPORT_SYMBOL vmlinux 0xae8c4d0c set_bit +EXPORT_SYMBOL vmlinux 0xae992eeb f_setown +EXPORT_SYMBOL vmlinux 0xaea976a8 acpi_check_resource_conflict +EXPORT_SYMBOL vmlinux 0xaecfc35c of_get_address +EXPORT_SYMBOL vmlinux 0xaed09bf5 __ww_mutex_lock +EXPORT_SYMBOL vmlinux 0xaee9a677 dev_crit +EXPORT_SYMBOL vmlinux 0xaef2d0ab netdev_change_features +EXPORT_SYMBOL vmlinux 0xaefc7efa cdrom_get_last_written +EXPORT_SYMBOL vmlinux 0xaf1271ae xfrm_alloc_spi +EXPORT_SYMBOL vmlinux 0xaf1cf061 put_io_context +EXPORT_SYMBOL vmlinux 0xaf3dd7dc scsi_logging_level +EXPORT_SYMBOL vmlinux 0xaf4e6745 param_ops_short +EXPORT_SYMBOL vmlinux 0xaf5dbeee tcp_v4_syn_recv_sock +EXPORT_SYMBOL vmlinux 0xaf621277 iov_iter_zero +EXPORT_SYMBOL vmlinux 0xaf6ae696 kstrndup +EXPORT_SYMBOL vmlinux 0xaf75699c tty_port_close +EXPORT_SYMBOL vmlinux 0xaf84368a nf_log_set +EXPORT_SYMBOL vmlinux 0xaf95a78d netdev_emerg +EXPORT_SYMBOL vmlinux 0xafa4af18 generic_pipe_buf_release +EXPORT_SYMBOL vmlinux 0xafc0bf63 mii_ethtool_sset +EXPORT_SYMBOL vmlinux 0xafcbf046 phy_connect +EXPORT_SYMBOL vmlinux 0xafd771c1 inet6_bind +EXPORT_SYMBOL vmlinux 0xafe6e405 __dynamic_netdev_dbg +EXPORT_SYMBOL vmlinux 0xb019cec6 mutex_trylock +EXPORT_SYMBOL vmlinux 0xb05fc310 sysctl_rmem_max +EXPORT_SYMBOL vmlinux 0xb07b4dc4 ip_ct_attach +EXPORT_SYMBOL vmlinux 0xb0825f08 pcie_get_readrq +EXPORT_SYMBOL vmlinux 0xb094b181 crypto_sha512_update +EXPORT_SYMBOL vmlinux 0xb0a0da0c rational_best_approximation +EXPORT_SYMBOL vmlinux 0xb0a5696b blk_pre_runtime_resume +EXPORT_SYMBOL vmlinux 0xb0b03be5 crypto_sha1_update +EXPORT_SYMBOL vmlinux 0xb0b3707e __skb_get_hash_flowi6 +EXPORT_SYMBOL vmlinux 0xb0c70b05 generic_file_splice_read +EXPORT_SYMBOL vmlinux 0xb0e10781 get_option +EXPORT_SYMBOL vmlinux 0xb10997e3 eth_header_cache_update +EXPORT_SYMBOL vmlinux 0xb11e75e4 vlan_dev_real_dev +EXPORT_SYMBOL vmlinux 0xb121390a probe_irq_on +EXPORT_SYMBOL vmlinux 0xb12cbacb fb_unregister_client +EXPORT_SYMBOL vmlinux 0xb13ccfbd vfs_rmdir +EXPORT_SYMBOL vmlinux 0xb150398f key_link +EXPORT_SYMBOL vmlinux 0xb1569df3 set_anon_super +EXPORT_SYMBOL vmlinux 0xb15cb614 security_xfrm_policy_alloc +EXPORT_SYMBOL vmlinux 0xb160e055 genphy_soft_reset +EXPORT_SYMBOL vmlinux 0xb16264cd tcp_init_xmit_timers +EXPORT_SYMBOL vmlinux 0xb1645a2e sg_free_table +EXPORT_SYMBOL vmlinux 0xb18314db xfrm_policy_walk_done +EXPORT_SYMBOL vmlinux 0xb18b9d5f fb_get_mode +EXPORT_SYMBOL vmlinux 0xb193f3ec blk_execute_rq +EXPORT_SYMBOL vmlinux 0xb1acd292 of_device_register +EXPORT_SYMBOL vmlinux 0xb1b02bd5 gnet_stats_copy_rate_est +EXPORT_SYMBOL vmlinux 0xb1c3a01a oops_in_progress +EXPORT_SYMBOL vmlinux 0xb1cf44df fb_find_best_mode +EXPORT_SYMBOL vmlinux 0xb1ed6dbf unmap_underlying_metadata +EXPORT_SYMBOL vmlinux 0xb1f3e862 __remove_inode_hash +EXPORT_SYMBOL vmlinux 0xb20233b5 seq_puts +EXPORT_SYMBOL vmlinux 0xb20ecf88 acpi_run_osc +EXPORT_SYMBOL vmlinux 0xb212f2fd bmap +EXPORT_SYMBOL vmlinux 0xb2682405 utf8_to_utf32 +EXPORT_SYMBOL vmlinux 0xb2710428 sock_no_sendmsg +EXPORT_SYMBOL vmlinux 0xb296822f devfreq_unregister_opp_notifier +EXPORT_SYMBOL vmlinux 0xb2b5467b neigh_connected_output +EXPORT_SYMBOL vmlinux 0xb2be6e92 netdev_stats_to_stats64 +EXPORT_SYMBOL vmlinux 0xb2c4378f twl6040_get_pll +EXPORT_SYMBOL vmlinux 0xb2f6fc43 blk_queue_merge_bvec +EXPORT_SYMBOL vmlinux 0xb2f7b18f ppp_input_error +EXPORT_SYMBOL vmlinux 0xb30c8833 alloc_buffer_head +EXPORT_SYMBOL vmlinux 0xb3284531 acpi_dbg_layer +EXPORT_SYMBOL vmlinux 0xb3302b93 vm_mmap +EXPORT_SYMBOL vmlinux 0xb37bee52 rename_lock +EXPORT_SYMBOL vmlinux 0xb387e36f xfrm4_prepare_output +EXPORT_SYMBOL vmlinux 0xb39468e5 tty_port_destroy +EXPORT_SYMBOL vmlinux 0xb39c91f7 dev_set_allmulti +EXPORT_SYMBOL vmlinux 0xb3b0fcd3 revalidate_disk +EXPORT_SYMBOL vmlinux 0xb3bc630a skb_put +EXPORT_SYMBOL vmlinux 0xb3d2c76d scsi_hostbyte_string +EXPORT_SYMBOL vmlinux 0xb3d6232b proto_unregister +EXPORT_SYMBOL vmlinux 0xb3ddbf4f locks_remove_posix +EXPORT_SYMBOL vmlinux 0xb3f7646e kthread_should_stop +EXPORT_SYMBOL vmlinux 0xb423dba1 console_blanked +EXPORT_SYMBOL vmlinux 0xb441590f xfrm_dst_ifdown +EXPORT_SYMBOL vmlinux 0xb45b2c76 devm_ioremap +EXPORT_SYMBOL vmlinux 0xb4709322 scsi_dev_info_add_list +EXPORT_SYMBOL vmlinux 0xb47189b5 reservation_ww_class +EXPORT_SYMBOL vmlinux 0xb48ea03f netdev_upper_get_next_dev_rcu +EXPORT_SYMBOL vmlinux 0xb4df6714 pci_prepare_to_sleep +EXPORT_SYMBOL vmlinux 0xb4e829af tcf_destroy_chain +EXPORT_SYMBOL vmlinux 0xb4f36895 padata_set_cpumasks +EXPORT_SYMBOL vmlinux 0xb4f57104 inet_add_protocol +EXPORT_SYMBOL vmlinux 0xb4fc735b idr_remove +EXPORT_SYMBOL vmlinux 0xb500d237 __dev_get_by_name +EXPORT_SYMBOL vmlinux 0xb500f757 csum_and_copy_from_iter +EXPORT_SYMBOL vmlinux 0xb50a7a61 put_cmsg +EXPORT_SYMBOL vmlinux 0xb51f4c88 fib_default_rule_add +EXPORT_SYMBOL vmlinux 0xb55c5a3a vfs_statfs +EXPORT_SYMBOL vmlinux 0xb56957ab zero_fill_bio +EXPORT_SYMBOL vmlinux 0xb56c5d89 pfifo_qdisc_ops +EXPORT_SYMBOL vmlinux 0xb57343c2 frontswap_shrink +EXPORT_SYMBOL vmlinux 0xb57631c7 tso_build_hdr +EXPORT_SYMBOL vmlinux 0xb57a70e9 __devm_release_region +EXPORT_SYMBOL vmlinux 0xb587cf59 sb_min_blocksize +EXPORT_SYMBOL vmlinux 0xb5a459dc unregister_blkdev +EXPORT_SYMBOL vmlinux 0xb5a630c5 xfrm4_protocol_deregister +EXPORT_SYMBOL vmlinux 0xb5a7e9e7 xfrm_state_lookup +EXPORT_SYMBOL vmlinux 0xb5aa7165 dma_pool_destroy +EXPORT_SYMBOL vmlinux 0xb5ad1a93 jbd2_journal_clear_features +EXPORT_SYMBOL vmlinux 0xb5ae34cb compat_ipv6_getsockopt +EXPORT_SYMBOL vmlinux 0xb5b4d1b1 cdrom_mode_select +EXPORT_SYMBOL vmlinux 0xb5c2f6ff dm_put_device +EXPORT_SYMBOL vmlinux 0xb5c7b227 try_to_free_buffers +EXPORT_SYMBOL vmlinux 0xb5ca1c46 slhc_free +EXPORT_SYMBOL vmlinux 0xb5cb5cab tcp_v4_connect +EXPORT_SYMBOL vmlinux 0xb5f7733f pci_disable_msi +EXPORT_SYMBOL vmlinux 0xb618bf73 __set_page_dirty_buffers +EXPORT_SYMBOL vmlinux 0xb6244511 sg_init_one +EXPORT_SYMBOL vmlinux 0xb64841df nf_unregister_hook +EXPORT_SYMBOL vmlinux 0xb678366f int_sqrt +EXPORT_SYMBOL vmlinux 0xb689dd9c md_finish_reshape +EXPORT_SYMBOL vmlinux 0xb6936ffe _bcd2bin +EXPORT_SYMBOL vmlinux 0xb69f9b00 mempool_free +EXPORT_SYMBOL vmlinux 0xb6a68816 find_last_bit +EXPORT_SYMBOL vmlinux 0xb6a7c6b9 irq_to_desc +EXPORT_SYMBOL vmlinux 0xb6b50f72 of_get_mac_address +EXPORT_SYMBOL vmlinux 0xb6c5663e sock_kzfree_s +EXPORT_SYMBOL vmlinux 0xb6ed3df0 bdi_init +EXPORT_SYMBOL vmlinux 0xb70d516c cfb_fillrect +EXPORT_SYMBOL vmlinux 0xb70e99f6 up_read +EXPORT_SYMBOL vmlinux 0xb71fb74f _raw_read_trylock +EXPORT_SYMBOL vmlinux 0xb7301c46 of_mdio_parse_addr +EXPORT_SYMBOL vmlinux 0xb746e1dc get_user_pages +EXPORT_SYMBOL vmlinux 0xb7488905 scsi_normalize_sense +EXPORT_SYMBOL vmlinux 0xb76ff2f8 posix_unblock_lock +EXPORT_SYMBOL vmlinux 0xb77131b1 psched_ratecfg_precompute +EXPORT_SYMBOL vmlinux 0xb77be7c4 netdev_master_upper_dev_link +EXPORT_SYMBOL vmlinux 0xb7a71b7a dma_find_channel +EXPORT_SYMBOL vmlinux 0xb7a9bc85 sock_no_ioctl +EXPORT_SYMBOL vmlinux 0xb7e016f1 sk_receive_skb +EXPORT_SYMBOL vmlinux 0xb7f511da lockref_get +EXPORT_SYMBOL vmlinux 0xb7f6507e bio_advance +EXPORT_SYMBOL vmlinux 0xb800b9ac pci_bus_size_bridges +EXPORT_SYMBOL vmlinux 0xb819a23b truncate_pagecache +EXPORT_SYMBOL vmlinux 0xb81f94da simple_getattr +EXPORT_SYMBOL vmlinux 0xb84ee4e1 register_sysctl_paths +EXPORT_SYMBOL vmlinux 0xb8679858 sk_reset_timer +EXPORT_SYMBOL vmlinux 0xb867fefa blk_queue_alignment_offset +EXPORT_SYMBOL vmlinux 0xb874b87a __clzsi2 +EXPORT_SYMBOL vmlinux 0xb8b86192 security_path_rmdir +EXPORT_SYMBOL vmlinux 0xb8bfee67 __destroy_inode +EXPORT_SYMBOL vmlinux 0xb8c5b6d9 blk_post_runtime_resume +EXPORT_SYMBOL vmlinux 0xb8e72348 phy_ethtool_set_eee +EXPORT_SYMBOL vmlinux 0xb8e9dee5 elv_unregister_queue +EXPORT_SYMBOL vmlinux 0xb8fe35df max8925_set_bits +EXPORT_SYMBOL vmlinux 0xb93c4e20 proc_doulongvec_minmax +EXPORT_SYMBOL vmlinux 0xb96586d1 sget +EXPORT_SYMBOL vmlinux 0xb96898c3 get_task_io_context +EXPORT_SYMBOL vmlinux 0xb9818b3b vme_irq_generate +EXPORT_SYMBOL vmlinux 0xb9949769 vfs_writef +EXPORT_SYMBOL vmlinux 0xb9a31005 tcp_md5_do_lookup +EXPORT_SYMBOL vmlinux 0xb9a50ff9 of_find_compatible_node +EXPORT_SYMBOL vmlinux 0xb9dc8542 icmpv6_send +EXPORT_SYMBOL vmlinux 0xb9df09ce neigh_resolve_output +EXPORT_SYMBOL vmlinux 0xb9e43630 arp_tbl +EXPORT_SYMBOL vmlinux 0xb9e8e2cc in6addr_sitelocal_allrouters +EXPORT_SYMBOL vmlinux 0xb9f5ad50 __lock_page +EXPORT_SYMBOL vmlinux 0xba0519c9 vm_map_ram +EXPORT_SYMBOL vmlinux 0xba298769 dev_remove_offload +EXPORT_SYMBOL vmlinux 0xba2d8594 ec_read +EXPORT_SYMBOL vmlinux 0xba497f13 loops_per_jiffy +EXPORT_SYMBOL vmlinux 0xba54cd48 phy_resume +EXPORT_SYMBOL vmlinux 0xba6773a9 seqno_fence_ops +EXPORT_SYMBOL vmlinux 0xba9e731d user_path_create +EXPORT_SYMBOL vmlinux 0xbad6971c dma_async_device_unregister +EXPORT_SYMBOL vmlinux 0xbae90fd4 del_random_ready_callback +EXPORT_SYMBOL vmlinux 0xbb0540aa zlib_inflateReset +EXPORT_SYMBOL vmlinux 0xbb140890 build_skb +EXPORT_SYMBOL vmlinux 0xbb1be3d0 key_instantiate_and_link +EXPORT_SYMBOL vmlinux 0xbb34134a iov_shorten +EXPORT_SYMBOL vmlinux 0xbb35675b __bitmap_intersects +EXPORT_SYMBOL vmlinux 0xbb4f4766 simple_write_to_buffer +EXPORT_SYMBOL vmlinux 0xbb578cfa dst_alloc +EXPORT_SYMBOL vmlinux 0xbb5d343d xfrm_get_acqseq +EXPORT_SYMBOL vmlinux 0xbb69a25e i2c_smbus_xfer +EXPORT_SYMBOL vmlinux 0xbb7627be blkdev_reread_part +EXPORT_SYMBOL vmlinux 0xbb773325 km_state_notify +EXPORT_SYMBOL vmlinux 0xbb7a58c8 led_blink_set +EXPORT_SYMBOL vmlinux 0xbb7c5680 cpu_rmap_update +EXPORT_SYMBOL vmlinux 0xbb909499 sg_miter_skip +EXPORT_SYMBOL vmlinux 0xbb99125c get_default_font +EXPORT_SYMBOL vmlinux 0xbba9d254 writeback_inodes_sb_nr +EXPORT_SYMBOL vmlinux 0xbbac5e22 pci_msi_vec_count +EXPORT_SYMBOL vmlinux 0xbbaeb559 memcg_socket_limit_enabled +EXPORT_SYMBOL vmlinux 0xbbb79a68 of_phy_is_fixed_link +EXPORT_SYMBOL vmlinux 0xbbc7cc6f pnp_device_attach +EXPORT_SYMBOL vmlinux 0xbbd76e57 bit_wait +EXPORT_SYMBOL vmlinux 0xbbddd80b may_umount +EXPORT_SYMBOL vmlinux 0xbbe365bc grab_cache_page_write_begin +EXPORT_SYMBOL vmlinux 0xbbf38a72 nla_reserve_nohdr +EXPORT_SYMBOL vmlinux 0xbc483c2a register_md_personality +EXPORT_SYMBOL vmlinux 0xbc60215f __scsi_iterate_devices +EXPORT_SYMBOL vmlinux 0xbc8045e9 mipi_dsi_set_maximum_return_packet_size +EXPORT_SYMBOL vmlinux 0xbc8a8cad swiotlb_unmap_sg +EXPORT_SYMBOL vmlinux 0xbcc031ae __dev_getfirstbyhwtype +EXPORT_SYMBOL vmlinux 0xbcc308bb strnlen_user +EXPORT_SYMBOL vmlinux 0xbcd14cbb mmc_register_driver +EXPORT_SYMBOL vmlinux 0xbcf1be43 amba_find_device +EXPORT_SYMBOL vmlinux 0xbcfcfbdf fsync_bdev +EXPORT_SYMBOL vmlinux 0xbd270c1e iov_iter_get_pages_alloc +EXPORT_SYMBOL vmlinux 0xbd3fe876 vfs_setpos +EXPORT_SYMBOL vmlinux 0xbd462b55 __kfifo_init +EXPORT_SYMBOL vmlinux 0xbd4b6b0a mutex_lock +EXPORT_SYMBOL vmlinux 0xbd64b9b6 inode_get_bytes +EXPORT_SYMBOL vmlinux 0xbd9074b1 blk_finish_plug +EXPORT_SYMBOL vmlinux 0xbd986dde netdev_notice +EXPORT_SYMBOL vmlinux 0xbdaf5b07 acpi_os_read_port +EXPORT_SYMBOL vmlinux 0xbdbc13a1 complete +EXPORT_SYMBOL vmlinux 0xbde3b971 do_splice_to +EXPORT_SYMBOL vmlinux 0xbdeb2295 phy_start_interrupts +EXPORT_SYMBOL vmlinux 0xbe1bb112 bitmap_onto +EXPORT_SYMBOL vmlinux 0xbe369cdc of_n_size_cells +EXPORT_SYMBOL vmlinux 0xbe3e19bd filemap_fdatawrite +EXPORT_SYMBOL vmlinux 0xbe675e6e netdev_refcnt_read +EXPORT_SYMBOL vmlinux 0xbe8b9bcc mipi_dsi_dcs_set_pixel_format +EXPORT_SYMBOL vmlinux 0xbea6802d devm_iounmap +EXPORT_SYMBOL vmlinux 0xbeb3e993 con_copy_unimap +EXPORT_SYMBOL vmlinux 0xbebdb268 dev_close +EXPORT_SYMBOL vmlinux 0xbec34ca6 ww_mutex_unlock +EXPORT_SYMBOL vmlinux 0xbef43296 console_conditional_schedule +EXPORT_SYMBOL vmlinux 0xbef98d34 is_bad_inode +EXPORT_SYMBOL vmlinux 0xbf0bec5c dev_uc_add_excl +EXPORT_SYMBOL vmlinux 0xbf246e0a dev_warn +EXPORT_SYMBOL vmlinux 0xbf602a19 kern_path +EXPORT_SYMBOL vmlinux 0xbf7fd2f5 schedule_timeout_killable +EXPORT_SYMBOL vmlinux 0xbf8ba54a vprintk +EXPORT_SYMBOL vmlinux 0xbf91e92f locks_copy_conflock +EXPORT_SYMBOL vmlinux 0xbf930ebe of_phy_register_fixed_link +EXPORT_SYMBOL vmlinux 0xbf98a2f0 tty_unthrottle +EXPORT_SYMBOL vmlinux 0xbf9bcc8d __cap_empty_set +EXPORT_SYMBOL vmlinux 0xbfa709fc scsicam_bios_param +EXPORT_SYMBOL vmlinux 0xbfac4c5a dump_align +EXPORT_SYMBOL vmlinux 0xbfb78912 framebuffer_alloc +EXPORT_SYMBOL vmlinux 0xbfc40b08 bio_init +EXPORT_SYMBOL vmlinux 0xbfd726b8 tty_port_free_xmit_buf +EXPORT_SYMBOL vmlinux 0xbfe83dd9 simple_transaction_release +EXPORT_SYMBOL vmlinux 0xbfee3ad5 loop_unregister_transfer +EXPORT_SYMBOL vmlinux 0xbff45af7 tcp_shutdown +EXPORT_SYMBOL vmlinux 0xbff6e41c cleancache_register_ops +EXPORT_SYMBOL vmlinux 0xc012d515 fence_remove_callback +EXPORT_SYMBOL vmlinux 0xc037554d amba_device_unregister +EXPORT_SYMBOL vmlinux 0xc037ea20 block_page_mkwrite +EXPORT_SYMBOL vmlinux 0xc0491ba7 security_dentry_init_security +EXPORT_SYMBOL vmlinux 0xc053ac03 blk_run_queue_async +EXPORT_SYMBOL vmlinux 0xc05bb9fb nvdimm_bus_lock +EXPORT_SYMBOL vmlinux 0xc0763484 rfkill_blocked +EXPORT_SYMBOL vmlinux 0xc0823e4c twl_i2c_write +EXPORT_SYMBOL vmlinux 0xc0a3d105 find_next_bit +EXPORT_SYMBOL vmlinux 0xc0cd9eff tso_start +EXPORT_SYMBOL vmlinux 0xc0e62f75 sock_register +EXPORT_SYMBOL vmlinux 0xc0f8dd24 xfrm_state_alloc +EXPORT_SYMBOL vmlinux 0xc10bcc89 nf_reinject +EXPORT_SYMBOL vmlinux 0xc1235d63 blk_queue_segment_boundary +EXPORT_SYMBOL vmlinux 0xc13a423d pci_map_rom +EXPORT_SYMBOL vmlinux 0xc15a44c6 memzero_explicit +EXPORT_SYMBOL vmlinux 0xc16d3bb0 input_unregister_handle +EXPORT_SYMBOL vmlinux 0xc184faa9 blk_register_region +EXPORT_SYMBOL vmlinux 0xc190d3fa mark_buffer_dirty +EXPORT_SYMBOL vmlinux 0xc1a7d851 devm_gpiod_put_array +EXPORT_SYMBOL vmlinux 0xc1c54036 sock_get_timestamp +EXPORT_SYMBOL vmlinux 0xc1d8cfaf __fdget +EXPORT_SYMBOL vmlinux 0xc1d9b643 cdrom_check_events +EXPORT_SYMBOL vmlinux 0xc1e50c0b rtnl_nla_parse_ifla +EXPORT_SYMBOL vmlinux 0xc1eda1db ioc_lookup_icq +EXPORT_SYMBOL vmlinux 0xc1ee3f9f of_get_ddr_timings +EXPORT_SYMBOL vmlinux 0xc21c26c7 check_disk_size_change +EXPORT_SYMBOL vmlinux 0xc22af931 adjust_managed_page_count +EXPORT_SYMBOL vmlinux 0xc256b030 mmc_start_req +EXPORT_SYMBOL vmlinux 0xc25b7e00 ps2_end_command +EXPORT_SYMBOL vmlinux 0xc27dc348 xfrm_init_state +EXPORT_SYMBOL vmlinux 0xc29bf967 strspn +EXPORT_SYMBOL vmlinux 0xc2a0e1f8 invalidate_bdev +EXPORT_SYMBOL vmlinux 0xc2a2bbb1 get_fs_type +EXPORT_SYMBOL vmlinux 0xc2b11975 tcf_hash_check +EXPORT_SYMBOL vmlinux 0xc2be5320 block_commit_write +EXPORT_SYMBOL vmlinux 0xc2e587d1 reset_devices +EXPORT_SYMBOL vmlinux 0xc2f80d7b pcie_get_minimum_link +EXPORT_SYMBOL vmlinux 0xc2f9c045 timespec_to_jiffies +EXPORT_SYMBOL vmlinux 0xc2fc78a2 udp_push_pending_frames +EXPORT_SYMBOL vmlinux 0xc2fe92a8 d_find_any_alias +EXPORT_SYMBOL vmlinux 0xc30ac151 tcp_make_synack +EXPORT_SYMBOL vmlinux 0xc3108989 proto_register +EXPORT_SYMBOL vmlinux 0xc310b981 strnstr +EXPORT_SYMBOL vmlinux 0xc32264f3 drop_super +EXPORT_SYMBOL vmlinux 0xc336912b __cleancache_init_fs +EXPORT_SYMBOL vmlinux 0xc345b4a9 blk_post_runtime_suspend +EXPORT_SYMBOL vmlinux 0xc34e91fd blk_queue_resize_tags +EXPORT_SYMBOL vmlinux 0xc34eadff netif_device_attach +EXPORT_SYMBOL vmlinux 0xc3609bbf pnp_activate_dev +EXPORT_SYMBOL vmlinux 0xc3637bac __seq_open_private +EXPORT_SYMBOL vmlinux 0xc37ca656 dquot_quota_off +EXPORT_SYMBOL vmlinux 0xc37dfc3d pnpacpi_protocol +EXPORT_SYMBOL vmlinux 0xc3a7be25 lg_global_lock +EXPORT_SYMBOL vmlinux 0xc3b4b599 da903x_query_status +EXPORT_SYMBOL vmlinux 0xc3c2be91 mipi_dsi_packet_format_is_short +EXPORT_SYMBOL vmlinux 0xc3cd6ab8 sk_net_capable +EXPORT_SYMBOL vmlinux 0xc3e58818 inode_sb_list_lock +EXPORT_SYMBOL vmlinux 0xc43ebef8 reservation_object_add_excl_fence +EXPORT_SYMBOL vmlinux 0xc4509aa3 request_firmware_nowait +EXPORT_SYMBOL vmlinux 0xc48307db lz4_decompress +EXPORT_SYMBOL vmlinux 0xc486b0e3 devfreq_remove_device +EXPORT_SYMBOL vmlinux 0xc48e6d6c pcibios_bus_to_resource +EXPORT_SYMBOL vmlinux 0xc499ae1e kstrdup +EXPORT_SYMBOL vmlinux 0xc49f648e filemap_fdatawait +EXPORT_SYMBOL vmlinux 0xc4b05424 blk_run_queue +EXPORT_SYMBOL vmlinux 0xc4b1eb71 i2c_use_client +EXPORT_SYMBOL vmlinux 0xc4c4e4ef pci_read_vpd +EXPORT_SYMBOL vmlinux 0xc50e21c4 blk_alloc_queue_node +EXPORT_SYMBOL vmlinux 0xc54469cb mb_cache_entry_release +EXPORT_SYMBOL vmlinux 0xc547733f send_sig_info +EXPORT_SYMBOL vmlinux 0xc549f4db skb_copy_and_csum_bits +EXPORT_SYMBOL vmlinux 0xc54be17a find_get_entry +EXPORT_SYMBOL vmlinux 0xc54eb4da sock_alloc_send_skb +EXPORT_SYMBOL vmlinux 0xc5787c5e jbd2_journal_init_inode +EXPORT_SYMBOL vmlinux 0xc57dbc80 tcp_proto_cgroup +EXPORT_SYMBOL vmlinux 0xc59668a8 pci_match_id +EXPORT_SYMBOL vmlinux 0xc599a772 security_xfrm_state_delete +EXPORT_SYMBOL vmlinux 0xc59c04fb ata_scsi_cmd_error_handler +EXPORT_SYMBOL vmlinux 0xc5b0d235 ip_route_input_noref +EXPORT_SYMBOL vmlinux 0xc5d4c1ad tty_vhangup +EXPORT_SYMBOL vmlinux 0xc5fdef94 call_usermodehelper +EXPORT_SYMBOL vmlinux 0xc607973b iov_iter_alignment +EXPORT_SYMBOL vmlinux 0xc61c14ce __task_pid_nr_ns +EXPORT_SYMBOL vmlinux 0xc6251483 d_instantiate +EXPORT_SYMBOL vmlinux 0xc627f508 security_old_inode_init_security +EXPORT_SYMBOL vmlinux 0xc6291424 sock_no_sendpage +EXPORT_SYMBOL vmlinux 0xc62a0f60 blk_get_request +EXPORT_SYMBOL vmlinux 0xc631580a console_unlock +EXPORT_SYMBOL vmlinux 0xc65f81ed qdisc_warn_nonwc +EXPORT_SYMBOL vmlinux 0xc666a132 crc_t10dif +EXPORT_SYMBOL vmlinux 0xc667d8a3 napi_gro_frags +EXPORT_SYMBOL vmlinux 0xc6772da2 radix_tree_lookup_slot +EXPORT_SYMBOL vmlinux 0xc6a2f435 xfrm_state_insert +EXPORT_SYMBOL vmlinux 0xc6b368d3 acpi_gpe_count +EXPORT_SYMBOL vmlinux 0xc6b47c58 pci_bus_find_capability +EXPORT_SYMBOL vmlinux 0xc6cb465a __kfifo_max_r +EXPORT_SYMBOL vmlinux 0xc6cbbc89 capable +EXPORT_SYMBOL vmlinux 0xc6d95de8 jbd2_trans_will_send_data_barrier +EXPORT_SYMBOL vmlinux 0xc70271ad of_platform_bus_probe +EXPORT_SYMBOL vmlinux 0xc7208c3a serial8250_resume_port +EXPORT_SYMBOL vmlinux 0xc72321a8 dquot_resume +EXPORT_SYMBOL vmlinux 0xc7248535 update_devfreq +EXPORT_SYMBOL vmlinux 0xc72f0b34 nd_btt_sb_checksum +EXPORT_SYMBOL vmlinux 0xc7415623 jbd2__journal_start +EXPORT_SYMBOL vmlinux 0xc74740a6 read_cache_page_gfp +EXPORT_SYMBOL vmlinux 0xc7563db8 twl_set_regcache_bypass +EXPORT_SYMBOL vmlinux 0xc75d4226 dev_uc_flush +EXPORT_SYMBOL vmlinux 0xc7603560 mipi_dsi_dcs_exit_sleep_mode +EXPORT_SYMBOL vmlinux 0xc7644ad7 inode_owner_or_capable +EXPORT_SYMBOL vmlinux 0xc7650a8f xfrm_state_register_afinfo +EXPORT_SYMBOL vmlinux 0xc76996b3 mmc_request_done +EXPORT_SYMBOL vmlinux 0xc76a4f49 kfree_put_link +EXPORT_SYMBOL vmlinux 0xc781bd9f rfkill_resume_polling +EXPORT_SYMBOL vmlinux 0xc7856a3d inet6addr_notifier_call_chain +EXPORT_SYMBOL vmlinux 0xc7910c45 inet_peer_xrlim_allow +EXPORT_SYMBOL vmlinux 0xc79bcd36 dm_vcalloc +EXPORT_SYMBOL vmlinux 0xc7a4fbed rtnl_lock +EXPORT_SYMBOL vmlinux 0xc7c8d521 devfreq_recommended_opp +EXPORT_SYMBOL vmlinux 0xc7ebbf5b dquot_quotactl_ops +EXPORT_SYMBOL vmlinux 0xc7fcc5bf acpi_resource_to_address64 +EXPORT_SYMBOL vmlinux 0xc806e724 sched_autogroup_create_attach +EXPORT_SYMBOL vmlinux 0xc808c947 pci_clear_master +EXPORT_SYMBOL vmlinux 0xc83b4d5b posix_acl_from_mode +EXPORT_SYMBOL vmlinux 0xc83f5cfc cmdline_parts_find +EXPORT_SYMBOL vmlinux 0xc84a0a7e seq_hlist_start_rcu +EXPORT_SYMBOL vmlinux 0xc84b5b10 neigh_xmit +EXPORT_SYMBOL vmlinux 0xc859bd6b acpi_pm_device_sleep_state +EXPORT_SYMBOL vmlinux 0xc860df44 netdev_features_change +EXPORT_SYMBOL vmlinux 0xc863c8d8 devm_devfreq_unregister_opp_notifier +EXPORT_SYMBOL vmlinux 0xc872fd85 in6addr_interfacelocal_allnodes +EXPORT_SYMBOL vmlinux 0xc879cf2c ilookup5_nowait +EXPORT_SYMBOL vmlinux 0xc890c008 zlib_deflateEnd +EXPORT_SYMBOL vmlinux 0xc897c382 sg_init_table +EXPORT_SYMBOL vmlinux 0xc89b8c45 iput +EXPORT_SYMBOL vmlinux 0xc89ceaad param_set_invbool +EXPORT_SYMBOL vmlinux 0xc89f79d4 percpu_counter_destroy +EXPORT_SYMBOL vmlinux 0xc8a08f7d ip_mc_leave_group +EXPORT_SYMBOL vmlinux 0xc8a91f5b cpumask_local_spread +EXPORT_SYMBOL vmlinux 0xc8b57c27 autoremove_wake_function +EXPORT_SYMBOL vmlinux 0xc8c5a80c register_tcf_proto_ops +EXPORT_SYMBOL vmlinux 0xc8de14ab sock_init_data +EXPORT_SYMBOL vmlinux 0xc8e4b625 xfrm_state_add +EXPORT_SYMBOL vmlinux 0xc8f8684a sock_alloc_send_pskb +EXPORT_SYMBOL vmlinux 0xc8ff4efe bio_integrity_enabled +EXPORT_SYMBOL vmlinux 0xc911b9d5 eth_get_headlen +EXPORT_SYMBOL vmlinux 0xc92743df fsnotify_put_mark +EXPORT_SYMBOL vmlinux 0xc94a5fa7 mipi_dsi_dcs_enter_sleep_mode +EXPORT_SYMBOL vmlinux 0xc9634df9 in6addr_linklocal_allrouters +EXPORT_SYMBOL vmlinux 0xc9684f0e remap_vmalloc_range +EXPORT_SYMBOL vmlinux 0xc96b03ca fence_wait_timeout +EXPORT_SYMBOL vmlinux 0xc96e4dcb get_disk +EXPORT_SYMBOL vmlinux 0xc978479a xz_dec_run +EXPORT_SYMBOL vmlinux 0xc97bc67c sk_stream_wait_close +EXPORT_SYMBOL vmlinux 0xc98519e6 mmc_unregister_driver +EXPORT_SYMBOL vmlinux 0xc9864f9f lock_sock_fast +EXPORT_SYMBOL vmlinux 0xc9877e5e sock_kmalloc +EXPORT_SYMBOL vmlinux 0xc99e2a55 twl_rev +EXPORT_SYMBOL vmlinux 0xc9a74a2f vme_register_bridge +EXPORT_SYMBOL vmlinux 0xc9a8fa0f seq_pad +EXPORT_SYMBOL vmlinux 0xc9a94d90 mem_cgroup_begin_page_stat +EXPORT_SYMBOL vmlinux 0xc9aab8e2 of_device_get_match_data +EXPORT_SYMBOL vmlinux 0xc9afe456 console_stop +EXPORT_SYMBOL vmlinux 0xc9c2bdbd __skb_checksum +EXPORT_SYMBOL vmlinux 0xc9e40637 dquot_transfer +EXPORT_SYMBOL vmlinux 0xc9f4f686 security_d_instantiate +EXPORT_SYMBOL vmlinux 0xca0f4667 readlink_copy +EXPORT_SYMBOL vmlinux 0xca5ee09a vme_free_consistent +EXPORT_SYMBOL vmlinux 0xca832efe kmalloc_order +EXPORT_SYMBOL vmlinux 0xca8acc78 acpi_dbg_level +EXPORT_SYMBOL vmlinux 0xca9360b5 rb_next +EXPORT_SYMBOL vmlinux 0xca9c0a66 udp_disconnect +EXPORT_SYMBOL vmlinux 0xca9e9949 sk_stream_write_space +EXPORT_SYMBOL vmlinux 0xcaabf1be phys_mem_access_prot +EXPORT_SYMBOL vmlinux 0xcaad82f5 get_unmapped_area +EXPORT_SYMBOL vmlinux 0xcabc7888 idr_is_empty +EXPORT_SYMBOL vmlinux 0xcad9f139 __test_set_page_writeback +EXPORT_SYMBOL vmlinux 0xcaf2c603 scsi_sd_pm_domain +EXPORT_SYMBOL vmlinux 0xcb0288ea ledtrig_cpu +EXPORT_SYMBOL vmlinux 0xcb0632a2 md_integrity_register +EXPORT_SYMBOL vmlinux 0xcb128141 prepare_to_wait_event +EXPORT_SYMBOL vmlinux 0xcb17093b inet6_protos +EXPORT_SYMBOL vmlinux 0xcb322058 rtnl_unicast +EXPORT_SYMBOL vmlinux 0xcb405e21 generic_block_bmap +EXPORT_SYMBOL vmlinux 0xcb4ee035 xfrm_state_delete_tunnel +EXPORT_SYMBOL vmlinux 0xcb57fcbc dm_get_device +EXPORT_SYMBOL vmlinux 0xcb5831c9 __devm_gpiod_get_index +EXPORT_SYMBOL vmlinux 0xcb5dcb13 read_code +EXPORT_SYMBOL vmlinux 0xcb6f4bd5 scsi_scan_host +EXPORT_SYMBOL vmlinux 0xcb733bf2 acpi_bus_set_power +EXPORT_SYMBOL vmlinux 0xcb8305a6 pci_scan_single_device +EXPORT_SYMBOL vmlinux 0xcb86d223 trace_raw_output_prep +EXPORT_SYMBOL vmlinux 0xcb936989 hdmi_infoframe_pack +EXPORT_SYMBOL vmlinux 0xcb9f0826 security_path_mknod +EXPORT_SYMBOL vmlinux 0xcbadc24e of_count_phandle_with_args +EXPORT_SYMBOL vmlinux 0xcbae6c7a acpi_lid_notifier_unregister +EXPORT_SYMBOL vmlinux 0xcbbf0a6f audit_log_task_context +EXPORT_SYMBOL vmlinux 0xcbc9557f unregister_sysrq_key +EXPORT_SYMBOL vmlinux 0xcbcaf0e7 xfrm4_rcv_encap +EXPORT_SYMBOL vmlinux 0xcbdad607 blk_make_request +EXPORT_SYMBOL vmlinux 0xcbdc11a1 __scsi_add_device +EXPORT_SYMBOL vmlinux 0xcbe13488 free_user_ns +EXPORT_SYMBOL vmlinux 0xcbf10166 kill_pgrp +EXPORT_SYMBOL vmlinux 0xcbff5e68 mempool_create +EXPORT_SYMBOL vmlinux 0xcc014f40 __scsi_device_lookup +EXPORT_SYMBOL vmlinux 0xcc1b9f70 iget5_locked +EXPORT_SYMBOL vmlinux 0xcc248d26 serial8250_suspend_port +EXPORT_SYMBOL vmlinux 0xcc298231 tty_wait_until_sent +EXPORT_SYMBOL vmlinux 0xcc33e442 xfrm_find_acq_byseq +EXPORT_SYMBOL vmlinux 0xcc5005fe msleep_interruptible +EXPORT_SYMBOL vmlinux 0xcc6aea80 __xfrm_route_forward +EXPORT_SYMBOL vmlinux 0xcc773aa4 jbd2_journal_abort +EXPORT_SYMBOL vmlinux 0xcc778cc3 __tracepoint_fence_annotate_wait_on +EXPORT_SYMBOL vmlinux 0xcc7b846c mmc_gpio_get_ro +EXPORT_SYMBOL vmlinux 0xcc99f71c kill_anon_super +EXPORT_SYMBOL vmlinux 0xcca4fb5f pnp_unregister_driver +EXPORT_SYMBOL vmlinux 0xccb2a5b2 iterate_mounts +EXPORT_SYMBOL vmlinux 0xccc21f5e input_get_new_minor +EXPORT_SYMBOL vmlinux 0xccfcaba2 try_to_writeback_inodes_sb_nr +EXPORT_SYMBOL vmlinux 0xcd20667a kstrtou16_from_user +EXPORT_SYMBOL vmlinux 0xcd279169 nla_find +EXPORT_SYMBOL vmlinux 0xcd37ee9f tcp_sendmsg +EXPORT_SYMBOL vmlinux 0xcd57f7b0 radix_tree_tag_get +EXPORT_SYMBOL vmlinux 0xcd8298e7 vme_irq_handler +EXPORT_SYMBOL vmlinux 0xcd8d36f4 flow_get_u32_src +EXPORT_SYMBOL vmlinux 0xcd97b3b2 serio_unregister_port +EXPORT_SYMBOL vmlinux 0xcda8ae95 dquot_claim_space_nodirty +EXPORT_SYMBOL vmlinux 0xcdac6a83 __sk_mem_reclaim +EXPORT_SYMBOL vmlinux 0xcdb2d6bd pipe_lock +EXPORT_SYMBOL vmlinux 0xcdbfd194 gen_pool_free +EXPORT_SYMBOL vmlinux 0xcdc39c9e security_ismaclabel +EXPORT_SYMBOL vmlinux 0xcdfcaab3 phy_stop +EXPORT_SYMBOL vmlinux 0xce0051e7 of_device_is_big_endian +EXPORT_SYMBOL vmlinux 0xce022c31 generic_file_readonly_mmap +EXPORT_SYMBOL vmlinux 0xce1b48f9 generic_pipe_buf_get +EXPORT_SYMBOL vmlinux 0xce2840e7 irq_set_irq_wake +EXPORT_SYMBOL vmlinux 0xce38f6b3 __serio_register_driver +EXPORT_SYMBOL vmlinux 0xce47ceed copy_strings_kernel +EXPORT_SYMBOL vmlinux 0xce4904a4 acpi_leave_sleep_state +EXPORT_SYMBOL vmlinux 0xce4e47b6 __kfifo_skip_r +EXPORT_SYMBOL vmlinux 0xce5ac24f zlib_inflate_workspacesize +EXPORT_SYMBOL vmlinux 0xce6a9244 profile_pc +EXPORT_SYMBOL vmlinux 0xce7850e1 crc32_le_shift +EXPORT_SYMBOL vmlinux 0xce7f45f4 request_key_async +EXPORT_SYMBOL vmlinux 0xce8cd8f3 t10_pi_type1_crc +EXPORT_SYMBOL vmlinux 0xce91b2d3 inet_csk_reset_keepalive_timer +EXPORT_SYMBOL vmlinux 0xceab0311 strchrnul +EXPORT_SYMBOL vmlinux 0xceae504f cmdline_parts_free +EXPORT_SYMBOL vmlinux 0xceb1717d completion_done +EXPORT_SYMBOL vmlinux 0xceb30fc5 scsi_track_queue_full +EXPORT_SYMBOL vmlinux 0xceb892c9 generic_setlease +EXPORT_SYMBOL vmlinux 0xceb99bb0 simple_rmdir +EXPORT_SYMBOL vmlinux 0xcec964ee __dquot_alloc_space +EXPORT_SYMBOL vmlinux 0xcee89185 done_path_create +EXPORT_SYMBOL vmlinux 0xcef4718f swiotlb_unmap_sg_attrs +EXPORT_SYMBOL vmlinux 0xcef51982 kstrtou16 +EXPORT_SYMBOL vmlinux 0xcef86658 netdev_alert +EXPORT_SYMBOL vmlinux 0xcefcd99a serial8250_unregister_port +EXPORT_SYMBOL vmlinux 0xcf1654b2 ipv6_skip_exthdr +EXPORT_SYMBOL vmlinux 0xcf252862 md_check_recovery +EXPORT_SYMBOL vmlinux 0xcf6f38b4 scsi_device_put +EXPORT_SYMBOL vmlinux 0xcf7694bd md_wakeup_thread +EXPORT_SYMBOL vmlinux 0xcf90f819 i2c_smbus_read_byte +EXPORT_SYMBOL vmlinux 0xcfa81d6c phy_find_first +EXPORT_SYMBOL vmlinux 0xcfae312f blk_init_queue +EXPORT_SYMBOL vmlinux 0xcfb4a296 trace_print_array_seq +EXPORT_SYMBOL vmlinux 0xcfb5bad5 blk_mq_run_hw_queues +EXPORT_SYMBOL vmlinux 0xcfbd368d acpi_bus_register_driver +EXPORT_SYMBOL vmlinux 0xcfe20d77 sock_recv_errqueue +EXPORT_SYMBOL vmlinux 0xcff7ca99 blk_queue_logical_block_size +EXPORT_SYMBOL vmlinux 0xd02ccb6c kill_block_super +EXPORT_SYMBOL vmlinux 0xd03ba2e8 phy_attach +EXPORT_SYMBOL vmlinux 0xd0479b8d of_node_put +EXPORT_SYMBOL vmlinux 0xd0720a17 on_each_cpu_cond +EXPORT_SYMBOL vmlinux 0xd07b24c9 tcp_disconnect +EXPORT_SYMBOL vmlinux 0xd07b3a86 jbd2_journal_clear_err +EXPORT_SYMBOL vmlinux 0xd07d9d0d pci_disable_link_state_locked +EXPORT_SYMBOL vmlinux 0xd08e3b88 swiotlb_free_coherent +EXPORT_SYMBOL vmlinux 0xd08f6239 sg_copy_from_buffer +EXPORT_SYMBOL vmlinux 0xd09b0199 fence_context_alloc +EXPORT_SYMBOL vmlinux 0xd0a21e7d lock_rename +EXPORT_SYMBOL vmlinux 0xd0a2847c sha_init +EXPORT_SYMBOL vmlinux 0xd0a91bab skip_spaces +EXPORT_SYMBOL vmlinux 0xd0dbde11 scsi_register_driver +EXPORT_SYMBOL vmlinux 0xd0e3289a vfs_llseek +EXPORT_SYMBOL vmlinux 0xd0e54274 get_gendisk +EXPORT_SYMBOL vmlinux 0xd0ee38b8 schedule_timeout_uninterruptible +EXPORT_SYMBOL vmlinux 0xd0ef1958 jbd2_journal_init_dev +EXPORT_SYMBOL vmlinux 0xd0f36f0d audit_log_format +EXPORT_SYMBOL vmlinux 0xd0fb7cd4 __tasklet_hi_schedule_first +EXPORT_SYMBOL vmlinux 0xd10c1b9b padata_alloc +EXPORT_SYMBOL vmlinux 0xd11d6ff9 blk_mq_map_queue +EXPORT_SYMBOL vmlinux 0xd1260536 xfrm_init_replay +EXPORT_SYMBOL vmlinux 0xd147851e dev_change_flags +EXPORT_SYMBOL vmlinux 0xd14f82b0 dquot_get_state +EXPORT_SYMBOL vmlinux 0xd1652a93 acpi_info +EXPORT_SYMBOL vmlinux 0xd165bead sock_release +EXPORT_SYMBOL vmlinux 0xd1799a76 of_find_net_device_by_node +EXPORT_SYMBOL vmlinux 0xd1816f32 frontswap_writethrough +EXPORT_SYMBOL vmlinux 0xd18b6030 security_file_permission +EXPORT_SYMBOL vmlinux 0xd18ff827 cpu_present_mask +EXPORT_SYMBOL vmlinux 0xd1aeffb6 idr_alloc_cyclic +EXPORT_SYMBOL vmlinux 0xd1b9d631 pci_enable_device_io +EXPORT_SYMBOL vmlinux 0xd1d87e92 scsi_mlreturn_string +EXPORT_SYMBOL vmlinux 0xd1db816e kiocb_set_cancel_fn +EXPORT_SYMBOL vmlinux 0xd1ecdc54 tcp_timewait_state_process +EXPORT_SYMBOL vmlinux 0xd20f78cb input_inject_event +EXPORT_SYMBOL vmlinux 0xd2122505 from_kprojid_munged +EXPORT_SYMBOL vmlinux 0xd2138bd4 dev_queue_xmit_sk +EXPORT_SYMBOL vmlinux 0xd21ebd96 tty_kref_put +EXPORT_SYMBOL vmlinux 0xd2209c99 pnp_request_card_device +EXPORT_SYMBOL vmlinux 0xd220cf8a jiffies_to_timespec +EXPORT_SYMBOL vmlinux 0xd228e1ea skb_vlan_pop +EXPORT_SYMBOL vmlinux 0xd22facea generic_key_instantiate +EXPORT_SYMBOL vmlinux 0xd232b25b pnp_register_card_driver +EXPORT_SYMBOL vmlinux 0xd24071dd genl_notify +EXPORT_SYMBOL vmlinux 0xd24ba4c1 fence_free +EXPORT_SYMBOL vmlinux 0xd251d7b0 security_socket_getpeersec_dgram +EXPORT_SYMBOL vmlinux 0xd254a4a0 clkdev_alloc +EXPORT_SYMBOL vmlinux 0xd2555f19 jiffies_64_to_clock_t +EXPORT_SYMBOL vmlinux 0xd25ad337 mdio_bus_type +EXPORT_SYMBOL vmlinux 0xd25d4f74 console_blank_hook +EXPORT_SYMBOL vmlinux 0xd25e16e3 remove_wait_queue +EXPORT_SYMBOL vmlinux 0xd266133e unregister_shrinker +EXPORT_SYMBOL vmlinux 0xd267b627 open_check_o_direct +EXPORT_SYMBOL vmlinux 0xd27b25dd blk_check_plugged +EXPORT_SYMBOL vmlinux 0xd27c8bf0 scmd_printk +EXPORT_SYMBOL vmlinux 0xd28433d4 cros_ec_check_result +EXPORT_SYMBOL vmlinux 0xd2b09ce5 __kmalloc +EXPORT_SYMBOL vmlinux 0xd2da1048 register_netdevice_notifier +EXPORT_SYMBOL vmlinux 0xd2dcdaca neigh_update +EXPORT_SYMBOL vmlinux 0xd3125af2 max8998_bulk_write +EXPORT_SYMBOL vmlinux 0xd31ccb06 of_machine_is_compatible +EXPORT_SYMBOL vmlinux 0xd3259d65 test_and_set_bit +EXPORT_SYMBOL vmlinux 0xd32759c0 eth_validate_addr +EXPORT_SYMBOL vmlinux 0xd33d8d66 file_path +EXPORT_SYMBOL vmlinux 0xd346e3fe ipv6_find_hdr +EXPORT_SYMBOL vmlinux 0xd360b287 of_match_node +EXPORT_SYMBOL vmlinux 0xd36e3d59 prandom_bytes_state +EXPORT_SYMBOL vmlinux 0xd3b12742 prepare_to_wait_exclusive +EXPORT_SYMBOL vmlinux 0xd3cf2c8d devfreq_remove_governor +EXPORT_SYMBOL vmlinux 0xd419ca42 sdev_prefix_printk +EXPORT_SYMBOL vmlinux 0xd41fe818 _raw_read_unlock_irqrestore +EXPORT_SYMBOL vmlinux 0xd45cc6ca bin2hex +EXPORT_SYMBOL vmlinux 0xd47d3dee init_task +EXPORT_SYMBOL vmlinux 0xd4835ef8 dmi_check_system +EXPORT_SYMBOL vmlinux 0xd49ad9d2 d_tmpfile +EXPORT_SYMBOL vmlinux 0xd4c92a74 copy_from_iter_nocache +EXPORT_SYMBOL vmlinux 0xd4e23d02 unregister_cdrom +EXPORT_SYMBOL vmlinux 0xd4e7aa3d ioremap_cache +EXPORT_SYMBOL vmlinux 0xd4e83d63 gnet_stats_copy_basic +EXPORT_SYMBOL vmlinux 0xd4eb4674 bfifo_qdisc_ops +EXPORT_SYMBOL vmlinux 0xd4fce311 lease_get_mtime +EXPORT_SYMBOL vmlinux 0xd50f5e93 unregister_filesystem +EXPORT_SYMBOL vmlinux 0xd50fef48 acpi_detach_data +EXPORT_SYMBOL vmlinux 0xd512ad4d dmam_alloc_coherent +EXPORT_SYMBOL vmlinux 0xd520feba __neigh_for_each_release +EXPORT_SYMBOL vmlinux 0xd5300484 dev_get_by_index_rcu +EXPORT_SYMBOL vmlinux 0xd532a463 flush_dcache_page +EXPORT_SYMBOL vmlinux 0xd5469ee5 mmc_get_card +EXPORT_SYMBOL vmlinux 0xd54f41ce try_to_del_timer_sync +EXPORT_SYMBOL vmlinux 0xd558e6a3 skb_copy_expand +EXPORT_SYMBOL vmlinux 0xd5607edb udp_poll +EXPORT_SYMBOL vmlinux 0xd572e8f8 inet_frag_kill +EXPORT_SYMBOL vmlinux 0xd58d652c pci_bus_get +EXPORT_SYMBOL vmlinux 0xd5ac5008 of_get_next_child +EXPORT_SYMBOL vmlinux 0xd5b3f35c have_submounts +EXPORT_SYMBOL vmlinux 0xd5c4bdd6 dev_get_flags +EXPORT_SYMBOL vmlinux 0xd5c6f145 jbd2_journal_try_to_free_buffers +EXPORT_SYMBOL vmlinux 0xd5d78b44 generic_setxattr +EXPORT_SYMBOL vmlinux 0xd5d8f8dd mipi_dsi_dcs_write_buffer +EXPORT_SYMBOL vmlinux 0xd5dcb7ee pci_fixup_device +EXPORT_SYMBOL vmlinux 0xd60a9ba3 jbd2_journal_init_jbd_inode +EXPORT_SYMBOL vmlinux 0xd616683a ecryptfs_fill_auth_tok +EXPORT_SYMBOL vmlinux 0xd61d12a7 of_find_i2c_adapter_by_node +EXPORT_SYMBOL vmlinux 0xd626edcc xfrm_garbage_collect +EXPORT_SYMBOL vmlinux 0xd62c833f schedule_timeout +EXPORT_SYMBOL vmlinux 0xd63741ef dquot_enable +EXPORT_SYMBOL vmlinux 0xd63b3719 input_register_device +EXPORT_SYMBOL vmlinux 0xd643cb47 proc_set_user +EXPORT_SYMBOL vmlinux 0xd648e564 fb_match_mode +EXPORT_SYMBOL vmlinux 0xd649bb74 __blkdev_reread_part +EXPORT_SYMBOL vmlinux 0xd659cccf inet_del_protocol +EXPORT_SYMBOL vmlinux 0xd6746f8e tty_unregister_device +EXPORT_SYMBOL vmlinux 0xd6750172 blk_queue_max_segment_size +EXPORT_SYMBOL vmlinux 0xd688716b dm_kcopyd_client_create +EXPORT_SYMBOL vmlinux 0xd69e3f25 scsi_get_device_flags_keyed +EXPORT_SYMBOL vmlinux 0xd6ab27df scsi_device_set_state +EXPORT_SYMBOL vmlinux 0xd6ae42b3 fbcon_rotate_ccw +EXPORT_SYMBOL vmlinux 0xd6b32943 account_page_dirtied +EXPORT_SYMBOL vmlinux 0xd6b6b40e complete_request_key +EXPORT_SYMBOL vmlinux 0xd6b88cb1 bio_split +EXPORT_SYMBOL vmlinux 0xd6d00a62 __generic_file_fsync +EXPORT_SYMBOL vmlinux 0xd6ee688f vmalloc +EXPORT_SYMBOL vmlinux 0xd71e1f33 register_md_cluster_operations +EXPORT_SYMBOL vmlinux 0xd7323737 bdi_register +EXPORT_SYMBOL vmlinux 0xd73a56d0 pci_set_dma_seg_boundary +EXPORT_SYMBOL vmlinux 0xd73eef18 mmc_power_restore_host +EXPORT_SYMBOL vmlinux 0xd74f4d7b tcf_em_tree_destroy +EXPORT_SYMBOL vmlinux 0xd75c79df smp_call_function +EXPORT_SYMBOL vmlinux 0xd75f42b2 blk_limits_io_opt +EXPORT_SYMBOL vmlinux 0xd76224a7 blk_queue_init_tags +EXPORT_SYMBOL vmlinux 0xd768bf72 down_write_trylock +EXPORT_SYMBOL vmlinux 0xd7829d9a md_cluster_ops +EXPORT_SYMBOL vmlinux 0xd78e6f89 security_skb_classify_flow +EXPORT_SYMBOL vmlinux 0xd792f1d3 phy_detach +EXPORT_SYMBOL vmlinux 0xd7a28736 padata_alloc_possible +EXPORT_SYMBOL vmlinux 0xd7a57e49 phy_attach_direct +EXPORT_SYMBOL vmlinux 0xd7a85e8d __page_cache_alloc +EXPORT_SYMBOL vmlinux 0xd7b7ad0a blk_integrity_merge_rq +EXPORT_SYMBOL vmlinux 0xd7d0c5c4 dev_deactivate +EXPORT_SYMBOL vmlinux 0xd7e56a4e simple_strtoll +EXPORT_SYMBOL vmlinux 0xd7ea7094 nf_unregister_queue_handler +EXPORT_SYMBOL vmlinux 0xd7ef99cf dm_register_target +EXPORT_SYMBOL vmlinux 0xd8234cc9 fb_get_buffer_offset +EXPORT_SYMBOL vmlinux 0xd83001bb tty_register_driver +EXPORT_SYMBOL vmlinux 0xd8319139 __dev_get_by_flags +EXPORT_SYMBOL vmlinux 0xd84ab7a7 __inet_stream_connect +EXPORT_SYMBOL vmlinux 0xd84dc709 vlan_vid_add +EXPORT_SYMBOL vmlinux 0xd84e62da dm_unregister_target +EXPORT_SYMBOL vmlinux 0xd8522028 remap_pfn_range +EXPORT_SYMBOL vmlinux 0xd8534264 follow_up +EXPORT_SYMBOL vmlinux 0xd8954ca1 blk_queue_bounce_limit +EXPORT_SYMBOL vmlinux 0xd89692a3 nla_reserve +EXPORT_SYMBOL vmlinux 0xd89da37f movable_zone +EXPORT_SYMBOL vmlinux 0xd8a178b0 __break_lease +EXPORT_SYMBOL vmlinux 0xd8a994eb scsi_extd_sense_format +EXPORT_SYMBOL vmlinux 0xd8ac1988 ab3100_event_unregister +EXPORT_SYMBOL vmlinux 0xd8b3d4bb security_path_mkdir +EXPORT_SYMBOL vmlinux 0xd8cdab69 mmc_align_data_size +EXPORT_SYMBOL vmlinux 0xd8ce544e nf_nat_decode_session_hook +EXPORT_SYMBOL vmlinux 0xd8ded085 radix_tree_maybe_preload +EXPORT_SYMBOL vmlinux 0xd8e2401f freeze_super +EXPORT_SYMBOL vmlinux 0xd8e484f0 register_chrdev_region +EXPORT_SYMBOL vmlinux 0xd8f76e84 locks_free_lock +EXPORT_SYMBOL vmlinux 0xd90485e6 input_flush_device +EXPORT_SYMBOL vmlinux 0xd9091363 acpi_install_notify_handler +EXPORT_SYMBOL vmlinux 0xd918092f dcbnl_cee_notify +EXPORT_SYMBOL vmlinux 0xd9269882 ip_getsockopt +EXPORT_SYMBOL vmlinux 0xd94322e7 acpi_evaluate_reference +EXPORT_SYMBOL vmlinux 0xd9468197 proc_dointvec_jiffies +EXPORT_SYMBOL vmlinux 0xd953f079 security_sb_set_mnt_opts +EXPORT_SYMBOL vmlinux 0xd959a031 nd_region_acquire_lane +EXPORT_SYMBOL vmlinux 0xd95e5c93 blk_put_request +EXPORT_SYMBOL vmlinux 0xd9657cc2 fb_set_cmap +EXPORT_SYMBOL vmlinux 0xd972a467 unlink_framebuffer +EXPORT_SYMBOL vmlinux 0xd9743a0d mdiobus_read +EXPORT_SYMBOL vmlinux 0xd985dc99 mempool_free_pages +EXPORT_SYMBOL vmlinux 0xd99f58ce dma_sync_wait +EXPORT_SYMBOL vmlinux 0xd9b01bd0 mipi_dsi_dcs_set_display_on +EXPORT_SYMBOL vmlinux 0xd9b23f77 mntget +EXPORT_SYMBOL vmlinux 0xd9bf88da sock_diag_put_filterinfo +EXPORT_SYMBOL vmlinux 0xd9c0e2b6 qdisc_reset +EXPORT_SYMBOL vmlinux 0xd9c1df05 netpoll_send_skb_on_dev +EXPORT_SYMBOL vmlinux 0xd9d156d7 mfd_remove_devices +EXPORT_SYMBOL vmlinux 0xd9d8513b simple_follow_link +EXPORT_SYMBOL vmlinux 0xd9d8fd16 register_restart_handler +EXPORT_SYMBOL vmlinux 0xd9da4c8a deactivate_super +EXPORT_SYMBOL vmlinux 0xd9df6b64 led_update_brightness +EXPORT_SYMBOL vmlinux 0xd9e41ef3 sock_alloc_file +EXPORT_SYMBOL vmlinux 0xd9e56ec0 bio_integrity_advance +EXPORT_SYMBOL vmlinux 0xd9fb2e94 seq_read +EXPORT_SYMBOL vmlinux 0xda01479c mempool_create_node +EXPORT_SYMBOL vmlinux 0xda10e389 mmc_of_parse_voltage +EXPORT_SYMBOL vmlinux 0xda3d10a8 security_tun_dev_open +EXPORT_SYMBOL vmlinux 0xda733459 tcf_unregister_action +EXPORT_SYMBOL vmlinux 0xda750a8b inet6_getname +EXPORT_SYMBOL vmlinux 0xda7ca6cb fb_mode_is_equal +EXPORT_SYMBOL vmlinux 0xda82bb9d nf_log_register +EXPORT_SYMBOL vmlinux 0xda8af7ad fb_find_nearest_mode +EXPORT_SYMBOL vmlinux 0xda96f649 tcp_simple_retransmit +EXPORT_SYMBOL vmlinux 0xda9ec657 unlock_page +EXPORT_SYMBOL vmlinux 0xdaa930d1 serio_open +EXPORT_SYMBOL vmlinux 0xdab06a87 fsnotify_get_group +EXPORT_SYMBOL vmlinux 0xdac4913a bitmap_allocate_region +EXPORT_SYMBOL vmlinux 0xdae4c744 __put_cred +EXPORT_SYMBOL vmlinux 0xdaea6e0d mfd_clone_cell +EXPORT_SYMBOL vmlinux 0xdaed6e35 arp_xmit +EXPORT_SYMBOL vmlinux 0xdb07cac5 bio_alloc_pages +EXPORT_SYMBOL vmlinux 0xdb1446d6 pcie_capability_read_dword +EXPORT_SYMBOL vmlinux 0xdb1fa0fe param_set_short +EXPORT_SYMBOL vmlinux 0xdb3bcca6 cancel_delayed_work +EXPORT_SYMBOL vmlinux 0xdb625329 bio_reset +EXPORT_SYMBOL vmlinux 0xdb68bbad rfkill_destroy +EXPORT_SYMBOL vmlinux 0xdb6b3002 param_ops_invbool +EXPORT_SYMBOL vmlinux 0xdb729523 cdrom_get_media_event +EXPORT_SYMBOL vmlinux 0xdb7305a1 __stack_chk_fail +EXPORT_SYMBOL vmlinux 0xdb760f52 __kfifo_free +EXPORT_SYMBOL vmlinux 0xdb873bbd param_set_bool +EXPORT_SYMBOL vmlinux 0xdb935be2 sock_no_getname +EXPORT_SYMBOL vmlinux 0xdbb04130 netpoll_print_options +EXPORT_SYMBOL vmlinux 0xdbb8de4b jbd2_journal_check_used_features +EXPORT_SYMBOL vmlinux 0xdbc24c91 inode_change_ok +EXPORT_SYMBOL vmlinux 0xdbdeccdb __mem_cgroup_count_vm_event +EXPORT_SYMBOL vmlinux 0xdbf6a0c7 input_mt_assign_slots +EXPORT_SYMBOL vmlinux 0xdc047fc4 scsi_dev_info_list_add_keyed +EXPORT_SYMBOL vmlinux 0xdc129b6d pci_restore_state +EXPORT_SYMBOL vmlinux 0xdc14eda7 pci_pci_problems +EXPORT_SYMBOL vmlinux 0xdc1780c1 param_get_ullong +EXPORT_SYMBOL vmlinux 0xdc28dd52 kill_fasync +EXPORT_SYMBOL vmlinux 0xdc3c41a8 __crypto_memneq +EXPORT_SYMBOL vmlinux 0xdc3fcbc9 __sw_hweight8 +EXPORT_SYMBOL vmlinux 0xdc415f1f make_kuid +EXPORT_SYMBOL vmlinux 0xdc512134 backlight_register_notifier +EXPORT_SYMBOL vmlinux 0xdc946257 ip6_expire_frag_queue +EXPORT_SYMBOL vmlinux 0xdc9c91ee bdi_set_max_ratio +EXPORT_SYMBOL vmlinux 0xdcb0349b sys_close +EXPORT_SYMBOL vmlinux 0xdcb764ad memset +EXPORT_SYMBOL vmlinux 0xdcbfea83 block_read_full_page +EXPORT_SYMBOL vmlinux 0xdce2528d alloc_xenballooned_pages +EXPORT_SYMBOL vmlinux 0xdce7f260 blk_queue_end_tag +EXPORT_SYMBOL vmlinux 0xdd0e9aa1 wait_for_key_construction +EXPORT_SYMBOL vmlinux 0xdd1fff90 param_set_bint +EXPORT_SYMBOL vmlinux 0xdd25ac89 kernel_listen +EXPORT_SYMBOL vmlinux 0xdd338d54 nonseekable_open +EXPORT_SYMBOL vmlinux 0xdd54a10a compat_ipv6_setsockopt +EXPORT_SYMBOL vmlinux 0xdd651ffc sk_stream_kill_queues +EXPORT_SYMBOL vmlinux 0xdd694107 tcp_v4_destroy_sock +EXPORT_SYMBOL vmlinux 0xdd6bba10 dev_graft_qdisc +EXPORT_SYMBOL vmlinux 0xdd6dc950 scsi_print_command +EXPORT_SYMBOL vmlinux 0xdd8dbc18 sk_stop_timer +EXPORT_SYMBOL vmlinux 0xdd9126b9 inet_sendmsg +EXPORT_SYMBOL vmlinux 0xddb3140d scsi_scan_target +EXPORT_SYMBOL vmlinux 0xdddd0fef netpoll_parse_options +EXPORT_SYMBOL vmlinux 0xddfcfb5a phy_driver_register +EXPORT_SYMBOL vmlinux 0xde03db87 acpi_match_device_ids +EXPORT_SYMBOL vmlinux 0xde05587f abx500_mask_and_set_register_interruptible +EXPORT_SYMBOL vmlinux 0xde0a31de inet_select_addr +EXPORT_SYMBOL vmlinux 0xde26913b fbcon_set_rotate +EXPORT_SYMBOL vmlinux 0xde296e7f inode_set_bytes +EXPORT_SYMBOL vmlinux 0xde434656 wait_for_completion_interruptible +EXPORT_SYMBOL vmlinux 0xde51b622 __pagevec_release +EXPORT_SYMBOL vmlinux 0xde554e18 generic_cont_expand_simple +EXPORT_SYMBOL vmlinux 0xde6151db tcp_memory_allocated +EXPORT_SYMBOL vmlinux 0xde79b1b5 md_unregister_thread +EXPORT_SYMBOL vmlinux 0xde9360ba totalram_pages +EXPORT_SYMBOL vmlinux 0xdea8b033 elv_rq_merge_ok +EXPORT_SYMBOL vmlinux 0xdeb1d451 dm_put_table_device +EXPORT_SYMBOL vmlinux 0xdec617e3 console_start +EXPORT_SYMBOL vmlinux 0xdedc0a7c alloc_pages_current +EXPORT_SYMBOL vmlinux 0xdef704c9 free_task +EXPORT_SYMBOL vmlinux 0xdf0da3cc acpi_get_devices +EXPORT_SYMBOL vmlinux 0xdf12a927 acpi_check_dsm +EXPORT_SYMBOL vmlinux 0xdf2c2742 rb_last +EXPORT_SYMBOL vmlinux 0xdf4260b7 pci_back_from_sleep +EXPORT_SYMBOL vmlinux 0xdf54a8f7 netlink_unregister_notifier +EXPORT_SYMBOL vmlinux 0xdf5c70bb blkdev_issue_write_same +EXPORT_SYMBOL vmlinux 0xdf60cc27 __print_symbol +EXPORT_SYMBOL vmlinux 0xdf7b8ed3 dmam_free_coherent +EXPORT_SYMBOL vmlinux 0xdf7bc88d __ww_mutex_lock_interruptible +EXPORT_SYMBOL vmlinux 0xdf8c695a __ndelay +EXPORT_SYMBOL vmlinux 0xdf929370 fs_overflowgid +EXPORT_SYMBOL vmlinux 0xdfc5169b slhc_init +EXPORT_SYMBOL vmlinux 0xdfe321f7 mmc_put_card +EXPORT_SYMBOL vmlinux 0xdfe65f90 sock_no_accept +EXPORT_SYMBOL vmlinux 0xdfe8b28e dev_uc_del +EXPORT_SYMBOL vmlinux 0xdfee48b1 input_mt_get_slot_by_key +EXPORT_SYMBOL vmlinux 0xdff739f0 simple_nosetlease +EXPORT_SYMBOL vmlinux 0xdff905e5 vme_slave_free +EXPORT_SYMBOL vmlinux 0xe006fdd6 blkdev_get +EXPORT_SYMBOL vmlinux 0xe01ed833 clk_register_clkdevs +EXPORT_SYMBOL vmlinux 0xe0272d6c skb_find_text +EXPORT_SYMBOL vmlinux 0xe04f7caa dm_read_arg_group +EXPORT_SYMBOL vmlinux 0xe06141e9 security_sk_clone +EXPORT_SYMBOL vmlinux 0xe075d6eb iter_div_u64_rem +EXPORT_SYMBOL vmlinux 0xe083e246 gen_pool_first_fit_order_align +EXPORT_SYMBOL vmlinux 0xe0842124 napi_gro_receive +EXPORT_SYMBOL vmlinux 0xe084f3df cdrom_release +EXPORT_SYMBOL vmlinux 0xe095181e keyring_clear +EXPORT_SYMBOL vmlinux 0xe0a2edaa dev_loopback_xmit +EXPORT_SYMBOL vmlinux 0xe0ac8bd2 acpi_bus_generate_netlink_event +EXPORT_SYMBOL vmlinux 0xe0b13336 argv_free +EXPORT_SYMBOL vmlinux 0xe0c31d6b kernel_recvmsg +EXPORT_SYMBOL vmlinux 0xe0ca7c1b vlan_uses_dev +EXPORT_SYMBOL vmlinux 0xe0d77c0c blkdev_issue_discard +EXPORT_SYMBOL vmlinux 0xe0e516fb inet_frag_maybe_warn_overflow +EXPORT_SYMBOL vmlinux 0xe110189e ida_pre_get +EXPORT_SYMBOL vmlinux 0xe113bbbc csum_partial +EXPORT_SYMBOL vmlinux 0xe11f3cbc _raw_read_lock_bh +EXPORT_SYMBOL vmlinux 0xe127ce05 phy_ethtool_set_wol +EXPORT_SYMBOL vmlinux 0xe13cd8a7 dmi_name_in_vendors +EXPORT_SYMBOL vmlinux 0xe13f2f35 tcf_hash_search +EXPORT_SYMBOL vmlinux 0xe1418ecc pcie_get_mps +EXPORT_SYMBOL vmlinux 0xe15224bf send_sig +EXPORT_SYMBOL vmlinux 0xe15bb8ef set_security_override +EXPORT_SYMBOL vmlinux 0xe1761617 security_inet_conn_request +EXPORT_SYMBOL vmlinux 0xe1786c32 make_flow_keys_digest +EXPORT_SYMBOL vmlinux 0xe179a02b tc_classify +EXPORT_SYMBOL vmlinux 0xe179bc0b udp_lib_rehash +EXPORT_SYMBOL vmlinux 0xe194d45c sk_page_frag_refill +EXPORT_SYMBOL vmlinux 0xe197fa77 generic_file_llseek +EXPORT_SYMBOL vmlinux 0xe1aebef6 ppp_unregister_compressor +EXPORT_SYMBOL vmlinux 0xe1d43691 twl6040_clear_bits +EXPORT_SYMBOL vmlinux 0xe1d68192 blk_mq_requeue_request +EXPORT_SYMBOL vmlinux 0xe1fb205b posix_acl_from_xattr +EXPORT_SYMBOL vmlinux 0xe200f872 secure_dccpv6_sequence_number +EXPORT_SYMBOL vmlinux 0xe20372ae radix_tree_gang_lookup +EXPORT_SYMBOL vmlinux 0xe2152a02 vfs_getxattr_alloc +EXPORT_SYMBOL vmlinux 0xe22766ee vlan_vid_del +EXPORT_SYMBOL vmlinux 0xe23ae481 blk_iopoll_complete +EXPORT_SYMBOL vmlinux 0xe24d3a97 jiffies_64 +EXPORT_SYMBOL vmlinux 0xe2579716 find_inode_nowait +EXPORT_SYMBOL vmlinux 0xe2941999 __sb_end_write +EXPORT_SYMBOL vmlinux 0xe29e1d0e out_of_line_wait_on_atomic_t +EXPORT_SYMBOL vmlinux 0xe2a4e9f1 blk_queue_stack_limits +EXPORT_SYMBOL vmlinux 0xe2ac90be filemap_flush +EXPORT_SYMBOL vmlinux 0xe2b15344 dquot_quota_on +EXPORT_SYMBOL vmlinux 0xe2b3affa phy_start +EXPORT_SYMBOL vmlinux 0xe2cb122d devm_get_gpiod_from_child +EXPORT_SYMBOL vmlinux 0xe2cc99bb nd_region_release_lane +EXPORT_SYMBOL vmlinux 0xe2d052f7 scsi_device_get +EXPORT_SYMBOL vmlinux 0xe2d5255a strcmp +EXPORT_SYMBOL vmlinux 0xe2f425e7 rps_cpu_mask +EXPORT_SYMBOL vmlinux 0xe3178c81 unmap_mapping_range +EXPORT_SYMBOL vmlinux 0xe319eb24 acpi_pci_osc_control_set +EXPORT_SYMBOL vmlinux 0xe339a685 blk_queue_find_tag +EXPORT_SYMBOL vmlinux 0xe33d1a66 of_mdiobus_register +EXPORT_SYMBOL vmlinux 0xe3546559 inode_sub_bytes +EXPORT_SYMBOL vmlinux 0xe3737ed7 generic_end_io_acct +EXPORT_SYMBOL vmlinux 0xe37f2fb2 set_groups +EXPORT_SYMBOL vmlinux 0xe38a1f1e swiotlb_map_sg_attrs +EXPORT_SYMBOL vmlinux 0xe38b2b5a bio_integrity_endio +EXPORT_SYMBOL vmlinux 0xe3a53f4c sort +EXPORT_SYMBOL vmlinux 0xe3bdf1dd blk_integrity_register +EXPORT_SYMBOL vmlinux 0xe3d1c877 import_iovec +EXPORT_SYMBOL vmlinux 0xe3d6f284 fb_find_mode_cvt +EXPORT_SYMBOL vmlinux 0xe4058002 d_delete +EXPORT_SYMBOL vmlinux 0xe40be2aa __dev_remove_pack +EXPORT_SYMBOL vmlinux 0xe40e4b19 devm_backlight_device_register +EXPORT_SYMBOL vmlinux 0xe420146d md_register_thread +EXPORT_SYMBOL vmlinux 0xe43a767e tty_hung_up_p +EXPORT_SYMBOL vmlinux 0xe43ea776 jbd2_journal_check_available_features +EXPORT_SYMBOL vmlinux 0xe45a4e6d __devm_gpiod_get +EXPORT_SYMBOL vmlinux 0xe49c9be6 skb_queue_tail +EXPORT_SYMBOL vmlinux 0xe4a9530c iov_iter_single_seg_count +EXPORT_SYMBOL vmlinux 0xe4aa5362 compat_ip_setsockopt +EXPORT_SYMBOL vmlinux 0xe4ab8272 inet_twsk_deschedule +EXPORT_SYMBOL vmlinux 0xe4ec9b1e blk_pm_runtime_init +EXPORT_SYMBOL vmlinux 0xe4ef36b2 scsi_report_device_reset +EXPORT_SYMBOL vmlinux 0xe4f64de3 security_path_link +EXPORT_SYMBOL vmlinux 0xe4fba8f2 param_get_invbool +EXPORT_SYMBOL vmlinux 0xe5013d9b mb_cache_entry_alloc +EXPORT_SYMBOL vmlinux 0xe523ad75 synchronize_irq +EXPORT_SYMBOL vmlinux 0xe52c58d7 pcie_capability_read_word +EXPORT_SYMBOL vmlinux 0xe53f367b tcp_md5_do_add +EXPORT_SYMBOL vmlinux 0xe55c03fe generic_make_request +EXPORT_SYMBOL vmlinux 0xe57878a1 in6_pton +EXPORT_SYMBOL vmlinux 0xe5867808 dlci_ioctl_set +EXPORT_SYMBOL vmlinux 0xe58caa9c __hw_addr_unsync_dev +EXPORT_SYMBOL vmlinux 0xe5af28be blk_init_allocated_queue +EXPORT_SYMBOL vmlinux 0xe5c78a99 do_blank_screen +EXPORT_SYMBOL vmlinux 0xe5d831f5 unlock_buffer +EXPORT_SYMBOL vmlinux 0xe5e0a41c pci_set_master +EXPORT_SYMBOL vmlinux 0xe5ed5467 xfrm_policy_walk_init +EXPORT_SYMBOL vmlinux 0xe5fc8055 dev_getbyhwaddr_rcu +EXPORT_SYMBOL vmlinux 0xe6035902 netpoll_poll_disable +EXPORT_SYMBOL vmlinux 0xe62ac47c unregister_framebuffer +EXPORT_SYMBOL vmlinux 0xe639fb63 d_move +EXPORT_SYMBOL vmlinux 0xe648b11c elevator_init +EXPORT_SYMBOL vmlinux 0xe66452ab dql_init +EXPORT_SYMBOL vmlinux 0xe677d8b9 skb_checksum_help +EXPORT_SYMBOL vmlinux 0xe67d7ab0 dev_uc_sync_multiple +EXPORT_SYMBOL vmlinux 0xe697d108 __blk_iopoll_complete +EXPORT_SYMBOL vmlinux 0xe69a9df4 hdmi_spd_infoframe_pack +EXPORT_SYMBOL vmlinux 0xe6c3e124 inc_nlink +EXPORT_SYMBOL vmlinux 0xe6d4a806 tcp_md5_do_del +EXPORT_SYMBOL vmlinux 0xe6f44a27 netdev_printk +EXPORT_SYMBOL vmlinux 0xe6fbe430 can_do_mlock +EXPORT_SYMBOL vmlinux 0xe71c8c52 km_is_alive +EXPORT_SYMBOL vmlinux 0xe7290081 set_cached_acl +EXPORT_SYMBOL vmlinux 0xe738ac20 abort_creds +EXPORT_SYMBOL vmlinux 0xe738ad07 __skb_flow_dissect +EXPORT_SYMBOL vmlinux 0xe75e1613 user_path_at_empty +EXPORT_SYMBOL vmlinux 0xe78a7f8c of_clk_get_by_name +EXPORT_SYMBOL vmlinux 0xe7a0f961 vfs_mknod +EXPORT_SYMBOL vmlinux 0xe7a664c4 nf_hooks +EXPORT_SYMBOL vmlinux 0xe7a6de4c bdi_destroy +EXPORT_SYMBOL vmlinux 0xe7a81967 audit_log_secctx +EXPORT_SYMBOL vmlinux 0xe7cd7a66 mdiobus_unregister +EXPORT_SYMBOL vmlinux 0xe7d4daac seq_list_next +EXPORT_SYMBOL vmlinux 0xe7d87ca2 address_space_init_once +EXPORT_SYMBOL vmlinux 0xe8150f66 copy_to_iter +EXPORT_SYMBOL vmlinux 0xe8164781 blk_rq_set_block_pc +EXPORT_SYMBOL vmlinux 0xe81ef1dd remove_conflicting_framebuffers +EXPORT_SYMBOL vmlinux 0xe8214184 tcf_exts_destroy +EXPORT_SYMBOL vmlinux 0xe82fd927 tcf_em_unregister +EXPORT_SYMBOL vmlinux 0xe838a8f9 nd_integrity_init +EXPORT_SYMBOL vmlinux 0xe83e537b mb_cache_entry_free +EXPORT_SYMBOL vmlinux 0xe8462fce replace_mount_options +EXPORT_SYMBOL vmlinux 0xe85b815c inet_del_offload +EXPORT_SYMBOL vmlinux 0xe8794ce1 slhc_toss +EXPORT_SYMBOL vmlinux 0xe893fee7 mem_cgroup_end_page_stat +EXPORT_SYMBOL vmlinux 0xe8b13f44 vme_bus_num +EXPORT_SYMBOL vmlinux 0xe8b1779e file_open_root +EXPORT_SYMBOL vmlinux 0xe8bea3bc qdisc_put_stab +EXPORT_SYMBOL vmlinux 0xe8c02e38 down_read +EXPORT_SYMBOL vmlinux 0xe8eed560 genlmsg_put +EXPORT_SYMBOL vmlinux 0xe8fda546 scsi_ioctl +EXPORT_SYMBOL vmlinux 0xe90023e9 elevator_alloc +EXPORT_SYMBOL vmlinux 0xe9009556 consume_skb +EXPORT_SYMBOL vmlinux 0xe903b934 seq_dentry +EXPORT_SYMBOL vmlinux 0xe90b246a __xfrm_state_delete +EXPORT_SYMBOL vmlinux 0xe91297eb blk_delay_queue +EXPORT_SYMBOL vmlinux 0xe914e41e strcpy +EXPORT_SYMBOL vmlinux 0xe91f9fbb irq_stat +EXPORT_SYMBOL vmlinux 0xe91fd233 xfrm6_prepare_output +EXPORT_SYMBOL vmlinux 0xe953b21f get_next_ino +EXPORT_SYMBOL vmlinux 0xe958c2b6 nvdimm_namespace_disk_name +EXPORT_SYMBOL vmlinux 0xe95e00cf flex_array_get_ptr +EXPORT_SYMBOL vmlinux 0xe95e24ec scsi_print_sense_hdr +EXPORT_SYMBOL vmlinux 0xe9608d74 sk_wait_data +EXPORT_SYMBOL vmlinux 0xe98f90ea of_parse_phandle_with_args +EXPORT_SYMBOL vmlinux 0xe990f482 sock_no_listen +EXPORT_SYMBOL vmlinux 0xe99ea751 inet_sendpage +EXPORT_SYMBOL vmlinux 0xe9a1e837 sk_send_sigurg +EXPORT_SYMBOL vmlinux 0xe9b0d7b0 skb_orphan_partial +EXPORT_SYMBOL vmlinux 0xe9c64996 neigh_ifdown +EXPORT_SYMBOL vmlinux 0xe9e1b35d neigh_lookup +EXPORT_SYMBOL vmlinux 0xe9f7149c zlib_deflate_workspacesize +EXPORT_SYMBOL vmlinux 0xea054b22 nla_policy_len +EXPORT_SYMBOL vmlinux 0xea10d12b scsi_target_resume +EXPORT_SYMBOL vmlinux 0xea16dd4c tcp_destroy_cgroup +EXPORT_SYMBOL vmlinux 0xea1accf3 blk_end_request +EXPORT_SYMBOL vmlinux 0xea2ade90 kobject_init +EXPORT_SYMBOL vmlinux 0xea2af18f dev_printk_emit +EXPORT_SYMBOL vmlinux 0xea54fbed misc_register +EXPORT_SYMBOL vmlinux 0xea6d6c3c key_alloc +EXPORT_SYMBOL vmlinux 0xea7a42f9 __sg_free_table +EXPORT_SYMBOL vmlinux 0xea7b8a44 acpi_install_interface +EXPORT_SYMBOL vmlinux 0xea90bdd3 acpi_attach_data +EXPORT_SYMBOL vmlinux 0xeac18119 fb_set_var +EXPORT_SYMBOL vmlinux 0xeacc06f7 fence_signal +EXPORT_SYMBOL vmlinux 0xeacf38a6 devm_gpio_request_one +EXPORT_SYMBOL vmlinux 0xead39924 dcb_ieee_getapp_mask +EXPORT_SYMBOL vmlinux 0xeae3dfd6 __const_udelay +EXPORT_SYMBOL vmlinux 0xeaecb31f loop_register_transfer +EXPORT_SYMBOL vmlinux 0xeb0016c3 inet_dgram_ops +EXPORT_SYMBOL vmlinux 0xeb090f0e max8998_update_reg +EXPORT_SYMBOL vmlinux 0xeb23498d sg_miter_start +EXPORT_SYMBOL vmlinux 0xeb2fe14a genphy_setup_forced +EXPORT_SYMBOL vmlinux 0xeb37101c audit_log_end +EXPORT_SYMBOL vmlinux 0xeb44339a free_pages_exact +EXPORT_SYMBOL vmlinux 0xeb4b05be of_node_get +EXPORT_SYMBOL vmlinux 0xeb4c0a56 sock_no_mmap +EXPORT_SYMBOL vmlinux 0xeb4f2102 bitmap_startwrite +EXPORT_SYMBOL vmlinux 0xeb5b170e tty_port_tty_get +EXPORT_SYMBOL vmlinux 0xeb676fef devm_kvasprintf +EXPORT_SYMBOL vmlinux 0xeb787b79 nosteal_pipe_buf_ops +EXPORT_SYMBOL vmlinux 0xeba4aae2 pci_disable_device +EXPORT_SYMBOL vmlinux 0xebdf2057 generic_shutdown_super +EXPORT_SYMBOL vmlinux 0xebe8b0d5 dcache_dir_lseek +EXPORT_SYMBOL vmlinux 0xebf5e736 processors +EXPORT_SYMBOL vmlinux 0xec06e4ce compat_mc_getsockopt +EXPORT_SYMBOL vmlinux 0xec23a21d end_buffer_read_sync +EXPORT_SYMBOL vmlinux 0xec4d9e3a clk_get_sys +EXPORT_SYMBOL vmlinux 0xec61bfb4 md_check_no_bitmap +EXPORT_SYMBOL vmlinux 0xec700d30 ppp_channel_index +EXPORT_SYMBOL vmlinux 0xec71adc7 brioctl_set +EXPORT_SYMBOL vmlinux 0xec7aeee9 of_clk_get +EXPORT_SYMBOL vmlinux 0xec92348d mmc_gpio_request_cd +EXPORT_SYMBOL vmlinux 0xeccd3e0c acpi_handle_printk +EXPORT_SYMBOL vmlinux 0xecd57dd9 force_sig +EXPORT_SYMBOL vmlinux 0xecdf0683 gen_pool_add_virt +EXPORT_SYMBOL vmlinux 0xece57f8c seq_write +EXPORT_SYMBOL vmlinux 0xece784c2 rb_first +EXPORT_SYMBOL vmlinux 0xecfe0239 rfkill_alloc +EXPORT_SYMBOL vmlinux 0xed0d8e5f seq_path +EXPORT_SYMBOL vmlinux 0xed267afe dmam_pool_create +EXPORT_SYMBOL vmlinux 0xed433664 __per_cpu_offset +EXPORT_SYMBOL vmlinux 0xed4dcbf9 vfs_getattr_nosec +EXPORT_SYMBOL vmlinux 0xed597524 qdisc_get_rtab +EXPORT_SYMBOL vmlinux 0xed6f34c8 unregister_qdisc +EXPORT_SYMBOL vmlinux 0xed732e0b kernel_getsockname +EXPORT_SYMBOL vmlinux 0xed84b129 iterate_supers_type +EXPORT_SYMBOL vmlinux 0xed984cbd devfreq_monitor_resume +EXPORT_SYMBOL vmlinux 0xed9f9a20 __ctzsi2 +EXPORT_SYMBOL vmlinux 0xeda1bfa8 of_parse_phandle +EXPORT_SYMBOL vmlinux 0xedbaee5e nla_strcmp +EXPORT_SYMBOL vmlinux 0xedbd17aa xfrm_unregister_km +EXPORT_SYMBOL vmlinux 0xedc61ed8 blk_queue_chunk_sectors +EXPORT_SYMBOL vmlinux 0xedcb03b9 inet6_offloads +EXPORT_SYMBOL vmlinux 0xedd0026e kernel_param_unlock +EXPORT_SYMBOL vmlinux 0xee2d0fc7 _local_bh_enable +EXPORT_SYMBOL vmlinux 0xee2eab84 pcie_capability_write_word +EXPORT_SYMBOL vmlinux 0xee31ec4f inet_release +EXPORT_SYMBOL vmlinux 0xee43b816 lg_local_unlock_cpu +EXPORT_SYMBOL vmlinux 0xee513921 irq_set_chip +EXPORT_SYMBOL vmlinux 0xee573729 netlink_ns_capable +EXPORT_SYMBOL vmlinux 0xee7cfc89 sock_setsockopt +EXPORT_SYMBOL vmlinux 0xee7eb9e1 pnp_platform_devices +EXPORT_SYMBOL vmlinux 0xee91879b rb_first_postorder +EXPORT_SYMBOL vmlinux 0xee99db03 __block_page_mkwrite +EXPORT_SYMBOL vmlinux 0xeea9dbaf bitmap_bitremap +EXPORT_SYMBOL vmlinux 0xeeb5bb48 init_buffer +EXPORT_SYMBOL vmlinux 0xeeb5bd3b __tracepoint_kfree +EXPORT_SYMBOL vmlinux 0xeed651da __module_put_and_exit +EXPORT_SYMBOL vmlinux 0xeedcc14e mb_cache_entry_find_first +EXPORT_SYMBOL vmlinux 0xeee0ca66 pcix_get_max_mmrbc +EXPORT_SYMBOL vmlinux 0xeef161aa groups_free +EXPORT_SYMBOL vmlinux 0xeef194b1 skb_append_datato_frags +EXPORT_SYMBOL vmlinux 0xeefa1259 write_inode_now +EXPORT_SYMBOL vmlinux 0xeefe9ac2 scsi_remove_target +EXPORT_SYMBOL vmlinux 0xeeffabf7 i2c_master_send +EXPORT_SYMBOL vmlinux 0xef1544ba generic_write_end +EXPORT_SYMBOL vmlinux 0xef2008ff scsi_block_requests +EXPORT_SYMBOL vmlinux 0xef23672d simple_empty +EXPORT_SYMBOL vmlinux 0xef30fcff pci_reenable_device +EXPORT_SYMBOL vmlinux 0xef762557 find_vma +EXPORT_SYMBOL vmlinux 0xef767945 bio_integrity_add_page +EXPORT_SYMBOL vmlinux 0xef8fc2b1 blk_integrity_is_initialized +EXPORT_SYMBOL vmlinux 0xefbe775f tcp_v4_md5_hash_skb +EXPORT_SYMBOL vmlinux 0xefd1624a vme_dma_free_attribute +EXPORT_SYMBOL vmlinux 0xefd6b9c6 ps2_handle_ack +EXPORT_SYMBOL vmlinux 0xefda1327 xfrm4_protocol_register +EXPORT_SYMBOL vmlinux 0xefdd70ce security_secid_to_secctx +EXPORT_SYMBOL vmlinux 0xf0009fee put_pages_list +EXPORT_SYMBOL vmlinux 0xf00b1977 free_netdev +EXPORT_SYMBOL vmlinux 0xf0187927 __sg_page_iter_next +EXPORT_SYMBOL vmlinux 0xf01cb158 padata_register_cpumask_notifier +EXPORT_SYMBOL vmlinux 0xf026f12c vme_dma_request +EXPORT_SYMBOL vmlinux 0xf05ffa15 fb_var_to_videomode +EXPORT_SYMBOL vmlinux 0xf0608724 textsearch_unregister +EXPORT_SYMBOL vmlinux 0xf06ef674 __ip_select_ident +EXPORT_SYMBOL vmlinux 0xf06f6e58 i2c_register_driver +EXPORT_SYMBOL vmlinux 0xf083030d dev_getfirstbyhwtype +EXPORT_SYMBOL vmlinux 0xf08c67de napi_alloc_frag +EXPORT_SYMBOL vmlinux 0xf090b72f get_empty_filp +EXPORT_SYMBOL vmlinux 0xf09da4c0 param_set_ushort +EXPORT_SYMBOL vmlinux 0xf09de776 get_random_int +EXPORT_SYMBOL vmlinux 0xf0a8237a radix_tree_gang_lookup_tag +EXPORT_SYMBOL vmlinux 0xf0aec927 pagevec_lookup_tag +EXPORT_SYMBOL vmlinux 0xf0bce5dc xfrm_register_km +EXPORT_SYMBOL vmlinux 0xf0cbfa09 udp6_set_csum +EXPORT_SYMBOL vmlinux 0xf0d2e047 __vfs_read +EXPORT_SYMBOL vmlinux 0xf0e4f920 of_phy_attach +EXPORT_SYMBOL vmlinux 0xf0ef15b4 list_sort +EXPORT_SYMBOL vmlinux 0xf0f9ee3b netdev_lower_get_next +EXPORT_SYMBOL vmlinux 0xf10526ac verify_spi_info +EXPORT_SYMBOL vmlinux 0xf106e46a lease_modify +EXPORT_SYMBOL vmlinux 0xf11225d4 __frontswap_store +EXPORT_SYMBOL vmlinux 0xf11cb414 input_event +EXPORT_SYMBOL vmlinux 0xf1201c18 jbd2_journal_extend +EXPORT_SYMBOL vmlinux 0xf127ceff vfs_symlink +EXPORT_SYMBOL vmlinux 0xf134bfa4 __nla_put +EXPORT_SYMBOL vmlinux 0xf147dcb2 hdmi_spd_infoframe_init +EXPORT_SYMBOL vmlinux 0xf15fab73 __d_drop +EXPORT_SYMBOL vmlinux 0xf1697e38 phy_stop_interrupts +EXPORT_SYMBOL vmlinux 0xf1730d61 devm_request_any_context_irq +EXPORT_SYMBOL vmlinux 0xf195c682 fb_invert_cmaps +EXPORT_SYMBOL vmlinux 0xf1969a8e __usecs_to_jiffies +EXPORT_SYMBOL vmlinux 0xf1d89373 twl6040_get_vibralr_status +EXPORT_SYMBOL vmlinux 0xf1db1704 nla_memcpy +EXPORT_SYMBOL vmlinux 0xf1dc855f mii_check_gmii_support +EXPORT_SYMBOL vmlinux 0xf1e59508 sg_miter_next +EXPORT_SYMBOL vmlinux 0xf1e98c74 avenrun +EXPORT_SYMBOL vmlinux 0xf1ed9782 bio_phys_segments +EXPORT_SYMBOL vmlinux 0xf1ef6a92 __register_binfmt +EXPORT_SYMBOL vmlinux 0xf1f6563a mipi_dsi_dcs_set_display_off +EXPORT_SYMBOL vmlinux 0xf2027ac8 cdrom_mode_sense +EXPORT_SYMBOL vmlinux 0xf20dabd8 free_irq +EXPORT_SYMBOL vmlinux 0xf221a09b cpufreq_global_kobject +EXPORT_SYMBOL vmlinux 0xf23fcb99 __kfifo_in +EXPORT_SYMBOL vmlinux 0xf25280b4 twl6040_set_pll +EXPORT_SYMBOL vmlinux 0xf2744b45 pcim_iomap_table +EXPORT_SYMBOL vmlinux 0xf2984834 pipe_unlock +EXPORT_SYMBOL vmlinux 0xf2997713 tty_termios_hw_change +EXPORT_SYMBOL vmlinux 0xf2a0459d lg_local_lock +EXPORT_SYMBOL vmlinux 0xf2a0af8f backlight_device_registered +EXPORT_SYMBOL vmlinux 0xf2a2b163 resource_list_create_entry +EXPORT_SYMBOL vmlinux 0xf2a2e39e seq_release +EXPORT_SYMBOL vmlinux 0xf2a588ba blk_mq_start_hw_queues +EXPORT_SYMBOL vmlinux 0xf2c43f3f zlib_deflate +EXPORT_SYMBOL vmlinux 0xf2d73acb tcf_exts_change +EXPORT_SYMBOL vmlinux 0xf2e028e5 seq_open_private +EXPORT_SYMBOL vmlinux 0xf2eb11d0 sock_no_socketpair +EXPORT_SYMBOL vmlinux 0xf304f0f4 tty_devnum +EXPORT_SYMBOL vmlinux 0xf30fdd4f skb_copy_and_csum_datagram_msg +EXPORT_SYMBOL vmlinux 0xf312cb9d ucs2_strsize +EXPORT_SYMBOL vmlinux 0xf313da4e sha_transform +EXPORT_SYMBOL vmlinux 0xf3341268 __clear_user +EXPORT_SYMBOL vmlinux 0xf336df56 no_llseek +EXPORT_SYMBOL vmlinux 0xf3388a43 pci_find_capability +EXPORT_SYMBOL vmlinux 0xf33cd2bf inet_confirm_addr +EXPORT_SYMBOL vmlinux 0xf33f151c blk_cleanup_queue +EXPORT_SYMBOL vmlinux 0xf346231f seq_list_start_head +EXPORT_SYMBOL vmlinux 0xf353a698 register_module_notifier +EXPORT_SYMBOL vmlinux 0xf35b170c blk_mq_end_request +EXPORT_SYMBOL vmlinux 0xf389fe60 __hw_addr_init +EXPORT_SYMBOL vmlinux 0xf3916987 global_cursor_default +EXPORT_SYMBOL vmlinux 0xf3957b83 elv_rb_add +EXPORT_SYMBOL vmlinux 0xf396cd21 tcp_parse_md5sig_option +EXPORT_SYMBOL vmlinux 0xf3986b06 acpi_os_map_generic_address +EXPORT_SYMBOL vmlinux 0xf3a426a4 wait_for_completion_timeout +EXPORT_SYMBOL vmlinux 0xf3c5d7cb scsi_host_set_state +EXPORT_SYMBOL vmlinux 0xf3c8a89b __scm_send +EXPORT_SYMBOL vmlinux 0xf3e6402e __bitmap_equal +EXPORT_SYMBOL vmlinux 0xf40936d3 dma_mmap_from_coherent +EXPORT_SYMBOL vmlinux 0xf4164f5c tcp_enter_cwr +EXPORT_SYMBOL vmlinux 0xf41ae131 filemap_fdatawrite_range +EXPORT_SYMBOL vmlinux 0xf42076ff netlink_net_capable +EXPORT_SYMBOL vmlinux 0xf432da17 napi_complete_done +EXPORT_SYMBOL vmlinux 0xf435f1ae from_kprojid +EXPORT_SYMBOL vmlinux 0xf44c5016 pm860x_bulk_write +EXPORT_SYMBOL vmlinux 0xf44e48c6 dquot_mark_dquot_dirty +EXPORT_SYMBOL vmlinux 0xf4667796 linkwatch_fire_event +EXPORT_SYMBOL vmlinux 0xf474c21c bitmap_print_to_pagebuf +EXPORT_SYMBOL vmlinux 0xf474fdcb kfree_const +EXPORT_SYMBOL vmlinux 0xf4835f92 wait_for_completion_io +EXPORT_SYMBOL vmlinux 0xf4843812 alloc_anon_inode +EXPORT_SYMBOL vmlinux 0xf48c99ae skb_vlan_push +EXPORT_SYMBOL vmlinux 0xf4998793 disk_stack_limits +EXPORT_SYMBOL vmlinux 0xf4a09a83 dma_pool_create +EXPORT_SYMBOL vmlinux 0xf4ab4aab dquot_initialize +EXPORT_SYMBOL vmlinux 0xf4b754fd acpi_resources_are_enforced +EXPORT_SYMBOL vmlinux 0xf4bdbeb9 __frontswap_invalidate_area +EXPORT_SYMBOL vmlinux 0xf4c776b8 should_remove_suid +EXPORT_SYMBOL vmlinux 0xf4c8ff62 pci_bus_read_dev_vendor_id +EXPORT_SYMBOL vmlinux 0xf4e6a6e0 submit_bio +EXPORT_SYMBOL vmlinux 0xf4f14de6 rtnl_trylock +EXPORT_SYMBOL vmlinux 0xf508ae30 tcp_v4_do_rcv +EXPORT_SYMBOL vmlinux 0xf51bf88b nf_hooks_needed +EXPORT_SYMBOL vmlinux 0xf522f68f scsi_eh_restore_cmnd +EXPORT_SYMBOL vmlinux 0xf52b3062 neigh_parms_release +EXPORT_SYMBOL vmlinux 0xf53d4c26 qdisc_class_hash_destroy +EXPORT_SYMBOL vmlinux 0xf5684f88 padata_add_cpu +EXPORT_SYMBOL vmlinux 0xf568f4ba ___pskb_trim +EXPORT_SYMBOL vmlinux 0xf5717aa5 iw_handler_get_thrspy +EXPORT_SYMBOL vmlinux 0xf577aeee ihold +EXPORT_SYMBOL vmlinux 0xf57e5ba2 vlan_vids_add_by_dev +EXPORT_SYMBOL vmlinux 0xf5801c54 vfs_iter_write +EXPORT_SYMBOL vmlinux 0xf5a10e25 vme_slave_set +EXPORT_SYMBOL vmlinux 0xf5c2d34d hdmi_audio_infoframe_init +EXPORT_SYMBOL vmlinux 0xf5c72665 kobject_add +EXPORT_SYMBOL vmlinux 0xf5dd8484 touchscreen_parse_of_params +EXPORT_SYMBOL vmlinux 0xf5eb86ea blk_verify_command +EXPORT_SYMBOL vmlinux 0xf5ef0917 to_ndd +EXPORT_SYMBOL vmlinux 0xf6388c56 sysctl_ip_default_ttl +EXPORT_SYMBOL vmlinux 0xf64f69f5 mmc_gpiod_request_cd +EXPORT_SYMBOL vmlinux 0xf656fe93 inode_reclaim_rsv_space +EXPORT_SYMBOL vmlinux 0xf6630e65 blk_peek_request +EXPORT_SYMBOL vmlinux 0xf6697700 md_done_sync +EXPORT_SYMBOL vmlinux 0xf66deff5 jbd2_journal_get_undo_access +EXPORT_SYMBOL vmlinux 0xf676c18e dma_mark_declared_memory_occupied +EXPORT_SYMBOL vmlinux 0xf6770391 mac_pton +EXPORT_SYMBOL vmlinux 0xf68285c0 register_inetaddr_notifier +EXPORT_SYMBOL vmlinux 0xf68687be __sg_page_iter_start +EXPORT_SYMBOL vmlinux 0xf68fc442 pci_bus_read_config_byte +EXPORT_SYMBOL vmlinux 0xf694541a gnet_stats_copy_queue +EXPORT_SYMBOL vmlinux 0xf6a6f1c3 clear_page_dirty_for_io +EXPORT_SYMBOL vmlinux 0xf6bb4729 color_table +EXPORT_SYMBOL vmlinux 0xf6cae88c security_path_symlink +EXPORT_SYMBOL vmlinux 0xf6db1160 netif_receive_skb_sk +EXPORT_SYMBOL vmlinux 0xf6e91566 __dynamic_dev_dbg +EXPORT_SYMBOL vmlinux 0xf6ebc03b net_ratelimit +EXPORT_SYMBOL vmlinux 0xf6f0ffed _raw_spin_lock_bh +EXPORT_SYMBOL vmlinux 0xf6fc8791 __bitmap_xor +EXPORT_SYMBOL vmlinux 0xf7030c85 rps_may_expire_flow +EXPORT_SYMBOL vmlinux 0xf7047119 __skb_checksum_complete_head +EXPORT_SYMBOL vmlinux 0xf70de92c pci_iomap_range +EXPORT_SYMBOL vmlinux 0xf70e2c3c __ps2_command +EXPORT_SYMBOL vmlinux 0xf7155215 page_readlink +EXPORT_SYMBOL vmlinux 0xf7289d14 __tracepoint_kmem_cache_free +EXPORT_SYMBOL vmlinux 0xf7293961 cfb_copyarea +EXPORT_SYMBOL vmlinux 0xf7584a9c find_font +EXPORT_SYMBOL vmlinux 0xf75a3bea key_reject_and_link +EXPORT_SYMBOL vmlinux 0xf760e1ca get_phy_device +EXPORT_SYMBOL vmlinux 0xf77555cd __memcpy_toio +EXPORT_SYMBOL vmlinux 0xf79e97cd acpi_get_physical_device_location +EXPORT_SYMBOL vmlinux 0xf7adcaf3 __tracepoint_kmalloc_node +EXPORT_SYMBOL vmlinux 0xf7b0695a mem_section +EXPORT_SYMBOL vmlinux 0xf7b57bbf override_creds +EXPORT_SYMBOL vmlinux 0xf7c3cbb5 phy_ethtool_get_wol +EXPORT_SYMBOL vmlinux 0xf7cd7134 noop_fsync +EXPORT_SYMBOL vmlinux 0xf7d77791 skb_seq_read +EXPORT_SYMBOL vmlinux 0xf7f04686 tcf_hash_cleanup +EXPORT_SYMBOL vmlinux 0xf811e69d scsi_eh_flush_done_q +EXPORT_SYMBOL vmlinux 0xf812cff6 memscan +EXPORT_SYMBOL vmlinux 0xf81938e0 simple_open +EXPORT_SYMBOL vmlinux 0xf827cb83 free_reserved_area +EXPORT_SYMBOL vmlinux 0xf82abc1d isa_dma_bridge_buggy +EXPORT_SYMBOL vmlinux 0xf82ec573 rb_prev +EXPORT_SYMBOL vmlinux 0xf844391e param_ops_ulong +EXPORT_SYMBOL vmlinux 0xf8456aa4 gro_find_complete_by_type +EXPORT_SYMBOL vmlinux 0xf86d7691 ppp_register_channel +EXPORT_SYMBOL vmlinux 0xf8794b6e xfrm_state_unregister_afinfo +EXPORT_SYMBOL vmlinux 0xf88e0ee2 acpi_get_table_header +EXPORT_SYMBOL vmlinux 0xf89697e0 tcp_mtup_init +EXPORT_SYMBOL vmlinux 0xf8a12e9d tcp_enter_memory_pressure +EXPORT_SYMBOL vmlinux 0xf8d04f09 __crc32c_le_shift +EXPORT_SYMBOL vmlinux 0xf8d7b310 __sync_dirty_buffer +EXPORT_SYMBOL vmlinux 0xf8e398fc memstart_addr +EXPORT_SYMBOL vmlinux 0xf8f80321 mmc_wait_for_cmd +EXPORT_SYMBOL vmlinux 0xf8ffa8e8 nf_ip_checksum +EXPORT_SYMBOL vmlinux 0xf9029fd3 devm_gpiod_get_array +EXPORT_SYMBOL vmlinux 0xf90ec69d dcb_ieee_delapp +EXPORT_SYMBOL vmlinux 0xf9132fcc pci_lost_interrupt +EXPORT_SYMBOL vmlinux 0xf91ce9a2 iget_failed +EXPORT_SYMBOL vmlinux 0xf924c824 netdev_lower_get_first_private_rcu +EXPORT_SYMBOL vmlinux 0xf956c339 wait_for_completion_killable_timeout +EXPORT_SYMBOL vmlinux 0xf971b318 gen_replace_estimator +EXPORT_SYMBOL vmlinux 0xf979bd33 find_lock_entry +EXPORT_SYMBOL vmlinux 0xf9a482f9 msleep +EXPORT_SYMBOL vmlinux 0xf9b04d9b __netif_schedule +EXPORT_SYMBOL vmlinux 0xf9c0b663 strlcat +EXPORT_SYMBOL vmlinux 0xf9dde891 wait_for_completion +EXPORT_SYMBOL vmlinux 0xf9edcf74 vme_master_request +EXPORT_SYMBOL vmlinux 0xfa1139b6 neigh_destroy +EXPORT_SYMBOL vmlinux 0xfa47465f ida_simple_get +EXPORT_SYMBOL vmlinux 0xfa599bb2 netlink_register_notifier +EXPORT_SYMBOL vmlinux 0xfa771902 tcf_hash_insert +EXPORT_SYMBOL vmlinux 0xfa84036d bio_integrity_clone +EXPORT_SYMBOL vmlinux 0xfa9551f4 vfs_getattr +EXPORT_SYMBOL vmlinux 0xfac8865f sysctl_wmem_max +EXPORT_SYMBOL vmlinux 0xfacc4158 inet_rtx_syn_ack +EXPORT_SYMBOL vmlinux 0xfacd8e72 vme_dma_vme_attribute +EXPORT_SYMBOL vmlinux 0xfae67b1f cap_mmap_addr +EXPORT_SYMBOL vmlinux 0xfb0443fb acpi_get_parent +EXPORT_SYMBOL vmlinux 0xfb112be7 dup_iter +EXPORT_SYMBOL vmlinux 0xfb235acd pcim_iomap +EXPORT_SYMBOL vmlinux 0xfb2ca7b5 __napi_alloc_skb +EXPORT_SYMBOL vmlinux 0xfb477d73 call_netdevice_notifiers +EXPORT_SYMBOL vmlinux 0xfb528827 phy_mac_interrupt +EXPORT_SYMBOL vmlinux 0xfb5f03f2 is_nvdimm_bus_locked +EXPORT_SYMBOL vmlinux 0xfb66c598 sock_recvmsg +EXPORT_SYMBOL vmlinux 0xfb6af58d recalc_sigpending +EXPORT_SYMBOL vmlinux 0xfb78dff6 pci_scan_bridge +EXPORT_SYMBOL vmlinux 0xfb7a2ec6 __dst_destroy_metrics_generic +EXPORT_SYMBOL vmlinux 0xfb80c7a0 acpi_walk_namespace +EXPORT_SYMBOL vmlinux 0xfb94103e __clzdi2 +EXPORT_SYMBOL vmlinux 0xfb955c43 pci_bus_write_config_word +EXPORT_SYMBOL vmlinux 0xfb99fb32 devm_gpio_request +EXPORT_SYMBOL vmlinux 0xfbaaf01e console_lock +EXPORT_SYMBOL vmlinux 0xfbacf20a dev_set_promiscuity +EXPORT_SYMBOL vmlinux 0xfbc4f89e io_schedule_timeout +EXPORT_SYMBOL vmlinux 0xfbccae8e key_payload_reserve +EXPORT_SYMBOL vmlinux 0xfbe8ff5e cpu_online_mask +EXPORT_SYMBOL vmlinux 0xfc02b7ad sysctl_tcp_wmem +EXPORT_SYMBOL vmlinux 0xfc14f9fb bio_chain +EXPORT_SYMBOL vmlinux 0xfc236a2e blk_stop_queue +EXPORT_SYMBOL vmlinux 0xfc2ea1df lookup_bdev +EXPORT_SYMBOL vmlinux 0xfc3156b6 nf_log_trace +EXPORT_SYMBOL vmlinux 0xfc413667 kill_litter_super +EXPORT_SYMBOL vmlinux 0xfc4b6d0a __percpu_counter_sum +EXPORT_SYMBOL vmlinux 0xfc52047f __wake_up_bit +EXPORT_SYMBOL vmlinux 0xfc73661e i2c_verify_client +EXPORT_SYMBOL vmlinux 0xfc8250e7 simple_dir_operations +EXPORT_SYMBOL vmlinux 0xfc96a390 netif_napi_add +EXPORT_SYMBOL vmlinux 0xfca2483b __skb_flow_get_ports +EXPORT_SYMBOL vmlinux 0xfcac0d40 acpi_install_interface_handler +EXPORT_SYMBOL vmlinux 0xfcb926cd kstrtouint_from_user +EXPORT_SYMBOL vmlinux 0xfcc2a43c utf32_to_utf8 +EXPORT_SYMBOL vmlinux 0xfcdf6648 framebuffer_release +EXPORT_SYMBOL vmlinux 0xfceb54fc netpoll_poll_enable +EXPORT_SYMBOL vmlinux 0xfcec0987 enable_irq +EXPORT_SYMBOL vmlinux 0xfcef7c3e ipv6_chk_addr +EXPORT_SYMBOL vmlinux 0xfceffb79 dquot_quota_sync +EXPORT_SYMBOL vmlinux 0xfcfa03ff fb_videomode_to_modelist +EXPORT_SYMBOL vmlinux 0xfd0501b9 xfrm6_input_addr +EXPORT_SYMBOL vmlinux 0xfd319024 mmc_set_blockcount +EXPORT_SYMBOL vmlinux 0xfd3405c3 xfrm_policy_hash_rebuild +EXPORT_SYMBOL vmlinux 0xfd484621 unlock_two_nondirectories +EXPORT_SYMBOL vmlinux 0xfd63d841 skb_abort_seq_read +EXPORT_SYMBOL vmlinux 0xfd721d09 sync_inode +EXPORT_SYMBOL vmlinux 0xfd885168 delete_from_page_cache +EXPORT_SYMBOL vmlinux 0xfd9729a1 pci_select_bars +EXPORT_SYMBOL vmlinux 0xfd99623a ip_frag_ecn_table +EXPORT_SYMBOL vmlinux 0xfda7ef58 __xfrm_decode_session +EXPORT_SYMBOL vmlinux 0xfdbe0288 pci_add_resource_offset +EXPORT_SYMBOL vmlinux 0xfdbe070a __sock_create +EXPORT_SYMBOL vmlinux 0xfdcc1721 wireless_spy_update +EXPORT_SYMBOL vmlinux 0xfdd0b11e devfreq_monitor_stop +EXPORT_SYMBOL vmlinux 0xfdd75f49 __bread_gfp +EXPORT_SYMBOL vmlinux 0xfde38c42 blk_mq_kick_requeue_list +EXPORT_SYMBOL vmlinux 0xfdfc0b3b fiemap_fill_next_extent +EXPORT_SYMBOL vmlinux 0xfe029963 unregister_inetaddr_notifier +EXPORT_SYMBOL vmlinux 0xfe047ce6 acpi_enter_sleep_state +EXPORT_SYMBOL vmlinux 0xfe139eaa i2c_smbus_write_byte +EXPORT_SYMBOL vmlinux 0xfe17047b kblockd_schedule_delayed_work_on +EXPORT_SYMBOL vmlinux 0xfe26fc7c nr_node_ids +EXPORT_SYMBOL vmlinux 0xfe5d4bb2 sys_tz +EXPORT_SYMBOL vmlinux 0xfe5d8c2d __splice_from_pipe +EXPORT_SYMBOL vmlinux 0xfe74035d phy_register_fixup_for_id +EXPORT_SYMBOL vmlinux 0xfe7c4287 nr_cpu_ids +EXPORT_SYMBOL vmlinux 0xfe846c19 neigh_changeaddr +EXPORT_SYMBOL vmlinux 0xfe916dc6 hex_dump_to_buffer +EXPORT_SYMBOL vmlinux 0xfe9ebbbb acpi_osi_is_win8 +EXPORT_SYMBOL vmlinux 0xfeb696b1 lockref_get_not_dead +EXPORT_SYMBOL vmlinux 0xfebf6dc7 ps2_handle_response +EXPORT_SYMBOL vmlinux 0xfed1b4fa ipv6_chk_addr_and_flags +EXPORT_SYMBOL vmlinux 0xfedcdb60 seq_hlist_next_percpu +EXPORT_SYMBOL vmlinux 0xfeebc7c4 __kfifo_from_user_r +EXPORT_SYMBOL vmlinux 0xfeed4589 pci_scan_slot +EXPORT_SYMBOL vmlinux 0xff1940be down_read_trylock +EXPORT_SYMBOL vmlinux 0xff1e9dd8 seq_list_start +EXPORT_SYMBOL vmlinux 0xff3931f4 bio_endio +EXPORT_SYMBOL vmlinux 0xff6878cf fb_default_cmap +EXPORT_SYMBOL vmlinux 0xff6cab86 netdev_boot_setup_check +EXPORT_SYMBOL vmlinux 0xff7559e4 ioport_resource +EXPORT_SYMBOL vmlinux 0xff831fff simple_write_begin +EXPORT_SYMBOL vmlinux 0xff84b154 mpage_readpage +EXPORT_SYMBOL vmlinux 0xff99255b vme_master_mmap +EXPORT_SYMBOL vmlinux 0xff9ca065 fb_edid_to_monspecs +EXPORT_SYMBOL vmlinux 0xffbb01a3 input_release_device +EXPORT_SYMBOL vmlinux 0xffd5a395 default_wake_function +EXPORT_SYMBOL vmlinux 0xffe57979 security_path_unlink +EXPORT_SYMBOL vmlinux 0xffe9ec3c dev_get_by_name_rcu +EXPORT_SYMBOL vmlinux 0xfff0444f tcp_md5_hash_header +EXPORT_SYMBOL vmlinux 0xfffb672c security_path_chmod +EXPORT_SYMBOL_GPL crypto/ablk_helper 0x4f547435 __ablk_encrypt +EXPORT_SYMBOL_GPL crypto/ablk_helper 0x808ef1b0 ablk_exit +EXPORT_SYMBOL_GPL crypto/ablk_helper 0xa9c23252 ablk_init +EXPORT_SYMBOL_GPL crypto/ablk_helper 0xa9d75843 ablk_set_key +EXPORT_SYMBOL_GPL crypto/ablk_helper 0xbaabe0ac ablk_init_common +EXPORT_SYMBOL_GPL crypto/ablk_helper 0xde9e0537 ablk_decrypt +EXPORT_SYMBOL_GPL crypto/ablk_helper 0xe679fac2 ablk_encrypt +EXPORT_SYMBOL_GPL crypto/af_alg 0x08b601e9 af_alg_complete +EXPORT_SYMBOL_GPL crypto/af_alg 0x168a0689 af_alg_link_sg +EXPORT_SYMBOL_GPL crypto/af_alg 0x1d4aa00a af_alg_make_sg +EXPORT_SYMBOL_GPL crypto/af_alg 0x3618de17 af_alg_free_sg +EXPORT_SYMBOL_GPL crypto/af_alg 0x622f3318 af_alg_unregister_type +EXPORT_SYMBOL_GPL crypto/af_alg 0x91c6a3bc af_alg_register_type +EXPORT_SYMBOL_GPL crypto/af_alg 0x92c5b199 af_alg_release +EXPORT_SYMBOL_GPL crypto/af_alg 0x9c6e7040 af_alg_accept +EXPORT_SYMBOL_GPL crypto/af_alg 0xcb39de78 af_alg_wait_for_completion +EXPORT_SYMBOL_GPL crypto/af_alg 0xdbbfdf51 af_alg_cmsg_send +EXPORT_SYMBOL_GPL crypto/asymmetric_keys/pkcs7_message 0x1c8f3d8f pkcs7_parse_message +EXPORT_SYMBOL_GPL crypto/asymmetric_keys/pkcs7_message 0x4c547801 pkcs7_validate_trust +EXPORT_SYMBOL_GPL crypto/asymmetric_keys/pkcs7_message 0xbe82ff95 pkcs7_get_content_data +EXPORT_SYMBOL_GPL crypto/asymmetric_keys/pkcs7_message 0xcc45da99 pkcs7_free_message +EXPORT_SYMBOL_GPL crypto/asymmetric_keys/pkcs7_message 0xe9ff17e6 pkcs7_verify +EXPORT_SYMBOL_GPL crypto/async_tx/async_memcpy 0xd6f9ad85 async_memcpy +EXPORT_SYMBOL_GPL crypto/async_tx/async_pq 0x026c0791 async_syndrome_val +EXPORT_SYMBOL_GPL crypto/async_tx/async_pq 0x8e1cd809 async_gen_syndrome +EXPORT_SYMBOL_GPL crypto/async_tx/async_raid6_recov 0x5faaf76b async_raid6_2data_recov +EXPORT_SYMBOL_GPL crypto/async_tx/async_raid6_recov 0x78f0efdf async_raid6_datap_recov +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0x1ad3a10c async_tx_quiesce +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0x3676beb0 async_trigger_callback +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0xdb630449 __async_tx_find_channel +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0xf7ccfc56 async_tx_submit +EXPORT_SYMBOL_GPL crypto/async_tx/async_xor 0xa566f0dc async_xor +EXPORT_SYMBOL_GPL crypto/async_tx/async_xor 0xfd006c85 async_xor_val +EXPORT_SYMBOL_GPL crypto/authenc 0x587ef278 crypto_authenc_extractkeys +EXPORT_SYMBOL_GPL crypto/blowfish_common 0x80866619 blowfish_setkey +EXPORT_SYMBOL_GPL crypto/cast5_generic 0x27278ca9 __cast5_encrypt +EXPORT_SYMBOL_GPL crypto/cast5_generic 0x4a2a3ca6 __cast5_decrypt +EXPORT_SYMBOL_GPL crypto/cast5_generic 0xe187f782 cast5_setkey +EXPORT_SYMBOL_GPL crypto/cast6_generic 0x1291971c __cast6_setkey +EXPORT_SYMBOL_GPL crypto/cast6_generic 0x1e2c961f __cast6_decrypt +EXPORT_SYMBOL_GPL crypto/cast6_generic 0x8f04034a __cast6_encrypt +EXPORT_SYMBOL_GPL crypto/cast6_generic 0xec0eff9c cast6_setkey +EXPORT_SYMBOL_GPL crypto/cast_common 0x08aa6fb7 cast_s1 +EXPORT_SYMBOL_GPL crypto/cast_common 0x0c5fbf8a cast_s3 +EXPORT_SYMBOL_GPL crypto/cast_common 0xe39dd4b4 cast_s2 +EXPORT_SYMBOL_GPL crypto/cast_common 0xee83a4f3 cast_s4 +EXPORT_SYMBOL_GPL crypto/cryptd 0x09c622f0 cryptd_shash_desc +EXPORT_SYMBOL_GPL crypto/cryptd 0x2b1e894d cryptd_alloc_ahash +EXPORT_SYMBOL_GPL crypto/cryptd 0x7411476c cryptd_free_ablkcipher +EXPORT_SYMBOL_GPL crypto/cryptd 0x83ab2106 cryptd_aead_child +EXPORT_SYMBOL_GPL crypto/cryptd 0xb380cf2f cryptd_ahash_child +EXPORT_SYMBOL_GPL crypto/cryptd 0xd68f8095 cryptd_free_ahash +EXPORT_SYMBOL_GPL crypto/cryptd 0xdce3d9c5 cryptd_alloc_ablkcipher +EXPORT_SYMBOL_GPL crypto/cryptd 0xe239b8bc cryptd_alloc_aead +EXPORT_SYMBOL_GPL crypto/cryptd 0xe9683da8 cryptd_ablkcipher_child +EXPORT_SYMBOL_GPL crypto/cryptd 0xf26cc7f9 cryptd_free_aead +EXPORT_SYMBOL_GPL crypto/crypto_null 0x21cd536a crypto_put_default_null_skcipher +EXPORT_SYMBOL_GPL crypto/crypto_null 0x64c3258e crypto_get_default_null_skcipher +EXPORT_SYMBOL_GPL crypto/des_generic 0xcfd9a2c0 des_ekey +EXPORT_SYMBOL_GPL crypto/des_generic 0xf8c78d49 __des3_ede_setkey +EXPORT_SYMBOL_GPL crypto/lrw 0x3864eb66 lrw_free_table +EXPORT_SYMBOL_GPL crypto/lrw 0xcd074900 lrw_init_table +EXPORT_SYMBOL_GPL crypto/lrw 0xf1633b99 lrw_crypt +EXPORT_SYMBOL_GPL crypto/mcryptd 0x077d0378 mcryptd_alloc_ahash +EXPORT_SYMBOL_GPL crypto/mcryptd 0x1de3f1aa mcryptd_shash_desc +EXPORT_SYMBOL_GPL crypto/mcryptd 0x269778b9 shash_ahash_mcryptd_digest +EXPORT_SYMBOL_GPL crypto/mcryptd 0x2fabafd0 mcryptd_ahash_child +EXPORT_SYMBOL_GPL crypto/mcryptd 0x3866ba7a shash_ahash_mcryptd_update +EXPORT_SYMBOL_GPL crypto/mcryptd 0x50eff613 shash_ahash_mcryptd_finup +EXPORT_SYMBOL_GPL crypto/mcryptd 0x6e1b826c mcryptd_free_ahash +EXPORT_SYMBOL_GPL crypto/mcryptd 0x8347667c mcryptd_flusher +EXPORT_SYMBOL_GPL crypto/mcryptd 0xc5be7f12 shash_ahash_mcryptd_final +EXPORT_SYMBOL_GPL crypto/rsa_generic 0xadc25bd8 rsa_parse_key +EXPORT_SYMBOL_GPL crypto/rsa_generic 0xf1b141d1 rsa_free_key +EXPORT_SYMBOL_GPL crypto/serpent_generic 0x5ddb33e9 __serpent_encrypt +EXPORT_SYMBOL_GPL crypto/serpent_generic 0x77b39cb4 __serpent_setkey +EXPORT_SYMBOL_GPL crypto/serpent_generic 0x8a1a99ad __serpent_decrypt +EXPORT_SYMBOL_GPL crypto/serpent_generic 0xfd62c77b serpent_setkey +EXPORT_SYMBOL_GPL crypto/twofish_common 0x6c3229bb __twofish_setkey +EXPORT_SYMBOL_GPL crypto/twofish_common 0xcea54c2e twofish_setkey +EXPORT_SYMBOL_GPL crypto/xts 0x000f9560 xts_crypt +EXPORT_SYMBOL_GPL drivers/acpi/nfit 0x3b331c3b acpi_nfit_attribute_groups +EXPORT_SYMBOL_GPL drivers/acpi/nfit 0xe1571d8d acpi_nfit_init +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x059e8d5c ahci_start_engine +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x09fe4112 ahci_print_info +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x24b55943 ahci_sdev_attrs +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x2605bc1b ahci_ops +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x27047299 ahci_save_initial_config +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x2bfe7f7b ahci_pmp_retry_srst_ops +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x31de2e80 ahci_stop_engine +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x36d17ce5 ahci_host_activate +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x37ebeca9 ahci_kick_engine +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x40ce8d8b ahci_shost_attrs +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x43e1d718 ahci_reset_controller +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x62c49995 ahci_fill_cmd_slot +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x64e5661b ahci_dev_classify +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x7f066019 ahci_do_softreset +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x8ba854ac ahci_em_messages +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x90cd896b ahci_check_ready +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xa395dbb9 ahci_port_resume +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xa5c244f9 ahci_qc_issue +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xaa49cae8 ahci_reset_em +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xb94ab033 ahci_start_fis_rx +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xda52d7f2 ahci_set_em_messages +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xda6b26a3 ahci_error_handler +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xe2753722 ahci_init_controller +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xea50dad3 ahci_ignore_sss +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x00bf9755 ahci_platform_init_host +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x04d7281f ahci_platform_suspend_host +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x070b0ad1 ahci_platform_enable_resources +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x31b3ce00 ahci_platform_suspend +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x40520a2c ahci_platform_disable_resources +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x4cc54440 ahci_platform_get_resources +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x61f18fdd ahci_platform_disable_clks +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x6b0a6845 ahci_platform_ops +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x6f009e54 ahci_platform_disable_regulators +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0xac4b49f5 ahci_platform_enable_regulators +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0xf0020d31 ahci_platform_resume_host +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0xf2d2edf6 ahci_platform_enable_clks +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0xf8fbf8f9 ahci_platform_resume +EXPORT_SYMBOL_GPL drivers/ata/pata_platform 0x10bcf5fa __pata_platform_probe +EXPORT_SYMBOL_GPL drivers/ata/pata_sis 0xe1f148c9 sis_info133_for_sata +EXPORT_SYMBOL_GPL drivers/base/regmap/regmap-spmi 0x50568355 regmap_init_spmi_base +EXPORT_SYMBOL_GPL drivers/base/regmap/regmap-spmi 0x60ee42a8 devm_regmap_init_spmi_ext +EXPORT_SYMBOL_GPL drivers/base/regmap/regmap-spmi 0x62255697 regmap_init_spmi_ext +EXPORT_SYMBOL_GPL drivers/base/regmap/regmap-spmi 0xe632657c devm_regmap_init_spmi_base +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x157cf8b8 bcma_chipco_pll_maskset +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x1a2ef7cb bcma_core_enable +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x298d02a1 bcma_core_pci_power_save +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x37cf0d04 bcma_chipco_get_alp_clock +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x3f7be037 bcma_driver_unregister +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x4e4388aa bcma_chipco_regctl_maskset +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x59134524 bcma_find_core_unit +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x602bf620 bcma_chipco_gpio_outen +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x60731ebd bcma_core_is_enabled +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x649aab86 bcma_chipco_pll_write +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x6b3ef2d9 bcma_chipco_chipctl_maskset +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x6e8a8e77 __bcma_driver_register +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x7b12cc8c bcma_core_disable +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x90c9ec0d bcma_chipco_pll_read +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x90cbee8c bcma_core_pll_ctl +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x98c46485 bcma_chipco_gpio_out +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xbdf7f7f3 bcma_chipco_gpio_control +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xc2883315 bcma_host_pci_down +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xc3e852dc bcma_pmu_get_bus_clock +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xcb689c3b bcma_pmu_spuravoid_pllupdate +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xcc3c5ee8 bcma_chipco_b_mii_write +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xd66c0871 bcma_host_pci_up +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xeb80a70e bcma_host_pci_irq_ctl +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xfaeaf3df bcma_core_set_clockmode +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0x0eca2b4f btbcm_initialize +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0x62fe0f02 btbcm_set_bdaddr +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0xa0d7c45c btbcm_setup_apple +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0xc3b56460 btbcm_finalize +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0xdae889b5 btbcm_setup_patchram +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0xfde9a63e btbcm_check_bdaddr +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0x210887db btintel_check_bdaddr +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0xdda14e66 btintel_set_bdaddr +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x005770ff btmrvl_remove_card +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x237344cf btmrvl_send_module_cfg_cmd +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x409eed02 btmrvl_enable_ps +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x5fcb96a7 btmrvl_pscan_window_reporting +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x7c26432d btmrvl_check_evtpkt +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x8b124466 btmrvl_send_hscfg_cmd +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xabd17144 btmrvl_add_card +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xbd57371a btmrvl_interrupt +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xc8def836 btmrvl_enable_hs +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xd4e92f8d btmrvl_process_event +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xea1fc980 btmrvl_register_hdev +EXPORT_SYMBOL_GPL drivers/bluetooth/btrtl 0x75293752 btrtl_setup_realtek +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x061a85a5 clk_rcg_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x06a50e46 clk_branch2_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x072706ba clk_pll_configure_sr_hpm_lp +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x0c1cd762 devm_clk_register_regmap +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x14d48935 clk_enable_regmap +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x23d339a0 clk_regmap_div_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x24b79d44 clk_branch_simple_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x38e33164 qcom_cc_map +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x3aac27e3 qcom_find_src_index +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x3f4ad241 qcom_cc_probe +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x436dd5de clk_branch_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x47307fc0 clk_regmap_mux_closest_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x4d64c163 clk_rcg_lcc_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x5302b4a7 qcom_cc_really_probe +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x5f2122b2 clk_pll_vote_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x63f4b467 qcom_cc_remove +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x669bd1fd qcom_find_freq +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x7592d0de clk_pll_configure_sr +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x77c457fa qcom_reset_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x92861df8 clk_is_enabled_regmap +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0xbb22aecf clk_pixel_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0xc03f8663 clk_rcg_bypass_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0xc137d1a2 clk_rcg2_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0xc731002c clk_byte_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0xd8b002f2 clk_pll_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0xe66071f2 clk_disable_regmap +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0xec923bd6 clk_edp_pixel_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0xecad5ff5 clk_dyn_rcg_ops +EXPORT_SYMBOL_GPL drivers/cpufreq/arm_big_little 0x15100733 bL_cpufreq_register +EXPORT_SYMBOL_GPL drivers/cpufreq/arm_big_little 0xafd392d7 bL_cpufreq_unregister +EXPORT_SYMBOL_GPL drivers/crypto/ccp/ccp 0x04773b60 ccp_present +EXPORT_SYMBOL_GPL drivers/crypto/ccp/ccp 0xaeb1677c ccp_enqueue_cmd +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0x1529edc4 dw_dma_disable +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0x3a14f0ff dw_dma_enable +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0x3b56905b dw_dma_filter +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0xc1467cdd dw_dma_remove +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0xd74bdebf dw_dma_probe +EXPORT_SYMBOL_GPL drivers/dma/hsu/hsu_dma 0x06c9c590 hsu_dma_probe +EXPORT_SYMBOL_GPL drivers/dma/hsu/hsu_dma 0x19f08614 hsu_dma_remove +EXPORT_SYMBOL_GPL drivers/dma/hsu/hsu_dma 0x203ac823 hsu_dma_irq +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x0357758b edac_mc_find_csrow_by_page +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x04a88417 edac_device_del_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x04bc0684 edac_pci_release_generic_ctl +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x0c32ff8a edac_pci_alloc_index +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x1d40b3d6 edac_device_handle_ce +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x26958e33 edac_mc_handle_error +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x27083816 edac_mc_free +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x2c8dd6b8 edac_mem_types +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x335e6f17 edac_pci_alloc_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x357cee19 edac_mc_del_mc +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x43cf5e08 edac_pci_handle_npe +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x544cc3e0 find_mci_by_dev +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x54eba150 edac_raw_mc_handle_error +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x6052d241 edac_mc_add_mc_with_groups +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x6e3ff83a edac_device_alloc_index +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x6fb9a9ff edac_mc_alloc +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x75a833d9 edac_pci_free_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x80f80f14 edac_device_add_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x872d789d edac_device_alloc_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x90c67400 edac_pci_add_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x9671ae83 edac_pci_handle_pe +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x9a289c9d edac_device_free_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xc0580e43 edac_pci_del_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xc0dcb59e edac_layer_name +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xc43b01d0 edac_device_handle_ue +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xd82fe1fb edac_pci_reset_delay_period +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xd834ec54 edac_pci_create_generic_ctl +EXPORT_SYMBOL_GPL drivers/firewire/firewire-core 0xf4ade51f fw_card_release +EXPORT_SYMBOL_GPL drivers/gpio/gpio-max730x 0x01c0d0a1 __max730x_remove +EXPORT_SYMBOL_GPL drivers/gpio/gpio-max730x 0xe1cd306a __max730x_probe +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x090af0a8 drm_display_mode_from_videomode +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x41df874c drm_do_get_edid +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x5ffc4231 drm_class_device_unregister +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x9dbe889e drm_class_device_register +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xa042e64e drm_display_mode_to_videomode +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xd26415b5 of_get_drm_display_mode +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0x4a3a8a91 ttm_dma_page_alloc_debugfs +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0x669e8751 ttm_dma_unpopulate +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0x6adf436b ttm_prime_fd_to_handle +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0xa6579d93 ttm_dma_populate +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0xce36343e ttm_prime_handle_to_fd +EXPORT_SYMBOL_GPL drivers/hid/hid 0x040715c0 hid_alloc_report_buf +EXPORT_SYMBOL_GPL drivers/hid/hid 0x05495392 hid_debug +EXPORT_SYMBOL_GPL drivers/hid/hid 0x092d6b05 hid_open_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x095c1bed hidraw_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x0c397103 hid_check_keys_pressed +EXPORT_SYMBOL_GPL drivers/hid/hid 0x0f138043 hid_allocate_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0x1486ded2 hid_unregister_driver +EXPORT_SYMBOL_GPL drivers/hid/hid 0x21088c64 hid_ignore +EXPORT_SYMBOL_GPL drivers/hid/hid 0x2710d46b hid_input_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x30cf7be1 hid_resolv_usage +EXPORT_SYMBOL_GPL drivers/hid/hid 0x37ecf81c hidinput_report_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0x3e3c1d38 __hid_register_driver +EXPORT_SYMBOL_GPL drivers/hid/hid 0x4906a967 hid_snto32 +EXPORT_SYMBOL_GPL drivers/hid/hid 0x56647153 hid_register_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x60d08c68 hid_dump_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0x63a1a998 hid_output_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x64535816 hidinput_count_leds +EXPORT_SYMBOL_GPL drivers/hid/hid 0x69296bed __hid_request +EXPORT_SYMBOL_GPL drivers/hid/hid 0x701f0027 hidinput_calc_abs_res +EXPORT_SYMBOL_GPL drivers/hid/hid 0x7584ee2e hid_destroy_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0x7862b14d hid_validate_values +EXPORT_SYMBOL_GPL drivers/hid/hid 0x7b341706 hid_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x8998840e hid_add_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0x9140b20a hidinput_get_led_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0xa3d2419b hid_field_extract +EXPORT_SYMBOL_GPL drivers/hid/hid 0xad755ee6 hid_set_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0xb3ce3c09 hidinput_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0xbb4e8326 hid_parse_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0xc6a2955a hid_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0xcd844c44 hidinput_find_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0xd0c7619b hidinput_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0xd14f501f hid_dump_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0xe2290ba4 hid_debug_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0xe892ea59 hidraw_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0xeccfc6d3 hid_dump_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0xededb1f3 hidraw_report_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0xfa43b087 hid_report_raw_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0xfdbf7dbb hid_dump_input +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat 0x2f622ea1 roccat_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat 0x543c6c24 roccat_connect +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat 0x8c4181ec roccat_report_event +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x418b7ab7 roccat_common2_send_with_status +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x7e3b4f25 roccat_common2_receive +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x994de1ef roccat_common2_sysfs_read +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0xac846a96 roccat_common2_send +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0xba6c41e4 roccat_common2_sysfs_write +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0xc1b9c7c6 roccat_common2_device_init_struct +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x28c06d12 sensor_hub_device_open +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x3ed52dde sensor_hub_device_close +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x5e1a3a44 sensor_hub_input_get_attribute_info +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x8af7cc1b sensor_hub_set_feature +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x97600719 sensor_hub_remove_callback +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0xaba45767 hid_sensor_get_usage_index +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0xef15f381 sensor_hub_register_callback +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0xf0caf1f5 sensor_hub_get_feature +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0xf9e7b623 sensor_hub_input_attr_get_raw_value +EXPORT_SYMBOL_GPL drivers/hid/usbhid/usbhid 0x01fd453e usbhid_lookup_quirk +EXPORT_SYMBOL_GPL drivers/hid/usbhid/usbhid 0x6d3bba07 hiddev_hid_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x0c77c662 hsi_release_port +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x0f924b7d hsi_get_channel_id_by_name +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x11688e29 hsi_add_clients_from_dt +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x3777130e hsi_new_client +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x47e7a702 hsi_free_msg +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x662efb27 hsi_async +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x7a7485c8 hsi_claim_port +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x8466bd39 hsi_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x8df3e084 hsi_register_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x938b8dc8 hsi_remove_client +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x991e5626 hsi_alloc_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xa4207e99 hsi_alloc_msg +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xa5fc52ac hsi_port_unregister_clients +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xc2b48b35 hsi_put_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xe569402f hsi_register_client_driver +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xf6f5acd5 hsi_unregister_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xf89e15ec hsi_unregister_port_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xfca8833e hsi_register_port_event +EXPORT_SYMBOL_GPL drivers/hwmon/adt7x10 0x210d5823 adt7x10_remove +EXPORT_SYMBOL_GPL drivers/hwmon/adt7x10 0x42a45243 adt7x10_dev_pm_ops +EXPORT_SYMBOL_GPL drivers/hwmon/adt7x10 0xc4026ce4 adt7x10_probe +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x00ba2df6 pmbus_get_driver_info +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x05d75349 pmbus_do_remove +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x12da3093 pmbus_set_page +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x2f28c04c pmbus_regulator_ops +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x36819035 pmbus_write_byte_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x46ac9c23 pmbus_read_word_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x6828b15b pmbus_update_byte_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x7baa7380 pmbus_write_byte +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x8064e0be pmbus_do_probe +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x85c2c271 pmbus_write_word_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x9ae08931 pmbus_read_byte_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xa82d630a pmbus_clear_cache +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xc06e68a4 pmbus_check_word_register +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xe5e06507 pmbus_check_byte_register +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xf4600c0a pmbus_clear_faults +EXPORT_SYMBOL_GPL drivers/hwspinlock/hwspinlock_core 0x3f46e76c __hwspin_unlock +EXPORT_SYMBOL_GPL drivers/hwspinlock/hwspinlock_core 0x42138e9b __hwspin_lock_timeout +EXPORT_SYMBOL_GPL drivers/hwspinlock/hwspinlock_core 0x4ee1583c hwspin_lock_free +EXPORT_SYMBOL_GPL drivers/hwspinlock/hwspinlock_core 0x633a23fd hwspin_lock_get_id +EXPORT_SYMBOL_GPL drivers/hwspinlock/hwspinlock_core 0x7fee2e2a of_hwspin_lock_get_id +EXPORT_SYMBOL_GPL drivers/hwspinlock/hwspinlock_core 0xaf311b21 hwspin_lock_register +EXPORT_SYMBOL_GPL drivers/hwspinlock/hwspinlock_core 0xb1789d2e __hwspin_trylock +EXPORT_SYMBOL_GPL drivers/hwspinlock/hwspinlock_core 0xbe1232ab hwspin_lock_request_specific +EXPORT_SYMBOL_GPL drivers/hwspinlock/hwspinlock_core 0xc34e00b6 hwspin_lock_request +EXPORT_SYMBOL_GPL drivers/hwspinlock/hwspinlock_core 0xe8b85990 hwspin_lock_unregister +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x04d67c5a i2c_dw_enable +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x207a93d3 i2c_dw_read_comp_param +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x31bf0e84 i2c_dw_xfer +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x4bc37793 i2c_dw_is_enabled +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x5bb1170b i2c_dw_isr +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x5db8130b i2c_dw_init +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x751d39a1 i2c_dw_clear_int +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x784e4e91 i2c_dw_disable +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0xc6e59b29 i2c_dw_disable_int +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0xfc39bd6c i2c_dw_func +EXPORT_SYMBOL_GPL drivers/i2c/i2c-mux 0x40c8e152 i2c_del_mux_adapter +EXPORT_SYMBOL_GPL drivers/i2c/i2c-mux 0x52659867 i2c_add_mux_adapter +EXPORT_SYMBOL_GPL drivers/i2c/i2c-smbus 0x04e23d0f i2c_setup_smbus_alert +EXPORT_SYMBOL_GPL drivers/i2c/i2c-smbus 0xcab14e16 i2c_handle_smbus_alert +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x21b4c595 ad_sd_setup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x2de696fb ad_sd_write_reg +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x3a1d506a ad_sigma_delta_single_conversion +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x5e91e15a ad_sd_init +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x680b215b ad_sd_calibrate_all +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x9924a97d ad_sd_cleanup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xbbfaf101 ad_sd_read_reg +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xcd5316dc ad_sd_validate_trigger +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xd77aa6c9 ad_sd_set_comm +EXPORT_SYMBOL_GPL drivers/iio/adc/twl4030-madc 0x4362dc66 twl4030_get_madc_conversion +EXPORT_SYMBOL_GPL drivers/iio/adc/twl4030-madc 0xb1be4a75 twl4030_madc_conversion +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x1a192125 adis_setup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x1d33e5df adis_update_scan_mode +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x42273df1 adis_init +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x4fd6efe4 adis_reset +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x5973fd95 adis_remove_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x61b042ca adis_cleanup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x997d1aaf adis_initial_startup +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x9ab67fa6 adis_write_reg +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xbd7af9f7 adis_check_status +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xe1898023 adis_probe_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xf5b2f99f adis_single_conversion +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xfe3cd359 adis_read_reg +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x0d0c7514 iio_buffer_get +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x267c0508 iio_channel_release_all_cb +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x26f6b499 iio_str_to_fixpoint +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x2a1fab3c iio_channel_stop_all_cb +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x2aa82b46 iio_read_channel_average_raw +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x3e3c9adc iio_map_array_unregister +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x41e25d06 devm_iio_device_free +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x4bec7a47 devm_iio_trigger_free +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x61ed6a2e iio_write_channel_raw +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x67f3689e iio_update_demux +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x69e94194 iio_read_channel_scale +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x6f5e9edd iio_channel_get +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x72ea0404 iio_map_array_register +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x732e29ad devm_iio_trigger_alloc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x7a711aef iio_channel_start_all_cb +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x7a8b92f9 iio_channel_get_all +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x7dcaee7f iio_channel_get_all_cb +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x82ee50e4 iio_convert_raw_to_processed +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x88ff9684 iio_update_buffers +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x89f3c9d5 devm_iio_device_register +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x8ea74894 iio_dealloc_pollfunc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x94edfa00 iio_read_channel_raw +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x964d0649 iio_channel_release +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x9ecad267 iio_validate_scan_mask_onehot +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xa6ded5c4 iio_buffer_put +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xabf62fd4 iio_channel_cb_get_channels +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xba482bb4 iio_enum_read +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xbc13e573 iio_enum_write +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xbd53a040 devm_iio_device_alloc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xbe7b683f iio_channel_release_all +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xc0469f47 iio_read_channel_processed +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xc22e5275 iio_push_to_buffers +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xcec7bbe5 iio_enum_available_read +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xd272f32c iio_alloc_pollfunc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xd372fe8d iio_scan_mask_query +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xe05a2f16 devm_iio_device_unregister +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xe7ebd2f9 iio_get_channel_type +EXPORT_SYMBOL_GPL drivers/infiniband/core/ib_core 0xdbd019c4 ib_wq +EXPORT_SYMBOL_GPL drivers/input/ff-memless 0xa97da785 input_ff_create_memless +EXPORT_SYMBOL_GPL drivers/input/matrix-keymap 0xb62adece matrix_keypad_parse_of_params +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 0xe22715e1 adxl34x_probe +EXPORT_SYMBOL_GPL drivers/input/misc/adxl34x 0xe4586827 adxl34x_resume +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp4_core 0x600119db cyttsp4_probe +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp4_core 0xcc5541f7 cyttsp4_remove +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp4_core 0xfeb33ee2 cyttsp4_pm_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_core 0x295d99ec cyttsp_remove +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_core 0x868ca4c4 cyttsp_pm_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_core 0x86db4a70 cyttsp_probe +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_i2c_common 0x5bebd27c cyttsp_i2c_read_block_data +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_i2c_common 0xf318a1fc cyttsp_i2c_write_block_data +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x0641b7a9 wm97xx_set_suspend_mode +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x206f48bf wm97xx_get_gpio +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x281e579f wm97xx_set_gpio +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x45768e41 wm97xx_config_gpio +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x56a2862f wm9713_codec +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x815db380 wm97xx_reg_read +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x87b69beb wm9705_codec +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x9a0886b1 wm9712_codec +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xabdb7c29 wm97xx_reg_write +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xba5504aa wm97xx_read_aux_adc +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xf2e05f17 wm97xx_unregister_mach_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xfa36104d wm97xx_register_mach_ops +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x33db9bcc ipack_device_del +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x57e3a23b ipack_put_device +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x76a64dff ipack_get_device +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x8dfe219c ipack_bus_register +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x9d9526db ipack_device_init +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0xa691d16b ipack_driver_unregister +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0xa98115dd ipack_bus_unregister +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0xcc32941e ipack_device_add +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0xd83895d8 ipack_driver_register +EXPORT_SYMBOL_GPL drivers/isdn/capi/kernelcapi 0x23359aff unregister_capictr_notifier +EXPORT_SYMBOL_GPL drivers/isdn/capi/kernelcapi 0xce1414b2 register_capictr_notifier +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x082102cd gigaset_stop +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x17444e5e gigaset_skb_rcvd +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x2dd67deb gigaset_initdriver +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x454aa44f gigaset_debuglevel +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x4acc5d50 gigaset_skb_sent +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x4b197e24 gigaset_handle_modem_response +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x5d5b2c70 gigaset_shutdown +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x6ab777ee gigaset_start +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x7d82de36 gigaset_isdn_rcv_err +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x9054137c gigaset_m10x_send_skb +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x930dad7c gigaset_fill_inbuf +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xa049de4b gigaset_initcs +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xa3151853 gigaset_dbg_buffer +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xc0eba357 gigaset_m10x_input +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xd1687e8d gigaset_add_event +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xde418ee3 gigaset_blockdriver +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xf12904b5 gigaset_if_receive +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xf52dc1df gigaset_freedriver +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xf98813dc gigaset_freecs +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0x26155278 led_classdev_flash_unregister +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0x3f1041a6 led_get_flash_fault +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0x7e899012 led_set_flash_brightness +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0x975a891e led_update_flash_brightness +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0xa5eb407d led_classdev_flash_register +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0xc6718a19 led_set_flash_timeout +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/mcb/mcb 0x03e6143b mcb_unregister_driver +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x14e21ce2 mcb_bus_put +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x168e11e7 mcb_request_mem +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x3e55a4c0 __mcb_register_driver +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x43e98102 mcb_release_bus +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x476533ff mcb_device_register +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x5fc19b67 mcb_get_irq +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x874c478c mcb_alloc_bus +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x8bf52ac0 mcb_release_mem +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x8d7089b3 mcb_bus_get +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0xa0d7f1c9 chameleon_parse_cells +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0xac37ec94 mcb_alloc_dev +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0xb935e4a6 mcb_free_dev +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0xe06f42c0 mcb_bus_add_devices +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x0ec17d44 __tracepoint_bcache_bypass_congested +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x26062738 __tracepoint_bcache_alloc_fail +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x2fc380ce __tracepoint_bcache_invalidate +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x40c27b88 __tracepoint_bcache_cache_insert +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x4c49fc16 __tracepoint_bcache_btree_node_split +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x51a15737 __tracepoint_bcache_btree_set_root +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x616b6217 __tracepoint_bcache_read +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x6907ac0d __tracepoint_bcache_request_end +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x7be42a1c __tracepoint_bcache_journal_replay_key +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x7e532a71 __tracepoint_bcache_btree_cache_cannibalize +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x914361f4 __tracepoint_bcache_journal_entry_full +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x9272fb0f __tracepoint_bcache_read_retry +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x938cc2b2 __tracepoint_bcache_btree_insert_key +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xa649dd21 __tracepoint_bcache_btree_node_alloc +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xb157059f __tracepoint_bcache_gc_copy_collision +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xb317649e __tracepoint_bcache_btree_node_alloc_fail +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xb493772a __tracepoint_bcache_gc_start +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xb834c124 __tracepoint_bcache_btree_write +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xbb1fc0a4 __tracepoint_bcache_journal_full +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xbc4fcb1e __tracepoint_bcache_write +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xc1474d91 __tracepoint_bcache_btree_read +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xc379085a __tracepoint_bcache_bypass_sequential +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xc5aed8ad __tracepoint_bcache_writeback_collision +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xc7eda602 __tracepoint_bcache_btree_node_compact +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xce055cbe __tracepoint_bcache_btree_gc_coalesce +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xe20fe821 __tracepoint_bcache_gc_end +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xe24daf87 __tracepoint_bcache_gc_copy +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xe2ed0930 __tracepoint_bcache_btree_node_free +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xea2303e0 __tracepoint_bcache_journal_write +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xef1156ee __tracepoint_bcache_writeback +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xfc131205 __tracepoint_bcache_request_start +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 0x2fad54f4 dm_bio_prison_alloc_cell +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x4306ae85 dm_cell_release_no_holder +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x4f0c63be dm_cell_promote_or_release +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x6791a44e dm_deferred_entry_dec +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x6b16fe36 dm_bio_prison_free_cell +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x753e20b2 dm_bio_prison_create +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x7e1d1219 dm_cell_visit_release +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x7e4bc479 dm_get_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 0xd08e17ed dm_bio_detain +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xdfa57ddf dm_cell_error +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xedef8e1d dm_cell_release +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x0ad0dc4f dm_bufio_mark_buffer_dirty +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x6aba7f5e dm_bufio_get_block_number +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x6d3f57bd dm_bufio_get_client +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 0x9310ba06 dm_bufio_release_move +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x9c256008 dm_bufio_get_device_size +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xa1d2413a dm_bufio_read +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xa448e19f dm_bufio_prefetch +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xa82b2066 dm_bufio_write_dirty_buffers +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xafbda3f3 dm_bufio_new +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xc9a3422d dm_bufio_write_dirty_buffers_async +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xcbb1bae2 dm_bufio_get +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xd4bddf5c dm_bufio_issue_flush +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xe6024e59 dm_bufio_release +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xe6750454 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-cache 0x01475119 dm_cache_policy_get_hint_size +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x2f87e4a9 dm_cache_policy_create +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x4762932a dm_cache_policy_get_version +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x515d51da dm_cache_policy_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x64fd9e38 dm_cache_policy_get_name +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x81bcf412 dm_cache_policy_unregister +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xd66e5232 dm_cache_policy_register +EXPORT_SYMBOL_GPL drivers/md/dm-multipath 0x6978d453 dm_unregister_path_selector +EXPORT_SYMBOL_GPL drivers/md/dm-multipath 0xd68630a4 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 0x08c3aee2 dm_rh_delay +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 0x3eb14096 dm_rh_mark_nosync +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x4430764e dm_rh_region_to_sector +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x45ab972a 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 0x99964e00 dm_rh_dirty_log +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xa53387c7 dm_rh_flush +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xa68e1f06 dm_rh_get_state +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xa83588eb dm_rh_recovery_end +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xb8571ade dm_rh_bio_to_region +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xbe38a431 dm_rh_recovery_prepare +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xc56ff36e dm_region_hash_create +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xc8a40e52 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 0xfad9d53a dm_rh_get_region_size +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xfc62ef4e dm_rh_get_region_key +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 0x01445176 dm_btree_find_highest_key +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x0604db1b dm_btree_remove_leaves +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x17c36f29 dm_bm_checksum +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x1e3f728d dm_block_data +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x2025e954 dm_array_info_init +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x24fa6664 dm_bitset_set_bit +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x2c112836 dm_block_location +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 0x32b5f546 dm_array_empty +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 0x36e9376a dm_block_manager_create +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x3ad0f55b dm_bm_flush +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x40f7bd91 dm_tm_inc +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x42dbdfc3 dm_tm_read_lock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x4360913e dm_btree_find_lowest_key +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x49b35849 dm_sm_disk_create +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x55b4bd4d dm_tm_create_with_sm +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x5aed1dd7 dm_bitset_flush +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x5e6aea80 dm_btree_walk +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x62c1b9ee dm_array_walk +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 0x72289260 dm_block_manager_destroy +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x7657e859 dm_bitset_clear_bit +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 0x80c89b3d dm_tm_unlock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x827a42f4 dm_tm_open_with_sm +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x832bf228 dm_array_del +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x858c8d94 dm_array_set_value +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x89f1e1cc dm_btree_insert_notify +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 0x966a8838 dm_btree_lookup +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 0x9f624559 dm_sm_disk_open +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xa87c5b4d dm_array_resize +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xab96bd2d dm_bitset_test_bit +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xaee02382 dm_btree_empty +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xafeda29f dm_bm_write_lock_zero +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xb7bad799 dm_bm_unlock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xb9a6ecf8 dm_tm_dec +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xba47c03a dm_bitset_del +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xbd50ebbb dm_btree_del +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xca40abd5 dm_btree_insert +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xd041d62b dm_array_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 0xd29923fb dm_tm_shadow_block +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xed1e1f96 dm_btree_remove +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xed58cfa1 dm_bitset_empty +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xf12ec3cd dm_disk_bitset_init +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xf375d009 dm_bm_write_lock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xf5455120 dm_bm_read_lock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xffff2ac3 dm_bitset_resize +EXPORT_SYMBOL_GPL drivers/media/common/b2c2/b2c2-flexcop 0x66c0289a b2c2_flexcop_debug +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x0880d460 saa7146_pgtable_build_single +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x1d4809a2 saa7146_unregister_extension +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x2ed53bd9 saa7146_i2c_adapter_prepare +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x5722dd60 saa7146_vfree_destroy_pgtable +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x766fc687 saa7146_register_extension +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x8fb9e515 saa7146_vmalloc_build_pgtable +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x9e0b5531 saa7146_wait_for_debi_done +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xa49a5251 saa7146_pgtable_free +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xb2adb39f saa7146_setgpio +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xc2d4a7b5 saa7146_pgtable_alloc +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xe3cd9b5c saa7146_debug +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x1dd02eb6 saa7146_register_device +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x256d1d95 saa7146_set_hps_source_and_sync +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x49b0cd5f saa7146_vv_init +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x93297759 saa7146_vv_release +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x94477b59 saa7146_unregister_device +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0xbe113e7a saa7146_start_preview +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0xde85073f saa7146_stop_preview +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x0387f9a0 smscore_get_board_id +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x21e36bf2 smscore_registry_getmode +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x26cd4f09 smscore_register_hotplug +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x327ef11a smscore_unregister_device +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x3701e3a4 sms_board_power +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x37d91069 smsendian_handle_tx_message +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x3f1ac34c sms_board_setup +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x406763c1 smscore_getbuffer +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x45284ae9 smsendian_handle_rx_message +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x6b50d049 smscore_putbuffer +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 0x7f259fe7 smscore_get_device_mode +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 0x9bfc29e4 smscore_register_client +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x9c2225ed smscore_translate_msg +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xa336568a sms_board_event +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xadd76783 smscore_start_device +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xbbdb5c42 smscore_unregister_client +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xc4903416 smscore_onresponse +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xcb73f7d6 smscore_unregister_hotplug +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xcf97a6c0 smscore_set_board_id +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xd284c145 sms_board_lna_control +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xd45251ce sms_board_led_feedback +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xee7f6c50 smscore_register_device +EXPORT_SYMBOL_GPL drivers/media/dvb-frontends/as102_fe 0x58ad93c0 as102_attach +EXPORT_SYMBOL_GPL drivers/media/dvb-frontends/cx24117 0x988900f3 cx24117_attach +EXPORT_SYMBOL_GPL drivers/media/dvb-frontends/tda18271c2dd 0x1d1e5ce8 tda18271c2dd_attach +EXPORT_SYMBOL_GPL drivers/media/media 0x0b1d5169 __media_device_register +EXPORT_SYMBOL_GPL drivers/media/media 0x2863cfe2 media_device_unregister_entity +EXPORT_SYMBOL_GPL drivers/media/media 0x2cdbfb93 media_entity_put +EXPORT_SYMBOL_GPL drivers/media/media 0x4f730eb3 media_entity_remove_links +EXPORT_SYMBOL_GPL drivers/media/media 0x5bf0fa47 media_device_register_entity +EXPORT_SYMBOL_GPL drivers/media/media 0x8a88d264 media_entity_setup_link +EXPORT_SYMBOL_GPL drivers/media/media 0x8d8a2ccf media_entity_cleanup +EXPORT_SYMBOL_GPL drivers/media/media 0xa489634e media_entity_create_link +EXPORT_SYMBOL_GPL drivers/media/media 0xa4a01347 media_entity_pipeline_stop +EXPORT_SYMBOL_GPL drivers/media/media 0xa675a86e media_entity_find_link +EXPORT_SYMBOL_GPL drivers/media/media 0xb351b1a5 __media_entity_remove_links +EXPORT_SYMBOL_GPL drivers/media/media 0xb46b8a50 media_entity_remote_pad +EXPORT_SYMBOL_GPL drivers/media/media 0xc0e5682f media_device_unregister +EXPORT_SYMBOL_GPL drivers/media/media 0xd0a29f4f media_entity_pipeline_start +EXPORT_SYMBOL_GPL drivers/media/media 0xd68ef6cd media_entity_graph_walk_start +EXPORT_SYMBOL_GPL drivers/media/media 0xf6616344 media_entity_get +EXPORT_SYMBOL_GPL drivers/media/media 0xf79da73a media_entity_init +EXPORT_SYMBOL_GPL drivers/media/media 0xfc36659b media_entity_graph_walk_next +EXPORT_SYMBOL_GPL drivers/media/pci/cx88/cx88xx 0xaefab47a cx88_setup_xc3028 +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x0899813c mantis_input_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x09a331aa mantis_dma_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x152de9ac mantis_ca_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x18f7fabe mantis_dvb_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x1b1d6955 mantis_uart_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x39c222e9 mantis_frontend_power +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x3d04326a mantis_stream_control +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x4f706387 mantis_pci_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x5bbd8cf4 mantis_i2c_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x5c77b146 mantis_uart_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x918b34ef mantis_i2c_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xaa2ebf4e mantis_input_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xc1fe3313 mantis_get_mac +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xc39589b1 mantis_dma_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xd12b2683 mantis_pci_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xd2c142a5 mantis_dvb_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xef040b80 mantis_ca_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xf05c4fb5 mantis_gpio_set_bits +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xfa95227a mantis_frontend_soft_reset +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x0fa69323 saa7134_ts_qops +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x1d4eac18 saa7134_vb2_buffer_queue +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x248b74c7 saa7134_ts_buffer_init +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x3ce5d0f4 saa7134_ts_stop_streaming +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x3ceaac15 saa7134_stop_streaming +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x460b2ed9 saa7134_s_frequency +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x5284e736 saa7134_s_std +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x5a0d80da saa7134_ts_buffer_prepare +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x62d60254 saa7134_g_frequency +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x656d0abc saa7134_ts_start_streaming +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x65d86986 saa7134_g_std +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x8c59c2b4 saa7134_enum_input +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x96bd47a5 saa7134_ts_queue_setup +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x9ae0fd62 saa7134_querystd +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x9ea22b20 saa7134_g_input +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xa61dc69b saa7134_querycap +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xaaf6ae5d saa7134_s_tuner +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xe9550475 saa7134_s_input +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xee2bebfb saa7134_g_tuner +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x0ab495b2 ttpci_budget_set_video_port +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x0b891c54 ttpci_budget_irq10_handler +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x61e1258d ttpci_budget_debiwrite +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x6524a11a ttpci_budget_init_hooks +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x6dfdb04a ttpci_budget_deinit +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x7948c222 budget_debug +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x88a7ea53 ttpci_budget_init +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x9dbcfcec ttpci_budget_debiread +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0x04bb2d90 xvip_of_get_format +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0x0b2585ce xvip_get_format_by_fourcc +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0x0b7a5960 xvip_clr_and_set +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0x0bc99432 xvip_clr_or_set +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0x2af2d6fd xvip_enum_frame_size +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0x3c7eb685 xvip_set_format_size +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0x490bd11c xvip_get_format_by_code +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0x78e19397 xvip_enum_mbus_code +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0xaee4a46f xvip_cleanup_resources +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0xd8035c0e 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 0x48032445 xvtc_of_get +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-vtc 0xa8a0f912 xvtc_put +EXPORT_SYMBOL_GPL drivers/media/radio/shark2 0x0f5aeafd radio_tea5777_exit +EXPORT_SYMBOL_GPL drivers/media/radio/shark2 0xd1227297 radio_tea5777_init +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x02545118 rc_free_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x12a81781 ir_raw_event_store +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x1880aa7d rc_open +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x288b1bfe rc_keydown_notimeout +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x48fd8762 ir_raw_event_set_idle +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x553efb91 rc_core_debug +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x6622e136 ir_raw_event_store_with_filter +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x664b6e2a rc_repeat +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x7464875c rc_g_keycode_from_table +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x7ea6054a ir_raw_event_handle +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x7ed1fdb8 rc_unregister_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x9b96cabc ir_raw_event_store_edge +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xa400d4a2 rc_register_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xa768c56b rc_map_register +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xd2728f0f rc_keydown +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xd306613c rc_allocate_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xded6993a rc_keyup +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xebebef46 rc_map_unregister +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xf16864bb rc_close +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xf7e063ef rc_map_get +EXPORT_SYMBOL_GPL drivers/media/tuners/mt2063 0x0dfeebd1 mt2063_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/mt20xx 0xdd611f03 microtune_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/mxl5007t 0xc3d4c0c7 mxl5007t_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/r820t 0x968cc6bb r820t_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda18271 0x3090e86d tda18271_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda827x 0xe72e8131 tda827x_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda8290 0x83c0c4f2 tda829x_probe +EXPORT_SYMBOL_GPL drivers/media/tuners/tda8290 0xf3a5d01f tda829x_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda9887 0xc4bfe7b5 tda9887_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5761 0x5fa39685 tea5761_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5761 0xf63b8156 tea5761_autodetection +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5767 0xb62d3cdb tea5767_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5767 0xf9708ea4 tea5767_autodetection +EXPORT_SYMBOL_GPL drivers/media/tuners/tuner-simple 0x33a64257 simple_tuner_attach +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x017ea7c7 cx231xx_tuner_callback +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x0642e1b5 cx231xx_enable_i2c_port_3 +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x118eb9d0 cx231xx_dev_init +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x686ccc76 cx231xx_enable656 +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x6afb34cd cx231xx_init_vbi_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x76283af5 cx231xx_capture_start +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x823a28af cx231xx_unmute_audio +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x8e853830 cx231xx_set_alt_setting +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x8f17e24e cx231xx_uninit_bulk +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x91e0f8d4 cx231xx_uninit_vbi_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x95cacdd7 cx231xx_get_i2c_adap +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x9fdcac66 cx231xx_set_mode +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xba94b5ce cx231xx_dev_uninit +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xc3a01279 cx231xx_init_bulk +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xc944a2f7 cx231xx_send_gpio_cmd +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xca4e0f56 cx231xx_init_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xd86b8100 cx231xx_disable656 +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xdcf0f7a6 is_fw_load +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xe5c24b75 cx231xx_uninit_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xf73e81f3 cx231xx_demod_reset +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xff68d0b4 cx231xx_send_usb_command +EXPORT_SYMBOL_GPL drivers/media/usb/dvb-usb-v2/mxl111sf-demod 0x8d0caf84 mxl111sf_demod_attach +EXPORT_SYMBOL_GPL drivers/media/usb/dvb-usb-v2/mxl111sf-tuner 0x493b5bda mxl111sf_tuner_attach +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x01536e2e em28xx_uninit_usb_xfer +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x0fed9379 em28xx_alloc_urbs +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x148784ce em28xx_init_usb_xfer +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x176b8a92 em28xx_gpio_set +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x1eb1439b em28xx_write_regs +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x3717d809 em28xx_set_mode +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x531fe2e7 em28xx_audio_setup +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x5522f547 em28xx_init_camera +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x5f35f7ed em28xx_audio_analog_set +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x6d578f78 em28xx_boards +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x7fc8652c em28xx_tuner_callback +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x9b7dbe3d em28xx_read_reg +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xa5a25d47 em28xx_find_led +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xab77bc43 em28xx_write_reg_bits +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xad583ac5 em28xx_toggle_reg_bits +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xae565f23 em28xx_stop_urbs +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xafd8e5fd em28xx_setup_xc3028 +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xb2cdf8b2 em28xx_write_ac97 +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xb6169935 em28xx_write_reg +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xcd75ef7f em28xx_free_device +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xda0c7f4b em28xx_read_ac97 +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x081ae25e tm6000_set_reg +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x1ec2d155 tm6000_set_audio_bitrate +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x2309a6d6 tm6000_xc5000_callback +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x89b611dd tm6000_debug +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0xa4aaddeb tm6000_get_reg +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0xbd5115b4 tm6000_set_reg_mask +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0xdff8e89d tm6000_tuner_callback +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x01c483a9 v4l2_get_timestamp +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x1a48679d v4l2_spi_new_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x5e451383 v4l2_i2c_subdev_addr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x813f3de4 v4l2_find_nearest_format +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0xa75f8ce3 v4l2_spi_subdev_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0xaf5a5d39 v4l2_i2c_new_subdev_board +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0xc0434d83 v4l2_i2c_subdev_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0xd3ea8f25 v4l2_i2c_new_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0xf2a353ac v4l2_i2c_tuner_addrs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0xf5ef842e v4l_bound_align_image +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x08982d59 v4l2_match_dv_timings +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x4103badb v4l2_print_dv_timings +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x5491c182 v4l2_enum_dv_timings_cap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x67b8205b v4l2_detect_cvt +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x6f344bb9 v4l2_calc_aspect_ratio +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0xb0891da2 v4l2_dv_timings_presets +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0xdfa5a008 v4l2_valid_dv_timings +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0xf0e1988c v4l2_find_dv_timings_cap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0xf98d0f9d v4l2_detect_gtf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-flash-led-class 0x58d8add8 v4l2_flash_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-flash-led-class 0x66b847d5 v4l2_flash_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x17eb0eee v4l2_m2m_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x1903a2ae v4l2_m2m_buf_queue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x2c4772a8 v4l2_m2m_ioctl_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x2c75bf73 v4l2_m2m_fop_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x2e6f91d5 v4l2_m2m_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x30e78771 v4l2_m2m_ioctl_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x3280fb33 v4l2_m2m_ioctl_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x3f652a92 v4l2_m2m_try_schedule +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x42304160 v4l2_m2m_ioctl_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x49da673b v4l2_m2m_ioctl_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x533f9da1 v4l2_m2m_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x5c91e359 v4l2_m2m_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x5ef219ec v4l2_m2m_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x60be144d v4l2_m2m_ioctl_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x6758f7c2 v4l2_m2m_ctx_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x71e34f0e v4l2_m2m_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x911a50f6 v4l2_m2m_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x91b998fe v4l2_m2m_buf_remove +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x9e3001b0 v4l2_m2m_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xac3f9a8e v4l2_m2m_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xc1814d07 v4l2_m2m_ioctl_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xc51618d8 v4l2_m2m_fop_mmap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xc6fca5ad v4l2_m2m_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xc7d6b79a v4l2_m2m_ioctl_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xca71fa44 v4l2_m2m_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xd631cb30 v4l2_m2m_ioctl_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xdf8fe06a v4l2_m2m_next_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xf3e9bf56 v4l2_m2m_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xffa3ee1d v4l2_m2m_ctx_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x01ee3bac videobuf_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x040f39e8 videobuf_alloc_vb +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x047e0481 videobuf_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x06b23841 videobuf_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x0f24e273 videobuf_queue_to_vaddr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x18fa2255 videobuf_waiton +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x257e4200 videobuf_read_start +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x395497d6 videobuf_queue_cancel +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x51281985 videobuf_read_stream +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x534bb8af videobuf_queue_core_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x5c87cf99 videobuf_poll_stream +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x67c81c6d __videobuf_mmap_setup +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x70989367 videobuf_mmap_setup +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x75a26eca videobuf_iolock +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x7aeda996 videobuf_stop +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x8f462200 videobuf_mmap_mapper +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x91621207 videobuf_read_one +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x91e2fc50 videobuf_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x99edae91 videobuf_next_field +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x9b7432b6 videobuf_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xa41f86ee videobuf_queue_is_busy +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xa8cc50ba videobuf_read_stop +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xbd6dabc4 videobuf_mmap_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xf06c2fbc videobuf_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x182fcea5 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 0x688276f8 videobuf_to_dma +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0xac034c9f videobuf_dma_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0xd4f51f6e videobuf_queue_sg_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-vmalloc 0x14feb000 videobuf_vmalloc_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-vmalloc 0x5f9fcc80 videobuf_to_vmalloc +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-vmalloc 0xd1de5af7 videobuf_queue_vmalloc_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x0391e029 vb2_queue_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x1397f17f vb2_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x16a41664 vb2_plane_vaddr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x215c31d5 vb2_ioctl_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x284a733f vb2_wait_for_all_buffers +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x3be74dcc vb2_read +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x4187dbfb vb2_ioctl_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x4295ded4 vb2_mmap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x50a4bb2e vb2_fop_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x511b9ea5 vb2_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x518720b4 vb2_ops_wait_prepare +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x52c71a65 vb2_fop_mmap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x6914dc6d vb2_ioctl_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x6d2788ff vb2_ioctl_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x6d952315 vb2_thread_start +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x73c6348b vb2_plane_cookie +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x76ab19cd vb2_ioctl_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x770f2e45 vb2_ioctl_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x785b9608 vb2_queue_error +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x8780fc75 vb2_discard_done +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x989a15dd vb2_fop_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x9a53223b vb2_fop_read +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xa04676d5 vb2_thread_stop +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xa1e3e736 vb2_write +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xae9df446 _vb2_fop_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xaf39e8e4 vb2_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xbf980b57 vb2_ops_wait_finish +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xc03134f2 vb2_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xc0ee1187 vb2_buffer_done +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xcdbefba1 vb2_fop_write +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xd0b4a558 vb2_ioctl_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xd48c1cfc vb2_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xd4c9baa0 vb2_ioctl_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xd765d2b5 vb2_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xd8b2d4b5 vb2_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xda8ba657 vb2_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xdd2935c5 vb2_queue_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xe1debbd7 vb2_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xeed6c191 vb2_ioctl_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-contig 0x74c969c3 vb2_dma_contig_memops +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-contig 0xb0ad3d3f vb2_dma_contig_init_ctx +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-contig 0xe57f0426 vb2_dma_contig_cleanup_ctx +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-sg 0x14e1b0be vb2_dma_sg_init_ctx +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-sg 0xbcdba18b vb2_dma_sg_memops +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-sg 0xd30ec30f vb2_dma_sg_cleanup_ctx +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-memops 0x02ec96b7 vb2_put_vma +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-memops 0x73b31e68 vb2_get_vma +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-memops 0x7c33d08d vb2_common_vm_ops +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-memops 0xa3adfb64 vb2_get_contig_userptr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-vmalloc 0x030bfb34 vb2_vmalloc_memops +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x00236640 v4l2_device_set_name +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x04044d91 v4l2_event_dequeue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x0754418e v4l2_device_unregister_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x0ec6060f v4l2_compat_ioctl32 +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x249185b7 v4l2_src_change_event_subdev_subscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x28ed17d5 v4l2_event_subdev_unsubscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x2dff6b25 v4l2_device_register_subdev_nodes +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x2eaa2339 v4l2_event_unsubscribe_all +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x319389a6 v4l2_device_put +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x38d1c3af v4l2_fh_exit +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x452e31a5 v4l2_device_unregister +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x56c0b289 v4l2_subdev_link_validate +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x5f97e8cf v4l2_fh_add +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x657b62fc v4l2_src_change_event_subscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x6f8a0fcd v4l2_fh_del +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x7cd1f2d5 v4l2_event_queue_fh +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x8734d36e v4l2_event_pending +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x87467993 v4l2_device_register +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x8b06c813 v4l2_event_unsubscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x95fc9763 v4l2_event_queue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x96451726 v4l2_device_register_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x9c65ed48 v4l2_fh_open +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xb580ac90 v4l2_subdev_link_validate_default +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xe1b158d9 v4l2_event_subscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xe846033b v4l2_fh_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xf4f2a816 v4l2_device_disconnect +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xfe03931c v4l2_fh_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xff03e831 v4l2_fh_is_singular +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0x72552f43 pm80x_init +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0xb5933464 pm80x_regmap_config +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0xd99fd720 pm80x_deinit +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0xe2877195 pm80x_pm_ops +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0x21af85bc da9150_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0x32471e18 da9150_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0x597ccd00 da9150_set_bits +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0x67f92630 da9150_bulk_write +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0x93dc9a95 da9150_bulk_read +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x2d996bbb kempld_read32 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x3c185696 kempld_release_mutex +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x529d20ef kempld_read16 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0xb1e0740e kempld_get_mutex +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0xd888dfc6 kempld_write8 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0xe593de7f kempld_write32 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0xf95ecb66 kempld_read8 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0xfccdf3c9 kempld_write16 +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0x2aedd620 lm3533_read +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0xa4251892 lm3533_update +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0xaf53f09d lm3533_write +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x020dde2e lm3533_ctrlbank_enable +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x15f75aa3 lm3533_ctrlbank_set_max_current +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x4235d613 lm3533_ctrlbank_disable +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x51331007 lm3533_ctrlbank_set_brightness +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x7b831577 lm3533_ctrlbank_set_pwm +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0xac67ee03 lm3533_ctrlbank_get_brightness +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0xc5b3ff37 lm3533_ctrlbank_get_pwm +EXPORT_SYMBOL_GPL drivers/mfd/lp3943 0x1aa8a60f lp3943_update_bits +EXPORT_SYMBOL_GPL drivers/mfd/lp3943 0x598d56e5 lp3943_read_byte +EXPORT_SYMBOL_GPL drivers/mfd/lp3943 0xe5999935 lp3943_write_byte +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x06ec1bc3 mc13xxx_variant_mc34708 +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x14e3eeab mc13xxx_variant_mc13783 +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x392623fa mc13xxx_common_exit +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x46172fd2 mc13xxx_common_init +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x5459a58b mc13xxx_variant_mc13892 +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x93709e7b mc13xxx_adc_do_conversion +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x1b9c065d pcf50633_irq_unmask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x2d4c4de7 pcf50633_irq_mask_get +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x3c4f38fe pcf50633_reg_clear_bits +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x47ecdf84 pcf50633_reg_set_bit_mask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x659871be pcf50633_irq_mask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x66526ce2 pcf50633_read_block +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xbaff417e pcf50633_write_block +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xc63522e3 pcf50633_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xedbf2b89 pcf50633_register_irq +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xf00d5240 pcf50633_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xf5e759a4 pcf50633_free_irq +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-adc 0x225df1ee pcf50633_adc_sync_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-adc 0xb77cb779 pcf50633_adc_async_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x1e1c7a48 pcf50633_gpio_get +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x29fffdab pcf50633_gpio_invert_get +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x396f05ce pcf50633_gpio_set +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x405252ed pcf50633_gpio_power_supply_set +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x58e44199 pcf50633_gpio_invert_set +EXPORT_SYMBOL_GPL drivers/mfd/retu-mfd 0x01a33234 retu_write +EXPORT_SYMBOL_GPL drivers/mfd/retu-mfd 0x4fca3918 retu_read +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x0359e41c rtsx_pci_dma_unmap_sg +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x100af89b rtsx_pci_read_ppbuf +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x107aa1cc rtsx_pci_write_phy_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x20c65685 rtsx_pci_card_exist +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x4094919a rtsx_pci_card_power_off +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x43ff5f39 rtsx_pci_write_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x476073a3 rtsx_pci_add_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x4e197220 rtsx_pci_start_run +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x5550c1be rtsx_pci_read_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x5be1e1b4 rtsx_pci_send_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x653988f8 rtsx_pci_read_phy_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x6de753e3 rtsx_pci_dma_transfer +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x8af46b98 rtsx_pci_write_ppbuf +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x8e70137b rtsx_pci_send_cmd_no_wait +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xa5024150 rtsx_pci_stop_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xbf22f649 rtsx_pci_transfer_data +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xc936e72b rtsx_pci_switch_clock +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xd15d9fcb rtsx_pci_card_exclusive_check +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xdaee5a30 rtsx_pci_dma_map_sg +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xdd6bfe83 rtsx_pci_card_pull_ctl_enable +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xdf7b0880 rtsx_pci_card_pull_ctl_disable +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xe7a99d34 rtsx_pci_complete_unfinished_transfer +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xecf5e0ec rtsx_pci_card_power_on +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xf27c995c rtsx_pci_switch_output_voltage +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x2c560e4c rtsx_usb_write_ppbuf +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x2f978fc8 rtsx_usb_read_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x46396d81 rtsx_usb_write_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x6e1564fb rtsx_usb_switch_clock +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x8a0d4928 rtsx_usb_read_ppbuf +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x90d7e5c8 rtsx_usb_add_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0xa405a757 rtsx_usb_ep0_write_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0xc6dc031a rtsx_usb_card_exclusive_check +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0xcc07162a rtsx_usb_get_card_status +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0xd23b2ade rtsx_usb_transfer_data +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0xd8fa96f5 rtsx_usb_ep0_read_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0xf80e43d3 rtsx_usb_send_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0xfdfba24b rtsx_usb_get_rsp +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x112332e1 si476x_core_is_a_primary_tuner +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x268c758f si476x_core_has_diversity +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x2dc68cc9 si476x_core_cmd_intb_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x346f97f7 si476x_core_cmd_fm_phase_diversity +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x4f98d3bb si476x_core_cmd_fm_rds_blockcount +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x55899afe si476x_core_i2c_xfer +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x629d8d7e si476x_core_cmd_fm_phase_div_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x67cede59 si476x_core_is_in_am_receiver_mode +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x74731aec si476x_core_is_a_secondary_tuner +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x7643ed2d si476x_core_cmd_am_seek_start +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x7967ccea si476x_core_cmd_am_rsq_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x819839e2 si476x_core_cmd_set_property +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x88144215 si476x_core_cmd_power_up +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x8831ac3e si476x_core_stop +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x8d70bf8c si476x_core_is_powered_up +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x8e196972 si476x_core_cmd_fm_rsq_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x8ecb4ebc si476x_core_set_power_state +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x9121a6d5 si476x_core_start +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x958e17bb si476x_core_cmd_am_tune_freq +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x96aadee2 si476x_core_cmd_ana_audio_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xab12f9cc si476x_core_cmd_am_acf_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xab84ed45 si476x_core_has_am +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xafa4c0c3 si476x_core_cmd_zif_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xb829d264 si476x_core_cmd_power_down +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xc50bdb72 si476x_core_cmd_ic_link_gpo_ctl_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xcbf57397 si476x_core_cmd_fm_rds_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xcdf97f2b si476x_core_cmd_fm_seek_start +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xe0548eaa si476x_core_cmd_agc_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xef246c13 si476x_core_cmd_func_info +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xf061514d si476x_core_cmd_get_property +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xf62fe324 devm_regmap_init_si476x +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xf7e5a6f3 si476x_core_cmd_dig_audio_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xfe718c68 si476x_core_cmd_fm_acf_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xff06bd86 si476x_core_cmd_fm_tune_freq +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x21bd8095 sm501_find_clock +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x2b9f7535 sm501_modify_reg +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x373e6b30 sm501_unit_power +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x3f3f00a5 sm501_misc_control +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x5cbf4e09 sm501_set_clock +EXPORT_SYMBOL_GPL drivers/mfd/ti_am335x_tscadc 0x1ddb0972 am335x_tsc_se_set_once +EXPORT_SYMBOL_GPL drivers/mfd/ti_am335x_tscadc 0x779bb7ec am335x_tsc_se_clr +EXPORT_SYMBOL_GPL drivers/mfd/ti_am335x_tscadc 0x7827d03e am335x_tsc_se_adc_done +EXPORT_SYMBOL_GPL drivers/mfd/ti_am335x_tscadc 0xff2aea71 am335x_tsc_se_set_cache +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0x03bb23d0 tps65217_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0x42d6115f tps65217_set_bits +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0x5146d889 tps65217_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0xf0bc2fae tps65217_clear_bits +EXPORT_SYMBOL_GPL drivers/mfd/tps65218 0x3f3881e5 tps65218_clear_bits +EXPORT_SYMBOL_GPL drivers/mfd/tps65218 0x7f927310 tps65218_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/tps65218 0x9d817627 tps65218_set_bits +EXPORT_SYMBOL_GPL drivers/mfd/tps65218 0xd6b6f131 tps65218_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/ucb1400_core 0x5c8879a1 ucb1400_adc_read +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0x3dd66fc1 cb710_pci_update_config_reg +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0x9e8499b6 cb710_sg_dwiter_read_next_block +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0xa9998c3d cb710_sg_dwiter_write_next_block +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0xafd3d321 cb710_set_irq_handler +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0x1a1b5249 oslec_flush +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0x2feda75b oslec_hpf_tx +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0x3227a28e oslec_snapshot +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0x7dc9dddd oslec_adaption_mode +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0xb2c66001 oslec_create +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0xc8b5a524 oslec_free +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0xd370f679 oslec_update +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0x27cb133b eeprom_93cx6_multiread +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0x63d2ff63 eeprom_93cx6_wren +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0x793fc8de eeprom_93cx6_multireadb +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0x822222db eeprom_93cx6_write +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0x98bb5a22 eeprom_93cx6_read +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0xdb9ca14b eeprom_93cx6_readb +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x3e77a3d5 enclosure_find +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x520ee93b enclosure_unregister +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x737b4610 enclosure_component_alloc +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x84e3f6aa enclosure_component_register +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x905379c1 enclosure_for_each_device +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x9586ea0f enclosure_remove_device +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0xe0247a82 enclosure_add_device +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0xfa37cacc enclosure_register +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x1ba1fb0b lis3lv02d_joystick_enable +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x2461cdb7 lis3lv02d_poweron +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x4b3a11ca lis3lv02d_remove_fs +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x51905749 lis3_dev +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x63621f34 lis3lv02d_joystick_disable +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x68e4fea4 lis3lv02d_poweroff +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x7a3a12dc lis3lv02d_init_device +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x8a1d6dee lis3lv02d_init_dt +EXPORT_SYMBOL_GPL drivers/misc/ti-st/st_drv 0x5d394195 st_unregister +EXPORT_SYMBOL_GPL drivers/misc/ti-st/st_drv 0xda6c558a st_register +EXPORT_SYMBOL_GPL drivers/mmc/host/dw_mmc-pltfm 0x0d70e823 dw_mci_pltfm_pmops +EXPORT_SYMBOL_GPL drivers/mmc/host/dw_mmc-pltfm 0x720c2669 dw_mci_pltfm_remove +EXPORT_SYMBOL_GPL drivers/mmc/host/dw_mmc-pltfm 0xd95feb6b dw_mci_pltfm_register +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x1149632f sdhci_set_bus_width +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x24414ce6 sdhci_add_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x33f138a7 sdhci_runtime_resume_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x433678cb sdhci_suspend_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x4723dfed sdhci_remove_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x6b69c328 sdhci_set_clock +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x6c072e30 sdhci_enable_irq_wakeups +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x77dd12c2 sdhci_send_command +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x85c8ad49 sdhci_alloc_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x87b1e31e sdhci_resume_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x88ac8312 sdhci_set_uhs_signaling +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xa76961ca sdhci_reset +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xee881fc4 sdhci_free_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xf13f3338 sdhci_runtime_suspend_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x01e62765 sdhci_pltfm_clk_get_max_clock +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x1db13e5b sdhci_pltfm_pmops +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x31a15403 sdhci_pltfm_unregister +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x334dabfe sdhci_get_of_property +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x5ec96040 sdhci_pltfm_suspend +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x6656efca sdhci_pltfm_register +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x76994a8e sdhci_pltfm_init +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x91e27fe8 sdhci_pltfm_free +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0xf8d815aa sdhci_pltfm_resume +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0x0cb58769 cfi_cmdset_0001 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0x339ca281 cfi_cmdset_0003 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0xce828717 cfi_cmdset_0200 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0x50b2ad45 cfi_cmdset_0701 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0xa34b62c3 cfi_cmdset_0002 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0xdd192913 cfi_cmdset_0006 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0020 0xbdcf56f2 cfi_cmdset_0020 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0x4b210678 cfi_qry_mode_on +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0xdc3459eb cfi_qry_mode_off +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0xe19b1b0b cfi_qry_present +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x02780341 mtd_device_unregister +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x0d4a6ec5 mtd_read_oob +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x13f2930d __put_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x15ada0e1 mtd_block_isreserved +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x19ae7b9c unregister_mtd_user +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x2a1c2b31 mtd_block_markbad +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x341d7451 mtd_write_user_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x392ac7fb mtd_writev +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x3f9d4705 deregister_mtd_parser +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x41045ea0 mtd_kmalloc_up_to +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x469a6d27 mtd_get_user_prot_info +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x48721a3a get_mtd_device_nm +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x574198fa __get_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x5824f4ce get_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x59e0a25a mtd_get_device_size +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x5a235961 mtd_lock_user_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x626fa9a0 mtd_get_unmapped_area +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x65ed98e7 kill_mtd_super +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x6931bfeb mtd_is_locked +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x6a9f576b mtd_erase_callback +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x711bc3d6 mtd_block_isbad +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x727d6a4f mtd_is_partition +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x75c4b2ab mtd_get_fact_prot_info +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x78cff80c mtd_del_partition +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x9209bbef mtd_read +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x95673522 register_mtd_user +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x9ed2b780 mtd_read_fact_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xa3bf1b46 mtd_erase +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xa5a69c38 register_mtd_parser +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xafe9ac2c mtd_unlock +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xbbc26ca3 mtd_panic_write +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xbf90322d mtd_write +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xc268580b mtd_device_parse_register +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xc310deed mtd_read_user_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xd1641c3b mtd_point +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xd16752ad mtd_lock +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xd76743f0 mount_mtd +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xdad140ae put_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xe1b871bd mtd_table_mutex +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xe8d2ef83 __mtd_next_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xf7598a7e mtd_add_partition +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xfb318dc8 mtd_unpoint +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0x029c0c43 register_mtd_blktrans +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0x6e4dd1f4 del_mtd_blktrans_dev +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0x72ec057b mtd_blktrans_cease_background +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0xa45480f2 add_mtd_blktrans_dev +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0xb7ba9a11 deregister_mtd_blktrans +EXPORT_SYMBOL_GPL drivers/mtd/nand/nand 0x5e7d2b10 nand_wait_ready +EXPORT_SYMBOL_GPL drivers/mtd/nand/nand 0x8d51d96e nand_release +EXPORT_SYMBOL_GPL drivers/mtd/nand/sm_common 0x9a094265 sm_register_device +EXPORT_SYMBOL_GPL drivers/mtd/onenand/onenand 0x7e779d4a onenand_scan +EXPORT_SYMBOL_GPL drivers/mtd/onenand/onenand 0xa794f2d4 onenand_release +EXPORT_SYMBOL_GPL drivers/mtd/spi-nor/spi-nor 0xad0536c4 spi_nor_scan +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x1850d157 ubi_is_mapped +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x22f1e38d ubi_do_get_device_info +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 0x4e8da675 ubi_get_volume_info +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x4f58b8fe ubi_open_volume_path +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x5058817c ubi_leb_unmap +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x5cfdd22d ubi_get_device_info +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x6e131dd2 ubi_leb_read +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x751ea75a ubi_leb_change +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x7ab0324a ubi_leb_erase +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x85a8ee76 ubi_unregister_volume_notifier +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x928da994 ubi_leb_write +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x92c2ab97 ubi_leb_read_sg +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x9dc1ee82 ubi_open_volume +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xcc9d6701 ubi_open_volume_nm +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xd97a3f82 ubi_close_volume +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xec3d76e5 ubi_leb_map +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xf5ee9ba8 ubi_register_volume_notifier +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x41694b23 unregister_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x47ad1a35 register_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0xa8b2891f c_can_power_up +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0xb05a2e95 alloc_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0xb9733a61 free_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0xbde7ab06 c_can_power_down +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x03f96cd8 alloc_can_err_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x1e783b37 devm_can_led_init +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x222c295a can_len2dlc +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x2d3d6aa3 can_change_mtu +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x321d857a can_led_event +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x364f003c open_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x3cef3d61 register_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x7a337c76 alloc_can_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x857e7b32 can_bus_off +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x89e92685 can_get_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x8e02f1e3 alloc_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x9f419777 safe_candev_priv +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xa3448725 free_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xab190b7a alloc_canfd_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xad8d6d68 can_free_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xb346573b can_dlc2len +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xd86dae42 can_change_state +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xda1cfbe4 close_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xe611279a can_put_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xf60ed313 unregister_candev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0x844ab2bc alloc_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0x9565c263 free_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0x9f5ee0fb register_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0xedbae9be unregister_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x2b3583d5 free_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x47cdc818 register_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x49ebd0d2 sja1000_interrupt +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x5c114794 alloc_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0xb31fb918 unregister_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/ethernet/arc/arc_emac 0x78bd6463 arc_emac_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/arc/arc_emac 0xa574e461 arc_emac_probe +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x070cbf3c mlx4_unbond +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1014d7c2 mlx4_get_vf_config +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1160f796 mlx4_config_dev_retrieval +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x14cc161e mlx4_mtt_init +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1b474c95 mlx4_bf_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1bb62d30 mlx4_set_admin_guid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1bf6453b mlx4_CLOSE_PORT +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1dc8ba68 mlx4_srq_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1de1f712 mlx4_qp_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x20d6f132 mlx4_unicast_promisc_add +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x26660a43 mlx4_phys_to_slaves_pport +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2a53fe14 mlx4_get_counter_stats +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2d9e38bf mlx4_vf_set_enable_smi_admin +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2f18e750 mlx4_flow_detach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x30317d53 mlx4_mr_rereg_mem_write +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x33e0130b __mlx4_register_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x34ccf5a6 mlx4_multicast_promisc_add +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x35114035 mlx4_register_interface +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x363d066c mlx4_srq_lookup +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x39195a71 mlx4_xrcd_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x39dbcc64 mlx4_wol_read +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3af1fb29 mlx4_phys_to_slaves_pport_actv +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3b04758a mlx4_find_cached_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3b92afa2 mlx4_map_sw_to_hw_steering_id +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3bf30f74 mlx4_free_cmd_mailbox +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3fc06716 mlx4_cq_modify +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x405811fd mlx4_db_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4514cb0c mlx4_uar_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x45227322 mlx4_xrcd_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x463f8f91 mlx4_get_admin_guid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x465ddc28 mlx4_cq_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x48f4da51 mlx4_srq_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4adcac5f mlx4_multicast_detach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4ba789f3 mlx4_mr_hw_write_mpt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4c737a4e mlx4_fmr_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4f0a10c6 mlx4_set_vf_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x51272b4d mlx4_mr_hw_change_access +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x550e05c4 mlx4_set_vf_spoofchk +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x59410033 mlx4_mr_enable +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5faaa9d4 mlx4_flow_steer_promisc_add +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x628acf02 mlx4_config_vxlan_port +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x63ce0ec9 mlx4_mw_enable +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x67bcc050 mlx4_alloc_cmd_mailbox +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x69701c3f mlx4_unregister_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6fe23812 mlx4_get_base_gid_ix +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x714bf365 mlx4_get_vf_stats +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x731efb46 mlx4_db_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x732d111e mlx4_phys_to_slave_port +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x77247160 mlx4_map_phys_fmr +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7a589814 mlx4_get_default_counter_index +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7dcab266 mlx4_mr_hw_get_mpt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7e6ca365 mlx4_cq_resize +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x82bd9585 mlx4_qp_to_ready +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8322b086 mlx4_read_clock +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x867fa9e7 mlx4_fmr_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x879fb919 mlx4_counter_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x88e20d8e mlx4_mw_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x88fd11ba mlx4_SYNC_TPT +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x891a1830 mlx4_flow_steer_promisc_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8e10468e mlx4_mr_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8f8f900c mlx4_unregister_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8ff5afe5 mlx4_mr_hw_change_pd +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9305dcd3 mlx4_unicast_detach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9759541f mlx4_pd_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x97ad1ed4 mlx4_write_mtt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x99fbb43e mlx4_mr_rereg_mem_cleanup +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9a92a901 mlx4_vf_get_enable_smi_admin +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9a9b91e0 mlx4_buf_write_mtt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9af33948 mlx4_alloc_hwq_res +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9ccb4ab8 mlx4_buf_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa15b6f46 mlx4_qp_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa1ff4502 mlx4_find_cached_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa4bcc83b mlx4_counter_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa60c7e53 __mlx4_unregister_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa7dfeb80 mlx4_get_active_ports +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xaabf1c42 mlx4_unicast_attach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xaafe264c mlx4_FLOW_STEERING_IB_UC_QP_RANGE +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xab745484 mlx4_bf_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xad59162f mlx4_multicast_promisc_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xad9bdd28 mlx4_register_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb04dda6a mlx4_free_hwq_res +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb0d7818b mlx4_slave_convert_port +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb4dd1f70 mlx4_qp_reserve_range +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb57a6f3e mlx4_qp_release_range +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb58188e9 mlx4_INIT_PORT +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbe9e8a3f mlx4_srq_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbeea16e6 mlx4_get_protocol_dev +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc12a3e1c mlx4_vf_smi_enabled +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc39e35f0 mlx4_mtt_cleanup +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc5452455 mlx4_set_vf_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xca7fac5a __mlx4_cmd +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xcbcd3749 mlx4_update_qp +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xcca2f5fd mlx4_flow_attach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xccb1d527 mlx4_map_sw_to_hw_steering_mode +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xce4d3a69 mlx4_unicast_promisc_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xce8acff8 mlx4_qp_modify +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xce92210b mlx4_hw_rule_sz +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd1e11209 mlx4_mtt_addr +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd6322c81 mlx4_unregister_interface +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd98c0b76 mlx4_wol_write +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xdba929b3 mlx4_port_map_set +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xdd39371c mlx4_uar_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xde4cd215 mlx4_set_vf_link_state +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xdffa6a2c mlx4_register_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe73e0687 mlx4_ACCESS_PTYS_REG +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe7f75998 mlx4_mr_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xea049211 mlx4_qp_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xea94129c mlx4_fmr_enable +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xed6fa416 mlx4_srq_arm +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xee1b6cac mlx4_set_vf_rate +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xeec68483 mlx4_bond +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf06913c8 mlx4_mw_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf554e553 mlx4_cq_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf7935a87 mlx4_buf_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf8572ade mlx4_pd_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf8bbde47 __mlx4_replace_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xfbbc85d2 mlx4_fmr_unmap +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xfbc638a3 mlx4_get_slave_default_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xfdb9eabb mlx4_get_internal_clock_params +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xfe732fa7 mlx4_qp_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xfefac813 mlx4_multicast_attach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xff6a47d9 mlx4_get_base_qpn +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xfff90e4b mlx4_mr_hw_put_mpt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x09543b3d mlx5_fill_page_array +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x1b2c8f9c mlx5_query_port_proto_oper +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x1f977197 mlx5_db_alloc_node +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x223610c1 mlx5_buf_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x2264fcfe mlx5_set_port_caps +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x249f6364 mlx5_core_destroy_qp +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x33c95098 mlx5_query_hca_vport_context +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x367da36b mlx5_query_port_ptys +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x37507411 mlx5_set_port_proto +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x3c691abd mlx5_query_port_max_mtu +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x3c77613e mlx5_query_port_oper_mtu +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x3e845ba7 mlx5_query_port_admin_status +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x466f94bf mlx5_query_port_link_width_oper +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x6328f81d mlx5_destroy_unmap_eq +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x63db82c8 mlx5_db_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x6651efc0 mlx5_core_qp_modify +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x6c5200a2 mlx5_query_port_proto_cap +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x707d4946 mlx5_set_port_admin_status +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x75c5b25e mlx5_buf_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x769b17d3 mlx5_query_port_proto_admin +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x871f203f mlx5_set_port_mtu +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x8808c20e mlx5_core_access_reg +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x8b586ccc mlx5_core_qp_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x92c6725b mlx5_db_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x97d12534 mlx5_query_hca_vport_system_image_guid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x9ac93653 mlx5_query_hca_vport_node_guid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa1cae98e mlx5_core_xrcd_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa6a53708 mlx5_core_eq_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xb0cbcbe9 mlx5_create_map_eq +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xcf2da144 mlx5_query_hca_vport_gid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe609d8a3 mlx5_query_port_vl_hw_cap +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xeebd4829 mlx5_core_xrcd_dealloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf0672035 mlx5_core_page_fault_resume +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf31e42d8 mlx5_core_mad_ifc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf5835025 mlx5_core_create_qp +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xfa0185d8 mlx5_query_hca_vport_pkey +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac 0x16d24041 stmmac_suspend +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac 0x7bf07922 stmmac_dvr_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac 0xbef1b646 stmmac_resume +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac 0xf3dfe4c7 stmmac_dvr_probe +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac-platform 0x682040d5 stmmac_pltfr_probe +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac-platform 0x924f252c stmmac_pltfr_pm_ops +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac-platform 0xd73ef148 stmmac_pltfr_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x0eb39c3f cpsw_ale_add_mcast +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x1a8db1cd cpsw_ale_add_ucast +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x295c14bf cpsw_ale_del_mcast +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x39d00fed cpsw_ale_control_get +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x46e4e3be cpsw_ale_set_allmulti +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x4908efdb cpsw_ale_add_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x5b6ca339 cpsw_ale_start +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x65ca854e cpsw_ale_del_ucast +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x6b756674 cpsw_ale_control_set +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x9e7cac62 cpsw_ale_dump +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0xbd44a09a cpsw_ale_destroy +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0xc1a65f93 cpsw_ale_create +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0xc29a3488 cpsw_ale_stop +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0xea17da40 cpsw_ale_flush_multicast +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0xecc7a2d7 cpsw_ale_del_vlan +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x81203196 macvlan_common_newlink +EXPORT_SYMBOL_GPL drivers/net/macvlan 0xacf58e26 macvlan_common_setup +EXPORT_SYMBOL_GPL drivers/net/macvlan 0xb3a7797d macvlan_link_register +EXPORT_SYMBOL_GPL drivers/net/macvlan 0xb41ddad4 macvlan_dellink +EXPORT_SYMBOL_GPL drivers/net/macvtap 0x9e1fbdb7 macvtap_get_socket +EXPORT_SYMBOL_GPL drivers/net/phy/mdio-mux 0x6318757f mdio_mux_uninit +EXPORT_SYMBOL_GPL drivers/net/phy/mdio-mux 0xd7bdc8de mdio_mux_init +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0x517cd387 usbnet_generic_cdc_bind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0x6264afcb usbnet_cdc_bind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0x81718204 usbnet_cdc_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0xb82d228c usbnet_cdc_status +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x0fc83c3d cdc_ncm_rx_verify_ndp16 +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x112c4dc9 cdc_ncm_select_altsetting +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x214f4973 cdc_ncm_bind_common +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x6edeecd9 cdc_ncm_rx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x93f7fa11 cdc_ncm_fill_tx_frame +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x9dc44992 cdc_ncm_tx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0xacc7571b cdc_ncm_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0xb1111b9d cdc_ncm_rx_verify_nth16 +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x06be5d6c rndis_status +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x0dee7803 rndis_tx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x470cb0a6 rndis_rx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x48cc049e rndis_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x4d2e9186 rndis_command +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x812758b1 generic_rndis_bind +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x032c2e3a usbnet_open +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x0853df91 usbnet_status_stop +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x156a830a usbnet_pause_rx +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x1b607eb4 usbnet_status_start +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x2ad163fd usbnet_purge_paused_rxq +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x309cdf6b usbnet_write_cmd_nopm +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x3e17a3c2 usbnet_get_drvinfo +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x4186df62 usbnet_tx_timeout +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x47824b44 usbnet_read_cmd +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x48f45e6b usbnet_resume +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x5b3af94c usbnet_get_link +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x5d90fa01 usbnet_write_cmd +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x61ea8076 usbnet_get_endpoints +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x66a8343a usbnet_start_xmit +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x70061ffd usbnet_stop +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x7536a5b4 usbnet_resume_rx +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x78a2ef50 usbnet_unlink_rx_urbs +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x84dd90f4 usbnet_probe +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x88e5b42b usbnet_nway_reset +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x8be15277 usbnet_get_msglevel +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x97309208 usbnet_write_cmd_async +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x9d6b7c36 usbnet_change_mtu +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xa3debe0c usbnet_skb_return +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xb0e9d9ec usbnet_read_cmd_nopm +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xb4ff2cc0 usbnet_suspend +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xbb403e1f usbnet_set_settings +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xc745641a usbnet_get_settings +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xddef1048 usbnet_update_max_qlen +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xe5530062 usbnet_get_ethernet_addr +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xe81ec1db usbnet_set_msglevel +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xee815ec1 usbnet_disconnect +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xfacc5645 usbnet_defer_kevent +EXPORT_SYMBOL_GPL drivers/net/vxlan 0x13ad6e14 vxlan_sock_add +EXPORT_SYMBOL_GPL drivers/net/vxlan 0x51fdc073 vxlan_xmit_skb +EXPORT_SYMBOL_GPL drivers/net/vxlan 0x7232d8f7 vxlan_get_rx_port +EXPORT_SYMBOL_GPL drivers/net/vxlan 0xc5784ae0 vxlan_sock_release +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x0a5d16ee i2400m_dev_bootstrap +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x152101f1 i2400m_error_recovery +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x51aacae7 i2400m_pre_reset +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x5e1b24cb i2400m_tx_msg_sent +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x6b6e185e i2400m_is_boot_barker +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x71a68aaa i2400m_setup +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x75b30bc4 i2400m_netdev_setup +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x91a0ff8d i2400m_rx +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x9360a927 i2400m_post_reset +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xabbfa862 i2400m_reset +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xb00b793c i2400m_bm_cmd_prepare +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xc84e64d5 i2400m_init +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xe04757fe i2400m_release +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xe5b76583 i2400m_tx_msg_get +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xf3fbbebf i2400m_cmd_enter_powersave +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xf5146992 i2400m_tx +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xfde81818 i2400m_dev_reset_handle +EXPORT_SYMBOL_GPL drivers/net/wireless/cw1200/cw1200_core 0x4848f47e cw1200_can_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/cw1200/cw1200_core 0x9d78bce0 cw1200_core_release +EXPORT_SYMBOL_GPL drivers/net/wireless/cw1200/cw1200_core 0xaa6341c6 cw1200_irq_handler +EXPORT_SYMBOL_GPL drivers/net/wireless/cw1200/cw1200_core 0xc163e4ea cw1200_core_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/ipw2x00/libipw 0x64cacdc2 libipw_rx_any +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0x2ba0beda il_remove_station +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0x34aebfaf il_dealloc_bcast_stations +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0x3517f558 il_prep_station +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0x3f2ece05 il_mac_tx_last_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0xbb1bfd6e _il_grab_nic_access +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x0da0291e iwl_force_nmi +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x0e932630 __iwl_warn +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x19d4d6e0 iwl_read_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x1a31d0eb iwl_remove_notification +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x257c3767 iwl_parse_nvm_mcc_info +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x35033c81 iwl_phy_db_free +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x4569ca0f iwl_init_notification_wait +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x45b843f5 __iwl_err +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x49d0dd20 iwl_write_direct32 +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x50eaade7 iwl_read_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x51b657cd iwlwifi_mod_params +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x55d852c6 iwl_set_bits_mask_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x5c52e109 iwl_opmode_deregister +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x776221bf iwl_send_phy_db_data +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x7ab0e0f7 iwl_abort_notification_waits +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x7e50bde1 iwl_parse_nvm_data +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x8446f861 iwl_clear_bits_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x8b8fbf0b iwl_poll_direct_bit +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x8c5d5ab3 iwl_phy_db_set_section +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x8da16094 iwl_notification_wait_init +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x9c553437 iwl_notification_wait_notify +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xa4b9ec4c iwl_set_bits_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xab52d549 iwl_read_direct32 +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xb34cf247 __iwl_info +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xca7f7427 __iwl_crit +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xe559dfd8 iwl_parse_eeprom_data +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xe63ec719 iwl_opmode_register +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xe70fca4d iwl_phy_db_init +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xf03a5420 iwl_wait_notification +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xf1471819 iwl_nvm_check_version +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xf4a3b812 __iwl_dbg +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xfba66d7e iwl_write_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xfc6174fd iwl_poll_bit +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x2e670d7e lbs_stop_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x3590a6de lbs_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x5f712369 lbs_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x5fdf38b8 lbs_disablemesh +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x67f76e33 lbs_get_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x6908035b lbs_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x7eab683d lbs_host_to_card_done +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x849e5e23 lbs_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x87452a43 lbs_notify_command_response +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x9a5d174d lbs_queue_event +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xa3118030 lbs_send_tx_feedback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xa453668c lbs_cmd_copyback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xa58235a8 lbs_get_firmware_async +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xbc87c1b2 __lbs_cmd +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xd208f155 lbs_start_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xdb8ccacd lbs_host_sleep_cfg +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xe516f8cd lbs_process_rxed_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xf64277de lbs_debug +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x0c8d8b32 lbtf_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x1fcf3352 lbtf_cmd_copyback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x2aece54c lbtf_bcn_sent +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x39476374 lbtf_cmd_response_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xc393b692 lbtf_send_tx_feedback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xc53dac36 lbtf_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xc85e6899 lbtf_debug +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xe0e90aaa lbtf_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xec20ab0e __lbtf_cmd +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x3174c42f mwifiex_cancel_hs +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x31bd9748 mwifiex_alloc_dma_align_buf +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x3f6d9fda mwifiex_write_data_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x527e6485 mwifiex_process_sleep_confirm_resp +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x6463e2c5 mwifiex_queue_main_work +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x7b447946 mwifiex_process_hs_config +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x94434000 mwifiex_main_process +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x98ad7d21 mwifiex_enable_hs +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x9c49bbda mwifiex_drv_info_dump +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x9e7f0bf9 mwifiex_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x9f157095 mwifiex_deauthenticate_all +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xaad9514a mwifiex_add_virtual_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xb7382b23 mwifiex_init_shutdown_fw +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xd0150ada mwifiex_upload_device_dump +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xd3ef210a mwifiex_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xd413582d mwifiex_handle_rx_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xdee430e7 mwifiex_disable_auto_ds +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xe01a14b6 mwifiex_del_virtual_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x1bd7c018 p54_free_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x3195e4ba p54_parse_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x4456d2ac p54_register_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x679d9371 p54_free_skb +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x683d2e25 p54_init_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x72f4ab4e p54_read_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xb5c628ad p54_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xcb68eed1 p54_unregister_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xdd3c3011 p54_parse_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0x0aca03b5 rsi_91x_deinit +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0x1402797e rsi_mac80211_detach +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0x6fd53979 rsi_91x_init +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0x7201b98a rsi_dbg +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0xc836751f rsi_read_pkt +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0xdb3ca0e5 rsi_zone_enabled +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x03aa2f85 rt2800_conf_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x08482ebb rt2800_reset_tuner +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x09abf703 rt2800_process_rxwi +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x0ad0486d rt2800_wait_wpdma_ready +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x114e5f5d rt2800_get_txwi_rxwi_size +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x17292685 rt2800_config_shared_key +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x17ac5377 rt2800_get_tsf +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x29991b63 rt2800_txdone_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x29e35c05 rt2800_link_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x34eb2b30 rt2800_write_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x3e0f3044 rt2800_get_survey +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x424be436 rt2800_set_rts_threshold +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x508b95c1 rt2800_check_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x53704ec7 rt2800_disable_wpdma +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x5cd66cf3 rt2800_sta_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x5d539ea7 rt2800_read_eeprom_efuse +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x6a6553f1 rt2800_clear_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x704729cf rt2800_config_ant +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x74a97e80 rt2800_write_tx_data +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x74b4f1e7 rt2800_gain_calibration +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x8d2a12c8 rt2800_disable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x8ea2bbc1 rt2800_config_pairwise_key +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x8f1c426d rt2800_rfkill_poll +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x97ca76da rt2800_vco_calibration +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x98dabae6 rt2800_enable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x9e492ef3 rt2800_ampdu_action +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xa7d50e28 rt2800_config_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xc4d38c60 rt2800_wait_csr_ready +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xcec0f523 rt2800_probe_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xd3eb572f rt2800_load_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xdab95f35 rt2800_mcu_request +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xe1d85cb9 rt2800_config +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xe827260f rt2800_config_filter +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xebc8b132 rt2800_link_tuner +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xed51fd79 rt2800_config_erp +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xf20b7e66 rt2800_sta_add +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xf252c4b6 rt2800_get_key_seq +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xf547c919 rt2800_efuse_detect +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x0fad1430 rt2800mmio_pretbtt_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x2505789d rt2800mmio_tbtt_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x5b7eedce rt2800mmio_queue_init +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x5bd16e37 rt2800mmio_write_tx_desc +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x5fa4db64 rt2800mmio_interrupt +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x7848ed65 rt2800mmio_init_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x7c5f4c56 rt2800mmio_clear_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x92c0bcd1 rt2800mmio_rxdone_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x970b6990 rt2800mmio_stop_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xafe87040 rt2800mmio_enable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xc25399eb rt2800mmio_get_entry_state +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xc6a1455e rt2800mmio_autowake_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xc7be957a rt2800mmio_init_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xcbe73cf0 rt2800mmio_get_txwi +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xe28f94c7 rt2800mmio_txstatus_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xe7297cf7 rt2800mmio_kick_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xee90d5aa rt2800mmio_fill_rxdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xf6fc05f3 rt2800mmio_start_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xfcbd5831 rt2800mmio_toggle_irq +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x0496ab2f rt2x00mac_bss_info_changed +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x09e68200 rt2x00mac_sta_add +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x13dd65e6 rt2x00queue_stop_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x274c60e8 rt2x00queue_unmap_skb +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x29f15042 rt2x00mac_get_antenna +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x34aaac09 rt2x00mac_rfkill_poll +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x43a3af64 rt2x00mac_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x48506306 rt2x00lib_get_bssidx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x49bfbfee rt2x00mac_sw_scan_start +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x4baec585 rt2x00lib_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x5333a83f rt2x00mac_get_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x5d6f79ab rt2x00lib_txdone_noinfo +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x5fb14027 rt2x00mac_sta_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x63248a0b rt2x00queue_start_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x67669ba2 rt2x00mac_add_interface +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x7245677c rt2x00mac_sw_scan_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x860552de rt2x00mac_tx_frames_pending +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x86a42c9c rt2x00queue_get_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x86f42171 rt2x00queue_unpause_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x8a3c2aa3 rt2x00mac_get_ringparam +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x8dd8d5d0 rt2x00mac_flush +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x944f1888 rt2x00mac_set_tim +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x964c4d8a rt2x00lib_remove_dev +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x98d0956d rt2x00mac_start +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xa9538576 rt2x00queue_map_txskb +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xaaa500c3 rt2x00mac_set_antenna +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xaf28e248 rt2x00queue_for_each_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xb1646060 rt2x00mac_set_key +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xb2665cae rt2x00lib_rxdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xb5fa43e2 rt2x00lib_probe_dev +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xbe1aca73 rt2x00lib_beacondone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xc11a5512 rt2x00lib_txdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xc14ba4a1 rt2x00mac_configure_filter +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xc65e3086 rt2x00lib_pretbtt +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xc86a2d51 rt2x00lib_dmastart +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xcf0eaed6 rt2x00queue_flush_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xcfefa452 rt2x00lib_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xd36849c0 rt2x00queue_pause_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xd8a7e264 rt2x00lib_dmadone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xda300f43 rt2x00mac_conf_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xe12c8f31 rt2x00queue_start_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xe8be7744 rt2x00queue_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xf0271f69 rt2x00mac_config +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xf0ce1358 rt2x00queue_stop_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xf5ad4a43 rt2x00mac_remove_interface +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xf7761dab rt2x00mac_stop +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0x25121a1b rt2x00mmio_uninitialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0x51585e00 rt2x00mmio_initialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0x99abdf77 rt2x00mmio_regbusy_read +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0xa8cbef74 rt2x00mmio_rxdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0xfd82a228 rt2x00mmio_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0x4caad278 rt2x00pci_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0x621615e0 rt2x00pci_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0xaafcc88d rt2x00pci_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0xc44db50a rt2x00pci_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x0d0d7f5d rt2x00usb_register_read_async +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x124f742f rt2x00usb_regbusy_read +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x5181b8e2 rt2x00usb_vendor_request_buff +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x5570b5a6 rt2x00usb_disable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x566243ec rt2x00usb_disconnect +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x6e3a12e7 rt2x00usb_uninitialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x7289152b rt2x00usb_watchdog +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x738fb857 rt2x00usb_vendor_request +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xa1e4b66b rt2x00usb_initialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xb02a6c6d rt2x00usb_kick_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xb6ebd57b rt2x00usb_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xbf160f1e rt2x00usb_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xd2786fd5 rt2x00usb_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xea4669a1 rt2x00usb_clear_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xf2cdef45 rt2x00usb_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xfc86318b rt2x00usb_vendor_req_buff_lock +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x87985341 rtl92c_set_p2p_ps_offload_cmd +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xb5bf8817 dm_savepowerindex +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xcb08718b dm_restorepowerindex +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xefd321cd dm_writepowerindex +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x08afcb33 rtl8723_dm_init_dynamic_bb_powersaving +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x0961702c rtl8723_phy_reload_mac_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x1239eb55 rtl8723_fw_free_to_go +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x13c344f9 rtl8723_phy_rf_serial_write +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x1751c513 rtl8723_phy_path_a_standby +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x34745a72 rtl8723be_firmware_selfreset +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x44d0b006 rtl8723_phy_rf_serial_read +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x52579bee rtl8723_phy_mac_setting_calibration +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x59c4a0e9 rtl8723_save_adda_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x59ef7e26 rtl8723_phy_save_mac_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x661f000b rtl8723_dm_init_dynamic_txpower +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x6fee3a6c rtl8723_phy_set_sw_chnl_cmdarray +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x71824782 rtl8723_phy_path_a_fill_iqk_matrix +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x79c8ed34 rtl8723_phy_pi_mode_switch +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x9170a430 rtl8723_write_fw +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xa3e4b7e5 rtl8723_phy_reload_adda_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xaa6a37ba rtl8723_phy_init_bb_rf_reg_def +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xaf4d6d94 rtl8723_phy_calculate_bit_shift +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xaf9bbbd4 rtl8723_fw_block_write +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xba3b3f46 rtl8723_phy_set_bb_reg +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xc2c29379 rtl8723ae_firmware_selfreset +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xc8a76b8c rtl8723_download_fw +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xd016047a rtl8723_enable_fw_download +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xd0d48aea rtl8723_cmd_send_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xe1650188 rtl8723_dm_init_edca_turbo +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xe83b78c8 rtl8723_fw_page_write +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xef56ad12 rtl8723_phy_query_bb_reg +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xf4906af9 rtl8723_phy_txpwr_idx_to_dbm +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xfba0c81d rtl8723_phy_path_adda_on +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x01ef4a62 rtl_deinit_deferred_work +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x020ac3f7 rtl_init_core +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x08cb5320 rtl_dbgp_flag_init +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x1180d7f9 rtl_deinit_rfkill +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x16cc0de8 rtl_ips_nic_on +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x241dedc1 rtl_tid_to_ac +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x2921a4d4 rtl_btc_status_false +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x3a3c3b64 rtl_global_var +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x61cdf8eb rtl_tx_mgmt_proc +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x6b4de810 rtl_lps_change_work_callback +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x6e5dd9a3 read_efuse_byte +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x84cff7b6 rtl_init_rx_config +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x9d83293b rtl_is_special_data +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xa9e4664d rtl_attribute_group +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xa9ec6429 rtl_ops +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xaadd0e07 rtl_p2p_info +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xab962184 rtl_recognize_peer +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xac8f8355 rtl_deinit_core +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xc4cbf54b rtl_action_proc +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xc579c5d6 rtl_beacon_statistic +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xdb698aa1 rtl_swlps_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0x1fd47c62 wl1251_init_ieee80211 +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0x23fa14a3 wl1251_alloc_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0xd854e43a wl1251_free_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x11c0f8c4 wlcore_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x1641595c wlcore_set_partition +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x21943859 wlcore_event_beacon_loss +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x27120335 wl1271_cmd_data_path +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x2bd9a851 wl1271_tx_min_rate_get +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x36ace9f5 wl1271_acx_init_mem_config +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x42188ca8 wlcore_free_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x432342a1 wlcore_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x475d6523 wlcore_alloc_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x48bddbdf wlcore_event_rssi_trigger +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x5194f18f wlcore_disable_interrupts +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x53dff67d wl12xx_debug_level +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x58973278 wlcore_event_ba_rx_constraint +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x5c0c93f2 wl12xx_cmd_build_probe_req +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x5c0e8eef wl1271_debugfs_update_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x753f45fb wl1271_ps_elp_sleep +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x77092dcc wlcore_get_native_channel_type +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x79d09ede wlcore_disable_interrupts_nosync +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x8090d1ff wlcore_event_sched_scan_completed +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x82b4b10f wl1271_acx_set_ht_capabilities +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x8e5f66eb wl1271_tx_flush +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x8eec6a2a wlcore_event_inactive_sta +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x8f0dbf8c wl1271_cmd_test +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x8fbd83b1 wl1271_cmd_configure +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x94ba2fe9 wlcore_scan_sched_scan_ssid_list +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x9b243998 wlcore_cmd_wait_for_event_or_timeout +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x9f76e6c8 wlcore_set_key +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xa76ccf48 wlcore_event_roc_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xa9b9c80b wlcore_event_soft_gemini_sense +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xa9fed8ca wlcore_boot_upload_nvs +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xabe827cd wlcore_set_scan_chan_params +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xb805a0fa wl1271_format_buffer +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xbdbe796b wlcore_event_max_tx_failure +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xd3e612e8 wlcore_enable_interrupts +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xd5552187 wlcore_event_dummy_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xd58a9901 wlcore_synchronize_interrupts +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xe43451b8 wl1271_ps_elp_wakeup +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xe7556327 wlcore_boot_upload_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xeb89dc29 wlcore_boot_run_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xedd1b347 wl1271_cmd_send +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xf4c2b8f6 wl1271_acx_sleep_auth +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xf576c8bc wlcore_event_channel_switch +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xf6083acc wlcore_translate_addr +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xf6835a90 wlcore_scan_sched_scan_results +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xf73ee0d9 wl1271_acx_pm_config +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xfb68dc57 wl12xx_acx_mem_cfg +EXPORT_SYMBOL_GPL drivers/nfc/nfcmrvl/nfcmrvl 0x1b0adfc7 nfcmrvl_nci_register_dev +EXPORT_SYMBOL_GPL drivers/nfc/nfcmrvl/nfcmrvl 0x71c99791 nfcmrvl_nci_recv_frame +EXPORT_SYMBOL_GPL drivers/nfc/nfcmrvl/nfcmrvl 0x7399ecba nfcmrvl_parse_dt +EXPORT_SYMBOL_GPL drivers/nfc/nfcmrvl/nfcmrvl 0xacc44ec2 nfcmrvl_nci_unregister_dev +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x1de9a449 st_nci_hci_load_session +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x20db06c8 st_nci_enable_se +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x3ae8971c st_nci_discover_se +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x58a87f95 st_nci_hci_event_received +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0xa45f788f st_nci_probe +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0xca1ea14e st_nci_disable_se +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0xe7408f84 st_nci_remove +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0xeb108bb2 st_nci_hci_cmd_received +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 0x6cac1d05 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 0xa3b0d526 ntb_transport_unregister_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 0xe0b0590b ntb_transport_register_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/phy/phy-qcom-ufs 0x25ba3925 ufs_qcom_phy_remove +EXPORT_SYMBOL_GPL drivers/phy/phy-qcom-ufs 0x50aad081 get_ufs_qcom_phy +EXPORT_SYMBOL_GPL drivers/phy/phy-qcom-ufs 0x5f7059d1 ufs_qcom_phy_generic_probe +EXPORT_SYMBOL_GPL drivers/phy/phy-qcom-ufs 0x5f7e209a ufs_qcom_phy_init_vregulators +EXPORT_SYMBOL_GPL drivers/phy/phy-qcom-ufs 0x9be65db4 ufs_qcom_phy_init_clks +EXPORT_SYMBOL_GPL drivers/phy/phy-qcom-ufs 0x9e7d7bd3 ufs_qcom_phy_power_off +EXPORT_SYMBOL_GPL drivers/phy/phy-qcom-ufs 0xa8995c6b ufs_qcom_phy_power_on +EXPORT_SYMBOL_GPL drivers/phy/phy-qcom-ufs 0xb17e0560 ufs_qcom_phy_calibrate +EXPORT_SYMBOL_GPL drivers/phy/phy-qcom-ufs 0xb7328a1a ufs_qcom_phy_exit +EXPORT_SYMBOL_GPL drivers/power/pcf50633-charger 0x4f66a19c pcf50633_mbc_usb_curlim_set +EXPORT_SYMBOL_GPL drivers/power/pcf50633-charger 0x7e0b8d8f pcf50633_mbc_get_usb_online_status +EXPORT_SYMBOL_GPL drivers/power/pcf50633-charger 0xa5dbcfec pcf50633_mbc_get_status +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x06708c09 mc13xxx_parse_regulators_dt +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x16f7a694 mc13xxx_regulator_ops +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x26ee4c13 mc13xxx_fixed_regulator_set_voltage +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x369e895e mc13xxx_fixed_regulator_ops +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0xbed2e2b9 mc13xxx_get_num_regulators_dt +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x12e5ea2f wm8350_register_regulator +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x3f6c3083 wm8350_isink_set_flash +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x69359fad wm8350_dcdc_set_slot +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0xb8e03391 wm8350_ldo_set_slot +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0xc92bb389 wm8350_dcdc25_set_mode +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0xe96187cc wm8350_register_led +EXPORT_SYMBOL_GPL drivers/regulator/wm8400-regulator 0xa6d20930 wm8400_register_regulator +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x0bb0154c cxgbi_sock_rcv_wr_ack +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x0bb7a838 cxgbi_ddp_cleanup +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x0e8589e0 cxgbi_ddp_init +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x0ead5d96 cxgbi_conn_pdu_ready +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x13dd9bf9 cxgbi_get_host_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x13ed399b cxgbi_hbas_remove +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x1463cb0e cxgbi_set_conn_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x1ac83c01 cxgbi_conn_xmit_pdu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x1aeb26fe cxgbi_ep_disconnect +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x1c3843f0 cxgbi_device_find_by_netdev +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x1f81b4c4 cxgbi_sock_closed +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x276a6fc9 cxgbi_sock_established +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x2d60e587 cxgbi_conn_tx_open +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x326c08e5 cxgbi_device_portmap_create +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x3896954e cxgbi_ddp_ppod_set +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x3a41f7ce cxgbi_sock_check_wr_invariants +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x3a5c4389 cxgbi_ddp_page_size_factor +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x3b51af8b cxgbi_parse_pdu_itt +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x4b4821ea cxgbi_cleanup_task +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x4b4993b2 cxgbi_sock_purge_wr_queue +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x4c797616 cxgbi_create_conn +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x60a4ee5d cxgbi_ep_poll +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x65580d66 cxgbi_sock_act_open_req_arp_failure +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x7acf563d cxgbi_hbas_add +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x7fdb6004 cxgbi_device_unregister_all +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x8bca4914 cxgbi_device_portmap_cleanup +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x8c2ba369 cxgbi_ddp_ppod_clear +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x909de136 cxgbi_get_ep_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x93886308 cxgbi_device_unregister +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x9b4c29d3 cxgbi_sock_skb_entail +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xa53d2bb5 cxgbi_sock_fail_act_open +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xad403b33 cxgbi_bind_conn +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xae9de081 cxgbi_set_host_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xb9f590d5 cxgbi_sock_select_mss +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xc1abd0a2 cxgbi_device_find_by_lldev +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xc3cff3e7 cxgbi_iscsi_init +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xc85f1fde cxgbi_device_find_by_netdev_rcu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xc98fcc4c cxgbi_iscsi_cleanup +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xcaa99d36 cxgbi_conn_alloc_pdu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xd100a07d cxgbi_device_register +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xd2c9a652 cxgbi_get_conn_stats +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xddc3515e cxgbi_conn_init_pdu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xe3fb5a8c cxgbi_create_session +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xe49031ec cxgbi_sock_rcv_close_conn_rpl +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xe7772778 cxgbi_destroy_session +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xe9786b82 cxgbi_sock_rcv_abort_rpl +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xef346615 cxgbi_attr_is_visible +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xef57454d cxgbi_sock_rcv_peer_close +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xefdf572b cxgbi_ep_connect +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xfb95481d cxgbi_sock_free_cpl_skbs +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x1c94a428 scsi_dh_attach +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x23247b8e scsi_dh_activate +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x35af52b6 scsi_dh_set_params +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x593a36c2 scsi_dh_handler_exist +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x5ae8a8a8 scsi_unregister_device_handler +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x8852f4d9 scsi_dh_attached_handler_name +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0xbd17972e scsi_register_device_handler +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0xfbed9d58 scsi_dh_detach +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x0fb51275 fcoe_queue_timer +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x2a0d6be2 fcoe_ctlr_device_delete +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x374c1e1c fcoe_wwn_from_mac +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x7ae76817 fcoe_validate_vport_create +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x7c482bcd fcoe_link_speed_update +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x8091502b fcoe_fcf_device_delete +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x83c1b9e3 fcoe_fc_crc +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x84b3d915 fcoe_wwn_to_str +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x9058ff70 fcoe_clean_pending_queue +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xa0160a6f __fcoe_get_lesb +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xb5c912e6 fcoe_ctlr_device_add +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xbeeae943 fcoe_get_paged_crc_eof +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xc7da4691 fcoe_ctlr_get_lesb +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xe235f5aa fcoe_get_wwn +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xe7761b14 fcoe_get_lesb +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xeb50fb5d fcoe_fcf_device_add +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xf47a94f5 fcoe_libfc_config +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xf54364f7 fcoe_check_wait_queue +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xf7503037 fcoe_start_io +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x18c4315c iscsi_boot_create_host_kset +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x280a0bdd iscsi_boot_destroy_kset +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x4edcfc87 iscsi_boot_create_kset +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x56766164 iscsi_boot_create_ethernet +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x9314b928 iscsi_boot_create_target +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0xff723728 iscsi_boot_create_initiator +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x017de2ef iscsi_requeue_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x01b7f022 iscsi_session_failure +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x0ba4fdaa iscsi_suspend_tx +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x0d7fa95f iscsi_itt_to_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x12b2ad06 iscsi_switch_str_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x196a7f43 iscsi_put_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x1d7ad231 __iscsi_put_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x276fdb55 iscsi_session_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x31fd6fe7 iscsi_eh_device_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x3b314367 iscsi_eh_abort +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x3bef2f73 iscsi_pool_init +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x3d1ef507 iscsi_host_add +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x4d78d19c iscsi_suspend_queue +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x5f8cf0fc iscsi_conn_bind +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x66d09aae iscsi_conn_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x6730fb5f iscsi_host_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x6d7d9c1f __iscsi_complete_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x704160a0 iscsi_conn_send_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x70bd8180 iscsi_host_remove +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x721e771e iscsi_prep_data_out_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x76f27162 iscsi_host_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x774c7385 iscsi_conn_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x7835b99a __iscsi_get_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x786a87c4 iscsi_conn_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x817f5413 iscsi_queuecommand +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x8beadb12 iscsi_eh_recover_target +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x8d303b1b iscsi_pool_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x926e6fbf iscsi_complete_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x94457479 iscsi_conn_queue_work +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x94d6b612 iscsi_update_cmdsn +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xa163cf97 iscsi_conn_failure +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xb60edcab iscsi_session_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xb92b8ad1 iscsi_conn_stop +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xb9b694e7 iscsi_host_set_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xbf8c9136 iscsi_conn_get_addr_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xc1047616 iscsi_target_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xc1b428da iscsi_set_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xc6546fd9 iscsi_conn_start +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xc7394508 iscsi_complete_scsi_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xced62b9c iscsi_host_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xd7a7b609 iscsi_itt_to_ctask +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xe2b3f23a iscsi_session_recovery_timedout +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xe52a7181 iscsi_eh_target_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xe72fabf8 iscsi_verify_itt +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xf88f8afb iscsi_session_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xfc9611ce iscsi_eh_session_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x0ae99660 iscsi_segment_seek_sg +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x0bf99c4c iscsi_tcp_dgst_header +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x1282e3dc iscsi_tcp_segment_unmap +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x1b7b28ae iscsi_tcp_set_max_r2t +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x2bcc1f50 iscsi_segment_init_linear +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x445f6cce iscsi_tcp_conn_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x552ff340 iscsi_tcp_task_init +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x5cee1720 iscsi_tcp_conn_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x795b0364 iscsi_tcp_conn_get_stats +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x7bd33ffc iscsi_tcp_hdr_recv_prep +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x8723fbd7 iscsi_tcp_segment_done +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x9ff22032 iscsi_tcp_cleanup_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xa3b6904d iscsi_tcp_recv_segment_is_hdr +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xb447b84f iscsi_tcp_task_xmit +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xc984feb4 iscsi_tcp_recv_skb +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xd184f0c9 iscsi_tcp_r2tpool_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xdc09d3e0 iscsi_tcp_r2tpool_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x02ab5cb0 sas_register_ha +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x0a35bae6 sas_unregister_ha +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x10ec9fd0 sas_drain_work +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x14e36a67 sas_alloc_slow_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x29b32f9f sas_ioctl +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x3a2f86d0 sas_eh_device_reset_handler +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x43d89089 sas_bios_param +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x445a4d9b sas_phy_reset +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x4ee01773 sas_request_addr +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x508208e5 sas_target_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x51c36a15 sas_queuecommand +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x66373084 sas_target_destroy +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x772c2393 sas_free_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x8a483d82 sas_eh_abort_handler +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x92a42695 sas_ata_schedule_reset +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x95c5005d sas_slave_configure +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xa4973bbc sas_eh_bus_reset_handler +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xa96d2b92 sas_change_queue_depth +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xb0a2567f sas_domain_attach_transport +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xc184e85c sas_domain_release_transport +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xcb1645f1 sas_ssp_task_response +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xcefea217 sas_alloc_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xed299129 sas_task_abort +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xef4423a0 sas_get_local_phy +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x057cc073 iscsi_session_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x0cd67251 iscsi_block_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x0ef66006 iscsi_create_flashnode_sess +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x180c917f iscsi_is_session_online +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x1e31538d iscsi_destroy_iface +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x1f6662ac iscsi_free_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x2429f064 iscsi_destroy_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x2f6d638c iscsi_is_flashnode_conn_dev +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x301e614e iscsi_destroy_flashnode_sess +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x3273199f iscsi_unregister_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x35fc1916 iscsi_conn_login_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x362300a8 iscsi_ping_comp_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x3b304898 iscsi_create_iface +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x486f6e3d iscsi_get_port_speed_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x4a6064b8 iscsi_recv_pdu +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x4c90e3c9 iscsi_conn_error_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x4e250eec iscsi_find_flashnode_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x514cc545 iscsi_destroy_all_flashnode +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x549697da iscsi_destroy_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x574acc5e iscsi_create_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x594d73f9 iscsi_is_session_dev +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x5ad8b4c8 iscsi_get_port_state_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x5e59e846 iscsi_alloc_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x6075bdc7 iscsi_lookup_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x60f6fe63 iscsi_remove_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x68a5a686 iscsi_create_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x699fe53e iscsi_get_discovery_parent_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x6cb7901a iscsi_post_host_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x7c20d9a7 iscsi_offload_mesg +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x7c7a0068 iscsi_register_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x84a005f1 iscsi_get_router_state_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x8635ea7d iscsi_add_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xa18b3c30 iscsi_unblock_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xa63e87a4 iscsi_session_chkready +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xb9cafc74 iscsi_block_scsi_eh +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xbc071179 iscsi_get_ipaddress_state_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xc2308dc2 iscsi_flashnode_bus_match +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xc34a0c6e iscsi_host_for_each_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xe06d4c89 iscsi_create_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xe522b5c7 iscsi_scan_finished +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xe856f28c iscsi_destroy_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xef6dd715 iscsi_create_flashnode_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xfe5fd751 iscsi_find_flashnode_sess +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0x7de279d9 sas_tlr_supported +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0xa3b988b9 sas_is_tlr_enabled +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0xcde023f9 sas_disable_tlr +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0xdf7ab006 sas_enable_tlr +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_spi 0x0ef06974 spi_populate_ppr_msg +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_spi 0x882dc56a 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 0x0d91f07a srp_release_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x61afce57 srp_rport_add +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x65aa6e3d srp_rport_del +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x8219520f srp_stop_rport_timers +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0xdb72be81 srp_attach_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0xee891cc0 srp_tmo_valid +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0xfbb0184f srp_remove_host +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0x1102b92f ufshcd_init +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0x6792a2a5 ufshcd_dme_set_attr +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0xa475551a ufshcd_dme_get_attr +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0xe53aea64 ufshcd_remove +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x10984f83 spi_bitbang_stop +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x85c53852 spi_bitbang_cleanup +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0xc01e3a20 spi_bitbang_setup_transfer +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0xd1c05f66 spi_bitbang_start +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0xdc4ea6a2 spi_bitbang_setup +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0x606df05c dw_spi_remove_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0x646feef2 dw_spi_resume_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0xae22353c dw_spi_add_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0xe08b64d5 dw_spi_suspend_host +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x1e5b0134 spmi_command_shutdown +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x243830ca spmi_command_sleep +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x26f435e2 spmi_controller_remove +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x326bcc4a spmi_register_read +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x4169c464 spmi_device_remove +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x47eba3bf spmi_device_alloc +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x49c281ca spmi_ext_register_read +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x564053ab spmi_register_zero_write +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x5ef6548d spmi_register_write +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x6725960a spmi_command_wakeup +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x6fe810a1 spmi_ext_register_writel +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x9b477acb spmi_device_add +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xb45a52a4 spmi_ext_register_readl +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xdcf841a6 spmi_driver_register +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xddf56383 spmi_controller_add +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xe461fdff spmi_controller_alloc +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xea0999e9 spmi_command_reset +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xed1e32a5 spmi_ext_register_write +EXPORT_SYMBOL_GPL drivers/ssb/ssb 0xb858817a ssb_pmu_spuravoid_pllupdate +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x01c6adc4 comedi_readback_insn_read +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x03480270 comedi_alloc_subdev_readback +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x079b8380 comedi_check_chanlist +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x08b00f15 comedi_alloc_devpriv +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x0cd330f4 range_unknown +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x140a0c35 comedi_inc_scan_progress +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x21102f87 range_0_32mA +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x25c5898b comedi_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x282db68b comedi_handle_events +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x2f0ad9d3 range_bipolar5 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x2fb05bcd comedi_buf_write_alloc +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x3543f364 comedi_buf_read_samples +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x39c362dc comedi_buf_write_free +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x3d8f76b4 comedi_dio_insn_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x41eb7e48 comedi_dio_update_state +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x4236eaaf range_4_20mA +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x495c8535 comedi_set_hw_dev +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x4fe634f3 range_bipolar2_5 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x5d0d6a9d comedi_buf_read_alloc +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x667ef9ec comedi_alloc_subdevices +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x6a752f13 comedi_timeout +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x700cafe6 comedi_event +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x71a847e8 comedi_auto_unconfig +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x75b39fe1 comedi_dev_put +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x8113872c range_unipolar10 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x833286ef comedi_is_subdevice_running +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x8395b71a comedi_buf_read_free +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x89a2a9f3 comedi_request_region +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x902173cf comedi_auto_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xb1b957c3 comedi_buf_read_n_available +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xb5e9db15 comedi_set_spriv_auto_free +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 0xbe396118 comedi_bytes_per_scan +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xce88ed3c comedi_legacy_detach +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xd77958c0 __comedi_request_region +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xda8c7bae comedi_dev_get_from_minor +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xdb2044b2 range_unipolar5 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xe19dabc1 comedi_driver_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xe1e52fcf comedi_alloc_spriv +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xec2d7e6b comedi_buf_write_samples +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xee16b0f3 comedi_load_firmware +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xf92f555d comedi_nscans_left +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xfd088c6a comedi_nsamples_left +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0x0014fe41 comedi_pci_auto_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0x0e17a00f comedi_pci_auto_unconfig +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0x13dca611 comedi_pci_disable +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0x25660552 comedi_pci_detach +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0x38eac835 comedi_pci_driver_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0x915acd26 comedi_pci_enable +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0xbc3a6f21 comedi_pci_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0xd4e4bbb8 comedi_to_pci_dev +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0x0b1abfc3 comedi_usb_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0x3c6685de comedi_usb_driver_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0x65bb256f comedi_usb_auto_unconfig +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0x6732ed55 comedi_usb_auto_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0xa4ec09be comedi_to_usb_interface +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0xda81ebb4 comedi_to_usb_dev +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/addi_watchdog 0x01b312f6 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 0x2505f4ed amplc_dio200_common_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/amplc_dio200_common 0x8d2eb682 amplc_dio200_set_enhance +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/amplc_pc236_common 0x9a9e7779 amplc_pc236_common_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x07dfeefc comedi_8254_status +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x31795583 comedi_8254_set_mode +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x480a151c comedi_8254_cascade_ns_to_timer +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x5757bd9c comedi_8254_ns_to_timer +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x792b6c92 comedi_8254_subdevice_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0xa63ad304 comedi_8254_set_busy +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0xae3a1ee2 comedi_8254_read +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0xd08abde3 comedi_8254_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0xdafe2f33 comedi_8254_load +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0xde988bfa comedi_8254_pacer_enable +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0xe73ff15e comedi_8254_update_divisors +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0xf3a63603 comedi_8254_mm_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0xf98ddfc8 comedi_8254_write +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8255 0x1d5cab36 subdev_8255_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8255 0x97aa4e91 subdev_8255_regbase +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8255 0xe104a4ee subdev_8255_mm_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/das08 0x64295227 das08_common_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x0b9ecf34 mite_bytes_written_to_memory_lb +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x12bf8a5c mite_alloc +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x2ce15997 mite_dma_arm +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x2e262dea mite_free_ring +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x3ecbd47f mite_alloc_ring +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x505f1f3b mite_buf_change +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x509840bc mite_bytes_read_from_memory_lb +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x5e3782af mite_get_status +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x6536e985 mite_done +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x7826f785 mite_dma_disarm +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x7a99cabd mite_detach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x8006d39b mite_prep_dma +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x941c20c8 mite_dma_tcr +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x959a58f9 mite_release_channel +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x97af73e6 mite_bytes_written_to_memory_ub +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xb3ba3c31 mite_request_channel_in_range +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xb5d24137 mite_setup2 +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xcca9fc6e mite_bytes_read_from_memory_ub +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xcfe31e1d mite_bytes_in_transit +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xe838ecb4 mite_sync_output_dma +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xf2d5cee5 mite_sync_input_dma +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_common 0x0f75a77c labpc_common_detach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_common 0x2f3889a7 labpc_common_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x27a32982 ni_gpct_device_construct +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x4108ffbf ni_tio_set_gate_src +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x4473f353 ni_gpct_device_destroy +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x7e2083bc ni_tio_insn_read +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0xb9c6e7cd ni_tio_insn_write +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0xc6be27da ni_tio_arm +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0xca57abf4 ni_tio_insn_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0xf7f5d13d ni_tio_init_counter +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0x0e29c2ad ni_tio_handle_interrupt +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0x1084cc71 ni_tio_cancel +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0x32737281 ni_tio_cmdtest +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0xb3a0e1a0 ni_tio_cmd +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0xbf8cf703 ni_tio_acknowledge +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0xf6a18adc ni_tio_set_mite_channel +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x37c589fc comedi_dio_get_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x60013d3c comedi_close +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x6e0dba54 comedi_get_n_channels +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x806f6ca2 comedi_dio_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x909a2da5 comedi_dio_bitfield2 +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0xb32b04f1 comedi_open +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0xe39d6544 comedi_find_subdevice_by_type +EXPORT_SYMBOL_GPL drivers/staging/fsl-mc/bus/mc-bus-driver 0x00341a5d fsl_mc_device_add +EXPORT_SYMBOL_GPL drivers/staging/fsl-mc/bus/mc-bus-driver 0x09737969 fsl_mc_resource_allocate +EXPORT_SYMBOL_GPL drivers/staging/fsl-mc/bus/mc-bus-driver 0x3249eb2b fsl_mc_object_allocate +EXPORT_SYMBOL_GPL drivers/staging/fsl-mc/bus/mc-bus-driver 0x42cebc25 dprc_scan_container +EXPORT_SYMBOL_GPL drivers/staging/fsl-mc/bus/mc-bus-driver 0x5b5b56f9 fsl_mc_portal_allocate +EXPORT_SYMBOL_GPL drivers/staging/fsl-mc/bus/mc-bus-driver 0x673c7c2d dprc_scan_objects +EXPORT_SYMBOL_GPL drivers/staging/fsl-mc/bus/mc-bus-driver 0x6cb3dfda fsl_mc_portal_free +EXPORT_SYMBOL_GPL drivers/staging/fsl-mc/bus/mc-bus-driver 0x749f5ceb __fsl_mc_driver_register +EXPORT_SYMBOL_GPL drivers/staging/fsl-mc/bus/mc-bus-driver 0x89d3389d fsl_create_mc_io +EXPORT_SYMBOL_GPL drivers/staging/fsl-mc/bus/mc-bus-driver 0xab2c123a fsl_mc_portal_reset +EXPORT_SYMBOL_GPL drivers/staging/fsl-mc/bus/mc-bus-driver 0xb23af293 fsl_mc_resource_free +EXPORT_SYMBOL_GPL drivers/staging/fsl-mc/bus/mc-bus-driver 0xb5895f3b fsl_destroy_mc_io +EXPORT_SYMBOL_GPL drivers/staging/fsl-mc/bus/mc-bus-driver 0xbf954878 fsl_mc_bus_type +EXPORT_SYMBOL_GPL drivers/staging/fsl-mc/bus/mc-bus-driver 0xc5eafb9c fsl_mc_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/fsl-mc/bus/mc-bus-driver 0xd3f085bf fsl_mc_object_free +EXPORT_SYMBOL_GPL drivers/staging/fsl-mc/bus/mc-bus-driver 0xff2df38d fsl_mc_device_remove +EXPORT_SYMBOL_GPL drivers/staging/iio/addac/adt7316 0x8d511a3f adt7316_pm_ops +EXPORT_SYMBOL_GPL drivers/staging/lustre/lustre/obdclass/obdclass 0x2df4993b lustre_attr_store +EXPORT_SYMBOL_GPL drivers/staging/lustre/lustre/obdclass/obdclass 0x5dfee202 debugfs_lustre_root +EXPORT_SYMBOL_GPL drivers/staging/lustre/lustre/obdclass/obdclass 0x8f022caf lustre_sysfs_ops +EXPORT_SYMBOL_GPL drivers/staging/lustre/lustre/obdclass/obdclass 0xaeb4f9d1 lustre_attr_show +EXPORT_SYMBOL_GPL drivers/staging/lustre/lustre/obdclass/obdclass 0xd1462c14 lustre_kobj +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x05c03015 spk_var_store +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x0e81c76d spk_serial_out +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x14f06fe7 spk_serial_in_nowait +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x1b8405aa speakup_info +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x269f55c0 spk_synth_flush +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 0x475e158a synth_request_region +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x4e7a553d spk_synth_immediate +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x56355aa9 speakup_event +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x57a7d443 synth_remove +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x6cebdc47 synth_add +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x7b19e581 spk_serial_synth_probe +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x8e146195 synth_release_region +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x9a888082 synth_buffer_getc +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xb44029e5 spk_synth_is_alive_restart +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xb48956f8 synth_buffer_peek +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xbbd15a51 speakup_start_ttys +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xc766ae09 synth_printf +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xd0c4cdfa spk_do_catch_up +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xd1b551a2 spk_get_var +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xe24d3ae7 spk_var_show +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xe7cd4558 spk_serial_release +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xe7e810f8 spk_serial_in +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xea230bb2 spk_synth_is_alive_nop +EXPORT_SYMBOL_GPL drivers/tty/n_tracesink 0x585ebaac n_tracesink_datadrain +EXPORT_SYMBOL_GPL drivers/uio/uio 0xa661cd06 __uio_register_device +EXPORT_SYMBOL_GPL drivers/uio/uio 0xabc56ed0 uio_event_notify +EXPORT_SYMBOL_GPL drivers/uio/uio 0xca1cf15a uio_unregister_device +EXPORT_SYMBOL_GPL drivers/usb/atm/usbatm 0x456204a8 usbatm_usb_probe +EXPORT_SYMBOL_GPL drivers/usb/atm/usbatm 0xa889bd6d usbatm_usb_disconnect +EXPORT_SYMBOL_GPL drivers/usb/chipidea/ci_hdrc 0x774ac614 ci_hdrc_add_device +EXPORT_SYMBOL_GPL drivers/usb/chipidea/ci_hdrc 0x7e9cbef8 ci_hdrc_remove_device +EXPORT_SYMBOL_GPL drivers/usb/chipidea/usbmisc_imx 0x191a7418 imx_usbmisc_init_post +EXPORT_SYMBOL_GPL drivers/usb/chipidea/usbmisc_imx 0x4efa7b56 imx_usbmisc_init +EXPORT_SYMBOL_GPL drivers/usb/chipidea/usbmisc_imx 0xc34891ba imx_usbmisc_set_wakeup +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0x1cf7d8de ulpi_write +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0x38c69f9f ulpi_register_interface +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0xa3860c2b ulpi_unregister_interface +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0xdeed4684 ulpi_register_driver +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0xe5d98638 ulpi_unregister_driver +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0xed64f780 ulpi_read +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x2ad2d8df gether_set_host_addr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x49092c80 gether_set_qmult +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x4c36f057 gether_disconnect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x5dcb4dfc gether_get_host_addr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x5f0bc499 gether_register_netdev +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x6a632ff4 gether_get_ifname +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x6e035cb0 gether_get_qmult +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x8878cfa6 gether_cleanup +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xa34038da gether_set_gadget +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xb4f7e665 gether_setup_name +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xc3ab3685 gether_connect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xc6aba21a gether_get_host_addr_cdc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xc9d0db27 gether_set_dev_addr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xdd832e7d gether_get_host_addr_u8 +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xebb9724e gether_setup_name_default +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xeeafafe5 gether_get_dev_addr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0x33bfdca2 gserial_alloc_line +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0x82f658ff gserial_disconnect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0x89263781 gs_free_req +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0xb6652875 gserial_free_line +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0xd05400e8 gserial_connect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0xf9e5ceeb gs_alloc_req +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_fs 0x81f7a43d ffs_single_dev +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_fs 0x85132363 ffs_lock +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_fs 0xaef7dbaa ffs_name_dev +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x05f5ef27 fsg_store_nofua +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x0a5230df fsg_common_set_nluns +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 0x1561056b fsg_store_cdrom +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 0x1b1cc3af store_cdrom_address +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 0x1e022341 fsg_store_file +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 0x2d10b6a7 fsg_common_create_lun +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x368e70eb fsg_lun_close +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 0x40586030 fsg_common_remove_lun +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x40f57bb1 fsg_show_file +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 0x51707c29 fsg_common_run_thread +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 0x5a39e952 fsg_lun_fsync_sub +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x5b50caab fsg_show_ro +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 0x90c4ffce fsg_lun_open +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 0x963be1be fsg_show_nofua +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x99023bfc fsg_common_put +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 0x9d1b8897 fsg_store_removable +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x9dc025a5 fsg_common_free_luns +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xa46e6443 fsg_common_get +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 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 0xbab4d607 fsg_show_cdrom +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xd3ae3b65 fsg_common_create_luns +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xd468f882 fsg_common_set_ops +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xdc183e06 fsg_store_ro +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xe4d1591e fsg_config_from_params +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xebbf2cff fsg_common_set_cdev +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 0xf4fed121 fsg_show_removable +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x010f69c3 rndis_add_hdr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x0eaed1ea rndis_rm_hdr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x1ba72e95 rndis_get_next_response +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x2497ec3f rndis_set_param_vendor +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x2a386d53 rndis_borrow_net +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x3e033dea rndis_set_host_mac +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x4eda830d rndis_msg_parser +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x528b9a69 rndis_set_param_dev +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x643e0eb1 rndis_signal_connect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x64f5e981 rndis_uninit +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xa5e4c8b7 rndis_set_param_medium +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xa63083b0 rndis_free_response +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xad5b2ef4 rndis_signal_disconnect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xf60907fd rndis_deregister +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xf7a70a85 rndis_register +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x035653fc usb_composite_setup_continue +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x03a80676 usb_add_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x0501ebc0 usb_get_function_instance +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x08f5d0a5 usb_put_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x1a54bfdd usb_composite_overwrite_options +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x1f2ff010 config_ep_by_speed +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x2e09263f usb_copy_descriptors +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x2eb2701a usb_add_config_only +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x386572d5 usb_gstrings_attach +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x395183d4 usb_put_function_instance +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x50dcc6e2 unregister_gadget_item +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x648bdd7a usb_ep_autoconfig_reset +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x72054c28 usb_function_activate +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x8e52ba6a usb_function_register +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x94d7075a usb_gadget_get_string +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x96a499d7 usb_free_all_descriptors +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xa073382d alloc_ep_req +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xa0749e07 usb_get_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xa29c4305 usb_interface_id +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xa3e0aa50 usb_string_id +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xa668775d usb_string_ids_tab +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xaa3541c0 usb_add_config +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xb73e2ab7 usb_string_ids_n +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xc972d4f1 usb_assign_descriptors +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xd20af965 usb_composite_unregister +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xd2ea2134 usb_descriptor_fillbuf +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xd8fbba5a usb_ep_autoconfig +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xee124ef3 usb_composite_probe +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xf0472a32 usb_remove_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xf06944b5 usb_function_deactivate +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xf474a207 usb_gadget_config_buf +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xf6432b7b usb_function_unregister +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xfb7619d9 usb_ep_autoconfig_ss +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x19c1a30b usb_gadget_unregister_driver +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x352cf494 usb_gadget_giveback_request +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x4d3750ec usb_add_gadget_udc +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x7df7de83 usb_del_gadget_udc +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0xb112af2a usb_gadget_unmap_request +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0xbe456170 usb_udc_attach_driver +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0xc13c8e92 usb_gadget_udc_reset +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0xcd5069af usb_gadget_probe_driver +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0xd1bbb003 usb_add_gadget_udc_release +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0xf36df888 usb_gadget_map_request +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0xfae373e8 usb_udc_vbus_handler +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0xfc7958f8 usb_gadget_set_state +EXPORT_SYMBOL_GPL drivers/usb/misc/ezusb 0xa225a21b ezusb_fx1_ihex_firmware_download +EXPORT_SYMBOL_GPL drivers/usb/misc/ezusb 0xb3b9c5a2 ezusb_fx1_set_reset +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x03c6faa3 usb_ftdi_elan_edset_flush +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x36771358 usb_ftdi_elan_edset_single +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x47aedc9e usb_ftdi_elan_write_pcimem +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x539dd94b usb_ftdi_elan_edset_empty +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x6610364b usb_ftdi_elan_edset_output +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x93ffb5dd usb_ftdi_elan_edset_setup +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xbe802e89 usb_ftdi_elan_read_pcimem +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xc3873880 usb_ftdi_elan_edset_input +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xf899bb18 ftdi_elan_gone_away +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0x0892ae1a musb_writew +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0x56d31820 musb_writel +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0x72234dd6 musb_readw +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0x96919667 musb_readl +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0xac5f3d70 musb_readb +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0xb4bbabb5 musb_interrupt +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0xcb32cb36 musb_writeb +EXPORT_SYMBOL_GPL drivers/usb/phy/phy-isp1301 0x10b34b2f isp1301_get_client +EXPORT_SYMBOL_GPL drivers/usb/serial/usb_wwan 0x5c3f7b2d usb_wwan_port_probe +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x00787d81 usb_serial_generic_close +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x0309b364 usb_serial_register_drivers +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x09bb9a7e usb_serial_generic_unthrottle +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x0eb550c6 usb_serial_generic_write_bulk_callback +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x1d4d5260 usb_serial_generic_wait_until_sent +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x1e375f84 usb_serial_handle_dcd_change +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x1f9f657c usb_serial_generic_write +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x30091095 usb_serial_generic_write_start +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x3249cf3c usb_serial_generic_submit_read_urbs +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x3253cd80 usb_serial_generic_read_bulk_callback +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x4ff57a36 usb_serial_generic_chars_in_buffer +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x536c6fbe usb_serial_generic_throttle +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x59cecb39 usb_serial_port_softint +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x5bccef78 usb_serial_handle_sysrq_char +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x5fe9e996 usb_serial_handle_break +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x8f7f0301 usb_serial_generic_tiocmiwait +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x907e25d5 usb_serial_generic_resume +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x94cfb064 usb_serial_generic_process_read_urb +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x98ee9a81 usb_serial_deregister_drivers +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xbff2f683 usb_serial_generic_open +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xd53c41ad usb_serial_generic_get_icount +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x14c45a04 usb_stor_bulk_srb +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x16dc8575 usb_stor_CB_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x1bc3edc2 usb_stor_sense_invalidCDB +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x1e52e0ee usb_stor_host_template_init +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x2768fef3 usb_stor_pre_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x2bd4f36b usb_stor_resume +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x2e6f6686 usb_stor_control_msg +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x3288deec usb_stor_transparent_scsi_command +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x4f3f5328 usb_stor_bulk_transfer_buf +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x55396642 usb_stor_probe2 +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x61fe4dd0 usb_stor_suspend +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x68749664 usb_stor_disconnect +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x6cf610fa usb_stor_reset_resume +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x858fbfa2 usb_stor_Bulk_transport +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x8c1355db usb_stor_post_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x8f366431 usb_stor_adjust_quirks +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x91f5492f fill_inquiry_response +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x9714e886 usb_stor_bulk_transfer_sg +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xb4f7b64e usb_stor_clear_halt +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xdf8e4f47 usb_stor_CB_transport +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xe82b502c usb_stor_set_xfer_buf +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xec996124 usb_stor_access_xfer_buf +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xf1549304 usb_stor_Bulk_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xfa283154 usb_stor_ctrl_transfer +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xfc7191d1 usb_stor_probe1 +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x03908c1a usbip_pack_pdu +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x36509e29 usbip_recv +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x5444c157 usbip_stop_eh +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x5444e2f4 usbip_recv_xbuff +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x78b72f44 usbip_debug_flag +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x80c266fd usbip_alloc_iso_desc_pdu +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x8174b179 dev_attr_usbip_debug +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x9f3329bc usbip_event_add +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xcc98c52d usbip_event_happened +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xcfbc6bb5 usbip_dump_urb +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/usb/usbip/usbip-core 0xed42072d usbip_recv_iso +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xf01874c3 usbip_start_eh +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xf197751c usbip_pad_iso +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x0bd816f0 wa_process_errored_transfers_run +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x122f15ac wa_urb_enqueue_run +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x1e59a7ca rpipe_ep_disable +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x33dfa6fe wa_urb_dequeue +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x43927b7e wa_urb_enqueue +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x48eb49af wa_create +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x7307f9e9 __wa_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x7b357fbe rpipe_clear_feature_stalled +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xbe224bc0 wa_dti_start +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xcb55ad58 rpipe_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x0bb6bf5e wusb_cluster_id_get +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x2b357f68 wusbhc_mmcie_set +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x49b61c25 wusbhc_rh_control +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x6ec26b53 wusbhc_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x7f0b7631 wusb_dev_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x7fa02d00 wusbhc_giveback_urb +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x9f694840 wusbhc_create +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xb725d128 wusb_cluster_id_put +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xc5e8969a wusbhc_rh_start_port_reset +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xcc0a9b26 wusbhc_handle_dn +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xda940fe9 wusbhc_reset_all +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xdba66f7c wusbhc_b_create +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xe85e7f56 wusbhc_chid_set +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xeb4e296b wusbhc_b_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xf770a6b4 wusbd +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xf7741136 wusbhc_rh_status_data +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xf7dfd7a5 wusbhc_mmcie_rm +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xfe2e17d7 wusb_et_name +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xff4ccf67 __wusb_dev_get_by_usb_dev +EXPORT_SYMBOL_GPL drivers/uwb/i1480/dfu/i1480-dfu-usb 0x0b4b3f92 i1480_cmd +EXPORT_SYMBOL_GPL drivers/uwb/i1480/dfu/i1480-dfu-usb 0x670de1f2 i1480_fw_upload +EXPORT_SYMBOL_GPL drivers/uwb/i1480/dfu/i1480-dfu-usb 0xa526f83d i1480_rceb_check +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x088962c3 umc_controller_reset +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x492ec887 umc_device_create +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x55e9f603 umc_device_unregister +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x5c8a4833 umc_driver_unregister +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x76b9e4b6 umc_match_pci_id +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x78502a9a umc_device_register +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x80ccee63 umc_bus_type +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x9c1e0c6b __umc_driver_register +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x03541560 uwb_rc_mac_addr_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x07d93827 uwb_radio_start +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x0d78016e __uwb_addr_print +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x0fc02440 uwb_est_unregister +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x165acdab uwb_rc_add +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x19e09a5c uwb_rsv_get_usable_mas +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x26271b0a uwb_rsv_accept +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x2e6421da uwb_dev_for_each +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x3712da62 uwb_pal_register +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x428f4d70 uwb_rsv_terminate +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x4457b816 uwb_rc_ie_add +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x4582a64c uwb_rc_alloc +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x4a14ab8c uwb_rc_cmd +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x4d57ae3c uwb_rsv_type_str +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x5755520b uwb_rc_put +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x5ce5a44f uwb_rc_pre_reset +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x61668bbb uwb_rc_neh_error +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x629bd673 uwb_pal_init +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x74b484e3 uwb_rc_reset_all +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x76c0a805 uwb_rc_get_by_dev +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x81243f04 __uwb_rc_try_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x816b9e92 uwb_est_register +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x8fec1e9e uwb_rc_ie_rm +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x94ec1334 uwb_rc_init +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x96c2d751 uwb_rc_vcmd +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x98413234 uwb_rsv_state_str +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x98b08b9e uwb_notifs_deregister +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xa413be8c uwb_rc_dev_addr_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xac97316b uwb_ie_next +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xae4187cf uwb_rc_neh_grok +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xb24393c4 uwb_rc_get_by_grandpa +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xb56eb005 uwb_dev_try_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xb797a1d0 uwb_rsv_establish +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xbc7d9e24 uwb_notifs_register +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xc258610f uwb_rsv_create +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xc3472762 uwb_est_find_size +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xc9cfd26f uwb_rc_post_reset +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xccacb693 uwb_rc_rm +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xd1f7cdf3 uwb_radio_stop +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xd52546cd uwb_rsv_modify +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xdb0e5a3c uwb_pal_unregister +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xf2ba6573 uwb_rc_cmd_async +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xf413b0b0 uwb_rsv_destroy +EXPORT_SYMBOL_GPL drivers/uwb/whci 0xe526cb56 whci_wait_for +EXPORT_SYMBOL_GPL drivers/vfio/platform/reset/vfio-platform-calxedaxgmac 0x6036e6e1 vfio_platform_calxedaxgmac_reset +EXPORT_SYMBOL_GPL drivers/vfio/platform/vfio-platform 0x3bf3a2c9 vfio_platform_probe_common +EXPORT_SYMBOL_GPL drivers/vfio/platform/vfio-platform 0x54f92134 vfio_platform_remove_common +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x23133e1d vfio_group_get_external_user +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x2db38141 vfio_add_group_dev +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x3567743b vfio_external_user_iommu_id +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x66241436 vfio_register_iommu_driver +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x7ab9a4ea vfio_del_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 0xb0a85c42 vfio_device_get_from_dev +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0xb3c43a48 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_virqfd 0x47edf289 vfio_virqfd_disable +EXPORT_SYMBOL_GPL drivers/vfio/vfio_virqfd 0x6c08ca7d vfio_virqfd_enable +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x09464d2e vhost_dev_has_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x0e9d0bd8 vhost_poll_start +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x1e52f6f9 vhost_work_init +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x21eca489 vhost_vq_access_ok +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x269f7a09 vhost_dev_reset_owner_prepare +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x26fb66c3 vhost_poll_queue +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x2df2f186 vhost_add_used_n +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x33cbe79b vhost_dev_cleanup +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x37d82039 vhost_signal +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x38e2a9fd vhost_init_used +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x4ed2fb65 vhost_disable_notify +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x53fb06e1 vhost_dev_set_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x55f4e60e vhost_dev_stop +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x5da0b1a1 vhost_poll_init +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x6547a8c5 vhost_work_queue +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x6ae1f8d8 vhost_dev_check_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x8ca466cd vhost_add_used_and_signal +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x9bfa809f vhost_get_vq_desc +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xa3b86d3b vhost_poll_stop +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xae4e2c09 vhost_log_write +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xaf214bc0 vhost_enable_notify +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xbadf1aa3 vhost_dev_init +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xc0fd34ce vhost_add_used +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xc1cc1277 vhost_vring_ioctl +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xe444fe0a vhost_poll_flush +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xe81721f9 vhost_log_access_ok +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xe9737be5 vhost_dev_ioctl +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xeef77c93 vhost_add_used_and_signal_n +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xf2ab3126 vhost_work_flush +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xf5e8b913 vhost_discard_vq_desc +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xf5ee896f vhost_dev_reset_owner +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x2b743fa1 ili9320_remove +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x3f3daf73 ili9320_shutdown +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x4e7244bd ili9320_probe_spi +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0xa584f970 ili9320_write_regs +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0xb35b2910 ili9320_write +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0xc6a3a49a ili9320_resume +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0xebceaea5 ili9320_suspend +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x2391f00d auok190x_send_cmdargs_nowait +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x50f8d369 auok190x_send_command_nowait +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x5620d6aa auok190x_read_cmdargs +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x6f09d11a auok190x_pm +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x82f5aeaa auok190x_send_cmdargs_pixels_nowait +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x84606d11 auok190x_send_command +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x9b222c33 auok190x_common_probe +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0xbf783189 auok190x_send_cmdargs_pixels +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0xc1a4d6dd auok190x_common_remove +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0xe4204fc4 auok190x_send_cmdargs +EXPORT_SYMBOL_GPL drivers/video/fbdev/core/fb_ddc 0x83c148ae fb_ddc_read +EXPORT_SYMBOL_GPL drivers/video/fbdev/core/fb_sys_fops 0x34afaf66 fb_sys_read +EXPORT_SYMBOL_GPL drivers/video/fbdev/core/fb_sys_fops 0x89a667f1 fb_sys_write +EXPORT_SYMBOL_GPL drivers/video/fbdev/sis/sisfb 0xbc9e03bd sis_malloc_new +EXPORT_SYMBOL_GPL drivers/video/fbdev/sis/sisfb 0xd600e72b sis_free_new +EXPORT_SYMBOL_GPL drivers/w1/wire 0x15922aec w1_reset_bus +EXPORT_SYMBOL_GPL drivers/w1/wire 0x4239c80f w1_read_block +EXPORT_SYMBOL_GPL drivers/w1/wire 0x5d85373a w1_next_pullup +EXPORT_SYMBOL_GPL drivers/w1/wire 0x6a47572c w1_write_block +EXPORT_SYMBOL_GPL drivers/w1/wire 0x76e3d0fd w1_touch_block +EXPORT_SYMBOL_GPL drivers/w1/wire 0x7c2f2afb w1_calc_crc8 +EXPORT_SYMBOL_GPL drivers/w1/wire 0xbc5771bc w1_write_8 +EXPORT_SYMBOL_GPL drivers/w1/wire 0xc5f34cc5 w1_reset_resume_command +EXPORT_SYMBOL_GPL drivers/w1/wire 0xde720f9c w1_read_8 +EXPORT_SYMBOL_GPL drivers/w1/wire 0xfe91a6c9 w1_reset_select_slave +EXPORT_SYMBOL_GPL drivers/xen/xen-privcmd 0xc4bd8c4c xen_privcmd_fops +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x31480a52 dlm_posix_unlock +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x9321df95 dlm_lock +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xb595dcb1 dlm_posix_lock +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xc007d48a dlm_posix_get +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xc6dc8c2f dlm_new_lockspace +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xcf9f3328 dlm_release_lockspace +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xdc583c08 dlm_unlock +EXPORT_SYMBOL_GPL fs/fscache/fscache 0x092cf98e fscache_object_sleep_till_congested +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x16c86d61 lockd_up +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x3a9f261f nlmclnt_init +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x51f887ee nlmsvc_ops +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x656b667f nlmsvc_unlock_all_by_sb +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x77e35ccc nlmsvc_unlock_all_by_ip +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x86af1670 lockd_down +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x8e4bbf75 nlmclnt_proc +EXPORT_SYMBOL_GPL fs/lockd/lockd 0xdb2fbf0f nlmclnt_done +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x014a6715 nfs_force_lookup_revalidate +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x03602978 nfs_commitdata_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x044061be nfs_zap_acl_cache +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x05c5316a nfs_path +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x09758958 nfs_wb_all +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x097e45c1 nfs_init_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0a533f3b nfs_statfs +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0b092888 put_nfs_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0b0e3c2f nfs4_label_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0d6d9aad nfs_file_write +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0dd2208d nfs_put_lock_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0ddd5601 nfs_server_remove_lists +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0e33163a nfs_show_path +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0fee82a3 nfs_pgio_header_free +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x136ed2a0 nfs_access_add_cache +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x14a9dd66 nfs_flock +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x163f02bd get_nfs_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1c66fe56 nfs_server_copy_userdata +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1f980911 nfs_invalidate_atime +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2083b659 nfs_free_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x20f9a2b0 nfs_post_op_update_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x21d2faa3 nfs_rmdir +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x21dee504 nfs_getattr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x24033b5e nfs_server_insert_lists +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2496bf3b nfs_setattr_update_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x26884ff7 nfs_alloc_fhandle +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x27c35eaf nfs_pageio_init_write +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x29a2c0f9 nfs_file_splice_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3037be6a nfs_file_flush +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x306ca6de nfs_mkdir +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x30906075 nfs_fs_mount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3251cacf nfs_unlink +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x32a5a114 nfs_fscache_open_file +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x36d2380d nfs_create +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x38346cc3 nfs_write_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3872d07b nfs_alloc_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x39e05ac3 nfs_idmap_cache_timeout +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3c68949a nfs_permission +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3ca31f35 nfs_net_id +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3e6dff81 nfs_umount_begin +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3f2690f2 nfs_check_flags +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x408d9cbe nfs_free_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x42f2c81f nfs4_client_id_uniquifier +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x44662c4e nfs_init_server_rpcclient +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4725e30f nfs_sops +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x481e8440 nfs_access_set_mask +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4c301bff nfs_request_add_commit_list +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4cb9e001 recover_lost_locks +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4de192d1 nfs_generic_pgio +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4e4b3b1b nfs_pgio_current_mirror +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x51892d61 nfs_callback_set_tcpport +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x55a4880c nfs_writeback_update_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x57a72e62 nfs_do_submount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x584b8482 nfs_inc_attr_generation_counter +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5a671d0c nfs_dentry_operations +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5ad4388d nfs_wait_client_init_complete +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5b2c9421 nfs_fs_mount_common +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5d392ca7 nfs_file_release +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5e1d863a nfs_sockaddr_match_ipaddr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6246dcd7 nfs_revalidate_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x63c078d3 nfs_file_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x64e94602 nfs_create_rpc_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x659a3985 nfs_pageio_reset_read_mds +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x65b92044 nfs_clear_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6a7b9409 nfs_clone_sb_security +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6c0a992e nfs_pageio_resend +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7002f37f nfs_probe_fsinfo +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7116e99d nfs_commitdata_release +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x78005e3c nfs_initiate_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7b225e7e nfs_sb_deactive +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7b85de37 nfs_post_op_update_inode_force_wcc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7c9500c1 nfs_request_add_commit_list_locked +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7c9722ba nfs_dreq_bytes_left +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7fbe4c1b nfs_pageio_init_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x838cde52 nfs_fill_super +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x84240166 nfs_mknod +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8567e124 nfs_get_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x85d30221 nfs_file_fsync_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8cf6ea61 nfs_symlink +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 0x94d64685 __tracepoint_nfs_fsync_exit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x98c16898 nfs_file_set_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x99e5c2bd nfs_may_open +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9df13979 nfs_link +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9e3f987c nfs_atomic_open +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa33126fd nfs_alloc_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa6c865ee nfs_wait_bit_killable +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa8860fa3 nfs_commit_free +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa8d2d1ce nfs_callback_tcpport +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa8e9e1ae send_implementation_id +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa9f95cc4 nfs_sb_active +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xac90755d __tracepoint_nfs_fsync_enter +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xad0d190b nfs_try_mount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xaf6fcebd nfs_instantiate +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb48944cc nfs_get_lock_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb51b131c nfs4_fs_type +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb5905021 nfs_put_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb606e716 nfs_fattr_init +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb6a65bcc nfs_pageio_init +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb715ff86 nfs_lookup +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbaea53f9 register_nfs_version +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbb432bb5 nfs_access_zap_cache +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbedd5fd2 nfs4_dentry_operations +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbf1a018b nfs_setsecurity +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbf23d2fc nfs_fs_type +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbfc7ff64 nfs_request_remove_commit_list +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc27a339c nfs_pgio_data_destroy +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc36f8ca6 nfs_generic_pg_test +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc4f8364b nfs_sync_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc4ff1e9f nfs_auth_info_match +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc5ef47d5 nfs_init_timeout_values +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc738349c nfs_retry_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc92b3c7e nfs_show_stats +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc9967c37 nfs_clone_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xca2b3e50 unregister_nfs_version +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xce88ef9d nfs_init_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd2513081 _nfs_display_fhandle_hash +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd2bedbe8 alloc_nfs_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd2e50ac1 nfs_inode_attach_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd4b08e14 nfs_show_devname +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd59cc278 nfs_close_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd8d83598 nfs_setattr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd9761aee nfs_show_options +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xda85ace3 nfs_set_sb_security +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdae9b5d7 nfs4_disable_idmapping +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe00b2838 nfs_fhget +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe07f93fa nfs_file_operations +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe238d98f nfs_alloc_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe2771019 nfs_file_llseek +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe5da81e4 nfs_init_cinfo +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe90c15b0 nfs_submount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe92c510d nfs_direct_set_resched_writes +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe9f261b0 nfs_rename +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xeb686c9f nfs_pgheader_init +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xefb71d17 nfs_lock +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf01e1c05 nfs_create_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf0a13875 nfs_remount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf1a5be9b nfs_mark_client_ready +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf2ac24e8 nfs_initiate_pgio +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf5a1c57d nfs_refresh_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf6e731da nfs_pgio_header_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf8427640 nfs_file_mmap +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf9061b18 nfs_drop_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfb7ee006 nfs_alloc_fattr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfc619abd _nfs_display_fhandle +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfcda4297 nfs_destroy_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfda65a28 nfs_pageio_reset_write_mds +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xff5065e1 nfs_kill_super +EXPORT_SYMBOL_GPL fs/nfs/nfsv3 0x6258cf02 nfs3_set_ds_client +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x066aff96 nfs4_schedule_session_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x06c36816 __tracepoint_nfs4_pnfs_write +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x0f16db41 pnfs_update_layout +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x1149e8b4 pnfs_generic_pg_init_write +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x1375b11b pnfs_read_resend_pnfs +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x16ad1e7b nfs4_test_deviceid_unavailable +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x170f3ed6 nfs41_maxgetdevinfo_overhead +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x1c0e0ab0 pnfs_unregister_layoutdriver +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x1ea1c6aa pnfs_generic_commit_pagelist +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x1f9f1463 pnfs_put_lseg +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x22d6ad02 pnfs_generic_write_commit_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x271b8764 pnfs_destroy_layout +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x27684eb0 pnfs_report_layoutstat +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x371cc3d5 nfs4_put_deviceid_node +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x3dfe6fe3 __tracepoint_nfs4_pnfs_read +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x471de0a9 __tracepoint_nfs4_pnfs_commit_ds +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x57e5d4f5 nfs4_sequence_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x5ea27056 nfs4_delete_deviceid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x607c3c41 pnfs_layoutcommit_inode +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x6085edbd nfs_map_string_to_numeric +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x69d3558d pnfs_generic_rw_release +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x6a396edd pnfs_set_layoutcommit +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x6a9b32db nfs40_setup_sequence +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x6cd4a339 pnfs_put_lseg_locked +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x6db30b00 nfs4_find_or_create_ds_client +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x6e2de02c nfs4_schedule_lease_moved_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x6f807d9b nfs4_set_ds_client +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x733797de nfs41_setup_sequence +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x766b1d99 pnfs_ld_write_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x7961ef3e _pnfs_return_layout +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x7c5fef0e nfs4_schedule_lease_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x83ae6aaa nfs4_pnfs_v3_ds_connect_unload +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x8737e9a2 nfs4_pnfs_ds_put +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x8bab3c49 pnfs_generic_pg_test +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x8cea173e pnfs_register_layoutdriver +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x9538a158 nfs4_find_get_deviceid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x95912c16 nfs4_schedule_stateid_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x9f397afc pnfs_layout_mark_request_commit +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x9f606422 pnfs_generic_recover_commit_reqs +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x9f8902e7 pnfs_generic_sync +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xa37c6538 pnfs_generic_clear_request_commit +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xa8a95074 nfs41_sequence_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xabdcbdfe pnfs_generic_pg_init_read +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xafacfa42 nfs4_init_ds_session +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xb149c106 nfs4_schedule_migration_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xb3b98648 pnfs_generic_pg_cleanup +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xb48a6a01 nfs_remove_bad_delegation +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xb4ea8501 nfs4_pnfs_ds_connect +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xb88de090 pnfs_set_lo_fail +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xb9c435dc nfs4_set_rw_stateid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xba8194d8 pnfs_generic_scan_commit_lists +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xc0c76b40 pnfs_error_mark_layout_for_return +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xc6861b7a pnfs_generic_prepare_to_resend_writes +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xc7feae86 pnfs_nfs_generic_sync +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xcbf770c7 nfs4_pnfs_ds_add +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xd68e7517 nfs4_decode_mp_ds_addr +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xd9c9d6a2 pnfs_write_done_resend_to_mds +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xe1e15fc8 nfs4_init_deviceid_node +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xe338420f nfs4_proc_getdeviceinfo +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xea6e4586 nfs4_mark_deviceid_unavailable +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xed15fb41 nfs4_print_deviceid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xed825aa0 pnfs_generic_pg_readpages +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xf7601826 pnfs_generic_pg_writepages +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xf999267e pnfs_generic_commit_release +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xfaf4ce95 pnfs_ld_read_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xfb604dba pnfs_read_done_resend_to_mds +EXPORT_SYMBOL_GPL fs/nfs_common/grace 0x17ce645d locks_end_grace +EXPORT_SYMBOL_GPL fs/nfs_common/grace 0x8a338054 locks_in_grace +EXPORT_SYMBOL_GPL fs/nfs_common/grace 0xfa7c8584 locks_start_grace +EXPORT_SYMBOL_GPL fs/nfs_common/nfs_acl 0x3c14747c nfsacl_decode +EXPORT_SYMBOL_GPL fs/nfs_common/nfs_acl 0xbbd127cf nfsacl_encode +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x11736b03 __mlog_printk +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x1b89c6ee o2hb_fill_node_map +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x1d747ce3 o2hb_check_node_heartbeating +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x2090a91d o2hb_setup_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x36418553 o2net_send_message +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x36a28a9e o2net_send_message_vec +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x3ce08866 o2nm_node_get +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x4900035b o2hb_stop_all_regions +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x5269bf69 o2hb_register_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x81a17396 mlog_and_bits +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x901f6a71 o2hb_unregister_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xa1ae48e1 o2hb_check_node_heartbeating_no_sem +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xa6dfd700 o2nm_node_put +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xa82a8645 o2nm_this_node +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xa87bc9e7 o2nm_configured_node_map +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xae808bac o2net_register_handler +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xafc18dcc o2nm_get_node_by_ip +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xbaeb4700 o2hb_check_node_heartbeating_from_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xc3679d7b o2hb_get_all_regions +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xd60f2c6c o2hb_check_local_node_heartbeating +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xd859ac8c o2net_fill_node_map +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xed36d140 o2nm_get_node_by_num +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/dlm/ocfs2_dlm 0x6643a5fe dlmunlock +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x744a9dff dlm_unregister_domain +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x7a1211f8 dlm_setup_eviction_cb +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xb9254a68 dlm_register_domain +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xd7ba575e dlm_errmsg +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xd8190461 dlm_print_one_lock +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xd8fa57a6 dlm_unregister_eviction_cb +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xe8ed8bf8 dlm_register_eviction_cb +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xfb86b96f dlm_errname +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xff51a620 dlmlock +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x20318037 ocfs2_plock +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x269d63fd ocfs2_cluster_disconnect +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x316904e1 ocfs2_dlm_unlock +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x3bcef5f3 ocfs2_dlm_lock_status +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x40718c92 ocfs2_dlm_lock +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x4226705d ocfs2_dlm_dump_lksb +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x424241c9 ocfs2_dlm_lvb +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x4d3af7fa ocfs2_cluster_hangup +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x515cf6e0 ocfs2_stack_glue_register +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x60f4bcef ocfs2_dlm_lvb_valid +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x9ccafa05 ocfs2_cluster_this_node +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xa06fbc10 ocfs2_cluster_connect_agnostic +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xaa54f6ec ocfs2_stack_glue_unregister +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xbbc4ef97 ocfs2_stack_supports_plocks +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xbf9068ab ocfs2_cluster_connect +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xe40cffce ocfs2_stack_glue_set_max_proto_version +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 0x4c7529bd torture_shutdown_absorb +EXPORT_SYMBOL_GPL kernel/torture 0x4d84b204 _torture_stop_kthread +EXPORT_SYMBOL_GPL kernel/torture 0x51e9c3c5 _torture_create_kthread +EXPORT_SYMBOL_GPL kernel/torture 0x52665f8b torture_random +EXPORT_SYMBOL_GPL kernel/torture 0x5346b23b torture_shuffle_cleanup +EXPORT_SYMBOL_GPL kernel/torture 0x6364b2f0 stutter_wait +EXPORT_SYMBOL_GPL kernel/torture 0x679d9e50 torture_must_stop +EXPORT_SYMBOL_GPL kernel/torture 0x688e6a64 torture_cleanup_end +EXPORT_SYMBOL_GPL kernel/torture 0x6bdeda8f torture_onoff_init +EXPORT_SYMBOL_GPL kernel/torture 0x8b0e1d2f torture_shuffle_init +EXPORT_SYMBOL_GPL kernel/torture 0xa6de4ae8 torture_shuffle_task_register +EXPORT_SYMBOL_GPL kernel/torture 0xc1361afc torture_onoff_cleanup +EXPORT_SYMBOL_GPL kernel/torture 0xc6527045 torture_init_begin +EXPORT_SYMBOL_GPL kernel/torture 0xc67a49d4 torture_cleanup_begin +EXPORT_SYMBOL_GPL kernel/torture 0xdbc5277a torture_shutdown_init +EXPORT_SYMBOL_GPL kernel/torture 0xe6989fd3 torture_init_end +EXPORT_SYMBOL_GPL kernel/torture 0xe9ff1468 torture_stutter_init +EXPORT_SYMBOL_GPL kernel/torture 0xf6d34fb5 torture_kthread_stopping +EXPORT_SYMBOL_GPL lib/842/842_compress 0x1ce013cf sw842_compress +EXPORT_SYMBOL_GPL lib/842/842_decompress 0x0d22f116 sw842_decompress +EXPORT_SYMBOL_GPL lib/bch 0x231d70fc encode_bch +EXPORT_SYMBOL_GPL lib/bch 0x6b770f49 decode_bch +EXPORT_SYMBOL_GPL lib/bch 0x9463ff71 init_bch +EXPORT_SYMBOL_GPL lib/bch 0xbdf512de free_bch +EXPORT_SYMBOL_GPL lib/notifier-error-inject 0x1cfa3851 notifier_err_inject_dir +EXPORT_SYMBOL_GPL lib/notifier-error-inject 0xd7d86ec8 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 0x201d8ea3 encode_rs8 +EXPORT_SYMBOL_GPL lib/reed_solomon/reed_solomon 0x29fa419f decode_rs8 +EXPORT_SYMBOL_GPL lib/reed_solomon/reed_solomon 0x300d7e57 free_rs +EXPORT_SYMBOL_GPL lib/reed_solomon/reed_solomon 0x6fbb3bd9 init_rs_non_canonical +EXPORT_SYMBOL_GPL lib/reed_solomon/reed_solomon 0xabda1e2e decode_rs16 +EXPORT_SYMBOL_GPL lib/reed_solomon/reed_solomon 0xb050f329 init_rs +EXPORT_SYMBOL_GPL net/6lowpan/6lowpan 0x347aae84 lowpan_header_decompress +EXPORT_SYMBOL_GPL net/6lowpan/6lowpan 0xf70abe89 lowpan_header_compress +EXPORT_SYMBOL_GPL net/802/garp 0x09965ec3 garp_request_join +EXPORT_SYMBOL_GPL net/802/garp 0x4381ef45 garp_request_leave +EXPORT_SYMBOL_GPL net/802/garp 0x7c8e637c garp_unregister_application +EXPORT_SYMBOL_GPL net/802/garp 0x9b49ab74 garp_register_application +EXPORT_SYMBOL_GPL net/802/garp 0x9bdb8c03 garp_uninit_applicant +EXPORT_SYMBOL_GPL net/802/garp 0xd7d01fcf garp_init_applicant +EXPORT_SYMBOL_GPL net/802/mrp 0x06fd3c4e mrp_unregister_application +EXPORT_SYMBOL_GPL net/802/mrp 0x0d8780c4 mrp_uninit_applicant +EXPORT_SYMBOL_GPL net/802/mrp 0x4f070605 mrp_init_applicant +EXPORT_SYMBOL_GPL net/802/mrp 0x75fa0a2c mrp_request_join +EXPORT_SYMBOL_GPL net/802/mrp 0x9ab2bb00 mrp_register_application +EXPORT_SYMBOL_GPL net/802/mrp 0xe28f6f6d mrp_request_leave +EXPORT_SYMBOL_GPL net/802/stp 0xdbdb17ee stp_proto_unregister +EXPORT_SYMBOL_GPL net/802/stp 0xf9a41c18 stp_proto_register +EXPORT_SYMBOL_GPL net/9p/9pnet 0xc7a650b0 p9_client_xattrwalk +EXPORT_SYMBOL_GPL net/9p/9pnet 0xfa74c90a 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 0x2ded0d11 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 0x1d6b2379 l2cap_chan_del +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x269cbe84 l2cap_chan_send +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x69cae532 l2cap_add_psm +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x6e61e1d3 l2cap_chan_set_defaults +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x7cc2bebb l2cap_chan_put +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x9ce5a8b6 l2cap_chan_connect +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0xce9b7e16 bt_debugfs +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0xe95336b9 l2cap_chan_create +EXPORT_SYMBOL_GPL net/bridge/br_netfilter 0x0cb0f8b7 br_netfilter_enable +EXPORT_SYMBOL_GPL net/bridge/bridge 0x2b1465f7 br_multicast_has_querier_adjacent +EXPORT_SYMBOL_GPL net/bridge/bridge 0x377e6882 nf_br_ops +EXPORT_SYMBOL_GPL net/bridge/bridge 0x49ce959b br_multicast_list_adjacent +EXPORT_SYMBOL_GPL net/bridge/bridge 0x52071506 br_dev_queue_push_xmit +EXPORT_SYMBOL_GPL net/bridge/bridge 0x52f45337 br_deliver +EXPORT_SYMBOL_GPL net/bridge/bridge 0x6c606690 br_multicast_has_querier_anywhere +EXPORT_SYMBOL_GPL net/bridge/bridge 0x7a4ed200 br_forward_finish +EXPORT_SYMBOL_GPL net/bridge/bridge 0xb9b6f5e6 br_handle_frame_finish +EXPORT_SYMBOL_GPL net/bridge/netfilter/nf_tables_bridge 0x0027829a nft_bridge_iphdr_validate +EXPORT_SYMBOL_GPL net/bridge/netfilter/nf_tables_bridge 0x5bec703c nft_bridge_ip6hdr_validate +EXPORT_SYMBOL_GPL net/dccp/dccp 0x1731e9a0 dccp_sync_mss +EXPORT_SYMBOL_GPL net/dccp/dccp 0x1d99d49a dccp_timestamp +EXPORT_SYMBOL_GPL net/dccp/dccp 0x1e9d6c78 dccp_shutdown +EXPORT_SYMBOL_GPL net/dccp/dccp 0x2283b26e dccp_send_ack +EXPORT_SYMBOL_GPL net/dccp/dccp 0x24b5b181 dccp_create_openreq_child +EXPORT_SYMBOL_GPL net/dccp/dccp 0x2737e859 dccp_rcv_state_process +EXPORT_SYMBOL_GPL net/dccp/dccp 0x37e5d944 dccp_getsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0x39fc8a40 dccp_reqsk_init +EXPORT_SYMBOL_GPL net/dccp/dccp 0x4add80b8 dccp_feat_nn_get +EXPORT_SYMBOL_GPL net/dccp/dccp 0x4cdd391d dccp_feat_list_purge +EXPORT_SYMBOL_GPL net/dccp/dccp 0x4ebcd4fa dccp_disconnect +EXPORT_SYMBOL_GPL net/dccp/dccp 0x4ec35231 dccp_ackvec_parsed_add +EXPORT_SYMBOL_GPL net/dccp/dccp 0x4f2f812e dccp_rcv_established +EXPORT_SYMBOL_GPL net/dccp/dccp 0x50f3c91e dccp_child_process +EXPORT_SYMBOL_GPL net/dccp/dccp 0x59814a84 dccp_statistics +EXPORT_SYMBOL_GPL net/dccp/dccp 0x612f47ba dccp_hashinfo +EXPORT_SYMBOL_GPL net/dccp/dccp 0x644439be dccp_parse_options +EXPORT_SYMBOL_GPL net/dccp/dccp 0x64e8ebe0 dccp_orphan_count +EXPORT_SYMBOL_GPL net/dccp/dccp 0x65bc9dc0 dccp_send_sync +EXPORT_SYMBOL_GPL net/dccp/dccp 0x6959d750 dccp_feat_signal_nn_change +EXPORT_SYMBOL_GPL net/dccp/dccp 0x6ff7779f dccp_death_row +EXPORT_SYMBOL_GPL net/dccp/dccp 0x6ffd430e dccp_insert_option +EXPORT_SYMBOL_GPL net/dccp/dccp 0x7bad3417 dccp_set_state +EXPORT_SYMBOL_GPL net/dccp/dccp 0x86be7924 dccp_packet_name +EXPORT_SYMBOL_GPL net/dccp/dccp 0x9031d1b5 dccp_connect +EXPORT_SYMBOL_GPL net/dccp/dccp 0x931fcee3 dccp_destroy_sock +EXPORT_SYMBOL_GPL net/dccp/dccp 0x9598d24d dccp_ackvec_parsed_cleanup +EXPORT_SYMBOL_GPL net/dccp/dccp 0xa1d9a1fa inet_dccp_listen +EXPORT_SYMBOL_GPL net/dccp/dccp 0xb701b3d1 dccp_recvmsg +EXPORT_SYMBOL_GPL net/dccp/dccp 0xbae87abd compat_dccp_setsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0xbd6201c7 dccp_ioctl +EXPORT_SYMBOL_GPL net/dccp/dccp 0xc38e2727 compat_dccp_getsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0xc5619ad4 dccp_check_req +EXPORT_SYMBOL_GPL net/dccp/dccp 0xc8c89300 dccp_setsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0xd3b25ccd dccp_reqsk_send_ack +EXPORT_SYMBOL_GPL net/dccp/dccp 0xda1973a9 dccp_init_sock +EXPORT_SYMBOL_GPL net/dccp/dccp 0xe3ea22e6 dccp_ctl_make_reset +EXPORT_SYMBOL_GPL net/dccp/dccp 0xe4c0a7e3 dccp_done +EXPORT_SYMBOL_GPL net/dccp/dccp 0xe82aaef7 dccp_sendmsg +EXPORT_SYMBOL_GPL net/dccp/dccp 0xedc37f8a dccp_poll +EXPORT_SYMBOL_GPL net/dccp/dccp 0xfe736f8b dccp_make_response +EXPORT_SYMBOL_GPL net/dccp/dccp 0xffc3ea54 dccp_close +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x0683bec1 dccp_v4_conn_request +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x3d8c1806 dccp_v4_send_check +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x430858af dccp_v4_request_recv_sock +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0xb4e9455c dccp_invalid_packet +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0xc14f7bb6 dccp_v4_connect +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0xd25977f4 dccp_v4_do_rcv +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0x174bdb6b ieee802154_hdr_peek +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0x4d7aef69 ieee802154_max_payload +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0x57840e7d ieee802154_hdr_pull +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0x7d36dbd3 ieee802154_hdr_peek_addrs +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0xe33e4675 ieee802154_hdr_push +EXPORT_SYMBOL_GPL net/ipv4/geneve_core 0x6ace1771 geneve_xmit_skb +EXPORT_SYMBOL_GPL net/ipv4/geneve_core 0x8f3880cb geneve_sock_release +EXPORT_SYMBOL_GPL net/ipv4/geneve_core 0xfe8ec973 geneve_sock_add +EXPORT_SYMBOL_GPL net/ipv4/gre 0x1a05edeb gre_cisco_register +EXPORT_SYMBOL_GPL net/ipv4/gre 0x50a18275 gre_del_protocol +EXPORT_SYMBOL_GPL net/ipv4/gre 0x5f411533 gre_cisco_unregister +EXPORT_SYMBOL_GPL net/ipv4/gre 0x7fd9a402 gre_add_protocol +EXPORT_SYMBOL_GPL net/ipv4/gre 0xa9707062 gre_build_header +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x1b554937 inet_diag_dump_one_icsk +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x20311d22 inet_sk_diag_fill +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x3a2399e2 inet_diag_unregister +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x76f328ab inet_diag_dump_icsk +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0xe982d1be inet_diag_register +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0xffb80975 inet_diag_bc_sk +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x06f58358 ip_tunnel_setup +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x1c8a5a79 ip_tunnel_change_mtu +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x34173f8f ip_tunnel_dellink +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x41c63859 ip_tunnel_changelink +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x47a528fa ip_tunnel_init_net +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x4c7f82cb ip_tunnel_newlink +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x4ce9fd9d ip_tunnel_ioctl +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x6402f47b ip_tunnel_init +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x83ded7a2 ip_tunnel_uninit +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xa3e247df ip_tunnel_xmit +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xb9aa90b5 ip_tunnel_lookup +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xbc72b099 ip_tunnel_rcv +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xd51f4658 ip_tunnel_encap_setup +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xebfc60a3 ip_tunnel_delete_net +EXPORT_SYMBOL_GPL net/ipv4/netfilter/arp_tables 0x516bd6e4 arpt_alloc_initial_table +EXPORT_SYMBOL_GPL net/ipv4/netfilter/ip_tables 0xba1fbe85 ipt_alloc_initial_table +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_defrag_ipv4 0x6b6c3d10 nf_defrag_ipv4_enable +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_ipv4 0x7b2b3a29 nf_nat_ipv4_in +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_ipv4 0x81081a6d nf_nat_icmp_reply_translation +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_ipv4 0x96c1c7f8 nf_nat_ipv4_out +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_ipv4 0xb3134632 nf_nat_ipv4_fn +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_ipv4 0xc877c9fa nf_nat_ipv4_local_fn +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_masquerade_ipv4 0x3f5c468e nf_nat_masquerade_ipv4_unregister_notifier +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_masquerade_ipv4 0xeb297921 nf_nat_masquerade_ipv4 +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_masquerade_ipv4 0xfedbf252 nf_nat_masquerade_ipv4_register_notifier +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_proto_gre 0x636b12c8 nf_nat_need_gre +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0x2ff5f4ee nf_reject_iphdr_put +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0x5b98c226 nf_send_reset +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0xcc6b9a28 nf_reject_ip_tcphdr_put +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0xd6e85793 nf_send_unreach +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0xffbade07 nf_reject_ip_tcphdr_get +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_tables_ipv4 0x59485173 nft_af_ipv4 +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x325ce034 tcp_vegas_state +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x8319f09b tcp_vegas_get_info +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0xe8b827f1 tcp_vegas_cwnd_event +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0xeda7c356 tcp_vegas_pkts_acked +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0xfba9d5ac tcp_vegas_init +EXPORT_SYMBOL_GPL net/ipv4/udp_tunnel 0x5704d0da udp_tunnel_sock_release +EXPORT_SYMBOL_GPL net/ipv4/udp_tunnel 0x69f173f4 udp_tunnel_xmit_skb +EXPORT_SYMBOL_GPL net/ipv4/udp_tunnel 0x9cc44e8e setup_udp_tunnel_sock +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x07b0a1a0 ip6_tnl_dst_store +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x46202234 ip6_tnl_dst_reset +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x499f8b2d ip6_tnl_xmit_ctl +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0xac29eac5 ip6_tnl_rcv_ctl +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0xde94dc5a ip6_tnl_dst_check +EXPORT_SYMBOL_GPL net/ipv6/ip6_udp_tunnel 0x29461542 udp_tunnel6_xmit_skb +EXPORT_SYMBOL_GPL net/ipv6/ip6_udp_tunnel 0x817001bb udp_sock_create6 +EXPORT_SYMBOL_GPL net/ipv6/netfilter/ip6_tables 0x64e6ed6b ip6t_alloc_initial_table +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_defrag_ipv6 0x6eb85693 nf_defrag_ipv6_enable +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_ipv6 0xc41aedb7 nf_nat_ipv6_fn +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_ipv6 0xc42432ba nf_nat_ipv6_in +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_ipv6 0xc496583a nf_nat_ipv6_out +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_ipv6 0xe64160d6 nf_nat_icmpv6_reply_translation +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_ipv6 0xf7554246 nf_nat_ipv6_local_fn +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_masquerade_ipv6 0x2293972c nf_nat_masquerade_ipv6_unregister_notifier +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_masquerade_ipv6 0x38d4401a nf_nat_masquerade_ipv6_register_notifier +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_masquerade_ipv6 0x8d41c689 nf_nat_masquerade_ipv6 +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0x471f016f nf_send_reset6 +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0x74bb3f73 nf_reject_ip6_tcphdr_get +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0x987522e9 nf_send_unreach6 +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0xb41b38d0 nf_reject_ip6hdr_put +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0xea06685d nf_reject_ip6_tcphdr_put +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_tables_ipv6 0x486c172d nft_af_ipv6 +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x05a447e6 l2tp_session_find_nth +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x08762210 l2tp_session_find_by_ifname +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x0aa293e1 l2tp_session_free +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x18594f73 l2tp_tunnel_find_nth +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x35a959e1 l2tp_tunnel_delete +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x3727ac9e l2tp_session_set_header_len +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x4c23320f __l2tp_session_unhash +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x6609a37b l2tp_session_find +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x7441e67a l2tp_udp_encap_recv +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x8d1e8002 l2tp_session_create +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x934a08ef l2tp_tunnel_create +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xa886cede l2tp_session_delete +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xadd0c48e l2tp_tunnel_find +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xbbd531e6 l2tp_tunnel_closeall +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xd1edc0d0 l2tp_xmit_skb +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xfd10a572 l2tp_session_queue_purge +EXPORT_SYMBOL_GPL net/l2tp/l2tp_netlink 0x337f2432 l2tp_nl_unregister_ops +EXPORT_SYMBOL_GPL net/l2tp/l2tp_netlink 0xe7254d61 l2tp_nl_register_ops +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x06c04250 ieee80211_iterate_interfaces +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x0b713c91 ieee80211_napi_add +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x11e1f72f ieee80211_set_key_rx_seq +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x1f216d2c ieee80211_set_key_tx_seq +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x30badff8 ieee80211_request_smps +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x35960f5d ieee80211_iterate_stations_atomic +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x3693fe6b ieee80211_ave_rssi +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x3c9372bd ieee80211_gtk_rekey_add +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x4b5156c3 ieee80211_find_sta_by_ifaddr +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x58a151ae ieee80211_remove_key +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x58e78d04 ieee80211_iterate_active_interfaces_rtnl +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x5cfa82a3 ieee80211_gtk_rekey_notify +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x63d1555a ieee80211_iter_chan_contexts_atomic +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x7561c512 wdev_to_ieee80211_vif +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x83bd5ec1 ieee80211_vif_to_wdev +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xae5b4490 ieee80211_resume_disconnect +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xcbf985b0 ieee80211_remain_on_channel_expired +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xce62f18d ieee80211_iterate_active_interfaces_atomic +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xf5edd6d9 ieee80211_ready_on_channel +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x06a0560f ip_set_type_unregister +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x15efdd7a ip_set_get_byname +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x377b63d7 ip_set_get_ip4_port +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x397f6231 ip_set_free +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x3f2cbb8b ip_set_get_ip6_port +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x74edbbd7 ip_set_del +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x7924b6de ip_set_hostmask_map +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x81687c3f 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 0x84c9853c ip_set_test +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x86c30464 ip_set_add +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x8700aecb ip_set_put_extensions +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x8db2e71e ip_set_name_byindex +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x94dcadff ip_set_put_byindex +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x9dee585b ip_set_get_extensions +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x9e90c556 ip_set_nfnl_put +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 0xa2d623f3 ip_set_range_to_cidr +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xcbe4ada4 ip_set_type_register +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xcc001bd9 ip_set_extensions +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xdd27e2a9 ip_set_get_ip_port +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xf3b4d4ae ip_set_alloc +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xfe9f41b1 ip_set_elem_len +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0x17974459 unregister_ip_vs_pe +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0x2b71262c ip_vs_conn_out_get_proto +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0x491e46fb register_ip_vs_pe +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0xac696ab4 ip_vs_conn_in_get_proto +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x021d73ad nf_ct_tmpl_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x045072cd nf_ct_port_nla_policy +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x070db737 nf_ct_seqadj_init +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x0852c043 nf_conntrack_l4proto_tcp4 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x08fbe862 nf_ct_helper_expectfn_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x09ed97ba nf_ct_remove_expectations +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x0c56eec4 nf_ct_seqadj_set +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x0e800700 nf_ct_expect_init +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x123b9c77 nf_ct_helper_expectfn_find_by_name +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x17fc0143 nf_conntrack_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x1dc236e1 nf_ct_invert_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x24b7d3f7 nf_connlabels_replace +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x289c3714 nf_ct_alloc_hashtable +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x29dbca25 nf_ct_get_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x2b4c4b95 seq_print_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x2de5728a nf_conntrack_unregister_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x2e1e2cbd nf_ct_l4proto_pernet_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x30d547da nf_ct_l4proto_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x33266614 nf_conntrack_tuple_taken +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x339d1eb4 nf_conntrack_free +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x37386cac nf_conntrack_hash_rnd +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x37eac7a8 nf_ct_seq_adjust +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3a64a2c1 nf_conntrack_l4proto_tcp6 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3c940f54 nf_ct_expect_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3dcd6966 nf_ct_l3proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3f5b1415 nf_ct_port_nlattr_to_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x4022b17f __nf_ct_l4proto_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x406154b3 nf_ct_expect_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x42aa5eb6 nf_ct_deliver_cached_events +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x445dd33b __nf_ct_try_assign_helper +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x4f39e0cd nf_ct_get_tuplepr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x520e769c nf_ct_helper_ext_add +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x536a67e4 nf_conntrack_l3proto_generic +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x585ef5fa nf_conntrack_locks +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x5922ee32 nf_ct_l4proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x60385b69 nf_ct_l3proto_pernet_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x62813e5c nf_ct_port_nlattr_tuple_size +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x629346bd nf_conntrack_set_hashsize +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6695b68e nf_conntrack_in +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x693c3961 nf_ct_helper_hash +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6e224a7a need_conntrack +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x780b0367 nf_ct_expect_register_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x7834921c nf_ct_helper_expectfn_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x78f9b710 nf_ct_l3proto_try_module_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x82d09380 __nf_ct_kill_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x86148010 nf_ct_timeout_put_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x885ed0ec nf_ct_expect_unregister_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x893f5be8 nf_ct_helper_expectfn_find_by_symbol +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8abfff24 nf_ct_l3proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8dd7e89c nf_ct_l4proto_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8eecfab6 nf_ct_delete +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8ffe7e89 nf_conntrack_htable_size +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x90ff6c9f nf_ct_invert_tuplepr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x95e0f075 nf_conntrack_hash_check_insert +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x96376c5c nf_connlabel_set +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x9997fb3b nf_ct_iterate_cleanup +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x9d4c1461 nf_ct_port_tuple_to_nlattr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x9f144f7c nf_conntrack_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa00bdb40 nf_ct_helper_log +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa2bd39f6 nf_connlabel_match +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa30b31a5 nf_ct_l4proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa9c2fa00 nf_conntrack_helper_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xaa0bf0c3 nf_conntrack_expect_lock +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xab3d1f95 nf_ct_untracked_status_or +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xad1bb027 nf_ct_free_hashtable +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb40100a7 __nf_ct_expect_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb602c57e nf_ct_l3proto_module_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb9759db2 nf_ct_l4proto_pernet_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xbcb0c17f nf_ct_l3protos +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xbd924863 nf_ct_extend_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc04c810b nf_ct_expect_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 0xc84f0c44 nf_conntrack_register_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xcdbf4351 nf_ct_l3proto_pernet_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd31270b1 nf_ct_timeout_find_get_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd689c4a0 nf_conntrack_helper_try_module_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd6c3aa13 __nf_conntrack_confirm +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd80eb14a nfnetlink_parse_nat_setup_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd8fd57cd nf_ct_expect_related_report +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xdabb23ba __nf_ct_refresh_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xdb644bf6 nf_conntrack_l4proto_udp4 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xde6bb903 nf_ct_unexpect_related +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xe9522974 nf_conntrack_l4proto_udp6 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xeac35e4c nf_ct_extend_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xefab9daf nf_ct_unlink_expect_report +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf38bcdf3 nf_conntrack_max +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf4cea635 nf_conntrack_alter_reply +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf4f88751 nf_ct_tmpl_free +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf59a96e0 __nf_conntrack_helper_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xfb331b97 nf_ct_seq_offset +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xfc6bd690 nf_conntrack_helper_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xfc6f7149 nf_ct_tcp_seqadj_set +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xfd343f3a nf_ct_l3proto_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_amanda 0x4996deb0 nf_nat_amanda_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_broadcast 0xaf82fe96 nf_conntrack_broadcast_help +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_ftp 0x5d7cfce3 nf_nat_ftp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x05028cef nat_rtp_rtcp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x428fef9a set_h225_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x42ca5318 nat_h245_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x79523c2f nat_callforwarding_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x7a0afecf nat_t120_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xb2cd1e91 nat_q931_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xdd7998f7 get_h225_addr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xe922039a set_ras_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xe9d4eb16 set_sig_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xfc8aab9f set_h245_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_irc 0x7f3a3d3a nf_nat_irc_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0x71e1610c nf_nat_pptp_hook_expectfn +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0x75cb5e56 nf_nat_pptp_hook_exp_gre +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0x8560242c nf_nat_pptp_hook_inbound +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0xfc3e5ec6 nf_nat_pptp_hook_outbound +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_proto_gre 0x86a87e27 nf_ct_gre_keymap_add +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_proto_gre 0xddd2f61f nf_ct_gre_keymap_destroy +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x196d5136 ct_sip_parse_address_param +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x2a74f9d9 ct_sip_parse_header_uri +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x304af16b ct_sip_get_sdp_header +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x3ce717f6 ct_sip_parse_request +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x869440f1 ct_sip_parse_numerical_param +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x8a5a1514 ct_sip_get_header +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x94b97dbb nf_nat_sip_hooks +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_snmp 0x20dcf55b nf_nat_snmp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_tftp 0xef0a7d6d nf_nat_tftp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_log_common 0x23297592 nf_log_dump_udp_header +EXPORT_SYMBOL_GPL net/netfilter/nf_log_common 0x9fa7343b nf_log_dump_tcp_header +EXPORT_SYMBOL_GPL net/netfilter/nf_log_common 0xa961623f nf_log_dump_packet_common +EXPORT_SYMBOL_GPL net/netfilter/nf_log_common 0xd77e8c8a nf_log_dump_sk_uid_gid +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x0d9bae4b nf_nat_l4proto_nlattr_to_range +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x131f636c nf_nat_l4proto_in_range +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x157e7e25 nf_nat_l3proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x28d47673 nf_nat_l4proto_unique_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x5da648c8 nf_ct_nat_ext_add +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x6d8844c6 nf_nat_l4proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x9bb7597c nf_nat_l4proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xb57a482c nf_nat_alloc_null_binding +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xd40f1c35 nf_nat_l3proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xdb45a25c nf_nat_packet +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xe8076d73 __nf_nat_l4proto_find +EXPORT_SYMBOL_GPL net/netfilter/nf_nat_redirect 0x7a338bd8 nf_nat_redirect_ipv6 +EXPORT_SYMBOL_GPL net/netfilter/nf_nat_redirect 0xc92e19c2 nf_nat_redirect_ipv4 +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x11a006b5 synproxy_check_timestamp_cookie +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x8841d39b synproxy_build_options +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x90298227 synproxy_init_timestamp_cookie +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0xb42e336a synproxy_options_size +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0xb96aa9dd synproxy_parse_options +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0xdf1bcd73 synproxy_tstamp_adjust +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0xef7db50c synproxy_net_id +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x00acfa78 nft_register_expr +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x131368bc nft_set_gc_batch_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x19c78750 nft_register_chain_type +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x1e6b75a3 nft_parse_register +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x3cb15baf nft_unregister_set +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x4d2222ac nft_register_afinfo +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x5778f241 nft_chain_validate_hooks +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x5b837645 nft_register_basechain +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x68088bee nft_data_uninit +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x6f5e639e nft_data_dump +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x78c72ab6 nft_unregister_basechain +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x8aa11fa3 nft_unregister_afinfo +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x9f6b4003 nft_register_set +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xa32b5a0c nft_validate_register_store +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xb1e9e3d9 nft_unregister_chain_type +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xbb4f8ae7 nft_dump_register +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xbf63bb61 nft_set_gc_batch_release +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xcc170d56 nft_unregister_expr +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xcf03e214 nft_chain_validate_dependency +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xdb938b77 nft_set_elem_destroy +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xdc7d55cc nft_data_init +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xe09dada2 nft_set_ext_types +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xeb76bc6e nft_do_chain +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xed33c632 nft_validate_register_load +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x173ff58b nfnetlink_subsys_register +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x42a1764b nfnetlink_set_err +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x4fe3914b nfnetlink_send +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x5ce3b588 nfnl_lock +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xdb065657 nfnl_unlock +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xe46b7324 nfnetlink_alloc_skb +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xea437830 nfnetlink_has_listeners +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xecb62288 nfnetlink_subsys_unregister +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xf21665bc nfnetlink_unicast +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0x21f6bba6 nfnl_acct_find_get +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0x427bb701 nfnl_acct_update +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0x5998c6bc nfnl_acct_overquota +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0xbecf5d14 nfnl_acct_put +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_log 0xa27cbf2a nfulnl_log_packet +EXPORT_SYMBOL_GPL net/netfilter/nft_masq 0x341d5f76 nft_masq_dump +EXPORT_SYMBOL_GPL net/netfilter/nft_masq 0x84e7e9ea nft_masq_validate +EXPORT_SYMBOL_GPL net/netfilter/nft_masq 0x8b7c0a81 nft_masq_init +EXPORT_SYMBOL_GPL net/netfilter/nft_masq 0xe3b8ea21 nft_masq_policy +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0x07736a8f nft_meta_set_dump +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0x5b71b2c1 nft_meta_set_init +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0x64d9e6e3 nft_meta_get_dump +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0x863e0842 nft_meta_set_eval +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0xb80e8358 nft_meta_policy +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0xbf44ee31 nft_meta_get_init +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0xed59217d nft_meta_get_eval +EXPORT_SYMBOL_GPL net/netfilter/nft_redir 0x1248589e nft_redir_dump +EXPORT_SYMBOL_GPL net/netfilter/nft_redir 0x8d9d4ca9 nft_redir_validate +EXPORT_SYMBOL_GPL net/netfilter/nft_redir 0xa5be1e1e nft_redir_policy +EXPORT_SYMBOL_GPL net/netfilter/nft_redir 0xf694485a nft_redir_init +EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0x2550529e nft_reject_dump +EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0x9ed1baea nft_reject_init +EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0xa2db3c7f nft_reject_policy +EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0xddf15889 nft_reject_icmp_code +EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0xe8cdab4e nft_reject_icmpv6_code +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x105ab49b xt_check_target +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x14b140d5 xt_proto_init +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x161d1417 xt_compat_unlock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x25fceca5 xt_register_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x39ad73b5 xt_request_find_match +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x40728a63 xt_find_revision +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x436600e1 xt_compat_target_offset +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x48b9e8eb xt_find_table_lock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x4fb5549e xt_table_unlock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x529e02d6 xt_hook_unlink +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x54db25ee xt_unregister_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x5c947348 xt_compat_match_from_user +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x5f82f1f7 xt_compat_flush_offsets +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x646af988 xt_check_match +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x691a6d69 xt_compat_calc_jump +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x78d5bab6 xt_request_find_target +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x807d2b2c xt_recseq +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x8c38123e xt_compat_match_offset +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xbeac2fb1 xt_compat_target_to_user +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xd9eaffbd xt_hook_link +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xe0b4971b xt_compat_lock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xec24fd82 xt_compat_add_offset +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xec8d7ef2 xt_compat_match_to_user +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xf0cefcb6 xt_proto_fini +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xf7e809ca xt_compat_target_from_user +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xfaa1a6d9 xt_replace_table +EXPORT_SYMBOL_GPL net/netfilter/xt_RATEEST 0xe9ef9dd0 xt_rateest_put +EXPORT_SYMBOL_GPL net/netfilter/xt_RATEEST 0xf156a7fd xt_rateest_lookup +EXPORT_SYMBOL_GPL net/nfc/nci/nci 0x1b56c199 nci_spi_send +EXPORT_SYMBOL_GPL net/nfc/nci/nci 0x3a659d51 nci_spi_read +EXPORT_SYMBOL_GPL net/nfc/nci/nci 0xb4e5cae2 nci_spi_allocate_spi +EXPORT_SYMBOL_GPL net/nfc/nci/nci_uart 0x1fa888c5 nci_uart_unregister +EXPORT_SYMBOL_GPL net/nfc/nci/nci_uart 0x4bcd68a3 nci_uart_register +EXPORT_SYMBOL_GPL net/nfc/nci/nci_uart 0x96faac25 nci_uart_set_config +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x2341b4dd ovs_vport_deferred_free +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x46ce9a30 ovs_vport_alloc +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x47ab606b ovs_vport_free +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x5a04f778 ovs_tunnel_get_egress_info +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x660d29e1 ovs_vport_ops_register +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x7bc3fdfe ovs_vport_receive +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0xc33a62f9 ovs_vport_ops_unregister +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0xda83411d ovs_net_id +EXPORT_SYMBOL_GPL net/rds/rds 0x00a467af rds_wq +EXPORT_SYMBOL_GPL net/rds/rds 0x099e3769 rds_cong_map_updated +EXPORT_SYMBOL_GPL net/rds/rds 0x12f2fc85 rds_info_register_func +EXPORT_SYMBOL_GPL net/rds/rds 0x20560a41 rds_conn_connect_if_down +EXPORT_SYMBOL_GPL net/rds/rds 0x2a52234a rds_atomic_send_complete +EXPORT_SYMBOL_GPL net/rds/rds 0x2c5c5514 rds_message_add_rdma_dest_extension +EXPORT_SYMBOL_GPL net/rds/rds 0x3101936e rds_message_add_extension +EXPORT_SYMBOL_GPL net/rds/rds 0x39216d54 rds_send_drop_acked +EXPORT_SYMBOL_GPL net/rds/rds 0x3b4fc0fc rds_page_remainder_alloc +EXPORT_SYMBOL_GPL net/rds/rds 0x3cd53149 rds_page_copy_user +EXPORT_SYMBOL_GPL net/rds/rds 0x445bd951 rds_conn_drop +EXPORT_SYMBOL_GPL net/rds/rds 0x50cbe7b3 rds_stats +EXPORT_SYMBOL_GPL net/rds/rds 0x548d6cda rds_connect_complete +EXPORT_SYMBOL_GPL net/rds/rds 0x57ec792c rds_trans_unregister +EXPORT_SYMBOL_GPL net/rds/rds 0x59750955 rds_recv_incoming +EXPORT_SYMBOL_GPL net/rds/rds 0x5da8445b rds_for_each_conn_info +EXPORT_SYMBOL_GPL net/rds/rds 0x6e5e990b rds_message_unmapped +EXPORT_SYMBOL_GPL net/rds/rds 0x6f4c46a4 rds_trans_register +EXPORT_SYMBOL_GPL net/rds/rds 0x713f4741 rds_send_get_message +EXPORT_SYMBOL_GPL net/rds/rds 0x73aac73d rds_message_populate_header +EXPORT_SYMBOL_GPL net/rds/rds 0x7bc62829 rds_stats_info_copy +EXPORT_SYMBOL_GPL net/rds/rds 0x8decc781 rds_rdma_send_complete +EXPORT_SYMBOL_GPL net/rds/rds 0x9b2c40f7 rds_conn_create_outgoing +EXPORT_SYMBOL_GPL net/rds/rds 0xb4f79d09 rds_message_addref +EXPORT_SYMBOL_GPL net/rds/rds 0xc2dab779 rds_info_copy +EXPORT_SYMBOL_GPL net/rds/rds 0xcaedb533 rds_inc_put +EXPORT_SYMBOL_GPL net/rds/rds 0xce57b49c rds_conn_create +EXPORT_SYMBOL_GPL net/rds/rds 0xd7368d76 rds_inc_init +EXPORT_SYMBOL_GPL net/rds/rds 0xebae76cb rds_info_deregister_func +EXPORT_SYMBOL_GPL net/rds/rds 0xfd0d8152 rds_conn_destroy +EXPORT_SYMBOL_GPL net/rds/rds 0xfeb051c4 rds_message_put +EXPORT_SYMBOL_GPL net/rxrpc/af-rxrpc 0x13522bb7 rxrpc_unregister_security +EXPORT_SYMBOL_GPL net/rxrpc/af-rxrpc 0x8e2919a9 rxrpc_register_security +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x00c52ef5 g_make_token_header +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x8d1a827e svcauth_gss_register_pseudoflavor +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xb5dea7ef g_token_size +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xb7e06ca3 gss_mech_unregister +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xc0ecf4bd svcauth_gss_flavor +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xf839d257 gss_mech_register +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xf8b2ff6e g_verify_token_header +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x02e109fd xdr_buf_from_iov +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x03c95e7a svc_set_num_threads +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x045834e9 rpcauth_get_pseudoflavor +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x04fd2626 svc_rpcb_setup +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 0x06f40b3e xdr_buf_read_netobj +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x070f4e1e auth_domain_put +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x07168952 xdr_decode_array2 +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0b461c59 xprt_set_retrans_timeout_def +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0f668ba9 svc_auth_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x10d40cde xprt_reserve_xprt_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1541832d rpc_restart_call_prepare +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x15460431 svc_prepare_thread +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x15553e97 rpc_max_payload +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x170274b2 xdr_stream_pos +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x18f5cb16 rpc_lookup_machine_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x18fd3098 xdr_shift_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1be38cd4 svc_create_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1c30e7bb xdr_set_scratch_buffer +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1d0a89be xdr_process_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1e2090d5 xprt_free +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1f2a9970 rpc_ntop +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1fa3999d rpc_d_lookup_sb +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1fa6ef1c rpc_protocol +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1ff228f3 svc_xprt_init +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x206ecd3c cache_register_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2075a6c3 rpc_lookup_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x211132c0 rpcauth_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x21d2a6f6 xdr_decode_word +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x238b5427 rpc_put_task_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x24b497ab rpc_setbufsize +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x25dbbab2 rpc_killall_tasks +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x28613339 svc_reg_xprt_class +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2919b156 xdr_decode_string_inplace +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2984545a xdr_buf_trim +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2a900ac9 xdr_encode_word +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2abe7b08 svc_sock_update_bufs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2bb614fc rpc_call_start +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2bc93fa2 rpc_delay +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2c90b974 svc_find_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2c9cf744 svc_xprt_copy_addrs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2d467f7e rpc_init_pipe_dir_head +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2eec63c9 xdr_encode_netobj +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2efac02f xprt_release_xprt_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x305151a2 rpc_get_timeout +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x31a89d59 rpc_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3208aa03 rpcauth_destroy_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x33c7ef21 svc_recv +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x34ba9e08 csum_partial_copy_to_xdr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x34f6aa11 rpc_count_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x36522349 rpc_peeraddr2str +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x387e1639 rpc_pipefs_notifier_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x39698753 rpc_init_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3b7cde49 rpcauth_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3b81345a svc_shutdown_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3c70314d svc_rpcb_cleanup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3c7aa00a rpc_run_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3db7e880 auth_domain_find +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3e008938 rpc_wake_up +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3ec2d019 xdr_encode_array2 +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3ed62720 sunrpc_destroy_cache_detail +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3fe178ab rpc_queue_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x41342356 cache_purge +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x46423045 rpc_init_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x46e51031 cache_create_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x474b42c9 xprt_lock_and_alloc_slot +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x47bfc125 rpc_peeraddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x47ca2ef8 rpc_free_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4838a1be rpc_pipe_generic_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x49aeb574 xprt_adjust_cwnd +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4b6b7b73 rpcauth_generic_bind_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4e773e38 cache_unregister_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4fc66b52 rpc_remove_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x50375375 svc_proc_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x53445f68 nlm_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x540ab975 rpc_clone_client_set_auth +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5440fa87 put_rpccred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x54ac799e rpcauth_stringify_acceptor +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x54b2b9aa svc_close_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x55e8bdcc rpc_put_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5745072c sunrpc_cache_pipe_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x57bda115 xdr_skb_read_bits +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x590963fd rpc_proc_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5c67fc39 rpc_force_rebind +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5d45bc27 rpc_clone_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5d79230a rpc_exit +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5ef07d43 rpc_print_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x602efc13 rpc_mkpipe_data +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x65c20eeb svc_unreg_xprt_class +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x66ba427e svc_destroy +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x66fb2e37 xprt_complete_rqst +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6751f046 rpc_wake_up_first +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6804e7d9 rpc_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x68554768 rpc_clnt_swap_activate +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7048e7ec cache_check +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x709ff681 xprt_alloc_slot +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x71237113 rpc_switch_client_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x718464f4 svc_alien_sock +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x71fa908a cache_flush +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x76a982c8 xprt_destroy_backchannel +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x78065021 rpc_localaddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7837e4f9 xdr_commit_encode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x791eb88d rpc_sleep_on_priority +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x795d90f5 xdr_enter_page +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x79c1fb68 rpcauth_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7a5cb04e rpc_release_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7b39dbe1 svcauth_unix_set_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7c0effc9 svc_drop +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7c5701ff svc_set_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7de53067 rpc_init_rtt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x80951b28 rpcauth_get_gssinfo +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x80b04035 xprt_disconnect_done +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x80e09375 sunrpc_cache_register_pipefs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x813788da xdr_init_decode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8348ef4e rpc_net_ns +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x835ec275 __rpc_wait_for_completion_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x83cb4527 xprt_register_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8945ff8e xdr_read_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8af4a8e4 rpc_destroy_pipe_data +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8c5ae6c2 xdr_buf_subsegment +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8db65084 xprt_set_retrans_timeout_rtt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8e3e9856 sunrpc_cache_unregister_pipefs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8e64eebb xprt_release_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8ea8cecb auth_domain_lookup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8ee37752 xprt_lookup_rqst +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8f7895be xprt_write_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x90fa672c rpcauth_init_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x924dae72 gssd_running +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x92558090 svc_exit_thread +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x94090ba4 xdr_write_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x944f24b9 xdr_init_encode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x94e45aa4 xprt_unregister_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x966ace4e rpc_call_null +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x979441ab rpc_mkpipe_dentry +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9833a488 svc_addsock +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x988a78dd rpc_count_iostats_metrics +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x989c4867 svc_wake_up +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x98b75d64 rpcauth_list_flavors +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9f5141a7 rpc_wake_up_queued_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa29c4cc6 rpc_sleep_on +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa34fc56d svc_bind +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa5c2f20d svc_auth_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa774f1d8 _copy_from_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xaa453de1 rpc_create_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xaa9d1814 xdr_inline_decode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xab727b02 sunrpc_cache_update +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xaf5bf6ef nfs_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb0bd2c3b svc_seq_show +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb13a0001 rpc_wake_up_status +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb436c34b rpc_lookup_cred_nonblock +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb51a3724 rpc_pipefs_notifier_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb5feeee7 rpc_task_reset_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb63fac93 rpc_shutdown_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb725c254 rpc_unlink +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb81ad16e xprt_reserve_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xba759601 unix_domain_find +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbe3a4f1e rpc_clnt_swap_deactivate +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbe9e936a xdr_init_decode_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbed11b0b rpcauth_key_timeout_notify +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbf9d1b96 nfsd_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbffd23af cache_destroy_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc07b539f xdr_reserve_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc12435e3 rpc_calc_rto +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc17421ff svc_create_pooled +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc18d1c55 rpc_init_priority_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc2161d56 rpc_rmdir +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc324cb1b rpc_call_sync +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc3880471 xdr_decode_netobj +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc4238c0d read_bytes_from_xdr_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc5882576 rpc_bind_new_program +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc774a4af rpc_destroy_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc8e96dea qword_addhex +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc943e0d3 svc_authenticate +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc9ae0680 svc_process +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcc0306b5 svcauth_unix_purge +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcc8fa300 xprt_wake_pending_tasks +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xccfe47c8 sunrpc_init_cache_detail +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcee467f3 xprt_load_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd023f8b7 rpcauth_lookupcred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd16e5704 svc_print_addr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd2f793a7 svc_max_payload +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd7f4e42b xdr_partial_copy_from_skb +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd8c1f614 rpc_alloc_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd922b297 svc_reserve +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd9238c6c rpc_wake_up_next +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd934765b rpcauth_lookup_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd9e94e00 svc_xprt_enqueue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdb24d077 rpc_uaddr2sockaddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdca60e49 rpc_proc_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdda7acdb rpcb_getport_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe159ace2 rpcauth_cred_key_to_expire +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe192cd70 sunrpc_cache_lookup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe1ac2bb8 sunrpc_net_id +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe2b6073e svc_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe2fd2e3d xdr_terminate_string +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe3322bd5 xprt_release_rqst_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe39250ce rpc_malloc +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe53f8aab rpc_get_sb_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe5919cb1 xdr_encode_opaque +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe7789ca6 xprt_setup_backchannel +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe94a1a4e xprt_wait_for_buffer_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe97f4ce5 qword_get +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xed38c673 xdr_inline_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xed569b82 rpc_restart_call +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xed966751 write_bytes_to_xdr_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xedcf6be4 qword_add +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xede3d07e xprt_alloc +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xeeacab69 rpc_update_rtt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf059a102 rpcauth_init_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf0fa17c6 rpc_find_or_alloc_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf2c43cb1 bc_svc_process +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf5349818 svc_xprt_names +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf8cdcc2b svc_proc_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf9245575 rpc_put_sb_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf9d1164c rpc_free +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfb107909 rpc_pton +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfb2533a3 rpc_add_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xff4ae78d svc_xprt_put +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xff6ffc99 rpc_call_async +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x0c79d5ef vm_sockets_get_local_cid +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x15c0c57c vsock_addr_init +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x21dde153 __vsock_create +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x2663cb64 vsock_addr_equals_addr +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x4504e23d vsock_remove_connected +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x514683b1 vsock_remove_pending +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x59d943c8 vsock_addr_cast +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x5d1018d5 __vsock_core_init +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x6ac2d8f7 vsock_add_pending +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x6d229d60 vsock_find_bound_socket +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x6f31e50e vsock_remove_bound +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x751ff010 vsock_addr_unbind +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x77221bab vsock_stream_has_space +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x7f730c80 vsock_core_exit +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x9513e76c vsock_stream_has_data +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x970b77bc vsock_pending_work +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xa2096f6a vsock_for_each_connected_socket +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xbd0f699d vsock_addr_bound +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xcdb0b2e2 vsock_find_connected_socket +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xd05c6e82 vsock_insert_connected +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xd95ac116 vsock_addr_validate +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xfc1582d1 vsock_enqueue_accept +EXPORT_SYMBOL_GPL net/wimax/wimax 0x0aacf0ca wimax_report_rfkill_hw +EXPORT_SYMBOL_GPL net/wimax/wimax 0x0d08d04a wimax_msg +EXPORT_SYMBOL_GPL net/wimax/wimax 0x186beb2d wimax_state_get +EXPORT_SYMBOL_GPL net/wimax/wimax 0x2db70539 wimax_msg_data_len +EXPORT_SYMBOL_GPL net/wimax/wimax 0x44492d4a wimax_dev_add +EXPORT_SYMBOL_GPL net/wimax/wimax 0x777ed689 wimax_msg_len +EXPORT_SYMBOL_GPL net/wimax/wimax 0x7ac5776f wimax_dev_rm +EXPORT_SYMBOL_GPL net/wimax/wimax 0x7f384c21 wimax_state_change +EXPORT_SYMBOL_GPL net/wimax/wimax 0x8d4206fb wimax_report_rfkill_sw +EXPORT_SYMBOL_GPL net/wimax/wimax 0x95b6c231 wimax_msg_data +EXPORT_SYMBOL_GPL net/wimax/wimax 0x9a7dc805 wimax_msg_send +EXPORT_SYMBOL_GPL net/wimax/wimax 0xcfa5dcca wimax_dev_init +EXPORT_SYMBOL_GPL net/wimax/wimax 0xf27e8c9a wimax_msg_alloc +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x26551499 cfg80211_wext_giwrts +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x2c30a393 cfg80211_wext_siwfrag +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x3594f615 cfg80211_shutdown_all_interfaces +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x412c2ba4 cfg80211_wext_giwfrag +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x5cb7f5e2 cfg80211_wext_giwname +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x60e109b8 cfg80211_wext_giwrange +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x7fa3185f cfg80211_wext_giwmode +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x96a44a76 cfg80211_wext_giwretry +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xa26ecc95 cfg80211_wext_siwmode +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xae511ed1 cfg80211_vendor_cmd_reply +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xba20f3ef cfg80211_wext_siwscan +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xe739c88c cfg80211_wext_siwrts +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xe9330d04 cfg80211_wext_giwscan +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 0x3bf471d7 xfrm_calg_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x47b34e60 xfrm_ealg_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x60b73277 xfrm_aead_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x7a8ca627 xfrm_count_pfkey_enc_supported +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x834ba96d xfrm_aalg_get_byid +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xa6e66685 xfrm_aalg_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xaa762fe2 xfrm_aalg_get_byidx +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xad1b60ed xfrm_calg_get_byid +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xdbfc35c8 xfrm_ealg_get_byidx +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xdfea3a6d xfrm_ealg_get_byid +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0x698e2363 ipcomp_init_state +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0x7a3a1643 ipcomp_output +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0x8e426ded ipcomp_destroy +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0x9e5cc71b ipcomp_input +EXPORT_SYMBOL_GPL sound/core/seq/snd-seq-device 0x0d7bfb22 snd_seq_driver_unregister +EXPORT_SYMBOL_GPL sound/core/seq/snd-seq-device 0x103a9295 __snd_seq_driver_register +EXPORT_SYMBOL_GPL sound/core/snd 0x09c620fb snd_device_disconnect +EXPORT_SYMBOL_GPL sound/core/snd 0x19ffee83 snd_device_initialize +EXPORT_SYMBOL_GPL sound/core/snd 0x2b8d461f snd_ctl_sync_vmaster +EXPORT_SYMBOL_GPL sound/core/snd 0x4088e782 snd_ctl_activate_id +EXPORT_SYMBOL_GPL sound/core/snd 0x7da29e0a snd_card_add_dev_attr +EXPORT_SYMBOL_GPL sound/core/snd 0xa66f35f3 snd_ctl_add_vmaster_hook +EXPORT_SYMBOL_GPL sound/core/snd 0xc0d2792f snd_ctl_get_preferred_subdevice +EXPORT_SYMBOL_GPL sound/core/snd-compress 0x906ed918 snd_compress_register +EXPORT_SYMBOL_GPL sound/core/snd-compress 0x9ccd6b30 snd_compress_new +EXPORT_SYMBOL_GPL sound/core/snd-compress 0xd83d59b3 snd_compress_deregister +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 0x0e5ed3e1 snd_pcm_stop_xrun +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x278d9046 snd_pcm_add_chmap_ctls +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x44262ae2 _snd_pcm_stream_lock_irqsave +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x60e67e76 snd_pcm_stream_lock_irq +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x7f4f9388 snd_pcm_stream_lock +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x8f39125e snd_pcm_stream_unlock_irq +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x9e82d28d snd_pcm_stream_unlock +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0xa168d5ee 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 0xbe32c64d snd_pcm_stream_unlock_irqrestore +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x12509194 snd_dmaengine_pcm_trigger +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x12a6cc1b snd_dmaengine_pcm_pointer_no_residue +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x17d0a74f snd_dmaengine_pcm_open_request_chan +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x1e8390fe snd_dmaengine_pcm_pointer +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x58613832 snd_dmaengine_pcm_open +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x5db6f177 snd_dmaengine_pcm_get_chan +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x6f968f5f snd_dmaengine_pcm_close +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0xb7f8efcb snd_dmaengine_pcm_request_channel +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0xe912e357 snd_dmaengine_pcm_close_release_chan +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0xf05ddc89 snd_dmaengine_pcm_set_config_from_dai_data +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0xf7a776c4 snd_hwparams_to_dma_slave_config +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x0016ae15 snd_hdac_regmap_exit +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x047d34b0 snd_hdac_bus_get_response +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x0b8ccc06 snd_hdac_stream_sync_trigger +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x0be97275 hdac_get_device_id +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x0e3d02d5 snd_hdac_refresh_widgets +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x0e4d4d44 snd_hdac_stream_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x135728ee snd_hdac_bus_queue_event +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x17b43ee0 snd_hdac_stream_assign +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x1a634ea5 snd_hdac_bus_exec_verb_unlocked +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x1a831629 snd_hdac_bus_enter_link_reset +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x1f44b081 snd_hdac_regmap_read_raw +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x20be7470 snd_hdac_stream_clear +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x227e025c snd_hdac_is_supported_format +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x388472ff snd_hdac_get_sub_nodes +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x3f33eab1 snd_hdac_stream_set_params +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x4459a459 snd_hdac_bus_stop_cmd_io +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x4a187539 snd_hdac_bus_exit +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x4dd85221 _snd_hdac_read_parm +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x4f1a54cc snd_hdac_bus_send_cmd +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x501dff52 snd_hdac_get_connections +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x515944e1 snd_hdac_device_exit +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x535195a8 snd_hdac_dsp_prepare +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x5709e51d snd_hdac_bus_stop_chip +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x5aaf390b snd_hdac_override_parm +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x603a6f34 snd_hdac_read_parm_uncached +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x629563c0 snd_hdac_bus_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x6511ce99 snd_hdac_regmap_write_raw +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x65c663d9 snd_hdac_stream_sync +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x6985e9d4 snd_hdac_regmap_update_raw +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x72aa4336 snd_hdac_bus_init_chip +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x73499a04 snd_hdac_stream_release +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x740d2e40 snd_hdac_bus_alloc_stream_pages +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x78591d1f snd_hdac_power_down +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x79bbfabe snd_hdac_bus_remove_device +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x7b220ee1 snd_hdac_stream_stop +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x7c684c6e snd_hdac_bus_update_rirb +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x84311b4a snd_hdac_stream_start +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x8df0742a snd_hdac_power_up_pm +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x93117c36 snd_hdac_exec_verb +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x93c6d4b8 snd_hdac_bus_add_device +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x96118f9a snd_hdac_stream_setup +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x979d69c3 snd_hda_bus_type +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x9a8e1877 snd_array_free +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x9f181a5f snd_hdac_read +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xa1b63898 snd_hdac_dsp_trigger +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xaa05c08a snd_hdac_device_register +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xaa5aeb99 snd_hdac_link_power +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xabcc4675 snd_hdac_bus_exit_link_reset +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xabd5e06f snd_hdac_regmap_add_vendor_verb +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xadfb9b7d snd_hdac_stream_cleanup +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xb123ed8b snd_hdac_stream_timecounter_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xb1b379c0 snd_hdac_stream_setup_periods +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xb6677e27 snd_hdac_make_cmd +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xbe7dd7dc snd_array_new +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xc2f7f91b snd_hdac_dsp_cleanup +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xcc365713 snd_hdac_bus_exec_verb +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xcc892c37 snd_hdac_power_up +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xd9bea37d snd_hdac_device_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xdd9a804a snd_hdac_calc_stream_format +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xdf96bd84 snd_hdac_stream_reset +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xe7f14d66 snd_hdac_bus_free_stream_pages +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xeda44002 snd_hdac_bus_handle_stream_irq +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xeffcad14 snd_hdac_bus_init_cmd_io +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xf02b5829 snd_hdac_query_supported_pcm +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xf143fb0e snd_hdac_device_unregister +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xf71096f4 snd_hdac_regmap_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xfb20b6a0 snd_hdac_power_down_pm +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x1dd83dcf snd_ak4113_reinit +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x5a49ca3d snd_ak4113_build +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x6a78ac5a snd_ak4113_check_rate_and_errors +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x94b4329e snd_ak4113_reg_write +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0xad9116dc snd_ak4113_external_rate +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0xdfa2a7f6 snd_ak4113_create +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x042680ed snd_hda_create_dig_out_ctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x04f1562a snd_hda_mixer_bind_tlv +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x05fa95aa snd_hda_get_int_hint +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 0x07ef46e8 snd_hda_bind_sw +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0c027b83 snd_hda_codec_get_pin_target +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0d6a1c47 snd_hda_load_patch +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x10c11d03 snd_hda_codec_configure +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x137a55f5 snd_hda_get_bool_hint +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x16a9a40d snd_hda_jack_detect_enable +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x187f99b2 snd_hda_get_pin_label +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x191537ac azx_free_streams +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1a4e45d8 snd_hda_codec_new +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1c4c0efb snd_hda_add_new_ctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2332c80a snd_hda_codec_read +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x24dee48b snd_hda_mixer_amp_switch_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2596e610 _snd_hda_set_pin_ctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2c4b7bb9 snd_hda_spdif_ctls_assign +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2d009710 snd_hda_mixer_bind_switch_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2e4e3046 snd_hda_codec_load_dsp_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2e6b77f9 snd_hda_mixer_bind_ctls_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2f6a6524 snd_hda_codec_pcm_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x33377400 hda_get_autocfg_input_label +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x339791d4 snd_hda_enable_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x359156e4 snd_hda_apply_pincfgs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x375cacd5 snd_hda_input_mux_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x38ce402b azx_interrupt +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3a9028fa snd_hda_override_conn_list +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3e9d48ba snd_hda_bind_vol +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x42a9be29 snd_hda_ctl_add +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x42e5cf8e snd_hda_shutup_pins +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x46b841bf azx_init_streams +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x47e08b82 snd_hda_correct_pin_ctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x48a149cf snd_hda_mixer_amp_switch_get_beep +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x48d140db azx_get_pos_posbuf +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4a44d216 snd_hda_codec_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4a78aae8 azx_init_chip +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4b91cb6c snd_hda_pin_sense +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4bfd1db0 snd_hda_sync_vmaster_hook +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4fb947b2 snd_hda_get_default_vref +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x507ce636 snd_hda_codec_amp_update +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5093189f snd_hda_codec_set_power_to_all +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x53b97d49 snd_hda_multi_out_dig_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x552454a8 azx_stop_all_streams +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x559d0d1e azx_codec_configure +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5648d85b snd_hda_enum_helper_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5837a979 snd_hda_create_spdif_share_sw +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x58f19483 snd_hda_codec_eapd_power_filter +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5a0b2522 snd_hda_codec_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5c72e52d __hda_codec_driver_register +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x62bda117 __snd_hda_add_vmaster +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x652559a0 snd_hda_codec_amp_init +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x65c6cdc1 snd_hda_mixer_amp_switch_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x692c2828 snd_hda_jack_report_sync +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x698882a0 snd_hda_apply_verbs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6f5c14a3 snd_hda_mixer_amp_volume_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6f735eb3 snd_hda_mixer_bind_ctls_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x70015e2b snd_hda_lock_devices +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x737a4f9e query_amp_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x74f1853b azx_stop_chip +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x755177ae snd_hda_attach_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x789499d0 azx_bus_init +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7994d28d snd_hda_codec_get_pincfg +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7a63cfaa snd_hda_jack_poll_all +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7b0df572 snd_hda_codec_load_dsp_trigger +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7cb59f28 snd_hda_pick_fixup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7ebf6d20 snd_hda_jack_tbl_get_from_tag +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x82dffd33 snd_hda_detach_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x83f62fb0 snd_hda_mixer_amp_switch_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8426f0d1 snd_hda_jack_detect_state +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8517737f snd_hda_codec_pcm_new +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8781ec76 snd_hda_multi_out_dig_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x878a0d57 snd_hda_codec_set_pincfg +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x895161c1 snd_hda_codec_update_widgets +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x896cf6d2 snd_hda_mixer_amp_volume_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8aed2f75 snd_hda_add_vmaster_hook +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8b674361 snd_hda_get_hint +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8bf52e09 snd_hda_codec_set_pin_target +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8e077400 snd_hda_add_verbs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x928dc24c snd_hda_jack_detect_enable_callback +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x935cc140 snd_hda_parse_pin_defcfg +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x99fba48b snd_hda_mixer_amp_switch_put_beep +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9a6b11d2 snd_hda_jack_unsol_event +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9b1e3dce snd_hda_jack_set_gating_jack +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9dc8b439 snd_hda_check_amp_list_power +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9e99fd3f snd_hda_get_connections +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9ef5a77d snd_hda_pick_pin_fixup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9f0caf75 snd_hda_spdif_out_of_nid +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa2827d76 snd_hda_get_jack_location +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa2fe1087 snd_hda_override_amp_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa462b550 snd_hda_apply_fixup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa4bbd80c snd_hda_multi_out_analog_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa594be4f snd_hda_add_nid +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa7a48b48 snd_hda_codec_write +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa9863673 snd_hda_create_spdif_in_ctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xaecd51d2 snd_hda_jack_add_kctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb3026d7b snd_hda_get_conn_list +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb7596d36 snd_hda_check_amp_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb92b6e15 snd_hda_sequence_write +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xbfdd55b6 snd_hda_unlock_devices +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc20f16f3 snd_hda_jack_tbl_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc255a588 snd_hda_set_power_save +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc652fd69 snd_hda_get_jack_connectivity +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc7174f9f snd_hda_jack_add_kctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc85b9588 snd_hda_mixer_bind_ctls_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc874df98 snd_hda_mixer_amp_volume_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xcb301b6e snd_hda_get_jack_type +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xcb307561 snd_hda_mixer_bind_switch_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xce3d9c41 snd_hda_find_mixer_ctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd289037a snd_hda_mixer_amp_tlv +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd531c6b5 snd_hda_multi_out_analog_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xdb2e9194 azx_get_position +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xdd3c7c00 is_jack_detectable +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xde8ab90a snd_hda_codec_setup_stream +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe118de5d snd_pcm_2_1_chmaps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe21dfad6 snd_hda_register_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe5736b0a azx_get_pos_lpib +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe84666b7 snd_hda_multi_out_dig_close +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe8cd8188 snd_hda_multi_out_dig_open +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe8d71d7e snd_hda_jack_set_dirty_all +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xea618f28 snd_hda_add_imux_item +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xebc4f7f4 snd_hda_spdif_ctls_unassign +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xeda3a721 snd_print_pcm_bits +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf097948a snd_hda_get_conn_index +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf24eaa1c snd_hda_input_mux_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf2546c95 snd_hda_set_vmaster_tlv +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf34cc611 snd_hda_codec_amp_init_stereo +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf4cada16 snd_hda_codec_load_dsp_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf66be7dd snd_hda_multi_out_analog_open +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf6a1dde1 __snd_hda_codec_cleanup_stream +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf9336dc1 hda_codec_driver_unregister +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xfbb30fb6 snd_hda_codec_amp_stereo +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xfcc33fdb azx_probe_codecs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x010b84e0 snd_hda_gen_hp_automute +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x1daab6bc snd_hda_get_path_idx +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x2946d745 snd_hda_gen_spec_init +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x358c97b6 snd_hda_gen_build_pcms +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x464c0fd0 snd_hda_gen_parse_auto_config +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x4846b890 snd_hda_get_nid_path +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x4f358966 snd_hda_get_path_from_idx +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x5f01ea68 snd_hda_gen_update_outputs +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 0x82eff0cb snd_hda_gen_free +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x83286088 snd_hda_gen_build_controls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x8465fbaa 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 0x92b223fc snd_hda_gen_stream_pm +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xa8fb03f8 snd_hda_gen_add_kctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xc0bbafdb snd_hda_activate_path +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xc97d8d04 snd_hda_gen_init +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xcd3e8883 snd_hda_gen_path_power_filter +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xdd7aeaa8 snd_hda_gen_mic_autoswitch +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xe1f241e9 snd_hda_add_new_path +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xe2e61200 snd_hda_gen_fix_pin_power +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xe80472f9 snd_hda_parse_nid_path +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xf5865a71 snd_hda_gen_line_automute +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs4271 0x187e41cb cs4271_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs4271 0x768cec1f cs4271_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs4271 0x7d05786f cs4271_dt_ids +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42l51 0x375ad98c cs42l51_of_match +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42l51 0x9027153f cs42l51_regmap +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42l51 0xf8f60ce8 cs42l51_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0x0245c4f2 cs42xx8_of_match +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0x26d25739 cs42xx8_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0x7cac7292 cs42888_data +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0xb162ec44 cs42xx8_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0xb4ce3410 cs42xx8_pm +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0xcd3794c9 cs42448_data +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-es8328 0xa6ffad0d es8328_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-es8328 0xba63ba15 es8328_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-max98090 0x1b871f2a max98090_mic_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm512x 0x0bb3026c pcm512x_remove +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm512x 0x5fc46b26 pcm512x_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm512x 0x7aca3675 pcm512x_regmap +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm512x 0x8b251434 pcm512x_pm_ops +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rl6231 0x70617a04 rl6231_get_clk_info +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rl6231 0x7f68b24d rl6231_pll_calc +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rl6231 0xdba4502f rl6231_calc_dmic_clk +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5645 0x438d585c rt5645_set_jack_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5645 0xd5e52797 rt5645_sel_asrc_clk_src +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5677 0xeef51b50 rt5677_sel_asrc_clk_src +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5677-spi 0x14152c7f rt5677_spi_burst_write +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5677-spi 0x33300271 rt5677_spi_write +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0x02bb9827 sigmadsp_attach +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0x1e6ef6f9 devm_sigmadsp_init +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0x4d267622 sigmadsp_reset +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0x80d20408 sigmadsp_restrict_params +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0xcfcc88d4 sigmadsp_setup +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp-i2c 0x79481b79 devm_sigmadsp_init_i2c +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-ssm2602 0x1b2f21ef ssm2602_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-ssm2602 0xd952b26d ssm2602_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-tpa6130a2 0x3bbb3250 tpa6130a2_stereo_enable +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-tpa6130a2 0x82cbe876 tpa6130a2_add_controls +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-ts3a227e 0x3fd636a0 ts3a227e_enable_jack_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8804 0x61189b92 wm8804_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8804 0x6f910795 wm8804_pm +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8804 0x7e286ebf wm8804_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8804 0xf09c7e6a wm8804_remove +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8903 0xdbb0932d wm8903_mic_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8962 0xa7198251 wm8962_mic_detect +EXPORT_SYMBOL_GPL sound/soc/fsl/snd-soc-fsl-asrc 0x0b4b3f95 fsl_asrc_platform +EXPORT_SYMBOL_GPL sound/soc/fsl/snd-soc-fsl-asrc 0x7e9088ca fsl_asrc_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/qcom/snd-soc-lpass-cpu 0x00370f45 asoc_qcom_lpass_cpu_platform_remove +EXPORT_SYMBOL_GPL sound/soc/qcom/snd-soc-lpass-cpu 0x2db93738 asoc_qcom_lpass_cpu_dai_ops +EXPORT_SYMBOL_GPL sound/soc/qcom/snd-soc-lpass-cpu 0x53814909 asoc_qcom_lpass_cpu_platform_probe +EXPORT_SYMBOL_GPL sound/soc/qcom/snd-soc-lpass-cpu 0xb522fca7 asoc_qcom_lpass_cpu_dai_probe +EXPORT_SYMBOL_GPL sound/soc/qcom/snd-soc-lpass-platform 0x42d174bd asoc_qcom_lpass_platform_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0102ea83 snd_soc_unregister_component +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x01541f79 snd_soc_dpcm_be_can_update +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x02af4fa8 snd_soc_get_pcm_runtime +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0318c17a devm_snd_soc_register_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x062c7b98 snd_soc_dapm_nc_pin_unlocked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0723f21e snd_soc_bytes_info +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0736c292 soc_ac97_ops +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x07c4d240 snd_soc_put_volsw_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x07d251f7 snd_soc_lookup_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0bddb7e7 snd_soc_get_strobe +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0e5e7339 snd_soc_component_write +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0e760dcb snd_soc_get_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x102d1c79 snd_soc_dpcm_get_substream +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x123721a9 snd_soc_add_card_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1250d79c snd_dmaengine_pcm_prepare_slave_config +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x13323a7d snd_dmaengine_pcm_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1363c8ea snd_soc_dapm_sync +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x145e147c snd_soc_card_jack_new +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x167abb92 snd_soc_bytes_get +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x16ab3f9b snd_soc_put_volsw_range +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x19738320 snd_soc_set_ac97_ops_of_reset +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1ac9197d snd_soc_add_codec_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1ace3d32 snd_soc_register_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1ae29eb0 snd_soc_dapm_get_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1be4c83c snd_soc_info_volsw_range +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1f59dee5 snd_soc_dapm_put_pin_switch +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1fcad257 snd_soc_debugfs_root +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x22c26afa snd_soc_component_init_regmap +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2541a979 snd_soc_calc_frame_size +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2561c247 snd_soc_dai_set_tdm_slot +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x26402e6e snd_soc_dapm_force_enable_pin_unlocked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2665fd31 snd_soc_test_bits +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x267b4a11 snd_soc_dpcm_be_set_state +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x26fef2c3 snd_soc_of_parse_daifmt +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x270051b2 snd_soc_new_ac97_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2dcc4796 snd_soc_dai_set_sysclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2f6021e8 snd_soc_dapm_enable_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2fffa034 devm_snd_dmaengine_pcm_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x33aa0cbd snd_soc_dapm_new_widgets +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3550ae2d snd_soc_dai_set_channel_map +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x35e152ad snd_soc_put_strobe +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x37c30b00 snd_soc_unregister_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x381e863b snd_soc_add_dai_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3c618b63 snd_soc_dapm_force_enable_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3db4836d snd_soc_add_component_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x408fbb59 snd_soc_register_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4145ab42 snd_soc_platform_trigger +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4253ad01 snd_soc_dapm_put_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x45b4978b snd_soc_bytes_info_ext +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x472e0ec4 snd_soc_info_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4cd4fc9e snd_soc_dai_set_fmt +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4d46ebab snd_soc_get_dai_substream +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x550cf81d snd_soc_jack_notifier_unregister +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x553bfcd8 snd_soc_dai_set_bclk_ratio +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5712ebc4 snd_soc_dapm_mux_update_power +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x575e8a06 snd_soc_cnew +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5ad431f2 snd_soc_read +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5c2821dd snd_soc_of_get_dai_link_codecs +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5d34ef51 snd_soc_jack_notifier_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5da20ab4 snd_soc_dapm_weak_routes +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5db3c45a dpcm_be_dai_trigger +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5eae5f6c snd_soc_set_ac97_ops +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5f424dd9 snd_soc_jack_free_gpios +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x620f9587 snd_soc_of_parse_tdm_slot +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x62f39574 snd_soc_unregister_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x631018bf snd_soc_write +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6488057b snd_soc_of_parse_audio_routing +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6623498c snd_soc_dai_set_pll +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x665e7843 snd_soc_jack_add_gpiods +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x66a63124 snd_soc_dai_set_clkdiv +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6bf8033a snd_soc_remove_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6e0025ed snd_soc_register_card +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6f05e8d2 snd_soc_add_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6fdd6994 snd_soc_dapm_disable_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x736dede1 snd_soc_dapm_get_pin_status +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x73ccc679 snd_soc_set_runtime_hwparams +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x740e7cfe snd_soc_dapm_kcontrol_dapm +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x78edfdac snd_soc_dapm_disable_pin_unlocked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7adcc7ae snd_soc_dai_set_tristate +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7cb16a85 snd_soc_dapm_get_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7e606130 snd_soc_calc_bclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x822e1c09 snd_soc_get_xr_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8697b0cb snd_soc_pm_ops +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x87d21a90 dapm_regulator_event +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x891f1d61 dapm_clock_event +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x89f93d66 snd_soc_of_parse_audio_simple_widgets +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x89fdc9f0 snd_soc_get_volsw_range +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9120fba0 snd_soc_put_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9133a622 snd_soc_dpcm_fe_can_update +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x92b7a946 snd_soc_dapm_mixer_update_power +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x93e98102 snd_soc_dapm_get_pin_switch +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x96b7940c snd_soc_register_component +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9828d770 snd_soc_dapm_new_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9865da86 snd_soc_suspend +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x988321ad snd_soc_info_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9ba74240 snd_soc_dapm_ignore_suspend +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9bbf61fd snd_soc_dpcm_can_be_free_stop +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9ccd329f snd_soc_dapm_nc_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9ddb8aa7 snd_soc_jack_add_gpios +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9e6d5908 snd_soc_jack_get_type +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9f759e91 snd_soc_component_update_bits +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa1691479 snd_soc_dapm_put_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa22993a1 snd_soc_of_parse_card_name +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xaaf393ea snd_soc_unregister_card +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xaf6a6981 snd_soc_dpcm_can_be_params +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xafb59063 snd_soc_get_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb0e3a103 snd_soc_codec_set_pll +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb52c1430 snd_soc_runtime_set_dai_fmt +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xba58e29d snd_soc_jack_add_pins +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xbc3fb8c1 snd_soc_dai_digital_mute +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xbc48f141 devm_snd_soc_register_component +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xbd990fa6 snd_soc_dapm_sync_unlocked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc0489548 snd_soc_dapm_add_routes +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc338c3e4 devm_snd_soc_register_card +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc3bf006f snd_soc_codec_set_sysclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc4c23de8 snd_soc_dpcm_be_get_state +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc8269f94 snd_soc_params_to_frame_size +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc914855e snd_soc_card_get_kcontrol +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xca435404 snd_soc_dapm_del_routes +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xcd70c823 snd_soc_component_async_complete +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xcf73066a snd_soc_platform_read +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xcfdd4d87 snd_soc_free_ac97_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd00c972e snd_soc_add_platform_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd0bc8dee snd_soc_put_xr_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd101d6ee snd_soc_update_bits +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd104705e snd_soc_component_read +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd1c7cf72 snd_soc_resume +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd769a127 snd_soc_component_test_bits +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd7efe481 snd_soc_component_update_bits_async +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd80fa3d0 snd_dmaengine_pcm_unregister +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd98e1136 dapm_mark_endpoints_dirty +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xdaf83039 snd_soc_dapm_enable_pin_unlocked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xdd325d04 snd_soc_get_volsw_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xdde7cfbc snd_soc_limit_volume +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xde4de93b snd_soc_info_xr_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xdf6ab4ae snd_soc_bytes_tlv_callback +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe12dfaf7 snd_soc_dapm_info_pin_switch +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe54ffa58 dapm_kcontrol_get_value +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xeb6c3537 snd_soc_of_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 0xebe8f0e9 snd_soc_dapm_free +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xec2ef142 snd_soc_platform_write +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xece70d1a snd_soc_dapm_force_bias_level +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf3088552 snd_soc_poweroff +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf5045dbb snd_soc_jack_add_zones +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf717734c snd_soc_component_exit_regmap +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf7d07248 snd_soc_jack_report +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xfb6445ff snd_soc_bytes_put +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xfd270184 snd_soc_put_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xfdc73985 snd_soc_info_volsw_sx +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x05ec3a8a line6_init_midi +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x0b7d0034 line6_suspend +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x202a1b1b line6_midi_id +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x6429a4df line6_probe +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x73a65112 line6_init_pcm +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x7ef3a32c line6_disconnect +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x856ccdea line6_version_request_async +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x8c5e4e73 line6_pcm_release +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x8ec973cd line6_start_timer +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xb4b349e9 line6_read_serial_number +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xbd6caa20 line6_alloc_sysex_buffer +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xc28fd84d line6_resume +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xc4c31a63 line6_read_data +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xcc2b936a line6_send_sysex_message +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xd72be2b9 line6_write_data +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xe9a48542 line6_send_raw_message_async +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xeb9cd971 line6_pcm_acquire +EXPORT_SYMBOL_GPL vmlinux 0x0000ba94 regulator_register +EXPORT_SYMBOL_GPL vmlinux 0x003cbf6d xenbus_grant_ring +EXPORT_SYMBOL_GPL vmlinux 0x004511c2 regulator_list_voltage_table +EXPORT_SYMBOL_GPL vmlinux 0x005d4af5 __root_device_register +EXPORT_SYMBOL_GPL vmlinux 0x006820b4 pci_write_msi_msg +EXPORT_SYMBOL_GPL vmlinux 0x006f9dc2 trace_define_field +EXPORT_SYMBOL_GPL vmlinux 0x0070ef14 __tracepoint_rpm_idle +EXPORT_SYMBOL_GPL vmlinux 0x0081e62b register_asymmetric_key_parser +EXPORT_SYMBOL_GPL vmlinux 0x009304b6 ata_tf_from_fis +EXPORT_SYMBOL_GPL vmlinux 0x009d779c __platform_driver_register +EXPORT_SYMBOL_GPL vmlinux 0x00a90dd7 ipv4_sk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x00b12d32 inet6_hash_connect +EXPORT_SYMBOL_GPL vmlinux 0x00ca8ce3 security_inode_create +EXPORT_SYMBOL_GPL vmlinux 0x00d0d1ac bus_get_kset +EXPORT_SYMBOL_GPL vmlinux 0x00da6301 user_preparse +EXPORT_SYMBOL_GPL vmlinux 0x00e73440 pm_generic_poweroff_late +EXPORT_SYMBOL_GPL vmlinux 0x00ebcb5d ata_id_string +EXPORT_SYMBOL_GPL vmlinux 0x00fd1d4e device_create_file +EXPORT_SYMBOL_GPL vmlinux 0x01010c6d klist_add_before +EXPORT_SYMBOL_GPL vmlinux 0x0116ac90 __clocksource_update_freq_scale +EXPORT_SYMBOL_GPL vmlinux 0x011b2574 __ip_route_output_key +EXPORT_SYMBOL_GPL vmlinux 0x011cf028 regulator_suspend_finish +EXPORT_SYMBOL_GPL vmlinux 0x013b1af4 tpm2_calc_ordinal_duration +EXPORT_SYMBOL_GPL vmlinux 0x01535df1 virtqueue_enable_cb +EXPORT_SYMBOL_GPL vmlinux 0x0167e9e4 relay_reset +EXPORT_SYMBOL_GPL vmlinux 0x016c9592 extcon_get_edev_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0x0191f8ae inet_ehash_locks_alloc +EXPORT_SYMBOL_GPL vmlinux 0x01c6cb0c cpu_cluster_pm_enter +EXPORT_SYMBOL_GPL vmlinux 0x01e1a8de kgdb_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x01e45e7c of_property_count_elems_of_size +EXPORT_SYMBOL_GPL vmlinux 0x01eedf7c trace_event_buffer_lock_reserve +EXPORT_SYMBOL_GPL vmlinux 0x02310a7f pinctrl_dev_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x023a2268 ip6_sk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x024d14f6 devm_regulator_get_optional +EXPORT_SYMBOL_GPL vmlinux 0x026f1639 xen_swiotlb_unmap_sg_attrs +EXPORT_SYMBOL_GPL vmlinux 0x027ba3b2 sdio_get_host_pm_caps +EXPORT_SYMBOL_GPL vmlinux 0x0287e06d nd_blk_region_provider_data +EXPORT_SYMBOL_GPL vmlinux 0x0293e33e register_trace_event +EXPORT_SYMBOL_GPL vmlinux 0x02ac5fb8 devm_regulator_bulk_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x02c0fa4a event_triggers_call +EXPORT_SYMBOL_GPL vmlinux 0x02e6bf85 devres_destroy +EXPORT_SYMBOL_GPL vmlinux 0x02e7eb64 dev_pm_qos_hide_latency_tolerance +EXPORT_SYMBOL_GPL vmlinux 0x02eb26f0 cpufreq_register_governor +EXPORT_SYMBOL_GPL vmlinux 0x02fea2ae rcu_note_context_switch +EXPORT_SYMBOL_GPL vmlinux 0x02ff7e78 iommu_unmap +EXPORT_SYMBOL_GPL vmlinux 0x03082eae thermal_zone_of_sensor_register +EXPORT_SYMBOL_GPL vmlinux 0x0321cdbf of_alias_get_highest_id +EXPORT_SYMBOL_GPL vmlinux 0x03275457 irq_set_affinity_hint +EXPORT_SYMBOL_GPL vmlinux 0x0328d5cb tpm_pm_resume +EXPORT_SYMBOL_GPL vmlinux 0x03327a5e acpi_dma_request_slave_chan_by_name +EXPORT_SYMBOL_GPL vmlinux 0x033832c7 usb_amd_hang_symptom_quirk +EXPORT_SYMBOL_GPL vmlinux 0x0343bdf1 __i2c_board_list +EXPORT_SYMBOL_GPL vmlinux 0x0345555a ioremap_page_range +EXPORT_SYMBOL_GPL vmlinux 0x0351589b component_master_add_with_match +EXPORT_SYMBOL_GPL vmlinux 0x0364da22 ata_pci_device_resume +EXPORT_SYMBOL_GPL vmlinux 0x0367b8c1 debugfs_rename +EXPORT_SYMBOL_GPL vmlinux 0x036d2d9d _submit_bh +EXPORT_SYMBOL_GPL vmlinux 0x039df85a module_mutex +EXPORT_SYMBOL_GPL vmlinux 0x039fd867 trace_clock_global +EXPORT_SYMBOL_GPL vmlinux 0x03d6da54 ata_do_dev_read_id +EXPORT_SYMBOL_GPL vmlinux 0x03dd8004 usb_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0x03e3686c ata_timing_cycle2mode +EXPORT_SYMBOL_GPL vmlinux 0x03e47d1e crypto_register_alg +EXPORT_SYMBOL_GPL vmlinux 0x03ef45ed regulator_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x03f35a01 pwmchip_add_with_polarity +EXPORT_SYMBOL_GPL vmlinux 0x0402cbbf preempt_notifier_inc +EXPORT_SYMBOL_GPL vmlinux 0x0408951b crypto_register_aead +EXPORT_SYMBOL_GPL vmlinux 0x041932a8 ata_platform_remove_one +EXPORT_SYMBOL_GPL vmlinux 0x0428b9ac dev_coredumpv +EXPORT_SYMBOL_GPL vmlinux 0x04370641 xen_dbgp_external_startup +EXPORT_SYMBOL_GPL vmlinux 0x0459957c driver_find_device +EXPORT_SYMBOL_GPL vmlinux 0x0465a073 regmap_reg_in_ranges +EXPORT_SYMBOL_GPL vmlinux 0x047bb2f3 rtc_irq_set_state +EXPORT_SYMBOL_GPL vmlinux 0x04866026 regmap_fields_write +EXPORT_SYMBOL_GPL vmlinux 0x048b5f8d twl4030_audio_get_mclk +EXPORT_SYMBOL_GPL vmlinux 0x0499deb0 __clk_get_rate +EXPORT_SYMBOL_GPL vmlinux 0x04a627d2 devm_hwrng_unregister +EXPORT_SYMBOL_GPL vmlinux 0x04c3f2c1 gnttab_empty_grant_references +EXPORT_SYMBOL_GPL vmlinux 0x04c4f603 mpi_get_buffer +EXPORT_SYMBOL_GPL vmlinux 0x04c94e1c inet_csk_addr2sockaddr +EXPORT_SYMBOL_GPL vmlinux 0x04ccee6b blk_mq_unfreeze_queue +EXPORT_SYMBOL_GPL vmlinux 0x04df8fbc lzo1x_decompress_safe +EXPORT_SYMBOL_GPL vmlinux 0x04f336bb hypervisor_kobj +EXPORT_SYMBOL_GPL vmlinux 0x04fe3de9 dev_pm_qos_expose_latency_tolerance +EXPORT_SYMBOL_GPL vmlinux 0x04ffc566 fsstack_copy_inode_size +EXPORT_SYMBOL_GPL vmlinux 0x0501bf06 virtqueue_get_vring_size +EXPORT_SYMBOL_GPL vmlinux 0x050d9b96 ohci_setup +EXPORT_SYMBOL_GPL vmlinux 0x052114a4 virtio_device_restore +EXPORT_SYMBOL_GPL vmlinux 0x05236502 irq_set_default_host +EXPORT_SYMBOL_GPL vmlinux 0x053494cb tpm_get_random +EXPORT_SYMBOL_GPL vmlinux 0x05382f9c fuse_conn_get +EXPORT_SYMBOL_GPL vmlinux 0x054ae73f wm5102_spi_regmap +EXPORT_SYMBOL_GPL vmlinux 0x054e550b kernel_halt +EXPORT_SYMBOL_GPL vmlinux 0x05573fd7 __srcu_read_unlock +EXPORT_SYMBOL_GPL vmlinux 0x056db1e1 hrtimer_active +EXPORT_SYMBOL_GPL vmlinux 0x05887d73 devm_power_supply_register_no_ws +EXPORT_SYMBOL_GPL vmlinux 0x058b582a vt_get_leds +EXPORT_SYMBOL_GPL vmlinux 0x059ce2d2 device_show_int +EXPORT_SYMBOL_GPL vmlinux 0x05ad370d dev_get_regmap +EXPORT_SYMBOL_GPL vmlinux 0x05c37211 spi_get_device_id +EXPORT_SYMBOL_GPL vmlinux 0x05c50caa set_primary_fwnode +EXPORT_SYMBOL_GPL vmlinux 0x05d03b8e dev_pm_opp_disable +EXPORT_SYMBOL_GPL vmlinux 0x05d17c8f x509_request_asymmetric_key +EXPORT_SYMBOL_GPL vmlinux 0x05d5d369 acpi_dev_runtime_resume +EXPORT_SYMBOL_GPL vmlinux 0x0618edcc hwmon_device_register +EXPORT_SYMBOL_GPL vmlinux 0x0626da5f od_unregister_powersave_bias_handler +EXPORT_SYMBOL_GPL vmlinux 0x063b99c4 ata_eh_qc_retry +EXPORT_SYMBOL_GPL vmlinux 0x064db9a5 mark_mounts_for_expiry +EXPORT_SYMBOL_GPL vmlinux 0x06698c3f gfn_to_page_many_atomic +EXPORT_SYMBOL_GPL vmlinux 0x06c7f743 xenbus_unmap_ring +EXPORT_SYMBOL_GPL vmlinux 0x06d42601 xfrm_audit_state_add +EXPORT_SYMBOL_GPL vmlinux 0x06d549e6 pinctrl_free_gpio +EXPORT_SYMBOL_GPL vmlinux 0x06d6c907 bus_set_iommu +EXPORT_SYMBOL_GPL vmlinux 0x06e1d37b console_drivers +EXPORT_SYMBOL_GPL vmlinux 0x0704b1ed i2c_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x0723be03 regulator_get_bypass_regmap +EXPORT_SYMBOL_GPL vmlinux 0x0739f429 x509_check_signature +EXPORT_SYMBOL_GPL vmlinux 0x074723c2 crypto_alloc_akcipher +EXPORT_SYMBOL_GPL vmlinux 0x0762403c edac_put_sysfs_subsys +EXPORT_SYMBOL_GPL vmlinux 0x07962f4f xenbus_dev_cancel +EXPORT_SYMBOL_GPL vmlinux 0x079e9170 extcon_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x07a58fdc wm5110_patch +EXPORT_SYMBOL_GPL vmlinux 0x07a6695a blk_queue_dma_drain +EXPORT_SYMBOL_GPL vmlinux 0x07aa3d70 gpiod_get_raw_value +EXPORT_SYMBOL_GPL vmlinux 0x07b21f85 kdb_get_kbd_char +EXPORT_SYMBOL_GPL vmlinux 0x07b52e38 rtnl_unregister +EXPORT_SYMBOL_GPL vmlinux 0x07bee7c8 pci_test_config_bits +EXPORT_SYMBOL_GPL vmlinux 0x07c86807 hrtimer_try_to_cancel +EXPORT_SYMBOL_GPL vmlinux 0x07c912eb xen_xlate_remap_gfn_array +EXPORT_SYMBOL_GPL vmlinux 0x07f9d6b8 subsys_interface_register +EXPORT_SYMBOL_GPL vmlinux 0x0802b763 scsi_ioctl_block_when_processing_errors +EXPORT_SYMBOL_GPL vmlinux 0x08156773 name_to_dev_t +EXPORT_SYMBOL_GPL vmlinux 0x0846b5db wm8350_device_init +EXPORT_SYMBOL_GPL vmlinux 0x0856698b spi_register_master +EXPORT_SYMBOL_GPL vmlinux 0x087ae01c usb_sg_init +EXPORT_SYMBOL_GPL vmlinux 0x088bfa7e cancel_work_sync +EXPORT_SYMBOL_GPL vmlinux 0x0893f14f regulator_get_hardware_vsel_register +EXPORT_SYMBOL_GPL vmlinux 0x08bbda38 trace_seq_path +EXPORT_SYMBOL_GPL vmlinux 0x08bc0870 compat_put_timespec +EXPORT_SYMBOL_GPL vmlinux 0x08d3481f ping_queue_rcv_skb +EXPORT_SYMBOL_GPL vmlinux 0x08d74df1 ohci_hub_control +EXPORT_SYMBOL_GPL vmlinux 0x08f4fd6b arizona_clk32k_disable +EXPORT_SYMBOL_GPL vmlinux 0x08ffeb71 pm_generic_thaw_early +EXPORT_SYMBOL_GPL vmlinux 0x091eb9b4 round_jiffies +EXPORT_SYMBOL_GPL vmlinux 0x0932c2bd fb_bl_default_curve +EXPORT_SYMBOL_GPL vmlinux 0x0941319f __blkg_prfill_rwstat +EXPORT_SYMBOL_GPL vmlinux 0x09437748 ring_buffer_read_events_cpu +EXPORT_SYMBOL_GPL vmlinux 0x09469482 kfree_call_rcu +EXPORT_SYMBOL_GPL vmlinux 0x0949a55b rdev_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x0952af60 fb_videomode_from_videomode +EXPORT_SYMBOL_GPL vmlinux 0x09611cf2 da903x_write +EXPORT_SYMBOL_GPL vmlinux 0x09a33ac1 component_del +EXPORT_SYMBOL_GPL vmlinux 0x09b5093d regulator_bulk_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x09bdc994 usb_root_hub_lost_power +EXPORT_SYMBOL_GPL vmlinux 0x09c2ee16 acpi_subsys_runtime_suspend +EXPORT_SYMBOL_GPL vmlinux 0x09e01939 usb_driver_set_configuration +EXPORT_SYMBOL_GPL vmlinux 0x09eeee44 alarmtimer_get_rtcdev +EXPORT_SYMBOL_GPL vmlinux 0x09f05229 seq_release_net +EXPORT_SYMBOL_GPL vmlinux 0x0a07217c xen_swiotlb_map_sg_attrs +EXPORT_SYMBOL_GPL vmlinux 0x0a0bfa8c regmap_field_alloc +EXPORT_SYMBOL_GPL vmlinux 0x0a1af7be vfs_getxattr +EXPORT_SYMBOL_GPL vmlinux 0x0a2075e6 regmap_fields_read +EXPORT_SYMBOL_GPL vmlinux 0x0a37c909 fuse_do_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x0a47ab08 pci_restore_msi_state +EXPORT_SYMBOL_GPL vmlinux 0x0a4bc868 posix_timer_event +EXPORT_SYMBOL_GPL vmlinux 0x0a50c445 sock_update_netprioidx +EXPORT_SYMBOL_GPL vmlinux 0x0a59b0ef usb_hcd_unmap_urb_setup_for_dma +EXPORT_SYMBOL_GPL vmlinux 0x0a766017 device_set_wakeup_enable +EXPORT_SYMBOL_GPL vmlinux 0x0a930d58 of_gen_pool_get +EXPORT_SYMBOL_GPL vmlinux 0x0a9c7e4a napi_by_id +EXPORT_SYMBOL_GPL vmlinux 0x0ab0f51b bdev_read_page +EXPORT_SYMBOL_GPL vmlinux 0x0ab768b9 md_rdev_init +EXPORT_SYMBOL_GPL vmlinux 0x0ae8904e amba_device_add +EXPORT_SYMBOL_GPL vmlinux 0x0aecb70d dma_buf_kmap +EXPORT_SYMBOL_GPL vmlinux 0x0b07abe2 unshare_fs_struct +EXPORT_SYMBOL_GPL vmlinux 0x0b187028 regulator_is_supported_voltage +EXPORT_SYMBOL_GPL vmlinux 0x0b38fd55 devfreq_event_set_event +EXPORT_SYMBOL_GPL vmlinux 0x0b74d5b6 netdev_rx_handler_register +EXPORT_SYMBOL_GPL vmlinux 0x0b86a3f5 max_gen_clk_ops +EXPORT_SYMBOL_GPL vmlinux 0x0baad31e rhashtable_init +EXPORT_SYMBOL_GPL vmlinux 0x0bca315d __blkg_prfill_u64 +EXPORT_SYMBOL_GPL vmlinux 0x0bd832c8 tps80031_ext_power_req_config +EXPORT_SYMBOL_GPL vmlinux 0x0be13fff smp_call_function_any +EXPORT_SYMBOL_GPL vmlinux 0x0be36fa5 wakeup_source_register +EXPORT_SYMBOL_GPL vmlinux 0x0bfa3a19 rcu_idle_exit +EXPORT_SYMBOL_GPL vmlinux 0x0bff74ee regulator_set_mode +EXPORT_SYMBOL_GPL vmlinux 0x0c0f503d usb_gen_phy_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x0c20bc5d blk_mq_freeze_queue_start +EXPORT_SYMBOL_GPL vmlinux 0x0c2cdbf1 synchronize_sched +EXPORT_SYMBOL_GPL vmlinux 0x0c315c0e ata_acpi_cbl_80wire +EXPORT_SYMBOL_GPL vmlinux 0x0c404d0a stop_machine +EXPORT_SYMBOL_GPL vmlinux 0x0c4b53aa driver_register +EXPORT_SYMBOL_GPL vmlinux 0x0c56abb2 ata_wait_register +EXPORT_SYMBOL_GPL vmlinux 0x0c58d944 ip6_local_out_sk +EXPORT_SYMBOL_GPL vmlinux 0x0c63f8cf usb_remove_hcd +EXPORT_SYMBOL_GPL vmlinux 0x0c80e3fe efivar_init +EXPORT_SYMBOL_GPL vmlinux 0x0cab0b4c acpi_unbind_one +EXPORT_SYMBOL_GPL vmlinux 0x0cc1e40f crypto_it_tab +EXPORT_SYMBOL_GPL vmlinux 0x0ccb8d35 extcon_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x0cfcd695 led_trigger_event +EXPORT_SYMBOL_GPL vmlinux 0x0d31a25d inet_csk_compat_getsockopt +EXPORT_SYMBOL_GPL vmlinux 0x0d37978b led_trigger_unregister +EXPORT_SYMBOL_GPL vmlinux 0x0d4961de nf_log_buf_open +EXPORT_SYMBOL_GPL vmlinux 0x0d657454 register_virtio_driver +EXPORT_SYMBOL_GPL vmlinux 0x0d7a33c3 tcp_twsk_destructor +EXPORT_SYMBOL_GPL vmlinux 0x0d7d4d70 rcu_batches_completed +EXPORT_SYMBOL_GPL vmlinux 0x0d848723 percpu_ida_alloc +EXPORT_SYMBOL_GPL vmlinux 0x0d9c345a kthread_unpark +EXPORT_SYMBOL_GPL vmlinux 0x0da292cb device_remove_bin_file +EXPORT_SYMBOL_GPL vmlinux 0x0ddb1cd7 llist_reverse_order +EXPORT_SYMBOL_GPL vmlinux 0x0dff5d56 blk_mq_register_disk +EXPORT_SYMBOL_GPL vmlinux 0x0e007edf xen_evtchn_nr_channels +EXPORT_SYMBOL_GPL vmlinux 0x0e1ca466 of_thermal_is_trip_valid +EXPORT_SYMBOL_GPL vmlinux 0x0e2ccb97 list_lru_add +EXPORT_SYMBOL_GPL vmlinux 0x0e382f89 cpu_topology +EXPORT_SYMBOL_GPL vmlinux 0x0e71f62b bus_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x0e98e5e2 ata_wait_after_reset +EXPORT_SYMBOL_GPL vmlinux 0x0ea41f64 pm_qos_add_request +EXPORT_SYMBOL_GPL vmlinux 0x0eb1847f xhci_run +EXPORT_SYMBOL_GPL vmlinux 0x0ebfb0f3 devres_alloc +EXPORT_SYMBOL_GPL vmlinux 0x0ecf823a static_key_slow_dec +EXPORT_SYMBOL_GPL vmlinux 0x0ed4f31f raw_seq_start +EXPORT_SYMBOL_GPL vmlinux 0x0ef87dac gpiod_put_array +EXPORT_SYMBOL_GPL vmlinux 0x0f0b66b5 param_ops_bool_enable_only +EXPORT_SYMBOL_GPL vmlinux 0x0f336d7f rcutorture_get_gp_data +EXPORT_SYMBOL_GPL vmlinux 0x0f42406c clk_register_fractional_divider +EXPORT_SYMBOL_GPL vmlinux 0x0f424d91 regulator_disable_regmap +EXPORT_SYMBOL_GPL vmlinux 0x0f4c832b acpi_match_device +EXPORT_SYMBOL_GPL vmlinux 0x0f59c56d device_get_child_node_count +EXPORT_SYMBOL_GPL vmlinux 0x0f6453b0 __percpu_ida_init +EXPORT_SYMBOL_GPL vmlinux 0x0f6b06de do_take_over_console +EXPORT_SYMBOL_GPL vmlinux 0x0f7252d8 kvm_vcpu_init +EXPORT_SYMBOL_GPL vmlinux 0x0f751aea input_event_from_user +EXPORT_SYMBOL_GPL vmlinux 0x0f78b74d __rtnl_register +EXPORT_SYMBOL_GPL vmlinux 0x0f9c3943 page_mkclean +EXPORT_SYMBOL_GPL vmlinux 0x0fb221f9 sata_pmp_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x0fb8869b usb_hcd_amd_remote_wakeup_quirk +EXPORT_SYMBOL_GPL vmlinux 0x0fe2d570 xenbus_directory +EXPORT_SYMBOL_GPL vmlinux 0x10138352 tracing_on +EXPORT_SYMBOL_GPL vmlinux 0x101a6987 blk_abort_request +EXPORT_SYMBOL_GPL vmlinux 0x1040cb33 pci_max_pasids +EXPORT_SYMBOL_GPL vmlinux 0x105745d0 sdio_readw +EXPORT_SYMBOL_GPL vmlinux 0x10601b58 usb_hub_release_port +EXPORT_SYMBOL_GPL vmlinux 0x10693088 __get_vm_area +EXPORT_SYMBOL_GPL vmlinux 0x10789e05 fat_detach +EXPORT_SYMBOL_GPL vmlinux 0x107cf0dd apply_to_page_range +EXPORT_SYMBOL_GPL vmlinux 0x10864a87 of_reset_control_get +EXPORT_SYMBOL_GPL vmlinux 0x10adc165 dm_set_target_max_io_len +EXPORT_SYMBOL_GPL vmlinux 0x10bdc401 blkcipher_walk_done +EXPORT_SYMBOL_GPL vmlinux 0x10d359f4 acpiphp_unregister_attention +EXPORT_SYMBOL_GPL vmlinux 0x10e85ab9 regulator_set_bypass_regmap +EXPORT_SYMBOL_GPL vmlinux 0x10ec6cff regulator_can_change_voltage +EXPORT_SYMBOL_GPL vmlinux 0x10ecc52c usb_amd_quirk_pll_enable +EXPORT_SYMBOL_GPL vmlinux 0x10fd8c00 vfs_kern_mount +EXPORT_SYMBOL_GPL vmlinux 0x111a95e2 sdio_f0_writeb +EXPORT_SYMBOL_GPL vmlinux 0x11435c83 fat_build_inode +EXPORT_SYMBOL_GPL vmlinux 0x114ff1e8 regulator_set_voltage_time_sel +EXPORT_SYMBOL_GPL vmlinux 0x11715484 __tracepoint_mc_event +EXPORT_SYMBOL_GPL vmlinux 0x1172ce54 rtc_ktime_to_tm +EXPORT_SYMBOL_GPL vmlinux 0x11759f71 init_uts_ns +EXPORT_SYMBOL_GPL vmlinux 0x11a6e873 list_lru_destroy +EXPORT_SYMBOL_GPL vmlinux 0x11b83884 ata_sg_init +EXPORT_SYMBOL_GPL vmlinux 0x11bbbb22 inet6_lookup +EXPORT_SYMBOL_GPL vmlinux 0x11caddc7 trace_seq_printf +EXPORT_SYMBOL_GPL vmlinux 0x121d958a unregister_die_notifier +EXPORT_SYMBOL_GPL vmlinux 0x12282979 shmem_truncate_range +EXPORT_SYMBOL_GPL vmlinux 0x124f2056 crypto_get_attr_type +EXPORT_SYMBOL_GPL vmlinux 0x1268f357 resume_device_irqs +EXPORT_SYMBOL_GPL vmlinux 0x128eab79 amba_ahb_device_add_res +EXPORT_SYMBOL_GPL vmlinux 0x1297f358 ip_route_output_flow +EXPORT_SYMBOL_GPL vmlinux 0x12adc702 ping_hash +EXPORT_SYMBOL_GPL vmlinux 0x12b0dba9 tps65912_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x12b5193c fwnode_handle_put +EXPORT_SYMBOL_GPL vmlinux 0x12ec4b28 regcache_cache_bypass +EXPORT_SYMBOL_GPL vmlinux 0x130de01d trace_seq_bitmask +EXPORT_SYMBOL_GPL vmlinux 0x131a5ed7 regmap_del_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0x131b9a89 usb_put_dev +EXPORT_SYMBOL_GPL vmlinux 0x131db64a system_long_wq +EXPORT_SYMBOL_GPL vmlinux 0x135874c8 serial8250_do_startup +EXPORT_SYMBOL_GPL vmlinux 0x136209db power_supply_reg_notifier +EXPORT_SYMBOL_GPL vmlinux 0x138aff76 gnttab_init +EXPORT_SYMBOL_GPL vmlinux 0x138ced6f irq_get_domain_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x13924723 devm_get_free_pages +EXPORT_SYMBOL_GPL vmlinux 0x1394b8ed __ata_change_queue_depth +EXPORT_SYMBOL_GPL vmlinux 0x13a687f5 devm_kfree +EXPORT_SYMBOL_GPL vmlinux 0x13a93d4e pci_create_root_bus +EXPORT_SYMBOL_GPL vmlinux 0x13ad647f scatterwalk_bytes_sglen +EXPORT_SYMBOL_GPL vmlinux 0x13b27608 ata_noop_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0x13b89dee pinctrl_request_gpio +EXPORT_SYMBOL_GPL vmlinux 0x13ce87e8 asn1_ber_decoder +EXPORT_SYMBOL_GPL vmlinux 0x13f17ea3 __fat_fs_error +EXPORT_SYMBOL_GPL vmlinux 0x14213abd __pci_reset_function_locked +EXPORT_SYMBOL_GPL vmlinux 0x1425dd46 sata_std_hardreset +EXPORT_SYMBOL_GPL vmlinux 0x142c0cd8 class_for_each_device +EXPORT_SYMBOL_GPL vmlinux 0x1433cbc4 __tracepoint_wbc_writepage +EXPORT_SYMBOL_GPL vmlinux 0x147a04ed tpm2_gen_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x14812747 pid_vnr +EXPORT_SYMBOL_GPL vmlinux 0x14ae34a6 edac_get_sysfs_subsys +EXPORT_SYMBOL_GPL vmlinux 0x14b63e49 kick_process +EXPORT_SYMBOL_GPL vmlinux 0x14c6347e irq_gc_mask_clr_bit +EXPORT_SYMBOL_GPL vmlinux 0x15085ec6 devfreq_event_get_edev_count +EXPORT_SYMBOL_GPL vmlinux 0x15228ed5 ata_port_schedule_eh +EXPORT_SYMBOL_GPL vmlinux 0x15236c0a wm8350_block_read +EXPORT_SYMBOL_GPL vmlinux 0x152e75cd inet_twsk_put +EXPORT_SYMBOL_GPL vmlinux 0x15410e51 ata_std_bios_param +EXPORT_SYMBOL_GPL vmlinux 0x1541de1c component_add +EXPORT_SYMBOL_GPL vmlinux 0x155b2677 ata_pci_bmdma_init_one +EXPORT_SYMBOL_GPL vmlinux 0x1573dd96 __init_kthread_worker +EXPORT_SYMBOL_GPL vmlinux 0x157ff0cc pcie_update_link_speed +EXPORT_SYMBOL_GPL vmlinux 0x15892417 async_synchronize_cookie +EXPORT_SYMBOL_GPL vmlinux 0x1597c419 debugfs_create_u8 +EXPORT_SYMBOL_GPL vmlinux 0x15a5fc1e register_pernet_subsys +EXPORT_SYMBOL_GPL vmlinux 0x15da9ead debugfs_create_devm_seqfile +EXPORT_SYMBOL_GPL vmlinux 0x15daec6c usb_hcd_pci_probe +EXPORT_SYMBOL_GPL vmlinux 0x15efd446 rcu_batches_started +EXPORT_SYMBOL_GPL vmlinux 0x16000a3c dm_device_name +EXPORT_SYMBOL_GPL vmlinux 0x16146e48 cm_notify_event +EXPORT_SYMBOL_GPL vmlinux 0x1650bf27 rcutorture_record_progress +EXPORT_SYMBOL_GPL vmlinux 0x16659012 evm_verifyxattr +EXPORT_SYMBOL_GPL vmlinux 0x167cf070 device_del +EXPORT_SYMBOL_GPL vmlinux 0x16860158 gpiod_set_array_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x168dfbf1 i2c_add_numbered_adapter +EXPORT_SYMBOL_GPL vmlinux 0x16a438e3 acpi_get_pci_dev +EXPORT_SYMBOL_GPL vmlinux 0x16a952c1 pci_set_cacheline_size +EXPORT_SYMBOL_GPL vmlinux 0x16df24b8 crypto_register_rng +EXPORT_SYMBOL_GPL vmlinux 0x170e3835 perf_event_create_kernel_counter +EXPORT_SYMBOL_GPL vmlinux 0x17448b85 pci_fixup_irqs +EXPORT_SYMBOL_GPL vmlinux 0x1753a32f hash_digest_size +EXPORT_SYMBOL_GPL vmlinux 0x175d74b7 mpc8xxx_spi_probe +EXPORT_SYMBOL_GPL vmlinux 0x177c338d twl_get_version +EXPORT_SYMBOL_GPL vmlinux 0x17aa5703 zap_vma_ptes +EXPORT_SYMBOL_GPL vmlinux 0x17aa5fa8 md_kick_rdev_from_array +EXPORT_SYMBOL_GPL vmlinux 0x17d6060b blk_end_request_err +EXPORT_SYMBOL_GPL vmlinux 0x18004f39 regmap_multi_reg_write_bypassed +EXPORT_SYMBOL_GPL vmlinux 0x1809afd2 klist_iter_init_node +EXPORT_SYMBOL_GPL vmlinux 0x1812deeb devres_open_group +EXPORT_SYMBOL_GPL vmlinux 0x1814dd55 dt_init_idle_driver +EXPORT_SYMBOL_GPL vmlinux 0x1843176b of_pwm_get +EXPORT_SYMBOL_GPL vmlinux 0x1848d7d7 __tracepoint_rpm_resume +EXPORT_SYMBOL_GPL vmlinux 0x1853653c btree_alloc +EXPORT_SYMBOL_GPL vmlinux 0x1866cec2 ring_buffer_size +EXPORT_SYMBOL_GPL vmlinux 0x1878f62b edac_err_assert +EXPORT_SYMBOL_GPL vmlinux 0x1882adb7 ata_dummy_port_info +EXPORT_SYMBOL_GPL vmlinux 0x18a67960 pci_user_read_config_byte +EXPORT_SYMBOL_GPL vmlinux 0x18a89c76 virtqueue_get_avail +EXPORT_SYMBOL_GPL vmlinux 0x18b1e17c bsg_register_queue +EXPORT_SYMBOL_GPL vmlinux 0x18e6acd5 tcp_fetch_timewait_stamp +EXPORT_SYMBOL_GPL vmlinux 0x18eaf486 iommu_group_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0x18f5e802 anon_inode_getfd +EXPORT_SYMBOL_GPL vmlinux 0x18f83fab gnttab_grant_foreign_access_ref +EXPORT_SYMBOL_GPL vmlinux 0x190093a6 tty_buffer_request_room +EXPORT_SYMBOL_GPL vmlinux 0x19069e36 blkio_cgrp_subsys +EXPORT_SYMBOL_GPL vmlinux 0x1922b998 tcp_peer_is_proven +EXPORT_SYMBOL_GPL vmlinux 0x1928eec2 nf_unregister_afinfo +EXPORT_SYMBOL_GPL vmlinux 0x192c1dfc inode_congested +EXPORT_SYMBOL_GPL vmlinux 0x193d48e0 trace_current_buffer_unlock_commit +EXPORT_SYMBOL_GPL vmlinux 0x194be51e sk_set_memalloc +EXPORT_SYMBOL_GPL vmlinux 0x194dd5f5 pkey_algo_name +EXPORT_SYMBOL_GPL vmlinux 0x195cfc72 ftrace_set_filter_ip +EXPORT_SYMBOL_GPL vmlinux 0x198bcdd3 sdio_release_host +EXPORT_SYMBOL_GPL vmlinux 0x199f7716 device_show_ulong +EXPORT_SYMBOL_GPL vmlinux 0x19a304ba usb_disabled +EXPORT_SYMBOL_GPL vmlinux 0x19a911ca usb_hc_died +EXPORT_SYMBOL_GPL vmlinux 0x19a9581e bio_associate_current +EXPORT_SYMBOL_GPL vmlinux 0x19b384a5 hash_algo_name +EXPORT_SYMBOL_GPL vmlinux 0x19c20b31 regmap_check_range_table +EXPORT_SYMBOL_GPL vmlinux 0x19cfa8cc of_phy_simple_xlate +EXPORT_SYMBOL_GPL vmlinux 0x19e3b2d6 mddev_init +EXPORT_SYMBOL_GPL vmlinux 0x19fa3882 fat_flush_inodes +EXPORT_SYMBOL_GPL vmlinux 0x19fe5b84 wm8350_device_exit +EXPORT_SYMBOL_GPL vmlinux 0x1a031c53 unregister_net_sysctl_table +EXPORT_SYMBOL_GPL vmlinux 0x1a04af46 usb_acpi_set_power_state +EXPORT_SYMBOL_GPL vmlinux 0x1a0f892f disk_part_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x1a10b5a0 sata_link_scr_lpm +EXPORT_SYMBOL_GPL vmlinux 0x1a54497d sysfs_remove_groups +EXPORT_SYMBOL_GPL vmlinux 0x1a63586a adp5520_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0x1a831121 dev_pm_domain_attach +EXPORT_SYMBOL_GPL vmlinux 0x1a83e4d0 ata_sff_dev_select +EXPORT_SYMBOL_GPL vmlinux 0x1a8aac8f ata_eh_freeze_port +EXPORT_SYMBOL_GPL vmlinux 0x1a967885 cpufreq_frequency_get_table +EXPORT_SYMBOL_GPL vmlinux 0x1aa88b76 uhci_reset_hc +EXPORT_SYMBOL_GPL vmlinux 0x1acef7d2 pm_freezing +EXPORT_SYMBOL_GPL vmlinux 0x1ae0b103 skb_complete_wifi_ack +EXPORT_SYMBOL_GPL vmlinux 0x1b2d41be uart_console_write +EXPORT_SYMBOL_GPL vmlinux 0x1b387756 blk_mq_free_hctx_request +EXPORT_SYMBOL_GPL vmlinux 0x1b571447 sk_detach_filter +EXPORT_SYMBOL_GPL vmlinux 0x1b5b7986 ata_std_qc_defer +EXPORT_SYMBOL_GPL vmlinux 0x1b609c30 hrtimer_forward +EXPORT_SYMBOL_GPL vmlinux 0x1b8822d8 pinctrl_gpio_direction_output +EXPORT_SYMBOL_GPL vmlinux 0x1b901f64 usb_disable_ltm +EXPORT_SYMBOL_GPL vmlinux 0x1b9b000b sock_diag_register_inet_compat +EXPORT_SYMBOL_GPL vmlinux 0x1bb2fa1f pci_bus_max_busnr +EXPORT_SYMBOL_GPL vmlinux 0x1bc5eebe pinctrl_gpio_direction_input +EXPORT_SYMBOL_GPL vmlinux 0x1bddd84a unregister_pernet_device +EXPORT_SYMBOL_GPL vmlinux 0x1bdeebe5 serial8250_get_port +EXPORT_SYMBOL_GPL vmlinux 0x1bed96f8 srcu_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0x1bf15664 pinctrl_register +EXPORT_SYMBOL_GPL vmlinux 0x1c1388a6 alarm_try_to_cancel +EXPORT_SYMBOL_GPL vmlinux 0x1c153223 platform_get_resource_byname +EXPORT_SYMBOL_GPL vmlinux 0x1c17e29c inet_getpeer +EXPORT_SYMBOL_GPL vmlinux 0x1c24b71c find_extend_vma +EXPORT_SYMBOL_GPL vmlinux 0x1c378ae2 n_tty_inherit_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 0x1c6c3e40 crypto_unregister_akcipher +EXPORT_SYMBOL_GPL vmlinux 0x1c80d27d btree_geo128 +EXPORT_SYMBOL_GPL vmlinux 0x1c87a811 __round_jiffies_up +EXPORT_SYMBOL_GPL vmlinux 0x1ca3316a debugfs_create_x16 +EXPORT_SYMBOL_GPL vmlinux 0x1cafcfc0 get_governor_parent_kobj +EXPORT_SYMBOL_GPL vmlinux 0x1cb4787f bpf_prog_alloc +EXPORT_SYMBOL_GPL vmlinux 0x1cd4bc48 kvm_read_guest +EXPORT_SYMBOL_GPL vmlinux 0x1cd573aa regulator_set_current_limit +EXPORT_SYMBOL_GPL vmlinux 0x1cdb2147 zs_malloc +EXPORT_SYMBOL_GPL vmlinux 0x1cdc2192 __pm_wakeup_event +EXPORT_SYMBOL_GPL vmlinux 0x1cde816f debugfs_create_u32 +EXPORT_SYMBOL_GPL vmlinux 0x1cfc30fe crypto_larval_kill +EXPORT_SYMBOL_GPL vmlinux 0x1d19e584 spi_unregister_master +EXPORT_SYMBOL_GPL vmlinux 0x1d1f145d iommu_set_fault_handler +EXPORT_SYMBOL_GPL vmlinux 0x1d26bdc7 ata_sas_port_init +EXPORT_SYMBOL_GPL vmlinux 0x1d33512a wm8350_clear_bits +EXPORT_SYMBOL_GPL vmlinux 0x1d4bff87 device_create_bin_file +EXPORT_SYMBOL_GPL vmlinux 0x1d4d2b0f led_trigger_blink +EXPORT_SYMBOL_GPL vmlinux 0x1d58ae14 lpddr2_jedec_timings +EXPORT_SYMBOL_GPL vmlinux 0x1d5a8c2e regcache_mark_dirty +EXPORT_SYMBOL_GPL vmlinux 0x1d739e1c xen_set_callback_via +EXPORT_SYMBOL_GPL vmlinux 0x1d77b0f8 unix_socket_table +EXPORT_SYMBOL_GPL vmlinux 0x1d78dfc4 ehci_setup +EXPORT_SYMBOL_GPL vmlinux 0x1d7c0168 __ftrace_vprintk +EXPORT_SYMBOL_GPL vmlinux 0x1d7cb586 clk_register_fixed_rate_with_accuracy +EXPORT_SYMBOL_GPL vmlinux 0x1d8972ac mbox_client_peek_data +EXPORT_SYMBOL_GPL vmlinux 0x1d919cfd __inet_lookup_listener +EXPORT_SYMBOL_GPL vmlinux 0x1db151b8 ata_cable_unknown +EXPORT_SYMBOL_GPL vmlinux 0x1db85458 of_irq_parse_one +EXPORT_SYMBOL_GPL vmlinux 0x1db8e3ef dm_noflush_suspending +EXPORT_SYMBOL_GPL vmlinux 0x1dc48dee adp5520_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x1dc667f1 blk_lld_busy +EXPORT_SYMBOL_GPL vmlinux 0x1dcdf08e kvm_vcpu_read_guest_page +EXPORT_SYMBOL_GPL vmlinux 0x1ddebd1e mmu_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x1def880e bind_interdomain_evtchn_to_irq +EXPORT_SYMBOL_GPL vmlinux 0x1df1d220 mbox_controller_register +EXPORT_SYMBOL_GPL vmlinux 0x1e0fb564 fwnode_property_read_u16_array +EXPORT_SYMBOL_GPL vmlinux 0x1e3d38b1 lp8788_read_multi_bytes +EXPORT_SYMBOL_GPL vmlinux 0x1e5b03dc pm_qos_add_notifier +EXPORT_SYMBOL_GPL vmlinux 0x1e68ce14 trace_seq_putc +EXPORT_SYMBOL_GPL vmlinux 0x1e7bbcb3 kernel_restart +EXPORT_SYMBOL_GPL vmlinux 0x1e7e1ca6 iommu_attach_group +EXPORT_SYMBOL_GPL vmlinux 0x1e83fee6 HYPERVISOR_physdev_op +EXPORT_SYMBOL_GPL vmlinux 0x1e872da4 usb_anchor_resume_wakeups +EXPORT_SYMBOL_GPL vmlinux 0x1ea61f46 adp5520_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x1eb9516e round_jiffies_relative +EXPORT_SYMBOL_GPL vmlinux 0x1ebac2bd getboottime64 +EXPORT_SYMBOL_GPL vmlinux 0x1ebf6c2a pci_power_names +EXPORT_SYMBOL_GPL vmlinux 0x1ee51203 xenbus_watch_pathfmt +EXPORT_SYMBOL_GPL vmlinux 0x1eeb8cb5 devm_rtc_device_register +EXPORT_SYMBOL_GPL vmlinux 0x1ef780ef xhci_dbg_trace +EXPORT_SYMBOL_GPL vmlinux 0x1f127010 debugfs_create_symlink +EXPORT_SYMBOL_GPL vmlinux 0x1f12eb6d device_move +EXPORT_SYMBOL_GPL vmlinux 0x1f22b6b5 crypto_grab_skcipher +EXPORT_SYMBOL_GPL vmlinux 0x1f60784d acpi_subsys_freeze +EXPORT_SYMBOL_GPL vmlinux 0x1f61c54a blkg_lookup +EXPORT_SYMBOL_GPL vmlinux 0x1f7b7aaf crypto_register_shashes +EXPORT_SYMBOL_GPL vmlinux 0x1f8544b8 panic_timeout +EXPORT_SYMBOL_GPL vmlinux 0x1f8db7f9 ring_buffer_overrun_cpu +EXPORT_SYMBOL_GPL vmlinux 0x1fb05de2 of_property_read_u8_array +EXPORT_SYMBOL_GPL vmlinux 0x1fe1fa09 ata_std_postreset +EXPORT_SYMBOL_GPL vmlinux 0x201ac182 handle_level_irq +EXPORT_SYMBOL_GPL vmlinux 0x201c1954 usb_add_phy +EXPORT_SYMBOL_GPL vmlinux 0x201dadce rhashtable_insert_slow +EXPORT_SYMBOL_GPL vmlinux 0x202c0a20 hwmon_device_register_with_groups +EXPORT_SYMBOL_GPL vmlinux 0x203889fa pm_generic_resume_early +EXPORT_SYMBOL_GPL vmlinux 0x204f9f72 __pci_reset_function +EXPORT_SYMBOL_GPL vmlinux 0x20591b06 tcp_death_row +EXPORT_SYMBOL_GPL vmlinux 0x206809f3 ata_cable_80wire +EXPORT_SYMBOL_GPL vmlinux 0x20aa6f51 cpuidle_enable_device +EXPORT_SYMBOL_GPL vmlinux 0x20de5193 kvm_disable_largepages +EXPORT_SYMBOL_GPL vmlinux 0x20e51be1 securityfs_create_dir +EXPORT_SYMBOL_GPL vmlinux 0x20eec983 usb_clear_halt +EXPORT_SYMBOL_GPL vmlinux 0x20f8ea1c spi_master_suspend +EXPORT_SYMBOL_GPL vmlinux 0x20fc8764 ping_common_sendmsg +EXPORT_SYMBOL_GPL vmlinux 0x2107c3cf regmap_get_val_endian +EXPORT_SYMBOL_GPL vmlinux 0x21468e47 mmc_regulator_get_supply +EXPORT_SYMBOL_GPL vmlinux 0x21598bb8 input_ff_event +EXPORT_SYMBOL_GPL vmlinux 0x215a54c8 sysfs_remove_file_from_group +EXPORT_SYMBOL_GPL vmlinux 0x21a563da clk_get_accuracy +EXPORT_SYMBOL_GPL vmlinux 0x21ac8b77 iommu_group_get_by_id +EXPORT_SYMBOL_GPL vmlinux 0x21b22d9c __inet_lookup_established +EXPORT_SYMBOL_GPL vmlinux 0x21c339b8 sata_link_hardreset +EXPORT_SYMBOL_GPL vmlinux 0x21c50dd1 of_clk_add_provider +EXPORT_SYMBOL_GPL vmlinux 0x2200138d clk_register +EXPORT_SYMBOL_GPL vmlinux 0x221eb471 klist_prev +EXPORT_SYMBOL_GPL vmlinux 0x2251f606 usb_autopm_put_interface +EXPORT_SYMBOL_GPL vmlinux 0x22646bfa sdio_readsb +EXPORT_SYMBOL_GPL vmlinux 0x2269ff89 pci_disable_sriov +EXPORT_SYMBOL_GPL vmlinux 0x228b202d thermal_zone_bind_cooling_device +EXPORT_SYMBOL_GPL vmlinux 0x2296c00d crypto_attr_u32 +EXPORT_SYMBOL_GPL vmlinux 0x22a26ad4 devm_reset_control_get +EXPORT_SYMBOL_GPL vmlinux 0x22b44e2b __put_task_struct +EXPORT_SYMBOL_GPL vmlinux 0x22b4b25a cn_add_callback +EXPORT_SYMBOL_GPL vmlinux 0x22bfc7c2 __pm_runtime_suspend +EXPORT_SYMBOL_GPL vmlinux 0x22c02445 devm_regulator_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x22c3b6dc set_task_ioprio +EXPORT_SYMBOL_GPL vmlinux 0x22f5ac81 regmap_add_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0x22f86ffd clk_gate_ops +EXPORT_SYMBOL_GPL vmlinux 0x233ed555 ata_bmdma_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x235544f0 mpc8xxx_spi_tx_buf_u8 +EXPORT_SYMBOL_GPL vmlinux 0x2366a2c0 errata +EXPORT_SYMBOL_GPL vmlinux 0x236ed640 of_pci_dma_configure +EXPORT_SYMBOL_GPL vmlinux 0x23703e36 klist_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x23717a7a inet_unhash +EXPORT_SYMBOL_GPL vmlinux 0x23778e75 __gpiod_get +EXPORT_SYMBOL_GPL vmlinux 0x23864ce7 cpuset_mem_spread_node +EXPORT_SYMBOL_GPL vmlinux 0x238d8523 shash_register_instance +EXPORT_SYMBOL_GPL vmlinux 0x23921294 nd_device_attribute_group +EXPORT_SYMBOL_GPL vmlinux 0x2396c7f0 clk_set_parent +EXPORT_SYMBOL_GPL vmlinux 0x23ab8e0e acpi_ec_remove_query_handler +EXPORT_SYMBOL_GPL vmlinux 0x23b5ea04 digsig_verify +EXPORT_SYMBOL_GPL vmlinux 0x23b797db btree_last +EXPORT_SYMBOL_GPL vmlinux 0x23f70a9a ablkcipher_walk_phys +EXPORT_SYMBOL_GPL vmlinux 0x23fe1dad tcp_ca_get_key_by_name +EXPORT_SYMBOL_GPL vmlinux 0x24011e14 vbin_printf +EXPORT_SYMBOL_GPL vmlinux 0x24046eec evm_inode_init_security +EXPORT_SYMBOL_GPL vmlinux 0x2405487c fat_alloc_new_dir +EXPORT_SYMBOL_GPL vmlinux 0x240d7e63 wakeup_source_prepare +EXPORT_SYMBOL_GPL vmlinux 0x2420f3d8 regulator_get_voltage +EXPORT_SYMBOL_GPL vmlinux 0x2439c0f2 disk_get_part +EXPORT_SYMBOL_GPL vmlinux 0x24457174 audit_enabled +EXPORT_SYMBOL_GPL vmlinux 0x245394b6 btree_remove +EXPORT_SYMBOL_GPL vmlinux 0x2479a9eb shash_ahash_update +EXPORT_SYMBOL_GPL vmlinux 0x247ef831 kdb_unregister +EXPORT_SYMBOL_GPL vmlinux 0x2487047f ata_eh_qc_complete +EXPORT_SYMBOL_GPL vmlinux 0x24aac4d9 crypto_aes_expand_key +EXPORT_SYMBOL_GPL vmlinux 0x24ae5b71 da903x_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x24c7698a xenbus_write +EXPORT_SYMBOL_GPL vmlinux 0x24c8f141 gpiod_set_raw_array_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x24eb7e32 leds_list +EXPORT_SYMBOL_GPL vmlinux 0x24f39c39 reset_control_reset +EXPORT_SYMBOL_GPL vmlinux 0x25001886 swiotlb_tbl_unmap_single +EXPORT_SYMBOL_GPL vmlinux 0x25198c63 swiotlb_unmap_page +EXPORT_SYMBOL_GPL vmlinux 0x25379e73 clk_set_min_rate +EXPORT_SYMBOL_GPL vmlinux 0x25425fc3 init_user_ns +EXPORT_SYMBOL_GPL vmlinux 0x2545214b pm_wakeup_event +EXPORT_SYMBOL_GPL vmlinux 0x2545c170 unregister_xenbus_watch +EXPORT_SYMBOL_GPL vmlinux 0x25574504 clk_fixed_rate_ops +EXPORT_SYMBOL_GPL vmlinux 0x25652473 edac_subsys +EXPORT_SYMBOL_GPL vmlinux 0x256f4a7e blk_mq_cancel_requeue_work +EXPORT_SYMBOL_GPL vmlinux 0x257f4ee8 bsg_setup_queue +EXPORT_SYMBOL_GPL vmlinux 0x25a5a979 spi_sync +EXPORT_SYMBOL_GPL vmlinux 0x25d9b04e unregister_trace_event +EXPORT_SYMBOL_GPL vmlinux 0x25f1e978 wakeup_source_remove +EXPORT_SYMBOL_GPL vmlinux 0x25f443f0 iommu_group_get +EXPORT_SYMBOL_GPL vmlinux 0x25fd3d1f power_supply_register +EXPORT_SYMBOL_GPL vmlinux 0x26135341 firmware_kobj +EXPORT_SYMBOL_GPL vmlinux 0x261deae4 aead_geniv_exit +EXPORT_SYMBOL_GPL vmlinux 0x261e4ba1 device_remove_file_self +EXPORT_SYMBOL_GPL vmlinux 0x262f20a8 local_clock +EXPORT_SYMBOL_GPL vmlinux 0x263a14ea pci_store_saved_state +EXPORT_SYMBOL_GPL vmlinux 0x26520970 vm_memory_committed +EXPORT_SYMBOL_GPL vmlinux 0x26650b92 __page_file_mapping +EXPORT_SYMBOL_GPL vmlinux 0x2668bbea xenbus_dev_is_online +EXPORT_SYMBOL_GPL vmlinux 0x266b5eec max8997_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0x266b7638 interval_tree_remove +EXPORT_SYMBOL_GPL vmlinux 0x268d9429 sysfs_remove_mount_point +EXPORT_SYMBOL_GPL vmlinux 0x2694dfa6 of_dma_request_slave_channel +EXPORT_SYMBOL_GPL vmlinux 0x26b502ce kvm_vcpu_write_guest +EXPORT_SYMBOL_GPL vmlinux 0x26b71fb4 ring_buffer_time_stamp +EXPORT_SYMBOL_GPL vmlinux 0x26c2828f crypto_destroy_tfm +EXPORT_SYMBOL_GPL vmlinux 0x26c90ea4 scsi_eh_get_sense +EXPORT_SYMBOL_GPL vmlinux 0x26d07f70 debugfs_create_bool +EXPORT_SYMBOL_GPL vmlinux 0x26e15e7d spi_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x27046576 kvm_exit +EXPORT_SYMBOL_GPL vmlinux 0x270d5a21 irq_domain_remove +EXPORT_SYMBOL_GPL vmlinux 0x2732ecbc udp4_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x273815d5 blkcg_deactivate_policy +EXPORT_SYMBOL_GPL vmlinux 0x2738242d devfreq_event_disable_edev +EXPORT_SYMBOL_GPL vmlinux 0x2748a0a8 bio_associate_blkcg +EXPORT_SYMBOL_GPL vmlinux 0x274cf5e1 __clk_get_flags +EXPORT_SYMBOL_GPL vmlinux 0x27519611 device_rename +EXPORT_SYMBOL_GPL vmlinux 0x275d44fc pci_enable_rom +EXPORT_SYMBOL_GPL vmlinux 0x276443b2 __i2c_board_lock +EXPORT_SYMBOL_GPL vmlinux 0x276591af pci_disable_rom +EXPORT_SYMBOL_GPL vmlinux 0x277ffb6b init_dummy_netdev +EXPORT_SYMBOL_GPL vmlinux 0x278373f1 rtc_irq_set_freq +EXPORT_SYMBOL_GPL vmlinux 0x278cafbe public_key_subtype +EXPORT_SYMBOL_GPL vmlinux 0x27aa7ad4 regmap_raw_read +EXPORT_SYMBOL_GPL vmlinux 0x27b8f32a devm_regmap_init_vexpress_config +EXPORT_SYMBOL_GPL vmlinux 0x27c0c4be eventfd_ctx_read +EXPORT_SYMBOL_GPL vmlinux 0x27c1c41c raw_unhash_sk +EXPORT_SYMBOL_GPL vmlinux 0x27c1e63f usb_amd_find_chipset_info +EXPORT_SYMBOL_GPL vmlinux 0x27ce599f crypto_lookup_skcipher +EXPORT_SYMBOL_GPL vmlinux 0x27ebd3d8 pci_set_pcie_reset_state +EXPORT_SYMBOL_GPL vmlinux 0x27f4f029 ftrace_set_global_filter +EXPORT_SYMBOL_GPL vmlinux 0x27f8e76d gpiod_set_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x27fa66e1 nr_free_buffer_pages +EXPORT_SYMBOL_GPL vmlinux 0x2816d2eb key_type_asymmetric +EXPORT_SYMBOL_GPL vmlinux 0x281d4271 tps65912_clear_bits +EXPORT_SYMBOL_GPL vmlinux 0x282cdabc usb_led_activity +EXPORT_SYMBOL_GPL vmlinux 0x28355c50 ata_scsi_unlock_native_capacity +EXPORT_SYMBOL_GPL vmlinux 0x28396f19 spi_sync_locked +EXPORT_SYMBOL_GPL vmlinux 0x2847cbae rt_mutex_trylock +EXPORT_SYMBOL_GPL vmlinux 0x285642a7 ata_cable_40wire +EXPORT_SYMBOL_GPL vmlinux 0x285f13e0 ata_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x286751a5 pwm_request +EXPORT_SYMBOL_GPL vmlinux 0x2868bde5 tcp_ca_openreq_child +EXPORT_SYMBOL_GPL vmlinux 0x286a1051 device_for_each_child +EXPORT_SYMBOL_GPL vmlinux 0x286ad219 ata_sas_sync_probe +EXPORT_SYMBOL_GPL vmlinux 0x28855481 irq_alloc_domain_generic_chips +EXPORT_SYMBOL_GPL vmlinux 0x2897e122 devm_devfreq_event_add_edev +EXPORT_SYMBOL_GPL vmlinux 0x28eb7211 usb_autopm_put_interface_async +EXPORT_SYMBOL_GPL vmlinux 0x29230ca9 device_create +EXPORT_SYMBOL_GPL vmlinux 0x2932db4d dev_pm_domain_detach +EXPORT_SYMBOL_GPL vmlinux 0x295364c0 blk_trace_remove +EXPORT_SYMBOL_GPL vmlinux 0x295a8432 blkcipher_walk_virt_block +EXPORT_SYMBOL_GPL vmlinux 0x2978a882 xenbus_frontend_closed +EXPORT_SYMBOL_GPL vmlinux 0x2983ce07 crypto_alloc_pcomp +EXPORT_SYMBOL_GPL vmlinux 0x299123d4 of_phy_get +EXPORT_SYMBOL_GPL vmlinux 0x2996607a fuse_request_send_background +EXPORT_SYMBOL_GPL vmlinux 0x29a49fad pci_user_write_config_byte +EXPORT_SYMBOL_GPL vmlinux 0x29a79c90 arizona_set_irq_wake +EXPORT_SYMBOL_GPL vmlinux 0x29b7b88d max_gen_clk_remove +EXPORT_SYMBOL_GPL vmlinux 0x29c27bea alarm_forward_now +EXPORT_SYMBOL_GPL vmlinux 0x29ce3f6d pm_generic_restore_early +EXPORT_SYMBOL_GPL vmlinux 0x29f24f95 bio_clone_mddev +EXPORT_SYMBOL_GPL vmlinux 0x29f5fca1 gpiochip_free_own_desc +EXPORT_SYMBOL_GPL vmlinux 0x29fe29cc sock_diag_check_cookie +EXPORT_SYMBOL_GPL vmlinux 0x2a088ba0 i2c_probe_func_quick_read +EXPORT_SYMBOL_GPL vmlinux 0x2a5930d5 platform_device_add_data +EXPORT_SYMBOL_GPL vmlinux 0x2a678a13 __suspend_report_result +EXPORT_SYMBOL_GPL vmlinux 0x2a784502 __cpufreq_driver_target +EXPORT_SYMBOL_GPL vmlinux 0x2a9da465 driver_create_file +EXPORT_SYMBOL_GPL vmlinux 0x2aa057b9 spi_get_next_queued_message +EXPORT_SYMBOL_GPL vmlinux 0x2aade80b crypto_register_shash +EXPORT_SYMBOL_GPL vmlinux 0x2ac86ec4 tcp_cong_avoid_ai +EXPORT_SYMBOL_GPL vmlinux 0x2ad04872 kvm_vcpu_gfn_to_pfn_atomic +EXPORT_SYMBOL_GPL vmlinux 0x2ad6b54a bitmap_load +EXPORT_SYMBOL_GPL vmlinux 0x2ad79e10 to_nvdimm_bus +EXPORT_SYMBOL_GPL vmlinux 0x2af63321 acpi_dev_resource_address_space +EXPORT_SYMBOL_GPL vmlinux 0x2b1c443f devm_extcon_dev_register +EXPORT_SYMBOL_GPL vmlinux 0x2b6262b9 syscon_regmap_lookup_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0x2b82a1f8 regulator_allow_bypass +EXPORT_SYMBOL_GPL vmlinux 0x2b923841 usb_match_one_id +EXPORT_SYMBOL_GPL vmlinux 0x2b952517 clk_has_parent +EXPORT_SYMBOL_GPL vmlinux 0x2bbb529a percpu_ida_destroy +EXPORT_SYMBOL_GPL vmlinux 0x2bbcff8b pinctrl_utils_add_map_configs +EXPORT_SYMBOL_GPL vmlinux 0x2bfa985e nd_cmd_dimm_desc +EXPORT_SYMBOL_GPL vmlinux 0x2c00491e dev_pm_opp_free_cpufreq_table +EXPORT_SYMBOL_GPL vmlinux 0x2c133868 bit_wait_io_timeout +EXPORT_SYMBOL_GPL vmlinux 0x2c19b8c2 rt_mutex_destroy +EXPORT_SYMBOL_GPL vmlinux 0x2c1dd667 ata_slave_link_init +EXPORT_SYMBOL_GPL vmlinux 0x2c208607 power_supply_is_system_supplied +EXPORT_SYMBOL_GPL vmlinux 0x2c218948 gpiochip_add_pin_range +EXPORT_SYMBOL_GPL vmlinux 0x2c3054f9 net_inc_ingress_queue +EXPORT_SYMBOL_GPL vmlinux 0x2c61a411 get_net_ns_by_pid +EXPORT_SYMBOL_GPL vmlinux 0x2c7d9c64 xen_store_interface +EXPORT_SYMBOL_GPL vmlinux 0x2c7db649 irq_dispose_mapping +EXPORT_SYMBOL_GPL vmlinux 0x2c97f8a2 of_reconfig_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x2cb78593 ata_msleep +EXPORT_SYMBOL_GPL vmlinux 0x2cc7cc5a sdio_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0x2ce98559 kcrypto_wq +EXPORT_SYMBOL_GPL vmlinux 0x2cf804f8 sdio_readl +EXPORT_SYMBOL_GPL vmlinux 0x2cff6d83 alarm_cancel +EXPORT_SYMBOL_GPL vmlinux 0x2d1a89b9 vring_transport_features +EXPORT_SYMBOL_GPL vmlinux 0x2d1b02d2 usermodehelper_read_lock_wait +EXPORT_SYMBOL_GPL vmlinux 0x2d2bedcf fuse_dev_operations +EXPORT_SYMBOL_GPL vmlinux 0x2d3e60a8 of_init_opp_table +EXPORT_SYMBOL_GPL vmlinux 0x2d41e6f5 __trace_puts +EXPORT_SYMBOL_GPL vmlinux 0x2d59c954 edac_handlers +EXPORT_SYMBOL_GPL vmlinux 0x2d5fcd4e add_to_page_cache_lru +EXPORT_SYMBOL_GPL vmlinux 0x2d743419 of_usb_get_phy_mode +EXPORT_SYMBOL_GPL vmlinux 0x2d957c2a debugfs_create_atomic_t +EXPORT_SYMBOL_GPL vmlinux 0x2d9f6853 gfn_to_hva +EXPORT_SYMBOL_GPL vmlinux 0x2d9fb7d5 acpi_ec_add_query_handler +EXPORT_SYMBOL_GPL vmlinux 0x2dd9f75d crypto_register_ahash +EXPORT_SYMBOL_GPL vmlinux 0x2e15558c skb_scrub_packet +EXPORT_SYMBOL_GPL vmlinux 0x2e1da9fb probe_kernel_read +EXPORT_SYMBOL_GPL vmlinux 0x2e2360b1 ftrace_set_global_notrace +EXPORT_SYMBOL_GPL vmlinux 0x2e2f1740 ring_buffer_record_disable_cpu +EXPORT_SYMBOL_GPL vmlinux 0x2e379fac ata_std_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x2e44fd73 kernfs_get +EXPORT_SYMBOL_GPL vmlinux 0x2e5567e2 stmpe_block_read +EXPORT_SYMBOL_GPL vmlinux 0x2e865605 regmap_get_device +EXPORT_SYMBOL_GPL vmlinux 0x2e8ea36d pci_ioremap_bar +EXPORT_SYMBOL_GPL vmlinux 0x2e9670c0 pl320_ipc_transmit +EXPORT_SYMBOL_GPL vmlinux 0x2e99f613 power_supply_am_i_supplied +EXPORT_SYMBOL_GPL vmlinux 0x2eab2884 eventfd_fget +EXPORT_SYMBOL_GPL vmlinux 0x2eae2ece nvdimm_create +EXPORT_SYMBOL_GPL vmlinux 0x2eb1906b of_irq_to_resource +EXPORT_SYMBOL_GPL vmlinux 0x2eb3f54f __lock_page_killable +EXPORT_SYMBOL_GPL vmlinux 0x2ebe3135 cpu_is_hotpluggable +EXPORT_SYMBOL_GPL vmlinux 0x2ec06a7f pinctrl_find_gpio_range_from_pin +EXPORT_SYMBOL_GPL vmlinux 0x2ec4eee6 __tracepoint_suspend_resume +EXPORT_SYMBOL_GPL vmlinux 0x2ed36465 rt_mutex_timed_lock +EXPORT_SYMBOL_GPL vmlinux 0x2f093d30 of_clk_del_provider +EXPORT_SYMBOL_GPL vmlinux 0x2f0d9053 usb_otg_state_string +EXPORT_SYMBOL_GPL vmlinux 0x2f23d5e0 usb_unanchor_urb +EXPORT_SYMBOL_GPL vmlinux 0x2f2d8f3a pinctrl_lookup_state +EXPORT_SYMBOL_GPL vmlinux 0x2f2e0bb1 nf_ipv6_ops +EXPORT_SYMBOL_GPL vmlinux 0x2f4113a2 dcookie_register +EXPORT_SYMBOL_GPL vmlinux 0x2f6031cb single_release_net +EXPORT_SYMBOL_GPL vmlinux 0x2f64415f unregister_acpi_hed_notifier +EXPORT_SYMBOL_GPL vmlinux 0x2f7f2ce7 kobject_uevent_env +EXPORT_SYMBOL_GPL vmlinux 0x2f8ebab6 of_pci_find_msi_chip_by_node +EXPORT_SYMBOL_GPL vmlinux 0x2fa4bfe5 of_irq_get +EXPORT_SYMBOL_GPL vmlinux 0x2fcd0c7a usb_driver_claim_interface +EXPORT_SYMBOL_GPL vmlinux 0x2fd8cba9 freeze_wake +EXPORT_SYMBOL_GPL vmlinux 0x30009c92 pci_enable_ats +EXPORT_SYMBOL_GPL vmlinux 0x3008392a crypto_alloc_ahash +EXPORT_SYMBOL_GPL vmlinux 0x301d9312 phy_pm_runtime_get +EXPORT_SYMBOL_GPL vmlinux 0x303d8517 regcache_cache_only +EXPORT_SYMBOL_GPL vmlinux 0x305d21b8 rtc_set_time +EXPORT_SYMBOL_GPL vmlinux 0x307d5a5f pci_sriov_set_totalvfs +EXPORT_SYMBOL_GPL vmlinux 0x3085e2a8 register_wide_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x30a2f1e2 serial8250_modem_status +EXPORT_SYMBOL_GPL vmlinux 0x30b2a6c8 class_destroy +EXPORT_SYMBOL_GPL vmlinux 0x30ceade4 dm_internal_resume +EXPORT_SYMBOL_GPL vmlinux 0x30d74870 relay_open +EXPORT_SYMBOL_GPL vmlinux 0x30fd5283 ip6_local_out +EXPORT_SYMBOL_GPL vmlinux 0x3109b751 cpu_clock +EXPORT_SYMBOL_GPL vmlinux 0x3121779e sched_setattr +EXPORT_SYMBOL_GPL vmlinux 0x31266931 con_debug_leave +EXPORT_SYMBOL_GPL vmlinux 0x3169f559 crypto_unregister_alg +EXPORT_SYMBOL_GPL vmlinux 0x31763f13 ata_scsi_change_queue_depth +EXPORT_SYMBOL_GPL vmlinux 0x3182561f pcc_mbox_free_channel +EXPORT_SYMBOL_GPL vmlinux 0x3197e712 pwm_disable +EXPORT_SYMBOL_GPL vmlinux 0x31c0c2d1 dm_put +EXPORT_SYMBOL_GPL vmlinux 0x31c13f49 device_show_bool +EXPORT_SYMBOL_GPL vmlinux 0x31c5bad1 sdev_evt_send +EXPORT_SYMBOL_GPL vmlinux 0x31c7970f pciserial_suspend_ports +EXPORT_SYMBOL_GPL vmlinux 0x31cd6b96 nvdimm_bus_unregister +EXPORT_SYMBOL_GPL vmlinux 0x31d5eb6f ip6_redirect +EXPORT_SYMBOL_GPL vmlinux 0x31d8b7ed arch_pick_mmap_layout +EXPORT_SYMBOL_GPL vmlinux 0x31f5b8c2 __wake_up_locked +EXPORT_SYMBOL_GPL vmlinux 0x321bdbb1 compat_get_timeval +EXPORT_SYMBOL_GPL vmlinux 0x322ae6f0 regulator_disable_deferred +EXPORT_SYMBOL_GPL vmlinux 0x322cabce device_property_read_string_array +EXPORT_SYMBOL_GPL vmlinux 0x3235dcdf crypto_spawn_tfm2 +EXPORT_SYMBOL_GPL vmlinux 0x3240a3a7 pci_remove_root_bus +EXPORT_SYMBOL_GPL vmlinux 0x325e677c gnttab_grant_foreign_transfer_ref +EXPORT_SYMBOL_GPL vmlinux 0x3287ef82 regulator_bulk_free +EXPORT_SYMBOL_GPL vmlinux 0x328995b5 tracing_generic_entry_update +EXPORT_SYMBOL_GPL vmlinux 0x328a3305 pm_generic_runtime_resume +EXPORT_SYMBOL_GPL vmlinux 0x328c7930 usb_anchor_suspend_wakeups +EXPORT_SYMBOL_GPL vmlinux 0x329abbdf scsi_internal_device_block +EXPORT_SYMBOL_GPL vmlinux 0x32b2e626 devm_regmap_init_mmio_clk +EXPORT_SYMBOL_GPL vmlinux 0x32bc0fcf preempt_notifier_dec +EXPORT_SYMBOL_GPL vmlinux 0x32bded08 __tracepoint_block_bio_remap +EXPORT_SYMBOL_GPL vmlinux 0x32c3cb4e class_compat_register +EXPORT_SYMBOL_GPL vmlinux 0x32dec07c regmap_update_bits +EXPORT_SYMBOL_GPL vmlinux 0x33185f4e elv_unregister +EXPORT_SYMBOL_GPL vmlinux 0x3328a49e ata_link_abort +EXPORT_SYMBOL_GPL vmlinux 0x334cc272 fuse_direct_io +EXPORT_SYMBOL_GPL vmlinux 0x334e9292 platform_get_resource +EXPORT_SYMBOL_GPL vmlinux 0x335c570f enable_percpu_irq +EXPORT_SYMBOL_GPL vmlinux 0x335fc03b clk_gpio_gate_ops +EXPORT_SYMBOL_GPL vmlinux 0x336154ca rcutorture_record_test_transition +EXPORT_SYMBOL_GPL vmlinux 0x33797a1b i2c_recover_bus +EXPORT_SYMBOL_GPL vmlinux 0x337ea787 __netpoll_setup +EXPORT_SYMBOL_GPL vmlinux 0x337fea38 dma_get_any_slave_channel +EXPORT_SYMBOL_GPL vmlinux 0x33ac4120 devm_mdiobus_free +EXPORT_SYMBOL_GPL vmlinux 0x33c912fa sdhci_pci_o2_fujin2_pci_init +EXPORT_SYMBOL_GPL vmlinux 0x33cc43e5 xen_swiotlb_alloc_coherent +EXPORT_SYMBOL_GPL vmlinux 0x33cca758 xenbus_register_driver_common +EXPORT_SYMBOL_GPL vmlinux 0x33d0212e acpi_gpiochip_request_interrupts +EXPORT_SYMBOL_GPL vmlinux 0x33ea0bd4 device_remove_file +EXPORT_SYMBOL_GPL vmlinux 0x33ee4959 stmpe_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x33f70319 tcp_done +EXPORT_SYMBOL_GPL vmlinux 0x33fcaff2 kern_mount_data +EXPORT_SYMBOL_GPL vmlinux 0x34047ce6 splice_to_pipe +EXPORT_SYMBOL_GPL vmlinux 0x3413d01c wm8350_gpio_config +EXPORT_SYMBOL_GPL vmlinux 0x3415ff58 acpi_find_child_device +EXPORT_SYMBOL_GPL vmlinux 0x344a8ddd __mmc_switch +EXPORT_SYMBOL_GPL vmlinux 0x3465fce6 __tracepoint_block_bio_complete +EXPORT_SYMBOL_GPL vmlinux 0x34703d55 usb_sg_cancel +EXPORT_SYMBOL_GPL vmlinux 0x347341be adp5520_read +EXPORT_SYMBOL_GPL vmlinux 0x3474a3ba init_srcu_struct +EXPORT_SYMBOL_GPL vmlinux 0x347fd4b3 eventfd_ctx_get +EXPORT_SYMBOL_GPL vmlinux 0x34c7605a __inet_inherit_port +EXPORT_SYMBOL_GPL vmlinux 0x34e56922 relay_subbufs_consumed +EXPORT_SYMBOL_GPL vmlinux 0x3501bbe8 tty_port_register_device +EXPORT_SYMBOL_GPL vmlinux 0x3506bf3e blkcg_policy_register +EXPORT_SYMBOL_GPL vmlinux 0x35176301 rcu_batches_completed_sched +EXPORT_SYMBOL_GPL vmlinux 0x352650ee gnttab_batch_map +EXPORT_SYMBOL_GPL vmlinux 0x3533ba1c device_add_property_set +EXPORT_SYMBOL_GPL vmlinux 0x35430638 devm_regulator_bulk_get +EXPORT_SYMBOL_GPL vmlinux 0x358beca9 iommu_iova_to_phys +EXPORT_SYMBOL_GPL vmlinux 0x358ff60f twl_get_hfclk_rate +EXPORT_SYMBOL_GPL vmlinux 0x35aaf472 blkcipher_walk_virt +EXPORT_SYMBOL_GPL vmlinux 0x35ab1a51 spi_add_device +EXPORT_SYMBOL_GPL vmlinux 0x35b1a4b0 percpu_ida_free_tags +EXPORT_SYMBOL_GPL vmlinux 0x35b45b78 devm_led_classdev_register +EXPORT_SYMBOL_GPL vmlinux 0x35bf2acd nd_fletcher64 +EXPORT_SYMBOL_GPL vmlinux 0x35edc61f da903x_reads +EXPORT_SYMBOL_GPL vmlinux 0x35f10f43 nfq_ct_nat_hook +EXPORT_SYMBOL_GPL vmlinux 0x35fa3cc5 xenbus_dev_fatal +EXPORT_SYMBOL_GPL vmlinux 0x36075bb5 iommu_group_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x3614456b __inet_twsk_hashdance +EXPORT_SYMBOL_GPL vmlinux 0x361a780b usb_acpi_power_manageable +EXPORT_SYMBOL_GPL vmlinux 0x361e2bcc save_stack_trace +EXPORT_SYMBOL_GPL vmlinux 0x363b5a56 sdio_writeb +EXPORT_SYMBOL_GPL vmlinux 0x364c24b0 fuse_sync_release +EXPORT_SYMBOL_GPL vmlinux 0x367605ef blk_queue_flush_queueable +EXPORT_SYMBOL_GPL vmlinux 0x368f1fea static_key_slow_inc +EXPORT_SYMBOL_GPL vmlinux 0x369e1b55 bus_get_device_klist +EXPORT_SYMBOL_GPL vmlinux 0x369fcd70 tracing_snapshot +EXPORT_SYMBOL_GPL vmlinux 0x36a8ca25 dev_pm_opp_enable +EXPORT_SYMBOL_GPL vmlinux 0x36b6c1c0 ip6_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x36b787e5 clockevent_delta2ns +EXPORT_SYMBOL_GPL vmlinux 0x36b826d9 srcu_barrier +EXPORT_SYMBOL_GPL vmlinux 0x36bda7b0 cpuidle_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0x36c5d3cb shmem_file_setup +EXPORT_SYMBOL_GPL vmlinux 0x36dab97f trace_clock_jiffies +EXPORT_SYMBOL_GPL vmlinux 0x36efeab0 component_bind_all +EXPORT_SYMBOL_GPL vmlinux 0x37040111 bd_unlink_disk_holder +EXPORT_SYMBOL_GPL vmlinux 0x371dbd7c gfn_to_pfn_memslot +EXPORT_SYMBOL_GPL vmlinux 0x37254ded get_task_pid +EXPORT_SYMBOL_GPL vmlinux 0x37501c5e regmap_field_write +EXPORT_SYMBOL_GPL vmlinux 0x375559b4 pinconf_generic_dump_config +EXPORT_SYMBOL_GPL vmlinux 0x375e4433 wm831x_reg_lock +EXPORT_SYMBOL_GPL vmlinux 0x3782a6a8 trace_event_buffer_commit +EXPORT_SYMBOL_GPL vmlinux 0x37a9e438 __pm_runtime_idle +EXPORT_SYMBOL_GPL vmlinux 0x37afd208 rtnl_link_unregister +EXPORT_SYMBOL_GPL vmlinux 0x37d82ea7 rtc_read_alarm +EXPORT_SYMBOL_GPL vmlinux 0x37f052b9 alloc_vm_area +EXPORT_SYMBOL_GPL vmlinux 0x382e7f97 btree_visitor +EXPORT_SYMBOL_GPL vmlinux 0x3848ebe0 crypto_alloc_tfm +EXPORT_SYMBOL_GPL vmlinux 0x384a6981 __gfn_to_pfn_memslot +EXPORT_SYMBOL_GPL vmlinux 0x38639300 of_overlay_destroy +EXPORT_SYMBOL_GPL vmlinux 0x388cc975 mmc_app_cmd +EXPORT_SYMBOL_GPL vmlinux 0x38cf31f5 of_platform_populate +EXPORT_SYMBOL_GPL vmlinux 0x38e5bc5a clk_set_rate_range +EXPORT_SYMBOL_GPL vmlinux 0x38fdfe29 powercap_unregister_zone +EXPORT_SYMBOL_GPL vmlinux 0x3908b7b7 crypto_shash_digest +EXPORT_SYMBOL_GPL vmlinux 0x3913d76a platform_device_register +EXPORT_SYMBOL_GPL vmlinux 0x3919a7a3 serial8250_do_set_mctrl +EXPORT_SYMBOL_GPL vmlinux 0x3949af46 usb_get_dev +EXPORT_SYMBOL_GPL vmlinux 0x395f9186 ata_pci_bmdma_clear_simplex +EXPORT_SYMBOL_GPL vmlinux 0x396644a3 devm_regulator_put +EXPORT_SYMBOL_GPL vmlinux 0x39752c2d crypto_remove_spawns +EXPORT_SYMBOL_GPL vmlinux 0x39871d00 devm_kmemdup +EXPORT_SYMBOL_GPL vmlinux 0x39a3cee8 pci_disable_ats +EXPORT_SYMBOL_GPL vmlinux 0x39ca07cc maxim_charger_calc_reg_current +EXPORT_SYMBOL_GPL vmlinux 0x39dd0fb8 acpi_subsys_suspend +EXPORT_SYMBOL_GPL vmlinux 0x39e04d42 percpu_ida_free +EXPORT_SYMBOL_GPL vmlinux 0x39e61495 nf_logger_request_module +EXPORT_SYMBOL_GPL vmlinux 0x39e94982 crypto_grab_spawn +EXPORT_SYMBOL_GPL vmlinux 0x3a0ed83b pm_runtime_force_resume +EXPORT_SYMBOL_GPL vmlinux 0x3a16362e gpiod_set_value +EXPORT_SYMBOL_GPL vmlinux 0x3a21f3f8 blkdev_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x3a26ed11 sched_clock +EXPORT_SYMBOL_GPL vmlinux 0x3a2f7515 wm831x_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x3a3d98bb fib_table_lookup +EXPORT_SYMBOL_GPL vmlinux 0x3a4f6a32 ata_sff_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x3a4ffa48 rdev_clear_badblocks +EXPORT_SYMBOL_GPL vmlinux 0x3a536bd7 ring_buffer_read_finish +EXPORT_SYMBOL_GPL vmlinux 0x3a576a96 dev_pm_opp_init_cpufreq_table +EXPORT_SYMBOL_GPL vmlinux 0x3a686a25 tcp_get_info +EXPORT_SYMBOL_GPL vmlinux 0x3a78a6d7 da903x_writes +EXPORT_SYMBOL_GPL vmlinux 0x3a88f18d devm_phy_create +EXPORT_SYMBOL_GPL vmlinux 0x3a953c87 fwnode_property_read_u64_array +EXPORT_SYMBOL_GPL vmlinux 0x3a9be019 asymmetric_key_id_partial +EXPORT_SYMBOL_GPL vmlinux 0x3aaeddd8 inet_hash +EXPORT_SYMBOL_GPL vmlinux 0x3acdf325 twl4030_audio_enable_resource +EXPORT_SYMBOL_GPL vmlinux 0x3ad0e201 scatterwalk_copychunks +EXPORT_SYMBOL_GPL vmlinux 0x3ad4305e usb_remove_phy +EXPORT_SYMBOL_GPL vmlinux 0x3ae05619 sdio_writel +EXPORT_SYMBOL_GPL vmlinux 0x3aea2dcf of_dma_controller_register +EXPORT_SYMBOL_GPL vmlinux 0x3afbf2a5 blk_mq_free_request +EXPORT_SYMBOL_GPL vmlinux 0x3b0094f8 of_fixed_clk_setup +EXPORT_SYMBOL_GPL vmlinux 0x3b2603ce gnttab_unmap_refs +EXPORT_SYMBOL_GPL vmlinux 0x3b447235 da903x_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x3b5c231f ata_host_suspend +EXPORT_SYMBOL_GPL vmlinux 0x3b66cce4 pci_reset_pri +EXPORT_SYMBOL_GPL vmlinux 0x3b85920e iommu_group_remove_device +EXPORT_SYMBOL_GPL vmlinux 0x3b97523a power_supply_get_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0x3bafd7a5 transport_remove_device +EXPORT_SYMBOL_GPL vmlinux 0x3c196591 crypto_tfm_in_queue +EXPORT_SYMBOL_GPL vmlinux 0x3c20af51 __hvc_resize +EXPORT_SYMBOL_GPL vmlinux 0x3c49ab61 devm_free_pages +EXPORT_SYMBOL_GPL vmlinux 0x3c6554c1 devfreq_event_get_event +EXPORT_SYMBOL_GPL vmlinux 0x3c6e91d5 ehci_adjust_port_wakeup_flags +EXPORT_SYMBOL_GPL vmlinux 0x3c7cc7c4 usb_unlocked_enable_lpm +EXPORT_SYMBOL_GPL vmlinux 0x3c831441 arm_check_condition +EXPORT_SYMBOL_GPL vmlinux 0x3c91ab7b inet_twsk_schedule +EXPORT_SYMBOL_GPL vmlinux 0x3c9390db pci_vpd_find_tag +EXPORT_SYMBOL_GPL vmlinux 0x3ca72c16 of_phy_provider_unregister +EXPORT_SYMBOL_GPL vmlinux 0x3cb5a913 dev_attr_link_power_management_policy +EXPORT_SYMBOL_GPL vmlinux 0x3ccf49aa dev_pm_qos_flags +EXPORT_SYMBOL_GPL vmlinux 0x3cd06035 add_input_randomness +EXPORT_SYMBOL_GPL vmlinux 0x3cf194eb rtnl_af_unregister +EXPORT_SYMBOL_GPL vmlinux 0x3d02a597 xen_xlate_unmap_gfn_range +EXPORT_SYMBOL_GPL vmlinux 0x3d18ff3c spi_write_then_read +EXPORT_SYMBOL_GPL vmlinux 0x3d388324 dpm_resume_end +EXPORT_SYMBOL_GPL vmlinux 0x3d475e00 iommu_domain_window_disable +EXPORT_SYMBOL_GPL vmlinux 0x3d481c6b bio_alloc_mddev +EXPORT_SYMBOL_GPL vmlinux 0x3d5f392d acpi_os_unmap_memory +EXPORT_SYMBOL_GPL vmlinux 0x3d6c5480 efivars_kobject +EXPORT_SYMBOL_GPL vmlinux 0x3d6d0d58 wm5110_revd_irq +EXPORT_SYMBOL_GPL vmlinux 0x3d7c874e regulator_put +EXPORT_SYMBOL_GPL vmlinux 0x3d7ea99a gnttab_grant_foreign_transfer +EXPORT_SYMBOL_GPL vmlinux 0x3d7ffd67 __blk_run_queue_uncond +EXPORT_SYMBOL_GPL vmlinux 0x3d8014c8 to_nd_region +EXPORT_SYMBOL_GPL vmlinux 0x3d8b5090 __pci_complete_power_transition +EXPORT_SYMBOL_GPL vmlinux 0x3dbd9abe stmpe_disable +EXPORT_SYMBOL_GPL vmlinux 0x3dc526a9 arizona_of_match +EXPORT_SYMBOL_GPL vmlinux 0x3dc916b6 crypto_fl_tab +EXPORT_SYMBOL_GPL vmlinux 0x3dd18dd3 led_classdev_resume +EXPORT_SYMBOL_GPL vmlinux 0x3dd8181e __clk_get_parent +EXPORT_SYMBOL_GPL vmlinux 0x3de9cae1 crypto_remove_final +EXPORT_SYMBOL_GPL vmlinux 0x3dfc436e percpu_ref_kill_and_confirm +EXPORT_SYMBOL_GPL vmlinux 0x3e1506c3 acpi_driver_match_device +EXPORT_SYMBOL_GPL vmlinux 0x3e190214 kill_pid_info_as_cred +EXPORT_SYMBOL_GPL vmlinux 0x3e1d6a5e regulator_map_voltage_linear +EXPORT_SYMBOL_GPL vmlinux 0x3e1f72e0 kvm_vcpu_cache +EXPORT_SYMBOL_GPL vmlinux 0x3e20e469 unregister_virtio_device +EXPORT_SYMBOL_GPL vmlinux 0x3e348b08 da9052_enable_irq +EXPORT_SYMBOL_GPL vmlinux 0x3e5e1937 rcu_batches_started_sched +EXPORT_SYMBOL_GPL vmlinux 0x3e7080cb mpi_read_from_buffer +EXPORT_SYMBOL_GPL vmlinux 0x3e84a759 __rtnl_link_register +EXPORT_SYMBOL_GPL vmlinux 0x3ea2583a usb_reset_endpoint +EXPORT_SYMBOL_GPL vmlinux 0x3ed27d57 usb_phy_generic_unregister +EXPORT_SYMBOL_GPL vmlinux 0x3ee876aa pci_cfg_access_unlock +EXPORT_SYMBOL_GPL vmlinux 0x3eec6cdb rtnl_af_register +EXPORT_SYMBOL_GPL vmlinux 0x3efb35c9 get_online_cpus +EXPORT_SYMBOL_GPL vmlinux 0x3f00ddff pwm_set_polarity +EXPORT_SYMBOL_GPL vmlinux 0x3f235804 devres_for_each_res +EXPORT_SYMBOL_GPL vmlinux 0x3f29b888 sysfs_remove_files +EXPORT_SYMBOL_GPL vmlinux 0x3f427569 crypto_init_ahash_spawn +EXPORT_SYMBOL_GPL vmlinux 0x3f51a055 efivar_entry_delete +EXPORT_SYMBOL_GPL vmlinux 0x3f69d857 pwm_set_chip_data +EXPORT_SYMBOL_GPL vmlinux 0x3f77bb3e debugfs_create_u64 +EXPORT_SYMBOL_GPL vmlinux 0x3f84d4c9 gnttab_release_grant_reference +EXPORT_SYMBOL_GPL vmlinux 0x3fa5af9c nd_cmd_bus_desc +EXPORT_SYMBOL_GPL vmlinux 0x3fb0e0d8 pm_stay_awake +EXPORT_SYMBOL_GPL vmlinux 0x3fc72d3d __tracepoint_kfree_skb +EXPORT_SYMBOL_GPL vmlinux 0x3fe09a87 devm_pinctrl_get +EXPORT_SYMBOL_GPL vmlinux 0x3fe6b521 sdio_writew +EXPORT_SYMBOL_GPL vmlinux 0x40003f0e iommu_domain_get_attr +EXPORT_SYMBOL_GPL vmlinux 0x40050b5b ata_cable_ignore +EXPORT_SYMBOL_GPL vmlinux 0x400a024b acpi_scan_lock_release +EXPORT_SYMBOL_GPL vmlinux 0x400e7761 wm8350_reg_unlock +EXPORT_SYMBOL_GPL vmlinux 0x4033b80d cpufreq_generic_frequency_table_verify +EXPORT_SYMBOL_GPL vmlinux 0x403f9529 gpio_request_one +EXPORT_SYMBOL_GPL vmlinux 0x4045c494 filter_match_preds +EXPORT_SYMBOL_GPL vmlinux 0x4062914d amba_ahb_device_add +EXPORT_SYMBOL_GPL vmlinux 0x406428ef pci_vfs_assigned +EXPORT_SYMBOL_GPL vmlinux 0x4065d168 pm_print_active_wakeup_sources +EXPORT_SYMBOL_GPL vmlinux 0x40685dcc __list_lru_init +EXPORT_SYMBOL_GPL vmlinux 0x406c4cb1 hrtimer_resolution +EXPORT_SYMBOL_GPL vmlinux 0x409cb0cb sata_lpm_ignore_phy_events +EXPORT_SYMBOL_GPL vmlinux 0x40af0dec ata_xfer_mode2mask +EXPORT_SYMBOL_GPL vmlinux 0x40b3e50e pci_slots_kset +EXPORT_SYMBOL_GPL vmlinux 0x40c38319 watchdog_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0x40d46b21 crypto_ft_tab +EXPORT_SYMBOL_GPL vmlinux 0x40e5a440 clear_foreign_p2m_mapping +EXPORT_SYMBOL_GPL vmlinux 0x40e6c4fd irq_of_parse_and_map +EXPORT_SYMBOL_GPL vmlinux 0x40e8f8b5 sock_diag_put_meminfo +EXPORT_SYMBOL_GPL vmlinux 0x40eecc5f wm831x_auxadc_read +EXPORT_SYMBOL_GPL vmlinux 0x40f0683e reset_control_put +EXPORT_SYMBOL_GPL vmlinux 0x40f4ae28 usb_unpoison_urb +EXPORT_SYMBOL_GPL vmlinux 0x4136ecbc crypto_aead_type +EXPORT_SYMBOL_GPL vmlinux 0x41396e00 shmem_get_seals +EXPORT_SYMBOL_GPL vmlinux 0x416d1ede ima_file_check +EXPORT_SYMBOL_GPL vmlinux 0x417b0868 inet6_lookup_listener +EXPORT_SYMBOL_GPL vmlinux 0x41814cb8 dirty_writeback_interval +EXPORT_SYMBOL_GPL vmlinux 0x41baf175 devm_extcon_dev_allocate +EXPORT_SYMBOL_GPL vmlinux 0x41d70201 device_property_read_u32_array +EXPORT_SYMBOL_GPL vmlinux 0x420ee1a6 ohci_restart +EXPORT_SYMBOL_GPL vmlinux 0x4213a51a efivar_entry_set_safe +EXPORT_SYMBOL_GPL vmlinux 0x421f5b90 get_task_mm +EXPORT_SYMBOL_GPL vmlinux 0x4222aade tcp_slow_start +EXPORT_SYMBOL_GPL vmlinux 0x422b047a efivar_entry_set_get_size +EXPORT_SYMBOL_GPL vmlinux 0x4243f2e1 ping_bind +EXPORT_SYMBOL_GPL vmlinux 0x424acc6d scatterwalk_done +EXPORT_SYMBOL_GPL vmlinux 0x424eb6c7 tcp_twsk_unique +EXPORT_SYMBOL_GPL vmlinux 0x426fef5f nvdimm_attribute_group +EXPORT_SYMBOL_GPL vmlinux 0x42741727 input_ff_upload +EXPORT_SYMBOL_GPL vmlinux 0x42825ce2 rcu_scheduler_active +EXPORT_SYMBOL_GPL vmlinux 0x4299c7ca fuse_conn_init +EXPORT_SYMBOL_GPL vmlinux 0x42ab7ff4 crypto_shash_update +EXPORT_SYMBOL_GPL vmlinux 0x42b0d9a5 of_dma_router_register +EXPORT_SYMBOL_GPL vmlinux 0x42b9fedd ipv4_redirect +EXPORT_SYMBOL_GPL vmlinux 0x42be12a6 of_get_fb_videomode +EXPORT_SYMBOL_GPL vmlinux 0x42cb42ce vfs_fallocate +EXPORT_SYMBOL_GPL vmlinux 0x42cd359b of_get_nand_bus_width +EXPORT_SYMBOL_GPL vmlinux 0x43088cae nvdimm_volatile_region_create +EXPORT_SYMBOL_GPL vmlinux 0x430fecac mpc8xxx_spi_remove +EXPORT_SYMBOL_GPL vmlinux 0x4312d3b7 skb_morph +EXPORT_SYMBOL_GPL vmlinux 0x431bf93c wm5110_irq +EXPORT_SYMBOL_GPL vmlinux 0x432a2d88 pci_find_next_capability +EXPORT_SYMBOL_GPL vmlinux 0x43619e1a scatterwalk_ffwd +EXPORT_SYMBOL_GPL vmlinux 0x43722c02 __devm_of_phy_provider_register +EXPORT_SYMBOL_GPL vmlinux 0x43773b58 raw_seq_stop +EXPORT_SYMBOL_GPL vmlinux 0x439e0bbd ip6_datagram_send_ctl +EXPORT_SYMBOL_GPL vmlinux 0x43a53735 __alloc_workqueue_key +EXPORT_SYMBOL_GPL vmlinux 0x43b466b0 gfn_to_pfn_memslot_atomic +EXPORT_SYMBOL_GPL vmlinux 0x43c2a786 __cpu_clear_user_page +EXPORT_SYMBOL_GPL vmlinux 0x43d27c09 ata_cable_sata +EXPORT_SYMBOL_GPL vmlinux 0x43ece4dc of_property_read_string_helper +EXPORT_SYMBOL_GPL vmlinux 0x43f0b02d hwrng_unregister +EXPORT_SYMBOL_GPL vmlinux 0x43f2d195 net_ns_type_operations +EXPORT_SYMBOL_GPL vmlinux 0x43f56e82 ata_xfer_mode2shift +EXPORT_SYMBOL_GPL vmlinux 0x43f81957 clk_round_rate +EXPORT_SYMBOL_GPL vmlinux 0x44051ba9 sdio_set_host_pm_flags +EXPORT_SYMBOL_GPL vmlinux 0x44132dad virtqueue_add_sgs +EXPORT_SYMBOL_GPL vmlinux 0x4423a23a __ablkcipher_walk_complete +EXPORT_SYMBOL_GPL vmlinux 0x444f1735 cpu_pm_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x44671a70 fuse_dev_free +EXPORT_SYMBOL_GPL vmlinux 0x44839a0a sdev_evt_send_simple +EXPORT_SYMBOL_GPL vmlinux 0x4484a5a4 wait_for_device_probe +EXPORT_SYMBOL_GPL vmlinux 0x44a793ab HYPERVISOR_grant_table_op +EXPORT_SYMBOL_GPL vmlinux 0x44b076e6 kvm_vcpu_write_guest_page +EXPORT_SYMBOL_GPL vmlinux 0x44b42b5c xen_swiotlb_dma_mapping_error +EXPORT_SYMBOL_GPL vmlinux 0x44d6ecd5 kvm_vcpu_read_guest +EXPORT_SYMBOL_GPL vmlinux 0x44e99ed6 ata_dummy_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x4504de8b skb_gso_transport_seglen +EXPORT_SYMBOL_GPL vmlinux 0x450f46b7 sdio_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x450fb522 kmsg_dump_get_buffer +EXPORT_SYMBOL_GPL vmlinux 0x4527caa2 register_acpi_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x45366601 ping_seq_start +EXPORT_SYMBOL_GPL vmlinux 0x457594fa crypto_alg_list +EXPORT_SYMBOL_GPL vmlinux 0x4576337f atomic_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x4582cfee ata_qc_complete +EXPORT_SYMBOL_GPL vmlinux 0x45912cc0 dbs_check_cpu +EXPORT_SYMBOL_GPL vmlinux 0x459471cf dmaengine_unmap_put +EXPORT_SYMBOL_GPL vmlinux 0x45b08bb1 kvm_vcpu_gfn_to_page +EXPORT_SYMBOL_GPL vmlinux 0x45bf1ff3 crypto_inc +EXPORT_SYMBOL_GPL vmlinux 0x45db2c4a nfq_ct_hook +EXPORT_SYMBOL_GPL vmlinux 0x46013233 net_dec_ingress_queue +EXPORT_SYMBOL_GPL vmlinux 0x460f7531 wait_rcu_gp +EXPORT_SYMBOL_GPL vmlinux 0x461a2e5d clk_register_divider +EXPORT_SYMBOL_GPL vmlinux 0x461f3824 posix_acl_access_xattr_handler +EXPORT_SYMBOL_GPL vmlinux 0x463d24ea ipv6_fixup_options +EXPORT_SYMBOL_GPL vmlinux 0x46521f81 pci_assign_unassigned_bus_resources +EXPORT_SYMBOL_GPL vmlinux 0x46708d9e __pm_runtime_use_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0x46722673 wm5102_i2c_regmap +EXPORT_SYMBOL_GPL vmlinux 0x4672e88b __crypto_dequeue_request +EXPORT_SYMBOL_GPL vmlinux 0x4688d7ec pvclock_gtod_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x469143c4 x509_free_certificate +EXPORT_SYMBOL_GPL vmlinux 0x469c25b6 ata_port_pbar_desc +EXPORT_SYMBOL_GPL vmlinux 0x46dd8b69 regmap_fields_update_bits +EXPORT_SYMBOL_GPL vmlinux 0x46e9668b crypto_shash_setkey +EXPORT_SYMBOL_GPL vmlinux 0x46efe816 usb_enable_ltm +EXPORT_SYMBOL_GPL vmlinux 0x470303e2 xfrm_audit_state_replay_overflow +EXPORT_SYMBOL_GPL vmlinux 0x471daf86 clk_register_divider_table +EXPORT_SYMBOL_GPL vmlinux 0x4720d233 serial8250_rx_chars +EXPORT_SYMBOL_GPL vmlinux 0x47229b5c gpio_request +EXPORT_SYMBOL_GPL vmlinux 0x47295b87 acpi_register_gsi +EXPORT_SYMBOL_GPL vmlinux 0x472d98b1 tpmm_chip_alloc +EXPORT_SYMBOL_GPL vmlinux 0x47318add pm_schedule_suspend +EXPORT_SYMBOL_GPL vmlinux 0x4738ed03 remove_irq +EXPORT_SYMBOL_GPL vmlinux 0x47411a5f regulator_sync_voltage +EXPORT_SYMBOL_GPL vmlinux 0x474b6a82 of_resolve_phandles +EXPORT_SYMBOL_GPL vmlinux 0x4761f17c register_netevent_notifier +EXPORT_SYMBOL_GPL vmlinux 0x47884890 system_power_efficient_wq +EXPORT_SYMBOL_GPL vmlinux 0x479b64bc anon_transport_class_register +EXPORT_SYMBOL_GPL vmlinux 0x47a35a41 extcon_set_cable_state +EXPORT_SYMBOL_GPL vmlinux 0x47aad3b9 have_governor_per_policy +EXPORT_SYMBOL_GPL vmlinux 0x47ab70cb rtnl_put_cacheinfo +EXPORT_SYMBOL_GPL vmlinux 0x47ba37d5 pcie_port_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x47ca1280 ehci_handshake +EXPORT_SYMBOL_GPL vmlinux 0x47d0eea2 acpi_lpat_temp_to_raw +EXPORT_SYMBOL_GPL vmlinux 0x47de0dc7 clk_unregister_mux +EXPORT_SYMBOL_GPL vmlinux 0x47f7a2ce bus_for_each_drv +EXPORT_SYMBOL_GPL vmlinux 0x481c2cb0 look_up_OID +EXPORT_SYMBOL_GPL vmlinux 0x4828e77b acpi_scan_lock_acquire +EXPORT_SYMBOL_GPL vmlinux 0x4837a70a wm8350_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x485cd7f6 kvm_rebooting +EXPORT_SYMBOL_GPL vmlinux 0x485f2420 of_get_display_timing +EXPORT_SYMBOL_GPL vmlinux 0x485f9678 gpiochip_lock_as_irq +EXPORT_SYMBOL_GPL vmlinux 0x486670d8 crypto_register_instance +EXPORT_SYMBOL_GPL vmlinux 0x48670159 perf_event_read_value +EXPORT_SYMBOL_GPL vmlinux 0x4868c3b4 rcu_batches_started_bh +EXPORT_SYMBOL_GPL vmlinux 0x487a8a49 devfreq_event_get_edev_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0x487c5d33 nf_log_buf_add +EXPORT_SYMBOL_GPL vmlinux 0x488904b7 crypto_givcipher_type +EXPORT_SYMBOL_GPL vmlinux 0x48907c3f of_reserved_mem_device_release +EXPORT_SYMBOL_GPL vmlinux 0x4899db56 ip6_datagram_recv_ctl +EXPORT_SYMBOL_GPL vmlinux 0x48b9b8d4 xenbus_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0x48d75ab8 phy_exit +EXPORT_SYMBOL_GPL vmlinux 0x48df5b2b tps65912_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x48e4d91e irq_domain_add_simple +EXPORT_SYMBOL_GPL vmlinux 0x48eb210c crypto_init_spawn +EXPORT_SYMBOL_GPL vmlinux 0x48f01580 input_class +EXPORT_SYMBOL_GPL vmlinux 0x48fde872 pwm_config +EXPORT_SYMBOL_GPL vmlinux 0x49042dde sock_prot_inuse_get +EXPORT_SYMBOL_GPL vmlinux 0x49390a8f pcie_bus_configure_settings +EXPORT_SYMBOL_GPL vmlinux 0x49669606 gfn_to_pfn_prot +EXPORT_SYMBOL_GPL vmlinux 0x49710d79 balloon_page_enqueue +EXPORT_SYMBOL_GPL vmlinux 0x4973d3b9 modify_user_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x497cf2ce dax_truncate_page +EXPORT_SYMBOL_GPL vmlinux 0x4989cb35 map_vm_area +EXPORT_SYMBOL_GPL vmlinux 0x498d293a trace_buffer_unlock_commit +EXPORT_SYMBOL_GPL vmlinux 0x499043d3 crypto_init_queue +EXPORT_SYMBOL_GPL vmlinux 0x49964831 fuse_get_req +EXPORT_SYMBOL_GPL vmlinux 0x49a168f7 led_stop_software_blink +EXPORT_SYMBOL_GPL vmlinux 0x49b508bb class_find_device +EXPORT_SYMBOL_GPL vmlinux 0x49bf8a86 exportfs_encode_fh +EXPORT_SYMBOL_GPL vmlinux 0x49e0fd21 __cpu_copy_user_page +EXPORT_SYMBOL_GPL vmlinux 0x49e96999 cond_synchronize_rcu +EXPORT_SYMBOL_GPL vmlinux 0x49e96c81 regmap_get_val_bytes +EXPORT_SYMBOL_GPL vmlinux 0x49ec706f da903x_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0x49fcd0a9 vma_kernel_pagesize +EXPORT_SYMBOL_GPL vmlinux 0x49feb496 synchronize_srcu +EXPORT_SYMBOL_GPL vmlinux 0x4a14b072 crypto_blkcipher_type +EXPORT_SYMBOL_GPL vmlinux 0x4a2a7007 mbox_client_txdone +EXPORT_SYMBOL_GPL vmlinux 0x4a35c1d8 __srcu_read_lock +EXPORT_SYMBOL_GPL vmlinux 0x4a420d09 acpi_bus_detach_private_data +EXPORT_SYMBOL_GPL vmlinux 0x4a50b700 tps6586x_update +EXPORT_SYMBOL_GPL vmlinux 0x4a5198fe scsi_mode_select +EXPORT_SYMBOL_GPL vmlinux 0x4a89d0d0 fat_sync_inode +EXPORT_SYMBOL_GPL vmlinux 0x4a90160e bprintf +EXPORT_SYMBOL_GPL vmlinux 0x4a9175db blk_trace_setup +EXPORT_SYMBOL_GPL vmlinux 0x4aadeb9a ring_buffer_alloc_read_page +EXPORT_SYMBOL_GPL vmlinux 0x4aea9fa1 usb_deregister +EXPORT_SYMBOL_GPL vmlinux 0x4b0054a7 rtnl_link_register +EXPORT_SYMBOL_GPL vmlinux 0x4b2142f4 regulator_unregister +EXPORT_SYMBOL_GPL vmlinux 0x4b303dca pm_generic_poweroff +EXPORT_SYMBOL_GPL vmlinux 0x4b337d95 acpi_initialize_hp_context +EXPORT_SYMBOL_GPL vmlinux 0x4b510628 sysfs_remove_bin_file +EXPORT_SYMBOL_GPL vmlinux 0x4b5c97b9 xen_swiotlb_unmap_page +EXPORT_SYMBOL_GPL vmlinux 0x4b68140f ipv4_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x4b6903e4 regmap_register_patch +EXPORT_SYMBOL_GPL vmlinux 0x4b69c643 need_load_eval +EXPORT_SYMBOL_GPL vmlinux 0x4ba710b8 ip6_dst_lookup_flow +EXPORT_SYMBOL_GPL vmlinux 0x4ba90123 ip6_sk_dst_lookup_flow +EXPORT_SYMBOL_GPL vmlinux 0x4bb13f16 kernel_kobj +EXPORT_SYMBOL_GPL vmlinux 0x4bc7a869 pinctrl_pm_select_idle_state +EXPORT_SYMBOL_GPL vmlinux 0x4be58c46 fixed_phy_set_link_update +EXPORT_SYMBOL_GPL vmlinux 0x4c00830f fib_rules_lookup +EXPORT_SYMBOL_GPL vmlinux 0x4c161349 balloon_page_dequeue +EXPORT_SYMBOL_GPL vmlinux 0x4c1cde82 register_ftrace_function +EXPORT_SYMBOL_GPL vmlinux 0x4c219f6c efivars_register +EXPORT_SYMBOL_GPL vmlinux 0x4c3dc42b gpiod_set_raw_array_value +EXPORT_SYMBOL_GPL vmlinux 0x4c602bf1 __blkg_release_rcu +EXPORT_SYMBOL_GPL vmlinux 0x4c645f9e static_key_slow_dec_deferred +EXPORT_SYMBOL_GPL vmlinux 0x4c6cc3ea wb_writeout_inc +EXPORT_SYMBOL_GPL vmlinux 0x4c781d27 dma_buf_put +EXPORT_SYMBOL_GPL vmlinux 0x4c7e36f7 shash_free_instance +EXPORT_SYMBOL_GPL vmlinux 0x4ca2b0a1 __gpiod_get_optional +EXPORT_SYMBOL_GPL vmlinux 0x4cb3d119 da9052_adc_read_temp +EXPORT_SYMBOL_GPL vmlinux 0x4cd6ffaf gnttab_unmap_refs_async +EXPORT_SYMBOL_GPL vmlinux 0x4d0015e2 cpu_hotplug_disable +EXPORT_SYMBOL_GPL vmlinux 0x4d0fb561 dma_request_slave_channel +EXPORT_SYMBOL_GPL vmlinux 0x4d12600a tpm_pm_suspend +EXPORT_SYMBOL_GPL vmlinux 0x4d1784c5 device_store_int +EXPORT_SYMBOL_GPL vmlinux 0x4d425f06 dma_buf_attach +EXPORT_SYMBOL_GPL vmlinux 0x4d66b5f3 tc3589x_block_write +EXPORT_SYMBOL_GPL vmlinux 0x4d6981b8 da9052_adc_manual_read +EXPORT_SYMBOL_GPL vmlinux 0x4da3ca5e class_compat_remove_link +EXPORT_SYMBOL_GPL vmlinux 0x4da55c29 crypto_dequeue_request +EXPORT_SYMBOL_GPL vmlinux 0x4da567d2 ata_pci_sff_activate_host +EXPORT_SYMBOL_GPL vmlinux 0x4db21735 regulator_map_voltage_linear_range +EXPORT_SYMBOL_GPL vmlinux 0x4dc4b367 dma_buf_detach +EXPORT_SYMBOL_GPL vmlinux 0x4dc5d7f6 usb_show_dynids +EXPORT_SYMBOL_GPL vmlinux 0x4dc9d5ea mnt_drop_write +EXPORT_SYMBOL_GPL vmlinux 0x4dd8ad1b virtio_config_changed +EXPORT_SYMBOL_GPL vmlinux 0x4de15ba4 tcp_register_congestion_control +EXPORT_SYMBOL_GPL vmlinux 0x4de17ab3 usb_state_string +EXPORT_SYMBOL_GPL vmlinux 0x4dfa1c24 dev_pm_qos_hide_latency_limit +EXPORT_SYMBOL_GPL vmlinux 0x4dfda72c of_irq_parse_raw +EXPORT_SYMBOL_GPL vmlinux 0x4e0a8fce i2c_new_device +EXPORT_SYMBOL_GPL vmlinux 0x4e109192 ring_buffer_entries +EXPORT_SYMBOL_GPL vmlinux 0x4e113519 elf_hwcap +EXPORT_SYMBOL_GPL vmlinux 0x4e1b7fe0 kvm_io_bus_write +EXPORT_SYMBOL_GPL vmlinux 0x4e242f5f pstore_cannot_block_path +EXPORT_SYMBOL_GPL vmlinux 0x4e341d4f sock_diag_register +EXPORT_SYMBOL_GPL vmlinux 0x4e356f2e __ata_ehi_push_desc +EXPORT_SYMBOL_GPL vmlinux 0x4e4ba5eb da903x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x4e57dd98 devm_extcon_dev_free +EXPORT_SYMBOL_GPL vmlinux 0x4eb6c597 wm831x_auxadc_read_uv +EXPORT_SYMBOL_GPL vmlinux 0x4edacdb5 crypto_shash_finup +EXPORT_SYMBOL_GPL vmlinux 0x4ef5bcf4 perf_swevent_get_recursion_context +EXPORT_SYMBOL_GPL vmlinux 0x4ef69292 serial8250_rpm_put +EXPORT_SYMBOL_GPL vmlinux 0x4f020dee public_key_verify_signature +EXPORT_SYMBOL_GPL vmlinux 0x4f06395b tcp_unregister_congestion_control +EXPORT_SYMBOL_GPL vmlinux 0x4f4979f7 da9055_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0x4f57c0a1 usb_add_phy_dev +EXPORT_SYMBOL_GPL vmlinux 0x4f5b5cc0 kvm_vcpu_kick +EXPORT_SYMBOL_GPL vmlinux 0x4f5b7b01 wm8997_irq +EXPORT_SYMBOL_GPL vmlinux 0x4f5bc3ea kvm_init +EXPORT_SYMBOL_GPL vmlinux 0x4f6a07fe show_rcu_gp_kthreads +EXPORT_SYMBOL_GPL vmlinux 0x4f98d766 cpu_pm_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x4f9fb115 ata_eh_thaw_port +EXPORT_SYMBOL_GPL vmlinux 0x4fa1a84a scsi_schedule_eh +EXPORT_SYMBOL_GPL vmlinux 0x4fbfa8fd regmap_parse_val +EXPORT_SYMBOL_GPL vmlinux 0x4fc2ea86 sysfs_remove_link_from_group +EXPORT_SYMBOL_GPL vmlinux 0x4fc52cf0 crypto_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x4fd3b176 rtc_alarm_irq_enable +EXPORT_SYMBOL_GPL vmlinux 0x4fd4e89d ring_buffer_empty_cpu +EXPORT_SYMBOL_GPL vmlinux 0x4fd8067d get_user_pages_fast +EXPORT_SYMBOL_GPL vmlinux 0x4fdc945d sata_deb_timing_normal +EXPORT_SYMBOL_GPL vmlinux 0x4fe12433 regulator_get_exclusive +EXPORT_SYMBOL_GPL vmlinux 0x4fe1eddf unregister_netevent_notifier +EXPORT_SYMBOL_GPL vmlinux 0x4ff60989 ping_seq_fops +EXPORT_SYMBOL_GPL vmlinux 0x5005b69e btree_update +EXPORT_SYMBOL_GPL vmlinux 0x5026585c xen_irq_from_gsi +EXPORT_SYMBOL_GPL vmlinux 0x505f796b irq_set_affinity_notifier +EXPORT_SYMBOL_GPL vmlinux 0x5066bdc1 ehci_hub_control +EXPORT_SYMBOL_GPL vmlinux 0x5086ac3a alg_test +EXPORT_SYMBOL_GPL vmlinux 0x50883cc0 bsg_request_fn +EXPORT_SYMBOL_GPL vmlinux 0x5091b823 ring_buffer_read_start +EXPORT_SYMBOL_GPL vmlinux 0x5098feaf dma_buf_kunmap_atomic +EXPORT_SYMBOL_GPL vmlinux 0x50c0b72c ping_proc_unregister +EXPORT_SYMBOL_GPL vmlinux 0x50c58950 sysfs_remove_group +EXPORT_SYMBOL_GPL vmlinux 0x50d69a5d ata_pci_sff_init_host +EXPORT_SYMBOL_GPL vmlinux 0x50e65876 usb_block_urb +EXPORT_SYMBOL_GPL vmlinux 0x50e7193a __i2c_first_dynamic_bus_num +EXPORT_SYMBOL_GPL vmlinux 0x50ed15a6 crypto_unregister_rngs +EXPORT_SYMBOL_GPL vmlinux 0x50fad434 round_jiffies_up +EXPORT_SYMBOL_GPL vmlinux 0x51059be4 __platform_driver_probe +EXPORT_SYMBOL_GPL vmlinux 0x510946aa device_reprobe +EXPORT_SYMBOL_GPL vmlinux 0x510d620d devm_kstrdup +EXPORT_SYMBOL_GPL vmlinux 0x511d4dd5 rhashtable_insert_rehash +EXPORT_SYMBOL_GPL vmlinux 0x511ec259 crypto_shoot_alg +EXPORT_SYMBOL_GPL vmlinux 0x514e9875 divider_get_val +EXPORT_SYMBOL_GPL vmlinux 0x516a060a gpiod_get_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x5176bd1d crypto_hash_walk_done +EXPORT_SYMBOL_GPL vmlinux 0x5187ac4b xen_store_evtchn +EXPORT_SYMBOL_GPL vmlinux 0x5191bd3c efivar_work +EXPORT_SYMBOL_GPL vmlinux 0x519e6c6f ping_init_sock +EXPORT_SYMBOL_GPL vmlinux 0x51a6f2a7 __kvm_set_memory_region +EXPORT_SYMBOL_GPL vmlinux 0x51e5a659 device_property_present +EXPORT_SYMBOL_GPL vmlinux 0x51e906b1 ata_std_sched_eh +EXPORT_SYMBOL_GPL vmlinux 0x5210a5bf hsi_board_list +EXPORT_SYMBOL_GPL vmlinux 0x5225841a wm8350_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x5225cf2d usb_altnum_to_altsetting +EXPORT_SYMBOL_GPL vmlinux 0x522f538b tpm_send +EXPORT_SYMBOL_GPL vmlinux 0x52502dc8 stmpe_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x526e57cc inet_csk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x5272d8bc __cookie_v4_check +EXPORT_SYMBOL_GPL vmlinux 0x527b72c3 kvm_debugfs_dir +EXPORT_SYMBOL_GPL vmlinux 0x5288852d devm_of_phy_get +EXPORT_SYMBOL_GPL vmlinux 0x52a41251 __cookie_v4_init_sequence +EXPORT_SYMBOL_GPL vmlinux 0x52c05f87 thermal_notify_framework +EXPORT_SYMBOL_GPL vmlinux 0x52f51402 pciserial_init_ports +EXPORT_SYMBOL_GPL vmlinux 0x5300a131 __pm_relax +EXPORT_SYMBOL_GPL vmlinux 0x530d4fe9 inverse_translate +EXPORT_SYMBOL_GPL vmlinux 0x5316909c extcon_set_state +EXPORT_SYMBOL_GPL vmlinux 0x53212970 device_release_driver +EXPORT_SYMBOL_GPL vmlinux 0x5324f049 nvdimm_blk_region_create +EXPORT_SYMBOL_GPL vmlinux 0x53259710 __pm_runtime_disable +EXPORT_SYMBOL_GPL vmlinux 0x5343d22c devm_remove_action +EXPORT_SYMBOL_GPL vmlinux 0x5358fc36 ring_buffer_discard_commit +EXPORT_SYMBOL_GPL vmlinux 0x53614269 get_cpu_idle_time_us +EXPORT_SYMBOL_GPL vmlinux 0x5368d633 devres_find +EXPORT_SYMBOL_GPL vmlinux 0x536e12d7 gpiochip_set_chained_irqchip +EXPORT_SYMBOL_GPL vmlinux 0x5387df09 inet_csk_listen_stop +EXPORT_SYMBOL_GPL vmlinux 0x539d6d52 dax_do_io +EXPORT_SYMBOL_GPL vmlinux 0x53d0f563 rhashtable_walk_next +EXPORT_SYMBOL_GPL vmlinux 0x53ef99ba tty_ldisc_flush +EXPORT_SYMBOL_GPL vmlinux 0x5406e834 power_supply_external_power_changed +EXPORT_SYMBOL_GPL vmlinux 0x5407dffd scsi_flush_work +EXPORT_SYMBOL_GPL vmlinux 0x541bd60a irq_work_run +EXPORT_SYMBOL_GPL vmlinux 0x54215db5 visitor64 +EXPORT_SYMBOL_GPL vmlinux 0x5425d145 bit_wait_timeout +EXPORT_SYMBOL_GPL vmlinux 0x54361bc1 __irq_domain_add +EXPORT_SYMBOL_GPL vmlinux 0x544a8bbe kvm_release_page_clean +EXPORT_SYMBOL_GPL vmlinux 0x545af82d usb_driver_release_interface +EXPORT_SYMBOL_GPL vmlinux 0x545c20dc platform_bus +EXPORT_SYMBOL_GPL vmlinux 0x5460c8d8 fsnotify_get_cookie +EXPORT_SYMBOL_GPL vmlinux 0x54740eb7 get_cpu_idle_time +EXPORT_SYMBOL_GPL vmlinux 0x5476ad92 gpiochip_unlock_as_irq +EXPORT_SYMBOL_GPL vmlinux 0x547ac02a file_ra_state_init +EXPORT_SYMBOL_GPL vmlinux 0x547d1d96 xenbus_dev_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x54820bf2 powercap_register_zone +EXPORT_SYMBOL_GPL vmlinux 0x5482317e regcache_sync_region +EXPORT_SYMBOL_GPL vmlinux 0x549525ef handle_nested_irq +EXPORT_SYMBOL_GPL vmlinux 0x549fb95f extcon_get_extcon_dev +EXPORT_SYMBOL_GPL vmlinux 0x54d46690 uart_parse_earlycon +EXPORT_SYMBOL_GPL vmlinux 0x550fbf98 clk_mux_ops +EXPORT_SYMBOL_GPL vmlinux 0x5519a40c cpufreq_cooling_unregister +EXPORT_SYMBOL_GPL vmlinux 0x55243ac2 irq_domain_simple_ops +EXPORT_SYMBOL_GPL vmlinux 0x552fa42d alarm_restart +EXPORT_SYMBOL_GPL vmlinux 0x553b49a4 cpufreq_get_driver_data +EXPORT_SYMBOL_GPL vmlinux 0x55417264 unregister_vt_notifier +EXPORT_SYMBOL_GPL vmlinux 0x55428601 sk_clear_memalloc +EXPORT_SYMBOL_GPL vmlinux 0x55526907 xen_features +EXPORT_SYMBOL_GPL vmlinux 0x556e4390 clk_get_rate +EXPORT_SYMBOL_GPL vmlinux 0x55784228 regmap_irq_get_virq +EXPORT_SYMBOL_GPL vmlinux 0x559240ab gfn_to_pfn_atomic +EXPORT_SYMBOL_GPL vmlinux 0x55b4ecc1 cpufreq_freq_attr_scaling_available_freqs +EXPORT_SYMBOL_GPL vmlinux 0x55c9089d subsys_virtual_register +EXPORT_SYMBOL_GPL vmlinux 0x55cd6359 skb_append_pagefrags +EXPORT_SYMBOL_GPL vmlinux 0x560173fa of_property_read_u16_array +EXPORT_SYMBOL_GPL vmlinux 0x5606adb5 atomic_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0x560a920d usb_ep0_reinit +EXPORT_SYMBOL_GPL vmlinux 0x56256e8a orderly_poweroff +EXPORT_SYMBOL_GPL vmlinux 0x56310925 regulator_mode_to_status +EXPORT_SYMBOL_GPL vmlinux 0x563fea13 virtqueue_disable_cb +EXPORT_SYMBOL_GPL vmlinux 0x5641485b tty_termios_encode_baud_rate +EXPORT_SYMBOL_GPL vmlinux 0x565618ed smpboot_update_cpumask_percpu_thread +EXPORT_SYMBOL_GPL vmlinux 0x565b6892 uuid_le_gen +EXPORT_SYMBOL_GPL vmlinux 0x5680e196 call_filter_check_discard +EXPORT_SYMBOL_GPL vmlinux 0x56886b19 scatterwalk_map +EXPORT_SYMBOL_GPL vmlinux 0x56947347 dmi_walk +EXPORT_SYMBOL_GPL vmlinux 0x5696dd5a ata_dev_disable +EXPORT_SYMBOL_GPL vmlinux 0x56aae247 of_get_videomode +EXPORT_SYMBOL_GPL vmlinux 0x56c13ad8 usb_autopm_get_interface_async +EXPORT_SYMBOL_GPL vmlinux 0x56d697ce cpu_up +EXPORT_SYMBOL_GPL vmlinux 0x56e75d47 klist_node_attached +EXPORT_SYMBOL_GPL vmlinux 0x56e9103b cpu_pm_enter +EXPORT_SYMBOL_GPL vmlinux 0x56f07a0b find_get_pid +EXPORT_SYMBOL_GPL vmlinux 0x56f561d9 component_master_add +EXPORT_SYMBOL_GPL vmlinux 0x5708c3f2 inet_csk_listen_start +EXPORT_SYMBOL_GPL vmlinux 0x570de039 regmap_field_read +EXPORT_SYMBOL_GPL vmlinux 0x5715de07 acpi_dev_pm_attach +EXPORT_SYMBOL_GPL vmlinux 0x57231f45 ring_buffer_record_on +EXPORT_SYMBOL_GPL vmlinux 0x575c5f94 execute_in_process_context +EXPORT_SYMBOL_GPL vmlinux 0x5768b99d get_dcookie +EXPORT_SYMBOL_GPL vmlinux 0x5779d445 xenbus_exists +EXPORT_SYMBOL_GPL vmlinux 0x577b3dad devm_add_action +EXPORT_SYMBOL_GPL vmlinux 0x5790e7a0 pci_unlock_rescan_remove +EXPORT_SYMBOL_GPL vmlinux 0x5795f256 blk_execute_rq_nowait +EXPORT_SYMBOL_GPL vmlinux 0x579a76ed pinctrl_utils_add_config +EXPORT_SYMBOL_GPL vmlinux 0x579e0bf5 rtnl_unregister_all +EXPORT_SYMBOL_GPL vmlinux 0x57c39727 kdb_register_flags +EXPORT_SYMBOL_GPL vmlinux 0x57d735c9 proc_get_parent_data +EXPORT_SYMBOL_GPL vmlinux 0x57f71cd3 regulator_list_voltage +EXPORT_SYMBOL_GPL vmlinux 0x57f8062c acpi_dev_resource_io +EXPORT_SYMBOL_GPL vmlinux 0x57fb05da tc3589x_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x5802478d ata_base_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x5818a761 disk_part_iter_next +EXPORT_SYMBOL_GPL vmlinux 0x58292e5f clk_fixed_factor_ops +EXPORT_SYMBOL_GPL vmlinux 0x5839d399 tcp_send_ack +EXPORT_SYMBOL_GPL vmlinux 0x58691853 efivar_entry_add +EXPORT_SYMBOL_GPL vmlinux 0x586998e0 device_store_bool +EXPORT_SYMBOL_GPL vmlinux 0x586aec8f uart_handle_cts_change +EXPORT_SYMBOL_GPL vmlinux 0x589e4569 syscon_regmap_lookup_by_pdevname +EXPORT_SYMBOL_GPL vmlinux 0x58a6cf46 phy_destroy +EXPORT_SYMBOL_GPL vmlinux 0x58a94f2e event_triggers_post_call +EXPORT_SYMBOL_GPL vmlinux 0x58ab9811 acpi_subsys_complete +EXPORT_SYMBOL_GPL vmlinux 0x58d37e3d ata_sas_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x58dc9fcc led_trigger_show +EXPORT_SYMBOL_GPL vmlinux 0x58e14f15 HYPERVISOR_event_channel_op +EXPORT_SYMBOL_GPL vmlinux 0x58eece95 stmpe_block_write +EXPORT_SYMBOL_GPL vmlinux 0x58f065c4 ohci_resume +EXPORT_SYMBOL_GPL vmlinux 0x58f465b9 nf_queue_entry_get_refs +EXPORT_SYMBOL_GPL vmlinux 0x591c4839 device_wakeup_enable +EXPORT_SYMBOL_GPL vmlinux 0x595c7df2 sdio_enable_func +EXPORT_SYMBOL_GPL vmlinux 0x596ae4c6 ip6_flush_pending_frames +EXPORT_SYMBOL_GPL vmlinux 0x59721447 pci_find_next_ext_capability +EXPORT_SYMBOL_GPL vmlinux 0x5981d946 device_property_read_u8_array +EXPORT_SYMBOL_GPL vmlinux 0x5985f9a3 register_net_sysctl +EXPORT_SYMBOL_GPL vmlinux 0x5994cbf9 inet_csk_route_req +EXPORT_SYMBOL_GPL vmlinux 0x59b2adbf input_ff_effect_from_user +EXPORT_SYMBOL_GPL vmlinux 0x59c3209d devm_of_pwm_get +EXPORT_SYMBOL_GPL vmlinux 0x59de3b19 irq_gc_mask_set_bit +EXPORT_SYMBOL_GPL vmlinux 0x59e2743e call_rcu_bh +EXPORT_SYMBOL_GPL vmlinux 0x59eae699 ring_buffer_read_prepare +EXPORT_SYMBOL_GPL vmlinux 0x59f748f7 spi_new_device +EXPORT_SYMBOL_GPL vmlinux 0x59fd0114 arizona_request_irq +EXPORT_SYMBOL_GPL vmlinux 0x5a02a19e watchdog_register_device +EXPORT_SYMBOL_GPL vmlinux 0x5a2b1b67 gnttab_free_grant_reference +EXPORT_SYMBOL_GPL vmlinux 0x5a2cddfd blk_trace_startstop +EXPORT_SYMBOL_GPL vmlinux 0x5a31a58d aead_geniv_free +EXPORT_SYMBOL_GPL vmlinux 0x5a53f317 efivar_entry_set +EXPORT_SYMBOL_GPL vmlinux 0x5a713710 gpiochip_find +EXPORT_SYMBOL_GPL vmlinux 0x5a7bfe41 crypto_probing_notify +EXPORT_SYMBOL_GPL vmlinux 0x5a885a3a perf_trace_buf_prepare +EXPORT_SYMBOL_GPL vmlinux 0x5a88d976 blk_queue_bypass_start +EXPORT_SYMBOL_GPL vmlinux 0x5a8caa1b ablkcipher_walk_done +EXPORT_SYMBOL_GPL vmlinux 0x5a9fb02b tty_port_tty_hangup +EXPORT_SYMBOL_GPL vmlinux 0x5aa96cc3 of_overlay_create +EXPORT_SYMBOL_GPL vmlinux 0x5ab7047c bus_register +EXPORT_SYMBOL_GPL vmlinux 0x5ad1841f __mmu_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x5aee9e96 sysfs_unmerge_group +EXPORT_SYMBOL_GPL vmlinux 0x5aefbabc ata_bmdma_stop +EXPORT_SYMBOL_GPL vmlinux 0x5af03a28 gnttab_claim_grant_reference +EXPORT_SYMBOL_GPL vmlinux 0x5b06d0c9 power_supply_property_is_writeable +EXPORT_SYMBOL_GPL vmlinux 0x5b14b354 regulator_get_init_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x5b17f13d device_add +EXPORT_SYMBOL_GPL vmlinux 0x5b2d3deb scsi_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x5b2d5592 tty_prepare_flip_string +EXPORT_SYMBOL_GPL vmlinux 0x5b4f9628 spi_master_resume +EXPORT_SYMBOL_GPL vmlinux 0x5b64e3bf handle_mm_fault +EXPORT_SYMBOL_GPL vmlinux 0x5b6812eb of_reserved_mem_device_init +EXPORT_SYMBOL_GPL vmlinux 0x5b6d82d0 pci_try_reset_function +EXPORT_SYMBOL_GPL vmlinux 0x5b75f480 dma_buf_begin_cpu_access +EXPORT_SYMBOL_GPL vmlinux 0x5b7bf8c0 mpc8xxx_spi_rx_buf_u16 +EXPORT_SYMBOL_GPL vmlinux 0x5b9b02c2 dev_change_net_namespace +EXPORT_SYMBOL_GPL vmlinux 0x5bb1c10a irq_map_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x5bb972f9 crypto_init_spawn2 +EXPORT_SYMBOL_GPL vmlinux 0x5bcaf0c9 fb_deferred_io_cleanup +EXPORT_SYMBOL_GPL vmlinux 0x5bd0748f crypto_del_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x5bd2c2da wakeup_source_add +EXPORT_SYMBOL_GPL vmlinux 0x5bd38df0 use_mm +EXPORT_SYMBOL_GPL vmlinux 0x5bdbac4e rcu_unexpedite_gp +EXPORT_SYMBOL_GPL vmlinux 0x5bef66b1 tpm_do_selftest +EXPORT_SYMBOL_GPL vmlinux 0x5c5a1b16 tick_broadcast_control +EXPORT_SYMBOL_GPL vmlinux 0x5c5facfe dev_pm_qos_expose_flags +EXPORT_SYMBOL_GPL vmlinux 0x5c663bbe acpi_dev_runtime_suspend +EXPORT_SYMBOL_GPL vmlinux 0x5c66e90c efivar_run_worker +EXPORT_SYMBOL_GPL vmlinux 0x5c67dd23 gpiod_set_raw_value +EXPORT_SYMBOL_GPL vmlinux 0x5c6fe0d5 gnttab_unmap_refs_sync +EXPORT_SYMBOL_GPL vmlinux 0x5c781b60 kvm_is_visible_gfn +EXPORT_SYMBOL_GPL vmlinux 0x5c7fdf6d pci_cleanup_aer_uncorrect_error_status +EXPORT_SYMBOL_GPL vmlinux 0x5cabdced dev_pm_qos_remove_global_notifier +EXPORT_SYMBOL_GPL vmlinux 0x5cb29752 crypto_unregister_rng +EXPORT_SYMBOL_GPL vmlinux 0x5cc509a4 nsecs_to_jiffies +EXPORT_SYMBOL_GPL vmlinux 0x5cc9cf0e syscon_node_to_regmap +EXPORT_SYMBOL_GPL vmlinux 0x5cdaf880 pwm_request_from_chip +EXPORT_SYMBOL_GPL vmlinux 0x5cf43c51 rtc_class_close +EXPORT_SYMBOL_GPL vmlinux 0x5cf8a882 __tracepoint_block_rq_remap +EXPORT_SYMBOL_GPL vmlinux 0x5d071a07 gpiod_get_direction +EXPORT_SYMBOL_GPL vmlinux 0x5d0b3912 vring_new_virtqueue +EXPORT_SYMBOL_GPL vmlinux 0x5d12e48f input_event_to_user +EXPORT_SYMBOL_GPL vmlinux 0x5d366dec gnttab_cancel_free_callback +EXPORT_SYMBOL_GPL vmlinux 0x5d4c8b19 iommu_detach_device +EXPORT_SYMBOL_GPL vmlinux 0x5d6c40ad acpi_dma_simple_xlate +EXPORT_SYMBOL_GPL vmlinux 0x5d6e505d mddev_unlock +EXPORT_SYMBOL_GPL vmlinux 0x5d6e6f5a trace_event_reg +EXPORT_SYMBOL_GPL vmlinux 0x5d726a1c tpm_gen_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x5d8a7594 bpf_prog_get +EXPORT_SYMBOL_GPL vmlinux 0x5da3f6ff thermal_zone_of_sensor_unregister +EXPORT_SYMBOL_GPL vmlinux 0x5da67adc zs_compact +EXPORT_SYMBOL_GPL vmlinux 0x5dad6edb pinctrl_dev_get_devname +EXPORT_SYMBOL_GPL vmlinux 0x5db1c1d3 __tracepoint_block_split +EXPORT_SYMBOL_GPL vmlinux 0x5dcd7160 trace_seq_vprintf +EXPORT_SYMBOL_GPL vmlinux 0x5dcddf57 regmap_raw_write_async +EXPORT_SYMBOL_GPL vmlinux 0x5dee6255 pci_user_read_config_word +EXPORT_SYMBOL_GPL vmlinux 0x5defc50e ehci_resume +EXPORT_SYMBOL_GPL vmlinux 0x5df2132b wait_for_stable_page +EXPORT_SYMBOL_GPL vmlinux 0x5df8bd59 tun_get_socket +EXPORT_SYMBOL_GPL vmlinux 0x5dfaefad kobject_uevent +EXPORT_SYMBOL_GPL vmlinux 0x5e1cd5bc __clk_get_hw +EXPORT_SYMBOL_GPL vmlinux 0x5e253a27 ata_port_wait_eh +EXPORT_SYMBOL_GPL vmlinux 0x5e3af0b6 inet6_csk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x5e51cd74 swiotlb_nr_tbl +EXPORT_SYMBOL_GPL vmlinux 0x5e69472f ata_sff_dev_classify +EXPORT_SYMBOL_GPL vmlinux 0x5e86a761 component_master_add_child +EXPORT_SYMBOL_GPL vmlinux 0x5e91795e tty_port_register_device_attr +EXPORT_SYMBOL_GPL vmlinux 0x5e990a29 dma_buf_mmap +EXPORT_SYMBOL_GPL vmlinux 0x5ec04eeb debugfs_remove +EXPORT_SYMBOL_GPL vmlinux 0x5ee20ccb ata_dev_next +EXPORT_SYMBOL_GPL vmlinux 0x5efa61c9 synchronize_srcu_expedited +EXPORT_SYMBOL_GPL vmlinux 0x5f224acd locks_alloc_lock +EXPORT_SYMBOL_GPL vmlinux 0x5f226035 mod_delayed_work_on +EXPORT_SYMBOL_GPL vmlinux 0x5f27a6d1 wait_for_tpm_stat +EXPORT_SYMBOL_GPL vmlinux 0x5f30dc5e __rtnl_link_unregister +EXPORT_SYMBOL_GPL vmlinux 0x5f549977 simple_attr_write +EXPORT_SYMBOL_GPL vmlinux 0x5f782b7d extcon_dev_register +EXPORT_SYMBOL_GPL vmlinux 0x5f79a98b __tracepoint_napi_poll +EXPORT_SYMBOL_GPL vmlinux 0x5f7e578e iommu_domain_alloc +EXPORT_SYMBOL_GPL vmlinux 0x5f91402a fuse_request_alloc +EXPORT_SYMBOL_GPL vmlinux 0x5f9e8fd8 ata_host_start +EXPORT_SYMBOL_GPL vmlinux 0x5fc27be9 acpi_dev_irq_flags +EXPORT_SYMBOL_GPL vmlinux 0x6004ca8c lp8788_update_bits +EXPORT_SYMBOL_GPL vmlinux 0x600812b5 pm_runtime_barrier +EXPORT_SYMBOL_GPL vmlinux 0x60091316 clk_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x600eb7f8 blk_rq_err_bytes +EXPORT_SYMBOL_GPL vmlinux 0x60135a59 mpc8xxx_spi_rx_buf_u8 +EXPORT_SYMBOL_GPL vmlinux 0x601584df virtqueue_detach_unused_buf +EXPORT_SYMBOL_GPL vmlinux 0x602e7b1e elv_register +EXPORT_SYMBOL_GPL vmlinux 0x60442822 phys_to_mach +EXPORT_SYMBOL_GPL vmlinux 0x604da537 __gpiod_get_index +EXPORT_SYMBOL_GPL vmlinux 0x604fd59f pinctrl_dev_get_name +EXPORT_SYMBOL_GPL vmlinux 0x60506751 unmap_kernel_range_noflush +EXPORT_SYMBOL_GPL vmlinux 0x605d4d65 serial8250_clear_and_reinit_fifos +EXPORT_SYMBOL_GPL vmlinux 0x6074a3c2 xfrm_audit_state_replay +EXPORT_SYMBOL_GPL vmlinux 0x6080f8b3 wakeup_source_drop +EXPORT_SYMBOL_GPL vmlinux 0x609786e3 otg_ulpi_create +EXPORT_SYMBOL_GPL vmlinux 0x60a13e90 rcu_barrier +EXPORT_SYMBOL_GPL vmlinux 0x60a32ea9 pm_power_off +EXPORT_SYMBOL_GPL vmlinux 0x60a727d8 devfreq_event_reset_event +EXPORT_SYMBOL_GPL vmlinux 0x60bc1ec9 transport_class_register +EXPORT_SYMBOL_GPL vmlinux 0x60da53c6 dma_release_channel +EXPORT_SYMBOL_GPL vmlinux 0x61027118 ata_pci_device_suspend +EXPORT_SYMBOL_GPL vmlinux 0x61118c47 pci_bus_resource_n +EXPORT_SYMBOL_GPL vmlinux 0x613b8dd4 uart_handle_dcd_change +EXPORT_SYMBOL_GPL vmlinux 0x61576050 dev_pm_get_subsys_data +EXPORT_SYMBOL_GPL vmlinux 0x615f70c2 devm_regulator_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x615fb90e dummy_con +EXPORT_SYMBOL_GPL vmlinux 0x6174fcf9 acpi_subsys_prepare +EXPORT_SYMBOL_GPL vmlinux 0x6175edf8 sysfs_update_group +EXPORT_SYMBOL_GPL vmlinux 0x617d70c3 led_trigger_remove +EXPORT_SYMBOL_GPL vmlinux 0x61aff3ea gnttab_map_refs +EXPORT_SYMBOL_GPL vmlinux 0x61c61810 to_nvdimm +EXPORT_SYMBOL_GPL vmlinux 0x61cde409 acpi_dev_resource_memory +EXPORT_SYMBOL_GPL vmlinux 0x61fe8682 reset_control_get +EXPORT_SYMBOL_GPL vmlinux 0x62025b84 __clocksource_register_scale +EXPORT_SYMBOL_GPL vmlinux 0x622c7922 register_oom_notifier +EXPORT_SYMBOL_GPL vmlinux 0x623c2cd2 sdio_release_irq +EXPORT_SYMBOL_GPL vmlinux 0x625dfc05 ata_acpi_stm +EXPORT_SYMBOL_GPL vmlinux 0x6264de2d blk_rq_prep_clone +EXPORT_SYMBOL_GPL vmlinux 0x6295b99b regcache_sync +EXPORT_SYMBOL_GPL vmlinux 0x62cab683 gpiod_export +EXPORT_SYMBOL_GPL vmlinux 0x62d45046 pm_generic_restore +EXPORT_SYMBOL_GPL vmlinux 0x62df2515 gpiod_set_debounce +EXPORT_SYMBOL_GPL vmlinux 0x62ed8aae usb_submit_urb +EXPORT_SYMBOL_GPL vmlinux 0x62f06fae usb_find_interface +EXPORT_SYMBOL_GPL vmlinux 0x62f97395 xen_unmap_domain_mfn_range +EXPORT_SYMBOL_GPL vmlinux 0x63150e06 clk_get_parent +EXPORT_SYMBOL_GPL vmlinux 0x631e5ad2 invalidate_inode_pages2_range +EXPORT_SYMBOL_GPL vmlinux 0x6372989c fat_search_long +EXPORT_SYMBOL_GPL vmlinux 0x638de249 mpc8xxx_spi_tx_buf_u16 +EXPORT_SYMBOL_GPL vmlinux 0x6390de87 watchdog_init_timeout +EXPORT_SYMBOL_GPL vmlinux 0x6391d992 iommu_map +EXPORT_SYMBOL_GPL vmlinux 0x63948d8a efivars_unregister +EXPORT_SYMBOL_GPL vmlinux 0x63c7cf11 inet_putpeer +EXPORT_SYMBOL_GPL vmlinux 0x63c80dc8 irq_find_mapping +EXPORT_SYMBOL_GPL vmlinux 0x63e0c74b hrtimer_start_range_ns +EXPORT_SYMBOL_GPL vmlinux 0x63ef0482 cpu_device_create +EXPORT_SYMBOL_GPL vmlinux 0x63f38cb9 default_iommu_map_sg +EXPORT_SYMBOL_GPL vmlinux 0x6410e160 ktime_mono_to_any +EXPORT_SYMBOL_GPL vmlinux 0x64318593 acpi_dev_filter_resource_type +EXPORT_SYMBOL_GPL vmlinux 0x647537f3 pl320_ipc_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x6480dc5f pinctrl_put +EXPORT_SYMBOL_GPL vmlinux 0x6494ad2f perf_event_refresh +EXPORT_SYMBOL_GPL vmlinux 0x64a21dcd kobject_create_and_add +EXPORT_SYMBOL_GPL vmlinux 0x64b3390c cpufreq_cpu_get +EXPORT_SYMBOL_GPL vmlinux 0x64b876b6 vchan_init +EXPORT_SYMBOL_GPL vmlinux 0x64f6f5fc xenbus_alloc_evtchn +EXPORT_SYMBOL_GPL vmlinux 0x650428bf blkcg_activate_policy +EXPORT_SYMBOL_GPL vmlinux 0x65101e22 ata_pci_remove_one +EXPORT_SYMBOL_GPL vmlinux 0x6522d64b crypto_alloc_ablkcipher +EXPORT_SYMBOL_GPL vmlinux 0x655257f8 __pm_runtime_resume +EXPORT_SYMBOL_GPL vmlinux 0x655e3abb ata_dev_pair +EXPORT_SYMBOL_GPL vmlinux 0x658f5ec5 dev_forward_skb +EXPORT_SYMBOL_GPL vmlinux 0x65bbbc78 schedule_hrtimeout_range +EXPORT_SYMBOL_GPL vmlinux 0x65cb7092 devm_usb_get_phy_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0x65ccb6f0 call_netevent_notifiers +EXPORT_SYMBOL_GPL vmlinux 0x65f485d3 usb_hcd_unmap_urb_for_dma +EXPORT_SYMBOL_GPL vmlinux 0x660df5ed pci_hp_create_module_link +EXPORT_SYMBOL_GPL vmlinux 0x66123741 xenbus_unmap_ring_vfree +EXPORT_SYMBOL_GPL vmlinux 0x661601de sprint_symbol +EXPORT_SYMBOL_GPL vmlinux 0x6636c3c9 irq_set_vcpu_affinity +EXPORT_SYMBOL_GPL vmlinux 0x664d4c77 spi_bus_unlock +EXPORT_SYMBOL_GPL vmlinux 0x665fb110 crypto_lookup_aead +EXPORT_SYMBOL_GPL vmlinux 0x6674e760 tty_buffer_space_avail +EXPORT_SYMBOL_GPL vmlinux 0x667973ce md_run +EXPORT_SYMBOL_GPL vmlinux 0x668402aa crypto_put_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x669da1fd kvm_set_pfn_dirty +EXPORT_SYMBOL_GPL vmlinux 0x66ab55c2 btree_merge +EXPORT_SYMBOL_GPL vmlinux 0x66bbab1c of_get_display_timings +EXPORT_SYMBOL_GPL vmlinux 0x66c6b8a7 tcp_ca_get_name_by_key +EXPORT_SYMBOL_GPL vmlinux 0x66d5a216 bpf_prog_destroy +EXPORT_SYMBOL_GPL vmlinux 0x66d87d38 symbol_put_addr +EXPORT_SYMBOL_GPL vmlinux 0x66e350a2 replace_page_cache_page +EXPORT_SYMBOL_GPL vmlinux 0x66f952e0 fwnode_property_read_string +EXPORT_SYMBOL_GPL vmlinux 0x67093203 devres_release +EXPORT_SYMBOL_GPL vmlinux 0x670ed2d6 napi_hash_add +EXPORT_SYMBOL_GPL vmlinux 0x6739a503 balloon_set_new_target +EXPORT_SYMBOL_GPL vmlinux 0x673f479c dm_get_rq_mapinfo +EXPORT_SYMBOL_GPL vmlinux 0x674e13e1 public_key_destroy +EXPORT_SYMBOL_GPL vmlinux 0x67549e92 regulator_enable_regmap +EXPORT_SYMBOL_GPL vmlinux 0x6754ac18 clk_get_parent_by_index +EXPORT_SYMBOL_GPL vmlinux 0x677c0073 ata_host_alloc_pinfo +EXPORT_SYMBOL_GPL vmlinux 0x67955ce6 profile_hits +EXPORT_SYMBOL_GPL vmlinux 0x67aa3427 fsstack_copy_attr_all +EXPORT_SYMBOL_GPL vmlinux 0x67b04902 swiotlb_map_page +EXPORT_SYMBOL_GPL vmlinux 0x67b3e686 tps6586x_writes +EXPORT_SYMBOL_GPL vmlinux 0x67c6bd54 desc_to_gpio +EXPORT_SYMBOL_GPL vmlinux 0x67d8883f device_wakeup_disable +EXPORT_SYMBOL_GPL vmlinux 0x67e0eb31 devres_remove_group +EXPORT_SYMBOL_GPL vmlinux 0x67e611c4 ping_err +EXPORT_SYMBOL_GPL vmlinux 0x67f5ef65 ata_sff_postreset +EXPORT_SYMBOL_GPL vmlinux 0x6807448d devfreq_event_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0x68189ec5 pci_pasid_features +EXPORT_SYMBOL_GPL vmlinux 0x68230202 ata_bmdma_start +EXPORT_SYMBOL_GPL vmlinux 0x6846310f of_clk_parent_fill +EXPORT_SYMBOL_GPL vmlinux 0x68481fb2 blkg_prfill_stat +EXPORT_SYMBOL_GPL vmlinux 0x6869948a devm_clk_unregister +EXPORT_SYMBOL_GPL vmlinux 0x6878643a tps6586x_irq_get_virq +EXPORT_SYMBOL_GPL vmlinux 0x68b4d590 rtc_irq_unregister +EXPORT_SYMBOL_GPL vmlinux 0x68b9663f dma_wait_for_async_tx +EXPORT_SYMBOL_GPL vmlinux 0x68c20662 clk_register_mux +EXPORT_SYMBOL_GPL vmlinux 0x68fd59ff key_type_encrypted +EXPORT_SYMBOL_GPL vmlinux 0x691f770e cpufreq_frequency_table_target +EXPORT_SYMBOL_GPL vmlinux 0x6921aa34 compat_put_timeval +EXPORT_SYMBOL_GPL vmlinux 0x6923ce63 irq_work_sync +EXPORT_SYMBOL_GPL vmlinux 0x693d590d ata_pci_bmdma_init +EXPORT_SYMBOL_GPL vmlinux 0x69447467 ring_buffer_write +EXPORT_SYMBOL_GPL vmlinux 0x6964013a irq_setup_alt_chip +EXPORT_SYMBOL_GPL vmlinux 0x697c5d0d tracing_snapshot_alloc +EXPORT_SYMBOL_GPL vmlinux 0x698a899f ring_buffer_peek +EXPORT_SYMBOL_GPL vmlinux 0x69a1591c virtio_check_driver_offered_feature +EXPORT_SYMBOL_GPL vmlinux 0x69bdaed2 pci_enable_pcie_error_reporting +EXPORT_SYMBOL_GPL vmlinux 0x69ea168a efivar_entry_find +EXPORT_SYMBOL_GPL vmlinux 0x69eec669 devm_regulator_register +EXPORT_SYMBOL_GPL vmlinux 0x6a1733eb iommu_group_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x6a4cc84b pci_find_ext_capability +EXPORT_SYMBOL_GPL vmlinux 0x6a4f623b mmu_notifier_synchronize +EXPORT_SYMBOL_GPL vmlinux 0x6a5fb566 rcu_sched_force_quiescent_state +EXPORT_SYMBOL_GPL vmlinux 0x6a6cafd2 ring_buffer_read_page +EXPORT_SYMBOL_GPL vmlinux 0x6a8441be cpci_hp_start +EXPORT_SYMBOL_GPL vmlinux 0x6a8c7835 devm_clk_register +EXPORT_SYMBOL_GPL vmlinux 0x6ab589ff generic_fh_to_dentry +EXPORT_SYMBOL_GPL vmlinux 0x6aba7a6e kvm_write_guest_cached +EXPORT_SYMBOL_GPL vmlinux 0x6ac9649d ata_pci_sff_init_one +EXPORT_SYMBOL_GPL vmlinux 0x6acad21f acpi_get_cpuid +EXPORT_SYMBOL_GPL vmlinux 0x6b0dc565 xen_set_irq_priority +EXPORT_SYMBOL_GPL vmlinux 0x6b208201 find_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0x6b29a1fa ring_buffer_event_length +EXPORT_SYMBOL_GPL vmlinux 0x6b4f1c3c thermal_zone_device_update +EXPORT_SYMBOL_GPL vmlinux 0x6b5da6ea get_pid_task +EXPORT_SYMBOL_GPL vmlinux 0x6b5dcdfe device_dma_is_coherent +EXPORT_SYMBOL_GPL vmlinux 0x6b72cd87 skb_zerocopy_headlen +EXPORT_SYMBOL_GPL vmlinux 0x6b7c4a4f inode_sb_list_add +EXPORT_SYMBOL_GPL vmlinux 0x6b81c38b power_supply_unreg_notifier +EXPORT_SYMBOL_GPL vmlinux 0x6bc8c1a1 gpiod_count +EXPORT_SYMBOL_GPL vmlinux 0x6bca0bf6 cpuidle_get_cpu_driver +EXPORT_SYMBOL_GPL vmlinux 0x6bcdf853 ata_link_next +EXPORT_SYMBOL_GPL vmlinux 0x6bd9ba2d of_thermal_get_trip_points +EXPORT_SYMBOL_GPL vmlinux 0x6bf1b90d dmi_memdev_name +EXPORT_SYMBOL_GPL vmlinux 0x6c07d933 add_uevent_var +EXPORT_SYMBOL_GPL vmlinux 0x6c185f31 devm_regulator_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x6c18f669 irq_set_chip_and_handler_name +EXPORT_SYMBOL_GPL vmlinux 0x6c389761 acpi_bus_get_private_data +EXPORT_SYMBOL_GPL vmlinux 0x6c4b6684 reset_control_assert +EXPORT_SYMBOL_GPL vmlinux 0x6c5ad5d1 i2c_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0x6c655913 register_acpi_hed_notifier +EXPORT_SYMBOL_GPL vmlinux 0x6c6afa18 xfrm_output +EXPORT_SYMBOL_GPL vmlinux 0x6c77dae2 device_create_vargs +EXPORT_SYMBOL_GPL vmlinux 0x6c79cf6d max8997_update_reg +EXPORT_SYMBOL_GPL vmlinux 0x6ca4bf88 async_synchronize_full_domain +EXPORT_SYMBOL_GPL vmlinux 0x6cc724c7 bus_find_device_by_name +EXPORT_SYMBOL_GPL vmlinux 0x6ccf67e4 nd_cmd_out_size +EXPORT_SYMBOL_GPL vmlinux 0x6cd21997 ata_tf_to_fis +EXPORT_SYMBOL_GPL vmlinux 0x6d201c40 cpufreq_driver_target +EXPORT_SYMBOL_GPL vmlinux 0x6d2fc5a6 net_namespace_list +EXPORT_SYMBOL_GPL vmlinux 0x6d3060c8 regmap_init_spi +EXPORT_SYMBOL_GPL vmlinux 0x6d48e678 swiotlb_tbl_map_single +EXPORT_SYMBOL_GPL vmlinux 0x6d572124 ata_port_desc +EXPORT_SYMBOL_GPL vmlinux 0x6d81366a rhashtable_walk_init +EXPORT_SYMBOL_GPL vmlinux 0x6d9248fc usb_free_coherent +EXPORT_SYMBOL_GPL vmlinux 0x6d928f5d spi_bus_lock +EXPORT_SYMBOL_GPL vmlinux 0x6d9c11bd phy_pm_runtime_put_sync +EXPORT_SYMBOL_GPL vmlinux 0x6db746c0 usb_hcd_map_urb_for_dma +EXPORT_SYMBOL_GPL vmlinux 0x6dbddb28 crypto_alloc_aead +EXPORT_SYMBOL_GPL vmlinux 0x6de1d443 led_trigger_rename_static +EXPORT_SYMBOL_GPL vmlinux 0x6e04a077 usb_bind_phy +EXPORT_SYMBOL_GPL vmlinux 0x6e1e7f32 ehci_init_driver +EXPORT_SYMBOL_GPL vmlinux 0x6e2b36f4 attribute_container_unregister +EXPORT_SYMBOL_GPL vmlinux 0x6e3c78c5 ata_ehi_clear_desc +EXPORT_SYMBOL_GPL vmlinux 0x6e4f60ad crypto_aead_reqsize +EXPORT_SYMBOL_GPL vmlinux 0x6e4fd72e srcu_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x6e521b89 nvdimm_pmem_region_create +EXPORT_SYMBOL_GPL vmlinux 0x6e58ddf0 gnttab_end_foreign_transfer_ref +EXPORT_SYMBOL_GPL vmlinux 0x6e7943ec iommu_group_id +EXPORT_SYMBOL_GPL vmlinux 0x6e89a560 regmap_irq_chip_get_base +EXPORT_SYMBOL_GPL vmlinux 0x6eae8480 usb_bus_list_lock +EXPORT_SYMBOL_GPL vmlinux 0x6ec620c2 skcipher_geniv_free +EXPORT_SYMBOL_GPL vmlinux 0x6ecf603f serial8250_tx_chars +EXPORT_SYMBOL_GPL vmlinux 0x6ed7dcae ndo_dflt_bridge_getlink +EXPORT_SYMBOL_GPL vmlinux 0x6eddca8c ehci_reset +EXPORT_SYMBOL_GPL vmlinux 0x6f1ee69e kgdb_unregister_io_module +EXPORT_SYMBOL_GPL vmlinux 0x6f36f606 __wake_up_locked_key +EXPORT_SYMBOL_GPL vmlinux 0x6f3bd0b6 crypto_mod_get +EXPORT_SYMBOL_GPL vmlinux 0x6f402ba6 acpi_dev_resource_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x6f48c944 cpufreq_generic_init +EXPORT_SYMBOL_GPL vmlinux 0x6f4cf632 platform_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x6f5ba9ca devm_power_supply_register +EXPORT_SYMBOL_GPL vmlinux 0x6f69200f ata_sas_port_destroy +EXPORT_SYMBOL_GPL vmlinux 0x6f7b270b xenbus_dev_error +EXPORT_SYMBOL_GPL vmlinux 0x6f7dac4f fuse_dev_alloc +EXPORT_SYMBOL_GPL vmlinux 0x6f81ccc6 wm8400_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x6f827eca nd_blk_region_to_dimm +EXPORT_SYMBOL_GPL vmlinux 0x6f8f9a21 crypto_attr_alg2 +EXPORT_SYMBOL_GPL vmlinux 0x6faaab57 i2c_lock_adapter +EXPORT_SYMBOL_GPL vmlinux 0x6face468 inet6_csk_reqsk_queue_hash_add +EXPORT_SYMBOL_GPL vmlinux 0x6fcface5 of_regulator_match +EXPORT_SYMBOL_GPL vmlinux 0x6fe3d8cf ktime_add_safe +EXPORT_SYMBOL_GPL vmlinux 0x6ff607b6 crypto_get_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x7023f9b7 pci_load_saved_state +EXPORT_SYMBOL_GPL vmlinux 0x70307129 setup_irq +EXPORT_SYMBOL_GPL vmlinux 0x705412ad regulator_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x7056b6f2 __clk_get_name +EXPORT_SYMBOL_GPL vmlinux 0x7064da8b btree_insert +EXPORT_SYMBOL_GPL vmlinux 0x707ff1bb ata_xfer_mask2mode +EXPORT_SYMBOL_GPL vmlinux 0x708bc6ef regulator_bulk_get +EXPORT_SYMBOL_GPL vmlinux 0x70a4b2af class_create_file_ns +EXPORT_SYMBOL_GPL vmlinux 0x70a90b23 tty_port_tty_wakeup +EXPORT_SYMBOL_GPL vmlinux 0x70aa8562 virtio_break_device +EXPORT_SYMBOL_GPL vmlinux 0x70ab2ae6 pinctrl_utils_dt_free_map +EXPORT_SYMBOL_GPL vmlinux 0x70b534ae pci_try_reset_slot +EXPORT_SYMBOL_GPL vmlinux 0x70ca753b efivar_entry_get +EXPORT_SYMBOL_GPL vmlinux 0x70cf032f usb_hcd_irq +EXPORT_SYMBOL_GPL vmlinux 0x70d18b77 perf_pmu_migrate_context +EXPORT_SYMBOL_GPL vmlinux 0x70f0cc26 inet_csk_route_child_sock +EXPORT_SYMBOL_GPL vmlinux 0x70fb2629 fat_get_dotdot_entry +EXPORT_SYMBOL_GPL vmlinux 0x710665ca amba_apb_device_add_res +EXPORT_SYMBOL_GPL vmlinux 0x710c73b6 crypto_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x713f6e1f of_clk_src_simple_get +EXPORT_SYMBOL_GPL vmlinux 0x715245c1 crypto_lookup_template +EXPORT_SYMBOL_GPL vmlinux 0x7157c142 dev_pm_set_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0x716265c7 debugfs_initialized +EXPORT_SYMBOL_GPL vmlinux 0x719ac973 dm_send_uevents +EXPORT_SYMBOL_GPL vmlinux 0x719e17ff clk_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0x71b945e1 fuse_put_request +EXPORT_SYMBOL_GPL vmlinux 0x71bca239 pinctrl_utils_add_map_mux +EXPORT_SYMBOL_GPL vmlinux 0x71d25fe1 irq_create_direct_mapping +EXPORT_SYMBOL_GPL vmlinux 0x71dbaf6c ata_host_register +EXPORT_SYMBOL_GPL vmlinux 0x71dc9998 crypto_il_tab +EXPORT_SYMBOL_GPL vmlinux 0x71f5b26f swiotlb_tbl_sync_single +EXPORT_SYMBOL_GPL vmlinux 0x7207360b mbox_chan_txdone +EXPORT_SYMBOL_GPL vmlinux 0x72078dbb nvdimm_name +EXPORT_SYMBOL_GPL vmlinux 0x720ee4bb ulpi_viewport_access_ops +EXPORT_SYMBOL_GPL vmlinux 0x721da48c regmap_irq_get_domain +EXPORT_SYMBOL_GPL vmlinux 0x72214098 usb_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x7233fa88 inet_csk_clone_lock +EXPORT_SYMBOL_GPL vmlinux 0x724a3d7f kvm_irq_has_notifier +EXPORT_SYMBOL_GPL vmlinux 0x7257ba54 tty_get_pgrp +EXPORT_SYMBOL_GPL vmlinux 0x726d030c ohci_hub_status_data +EXPORT_SYMBOL_GPL vmlinux 0x72741f25 trace_vbprintk +EXPORT_SYMBOL_GPL vmlinux 0x7278d328 all_vm_events +EXPORT_SYMBOL_GPL vmlinux 0x72910c4e pci_generic_config_write +EXPORT_SYMBOL_GPL vmlinux 0x72cb9655 nl_table +EXPORT_SYMBOL_GPL vmlinux 0x72e2ee3c __class_create +EXPORT_SYMBOL_GPL vmlinux 0x72eee49a usb_reset_configuration +EXPORT_SYMBOL_GPL vmlinux 0x72f229cb extcon_dev_free +EXPORT_SYMBOL_GPL vmlinux 0x72fdebef gpiochip_request_own_desc +EXPORT_SYMBOL_GPL vmlinux 0x73013896 xenbus_printf +EXPORT_SYMBOL_GPL vmlinux 0x732e3333 x509_cert_parse +EXPORT_SYMBOL_GPL vmlinux 0x73510609 fl6_update_dst +EXPORT_SYMBOL_GPL vmlinux 0x736e218f virtqueue_kick +EXPORT_SYMBOL_GPL vmlinux 0x738e1063 pci_reset_bus +EXPORT_SYMBOL_GPL vmlinux 0x73a48b4a ata_sff_std_ports +EXPORT_SYMBOL_GPL vmlinux 0x73abe92c pwm_get +EXPORT_SYMBOL_GPL vmlinux 0x73c2554f __iowrite64_copy +EXPORT_SYMBOL_GPL vmlinux 0x73c832f2 ata_dev_classify +EXPORT_SYMBOL_GPL vmlinux 0x73d69364 ring_buffer_change_overwrite +EXPORT_SYMBOL_GPL vmlinux 0x73eafce0 xen_swiotlb_free_coherent +EXPORT_SYMBOL_GPL vmlinux 0x7409b99b tpm_get_timeouts +EXPORT_SYMBOL_GPL vmlinux 0x741770a5 sync_page_io +EXPORT_SYMBOL_GPL vmlinux 0x742dfecf __pm_stay_awake +EXPORT_SYMBOL_GPL vmlinux 0x743a165e ata_pack_xfermask +EXPORT_SYMBOL_GPL vmlinux 0x744b86d5 crypto_aead_setauthsize +EXPORT_SYMBOL_GPL vmlinux 0x7464ea38 dev_pm_qos_add_global_notifier +EXPORT_SYMBOL_GPL vmlinux 0x74820792 gpiod_unexport +EXPORT_SYMBOL_GPL vmlinux 0x7484680f xenbus_watch_path +EXPORT_SYMBOL_GPL vmlinux 0x748606ed nvdimm_bus_attribute_group +EXPORT_SYMBOL_GPL vmlinux 0x74870b6b regulator_bulk_disable +EXPORT_SYMBOL_GPL vmlinux 0x748c3712 pci_disable_pasid +EXPORT_SYMBOL_GPL vmlinux 0x748d801a pcap_adc_sync +EXPORT_SYMBOL_GPL vmlinux 0x749ab440 phy_create +EXPORT_SYMBOL_GPL vmlinux 0x74b5ea68 lcm_not_zero +EXPORT_SYMBOL_GPL vmlinux 0x74baf17a tracing_is_on +EXPORT_SYMBOL_GPL vmlinux 0x74bb4d83 of_get_nand_ecc_step_size +EXPORT_SYMBOL_GPL vmlinux 0x74cfbb23 ping_get_port +EXPORT_SYMBOL_GPL vmlinux 0x74dee1f4 led_trigger_register +EXPORT_SYMBOL_GPL vmlinux 0x74f62588 debugfs_create_x8 +EXPORT_SYMBOL_GPL vmlinux 0x750131c4 usb_reset_device +EXPORT_SYMBOL_GPL vmlinux 0x75133f6e visitor128 +EXPORT_SYMBOL_GPL vmlinux 0x751f3ee6 handle_simple_irq +EXPORT_SYMBOL_GPL vmlinux 0x7522f3ba irq_modify_status +EXPORT_SYMBOL_GPL vmlinux 0x756e0a99 flush_kthread_work +EXPORT_SYMBOL_GPL vmlinux 0x757b49d2 kmsg_dump_get_line +EXPORT_SYMBOL_GPL vmlinux 0x758a782e blk_fill_rwbs +EXPORT_SYMBOL_GPL vmlinux 0x758f8dca acpi_create_platform_device +EXPORT_SYMBOL_GPL vmlinux 0x7598d150 devfreq_event_add_edev +EXPORT_SYMBOL_GPL vmlinux 0x75b582a0 rdev_get_dev +EXPORT_SYMBOL_GPL vmlinux 0x75c110f6 blk_add_driver_data +EXPORT_SYMBOL_GPL vmlinux 0x7640766c __efivar_entry_iter +EXPORT_SYMBOL_GPL vmlinux 0x764b818a of_mpc8xxx_spi_probe +EXPORT_SYMBOL_GPL vmlinux 0x76562223 tps6586x_get_version +EXPORT_SYMBOL_GPL vmlinux 0x7681946c unregister_pm_notifier +EXPORT_SYMBOL_GPL vmlinux 0x7681c934 skb_splice_bits +EXPORT_SYMBOL_GPL vmlinux 0x7689a754 relay_flush +EXPORT_SYMBOL_GPL vmlinux 0x769e5a54 usb_get_urb +EXPORT_SYMBOL_GPL vmlinux 0x76a3987d bpf_prog_create +EXPORT_SYMBOL_GPL vmlinux 0x76c76949 xenbus_dev_groups +EXPORT_SYMBOL_GPL vmlinux 0x76d9b876 clk_set_rate +EXPORT_SYMBOL_GPL vmlinux 0x76f03ff0 power_supply_register_no_ws +EXPORT_SYMBOL_GPL vmlinux 0x76fdea02 usb_string +EXPORT_SYMBOL_GPL vmlinux 0x7712771a unbind_from_irqhandler +EXPORT_SYMBOL_GPL vmlinux 0x7729cbdd task_handoff_register +EXPORT_SYMBOL_GPL vmlinux 0x773a25a2 find_symbol +EXPORT_SYMBOL_GPL vmlinux 0x77473e0f sdio_memcpy_toio +EXPORT_SYMBOL_GPL vmlinux 0x7754bc11 dm_hold +EXPORT_SYMBOL_GPL vmlinux 0x7757b51a clk_unregister +EXPORT_SYMBOL_GPL vmlinux 0x77658312 __dma_request_channel +EXPORT_SYMBOL_GPL vmlinux 0x7767f0b1 ata_host_activate +EXPORT_SYMBOL_GPL vmlinux 0x77cecf10 clk_register_gpio_gate +EXPORT_SYMBOL_GPL vmlinux 0x77d8558e virtio_device_freeze +EXPORT_SYMBOL_GPL vmlinux 0x77ddff56 device_property_read_u64_array +EXPORT_SYMBOL_GPL vmlinux 0x77f666de tracepoint_probe_register +EXPORT_SYMBOL_GPL vmlinux 0x780ae912 acpi_dev_get_property_reference +EXPORT_SYMBOL_GPL vmlinux 0x78113160 cpufreq_cooling_register +EXPORT_SYMBOL_GPL vmlinux 0x781fb145 usb_wakeup_notification +EXPORT_SYMBOL_GPL vmlinux 0x782b7fa1 shmem_read_mapping_page_gfp +EXPORT_SYMBOL_GPL vmlinux 0x7832838a dev_pm_put_subsys_data +EXPORT_SYMBOL_GPL vmlinux 0x78368c02 dev_pm_opp_get_freq +EXPORT_SYMBOL_GPL vmlinux 0x7845fea7 tty_buffer_unlock_exclusive +EXPORT_SYMBOL_GPL vmlinux 0x786a2834 i2c_generic_scl_recovery +EXPORT_SYMBOL_GPL vmlinux 0x787c882b lzo1x_1_compress +EXPORT_SYMBOL_GPL vmlinux 0x78958d20 extcon_update_state +EXPORT_SYMBOL_GPL vmlinux 0x7897b52a kernfs_put +EXPORT_SYMBOL_GPL vmlinux 0x7899104f security_inode_mkdir +EXPORT_SYMBOL_GPL vmlinux 0x78a546fe dpm_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0x78a7d32d pci_hp_change_slot_info +EXPORT_SYMBOL_GPL vmlinux 0x78ae8175 smp_call_function_single_async +EXPORT_SYMBOL_GPL vmlinux 0x78b8873f of_irq_parse_pci +EXPORT_SYMBOL_GPL vmlinux 0x78d93c3c __bpf_prog_free +EXPORT_SYMBOL_GPL vmlinux 0x7917d238 regulator_map_voltage_ascend +EXPORT_SYMBOL_GPL vmlinux 0x792651ec mmc_switch +EXPORT_SYMBOL_GPL vmlinux 0x7938e894 relay_buf_full +EXPORT_SYMBOL_GPL vmlinux 0x7944e0fc tracing_off +EXPORT_SYMBOL_GPL vmlinux 0x794b7271 orderly_reboot +EXPORT_SYMBOL_GPL vmlinux 0x79644310 iptunnel_handle_offloads +EXPORT_SYMBOL_GPL vmlinux 0x79654c5e mbox_request_channel +EXPORT_SYMBOL_GPL vmlinux 0x796c2d48 dm_get_md +EXPORT_SYMBOL_GPL vmlinux 0x79704252 nf_register_afinfo +EXPORT_SYMBOL_GPL vmlinux 0x7982c2c4 pci_common_swizzle +EXPORT_SYMBOL_GPL vmlinux 0x7987f9e6 regmap_field_update_bits +EXPORT_SYMBOL_GPL vmlinux 0x79defbe1 kthread_should_park +EXPORT_SYMBOL_GPL vmlinux 0x79df1f75 devm_kasprintf +EXPORT_SYMBOL_GPL vmlinux 0x79e16654 ata_bmdma32_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x79f41d5b try_get_online_cpus +EXPORT_SYMBOL_GPL vmlinux 0x79f566ed iommu_domain_set_attr +EXPORT_SYMBOL_GPL vmlinux 0x79fa68ba transport_destroy_device +EXPORT_SYMBOL_GPL vmlinux 0x7a2d1206 vchan_tx_submit +EXPORT_SYMBOL_GPL vmlinux 0x7a2e4b44 ezx_pcap_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x7a319404 clk_register_fixed_rate +EXPORT_SYMBOL_GPL vmlinux 0x7a35e79e tty_register_device_attr +EXPORT_SYMBOL_GPL vmlinux 0x7a3646bb sg_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x7a562e70 get_kernel_page +EXPORT_SYMBOL_GPL vmlinux 0x7a71d3ff devm_pinctrl_put +EXPORT_SYMBOL_GPL vmlinux 0x7a944007 rcu_idle_enter +EXPORT_SYMBOL_GPL vmlinux 0x7aa64803 kvm_release_pfn_clean +EXPORT_SYMBOL_GPL vmlinux 0x7ac8e5b0 acpi_gsi_to_irq +EXPORT_SYMBOL_GPL vmlinux 0x7b0f1ab3 ring_buffer_free_read_page +EXPORT_SYMBOL_GPL vmlinux 0x7b1d544d edac_handler_set +EXPORT_SYMBOL_GPL vmlinux 0x7b2163bd HYPERVISOR_tmem_op +EXPORT_SYMBOL_GPL vmlinux 0x7b5079e0 securityfs_create_file +EXPORT_SYMBOL_GPL vmlinux 0x7b6f20c8 pm_runtime_enable +EXPORT_SYMBOL_GPL vmlinux 0x7b70ed5c pm_qos_request_active +EXPORT_SYMBOL_GPL vmlinux 0x7b83533a device_destroy +EXPORT_SYMBOL_GPL vmlinux 0x7b8b9f73 mnt_want_write_file +EXPORT_SYMBOL_GPL vmlinux 0x7b90d1a9 bind_virq_to_irqhandler +EXPORT_SYMBOL_GPL vmlinux 0x7ba3e94c extcon_set_cable_state_ +EXPORT_SYMBOL_GPL vmlinux 0x7ba7316d kernfs_find_and_get_ns +EXPORT_SYMBOL_GPL vmlinux 0x7ba80419 mddev_resume +EXPORT_SYMBOL_GPL vmlinux 0x7bb6f6d8 cpufreq_cpu_put +EXPORT_SYMBOL_GPL vmlinux 0x7bc9707f reservation_object_get_fences_rcu +EXPORT_SYMBOL_GPL vmlinux 0x7c01977c inet_ctl_sock_create +EXPORT_SYMBOL_GPL vmlinux 0x7c01d034 xen_swiotlb_map_page +EXPORT_SYMBOL_GPL vmlinux 0x7c0c21e0 of_pci_range_parser_one +EXPORT_SYMBOL_GPL vmlinux 0x7c147be2 __atomic_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x7c2a7df4 regmap_update_bits_async +EXPORT_SYMBOL_GPL vmlinux 0x7c3013b0 led_sysfs_enable +EXPORT_SYMBOL_GPL vmlinux 0x7c346357 pkey_algo +EXPORT_SYMBOL_GPL vmlinux 0x7c6a2312 cpufreq_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x7c9a7371 clk_prepare +EXPORT_SYMBOL_GPL vmlinux 0x7c9e8f77 power_supply_class +EXPORT_SYMBOL_GPL vmlinux 0x7c9f3e69 __tracepoint_add_device_to_group +EXPORT_SYMBOL_GPL vmlinux 0x7c9f796d __sock_recv_timestamp +EXPORT_SYMBOL_GPL vmlinux 0x7cd6f042 cpufreq_get_current_driver +EXPORT_SYMBOL_GPL vmlinux 0x7cd8c6e5 trace_seq_putmem_hex +EXPORT_SYMBOL_GPL vmlinux 0x7cdefd02 blkcipher_walk_phys +EXPORT_SYMBOL_GPL vmlinux 0x7ceaf0d5 generic_handle_irq +EXPORT_SYMBOL_GPL vmlinux 0x7d00c65b nd_synchronize +EXPORT_SYMBOL_GPL vmlinux 0x7d1846f0 __sock_recv_ts_and_drops +EXPORT_SYMBOL_GPL vmlinux 0x7d31b57e dev_pm_opp_get_opp_count +EXPORT_SYMBOL_GPL vmlinux 0x7d59dd46 pm_wq +EXPORT_SYMBOL_GPL vmlinux 0x7d64dd80 regulator_list_voltage_linear +EXPORT_SYMBOL_GPL vmlinux 0x7d6b888c kvm_put_kvm +EXPORT_SYMBOL_GPL vmlinux 0x7d955f59 blocking_notifier_chain_cond_register +EXPORT_SYMBOL_GPL vmlinux 0x7daa63a0 md_find_rdev_nr_rcu +EXPORT_SYMBOL_GPL vmlinux 0x7dab26b6 wm831x_isinkv_values +EXPORT_SYMBOL_GPL vmlinux 0x7db859f4 kallsyms_on_each_symbol +EXPORT_SYMBOL_GPL vmlinux 0x7dca0518 HYPERVISOR_multicall +EXPORT_SYMBOL_GPL vmlinux 0x7dd15cf4 blkdev_read_iter +EXPORT_SYMBOL_GPL vmlinux 0x7dd2deac screen_glyph +EXPORT_SYMBOL_GPL vmlinux 0x7dda30af unregister_tracepoint_module_notifier +EXPORT_SYMBOL_GPL vmlinux 0x7de65a03 acpi_lpat_free_conversion_table +EXPORT_SYMBOL_GPL vmlinux 0x7dfd07a5 ata_host_alloc +EXPORT_SYMBOL_GPL vmlinux 0x7e23a174 usb_hcd_platform_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x7e261d01 regulator_get +EXPORT_SYMBOL_GPL vmlinux 0x7e45d473 dma_buf_kmap_atomic +EXPORT_SYMBOL_GPL vmlinux 0x7e477198 dma_get_slave_caps +EXPORT_SYMBOL_GPL vmlinux 0x7e596faf scsi_autopm_put_device +EXPORT_SYMBOL_GPL vmlinux 0x7e5974cd crypto_unregister_shashes +EXPORT_SYMBOL_GPL vmlinux 0x7e64181d usb_calc_bus_time +EXPORT_SYMBOL_GPL vmlinux 0x7e6e530d led_trigger_store +EXPORT_SYMBOL_GPL vmlinux 0x7e8015f8 sysfs_add_file_to_group +EXPORT_SYMBOL_GPL vmlinux 0x7e8b27f7 gfn_to_pfn +EXPORT_SYMBOL_GPL vmlinux 0x7e90f49b rtc_device_register +EXPORT_SYMBOL_GPL vmlinux 0x7e97eea6 stmpe_enable +EXPORT_SYMBOL_GPL vmlinux 0x7ea1a2bc probe_kernel_write +EXPORT_SYMBOL_GPL vmlinux 0x7ee326f7 devm_regulator_get +EXPORT_SYMBOL_GPL vmlinux 0x7ee87b84 debugfs_create_size_t +EXPORT_SYMBOL_GPL vmlinux 0x7f01fa4f xenbus_dev_suspend +EXPORT_SYMBOL_GPL vmlinux 0x7f13d491 pm_qos_remove_request +EXPORT_SYMBOL_GPL vmlinux 0x7f9baadb virtqueue_poll +EXPORT_SYMBOL_GPL vmlinux 0x7fbce5bb wm8400_block_read +EXPORT_SYMBOL_GPL vmlinux 0x7fd2aaba powercap_register_control_type +EXPORT_SYMBOL_GPL vmlinux 0x7fd38778 armpmu_get_max_events +EXPORT_SYMBOL_GPL vmlinux 0x7fd4340f pinctrl_add_gpio_ranges +EXPORT_SYMBOL_GPL vmlinux 0x80029379 max8997_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0x8017ae4f skcipher_geniv_alloc +EXPORT_SYMBOL_GPL vmlinux 0x8020b3ea debugfs_create_x64 +EXPORT_SYMBOL_GPL vmlinux 0x80468528 kvm_read_guest_atomic +EXPORT_SYMBOL_GPL vmlinux 0x804c4a5b devm_pwm_put +EXPORT_SYMBOL_GPL vmlinux 0x805ba36a usb_set_interface +EXPORT_SYMBOL_GPL vmlinux 0x8065a4fc mmu_notifier_call_srcu +EXPORT_SYMBOL_GPL vmlinux 0x8069d1ac sysfs_remove_file_ns +EXPORT_SYMBOL_GPL vmlinux 0x80757c00 dev_pm_qos_update_request +EXPORT_SYMBOL_GPL vmlinux 0x8076c910 scsi_target_unblock +EXPORT_SYMBOL_GPL vmlinux 0x8083f00b usb_unlocked_disable_lpm +EXPORT_SYMBOL_GPL vmlinux 0x808ec1a3 crypto_alg_tested +EXPORT_SYMBOL_GPL vmlinux 0x8099254f phy_remove_lookup +EXPORT_SYMBOL_GPL vmlinux 0x809b3eac debugfs_create_file_size +EXPORT_SYMBOL_GPL vmlinux 0x80a3295b inet_csk_search_req +EXPORT_SYMBOL_GPL vmlinux 0x80ac684b reservation_object_test_signaled_rcu +EXPORT_SYMBOL_GPL vmlinux 0x80acc2a1 br_fdb_test_addr_hook +EXPORT_SYMBOL_GPL vmlinux 0x80c18fbe crypto_hash_walk_first +EXPORT_SYMBOL_GPL vmlinux 0x80c68137 nf_log_buf_close +EXPORT_SYMBOL_GPL vmlinux 0x80d3927f __tracepoint_block_unplug +EXPORT_SYMBOL_GPL vmlinux 0x80d5e57a mpi_free +EXPORT_SYMBOL_GPL vmlinux 0x80f3268f __trace_printk +EXPORT_SYMBOL_GPL vmlinux 0x80f6d1cd queue_kthread_work +EXPORT_SYMBOL_GPL vmlinux 0x8114467b cn_netlink_send_mult +EXPORT_SYMBOL_GPL vmlinux 0x811560b4 perf_event_release_kernel +EXPORT_SYMBOL_GPL vmlinux 0x811dc334 usb_unregister_notify +EXPORT_SYMBOL_GPL vmlinux 0x812c970f single_open_net +EXPORT_SYMBOL_GPL vmlinux 0x8149ea54 ata_timing_find_mode +EXPORT_SYMBOL_GPL vmlinux 0x8150ede1 pm_relax +EXPORT_SYMBOL_GPL vmlinux 0x815588a6 clk_enable +EXPORT_SYMBOL_GPL vmlinux 0x81a284a9 ata_sff_qc_issue +EXPORT_SYMBOL_GPL vmlinux 0x81c4a51b out_of_line_wait_on_bit_timeout +EXPORT_SYMBOL_GPL vmlinux 0x81cb306f power_supply_unregister +EXPORT_SYMBOL_GPL vmlinux 0x81d20c88 of_get_nand_ecc_mode +EXPORT_SYMBOL_GPL vmlinux 0x81e80180 led_trigger_unregister_simple +EXPORT_SYMBOL_GPL vmlinux 0x8223bcba __tracepoint_xhci_dbg_quirks +EXPORT_SYMBOL_GPL vmlinux 0x8231ad51 dev_pm_qos_add_notifier +EXPORT_SYMBOL_GPL vmlinux 0x826f6393 skb_tstamp_tx +EXPORT_SYMBOL_GPL vmlinux 0x827c6af1 crypto_ablkcipher_type +EXPORT_SYMBOL_GPL vmlinux 0x828184c0 pinctrl_pm_select_sleep_state +EXPORT_SYMBOL_GPL vmlinux 0x82905241 hvc_instantiate +EXPORT_SYMBOL_GPL vmlinux 0x82ad6a7a blocking_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x82cc5079 dax_pfn_mkwrite +EXPORT_SYMBOL_GPL vmlinux 0x82d79b51 sysctl_vfs_cache_pressure +EXPORT_SYMBOL_GPL vmlinux 0x830119a8 subsys_interface_unregister +EXPORT_SYMBOL_GPL vmlinux 0x830ae977 of_display_timings_exist +EXPORT_SYMBOL_GPL vmlinux 0x830df1f1 pm_generic_freeze_noirq +EXPORT_SYMBOL_GPL vmlinux 0x834616bb sdev_evt_alloc +EXPORT_SYMBOL_GPL vmlinux 0x836475a9 put_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0x8371fbd7 crypto_aes_set_key +EXPORT_SYMBOL_GPL vmlinux 0x838b13e7 ring_buffer_free +EXPORT_SYMBOL_GPL vmlinux 0x8394eed2 i2c_adapter_type +EXPORT_SYMBOL_GPL vmlinux 0x83955b82 pci_probe_reset_slot +EXPORT_SYMBOL_GPL vmlinux 0x83b8ef39 of_pwm_xlate_with_flags +EXPORT_SYMBOL_GPL vmlinux 0x83d0c21b devm_phy_put +EXPORT_SYMBOL_GPL vmlinux 0x83f152e6 ata_sff_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x83fa054e system_trusted_keyring +EXPORT_SYMBOL_GPL vmlinux 0x840a6524 devm_usb_put_phy +EXPORT_SYMBOL_GPL vmlinux 0x841246dd iommu_detach_group +EXPORT_SYMBOL_GPL vmlinux 0x843d70ef acpi_is_root_bridge +EXPORT_SYMBOL_GPL vmlinux 0x84725fb7 key_type_user +EXPORT_SYMBOL_GPL vmlinux 0x8487a2b6 flush_work +EXPORT_SYMBOL_GPL vmlinux 0x84957057 class_dev_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0x84a228c9 blk_insert_cloned_request +EXPORT_SYMBOL_GPL vmlinux 0x84a7da2a acpiphp_register_attention +EXPORT_SYMBOL_GPL vmlinux 0x84c0560c usb_queue_reset_device +EXPORT_SYMBOL_GPL vmlinux 0x84d3cd3d pm_generic_restore_noirq +EXPORT_SYMBOL_GPL vmlinux 0x84d8beaa pci_hp_remove_module_link +EXPORT_SYMBOL_GPL vmlinux 0x84dbc69d device_pm_wait_for_dev +EXPORT_SYMBOL_GPL vmlinux 0x84e57fcd crypto_unregister_template +EXPORT_SYMBOL_GPL vmlinux 0x84ea8eb9 rt_mutex_unlock +EXPORT_SYMBOL_GPL vmlinux 0x85050965 __irq_alloc_descs +EXPORT_SYMBOL_GPL vmlinux 0x8506baa8 clk_unregister_gate +EXPORT_SYMBOL_GPL vmlinux 0x85216155 ezx_pcap_read +EXPORT_SYMBOL_GPL vmlinux 0x854a3ca8 nd_blk_region_set_provider_data +EXPORT_SYMBOL_GPL vmlinux 0x854b1786 rtc_irq_register +EXPORT_SYMBOL_GPL vmlinux 0x854d933d ata_port_abort +EXPORT_SYMBOL_GPL vmlinux 0x859eeee6 pwm_get_chip_data +EXPORT_SYMBOL_GPL vmlinux 0x85c2ab65 kernfs_notify +EXPORT_SYMBOL_GPL vmlinux 0x85c7f674 ring_buffer_normalize_time_stamp +EXPORT_SYMBOL_GPL vmlinux 0x85e77285 max8997_read_reg +EXPORT_SYMBOL_GPL vmlinux 0x85f08ece driver_remove_file +EXPORT_SYMBOL_GPL vmlinux 0x8601b63c dmi_kobj +EXPORT_SYMBOL_GPL vmlinux 0x86168b5c blkg_prfill_rwstat +EXPORT_SYMBOL_GPL vmlinux 0x861c65b5 gpiochip_add_pingroup_range +EXPORT_SYMBOL_GPL vmlinux 0x8622a592 regulator_count_voltages +EXPORT_SYMBOL_GPL vmlinux 0x86269e49 gen_pool_get +EXPORT_SYMBOL_GPL vmlinux 0x862b5707 blk_queue_bypass_end +EXPORT_SYMBOL_GPL vmlinux 0x863353e0 xenbus_dev_changed +EXPORT_SYMBOL_GPL vmlinux 0x8642df29 md_do_sync +EXPORT_SYMBOL_GPL vmlinux 0x86622fd1 dev_pm_enable_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0x86623fd7 notify_remote_via_irq +EXPORT_SYMBOL_GPL vmlinux 0x8674a2ca mmu_notifier_unregister_no_release +EXPORT_SYMBOL_GPL vmlinux 0x86786286 klist_add_behind +EXPORT_SYMBOL_GPL vmlinux 0x868784cb __symbol_get +EXPORT_SYMBOL_GPL vmlinux 0x869fc1d4 each_symbol_section +EXPORT_SYMBOL_GPL vmlinux 0x86a51007 gnttab_end_foreign_transfer +EXPORT_SYMBOL_GPL vmlinux 0x86c55925 tpm2_do_selftest +EXPORT_SYMBOL_GPL vmlinux 0x86f0d974 get_cached_msi_msg +EXPORT_SYMBOL_GPL vmlinux 0x86f6b99d synchronize_rcu_expedited +EXPORT_SYMBOL_GPL vmlinux 0x86f8c910 pcap_set_ts_bits +EXPORT_SYMBOL_GPL vmlinux 0x8702e548 process_srcu +EXPORT_SYMBOL_GPL vmlinux 0x870e127d cpci_hp_unregister_controller +EXPORT_SYMBOL_GPL vmlinux 0x870e16b7 xen_test_irq_shared +EXPORT_SYMBOL_GPL vmlinux 0x873fbaea edac_atomic_assert_error +EXPORT_SYMBOL_GPL vmlinux 0x874acbde sysfs_add_link_to_group +EXPORT_SYMBOL_GPL vmlinux 0x874ba2d3 kvm_set_memory_region +EXPORT_SYMBOL_GPL vmlinux 0x87655d9d devm_usb_get_phy_by_node +EXPORT_SYMBOL_GPL vmlinux 0x8795b28e ata_sff_port_intr +EXPORT_SYMBOL_GPL vmlinux 0x87a18c24 regulator_get_voltage_sel_regmap +EXPORT_SYMBOL_GPL vmlinux 0x87d70cab kvm_read_guest_page +EXPORT_SYMBOL_GPL vmlinux 0x8810ad5e crypto_xor +EXPORT_SYMBOL_GPL vmlinux 0x88136838 wm8997_i2c_regmap +EXPORT_SYMBOL_GPL vmlinux 0x8827f62f usb_get_phy +EXPORT_SYMBOL_GPL vmlinux 0x883c2740 __cookie_v6_init_sequence +EXPORT_SYMBOL_GPL vmlinux 0x883d3a80 ata_sff_irq_on +EXPORT_SYMBOL_GPL vmlinux 0x8842f0cb da9052_request_irq +EXPORT_SYMBOL_GPL vmlinux 0x885b268b __srcu_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x886089cd class_dev_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x8881a6aa __netpoll_cleanup +EXPORT_SYMBOL_GPL vmlinux 0x88a5ea85 sdhci_pci_o2_probe_slot +EXPORT_SYMBOL_GPL vmlinux 0x88ab6fe3 kgdb_active +EXPORT_SYMBOL_GPL vmlinux 0x88b5647c trace_clock_local +EXPORT_SYMBOL_GPL vmlinux 0x88c7436c dma_get_slave_channel +EXPORT_SYMBOL_GPL vmlinux 0x88dc906d cpufreq_frequency_table_cpuinfo +EXPORT_SYMBOL_GPL vmlinux 0x88e35033 extcon_register_interest +EXPORT_SYMBOL_GPL vmlinux 0x8917e35d __ip6_local_out +EXPORT_SYMBOL_GPL vmlinux 0x891a5a7f gnttab_max_grant_frames +EXPORT_SYMBOL_GPL vmlinux 0x8924eb1e rcu_force_quiescent_state +EXPORT_SYMBOL_GPL vmlinux 0x892b26a0 set_memory_nx +EXPORT_SYMBOL_GPL vmlinux 0x89485687 iommu_group_put +EXPORT_SYMBOL_GPL vmlinux 0x89995417 gfn_to_page +EXPORT_SYMBOL_GPL vmlinux 0x89a34d11 sata_pmp_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x89acaaa8 da9052_disable_irq_nosync +EXPORT_SYMBOL_GPL vmlinux 0x89b99969 wm831x_reg_unlock +EXPORT_SYMBOL_GPL vmlinux 0x89bacf81 list_lru_walk_node +EXPORT_SYMBOL_GPL vmlinux 0x89bbafc6 usb_register_notify +EXPORT_SYMBOL_GPL vmlinux 0x89c990d5 ipv6_find_tlv +EXPORT_SYMBOL_GPL vmlinux 0x89cfb187 invalidate_inode_pages2 +EXPORT_SYMBOL_GPL vmlinux 0x89d30e73 __mmdrop +EXPORT_SYMBOL_GPL vmlinux 0x89ebb073 set_cpus_allowed_ptr +EXPORT_SYMBOL_GPL vmlinux 0x89f212fd tcp_reno_cong_avoid +EXPORT_SYMBOL_GPL vmlinux 0x89fbb974 devres_get +EXPORT_SYMBOL_GPL vmlinux 0x8a0e325b device_init_wakeup +EXPORT_SYMBOL_GPL vmlinux 0x8a19cf9d pci_hp_deregister +EXPORT_SYMBOL_GPL vmlinux 0x8a2246be udp6_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x8a554a36 mpc8xxx_spi_strmode +EXPORT_SYMBOL_GPL vmlinux 0x8a559846 gnttab_setup_auto_xlat_frames +EXPORT_SYMBOL_GPL vmlinux 0x8a5bc1a2 gpiod_direction_output_raw +EXPORT_SYMBOL_GPL vmlinux 0x8a6203c5 blkg_rwstat_recursive_sum +EXPORT_SYMBOL_GPL vmlinux 0x8a6d06e9 ata_bmdma_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x8a78989f irq_from_evtchn +EXPORT_SYMBOL_GPL vmlinux 0x8aa7ec34 of_pci_msi_chip_add +EXPORT_SYMBOL_GPL vmlinux 0x8abacc47 get_max_files +EXPORT_SYMBOL_GPL vmlinux 0x8ac00a9e cpufreq_frequency_table_get_index +EXPORT_SYMBOL_GPL vmlinux 0x8b04668e bind_interdomain_evtchn_to_irqhandler +EXPORT_SYMBOL_GPL vmlinux 0x8b0eaa1e fwnode_get_named_gpiod +EXPORT_SYMBOL_GPL vmlinux 0x8b149c36 clk_is_match +EXPORT_SYMBOL_GPL vmlinux 0x8b28e0cf kvm_release_page_dirty +EXPORT_SYMBOL_GPL vmlinux 0x8b29e456 __udp4_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x8b66f9e0 xen_platform_pci_unplug +EXPORT_SYMBOL_GPL vmlinux 0x8b6b8a98 irq_gc_ack_set_bit +EXPORT_SYMBOL_GPL vmlinux 0x8b6c74d9 inet_twsk_alloc +EXPORT_SYMBOL_GPL vmlinux 0x8b94e9b4 do_unbind_con_driver +EXPORT_SYMBOL_GPL vmlinux 0x8ba5afe9 HYPERVISOR_memory_op +EXPORT_SYMBOL_GPL vmlinux 0x8be6b258 crypto_init_shash_spawn +EXPORT_SYMBOL_GPL vmlinux 0x8bf713e5 device_initialize +EXPORT_SYMBOL_GPL vmlinux 0x8c0215f2 pm_system_wakeup +EXPORT_SYMBOL_GPL vmlinux 0x8c03d20c destroy_workqueue +EXPORT_SYMBOL_GPL vmlinux 0x8c06a108 xenbus_transaction_start +EXPORT_SYMBOL_GPL vmlinux 0x8c0cd6cb thermal_of_cooling_device_register +EXPORT_SYMBOL_GPL vmlinux 0x8c2e04aa get_net_ns_by_fd +EXPORT_SYMBOL_GPL vmlinux 0x8c3ee7f4 rhashtable_walk_start +EXPORT_SYMBOL_GPL vmlinux 0x8c5cd00e regcache_drop_region +EXPORT_SYMBOL_GPL vmlinux 0x8c646600 edac_report_status +EXPORT_SYMBOL_GPL vmlinux 0x8c659b6c btree_init_mempool +EXPORT_SYMBOL_GPL vmlinux 0x8c691150 gpiochip_remove_pin_ranges +EXPORT_SYMBOL_GPL vmlinux 0x8c743fb6 reset_control_status +EXPORT_SYMBOL_GPL vmlinux 0x8c997b6c ata_sff_data_xfer32 +EXPORT_SYMBOL_GPL vmlinux 0x8ca2629a da903x_read +EXPORT_SYMBOL_GPL vmlinux 0x8cae7bee gpiod_set_array_value +EXPORT_SYMBOL_GPL vmlinux 0x8cbf0de7 tty_ldisc_ref_wait +EXPORT_SYMBOL_GPL vmlinux 0x8cd3e7be pci_generic_config_write32 +EXPORT_SYMBOL_GPL vmlinux 0x8cea765f memalloc_socks +EXPORT_SYMBOL_GPL vmlinux 0x8cee7d56 md_rdev_clear +EXPORT_SYMBOL_GPL vmlinux 0x8cfc5022 subsys_dev_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x8d20ff6d unregister_acpi_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x8d22bb58 iommu_group_alloc +EXPORT_SYMBOL_GPL vmlinux 0x8d257baa pm_generic_resume_noirq +EXPORT_SYMBOL_GPL vmlinux 0x8d62cc40 regulator_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0x8d9062a7 pci_get_hp_params +EXPORT_SYMBOL_GPL vmlinux 0x8d96e808 add_disk_randomness +EXPORT_SYMBOL_GPL vmlinux 0x8d9fa235 acpi_os_map_iomem +EXPORT_SYMBOL_GPL vmlinux 0x8da01274 kvm_get_pfn +EXPORT_SYMBOL_GPL vmlinux 0x8dbf7aaa privcmd_call +EXPORT_SYMBOL_GPL vmlinux 0x8dc5b2c4 clockevents_unbind_device +EXPORT_SYMBOL_GPL vmlinux 0x8defeba5 pinctrl_unregister +EXPORT_SYMBOL_GPL vmlinux 0x8df839cd sata_scr_read +EXPORT_SYMBOL_GPL vmlinux 0x8e1cd06f kvm_set_pfn_accessed +EXPORT_SYMBOL_GPL vmlinux 0x8e2b25c2 videomode_from_timings +EXPORT_SYMBOL_GPL vmlinux 0x8e414c27 platform_get_irq +EXPORT_SYMBOL_GPL vmlinux 0x8e45567b ata_qc_complete_multiple +EXPORT_SYMBOL_GPL vmlinux 0x8e59c950 pci_load_and_free_saved_state +EXPORT_SYMBOL_GPL vmlinux 0x8e5e666b mpc8xxx_spi_tx_buf_u32 +EXPORT_SYMBOL_GPL vmlinux 0x8e66f148 irq_alloc_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x8e70e033 ata_scsi_simulate +EXPORT_SYMBOL_GPL vmlinux 0x8e7db9bb con_debug_enter +EXPORT_SYMBOL_GPL vmlinux 0x8eba6b7e serial8250_release_dma +EXPORT_SYMBOL_GPL vmlinux 0x8ec3e185 phy_power_off +EXPORT_SYMBOL_GPL vmlinux 0x8ec91e84 kobject_rename +EXPORT_SYMBOL_GPL vmlinux 0x8ecffafa ata_bmdma_status +EXPORT_SYMBOL_GPL vmlinux 0x8ed22d48 i2c_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0x8ee19bf1 ata_host_init +EXPORT_SYMBOL_GPL vmlinux 0x8ef440e5 of_alias_get_id +EXPORT_SYMBOL_GPL vmlinux 0x8f066c8b arizona_clk32k_enable +EXPORT_SYMBOL_GPL vmlinux 0x8f06fe11 crypto_aead_setkey +EXPORT_SYMBOL_GPL vmlinux 0x8f0748af rcu_expedite_gp +EXPORT_SYMBOL_GPL vmlinux 0x8f07afbd blocking_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0x8f36b710 xattr_getsecurity +EXPORT_SYMBOL_GPL vmlinux 0x8f427d3f sysfs_create_bin_file +EXPORT_SYMBOL_GPL vmlinux 0x8f4772f9 blk_unprep_request +EXPORT_SYMBOL_GPL vmlinux 0x8f499a6c vga_default_device +EXPORT_SYMBOL_GPL vmlinux 0x8f4c1847 pci_bus_sem +EXPORT_SYMBOL_GPL vmlinux 0x8f5af4ef netlink_remove_tap +EXPORT_SYMBOL_GPL vmlinux 0x8f691ee2 ata_sff_tf_read +EXPORT_SYMBOL_GPL vmlinux 0x8f6cee77 __round_jiffies_relative +EXPORT_SYMBOL_GPL vmlinux 0x8f84cbcf crypto_ahash_type +EXPORT_SYMBOL_GPL vmlinux 0x8f85c524 acpi_dev_gpio_irq_get +EXPORT_SYMBOL_GPL vmlinux 0x8f995c6a pci_find_ht_capability +EXPORT_SYMBOL_GPL vmlinux 0x8faac947 clk_register_gate +EXPORT_SYMBOL_GPL vmlinux 0x8ff5ffdc __get_user_pages_fast +EXPORT_SYMBOL_GPL vmlinux 0x90018495 irq_domain_xlate_twocell +EXPORT_SYMBOL_GPL vmlinux 0x9009602a acpi_bus_get_ejd +EXPORT_SYMBOL_GPL vmlinux 0x900beea3 sdio_claim_irq +EXPORT_SYMBOL_GPL vmlinux 0x9027f5b6 bus_unregister +EXPORT_SYMBOL_GPL vmlinux 0x903b627c list_lru_isolate_move +EXPORT_SYMBOL_GPL vmlinux 0x903bb65b acpi_dev_resource_ext_address_space +EXPORT_SYMBOL_GPL vmlinux 0x9044ff7c nd_region_attribute_group +EXPORT_SYMBOL_GPL vmlinux 0x90531b06 regmap_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0x9056ca49 iommu_get_domain_for_dev +EXPORT_SYMBOL_GPL vmlinux 0x9062c322 ring_buffer_consume +EXPORT_SYMBOL_GPL vmlinux 0x90717245 dummy_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0x9091cf9f __rtnl_af_unregister +EXPORT_SYMBOL_GPL vmlinux 0x909fc9a2 ata_host_detach +EXPORT_SYMBOL_GPL vmlinux 0x90a1004a crypto_has_alg +EXPORT_SYMBOL_GPL vmlinux 0x90a244fa devm_devfreq_event_remove_edev +EXPORT_SYMBOL_GPL vmlinux 0x90ad31ad skb_to_sgvec_nomark +EXPORT_SYMBOL_GPL vmlinux 0x90b763f1 HYPERVISOR_console_io +EXPORT_SYMBOL_GPL vmlinux 0x90fcc6c4 of_css +EXPORT_SYMBOL_GPL vmlinux 0x91106cf4 pid_nr_ns +EXPORT_SYMBOL_GPL vmlinux 0x91175b18 driver_attach +EXPORT_SYMBOL_GPL vmlinux 0x913c689a regmap_raw_write +EXPORT_SYMBOL_GPL vmlinux 0x913e4f91 gpiod_export_link +EXPORT_SYMBOL_GPL vmlinux 0x9151b24f alarm_expires_remaining +EXPORT_SYMBOL_GPL vmlinux 0x9163ceed regulator_bulk_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x918ad429 ring_buffer_lock_reserve +EXPORT_SYMBOL_GPL vmlinux 0x91a4819c pinconf_generic_dt_node_to_map +EXPORT_SYMBOL_GPL vmlinux 0x91c48e56 usb_get_intf +EXPORT_SYMBOL_GPL vmlinux 0x91c6e5b0 pcap_to_irq +EXPORT_SYMBOL_GPL vmlinux 0x91c7991f __put_net +EXPORT_SYMBOL_GPL vmlinux 0x91d87632 skb_pull_rcsum +EXPORT_SYMBOL_GPL vmlinux 0x920aacca nl_table_lock +EXPORT_SYMBOL_GPL vmlinux 0x920cc389 visitorl +EXPORT_SYMBOL_GPL vmlinux 0x92292219 fb_deferred_io_fsync +EXPORT_SYMBOL_GPL vmlinux 0x9243faae dm_disk +EXPORT_SYMBOL_GPL vmlinux 0x924c46f8 zs_unmap_object +EXPORT_SYMBOL_GPL vmlinux 0x926198d0 kvm_get_kvm +EXPORT_SYMBOL_GPL vmlinux 0x92637d87 usb_sg_wait +EXPORT_SYMBOL_GPL vmlinux 0x926f3d00 tcp_orphan_count +EXPORT_SYMBOL_GPL vmlinux 0x927710ff pci_dev_run_wake +EXPORT_SYMBOL_GPL vmlinux 0x92874bf9 xen_xenbus_fops +EXPORT_SYMBOL_GPL vmlinux 0x92ab0e8d iommu_domain_window_enable +EXPORT_SYMBOL_GPL vmlinux 0x92bda15b ata_sff_drain_fifo +EXPORT_SYMBOL_GPL vmlinux 0x92d31cfb fixed_phy_add +EXPORT_SYMBOL_GPL vmlinux 0x92da1e98 cpuidle_unregister +EXPORT_SYMBOL_GPL vmlinux 0x92db37c4 usb_get_phy_dev +EXPORT_SYMBOL_GPL vmlinux 0x92db8f68 do_trace_rcu_torture_read +EXPORT_SYMBOL_GPL vmlinux 0x9312d80e evtchn_put +EXPORT_SYMBOL_GPL vmlinux 0x931f05d3 ktime_get_raw +EXPORT_SYMBOL_GPL vmlinux 0x93290c79 mbox_controller_unregister +EXPORT_SYMBOL_GPL vmlinux 0x9339ada5 of_get_pci_domain_nr +EXPORT_SYMBOL_GPL vmlinux 0x934f0fc5 adp5520_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x93737ff8 ata_sff_data_xfer +EXPORT_SYMBOL_GPL vmlinux 0x93804094 regulator_disable +EXPORT_SYMBOL_GPL vmlinux 0x93e7b547 crypto_ahash_final +EXPORT_SYMBOL_GPL vmlinux 0x93f395c6 devm_acpi_dma_controller_free +EXPORT_SYMBOL_GPL vmlinux 0x941f2aaa eventfd_ctx_put +EXPORT_SYMBOL_GPL vmlinux 0x9425918d wm831x_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x94259d10 ata_bmdma_port_start +EXPORT_SYMBOL_GPL vmlinux 0x942acbe5 nvdimm_bus_check_dimm_count +EXPORT_SYMBOL_GPL vmlinux 0x943fc708 xen_setup_shutdown_event +EXPORT_SYMBOL_GPL vmlinux 0x944bcbca dma_run_dependencies +EXPORT_SYMBOL_GPL vmlinux 0x945132ac tty_set_termios +EXPORT_SYMBOL_GPL vmlinux 0x9460a237 regmap_field_free +EXPORT_SYMBOL_GPL vmlinux 0x947530c6 serial8250_handle_irq +EXPORT_SYMBOL_GPL vmlinux 0x949f7342 __alloc_percpu +EXPORT_SYMBOL_GPL vmlinux 0x94b14039 ip4_datagram_release_cb +EXPORT_SYMBOL_GPL vmlinux 0x94e62d2e __set_phys_to_machine_multi +EXPORT_SYMBOL_GPL vmlinux 0x94ef4d05 cpci_hp_stop +EXPORT_SYMBOL_GPL vmlinux 0x94fa0106 crypto_alloc_rng +EXPORT_SYMBOL_GPL vmlinux 0x9504df26 irq_wake_thread +EXPORT_SYMBOL_GPL vmlinux 0x952664c5 do_exit +EXPORT_SYMBOL_GPL vmlinux 0x952d7489 ata_acpi_gtm +EXPORT_SYMBOL_GPL vmlinux 0x95312d98 anon_inode_getfile +EXPORT_SYMBOL_GPL vmlinux 0x953e1b9e ktime_get_real_seconds +EXPORT_SYMBOL_GPL vmlinux 0x954aaf20 lp8788_read_byte +EXPORT_SYMBOL_GPL vmlinux 0x9559218c bsg_job_done +EXPORT_SYMBOL_GPL vmlinux 0x955b0e2e kthread_worker_fn +EXPORT_SYMBOL_GPL vmlinux 0x956bd125 usb_match_id +EXPORT_SYMBOL_GPL vmlinux 0x95792455 devm_kmalloc +EXPORT_SYMBOL_GPL vmlinux 0x9581c51d acpi_dev_get_property_array +EXPORT_SYMBOL_GPL vmlinux 0x95897235 fl6_sock_lookup +EXPORT_SYMBOL_GPL vmlinux 0x958df3ac zs_free +EXPORT_SYMBOL_GPL vmlinux 0x95bc9078 btree_free +EXPORT_SYMBOL_GPL vmlinux 0x95dd912a pinctrl_select_state +EXPORT_SYMBOL_GPL vmlinux 0x95e36637 vfs_test_lock +EXPORT_SYMBOL_GPL vmlinux 0x9611d729 device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x961852ca mddev_congested +EXPORT_SYMBOL_GPL vmlinux 0x9621849f ring_buffer_event_data +EXPORT_SYMBOL_GPL vmlinux 0x962294c5 rtnl_register +EXPORT_SYMBOL_GPL vmlinux 0x9625e652 klist_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0x96306cf0 usb_hcd_resume_root_hub +EXPORT_SYMBOL_GPL vmlinux 0x964957e2 of_property_read_u32_index +EXPORT_SYMBOL_GPL vmlinux 0x9649f0ac usb_put_hcd +EXPORT_SYMBOL_GPL vmlinux 0x964add15 xenbus_scanf +EXPORT_SYMBOL_GPL vmlinux 0x964d5c39 acpi_os_map_memory +EXPORT_SYMBOL_GPL vmlinux 0x96554810 register_keyboard_notifier +EXPORT_SYMBOL_GPL vmlinux 0x96893941 component_master_del +EXPORT_SYMBOL_GPL vmlinux 0x96b695e5 tps6586x_reads +EXPORT_SYMBOL_GPL vmlinux 0x96bbcb25 mpc8xxx_spi_rx_buf_u32 +EXPORT_SYMBOL_GPL vmlinux 0x96c5d0ef tty_buffer_lock_exclusive +EXPORT_SYMBOL_GPL vmlinux 0x96d329f1 max_gen_clk_probe +EXPORT_SYMBOL_GPL vmlinux 0x96ec19fe subsys_dev_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0x96ff1df9 platform_device_add +EXPORT_SYMBOL_GPL vmlinux 0x97027cdb __trace_note_message +EXPORT_SYMBOL_GPL vmlinux 0x973edfdf tty_wakeup +EXPORT_SYMBOL_GPL vmlinux 0x975519c1 asymmetric_key_id_same +EXPORT_SYMBOL_GPL vmlinux 0x977287c4 unregister_asymmetric_key_parser +EXPORT_SYMBOL_GPL vmlinux 0x977c03f0 ata_acpi_gtm_xfermask +EXPORT_SYMBOL_GPL vmlinux 0x977d0b59 sdio_set_block_size +EXPORT_SYMBOL_GPL vmlinux 0x97832efa hrtimer_get_remaining +EXPORT_SYMBOL_GPL vmlinux 0x97dbf338 of_dma_configure +EXPORT_SYMBOL_GPL vmlinux 0x97de2b83 debug_locks_silent +EXPORT_SYMBOL_GPL vmlinux 0x97ed36f7 kvm_vcpu_on_spin +EXPORT_SYMBOL_GPL vmlinux 0x97f25cca fuse_abort_conn +EXPORT_SYMBOL_GPL vmlinux 0x97f60667 bio_trim +EXPORT_SYMBOL_GPL vmlinux 0x98024f68 dev_attr_unload_heads +EXPORT_SYMBOL_GPL vmlinux 0x980fc988 ip_local_out_sk +EXPORT_SYMBOL_GPL vmlinux 0x9813406b vfs_setxattr +EXPORT_SYMBOL_GPL vmlinux 0x98148d19 pci_generic_config_read +EXPORT_SYMBOL_GPL vmlinux 0x9833bc0c hvc_kick +EXPORT_SYMBOL_GPL vmlinux 0x98409ebc wakeup_source_create +EXPORT_SYMBOL_GPL vmlinux 0x9840e060 kthread_park +EXPORT_SYMBOL_GPL vmlinux 0x984a42b5 inet6_csk_bind_conflict +EXPORT_SYMBOL_GPL vmlinux 0x98503a63 mpi_alloc +EXPORT_SYMBOL_GPL vmlinux 0x985a8a49 wait_on_page_bit_killable_timeout +EXPORT_SYMBOL_GPL vmlinux 0x986c391a usb_hcd_end_port_resume +EXPORT_SYMBOL_GPL vmlinux 0x9872a0fa register_virtio_device +EXPORT_SYMBOL_GPL vmlinux 0x9879932b crypto_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x987fdb13 crypto_ahash_setkey +EXPORT_SYMBOL_GPL vmlinux 0x988ed85d set_memory_x +EXPORT_SYMBOL_GPL vmlinux 0x98fa1e20 dm_get_reserved_rq_based_ios +EXPORT_SYMBOL_GPL vmlinux 0x98fcf128 irq_work_queue_on +EXPORT_SYMBOL_GPL vmlinux 0x99113382 tps6586x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x9924c496 __usb_get_extra_descriptor +EXPORT_SYMBOL_GPL vmlinux 0x995d1071 prof_on +EXPORT_SYMBOL_GPL vmlinux 0x9971db42 crypto_unregister_ahash +EXPORT_SYMBOL_GPL vmlinux 0x9973add9 __cookie_v6_check +EXPORT_SYMBOL_GPL vmlinux 0x997c4347 unmap_kernel_range +EXPORT_SYMBOL_GPL vmlinux 0x9981a479 phy_pm_runtime_allow +EXPORT_SYMBOL_GPL vmlinux 0x99840d00 timecounter_init +EXPORT_SYMBOL_GPL vmlinux 0x99945575 ipv6_proxy_select_ident +EXPORT_SYMBOL_GPL vmlinux 0x99a9ff9a cpuidle_register_device +EXPORT_SYMBOL_GPL vmlinux 0x99b3d886 blocking_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0x99dd6a3a __blkdev_driver_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x99ddc23b ping_proc_register +EXPORT_SYMBOL_GPL vmlinux 0x99e28f10 __tracepoint_remove_device_from_group +EXPORT_SYMBOL_GPL vmlinux 0x99ea58dd mddev_suspend +EXPORT_SYMBOL_GPL vmlinux 0x99f8ed1f sched_setscheduler +EXPORT_SYMBOL_GPL vmlinux 0x9a0faf8a gpiod_get_array_optional +EXPORT_SYMBOL_GPL vmlinux 0x9a11a0fc crypto_attr_alg_name +EXPORT_SYMBOL_GPL vmlinux 0x9a24f764 unregister_virtio_driver +EXPORT_SYMBOL_GPL vmlinux 0x9a2f748f raw_seq_next +EXPORT_SYMBOL_GPL vmlinux 0x9a89dbf7 lpddr2_jedec_min_tck +EXPORT_SYMBOL_GPL vmlinux 0x9a923583 usb_kill_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x9abc9161 crypto_alg_sem +EXPORT_SYMBOL_GPL vmlinux 0x9ac11b74 suspend_set_ops +EXPORT_SYMBOL_GPL vmlinux 0x9ad977f2 __clk_determine_rate +EXPORT_SYMBOL_GPL vmlinux 0x9aeacb87 ring_buffer_iter_empty +EXPORT_SYMBOL_GPL vmlinux 0x9af33958 tasklet_hrtimer_init +EXPORT_SYMBOL_GPL vmlinux 0x9b11198a blk_mq_tags_cpumask +EXPORT_SYMBOL_GPL vmlinux 0x9b1b1c99 of_get_nand_ecc_strength +EXPORT_SYMBOL_GPL vmlinux 0x9b1ec729 acpi_pci_find_root +EXPORT_SYMBOL_GPL vmlinux 0x9b21c84e kvm_vcpu_gfn_to_pfn +EXPORT_SYMBOL_GPL vmlinux 0x9b301e4a sdio_writesb +EXPORT_SYMBOL_GPL vmlinux 0x9b307936 sysfs_merge_group +EXPORT_SYMBOL_GPL vmlinux 0x9b63fa0d usb_set_device_state +EXPORT_SYMBOL_GPL vmlinux 0x9b6b58c9 hwrng_register +EXPORT_SYMBOL_GPL vmlinux 0x9b7f1d70 of_dma_get_range +EXPORT_SYMBOL_GPL vmlinux 0x9b99f65c crypto_alg_lookup +EXPORT_SYMBOL_GPL vmlinux 0x9ba2bb2b gpio_request_array +EXPORT_SYMBOL_GPL vmlinux 0x9bb17d0a debugfs_create_u32_array +EXPORT_SYMBOL_GPL vmlinux 0x9bb6d754 scsi_queue_work +EXPORT_SYMBOL_GPL vmlinux 0x9bc90326 max8997_write_reg +EXPORT_SYMBOL_GPL vmlinux 0x9bca03ca ata_sff_queue_delayed_work +EXPORT_SYMBOL_GPL vmlinux 0x9bd6d5e2 input_ff_erase +EXPORT_SYMBOL_GPL vmlinux 0x9be40c8d device_register +EXPORT_SYMBOL_GPL vmlinux 0x9bece81b mpi_cmp_ui +EXPORT_SYMBOL_GPL vmlinux 0x9bf95575 kvm_read_guest_cached +EXPORT_SYMBOL_GPL vmlinux 0x9bfe1602 pci_ignore_hotplug +EXPORT_SYMBOL_GPL vmlinux 0x9c04cdfa pm_runtime_autosuspend_expiration +EXPORT_SYMBOL_GPL vmlinux 0x9c17fc0f ata_sas_port_alloc +EXPORT_SYMBOL_GPL vmlinux 0x9c2e4b66 acpi_unregister_gsi +EXPORT_SYMBOL_GPL vmlinux 0x9c48d5f1 extcon_dev_unregister +EXPORT_SYMBOL_GPL vmlinux 0x9c85b22e crypto_spawn_tfm +EXPORT_SYMBOL_GPL vmlinux 0x9ca897f3 inet_hashinfo_init +EXPORT_SYMBOL_GPL vmlinux 0x9cad2b27 clone_private_mount +EXPORT_SYMBOL_GPL vmlinux 0x9cbf0ed5 gpiod_set_raw_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x9cc1cf69 of_pci_find_child_device +EXPORT_SYMBOL_GPL vmlinux 0x9cc1d60e pingv6_ops +EXPORT_SYMBOL_GPL vmlinux 0x9cc4f70a register_pm_notifier +EXPORT_SYMBOL_GPL vmlinux 0x9cec3527 stmpe_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x9cee57a0 zs_create_pool +EXPORT_SYMBOL_GPL vmlinux 0x9d06688b register_xenbus_watch +EXPORT_SYMBOL_GPL vmlinux 0x9d066d0f arizona_dev_init +EXPORT_SYMBOL_GPL vmlinux 0x9d0693dc scsi_autopm_get_device +EXPORT_SYMBOL_GPL vmlinux 0x9d077dbb sysfs_notify +EXPORT_SYMBOL_GPL vmlinux 0x9d3850e1 gnttab_alloc_grant_references +EXPORT_SYMBOL_GPL vmlinux 0x9d489da5 rtc_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x9d501175 kvm_vcpu_block +EXPORT_SYMBOL_GPL vmlinux 0x9d7bb50c fuse_dev_release +EXPORT_SYMBOL_GPL vmlinux 0x9dadbb88 cpufreq_boost_supported +EXPORT_SYMBOL_GPL vmlinux 0x9dc3f32b page_cache_async_readahead +EXPORT_SYMBOL_GPL vmlinux 0x9dd56a9a dma_buf_map_attachment +EXPORT_SYMBOL_GPL vmlinux 0x9de12340 usb_create_shared_hcd +EXPORT_SYMBOL_GPL vmlinux 0x9dfb7262 bitmap_copy_from_slot +EXPORT_SYMBOL_GPL vmlinux 0x9e21dd84 da9052_free_irq +EXPORT_SYMBOL_GPL vmlinux 0x9e275c0b task_active_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0x9e2a6f0f posix_clock_register +EXPORT_SYMBOL_GPL vmlinux 0x9e39aa1d sdio_memcpy_fromio +EXPORT_SYMBOL_GPL vmlinux 0x9e472f5f snmp_fold_field +EXPORT_SYMBOL_GPL vmlinux 0x9e4e4e01 spi_alloc_master +EXPORT_SYMBOL_GPL vmlinux 0x9e61ddc9 btree_init +EXPORT_SYMBOL_GPL vmlinux 0x9e6d87f9 device_reset +EXPORT_SYMBOL_GPL vmlinux 0x9e79c58b crypto_mod_put +EXPORT_SYMBOL_GPL vmlinux 0x9e84282f unix_inq_len +EXPORT_SYMBOL_GPL vmlinux 0x9e866875 blkdev_write_iter +EXPORT_SYMBOL_GPL vmlinux 0x9e890b1b of_reconfig_get_state_change +EXPORT_SYMBOL_GPL vmlinux 0x9e8f2e95 extcon_unregister_interest +EXPORT_SYMBOL_GPL vmlinux 0x9e931211 phy_pm_runtime_forbid +EXPORT_SYMBOL_GPL vmlinux 0x9e9c56b6 crypto_grab_aead +EXPORT_SYMBOL_GPL vmlinux 0x9e9e1b2c pci_cfg_access_trylock +EXPORT_SYMBOL_GPL vmlinux 0x9eaa53f4 rt_mutex_lock +EXPORT_SYMBOL_GPL vmlinux 0x9eadf501 inet_twsk_purge +EXPORT_SYMBOL_GPL vmlinux 0x9eb1120d skb_copy_ubufs +EXPORT_SYMBOL_GPL vmlinux 0x9eb6e606 tps6586x_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0x9ec9e264 led_trigger_register_simple +EXPORT_SYMBOL_GPL vmlinux 0x9ecbbbd4 tc3589x_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x9ecc419b pin_is_valid +EXPORT_SYMBOL_GPL vmlinux 0x9ed554b3 unregister_keyboard_notifier +EXPORT_SYMBOL_GPL vmlinux 0x9ef7dfda btree_lookup +EXPORT_SYMBOL_GPL vmlinux 0x9f099cf6 x509_get_sig_params +EXPORT_SYMBOL_GPL vmlinux 0x9f0d1b6e shmem_add_seals +EXPORT_SYMBOL_GPL vmlinux 0x9f0e3397 bgpio_init +EXPORT_SYMBOL_GPL vmlinux 0x9f148a26 ip6_sk_redirect +EXPORT_SYMBOL_GPL vmlinux 0x9f1fbd60 dev_pm_disable_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0x9f2cc74e da903x_update +EXPORT_SYMBOL_GPL vmlinux 0x9f3444a0 xfrm_audit_state_delete +EXPORT_SYMBOL_GPL vmlinux 0x9f4530bd tty_init_termios +EXPORT_SYMBOL_GPL vmlinux 0x9f517986 HYPERVISOR_hvm_op +EXPORT_SYMBOL_GPL vmlinux 0x9f55967e wm831x_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0x9fcd8dc5 pwmchip_add +EXPORT_SYMBOL_GPL vmlinux 0x9fce80db fb_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x9fd946a2 device_property_read_string +EXPORT_SYMBOL_GPL vmlinux 0x9fe0c458 regulator_get_mode +EXPORT_SYMBOL_GPL vmlinux 0x9fe939e1 mpi_powm +EXPORT_SYMBOL_GPL vmlinux 0x9fecf5fb __platform_create_bundle +EXPORT_SYMBOL_GPL vmlinux 0x9ff19ce7 PageHuge +EXPORT_SYMBOL_GPL vmlinux 0x9ff1ede7 acpi_dev_add_driver_gpios +EXPORT_SYMBOL_GPL vmlinux 0xa00af0b4 rhashtable_destroy +EXPORT_SYMBOL_GPL vmlinux 0xa014a6ac trace_seq_bprintf +EXPORT_SYMBOL_GPL vmlinux 0xa01dcf0f sata_async_notification +EXPORT_SYMBOL_GPL vmlinux 0xa022d9f3 of_fdt_unflatten_tree +EXPORT_SYMBOL_GPL vmlinux 0xa0313d82 usb_get_hcd +EXPORT_SYMBOL_GPL vmlinux 0xa06f4551 of_pci_get_devfn +EXPORT_SYMBOL_GPL vmlinux 0xa078c180 spi_setup +EXPORT_SYMBOL_GPL vmlinux 0xa084108a smpboot_register_percpu_thread +EXPORT_SYMBOL_GPL vmlinux 0xa086f893 ipv4_sk_redirect +EXPORT_SYMBOL_GPL vmlinux 0xa090a6ee tps6586x_read +EXPORT_SYMBOL_GPL vmlinux 0xa091d10d fwnode_property_present +EXPORT_SYMBOL_GPL vmlinux 0xa0932bf0 dio_end_io +EXPORT_SYMBOL_GPL vmlinux 0xa095a62c regmap_attach_dev +EXPORT_SYMBOL_GPL vmlinux 0xa0c0ff67 gpiod_put +EXPORT_SYMBOL_GPL vmlinux 0xa0d77f0a key_set_timeout +EXPORT_SYMBOL_GPL vmlinux 0xa0d87a02 sk_setup_caps +EXPORT_SYMBOL_GPL vmlinux 0xa0e0bbf8 __sock_recv_wifi_status +EXPORT_SYMBOL_GPL vmlinux 0xa0f014e5 usb_get_from_anchor +EXPORT_SYMBOL_GPL vmlinux 0xa1103159 platform_device_del +EXPORT_SYMBOL_GPL vmlinux 0xa11216be xen_store_domain_type +EXPORT_SYMBOL_GPL vmlinux 0xa1159b91 __module_address +EXPORT_SYMBOL_GPL vmlinux 0xa1167dc4 clk_divider_ops +EXPORT_SYMBOL_GPL vmlinux 0xa1217fb7 list_lru_count_one +EXPORT_SYMBOL_GPL vmlinux 0xa12351e1 regulator_get_optional +EXPORT_SYMBOL_GPL vmlinux 0xa1326906 platform_get_irq_byname +EXPORT_SYMBOL_GPL vmlinux 0xa159061d regulator_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0xa1697b2f __rt_mutex_init +EXPORT_SYMBOL_GPL vmlinux 0xa174d508 pm_runtime_force_suspend +EXPORT_SYMBOL_GPL vmlinux 0xa18f9433 mpi_read_buffer +EXPORT_SYMBOL_GPL vmlinux 0xa19f4de1 usb_free_urb +EXPORT_SYMBOL_GPL vmlinux 0xa1aaadcc class_interface_register +EXPORT_SYMBOL_GPL vmlinux 0xa1e986d8 acpi_gpiochip_free_interrupts +EXPORT_SYMBOL_GPL vmlinux 0xa1ed9c8b add_hwgenerator_randomness +EXPORT_SYMBOL_GPL vmlinux 0xa1f1ea90 xenbus_dev_probe +EXPORT_SYMBOL_GPL vmlinux 0xa1f79553 xen_create_contiguous_region +EXPORT_SYMBOL_GPL vmlinux 0xa21a061e of_dma_controller_free +EXPORT_SYMBOL_GPL vmlinux 0xa21a7e9a to_nd_blk_region +EXPORT_SYMBOL_GPL vmlinux 0xa2509184 uhci_check_and_reset_hc +EXPORT_SYMBOL_GPL vmlinux 0xa26d9b4f workqueue_congested +EXPORT_SYMBOL_GPL vmlinux 0xa27d6004 mnt_want_write +EXPORT_SYMBOL_GPL vmlinux 0xa287b38e usb_hcd_giveback_urb +EXPORT_SYMBOL_GPL vmlinux 0xa28d9342 pci_hp_add_bridge +EXPORT_SYMBOL_GPL vmlinux 0xa2a9e1c8 usb_get_status +EXPORT_SYMBOL_GPL vmlinux 0xa2ac5519 percpu_ref_init +EXPORT_SYMBOL_GPL vmlinux 0xa2b48d16 btree_grim_visitor +EXPORT_SYMBOL_GPL vmlinux 0xa2b9c993 clk_register_fixed_factor +EXPORT_SYMBOL_GPL vmlinux 0xa2bafa40 interval_tree_insert +EXPORT_SYMBOL_GPL vmlinux 0xa2bd73f9 regulator_set_voltage_sel_regmap +EXPORT_SYMBOL_GPL vmlinux 0xa2ca844b dev_pm_opp_get_notifier +EXPORT_SYMBOL_GPL vmlinux 0xa2d631b0 subsys_find_device_by_id +EXPORT_SYMBOL_GPL vmlinux 0xa30cb015 seq_open_net +EXPORT_SYMBOL_GPL vmlinux 0xa3385509 __pm_runtime_set_status +EXPORT_SYMBOL_GPL vmlinux 0xa33a4423 usb_phy_generic_register +EXPORT_SYMBOL_GPL vmlinux 0xa341520e regmap_async_complete +EXPORT_SYMBOL_GPL vmlinux 0xa353fffc xenbus_rm +EXPORT_SYMBOL_GPL vmlinux 0xa38602cd drain_workqueue +EXPORT_SYMBOL_GPL vmlinux 0xa386c029 trace_seq_to_user +EXPORT_SYMBOL_GPL vmlinux 0xa3892e6c sdio_disable_func +EXPORT_SYMBOL_GPL vmlinux 0xa38989bb debugfs_create_x32 +EXPORT_SYMBOL_GPL vmlinux 0xa389a49a profile_event_register +EXPORT_SYMBOL_GPL vmlinux 0xa3a04602 btree_geo64 +EXPORT_SYMBOL_GPL vmlinux 0xa3b958ce reset_hung_task_detector +EXPORT_SYMBOL_GPL vmlinux 0xa3c02ea9 inet6_sk_rebuild_header +EXPORT_SYMBOL_GPL vmlinux 0xa3dd5374 mmc_send_tuning +EXPORT_SYMBOL_GPL vmlinux 0xa3e4e905 irq_create_strict_mappings +EXPORT_SYMBOL_GPL vmlinux 0xa3e756c4 gpio_to_desc +EXPORT_SYMBOL_GPL vmlinux 0xa3e7c113 ring_buffer_iter_peek +EXPORT_SYMBOL_GPL vmlinux 0xa3f439be debugfs_create_u16 +EXPORT_SYMBOL_GPL vmlinux 0xa42654de acpi_subsys_runtime_resume +EXPORT_SYMBOL_GPL vmlinux 0xa42ef27b regmap_async_complete_cb +EXPORT_SYMBOL_GPL vmlinux 0xa43f246d tty_port_link_device +EXPORT_SYMBOL_GPL vmlinux 0xa44e88fa dma_buf_unmap_attachment +EXPORT_SYMBOL_GPL vmlinux 0xa452f2a4 xen_pirq_from_irq +EXPORT_SYMBOL_GPL vmlinux 0xa477df67 ata_pci_device_do_resume +EXPORT_SYMBOL_GPL vmlinux 0xa48196c8 kdb_poll_idx +EXPORT_SYMBOL_GPL vmlinux 0xa4850221 sk_clone_lock +EXPORT_SYMBOL_GPL vmlinux 0xa4ae61a8 acpi_device_uevent_modalias +EXPORT_SYMBOL_GPL vmlinux 0xa4bdbc09 inet6_csk_xmit +EXPORT_SYMBOL_GPL vmlinux 0xa4e3cd07 scsi_target_block +EXPORT_SYMBOL_GPL vmlinux 0xa50d0f7b ping_seq_stop +EXPORT_SYMBOL_GPL vmlinux 0xa5579ff5 vfs_truncate +EXPORT_SYMBOL_GPL vmlinux 0xa55dd2f7 cpuidle_register +EXPORT_SYMBOL_GPL vmlinux 0xa5668a9c pstore_register +EXPORT_SYMBOL_GPL vmlinux 0xa56b8c59 bgpio_remove +EXPORT_SYMBOL_GPL vmlinux 0xa5850cd4 srcu_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa58a0a4c fat_setattr +EXPORT_SYMBOL_GPL vmlinux 0xa5e21921 pm_generic_thaw_noirq +EXPORT_SYMBOL_GPL vmlinux 0xa5e407e4 wm5110_aod +EXPORT_SYMBOL_GPL vmlinux 0xa5ea625a wm8350_reg_lock +EXPORT_SYMBOL_GPL vmlinux 0xa5efbf4c async_synchronize_full +EXPORT_SYMBOL_GPL vmlinux 0xa60f81fd device_create_with_groups +EXPORT_SYMBOL_GPL vmlinux 0xa613b422 devm_regulator_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa613e3d9 relay_switch_subbuf +EXPORT_SYMBOL_GPL vmlinux 0xa615090c bmp085_detect +EXPORT_SYMBOL_GPL vmlinux 0xa6158c1c usb_autopm_put_interface_no_suspend +EXPORT_SYMBOL_GPL vmlinux 0xa617dd7b __tracepoint_map +EXPORT_SYMBOL_GPL vmlinux 0xa625110d kmsg_dump_rewind +EXPORT_SYMBOL_GPL vmlinux 0xa62892c6 efivar_sysfs_list +EXPORT_SYMBOL_GPL vmlinux 0xa6382db1 pm_runtime_allow +EXPORT_SYMBOL_GPL vmlinux 0xa6451506 wm8350_reg_write +EXPORT_SYMBOL_GPL vmlinux 0xa648b17b ip6_datagram_connect +EXPORT_SYMBOL_GPL vmlinux 0xa66c0d16 cgroup_attach_task_all +EXPORT_SYMBOL_GPL vmlinux 0xa6b21ef2 dpm_suspend_end +EXPORT_SYMBOL_GPL vmlinux 0xa6c8dc46 of_property_read_u64 +EXPORT_SYMBOL_GPL vmlinux 0xa6d2cb83 platform_add_devices +EXPORT_SYMBOL_GPL vmlinux 0xa6d70227 dma_buf_get +EXPORT_SYMBOL_GPL vmlinux 0xa6e1a69d kick_all_cpus_sync +EXPORT_SYMBOL_GPL vmlinux 0xa6fa18e2 sock_prot_inuse_add +EXPORT_SYMBOL_GPL vmlinux 0xa74cc721 hrtimer_init +EXPORT_SYMBOL_GPL vmlinux 0xa74f9d45 xenbus_match +EXPORT_SYMBOL_GPL vmlinux 0xa75312bc call_rcu_sched +EXPORT_SYMBOL_GPL vmlinux 0xa761c95b sysfs_create_files +EXPORT_SYMBOL_GPL vmlinux 0xa7b23425 devm_usb_get_phy +EXPORT_SYMBOL_GPL vmlinux 0xa7bb8969 __efivar_entry_get +EXPORT_SYMBOL_GPL vmlinux 0xa7bca0e6 tpm_chip_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa7d15c1c list_lru_del +EXPORT_SYMBOL_GPL vmlinux 0xa7e13a6a clk_mux_ro_ops +EXPORT_SYMBOL_GPL vmlinux 0xa7e81221 tpm2_probe +EXPORT_SYMBOL_GPL vmlinux 0xa7fe28bc of_prop_next_string +EXPORT_SYMBOL_GPL vmlinux 0xa801b359 efivar_entry_iter_begin +EXPORT_SYMBOL_GPL vmlinux 0xa813e8fe devres_add +EXPORT_SYMBOL_GPL vmlinux 0xa82643dd usb_kill_urb +EXPORT_SYMBOL_GPL vmlinux 0xa850dafc idr_alloc +EXPORT_SYMBOL_GPL vmlinux 0xa851973a raw_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xa87792da ata_scsi_slave_config +EXPORT_SYMBOL_GPL vmlinux 0xa896bd2e reset_controller_register +EXPORT_SYMBOL_GPL vmlinux 0xa8b76a68 timecounter_cyc2time +EXPORT_SYMBOL_GPL vmlinux 0xa8c57185 usb_hcd_pci_pm_ops +EXPORT_SYMBOL_GPL vmlinux 0xa8c7317d ata_eh_analyze_ncq_error +EXPORT_SYMBOL_GPL vmlinux 0xa8e58035 sdio_run_irqs +EXPORT_SYMBOL_GPL vmlinux 0xa8edfbb8 virtqueue_kick_prepare +EXPORT_SYMBOL_GPL vmlinux 0xa8f825b8 find_vpid +EXPORT_SYMBOL_GPL vmlinux 0xa8ff6789 ohci_suspend +EXPORT_SYMBOL_GPL vmlinux 0xa9097c9f wm8350_block_write +EXPORT_SYMBOL_GPL vmlinux 0xa925e478 __tracepoint_rpm_return_int +EXPORT_SYMBOL_GPL vmlinux 0xa9320d27 ktime_get_seconds +EXPORT_SYMBOL_GPL vmlinux 0xa9537be5 adp5520_write +EXPORT_SYMBOL_GPL vmlinux 0xa967f77b cpufreq_table_validate_and_show +EXPORT_SYMBOL_GPL vmlinux 0xa980af16 RSA_public_key_algorithm +EXPORT_SYMBOL_GPL vmlinux 0xa99d955c fat_add_entries +EXPORT_SYMBOL_GPL vmlinux 0xa9a485d9 wm8997_aod +EXPORT_SYMBOL_GPL vmlinux 0xa9aef2e1 gfn_to_hva_memslot +EXPORT_SYMBOL_GPL vmlinux 0xa9cf8254 __blocking_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xa9e18049 task_handoff_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa9f7f7d6 xenbus_switch_state +EXPORT_SYMBOL_GPL vmlinux 0xaa004b81 user_free_preparse +EXPORT_SYMBOL_GPL vmlinux 0xaa41a148 cleanup_srcu_struct +EXPORT_SYMBOL_GPL vmlinux 0xaa674ae5 acpi_dev_get_resources +EXPORT_SYMBOL_GPL vmlinux 0xaa67cb3a regmap_write_async +EXPORT_SYMBOL_GPL vmlinux 0xaaa918c9 ftrace_dump +EXPORT_SYMBOL_GPL vmlinux 0xaaac755c gpiod_to_chip +EXPORT_SYMBOL_GPL vmlinux 0xaaba7f0e kset_create_and_add +EXPORT_SYMBOL_GPL vmlinux 0xab01acbe gnttab_request_free_callback +EXPORT_SYMBOL_GPL vmlinux 0xab29ad96 cpuidle_disable_device +EXPORT_SYMBOL_GPL vmlinux 0xab2a7a87 acpi_dma_controller_register +EXPORT_SYMBOL_GPL vmlinux 0xab2ed618 vfs_setlease +EXPORT_SYMBOL_GPL vmlinux 0xab340a50 fl6_merge_options +EXPORT_SYMBOL_GPL vmlinux 0xab374b4b sysfs_create_file_ns +EXPORT_SYMBOL_GPL vmlinux 0xab3e96e0 sprint_OID +EXPORT_SYMBOL_GPL vmlinux 0xab46423c blk_queue_rq_timeout +EXPORT_SYMBOL_GPL vmlinux 0xab49e206 regmap_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0xab5503a0 usb_put_intf +EXPORT_SYMBOL_GPL vmlinux 0xab567d31 percpu_ref_reinit +EXPORT_SYMBOL_GPL vmlinux 0xab5a5de4 fixed_phy_del +EXPORT_SYMBOL_GPL vmlinux 0xab6babaf pm_qos_request +EXPORT_SYMBOL_GPL vmlinux 0xab870785 virtqueue_is_broken +EXPORT_SYMBOL_GPL vmlinux 0xab8ceced gnttab_batch_copy +EXPORT_SYMBOL_GPL vmlinux 0xab8f9313 __nvdimm_bus_register +EXPORT_SYMBOL_GPL vmlinux 0xab984217 of_property_read_u64_array +EXPORT_SYMBOL_GPL vmlinux 0xab996789 regulator_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0xabab79ed usb_unlink_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0xabb5ebeb of_property_match_string +EXPORT_SYMBOL_GPL vmlinux 0xabb9cfd1 usb_free_streams +EXPORT_SYMBOL_GPL vmlinux 0xabc640f3 list_lru_isolate +EXPORT_SYMBOL_GPL vmlinux 0xabcc487f exportfs_decode_fh +EXPORT_SYMBOL_GPL vmlinux 0xabced1aa trace_buffer_unlock_commit_regs +EXPORT_SYMBOL_GPL vmlinux 0xabd72c85 xfrm_audit_state_notfound_simple +EXPORT_SYMBOL_GPL vmlinux 0xabec4e88 sysfs_create_mount_point +EXPORT_SYMBOL_GPL vmlinux 0xabfb7868 platform_device_add_resources +EXPORT_SYMBOL_GPL vmlinux 0xac34da32 of_get_dma_window +EXPORT_SYMBOL_GPL vmlinux 0xac7188f5 xen_remap_domain_mfn_array +EXPORT_SYMBOL_GPL vmlinux 0xac8232a5 usb_enable_lpm +EXPORT_SYMBOL_GPL vmlinux 0xac89832c blkcg_root +EXPORT_SYMBOL_GPL vmlinux 0xacd7b96c thermal_generate_netlink_event +EXPORT_SYMBOL_GPL vmlinux 0xace5c0fc usb_bus_list +EXPORT_SYMBOL_GPL vmlinux 0xad2e8d95 list_lru_count_node +EXPORT_SYMBOL_GPL vmlinux 0xad368117 xenbus_dev_remove +EXPORT_SYMBOL_GPL vmlinux 0xad5c4ef8 devm_regmap_init_i2c +EXPORT_SYMBOL_GPL vmlinux 0xad6610f7 devm_pwm_get +EXPORT_SYMBOL_GPL vmlinux 0xad83bce2 clk_register_mux_table +EXPORT_SYMBOL_GPL vmlinux 0xad8b7a48 bus_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0xad98817e aead_geniv_init +EXPORT_SYMBOL_GPL vmlinux 0xadc785ec kgdb_register_io_module +EXPORT_SYMBOL_GPL vmlinux 0xade41dc4 regmap_get_reg_stride +EXPORT_SYMBOL_GPL vmlinux 0xade7857f for_each_kernel_tracepoint +EXPORT_SYMBOL_GPL vmlinux 0xadf6aa4d tpm_pcr_read +EXPORT_SYMBOL_GPL vmlinux 0xae1857bf cpufreq_freq_transition_end +EXPORT_SYMBOL_GPL vmlinux 0xae60d927 kvm_vcpu_mark_page_dirty +EXPORT_SYMBOL_GPL vmlinux 0xae69b1c1 usermodehelper_read_unlock +EXPORT_SYMBOL_GPL vmlinux 0xae69fe06 usb_ifnum_to_if +EXPORT_SYMBOL_GPL vmlinux 0xae7c231d mpi_cmp +EXPORT_SYMBOL_GPL vmlinux 0xae81922b of_overlay_destroy_all +EXPORT_SYMBOL_GPL vmlinux 0xae847375 pm_generic_suspend_late +EXPORT_SYMBOL_GPL vmlinux 0xae88fd05 pci_reset_slot +EXPORT_SYMBOL_GPL vmlinux 0xae8aa931 dev_pm_opp_get_voltage +EXPORT_SYMBOL_GPL vmlinux 0xaec40825 blk_set_queue_dying +EXPORT_SYMBOL_GPL vmlinux 0xaec5da18 regulator_list_voltage_linear_range +EXPORT_SYMBOL_GPL vmlinux 0xaecd6368 crypto_nivaead_type +EXPORT_SYMBOL_GPL vmlinux 0xaed75664 pci_intx_mask_supported +EXPORT_SYMBOL_GPL vmlinux 0xaeda02c8 disk_part_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0xaf060fa3 arizona_dev_exit +EXPORT_SYMBOL_GPL vmlinux 0xaf0a2c9a of_fixed_factor_clk_setup +EXPORT_SYMBOL_GPL vmlinux 0xaf0f9a80 gen_pool_avail +EXPORT_SYMBOL_GPL vmlinux 0xaf0fe3ee blkcg_print_blkgs +EXPORT_SYMBOL_GPL vmlinux 0xaf26760c gpiochip_is_requested +EXPORT_SYMBOL_GPL vmlinux 0xaf27cc5d ping_close +EXPORT_SYMBOL_GPL vmlinux 0xaf348da7 cpu_pm_exit +EXPORT_SYMBOL_GPL vmlinux 0xaf39d0f8 spi_async +EXPORT_SYMBOL_GPL vmlinux 0xaf4bcf31 ftrace_set_notrace +EXPORT_SYMBOL_GPL vmlinux 0xaf553e41 sata_set_spd +EXPORT_SYMBOL_GPL vmlinux 0xaf575909 pci_sriov_get_totalvfs +EXPORT_SYMBOL_GPL vmlinux 0xaf58290a acpi_subsys_suspend_late +EXPORT_SYMBOL_GPL vmlinux 0xaf83425b fat_fill_super +EXPORT_SYMBOL_GPL vmlinux 0xafb07262 __pfn_to_mfn +EXPORT_SYMBOL_GPL vmlinux 0xafb878a9 preempt_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0xafbda2ab kobject_get_path +EXPORT_SYMBOL_GPL vmlinux 0xaff64a2b ata_bmdma_qc_issue +EXPORT_SYMBOL_GPL vmlinux 0xb02ac411 register_xenstore_notifier +EXPORT_SYMBOL_GPL vmlinux 0xb0400c6b add_timer_on +EXPORT_SYMBOL_GPL vmlinux 0xb0563ee2 fb_deferred_io_init +EXPORT_SYMBOL_GPL vmlinux 0xb077e70a clk_unprepare +EXPORT_SYMBOL_GPL vmlinux 0xb09c4039 crypto_alloc_shash +EXPORT_SYMBOL_GPL vmlinux 0xb0b85f47 ring_buffer_iter_reset +EXPORT_SYMBOL_GPL vmlinux 0xb0bcdffc nd_cmd_in_size +EXPORT_SYMBOL_GPL vmlinux 0xb0d1656c gpio_free_array +EXPORT_SYMBOL_GPL vmlinux 0xb0d58efd iommu_present +EXPORT_SYMBOL_GPL vmlinux 0xb0d9f601 ipv6_recv_error +EXPORT_SYMBOL_GPL vmlinux 0xb0e1c7d6 of_clk_get_parent_name +EXPORT_SYMBOL_GPL vmlinux 0xb0efb3a5 rhashtable_walk_stop +EXPORT_SYMBOL_GPL vmlinux 0xb11637ad wakeup_source_destroy +EXPORT_SYMBOL_GPL vmlinux 0xb12b49e8 acpi_dma_controller_free +EXPORT_SYMBOL_GPL vmlinux 0xb140d14c ring_buffer_read +EXPORT_SYMBOL_GPL vmlinux 0xb1425b32 dm_table_add_target_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xb15357da devm_of_phy_get_by_index +EXPORT_SYMBOL_GPL vmlinux 0xb16e42da ata_sff_pause +EXPORT_SYMBOL_GPL vmlinux 0xb17212b7 tpm2_shutdown +EXPORT_SYMBOL_GPL vmlinux 0xb172ffac efivars_sysfs_init +EXPORT_SYMBOL_GPL vmlinux 0xb17c17b7 __pci_hp_register +EXPORT_SYMBOL_GPL vmlinux 0xb18429eb suspend_device_irqs +EXPORT_SYMBOL_GPL vmlinux 0xb188354a unuse_mm +EXPORT_SYMBOL_GPL vmlinux 0xb1991b63 device_bind_driver +EXPORT_SYMBOL_GPL vmlinux 0xb19d4caa devm_regmap_field_alloc +EXPORT_SYMBOL_GPL vmlinux 0xb1acbcce rcu_barrier_sched +EXPORT_SYMBOL_GPL vmlinux 0xb1bed25d dpm_resume_start +EXPORT_SYMBOL_GPL vmlinux 0xb1c0c1c2 async_schedule_domain +EXPORT_SYMBOL_GPL vmlinux 0xb1caf96e nf_queue_entry_release_refs +EXPORT_SYMBOL_GPL vmlinux 0xb1dff235 xhci_gen_setup +EXPORT_SYMBOL_GPL vmlinux 0xb1e20ab1 usb_get_descriptor +EXPORT_SYMBOL_GPL vmlinux 0xb1e25684 __trace_bputs +EXPORT_SYMBOL_GPL vmlinux 0xb2200b3d sata_link_debounce +EXPORT_SYMBOL_GPL vmlinux 0xb2210d64 reset_control_deassert +EXPORT_SYMBOL_GPL vmlinux 0xb228629b platform_device_alloc +EXPORT_SYMBOL_GPL vmlinux 0xb248e7d4 subsys_dev_iter_next +EXPORT_SYMBOL_GPL vmlinux 0xb250a794 irq_domain_add_legacy +EXPORT_SYMBOL_GPL vmlinux 0xb260bfa5 unix_table_lock +EXPORT_SYMBOL_GPL vmlinux 0xb274f77f dequeue_signal +EXPORT_SYMBOL_GPL vmlinux 0xb285b8f8 xen_in_preemptible_hcall +EXPORT_SYMBOL_GPL vmlinux 0xb2921c7b led_sysfs_disable +EXPORT_SYMBOL_GPL vmlinux 0xb293c21c ip_tunnel_get_stats64 +EXPORT_SYMBOL_GPL vmlinux 0xb2ac35cb blk_add_request_payload +EXPORT_SYMBOL_GPL vmlinux 0xb2b08182 da9052_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0xb2c52454 xenbus_read_otherend_details +EXPORT_SYMBOL_GPL vmlinux 0xb2d21b55 sata_pmp_qc_defer_cmd_switch +EXPORT_SYMBOL_GPL vmlinux 0xb2e764e8 suspend_valid_only_mem +EXPORT_SYMBOL_GPL vmlinux 0xb2ee7886 scsi_get_vpd_page +EXPORT_SYMBOL_GPL vmlinux 0xb2f0d084 __dev_forward_skb +EXPORT_SYMBOL_GPL vmlinux 0xb315bb17 devm_regulator_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0xb3389ad1 sysfs_remove_link +EXPORT_SYMBOL_GPL vmlinux 0xb347bb2c work_busy +EXPORT_SYMBOL_GPL vmlinux 0xb34d3506 bpf_prog_free +EXPORT_SYMBOL_GPL vmlinux 0xb34edc2e ip6_append_data +EXPORT_SYMBOL_GPL vmlinux 0xb355ebe5 pm_generic_thaw +EXPORT_SYMBOL_GPL vmlinux 0xb380562e power_supply_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0xb3a41e26 hwmon_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xb3cc5706 mbox_chan_received_data +EXPORT_SYMBOL_GPL vmlinux 0xb3cd41e2 kobject_move +EXPORT_SYMBOL_GPL vmlinux 0xb3d20f5e regulator_get_current_limit +EXPORT_SYMBOL_GPL vmlinux 0xb3d4fae7 put_device +EXPORT_SYMBOL_GPL vmlinux 0xb3e5794e usb_poison_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0xb3e8b2f0 dev_pm_opp_add +EXPORT_SYMBOL_GPL vmlinux 0xb3f4e77c __mmu_notifier_invalidate_range_start +EXPORT_SYMBOL_GPL vmlinux 0xb3f554ea led_classdev_suspend +EXPORT_SYMBOL_GPL vmlinux 0xb404513a cpuidle_register_driver +EXPORT_SYMBOL_GPL vmlinux 0xb4296fa8 blk_queue_flush +EXPORT_SYMBOL_GPL vmlinux 0xb429abc2 __irq_set_handler +EXPORT_SYMBOL_GPL vmlinux 0xb44105f0 rt_mutex_lock_interruptible +EXPORT_SYMBOL_GPL vmlinux 0xb457ce74 fixed_phy_register +EXPORT_SYMBOL_GPL vmlinux 0xb4592469 acpi_bind_one +EXPORT_SYMBOL_GPL vmlinux 0xb46af994 gen_pool_size +EXPORT_SYMBOL_GPL vmlinux 0xb480ad54 usb_create_hcd +EXPORT_SYMBOL_GPL vmlinux 0xb49fa606 pm_generic_suspend_noirq +EXPORT_SYMBOL_GPL vmlinux 0xb4b97c90 pvclock_gtod_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xb4cf45c2 transport_configure_device +EXPORT_SYMBOL_GPL vmlinux 0xb4e14553 gnttab_query_foreign_access +EXPORT_SYMBOL_GPL vmlinux 0xb4ea7cf7 kgdb_connected +EXPORT_SYMBOL_GPL vmlinux 0xb4f4a312 pcc_mbox_request_channel +EXPORT_SYMBOL_GPL vmlinux 0xb50fb875 crypto_register_template +EXPORT_SYMBOL_GPL vmlinux 0xb51fbd64 edac_op_state +EXPORT_SYMBOL_GPL vmlinux 0xb521721f aead_register_instance +EXPORT_SYMBOL_GPL vmlinux 0xb52cb396 usb_hcd_check_unlink_urb +EXPORT_SYMBOL_GPL vmlinux 0xb53620d1 pci_vpd_find_info_keyword +EXPORT_SYMBOL_GPL vmlinux 0xb54099bc ata_sas_port_resume +EXPORT_SYMBOL_GPL vmlinux 0xb56ec38d of_dma_xlate_by_chan_id +EXPORT_SYMBOL_GPL vmlinux 0xb56f8a45 efivar_entry_remove +EXPORT_SYMBOL_GPL vmlinux 0xb5848bae __iowrite32_copy +EXPORT_SYMBOL_GPL vmlinux 0xb58dcfa2 synchronize_sched_expedited +EXPORT_SYMBOL_GPL vmlinux 0xb595cdf8 pci_bus_add_device +EXPORT_SYMBOL_GPL vmlinux 0xb59bf7b9 split_page +EXPORT_SYMBOL_GPL vmlinux 0xb5a0e11e lpddr2_jedec_addressing_table +EXPORT_SYMBOL_GPL vmlinux 0xb5a1cdba kvm_vcpu_read_guest_atomic +EXPORT_SYMBOL_GPL vmlinux 0xb5bc809d wm8350_read_auxadc +EXPORT_SYMBOL_GPL vmlinux 0xb5c4bd90 tty_mode_ioctl +EXPORT_SYMBOL_GPL vmlinux 0xb5e959c8 sata_port_ops +EXPORT_SYMBOL_GPL vmlinux 0xb5f17edf perf_register_guest_info_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xb6137669 rtc_update_irq +EXPORT_SYMBOL_GPL vmlinux 0xb6230f1f gnttab_grant_foreign_access +EXPORT_SYMBOL_GPL vmlinux 0xb6261484 register_die_notifier +EXPORT_SYMBOL_GPL vmlinux 0xb630977b pm_generic_suspend +EXPORT_SYMBOL_GPL vmlinux 0xb635d147 dev_attr_em_message_type +EXPORT_SYMBOL_GPL vmlinux 0xb66421b2 acpi_str_to_uuid +EXPORT_SYMBOL_GPL vmlinux 0xb6693982 kvm_gfn_to_hva_cache_init +EXPORT_SYMBOL_GPL vmlinux 0xb66b0992 perf_pmu_register +EXPORT_SYMBOL_GPL vmlinux 0xb69158b4 usb_put_phy +EXPORT_SYMBOL_GPL vmlinux 0xb696f800 dax_clear_blocks +EXPORT_SYMBOL_GPL vmlinux 0xb6aeb661 ata_id_c_string +EXPORT_SYMBOL_GPL vmlinux 0xb6e6d99d clk_disable +EXPORT_SYMBOL_GPL vmlinux 0xb71dec96 pm_runtime_set_memalloc_noio +EXPORT_SYMBOL_GPL vmlinux 0xb7329c06 clk_set_phase +EXPORT_SYMBOL_GPL vmlinux 0xb73b740a trace_print_bitmask_seq +EXPORT_SYMBOL_GPL vmlinux 0xb747b86d blk_update_request +EXPORT_SYMBOL_GPL vmlinux 0xb76727c2 md_stop_writes +EXPORT_SYMBOL_GPL vmlinux 0xb773d060 ata_sff_queue_pio_task +EXPORT_SYMBOL_GPL vmlinux 0xb7815073 power_supply_get_property +EXPORT_SYMBOL_GPL vmlinux 0xb7922ee1 of_usb_get_maximum_speed +EXPORT_SYMBOL_GPL vmlinux 0xb7b7f3b9 xfrm_output_resume +EXPORT_SYMBOL_GPL vmlinux 0xb7d82d05 phy_put +EXPORT_SYMBOL_GPL vmlinux 0xb7e6dcdd pci_scan_child_bus +EXPORT_SYMBOL_GPL vmlinux 0xb7f187e5 dm_path_uevent +EXPORT_SYMBOL_GPL vmlinux 0xb7f764e7 rdev_get_id +EXPORT_SYMBOL_GPL vmlinux 0xb7f77027 rtc_tm_to_ktime +EXPORT_SYMBOL_GPL vmlinux 0xb7fa00cf fat_getattr +EXPORT_SYMBOL_GPL vmlinux 0xb8117ac2 blk_mq_freeze_queue +EXPORT_SYMBOL_GPL vmlinux 0xb851f649 usb_hcd_poll_rh_status +EXPORT_SYMBOL_GPL vmlinux 0xb8887643 inet_csk_compat_setsockopt +EXPORT_SYMBOL_GPL vmlinux 0xb8aa310c irq_find_host +EXPORT_SYMBOL_GPL vmlinux 0xb8cd3a7f nf_logger_put +EXPORT_SYMBOL_GPL vmlinux 0xb8eef49e ahash_register_instance +EXPORT_SYMBOL_GPL vmlinux 0xb8f52f16 ata_do_set_mode +EXPORT_SYMBOL_GPL vmlinux 0xb903674c scatterwalk_map_and_copy +EXPORT_SYMBOL_GPL vmlinux 0xb9067c6f usb_choose_configuration +EXPORT_SYMBOL_GPL vmlinux 0xb90df335 pci_enable_pri +EXPORT_SYMBOL_GPL vmlinux 0xb917b6d7 return_address +EXPORT_SYMBOL_GPL vmlinux 0xb91e06c4 irq_domain_xlate_onetwocell +EXPORT_SYMBOL_GPL vmlinux 0xb92cf1d4 of_clk_src_onecell_get +EXPORT_SYMBOL_GPL vmlinux 0xb94709e2 crypto_drop_spawn +EXPORT_SYMBOL_GPL vmlinux 0xb957ec95 sock_gen_put +EXPORT_SYMBOL_GPL vmlinux 0xb9844632 inet_csk_get_port +EXPORT_SYMBOL_GPL vmlinux 0xb98731bc acpi_dev_suspend_late +EXPORT_SYMBOL_GPL vmlinux 0xb99d5837 xenbus_read +EXPORT_SYMBOL_GPL vmlinux 0xb9a01da5 ata_pci_device_do_suspend +EXPORT_SYMBOL_GPL vmlinux 0xb9aca04f thermal_cooling_device_register +EXPORT_SYMBOL_GPL vmlinux 0xb9b82ac6 simple_attr_open +EXPORT_SYMBOL_GPL vmlinux 0xb9b9df41 usb_amd_dev_put +EXPORT_SYMBOL_GPL vmlinux 0xb9bd5339 __blk_end_request_err +EXPORT_SYMBOL_GPL vmlinux 0xb9c425de register_syscore_ops +EXPORT_SYMBOL_GPL vmlinux 0xb9d025c9 llist_del_first +EXPORT_SYMBOL_GPL vmlinux 0xb9d8cacc sata_scr_valid +EXPORT_SYMBOL_GPL vmlinux 0xb9f4d942 unix_outq_len +EXPORT_SYMBOL_GPL vmlinux 0xba1ec5e6 virtqueue_get_buf +EXPORT_SYMBOL_GPL vmlinux 0xba2b7f64 cpufreq_generic_get +EXPORT_SYMBOL_GPL vmlinux 0xba30d1fc usb_interrupt_msg +EXPORT_SYMBOL_GPL vmlinux 0xba38e35f usb_alloc_coherent +EXPORT_SYMBOL_GPL vmlinux 0xba40f92e devm_phy_destroy +EXPORT_SYMBOL_GPL vmlinux 0xba4474dc platform_device_register_full +EXPORT_SYMBOL_GPL vmlinux 0xba46d3b3 dev_pm_opp_find_freq_exact +EXPORT_SYMBOL_GPL vmlinux 0xba5fa29c shash_ahash_digest +EXPORT_SYMBOL_GPL vmlinux 0xba621ff4 usb_init_urb +EXPORT_SYMBOL_GPL vmlinux 0xba81497f pinctrl_force_default +EXPORT_SYMBOL_GPL vmlinux 0xba8c6952 to_nd_desc +EXPORT_SYMBOL_GPL vmlinux 0xba95dcfa task_cgroup_path +EXPORT_SYMBOL_GPL vmlinux 0xbab9a9f0 maxim_charger_currents +EXPORT_SYMBOL_GPL vmlinux 0xbad282ea srcu_batches_completed +EXPORT_SYMBOL_GPL vmlinux 0xbaffa9cb device_for_each_child_reverse +EXPORT_SYMBOL_GPL vmlinux 0xbb038ce4 perf_unregister_guest_info_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xbb0ab47b debug_locks +EXPORT_SYMBOL_GPL vmlinux 0xbb0e7c8d led_trigger_blink_oneshot +EXPORT_SYMBOL_GPL vmlinux 0xbb1014d6 mbox_send_message +EXPORT_SYMBOL_GPL vmlinux 0xbb21724e wm5110_i2c_regmap +EXPORT_SYMBOL_GPL vmlinux 0xbb2f5224 extcon_get_cable_state +EXPORT_SYMBOL_GPL vmlinux 0xbb3d66b4 ata_sff_wait_ready +EXPORT_SYMBOL_GPL vmlinux 0xbb5c0b1b ata_link_online +EXPORT_SYMBOL_GPL vmlinux 0xbb6f025a asymmetric_key_generate_id +EXPORT_SYMBOL_GPL vmlinux 0xbb6f49fe show_class_attr_string +EXPORT_SYMBOL_GPL vmlinux 0xbb6f7c75 regulator_enable +EXPORT_SYMBOL_GPL vmlinux 0xbb9b25bb vring_del_virtqueue +EXPORT_SYMBOL_GPL vmlinux 0xbbb84a6a alarm_start_relative +EXPORT_SYMBOL_GPL vmlinux 0xbbb9a786 usb_hcd_pci_shutdown +EXPORT_SYMBOL_GPL vmlinux 0xbbc19d07 sb800_prefetch +EXPORT_SYMBOL_GPL vmlinux 0xbbd7dc4c dm_get_queue_limits +EXPORT_SYMBOL_GPL vmlinux 0xbc118947 pinconf_generic_dt_subnode_to_map +EXPORT_SYMBOL_GPL vmlinux 0xbc12324f key_type_trusted +EXPORT_SYMBOL_GPL vmlinux 0xbc2acda9 vchan_dma_desc_free_list +EXPORT_SYMBOL_GPL vmlinux 0xbc371e60 md_stop +EXPORT_SYMBOL_GPL vmlinux 0xbc47fd49 __tracepoint_detach_device_from_domain +EXPORT_SYMBOL_GPL vmlinux 0xbc5b9920 mbox_free_channel +EXPORT_SYMBOL_GPL vmlinux 0xbc674e18 spi_async_locked +EXPORT_SYMBOL_GPL vmlinux 0xbc7f5dc7 blkcg_policy_unregister +EXPORT_SYMBOL_GPL vmlinux 0xbcac6160 pm_qos_remove_notifier +EXPORT_SYMBOL_GPL vmlinux 0xbcdd5b99 iommu_group_set_name +EXPORT_SYMBOL_GPL vmlinux 0xbd0bac52 dma_buf_vunmap +EXPORT_SYMBOL_GPL vmlinux 0xbd26c4c3 usb_disable_xhci_ports +EXPORT_SYMBOL_GPL vmlinux 0xbd362bd6 of_get_phy_mode +EXPORT_SYMBOL_GPL vmlinux 0xbd37df6c __efivar_entry_delete +EXPORT_SYMBOL_GPL vmlinux 0xbd3fe1e3 disable_hardirq +EXPORT_SYMBOL_GPL vmlinux 0xbd5cb8b9 ring_buffer_resize +EXPORT_SYMBOL_GPL vmlinux 0xbd671048 __alloc_percpu_gfp +EXPORT_SYMBOL_GPL vmlinux 0xbd6d214a cpci_hp_unregister_bus +EXPORT_SYMBOL_GPL vmlinux 0xbd820eb9 usb_hub_find_child +EXPORT_SYMBOL_GPL vmlinux 0xbd88a975 dma_buf_fd +EXPORT_SYMBOL_GPL vmlinux 0xbd9f1e1e ata_sas_port_stop +EXPORT_SYMBOL_GPL vmlinux 0xbdb31844 virtqueue_add_outbuf +EXPORT_SYMBOL_GPL vmlinux 0xbdb31986 amba_apb_device_add +EXPORT_SYMBOL_GPL vmlinux 0xbdd295f0 trace_vprintk +EXPORT_SYMBOL_GPL vmlinux 0xbdd2f42a rcu_bh_force_quiescent_state +EXPORT_SYMBOL_GPL vmlinux 0xbdde5348 verify_signature +EXPORT_SYMBOL_GPL vmlinux 0xbdf2c67c filter_check_discard +EXPORT_SYMBOL_GPL vmlinux 0xbe1887e4 ata_unpack_xfermask +EXPORT_SYMBOL_GPL vmlinux 0xbe280f7a ata_sff_exec_command +EXPORT_SYMBOL_GPL vmlinux 0xbe4d5693 kvm_write_guest_page +EXPORT_SYMBOL_GPL vmlinux 0xbe5ce112 crypto_register_algs +EXPORT_SYMBOL_GPL vmlinux 0xbe65f941 gov_queue_work +EXPORT_SYMBOL_GPL vmlinux 0xbe68653d ata_sff_lost_interrupt +EXPORT_SYMBOL_GPL vmlinux 0xbe687e88 wake_up_all_idle_cpus +EXPORT_SYMBOL_GPL vmlinux 0xbe8cd105 perf_event_disable +EXPORT_SYMBOL_GPL vmlinux 0xbe96dfd8 of_reconfig_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0xbea5ff1e static_key_initialized +EXPORT_SYMBOL_GPL vmlinux 0xbeade8f8 power_supply_notifier +EXPORT_SYMBOL_GPL vmlinux 0xbeaf49a9 dev_pm_opp_find_freq_ceil +EXPORT_SYMBOL_GPL vmlinux 0xbebd668d blk_rq_check_limits +EXPORT_SYMBOL_GPL vmlinux 0xbece7572 pci_ats_queue_depth +EXPORT_SYMBOL_GPL vmlinux 0xbee21107 dm_internal_suspend_noflush +EXPORT_SYMBOL_GPL vmlinux 0xbee6c7b5 bdev_write_page +EXPORT_SYMBOL_GPL vmlinux 0xbef38ea2 shash_attr_alg +EXPORT_SYMBOL_GPL vmlinux 0xbef9962d relay_close +EXPORT_SYMBOL_GPL vmlinux 0xbf041102 register_vt_notifier +EXPORT_SYMBOL_GPL vmlinux 0xbf169f41 kvm_vcpu_uninit +EXPORT_SYMBOL_GPL vmlinux 0xbf2de319 page_cache_sync_readahead +EXPORT_SYMBOL_GPL vmlinux 0xbf5281c3 tty_ldisc_deref +EXPORT_SYMBOL_GPL vmlinux 0xbf89676a ata_do_eh +EXPORT_SYMBOL_GPL vmlinux 0xbf929912 find_module +EXPORT_SYMBOL_GPL vmlinux 0xbf9e4cfb dev_pm_qos_remove_notifier +EXPORT_SYMBOL_GPL vmlinux 0xbfa18a5a vfs_removexattr +EXPORT_SYMBOL_GPL vmlinux 0xbfa843d0 skb_complete_tx_timestamp +EXPORT_SYMBOL_GPL vmlinux 0xbfb1db41 ptp_classify_raw +EXPORT_SYMBOL_GPL vmlinux 0xbfbac715 tty_buffer_set_limit +EXPORT_SYMBOL_GPL vmlinux 0xbfbc5434 pciserial_resume_ports +EXPORT_SYMBOL_GPL vmlinux 0xbfc0b16a raw_seq_open +EXPORT_SYMBOL_GPL vmlinux 0xbfc5b7e0 ipv6_dup_options +EXPORT_SYMBOL_GPL vmlinux 0xbfd03d33 unregister_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0xbfe1ccdc inet_csk_reqsk_queue_hash_add +EXPORT_SYMBOL_GPL vmlinux 0xbfe5616d tick_broadcast_oneshot_control +EXPORT_SYMBOL_GPL vmlinux 0xbfecd19a tty_standard_install +EXPORT_SYMBOL_GPL vmlinux 0xbffa18bd scsi_internal_device_unblock +EXPORT_SYMBOL_GPL vmlinux 0xbffde8ec compat_alloc_user_space +EXPORT_SYMBOL_GPL vmlinux 0xc00915cd netdev_rx_handler_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc042169d wm831x_device_shutdown +EXPORT_SYMBOL_GPL vmlinux 0xc04b21bd acpi_os_unmap_iomem +EXPORT_SYMBOL_GPL vmlinux 0xc0507448 virtqueue_enable_cb_prepare +EXPORT_SYMBOL_GPL vmlinux 0xc05efb84 i2c_new_probed_device +EXPORT_SYMBOL_GPL vmlinux 0xc08647ff ring_buffer_bytes_cpu +EXPORT_SYMBOL_GPL vmlinux 0xc0900fcf acpi_os_get_iomem +EXPORT_SYMBOL_GPL vmlinux 0xc0a4e404 unregister_ftrace_function +EXPORT_SYMBOL_GPL vmlinux 0xc0a7eaf6 pci_user_write_config_word +EXPORT_SYMBOL_GPL vmlinux 0xc0a96e14 rcu_gp_is_expedited +EXPORT_SYMBOL_GPL vmlinux 0xc0bede70 bmp085_probe +EXPORT_SYMBOL_GPL vmlinux 0xc0c35cdc ata_scsi_port_error_handler +EXPORT_SYMBOL_GPL vmlinux 0xc0d26387 kmsg_dump_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc0df8865 timerqueue_add +EXPORT_SYMBOL_GPL vmlinux 0xc0e91534 irq_create_mapping +EXPORT_SYMBOL_GPL vmlinux 0xc1077798 unix_peer_get +EXPORT_SYMBOL_GPL vmlinux 0xc11b4470 balloon_stats +EXPORT_SYMBOL_GPL vmlinux 0xc1294c58 regmap_write +EXPORT_SYMBOL_GPL vmlinux 0xc13f53af class_compat_create_link +EXPORT_SYMBOL_GPL vmlinux 0xc14c2824 xenbus_probe +EXPORT_SYMBOL_GPL vmlinux 0xc14d4add devm_hwrng_register +EXPORT_SYMBOL_GPL vmlinux 0xc14fb049 regulator_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0xc155c6ab get_kernel_pages +EXPORT_SYMBOL_GPL vmlinux 0xc164642e xenbus_otherend_changed +EXPORT_SYMBOL_GPL vmlinux 0xc16caea3 add_page_wait_queue +EXPORT_SYMBOL_GPL vmlinux 0xc17515d7 usb_hcds_loaded +EXPORT_SYMBOL_GPL vmlinux 0xc18442c0 of_pci_address_to_resource +EXPORT_SYMBOL_GPL vmlinux 0xc19c5ce1 of_pci_get_host_bridge_resources +EXPORT_SYMBOL_GPL vmlinux 0xc1b83e9d dev_pm_opp_find_freq_floor +EXPORT_SYMBOL_GPL vmlinux 0xc1bc2088 regmap_update_bits_check_async +EXPORT_SYMBOL_GPL vmlinux 0xc1cfff1c handle_fasteoi_irq +EXPORT_SYMBOL_GPL vmlinux 0xc1ea24e0 md_ack_all_badblocks +EXPORT_SYMBOL_GPL vmlinux 0xc1f48022 alloc_page_buffers +EXPORT_SYMBOL_GPL vmlinux 0xc22a3091 vm_unmap_aliases +EXPORT_SYMBOL_GPL vmlinux 0xc24c6fa2 uart_insert_char +EXPORT_SYMBOL_GPL vmlinux 0xc25d3e00 mbox_request_channel_byname +EXPORT_SYMBOL_GPL vmlinux 0xc2622224 blk_queue_rq_timed_out +EXPORT_SYMBOL_GPL vmlinux 0xc26351f8 bind_evtchn_to_irq +EXPORT_SYMBOL_GPL vmlinux 0xc26ac6fb pci_create_slot +EXPORT_SYMBOL_GPL vmlinux 0xc280fb46 kdb_register +EXPORT_SYMBOL_GPL vmlinux 0xc29060f0 thermal_zone_get_temp +EXPORT_SYMBOL_GPL vmlinux 0xc2948de9 pci_add_dynid +EXPORT_SYMBOL_GPL vmlinux 0xc2bd7249 __wake_up_sync +EXPORT_SYMBOL_GPL vmlinux 0xc2ce5815 usb_find_alt_setting +EXPORT_SYMBOL_GPL vmlinux 0xc311c679 tracepoint_probe_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc32d7c70 init_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0xc341ae6d zs_map_object +EXPORT_SYMBOL_GPL vmlinux 0xc345166f ata_sff_prereset +EXPORT_SYMBOL_GPL vmlinux 0xc352cb02 atomic_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0xc3559374 locks_release_private +EXPORT_SYMBOL_GPL vmlinux 0xc357923c pm_qos_update_request +EXPORT_SYMBOL_GPL vmlinux 0xc37226a5 tpm_pcr_extend +EXPORT_SYMBOL_GPL vmlinux 0xc373361e request_firmware_direct +EXPORT_SYMBOL_GPL vmlinux 0xc385cb58 perf_num_counters +EXPORT_SYMBOL_GPL vmlinux 0xc3922f6c led_trigger_set_default +EXPORT_SYMBOL_GPL vmlinux 0xc39f4de7 da9052_disable_irq +EXPORT_SYMBOL_GPL vmlinux 0xc3afa790 sdio_writeb_readb +EXPORT_SYMBOL_GPL vmlinux 0xc403abea crypto_alloc_instance +EXPORT_SYMBOL_GPL vmlinux 0xc40900cd ata_sas_port_suspend +EXPORT_SYMBOL_GPL vmlinux 0xc428068d sata_deb_timing_long +EXPORT_SYMBOL_GPL vmlinux 0xc4328db4 pm_generic_freeze +EXPORT_SYMBOL_GPL vmlinux 0xc4374c66 regulator_set_drvdata +EXPORT_SYMBOL_GPL vmlinux 0xc4379804 fat_remove_entries +EXPORT_SYMBOL_GPL vmlinux 0xc439fb25 posix_clock_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc43db0cc devm_regmap_init_spi +EXPORT_SYMBOL_GPL vmlinux 0xc454fc7b twl_get_type +EXPORT_SYMBOL_GPL vmlinux 0xc467fa0a devm_phy_optional_get +EXPORT_SYMBOL_GPL vmlinux 0xc471c67a twl4030_audio_disable_resource +EXPORT_SYMBOL_GPL vmlinux 0xc4834014 perf_tp_event +EXPORT_SYMBOL_GPL vmlinux 0xc4889403 component_unbind_all +EXPORT_SYMBOL_GPL vmlinux 0xc48b7ccf ata_mode_string +EXPORT_SYMBOL_GPL vmlinux 0xc48d9a9b wm8997_patch +EXPORT_SYMBOL_GPL vmlinux 0xc496d635 dm_suspended +EXPORT_SYMBOL_GPL vmlinux 0xc4af45a9 devfreq_event_enable_edev +EXPORT_SYMBOL_GPL vmlinux 0xc4e5c4f9 dev_pm_qos_add_ancestor_request +EXPORT_SYMBOL_GPL vmlinux 0xc4ea8606 ata_port_freeze +EXPORT_SYMBOL_GPL vmlinux 0xc5397da6 xenbus_mkdir +EXPORT_SYMBOL_GPL vmlinux 0xc542933a timecounter_read +EXPORT_SYMBOL_GPL vmlinux 0xc54c0857 __class_register +EXPORT_SYMBOL_GPL vmlinux 0xc553340f gpiod_get_raw_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0xc561012e attribute_container_classdev_to_container +EXPORT_SYMBOL_GPL vmlinux 0xc57000a7 dma_buf_vmap +EXPORT_SYMBOL_GPL vmlinux 0xc575c737 debug_locks_off +EXPORT_SYMBOL_GPL vmlinux 0xc5846259 usb_register_device_driver +EXPORT_SYMBOL_GPL vmlinux 0xc595d1e0 cpufreq_governor_dbs +EXPORT_SYMBOL_GPL vmlinux 0xc5a1c470 fwnode_property_read_u8_array +EXPORT_SYMBOL_GPL vmlinux 0xc5a98c70 sdio_readb +EXPORT_SYMBOL_GPL vmlinux 0xc5cf90bb spi_alloc_device +EXPORT_SYMBOL_GPL vmlinux 0xc5d8d41d xhci_init_driver +EXPORT_SYMBOL_GPL vmlinux 0xc5fec0a8 thermal_zone_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc617f82c unregister_oom_notifier +EXPORT_SYMBOL_GPL vmlinux 0xc634601f ata_sff_tf_load +EXPORT_SYMBOL_GPL vmlinux 0xc63d847d ktime_get_mono_fast_ns +EXPORT_SYMBOL_GPL vmlinux 0xc64a43a2 pci_find_next_ht_capability +EXPORT_SYMBOL_GPL vmlinux 0xc65d3eed ring_buffer_entries_cpu +EXPORT_SYMBOL_GPL vmlinux 0xc66019cc xen_resume_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc66b77b1 iommu_group_set_iommudata +EXPORT_SYMBOL_GPL vmlinux 0xc67a932f posix_acl_default_xattr_handler +EXPORT_SYMBOL_GPL vmlinux 0xc67b991a dev_pm_qos_expose_latency_limit +EXPORT_SYMBOL_GPL vmlinux 0xc68528fe power_supply_set_battery_charged +EXPORT_SYMBOL_GPL vmlinux 0xc6924fc3 perf_pmu_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc69b7ee5 zs_destroy_pool +EXPORT_SYMBOL_GPL vmlinux 0xc69c0bb8 inet_csk_bind_conflict +EXPORT_SYMBOL_GPL vmlinux 0xc6a4a872 __clk_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0xc6b2869f to_of_pinfo +EXPORT_SYMBOL_GPL vmlinux 0xc6c0aba3 clk_fractional_divider_ops +EXPORT_SYMBOL_GPL vmlinux 0xc6c31baf spi_finalize_current_transfer +EXPORT_SYMBOL_GPL vmlinux 0xc6cb221f hrtimer_init_sleeper +EXPORT_SYMBOL_GPL vmlinux 0xc6e50591 disk_map_sector_rcu +EXPORT_SYMBOL_GPL vmlinux 0xc6e69663 stmpe_set_altfunc +EXPORT_SYMBOL_GPL vmlinux 0xc7002ac4 evtchn_make_refcounted +EXPORT_SYMBOL_GPL vmlinux 0xc7083a94 ata_scsi_queuecmd +EXPORT_SYMBOL_GPL vmlinux 0xc7128830 pci_stop_and_remove_bus_device_locked +EXPORT_SYMBOL_GPL vmlinux 0xc72e1233 __trace_bprintk +EXPORT_SYMBOL_GPL vmlinux 0xc733abba __pneigh_lookup +EXPORT_SYMBOL_GPL vmlinux 0xc78d8dc9 pci_intx +EXPORT_SYMBOL_GPL vmlinux 0xc79b0568 irq_set_chained_handler_and_data +EXPORT_SYMBOL_GPL vmlinux 0xc79bd0a5 pci_generic_config_read32 +EXPORT_SYMBOL_GPL vmlinux 0xc7a1840e llist_add_batch +EXPORT_SYMBOL_GPL vmlinux 0xc7c6391c mpi_set_buffer +EXPORT_SYMBOL_GPL vmlinux 0xc7dd220e led_classdev_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc7e2a5a0 hrtimer_cancel +EXPORT_SYMBOL_GPL vmlinux 0xc7e39bca ring_buffer_dropped_events_cpu +EXPORT_SYMBOL_GPL vmlinux 0xc7e5bbfd regulator_bulk_force_disable +EXPORT_SYMBOL_GPL vmlinux 0xc7e7a17e of_prop_next_u32 +EXPORT_SYMBOL_GPL vmlinux 0xc7fe69ce __of_phy_provider_register +EXPORT_SYMBOL_GPL vmlinux 0xc81519f0 arizona_of_get_named_gpio +EXPORT_SYMBOL_GPL vmlinux 0xc8301094 ata_sff_thaw +EXPORT_SYMBOL_GPL vmlinux 0xc84d7a65 regmap_get_max_register +EXPORT_SYMBOL_GPL vmlinux 0xc87c1f84 ktime_get +EXPORT_SYMBOL_GPL vmlinux 0xc8add232 ring_buffer_record_disable +EXPORT_SYMBOL_GPL vmlinux 0xc8b04a96 irq_generic_chip_ops +EXPORT_SYMBOL_GPL vmlinux 0xc8b59e27 crypto_ahash_finup +EXPORT_SYMBOL_GPL vmlinux 0xc8d42a2f irq_setup_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0xc8d7ed44 get_current_tty +EXPORT_SYMBOL_GPL vmlinux 0xc8de802f cn_netlink_send +EXPORT_SYMBOL_GPL vmlinux 0xc91277a1 kgdb_schedule_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0xc9415f27 mm_kobj +EXPORT_SYMBOL_GPL vmlinux 0xc944f4d2 regmap_reinit_cache +EXPORT_SYMBOL_GPL vmlinux 0xc9561772 fb_destroy_modelist +EXPORT_SYMBOL_GPL vmlinux 0xc959054f sdio_claim_host +EXPORT_SYMBOL_GPL vmlinux 0xc95ccebc cpufreq_generic_attr +EXPORT_SYMBOL_GPL vmlinux 0xc9641b48 visitor32 +EXPORT_SYMBOL_GPL vmlinux 0xc97178f4 dev_set_name +EXPORT_SYMBOL_GPL vmlinux 0xc97d1140 cpufreq_cooling_get_level +EXPORT_SYMBOL_GPL vmlinux 0xc9a55616 kvm_vcpu_gfn_to_hva +EXPORT_SYMBOL_GPL vmlinux 0xc9a5ca97 tty_perform_flush +EXPORT_SYMBOL_GPL vmlinux 0xc9ab6547 user_describe +EXPORT_SYMBOL_GPL vmlinux 0xc9b1c154 usb_unpoison_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0xc9b6003a shash_ahash_finup +EXPORT_SYMBOL_GPL vmlinux 0xc9b96ba1 tty_ldisc_ref +EXPORT_SYMBOL_GPL vmlinux 0xc9cf332b debugfs_create_regset32 +EXPORT_SYMBOL_GPL vmlinux 0xc9d39093 devres_close_group +EXPORT_SYMBOL_GPL vmlinux 0xc9ec4e21 free_percpu +EXPORT_SYMBOL_GPL vmlinux 0xca214bda thermal_zone_device_register +EXPORT_SYMBOL_GPL vmlinux 0xca2761e1 __crypto_alloc_tfm +EXPORT_SYMBOL_GPL vmlinux 0xca438e83 blkg_lookup_create +EXPORT_SYMBOL_GPL vmlinux 0xca490ec4 crypto_unregister_instance +EXPORT_SYMBOL_GPL vmlinux 0xca7d8764 kthread_freezable_should_stop +EXPORT_SYMBOL_GPL vmlinux 0xca81ea9a xenbus_transaction_end +EXPORT_SYMBOL_GPL vmlinux 0xca88e8d5 irq_create_of_mapping +EXPORT_SYMBOL_GPL vmlinux 0xca8bfc01 pwm_free +EXPORT_SYMBOL_GPL vmlinux 0xca8d4749 reset_controller_unregister +EXPORT_SYMBOL_GPL vmlinux 0xca8fb85f inet_hash_connect +EXPORT_SYMBOL_GPL vmlinux 0xca95ffbd flush_kthread_worker +EXPORT_SYMBOL_GPL vmlinux 0xca965b02 regulator_force_disable +EXPORT_SYMBOL_GPL vmlinux 0xcabe04de cpuidle_resume_and_unlock +EXPORT_SYMBOL_GPL vmlinux 0xcad3f1c6 generic_fh_to_parent +EXPORT_SYMBOL_GPL vmlinux 0xcae31f3e tpm2_startup +EXPORT_SYMBOL_GPL vmlinux 0xcb12bff2 __mmu_notifier_invalidate_range_end +EXPORT_SYMBOL_GPL vmlinux 0xcb15eee9 sdhci_pci_get_data +EXPORT_SYMBOL_GPL vmlinux 0xcb2fa6c5 ip6_route_lookup +EXPORT_SYMBOL_GPL vmlinux 0xcb38de72 iptunnel_xmit +EXPORT_SYMBOL_GPL vmlinux 0xcb403df1 ip_build_and_send_pkt +EXPORT_SYMBOL_GPL vmlinux 0xcb469d2b ddebug_add_module +EXPORT_SYMBOL_GPL vmlinux 0xcb555086 virtqueue_enable_cb_delayed +EXPORT_SYMBOL_GPL vmlinux 0xcb657e8c ata_dev_set_feature +EXPORT_SYMBOL_GPL vmlinux 0xcb66f01d crypto_shash_final +EXPORT_SYMBOL_GPL vmlinux 0xcb6ba1ac ata_sas_port_start +EXPORT_SYMBOL_GPL vmlinux 0xcba09f29 xfrm_audit_state_notfound +EXPORT_SYMBOL_GPL vmlinux 0xcbdb0fa3 regulator_list_hardware_vsel +EXPORT_SYMBOL_GPL vmlinux 0xcbe0ebc8 ata_sff_dma_pause +EXPORT_SYMBOL_GPL vmlinux 0xcbe56bc2 zs_get_total_pages +EXPORT_SYMBOL_GPL vmlinux 0xcbee20b2 get_cpu_iowait_time_us +EXPORT_SYMBOL_GPL vmlinux 0xcc101099 pci_reset_function +EXPORT_SYMBOL_GPL vmlinux 0xcc1e7fff crypto_find_alg +EXPORT_SYMBOL_GPL vmlinux 0xcc2c05d6 attribute_container_register +EXPORT_SYMBOL_GPL vmlinux 0xcc34fc61 srcu_init_notifier_head +EXPORT_SYMBOL_GPL vmlinux 0xcc4c171c percpu_ida_for_each_free +EXPORT_SYMBOL_GPL vmlinux 0xcc7950f1 phy_power_on +EXPORT_SYMBOL_GPL vmlinux 0xcc85fcb6 async_schedule +EXPORT_SYMBOL_GPL vmlinux 0xcc8c1728 simple_attr_read +EXPORT_SYMBOL_GPL vmlinux 0xcc8c686d netdev_set_default_ethtool_ops +EXPORT_SYMBOL_GPL vmlinux 0xcc91cfb1 devm_regulator_get_exclusive +EXPORT_SYMBOL_GPL vmlinux 0xccc0cf91 kvm_clear_guest_page +EXPORT_SYMBOL_GPL vmlinux 0xcccfb2fa sata_deb_timing_hotplug +EXPORT_SYMBOL_GPL vmlinux 0xccec16ab usb_hcd_pci_remove +EXPORT_SYMBOL_GPL vmlinux 0xcd0d4205 blk_rq_unprep_clone +EXPORT_SYMBOL_GPL vmlinux 0xcd0e001d phy_init +EXPORT_SYMBOL_GPL vmlinux 0xcd189886 ata_sff_busy_sleep +EXPORT_SYMBOL_GPL vmlinux 0xcd2337ce debugfs_remove_recursive +EXPORT_SYMBOL_GPL vmlinux 0xcd4ecfd2 xenbus_dev_resume +EXPORT_SYMBOL_GPL vmlinux 0xcd91b127 system_highpri_wq +EXPORT_SYMBOL_GPL vmlinux 0xcd974f00 rcu_all_qs +EXPORT_SYMBOL_GPL vmlinux 0xcda71f91 dma_get_required_mask +EXPORT_SYMBOL_GPL vmlinux 0xcdb6adcc ras_userspace_consumers +EXPORT_SYMBOL_GPL vmlinux 0xcdc51442 transport_add_device +EXPORT_SYMBOL_GPL vmlinux 0xcdca3691 nr_irqs +EXPORT_SYMBOL_GPL vmlinux 0xcdd99121 get_cpu_device +EXPORT_SYMBOL_GPL vmlinux 0xcddbbca2 sdhci_pci_o2_resume +EXPORT_SYMBOL_GPL vmlinux 0xcde25c86 wm831x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xcdf4ac64 tty_put_char +EXPORT_SYMBOL_GPL vmlinux 0xce1bcf85 sysfs_chmod_file +EXPORT_SYMBOL_GPL vmlinux 0xce23a091 spi_finalize_current_message +EXPORT_SYMBOL_GPL vmlinux 0xce6a9d9a trace_current_buffer_discard_commit +EXPORT_SYMBOL_GPL vmlinux 0xce6d6456 extcon_get_cable_state_ +EXPORT_SYMBOL_GPL vmlinux 0xce6db656 rcu_is_watching +EXPORT_SYMBOL_GPL vmlinux 0xce7b0329 ata_common_sdev_attrs +EXPORT_SYMBOL_GPL vmlinux 0xce885e7c usb_phy_gen_create_phy +EXPORT_SYMBOL_GPL vmlinux 0xcea4c97d pm_generic_resume +EXPORT_SYMBOL_GPL vmlinux 0xceb1f126 mpi_read_raw_data +EXPORT_SYMBOL_GPL vmlinux 0xcee1641c kgdb_unregister_nmi_console +EXPORT_SYMBOL_GPL vmlinux 0xceea76ab ata_sff_check_status +EXPORT_SYMBOL_GPL vmlinux 0xceed8c16 __set_phys_to_machine +EXPORT_SYMBOL_GPL vmlinux 0xcf3678be irq_domain_xlate_onecell +EXPORT_SYMBOL_GPL vmlinux 0xcf54ea93 async_unregister_domain +EXPORT_SYMBOL_GPL vmlinux 0xcf62f540 fwnode_property_read_string_array +EXPORT_SYMBOL_GPL vmlinux 0xcfa39eca __tracepoint_rpm_suspend +EXPORT_SYMBOL_GPL vmlinux 0xcfb5871c irq_work_queue +EXPORT_SYMBOL_GPL vmlinux 0xcfc68341 synchronize_rcu_bh +EXPORT_SYMBOL_GPL vmlinux 0xcfdbea73 crypto_enqueue_request +EXPORT_SYMBOL_GPL vmlinux 0xd00547d5 sata_scr_write +EXPORT_SYMBOL_GPL vmlinux 0xd0066ca4 usb_enable_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0xd00d6a95 get_device +EXPORT_SYMBOL_GPL vmlinux 0xd0254fec netlink_has_listeners +EXPORT_SYMBOL_GPL vmlinux 0xd026d518 HYPERVISOR_vcpu_op +EXPORT_SYMBOL_GPL vmlinux 0xd03c7700 secure_ipv4_port_ephemeral +EXPORT_SYMBOL_GPL vmlinux 0xd0458ccb xenbus_strstate +EXPORT_SYMBOL_GPL vmlinux 0xd06524ba raw_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd067d3c5 system_freezable_power_efficient_wq +EXPORT_SYMBOL_GPL vmlinux 0xd06926b8 usb_lock_device_for_reset +EXPORT_SYMBOL_GPL vmlinux 0xd06e165b mmput +EXPORT_SYMBOL_GPL vmlinux 0xd0be294f bd_link_disk_holder +EXPORT_SYMBOL_GPL vmlinux 0xd0c05159 emergency_restart +EXPORT_SYMBOL_GPL vmlinux 0xd0d750c3 btree_get_prev +EXPORT_SYMBOL_GPL vmlinux 0xd0e18800 dev_pm_qos_hide_flags +EXPORT_SYMBOL_GPL vmlinux 0xd0f63148 debugfs_create_blob +EXPORT_SYMBOL_GPL vmlinux 0xd10fc03c anon_transport_class_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd12a21ca ata_bmdma_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0xd16712f3 crypto_check_attr_type +EXPORT_SYMBOL_GPL vmlinux 0xd1829afd wakeup_source_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd1ae9011 devm_phy_get +EXPORT_SYMBOL_GPL vmlinux 0xd1cd3073 platform_device_put +EXPORT_SYMBOL_GPL vmlinux 0xd1d6e44a alarm_forward +EXPORT_SYMBOL_GPL vmlinux 0xd1ddd140 fuse_request_send +EXPORT_SYMBOL_GPL vmlinux 0xd1f2eee2 nf_logger_find_get +EXPORT_SYMBOL_GPL vmlinux 0xd1f32309 of_usb_get_dr_mode +EXPORT_SYMBOL_GPL vmlinux 0xd20bf6ba dcookie_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd217e9e6 trace_set_clr_event +EXPORT_SYMBOL_GPL vmlinux 0xd24ca1af arizona_pm_ops +EXPORT_SYMBOL_GPL vmlinux 0xd272071f bus_sort_breadthfirst +EXPORT_SYMBOL_GPL vmlinux 0xd273b1b1 __round_jiffies_up_relative +EXPORT_SYMBOL_GPL vmlinux 0xd2963304 put_pid +EXPORT_SYMBOL_GPL vmlinux 0xd2a1d8d7 input_ff_create +EXPORT_SYMBOL_GPL vmlinux 0xd2ab202f usb_scuttle_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0xd2b05bb3 cpci_hp_register_bus +EXPORT_SYMBOL_GPL vmlinux 0xd2c0a067 pwm_enable +EXPORT_SYMBOL_GPL vmlinux 0xd2d43457 usb_bulk_msg +EXPORT_SYMBOL_GPL vmlinux 0xd2edf4b7 ata_get_cmd_descript +EXPORT_SYMBOL_GPL vmlinux 0xd30688b9 md_new_event +EXPORT_SYMBOL_GPL vmlinux 0xd32a46fe md_is_badblock +EXPORT_SYMBOL_GPL vmlinux 0xd3309d84 irq_domain_associate +EXPORT_SYMBOL_GPL vmlinux 0xd33ada8b cci_probed +EXPORT_SYMBOL_GPL vmlinux 0xd3437d82 cpufreq_freq_attr_scaling_boost_freqs +EXPORT_SYMBOL_GPL vmlinux 0xd368f604 xfrm_audit_policy_delete +EXPORT_SYMBOL_GPL vmlinux 0xd36a6383 aead_geniv_alloc +EXPORT_SYMBOL_GPL vmlinux 0xd37f9fb8 pm_runtime_irq_safe +EXPORT_SYMBOL_GPL vmlinux 0xd3800c78 ata_pci_bmdma_prepare_host +EXPORT_SYMBOL_GPL vmlinux 0xd384b0c9 fb_deferred_io_open +EXPORT_SYMBOL_GPL vmlinux 0xd38e0a91 usb_mon_register +EXPORT_SYMBOL_GPL vmlinux 0xd38e8eb8 part_round_stats +EXPORT_SYMBOL_GPL vmlinux 0xd3a64a34 bus_rescan_devices +EXPORT_SYMBOL_GPL vmlinux 0xd3b08708 pci_disable_pcie_error_reporting +EXPORT_SYMBOL_GPL vmlinux 0xd3b52695 thermal_zone_get_zone_by_name +EXPORT_SYMBOL_GPL vmlinux 0xd3c5c574 devres_release_group +EXPORT_SYMBOL_GPL vmlinux 0xd3fcddea rtc_initialize_alarm +EXPORT_SYMBOL_GPL vmlinux 0xd4034828 system_freezable_wq +EXPORT_SYMBOL_GPL vmlinux 0xd40c8b7c kernfs_path +EXPORT_SYMBOL_GPL vmlinux 0xd41f39ff bmp085_remove +EXPORT_SYMBOL_GPL vmlinux 0xd41fffab interval_tree_iter_first +EXPORT_SYMBOL_GPL vmlinux 0xd42c98fc blkg_conf_finish +EXPORT_SYMBOL_GPL vmlinux 0xd4487fd5 snprint_stack_trace +EXPORT_SYMBOL_GPL vmlinux 0xd44a5eac kgdb_register_nmi_console +EXPORT_SYMBOL_GPL vmlinux 0xd463caa0 btree_destroy +EXPORT_SYMBOL_GPL vmlinux 0xd49b8f81 usb_wait_anchor_empty_timeout +EXPORT_SYMBOL_GPL vmlinux 0xd4b87421 efivar_entry_size +EXPORT_SYMBOL_GPL vmlinux 0xd4c14632 system_unbound_wq +EXPORT_SYMBOL_GPL vmlinux 0xd4c7f0c0 xen_swiotlb_sync_single_for_device +EXPORT_SYMBOL_GPL vmlinux 0xd52a0ee4 device_property_read_u16_array +EXPORT_SYMBOL_GPL vmlinux 0xd53c0e06 devm_spi_register_master +EXPORT_SYMBOL_GPL vmlinux 0xd545bdf5 bitmap_resize +EXPORT_SYMBOL_GPL vmlinux 0xd54aaac9 sock_diag_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd5575d60 fuse_file_poll +EXPORT_SYMBOL_GPL vmlinux 0xd55ad93b iommu_group_get_iommudata +EXPORT_SYMBOL_GPL vmlinux 0xd56b5f64 ktime_get_ts64 +EXPORT_SYMBOL_GPL vmlinux 0xd56cde91 usb_control_msg +EXPORT_SYMBOL_GPL vmlinux 0xd5715313 of_irq_parse_and_map_pci +EXPORT_SYMBOL_GPL vmlinux 0xd5ad8d7a xenbus_probe_devices +EXPORT_SYMBOL_GPL vmlinux 0xd5ba0e64 xenbus_free_evtchn +EXPORT_SYMBOL_GPL vmlinux 0xd5bd7dac ring_buffer_record_enable_cpu +EXPORT_SYMBOL_GPL vmlinux 0xd5c127c6 acpi_kobj +EXPORT_SYMBOL_GPL vmlinux 0xd5c36c40 __tracepoint_attach_device_to_domain +EXPORT_SYMBOL_GPL vmlinux 0xd5c56053 regulator_set_voltage_time +EXPORT_SYMBOL_GPL vmlinux 0xd5fdc595 rtc_read_time +EXPORT_SYMBOL_GPL vmlinux 0xd60c99b5 rcu_batches_completed_bh +EXPORT_SYMBOL_GPL vmlinux 0xd60f8c8a i2c_unlock_adapter +EXPORT_SYMBOL_GPL vmlinux 0xd61bfe05 relay_file_operations +EXPORT_SYMBOL_GPL vmlinux 0xd62dd737 debugfs_create_dir +EXPORT_SYMBOL_GPL vmlinux 0xd62e7fa6 pci_check_and_unmask_intx +EXPORT_SYMBOL_GPL vmlinux 0xd62eb0a8 ata_bmdma_setup +EXPORT_SYMBOL_GPL vmlinux 0xd67364f7 eventfd_ctx_fdget +EXPORT_SYMBOL_GPL vmlinux 0xd6823ae1 devm_acpi_dma_controller_register +EXPORT_SYMBOL_GPL vmlinux 0xd6930980 tps65912_reg_read +EXPORT_SYMBOL_GPL vmlinux 0xd6a29719 sdio_align_size +EXPORT_SYMBOL_GPL vmlinux 0xd6aa4386 xen_swiotlb_sync_sg_for_device +EXPORT_SYMBOL_GPL vmlinux 0xd6ddbded pm_runtime_set_autosuspend_delay +EXPORT_SYMBOL_GPL vmlinux 0xd6e000fa wm8400_reset_codec_reg_cache +EXPORT_SYMBOL_GPL vmlinux 0xd6ef6e57 user_destroy +EXPORT_SYMBOL_GPL vmlinux 0xd705b4c7 schedule_hrtimeout +EXPORT_SYMBOL_GPL vmlinux 0xd72feba2 xenbus_read_driver_state +EXPORT_SYMBOL_GPL vmlinux 0xd7369a5f dev_pm_clear_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0xd7399d2a efivar_entry_iter_end +EXPORT_SYMBOL_GPL vmlinux 0xd739fbef rq_flush_dcache_pages +EXPORT_SYMBOL_GPL vmlinux 0xd750dddf usb_hcd_link_urb_to_ep +EXPORT_SYMBOL_GPL vmlinux 0xd7566bcc pl08x_filter_id +EXPORT_SYMBOL_GPL vmlinux 0xd768e985 regulator_has_full_constraints +EXPORT_SYMBOL_GPL vmlinux 0xd77c0bc8 klist_remove +EXPORT_SYMBOL_GPL vmlinux 0xd7854af0 alarm_start +EXPORT_SYMBOL_GPL vmlinux 0xd7906dc0 acpi_bus_trim +EXPORT_SYMBOL_GPL vmlinux 0xd792294d klist_add_tail +EXPORT_SYMBOL_GPL vmlinux 0xd7b0f742 of_dma_simple_xlate +EXPORT_SYMBOL_GPL vmlinux 0xd7d79132 put_online_cpus +EXPORT_SYMBOL_GPL vmlinux 0xd809f10d ping_seq_next +EXPORT_SYMBOL_GPL vmlinux 0xd81a66e0 pci_user_read_config_dword +EXPORT_SYMBOL_GPL vmlinux 0xd81de62c ring_buffer_record_enable +EXPORT_SYMBOL_GPL vmlinux 0xd820c283 eventfd_ctx_remove_wait_queue +EXPORT_SYMBOL_GPL vmlinux 0xd839ca7f ip6_dst_lookup +EXPORT_SYMBOL_GPL vmlinux 0xd83d3f94 virtqueue_add_inbuf +EXPORT_SYMBOL_GPL vmlinux 0xd85055b7 xen_swiotlb_set_dma_mask +EXPORT_SYMBOL_GPL vmlinux 0xd86a8111 eventfd_ctx_fileget +EXPORT_SYMBOL_GPL vmlinux 0xd87601cc ring_buffer_unlock_commit +EXPORT_SYMBOL_GPL vmlinux 0xd87fc0a0 usb_amd_prefetch_quirk +EXPORT_SYMBOL_GPL vmlinux 0xd88ff418 of_free_opp_table +EXPORT_SYMBOL_GPL vmlinux 0xd89d3eec __inet_hash_nolisten +EXPORT_SYMBOL_GPL vmlinux 0xd89eab6b __blk_put_request +EXPORT_SYMBOL_GPL vmlinux 0xd8a49959 fat_free_clusters +EXPORT_SYMBOL_GPL vmlinux 0xd8a63375 sysfs_create_group +EXPORT_SYMBOL_GPL vmlinux 0xd8ac72cd pwm_put +EXPORT_SYMBOL_GPL vmlinux 0xd8ad2355 spi_busnum_to_master +EXPORT_SYMBOL_GPL vmlinux 0xd8c0ee96 dev_coredumpm +EXPORT_SYMBOL_GPL vmlinux 0xd8c62b0b dax_zero_page_range +EXPORT_SYMBOL_GPL vmlinux 0xd8c9f66d ref_module +EXPORT_SYMBOL_GPL vmlinux 0xd8dfefff pinctrl_get +EXPORT_SYMBOL_GPL vmlinux 0xd90033f9 fwnode_property_read_u32_array +EXPORT_SYMBOL_GPL vmlinux 0xd914f549 param_set_bool_enable_only +EXPORT_SYMBOL_GPL vmlinux 0xd92f4bef devres_remove +EXPORT_SYMBOL_GPL vmlinux 0xd93dbb22 pci_check_and_mask_intx +EXPORT_SYMBOL_GPL vmlinux 0xd942d353 ring_buffer_record_off +EXPORT_SYMBOL_GPL vmlinux 0xd94aa457 display_timings_release +EXPORT_SYMBOL_GPL vmlinux 0xd96babb4 interval_tree_iter_next +EXPORT_SYMBOL_GPL vmlinux 0xd9740e50 __skb_tstamp_tx +EXPORT_SYMBOL_GPL vmlinux 0xd98da4bb netlink_add_tap +EXPORT_SYMBOL_GPL vmlinux 0xd98ec6d3 ahash_free_instance +EXPORT_SYMBOL_GPL vmlinux 0xd999c2e2 pinctrl_add_gpio_range +EXPORT_SYMBOL_GPL vmlinux 0xd9d3fad0 of_address_to_resource +EXPORT_SYMBOL_GPL vmlinux 0xd9eb70c7 driver_for_each_device +EXPORT_SYMBOL_GPL vmlinux 0xd9ecb670 ring_buffer_overruns +EXPORT_SYMBOL_GPL vmlinux 0xd9f7e5e0 phy_get +EXPORT_SYMBOL_GPL vmlinux 0xd9fa98fc of_cpufreq_cooling_register +EXPORT_SYMBOL_GPL vmlinux 0xda2904c6 pci_destroy_slot +EXPORT_SYMBOL_GPL vmlinux 0xda55061a ipv6_stub +EXPORT_SYMBOL_GPL vmlinux 0xda55425d blkcipher_aead_walk_virt_block +EXPORT_SYMBOL_GPL vmlinux 0xda5c7c4a sdhci_pci_o2_probe +EXPORT_SYMBOL_GPL vmlinux 0xda6b2458 kvm_write_guest +EXPORT_SYMBOL_GPL vmlinux 0xda93d929 ata_ehi_push_desc +EXPORT_SYMBOL_GPL vmlinux 0xda991c59 crypto_register_pcomp +EXPORT_SYMBOL_GPL vmlinux 0xdaa06dc1 acpi_lpat_raw_to_temp +EXPORT_SYMBOL_GPL vmlinux 0xdad3fd77 of_irq_to_resource_table +EXPORT_SYMBOL_GPL vmlinux 0xdae715e0 videomode_from_timing +EXPORT_SYMBOL_GPL vmlinux 0xdae823a8 blkg_conf_prep +EXPORT_SYMBOL_GPL vmlinux 0xdaed3073 timerqueue_del +EXPORT_SYMBOL_GPL vmlinux 0xdaf4dfb3 fb_mode_option +EXPORT_SYMBOL_GPL vmlinux 0xdb13f583 devm_regmap_init +EXPORT_SYMBOL_GPL vmlinux 0xdb25d06e udp4_hwcsum +EXPORT_SYMBOL_GPL vmlinux 0xdb3066b0 dm_get_table_device +EXPORT_SYMBOL_GPL vmlinux 0xdb433f1f ata_pci_sff_prepare_host +EXPORT_SYMBOL_GPL vmlinux 0xdb4e33f4 ata_bmdma_dumb_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0xdb63a944 acpi_lpat_get_conversion_table +EXPORT_SYMBOL_GPL vmlinux 0xdb8a1b3f usermodehelper_read_trylock +EXPORT_SYMBOL_GPL vmlinux 0xdb916fd0 trace_seq_putmem +EXPORT_SYMBOL_GPL vmlinux 0xdba17730 class_interface_unregister +EXPORT_SYMBOL_GPL vmlinux 0xdba4befd nd_mapping_attribute_group +EXPORT_SYMBOL_GPL vmlinux 0xdbb146a4 skb_segment +EXPORT_SYMBOL_GPL vmlinux 0xdbb8fdd2 dev_attr_sw_activity +EXPORT_SYMBOL_GPL vmlinux 0xdbce390a pci_assign_unassigned_bridge_resources +EXPORT_SYMBOL_GPL vmlinux 0xdbd4784f of_clk_set_defaults +EXPORT_SYMBOL_GPL vmlinux 0xdbf114ed led_trigger_set +EXPORT_SYMBOL_GPL vmlinux 0xdbf6ee03 regulator_map_voltage_iterate +EXPORT_SYMBOL_GPL vmlinux 0xdbf77e44 sock_diag_save_cookie +EXPORT_SYMBOL_GPL vmlinux 0xdbf7cb70 mpi_get_nbits +EXPORT_SYMBOL_GPL vmlinux 0xdc13e511 ping_recvmsg +EXPORT_SYMBOL_GPL vmlinux 0xdc14a211 xen_hvm_evtchn_do_upcall +EXPORT_SYMBOL_GPL vmlinux 0xdc1cfce5 bus_remove_file +EXPORT_SYMBOL_GPL vmlinux 0xdc29536f sdio_f0_readb +EXPORT_SYMBOL_GPL vmlinux 0xdc2c9a6b gpiod_cansleep +EXPORT_SYMBOL_GPL vmlinux 0xdc366614 virtqueue_get_used +EXPORT_SYMBOL_GPL vmlinux 0xdc39abd6 mmc_get_ext_csd +EXPORT_SYMBOL_GPL vmlinux 0xdc53b9c3 crypto_alloc_instance2 +EXPORT_SYMBOL_GPL vmlinux 0xdc6699cb acpi_dev_free_resource_list +EXPORT_SYMBOL_GPL vmlinux 0xdc825d6c usb_amd_quirk_pll_disable +EXPORT_SYMBOL_GPL vmlinux 0xdc8820b2 dma_buf_export +EXPORT_SYMBOL_GPL vmlinux 0xdc97af2e syscore_suspend +EXPORT_SYMBOL_GPL vmlinux 0xdc9fa232 raw_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0xdcbfc49e task_user_regset_view +EXPORT_SYMBOL_GPL vmlinux 0xdce3ddd1 pinctrl_utils_reserve_map +EXPORT_SYMBOL_GPL vmlinux 0xdcee4b33 security_inode_setattr +EXPORT_SYMBOL_GPL vmlinux 0xdcfd65ba class_dev_iter_next +EXPORT_SYMBOL_GPL vmlinux 0xdd0be7b7 crypto_alg_mod_lookup +EXPORT_SYMBOL_GPL vmlinux 0xdd0d9eca regulator_get_linear_step +EXPORT_SYMBOL_GPL vmlinux 0xdd11d047 pci_enable_pasid +EXPORT_SYMBOL_GPL vmlinux 0xdd145b0b transport_class_unregister +EXPORT_SYMBOL_GPL vmlinux 0xdd17ffec trace_clock +EXPORT_SYMBOL_GPL vmlinux 0xdd1bbd32 iommu_domain_free +EXPORT_SYMBOL_GPL vmlinux 0xdd2efc0f ring_buffer_reset_cpu +EXPORT_SYMBOL_GPL vmlinux 0xdd391eff profile_event_unregister +EXPORT_SYMBOL_GPL vmlinux 0xdd3d5139 amba_device_put +EXPORT_SYMBOL_GPL vmlinux 0xdd57e2b5 percpu_ref_exit +EXPORT_SYMBOL_GPL vmlinux 0xdd5bdf72 bmp085_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0xdd77a661 tty_port_install +EXPORT_SYMBOL_GPL vmlinux 0xdd808ccb __xenbus_register_frontend +EXPORT_SYMBOL_GPL vmlinux 0xdd866b12 ata_std_prereset +EXPORT_SYMBOL_GPL vmlinux 0xddbeeecc pci_lock_rescan_remove +EXPORT_SYMBOL_GPL vmlinux 0xddd58dc0 ring_buffer_reset +EXPORT_SYMBOL_GPL vmlinux 0xdde09d0d pwm_can_sleep +EXPORT_SYMBOL_GPL vmlinux 0xddf45197 __fsnotify_parent +EXPORT_SYMBOL_GPL vmlinux 0xddf8c839 device_store_ulong +EXPORT_SYMBOL_GPL vmlinux 0xde0a132f dev_pm_qos_add_request +EXPORT_SYMBOL_GPL vmlinux 0xde0b3102 regmap_init_mmio_clk +EXPORT_SYMBOL_GPL vmlinux 0xde1fbc41 __page_file_index +EXPORT_SYMBOL_GPL vmlinux 0xde34c740 devm_power_supply_get_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0xde38d48a cpu_subsys +EXPORT_SYMBOL_GPL vmlinux 0xde45e1d9 blkg_stat_recursive_sum +EXPORT_SYMBOL_GPL vmlinux 0xde477859 crypto_unregister_algs +EXPORT_SYMBOL_GPL vmlinux 0xde639d5b ata_timing_compute +EXPORT_SYMBOL_GPL vmlinux 0xde6e80ac power_supply_get_by_name +EXPORT_SYMBOL_GPL vmlinux 0xde9b124a devm_rtc_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xde9e7134 bus_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xdec1bee3 xenbus_map_ring +EXPORT_SYMBOL_GPL vmlinux 0xdf0106ce device_attach +EXPORT_SYMBOL_GPL vmlinux 0xdf09a8df arizona_of_get_type +EXPORT_SYMBOL_GPL vmlinux 0xdf0f75c6 eventfd_signal +EXPORT_SYMBOL_GPL vmlinux 0xdf15799f usb_poison_urb +EXPORT_SYMBOL_GPL vmlinux 0xdf64bcd1 gpiod_to_irq +EXPORT_SYMBOL_GPL vmlinux 0xdf836194 fuse_do_open +EXPORT_SYMBOL_GPL vmlinux 0xdf8af705 phy_create_lookup +EXPORT_SYMBOL_GPL vmlinux 0xdf90e65e user_update +EXPORT_SYMBOL_GPL vmlinux 0xdf99c98a crypto_create_tfm +EXPORT_SYMBOL_GPL vmlinux 0xdf9a48f6 devm_led_classdev_unregister +EXPORT_SYMBOL_GPL vmlinux 0xdfb39d92 cpci_hp_register_controller +EXPORT_SYMBOL_GPL vmlinux 0xdfdb08c3 ipv6_opt_accepted +EXPORT_SYMBOL_GPL vmlinux 0xdfdf9c10 __tracepoint_unmap +EXPORT_SYMBOL_GPL vmlinux 0xe00781b0 pci_probe_reset_bus +EXPORT_SYMBOL_GPL vmlinux 0xe007de41 kallsyms_lookup_name +EXPORT_SYMBOL_GPL vmlinux 0xe01b966c cpufreq_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0xe01de7ef crypto_unregister_pcomp +EXPORT_SYMBOL_GPL vmlinux 0xe02eb6d0 ring_buffer_commit_overrun_cpu +EXPORT_SYMBOL_GPL vmlinux 0xe065b298 ata_sas_async_probe +EXPORT_SYMBOL_GPL vmlinux 0xe06eb678 bus_find_device +EXPORT_SYMBOL_GPL vmlinux 0xe07669fd pinctrl_find_and_add_gpio_range +EXPORT_SYMBOL_GPL vmlinux 0xe0829f43 platform_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe0a7b701 of_dma_is_coherent +EXPORT_SYMBOL_GPL vmlinux 0xe0a8453e xen_swiotlb_dma_supported +EXPORT_SYMBOL_GPL vmlinux 0xe0aaf784 ata_host_resume +EXPORT_SYMBOL_GPL vmlinux 0xe0b1c103 clk_set_max_rate +EXPORT_SYMBOL_GPL vmlinux 0xe0b94c60 __clk_mux_determine_rate_closest +EXPORT_SYMBOL_GPL vmlinux 0xe0dfe808 gpiochip_add +EXPORT_SYMBOL_GPL vmlinux 0xe0e3147c HYPERVISOR_sched_op +EXPORT_SYMBOL_GPL vmlinux 0xe1059664 alarm_init +EXPORT_SYMBOL_GPL vmlinux 0xe1193c75 ata_sff_hsm_move +EXPORT_SYMBOL_GPL vmlinux 0xe1467ba7 irq_domain_associate_many +EXPORT_SYMBOL_GPL vmlinux 0xe15234b1 tpm_calc_ordinal_duration +EXPORT_SYMBOL_GPL vmlinux 0xe1638142 crypto_ahash_walk_first +EXPORT_SYMBOL_GPL vmlinux 0xe1775ee7 dm_get_reserved_bio_based_ios +EXPORT_SYMBOL_GPL vmlinux 0xe186d48b posix_acl_create +EXPORT_SYMBOL_GPL vmlinux 0xe1902764 ping_getfrag +EXPORT_SYMBOL_GPL vmlinux 0xe1b54da8 fib_rules_register +EXPORT_SYMBOL_GPL vmlinux 0xe1d118b9 nvdimm_provider_data +EXPORT_SYMBOL_GPL vmlinux 0xe1f75622 unregister_pernet_subsys +EXPORT_SYMBOL_GPL vmlinux 0xe214a700 dma_buf_kunmap +EXPORT_SYMBOL_GPL vmlinux 0xe23be34c tps6586x_write +EXPORT_SYMBOL_GPL vmlinux 0xe23f96e1 clk_debugfs_add_file +EXPORT_SYMBOL_GPL vmlinux 0xe26bf609 wbc_account_io +EXPORT_SYMBOL_GPL vmlinux 0xe2820162 pm_generic_poweroff_noirq +EXPORT_SYMBOL_GPL vmlinux 0xe28a1d1a sdhci_pci_spt_drive_strength +EXPORT_SYMBOL_GPL vmlinux 0xe2b1e2ab of_get_nand_on_flash_bbt +EXPORT_SYMBOL_GPL vmlinux 0xe3043ff9 request_any_context_irq +EXPORT_SYMBOL_GPL vmlinux 0xe304f175 inet_peer_base_init +EXPORT_SYMBOL_GPL vmlinux 0xe3212bdf power_supply_set_property +EXPORT_SYMBOL_GPL vmlinux 0xe3315758 usb_alloc_urb +EXPORT_SYMBOL_GPL vmlinux 0xe33e675d tcp_set_state +EXPORT_SYMBOL_GPL vmlinux 0xe35c1fcb __udp6_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0xe35fa3a8 ata_sff_wait_after_reset +EXPORT_SYMBOL_GPL vmlinux 0xe384a102 usb_speed_string +EXPORT_SYMBOL_GPL vmlinux 0xe38a6b58 usb_autopm_get_interface +EXPORT_SYMBOL_GPL vmlinux 0xe3948ff4 acpi_walk_dep_device_list +EXPORT_SYMBOL_GPL vmlinux 0xe3a39a38 kvm_vcpu_yield_to +EXPORT_SYMBOL_GPL vmlinux 0xe3af4f10 xfrm_local_error +EXPORT_SYMBOL_GPL vmlinux 0xe3c9d758 serial8250_rpm_get +EXPORT_SYMBOL_GPL vmlinux 0xe3da5943 fuse_conn_put +EXPORT_SYMBOL_GPL vmlinux 0xe3ff4a5e regulator_bulk_enable +EXPORT_SYMBOL_GPL vmlinux 0xe41534ce bind_evtchn_to_irqhandler +EXPORT_SYMBOL_GPL vmlinux 0xe41b241d pinctrl_pm_select_default_state +EXPORT_SYMBOL_GPL vmlinux 0xe41f4c54 fib_rules_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe42b0a1f rtc_update_irq_enable +EXPORT_SYMBOL_GPL vmlinux 0xe42d3167 devm_regulator_bulk_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0xe4309905 syscore_resume +EXPORT_SYMBOL_GPL vmlinux 0xe44924f2 fat_dir_empty +EXPORT_SYMBOL_GPL vmlinux 0xe4689576 ktime_get_with_offset +EXPORT_SYMBOL_GPL vmlinux 0xe46bfc84 vfs_listxattr +EXPORT_SYMBOL_GPL vmlinux 0xe4773e52 pci_rescan_bus +EXPORT_SYMBOL_GPL vmlinux 0xe4971ade tracing_alloc_snapshot +EXPORT_SYMBOL_GPL vmlinux 0xe4a5c184 ip6_datagram_connect_v6_only +EXPORT_SYMBOL_GPL vmlinux 0xe4b2355b of_usb_host_tpl_support +EXPORT_SYMBOL_GPL vmlinux 0xe4e8749e pm_generic_freeze_late +EXPORT_SYMBOL_GPL vmlinux 0xe51a2451 scsi_eh_ready_devs +EXPORT_SYMBOL_GPL vmlinux 0xe51f3a58 xen_remap_domain_mfn_range +EXPORT_SYMBOL_GPL vmlinux 0xe53d056d klist_next +EXPORT_SYMBOL_GPL vmlinux 0xe53dee2c thermal_cooling_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe54edfd4 power_supply_powers +EXPORT_SYMBOL_GPL vmlinux 0xe55af574 ata_bmdma_port_intr +EXPORT_SYMBOL_GPL vmlinux 0xe55ca823 of_pci_range_parser_init +EXPORT_SYMBOL_GPL vmlinux 0xe55f3ef5 dma_request_slave_channel_reason +EXPORT_SYMBOL_GPL vmlinux 0xe5883bd9 class_compat_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe58bc17d clockevents_config_and_register +EXPORT_SYMBOL_GPL vmlinux 0xe58fb452 aer_irq +EXPORT_SYMBOL_GPL vmlinux 0xe5905cf1 irq_get_irq_data +EXPORT_SYMBOL_GPL vmlinux 0xe59800db usb_store_new_id +EXPORT_SYMBOL_GPL vmlinux 0xe5a507c0 raw_hash_sk +EXPORT_SYMBOL_GPL vmlinux 0xe5bca9f6 mnt_clone_write +EXPORT_SYMBOL_GPL vmlinux 0xe5e9f0a5 rtc_class_open +EXPORT_SYMBOL_GPL vmlinux 0xe61d1d28 arizona_free_irq +EXPORT_SYMBOL_GPL vmlinux 0xe6486eb6 inet6_csk_search_req +EXPORT_SYMBOL_GPL vmlinux 0xe651f76e selinux_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0xe65b6f8d tty_encode_baud_rate +EXPORT_SYMBOL_GPL vmlinux 0xe666ac88 rhashtable_free_and_destroy +EXPORT_SYMBOL_GPL vmlinux 0xe668ee32 ata_bmdma_post_internal_cmd +EXPORT_SYMBOL_GPL vmlinux 0xe66930ba __netlink_alloc_skb +EXPORT_SYMBOL_GPL vmlinux 0xe66d10c8 ata_pio_need_iordy +EXPORT_SYMBOL_GPL vmlinux 0xe6748e86 trace_event_raw_init +EXPORT_SYMBOL_GPL vmlinux 0xe684507a kvm_get_dirty_log_protect +EXPORT_SYMBOL_GPL vmlinux 0xe6b88898 ata_link_offline +EXPORT_SYMBOL_GPL vmlinux 0xe6be6867 genlmsg_new_unicast +EXPORT_SYMBOL_GPL vmlinux 0xe6c68334 ddebug_remove_module +EXPORT_SYMBOL_GPL vmlinux 0xe6ce0783 of_property_read_string +EXPORT_SYMBOL_GPL vmlinux 0xe6e1c5fe uuid_be_gen +EXPORT_SYMBOL_GPL vmlinux 0xe6ef4abf dm_internal_resume_fast +EXPORT_SYMBOL_GPL vmlinux 0xe6f83837 acpi_bus_attach_private_data +EXPORT_SYMBOL_GPL vmlinux 0xe6f95334 acpi_dma_request_slave_chan_by_index +EXPORT_SYMBOL_GPL vmlinux 0xe6faa0ad xhci_suspend +EXPORT_SYMBOL_GPL vmlinux 0xe6ff77b7 blk_mq_request_started +EXPORT_SYMBOL_GPL vmlinux 0xe6ff7c60 __clk_round_rate +EXPORT_SYMBOL_GPL vmlinux 0xe7166029 crypto_unregister_shash +EXPORT_SYMBOL_GPL vmlinux 0xe7216340 cpu_bit_bitmap +EXPORT_SYMBOL_GPL vmlinux 0xe76286d3 debugfs_create_file +EXPORT_SYMBOL_GPL vmlinux 0xe769232e sprint_symbol_no_offset +EXPORT_SYMBOL_GPL vmlinux 0xe784b9fb ping_unhash +EXPORT_SYMBOL_GPL vmlinux 0xe7a2fe07 cpufreq_unregister_governor +EXPORT_SYMBOL_GPL vmlinux 0xe7b3257c kobj_sysfs_ops +EXPORT_SYMBOL_GPL vmlinux 0xe7b4289f dev_pm_set_dedicated_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0xe7c368dc perf_event_enable +EXPORT_SYMBOL_GPL vmlinux 0xe7cb82ea divider_round_rate +EXPORT_SYMBOL_GPL vmlinux 0xe7e72730 xenbus_probe_node +EXPORT_SYMBOL_GPL vmlinux 0xe7f7ff88 acpi_pci_check_ejectable +EXPORT_SYMBOL_GPL vmlinux 0xe7ffe877 pcpu_base_addr +EXPORT_SYMBOL_GPL vmlinux 0xe810a6c5 of_clk_get_parent_count +EXPORT_SYMBOL_GPL vmlinux 0xe812408f pm_generic_runtime_suspend +EXPORT_SYMBOL_GPL vmlinux 0xe818b32b ata_bmdma_interrupt +EXPORT_SYMBOL_GPL vmlinux 0xe84ef974 usb_alloc_dev +EXPORT_SYMBOL_GPL vmlinux 0xe84f6e5c pciserial_remove_ports +EXPORT_SYMBOL_GPL vmlinux 0xe85a9fd3 cpu_cluster_pm_exit +EXPORT_SYMBOL_GPL vmlinux 0xe862c4b7 dpm_suspend_start +EXPORT_SYMBOL_GPL vmlinux 0xe8642153 amba_device_alloc +EXPORT_SYMBOL_GPL vmlinux 0xe872cc4f driver_find +EXPORT_SYMBOL_GPL vmlinux 0xe8739815 yield_to +EXPORT_SYMBOL_GPL vmlinux 0xe88ca3f5 of_pci_parse_bus_range +EXPORT_SYMBOL_GPL vmlinux 0xe88d523f iommu_group_add_device +EXPORT_SYMBOL_GPL vmlinux 0xe89a5621 xhci_resume +EXPORT_SYMBOL_GPL vmlinux 0xe89bd243 ata_sff_queue_work +EXPORT_SYMBOL_GPL vmlinux 0xe8a96073 klist_add_head +EXPORT_SYMBOL_GPL vmlinux 0xe8f71cff vchan_find_desc +EXPORT_SYMBOL_GPL vmlinux 0xe9104bba __wake_up_sync_key +EXPORT_SYMBOL_GPL vmlinux 0xe91bb7d9 pingv6_prot +EXPORT_SYMBOL_GPL vmlinux 0xe92cc14d regmap_read +EXPORT_SYMBOL_GPL vmlinux 0xe92fd8c0 inet6_destroy_sock +EXPORT_SYMBOL_GPL vmlinux 0xe93e49c3 devres_free +EXPORT_SYMBOL_GPL vmlinux 0xe956a75c pl320_ipc_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0xe9649d5f securityfs_remove +EXPORT_SYMBOL_GPL vmlinux 0xe9873bf3 fuse_get_req_for_background +EXPORT_SYMBOL_GPL vmlinux 0xe9be1b28 crypto_unregister_aead +EXPORT_SYMBOL_GPL vmlinux 0xe9d1b7cf irq_to_pcap +EXPORT_SYMBOL_GPL vmlinux 0xe9da1fd1 ata_sff_data_xfer_noirq +EXPORT_SYMBOL_GPL vmlinux 0xe9f1595a device_set_wakeup_capable +EXPORT_SYMBOL_GPL vmlinux 0xea124bd1 gcd +EXPORT_SYMBOL_GPL vmlinux 0xea418e0f atapi_cmd_type +EXPORT_SYMBOL_GPL vmlinux 0xea628c20 bstr_printf +EXPORT_SYMBOL_GPL vmlinux 0xea731517 iptunnel_pull_header +EXPORT_SYMBOL_GPL vmlinux 0xea7a55fa pinctrl_get_group_pins +EXPORT_SYMBOL_GPL vmlinux 0xea9ca52d class_remove_file_ns +EXPORT_SYMBOL_GPL vmlinux 0xeab4ef56 kobject_init_and_add +EXPORT_SYMBOL_GPL vmlinux 0xeac911d6 __clk_mux_determine_rate +EXPORT_SYMBOL_GPL vmlinux 0xeace415e cpuidle_get_driver +EXPORT_SYMBOL_GPL vmlinux 0xead9018c napi_hash_del +EXPORT_SYMBOL_GPL vmlinux 0xeae5a771 devm_hwmon_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xeae64762 phy_pm_runtime_put +EXPORT_SYMBOL_GPL vmlinux 0xeafd5e7f devm_extcon_dev_unregister +EXPORT_SYMBOL_GPL vmlinux 0xeb2798f7 xen_destroy_contiguous_region +EXPORT_SYMBOL_GPL vmlinux 0xeb2a4098 bpf_prog_put +EXPORT_SYMBOL_GPL vmlinux 0xeb35d7f6 ata_scsi_slave_destroy +EXPORT_SYMBOL_GPL vmlinux 0xeb48914b exportfs_encode_inode_fh +EXPORT_SYMBOL_GPL vmlinux 0xeb784f33 xen_swiotlb_sync_sg_for_cpu +EXPORT_SYMBOL_GPL vmlinux 0xeb7d183e jump_label_rate_limit +EXPORT_SYMBOL_GPL vmlinux 0xeb86c4d7 thermal_zone_unbind_cooling_device +EXPORT_SYMBOL_GPL vmlinux 0xeb896ef1 rtc_set_alarm +EXPORT_SYMBOL_GPL vmlinux 0xebb6b49c efivar_entry_iter +EXPORT_SYMBOL_GPL vmlinux 0xebbd6cf7 cpufreq_frequency_table_verify +EXPORT_SYMBOL_GPL vmlinux 0xebe3fa16 virtqueue_notify +EXPORT_SYMBOL_GPL vmlinux 0xebeb03a9 hvc_alloc +EXPORT_SYMBOL_GPL vmlinux 0xebec57c4 ring_buffer_oldest_event_ts +EXPORT_SYMBOL_GPL vmlinux 0xebee7d20 usb_hub_clear_tt_buffer +EXPORT_SYMBOL_GPL vmlinux 0xec1b043e regulator_suspend_prepare +EXPORT_SYMBOL_GPL vmlinux 0xec25f967 klist_del +EXPORT_SYMBOL_GPL vmlinux 0xec29c602 gfn_to_memslot +EXPORT_SYMBOL_GPL vmlinux 0xec3325e2 __clk_get_num_parents +EXPORT_SYMBOL_GPL vmlinux 0xec51112d fat_attach +EXPORT_SYMBOL_GPL vmlinux 0xec5514d8 crypto_chain +EXPORT_SYMBOL_GPL vmlinux 0xec55d3a2 free_vm_area +EXPORT_SYMBOL_GPL vmlinux 0xec5ad933 get_task_comm +EXPORT_SYMBOL_GPL vmlinux 0xec662f0f ata_sas_queuecmd +EXPORT_SYMBOL_GPL vmlinux 0xec6b4955 mark_page_dirty +EXPORT_SYMBOL_GPL vmlinux 0xec8b6e94 devm_hwmon_device_register_with_groups +EXPORT_SYMBOL_GPL vmlinux 0xeca4eade usb_get_current_frame_number +EXPORT_SYMBOL_GPL vmlinux 0xeca76824 ahash_attr_alg +EXPORT_SYMBOL_GPL vmlinux 0xecaf44c8 lp8788_write_byte +EXPORT_SYMBOL_GPL vmlinux 0xeccfc562 pinctrl_remove_gpio_range +EXPORT_SYMBOL_GPL vmlinux 0xed02d98e acpi_device_update_power +EXPORT_SYMBOL_GPL vmlinux 0xed0e2fc2 ata_bmdma_irq_clear +EXPORT_SYMBOL_GPL vmlinux 0xed2928c6 key_type_logon +EXPORT_SYMBOL_GPL vmlinux 0xed68e2ed acpi_dev_get_property +EXPORT_SYMBOL_GPL vmlinux 0xed79c284 of_console_check +EXPORT_SYMBOL_GPL vmlinux 0xed84a10f mmc_regulator_set_ocr +EXPORT_SYMBOL_GPL vmlinux 0xed84cf95 usb_deregister_dev +EXPORT_SYMBOL_GPL vmlinux 0xed871e8f set_foreign_p2m_mapping +EXPORT_SYMBOL_GPL vmlinux 0xed9178a1 kvm_clear_guest +EXPORT_SYMBOL_GPL vmlinux 0xed9ede12 gpiod_get_value +EXPORT_SYMBOL_GPL vmlinux 0xedbc6f67 gnttab_end_foreign_access +EXPORT_SYMBOL_GPL vmlinux 0xedbe6770 gpiochip_irqchip_add +EXPORT_SYMBOL_GPL vmlinux 0xedcd95ea bpf_prog_realloc +EXPORT_SYMBOL_GPL vmlinux 0xedd26dec cpufreq_show_cpus +EXPORT_SYMBOL_GPL vmlinux 0xedd5919b gpiochip_remove +EXPORT_SYMBOL_GPL vmlinux 0xee14c306 dax_fault +EXPORT_SYMBOL_GPL vmlinux 0xee3b50d6 regmap_init +EXPORT_SYMBOL_GPL vmlinux 0xee43bb2e sysfs_create_groups +EXPORT_SYMBOL_GPL vmlinux 0xee54fd3f crypto_larval_alloc +EXPORT_SYMBOL_GPL vmlinux 0xee5f0bc4 led_classdev_register +EXPORT_SYMBOL_GPL vmlinux 0xee6b71c4 syscon_regmap_lookup_by_compatible +EXPORT_SYMBOL_GPL vmlinux 0xee74edf6 usb_add_hcd +EXPORT_SYMBOL_GPL vmlinux 0xee7ffd11 acpi_subsys_resume_early +EXPORT_SYMBOL_GPL vmlinux 0xee93eb86 __audit_inode_child +EXPORT_SYMBOL_GPL vmlinux 0xee9c43da is_dock_device +EXPORT_SYMBOL_GPL vmlinux 0xeeb593e6 fs_kobj +EXPORT_SYMBOL_GPL vmlinux 0xeeef380e skcipher_geniv_init +EXPORT_SYMBOL_GPL vmlinux 0xeef4b8cb __xenbus_register_backend +EXPORT_SYMBOL_GPL vmlinux 0xef2f950c vfs_cancel_lock +EXPORT_SYMBOL_GPL vmlinux 0xef44ec73 trace_output_call +EXPORT_SYMBOL_GPL vmlinux 0xef4e18e1 crypto_rng_reset +EXPORT_SYMBOL_GPL vmlinux 0xef5dc7ac serial8250_request_dma +EXPORT_SYMBOL_GPL vmlinux 0xef68fa81 cpufreq_freq_transition_begin +EXPORT_SYMBOL_GPL vmlinux 0xef6c3f70 round_jiffies_up_relative +EXPORT_SYMBOL_GPL vmlinux 0xef6d007a sigset_from_compat +EXPORT_SYMBOL_GPL vmlinux 0xef6da631 pci_disable_pri +EXPORT_SYMBOL_GPL vmlinux 0xef719d88 wm831x_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0xef8c7850 pcap_adc_async +EXPORT_SYMBOL_GPL vmlinux 0xef8ee913 leds_list_lock +EXPORT_SYMBOL_GPL vmlinux 0xef8f7276 register_pernet_device +EXPORT_SYMBOL_GPL vmlinux 0xef9f7453 devm_usb_get_phy_dev +EXPORT_SYMBOL_GPL vmlinux 0xefa2c27d register_tracepoint_module_notifier +EXPORT_SYMBOL_GPL vmlinux 0xefb5bcb6 od_register_powersave_bias_handler +EXPORT_SYMBOL_GPL vmlinux 0xefcc588f fanout_mutex +EXPORT_SYMBOL_GPL vmlinux 0xefda7515 of_pci_msi_chip_remove +EXPORT_SYMBOL_GPL vmlinux 0xeffa6b8f __tracepoint_cpu_idle +EXPORT_SYMBOL_GPL vmlinux 0xf0173bf8 rhashtable_walk_exit +EXPORT_SYMBOL_GPL vmlinux 0xf025248d regulator_is_enabled_regmap +EXPORT_SYMBOL_GPL vmlinux 0xf02ac121 bus_create_file +EXPORT_SYMBOL_GPL vmlinux 0xf03c072f __ftrace_vbprintk +EXPORT_SYMBOL_GPL vmlinux 0xf041bcca usb_hub_claim_port +EXPORT_SYMBOL_GPL vmlinux 0xf044d6a6 usb_set_configuration +EXPORT_SYMBOL_GPL vmlinux 0xf0696401 acpi_pci_detect_ejectable +EXPORT_SYMBOL_GPL vmlinux 0xf0727f12 ktime_get_raw_fast_ns +EXPORT_SYMBOL_GPL vmlinux 0xf0a7918b crypto_larval_lookup +EXPORT_SYMBOL_GPL vmlinux 0xf0f0501e rdev_set_badblocks +EXPORT_SYMBOL_GPL vmlinux 0xf0f5dbc2 timerqueue_iterate_next +EXPORT_SYMBOL_GPL vmlinux 0xf109de85 sysfs_rename_link_ns +EXPORT_SYMBOL_GPL vmlinux 0xf10fa8aa ehci_cf_port_reset_rwsem +EXPORT_SYMBOL_GPL vmlinux 0xf11f6ae2 list_lru_walk_one +EXPORT_SYMBOL_GPL vmlinux 0xf171f4fc tc3589x_block_read +EXPORT_SYMBOL_GPL vmlinux 0xf184d189 kernel_power_off +EXPORT_SYMBOL_GPL vmlinux 0xf18c6205 sock_diag_unregister_inet_compat +EXPORT_SYMBOL_GPL vmlinux 0xf1974ad0 skb_to_sgvec +EXPORT_SYMBOL_GPL vmlinux 0xf1b31314 delayacct_on +EXPORT_SYMBOL_GPL vmlinux 0xf1b9a65a crypto_unregister_aeads +EXPORT_SYMBOL_GPL vmlinux 0xf1bbd608 iommu_capable +EXPORT_SYMBOL_GPL vmlinux 0xf1cec102 __netpoll_free_async +EXPORT_SYMBOL_GPL vmlinux 0xf1da02f6 xfrm_inner_extract_output +EXPORT_SYMBOL_GPL vmlinux 0xf1db9e74 __gpiod_get_index_optional +EXPORT_SYMBOL_GPL vmlinux 0xf1fdc5d7 usb_disable_lpm +EXPORT_SYMBOL_GPL vmlinux 0xf205185b unregister_wide_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0xf21e1f9b disable_percpu_irq +EXPORT_SYMBOL_GPL vmlinux 0xf21f8e81 bdev_direct_access +EXPORT_SYMBOL_GPL vmlinux 0xf231645d uart_set_options +EXPORT_SYMBOL_GPL vmlinux 0xf238b120 do_unregister_con_driver +EXPORT_SYMBOL_GPL vmlinux 0xf23ecb22 usb_debug_root +EXPORT_SYMBOL_GPL vmlinux 0xf2430333 blk_queue_lld_busy +EXPORT_SYMBOL_GPL vmlinux 0xf2473a90 irq_remove_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0xf24aede9 pci_num_vf +EXPORT_SYMBOL_GPL vmlinux 0xf25ffd94 input_ff_destroy +EXPORT_SYMBOL_GPL vmlinux 0xf26b099b __mnt_is_readonly +EXPORT_SYMBOL_GPL vmlinux 0xf27977e2 async_synchronize_cookie_domain +EXPORT_SYMBOL_GPL vmlinux 0xf27a0b6d blockdev_superblock +EXPORT_SYMBOL_GPL vmlinux 0xf28ade47 iommu_attach_device +EXPORT_SYMBOL_GPL vmlinux 0xf297d23f usb_hcd_is_primary_hcd +EXPORT_SYMBOL_GPL vmlinux 0xf2d237e2 klist_init +EXPORT_SYMBOL_GPL vmlinux 0xf2eb8f69 efivar_validate +EXPORT_SYMBOL_GPL vmlinux 0xf2f077cc pkey_id_type_name +EXPORT_SYMBOL_GPL vmlinux 0xf2fca922 uart_parse_options +EXPORT_SYMBOL_GPL vmlinux 0xf30353d8 gpiod_direction_input +EXPORT_SYMBOL_GPL vmlinux 0xf30b6be8 trace_event_buffer_reserve +EXPORT_SYMBOL_GPL vmlinux 0xf30e0431 task_cls_state +EXPORT_SYMBOL_GPL vmlinux 0xf30e105d ezx_pcap_write +EXPORT_SYMBOL_GPL vmlinux 0xf3180aad pm_runtime_forbid +EXPORT_SYMBOL_GPL vmlinux 0xf31b3fd1 workqueue_set_max_active +EXPORT_SYMBOL_GPL vmlinux 0xf31ecb1a pinctrl_force_sleep +EXPORT_SYMBOL_GPL vmlinux 0xf323b65f usb_register_dev +EXPORT_SYMBOL_GPL vmlinux 0xf32bdc5d unregister_xenstore_notifier +EXPORT_SYMBOL_GPL vmlinux 0xf331236f btree_geo32 +EXPORT_SYMBOL_GPL vmlinux 0xf334bae7 __fib_lookup +EXPORT_SYMBOL_GPL vmlinux 0xf33896ab usb_hcd_start_port_resume +EXPORT_SYMBOL_GPL vmlinux 0xf34f832f regmap_update_bits_check +EXPORT_SYMBOL_GPL vmlinux 0xf3808cb1 get_state_synchronize_rcu +EXPORT_SYMBOL_GPL vmlinux 0xf38e22e1 __module_text_address +EXPORT_SYMBOL_GPL vmlinux 0xf3918467 usb_disable_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0xf399c244 serial8250_do_shutdown +EXPORT_SYMBOL_GPL vmlinux 0xf3ac2966 noop_backing_dev_info +EXPORT_SYMBOL_GPL vmlinux 0xf3b451ca kdb_poll_funcs +EXPORT_SYMBOL_GPL vmlinux 0xf3bcc9ea dm_internal_suspend_fast +EXPORT_SYMBOL_GPL vmlinux 0xf3d16a69 trace_seq_puts +EXPORT_SYMBOL_GPL vmlinux 0xf3e47e0b usb_unlink_urb +EXPORT_SYMBOL_GPL vmlinux 0xf3f18238 ktime_get_resolution_ns +EXPORT_SYMBOL_GPL vmlinux 0xf3f400d0 ata_bmdma_port_start32 +EXPORT_SYMBOL_GPL vmlinux 0xf400317c acpi_is_pnp_device +EXPORT_SYMBOL_GPL vmlinux 0xf4375be0 hvc_remove +EXPORT_SYMBOL_GPL vmlinux 0xf4384a6a xenbus_map_ring_valloc +EXPORT_SYMBOL_GPL vmlinux 0xf459cf5d scsi_nl_sock +EXPORT_SYMBOL_GPL vmlinux 0xf471257e spi_bus_type +EXPORT_SYMBOL_GPL vmlinux 0xf48abd91 tty_find_polling_driver +EXPORT_SYMBOL_GPL vmlinux 0xf494f618 mmc_regulator_get_ocrmask +EXPORT_SYMBOL_GPL vmlinux 0xf4998ba8 inet6_csk_addr2sockaddr +EXPORT_SYMBOL_GPL vmlinux 0xf499fdb2 rcu_barrier_bh +EXPORT_SYMBOL_GPL vmlinux 0xf4cac096 of_platform_depopulate +EXPORT_SYMBOL_GPL vmlinux 0xf4cc869b page_endio +EXPORT_SYMBOL_GPL vmlinux 0xf4d7e70e gpiod_is_active_low +EXPORT_SYMBOL_GPL vmlinux 0xf4f0f887 md_allow_write +EXPORT_SYMBOL_GPL vmlinux 0xf4f62a77 pwmchip_remove +EXPORT_SYMBOL_GPL vmlinux 0xf4fc2d6c __ring_buffer_alloc +EXPORT_SYMBOL_GPL vmlinux 0xf50056fa simple_attr_release +EXPORT_SYMBOL_GPL vmlinux 0xf5026103 sk_attach_filter +EXPORT_SYMBOL_GPL vmlinux 0xf505b579 __mnt_drop_write +EXPORT_SYMBOL_GPL vmlinux 0xf546ce54 regulator_set_load +EXPORT_SYMBOL_GPL vmlinux 0xf54bd49b lcm +EXPORT_SYMBOL_GPL vmlinux 0xf553318d cpuidle_pause_and_lock +EXPORT_SYMBOL_GPL vmlinux 0xf5636a2c device_get_next_child_node +EXPORT_SYMBOL_GPL vmlinux 0xf5785b42 evtchn_get +EXPORT_SYMBOL_GPL vmlinux 0xf5945bac gnttab_free_grant_references +EXPORT_SYMBOL_GPL vmlinux 0xf5981e9d usb_deregister_device_driver +EXPORT_SYMBOL_GPL vmlinux 0xf5a691cd invalidate_bh_lrus +EXPORT_SYMBOL_GPL vmlinux 0xf5c98e4e __fsnotify_inode_delete +EXPORT_SYMBOL_GPL vmlinux 0xf5de95e4 skb_zerocopy +EXPORT_SYMBOL_GPL vmlinux 0xf5dfda88 pci_cfg_access_lock +EXPORT_SYMBOL_GPL vmlinux 0xf5e0daa2 __mmu_notifier_invalidate_range +EXPORT_SYMBOL_GPL vmlinux 0xf5f10a00 proc_mkdir_data +EXPORT_SYMBOL_GPL vmlinux 0xf624d8b4 usb_alloc_streams +EXPORT_SYMBOL_GPL vmlinux 0xf631bbb0 pci_walk_bus +EXPORT_SYMBOL_GPL vmlinux 0xf6370a84 of_thermal_get_ntrips +EXPORT_SYMBOL_GPL vmlinux 0xf6393a11 devm_mdiobus_alloc_size +EXPORT_SYMBOL_GPL vmlinux 0xf6475250 pm_runtime_no_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xf64b84db devm_of_phy_provider_unregister +EXPORT_SYMBOL_GPL vmlinux 0xf65d0e3c dev_pm_qos_remove_request +EXPORT_SYMBOL_GPL vmlinux 0xf66257a6 pci_restore_ats_state +EXPORT_SYMBOL_GPL vmlinux 0xf66c9bb5 usb_anchor_urb +EXPORT_SYMBOL_GPL vmlinux 0xf69a5bd4 skb_partial_csum_set +EXPORT_SYMBOL_GPL vmlinux 0xf6c41086 regmap_exit +EXPORT_SYMBOL_GPL vmlinux 0xf6c8dc62 cpu_hotplug_enable +EXPORT_SYMBOL_GPL vmlinux 0xf6ca037b ohci_init_driver +EXPORT_SYMBOL_GPL vmlinux 0xf6e874f5 ata_timing_merge +EXPORT_SYMBOL_GPL vmlinux 0xf7016530 xenbus_gather +EXPORT_SYMBOL_GPL vmlinux 0xf71a086c crypto_register_aeads +EXPORT_SYMBOL_GPL vmlinux 0xf72b5176 gpiod_direction_output +EXPORT_SYMBOL_GPL vmlinux 0xf73229b3 pci_try_reset_bus +EXPORT_SYMBOL_GPL vmlinux 0xf7391b86 fat_time_unix2fat +EXPORT_SYMBOL_GPL vmlinux 0xf7544001 i2c_generic_gpio_recovery +EXPORT_SYMBOL_GPL vmlinux 0xf7608cdf __tracepoint_io_page_fault +EXPORT_SYMBOL_GPL vmlinux 0xf7a7b8e1 regmap_can_raw_write +EXPORT_SYMBOL_GPL vmlinux 0xf7c3f273 xen_resume_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0xf7cb2d29 acpi_debugfs_dir +EXPORT_SYMBOL_GPL vmlinux 0xf7d2f1fc smpboot_unregister_percpu_thread +EXPORT_SYMBOL_GPL vmlinux 0xf7dfac60 skcipher_geniv_exit +EXPORT_SYMBOL_GPL vmlinux 0xf7e22522 devfreq_event_remove_edev +EXPORT_SYMBOL_GPL vmlinux 0xf80ddf39 usb_autopm_get_interface_no_resume +EXPORT_SYMBOL_GPL vmlinux 0xf819b302 wm5110_spi_regmap +EXPORT_SYMBOL_GPL vmlinux 0xf82f3657 work_on_cpu +EXPORT_SYMBOL_GPL vmlinux 0xf84ac743 usb_gen_phy_init +EXPORT_SYMBOL_GPL vmlinux 0xf855fe65 acpi_device_modalias +EXPORT_SYMBOL_GPL vmlinux 0xf85a00b2 ata_sff_freeze +EXPORT_SYMBOL_GPL vmlinux 0xf86547f0 hvc_poll +EXPORT_SYMBOL_GPL vmlinux 0xf87b5dc8 crypto_alloc_base +EXPORT_SYMBOL_GPL vmlinux 0xf8802492 print_stack_trace +EXPORT_SYMBOL_GPL vmlinux 0xf885758a class_unregister +EXPORT_SYMBOL_GPL vmlinux 0xf885b886 ata_sff_qc_fill_rtf +EXPORT_SYMBOL_GPL vmlinux 0xf89cbf73 call_srcu +EXPORT_SYMBOL_GPL vmlinux 0xf8a0e5a7 acpi_dev_resume_early +EXPORT_SYMBOL_GPL vmlinux 0xf8c541e0 ip6_push_pending_frames +EXPORT_SYMBOL_GPL vmlinux 0xf8f3a0fb ata_ratelimit +EXPORT_SYMBOL_GPL vmlinux 0xf8fe3d0b kmsg_dump_register +EXPORT_SYMBOL_GPL vmlinux 0xf91f8ce2 clockevents_register_device +EXPORT_SYMBOL_GPL vmlinux 0xf91ffb5b nd_region_provider_data +EXPORT_SYMBOL_GPL vmlinux 0xf9285c87 usb_anchor_empty +EXPORT_SYMBOL_GPL vmlinux 0xf92ce956 kdb_printf +EXPORT_SYMBOL_GPL vmlinux 0xf932015f __raw_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xf93b3b0f dm_accept_partial_bio +EXPORT_SYMBOL_GPL vmlinux 0xf951ffbf regmap_init_i2c +EXPORT_SYMBOL_GPL vmlinux 0xf95322f4 kthread_parkme +EXPORT_SYMBOL_GPL vmlinux 0xf9547a17 divider_recalc_rate +EXPORT_SYMBOL_GPL vmlinux 0xf95ad32f ping_rcv +EXPORT_SYMBOL_GPL vmlinux 0xf967422b HYPERVISOR_xen_version +EXPORT_SYMBOL_GPL vmlinux 0xf96c35b4 sata_link_resume +EXPORT_SYMBOL_GPL vmlinux 0xf9722904 pskb_put +EXPORT_SYMBOL_GPL vmlinux 0xf9765833 dmi_match +EXPORT_SYMBOL_GPL vmlinux 0xf980e3ef regulator_set_voltage +EXPORT_SYMBOL_GPL vmlinux 0xf991c09f rcu_qs_ctr +EXPORT_SYMBOL_GPL vmlinux 0xf9a054b5 __round_jiffies +EXPORT_SYMBOL_GPL vmlinux 0xf9c2da57 clkdev_create +EXPORT_SYMBOL_GPL vmlinux 0xf9ca3160 ata_id_xfermask +EXPORT_SYMBOL_GPL vmlinux 0xf9cb47e5 cpuidle_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0xf9d9264e xen_have_vector_callback +EXPORT_SYMBOL_GPL vmlinux 0xf9d9a043 xfrm_audit_policy_add +EXPORT_SYMBOL_GPL vmlinux 0xf9db0ae4 tc3589x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xf9e4fa3d regmap_multi_reg_write +EXPORT_SYMBOL_GPL vmlinux 0xf9fb97a8 palmas_ext_control_req_config +EXPORT_SYMBOL_GPL vmlinux 0xf9fef331 dma_buf_end_cpu_access +EXPORT_SYMBOL_GPL vmlinux 0xfa0489a7 mmu_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0xfa10f27d xen_dbgp_reset_prep +EXPORT_SYMBOL_GPL vmlinux 0xfa1eb910 unregister_syscore_ops +EXPORT_SYMBOL_GPL vmlinux 0xfa1f4662 scatterwalk_start +EXPORT_SYMBOL_GPL vmlinux 0xfa2734eb nd_numa_attribute_group +EXPORT_SYMBOL_GPL vmlinux 0xfa2d3df8 ata_sff_error_handler +EXPORT_SYMBOL_GPL vmlinux 0xfa4576d5 pci_enable_sriov +EXPORT_SYMBOL_GPL vmlinux 0xfa7b476d of_modalias_node +EXPORT_SYMBOL_GPL vmlinux 0xfa82eca9 platform_driver_unregister +EXPORT_SYMBOL_GPL vmlinux 0xfa901b31 compat_get_timespec +EXPORT_SYMBOL_GPL vmlinux 0xfaa7a2a2 regulator_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xfb20b99b of_property_read_u32_array +EXPORT_SYMBOL_GPL vmlinux 0xfb32b30f ring_buffer_read_prepare_sync +EXPORT_SYMBOL_GPL vmlinux 0xfb3670c3 attribute_container_find_class_device +EXPORT_SYMBOL_GPL vmlinux 0xfb449c2e phy_optional_get +EXPORT_SYMBOL_GPL vmlinux 0xfb4e2919 crypto_ahash_digest +EXPORT_SYMBOL_GPL vmlinux 0xfb6eedf9 power_group_name +EXPORT_SYMBOL_GPL vmlinux 0xfb84d822 posix_timers_register_clock +EXPORT_SYMBOL_GPL vmlinux 0xfbac4dab driver_unregister +EXPORT_SYMBOL_GPL vmlinux 0xfbaec3fc device_find_child +EXPORT_SYMBOL_GPL vmlinux 0xfbb1e49c pci_user_write_config_dword +EXPORT_SYMBOL_GPL vmlinux 0xfbbd41ca no_action +EXPORT_SYMBOL_GPL vmlinux 0xfbcf3e9d power_supply_put +EXPORT_SYMBOL_GPL vmlinux 0xfbd52358 pci_stop_root_bus +EXPORT_SYMBOL_GPL vmlinux 0xfc03d97a page_is_ram +EXPORT_SYMBOL_GPL vmlinux 0xfc082b38 of_get_regulator_init_data +EXPORT_SYMBOL_GPL vmlinux 0xfc1eefae transport_setup_device +EXPORT_SYMBOL_GPL vmlinux 0xfc201b66 sprint_oid +EXPORT_SYMBOL_GPL vmlinux 0xfc23023c fsnotify +EXPORT_SYMBOL_GPL vmlinux 0xfc254d15 gnttab_free_auto_xlat_frames +EXPORT_SYMBOL_GPL vmlinux 0xfc265d48 fat_scan +EXPORT_SYMBOL_GPL vmlinux 0xfc3b4246 acpi_bus_update_power +EXPORT_SYMBOL_GPL vmlinux 0xfc4e19a5 sysfs_create_link +EXPORT_SYMBOL_GPL vmlinux 0xfc5bde0e bsg_unregister_queue +EXPORT_SYMBOL_GPL vmlinux 0xfca3afc5 sata_scr_write_flush +EXPORT_SYMBOL_GPL vmlinux 0xfcd7bc0b ring_buffer_empty +EXPORT_SYMBOL_GPL vmlinux 0xfcdf9c55 usb_phy_set_event +EXPORT_SYMBOL_GPL vmlinux 0xfd1e3b77 preempt_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0xfd51b281 gnttab_end_foreign_access_ref +EXPORT_SYMBOL_GPL vmlinux 0xfd52709c usb_enable_intel_xhci_ports +EXPORT_SYMBOL_GPL vmlinux 0xfd54f056 ata_sas_slave_configure +EXPORT_SYMBOL_GPL vmlinux 0xfd7a50ea set_timer_slack +EXPORT_SYMBOL_GPL vmlinux 0xfd80ee68 crypto_alg_extsize +EXPORT_SYMBOL_GPL vmlinux 0xfd8f7564 power_supply_changed +EXPORT_SYMBOL_GPL vmlinux 0xfd98b12e i2c_new_dummy +EXPORT_SYMBOL_GPL vmlinux 0xfd9a0438 is_skb_forwardable +EXPORT_SYMBOL_GPL vmlinux 0xfda71e9f tpm_chip_register +EXPORT_SYMBOL_GPL vmlinux 0xfdb8b5db powercap_unregister_control_type +EXPORT_SYMBOL_GPL vmlinux 0xfdbaa6ef crypto_register_akcipher +EXPORT_SYMBOL_GPL vmlinux 0xfdbfdb7d usb_hcd_unlink_urb_from_ep +EXPORT_SYMBOL_GPL vmlinux 0xfdcea9b5 gpiod_get_array +EXPORT_SYMBOL_GPL vmlinux 0xfddb7823 ftrace_set_filter +EXPORT_SYMBOL_GPL vmlinux 0xfde5851a pci_reset_bridge_secondary_bus +EXPORT_SYMBOL_GPL vmlinux 0xfe1c93ba security_kernel_fw_from_file +EXPORT_SYMBOL_GPL vmlinux 0xfe22ebec devm_regmap_field_free +EXPORT_SYMBOL_GPL vmlinux 0xfe448a7b bpf_prog_select_runtime +EXPORT_SYMBOL_GPL vmlinux 0xfe46dd69 ehci_suspend +EXPORT_SYMBOL_GPL vmlinux 0xfe593ddd root_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xfe5ea012 tcp_reno_ssthresh +EXPORT_SYMBOL_GPL vmlinux 0xfe688681 crypto_register_rngs +EXPORT_SYMBOL_GPL vmlinux 0xfe7a23f2 register_user_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0xfe96a33e user_read +EXPORT_SYMBOL_GPL vmlinux 0xfe990052 gpio_free +EXPORT_SYMBOL_GPL vmlinux 0xfeac84ed kvm_get_dirty_log +EXPORT_SYMBOL_GPL vmlinux 0xfecbcf3f xfrm_audit_state_icvfail +EXPORT_SYMBOL_GPL vmlinux 0xfecc1e02 sata_sff_hardreset +EXPORT_SYMBOL_GPL vmlinux 0xfed11ed1 usb_mon_deregister +EXPORT_SYMBOL_GPL vmlinux 0xfedabcbd dev_pm_opp_remove +EXPORT_SYMBOL_GPL vmlinux 0xfef5f4ea reservation_object_wait_timeout_rcu +EXPORT_SYMBOL_GPL vmlinux 0xfef8a166 trace_current_buffer_lock_reserve +EXPORT_SYMBOL_GPL vmlinux 0xff027d6f debugfs_print_regs32 +EXPORT_SYMBOL_GPL vmlinux 0xff05fa13 vring_interrupt +EXPORT_SYMBOL_GPL vmlinux 0xff291ecf clk_unregister_divider +EXPORT_SYMBOL_GPL vmlinux 0xff3e6e18 phy_pm_runtime_get_sync +EXPORT_SYMBOL_GPL vmlinux 0xff5a8cfe cn_del_callback +EXPORT_SYMBOL_GPL vmlinux 0xff633558 vprintk_default +EXPORT_SYMBOL_GPL vmlinux 0xff857c07 dev_attr_em_message +EXPORT_SYMBOL_GPL vmlinux 0xff992223 ata_sff_softreset +EXPORT_SYMBOL_GPL vmlinux 0xff9ef539 subsys_system_register +EXPORT_SYMBOL_GPL vmlinux 0xffbaaee0 vfs_lock_file +EXPORT_SYMBOL_GPL vmlinux 0xffc03fc1 skb_cow_data +EXPORT_SYMBOL_GPL vmlinux 0xffed5c86 xen_swiotlb_sync_single_for_cpu +EXPORT_SYMBOL_GPL vmlinux 0xfffdbde5 pci_device_is_present --- linux-raspi2-4.2.0.orig/debian.master/abi/4.2.0-26.31/arm64/generic.compiler +++ linux-raspi2-4.2.0/debian.master/abi/4.2.0-26.31/arm64/generic.compiler @@ -0,0 +1 @@ +GCC: (Ubuntu 5.2.1-22ubuntu2) 5.2.1 20151010 --- linux-raspi2-4.2.0.orig/debian.master/abi/4.2.0-26.31/arm64/generic.modules +++ linux-raspi2-4.2.0/debian.master/abi/4.2.0-26.31/arm64/generic.modules @@ -0,0 +1,4225 @@ +3c59x +3w-9xxx +3w-sas +3w-xxxx +6lowpan +6pack +8021q +8139cp +8139too +8250_fintek +8255 +8255_pci +8390 +842 +842_compress +842_decompress +88pm800 +88pm805 +88pm80x +88pm80x_onkey +88pm8607 +88pm860x_battery +88pm860x_bl +88pm860x_charger +88pm860x_onkey +88pm860x-ts +9p +9pnet +9pnet_rdma +9pnet_virtio +a100u2w +a3d +a8293 +aacraid +aat2870_bl +aat2870-regulator +ab3100 +ab3100-otp +ablk_helper +ac97_bus +acard-ahci +acecad +acenic +acpi-als +acpi_ipmi +acpiphp_ibm +acpi_power_meter +act200l-sir +act8865-regulator +act_bpf +act_connmark +act_csum +act_gact +act_ipt +actisys-sir +act_mirred +act_nat +act_pedit +act_police +act_simple +act_skbedit +act_vlan +ad2s1200 +ad2s1210 +ad2s90 +ad5064 +ad525x_dpot +ad525x_dpot-i2c +ad525x_dpot-spi +ad5360 +ad5380 +ad5398 +ad5421 +ad5446 +ad5449 +ad5504 +ad5624r_spi +ad5686 +ad5755 +ad5764 +ad5791 +ad5933 +ad714x +ad714x-i2c +ad714x-spi +ad7150 +ad7152 +ad7192 +ad7266 +ad7280a +ad7291 +ad7298 +ad7303 +ad7314 +ad7414 +ad7418 +ad7476 +ad7606 +ad7746 +ad7780 +ad7791 +ad7793 +ad7816 +ad7877 +ad7879 +ad7879-i2c +ad7879-spi +ad7887 +ad7923 +ad799x +ad8366 +ad9523 +ad9832 +ad9834 +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 +ade7753 +ade7754 +ade7758 +ade7759 +ade7854 +ade7854-i2c +ade7854-spi +adf4350 +adfs +adi +adis16060 +adis16080 +adis16130 +adis16136 +adis16201 +adis16203 +adis16204 +adis16209 +adis16220 +adis16240 +adis16260 +adis16400 +adis16480 +adis_lib +adjd_s311 +adl_pci6208 +adl_pci7x3x +adl_pci8164 +adl_pci9111 +adl_pci9118 +adm1021 +adm1025 +adm1026 +adm1029 +adm1031 +adm1275 +adm8211 +adm9240 +adp5520_bl +adp5520-keys +adp5588-keys +adp5589-keys +adp8860_bl +adp8870_bl +adq12b +ads1015 +ads7828 +ads7846 +ads7871 +ad_sigma_delta +adt7310 +adt7316 +adt7316-i2c +adt7316-spi +adt7410 +adt7411 +adt7462 +adt7470 +adt7475 +adt7x10 +adummy +adutux +adv7511 +adv7604 +adv7842 +advansys +adv_pci1710 +adv_pci1723 +adv_pci1724 +adv_pci_dio +adxl34x +adxl34x-i2c +adxl34x-spi +adxrs450 +aes-ce-blk +aes-ce-ccm +aes-ce-cipher +aes-neon-blk +af9013 +af9033 +af_alg +affs +af_key +af_packet_diag +af-rxrpc +ah4 +ah6 +ahci +ahci_ceva +ahci_platform +ahci_xgene +aic79xx +aic7xxx +aic94xx +aio_aio12_8 +aio_iiro_16 +aiptek +aircable +airspy +ak8975 +al3320a +algif_aead +algif_hash +algif_rng +algif_skcipher +alim7101_wdt +altera-ci +altera_jtaguart +altera_ps2 +altera-stapl +altera_tse +altera_uart +alx +am53c974 +ambakmi +amba-pl010 +amc6821 +amd +amd5536udc +amd8111e +amdgpu +amd-xgbe +amplc_dio200 +amplc_dio200_common +amplc_dio200_pci +amplc_pc236 +amplc_pc236_common +amplc_pc263 +amplc_pci224 +amplc_pci230 +amplc_pci236 +amplc_pci263 +ams369fg06 +analog +anatop-regulator +ansi_cprng +anubis +aoe +apbps2 +apds9300 +apds9802als +apds990x +appledisplay +appletalk +appletouch +applicom +ar1021_i2c +ar5523 +ar7part +arc4 +arc_emac +arcmsr +arcnet +arc_ps2 +arc-rawmode +arc-rimi +arc_uart +arizona-haptics +arizona-i2c +arizona-ldo1 +arizona-micsupp +arizona-spi +ark3116 +arkfb +arm_big_little +arm_big_little_dt +arm_mhu +arptable_filter +arp_tables +arpt_mangle +as102_fe +as3711_bl +as3711-regulator +as3722-regulator +as3935 +as5011 +asc7621 +asix +ast +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 +ath3k +ath5k +ath6kl_core +ath6kl_sdio +ath6kl_usb +ath9k +ath9k_common +ath9k_htc +ath9k_hw +ati_remote +ati_remote2 +atl1 +atl1c +atl1e +atl2 +atm +atmel +atmel-hlcdc +atmel_mxt_ts +atmel_pci +atmtcp +atp870u +atusb +atxp1 +aty128fb +atyfb +au0828 +au8522_common +au8522_decoder +au8522_dig +aufs +auo_k1900fb +auo_k1901fb +auo_k190x +auo-pixcir-ts +authenc +authencesn +auth_rpcgss +autofs4 +avmfritz +ax25 +ax88179_178a +axp20x-pek +axp20x-regulator +axp288_adc +axp288_charger +axp288_fuel_gauge +b1 +b1dma +b1pci +b2c2-flexcop +b2c2-flexcop-pci +b2c2-flexcop-usb +b43 +b43legacy +b44 +bas_gigaset +batman-adv +baycom_par +baycom_ser_fdx +baycom_ser_hdx +bcache +bch +bcm203x +bcm3510 +bcm590xx +bcm590xx-regulator +bcm5974 +bcm7xxx +bcm87xx +bcma +bcma-hcd +bcm-keypad +bcmsysport +bd6107 +bdc +bdc_pci +be2iscsi +be2net +befs +belkin_sa +bfa +bfs +bfusb +bh1750 +bh1770glc +bh1780gli +binfmt_misc +block2mtd +blocklayoutdriver +blowfish_common +blowfish_generic +bluetooth +bluetooth_6lowpan +bma150 +bma180 +bmc150-accel +bmc150_magn +bmg160 +bmp085-i2c +bmp085-spi +bmp280 +bna +bnep +bnx2 +bnx2fc +bnx2i +bnx2x +bonding +bpa10x +bpqether +bq2415x_charger +bq24190_charger +bq24257_charger +bq24735-charger +bq25890_charger +bq27x00_battery +br2684 +brcmfmac +brcmsmac +brcmutil +bridge +br_netfilter +broadcom +broadsheetfb +bsd_comp +bt878 +btbcm +btcoexist +btintel +btmrvl +btmrvl_sdio +btrfs +btrtl +btsdio +bttv +btusb +btwilink +bu21013_ts +budget +budget-av +budget-ci +budget-core +budget-patch +c4 +c67x00 +c6xdigio +cachefiles +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-raw +cap11xx +capi +capidrv +capmode +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 +c_can +c_can_pci +c_can_platform +cciss +ccm +ccp +ccp-crypto +cdc-acm +cdc_eem +cdc_ether +cdc_mbim +cdc_ncm +cdc-phonet +cdc_subset +cdc-wdm +ceph +cfg80211 +cfi_cmdset_0001 +cfi_cmdset_0002 +cfi_cmdset_0020 +cfi_probe +cfi_util +cfspi_slave +ch +ch341 +ch7006 +chacha20_generic +chacha20poly1305 +chaoskey +chipone_icn8318 +chipreg +chnl_net +cicada +cifs +ci_hdrc +ci_hdrc_imx +ci_hdrc_msm +ci_hdrc_pci +ci_hdrc_usb2 +ci_hdrc_zevio +cirrus +cirrusfb +clip +clk-cdce706 +clk-cdce925 +clk-max77686 +clk-max77802 +clk-palmas +clk-pwm +clk-qcom +clk-rk808 +clk-s2mps11 +clk-si5351 +clk-si570 +clk-twl6040 +clk-wm831x +cls_basic +cls_bpf +cls_cgroup +cls_flow +cls_flower +cls_fw +cls_route +cls_rsvp +cls_rsvp6 +cls_tcindex +cls_u32 +cm109 +cm32181 +cm3232 +cm3323 +cm36651 +cma3000_d0x +cma3000_d0x_i2c +cmac +cmdlinepart +cmtp +cnic +cobalt +cobra +coda +com20020 +com20020-pci +com90io +com90xx +comedi +comedi_8254 +comedi_8255 +comedi_bond +comedi_parport +comedi_pci +comedi_test +comedi_usb +configfs +contec_pci_dio +cordic +core +cp210x +cpia2 +cpsw_ale +cpu-notifier-error-inject +cramfs +crc32 +crc7 +crc8 +crc-ccitt +crc-itu-t +cros_ec +cros_ec_devs +cros_ec_i2c +cros_ec_keyb +cros_ec_spi +cryptd +cryptoloop +crypto_null +crypto_user +cs5345 +cs53l32a +csiostor +ctr +cts +cuse +cw1200_core +cw1200_wlan_sdio +cw1200_wlan_spi +cx18 +cx18-alsa +cx22700 +cx22702 +cx231xx +cx231xx-alsa +cx231xx-dvb +cx2341x +cx23885 +cx24110 +cx24113 +cx24116 +cx24117 +cx24120 +cx24123 +cx25821 +cx25821-alsa +cx25840 +cx82310_eth +cx8800 +cx8802 +cx88-alsa +cx88-blackbird +cx88-dvb +cx88-vp3054-i2c +cx88xx +cxacru +cxd2099 +cxd2820r +cxgb +cxgb3 +cxgb3i +cxgb4 +cxgb4i +cxgb4vf +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 +da9030_battery +da9034-ts +da903x +da903x_bl +da9052-battery +da9052_bl +da9052-hwmon +da9052_onkey +da9052-regulator +da9052_tsi +da9052_wdt +da9055-hwmon +da9055_onkey +da9055-regulator +da9055_wdt +da9063_onkey +da9063-regulator +da9063_wdt +da9150-charger +da9150-core +da9150-gpadc +da9210-regulator +da9211-regulator +dac02 +DAC960 +daqboard2000 +das08 +das08_isa +das08_pci +das16 +das16m1 +das1800 +das6402 +das800 +davicom +db9 +dc395x +dccp +dccp_diag +dccp_ipv4 +dccp_ipv6 +ddbridge +de2104x +decnet +deflate +defxx +denali +denali_dt +denali_pci +des_generic +designware_i2s +dgap +dgnc +dht11 +dib0070 +dib0090 +dib3000mb +dib3000mc +dib7000m +dib7000p +dib8000 +dibx000_common +digi_acceleport +digicolor-usart +diskonchip +divacapi +divadidd +diva_idi +diva_mnt +divas +dl2k +dlci +dlm +dln2 +dm1105 +dm9601 +dm-bio-prison +dm-bufio +dm-cache +dm-cache-cleaner +dm-cache-mq +dm-cache-smq +dm-crypt +dm-delay +dme1737 +dm-era +dmfe +dm-flakey +dmi-sysfs +dm-log +dm-log-userspace +dm-log-writes +dmm32at +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-verity +dmx3191d +dm-zero +dnet +dn_rtmsg +docg3 +docg4 +dp83867 +drbd +drbg +drm +drm_kms_helper +drv260x +drv2665 +drv2667 +drx39xyj +drxd +drxk +ds1621 +ds1682 +ds1wm +ds2482 +ds2490 +ds2760_battery +ds2780_battery +ds2781_battery +ds2782_battery +ds3000 +ds620 +dsbr100 +dscc4 +dss1_divert +dst +dst_ca +dt2801 +dt2811 +dt2814 +dt2815 +dt2817 +dt282x +dt3000 +dt3155 +dt9812 +dummy +dummy-irq +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-digitv +dvb-usb-dtt200u +dvb-usb-dtv5100 +dvb-usb-dvbsky +dvb-usb-dw2102 +dvb-usb-ec168 +dvb-usb-friio +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_v2 +dvb-usb-vp702x +dvb-usb-vp7045 +dwc3 +dwc3-pci +dwc3-qcom +dw_dmac +dw_dmac_core +dw_dmac_pci +dwmac-generic +dwmac-ipq806x +dwmac-lpc18xx +dwmac-meson +dwmac-rk +dwmac-socfpga +dwmac-sti +dwmac-sunxi +dw_mmc +dw_mmc-exynos +dw_mmc-k3 +dw_mmc-pci +dw_mmc-pltfm +dw_wdt +dyna_pci10xx +dynapro +e100 +e1000 +e1000e +e3x0-button +e4000 +earth-pt1 +earth-pt3 +ebt_802_3 +ebtable_broute +ebtable_filter +ebtable_nat +ebtables +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 +ec100 +echainiv +echo +ec_sys +edac_core +edt-ft5x06 +eeprom +eeprom_93cx6 +eeprom_93xx46 +eeti_ts +efi-pstore +efs +egalax_ts +ehci-msm +ehci-platform +ehset +elan_i2c +elants_i2c +elo +em28xx +em28xx-alsa +em28xx-dvb +em28xx-rc +em28xx-v4l +emac_arc +emac_rockchip +emc1403 +emc2103 +emc6w201 +em_canid +em_cmp +emi26 +emi62 +em_ipset +em_meta +em_nbyte +empeg +ems_pci +ems_usb +em_text +emu10k1-gp +em_u32 +enc28j60 +enclosure +ene_ir +eni +enic +epic100 +eql +esas2r +esd_usb2 +esi-sir +esp4 +esp6 +esp_scsi +et1011c +et131x +ethoc +evbug +exofs +extcon-adc-jack +extcon-arizona +extcon-axp288 +extcon-gpio +extcon-max14577 +extcon-max77693 +extcon-max77843 +extcon-max8997 +extcon-palmas +extcon-rt8973a +extcon-sm5502 +extcon-usb-gpio +ezusb +f2fs +f71805f +f71882fg +f75375s +f81232 +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_ssd1289 +fb_ssd1306 +fb_ssd1331 +fb_ssd1351 +fb_st7735r +fb_sys_fops +fbtft +fbtft_device +fb_tinylcd +fb_tls8204 +fb_uc1701 +fb_upd161704 +fb_watterott +fc0011 +fc0012 +fc0013 +fc2580 +fcoe +fcrypt +fdomain +fealnx +ff-memless +fid +fintek-cir +firedtv +firewire-core +firewire-net +firewire-ohci +firewire-sbp2 +firewire-serial +fixed +fl512 +fld +flexfb +fm10k +fm801-gp +fmc +fmc-chardev +fmc-fakedev +fmc-trivial +fmc-write-eeprom +fm_drv +forcedeth +fore_200e +fotg210-hcd +fotg210-udc +fou +freevxfs +fsa9480 +fscache +fsl-edma +fsl_lpuart +ft1000 +ftdi-elan +ftdi_sio +ftl +fujitsu_ts +fusbh200-hcd +g450_pll +g760a +g762 +g_acm_ms +gadgetfs +gamecon +gameport +garmin_gps +garp +g_audio +gcc-apq8084 +gcc-ipq806x +gcc-msm8660 +gcc-msm8916 +gcc-msm8960 +gcc-msm8974 +g_cdc +gcm +g_dbgp +gdmtty +gdmulte +gdmwm +generic +generic-adc-battery +generic_bl +genet +geneve +geneve_core +gen_probe +genwqe_card +g_ether +gf128mul +gf2k +g_ffs +gfs2 +ghash-ce +ghash-generic +g_hid +gigaset +girbil-sir +gl518sm +gl520sm +gl620a +gluebi +g_mass_storage +g_midi +g_ncm +g_nokia +go7007 +go7007-loader +go7007-usb +goku_udc +goodix +gp2ap002a00f +gp2ap020a00f +gpio +gpio-74x164 +gpio-74xx-mmio +gpio-addr-flash +gpio-adnp +gpio-adp5520 +gpio-adp5588 +gpio-altera +gpio-amd8111 +gpio-arizona +gpio_backlight +gpio-beeper +gpio-charger +gpio-crystalcove +gpio-da9052 +gpio-da9055 +gpio-dln2 +gpio-dwapb +gpio-fan +gpio-grgpio +gpio-ir-recv +gpio-janz-ttl +gpio-kempld +gpio_keys +gpio_keys_polled +gpio-lp3943 +gpio-max7300 +gpio-max7301 +gpio-max730x +gpio-max732x +gpio-mc33880 +gpio-mcp23s08 +gpio-ml-ioh +gpio_mouse +gpio-msm-v2 +gpio-pca953x +gpio-pcf857x +gpio-rdc321x +gpio-regulator +gpio-sch311x +gpio-syscon +gpio_tilt_polled +gpio-tps65912 +gpio-twl4030 +gpio-twl6040 +gpio-ucb1400 +gpio-viperboard +gpio-vx855 +gpio_wdt +gpio-wm831x +gpio-wm8350 +gpio-wm8994 +gpio-xgene-sb +gpio-zynq +g_printer +grace +grcan +gre +grip +grip_mp +gr_udc +gsc_hpdi +g_serial +gs_fpga +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 +gs_usb +gtco +guillemot +gunze +g_webcam +g_zero +hackrf +hamachi +hampshire +hanwang +hci +hci_uart +hci_vhci +hdlc +hdlc_cisco +hdlcdrv +hdlc_fr +hdlc_ppp +hdlc_raw +hdlc_raw_eth +hdlc_x25 +hdpvr +he +hexium_gemini +hexium_orion +hfc4s8s_l1 +hfcmulti +hfcpci +hfcsusb +hfc_usb +hfs +hfsplus +hi6421-pmic-core +hi6421-regulator +hid +hid-a4tech +hid-apple +hid-appleir +hid-aureal +hid-axff +hid-belkin +hid-betopff +hid-cherry +hid-chicony +hid-cp2112 +hid-cypress +hid-dr +hid-elecom +hid-elo +hid-emsff +hid-ezkey +hid-gaff +hid-generic +hid-gt683r +hid-gyration +hid-holtekff +hid-holtek-kbd +hid-holtek-mouse +hid-icade +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 +hidp +hid-penmount +hid-petalynx +hid-picolcd +hid-pl +hid-plantronics +hid-primax +hid-prodikeys +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-iio-common +hid-sensor-incl-3d +hid-sensor-magn-3d +hid-sensor-press +hid-sensor-prox +hid-sensor-rotation +hid-sensor-trigger +hid-sjoy +hid-sony +hid-speedlink +hid-steelseries +hid-sunplus +hid-thingm +hid-tivo +hid-tmff +hid-topseed +hid-twinhan +hid-uclogic +hid-waltop +hid-wiimote +hid-xinmo +hid-zpff +hid-zydacron +hih6130 +hisax +hisax_fcpcipnp +hisax_isac +hisax_st5481 +hisi504_nand +hisi-acpu-cpufreq +hisi_thermal +hmc5843_core +hmc5843_i2c +hmc5843_spi +hmc6352 +hopper +hostap +hostap_pci +hostap_plx +hp100 +hpfs +hpilo +hpsa +hptiop +hsi +hsi_char +hso +hsr +hsu_dma +hsu_dma_pci +htc-pasic3 +htu21 +huawei_cdc_ncm +hwa-hc +hwa-rc +hwmon-vid +hwspinlock_core +hx8357 +hysdn +i1480-dfu-usb +i1480-est +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-cros-ec-tunnel +i2c-designware-core +i2c-designware-pci +i2c-designware-platform +i2c-diolan-u2c +i2c-dln2 +i2c-gpio +i2c-hid +i2c-i801 +i2c-isch +i2c-kempld +i2c-matroxfb +i2c-mt65xx +i2c-mux +i2c-mux-gpio +i2c-mux-pca9541 +i2c-mux-pca954x +i2c-mux-pinctrl +i2c-nforce2 +i2c-nomadik +i2c-ocores +i2c-parport +i2c-parport-light +i2c-pca-platform +i2c-piix4 +i2c-qup +i2c-rk3x +i2c-robotfuzz-osif +i2c-scmi +i2c-simtec +i2c-sis5595 +i2c-sis630 +i2c-sis96x +i2c-smbus +i2c-stub +i2c-taos-evm +i2c-tiny-usb +i2c-versatile +i2c-via +i2c-viapro +i2c-viperboard +i2c-xgene-slimpro +i2c-xiic +i40e +i40evf +i5k_amb +i6300esb +i740fb +ib_addr +ib_cm +ib_core +ib_ipoib +ib_iser +ib_isert +ib_mad +ibmaem +ibmpex +ib_mthca +ib_qib +ib_sa +ib_srp +ib_srpt +ib_ucm +ib_umad +ib_uverbs +icplus +icp_multi +ics932s401 +idma64 +idmouse +idt77252 +ieee802154 +ieee802154_6lowpan +ieee802154_socket +ifb +iforce +igb +igbvf +igorplugusb +iguanair +iio_dummy +iio_hwmon +iio-trig-interrupt +iio-trig-periodic-rtc +iio-trig-sysfs +ii_pci20kc +ili210x +ili922x +ili9320 +imon +ims-pcu +imx074 +imx_thermal +ina209 +ina2xx +industrialio +industrialio-triggered-buffer +inet_diag +inexio +inftl +initio +input-leds +input-polldev +int51x1 +intel_vr_nor +interact +interval_tree_test +inv-mpu6050 +ioc4 +io_edgeport +io_ti +iowarrior +ip6_gre +ip6table_filter +ip6table_mangle +ip6table_nat +ip6table_raw +ip6_tables +ip6table_security +ip6t_ah +ip6t_eui64 +ip6t_frag +ip6t_hbh +ip6t_ipv6header +ip6t_MASQUERADE +ip6t_mh +ip6t_NPT +ip6t_REJECT +ip6t_rpfilter +ip6t_rt +ip6t_SYNPROXY +ip6_tunnel +ip6_udp_tunnel +ip6_vti +ipack +ipaq +ipcomp +ipcomp6 +ipddp +ipg +ip_gre +iphase +ipheth +ipip +ipmi_devintf +ipmi_msghandler +ipmi_poweroff +ipmi_si +ipmi_ssif +ipmi_watchdog +ipoctal +ipr +ips +ip_set +ip_set_bitmap_ip +ip_set_bitmap_ipmac +ip_set_bitmap_port +ip_set_hash_ip +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 +iptable_filter +iptable_mangle +iptable_nat +iptable_raw +ip_tables +iptable_security +ipt_ah +ipt_CLUSTERIP +ipt_ECN +ipt_MASQUERADE +ipt_REJECT +ipt_rpfilter +ipt_SYNPROXY +ip_tunnel +ipvlan +ip_vs +ip_vs_dh +ip_vs_fo +ip_vs_ftp +ip_vs_lblc +ip_vs_lblcr +ip_vs_lc +ip_vs_nq +ip_vs_pe_sip +ip_vs_rr +ip_vs_sed +ip_vs_sh +ip_vs_wlc +ip_vs_wrr +ip_vti +ipw +ipw2100 +ipw2200 +ipx +ircomm +ircomm-tty +irda +irda-usb +ir-hix5hd2 +ir-jvc-decoder +ir-kbd-i2c +irlan +ir-lirc-codec +ir-mce_kbd-decoder +ir-nec-decoder +irnet +ir-rc5-decoder +ir-rc6-decoder +ir-sanyo-decoder +ir-sharp-decoder +ir-sony-decoder +irtty-sir +ir-usb +ir-xmp-decoder +iscsi_boot_sysfs +iscsi_target_mod +iscsi_tcp +isdn +isdn_bsdcomp +isdnhdlc +isicom +isight_firmware +isl29003 +isl29018 +isl29020 +isl29028 +isl29125 +isl6271a-regulator +isl6405 +isl6421 +isl6423 +isl9305 +isofs +isp116x-hcd +isp1362-hcd +isp1704_charger +isp1760 +it87 +it913x +itd1000 +ite-cir +itg3200 +iuu_phoenix +ivtv +ivtv-alsa +ivtvfb +iw_c2 +iw_cm +iw_cxgb3 +iw_cxgb4 +iwl3945 +iwl4965 +iwldvm +iwlegacy +iwlmvm +iwlwifi +iw_nes +ix2505v +ixgb +ixgbe +ixgbevf +janz-cmodio +janz-ican3 +jc42 +jedec_probe +jffs2 +jfs +jitterentropy_rng +jmb38x_ms +jme +joydev +joydump +jr3_pci +jsa1212 +jsm +kafs +kalmia +kaweth +kbtab +kcomedilib +ke_counter +kempld-core +kempld_wdt +kernelcapi +keyspan +keyspan_pda +keyspan_remote +kfifo_buf +khazad +kingsun-sir +kl5kusb105 +kmx61 +ko2iblnd +kobil_sct +ks8842 +ks8851 +ks8851_mll +ks959-sir +ksdazzle-sir +ksocklnd +ksz884x +kvaser_pci +kvaser_usb +kxcjk-1013 +kxsd9 +kxtj9 +kyrofb +l1oip +l2tp_core +l2tp_debugfs +l2tp_eth +l2tp_ip +l2tp_ip6 +l2tp_netlink +l2tp_ppp +l4f00242t03 +l64781 +lanai +lapb +lapbether +latch-addr-flash +lattice-ecp3-config +lcc-ipq806x +lcc-msm8960 +lcd +ld9040 +ldusb +lec +led-class-flash +leds-88pm860x +leds-aat1290 +leds-adp5520 +leds-bcm6328 +leds-bcm6358 +leds-bd2802 +leds-blinkm +leds-da903x +leds-da9052 +leds-dac124s085 +leds-gpio +leds-ktd2692 +leds-lm3530 +leds-lm3533 +leds-lm355x +leds-lm3642 +leds-lp3944 +leds-lp8788 +leds-lp8860 +leds-lt3593 +leds-max77693 +leds-max8997 +leds-mc13783 +leds-menf21bmc +leds-pca9532 +leds-pca955x +leds-pca963x +leds-pm8941-wled +leds-pwm +leds-regulator +leds-ss4200 +leds-tca6507 +leds-tlc591xx +leds-wm831x-status +leds-wm8350 +ledtrig-backlight +ledtrig-camera +ledtrig-default-on +ledtrig-gpio +ledtrig-heartbeat +ledtrig-oneshot +ledtrig-timer +ledtrig-transient +legousbtower +lg2160 +lgdt3305 +lgdt3306a +lgdt330x +lgs8gxx +lg-vl600 +lib80211 +lib80211_crypt_ccmp +lib80211_crypt_tkip +lib80211_crypt_wep +libahci +libahci_platform +libceph +libcfs +libcomposite +libcrc32c +libcxgbi +libertas +libertas_sdio +libertas_spi +libertas_tf +libertas_tf_usb +libfc +libfcoe +libipw +libiscsi +libiscsi_tcp +libore +libosd +libsas +lightning +lineage-pem +linear +liquidio +lirc_bt829 +lirc_dev +lirc_imon +lirc_parallel +lirc_sasem +lirc_serial +lirc_sir +lirc_zilog +lis3l02dq +lis3lv02d +lis3lv02d_i2c +litelink-sir +lkkbd +llc +llc2 +llite_lloop +lm25066 +lm3533-als +lm3533_bl +lm3533-core +lm3533-ctrlbank +lm3630a_bl +lm3639_bl +lm63 +lm70 +lm73 +lm75 +lm77 +lm78 +lm80 +lm83 +lm8323 +lm8333 +lm85 +lm87 +lm90 +lm92 +lm93 +lm95234 +lm95241 +lm95245 +lms283gf05 +lms501kf03 +lmv +lnbp21 +lnbp22 +lnet +lnet_selftest +lockd +locktorture +lov +lp +lp3943 +lp3971 +lp3972 +lp855x_bl +lp8727_charger +lp872x +lp8755 +lp8788_adc +lp8788_bl +lp8788-buck +lp8788-charger +lp8788-ldo +lpc_ich +lpc_sch +lpddr_cmds +lpfc +lru_cache +lrw +ltc2941-battery-gauge +ltc2945 +ltc2978 +ltc3589 +ltc4151 +ltc4215 +ltc4222 +ltc4245 +ltc4260 +ltc4261 +ltr501 +ltv350qv +lustre +lv5207lp +lvstest +lxt +lz4 +lz4_compress +lz4hc +lz4hc_compress +m25p80 +m2m-deinterlace +m52790 +m62332 +m88ds3103 +m88rs2000 +m88rs6000t +ma600-sir +mac80211 +mac80211_hwsim +mac802154 +macb +mac-celtic +mac-centeuro +mac-croatian +mac-cyrillic +mac-gaelic +mac-greek +mac-iceland +mac-inuit +macmodes +mac-roman +mac-romanian +mac-turkish +macvlan +macvtap +mag3110 +magellan +mailbox-altera +mantis +mantis_core +map_absent +map_funcs +map_ram +map_rom +marvell +matrix-keymap +matrix_keypad +matroxfb_accel +matroxfb_base +matroxfb_crtc2 +matroxfb_DAC1064 +matroxfb_g450 +matroxfb_maven +matroxfb_misc +matroxfb_Ti3026 +matrox_w1 +max1027 +max1111 +max11801_ts +max1363 +max14577 +max14577_charger +max1586 +max16064 +max16065 +max1619 +max1668 +max17040_battery +max17042_battery +max197 +max2165 +max3100 +max3421-hcd +max34440 +max517 +max5821 +max63xx_wdt +max6639 +max6642 +max6650 +max6697 +max6875 +max7359_keypad +max77686 +max77693 +max77693_charger +max77693-haptic +max77802 +max77843 +max77843-haptic +max8649 +max8660 +max8688 +max8903_charger +max8907 +max8907-regulator +max8925_bl +max8925_onkey +max8925_power +max8925-regulator +max8952 +max8973-regulator +max8997 +max8997_charger +max8997_haptic +max8998 +max8998_charger +mb862xxfb +mb86a16 +mb86a20s +mc13783-adc +mc13783-pwrbutton +mc13783-regulator +mc13783_ts +mc13892-regulator +mc13xxx-core +mc13xxx-i2c +mc13xxx-regulator-core +mc13xxx-spi +mc44s803 +m_can +mcb +mcb-pci +mc-bus-driver +mceusb +mcp2120-sir +mcp251x +mcp3021 +mcp320x +mcp3422 +mcp4725 +mcp4922 +mcryptd +mcs5000_ts +mcs7780 +mcs7830 +mcs_touchkey +mct_u232 +md4 +mdc +mdc800 +md-cluster +mdio +mdio-bcm-unimac +mdio-bitbang +mdio-gpio +mdio-mux +mdio-mux-gpio +mdio-mux-mmioreg +mdio-octeon +me4000 +me_daq +media +megaraid +megaraid_mbox +megaraid_mm +megaraid_sas +memstick +mena21_wdt +menf21bmc +menf21bmc_hwmon +menf21bmc_wdt +men_z135_uart +men_z188_adc +metronomefb +metro-usb +mf6x4 +mga +mgc +michael_mic +micrel +microread +microread_i2c +microtek +minix +mip6 +mISDN_core +mISDN_dsp +mISDNinfineon +mISDNipac +mISDNisar +mite +mk712 +mkiss +mlx4_core +mlx4_en +mlx4_ib +mlx5_core +mlx5_ib +mlx90614 +mma8450 +mma8452 +mma9551 +mma9551_core +mma9553 +mmc35240 +mmcc-apq8084 +mmcc-msm8960 +mmcc-msm8974 +mmci_qcom_dml +mmc_spi +mms114 +mn88472 +mn88473 +mos7720 +mos7840 +moxa +mpc624 +mpl115 +mpl3115 +mpls_gso +mpls_router +mpoa +mpr121_touchkey +mpt2sas +mpt3sas +mptbase +mptctl +mptfc +mptlan +mptsas +mptscsih +mptspi +mpu3050 +mrf24j40 +mrp +ms5611_core +ms5611_i2c +ms5611_spi +ms_block +msdos +msi001 +msi2500 +msm +msm-rng +msp3400 +mspro_block +mt2060 +mt2063 +mt20xx +mt2131 +mt2266 +mt29f_spinand +mt312 +mt352 +mt6397-core +mt6397-regulator +mt7601u +mt8173-max98090 +mt8173-rt5650-rt5676 +mt9m001 +mt9m111 +mt9t031 +mt9t112 +mt9v011 +mt9v022 +mtd +mtd_blkdevs +mtdblock +mtdblock_ro +mtd_dataflash +mtdoops +mtdram +mtdswap +mtip32xx +mtk-afe-pcm +mtk-pmic-wrap +mtk-sd +mtk_wdt +mtouch +multipath +multiq3 +musb_hdrc +mvmdio +mvsas +mv_u3d_core +mv_udc +mvumi +mwifiex +mwifiex_pcie +mwifiex_sdio +mwifiex_usb +mwl8k +mxb +mxl111sf-demod +mxl111sf-tuner +mxl301rf +mxl5005s +mxl5007t +mxser +mxuport +myri10ge +nand +nand_bch +nand_ecc +nand_ids +nandsim +national +natsemi +nau7802 +navman +nbd +nci +nci_uart +ncpfs +nct6683 +nct6775 +nct7802 +nct7904 +nd_blk +nd_btt +nd_pmem +ne2k-pci +neofb +net1080 +net2272 +net2280 +netconsole +netjet +netlink_diag +netrom +netxen_nic +newtonkbd +nfc +nfc_digital +nfcmrvl +nfcmrvl_uart +nfcmrvl_usb +nf_conntrack +nf_conntrack_amanda +nf_conntrack_broadcast +nf_conntrack_ftp +nf_conntrack_h323 +nf_conntrack_ipv4 +nf_conntrack_ipv6 +nf_conntrack_irc +nf_conntrack_netbios_ns +nf_conntrack_netlink +nf_conntrack_pptp +nf_conntrack_proto_dccp +nf_conntrack_proto_gre +nf_conntrack_proto_sctp +nf_conntrack_proto_udplite +nf_conntrack_sane +nf_conntrack_sip +nf_conntrack_snmp +nf_conntrack_tftp +nfcsim +nfcwilink +nf_defrag_ipv4 +nf_defrag_ipv6 +nfit +nf_log_arp +nf_log_bridge +nf_log_common +nf_log_ipv4 +nf_log_ipv6 +nf_nat +nf_nat_amanda +nf_nat_ftp +nf_nat_h323 +nf_nat_ipv4 +nf_nat_ipv6 +nf_nat_irc +nf_nat_masquerade_ipv4 +nf_nat_masquerade_ipv6 +nf_nat_pptp +nf_nat_proto_dccp +nf_nat_proto_gre +nf_nat_proto_sctp +nf_nat_proto_udplite +nf_nat_redirect +nf_nat_sip +nf_nat_snmp_basic +nf_nat_tftp +nfnetlink +nfnetlink_acct +nfnetlink_cthelper +nfnetlink_cttimeout +nfnetlink_log +nfnetlink_queue +nf_reject_ipv4 +nf_reject_ipv6 +nfs +nfs_acl +nfsd +nfs_layout_flexfiles +nfs_layout_nfsv41_files +nfsv2 +nfsv3 +nfsv4 +nf_synproxy_core +nf_tables +nf_tables_arp +nf_tables_bridge +nf_tables_inet +nf_tables_ipv4 +nf_tables_ipv6 +nf_tables_netdev +nft_chain_nat_ipv4 +nft_chain_nat_ipv6 +nft_chain_route_ipv4 +nft_chain_route_ipv6 +nft_compat +nft_counter +nft_ct +nft_exthdr +nft_hash +nftl +nft_limit +nft_log +nft_masq +nft_masq_ipv4 +nft_masq_ipv6 +nft_meta +nft_meta_bridge +nft_nat +nft_queue +nft_rbtree +nft_redir +nft_redir_ipv4 +nft_redir_ipv6 +nft_reject +nft_reject_bridge +nft_reject_inet +nft_reject_ipv4 +nft_reject_ipv6 +ngene +n_gsm +nhc_dest +nhc_fragment +nhc_hop +nhc_ipv6 +nhc_mobility +nhc_routing +nhc_udp +n_hdlc +ni_6527 +ni_65xx +ni_660x +ni_670x +ni_at_a2150 +ni_at_ao +ni_atmio +ni_atmio16d +nicpf +nicstar +nicvf +ni_labpc +ni_labpc_common +ni_labpc_pci +nilfs2 +ni_pcidio +ni_pcimio +ni_tio +ni_tiocmd +niu +ni_usb6501 +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 +nosy +notifier-error-inject +nouveau +nozomi +nps_enet +n_r3964 +ns558 +ns83820 +ntb +ntb_netdev +ntb_pingpong +ntb_tool +ntb_transport +ntc_thermistor +ntfs +n_tracerouter +n_tracesink +null_blk +nuvoton-cir +nvidiafb +nvme +nxp-nci +nxp-nci_i2c +nxt200x +nxt6000 +obdclass +obdecho +objlayoutdriver +ocfb +ocfs2 +ocfs2_dlm +ocfs2_dlmfs +ocfs2_nodemanager +ocfs2_stackglue +ocfs2_stack_o2cb +ocfs2_stack_user +ocrdma +of_mmc_spi +ofpart +of_xilinx_wdt +ohci-platform +old_belkin-sir +omap4-keypad +omfs +omninet +onenand +opencores-kbd +openvswitch +opticon +option +or51132 +or51211 +orinoco +orinoco_nortel +orinoco_plx +orinoco_tmd +orinoco_usb +osc +osd +osdblk +osst +oti6858 +ov2640 +ov5642 +ov6650 +ov7640 +ov7670 +ov772x +ov9640 +ov9740 +overlay +oxu210hp-hcd +ozwpan +p54common +p54pci +p54spi +p54usb +p8022 +p8023 +palmas-pwrbutton +palmas-regulator +pandora_bl +panel +panel-ld9040 +panel-s6e8aa0 +panel-sharp-lq101r1sx01 +panel-simple +parkbd +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_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 +pc300too +pc87360 +pc87427 +pcap_keys +pcap-regulator +pcap_ts +pcbc +pcf50633 +pcf50633-adc +pcf50633-backlight +pcf50633-charger +pcf50633-gpio +pcf50633-input +pcf50633-regulator +pcf8574_keypad +pcf8591 +pch_udc +pci +pci200syn +pcips2 +pci-stub +pcl711 +pcl724 +pcl726 +pcl730 +pcl812 +pcl816 +pcl818 +pcm3724 +pcmad +pcmda12 +pcmmio +pcmuio +pcnet32 +pcrypt +pcwd_pci +pcwd_usb +pda_power +pdc_adma +peak_pci +peak_usb +pegasus +penmount +percpu_test +pfuze100-regulator +phantom +phonet +phram +phy-bcm-kona-usb2 +phy-exynos-usb2 +phy-gpio-vbus-usb +phy-isp1301 +phy-msm-usb +phy-pxa-28nm-hsic +phy-pxa-28nm-usb2 +phy-qcom-apq8064-sata +phy-qcom-ipq806x-sata +phy-qcom-ufs +phy-qcom-ufs-qmp-14nm +phy-qcom-ufs-qmp-20nm +physmap +physmap_of +phy-tahvo +phy-tusb1210 +pinctrl-apq8064 +pinctrl-apq8084 +pinctrl-ipq8064 +pinctrl-msm8660 +pinctrl-msm8916 +pinctrl-msm8960 +pinctrl-msm8x74 +pinctrl-spmi-gpio +pinctrl-spmi-mpp +pixcir_i2c_ts +pkcs7_message +pkcs7_test_key +pktcdvd +pktgen +pl2303 +pl330 +platform_lcd +plat_nand +plat-ram +plip +plusb +pluto2 +plx_pci +pm2fb +pm3fb +pm80xx +pm8941-pwrkey +pmbus +pmbus_core +pmc551 +pmcraid +pm-notifier-error-inject +pn533 +pn544 +pn544_i2c +pn_pep +poly1305_generic +port100 +powermate +powr1220 +ppdev +ppp_async +ppp_deflate +ppp_mppe +pppoatm +pppoe +pppox +ppp_synctty +pps_core +pps-gpio +pps-ldisc +pps_parport +pptp +prism2_usb +ps2mult +ps8622 +psmouse +psnap +ptlrpc +ptn3460 +ptp +pvrusb2 +pwc +pwm-atmel-hlcdc +pwm-beeper +pwm_bl +pwm-fan +pwm-fsl-ftm +pwm-lp3943 +pwm-pca9685 +pwm-regulator +pwm-twl +pwm-twl-led +pxa27x_udc +qcaspi +qcaux +qcom_bam_dma +qcom_gsbi +qcom_hwspinlock +qcom_rpm +qcom_rpm-regulator +qcom-spmi-iadc +qcom-spmi-pmic +qcom_spmi-regulator +qcom-spmi-temp-alarm +qcom-spmi-vadc +qcom-wdt +qcrypto +qcserial +qinfo_probe +qla1280 +qla2xxx +qla3xxx +qla4xxx +qlcnic +qlge +qm1d1c0042 +qmi_wwan +qnx4 +qnx6 +qsemi +qt1010 +qt1070 +qt2160 +quatech2 +quota_tree +quota_v1 +quota_v2 +qxl +r128 +r592 +r6040 +r8152 +r8169 +r8188eu +r8192e_pci +r8192u_usb +r820t +r852 +r8712u +r8723au +r8a66597-hcd +r8a66597-udc +radeon +radeonfb +radio-bcm2048 +radio-i2c-si470x +radio-keene +radio-ma901 +radio-maxiradio +radio-mr800 +radio-platform-si4713 +radio-raremono +radio-shark +radio-si476x +radio-tea5764 +radio-usb-si470x +radio-usb-si4713 +radio-wl1273 +raid0 +raid1 +raid10 +raid456 +raid6_pq +raid6test +raid_class +ramoops +raw +rbd +rbtree_test +rc5t583-regulator +rc-adstech-dvb-t-pci +rc-alink-dtu-m +rc-anysee +rc-apac-viewcomp +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-behold +rc-behold-columbus +rc-budget-ci-old +rc-cinergy +rc-cinergy-1400 +rc-core +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-dvbsky +rc-em-terratec +rc-encore-enltv +rc-encore-enltv2 +rc-encore-enltv-fm53 +rc-evga-indtube +rc-eztv +rc-flydvb +rc-flyvideo +rc-fusionhdtv-mce +rc-gadmei-rm008z +rc-genius-tvgo-a11mce +rc-gotview7135 +rc-hauppauge +rc-imon-mce +rc-imon-pad +rc-iodata-bctv7e +rc-it913x-v1 +rc-it913x-v2 +rc-kaiomy +rc-kworld-315u +rc-kworld-pc150u +rc-kworld-plus-tv-analog +rc-leadtek-y04g0051 +rc-lirc +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-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-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-twinhan1027 +rc-twinhan-dtv-cab-ci +rc-videomate-m1f +rc-videomate-s350 +rc-videomate-tv-pvr +rc-winfast +rc-winfast-usbii-deluxe +rdc321x-southbridge +rdma_cm +rdma_ucm +rds +rds_rdma +rds_tcp +realtek +redboot +redrat3 +reed_solomon +regmap-spmi +regulator-haptic +reiserfs +remoteproc +retu-mfd +retu-pwrbutton +retu_wdt +rfc1051 +rfc1201 +rfcomm +rfd_ftl +rfkill-gpio +rfkill-regulator +rio500 +rivafb +rj54n1cb0c +rk808 +rk808-regulator +rmd128 +rmd160 +rmd256 +rmd320 +rn5t618 +rn5t618-regulator +rn5t618_wdt +rndis_host +rndis_wlan +rocket +romfs +rose +rotary_encoder +rp2 +rpcrdma +rpcsec_gss_krb5 +rsa_generic +rsi_91x +rsi_sdio +rsi_usb +rsxx +rt2400pci +rt2500pci +rt2500usb +rt2800lib +rt2800mmio +rt2800pci +rt2800usb +rt2x00lib +rt2x00mmio +rt2x00pci +rt2x00usb +rt5033 +rt5033_battery +rt5033-regulator +rt61pci +rt73usb +rt9455_charger +rtc-88pm80x +rtc-88pm860x +rtc-ab3100 +rtc-ab-b5ze-s3 +rtc-abx80x +rtc-as3722 +rtc-bq32k +rtc-bq4802 +rtc-da9052 +rtc-da9055 +rtc-da9063 +rtc-ds1286 +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-ds3234 +rtc-efi +rtc-em3027 +rtc-fm3130 +rtc-hid-sensor-time +rtc-hym8563 +rtc-isl12022 +rtc-isl12057 +rtc-isl1208 +rtc-lp8788 +rtc-m41t80 +rtc-m41t93 +rtc-m41t94 +rtc-m48t35 +rtc-m48t59 +rtc-m48t86 +rtc-max6900 +rtc-max6902 +rtc-max77686 +rtc-max77802 +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-pcf8563 +rtc-pcf8583 +rtc-pl030 +rtc-pl031 +rtc-pm8xxx +rtc-r9701 +rtc-rc5t583 +rtc-rk808 +rtc-rp5c01 +rtc-rs5c348 +rtc-rs5c372 +rtc-rv3029c2 +rtc-rx4581 +rtc-rx8025 +rtc-rx8581 +rtc-s35390a +rtc-s5m +rtc-snvs +rtc-stk17ta8 +rtc-tps6586x +rtc-tps65910 +rtc-tps80031 +rtc-twl +rtc-v3020 +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 +rtl8723ae +rtl8723be +rtl8723-common +rtl8821ae +rtllib +rtllib_crypt_ccmp +rtllib_crypt_tkip +rtllib_crypt_wep +rtl_pci +rtl_usb +rtlwifi +rts5208 +rtsx_pci +rtsx_pci_ms +rtsx_pci_sdmmc +rtsx_usb +rtsx_usb_ms +rtsx_usb_sdmmc +rx51_battery +rxkad +s1d13xxxfb +s2250 +s2255drv +s2io +s2mpa01 +s2mps11 +s3fb +s526 +s5h1409 +s5h1411 +s5h1420 +s5m8767 +s626 +s6e63m0 +s921 +saa6588 +saa6752hs +saa7115 +saa7127 +saa7134 +saa7134-alsa +saa7134-dvb +saa7134-empress +saa7134-go7007 +saa7146 +saa7146_vv +saa7164 +saa717x +saa7706h +safe_serial +salsa20_generic +samsung-keypad +samsung-sxgbe +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 +savage +savagefb +sb1000 +sbp_target +sbs-battery +sc16is7xx +sc92031 +sca3000 +sch5627 +sch5636 +sch56xx-common +sch_atm +sch_cbq +sch_choke +sch_codel +sch_drr +sch_dsmark +sch_fq +sch_fq_codel +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_tbf +sch_teql +scsi_debug +scsi_dh +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 +sdhci +sdhci-acpi +sdhci_f_sdh30 +sdhci-msm +sdhci-of-arasan +sdhci-pci +sdhci-pltfm +sdio_uart +seed +sensorhub +seqiv +ser_gigaset +serial2002 +serio_raw +sermouse +serpent_generic +serport +ses +sfc +sha1-ce +sha2-ce +shark2 +shpchp +sht15 +sht21 +shtc1 +sh_veu +si2157 +si2165 +si2168 +si21xx +si4713 +si476x-core +si7005 +si7020 +sidewinder +sierra +sierra_net +sil164 +sir-dev +sis190 +sis5595 +sis900 +sisfb +sisusbvga +sit +sja1000 +sja1000_isa +sja1000_platform +skd +skfp +skge +sky2 +sky81452 +sky81452-backlight +sky81452-regulator +sl811-hcd +slcan +slip +slram +sm501 +sm501fb +sm750fb +sm7xxfb +smb347-charger +sm_common +sm_ftl +smipcie +smm665 +smsc +smsc47b397 +smsc47m1 +smsc47m192 +smsc75xx +smsc911x +smsc9420 +smsc95xx +smscufx +smsdvb +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-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-firewire-lib +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-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-pcm-oss +snd-pcxhr +snd-portman2x4 +snd-pt2258 +snd-rawmidi +snd-riptide +snd-rme32 +snd-rme96 +snd-rme9652 +snd-scs1x +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-ac97 +snd-soc-adau1701 +snd-soc-ak4104 +snd-soc-ak4554 +snd-soc-ak4642 +snd-soc-ak5386 +snd-soc-alc5623 +snd-soc-apq8016-sbc +snd-soc-core +snd-soc-cs35l32 +snd-soc-cs4265 +snd-soc-cs4270 +snd-soc-cs4271 +snd-soc-cs4271-i2c +snd-soc-cs4271-spi +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-es8328 +snd-soc-fsl-asrc +snd-soc-fsl-esai +snd-soc-fsl-sai +snd-soc-fsl-spdif +snd-soc-fsl-ssi +snd-soc-hdmi-codec +snd-soc-imx-audmux +snd-soc-lpass-apq8016 +snd-soc-lpass-cpu +snd-soc-lpass-ipq806x +snd-soc-lpass-platform +snd-soc-max98090 +snd-soc-max98357a +snd-soc-pcm1681 +snd-soc-pcm1792a-codec +snd-soc-pcm512x +snd-soc-pcm512x-i2c +snd-soc-pcm512x-spi +snd-soc-rl6231 +snd-soc-rt5631 +snd-soc-rt5645 +snd-soc-rt5677 +snd-soc-rt5677-spi +snd-soc-sgtl5000 +snd-soc-si476x +snd-soc-sigmadsp +snd-soc-sigmadsp-i2c +snd-soc-simple-card +snd-soc-spdif-rx +snd-soc-spdif-tx +snd-soc-ssm2602 +snd-soc-ssm2602-i2c +snd-soc-ssm2602-spi +snd-soc-ssm4567 +snd-soc-sta32x +snd-soc-sta350 +snd-soc-storm +snd-soc-tas2552 +snd-soc-tas5086 +snd-soc-tas571x +snd-soc-tfa9879 +snd-soc-tlv320aic23 +snd-soc-tlv320aic23-i2c +snd-soc-tlv320aic23-spi +snd-soc-tlv320aic31xx +snd-soc-tlv320aic3x +snd-soc-tpa6130a2 +snd-soc-ts3a227e +snd-soc-wm8510 +snd-soc-wm8523 +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-wm8804 +snd-soc-wm8804-i2c +snd-soc-wm8804-spi +snd-soc-wm8903 +snd-soc-wm8962 +snd-soc-wm8978 +snd-soc-xtfpga-i2s +snd-sonicvibes +snd-timer +snd-trident +snd-ua101 +snd-usb-6fire +snd-usb-audio +snd-usb-caiaq +snd-usb-hiface +snd-usb-line6 +snd-usbmidi-lib +snd-usb-pod +snd-usb-podhd +snd-usb-toneport +snd-usb-variax +snd-util-mem +snd-via82xx +snd-via82xx-modem +snd-virmidi +snd-virtuoso +snd-vx222 +snd-vx-lib +snd-ymfpci +snic +soc_button_array +soc_camera +soc_camera_platform +soc_mediabus +softdog +softing +solo6x10 +solos-pci +sony-btf-mpx +soundcore +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-bitbang +spi-butterfly +spi-cadence +spidev +spi-dln2 +spi-dw +spi-dw-midpci +spi-dw-mmio +spi-gpio +spi_ks8995 +spi-lm70llp +spi-nor +spi-oc-tiny +spi-pl022 +spi-pxa2xx-pci +spi-pxa2xx-platform +spi-qup +spi-rockchip +spi-sc18is602 +spi-tle62x0 +spi-xcomm +spi-zynqmp-gqspi +spmi +spmi-pmic-arb +sprd_serial +squashfs +sr9700 +sr9800 +ssb +ssb-hcd +ssd1307fb +ssfdc +ssp_accel_sensor +ssp_gyro_sensor +ssp_iio +sst25l +sstfb +ssu100 +st +st1232 +st21nfca_hci +st21nfca_i2c +st_accel +st_accel_i2c +st_accel_spi +starfire +stb0899 +stb6000 +stb6100 +st_drv +ste10Xp +ste_modem_rproc +stex +st_gyro +st_gyro_i2c +st_gyro_spi +stinger +stir4200 +stk1160 +stk3310 +stk8312 +stk8ba50 +stkwebcam +st_magn +st_magn_i2c +st_magn_spi +stmmac +stmmac-platform +stmpe-keypad +stmpe-ts +st-nci +st-nci_i2c +stowaway +stp +st_pressure +st_pressure_i2c +st_pressure_spi +streamzap +st_sensors +st_sensors_i2c +st_sensors_spi +stv0288 +stv0297 +stv0299 +stv0367 +stv0900 +stv090x +stv6110 +stv6110x +sundance +sungem +sungem_phy +sunhme +suni +sunkbd +sunrpc +sur40 +svgalib +sx8 +sx8654 +sx9500 +sym53c8xx +symbolserial +synaptics_i2c +synaptics_i2c_rmi4 +synaptics_usb +synclink_gt +synclinkmp +syscopyarea +sysfillrect +sysimgblt +sysv +t1pci +t5403 +target_core_file +target_core_iblock +target_core_mod +target_core_pscsi +target_core_user +tc3589x-keypad +tc74 +tc90522 +tca6416-keypad +tca8418_keypad +tcm_fc +tcm_loop +tcm_qla2xxx +tcm_usb_gadget +tcp_bic +tcp_cdg +tcp_dctcp +tcp_diag +tcp_highspeed +tcp_htcp +tcp_hybla +tcp_illinois +tcp_lp +tcp_scalable +tcp_vegas +tcp_veno +tcp_westwood +tcp_yeah +tcrypt +tcs3414 +tcs3472 +tda10021 +tda10023 +tda10048 +tda1004x +tda10071 +tda10086 +tda18212 +tda18218 +tda18271 +tda18271c2dd +tda665x +tda7432 +tda8083 +tda8261 +tda826x +tda827x +tda8290 +tda9840 +tda9887 +tda998x +tdfx +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 +tekram-sir +test_bpf +test_firmware +test-hexdump +test-kstrtox +test_module +test_power +test-string_helpers +test_udelay +test_user_copy +tg3 +tgr192 +thmc50 +thunder_bgx +thunderbolt +ti-adc081c +ti-adc128s052 +ti_am335x_adc +ti_am335x_tsc +ti_am335x_tscadc +ti_dac7512 +tifm_7xx1 +tifm_core +tifm_ms +tifm_sd +timeriomem-rng +tipc +ti_usb_3410_5052 +tlan +tm6000 +tm6000-alsa +tm6000-dvb +tmdc +tmp006 +tmp102 +tmp103 +tmp401 +tmp421 +toim3232-sir +torture +toshsd +touchit213 +touchright +touchwin +tpci200 +tpm_atmel +tpm_i2c_atmel +tpm_i2c_infineon +tpm_i2c_nuvoton +tpm_infineon +tpm-rng +tpm_st33zp24 +tpm_st33zp24_i2c +tpm_st33zp24_spi +tps40422 +tps51632-regulator +tps6105x +tps6105x-regulator +tps62360-regulator +tps65010 +tps65023-regulator +tps6507x +tps6507x-regulator +tps6507x-ts +tps65090-charger +tps65090-regulator +tps65217 +tps65217_bl +tps65217-regulator +tps65218 +tps65218-pwrbutton +tps65218-regulator +tps6524x-regulator +tps6586x-regulator +tps65910-regulator +tps65912-regulator +tps80031-regulator +trancevibrator +trf7970a +tridentfb +ts2020 +ts_bm +tsc2005 +tsc2007 +tsc40 +ts_fsm +ts_kmp +tsl2550 +tsl2563 +tsl2583 +tsl2x7x_core +tsl4531 +ttm +ttpci-eeprom +ttusb_dec +ttusbdecfe +ttusbir +tua6100 +tua9001 +tulip +tuner +tuner-simple +tuner-types +tuner-xc2028 +tunnel4 +tunnel6 +turbografx +tvaudio +tveeprom +tvp5150 +tw2804 +tw68 +tw9903 +tw9906 +tw9910 +twidjoy +twl4030_charger +twl4030_keypad +twl4030-madc +twl4030_madc_battery +twl4030-madc-hwmon +twl4030-pwrbutton +twl4030-vibra +twl4030_wdt +twl6030-gpadc +twl6040-vibra +twl-regulator +twofish_common +twofish_generic +typhoon +u132-hcd +uas +ubi +ubifs +ucb1400_core +ucb1400_ts +ucd9000 +ucd9200 +uda1342 +udc-core +udc-xilinx +udf +udl +udlfb +udp_diag +udp_tunnel +ueagle-atm +u_ether +ufs +ufshcd +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 +uli526x +ulpi +umc +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 +unioxx5 +unix_diag +upd64031a +upd64083 +usb3503 +usb_8dev +usb8xxx +usbatm +usb_debug +usbdux +usbduxfast +usbduxsigma +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_uac1 +usb_f_uac2 +usb_f_uvc +usb_gigaset +usbhid +usbip-core +usbip-host +usbkbd +usblcd +usbled +usblp +usbmisc_imx +usbmon +usbmouse +usbnet +usbserial +usb-serial-simple +usbsevseg +usb-storage +usbtest +usbtmc +usbtouchscreen +usbtv +usbvision +usb_wwan +usdhi6rol0 +u_serial +userspace-consumer +ushc +uss720 +uvcvideo +uvesafb +uwb +v4l2-common +v4l2-dv-timings +v4l2-flash-led-class +v4l2-mem2mem +vcan +vcnl4000 +ves1820 +ves1x93 +veth +vexpress +vf610_adc +vfio +vfio-amba +vfio_iommu_type1 +vfio-pci +vfio-platform +vfio-platform-calxedaxgmac +vfio_virqfd +vgastate +vgem +vgg2432a4 +vhci-hcd +vhost +vhost_net +vhost_scsi +via +via686a +via-rhine +via-sdmmc +via-velocity +videobuf2-core +videobuf2-dma-contig +videobuf2-dma-sg +videobuf2-dvb +videobuf2-memops +videobuf2-vmalloc +videobuf-core +videobuf-dma-sg +videobuf-dvb +videobuf-vmalloc +videodev +vim2m +viperboard +viperboard_adc +virtio-gpu +virtio_input +virtio-rng +virtio_scsi +virtual +visor +vitesse +vivid +vlsi_ir +vmac +vme_pio2 +vme_tsi148 +vme_user +vme_vmivme7805 +vmk80xx +vmwgfx +vmxnet3 +vp27smpx +vport-geneve +vport-gre +vport-vxlan +vringh +vsock +vsxxxaa +vt1211 +vt6655_stage +vt6656_stage +vt8231 +vt8623fb +vub300 +vx855 +vxge +vxlan +w1_bq27000 +w1_ds2406 +w1_ds2408 +w1_ds2413 +w1_ds2423 +w1_ds2431 +w1_ds2433 +w1_ds2760 +w1_ds2780 +w1_ds2781 +w1_ds28e04 +w1-gpio +w1_smem +w1_therm +w5100 +w5300 +w6692 +w83627ehf +w83627hf +w83781d +w83791d +w83792d +w83793 +w83795 +w83l785ts +w83l786ng +wacom +wacom_i2c +wacom_serial4 +wacom_w8001 +walkera0701 +wanxl +warrior +wcn36xx +wd719x +wdt87xx_i2c +wdt_pci +whci +whci-hcd +whc-rc +whiteheat +wil6210 +wimax +winbond-840 +wire +wishbone-serial +wl1251 +wl1251_sdio +wl1251_spi +wl1273-core +wl12xx +wl18xx +wlcore +wlcore_sdio +wlcore_spi +wm831x_backup +wm831x_bl +wm831x-dcdc +wm831x-hwmon +wm831x-isink +wm831x-ldo +wm831x-on +wm831x_power +wm831x-ts +wm831x_wdt +wm8350-hwmon +wm8350_power +wm8350-regulator +wm8350_wdt +wm8400-regulator +wm8739 +wm8775 +wm8994-core +wm8994-irq +wm8994-regmap +wm8994-regulator +wm97xx-ts +wp512 +wusb-cbaf +wusbcore +wusb-wa +x25 +x25_asy +xc4000 +xc5000 +xcbc +xen-blkback +xen-evtchn +xen-fbfront +xenfs +xen-gntalloc +xen-gntdev +xen-kbdfront +xen-netback +xen-privcmd +xen-scsiback +xen-scsifront +xen-tpmfront +xen_wdt +xfrm4_mode_beet +xfrm4_mode_transport +xfrm4_mode_tunnel +xfrm4_tunnel +xfrm6_mode_beet +xfrm6_mode_ro +xfrm6_mode_transport +xfrm6_mode_tunnel +xfrm6_tunnel +xfrm_algo +xfrm_ipcomp +xfrm_user +xfs +xgene-dma +xgene_edac +xgene-enet +xgene-rng +xgifb +xhci-plat-hcd +xilinx_can +xilinx-tpg +xilinx_uartps +xilinx-video +xilinx-vtc +xillybus_core +xillybus_of +xillybus_pcie +xor +xpad +xsens_mt +x_tables +xt_addrtype +xt_AUDIT +xt_bpf +xt_cgroup +xt_CHECKSUM +xt_CLASSIFY +xt_cluster +xt_comment +xt_connbytes +xt_connlabel +xt_connlimit +xt_connmark +xt_CONNSECMARK +xt_conntrack +xt_cpu +xt_CT +xt_dccp +xt_devgroup +xt_dscp +xt_DSCP +xt_ecn +xt_esp +xt_hashlimit +xt_helper +xt_hl +xt_HL +xt_HMARK +xt_IDLETIMER +xt_ipcomp +xt_iprange +xt_ipvs +xtkbd +xt_l2tp +xt_LED +xt_length +xt_limit +xt_LOG +xt_mac +xt_mark +xt_multiport +xt_nat +xt_NETMAP +xt_nfacct +xt_NFLOG +xt_NFQUEUE +xt_osf +xt_owner +xt_physdev +xt_pkttype +xt_policy +xt_quota +xt_rateest +xt_RATEEST +xt_realm +xt_recent +xt_REDIRECT +xts +xt_sctp +xt_SECMARK +xt_set +xt_socket +xt_state +xt_statistic +xt_string +xt_tcpmss +xt_TCPMSS +xt_TCPOPTSTRIP +xt_tcpudp +xt_TEE +xt_time +xt_TPROXY +xt_TRACE +xt_u32 +xusbatm +xz_dec_test +yam +yealink +yellowfin +yurex +zaurus +zd1201 +zd1211rw +zforce_ts +zhenhua +zl10036 +zl10039 +zl10353 +zl6100 +zlib +zr364xx +zram --- linux-raspi2-4.2.0.orig/debian.master/abi/4.2.0-26.31/armhf/generic +++ linux-raspi2-4.2.0/debian.master/abi/4.2.0-26.31/armhf/generic @@ -0,0 +1,18425 @@ +EXPORT_SYMBOL arch/arm/crypto/aes-arm 0x276b2f72 private_AES_set_encrypt_key +EXPORT_SYMBOL arch/arm/crypto/aes-arm 0x6c62e582 AES_decrypt +EXPORT_SYMBOL arch/arm/crypto/aes-arm 0xc30fcbed AES_encrypt +EXPORT_SYMBOL arch/arm/crypto/aes-arm 0xcf024ae9 private_AES_set_decrypt_key +EXPORT_SYMBOL arch/arm/crypto/sha256-arm 0x10647a24 crypto_sha256_arm_update +EXPORT_SYMBOL arch/arm/crypto/sha256-arm 0xed455228 crypto_sha256_arm_finup +EXPORT_SYMBOL arch/arm/lib/xor-neon 0x0f051164 xor_block_neon_inner +EXPORT_SYMBOL crypto/gf128mul 0x0c2f123f gf128mul_4k_bbe +EXPORT_SYMBOL crypto/gf128mul 0x1068004b gf128mul_bbe +EXPORT_SYMBOL crypto/gf128mul 0x2f2889a0 gf128mul_init_64k_lle +EXPORT_SYMBOL crypto/gf128mul 0x3755f990 gf128mul_init_64k_bbe +EXPORT_SYMBOL crypto/gf128mul 0x384ef9ce gf128mul_64k_bbe +EXPORT_SYMBOL crypto/gf128mul 0x56af0dbd gf128mul_x_ble +EXPORT_SYMBOL crypto/gf128mul 0x83581089 gf128mul_init_4k_lle +EXPORT_SYMBOL crypto/gf128mul 0x9b2560b9 gf128mul_init_4k_bbe +EXPORT_SYMBOL crypto/gf128mul 0x9e13f6f6 gf128mul_lle +EXPORT_SYMBOL crypto/gf128mul 0xbd17a0df gf128mul_4k_lle +EXPORT_SYMBOL crypto/gf128mul 0xc0890413 gf128mul_64k_lle +EXPORT_SYMBOL crypto/gf128mul 0xd60736ec gf128mul_free_64k +EXPORT_SYMBOL crypto/mcryptd 0x28865246 mcryptd_arm_flusher +EXPORT_SYMBOL crypto/xor 0x5b6c00e6 xor_blocks +EXPORT_SYMBOL drivers/atm/suni 0xd834d48a suni_init +EXPORT_SYMBOL drivers/bcma/bcma 0x0e6bf296 bcma_core_irq +EXPORT_SYMBOL drivers/bcma/bcma 0xef9587a2 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 0x0ac89132 pi_do_claimed +EXPORT_SYMBOL drivers/block/paride/paride 0x0e2215f1 pi_schedule_claimed +EXPORT_SYMBOL drivers/block/paride/paride 0x25c6e0c8 pi_release +EXPORT_SYMBOL drivers/block/paride/paride 0x4267110a pi_register_driver +EXPORT_SYMBOL drivers/block/paride/paride 0x6551947f paride_register +EXPORT_SYMBOL drivers/block/paride/paride 0x9bd416e9 pi_connect +EXPORT_SYMBOL drivers/block/paride/paride 0xb21ba07d pi_unregister_driver +EXPORT_SYMBOL drivers/block/paride/paride 0xbf1c9f0f pi_read_regr +EXPORT_SYMBOL drivers/block/paride/paride 0xc42c1e7f pi_read_block +EXPORT_SYMBOL drivers/block/paride/paride 0xe270f5b2 pi_write_block +EXPORT_SYMBOL drivers/block/paride/paride 0xeb4cc690 pi_init +EXPORT_SYMBOL drivers/block/paride/paride 0xf3f0b67b pi_disconnect +EXPORT_SYMBOL drivers/block/paride/paride 0xfdd9f541 paride_unregister +EXPORT_SYMBOL drivers/block/paride/paride 0xfeccd506 pi_write_regr +EXPORT_SYMBOL drivers/bluetooth/btbcm 0x3cd48457 btbcm_patchram +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x1348760d ipmi_request_settime +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x16dcec76 ipmi_set_my_address +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x1a10c898 ipmi_set_maintenance_mode +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x1aba5db8 ipmi_unregister_smi +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x1fae3bac ipmi_addr_src_to_str +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x40f2b10c ipmi_alloc_smi_msg +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x423b776a ipmi_create_user +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x4c5756cf ipmi_smi_watcher_unregister +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x4c971bec ipmi_smi_msg_received +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x524f6f51 ipmi_get_my_address +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x5e80f37c ipmi_unregister_for_cmd +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x5fcdcc05 ipmi_get_my_LUN +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x67cb9784 ipmi_poll_interface +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x78e96efe ipmi_smi_add_proc_entry +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x78fd36e7 ipmi_request_supply_msgs +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x804f922a ipmi_addr_length +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x827d8775 ipmi_register_smi +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x8c8ee770 ipmi_destroy_user +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x96cbcc81 ipmi_get_version +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xa2a98b91 ipmi_get_maintenance_mode +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xac162cc2 ipmi_smi_watcher_register +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xd69f8567 ipmi_set_gets_events +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xdc72f5b2 ipmi_get_smi_info +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xe0fa83f2 ipmi_register_for_cmd +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xe4f4665b ipmi_validate_addr +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xe6ab72a6 ipmi_set_my_LUN +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xf2576cb9 ipmi_smi_watchdog_pretimeout +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xfcb77cfd ipmi_free_recv_msg +EXPORT_SYMBOL drivers/char/nvram 0x0f28cb91 nvram_read_byte +EXPORT_SYMBOL drivers/char/nvram 0x17ff2c1d __nvram_read_byte +EXPORT_SYMBOL drivers/char/nvram 0x2adec1e0 __nvram_check_checksum +EXPORT_SYMBOL drivers/char/nvram 0x7da28f12 nvram_check_checksum +EXPORT_SYMBOL drivers/char/nvram 0x9ce3f83f nvram_write_byte +EXPORT_SYMBOL drivers/char/nvram 0xa8813189 __nvram_write_byte +EXPORT_SYMBOL drivers/char/tpm/st33zp24/tpm_st33zp24 0x60df444e st33zp24_remove +EXPORT_SYMBOL drivers/char/tpm/st33zp24/tpm_st33zp24 0xeb162665 st33zp24_probe +EXPORT_SYMBOL drivers/char/tpm/st33zp24/tpm_st33zp24 0xf6c36867 st33zp24_pm_suspend +EXPORT_SYMBOL drivers/char/tpm/st33zp24/tpm_st33zp24 0xfd127316 st33zp24_pm_resume +EXPORT_SYMBOL drivers/char/xillybus/xillybus_core 0x25978d50 xillybus_isr +EXPORT_SYMBOL drivers/char/xillybus/xillybus_core 0x6b38c6f1 xillybus_endpoint_discovery +EXPORT_SYMBOL drivers/char/xillybus/xillybus_core 0x75a93fbc xillybus_endpoint_remove +EXPORT_SYMBOL drivers/char/xillybus/xillybus_core 0xe7e7667b xillybus_init_endpoint +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0x9211f664 dw_dma_cyclic_prep +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0xa1825119 dw_dma_cyclic_stop +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0xb66cf5d2 dw_dma_get_src_addr +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0xc8742d2e dw_dma_get_dst_addr +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0xd6165df0 dw_dma_cyclic_free +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0xe4779524 dw_dma_cyclic_start +EXPORT_SYMBOL drivers/dma/pl330 0xaf058ceb pl330_filter +EXPORT_SYMBOL drivers/edac/edac_core 0x925ad5e3 edac_mc_find +EXPORT_SYMBOL drivers/firewire/firewire-core 0x0276b4f6 fw_iso_buffer_init +EXPORT_SYMBOL drivers/firewire/firewire-core 0x04dd92ce fw_core_add_descriptor +EXPORT_SYMBOL drivers/firewire/firewire-core 0x04ef0c5c fw_iso_resource_manage +EXPORT_SYMBOL drivers/firewire/firewire-core 0x15daef79 fw_iso_context_queue_flush +EXPORT_SYMBOL drivers/firewire/firewire-core 0x16e91e21 fw_csr_iterator_next +EXPORT_SYMBOL drivers/firewire/firewire-core 0x1edee370 fw_iso_buffer_destroy +EXPORT_SYMBOL drivers/firewire/firewire-core 0x1efeb920 fw_schedule_bus_reset +EXPORT_SYMBOL drivers/firewire/firewire-core 0x2738488b fw_iso_context_create +EXPORT_SYMBOL drivers/firewire/firewire-core 0x2885fec5 fw_get_request_speed +EXPORT_SYMBOL drivers/firewire/firewire-core 0x32231497 fw_core_handle_response +EXPORT_SYMBOL drivers/firewire/firewire-core 0x369c7c8b fw_run_transaction +EXPORT_SYMBOL drivers/firewire/firewire-core 0x3c4625fe fw_bus_type +EXPORT_SYMBOL drivers/firewire/firewire-core 0x3c56ef91 fw_workqueue +EXPORT_SYMBOL drivers/firewire/firewire-core 0x3dcdba2c fw_iso_context_stop +EXPORT_SYMBOL drivers/firewire/firewire-core 0x47f7aa9c fw_card_initialize +EXPORT_SYMBOL drivers/firewire/firewire-core 0x485f6c3b fw_iso_context_queue +EXPORT_SYMBOL drivers/firewire/firewire-core 0x4d5d4eca fw_core_remove_descriptor +EXPORT_SYMBOL drivers/firewire/firewire-core 0x5f093700 fw_core_remove_card +EXPORT_SYMBOL drivers/firewire/firewire-core 0x61d8aa01 fw_core_handle_bus_reset +EXPORT_SYMBOL drivers/firewire/firewire-core 0x65c9438b fw_csr_iterator_init +EXPORT_SYMBOL drivers/firewire/firewire-core 0x70496d59 fw_device_enable_phys_dma +EXPORT_SYMBOL drivers/firewire/firewire-core 0x707c9275 fw_iso_context_destroy +EXPORT_SYMBOL drivers/firewire/firewire-core 0x7e431b14 fw_csr_string +EXPORT_SYMBOL drivers/firewire/firewire-core 0x86468d44 fw_rcode_string +EXPORT_SYMBOL drivers/firewire/firewire-core 0x90863005 fw_high_memory_region +EXPORT_SYMBOL drivers/firewire/firewire-core 0x93c220f3 fw_cancel_transaction +EXPORT_SYMBOL drivers/firewire/firewire-core 0x9429d39e fw_iso_context_flush_completions +EXPORT_SYMBOL drivers/firewire/firewire-core 0x9e835e06 fw_fill_response +EXPORT_SYMBOL drivers/firewire/firewire-core 0x9f0c3b79 fw_iso_context_start +EXPORT_SYMBOL drivers/firewire/firewire-core 0xc450bac0 fw_core_add_address_handler +EXPORT_SYMBOL drivers/firewire/firewire-core 0xc6ec3fd6 fw_send_request +EXPORT_SYMBOL drivers/firewire/firewire-core 0xcfeab7a7 fw_core_handle_request +EXPORT_SYMBOL drivers/firewire/firewire-core 0xd0421578 fw_send_response +EXPORT_SYMBOL drivers/firewire/firewire-core 0xd336fd3d fw_card_add +EXPORT_SYMBOL drivers/firewire/firewire-core 0xf9b86da7 fw_core_remove_address_handler +EXPORT_SYMBOL drivers/fmc/fmc 0x07f4d15b fmc_find_sdb_device +EXPORT_SYMBOL drivers/fmc/fmc 0x08f2d9ea fmc_scan_sdb_tree +EXPORT_SYMBOL drivers/fmc/fmc 0x09487b8b fmc_reprogram +EXPORT_SYMBOL drivers/fmc/fmc 0x0b66776e fmc_free_sdb_tree +EXPORT_SYMBOL drivers/fmc/fmc 0x10b48779 fmc_device_unregister +EXPORT_SYMBOL drivers/fmc/fmc 0x4b067c4d fmc_driver_register +EXPORT_SYMBOL drivers/fmc/fmc 0xacaf6559 fmc_show_sdb_tree +EXPORT_SYMBOL drivers/fmc/fmc 0xcc1da5f3 fmc_driver_unregister +EXPORT_SYMBOL drivers/fmc/fmc 0xd516f4dd fmc_device_register +EXPORT_SYMBOL drivers/fmc/fmc 0xec06f4f1 fmc_device_register_n +EXPORT_SYMBOL drivers/fmc/fmc 0xf3d6f197 fmc_device_unregister_n +EXPORT_SYMBOL drivers/gpu/drm/drm 0x003a42f3 drm_cvt_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00d15c36 drm_mode_create_dirty_info_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x010c05e2 drm_bridge_mode_fixup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0311046e drm_i2c_encoder_prepare +EXPORT_SYMBOL drivers/gpu/drm/drm 0x05256f99 drm_encoder_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0543a559 drm_mode_connector_attach_encoder +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0a72f765 drm_clflush_virt_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0ae4b94c drm_ht_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0b0a387f drm_master_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0cb120bb drm_property_create_object +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0eb72794 drm_pci_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0fccafb1 drm_global_item_unref +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0fd60df2 drm_get_connector_status_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x100755db drm_modeset_unlock_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x107742a9 drm_get_subpixel_order_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x11f97ac8 drm_connector_register +EXPORT_SYMBOL drivers/gpu/drm/drm 0x122f4a1a drm_mode_create_scaling_mode_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x12cc97cb drm_mode_create_rotation_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1306092f drm_modeset_unlock +EXPORT_SYMBOL drivers/gpu/drm/drm 0x14199db2 drm_framebuffer_reference +EXPORT_SYMBOL drivers/gpu/drm/drm 0x14a9a178 drm_get_format_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1657b5aa drm_bridge_mode_set +EXPORT_SYMBOL drivers/gpu/drm/drm 0x168de287 drm_atomic_set_fb_for_plane +EXPORT_SYMBOL drivers/gpu/drm/drm 0x175fd8dc drm_atomic_set_mode_for_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x18367bf1 drm_gem_create_mmap_offset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x183e9160 drm_property_lookup_blob +EXPORT_SYMBOL drivers/gpu/drm/drm 0x18d5ab13 drm_crtc_vblank_off +EXPORT_SYMBOL drivers/gpu/drm/drm 0x194eadaa drm_edid_header_is_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1a546ddd drm_mm_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1a770ac3 drm_detect_hdmi_monitor +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1ae49191 drm_calc_vbltimestamp_from_scanoutpos +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1b03a4ac drm_legacy_ioremapfree +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1b0de6af drm_bridge_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1b9b4a70 drm_open +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1c3ab32d drm_bridge_disable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1dd71f7a drm_err +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1dd80f22 drm_property_create_signed_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1e1bea1b drm_modeset_lock +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2060a647 drm_gem_free_mmap_offset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x20645642 drm_debug +EXPORT_SYMBOL drivers/gpu/drm/drm 0x228cb259 drm_warn_on_modeset_not_all_locked +EXPORT_SYMBOL drivers/gpu/drm/drm 0x22acaf62 drm_get_cea_aspect_ratio +EXPORT_SYMBOL drivers/gpu/drm/drm 0x22c1d7a0 drm_flip_work_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x22cb3e42 drm_vma_offset_lookup_locked +EXPORT_SYMBOL drivers/gpu/drm/drm 0x22d2686f drm_mode_create_from_cmdline_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x24de41b4 drm_flip_work_queue_task +EXPORT_SYMBOL drivers/gpu/drm/drm 0x254f6038 drm_atomic_add_affected_planes +EXPORT_SYMBOL drivers/gpu/drm/drm 0x25e724ac drm_atomic_async_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2650c937 drm_unplug_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2775dec4 drm_connector_unplug_all +EXPORT_SYMBOL drivers/gpu/drm/drm 0x27c89203 drm_select_eld +EXPORT_SYMBOL drivers/gpu/drm/drm 0x292418b1 drm_mode_create_aspect_ratio_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x29a010e6 drm_mm_insert_node_in_range_generic +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2bba9063 drm_atomic_connector_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2c801c87 drm_gtf_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2d50570f drm_rect_calc_hscale +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2d79ba50 drm_prime_gem_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2e7a4300 drm_rgb_quant_range_selectable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2f35ed81 drm_calc_timestamping_constants +EXPORT_SYMBOL drivers/gpu/drm/drm 0x31210c7e drm_send_vblank_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0x31222a79 drm_gem_prime_fd_to_handle +EXPORT_SYMBOL drivers/gpu/drm/drm 0x32c6037e drm_atomic_state_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x32e2d569 drm_framebuffer_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x346127a7 drm_global_item_ref +EXPORT_SYMBOL drivers/gpu/drm/drm 0x346e242c drm_ati_pcigart_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x35d5467e drm_atomic_check_only +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3710c87b drm_debugfs_remove_files +EXPORT_SYMBOL drivers/gpu/drm/drm 0x37ebe743 drm_mm_replace_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0x38a1f347 drm_gem_vm_open +EXPORT_SYMBOL drivers/gpu/drm/drm 0x38a4f7ae drm_format_num_planes +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3a25bee6 drm_ati_pcigart_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3ac1fef9 drm_mode_legacy_fb_format +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3b25701c drm_vma_node_allow +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3b7a8f6b drm_vma_offset_manager_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3b9d009a drm_format_plane_cpp +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3c378aec drm_mode_connector_update_edid_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3dd821c6 drm_vblank_off +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3e024309 drm_mode_crtc_set_gamma_size +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3e23eb9f drm_legacy_ioremap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3eb37b9d drm_ht_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3f17d884 drm_clflush_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3f90f683 __drm_modeset_lock_all +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4070cdab drm_i2c_encoder_mode_fixup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x408cfd0c drm_legacy_idlelock_take +EXPORT_SYMBOL drivers/gpu/drm/drm 0x40bd37e9 drm_panel_attach +EXPORT_SYMBOL drivers/gpu/drm/drm 0x42ed42fd drm_mode_config_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x43f266e4 drm_prime_sg_to_page_addr_arrays +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4646f88e drm_mode_validate_basic +EXPORT_SYMBOL drivers/gpu/drm/drm 0x47500fb7 drm_irq_uninstall +EXPORT_SYMBOL drivers/gpu/drm/drm 0x47a0dd6e drm_property_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x48abf74e drm_legacy_addmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x490cfb78 drm_mm_reserve_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0x49edfd53 drm_atomic_connectors_for_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4b052eb7 drm_dev_ref +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4b17d2a7 drm_vblank_on +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4c511235 drm_edid_is_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4d7a74a4 drm_modeset_lock_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4d8c7e26 drm_gem_create_mmap_offset_size +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4ea14be4 drm_mode_create_suggested_offset_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4ea1f5a2 drm_gem_object_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4f03f5f1 drm_handle_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0x50451fec drm_crtc_vblank_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5052093b drm_atomic_plane_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x50ba52f2 drm_i2c_encoder_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x50c17f38 drm_universal_plane_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x50e28c07 drm_edid_to_sad +EXPORT_SYMBOL drivers/gpu/drm/drm 0x526f6f71 drm_rect_calc_hscale_relaxed +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5305ba83 drm_mode_config_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x53b3b60b drm_pci_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x54195030 drm_gem_vm_close +EXPORT_SYMBOL drivers/gpu/drm/drm 0x54481df4 drm_sysfs_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0x54541cfc drm_flip_work_queue +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5472414a drm_platform_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x54fbc111 drm_property_create_blob +EXPORT_SYMBOL drivers/gpu/drm/drm 0x55030bd5 drm_atomic_state_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x56907750 drm_poll +EXPORT_SYMBOL drivers/gpu/drm/drm 0x56a4c289 drm_mode_plane_set_obj_prop +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5789a498 drm_object_property_set_value +EXPORT_SYMBOL drivers/gpu/drm/drm 0x57b6efe3 drm_ioctl_flags +EXPORT_SYMBOL drivers/gpu/drm/drm 0x581b0ea1 drm_atomic_legacy_backoff +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5970266b drm_panel_detach +EXPORT_SYMBOL drivers/gpu/drm/drm 0x59ef50f0 drm_edid_block_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5a268d54 drm_clflush_sg +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5a35bc48 drm_dev_unregister +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5b813cb5 drm_of_find_possible_crtcs +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5b8e068d drm_plane_from_index +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5e9e77fa drm_atomic_get_connector_state +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5faa5e3a drm_crtc_vblank_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0x60a1114c drm_modeset_lock_all_crtcs +EXPORT_SYMBOL drivers/gpu/drm/drm 0x60fad331 drm_pci_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x60fb18df drm_hdmi_vendor_infoframe_from_display_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6154d6c8 drm_crtc_get_hv_timing +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6179fb93 drm_vblank_pre_modeset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x622568a1 drm_modeset_drop_locks +EXPORT_SYMBOL drivers/gpu/drm/drm 0x623e31a1 drm_wait_one_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0x639be16c drm_debugfs_create_files +EXPORT_SYMBOL drivers/gpu/drm/drm 0x63ea27ce drm_i2c_encoder_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x65636bbe of_drm_find_panel +EXPORT_SYMBOL drivers/gpu/drm/drm 0x65d839e0 drm_panel_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0x66176d96 drm_i2c_encoder_detect +EXPORT_SYMBOL drivers/gpu/drm/drm 0x67633846 drm_mm_insert_node_generic +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6900d335 drm_rect_clip_scaled +EXPORT_SYMBOL drivers/gpu/drm/drm 0x692de116 drm_vblank_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6986bb6e drm_crtc_vblank_count +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6ad8b71a drm_framebuffer_unregister_private +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6e30ba8e drm_rect_rotate_inv +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6e9299a5 drm_dev_set_unique +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6f126f06 drm_mode_duplicate +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6f9d5701 drm_atomic_add_affected_connectors +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7073b09c drm_gem_object_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x707d28ab drm_mode_validate_size +EXPORT_SYMBOL drivers/gpu/drm/drm 0x72f1d654 drm_atomic_state_default_clear +EXPORT_SYMBOL drivers/gpu/drm/drm 0x74c1e529 drm_gem_mmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x74f7156d drm_gem_get_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0x75d21751 drm_bridge_pre_enable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x75fd8f59 drm_set_preferred_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x778e1844 drm_property_unreference_blob +EXPORT_SYMBOL drivers/gpu/drm/drm 0x77fc08b1 drm_gem_put_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0x782d999e drm_match_cea_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x78819ec8 drm_mm_dump_table +EXPORT_SYMBOL drivers/gpu/drm/drm 0x79e9912b drm_irq_install +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7a8cce82 drm_framebuffer_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7af144f8 drm_dev_unref +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7b2811f8 drm_gem_prime_handle_to_fd +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7b9fbf85 drm_flip_work_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7ce666ec drm_legacy_rmmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7d3dd724 drm_get_pci_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7e91cc78 drm_reinit_primary_mode_group +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7f6e3f47 drm_mode_prune_invalid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8001a65f drm_gem_prime_import +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8217aa58 drm_mode_create_tile_group +EXPORT_SYMBOL drivers/gpu/drm/drm 0x823c6abc drm_vma_node_is_allowed +EXPORT_SYMBOL drivers/gpu/drm/drm 0x82c2998f drm_flip_work_allocate_task +EXPORT_SYMBOL drivers/gpu/drm/drm 0x839f7a71 drm_bridge_enable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x83fc73e9 drm_vblank_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0x842603a6 drm_hdmi_avi_infoframe_from_display_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x848431b1 drm_crtc_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x858a1d64 drm_modeset_backoff_interruptible +EXPORT_SYMBOL drivers/gpu/drm/drm 0x85bed49a drm_property_add_enum +EXPORT_SYMBOL drivers/gpu/drm/drm 0x85d0ffe6 drm_atomic_crtc_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x871ab41a drm_rect_intersect +EXPORT_SYMBOL drivers/gpu/drm/drm 0x873f1564 drm_panel_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x87def014 drm_mode_equal_no_clocks_no_stereo +EXPORT_SYMBOL drivers/gpu/drm/drm 0x88dafe30 drm_mode_create_dvi_i_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0x89cbd0ad drm_modeset_unlock_all +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8de13715 drm_format_vert_chroma_subsampling +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8ec7dbf9 drm_mode_vrefresh +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8eccfb4b drm_crtc_vblank_reset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8eff9111 drm_ht_find_item +EXPORT_SYMBOL drivers/gpu/drm/drm 0x907d62cc drm_modeset_legacy_acquire_ctx +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9085b966 drm_legacy_idlelock_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x91fec1cc drm_rect_calc_vscale +EXPORT_SYMBOL drivers/gpu/drm/drm 0x92408488 drm_mm_scan_add_block +EXPORT_SYMBOL drivers/gpu/drm/drm 0x932b0408 drm_mode_copy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x93573bc1 drm_mode_equal +EXPORT_SYMBOL drivers/gpu/drm/drm 0x93fc4712 drm_mode_probed_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9589ccd0 drm_property_create_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0x98d5cc2f drm_crtc_handle_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9972db48 drm_rect_calc_vscale_relaxed +EXPORT_SYMBOL drivers/gpu/drm/drm 0x997bf914 drm_crtc_send_vblank_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9a853a48 drm_gtf_mode_complex +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9b7e156e drm_plane_force_disable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9ba53262 drm_mode_connector_list_update +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9c8c45ae drm_mode_connector_set_path_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9d7816bf drm_dev_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9df97434 drm_property_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9e6b3155 drm_vblank_post_modeset +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa03e91a5 drm_mode_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa04d87a5 drm_put_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa142614c drm_flip_work_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa1c9c5da drm_display_info_set_bus_formats +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa2343394 drm_i2c_encoder_restore +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa28078b2 drm_edid_duplicate +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa2899f64 drm_object_property_get_value +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa357eff6 drm_legacy_ioremap_wc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa3e1fceb drm_vblank_count_and_time +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa4466414 drm_mm_remove_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa467dd44 drm_legacy_getsarea +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa47653de drm_gem_dmabuf_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa4e720a6 drm_framebuffer_unreference +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa5bfb93e drm_atomic_state_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa6e8448c drm_encoder_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa7e82789 drm_edid_to_eld +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa8c7496a drm_vma_node_revoke +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa96acfcb drm_rect_debug_print +EXPORT_SYMBOL drivers/gpu/drm/drm 0xac513a37 drm_gem_handle_delete +EXPORT_SYMBOL drivers/gpu/drm/drm 0xac8be0e7 drm_read +EXPORT_SYMBOL drivers/gpu/drm/drm 0xad8f56c5 drm_legacy_rmmap_locked +EXPORT_SYMBOL drivers/gpu/drm/drm 0xae11fc0a drm_atomic_get_plane_state +EXPORT_SYMBOL drivers/gpu/drm/drm 0xaec7f1a2 drm_av_sync_delay +EXPORT_SYMBOL drivers/gpu/drm/drm 0xaf07eb47 drm_vma_offset_lookup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb020a289 drm_modeset_backoff +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb053adda drm_rect_rotate +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb08ca4d4 drm_pci_set_busid +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb13bd2ca drm_atomic_set_mode_prop_for_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb1e2a32a drm_dev_register +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb1efb892 drm_connector_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb292eb64 drm_ioctl +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb40f1d6b drm_vblank_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb50ffa38 drm_crtc_index +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb6b29611 drm_bridge_post_disable +EXPORT_SYMBOL drivers/gpu/drm/drm 0xba4c4958 drm_vblank_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbb4facf4 drm_i2c_encoder_mode_set +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbc783304 drm_atomic_set_crtc_for_connector +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbd1118c9 drm_property_create_bitmask +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbe2ef089 drm_atomic_set_crtc_for_plane +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbfea5292 drm_vma_offset_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc084b7f7 drm_vma_offset_manager_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc1c853b9 drm_property_create_enum +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc2370cde drm_crtc_wait_one_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc360e7e2 drm_ut_debug_printk +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc4a1848b drm_pci_exit +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc4d65de5 drm_connector_index +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc559cb8e drm_atomic_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc63f8aa6 drm_bridge_attach +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc660728e drm_atomic_get_crtc_state +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc803c796 drm_gem_dumb_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc82fa0ca drm_modeset_acquire_fini +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc9f1486a drm_gem_prime_export +EXPORT_SYMBOL drivers/gpu/drm/drm 0xca2a826a drm_i2c_encoder_dpms +EXPORT_SYMBOL drivers/gpu/drm/drm 0xca45efbc drm_format_horz_chroma_subsampling +EXPORT_SYMBOL drivers/gpu/drm/drm 0xca5c7790 drm_mm_init_scan_with_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcae04f65 drm_add_modes_noedid +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcc29abbe drm_property_create_bool +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcce0877b of_drm_find_bridge +EXPORT_SYMBOL drivers/gpu/drm/drm 0xccef2080 drm_plane_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcd0fc417 drm_ht_just_insert_please +EXPORT_SYMBOL drivers/gpu/drm/drm 0xce27f596 drm_gem_object_lookup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcee590c8 drm_crtc_check_viewport +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcefe3c65 drm_connector_unregister +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcf41fe70 drm_mode_create_tv_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcfbbaa6a drm_i2c_encoder_save +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcfceba1d drm_mode_group_init_legacy_group +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcfd22b3e drm_mode_get_tile_group +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd031bc67 drm_object_attach_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd0e420f5 drm_mode_find_dmt +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd193b570 drm_noop +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd2335101 drm_fb_get_bpp_depth +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd2ff4b01 drm_prime_pages_to_sg +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd34afc19 drm_modeset_lock_interruptible +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd36f794c drm_mode_set_crtcinfo +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd3c09ec7 drm_gem_handle_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd46982f0 drm_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd52b1d11 drm_mm_init_scan +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd5878ff3 drm_property_reference_blob +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd63b5da1 drm_pcie_get_speed_cap_mask +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd64afb6f drm_vma_offset_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd668ca4b drm_gem_object_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd67dd1e7 drm_mode_set_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd70c8470 drm_mm_debug_table +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd7fe13a3 drm_get_edid +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd9623843 drm_modeset_acquire_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdb9e3292 drm_mode_hsync +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdbb5a9f5 drm_ht_remove_item +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdc46fb14 drm_modeset_lock_all +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdcbbac41 drm_bridge_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdd150721 drm_mm_takedown +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdde86cdc drm_crtc_vblank_on +EXPORT_SYMBOL drivers/gpu/drm/drm 0xde2d668b drm_vblank_count +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdf2fe137 drm_framebuffer_lookup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdf666902 drm_rotation_simplify +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe2a770d0 drm_mode_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe2cb8a5a drm_mode_connector_set_tile_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe31d03ba drm_atomic_state_clear +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe5085818 drm_mode_object_find +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe51d89b5 drm_mm_clean +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe5578bf9 drm_i2c_encoder_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe585638e drm_gem_private_object_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe6acda11 drm_mode_parse_command_line_for_connector +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe7197773 drm_ht_insert_item +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe8490939 drm_legacy_mmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe911f8ea drm_panel_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe9722c17 drm_add_edid_modes +EXPORT_SYMBOL drivers/gpu/drm/drm 0xea553553 drm_mode_debug_printmodeline +EXPORT_SYMBOL drivers/gpu/drm/drm 0xed9b5073 drm_probe_ddc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf0882d16 drm_crtc_init_with_planes +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf0f1c495 drm_atomic_state_default_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf1421d13 drm_mode_sort +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf3e5379f drm_plane_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf62b07f0 drm_legacy_addbufs_pci +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf783010a drm_mode_set_config_internal +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfc3d2a2e drm_plane_index +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfc75d86d drm_platform_set_busid +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfcbef5d4 drm_connector_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfcf54a4f drm_mm_scan_remove_block +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfd063935 drm_edid_to_speaker_allocation +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfdcac0c9 drm_mode_config_reset +EXPORT_SYMBOL drivers/gpu/drm/drm 0xff0d1d2a drm_framebuffer_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xff1f85ee drm_gem_mmap_obj +EXPORT_SYMBOL drivers/gpu/drm/drm 0xffc6c87a drm_detect_monitor_audio +EXPORT_SYMBOL drivers/gpu/drm/drm 0xffe2bab8 drm_master_put +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x030bbaee drm_dp_mst_get_edid +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0644303d drm_atomic_helper_prepare_planes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x069bc90d drm_dp_aux_unregister +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x098e47d2 drm_dp_link_train_clock_recovery_delay +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0a11b678 drm_atomic_helper_check_planes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0cccb198 drm_primary_helper_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0f96ec70 drm_dp_clock_recovery_ok +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0f9f562d drm_atomic_helper_cleanup_planes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x128f0c68 drm_dp_mst_detect_port +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x163251c8 drm_dp_link_train_channel_eq_delay +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x163b3c8a drm_fb_helper_blank +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x1866db03 drm_kms_helper_poll_disable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x1975d666 drm_plane_helper_disable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x197e1e23 drm_dp_link_power_up +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x1bca7b13 drm_atomic_helper_connector_dpms +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x20a8434a drm_helper_mode_fill_fb_struct +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x23689131 drm_dp_mst_topology_mgr_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x238d50fc drm_atomic_helper_crtc_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2601ba5e drm_fb_helper_debug_enter +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x262e544e drm_helper_move_panel_connectors_to_head +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x289613cf __drm_atomic_helper_connector_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2c22b466 drm_atomic_helper_update_legacy_modeset_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2d492f05 drm_fb_helper_restore_fbdev_mode_unlocked +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2e2c1142 drm_helper_probe_single_connector_modes_nomerge +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2f960d89 drm_fb_helper_fini +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x31c11588 drm_pick_cmdline_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x34871adf drm_dp_channel_eq_ok +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x364dfda2 drm_atomic_helper_update_plane +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x39727e70 drm_primary_helper_update +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3b70a8d0 drm_helper_probe_single_connector_modes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3fc04926 drm_dp_mst_topology_mgr_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x414030ae drm_helper_crtc_in_use +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x417ec426 drm_atomic_helper_check +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x42e55616 drm_primary_helper_funcs +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x455389cf drm_atomic_helper_commit_modeset_enables +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4669797f drm_fb_helper_initial_config +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x46a0bd14 drm_atomic_helper_disable_plane +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4702bf80 drm_fb_helper_pan_display +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x48b30006 drm_kms_helper_poll_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4a927bfd drm_fb_helper_setcmap +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4b72c166 drm_plane_helper_update +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4c51c6fb drm_dp_mst_hpd_irq +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4d368509 drm_kms_helper_poll_enable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x52b78e88 drm_helper_connector_dpms +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x53912a00 drm_fb_helper_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x53c91f18 drm_dp_dpcd_read +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x53d21099 drm_atomic_helper_connector_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5519b124 drm_helper_resume_force_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5a2e8047 drm_atomic_helper_crtc_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5aba47c5 drm_dp_link_probe +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5acb5454 drm_helper_crtc_mode_set +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5f26c14c drm_dp_dpcd_read_link_status +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x64e6c2c0 drm_helper_crtc_mode_set_base +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x64fe2d67 drm_atomic_helper_commit +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x65b8f13f __drm_atomic_helper_crtc_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6a780474 drm_fb_helper_set_par +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6af78a5c drm_dp_check_act_status +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6cfd46c1 drm_fb_helper_add_one_connector +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6db92c85 drm_atomic_helper_plane_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6e750ca2 drm_atomic_helper_crtc_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x711a004a drm_dp_link_rate_to_bw_code +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x72c23e29 drm_atomic_helper_crtc_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7bd413e9 drm_crtc_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7c624e37 drm_has_preferred_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7ca74a56 drm_plane_helper_check_update +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7f4f66e7 drm_fb_helper_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x82ffa478 drm_fb_helper_fill_var +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x84e924ba drm_dp_get_adjust_request_pre_emphasis +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x85317bd0 drm_dp_update_payload_part2 +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8b8b25ac drm_fb_helper_prepare +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8c4d1625 drm_atomic_helper_connector_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x95ad01c9 drm_atomic_helper_plane_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x98904ed7 drm_dp_mst_reset_vcpi_slots +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x98c2cc40 drm_fb_helper_fill_fix +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9adad051 drm_fb_helper_single_add_all_connectors +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa017ee03 drm_atomic_helper_set_config +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa2b5bce4 drm_dp_mst_topology_mgr_suspend +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa3423dea drm_atomic_helper_check_modeset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa3f0e2cc drm_dp_mst_dump_topology +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa47826e4 drm_dp_calc_pbn_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa77858bb drm_dp_get_adjust_request_voltage +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa8d6809d drm_dp_bw_code_to_link_rate +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa91b165f drm_fb_helper_remove_one_connector +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xac2f4391 drm_kms_helper_poll_fini +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xac8b00b7 drm_dp_mst_allocate_vcpi +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xad7e5a86 drm_atomic_helper_page_flip +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xaeec709b drm_helper_encoder_in_use +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb1e9f87a drm_dp_update_payload_part1 +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb463fae5 drm_dp_dpcd_write +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb7ebdba0 drm_atomic_helper_connector_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb8729ff5 __drm_atomic_helper_crtc_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xba9ba253 drm_crtc_helper_set_config +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xbac89cff __drm_atomic_helper_plane_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xbc8957b1 __drm_atomic_helper_plane_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xbd21c9c3 drm_dp_link_configure +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xbfbac2aa drm_crtc_helper_set_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc15e2e76 drm_dp_mst_get_vcpi_slots +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc580f4eb drm_fb_helper_check_var +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xcab7b593 drm_atomic_helper_wait_for_vblanks +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd2ab5269 drm_helper_hpd_irq_event +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd3140d1a drm_atomic_helper_commit_modeset_disables +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd395a522 drm_atomic_helper_plane_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd53bbf62 drm_fb_helper_debug_leave +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd569e55f drm_dp_mst_deallocate_vcpi +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd593f38f drm_atomic_helper_connector_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd813c690 drm_dp_find_vcpi_slots +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd8e7f3ec drm_helper_disable_unused_functions +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd9f6c0b6 drm_primary_helper_disable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xdc6a3309 drm_atomic_helper_swap_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xdda155ac drm_atomic_helper_commit_planes_on_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe51ea5b6 drm_dp_link_power_down +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe639a503 drm_dp_mst_topology_mgr_resume +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe9cf51dc drm_dp_mst_topology_mgr_set_mst +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xeeb4232e drm_dp_aux_register +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf378f94e drm_atomic_helper_commit_planes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf88d8813 __drm_atomic_helper_connector_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xfaeb9959 drm_kms_helper_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xfda5fe32 drm_atomic_helper_plane_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x021110ff ttm_mem_global_alloc +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x132b05be ttm_round_pot +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x136ec7fa ttm_suspend_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x1ce7a7d8 ttm_prime_object_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x1dd1d124 ttm_bo_synccpu_write_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x1e4ee1ce ttm_dma_tt_fini +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x1f006a3d ttm_bo_device_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x201be8cc ttm_bo_dma_acc_size +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x21e162e7 ttm_bo_swapout_all +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x2b54aa9a ttm_object_file_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x2c7fac9b ttm_io_prot +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x2ff94038 ttm_pool_unpopulate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x3e0c6f71 ttm_mem_io_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x4628b006 ttm_read_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x485a5bc0 ttm_ref_object_add +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x49a85d7f ttm_bo_kunmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x49b57f18 ttm_bo_validate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x4f99b9b5 ttm_bo_lock_delayed_workqueue +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x4fb0abf9 ttm_mem_io_reserve +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x525cc385 ttm_bo_move_ttm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x54fd6b3e ttm_bo_synccpu_write_grab +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x56db1371 ttm_bo_unlock_delayed_workqueue +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x5cf59609 ttm_bo_global_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x60559afe ttm_bo_unref +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x62d19c01 ttm_page_alloc_debugfs +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x67b1d568 ttm_bo_global_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x6aee2d69 ttm_bo_init_mm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x6c0ec969 ttm_lock_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x6d1b9d29 ttm_tt_bind +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x7036eae2 ttm_bo_wait +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x730bf16b ttm_pool_populate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x798fc2da ttm_mem_global_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x7ef591a1 ttm_bo_manager_func +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x80d86f0e ttm_object_device_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x80dd177a ttm_fbdev_mmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x8589758d ttm_suspend_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x8616892d ttm_eu_fence_buffer_objects +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x86bb8a6c ttm_read_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x880a15ad ttm_base_object_lookup +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x8ac63820 ttm_bo_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x8d82b89c ttm_mem_io_free +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x8fad1720 ttm_bo_clean_mm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x94440bbe ttm_bo_acc_size +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x94894449 ttm_base_object_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x9783c525 ttm_mem_global_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x998e45c0 ttm_ref_object_base_unref +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x9b8f1e3f ttm_tt_fini +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xa41a3c14 ttm_eu_backoff_reservation +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xac1f3717 ttm_eu_reserve_buffers +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xb5c8d2d7 ttm_bo_unmap_virtual +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xb6a2e3b8 ttm_bo_move_memcpy +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xb6e6781b ttm_bo_mem_put +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xb9877466 ttm_bo_mmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xbc26bcf8 ttm_dma_tt_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xc2938c63 ttm_object_device_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xc863e139 ttm_bo_mem_space +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xc8a28435 ttm_tt_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xc968d68f ttm_write_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xccbbdb67 ttm_bo_add_to_lru +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xce6e43a8 ttm_base_object_lookup_for_ref +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xcf67c299 ttm_ref_object_exists +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xd2d72d53 ttm_mem_global_free +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xd4d2b1fd ttm_tt_set_placement_caching +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xd63176a5 ttm_bo_evict_mm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xd74df056 ttm_bo_device_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xd8edb115 ttm_base_object_unref +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xedf9dd78 ttm_bo_kmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xefc4df0d ttm_vt_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xefcc9e1f ttm_bo_create +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xf05315be ttm_mem_io_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xf3543361 ttm_bo_del_sub_from_lru +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xfa660a25 ttm_bo_move_accel_cleanup +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xfbc2c5ec ttm_object_file_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xfd7484d3 ttm_write_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xfe8cc064 ttm_vt_unlock +EXPORT_SYMBOL drivers/gpu/host1x/host1x 0x18cc0f30 host1x_syncpt_read +EXPORT_SYMBOL drivers/gpu/host1x/host1x 0x1f6c5125 host1x_channel_request +EXPORT_SYMBOL drivers/gpu/host1x/host1x 0x21c0cdd8 host1x_job_add_gather +EXPORT_SYMBOL drivers/gpu/host1x/host1x 0x23f402c2 host1x_job_pin +EXPORT_SYMBOL drivers/gpu/host1x/host1x 0x26a3ade1 host1x_channel_free +EXPORT_SYMBOL drivers/gpu/host1x/host1x 0x3076a936 host1x_client_register +EXPORT_SYMBOL drivers/gpu/host1x/host1x 0x37aab1c2 host1x_syncpt_get +EXPORT_SYMBOL drivers/gpu/host1x/host1x 0x3a72a4f5 host1x_job_unpin +EXPORT_SYMBOL drivers/gpu/host1x/host1x 0x43799a4e tegra_mipi_calibrate +EXPORT_SYMBOL drivers/gpu/host1x/host1x 0x5a1d582c host1x_device_exit +EXPORT_SYMBOL drivers/gpu/host1x/host1x 0x5bf4f85d host1x_job_alloc +EXPORT_SYMBOL drivers/gpu/host1x/host1x 0x6d967164 host1x_device_init +EXPORT_SYMBOL drivers/gpu/host1x/host1x 0x756ed086 host1x_syncpt_read_max +EXPORT_SYMBOL drivers/gpu/host1x/host1x 0x7e29ba1a host1x_channel_get +EXPORT_SYMBOL drivers/gpu/host1x/host1x 0x81fb0495 host1x_syncpt_id +EXPORT_SYMBOL drivers/gpu/host1x/host1x 0x86c7bbcb host1x_syncpt_free +EXPORT_SYMBOL drivers/gpu/host1x/host1x 0x8835d812 host1x_syncpt_get_base +EXPORT_SYMBOL drivers/gpu/host1x/host1x 0x88fde6a4 host1x_channel_put +EXPORT_SYMBOL drivers/gpu/host1x/host1x 0x901694f3 host1x_driver_register_full +EXPORT_SYMBOL drivers/gpu/host1x/host1x 0x905599cc host1x_client_unregister +EXPORT_SYMBOL drivers/gpu/host1x/host1x 0x9451a33e tegra_mipi_free +EXPORT_SYMBOL drivers/gpu/host1x/host1x 0x96863b8f host1x_driver_unregister +EXPORT_SYMBOL drivers/gpu/host1x/host1x 0x97cac9f5 host1x_syncpt_incr +EXPORT_SYMBOL drivers/gpu/host1x/host1x 0x9a4794c1 host1x_syncpt_request +EXPORT_SYMBOL drivers/gpu/host1x/host1x 0xa158b6e7 host1x_syncpt_base_id +EXPORT_SYMBOL drivers/gpu/host1x/host1x 0xa5e4f32e host1x_syncpt_wait +EXPORT_SYMBOL drivers/gpu/host1x/host1x 0xb0569e18 host1x_job_submit +EXPORT_SYMBOL drivers/gpu/host1x/host1x 0xb736a491 host1x_syncpt_incr_max +EXPORT_SYMBOL drivers/gpu/host1x/host1x 0xcf111f09 host1x_job_put +EXPORT_SYMBOL drivers/gpu/host1x/host1x 0xebd29b58 host1x_job_get +EXPORT_SYMBOL drivers/gpu/host1x/host1x 0xf05b8c8b host1x_syncpt_read_min +EXPORT_SYMBOL drivers/gpu/host1x/host1x 0xf0ab1dfc tegra_mipi_request +EXPORT_SYMBOL drivers/hwmon/hwmon-vid 0x0903c239 vid_from_reg +EXPORT_SYMBOL drivers/hwmon/hwmon-vid 0xef1c781c vid_which_vrm +EXPORT_SYMBOL drivers/hwmon/sch56xx-common 0x0e2a6864 sch56xx_read_virtual_reg +EXPORT_SYMBOL drivers/hwmon/sch56xx-common 0x0f5877d4 sch56xx_read_virtual_reg16 +EXPORT_SYMBOL drivers/hwmon/sch56xx-common 0x34257f35 sch56xx_watchdog_unregister +EXPORT_SYMBOL drivers/hwmon/sch56xx-common 0x71856d5a sch56xx_watchdog_register +EXPORT_SYMBOL drivers/hwmon/sch56xx-common 0xe5022f95 sch56xx_read_virtual_reg12 +EXPORT_SYMBOL drivers/hwmon/sch56xx-common 0xed1d2a08 sch56xx_write_virtual_reg +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-bit 0x0f5dc265 i2c_bit_add_numbered_bus +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-bit 0x8ffb541d i2c_bit_add_bus +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-bit 0xe2793814 i2c_bit_algo +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-pca 0x92b39067 i2c_pca_add_numbered_bus +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-pca 0xcf6c1bad i2c_pca_add_bus +EXPORT_SYMBOL drivers/i2c/busses/i2c-amd756 0xcc015d9f amd756_smbus +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x0be2a95c mma9551_read_accel_chan +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x0ffc9362 mma9551_read_config_words +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x160a2448 mma9551_read_status_words +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x358147b0 mma9551_update_config_bits +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x41ef446c mma9551_read_accel_scale +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x447d5bf8 mma9551_read_config_byte +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x530b2eff mma9551_write_config_words +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x682567ed mma9551_set_power_state +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x75ccb2cb mma9551_gpio_config +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x8282535a mma9551_read_version +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x9d276b47 mma9551_set_device_state +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xa1092f7a mma9551_write_config_word +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xaecaad8e mma9551_app_reset +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xb11d78bc mma9551_read_status_byte +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xbcd7fe96 mma9551_sleep +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xbd047fa7 mma9551_read_status_word +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xc078f3dc mma9551_write_config_byte +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xcc409a0d mma9551_read_config_word +EXPORT_SYMBOL drivers/iio/accel/st_accel 0x051a0a9b st_accel_common_probe +EXPORT_SYMBOL drivers/iio/accel/st_accel 0x80ef33cc st_accel_common_remove +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x07df56cc hid_sensor_write_raw_hyst_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x0cf57b71 hid_sensor_read_poll_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x1c875c4d hid_sensor_read_samp_freq_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x322ce79e hid_sensor_read_raw_hyst_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x90935225 hid_sensor_write_samp_freq_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0xc83a92bf hid_sensor_format_scale +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0xd098a6ec hid_sensor_parse_common_attributes +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-trigger 0x0f8bbf25 hid_sensor_pm_ops +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-trigger 0x2ef9229f hid_sensor_power_state +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-trigger 0xb614c0cb hid_sensor_setup_trigger +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-trigger 0xe29a7a87 hid_sensor_remove_trigger +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0x07a2293a ssp_enable_sensor +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0x1e8adbca ssp_register_consumer +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0x3203fda4 ssp_change_delay +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0x3441160d ssp_disable_sensor +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0x3cff089c ssp_get_sensor_delay +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/ssp_iio 0x2809eda4 ssp_common_buffer_postdisable +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/ssp_iio 0x53fc3745 ssp_common_buffer_postenable +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/ssp_iio 0xe9fcbcea 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 0x0b94dc48 st_sensors_read_info_raw +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x15fb83e5 st_sensors_deallocate_trigger +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x59bb0218 st_sensors_init_sensor +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x653c7197 st_sensors_sysfs_sampling_frequency_avail +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x67507391 st_sensors_power_enable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x6b0e8af5 st_sensors_sysfs_scale_avail +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x6d8bf4de st_sensors_set_odr +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x7f495259 st_sensors_set_dataready_irq +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x83ec2bf1 st_sensors_set_axis_enable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xbdcd5539 st_sensors_allocate_trigger +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xcc6c97ec st_sensors_set_enable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xe02f0be2 st_sensors_check_device_support +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xefcbf900 st_sensors_power_disable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xf5ff7f24 st_sensors_get_buffer_element +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xf98f93fc st_sensors_set_fullscale_by_gain +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors_i2c 0x6cd44c3c st_sensors_of_i2c_probe +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors_i2c 0xb7965f6b st_sensors_i2c_configure +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors_spi 0xc43298fe st_sensors_spi_configure +EXPORT_SYMBOL drivers/iio/gyro/st_gyro 0x2fa7e5eb st_gyro_common_remove +EXPORT_SYMBOL drivers/iio/gyro/st_gyro 0x312ee2cd st_gyro_common_probe +EXPORT_SYMBOL drivers/iio/imu/adis_lib 0x1fa01eba adis_enable_irq +EXPORT_SYMBOL drivers/iio/imu/adis_lib 0x80557407 adis_debugfs_reg_access +EXPORT_SYMBOL drivers/iio/industrialio 0x12081dce iio_trigger_poll_chained +EXPORT_SYMBOL drivers/iio/industrialio 0x1eeb1e75 iio_push_event +EXPORT_SYMBOL drivers/iio/industrialio 0x2d6bcdcb iio_trigger_generic_data_rdy_poll +EXPORT_SYMBOL drivers/iio/industrialio 0x51c72bea iio_trigger_free +EXPORT_SYMBOL drivers/iio/industrialio 0x55c96e4e iio_device_unregister +EXPORT_SYMBOL drivers/iio/industrialio 0x57c13e1a iio_triggered_buffer_predisable +EXPORT_SYMBOL drivers/iio/industrialio 0x68dbbf47 iio_bus_type +EXPORT_SYMBOL drivers/iio/industrialio 0x798b426a iio_device_register +EXPORT_SYMBOL drivers/iio/industrialio 0x7a83d5e2 iio_trigger_poll +EXPORT_SYMBOL drivers/iio/industrialio 0x7c0d5772 iio_buffer_init +EXPORT_SYMBOL drivers/iio/industrialio 0x7d69a1fe iio_read_const_attr +EXPORT_SYMBOL drivers/iio/industrialio 0x8bcde589 iio_trigger_register +EXPORT_SYMBOL drivers/iio/industrialio 0x93afa9c8 iio_triggered_buffer_postenable +EXPORT_SYMBOL drivers/iio/industrialio 0xa3ae0ed9 iio_trigger_unregister +EXPORT_SYMBOL drivers/iio/industrialio 0xa81eeec2 iio_trigger_notify_done +EXPORT_SYMBOL drivers/iio/industrialio 0xae0e072a iio_trigger_alloc +EXPORT_SYMBOL drivers/iio/industrialio 0xca7d0e51 iio_device_alloc +EXPORT_SYMBOL drivers/iio/industrialio 0xdea1aeb2 iio_device_free +EXPORT_SYMBOL drivers/iio/industrialio 0xdf76bbeb iio_pollfunc_store_time +EXPORT_SYMBOL drivers/iio/industrialio-triggered-buffer 0x84d6139d iio_triggered_buffer_cleanup +EXPORT_SYMBOL drivers/iio/industrialio-triggered-buffer 0xa4226a35 iio_triggered_buffer_setup +EXPORT_SYMBOL drivers/iio/kfifo_buf 0x0cfb0a37 devm_iio_kfifo_allocate +EXPORT_SYMBOL drivers/iio/kfifo_buf 0x282ad43d iio_kfifo_free +EXPORT_SYMBOL drivers/iio/kfifo_buf 0x408f9ea6 iio_kfifo_allocate +EXPORT_SYMBOL drivers/iio/kfifo_buf 0xd6082c37 devm_iio_kfifo_free +EXPORT_SYMBOL drivers/iio/magnetometer/st_magn 0x035d8f3c st_magn_common_remove +EXPORT_SYMBOL drivers/iio/magnetometer/st_magn 0x12dabe73 st_magn_common_probe +EXPORT_SYMBOL drivers/iio/pressure/ms5611_core 0xb909d76a ms5611_probe +EXPORT_SYMBOL drivers/iio/pressure/st_pressure 0x4378819b st_press_common_remove +EXPORT_SYMBOL drivers/iio/pressure/st_pressure 0x9e26fc66 st_press_common_probe +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x049ace30 rdma_addr_find_smac_by_sgid +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x04b8b6d7 rdma_translate_ip +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x1c3c0ad3 rdma_addr_size +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x273f4cca rdma_addr_cancel +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x45bbba01 rdma_resolve_ip +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x5347cc38 rdma_addr_unregister_client +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x7df81f32 rdma_addr_register_client +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0xbc297965 rdma_copy_addr +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0xf029eb25 rdma_addr_find_dmac_by_grh +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x04141d3a ib_send_cm_rtu +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x0d8044eb ib_send_cm_drep +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x16d44685 ib_send_cm_rej +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x1d2a8cda ib_send_cm_mra +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x2ba50db1 ib_send_cm_req +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x740114aa ib_send_cm_rep +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x74a6439f ib_cm_init_qp_attr +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x7571be18 ib_destroy_cm_id +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x7e8fdf70 ib_send_cm_apr +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x97267601 ib_send_cm_sidr_rep +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x9cb4f44a ib_create_cm_id +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xa08c2375 cm_class +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xac369162 ib_send_cm_lap +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xcc486609 ib_cm_notify +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xe9d0ef42 ib_cm_listen +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xf6b13fda ib_send_cm_dreq +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xfbabb227 ib_send_cm_sidr_req +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x007f24fd rdma_port_get_link_layer +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0154f510 ib_dealloc_xrcd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x026bab0b ib_get_client_data +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x06460932 ib_dereg_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x075f819c ib_find_cached_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x08128ea4 ib_resolve_eth_l2_attrs +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0904ab36 ib_query_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0c1b9ac1 ib_ud_header_unpack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0e138187 ib_get_cached_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x13579015 ib_create_ah_from_wc +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1823f7c7 ib_query_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1c9e453f ib_attach_mcast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1e491a04 ib_unmap_fmr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1efacab0 ib_umem_get +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x21fc225b ib_modify_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x23aeddf8 ib_open_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x25c545e5 ib_fmr_pool_unmap +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x28337cf9 ib_alloc_fast_reg_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2b28ae6f ibnl_multicast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2d1f072d ib_free_fast_reg_page_list +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2ed6e386 ib_ud_header_pack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x3030ba73 ib_query_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x30bbcf34 ib_find_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x3100404c ib_close_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x32118fc6 ibnl_put_attr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x366e7f9c ib_umem_page_count +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x3846de8c ib_alloc_fmr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x3ad93755 ib_create_fmr_pool +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x3b25564d ib_create_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x4417d555 ib_init_ah_from_wc +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x45c85829 ib_check_mr_status +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x48dfaa64 ib_detach_mcast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x4f06c22a ib_register_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x4f2d4a87 ib_create_flow +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x50dbc447 ib_flush_fmr_pool +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x520b2638 ib_pack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x52f64e61 ib_alloc_xrcd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5611cdea rdma_node_get_transport +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5d3728b4 ib_alloc_pd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5d3a3f2b ib_alloc_mw +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x616e2b86 ib_set_client_data +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6382adcd ib_modify_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x67250b40 ib_unregister_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6a887f7a ib_umem_copy_from +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6b7fa0aa ibnl_unicast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6c09bb75 ib_destroy_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6e030e26 ib_modify_qp_is_ok +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6e760ab6 ib_alloc_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6ffff323 ib_unregister_event_handler +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x70a162e2 ib_create_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x718c9e06 ib_umem_odp_map_dma_pages +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x741416c0 ib_destroy_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x795caf43 ib_query_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x79c8e069 ib_get_cached_lmc +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7d5b0261 ib_destroy_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x8bee5c3c ib_dealloc_mw +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x8eec2c66 ib_query_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x92f4223b ib_find_exact_cached_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x965a1bbb ib_destroy_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xaadb07e7 ib_destroy_flow +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xab0a3467 mult_to_ib_rate +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xad6fad31 ib_query_port +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xadeb142f ibnl_put_msg +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xae367f16 ib_modify_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xae81cc17 ib_find_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb1a312e1 ib_unpack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb4518777 ib_dealloc_fmr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb575dcdf ib_modify_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb93a52b0 ib_rate_to_mbps +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb94828fe ib_find_cached_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xbadd8259 ib_rate_to_mult +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xbdd5cd00 ib_unregister_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc1c7abce ib_alloc_fast_reg_page_list +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc32b59ff ib_destroy_fmr_pool +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc67f14a5 ibnl_remove_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc7dd361d ib_register_event_handler +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc879c08b ib_dealloc_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc9771d06 ib_reg_phys_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xcc018ba5 ib_dealloc_pd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xcf65793c ib_destroy_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xcfa2a09f ib_event_msg +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd1863dbd ib_umem_release +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xdc77db9c ib_query_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xde7b7253 ib_resize_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xdf16009a ib_get_cached_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xdf940fea ibnl_add_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe2c93a37 ib_register_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe3a58ab1 ib_fmr_pool_map_phys +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe5840ec6 ib_wc_status_msg +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe6449dba ib_rereg_phys_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe795fe1f ib_modify_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xed863b40 ib_modify_port +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xee9f2595 ib_dispatch_event +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf116a671 ib_create_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf19ff81c ib_query_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf2ed9f9e ib_create_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf4cf5b3f ib_get_dma_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xfa9f9a9f ib_umem_odp_unmap_dma_pages +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xfac5335d ib_create_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xfc150956 ib_ud_header_init +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x0c40b149 ib_mad_kernel_rmpp_agent +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x0fb37a50 ib_free_recv_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x2f0ea69e ib_response_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x39e3134e ib_process_mad_wc +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x463bea1a ib_post_send_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x556469da ib_redirect_mad_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x63e1d058 ib_create_send_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x6f077fcf ib_get_mad_data_offset +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x7b5d4b7a ib_is_mad_class_rmpp +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x92479fe9 ib_get_rmpp_segment +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x96629e68 ib_free_send_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xa0409260 ib_register_mad_agent +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xa7cc9997 ib_cancel_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xc6258099 ib_register_mad_snoop +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xd240e7fe ib_unregister_mad_agent +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xf96e7273 ib_modify_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x1a32156f ib_init_ah_from_mcmember +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x22f07253 ib_sa_unpack_path +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x53033154 ib_sa_path_rec_get +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x576fdbac ib_sa_free_multicast +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x8d0bae45 ib_sa_service_rec_query +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x96534d9c ib_sa_get_mcmember_rec +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x9e7aad54 ib_sa_register_client +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xa5232026 ib_sa_guid_info_rec_query +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xda0d50ec ib_sa_cancel_query +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xddc330e7 ib_sa_pack_path +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xde9e1b2c ib_sa_unregister_client +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xeb5dbe51 ib_sa_join_multicast +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xfc2f6c30 ib_init_ah_from_path +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x2569d757 ib_copy_path_rec_to_user +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x52a6ce77 ib_copy_ah_attr_to_user +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x7971c00e ib_copy_qp_attr_to_user +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0xe350f2aa ib_copy_path_rec_from_user +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x0ff9f042 iwpm_remove_mapinfo +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x10d75791 iw_cm_reject +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x270e4c23 iwpm_ack_mapping_info_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x308546b2 iw_cm_listen +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x3803e329 iwpm_mapping_error_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x3b558e08 iw_cm_accept +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x42667307 iwpm_register_pid_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x5da59312 iwpm_register_pid +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x6968573d iwpm_add_mapping +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x6996dad0 iwpm_add_mapping_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x6c74c344 iwpm_get_remote_info +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x904609a0 iwpm_remove_mapping +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x91a914d6 iwpm_init +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x9327be67 iwpm_exit +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x99edf901 iwpm_valid_pid +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xa1407e1c iwpm_remote_info_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xaffef437 iwpm_add_and_query_mapping_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xb05f7215 iwpm_mapping_info_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xb093e98f iw_create_cm_id +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xd447b24a iwpm_create_mapinfo +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xe59c8151 iw_destroy_cm_id +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xe88eb149 iw_cm_connect +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xf210e708 iw_cm_disconnect +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xf3667775 iw_cm_init_qp_attr +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xf380aa0f iwpm_add_and_query_mapping +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x0d3f3633 rdma_init_qp_attr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x27b2a931 rdma_resolve_route +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x2b214532 rdma_connect +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x33bc5a26 rdma_disconnect +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x4a14aa49 rdma_set_ib_paths +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x53b3f0da rdma_listen +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x56e777cf rdma_create_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x5d17d713 rdma_create_qp +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x74273898 rdma_join_multicast +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x84d33af2 rdma_destroy_qp +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x8dcf6a68 rdma_bind_addr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x907df803 rdma_event_msg +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x915565cb rdma_set_service_type +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x918776e6 rdma_reject +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xa0a4f29e rdma_resolve_addr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xa4a4288b rdma_accept +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xaeb688a6 rdma_notify +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xbd0de009 rdma_set_afonly +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xd7385dee rdma_destroy_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xdf176f36 rdma_get_service_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xdfa2410a rdma_leave_multicast +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xec79038a rdma_set_reuseaddr +EXPORT_SYMBOL drivers/input/gameport/gameport 0x218a539f gameport_open +EXPORT_SYMBOL drivers/input/gameport/gameport 0x46a017cb gameport_set_phys +EXPORT_SYMBOL drivers/input/gameport/gameport 0x56f1b286 gameport_stop_polling +EXPORT_SYMBOL drivers/input/gameport/gameport 0x63b6c6ac gameport_close +EXPORT_SYMBOL drivers/input/gameport/gameport 0x6d400040 __gameport_register_driver +EXPORT_SYMBOL drivers/input/gameport/gameport 0x97bba139 gameport_unregister_driver +EXPORT_SYMBOL drivers/input/gameport/gameport 0xd6f8504e gameport_start_polling +EXPORT_SYMBOL drivers/input/gameport/gameport 0xde504713 __gameport_register_port +EXPORT_SYMBOL drivers/input/gameport/gameport 0xdf7f1daa gameport_unregister_port +EXPORT_SYMBOL drivers/input/input-polldev 0x0fdc3307 input_unregister_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0x4b087235 input_allocate_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0x969880d8 input_register_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0xa7998a14 input_free_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0xb52aeaf2 devm_input_allocate_polled_device +EXPORT_SYMBOL drivers/input/matrix-keymap 0xf7d89e98 matrix_keypad_build_keymap +EXPORT_SYMBOL drivers/input/misc/ad714x 0x19195498 ad714x_disable +EXPORT_SYMBOL drivers/input/misc/ad714x 0x8f66e5d7 ad714x_probe +EXPORT_SYMBOL drivers/input/misc/ad714x 0x9fdc04ea ad714x_enable +EXPORT_SYMBOL drivers/input/misc/ad714x 0xabe72178 ad714x_remove +EXPORT_SYMBOL drivers/input/misc/cma3000_d0x 0x59711c82 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/sparse-keymap 0x0d6d1f12 sparse_keymap_entry_from_scancode +EXPORT_SYMBOL drivers/input/sparse-keymap 0x1d492560 sparse_keymap_report_entry +EXPORT_SYMBOL drivers/input/sparse-keymap 0x1df035c6 sparse_keymap_entry_from_keycode +EXPORT_SYMBOL drivers/input/sparse-keymap 0x46cb08b0 sparse_keymap_report_event +EXPORT_SYMBOL drivers/input/sparse-keymap 0x6c1927ec sparse_keymap_free +EXPORT_SYMBOL drivers/input/sparse-keymap 0xa3a90001 sparse_keymap_setup +EXPORT_SYMBOL drivers/input/touchscreen/ad7879 0x2cb3e341 ad7879_probe +EXPORT_SYMBOL drivers/input/touchscreen/ad7879 0x7803a368 ad7879_pm_ops +EXPORT_SYMBOL drivers/input/touchscreen/ad7879 0x97f83edf ad7879_remove +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x04403fcf unregister_capi_driver +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x14f2aa5a capi20_get_version +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x15db4e73 detach_capi_ctr +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x2b8eab1f capilib_free_ncci +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x2baa6586 capilib_new_ncci +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x31c24aa4 capi20_isinstalled +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x3df57305 capi20_release +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x420fc6ca capi_ctr_suspend_output +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x473829dd attach_capi_ctr +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x50b33ca4 capi_cmsg2message +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x5cb9c11c capi_ctr_ready +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x6057c6f3 capi_message2cmsg +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x62e32d43 capilib_data_b3_conf +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x71e8d5ba capilib_data_b3_req +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x7a33596c capi20_get_serial +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x7e6f1307 capi20_get_manufacturer +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x8f699913 capilib_release +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x98419cdb capi_ctr_handle_message +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x9f823278 register_capi_driver +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xa7c4fd6c capi_message2str +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xaa165d27 capilib_release_appl +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xb0cace3b capi_ctr_down +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xb19fda8d capi_cmd2str +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xb60e5e5f capi_cmsg_header +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xbd261131 capi_ctr_resume_output +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xc10fe128 cdebbuf_free +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xc42d9ec1 capi20_manufacturer +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xd9f91309 capi20_put_message +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xda279899 capi20_register +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xe19a11ac capi20_get_profile +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xe8ad9bd1 capi_cmsg2str +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x15296244 b1_send_message +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x1a2e1b59 b1_free_card +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x485747f2 b1_load_t4file +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x4d75de43 avmcard_dma_free +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x4e6eac80 b1_load_firmware +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x85f09690 b1_irq_table +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x863ec066 b1_parse_version +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x9521bb12 b1ctl_proc_fops +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x97ec6c61 b1_getrevision +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xa5770042 b1_register_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xb807acb4 b1_loaded +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xc60470bc avmcard_dma_alloc +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xc9f8b186 b1_release_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xdd6e2a99 b1_reset_ctr +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xdfd28376 b1_detect +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xe087fbec b1_load_config +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xedec8e2c b1_alloc_card +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xfa10fee4 b1_interrupt +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x13632c36 b1dma_send_message +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x40fb6763 b1dma_release_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x4457bc56 b1dma_reset_ctr +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x516a96d5 b1dmactl_proc_fops +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x88592238 b1dma_reset +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x958794c2 t1pci_detect +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x9cbffca6 b1dma_register_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xd1ad0cdf b1pciv4_detect +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xd6f9f1ea b1dma_interrupt +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xdbe7f1c4 b1dma_load_firmware +EXPORT_SYMBOL drivers/isdn/hardware/eicon/divadidd 0x2974ead1 DIVA_DIDD_Read +EXPORT_SYMBOL drivers/isdn/hardware/eicon/divadidd 0x7ab59853 proc_net_eicon +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0x7af0035e mISDNisac_irq +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0x83635b9e mISDNipac_init +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0xb1d6cbd8 mISDNisac_init +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0xb56d02d1 mISDNipac_irq +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNisar 0xaad74f9f mISDNisar_irq +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNisar 0xbd06f548 mISDNisar_init +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x07f4f2ce hisax_unregister +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x148f0c99 FsmFree +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x6fe1ca04 FsmDelTimer +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x93a64734 FsmChangeState +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x9df0cd27 FsmEvent +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x9f987c85 FsmRestartTimer +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0xa1bc94b9 FsmInitTimer +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0xd1f955bf hisax_init_pcmcia +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0xee93522c hisax_register +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0xf0a16657 FsmNew +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0xfc27303b HiSax_closecard +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x03903b2a isac_irq +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x227f8ce5 isacsx_irq +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x3f3b323a isac_d_l2l1 +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x66a3de77 isac_setup +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x7fc41236 isacsx_setup +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x9c386cf5 isac_init +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0x9ce3496f isdn_ppp_register_compressor +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0xa215ce15 register_isdn +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0xc64df2de isdn_ppp_unregister_compressor +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0xfa06820f isdn_register_divert +EXPORT_SYMBOL drivers/isdn/i4l/isdnhdlc 0x3b71e4fc isdnhdlc_decode +EXPORT_SYMBOL drivers/isdn/i4l/isdnhdlc 0x59cc8a7e isdnhdlc_out_init +EXPORT_SYMBOL drivers/isdn/i4l/isdnhdlc 0x8ee38862 isdnhdlc_rcv_init +EXPORT_SYMBOL drivers/isdn/i4l/isdnhdlc 0xfd9d4c09 isdnhdlc_encode +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x039ed718 mISDN_freedchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x04fc4543 recv_Echannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x06fcebef mISDN_FsmDelTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x076bba23 bchannel_get_rxbuf +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x14fc1eb6 mISDN_initdchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x1cf196fb mISDN_FsmAddTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x1e9a5811 mISDN_register_Bprotocol +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x2348cc3c mISDN_FsmFree +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x29fa5b43 mISDN_FsmRestartTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x32ef37d0 get_next_dframe +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x360c6192 dchannel_senddata +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x36ec1940 mISDN_FsmInitTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x3cb31a74 mISDNDevName4ch +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x47dbd4bd recv_Bchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x48f7d058 recv_Dchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x50c2230c mISDN_FsmChangeState +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x555a9934 create_l1 +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x588886a6 l1_event +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x597802b4 mISDN_unregister_device +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x749c5cba bchannel_senddata +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x8769ad43 queue_ch_frame +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x8a4e99fb mISDN_clock_update +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x8bc1a44c mISDN_clear_bchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x8fa55ce6 mISDN_initbchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xaf782778 mISDN_freebchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xb6de6c6a get_next_bframe +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xc3401729 mISDN_register_clock +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xcf62d6cb recv_Dchannel_skb +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xd285995f mISDN_clock_get +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xd3343cc9 mISDN_register_device +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 0xeb48ec55 mISDN_unregister_Bprotocol +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xf9e7832f mISDN_FsmNew +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xfae67e41 mISDN_ctrl_bchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xfc00f201 recv_Bchannel_skb +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_dsp 0x01087af0 mISDN_dsp_element_unregister +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_dsp 0x60721da7 dsp_audio_law_to_s32 +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_dsp 0xa215f1b2 dsp_audio_s16_to_law +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_dsp 0xb98308d8 mISDN_dsp_element_register +EXPORT_SYMBOL drivers/mailbox/omap-mailbox 0x0d7d1b30 omap_mbox_save_ctx +EXPORT_SYMBOL drivers/mailbox/omap-mailbox 0xb5a18f76 omap_mbox_disable_irq +EXPORT_SYMBOL drivers/mailbox/omap-mailbox 0xd3350a94 omap_mbox_enable_irq +EXPORT_SYMBOL drivers/mailbox/omap-mailbox 0xe175ce8d omap_mbox_restore_ctx +EXPORT_SYMBOL drivers/mailbox/omap-mailbox 0xf0add1c6 omap_mbox_request_channel +EXPORT_SYMBOL drivers/md/bcache/bcache 0x10dc0d06 bch_bset_insert +EXPORT_SYMBOL drivers/md/bcache/bcache 0x21c7828c bch_btree_sort_partial +EXPORT_SYMBOL drivers/md/bcache/bcache 0x3361c614 bch_bset_sort_state_init +EXPORT_SYMBOL drivers/md/bcache/bcache 0x3df6b9be closure_sub +EXPORT_SYMBOL drivers/md/bcache/bcache 0x66d28e22 bch_btree_iter_init +EXPORT_SYMBOL drivers/md/bcache/bcache 0x6969b5d8 bch_bset_init_next +EXPORT_SYMBOL drivers/md/bcache/bcache 0x7b55ca4f bch_bset_fix_invalidated_key +EXPORT_SYMBOL drivers/md/bcache/bcache 0x9e8b3cee bch_btree_keys_alloc +EXPORT_SYMBOL drivers/md/bcache/bcache 0xab2d2b84 bch_btree_insert_key +EXPORT_SYMBOL drivers/md/bcache/bcache 0xad29a6f5 bch_bset_build_written_tree +EXPORT_SYMBOL drivers/md/bcache/bcache 0xad618859 closure_sync +EXPORT_SYMBOL drivers/md/bcache/bcache 0xaec09a2b bch_bkey_try_merge +EXPORT_SYMBOL drivers/md/bcache/bcache 0xaf77343c bch_btree_keys_free +EXPORT_SYMBOL drivers/md/bcache/bcache 0xc04554f7 bch_btree_iter_next +EXPORT_SYMBOL drivers/md/bcache/bcache 0xc60c9fbd closure_wait +EXPORT_SYMBOL drivers/md/bcache/bcache 0xca580595 bch_btree_keys_init +EXPORT_SYMBOL drivers/md/bcache/bcache 0xe3c17af1 __closure_wake_up +EXPORT_SYMBOL drivers/md/bcache/bcache 0xe47e0829 __bch_bset_search +EXPORT_SYMBOL drivers/md/bcache/bcache 0xf8fd4bac bch_btree_sort_lazy +EXPORT_SYMBOL drivers/md/bcache/bcache 0xfb249010 closure_put +EXPORT_SYMBOL drivers/md/dm-bufio 0x72f07bf4 dm_bufio_set_minimum_buffers +EXPORT_SYMBOL drivers/md/dm-bufio 0xa7978f56 dm_bufio_forget +EXPORT_SYMBOL drivers/md/dm-log 0x4c05a287 dm_dirty_log_type_unregister +EXPORT_SYMBOL drivers/md/dm-log 0x9f951d31 dm_dirty_log_destroy +EXPORT_SYMBOL drivers/md/dm-log 0xca05d33a dm_dirty_log_type_register +EXPORT_SYMBOL drivers/md/dm-log 0xfccfbb58 dm_dirty_log_create +EXPORT_SYMBOL drivers/md/dm-snapshot 0x19594647 dm_snap_cow +EXPORT_SYMBOL drivers/md/dm-snapshot 0x619e0a00 dm_exception_store_type_register +EXPORT_SYMBOL drivers/md/dm-snapshot 0x62ce245b dm_exception_store_create +EXPORT_SYMBOL drivers/md/dm-snapshot 0x715bb190 dm_exception_store_type_unregister +EXPORT_SYMBOL drivers/md/dm-snapshot 0xafc0fc8f dm_exception_store_destroy +EXPORT_SYMBOL drivers/md/dm-snapshot 0xc0405081 dm_snap_origin +EXPORT_SYMBOL drivers/md/raid456 0xcc4c59bc raid5_set_cache_size +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x156e988b flexcop_i2c_request +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x3e07d6ec flexcop_device_kmalloc +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x3ef0d432 flexcop_dump_reg +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x44cceef0 flexcop_pid_feed_control +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x492105f3 flexcop_pass_dmx_data +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x561fe633 flexcop_pass_dmx_packets +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x5764bd81 flexcop_sram_ctrl +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x613b71b0 flexcop_device_kfree +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x77f7ac23 flexcop_device_exit +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x92e0000c flexcop_wan_set_speed +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xa902c9b0 flexcop_eeprom_check_mac_addr +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xcef64fde flexcop_device_initialize +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xd5490422 flexcop_sram_set_dest +EXPORT_SYMBOL drivers/media/common/cx2341x 0x1ca0c084 cx2341x_log_status +EXPORT_SYMBOL drivers/media/common/cx2341x 0x2a6cd566 cx2341x_handler_set_50hz +EXPORT_SYMBOL drivers/media/common/cx2341x 0x2f25eee2 cx2341x_update +EXPORT_SYMBOL drivers/media/common/cx2341x 0x30cb4cd7 cx2341x_ext_ctrls +EXPORT_SYMBOL drivers/media/common/cx2341x 0x3db8be82 cx2341x_ctrl_query +EXPORT_SYMBOL drivers/media/common/cx2341x 0x7a0fc2c6 cx2341x_handler_init +EXPORT_SYMBOL drivers/media/common/cx2341x 0x92a42ede cx2341x_handler_setup +EXPORT_SYMBOL drivers/media/common/cx2341x 0xc184ec1e cx2341x_ctrl_get_menu +EXPORT_SYMBOL drivers/media/common/cx2341x 0xc9d08229 cx2341x_handler_set_busy +EXPORT_SYMBOL drivers/media/common/cx2341x 0xcf76ce95 cx2341x_fill_defaults +EXPORT_SYMBOL drivers/media/common/cx2341x 0xcf8b77a4 cx2341x_mpeg_ctrls +EXPORT_SYMBOL drivers/media/common/cypress_firmware 0x4835ab7d cypress_load_firmware +EXPORT_SYMBOL drivers/media/common/tveeprom 0x5c036e01 tveeprom_hauppauge_analog +EXPORT_SYMBOL drivers/media/common/tveeprom 0xd1e7010b tveeprom_read +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x019f611b dvb_dmx_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x07818f1f dvb_generic_open +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x0f6e2614 dvb_dmx_swfilter +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x1b937b8e dvb_generic_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x265c2e74 dvb_net_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x344908d4 dvb_ringbuffer_free +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x3656cb10 dvb_ringbuffer_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x36d0dc1b dvb_frontend_suspend +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x43816534 dvb_unregister_adapter +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x45e70a0a dvb_unregister_frontend +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x489fac82 dvb_generic_ioctl +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x4fd6bbdd dvb_ca_en50221_camchange_irq +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x5275c784 dvb_ca_en50221_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x5988775a dvb_frontend_reinitialise +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x629f9d31 dvb_ringbuffer_read_user +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x701743cd dvb_frontend_detach +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x72180695 dvb_ringbuffer_flush_spinlock_wakeup +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x74a5a698 dvb_filter_pes2ts_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x77bc054d dvb_dmxdev_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x7f5e483f dvb_dmx_swfilter_raw +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x80e3832d dvb_filter_get_ac3info +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x822539e5 dvb_dmx_swfilter_204 +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x834a44e8 dvb_dmx_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x8633f37b dvb_ringbuffer_flush +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x8905b2c2 dvb_register_device +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x9850cb88 dvb_ringbuffer_write_user +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x9c19040b dvb_ringbuffer_write +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xac4ca1b0 intlog2 +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xae1bc525 dvb_frontend_resume +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xb64e940e dvb_ca_en50221_camready_irq +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xb7189837 dvb_dmxdev_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xd397c23d dvb_unregister_device +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xd875e57f dvb_ca_en50221_frda_irq +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xd9087ad5 dvb_register_frontend +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xd9d42e07 dvb_register_adapter +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xdb1a8bd4 dvb_ringbuffer_empty +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xdc094c39 dvb_ringbuffer_avail +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xe25b7962 dvb_net_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xe5ae8707 intlog10 +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xe626ce29 dvb_dmx_swfilter_packets +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xf48116c6 dvb_ringbuffer_read +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xf821d629 dvb_frontend_sleep_until +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xf826deb0 dvb_filter_pes2ts +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xfa108d32 dvb_ca_en50221_init +EXPORT_SYMBOL drivers/media/dvb-frontends/a8293 0x68ef8331 a8293_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/af9013 0x67c2aea7 af9013_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/atbm8830 0x4da37b6b atbm8830_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x0fcdddf5 au8522_analog_i2c_gate_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x3f876d1b au8522_led_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x631080e4 au8522_init +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x6b71a8da au8522_release_state +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x764ac117 au8522_sleep +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x8fc1b97c au8522_writereg +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x93beec27 au8522_readreg +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x9faaf665 au8522_get_state +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0xd0c8c3c9 au8522_i2c_gate_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_dig 0xeead6661 au8522_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/bcm3510 0x89d379ad bcm3510_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx22700 0x7f2f9fc7 cx22700_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx22702 0xc47fe73c cx22702_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24110 0x40fa78f5 cx24110_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24113 0x860b76e3 cx24113_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24113 0x8a4b6632 cx24113_agc_callback +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24116 0x76987b25 cx24116_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24120 0x2843e30a cx24120_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24123 0x37657345 cx24123_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24123 0x5fc3effb cx24123_get_tuner_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/cxd2820r 0x0605a3a4 cxd2820r_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0x0d3e519a dib0070_ctrl_agc_filter +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0x1ba787c4 dib0070_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0x36b5bf57 dib0070_wbd_offset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0xae13bdbc dib0070_set_rf_output +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0xc114e0d0 dib0070_get_rf_output +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x01cce6df dib0090_set_tune_state +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x2f0014da dib0090_update_rframp_7090 +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x59ef3406 dib0090_set_dc_servo +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x730d390c dib0090_set_switch +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x7d24debd dib0090_update_tuning_table_7090 +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x81f29801 dib0090_get_wbd_target +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x833fe273 dib0090_get_tune_state +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x96852f7a dib0090_dcc_freq +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xbde11cb4 dib0090_get_wbd_offset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xc16994aa dib0090_register +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xc4b376e4 dib0090_get_current_gain +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xc5638af3 dib0090_gain_control +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xdc507760 dib0090_pwm_gain_reset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xf460cfb5 dib0090_fw_register +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xf83ca703 dib0090_set_vga +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mb 0xababbc78 dib3000mb_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x339f778e dib3000mc_pid_control +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x6176b2b6 dib3000mc_get_tuner_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x7a6b8161 dib3000mc_pid_parse +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x8582630a dib3000mc_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0xc4607a61 dib3000mc_set_config +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0xfca0e736 dib3000mc_i2c_enumeration +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0x0f279238 dib7000m_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0x130dcd03 dib7000m_get_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0x4502c06d dib7000m_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0xaddfce5c dib7000m_pid_filter +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0x7e392f7c dib7000p_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0xa14f8e32 dib8000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0x010d69af dibx000_get_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0x128e45b4 dibx000_exit_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0x82e8f4e8 dibx000_init_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0xad3ad91c systime +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0xd4b3ca00 dibx000_reset_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0xd5331770 dibx000_i2c_set_speed +EXPORT_SYMBOL drivers/media/dvb-frontends/drx39xyj/drx39xyj 0x57ac718e drx39xxj_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/drxd 0x70d5a441 drxd_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/drxk 0x191da864 drxk_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ds3000 0x353195e5 ds3000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dvb-pll 0x5152e574 dvb_pll_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ec100 0x8c5b2c41 ec100_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/isl6405 0x9da69226 isl6405_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/isl6421 0x80ab563c isl6421_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/isl6423 0x5e8b4e0d isl6423_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/itd1000 0x16d737c7 itd1000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ix2505v 0x891ebf0b ix2505v_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/l64781 0xd7839072 l64781_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lg2160 0x9e4e1fa6 lg2160_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgdt3305 0x3b14eead lgdt3305_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgdt3306a 0xd9b00095 lgdt3306a_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgdt330x 0x37b805f4 lgdt330x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgs8gxx 0xf4c38724 lgs8gxx_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lnbp21 0xcfb25876 lnbh24_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lnbp21 0xf197d92b lnbp21_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lnbp22 0x18951c42 lnbp22_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/m88ds3103 0x1b24cefb m88ds3103_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/m88ds3103 0xf4eaf39a m88ds3103_get_agc_pwm +EXPORT_SYMBOL drivers/media/dvb-frontends/m88rs2000 0xfc7916a1 m88rs2000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mb86a16 0x4fd53723 mb86a16_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mb86a20s 0x47786ae7 mb86a20s_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mt312 0xdb3189f5 mt312_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mt352 0x5eac2bc5 mt352_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/nxt200x 0xf1dfbf01 nxt200x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/nxt6000 0x377241f1 nxt6000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/or51132 0x5fc44f7e or51132_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/or51211 0x71d34e23 or51211_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1409 0xabd6f81e s5h1409_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1411 0xb665193c s5h1411_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1420 0x44801f57 s5h1420_get_tuner_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1420 0xd938f72a s5h1420_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s921 0x8410ae59 s921_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/si2165 0xeab05ae3 si2165_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/si21xx 0x286f5bbd si21xx_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/sp8870 0x5e594400 sp8870_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/sp887x 0x7f72c561 sp887x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stb0899 0x890e273d stb0899_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stb6000 0x749789bb stb6000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stb6100 0x2b243a85 stb6100_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0288 0x3e693e40 stv0288_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0297 0xd6e946ad stv0297_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0299 0xc3d7e58b stv0299_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0367 0x44989972 stv0367cab_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0367 0x927a9c95 stv0367ter_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0900 0xdd5b8fc9 stv0900_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv090x 0xab530fb6 stv090x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv6110 0x53b23822 stv6110_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv6110x 0x063d30da stv6110x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10021 0x4923c20a tda10021_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10023 0x325cafc1 tda10023_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10048 0x209a7b07 tda10048_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda1004x 0xa740b848 tda10046_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda1004x 0xb5be2b02 tda10045_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10071 0x2de1296a tda10071_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10086 0x4a8408a9 tda10086_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda665x 0x814a32de tda665x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda8083 0xa62c9f90 tda8083_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda8261 0xbd42dde3 tda8261_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda826x 0x3819bac6 tda826x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ts2020 0x81531116 ts2020_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tua6100 0x3cf1956e tua6100_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ves1820 0x2bd39210 ves1820_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ves1x93 0xe0c2d896 ves1x93_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/zl10036 0x836e83c4 zl10036_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/zl10039 0x31e38a15 zl10039_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/zl10353 0x97c6bd2d zl10353_attach +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x4412ffcf flexcop_dma_control_size_irq +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x9c666a9f flexcop_dma_config +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0xa19f945c flexcop_dma_config_timer +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0xa6a7e6f2 flexcop_dma_allocate +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0xa94c2749 flexcop_dma_free +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0xb3d965ae flexcop_dma_control_timer_irq +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0xc5663775 flexcop_dma_xfer_control +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0x3eb9cfdb bt878_device_control +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0x6a158218 bt878_stop +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0xd5d0bdef bt878_num +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0xf19d6e10 bt878 +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0xfc962f98 bt878_start +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0x11dc4b6d bttv_gpio_enable +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0x8a16be8d bttv_get_pcidev +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0x8ecf4acc bttv_write_gpio +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0xb9e3df08 bttv_sub_unregister +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0xbcf2d2fb bttv_read_gpio +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0xf90f5766 bttv_sub_register +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x2700bffb dst_pio_disable +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x555e89d1 dst_attach +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x5afae5b2 dst_error_bailout +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x88e9e88d dst_error_recovery +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x8cf3ebb5 dst_comm_init +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xaeebf22c dst_wait_dst_ready +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xd588bf02 read_dst +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xdf461d8b write_dst +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xe94b8c9c dst_check_sum +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xfb4227a2 rdc_reset_state +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst_ca 0xfca4ac1e dst_ca_attach +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x1b87ead4 cx18_claim_stream +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x2142bec8 cx18_start_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x2cdea06d cx18_reset_ir_gpio +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x4cb4c7e2 cx18_release_stream +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x9e4cbaa1 cx18_stop_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0xade772d0 cx18_ext_init +EXPORT_SYMBOL drivers/media/pci/cx23885/altera-ci 0x6ff7510d altera_ci_tuner_reset +EXPORT_SYMBOL drivers/media/pci/cx23885/altera-ci 0xa1215db2 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 0x2993075d cx25821_sram_channel_setup_audio +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x3ffbd0bd cx25821_dev_get +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x6f700372 cx25821_set_gpiopin_direction +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x784853c3 cx25821_print_irqbits +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xaff3da00 cx25821_dev_unregister +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xb38bc7f7 cx25821_risc_databuffer_audio +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xc5d38741 cx25821_sram_channels +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xdce3009c cx25821_riscmem_alloc +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xe6a90009 cx25821_sram_channel_dump_audio +EXPORT_SYMBOL drivers/media/pci/cx88/cx88-vp3054-i2c 0x06b3786d vp3054_i2c_probe +EXPORT_SYMBOL drivers/media/pci/cx88/cx88-vp3054-i2c 0x847215ab vp3054_i2c_remove +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0x0c6d1458 cx88_set_freq +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0x1436b362 cx88_enum_input +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0x7e66d340 cx88_querycap +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0xf73d8910 cx88_video_mux +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x900e7386 cx8802_unregister_driver +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0xb909991a cx8802_buf_queue +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0xbf3aedf6 cx8802_start_dma +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0xc1d698d3 cx8802_cancel_buffers +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0xd060d095 cx8802_register_driver +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0xe8bf3675 cx8802_get_driver +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0xeb677298 cx8802_buf_prepare +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x1ea7c79f cx88_dsp_detect_stereo_sap +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x1fedfb03 cx88_wakeup +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x20b8d9b3 cx88_set_scale +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x290efeb9 cx88_sram_channel_setup +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x3ad465a3 cx88_vdev_init +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x4216fc84 cx88_sram_channels +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x497f9a13 cx88_reset +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x527ba611 cx88_newstation +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x57cbe1c8 cx88_shutdown +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x5c598722 cx88_ir_start +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x6141c8c5 cx88_tuner_callback +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x71e471bc cx88_risc_buffer +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x72a59f52 cx88_set_tvaudio +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x7642ed3c cx88_print_irqbits +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x815cebd9 cx88_sram_channel_dump +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x904b8696 cx88_audio_thread +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x9de62415 cx88_set_tvnorm +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x9e387cbd cx88_risc_databuffer +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xaf902b29 cx88_get_stereo +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xcbf45b0a cx88_core_get +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xcc382ea9 cx88_set_stereo +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xe144f715 cx88_core_irq +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xe59a3672 cx88_ir_stop +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xe8cd5429 cx88_core_put +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x07014e1b ivtv_vapi_result +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x13e04838 ivtv_udma_prepare +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x14f67530 ivtv_debug +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x16a53298 ivtv_udma_setup +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x2a0791bb ivtv_reset_ir_gpio +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x3e0a2ddd ivtv_init_on_first_open +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x562f74cc ivtv_api +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x5ed8ff7b ivtv_stop_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x7df71ac7 ivtv_ext_init +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x913bb07b ivtv_firmware_check +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x9c0d6659 ivtv_clear_irq_mask +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xa530ae79 ivtv_start_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xa7825492 ivtv_claim_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xd3499a76 ivtv_release_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xdd04d176 ivtv_vapi +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xe38ebcbc ivtv_udma_unmap +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xe7e956b3 ivtv_set_irq_mask +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xf61de99b 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 0x2908c3de saa7134_ts_register +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x31d69651 saa7134_ts_unregister +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x389a6de0 saa7134_dmasound_init +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x52a43c52 saa7134_pgtable_free +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x5b72e439 saa7134_devlist_lock +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x5d3e849d saa7134_set_gpio +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x75c66969 saa7134_boards +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x7755d967 saa7134_dmasound_exit +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x8144b9a7 saa7134_tvaudio_setmute +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x9f207130 saa7134_pgtable_build +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xbe203998 saa7134_set_dmabits +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xbf70e9db saa_dsp_writel +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xc347118d saa7134_pgtable_alloc +EXPORT_SYMBOL drivers/media/pci/ttpci/ttpci-eeprom 0xc3e4c127 ttpci_eeprom_decode_mac +EXPORT_SYMBOL drivers/media/pci/ttpci/ttpci-eeprom 0xc532b043 ttpci_eeprom_parse_mac +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x43df2179 soc_camera_power_init +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x4722adef soc_camera_host_unregister +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x780582a3 soc_camera_apply_board_flags +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x797efbc0 soc_camera_xlate_by_fourcc +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x97128139 soc_camera_power_on +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0xaebc6e01 soc_camera_power_off +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0xbad069a0 soc_camera_host_register +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0x25c52d97 soc_mbus_samples_per_pixel +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0x2863728e soc_mbus_image_size +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0x29f5a98b soc_mbus_get_fmtdesc +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0x5f3e3558 soc_mbus_bytes_per_line +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0xc8b28da5 soc_mbus_config_compatible +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0xdc5dafe2 soc_mbus_find_fmtdesc +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_scale_crop 0x071477e2 soc_camera_client_s_crop +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_scale_crop 0x09acf500 soc_camera_client_g_rect +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_scale_crop 0x33df3286 soc_camera_client_scale +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_scale_crop 0xa4de4dea soc_camera_calc_client_output +EXPORT_SYMBOL drivers/media/radio/tea575x 0x1029655b snd_tea575x_s_hw_freq_seek +EXPORT_SYMBOL drivers/media/radio/tea575x 0x21703aac snd_tea575x_set_freq +EXPORT_SYMBOL drivers/media/radio/tea575x 0x335b8a0d snd_tea575x_hw_init +EXPORT_SYMBOL drivers/media/radio/tea575x 0x39c1936f snd_tea575x_init +EXPORT_SYMBOL drivers/media/radio/tea575x 0x3ec8bc01 snd_tea575x_g_tuner +EXPORT_SYMBOL drivers/media/radio/tea575x 0x56e20ab0 snd_tea575x_exit +EXPORT_SYMBOL drivers/media/radio/tea575x 0xff36341c snd_tea575x_enum_freq_bands +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x04dca738 lirc_unregister_driver +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x12b0bedd lirc_register_driver +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x45c2500e lirc_dev_fop_close +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x46f6a0ad lirc_dev_fop_poll +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x5c2bf761 lirc_dev_fop_read +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x801fbb82 lirc_dev_fop_write +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x93dd6a10 lirc_dev_fop_open +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0xe4ad021a lirc_dev_fop_ioctl +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0xf3140bb7 lirc_get_pdata +EXPORT_SYMBOL drivers/media/rc/rc-core 0x4dd07540 ir_raw_handler_unregister +EXPORT_SYMBOL drivers/media/rc/rc-core 0x88104d1c ir_raw_handler_register +EXPORT_SYMBOL drivers/media/tuners/fc0011 0x4e4a026e fc0011_attach +EXPORT_SYMBOL drivers/media/tuners/fc0012 0xe52fa6f8 fc0012_attach +EXPORT_SYMBOL drivers/media/tuners/fc0013 0x1fcdbe17 fc0013_attach +EXPORT_SYMBOL drivers/media/tuners/fc0013 0xeb492c1d fc0013_rc_cal_add +EXPORT_SYMBOL drivers/media/tuners/fc0013 0xf2bcbc4e fc0013_rc_cal_reset +EXPORT_SYMBOL drivers/media/tuners/max2165 0xefe73452 max2165_attach +EXPORT_SYMBOL drivers/media/tuners/mc44s803 0xd03921cd mc44s803_attach +EXPORT_SYMBOL drivers/media/tuners/mt2060 0x36d601d5 mt2060_attach +EXPORT_SYMBOL drivers/media/tuners/mt2131 0xb51e0721 mt2131_attach +EXPORT_SYMBOL drivers/media/tuners/mt2266 0x44ba90b8 mt2266_attach +EXPORT_SYMBOL drivers/media/tuners/mxl5005s 0x95368a13 mxl5005s_attach +EXPORT_SYMBOL drivers/media/tuners/qt1010 0xf107c790 qt1010_attach +EXPORT_SYMBOL drivers/media/tuners/tda18218 0xa71ac100 tda18218_attach +EXPORT_SYMBOL drivers/media/tuners/tuner-types 0x0cb4b189 tuners +EXPORT_SYMBOL drivers/media/tuners/tuner-types 0xc2821775 tuner_count +EXPORT_SYMBOL drivers/media/tuners/tuner-xc2028 0x6a2719ab xc2028_attach +EXPORT_SYMBOL drivers/media/tuners/xc4000 0x5581ce89 xc4000_attach +EXPORT_SYMBOL drivers/media/tuners/xc5000 0xc839fc26 xc5000_attach +EXPORT_SYMBOL drivers/media/usb/cx231xx/cx231xx 0x9d458d5e cx231xx_register_extension +EXPORT_SYMBOL drivers/media/usb/cx231xx/cx231xx 0xab020311 cx231xx_unregister_extension +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x0cbc97fd dvb_usbv2_generic_rw_locked +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x46c13f30 dvb_usbv2_generic_rw +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x70cd7ca4 dvb_usbv2_generic_write +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0xa0f941aa dvb_usbv2_generic_write_locked +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0xc8218799 dvb_usbv2_resume +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0xcf497f74 dvb_usbv2_disconnect +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0xd0db2687 dvb_usbv2_probe +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0xeeea5fb7 dvb_usbv2_suspend +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0xf34c7e4c dvb_usbv2_reset_resume +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x1821cc19 dvb_usb_device_exit +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x994f89ef dvb_usb_generic_write +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0xa070ea2c dvb_usb_generic_rw +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0xc4f65ecc usb_cypress_load_firmware +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0xc5343f6f dvb_usb_get_hexline +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0xce097b36 dvb_usb_nec_rc_key_to_event +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0xd842740e dvb_usb_device_init +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-af9005-remote 0x13e247e0 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 0xe86bded1 af9005_rc_decode +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x07619c72 dibusb_read_eeprom_byte +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x2b421ff3 dibusb2_0_streaming_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x2dc80cdc dibusb_power_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x4dc417f2 dibusb_i2c_algo +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x5a58083a dibusb_pid_filter +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x74f8be41 dibusb_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xac092d3d dibusb_streaming_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xb13acf95 dibusb_dib3000mc_tuner_attach +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xb2c1ea02 dibusb_dib3000mc_frontend_attach +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xb47559e0 rc_map_dibusb_table +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xfd3ed54d dibusb2_0_power_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xffbe1983 dibusb_rc_query +EXPORT_SYMBOL drivers/media/usb/em28xx/em28xx 0x4a7f638f em28xx_unregister_extension +EXPORT_SYMBOL drivers/media/usb/em28xx/em28xx 0xb4821225 em28xx_register_extension +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x05afe098 go7007_snd_init +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x3ef57338 go7007_update_board +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x5989c88c go7007_boot_encoder +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x606d5966 go7007_parse_video_stream +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x668f7030 go7007_alloc +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x7d28874c go7007_read_addr +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x82105e5c go7007_snd_remove +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0xbf666d8e go7007_read_interrupt +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0xd72e63b3 go7007_register_encoder +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x00569b6a gspca_disconnect +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x0d139154 gspca_dev_probe +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x1a617734 gspca_expo_autogain +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x388a575c gspca_suspend +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x48c62879 gspca_coarse_grained_expo_autogain +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x540f2cb6 gspca_resume +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x88bf1e0b gspca_frame_add +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x93bf12b3 gspca_dev_probe2 +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x9670af2c gspca_debug +EXPORT_SYMBOL drivers/media/usb/tm6000/tm6000 0x9bd5e33b tm6000_init_digital_mode +EXPORT_SYMBOL drivers/media/usb/tm6000/tm6000 0xb9d04f1a tm6000_unregister_extension +EXPORT_SYMBOL drivers/media/usb/tm6000/tm6000 0xcfbbbdb3 tm6000_register_extension +EXPORT_SYMBOL drivers/media/usb/ttusb-dec/ttusbdecfe 0x073ca83f ttusbdecfe_dvbt_attach +EXPORT_SYMBOL drivers/media/usb/ttusb-dec/ttusbdecfe 0x2cfba9f5 ttusbdecfe_dvbs_attach +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-common 0xabe27502 v4l2_ctrl_query_fill +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-mem2mem 0x459e133f v4l2_m2m_get_curr_priv +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-mem2mem 0x4af40171 v4l2_m2m_get_vq +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-mem2mem 0xf6935b67 v4l2_m2m_mmap +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-mem2mem 0xf976d13b v4l2_m2m_job_finish +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0x1f276d2c videobuf_dvb_register_bus +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0x3f2e432d videobuf_dvb_alloc_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0x46ea29b8 videobuf_dvb_dealloc_frontends +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0x892e9a2a videobuf_dvb_unregister_bus +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0xaaaf3c64 videobuf_dvb_get_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0xfdbb45b3 videobuf_dvb_find_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-core 0x7cdc620e vb2_querybuf +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0x3e1dcb89 vb2_dvb_find_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0x4999707c vb2_dvb_register_bus +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0xbe36a668 vb2_dvb_unregister_bus +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0xc2fc29f3 vb2_dvb_alloc_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0xd1a745ff vb2_dvb_dealloc_frontends +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0xd2422274 vb2_dvb_get_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x0023b990 v4l2_query_ext_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x0086049a v4l2_ctrl_handler_setup +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x00d670f4 v4l2_ctrl_subdev_log_status +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x0414a505 v4l2_async_unregister_subdev +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x0614dd5a v4l2_video_std_frame_period +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x115644fa v4l2_ctrl_new_std +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x123959a1 v4l2_type_names +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x1305d721 v4l2_ctrl_cluster +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x147a3bb2 v4l2_ctrl_g_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x16244fe5 v4l2_prio_check +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x1a4768e3 v4l2_subdev_s_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x1b5c0864 v4l2_ctrl_merge +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x1e47b27c v4l2_ctrl_new_int_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x1e6dce41 __v4l2_ctrl_s_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x1ec456cb v4l2_ctrl_poll +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x217e806e v4l2_ctrl_handler_init_class +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x230e4f12 v4l2_ctrl_new_custom +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x2342f1ae v4l2_prio_open +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x2bb56eda v4l2_ctrl_g_ctrl_int64 +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x2bd0f1a3 v4l2_clk_unregister_fixed +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x3049be60 v4l2_clk_unregister +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x347c8425 v4l2_async_notifier_register +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x36847d11 v4l2_ctrl_get_int_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x38a5279d v4l2_clk_enable +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x3adbd595 v4l2_field_names +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x3b1328c9 __v4l2_ctrl_modify_range +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x3bdd0f94 v4l2_prio_change +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x3ddbe87d v4l2_ctrl_activate +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x43b825df v4l2_ctrl_subscribe_event +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x45a1d44e v4l2_ctrl_radio_filter +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x45a44c24 v4l2_ctrl_fill +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x45baea2b v4l2_of_parse_link +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x495426ee v4l2_ctrl_get_name +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x4b77c88d v4l2_ctrl_replace +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x5739d77a v4l2_ctrl_notify +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x59f2878a v4l2_s_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x609deff3 v4l2_of_alloc_parse_endpoint +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x675b1b43 __v4l2_ctrl_s_ctrl_string +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x69b85908 v4l2_subdev_s_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x69f79a1d v4l2_of_parse_endpoint +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x7589d543 v4l2_ctrl_sub_ev_ops +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x75eebcfc v4l2_ctrl_find +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x77f00ab3 v4l2_of_put_link +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x7a3cd015 v4l2_ctrl_get_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x7eb14c63 video_ioctl2 +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x801efa7d video_devdata +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x8106095a v4l2_prio_max +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x88476ec3 v4l2_clk_register +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x88aa2587 v4l2_ctrl_log_status +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x8ce235e3 v4l2_clk_get_rate +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x931603e0 v4l2_clk_disable +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x93253465 v4l2_subdev_queryctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x976e6021 v4l2_ctrl_add_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x9789f2e2 v4l2_querymenu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x98de09c1 v4l2_g_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x9d9dffc2 v4l2_subdev_try_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x9ea762af video_unregister_device +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x9f8653bf __video_register_device +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xa0ebce7a v4l2_clk_put +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xa1c7a7e3 v4l2_try_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xa2ca143f v4l2_ctrl_handler_log_status +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xa3c59aa2 v4l2_queryctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xa59bf464 v4l2_subdev_g_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xa69bab14 video_device_release +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xa7593db8 v4l2_of_free_endpoint +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xaf0fa175 v4l2_ctrl_grab +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb200ca91 __v4l2_clk_register_fixed +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb224ae0f v4l2_subdev_g_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb48587e5 v4l2_async_notifier_unregister +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb5f22a31 v4l2_async_register_subdev +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb604758d v4l2_ctrl_subdev_subscribe_event +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb77b0159 v4l2_prio_init +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb8fadb60 video_device_alloc +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xbc5671dc v4l_printk_ioctl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xc01d5403 v4l2_s_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xc3bf4e2f video_usercopy +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xcbb40eb7 v4l2_ctrl_auto_cluster +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xcda04a5b v4l2_prio_close +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xce4a90b3 v4l2_subdev_querymenu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xd203e6bf v4l2_ctrl_handler_free +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xd23de2b2 v4l2_clk_get +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xd52a9fd0 v4l2_ctrl_add_handler +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xdeb12d0e v4l2_g_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe10996bb video_device_release_empty +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe2b92059 v4l2_video_std_construct +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe3cca182 v4l2_clk_set_rate +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe4828da4 v4l2_ctrl_new_std_menu_items +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe8bee898 v4l2_subdev_init +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf032eada __v4l2_ctrl_s_ctrl_int64 +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf3251e7b v4l2_norm_to_name +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf9990a9d v4l2_ctrl_new_std_menu +EXPORT_SYMBOL drivers/memstick/core/memstick 0x16f400d4 memstick_suspend_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x2f944a15 memstick_resume_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x4b3de8b4 memstick_alloc_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x4cbe73e2 memstick_new_req +EXPORT_SYMBOL drivers/memstick/core/memstick 0x5b5c17c8 memstick_init_req_sg +EXPORT_SYMBOL drivers/memstick/core/memstick 0x7121daf6 memstick_unregister_driver +EXPORT_SYMBOL drivers/memstick/core/memstick 0x8c9b5da4 memstick_init_req +EXPORT_SYMBOL drivers/memstick/core/memstick 0xcb4724fc memstick_add_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0xd1757bee memstick_free_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0xd22b170e memstick_remove_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0xd7d51eae memstick_next_req +EXPORT_SYMBOL drivers/memstick/core/memstick 0xef0577ee memstick_register_driver +EXPORT_SYMBOL drivers/memstick/core/memstick 0xf5a794f4 memstick_detect_change +EXPORT_SYMBOL drivers/memstick/core/memstick 0xfaf5b945 memstick_set_rw_addr +EXPORT_SYMBOL drivers/memstick/host/r592 0x52f1b23b memstick_debug_get_tpc_name +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x073b5a78 mpt_event_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x0f4d72c4 mpt_raid_phys_disk_pg0 +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x14909728 mpt_raid_phys_disk_pg1 +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x2643b0fb mpt_GetIocState +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x32a3de1f mptbase_sas_persist_operation +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x44ca8bc7 mpt_alloc_fw_memory +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x4526289b mpt_event_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x47a55e87 mpt_put_msg_frame_hi_pri +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x4acf5373 mpt_findImVolumes +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x502108d0 mpt_fwfault_debug +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x5b59ae68 mpt_set_taskmgmt_in_progress_flag +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x5f59fb7d mpt_raid_phys_disk_get_num_paths +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x6adc9b8c mpt_attach +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x771c41e6 mpt_put_msg_frame +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x849acbd2 mpt_Soft_Hard_ResetHandler +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x8df79aa7 mpt_HardResetHandler +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x97107021 mpt_free_msg_frame +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xa5517637 mpt_device_driver_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xa67e23ed mpt_verify_adapter +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xa9e6217c mpt_config +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xad7bb478 mpt_send_handshake_request +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xafe62291 mpt_print_ioc_summary +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xb4237bd7 mpt_free_fw_memory +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xba4a6398 mpt_detach +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xbaf4e608 mpt_reset_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xbd599158 mpt_get_msg_frame +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xc0e69f82 mpt_device_driver_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xc47c22e8 mpt_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xc4f08c2b mpt_halt_firmware +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xc8cc5941 mpt_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xd9a92a75 mpt_reset_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xda64af62 mpt_suspend +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xdd805159 ioc_list +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xe44cf280 mpt_resume +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xf7e25075 mpt_clear_taskmgmt_in_progress_flag +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x04b0ebb2 mptscsih_taskmgmt_complete +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x1238d975 mptscsih_host_attrs +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x1687a6d9 mptscsih_bus_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x2892d075 mptscsih_event_process +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x29e1a371 mptscsih_remove +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x2af7dcdb mptscsih_host_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x30c4a184 mptscsih_raid_id_to_num +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x31a4dc89 mptscsih_info +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x4b602bdf mptscsih_shutdown +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x5886ff41 mptscsih_IssueTaskMgmt +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x689d9d89 mptscsih_io_done +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x6a80b828 mptscsih_slave_configure +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x7317595e mptscsih_abort +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x7a56f1fa mptscsih_taskmgmt_response_code +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x7fe553d6 mptscsih_is_phys_disk +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x86d1a8e4 mptscsih_ioc_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x88c6bafc mptscsih_slave_destroy +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x88c6c2f5 mptscsih_suspend +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x91cdc307 mptscsih_qcmd +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x98beb874 mptscsih_show_info +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xa4353fce mptscsih_flush_running_cmds +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xcffbb209 mptscsih_resume +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xd310e98d mptscsih_bios_param +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xd3b56a69 mptscsih_scandv_complete +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xdd17a261 mptscsih_dev_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xeb89a8dd mptscsih_change_queue_depth +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xfde2e83a mptscsih_get_scsi_lookup +EXPORT_SYMBOL drivers/mfd/cros_ec 0x1026bbb6 cros_ec_register +EXPORT_SYMBOL drivers/mfd/cros_ec 0x4ba8e02a cros_ec_resume +EXPORT_SYMBOL drivers/mfd/cros_ec 0x6b0aa2cc cros_ec_suspend +EXPORT_SYMBOL drivers/mfd/cros_ec 0xa627284f cros_ec_remove +EXPORT_SYMBOL drivers/mfd/dln2 0x3bbbcf06 dln2_register_event_cb +EXPORT_SYMBOL drivers/mfd/dln2 0xa7859f7e dln2_unregister_event_cb +EXPORT_SYMBOL drivers/mfd/dln2 0xf1226841 dln2_transfer +EXPORT_SYMBOL drivers/mfd/htc-pasic3 0x42b92b8e pasic3_read_register +EXPORT_SYMBOL drivers/mfd/htc-pasic3 0xe38b56d0 pasic3_write_register +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x01e7c5d5 mc13xxx_irq_mask +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x1cec2814 mc13xxx_lock +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x3a0b6a7a mc13xxx_irq_status +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x49a12ed1 mc13xxx_irq_unmask +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x838f7909 mc13xxx_reg_write +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x84aacb9f mc13xxx_get_flags +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xa7785409 mc13xxx_reg_read +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xb18d6ba8 mc13xxx_unlock +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xb201d693 mc13xxx_irq_request +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xc4fdaf69 mc13xxx_reg_rmw +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xd24d2de7 mc13xxx_irq_free +EXPORT_SYMBOL drivers/mfd/qcom_rpm 0xd042c9be qcom_rpm_write +EXPORT_SYMBOL drivers/mfd/tps6105x 0xda94e378 tps6105x_set +EXPORT_SYMBOL drivers/mfd/tps6105x 0xfad012de tps6105x_mask_and_set +EXPORT_SYMBOL drivers/mfd/tps6105x 0xfc68cd24 tps6105x_get +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-irq 0x5f44abc2 wm8994_irq_init +EXPORT_SYMBOL drivers/mfd/wm8994-irq 0xed5074dd wm8994_irq_exit +EXPORT_SYMBOL drivers/mfd/wm8994-regmap 0x323f1704 wm8994_base_regmap_config +EXPORT_SYMBOL drivers/mfd/wm8994-regmap 0x48e8af74 wm8958_regmap_config +EXPORT_SYMBOL drivers/mfd/wm8994-regmap 0x7ad214ed wm8994_regmap_config +EXPORT_SYMBOL drivers/mfd/wm8994-regmap 0xd78aad59 wm1811_regmap_config +EXPORT_SYMBOL drivers/misc/ad525x_dpot 0x989202fa ad_dpot_probe +EXPORT_SYMBOL drivers/misc/ad525x_dpot 0xff48fb99 ad_dpot_remove +EXPORT_SYMBOL drivers/misc/altera-stapl/altera-stapl 0x8a05ed90 altera_init +EXPORT_SYMBOL drivers/misc/c2port/core 0x9fe714be c2port_device_unregister +EXPORT_SYMBOL drivers/misc/c2port/core 0xa7fd192d c2port_device_register +EXPORT_SYMBOL drivers/misc/ioc4 0x1dc10069 ioc4_register_submodule +EXPORT_SYMBOL drivers/misc/ioc4 0xf3091912 ioc4_unregister_submodule +EXPORT_SYMBOL drivers/misc/tifm_core 0x0eb69f5c tifm_alloc_device +EXPORT_SYMBOL drivers/misc/tifm_core 0x19d99342 tifm_unregister_driver +EXPORT_SYMBOL drivers/misc/tifm_core 0x2611f72c tifm_register_driver +EXPORT_SYMBOL drivers/misc/tifm_core 0x28931aca tifm_has_ms_pif +EXPORT_SYMBOL drivers/misc/tifm_core 0x39f86aa1 tifm_queue_work +EXPORT_SYMBOL drivers/misc/tifm_core 0x5276ce17 tifm_remove_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0x57fdf9c1 tifm_map_sg +EXPORT_SYMBOL drivers/misc/tifm_core 0x5bef0bbe tifm_unmap_sg +EXPORT_SYMBOL drivers/misc/tifm_core 0x703161ae tifm_free_device +EXPORT_SYMBOL drivers/misc/tifm_core 0x9b5f395a tifm_add_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0xbf2e6290 tifm_free_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0xce3653c0 tifm_alloc_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0xf7e11233 tifm_eject +EXPORT_SYMBOL drivers/mmc/host/dw_mmc 0x1d4e65cf dw_mci_remove +EXPORT_SYMBOL drivers/mmc/host/dw_mmc 0xd1b96549 dw_mci_probe +EXPORT_SYMBOL drivers/mmc/host/dw_mmc 0xd44791a3 dw_mci_resume +EXPORT_SYMBOL drivers/mmc/host/dw_mmc 0xddf66183 dw_mci_suspend +EXPORT_SYMBOL drivers/mmc/host/tmio_mmc_core 0x037e2204 tmio_mmc_host_probe +EXPORT_SYMBOL drivers/mmc/host/tmio_mmc_core 0x094acb4a tmio_mmc_host_runtime_resume +EXPORT_SYMBOL drivers/mmc/host/tmio_mmc_core 0x0e292723 tmio_mmc_host_alloc +EXPORT_SYMBOL drivers/mmc/host/tmio_mmc_core 0x18e0ef16 tmio_mmc_host_remove +EXPORT_SYMBOL drivers/mmc/host/tmio_mmc_core 0x3784b101 tmio_mmc_host_runtime_suspend +EXPORT_SYMBOL drivers/mmc/host/tmio_mmc_core 0x378f2335 tmio_mmc_irq +EXPORT_SYMBOL drivers/mmc/host/tmio_mmc_core 0x6d3deee9 tmio_mmc_sdcard_irq +EXPORT_SYMBOL drivers/mmc/host/tmio_mmc_core 0x7a6fd700 tmio_mmc_sdio_irq +EXPORT_SYMBOL drivers/mmc/host/tmio_mmc_core 0xa7495bfd tmio_mmc_host_free +EXPORT_SYMBOL drivers/mmc/host/tmio_mmc_core 0xf02062dd tmio_mmc_card_detect_irq +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x462a7f09 cfi_read_pri +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x59e4f490 cfi_send_gen_cmd +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x77edff99 cfi_fixup +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x983b6765 cfi_build_cmd +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0xccd496f1 cfi_varsize_frob +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0xf1e5a810 cfi_build_cmd_addr +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0xfa93ede3 cfi_merge_status +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0xff9fa623 cfi_udelay +EXPORT_SYMBOL drivers/mtd/chips/gen_probe 0x27fdd9ae mtd_do_chip_probe +EXPORT_SYMBOL drivers/mtd/lpddr/lpddr_cmds 0x4fffb990 lpddr_cmdset +EXPORT_SYMBOL drivers/mtd/nand/denali 0x427dcca8 denali_init +EXPORT_SYMBOL drivers/mtd/nand/denali 0xaca54431 denali_remove +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0x16dac7df onenand_scan_bbt +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0x59acf037 flexonenand_region +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0x62b786e3 onenand_default_bbt +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0xa8c5d698 onenand_addr +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x0d4436be arcnet_timeout +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x27e68e76 arcnet_open +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x2b0d6522 alloc_arcdev +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x4116cd6c arcnet_unregister_proto +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x5414680e arcnet_send_packet +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x5c1cf749 arc_raw_proto +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x6534792a arcnet_debug +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x907de2dc arcnet_close +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xa2269a08 arc_proto_default +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xbce4cbb1 arc_bcast_proto +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xe67b586b arc_proto_map +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xecb730b0 arcnet_interrupt +EXPORT_SYMBOL drivers/net/arcnet/com20020 0xd0339fb8 com20020_netdev_ops +EXPORT_SYMBOL drivers/net/arcnet/com20020 0xf030533a com20020_found +EXPORT_SYMBOL drivers/net/arcnet/com20020 0xf294e5dc com20020_check +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x119721ac ei_interrupt +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x128305c8 ei_get_stats +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x15740d99 ei_tx_timeout +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x1d07df3d ei_poll +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x206fcba7 ei_netdev_ops +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x226debd3 ei_close +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x45478554 ei_start_xmit +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x8cbfd5fa ei_open +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xa87dc41f NS8390_init +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xe1a4b730 ei_set_multicast_list +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xf43711eb __alloc_ei_netdev +EXPORT_SYMBOL drivers/net/ethernet/broadcom/bnx2x/bnx2x 0x7d5b731b bnx2x_schedule_sp_rtnl +EXPORT_SYMBOL drivers/net/ethernet/broadcom/cnic 0x3853d1c5 cnic_register_driver +EXPORT_SYMBOL drivers/net/ethernet/broadcom/cnic 0x636af174 cnic_unregister_driver +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x042784b9 t3_l2t_send_event +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x048c71be t3_l2e_free +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x07b73185 cxgb3_ofld_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x1bf53725 cxgb3_unregister_client +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x4e04364c t3_register_cpl_handler +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x5c5d0b39 t3_l2t_send_slow +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x604f7adc cxgb3_queue_tid_release +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x694dcddc cxgb3_alloc_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x6f08fbd2 dev2t3cdev +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x8bca0950 cxgb3_remove_tid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x9c456192 cxgb3_free_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xcf45021e cxgb3_register_client +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xd697bd9e cxgb3_insert_tid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xd6ef9540 cxgb3_free_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xe9611319 t3_l2t_get +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xf75b807c cxgb3_alloc_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x052bc791 cxgb4_remove_server_filter +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x0c7b42e7 cxgb4_alloc_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x0cbbdb53 cxgb4_dcb_enabled +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x195aa720 cxgb4_dbfifo_count +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x1d68041b cxgb4_clip_release +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x22f27537 cxgb4_bar2_sge_qregs +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x2a2edcd1 cxgb4_clip_get +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x31c9213c cxgb4_free_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x3a105c09 cxgb4_l2t_get +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x408f970e cxgb4_create_server +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x4297f892 cxgb4_select_ntuple +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x45150122 cxgb4_create_server6 +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x4a6b1466 cxgb4_port_viid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x50ee5c07 cxgb4_best_aligned_mtu +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x54100acd cxgb4_create_server_filter +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x662e3238 cxgb4_alloc_sftid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x6d62878d cxgb4_ofld_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x7014a26e cxgb4_remove_tid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x79b22718 cxgb4_get_tcp_stats +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x7bd7964c cxgb4_port_chan +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x871c2277 cxgb4_read_sge_timestamp +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x8ef13a76 cxgb4_port_idx +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x932984aa cxgb4_iscsi_init +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x97731821 cxgb4_sync_txq_pidx +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x9cca1e10 cxgb4_remove_server +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xa0c21417 cxgb4_free_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xa0fee717 cxgb4_register_uld +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xb4bc186a cxgb4_flush_eq_cache +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xb7b10925 t4_cleanup_clip_tbl +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xb9ad51ec cxgb4_l2t_release +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xbaa08718 cxgb4_l2t_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xcdfe0ff2 cxgb4_alloc_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xd00e5a36 cxgb4_unregister_uld +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xd69a0294 cxgb4_best_mtu +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xe4de6bb4 cxgb4_read_tpte +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xe741a849 cxgb4_pktgl_to_skb +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xf2759db9 cxgb4_update_root_dev_clip +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0x0e712340 vnic_dev_get_res +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0x2dab2e2c vnic_dev_register +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0x4f650da7 vnic_dev_get_res_count +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0x81e8c380 vnic_dev_get_pdev +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0x9196d804 vnic_dev_unregister +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0xf587efaf enic_api_devcmd_proxy_by_index +EXPORT_SYMBOL drivers/net/ethernet/emulex/benet/be2net 0x9789f8d0 be_roce_unregister_driver +EXPORT_SYMBOL drivers/net/ethernet/emulex/benet/be2net 0xab12203d be_roce_register_driver +EXPORT_SYMBOL drivers/net/ethernet/emulex/benet/be2net 0xbab62e22 be_roce_mcc_cmd +EXPORT_SYMBOL drivers/net/ethernet/freescale/gianfar_driver 0x79f28897 gfar_phc_index +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x05b99a49 mlx4_get_eqs_per_port +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x12ba408d mlx4_eq_get_irq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1cd29f72 set_and_calc_slave_port_state +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x25dc76d7 mlx4_gen_guid_change_eqe +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2c212abc mlx4_SET_PORT_general +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2d043957 mlx4_SET_PORT_SCHEDULER +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2f637ccc mlx4_is_eq_shared +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3c68c280 mlx4_SET_MCAST_FLTR +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x42f34db9 mlx4_SET_VPORT_QOS_set +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5266c704 mlx4_assign_eq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x58e33b36 mlx4_SET_PORT_BEACON +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6c235195 mlx4_test_interrupts +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x70bfc468 mlx4_gen_pkey_eqe +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x70fa5179 mlx4_put_slave_node_guid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x76867697 mlx4_get_slave_from_roce_gid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7c4f1490 mlx4_sync_pkey_table +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7cab2bca mlx4_SET_PORT_VXLAN +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7f07f464 mlx4_ALLOCATE_VPP_set +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7faa1f10 mlx4_get_slave_pkey_gid_tbl_len +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x87787998 mlx4_SET_VPORT_QOS_get +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x88e5e497 mlx4_gen_slaves_port_mgt_ev +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x894e1039 mlx4_get_slave_node_guid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x97462bb0 mlx4_get_parav_qkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9a3f8091 mlx4_SET_PORT_PRIO2TC +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa162ce52 mlx4_ALLOCATE_VPP_get +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb03e6228 mlx4_get_roce_gid_from_slave +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd483774a mlx4_tunnel_steer_add +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd701e1f3 mlx4_is_eq_vector_valid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xdb2ca0bb mlx4_get_module_info +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xdc4b2790 mlx4_SET_PORT_fcs_check +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe7226b1e mlx4_is_slave_active +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xede47950 mlx4_gen_port_state_change_eqe +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xef126287 mlx4_release_eq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf39510cf mlx4_get_cpu_rmap +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xfa9436fa mlx4_SET_PORT_qpn_calc +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xff0e9945 mlx4_get_slave_port_state +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x007e4399 mlx5_alloc_map_uar +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x0498fc6f mlx5_cmd_alloc_uar +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x0857aabd mlx5_get_flow_table_id +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x0b7a0f4d mlx5_core_destroy_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x0eb7287e mlx5_del_flow_table_entry +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x16448d87 mlx5_core_get_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x25344962 mlx5_core_destroy_psv +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x25eba6b2 mlx5_core_create_psv +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x29265b30 mlx5_cmd_init +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x2b72f811 mlx5_core_detach_mcg +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x300b9862 mlx5_vector2eqn +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x4ff540ab mlx5_core_query_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x68f9f4c1 mlx5_register_interface +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x6caeeaa5 mlx5_core_query_vendor_id +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x75f99f1d mlx5_cmd_comp_handler +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x7b0fe457 mlx5_cmd_cleanup +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x84c0e0e1 mlx5_debugfs_root +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x890959be mlx5_cmd_exec_cb +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x91a611c0 mlx5_core_create_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xba4d5a7b mlx5_core_dump_fill_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xbd8b5644 mlx5_cmd_exec +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xbfa08799 mlx5_core_create_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xc3db6b31 mlx5_query_nic_vport_mac_address +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xc617d9d9 mlx5_core_attach_mcg +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xc71a8a75 mlx5_core_arm_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xd0976644 mlx5_core_destroy_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xd4138eaf mlx5_core_destroy_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xd671681b mlx5_cmd_free_uar +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xd7b38f58 mlx5_core_modify_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xd9ca1093 mlx5_query_vport_state +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xdbcf4067 mlx5_core_alloc_pd +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xde6084d4 mlx5_unregister_interface +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe4f79876 mlx5_unmap_free_uar +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe6af33e4 mlx5_destroy_flow_table +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe84fdaf9 mlx5_core_query_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe8df31b6 mlx5_create_flow_table +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe959ae9d mlx5_get_protocol_dev +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xea0fc534 mlx5_core_dealloc_pd +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xee2eda5c mlx5_core_query_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf03b0a8f mlx5_core_create_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xfc728a49 mlx5_add_flow_table_entry +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x17efc6a3 hdlcdrv_transmitter +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x2d32f7da hdlcdrv_register +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x55c4087e hdlcdrv_receiver +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0xae2f9190 hdlcdrv_arbitrate +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0xc794d127 hdlcdrv_unregister +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x15a416e5 sirdev_set_dongle +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x2554f4e7 irda_unregister_dongle +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x5ce43f02 sirdev_receive +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x8a05ca95 sirdev_put_instance +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x916d6238 irda_register_dongle +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x9fe8c41c sirdev_raw_read +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xaccaaeee sirdev_get_instance +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xd8caf5d9 sirdev_set_dtr_rts +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xdd6838ed sirdev_write_complete +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xe7bd9fb6 sirdev_raw_write +EXPORT_SYMBOL drivers/net/mdio 0x22bce513 mdio_mii_ioctl +EXPORT_SYMBOL drivers/net/mdio 0x43e4defc mdio45_nway_restart +EXPORT_SYMBOL drivers/net/mdio 0x7577f992 mdio_set_flag +EXPORT_SYMBOL drivers/net/mdio 0xa1a29548 mdio45_probe +EXPORT_SYMBOL drivers/net/mdio 0xc6b1163f mdio45_links_ok +EXPORT_SYMBOL drivers/net/mdio 0xddc98749 mdio45_ethtool_gset_npage +EXPORT_SYMBOL drivers/net/mii 0x5f28d86a mii_check_gmii_support +EXPORT_SYMBOL drivers/net/mii 0x7fc57e42 mii_ethtool_sset +EXPORT_SYMBOL drivers/net/mii 0x83ac72b4 mii_nway_restart +EXPORT_SYMBOL drivers/net/mii 0x93d442b4 mii_check_media +EXPORT_SYMBOL drivers/net/mii 0xaba68b03 generic_mii_ioctl +EXPORT_SYMBOL drivers/net/mii 0xaef2aa3f mii_check_link +EXPORT_SYMBOL drivers/net/mii 0xc88dd023 mii_ethtool_gset +EXPORT_SYMBOL drivers/net/mii 0xd7cb0b87 mii_link_ok +EXPORT_SYMBOL drivers/net/phy/mdio-bitbang 0xdf255714 alloc_mdio_bitbang +EXPORT_SYMBOL drivers/net/phy/mdio-bitbang 0xfa03e17c free_mdio_bitbang +EXPORT_SYMBOL drivers/net/phy/vitesse 0x5d2479ec vsc824x_add_skew +EXPORT_SYMBOL drivers/net/ppp/pppox 0x0096dd01 pppox_unbind_sock +EXPORT_SYMBOL drivers/net/ppp/pppox 0x9e9c3720 pppox_ioctl +EXPORT_SYMBOL drivers/net/ppp/pppox 0xe0ff7a18 unregister_pppox_proto +EXPORT_SYMBOL drivers/net/ppp/pppox 0xe26a1155 register_pppox_proto +EXPORT_SYMBOL drivers/net/sungem_phy 0x7df8c0ce sungem_phy_probe +EXPORT_SYMBOL drivers/net/team/team 0x0462d0ce team_modeop_port_change_dev_addr +EXPORT_SYMBOL drivers/net/team/team 0x1a23e9f3 team_options_register +EXPORT_SYMBOL drivers/net/team/team 0x4859491b team_modeop_port_enter +EXPORT_SYMBOL drivers/net/team/team 0x62e2d024 team_options_unregister +EXPORT_SYMBOL drivers/net/team/team 0x6f8319e2 team_mode_unregister +EXPORT_SYMBOL drivers/net/team/team 0xa1c74cc5 team_options_change_check +EXPORT_SYMBOL drivers/net/team/team 0xb13a0d37 team_mode_register +EXPORT_SYMBOL drivers/net/team/team 0xf041569e team_option_inst_set_change +EXPORT_SYMBOL drivers/net/usb/usbnet 0x7b6ef527 usbnet_link_change +EXPORT_SYMBOL drivers/net/usb/usbnet 0xd2ed4f81 usbnet_manage_power +EXPORT_SYMBOL drivers/net/usb/usbnet 0xf3d733df usbnet_device_suggests_idle +EXPORT_SYMBOL drivers/net/wan/hdlc 0x5f6af073 unregister_hdlc_device +EXPORT_SYMBOL drivers/net/wan/hdlc 0x7e153036 hdlc_start_xmit +EXPORT_SYMBOL drivers/net/wan/hdlc 0x803ca412 hdlc_open +EXPORT_SYMBOL drivers/net/wan/hdlc 0x86492623 hdlc_change_mtu +EXPORT_SYMBOL drivers/net/wan/hdlc 0x955fedbf hdlc_ioctl +EXPORT_SYMBOL drivers/net/wan/hdlc 0xa87644fd detach_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0xac20d62b alloc_hdlcdev +EXPORT_SYMBOL drivers/net/wan/hdlc 0xdd62782a attach_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0xebf3df96 hdlc_close +EXPORT_SYMBOL drivers/net/wan/hdlc 0xf610c5d4 register_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0xff2129e8 unregister_hdlc_protocol +EXPORT_SYMBOL drivers/net/wimax/i2400m/i2400m 0x562e917f i2400m_unknown_barker +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x157eccb4 ath_hw_cycle_counters_update +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x16d51f8c ath_rxbuf_alloc +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x319c6026 ath_is_49ghz_allowed +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x52e67782 ath_is_mybeacon +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x66b7d2c3 ath_key_config +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x6704bebd ath_reg_notifier_apply +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x82011388 ath_hw_setbssidmask +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xaafdb617 ath_is_world_regd +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xc62be8b3 ath_printk +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xc9da8c42 dfs_pattern_detector_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xe1af7e87 ath_key_delete +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xe2ffc078 ath_hw_keyreset +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xee10fbf0 ath_regd_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xfb4de67a ath_regd_get_band_ctl +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xfc396026 ath_hw_get_listen_time +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x078df238 ath10k_err +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x0f40db96 ath10k_core_stop +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x313efe00 ath10k_core_start +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x3a591b68 ath10k_core_unregister +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x61c84acc ath10k_core_create +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x9eb63a17 ath10k_print_driver_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xacb3d333 ath10k_core_register +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xb2be71d9 ath10k_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xb3136272 ath10k_warn +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xd2dc911a ath10k_debug_get_new_fw_crash_data +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xe6c70cc1 ath10k_core_destroy +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x27737de7 ath6kl_cfg80211_suspend +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x4b16794a ath6kl_core_tx_complete +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x55bbc866 ath6kl_core_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x7b317424 ath6kl_printk +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x80a09613 ath6kl_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x8138c7f3 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 0xa6f66cc1 ath6kl_warn +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xaa8909ac ath6kl_core_cleanup +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xb9283a9b ath6kl_hif_intr_bh_handler +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xbe59c6dc ath6kl_core_rx_complete +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xcb014460 ath6kl_err +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xf239ce37 ath6kl_cfg80211_resume +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xf3bd83e8 ath6kl_core_create +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xf8b919ea ath6kl_stop_txrx +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x03d84234 ath9k_cmn_spectral_deinit_debug +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x06ba8d9f ath9k_cmn_debug_base_eeprom +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x06e6dbb3 ath9k_cmn_setup_ht_cap +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x0eb6d3ed ath9k_cmn_debug_modal_eeprom +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x11ab522a ath9k_cmn_beacon_config_sta +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x1cb3cb05 ath9k_cmn_init_crypto +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x1e671af2 ath9k_cmn_debug_recv +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x2d15177d ath9k_cmn_debug_stat_rx +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x36175df0 ath9k_cmn_process_rssi +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x385f826e ath9k_cmn_rx_accept +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x3e6f1348 ath9k_cmn_spectral_scan_config +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x406ec59e ath9k_cmn_init_channels_rates +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x4183c9e4 ath9k_cmn_process_rate +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x64a58412 ath9k_cmn_spectral_scan_trigger +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x762ee85b ath9k_cmn_beacon_config_ap +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x7c74c3e8 ath9k_cmn_get_hw_crypto_keytype +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x823a9ab5 ath9k_cmn_spectral_init_debug +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xab7af93c ath9k_cmn_debug_phy_err +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xb5786f67 ath9k_cmn_beacon_config_adhoc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xc44e0e70 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 0xd3d8612c ath_cmn_process_fft +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xf047fe72 ath9k_cmn_reload_chainmask +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xf3f048df ath9k_cmn_update_txpow +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xfe808d0a ath9k_cmn_rx_skb_postprocess +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x05009aa4 ath9k_hw_gpio_get +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x05f9cb74 ath9k_hw_getchan_noise +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0b2adb4d ath9k_hw_addrxbuf_edma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0b73a3b0 ath9k_hw_bstuck_nfcal +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0f638cdb ath9k_hw_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0ffa4b36 ath9k_hw_settsf64 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x12509ea6 ath9k_hw_check_nav +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x12b9c7ab ath9k_hw_disable_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1377bf6f ath9k_hw_getrxfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1402dfee ath9k_hw_getnf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x17172b71 ath9k_hw_disable_mib_counters +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1874ccd1 ar9003_hw_disable_phy_restart +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x188886ad ath9k_hw_abort_tx_dma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x19089d75 ath9k_hw_beaconinit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x19471a94 ar9003_paprd_populate_single_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x198628b3 ath9k_hw_btcoex_init_mci +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1c1978a1 ath9k_hw_init_global_settings +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x211a2d8f ath9k_hw_kill_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x289d1836 ath9k_hw_putrxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x29528e22 ath9k_hw_numtxpending +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x3290076b ath9k_hw_beaconq_setup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x37029ccd ath9k_hw_request_gpio +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x3725d24d ath9k_hw_setopmode +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x38458ab1 ar9003_get_pll_sqsum_dvc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x3ac91dd9 ath9k_hw_get_txq_props +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x3dabea8a ath9k_hw_set_gpio +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x3f95a85e ar9003_hw_bb_watchdog_dbg_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x40aa0ea1 ath9k_hw_btcoex_bt_stomp +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x492f2f8b ath9k_hw_btcoex_enable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x497fc431 ar9003_mci_state +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4989cc12 ath9k_hw_enable_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4b6b5ee7 ath9k_hw_wait +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x523efc82 ath9k_hw_set_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x53c425f2 ath9k_hw_setpower +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x5498ee3e ar9003_paprd_setup_gain_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x58f1a292 ath9k_hw_setrxabort +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x5a7b1057 ath9k_hw_deinit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x5c6f8588 ath9k_hw_check_alive +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x60b5172f ath9k_hw_setmcastfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6218cc2b ath9k_hw_name +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x630a9832 ath9k_hw_setrxfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x64922d58 ath9k_hw_setup_statusring +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6521494c ath9k_hw_gettsf64 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6850906c ath9k_hw_resettxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x68ef62ff ath9k_hw_wow_apply_pattern +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6c8febb7 ar9003_mci_set_bt_version +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6e5bbed8 ath9k_hw_reset +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6ee2dffa ath9k_hw_releasetxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7279ab03 ath9k_hw_reset_tsf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x74803741 ath_gen_timer_isr +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x75ef1601 ath9k_hw_set_txq_props +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x761e65bd ath9k_hw_txstart +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x77bcb660 ar9003_paprd_init_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7a2c10d0 ar9003_paprd_create_curve +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7a96553c ath9k_hw_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7b882e7e ar9003_mci_cleanup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7d4e7709 ath9k_hw_gen_timer_stop +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7db7ea3f ath9k_hw_abortpcurecv +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x80a86725 ath9k_hw_rxprocdesc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x86a7c7b2 ath9k_hw_set_tx_filter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x89343f17 ath9k_hw_set_sta_beacon_timers +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x89c992ba ath9k_hw_stopdmarecv +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8bfde7c1 ath9k_hw_gen_timer_start +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8e137162 ath9k_hw_process_rxdesc_edma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x96d9c80e ath9k_hw_ani_monitor +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9b7eba86 ath9k_hw_btcoex_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9ff05477 ath_gen_timer_alloc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa0691658 ath9k_hw_btcoex_set_weight +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa349e4a8 ar9003_mci_setup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xabb0cf08 ar9003_mci_send_message +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xac5e3e6d ath9k_hw_stop_dma_queue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xad696623 ar9003_is_paprd_enabled +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xafee5cdf ath9k_hw_startpcureceive +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb534ff42 ath9k_hw_setuptxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb8d3ddbf ath9k_hw_btcoex_init_scheme +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xbd1413bd ath9k_hw_btcoex_init_3wire +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc0b8a916 ar9003_mci_get_next_gpm_offset +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc0c05e24 ath9k_hw_gettsf32 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc5bcf69b ar9003_paprd_enable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc6b2e242 ath9k_hw_init_btcoex_hw +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc7b4ce7a ath_gen_timer_free +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc86b6b01 ath9k_hw_phy_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xcbc598b7 ath9k_hw_puttxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xcc2190c0 ar9003_paprd_is_done +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xcd15acd9 ath9k_hw_set_txpowerlimit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xcdef6c25 ath9k_hw_set_tsfadjust +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xce90c9aa ath9k_hw_reset_calvalid +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd4f9b03e ath9k_hw_set_rx_bufsize +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd6fb8047 ath9k_hw_intrpend +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd71de745 ath9k_hw_wow_enable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd7614908 ath9k_hw_setantenna +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd920ff79 ath9k_hw_write_associd +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xde061d47 ar9003_hw_bb_watchdog_check +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xde8b1144 ath9k_hw_computetxtime +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xdf7c3770 ath9k_hw_btcoex_init_2wire +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xdfc71d9b ath9k_hw_wow_wakeup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe271c551 ath9k_hw_cfg_output +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe2ab042d ar9003_mci_get_interrupt +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe49029cd ath9k_hw_cfg_gpio_input +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe81ad827 ath9k_hw_gettxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf5258d3d ath9k_hw_btcoex_set_concur_txprio +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf9ccd8cd ath9k_hw_updatetxtriglevel +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xfddbdd83 ar9003_mci_send_wlan_channels +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xff8d3fcf ath9k_hw_setuprxdesc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xffd02408 ath9k_hw_get_tsf_offset +EXPORT_SYMBOL drivers/net/wireless/atmel 0x1133589b atmel_open +EXPORT_SYMBOL drivers/net/wireless/atmel 0xddf59b92 init_atmel_card +EXPORT_SYMBOL drivers/net/wireless/atmel 0xfea5784b stop_atmel_card +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x014d77a8 brcmu_pktq_mlen +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x03fb5775 brcmu_pktq_pdeq_match +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x0f6f8b28 brcmu_pktq_init +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x2b82b08a brcmu_pktq_penq_head +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x3f2988a1 brcmu_dotrev_str +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x60006b56 brcmu_pktq_mdeq +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x6ba07444 brcmu_pktq_penq +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x7056023d brcmu_pktq_peek_tail +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x7620d96e brcmu_pktq_pflush +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x8a0b8784 brcmu_pkt_buf_free_skb +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x8da9b1e3 brcmu_pktq_pdeq_tail +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x9f4b5dcf brcmu_d11_attach +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xce5928e0 brcmu_pkt_buf_get_skb +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xd261b8a6 brcmu_boardrev_str +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xdb5e50d1 brcmu_pktq_pdeq +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xf136e11f brcmu_pktq_flush +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x03fbc387 hostap_80211_ops +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x0ad69602 hostap_set_multicast_list_queue +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x0b19ce42 hostap_handle_sta_tx_exc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x0ee1e734 prism2_update_comms_qual +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x105f4f6e hostap_info_process +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x1ef19fd9 hostap_set_hostapd +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x27536f0b hostap_set_encryption +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x2cb4e976 hostap_init_ap_proc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x398dfc13 hostap_init_proc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x3d327a4c hostap_check_sta_fw_version +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x54e753e0 hostap_set_antsel +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x5ee933f2 hostap_set_word +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x606420d0 hostap_set_string +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x615149ea hostap_init_data +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x6af57524 hostap_remove_proc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x6f7e0bdc hostap_add_interface +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x70c213e0 hostap_set_roaming +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x7cfea96c hostap_get_porttype +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x8adacd2f hostap_set_hostapd_sta +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x8ee371be hostap_80211_rx +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x9dd0c7ac hostap_remove_interface +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xa12ad27f hostap_dump_tx_header +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xaa594375 hostap_info_init +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xb2a945e0 hostap_dump_rx_header +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xb4b77c8b hostap_80211_get_hdrlen +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xd2c5dd13 hostap_set_auth_algs +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xd3c3775f hostap_setup_dev +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xd9027438 hostap_master_start_xmit +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xf62519fe hostap_free_data +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x04a2b3ba libipw_is_valid_channel +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x17edefca libipw_wx_get_encode +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x1b33ca3b libipw_get_geo +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x25da089c libipw_networks_age +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x2e8c42c8 libipw_rx_mgt +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x3fd42bcc free_libipw +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x49bfeea3 libipw_change_mtu +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x4f740de8 libipw_set_geo +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x55669adb libipw_wx_get_encodeext +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x597dd34c libipw_rx +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x60076947 libipw_channel_to_index +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x7fd8bece libipw_wx_set_encodeext +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x8e2d5eb5 libipw_get_channel +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x9eef435d libipw_xmit +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x9f374601 libipw_txb_free +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xb6520f78 libipw_channel_to_freq +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xbe37f0d6 libipw_wx_get_scan +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xd1faf3ef libipw_get_channel_flags +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xe0fcc665 alloc_libipw +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xe1c33185 libipw_freq_to_channel +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xfa597c36 libipw_wx_set_encode +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x01eb0349 il_check_rxon_cmd +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x0598056e il_eeprom_query16 +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x05f60892 il_txq_update_write_ptr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x08da978d il_set_flags_for_band +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x0a4c1ee9 il_get_active_dwell_time +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x17ac3811 il_pm_ops +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x189c1eab il_tx_queue_unmap +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x1972fc2c il_read_targ_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x19fe3a66 _il_poll_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x1b9d2fca il_hdl_csa +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x1efc1aca il_send_stats_request +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x1fb17d53 il_init_scan_params +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x22430803 il_full_rxon_required +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x29332323 il_hdl_pm_sleep +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x2ce5fbcf il_setup_rx_scan_handlers +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x2f3ba30d il_rd_prph +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x309ba7c0 il_mac_reset_tsf +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x350a056a il_fill_probe_req +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x3575ee4a il_send_cmd +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x35b8dd36 il_set_rxon_hwcrypto +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x35e1cd12 il_is_ht40_tx_allowed +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x370decb6 il_send_lq_cmd +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x3847c2e0 il_tx_queue_free +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x38791c73 il_connection_init_rx_config +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x39e60b7e il_usecs_to_beacons +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x44bc2180 il_leds_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4756afe9 il_cancel_scan_deferred_work +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x49a91e96 il_mac_config +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4a45449d il_free_txq_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4aa39103 il_get_cmd_string +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4c3ac897 il_queue_space +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4cbe200b il_send_add_sta +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4d746ae6 il_power_update_mode +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x528e5c0c il_scan_cancel_timeout +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x564c6740 il_debug_level +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x5731321b il_mac_flush +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x57a151fd il_set_tx_power +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x5ab4b3b4 il_hdl_spectrum_measurement +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x5ce5a94d il_mac_sta_remove +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x5dfc8d19 il_mac_change_interface +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x60753713 il_setup_watchdog +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x60be7965 il_send_cmd_sync +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x68d67183 il_eeprom_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x69b2a799 il_rx_queue_update_write_ptr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x6ac7ffa1 il_write_targ_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x6e9dc791 il_apm_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x6fef1ca0 il_tx_cmd_complete +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x746fb28f il_leds_exit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x76c19b17 il_cmd_queue_unmap +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x793462d0 il_clear_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x7f78e90b il_init_channel_map +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x816fa305 il_mac_add_interface +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x824a4350 il_send_cmd_pdu +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x89da213a il_mac_bss_info_changed +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x8aa1b4fb il_get_single_channel_number +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x8bdc04d1 il_set_decrypted_flag +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x906f2c2a il_clear_ucode_stations +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x90e55052 il_get_free_ucode_key_idx +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x9218985a il_eeprom_query_addr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x92d0c0fb il_restore_stations +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x92d25c48 il_get_passive_dwell_time +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x944b62a7 il_mac_hw_scan +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x96d0b228 il_rx_queue_alloc +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x975ef632 il_update_stats +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x9958286b il_tx_cmd_protection +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x9a4f0478 _il_apm_stop +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x9cc14319 il_add_station_common +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa14b652e il_init_geos +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa1a42113 il_tx_queue_reset +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa6b1416e il_get_channel_info +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa745e351 il_hdl_error +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa838ddfc il_setup_scan_deferred_work +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa9f51251 il_add_beacon_time +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xab3b61da il_set_rxon_ht +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xab63e7f8 il_get_lowest_plcp +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xab861682 il_chswitch_done +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xaeb63f4c il_irq_handle_error +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xaf422b6b il_free_channel_map +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb18c094e il_alloc_txq_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb56d7577 il_tx_queue_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb7bd33ff il_isr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb8a86a9e il_poll_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb8ad55b8 il_mac_remove_interface +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb942ed0b il_cmd_queue_free +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb968df65 il_apm_stop +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb98ffe54 il_send_rxon_timing +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc39cf12c il_bg_watchdog +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc5b39b4d il_hdl_pm_debug_stats +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc8aba46e il_scan_cancel +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc8e42102 il_set_rxon_channel +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd6d146fc il_free_geos +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xdc636a7a il_send_cmd_pdu_async +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xdfd474d2 il_eeprom_free +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe0835673 il_dbgfs_register +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe128e5fa il_set_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe63e8ace il_set_rate +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe8c1b5f1 il_power_initialize +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf0fbbc90 il_force_reset +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf501278b il_bcast_addr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf7374ef7 il_dbgfs_unregister +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xfc30e65a il_send_bt_config +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xfd1942cb il_mac_conf_tx +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xfdfb9a89 il_wr_prph +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xff321e8a il_rx_queue_space +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x39483213 __tracepoint_iwlwifi_dev_ucode_cont_event +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x57a72d66 __tracepoint_iwlwifi_dev_ioread32 +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0xaec44e29 __tracepoint_iwlwifi_dev_ucode_wrap_event +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0xb54212ab __tracepoint_iwlwifi_dev_ucode_error +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0xbc905f54 __tracepoint_iwlwifi_dev_iowrite32 +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0xda9416fc __tracepoint_iwlwifi_dev_ucode_event +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0xe9fb9634 __tracepoint_iwlwifi_dev_iowrite8 +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x0b7bcae9 alloc_orinocodev +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x1267e118 orinoco_change_mtu +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x20281b53 __orinoco_ev_rx +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x24547ed9 orinoco_init +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x2a612700 orinoco_up +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x2d54130d orinoco_if_add +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x43d49de0 orinoco_stop +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x4711af55 free_orinocodev +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x5bfb0c47 hermes_struct_init +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x5e6f1828 orinoco_if_del +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x7baff495 orinoco_set_multicast_list +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x8cfd3e4c orinoco_open +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x99e34cb6 orinoco_down +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xa132fadd __orinoco_ev_info +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xb44f5ecf orinoco_process_xmit_skb +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xe98b3d0c orinoco_get_stats +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xf6492d3b orinoco_tx_timeout +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xffe27bca orinoco_interrupt +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/btcoexist/btcoexist 0x6f9f0bb0 rtl_btc_get_ops_pointer +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x018e9327 _rtl92c_phy_fw_rf_serial_write +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x0a796d3f rtl8192_phy_check_is_legal_rfpath +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x0a82a0a2 rtl92c_dm_check_txpower_tracking +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x0dd604d8 rtl92c_phy_set_txpower_level +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x120eace6 rtl92c_dm_init +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x1629683d rtl92c_phy_set_bw_mode +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x16572317 rtl92c_phy_set_io +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x2051a11d _rtl92c_phy_txpwr_idx_to_dbm +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x27dfc1d7 rtl92c_download_fw +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x2c14ee25 rtl92c_phy_ap_calibrate +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x35b96a27 rtl92c_phy_lc_calibrate +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x3768c33b rtl92c_phy_set_bb_reg +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x39fb6a7c _rtl92c_phy_bb8192c_config_parafile +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x406bdb8c rtl92c_dm_write_dig +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x4b52582b _rtl92c_phy_rf_serial_write +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x4ff66d9d rtl92c_phy_sw_chnl_callback +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x51ff9e87 rtl92c_bt_rssi_state_change +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x59a9561b rtl92c_dm_init_edca_turbo +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x602c21e7 rtl92c_phy_update_txpower_dbm +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x611ec5bc rtl92c_firmware_selfreset +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x62534b53 rtl92c_phy_query_bb_reg +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x62c37c8f rtl92c_dm_bt_coexist +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x62eacbee rtl92c_dm_rf_saving +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x7498d4a4 _rtl92c_phy_dbm_to_txpwr_idx +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x75b7d465 rtl92c_phy_set_rfpath_switch +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x7c44ab78 rtl92c_set_fw_pwrmode_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x7e476b6d rtl92c_phy_iq_calibrate +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x8a1b52c8 rtl92c_set_fw_rsvdpagepkt +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x94d4af8b _rtl92c_phy_rf_serial_read +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x9c12d3f0 rtl92c_fill_h2c_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xae57e3c6 _rtl92c_phy_fw_rf_serial_read +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xb3314d48 _rtl92c_phy_calculate_bit_shift +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xb71cb09b rtl92c_phy_sw_chnl +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xbfcce020 _rtl92c_store_pwrIndex_diffrate_offset +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xc4fb8984 rtl92c_dm_init_rate_adaptive_mask +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xc5328872 rtl92c_phy_set_io_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xc8f1c8a6 _rtl92c_phy_init_bb_rf_register_definition +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xc92c2d32 _rtl92c_phy_set_rf_sleep +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xdc344f6b rtl92c_set_fw_joinbss_report_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xe47130c7 rtl92ce_phy_set_rf_on +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xf12803de rtl92c_phy_rf_config +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xff5fbb2d rtl92c_dm_watchdog +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x6fb9f06f rtl8723_fill_dummy +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_pci 0x394e45b5 rtl_pci_disconnect +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_pci 0x8436dcf4 rtl_pci_probe +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_pci 0xa9464946 rtl_pci_resume +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_pci 0xaad44c06 rtl_pci_suspend +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_usb 0x46bc73dd rtl_usb_resume +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_usb 0x5c126bbc rtl_usb_suspend +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_usb 0x68a7bebb rtl_usb_disconnect +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_usb 0x871d7cdd rtl_usb_probe +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x05c072e8 rtl_ps_disable_nic +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x0cbcc700 rtl_bb_delay +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x207fbb70 rtl_evm_db_to_percentage +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x2f331fff rtl_cmd_send_packet +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x46eae14b rtl_wowlan_fw_cb +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x4adffaa6 rtl_get_tcb_desc +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x4be0c39f efuse_shadow_read +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x4eb6bae5 rtl_hal_pwrseqcmdparsing +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x4f9012fe rtlwifi_rate_mapping +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x502bbe91 rtl_cam_empty_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x53af6dec rtl_send_smps_action +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x643d9e8e rtl_efuse_shadow_map_update +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x6a27b526 rtl_lps_leave +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x7875a288 rtl_lps_enter +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x79188a02 rtl_query_rxpwrpercentage +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x8ce73f81 efuse_read_1byte +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x8fd66711 rtl_ps_set_rf_state +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x980848e2 rtl_addr_delay +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x9f79ecb5 rtl_dm_diginit +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x9f809ca9 rtl_init_rfkill +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xa536cca0 rtl_process_phyinfo +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xa833a49f rtl_cam_mark_invalid +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xab178b84 rtl_cam_add_one_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xb163cdb9 rtl_fw_cb +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xb302ae44 rtl_ps_enable_nic +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xb3b0704e rtl_signal_scale_mapping +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xbaf75c18 rtl_phy_scan_operation_backup +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xc5930204 rtl_rfreg_delay +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xcbd6b730 rtl_cam_del_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xd5711248 rtl_cam_delete_one_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xeac81e09 efuse_one_byte_read +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xead14787 rtl_cam_reset_all_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xfb926117 rtl_cam_get_free_entry +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0x516156fd wlcore_calc_packet_alignment +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0x6ef368f6 wlcore_tx_complete +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0xb9bbb50e wl1271_free_tx_id +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0xe5fbb74f wl12xx_is_dummy_packet +EXPORT_SYMBOL drivers/nfc/microread/microread 0x1ae806fc microread_remove +EXPORT_SYMBOL drivers/nfc/microread/microread 0xd7682617 microread_probe +EXPORT_SYMBOL drivers/nfc/nxp-nci/nxp-nci 0x20c0a978 nxp_nci_fw_recv_frame +EXPORT_SYMBOL drivers/nfc/nxp-nci/nxp-nci 0x96351b1d nxp_nci_remove +EXPORT_SYMBOL drivers/nfc/nxp-nci/nxp-nci 0xd18f3d9f nxp_nci_probe +EXPORT_SYMBOL drivers/nfc/pn544/pn544 0x06ebdef8 pn544_hci_remove +EXPORT_SYMBOL drivers/nfc/pn544/pn544 0x1b48a68e pn544_hci_probe +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x12328179 ndlc_recv +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x1862bef2 st_nci_se_init +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x304182d1 ndlc_close +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x5bf50483 ndlc_probe +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x792bdabb st_nci_se_io +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x87918ad9 ndlc_open +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0xb4f35f66 st_nci_se_deinit +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0xb739c0a9 ndlc_send +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0xc342f13d ndlc_remove +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x030e7286 st21nfca_im_send_atr_req +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x0459fd00 st21nfca_connectivity_event_received +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x06c19519 st21nfca_hci_probe +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x14580447 st21nfca_hci_se_io +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x21dce7c8 st21nfca_dep_deinit +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x345078b2 st21nfca_hci_enable_se +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x431f5fb2 st21nfca_tm_send_dep_res +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x4adb3dc4 st21nfca_apdu_reader_event_received +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x53608512 st21nfca_se_deinit +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x593ff7f5 st21nfca_hci_discover_se +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x61aa1a57 st21nfca_dep_event_received +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x7016f774 st21nfca_im_send_dep_req +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x7a40f2cf st21nfca_hci_disable_se +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xa164bf63 st21nfca_se_init +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xaf7c7ad6 st21nfca_dep_init +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xd81a6c7b st21nfca_hci_remove +EXPORT_SYMBOL drivers/ntb/ntb 0x54299966 ntb_clear_ctx +EXPORT_SYMBOL drivers/ntb/ntb 0x593de5e8 ntb_link_event +EXPORT_SYMBOL drivers/ntb/ntb 0x5fcda150 ntb_set_ctx +EXPORT_SYMBOL drivers/ntb/ntb 0x6dfef1f9 ntb_unregister_client +EXPORT_SYMBOL drivers/ntb/ntb 0xaf89960d __ntb_register_client +EXPORT_SYMBOL drivers/ntb/ntb 0xcc0c9fb8 ntb_unregister_device +EXPORT_SYMBOL drivers/ntb/ntb 0xe21d867b ntb_register_device +EXPORT_SYMBOL drivers/ntb/ntb 0xf27a4932 ntb_db_event +EXPORT_SYMBOL drivers/parport/parport 0x02265d10 parport_wait_event +EXPORT_SYMBOL drivers/parport/parport 0x0ca4985e parport_ieee1284_write_compat +EXPORT_SYMBOL drivers/parport/parport 0x0e4a9fc7 parport_release +EXPORT_SYMBOL drivers/parport/parport 0x10f9a036 parport_ieee1284_read_nibble +EXPORT_SYMBOL drivers/parport/parport 0x24cdf240 parport_announce_port +EXPORT_SYMBOL drivers/parport/parport 0x2961bf25 parport_claim +EXPORT_SYMBOL drivers/parport/parport 0x2a5af36d parport_ieee1284_ecp_read_data +EXPORT_SYMBOL drivers/parport/parport 0x464e0cbd parport_remove_port +EXPORT_SYMBOL drivers/parport/parport 0x4706f62f parport_find_base +EXPORT_SYMBOL drivers/parport/parport 0x4721bd82 parport_del_port +EXPORT_SYMBOL drivers/parport/parport 0x4d2a941b parport_ieee1284_interrupt +EXPORT_SYMBOL drivers/parport/parport 0x5e3a3912 parport_irq_handler +EXPORT_SYMBOL drivers/parport/parport 0x61490661 parport_ieee1284_epp_write_data +EXPORT_SYMBOL drivers/parport/parport 0x64a4176d parport_find_number +EXPORT_SYMBOL drivers/parport/parport 0x67c6c4c0 parport_negotiate +EXPORT_SYMBOL drivers/parport/parport 0x6a1a29e5 parport_put_port +EXPORT_SYMBOL drivers/parport/parport 0x7555a246 parport_ieee1284_ecp_write_addr +EXPORT_SYMBOL drivers/parport/parport 0x80f8458f parport_unregister_device +EXPORT_SYMBOL drivers/parport/parport 0x95bbdd3e parport_write +EXPORT_SYMBOL drivers/parport/parport 0x98c7f208 parport_register_device +EXPORT_SYMBOL drivers/parport/parport 0xa0af784e parport_register_port +EXPORT_SYMBOL drivers/parport/parport 0xa45831ec parport_ieee1284_ecp_write_data +EXPORT_SYMBOL drivers/parport/parport 0xb04495cb parport_ieee1284_epp_write_addr +EXPORT_SYMBOL drivers/parport/parport 0xbf266b3f parport_ieee1284_epp_read_addr +EXPORT_SYMBOL drivers/parport/parport 0xc167bc6b parport_ieee1284_epp_read_data +EXPORT_SYMBOL drivers/parport/parport 0xc7a12556 __parport_register_driver +EXPORT_SYMBOL drivers/parport/parport 0xe11c26e3 parport_set_timeout +EXPORT_SYMBOL drivers/parport/parport 0xec4f6783 parport_unregister_driver +EXPORT_SYMBOL drivers/parport/parport 0xecdadbf5 parport_read +EXPORT_SYMBOL drivers/parport/parport 0xed553090 parport_register_dev_model +EXPORT_SYMBOL drivers/parport/parport 0xed745c13 parport_wait_peripheral +EXPORT_SYMBOL drivers/parport/parport 0xf5012024 parport_ieee1284_read_byte +EXPORT_SYMBOL drivers/parport/parport 0xf76b8494 parport_claim_or_block +EXPORT_SYMBOL drivers/parport/parport 0xff809087 parport_get_port +EXPORT_SYMBOL drivers/parport/parport_pc 0x03cc4159 parport_pc_probe_port +EXPORT_SYMBOL drivers/parport/parport_pc 0x1d155d69 parport_pc_unregister_port +EXPORT_SYMBOL drivers/pci/host/pcie-iproc 0xe57846ba iproc_pcie_remove +EXPORT_SYMBOL drivers/pci/host/pcie-iproc 0xfa3ce263 iproc_pcie_setup +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x0548733d rproc_add +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x056d1774 rproc_alloc +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x1a5de403 rproc_del +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x69db58df rproc_report_crash +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x819a3822 rproc_vq_interrupt +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x97b47e69 rproc_put +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0xa856bdb7 rproc_boot +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0xb963d85e rproc_shutdown +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0xd3746c85 rproc_get_by_phandle +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0xd8bdcfde rproc_da_to_va +EXPORT_SYMBOL drivers/rpmsg/virtio_rpmsg_bus 0x1cb587b1 rpmsg_send_offchannel_raw +EXPORT_SYMBOL drivers/rpmsg/virtio_rpmsg_bus 0x77cf64a0 rpmsg_destroy_ept +EXPORT_SYMBOL drivers/rpmsg/virtio_rpmsg_bus 0x9db22076 rpmsg_create_ept +EXPORT_SYMBOL drivers/rpmsg/virtio_rpmsg_bus 0xdb46d1a6 unregister_rpmsg_driver +EXPORT_SYMBOL drivers/rpmsg/virtio_rpmsg_bus 0xe76338f6 register_rpmsg_driver +EXPORT_SYMBOL drivers/rtc/rtc-ds1685 0x8d5e6cd2 ds1685_rtc_poweroff +EXPORT_SYMBOL drivers/scsi/esp_scsi 0x2ae95921 scsi_esp_register +EXPORT_SYMBOL drivers/scsi/esp_scsi 0x4a29ab38 scsi_esp_intr +EXPORT_SYMBOL drivers/scsi/esp_scsi 0xb2dd7f9a scsi_esp_unregister +EXPORT_SYMBOL drivers/scsi/esp_scsi 0xbb077da2 scsi_esp_cmd +EXPORT_SYMBOL drivers/scsi/esp_scsi 0xe8a00966 scsi_esp_template +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x22961386 fcoe_ctlr_recv +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x2d2c5aec fcoe_ctlr_destroy +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x2fa78919 fcoe_ctlr_link_down +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x397028a9 fcoe_ctlr_destroy_store +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x544c5827 fcoe_transport_detach +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x846003b7 fcoe_ctlr_recv_flogi +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x8f75b5a9 fcoe_fcf_get_selected +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xb5f666eb fcoe_ctlr_els_send +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xc53417b4 fcoe_ctlr_init +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xcba230c8 fcoe_ctlr_set_fip_mode +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xe6f0b39e fcoe_ctlr_link_up +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xef92d4be fcoe_transport_attach +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x0161df0c fc_slave_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x0f8e95e0 fc_exch_recv +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x1a547025 fc_lport_config +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x220f1bc7 fc_lport_bsg_request +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x22b90986 fc_exch_mgr_del +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x244f418f fc_vport_id_lookup +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x299929ea fc_rport_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x2c4ed1a1 fc_lport_flogi_resp +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x34a4355e fc_get_host_stats +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x36e5fbaf fc_cpu_mask +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x3a75b3b1 fc_get_host_speed +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x3e715264 fc_lport_notifier_head +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x400857cb fc_lport_set_local_id +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x42c6d0db fc_elsct_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x4684f1bb fc_lport_logo_resp +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x49ccb414 fc_lport_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x5768edc2 fc_frame_alloc_fill +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x58d508ff libfc_vport_create +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x5c5bec9e fc_disc_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x5efa9e96 fc_set_rport_loss_tmo +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x6278dd32 fc_exch_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x6295cb9d fc_fc4_register_provider +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x62bde91c fc_eh_host_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x67968261 fc_disc_config +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x6a6a36e4 fc_fill_hdr +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x6b2497cd fc_exch_mgr_free +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x70a476bd fc_exch_mgr_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x70bc5229 fc_exch_mgr_list_clone +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x736ecb39 fc_exch_mgr_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x75ded0f7 fc_fabric_login +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x7a4e2506 fc_eh_device_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x82ef392b fc_frame_crc_check +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x85500279 fc_elsct_send +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x8f7321f2 fc_fabric_logoff +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x9cf7f749 fc_linkup +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xae7f4d94 fc_fcp_destroy +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xaff9d46e fc_linkdown +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xb8184148 fc_fill_reply_hdr +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xb8c21dd7 fc_eh_abort +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xbecec6f8 fc_lport_destroy +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xbfd75bb5 fc_vport_setlink +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xc252c372 fc_get_host_port_state +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xc3adaa2e fc_exch_update_stats +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xc977dae6 fc_lport_iterate +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xcb22e38b fc_rport_terminate_io +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xcd8831af fc_queuecommand +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xd9e50041 fc_fc4_deregister_provider +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xe258975d _fc_frame_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xea0a9e63 fc_exch_mgr_add +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xf7be64c9 fc_fcp_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xf9cf820c fc_set_mfs +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xfe614eb1 fc_lport_reset +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x3f207601 sas_resume_ha +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x8a87e724 try_test_sas_gpio_gp_bit +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0xaded4ecc sas_prep_resume_ha +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0xcd4c807d sas_suspend_ha +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0xf94f5fff sas_wait_eh +EXPORT_SYMBOL drivers/scsi/megaraid/megaraid_mm 0x2250c66e mraid_mm_adapter_app_handle +EXPORT_SYMBOL drivers/scsi/megaraid/megaraid_mm 0x504b9424 mraid_mm_register_adp +EXPORT_SYMBOL drivers/scsi/megaraid/megaraid_mm 0x512c956d mraid_mm_unregister_adp +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x0c17edb1 osd_sec_init_nosec_doall_caps +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x0da27b39 osd_dev_fini +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x1a7836c7 osd_req_flush_partition +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x1a7a978b osd_req_decode_get_attr_list +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x2b7930f8 osd_req_write +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x3035cf47 osd_req_create_partition +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x3912443f osd_req_read +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x3de1c9ed osd_auto_detect_ver +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x3e7b96c8 osd_finalize_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x4c8cb920 osd_req_list_partition_objects +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x4d055843 osd_req_read_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x57587d7f osd_req_list_partition_collections +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x5d0cf408 osd_req_create_object +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x5fbf3d7c osd_req_read_sg +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x69a169a9 osd_req_read_sg_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x754c4cab osd_req_get_attributes +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x7dbb0d94 osd_execute_request_async +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x7f99f641 osd_req_remove_partition +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x907d319f osd_req_flush_collection +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x9af48f31 osd_req_write_sg_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x9b6857b2 osd_req_list_dev_partitions +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xa3f26c54 osd_req_write_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xa71dd617 osd_req_flush_object +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xabe55050 osd_req_add_set_attr_list +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xb1a0de9f osd_req_set_attributes +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xb328ed6e osd_req_write_sg +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xb5a59351 osd_end_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xb9a034da osd_execute_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xbfee4232 osd_req_list_collection_objects +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xd0004c39 osd_start_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xd123349e osd_req_remove_object +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xd22630e8 osd_req_decode_sense_full +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xd80dbe70 osd_dev_init +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xdedf03a9 osd_req_add_get_attr_page +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xdf8d493f osd_req_format +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xdfd43738 osd_req_flush_obsd +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xe20d21a0 osd_req_add_get_attr_list +EXPORT_SYMBOL drivers/scsi/osd/osd 0x162dbf1d osduld_info_lookup +EXPORT_SYMBOL drivers/scsi/osd/osd 0x5fc48609 osduld_unregister_test +EXPORT_SYMBOL drivers/scsi/osd/osd 0x65665a76 osduld_device_info +EXPORT_SYMBOL drivers/scsi/osd/osd 0x6cc6997e osduld_path_lookup +EXPORT_SYMBOL drivers/scsi/osd/osd 0x74c4ec88 osduld_put_device +EXPORT_SYMBOL drivers/scsi/osd/osd 0xa69faa34 osduld_device_same +EXPORT_SYMBOL drivers/scsi/osd/osd 0xf7817a57 osduld_register_test +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x292e0d87 qlt_xmit_response +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x2f4f5e8e qlt_stop_phase1 +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x31fdb232 qlt_stop_phase2 +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x40881864 qlt_lport_deregister +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x5c85e124 qlt_free_cmd +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x61af1e83 qlt_enable_vha +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x73d9e36c qlt_abort_cmd +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x867d989f qlt_lport_register +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x905a23f4 qlt_xmit_tm_rsp +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xbe102521 qlt_rdy_to_xfer +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xeba251e0 qlt_unreg_sess +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xefcfa8ce qlt_free_mcmd +EXPORT_SYMBOL drivers/scsi/raid_class 0x376f7e6f raid_class_attach +EXPORT_SYMBOL drivers/scsi/raid_class 0x66b418a6 raid_class_release +EXPORT_SYMBOL drivers/scsi/raid_class 0x83aa54fe raid_component_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x05f00fe5 fc_vport_create +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x16fea043 scsi_is_fc_rport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x31b7fde6 fc_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x39d55c58 fc_remote_port_rolechg +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x648f378e fc_remote_port_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x67f21550 fc_host_post_event +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x7954b1ea fc_get_event_number +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x86f021df fc_remote_port_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x9e6d1eee scsi_is_fc_vport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x9f2423fe fc_remove_host +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xa2b80f5c fc_block_scsi_eh +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xbc2aa88d fc_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xe1bd98e8 fc_vport_terminate +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xfdabcf69 fc_host_post_vendor_event +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x02ca575f scsi_is_sas_port +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x1c75d9e7 sas_rphy_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x29c1802a sas_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x3b334aaf sas_remove_children +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x471ee6ae sas_end_device_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x4bb04845 sas_phy_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x4f819b7c sas_port_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x52560e28 sas_port_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x5ac24564 sas_phy_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x72edb59a sas_port_get_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xa58b3fe7 sas_expander_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xad4f156e sas_rphy_unlink +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xb0befe50 sas_rphy_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xb8331907 sas_read_port_mode_page +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xb9a222ac scsi_is_sas_rphy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xc0adbc53 sas_port_alloc_num +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xd2bb438c sas_port_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xd7c9cb22 sas_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xdd736fd5 sas_phy_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xdea89e2a sas_rphy_remove +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xdf5e616b sas_rphy_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xdf6bb0c0 sas_port_delete_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xe47893fc sas_port_mark_backlink +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xe52a2467 scsi_is_sas_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xeb547932 sas_remove_host +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xf2834649 sas_port_add_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xf5428d1a sas_phy_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xfeb4ce70 sas_port_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x21465651 spi_dv_device +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x3686ea09 spi_print_msg +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x8e7b9567 spi_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x9288123a spi_schedule_dv_device +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0xab3a96c2 spi_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0xc6ff0e9d spi_display_xfer_agreement +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0x405b6e05 srp_parse_tmo +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0x524a57e9 srp_rport_put +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0x74e710ba srp_rport_get +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0x765049a6 srp_reconnect_rport +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0xddcda19b srp_start_tl_fail_timers +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0x0b29eac7 ufshcd_runtime_idle +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0x613c8f3b ufshcd_alloc_host +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0x75e8ab81 ufshcd_system_suspend +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0x822cb647 ufshcd_runtime_resume +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0x8f41ca8f ufshcd_system_resume +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0xc194d95e ufshcd_shutdown +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0xe05a8c7f ufshcd_runtime_suspend +EXPORT_SYMBOL drivers/ssb/ssb 0x1621650b ssb_chipco_gpio_control +EXPORT_SYMBOL drivers/ssb/ssb 0x1b1fb13f ssb_pcihost_register +EXPORT_SYMBOL drivers/ssb/ssb 0x1be83e53 ssb_bus_powerup +EXPORT_SYMBOL drivers/ssb/ssb 0x262ec35d ssb_commit_settings +EXPORT_SYMBOL drivers/ssb/ssb 0x364447e3 ssb_device_disable +EXPORT_SYMBOL drivers/ssb/ssb 0x3930d7f9 ssb_pcicore_dev_irqvecs_enable +EXPORT_SYMBOL drivers/ssb/ssb 0x46e58139 ssb_driver_unregister +EXPORT_SYMBOL drivers/ssb/ssb 0x5a4a9200 ssb_bus_resume +EXPORT_SYMBOL drivers/ssb/ssb 0x5bc398bd ssb_dma_translation +EXPORT_SYMBOL drivers/ssb/ssb 0x6e2d4ac5 ssb_device_enable +EXPORT_SYMBOL drivers/ssb/ssb 0x747beaa6 ssb_bus_suspend +EXPORT_SYMBOL drivers/ssb/ssb 0x834064d6 ssb_bus_pcibus_register +EXPORT_SYMBOL drivers/ssb/ssb 0x87342130 ssb_pmu_set_ldo_voltage +EXPORT_SYMBOL drivers/ssb/ssb 0x98e3c621 ssb_device_is_enabled +EXPORT_SYMBOL drivers/ssb/ssb 0x9cd15e25 ssb_bus_sdiobus_register +EXPORT_SYMBOL drivers/ssb/ssb 0xaa5a0c9a ssb_clockspeed +EXPORT_SYMBOL drivers/ssb/ssb 0xb51a331f ssb_pmu_set_ldo_paref +EXPORT_SYMBOL drivers/ssb/ssb 0xc0512e0f ssb_admatch_base +EXPORT_SYMBOL drivers/ssb/ssb 0xc4641487 ssb_bus_unregister +EXPORT_SYMBOL drivers/ssb/ssb 0xcd2b1c70 ssb_set_devtypedata +EXPORT_SYMBOL drivers/ssb/ssb 0xd2fc4bfc __ssb_driver_register +EXPORT_SYMBOL drivers/ssb/ssb 0xd481192b ssb_admatch_size +EXPORT_SYMBOL drivers/ssb/ssb 0xfeeb137e ssb_bus_may_powerdown +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x03f05670 fbtft_probe_common +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x04e25269 fbtft_register_framebuffer +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x136fabd4 fbtft_remove_common +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x20dec0b4 fbtft_write_vmem16_bus9 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x3ce7097d fbtft_write_vmem16_bus16 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x3e71705b fbtft_read_spi +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x4d36568f fbtft_register_backlight +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x4f4f31d7 fbtft_write_spi +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x5128d66a fbtft_dbg_hex +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x53dfd506 fbtft_write_vmem8_bus8 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x72198328 fbtft_write_spi_emulate_9 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x7225c224 fbtft_init_display +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x72dbb0c1 fbtft_write_reg16_bus8 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x7c5f2ef2 fbtft_write_reg16_bus16 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xaf89bc23 fbtft_unregister_backlight +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xb3597cf5 fbtft_framebuffer_alloc +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xbd332d74 fbtft_write_reg8_bus8 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xc3335742 fbtft_write_gpio16_wr +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xd52b50de fbtft_write_vmem16_bus8 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xd82c99de fbtft_write_gpio16_wr_latched +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xe33d2087 fbtft_write_gpio8_wr +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xeaa2810d fbtft_write_reg8_bus9 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xef9df67c fbtft_unregister_framebuffer +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xf529c457 fbtft_framebuffer_release +EXPORT_SYMBOL drivers/staging/fwserial/firewire-serial 0x32382dc3 fwtty_port_get +EXPORT_SYMBOL drivers/staging/fwserial/firewire-serial 0xf93f9d2b fwtty_port_put +EXPORT_SYMBOL drivers/staging/iio/addac/adt7316 0xfca73aab adt7316_probe +EXPORT_SYMBOL drivers/staging/iio/magnetometer/hmc5843_core 0x1f67d0a7 hmc5843_common_suspend +EXPORT_SYMBOL drivers/staging/iio/magnetometer/hmc5843_core 0x8709d1c6 hmc5843_common_probe +EXPORT_SYMBOL drivers/staging/iio/magnetometer/hmc5843_core 0x8deab0e3 hmc5843_common_remove +EXPORT_SYMBOL drivers/staging/iio/magnetometer/hmc5843_core 0xd1af8244 hmc5843_common_resume +EXPORT_SYMBOL drivers/staging/iio/meter/ade7854 0xa393ac7d ade7854_remove +EXPORT_SYMBOL drivers/staging/iio/meter/ade7854 0xb4e7540b ade7854_probe +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x0e4ae97d lnet_copy_iov2kiov +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x11a3ba19 lnet_sock_listen +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x12623d01 lnet_sock_getaddr +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x1366b7ac LNetSetLazyPortal +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x19670622 LNetNIInit +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x1b191752 lnet_msgtyp2str +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x1c17827c lnet_connect +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x1ee5f15e lnet_ipif_query +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x1fe16fd5 LNetGet +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x204b8151 lnet_counters_reset +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x2aa9953d lnet_cpt_of_nid +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x2ac93e90 lnet_connect_console_error +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x32604477 lnet_kiov_nob +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x33202a6c LNetGetId +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x352e91e3 lnet_parse +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x3c779ee0 LNetPut +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x3f4f5b46 LNetNIFini +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x473ad33b LNetDist +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x48157417 lnet_net2ni +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x4d8aa296 lnet_set_reply_msg_len +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x50956835 lnet_copy_kiov2kiov +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x55db5324 lnet_iov_nob +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x58a1ca89 LNetMDUnlink +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x59f22933 lnet_create_reply_msg +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x5e91cfec lnet_copy_iov2iov +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x5fee352c lnet_acceptor_timeout +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x61f784b2 LNetClearLazyPortal +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x64cdea3a LNetCtl +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x66d449b1 lnet_ipif_enumerate +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x674c7ad8 lnet_sock_setbuf +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x6f7be171 LNetEQGet +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x722c76e5 LNetMDAttach +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x7ae669a8 lnet_sock_read +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x7d59a7fe LNetMEInsert +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x854ab844 LNetEQWait +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x899c62c0 lnet_sock_connect +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x8eacedde lnet_sock_getbuf +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x981a33e7 lnet_sock_accept +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x9de986d3 LNetEQAlloc +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xa56de08d lnet_ipif_free_enumeration +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xaa414970 LNetMEUnlink +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xaa9b477e LNetMDBind +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xaea2b022 lnet_extract_kiov +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xb75f7953 LNetEQFree +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xba5566d2 lnet_acceptor_port +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xbc5fe745 lnet_copy_kiov2iov +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xbf0760a2 LNetMEAttach +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xc7393b9b lnet_finalize +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xca585dc3 lnet_sock_write +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xd1c2f3e4 lnet_extract_iov +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xd7c50cb9 lnet_init +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xdfb7600e lnet_notify +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xe8124744 lnet_fini +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xf1b316bf LNetSnprintHandle +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xfa106804 lnet_counters_get +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xfbe3939e lnet_register_lnd +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xfc51a85b the_lnet +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xfe12e94a lnet_unregister_lnd +EXPORT_SYMBOL drivers/staging/lustre/lnet/selftest/lnet_selftest 0x078db139 lstcon_ioctl_entry +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0x1a95e2b7 client_fid_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0x1c4bb5f9 LU_OBF_FID +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0x375e6f8d LUSTRE_BFL_FID +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0x6bc8a5c9 client_fid_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0x7aa76d3c seq_client_get_seq +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0xae501119 seq_client_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0xae61cff5 LU_DOT_LUSTRE_FID +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0xc997a02f LUSTRE_SEQ_SPACE_RANGE +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0xd2cede4a seq_client_alloc_fid +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0xd8f90494 seq_client_flush +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0xda3b874f seq_client_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0xecee2727 LUSTRE_SEQ_ZERO_RANGE +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0x32beebf5 fld_client_flush +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0x4a6c9e1b fld_client_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0x53623d4e fld_client_del_target +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0x5f8423a8 fld_client_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0x66f0feb3 fld_client_debugfs_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0xc6a92892 fld_client_add_target +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0xf4f391c9 fld_client_lookup +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x000c507f libcfs_debug_dumplog +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x00c881f6 cfs_cpt_number +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x01db5172 cfs_percpt_atomic_summary +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x0389f857 cfs_cpt_spread_node +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x069f9bb2 cfs_wi_schedule +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x08ada613 libcfs_console_backoff +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x0b4b1546 libcfs_lnd2modname +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x0c68bc45 cfs_cpt_clear +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x0de6c369 cfs_cap_lower +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x0e311d38 cfs_percpt_atomic_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x0f5eff79 cfs_percpt_number +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x10b7e9c3 cfs_cpt_unset_cpu +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x10fd50ae cfs_hash_for_each_empty +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x13550229 lbug_with_loc +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x151e7546 cfs_cpt_table_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x17ac7833 libcfs_deregister_ioctl +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x1a60d439 cfs_parse_nidlist +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x1c7ec980 cfs_hash_for_each_safe +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x22319718 cfs_percpt_unlock +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x23f6f445 cfs_restore_sigs +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x247da28c libcfs_kvzalloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x2637a660 cfs_hash_bd_lookup_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x2663147a __cfs_fail_timeout_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x27b6d3ba cfs_ip_addr_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x2adae33e cfs_init_timer +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x2bc787bc cfs_crypto_hash_update_page +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x2dbe54b2 cfs_trimwhite +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x2e5044c7 cfs_cpt_set_nodemask +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x2efcc0e6 cfs_block_sigs +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x2f85ad89 cfs_hash_dual_bd_finddel_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x31fc5082 cfs_crypto_hash_update +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x339b461a cfs_hash_dual_bd_findadd_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x377f93fb cfs_srand +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x389ca502 libcfs_debug_mb +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x38fde09c cfs_hash_hlist_for_each +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x39fdcd2b libcfs_debug_set_level +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x3c1285bd libcfs_subsystem_debug +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x3d5e6098 cfs_race_state +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x3ef0d90c libcfs_kkuc_group_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x4062f92b libcfs_run_lbug_upcall +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x411db754 cfs_crypto_hash_final +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x44688a0a cfs_block_allsigs +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x44728d76 cfs_cpt_bind +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x44839bbb cfs_rand +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x48193550 cfs_hash_bd_finddel_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x482deff7 cfs_cpt_unset_cpumask +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x48f163c6 libcfs_str2anynid +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x4a95faa2 cfs_timer_deadline +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x4a99af72 cfs_clear_sigpending +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x4b123f3a cfs_hash_cond_del +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x4d89e988 cfs_block_sigsinv +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x4f1f2fa5 cfs_crypto_hash_digest +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x50345570 libcfs_str2net +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x5051b6d2 portal_enter_debugger +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x509d38b0 libcfs_net2str +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x54fd9a71 cfs_percpt_index +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x55d18175 cfs_hash_size_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x58a7ee00 libcfs_catastrophe +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x5946ec2b cfs_percpt_current +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x5a785762 cfs_cpt_online +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x5c013b81 cfs_expr_list_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x5dce9e80 libcfs_lnd2str +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x5dd2e495 cfs_hash_bd_findadd_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x5df8c623 cfs_cpt_cpumask +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x62289d65 cfs_array_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x627b8187 libcfs_kkuc_msg_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x63be5b7f cfs_race_waitq +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x64685fef libcfs_console_min_delay +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x6564c55b libcfs_console_max_delay +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x65dd9f0c libcfs_run_upcall +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x67398404 cfs_wi_sched_destroy +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x6c905b5f libcfs_watchdog_ratelimit +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x6c9b4713 cfs_hash_bd_del_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x71f662a3 libcfs_debug +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x75600a04 cfs_hash_bd_move_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x790dbd66 cfs_hash_rehash_key +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x7a63872e cfs_timer_disarm +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x7b0b748a cfs_ip_addr_parse +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x7e6a5b3c cfs_hash_findadd_unique +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x7e6f6485 cfs_ip_addr_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x7fda989d cfs_fail_loc +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x8151c3aa cfs_cap_raised +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x81bef0ce add_wait_queue_exclusive_head +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x828d16a2 cfs_cpt_table +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x83d795e4 cfs_match_nid +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x83e75430 cfs_hash_getref +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x857aaea7 libcfs_register_ioctl +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x89b2ddc3 cfs_hash_rehash_cancel_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x89dcbafa cfs_hash_for_each +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x8c85e4e6 cfs_crypto_hash_speed +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x8d3622c1 cfs_hash_bd_add_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x8dda96cb cfs_hash_dual_bd_unlock +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x91504e8b libcfs_kmemory +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x92f54077 cfs_hash_putref +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x940ed192 libcfs_stack +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x95620e8c cfs_wi_deschedule +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x96727837 cfs_hash_dual_bd_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x97b0b9bc cfs_enter_debugger +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x9879b229 cfs_get_random_bytes +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x9f82f712 cfs_trace_copyout_string +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xa256e060 cfs_hash_bd_peek_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xa28a6757 cfs_percpt_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xa2b68b2a cfs_array_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xa6b9dee6 libcfs_kkuc_group_rem +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xa9088531 cfs_expr_list_values +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xa9a5cf4e cfs_hash_lookup +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xa9c0ca61 cfs_timer_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xa9dc74e2 cfs_trace_copyin_string +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xabc53bf1 cfs_hash_is_empty +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xac0f67e3 cfs_cpt_unset_node +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xafdb46d6 cfs_hash_dual_bd_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xb2ae1633 cfs_hash_rehash_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xb336ee38 cfs_hash_for_each_key +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xb36884be libcfs_kkuc_group_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xb473e79e cfs_wi_sched_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xb8c52b1b cfs_timer_done +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xbab4f34e cfs_timer_arm +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xbc275420 cfs_cpt_unset_nodemask +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xbf7a37f1 cfs_signal_pending +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xc0ea7fc0 cfs_expr_list_parse +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xc2dfd791 libcfs_console_ratelimit +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xc39fd2f9 libcfs_panic_on_lbug +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xc49b1c62 cfs_percpt_atomic_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xc514e721 cfs_hash_del +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xca24b2dc cfs_hash_for_each_nolock +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xcb2160d3 cfs_cpt_of_cpu +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xcb385db9 libcfs_debug_binary +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xcc20e694 libcfs_nid2str +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xcc7e1d13 cfs_percpt_lock_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xccc45639 cfs_free_nidlist +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xcd38904c cfs_wi_exit +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xce1a88f2 libcfs_arch_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xced1fed2 cfs_hash_rehash +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xcf61bacb __cfs_fail_check_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xcf90528c cfs_cpt_table_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xd1319447 cfs_cpt_nodemask +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xd13befa9 cfs_percpt_lock_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xd3965252 cfs_hash_del_key +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xd5396536 cfs_cpt_set_node +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xd66d427e cfs_hash_dual_bd_lookup_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xd6a52be3 libcfs_printk +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xd96f406d cfs_cap_raise +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xdce448d0 cfs_cpt_set_cpumask +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xde17bb8d libcfs_isknown_lnd +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xde83075f libcfs_kvzalloc_cpt +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xdf2789c0 cfs_curproc_cap_pack +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xdf675bc7 cfs_hash_add_unique +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xe262a6e2 cfs_timer_is_armed +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xe2f91ce3 libcfs_debug_msg +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xe3bf6897 cfs_percpt_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xe45b62ff cfs_cpt_current +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xe6d83cf8 cfs_hash_bd_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xe7b54314 libcfs_arch_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xebc57fcb cfs_hash_debug_str +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xec1f56d5 libcfs_str2nid +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xeceac781 cfs_fail_val +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xee92bb75 cfs_percpt_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xf0246bf2 cfs_cpt_table_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xf3565b71 libcfs_debug_vmsg2 +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xf372d1c2 cfs_firststr +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xf440bb38 libcfs_kkuc_group_foreach +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xf782fbe6 cfs_cpt_weight +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xf8a8644b libcfs_id2str +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xf94025d1 libcfs_str2lnd +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xfa0d98ca cfs_cpt_set_cpu +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xfbd3438b cfs_hash_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xfcb41710 cfs_hash_debug_header +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xfde479b0 cfs_hash_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xfe565fa9 cfs_crypto_hash_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/llite/lustre 0x7f7fb0ac ll_osscapa_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/llite/lustre 0x9ea1a22b ll_iocontrol_register +EXPORT_SYMBOL drivers/staging/lustre/lustre/llite/lustre 0xcd3cde92 ll_iocontrol_unregister +EXPORT_SYMBOL drivers/staging/lustre/lustre/llite/lustre 0xdac88708 ll_stats_ops_tally +EXPORT_SYMBOL drivers/staging/lustre/lustre/llite/lustre 0xf746e93b ll_direct_rw_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/lov/lov 0x1d3dd556 lov_stripe_unlock +EXPORT_SYMBOL drivers/staging/lustre/lustre/lov/lov 0x279eed1d lov_read_and_clear_async_rc +EXPORT_SYMBOL drivers/staging/lustre/lustre/lov/lov 0x3bb8a42a lov_lsm_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/lov/lov 0x466c6625 lov_stripe_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/lov/lov 0xb8419120 lov_device_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/lov/lov 0xfe5d7164 lov_lsm_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/mdc/mdc 0x0df21540 it_set_disposition +EXPORT_SYMBOL drivers/staging/lustre/lustre/mdc/mdc 0x5919b6d6 it_clear_disposition +EXPORT_SYMBOL drivers/staging/lustre/lustre/mdc/mdc 0x5ef8417d it_disposition +EXPORT_SYMBOL drivers/staging/lustre/lustre/mdc/mdc 0xfe26c5a6 it_open_error +EXPORT_SYMBOL drivers/staging/lustre/lustre/mgc/mgc 0xdc287f95 mgc_fsname2resid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x00f6e5ed llog_cat_declare_add_rec +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x00f97a2f cl_page_gang_lookup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x01665e34 class_parse_net +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0244ae78 lprocfs_seq_read_frac_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0284b07c cl_lock_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x02b99099 lprocfs_obd_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x02e741bd cl_object_attr_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x035852d0 lustre_swab_llog_rec +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x03630c3d cl_page_list_splice +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x03a14211 class_handle_hash_back +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x03d57f6a cl_lock_at +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0432d16e dt_version_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x057f6d4b class_find_old_param +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x05af1920 dt_quota_glb_features +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x05f84e88 LU_BUF_NULL +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x06cd56a8 cl_page_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0780f1b2 lu_context_key_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x07aa68bb lustre_swab_lustre_cfg +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x07b6fdbb cl_page_delete +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x07d45876 obdo_set_parent_fid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x08266fa2 iattr_from_obdo +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x083942ff class_del_profile +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x09098666 cl_env_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x098b050b cl_lock_at_pgoff +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x098bea19 cl_page_cache_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0996f4b8 lprocfs_alloc_obd_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x09f139a0 cl_page_at +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0a93edde cl_page_is_owned +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0aa87e50 cl_enqueue +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0ab898b5 obdo_cpu_to_le +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0b513ee7 obd_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0c378d79 lustre_swab_llog_hdr +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0cf99bff dt_acct_features +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0eb0d9f5 llog_open_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0fa4f39c ldebugfs_add_vars +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0fdb2410 dt_txn_callback_del +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0feb7e3f lu_context_key_quiesce_many +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x103b834d cl_io_submit_sync +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x11495519 lprocfs_write_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x11bbada1 cl_io_prepare_write +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x12b7de96 obdo_from_inode +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x137eb5f8 class_devices_in_group +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x13db9251 lu_context_exit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x142d6821 dt_device_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1491dc30 lu_context_tags_clear +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x14e87aa9 cl_lock_user_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1528c3f7 ldebugfs_register +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1829c866 class_num2obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x194dd87e lprocfs_wr_atomic +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1a4bdd5e cl_page_slice_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1b4302cf ldebugfs_add_simple +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1b996b60 lustre_process_log +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1cc487c7 capa_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1cd8cfef cl_object_attr_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1ce1f018 class_disconnect_exports +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1d03b365 class_conn2cliimp +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1d514c1c llog_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1e243dc4 lu_site_stats_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1ecab664 class_import_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1f08c615 lu_object_header_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1f3dfb0d lprocfs_stats_collect +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1f49fd7b cl_io_iter_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1f7e83e9 obdo_refresh_inode +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1f9a59ad cl_lock_ext_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1fda2ae9 class_exp2obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x20437539 cl_object_header_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x20753516 lprocfs_rd_server_uuid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x20f72ac8 class_export_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x21307495 lu_buf_check_and_grow +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x21e47c79 cl_lock_state_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x21eed0a6 cl_unuse_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x221826f1 class_parse_nid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x22b7decd cl_lock_mutex_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x22ce25c2 llog_close +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x239854af cl_lock_request +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x23c314c7 class_conn2export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x252407df lu_kmem_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2543e100 cl_io_read_page +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2547efae lustre_uuid_to_peer +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2588a00e cl_page_list_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x259b6013 cl_pages_prune +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x259ebac6 obd_alloc_fail +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x26d2a88f lu_env_refill +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x26f5c272 cl_io_unlock +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x275cdc7a cl_env_reexit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2857cf37 class_incref +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x286860f5 class_handle_free_cb +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x28e0db8e cl_req_page_done +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2977a75a cl_lock_descr_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x297cf5e0 class_handle2object +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2a34a297 llog_write +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2ae1cd79 kuc_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2b3d1d58 cl_lock_get_trust +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2b4c48e9 server_name2svname +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2bbb0321 class_disconnect_stale_exports +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2c037f54 lu_device_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2cf409be capa_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2d66adde class_uuid2obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2ecf3d49 llog_cat_cancel_records +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3178fb25 lu_context_key_revive +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x317e703c llog_cat_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x31dbb216 cl_lock_error +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x31e53a4a class_disconnect +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3242ed35 obdo_cachep +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x326fb683 cl_page_find +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x32aeb126 ldebugfs_obd_seq_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x32f7c588 cl_2queue_init_page +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x33050ecf llog_cat_reverse_process +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x344ac92a lprocfs_single_release +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x34723b48 cl_lock_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x347a520c lprocfs_rd_conn_uuid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x34edb9e4 cl_page_list_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x34f45871 dump_exports +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x35a6093f cl_page_list_del +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x369be015 obdo_le_to_cpu +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3732f9be llog_cancel_rec +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x377f813b cl_lock_intransit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x37ed6e4b at_early_margin +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x381b5694 cl_lock_peek +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x38d596b3 dt_object_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x38f4d111 cl_2queue_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x38fb0c90 class_match_param +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x39397dd3 cl_enqueue_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x393d9850 obdo_from_md +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3a005065 dt_otable_features +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3a1f8873 cl_lock_enclosure +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3a25ec0d cl_lock_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3b4efbdb obdo_from_iattr +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3bdb124f cl_index +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3c029aee cl_lock_slice_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3d2f9c89 dt_read +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3db0b26d llog_backup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3dc4277b class_destroy_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3e2cb5cd lu_context_key_degister +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3e9c3a73 lu_context_key_register +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3f15e0b2 lu_cdebug_printer +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3f25c782 obd_max_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3f66878e cl_locks_prune +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x402c3f40 cl_page_header_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x402f46b7 lu_device_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x40ca48d1 cl_sync_io_wait +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4169ed82 llog_cat_init_and_process +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x419dbef2 llog_thread_key +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x431ab2eb cl_stack_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x43f26b11 cl_io_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4509cfc2 cl_lock_enqueue_wait +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x46c31a82 class_config_parse_llog +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x47391a55 llog_copy_handler +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x474ed5bd lustre_swab_ll_fid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x47b35f7d statfs_unpack +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x481a2f66 lu_object_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x482d3cb5 capa_cachep +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x48336fae cl_site_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x48791a11 cl_object_glimpse +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x494cfb52 lustre_acl_xattr_merge2ext +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x49a0f6ea lustre_posix_acl_xattr_2ext +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x49a29223 lprocfs_find_named_value +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4a58e4e4 obdo_from_la +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4abd07de lustre_posix_acl_xattr_filter +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4ac58713 obd_connect_flags2str +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4ad0f6e6 class_import_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4aececdf lprocfs_rd_state +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4c9bf4e7 lu_site_init_finish +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4d07ee56 cl_type_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4d13458b kuc_len +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4d1b1ca6 lu_env_refill_by_tags +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4d2e074c lprocfs_init_ops_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4d9f6d72 cl_lock_closure_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4e80a9fc cl_vmpage_page +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4f3afd3c lu_object_assign_fid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4fb36a2d cl_io_iter_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4fba4346 dt_directory_features +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x50134ba6 dt_version_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x503259b8 dt_record_write +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5085f313 cl_2queue_discard +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x50c7fc36 ptlrpc_put_connection_superhack +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x516d708f dt_index_read +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x517b0022 lu_object_unhash +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x525bf806 llog_init_handle +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x52df1c8d cl_lock_disclosure +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x534a61d9 llog_erase +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5409bcae cl_page_clip +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x544a5167 la_from_obdo +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x54885f87 ldlm_timeout +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x558bec27 obd_ioctl_getdata +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5627cce8 lprocfs_oh_tally +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x564e9d44 init_capa_hash +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x570d09ae lustre_swab_lu_fid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x57eaad04 obd_devs +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x57ed4d03 lu_object_find +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x597c0d64 __llog_ctxt_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x59a0d5c0 class_process_proc_param +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5a0c7000 lustre_register_kill_super_cb +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5a20d896 obd_memory_max +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5a64d92d lprocfs_counter_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5af88f55 cl_wait +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5b2714fd lu_object_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5b4abef2 class_config_dump_llog +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5b866882 cl_lock_hold_release +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5bc022c5 lprocfs_dt_rd_filestotal +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5ca1116c cl_object_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5cc6a578 lu_dev_add_linkage +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5d34ae0d cl_lock_mode_name +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5dd566d6 dt_key +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5de01627 lprocfs_counter_sub +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5de88e09 class_decref +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5e73df25 dt_object_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5eb4b367 cl_lock_mutex_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5ee22cf4 lprocfs_rd_timeouts +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5f66bd70 class_new_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5fe97b73 block_debug_check +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x60058040 cl_object_top +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6033b908 obdo_cmp_md +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x612cb999 cl_page_is_vmlocked +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x613def61 cl_io_start +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x620b8bca dt_record_read +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x631fd7b9 lustre_ext_acl_xattr_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6394ea19 cl_io_rw_advance +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x63ad4e38 obd_export_evict_by_nid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6562c9d6 cl_lock_is_mutexed +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x65a342d0 cl_conf_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6734adbd lprocfs_read_frac_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x679abc1c obdo_to_inode +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x67ff0dd4 cl_req_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6836c0e9 cl_page_own_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6866efb4 cl_io_rw_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6890d175 lustre_get_jobid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x698b61fc cl_lvb2attr +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x699bd270 lprocfs_alloc_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x69c42114 at_min +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6a86ee37 cl_env_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6aa48e1a cl_object_header_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6bb6d421 lu_buf_realloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6bc85800 cl_page_assume +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6bccffb9 cl_io_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6bd9a692 lu_object_anon +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6c1a1307 lu_context_key_revive_many +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6dd4c5b8 cl_page_flush +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6e1cb7a2 cl_io_loop +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6e574d23 lu_site_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6f3cdc88 llog_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6f3e6225 dt_quota_slv_features +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6f71612f cl_unuse +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6f854156 lu_object_locate +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x70102020 llog_declare_write_rec +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7042e030 cl_io_lock_alloc_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7069eda2 llog_exist +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x720cd2ec lu_context_key_quiesce +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x742559b1 class_unregister_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x74aa95cf lprocfs_init_ldlm_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x74d2336d dt_try_as_dir +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x752f71a8 class_get_profile +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7548b28f cl_io_commit_write +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x756a77f3 class_parse_nid_quiet +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x76706d21 lu_site_purge +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x770fd593 dt_device_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x77d2089a class_name2dev +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7802fcd7 lustre_swab_llogd_conn_body +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x789796a1 obd_zombie_barrier +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x79263f1b cl_lock_modify +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x79e73e3a cl_site_stats_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7aaa5be4 dt_txn_hook_stop +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7b4fc57b at_max +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7b6a62e2 cl_page_list_discard +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7d23d512 class_manual_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7edcafa0 cl_env_reenter +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7fe5561a obd_dirty_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8031efb8 lprocfs_dt_rd_kbytestotal +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x806cc497 class_add_uuid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8082944b lu_site_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x809219c5 cl_lock_delete +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x80fc0ab6 lu_object_header_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x81742d89 obd_ioctl_popdata +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x81e2f8d3 class_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x826eb43f lu_dev_del_linkage +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x827a282a cl_page_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x831f656c class_process_config +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x83654a57 cl_page_make_ready +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x83c0e187 cl_page_list_unmap +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x83e70b9a ldebugfs_add_symlink +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8446b9a8 obdo_to_ioobj +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x84786acf cl_page_unmap +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8489f086 obd_alloc_fail_rate +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x849e5385 obd_update_maxusage +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x85595a99 lu_site_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x85606af0 lu_object_add_top +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x85c9ab14 class_connect +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x85d40144 obd_memory +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x85e9bfb9 lprocfs_rd_uint +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x864dcd59 dt_txn_callback_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8682ce9b class_exp2cliimp +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8686f87b llog_process +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x869d9d9d cl_lock_state_wait +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x87016420 lu_context_key_degister_many +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x871aca70 dt_index_walk +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x877c6538 lu_device_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x884c1877 cl_page_own +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8a07c0a6 cl_page_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8a8341bc lprocfs_obd_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8aa2c358 lprocfs_dt_rd_blksize +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8ac73b0f llog_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8b0cb9d5 cl_io_top +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8b5f4057 lu_context_tags_update +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8ba6e479 lustre_swab_lu_seq_range +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8bbb99c5 cl_page_size +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8bf93bcd cl_page_list_assume +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8f67314c obd_dump_on_eviction +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8fa307a4 lprocfs_rd_u64 +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x901cefe5 lprocfs_wr_uint +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9044e8be lprocfs_obd_rd_max_pages_per_rpc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x90b3790b cl_lock_mutex_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x90bfab19 cl_lock_descr_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x90c8d327 lprocfs_init_mps_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x918adc2f cl_env_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x92e58479 obd_dump_on_timeout +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x932184b6 cl_lock_unhold +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x93b46468 lu_session_tags_clear +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x93cd136e llog_sync +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x94456933 class_fail_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x94677235 lprocfs_clear_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x94a85a94 lu_stack_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9512d507 lustre_acl_xattr_merge2posix +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x955f5220 ldlm_timeout_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x95735c6c at_extra +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9603c99d lu_device_type_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x96271e7f cl_lock_discard_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x96abd7c8 cl_req_attr_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9767adce class_uuid2dev +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x97d03783 at_history +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x99b35f27 _debug_capa +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x99f73211 cl_io_lock_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9a3d773e cl_object_prune +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9a635673 dt_store_resolve +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9ac221f9 lu_object_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9b1ed9d8 obd_jobid_var +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9b2a82f0 capa_cpy +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9b53ee44 lu_device_type_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9c301cdc cl_lock_extransit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9cd8b38a cl_object_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9ce427d7 lu_object_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9d3dcce7 llog_is_empty +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9d72226b cl_req_slice_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9dbb17b6 lprocfs_dt_rd_kbytesfree +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9eca2632 ldebugfs_remove +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9f457fb5 cl_2queue_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9f6bc28b obd_max_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9f98fb91 cl_page_list_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa160da4a lu_object_header_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa17061e2 cl_object_find +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa210d66e cl_lock_closure_build +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa357a3a4 class_get_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa4335379 cl_sync_io_note +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa45bf34c class_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa4e14874 cl_page_disown +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa53c3afb cl_lock_user_del +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa5f9d6e3 lprocfs_rd_atomic +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa5fb234f lprocfs_write_frac_u64_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa611d72e lprocfs_free_md_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa64a4464 lu_context_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa674c241 kuc_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa707a8ad llog_declare_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa7b642e4 cl_io_sub_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa7cae4be cl_env_nested_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa862d221 lprocfs_oh_clear +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xaa03d925 cl_lock_nr_mutexed +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xaa2133a0 lu_context_enter +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xaa21b7a0 lustre_register_quota_process_config +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xab1f3bee obd_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xabf45922 capa_decrypt_id +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xac4c9cb3 cl_page_list_disown +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xac7f1596 kuc_ptr +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xad38539a llog_process_or_fork +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xae14b08c cl_io_slice_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xaf102e9f class_detach +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb01963a6 class_uuid_unparse +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb0862bd4 lu_object_find_at +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb1b89b6d class_attach +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb2234fe2 dump_lniobuf +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb35519ed lustre_swab_cfg_marker +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb3b3499e cl_object_attr_unlock +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb41767e5 llog_cat_process +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb41998cd lustre_cfg_rename +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb45f1f9d cl_lock_closure_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb4f8ee63 lprocfs_read_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb5366e6c obd_export_evict_by_uuid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb599a467 cl_2queue_disown +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb6ba5dd5 kuc_ispayload +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb6bb3b01 cl_lock_release +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb743ec6a dt_mode_to_dft +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb8711a36 cl_io_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb8dbd3d4 llog_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb92cfd9e class_export_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb948b70e cl_req_page_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb9dfa513 class_handle_unhash +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xba97b283 dt_declare_version_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xba985283 lustre_register_client_process_config +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbacac922 lprocfs_write_frac_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbb2ad714 cl_page_list_move +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbb6c8510 obd_export_nid2str +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbb96d281 class_config_llog_handler +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbb9af717 lu_object_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbc436a0d obdo_cpy_md +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbd4c346b dt_txn_hook_start +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbe13c65c cl_page_list_own +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbe24c8ea cl_site_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbe568201 dt_locate_at +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbf29d21c cl_io_is_going +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbf9e695e lprocfs_oh_tally_log2 +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc07255e4 lprocfs_seq_release +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc0bf7ef2 obd_debug_peer_on_timeout +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc114a32c lustre_end_log +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc17f4ed2 lu_device_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc1b9a319 lprocfs_oh_sum +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc25c9201 cl_2queue_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc313acda class_name2obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc3480e71 dt_txn_hook_commit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc51f7953 cl_page_is_under_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc98a6dc0 lu_object_put_nocache +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc9b3c667 dt_lfsck_features +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc9be26b0 class_unlink_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xca339542 cl_page_completion +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcb0ab67f obd_max_dirty_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcb0abb75 cl_lock_hold_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcc703d70 lprocfs_free_obd_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcd7537ee get_devices_count +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcd8a604e lu_buf_check_and_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcdd6a152 cl_lock_is_intransit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xce506839 cl_object_kill +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xce75472d cl_offset +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcea71678 lustre_register_client_fill_super +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd0103eae cl_sync_io_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd04701ad lu_context_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd08827c0 server_name2fsname +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd0b6995d lu_buf_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd10aa042 lustre_swab_llog_id +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd2d60861 lustre_common_put_super +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd404c8f9 class_new_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd56ef85d lu_env_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd596a3b4 lu_context_key_register_many +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd5cce158 lu_object_find_slice +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd6183626 cl_page_lookup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd674314c dt_lookup_dir +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd70fe669 lustre_swab_llogd_body +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd710683d dt_find_or_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd7bc8654 obd_timeout +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd7bfbc9c lprocfs_dt_rd_filesfree +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd7f7b340 cl_lock_mode_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd85ca77d cl_lock_hold +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd8ec405d llog_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd8f7fcc6 cl_env_peek +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd902f510 cl_lock_weigh +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd94212be lprocfs_counter_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd99e1ad3 cl_object_has_locks +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd9ccf7d2 dt_store_open +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xda5b1ced class_find_param +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdac644c8 lustre_posix_acl_xattr_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdb13dce1 capa_list +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdb372ba2 class_register_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdb5895fa class_conn2obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdc28f32e llog_cat_close +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdcc40af0 class_check_uuid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xddd20b54 class_handle_hash +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xde7d985b obd_dirty_transit_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdf0b2f1b lprocfs_rd_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdf39fe9b cl_lock_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdf623799 lprocfs_stats_alloc_one +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe028cf84 capa_encrypt_id +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe18916fa llog_declare_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe18f7d0e cl_queue_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe29a7df4 cl_attr2lvb +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe2bd54e8 llog_write_rec +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe2e21c07 llog_reverse_process +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe2eb4470 class_get_next_param +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe37dc7d8 cl_2queue_assume +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe4b6b429 md_from_obdo +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe51abfdc cl_lock_signal +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe583b23b lu_kmem_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe722b5a0 lprocfs_alloc_md_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe79882a4 lu_env_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe7d83236 cleanup_capa_hash +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe7ecc1e0 cl_page_find_sub +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe813b6cd ldebugfs_register_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe8785b37 cl_page_top +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe8e84c32 class_match_nid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe96bd58e class_search_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe9ac37ff llog_cat_process_or_fork +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xeb567b85 cl_page_discard +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xec1a4025 lu_context_refill +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xec7d6b85 obd_timeout_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xecb03110 lprocfs_rd_connect_flags +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xed733878 capa_lookup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xed8b9d8b lprocfs_at_hist_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xee68bc29 lu_session_tags_update +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xeeeb79fa do_lcfg +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xef76f858 block_debug_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xef7854e4 cl_req_completion +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xefcf48a3 cl_object_attr_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xeff95ca8 class_add_conn +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf00d1d65 cl_page_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf01e2527 server_name2index +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf082685c lprocfs_exp_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf0b7d771 lprocfs_rd_name +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf1760db4 class_put_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf18948fc cl_wait_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf2515f5c cl_env_implant +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf279364d class_connected_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf2fd6695 statfs_pack +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf36331a3 cl_page_unassume +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf457243b cl_page_vmpage +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf47e7930 ldebugfs_seq_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf490d5f9 class_del_profiles +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf5e30537 cl_io_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf6051bd1 cl_io_end +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf60d4659 capa_count +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf7020831 lprocfs_dt_rd_kbytesavail +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf7f42641 lprocfs_free_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf81f2bc5 cl_io_submit_rw +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf8e1235c cl_page_prep +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf9985480 cl_page_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfa25cd50 obd_exports_barrier +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfa4cad91 class_find_client_obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfa73d9ec lu_object_invariant +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfa79eea0 cl_req_prep +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfa813d06 capa_hmac +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfbea0098 lu_types_stop +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfc7f18d0 obd_pages_max +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfc999eb3 llog_cat_add_rec +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfd68d17a class_notify_sptlrpc_conf +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfd8f5cf4 lu_buf_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfdbe1557 lprocfs_write_u64_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfe187e92 cl_env_nested_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfecb5fe0 cl_use_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xff2bb5b0 cl_env_unplant +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xff57e92d class_match_net +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfff90cd5 llog_open +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfffc1f11 lustre_swab_ost_id +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x001278f5 ptlrpc_send_error +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x004442b2 ptlrpc_stop_all_threads +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x00cb99c1 RQF_LDLM_INTENT_GETXATTR +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x00d95039 ptlrpcd_decref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x00fb456e ptlrpc_activate_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x01d6ef7f ldlm_pools_recalc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0240cd3f ptlrpc_free_rq_pool +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x02d30d0c ldlm_lock_convert +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x035ac00a ldlm_namespace_new +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x048b59d5 lustre_msg_set_handle +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0515f93b RQF_FLD_QUERY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x058b3c87 lustre_pack_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x05f342d9 ldlm_cli_cancel_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x06b3942b lustre_swab_lov_user_md_objects +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x071fc74a RQF_LDLM_ENQUEUE_LVB +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x075f2465 ldlm_namespace_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x07605c7d interval_find +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x08bb2d27 lustre_swab_obd_ioobj +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x095587d0 lustre_msg_buflen +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0986a769 ldlm_lock2desc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x09d55c81 sptlrpc_sec_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0a3130b0 RMF_MDT_EPOCH +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0ac252b2 lustre_msg_set_jobid +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0ac54708 lustre_errno_hton +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0bcacb5d RMF_MDS_HSM_USER_ITEM +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0c2d9c43 lustre_swab_lip_header +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0cf343dd RQF_LDLM_INTENT_BASIC +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x10f18f20 interval_iterate_reverse +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x112c33fa ldlm_prep_elc_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x115017f6 req_layout_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x11b54770 ldlm_cli_enqueue_local +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x11f68dc2 ptlrpc_register_service +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x12b6f5a3 ptlrpc_connection_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x14708afc lustre_swab_mdt_rec_reint +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1483eca4 ldlm_lock_addref_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x14d192db lustre_msg_size +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x15a3e4db RMF_GETINFO_VAL +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x166ca611 lock_res_and_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x172fb86d lustre_msg_hdr_size +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1747d8b3 ldlm_lockname +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x17950f60 RQF_SEC_CTX +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x17f5ba1c ldlm_namespace_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x18655433 sptlrpc_svc_ctx_invalidate +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x19108a0f RQF_OST_DISCONNECT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1918c1c5 ldlm_resource_putref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x19c08934 RQF_LDLM_INTENT_CREATE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1a6a3ce9 RQF_OST_GET_INFO_LAST_ID +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1a9b76aa RMF_OBD_QUOTACTL +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1abd3258 RMF_SETINFO_VAL +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1ace4b5f RQF_LDLM_BL_CALLBACK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1ad6c330 RMF_EAVALS +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1ae66ab4 ldlm_cli_cancel_unused +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1bae0270 interval_iterate +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1bb5a837 ptlrpc_cleanup_client +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1be21715 lustre_msg_size_v2 +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1c300d8e lustre_msg_get_slv +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1d043548 lustre_msg_set_op_flags +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1dc2051d RMF_SEQ_OPC +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1de9c288 lustre_swab_layout_intent +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1e8e48a4 sptlrpc_flavor_has_bulk +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1eb2a65f RQF_OST_GETATTR +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1ee46b51 lustre_init_msg_v2 +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1ee9eb3c RQF_MDS_QUOTACTL +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1f4c1078 ldlm_blocking_ast_nocheck +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1f6432a1 ldlm_resource_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1f96dd3c ptlrpc_req_xid +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x20599155 ptlrpc_cleanup_imp +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x20696652 ptlrpc_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x207c886f sptlrpc_enc_pool_put_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2096f5b5 RQF_OST_SET_GRANT_INFO +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x20d6b82c RQF_LDLM_INTENT_QUOTA +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x218a36ce ldlm_cli_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x219391ec RMF_EAVALS_LENS +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2247bf23 ldlm_pool_set_clv +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x230f894a ldlm_resource_iterate +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x233790b5 RMF_OST_BODY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2368213e ptlrpc_queue_wait +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2377c55f ptlrpc_prep_bulk_imp +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x23d2f8f3 ptlrpc_unpack_req_msg +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x244e5558 lustre_msg_get_version +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x24aafdba RMF_MGS_TARGET_INFO +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x25222add ptlrpc_request_alloc_pool +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2585a629 RMF_SEQ_RANGE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2587513c RQF_LDLM_CP_CALLBACK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x25bf987c ptlrpc_req_finished_with_imp_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2650731c ptlrpc_check_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x269554ce RQF_LDLM_INTENT_GETATTR +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x26e647e1 req_capsule_server_pack +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x26f99d16 RQF_MGS_CONFIG_READ +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2710c841 sptlrpc_sec_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x285e5b99 lustre_msg_set_conn_cnt +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x28c0b4b5 client_obd_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x29e0869a sptlrpc_get_hash_name +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2a63a472 lustre_swab_ptlrpc_body +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2ba2c623 ptlrpc_set_wait +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2c00c60d ptlrpc_sample_next_xid +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2ca92fa8 ldlm_lock_decref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2ccd5b87 ldlm_cli_cancel_list_local +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2d56f168 ptlrpc_pinger_ir_up +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2d798316 RMF_MGS_CONFIG_RES +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2e4562fe RQF_LLOG_ORIGIN_HANDLE_CREATE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2e4ca396 RQF_LDLM_INTENT_UNLINK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2ecd7515 lustre_msg_check_version +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2f0e4f87 RQF_OST_QUOTACTL +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2f793215 lustre_swab_ost_body +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2fab3539 lustre_swab_ost_lvb_v1 +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2fd2f737 lustre_msg_set_limit +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2ff0fbca lprocfs_rd_pinger_recov +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x301d4fcd RQF_MDS_READPAGE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x302937e0 RQF_MDS_CONNECT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3060b9c6 sptlrpc_rule_set_expand +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x31838cb4 RMF_IDX_INFO +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x318d3f7e ptlrpc_lprocfs_register_obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x31c7f099 lprocfs_wr_pinger_recov +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x31e8ad50 ldlm_lock_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x320af633 ldlm_lock_fail_match_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3223a7ee ptlrpc_resend_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3261b862 RQF_OST_SYNC +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x32dff555 ldlm_extent_shift_kms +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3319adfd ldlm_lock_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x33a5438d ldlm_pool_get_lvf +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x33bb7761 ldlm_typename +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x34435f4e target_send_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x35939a3d lustre_swab_fiemap +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3671d9c4 req_capsule_filled_sizes +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x37395385 lprocfs_wr_ping +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3835ab4b RQF_LLOG_ORIGIN_CONNECT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3858fb94 RMF_OBD_STATFS +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x388d7148 sptlrpc_import_flush_all_ctx +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x38c01799 RQF_LDLM_CALLBACK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x38d1c4c1 ptlrpc_set_add_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x38fce533 lustre_msg_set_versions +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x39a954f0 ptlrpc_disconnect_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x39c29c27 target_print_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x39f60a5f RMF_OST_ID +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x39f92efd ldlm_blocking_ast +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3a1e4bcb __lustre_unpack_msg +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3a7b9cf4 lustre_pack_request +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3aa694cd ptlrpc_prep_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3ab90f6e lustre_msg_bufcount +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3ac00716 lustre_swab_hsm_user_state +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3b6b7cba dump_ioo +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3b8280ba ldlm_cli_enqueue_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3bedb0c7 RMF_LLOGD_CONN_BODY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3bee9799 ptl_send_rpc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3c3565e8 req_capsule_server_dump +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3c63e62b RQF_MDS_REINT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3c8b16ab lustre_swab_ost_lvb +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3ca50f33 RQF_MDS_HSM_CT_REGISTER +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3cbe8488 sptlrpc_cli_unwrap_bulk_write +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3d7dc5f9 ldlm_pools_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3dc47695 lustre_msg_get_magic +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3e5dc13e ldlm_pool_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3ec4201d ldlm_replay_locks +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3f034caf lustre_msg_get_status +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3f255980 req_capsule_client_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3f752e78 RQF_MDS_STATFS +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3fe1c763 req_capsule_shrink +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x41008cef RQF_LDLM_CANCEL +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x420b322b ptlrpc_obd_ping +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4214688d req_capsule_client_sized_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4273f69a ptlrpc_service_health_check +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x43168488 RQF_MDS_RELEASE_CLOSE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x43705ee4 RQF_LOG_CANCEL +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x43d7efc8 lustre_msg_set_transno +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x43e48bb9 sptlrpc_enc_pool_get_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x44036eda RQF_MDS_GET_INFO +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x440c2a71 RMF_FIEMAP_VAL +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x445d8db8 sptlrpc_cli_wrap_bulk +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4481591d RQF_OST_SET_INFO_LAST_FID +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x44e4f4e9 ldlm_completion_ast_async +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x44e8c8d7 ptlrpc_req_finished +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x45d05893 lustre_swab_lustre_capa +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x45e30cea lustre_swab_ldlm_intent +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x46907e07 sec2target_str +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x47796a55 ptlrpc_start_threads +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x47f5e903 RMF_MDS_HSM_REQUEST +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x483cc97e req_capsule_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4864e52d req_capsule_set_size +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x48916eb6 req_capsule_has_field +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x49780d98 ptlrpcd_add_rqset +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x498c03c5 lustre_msg_set_last_xid +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4a5a2416 RMF_DLM_REQ +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4cb66a8e ldlm_reprocess_all_ns +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4d5ed66f ptlrpc_request_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4d7580d0 lustre_swab_hsm_user_item +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4d8cc8dc lprocfs_wr_evict_client +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4dac2459 target_pack_pool_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4e1706e5 lustre_msg_buf +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4e696b96 ptlrpcd_queue_work +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4eb03a6f ptlrpcd_destroy_work +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4f766c3b lustre_swab_generic_32s +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5002d82d ldlm_pool_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x50443f6a ptlrpc_init_client +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x50ad7faa ptlrpc_prep_req_pool +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x50dd74f8 RMF_STRING +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x51185c39 req_capsule_client_swab_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x51647125 ptlrpc_mark_interrupted +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x51c0e2e1 llog_client_ops +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x52517289 req_capsule_client_dump +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x52c62150 RMF_RCS +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x53411557 RMF_DLM_REP +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x53a4a004 bulk_sec_desc_unpack +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x545ee6cd ldlm_lock_change_resource +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x54ae5021 ldlm_lock_addref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x55084292 req_capsule_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x554859a5 sptlrpc_cli_enlarge_reqbuf +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x555eb7fe RQF_MDS_HSM_STATE_SET +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x575c28f8 ptlrpc_commit_replies +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5799a039 ldlm_lock_downgrade +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x582227bb sptlrpc_target_sec_part +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x588035b4 RMF_UPDATE_REPLY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x595ab175 lustre_swab_obd_quotactl +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x596582bf RMF_GETINFO_VALLEN +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x59cb50fe ptlrpc_unregister_bulk +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5a057439 interval_search +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5af0d02a ldlm_lock_dump_handle +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5b6ba895 lustre_packed_msg_size +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5b88ee8c ldlm_completion_ast +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5bef181e ptlrpc_request_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5c5046ca ldlm_pool_shrink +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5c6a3a83 RQF_SEQ_QUERY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5ca1b491 lustre_swab_close_data +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5caae213 ptlrpc_next_xid +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5d357ca8 ptlrpc_restart_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5e0b19b1 RMF_CLUUID +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5e2b7558 lustre_msghdr_get_flags +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5e6f435d RQF_OST_BRW_READ +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5e80f899 RQF_LLOG_ORIGIN_HANDLE_READ_HEADER +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5ec3284d RQF_MDS_HSM_CT_UNREGISTER +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5ef831ee lustre_msg_get_handle +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5f96ccdd ptlrpc_connection_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5fc9a455 RMF_CLOSE_DATA +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6042bc15 RQF_MDS_REINT_RENAME +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x604e2505 RMF_SWAP_LAYOUTS +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x607ec932 lustre_msg_set_buflen +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x60cd26ad RQF_MDS_REINT_CREATE_SYM +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x61646e1b RQF_MDS_SWAP_LAYOUTS +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x618ad203 RQF_OST_GET_INFO_LAST_FID +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x61bf044c ldlm_destroy_flock_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x62aaae3f RQF_MDS_HSM_REQUEST +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x62c73570 sptlrpc_cli_ctx_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6315dd4c RMF_LLOGD_BODY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6352a62d ldlm_get_ref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x647b6e48 lustre_swab_ldlm_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x653723dc RMF_LOGCOOKIES +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x668dfaea ldlm_pool_del +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x683acc04 ldlm_pool_set_slv +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x685eeaba RMF_DLM_GL_DESC +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x688fd8c2 req_capsule_extend +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x68cb2541 interval_is_overlapped +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x68f49e5e ptlrpc_expired_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6912990a RQF_OST_QUOTACHECK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x696ba811 lustre_msg_get_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x69c9f04d RQF_MDS_REINT_LINK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x69f0cfe5 ldlm_enqueue_pack +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6a3785c9 RMF_EADATA +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6a6e4874 ptlrpc_request_pack +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6a8ab5ff sptlrpc_gc_add_sec +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6c57bbf6 dump_obdo +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6ca63d54 req_capsule_server_grow +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6cad8fe6 sptlrpc_cli_unwrap_bulk_read +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6cf8eab9 ldlm_pool_get_slv +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6d72828c sptlrpc_conf_log_update_end +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6d7931cc RQF_UPDATE_OBJ +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6dcae2a2 ptlrpc_error +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6df791eb req_capsule_server_sized_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6e4f5587 ptlrpc_set_add_cb +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6e73eeed ptlrpc_retain_replayable_request +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6ed20499 ldlm_revalidate_lock_handle +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6efa82b0 RQF_MGS_TARGET_REG +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6f6dc736 lustre_swab_mdt_remote_perm +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6f94aded ldlm_register_intent +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6fb92092 sptlrpc_flavor2name_bulk +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6ff29275 ldlm_lock_allow_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x703538e4 lustre_swab_hsm_current_action +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x70b76be2 ptlrpc_set_import_active +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x723d43b6 sptlrpc_rule_set_dump +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x725a892c RQF_MDS_REINT_OPEN +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x72dcbf5e ldlm_resource_unlink_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x739936bc ldlm_resource_foreach +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x73e8049f sptlrpc_target_update_exp_flavor +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x74272c76 client_import_add_conn +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x74840056 lustre_msg_set_status +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x758c07a5 llog_initiator_connect +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x75a2c40d ldlm_put_ref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7672e0f0 lustre_pack_reply_flags +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x767adfc6 ptlrpc_send_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x767d868a sptlrpc_sec_destroy +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x76b728e5 lustre_swab_update_buf +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x76b9c17d ldlm_lock_allow_match_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7748db82 sptlrpc_conf_client_adapt +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x77840c82 sptlrpc_rule_set_choose +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x78bf9136 lustre_swab_ldlm_lock_desc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7920e8e5 ptlrpc_at_set_req_timeout +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x79576500 ptlrpc_nrs_policy_register +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7a832f10 RMF_CONN +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7b158da4 lustre_swab_ldlm_request +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7b4702b8 lprocfs_wr_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7bbf8001 RMF_MDT_BODY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7bcccd48 ptlrpc_set_add_new_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7c4c6107 RQF_LDLM_CONVERT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7cbc78af ptlrpc_fail_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7d1ecd7f RQF_LDLM_INTENT_LAYOUT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7d318352 ptlrpc_replay_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7d41a8b9 RQF_QUOTA_DQACQ +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7d9c0afe ldlm_get_enq_timeout +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7dc0e7cd RMF_QUOTA_BODY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7dfb3c18 lustre_msg_clear_flags +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7e14546c client_obd_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7f4925d8 interval_expand +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7f4c99b1 ldlm_expired_completion_wait +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7f5a1cc7 lustre_msg_set_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7f5d1390 lustre_free_reply_state +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7f6d2357 lustre_msg_is_v1 +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x80360eeb ptlrpcd_alloc_work +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x80a9e8c3 lustre_msg_get_last_xid +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x80ecb4e3 RMF_MDS_HSM_CURRENT_ACTION +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x80fa16f1 sptlrpc_get_bulk_checksum +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x817d7f1f lustre_msg_add_flags +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x826d3c4f RQF_LDLM_GL_CALLBACK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x837efb00 RMF_NAME +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x83d16c62 ptlrpc_resend +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x83d8a768 client_disconnect_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x85135801 RMF_DLM_LVB +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x854ead93 ptlrpc_pinger_del_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x85a9e0d8 RMF_FID +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x85eecf67 sptlrpc_get_hash_alg +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x863db6eb RMF_HSM_USER_STATE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x86fa8c3b ldlm_cli_convert +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8760beaf lustre_swab_ldlm_policy_data +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x876c2551 RMF_GETINFO_KEY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x87bf7b3c sptlrpc_get_next_secid +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8872f3d2 RMF_SETINFO_KEY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x88fff52d RMF_CAPA2 +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x894d8acd ptlrpc_nrs_policy_unregister +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x89872dd4 ptlrpc_unregister_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x89ec9a94 ptlrpc_prep_fcset +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x89f9edf7 RQF_MDS_REINT_SETXATTR +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8a1ea476 lustre_swab_hsm_state_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8a257736 RQF_MDS_HSM_STATE_GET +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8a67c0d2 __ptlrpc_prep_bulk_page +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8ac440fa ptlrpc_uuid_to_connection +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8b854254 lustre_swab_mgs_config_res +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8cb71d4b RQF_MDS_REINT_CREATE_SLAVE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8d77ea75 lustre_msg_set_flags +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8da3fca7 lustre_msg_add_version +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8e6273d7 req_capsule_field_present +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8e9abe4d RMF_GENERIC_DATA +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8f0aceac RQF_MDS_HSM_ACTION +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8f7008bb sptlrpc_import_sec_ref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8fec0451 lustre_msg_get_limit +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x919c4ce3 RMF_OBD_ID +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x91cf58d3 RQF_MDS_PIN +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9228392f lustre_swab_mdt_body +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x937b1ee0 lustre_swab_mdt_ioepoch +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x93f033ee ldlm_cli_update_pool +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x94ac8e03 ldlm_lock2handle +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9553c633 RQF_LDLM_INTENT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x956257a6 __ldlm_handle2lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x95d08f0c lustre_swab_mgs_target_info +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x96294935 ldlm_cli_cancel_unused_resource +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9660ace0 RMF_FLD_MDFLD +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x967bfd52 RQF_OBD_PING +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x972dad3e ldlm_pool_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9798f2f1 RQF_MDS_GETATTR +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x97b20460 sptlrpc_unregister_policy +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x97d579f3 ptlrpc_schedule_difficult_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x980fcfdc ptlrpc_connection_addref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9860b12e ptlrpc_prep_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9867b9a1 ldlm_namespace_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9888111b ptlrpc_request_set_replen +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9890c4f9 ldlm_cli_enqueue +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9999cf7a dump_ost_body +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9a0d8e9a ptlrpc_lprocfs_unregister_obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9a258886 RQF_MDS_GETSTATUS +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9a6f2f6d lustre_msg_set_opc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9b88f6ce RMF_NIOBUF_REMOTE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9bb5198b RQF_MDS_CLOSE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9c6c8d97 ptlrpc_req_set_repsize +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9cdf3aa4 req_capsule_other_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9d7ea314 sptlrpc_pack_user_desc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9ddb25f6 ptlrpcd_wake +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9f8ebc06 sptlrpc_gc_del_sec +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9fb088f1 lustre_swab_lov_mds_md +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa10f0d3d RMF_UPDATE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa163f4c3 dump_rniobuf +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa2244636 RQF_MDS_GETATTR_NAME +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa22c0086 ldlm_error2errno +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa3b32bc7 unlock_res_and_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa3d2a6ee RMF_CAPA1 +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa44d1b35 ptlrpc_unregister_service +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa47787ef RMF_PTLRPC_BODY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa4a2d089 RQF_OST_PUNCH +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa4bea5ef lustre_swab_lmv_user_md +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa4cd6777 ptlrpc_init_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa4df982f ldlm_init_flock_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa5458dad ldlm_lock_decref_and_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa56a2d00 sptlrpc_cli_ctx_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa5880075 ldlm_errno2error +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa6c436ca RQF_MDS_WRITEPAGE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa6def543 req_capsule_server_swab_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa7d55cc3 RQF_MDS_REINT_CREATE_RMT_ACL +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa7e360b1 RMF_OBD_IOOBJ +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa7ec567d RMF_CONNECT_DATA +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa9679d96 ldlm_namespace_dump +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa9704f80 lustre_msg_get_last_committed +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa9c4658e lustre_swab_lov_user_md_v3 +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa9edf09d RQF_OBD_IDX_READ +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xacd6a7d7 lustre_swab_ost_last_id +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xacdc4112 lustre_pack_reply_v2 +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xaddc3979 lustre_swab_lustre_capa_key +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xade4e51b client_connect_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xae0e9cb0 req_capsule_init_area +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xae24a1e9 ptlrpc_request_addref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xae9de7f4 ptlrpc_add_timeout_client +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xaf4e9658 RQF_MDS_SYNC +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xaf50a0d6 RMF_HSM_STATE_SET +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb0751fa4 RQF_LLOG_ORIGIN_HANDLE_DESTROY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb0c83119 do_set_info_async +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb1b43d8a dump_rcs +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb27c2374 lustre_msg_get_jobid +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb291473d lustre_msg_early_size +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb36b5d4e client_destroy_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb374d61b req_capsule_server_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb4a7ecf3 lustre_msg_add_op_flags +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb512ebc2 sptlrpc_parse_flavor +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb5b3dee4 ldlm_prep_enqueue_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb61cb95a RQF_MDS_GETXATTR +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb68476df interval_erase +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb6aafd03 RQF_MDS_DONE_WRITING +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb7b38189 RMF_MDT_MD +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb7fa3cc8 RMF_LLOG_LOG_HDR +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb84ffdbb ptlrpcd_add_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb903634e RQF_OST_CONNECT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb9b631cf lustre_swab_mgs_config_body +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xba842cca client_import_del_conn +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbaa76097 lustre_msg_string +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbb1f3874 req_capsule_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbc1370dc lustre_shrink_msg +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbc3675fc ptlrpc_unpack_rep_msg +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbd83bc44 RQF_OBD_SET_INFO +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbe33244b req_capsule_server_sized_swab_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbe47bc7e ping_evictor_start +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbeb7e023 ptlrpc_set_next_timeout +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbec4a5f5 ldlm_pool_get_limit +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbef769cc RQF_CONNECT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbf98b86f RQF_MDS_QUOTACHECK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbffd4313 RQF_OST_BRW_WRITE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc06c4670 lustre_msg_get_versions +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc0722cee _ldlm_lock_debug +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc0867da7 RMF_REC_REINT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc0cdf55e RMF_MGS_SEND_PARAM +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc1077bc9 ldlm_flock_completion_ast +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc2986d28 lustre_swab_ldlm_res_id +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc2b1af57 RQF_MGS_SET_INFO +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc2be922a RMF_SYMTGT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc559a634 RMF_LAYOUT_INTENT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc5a27478 ptlrpc_connect_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc60a60e1 RQF_OST_STATFS +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc694be4b RQF_LLOG_ORIGIN_HANDLE_PREV_BLOCK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc6db7dcc ldlm_lock_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc6ef7c14 __ptlrpc_free_bulk +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc6f9aec1 ptlrpc_register_bulk +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc71fdf19 sptlrpc_target_export_check +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc763fabc sptlrpc_process_config +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc79b9c67 ldlm_pools_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc7b49abc sptlrpc_lprocfs_cliobd_attach +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc7ca8257 RQF_MDS_REINT_SETATTR +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc7e47564 ptlrpc_interrupted_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc7f1fa27 ptlrpc_reconnect_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc86dbf61 ldlm_lock_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc8f586a9 ptlrpc_connection_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc9907914 client_import_find_conn +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc9b1b2ad req_capsule_get_size +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc9f37e85 ptlrpc_recover_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xca5a81ec ptlrpc_pinger_ir_down +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xcb12ba10 ptlrpc_wake_delayed +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xcb2cc0cf lustre_swab_lquota_lvb +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xcb2ceaff sptlrpc_secflags2str +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xcb5fe0b0 sptlrpc_import_flush_my_ctx +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xce1a689b sptlrpc_enc_pool_add_user +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xce86066d lustre_msg_set_slv +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xcec513c9 RQF_MDS_UNPIN +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xced015be sptlrpc_rule_set_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xcf0ee67c ptlrpc_abort_inflight +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xcf9963db lustre_msg_get_op_flags +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xcf9aab6a RQF_MDS_DISCONNECT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd02e9caf ptlrpc_pinger_sending_on_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd0b54cc4 ptlrpc_save_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd19d3985 ptlrpc_request_committed +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd26b531e ldlm_pool_set_limit +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd2983334 lustre_swab_swap_layouts +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd2e0d4eb lustre_msg_get_opc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd3dae408 ldlm_it2str +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd67a5d7b lustre_swab_update_reply_buf +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd69e0a27 RQF_MDS_IS_SUBDIR +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd6c3ebfb RMF_FIEMAP_KEY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd6f960a8 ptlrpc_hpreq_handler +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd7910326 lustre_swab_obd_statfs +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd8203706 ptlrpc_buf_set_swabbed +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd8b91b3e lustre_swab_lov_desc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd8f06300 RQF_MDS_HSM_PROGRESS +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd90cc22f sptlrpc_register_policy +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd9561861 RQF_LDLM_INTENT_OPEN +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd974ca3d sptlrpc_cli_ctx_wakeup +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd98c358e sptlrpc_gc_add_ctx +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd9dabbfc ptlrpc_buf_need_swab +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xdb1fb0a2 RQF_MDS_REINT_CREATE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xdb9d5a6a lustre_swab_niobuf_remote +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xdd0ffb04 sptlrpc_flavor2name +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xdd30d7bf RMF_ACL +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xddc40a85 lustre_msg_get_flags +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xde12d36b RMF_MDS_HSM_ARCHIVE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xde555d70 sptlrpc_enc_pool_del_user +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xde6f3483 ldlm_lock_fail_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xdec0ecf3 ptlrpc_deactivate_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xdee87192 sptlrpc_conf_log_update_begin +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xdf701ae7 lustre_swab_fid2path +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe0832736 ptlrpc_init_rq_pool +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe0cc694c RQF_LLOG_ORIGIN_HANDLE_NEXT_BLOCK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe15d5ee3 ldlm_destroy_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe1ddbc06 sptlrpc_req_replace_dead_ctx +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe40e0a50 lustre_msg_get_transno +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe57bd972 sptlrpc_current_user_desc_size +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe5e8169b lustre_errno_ntoh +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe643998e RQF_OST_SETATTR +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe6753ae4 ldlm_cancel_resource_local +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe6f0dc96 RQF_OST_CREATE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe7062b5f RMF_U32 +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe7512278 ptlrpcd_addref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe7f9c9f8 _debug_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe85b6da3 lustre_swab_obdo +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe8d98538 ptlrpc_invalidate_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe8e927ca ldlm_namespace_foreach +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe989e942 ldlm_pool_get_clv +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe9f49a69 ptlrpc_pinger_add_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xeabac4fc sptlrpc_rule_set_merge +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xebb64e68 req_layout_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xec226f66 ping_evictor_stop +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xec3a1369 ptlrpc_request_bufs_pack +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xec939a00 RQF_MDS_REINT_UNLINK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xecace5c1 RQF_OST_GET_INFO_GENERIC +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xed1c10d6 ptlrpc_connection_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xedcb740d sptlrpc_name2flavor_base +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xee588f76 ptlrpc_lprocfs_brw +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xee6753ca ldlm_cli_cancel_list +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xef1aeca9 RMF_FLD_OPC +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf00cdc4c ldlm_glimpse_ast +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf0241d6e lustre_swab_hsm_progress_kernel +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf0d52b5f ptlrpc_pinger_suppress_pings +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf1300275 _sptlrpc_enlarge_msg_inplace +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf277c125 RQF_OST_GET_INFO_FIEMAP +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf27d49dc sptlrpc_target_choose_flavor +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf2c7f793 ptlrpc_set_destroy +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf35f132b lustre_swab_ldlm_resource_desc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf3d44370 RQF_OST_DESTROY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf43540b9 lustre_swab_mgs_nidtbl_entry +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf45085e1 sptlrpc_conf_log_stop +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf481ec61 ldlm_namespace_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf55c033b RMF_MGS_CONFIG_BODY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf584a16b sptlrpc_part2name +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf596e9ae sptlrpc_conf_log_start +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf5fe1d2b sptlrpc_cli_ctx_expire +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf607fc23 sptlrpc_flavor2name_base +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf617ab8a lustre_msg_get_conn_cnt +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf697b756 ldlm_dump_all_namespaces +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf7408f84 lustre_swab_hsm_request +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf7ba40c0 RMF_MDS_HSM_PROGRESS +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf7eafe51 ptlrpc_request_alloc_pack +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf85cb27e sptlrpc_parse_rule +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf870fed9 RQF_LDLM_GL_DESC_CALLBACK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf9051bd6 RQF_QC_CALLBACK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf932a2c9 ldlm_pool_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf94e41e0 deuuidify +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf973aa93 lustre_swab_lov_user_md_v1 +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf9ee11e2 lustre_msg_set_last_committed +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf9f72dfc RMF_TGTUUID +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xfa51688d interval_insert +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xfaa12a84 ldlm_init_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xfc186744 ptlrpc_add_rqs_to_pool +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xfc2fa83f ptlrpc_del_timeout_client +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xfd148bf8 RMF_LDLM_INTENT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xff02a0e9 ldlm_lock_set_data +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xffc807e8 sptlrpc_unpack_user_desc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xffe29c3f RQF_LDLM_ENQUEUE +EXPORT_SYMBOL drivers/staging/media/cxd2099/cxd2099 0x82153e62 cxd2099_attach +EXPORT_SYMBOL drivers/staging/nvec/nvec 0x53c9b234 nvec_write_sync +EXPORT_SYMBOL drivers/staging/nvec/nvec 0x7968be05 nvec_write_async +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x01274ef3 rtllib_act_scanning +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x063bf98c RemovePeerTS +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x06874ddc rtllib_wx_set_power +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x0cbf25c9 rtllib_get_beacon +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x10724caf rtllib_wx_set_mlme +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x1296e930 rtllib_wx_set_rate +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x14a674fe rtllib_wx_set_mode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x1f5925d0 rtllib_softmac_start_protocol +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x22a2794c rtllib_wx_set_scan +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x2d94d8bb rtllib_legal_channel +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x2ee0a86f rtllib_wx_set_encode_ext +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x347bb29a rtllib_stop_send_beacons +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x3b225de2 rtllib_EnableIntelPromiscuousMode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x3c9834c7 rtllib_DisableIntelPromiscuousMode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x4e4b2eac rtllib_MgntDisconnect +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x4f63adb5 rtllib_wx_get_name +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x50c28153 notify_wx_assoc_event +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x570ad34f rtllib_wx_set_rawtx +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x584b7657 rtllib_wx_set_rts +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x58dd8a54 rtllib_start_scan_syncro +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x59330953 rtllib_wx_get_power +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x5b1d70cf dot11d_init +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x6919e2ae rtllib_wx_set_freq +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x74a3179a rtllib_wx_get_wap +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x8c024d25 rtllib_wpa_supplicant_ioctl +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x90b10be4 HT_update_self_and_peer_setting +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x936efe75 rtllib_wx_get_scan +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x9f256b6c rtllib_wx_get_rts +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xa35a6e09 rtllib_wx_get_rate +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xa56af3c7 rtllib_wx_get_mode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xad1b75f7 rtllib_wx_get_essid +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xaeccbf45 rtllib_rx +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xb2d8012e rtllib_wx_set_encode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xb3cd0aa1 rtllib_wx_set_wap +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xb6bae4e9 rtllib_stop_scan +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xb87dcc16 rtllib_wx_set_gen_ie +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xbcefd7dd rtllib_stop_scan_syncro +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xbe1420f2 rt_global_debug_component +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xbf03f7b6 rtllib_xmit +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xc42d1723 free_rtllib +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xcf802bdb rtllib_wx_get_encode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xd01895e4 alloc_rtllib +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xd19b06b4 rtllib_reset_queue +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xd2550b37 Dot11d_Channelmap +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xd557af1b rtllib_start_send_beacons +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xd8d56597 rtllib_wx_get_freq +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xdf78f620 rtllib_wlan_frequencies +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xef03adc6 rtllib_wx_set_auth +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xf2af3178 rtllib_wx_set_essid +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xf4811291 rtllib_softmac_stop_protocol +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xfb94a928 rtllib_ps_tx_ack +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xfc173d8e rtllib_sta_ps_send_null_frame +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x01fc7fb9 SendDisassociation_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x041ee992 ieee80211_is_shortslot_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x085f5811 ieee80211_reset_queue_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x1358aa60 ieee80211_wx_set_rawtx_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x13d36e5e ieee80211_wx_set_mlme_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x1b8aab54 ToLegalChannel +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x27c37c40 ieee80211_wx_get_scan_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x2870584f ieee80211_wx_get_wap_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x28cc909a ieee80211_wx_get_freq_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x2bd97fff ieee80211_softmac_xmit_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x2f8d56a2 ieee80211_txb_free_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x3207e008 ieee80211_rx_mgt_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x32a42cbc ieee80211_wx_get_rts_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x355bd018 IsLegalChannel +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x41ddb630 ieee80211_stop_send_beacons_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x48771967 ieee80211_softmac_start_protocol_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x48afe257 ieee80211_wx_set_essid_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x49a3e5ee notify_wx_assoc_event_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x4aaa08ea ieee80211_wpa_supplicant_ioctl_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x55083498 ieee80211_send_probe_requests_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x56221102 ieee80211_wx_set_freq_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x5877fbc7 ieee80211_wx_set_gen_ie_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x592dfdd8 ieee80211_wx_set_scan_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x5c86e194 ieee80211_wx_set_auth_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x5dc7d573 ieee80211_wx_set_encode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x69bdd218 ieee80211_rx_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x6d5909b1 ieee80211_wx_set_rts_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x6f2e3f5a ieee80211_wx_get_encode_ext_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x74196cd5 ieee80211_wx_set_power_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x778d7d42 ieee80211_wx_set_wap_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x7a524107 ieee80211_wx_set_encode_ext_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x7ee01839 ieee80211_wx_get_encode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x8468a122 ieee80211_wake_queue_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x8569a476 ieee80211_softmac_scan_syncro_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x8972712d DOT11D_GetMaxTxPwrInDbm +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x8ab39922 ieee80211_wx_get_power_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x953c0d7a ieee80211_softmac_stop_protocol_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xa4651c5a ieee80211_wx_set_mode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xaaf36aff ieee80211_wx_set_rate_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xac6cc639 ieee80211_get_beacon_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xb165bdbf DOT11D_ScanComplete +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xb60517a0 ieee80211_wx_get_essid_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xb7a6ab4c ieee80211_start_send_beacons_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xbab1e4ee ieee80211_start_scan_syncro_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xbc79f5b6 Dot11d_Reset +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xc370a43e ieee80211_wlan_frequencies_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xcf30f5be ieee80211_disassociate_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xcf4c2491 ieee80211_is_54g_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xd3173857 ieee80211_stop_scan_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xd41deb67 ieee80211_wx_get_rate_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xd97e5015 ieee80211_ps_tx_ack_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xda8b9dc2 ieee80211_wx_get_mode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xdb1d4ce0 HTUpdateSelfAndPeerSetting +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xe28b8255 ieee80211_wx_get_name_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xf53811c2 Dot11d_Init +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xf9247f8b Dot11d_UpdateCountryIe +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xfd839b72 ieee80211_stop_queue_rsl +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x036ffd96 iscsit_tmr_post_handler +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x07f9fb31 iscsit_build_nopin_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x0f67c7fd iscsit_sequence_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x11ae872a iscsit_find_cmd_from_itt +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x171d7a45 iscsit_logout_post_handler +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x2368c6f0 iscsit_setup_scsi_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x2b7665bb iscsit_build_rsp_pdu +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x3222e5f2 iscsit_build_logout_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x450007ba iscsit_build_task_mgt_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x51e07cee iscsit_setup_nop_out +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x596bad9c iscsit_process_text_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x717abd38 iscsit_register_transport +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x76ace058 iscsit_set_unsoliticed_dataout +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x78ececaa iscsit_process_scsi_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x84502142 iscsit_handle_task_mgt_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x8907254d iscsit_unregister_transport +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x8e98105c iscsit_process_nop_out +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x910508b9 iscsit_stop_dataout_timer +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x91289867 iscsit_release_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xb3719cc6 iscsit_check_dataout_payload +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xb405f339 iscsit_increment_maxcmdsn +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xbf7ffc5d iscsit_check_dataout_hdr +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xc695afe8 iscsit_build_text_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xccd690c7 iscsit_setup_text_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xd839c6de iscsit_handle_logout_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xd86dc9db iscsit_build_reject +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xf7c2fd78 iscsit_allocate_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xfc388734 iscsit_cause_connection_reinstatement +EXPORT_SYMBOL drivers/target/target_core_mod 0x02de3b18 transport_set_vpd_ident +EXPORT_SYMBOL drivers/target/target_core_mod 0x055c5a6d core_tpg_deregister +EXPORT_SYMBOL drivers/target/target_core_mod 0x0fc99de1 transport_generic_new_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x1b67c6ec sbc_get_write_same_sectors +EXPORT_SYMBOL drivers/target/target_core_mod 0x1d27ed0b transport_send_check_condition_and_sense +EXPORT_SYMBOL drivers/target/target_core_mod 0x22381182 transport_init_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x2d6ce5a2 target_complete_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x3070da76 target_get_sess_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x351d9793 transport_kunmap_data_sg +EXPORT_SYMBOL drivers/target/target_core_mod 0x38acc4af sbc_parse_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0x3aa0a3a3 core_tpg_register +EXPORT_SYMBOL drivers/target/target_core_mod 0x3f8bde45 target_execute_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x4837508a transport_backend_register +EXPORT_SYMBOL drivers/target/target_core_mod 0x4c8f8437 target_submit_cmd_map_sgls +EXPORT_SYMBOL drivers/target/target_core_mod 0x4c9ebf89 transport_kmap_data_sg +EXPORT_SYMBOL drivers/target/target_core_mod 0x50179071 target_lun_is_rdonly +EXPORT_SYMBOL drivers/target/target_core_mod 0x521794a5 sbc_dif_verify +EXPORT_SYMBOL drivers/target/target_core_mod 0x531de3ad core_tmr_alloc_req +EXPORT_SYMBOL drivers/target/target_core_mod 0x5ab1acf9 target_submit_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x5ae9d750 core_tpg_set_initiator_node_queue_depth +EXPORT_SYMBOL drivers/target/target_core_mod 0x5f663f42 sbc_attrib_attrs +EXPORT_SYMBOL drivers/target/target_core_mod 0x5ff81c28 target_submit_tmr +EXPORT_SYMBOL drivers/target/target_core_mod 0x61ed0702 transport_lookup_cmd_lun +EXPORT_SYMBOL drivers/target/target_core_mod 0x66922388 target_sess_cmd_list_set_waiting +EXPORT_SYMBOL drivers/target/target_core_mod 0x66b31ee8 target_nacl_find_deve +EXPORT_SYMBOL drivers/target/target_core_mod 0x724afc31 __transport_register_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x7475186f target_backend_unregister +EXPORT_SYMBOL drivers/target/target_core_mod 0x7724ba6e transport_check_aborted_status +EXPORT_SYMBOL drivers/target/target_core_mod 0x7b9d8f67 transport_free_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x7d35ea67 transport_handle_cdb_direct +EXPORT_SYMBOL drivers/target/target_core_mod 0x7dbada9d transport_set_vpd_ident_type +EXPORT_SYMBOL drivers/target/target_core_mod 0x8330eed9 transport_generic_handle_tmr +EXPORT_SYMBOL drivers/target/target_core_mod 0x8370e3ad target_get_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x85aa880c transport_set_vpd_assoc +EXPORT_SYMBOL drivers/target/target_core_mod 0x8721440b spc_emulate_report_luns +EXPORT_SYMBOL drivers/target/target_core_mod 0x8bc42da6 transport_register_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x8cae1a87 target_complete_cmd_with_length +EXPORT_SYMBOL drivers/target/target_core_mod 0x900fcc73 core_tpg_check_initiator_node_acl +EXPORT_SYMBOL drivers/target/target_core_mod 0x91973d6e target_unregister_template +EXPORT_SYMBOL drivers/target/target_core_mod 0x91e80d0a spc_emulate_inquiry_std +EXPORT_SYMBOL drivers/target/target_core_mod 0x9c02ebb1 transport_wait_for_tasks +EXPORT_SYMBOL drivers/target/target_core_mod 0xa11c1d29 core_tpg_set_initiator_node_tag +EXPORT_SYMBOL drivers/target/target_core_mod 0xa8f05f64 sbc_get_device_type +EXPORT_SYMBOL drivers/target/target_core_mod 0xaaa54ce7 transport_init_session_tags +EXPORT_SYMBOL drivers/target/target_core_mod 0xab44b6dc core_tpg_get_initiator_node_acl +EXPORT_SYMBOL drivers/target/target_core_mod 0xabe4b127 target_undepend_item +EXPORT_SYMBOL drivers/target/target_core_mod 0xad5b970a transport_deregister_session +EXPORT_SYMBOL drivers/target/target_core_mod 0xae5085b6 target_show_dynamic_sessions +EXPORT_SYMBOL drivers/target/target_core_mod 0xb888e7e4 transport_deregister_session_configfs +EXPORT_SYMBOL drivers/target/target_core_mod 0xbb272965 target_setup_cmd_from_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0xc58e0888 sbc_dif_copy_prot +EXPORT_SYMBOL drivers/target/target_core_mod 0xc901b24e target_put_sess_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xcdd59b96 transport_init_se_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xcdee46cd target_wait_for_sess_cmds +EXPORT_SYMBOL drivers/target/target_core_mod 0xd233684f spc_emulate_evpd_83 +EXPORT_SYMBOL drivers/target/target_core_mod 0xdbe842cf transport_lookup_tmr_lun +EXPORT_SYMBOL drivers/target/target_core_mod 0xdbef416f passthrough_attrib_attrs +EXPORT_SYMBOL drivers/target/target_core_mod 0xde464ff2 passthrough_parse_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0xdeb14085 target_register_template +EXPORT_SYMBOL drivers/target/target_core_mod 0xe252ea2b target_put_session +EXPORT_SYMBOL drivers/target/target_core_mod 0xeb07b56e core_alua_check_nonop_delay +EXPORT_SYMBOL drivers/target/target_core_mod 0xee960a22 spc_parse_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0xf01621c7 transport_set_vpd_proto_id +EXPORT_SYMBOL drivers/target/target_core_mod 0xf3efe8b4 transport_generic_request_failure +EXPORT_SYMBOL drivers/target/target_core_mod 0xf810063e transport_alloc_session_tags +EXPORT_SYMBOL drivers/target/target_core_mod 0xf81cc979 transport_generic_free_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xfaddc90d target_depend_item +EXPORT_SYMBOL drivers/usb/class/cdc-wdm 0x4405298e usb_cdc_wdm_register +EXPORT_SYMBOL drivers/usb/gadget/function/usb_f_uvc 0x92e9ebac uvc_set_trace_param +EXPORT_SYMBOL drivers/usb/gadget/libcomposite 0xdc091291 usb_os_desc_prepare_interf_dir +EXPORT_SYMBOL drivers/usb/host/sl811-hcd 0xfb447b78 sl811h_driver +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x096a39f2 usb_wwan_tiocmget +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x149dbe26 usb_wwan_suspend +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x5aa7ee84 usb_wwan_tiocmset +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x6badaf5f usb_wwan_dtr_rts +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x6da910d1 usb_wwan_resume +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x85c8dc9e usb_wwan_write_room +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xaa49fce6 usb_wwan_open +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xe02d9acb usb_wwan_port_remove +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xe5489942 usb_wwan_chars_in_buffer +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xe905b44a usb_wwan_close +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xee49929f usb_wwan_write +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xf51abd15 usb_wwan_ioctl +EXPORT_SYMBOL drivers/usb/serial/usbserial 0xe5b6f30b usb_serial_suspend +EXPORT_SYMBOL drivers/usb/serial/usbserial 0xf417edc7 usb_serial_resume +EXPORT_SYMBOL drivers/vhost/vringh 0x0fd987f7 vringh_abandon_user +EXPORT_SYMBOL drivers/vhost/vringh 0x14397bb5 vringh_notify_disable_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x2e91ca97 vringh_iov_pull_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x32da6f89 vringh_notify_enable_user +EXPORT_SYMBOL drivers/vhost/vringh 0x367ce26a vringh_iov_push_user +EXPORT_SYMBOL drivers/vhost/vringh 0x39c9d7a5 vringh_complete_multi_user +EXPORT_SYMBOL drivers/vhost/vringh 0x4f384f8b vringh_need_notify_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x58abf4ed vringh_init_user +EXPORT_SYMBOL drivers/vhost/vringh 0x59f824d9 vringh_getdesc_user +EXPORT_SYMBOL drivers/vhost/vringh 0x6432894b vringh_init_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x7bda5e6d vringh_iov_push_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x821e9390 vringh_iov_pull_user +EXPORT_SYMBOL drivers/vhost/vringh 0x8d080d03 vringh_need_notify_user +EXPORT_SYMBOL drivers/vhost/vringh 0x937e412c vringh_getdesc_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x95e62337 vringh_abandon_kern +EXPORT_SYMBOL drivers/vhost/vringh 0xb4b63575 vringh_notify_enable_kern +EXPORT_SYMBOL drivers/vhost/vringh 0xc578f0f7 vringh_complete_user +EXPORT_SYMBOL drivers/vhost/vringh 0xd355e031 vringh_complete_kern +EXPORT_SYMBOL drivers/vhost/vringh 0xd609393d vringh_notify_disable_user +EXPORT_SYMBOL drivers/video/backlight/lcd 0x697c9523 lcd_device_register +EXPORT_SYMBOL drivers/video/backlight/lcd 0x783764b4 devm_lcd_device_unregister +EXPORT_SYMBOL drivers/video/backlight/lcd 0x8a2d21bf devm_lcd_device_register +EXPORT_SYMBOL drivers/video/backlight/lcd 0xafefa1c1 lcd_device_unregister +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x1162b715 svga_tilefill +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 0x4ab38ef2 svga_set_default_crt_regs +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x5f34a52b svga_settile +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x6e4adb1e svga_check_timings +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x80f24d95 svga_wcrt_multi +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x8de63fb4 svga_set_timings +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x9a8baff4 svga_get_tilemax +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xa1cee11a svga_tileblit +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xd1429fca svga_wseq_multi +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xd22ca511 svga_set_default_atc_regs +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xe28d2a49 svga_set_default_gfx_regs +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xe69f7970 svga_tilecopy +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xef774f5d svga_compute_pll +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xf2db5956 svga_match_format +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xf5276a76 svga_tilecursor +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xf7b1a5e1 svga_get_caps +EXPORT_SYMBOL drivers/video/fbdev/core/syscopyarea 0xe6cad43b sys_copyarea +EXPORT_SYMBOL drivers/video/fbdev/core/sysfillrect 0x46aa717a sys_fillrect +EXPORT_SYMBOL drivers/video/fbdev/core/sysimgblt 0x525e11ef 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 0xb39f68d1 cyber2000fb_enable_extregs +EXPORT_SYMBOL drivers/video/fbdev/cyber2000fb 0xd5c9878a cyber2000fb_attach +EXPORT_SYMBOL drivers/video/fbdev/macmodes 0x233917d1 mac_vmode_to_var +EXPORT_SYMBOL drivers/video/fbdev/macmodes 0xc52e3bfe mac_find_mode +EXPORT_SYMBOL drivers/video/fbdev/macmodes 0xe2304303 mac_map_monitor_sense +EXPORT_SYMBOL drivers/video/fbdev/matrox/g450_pll 0x1ae4dcaa matroxfb_g450_setclk +EXPORT_SYMBOL drivers/video/fbdev/matrox/g450_pll 0x4ecf860b matroxfb_g450_setpll_cond +EXPORT_SYMBOL drivers/video/fbdev/matrox/g450_pll 0x9e3840c6 g450_mnp2f +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_DAC1064 0x54b1705d DAC1064_global_restore +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_DAC1064 0x5d2f64a9 DAC1064_global_init +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_DAC1064 0x8dde9e1d matrox_mystique +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_DAC1064 0xbe4ad1be matrox_G100 +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_Ti3026 0xbb0771c0 matrox_millennium +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_accel 0xb42c6377 matrox_cfbX_init +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_base 0x02926dea matroxfb_unregister_driver +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_base 0x64d1cc12 matroxfb_enable_irq +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_base 0x800a1de0 matroxfb_wait_for_sync +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_base 0xc31b8df5 matroxfb_register_driver +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_g450 0x33c793f9 matroxfb_g450_connect +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_g450 0x9c7f0e19 matroxfb_g450_shutdown +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0x05371f5a matroxfb_vgaHWinit +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0x210f02be matroxfb_vgaHWrestore +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0x25cf8049 matroxfb_PLL_calcclock +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0x465077aa matroxfb_read_pins +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0x9f235aad matroxfb_DAC_out +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0xcdc90c64 matroxfb_var2my +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0xd04ed457 matroxfb_DAC_in +EXPORT_SYMBOL drivers/video/fbdev/mb862xx/mb862xxfb 0x9deb720a mb862xxfb_init_accel +EXPORT_SYMBOL drivers/video/fbdev/sis/sisfb 0x3037658e sis_malloc +EXPORT_SYMBOL drivers/video/fbdev/sis/sisfb 0x454a3cf0 sis_free +EXPORT_SYMBOL drivers/video/vgastate 0x686de290 restore_vga +EXPORT_SYMBOL drivers/video/vgastate 0xe7a2620e save_vga +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0x8c9c8a84 w1_ds2760_read +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0xdb8fd12f w1_ds2760_write +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0xebc87334 w1_ds2760_store_eeprom +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0xff2caa49 w1_ds2760_recall_eeprom +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2780 0x15d0b7e4 w1_ds2780_eeprom_cmd +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2780 0x225f9e29 w1_ds2780_io +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2781 0xc8af2374 w1_ds2781_eeprom_cmd +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2781 0xcbe9e44b w1_ds2781_io +EXPORT_SYMBOL drivers/w1/wire 0x22e9e46e w1_register_family +EXPORT_SYMBOL drivers/w1/wire 0x78ac0b58 w1_remove_master_device +EXPORT_SYMBOL drivers/w1/wire 0x85405f9b w1_unregister_family +EXPORT_SYMBOL drivers/w1/wire 0xe7165bd5 w1_add_master_device +EXPORT_SYMBOL fs/configfs/configfs 0x08a42eff config_group_init +EXPORT_SYMBOL fs/configfs/configfs 0x108ddaff config_item_set_name +EXPORT_SYMBOL fs/configfs/configfs 0x1878479a configfs_register_subsystem +EXPORT_SYMBOL fs/configfs/configfs 0x219d0213 config_item_init_type_name +EXPORT_SYMBOL fs/configfs/configfs 0x3ad0dfdb config_item_get +EXPORT_SYMBOL fs/configfs/configfs 0xac61e209 config_item_put +EXPORT_SYMBOL fs/configfs/configfs 0xb4054067 config_group_init_type_name +EXPORT_SYMBOL fs/configfs/configfs 0xb6c6c188 configfs_unregister_subsystem +EXPORT_SYMBOL fs/configfs/configfs 0xdaaef0ae config_group_find_item +EXPORT_SYMBOL fs/configfs/configfs 0xf09dd6a5 configfs_undepend_item +EXPORT_SYMBOL fs/configfs/configfs 0xf7ab7595 configfs_depend_item +EXPORT_SYMBOL fs/exofs/libore 0x0bd00c78 ore_read +EXPORT_SYMBOL fs/exofs/libore 0x0d8c289d ore_remove +EXPORT_SYMBOL fs/exofs/libore 0x0fa20b6e ore_put_io_state +EXPORT_SYMBOL fs/exofs/libore 0x27f87ee9 ore_create +EXPORT_SYMBOL fs/exofs/libore 0x28806871 ore_verify_layout +EXPORT_SYMBOL fs/exofs/libore 0x4527e170 ore_calc_stripe_info +EXPORT_SYMBOL fs/exofs/libore 0x804f330b ore_truncate +EXPORT_SYMBOL fs/exofs/libore 0xa3d2a634 g_attr_logical_length +EXPORT_SYMBOL fs/exofs/libore 0xa51668d0 ore_get_rw_state +EXPORT_SYMBOL fs/exofs/libore 0xad3bd573 ore_get_io_state +EXPORT_SYMBOL fs/exofs/libore 0xbe17ebc2 ore_check_io +EXPORT_SYMBOL fs/exofs/libore 0xdc185d95 ore_write +EXPORT_SYMBOL fs/exofs/libore 0xf714f310 extract_attr_from_ios +EXPORT_SYMBOL fs/fscache/fscache 0x01ff55ae fscache_object_destroy +EXPORT_SYMBOL fs/fscache/fscache 0x140e2833 __fscache_alloc_page +EXPORT_SYMBOL fs/fscache/fscache 0x206f6fdc fscache_mark_pages_cached +EXPORT_SYMBOL fs/fscache/fscache 0x2352b47e fscache_withdraw_cache +EXPORT_SYMBOL fs/fscache/fscache 0x25631afd fscache_cache_cleared_wq +EXPORT_SYMBOL fs/fscache/fscache 0x26d66d29 fscache_add_cache +EXPORT_SYMBOL fs/fscache/fscache 0x272285aa __fscache_wait_on_invalidate +EXPORT_SYMBOL fs/fscache/fscache 0x333cf75e __fscache_enable_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x34888bd5 fscache_put_operation +EXPORT_SYMBOL fs/fscache/fscache 0x3d422359 fscache_fsdef_index +EXPORT_SYMBOL fs/fscache/fscache 0x4480b69f __fscache_relinquish_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x44ff8027 fscache_obtained_object +EXPORT_SYMBOL fs/fscache/fscache 0x55acee5d __fscache_read_or_alloc_page +EXPORT_SYMBOL fs/fscache/fscache 0x629ac674 fscache_op_complete +EXPORT_SYMBOL fs/fscache/fscache 0x6719c2d5 __fscache_update_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x6a548e4f __fscache_uncache_page +EXPORT_SYMBOL fs/fscache/fscache 0x6a97e863 fscache_object_init +EXPORT_SYMBOL fs/fscache/fscache 0x72d66c7d __fscache_check_consistency +EXPORT_SYMBOL fs/fscache/fscache 0x743e44c8 __fscache_acquire_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x7449bd33 __fscache_disable_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x74530ecd fscache_op_debug_id +EXPORT_SYMBOL fs/fscache/fscache 0x7ad129f4 __fscache_attr_changed +EXPORT_SYMBOL fs/fscache/fscache 0x7da5eb64 fscache_mark_page_cached +EXPORT_SYMBOL fs/fscache/fscache 0x853896d6 __fscache_check_page_write +EXPORT_SYMBOL fs/fscache/fscache 0x8e5399e4 fscache_init_cache +EXPORT_SYMBOL fs/fscache/fscache 0x9b478415 fscache_operation_init +EXPORT_SYMBOL fs/fscache/fscache 0x9c863ecd __fscache_maybe_release_page +EXPORT_SYMBOL fs/fscache/fscache 0xa0794a34 __fscache_wait_on_page_write +EXPORT_SYMBOL fs/fscache/fscache 0xa294bce1 fscache_object_retrying_stale +EXPORT_SYMBOL fs/fscache/fscache 0xa7404cad __fscache_unregister_netfs +EXPORT_SYMBOL fs/fscache/fscache 0xacd55e2b fscache_check_aux +EXPORT_SYMBOL fs/fscache/fscache 0xb4c3e398 fscache_object_lookup_negative +EXPORT_SYMBOL fs/fscache/fscache 0xb932902b fscache_object_mark_killed +EXPORT_SYMBOL fs/fscache/fscache 0xc017a41e __fscache_write_page +EXPORT_SYMBOL fs/fscache/fscache 0xc6a6f76b __fscache_uncache_all_inode_pages +EXPORT_SYMBOL fs/fscache/fscache 0xcb4b7b54 __fscache_invalidate +EXPORT_SYMBOL fs/fscache/fscache 0xd9d3f7bd fscache_io_error +EXPORT_SYMBOL fs/fscache/fscache 0xe60a9f27 __fscache_readpages_cancel +EXPORT_SYMBOL fs/fscache/fscache 0xf132d415 fscache_enqueue_operation +EXPORT_SYMBOL fs/fscache/fscache 0xf4c37346 __fscache_read_or_alloc_pages +EXPORT_SYMBOL fs/fscache/fscache 0xf7c15266 __fscache_register_netfs +EXPORT_SYMBOL fs/ocfs2/cluster/ocfs2_nodemanager 0xbfd7d7a2 o2hb_global_heartbeat_active +EXPORT_SYMBOL fs/quota/quota_tree 0x00390715 qtree_release_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0x39bde299 qtree_write_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0xa7bc79db qtree_delete_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0xdbb02f85 qtree_read_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0xfb16bb60 qtree_entry_unused +EXPORT_SYMBOL lib/cordic 0x434bfd07 cordic_calc_iq +EXPORT_SYMBOL lib/crc-ccitt 0x3771b461 crc_ccitt +EXPORT_SYMBOL lib/crc-ccitt 0x75811312 crc_ccitt_table +EXPORT_SYMBOL lib/crc-itu-t 0xd29b009f crc_itu_t_table +EXPORT_SYMBOL lib/crc-itu-t 0xf5b4a948 crc_itu_t +EXPORT_SYMBOL lib/crc7 0x66213969 crc7_be +EXPORT_SYMBOL lib/crc7 0x7a222007 crc7_be_syndrome_table +EXPORT_SYMBOL lib/crc8 0x41248eaf crc8 +EXPORT_SYMBOL lib/crc8 0xab9ad613 crc8_populate_lsb +EXPORT_SYMBOL lib/crc8 0xd4534d80 crc8_populate_msb +EXPORT_SYMBOL lib/libcrc32c 0x27000b29 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 0x7d28f74a lc_seq_dump_details +EXPORT_SYMBOL lib/lru_cache 0x84e0214b lc_committed +EXPORT_SYMBOL lib/lru_cache 0xad52ca6a lc_seq_printf_stats +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/lz4_compress 0xcbc5d521 lz4_compress +EXPORT_SYMBOL lib/lz4/lz4hc_compress 0x26c3aa22 lz4hc_compress +EXPORT_SYMBOL lib/raid6/raid6_pq 0x0bd662f6 raid6_gfmul +EXPORT_SYMBOL lib/raid6/raid6_pq 0x15fe0cd3 raid6_gfexp +EXPORT_SYMBOL lib/raid6/raid6_pq 0x5ba93f9d raid6_gfinv +EXPORT_SYMBOL lib/raid6/raid6_pq 0xb0d904b7 raid6_empty_zero_page +EXPORT_SYMBOL lib/raid6/raid6_pq 0xce45a6f1 raid6_gfexi +EXPORT_SYMBOL lib/raid6/raid6_pq 0xd9e91f83 raid6_vgfmul +EXPORT_SYMBOL net/6lowpan/6lowpan 0x826d42e9 lowpan_nhc_del +EXPORT_SYMBOL net/6lowpan/6lowpan 0x897c2653 lowpan_nhc_add +EXPORT_SYMBOL net/802/p8022 0x8aea8dea unregister_8022_client +EXPORT_SYMBOL net/802/p8022 0xbf372de9 register_8022_client +EXPORT_SYMBOL net/802/p8023 0x4c054d8d make_8023_client +EXPORT_SYMBOL net/802/p8023 0xe119028a destroy_8023_client +EXPORT_SYMBOL net/802/psnap 0x7b63932f register_snap_client +EXPORT_SYMBOL net/802/psnap 0x84ab0dbf unregister_snap_client +EXPORT_SYMBOL net/9p/9pnet 0x00c3d950 p9_client_create_dotl +EXPORT_SYMBOL net/9p/9pnet 0x0a9a7344 p9_is_proto_dotl +EXPORT_SYMBOL net/9p/9pnet 0x0e5c8123 p9_client_clunk +EXPORT_SYMBOL net/9p/9pnet 0x0ec393a1 p9_client_write +EXPORT_SYMBOL net/9p/9pnet 0x104e35cc p9_client_disconnect +EXPORT_SYMBOL net/9p/9pnet 0x18b12ce1 p9_client_attach +EXPORT_SYMBOL net/9p/9pnet 0x1a37c7e9 p9_parse_header +EXPORT_SYMBOL net/9p/9pnet 0x21631940 p9_client_fsync +EXPORT_SYMBOL net/9p/9pnet 0x25cb1274 v9fs_get_trans_by_name +EXPORT_SYMBOL net/9p/9pnet 0x2999e07c p9_client_stat +EXPORT_SYMBOL net/9p/9pnet 0x2aba0f88 p9_client_open +EXPORT_SYMBOL net/9p/9pnet 0x2ae8e7d3 p9_client_fcreate +EXPORT_SYMBOL net/9p/9pnet 0x31c4ed68 v9fs_get_default_trans +EXPORT_SYMBOL net/9p/9pnet 0x35d1e27e p9_idpool_get +EXPORT_SYMBOL net/9p/9pnet 0x3c94a2c4 p9_release_pages +EXPORT_SYMBOL net/9p/9pnet 0x3d73a797 p9_errstr2errno +EXPORT_SYMBOL net/9p/9pnet 0x3f5bdf9f p9_client_read +EXPORT_SYMBOL net/9p/9pnet 0x44d2c2c0 p9stat_free +EXPORT_SYMBOL net/9p/9pnet 0x45946329 p9stat_read +EXPORT_SYMBOL net/9p/9pnet 0x48e06152 p9_client_link +EXPORT_SYMBOL net/9p/9pnet 0x5bf37012 p9_client_wstat +EXPORT_SYMBOL net/9p/9pnet 0x67955f26 p9_client_setattr +EXPORT_SYMBOL net/9p/9pnet 0x6a3573db p9_client_mkdir_dotl +EXPORT_SYMBOL net/9p/9pnet 0x74e49b2e p9_client_destroy +EXPORT_SYMBOL net/9p/9pnet 0x7e95d83a p9_client_readdir +EXPORT_SYMBOL net/9p/9pnet 0x86ec3375 v9fs_unregister_trans +EXPORT_SYMBOL net/9p/9pnet 0x91b743a9 p9_client_rename +EXPORT_SYMBOL net/9p/9pnet 0x9ce58e4f p9dirent_read +EXPORT_SYMBOL net/9p/9pnet 0xad8786d1 p9_client_getlock_dotl +EXPORT_SYMBOL net/9p/9pnet 0xb6a3fd98 p9_is_proto_dotu +EXPORT_SYMBOL net/9p/9pnet 0xbd35a94c p9_client_statfs +EXPORT_SYMBOL net/9p/9pnet 0xbecda93c p9_client_unlinkat +EXPORT_SYMBOL net/9p/9pnet 0xc5db54a9 p9_idpool_destroy +EXPORT_SYMBOL net/9p/9pnet 0xcf02d1fb p9_client_getattr_dotl +EXPORT_SYMBOL net/9p/9pnet 0xd0f0c111 p9_client_begin_disconnect +EXPORT_SYMBOL net/9p/9pnet 0xd238b994 p9_tag_lookup +EXPORT_SYMBOL net/9p/9pnet 0xd34e2f72 p9_client_walk +EXPORT_SYMBOL net/9p/9pnet 0xd7c9f3d6 p9_client_create +EXPORT_SYMBOL net/9p/9pnet 0xe128acb8 p9_client_mknod_dotl +EXPORT_SYMBOL net/9p/9pnet 0xe243e51f p9_client_remove +EXPORT_SYMBOL net/9p/9pnet 0xe58a3360 p9_error_init +EXPORT_SYMBOL net/9p/9pnet 0xe689c0f1 p9_client_cb +EXPORT_SYMBOL net/9p/9pnet 0xeeca17a7 v9fs_register_trans +EXPORT_SYMBOL net/9p/9pnet 0xf2580797 p9_client_symlink +EXPORT_SYMBOL net/9p/9pnet 0xf4a111d8 p9_idpool_create +EXPORT_SYMBOL net/9p/9pnet 0xf5eab712 p9_client_readlink +EXPORT_SYMBOL net/9p/9pnet 0xf7567511 p9_client_lock_dotl +EXPORT_SYMBOL net/9p/9pnet 0xf84f2022 p9_idpool_put +EXPORT_SYMBOL net/9p/9pnet 0xfd40c79d p9_idpool_check +EXPORT_SYMBOL net/9p/9pnet 0xfe0ad3f8 p9_client_renameat +EXPORT_SYMBOL net/appletalk/appletalk 0x310da98c alloc_ltalkdev +EXPORT_SYMBOL net/appletalk/appletalk 0x3f2c3232 aarp_send_ddp +EXPORT_SYMBOL net/appletalk/appletalk 0x8dc526b1 atrtr_get_dev +EXPORT_SYMBOL net/appletalk/appletalk 0xef054292 atalk_find_dev_addr +EXPORT_SYMBOL net/atm/atm 0x0396bcc5 atm_init_aal5 +EXPORT_SYMBOL net/atm/atm 0x0bd7d1ad vcc_release_async +EXPORT_SYMBOL net/atm/atm 0x0f52bbb3 atm_charge +EXPORT_SYMBOL net/atm/atm 0x229db4d6 atm_dev_release_vccs +EXPORT_SYMBOL net/atm/atm 0x2cc2d52d vcc_hash +EXPORT_SYMBOL net/atm/atm 0x2f266869 atm_dev_register +EXPORT_SYMBOL net/atm/atm 0x324b0487 atm_alloc_charge +EXPORT_SYMBOL net/atm/atm 0x4443d399 atm_proc_root +EXPORT_SYMBOL net/atm/atm 0x5dbc49f1 register_atm_ioctl +EXPORT_SYMBOL net/atm/atm 0x803b6eef atm_dev_signal_change +EXPORT_SYMBOL net/atm/atm 0x96fb52f5 atm_dev_lookup +EXPORT_SYMBOL net/atm/atm 0x9bacc869 vcc_process_recv_queue +EXPORT_SYMBOL net/atm/atm 0x9feaf287 sonet_subtract_stats +EXPORT_SYMBOL net/atm/atm 0xaa024146 sonet_copy_stats +EXPORT_SYMBOL net/atm/atm 0xb85bd133 atm_dev_deregister +EXPORT_SYMBOL net/atm/atm 0xcd9be7cc deregister_atm_ioctl +EXPORT_SYMBOL net/atm/atm 0xf1774b53 vcc_sklist_lock +EXPORT_SYMBOL net/atm/atm 0xf49bc67a atm_pcr_goal +EXPORT_SYMBOL net/atm/atm 0xf8057611 vcc_insert_socket +EXPORT_SYMBOL net/ax25/ax25 0x242852b9 ax25_uid_policy +EXPORT_SYMBOL net/ax25/ax25 0x3afee63e ax25_findbyuid +EXPORT_SYMBOL net/ax25/ax25 0x4502c65a asc2ax +EXPORT_SYMBOL net/ax25/ax25 0x51502942 ax25_listen_release +EXPORT_SYMBOL net/ax25/ax25 0x53dea1ff ax2asc +EXPORT_SYMBOL net/ax25/ax25 0x8ede9e26 ax25_protocol_release +EXPORT_SYMBOL net/ax25/ax25 0xa2a698cf ax25_header_ops +EXPORT_SYMBOL net/ax25/ax25 0xa7f3015b ax25_display_timer +EXPORT_SYMBOL net/ax25/ax25 0xaf8cae32 ax25_linkfail_register +EXPORT_SYMBOL net/ax25/ax25 0xb4424ec0 ax25_listen_register +EXPORT_SYMBOL net/ax25/ax25 0xc1444946 ax25cmp +EXPORT_SYMBOL net/ax25/ax25 0xc4d43d9a ax25_find_cb +EXPORT_SYMBOL net/ax25/ax25 0xca1332a9 ax25_send_frame +EXPORT_SYMBOL net/ax25/ax25 0xd43ecbf1 null_ax25_address +EXPORT_SYMBOL net/ax25/ax25 0xfb66851a ax25_ip_xmit +EXPORT_SYMBOL net/ax25/ax25 0xfb8fb6df ax25_linkfail_release +EXPORT_SYMBOL net/bluetooth/bluetooth 0x0c3eef89 hci_recv_frame +EXPORT_SYMBOL net/bluetooth/bluetooth 0x0d0656c9 __hci_cmd_sync_ev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x21d85e24 bt_accept_unlink +EXPORT_SYMBOL net/bluetooth/bluetooth 0x242bc62d hci_free_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x28846f76 hci_register_cb +EXPORT_SYMBOL net/bluetooth/bluetooth 0x2e6a8e68 bt_accept_dequeue +EXPORT_SYMBOL net/bluetooth/bluetooth 0x2f556e05 hci_mgmt_chan_unregister +EXPORT_SYMBOL net/bluetooth/bluetooth 0x32cbd59d bt_procfs_cleanup +EXPORT_SYMBOL net/bluetooth/bluetooth 0x3b07d835 l2cap_chan_close +EXPORT_SYMBOL net/bluetooth/bluetooth 0x40c74e08 hci_conn_security +EXPORT_SYMBOL net/bluetooth/bluetooth 0x47022514 bt_err +EXPORT_SYMBOL net/bluetooth/bluetooth 0x4aa71f73 __hci_cmd_sync +EXPORT_SYMBOL net/bluetooth/bluetooth 0x5ad0202d bt_sock_register +EXPORT_SYMBOL net/bluetooth/bluetooth 0x69160d00 hci_unregister_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x75afcf51 bt_sock_wait_ready +EXPORT_SYMBOL net/bluetooth/bluetooth 0x89a95c70 bt_sock_poll +EXPORT_SYMBOL net/bluetooth/bluetooth 0x8c132e25 hci_conn_switch_role +EXPORT_SYMBOL net/bluetooth/bluetooth 0x8f24820d bt_sock_wait_state +EXPORT_SYMBOL net/bluetooth/bluetooth 0x8fa46a37 hci_register_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x8fea24bd bt_sock_unregister +EXPORT_SYMBOL net/bluetooth/bluetooth 0x903d3672 hci_reset_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x91c9a325 bt_to_errno +EXPORT_SYMBOL net/bluetooth/bluetooth 0x974180fb hci_unregister_cb +EXPORT_SYMBOL net/bluetooth/bluetooth 0x9cd78574 hci_get_route +EXPORT_SYMBOL net/bluetooth/bluetooth 0xa4bc0851 bt_sock_recvmsg +EXPORT_SYMBOL net/bluetooth/bluetooth 0xa5d7608d bt_sock_ioctl +EXPORT_SYMBOL net/bluetooth/bluetooth 0xa7149485 bt_sock_link +EXPORT_SYMBOL net/bluetooth/bluetooth 0xaa36b61e hci_resume_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xab01f870 hci_suspend_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xb0a22301 bt_sock_reclassify_lock +EXPORT_SYMBOL net/bluetooth/bluetooth 0xcb10d515 hci_mgmt_chan_register +EXPORT_SYMBOL net/bluetooth/bluetooth 0xcc1fb551 baswap +EXPORT_SYMBOL net/bluetooth/bluetooth 0xcdc48fe8 bt_accept_enqueue +EXPORT_SYMBOL net/bluetooth/bluetooth 0xd7442057 bt_info +EXPORT_SYMBOL net/bluetooth/bluetooth 0xdcf5d958 l2cap_register_user +EXPORT_SYMBOL net/bluetooth/bluetooth 0xdf002b65 hci_alloc_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xe2c93a92 bt_procfs_init +EXPORT_SYMBOL net/bluetooth/bluetooth 0xe51ed1ae l2cap_unregister_user +EXPORT_SYMBOL net/bluetooth/bluetooth 0xe769c66c l2cap_conn_get +EXPORT_SYMBOL net/bluetooth/bluetooth 0xeae832a7 l2cap_is_socket +EXPORT_SYMBOL net/bluetooth/bluetooth 0xf5de49d9 bt_sock_unlink +EXPORT_SYMBOL net/bluetooth/bluetooth 0xf5fd76c8 bt_sock_stream_recvmsg +EXPORT_SYMBOL net/bluetooth/bluetooth 0xfb855453 hci_conn_check_secure +EXPORT_SYMBOL net/bluetooth/bluetooth 0xfca6092a l2cap_conn_put +EXPORT_SYMBOL net/bridge/bridge 0xf745c63c br_should_route_hook +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0x274f70dd ebt_unregister_table +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0x2e8792c0 ebt_do_table +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0xaa2ce639 ebt_register_table +EXPORT_SYMBOL net/caif/caif 0x1446b60a caif_client_register_refcnt +EXPORT_SYMBOL net/caif/caif 0x17af56dd cfcnfg_add_phy_layer +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 0x4a237e57 cfpkt_tonative +EXPORT_SYMBOL net/caif/caif 0x6a44fc70 cfpkt_extr_head +EXPORT_SYMBOL net/caif/caif 0x839ddb7b cfcnfg_set_phy_state +EXPORT_SYMBOL net/caif/caif 0x966d7de2 cfpkt_add_head +EXPORT_SYMBOL net/caif/caif 0x9e3e305d cfpkt_set_prio +EXPORT_SYMBOL net/caif/caif 0xb7b6874e caif_free_client +EXPORT_SYMBOL net/caif/caif 0xc034ff0b caif_disconnect_client +EXPORT_SYMBOL net/caif/caif 0xc68fb604 caif_enroll_dev +EXPORT_SYMBOL net/caif/caif 0xcc562807 caif_connect_client +EXPORT_SYMBOL net/caif/caif 0xf4079fba get_cfcnfg +EXPORT_SYMBOL net/can/can 0x44f5554e can_rx_register +EXPORT_SYMBOL net/can/can 0x69edebd1 can_proto_unregister +EXPORT_SYMBOL net/can/can 0x9f809f4b can_send +EXPORT_SYMBOL net/can/can 0xa5e1fc04 can_ioctl +EXPORT_SYMBOL net/can/can 0xb91c2b3f can_proto_register +EXPORT_SYMBOL net/can/can 0xff724d60 can_rx_unregister +EXPORT_SYMBOL net/ceph/libceph 0x0016c827 ceph_get_direct_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x01119e3a ceph_print_client_options +EXPORT_SYMBOL net/ceph/libceph 0x0161542e osd_req_op_watch_init +EXPORT_SYMBOL net/ceph/libceph 0x01dbbd4d ceph_msg_new +EXPORT_SYMBOL net/ceph/libceph 0x02508c6f ceph_osdc_get_request +EXPORT_SYMBOL net/ceph/libceph 0x02d28a39 ceph_alloc_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x03359a4a ceph_monc_stop +EXPORT_SYMBOL net/ceph/libceph 0x05e0ad8f osd_req_op_extent_update +EXPORT_SYMBOL net/ceph/libceph 0x09290ab3 ceph_debugfs_init +EXPORT_SYMBOL net/ceph/libceph 0x0c77b8bd ceph_con_open +EXPORT_SYMBOL net/ceph/libceph 0x1619f2bf ceph_osdc_put_request +EXPORT_SYMBOL net/ceph/libceph 0x166f54d8 ceph_con_init +EXPORT_SYMBOL net/ceph/libceph 0x18ec5e6d ceph_osdc_alloc_request +EXPORT_SYMBOL net/ceph/libceph 0x1a6b3303 ceph_msg_put +EXPORT_SYMBOL net/ceph/libceph 0x1b8bd224 ceph_osdc_flush_notifies +EXPORT_SYMBOL net/ceph/libceph 0x20d151cb ceph_osdc_setup +EXPORT_SYMBOL net/ceph/libceph 0x25da5b44 ceph_msg_data_add_bio +EXPORT_SYMBOL net/ceph/libceph 0x2ade648a ceph_pg_poolid_by_name +EXPORT_SYMBOL net/ceph/libceph 0x2b66146e ceph_monc_wait_osdmap +EXPORT_SYMBOL net/ceph/libceph 0x2bc2c8d8 ceph_osdc_wait_request +EXPORT_SYMBOL net/ceph/libceph 0x2db717f3 ceph_destroy_options +EXPORT_SYMBOL net/ceph/libceph 0x2f49a43d ceph_osdc_cancel_request +EXPORT_SYMBOL net/ceph/libceph 0x313f339a osd_req_op_extent_osd_data_pagelist +EXPORT_SYMBOL net/ceph/libceph 0x3476600e ceph_monc_got_mdsmap +EXPORT_SYMBOL net/ceph/libceph 0x3abec91f ceph_pr_addr +EXPORT_SYMBOL net/ceph/libceph 0x3b97b248 osd_req_op_extent_init +EXPORT_SYMBOL net/ceph/libceph 0x3d557d4b ceph_osdc_start_request +EXPORT_SYMBOL net/ceph/libceph 0x3f688151 ceph_put_snap_context +EXPORT_SYMBOL net/ceph/libceph 0x43e458f6 ceph_file_part +EXPORT_SYMBOL net/ceph/libceph 0x43efd647 ceph_calc_file_object_mapping +EXPORT_SYMBOL net/ceph/libceph 0x45aeacca ceph_msg_dump +EXPORT_SYMBOL net/ceph/libceph 0x466b85b8 libceph_compatible +EXPORT_SYMBOL net/ceph/libceph 0x47a9920e ceph_pagelist_release +EXPORT_SYMBOL net/ceph/libceph 0x4e3b167b osd_req_op_cls_request_data_pagelist +EXPORT_SYMBOL net/ceph/libceph 0x4edfd9cf __ceph_open_session +EXPORT_SYMBOL net/ceph/libceph 0x5379cea3 ceph_caps_for_mode +EXPORT_SYMBOL net/ceph/libceph 0x56c598d4 ceph_client_id +EXPORT_SYMBOL net/ceph/libceph 0x57baf885 ceph_str_hash +EXPORT_SYMBOL net/ceph/libceph 0x5c4877e4 ceph_compare_options +EXPORT_SYMBOL net/ceph/libceph 0x5f5a827e osd_req_op_cls_request_data_pages +EXPORT_SYMBOL net/ceph/libceph 0x62832670 ceph_copy_to_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x63758856 ceph_str_hash_name +EXPORT_SYMBOL net/ceph/libceph 0x67639119 osd_req_op_cls_init +EXPORT_SYMBOL net/ceph/libceph 0x687db077 ceph_release_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x69bca106 ceph_auth_create_authorizer +EXPORT_SYMBOL net/ceph/libceph 0x6b2e3bcd ceph_get_snap_context +EXPORT_SYMBOL net/ceph/libceph 0x6e564e58 osd_req_op_cls_response_data_pages +EXPORT_SYMBOL net/ceph/libceph 0x7640fbb2 ceph_osdc_build_request +EXPORT_SYMBOL net/ceph/libceph 0x776777aa ceph_copy_user_to_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x7a503e2d ceph_monc_validate_auth +EXPORT_SYMBOL net/ceph/libceph 0x83db6a04 ceph_msg_data_add_pages +EXPORT_SYMBOL net/ceph/libceph 0x842f34c4 ceph_auth_is_authenticated +EXPORT_SYMBOL net/ceph/libceph 0x84cf38e3 osd_req_op_init +EXPORT_SYMBOL net/ceph/libceph 0x86407322 osd_req_op_xattr_init +EXPORT_SYMBOL net/ceph/libceph 0x86fe178b ceph_auth_destroy_authorizer +EXPORT_SYMBOL net/ceph/libceph 0x8f904ebb ceph_auth_update_authorizer +EXPORT_SYMBOL net/ceph/libceph 0x92a7a4c3 ceph_osdc_cancel_event +EXPORT_SYMBOL net/ceph/libceph 0x930eb2fd ceph_copy_from_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x93e7f224 ceph_osdc_create_event +EXPORT_SYMBOL net/ceph/libceph 0x9755abb0 osd_req_op_raw_data_in_pages +EXPORT_SYMBOL net/ceph/libceph 0x97582bdd ceph_zero_page_vector_range +EXPORT_SYMBOL net/ceph/libceph 0x99b833b5 ceph_con_keepalive +EXPORT_SYMBOL net/ceph/libceph 0x99e36571 ceph_osdc_cleanup +EXPORT_SYMBOL net/ceph/libceph 0x99f44384 ceph_put_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x9c41aef4 ceph_pg_pool_name_by_id +EXPORT_SYMBOL net/ceph/libceph 0x9f534f4d ceph_buffer_release +EXPORT_SYMBOL net/ceph/libceph 0xa02da6d6 ceph_monc_open_session +EXPORT_SYMBOL net/ceph/libceph 0xa1ac69ec osd_req_op_cls_response_data +EXPORT_SYMBOL net/ceph/libceph 0xa1ebde8f ceph_pagelist_truncate +EXPORT_SYMBOL net/ceph/libceph 0xa5eb7b5c ceph_open_session +EXPORT_SYMBOL net/ceph/libceph 0xa77d5a68 osd_req_op_alloc_hint_init +EXPORT_SYMBOL net/ceph/libceph 0xa9308f03 ceph_osdc_new_request +EXPORT_SYMBOL net/ceph/libceph 0xabe4d523 osd_req_op_extent_osd_data_pages +EXPORT_SYMBOL net/ceph/libceph 0xacd443f1 osd_req_op_extent_osd_data_bio +EXPORT_SYMBOL net/ceph/libceph 0xade9697d ceph_osdc_put_event +EXPORT_SYMBOL net/ceph/libceph 0xae3515ba ceph_create_snap_context +EXPORT_SYMBOL net/ceph/libceph 0xafb8a407 ceph_msgr_flush +EXPORT_SYMBOL net/ceph/libceph 0xb19dc152 ceph_pagelist_reserve +EXPORT_SYMBOL net/ceph/libceph 0xb1d3eb02 ceph_osdc_sync +EXPORT_SYMBOL net/ceph/libceph 0xb54676fa ceph_msg_type_name +EXPORT_SYMBOL net/ceph/libceph 0xb6081d6d ceph_msgr_exit +EXPORT_SYMBOL net/ceph/libceph 0xb80d7fcd ceph_check_fsid +EXPORT_SYMBOL net/ceph/libceph 0xbc99e898 ceph_monc_request_next_osdmap +EXPORT_SYMBOL net/ceph/libceph 0xbccb21e0 ceph_osdc_writepages +EXPORT_SYMBOL net/ceph/libceph 0xbf831279 ceph_con_close +EXPORT_SYMBOL net/ceph/libceph 0xbfbb115d ceph_oloc_oid_to_pg +EXPORT_SYMBOL net/ceph/libceph 0xc24062be ceph_messenger_init +EXPORT_SYMBOL net/ceph/libceph 0xc3e59984 ceph_monc_init +EXPORT_SYMBOL net/ceph/libceph 0xc4a80955 ceph_debugfs_cleanup +EXPORT_SYMBOL net/ceph/libceph 0xc9f82b38 ceph_msgr_init +EXPORT_SYMBOL net/ceph/libceph 0xcb50a624 ceph_parse_ips +EXPORT_SYMBOL net/ceph/libceph 0xceff3e35 ceph_destroy_client +EXPORT_SYMBOL net/ceph/libceph 0xd04c8313 ceph_osdc_set_request_linger +EXPORT_SYMBOL net/ceph/libceph 0xd2825141 osd_req_op_extent_osd_data +EXPORT_SYMBOL net/ceph/libceph 0xd2c107bb ceph_flags_to_mode +EXPORT_SYMBOL net/ceph/libceph 0xd4fd75c8 ceph_con_send +EXPORT_SYMBOL net/ceph/libceph 0xd5383217 ceph_pagelist_set_cursor +EXPORT_SYMBOL net/ceph/libceph 0xd813625e ceph_pagelist_append +EXPORT_SYMBOL net/ceph/libceph 0xda77ce0a ceph_msg_get +EXPORT_SYMBOL net/ceph/libceph 0xdc5afd44 ceph_monc_do_get_version +EXPORT_SYMBOL net/ceph/libceph 0xdccb3239 ceph_auth_invalidate_authorizer +EXPORT_SYMBOL net/ceph/libceph 0xdd8e7550 ceph_parse_options +EXPORT_SYMBOL net/ceph/libceph 0xde078a21 ceph_auth_verify_authorizer_reply +EXPORT_SYMBOL net/ceph/libceph 0xde0eb6ba ceph_pagelist_free_reserve +EXPORT_SYMBOL net/ceph/libceph 0xe55d9bcd ceph_buffer_new +EXPORT_SYMBOL net/ceph/libceph 0xe7063f51 ceph_calc_pg_primary +EXPORT_SYMBOL net/ceph/libceph 0xf0a0f773 ceph_create_client +EXPORT_SYMBOL net/ceph/libceph 0xf19bf161 ceph_osdc_readpages +EXPORT_SYMBOL net/ceph/libceph 0xf352170c ceph_monc_do_statfs +EXPORT_SYMBOL net/ceph/libceph 0xf4d93a6a ceph_msg_data_add_pagelist +EXPORT_SYMBOL net/ceph/libceph 0xfeb739c1 ceph_messenger_fini +EXPORT_SYMBOL net/dccp/dccp_ipv4 0x62049e57 dccp_req_err +EXPORT_SYMBOL net/dccp/dccp_ipv4 0xbb1d6dd4 dccp_syn_ack_timeout +EXPORT_SYMBOL net/ieee802154/6lowpan/ieee802154_6lowpan 0x526f0a21 lowpan_frag_rcv +EXPORT_SYMBOL net/ieee802154/ieee802154 0x0d8d6559 wpan_phy_new +EXPORT_SYMBOL net/ieee802154/ieee802154 0x246f0bdc wpan_phy_for_each +EXPORT_SYMBOL net/ieee802154/ieee802154 0x8e556fae wpan_phy_register +EXPORT_SYMBOL net/ieee802154/ieee802154 0x952a0051 wpan_phy_unregister +EXPORT_SYMBOL net/ieee802154/ieee802154 0xb979e82f wpan_phy_find +EXPORT_SYMBOL net/ieee802154/ieee802154 0xc1e80ad7 wpan_phy_free +EXPORT_SYMBOL net/ipv4/fou 0x56c452d5 fou_build_header +EXPORT_SYMBOL net/ipv4/fou 0x6eeb7ec9 gue_build_header +EXPORT_SYMBOL net/ipv4/fou 0x87596169 fou_encap_hlen +EXPORT_SYMBOL net/ipv4/fou 0xfe4c1f2f gue_encap_hlen +EXPORT_SYMBOL net/ipv4/ip_tunnel 0x0d83118e ip_tunnel_encap +EXPORT_SYMBOL net/ipv4/ip_tunnel 0x6b949b23 ip_tunnel_encap_del_ops +EXPORT_SYMBOL net/ipv4/ip_tunnel 0x6ddd4553 ip_tunnel_encap_add_ops +EXPORT_SYMBOL net/ipv4/ip_tunnel 0x7b9f89fa ip_tunnel_get_link_net +EXPORT_SYMBOL net/ipv4/ip_tunnel 0xe0576661 ip_tunnel_get_iflink +EXPORT_SYMBOL net/ipv4/ip_tunnel 0xfab7a0aa ip_tunnel_dst_reset_all +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0x0a021b9f arpt_unregister_table +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0x41dd0074 arpt_do_table +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0x61bd8edd arpt_register_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0x09712819 ipt_register_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0xcce6c9db ipt_unregister_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0xe923fa3f ipt_do_table +EXPORT_SYMBOL net/ipv4/tunnel4 0x6caa4d0a xfrm4_tunnel_register +EXPORT_SYMBOL net/ipv4/tunnel4 0xc6fc1353 xfrm4_tunnel_deregister +EXPORT_SYMBOL net/ipv4/udp_tunnel 0xbdea4f1e udp_sock_create4 +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0x47da08d4 ip6_tnl_parse_tlv_enc_lim +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0x72c7091d ip6_tnl_get_link_net +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0xc015996d ip6_tnl_get_iflink +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0xfe6c6474 ip6_tnl_get_cap +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0x048f1cdd ip6t_do_table +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0x91243a77 ip6t_unregister_table +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0x91dac7cb ip6t_register_table +EXPORT_SYMBOL net/ipv6/tunnel6 0xcb3a2408 xfrm6_tunnel_deregister +EXPORT_SYMBOL net/ipv6/tunnel6 0xde7c6122 xfrm6_tunnel_register +EXPORT_SYMBOL net/ipv6/xfrm6_tunnel 0x8b21aa43 xfrm6_tunnel_spi_lookup +EXPORT_SYMBOL net/ipv6/xfrm6_tunnel 0xf143b803 xfrm6_tunnel_alloc_spi +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x20286b58 ircomm_flow_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x4166cc86 ircomm_open +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x4cc924d4 ircomm_connect_response +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x757abe9e ircomm_control_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0xccd6dcf3 ircomm_data_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0xd876267a ircomm_disconnect_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0xefa27e0b ircomm_connect_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0xf8b70dfd ircomm_close +EXPORT_SYMBOL net/irda/irda 0x06a3ee58 irias_new_integer_value +EXPORT_SYMBOL net/irda/irda 0x07d3647c irlmp_register_service +EXPORT_SYMBOL net/irda/irda 0x10e37be0 irda_device_set_media_busy +EXPORT_SYMBOL net/irda/irda 0x13167e9b irttp_connect_request +EXPORT_SYMBOL net/irda/irda 0x17a491c5 irias_add_octseq_attrib +EXPORT_SYMBOL net/irda/irda 0x27f074ab irlmp_connect_response +EXPORT_SYMBOL net/irda/irda 0x2eb56cf8 irttp_flow_request +EXPORT_SYMBOL net/irda/irda 0x32757b50 irlmp_connect_request +EXPORT_SYMBOL net/irda/irda 0x33cbe2c6 proc_irda +EXPORT_SYMBOL net/irda/irda 0x36cad55b hashbin_remove_this +EXPORT_SYMBOL net/irda/irda 0x37791344 hashbin_get_first +EXPORT_SYMBOL net/irda/irda 0x3fc76ecd irttp_connect_response +EXPORT_SYMBOL net/irda/irda 0x43981f2a irda_notify_init +EXPORT_SYMBOL net/irda/irda 0x448b8aaa irda_qos_bits_to_value +EXPORT_SYMBOL net/irda/irda 0x46c1c4a2 irlmp_unregister_service +EXPORT_SYMBOL net/irda/irda 0x6492e28c hashbin_get_next +EXPORT_SYMBOL net/irda/irda 0x6b043eba irda_init_max_qos_capabilies +EXPORT_SYMBOL net/irda/irda 0x6b76aa70 hashbin_delete +EXPORT_SYMBOL net/irda/irda 0x7042bc54 irlmp_register_client +EXPORT_SYMBOL net/irda/irda 0x731cec71 hashbin_insert +EXPORT_SYMBOL net/irda/irda 0x763e54a4 irlmp_unregister_client +EXPORT_SYMBOL net/irda/irda 0x7957f728 irlmp_update_client +EXPORT_SYMBOL net/irda/irda 0x7e67ca6e irias_new_object +EXPORT_SYMBOL net/irda/irda 0x7f52a8bf irda_param_insert +EXPORT_SYMBOL net/irda/irda 0x7fc83634 irttp_open_tsap +EXPORT_SYMBOL net/irda/irda 0x8982c8d9 irias_delete_object +EXPORT_SYMBOL net/irda/irda 0x89b7edd3 irlap_close +EXPORT_SYMBOL net/irda/irda 0x8a44dd5e hashbin_new +EXPORT_SYMBOL net/irda/irda 0x90ddb6bd hashbin_remove +EXPORT_SYMBOL net/irda/irda 0x91815586 irda_param_pack +EXPORT_SYMBOL net/irda/irda 0x949ae75e irlmp_close_lsap +EXPORT_SYMBOL net/irda/irda 0x94a824db irda_param_extract_all +EXPORT_SYMBOL net/irda/irda 0x96920a8f iriap_close +EXPORT_SYMBOL net/irda/irda 0x9d5d7f98 async_unwrap_char +EXPORT_SYMBOL net/irda/irda 0x9f26186c irttp_close_tsap +EXPORT_SYMBOL net/irda/irda 0x9ffda243 irias_add_string_attrib +EXPORT_SYMBOL net/irda/irda 0xa0c03ded alloc_irdadev +EXPORT_SYMBOL net/irda/irda 0xa19e1b2a irttp_udata_request +EXPORT_SYMBOL net/irda/irda 0xa6de5919 async_wrap_skb +EXPORT_SYMBOL net/irda/irda 0xb114297b irlmp_disconnect_request +EXPORT_SYMBOL net/irda/irda 0xb11999ee irlmp_data_request +EXPORT_SYMBOL net/irda/irda 0xb3c13d7f irias_add_integer_attrib +EXPORT_SYMBOL net/irda/irda 0xb9394173 irias_delete_value +EXPORT_SYMBOL net/irda/irda 0xbcd3ef13 irias_object_change_attribute +EXPORT_SYMBOL net/irda/irda 0xbe40ace9 irlmp_discovery_request +EXPORT_SYMBOL net/irda/irda 0xbf0a38b3 irttp_data_request +EXPORT_SYMBOL net/irda/irda 0xbf7dd554 hashbin_find +EXPORT_SYMBOL net/irda/irda 0xbfa7c08d hashbin_lock_find +EXPORT_SYMBOL net/irda/irda 0xc477368d irias_find_object +EXPORT_SYMBOL net/irda/irda 0xc4decb19 irlap_open +EXPORT_SYMBOL net/irda/irda 0xd041c4d5 irlmp_open_lsap +EXPORT_SYMBOL net/irda/irda 0xd78327a1 irttp_dup +EXPORT_SYMBOL net/irda/irda 0xde4c6b3c irlmp_service_to_hint +EXPORT_SYMBOL net/irda/irda 0xe9f0b60d iriap_getvaluebyclass_request +EXPORT_SYMBOL net/irda/irda 0xedd521c2 irlmp_get_discoveries +EXPORT_SYMBOL net/irda/irda 0xf0b17024 irttp_disconnect_request +EXPORT_SYMBOL net/irda/irda 0xf199cba4 irias_insert_object +EXPORT_SYMBOL net/irda/irda 0xf7881976 iriap_open +EXPORT_SYMBOL net/l2tp/l2tp_core 0x8728b048 l2tp_recv_common +EXPORT_SYMBOL net/lapb/lapb 0x4c3bd36e lapb_connect_request +EXPORT_SYMBOL net/lapb/lapb 0x6b6f06e0 lapb_data_received +EXPORT_SYMBOL net/lapb/lapb 0x93c7e6d6 lapb_unregister +EXPORT_SYMBOL net/lapb/lapb 0xa22d4ae0 lapb_register +EXPORT_SYMBOL net/lapb/lapb 0xdfb1aa54 lapb_setparms +EXPORT_SYMBOL net/lapb/lapb 0xe2f43b61 lapb_getparms +EXPORT_SYMBOL net/lapb/lapb 0xfe2f36df lapb_data_request +EXPORT_SYMBOL net/lapb/lapb 0xffcb1f6e lapb_disconnect_request +EXPORT_SYMBOL net/llc/llc 0x0fc0db07 llc_sap_close +EXPORT_SYMBOL net/llc/llc 0x2c0d9761 llc_mac_hdr_init +EXPORT_SYMBOL net/llc/llc 0x38b92846 llc_remove_pack +EXPORT_SYMBOL net/llc/llc 0x45b5c2cb llc_sap_open +EXPORT_SYMBOL net/llc/llc 0x52d7b2fd llc_sap_list +EXPORT_SYMBOL net/llc/llc 0x684c475b llc_set_station_handler +EXPORT_SYMBOL net/llc/llc 0x7637297e llc_build_and_send_ui_pkt +EXPORT_SYMBOL net/llc/llc 0xc3da2b04 llc_sap_find +EXPORT_SYMBOL net/llc/llc 0xdf6bb857 llc_add_pack +EXPORT_SYMBOL net/mac80211/mac80211 0x02166686 ieee80211_get_tkip_p1k_iv +EXPORT_SYMBOL net/mac80211/mac80211 0x0b17e3e2 ieee80211_unregister_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x0cee1b3b ieee80211_rate_control_unregister +EXPORT_SYMBOL net/mac80211/mac80211 0x10716d7c ieee80211_restart_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x16bde9c0 ieee80211_alloc_hw_nm +EXPORT_SYMBOL net/mac80211/mac80211 0x179ea0f7 ieee80211_pspoll_get +EXPORT_SYMBOL net/mac80211/mac80211 0x1a9a518b ieee80211_scan_completed +EXPORT_SYMBOL net/mac80211/mac80211 0x26c89324 ieee80211_register_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x27201a91 ieee80211_report_wowlan_wakeup +EXPORT_SYMBOL net/mac80211/mac80211 0x2b0689b3 __ieee80211_get_assoc_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0x2d617c21 ieee80211_proberesp_get +EXPORT_SYMBOL net/mac80211/mac80211 0x2f83e478 ieee80211_find_sta +EXPORT_SYMBOL net/mac80211/mac80211 0x3210ac25 ieee80211_beacon_get_tim +EXPORT_SYMBOL net/mac80211/mac80211 0x37e6b51a wiphy_to_ieee80211_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x3869f08e ieee80211_aes_cmac_calculate_k1_k2 +EXPORT_SYMBOL net/mac80211/mac80211 0x38cad19c ieee80211_start_tx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0x437a542f __ieee80211_create_tpt_led_trigger +EXPORT_SYMBOL net/mac80211/mac80211 0x48f474aa ieee80211_send_bar +EXPORT_SYMBOL net/mac80211/mac80211 0x4a3af3c1 ieee80211_rate_control_register +EXPORT_SYMBOL net/mac80211/mac80211 0x4c1d3b86 ieee80211_free_txskb +EXPORT_SYMBOL net/mac80211/mac80211 0x4cab21e6 ieee80211_disable_rssi_reports +EXPORT_SYMBOL net/mac80211/mac80211 0x4d42e3de ieee80211_rx_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0x5900d276 ieee80211_stop_queue +EXPORT_SYMBOL net/mac80211/mac80211 0x59cb1d2a ieee80211_csa_is_complete +EXPORT_SYMBOL net/mac80211/mac80211 0x5fdc0533 ieee80211_tx_status_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0x6338e33e rate_control_send_low +EXPORT_SYMBOL net/mac80211/mac80211 0x661e46fe ieee80211_cqm_beacon_loss_notify +EXPORT_SYMBOL net/mac80211/mac80211 0x69de096c ieee80211_get_tkip_rx_p1k +EXPORT_SYMBOL net/mac80211/mac80211 0x6e734365 ieee80211_report_low_ack +EXPORT_SYMBOL net/mac80211/mac80211 0x6f1ed399 __ieee80211_get_tx_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0x6f78fa21 ieee80211_reserve_tid +EXPORT_SYMBOL net/mac80211/mac80211 0x7000ce74 ieee80211_unreserve_tid +EXPORT_SYMBOL net/mac80211/mac80211 0x760c9fa0 ieee80211_ctstoself_duration +EXPORT_SYMBOL net/mac80211/mac80211 0x7629e9ad ieee80211_generic_frame_duration +EXPORT_SYMBOL net/mac80211/mac80211 0x76b9ef28 ieee80211_get_key_rx_seq +EXPORT_SYMBOL net/mac80211/mac80211 0x777df2e2 ieee80211_beacon_loss +EXPORT_SYMBOL net/mac80211/mac80211 0x77ea65c4 ieee80211_update_p2p_noa +EXPORT_SYMBOL net/mac80211/mac80211 0x7d9d9746 ieee80211_tx_status_noskb +EXPORT_SYMBOL net/mac80211/mac80211 0x7f06132d ieee80211_stop_tx_ba_cb_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0x7f39a067 ieee80211_rts_get +EXPORT_SYMBOL net/mac80211/mac80211 0x886b8bc0 ieee80211_chswitch_done +EXPORT_SYMBOL net/mac80211/mac80211 0x91bdb9a7 ieee80211_stop_rx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0x92d45903 ieee80211_wake_queue +EXPORT_SYMBOL net/mac80211/mac80211 0x92d6fcea ieee80211_queue_delayed_work +EXPORT_SYMBOL net/mac80211/mac80211 0x93b94bba ieee80211_radar_detected +EXPORT_SYMBOL net/mac80211/mac80211 0x951dbf52 ieee80211_sta_ps_transition +EXPORT_SYMBOL net/mac80211/mac80211 0x9a04aa48 ieee80211_csa_finish +EXPORT_SYMBOL net/mac80211/mac80211 0xa05c9567 ieee80211_rx +EXPORT_SYMBOL net/mac80211/mac80211 0xa08c347e ieee80211_start_rx_ba_session_offl +EXPORT_SYMBOL net/mac80211/mac80211 0xa40c86a0 ieee80211_iter_keys +EXPORT_SYMBOL net/mac80211/mac80211 0xa705f411 ieee80211_connection_loss +EXPORT_SYMBOL net/mac80211/mac80211 0xa9c5a6f8 ieee80211_start_tx_ba_cb_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0xa9e9aaa3 ieee80211_sched_scan_results +EXPORT_SYMBOL net/mac80211/mac80211 0xae4a0eef ieee80211_cqm_rssi_notify +EXPORT_SYMBOL net/mac80211/mac80211 0xb107c6df ieee80211_stop_queues +EXPORT_SYMBOL net/mac80211/mac80211 0xb1aaef91 ieee80211_get_key_tx_seq +EXPORT_SYMBOL net/mac80211/mac80211 0xb2862022 ieee80211_sta_eosp +EXPORT_SYMBOL net/mac80211/mac80211 0xb31ee0bc ieee80211_free_hw +EXPORT_SYMBOL net/mac80211/mac80211 0xb4ef2cce ieee80211_probereq_get +EXPORT_SYMBOL net/mac80211/mac80211 0xb93b7462 ieee80211_queue_work +EXPORT_SYMBOL net/mac80211/mac80211 0xbce9e8fc ieee80211_get_tx_rates +EXPORT_SYMBOL net/mac80211/mac80211 0xbd92dbbe ieee80211_stop_tx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0xbf5b1b75 ieee80211_csa_update_counter +EXPORT_SYMBOL net/mac80211/mac80211 0xbfb1337c ieee80211_sta_block_awake +EXPORT_SYMBOL net/mac80211/mac80211 0xc6d6df93 __ieee80211_get_rx_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0xc85a6d1a ieee80211_get_buffered_bc +EXPORT_SYMBOL net/mac80211/mac80211 0xd72625cb ieee80211_parse_p2p_noa +EXPORT_SYMBOL net/mac80211/mac80211 0xd79d0e54 ieee80211_ctstoself_get +EXPORT_SYMBOL net/mac80211/mac80211 0xd99dcc4a ieee80211_rts_duration +EXPORT_SYMBOL net/mac80211/mac80211 0xda24bbc1 ieee80211_queue_stopped +EXPORT_SYMBOL net/mac80211/mac80211 0xde672a49 ieee80211_tx_status +EXPORT_SYMBOL net/mac80211/mac80211 0xde8f641a ieee80211_wake_queues +EXPORT_SYMBOL net/mac80211/mac80211 0xdf228074 ieee80211_get_tkip_p2k +EXPORT_SYMBOL net/mac80211/mac80211 0xdf2bff26 rate_control_set_rates +EXPORT_SYMBOL net/mac80211/mac80211 0xdfccaca5 ieee80211_tx_dequeue +EXPORT_SYMBOL net/mac80211/mac80211 0xe08df929 ieee80211_nullfunc_get +EXPORT_SYMBOL net/mac80211/mac80211 0xe40cf4e6 ieee80211_enable_rssi_reports +EXPORT_SYMBOL net/mac80211/mac80211 0xe4f15962 ieee80211_ap_probereq_get +EXPORT_SYMBOL net/mac80211/mac80211 0xe75d348b ieee80211_beacon_get_template +EXPORT_SYMBOL net/mac80211/mac80211 0xe7c894e4 ieee80211_stop_rx_ba_session_offl +EXPORT_SYMBOL net/mac80211/mac80211 0xe99e7cbb __ieee80211_get_radio_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0xf0423464 ieee80211_sta_set_buffered +EXPORT_SYMBOL net/mac80211/mac80211 0xf17880fd ieee80211_sched_scan_stopped +EXPORT_SYMBOL net/mac80211/mac80211 0xf2009533 ieee80211_tx_prepare_skb +EXPORT_SYMBOL net/mac80211/mac80211 0xfeec2233 ieee80211_tdls_oper_request +EXPORT_SYMBOL net/mac802154/mac802154 0x000aa62e ieee802154_stop_queue +EXPORT_SYMBOL net/mac802154/mac802154 0x06f84954 ieee802154_free_hw +EXPORT_SYMBOL net/mac802154/mac802154 0x0ced0cfe ieee802154_alloc_hw +EXPORT_SYMBOL net/mac802154/mac802154 0x592a112b ieee802154_rx +EXPORT_SYMBOL net/mac802154/mac802154 0xaf43a1df ieee802154_rx_irqsafe +EXPORT_SYMBOL net/mac802154/mac802154 0xb71bf7f2 ieee802154_wake_queue +EXPORT_SYMBOL net/mac802154/mac802154 0xc2011eeb ieee802154_xmit_complete +EXPORT_SYMBOL net/mac802154/mac802154 0xd642ab0a ieee802154_unregister_hw +EXPORT_SYMBOL net/mac802154/mac802154 0xe44b9342 ieee802154_register_hw +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x0f4ff365 ip_vs_conn_in_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x1d7116ee ip_vs_conn_out_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x4676f061 ip_vs_proto_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x4e40ac8c register_ip_vs_app_inc +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x5135aa18 register_ip_vs_scheduler +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x5d797b87 ip_vs_conn_new +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x611df8e1 ip_vs_conn_put +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x6c0da901 ip_vs_proto_data_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x8afdcf78 ip_vs_scheduler_err +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x92b800ee unregister_ip_vs_app +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xa20c1e50 unregister_ip_vs_scheduler +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xcaeecc01 register_ip_vs_app +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xd831a1a2 ip_vs_proto_name +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xdd408eb1 ip_vs_nfct_expect_related +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xf4c72b0d ip_vs_tcp_conn_listen +EXPORT_SYMBOL net/netfilter/nf_conntrack 0x9a9fa18b nf_conntrack_untracked +EXPORT_SYMBOL net/netfilter/nf_conntrack 0xa4f5f1a5 __nf_ct_ext_add_length +EXPORT_SYMBOL net/netfilter/nf_conntrack 0xb8eb9081 __nf_ct_ext_destroy +EXPORT_SYMBOL net/netfilter/nf_conntrack_pptp 0x827cc6a1 pptp_msg_name +EXPORT_SYMBOL net/netfilter/nf_nat 0x36791995 __nf_nat_mangle_tcp_packet +EXPORT_SYMBOL net/netfilter/nf_nat 0x4781b559 nf_nat_mangle_udp_packet +EXPORT_SYMBOL net/netfilter/nf_nat 0x5b2497ae nf_nat_used_tuple +EXPORT_SYMBOL net/netfilter/nf_nat 0x79d267bc nf_nat_setup_info +EXPORT_SYMBOL net/netfilter/nf_nat 0x810e1f05 nf_xfrm_me_harder +EXPORT_SYMBOL net/netfilter/nf_nat 0x95bed1e6 nf_nat_follow_master +EXPORT_SYMBOL net/netfilter/x_tables 0x225511ec xt_unregister_match +EXPORT_SYMBOL net/netfilter/x_tables 0x24e08a86 xt_register_target +EXPORT_SYMBOL net/netfilter/x_tables 0x3a3f64dc xt_register_match +EXPORT_SYMBOL net/netfilter/x_tables 0x482d26fd xt_alloc_table_info +EXPORT_SYMBOL net/netfilter/x_tables 0x52ba60f4 xt_register_targets +EXPORT_SYMBOL net/netfilter/x_tables 0x68a1cfc3 xt_register_matches +EXPORT_SYMBOL net/netfilter/x_tables 0x84b610e4 xt_unregister_matches +EXPORT_SYMBOL net/netfilter/x_tables 0xc54166f5 xt_find_target +EXPORT_SYMBOL net/netfilter/x_tables 0xd1a21986 xt_free_table_info +EXPORT_SYMBOL net/netfilter/x_tables 0xdbc921ac xt_unregister_target +EXPORT_SYMBOL net/netfilter/x_tables 0xea524c95 xt_find_match +EXPORT_SYMBOL net/netfilter/x_tables 0xf75cc240 xt_unregister_targets +EXPORT_SYMBOL net/nfc/hci/hci 0x2a2c82ca nfc_hci_reset_pipes +EXPORT_SYMBOL net/nfc/hci/hci 0x2ac969c8 nfc_hci_reset_pipes_per_host +EXPORT_SYMBOL net/nfc/hci/hci 0x37ca6eea nfc_hci_driver_failure +EXPORT_SYMBOL net/nfc/hci/hci 0x43028a27 nfc_hci_result_to_errno +EXPORT_SYMBOL net/nfc/hci/hci 0x43ef68b4 nfc_hci_connect_gate +EXPORT_SYMBOL net/nfc/hci/hci 0x4a3955c5 nfc_hci_target_discovered +EXPORT_SYMBOL net/nfc/hci/hci 0x52a2f3de nfc_hci_send_cmd_async +EXPORT_SYMBOL net/nfc/hci/hci 0x57a1c74e nfc_hci_send_cmd +EXPORT_SYMBOL net/nfc/hci/hci 0x58f10767 nfc_hci_register_device +EXPORT_SYMBOL net/nfc/hci/hci 0x5daec01f nfc_hci_recv_frame +EXPORT_SYMBOL net/nfc/hci/hci 0x66489d7a nfc_hci_set_clientdata +EXPORT_SYMBOL net/nfc/hci/hci 0x8407c01f nfc_hci_disconnect_all_gates +EXPORT_SYMBOL net/nfc/hci/hci 0x97a671a4 nfc_hci_send_event +EXPORT_SYMBOL net/nfc/hci/hci 0xa556817d nfc_hci_unregister_device +EXPORT_SYMBOL net/nfc/hci/hci 0xa5976a90 nfc_hci_get_param +EXPORT_SYMBOL net/nfc/hci/hci 0xb2684071 nfc_hci_set_param +EXPORT_SYMBOL net/nfc/hci/hci 0xb6ac615a nfc_hci_get_clientdata +EXPORT_SYMBOL net/nfc/hci/hci 0xbca0b4fd nfc_hci_sak_to_protocol +EXPORT_SYMBOL net/nfc/hci/hci 0xc0c5f992 nfc_hci_disconnect_gate +EXPORT_SYMBOL net/nfc/hci/hci 0xdc262372 nfc_hci_allocate_device +EXPORT_SYMBOL net/nfc/hci/hci 0xdda1e2f0 nfc_hci_free_device +EXPORT_SYMBOL net/nfc/nci/nci 0x11a52e26 nci_core_conn_create +EXPORT_SYMBOL net/nfc/nci/nci 0x20994d52 nci_hci_open_pipe +EXPORT_SYMBOL net/nfc/nci/nci 0x25543d8a nci_hci_set_param +EXPORT_SYMBOL net/nfc/nci/nci 0x268d2866 nci_free_device +EXPORT_SYMBOL net/nfc/nci/nci 0x3a984a6a nci_register_device +EXPORT_SYMBOL net/nfc/nci/nci 0x66cc0e4b nci_hci_dev_session_init +EXPORT_SYMBOL net/nfc/nci/nci 0x6aee1249 nci_recv_frame +EXPORT_SYMBOL net/nfc/nci/nci 0x70f93c25 nci_hci_connect_gate +EXPORT_SYMBOL net/nfc/nci/nci 0x9c04c141 nci_nfcee_mode_set +EXPORT_SYMBOL net/nfc/nci/nci 0xa81d6f65 nci_nfcee_discover +EXPORT_SYMBOL net/nfc/nci/nci 0xa91d6956 nci_hci_get_param +EXPORT_SYMBOL net/nfc/nci/nci 0xb738b9bf nci_set_config +EXPORT_SYMBOL net/nfc/nci/nci 0xba490602 nci_to_errno +EXPORT_SYMBOL net/nfc/nci/nci 0xc0a09167 nci_req_complete +EXPORT_SYMBOL net/nfc/nci/nci 0xc5ac8ddf nci_allocate_device +EXPORT_SYMBOL net/nfc/nci/nci 0xc94fa1e0 nci_unregister_device +EXPORT_SYMBOL net/nfc/nci/nci 0xcaa17473 nci_prop_cmd +EXPORT_SYMBOL net/nfc/nci/nci 0xec1a30b8 nci_hci_send_cmd +EXPORT_SYMBOL net/nfc/nci/nci 0xf133c1b6 nci_hci_send_event +EXPORT_SYMBOL net/nfc/nci/nci 0xf64aa9c3 nci_core_conn_close +EXPORT_SYMBOL net/nfc/nfc 0x01170c6a nfc_add_se +EXPORT_SYMBOL net/nfc/nfc 0x0c78327e nfc_proto_register +EXPORT_SYMBOL net/nfc/nfc 0x303a358c nfc_send_to_raw_sock +EXPORT_SYMBOL net/nfc/nfc 0x421baeb0 nfc_remove_se +EXPORT_SYMBOL net/nfc/nfc 0x553dc4c3 nfc_allocate_device +EXPORT_SYMBOL net/nfc/nfc 0x5ceebb2c nfc_tm_activated +EXPORT_SYMBOL net/nfc/nfc 0x6d4c3e74 nfc_tm_data_received +EXPORT_SYMBOL net/nfc/nfc 0x7875fb20 nfc_class +EXPORT_SYMBOL net/nfc/nfc 0x7de97d51 nfc_proto_unregister +EXPORT_SYMBOL net/nfc/nfc 0x80e8ab2d nfc_fw_download_done +EXPORT_SYMBOL net/nfc/nfc 0x8308084e nfc_se_transaction +EXPORT_SYMBOL net/nfc/nfc 0x86f96b82 nfc_register_device +EXPORT_SYMBOL net/nfc/nfc 0x9f3cccd8 nfc_get_local_general_bytes +EXPORT_SYMBOL net/nfc/nfc 0xa01cced6 nfc_tm_deactivated +EXPORT_SYMBOL net/nfc/nfc 0xa2746d14 nfc_set_remote_general_bytes +EXPORT_SYMBOL net/nfc/nfc 0xad2105b1 nfc_alloc_recv_skb +EXPORT_SYMBOL net/nfc/nfc 0xae1329f4 nfc_find_se +EXPORT_SYMBOL net/nfc/nfc 0xb4bf45dd nfc_targets_found +EXPORT_SYMBOL net/nfc/nfc 0xb6bb24bc nfc_driver_failure +EXPORT_SYMBOL net/nfc/nfc 0xb83834e8 nfc_target_lost +EXPORT_SYMBOL net/nfc/nfc 0xbdc1aefc nfc_dep_link_is_up +EXPORT_SYMBOL net/nfc/nfc 0xbe59a55e nfc_unregister_device +EXPORT_SYMBOL net/nfc/nfc_digital 0x322421dd nfc_digital_free_device +EXPORT_SYMBOL net/nfc/nfc_digital 0x43219e55 nfc_digital_register_device +EXPORT_SYMBOL net/nfc/nfc_digital 0x86e39f6f nfc_digital_allocate_device +EXPORT_SYMBOL net/nfc/nfc_digital 0xb6528b9f nfc_digital_unregister_device +EXPORT_SYMBOL net/phonet/phonet 0x00ae7f5e phonet_proto_register +EXPORT_SYMBOL net/phonet/phonet 0x1d14b419 phonet_stream_ops +EXPORT_SYMBOL net/phonet/phonet 0x373ab7a2 pn_sock_unhash +EXPORT_SYMBOL net/phonet/phonet 0x3cd6c1fe pn_skb_send +EXPORT_SYMBOL net/phonet/phonet 0x532eac00 phonet_proto_unregister +EXPORT_SYMBOL net/phonet/phonet 0xc5d2e21f pn_sock_hash +EXPORT_SYMBOL net/phonet/phonet 0xc975d17e pn_sock_get_port +EXPORT_SYMBOL net/phonet/phonet 0xf5fa8498 phonet_header_ops +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x01dd1a46 rxrpc_kernel_end_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x438242a1 rxrpc_get_server_data_key +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x4aff8d8c rxrpc_kernel_begin_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x4e828a3d rxrpc_kernel_is_data_last +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x772da70a rxrpc_kernel_reject_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x8f8496f7 rxrpc_kernel_data_delivered +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x908d9bdd rxrpc_kernel_get_abort_code +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x93efedef rxrpc_kernel_send_data +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xab01cfd3 rxrpc_kernel_accept_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xc0b8d8b0 rxrpc_kernel_abort_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xc7eda101 rxrpc_get_null_key +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xd03c5362 key_type_rxrpc +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xdb303ee2 rxrpc_kernel_get_error_number +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xddadefae rxrpc_kernel_intercept_rx_messages +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xf13e7665 rxrpc_kernel_free_skb +EXPORT_SYMBOL net/sctp/sctp 0x534d8226 sctp_do_peeloff +EXPORT_SYMBOL net/sunrpc/auth_gss/auth_rpcgss 0x374dd246 gss_mech_put +EXPORT_SYMBOL net/sunrpc/auth_gss/auth_rpcgss 0xec789ed0 gss_mech_get +EXPORT_SYMBOL net/sunrpc/auth_gss/auth_rpcgss 0xf0013aca gss_pseudoflavor_to_service +EXPORT_SYMBOL net/sunrpc/sunrpc 0x85d28d2b xdr_truncate_encode +EXPORT_SYMBOL net/sunrpc/sunrpc 0xc57b1c7d xdr_restrict_buflen +EXPORT_SYMBOL net/sunrpc/sunrpc 0xcaa35913 svc_pool_stats_open +EXPORT_SYMBOL net/wimax/wimax 0x0dd78909 wimax_rfkill +EXPORT_SYMBOL net/wimax/wimax 0x1810c31d wimax_reset +EXPORT_SYMBOL net/wireless/cfg80211 0x02a47e57 cfg80211_sched_scan_stopped_rtnl +EXPORT_SYMBOL net/wireless/cfg80211 0x0628c32d wiphy_register +EXPORT_SYMBOL net/wireless/cfg80211 0x087a99a5 cfg80211_rx_mlme_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0x09c64fbd ieee80211_frequency_to_channel +EXPORT_SYMBOL net/wireless/cfg80211 0x09fc0638 ieee80211_data_from_8023 +EXPORT_SYMBOL net/wireless/cfg80211 0x0be077fd wiphy_apply_custom_regulatory +EXPORT_SYMBOL net/wireless/cfg80211 0x0c9d3199 cfg80211_sched_scan_stopped +EXPORT_SYMBOL net/wireless/cfg80211 0x0d2eea57 wiphy_free +EXPORT_SYMBOL net/wireless/cfg80211 0x10b4ce94 cfg80211_notify_new_peer_candidate +EXPORT_SYMBOL net/wireless/cfg80211 0x120578d3 freq_reg_info +EXPORT_SYMBOL net/wireless/cfg80211 0x1879fcbd bridge_tunnel_header +EXPORT_SYMBOL net/wireless/cfg80211 0x196e8637 ieee80211_get_hdrlen_from_skb +EXPORT_SYMBOL net/wireless/cfg80211 0x197ed88c cfg80211_cqm_txe_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x19e03378 cfg80211_get_p2p_attr +EXPORT_SYMBOL net/wireless/cfg80211 0x1a16c78c __cfg80211_alloc_event_skb +EXPORT_SYMBOL net/wireless/cfg80211 0x1aa9fdc6 wiphy_rfkill_stop_polling +EXPORT_SYMBOL net/wireless/cfg80211 0x1cc5c1d0 cfg80211_reg_can_beacon_relax +EXPORT_SYMBOL net/wireless/cfg80211 0x1ef0fd79 cfg80211_cqm_rssi_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x1f3de5b6 cfg80211_check_station_change +EXPORT_SYMBOL net/wireless/cfg80211 0x215eae7f cfg80211_chandef_dfs_required +EXPORT_SYMBOL net/wireless/cfg80211 0x2208bdaa wiphy_new_nm +EXPORT_SYMBOL net/wireless/cfg80211 0x2261c863 cfg80211_check_combinations +EXPORT_SYMBOL net/wireless/cfg80211 0x2692240c cfg80211_roamed +EXPORT_SYMBOL net/wireless/cfg80211 0x34a62abd cfg80211_radar_event +EXPORT_SYMBOL net/wireless/cfg80211 0x36bf6c0c ieee80211_get_num_supported_channels +EXPORT_SYMBOL net/wireless/cfg80211 0x3764e78a cfg80211_roamed_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x394a44d9 wiphy_rfkill_start_polling +EXPORT_SYMBOL net/wireless/cfg80211 0x3d470c4d cfg80211_chandef_compatible +EXPORT_SYMBOL net/wireless/cfg80211 0x3e0550b6 wiphy_unregister +EXPORT_SYMBOL net/wireless/cfg80211 0x3e285fec cfg80211_chandef_valid +EXPORT_SYMBOL net/wireless/cfg80211 0x41a5303c cfg80211_cqm_pktloss_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x44bdbb66 regulatory_set_wiphy_regd_sync_rtnl +EXPORT_SYMBOL net/wireless/cfg80211 0x4797146c cfg80211_new_sta +EXPORT_SYMBOL net/wireless/cfg80211 0x47a0ce2f cfg80211_get_station +EXPORT_SYMBOL net/wireless/cfg80211 0x47f08a28 cfg80211_crit_proto_stopped +EXPORT_SYMBOL net/wireless/cfg80211 0x495457ff cfg80211_calculate_bitrate +EXPORT_SYMBOL net/wireless/cfg80211 0x4ba75c7d cfg80211_tdls_oper_request +EXPORT_SYMBOL net/wireless/cfg80211 0x4d77806e cfg80211_rx_assoc_resp +EXPORT_SYMBOL net/wireless/cfg80211 0x4ec81df5 cfg80211_connect_result +EXPORT_SYMBOL net/wireless/cfg80211 0x50214c28 ieee80211_bss_get_ie +EXPORT_SYMBOL net/wireless/cfg80211 0x56f0e9cd cfg80211_classify8021d +EXPORT_SYMBOL net/wireless/cfg80211 0x5742367a cfg80211_del_sta_sinfo +EXPORT_SYMBOL net/wireless/cfg80211 0x581ee08d cfg80211_ft_event +EXPORT_SYMBOL net/wireless/cfg80211 0x58b8d5e7 cfg80211_pmksa_candidate_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x58c1f467 cfg80211_cqm_beacon_loss_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x5a79adef cfg80211_conn_failed +EXPORT_SYMBOL net/wireless/cfg80211 0x5ac8489d __ieee80211_get_channel +EXPORT_SYMBOL net/wireless/cfg80211 0x5b2b30dc cfg80211_ready_on_channel +EXPORT_SYMBOL net/wireless/cfg80211 0x5c2d089b cfg80211_put_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x5c9b3a3d ieee80211_amsdu_to_8023s +EXPORT_SYMBOL net/wireless/cfg80211 0x69b18f43 rfc1042_header +EXPORT_SYMBOL net/wireless/cfg80211 0x6d6cb9ad ieee80211_operating_class_to_band +EXPORT_SYMBOL net/wireless/cfg80211 0x6e8f25df cfg80211_auth_timeout +EXPORT_SYMBOL net/wireless/cfg80211 0x711964ec __cfg80211_send_event_skb +EXPORT_SYMBOL net/wireless/cfg80211 0x7ef39823 ieee80211_hdrlen +EXPORT_SYMBOL net/wireless/cfg80211 0x7f3bdc5f cfg80211_michael_mic_failure +EXPORT_SYMBOL net/wireless/cfg80211 0x7fe1a403 cfg80211_find_ie +EXPORT_SYMBOL net/wireless/cfg80211 0x81919cfc cfg80211_rx_unexpected_4addr_frame +EXPORT_SYMBOL net/wireless/cfg80211 0x835d74a1 cfg80211_get_drvinfo +EXPORT_SYMBOL net/wireless/cfg80211 0x8492a430 ieee80211_get_response_rate +EXPORT_SYMBOL net/wireless/cfg80211 0x85adfc4c cfg80211_ibss_joined +EXPORT_SYMBOL net/wireless/cfg80211 0x8759ac44 cfg80211_ch_switch_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x8a7062a5 ieee80211_mandatory_rates +EXPORT_SYMBOL net/wireless/cfg80211 0x93c15e1c cfg80211_rx_spurious_frame +EXPORT_SYMBOL net/wireless/cfg80211 0x9479ceb0 regulatory_set_wiphy_regd +EXPORT_SYMBOL net/wireless/cfg80211 0x966ff54d ieee80211_ie_split_ric +EXPORT_SYMBOL net/wireless/cfg80211 0x982e6b6d ieee80211_radiotap_iterator_init +EXPORT_SYMBOL net/wireless/cfg80211 0xa1425906 ieee80211_channel_to_frequency +EXPORT_SYMBOL net/wireless/cfg80211 0xa197b1ff ieee80211_get_mesh_hdrlen +EXPORT_SYMBOL net/wireless/cfg80211 0xa5792379 ieee80211_data_to_8023 +EXPORT_SYMBOL net/wireless/cfg80211 0xa95635a8 cfg80211_gtk_rekey_notify +EXPORT_SYMBOL net/wireless/cfg80211 0xa986f1f6 cfg80211_unregister_wdev +EXPORT_SYMBOL net/wireless/cfg80211 0xadda7732 cfg80211_rx_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0xaddbbf1e cfg80211_remain_on_channel_expired +EXPORT_SYMBOL net/wireless/cfg80211 0xb542a4c8 cfg80211_cac_event +EXPORT_SYMBOL net/wireless/cfg80211 0xb5cb44aa cfg80211_iter_combinations +EXPORT_SYMBOL net/wireless/cfg80211 0xba57e162 cfg80211_scan_done +EXPORT_SYMBOL net/wireless/cfg80211 0xc63f1b81 ieee80211_radiotap_iterator_next +EXPORT_SYMBOL net/wireless/cfg80211 0xc67050b9 cfg80211_assoc_timeout +EXPORT_SYMBOL net/wireless/cfg80211 0xc90fde22 ieee80211_chandef_to_operating_class +EXPORT_SYMBOL net/wireless/cfg80211 0xc974b26f cfg80211_sched_scan_results +EXPORT_SYMBOL net/wireless/cfg80211 0xca1be05d cfg80211_reg_can_beacon +EXPORT_SYMBOL net/wireless/cfg80211 0xd5e7136d cfg80211_ch_switch_started_notify +EXPORT_SYMBOL net/wireless/cfg80211 0xd7d8c3dd wiphy_rfkill_set_hw_state +EXPORT_SYMBOL net/wireless/cfg80211 0xdba126c1 reg_initiator_name +EXPORT_SYMBOL net/wireless/cfg80211 0xdca12487 cfg80211_disconnected +EXPORT_SYMBOL net/wireless/cfg80211 0xdfb5a85f cfg80211_inform_bss_width_frame +EXPORT_SYMBOL net/wireless/cfg80211 0xe09c74c7 cfg80211_unlink_bss +EXPORT_SYMBOL net/wireless/cfg80211 0xe2b567ef regulatory_hint +EXPORT_SYMBOL net/wireless/cfg80211 0xe30ebe66 cfg80211_inform_bss_width +EXPORT_SYMBOL net/wireless/cfg80211 0xe42dc75a cfg80211_probe_status +EXPORT_SYMBOL net/wireless/cfg80211 0xe8a4fb25 cfg80211_get_bss +EXPORT_SYMBOL net/wireless/cfg80211 0xeb33ebde cfg80211_report_obss_beacon +EXPORT_SYMBOL net/wireless/cfg80211 0xeb6d7c6c ieee80211_ie_split +EXPORT_SYMBOL net/wireless/cfg80211 0xec49917e cfg80211_mgmt_tx_status +EXPORT_SYMBOL net/wireless/cfg80211 0xec5723ea cfg80211_stop_iface +EXPORT_SYMBOL net/wireless/cfg80211 0xefc56354 cfg80211_chandef_create +EXPORT_SYMBOL net/wireless/cfg80211 0xf1193c0a cfg80211_tx_mlme_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0xf175c8a4 cfg80211_ref_bss +EXPORT_SYMBOL net/wireless/cfg80211 0xf447eb9b cfg80211_report_wowlan_wakeup +EXPORT_SYMBOL net/wireless/cfg80211 0xf4af9e01 __cfg80211_alloc_reply_skb +EXPORT_SYMBOL net/wireless/cfg80211 0xf9449daf cfg80211_rx_unprot_mlme_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0xfac74740 cfg80211_chandef_usable +EXPORT_SYMBOL net/wireless/cfg80211 0xfed4d591 cfg80211_find_vendor_ie +EXPORT_SYMBOL net/wireless/lib80211 0x0fd7aaad lib80211_crypt_delayed_deinit +EXPORT_SYMBOL net/wireless/lib80211 0x24795fea lib80211_crypt_info_free +EXPORT_SYMBOL net/wireless/lib80211 0x61ad7e95 lib80211_register_crypto_ops +EXPORT_SYMBOL net/wireless/lib80211 0x79df333a lib80211_unregister_crypto_ops +EXPORT_SYMBOL net/wireless/lib80211 0xaec09980 lib80211_crypt_info_init +EXPORT_SYMBOL net/wireless/lib80211 0xb55f188f lib80211_get_crypto_ops +EXPORT_SYMBOL sound/core/oss/snd-mixer-oss 0x75144bf1 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 0x2eb75ac0 snd_seq_event_port_attach +EXPORT_SYMBOL sound/core/seq/snd-seq 0x3061c52d snd_use_lock_sync_helper +EXPORT_SYMBOL sound/core/seq/snd-seq 0x307e1bef snd_seq_kernel_client_write_poll +EXPORT_SYMBOL sound/core/seq/snd-seq 0x3fb4d161 snd_seq_kernel_client_dispatch +EXPORT_SYMBOL sound/core/seq/snd-seq 0x44be6620 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 0xcac0a3be snd_seq_kernel_client_enqueue +EXPORT_SYMBOL sound/core/seq/snd-seq 0xd3970c5c snd_seq_kernel_client_enqueue_blocking +EXPORT_SYMBOL sound/core/seq/snd-seq 0xe934da1d snd_seq_dump_var_event +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0x091def1c snd_seq_autoload_exit +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0x370a0736 snd_seq_autoload_init +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0x6339b6d0 snd_seq_device_load_drivers +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0xda3f0e8f snd_seq_device_new +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 0xf0a1fdb3 snd_midi_process_event +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x127b30fb snd_midi_event_encode +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x1cdc0812 snd_midi_event_decode +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x59eb74ae snd_midi_event_encode_byte +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x8102ed2f snd_midi_event_reset_encode +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0xb11ba32d snd_midi_event_new +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0xb2c7f684 snd_midi_event_reset_decode +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0xea0e5748 snd_midi_event_free +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0xed42580b snd_midi_event_no_status +EXPORT_SYMBOL sound/core/seq/snd-seq-virmidi 0x7ccfb54e snd_virmidi_new +EXPORT_SYMBOL sound/core/snd-hwdep 0xaebc3365 snd_hwdep_new +EXPORT_SYMBOL sound/core/snd-rawmidi 0x0726ab55 snd_rawmidi_drop_output +EXPORT_SYMBOL sound/core/snd-rawmidi 0x240194cc snd_rawmidi_receive +EXPORT_SYMBOL sound/core/snd-rawmidi 0x2b6d1e5c snd_rawmidi_set_ops +EXPORT_SYMBOL sound/core/snd-rawmidi 0x4e5a1a76 snd_rawmidi_transmit_empty +EXPORT_SYMBOL sound/core/snd-rawmidi 0x5d93443e snd_rawmidi_info_select +EXPORT_SYMBOL sound/core/snd-rawmidi 0x8183cbe0 snd_rawmidi_kernel_read +EXPORT_SYMBOL sound/core/snd-rawmidi 0x873a842f snd_rawmidi_kernel_open +EXPORT_SYMBOL sound/core/snd-rawmidi 0x89efe1b0 snd_rawmidi_new +EXPORT_SYMBOL sound/core/snd-rawmidi 0x9fb4fe33 snd_rawmidi_kernel_write +EXPORT_SYMBOL sound/core/snd-rawmidi 0xa428b418 snd_rawmidi_output_params +EXPORT_SYMBOL sound/core/snd-rawmidi 0xb15545a1 snd_rawmidi_transmit_ack +EXPORT_SYMBOL sound/core/snd-rawmidi 0xbd7a206e snd_rawmidi_input_params +EXPORT_SYMBOL sound/core/snd-rawmidi 0xc748fb95 snd_rawmidi_drain_input +EXPORT_SYMBOL sound/core/snd-rawmidi 0xce428520 snd_rawmidi_transmit_peek +EXPORT_SYMBOL sound/core/snd-rawmidi 0xd435b42a snd_rawmidi_transmit +EXPORT_SYMBOL sound/core/snd-rawmidi 0xf134d889 snd_rawmidi_kernel_release +EXPORT_SYMBOL sound/core/snd-rawmidi 0xfe93fd0f snd_rawmidi_drain_output +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 0xe0ddefd7 snd_mpu401_uart_new +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x05060a19 snd_opl3_regmap +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x0aa76c6d snd_opl3_new +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x12a75a89 snd_opl3_create +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x14cdf265 snd_opl3_timer_new +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x50739f0b snd_opl3_load_patch +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x57fa5eb0 snd_opl3_find_patch +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x635a8e37 snd_opl3_init +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x832848f7 snd_opl3_hwdep_new +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xa99fbad9 snd_opl3_interrupt +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xdc82428a snd_opl3_reset +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x0aa2ea4e 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 0x24513a6e snd_vx_dsp_load +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x2b5d4c0c snd_vx_suspend +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x3b180992 snd_vx_load_boot_image +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x5352c7cd snd_vx_check_reg_bit +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x7d852186 snd_vx_resume +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xbc33b303 snd_vx_free_firmware +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xbfd656aa snd_vx_dsp_boot +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xf1f04d23 snd_vx_irq_handler +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xf7c1c66f snd_vx_create +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x04e15f13 amdtp_stream_update +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x0b221f4e cmp_connection_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x0f65381b amdtp_stream_add_pcm_hw_constraints +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x16a86a3f snd_fw_transaction +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x20254e45 amdtp_syt_intervals +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x2c787ce6 iso_packets_buffer_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x2d862440 avc_general_get_plug_info +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x3381c8e9 amdtp_stream_pcm_pointer +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x3a753f9d amdtp_stream_pcm_prepare +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x3a82d450 cmp_connection_check_used +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x3ef6ec06 cmp_connection_update +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x45cdbe0b fcp_avc_transaction +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x53ca18e8 amdtp_rate_table +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x5474da7c amdtp_stream_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x55810631 fw_iso_resources_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x59b28017 iso_packets_buffer_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x5c47602c fw_iso_resources_update +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x5cdd1e15 cmp_connection_establish +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x60e194b6 amdtp_stream_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x729d5799 fcp_bus_reset +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x8264b16d amdtp_stream_get_max_payload +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x9679a900 fw_iso_resources_free +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xa92ae161 avc_general_get_sig_fmt +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xac23939a cmp_connection_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xb0f9d7b7 amdtp_stream_pcm_abort +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xc2ed67d2 cmp_connection_break +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xc4020c77 amdtp_stream_set_pcm_format +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xc5c5b5a0 fw_iso_resources_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xc887bed3 avc_general_set_sig_fmt +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xcc6f7dee amdtp_stream_start +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xcfdda983 fw_iso_resources_allocate +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xd09a4e54 amdtp_stream_stop +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xd98ae9df amdtp_stream_set_parameters +EXPORT_SYMBOL sound/i2c/other/snd-ak4113 0x77814e29 snd_ak4113_resume +EXPORT_SYMBOL sound/i2c/other/snd-ak4113 0xc80ba723 snd_ak4113_suspend +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x098fa326 snd_ak4114_create +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x3f5231f7 snd_ak4114_resume +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x485a2b79 snd_ak4114_reinit +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x7dd4ebd2 snd_ak4114_suspend +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0xbd3ef990 snd_ak4114_reg_write +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0xce99985d snd_ak4114_build +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0xdeaec2aa snd_ak4114_check_rate_and_errors +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0xeb9b77d4 snd_ak4114_external_rate +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0x9957cd72 snd_akm4xxx_build_controls +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0xa206c9df snd_akm4xxx_write +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0xcae4f188 snd_akm4xxx_init +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0xd5c9daa5 snd_akm4xxx_reset +EXPORT_SYMBOL sound/i2c/other/snd-pt2258 0x9d4e84e1 snd_pt2258_build_controls +EXPORT_SYMBOL sound/i2c/other/snd-pt2258 0xccca38f8 snd_pt2258_reset +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x30232655 snd_cs8427_create +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x4260d774 snd_cs8427_init +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x5bd52cee snd_cs8427_iec958_pcm +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x75a01be5 snd_cs8427_iec958_build +EXPORT_SYMBOL sound/i2c/snd-cs8427 0xa14b5948 snd_cs8427_iec958_active +EXPORT_SYMBOL sound/i2c/snd-cs8427 0xa2032631 snd_cs8427_reg_write +EXPORT_SYMBOL sound/i2c/snd-i2c 0x2daaf69e snd_i2c_device_free +EXPORT_SYMBOL sound/i2c/snd-i2c 0x4fc849ea snd_i2c_sendbytes +EXPORT_SYMBOL sound/i2c/snd-i2c 0x73ea3c7a snd_i2c_device_create +EXPORT_SYMBOL sound/i2c/snd-i2c 0x8c86cc6d snd_i2c_bus_create +EXPORT_SYMBOL sound/i2c/snd-i2c 0xb0a90108 snd_i2c_probeaddr +EXPORT_SYMBOL sound/i2c/snd-i2c 0xbf0ac729 snd_i2c_readbytes +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x0bc23904 snd_ac97_resume +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x24279eb3 snd_ac97_update +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x2f88d3fc snd_ac97_mixer +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x39f07a99 snd_ac97_pcm_double_rate_rules +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x3f3a39ef snd_ac97_bus +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x4c3b0025 snd_ac97_set_rate +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x575c9ff8 snd_ac97_read +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x5a35016e snd_ac97_write +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x96b2cb8f snd_ac97_update_bits +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xa5a6dd3c snd_ac97_pcm_close +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xa87a5db6 snd_ac97_update_power +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xd3b4bc7b snd_ac97_write_cache +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xda2723c5 snd_ac97_tune_hardware +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xe1d8f26e snd_ac97_pcm_open +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xe74fb3cf snd_ac97_pcm_assign +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xede4f4a6 snd_ac97_get_short_name +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xf64465ad snd_ac97_suspend +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x31f1b157 snd_emu10k1_ptr_write +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x3d226244 snd_emu10k1_synth_bzero +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x82eb5d7b snd_emu10k1_voice_alloc +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xa9473a97 snd_emu10k1_synth_free +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xb9fb1da0 snd_emu10k1_synth_copy_from_user +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xbfa36055 snd_emu10k1_memblk_map +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xc6addbb7 snd_emu10k1_voice_free +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xdc644eff snd_emu10k1_synth_alloc +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xedf67cf0 snd_emu10k1_ptr_read +EXPORT_SYMBOL sound/pci/ice1712/snd-ice17xx-ak4xxx 0x78a6a2ad snd_ice1712_akm4xxx_init +EXPORT_SYMBOL sound/pci/ice1712/snd-ice17xx-ak4xxx 0xbdd60584 snd_ice1712_akm4xxx_build_controls +EXPORT_SYMBOL sound/pci/ice1712/snd-ice17xx-ak4xxx 0xd4fe9b04 snd_ice1712_akm4xxx_free +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x039c400f oxygen_write16 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x061ead38 oxygen_write8_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x1761af33 oxygen_write16_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x24de0e43 oxygen_write_ac97_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x26cae797 oxygen_read8 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x47e0c981 oxygen_pci_remove +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x4ba2f35e oxygen_write_ac97 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x5028fcb3 oxygen_read16 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x5a371f78 oxygen_pci_shutdown +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x74dd5faa oxygen_write8 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x793e89f2 oxygen_read_ac97 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x8d8c54c6 oxygen_write_i2c +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x93e3a2cc oxygen_pci_probe +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xb094945f oxygen_write_spi +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xb65a172b oxygen_write32 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xd9e7d6ed oxygen_update_dac_routing +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xdf7f0a5d oxygen_write32_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xe0f1a651 oxygen_reset_uart +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xe9e536eb oxygen_read32 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xf4cf7703 oxygen_write_uart +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xf86a37d7 oxygen_pci_pm +EXPORT_SYMBOL sound/pci/trident/snd-trident 0x1504f981 snd_trident_start_voice +EXPORT_SYMBOL sound/pci/trident/snd-trident 0x5f9aae92 snd_trident_stop_voice +EXPORT_SYMBOL sound/pci/trident/snd-trident 0x7201a75c snd_trident_free_voice +EXPORT_SYMBOL sound/pci/trident/snd-trident 0x831ba1fe snd_trident_alloc_voice +EXPORT_SYMBOL sound/pci/trident/snd-trident 0xd792153e snd_trident_write_voice_regs +EXPORT_SYMBOL sound/soc/codecs/snd-soc-tlv320aic23 0x997e3e24 tlv320aic23_regmap +EXPORT_SYMBOL sound/soc/codecs/snd-soc-tlv320aic23 0xea3be666 tlv320aic23_probe +EXPORT_SYMBOL sound/soc/fsl/snd-soc-fsl-utils 0xf45e395a fsl_asoc_get_dma_channel +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x520e4ce6 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 0x6c2f6f74 snd_emux_unlock_voice +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0xc76903a3 snd_emux_free +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0xd67949de snd_emux_new +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0xe634320c snd_emux_lock_voice +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0xf0689e99 snd_emux_register +EXPORT_SYMBOL sound/synth/snd-util-mem 0x05c977a6 __snd_util_mem_free +EXPORT_SYMBOL sound/synth/snd-util-mem 0x0caad2ac __snd_util_mem_alloc +EXPORT_SYMBOL sound/synth/snd-util-mem 0x19b05a04 snd_util_memhdr_free +EXPORT_SYMBOL sound/synth/snd-util-mem 0x33b96c1c __snd_util_memblk_new +EXPORT_SYMBOL sound/synth/snd-util-mem 0x926c1700 snd_util_memhdr_new +EXPORT_SYMBOL sound/synth/snd-util-mem 0xa4332216 snd_util_mem_free +EXPORT_SYMBOL sound/synth/snd-util-mem 0xc69b5ccc snd_util_mem_avail +EXPORT_SYMBOL sound/synth/snd-util-mem 0xff9c96dd snd_util_mem_alloc +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0x16756dc0 snd_usbmidi_input_start +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0x35b93a1b 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 0x0002e605 mmc_gpio_set_cd_isr +EXPORT_SYMBOL vmlinux 0x001ee95a imx_ssi_fiq_base +EXPORT_SYMBOL vmlinux 0x001fff94 d_tmpfile +EXPORT_SYMBOL vmlinux 0x0025307b kfree_skb +EXPORT_SYMBOL vmlinux 0x003117ce dquot_enable +EXPORT_SYMBOL vmlinux 0x003ab65b phy_drivers_unregister +EXPORT_SYMBOL vmlinux 0x003ed69a __kfifo_dma_in_prepare +EXPORT_SYMBOL vmlinux 0x0040cc06 bio_clone_fast +EXPORT_SYMBOL vmlinux 0x0043243b __devcgroup_inode_permission +EXPORT_SYMBOL vmlinux 0x0055e321 del_random_ready_callback +EXPORT_SYMBOL vmlinux 0x00910594 ipv6_setsockopt +EXPORT_SYMBOL vmlinux 0x009934e0 pci_bus_size_bridges +EXPORT_SYMBOL vmlinux 0x00c204fe pci_get_domain_bus_and_slot +EXPORT_SYMBOL vmlinux 0x00d54a8f scsi_eh_prep_cmnd +EXPORT_SYMBOL vmlinux 0x00d7e722 vme_lm_count +EXPORT_SYMBOL vmlinux 0x00e3144a inet_recvmsg +EXPORT_SYMBOL vmlinux 0x00e6154f udp_set_csum +EXPORT_SYMBOL vmlinux 0x00e8bd15 console_stop +EXPORT_SYMBOL vmlinux 0x01000e51 schedule +EXPORT_SYMBOL vmlinux 0x0101d5b1 ip_idents_reserve +EXPORT_SYMBOL vmlinux 0x01030faf inode_change_ok +EXPORT_SYMBOL vmlinux 0x01139ffc max_mapnr +EXPORT_SYMBOL vmlinux 0x011a9e53 elf_hwcap2 +EXPORT_SYMBOL vmlinux 0x011e7454 km_state_expired +EXPORT_SYMBOL vmlinux 0x0158d21d scsi_track_queue_full +EXPORT_SYMBOL vmlinux 0x016678be d_walk +EXPORT_SYMBOL vmlinux 0x016e5c2a mod_timer +EXPORT_SYMBOL vmlinux 0x0186e2de smp_call_function_many +EXPORT_SYMBOL vmlinux 0x019e49ab bdi_destroy +EXPORT_SYMBOL vmlinux 0x01a3d310 omap_set_dma_channel_mode +EXPORT_SYMBOL vmlinux 0x01b7fd59 dispc_read_irqstatus +EXPORT_SYMBOL vmlinux 0x01cce671 bdi_set_max_ratio +EXPORT_SYMBOL vmlinux 0x01d909f7 always_delete_dentry +EXPORT_SYMBOL vmlinux 0x01dbe24f vfs_write +EXPORT_SYMBOL vmlinux 0x01ea132e dispc_runtime_put +EXPORT_SYMBOL vmlinux 0x01fdc47d tty_mutex +EXPORT_SYMBOL vmlinux 0x0200fca0 dev_uc_sync +EXPORT_SYMBOL vmlinux 0x02124474 ip_send_check +EXPORT_SYMBOL vmlinux 0x02196324 __aeabi_idiv +EXPORT_SYMBOL vmlinux 0x021a6c97 vfs_getattr_nosec +EXPORT_SYMBOL vmlinux 0x022358a3 flush_old_exec +EXPORT_SYMBOL vmlinux 0x02477209 blk_queue_max_discard_sectors +EXPORT_SYMBOL vmlinux 0x02573b36 omap_disable_dma_irq +EXPORT_SYMBOL vmlinux 0x02649054 security_sock_rcv_skb +EXPORT_SYMBOL vmlinux 0x026715bc invalidate_partition +EXPORT_SYMBOL vmlinux 0x0268f6b9 blk_queue_update_dma_alignment +EXPORT_SYMBOL vmlinux 0x0270145f blk_mq_end_request +EXPORT_SYMBOL vmlinux 0x0274dc2b netif_get_num_default_rss_queues +EXPORT_SYMBOL vmlinux 0x0283dfe3 _snd_pcm_hw_params_any +EXPORT_SYMBOL vmlinux 0x02967054 cfb_copyarea +EXPORT_SYMBOL vmlinux 0x02986f73 vme_slave_request +EXPORT_SYMBOL vmlinux 0x029c7ab4 phy_driver_register +EXPORT_SYMBOL vmlinux 0x029cca46 neigh_xmit +EXPORT_SYMBOL vmlinux 0x02a18c74 nf_conntrack_destroy +EXPORT_SYMBOL vmlinux 0x02a6ce5a crc16_table +EXPORT_SYMBOL vmlinux 0x02b612e3 mmc_wait_for_cmd +EXPORT_SYMBOL vmlinux 0x02b982c7 input_set_capability +EXPORT_SYMBOL vmlinux 0x02bf8033 bprm_change_interp +EXPORT_SYMBOL vmlinux 0x02dec96d skb_clone_sk +EXPORT_SYMBOL vmlinux 0x02df1425 genphy_suspend +EXPORT_SYMBOL vmlinux 0x02df3afd __inode_sub_bytes +EXPORT_SYMBOL vmlinux 0x02ea111e scsi_driverbyte_string +EXPORT_SYMBOL vmlinux 0x02ee26c1 free_pages_exact +EXPORT_SYMBOL vmlinux 0x02ef742b percpu_counter_set +EXPORT_SYMBOL vmlinux 0x03005606 omapdss_get_version +EXPORT_SYMBOL vmlinux 0x03026722 mempool_alloc +EXPORT_SYMBOL vmlinux 0x03151d82 fb_find_mode +EXPORT_SYMBOL vmlinux 0x03248db6 __genl_register_family +EXPORT_SYMBOL vmlinux 0x0334795d icst307_s2div +EXPORT_SYMBOL vmlinux 0x0334da4e scsi_command_size_tbl +EXPORT_SYMBOL vmlinux 0x03360779 default_llseek +EXPORT_SYMBOL vmlinux 0x03592ea0 security_unix_stream_connect +EXPORT_SYMBOL vmlinux 0x0359434b sock_alloc_send_pskb +EXPORT_SYMBOL vmlinux 0x035cf7f7 filemap_fault +EXPORT_SYMBOL vmlinux 0x03635439 edma_stop +EXPORT_SYMBOL vmlinux 0x0366307a console_suspend_enabled +EXPORT_SYMBOL vmlinux 0x036f5315 ping_prot +EXPORT_SYMBOL vmlinux 0x037a0cba kfree +EXPORT_SYMBOL vmlinux 0x038e24bd seq_path +EXPORT_SYMBOL vmlinux 0x0391ce45 dentry_path_raw +EXPORT_SYMBOL vmlinux 0x03b1d116 simple_dir_operations +EXPORT_SYMBOL vmlinux 0x03ba39b0 v7_flush_user_cache_all +EXPORT_SYMBOL vmlinux 0x03ba7268 iov_iter_zero +EXPORT_SYMBOL vmlinux 0x03c2c72e grab_cache_page_write_begin +EXPORT_SYMBOL vmlinux 0x03f620c9 in6_dev_finish_destroy +EXPORT_SYMBOL vmlinux 0x03fabf8c clear_page_dirty_for_io +EXPORT_SYMBOL vmlinux 0x03fd2571 vm_unmap_ram +EXPORT_SYMBOL vmlinux 0x040f7399 sock_edemux +EXPORT_SYMBOL vmlinux 0x0422fe4a inet_csk_timer_bug_msg +EXPORT_SYMBOL vmlinux 0x04482cdb __refrigerator +EXPORT_SYMBOL vmlinux 0x044f1bec ab3100_event_register +EXPORT_SYMBOL vmlinux 0x04559dce padata_do_serial +EXPORT_SYMBOL vmlinux 0x0487f831 fb_find_best_display +EXPORT_SYMBOL vmlinux 0x0499c4a9 blk_rq_unmap_user +EXPORT_SYMBOL vmlinux 0x04a23ccc sk_dst_check +EXPORT_SYMBOL vmlinux 0x04cda566 snd_interval_refine +EXPORT_SYMBOL vmlinux 0x04cf0bee udp_flush_pending_frames +EXPORT_SYMBOL vmlinux 0x04d94ba1 vme_irq_free +EXPORT_SYMBOL vmlinux 0x04ea56f9 _kstrtol +EXPORT_SYMBOL vmlinux 0x04ec1411 blk_mq_kick_requeue_list +EXPORT_SYMBOL vmlinux 0x05190b08 i2c_use_client +EXPORT_SYMBOL vmlinux 0x05240ee7 percpu_counter_batch +EXPORT_SYMBOL vmlinux 0x05444275 snd_pcm_release_substream +EXPORT_SYMBOL vmlinux 0x058f3085 __ip_select_ident +EXPORT_SYMBOL vmlinux 0x05b6a8e4 vme_bus_num +EXPORT_SYMBOL vmlinux 0x05dd0c6e clkdev_drop +EXPORT_SYMBOL vmlinux 0x05e91d9d devfreq_monitor_stop +EXPORT_SYMBOL vmlinux 0x0600c467 generic_write_end +EXPORT_SYMBOL vmlinux 0x0608f8c2 atomic_dec_and_mutex_lock +EXPORT_SYMBOL vmlinux 0x060c40b6 fddi_change_mtu +EXPORT_SYMBOL vmlinux 0x061651be strcat +EXPORT_SYMBOL vmlinux 0x0618f2ac of_find_node_by_type +EXPORT_SYMBOL vmlinux 0x061e89d9 udp_poll +EXPORT_SYMBOL vmlinux 0x0634100a bitmap_parselist_user +EXPORT_SYMBOL vmlinux 0x064317d2 __remove_inode_hash +EXPORT_SYMBOL vmlinux 0x0649c1f3 sock_setsockopt +EXPORT_SYMBOL vmlinux 0x065245a3 ip6_expire_frag_queue +EXPORT_SYMBOL vmlinux 0x06607f92 dss_feat_get_supported_outputs +EXPORT_SYMBOL vmlinux 0x067d8d35 security_release_secctx +EXPORT_SYMBOL vmlinux 0x0696caa4 tcp_recvmsg +EXPORT_SYMBOL vmlinux 0x069a40e8 bio_phys_segments +EXPORT_SYMBOL vmlinux 0x06e028b4 pcim_iomap_regions +EXPORT_SYMBOL vmlinux 0x06e21f78 devfreq_unregister_opp_notifier +EXPORT_SYMBOL vmlinux 0x06f67ee6 input_register_handle +EXPORT_SYMBOL vmlinux 0x06fe3b14 default_grn +EXPORT_SYMBOL vmlinux 0x0711cfd9 tcp_v4_send_check +EXPORT_SYMBOL vmlinux 0x071feece tcp_initialize_rcv_mss +EXPORT_SYMBOL vmlinux 0x072031ec netdev_crit +EXPORT_SYMBOL vmlinux 0x072a322a nf_register_queue_handler +EXPORT_SYMBOL vmlinux 0x072a8f8d __set_fiq_regs +EXPORT_SYMBOL vmlinux 0x072f901c vme_master_rmw +EXPORT_SYMBOL vmlinux 0x073a83b5 dquot_mark_dquot_dirty +EXPORT_SYMBOL vmlinux 0x073bce87 edma_write_slot +EXPORT_SYMBOL vmlinux 0x074c2e4b blkdev_issue_write_same +EXPORT_SYMBOL vmlinux 0x075285e9 of_n_size_cells +EXPORT_SYMBOL vmlinux 0x07652e60 scsi_block_requests +EXPORT_SYMBOL vmlinux 0x076ac28a ptp_clock_unregister +EXPORT_SYMBOL vmlinux 0x076c80b3 kernel_param_unlock +EXPORT_SYMBOL vmlinux 0x076f81be udp6_csum_init +EXPORT_SYMBOL vmlinux 0x0782f42b pcim_iounmap_regions +EXPORT_SYMBOL vmlinux 0x078500c6 dquot_alloc +EXPORT_SYMBOL vmlinux 0x07a4b576 flex_array_free +EXPORT_SYMBOL vmlinux 0x07a6cc29 jbd2_journal_abort +EXPORT_SYMBOL vmlinux 0x07a890c8 fb_alloc_cmap +EXPORT_SYMBOL vmlinux 0x07aeb08c input_mt_drop_unused +EXPORT_SYMBOL vmlinux 0x07be75c1 sk_alloc +EXPORT_SYMBOL vmlinux 0x07cc4a5d printk_timed_ratelimit +EXPORT_SYMBOL vmlinux 0x07cf9099 wait_for_completion_timeout +EXPORT_SYMBOL vmlinux 0x07d1f0cd dss_mgr_set_timings +EXPORT_SYMBOL vmlinux 0x07d5182a pci_bus_find_capability +EXPORT_SYMBOL vmlinux 0x07d915c0 dss_mgr_unregister_framedone_handler +EXPORT_SYMBOL vmlinux 0x07ed9e30 free_page_put_link +EXPORT_SYMBOL vmlinux 0x081f3afb complete_all +EXPORT_SYMBOL vmlinux 0x082c3213 pci_root_buses +EXPORT_SYMBOL vmlinux 0x083eb21c rfkill_unregister +EXPORT_SYMBOL vmlinux 0x084ba61f __sb_end_write +EXPORT_SYMBOL vmlinux 0x08586507 ipv6_select_ident +EXPORT_SYMBOL vmlinux 0x0878db5e mount_bdev +EXPORT_SYMBOL vmlinux 0x087f7602 snd_pcm_hw_rule_add +EXPORT_SYMBOL vmlinux 0x08928b90 __nla_put +EXPORT_SYMBOL vmlinux 0x08c4a373 locks_copy_conflock +EXPORT_SYMBOL vmlinux 0x08d4fff4 pci_bus_assign_resources +EXPORT_SYMBOL vmlinux 0x08dfdd77 elv_dispatch_sort +EXPORT_SYMBOL vmlinux 0x08ea69e7 mipi_dsi_packet_format_is_long +EXPORT_SYMBOL vmlinux 0x08f4d78b nf_log_register +EXPORT_SYMBOL vmlinux 0x09005a19 from_kgid_munged +EXPORT_SYMBOL vmlinux 0x0903c8bc end_buffer_async_write +EXPORT_SYMBOL vmlinux 0x09580deb init_timer_key +EXPORT_SYMBOL vmlinux 0x095ba063 max8925_reg_read +EXPORT_SYMBOL vmlinux 0x0960d2a5 blk_queue_merge_bvec +EXPORT_SYMBOL vmlinux 0x0969060f snd_ctl_boolean_stereo_info +EXPORT_SYMBOL vmlinux 0x097ec1ff _raw_write_lock_irqsave +EXPORT_SYMBOL vmlinux 0x098893b6 vme_dma_list_exec +EXPORT_SYMBOL vmlinux 0x098b71c6 fb_dealloc_cmap +EXPORT_SYMBOL vmlinux 0x09bf5fb1 pci_remove_bus +EXPORT_SYMBOL vmlinux 0x09c55cec schedule_timeout_interruptible +EXPORT_SYMBOL vmlinux 0x09c8eb55 font_vga_8x16 +EXPORT_SYMBOL vmlinux 0x09cb75c7 dev_addr_flush +EXPORT_SYMBOL vmlinux 0x09cf1b46 proc_dointvec_jiffies +EXPORT_SYMBOL vmlinux 0x09d44df9 in_lock_functions +EXPORT_SYMBOL vmlinux 0x09f6c1af __secpath_destroy +EXPORT_SYMBOL vmlinux 0x0a00e862 dmam_release_declared_memory +EXPORT_SYMBOL vmlinux 0x0a03d915 input_release_device +EXPORT_SYMBOL vmlinux 0x0a03db1e of_find_mipi_dsi_device_by_node +EXPORT_SYMBOL vmlinux 0x0a0786de udplite_table +EXPORT_SYMBOL vmlinux 0x0a193511 sock_get_timestampns +EXPORT_SYMBOL vmlinux 0x0a2487e0 unblock_all_signals +EXPORT_SYMBOL vmlinux 0x0a292872 reservation_seqcount_class +EXPORT_SYMBOL vmlinux 0x0a3131f6 strnchr +EXPORT_SYMBOL vmlinux 0x0a373226 crc32_le_shift +EXPORT_SYMBOL vmlinux 0x0a3dfc0e iov_iter_alignment +EXPORT_SYMBOL vmlinux 0x0a3f926e ps2_command +EXPORT_SYMBOL vmlinux 0x0a469d23 mfd_clone_cell +EXPORT_SYMBOL vmlinux 0x0a4ef7e7 ndo_dflt_fdb_del +EXPORT_SYMBOL vmlinux 0x0a5d8984 generic_pipe_buf_get +EXPORT_SYMBOL vmlinux 0x0a647c58 mdio_bus_type +EXPORT_SYMBOL vmlinux 0x0a7afa7b bio_init +EXPORT_SYMBOL vmlinux 0x0aa309cf synchronize_hardirq +EXPORT_SYMBOL vmlinux 0x0aa30c71 fsnotify_init_mark +EXPORT_SYMBOL vmlinux 0x0aad92be scsi_remove_host +EXPORT_SYMBOL vmlinux 0x0ab173d7 blk_mq_start_stopped_hw_queues +EXPORT_SYMBOL vmlinux 0x0acf7679 dma_issue_pending_all +EXPORT_SYMBOL vmlinux 0x0afba946 skb_copy_and_csum_datagram_msg +EXPORT_SYMBOL vmlinux 0x0b0d888b icmpv6_err_convert +EXPORT_SYMBOL vmlinux 0x0b0db9b7 finish_open +EXPORT_SYMBOL vmlinux 0x0b1beb31 vmalloc_32_user +EXPORT_SYMBOL vmlinux 0x0b290a5c netpoll_cleanup +EXPORT_SYMBOL vmlinux 0x0b2f0a51 pci_read_vpd +EXPORT_SYMBOL vmlinux 0x0b375681 insert_inode_locked4 +EXPORT_SYMBOL vmlinux 0x0b48677a __kfifo_init +EXPORT_SYMBOL vmlinux 0x0b57155e tegra_io_rail_power_off +EXPORT_SYMBOL vmlinux 0x0b571a80 bdgrab +EXPORT_SYMBOL vmlinux 0x0b6c0531 nf_log_unbind_pf +EXPORT_SYMBOL vmlinux 0x0b742fd7 simple_strtol +EXPORT_SYMBOL vmlinux 0x0ba50126 tso_count_descs +EXPORT_SYMBOL vmlinux 0x0bb8800d alloc_anon_inode +EXPORT_SYMBOL vmlinux 0x0bbc5908 gen_estimator_active +EXPORT_SYMBOL vmlinux 0x0bbd9d62 xfrm6_rcv +EXPORT_SYMBOL vmlinux 0x0bc477a2 irq_set_irq_type +EXPORT_SYMBOL vmlinux 0x0bd27027 devm_gpio_request_one +EXPORT_SYMBOL vmlinux 0x0c230f54 t10_pi_type3_crc +EXPORT_SYMBOL vmlinux 0x0c284f1d of_device_alloc +EXPORT_SYMBOL vmlinux 0x0c423d7f tag_pages_for_writeback +EXPORT_SYMBOL vmlinux 0x0c45fc96 vfs_lstat +EXPORT_SYMBOL vmlinux 0x0c58a8cd netdev_increment_features +EXPORT_SYMBOL vmlinux 0x0c5c0a3d unregister_netdevice_queue +EXPORT_SYMBOL vmlinux 0x0c97144a sock_no_shutdown +EXPORT_SYMBOL vmlinux 0x0ca0c882 twl6030_interrupt_mask +EXPORT_SYMBOL vmlinux 0x0ca54fee _test_and_set_bit +EXPORT_SYMBOL vmlinux 0x0cae232b utf16s_to_utf8s +EXPORT_SYMBOL vmlinux 0x0cb61c82 inet_csk_init_xmit_timers +EXPORT_SYMBOL vmlinux 0x0cb9f279 xfrm_init_state +EXPORT_SYMBOL vmlinux 0x0cbd8ee9 xfrm4_prepare_output +EXPORT_SYMBOL vmlinux 0x0cd6e696 unload_nls +EXPORT_SYMBOL vmlinux 0x0cd8327e dev_open +EXPORT_SYMBOL vmlinux 0x0cda3cdb swiotlb_alloc_coherent +EXPORT_SYMBOL vmlinux 0x0ce0def1 user_path_create +EXPORT_SYMBOL vmlinux 0x0ce26aa1 netdev_master_upper_dev_link_private +EXPORT_SYMBOL vmlinux 0x0cfefe1e percpu_counter_destroy +EXPORT_SYMBOL vmlinux 0x0d05c450 sk_wait_data +EXPORT_SYMBOL vmlinux 0x0d0d1239 xfrm_sad_getinfo +EXPORT_SYMBOL vmlinux 0x0d1018b9 omapdss_unregister_output +EXPORT_SYMBOL vmlinux 0x0d16efa7 ata_link_printk +EXPORT_SYMBOL vmlinux 0x0d2b4cca tcf_em_tree_dump +EXPORT_SYMBOL vmlinux 0x0d363bb8 poll_freewait +EXPORT_SYMBOL vmlinux 0x0d3f57a2 _find_next_bit_le +EXPORT_SYMBOL vmlinux 0x0d4d7a32 _atomic_dec_and_lock +EXPORT_SYMBOL vmlinux 0x0d53ffc4 arp_send +EXPORT_SYMBOL vmlinux 0x0d542439 __ipv6_addr_type +EXPORT_SYMBOL vmlinux 0x0d61eeee __bitmap_subset +EXPORT_SYMBOL vmlinux 0x0d6459b2 netdev_master_upper_dev_get_rcu +EXPORT_SYMBOL vmlinux 0x0d87edc3 fb_class +EXPORT_SYMBOL vmlinux 0x0da10ec3 security_sock_graft +EXPORT_SYMBOL vmlinux 0x0da75ee9 phy_device_free +EXPORT_SYMBOL vmlinux 0x0db439d6 input_alloc_absinfo +EXPORT_SYMBOL vmlinux 0x0dc1a78c bin2hex +EXPORT_SYMBOL vmlinux 0x0de81a30 mmc_set_blocklen +EXPORT_SYMBOL vmlinux 0x0ded9636 arp_tbl +EXPORT_SYMBOL vmlinux 0x0e02096d i2c_smbus_read_i2c_block_data +EXPORT_SYMBOL vmlinux 0x0e1f8ec1 serio_open +EXPORT_SYMBOL vmlinux 0x0e4c74d1 shdma_init +EXPORT_SYMBOL vmlinux 0x0e5df569 ip6_dst_hoplimit +EXPORT_SYMBOL vmlinux 0x0e6da44a set_normalized_timespec +EXPORT_SYMBOL vmlinux 0x0e72b97e tty_wait_until_sent +EXPORT_SYMBOL vmlinux 0x0e791a6e blk_end_request_all +EXPORT_SYMBOL vmlinux 0x0e87e51e mmc_wait_for_app_cmd +EXPORT_SYMBOL vmlinux 0x0e93f0f4 find_get_entry +EXPORT_SYMBOL vmlinux 0x0eaf451e hdmi_vendor_infoframe_pack +EXPORT_SYMBOL vmlinux 0x0ec5babe vme_dma_free +EXPORT_SYMBOL vmlinux 0x0ec82e8a blk_queue_find_tag +EXPORT_SYMBOL vmlinux 0x0ed1e9e3 make_bad_inode +EXPORT_SYMBOL vmlinux 0x0edb1c23 neigh_update +EXPORT_SYMBOL vmlinux 0x0eef12bb capable_wrt_inode_uidgid +EXPORT_SYMBOL vmlinux 0x0ef05ca1 tty_port_block_til_ready +EXPORT_SYMBOL vmlinux 0x0ef54f57 request_key_with_auxdata +EXPORT_SYMBOL vmlinux 0x0efcbb1b set_current_groups +EXPORT_SYMBOL vmlinux 0x0f00bc56 pci_enable_device +EXPORT_SYMBOL vmlinux 0x0f22a968 inet_dev_addr_type +EXPORT_SYMBOL vmlinux 0x0f354f33 mmc_hw_reset +EXPORT_SYMBOL vmlinux 0x0f4bbce4 mmc_power_save_host +EXPORT_SYMBOL vmlinux 0x0f4c91ed ns_to_timespec +EXPORT_SYMBOL vmlinux 0x0f6a3b5c string_get_size +EXPORT_SYMBOL vmlinux 0x0f6eb2f2 omapdss_output_unset_device +EXPORT_SYMBOL vmlinux 0x0f9be762 vfs_readf +EXPORT_SYMBOL vmlinux 0x0fa12bf1 pci_get_subsys +EXPORT_SYMBOL vmlinux 0x0fa2a45e __memzero +EXPORT_SYMBOL vmlinux 0x0fa2a8f8 twl6030_mmc_card_detect +EXPORT_SYMBOL vmlinux 0x0faef0ed __tasklet_schedule +EXPORT_SYMBOL vmlinux 0x0fb2f8a4 mktime64 +EXPORT_SYMBOL vmlinux 0x0fbefdd6 sk_prot_clear_portaddr_nulls +EXPORT_SYMBOL vmlinux 0x0fbf6b35 dma_pool_create +EXPORT_SYMBOL vmlinux 0x0fbf9fed mmc_can_reset +EXPORT_SYMBOL vmlinux 0x0fc26f2f pm8606_osc_disable +EXPORT_SYMBOL vmlinux 0x0fd1a7fe inet6_add_offload +EXPORT_SYMBOL vmlinux 0x0ff178f6 __aeabi_idivmod +EXPORT_SYMBOL vmlinux 0x0ff18e63 __lock_buffer +EXPORT_SYMBOL vmlinux 0x0ff2b602 slhc_compress +EXPORT_SYMBOL vmlinux 0x0ffd78bb netdev_refcnt_read +EXPORT_SYMBOL vmlinux 0x10211b06 pps_lookup_dev +EXPORT_SYMBOL vmlinux 0x10289e98 unlink_framebuffer +EXPORT_SYMBOL vmlinux 0x102a9198 padata_register_cpumask_notifier +EXPORT_SYMBOL vmlinux 0x102ec409 xfrm_spd_getinfo +EXPORT_SYMBOL vmlinux 0x102f3fb1 dev_addr_add +EXPORT_SYMBOL vmlinux 0x1031888f mipi_dsi_dcs_set_column_address +EXPORT_SYMBOL vmlinux 0x1042bf80 md_flush_request +EXPORT_SYMBOL vmlinux 0x10467a18 __breadahead +EXPORT_SYMBOL vmlinux 0x106097ef clear_inode +EXPORT_SYMBOL vmlinux 0x10673d44 vme_master_request +EXPORT_SYMBOL vmlinux 0x106f13ab crc_t10dif_generic +EXPORT_SYMBOL vmlinux 0x1072a394 csum_partial_copy_from_user +EXPORT_SYMBOL vmlinux 0x1076f867 dcache_dir_open +EXPORT_SYMBOL vmlinux 0x107e5878 zlib_inflateEnd +EXPORT_SYMBOL vmlinux 0x10b6981d register_qdisc +EXPORT_SYMBOL vmlinux 0x10c1c7ba con_is_bound +EXPORT_SYMBOL vmlinux 0x10c9a608 i2c_verify_adapter +EXPORT_SYMBOL vmlinux 0x10dd65a1 posix_lock_file +EXPORT_SYMBOL vmlinux 0x10e437a1 __skb_checksum +EXPORT_SYMBOL vmlinux 0x10ee20bb default_blu +EXPORT_SYMBOL vmlinux 0x11089ac7 _ctype +EXPORT_SYMBOL vmlinux 0x112162e8 seq_lseek +EXPORT_SYMBOL vmlinux 0x112748bd omap_vrfb_adjust_size +EXPORT_SYMBOL vmlinux 0x11300faf param_set_long +EXPORT_SYMBOL vmlinux 0x115ca552 up_write +EXPORT_SYMBOL vmlinux 0x115dc801 security_path_truncate +EXPORT_SYMBOL vmlinux 0x1163f0a7 blk_max_low_pfn +EXPORT_SYMBOL vmlinux 0x1165b455 snd_card_register +EXPORT_SYMBOL vmlinux 0x116ae927 udp_lib_get_port +EXPORT_SYMBOL vmlinux 0x117093be qdisc_class_hash_init +EXPORT_SYMBOL vmlinux 0x1172a6d4 tcp_v4_mtu_reduced +EXPORT_SYMBOL vmlinux 0x117a73a6 iov_iter_advance +EXPORT_SYMBOL vmlinux 0x1180b56c scsi_init_io +EXPORT_SYMBOL vmlinux 0x1182c658 page_cache_next_hole +EXPORT_SYMBOL vmlinux 0x1188fd44 __sb_start_write +EXPORT_SYMBOL vmlinux 0x118a5e56 blk_limits_io_min +EXPORT_SYMBOL vmlinux 0x119abee1 security_file_permission +EXPORT_SYMBOL vmlinux 0x119b50e7 elf_check_arch +EXPORT_SYMBOL vmlinux 0x11a044f6 mod_timer_pinned +EXPORT_SYMBOL vmlinux 0x11bbed52 simple_dentry_operations +EXPORT_SYMBOL vmlinux 0x11f7ed4c hex_to_bin +EXPORT_SYMBOL vmlinux 0x120b336a __rb_insert_augmented +EXPORT_SYMBOL vmlinux 0x120fc6b1 kstrdup_const +EXPORT_SYMBOL vmlinux 0x12205820 xfrm6_prepare_output +EXPORT_SYMBOL vmlinux 0x1224cbf2 setup_arg_pages +EXPORT_SYMBOL vmlinux 0x122d310e jbd2_journal_force_commit +EXPORT_SYMBOL vmlinux 0x12577de3 iov_iter_get_pages +EXPORT_SYMBOL vmlinux 0x126d70e7 mipi_dsi_dcs_set_page_address +EXPORT_SYMBOL vmlinux 0x128464c5 nand_scan_ident +EXPORT_SYMBOL vmlinux 0x12a38747 usleep_range +EXPORT_SYMBOL vmlinux 0x12a48621 dev_remove_offload +EXPORT_SYMBOL vmlinux 0x12bd81fb csum_and_copy_from_iter +EXPORT_SYMBOL vmlinux 0x12ca7ba0 serial8250_do_pm +EXPORT_SYMBOL vmlinux 0x12d186d5 jbd2_journal_destroy +EXPORT_SYMBOL vmlinux 0x12da5bb2 __kmalloc +EXPORT_SYMBOL vmlinux 0x12e1c2e0 kernel_getpeername +EXPORT_SYMBOL vmlinux 0x12fa6d33 dm_put_device +EXPORT_SYMBOL vmlinux 0x13243d4b wl1251_get_platform_data +EXPORT_SYMBOL vmlinux 0x132e1460 __pagevec_lru_add +EXPORT_SYMBOL vmlinux 0x13307fde vsscanf +EXPORT_SYMBOL vmlinux 0x13315729 flex_array_alloc +EXPORT_SYMBOL vmlinux 0x134071cb f_setown +EXPORT_SYMBOL vmlinux 0x1340a327 nf_unregister_hook +EXPORT_SYMBOL vmlinux 0x13539c80 mmc_flush_cache +EXPORT_SYMBOL vmlinux 0x1365aa81 xfrm_state_lookup_byspi +EXPORT_SYMBOL vmlinux 0x136d89d5 commit_creds +EXPORT_SYMBOL vmlinux 0x137acb49 skb_coalesce_rx_frag +EXPORT_SYMBOL vmlinux 0x13d0adf7 __kfifo_out +EXPORT_SYMBOL vmlinux 0x13d53c00 blk_integrity_merge_rq +EXPORT_SYMBOL vmlinux 0x13f42152 system_entering_hibernation +EXPORT_SYMBOL vmlinux 0x140cacfc jbd2_journal_stop +EXPORT_SYMBOL vmlinux 0x1420b379 kstrtou16_from_user +EXPORT_SYMBOL vmlinux 0x145de92b abx500_remove_ops +EXPORT_SYMBOL vmlinux 0x14731f2f dev_change_carrier +EXPORT_SYMBOL vmlinux 0x1484b1d5 kthread_create_on_node +EXPORT_SYMBOL vmlinux 0x149513c3 netdev_upper_dev_unlink +EXPORT_SYMBOL vmlinux 0x1499be8c generic_write_checks +EXPORT_SYMBOL vmlinux 0x14a13eed dcache_dir_close +EXPORT_SYMBOL vmlinux 0x14a8025c mutex_trylock +EXPORT_SYMBOL vmlinux 0x14afc33c __xfrm_state_delete +EXPORT_SYMBOL vmlinux 0x14b8fe92 pci_bus_type +EXPORT_SYMBOL vmlinux 0x14d4a9c5 _change_bit +EXPORT_SYMBOL vmlinux 0x14f956db __lock_page +EXPORT_SYMBOL vmlinux 0x1511993c __dev_get_by_index +EXPORT_SYMBOL vmlinux 0x152b1275 of_get_pci_address +EXPORT_SYMBOL vmlinux 0x154c6338 dm_kcopyd_client_destroy +EXPORT_SYMBOL vmlinux 0x154d8c58 kthread_stop +EXPORT_SYMBOL vmlinux 0x154dfe82 swiotlb_dma_mapping_error +EXPORT_SYMBOL vmlinux 0x15512ee0 vga_set_legacy_decoding +EXPORT_SYMBOL vmlinux 0x15547666 pci_restore_state +EXPORT_SYMBOL vmlinux 0x159a6092 uart_write_wakeup +EXPORT_SYMBOL vmlinux 0x15a6a7bc neigh_sysctl_unregister +EXPORT_SYMBOL vmlinux 0x15b0a752 vm_map_ram +EXPORT_SYMBOL vmlinux 0x15bafe29 unregister_md_cluster_operations +EXPORT_SYMBOL vmlinux 0x15c966cf devm_devfreq_unregister_opp_notifier +EXPORT_SYMBOL vmlinux 0x15f49455 __cleancache_init_fs +EXPORT_SYMBOL vmlinux 0x15f6cf7e dma_common_mmap +EXPORT_SYMBOL vmlinux 0x15fabf71 of_platform_device_create +EXPORT_SYMBOL vmlinux 0x160a65f3 generic_getxattr +EXPORT_SYMBOL vmlinux 0x162ccc0c lg_local_lock +EXPORT_SYMBOL vmlinux 0x162f13bd blk_mq_all_tag_busy_iter +EXPORT_SYMBOL vmlinux 0x16305289 warn_slowpath_null +EXPORT_SYMBOL vmlinux 0x16309d52 skb_copy_datagram_iter +EXPORT_SYMBOL vmlinux 0x165a9e63 write_one_page +EXPORT_SYMBOL vmlinux 0x1663c3a0 pci_alloc_dev +EXPORT_SYMBOL vmlinux 0x1683a50b radix_tree_delete +EXPORT_SYMBOL vmlinux 0x16993ae8 __blk_end_request +EXPORT_SYMBOL vmlinux 0x16a272b6 pid_task +EXPORT_SYMBOL vmlinux 0x16bc7166 ip_mc_dec_group +EXPORT_SYMBOL vmlinux 0x16cff844 tty_port_carrier_raised +EXPORT_SYMBOL vmlinux 0x16d7acbb file_remove_privs +EXPORT_SYMBOL vmlinux 0x1715053e bh_submit_read +EXPORT_SYMBOL vmlinux 0x171685fc sock_get_timestamp +EXPORT_SYMBOL vmlinux 0x174afb1a __sg_page_iter_next +EXPORT_SYMBOL vmlinux 0x1751b075 scsi_is_host_device +EXPORT_SYMBOL vmlinux 0x175e434d ndo_dflt_fdb_dump +EXPORT_SYMBOL vmlinux 0x1760ba65 ppp_input_error +EXPORT_SYMBOL vmlinux 0x176e97f0 pcim_pin_device +EXPORT_SYMBOL vmlinux 0x177d02aa pci_save_state +EXPORT_SYMBOL vmlinux 0x1784f057 dispc_ovl_set_fifo_threshold +EXPORT_SYMBOL vmlinux 0x1787cd3c snd_ctl_new1 +EXPORT_SYMBOL vmlinux 0x178d9ec9 sk_filter +EXPORT_SYMBOL vmlinux 0x1798ba2a eth_gro_receive +EXPORT_SYMBOL vmlinux 0x17a142df __copy_from_user +EXPORT_SYMBOL vmlinux 0x17b1125d gen_kill_estimator +EXPORT_SYMBOL vmlinux 0x17b56742 scsi_add_host_with_dma +EXPORT_SYMBOL vmlinux 0x17e35eb8 __seq_open_private +EXPORT_SYMBOL vmlinux 0x17f6b1eb tcf_hash_insert +EXPORT_SYMBOL vmlinux 0x181e2990 arm_dma_zone_size +EXPORT_SYMBOL vmlinux 0x18252cd4 elv_rb_find +EXPORT_SYMBOL vmlinux 0x1829d188 wait_woken +EXPORT_SYMBOL vmlinux 0x18304aa9 scsi_is_target_device +EXPORT_SYMBOL vmlinux 0x183e16ac init_task +EXPORT_SYMBOL vmlinux 0x183fa88b mempool_alloc_slab +EXPORT_SYMBOL vmlinux 0x184b82fb mmc_vddrange_to_ocrmask +EXPORT_SYMBOL vmlinux 0x185a87e4 inet_sk_rebuild_header +EXPORT_SYMBOL vmlinux 0x188a3dfb timespec_trunc +EXPORT_SYMBOL vmlinux 0x188c5ae8 crypto_sha256_finup +EXPORT_SYMBOL vmlinux 0x18945df3 i2c_smbus_read_word_data +EXPORT_SYMBOL vmlinux 0x189868d7 get_random_bytes_arch +EXPORT_SYMBOL vmlinux 0x189dbc72 mmc_fixup_device +EXPORT_SYMBOL vmlinux 0x18a760c2 of_get_next_parent +EXPORT_SYMBOL vmlinux 0x18acaefe tcp_rtx_synack +EXPORT_SYMBOL vmlinux 0x18bd76a4 _raw_spin_trylock +EXPORT_SYMBOL vmlinux 0x18c07198 rtnl_set_sk_err +EXPORT_SYMBOL vmlinux 0x18c2227f cpu_rmap_update +EXPORT_SYMBOL vmlinux 0x18e91463 dev_emerg +EXPORT_SYMBOL vmlinux 0x18eaf3a2 __skb_flow_get_ports +EXPORT_SYMBOL vmlinux 0x18f2b5d1 led_blink_set_oneshot +EXPORT_SYMBOL vmlinux 0x1904297c sock_recvmsg +EXPORT_SYMBOL vmlinux 0x1910b015 PDE_DATA +EXPORT_SYMBOL vmlinux 0x1922e624 ac97_bus_type +EXPORT_SYMBOL vmlinux 0x192d47b6 dev_mc_init +EXPORT_SYMBOL vmlinux 0x19561306 phy_register_fixup_for_uid +EXPORT_SYMBOL vmlinux 0x19610e1f cpu_all_bits +EXPORT_SYMBOL vmlinux 0x19753449 pfifo_qdisc_ops +EXPORT_SYMBOL vmlinux 0x197dc3b3 omap_set_dma_src_burst_mode +EXPORT_SYMBOL vmlinux 0x198788b4 snd_lookup_oss_minor_data +EXPORT_SYMBOL vmlinux 0x199ed0cd net_disable_timestamp +EXPORT_SYMBOL vmlinux 0x19aef619 pci_release_regions +EXPORT_SYMBOL vmlinux 0x19b81d1f devm_kvasprintf +EXPORT_SYMBOL vmlinux 0x19bd383b security_secmark_refcount_dec +EXPORT_SYMBOL vmlinux 0x19c038f5 pm860x_page_bulk_read +EXPORT_SYMBOL vmlinux 0x19cc46cf dma_mark_declared_memory_occupied +EXPORT_SYMBOL vmlinux 0x19f08b00 fb_firmware_edid +EXPORT_SYMBOL vmlinux 0x19f5809b dm_ratelimit_state +EXPORT_SYMBOL vmlinux 0x1a16a440 amba_request_regions +EXPORT_SYMBOL vmlinux 0x1a20c540 omap_vrfb_supported +EXPORT_SYMBOL vmlinux 0x1a4464b0 blk_init_queue +EXPORT_SYMBOL vmlinux 0x1a555549 unregister_shrinker +EXPORT_SYMBOL vmlinux 0x1a56ff5f dev_vprintk_emit +EXPORT_SYMBOL vmlinux 0x1a65f4ad __arm_ioremap_pfn +EXPORT_SYMBOL vmlinux 0x1a7b6eac __register_chrdev +EXPORT_SYMBOL vmlinux 0x1a851b6b dev_queue_xmit_accel +EXPORT_SYMBOL vmlinux 0x1a978bda set_disk_ro +EXPORT_SYMBOL vmlinux 0x1aa77263 rtnl_unicast +EXPORT_SYMBOL vmlinux 0x1ad1f2e7 _memcpy_fromio +EXPORT_SYMBOL vmlinux 0x1ae283c8 mutex_lock_interruptible +EXPORT_SYMBOL vmlinux 0x1ae5b051 __mark_inode_dirty +EXPORT_SYMBOL vmlinux 0x1ae68508 amba_release_regions +EXPORT_SYMBOL vmlinux 0x1afd086f devm_ioremap +EXPORT_SYMBOL vmlinux 0x1b015d25 bitmap_parselist +EXPORT_SYMBOL vmlinux 0x1b06a209 blk_set_default_limits +EXPORT_SYMBOL vmlinux 0x1b2d6d2c qcom_scm_cpu_power_down +EXPORT_SYMBOL vmlinux 0x1b3be225 tty_flip_buffer_push +EXPORT_SYMBOL vmlinux 0x1b4f11d8 scsi_add_device +EXPORT_SYMBOL vmlinux 0x1b6314fd in_aton +EXPORT_SYMBOL vmlinux 0x1b6389e1 of_mdiobus_register +EXPORT_SYMBOL vmlinux 0x1b69bff1 adjust_managed_page_count +EXPORT_SYMBOL vmlinux 0x1b82fefa md_unplug +EXPORT_SYMBOL vmlinux 0x1b8ae66a bio_get_nr_vecs +EXPORT_SYMBOL vmlinux 0x1b96475e snd_pcm_hw_constraint_ratdens +EXPORT_SYMBOL vmlinux 0x1b978d2a elm_decode_bch_error_page +EXPORT_SYMBOL vmlinux 0x1ba7324e ip_defrag +EXPORT_SYMBOL vmlinux 0x1bb31047 add_timer +EXPORT_SYMBOL vmlinux 0x1bbda2f1 inet6_unregister_protosw +EXPORT_SYMBOL vmlinux 0x1bbf0e6d pci_lost_interrupt +EXPORT_SYMBOL vmlinux 0x1bc3a486 blk_mq_free_tag_set +EXPORT_SYMBOL vmlinux 0x1bc401c8 blk_rq_count_integrity_sg +EXPORT_SYMBOL vmlinux 0x1bef3f9e do_map_probe +EXPORT_SYMBOL vmlinux 0x1bfa0e4e of_match_device +EXPORT_SYMBOL vmlinux 0x1c0d09fa dev_mc_add +EXPORT_SYMBOL vmlinux 0x1c135811 locks_free_lock +EXPORT_SYMBOL vmlinux 0x1c14010e security_path_mknod +EXPORT_SYMBOL vmlinux 0x1c1747bc phy_init_eee +EXPORT_SYMBOL vmlinux 0x1c2af6c9 led_blink_set +EXPORT_SYMBOL vmlinux 0x1c3edc4c simple_nosetlease +EXPORT_SYMBOL vmlinux 0x1c5e3878 icst525_idx2s +EXPORT_SYMBOL vmlinux 0x1c6999be pci_enable_msix +EXPORT_SYMBOL vmlinux 0x1c720057 padata_alloc +EXPORT_SYMBOL vmlinux 0x1c72c315 devm_ioremap_nocache +EXPORT_SYMBOL vmlinux 0x1c74a387 mmc_can_discard +EXPORT_SYMBOL vmlinux 0x1c766079 pci_iomap_range +EXPORT_SYMBOL vmlinux 0x1c9be6d7 ps2_init +EXPORT_SYMBOL vmlinux 0x1ca70bc3 bio_advance +EXPORT_SYMBOL vmlinux 0x1ce6399d lock_two_nondirectories +EXPORT_SYMBOL vmlinux 0x1cf2c4ad jbd2_journal_get_write_access +EXPORT_SYMBOL vmlinux 0x1cf3a45a uart_update_timeout +EXPORT_SYMBOL vmlinux 0x1cfb04fa finish_wait +EXPORT_SYMBOL vmlinux 0x1d027e4b snd_pcm_format_signed +EXPORT_SYMBOL vmlinux 0x1d035750 audit_log_task_info +EXPORT_SYMBOL vmlinux 0x1d3a4534 __tracepoint_kmalloc_node +EXPORT_SYMBOL vmlinux 0x1d3d02f3 genphy_update_link +EXPORT_SYMBOL vmlinux 0x1d555f20 __nla_put_nohdr +EXPORT_SYMBOL vmlinux 0x1dae538f sock_i_uid +EXPORT_SYMBOL vmlinux 0x1db3753c free_task +EXPORT_SYMBOL vmlinux 0x1db6a30a dss_mgr_set_lcd_config +EXPORT_SYMBOL vmlinux 0x1db7dc40 pgprot_kernel +EXPORT_SYMBOL vmlinux 0x1dc36131 fb_destroy_modedb +EXPORT_SYMBOL vmlinux 0x1dd571e6 fb_copy_cmap +EXPORT_SYMBOL vmlinux 0x1df13c00 dcb_ieee_delapp +EXPORT_SYMBOL vmlinux 0x1e047854 warn_slowpath_fmt +EXPORT_SYMBOL vmlinux 0x1e26be3b get_anon_bdev +EXPORT_SYMBOL vmlinux 0x1e44d724 tcp_md5_do_lookup +EXPORT_SYMBOL vmlinux 0x1e621eb2 tso_start +EXPORT_SYMBOL vmlinux 0x1e6d26a8 strstr +EXPORT_SYMBOL vmlinux 0x1e8ad3c1 skb_make_writable +EXPORT_SYMBOL vmlinux 0x1e9edfb7 seq_hlist_start_head_rcu +EXPORT_SYMBOL vmlinux 0x1ede0404 copy_from_iter +EXPORT_SYMBOL vmlinux 0x1eeb848e __percpu_counter_sum +EXPORT_SYMBOL vmlinux 0x1ef86443 blk_queue_prep_rq +EXPORT_SYMBOL vmlinux 0x1f066b97 __module_put_and_exit +EXPORT_SYMBOL vmlinux 0x1f0e4e33 gnet_stats_copy_basic +EXPORT_SYMBOL vmlinux 0x1f105303 cpufreq_global_kobject +EXPORT_SYMBOL vmlinux 0x1f157a1e iget_failed +EXPORT_SYMBOL vmlinux 0x1f1c5659 blk_mq_abort_requeue_list +EXPORT_SYMBOL vmlinux 0x1f219232 blk_rq_set_block_pc +EXPORT_SYMBOL vmlinux 0x1f2ced21 vme_bus_type +EXPORT_SYMBOL vmlinux 0x1f2efd06 pci_iomap +EXPORT_SYMBOL vmlinux 0x1f349e25 truncate_pagecache +EXPORT_SYMBOL vmlinux 0x1f4005a8 skb_split +EXPORT_SYMBOL vmlinux 0x1f47e2ad sock_no_connect +EXPORT_SYMBOL vmlinux 0x1f749ec7 pcibios_bus_to_resource +EXPORT_SYMBOL vmlinux 0x1f763b20 sock_create +EXPORT_SYMBOL vmlinux 0x1f7e4cc6 padata_stop +EXPORT_SYMBOL vmlinux 0x1f7e807f kstrtoint_from_user +EXPORT_SYMBOL vmlinux 0x1f9fe831 __sync_dirty_buffer +EXPORT_SYMBOL vmlinux 0x1fa41d43 skb_checksum_trimmed +EXPORT_SYMBOL vmlinux 0x1fa90a8b __cleancache_init_shared_fs +EXPORT_SYMBOL vmlinux 0x1fab5905 wait_for_completion +EXPORT_SYMBOL vmlinux 0x1fb7fd81 release_firmware +EXPORT_SYMBOL vmlinux 0x1fbd16da ip_tos2prio +EXPORT_SYMBOL vmlinux 0x1fc598d8 phy_attach_direct +EXPORT_SYMBOL vmlinux 0x1fcc6efa cpufreq_get_policy +EXPORT_SYMBOL vmlinux 0x1fd07fff kdb_grepping_flag +EXPORT_SYMBOL vmlinux 0x1fd3523d cdrom_open +EXPORT_SYMBOL vmlinux 0x1fe912f1 netdev_alloc_frag +EXPORT_SYMBOL vmlinux 0x1fe9f800 unregister_cpu_notifier +EXPORT_SYMBOL vmlinux 0x1ff488f4 dcb_ieee_getapp_mask +EXPORT_SYMBOL vmlinux 0x20000329 simple_strtoul +EXPORT_SYMBOL vmlinux 0x2003c839 __init_rwsem +EXPORT_SYMBOL vmlinux 0x200b2041 in6addr_any +EXPORT_SYMBOL vmlinux 0x201cf47e snd_pcm_lib_preallocate_pages +EXPORT_SYMBOL vmlinux 0x20205f64 trace_print_array_seq +EXPORT_SYMBOL vmlinux 0x2020aef7 blkdev_reread_part +EXPORT_SYMBOL vmlinux 0x2029606c truncate_inode_pages_range +EXPORT_SYMBOL vmlinux 0x202cee4f scsi_target_quiesce +EXPORT_SYMBOL vmlinux 0x20421305 on_each_cpu_mask +EXPORT_SYMBOL vmlinux 0x204c19f5 tcp_alloc_md5sig_pool +EXPORT_SYMBOL vmlinux 0x20587147 scsi_device_put +EXPORT_SYMBOL vmlinux 0x205e0d5b pci_dev_get +EXPORT_SYMBOL vmlinux 0x205ec8de omap_dispc_register_isr +EXPORT_SYMBOL vmlinux 0x2072ee9b request_threaded_irq +EXPORT_SYMBOL vmlinux 0x20882bf1 vlan_dev_vlan_id +EXPORT_SYMBOL vmlinux 0x20917887 inc_nlink +EXPORT_SYMBOL vmlinux 0x20a789ac irq_set_chip_data +EXPORT_SYMBOL vmlinux 0x20c55ae0 sscanf +EXPORT_SYMBOL vmlinux 0x20d4a234 scsi_device_lookup +EXPORT_SYMBOL vmlinux 0x20d75c1f register_md_personality +EXPORT_SYMBOL vmlinux 0x20db9c91 scsi_print_result +EXPORT_SYMBOL vmlinux 0x210c013a snd_pcm_hw_constraint_mask64 +EXPORT_SYMBOL vmlinux 0x21110dbf mmioset +EXPORT_SYMBOL vmlinux 0x211331fa __divsi3 +EXPORT_SYMBOL vmlinux 0x213efa75 eth_mac_addr +EXPORT_SYMBOL vmlinux 0x2152022f from_kprojid_munged +EXPORT_SYMBOL vmlinux 0x2157965d vme_dma_pci_attribute +EXPORT_SYMBOL vmlinux 0x2161cec0 pci_disable_device +EXPORT_SYMBOL vmlinux 0x216d759a mmiocpy +EXPORT_SYMBOL vmlinux 0x216f39cc sock_kzfree_s +EXPORT_SYMBOL vmlinux 0x21773903 pipe_lock +EXPORT_SYMBOL vmlinux 0x2198c13d param_get_ushort +EXPORT_SYMBOL vmlinux 0x21cd2972 netlink_ack +EXPORT_SYMBOL vmlinux 0x21d9ec75 pci_scan_slot +EXPORT_SYMBOL vmlinux 0x21df74d9 bitmap_set +EXPORT_SYMBOL vmlinux 0x21f7eb8f claim_fiq +EXPORT_SYMBOL vmlinux 0x21feedee dma_release_from_coherent +EXPORT_SYMBOL vmlinux 0x22056794 padata_remove_cpu +EXPORT_SYMBOL vmlinux 0x2205e60d pci_bus_set_ops +EXPORT_SYMBOL vmlinux 0x22142186 mtd_concat_create +EXPORT_SYMBOL vmlinux 0x221544b5 of_find_i2c_device_by_node +EXPORT_SYMBOL vmlinux 0x221a08a8 release_pages +EXPORT_SYMBOL vmlinux 0x222ae716 tcp_ioctl +EXPORT_SYMBOL vmlinux 0x222e7ce2 sysfs_streq +EXPORT_SYMBOL vmlinux 0x222fa684 lg_global_lock +EXPORT_SYMBOL vmlinux 0x2232a8a5 mempool_free +EXPORT_SYMBOL vmlinux 0x223cc898 omap_vrfb_max_height +EXPORT_SYMBOL vmlinux 0x2256fafa div64_u64_rem +EXPORT_SYMBOL vmlinux 0x226a7e39 cpufreq_generic_suspend +EXPORT_SYMBOL vmlinux 0x22758d15 generic_show_options +EXPORT_SYMBOL vmlinux 0x2276db98 kstrtoint +EXPORT_SYMBOL vmlinux 0x2277d558 mx53_revision +EXPORT_SYMBOL vmlinux 0x22830711 edma_clear_event +EXPORT_SYMBOL vmlinux 0x228f47a1 generic_file_readonly_mmap +EXPORT_SYMBOL vmlinux 0x229ebeee inet_csk_reqsk_queue_drop +EXPORT_SYMBOL vmlinux 0x22b325d5 kd_mksound +EXPORT_SYMBOL vmlinux 0x22c84f0f bio_integrity_prep +EXPORT_SYMBOL vmlinux 0x22cbf271 shdma_chan_filter +EXPORT_SYMBOL vmlinux 0x22d4dd3e __insert_inode_hash +EXPORT_SYMBOL vmlinux 0x22d75c73 netpoll_setup +EXPORT_SYMBOL vmlinux 0x22dc61f5 mount_ns +EXPORT_SYMBOL vmlinux 0x22dfdd06 radix_tree_tag_set +EXPORT_SYMBOL vmlinux 0x22fc4f3a trace_print_flags_seq +EXPORT_SYMBOL vmlinux 0x230d47bd max8925_bulk_write +EXPORT_SYMBOL vmlinux 0x23187d3b get_mm_exe_file +EXPORT_SYMBOL vmlinux 0x231951ae pci_select_bars +EXPORT_SYMBOL vmlinux 0x231d4001 fb_edid_add_monspecs +EXPORT_SYMBOL vmlinux 0x233a3932 snd_pcm_lib_free_pages +EXPORT_SYMBOL vmlinux 0x233bece3 input_reset_device +EXPORT_SYMBOL vmlinux 0x2347da94 mark_info_dirty +EXPORT_SYMBOL vmlinux 0x234ae0bc tty_chars_in_buffer +EXPORT_SYMBOL vmlinux 0x23682b81 swiotlb_dma_supported +EXPORT_SYMBOL vmlinux 0x238a0a10 ppp_output_wakeup +EXPORT_SYMBOL vmlinux 0x239b1be5 devfreq_add_device +EXPORT_SYMBOL vmlinux 0x239d70a4 __brelse +EXPORT_SYMBOL vmlinux 0x23a574fd security_secmark_relabel_packet +EXPORT_SYMBOL vmlinux 0x23aa49d3 _raw_read_trylock +EXPORT_SYMBOL vmlinux 0x23b9d6e2 mangle_path +EXPORT_SYMBOL vmlinux 0x23c79643 netdev_class_remove_file_ns +EXPORT_SYMBOL vmlinux 0x23c8f257 slhc_uncompress +EXPORT_SYMBOL vmlinux 0x23fa9c13 keyring_search +EXPORT_SYMBOL vmlinux 0x23fd3028 vmalloc_node +EXPORT_SYMBOL vmlinux 0x2400b5a0 bdi_register +EXPORT_SYMBOL vmlinux 0x241f8130 genphy_resume +EXPORT_SYMBOL vmlinux 0x24212d86 __frontswap_invalidate_page +EXPORT_SYMBOL vmlinux 0x242de133 sock_no_bind +EXPORT_SYMBOL vmlinux 0x24428be5 strncpy_from_user +EXPORT_SYMBOL vmlinux 0x2459bbcc console_set_on_cmdline +EXPORT_SYMBOL vmlinux 0x245bad41 iov_iter_npages +EXPORT_SYMBOL vmlinux 0x245c5be5 reservation_object_reserve_shared +EXPORT_SYMBOL vmlinux 0x245db47f nf_ip6_checksum +EXPORT_SYMBOL vmlinux 0x2475a699 rawv6_mh_filter_unregister +EXPORT_SYMBOL vmlinux 0x2482e688 vsprintf +EXPORT_SYMBOL vmlinux 0x248a49eb devfreq_interval_update +EXPORT_SYMBOL vmlinux 0x24a29e3b register_sound_mixer +EXPORT_SYMBOL vmlinux 0x24a94b26 snd_info_get_line +EXPORT_SYMBOL vmlinux 0x24dea446 mpage_writepage +EXPORT_SYMBOL vmlinux 0x24ec6d05 uart_resume_port +EXPORT_SYMBOL vmlinux 0x24f6d11b genphy_config_aneg +EXPORT_SYMBOL vmlinux 0x24f8bfef block_truncate_page +EXPORT_SYMBOL vmlinux 0x24fdac79 wake_bit_function +EXPORT_SYMBOL vmlinux 0x250113b4 memory_read_from_buffer +EXPORT_SYMBOL vmlinux 0x251bb1a4 blk_queue_chunk_sectors +EXPORT_SYMBOL vmlinux 0x25277497 rfkill_register +EXPORT_SYMBOL vmlinux 0x2527a087 vme_slave_set +EXPORT_SYMBOL vmlinux 0x2539ed3a of_parse_phandle_with_fixed_args +EXPORT_SYMBOL vmlinux 0x25540332 inode_sb_list_lock +EXPORT_SYMBOL vmlinux 0x255acb5f tegra_powergate_sequence_power_up +EXPORT_SYMBOL vmlinux 0x2570a138 reservation_seqcount_string +EXPORT_SYMBOL vmlinux 0x25820c64 fs_overflowuid +EXPORT_SYMBOL vmlinux 0x2592dcfa filemap_fdatawait +EXPORT_SYMBOL vmlinux 0x2595f7c4 mmc_free_host +EXPORT_SYMBOL vmlinux 0x2599e022 snd_pcm_set_sync +EXPORT_SYMBOL vmlinux 0x25a92a19 proc_symlink +EXPORT_SYMBOL vmlinux 0x25c1ab45 backlight_device_unregister +EXPORT_SYMBOL vmlinux 0x25c38edc mdiobus_register +EXPORT_SYMBOL vmlinux 0x25cd2d3c lease_modify +EXPORT_SYMBOL vmlinux 0x25d8f486 of_phy_register_fixed_link +EXPORT_SYMBOL vmlinux 0x25e9d4bd resource_list_free +EXPORT_SYMBOL vmlinux 0x25ef4a92 filp_close +EXPORT_SYMBOL vmlinux 0x25fe6f3a inet_frag_destroy +EXPORT_SYMBOL vmlinux 0x2605ee51 dev_close +EXPORT_SYMBOL vmlinux 0x263beb75 ecryptfs_get_versions +EXPORT_SYMBOL vmlinux 0x264584a1 padata_set_cpumasks +EXPORT_SYMBOL vmlinux 0x264d7cb5 xfrm_state_walk +EXPORT_SYMBOL vmlinux 0x2650d835 sysctl_ip_early_demux +EXPORT_SYMBOL vmlinux 0x268498d7 user_revoke +EXPORT_SYMBOL vmlinux 0x269540a8 simple_getattr +EXPORT_SYMBOL vmlinux 0x269e5054 of_device_get_match_data +EXPORT_SYMBOL vmlinux 0x26a2fc3b amba_device_register +EXPORT_SYMBOL vmlinux 0x26b2cc35 inet_add_protocol +EXPORT_SYMBOL vmlinux 0x26bb950b __kfifo_from_user_r +EXPORT_SYMBOL vmlinux 0x26c2128c lockref_mark_dead +EXPORT_SYMBOL vmlinux 0x26c9763b wireless_send_event +EXPORT_SYMBOL vmlinux 0x26d3886d dev_get_by_name +EXPORT_SYMBOL vmlinux 0x26d7c43c put_filp +EXPORT_SYMBOL vmlinux 0x26e76fb8 sysctl_udp_wmem_min +EXPORT_SYMBOL vmlinux 0x2729ebac vm_insert_pfn +EXPORT_SYMBOL vmlinux 0x2735abdd km_policy_expired +EXPORT_SYMBOL vmlinux 0x273c41ae dm_register_target +EXPORT_SYMBOL vmlinux 0x2753c6fe generic_file_direct_write +EXPORT_SYMBOL vmlinux 0x275ef902 __init_waitqueue_head +EXPORT_SYMBOL vmlinux 0x277f4f90 ipv6_chk_addr +EXPORT_SYMBOL vmlinux 0x27864d57 memparse +EXPORT_SYMBOL vmlinux 0x27866435 security_xfrm_state_alloc +EXPORT_SYMBOL vmlinux 0x279bae0f flow_get_u32_dst +EXPORT_SYMBOL vmlinux 0x27a40e66 of_get_cpu_node +EXPORT_SYMBOL vmlinux 0x27acdbc5 udp_sendmsg +EXPORT_SYMBOL vmlinux 0x27bbf221 disable_irq_nosync +EXPORT_SYMBOL vmlinux 0x27de57a6 netdev_bonding_info_change +EXPORT_SYMBOL vmlinux 0x27e1a049 printk +EXPORT_SYMBOL vmlinux 0x27e6014c of_device_is_big_endian +EXPORT_SYMBOL vmlinux 0x27f4def6 load_nls +EXPORT_SYMBOL vmlinux 0x27fbe158 tcf_exts_validate +EXPORT_SYMBOL vmlinux 0x280c5024 blk_integrity_compare +EXPORT_SYMBOL vmlinux 0x28118cb6 __get_user_1 +EXPORT_SYMBOL vmlinux 0x2812b23b pcie_set_readrq +EXPORT_SYMBOL vmlinux 0x281823c5 __kfifo_out_peek +EXPORT_SYMBOL vmlinux 0x2819a5b3 swiotlb_unmap_sg_attrs +EXPORT_SYMBOL vmlinux 0x2821235a devm_get_gpiod_from_child +EXPORT_SYMBOL vmlinux 0x2822b3f1 dmam_declare_coherent_memory +EXPORT_SYMBOL vmlinux 0x2829ddb1 wireless_spy_update +EXPORT_SYMBOL vmlinux 0x282d149e jbd2_trans_will_send_data_barrier +EXPORT_SYMBOL vmlinux 0x2833002e genlmsg_multicast_allns +EXPORT_SYMBOL vmlinux 0x28491ee6 ps2_sendbyte +EXPORT_SYMBOL vmlinux 0x284ad886 snd_pcm_hw_constraint_msbits +EXPORT_SYMBOL vmlinux 0x28599113 swiotlb_sync_single_for_cpu +EXPORT_SYMBOL vmlinux 0x285b7930 inet_csk_clear_xmit_timers +EXPORT_SYMBOL vmlinux 0x287c0970 pagevec_lookup +EXPORT_SYMBOL vmlinux 0x289403a8 nf_log_unregister +EXPORT_SYMBOL vmlinux 0x28a2ed02 scsi_build_sense_buffer +EXPORT_SYMBOL vmlinux 0x28d6861d __vmalloc +EXPORT_SYMBOL vmlinux 0x28f4378d param_set_invbool +EXPORT_SYMBOL vmlinux 0x291ae0d7 netdev_lower_get_next +EXPORT_SYMBOL vmlinux 0x29311901 param_ops_ulong +EXPORT_SYMBOL vmlinux 0x2931b67c sg_alloc_table_from_pages +EXPORT_SYMBOL vmlinux 0x29537c9e alloc_chrdev_region +EXPORT_SYMBOL vmlinux 0x295f636d omapdss_register_output +EXPORT_SYMBOL vmlinux 0x29657fb7 elv_rq_merge_ok +EXPORT_SYMBOL vmlinux 0x296d9cc5 sg_miter_start +EXPORT_SYMBOL vmlinux 0x2979c6b9 neigh_connected_output +EXPORT_SYMBOL vmlinux 0x29b1b22d __nlmsg_put +EXPORT_SYMBOL vmlinux 0x29d2f329 snd_pcm_limit_hw_rates +EXPORT_SYMBOL vmlinux 0x29dbef41 blkdev_issue_zeroout +EXPORT_SYMBOL vmlinux 0x29e1b020 ida_simple_remove +EXPORT_SYMBOL vmlinux 0x29fd81e3 kill_bdev +EXPORT_SYMBOL vmlinux 0x29fdda53 kstrtos8_from_user +EXPORT_SYMBOL vmlinux 0x29fe8b91 devm_devfreq_remove_device +EXPORT_SYMBOL vmlinux 0x2a025ca3 free_netdev +EXPORT_SYMBOL vmlinux 0x2a08d3b1 skb_queue_tail +EXPORT_SYMBOL vmlinux 0x2a303d4d check_signature +EXPORT_SYMBOL vmlinux 0x2a3aa678 _test_and_clear_bit +EXPORT_SYMBOL vmlinux 0x2a41d392 nobh_write_end +EXPORT_SYMBOL vmlinux 0x2a59113e flush_signals +EXPORT_SYMBOL vmlinux 0x2a7cac99 pci_add_resource +EXPORT_SYMBOL vmlinux 0x2a80d353 omapdss_default_get_recommended_bpp +EXPORT_SYMBOL vmlinux 0x2a999b88 sk_stream_wait_memory +EXPORT_SYMBOL vmlinux 0x2a9ae418 filemap_map_pages +EXPORT_SYMBOL vmlinux 0x2aa0e4fc strncasecmp +EXPORT_SYMBOL vmlinux 0x2aad35de mb_cache_destroy +EXPORT_SYMBOL vmlinux 0x2ab1c62f tty_register_driver +EXPORT_SYMBOL vmlinux 0x2ac254bf scsi_bios_ptable +EXPORT_SYMBOL vmlinux 0x2acf0feb vfs_fstat +EXPORT_SYMBOL vmlinux 0x2ad5d3dd contig_page_data +EXPORT_SYMBOL vmlinux 0x2ae012c0 __d_drop +EXPORT_SYMBOL vmlinux 0x2ae143d7 lock_sock_nested +EXPORT_SYMBOL vmlinux 0x2af32b6b __skb_checksum_complete_head +EXPORT_SYMBOL vmlinux 0x2b0ba2b0 scsi_sense_desc_find +EXPORT_SYMBOL vmlinux 0x2b12925d cpumask_next_and +EXPORT_SYMBOL vmlinux 0x2b2571b5 msm_pinctrl_probe +EXPORT_SYMBOL vmlinux 0x2b2ce78b kstrtos8 +EXPORT_SYMBOL vmlinux 0x2b3480df inet6_protos +EXPORT_SYMBOL vmlinux 0x2b35dd54 kernel_getsockopt +EXPORT_SYMBOL vmlinux 0x2b391ba9 empty_aops +EXPORT_SYMBOL vmlinux 0x2b3d8da4 tty_schedule_flip +EXPORT_SYMBOL vmlinux 0x2b4e956e mempool_create +EXPORT_SYMBOL vmlinux 0x2b7ed47d __pci_register_driver +EXPORT_SYMBOL vmlinux 0x2b87626a lru_cache_add_file +EXPORT_SYMBOL vmlinux 0x2b8f24c2 dcache_readdir +EXPORT_SYMBOL vmlinux 0x2b9da7a4 genl_lock +EXPORT_SYMBOL vmlinux 0x2ba707a8 sysctl_tcp_low_latency +EXPORT_SYMBOL vmlinux 0x2bc9719f dcbnl_ieee_notify +EXPORT_SYMBOL vmlinux 0x2be0f12d dql_completed +EXPORT_SYMBOL vmlinux 0x2bf6d671 __scsi_alloc_queue +EXPORT_SYMBOL vmlinux 0x2c03c785 wait_for_key_construction +EXPORT_SYMBOL vmlinux 0x2c10e3c1 nf_unregister_sockopt +EXPORT_SYMBOL vmlinux 0x2c14323a kstrtol_from_user +EXPORT_SYMBOL vmlinux 0x2c256e1f input_scancode_to_scalar +EXPORT_SYMBOL vmlinux 0x2c25d660 snd_timer_close +EXPORT_SYMBOL vmlinux 0x2c2a558a xfrm_unregister_km +EXPORT_SYMBOL vmlinux 0x2c54c12a pcie_capability_read_word +EXPORT_SYMBOL vmlinux 0x2c55cec1 get_acl +EXPORT_SYMBOL vmlinux 0x2c56ef94 __netlink_dump_start +EXPORT_SYMBOL vmlinux 0x2c7b7ac8 current_fs_time +EXPORT_SYMBOL vmlinux 0x2c7c8e9a pcibios_min_mem +EXPORT_SYMBOL vmlinux 0x2c81ec75 __irq_regs +EXPORT_SYMBOL vmlinux 0x2c85b160 bio_clone_bioset +EXPORT_SYMBOL vmlinux 0x2c8e549c snd_timer_new +EXPORT_SYMBOL vmlinux 0x2c900d91 cpufreq_put_global_kobject +EXPORT_SYMBOL vmlinux 0x2c916945 set_device_ro +EXPORT_SYMBOL vmlinux 0x2c9732f8 gen_pool_destroy +EXPORT_SYMBOL vmlinux 0x2c988955 prepare_to_wait_exclusive +EXPORT_SYMBOL vmlinux 0x2ca283a2 kernel_write +EXPORT_SYMBOL vmlinux 0x2ca3573c sock_no_accept +EXPORT_SYMBOL vmlinux 0x2ca66f85 dmam_free_coherent +EXPORT_SYMBOL vmlinux 0x2cb7930b param_ops_int +EXPORT_SYMBOL vmlinux 0x2cd8b361 snd_jack_set_key +EXPORT_SYMBOL vmlinux 0x2ce6e5d2 pci_set_dma_max_seg_size +EXPORT_SYMBOL vmlinux 0x2cfb9093 ip_setsockopt +EXPORT_SYMBOL vmlinux 0x2d140a58 genl_unlock +EXPORT_SYMBOL vmlinux 0x2d1bfbbe set_security_override +EXPORT_SYMBOL vmlinux 0x2d2bbbf7 snd_power_wait +EXPORT_SYMBOL vmlinux 0x2d30596c from_kqid_munged +EXPORT_SYMBOL vmlinux 0x2d3385d3 system_wq +EXPORT_SYMBOL vmlinux 0x2d3e2e5c dm_get_device +EXPORT_SYMBOL vmlinux 0x2d45f80b unregister_quota_format +EXPORT_SYMBOL vmlinux 0x2d5fcf21 param_ops_invbool +EXPORT_SYMBOL vmlinux 0x2d6507b5 _find_next_zero_bit_le +EXPORT_SYMBOL vmlinux 0x2d770676 dispc_mgr_go +EXPORT_SYMBOL vmlinux 0x2d962c1e input_mt_assign_slots +EXPORT_SYMBOL vmlinux 0x2da1c72e vme_dma_list_free +EXPORT_SYMBOL vmlinux 0x2da9892c twl6040_power +EXPORT_SYMBOL vmlinux 0x2db1c33d proto_register +EXPORT_SYMBOL vmlinux 0x2dc14540 skb_pull +EXPORT_SYMBOL vmlinux 0x2dd808f6 neigh_for_each +EXPORT_SYMBOL vmlinux 0x2dd9a36b flex_array_shrink +EXPORT_SYMBOL vmlinux 0x2ddbbb48 bio_unmap_user +EXPORT_SYMBOL vmlinux 0x2deda4a1 security_sk_classify_flow +EXPORT_SYMBOL vmlinux 0x2dfa1f0a end_page_writeback +EXPORT_SYMBOL vmlinux 0x2e05d75d sock_no_getname +EXPORT_SYMBOL vmlinux 0x2e0b47b6 param_get_bool +EXPORT_SYMBOL vmlinux 0x2e19abea netlink_kernel_release +EXPORT_SYMBOL vmlinux 0x2e1ca751 clk_put +EXPORT_SYMBOL vmlinux 0x2e1e4d24 mb_cache_entry_free +EXPORT_SYMBOL vmlinux 0x2e2ce9e0 sysctl_tcp_syncookies +EXPORT_SYMBOL vmlinux 0x2e3f8175 __tracepoint_kfree +EXPORT_SYMBOL vmlinux 0x2e5810c6 __aeabi_unwind_cpp_pr1 +EXPORT_SYMBOL vmlinux 0x2e628b69 tcp_simple_retransmit +EXPORT_SYMBOL vmlinux 0x2e6760c5 dev_remove_pack +EXPORT_SYMBOL vmlinux 0x2ea6a4e2 scsi_execute_req_flags +EXPORT_SYMBOL vmlinux 0x2eb1366e pci_set_dma_seg_boundary +EXPORT_SYMBOL vmlinux 0x2ec524ad __kfifo_in_r +EXPORT_SYMBOL vmlinux 0x2ecd441b fence_free +EXPORT_SYMBOL vmlinux 0x2ed9ee1a lro_flush_all +EXPORT_SYMBOL vmlinux 0x2eddd92f __napi_schedule +EXPORT_SYMBOL vmlinux 0x2ef63ad6 scsi_dev_info_list_del_keyed +EXPORT_SYMBOL vmlinux 0x2efc77d5 sock_wmalloc +EXPORT_SYMBOL vmlinux 0x2f03fc4b security_secmark_refcount_inc +EXPORT_SYMBOL vmlinux 0x2f0a72e6 cros_ec_cmd_xfer +EXPORT_SYMBOL vmlinux 0x2f11f2ea dquot_operations +EXPORT_SYMBOL vmlinux 0x2f126c91 __xfrm_decode_session +EXPORT_SYMBOL vmlinux 0x2f1b5799 __page_symlink +EXPORT_SYMBOL vmlinux 0x2f20ebc9 gro_find_receive_by_type +EXPORT_SYMBOL vmlinux 0x2f26e73c snd_pcm_hw_constraint_minmax +EXPORT_SYMBOL vmlinux 0x2f3c69a5 misc_register +EXPORT_SYMBOL vmlinux 0x2f463da1 __alloc_page_frag +EXPORT_SYMBOL vmlinux 0x2f5f2a57 rps_sock_flow_table +EXPORT_SYMBOL vmlinux 0x2f610362 dev_uc_unsync +EXPORT_SYMBOL vmlinux 0x2f632f95 backlight_force_update +EXPORT_SYMBOL vmlinux 0x2f63ffdc write_cache_pages +EXPORT_SYMBOL vmlinux 0x2f65d8d9 mipi_dsi_dcs_nop +EXPORT_SYMBOL vmlinux 0x2f7105e0 send_sig +EXPORT_SYMBOL vmlinux 0x2f86b4da tty_free_termios +EXPORT_SYMBOL vmlinux 0x2f93b852 napi_complete_done +EXPORT_SYMBOL vmlinux 0x2f9fc04a skb_dequeue_tail +EXPORT_SYMBOL vmlinux 0x2fb6de5d add_device_randomness +EXPORT_SYMBOL vmlinux 0x2fddf93c vfs_iter_write +EXPORT_SYMBOL vmlinux 0x2fe252cc unregister_inet6addr_notifier +EXPORT_SYMBOL vmlinux 0x2fe46d8e netpoll_send_skb_on_dev +EXPORT_SYMBOL vmlinux 0x2ffa9d5a ioctl_by_bdev +EXPORT_SYMBOL vmlinux 0x303041c6 udp_flow_hashrnd +EXPORT_SYMBOL vmlinux 0x3060f867 bio_integrity_free +EXPORT_SYMBOL vmlinux 0x306a9e4c sock_kmalloc +EXPORT_SYMBOL vmlinux 0x307c2fd0 generic_check_addressable +EXPORT_SYMBOL vmlinux 0x3082a0b3 dss_feat_get_supported_color_modes +EXPORT_SYMBOL vmlinux 0x308aad56 omap_vrfb_min_phys_size +EXPORT_SYMBOL vmlinux 0x3096be16 names_cachep +EXPORT_SYMBOL vmlinux 0x309a09e9 __vfs_read +EXPORT_SYMBOL vmlinux 0x30a80826 __kfifo_from_user +EXPORT_SYMBOL vmlinux 0x30b7c55e update_region +EXPORT_SYMBOL vmlinux 0x30cab8d3 t10_pi_type1_ip +EXPORT_SYMBOL vmlinux 0x30d39f44 mipi_dsi_dcs_set_display_off +EXPORT_SYMBOL vmlinux 0x30dbf1e5 blk_run_queue +EXPORT_SYMBOL vmlinux 0x30dfaf5d inet_unregister_protosw +EXPORT_SYMBOL vmlinux 0x30e74134 tty_termios_copy_hw +EXPORT_SYMBOL vmlinux 0x3102d70b frontswap_curr_pages +EXPORT_SYMBOL vmlinux 0x310917fe sort +EXPORT_SYMBOL vmlinux 0x31107906 mnt_drop_write_file +EXPORT_SYMBOL vmlinux 0x311092d5 uart_match_port +EXPORT_SYMBOL vmlinux 0x3127d16d md_check_no_bitmap +EXPORT_SYMBOL vmlinux 0x3129a1eb d_lookup +EXPORT_SYMBOL vmlinux 0x3132723f dget_parent +EXPORT_SYMBOL vmlinux 0x3132ee65 __nand_calculate_ecc +EXPORT_SYMBOL vmlinux 0x31355b23 tcp_v4_md5_lookup +EXPORT_SYMBOL vmlinux 0x3135df61 pci_choose_state +EXPORT_SYMBOL vmlinux 0x31380354 getrawmonotonic64 +EXPORT_SYMBOL vmlinux 0x31433931 bio_add_page +EXPORT_SYMBOL vmlinux 0x3145216f pci_dev_present +EXPORT_SYMBOL vmlinux 0x3147857d default_red +EXPORT_SYMBOL vmlinux 0x3152f616 pci_assign_resource +EXPORT_SYMBOL vmlinux 0x315f4538 phy_start_aneg +EXPORT_SYMBOL vmlinux 0x31614072 snd_register_oss_device +EXPORT_SYMBOL vmlinux 0x31671f24 pci_try_set_mwi +EXPORT_SYMBOL vmlinux 0x31683780 kset_unregister +EXPORT_SYMBOL vmlinux 0x3174bd79 bitmap_clear +EXPORT_SYMBOL vmlinux 0x31805f80 __net_get_random_once +EXPORT_SYMBOL vmlinux 0x3191f109 __krealloc +EXPORT_SYMBOL vmlinux 0x31a4767f qcom_scm_hdcp_available +EXPORT_SYMBOL vmlinux 0x31b31f5c csum_partial_copy_nocheck +EXPORT_SYMBOL vmlinux 0x31d31011 posix_acl_from_xattr +EXPORT_SYMBOL vmlinux 0x31db3198 out_of_line_wait_on_bit +EXPORT_SYMBOL vmlinux 0x31df0e8b inet6_register_icmp_sender +EXPORT_SYMBOL vmlinux 0x31e4c265 km_new_mapping +EXPORT_SYMBOL vmlinux 0x31f0bb78 __kmap_atomic_idx +EXPORT_SYMBOL vmlinux 0x31f1b045 i2c_master_send +EXPORT_SYMBOL vmlinux 0x31fe8b85 pps_register_source +EXPORT_SYMBOL vmlinux 0x32137eea wait_on_page_bit +EXPORT_SYMBOL vmlinux 0x32450f04 udp_lib_unhash +EXPORT_SYMBOL vmlinux 0x328a05f1 strncpy +EXPORT_SYMBOL vmlinux 0x32907b91 idr_remove +EXPORT_SYMBOL vmlinux 0x32a48ebc gnet_stats_copy_queue +EXPORT_SYMBOL vmlinux 0x32b3225e unregister_binfmt +EXPORT_SYMBOL vmlinux 0x32f0bf16 pps_event +EXPORT_SYMBOL vmlinux 0x3316845e idr_get_next +EXPORT_SYMBOL vmlinux 0x3329b57b kobject_add +EXPORT_SYMBOL vmlinux 0x3330a47d gen_pool_free +EXPORT_SYMBOL vmlinux 0x333f4e36 pci_prepare_to_sleep +EXPORT_SYMBOL vmlinux 0x338ccf6c netif_receive_skb_sk +EXPORT_SYMBOL vmlinux 0x338fd863 remap_vmalloc_range +EXPORT_SYMBOL vmlinux 0x33c7435c prandom_u32_state +EXPORT_SYMBOL vmlinux 0x33dbfd93 tcp_memory_allocated +EXPORT_SYMBOL vmlinux 0x33e4b8f9 gen_pool_for_each_chunk +EXPORT_SYMBOL vmlinux 0x33f0768c cpufreq_quick_get_max +EXPORT_SYMBOL vmlinux 0x3402d8d2 nf_log_bind_pf +EXPORT_SYMBOL vmlinux 0x3414f2f9 done_path_create +EXPORT_SYMBOL vmlinux 0x34184afe current_kernel_time +EXPORT_SYMBOL vmlinux 0x341dbfa3 __per_cpu_offset +EXPORT_SYMBOL vmlinux 0x34240d20 inetpeer_invalidate_tree +EXPORT_SYMBOL vmlinux 0x342e8a71 security_path_chown +EXPORT_SYMBOL vmlinux 0x3447b7fd devfreq_monitor_resume +EXPORT_SYMBOL vmlinux 0x344b7739 prepare_to_wait_event +EXPORT_SYMBOL vmlinux 0x3465caa3 cpu_maps_update_begin +EXPORT_SYMBOL vmlinux 0x3468e21e tcp_md5_hash_skb_data +EXPORT_SYMBOL vmlinux 0x347013de nla_validate +EXPORT_SYMBOL vmlinux 0x349cba85 strchr +EXPORT_SYMBOL vmlinux 0x34b0c809 snd_pcm_mmap_data +EXPORT_SYMBOL vmlinux 0x34bf260a proc_mkdir_mode +EXPORT_SYMBOL vmlinux 0x34cf3bf9 tcp_child_process +EXPORT_SYMBOL vmlinux 0x34d0e7ca pci_get_device +EXPORT_SYMBOL vmlinux 0x34d5122b seq_open +EXPORT_SYMBOL vmlinux 0x34e92d2b unlock_rename +EXPORT_SYMBOL vmlinux 0x34f3484e security_tun_dev_attach_queue +EXPORT_SYMBOL vmlinux 0x34f4ff6b wake_up_process +EXPORT_SYMBOL vmlinux 0x3507a132 _raw_spin_lock_irq +EXPORT_SYMBOL vmlinux 0x35108cea inet6_register_protosw +EXPORT_SYMBOL vmlinux 0x3517383e register_reboot_notifier +EXPORT_SYMBOL vmlinux 0x353d282f cap_mmap_file +EXPORT_SYMBOL vmlinux 0x353de98f cmdline_parts_parse +EXPORT_SYMBOL vmlinux 0x353e3fa5 __get_user_4 +EXPORT_SYMBOL vmlinux 0x355a26a0 generic_perform_write +EXPORT_SYMBOL vmlinux 0x3560d828 alloc_disk_node +EXPORT_SYMBOL vmlinux 0x356461c8 rtc_time64_to_tm +EXPORT_SYMBOL vmlinux 0x357bfb44 kobject_init +EXPORT_SYMBOL vmlinux 0x3582c0dc sock_no_recvmsg +EXPORT_SYMBOL vmlinux 0x358eb420 i2c_verify_client +EXPORT_SYMBOL vmlinux 0x35a88f28 zlib_inflateInit2 +EXPORT_SYMBOL vmlinux 0x35b0d68a alloc_buffer_head +EXPORT_SYMBOL vmlinux 0x35b37c91 jbd2_journal_set_features +EXPORT_SYMBOL vmlinux 0x35bbcb50 blkdev_put +EXPORT_SYMBOL vmlinux 0x35d0b022 blkdev_get_by_path +EXPORT_SYMBOL vmlinux 0x35d0d0bb generic_file_llseek +EXPORT_SYMBOL vmlinux 0x35d2cf7d __kfree_skb +EXPORT_SYMBOL vmlinux 0x35fbd6a1 __kfifo_dma_out_prepare_r +EXPORT_SYMBOL vmlinux 0x360af20a abx500_startup_irq_enabled +EXPORT_SYMBOL vmlinux 0x360b1afe probe_irq_mask +EXPORT_SYMBOL vmlinux 0x3612c10f tmio_core_mmc_enable +EXPORT_SYMBOL vmlinux 0x363d02b1 proc_set_size +EXPORT_SYMBOL vmlinux 0x365d19a3 km_report +EXPORT_SYMBOL vmlinux 0x365d6390 blk_put_queue +EXPORT_SYMBOL vmlinux 0x3667d0a8 __inet_hash +EXPORT_SYMBOL vmlinux 0x367ba856 __crc32c_le_shift +EXPORT_SYMBOL vmlinux 0x3680623b dss_mgr_connect +EXPORT_SYMBOL vmlinux 0x36a31002 nf_log_trace +EXPORT_SYMBOL vmlinux 0x36bd681b groups_alloc +EXPORT_SYMBOL vmlinux 0x36bf4fa1 gnet_stats_start_copy_compat +EXPORT_SYMBOL vmlinux 0x36dff445 dev_uc_add_excl +EXPORT_SYMBOL vmlinux 0x36e0622b blk_queue_io_min +EXPORT_SYMBOL vmlinux 0x36f36020 jbd2_journal_set_triggers +EXPORT_SYMBOL vmlinux 0x36fd79a5 ipv6_push_nfrag_opts +EXPORT_SYMBOL vmlinux 0x36fdda67 hdmi_infoframe_pack +EXPORT_SYMBOL vmlinux 0x370ef48d udp_add_offload +EXPORT_SYMBOL vmlinux 0x37127992 phy_device_create +EXPORT_SYMBOL vmlinux 0x37250841 map_destroy +EXPORT_SYMBOL vmlinux 0x3744cf36 vmalloc_to_pfn +EXPORT_SYMBOL vmlinux 0x3762fec0 vfs_whiteout +EXPORT_SYMBOL vmlinux 0x37654543 blk_peek_request +EXPORT_SYMBOL vmlinux 0x37750c2e mutex_lock +EXPORT_SYMBOL vmlinux 0x37901676 cdev_add +EXPORT_SYMBOL vmlinux 0x3796bdcc snd_pcm_format_little_endian +EXPORT_SYMBOL vmlinux 0x379dee5f trace_print_symbols_seq_u64 +EXPORT_SYMBOL vmlinux 0x37af3190 dm_table_run_md_queue_async +EXPORT_SYMBOL vmlinux 0x37b62766 ppp_unregister_channel +EXPORT_SYMBOL vmlinux 0x37befc70 jiffies_to_msecs +EXPORT_SYMBOL vmlinux 0x37cb1ca5 mdiobus_unregister +EXPORT_SYMBOL vmlinux 0x37d0d9c8 keyring_clear +EXPORT_SYMBOL vmlinux 0x37e74642 get_jiffies_64 +EXPORT_SYMBOL vmlinux 0x37f614b7 __kfifo_len_r +EXPORT_SYMBOL vmlinux 0x380c676e request_key_async +EXPORT_SYMBOL vmlinux 0x38166200 iget_locked +EXPORT_SYMBOL vmlinux 0x381a798a setup_max_cpus +EXPORT_SYMBOL vmlinux 0x382e94ab phy_stop_interrupts +EXPORT_SYMBOL vmlinux 0x385d6fe7 jbd2_journal_init_inode +EXPORT_SYMBOL vmlinux 0x38869d88 kstat +EXPORT_SYMBOL vmlinux 0x38885528 pcix_get_mmrbc +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 0x38af23d7 blk_limits_max_hw_sectors +EXPORT_SYMBOL vmlinux 0x38ddfcc6 generic_splice_sendpage +EXPORT_SYMBOL vmlinux 0x38eebd36 tty_check_change +EXPORT_SYMBOL vmlinux 0x39018b58 uart_get_baud_rate +EXPORT_SYMBOL vmlinux 0x3924dd56 try_wait_for_completion +EXPORT_SYMBOL vmlinux 0x3939f8f0 rfkill_pause_polling +EXPORT_SYMBOL vmlinux 0x39461d6a in_egroup_p +EXPORT_SYMBOL vmlinux 0x394bdcd8 alloc_netdev_mqs +EXPORT_SYMBOL vmlinux 0x394cb3d9 dev_set_mtu +EXPORT_SYMBOL vmlinux 0x3971b4df snd_ecards_limit +EXPORT_SYMBOL vmlinux 0x3972d36f devm_request_resource +EXPORT_SYMBOL vmlinux 0x39730d06 atomic_io_modify +EXPORT_SYMBOL vmlinux 0x397b5c20 snd_pcm_new_internal +EXPORT_SYMBOL vmlinux 0x3980d5ab pcix_get_max_mmrbc +EXPORT_SYMBOL vmlinux 0x39991865 icmp_global_allow +EXPORT_SYMBOL vmlinux 0x39b52d19 __bitmap_and +EXPORT_SYMBOL vmlinux 0x39bf9301 _snd_pcm_hw_param_setempty +EXPORT_SYMBOL vmlinux 0x39c0c286 dump_page +EXPORT_SYMBOL vmlinux 0x39c98b3e blk_mq_tag_busy_iter +EXPORT_SYMBOL vmlinux 0x39d94155 make_kuid +EXPORT_SYMBOL vmlinux 0x39eccba1 pcim_iomap_table +EXPORT_SYMBOL vmlinux 0x39f24572 should_remove_suid +EXPORT_SYMBOL vmlinux 0x39fec54e __neigh_create +EXPORT_SYMBOL vmlinux 0x3a006180 iterate_mounts +EXPORT_SYMBOL vmlinux 0x3a1ac054 set_normalized_timespec64 +EXPORT_SYMBOL vmlinux 0x3a292aec mmc_add_host +EXPORT_SYMBOL vmlinux 0x3a32f715 page_symlink +EXPORT_SYMBOL vmlinux 0x3a45bfe9 tcp_enter_memory_pressure +EXPORT_SYMBOL vmlinux 0x3a6e2bbe __blk_end_request_all +EXPORT_SYMBOL vmlinux 0x3a90bbfd dquot_quotactl_ops +EXPORT_SYMBOL vmlinux 0x3a997058 param_get_invbool +EXPORT_SYMBOL vmlinux 0x3a9b6fb9 blk_unregister_region +EXPORT_SYMBOL vmlinux 0x3ab17713 nonseekable_open +EXPORT_SYMBOL vmlinux 0x3abb26b0 ioremap_wc +EXPORT_SYMBOL vmlinux 0x3b0ea799 dss_mgr_register_framedone_handler +EXPORT_SYMBOL vmlinux 0x3b1f29a7 xfrm4_rcv_cb +EXPORT_SYMBOL vmlinux 0x3b213e00 netdev_boot_setup_check +EXPORT_SYMBOL vmlinux 0x3b4e7304 file_ns_capable +EXPORT_SYMBOL vmlinux 0x3b644591 __bitmap_shift_left +EXPORT_SYMBOL vmlinux 0x3b82f2af vme_irq_generate +EXPORT_SYMBOL vmlinux 0x3b901e64 fd_install +EXPORT_SYMBOL vmlinux 0x3b91f3af snd_free_pages +EXPORT_SYMBOL vmlinux 0x3ba8e645 simple_statfs +EXPORT_SYMBOL vmlinux 0x3bbf46ea vga_base +EXPORT_SYMBOL vmlinux 0x3be3d31a vm_iomap_memory +EXPORT_SYMBOL vmlinux 0x3be77a3d kern_path +EXPORT_SYMBOL vmlinux 0x3c06b3ec nf_unregister_hooks +EXPORT_SYMBOL vmlinux 0x3c0e4c22 pci_request_selected_regions_exclusive +EXPORT_SYMBOL vmlinux 0x3c120482 seq_release_private +EXPORT_SYMBOL vmlinux 0x3c1f2b30 tcp_md5_do_add +EXPORT_SYMBOL vmlinux 0x3c3fce39 __local_bh_enable_ip +EXPORT_SYMBOL vmlinux 0x3c4f3592 swiotlb_sync_single_for_device +EXPORT_SYMBOL vmlinux 0x3c508b1a disk_stack_limits +EXPORT_SYMBOL vmlinux 0x3c50effd pagecache_write_end +EXPORT_SYMBOL vmlinux 0x3c5b2cb1 blk_queue_end_tag +EXPORT_SYMBOL vmlinux 0x3c5d33e5 notify_change +EXPORT_SYMBOL vmlinux 0x3c6abb80 serio_rescan +EXPORT_SYMBOL vmlinux 0x3c80c06c kstrtoull +EXPORT_SYMBOL vmlinux 0x3c8e0ca4 ipv6_sock_mc_drop +EXPORT_SYMBOL vmlinux 0x3cb45a73 pci_fixup_cardbus +EXPORT_SYMBOL vmlinux 0x3cbd248d tcf_destroy_chain +EXPORT_SYMBOL vmlinux 0x3cc3d636 of_node_put +EXPORT_SYMBOL vmlinux 0x3cd9a906 param_set_bint +EXPORT_SYMBOL vmlinux 0x3ce4ca6f disable_irq +EXPORT_SYMBOL vmlinux 0x3ce6ea58 vlan_ioctl_set +EXPORT_SYMBOL vmlinux 0x3cf145c7 dev_uc_flush +EXPORT_SYMBOL vmlinux 0x3d0d6002 pci_find_next_bus +EXPORT_SYMBOL vmlinux 0x3d1012fa serial8250_set_isa_configurator +EXPORT_SYMBOL vmlinux 0x3d26e349 ptp_clock_index +EXPORT_SYMBOL vmlinux 0x3d30409d iommu_tbl_range_free +EXPORT_SYMBOL vmlinux 0x3d3c540f elf_hwcap +EXPORT_SYMBOL vmlinux 0x3d3ca30f unregister_framebuffer +EXPORT_SYMBOL vmlinux 0x3d4e5184 __test_set_page_writeback +EXPORT_SYMBOL vmlinux 0x3d5009de sg_miter_next +EXPORT_SYMBOL vmlinux 0x3d51f1e1 tty_driver_kref_put +EXPORT_SYMBOL vmlinux 0x3d5690e9 file_open_root +EXPORT_SYMBOL vmlinux 0x3d6af5c3 netif_device_attach +EXPORT_SYMBOL vmlinux 0x3d6ef2a9 of_cpufreq_power_cooling_register +EXPORT_SYMBOL vmlinux 0x3d8afbcc param_set_int +EXPORT_SYMBOL vmlinux 0x3daf74d1 param_get_long +EXPORT_SYMBOL vmlinux 0x3db2232c mmc_unregister_driver +EXPORT_SYMBOL vmlinux 0x3dbf0ad6 snd_cards +EXPORT_SYMBOL vmlinux 0x3dc32427 of_find_property +EXPORT_SYMBOL vmlinux 0x3dcb88a0 irq_set_handler_data +EXPORT_SYMBOL vmlinux 0x3def4337 ip_mc_check_igmp +EXPORT_SYMBOL vmlinux 0x3dfc897c seq_hlist_start_head +EXPORT_SYMBOL vmlinux 0x3e296160 param_set_bool +EXPORT_SYMBOL vmlinux 0x3e2c3830 bioset_free +EXPORT_SYMBOL vmlinux 0x3e311fa8 dev_mc_del_global +EXPORT_SYMBOL vmlinux 0x3e4b5584 pcie_capability_write_word +EXPORT_SYMBOL vmlinux 0x3e62e1ba ppp_register_net_channel +EXPORT_SYMBOL vmlinux 0x3e6f8fab tty_unregister_device +EXPORT_SYMBOL vmlinux 0x3e861668 zerocopy_sg_from_iter +EXPORT_SYMBOL vmlinux 0x3e884f4b vm_get_page_prot +EXPORT_SYMBOL vmlinux 0x3e9110fa __hw_addr_unsync +EXPORT_SYMBOL vmlinux 0x3e94ed74 kfree_put_link +EXPORT_SYMBOL vmlinux 0x3e9e951c touchscreen_parse_of_params +EXPORT_SYMBOL vmlinux 0x3eac3bd7 key_validate +EXPORT_SYMBOL vmlinux 0x3ed8e115 pci_bus_add_devices +EXPORT_SYMBOL vmlinux 0x3ef71721 neigh_sysctl_register +EXPORT_SYMBOL vmlinux 0x3f02241a scsi_dma_unmap +EXPORT_SYMBOL vmlinux 0x3f0848a5 snd_timer_start +EXPORT_SYMBOL vmlinux 0x3f18df8a sk_stream_kill_queues +EXPORT_SYMBOL vmlinux 0x3f1cfe4b loop_register_transfer +EXPORT_SYMBOL vmlinux 0x3f2c0afe d_alloc +EXPORT_SYMBOL vmlinux 0x3f4547a7 put_unused_fd +EXPORT_SYMBOL vmlinux 0x3f5b67d5 wait_for_completion_killable +EXPORT_SYMBOL vmlinux 0x3f616ce2 queue_delayed_work_on +EXPORT_SYMBOL vmlinux 0x3f65f254 scsi_execute +EXPORT_SYMBOL vmlinux 0x3f7d3ba5 locks_mandatory_area +EXPORT_SYMBOL vmlinux 0x3f949bf6 skb_kill_datagram +EXPORT_SYMBOL vmlinux 0x3fab3ca9 register_sysctl_table +EXPORT_SYMBOL vmlinux 0x3fb5343a read_cache_page_gfp +EXPORT_SYMBOL vmlinux 0x3fc693d8 blk_integrity_is_initialized +EXPORT_SYMBOL vmlinux 0x3fc9c7a3 __cleancache_invalidate_page +EXPORT_SYMBOL vmlinux 0x40026125 mipi_dsi_host_register +EXPORT_SYMBOL vmlinux 0x4007d30b skb_clone +EXPORT_SYMBOL vmlinux 0x4026e3dc tty_port_lower_dtr_rts +EXPORT_SYMBOL vmlinux 0x402b8281 __request_module +EXPORT_SYMBOL vmlinux 0x40386303 sock_common_getsockopt +EXPORT_SYMBOL vmlinux 0x4039918a clk_register_clkdev +EXPORT_SYMBOL vmlinux 0x40426097 netdev_has_upper_dev +EXPORT_SYMBOL vmlinux 0x4046415d inet6_getname +EXPORT_SYMBOL vmlinux 0x405120b2 eth_header_cache_update +EXPORT_SYMBOL vmlinux 0x4059792f print_hex_dump +EXPORT_SYMBOL vmlinux 0x405c1144 get_seconds +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 0x409b35dd snd_pci_quirk_lookup +EXPORT_SYMBOL vmlinux 0x40a27c37 scsi_dev_info_remove_list +EXPORT_SYMBOL vmlinux 0x40a2d1dd dm_table_get_size +EXPORT_SYMBOL vmlinux 0x40a9b349 vzalloc +EXPORT_SYMBOL vmlinux 0x40ad3abc neigh_proc_dointvec_ms_jiffies +EXPORT_SYMBOL vmlinux 0x40b1abae __skb_get_hash_flowi4 +EXPORT_SYMBOL vmlinux 0x40c01859 gen_pool_best_fit +EXPORT_SYMBOL vmlinux 0x40c1752d xfrm_state_update +EXPORT_SYMBOL vmlinux 0x40c3fdac check_disk_size_change +EXPORT_SYMBOL vmlinux 0x40c49fc0 security_path_rename +EXPORT_SYMBOL vmlinux 0x40c7247c si_meminfo +EXPORT_SYMBOL vmlinux 0x40d04664 console_trylock +EXPORT_SYMBOL vmlinux 0x40d59096 unregister_restart_handler +EXPORT_SYMBOL vmlinux 0x40dd3d86 of_graph_get_endpoint_by_regs +EXPORT_SYMBOL vmlinux 0x40ed524a _raw_read_lock_irq +EXPORT_SYMBOL vmlinux 0x40f07981 __ashldi3 +EXPORT_SYMBOL vmlinux 0x40f07e63 kernel_param_lock +EXPORT_SYMBOL vmlinux 0x41482d8b strndup_user +EXPORT_SYMBOL vmlinux 0x41570ed0 napi_disable +EXPORT_SYMBOL vmlinux 0x4164b940 mmc_gpio_request_cd +EXPORT_SYMBOL vmlinux 0x41790d1c phy_get_eee_err +EXPORT_SYMBOL vmlinux 0x418251d2 textsearch_unregister +EXPORT_SYMBOL vmlinux 0x4188d439 neigh_rand_reach_time +EXPORT_SYMBOL vmlinux 0x418a5367 __scsi_format_command +EXPORT_SYMBOL vmlinux 0x41a27360 skb_unlink +EXPORT_SYMBOL vmlinux 0x41b40353 __register_nls +EXPORT_SYMBOL vmlinux 0x41bc32cc bitmap_unplug +EXPORT_SYMBOL vmlinux 0x41c4691c ipv6_getsockopt +EXPORT_SYMBOL vmlinux 0x41ca3843 pci_scan_root_bus +EXPORT_SYMBOL vmlinux 0x41d0bb57 is_bad_inode +EXPORT_SYMBOL vmlinux 0x41ebae5f t10_pi_type1_crc +EXPORT_SYMBOL vmlinux 0x41fb5c20 scsi_print_command +EXPORT_SYMBOL vmlinux 0x42141b79 unregister_qdisc +EXPORT_SYMBOL vmlinux 0x42160169 flush_workqueue +EXPORT_SYMBOL vmlinux 0x423c9bbf posix_test_lock +EXPORT_SYMBOL vmlinux 0x423d81ed ida_pre_get +EXPORT_SYMBOL vmlinux 0x4248773b scsi_set_medium_removal +EXPORT_SYMBOL vmlinux 0x4248ae3c single_task_running +EXPORT_SYMBOL vmlinux 0x424d3620 zlib_inflateIncomp +EXPORT_SYMBOL vmlinux 0x42519727 tcp_init_cgroup +EXPORT_SYMBOL vmlinux 0x425e0e9e kernel_setsockopt +EXPORT_SYMBOL vmlinux 0x4263c2b8 __sk_mem_reclaim +EXPORT_SYMBOL vmlinux 0x4279cac6 d_path +EXPORT_SYMBOL vmlinux 0x4298b775 v7_flush_kern_cache_all +EXPORT_SYMBOL vmlinux 0x429984cf do_truncate +EXPORT_SYMBOL vmlinux 0x429be6d3 remove_conflicting_framebuffers +EXPORT_SYMBOL vmlinux 0x42a1b208 gen_pool_first_fit +EXPORT_SYMBOL vmlinux 0x42ae00bb __skb_flow_dissect +EXPORT_SYMBOL vmlinux 0x42bac4b2 dss_mgr_disable +EXPORT_SYMBOL vmlinux 0x42be9363 i2c_clients_command +EXPORT_SYMBOL vmlinux 0x42db5cab of_find_net_device_by_node +EXPORT_SYMBOL vmlinux 0x42f0b4c1 mmc_read_bkops_status +EXPORT_SYMBOL vmlinux 0x4302d0eb free_pages +EXPORT_SYMBOL vmlinux 0x43233b43 param_set_copystring +EXPORT_SYMBOL vmlinux 0x434b2ed2 poll_initwait +EXPORT_SYMBOL vmlinux 0x4351577a fb_parse_edid +EXPORT_SYMBOL vmlinux 0x436b2cbd dmaengine_get_unmap_data +EXPORT_SYMBOL vmlinux 0x436d2b9c tcp_v4_md5_hash_skb +EXPORT_SYMBOL vmlinux 0x437483c4 get_io_context +EXPORT_SYMBOL vmlinux 0x4377641e vfs_mknod +EXPORT_SYMBOL vmlinux 0x437fe65d sock_wake_async +EXPORT_SYMBOL vmlinux 0x438610bd security_tun_dev_alloc_security +EXPORT_SYMBOL vmlinux 0x438c6edb __sock_create +EXPORT_SYMBOL vmlinux 0x43a46839 tcp_v4_destroy_sock +EXPORT_SYMBOL vmlinux 0x43e78e11 param_get_int +EXPORT_SYMBOL vmlinux 0x43eabb5f bdev_stack_limits +EXPORT_SYMBOL vmlinux 0x43f23311 dm_table_get_md +EXPORT_SYMBOL vmlinux 0x43f5cf4f vfs_fsync_range +EXPORT_SYMBOL vmlinux 0x43fd4a4a jbd2_journal_dirty_metadata +EXPORT_SYMBOL vmlinux 0x440e5c60 dev_uc_init +EXPORT_SYMBOL vmlinux 0x4411c503 prandom_seed +EXPORT_SYMBOL vmlinux 0x441ed159 omap_get_dma_src_pos +EXPORT_SYMBOL vmlinux 0x442495c9 tmio_core_mmc_resume +EXPORT_SYMBOL vmlinux 0x44253983 bioset_integrity_free +EXPORT_SYMBOL vmlinux 0x44352254 __skb_checksum_complete +EXPORT_SYMBOL vmlinux 0x44366cfc simple_write_to_buffer +EXPORT_SYMBOL vmlinux 0x44388219 inet6_release +EXPORT_SYMBOL vmlinux 0x443adff7 kill_fasync +EXPORT_SYMBOL vmlinux 0x44438b96 hex2bin +EXPORT_SYMBOL vmlinux 0x4452896f neigh_table_init +EXPORT_SYMBOL vmlinux 0x44633671 dev_activate +EXPORT_SYMBOL vmlinux 0x44643b93 __aeabi_lmul +EXPORT_SYMBOL vmlinux 0x446e5b9f netlink_set_err +EXPORT_SYMBOL vmlinux 0x4483d6d8 pci_disable_link_state_locked +EXPORT_SYMBOL vmlinux 0x44864497 fget_raw +EXPORT_SYMBOL vmlinux 0x44a008b6 d_alloc_pseudo +EXPORT_SYMBOL vmlinux 0x44b1d426 __dynamic_pr_debug +EXPORT_SYMBOL vmlinux 0x44bcda3d jbd2_journal_check_used_features +EXPORT_SYMBOL vmlinux 0x44c4907c seq_escape +EXPORT_SYMBOL vmlinux 0x44da5d0f __csum_ipv6_magic +EXPORT_SYMBOL vmlinux 0x44dd3d8d completion_done +EXPORT_SYMBOL vmlinux 0x44e8575e blk_queue_dma_pad +EXPORT_SYMBOL vmlinux 0x44e9a829 match_token +EXPORT_SYMBOL vmlinux 0x45085556 key_type_keyring +EXPORT_SYMBOL vmlinux 0x45323a79 sock_rfree +EXPORT_SYMBOL vmlinux 0x453c8403 pci_msi_enabled +EXPORT_SYMBOL vmlinux 0x4572bba7 iter_file_splice_write +EXPORT_SYMBOL vmlinux 0x4578f528 __kfifo_to_user +EXPORT_SYMBOL vmlinux 0x45901063 textsearch_destroy +EXPORT_SYMBOL vmlinux 0x45a6be13 cpufreq_sysfs_remove_file +EXPORT_SYMBOL vmlinux 0x45b05869 snd_pcm_lib_preallocate_pages_for_all +EXPORT_SYMBOL vmlinux 0x45b3a0a6 scsi_cmd_ioctl +EXPORT_SYMBOL vmlinux 0x45b97710 input_close_device +EXPORT_SYMBOL vmlinux 0x45bda0d5 system_serial_low +EXPORT_SYMBOL vmlinux 0x45c70470 md_wait_for_blocked_rdev +EXPORT_SYMBOL vmlinux 0x460b3322 tcf_em_tree_destroy +EXPORT_SYMBOL vmlinux 0x462a2e75 match_strlcpy +EXPORT_SYMBOL vmlinux 0x4641a5a6 neigh_seq_stop +EXPORT_SYMBOL vmlinux 0x465757c3 cpu_present_mask +EXPORT_SYMBOL vmlinux 0x465cab34 secure_ipv6_port_ephemeral +EXPORT_SYMBOL vmlinux 0x46649cd1 vme_lm_set +EXPORT_SYMBOL vmlinux 0x46c8d229 generic_removexattr +EXPORT_SYMBOL vmlinux 0x46d2d5f1 icmpv6_send +EXPORT_SYMBOL vmlinux 0x46d3b28c __div0 +EXPORT_SYMBOL vmlinux 0x46d4b6d7 set_create_files_as +EXPORT_SYMBOL vmlinux 0x46e0de39 kmap_atomic +EXPORT_SYMBOL vmlinux 0x46f156e7 udp_proc_unregister +EXPORT_SYMBOL vmlinux 0x46feb099 dm_read_arg +EXPORT_SYMBOL vmlinux 0x470b0eb3 swiotlb_free_coherent +EXPORT_SYMBOL vmlinux 0x471948f3 tcp_disconnect +EXPORT_SYMBOL vmlinux 0x4719c346 __set_page_dirty_nobuffers +EXPORT_SYMBOL vmlinux 0x473ae159 ip4_datagram_connect +EXPORT_SYMBOL vmlinux 0x47416e14 cpu_rmap_add +EXPORT_SYMBOL vmlinux 0x4743e4aa inode_get_bytes +EXPORT_SYMBOL vmlinux 0x47939e0d __tasklet_hi_schedule +EXPORT_SYMBOL vmlinux 0x47c2155f qdisc_tree_decrease_qlen +EXPORT_SYMBOL vmlinux 0x47cd7fee rwsem_downgrade_wake +EXPORT_SYMBOL vmlinux 0x47d2175f tty_port_tty_set +EXPORT_SYMBOL vmlinux 0x47dd2b2a bio_integrity_clone +EXPORT_SYMBOL vmlinux 0x47e70229 v7_flush_user_cache_range +EXPORT_SYMBOL vmlinux 0x47e8d4fd blk_alloc_queue_node +EXPORT_SYMBOL vmlinux 0x47f757de elf_platform +EXPORT_SYMBOL vmlinux 0x480e2987 clkdev_add +EXPORT_SYMBOL vmlinux 0x481ce6ce cpu_active_mask +EXPORT_SYMBOL vmlinux 0x48366aaf tty_unlock +EXPORT_SYMBOL vmlinux 0x483c10eb rps_may_expire_flow +EXPORT_SYMBOL vmlinux 0x4859b8bb rtc_year_days +EXPORT_SYMBOL vmlinux 0x486d14d8 inet_offloads +EXPORT_SYMBOL vmlinux 0x486f5706 __tty_alloc_driver +EXPORT_SYMBOL vmlinux 0x487e0d4a xfrm4_protocol_deregister +EXPORT_SYMBOL vmlinux 0x489732fd d_instantiate +EXPORT_SYMBOL vmlinux 0x48a5b067 __machine_arch_type +EXPORT_SYMBOL vmlinux 0x48b99a13 vme_lm_free +EXPORT_SYMBOL vmlinux 0x48cbf175 msm_pinctrl_remove +EXPORT_SYMBOL vmlinux 0x48dca3d8 input_allocate_device +EXPORT_SYMBOL vmlinux 0x48fa65d7 snd_pcm_kernel_ioctl +EXPORT_SYMBOL vmlinux 0x49045426 icmp_err_convert +EXPORT_SYMBOL vmlinux 0x491b9c11 neigh_parms_alloc +EXPORT_SYMBOL vmlinux 0x4946218e brioctl_set +EXPORT_SYMBOL vmlinux 0x495c96f8 posix_acl_init +EXPORT_SYMBOL vmlinux 0x49603fb8 security_sb_copy_data +EXPORT_SYMBOL vmlinux 0x496a6568 wait_iff_congested +EXPORT_SYMBOL vmlinux 0x496f3dab jbd2_journal_release_jbd_inode +EXPORT_SYMBOL vmlinux 0x49824429 param_ops_byte +EXPORT_SYMBOL vmlinux 0x499cb58c prepare_to_wait +EXPORT_SYMBOL vmlinux 0x499e2c92 setup_new_exec +EXPORT_SYMBOL vmlinux 0x49af31d0 inet_shutdown +EXPORT_SYMBOL vmlinux 0x49b07aec tcp_select_initial_window +EXPORT_SYMBOL vmlinux 0x49c1f417 snd_pcm_hw_constraint_list +EXPORT_SYMBOL vmlinux 0x49e274ab vlan_vids_del_by_dev +EXPORT_SYMBOL vmlinux 0x49ebacbd _clear_bit +EXPORT_SYMBOL vmlinux 0x49f71442 dev_close_many +EXPORT_SYMBOL vmlinux 0x4a0aebb3 t10_pi_type3_ip +EXPORT_SYMBOL vmlinux 0x4a138fc2 nf_getsockopt +EXPORT_SYMBOL vmlinux 0x4a1a9e11 ethtool_op_get_link +EXPORT_SYMBOL vmlinux 0x4a39e5a1 omap_set_dma_src_params +EXPORT_SYMBOL vmlinux 0x4a3ea5c0 snd_request_card +EXPORT_SYMBOL vmlinux 0x4a559893 mb_cache_entry_alloc +EXPORT_SYMBOL vmlinux 0x4a579944 tty_port_free_xmit_buf +EXPORT_SYMBOL vmlinux 0x4a57b339 wait_for_completion_io_timeout +EXPORT_SYMBOL vmlinux 0x4a5ec35d phy_ethtool_get_eee +EXPORT_SYMBOL vmlinux 0x4a617a1b __break_lease +EXPORT_SYMBOL vmlinux 0x4a66a1d9 blk_rq_map_sg +EXPORT_SYMBOL vmlinux 0x4a788c94 blk_rq_init +EXPORT_SYMBOL vmlinux 0x4a7c8a9c abx500_set_register_interruptible +EXPORT_SYMBOL vmlinux 0x4a9a1a68 bio_uncopy_user +EXPORT_SYMBOL vmlinux 0x4aa9a255 dm_put_table_device +EXPORT_SYMBOL vmlinux 0x4ab5127f scm_detach_fds +EXPORT_SYMBOL vmlinux 0x4abbe3c2 vm_brk +EXPORT_SYMBOL vmlinux 0x4acfbc90 iw_handler_set_thrspy +EXPORT_SYMBOL vmlinux 0x4afe9a77 scsi_partsize +EXPORT_SYMBOL vmlinux 0x4b080e6f jbd2_journal_try_to_free_buffers +EXPORT_SYMBOL vmlinux 0x4b1ec3e2 kstrtoul_from_user +EXPORT_SYMBOL vmlinux 0x4b2703f6 __wait_on_bit +EXPORT_SYMBOL vmlinux 0x4b34fbf5 block_all_signals +EXPORT_SYMBOL vmlinux 0x4b41e1c7 reservation_object_add_shared_fence +EXPORT_SYMBOL vmlinux 0x4b4290c2 mdiobus_read +EXPORT_SYMBOL vmlinux 0x4b5a22b5 generic_listxattr +EXPORT_SYMBOL vmlinux 0x4b5d32e3 xfrm_state_register_afinfo +EXPORT_SYMBOL vmlinux 0x4b5fd49e dm_kcopyd_do_callback +EXPORT_SYMBOL vmlinux 0x4b632ad4 fbcon_rotate_cw +EXPORT_SYMBOL vmlinux 0x4b70c214 pci_clear_mwi +EXPORT_SYMBOL vmlinux 0x4b78933c qcom_scm_set_cold_boot_addr +EXPORT_SYMBOL vmlinux 0x4b7c399e d_instantiate_no_diralias +EXPORT_SYMBOL vmlinux 0x4baf35a7 vme_master_get +EXPORT_SYMBOL vmlinux 0x4bb0778e vm_stat +EXPORT_SYMBOL vmlinux 0x4bb77397 tcf_exts_dump +EXPORT_SYMBOL vmlinux 0x4bb80994 fb_validate_mode +EXPORT_SYMBOL vmlinux 0x4bcf03a4 radix_tree_tag_clear +EXPORT_SYMBOL vmlinux 0x4bd0acd7 input_mt_report_slot_state +EXPORT_SYMBOL vmlinux 0x4be7fb63 up +EXPORT_SYMBOL vmlinux 0x4be85a03 memweight +EXPORT_SYMBOL vmlinux 0x4bf1406b snd_card_disconnect +EXPORT_SYMBOL vmlinux 0x4bf87a20 of_count_phandle_with_args +EXPORT_SYMBOL vmlinux 0x4c0a09d8 deactivate_locked_super +EXPORT_SYMBOL vmlinux 0x4c108f48 vme_irq_request +EXPORT_SYMBOL vmlinux 0x4c233a44 _raw_read_unlock_bh +EXPORT_SYMBOL vmlinux 0x4c29dcbf cancel_delayed_work_sync +EXPORT_SYMBOL vmlinux 0x4c2ae700 strnstr +EXPORT_SYMBOL vmlinux 0x4c33081d omapdss_compat_uninit +EXPORT_SYMBOL vmlinux 0x4c346a53 kvasprintf +EXPORT_SYMBOL vmlinux 0x4c5fc58c _raw_read_lock_bh +EXPORT_SYMBOL vmlinux 0x4c7c6778 dma_release_declared_memory +EXPORT_SYMBOL vmlinux 0x4c7c711a padata_add_cpu +EXPORT_SYMBOL vmlinux 0x4c86184b remove_wait_queue +EXPORT_SYMBOL vmlinux 0x4c8c69db vfs_path_lookup +EXPORT_SYMBOL vmlinux 0x4cae2ead framebuffer_release +EXPORT_SYMBOL vmlinux 0x4cb4d619 kobject_set_name +EXPORT_SYMBOL vmlinux 0x4cc2854d tegra114_clock_assert_dfll_dvco_reset +EXPORT_SYMBOL vmlinux 0x4cc419ea pci_bus_alloc_resource +EXPORT_SYMBOL vmlinux 0x4cc6de1f dmam_pool_create +EXPORT_SYMBOL vmlinux 0x4cd5e838 netdev_lower_get_first_private_rcu +EXPORT_SYMBOL vmlinux 0x4cdb3178 ns_to_timeval +EXPORT_SYMBOL vmlinux 0x4cddece5 security_inode_setsecctx +EXPORT_SYMBOL vmlinux 0x4d07c0c8 snd_pcm_hw_constraint_step +EXPORT_SYMBOL vmlinux 0x4d0d163d copy_page +EXPORT_SYMBOL vmlinux 0x4d13d1f5 pci_iounmap +EXPORT_SYMBOL vmlinux 0x4d1b421d scsi_cmd_blk_ioctl +EXPORT_SYMBOL vmlinux 0x4d294bb4 bit_wait_io +EXPORT_SYMBOL vmlinux 0x4d3ac3b6 lockref_put_or_lock +EXPORT_SYMBOL vmlinux 0x4d3ac809 simple_follow_link +EXPORT_SYMBOL vmlinux 0x4d3c153f sigprocmask +EXPORT_SYMBOL vmlinux 0x4d45d89e udp_memory_allocated +EXPORT_SYMBOL vmlinux 0x4d6d4c7a tcf_exts_dump_stats +EXPORT_SYMBOL vmlinux 0x4d72be96 blk_queue_alignment_offset +EXPORT_SYMBOL vmlinux 0x4d7862af mmc_gpio_get_cd +EXPORT_SYMBOL vmlinux 0x4d815298 inet_csk_reset_keepalive_timer +EXPORT_SYMBOL vmlinux 0x4d83b295 sg_pcopy_to_buffer +EXPORT_SYMBOL vmlinux 0x4d974b9c register_sysrq_key +EXPORT_SYMBOL vmlinux 0x4d9b652b rb_erase +EXPORT_SYMBOL vmlinux 0x4d9b6d35 snd_pcm_format_size +EXPORT_SYMBOL vmlinux 0x4dc0dbfd rtnetlink_put_metrics +EXPORT_SYMBOL vmlinux 0x4dc552c5 d_prune_aliases +EXPORT_SYMBOL vmlinux 0x4dca3719 uart_unregister_driver +EXPORT_SYMBOL vmlinux 0x4dd2644c kunmap +EXPORT_SYMBOL vmlinux 0x4ddb31fe arp_create +EXPORT_SYMBOL vmlinux 0x4de34a07 cpu_rmap_put +EXPORT_SYMBOL vmlinux 0x4dec6038 memscan +EXPORT_SYMBOL vmlinux 0x4df119fa __bitmap_parse +EXPORT_SYMBOL vmlinux 0x4df49e79 fb_blank +EXPORT_SYMBOL vmlinux 0x4e23e893 mb_cache_shrink +EXPORT_SYMBOL vmlinux 0x4e3443bd follow_down +EXPORT_SYMBOL vmlinux 0x4e3567f7 match_int +EXPORT_SYMBOL vmlinux 0x4e506013 omap_dma_link_lch +EXPORT_SYMBOL vmlinux 0x4e68e9be rb_next_postorder +EXPORT_SYMBOL vmlinux 0x4e6e8ea7 fg_console +EXPORT_SYMBOL vmlinux 0x4e8aeef9 pwmss_submodule_state_change +EXPORT_SYMBOL vmlinux 0x4e9b11cb igrab +EXPORT_SYMBOL vmlinux 0x4e9ce9f9 edma_link +EXPORT_SYMBOL vmlinux 0x4ea9a4b0 phy_find_first +EXPORT_SYMBOL vmlinux 0x4eb370d9 open_exec +EXPORT_SYMBOL vmlinux 0x4f0139db km_query +EXPORT_SYMBOL vmlinux 0x4f06e19c snd_timer_notify +EXPORT_SYMBOL vmlinux 0x4f15c398 rawv6_mh_filter_register +EXPORT_SYMBOL vmlinux 0x4f1cd128 security_tun_dev_create +EXPORT_SYMBOL vmlinux 0x4f2250ba rtc_tm_to_time64 +EXPORT_SYMBOL vmlinux 0x4f2cc543 page_put_link +EXPORT_SYMBOL vmlinux 0x4f2e1f8d may_umount_tree +EXPORT_SYMBOL vmlinux 0x4f30d75e pm860x_page_reg_write +EXPORT_SYMBOL vmlinux 0x4f391d0e nla_parse +EXPORT_SYMBOL vmlinux 0x4f476e96 init_cdrom_command +EXPORT_SYMBOL vmlinux 0x4f49f72a km_state_notify +EXPORT_SYMBOL vmlinux 0x4f511e5a generic_block_bmap +EXPORT_SYMBOL vmlinux 0x4f534070 of_clk_get +EXPORT_SYMBOL vmlinux 0x4f5c7c5b __skb_gro_checksum_complete +EXPORT_SYMBOL vmlinux 0x4f68e5c9 do_gettimeofday +EXPORT_SYMBOL vmlinux 0x4f816e9b snd_pcm_format_big_endian +EXPORT_SYMBOL vmlinux 0x4f89c9de gpmc_cs_free +EXPORT_SYMBOL vmlinux 0x4fafb37d xfrm_policy_byid +EXPORT_SYMBOL vmlinux 0x4fc887d2 snd_ctl_make_virtual_master +EXPORT_SYMBOL vmlinux 0x4fed932f dev_add_offload +EXPORT_SYMBOL vmlinux 0x4fef75cc omap_dss_find_output_by_port_node +EXPORT_SYMBOL vmlinux 0x50097088 security_tun_dev_free_security +EXPORT_SYMBOL vmlinux 0x50178715 read_cache_pages +EXPORT_SYMBOL vmlinux 0x501f530c cpu_user +EXPORT_SYMBOL vmlinux 0x503bd137 snd_interval_ranges +EXPORT_SYMBOL vmlinux 0x504ef065 __skb_tx_hash +EXPORT_SYMBOL vmlinux 0x5063df40 __posix_acl_create +EXPORT_SYMBOL vmlinux 0x5079d1d4 trace_print_hex_seq +EXPORT_SYMBOL vmlinux 0x507d0abe tcp_v4_syn_recv_sock +EXPORT_SYMBOL vmlinux 0x509817cf vprintk_emit +EXPORT_SYMBOL vmlinux 0x50b01ec9 unmap_underlying_metadata +EXPORT_SYMBOL vmlinux 0x50b66bcb radix_tree_next_chunk +EXPORT_SYMBOL vmlinux 0x50c6717c sync_inodes_sb +EXPORT_SYMBOL vmlinux 0x50d5612e dispc_mgr_get_sync_lost_irq +EXPORT_SYMBOL vmlinux 0x50d59ac0 generic_file_write_iter +EXPORT_SYMBOL vmlinux 0x50ded37c __posix_acl_chmod +EXPORT_SYMBOL vmlinux 0x50df163c scsi_command_normalize_sense +EXPORT_SYMBOL vmlinux 0x50dfaffc inode_reclaim_rsv_space +EXPORT_SYMBOL vmlinux 0x50f08a20 tty_port_alloc_xmit_buf +EXPORT_SYMBOL vmlinux 0x50f6eda8 fib_default_rule_add +EXPORT_SYMBOL vmlinux 0x5112cc89 tcp_release_cb +EXPORT_SYMBOL vmlinux 0x511746c1 dump_fpu +EXPORT_SYMBOL vmlinux 0x5118c382 secure_dccp_sequence_number +EXPORT_SYMBOL vmlinux 0x512a3a57 simple_readpage +EXPORT_SYMBOL vmlinux 0x513a74fc frontswap_register_ops +EXPORT_SYMBOL vmlinux 0x513a775b inet_rtx_syn_ack +EXPORT_SYMBOL vmlinux 0x5143db6b blk_alloc_queue +EXPORT_SYMBOL vmlinux 0x514d782f generic_block_fiemap +EXPORT_SYMBOL vmlinux 0x515e695e fb_set_cmap +EXPORT_SYMBOL vmlinux 0x51914c21 sock_from_file +EXPORT_SYMBOL vmlinux 0x51b9580d __neigh_event_send +EXPORT_SYMBOL vmlinux 0x51d03230 inet_ioctl +EXPORT_SYMBOL vmlinux 0x51d559d1 _raw_spin_unlock_irqrestore +EXPORT_SYMBOL vmlinux 0x51d8ab5c cfb_imageblit +EXPORT_SYMBOL vmlinux 0x51d8b253 pci_bus_write_config_byte +EXPORT_SYMBOL vmlinux 0x51e77c97 pfn_valid +EXPORT_SYMBOL vmlinux 0x51ef33b8 kstrndup +EXPORT_SYMBOL vmlinux 0x51efa5a8 skb_append +EXPORT_SYMBOL vmlinux 0x51fcc1a5 security_inode_init_security +EXPORT_SYMBOL vmlinux 0x52026cdf security_sb_parse_opts_str +EXPORT_SYMBOL vmlinux 0x521958c3 snd_ctl_remove_id +EXPORT_SYMBOL vmlinux 0x521b36b5 qdisc_put_rtab +EXPORT_SYMBOL vmlinux 0x523216d1 tcp_read_sock +EXPORT_SYMBOL vmlinux 0x52428cc8 parent_mem_cgroup +EXPORT_SYMBOL vmlinux 0x52503269 twl6040_get_vibralr_status +EXPORT_SYMBOL vmlinux 0x5255262a padata_do_parallel +EXPORT_SYMBOL vmlinux 0x5289d3e9 devm_gen_pool_create +EXPORT_SYMBOL vmlinux 0x528c709d simple_read_from_buffer +EXPORT_SYMBOL vmlinux 0x528d0c14 idr_init +EXPORT_SYMBOL vmlinux 0x529565b3 phy_ethtool_set_wol +EXPORT_SYMBOL vmlinux 0x5298fadb __f_setown +EXPORT_SYMBOL vmlinux 0x52995bcb seq_write +EXPORT_SYMBOL vmlinux 0x52af562a __crc32c_le +EXPORT_SYMBOL vmlinux 0x52b30f8d tcp_shutdown +EXPORT_SYMBOL vmlinux 0x52b50cb3 security_inode_getsecctx +EXPORT_SYMBOL vmlinux 0x52bb841c atomic_io_modify_relaxed +EXPORT_SYMBOL vmlinux 0x52bd115a fbcon_rotate_ud +EXPORT_SYMBOL vmlinux 0x52c3eea5 __pskb_copy_fclone +EXPORT_SYMBOL vmlinux 0x52e3e4a5 snd_pcm_hw_param_value +EXPORT_SYMBOL vmlinux 0x52fe08ca of_get_ddr_timings +EXPORT_SYMBOL vmlinux 0x5300292b nand_scan +EXPORT_SYMBOL vmlinux 0x5300739b blk_queue_max_segment_size +EXPORT_SYMBOL vmlinux 0x530b1e98 pm_suspend +EXPORT_SYMBOL vmlinux 0x53173d47 pci_match_id +EXPORT_SYMBOL vmlinux 0x531c113d dev_mc_flush +EXPORT_SYMBOL vmlinux 0x53243798 tty_driver_flush_buffer +EXPORT_SYMBOL vmlinux 0x532554ff drop_super +EXPORT_SYMBOL vmlinux 0x5330ba67 netpoll_poll_enable +EXPORT_SYMBOL vmlinux 0x53326531 mempool_alloc_pages +EXPORT_SYMBOL vmlinux 0x535c8308 vme_dma_pattern_attribute +EXPORT_SYMBOL vmlinux 0x5387e27c have_submounts +EXPORT_SYMBOL vmlinux 0x53d34267 xfrm6_find_1stfragopt +EXPORT_SYMBOL vmlinux 0x53e2b5de ilookup5 +EXPORT_SYMBOL vmlinux 0x5409775b free_irq_cpu_rmap +EXPORT_SYMBOL vmlinux 0x540a2db8 vfs_unlink +EXPORT_SYMBOL vmlinux 0x540e5f40 dev_driver_string +EXPORT_SYMBOL vmlinux 0x543a7b24 bitmap_startwrite +EXPORT_SYMBOL vmlinux 0x543ef284 seq_hlist_start +EXPORT_SYMBOL vmlinux 0x54453f7d mipi_dsi_driver_unregister +EXPORT_SYMBOL vmlinux 0x544fe7e9 phy_detach +EXPORT_SYMBOL vmlinux 0x54628b9d make_kprojid +EXPORT_SYMBOL vmlinux 0x547077ec __wake_up_bit +EXPORT_SYMBOL vmlinux 0x547ce898 dispc_read_irqenable +EXPORT_SYMBOL vmlinux 0x548b53b5 __free_pages +EXPORT_SYMBOL vmlinux 0x54901957 xfrm4_rcv_encap +EXPORT_SYMBOL vmlinux 0x5499c799 netdev_emerg +EXPORT_SYMBOL vmlinux 0x54a23ab3 fb_show_logo +EXPORT_SYMBOL vmlinux 0x54a46b20 jbd2_complete_transaction +EXPORT_SYMBOL vmlinux 0x54a9db5f _kstrtoul +EXPORT_SYMBOL vmlinux 0x54c0bdc8 __tcf_hash_release +EXPORT_SYMBOL vmlinux 0x54c256e0 vme_check_window +EXPORT_SYMBOL vmlinux 0x54c8eab5 get_user_pages +EXPORT_SYMBOL vmlinux 0x54c9da8b uart_remove_one_port +EXPORT_SYMBOL vmlinux 0x54e6fcdd net_enable_timestamp +EXPORT_SYMBOL vmlinux 0x54e896fb pneigh_enqueue +EXPORT_SYMBOL vmlinux 0x54e99889 crypto_sha512_update +EXPORT_SYMBOL vmlinux 0x54f6830a omapdss_get_default_display_name +EXPORT_SYMBOL vmlinux 0x550e79c5 tcp_close +EXPORT_SYMBOL vmlinux 0x550f9964 vm_insert_page +EXPORT_SYMBOL vmlinux 0x55135971 follow_pfn +EXPORT_SYMBOL vmlinux 0x5513db9b kmem_cache_size +EXPORT_SYMBOL vmlinux 0x551535fb iterate_fd +EXPORT_SYMBOL vmlinux 0x5518d5d9 get_unmapped_area +EXPORT_SYMBOL vmlinux 0x551bd071 __rb_erase_color +EXPORT_SYMBOL vmlinux 0x552893c3 set_bh_page +EXPORT_SYMBOL vmlinux 0x552cdbd0 xfrm_register_km +EXPORT_SYMBOL vmlinux 0x5537d880 user_path_at_empty +EXPORT_SYMBOL vmlinux 0x5541ea93 on_each_cpu +EXPORT_SYMBOL vmlinux 0x555410ec audit_log +EXPORT_SYMBOL vmlinux 0x5567c227 kernel_cpustat +EXPORT_SYMBOL vmlinux 0x556ab8ae phy_suspend +EXPORT_SYMBOL vmlinux 0x5572b128 generic_cont_expand_simple +EXPORT_SYMBOL vmlinux 0x55795a2d pcibios_resource_to_bus +EXPORT_SYMBOL vmlinux 0x55d481c9 hdmi_infoframe_unpack +EXPORT_SYMBOL vmlinux 0x560147fd edma_unlink +EXPORT_SYMBOL vmlinux 0x561674c1 icmp_send +EXPORT_SYMBOL vmlinux 0x5635a60a vmalloc_user +EXPORT_SYMBOL vmlinux 0x563952a3 kblockd_schedule_work +EXPORT_SYMBOL vmlinux 0x5644497a blk_fetch_request +EXPORT_SYMBOL vmlinux 0x565857ae led_set_brightness +EXPORT_SYMBOL vmlinux 0x565cc62d ip_check_defrag +EXPORT_SYMBOL vmlinux 0x5670fd05 end_buffer_read_sync +EXPORT_SYMBOL vmlinux 0x5689afe7 dispc_ovl_enable +EXPORT_SYMBOL vmlinux 0x56930ff9 migrate_page +EXPORT_SYMBOL vmlinux 0x56a984f6 component_match_add +EXPORT_SYMBOL vmlinux 0x56bc2f15 dispc_ovl_set_channel_out +EXPORT_SYMBOL vmlinux 0x56c871f8 pci_add_new_bus +EXPORT_SYMBOL vmlinux 0x56c8799d scsi_kunmap_atomic_sg +EXPORT_SYMBOL vmlinux 0x56db0891 clocksource_change_rating +EXPORT_SYMBOL vmlinux 0x572339e0 page_symlink_inode_operations +EXPORT_SYMBOL vmlinux 0x57247413 jbd2_journal_init_jbd_inode +EXPORT_SYMBOL vmlinux 0x572e85d4 blk_lookup_devt +EXPORT_SYMBOL vmlinux 0x572f904a elevator_alloc +EXPORT_SYMBOL vmlinux 0x5742ed99 scsi_get_device_flags_keyed +EXPORT_SYMBOL vmlinux 0x574c2e74 bitmap_release_region +EXPORT_SYMBOL vmlinux 0x57575f08 dmaengine_put +EXPORT_SYMBOL vmlinux 0x57611948 tcp_create_openreq_child +EXPORT_SYMBOL vmlinux 0x57674fd7 __sw_hweight16 +EXPORT_SYMBOL vmlinux 0x57a71bdb blk_start_request +EXPORT_SYMBOL vmlinux 0x57b6ed19 kmalloc_caches +EXPORT_SYMBOL vmlinux 0x57c0d601 skb_realloc_headroom +EXPORT_SYMBOL vmlinux 0x57ece300 __mmc_claim_host +EXPORT_SYMBOL vmlinux 0x57ecfaef blk_pm_runtime_init +EXPORT_SYMBOL vmlinux 0x57eda8e9 tcp_mtup_init +EXPORT_SYMBOL vmlinux 0x581f98da zlib_inflate +EXPORT_SYMBOL vmlinux 0x58329c8c shrink_dcache_parent +EXPORT_SYMBOL vmlinux 0x58378611 unregister_netdev +EXPORT_SYMBOL vmlinux 0x5838f6c9 rtc_valid_tm +EXPORT_SYMBOL vmlinux 0x58516557 omap_set_dma_src_data_pack +EXPORT_SYMBOL vmlinux 0x58533392 force_sig +EXPORT_SYMBOL vmlinux 0x587021dd cdev_alloc +EXPORT_SYMBOL vmlinux 0x587616f1 vfs_fstatat +EXPORT_SYMBOL vmlinux 0x589ebd38 dev_uc_add +EXPORT_SYMBOL vmlinux 0x58a5f669 netif_set_real_num_rx_queues +EXPORT_SYMBOL vmlinux 0x58b73bc7 match_wildcard +EXPORT_SYMBOL vmlinux 0x58c74288 jbd2_journal_revoke +EXPORT_SYMBOL vmlinux 0x58d356d9 write_inode_now +EXPORT_SYMBOL vmlinux 0x58d633c7 neigh_proc_dointvec_jiffies +EXPORT_SYMBOL vmlinux 0x58df1bef bio_alloc_bioset +EXPORT_SYMBOL vmlinux 0x58e3c884 skb_append_datato_frags +EXPORT_SYMBOL vmlinux 0x58e9af14 input_set_keycode +EXPORT_SYMBOL vmlinux 0x590b4b2c tso_build_data +EXPORT_SYMBOL vmlinux 0x594bf15b ioport_map +EXPORT_SYMBOL vmlinux 0x594e1317 __modsi3 +EXPORT_SYMBOL vmlinux 0x59639c49 dev_trans_start +EXPORT_SYMBOL vmlinux 0x596b2ccc mipi_dsi_dcs_set_tear_on +EXPORT_SYMBOL vmlinux 0x596cec24 of_get_parent +EXPORT_SYMBOL vmlinux 0x5974b037 fb_get_mode +EXPORT_SYMBOL vmlinux 0x597bd9ce md_wakeup_thread +EXPORT_SYMBOL vmlinux 0x597f4845 of_get_min_tck +EXPORT_SYMBOL vmlinux 0x598542b2 _raw_spin_lock_irqsave +EXPORT_SYMBOL vmlinux 0x59860441 phy_mac_interrupt +EXPORT_SYMBOL vmlinux 0x598cd828 udp_table +EXPORT_SYMBOL vmlinux 0x598e4904 mod_timer_pending +EXPORT_SYMBOL vmlinux 0x59954013 blk_get_backing_dev_info +EXPORT_SYMBOL vmlinux 0x59a17bfc tegra114_clock_tune_cpu_trimmers_high +EXPORT_SYMBOL vmlinux 0x59aa14cf fence_release +EXPORT_SYMBOL vmlinux 0x59ad4d46 ps2_handle_response +EXPORT_SYMBOL vmlinux 0x59d29dab v7_flush_kern_dcache_area +EXPORT_SYMBOL vmlinux 0x59d534eb param_set_charp +EXPORT_SYMBOL vmlinux 0x59d8223a ioport_resource +EXPORT_SYMBOL vmlinux 0x59e30181 tcf_hash_destroy +EXPORT_SYMBOL vmlinux 0x59e5070d __do_div64 +EXPORT_SYMBOL vmlinux 0x5a0b73d0 zlib_deflateInit2 +EXPORT_SYMBOL vmlinux 0x5a12ba04 flush_kernel_dcache_page +EXPORT_SYMBOL vmlinux 0x5a3915dd get_task_io_context +EXPORT_SYMBOL vmlinux 0x5a4f334a dev_mc_unsync +EXPORT_SYMBOL vmlinux 0x5a5f9444 fsnotify_alloc_group +EXPORT_SYMBOL vmlinux 0x5a6578cc xfrm_input_unregister_afinfo +EXPORT_SYMBOL vmlinux 0x5a8115b0 netif_napi_add +EXPORT_SYMBOL vmlinux 0x5aa1eb20 __put_cred +EXPORT_SYMBOL vmlinux 0x5aa2e219 inet6_del_offload +EXPORT_SYMBOL vmlinux 0x5ac3b933 tcp_v4_conn_request +EXPORT_SYMBOL vmlinux 0x5acbb16a qdisc_watchdog_init +EXPORT_SYMBOL vmlinux 0x5ae5be44 lg_lock_init +EXPORT_SYMBOL vmlinux 0x5afbb3eb blk_recount_segments +EXPORT_SYMBOL vmlinux 0x5aff4177 vme_lm_get +EXPORT_SYMBOL vmlinux 0x5b001074 set_groups +EXPORT_SYMBOL vmlinux 0x5b04be5a disable_fiq +EXPORT_SYMBOL vmlinux 0x5b19634d div_s64_rem +EXPORT_SYMBOL vmlinux 0x5b19faf2 netif_device_detach +EXPORT_SYMBOL vmlinux 0x5b4393dc reqsk_queue_hash_req +EXPORT_SYMBOL vmlinux 0x5b5b8439 simple_write_begin +EXPORT_SYMBOL vmlinux 0x5b7cc91a pci_pme_capable +EXPORT_SYMBOL vmlinux 0x5b840ead pci_wake_from_d3 +EXPORT_SYMBOL vmlinux 0x5bb9daec __sg_page_iter_start +EXPORT_SYMBOL vmlinux 0x5bcbe452 mmc_interrupt_hpi +EXPORT_SYMBOL vmlinux 0x5bcca723 poll_schedule_timeout +EXPORT_SYMBOL vmlinux 0x5bf31600 param_ops_bint +EXPORT_SYMBOL vmlinux 0x5bf5bf1e dev_loopback_xmit +EXPORT_SYMBOL vmlinux 0x5c117aae dput +EXPORT_SYMBOL vmlinux 0x5c11fd69 key_revoke +EXPORT_SYMBOL vmlinux 0x5c265cba sg_init_one +EXPORT_SYMBOL vmlinux 0x5c29f127 blk_mq_init_allocated_queue +EXPORT_SYMBOL vmlinux 0x5c5a1a9b dev_mc_add_excl +EXPORT_SYMBOL vmlinux 0x5c6043f0 dquot_set_dqblk +EXPORT_SYMBOL vmlinux 0x5c7043c8 devm_gpiod_put_array +EXPORT_SYMBOL vmlinux 0x5c89f941 blk_register_region +EXPORT_SYMBOL vmlinux 0x5c9284a0 processor_id +EXPORT_SYMBOL vmlinux 0x5cc99bfd tcp_md5_hash_header +EXPORT_SYMBOL vmlinux 0x5cd67cf6 inet_accept +EXPORT_SYMBOL vmlinux 0x5cd7416b dst_destroy +EXPORT_SYMBOL vmlinux 0x5ce85848 textsearch_find_continuous +EXPORT_SYMBOL vmlinux 0x5cf53ce2 input_free_minor +EXPORT_SYMBOL vmlinux 0x5cf855ea inet_frag_maybe_warn_overflow +EXPORT_SYMBOL vmlinux 0x5d21b248 blk_queue_max_write_same_sectors +EXPORT_SYMBOL vmlinux 0x5d4d0b3d iget5_locked +EXPORT_SYMBOL vmlinux 0x5d550c4d scsi_sd_probe_domain +EXPORT_SYMBOL vmlinux 0x5d6874c6 alloc_fddidev +EXPORT_SYMBOL vmlinux 0x5d7566c7 devfreq_remove_device +EXPORT_SYMBOL vmlinux 0x5d8d60c3 address_space_init_once +EXPORT_SYMBOL vmlinux 0x5d969d67 __pagevec_release +EXPORT_SYMBOL vmlinux 0x5d9a64f6 kdb_current_task +EXPORT_SYMBOL vmlinux 0x5da870cf __devm_gpiod_get_index_optional +EXPORT_SYMBOL vmlinux 0x5db6f898 bdi_setup_and_register +EXPORT_SYMBOL vmlinux 0x5dc58136 init_special_inode +EXPORT_SYMBOL vmlinux 0x5dcf6341 outer_cache +EXPORT_SYMBOL vmlinux 0x5de4b1d8 dm_kcopyd_copy +EXPORT_SYMBOL vmlinux 0x5df6fa3f filp_open +EXPORT_SYMBOL vmlinux 0x5e026772 block_page_mkwrite +EXPORT_SYMBOL vmlinux 0x5e0ae929 skb_seq_read +EXPORT_SYMBOL vmlinux 0x5e2d0a39 vga_put +EXPORT_SYMBOL vmlinux 0x5e35f2ec inode_init_always +EXPORT_SYMBOL vmlinux 0x5e5fd022 netpoll_parse_options +EXPORT_SYMBOL vmlinux 0x5e71da47 udp_proc_register +EXPORT_SYMBOL vmlinux 0x5e7f4920 snd_pcm_format_set_silence +EXPORT_SYMBOL vmlinux 0x5e821219 dup_iter +EXPORT_SYMBOL vmlinux 0x5e866d85 prandom_bytes +EXPORT_SYMBOL vmlinux 0x5e95b1cd current_umask +EXPORT_SYMBOL vmlinux 0x5e9e1c5d I_BDEV +EXPORT_SYMBOL vmlinux 0x5eb0ab3b mmc_stop_bkops +EXPORT_SYMBOL vmlinux 0x5eb24829 dm_shift_arg +EXPORT_SYMBOL vmlinux 0x5ebcd956 __getblk_slow +EXPORT_SYMBOL vmlinux 0x5ec50fb1 sg_nents_for_len +EXPORT_SYMBOL vmlinux 0x5ed040b0 pm_set_vt_switch +EXPORT_SYMBOL vmlinux 0x5eddb483 inode_sub_rsv_space +EXPORT_SYMBOL vmlinux 0x5f005368 kstrtou8 +EXPORT_SYMBOL vmlinux 0x5f098b2a in6addr_interfacelocal_allrouters +EXPORT_SYMBOL vmlinux 0x5f1751b6 skb_trim +EXPORT_SYMBOL vmlinux 0x5f1d3a3b mipi_dsi_dcs_write_buffer +EXPORT_SYMBOL vmlinux 0x5f27323c _raw_write_trylock +EXPORT_SYMBOL vmlinux 0x5f2a9ce9 freezing_slow_path +EXPORT_SYMBOL vmlinux 0x5f637607 locks_remove_posix +EXPORT_SYMBOL vmlinux 0x5f754e5a memset +EXPORT_SYMBOL vmlinux 0x5f805661 jbd2_journal_extend +EXPORT_SYMBOL vmlinux 0x5f835120 serial8250_register_8250_port +EXPORT_SYMBOL vmlinux 0x5f970fac vme_slot_num +EXPORT_SYMBOL vmlinux 0x5fc04db3 i2c_del_driver +EXPORT_SYMBOL vmlinux 0x5fcd6621 sget +EXPORT_SYMBOL vmlinux 0x5fd268cb radix_tree_gang_lookup +EXPORT_SYMBOL vmlinux 0x5fda0227 vfs_stat +EXPORT_SYMBOL vmlinux 0x5fe5589f register_shrinker +EXPORT_SYMBOL vmlinux 0x5fe59ca7 iov_iter_get_pages_alloc +EXPORT_SYMBOL vmlinux 0x5fe88b9c generic_key_instantiate +EXPORT_SYMBOL vmlinux 0x5fedcacd skb_copy_and_csum_bits +EXPORT_SYMBOL vmlinux 0x5ff11cc3 pcibios_min_io +EXPORT_SYMBOL vmlinux 0x5ffde85f ata_std_end_eh +EXPORT_SYMBOL vmlinux 0x60055baa dispc_mgr_get_vsync_irq +EXPORT_SYMBOL vmlinux 0x600683d3 do_unblank_screen +EXPORT_SYMBOL vmlinux 0x6008802e register_mtd_chip_driver +EXPORT_SYMBOL vmlinux 0x60194210 abx500_register_ops +EXPORT_SYMBOL vmlinux 0x601f665f dm_io_client_create +EXPORT_SYMBOL vmlinux 0x602c96f0 copy_to_user_fromio +EXPORT_SYMBOL vmlinux 0x60352082 register_inet6addr_notifier +EXPORT_SYMBOL vmlinux 0x60541702 edma_alloc_slot +EXPORT_SYMBOL vmlinux 0x606a7f8d tty_port_destroy +EXPORT_SYMBOL vmlinux 0x606d0b09 secure_tcpv6_sequence_number +EXPORT_SYMBOL vmlinux 0x60715598 fget +EXPORT_SYMBOL vmlinux 0x607ddc51 snd_ctl_free_one +EXPORT_SYMBOL vmlinux 0x6091644e flow_keys_dissector +EXPORT_SYMBOL vmlinux 0x6097fc5b phy_write_mmd_indirect +EXPORT_SYMBOL vmlinux 0x609f1c7e synchronize_net +EXPORT_SYMBOL vmlinux 0x60a32ea9 pm_power_off +EXPORT_SYMBOL vmlinux 0x60a5306f of_graph_get_next_endpoint +EXPORT_SYMBOL vmlinux 0x60da6699 nf_log_unset +EXPORT_SYMBOL vmlinux 0x60dd72d8 pci_fixup_device +EXPORT_SYMBOL vmlinux 0x60deabdc remove_arg_zero +EXPORT_SYMBOL vmlinux 0x60df1e3b posix_acl_equiv_mode +EXPORT_SYMBOL vmlinux 0x6105da45 mdiobus_scan +EXPORT_SYMBOL vmlinux 0x610c409d dispc_ovl_check +EXPORT_SYMBOL vmlinux 0x611a0563 __wait_on_buffer +EXPORT_SYMBOL vmlinux 0x611f69d7 starget_for_each_device +EXPORT_SYMBOL vmlinux 0x6126f627 pci_msi_vec_count +EXPORT_SYMBOL vmlinux 0x6128b5fc __printk_ratelimit +EXPORT_SYMBOL vmlinux 0x61373c0f stop_tty +EXPORT_SYMBOL vmlinux 0x61771b06 insert_inode_locked +EXPORT_SYMBOL vmlinux 0x617a218d __cond_resched_lock +EXPORT_SYMBOL vmlinux 0x618afa38 jbd2_journal_begin_ordered_truncate +EXPORT_SYMBOL vmlinux 0x61921d0a amba_driver_register +EXPORT_SYMBOL vmlinux 0x61b3560c cmdline_parts_set +EXPORT_SYMBOL vmlinux 0x61b7b126 simple_strtoull +EXPORT_SYMBOL vmlinux 0x61c6533c nand_correct_data +EXPORT_SYMBOL vmlinux 0x61dc3df0 inet_csk_destroy_sock +EXPORT_SYMBOL vmlinux 0x61e1e3e5 htc_egpio_get_wakeup_irq +EXPORT_SYMBOL vmlinux 0x61e5ef99 follow_up +EXPORT_SYMBOL vmlinux 0x61f44a54 eth_change_mtu +EXPORT_SYMBOL vmlinux 0x620d16ab nf_register_hooks +EXPORT_SYMBOL vmlinux 0x6214aef2 cpufreq_unregister_notifier +EXPORT_SYMBOL vmlinux 0x6220b4a2 crc32_le +EXPORT_SYMBOL vmlinux 0x6225637e md5_transform +EXPORT_SYMBOL vmlinux 0x6228c21f smp_call_function_single +EXPORT_SYMBOL vmlinux 0x62296be1 qcom_scm_get_version +EXPORT_SYMBOL vmlinux 0x623a83d5 vlan_dev_real_dev +EXPORT_SYMBOL vmlinux 0x6260f742 generic_setlease +EXPORT_SYMBOL vmlinux 0x6265f438 __frontswap_store +EXPORT_SYMBOL vmlinux 0x62737e1d sock_unregister +EXPORT_SYMBOL vmlinux 0x627ff161 registered_fb +EXPORT_SYMBOL vmlinux 0x62827bec security_secctx_to_secid +EXPORT_SYMBOL vmlinux 0x628421c4 of_mdio_find_bus +EXPORT_SYMBOL vmlinux 0x62849ac7 dev_valid_name +EXPORT_SYMBOL vmlinux 0x6288e04a phy_start_interrupts +EXPORT_SYMBOL vmlinux 0x62b970af kunmap_high +EXPORT_SYMBOL vmlinux 0x62cb65c5 find_vma +EXPORT_SYMBOL vmlinux 0x62cfc8d6 mmc_detect_card_removed +EXPORT_SYMBOL vmlinux 0x62d71f2d find_get_pages_contig +EXPORT_SYMBOL vmlinux 0x62e30600 snd_card_new +EXPORT_SYMBOL vmlinux 0x62e58de4 devm_gpiod_get_array_optional +EXPORT_SYMBOL vmlinux 0x62e63199 kfree_skb_list +EXPORT_SYMBOL vmlinux 0x62e7e299 pci_request_regions_exclusive +EXPORT_SYMBOL vmlinux 0x6313d85c request_firmware_nowait +EXPORT_SYMBOL vmlinux 0x6314ff1c __devm_request_region +EXPORT_SYMBOL vmlinux 0x63154b1b security_mmap_file +EXPORT_SYMBOL vmlinux 0x63187451 pcie_aspm_support_enabled +EXPORT_SYMBOL vmlinux 0x631e49b3 dquot_quotactl_sysfile_ops +EXPORT_SYMBOL vmlinux 0x6332f98a sync_inode_metadata +EXPORT_SYMBOL vmlinux 0x6333dbf8 __dquot_transfer +EXPORT_SYMBOL vmlinux 0x6334d3f2 ether_setup +EXPORT_SYMBOL vmlinux 0x6338395d tty_port_raise_dtr_rts +EXPORT_SYMBOL vmlinux 0x635082d3 mipi_dsi_generic_write +EXPORT_SYMBOL vmlinux 0x636b3461 omap_dss_get_num_overlays +EXPORT_SYMBOL vmlinux 0x638cc937 default_qdisc_ops +EXPORT_SYMBOL vmlinux 0x63a7c28c bitmap_find_free_region +EXPORT_SYMBOL vmlinux 0x63b7344e blk_mq_delay_queue +EXPORT_SYMBOL vmlinux 0x63b87f5f get_empty_filp +EXPORT_SYMBOL vmlinux 0x63c4d61f __bitmap_weight +EXPORT_SYMBOL vmlinux 0x63c73e1b security_path_chmod +EXPORT_SYMBOL vmlinux 0x63d00c9c jbd2__journal_start +EXPORT_SYMBOL vmlinux 0x63dc2dc6 of_dev_get +EXPORT_SYMBOL vmlinux 0x63ded825 cont_write_begin +EXPORT_SYMBOL vmlinux 0x63e37ba2 inet_reqsk_alloc +EXPORT_SYMBOL vmlinux 0x63eb9355 panic_blink +EXPORT_SYMBOL vmlinux 0x63fc232f strlen_user +EXPORT_SYMBOL vmlinux 0x6403e338 tcp_memory_pressure +EXPORT_SYMBOL vmlinux 0x64127b67 bitmap_find_next_zero_area_off +EXPORT_SYMBOL vmlinux 0x64296ea4 of_find_backlight_by_node +EXPORT_SYMBOL vmlinux 0x644492b8 shdma_cleanup +EXPORT_SYMBOL vmlinux 0x644ce825 devm_gpiod_put +EXPORT_SYMBOL vmlinux 0x64510758 iunique +EXPORT_SYMBOL vmlinux 0x64599587 pci_get_slot +EXPORT_SYMBOL vmlinux 0x64999478 congestion_wait +EXPORT_SYMBOL vmlinux 0x64a22ff0 dispc_mgr_set_lcd_config +EXPORT_SYMBOL vmlinux 0x64b0ec93 snd_pcm_lib_get_vmalloc_page +EXPORT_SYMBOL vmlinux 0x64c0ebd2 jbd2_journal_load +EXPORT_SYMBOL vmlinux 0x64dcf53d loop_backing_file +EXPORT_SYMBOL vmlinux 0x64f6780c __ww_mutex_lock_interruptible +EXPORT_SYMBOL vmlinux 0x650b21b2 snd_info_register +EXPORT_SYMBOL vmlinux 0x650f04f6 pci_write_vpd +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 0x6522d26e key_link +EXPORT_SYMBOL vmlinux 0x653cbee2 unregister_nls +EXPORT_SYMBOL vmlinux 0x65408378 zlib_inflate_blob +EXPORT_SYMBOL vmlinux 0x65466939 proc_doulongvec_ms_jiffies_minmax +EXPORT_SYMBOL vmlinux 0x654b35e4 security_sb_set_mnt_opts +EXPORT_SYMBOL vmlinux 0x65629b22 skb_get_hash_perturb +EXPORT_SYMBOL vmlinux 0x657b5b17 bdevname +EXPORT_SYMBOL vmlinux 0x6589802d ps2_end_command +EXPORT_SYMBOL vmlinux 0x65bf33d9 __netlink_kernel_create +EXPORT_SYMBOL vmlinux 0x65d9e877 cpufreq_register_notifier +EXPORT_SYMBOL vmlinux 0x65dccf13 xz_dec_end +EXPORT_SYMBOL vmlinux 0x65f38a77 down_read +EXPORT_SYMBOL vmlinux 0x65f39914 key_alloc +EXPORT_SYMBOL vmlinux 0x65f3ad9a fb_videomode_to_var +EXPORT_SYMBOL vmlinux 0x65f4b517 crypto_sha1_finup +EXPORT_SYMBOL vmlinux 0x65fc2c7e vfs_readv +EXPORT_SYMBOL vmlinux 0x660dbe72 gnet_stats_start_copy +EXPORT_SYMBOL vmlinux 0x66227eae vme_alloc_consistent +EXPORT_SYMBOL vmlinux 0x663944b4 xfrm_state_insert +EXPORT_SYMBOL vmlinux 0x663a2a31 mmc_release_host +EXPORT_SYMBOL vmlinux 0x664321bd flow_cache_init +EXPORT_SYMBOL vmlinux 0x6663e865 mod_zone_page_state +EXPORT_SYMBOL vmlinux 0x666b4fe1 sync_dirty_buffer +EXPORT_SYMBOL vmlinux 0x66b37c36 tc_classify_compat +EXPORT_SYMBOL vmlinux 0x66b9b410 eth_type_trans +EXPORT_SYMBOL vmlinux 0x66d042c7 block_write_end +EXPORT_SYMBOL vmlinux 0x66fa38c4 vfs_getxattr_alloc +EXPORT_SYMBOL vmlinux 0x66fc202a mmc_erase_group_aligned +EXPORT_SYMBOL vmlinux 0x6700e562 trace_raw_output_prep +EXPORT_SYMBOL vmlinux 0x67230855 add_random_ready_callback +EXPORT_SYMBOL vmlinux 0x672d0011 param_set_ullong +EXPORT_SYMBOL vmlinux 0x6762e468 input_mt_report_finger_count +EXPORT_SYMBOL vmlinux 0x676649cc __get_user_pages +EXPORT_SYMBOL vmlinux 0x67684a3f pci_release_region +EXPORT_SYMBOL vmlinux 0x676acc7d dev_disable_lro +EXPORT_SYMBOL vmlinux 0x676bbc0f _set_bit +EXPORT_SYMBOL vmlinux 0x67733cf4 mb_cache_create +EXPORT_SYMBOL vmlinux 0x6793e245 skb_dequeue +EXPORT_SYMBOL vmlinux 0x67ab79ae __dst_destroy_metrics_generic +EXPORT_SYMBOL vmlinux 0x67af19ba security_path_unlink +EXPORT_SYMBOL vmlinux 0x67b0139a scsi_verify_blk_ioctl +EXPORT_SYMBOL vmlinux 0x67b27ec1 tty_std_termios +EXPORT_SYMBOL vmlinux 0x67b78eb3 seq_hlist_next_rcu +EXPORT_SYMBOL vmlinux 0x67b79078 __blockdev_direct_IO +EXPORT_SYMBOL vmlinux 0x67c59c2e dev_deactivate +EXPORT_SYMBOL vmlinux 0x6808b453 __unregister_cpu_notifier +EXPORT_SYMBOL vmlinux 0x6809da70 inet_dgram_connect +EXPORT_SYMBOL vmlinux 0x68129eff inet_stream_connect +EXPORT_SYMBOL vmlinux 0x6817831d path_put +EXPORT_SYMBOL vmlinux 0x6822519a md_reap_sync_thread +EXPORT_SYMBOL vmlinux 0x684b7b47 __xfrm_init_state +EXPORT_SYMBOL vmlinux 0x6879fcc3 blk_mq_stop_hw_queue +EXPORT_SYMBOL vmlinux 0x687b6a16 kdbgetsymval +EXPORT_SYMBOL vmlinux 0x68869bae panic_notifier_list +EXPORT_SYMBOL vmlinux 0x689be111 mipi_dsi_dcs_soft_reset +EXPORT_SYMBOL vmlinux 0x68a24153 snd_pcm_format_physical_width +EXPORT_SYMBOL vmlinux 0x68a624ec try_to_release_page +EXPORT_SYMBOL vmlinux 0x68abb700 kobject_put +EXPORT_SYMBOL vmlinux 0x68b83ac6 posix_acl_alloc +EXPORT_SYMBOL vmlinux 0x68bea0b3 con_set_default_unimap +EXPORT_SYMBOL vmlinux 0x68cc054c xfrm_policy_destroy +EXPORT_SYMBOL vmlinux 0x68db5356 inode_init_once +EXPORT_SYMBOL vmlinux 0x68fb581a icst307_idx2s +EXPORT_SYMBOL vmlinux 0x6915eb38 down_interruptible +EXPORT_SYMBOL vmlinux 0x691c781c unregister_mtd_chip_driver +EXPORT_SYMBOL vmlinux 0x691e6f07 mb_cache_entry_find_next +EXPORT_SYMBOL vmlinux 0x693f7bad processor +EXPORT_SYMBOL vmlinux 0x69458312 generic_file_read_iter +EXPORT_SYMBOL vmlinux 0x696aff38 add_disk +EXPORT_SYMBOL vmlinux 0x6971447a rtc_month_days +EXPORT_SYMBOL vmlinux 0x698952ef inet_stream_ops +EXPORT_SYMBOL vmlinux 0x699f45d6 vfs_link +EXPORT_SYMBOL vmlinux 0x69ad2f20 kstrtouint +EXPORT_SYMBOL vmlinux 0x69b370e1 inet_csk_delete_keepalive_timer +EXPORT_SYMBOL vmlinux 0x69b6f8d9 omap_set_dma_transfer_params +EXPORT_SYMBOL vmlinux 0x69dfce42 phy_read_mmd_indirect +EXPORT_SYMBOL vmlinux 0x69e8b4e4 clear_wb_congested +EXPORT_SYMBOL vmlinux 0x6a037cf1 mempool_kfree +EXPORT_SYMBOL vmlinux 0x6a1000bd freeze_super +EXPORT_SYMBOL vmlinux 0x6a117a51 dma_async_device_unregister +EXPORT_SYMBOL vmlinux 0x6a4aa1dd rtnl_link_get_net +EXPORT_SYMBOL vmlinux 0x6a58beb6 __hw_addr_sync_dev +EXPORT_SYMBOL vmlinux 0x6a5ecb18 unregister_module_notifier +EXPORT_SYMBOL vmlinux 0x6a76f3ac blk_iopoll_enable +EXPORT_SYMBOL vmlinux 0x6a7eca0e set_blocksize +EXPORT_SYMBOL vmlinux 0x6a86d564 qdisc_reset +EXPORT_SYMBOL vmlinux 0x6a8b8f3b tcf_exts_change +EXPORT_SYMBOL vmlinux 0x6a9ca8b3 sock_no_ioctl +EXPORT_SYMBOL vmlinux 0x6a9e42cb phy_connect_direct +EXPORT_SYMBOL vmlinux 0x6aa1a92e mmc_register_driver +EXPORT_SYMBOL vmlinux 0x6acafd5b cookie_timestamp_decode +EXPORT_SYMBOL vmlinux 0x6adf23d2 inet_frag_kill +EXPORT_SYMBOL vmlinux 0x6aee2243 simple_dir_inode_operations +EXPORT_SYMBOL vmlinux 0x6aeefac4 zlib_deflateReset +EXPORT_SYMBOL vmlinux 0x6af37bf9 scsi_is_sdev_device +EXPORT_SYMBOL vmlinux 0x6b06fdce delayed_work_timer_fn +EXPORT_SYMBOL vmlinux 0x6b0d5476 tcp_sync_mss +EXPORT_SYMBOL vmlinux 0x6b1b67d3 __bdevname +EXPORT_SYMBOL vmlinux 0x6b1eb216 mipi_dsi_dcs_set_pixel_format +EXPORT_SYMBOL vmlinux 0x6b2d35c3 bdput +EXPORT_SYMBOL vmlinux 0x6b2dc060 dump_stack +EXPORT_SYMBOL vmlinux 0x6b55a965 submit_bio +EXPORT_SYMBOL vmlinux 0x6b7a40a5 sound_class +EXPORT_SYMBOL vmlinux 0x6b8b7cfb bio_put +EXPORT_SYMBOL vmlinux 0x6b994f59 blk_mq_stop_hw_queues +EXPORT_SYMBOL vmlinux 0x6bb3ea9d tc6393xb_lcd_mode +EXPORT_SYMBOL vmlinux 0x6bb5b29c sock_no_sendmsg +EXPORT_SYMBOL vmlinux 0x6bc3fbc0 __unregister_chrdev +EXPORT_SYMBOL vmlinux 0x6bcfb040 dev_mc_sync_multiple +EXPORT_SYMBOL vmlinux 0x6bd1afd2 truncate_setsize +EXPORT_SYMBOL vmlinux 0x6bdcfd99 qdisc_class_hash_remove +EXPORT_SYMBOL vmlinux 0x6be767a2 netif_wake_subqueue +EXPORT_SYMBOL vmlinux 0x6bef8211 mb_cache_entry_insert +EXPORT_SYMBOL vmlinux 0x6bfa036c module_put +EXPORT_SYMBOL vmlinux 0x6bfb13bf unregister_tcf_proto_ops +EXPORT_SYMBOL vmlinux 0x6c09c2a4 del_timer +EXPORT_SYMBOL vmlinux 0x6c102e8f qdisc_warn_nonwc +EXPORT_SYMBOL vmlinux 0x6c1ce5ce strcspn +EXPORT_SYMBOL vmlinux 0x6c2791b9 of_phy_connect +EXPORT_SYMBOL vmlinux 0x6c3f65da omap_dss_get_overlay +EXPORT_SYMBOL vmlinux 0x6c428dd5 mntput +EXPORT_SYMBOL vmlinux 0x6c4eed38 padata_free +EXPORT_SYMBOL vmlinux 0x6c51a836 sysctl_tcp_notsent_lowat +EXPORT_SYMBOL vmlinux 0x6c5dd368 call_usermodehelper_exec +EXPORT_SYMBOL vmlinux 0x6c61ce70 num_registered_fb +EXPORT_SYMBOL vmlinux 0x6c6cdd4d wait_for_completion_interruptible_timeout +EXPORT_SYMBOL vmlinux 0x6c702af7 sysctl_udp_rmem_min +EXPORT_SYMBOL vmlinux 0x6c9f88e7 of_phy_is_fixed_link +EXPORT_SYMBOL vmlinux 0x6ca977aa seq_file_path +EXPORT_SYMBOL vmlinux 0x6caa46b0 i2c_put_adapter +EXPORT_SYMBOL vmlinux 0x6cab1adf inet_sendmsg +EXPORT_SYMBOL vmlinux 0x6cb88a0d blk_mq_alloc_request +EXPORT_SYMBOL vmlinux 0x6cdc5c6b nla_strlcpy +EXPORT_SYMBOL vmlinux 0x6cf18f47 devm_ioremap_resource +EXPORT_SYMBOL vmlinux 0x6cf39505 acl_by_type +EXPORT_SYMBOL vmlinux 0x6d0f1f89 dm_table_get_mode +EXPORT_SYMBOL vmlinux 0x6d13cbae snd_timer_interrupt +EXPORT_SYMBOL vmlinux 0x6d1c44dd lockref_get_not_zero +EXPORT_SYMBOL vmlinux 0x6d294e43 clock_t_to_jiffies +EXPORT_SYMBOL vmlinux 0x6d2a0ad1 i2c_transfer +EXPORT_SYMBOL vmlinux 0x6d340f64 tty_termios_input_baud_rate +EXPORT_SYMBOL vmlinux 0x6d35cdd4 __quota_error +EXPORT_SYMBOL vmlinux 0x6d372554 blk_pre_runtime_suspend +EXPORT_SYMBOL vmlinux 0x6d5335a0 snd_mixer_oss_notify_callback +EXPORT_SYMBOL vmlinux 0x6d55f374 pps_unregister_source +EXPORT_SYMBOL vmlinux 0x6d662533 _find_first_bit_le +EXPORT_SYMBOL vmlinux 0x6d6d1234 __tracepoint_fence_annotate_wait_on +EXPORT_SYMBOL vmlinux 0x6d9bb6fc md_cluster_ops +EXPORT_SYMBOL vmlinux 0x6da53dec scsi_register +EXPORT_SYMBOL vmlinux 0x6da62177 remap_pfn_range +EXPORT_SYMBOL vmlinux 0x6dba8f48 register_sound_special_device +EXPORT_SYMBOL vmlinux 0x6dbf0117 nobh_write_begin +EXPORT_SYMBOL vmlinux 0x6dc12b2c bio_flush_dcache_pages +EXPORT_SYMBOL vmlinux 0x6dd6ae53 tty_port_hangup +EXPORT_SYMBOL vmlinux 0x6dd9aae2 register_tcf_proto_ops +EXPORT_SYMBOL vmlinux 0x6deef3d8 blk_cleanup_queue +EXPORT_SYMBOL vmlinux 0x6def2db2 half_md4_transform +EXPORT_SYMBOL vmlinux 0x6df1aaf1 kernel_sigaction +EXPORT_SYMBOL vmlinux 0x6e080f7d nosteal_pipe_buf_ops +EXPORT_SYMBOL vmlinux 0x6e221c49 blk_integrity_merge_bio +EXPORT_SYMBOL vmlinux 0x6e3b819f sg_copy_buffer +EXPORT_SYMBOL vmlinux 0x6e532803 kthread_bind +EXPORT_SYMBOL vmlinux 0x6e53f737 netdev_lower_dev_get_private +EXPORT_SYMBOL vmlinux 0x6e6514ed radix_tree_insert +EXPORT_SYMBOL vmlinux 0x6e720ff2 rtnl_unlock +EXPORT_SYMBOL vmlinux 0x6e9dd606 __symbol_put +EXPORT_SYMBOL vmlinux 0x6ea537ee jbd2_journal_wipe +EXPORT_SYMBOL vmlinux 0x6ebeabd5 iov_iter_bvec +EXPORT_SYMBOL vmlinux 0x6ebfd4b0 mark_buffer_dirty_inode +EXPORT_SYMBOL vmlinux 0x6ec9ccdb _raw_write_lock_bh +EXPORT_SYMBOL vmlinux 0x6eca68d1 netdev_features_change +EXPORT_SYMBOL vmlinux 0x6ee58a77 textsearch_prepare +EXPORT_SYMBOL vmlinux 0x6ef8fcd8 snd_pcm_format_linear +EXPORT_SYMBOL vmlinux 0x6f0c75a1 vme_master_mmap +EXPORT_SYMBOL vmlinux 0x6f0fb6de dquot_file_open +EXPORT_SYMBOL vmlinux 0x6f20960a full_name_hash +EXPORT_SYMBOL vmlinux 0x6f40787b of_node_get +EXPORT_SYMBOL vmlinux 0x6f49469a genphy_read_status +EXPORT_SYMBOL vmlinux 0x6f5100fc nf_reinject +EXPORT_SYMBOL vmlinux 0x6f5b8e03 sb_set_blocksize +EXPORT_SYMBOL vmlinux 0x6f71ad58 input_free_device +EXPORT_SYMBOL vmlinux 0x6f88effb hdmi_avi_infoframe_init +EXPORT_SYMBOL vmlinux 0x6f8ba1b3 _snd_pcm_lib_alloc_vmalloc_buffer +EXPORT_SYMBOL vmlinux 0x6fa83430 dev_printk +EXPORT_SYMBOL vmlinux 0x6fb857f1 dst_alloc +EXPORT_SYMBOL vmlinux 0x6fbf07cd __free_page_frag +EXPORT_SYMBOL vmlinux 0x6fbf2fad tcp_init_xmit_timers +EXPORT_SYMBOL vmlinux 0x6fcb87a1 touch_softlockup_watchdog +EXPORT_SYMBOL vmlinux 0x6fd2aa5d dquot_reclaim_space_nodirty +EXPORT_SYMBOL vmlinux 0x6febe8ea fsync_bdev +EXPORT_SYMBOL vmlinux 0x6ff63c81 pci_unregister_driver +EXPORT_SYMBOL vmlinux 0x6ffc4128 tty_do_resize +EXPORT_SYMBOL vmlinux 0x70097aa0 nand_bch_free +EXPORT_SYMBOL vmlinux 0x700bd9a0 __tracepoint_kmalloc +EXPORT_SYMBOL vmlinux 0x701dbd6b get_cached_acl_rcu +EXPORT_SYMBOL vmlinux 0x7038db6c of_get_next_child +EXPORT_SYMBOL vmlinux 0x70523a7a __cond_resched_softirq +EXPORT_SYMBOL vmlinux 0x7057addf gnet_stats_finish_copy +EXPORT_SYMBOL vmlinux 0x7062b4cd cmdline_parts_free +EXPORT_SYMBOL vmlinux 0x706ade23 set_binfmt +EXPORT_SYMBOL vmlinux 0x706ccc36 md_write_start +EXPORT_SYMBOL vmlinux 0x706d051c del_timer_sync +EXPORT_SYMBOL vmlinux 0x7078ac15 i2c_smbus_write_i2c_block_data +EXPORT_SYMBOL vmlinux 0x707f43f6 __ctzdi2 +EXPORT_SYMBOL vmlinux 0x7099d0ef lock_rename +EXPORT_SYMBOL vmlinux 0x70a0fe24 of_clk_get_by_name +EXPORT_SYMBOL vmlinux 0x70b67c7b dquot_free_inode +EXPORT_SYMBOL vmlinux 0x70c7f529 ___pskb_trim +EXPORT_SYMBOL vmlinux 0x70e11f80 tty_hung_up_p +EXPORT_SYMBOL vmlinux 0x70e39dae dss_uninstall_mgr_ops +EXPORT_SYMBOL vmlinux 0x70e9b645 search_binary_handler +EXPORT_SYMBOL vmlinux 0x70f66af6 save_mount_options +EXPORT_SYMBOL vmlinux 0x70f96f88 glob_match +EXPORT_SYMBOL vmlinux 0x71042cae blk_mq_requeue_request +EXPORT_SYMBOL vmlinux 0x710c0325 release_sock +EXPORT_SYMBOL vmlinux 0x7119db7f omap_dss_pal_timings +EXPORT_SYMBOL vmlinux 0x7126e148 __wait_on_bit_lock +EXPORT_SYMBOL vmlinux 0x7129e5f8 hex_asc +EXPORT_SYMBOL vmlinux 0x712ed37b radix_tree_gang_lookup_tag_slot +EXPORT_SYMBOL vmlinux 0x713e9745 snd_unregister_device +EXPORT_SYMBOL vmlinux 0x713fa32a pm860x_reg_read +EXPORT_SYMBOL vmlinux 0x7142c63c edma_free_slot +EXPORT_SYMBOL vmlinux 0x715b9f56 pcie_capability_write_dword +EXPORT_SYMBOL vmlinux 0x7169102e omap_dss_ntsc_timings +EXPORT_SYMBOL vmlinux 0x716f292f snd_timer_stop +EXPORT_SYMBOL vmlinux 0x7171121c overflowgid +EXPORT_SYMBOL vmlinux 0x71a50dbc register_blkdev +EXPORT_SYMBOL vmlinux 0x71a672ef dmam_pool_destroy +EXPORT_SYMBOL vmlinux 0x71c90087 memcmp +EXPORT_SYMBOL vmlinux 0x71ca026e xfrm_input_register_afinfo +EXPORT_SYMBOL vmlinux 0x71cecff6 blk_mq_alloc_tag_set +EXPORT_SYMBOL vmlinux 0x71d0d5ca ata_print_version +EXPORT_SYMBOL vmlinux 0x71d5c31d mmc_retune_timer_stop +EXPORT_SYMBOL vmlinux 0x71f3adb9 pci_bus_read_config_dword +EXPORT_SYMBOL vmlinux 0x71f65175 hdmi_spd_infoframe_pack +EXPORT_SYMBOL vmlinux 0x72137ab1 sock_no_poll +EXPORT_SYMBOL vmlinux 0x7223573f bioset_integrity_create +EXPORT_SYMBOL vmlinux 0x72248911 __inet_stream_connect +EXPORT_SYMBOL vmlinux 0x72350130 ___ratelimit +EXPORT_SYMBOL vmlinux 0x724b4433 inet_get_local_port_range +EXPORT_SYMBOL vmlinux 0x72684eb6 blkdev_get_by_dev +EXPORT_SYMBOL vmlinux 0x72738f5d crypto_sha512_finup +EXPORT_SYMBOL vmlinux 0x7296d8a2 memcg_kmem_enabled_key +EXPORT_SYMBOL vmlinux 0x72a0e6f2 __sg_alloc_table +EXPORT_SYMBOL vmlinux 0x72a7ac7c tty_lock +EXPORT_SYMBOL vmlinux 0x72b46a8c kobject_get +EXPORT_SYMBOL vmlinux 0x72ce4147 request_key_async_with_auxdata +EXPORT_SYMBOL vmlinux 0x72d58de9 kstrtou8_from_user +EXPORT_SYMBOL vmlinux 0x72d78740 __scsi_add_device +EXPORT_SYMBOL vmlinux 0x72ea7b2d scsi_device_type +EXPORT_SYMBOL vmlinux 0x72faa356 of_parse_phandle +EXPORT_SYMBOL vmlinux 0x730ab1bd writeback_inodes_sb_nr +EXPORT_SYMBOL vmlinux 0x73125164 invalidate_bdev +EXPORT_SYMBOL vmlinux 0x7315a4e9 twl6030_mmc_card_detect_config +EXPORT_SYMBOL vmlinux 0x731dbacc pagecache_write_begin +EXPORT_SYMBOL vmlinux 0x7321dab5 ptp_clock_event +EXPORT_SYMBOL vmlinux 0x73341e34 xfrm_find_acq +EXPORT_SYMBOL vmlinux 0x733c3b54 kasprintf +EXPORT_SYMBOL vmlinux 0x734feb93 memory_cgrp_subsys +EXPORT_SYMBOL vmlinux 0x73528ccb devfreq_suspend_device +EXPORT_SYMBOL vmlinux 0x7383b39f mount_single +EXPORT_SYMBOL vmlinux 0x73870d90 pcie_capability_read_dword +EXPORT_SYMBOL vmlinux 0x73b7fcf9 mipi_dsi_driver_register_full +EXPORT_SYMBOL vmlinux 0x73c7e8eb ilookup +EXPORT_SYMBOL vmlinux 0x73cd1e0c vga_client_register +EXPORT_SYMBOL vmlinux 0x73d5f3cf twl6040_get_sysclk +EXPORT_SYMBOL vmlinux 0x73e20c1c strlcpy +EXPORT_SYMBOL vmlinux 0x7402b156 scsi_device_get +EXPORT_SYMBOL vmlinux 0x7410aba2 strreplace +EXPORT_SYMBOL vmlinux 0x7452b178 nf_register_hook +EXPORT_SYMBOL vmlinux 0x747195f0 hdmi_vendor_infoframe_init +EXPORT_SYMBOL vmlinux 0x7485e15e unregister_chrdev_region +EXPORT_SYMBOL vmlinux 0x7489374d inet6_unregister_icmp_sender +EXPORT_SYMBOL vmlinux 0x749262a7 sk_send_sigurg +EXPORT_SYMBOL vmlinux 0x74bc4404 register_console +EXPORT_SYMBOL vmlinux 0x74c134b9 __sw_hweight32 +EXPORT_SYMBOL vmlinux 0x74c7667d bd_set_size +EXPORT_SYMBOL vmlinux 0x74c8ad59 ip6_find_1stfragopt +EXPORT_SYMBOL vmlinux 0x74c9953c sock_init_data +EXPORT_SYMBOL vmlinux 0x74d2cfa4 snd_pcm_lib_preallocate_free_for_all +EXPORT_SYMBOL vmlinux 0x74e46dac imx_ssi_fiq_tx_buffer +EXPORT_SYMBOL vmlinux 0x74e5ff1a udpv6_encap_enable +EXPORT_SYMBOL vmlinux 0x74ecc86b of_find_node_opts_by_path +EXPORT_SYMBOL vmlinux 0x74f0f42f param_set_ushort +EXPORT_SYMBOL vmlinux 0x74f39c58 dev_get_iflink +EXPORT_SYMBOL vmlinux 0x74f81c80 netdev_master_upper_dev_get +EXPORT_SYMBOL vmlinux 0x74fa022d edma_trigger_channel +EXPORT_SYMBOL vmlinux 0x7505bdef memchr_inv +EXPORT_SYMBOL vmlinux 0x7538a0a5 ppp_unregister_compressor +EXPORT_SYMBOL vmlinux 0x753ae2bf generic_pipe_buf_release +EXPORT_SYMBOL vmlinux 0x754da8ce uart_suspend_port +EXPORT_SYMBOL vmlinux 0x7550e0a9 bdget +EXPORT_SYMBOL vmlinux 0x75514422 max8998_update_reg +EXPORT_SYMBOL vmlinux 0x7567d381 __get_fiq_regs +EXPORT_SYMBOL vmlinux 0x7569480e snd_ctl_boolean_mono_info +EXPORT_SYMBOL vmlinux 0x757b5d0b omap_dss_get_device +EXPORT_SYMBOL vmlinux 0x758bcbf2 snd_ctl_replace +EXPORT_SYMBOL vmlinux 0x7593d385 div64_s64 +EXPORT_SYMBOL vmlinux 0x75953766 napi_gro_flush +EXPORT_SYMBOL vmlinux 0x7599fd27 register_netdev +EXPORT_SYMBOL vmlinux 0x75a4ebfc udp_seq_open +EXPORT_SYMBOL vmlinux 0x75bda77a seq_hlist_next +EXPORT_SYMBOL vmlinux 0x75bdea12 iommu_area_alloc +EXPORT_SYMBOL vmlinux 0x75dcfb88 dma_declare_coherent_memory +EXPORT_SYMBOL vmlinux 0x75f1752a inet6_del_protocol +EXPORT_SYMBOL vmlinux 0x760a0f4f yield +EXPORT_SYMBOL vmlinux 0x7647726c handle_sysrq +EXPORT_SYMBOL vmlinux 0x768aa7cc __xfrm_policy_check +EXPORT_SYMBOL vmlinux 0x76a8ac6f seq_puts +EXPORT_SYMBOL vmlinux 0x76a8f4b6 mpage_readpage +EXPORT_SYMBOL vmlinux 0x76b4acb1 revert_creds +EXPORT_SYMBOL vmlinux 0x76c04be0 generic_ro_fops +EXPORT_SYMBOL vmlinux 0x76cf47f6 __aeabi_llsl +EXPORT_SYMBOL vmlinux 0x76cf68cf __inc_zone_page_state +EXPORT_SYMBOL vmlinux 0x76d3cd60 laptop_mode +EXPORT_SYMBOL vmlinux 0x76d451c4 add_taint +EXPORT_SYMBOL vmlinux 0x76d9bf11 crc32_be +EXPORT_SYMBOL vmlinux 0x76e30f5c input_mt_sync_frame +EXPORT_SYMBOL vmlinux 0x76ecf159 bitmap_start_sync +EXPORT_SYMBOL vmlinux 0x76f480df blk_queue_physical_block_size +EXPORT_SYMBOL vmlinux 0x76f6c5ef kmalloc_order +EXPORT_SYMBOL vmlinux 0x77134bdc mmc_put_card +EXPORT_SYMBOL vmlinux 0x7720f37e neigh_changeaddr +EXPORT_SYMBOL vmlinux 0x77297cc8 follow_down_one +EXPORT_SYMBOL vmlinux 0x775a130e __sg_free_table +EXPORT_SYMBOL vmlinux 0x7770e8d5 blk_queue_segment_boundary +EXPORT_SYMBOL vmlinux 0x778124c9 max8925_set_bits +EXPORT_SYMBOL vmlinux 0x7783c325 update_devfreq +EXPORT_SYMBOL vmlinux 0x77887217 block_read_full_page +EXPORT_SYMBOL vmlinux 0x778ed9eb snd_timer_continue +EXPORT_SYMBOL vmlinux 0x778fae65 mmc_start_bkops +EXPORT_SYMBOL vmlinux 0x7791193f icst525_s2div +EXPORT_SYMBOL vmlinux 0x779a18af kstrtoll +EXPORT_SYMBOL vmlinux 0x77a58566 nand_bch_calculate_ecc +EXPORT_SYMBOL vmlinux 0x77a70cb5 ip_getsockopt +EXPORT_SYMBOL vmlinux 0x77a820a3 snd_pcm_lib_readv +EXPORT_SYMBOL vmlinux 0x77a83f15 mb_cache_entry_get +EXPORT_SYMBOL vmlinux 0x77bc13a0 strim +EXPORT_SYMBOL vmlinux 0x77d2c837 account_page_redirty +EXPORT_SYMBOL vmlinux 0x77d6bec3 dump_emit +EXPORT_SYMBOL vmlinux 0x77fa52d3 scsi_report_opcode +EXPORT_SYMBOL vmlinux 0x7802a600 crypto_sha1_update +EXPORT_SYMBOL vmlinux 0x780b7df9 phy_driver_unregister +EXPORT_SYMBOL vmlinux 0x7810a88b fence_signal_locked +EXPORT_SYMBOL vmlinux 0x7818fa89 devm_devfreq_add_device +EXPORT_SYMBOL vmlinux 0x783b3563 wake_up_atomic_t +EXPORT_SYMBOL vmlinux 0x783bd48a xfrm_lookup_route +EXPORT_SYMBOL vmlinux 0x7873708a mmc_erase +EXPORT_SYMBOL vmlinux 0x78779c0b set_fiq_handler +EXPORT_SYMBOL vmlinux 0x7880c781 dm_kcopyd_prepare_callback +EXPORT_SYMBOL vmlinux 0x7884ffe8 _dev_info +EXPORT_SYMBOL vmlinux 0x788fe103 iomem_resource +EXPORT_SYMBOL vmlinux 0x789affb1 frontswap_tmem_exclusive_gets +EXPORT_SYMBOL vmlinux 0x78a0d309 __alloc_pages_nodemask +EXPORT_SYMBOL vmlinux 0x78a3462c shdma_reset +EXPORT_SYMBOL vmlinux 0x78b80601 snd_unregister_oss_device +EXPORT_SYMBOL vmlinux 0x78b8b57e arm_coherent_dma_ops +EXPORT_SYMBOL vmlinux 0x78bd2ffb jbd2_journal_errno +EXPORT_SYMBOL vmlinux 0x78c44c93 unlock_buffer +EXPORT_SYMBOL vmlinux 0x78cf28f9 ip6_frag_match +EXPORT_SYMBOL vmlinux 0x78df6bd7 no_pci_devices +EXPORT_SYMBOL vmlinux 0x78e237e2 blk_queue_softirq_done +EXPORT_SYMBOL vmlinux 0x78f22fb4 bfifo_qdisc_ops +EXPORT_SYMBOL vmlinux 0x78f33305 dma_supported +EXPORT_SYMBOL vmlinux 0x78f805fd dev_err +EXPORT_SYMBOL vmlinux 0x79058fae rtnl_notify +EXPORT_SYMBOL vmlinux 0x791311d9 eth_validate_addr +EXPORT_SYMBOL vmlinux 0x792a764c kernel_sendmsg +EXPORT_SYMBOL vmlinux 0x792f8704 amba_find_device +EXPORT_SYMBOL vmlinux 0x793d0322 vfs_getattr +EXPORT_SYMBOL vmlinux 0x79423da3 soft_cursor +EXPORT_SYMBOL vmlinux 0x7945e9bf tty_insert_flip_string_fixed_flag +EXPORT_SYMBOL vmlinux 0x79605f46 clear_nlink +EXPORT_SYMBOL vmlinux 0x796fc5ce scsi_get_sense_info_fld +EXPORT_SYMBOL vmlinux 0x7973741d irq_set_chip +EXPORT_SYMBOL vmlinux 0x79aa04a2 get_random_bytes +EXPORT_SYMBOL vmlinux 0x79c5a9f0 ioremap +EXPORT_SYMBOL vmlinux 0x79d71023 locks_init_lock +EXPORT_SYMBOL vmlinux 0x79d92122 scsi_host_lookup +EXPORT_SYMBOL vmlinux 0x79fa1deb imx_ssi_fiq_rx_buffer +EXPORT_SYMBOL vmlinux 0x7a0d2401 ipv6_chk_addr_and_flags +EXPORT_SYMBOL vmlinux 0x7a1f2611 dispc_mgr_set_timings +EXPORT_SYMBOL vmlinux 0x7a27c184 ewma_init +EXPORT_SYMBOL vmlinux 0x7a303999 of_get_named_gpio_flags +EXPORT_SYMBOL vmlinux 0x7a4497db kzfree +EXPORT_SYMBOL vmlinux 0x7a570d7a omap_dss_get_overlay_manager +EXPORT_SYMBOL vmlinux 0x7a6a4dd9 devm_clk_put +EXPORT_SYMBOL vmlinux 0x7a6eac95 proto_unregister +EXPORT_SYMBOL vmlinux 0x7a6f615f __skb_warn_lro_forwarding +EXPORT_SYMBOL vmlinux 0x7a925833 cpufreq_get_global_kobject +EXPORT_SYMBOL vmlinux 0x7a9484f3 load_nls_default +EXPORT_SYMBOL vmlinux 0x7a95e5ae do_settimeofday64 +EXPORT_SYMBOL vmlinux 0x7aa1756e kvfree +EXPORT_SYMBOL vmlinux 0x7aa5799a iov_iter_fault_in_multipages_readable +EXPORT_SYMBOL vmlinux 0x7aa809e8 blk_rq_map_user_iov +EXPORT_SYMBOL vmlinux 0x7ab88a45 system_freezing_cnt +EXPORT_SYMBOL vmlinux 0x7abd5b67 genphy_restart_aneg +EXPORT_SYMBOL vmlinux 0x7ad050b9 qid_lt +EXPORT_SYMBOL vmlinux 0x7ad09852 phy_drivers_register +EXPORT_SYMBOL vmlinux 0x7ad83f87 xfrm_state_delete +EXPORT_SYMBOL vmlinux 0x7add44b5 posix_acl_valid +EXPORT_SYMBOL vmlinux 0x7aee6af2 snd_jack_report +EXPORT_SYMBOL vmlinux 0x7afa89fc vsnprintf +EXPORT_SYMBOL vmlinux 0x7afc9d8a unregister_sound_mixer +EXPORT_SYMBOL vmlinux 0x7b1ade38 lz4_decompress +EXPORT_SYMBOL vmlinux 0x7b283ce3 prandom_bytes_state +EXPORT_SYMBOL vmlinux 0x7b3189aa inode_add_rsv_space +EXPORT_SYMBOL vmlinux 0x7b4c950b init_net +EXPORT_SYMBOL vmlinux 0x7b5c8440 vm_munmap +EXPORT_SYMBOL vmlinux 0x7b8c0001 netlink_unicast +EXPORT_SYMBOL vmlinux 0x7b933f36 __mutex_init +EXPORT_SYMBOL vmlinux 0x7bab0147 snd_pcm_set_ops +EXPORT_SYMBOL vmlinux 0x7bb3251f devfreq_resume_device +EXPORT_SYMBOL vmlinux 0x7bb8a0d8 scsi_block_when_processing_errors +EXPORT_SYMBOL vmlinux 0x7bc551a1 dquot_destroy +EXPORT_SYMBOL vmlinux 0x7bd2c718 skb_store_bits +EXPORT_SYMBOL vmlinux 0x7bfa2761 tty_port_init +EXPORT_SYMBOL vmlinux 0x7c116b17 pcim_iomap +EXPORT_SYMBOL vmlinux 0x7c1372e8 panic +EXPORT_SYMBOL vmlinux 0x7c173634 __bitmap_complement +EXPORT_SYMBOL vmlinux 0x7c1c5137 sock_diag_put_filterinfo +EXPORT_SYMBOL vmlinux 0x7c258f82 finish_no_open +EXPORT_SYMBOL vmlinux 0x7c2e57c8 of_device_is_available +EXPORT_SYMBOL vmlinux 0x7c410160 __napi_complete +EXPORT_SYMBOL vmlinux 0x7c46233a cpufreq_quick_get +EXPORT_SYMBOL vmlinux 0x7c4d217d tcf_action_dump_1 +EXPORT_SYMBOL vmlinux 0x7c6e4094 inode_set_bytes +EXPORT_SYMBOL vmlinux 0x7c6fa4ff qdisc_list_add +EXPORT_SYMBOL vmlinux 0x7c8f8e81 jbd2_journal_restart +EXPORT_SYMBOL vmlinux 0x7c98845d twl_i2c_read +EXPORT_SYMBOL vmlinux 0x7c9d74e3 __elv_add_request +EXPORT_SYMBOL vmlinux 0x7cb1ae69 cpu_down +EXPORT_SYMBOL vmlinux 0x7cb395d9 snd_seq_root +EXPORT_SYMBOL vmlinux 0x7cbfc68b swiotlb_map_sg +EXPORT_SYMBOL vmlinux 0x7cc035a7 __ucmpdi2 +EXPORT_SYMBOL vmlinux 0x7ce18c9f from_kqid +EXPORT_SYMBOL vmlinux 0x7cf35220 vme_master_free +EXPORT_SYMBOL vmlinux 0x7cf86c4c nla_reserve_nohdr +EXPORT_SYMBOL vmlinux 0x7d0db45c jiffies_to_clock_t +EXPORT_SYMBOL vmlinux 0x7d0fd013 skb_add_rx_frag +EXPORT_SYMBOL vmlinux 0x7d11c268 jiffies +EXPORT_SYMBOL vmlinux 0x7d24b06f register_netdevice +EXPORT_SYMBOL vmlinux 0x7d24bf7a arm_dma_ops +EXPORT_SYMBOL vmlinux 0x7d2d203a ppp_register_channel +EXPORT_SYMBOL vmlinux 0x7d3511eb serio_close +EXPORT_SYMBOL vmlinux 0x7d494a2b __i2c_transfer +EXPORT_SYMBOL vmlinux 0x7d49e66e blk_queue_stack_limits +EXPORT_SYMBOL vmlinux 0x7d5c408a of_device_unregister +EXPORT_SYMBOL vmlinux 0x7d705738 blk_start_plug +EXPORT_SYMBOL vmlinux 0x7d852fe4 cdrom_ioctl +EXPORT_SYMBOL vmlinux 0x7da67366 dma_alloc_from_coherent +EXPORT_SYMBOL vmlinux 0x7db51cf2 xfrm_init_replay +EXPORT_SYMBOL vmlinux 0x7db75bb9 bh_uptodate_or_lock +EXPORT_SYMBOL vmlinux 0x7dccc294 proc_doulongvec_minmax +EXPORT_SYMBOL vmlinux 0x7def262c pci_find_capability +EXPORT_SYMBOL vmlinux 0x7deff673 dm_consume_args +EXPORT_SYMBOL vmlinux 0x7e07babc netdev_upper_get_next_dev_rcu +EXPORT_SYMBOL vmlinux 0x7e19ef84 zero_fill_bio +EXPORT_SYMBOL vmlinux 0x7e2f21ac __dynamic_netdev_dbg +EXPORT_SYMBOL vmlinux 0x7e3b475a param_ops_short +EXPORT_SYMBOL vmlinux 0x7e4a9336 blk_end_request_cur +EXPORT_SYMBOL vmlinux 0x7e6fa3ef tcf_hash_new_index +EXPORT_SYMBOL vmlinux 0x7e953eea mipi_dsi_dcs_enter_sleep_mode +EXPORT_SYMBOL vmlinux 0x7e9efe8e complete_and_exit +EXPORT_SYMBOL vmlinux 0x7eb8cbbd omapdss_unregister_display +EXPORT_SYMBOL vmlinux 0x7ee6d93a nsecs_to_jiffies64 +EXPORT_SYMBOL vmlinux 0x7ee735fc sock_dequeue_err_skb +EXPORT_SYMBOL vmlinux 0x7ee75f4e down_write_trylock +EXPORT_SYMBOL vmlinux 0x7ee7f093 dispc_ovl_compute_fifo_thresholds +EXPORT_SYMBOL vmlinux 0x7f015745 omap_dss_get_output +EXPORT_SYMBOL vmlinux 0x7f02188f __msecs_to_jiffies +EXPORT_SYMBOL vmlinux 0x7f11bdcf km_is_alive +EXPORT_SYMBOL vmlinux 0x7f17f066 dev_crit +EXPORT_SYMBOL vmlinux 0x7f2038a4 dec_zone_page_state +EXPORT_SYMBOL vmlinux 0x7f211533 xfrm_alloc_spi +EXPORT_SYMBOL vmlinux 0x7f24de73 jiffies_to_usecs +EXPORT_SYMBOL vmlinux 0x7f2ca8f9 __tracepoint_fence_emit +EXPORT_SYMBOL vmlinux 0x7f3fb0b3 snd_jack_new +EXPORT_SYMBOL vmlinux 0x7f486f33 phy_mii_ioctl +EXPORT_SYMBOL vmlinux 0x7f505bea pci_set_mwi +EXPORT_SYMBOL vmlinux 0x7f62a045 cpu_maps_update_done +EXPORT_SYMBOL vmlinux 0x7f63b31e _memcpy_toio +EXPORT_SYMBOL vmlinux 0x7f6aa46f ps2_drain +EXPORT_SYMBOL vmlinux 0x7f7e5648 bio_add_pc_page +EXPORT_SYMBOL vmlinux 0x7f9596f9 tcf_em_register +EXPORT_SYMBOL vmlinux 0x7fa03ccd replace_mount_options +EXPORT_SYMBOL vmlinux 0x7faa6525 mmc_of_parse_voltage +EXPORT_SYMBOL vmlinux 0x7fbc3f4c ipv6_chk_custom_prefix +EXPORT_SYMBOL vmlinux 0x7fde2edb vme_master_read +EXPORT_SYMBOL vmlinux 0x7fe32873 rb_replace_node +EXPORT_SYMBOL vmlinux 0x7fe84efd splice_direct_to_actor +EXPORT_SYMBOL vmlinux 0x7ff58816 d_hash_and_lookup +EXPORT_SYMBOL vmlinux 0x800e4ffa __muldi3 +EXPORT_SYMBOL vmlinux 0x802dc4d0 pci_stop_and_remove_bus_device +EXPORT_SYMBOL vmlinux 0x80491b71 snd_pcm_notify +EXPORT_SYMBOL vmlinux 0x804aabdf idr_is_empty +EXPORT_SYMBOL vmlinux 0x8059f391 blk_queue_resize_tags +EXPORT_SYMBOL vmlinux 0x805a1e53 dev_change_flags +EXPORT_SYMBOL vmlinux 0x808cbb9d clk_add_alias +EXPORT_SYMBOL vmlinux 0x80ba0c28 scsi_scan_host +EXPORT_SYMBOL vmlinux 0x80ca5026 _bin2bcd +EXPORT_SYMBOL vmlinux 0x80cabcd3 vm_event_states +EXPORT_SYMBOL vmlinux 0x80d68d3e fb_register_client +EXPORT_SYMBOL vmlinux 0x80d81308 omap_vrfb_release_ctx +EXPORT_SYMBOL vmlinux 0x80e2e831 param_get_ulong +EXPORT_SYMBOL vmlinux 0x80e333ed elevator_change +EXPORT_SYMBOL vmlinux 0x80e71fb5 mmc_align_data_size +EXPORT_SYMBOL vmlinux 0x812b72f8 inet_sk_rx_dst_set +EXPORT_SYMBOL vmlinux 0x812f6ed9 param_get_short +EXPORT_SYMBOL vmlinux 0x813c8607 cpufreq_power_cooling_register +EXPORT_SYMBOL vmlinux 0x81490126 of_graph_get_port_by_id +EXPORT_SYMBOL vmlinux 0x814e7730 nf_ct_destroy +EXPORT_SYMBOL vmlinux 0x815b5dd4 match_octal +EXPORT_SYMBOL vmlinux 0x81665bbb phys_mem_access_prot +EXPORT_SYMBOL vmlinux 0x816d98f8 snd_pcm_lib_free_vmalloc_buffer +EXPORT_SYMBOL vmlinux 0x816f64e5 invalidate_mapping_pages +EXPORT_SYMBOL vmlinux 0x81719c0a try_to_writeback_inodes_sb_nr +EXPORT_SYMBOL vmlinux 0x8171e249 i2c_smbus_write_byte +EXPORT_SYMBOL vmlinux 0x818c62d4 sk_stream_wait_close +EXPORT_SYMBOL vmlinux 0x81919a98 blk_run_queue_async +EXPORT_SYMBOL vmlinux 0x81a32506 md_check_recovery +EXPORT_SYMBOL vmlinux 0x81b69e41 snd_ctl_enum_info +EXPORT_SYMBOL vmlinux 0x81c2402e vme_register_driver +EXPORT_SYMBOL vmlinux 0x81c69de1 dss_mgr_start_update +EXPORT_SYMBOL vmlinux 0x81cf6398 mipi_dsi_dcs_write +EXPORT_SYMBOL vmlinux 0x81d24a1d dcbnl_cee_notify +EXPORT_SYMBOL vmlinux 0x81db6ebb xz_dec_reset +EXPORT_SYMBOL vmlinux 0x81fc079d bioset_create_nobvec +EXPORT_SYMBOL vmlinux 0x82031144 ip6_route_me_harder +EXPORT_SYMBOL vmlinux 0x82072614 tasklet_kill +EXPORT_SYMBOL vmlinux 0x82109199 cdrom_get_last_written +EXPORT_SYMBOL vmlinux 0x8211ea28 km_policy_notify +EXPORT_SYMBOL vmlinux 0x8216859b netdev_class_create_file_ns +EXPORT_SYMBOL vmlinux 0x82178ade dev_alloc_name +EXPORT_SYMBOL vmlinux 0x824a4367 tmio_core_mmc_pwr +EXPORT_SYMBOL vmlinux 0x82528cec input_grab_device +EXPORT_SYMBOL vmlinux 0x8256fe4a d_move +EXPORT_SYMBOL vmlinux 0x82582f44 try_module_get +EXPORT_SYMBOL vmlinux 0x825fa640 of_mdio_parse_addr +EXPORT_SYMBOL vmlinux 0x82701365 int_to_scsilun +EXPORT_SYMBOL vmlinux 0x828062b1 __frontswap_init +EXPORT_SYMBOL vmlinux 0x8285f57f mipi_dsi_dcs_get_power_mode +EXPORT_SYMBOL vmlinux 0x82871b60 dmt_modes +EXPORT_SYMBOL vmlinux 0x828ed07b kernel_sendpage +EXPORT_SYMBOL vmlinux 0x82997d8f tcp_md5_do_del +EXPORT_SYMBOL vmlinux 0x82ab0cd2 inet_confirm_addr +EXPORT_SYMBOL vmlinux 0x82acfb70 blk_iopoll_sched +EXPORT_SYMBOL vmlinux 0x82d572a4 bio_integrity_advance +EXPORT_SYMBOL vmlinux 0x82f24d79 d_find_alias +EXPORT_SYMBOL vmlinux 0x8300675e __alloc_skb +EXPORT_SYMBOL vmlinux 0x8304733a blk_set_stacking_limits +EXPORT_SYMBOL vmlinux 0x830b3e15 elv_dispatch_add_tail +EXPORT_SYMBOL vmlinux 0x831396c3 fence_signal +EXPORT_SYMBOL vmlinux 0x8320bea8 __umodsi3 +EXPORT_SYMBOL vmlinux 0x832c0952 blkdev_get +EXPORT_SYMBOL vmlinux 0x8332cf7c scsi_ioctl +EXPORT_SYMBOL vmlinux 0x8335e045 xfrm_policy_insert +EXPORT_SYMBOL vmlinux 0x8346cd60 scsi_test_unit_ready +EXPORT_SYMBOL vmlinux 0x834a13ef snd_pcm_hw_param_last +EXPORT_SYMBOL vmlinux 0x834b042e skb_orphan_partial +EXPORT_SYMBOL vmlinux 0x8359ef7b blk_requeue_request +EXPORT_SYMBOL vmlinux 0x8372cd2f __gnet_stats_copy_basic +EXPORT_SYMBOL vmlinux 0x8375d79d ida_destroy +EXPORT_SYMBOL vmlinux 0x839090e6 md_cluster_mod +EXPORT_SYMBOL vmlinux 0x839430b2 __register_cpu_notifier +EXPORT_SYMBOL vmlinux 0x839893e3 of_get_mac_address +EXPORT_SYMBOL vmlinux 0x839cdf99 edma_resume +EXPORT_SYMBOL vmlinux 0x83b009ea xfrm_state_walk_init +EXPORT_SYMBOL vmlinux 0x83b1c226 scsi_mode_sense +EXPORT_SYMBOL vmlinux 0x83c52fba xfrm4_protocol_init +EXPORT_SYMBOL vmlinux 0x83c767af bio_copy_data +EXPORT_SYMBOL vmlinux 0x83d70683 edma_start +EXPORT_SYMBOL vmlinux 0x83ddffb6 pm860x_set_bits +EXPORT_SYMBOL vmlinux 0x83e38183 alloc_skb_with_frags +EXPORT_SYMBOL vmlinux 0x83e5800e register_md_cluster_operations +EXPORT_SYMBOL vmlinux 0x83fa2151 unregister_key_type +EXPORT_SYMBOL vmlinux 0x83fd7d5e vme_register_bridge +EXPORT_SYMBOL vmlinux 0x83feacd7 tcp_conn_request +EXPORT_SYMBOL vmlinux 0x841ffbe5 task_tgid_nr_ns +EXPORT_SYMBOL vmlinux 0x8431899e ll_rw_block +EXPORT_SYMBOL vmlinux 0x845029f0 filemap_fdatawrite +EXPORT_SYMBOL vmlinux 0x8459d78b security_task_getsecid +EXPORT_SYMBOL vmlinux 0x84717173 mutex_lock_killable +EXPORT_SYMBOL vmlinux 0x8475dd67 udp_ioctl +EXPORT_SYMBOL vmlinux 0x848a8903 fsnotify_get_group +EXPORT_SYMBOL vmlinux 0x84a312e5 skb_push +EXPORT_SYMBOL vmlinux 0x84a69fdc vme_slave_get +EXPORT_SYMBOL vmlinux 0x84ad84a7 param_array_ops +EXPORT_SYMBOL vmlinux 0x84b183ae strncmp +EXPORT_SYMBOL vmlinux 0x84fc1a6e kernel_read +EXPORT_SYMBOL vmlinux 0x84ffea8b idr_preload +EXPORT_SYMBOL vmlinux 0x854e1c0b sg_nents +EXPORT_SYMBOL vmlinux 0x855870cd do_splice_direct +EXPORT_SYMBOL vmlinux 0x856139f0 __devm_release_region +EXPORT_SYMBOL vmlinux 0x85663bdf iov_iter_copy_from_user_atomic +EXPORT_SYMBOL vmlinux 0x85670f1d rtnl_is_locked +EXPORT_SYMBOL vmlinux 0x85765fee omap_enable_dma_irq +EXPORT_SYMBOL vmlinux 0x8577f355 of_find_node_by_name +EXPORT_SYMBOL vmlinux 0x8594dd3e scsi_eh_restore_cmnd +EXPORT_SYMBOL vmlinux 0x859aff57 jbd2_journal_start_reserved +EXPORT_SYMBOL vmlinux 0x859b26fc netdev_change_features +EXPORT_SYMBOL vmlinux 0x85b5e625 rfkill_set_states +EXPORT_SYMBOL vmlinux 0x85cf1a14 fddi_type_trans +EXPORT_SYMBOL vmlinux 0x85df9b6c strsep +EXPORT_SYMBOL vmlinux 0x85efc7e0 zero_pfn +EXPORT_SYMBOL vmlinux 0x85ff8e06 fasync_helper +EXPORT_SYMBOL vmlinux 0x861dc754 __vfs_write +EXPORT_SYMBOL vmlinux 0x863822d9 rtmsg_ifinfo +EXPORT_SYMBOL vmlinux 0x86402066 simple_transaction_read +EXPORT_SYMBOL vmlinux 0x865029ac __hw_addr_sync +EXPORT_SYMBOL vmlinux 0x865ac5dd __mem_cgroup_count_vm_event +EXPORT_SYMBOL vmlinux 0x8664f62e cpufreq_update_policy +EXPORT_SYMBOL vmlinux 0x866aa1b6 keyring_alloc +EXPORT_SYMBOL vmlinux 0x866d9b6f blk_stop_queue +EXPORT_SYMBOL vmlinux 0x867f3b0d __netif_schedule +EXPORT_SYMBOL vmlinux 0x86860195 dss_feat_get_supported_displays +EXPORT_SYMBOL vmlinux 0x868acba5 get_options +EXPORT_SYMBOL vmlinux 0x869481c2 mmc_detect_change +EXPORT_SYMBOL vmlinux 0x86a4889a kmalloc_order_trace +EXPORT_SYMBOL vmlinux 0x86a5f0f1 scsi_host_alloc +EXPORT_SYMBOL vmlinux 0x86b8b0b4 mmc_set_blockcount +EXPORT_SYMBOL vmlinux 0x86d18168 xfrm_state_add +EXPORT_SYMBOL vmlinux 0x86ef356d shdma_chan_remove +EXPORT_SYMBOL vmlinux 0x86fb9b05 bitmap_parse_user +EXPORT_SYMBOL vmlinux 0x87003790 fence_init +EXPORT_SYMBOL vmlinux 0x871bf53b devfreq_register_opp_notifier +EXPORT_SYMBOL vmlinux 0x871c0a7e fiemap_check_flags +EXPORT_SYMBOL vmlinux 0x8740a53c bmap +EXPORT_SYMBOL vmlinux 0x875ff9bf snd_pcm_hw_rule_noresample +EXPORT_SYMBOL vmlinux 0x8761f04c __cleancache_put_page +EXPORT_SYMBOL vmlinux 0x8764e91a __scsi_print_sense +EXPORT_SYMBOL vmlinux 0x87765403 put_io_context +EXPORT_SYMBOL vmlinux 0x878ab3ce sysctl_tcp_adv_win_scale +EXPORT_SYMBOL vmlinux 0x879760c9 skb_try_coalesce +EXPORT_SYMBOL vmlinux 0x8799213c read_dev_sector +EXPORT_SYMBOL vmlinux 0x879b4c7c shdma_request_irq +EXPORT_SYMBOL vmlinux 0x87b84b3e ip_mc_join_group +EXPORT_SYMBOL vmlinux 0x87bffa35 __netlink_ns_capable +EXPORT_SYMBOL vmlinux 0x87d535fd xfrm_unregister_type +EXPORT_SYMBOL vmlinux 0x87d6c846 page_zero_new_buffers +EXPORT_SYMBOL vmlinux 0x87dcd34c param_get_ullong +EXPORT_SYMBOL vmlinux 0x88077f4b __ip_dev_find +EXPORT_SYMBOL vmlinux 0x88255971 md_done_sync +EXPORT_SYMBOL vmlinux 0x882ce8e7 netdev_notice +EXPORT_SYMBOL vmlinux 0x883a0451 netdev_warn +EXPORT_SYMBOL vmlinux 0x88520a47 of_match_node +EXPORT_SYMBOL vmlinux 0x8862c2b2 blkdev_issue_flush +EXPORT_SYMBOL vmlinux 0x886bc76f mempool_resize +EXPORT_SYMBOL vmlinux 0x88875708 md_integrity_add_rdev +EXPORT_SYMBOL vmlinux 0x8893bd6f sock_create_lite +EXPORT_SYMBOL vmlinux 0x88ad70a4 ww_mutex_unlock +EXPORT_SYMBOL vmlinux 0x88b03844 mmc_gpiod_request_cd_irq +EXPORT_SYMBOL vmlinux 0x88b19f45 system_serial +EXPORT_SYMBOL vmlinux 0x88bad28a i2c_smbus_read_byte +EXPORT_SYMBOL vmlinux 0x88df104c blkdev_fsync +EXPORT_SYMBOL vmlinux 0x88f31bd4 kmem_cache_free +EXPORT_SYMBOL vmlinux 0x890f802a iw_handler_get_thrspy +EXPORT_SYMBOL vmlinux 0x891116b4 phy_ethtool_set_eee +EXPORT_SYMBOL vmlinux 0x89335d92 param_ops_uint +EXPORT_SYMBOL vmlinux 0x8944a957 dquot_alloc_inode +EXPORT_SYMBOL vmlinux 0x8952bfe7 max8998_bulk_write +EXPORT_SYMBOL vmlinux 0x8968e7a5 __generic_file_write_iter +EXPORT_SYMBOL vmlinux 0x897be653 peernet2id_alloc +EXPORT_SYMBOL vmlinux 0x8998df00 mb_cache_entry_find_first +EXPORT_SYMBOL vmlinux 0x899dee0d kernel_recvmsg +EXPORT_SYMBOL vmlinux 0x89a4a56c input_inject_event +EXPORT_SYMBOL vmlinux 0x89a6adaa phy_start +EXPORT_SYMBOL vmlinux 0x89d5538d fb_pad_aligned_buffer +EXPORT_SYMBOL vmlinux 0x89f49ef8 writeback_inodes_sb +EXPORT_SYMBOL vmlinux 0x8a0f4230 rename_lock +EXPORT_SYMBOL vmlinux 0x8a1ab4ee timeval_to_jiffies +EXPORT_SYMBOL vmlinux 0x8a1c5455 blk_stack_limits +EXPORT_SYMBOL vmlinux 0x8a255c0d flush_dcache_page +EXPORT_SYMBOL vmlinux 0x8a490c90 rfkill_set_sw_state +EXPORT_SYMBOL vmlinux 0x8a4ce630 __block_write_begin +EXPORT_SYMBOL vmlinux 0x8a4fa83b __aeabi_llsr +EXPORT_SYMBOL vmlinux 0x8a511b65 vfs_writef +EXPORT_SYMBOL vmlinux 0x8a51c18c devm_gpiod_get_array +EXPORT_SYMBOL vmlinux 0x8a51d565 quota_send_warning +EXPORT_SYMBOL vmlinux 0x8a663486 truncate_pagecache_range +EXPORT_SYMBOL vmlinux 0x8a69490d pci_bus_read_config_word +EXPORT_SYMBOL vmlinux 0x8a7ac9c8 inet_frags_init +EXPORT_SYMBOL vmlinux 0x8a7d1c31 high_memory +EXPORT_SYMBOL vmlinux 0x8a84213b flow_cache_lookup +EXPORT_SYMBOL vmlinux 0x8a8c8704 pci_find_parent_resource +EXPORT_SYMBOL vmlinux 0x8a8ded4e scsicam_bios_param +EXPORT_SYMBOL vmlinux 0x8a91560e jbd2_journal_init_dev +EXPORT_SYMBOL vmlinux 0x8a99a016 mempool_free_slab +EXPORT_SYMBOL vmlinux 0x8a9fbf2a pci_pme_active +EXPORT_SYMBOL vmlinux 0x8ab1b39f tcp_sendpage +EXPORT_SYMBOL vmlinux 0x8ad17f1a dev_alert +EXPORT_SYMBOL vmlinux 0x8ad21962 fsnotify_destroy_mark +EXPORT_SYMBOL vmlinux 0x8ad76f89 tcf_register_action +EXPORT_SYMBOL vmlinux 0x8add1cc9 tty_register_device +EXPORT_SYMBOL vmlinux 0x8ae4372c dev_notice +EXPORT_SYMBOL vmlinux 0x8af2e368 __napi_alloc_skb +EXPORT_SYMBOL vmlinux 0x8af5e626 simple_dname +EXPORT_SYMBOL vmlinux 0x8af9dd1c omapdss_find_output_from_display +EXPORT_SYMBOL vmlinux 0x8b3b01a7 generic_readlink +EXPORT_SYMBOL vmlinux 0x8b43159b register_cpu_notifier +EXPORT_SYMBOL vmlinux 0x8b618d08 overflowuid +EXPORT_SYMBOL vmlinux 0x8b6bb74e key_put +EXPORT_SYMBOL vmlinux 0x8b7a269b pci_request_selected_regions +EXPORT_SYMBOL vmlinux 0x8b8059bd in_group_p +EXPORT_SYMBOL vmlinux 0x8b8e2ce7 sync_filesystem +EXPORT_SYMBOL vmlinux 0x8b9d43a2 d_set_d_op +EXPORT_SYMBOL vmlinux 0x8ba4acfe snd_pcm_lib_malloc_pages +EXPORT_SYMBOL vmlinux 0x8bab9d9a thermal_cdev_update +EXPORT_SYMBOL vmlinux 0x8bad1d27 __sk_dst_check +EXPORT_SYMBOL vmlinux 0x8bb14edf blk_queue_max_hw_sectors +EXPORT_SYMBOL vmlinux 0x8be0caee tty_devnum +EXPORT_SYMBOL vmlinux 0x8bed3906 jbd2_journal_invalidatepage +EXPORT_SYMBOL vmlinux 0x8beeefc6 of_n_addr_cells +EXPORT_SYMBOL vmlinux 0x8bfb65e1 skb_vlan_push +EXPORT_SYMBOL vmlinux 0x8c0a23ce init_buffer +EXPORT_SYMBOL vmlinux 0x8c0b981c md_update_sb +EXPORT_SYMBOL vmlinux 0x8c12bedc scsi_print_sense +EXPORT_SYMBOL vmlinux 0x8c189647 __scsi_device_lookup_by_target +EXPORT_SYMBOL vmlinux 0x8c5d0f1a blk_mq_start_hw_queue +EXPORT_SYMBOL vmlinux 0x8c637d43 irq_cpu_rmap_add +EXPORT_SYMBOL vmlinux 0x8c705b8c edma_clean_channel +EXPORT_SYMBOL vmlinux 0x8c75b399 security_sb_clone_mnt_opts +EXPORT_SYMBOL vmlinux 0x8c875ec8 mount_subtree +EXPORT_SYMBOL vmlinux 0x8c8f9001 mipi_dsi_dcs_exit_sleep_mode +EXPORT_SYMBOL vmlinux 0x8cd8c339 omap_free_dma +EXPORT_SYMBOL vmlinux 0x8cdef39b netdev_lower_get_next_private +EXPORT_SYMBOL vmlinux 0x8cfcf75c nand_flash_ids +EXPORT_SYMBOL vmlinux 0x8cff0548 blk_queue_invalidate_tags +EXPORT_SYMBOL vmlinux 0x8d039629 set_security_override_from_ctx +EXPORT_SYMBOL vmlinux 0x8d0618cf dev_get_nest_level +EXPORT_SYMBOL vmlinux 0x8d0628ba udp_prot +EXPORT_SYMBOL vmlinux 0x8d0c7426 blk_init_queue_node +EXPORT_SYMBOL vmlinux 0x8d134c39 idr_replace +EXPORT_SYMBOL vmlinux 0x8d2f4bab jbd2_journal_force_commit_nested +EXPORT_SYMBOL vmlinux 0x8d3eeaa9 dev_add_pack +EXPORT_SYMBOL vmlinux 0x8d4005cb kernel_sock_ioctl +EXPORT_SYMBOL vmlinux 0x8d435bd2 pci_enable_msix_range +EXPORT_SYMBOL vmlinux 0x8d551bef sysctl_tcp_rmem +EXPORT_SYMBOL vmlinux 0x8d55bb8a qid_eq +EXPORT_SYMBOL vmlinux 0x8d6b2ce1 radix_tree_delete_item +EXPORT_SYMBOL vmlinux 0x8d6f81b4 __div64_32 +EXPORT_SYMBOL vmlinux 0x8d72495b __getnstimeofday64 +EXPORT_SYMBOL vmlinux 0x8d73278e hex_asc_upper +EXPORT_SYMBOL vmlinux 0x8d7da207 input_mt_report_pointer_emulation +EXPORT_SYMBOL vmlinux 0x8d87acd2 sdev_enable_disk_events +EXPORT_SYMBOL vmlinux 0x8d8b6353 proc_dointvec_userhz_jiffies +EXPORT_SYMBOL vmlinux 0x8d8f1216 filemap_page_mkwrite +EXPORT_SYMBOL vmlinux 0x8dcff6e2 __pv_offset +EXPORT_SYMBOL vmlinux 0x8dd552ea sock_no_mmap +EXPORT_SYMBOL vmlinux 0x8df29326 pci_disable_link_state +EXPORT_SYMBOL vmlinux 0x8df3789f snd_oss_info_register +EXPORT_SYMBOL vmlinux 0x8e050cae param_get_string +EXPORT_SYMBOL vmlinux 0x8e4dba90 i2c_register_driver +EXPORT_SYMBOL vmlinux 0x8e6ddf30 kernel_connect +EXPORT_SYMBOL vmlinux 0x8e83c51a dquot_quota_on_mount +EXPORT_SYMBOL vmlinux 0x8e865d3c arm_delay_ops +EXPORT_SYMBOL vmlinux 0x8e86d89b elm_config +EXPORT_SYMBOL vmlinux 0x8e8d1d0c snd_pcm_suspend +EXPORT_SYMBOL vmlinux 0x8ee1bbed seq_putc +EXPORT_SYMBOL vmlinux 0x8f174930 nf_log_packet +EXPORT_SYMBOL vmlinux 0x8f25079a ip_mc_leave_group +EXPORT_SYMBOL vmlinux 0x8f25a7ab add_to_page_cache_locked +EXPORT_SYMBOL vmlinux 0x8f280696 xfrm_prepare_input +EXPORT_SYMBOL vmlinux 0x8f2ee1b7 block_commit_write +EXPORT_SYMBOL vmlinux 0x8f3281b5 mmc_set_data_timeout +EXPORT_SYMBOL vmlinux 0x8f4ad01c dentry_update_name_case +EXPORT_SYMBOL vmlinux 0x8f595b11 snd_major +EXPORT_SYMBOL vmlinux 0x8f678b07 __stack_chk_guard +EXPORT_SYMBOL vmlinux 0x8f7320d5 xfrm_input_resume +EXPORT_SYMBOL vmlinux 0x8f8652d2 mfd_add_devices +EXPORT_SYMBOL vmlinux 0x8f8690f6 sk_common_release +EXPORT_SYMBOL vmlinux 0x8fa4130a omap_set_dma_callback +EXPORT_SYMBOL vmlinux 0x8faa6dfc redraw_screen +EXPORT_SYMBOL vmlinux 0x8fbda731 snd_dma_alloc_pages_fallback +EXPORT_SYMBOL vmlinux 0x8fc8d9d2 abort_creds +EXPORT_SYMBOL vmlinux 0x8fd180e7 kernel_neon_begin +EXPORT_SYMBOL vmlinux 0x8ff20ee0 tcf_em_tree_validate +EXPORT_SYMBOL vmlinux 0x8ff9f646 nobh_writepage +EXPORT_SYMBOL vmlinux 0x8ffdb3b8 crc16 +EXPORT_SYMBOL vmlinux 0x900759a5 netlink_rcv_skb +EXPORT_SYMBOL vmlinux 0x900b6e2a dump_skip +EXPORT_SYMBOL vmlinux 0x9018cab8 xfrm_policy_walk +EXPORT_SYMBOL vmlinux 0x902a5e42 xfrm_find_acq_byseq +EXPORT_SYMBOL vmlinux 0x905dc9d7 input_get_keycode +EXPORT_SYMBOL vmlinux 0x90a1bc65 neigh_resolve_output +EXPORT_SYMBOL vmlinux 0x90bced80 inet_bind +EXPORT_SYMBOL vmlinux 0x90c5e819 kstrtoll_from_user +EXPORT_SYMBOL vmlinux 0x90e86a74 devm_devfreq_register_opp_notifier +EXPORT_SYMBOL vmlinux 0x90ef7eee elv_add_request +EXPORT_SYMBOL vmlinux 0x9100ff8f xfrm_user_policy +EXPORT_SYMBOL vmlinux 0x91147db1 iterate_supers_type +EXPORT_SYMBOL vmlinux 0x91463b1d kstrtos16 +EXPORT_SYMBOL vmlinux 0x91463df1 set_nlink +EXPORT_SYMBOL vmlinux 0x91621d6a allocate_resource +EXPORT_SYMBOL vmlinux 0x9164e54f vlan_vids_add_by_dev +EXPORT_SYMBOL vmlinux 0x91696565 xfrm4_rcv +EXPORT_SYMBOL vmlinux 0x91715312 sprintf +EXPORT_SYMBOL vmlinux 0x91894449 noop_qdisc +EXPORT_SYMBOL vmlinux 0x919029aa __readwrite_bug +EXPORT_SYMBOL vmlinux 0x91911415 lro_receive_skb +EXPORT_SYMBOL vmlinux 0x9196850e input_handler_for_each_handle +EXPORT_SYMBOL vmlinux 0x91c0980e icst_hz +EXPORT_SYMBOL vmlinux 0x9212ccff dss_install_mgr_ops +EXPORT_SYMBOL vmlinux 0x9216a761 send_sig_info +EXPORT_SYMBOL vmlinux 0x92379c85 delete_from_page_cache +EXPORT_SYMBOL vmlinux 0x923b1276 dmaengine_get +EXPORT_SYMBOL vmlinux 0x924c3f8d sock_release +EXPORT_SYMBOL vmlinux 0x924e2ded __skb_get_hash +EXPORT_SYMBOL vmlinux 0x92532e89 flow_cache_fini +EXPORT_SYMBOL vmlinux 0x9269206f snd_ctl_register_ioctl +EXPORT_SYMBOL vmlinux 0x926a4088 __tracepoint_kmem_cache_alloc_node +EXPORT_SYMBOL vmlinux 0x926e9242 tcp_sendmsg +EXPORT_SYMBOL vmlinux 0x9270fb1e bdi_register_dev +EXPORT_SYMBOL vmlinux 0x9276ce28 edma_set_dest +EXPORT_SYMBOL vmlinux 0x92867f49 inet_frags_exit_net +EXPORT_SYMBOL vmlinux 0x928694cb __get_page_tail +EXPORT_SYMBOL vmlinux 0x928d9331 phy_device_register +EXPORT_SYMBOL vmlinux 0x9294b31b blk_integrity_register +EXPORT_SYMBOL vmlinux 0x9296cb5e lookup_one_len +EXPORT_SYMBOL vmlinux 0x92a9c60c time_to_tm +EXPORT_SYMBOL vmlinux 0x92cc98f9 nand_scan_tail +EXPORT_SYMBOL vmlinux 0x92e4d2fe flow_hash_from_keys +EXPORT_SYMBOL vmlinux 0x92e5f9b6 ns_capable +EXPORT_SYMBOL vmlinux 0x92ec5d1b dispc_mgr_enable +EXPORT_SYMBOL vmlinux 0x92f649e9 scm_fp_dup +EXPORT_SYMBOL vmlinux 0x92fa5abb vme_lm_detach +EXPORT_SYMBOL vmlinux 0x92fa8119 pci_find_bus +EXPORT_SYMBOL vmlinux 0x9304999f nf_ct_attach +EXPORT_SYMBOL vmlinux 0x9305f8e6 cpufreq_get +EXPORT_SYMBOL vmlinux 0x9318b9f6 generic_pipe_buf_confirm +EXPORT_SYMBOL vmlinux 0x9318f291 cros_ec_query_all +EXPORT_SYMBOL vmlinux 0x93215e1d __kfifo_skip_r +EXPORT_SYMBOL vmlinux 0x9330cb9f sg_alloc_table +EXPORT_SYMBOL vmlinux 0x93569994 snd_card_file_add +EXPORT_SYMBOL vmlinux 0x937733e3 qid_valid +EXPORT_SYMBOL vmlinux 0x93773e17 snd_card_free_when_closed +EXPORT_SYMBOL vmlinux 0x93785da0 filemap_fdatawrite_range +EXPORT_SYMBOL vmlinux 0x93855685 sock_alloc_file +EXPORT_SYMBOL vmlinux 0x93963a85 dss_feat_get_num_mgrs +EXPORT_SYMBOL vmlinux 0x939e2296 __blk_run_queue +EXPORT_SYMBOL vmlinux 0x93b3fc74 register_dcbevent_notifier +EXPORT_SYMBOL vmlinux 0x93b7f71c blk_queue_unprep_rq +EXPORT_SYMBOL vmlinux 0x93cf0444 scsi_device_lookup_by_target +EXPORT_SYMBOL vmlinux 0x93d17024 mipi_dsi_host_unregister +EXPORT_SYMBOL vmlinux 0x93f212ae vme_unregister_driver +EXPORT_SYMBOL vmlinux 0x93fca811 __get_free_pages +EXPORT_SYMBOL vmlinux 0x9402a6a5 scsilun_to_int +EXPORT_SYMBOL vmlinux 0x9403268d skb_prepare_seq_read +EXPORT_SYMBOL vmlinux 0x94052eed kmem_cache_shrink +EXPORT_SYMBOL vmlinux 0x94098ff8 snd_interval_list +EXPORT_SYMBOL vmlinux 0x940f9cf6 kblockd_schedule_delayed_work +EXPORT_SYMBOL vmlinux 0x94248bfd ip_options_compile +EXPORT_SYMBOL vmlinux 0x9427f6dd of_get_property +EXPORT_SYMBOL vmlinux 0x942aedd8 check_disk_change +EXPORT_SYMBOL vmlinux 0x94643fe6 copy_to_iter +EXPORT_SYMBOL vmlinux 0x9468b8f8 __mod_zone_page_state +EXPORT_SYMBOL vmlinux 0x947201da blk_mq_start_hw_queues +EXPORT_SYMBOL vmlinux 0x948587a7 jbd2_journal_clear_err +EXPORT_SYMBOL vmlinux 0x94961283 vunmap +EXPORT_SYMBOL vmlinux 0x94a010cf generic_update_time +EXPORT_SYMBOL vmlinux 0x94b2590f vme_free_consistent +EXPORT_SYMBOL vmlinux 0x94c5dcfd __sk_mem_schedule +EXPORT_SYMBOL vmlinux 0x94c8aca3 tcp_proto_cgroup +EXPORT_SYMBOL vmlinux 0x94d1ec11 pci_reenable_device +EXPORT_SYMBOL vmlinux 0x94d2a074 snd_timer_global_free +EXPORT_SYMBOL vmlinux 0x94d3da68 rtc_lock +EXPORT_SYMBOL vmlinux 0x94eea794 getnstimeofday64 +EXPORT_SYMBOL vmlinux 0x951013b6 omap_dss_get_next_device +EXPORT_SYMBOL vmlinux 0x9543dcfe xfrm6_rcv_cb +EXPORT_SYMBOL vmlinux 0x9545af6d tasklet_init +EXPORT_SYMBOL vmlinux 0x954eea2f of_find_node_by_phandle +EXPORT_SYMBOL vmlinux 0x95530a10 netif_stacked_transfer_operstate +EXPORT_SYMBOL vmlinux 0x95578056 posix_lock_inode_wait +EXPORT_SYMBOL vmlinux 0x955a434b netdev_master_upper_dev_link +EXPORT_SYMBOL vmlinux 0x95622f41 down_timeout +EXPORT_SYMBOL vmlinux 0x95750f77 skb_abort_seq_read +EXPORT_SYMBOL vmlinux 0x9584b24a __serio_register_driver +EXPORT_SYMBOL vmlinux 0x95994dcc dev_mc_sync +EXPORT_SYMBOL vmlinux 0x959f04a1 netif_schedule_queue +EXPORT_SYMBOL vmlinux 0x95abb7e3 filemap_flush +EXPORT_SYMBOL vmlinux 0x95d443c4 generic_error_remove_page +EXPORT_SYMBOL vmlinux 0x95d6ea46 __generic_block_fiemap +EXPORT_SYMBOL vmlinux 0x95dbe078 __get_user_2 +EXPORT_SYMBOL vmlinux 0x95eca6c0 vc_cons +EXPORT_SYMBOL vmlinux 0x96000f46 __ps2_command +EXPORT_SYMBOL vmlinux 0x960dfaf5 radix_tree_tag_get +EXPORT_SYMBOL vmlinux 0x961ba392 sock_no_listen +EXPORT_SYMBOL vmlinux 0x96300628 pcim_enable_device +EXPORT_SYMBOL vmlinux 0x964812de seq_release +EXPORT_SYMBOL vmlinux 0x96573b80 __kfifo_dma_in_finish_r +EXPORT_SYMBOL vmlinux 0x9671be0f snd_pcm_new +EXPORT_SYMBOL vmlinux 0x96898769 sysfs_format_mac +EXPORT_SYMBOL vmlinux 0x968fe963 skb_mac_gso_segment +EXPORT_SYMBOL vmlinux 0x9698469f elv_rb_del +EXPORT_SYMBOL vmlinux 0x96cd2b04 scsi_sense_key_string +EXPORT_SYMBOL vmlinux 0x96dce98c resource_list_create_entry +EXPORT_SYMBOL vmlinux 0x96efecb8 iov_iter_kvec +EXPORT_SYMBOL vmlinux 0x9700e190 copy_strings_kernel +EXPORT_SYMBOL vmlinux 0x9714d131 sock_queue_rcv_skb +EXPORT_SYMBOL vmlinux 0x97164a93 netif_napi_del +EXPORT_SYMBOL vmlinux 0x97255bdf strlen +EXPORT_SYMBOL vmlinux 0x9744a134 simple_rmdir +EXPORT_SYMBOL vmlinux 0x97509013 nand_calculate_ecc +EXPORT_SYMBOL vmlinux 0x9754ec10 radix_tree_preload +EXPORT_SYMBOL vmlinux 0x976e700f down_trylock +EXPORT_SYMBOL vmlinux 0x9789fc81 ps2_begin_command +EXPORT_SYMBOL vmlinux 0x9793c93a dispc_mgr_setup +EXPORT_SYMBOL vmlinux 0x97999817 rfkill_set_hw_state +EXPORT_SYMBOL vmlinux 0x97ec26ae kset_register +EXPORT_SYMBOL vmlinux 0x97f464cd vfs_llseek +EXPORT_SYMBOL vmlinux 0x97f7d5c2 of_translate_dma_address +EXPORT_SYMBOL vmlinux 0x98082893 __copy_to_user +EXPORT_SYMBOL vmlinux 0x981e2ed8 i2c_smbus_read_block_data +EXPORT_SYMBOL vmlinux 0x9820b644 warn_slowpath_fmt_taint +EXPORT_SYMBOL vmlinux 0x9826cc4b netdev_lower_get_next_private_rcu +EXPORT_SYMBOL vmlinux 0x983cf347 nf_afinfo +EXPORT_SYMBOL vmlinux 0x9849f2f1 pci_setup_cardbus +EXPORT_SYMBOL vmlinux 0x98543000 blk_queue_make_request +EXPORT_SYMBOL vmlinux 0x986e6135 fb_pad_unaligned_buffer +EXPORT_SYMBOL vmlinux 0x987c11c7 __pv_phys_pfn_offset +EXPORT_SYMBOL vmlinux 0x988b6ea4 blk_queue_dma_alignment +EXPORT_SYMBOL vmlinux 0x988dac11 serio_interrupt +EXPORT_SYMBOL vmlinux 0x98912c86 proc_remove +EXPORT_SYMBOL vmlinux 0x9894a6f2 ab3100_event_unregister +EXPORT_SYMBOL vmlinux 0x98bc8f2a audit_log_start +EXPORT_SYMBOL vmlinux 0x98bd7401 tcp_enter_cwr +EXPORT_SYMBOL vmlinux 0x98e68eca cancel_delayed_work +EXPORT_SYMBOL vmlinux 0x98e7e659 dquot_acquire +EXPORT_SYMBOL vmlinux 0x98ef8991 input_mt_get_slot_by_key +EXPORT_SYMBOL vmlinux 0x98fbf217 module_refcount +EXPORT_SYMBOL vmlinux 0x99098944 dev_get_by_index +EXPORT_SYMBOL vmlinux 0x9939eba0 backlight_unregister_notifier +EXPORT_SYMBOL vmlinux 0x99517682 udp_encap_enable +EXPORT_SYMBOL vmlinux 0x99591a7a ipv6_ext_hdr +EXPORT_SYMBOL vmlinux 0x995bf28c __nla_reserve_nohdr +EXPORT_SYMBOL vmlinux 0x996c4d30 proc_dointvec_ms_jiffies +EXPORT_SYMBOL vmlinux 0x997b53b6 fb_set_var +EXPORT_SYMBOL vmlinux 0x9994c0ca ps2_is_keyboard_id +EXPORT_SYMBOL vmlinux 0x999e8297 vfree +EXPORT_SYMBOL vmlinux 0x99bb8806 memmove +EXPORT_SYMBOL vmlinux 0x99c95fa5 unregister_sound_special +EXPORT_SYMBOL vmlinux 0x99cdc86b sysctl_tcp_reordering +EXPORT_SYMBOL vmlinux 0x99dfc7f4 snd_info_create_module_entry +EXPORT_SYMBOL vmlinux 0x99eab059 blk_put_request +EXPORT_SYMBOL vmlinux 0x99f58330 lg_local_lock_cpu +EXPORT_SYMBOL vmlinux 0x9a1dfd65 strpbrk +EXPORT_SYMBOL vmlinux 0x9a1fa643 twl6040_reg_write +EXPORT_SYMBOL vmlinux 0x9a1fc4b4 jiffies_to_timeval +EXPORT_SYMBOL vmlinux 0x9a2f22c1 dma_async_device_register +EXPORT_SYMBOL vmlinux 0x9a42c141 cros_ec_prepare_tx +EXPORT_SYMBOL vmlinux 0x9a623142 ida_get_new_above +EXPORT_SYMBOL vmlinux 0x9a8318ef v7_coherent_kern_range +EXPORT_SYMBOL vmlinux 0x9a911f9a twl6040_clear_bits +EXPORT_SYMBOL vmlinux 0x9a92474d __dev_kfree_skb_any +EXPORT_SYMBOL vmlinux 0x9acb4da1 open_check_o_direct +EXPORT_SYMBOL vmlinux 0x9acd0795 edma_filter_fn +EXPORT_SYMBOL vmlinux 0x9aeb07e8 vme_lm_attach +EXPORT_SYMBOL vmlinux 0x9b27f297 ip6_frag_init +EXPORT_SYMBOL vmlinux 0x9b33e0d7 unregister_dcbevent_notifier +EXPORT_SYMBOL vmlinux 0x9b388444 get_zeroed_page +EXPORT_SYMBOL vmlinux 0x9b4614de single_open +EXPORT_SYMBOL vmlinux 0x9b6eb137 ksize +EXPORT_SYMBOL vmlinux 0x9b6f4062 __kernel_write +EXPORT_SYMBOL vmlinux 0x9b7d505b blk_queue_logical_block_size +EXPORT_SYMBOL vmlinux 0x9b931268 pci_enable_msi_range +EXPORT_SYMBOL vmlinux 0x9b9e05f9 alloc_cpu_rmap +EXPORT_SYMBOL vmlinux 0x9ba7089d argv_split +EXPORT_SYMBOL vmlinux 0x9ba97efa scsi_unblock_requests +EXPORT_SYMBOL vmlinux 0x9bbe88b3 flex_array_put +EXPORT_SYMBOL vmlinux 0x9bc0d2cc of_dev_put +EXPORT_SYMBOL vmlinux 0x9bc6126a param_get_byte +EXPORT_SYMBOL vmlinux 0x9bce482f __release_region +EXPORT_SYMBOL vmlinux 0x9bda4bb4 edma_set_src +EXPORT_SYMBOL vmlinux 0x9be7bde4 security_tun_dev_attach +EXPORT_SYMBOL vmlinux 0x9c0ac03c dqput +EXPORT_SYMBOL vmlinux 0x9c0bd51f _raw_spin_lock +EXPORT_SYMBOL vmlinux 0x9c36fd57 scsi_rescan_device +EXPORT_SYMBOL vmlinux 0x9c479fc4 set_page_dirty +EXPORT_SYMBOL vmlinux 0x9c5ac97a dev_addr_init +EXPORT_SYMBOL vmlinux 0x9c6063e5 skb_put +EXPORT_SYMBOL vmlinux 0x9c67f826 __serio_register_port +EXPORT_SYMBOL vmlinux 0x9c7f0db3 qcom_scm_set_warm_boot_addr +EXPORT_SYMBOL vmlinux 0x9c82580d inet_add_offload +EXPORT_SYMBOL vmlinux 0x9c97082e edma_pause +EXPORT_SYMBOL vmlinux 0x9c9ec2a0 proc_dointvec_minmax +EXPORT_SYMBOL vmlinux 0x9cab34a6 rfkill_set_led_trigger_name +EXPORT_SYMBOL vmlinux 0x9cba3c37 _raw_read_unlock_irqrestore +EXPORT_SYMBOL vmlinux 0x9ce56947 twl6040_reg_read +EXPORT_SYMBOL vmlinux 0x9cfd3fce iw_handler_get_spy +EXPORT_SYMBOL vmlinux 0x9d0d6206 unregister_netdevice_notifier +EXPORT_SYMBOL vmlinux 0x9d108ce1 tcp_v4_do_rcv +EXPORT_SYMBOL vmlinux 0x9d2b715e blk_start_queue +EXPORT_SYMBOL vmlinux 0x9d3aa376 blk_iopoll_init +EXPORT_SYMBOL vmlinux 0x9d452636 xfrm_policy_unregister_afinfo +EXPORT_SYMBOL vmlinux 0x9d4d12d8 fb_get_buffer_offset +EXPORT_SYMBOL vmlinux 0x9d63a946 snd_pcm_suspend_all +EXPORT_SYMBOL vmlinux 0x9d669763 memcpy +EXPORT_SYMBOL vmlinux 0x9d6b3ced __cleancache_invalidate_fs +EXPORT_SYMBOL vmlinux 0x9d8d9916 snd_timer_global_new +EXPORT_SYMBOL vmlinux 0x9d9260e8 dentry_unhash +EXPORT_SYMBOL vmlinux 0x9d9b737d mipi_dsi_dcs_read +EXPORT_SYMBOL vmlinux 0x9db55fde dev_get_by_name_rcu +EXPORT_SYMBOL vmlinux 0x9dbee93a cancel_dirty_page +EXPORT_SYMBOL vmlinux 0x9de77d75 ipv6_chk_prefix +EXPORT_SYMBOL vmlinux 0x9dfb2e46 register_gifconf +EXPORT_SYMBOL vmlinux 0x9dfe7307 lz4_decompress_unknownoutputsize +EXPORT_SYMBOL vmlinux 0x9e03ba02 of_find_matching_node_and_match +EXPORT_SYMBOL vmlinux 0x9e0c711d vzalloc_node +EXPORT_SYMBOL vmlinux 0x9e0f1d96 inet6_add_protocol +EXPORT_SYMBOL vmlinux 0x9e17eff0 kernel_getsockname +EXPORT_SYMBOL vmlinux 0x9e1ddb55 blk_mq_init_queue +EXPORT_SYMBOL vmlinux 0x9e1e6f28 __block_page_mkwrite +EXPORT_SYMBOL vmlinux 0x9e22097a fence_enable_sw_signaling +EXPORT_SYMBOL vmlinux 0x9e2410d0 __bforget +EXPORT_SYMBOL vmlinux 0x9e448b70 from_kprojid +EXPORT_SYMBOL vmlinux 0x9e4faeef dm_io_client_destroy +EXPORT_SYMBOL vmlinux 0x9e5e349d sk_capable +EXPORT_SYMBOL vmlinux 0x9e5f91b3 jbd2_journal_flush +EXPORT_SYMBOL vmlinux 0x9e61bb05 set_freezable +EXPORT_SYMBOL vmlinux 0x9e672ff6 scsi_kmap_atomic_sg +EXPORT_SYMBOL vmlinux 0x9e6d79f8 snd_info_get_str +EXPORT_SYMBOL vmlinux 0x9e70dd41 generic_file_splice_read +EXPORT_SYMBOL vmlinux 0x9e763530 reciprocal_value +EXPORT_SYMBOL vmlinux 0x9e8cc528 tcp_gro_complete +EXPORT_SYMBOL vmlinux 0x9e91b36e debugfs_create_automount +EXPORT_SYMBOL vmlinux 0x9e99fb54 mipi_dsi_attach +EXPORT_SYMBOL vmlinux 0x9e9cbe21 inet_csk_accept +EXPORT_SYMBOL vmlinux 0x9ea6b760 serio_unregister_port +EXPORT_SYMBOL vmlinux 0x9eaf4ff7 con_copy_unimap +EXPORT_SYMBOL vmlinux 0x9ec942d3 snd_pcm_open_substream +EXPORT_SYMBOL vmlinux 0x9ed61d10 vm_mmap +EXPORT_SYMBOL vmlinux 0x9ef7774e jbd2_journal_start_commit +EXPORT_SYMBOL vmlinux 0x9f02cdda qdisc_destroy +EXPORT_SYMBOL vmlinux 0x9f0ad95d __devm_gpiod_get_index +EXPORT_SYMBOL vmlinux 0x9f0d5bc4 dev_addr_del +EXPORT_SYMBOL vmlinux 0x9f19778b generic_make_request +EXPORT_SYMBOL vmlinux 0x9f46ced8 __sw_hweight64 +EXPORT_SYMBOL vmlinux 0x9f6032b8 sock_efree +EXPORT_SYMBOL vmlinux 0x9f823cea dispc_mgr_is_enabled +EXPORT_SYMBOL vmlinux 0x9f8b041d __frontswap_test +EXPORT_SYMBOL vmlinux 0x9f908470 vfs_read +EXPORT_SYMBOL vmlinux 0x9f984513 strrchr +EXPORT_SYMBOL vmlinux 0x9f9d04b7 tcp_getsockopt +EXPORT_SYMBOL vmlinux 0x9fd7cda1 flex_array_prealloc +EXPORT_SYMBOL vmlinux 0x9fdecc31 unregister_netdevice_many +EXPORT_SYMBOL vmlinux 0x9fdf604d inet6_bind +EXPORT_SYMBOL vmlinux 0x9fdfc44d blk_free_tags +EXPORT_SYMBOL vmlinux 0x9ffa3a75 netdev_max_backlog +EXPORT_SYMBOL vmlinux 0x9ffad7bf filemap_fdatawait_range +EXPORT_SYMBOL vmlinux 0xa00eb15b ioremap_page +EXPORT_SYMBOL vmlinux 0xa02d367c neigh_lookup +EXPORT_SYMBOL vmlinux 0xa03e55d6 get_disk +EXPORT_SYMBOL vmlinux 0xa0436e98 in6addr_linklocal_allnodes +EXPORT_SYMBOL vmlinux 0xa047b62f param_ops_long +EXPORT_SYMBOL vmlinux 0xa04a01bd qdisc_class_hash_insert +EXPORT_SYMBOL vmlinux 0xa0508460 udp_push_pending_frames +EXPORT_SYMBOL vmlinux 0xa05c03df mempool_kmalloc +EXPORT_SYMBOL vmlinux 0xa06df9e1 __kfifo_dma_out_finish_r +EXPORT_SYMBOL vmlinux 0xa07ed110 xz_dec_init +EXPORT_SYMBOL vmlinux 0xa0839f8f alloc_file +EXPORT_SYMBOL vmlinux 0xa084749a __bitmap_or +EXPORT_SYMBOL vmlinux 0xa094650a devm_ioremap_wc +EXPORT_SYMBOL vmlinux 0xa0a2e91a bio_copy_kern +EXPORT_SYMBOL vmlinux 0xa0a4cd8d proc_create_data +EXPORT_SYMBOL vmlinux 0xa0aae687 imx_ssi_fiq_end +EXPORT_SYMBOL vmlinux 0xa0ac4750 mb_cache_entry_release +EXPORT_SYMBOL vmlinux 0xa0b04675 vmalloc_32 +EXPORT_SYMBOL vmlinux 0xa0cf484a xfrm6_rcv_spi +EXPORT_SYMBOL vmlinux 0xa0d1c8fa scsi_dma_map +EXPORT_SYMBOL vmlinux 0xa0dad88e netdev_adjacent_get_private +EXPORT_SYMBOL vmlinux 0xa0ebd14c sysctl_tcp_mem +EXPORT_SYMBOL vmlinux 0xa0fbac79 wake_up_bit +EXPORT_SYMBOL vmlinux 0xa0fd2427 snd_pci_quirk_lookup_id +EXPORT_SYMBOL vmlinux 0xa108eb4d sysctl_optmem_max +EXPORT_SYMBOL vmlinux 0xa120d33c tty_unregister_ldisc +EXPORT_SYMBOL vmlinux 0xa125f3e2 copy_from_iter_nocache +EXPORT_SYMBOL vmlinux 0xa1415618 twl6030_interrupt_unmask +EXPORT_SYMBOL vmlinux 0xa14b3f5d flex_array_free_parts +EXPORT_SYMBOL vmlinux 0xa14f3d8c ewma_add +EXPORT_SYMBOL vmlinux 0xa1503145 netdev_upper_dev_link +EXPORT_SYMBOL vmlinux 0xa1848e74 blk_sync_queue +EXPORT_SYMBOL vmlinux 0xa192813b idr_for_each +EXPORT_SYMBOL vmlinux 0xa19b0a67 tcp_make_synack +EXPORT_SYMBOL vmlinux 0xa1aead0c get_thermal_instance +EXPORT_SYMBOL vmlinux 0xa1b759ce fb_add_videomode +EXPORT_SYMBOL vmlinux 0xa1bd2f2f ip_generic_getfrag +EXPORT_SYMBOL vmlinux 0xa1c76e0a _cond_resched +EXPORT_SYMBOL vmlinux 0xa1d55e90 _raw_spin_lock_bh +EXPORT_SYMBOL vmlinux 0xa1f0ebea bit_waitqueue +EXPORT_SYMBOL vmlinux 0xa209451c bitmap_fold +EXPORT_SYMBOL vmlinux 0xa224e156 netdev_update_features +EXPORT_SYMBOL vmlinux 0xa24bf6c0 bdev_read_only +EXPORT_SYMBOL vmlinux 0xa25180ee genl_notify +EXPORT_SYMBOL vmlinux 0xa2643c3a param_ops_ushort +EXPORT_SYMBOL vmlinux 0xa275da51 __generic_file_fsync +EXPORT_SYMBOL vmlinux 0xa2848c50 ecryptfs_get_auth_tok_key +EXPORT_SYMBOL vmlinux 0xa2893ab0 tc_classify +EXPORT_SYMBOL vmlinux 0xa2912162 blk_queue_max_segments +EXPORT_SYMBOL vmlinux 0xa2ad19a2 make_kgid +EXPORT_SYMBOL vmlinux 0xa2e08f43 mmc_get_card +EXPORT_SYMBOL vmlinux 0xa2f6d515 cfb_fillrect +EXPORT_SYMBOL vmlinux 0xa2fd5f87 simple_transaction_get +EXPORT_SYMBOL vmlinux 0xa314f3c7 dst_release +EXPORT_SYMBOL vmlinux 0xa31bdf07 vme_master_set +EXPORT_SYMBOL vmlinux 0xa31e44ba edma_free_channel +EXPORT_SYMBOL vmlinux 0xa32dc7c5 udp_lib_rehash +EXPORT_SYMBOL vmlinux 0xa336feb7 nand_manuf_ids +EXPORT_SYMBOL vmlinux 0xa3383b37 tty_throttle +EXPORT_SYMBOL vmlinux 0xa35444e4 dispc_write_irqenable +EXPORT_SYMBOL vmlinux 0xa368af90 filemap_write_and_wait +EXPORT_SYMBOL vmlinux 0xa37e78b6 flex_array_get +EXPORT_SYMBOL vmlinux 0xa381944f dql_reset +EXPORT_SYMBOL vmlinux 0xa39a123a fence_add_callback +EXPORT_SYMBOL vmlinux 0xa3b38a8d neigh_seq_next +EXPORT_SYMBOL vmlinux 0xa3d3ded8 blk_make_request +EXPORT_SYMBOL vmlinux 0xa4117554 md_unregister_thread +EXPORT_SYMBOL vmlinux 0xa414882d add_wait_queue_exclusive +EXPORT_SYMBOL vmlinux 0xa4158241 vme_irq_handler +EXPORT_SYMBOL vmlinux 0xa41660d3 jbd2_journal_check_available_features +EXPORT_SYMBOL vmlinux 0xa41d6754 rwsem_wake +EXPORT_SYMBOL vmlinux 0xa422862d kmap_to_page +EXPORT_SYMBOL vmlinux 0xa43b1297 vscnprintf +EXPORT_SYMBOL vmlinux 0xa448c8bd netif_set_xps_queue +EXPORT_SYMBOL vmlinux 0xa454cceb cdrom_check_events +EXPORT_SYMBOL vmlinux 0xa459de3e irq_to_desc +EXPORT_SYMBOL vmlinux 0xa4610bc6 omap_rev +EXPORT_SYMBOL vmlinux 0xa4701e9e timekeeping_inject_offset +EXPORT_SYMBOL vmlinux 0xa470a8d2 of_device_is_compatible +EXPORT_SYMBOL vmlinux 0xa4786a1d dquot_scan_active +EXPORT_SYMBOL vmlinux 0xa47b4375 skb_copy_expand +EXPORT_SYMBOL vmlinux 0xa482f134 scsi_register_interface +EXPORT_SYMBOL vmlinux 0xa48f5b09 omap_dma_set_global_params +EXPORT_SYMBOL vmlinux 0xa4a9d81c ppp_input +EXPORT_SYMBOL vmlinux 0xa4b42c55 omap_set_dma_priority +EXPORT_SYMBOL vmlinux 0xa4b45ea5 out_of_line_wait_on_bit_lock +EXPORT_SYMBOL vmlinux 0xa4b63226 pci_back_from_sleep +EXPORT_SYMBOL vmlinux 0xa4bfaf6e page_waitqueue +EXPORT_SYMBOL vmlinux 0xa4c21c4f from_kuid +EXPORT_SYMBOL vmlinux 0xa4db1f8c tcp_poll +EXPORT_SYMBOL vmlinux 0xa4df99db ata_dev_printk +EXPORT_SYMBOL vmlinux 0xa4e6ad85 ipv6_find_hdr +EXPORT_SYMBOL vmlinux 0xa50372f5 neigh_parms_release +EXPORT_SYMBOL vmlinux 0xa50daee4 try_to_writeback_inodes_sb +EXPORT_SYMBOL vmlinux 0xa52b43e3 __dev_get_by_name +EXPORT_SYMBOL vmlinux 0xa5329719 snd_timer_global_register +EXPORT_SYMBOL vmlinux 0xa54c01af account_page_dirtied +EXPORT_SYMBOL vmlinux 0xa5526619 rb_insert_color +EXPORT_SYMBOL vmlinux 0xa58fea9d mempool_destroy +EXPORT_SYMBOL vmlinux 0xa598e29c vesa_modes +EXPORT_SYMBOL vmlinux 0xa59c181a of_get_address +EXPORT_SYMBOL vmlinux 0xa5a633b9 sg_last +EXPORT_SYMBOL vmlinux 0xa5cef8ad release_resource +EXPORT_SYMBOL vmlinux 0xa5f0e622 dev_set_allmulti +EXPORT_SYMBOL vmlinux 0xa5ffbc1f build_skb +EXPORT_SYMBOL vmlinux 0xa611d9d4 cdev_init +EXPORT_SYMBOL vmlinux 0xa61aa028 snd_pcm_format_unsigned +EXPORT_SYMBOL vmlinux 0xa61e4362 omap_request_dma +EXPORT_SYMBOL vmlinux 0xa63a194c ip_do_fragment +EXPORT_SYMBOL vmlinux 0xa63d85ab slhc_remember +EXPORT_SYMBOL vmlinux 0xa641468e down_write +EXPORT_SYMBOL vmlinux 0xa64f5a90 security_old_inode_init_security +EXPORT_SYMBOL vmlinux 0xa652c4ef __kfifo_dma_in_prepare_r +EXPORT_SYMBOL vmlinux 0xa66fc07c snd_dma_free_pages +EXPORT_SYMBOL vmlinux 0xa670d748 blk_rq_map_kern +EXPORT_SYMBOL vmlinux 0xa67374f0 __percpu_counter_compare +EXPORT_SYMBOL vmlinux 0xa675804c utf8s_to_utf16s +EXPORT_SYMBOL vmlinux 0xa681fe88 generate_random_uuid +EXPORT_SYMBOL vmlinux 0xa68a1a46 security_inode_permission +EXPORT_SYMBOL vmlinux 0xa695eed8 __devm_gpiod_get_optional +EXPORT_SYMBOL vmlinux 0xa6970398 __kfifo_to_user_r +EXPORT_SYMBOL vmlinux 0xa6af933a of_get_child_by_name +EXPORT_SYMBOL vmlinux 0xa6b45167 seq_open_private +EXPORT_SYMBOL vmlinux 0xa6bab23d dqstats +EXPORT_SYMBOL vmlinux 0xa6bfd495 __set_page_dirty_buffers +EXPORT_SYMBOL vmlinux 0xa6dd4e8d snd_card_set_id +EXPORT_SYMBOL vmlinux 0xa6e29d81 mtd_concat_destroy +EXPORT_SYMBOL vmlinux 0xa6e4004d mnt_set_expiry +EXPORT_SYMBOL vmlinux 0xa6e94160 pagecache_isize_extended +EXPORT_SYMBOL vmlinux 0xa6ffec60 woken_wake_function +EXPORT_SYMBOL vmlinux 0xa71846ad bio_integrity_trim +EXPORT_SYMBOL vmlinux 0xa7199e7c elv_rb_add +EXPORT_SYMBOL vmlinux 0xa734a3e9 abort_exclusive_wait +EXPORT_SYMBOL vmlinux 0xa735db59 prandom_u32 +EXPORT_SYMBOL vmlinux 0xa7365963 clocksource_unregister +EXPORT_SYMBOL vmlinux 0xa73cf5e8 dev_get_phys_port_id +EXPORT_SYMBOL vmlinux 0xa759f2c1 param_ops_string +EXPORT_SYMBOL vmlinux 0xa7634725 of_gpio_simple_xlate +EXPORT_SYMBOL vmlinux 0xa765840e jbd2_journal_clear_features +EXPORT_SYMBOL vmlinux 0xa76f7970 csum_and_copy_to_iter +EXPORT_SYMBOL vmlinux 0xa771c180 inet_put_port +EXPORT_SYMBOL vmlinux 0xa77bac1c kernel_bind +EXPORT_SYMBOL vmlinux 0xa77e9401 kern_path_mountpoint +EXPORT_SYMBOL vmlinux 0xa79e16b1 bitmap_close_sync +EXPORT_SYMBOL vmlinux 0xa7a4f04e file_path +EXPORT_SYMBOL vmlinux 0xa7a8abea bio_chain +EXPORT_SYMBOL vmlinux 0xa7bf7a66 xfrm_policy_walk_done +EXPORT_SYMBOL vmlinux 0xa7ccc7b8 sock_no_socketpair +EXPORT_SYMBOL vmlinux 0xa7ceee71 submit_bio_wait +EXPORT_SYMBOL vmlinux 0xa7e44255 jbd2_journal_get_undo_access +EXPORT_SYMBOL vmlinux 0xa7ee6a83 mem_cgroup_begin_page_stat +EXPORT_SYMBOL vmlinux 0xa80f8c22 netlink_ns_capable +EXPORT_SYMBOL vmlinux 0xa8229565 fixed_size_llseek +EXPORT_SYMBOL vmlinux 0xa8232c78 strtobool +EXPORT_SYMBOL vmlinux 0xa8360f2e alloc_fcdev +EXPORT_SYMBOL vmlinux 0xa843805a get_unused_fd_flags +EXPORT_SYMBOL vmlinux 0xa8706295 __tcf_em_tree_match +EXPORT_SYMBOL vmlinux 0xa8721b97 system_state +EXPORT_SYMBOL vmlinux 0xa873de89 thaw_super +EXPORT_SYMBOL vmlinux 0xa8985d13 xfrm_state_walk_done +EXPORT_SYMBOL vmlinux 0xa89fe0a8 xfrm_dst_ifdown +EXPORT_SYMBOL vmlinux 0xa8a64e9f bioset_create +EXPORT_SYMBOL vmlinux 0xa8a8110c kernel_neon_end +EXPORT_SYMBOL vmlinux 0xa8ae7662 phy_ethtool_get_wol +EXPORT_SYMBOL vmlinux 0xa8cb060b eth_header +EXPORT_SYMBOL vmlinux 0xa8f6f414 forget_all_cached_acls +EXPORT_SYMBOL vmlinux 0xa8f9c08a tcp_setsockopt +EXPORT_SYMBOL vmlinux 0xa8fef7bb security_unix_may_send +EXPORT_SYMBOL vmlinux 0xa9168676 xmit_recursion +EXPORT_SYMBOL vmlinux 0xa93ea427 dcb_setapp +EXPORT_SYMBOL vmlinux 0xa94ff568 dmam_alloc_coherent +EXPORT_SYMBOL vmlinux 0xa950d87f mmc_can_secure_erase_trim +EXPORT_SYMBOL vmlinux 0xa964dd13 gpmc_cs_request +EXPORT_SYMBOL vmlinux 0xa96aab49 ata_scsi_cmd_error_handler +EXPORT_SYMBOL vmlinux 0xa97328e6 ethtool_op_get_ts_info +EXPORT_SYMBOL vmlinux 0xa976957d bitmap_remap +EXPORT_SYMBOL vmlinux 0xa978be8a iov_iter_fault_in_readable +EXPORT_SYMBOL vmlinux 0xa97f6ccf page_cache_prev_hole +EXPORT_SYMBOL vmlinux 0xa9943ffe fbcon_set_tileops +EXPORT_SYMBOL vmlinux 0xa9c63b69 security_xfrm_policy_free +EXPORT_SYMBOL vmlinux 0xa9d2f3f7 lockref_get_not_dead +EXPORT_SYMBOL vmlinux 0xa9de606b security_path_mkdir +EXPORT_SYMBOL vmlinux 0xa9edfd62 balance_dirty_pages_ratelimited +EXPORT_SYMBOL vmlinux 0xa9f242f3 fbcon_set_rotate +EXPORT_SYMBOL vmlinux 0xaa1d286b touch_buffer +EXPORT_SYMBOL vmlinux 0xaa240e06 snd_jack_add_new_kctl +EXPORT_SYMBOL vmlinux 0xaa39086d tty_unregister_driver +EXPORT_SYMBOL vmlinux 0xaa3d28a8 dquot_set_dqinfo +EXPORT_SYMBOL vmlinux 0xaa41ff08 qdisc_watchdog_schedule_ns +EXPORT_SYMBOL vmlinux 0xaa4f9854 pci_disable_msix +EXPORT_SYMBOL vmlinux 0xaa58722e d_find_any_alias +EXPORT_SYMBOL vmlinux 0xaa677d4c of_root +EXPORT_SYMBOL vmlinux 0xaa6901ac __kfifo_out_r +EXPORT_SYMBOL vmlinux 0xaa6f23ad rfkill_get_led_trigger_name +EXPORT_SYMBOL vmlinux 0xaa8d9d7c unlock_two_nondirectories +EXPORT_SYMBOL vmlinux 0xaaadb8d2 __pskb_pull_tail +EXPORT_SYMBOL vmlinux 0xaad0ae78 __bitmap_shift_right +EXPORT_SYMBOL vmlinux 0xaad6d92f rfkill_init_sw_state +EXPORT_SYMBOL vmlinux 0xaafdc258 strcasecmp +EXPORT_SYMBOL vmlinux 0xab0a83f0 generic_end_io_acct +EXPORT_SYMBOL vmlinux 0xab0f97a0 simple_empty +EXPORT_SYMBOL vmlinux 0xab16c470 pcie_get_minimum_link +EXPORT_SYMBOL vmlinux 0xab255963 kernel_accept +EXPORT_SYMBOL vmlinux 0xab600421 probe_irq_off +EXPORT_SYMBOL vmlinux 0xab694444 bsearch +EXPORT_SYMBOL vmlinux 0xab6bde28 sysctl_max_syn_backlog +EXPORT_SYMBOL vmlinux 0xab71d339 param_get_charp +EXPORT_SYMBOL vmlinux 0xab7603e7 imx_ssi_fiq_start +EXPORT_SYMBOL vmlinux 0xab781570 fb_get_options +EXPORT_SYMBOL vmlinux 0xab84300a pci_scan_single_device +EXPORT_SYMBOL vmlinux 0xab89a4a9 snd_pcm_hw_constraint_ratnums +EXPORT_SYMBOL vmlinux 0xaba3ad0c radix_tree_gang_lookup_tag +EXPORT_SYMBOL vmlinux 0xabbab380 get_fs_type +EXPORT_SYMBOL vmlinux 0xabbd1653 __scsi_iterate_devices +EXPORT_SYMBOL vmlinux 0xabc6dd63 cpufreq_sysfs_create_file +EXPORT_SYMBOL vmlinux 0xabcaa577 free_anon_bdev +EXPORT_SYMBOL vmlinux 0xabce3e6c of_phy_attach +EXPORT_SYMBOL vmlinux 0xabd93531 snd_pcm_period_elapsed +EXPORT_SYMBOL vmlinux 0xabdaa29a skb_queue_head +EXPORT_SYMBOL vmlinux 0xabfcb4c3 flush_delayed_work +EXPORT_SYMBOL vmlinux 0xac02e549 cdrom_number_of_slots +EXPORT_SYMBOL vmlinux 0xac0ba8c1 blk_iopoll_disable +EXPORT_SYMBOL vmlinux 0xac1a55be unregister_reboot_notifier +EXPORT_SYMBOL vmlinux 0xac23aa19 xfrm_policy_bysel_ctx +EXPORT_SYMBOL vmlinux 0xac390091 dev_base_lock +EXPORT_SYMBOL vmlinux 0xac398912 flex_array_clear +EXPORT_SYMBOL vmlinux 0xac3bb344 pcie_port_service_unregister +EXPORT_SYMBOL vmlinux 0xac48ac97 tegra_powergate_remove_clamping +EXPORT_SYMBOL vmlinux 0xac4e4484 dentry_needs_remove_privs +EXPORT_SYMBOL vmlinux 0xaca422ce xfrm_state_lookup +EXPORT_SYMBOL vmlinux 0xacab29b7 seq_hlist_start_percpu +EXPORT_SYMBOL vmlinux 0xacb6f676 snd_pcm_hw_param_first +EXPORT_SYMBOL vmlinux 0xacb8f598 qdisc_watchdog_cancel +EXPORT_SYMBOL vmlinux 0xaccabc6a in4_pton +EXPORT_SYMBOL vmlinux 0xacd81eb3 jbd2_inode_cache +EXPORT_SYMBOL vmlinux 0xacf4d843 match_strdup +EXPORT_SYMBOL vmlinux 0xad03b40b mmc_gpiod_request_ro +EXPORT_SYMBOL vmlinux 0xad0413d4 match_hex +EXPORT_SYMBOL vmlinux 0xad04f212 padata_set_cpumask +EXPORT_SYMBOL vmlinux 0xad07da87 skb_recv_datagram +EXPORT_SYMBOL vmlinux 0xad1019cd tcp_proc_register +EXPORT_SYMBOL vmlinux 0xad157694 remove_proc_entry +EXPORT_SYMBOL vmlinux 0xad16b56b setattr_copy +EXPORT_SYMBOL vmlinux 0xad41be92 rwsem_down_write_failed +EXPORT_SYMBOL vmlinux 0xad45f259 mpage_writepages +EXPORT_SYMBOL vmlinux 0xad52b979 tcp_rcv_state_process +EXPORT_SYMBOL vmlinux 0xad5e1158 devm_request_threaded_irq +EXPORT_SYMBOL vmlinux 0xad642959 blk_queue_free_tags +EXPORT_SYMBOL vmlinux 0xad65f9e8 skb_vlan_pop +EXPORT_SYMBOL vmlinux 0xad69620a blk_mq_map_queue +EXPORT_SYMBOL vmlinux 0xad84bef8 dm_table_event +EXPORT_SYMBOL vmlinux 0xad86d85f i2c_master_recv +EXPORT_SYMBOL vmlinux 0xadc2ed29 tcp_timewait_state_process +EXPORT_SYMBOL vmlinux 0xadd47e82 kobject_del +EXPORT_SYMBOL vmlinux 0xade88e76 snd_malloc_pages +EXPORT_SYMBOL vmlinux 0xadeaf979 i2c_smbus_xfer +EXPORT_SYMBOL vmlinux 0xadecd47c snd_pcm_hw_constraint_ranges +EXPORT_SYMBOL vmlinux 0xadf02e33 sync_mapping_buffers +EXPORT_SYMBOL vmlinux 0xadf42bd5 __request_region +EXPORT_SYMBOL vmlinux 0xadf5db30 mfd_cell_disable +EXPORT_SYMBOL vmlinux 0xadfb49a1 generic_shutdown_super +EXPORT_SYMBOL vmlinux 0xadfc1c91 put_tty_driver +EXPORT_SYMBOL vmlinux 0xadfdfcef __bitmap_andnot +EXPORT_SYMBOL vmlinux 0xae0f9ef7 read_code +EXPORT_SYMBOL vmlinux 0xae1a18ff nand_unlock +EXPORT_SYMBOL vmlinux 0xae649dc3 xfrm_policy_register_afinfo +EXPORT_SYMBOL vmlinux 0xae66a0ed skb_tx_error +EXPORT_SYMBOL vmlinux 0xae729e59 security_req_classify_flow +EXPORT_SYMBOL vmlinux 0xae77a595 radix_tree_gang_lookup_slot +EXPORT_SYMBOL vmlinux 0xae845e08 tcp_connect +EXPORT_SYMBOL vmlinux 0xae85a27e radix_tree_lookup +EXPORT_SYMBOL vmlinux 0xaeb72ee8 inode_sub_bytes +EXPORT_SYMBOL vmlinux 0xaec655c7 alloc_pages_exact +EXPORT_SYMBOL vmlinux 0xaed2c338 dev_queue_xmit_sk +EXPORT_SYMBOL vmlinux 0xaee3d42c seq_put_decimal_ull +EXPORT_SYMBOL vmlinux 0xaee8b956 set_cached_acl +EXPORT_SYMBOL vmlinux 0xaef24c1e seq_put_decimal_ll +EXPORT_SYMBOL vmlinux 0xaeff331f scsi_free_host_dev +EXPORT_SYMBOL vmlinux 0xaf1b9792 tcf_em_unregister +EXPORT_SYMBOL vmlinux 0xaf319ee2 __devm_gpiod_get +EXPORT_SYMBOL vmlinux 0xaf333361 neigh_direct_output +EXPORT_SYMBOL vmlinux 0xaf3dd7dc scsi_logging_level +EXPORT_SYMBOL vmlinux 0xaf477ca8 mount_pseudo +EXPORT_SYMBOL vmlinux 0xaf50e76d elf_set_personality +EXPORT_SYMBOL vmlinux 0xaf830ae5 neigh_table_clear +EXPORT_SYMBOL vmlinux 0xaf84865e __get_user_8 +EXPORT_SYMBOL vmlinux 0xaf85a186 dev_get_flags +EXPORT_SYMBOL vmlinux 0xaf8aa518 system_rev +EXPORT_SYMBOL vmlinux 0xaf9ae9ef kmem_cache_create +EXPORT_SYMBOL vmlinux 0xafa10a76 inet_csk_prepare_forced_close +EXPORT_SYMBOL vmlinux 0xafc29692 mount_nodev +EXPORT_SYMBOL vmlinux 0xafca1d26 remove_proc_subtree +EXPORT_SYMBOL vmlinux 0xafd02083 blk_execute_rq +EXPORT_SYMBOL vmlinux 0xafd1c28e iov_iter_single_seg_count +EXPORT_SYMBOL vmlinux 0xafeb00b7 nf_register_sockopt +EXPORT_SYMBOL vmlinux 0xaff9bf0b pcibios_fixup_bus +EXPORT_SYMBOL vmlinux 0xaffefd71 skb_queue_purge +EXPORT_SYMBOL vmlinux 0xb022e241 pci_set_power_state +EXPORT_SYMBOL vmlinux 0xb03faf8a bio_integrity_add_page +EXPORT_SYMBOL vmlinux 0xb04cf0fe lg_local_unlock +EXPORT_SYMBOL vmlinux 0xb05fc310 sysctl_rmem_max +EXPORT_SYMBOL vmlinux 0xb0635770 max8998_read_reg +EXPORT_SYMBOL vmlinux 0xb0635e14 tso_build_hdr +EXPORT_SYMBOL vmlinux 0xb066b530 iommu_tbl_pool_init +EXPORT_SYMBOL vmlinux 0xb06e1ce2 netif_carrier_off +EXPORT_SYMBOL vmlinux 0xb0704035 get_user_pages_unlocked +EXPORT_SYMBOL vmlinux 0xb08413f2 snd_info_create_card_entry +EXPORT_SYMBOL vmlinux 0xb0a0da0c rational_best_approximation +EXPORT_SYMBOL vmlinux 0xb0d0c136 dentry_open +EXPORT_SYMBOL vmlinux 0xb0d674d9 gro_find_complete_by_type +EXPORT_SYMBOL vmlinux 0xb0d90250 padata_start +EXPORT_SYMBOL vmlinux 0xb0e10781 get_option +EXPORT_SYMBOL vmlinux 0xb0f5d281 generic_file_fsync +EXPORT_SYMBOL vmlinux 0xb0ff5dc9 __xfrm_state_destroy +EXPORT_SYMBOL vmlinux 0xb121390a probe_irq_on +EXPORT_SYMBOL vmlinux 0xb127fc20 padata_alloc_possible +EXPORT_SYMBOL vmlinux 0xb12cbacb fb_unregister_client +EXPORT_SYMBOL vmlinux 0xb15cb614 security_xfrm_policy_alloc +EXPORT_SYMBOL vmlinux 0xb166a290 input_unregister_handler +EXPORT_SYMBOL vmlinux 0xb186d037 of_find_i2c_adapter_by_node +EXPORT_SYMBOL vmlinux 0xb18cff8f try_to_free_buffers +EXPORT_SYMBOL vmlinux 0xb19359a4 i2c_smbus_write_block_data +EXPORT_SYMBOL vmlinux 0xb1ad28e0 __gnu_mcount_nc +EXPORT_SYMBOL vmlinux 0xb1b6d5a7 abx500_get_chip_id +EXPORT_SYMBOL vmlinux 0xb1b89f58 __tracepoint_kmem_cache_free +EXPORT_SYMBOL vmlinux 0xb1c3a01a oops_in_progress +EXPORT_SYMBOL vmlinux 0xb1cf44df fb_find_best_mode +EXPORT_SYMBOL vmlinux 0xb1d9aabd lg_local_unlock_cpu +EXPORT_SYMBOL vmlinux 0xb1dc0d54 nand_bch_init +EXPORT_SYMBOL vmlinux 0xb1f701dd dev_uc_sync_multiple +EXPORT_SYMBOL vmlinux 0xb203ecf4 simple_write_end +EXPORT_SYMBOL vmlinux 0xb20b39dd kiocb_set_cancel_fn +EXPORT_SYMBOL vmlinux 0xb20ca993 free_user_ns +EXPORT_SYMBOL vmlinux 0xb20f3122 netdev_printk +EXPORT_SYMBOL vmlinux 0xb2166293 rc5t583_ext_power_req_config +EXPORT_SYMBOL vmlinux 0xb23a1139 __invalidate_device +EXPORT_SYMBOL vmlinux 0xb23c3268 pci_bus_read_dev_vendor_id +EXPORT_SYMBOL vmlinux 0xb24dfacb i2c_add_adapter +EXPORT_SYMBOL vmlinux 0xb24e4af0 snd_pcm_lib_ioctl +EXPORT_SYMBOL vmlinux 0xb24f8984 snd_ctl_notify +EXPORT_SYMBOL vmlinux 0xb255405e snd_pcm_hw_constraint_pow2 +EXPORT_SYMBOL vmlinux 0xb2621fe0 mdiobus_alloc_size +EXPORT_SYMBOL vmlinux 0xb266edbc jbd2_journal_blocks_per_page +EXPORT_SYMBOL vmlinux 0xb2682405 utf8_to_utf32 +EXPORT_SYMBOL vmlinux 0xb26d394b netdev_notify_peers +EXPORT_SYMBOL vmlinux 0xb26f8df2 mmc_power_restore_host +EXPORT_SYMBOL vmlinux 0xb27b48c8 __dquot_alloc_space +EXPORT_SYMBOL vmlinux 0xb2b2b9b3 bio_integrity_enabled +EXPORT_SYMBOL vmlinux 0xb2b87fa2 seq_pad +EXPORT_SYMBOL vmlinux 0xb2be6e92 netdev_stats_to_stats64 +EXPORT_SYMBOL vmlinux 0xb2c312e7 simple_setattr +EXPORT_SYMBOL vmlinux 0xb2cd79e2 forget_cached_acl +EXPORT_SYMBOL vmlinux 0xb2d48a2e queue_work_on +EXPORT_SYMBOL vmlinux 0xb2e5ae4a snd_lookup_minor_data +EXPORT_SYMBOL vmlinux 0xb2ed5025 tcp_syn_ack_timeout +EXPORT_SYMBOL vmlinux 0xb317e01c blk_rq_map_user +EXPORT_SYMBOL vmlinux 0xb32d7b7e radix_tree_tagged +EXPORT_SYMBOL vmlinux 0xb367c984 mxc_set_irq_fiq +EXPORT_SYMBOL vmlinux 0xb37c3693 devm_free_irq +EXPORT_SYMBOL vmlinux 0xb38972e1 param_get_uint +EXPORT_SYMBOL vmlinux 0xb3a16712 find_inode_nowait +EXPORT_SYMBOL vmlinux 0xb3aa84e5 blk_init_tags +EXPORT_SYMBOL vmlinux 0xb3b1b9e1 shrink_dcache_sb +EXPORT_SYMBOL vmlinux 0xb3d2c76d scsi_hostbyte_string +EXPORT_SYMBOL vmlinux 0xb3d330f0 pcix_set_mmrbc +EXPORT_SYMBOL vmlinux 0xb3de6f06 snd_pcm_hw_refine +EXPORT_SYMBOL vmlinux 0xb3f7646e kthread_should_stop +EXPORT_SYMBOL vmlinux 0xb3ffd52b md_set_array_sectors +EXPORT_SYMBOL vmlinux 0xb40c1c19 tegra_ahb_enable_smmu +EXPORT_SYMBOL vmlinux 0xb411077b gnet_stats_copy_app +EXPORT_SYMBOL vmlinux 0xb423dba1 console_blanked +EXPORT_SYMBOL vmlinux 0xb42f42e1 security_dentry_init_security +EXPORT_SYMBOL vmlinux 0xb4390f9a mcount +EXPORT_SYMBOL vmlinux 0xb44be6f2 pskb_expand_head +EXPORT_SYMBOL vmlinux 0xb4519a8f string_escape_mem +EXPORT_SYMBOL vmlinux 0xb4573de8 vfs_rmdir +EXPORT_SYMBOL vmlinux 0xb45d957c revalidate_disk +EXPORT_SYMBOL vmlinux 0xb461fcf7 netif_rx +EXPORT_SYMBOL vmlinux 0xb4709322 scsi_dev_info_add_list +EXPORT_SYMBOL vmlinux 0xb47719d9 block_write_begin +EXPORT_SYMBOL vmlinux 0xb484b600 backlight_device_register +EXPORT_SYMBOL vmlinux 0xb4a20e0d register_framebuffer +EXPORT_SYMBOL vmlinux 0xb4ab1d8a serio_unregister_driver +EXPORT_SYMBOL vmlinux 0xb4aee038 md_write_end +EXPORT_SYMBOL vmlinux 0xb4b94377 __nand_correct_data +EXPORT_SYMBOL vmlinux 0xb4e09be9 netif_tx_wake_queue +EXPORT_SYMBOL vmlinux 0xb50a53bc iput +EXPORT_SYMBOL vmlinux 0xb5198b77 _raw_read_lock +EXPORT_SYMBOL vmlinux 0xb527517a __sk_backlog_rcv +EXPORT_SYMBOL vmlinux 0xb5441912 create_empty_buffers +EXPORT_SYMBOL vmlinux 0xb556c0cf import_iovec +EXPORT_SYMBOL vmlinux 0xb5684e29 idr_find_slowpath +EXPORT_SYMBOL vmlinux 0xb57343c2 frontswap_shrink +EXPORT_SYMBOL vmlinux 0xb590c65c bdi_init +EXPORT_SYMBOL vmlinux 0xb59a4043 elevator_init +EXPORT_SYMBOL vmlinux 0xb5a459dc unregister_blkdev +EXPORT_SYMBOL vmlinux 0xb5aa7165 dma_pool_destroy +EXPORT_SYMBOL vmlinux 0xb5b45039 input_open_device +EXPORT_SYMBOL vmlinux 0xb5bb7160 dm_io +EXPORT_SYMBOL vmlinux 0xb5c00014 _raw_write_lock_irq +EXPORT_SYMBOL vmlinux 0xb5c2b82b pci_bus_write_config_dword +EXPORT_SYMBOL vmlinux 0xb5c2d99d scsi_print_sense_hdr +EXPORT_SYMBOL vmlinux 0xb5ca1c46 slhc_free +EXPORT_SYMBOL vmlinux 0xb5d9454c printk_emit +EXPORT_SYMBOL vmlinux 0xb5dc7a90 mipi_dsi_set_maximum_return_packet_size +EXPORT_SYMBOL vmlinux 0xb5eacdb0 noop_llseek +EXPORT_SYMBOL vmlinux 0xb5ffbf7b ip_mc_inc_group +EXPORT_SYMBOL vmlinux 0xb65258ae dquot_transfer +EXPORT_SYMBOL vmlinux 0xb678366f int_sqrt +EXPORT_SYMBOL vmlinux 0xb6896671 crc_t10dif +EXPORT_SYMBOL vmlinux 0xb68fcf23 sock_recv_errqueue +EXPORT_SYMBOL vmlinux 0xb6936ffe _bcd2bin +EXPORT_SYMBOL vmlinux 0xb69efe11 blk_init_allocated_queue +EXPORT_SYMBOL vmlinux 0xb6a68816 find_last_bit +EXPORT_SYMBOL vmlinux 0xb6b7c55f inet_dgram_ops +EXPORT_SYMBOL vmlinux 0xb6c3caf8 uart_get_divisor +EXPORT_SYMBOL vmlinux 0xb6c48ed8 d_obtain_root +EXPORT_SYMBOL vmlinux 0xb6d3daf1 qcom_scm_hdcp_req +EXPORT_SYMBOL vmlinux 0xb6e7f1b7 netdev_alert +EXPORT_SYMBOL vmlinux 0xb6efad7a xfrm_state_flush +EXPORT_SYMBOL vmlinux 0xb6f8c0eb pagevec_lookup_tag +EXPORT_SYMBOL vmlinux 0xb7012a71 inet_proto_csum_replace16 +EXPORT_SYMBOL vmlinux 0xb73a8609 kmap_high +EXPORT_SYMBOL vmlinux 0xb73bbe51 jbd2_journal_unlock_updates +EXPORT_SYMBOL vmlinux 0xb7488905 scsi_normalize_sense +EXPORT_SYMBOL vmlinux 0xb74a6690 pci_bus_write_config_word +EXPORT_SYMBOL vmlinux 0xb74b616b gen_pool_dma_alloc +EXPORT_SYMBOL vmlinux 0xb77131b1 psched_ratecfg_precompute +EXPORT_SYMBOL vmlinux 0xb7823e2f dispc_ovl_setup +EXPORT_SYMBOL vmlinux 0xb79ec15d mipi_dsi_create_packet +EXPORT_SYMBOL vmlinux 0xb7a5be12 prepare_creds +EXPORT_SYMBOL vmlinux 0xb7ba76c7 __aeabi_unwind_cpp_pr2 +EXPORT_SYMBOL vmlinux 0xb7be0f6c no_llseek +EXPORT_SYMBOL vmlinux 0xb7cb81c2 phy_print_status +EXPORT_SYMBOL vmlinux 0xb7d9d553 sk_stream_wait_connect +EXPORT_SYMBOL vmlinux 0xb7dd3ff4 dma_find_channel +EXPORT_SYMBOL vmlinux 0xb7e5bc64 mmc_gpio_get_ro +EXPORT_SYMBOL vmlinux 0xb81960ca snprintf +EXPORT_SYMBOL vmlinux 0xb82cc8cb tty_set_operations +EXPORT_SYMBOL vmlinux 0xb83d3170 scsi_report_bus_reset +EXPORT_SYMBOL vmlinux 0xb844070a tty_hangup +EXPORT_SYMBOL vmlinux 0xb874b87a __clzsi2 +EXPORT_SYMBOL vmlinux 0xb876a7e1 jbd2_journal_start +EXPORT_SYMBOL vmlinux 0xb879c67e generic_permission +EXPORT_SYMBOL vmlinux 0xb8c24dd1 skb_vlan_untag +EXPORT_SYMBOL vmlinux 0xb8e877e7 kstrtouint_from_user +EXPORT_SYMBOL vmlinux 0xb8fdc8a1 i2c_smbus_write_byte_data +EXPORT_SYMBOL vmlinux 0xb90e038a buffer_migrate_page +EXPORT_SYMBOL vmlinux 0xb9102968 dquot_release +EXPORT_SYMBOL vmlinux 0xb932b19d __neigh_for_each_release +EXPORT_SYMBOL vmlinux 0xb95f98d6 _memset_io +EXPORT_SYMBOL vmlinux 0xb9638db4 snd_pcm_rate_to_rate_bit +EXPORT_SYMBOL vmlinux 0xb9780353 tty_register_ldisc +EXPORT_SYMBOL vmlinux 0xb98bafd7 ptp_clock_register +EXPORT_SYMBOL vmlinux 0xb9a8f03b omap_stop_dma +EXPORT_SYMBOL vmlinux 0xb9acd3d9 __put_user_2 +EXPORT_SYMBOL vmlinux 0xb9ce586b param_set_short +EXPORT_SYMBOL vmlinux 0xb9d4418b sk_reset_timer +EXPORT_SYMBOL vmlinux 0xb9e36f35 register_cdrom +EXPORT_SYMBOL vmlinux 0xb9e8e2cc in6addr_sitelocal_allrouters +EXPORT_SYMBOL vmlinux 0xb9f5f59a tcf_unregister_action +EXPORT_SYMBOL vmlinux 0xba07ab0f tcp_prequeue +EXPORT_SYMBOL vmlinux 0xba0d87c8 truncate_inode_pages_final +EXPORT_SYMBOL vmlinux 0xba183e47 posix_acl_to_xattr +EXPORT_SYMBOL vmlinux 0xba2d068f dev_mc_del +EXPORT_SYMBOL vmlinux 0xba497f13 loops_per_jiffy +EXPORT_SYMBOL vmlinux 0xba4ae097 enable_fiq +EXPORT_SYMBOL vmlinux 0xba61b745 xfrm_register_type +EXPORT_SYMBOL vmlinux 0xba6be1cb scsi_remove_device +EXPORT_SYMBOL vmlinux 0xba79e8e3 page_readlink +EXPORT_SYMBOL vmlinux 0xba7d870a __mxc_cpu_type +EXPORT_SYMBOL vmlinux 0xbaa168ba input_unregister_device +EXPORT_SYMBOL vmlinux 0xbabb074b devm_backlight_device_register +EXPORT_SYMBOL vmlinux 0xbac3cbf2 ns_to_timespec64 +EXPORT_SYMBOL vmlinux 0xbac44543 xfrm_state_alloc +EXPORT_SYMBOL vmlinux 0xbace5f6b dss_mgr_disconnect +EXPORT_SYMBOL vmlinux 0xbaf9b6ca generic_delete_inode +EXPORT_SYMBOL vmlinux 0xbafeee36 dispc_runtime_get +EXPORT_SYMBOL vmlinux 0xbb0540aa zlib_inflateReset +EXPORT_SYMBOL vmlinux 0xbb214d76 ip6_xmit +EXPORT_SYMBOL vmlinux 0xbb35675b __bitmap_intersects +EXPORT_SYMBOL vmlinux 0xbb5d343d xfrm_get_acqseq +EXPORT_SYMBOL vmlinux 0xbb6f4d2c lock_sock_fast +EXPORT_SYMBOL vmlinux 0xbb72d4fe __put_user_1 +EXPORT_SYMBOL vmlinux 0xbb749bc6 dquot_quota_on +EXPORT_SYMBOL vmlinux 0xbb8dd5ac tegra_io_rail_power_on +EXPORT_SYMBOL vmlinux 0xbb99125c get_default_font +EXPORT_SYMBOL vmlinux 0xbbbb1825 snd_ctl_rename_id +EXPORT_SYMBOL vmlinux 0xbbd76e57 bit_wait +EXPORT_SYMBOL vmlinux 0xbbeb85c6 ppp_channel_index +EXPORT_SYMBOL vmlinux 0xbc10dd97 __put_user_4 +EXPORT_SYMBOL vmlinux 0xbc2e3439 pci_dev_put +EXPORT_SYMBOL vmlinux 0xbc453670 bitmap_endwrite +EXPORT_SYMBOL vmlinux 0xbc620390 put_disk +EXPORT_SYMBOL vmlinux 0xbc6b6cee fsnotify_put_group +EXPORT_SYMBOL vmlinux 0xbc7678f8 snd_timer_open +EXPORT_SYMBOL vmlinux 0xbc7b4ebf mfd_cell_enable +EXPORT_SYMBOL vmlinux 0xbc833f3b snd_ctl_remove +EXPORT_SYMBOL vmlinux 0xbc862495 snd_pcm_lib_writev +EXPORT_SYMBOL vmlinux 0xbc90e47b register_quota_format +EXPORT_SYMBOL vmlinux 0xbca4f9f1 tcf_hash_search +EXPORT_SYMBOL vmlinux 0xbcc308bb strnlen_user +EXPORT_SYMBOL vmlinux 0xbcceb613 sync_blockdev +EXPORT_SYMBOL vmlinux 0xbce7300c scsi_ioctl_reset +EXPORT_SYMBOL vmlinux 0xbcf9ea38 free_inode_nonrcu +EXPORT_SYMBOL vmlinux 0xbd01eb65 vfs_fsync +EXPORT_SYMBOL vmlinux 0xbd17c6de gen_replace_estimator +EXPORT_SYMBOL vmlinux 0xbd409578 unlock_new_inode +EXPORT_SYMBOL vmlinux 0xbd573f1f input_set_abs_params +EXPORT_SYMBOL vmlinux 0xbd6a765a dcb_getapp +EXPORT_SYMBOL vmlinux 0xbd86a54a __xfrm_route_forward +EXPORT_SYMBOL vmlinux 0xbd9074b1 blk_finish_plug +EXPORT_SYMBOL vmlinux 0xbd9376bb truncate_inode_pages +EXPORT_SYMBOL vmlinux 0xbda0af32 phy_register_fixup_for_id +EXPORT_SYMBOL vmlinux 0xbda71c27 inet_register_protosw +EXPORT_SYMBOL vmlinux 0xbdb7f5b5 max8998_bulk_read +EXPORT_SYMBOL vmlinux 0xbdce2985 drop_nlink +EXPORT_SYMBOL vmlinux 0xbdd9617d __nla_reserve +EXPORT_SYMBOL vmlinux 0xbde1918a pci_msix_vec_count +EXPORT_SYMBOL vmlinux 0xbdec4d08 fence_remove_callback +EXPORT_SYMBOL vmlinux 0xbdedb6b2 irq_stat +EXPORT_SYMBOL vmlinux 0xbe0e5118 nla_memcmp +EXPORT_SYMBOL vmlinux 0xbe1bb112 bitmap_onto +EXPORT_SYMBOL vmlinux 0xbe3947a0 of_iomap +EXPORT_SYMBOL vmlinux 0xbe63ee40 request_resource +EXPORT_SYMBOL vmlinux 0xbe7131b2 phy_ethtool_sset +EXPORT_SYMBOL vmlinux 0xbe802fb8 get_super +EXPORT_SYMBOL vmlinux 0xbe8860a8 dispc_mgr_go_busy +EXPORT_SYMBOL vmlinux 0xbe8fb90c dispc_mgr_get_framedone_irq +EXPORT_SYMBOL vmlinux 0xbe94bccd netlink_net_capable +EXPORT_SYMBOL vmlinux 0xbeb571d0 xfrm_policy_flush +EXPORT_SYMBOL vmlinux 0xbee90f2f __kfifo_out_peek_r +EXPORT_SYMBOL vmlinux 0xbef43296 console_conditional_schedule +EXPORT_SYMBOL vmlinux 0xbf13a27f get_gendisk +EXPORT_SYMBOL vmlinux 0xbf2f5e4c input_unregister_handle +EXPORT_SYMBOL vmlinux 0xbf337d6d ndo_dflt_fdb_add +EXPORT_SYMBOL vmlinux 0xbf362f85 kmap +EXPORT_SYMBOL vmlinux 0xbf3ef035 xfrm4_protocol_register +EXPORT_SYMBOL vmlinux 0xbf5fefb5 locks_copy_lock +EXPORT_SYMBOL vmlinux 0xbf75ea6c tegra114_clock_tune_cpu_trimmers_low +EXPORT_SYMBOL vmlinux 0xbf7fd2f5 schedule_timeout_killable +EXPORT_SYMBOL vmlinux 0xbf8ba54a vprintk +EXPORT_SYMBOL vmlinux 0xbf9a4add blk_mq_start_request +EXPORT_SYMBOL vmlinux 0xbf9bcc8d __cap_empty_set +EXPORT_SYMBOL vmlinux 0xbfb300fa xfrm_policy_delete +EXPORT_SYMBOL vmlinux 0xbfbbacd6 pci_bus_put +EXPORT_SYMBOL vmlinux 0xbfc2b050 ppp_register_compressor +EXPORT_SYMBOL vmlinux 0xbfc848d2 inet_sendpage +EXPORT_SYMBOL vmlinux 0xbfcbc0d2 stmp_reset_block +EXPORT_SYMBOL vmlinux 0xbfd64483 security_path_symlink +EXPORT_SYMBOL vmlinux 0xbfee3ad5 loop_unregister_transfer +EXPORT_SYMBOL vmlinux 0xc0056be5 _raw_write_unlock_bh +EXPORT_SYMBOL vmlinux 0xc00a2ce3 twl6040_get_pll +EXPORT_SYMBOL vmlinux 0xc00ebdeb pci_release_selected_regions +EXPORT_SYMBOL vmlinux 0xc0109679 nf_log_set +EXPORT_SYMBOL vmlinux 0xc02b98c2 kern_path_create +EXPORT_SYMBOL vmlinux 0xc033684d md_finish_reshape +EXPORT_SYMBOL vmlinux 0xc04809ce pci_scan_bus +EXPORT_SYMBOL vmlinux 0xc04c7f17 copy_page_from_iter +EXPORT_SYMBOL vmlinux 0xc05119fe sg_copy_from_buffer +EXPORT_SYMBOL vmlinux 0xc05503f4 alloc_disk +EXPORT_SYMBOL vmlinux 0xc068440e __kfifo_alloc +EXPORT_SYMBOL vmlinux 0xc06f0c93 dma_sync_wait +EXPORT_SYMBOL vmlinux 0xc0763484 rfkill_blocked +EXPORT_SYMBOL vmlinux 0xc07ac897 udp6_set_csum +EXPORT_SYMBOL vmlinux 0xc07c7771 __scm_send +EXPORT_SYMBOL vmlinux 0xc0823e4c twl_i2c_write +EXPORT_SYMBOL vmlinux 0xc0955b1b qdisc_create_dflt +EXPORT_SYMBOL vmlinux 0xc0a311c7 ipv6_mc_check_mld +EXPORT_SYMBOL vmlinux 0xc0a4d81f elv_unregister_queue +EXPORT_SYMBOL vmlinux 0xc0a6368e vc_resize +EXPORT_SYMBOL vmlinux 0xc0a6a8c5 omap_set_dma_dest_burst_mode +EXPORT_SYMBOL vmlinux 0xc0a98385 profile_pc +EXPORT_SYMBOL vmlinux 0xc0ad9e61 ipv4_specific +EXPORT_SYMBOL vmlinux 0xc0af9f16 kernel_listen +EXPORT_SYMBOL vmlinux 0xc0b93ac6 proc_mkdir +EXPORT_SYMBOL vmlinux 0xc0cf95f9 omap_vrfb_request_ctx +EXPORT_SYMBOL vmlinux 0xc0d02e11 vme_dma_list_add +EXPORT_SYMBOL vmlinux 0xc0d33232 vfs_mkdir +EXPORT_SYMBOL vmlinux 0xc0da7197 nf_setsockopt +EXPORT_SYMBOL vmlinux 0xc0f24cd9 module_layout +EXPORT_SYMBOL vmlinux 0xc1052e0c key_payload_reserve +EXPORT_SYMBOL vmlinux 0xc11d8093 iov_shorten +EXPORT_SYMBOL vmlinux 0xc12ec3a6 dns_query +EXPORT_SYMBOL vmlinux 0xc15730ae generic_setxattr +EXPORT_SYMBOL vmlinux 0xc15c21b9 genphy_aneg_done +EXPORT_SYMBOL vmlinux 0xc162005e __dev_get_by_flags +EXPORT_SYMBOL vmlinux 0xc17be114 edma_assign_channel_eventq +EXPORT_SYMBOL vmlinux 0xc18a7787 fb_set_suspend +EXPORT_SYMBOL vmlinux 0xc1999e04 snd_ctl_add +EXPORT_SYMBOL vmlinux 0xc1a35c96 remap_vmalloc_range_partial +EXPORT_SYMBOL vmlinux 0xc1b1a7c4 sockfd_lookup +EXPORT_SYMBOL vmlinux 0xc1d8cfaf __fdget +EXPORT_SYMBOL vmlinux 0xc1e50c0b rtnl_nla_parse_ifla +EXPORT_SYMBOL vmlinux 0xc2081a83 gen_pool_add_virt +EXPORT_SYMBOL vmlinux 0xc21321f9 of_translate_address +EXPORT_SYMBOL vmlinux 0xc224b4a0 scsi_device_set_state +EXPORT_SYMBOL vmlinux 0xc24eacd5 __dev_kfree_skb_irq +EXPORT_SYMBOL vmlinux 0xc2623e07 sk_stop_timer +EXPORT_SYMBOL vmlinux 0xc28d923b scsi_remove_target +EXPORT_SYMBOL vmlinux 0xc2acc033 hex_dump_to_buffer +EXPORT_SYMBOL vmlinux 0xc2d711e1 krealloc +EXPORT_SYMBOL vmlinux 0xc2dab7b0 mipi_dsi_dcs_set_display_on +EXPORT_SYMBOL vmlinux 0xc2e066d0 rfkill_alloc +EXPORT_SYMBOL vmlinux 0xc2e587d1 reset_devices +EXPORT_SYMBOL vmlinux 0xc2f1dffc cros_ec_check_result +EXPORT_SYMBOL vmlinux 0xc2f9c045 timespec_to_jiffies +EXPORT_SYMBOL vmlinux 0xc307743d xfrm_state_unregister_afinfo +EXPORT_SYMBOL vmlinux 0xc31753c3 tegra_powergate_power_off +EXPORT_SYMBOL vmlinux 0xc32c5220 blk_rq_map_integrity_sg +EXPORT_SYMBOL vmlinux 0xc35607d6 tcp_check_req +EXPORT_SYMBOL vmlinux 0xc359fb65 abort +EXPORT_SYMBOL vmlinux 0xc36af9d0 sdev_disable_disk_events +EXPORT_SYMBOL vmlinux 0xc3750cd4 d_instantiate_unique +EXPORT_SYMBOL vmlinux 0xc39137c0 cad_pid +EXPORT_SYMBOL vmlinux 0xc3a115b0 seq_dentry +EXPORT_SYMBOL vmlinux 0xc3b0edcd netpoll_poll_disable +EXPORT_SYMBOL vmlinux 0xc3b3b583 single_open_size +EXPORT_SYMBOL vmlinux 0xc3c2be91 mipi_dsi_packet_format_is_short +EXPORT_SYMBOL vmlinux 0xc3d1fa4d edma_alloc_cont_slots +EXPORT_SYMBOL vmlinux 0xc41f0516 node_states +EXPORT_SYMBOL vmlinux 0xc4675211 dev_get_stats +EXPORT_SYMBOL vmlinux 0xc46b08ea netif_carrier_on +EXPORT_SYMBOL vmlinux 0xc47ca6d8 genphy_soft_reset +EXPORT_SYMBOL vmlinux 0xc481de73 d_add_ci +EXPORT_SYMBOL vmlinux 0xc499ae1e kstrdup +EXPORT_SYMBOL vmlinux 0xc49a3072 kmem_cache_destroy +EXPORT_SYMBOL vmlinux 0xc4a13c0b security_inode_notifysecctx +EXPORT_SYMBOL vmlinux 0xc4b7df43 console_start +EXPORT_SYMBOL vmlinux 0xc4c79e68 pci_request_region +EXPORT_SYMBOL vmlinux 0xc4d17506 simple_fill_super +EXPORT_SYMBOL vmlinux 0xc4dc38de copy_page_to_iter +EXPORT_SYMBOL vmlinux 0xc4e70868 d_make_root +EXPORT_SYMBOL vmlinux 0xc4ff90b9 vfs_create +EXPORT_SYMBOL vmlinux 0xc5245c06 dev_warn +EXPORT_SYMBOL vmlinux 0xc52a3ff4 snd_ctl_unregister_ioctl +EXPORT_SYMBOL vmlinux 0xc52da066 omap_set_dma_dest_params +EXPORT_SYMBOL vmlinux 0xc539186d mutex_unlock +EXPORT_SYMBOL vmlinux 0xc54c6d09 up_read +EXPORT_SYMBOL vmlinux 0xc55c8b9f __hw_addr_unsync_dev +EXPORT_SYMBOL vmlinux 0xc5718627 sg_copy_to_buffer +EXPORT_SYMBOL vmlinux 0xc599a772 security_xfrm_state_delete +EXPORT_SYMBOL vmlinux 0xc59f4768 netdev_err +EXPORT_SYMBOL vmlinux 0xc5a4ac54 key_invalidate +EXPORT_SYMBOL vmlinux 0xc5c5067f netif_set_real_num_tx_queues +EXPORT_SYMBOL vmlinux 0xc5ca5633 mmc_calc_max_discard +EXPORT_SYMBOL vmlinux 0xc5de1671 abx500_get_register_interruptible +EXPORT_SYMBOL vmlinux 0xc5ee1a5f sock_register +EXPORT_SYMBOL vmlinux 0xc5f97d9b skb_free_datagram_locked +EXPORT_SYMBOL vmlinux 0xc5fbfa2e proc_set_user +EXPORT_SYMBOL vmlinux 0xc5fdef94 call_usermodehelper +EXPORT_SYMBOL vmlinux 0xc631580a console_unlock +EXPORT_SYMBOL vmlinux 0xc66bd6b3 n_tty_ioctl_helper +EXPORT_SYMBOL vmlinux 0xc66fa6a6 ida_remove +EXPORT_SYMBOL vmlinux 0xc675f7a1 dev_load +EXPORT_SYMBOL vmlinux 0xc6bd218f tty_insert_flip_string_flags +EXPORT_SYMBOL vmlinux 0xc6c8d141 d_delete +EXPORT_SYMBOL vmlinux 0xc6cbbc89 capable +EXPORT_SYMBOL vmlinux 0xc6d07823 prepare_binprm +EXPORT_SYMBOL vmlinux 0xc6de77b4 gen_new_estimator +EXPORT_SYMBOL vmlinux 0xc6f0a91f datagram_poll +EXPORT_SYMBOL vmlinux 0xc7062f4e mipi_dsi_generic_read +EXPORT_SYMBOL vmlinux 0xc715c1af sk_ns_capable +EXPORT_SYMBOL vmlinux 0xc718bde2 sock_no_getsockopt +EXPORT_SYMBOL vmlinux 0xc7208c3a serial8250_resume_port +EXPORT_SYMBOL vmlinux 0xc72f9136 snd_card_free +EXPORT_SYMBOL vmlinux 0xc7524713 blk_mq_can_queue +EXPORT_SYMBOL vmlinux 0xc7563db8 twl_set_regcache_bypass +EXPORT_SYMBOL vmlinux 0xc759967b mmc_can_sanitize +EXPORT_SYMBOL vmlinux 0xc75eeae9 tcp_prot +EXPORT_SYMBOL vmlinux 0xc76dfca5 pcim_iomap_regions_request_all +EXPORT_SYMBOL vmlinux 0xc770aca5 ip_ct_attach +EXPORT_SYMBOL vmlinux 0xc781bd9f rfkill_resume_polling +EXPORT_SYMBOL vmlinux 0xc7856a3d inet6addr_notifier_call_chain +EXPORT_SYMBOL vmlinux 0xc78aba9e phy_ethtool_gset +EXPORT_SYMBOL vmlinux 0xc7910c45 inet_peer_xrlim_allow +EXPORT_SYMBOL vmlinux 0xc79ade0f nla_put_nohdr +EXPORT_SYMBOL vmlinux 0xc79bcd36 dm_vcalloc +EXPORT_SYMBOL vmlinux 0xc7a4fbed rtnl_lock +EXPORT_SYMBOL vmlinux 0xc7ab4086 seqno_fence_ops +EXPORT_SYMBOL vmlinux 0xc7bcbc8d add_wait_queue +EXPORT_SYMBOL vmlinux 0xc7c54423 ip_route_me_harder +EXPORT_SYMBOL vmlinux 0xc7c76439 skb_copy_and_csum_dev +EXPORT_SYMBOL vmlinux 0xc7ec6c27 strspn +EXPORT_SYMBOL vmlinux 0xc7f65c5a sg_miter_skip +EXPORT_SYMBOL vmlinux 0xc8035e99 blk_queue_io_opt +EXPORT_SYMBOL vmlinux 0xc82eba34 scsi_host_set_state +EXPORT_SYMBOL vmlinux 0xc8339e24 string_unescape +EXPORT_SYMBOL vmlinux 0xc83b4d5b posix_acl_from_mode +EXPORT_SYMBOL vmlinux 0xc84a0a7e seq_hlist_start_rcu +EXPORT_SYMBOL vmlinux 0xc860bab3 bitmap_cond_end_sync +EXPORT_SYMBOL vmlinux 0xc86f2fff unmap_mapping_range +EXPORT_SYMBOL vmlinux 0xc872fd85 in6addr_interfacelocal_allnodes +EXPORT_SYMBOL vmlinux 0xc87b45ba input_mt_init_slots +EXPORT_SYMBOL vmlinux 0xc89069e9 xfrm6_input_addr +EXPORT_SYMBOL vmlinux 0xc890c008 zlib_deflateEnd +EXPORT_SYMBOL vmlinux 0xc8a91f5b cpumask_local_spread +EXPORT_SYMBOL vmlinux 0xc8b57c27 autoremove_wake_function +EXPORT_SYMBOL vmlinux 0xc8fd1fe1 tcf_hash_cleanup +EXPORT_SYMBOL vmlinux 0xc90016e0 elv_rb_former_request +EXPORT_SYMBOL vmlinux 0xc911b9d5 eth_get_headlen +EXPORT_SYMBOL vmlinux 0xc91824ce __dquot_free_space +EXPORT_SYMBOL vmlinux 0xc93a2f4d edma_free_cont_slots +EXPORT_SYMBOL vmlinux 0xc949cc5a blk_mq_tag_to_rq +EXPORT_SYMBOL vmlinux 0xc95b7066 tcp_try_fastopen +EXPORT_SYMBOL vmlinux 0xc9634df9 in6addr_linklocal_allrouters +EXPORT_SYMBOL vmlinux 0xc98d3ef9 vme_unregister_bridge +EXPORT_SYMBOL vmlinux 0xc994fd8e posix_unblock_lock +EXPORT_SYMBOL vmlinux 0xc99e2a55 twl_rev +EXPORT_SYMBOL vmlinux 0xc9b8153b mmc_wait_for_req +EXPORT_SYMBOL vmlinux 0xc9b8c308 __kfifo_dma_out_prepare +EXPORT_SYMBOL vmlinux 0xc9cddba4 inet_release +EXPORT_SYMBOL vmlinux 0xc9e13099 file_update_time +EXPORT_SYMBOL vmlinux 0xc9f11dea inet_del_offload +EXPORT_SYMBOL vmlinux 0xc9fdf9ad nf_ip_checksum +EXPORT_SYMBOL vmlinux 0xca069cc8 dev_graft_qdisc +EXPORT_SYMBOL vmlinux 0xca07b061 __qdisc_calculate_pkt_len +EXPORT_SYMBOL vmlinux 0xca09a654 unregister_cdrom +EXPORT_SYMBOL vmlinux 0xca0f4667 readlink_copy +EXPORT_SYMBOL vmlinux 0xca1279bb page_address +EXPORT_SYMBOL vmlinux 0xca138a9b inet_getname +EXPORT_SYMBOL vmlinux 0xca3c0ffa in_dev_finish_destroy +EXPORT_SYMBOL vmlinux 0xca416038 arp_xmit +EXPORT_SYMBOL vmlinux 0xca4ac659 dma_async_tx_descriptor_init +EXPORT_SYMBOL vmlinux 0xca9360b5 rb_next +EXPORT_SYMBOL vmlinux 0xca9bcaac serio_unregister_child_port +EXPORT_SYMBOL vmlinux 0xcaddbd7e edma_set_dest_index +EXPORT_SYMBOL vmlinux 0xcaeb29b6 read_cache_page +EXPORT_SYMBOL vmlinux 0xcaf2c603 scsi_sd_pm_domain +EXPORT_SYMBOL vmlinux 0xcb0288ea ledtrig_cpu +EXPORT_SYMBOL vmlinux 0xcb25d7f4 pneigh_lookup +EXPORT_SYMBOL vmlinux 0xcb284477 filemap_write_and_wait_range +EXPORT_SYMBOL vmlinux 0xcb2e1d7d neigh_destroy +EXPORT_SYMBOL vmlinux 0xcb4420ea __get_user_pages_unlocked +EXPORT_SYMBOL vmlinux 0xcb466063 wait_for_completion_killable_timeout +EXPORT_SYMBOL vmlinux 0xcb46d8c7 mmc_can_trim +EXPORT_SYMBOL vmlinux 0xcb67f68d xfrm6_protocol_register +EXPORT_SYMBOL vmlinux 0xcb6883a7 mem_map +EXPORT_SYMBOL vmlinux 0xcb6ed15e max8925_bulk_read +EXPORT_SYMBOL vmlinux 0xcb79dfdb pci_request_region_exclusive +EXPORT_SYMBOL vmlinux 0xcb914da6 __napi_schedule_irqoff +EXPORT_SYMBOL vmlinux 0xcb97ed6e snd_pcm_lib_write +EXPORT_SYMBOL vmlinux 0xcb9fe5cb pcie_capability_clear_and_set_dword +EXPORT_SYMBOL vmlinux 0xcbbf0a6f audit_log_task_context +EXPORT_SYMBOL vmlinux 0xcbc9557f unregister_sysrq_key +EXPORT_SYMBOL vmlinux 0xcbcd15e1 padata_unregister_cpumask_notifier +EXPORT_SYMBOL vmlinux 0xcbd6f5f2 xfrm_policy_alloc +EXPORT_SYMBOL vmlinux 0xcbeac4be hdmi_avi_infoframe_pack +EXPORT_SYMBOL vmlinux 0xcbee6439 ida_simple_get +EXPORT_SYMBOL vmlinux 0xcbef2d7b udp_lib_getsockopt +EXPORT_SYMBOL vmlinux 0xcbfcfebd register_sound_dsp +EXPORT_SYMBOL vmlinux 0xcc096e19 kernel_sock_shutdown +EXPORT_SYMBOL vmlinux 0xcc248d26 serial8250_suspend_port +EXPORT_SYMBOL vmlinux 0xcc318f06 snd_device_new +EXPORT_SYMBOL vmlinux 0xcc5005fe msleep_interruptible +EXPORT_SYMBOL vmlinux 0xcc62fd49 input_register_device +EXPORT_SYMBOL vmlinux 0xcc6430f6 mipi_dsi_dcs_get_pixel_format +EXPORT_SYMBOL vmlinux 0xcc74fa3e scsi_device_resume +EXPORT_SYMBOL vmlinux 0xcc7fd638 i2c_release_client +EXPORT_SYMBOL vmlinux 0xcc8a943a bio_endio +EXPORT_SYMBOL vmlinux 0xcc8b3773 of_graph_get_remote_port_parent +EXPORT_SYMBOL vmlinux 0xcc985fc5 dma_common_get_sgtable +EXPORT_SYMBOL vmlinux 0xcca243b2 kern_unmount +EXPORT_SYMBOL vmlinux 0xccb440de scsi_report_device_reset +EXPORT_SYMBOL vmlinux 0xccbaabe0 blk_post_runtime_resume +EXPORT_SYMBOL vmlinux 0xccc21f5e input_get_new_minor +EXPORT_SYMBOL vmlinux 0xccd86db3 kmem_cache_alloc +EXPORT_SYMBOL vmlinux 0xccdd99cd nobh_truncate_page +EXPORT_SYMBOL vmlinux 0xcce5409c dev_set_mac_address +EXPORT_SYMBOL vmlinux 0xcce93cd4 __destroy_inode +EXPORT_SYMBOL vmlinux 0xccee8238 tty_unthrottle +EXPORT_SYMBOL vmlinux 0xccfd87da tc6393xb_lcd_set_power +EXPORT_SYMBOL vmlinux 0xccfef64f skb_flow_dissector_init +EXPORT_SYMBOL vmlinux 0xccff8e05 install_exec_creds +EXPORT_SYMBOL vmlinux 0xcd083b10 unregister_sound_dsp +EXPORT_SYMBOL vmlinux 0xcd279169 nla_find +EXPORT_SYMBOL vmlinux 0xcd30b95a tmio_core_mmc_clk_div +EXPORT_SYMBOL vmlinux 0xcd3e3bcb reservation_object_add_excl_fence +EXPORT_SYMBOL vmlinux 0xcd63c845 __aeabi_lasr +EXPORT_SYMBOL vmlinux 0xcd6a761a seq_printf +EXPORT_SYMBOL vmlinux 0xcd762f48 blk_mq_unique_tag +EXPORT_SYMBOL vmlinux 0xcd7c8d08 omap_dss_find_output +EXPORT_SYMBOL vmlinux 0xcd8d36f4 flow_get_u32_src +EXPORT_SYMBOL vmlinux 0xcd9f23dd scsi_register_driver +EXPORT_SYMBOL vmlinux 0xcdc39c9e security_ismaclabel +EXPORT_SYMBOL vmlinux 0xcdc49e19 lockref_get +EXPORT_SYMBOL vmlinux 0xcdda343c register_filesystem +EXPORT_SYMBOL vmlinux 0xcddaecdf __task_pid_nr_ns +EXPORT_SYMBOL vmlinux 0xcdde2997 kill_litter_super +EXPORT_SYMBOL vmlinux 0xcde7bae2 snd_jack_set_parent +EXPORT_SYMBOL vmlinux 0xcdf4dc5f snd_pcm_lib_read +EXPORT_SYMBOL vmlinux 0xce0440eb genl_unregister_family +EXPORT_SYMBOL vmlinux 0xce2840e7 irq_set_irq_wake +EXPORT_SYMBOL vmlinux 0xce3012aa tty_port_close_start +EXPORT_SYMBOL vmlinux 0xce3ca308 copy_from_user_toio +EXPORT_SYMBOL vmlinux 0xce4de3b9 vm_insert_mixed +EXPORT_SYMBOL vmlinux 0xce5ac24f zlib_inflate_workspacesize +EXPORT_SYMBOL vmlinux 0xce650b6e eth_header_cache +EXPORT_SYMBOL vmlinux 0xce70830e dmam_free_noncoherent +EXPORT_SYMBOL vmlinux 0xce7791b1 __scm_destroy +EXPORT_SYMBOL vmlinux 0xce7925e8 sock_i_ino +EXPORT_SYMBOL vmlinux 0xce7ed439 fb_prepare_logo +EXPORT_SYMBOL vmlinux 0xce8aa6ca do_splice_to +EXPORT_SYMBOL vmlinux 0xceab0311 strchrnul +EXPORT_SYMBOL vmlinux 0xcec0b371 iov_iter_init +EXPORT_SYMBOL vmlinux 0xcecec95e bio_reset +EXPORT_SYMBOL vmlinux 0xcedbc06c skb_pad +EXPORT_SYMBOL vmlinux 0xceed7f85 _raw_write_unlock_irqrestore +EXPORT_SYMBOL vmlinux 0xcef51982 kstrtou16 +EXPORT_SYMBOL vmlinux 0xcefcd99a serial8250_unregister_port +EXPORT_SYMBOL vmlinux 0xcf17843c tcp_md5_hash_key +EXPORT_SYMBOL vmlinux 0xcf1ba6c2 d_genocide +EXPORT_SYMBOL vmlinux 0xcf43677a mdiobus_free +EXPORT_SYMBOL vmlinux 0xcf62308b lock_fb_info +EXPORT_SYMBOL vmlinux 0xcf88625f mempool_create_node +EXPORT_SYMBOL vmlinux 0xcfa351ea security_d_instantiate +EXPORT_SYMBOL vmlinux 0xcfc79849 udp_lib_setsockopt +EXPORT_SYMBOL vmlinux 0xcff6b676 _raw_spin_trylock_bh +EXPORT_SYMBOL vmlinux 0xcffab17a ilookup5_nowait +EXPORT_SYMBOL vmlinux 0xd018919c max8998_write_reg +EXPORT_SYMBOL vmlinux 0xd0198b47 pci_wait_for_pending_transaction +EXPORT_SYMBOL vmlinux 0xd01ee101 unregister_md_personality +EXPORT_SYMBOL vmlinux 0xd034105f lockref_put_return +EXPORT_SYMBOL vmlinux 0xd04f0579 snd_ctl_find_id +EXPORT_SYMBOL vmlinux 0xd059b535 __find_get_block +EXPORT_SYMBOL vmlinux 0xd0651aa4 blk_mq_run_hw_queues +EXPORT_SYMBOL vmlinux 0xd0656287 snd_timer_pause +EXPORT_SYMBOL vmlinux 0xd0670fcb would_dump +EXPORT_SYMBOL vmlinux 0xd0720a17 on_each_cpu_cond +EXPORT_SYMBOL vmlinux 0xd08dd437 blk_queue_update_dma_pad +EXPORT_SYMBOL vmlinux 0xd09b0199 fence_context_alloc +EXPORT_SYMBOL vmlinux 0xd0a2847c sha_init +EXPORT_SYMBOL vmlinux 0xd0a91bab skip_spaces +EXPORT_SYMBOL vmlinux 0xd0b0e8ce call_usermodehelper_setup +EXPORT_SYMBOL vmlinux 0xd0b141c3 md_error +EXPORT_SYMBOL vmlinux 0xd0ee38b8 schedule_timeout_uninterruptible +EXPORT_SYMBOL vmlinux 0xd0f36f0d audit_log_format +EXPORT_SYMBOL vmlinux 0xd0f8618b tcp_rcv_established +EXPORT_SYMBOL vmlinux 0xd0f9cd9d nand_lock +EXPORT_SYMBOL vmlinux 0xd0fb7cd4 __tasklet_hi_schedule_first +EXPORT_SYMBOL vmlinux 0xd100acbd _raw_write_lock +EXPORT_SYMBOL vmlinux 0xd1067ba7 dispc_ovl_enabled +EXPORT_SYMBOL vmlinux 0xd1157735 release_and_free_resource +EXPORT_SYMBOL vmlinux 0xd11ac4e5 lease_get_mtime +EXPORT_SYMBOL vmlinux 0xd139d806 override_creds +EXPORT_SYMBOL vmlinux 0xd13ce570 led_update_brightness +EXPORT_SYMBOL vmlinux 0xd13d2d6b xfrm_register_mode +EXPORT_SYMBOL vmlinux 0xd1582878 pci_get_class +EXPORT_SYMBOL vmlinux 0xd1774c15 snd_pcm_stop +EXPORT_SYMBOL vmlinux 0xd1816f32 frontswap_writethrough +EXPORT_SYMBOL vmlinux 0xd1946f6f scsi_host_get +EXPORT_SYMBOL vmlinux 0xd196c9be kstrtos16_from_user +EXPORT_SYMBOL vmlinux 0xd1a9086a fbcon_set_bitops +EXPORT_SYMBOL vmlinux 0xd1b73132 param_ops_ullong +EXPORT_SYMBOL vmlinux 0xd1bc892a inode_needs_sync +EXPORT_SYMBOL vmlinux 0xd1c65484 blk_complete_request +EXPORT_SYMBOL vmlinux 0xd1c84dfb hdmi_audio_infoframe_pack +EXPORT_SYMBOL vmlinux 0xd1d87e92 scsi_mlreturn_string +EXPORT_SYMBOL vmlinux 0xd1d922be __ip4_datagram_connect +EXPORT_SYMBOL vmlinux 0xd1e79cae fence_wait_timeout +EXPORT_SYMBOL vmlinux 0xd1f16b65 neigh_lookup_nodev +EXPORT_SYMBOL vmlinux 0xd220cf8a jiffies_to_timespec +EXPORT_SYMBOL vmlinux 0xd22f74ec write_dirty_buffer +EXPORT_SYMBOL vmlinux 0xd231dd4c abx500_get_register_page_interruptible +EXPORT_SYMBOL vmlinux 0xd23f5fc4 tty_port_open +EXPORT_SYMBOL vmlinux 0xd241cd11 pci_platform_rom +EXPORT_SYMBOL vmlinux 0xd24f1c80 __inode_permission +EXPORT_SYMBOL vmlinux 0xd251d7b0 security_socket_getpeersec_dgram +EXPORT_SYMBOL vmlinux 0xd254a4a0 clkdev_alloc +EXPORT_SYMBOL vmlinux 0xd2555f19 jiffies_64_to_clock_t +EXPORT_SYMBOL vmlinux 0xd257f079 d_drop +EXPORT_SYMBOL vmlinux 0xd25b92c9 sock_no_sendpage +EXPORT_SYMBOL vmlinux 0xd25d0abf nla_put +EXPORT_SYMBOL vmlinux 0xd25d4f74 console_blank_hook +EXPORT_SYMBOL vmlinux 0xd26ba9f3 cdrom_media_changed +EXPORT_SYMBOL vmlinux 0xd26fd3b8 netdev_rx_csum_fault +EXPORT_SYMBOL vmlinux 0xd276249c scsi_cmd_get_serial +EXPORT_SYMBOL vmlinux 0xd27b25dd blk_check_plugged +EXPORT_SYMBOL vmlinux 0xd28a6ad9 flock_lock_inode_wait +EXPORT_SYMBOL vmlinux 0xd2a941d4 sg_init_table +EXPORT_SYMBOL vmlinux 0xd2af138b reservation_ww_class +EXPORT_SYMBOL vmlinux 0xd2da1048 register_netdevice_notifier +EXPORT_SYMBOL vmlinux 0xd31ccb06 of_machine_is_compatible +EXPORT_SYMBOL vmlinux 0xd32fbfd5 vlan_uses_dev +EXPORT_SYMBOL vmlinux 0xd3340b9d sk_free +EXPORT_SYMBOL vmlinux 0xd36feda1 da903x_query_status +EXPORT_SYMBOL vmlinux 0xd37e9a94 __dev_getfirstbyhwtype +EXPORT_SYMBOL vmlinux 0xd3b878bd generic_file_llseek_size +EXPORT_SYMBOL vmlinux 0xd3dbfbc4 _find_first_zero_bit_le +EXPORT_SYMBOL vmlinux 0xd3e6f60d cpu_possible_mask +EXPORT_SYMBOL vmlinux 0xd4087094 mdiobus_write +EXPORT_SYMBOL vmlinux 0xd4147876 rtnl_configure_link +EXPORT_SYMBOL vmlinux 0xd414e98c bio_integrity_endio +EXPORT_SYMBOL vmlinux 0xd418e1c0 adjust_resource +EXPORT_SYMBOL vmlinux 0xd44111fd snd_info_free_entry +EXPORT_SYMBOL vmlinux 0xd449da2c fput +EXPORT_SYMBOL vmlinux 0xd44bbeb2 udp_del_offload +EXPORT_SYMBOL vmlinux 0xd456a943 twl6040_set_pll +EXPORT_SYMBOL vmlinux 0xd45f8b8c rwsem_down_read_failed +EXPORT_SYMBOL vmlinux 0xd4669fad complete +EXPORT_SYMBOL vmlinux 0xd469c21d security_inode_readlink +EXPORT_SYMBOL vmlinux 0xd48a401b ip_options_rcv_srr +EXPORT_SYMBOL vmlinux 0xd49261d2 __ww_mutex_lock +EXPORT_SYMBOL vmlinux 0xd4a3237f page_follow_link_light +EXPORT_SYMBOL vmlinux 0xd4b32e9a inode_permission +EXPORT_SYMBOL vmlinux 0xd4c04d35 set_user_nice +EXPORT_SYMBOL vmlinux 0xd4da740a tcp_splice_read +EXPORT_SYMBOL vmlinux 0xd4f61a50 inetdev_by_index +EXPORT_SYMBOL vmlinux 0xd4fdb406 of_find_all_nodes +EXPORT_SYMBOL vmlinux 0xd50e2c06 single_release +EXPORT_SYMBOL vmlinux 0xd535682b simple_rename +EXPORT_SYMBOL vmlinux 0xd5369d8b jbd2_log_wait_commit +EXPORT_SYMBOL vmlinux 0xd53a49db bio_split +EXPORT_SYMBOL vmlinux 0xd54f41ce try_to_del_timer_sync +EXPORT_SYMBOL vmlinux 0xd577c884 mmc_request_done +EXPORT_SYMBOL vmlinux 0xd5b07c41 ppp_unit_number +EXPORT_SYMBOL vmlinux 0xd5be478c kill_pgrp +EXPORT_SYMBOL vmlinux 0xd5c0a0ba key_unlink +EXPORT_SYMBOL vmlinux 0xd5edefa6 dev_set_group +EXPORT_SYMBOL vmlinux 0xd5f52d4f netdev_rss_key_fill +EXPORT_SYMBOL vmlinux 0xd60f9354 vfs_statfs +EXPORT_SYMBOL vmlinux 0xd61347c6 register_sysctl +EXPORT_SYMBOL vmlinux 0xd614ab14 mmc_can_erase +EXPORT_SYMBOL vmlinux 0xd616683a ecryptfs_fill_auth_tok +EXPORT_SYMBOL vmlinux 0xd627480b strncat +EXPORT_SYMBOL vmlinux 0xd627dedf dma_mmap_from_coherent +EXPORT_SYMBOL vmlinux 0xd62c833f schedule_timeout +EXPORT_SYMBOL vmlinux 0xd648e564 fb_match_mode +EXPORT_SYMBOL vmlinux 0xd653d899 set_wb_congested +EXPORT_SYMBOL vmlinux 0xd6648b7d dm_kcopyd_zero +EXPORT_SYMBOL vmlinux 0xd672ccd9 tcf_action_exec +EXPORT_SYMBOL vmlinux 0xd676b77f jbd2__journal_restart +EXPORT_SYMBOL vmlinux 0xd6830207 simple_symlink_inode_operations +EXPORT_SYMBOL vmlinux 0xd688716b dm_kcopyd_client_create +EXPORT_SYMBOL vmlinux 0xd6abe415 cdrom_mode_sense +EXPORT_SYMBOL vmlinux 0xd6b6eb93 thaw_bdev +EXPORT_SYMBOL vmlinux 0xd6c76cf7 __cleancache_invalidate_inode +EXPORT_SYMBOL vmlinux 0xd6df3be6 ip6_route_output +EXPORT_SYMBOL vmlinux 0xd6e2630f generic_pipe_buf_steal +EXPORT_SYMBOL vmlinux 0xd6ee688f vmalloc +EXPORT_SYMBOL vmlinux 0xd6f1175a sock_queue_err_skb +EXPORT_SYMBOL vmlinux 0xd6f2a1ea elv_register_queue +EXPORT_SYMBOL vmlinux 0xd6f2bfd1 tcp_req_err +EXPORT_SYMBOL vmlinux 0xd74289f9 __percpu_counter_add +EXPORT_SYMBOL vmlinux 0xd747032e tty_kref_put +EXPORT_SYMBOL vmlinux 0xd7484371 pci_set_master +EXPORT_SYMBOL vmlinux 0xd75aa078 jbd2_journal_forget +EXPORT_SYMBOL vmlinux 0xd75c79df smp_call_function +EXPORT_SYMBOL vmlinux 0xd75f42b2 blk_limits_io_opt +EXPORT_SYMBOL vmlinux 0xd765ae09 __pci_enable_wake +EXPORT_SYMBOL vmlinux 0xd77e3e29 tty_vhangup +EXPORT_SYMBOL vmlinux 0xd78025ae gen_pool_create +EXPORT_SYMBOL vmlinux 0xd7856222 new_inode +EXPORT_SYMBOL vmlinux 0xd786a586 ioc_lookup_icq +EXPORT_SYMBOL vmlinux 0xd78e6f89 security_skb_classify_flow +EXPORT_SYMBOL vmlinux 0xd797b9a5 vme_master_write +EXPORT_SYMBOL vmlinux 0xd7b3a695 hdmi_infoframe_log +EXPORT_SYMBOL vmlinux 0xd7dee1fd path_get +EXPORT_SYMBOL vmlinux 0xd7e56a4e simple_strtoll +EXPORT_SYMBOL vmlinux 0xd7e657b4 pm860x_bulk_write +EXPORT_SYMBOL vmlinux 0xd7ea7094 nf_unregister_queue_handler +EXPORT_SYMBOL vmlinux 0xd802401d pci_enable_device_mem +EXPORT_SYMBOL vmlinux 0xd809642b vga_tryget +EXPORT_SYMBOL vmlinux 0xd81ccde2 shdma_chan_probe +EXPORT_SYMBOL vmlinux 0xd82e8120 ip_queue_xmit +EXPORT_SYMBOL vmlinux 0xd8460db7 input_mt_destroy_slots +EXPORT_SYMBOL vmlinux 0xd847717b jbd2_journal_free_reserved +EXPORT_SYMBOL vmlinux 0xd85cd67e __wake_up +EXPORT_SYMBOL vmlinux 0xd8a994eb scsi_extd_sense_format +EXPORT_SYMBOL vmlinux 0xd8c60d4c vlan_vid_add +EXPORT_SYMBOL vmlinux 0xd8d401b2 scsi_unregister +EXPORT_SYMBOL vmlinux 0xd8d57021 pm_vt_switch_unregister +EXPORT_SYMBOL vmlinux 0xd8d919da ptp_find_pin +EXPORT_SYMBOL vmlinux 0xd8de6f6a cdrom_release +EXPORT_SYMBOL vmlinux 0xd8ded085 radix_tree_maybe_preload +EXPORT_SYMBOL vmlinux 0xd8e484f0 register_chrdev_region +EXPORT_SYMBOL vmlinux 0xd8ea7015 inet_listen +EXPORT_SYMBOL vmlinux 0xd8f63b2c dev_mc_add_global +EXPORT_SYMBOL vmlinux 0xd8fa8547 inode_set_flags +EXPORT_SYMBOL vmlinux 0xd904f61d jbd2_journal_update_sb_errno +EXPORT_SYMBOL vmlinux 0xd90b6d12 vfs_symlink +EXPORT_SYMBOL vmlinux 0xd93f84db neigh_event_ns +EXPORT_SYMBOL vmlinux 0xd947fd10 down_read_trylock +EXPORT_SYMBOL vmlinux 0xd9534b82 security_path_link +EXPORT_SYMBOL vmlinux 0xd955d2b7 omap_set_dma_dest_data_pack +EXPORT_SYMBOL vmlinux 0xd956ad06 path_is_under +EXPORT_SYMBOL vmlinux 0xd97edd47 neigh_proc_dointvec +EXPORT_SYMBOL vmlinux 0xd985dc99 mempool_free_pages +EXPORT_SYMBOL vmlinux 0xd98cf8a7 fsnotify_put_mark +EXPORT_SYMBOL vmlinux 0xd9955a05 xfrm_policy_hash_rebuild +EXPORT_SYMBOL vmlinux 0xd99ad579 __tracepoint_module_get +EXPORT_SYMBOL vmlinux 0xd9aedaf6 tty_port_put +EXPORT_SYMBOL vmlinux 0xd9ba2c60 skb_checksum +EXPORT_SYMBOL vmlinux 0xd9c92902 fifo_create_dflt +EXPORT_SYMBOL vmlinux 0xd9ce8f0c strnlen +EXPORT_SYMBOL vmlinux 0xd9d6402e pcie_port_service_register +EXPORT_SYMBOL vmlinux 0xd9d8fd16 register_restart_handler +EXPORT_SYMBOL vmlinux 0xd9e262f5 put_page +EXPORT_SYMBOL vmlinux 0xda1360b9 complete_request_key +EXPORT_SYMBOL vmlinux 0xda1c9521 mntget +EXPORT_SYMBOL vmlinux 0xda3d10a8 security_tun_dev_open +EXPORT_SYMBOL vmlinux 0xda3d5a0e blk_pre_runtime_resume +EXPORT_SYMBOL vmlinux 0xda4bfdc9 pci_map_rom +EXPORT_SYMBOL vmlinux 0xda5b96c3 dev_getbyhwaddr_rcu +EXPORT_SYMBOL vmlinux 0xda69bd99 skb_copy +EXPORT_SYMBOL vmlinux 0xda7ca6cb fb_mode_is_equal +EXPORT_SYMBOL vmlinux 0xda8af7ad fb_find_nearest_mode +EXPORT_SYMBOL vmlinux 0xda9a2843 blk_queue_bounce +EXPORT_SYMBOL vmlinux 0xda9d33af seq_read +EXPORT_SYMBOL vmlinux 0xdaa57ec3 totalhigh_pages +EXPORT_SYMBOL vmlinux 0xdaafc807 tcp_sockets_allocated +EXPORT_SYMBOL vmlinux 0xdac4913a bitmap_allocate_region +EXPORT_SYMBOL vmlinux 0xdad97f94 __raw_writesw +EXPORT_SYMBOL vmlinux 0xdb0412e6 security_inode_listsecurity +EXPORT_SYMBOL vmlinux 0xdb07f0a6 jbd2_journal_ack_err +EXPORT_SYMBOL vmlinux 0xdb16bebe generic_fillattr +EXPORT_SYMBOL vmlinux 0xdb4292e4 omap_set_dma_params +EXPORT_SYMBOL vmlinux 0xdb542daf sock_sendmsg +EXPORT_SYMBOL vmlinux 0xdb68bbad rfkill_destroy +EXPORT_SYMBOL vmlinux 0xdb7305a1 __stack_chk_fail +EXPORT_SYMBOL vmlinux 0xdb760f52 __kfifo_free +EXPORT_SYMBOL vmlinux 0xdb78aca0 of_parse_phandle_with_args +EXPORT_SYMBOL vmlinux 0xdb914243 sk_net_capable +EXPORT_SYMBOL vmlinux 0xdb93b838 dispc_free_irq +EXPORT_SYMBOL vmlinux 0xdbe90771 ip_route_input_noref +EXPORT_SYMBOL vmlinux 0xdbecd286 register_sound_special +EXPORT_SYMBOL vmlinux 0xdbf818d9 kill_pid +EXPORT_SYMBOL vmlinux 0xdbf98d57 xfrm_lookup +EXPORT_SYMBOL vmlinux 0xdc047fc4 scsi_dev_info_list_add_keyed +EXPORT_SYMBOL vmlinux 0xdc0b9e8a from_kuid_munged +EXPORT_SYMBOL vmlinux 0xdc14eda7 pci_pci_problems +EXPORT_SYMBOL vmlinux 0xdc157bca netlink_broadcast_filtered +EXPORT_SYMBOL vmlinux 0xdc3d6f5b jbd2_journal_get_create_access +EXPORT_SYMBOL vmlinux 0xdc3fcbc9 __sw_hweight8 +EXPORT_SYMBOL vmlinux 0xdc42b35c swiotlb_map_sg_attrs +EXPORT_SYMBOL vmlinux 0xdc494c79 tcp_openreq_init_rwin +EXPORT_SYMBOL vmlinux 0xdc512134 backlight_register_notifier +EXPORT_SYMBOL vmlinux 0xdc5c6297 videomode_to_omap_video_timings +EXPORT_SYMBOL vmlinux 0xdc63826e swiotlb_sync_sg_for_device +EXPORT_SYMBOL vmlinux 0xdc78b8f9 md_reload_sb +EXPORT_SYMBOL vmlinux 0xdc7a9390 dcache_dir_lseek +EXPORT_SYMBOL vmlinux 0xdc942659 pci_add_resource_offset +EXPORT_SYMBOL vmlinux 0xdc9e3887 serio_reconnect +EXPORT_SYMBOL vmlinux 0xdca2221d __neigh_set_probe_once +EXPORT_SYMBOL vmlinux 0xdca970a5 simple_open +EXPORT_SYMBOL vmlinux 0xdca9ed48 edma_read_slot +EXPORT_SYMBOL vmlinux 0xdcb0349b sys_close +EXPORT_SYMBOL vmlinux 0xdcd5e0bf inode_add_bytes +EXPORT_SYMBOL vmlinux 0xdcdc2135 dcb_ieee_setapp +EXPORT_SYMBOL vmlinux 0xdcecdc29 d_set_fallthru +EXPORT_SYMBOL vmlinux 0xdd093ac2 sock_common_setsockopt +EXPORT_SYMBOL vmlinux 0xdd0a2ba2 strlcat +EXPORT_SYMBOL vmlinux 0xdd13a4fa xfrm6_protocol_deregister +EXPORT_SYMBOL vmlinux 0xdd226fa9 __raw_readsw +EXPORT_SYMBOL vmlinux 0xdd24bf72 i2c_smbus_write_word_data +EXPORT_SYMBOL vmlinux 0xdd27fa87 memchr +EXPORT_SYMBOL vmlinux 0xdd35d5de clk_register_clkdevs +EXPORT_SYMBOL vmlinux 0xdd3916ac _raw_spin_unlock_bh +EXPORT_SYMBOL vmlinux 0xdd512ab3 sock_alloc_send_skb +EXPORT_SYMBOL vmlinux 0xdd563770 gnet_stats_copy_rate_est +EXPORT_SYMBOL vmlinux 0xdd8dc634 inet_twsk_deschedule +EXPORT_SYMBOL vmlinux 0xdda7964f bio_map_kern +EXPORT_SYMBOL vmlinux 0xddbc6d81 xfrm_input +EXPORT_SYMBOL vmlinux 0xddbd8188 dss_mgr_enable +EXPORT_SYMBOL vmlinux 0xddc0bce6 of_platform_bus_probe +EXPORT_SYMBOL vmlinux 0xddc1c06b simple_lookup +EXPORT_SYMBOL vmlinux 0xddcbfa58 genphy_config_init +EXPORT_SYMBOL vmlinux 0xddde9ab9 md_register_thread +EXPORT_SYMBOL vmlinux 0xddf95099 pcim_iounmap +EXPORT_SYMBOL vmlinux 0xde20b2ab request_firmware +EXPORT_SYMBOL vmlinux 0xde3e3bc9 devm_gpio_request +EXPORT_SYMBOL vmlinux 0xde516464 qdisc_class_hash_grow +EXPORT_SYMBOL vmlinux 0xde59ba33 dquot_quota_off +EXPORT_SYMBOL vmlinux 0xde666360 posix_acl_chmod +EXPORT_SYMBOL vmlinux 0xde72c30e bdget_disk +EXPORT_SYMBOL vmlinux 0xde7520d2 scmd_printk +EXPORT_SYMBOL vmlinux 0xde9360ba totalram_pages +EXPORT_SYMBOL vmlinux 0xde982cb7 dst_discard_sk +EXPORT_SYMBOL vmlinux 0xdea34658 napi_gro_frags +EXPORT_SYMBOL vmlinux 0xdead3b7e do_SAK +EXPORT_SYMBOL vmlinux 0xdebcb4fe __skb_gso_segment +EXPORT_SYMBOL vmlinux 0xdee06fe2 input_register_handler +EXPORT_SYMBOL vmlinux 0xdf11921f sk_stream_error +EXPORT_SYMBOL vmlinux 0xdf2c2742 rb_last +EXPORT_SYMBOL vmlinux 0xdf3a693d crc_t10dif_update +EXPORT_SYMBOL vmlinux 0xdf3d3fde snd_card_file_remove +EXPORT_SYMBOL vmlinux 0xdf54a8f7 netlink_unregister_notifier +EXPORT_SYMBOL vmlinux 0xdf60cc27 __print_symbol +EXPORT_SYMBOL vmlinux 0xdf78dafe pm8606_osc_enable +EXPORT_SYMBOL vmlinux 0xdf929370 fs_overflowgid +EXPORT_SYMBOL vmlinux 0xdfc5169b slhc_init +EXPORT_SYMBOL vmlinux 0xdfcd92b2 jbd2_journal_file_inode +EXPORT_SYMBOL vmlinux 0xdfd6682e devm_release_resource +EXPORT_SYMBOL vmlinux 0xdfd91ce9 omap_type +EXPORT_SYMBOL vmlinux 0xdfdf97a8 blk_queue_start_tag +EXPORT_SYMBOL vmlinux 0xdfe965b1 mmc_of_parse +EXPORT_SYMBOL vmlinux 0xdff70f8f unregister_filesystem +EXPORT_SYMBOL vmlinux 0xdff7d5e8 pci_disable_msi +EXPORT_SYMBOL vmlinux 0xdff905e5 vme_slave_free +EXPORT_SYMBOL vmlinux 0xe018a059 ndisc_mc_map +EXPORT_SYMBOL vmlinux 0xe01bbbdb seq_vprintf +EXPORT_SYMBOL vmlinux 0xe0361621 touch_atime +EXPORT_SYMBOL vmlinux 0xe04f7caa dm_read_arg_group +EXPORT_SYMBOL vmlinux 0xe04ffd67 request_key +EXPORT_SYMBOL vmlinux 0xe0534f5f kill_anon_super +EXPORT_SYMBOL vmlinux 0xe06141e9 security_sk_clone +EXPORT_SYMBOL vmlinux 0xe075d6eb iter_div_u64_rem +EXPORT_SYMBOL vmlinux 0xe083e246 gen_pool_first_fit_order_align +EXPORT_SYMBOL vmlinux 0xe094ef39 sg_next +EXPORT_SYMBOL vmlinux 0xe0988084 dev_printk_emit +EXPORT_SYMBOL vmlinux 0xe0b13336 argv_free +EXPORT_SYMBOL vmlinux 0xe0b3ba60 prepare_kernel_cred +EXPORT_SYMBOL vmlinux 0xe0bc6571 devm_iounmap +EXPORT_SYMBOL vmlinux 0xe0bef318 icst_hz_to_vco +EXPORT_SYMBOL vmlinux 0xe0c824d7 secpath_dup +EXPORT_SYMBOL vmlinux 0xe0d93ce2 sched_autogroup_create_attach +EXPORT_SYMBOL vmlinux 0xe0f238f1 __sock_tx_timestamp +EXPORT_SYMBOL vmlinux 0xe0f8c1de default_file_splice_read +EXPORT_SYMBOL vmlinux 0xe104c4a5 phy_connect +EXPORT_SYMBOL vmlinux 0xe113bbbc csum_partial +EXPORT_SYMBOL vmlinux 0xe1170e81 netif_skb_features +EXPORT_SYMBOL vmlinux 0xe1190894 block_write_full_page +EXPORT_SYMBOL vmlinux 0xe127fb18 down_killable +EXPORT_SYMBOL vmlinux 0xe15b6c85 snd_register_device +EXPORT_SYMBOL vmlinux 0xe15ef486 twl6040_set_bits +EXPORT_SYMBOL vmlinux 0xe15ff1b7 cleancache_register_ops +EXPORT_SYMBOL vmlinux 0xe1668926 set_page_dirty_lock +EXPORT_SYMBOL vmlinux 0xe167ac65 ppp_dev_name +EXPORT_SYMBOL vmlinux 0xe1761617 security_inet_conn_request +EXPORT_SYMBOL vmlinux 0xe1786c32 make_flow_keys_digest +EXPORT_SYMBOL vmlinux 0xe19ad1c2 devm_request_any_context_irq +EXPORT_SYMBOL vmlinux 0xe1a54bb8 sock_no_setsockopt +EXPORT_SYMBOL vmlinux 0xe1a99b9e vfs_iter_read +EXPORT_SYMBOL vmlinux 0xe1d03aa7 omapdss_output_set_device +EXPORT_SYMBOL vmlinux 0xe1f0ab3a _raw_read_lock_irqsave +EXPORT_SYMBOL vmlinux 0xe200f872 secure_dccpv6_sequence_number +EXPORT_SYMBOL vmlinux 0xe20832ec sock_common_recvmsg +EXPORT_SYMBOL vmlinux 0xe21c5ce0 noop_fsync +EXPORT_SYMBOL vmlinux 0xe23ae481 blk_iopoll_complete +EXPORT_SYMBOL vmlinux 0xe24cd1d9 xfrm_stateonly_find +EXPORT_SYMBOL vmlinux 0xe24d3a97 jiffies_64 +EXPORT_SYMBOL vmlinux 0xe25d99f5 omapdss_default_get_resolution +EXPORT_SYMBOL vmlinux 0xe26b915d submit_bh +EXPORT_SYMBOL vmlinux 0xe26e08dd sock_create_kern +EXPORT_SYMBOL vmlinux 0xe27394c7 __getblk_gfp +EXPORT_SYMBOL vmlinux 0xe27f5c15 of_phy_find_device +EXPORT_SYMBOL vmlinux 0xe282f73a __blk_mq_end_request +EXPORT_SYMBOL vmlinux 0xe292fb9f gen_pool_virt_to_phys +EXPORT_SYMBOL vmlinux 0xe29e1d0e out_of_line_wait_on_atomic_t +EXPORT_SYMBOL vmlinux 0xe2aac8c2 qdisc_list_del +EXPORT_SYMBOL vmlinux 0xe2d5255a strcmp +EXPORT_SYMBOL vmlinux 0xe2ddefe4 iommu_tbl_range_alloc +EXPORT_SYMBOL vmlinux 0xe2e31a41 __dev_remove_pack +EXPORT_SYMBOL vmlinux 0xe2e8065e memdup_user +EXPORT_SYMBOL vmlinux 0xe2ed7330 mmc_cleanup_queue +EXPORT_SYMBOL vmlinux 0xe2f425e7 rps_cpu_mask +EXPORT_SYMBOL vmlinux 0xe2fae716 kmemdup +EXPORT_SYMBOL vmlinux 0xe3475477 blk_delay_queue +EXPORT_SYMBOL vmlinux 0xe35aea18 start_tty +EXPORT_SYMBOL vmlinux 0xe368cb4a pipe_unlock +EXPORT_SYMBOL vmlinux 0xe378cabd uart_add_one_port +EXPORT_SYMBOL vmlinux 0xe37d10ae omap_dispc_unregister_isr +EXPORT_SYMBOL vmlinux 0xe392506e scsi_host_put +EXPORT_SYMBOL vmlinux 0xe3931867 kmalloc_dma_caches +EXPORT_SYMBOL vmlinux 0xe3a510b9 d_alloc_name +EXPORT_SYMBOL vmlinux 0xe3a704a8 netdev_info +EXPORT_SYMBOL vmlinux 0xe3be4c2c pagecache_get_page +EXPORT_SYMBOL vmlinux 0xe3d6f284 fb_find_mode_cvt +EXPORT_SYMBOL vmlinux 0xe3de56b4 dquot_writeback_dquots +EXPORT_SYMBOL vmlinux 0xe413be4a memcg_socket_limit_enabled +EXPORT_SYMBOL vmlinux 0xe43274bc proc_dointvec +EXPORT_SYMBOL vmlinux 0xe4b02d44 napi_get_frags +EXPORT_SYMBOL vmlinux 0xe4c80097 cacheid +EXPORT_SYMBOL vmlinux 0xe4c964f1 sk_page_frag_refill +EXPORT_SYMBOL vmlinux 0xe523ad75 synchronize_irq +EXPORT_SYMBOL vmlinux 0xe53494dd get_phy_device +EXPORT_SYMBOL vmlinux 0xe5445af6 omap_get_dma_dst_pos +EXPORT_SYMBOL vmlinux 0xe551c99d dqget +EXPORT_SYMBOL vmlinux 0xe5523738 skb_ensure_writable +EXPORT_SYMBOL vmlinux 0xe55d5c8f consume_skb +EXPORT_SYMBOL vmlinux 0xe56a9336 snd_pcm_format_width +EXPORT_SYMBOL vmlinux 0xe57361dd __tracepoint_kmem_cache_alloc +EXPORT_SYMBOL vmlinux 0xe57878a1 in6_pton +EXPORT_SYMBOL vmlinux 0xe582f13f get_mem_type +EXPORT_SYMBOL vmlinux 0xe5867808 dlci_ioctl_set +EXPORT_SYMBOL vmlinux 0xe5a7afb9 netif_tx_stop_all_queues +EXPORT_SYMBOL vmlinux 0xe5aa79a2 xfrm_state_check_expire +EXPORT_SYMBOL vmlinux 0xe5c78a99 do_blank_screen +EXPORT_SYMBOL vmlinux 0xe5d11605 snd_device_free +EXPORT_SYMBOL vmlinux 0xe5dc1435 __netdev_alloc_skb +EXPORT_SYMBOL vmlinux 0xe5e096b5 cpu_tlb +EXPORT_SYMBOL vmlinux 0xe5ed5467 xfrm_policy_walk_init +EXPORT_SYMBOL vmlinux 0xe5ee54da xfrm_state_delete_tunnel +EXPORT_SYMBOL vmlinux 0xe5f44a0a inet_proto_csum_replace4 +EXPORT_SYMBOL vmlinux 0xe609096f tegra_sku_info +EXPORT_SYMBOL vmlinux 0xe63a4634 mipi_dsi_dcs_set_tear_off +EXPORT_SYMBOL vmlinux 0xe66452ab dql_init +EXPORT_SYMBOL vmlinux 0xe673c6e5 __scsi_device_lookup +EXPORT_SYMBOL vmlinux 0xe693a6ce vme_get_size +EXPORT_SYMBOL vmlinux 0xe697d108 __blk_iopoll_complete +EXPORT_SYMBOL vmlinux 0xe6a025c3 omap_dss_find_device +EXPORT_SYMBOL vmlinux 0xe6a5df6c sk_receive_skb +EXPORT_SYMBOL vmlinux 0xe6b637dc sk_stream_write_space +EXPORT_SYMBOL vmlinux 0xe6b8539f jbd2_log_start_commit +EXPORT_SYMBOL vmlinux 0xe6cbf177 security_path_rmdir +EXPORT_SYMBOL vmlinux 0xe6d32bf1 scsi_change_queue_depth +EXPORT_SYMBOL vmlinux 0xe6de8038 zpool_unregister_driver +EXPORT_SYMBOL vmlinux 0xe6e12ae3 sync_inode +EXPORT_SYMBOL vmlinux 0xe6ebc016 key_create_or_update +EXPORT_SYMBOL vmlinux 0xe6fbe430 can_do_mlock +EXPORT_SYMBOL vmlinux 0xe7075b97 idr_alloc_cyclic +EXPORT_SYMBOL vmlinux 0xe707d823 __aeabi_uidiv +EXPORT_SYMBOL vmlinux 0xe710edc8 pci_dev_driver +EXPORT_SYMBOL vmlinux 0xe716874a dev_get_phys_port_name +EXPORT_SYMBOL vmlinux 0xe727773c softnet_data +EXPORT_SYMBOL vmlinux 0xe742d037 mipi_dsi_detach +EXPORT_SYMBOL vmlinux 0xe75440e5 give_up_console +EXPORT_SYMBOL vmlinux 0xe77c1a1a pci_request_regions +EXPORT_SYMBOL vmlinux 0xe78e9a67 dquot_drop +EXPORT_SYMBOL vmlinux 0xe7a664c4 nf_hooks +EXPORT_SYMBOL vmlinux 0xe7a81967 audit_log_secctx +EXPORT_SYMBOL vmlinux 0xe7ac598c snd_pcm_hw_constraint_integer +EXPORT_SYMBOL vmlinux 0xe7b262e8 xfrm_garbage_collect +EXPORT_SYMBOL vmlinux 0xe7b5145f input_event +EXPORT_SYMBOL vmlinux 0xe7b575a0 swiotlb_sync_sg_for_cpu +EXPORT_SYMBOL vmlinux 0xe7b6315e kblockd_schedule_delayed_work_on +EXPORT_SYMBOL vmlinux 0xe7cac452 passthru_features_check +EXPORT_SYMBOL vmlinux 0xe7d1258c blk_get_queue +EXPORT_SYMBOL vmlinux 0xe7d4daac seq_list_next +EXPORT_SYMBOL vmlinux 0xe7e15910 dispc_clear_irqstatus +EXPORT_SYMBOL vmlinux 0xe7e6abdb genphy_setup_forced +EXPORT_SYMBOL vmlinux 0xe8214184 tcf_exts_destroy +EXPORT_SYMBOL vmlinux 0xe836e68f simple_map_init +EXPORT_SYMBOL vmlinux 0xe841f8e3 nf_hook_slow +EXPORT_SYMBOL vmlinux 0xe848ca42 inet_sock_destruct +EXPORT_SYMBOL vmlinux 0xe84dd290 inet_select_addr +EXPORT_SYMBOL vmlinux 0xe865eba6 devfreq_remove_governor +EXPORT_SYMBOL vmlinux 0xe8775e89 sb_min_blocksize +EXPORT_SYMBOL vmlinux 0xe8794ce1 slhc_toss +EXPORT_SYMBOL vmlinux 0xe87c67b5 mfd_remove_devices +EXPORT_SYMBOL vmlinux 0xe880338d scsi_eh_finish_cmd +EXPORT_SYMBOL vmlinux 0xe893fee7 mem_cgroup_end_page_stat +EXPORT_SYMBOL vmlinux 0xe8b9a3d4 mx51_revision +EXPORT_SYMBOL vmlinux 0xe8bea3bc qdisc_put_stab +EXPORT_SYMBOL vmlinux 0xe8cfce09 tegra114_clock_deassert_dfll_dvco_reset +EXPORT_SYMBOL vmlinux 0xe8d78f15 ipv6_dev_get_saddr +EXPORT_SYMBOL vmlinux 0xe8d9c4fb dquot_quota_sync +EXPORT_SYMBOL vmlinux 0xe8f645bc cdrom_mode_select +EXPORT_SYMBOL vmlinux 0xe9007991 blk_post_runtime_suspend +EXPORT_SYMBOL vmlinux 0xe90b3042 generic_read_dir +EXPORT_SYMBOL vmlinux 0xe912da6b unregister_sysctl_table +EXPORT_SYMBOL vmlinux 0xe914e41e strcpy +EXPORT_SYMBOL vmlinux 0xe9170bc9 dquot_commit +EXPORT_SYMBOL vmlinux 0xe932982d unlock_page +EXPORT_SYMBOL vmlinux 0xe934b828 sock_kfree_s +EXPORT_SYMBOL vmlinux 0xe93f6042 trace_print_symbols_seq +EXPORT_SYMBOL vmlinux 0xe942252e eth_gro_complete +EXPORT_SYMBOL vmlinux 0xe95115cf xfrm_state_lookup_byaddr +EXPORT_SYMBOL vmlinux 0xe953b21f get_next_ino +EXPORT_SYMBOL vmlinux 0xe95e00cf flex_array_get_ptr +EXPORT_SYMBOL vmlinux 0xe98a425f get_tz_trend +EXPORT_SYMBOL vmlinux 0xe9990104 handle_edge_irq +EXPORT_SYMBOL vmlinux 0xe9a02584 dmam_alloc_noncoherent +EXPORT_SYMBOL vmlinux 0xe9b13a5c netlink_broadcast +EXPORT_SYMBOL vmlinux 0xe9b401b9 eth_prepare_mac_addr_change +EXPORT_SYMBOL vmlinux 0xe9bd3084 fixed_phy_update_state +EXPORT_SYMBOL vmlinux 0xe9be808d lockref_get_or_lock +EXPORT_SYMBOL vmlinux 0xe9ccfcd3 ioremap_cache +EXPORT_SYMBOL vmlinux 0xe9eee53d bio_integrity_alloc +EXPORT_SYMBOL vmlinux 0xe9f712ea vlan_dev_vlan_proto +EXPORT_SYMBOL vmlinux 0xe9f7149c zlib_deflate_workspacesize +EXPORT_SYMBOL vmlinux 0xea054b22 nla_policy_len +EXPORT_SYMBOL vmlinux 0xea16dd4c tcp_destroy_cgroup +EXPORT_SYMBOL vmlinux 0xea1f5b88 samsung_rev +EXPORT_SYMBOL vmlinux 0xea2877f2 pm860x_reg_write +EXPORT_SYMBOL vmlinux 0xea2b99ee tty_port_tty_get +EXPORT_SYMBOL vmlinux 0xea3cc1a1 serial8250_do_set_termios +EXPORT_SYMBOL vmlinux 0xea3f9e1a devfreq_monitor_suspend +EXPORT_SYMBOL vmlinux 0xea4ab18a blk_mq_complete_request +EXPORT_SYMBOL vmlinux 0xea4df4ac sdev_prefix_printk +EXPORT_SYMBOL vmlinux 0xea717312 sk_mc_loop +EXPORT_SYMBOL vmlinux 0xea7987f1 key_update +EXPORT_SYMBOL vmlinux 0xea7c605a generic_start_io_acct +EXPORT_SYMBOL vmlinux 0xea7f9e90 pm_vt_switch_required +EXPORT_SYMBOL vmlinux 0xea8b964a tty_write_room +EXPORT_SYMBOL vmlinux 0xeab6162a ipv6_sock_mc_join +EXPORT_SYMBOL vmlinux 0xeac08826 __skb_get_hash_flowi6 +EXPORT_SYMBOL vmlinux 0xeaca2098 skb_checksum_help +EXPORT_SYMBOL vmlinux 0xeadb79d7 buffer_check_dirty_writeback +EXPORT_SYMBOL vmlinux 0xeae06945 phy_register_fixup +EXPORT_SYMBOL vmlinux 0xeaf42acf devm_input_allocate_device +EXPORT_SYMBOL vmlinux 0xeb03b389 __raw_readsl +EXPORT_SYMBOL vmlinux 0xeb0cd6ef nlmsg_notify +EXPORT_SYMBOL vmlinux 0xeb1b120e omap_set_dma_write_mode +EXPORT_SYMBOL vmlinux 0xeb1febca netif_rx_ni +EXPORT_SYMBOL vmlinux 0xeb230952 swiotlb_unmap_sg +EXPORT_SYMBOL vmlinux 0xeb37101c audit_log_end +EXPORT_SYMBOL vmlinux 0xeb55a931 __kfifo_max_r +EXPORT_SYMBOL vmlinux 0xeb565e1b clk_get +EXPORT_SYMBOL vmlinux 0xeb5cec33 dm_kobject_release +EXPORT_SYMBOL vmlinux 0xeb62a3fb fib_default_rule_pref +EXPORT_SYMBOL vmlinux 0xeb67ecbf sock_update_memcg +EXPORT_SYMBOL vmlinux 0xeb88276a blk_get_request +EXPORT_SYMBOL vmlinux 0xebc0e1da dquot_initialize +EXPORT_SYMBOL vmlinux 0xebc1381a __bread_gfp +EXPORT_SYMBOL vmlinux 0xebd18deb sg_pcopy_from_buffer +EXPORT_SYMBOL vmlinux 0xebf2dc91 mapping_tagged +EXPORT_SYMBOL vmlinux 0xebfa1a22 bitmap_end_sync +EXPORT_SYMBOL vmlinux 0xebfdcbdf system_serial_high +EXPORT_SYMBOL vmlinux 0xec13d897 tcp_init_sock +EXPORT_SYMBOL vmlinux 0xec18ebf3 of_find_compatible_node +EXPORT_SYMBOL vmlinux 0xec1aa6ef memzero_explicit +EXPORT_SYMBOL vmlinux 0xec2afd6c devfreq_recommended_opp +EXPORT_SYMBOL vmlinux 0xec2cea3d neigh_app_ns +EXPORT_SYMBOL vmlinux 0xec4d9e3a clk_get_sys +EXPORT_SYMBOL vmlinux 0xec814a9a __splice_from_pipe +EXPORT_SYMBOL vmlinux 0xec94f7af param_set_byte +EXPORT_SYMBOL vmlinux 0xec9aebda key_task_permission +EXPORT_SYMBOL vmlinux 0xecaa1441 __module_get +EXPORT_SYMBOL vmlinux 0xecabfbc9 __skb_recv_datagram +EXPORT_SYMBOL vmlinux 0xecb6b25f ata_port_printk +EXPORT_SYMBOL vmlinux 0xecb84e70 __ethtool_get_settings +EXPORT_SYMBOL vmlinux 0xecbcb8bb radix_tree_lookup_slot +EXPORT_SYMBOL vmlinux 0xecbd5b95 get_cached_acl +EXPORT_SYMBOL vmlinux 0xeccf29c2 vmap +EXPORT_SYMBOL vmlinux 0xeccff509 dquot_claim_space_nodirty +EXPORT_SYMBOL vmlinux 0xece784c2 rb_first +EXPORT_SYMBOL vmlinux 0xecf8a3b4 __raw_writesl +EXPORT_SYMBOL vmlinux 0xecf8fc1d i2c_get_adapter +EXPORT_SYMBOL vmlinux 0xed31a0ce inet_frags_fini +EXPORT_SYMBOL vmlinux 0xed3b732f dquot_commit_info +EXPORT_SYMBOL vmlinux 0xed3c6bba dst_cow_metrics_generic +EXPORT_SYMBOL vmlinux 0xed540968 rtnl_create_link +EXPORT_SYMBOL vmlinux 0xed597524 qdisc_get_rtab +EXPORT_SYMBOL vmlinux 0xed766c59 of_device_register +EXPORT_SYMBOL vmlinux 0xed79be42 netpoll_print_options +EXPORT_SYMBOL vmlinux 0xed8dc57c ip_cmsg_recv_offset +EXPORT_SYMBOL vmlinux 0xed93f29e __kunmap_atomic +EXPORT_SYMBOL vmlinux 0xed9f9a20 __ctzsi2 +EXPORT_SYMBOL vmlinux 0xedbaee5e nla_strcmp +EXPORT_SYMBOL vmlinux 0xedc03953 iounmap +EXPORT_SYMBOL vmlinux 0xedc4e4db empty_zero_page +EXPORT_SYMBOL vmlinux 0xedc75d79 phy_stop +EXPORT_SYMBOL vmlinux 0xedc7f4ec dq_data_lock +EXPORT_SYMBOL vmlinux 0xedd9106d __ashrdi3 +EXPORT_SYMBOL vmlinux 0xeddb13c5 rt6_lookup +EXPORT_SYMBOL vmlinux 0xee0b9589 nand_bch_correct_data +EXPORT_SYMBOL vmlinux 0xee17e59b devm_gpio_free +EXPORT_SYMBOL vmlinux 0xee1a0ba6 simple_link +EXPORT_SYMBOL vmlinux 0xee1d8da6 inode_init_owner +EXPORT_SYMBOL vmlinux 0xee24fde3 cdev_del +EXPORT_SYMBOL vmlinux 0xee27a450 pci_clear_master +EXPORT_SYMBOL vmlinux 0xee2bc2d0 omapdss_is_initialized +EXPORT_SYMBOL vmlinux 0xee2c5a44 register_sound_midi +EXPORT_SYMBOL vmlinux 0xee2d0fc7 _local_bh_enable +EXPORT_SYMBOL vmlinux 0xee3496c3 dma_pool_alloc +EXPORT_SYMBOL vmlinux 0xee5e272b blk_dump_rq_flags +EXPORT_SYMBOL vmlinux 0xee64afda max8925_reg_write +EXPORT_SYMBOL vmlinux 0xee715ef8 lg_global_unlock +EXPORT_SYMBOL vmlinux 0xee821995 eth_commit_mac_addr_change +EXPORT_SYMBOL vmlinux 0xee9080b7 __frontswap_load +EXPORT_SYMBOL vmlinux 0xee91879b rb_first_postorder +EXPORT_SYMBOL vmlinux 0xee9c3647 tcp_hashinfo +EXPORT_SYMBOL vmlinux 0xeea9dbaf bitmap_bitremap +EXPORT_SYMBOL vmlinux 0xeeb8aa45 pcie_set_mps +EXPORT_SYMBOL vmlinux 0xeecce555 d_rehash +EXPORT_SYMBOL vmlinux 0xeed3635b proc_dostring +EXPORT_SYMBOL vmlinux 0xeed973c8 __dynamic_dev_dbg +EXPORT_SYMBOL vmlinux 0xeedf63ff tcp_get_md5sig_pool +EXPORT_SYMBOL vmlinux 0xeef161aa groups_free +EXPORT_SYMBOL vmlinux 0xeef726bc devm_backlight_device_unregister +EXPORT_SYMBOL vmlinux 0xef074b3a md_integrity_register +EXPORT_SYMBOL vmlinux 0xef19a16f skb_insert +EXPORT_SYMBOL vmlinux 0xef25b628 vga_get +EXPORT_SYMBOL vmlinux 0xef2fdc4f __percpu_counter_init +EXPORT_SYMBOL vmlinux 0xef344a29 snd_soc_alloc_ac97_codec +EXPORT_SYMBOL vmlinux 0xef79843f snd_timer_resolution +EXPORT_SYMBOL vmlinux 0xef859391 onfi_async_timing_mode_to_sdr_timings +EXPORT_SYMBOL vmlinux 0xefcf3143 wait_for_completion_io +EXPORT_SYMBOL vmlinux 0xefd1624a vme_dma_free_attribute +EXPORT_SYMBOL vmlinux 0xefd6cf06 __aeabi_unwind_cpp_pr0 +EXPORT_SYMBOL vmlinux 0xefdd1e3d find_get_pages_tag +EXPORT_SYMBOL vmlinux 0xefdd70ce security_secid_to_secctx +EXPORT_SYMBOL vmlinux 0xefec312f omap_get_dma_active_status +EXPORT_SYMBOL vmlinux 0xeffd5e11 iterate_dir +EXPORT_SYMBOL vmlinux 0xf0009fee put_pages_list +EXPORT_SYMBOL vmlinux 0xf0112313 simple_pin_fs +EXPORT_SYMBOL vmlinux 0xf02a02bc of_get_next_available_child +EXPORT_SYMBOL vmlinux 0xf0436197 sched_autogroup_detach +EXPORT_SYMBOL vmlinux 0xf05ffa15 fb_var_to_videomode +EXPORT_SYMBOL vmlinux 0xf06c303c omap_video_timings_to_videomode +EXPORT_SYMBOL vmlinux 0xf07aabe7 alloc_etherdev_mqs +EXPORT_SYMBOL vmlinux 0xf08c67de napi_alloc_frag +EXPORT_SYMBOL vmlinux 0xf097b377 inet6_offloads +EXPORT_SYMBOL vmlinux 0xf09de776 get_random_int +EXPORT_SYMBOL vmlinux 0xf0e48de4 set_anon_super +EXPORT_SYMBOL vmlinux 0xf0e8c68b simple_unlink +EXPORT_SYMBOL vmlinux 0xf0ed2ef4 __raw_writesb +EXPORT_SYMBOL vmlinux 0xf0ef15b4 list_sort +EXPORT_SYMBOL vmlinux 0xf10526ac verify_spi_info +EXPORT_SYMBOL vmlinux 0xf11db7e4 devfreq_add_governor +EXPORT_SYMBOL vmlinux 0xf13a4b33 amba_driver_unregister +EXPORT_SYMBOL vmlinux 0xf13e9e85 scsi_device_quiesce +EXPORT_SYMBOL vmlinux 0xf1446b11 skb_page_frag_refill +EXPORT_SYMBOL vmlinux 0xf147dcb2 hdmi_spd_infoframe_init +EXPORT_SYMBOL vmlinux 0xf17ff7e5 generic_file_open +EXPORT_SYMBOL vmlinux 0xf195c682 fb_invert_cmaps +EXPORT_SYMBOL vmlinux 0xf1969a8e __usecs_to_jiffies +EXPORT_SYMBOL vmlinux 0xf19b0055 vfs_setpos +EXPORT_SYMBOL vmlinux 0xf19e9355 cpu_online_mask +EXPORT_SYMBOL vmlinux 0xf1b4690e key_instantiate_and_link +EXPORT_SYMBOL vmlinux 0xf1db1704 nla_memcpy +EXPORT_SYMBOL vmlinux 0xf1deabf2 div64_u64 +EXPORT_SYMBOL vmlinux 0xf1e0b260 edma_set_transfer_params +EXPORT_SYMBOL vmlinux 0xf1e98c74 avenrun +EXPORT_SYMBOL vmlinux 0xf1ea6f1c __bswapsi2 +EXPORT_SYMBOL vmlinux 0xf20431e0 d_obtain_alias +EXPORT_SYMBOL vmlinux 0xf20dabd8 free_irq +EXPORT_SYMBOL vmlinux 0xf2131a2c vme_new_dma_list +EXPORT_SYMBOL vmlinux 0xf2135d62 textsearch_register +EXPORT_SYMBOL vmlinux 0xf2314ff5 invalidate_inode_buffers +EXPORT_SYMBOL vmlinux 0xf23fcb99 __kfifo_in +EXPORT_SYMBOL vmlinux 0xf26bd0fa blkdev_issue_discard +EXPORT_SYMBOL vmlinux 0xf2741518 vfs_rename +EXPORT_SYMBOL vmlinux 0xf2997713 tty_termios_hw_change +EXPORT_SYMBOL vmlinux 0xf2a0af8f backlight_device_registered +EXPORT_SYMBOL vmlinux 0xf2c170e6 kill_block_super +EXPORT_SYMBOL vmlinux 0xf2c43f3f zlib_deflate +EXPORT_SYMBOL vmlinux 0xf2de70b0 pcie_get_mps +EXPORT_SYMBOL vmlinux 0xf2ebde9d of_find_device_by_node +EXPORT_SYMBOL vmlinux 0xf313da4e sha_transform +EXPORT_SYMBOL vmlinux 0xf3341268 __clear_user +EXPORT_SYMBOL vmlinux 0xf337142c blk_queue_init_tags +EXPORT_SYMBOL vmlinux 0xf33b2793 __check_sticky +EXPORT_SYMBOL vmlinux 0xf346231f seq_list_start_head +EXPORT_SYMBOL vmlinux 0xf353a698 register_module_notifier +EXPORT_SYMBOL vmlinux 0xf362ff37 pcie_get_readrq +EXPORT_SYMBOL vmlinux 0xf372958c neigh_seq_start +EXPORT_SYMBOL vmlinux 0xf3797152 snd_interval_ratnum +EXPORT_SYMBOL vmlinux 0xf37a912b dm_unregister_target +EXPORT_SYMBOL vmlinux 0xf386c32d scsi_scan_target +EXPORT_SYMBOL vmlinux 0xf387a8d6 lookup_bdev +EXPORT_SYMBOL vmlinux 0xf389fe60 __hw_addr_init +EXPORT_SYMBOL vmlinux 0xf38d1e02 framebuffer_alloc +EXPORT_SYMBOL vmlinux 0xf3916987 global_cursor_default +EXPORT_SYMBOL vmlinux 0xf396cd21 tcp_parse_md5sig_option +EXPORT_SYMBOL vmlinux 0xf3983b17 skb_copy_datagram_from_iter +EXPORT_SYMBOL vmlinux 0xf3a1d337 sock_wfree +EXPORT_SYMBOL vmlinux 0xf3a22021 elv_rb_latter_request +EXPORT_SYMBOL vmlinux 0xf3a51631 mmc_alloc_host +EXPORT_SYMBOL vmlinux 0xf3b1e84e omap_dss_put_device +EXPORT_SYMBOL vmlinux 0xf3b2cb05 find_lock_entry +EXPORT_SYMBOL vmlinux 0xf3b6c731 snd_dma_alloc_pages +EXPORT_SYMBOL vmlinux 0xf3bcc659 mmc_gpiod_request_cd +EXPORT_SYMBOL vmlinux 0xf3bf2d1e tegra_fuse_readl +EXPORT_SYMBOL vmlinux 0xf3dfaa48 pci_scan_bridge +EXPORT_SYMBOL vmlinux 0xf3e1fbf2 mpage_readpages +EXPORT_SYMBOL vmlinux 0xf3e6402e __bitmap_equal +EXPORT_SYMBOL vmlinux 0xf3f8c035 mmc_gpio_request_ro +EXPORT_SYMBOL vmlinux 0xf40019c0 tegra114_clock_tune_cpu_trimmers_init +EXPORT_SYMBOL vmlinux 0xf408661f of_graph_get_remote_port +EXPORT_SYMBOL vmlinux 0xf40b2297 __crypto_memneq +EXPORT_SYMBOL vmlinux 0xf40eed48 inode_dio_wait +EXPORT_SYMBOL vmlinux 0xf421003a pci_bus_get +EXPORT_SYMBOL vmlinux 0xf42f771d abx500_event_registers_startup_state_get +EXPORT_SYMBOL vmlinux 0xf43b445b simple_release_fs +EXPORT_SYMBOL vmlinux 0xf43d0b2f redirty_page_for_writepage +EXPORT_SYMBOL vmlinux 0xf44995b5 inode_newsize_ok +EXPORT_SYMBOL vmlinux 0xf46abe8b input_flush_device +EXPORT_SYMBOL vmlinux 0xf473ffaf down +EXPORT_SYMBOL vmlinux 0xf474c21c bitmap_print_to_pagebuf +EXPORT_SYMBOL vmlinux 0xf474fdcb kfree_const +EXPORT_SYMBOL vmlinux 0xf474fece pci_claim_resource +EXPORT_SYMBOL vmlinux 0xf476e889 tty_port_close +EXPORT_SYMBOL vmlinux 0xf4a7fc6d omapdss_compat_init +EXPORT_SYMBOL vmlinux 0xf4b7c000 tcf_hash_create +EXPORT_SYMBOL vmlinux 0xf4bdbeb9 __frontswap_invalidate_area +EXPORT_SYMBOL vmlinux 0xf4cb8948 pm860x_bulk_read +EXPORT_SYMBOL vmlinux 0xf4d68adf tcp_v4_connect +EXPORT_SYMBOL vmlinux 0xf4f14de6 rtnl_trylock +EXPORT_SYMBOL vmlinux 0xf4f71fc3 gen_pool_alloc +EXPORT_SYMBOL vmlinux 0xf4f83bca param_set_uint +EXPORT_SYMBOL vmlinux 0xf517cbdd udp_disconnect +EXPORT_SYMBOL vmlinux 0xf519b089 mark_buffer_async_write +EXPORT_SYMBOL vmlinux 0xf51bc9cd inc_zone_page_state +EXPORT_SYMBOL vmlinux 0xf53c0392 mark_buffer_dirty +EXPORT_SYMBOL vmlinux 0xf53d4c26 qdisc_class_hash_destroy +EXPORT_SYMBOL vmlinux 0xf53dcff3 scsi_get_host_dev +EXPORT_SYMBOL vmlinux 0xf54c51a2 dma_pool_free +EXPORT_SYMBOL vmlinux 0xf5532111 key_reject_and_link +EXPORT_SYMBOL vmlinux 0xf554013f get_super_thawed +EXPORT_SYMBOL vmlinux 0xf564412a __aeabi_ulcmp +EXPORT_SYMBOL vmlinux 0xf58b6a11 vmalloc_to_page +EXPORT_SYMBOL vmlinux 0xf5c2d34d hdmi_audio_infoframe_init +EXPORT_SYMBOL vmlinux 0xf5ca8ba4 devm_clk_get +EXPORT_SYMBOL vmlinux 0xf5eb86ea blk_verify_command +EXPORT_SYMBOL vmlinux 0xf5efbd1d inet_del_protocol +EXPORT_SYMBOL vmlinux 0xf6138f86 cdrom_get_media_event +EXPORT_SYMBOL vmlinux 0xf61f3edd generic_writepages +EXPORT_SYMBOL vmlinux 0xf6374b90 kmem_cache_alloc_trace +EXPORT_SYMBOL vmlinux 0xf6388c56 sysctl_ip_default_ttl +EXPORT_SYMBOL vmlinux 0xf64a65a7 _snd_ctl_add_slave +EXPORT_SYMBOL vmlinux 0xf64fdd04 dquot_resume +EXPORT_SYMBOL vmlinux 0xf6576f0a simple_transaction_set +EXPORT_SYMBOL vmlinux 0xf6732e1e ihold +EXPORT_SYMBOL vmlinux 0xf6770391 mac_pton +EXPORT_SYMBOL vmlinux 0xf68285c0 register_inetaddr_notifier +EXPORT_SYMBOL vmlinux 0xf6851d5f register_sysctl_paths +EXPORT_SYMBOL vmlinux 0xf6870f92 udplite_prot +EXPORT_SYMBOL vmlinux 0xf68dfa0f snd_device_register +EXPORT_SYMBOL vmlinux 0xf69473c6 devfreq_monitor_start +EXPORT_SYMBOL vmlinux 0xf6bb4729 color_table +EXPORT_SYMBOL vmlinux 0xf6d9aaf7 amba_device_unregister +EXPORT_SYMBOL vmlinux 0xf6ebc03b net_ratelimit +EXPORT_SYMBOL vmlinux 0xf6f3cef6 omap_vrfb_setup +EXPORT_SYMBOL vmlinux 0xf6fc8791 __bitmap_xor +EXPORT_SYMBOL vmlinux 0xf70b8790 free_buffer_head +EXPORT_SYMBOL vmlinux 0xf7163ec9 __raw_readsb +EXPORT_SYMBOL vmlinux 0xf7271948 edma_set_src_index +EXPORT_SYMBOL vmlinux 0xf72f61ee eth_header_parse +EXPORT_SYMBOL vmlinux 0xf7364619 blk_integrity_unregister +EXPORT_SYMBOL vmlinux 0xf74c2072 downgrade_write +EXPORT_SYMBOL vmlinux 0xf757f80c freeze_bdev +EXPORT_SYMBOL vmlinux 0xf7584a9c find_font +EXPORT_SYMBOL vmlinux 0xf760af96 phy_disconnect +EXPORT_SYMBOL vmlinux 0xf77c9ca0 of_io_request_and_map +EXPORT_SYMBOL vmlinux 0xf77f0194 pci_unmap_rom +EXPORT_SYMBOL vmlinux 0xf77fc8a9 napi_gro_receive +EXPORT_SYMBOL vmlinux 0xf7802486 __aeabi_uidivmod +EXPORT_SYMBOL vmlinux 0xf796bb82 pci_enable_device_io +EXPORT_SYMBOL vmlinux 0xf79ce7d8 d_splice_alias +EXPORT_SYMBOL vmlinux 0xf79fef63 blk_end_request +EXPORT_SYMBOL vmlinux 0xf7a422eb misc_deregister +EXPORT_SYMBOL vmlinux 0xf7aaeddc ida_init +EXPORT_SYMBOL vmlinux 0xf7c38004 fb_pan_display +EXPORT_SYMBOL vmlinux 0xf7c4236d __starget_for_each_device +EXPORT_SYMBOL vmlinux 0xf7d0e705 dev_getfirstbyhwtype +EXPORT_SYMBOL vmlinux 0xf7f1a185 from_kgid +EXPORT_SYMBOL vmlinux 0xf811e69d scsi_eh_flush_done_q +EXPORT_SYMBOL vmlinux 0xf81fdf22 mark_page_accessed +EXPORT_SYMBOL vmlinux 0xf827cb83 free_reserved_area +EXPORT_SYMBOL vmlinux 0xf82abc1d isa_dma_bridge_buggy +EXPORT_SYMBOL vmlinux 0xf82ec573 rb_prev +EXPORT_SYMBOL vmlinux 0xf841d7df i2c_smbus_read_byte_data +EXPORT_SYMBOL vmlinux 0xf84e2bde put_cmsg +EXPORT_SYMBOL vmlinux 0xf853bbca omap_vrfb_map_angle +EXPORT_SYMBOL vmlinux 0xf86bcdc8 __fib6_flush_trees +EXPORT_SYMBOL vmlinux 0xf87769ad dquot_get_state +EXPORT_SYMBOL vmlinux 0xf87c623b tcp_parse_options +EXPORT_SYMBOL vmlinux 0xf88a3f24 neigh_ifdown +EXPORT_SYMBOL vmlinux 0xf89ad85a param_set_ulong +EXPORT_SYMBOL vmlinux 0xf8a1f4f3 vfs_writev +EXPORT_SYMBOL vmlinux 0xf8a3294d ps2_cmd_aborted +EXPORT_SYMBOL vmlinux 0xf8c8c01c ps2_handle_ack +EXPORT_SYMBOL vmlinux 0xf8da60fd netdev_state_change +EXPORT_SYMBOL vmlinux 0xf8eee90f omapdss_default_get_timings +EXPORT_SYMBOL vmlinux 0xf8f20a1b xfrm_unregister_mode +EXPORT_SYMBOL vmlinux 0xf9062f44 phy_resume +EXPORT_SYMBOL vmlinux 0xf917daba snd_component_add +EXPORT_SYMBOL vmlinux 0xf9190e5a pci_bus_read_config_byte +EXPORT_SYMBOL vmlinux 0xf9348cbc xz_dec_run +EXPORT_SYMBOL vmlinux 0xf9427374 dispc_request_irq +EXPORT_SYMBOL vmlinux 0xf94dd877 skb_find_text +EXPORT_SYMBOL vmlinux 0xf956c6f5 skb_copy_bits +EXPORT_SYMBOL vmlinux 0xf95ef7f6 param_ops_charp +EXPORT_SYMBOL vmlinux 0xf96036f7 __register_binfmt +EXPORT_SYMBOL vmlinux 0xf96f375c __blkdev_reread_part +EXPORT_SYMBOL vmlinux 0xf975e55d pcie_capability_clear_and_set_word +EXPORT_SYMBOL vmlinux 0xf989443d may_umount +EXPORT_SYMBOL vmlinux 0xf9919769 register_key_type +EXPORT_SYMBOL vmlinux 0xf9a482f9 msleep +EXPORT_SYMBOL vmlinux 0xf9ad48d0 ipv6_skip_exthdr +EXPORT_SYMBOL vmlinux 0xf9c5cac4 tcp_seq_open +EXPORT_SYMBOL vmlinux 0xf9c994d6 tcp_get_cookie_sock +EXPORT_SYMBOL vmlinux 0xf9d3e0ae inet_frag_find +EXPORT_SYMBOL vmlinux 0xf9d9fa62 inet6_ioctl +EXPORT_SYMBOL vmlinux 0xf9e73082 scnprintf +EXPORT_SYMBOL vmlinux 0xf9ea5c2d snd_pcm_new_stream +EXPORT_SYMBOL vmlinux 0xf9f7a4a1 nla_append +EXPORT_SYMBOL vmlinux 0xfa090dfb block_is_partially_uptodate +EXPORT_SYMBOL vmlinux 0xfa22ea8e i2c_del_adapter +EXPORT_SYMBOL vmlinux 0xfa45bf9e vlan_vid_del +EXPORT_SYMBOL vmlinux 0xfa469abb dquot_disable +EXPORT_SYMBOL vmlinux 0xfa49ff61 __dst_free +EXPORT_SYMBOL vmlinux 0xfa599bb2 netlink_register_notifier +EXPORT_SYMBOL vmlinux 0xfa66db04 __inet6_lookup_established +EXPORT_SYMBOL vmlinux 0xfa7067b9 d_invalidate +EXPORT_SYMBOL vmlinux 0xfa849a4f simple_transaction_release +EXPORT_SYMBOL vmlinux 0xfa9e504c del_gendisk +EXPORT_SYMBOL vmlinux 0xfa9edbcf dev_set_promiscuity +EXPORT_SYMBOL vmlinux 0xfaa1115b of_mm_gpiochip_remove +EXPORT_SYMBOL vmlinux 0xfaa342ac blk_finish_request +EXPORT_SYMBOL vmlinux 0xfaa35e03 mmc_remove_host +EXPORT_SYMBOL vmlinux 0xfab93c2e fbcon_rotate_ccw +EXPORT_SYMBOL vmlinux 0xfac0f291 netlink_capable +EXPORT_SYMBOL vmlinux 0xfac68eba arm_elf_read_implies_exec +EXPORT_SYMBOL vmlinux 0xfac8865f sysctl_wmem_max +EXPORT_SYMBOL vmlinux 0xfacd2e14 pgprot_user +EXPORT_SYMBOL vmlinux 0xfacd8e72 vme_dma_vme_attribute +EXPORT_SYMBOL vmlinux 0xfad5c140 crypto_sha256_update +EXPORT_SYMBOL vmlinux 0xfae67b1f cap_mmap_addr +EXPORT_SYMBOL vmlinux 0xfaf0c39c deactivate_super +EXPORT_SYMBOL vmlinux 0xfaf140c6 __vlan_find_dev_deep_rcu +EXPORT_SYMBOL vmlinux 0xfaf159d0 call_netdevice_notifiers +EXPORT_SYMBOL vmlinux 0xfb115d0b blk_mq_add_to_requeue_list +EXPORT_SYMBOL vmlinux 0xfb132aad skb_checksum_setup +EXPORT_SYMBOL vmlinux 0xfb3e1264 unregister_console +EXPORT_SYMBOL vmlinux 0xfb6af58d recalc_sigpending +EXPORT_SYMBOL vmlinux 0xfb7d9c45 __udivsi3 +EXPORT_SYMBOL vmlinux 0xfb859bbc iw_handler_set_spy +EXPORT_SYMBOL vmlinux 0xfb94103e __clzdi2 +EXPORT_SYMBOL vmlinux 0xfbaaf01e console_lock +EXPORT_SYMBOL vmlinux 0xfbbb8218 inet_addr_type +EXPORT_SYMBOL vmlinux 0xfbc4f89e io_schedule_timeout +EXPORT_SYMBOL vmlinux 0xfbc61219 phy_init_hw +EXPORT_SYMBOL vmlinux 0xfbf92695 block_invalidatepage +EXPORT_SYMBOL vmlinux 0xfc02b7ad sysctl_tcp_wmem +EXPORT_SYMBOL vmlinux 0xfc14a1f2 skb_free_datagram +EXPORT_SYMBOL vmlinux 0xfc2a1931 get_user_pages_locked +EXPORT_SYMBOL vmlinux 0xfc3011d7 vme_dma_request +EXPORT_SYMBOL vmlinux 0xfc3908f5 fence_default_wait +EXPORT_SYMBOL vmlinux 0xfc39e32f ioport_unmap +EXPORT_SYMBOL vmlinux 0xfc3ea744 elevator_exit +EXPORT_SYMBOL vmlinux 0xfc490bc1 of_find_node_with_property +EXPORT_SYMBOL vmlinux 0xfc4d27bd phy_attach +EXPORT_SYMBOL vmlinux 0xfc65459a kstrtoull_from_user +EXPORT_SYMBOL vmlinux 0xfc6cf8f5 tty_name +EXPORT_SYMBOL vmlinux 0xfc814005 inode_claim_rsv_space +EXPORT_SYMBOL vmlinux 0xfc88e992 tcp_proc_unregister +EXPORT_SYMBOL vmlinux 0xfcc2a43c utf32_to_utf8 +EXPORT_SYMBOL vmlinux 0xfcc313f8 bio_alloc_pages +EXPORT_SYMBOL vmlinux 0xfcc739b8 tcf_hash_check +EXPORT_SYMBOL vmlinux 0xfcc9929d nf_nat_decode_session_hook +EXPORT_SYMBOL vmlinux 0xfcd27514 sg_miter_stop +EXPORT_SYMBOL vmlinux 0xfcd481a4 dev_get_by_index_rcu +EXPORT_SYMBOL vmlinux 0xfcd747c9 fsnotify_add_mark +EXPORT_SYMBOL vmlinux 0xfcd9e43c vme_lm_request +EXPORT_SYMBOL vmlinux 0xfce72ca1 fs_bio_set +EXPORT_SYMBOL vmlinux 0xfceaaecf abx500_mask_and_set_register_interruptible +EXPORT_SYMBOL vmlinux 0xfcec0987 enable_irq +EXPORT_SYMBOL vmlinux 0xfcf499a6 __dec_zone_page_state +EXPORT_SYMBOL vmlinux 0xfcfa03ff fb_videomode_to_modelist +EXPORT_SYMBOL vmlinux 0xfd1d9754 omapdss_find_mgr_from_display +EXPORT_SYMBOL vmlinux 0xfd261fee kfree_skb_partial +EXPORT_SYMBOL vmlinux 0xfd305341 walk_stackframe +EXPORT_SYMBOL vmlinux 0xfd3193dd genlmsg_put +EXPORT_SYMBOL vmlinux 0xfd33b5fa cmdline_parts_find +EXPORT_SYMBOL vmlinux 0xfd41bbb2 param_ops_bool +EXPORT_SYMBOL vmlinux 0xfd44ca63 end_buffer_write_sync +EXPORT_SYMBOL vmlinux 0xfd4aac1b generic_file_mmap +EXPORT_SYMBOL vmlinux 0xfd5683b9 wait_for_completion_interruptible +EXPORT_SYMBOL vmlinux 0xfd71fa8c __blk_end_request_cur +EXPORT_SYMBOL vmlinux 0xfd7ec254 of_mm_gpiochip_add +EXPORT_SYMBOL vmlinux 0xfd8c5afc release_fiq +EXPORT_SYMBOL vmlinux 0xfd99623a ip_frag_ecn_table +EXPORT_SYMBOL vmlinux 0xfda0214b of_graph_parse_endpoint +EXPORT_SYMBOL vmlinux 0xfdab6de3 unregister_sound_midi +EXPORT_SYMBOL vmlinux 0xfdce5983 zpool_register_driver +EXPORT_SYMBOL vmlinux 0xfdd31a17 __cleancache_get_page +EXPORT_SYMBOL vmlinux 0xfde6c594 do_splice_from +EXPORT_SYMBOL vmlinux 0xfdf6b376 uart_register_driver +EXPORT_SYMBOL vmlinux 0xfdfc0b3b fiemap_fill_next_extent +EXPORT_SYMBOL vmlinux 0xfe029963 unregister_inetaddr_notifier +EXPORT_SYMBOL vmlinux 0xfe40bf95 dss_feat_get_num_ovls +EXPORT_SYMBOL vmlinux 0xfe4463b5 jbd2_journal_lock_updates +EXPORT_SYMBOL vmlinux 0xfe47b4d2 linkwatch_fire_event +EXPORT_SYMBOL vmlinux 0xfe5d4bb2 sys_tz +EXPORT_SYMBOL vmlinux 0xfe6ba865 dump_align +EXPORT_SYMBOL vmlinux 0xfe7c4287 nr_cpu_ids +EXPORT_SYMBOL vmlinux 0xfe8e5765 nand_scan_bbt +EXPORT_SYMBOL vmlinux 0xfe97e43e fifo_set_limit +EXPORT_SYMBOL vmlinux 0xfeba3669 snd_ctl_find_numid +EXPORT_SYMBOL vmlinux 0xfebeb24d dev_uc_del +EXPORT_SYMBOL vmlinux 0xfec32e02 blk_queue_bounce_limit +EXPORT_SYMBOL vmlinux 0xfeca7590 radix_tree_range_tag_if_tagged +EXPORT_SYMBOL vmlinux 0xfedcdb60 seq_hlist_next_percpu +EXPORT_SYMBOL vmlinux 0xfeeb66df tty_port_close_end +EXPORT_SYMBOL vmlinux 0xfef0e38f mmc_start_req +EXPORT_SYMBOL vmlinux 0xfef6a6ef cookie_ecn_ok +EXPORT_SYMBOL vmlinux 0xfefb6077 edma_alloc_channel +EXPORT_SYMBOL vmlinux 0xff064fee gen_pool_set_algo +EXPORT_SYMBOL vmlinux 0xff0a123d scsi_target_resume +EXPORT_SYMBOL vmlinux 0xff1e9dd8 seq_list_start +EXPORT_SYMBOL vmlinux 0xff22920b omapdss_register_display +EXPORT_SYMBOL vmlinux 0xff447220 nla_reserve +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 0xff6eb170 dquot_get_dqblk +EXPORT_SYMBOL vmlinux 0xff8cbb1f idr_destroy +EXPORT_SYMBOL vmlinux 0xff9ca065 fb_edid_to_monspecs +EXPORT_SYMBOL vmlinux 0xffa0594b netdev_all_upper_get_next_dev_rcu +EXPORT_SYMBOL vmlinux 0xffad78dc __bio_clone_fast +EXPORT_SYMBOL vmlinux 0xffb94ef0 _test_and_change_bit +EXPORT_SYMBOL vmlinux 0xffcf52ff inode_owner_or_capable +EXPORT_SYMBOL vmlinux 0xffd2cf99 omap_dss_get_num_overlay_managers +EXPORT_SYMBOL vmlinux 0xffd5a395 default_wake_function +EXPORT_SYMBOL vmlinux 0xffdb82bc sg_free_table +EXPORT_SYMBOL vmlinux 0xfff943e3 netpoll_send_udp +EXPORT_SYMBOL_GPL arch/arm/crypto/sha1-arm 0x154a8d51 sha1_update_arm +EXPORT_SYMBOL_GPL arch/arm/crypto/sha1-arm 0x5fe357e7 sha1_finup_arm +EXPORT_SYMBOL_GPL crypto/ablk_helper 0x0c9f6d90 ablk_set_key +EXPORT_SYMBOL_GPL crypto/ablk_helper 0x0ded3c35 __ablk_encrypt +EXPORT_SYMBOL_GPL crypto/ablk_helper 0x3c6f8584 ablk_decrypt +EXPORT_SYMBOL_GPL crypto/ablk_helper 0x4455b49d ablk_init_common +EXPORT_SYMBOL_GPL crypto/ablk_helper 0x81df36e5 ablk_encrypt +EXPORT_SYMBOL_GPL crypto/ablk_helper 0x854f8fb0 ablk_exit +EXPORT_SYMBOL_GPL crypto/ablk_helper 0xd2d9ef82 ablk_init +EXPORT_SYMBOL_GPL crypto/af_alg 0x03d2ab59 af_alg_unregister_type +EXPORT_SYMBOL_GPL crypto/af_alg 0x195922bd af_alg_accept +EXPORT_SYMBOL_GPL crypto/af_alg 0x2ad4770b af_alg_free_sg +EXPORT_SYMBOL_GPL crypto/af_alg 0x2fdb052c af_alg_link_sg +EXPORT_SYMBOL_GPL crypto/af_alg 0x4b872a09 af_alg_make_sg +EXPORT_SYMBOL_GPL crypto/af_alg 0x6c646bda af_alg_register_type +EXPORT_SYMBOL_GPL crypto/af_alg 0x6c7f675e af_alg_complete +EXPORT_SYMBOL_GPL crypto/af_alg 0xbb8d68f5 af_alg_cmsg_send +EXPORT_SYMBOL_GPL crypto/af_alg 0xcf6a52c4 af_alg_release +EXPORT_SYMBOL_GPL crypto/af_alg 0xd954ef95 af_alg_wait_for_completion +EXPORT_SYMBOL_GPL crypto/asymmetric_keys/pkcs7_message 0x0c495886 pkcs7_get_content_data +EXPORT_SYMBOL_GPL crypto/asymmetric_keys/pkcs7_message 0x44e8d9ac pkcs7_free_message +EXPORT_SYMBOL_GPL crypto/asymmetric_keys/pkcs7_message 0x4cc33646 pkcs7_parse_message +EXPORT_SYMBOL_GPL crypto/asymmetric_keys/pkcs7_message 0x883bd89d pkcs7_verify +EXPORT_SYMBOL_GPL crypto/asymmetric_keys/pkcs7_message 0x90d76756 pkcs7_validate_trust +EXPORT_SYMBOL_GPL crypto/async_tx/async_memcpy 0x0656d623 async_memcpy +EXPORT_SYMBOL_GPL crypto/async_tx/async_pq 0x8632abf5 async_gen_syndrome +EXPORT_SYMBOL_GPL crypto/async_tx/async_pq 0xe01ecca6 async_syndrome_val +EXPORT_SYMBOL_GPL crypto/async_tx/async_raid6_recov 0x2eaf7172 async_raid6_2data_recov +EXPORT_SYMBOL_GPL crypto/async_tx/async_raid6_recov 0xab6350be async_raid6_datap_recov +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0x266c8fb1 async_tx_quiesce +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0x322834f3 async_tx_submit +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0x3fb059ab async_trigger_callback +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0x7f38f8d9 __async_tx_find_channel +EXPORT_SYMBOL_GPL crypto/async_tx/async_xor 0x13aab64c async_xor_val +EXPORT_SYMBOL_GPL crypto/async_tx/async_xor 0xa2d5cac3 async_xor +EXPORT_SYMBOL_GPL crypto/authenc 0x587ef278 crypto_authenc_extractkeys +EXPORT_SYMBOL_GPL crypto/blowfish_common 0x0d2673ca blowfish_setkey +EXPORT_SYMBOL_GPL crypto/cast5_generic 0x27278ca9 __cast5_encrypt +EXPORT_SYMBOL_GPL crypto/cast5_generic 0x4a2a3ca6 __cast5_decrypt +EXPORT_SYMBOL_GPL crypto/cast5_generic 0x51a6ff14 cast5_setkey +EXPORT_SYMBOL_GPL crypto/cast6_generic 0x1291971c __cast6_setkey +EXPORT_SYMBOL_GPL crypto/cast6_generic 0x1e2c961f __cast6_decrypt +EXPORT_SYMBOL_GPL crypto/cast6_generic 0x853d50bb cast6_setkey +EXPORT_SYMBOL_GPL crypto/cast6_generic 0x8f04034a __cast6_encrypt +EXPORT_SYMBOL_GPL crypto/cast_common 0x08aa6fb7 cast_s1 +EXPORT_SYMBOL_GPL crypto/cast_common 0x0c5fbf8a cast_s3 +EXPORT_SYMBOL_GPL crypto/cast_common 0xe39dd4b4 cast_s2 +EXPORT_SYMBOL_GPL crypto/cast_common 0xee83a4f3 cast_s4 +EXPORT_SYMBOL_GPL crypto/cryptd 0x00c5d379 cryptd_alloc_ablkcipher +EXPORT_SYMBOL_GPL crypto/cryptd 0x14460d67 cryptd_ablkcipher_child +EXPORT_SYMBOL_GPL crypto/cryptd 0x9565ef07 cryptd_alloc_ahash +EXPORT_SYMBOL_GPL crypto/cryptd 0xbd2822f8 cryptd_ahash_child +EXPORT_SYMBOL_GPL crypto/cryptd 0xc0cb977b cryptd_aead_child +EXPORT_SYMBOL_GPL crypto/cryptd 0xccd25b70 cryptd_free_ahash +EXPORT_SYMBOL_GPL crypto/cryptd 0xdc6082c6 cryptd_free_ablkcipher +EXPORT_SYMBOL_GPL crypto/cryptd 0xe2216d5d cryptd_shash_desc +EXPORT_SYMBOL_GPL crypto/cryptd 0xe3d4ef14 cryptd_alloc_aead +EXPORT_SYMBOL_GPL crypto/cryptd 0xe6e10d24 cryptd_free_aead +EXPORT_SYMBOL_GPL crypto/crypto_null 0x21cd536a crypto_put_default_null_skcipher +EXPORT_SYMBOL_GPL crypto/crypto_null 0x4f5b4f1a crypto_get_default_null_skcipher +EXPORT_SYMBOL_GPL crypto/des_generic 0xcfd9a2c0 des_ekey +EXPORT_SYMBOL_GPL crypto/des_generic 0xf8c78d49 __des3_ede_setkey +EXPORT_SYMBOL_GPL crypto/lrw 0x3864eb66 lrw_free_table +EXPORT_SYMBOL_GPL crypto/lrw 0x3d972360 lrw_crypt +EXPORT_SYMBOL_GPL crypto/lrw 0xcd074900 lrw_init_table +EXPORT_SYMBOL_GPL crypto/mcryptd 0x1246931f shash_ahash_mcryptd_final +EXPORT_SYMBOL_GPL crypto/mcryptd 0x14bdd4d3 mcryptd_flusher +EXPORT_SYMBOL_GPL crypto/mcryptd 0x3f696c65 mcryptd_ahash_child +EXPORT_SYMBOL_GPL crypto/mcryptd 0x41dbdcb2 shash_ahash_mcryptd_update +EXPORT_SYMBOL_GPL crypto/mcryptd 0xb56fc9b0 mcryptd_shash_desc +EXPORT_SYMBOL_GPL crypto/mcryptd 0xc623b53f shash_ahash_mcryptd_digest +EXPORT_SYMBOL_GPL crypto/mcryptd 0xc6c51350 shash_ahash_mcryptd_finup +EXPORT_SYMBOL_GPL crypto/mcryptd 0xcf8ff1c8 mcryptd_alloc_ahash +EXPORT_SYMBOL_GPL crypto/mcryptd 0xf6039974 mcryptd_free_ahash +EXPORT_SYMBOL_GPL crypto/rsa_generic 0xadc25bd8 rsa_parse_key +EXPORT_SYMBOL_GPL crypto/rsa_generic 0xf1b141d1 rsa_free_key +EXPORT_SYMBOL_GPL crypto/serpent_generic 0x5ddb33e9 __serpent_encrypt +EXPORT_SYMBOL_GPL crypto/serpent_generic 0x77b39cb4 __serpent_setkey +EXPORT_SYMBOL_GPL crypto/serpent_generic 0x8a1a99ad __serpent_decrypt +EXPORT_SYMBOL_GPL crypto/serpent_generic 0x9c81ff4e serpent_setkey +EXPORT_SYMBOL_GPL crypto/twofish_common 0x6c3229bb __twofish_setkey +EXPORT_SYMBOL_GPL crypto/twofish_common 0x91c004bb twofish_setkey +EXPORT_SYMBOL_GPL crypto/xts 0x49c90efd xts_crypt +EXPORT_SYMBOL_GPL drivers/ata/pata_platform 0xdd733286 __pata_platform_probe +EXPORT_SYMBOL_GPL drivers/ata/pata_sis 0x9a55a969 sis_info133_for_sata +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-spmi 0xa8cef7e4 devm_regmap_init_spmi_base +EXPORT_SYMBOL_GPL drivers/base/regmap/regmap-spmi 0xab1ebf15 regmap_init_spmi_ext +EXPORT_SYMBOL_GPL drivers/base/regmap/regmap-spmi 0xc4ac9984 regmap_init_spmi_base +EXPORT_SYMBOL_GPL drivers/base/regmap/regmap-spmi 0xcfe53241 devm_regmap_init_spmi_ext +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x0a03413c bcma_host_pci_up +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x1136e7f5 bcma_host_pci_down +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x19879900 bcma_core_pll_ctl +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x29de623a bcma_chipco_b_mii_write +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x2c12512f bcma_host_pci_irq_ctl +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x37b0aba6 bcma_core_disable +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x4a802c0d bcma_core_enable +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x5081d78e bcma_find_core_unit +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x51047a71 bcma_pmu_spuravoid_pllupdate +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x5ee69f6f bcma_chipco_gpio_control +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x61f8af75 __bcma_driver_register +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x7e4e4e1c bcma_core_is_enabled +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x892325f5 bcma_chipco_get_alp_clock +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x8fd24372 bcma_core_pci_power_save +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x9846f7f5 bcma_core_set_clockmode +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xa19bc99c bcma_driver_unregister +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xc0e4d3dc bcma_chipco_pll_read +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xc9b891c9 bcma_chipco_regctl_maskset +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xcea7dce5 bcma_chipco_pll_maskset +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xd100b02b bcma_chipco_gpio_out +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xd7fe6f59 bcma_chipco_chipctl_maskset +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xe152b81d bcma_chipco_pll_write +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xedd940c1 bcma_chipco_gpio_outen +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xfc6ecc68 bcma_pmu_get_bus_clock +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0x46c87890 btbcm_set_bdaddr +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0x6e4596d0 btbcm_initialize +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0x78435e7a btbcm_finalize +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0x910716f8 btbcm_setup_patchram +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0xd7b00b3c btbcm_check_bdaddr +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0xe5d610fb btbcm_setup_apple +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0x152f9203 btintel_set_bdaddr +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0x74c8d572 btintel_check_bdaddr +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x0239f6cb btmrvl_process_event +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x06c8e904 btmrvl_pscan_window_reporting +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x1af17b41 btmrvl_enable_hs +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x2515a08f btmrvl_send_hscfg_cmd +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x2cdbaf28 btmrvl_remove_card +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x2d7530a6 btmrvl_add_card +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x478e7b2c btmrvl_register_hdev +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x523cd27e btmrvl_enable_ps +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xb9573ffa btmrvl_send_module_cfg_cmd +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xbccb7774 btmrvl_check_evtpkt +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xd09b68bb btmrvl_interrupt +EXPORT_SYMBOL_GPL drivers/bluetooth/btrtl 0x30860441 btrtl_setup_realtek +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x061a85a5 clk_rcg_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x06a50e46 clk_branch2_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x072706ba clk_pll_configure_sr_hpm_lp +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x14d48935 clk_enable_regmap +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x23d339a0 clk_regmap_div_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x23ebb8c4 qcom_cc_remove +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x24b79d44 clk_branch_simple_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x2a23ce84 devm_clk_register_regmap +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x3aac27e3 qcom_find_src_index +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x436dd5de clk_branch_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x47307fc0 clk_regmap_mux_closest_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x4d64c163 clk_rcg_lcc_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x50f4765a qcom_cc_probe +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x5f2122b2 clk_pll_vote_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x669bd1fd qcom_find_freq +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x7592d0de clk_pll_configure_sr +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x77c457fa qcom_reset_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x92861df8 clk_is_enabled_regmap +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0xbb22aecf clk_pixel_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0xc03f8663 clk_rcg_bypass_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0xc137d1a2 clk_rcg2_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0xc731002c clk_byte_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0xd52aebc7 qcom_cc_map +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0xd8b002f2 clk_pll_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0xe66071f2 clk_disable_regmap +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0xec923bd6 clk_edp_pixel_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0xecad5ff5 clk_dyn_rcg_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0xf22bebb9 qcom_cc_really_probe +EXPORT_SYMBOL_GPL drivers/cpufreq/arm_big_little 0x3d40dd52 bL_cpufreq_register +EXPORT_SYMBOL_GPL drivers/cpufreq/arm_big_little 0xbf4d3ba3 bL_cpufreq_unregister +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0x0dd22690 dw_dma_remove +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0x331da861 dw_dma_disable +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0x6320eb3d dw_dma_filter +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0x84352030 dw_dma_enable +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0xf461000d dw_dma_probe +EXPORT_SYMBOL_GPL drivers/dma/hsu/hsu_dma 0x0c539e10 hsu_dma_probe +EXPORT_SYMBOL_GPL drivers/dma/hsu/hsu_dma 0x1cd2f2db hsu_dma_remove +EXPORT_SYMBOL_GPL drivers/dma/hsu/hsu_dma 0x579b3eda hsu_dma_irq +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x0c32ff8a edac_pci_alloc_index +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x163eaaa6 edac_device_alloc_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x21da85e1 edac_pci_alloc_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x2c8dd6b8 edac_mem_types +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x2f975391 edac_raw_mc_handle_error +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x30b805b8 edac_pci_del_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x5409627b find_mci_by_dev +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x55d077a9 edac_mc_find_csrow_by_page +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x5f508e3d edac_device_handle_ue +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x60b06115 edac_pci_handle_npe +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x6e2ab372 edac_pci_release_generic_ctl +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x6e3ff83a edac_device_alloc_index +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x7004fc00 edac_pci_handle_pe +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x70dd7519 edac_mc_del_mc +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x714c87f8 edac_pci_add_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x85cfd849 edac_pci_reset_delay_period +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x94bfaaec edac_mc_add_mc_with_groups +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x9827da7b edac_mc_free +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x9d9e3990 edac_pci_free_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xa0c49ab3 edac_mc_handle_error +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xa7a2cbb2 edac_device_del_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xb97941ca edac_device_add_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xc0dcb59e edac_layer_name +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xd6335215 edac_pci_create_generic_ctl +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xd856fc52 edac_device_handle_ce +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xf00d6633 edac_mc_alloc +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xf99a3116 edac_device_free_ctl_info +EXPORT_SYMBOL_GPL drivers/firewire/firewire-core 0xf4ade51f fw_card_release +EXPORT_SYMBOL_GPL drivers/gpio/gpio-max730x 0x1f667b0f __max730x_probe +EXPORT_SYMBOL_GPL drivers/gpio/gpio-max730x 0xce7d7523 __max730x_remove +EXPORT_SYMBOL_GPL drivers/gpu/drm/bridge/dw_hdmi 0x836a46c0 dw_hdmi_unbind +EXPORT_SYMBOL_GPL drivers/gpu/drm/bridge/dw_hdmi 0xec78f648 dw_hdmi_bind +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x0cb3177d drm_gem_cma_prime_vmap +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x3b9ef2c0 drm_gem_cma_prime_vunmap +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x420455fa drm_do_get_edid +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x58523fdd drm_gem_cma_describe +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x77041b90 drm_gem_cma_dumb_map_offset +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x7c74900a drm_class_device_unregister +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x8ea1773d drm_gem_cma_free_object +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x8f4a63e9 drm_gem_cma_prime_import_sg_table +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x8f63b74c drm_display_mode_to_videomode +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xad21f0f1 drm_gem_cma_prime_mmap +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xbf9c3b97 drm_display_mode_from_videomode +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xc52c5d1c drm_gem_cma_dumb_create_internal +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xc8ca62b0 of_get_drm_display_mode +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xd7c24bb4 drm_gem_cma_mmap +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xd9d5ba37 drm_gem_cma_prime_get_sg_table +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xdd21f77c drm_gem_cma_vm_ops +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xe20d7ebd drm_class_device_register +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xf1b7f9f1 drm_gem_cma_dumb_create +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xf8bc260e drm_gem_cma_create +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm_kms_helper 0x00a84b30 drm_fb_cma_get_gem_obj +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm_kms_helper 0x1148b623 drm_fbdev_cma_fini +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm_kms_helper 0x1d5ffebc drm_fbdev_cma_init +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm_kms_helper 0xb2c912af drm_fbdev_cma_hotplug_event +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm_kms_helper 0xb5c225c8 drm_fb_cma_create +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm_kms_helper 0xcc337fd5 drm_fbdev_cma_restore_mode +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm_kms_helper 0xe15682e9 drm_fb_cma_debugfs_show +EXPORT_SYMBOL_GPL drivers/gpu/drm/exynos/exynosdrm 0x1c4ba9b7 exynos_drm_device_subdrv_remove +EXPORT_SYMBOL_GPL drivers/gpu/drm/exynos/exynosdrm 0x34fde839 exynos_drm_subdrv_register +EXPORT_SYMBOL_GPL drivers/gpu/drm/exynos/exynosdrm 0x9086af2b exynos_drm_subdrv_unregister +EXPORT_SYMBOL_GPL drivers/gpu/drm/exynos/exynosdrm 0x9534a3c3 exynos_drm_subdrv_open +EXPORT_SYMBOL_GPL drivers/gpu/drm/exynos/exynosdrm 0xdc79ef6c exynos_drm_device_subdrv_probe +EXPORT_SYMBOL_GPL drivers/gpu/drm/exynos/exynosdrm 0xeabe99e3 exynos_drm_subdrv_close +EXPORT_SYMBOL_GPL drivers/gpu/drm/imx/imxdrm 0x134bdc11 imx_drm_connector_destroy +EXPORT_SYMBOL_GPL drivers/gpu/drm/imx/imxdrm 0x1cfe024a imx_drm_crtc_vblank_get +EXPORT_SYMBOL_GPL drivers/gpu/drm/imx/imxdrm 0x34f69d3d imx_drm_encoder_parse_of +EXPORT_SYMBOL_GPL drivers/gpu/drm/imx/imxdrm 0x37707c0a imx_drm_crtc_id +EXPORT_SYMBOL_GPL drivers/gpu/drm/imx/imxdrm 0x3ce5aa02 imx_drm_set_bus_format +EXPORT_SYMBOL_GPL drivers/gpu/drm/imx/imxdrm 0x419b08de imx_drm_handle_vblank +EXPORT_SYMBOL_GPL drivers/gpu/drm/imx/imxdrm 0x530dd6c4 imx_drm_set_bus_format_pins +EXPORT_SYMBOL_GPL drivers/gpu/drm/imx/imxdrm 0x5c8b38c3 imx_drm_encoder_get_mux_id +EXPORT_SYMBOL_GPL drivers/gpu/drm/imx/imxdrm 0x5f056ff0 imx_drm_crtc_vblank_put +EXPORT_SYMBOL_GPL drivers/gpu/drm/imx/imxdrm 0x6e88f401 imx_drm_encoder_destroy +EXPORT_SYMBOL_GPL drivers/gpu/drm/imx/imxdrm 0xd652b5a4 imx_drm_remove_crtc +EXPORT_SYMBOL_GPL drivers/gpu/drm/imx/imxdrm 0xe1ec9fb2 imx_drm_add_crtc +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0x49d46613 ttm_dma_unpopulate +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0x6adf436b ttm_prime_fd_to_handle +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0xb2d20053 ttm_dma_populate +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0xce36343e ttm_prime_handle_to_fd +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0xff557a0a ttm_dma_page_alloc_debugfs +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x04f7075a ipu_csi_set_mipi_datatype +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x0728116a ipu_csi_disable +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x082ff253 ipu_cpmem_set_yuv_planar +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 0x111f21ec ipu_dp_disable +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x114f0eed 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 0x11d8f100 ipu_stride_to_bytes +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 0x14fb1d5a ipu_idmac_get +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x15304ed2 ipu_idmac_channel_busy +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x15ec2ba5 ipu_di_put +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x199bd5c8 ipu_dp_disable_channel +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x1ba497eb ipu_pixelformat_to_colorspace +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 0x216c33e0 ipu_di_get +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 0x2743d42b ipu_cpmem_set_stride +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 0x2f9751b4 ipu_degrees_to_rot_mode +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x30b6999c ipu_rot_mode_to_degrees +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 0x349c57c6 ipu_idmac_put +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x36468878 ipu_idmac_clear_buffer +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x38334552 ipu_cpmem_set_format_rgb +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x3a66a1e6 ipu_cpmem_set_block_mode +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x3afbb44e ipu_smfc_set_watermark +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 0x3f964d16 ipu_ic_task_idma_init +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x416e9678 ipu_idmac_enable_channel +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x4917f47a ipu_ic_dump +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x4c179b49 ipu_dp_put +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x4ece82e7 ipu_idmac_channel_irq +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x4fd7eeb1 ipu_ic_get +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x4feaf7b1 ipu_idmac_wait_busy +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x51297f7c ipu_dc_disable +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 0x541a62ec ipu_cpmem_set_rotation +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x5630ca91 ipu_cpmem_set_resolution +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x58b520c9 ipu_dc_get +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x59ad7ca5 ipu_cpmem_interlaced_scan +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x5f87dc97 ipu_dp_enable +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x5fa93597 ipu_wait_interrupt +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x5fc0e812 ipu_idmac_select_buffer +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 0x664c9f8b ipu_set_csi_src_mux +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x6a2a551a ipu_srm_dp_sync_update +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x6ee29206 ipu_cpmem_set_burstsize +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x7068e939 ipu_dc_put +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x7121bd07 ipu_di_init_sync_panel +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x7545c770 ipu_dmfc_get +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x76302d14 ipu_csi_set_skip_smfc +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x77716320 ipu_map_irq +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x78b40b0a ipu_set_ic_src_mux +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x80095a93 ipu_idmac_lock_enable +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x82e16faa ipu_cpmem_set_yuv_planar_full +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 0x9058e289 ipu_smfc_put +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x951a09d5 ipu_csi_enable +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x98a1c56f ipu_smfc_get +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x99a0ef07 ipu_drm_fourcc_to_colorspace +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x9ae262d3 ipu_cpmem_set_image +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x9c335d85 ipu_pixelformat_is_planar +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x9f00b54e ipu_module_enable +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 0xa259af05 ipu_idmac_buffer_is_ready +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 0xa579616b ipu_di_adjust_videomode +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 0xa96882d8 ipu_ic_disable +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xab42f622 ipu_idmac_enable_watermark +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xb228bf1e ipu_dp_set_global_alpha +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xb843a210 ipu_cpmem_set_fmt +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xb94ca95a ipu_dmfc_init_channel +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xc2d75aef ipu_csi_get +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xc3811383 ipu_cpmem_set_high_priority +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xc3a1ee6e ipu_cpmem_set_buffer +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xc3c2cdb0 ipu_smfc_disable +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 0xc848c5d7 ipu_dmfc_free_bandwidth +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xc88d89a1 ipu_mbus_code_to_colorspace +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xc97e7a0f ipu_di_disable +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xcd7c6998 ipu_ic_task_init +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xcd8f4d9c ipu_module_disable +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xd064a453 ipu_ic_task_graphics_init +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xd48dd511 ipu_dp_get +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xd5055dd9 ipu_dmfc_alloc_bandwidth +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xd7124877 ipu_cpmem_set_yuv_interleaved +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xda5f9fc4 ipu_cpmem_set_axi_id +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xde40a127 ipu_dc_enable +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 0xe3b86336 ipu_csi_init_interface +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 0xe70113d9 ipu_idmac_set_double_buffer +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xebb0c1ea ipu_cpmem_zero +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xef51aca0 ipu_idmac_disable_channel +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xf1440dc1 ipu_ic_put +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xf300276b ipu_idmac_get_current_buffer +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xf61f71a3 ipu_cpmem_dump +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xf69d6cb6 ipu_csi_set_test_generator +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xf7d99d69 ipu_dc_init_sync +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xf9ed222e ipu_dp_set_window_pos +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xfa777a74 ipu_cpmem_set_format_passthrough +EXPORT_SYMBOL_GPL drivers/hid/hid 0x05495392 hid_debug +EXPORT_SYMBOL_GPL drivers/hid/hid 0x0f6f6d1a hidraw_report_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0x16fcc43c hid_set_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0x20b730e2 hidraw_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x27fd57cd hidinput_calc_abs_res +EXPORT_SYMBOL_GPL drivers/hid/hid 0x2e8a624c hidinput_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x38ed4217 hid_alloc_report_buf +EXPORT_SYMBOL_GPL drivers/hid/hid 0x3bec5016 hid_allocate_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0x3dc1b2df hid_ignore +EXPORT_SYMBOL_GPL drivers/hid/hid 0x3eb0f1c2 hid_dump_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0x43101255 hid_add_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0x47e23523 __hid_register_driver +EXPORT_SYMBOL_GPL drivers/hid/hid 0x4906a967 hid_snto32 +EXPORT_SYMBOL_GPL drivers/hid/hid 0x4a938b51 hid_unregister_driver +EXPORT_SYMBOL_GPL drivers/hid/hid 0x4d240ac8 hid_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x5c0cbc40 hidinput_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x5c42332a hidinput_find_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0x5ef709aa hid_validate_values +EXPORT_SYMBOL_GPL drivers/hid/hid 0x672d1a93 hid_open_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x788debd7 hid_dump_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0x7b23a0e1 hid_input_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x7c1abdfe hid_report_raw_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0x899fad9a __hid_request +EXPORT_SYMBOL_GPL drivers/hid/hid 0x8b27ca8e hid_register_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x979e7a21 hid_destroy_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0xa9318df5 hidraw_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0xaa9f2f0f hid_parse_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0xb4fb5fa2 hid_resolv_usage +EXPORT_SYMBOL_GPL drivers/hid/hid 0xbaf2ed6e hidinput_count_leds +EXPORT_SYMBOL_GPL drivers/hid/hid 0xc5879a01 hidinput_report_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0xcc729b70 hid_dump_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0xd1c9a075 hidinput_get_led_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0xd8e61f30 hid_output_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0xe090732c hid_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0xe2a86ad2 hid_field_extract +EXPORT_SYMBOL_GPL drivers/hid/hid 0xe61d34cc hid_dump_input +EXPORT_SYMBOL_GPL drivers/hid/hid 0xe6fc5b31 hid_check_keys_pressed +EXPORT_SYMBOL_GPL drivers/hid/hid 0xe7214c8e hid_debug_event +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat 0x2f622ea1 roccat_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat 0x4899d462 roccat_connect +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat 0x8c4181ec roccat_report_event +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x3ce17b45 roccat_common2_sysfs_read +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x5a64d8a9 roccat_common2_send +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0xb9bfb8c0 roccat_common2_receive +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0xd1a04722 roccat_common2_sysfs_write +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0xdb8ce917 roccat_common2_send_with_status +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0xfdb40960 roccat_common2_device_init_struct +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x79ea474e sensor_hub_input_attr_get_raw_value +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x88a03cef sensor_hub_remove_callback +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x97befe2b sensor_hub_set_feature +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x9c85dfe7 sensor_hub_get_feature +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0xa59bca34 sensor_hub_device_close +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0xbbb5870c sensor_hub_register_callback +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0xd8650792 hid_sensor_get_usage_index +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0xe28d6a3c sensor_hub_device_open +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0xf0b58c5e sensor_hub_input_get_attribute_info +EXPORT_SYMBOL_GPL drivers/hid/usbhid/usbhid 0x01fd453e usbhid_lookup_quirk +EXPORT_SYMBOL_GPL drivers/hid/usbhid/usbhid 0x4732bbab hiddev_hid_event +EXPORT_SYMBOL_GPL drivers/hsi/clients/ssi_protocol 0x0d9528ce ssip_slave_start_tx +EXPORT_SYMBOL_GPL drivers/hsi/clients/ssi_protocol 0x1fc908d5 ssip_reset_event +EXPORT_SYMBOL_GPL drivers/hsi/clients/ssi_protocol 0x71173229 ssip_slave_stop_tx +EXPORT_SYMBOL_GPL drivers/hsi/clients/ssi_protocol 0x9846f915 ssip_slave_get_master +EXPORT_SYMBOL_GPL drivers/hsi/clients/ssi_protocol 0xc3672d7c ssip_slave_running +EXPORT_SYMBOL_GPL drivers/hsi/controllers/omap_ssi 0x60925cbe ssi_waketest +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x06913911 hsi_register_port_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x17dad019 hsi_remove_client +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x1a7efa04 hsi_release_port +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x1d0f965c hsi_put_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x1db22a48 hsi_async +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x275f8126 hsi_alloc_msg +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x38a128e0 hsi_alloc_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x482c53b1 hsi_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x56ec4408 hsi_get_channel_id_by_name +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x96cc2097 hsi_claim_port +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x9cc05ef7 hsi_port_unregister_clients +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xac46fa40 hsi_unregister_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xbd7d5238 hsi_free_msg +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xbe4c84c6 hsi_add_clients_from_dt +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xc59eedfc hsi_register_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xc81d1dbe hsi_register_client_driver +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xef18710c hsi_unregister_port_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xf36277cf hsi_new_client +EXPORT_SYMBOL_GPL drivers/hwmon/adt7x10 0x9af7210c adt7x10_remove +EXPORT_SYMBOL_GPL drivers/hwmon/adt7x10 0xc5663dc9 adt7x10_dev_pm_ops +EXPORT_SYMBOL_GPL drivers/hwmon/adt7x10 0xf1b36271 adt7x10_probe +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x1133f137 pmbus_write_byte_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x1eb502ae pmbus_read_word_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x29f17fc6 pmbus_write_byte +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x3817b2cc pmbus_read_byte_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x51b089e0 pmbus_update_byte_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x528f47a7 pmbus_do_remove +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x8271fa39 pmbus_clear_faults +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x8866c083 pmbus_clear_cache +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x967a7090 pmbus_get_driver_info +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x9ae20a6b pmbus_write_word_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x9b30b1ba pmbus_set_page +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xb7f21324 pmbus_check_byte_register +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xdd3eb58d pmbus_regulator_ops +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xe114868f pmbus_do_probe +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xff31274c pmbus_check_word_register +EXPORT_SYMBOL_GPL drivers/hwspinlock/hwspinlock_core 0x2ab7ab8e __hwspin_trylock +EXPORT_SYMBOL_GPL drivers/hwspinlock/hwspinlock_core 0x734b69b7 hwspin_lock_request +EXPORT_SYMBOL_GPL drivers/hwspinlock/hwspinlock_core 0x8a0aa662 __hwspin_lock_timeout +EXPORT_SYMBOL_GPL drivers/hwspinlock/hwspinlock_core 0x90b16b43 hwspin_lock_register +EXPORT_SYMBOL_GPL drivers/hwspinlock/hwspinlock_core 0xa7288692 hwspin_lock_get_id +EXPORT_SYMBOL_GPL drivers/hwspinlock/hwspinlock_core 0xbb2448e6 of_hwspin_lock_get_id +EXPORT_SYMBOL_GPL drivers/hwspinlock/hwspinlock_core 0xc3efa447 __hwspin_unlock +EXPORT_SYMBOL_GPL drivers/hwspinlock/hwspinlock_core 0xc6ac6f6c hwspin_lock_request_specific +EXPORT_SYMBOL_GPL drivers/hwspinlock/hwspinlock_core 0xf1d6cacc hwspin_lock_unregister +EXPORT_SYMBOL_GPL drivers/hwspinlock/hwspinlock_core 0xf823fd78 hwspin_lock_free +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x4fb150f4 i2c_dw_func +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x5bb1170b i2c_dw_isr +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x6301544c i2c_dw_read_comp_param +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x71689666 i2c_dw_disable +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x809a3388 i2c_dw_is_enabled +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x844f5842 i2c_dw_disable_int +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x98aef44a i2c_dw_init +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0xd800c3ac i2c_dw_clear_int +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0xddfce14c i2c_dw_enable +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0xdfcf5714 i2c_dw_xfer +EXPORT_SYMBOL_GPL drivers/i2c/i2c-mux 0x25b90143 i2c_del_mux_adapter +EXPORT_SYMBOL_GPL drivers/i2c/i2c-mux 0xc47ccfcd i2c_add_mux_adapter +EXPORT_SYMBOL_GPL drivers/i2c/i2c-smbus 0x217e55ce i2c_setup_smbus_alert +EXPORT_SYMBOL_GPL drivers/i2c/i2c-smbus 0x8013003e i2c_handle_smbus_alert +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x05d10cf2 ad_sd_set_comm +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x482abdd1 ad_sd_write_reg +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x56e2e2b7 ad_sd_init +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x607c92d7 ad_sd_setup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x62563778 ad_sd_cleanup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x7e6fb910 ad_sigma_delta_single_conversion +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x9e13f848 ad_sd_read_reg +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xbb45d699 ad_sd_validate_trigger +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xddb226f8 ad_sd_calibrate_all +EXPORT_SYMBOL_GPL drivers/iio/adc/twl4030-madc 0x4362dc66 twl4030_get_madc_conversion +EXPORT_SYMBOL_GPL drivers/iio/adc/twl4030-madc 0xb1be4a75 twl4030_madc_conversion +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x101e4622 adis_init +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x2f5695ac adis_update_scan_mode +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x52e846db adis_reset +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x5c75d895 adis_read_reg +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x80eb2883 adis_probe_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x87db4dc7 adis_cleanup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xb174e0e3 adis_check_status +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xc70d9b54 adis_initial_startup +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xeeb5e11e adis_remove_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xf0cabcc7 adis_setup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xf3188285 adis_single_conversion +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xf4c9dc0c adis_write_reg +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x043e773b iio_channel_get_all +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x08602aad devm_iio_device_alloc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x19911b1a iio_map_array_unregister +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x20b66cd6 iio_channel_get_all_cb +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x23748608 iio_convert_raw_to_processed +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x25d8d7c8 iio_dealloc_pollfunc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x267c0508 iio_channel_release_all_cb +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x26f6b499 iio_str_to_fixpoint +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x2a1fab3c iio_channel_stop_all_cb +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x3c24b05c iio_buffer_put +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x45bd3348 iio_enum_read +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x48fe01ab iio_update_demux +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x49400c87 devm_iio_device_unregister +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x4b36f6c1 iio_read_channel_average_raw +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x5746aa05 iio_push_to_buffers +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x60e77f6b devm_iio_trigger_free +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x63acf53b iio_buffer_get +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x6aea2012 iio_enum_available_read +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x7a711aef iio_channel_start_all_cb +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x863d189a iio_read_channel_processed +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x88803b21 iio_read_channel_scale +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x8f58a5de devm_iio_trigger_alloc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x92675df3 devm_iio_device_register +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x931a5a36 iio_channel_release_all +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xb3507cb9 iio_read_channel_raw +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xbcd18176 devm_iio_device_free +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xbd12c201 iio_channel_cb_get_channels +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xc158b970 iio_write_channel_raw +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xc38469b2 iio_get_channel_type +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xc3cfb93f iio_alloc_pollfunc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xc46b59ec iio_enum_write +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xd0844b9b iio_map_array_register +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xd32d1190 iio_validate_scan_mask_onehot +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xd6d6d465 iio_update_buffers +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xed3819d9 iio_channel_release +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xf27821b8 iio_scan_mask_query +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xfc79cb29 iio_channel_get +EXPORT_SYMBOL_GPL drivers/infiniband/core/ib_core 0xdbd019c4 ib_wq +EXPORT_SYMBOL_GPL drivers/input/ff-memless 0x7fa0d41c input_ff_create_memless +EXPORT_SYMBOL_GPL drivers/input/matrix-keymap 0x8d686bc1 matrix_keypad_parse_of_params +EXPORT_SYMBOL_GPL drivers/input/misc/adxl34x 0x1665f1ba 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/touchscreen/cyttsp4_core 0x29bb0607 cyttsp4_remove +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp4_core 0x98a54227 cyttsp4_pm_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp4_core 0x9d9b7f1d cyttsp4_probe +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_core 0x6fe3b774 cyttsp_remove +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_core 0x9e1b25ae cyttsp_probe +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_core 0xec70444f cyttsp_pm_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_i2c_common 0x77bad963 cyttsp_i2c_read_block_data +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_i2c_common 0xb108ab44 cyttsp_i2c_write_block_data +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x0289e95e wm97xx_reg_write +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x06e71a05 wm97xx_config_gpio +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x25dbcd29 wm97xx_unregister_mach_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x3fa35517 wm97xx_get_gpio +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x6fa09af5 wm9705_codec +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x721e87af wm9712_codec +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x9539e962 wm97xx_set_suspend_mode +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xa6028d83 wm97xx_set_gpio +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xbeb48731 wm9713_codec +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xc2251ede wm97xx_reg_read +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xdf2e98ff wm97xx_read_aux_adc +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xef29d0b4 wm97xx_register_mach_ops +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x22faf890 ipack_device_init +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x2f3611f2 ipack_driver_unregister +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x30fa5e30 ipack_bus_unregister +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x77750e40 ipack_get_device +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x91def78b ipack_driver_register +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0xaa805e2c ipack_device_del +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0xc52c1e17 ipack_put_device +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0xdcb60c49 ipack_bus_register +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0xe2d990ca ipack_device_add +EXPORT_SYMBOL_GPL drivers/isdn/capi/kernelcapi 0x23359aff unregister_capictr_notifier +EXPORT_SYMBOL_GPL drivers/isdn/capi/kernelcapi 0xce1414b2 register_capictr_notifier +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x3cba24f3 gigaset_if_receive +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x3efc4a0d gigaset_blockdriver +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x454aa44f gigaset_debuglevel +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x6f703eef gigaset_start +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x7709fb15 gigaset_freedriver +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x787445f1 gigaset_m10x_input +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x7d0dcff8 gigaset_isdn_rcv_err +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x8c84aed8 gigaset_fill_inbuf +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x8eff32df gigaset_dbg_buffer +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xa5f18bcb gigaset_initcs +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xa64b80bb gigaset_handle_modem_response +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xbc1b9899 gigaset_add_event +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xd513d96b gigaset_skb_sent +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xd56c6824 gigaset_shutdown +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xd68d8112 gigaset_m10x_send_skb +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xd89e67c7 gigaset_skb_rcvd +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xd90daa3d gigaset_stop +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xdc2a41d4 gigaset_freecs +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xdf128dda gigaset_initdriver +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0x03ae1f4b led_set_flash_timeout +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0x2fab8f79 led_classdev_flash_unregister +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0x56dc5bf0 led_update_flash_brightness +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0x68612d34 led_classdev_flash_register +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0xea4bf7fe led_get_flash_fault +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0xee1282b2 led_set_flash_brightness +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/mcb/mcb 0x01552df1 mcb_bus_add_devices +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x07f84456 mcb_bus_get +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x17eef7b5 mcb_device_register +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x46ab9968 mcb_free_dev +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x57a6d9b6 mcb_alloc_bus +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x5bfe10d9 __mcb_register_driver +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x63ad1b01 mcb_release_bus +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x77aa4e88 mcb_unregister_driver +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x7807ff4e mcb_alloc_dev +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0xb9930939 mcb_request_mem +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0xcc67afbf mcb_bus_put +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0xd7dadfb0 chameleon_parse_cells +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0xee8407a4 mcb_get_irq +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0xf9cca8f3 mcb_release_mem +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x038d4400 __tracepoint_bcache_btree_write +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x1bf19a28 __tracepoint_bcache_gc_copy +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x20b0dcba __tracepoint_bcache_read_retry +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x23a39c93 __tracepoint_bcache_read +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x2db90065 __tracepoint_bcache_bypass_congested +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x32a854e2 __tracepoint_bcache_btree_node_alloc_fail +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x33685aee __tracepoint_bcache_journal_entry_full +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x386e0aec __tracepoint_bcache_writeback_collision +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x43f797c7 __tracepoint_bcache_btree_node_free +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x56d844d9 __tracepoint_bcache_write +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x65c69d18 __tracepoint_bcache_btree_node_compact +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x6f318137 __tracepoint_bcache_btree_node_split +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x73856a24 __tracepoint_bcache_btree_read +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x7c7a26dc __tracepoint_bcache_cache_insert +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x824f349d __tracepoint_bcache_btree_gc_coalesce +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x8531a000 __tracepoint_bcache_btree_node_alloc +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x86192e50 __tracepoint_bcache_journal_write +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x87a79df0 __tracepoint_bcache_journal_full +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x8f336079 __tracepoint_bcache_bypass_sequential +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x90293fb5 __tracepoint_bcache_request_start +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x903dcb57 __tracepoint_bcache_writeback +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x94c4008d __tracepoint_bcache_alloc_fail +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x9aacde96 __tracepoint_bcache_btree_set_root +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x9d01a77b __tracepoint_bcache_invalidate +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xb0f4bf93 __tracepoint_bcache_btree_insert_key +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xd2be2929 __tracepoint_bcache_request_end +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xd9cf1106 __tracepoint_bcache_journal_replay_key +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xdb00ad98 __tracepoint_bcache_btree_cache_cannibalize +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xe7e528bd __tracepoint_bcache_gc_end +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xf2037566 __tracepoint_bcache_gc_start +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xfd1d6dbc __tracepoint_bcache_gc_copy_collision +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x17dd39d6 dm_deferred_set_create +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x29f4421e dm_cell_error +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x2eb01e04 dm_deferred_set_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x381c994a dm_cell_promote_or_release +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x422419c3 dm_cell_release_no_holder +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x47e37da1 dm_cell_visit_release +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x49f461cf dm_get_cell +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x6373eaae dm_cell_release +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 0x8e320f54 dm_bio_prison_alloc_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 0xbcdd83ce dm_bio_detain +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xca2e3a88 dm_deferred_entry_inc +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xda4841c0 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 0x22163b69 dm_bufio_release_move +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x3909d3a8 dm_bufio_prefetch +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x392b0ead dm_bufio_client_create +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x594952bd dm_bufio_read +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x62a23587 dm_bufio_get_device_size +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x6d3f57bd dm_bufio_get_client +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 0x9b2b253a dm_bufio_get +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xa82b2066 dm_bufio_write_dirty_buffers +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xc9a3422d dm_bufio_write_dirty_buffers_async +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xd4bddf5c dm_bufio_issue_flush +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xdc69e37a dm_bufio_get_block_number +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xe004ee92 dm_bufio_new +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-cache 0x0a07559d dm_cache_policy_unregister +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x277b3392 dm_cache_policy_get_name +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x3a19b6b8 dm_cache_policy_get_version +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x69e58494 dm_cache_policy_register +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x7661f810 dm_cache_policy_create +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x83290d6c dm_cache_policy_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x91b08f6e dm_cache_policy_get_hint_size +EXPORT_SYMBOL_GPL drivers/md/dm-multipath 0x53999356 dm_unregister_path_selector +EXPORT_SYMBOL_GPL drivers/md/dm-multipath 0xfdb980e7 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 0x09472122 dm_rh_dec +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x17563f19 dm_rh_mark_nosync +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x178b7352 dm_rh_bio_to_region +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 0x716bf45e dm_region_hash_create +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 0x8f3a4072 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 0xa8813ad6 dm_rh_region_to_sector +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xbe38a431 dm_rh_recovery_prepare +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xc66ce277 dm_rh_get_region_size +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xcab63c3d dm_rh_get_state +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xcc87c38f 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 0xde45e321 dm_rh_dirty_log +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xf37a3cfe dm_rh_get_region_key +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 0x01445176 dm_btree_find_highest_key +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x0604db1b dm_btree_remove_leaves +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x11eab9fe dm_bm_read_lock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x150c85ce dm_tm_open_with_sm +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x1e3f728d dm_block_data +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x2025e954 dm_array_info_init +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x24fa6664 dm_bitset_set_bit +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x2c112836 dm_block_location +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x2e730a21 dm_bm_checksum +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 0x32b5f546 dm_array_empty +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x33c03da6 dm_sm_disk_open +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 0x3ad0f55b dm_bm_flush +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x40f7bd91 dm_tm_inc +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x4360913e dm_btree_find_lowest_key +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x5aed1dd7 dm_bitset_flush +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x5e6aea80 dm_btree_walk +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x619701dc dm_sm_disk_create +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x62c1b9ee dm_array_walk +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 0x72289260 dm_block_manager_destroy +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x7657e859 dm_bitset_clear_bit +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 0x80c89b3d dm_tm_unlock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x832bf228 dm_array_del +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x858c8d94 dm_array_set_value +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x89f1e1cc dm_btree_insert_notify +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 0x966a8838 dm_btree_lookup +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x9b4b5b29 dm_bm_write_lock +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 0xa2507774 dm_tm_shadow_block +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xa87c5b4d dm_array_resize +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xab96bd2d dm_bitset_test_bit +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xaee02382 dm_btree_empty +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xb7bad799 dm_bm_unlock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xb9a6ecf8 dm_tm_dec +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xba47c03a dm_bitset_del +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xbcfdc290 dm_tm_read_lock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xbd50ebbb dm_btree_del +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xbe0497aa dm_tm_create_with_sm +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xc9869214 dm_block_manager_create +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xca40abd5 dm_btree_insert +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xd041d62b dm_array_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 0xead1e727 dm_bm_write_lock_zero +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xed1e1f96 dm_btree_remove +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xed58cfa1 dm_bitset_empty +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xf12ec3cd dm_disk_bitset_init +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xffff2ac3 dm_bitset_resize +EXPORT_SYMBOL_GPL drivers/media/common/b2c2/b2c2-flexcop 0x66c0289a b2c2_flexcop_debug +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x0be52bdc saa7146_wait_for_debi_done +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x357fa34f saa7146_pgtable_build_single +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x94269440 saa7146_setgpio +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xb161a7ff saa7146_unregister_extension +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xc5f21852 saa7146_pgtable_alloc +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xcd94d11e saa7146_i2c_adapter_prepare +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xd6d1c7ce saa7146_register_extension +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xddc25b73 saa7146_pgtable_free +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xdff882a7 saa7146_vmalloc_build_pgtable +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xe3cd9b5c saa7146_debug +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xffff6f6d saa7146_vfree_destroy_pgtable +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x2037a0c5 saa7146_unregister_device +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x38eaaed9 saa7146_vv_init +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x3a7637db saa7146_stop_preview +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x5e35894d saa7146_register_device +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0xb364b972 saa7146_vv_release +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0xb671ba81 saa7146_start_preview +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0xf86ef97b saa7146_set_hps_source_and_sync +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x13f53501 sms_board_power +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x1f37588e smscore_get_board_id +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x21e36bf2 smscore_registry_getmode +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x23b0064c smscore_getbuffer +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x289fdff2 smscore_unregister_device +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x37d91069 smsendian_handle_tx_message +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x3d6250d3 sms_board_event +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x45284ae9 smsendian_handle_rx_message +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x5af93581 smscore_register_client +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x63222b29 smsclient_sendrequest +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x6eeb4da9 smscore_get_device_mode +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 0x829fd46f sms_board_lna_control +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x844539ae sms_get_board +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x8b6320bc smscore_putbuffer +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x925de021 sms_board_led_feedback +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x9c2225ed smscore_translate_msg +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x9d87ede1 sms_board_setup +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x9fa95d2f smscore_start_device +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xabf20bd3 smscore_unregister_hotplug +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xbb30511d smscore_onresponse +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xbbdb5c42 smscore_unregister_client +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xc4e16d99 smscore_register_device +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xc55614da smscore_register_hotplug +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xe593c60d smscore_set_board_id +EXPORT_SYMBOL_GPL drivers/media/dvb-frontends/as102_fe 0xb79a2ef9 as102_attach +EXPORT_SYMBOL_GPL drivers/media/dvb-frontends/cx24117 0xbbe71ebb cx24117_attach +EXPORT_SYMBOL_GPL drivers/media/dvb-frontends/tda18271c2dd 0xe82c38d8 tda18271c2dd_attach +EXPORT_SYMBOL_GPL drivers/media/media 0x0b509e32 media_entity_pipeline_start +EXPORT_SYMBOL_GPL drivers/media/media 0x2d5ff1c3 media_device_unregister +EXPORT_SYMBOL_GPL drivers/media/media 0x31d92bba __media_device_register +EXPORT_SYMBOL_GPL drivers/media/media 0x3ac3056f media_entity_setup_link +EXPORT_SYMBOL_GPL drivers/media/media 0x4fc55d7f media_entity_graph_walk_start +EXPORT_SYMBOL_GPL drivers/media/media 0x542d5e09 media_entity_get +EXPORT_SYMBOL_GPL drivers/media/media 0x5e149e81 media_entity_pipeline_stop +EXPORT_SYMBOL_GPL drivers/media/media 0x6e6567bb media_device_unregister_entity +EXPORT_SYMBOL_GPL drivers/media/media 0x7eefb079 media_entity_create_link +EXPORT_SYMBOL_GPL drivers/media/media 0x887863f6 media_entity_find_link +EXPORT_SYMBOL_GPL drivers/media/media 0x88c4a12c media_entity_remote_pad +EXPORT_SYMBOL_GPL drivers/media/media 0x9d3374a0 media_entity_put +EXPORT_SYMBOL_GPL drivers/media/media 0xa775f20f media_entity_graph_walk_next +EXPORT_SYMBOL_GPL drivers/media/media 0xa9eb9bae media_entity_init +EXPORT_SYMBOL_GPL drivers/media/media 0xb1d196fc media_entity_cleanup +EXPORT_SYMBOL_GPL drivers/media/media 0xd3157808 media_device_register_entity +EXPORT_SYMBOL_GPL drivers/media/media 0xe73af363 media_entity_remove_links +EXPORT_SYMBOL_GPL drivers/media/media 0xee65e101 __media_entity_remove_links +EXPORT_SYMBOL_GPL drivers/media/pci/cx88/cx88xx 0xbdf4f675 cx88_setup_xc3028 +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x089cf146 mantis_ca_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x10a6035f mantis_get_mac +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x2288786f mantis_ca_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x32621d0c mantis_pci_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x33f76951 mantis_dma_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x39ece72a mantis_uart_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x4071cad2 mantis_uart_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x4e286c87 mantis_dma_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x95421e26 mantis_dvb_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x9bd929c0 mantis_i2c_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xa1d09256 mantis_frontend_soft_reset +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xb2238052 mantis_input_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xc47ba3fa mantis_input_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xd6b3235c mantis_pci_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xdc34f8e4 mantis_stream_control +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xe6062c16 mantis_i2c_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xe89d1bf0 mantis_dvb_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xea0f3504 mantis_gpio_set_bits +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xf0753bb9 mantis_frontend_power +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x08002093 saa7134_ts_qops +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x0f57d143 saa7134_ts_start_streaming +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x197258a5 saa7134_enum_input +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x1d845431 saa7134_g_tuner +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x2c1a3ade saa7134_ts_buffer_init +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x379a873f saa7134_ts_queue_setup +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x522b8010 saa7134_ts_stop_streaming +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x57381618 saa7134_g_input +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x59d38ec7 saa7134_s_std +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x646a154a saa7134_s_input +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x6847371b saa7134_vb2_buffer_queue +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x763af85e saa7134_g_std +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x8683d32c saa7134_s_tuner +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x869bdc55 saa7134_stop_streaming +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x99841f35 saa7134_g_frequency +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xa865fa54 saa7134_querycap +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xcb7ece17 saa7134_s_frequency +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xd7b16af9 saa7134_querystd +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xfe4dcbb1 saa7134_ts_buffer_prepare +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x25e7c5e7 ttpci_budget_debiwrite +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x38af6703 ttpci_budget_init +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x7948c222 budget_debug +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x7ce2ffa6 ttpci_budget_irq10_handler +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0xa43518be ttpci_budget_deinit +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0xcabaf526 ttpci_budget_debiread +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0xcf814818 ttpci_budget_init_hooks +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0xf83bae45 ttpci_budget_set_video_port +EXPORT_SYMBOL_GPL drivers/media/platform/omap/omap-vout 0x085d8e48 omap_vout_try_window +EXPORT_SYMBOL_GPL drivers/media/platform/omap/omap-vout 0x1da5563e 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 0x6db65fc8 omap_vout_new_format +EXPORT_SYMBOL_GPL drivers/media/platform/omap/omap-vout 0xc1644e97 omap_vout_new_crop +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0x0b2585ce xvip_get_format_by_fourcc +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0x1fc2c8d0 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 0x490bd11c xvip_get_format_by_code +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0x66a3c7f6 xvip_init_resources +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0x90cd6f34 xvip_cleanup_resources +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0x9c330366 xvip_of_get_format +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0xba6d2284 xvip_clr_and_set +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0xbaef8c71 xvip_enum_frame_size +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0xd0ac55e3 xvip_clr_or_set +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-vtc 0x3c16a6b1 xvtc_generator_stop +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-vtc 0x46602111 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 0x6f686c30 radio_tea5777_exit +EXPORT_SYMBOL_GPL drivers/media/radio/shark2 0x9c3b43f1 radio_tea5777_init +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x0bfe7e82 rc_register_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x1a857ebe rc_allocate_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x2d013fe7 rc_repeat +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x3f39ecd3 ir_raw_event_set_idle +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x553efb91 rc_core_debug +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x6ecb6d31 rc_keyup +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x74a50a0d ir_raw_event_store +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x76007673 rc_open +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x94b2721f rc_map_get +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x9e432da8 rc_map_unregister +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x9f14049f ir_raw_event_handle +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xa7b7f892 ir_raw_event_store_with_filter +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xb7dfd6af rc_map_register +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xba6e4d7f rc_keydown +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xc0b2859a rc_g_keycode_from_table +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xc19e0f9f rc_unregister_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xc551ff6d rc_free_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xc6e460cc rc_close +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xcdd4e474 ir_raw_event_store_edge +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xeb5384f9 rc_keydown_notimeout +EXPORT_SYMBOL_GPL drivers/media/tuners/mt2063 0x951791d6 mt2063_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/mt20xx 0x05c19b97 microtune_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/mxl5007t 0x012958bb mxl5007t_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/r820t 0x7495b236 r820t_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda18271 0x37532f60 tda18271_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda827x 0xe560ce73 tda827x_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda8290 0x0cb5fd39 tda829x_probe +EXPORT_SYMBOL_GPL drivers/media/tuners/tda8290 0x88428b30 tda829x_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda9887 0x3d3c0331 tda9887_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5761 0x651dc8cc tea5761_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5761 0xc36acbb4 tea5761_autodetection +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5767 0x205abb3e tea5767_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5767 0x2ba6aace tea5767_autodetection +EXPORT_SYMBOL_GPL drivers/media/tuners/tuner-simple 0x936edc4b simple_tuner_attach +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x003c6008 cx231xx_enable656 +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x017ea7c7 cx231xx_tuner_callback +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x264d23de cx231xx_unmute_audio +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x267957c7 cx231xx_set_mode +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x2c3c6b6b cx231xx_init_bulk +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x327fbcf6 cx231xx_get_i2c_adap +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x34a5e2f3 cx231xx_capture_start +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x3dfabaf0 cx231xx_set_alt_setting +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x44137e83 cx231xx_init_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x4d33dd2b cx231xx_dev_init +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x57b1aeeb is_fw_load +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x5cc88b84 cx231xx_init_vbi_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x7ea0ecc5 cx231xx_demod_reset +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x9b0f5d6d cx231xx_dev_uninit +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xa03d53dc cx231xx_enable_i2c_port_3 +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xa14c4a38 cx231xx_disable656 +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xabf57339 cx231xx_uninit_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xc24b26c6 cx231xx_send_usb_command +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xd41e79d4 cx231xx_send_gpio_cmd +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xd8b48f77 cx231xx_uninit_vbi_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xe4f33e02 cx231xx_uninit_bulk +EXPORT_SYMBOL_GPL drivers/media/usb/dvb-usb-v2/mxl111sf-demod 0x78909324 mxl111sf_demod_attach +EXPORT_SYMBOL_GPL drivers/media/usb/dvb-usb-v2/mxl111sf-tuner 0x39b44515 mxl111sf_tuner_attach +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x12c16268 em28xx_stop_urbs +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x240f53e9 em28xx_audio_setup +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x2ddb695c em28xx_setup_xc3028 +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x34b50a4c em28xx_write_reg +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x461343e9 em28xx_alloc_urbs +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x499b0e4d em28xx_write_regs +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x4ca5fea6 em28xx_audio_analog_set +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x5d5bc14c em28xx_read_ac97 +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x6a5f1042 em28xx_toggle_reg_bits +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x6d578f78 em28xx_boards +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x7fc8652c em28xx_tuner_callback +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x908c69c7 em28xx_set_mode +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x911981c4 em28xx_write_reg_bits +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x918308af em28xx_uninit_usb_xfer +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xa0cfa60d em28xx_init_usb_xfer +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xb3edb4bd em28xx_find_led +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xcb5b3167 em28xx_read_reg +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xcd75ef7f em28xx_free_device +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xec82fcea em28xx_write_ac97 +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xedc0b916 em28xx_gpio_set +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xef7e4853 em28xx_init_camera +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x2309a6d6 tm6000_xc5000_callback +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x3519b81a tm6000_set_reg_mask +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x379f96b5 tm6000_get_reg +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x5cb8f1a2 tm6000_set_audio_bitrate +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x89b611dd tm6000_debug +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0xcbdc5991 tm6000_set_reg +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0xdff8e89d tm6000_tuner_callback +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x01c483a9 v4l2_get_timestamp +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x13ab2ef6 v4l2_i2c_new_subdev_board +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x25a68581 v4l2_i2c_subdev_addr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x48953ebd v4l2_i2c_new_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x54d3a96f v4l2_spi_new_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x813f3de4 v4l2_find_nearest_format +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0xe8d35b3e v4l2_spi_subdev_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0xf2a353ac v4l2_i2c_tuner_addrs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0xf35a8fce v4l2_i2c_subdev_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0xf5ef842e v4l_bound_align_image +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x08982d59 v4l2_match_dv_timings +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x4103badb v4l2_print_dv_timings +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x5491c182 v4l2_enum_dv_timings_cap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x67b8205b v4l2_detect_cvt +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x6f344bb9 v4l2_calc_aspect_ratio +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0xb0891da2 v4l2_dv_timings_presets +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0xdfa5a008 v4l2_valid_dv_timings +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0xf0e1988c v4l2_find_dv_timings_cap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0xf98d0f9d v4l2_detect_gtf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-flash-led-class 0x18e4aab3 v4l2_flash_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-flash-led-class 0x4b7827b6 v4l2_flash_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x01ac8063 v4l2_m2m_ioctl_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x0d3d3361 v4l2_m2m_ioctl_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x133e16ee v4l2_m2m_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x1526ec76 v4l2_m2m_ioctl_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x17eb0eee v4l2_m2m_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x23691cfb v4l2_m2m_ioctl_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x3ba59d79 v4l2_m2m_next_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x45c34b1e v4l2_m2m_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x474611aa v4l2_m2m_ioctl_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x612bbc42 v4l2_m2m_fop_mmap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x62640b33 v4l2_m2m_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x6a39a930 v4l2_m2m_ioctl_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x753ed0bf v4l2_m2m_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x7b5b95fe v4l2_m2m_ctx_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x7b9ba734 v4l2_m2m_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x839c3c5e v4l2_m2m_ctx_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x8ee9e79f v4l2_m2m_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x927435f6 v4l2_m2m_ioctl_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xa33849a7 v4l2_m2m_buf_remove +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xa6db176d v4l2_m2m_try_schedule +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xb60eaa76 v4l2_m2m_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xbdb081ef v4l2_m2m_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xc34afd53 v4l2_m2m_ioctl_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xc6fca5ad v4l2_m2m_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xc7bed915 v4l2_m2m_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xe3593293 v4l2_m2m_fop_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xf0df6827 v4l2_m2m_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xfabb6467 v4l2_m2m_buf_queue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xfd4157f1 v4l2_m2m_ioctl_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x049424b8 videobuf_queue_to_vaddr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x065fa641 videobuf_read_stream +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x214886d7 __videobuf_mmap_setup +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x28573363 videobuf_waiton +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x2c6413fa videobuf_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x2f442f66 videobuf_stop +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x38928cfc videobuf_mmap_mapper +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x39182b9c videobuf_iolock +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x56970398 videobuf_poll_stream +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x5c8b1f1c videobuf_alloc_vb +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x6eabcb0c videobuf_read_stop +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x770c606e videobuf_read_start +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x88f9e127 videobuf_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x8d603315 videobuf_next_field +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x9c599bbd videobuf_queue_is_busy +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xa471c2ce videobuf_mmap_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xab763660 videobuf_queue_cancel +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xc2d54ad6 videobuf_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xc76eded3 videobuf_read_one +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xe346b0e7 videobuf_queue_core_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xe3aab1a9 videobuf_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xef28ef5d videobuf_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xf5371efc videobuf_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xfa303c31 videobuf_mmap_setup +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-contig 0x0390b040 videobuf_queue_dma_contig_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-contig 0x22091b3e videobuf_to_dma_contig +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-contig 0xe51d7f30 videobuf_dma_contig_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x594b09ef videobuf_to_dma +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x62f30c0f videobuf_dma_unmap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x6d40993e 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 0xd9aaf923 videobuf_queue_sg_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-vmalloc 0x30f7fd62 videobuf_to_vmalloc +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-vmalloc 0x91c91f93 videobuf_vmalloc_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-vmalloc 0xe979a722 videobuf_queue_vmalloc_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x001ecfef vb2_ops_wait_prepare +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x01a69d57 vb2_ioctl_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x053cc026 vb2_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x1143be3a vb2_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x16ae5cec vb2_fop_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x1706b855 vb2_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x21ed2e5a vb2_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x36b81d31 vb2_write +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x51d4101e vb2_plane_cookie +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x5ac53807 vb2_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x5bb4dbb0 vb2_queue_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x5f1c82af vb2_fop_mmap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x69197e4c vb2_queue_error +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x69a48fda vb2_discard_done +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x6aed837c vb2_ops_wait_finish +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x6b480931 vb2_queue_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x6ededdb8 vb2_fop_read +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x6fdf66c5 vb2_ioctl_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x79492747 vb2_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x79536230 vb2_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x8160953b vb2_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x81cebbd4 vb2_wait_for_all_buffers +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x8b7de1b9 _vb2_fop_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x9d1872f8 vb2_ioctl_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xab588314 vb2_ioctl_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xaf050214 vb2_ioctl_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xb8d81d98 vb2_mmap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xbc1b7f1e vb2_ioctl_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xc2853443 vb2_fop_write +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xc6bee1d0 vb2_fop_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xcd7e28d8 vb2_ioctl_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xcf64d4f1 vb2_thread_start +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xd55cbb45 vb2_buffer_done +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xe6f1192c vb2_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xe793987d vb2_thread_stop +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xe8abcbe8 vb2_plane_vaddr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xe9f69185 vb2_ioctl_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xeb69c418 vb2_ioctl_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xf4bab411 vb2_read +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-contig 0x298cf81d vb2_dma_contig_memops +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-contig 0x36c168e5 vb2_dma_contig_init_ctx +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-contig 0xe57f0426 vb2_dma_contig_cleanup_ctx +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-sg 0x162aca59 vb2_dma_sg_init_ctx +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-sg 0xd30ec30f vb2_dma_sg_cleanup_ctx +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-sg 0xffe2b1ab vb2_dma_sg_memops +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-memops 0x0667e156 vb2_put_vma +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-memops 0x1198baac vb2_get_vma +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-memops 0x12809eb3 vb2_get_contig_userptr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-memops 0x5b474b9e vb2_common_vm_ops +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-vmalloc 0x3826e2ec vb2_vmalloc_memops +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x088e2661 v4l2_device_register_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x106a6834 v4l2_device_disconnect +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x1392d1bf v4l2_event_unsubscribe_all +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x15abf538 v4l2_fh_exit +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x16a7a49f v4l2_event_queue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x2144f3bf v4l2_fh_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x23a8daf1 v4l2_fh_add +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x28124eeb v4l2_event_queue_fh +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x3f977f15 v4l2_subdev_link_validate_default +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x44c3990a v4l2_fh_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x4624be33 v4l2_device_register_subdev_nodes +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x48661634 v4l2_device_register +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x4f317c6c v4l2_event_pending +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x4f9f7227 v4l2_subdev_link_validate +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x58e623fc v4l2_fh_is_singular +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x5f2562a3 v4l2_device_set_name +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x86067d74 v4l2_event_subscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x88ae8f88 v4l2_src_change_event_subdev_subscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x954ce7c5 v4l2_device_unregister_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xa556a88a v4l2_fh_open +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xb4430168 v4l2_event_unsubscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xc7d4d5de v4l2_event_dequeue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xd5b9715f v4l2_src_change_event_subscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xe2e1b9a2 v4l2_event_subdev_unsubscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xe8623c98 v4l2_device_put +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xedeafe00 v4l2_fh_del +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xeea1d752 v4l2_device_unregister +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0x152b1e6f pm80x_init +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0x2c433da9 pm80x_pm_ops +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0x9683212c pm80x_regmap_config +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0xd99fd720 pm80x_deinit +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0x08f2e785 da9150_set_bits +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0x4d005207 da9150_bulk_write +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0x6a9e8225 da9150_bulk_read +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0x705916ae da9150_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0xc4ad531f da9150_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x1154c9b9 kempld_read8 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x136fdaa5 kempld_release_mutex +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x29746461 kempld_write32 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x7faee261 kempld_write16 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x8d92b14b kempld_write8 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0xa20d0144 kempld_get_mutex +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0xedb7a88f kempld_read16 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0xf40e9d4a kempld_read32 +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0x239a0ff8 lm3533_update +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0x79411899 lm3533_write +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0xbb582721 lm3533_read +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x45a0787e lm3533_ctrlbank_set_max_current +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x66ebeaa8 lm3533_ctrlbank_get_pwm +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x6d131a6a lm3533_ctrlbank_set_brightness +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x9c373aa7 lm3533_ctrlbank_enable +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0xb4ac4dbc lm3533_ctrlbank_set_pwm +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0xce1e8098 lm3533_ctrlbank_disable +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0xe4dd1939 lm3533_ctrlbank_get_brightness +EXPORT_SYMBOL_GPL drivers/mfd/lp3943 0x8a33adac lp3943_update_bits +EXPORT_SYMBOL_GPL drivers/mfd/lp3943 0xa0543372 lp3943_read_byte +EXPORT_SYMBOL_GPL drivers/mfd/lp3943 0xaa41ec49 lp3943_write_byte +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x97a6132e mc13xxx_common_init +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0xab2683f2 mc13xxx_variant_mc34708 +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0xadc37f7d mc13xxx_common_exit +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0xb929769a mc13xxx_variant_mc13783 +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0xc5f16d35 mc13xxx_adc_do_conversion +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0xf9933dba mc13xxx_variant_mc13892 +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x16d7ed07 pcf50633_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x18ab1dd1 pcf50633_irq_mask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x6d78585d pcf50633_register_irq +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x9ff0d870 pcf50633_read_block +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xbb9203d7 pcf50633_irq_mask_get +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xc4368635 pcf50633_write_block +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xcf1f9080 pcf50633_free_irq +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xd22af7b0 pcf50633_irq_unmask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xdeca394f pcf50633_reg_clear_bits +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xe257ce0a pcf50633_reg_set_bit_mask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xe730e978 pcf50633_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-adc 0x61e255b7 pcf50633_adc_async_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-adc 0x6ba05550 pcf50633_adc_sync_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x0cdfce28 pcf50633_gpio_invert_get +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x6ec58ac9 pcf50633_gpio_power_supply_set +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0xaae5524c pcf50633_gpio_invert_set +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0xe2409020 pcf50633_gpio_set +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0xe4dfe588 pcf50633_gpio_get +EXPORT_SYMBOL_GPL drivers/mfd/retu-mfd 0x01a33234 retu_write +EXPORT_SYMBOL_GPL drivers/mfd/retu-mfd 0x4fca3918 retu_read +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x030bd2c2 rtsx_pci_write_phy_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x11bfc832 rtsx_pci_transfer_data +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x24823b8e rtsx_pci_read_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x32d9cc38 rtsx_pci_read_ppbuf +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x348624f6 rtsx_pci_start_run +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x385e274d rtsx_pci_card_power_on +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x504344f7 rtsx_pci_card_pull_ctl_disable +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x6de19305 rtsx_pci_stop_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x7d500062 rtsx_pci_card_power_off +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x8507b02f rtsx_pci_add_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x87603088 rtsx_pci_switch_output_voltage +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x8e433076 rtsx_pci_send_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xb45228c5 rtsx_pci_card_exist +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xb9aff770 rtsx_pci_write_ppbuf +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xbfd40896 rtsx_pci_card_exclusive_check +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xc0defafb rtsx_pci_send_cmd_no_wait +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xcf8aebee rtsx_pci_complete_unfinished_transfer +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xd79dcd9b rtsx_pci_switch_clock +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xdf448c35 rtsx_pci_card_pull_ctl_enable +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xe8c6ef28 rtsx_pci_read_phy_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xf06d02d4 rtsx_pci_dma_map_sg +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xf1db797c rtsx_pci_write_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xf3db2755 rtsx_pci_dma_unmap_sg +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xfa9586d9 rtsx_pci_dma_transfer +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x0940fb42 rtsx_usb_switch_clock +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x0afba3f6 rtsx_usb_ep0_read_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x1386c6ff rtsx_usb_read_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x226114e9 rtsx_usb_add_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x561afa6f rtsx_usb_transfer_data +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x5aec19c5 rtsx_usb_write_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x69d3305d rtsx_usb_send_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x7aefb6cc rtsx_usb_get_rsp +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x9702f0ff rtsx_usb_ep0_write_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0xc27cd144 rtsx_usb_write_ppbuf +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0xdf496163 rtsx_usb_card_exclusive_check +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0xe8cef1a0 rtsx_usb_read_ppbuf +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0xf0bbf7f9 rtsx_usb_get_card_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x0012ade3 si476x_core_cmd_fm_rds_blockcount +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x09e2d565 si476x_core_cmd_fm_phase_diversity +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x1560b8c0 si476x_core_is_in_am_receiver_mode +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x16b54ce4 si476x_core_cmd_zif_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x170ba19c si476x_core_has_am +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x17fb780c si476x_core_cmd_fm_acf_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x1c04c291 si476x_core_has_diversity +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x23865b69 si476x_core_cmd_agc_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x3b18c44a devm_regmap_init_si476x +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x4ae4bd81 si476x_core_cmd_fm_phase_div_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x541e2952 si476x_core_cmd_ic_link_gpo_ctl_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x64c75fb9 si476x_core_cmd_am_tune_freq +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x689dbbbb si476x_core_stop +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x6a3f4186 si476x_core_cmd_am_acf_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x6be5ad54 si476x_core_cmd_am_rsq_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x70589dd9 si476x_core_is_a_secondary_tuner +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x70fd5efd si476x_core_start +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x7e263da1 si476x_core_cmd_am_seek_start +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x870d9032 si476x_core_cmd_fm_tune_freq +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x8e7a230a si476x_core_cmd_fm_rsq_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x91953720 si476x_core_is_powered_up +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x96104b15 si476x_core_cmd_power_down +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x97469b59 si476x_core_cmd_dig_audio_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x9a1504a1 si476x_core_is_a_primary_tuner +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x9b3a5c5f si476x_core_cmd_ana_audio_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x9c31983e si476x_core_cmd_fm_rds_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xa5a04914 si476x_core_set_power_state +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xa6affb23 si476x_core_cmd_set_property +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xa835d349 si476x_core_cmd_func_info +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xad2bed67 si476x_core_i2c_xfer +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xcc48dd9b si476x_core_cmd_fm_seek_start +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xd7354968 si476x_core_cmd_get_property +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xf704ff24 si476x_core_cmd_power_up +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xfccdaea9 si476x_core_cmd_intb_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/ssbi 0x14632a34 ssbi_write +EXPORT_SYMBOL_GPL drivers/mfd/ssbi 0xf7fceae2 ssbi_read +EXPORT_SYMBOL_GPL drivers/mfd/ti_am335x_tscadc 0x5d800106 am335x_tsc_se_clr +EXPORT_SYMBOL_GPL drivers/mfd/ti_am335x_tscadc 0x95ad8882 am335x_tsc_se_set_cache +EXPORT_SYMBOL_GPL drivers/mfd/ti_am335x_tscadc 0xba8a2808 am335x_tsc_se_adc_done +EXPORT_SYMBOL_GPL drivers/mfd/ti_am335x_tscadc 0xd5baa65f am335x_tsc_se_set_once +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0x4ceda074 tps65217_set_bits +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0x625e57c0 tps65217_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0x9187b3d0 tps65217_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0xae6dd8c8 tps65217_clear_bits +EXPORT_SYMBOL_GPL drivers/mfd/tps65218 0x25a2a679 tps65218_clear_bits +EXPORT_SYMBOL_GPL drivers/mfd/tps65218 0x4aaf2e6a tps65218_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/tps65218 0x66364988 tps65218_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/tps65218 0xbbcd1b0e tps65218_set_bits +EXPORT_SYMBOL_GPL drivers/mfd/ucb1400_core 0x4d1929c8 ucb1400_adc_read +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0x0d907165 cb710_sg_dwiter_read_next_block +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0x45861565 cb710_pci_update_config_reg +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0x90ad9eb1 cb710_set_irq_handler +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0x9ff1ce35 cb710_sg_dwiter_write_next_block +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0x1a1b5249 oslec_flush +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0x2feda75b oslec_hpf_tx +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0x3227a28e oslec_snapshot +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0x7dc9dddd oslec_adaption_mode +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0xb2c66001 oslec_create +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0xc8b5a524 oslec_free +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0xd370f679 oslec_update +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0x27cb133b eeprom_93cx6_multiread +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0x63d2ff63 eeprom_93cx6_wren +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0x793fc8de eeprom_93cx6_multireadb +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0x822222db eeprom_93cx6_write +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0x98bb5a22 eeprom_93cx6_read +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0xdb9ca14b eeprom_93cx6_readb +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x08763897 enclosure_remove_device +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x49d732d9 enclosure_unregister +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x51d6763f enclosure_for_each_device +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x74fdcfbc enclosure_component_alloc +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x7604092d enclosure_find +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0xaed8115c enclosure_component_register +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0xb3ec0a78 enclosure_add_device +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0xba4f51a4 enclosure_register +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x31cab307 lis3lv02d_init_device +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x5388c00e lis3lv02d_init_dt +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x5eba8cfd lis3lv02d_poweroff +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x8612afc7 lis3lv02d_joystick_enable +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x9377e67d lis3lv02d_poweron +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xa4734003 lis3lv02d_remove_fs +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xd04d6704 lis3_dev +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xe9f56a12 lis3lv02d_joystick_disable +EXPORT_SYMBOL_GPL drivers/misc/ti-st/st_drv 0x55c61ed4 st_register +EXPORT_SYMBOL_GPL drivers/misc/ti-st/st_drv 0x77138830 st_unregister +EXPORT_SYMBOL_GPL drivers/mmc/host/dw_mmc-pltfm 0x339fbeb0 dw_mci_pltfm_pmops +EXPORT_SYMBOL_GPL drivers/mmc/host/dw_mmc-pltfm 0x638108d6 dw_mci_pltfm_remove +EXPORT_SYMBOL_GPL drivers/mmc/host/dw_mmc-pltfm 0xf7114bf8 dw_mci_pltfm_register +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0x01a068b3 cfi_cmdset_0001 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0x3e894d5b cfi_cmdset_0003 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0xc39768cd cfi_cmdset_0200 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0x16dbc5ff cfi_cmdset_0002 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0x68898e2f cfi_cmdset_0006 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0xe5220a79 cfi_cmdset_0701 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0020 0xb0dab928 cfi_cmdset_0020 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0x1e943df7 cfi_qry_mode_off +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0x5930cc46 cfi_qry_present +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0xa878ea58 cfi_qry_mode_on +EXPORT_SYMBOL_GPL drivers/mtd/nand/brcmnand/brcmnand 0x0860ed3f brcmnand_pm_ops +EXPORT_SYMBOL_GPL drivers/mtd/nand/brcmnand/brcmnand 0x30a81ab9 brcmnand_remove +EXPORT_SYMBOL_GPL drivers/mtd/nand/brcmnand/brcmnand 0x74c54660 brcmnand_probe +EXPORT_SYMBOL_GPL drivers/mtd/nand/sm_common 0xfa162bd5 sm_register_device +EXPORT_SYMBOL_GPL drivers/mtd/onenand/onenand 0x46719f84 onenand_release +EXPORT_SYMBOL_GPL drivers/mtd/onenand/onenand 0x8497f7cb onenand_scan +EXPORT_SYMBOL_GPL drivers/mtd/spi-nor/spi-nor 0xc9299bd0 spi_nor_scan +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x118b4f56 ubi_leb_read_sg +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x1733cd9b ubi_close_volume +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x299610cb ubi_open_volume_path +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x2dab5de7 ubi_open_volume_nm +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 0x4d11fd7b ubi_leb_write +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x5cfdd22d ubi_get_device_info +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x63688bfc ubi_leb_map +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x74b7094d ubi_leb_erase +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x7f9959eb ubi_leb_read +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x85a8ee76 ubi_unregister_volume_notifier +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x9940752f ubi_is_mapped +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xa12584a3 ubi_do_get_device_info +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xbc9aba7d ubi_leb_change +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xbffb783a ubi_leb_unmap +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xd1c6c15d ubi_open_volume +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xd3aff960 ubi_get_volume_info +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xf5ee9ba8 ubi_register_volume_notifier +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x46486014 register_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x46a74eeb alloc_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x4d29ad5c c_can_power_down +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x7f85e7d5 c_can_power_up +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0xa4c19a5e unregister_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0xc48fdfa8 free_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x0a5b9e0e open_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x1454a5c6 can_get_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x20c9a8d3 free_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x222c295a can_len2dlc +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x2356f44e alloc_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x35fff2b7 devm_can_led_init +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x40cd866e unregister_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x5a5abdbd can_free_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x5c9c5b6a can_bus_off +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x63a4fdca safe_candev_priv +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x7e825a7c alloc_can_err_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x847f400c close_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x94b3b853 alloc_can_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x97ae7928 can_change_state +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xb081ff15 can_change_mtu +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xb346573b can_dlc2len +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xc34ee022 can_put_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xccff24b9 can_led_event +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xe0f35ff9 alloc_canfd_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xe8e974ec register_candev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0x407953b7 register_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0xca0ce7f3 free_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0xd24b6723 unregister_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0xd8a1c813 alloc_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x15ab761e unregister_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x21325f87 register_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x49ebd0d2 sja1000_interrupt +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x792b2866 free_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0xc55e237b alloc_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/ethernet/arc/arc_emac 0x02280c01 arc_emac_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/arc/arc_emac 0xedbb1bae arc_emac_probe +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x00e3bda8 mlx4_srq_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x04f99956 mlx4_counter_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x060613a4 mlx4_cq_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0bd7b66f mlx4_alloc_cmd_mailbox +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0cc0f7df mlx4_db_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0d48c618 mlx4_mw_enable +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x106ff11e mlx4_mr_hw_change_access +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x109876b8 mlx4_map_sw_to_hw_steering_id +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x10f3d30a __mlx4_register_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1236414d mlx4_phys_to_slaves_pport_actv +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x13b5cb17 mlx4_unicast_promisc_add +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x183de925 mlx4_get_vf_stats +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x18dabe7e __mlx4_replace_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x19c565e4 mlx4_ACCESS_PTYS_REG +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1de4aa31 mlx4_mtt_addr +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x259e8054 mlx4_hw_rule_sz +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2914dd76 mlx4_register_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2947109f mlx4_update_qp +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2c77a23b mlx4_flow_attach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2caf4bb3 mlx4_mr_enable +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2cc9489d mlx4_free_hwq_res +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2df216da mlx4_get_slave_default_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x308eff92 mlx4_mr_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3110aadc mlx4_counter_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3140f019 mlx4_INIT_PORT +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x367f4b8f mlx4_set_vf_spoofchk +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x385f6b22 mlx4_config_dev_retrieval +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x38cf68e5 mlx4_unicast_detach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x39190521 mlx4_get_protocol_dev +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3a04dfe7 mlx4_unicast_promisc_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3d85350a mlx4_flow_steer_promisc_add +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x400424a5 mlx4_bf_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x41d066ea mlx4_set_vf_rate +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4213da95 mlx4_mr_hw_write_mpt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4560070d mlx4_multicast_detach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x495d706b mlx4_qp_reserve_range +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4a490711 mlx4_bond +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4c0bd2bf mlx4_pd_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4cf1782a mlx4_CLOSE_PORT +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4e971a57 mlx4_slave_convert_port +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x511ac04e __mlx4_cmd +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5910e27f mlx4_get_base_gid_ix +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x59a06442 mlx4_srq_lookup +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5aa99933 mlx4_pd_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5acf469f mlx4_vf_get_enable_smi_admin +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5dcf94ae mlx4_map_phys_fmr +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5e145b6f mlx4_mtt_init +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5ec5ca43 mlx4_mtt_cleanup +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5f0a9a8e mlx4_config_vxlan_port +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x61d746ea mlx4_unregister_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x622166c8 mlx4_qp_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x643ca2a6 mlx4_buf_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x65711d73 mlx4_mr_rereg_mem_write +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x68a2d63a mlx4_db_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6932b5d5 mlx4_bf_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x69f3ef05 mlx4_multicast_promisc_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6a526f4d mlx4_get_internal_clock_params +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6c4ad3b7 mlx4_find_cached_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6dbbff7e mlx4_find_cached_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6f3129b9 mlx4_fmr_unmap +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7003d798 mlx4_srq_arm +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7114f9b5 mlx4_get_default_counter_index +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x72151f6f mlx4_fmr_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x736c447c mlx4_register_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x74eac52a mlx4_xrcd_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x772a0b78 mlx4_unbond +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7b4bdd45 mlx4_wol_read +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7e645090 mlx4_alloc_hwq_res +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x811d5e52 mlx4_srq_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8489c6a2 mlx4_vf_set_enable_smi_admin +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x85587ad8 mlx4_cq_resize +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x88c86e2c mlx4_qp_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x891452d0 mlx4_fmr_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8a2c7da5 mlx4_mr_hw_get_mpt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8acf62c0 mlx4_unregister_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8b12c6f3 mlx4_multicast_promisc_add +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8fde9548 mlx4_phys_to_slaves_pport +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x920548d5 mlx4_read_clock +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9890267d mlx4_cq_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x99903562 mlx4_get_base_qpn +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x99988213 mlx4_qp_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9acfd818 mlx4_buf_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9adc9aeb mlx4_mr_hw_put_mpt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9c039392 mlx4_SYNC_TPT +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9d3e97a4 mlx4_mr_rereg_mem_cleanup +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9d3f22ba mlx4_get_vf_config +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa524bda4 mlx4_qp_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa627335d mlx4_flow_detach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa62dbf37 mlx4_unicast_attach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xab1c2421 mlx4_port_map_set +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xae53ee3a mlx4_unregister_interface +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xaf3b33d8 mlx4_uar_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb3e5b341 mlx4_multicast_attach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb76acec8 mlx4_set_vf_link_state +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbd464daa mlx4_register_interface +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc289f309 mlx4_free_cmd_mailbox +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc2e078d6 mlx4_set_vf_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc3e14f4c mlx4_buf_write_mtt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc4b7a5d2 __mlx4_unregister_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc515a9a6 mlx4_get_active_ports +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc52a9d3e mlx4_srq_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc53092da mlx4_vf_smi_enabled +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc61b6085 mlx4_mw_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc75e54b9 mlx4_mr_hw_change_pd +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xcc4592d1 mlx4_flow_steer_promisc_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xce5fad9a mlx4_qp_modify +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd17ff099 mlx4_mr_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd263b0f4 mlx4_map_sw_to_hw_steering_mode +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd6e1e3ac mlx4_qp_to_ready +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xdcf84730 mlx4_xrcd_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xde435e67 mlx4_FLOW_STEERING_IB_UC_QP_RANGE +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe8832e82 mlx4_fmr_enable +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe95a7321 mlx4_uar_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xea15c6c4 mlx4_wol_write +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xeaaeb735 mlx4_qp_release_range +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xeaf8e6c5 mlx4_write_mtt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xeb959223 mlx4_phys_to_slave_port +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xecaee9cc mlx4_get_admin_guid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf61ccf0f mlx4_mw_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf692846a mlx4_cq_modify +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xfa590223 mlx4_set_admin_guid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xfb7889cb mlx4_get_counter_stats +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xfcc24952 mlx4_set_vf_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x09685de9 mlx5_query_hca_vport_pkey +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x108a50ef mlx5_core_access_reg +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x1b5323de mlx5_db_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x21a191ca mlx5_query_hca_vport_context +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x21d3a8bc mlx5_query_hca_vport_node_guid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x23a1e465 mlx5_db_alloc_node +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x2e832ae2 mlx5_destroy_unmap_eq +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x32724f75 mlx5_query_hca_vport_system_image_guid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x3dd8a00f mlx5_set_port_admin_status +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x41280091 mlx5_query_port_admin_status +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x43f69997 mlx5_set_port_caps +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x55eae62a mlx5_query_hca_vport_gid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x647d0d6a mlx5_set_port_proto +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x6d4bb5ea mlx5_query_port_vl_hw_cap +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x6e65428f mlx5_create_map_eq +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x71ca9354 mlx5_query_port_oper_mtu +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x7a33dd5e mlx5_core_create_qp +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x7c748b4d mlx5_buf_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x8956c9a5 mlx5_core_xrcd_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x8dc63e0a mlx5_query_port_proto_admin +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x8e46060f mlx5_core_destroy_qp +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x99da1686 mlx5_core_xrcd_dealloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa096530f mlx5_query_port_max_mtu +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa49108a1 mlx5_fill_page_array +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xb02b3e79 mlx5_set_port_mtu +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xb051777a mlx5_core_page_fault_resume +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xb52f0953 mlx5_db_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xb5872d62 mlx5_core_qp_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xbcd4d3b7 mlx5_query_port_proto_oper +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xd38d6463 mlx5_core_qp_modify +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xdceb3bb2 mlx5_buf_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xdf03f977 mlx5_query_port_link_width_oper +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe7b9256a mlx5_query_port_ptys +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf2cb650a mlx5_core_eq_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf372e355 mlx5_core_mad_ifc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf3a3cef2 mlx5_query_port_proto_cap +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac 0x031e86c2 stmmac_dvr_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac 0x35739179 stmmac_suspend +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac 0x5ab04e61 stmmac_resume +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac 0xe94026bf stmmac_dvr_probe +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac-platform 0x5b0431c9 stmmac_pltfr_probe +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac-platform 0xbcd4f10e stmmac_pltfr_pm_ops +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac-platform 0xf5af6b90 stmmac_pltfr_remove +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x23b30d4f macvlan_common_setup +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x754254f9 macvlan_common_newlink +EXPORT_SYMBOL_GPL drivers/net/macvlan 0xc1863a63 macvlan_link_register +EXPORT_SYMBOL_GPL drivers/net/macvlan 0xf65b14a7 macvlan_dellink +EXPORT_SYMBOL_GPL drivers/net/macvtap 0xe48caaf2 macvtap_get_socket +EXPORT_SYMBOL_GPL drivers/net/phy/mdio-mux 0x2966fa9b mdio_mux_init +EXPORT_SYMBOL_GPL drivers/net/phy/mdio-mux 0x6318757f mdio_mux_uninit +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0x690ef4f9 usbnet_cdc_bind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0x8bdd97cb usbnet_generic_cdc_bind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0x99436650 usbnet_cdc_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0xfa79de4a usbnet_cdc_status +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x02eb6eec cdc_ncm_rx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x1952baf8 cdc_ncm_bind_common +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x345e1692 cdc_ncm_rx_verify_nth16 +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x34d86c7d cdc_ncm_rx_verify_ndp16 +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x7ea80c70 cdc_ncm_select_altsetting +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0xc1a896c1 cdc_ncm_fill_tx_frame +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0xdafdcef8 cdc_ncm_tx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0xe77979bc cdc_ncm_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x10d6d8eb rndis_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x1b40cc18 rndis_rx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0xbdae946a rndis_status +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0xcf6aab99 generic_rndis_bind +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0xf040235a rndis_command +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0xfb437c59 rndis_tx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x060af9dc usbnet_write_cmd +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x120f43ad usbnet_change_mtu +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x296556e1 usbnet_resume +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x2c85d7da usbnet_skb_return +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x34f7a4d3 usbnet_get_settings +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x369dd872 usbnet_resume_rx +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x39221379 usbnet_pause_rx +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x5051a7a0 usbnet_get_drvinfo +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x573e0a6e usbnet_probe +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x57874888 usbnet_write_cmd_async +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x5999070f usbnet_get_link +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x5f159d23 usbnet_get_endpoints +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x62b941ea usbnet_get_msglevel +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x684d24d5 usbnet_read_cmd +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x6d798c77 usbnet_update_max_qlen +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x726081cb usbnet_status_stop +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x75a00274 usbnet_defer_kevent +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x79d1f6f8 usbnet_start_xmit +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x7c42959b usbnet_purge_paused_rxq +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x7ea0cefa usbnet_stop +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x87d34229 usbnet_status_start +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x8ed264fb usbnet_tx_timeout +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x993e8733 usbnet_suspend +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x9ba806a6 usbnet_set_settings +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xa1ff3c76 usbnet_get_ethernet_addr +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xab09306b usbnet_set_msglevel +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xb6345fc1 usbnet_read_cmd_nopm +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xcfbf9696 usbnet_open +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xd0fdf1f2 usbnet_write_cmd_nopm +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xe04b196a usbnet_disconnect +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xe1ea0fce usbnet_unlink_rx_urbs +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xf3f971f7 usbnet_nway_reset +EXPORT_SYMBOL_GPL drivers/net/vxlan 0x19bc6f6b vxlan_xmit_skb +EXPORT_SYMBOL_GPL drivers/net/vxlan 0xb3c83190 vxlan_sock_add +EXPORT_SYMBOL_GPL drivers/net/vxlan 0xfbaa9ebd vxlan_sock_release +EXPORT_SYMBOL_GPL drivers/net/vxlan 0xff0974d7 vxlan_get_rx_port +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x268d6752 i2400m_setup +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x28ace52d i2400m_rx +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x3eda05e5 i2400m_is_boot_barker +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x40374f40 i2400m_netdev_setup +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x49c4f21d i2400m_cmd_enter_powersave +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x80034859 i2400m_pre_reset +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x8683cf1c i2400m_tx_msg_get +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x8766c679 i2400m_init +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x9f0774a3 i2400m_tx +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xb00b793c i2400m_bm_cmd_prepare +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xc98a4f32 i2400m_release +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xcd4a995a i2400m_post_reset +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xd0ba9c44 i2400m_dev_reset_handle +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xdd7d525d i2400m_error_recovery +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xf27bf2bc i2400m_dev_bootstrap +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xf73ca4e0 i2400m_tx_msg_sent +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xf83a1a30 i2400m_reset +EXPORT_SYMBOL_GPL drivers/net/wireless/cw1200/cw1200_core 0x087458f2 cw1200_irq_handler +EXPORT_SYMBOL_GPL drivers/net/wireless/cw1200/cw1200_core 0x0e812d6c cw1200_can_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/cw1200/cw1200_core 0x5d409c65 cw1200_core_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/cw1200/cw1200_core 0x6060cded cw1200_core_release +EXPORT_SYMBOL_GPL drivers/net/wireless/ipw2x00/libipw 0xeba88c7d libipw_rx_any +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0x136d8f47 il_dealloc_bcast_stations +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0x4d3c380b il_prep_station +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0x9211efb8 _il_grab_nic_access +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0xa2711ec4 il_mac_tx_last_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0xb6f8b518 il_remove_station +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x0290804d iwl_set_bits_mask_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x194202ee iwl_notification_wait_init +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x219db571 iwl_read_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x2c4d81e2 iwl_clear_bits_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x2e9630e9 iwl_read_direct32 +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x35033c81 iwl_phy_db_free +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x3f0b9a6d iwl_remove_notification +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x42702306 __iwl_err +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x44db1b8e iwl_poll_direct_bit +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x51b657cd iwlwifi_mod_params +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x5886c278 iwl_read_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x5a10d898 iwl_abort_notification_waits +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x5c52e109 iwl_opmode_deregister +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x60a8c758 iwl_parse_eeprom_data +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x75e6d302 iwl_phy_db_init +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x776221bf iwl_send_phy_db_data +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x7dc6eccd iwl_set_bits_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x85ebf56f iwl_force_nmi +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x8611d33a iwl_nvm_check_version +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x8750263e iwl_parse_nvm_data +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x8a8bc0af __iwl_crit +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x8c5d5ab3 iwl_phy_db_set_section +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x8e69278b __iwl_dbg +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x92e64568 iwl_wait_notification +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x9c8a9607 iwl_opmode_register +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xa4e548d7 iwl_poll_bit +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xc7b697dc iwl_write_direct32 +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xc813c5e8 iwl_write_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xcc4b3e7d iwl_parse_nvm_mcc_info +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xdc92125d __iwl_warn +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xe11f9eaa iwl_notification_wait_notify +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xefe73e26 __iwl_info +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xf5032a20 iwl_init_notification_wait +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x48051905 lbs_start_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x482b73df lbs_notify_command_response +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x4b8e72ba lbs_cmd_copyback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x4bec441e lbs_host_to_card_done +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x522b58d1 lbs_process_rxed_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x5fdf38b8 lbs_disablemesh +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x9a8fba28 lbs_host_sleep_cfg +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xab6d79c9 lbs_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xb3669bcf lbs_stop_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xb3fd3bbd lbs_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xc7c4a80d lbs_queue_event +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xcc40d930 lbs_get_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xcdd672b8 lbs_get_firmware_async +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xe08c6469 lbs_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xe86c9d87 __lbs_cmd +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xf64277de lbs_debug +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xfcc10900 lbs_send_tx_feedback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xff80aaf5 lbs_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x3810f23a __lbtf_cmd +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x5598aa80 lbtf_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x6e7135de lbtf_cmd_response_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x76b2f891 lbtf_bcn_sent +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x96350909 lbtf_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xa1067345 lbtf_cmd_copyback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xc246741b lbtf_send_tx_feedback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xc85e6899 lbtf_debug +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xe3bc3070 lbtf_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x028e7144 mwifiex_del_virtual_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x273c6641 mwifiex_drv_info_dump +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x283c554d mwifiex_write_data_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x31bd9748 mwifiex_alloc_dma_align_buf +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x34fbe5ee mwifiex_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x47dda26d mwifiex_handle_rx_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x6ed0a039 mwifiex_enable_hs +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x7a645dd9 mwifiex_deauthenticate_all +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x854ea046 mwifiex_process_sleep_confirm_resp +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x984124c5 mwifiex_queue_main_work +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xb479fdb4 mwifiex_disable_auto_ds +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xbd030e6d mwifiex_process_hs_config +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xbf40a622 mwifiex_init_shutdown_fw +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xc0cb6170 mwifiex_cancel_hs +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xe1098208 mwifiex_add_virtual_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xe582970e mwifiex_main_process +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xe667e025 mwifiex_upload_device_dump +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xfa709cfd mwifiex_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x2ce7bebb p54_free_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x3f496897 p54_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x527c3819 p54_register_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x6001b9ab p54_free_skb +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x620f344b p54_parse_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x71a1fccd p54_parse_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x778855b3 p54_init_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xc3e939a5 p54_unregister_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xda1618b3 p54_read_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0x13c70d2c rsi_91x_deinit +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0x6f8f5d95 rsi_mac80211_detach +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0x7201b98a rsi_dbg +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0x8ca1a379 rsi_read_pkt +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0xa14c360c rsi_91x_init +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0xdb3ca0e5 rsi_zone_enabled +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x0525430e rt2800_config_ant +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x07c4490e rt2800_sta_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x1b0eb904 rt2800_rfkill_poll +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x20dfdbef rt2800_config_erp +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x3ac8e205 rt2800_link_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x3e78defc rt2800_process_rxwi +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x4927e7fe rt2800_wait_csr_ready +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x4daed1c3 rt2800_get_survey +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x53381a09 rt2800_load_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x593cbdb8 rt2800_reset_tuner +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x59f9aabf rt2800_sta_add +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x72759958 rt2800_read_eeprom_efuse +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x76da9542 rt2800_config_pairwise_key +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x7dc2d8d6 rt2800_check_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x7f585d9b rt2800_conf_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x825daa93 rt2800_get_tsf +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x87fea0c2 rt2800_efuse_detect +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x939809b5 rt2800_config_filter +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x9856056d rt2800_config +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x9e054607 rt2800_probe_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xa4380760 rt2800_clear_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xa5acd4cf rt2800_vco_calibration +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xba7cf7f3 rt2800_disable_wpdma +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xbd9f5f31 rt2800_write_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xc536d20c rt2800_disable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xc66b3bb5 rt2800_ampdu_action +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xc9192756 rt2800_config_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xce0a388a rt2800_write_tx_data +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xd17018f4 rt2800_gain_calibration +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xd1e5247b rt2800_get_key_seq +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xd49df0a3 rt2800_wait_wpdma_ready +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xda1d321d rt2800_config_shared_key +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xdf482c83 rt2800_link_tuner +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xe010e291 rt2800_mcu_request +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xe7bd9356 rt2800_get_txwi_rxwi_size +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xeb438c8d rt2800_txdone_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xf38477ee rt2800_enable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xf56ce37a rt2800_set_rts_threshold +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x0fad1430 rt2800mmio_pretbtt_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x1711df4f rt2800mmio_queue_init +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x1afa382f rt2800mmio_kick_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x1e9ee7e1 rt2800mmio_enable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x2505789d rt2800mmio_tbtt_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x5fa4db64 rt2800mmio_interrupt +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x670573ab rt2800mmio_fill_rxdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x696db2e4 rt2800mmio_init_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x747316db rt2800mmio_toggle_irq +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x7cd0d61e rt2800mmio_stop_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x8056def3 rt2800mmio_get_entry_state +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x8239cf12 rt2800mmio_init_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x8c0e3674 rt2800mmio_get_txwi +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x92c0bcd1 rt2800mmio_rxdone_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x94f344d8 rt2800mmio_clear_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xa333dadd rt2800mmio_write_tx_desc +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xb2f8647b rt2800mmio_start_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xc6a1455e rt2800mmio_autowake_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xe28f94c7 rt2800mmio_txstatus_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x0006e1ed rt2x00queue_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x01bf65fb rt2x00queue_start_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x0927a7cf rt2x00mac_get_antenna +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x0b0e0e4b rt2x00mac_config +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x0ee26379 rt2x00lib_rxdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x1a34719c rt2x00mac_set_key +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x1e44e3fe rt2x00queue_start_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x1e8c7743 rt2x00lib_beacondone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x1e90d7d1 rt2x00queue_unmap_skb +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x25893a4d rt2x00lib_probe_dev +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x275deb8d rt2x00lib_txdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x369e9a3a rt2x00queue_get_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x399d3b05 rt2x00lib_pretbtt +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x3ad03e1f rt2x00queue_map_txskb +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x40002d68 rt2x00mac_sta_add +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x46e1e900 rt2x00lib_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x489c8d0e rt2x00mac_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x4918a23b rt2x00mac_remove_interface +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x49c59c06 rt2x00lib_txdone_noinfo +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x4e89b247 rt2x00mac_stop +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x5a5f6e8f rt2x00queue_pause_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x5dab78e6 rt2x00queue_stop_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x5ea84fc9 rt2x00lib_get_bssidx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x64466f99 rt2x00mac_flush +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x6799ff2e rt2x00mac_sw_scan_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x6b5acce0 rt2x00queue_for_each_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x722aaa6c rt2x00mac_rfkill_poll +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x74c21bb7 rt2x00mac_tx_frames_pending +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x786fd924 rt2x00lib_dmastart +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x7d1e9b3a rt2x00queue_stop_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x9017ea23 rt2x00mac_sta_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x98654630 rt2x00mac_set_antenna +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xa2351fa8 rt2x00lib_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xa969f359 rt2x00mac_start +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xaf06a919 rt2x00mac_bss_info_changed +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xb4310ee3 rt2x00lib_dmadone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xb66290b5 rt2x00mac_sw_scan_start +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xc5ea7d9a rt2x00mac_set_tim +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xcc18172b rt2x00queue_flush_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xdb4acc3c rt2x00mac_get_ringparam +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xec4885fe rt2x00lib_remove_dev +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xef2e9ace rt2x00mac_add_interface +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xf18ed271 rt2x00queue_unpause_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xf5a07a96 rt2x00mac_get_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xf9e5b4e7 rt2x00mac_conf_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xfacbcfbb rt2x00mac_configure_filter +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0x227eb971 rt2x00mmio_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0x4a7b429c rt2x00mmio_regbusy_read +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0x722b1658 rt2x00mmio_initialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0xb8260e01 rt2x00mmio_rxdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0xf50c3c5a rt2x00mmio_uninitialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0x3319cb2b rt2x00pci_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0x33228539 rt2x00pci_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0xaac590cf rt2x00pci_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0xd67daaaa rt2x00pci_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x1279100d rt2x00usb_initialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x1463e2f6 rt2x00usb_watchdog +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x596992c7 rt2x00usb_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x607a926b rt2x00usb_vendor_request_buff +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x8a74e746 rt2x00usb_uninitialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x8c6f9a22 rt2x00usb_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x8f878830 rt2x00usb_vendor_request +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x8fe601b4 rt2x00usb_vendor_req_buff_lock +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xa474e7ea rt2x00usb_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xb1a6378b rt2x00usb_disable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xc299e468 rt2x00usb_disconnect +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xc6c93e42 rt2x00usb_clear_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xca150355 rt2x00usb_regbusy_read +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xeab4bd9c rt2x00usb_kick_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xef3c909a rt2x00usb_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xfefde6f0 rt2x00usb_register_read_async +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x30da83e0 dm_writepowerindex +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x66e13d41 rtl92c_set_p2p_ps_offload_cmd +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x81ca9aec dm_savepowerindex +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xae6a0bdc dm_restorepowerindex +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x0c337be9 rtl8723_dm_init_edca_turbo +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x0eda9c1f rtl8723_phy_rf_serial_read +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x1fd34ebe rtl8723_fw_page_write +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x2797e0ea rtl8723_dm_init_dynamic_bb_powersaving +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x32544f13 rtl8723_save_adda_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x379a986e rtl8723_phy_txpwr_idx_to_dbm +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x3ee8a4b0 rtl8723_fw_block_write +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x4e9414d8 rtl8723_phy_set_bb_reg +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x4f16ef62 rtl8723_write_fw +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x53221804 rtl8723_cmd_send_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x55866c1e rtl8723_phy_rf_serial_write +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x5c9d3cee rtl8723_download_fw +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x60a0e763 rtl8723_phy_reload_mac_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x60d9501e rtl8723_phy_query_bb_reg +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x6fee3a6c rtl8723_phy_set_sw_chnl_cmdarray +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x725a0733 rtl8723be_firmware_selfreset +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x74780410 rtl8723_phy_init_bb_rf_reg_def +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x8c50b8e1 rtl8723_phy_path_adda_on +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x905fa713 rtl8723_enable_fw_download +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x9a68e81e rtl8723_dm_init_dynamic_txpower +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xaf4d6d94 rtl8723_phy_calculate_bit_shift +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xb3d9ce29 rtl8723_phy_pi_mode_switch +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xb567fb0b rtl8723_phy_path_a_fill_iqk_matrix +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xc0e2e93b rtl8723_phy_reload_adda_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xc5884810 rtl8723ae_firmware_selfreset +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xdacb9735 rtl8723_phy_mac_setting_calibration +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xeb1079eb rtl8723_fw_free_to_go +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xf4aa2157 rtl8723_phy_save_mac_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xfe725e54 rtl8723_phy_path_a_standby +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x02b8efe4 rtl_beacon_statistic +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x17fd1a82 rtl_is_special_data +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x241dedc1 rtl_tid_to_ac +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x289f9b91 rtl_tx_mgmt_proc +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x28f10f2d rtl_recognize_peer +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x2921a4d4 rtl_btc_status_false +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x2d882d91 rtl_global_var +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x3f06c6e1 read_efuse_byte +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x57aabe32 rtl_deinit_rfkill +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x6b8a1f85 rtl_init_core +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x6eea234a rtl_swlps_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x75d87f5c rtl_init_rx_config +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x85218183 rtl_action_proc +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xaa7208b2 rtl_ips_nic_on +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xaf6a89af rtl_ops +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xb7d1b646 rtl_attribute_group +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xca51c210 rtl_dbgp_flag_init +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xd235f7b1 rtl_p2p_info +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xee97e765 rtl_deinit_deferred_work +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xf8db6405 rtl_deinit_core +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xf8ff6add rtl_lps_change_work_callback +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0x103168e9 wl1251_init_ieee80211 +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0x6b752675 wl1251_alloc_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0xf94de28e wl1251_free_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x021a5ab5 wlcore_alloc_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x0413fc7d wlcore_event_roc_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x0d8785d7 wl12xx_cmd_build_probe_req +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x0e9e9e36 wl1271_cmd_test +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x15e7dea0 wl1271_acx_init_mem_config +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x1b7e54b8 wlcore_synchronize_interrupts +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x1eca5c82 wlcore_event_dummy_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x1f5de34d wlcore_boot_upload_nvs +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x3095daf2 wlcore_boot_run_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x31e77316 wl1271_acx_sleep_auth +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x354fa39f wlcore_event_max_tx_failure +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x3d101354 wl12xx_acx_mem_cfg +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x419cf3ec wl1271_ps_elp_wakeup +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x488dd787 wlcore_event_inactive_sta +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x4d5c87ec wlcore_scan_sched_scan_ssid_list +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x53dff67d wl12xx_debug_level +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x54465542 wl1271_cmd_send +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x582038ce wlcore_disable_interrupts_nosync +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x5e99a647 wlcore_scan_sched_scan_results +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x647a3b58 wl1271_acx_set_ht_capabilities +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x687ffcb9 wlcore_event_soft_gemini_sense +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x70e288bf wlcore_event_rssi_trigger +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x751661da wlcore_enable_interrupts +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x77092dcc wlcore_get_native_channel_type +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x7bfea237 wl1271_tx_flush +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x80d95e8e wlcore_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x82822508 wlcore_free_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x86156e21 wlcore_set_key +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x863e8173 wlcore_boot_upload_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x89738a51 wlcore_disable_interrupts +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x91da5146 wl1271_format_buffer +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xa26e3176 wl1271_tx_min_rate_get +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xaacdc664 wl1271_acx_pm_config +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xb93208de wlcore_cmd_wait_for_event_or_timeout +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xbc89a5a4 wlcore_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xbfc8dd64 wl1271_debugfs_update_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xc6cb82b1 wl1271_cmd_configure +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xc8354bf9 wl1271_cmd_data_path +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xce7a53e7 wlcore_set_scan_chan_params +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xd2a6a8e2 wlcore_set_partition +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xddc84e12 wlcore_event_beacon_loss +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xeaf0a5dd wl1271_ps_elp_sleep +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xec8a5910 wlcore_event_channel_switch +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xfde88b81 wlcore_event_ba_rx_constraint +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xff21c416 wlcore_event_sched_scan_completed +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xffdda58d wlcore_translate_addr +EXPORT_SYMBOL_GPL drivers/nfc/nfcmrvl/nfcmrvl 0x217e3b92 nfcmrvl_parse_dt +EXPORT_SYMBOL_GPL drivers/nfc/nfcmrvl/nfcmrvl 0x71ed06a8 nfcmrvl_nci_register_dev +EXPORT_SYMBOL_GPL drivers/nfc/nfcmrvl/nfcmrvl 0xa22cbcef nfcmrvl_nci_recv_frame +EXPORT_SYMBOL_GPL drivers/nfc/nfcmrvl/nfcmrvl 0xc4ca647b nfcmrvl_nci_unregister_dev +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x0eee3da8 st_nci_remove +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x2cd88ed4 st_nci_hci_event_received +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x8084c79c st_nci_discover_se +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0xa1642d44 st_nci_disable_se +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0xa73cbf5e st_nci_hci_cmd_received +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0xacb59286 st_nci_enable_se +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0xc6b081a4 st_nci_probe +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0xfa85a7dd st_nci_hci_load_session +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 0x463a3ec2 ntb_transport_create_queue +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x46a63f69 ntb_transport_register_client +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 0xab571921 ntb_transport_unregister_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/phy/phy-omap-control 0x06cb90b5 omap_control_phy_power +EXPORT_SYMBOL_GPL drivers/phy/phy-omap-control 0x0fc71b81 omap_control_pcie_pcs +EXPORT_SYMBOL_GPL drivers/phy/phy-omap-control 0x210e74f8 omap_control_usb_set_mode +EXPORT_SYMBOL_GPL drivers/phy/phy-omap-usb2 0x00d48f33 omap_usb2_set_comparator +EXPORT_SYMBOL_GPL drivers/phy/phy-qcom-ufs 0x0e172862 ufs_qcom_phy_init_clks +EXPORT_SYMBOL_GPL drivers/phy/phy-qcom-ufs 0x1ababcc1 ufs_qcom_phy_init_vregulators +EXPORT_SYMBOL_GPL drivers/phy/phy-qcom-ufs 0x1f8d4853 ufs_qcom_phy_generic_probe +EXPORT_SYMBOL_GPL drivers/phy/phy-qcom-ufs 0x3b2a9936 ufs_qcom_phy_remove +EXPORT_SYMBOL_GPL drivers/phy/phy-qcom-ufs 0x7112daa1 ufs_qcom_phy_calibrate +EXPORT_SYMBOL_GPL drivers/phy/phy-qcom-ufs 0x72aa110b ufs_qcom_phy_power_on +EXPORT_SYMBOL_GPL drivers/phy/phy-qcom-ufs 0xa92cd2ac ufs_qcom_phy_exit +EXPORT_SYMBOL_GPL drivers/phy/phy-qcom-ufs 0xb971a14d get_ufs_qcom_phy +EXPORT_SYMBOL_GPL drivers/phy/phy-qcom-ufs 0xee2cd17d ufs_qcom_phy_power_off +EXPORT_SYMBOL_GPL drivers/power/pcf50633-charger 0x61d7afb3 pcf50633_mbc_usb_curlim_set +EXPORT_SYMBOL_GPL drivers/power/pcf50633-charger 0xa58830ea pcf50633_mbc_get_status +EXPORT_SYMBOL_GPL drivers/power/pcf50633-charger 0xfa8c4600 pcf50633_mbc_get_usb_online_status +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x4ccf9a71 mc13xxx_fixed_regulator_set_voltage +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0xc0e365ea mc13xxx_parse_regulators_dt +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0xd9b9d3c0 mc13xxx_fixed_regulator_ops +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0xe479373e mc13xxx_regulator_ops +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0xebb9faf7 mc13xxx_get_num_regulators_dt +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x5132b3f9 wm8350_dcdc_set_slot +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x5a5d96db wm8350_dcdc25_set_mode +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x80dbf8f3 wm8350_register_led +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x846bb9b7 wm8350_ldo_set_slot +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x93a9f01e wm8350_isink_set_flash +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0xd5f16852 wm8350_register_regulator +EXPORT_SYMBOL_GPL drivers/regulator/wm8400-regulator 0x2223de14 wm8400_register_regulator +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x1002fac5 cxgbi_parse_pdu_itt +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x14f73fe1 cxgbi_sock_fail_act_open +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x1a8138e7 cxgbi_get_conn_stats +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x24ee883c cxgbi_conn_tx_open +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x28c90bb5 cxgbi_hbas_add +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x2fcd7ddc cxgbi_conn_init_pdu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x31ed836b cxgbi_device_register +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x3a5c4389 cxgbi_ddp_page_size_factor +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x3fdf82c6 cxgbi_ddp_cleanup +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x42e6c6b0 cxgbi_device_find_by_netdev_rcu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x49c38b01 cxgbi_device_unregister +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x4cd78093 cxgbi_iscsi_cleanup +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x4fe752a9 cxgbi_sock_select_mss +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x50cd82a7 cxgbi_sock_closed +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x52e6efd0 cxgbi_ep_disconnect +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x5311a1a0 cxgbi_device_portmap_cleanup +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x53c8aa39 cxgbi_create_conn +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x5c8153eb cxgbi_device_find_by_lldev +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x5e1c6ca5 cxgbi_hbas_remove +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x64d094ab cxgbi_iscsi_init +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x6a7c8484 cxgbi_ddp_init +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x6aa384e4 cxgbi_set_conn_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x70c93fc9 cxgbi_sock_established +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x74f26fd7 cxgbi_create_session +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x76bae1f3 cxgbi_get_ep_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x792c55bb cxgbi_conn_pdu_ready +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x7fdb6004 cxgbi_device_unregister_all +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x83146538 cxgbi_conn_xmit_pdu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x8976a1ca cxgbi_set_host_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x8c2ba369 cxgbi_ddp_ppod_clear +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x9141df31 cxgbi_sock_free_cpl_skbs +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x9b9bf431 cxgbi_sock_skb_entail +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x9d036507 cxgbi_sock_rcv_abort_rpl +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x9fd5a609 cxgbi_cleanup_task +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xba99a6d7 cxgbi_conn_alloc_pdu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xbef4aec6 cxgbi_sock_purge_wr_queue +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xc221bee7 cxgbi_device_find_by_netdev +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xcdaf3c05 cxgbi_sock_act_open_req_arp_failure +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xd77eaba7 cxgbi_sock_rcv_close_conn_rpl +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xddb531fd cxgbi_get_host_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xde822e8b cxgbi_ep_connect +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xe66a4fc3 cxgbi_sock_check_wr_invariants +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xea4a4788 cxgbi_bind_conn +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xeed0b863 cxgbi_sock_rcv_wr_ack +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xef346615 cxgbi_attr_is_visible +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xf298aae1 cxgbi_ddp_ppod_set +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xf602509f cxgbi_ep_poll +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xf81a897c cxgbi_destroy_session +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xf9443183 cxgbi_sock_rcv_peer_close +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xffa93428 cxgbi_device_portmap_create +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x08ccf33d scsi_dh_attach +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x234c41f4 scsi_dh_activate +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x593a36c2 scsi_dh_handler_exist +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x717fc244 scsi_register_device_handler +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0xa2e95ac6 scsi_unregister_device_handler +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0xdeb73f08 scsi_dh_set_params +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0xdff6705c scsi_dh_attached_handler_name +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0xe05fbcda scsi_dh_detach +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x04506512 fcoe_get_paged_crc_eof +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x095965b0 fcoe_fcf_device_add +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x0fb51275 fcoe_queue_timer +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x2647eb5d fcoe_get_wwn +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x31736a35 fcoe_libfc_config +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x374c1e1c fcoe_wwn_from_mac +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x47942d7e fcoe_ctlr_device_add +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x4c465839 fcoe_validate_vport_create +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x5ba9461b fcoe_fc_crc +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x6a17a68b fcoe_link_speed_update +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x84b3d915 fcoe_wwn_to_str +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xb02c45f0 fcoe_clean_pending_queue +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xb35d7e5b fcoe_ctlr_device_delete +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xbb07ee2a fcoe_start_io +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xc19d69f3 __fcoe_get_lesb +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xc7c65a82 fcoe_get_lesb +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xd4eda9ad fcoe_fcf_device_delete +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xee12406d fcoe_ctlr_get_lesb +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xfca4f514 fcoe_check_wait_queue +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x0d056970 iscsi_boot_create_ethernet +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x52954042 iscsi_boot_create_target +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x63e06097 iscsi_boot_create_kset +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x82e9bed9 iscsi_boot_create_host_kset +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0xd1854324 iscsi_boot_destroy_kset +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0xe5f3905d iscsi_boot_create_initiator +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x028151a0 iscsi_conn_send_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x02e7de03 iscsi_prep_data_out_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x12b2ad06 iscsi_switch_str_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x13818b96 iscsi_eh_device_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x1a1851f6 iscsi_itt_to_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x22ccde13 iscsi_suspend_queue +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x26848c75 __iscsi_get_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x26dba733 iscsi_conn_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x3bef2f73 iscsi_pool_init +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x40b9e563 __iscsi_put_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x42dcb6a1 iscsi_host_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x44ea2652 iscsi_session_recovery_timedout +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x4a0f1877 iscsi_host_set_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x50858470 iscsi_session_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x61386cf8 iscsi_complete_scsi_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x61b939f5 iscsi_complete_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x653090a7 iscsi_host_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x7304fb06 iscsi_host_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x78bacabd iscsi_itt_to_ctask +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x80b00480 iscsi_set_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x8cfba697 iscsi_verify_itt +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x8d303b1b iscsi_pool_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x8f6e4b15 iscsi_session_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x9254583b iscsi_put_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x95893eba iscsi_conn_start +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x98d4c2ec iscsi_eh_target_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xa1c80014 __iscsi_complete_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xa954050a iscsi_eh_recover_target +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xa9b5bad2 iscsi_session_failure +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xaa337488 iscsi_host_add +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xacdd2def iscsi_session_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xb4d40aa5 iscsi_conn_bind +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xbd5f97e1 iscsi_target_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xbf8c9136 iscsi_conn_get_addr_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xc3be6c3c iscsi_conn_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xcc654592 iscsi_suspend_tx +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xd28aba0f iscsi_conn_stop +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xd69c5abd iscsi_requeue_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xdb98fc78 iscsi_conn_queue_work +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xeb7941a7 iscsi_host_remove +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xed1f8100 iscsi_eh_session_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xeeb3fcbe iscsi_queuecommand +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xf35204b5 iscsi_conn_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xf402844d iscsi_conn_failure +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xf6a03932 iscsi_update_cmdsn +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xfbf47ef2 iscsi_eh_abort +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x1d372968 iscsi_tcp_set_max_r2t +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x4ca93b12 iscsi_tcp_recv_skb +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x6db82a2a iscsi_tcp_conn_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x6eb32107 iscsi_tcp_conn_get_stats +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x77e5ebca iscsi_tcp_r2tpool_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x8b40162b iscsi_tcp_segment_done +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x96cb0913 iscsi_segment_seek_sg +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x9e3d0d47 iscsi_segment_init_linear +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xb303c047 iscsi_tcp_r2tpool_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xbb032a41 iscsi_tcp_dgst_header +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xd6f29c7a iscsi_tcp_task_xmit +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xdd899f50 iscsi_tcp_recv_segment_is_hdr +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xe12c720c iscsi_tcp_conn_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xeabaaec6 iscsi_tcp_cleanup_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xf0dd447d iscsi_tcp_task_init +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xf19a3f99 iscsi_tcp_segment_unmap +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xf3d4b61a iscsi_tcp_hdr_recv_prep +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x08a142a0 sas_free_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x10d09c6f sas_target_destroy +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x226ad1a5 sas_unregister_ha +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x27ba2836 sas_bios_param +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x29e8567b sas_domain_release_transport +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x3124d8c2 sas_phy_reset +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x49b8886b sas_domain_attach_transport +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x54eeec38 sas_drain_work +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x5a96238f sas_slave_configure +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x6033bed7 sas_change_queue_depth +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x648f8dca sas_alloc_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x655697b3 sas_target_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x7a64174b sas_task_abort +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x7f0b14e6 sas_request_addr +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x828479e0 sas_queuecommand +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x83c791cb sas_eh_device_reset_handler +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x8523be04 sas_ata_schedule_reset +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x85e821ac sas_register_ha +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x9c0c38e3 sas_alloc_slow_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xa05e8be8 sas_get_local_phy +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xa3cc0996 sas_eh_abort_handler +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xa61f63e1 sas_ssp_task_response +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xc5fea8ac sas_ioctl +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xffb039e0 sas_eh_bus_reset_handler +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x033600ae iscsi_post_host_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x1321e6c8 iscsi_create_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x1424852e iscsi_add_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x1ff56159 iscsi_scan_finished +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x24f2cefa iscsi_session_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x2bee7d87 iscsi_flashnode_bus_match +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x337dbb4d iscsi_is_session_online +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x33be7124 iscsi_block_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x3f1b3ae6 iscsi_destroy_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x3f819c26 iscsi_create_iface +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x48a1bb83 iscsi_create_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x4cb7fcf0 iscsi_alloc_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x50b5c6a9 iscsi_session_chkready +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x6039b0c9 iscsi_unblock_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x64563238 iscsi_lookup_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x657c7737 iscsi_recv_pdu +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x6634a447 iscsi_destroy_all_flashnode +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x699fe53e iscsi_get_discovery_parent_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x6f94e1dd iscsi_is_flashnode_conn_dev +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x707c4fc2 iscsi_destroy_flashnode_sess +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x72b016fa iscsi_host_for_each_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x7324a272 iscsi_find_flashnode_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x81fcce5a iscsi_destroy_iface +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x84a005f1 iscsi_get_router_state_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x9769b997 iscsi_get_port_speed_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xb8a61e07 iscsi_block_scsi_eh +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xbc071179 iscsi_get_ipaddress_state_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xc06d4cb9 iscsi_register_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xcc56bb37 iscsi_get_port_state_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xd3362036 iscsi_free_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xd426c1f1 iscsi_conn_login_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xd80abcd8 iscsi_find_flashnode_sess +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xdb0962c5 iscsi_offload_mesg +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xde7cf7a4 iscsi_create_flashnode_sess +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xe2fb8983 iscsi_ping_comp_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xe44ec376 iscsi_create_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xe5bb7f5d iscsi_conn_error_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xe70fa5c8 iscsi_remove_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xf4a3c136 iscsi_destroy_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xf4f74ea6 iscsi_is_session_dev +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xf540309a iscsi_unregister_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xfe1a6ac1 iscsi_destroy_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xfe3015f5 iscsi_create_flashnode_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0x0dcca7d1 sas_enable_tlr +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0x17ef9750 sas_tlr_supported +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0x467ecd81 sas_is_tlr_enabled +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0x6530f690 sas_disable_tlr +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_spi 0x0ef06974 spi_populate_ppr_msg +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_spi 0x557eeb89 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 0x267b409e srp_release_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x5f547f4c srp_remove_host +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x7998cf1b srp_stop_rport_timers +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x8340bedc srp_rport_del +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x9987049b srp_rport_add +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x9f000a36 srp_attach_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0xee891cc0 srp_tmo_valid +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0x0af3aca0 ufshcd_init +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0x36c54c81 ufshcd_remove +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0xd159eea4 ufshcd_dme_get_attr +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0xf207988f ufshcd_dme_set_attr +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x4b32d752 spi_bitbang_stop +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x4d0a9d9b spi_bitbang_cleanup +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x6acf1033 spi_bitbang_setup_transfer +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x78557d72 spi_bitbang_start +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0xedb4445b spi_bitbang_setup +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0x20b81ec4 dw_spi_suspend_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0x55602399 dw_spi_add_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0x6193cf78 dw_spi_remove_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0x8617b379 dw_spi_resume_host +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x01ff6827 spmi_register_read +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x1e36491e spmi_register_write +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x281e56f2 spmi_ext_register_write +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x3d5eea54 spmi_command_reset +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x44633b3b spmi_controller_remove +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x4cb73556 spmi_register_zero_write +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x72cf4195 spmi_command_wakeup +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x88ec78fd spmi_command_sleep +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x8a67b8f2 spmi_driver_register +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x8b3ddb3e spmi_ext_register_read +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xa2b167e2 spmi_ext_register_writel +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xa3e91804 spmi_device_remove +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xb2533dc8 spmi_device_add +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xd22a7be3 spmi_ext_register_readl +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xdf5f7ff1 spmi_controller_add +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xefe3c168 spmi_controller_alloc +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xf74dfe5d spmi_device_alloc +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xfd6d2d00 spmi_command_shutdown +EXPORT_SYMBOL_GPL drivers/ssb/ssb 0x18df830e ssb_pmu_spuravoid_pllupdate +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x004a6404 comedi_inc_scan_progress +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x0214ea66 comedi_legacy_detach +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x0cd330f4 range_unknown +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x130fa0e2 comedi_check_chanlist +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x19a7a156 comedi_is_subdevice_running +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x1a0077c9 comedi_alloc_devpriv +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 0x3142a6f8 comedi_alloc_subdevices +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x32289a5b comedi_readback_insn_read +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x394b3a14 comedi_driver_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x3d9d3f44 comedi_timeout +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x4236eaaf range_4_20mA +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x4380048b comedi_buf_write_free +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x49b74127 comedi_set_hw_dev +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x4fe634f3 range_bipolar2_5 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x55db5a57 comedi_dio_update_state +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x5edde951 comedi_set_spriv_auto_free +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x69f12048 comedi_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x6a2f226e comedi_buf_read_free +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x75f880c9 comedi_buf_read_alloc +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x77a864b4 comedi_dev_get_from_minor +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x8113872c range_unipolar10 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x82f493ba comedi_event +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x900ad2be comedi_nscans_left +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x972683ac comedi_nsamples_left +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x98148a7a comedi_alloc_spriv +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xa090e642 comedi_auto_unconfig +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xa44c70a6 comedi_handle_events +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xa5b13918 comedi_buf_write_alloc +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xa88069ac comedi_bytes_per_scan +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xa9d815f1 comedi_load_firmware +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xb0f7a86e comedi_dev_put +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xb679cebc range_0_20mA +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xb6ac62fe __comedi_request_region +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xbb52fc7f range_bipolar10 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xbc4de834 comedi_buf_read_n_available +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xbdbe75c6 range_unipolar2_5 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xc5073c51 comedi_buf_write_samples +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xcc822e48 comedi_auto_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xd36fc2ff comedi_alloc_subdev_readback +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xdb2044b2 range_unipolar5 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xe86e88b3 comedi_buf_read_samples +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xf4dd657f comedi_request_region +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xfcb48a82 comedi_dio_insn_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0x09e9a320 comedi_to_pci_dev +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0x1b54a48d comedi_pci_disable +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0x3306dc30 comedi_pci_auto_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0x421a0fda comedi_pci_enable +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0x73c8d81e comedi_pci_detach +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0xbe8f0b05 comedi_pci_driver_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0xc84a5a08 comedi_pci_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0xcd2165a5 comedi_pci_auto_unconfig +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0x183f7faa comedi_usb_auto_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0x6b9a99fa comedi_usb_auto_unconfig +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0xa93dca89 comedi_usb_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0xb1c8f948 comedi_to_usb_interface +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0xc8c3f700 comedi_to_usb_dev +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0xcfbb4a0e comedi_usb_driver_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/addi_watchdog 0x0e6035ee 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 0x8b38b591 amplc_dio200_common_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/amplc_dio200_common 0xf8553e1f amplc_dio200_set_enhance +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/amplc_pc236_common 0x6d955137 amplc_pc236_common_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x0998b2b3 comedi_8254_read +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x25fa62a2 comedi_8254_update_divisors +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x48bee29f comedi_8254_mm_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x5ba9e4c3 comedi_8254_status +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x5e678e8a comedi_8254_set_mode +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x60a97b38 comedi_8254_cascade_ns_to_timer +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x73348c4e comedi_8254_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x931313b2 comedi_8254_ns_to_timer +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x9ea348eb comedi_8254_write +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0xa6444f64 comedi_8254_subdevice_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0xb745f651 comedi_8254_load +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0xe370a22b comedi_8254_set_busy +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0xe9795d8f comedi_8254_pacer_enable +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8255 0x72e73d40 subdev_8255_mm_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8255 0x9a5ce879 subdev_8255_regbase +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8255 0xbfb789cd subdev_8255_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/das08 0x599456df das08_common_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x31808b0e mite_buf_change +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x3186d9f0 mite_bytes_in_transit +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x3c5dfd9d mite_bytes_read_from_memory_ub +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x407e6ab5 mite_request_channel_in_range +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x603857fc mite_sync_output_dma +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x60dd6996 mite_setup2 +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x7094da7d mite_done +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x72bc23af mite_free_ring +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x73b6a5e7 mite_bytes_written_to_memory_lb +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x7b2907c9 mite_prep_dma +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x7e0e682d mite_detach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x833ddcd5 mite_sync_input_dma +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x86e57458 mite_alloc_ring +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x8f101740 mite_get_status +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xa64a7ace mite_dma_disarm +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xbb15ad77 mite_bytes_read_from_memory_lb +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xd88e2c96 mite_release_channel +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xdd2caeb0 mite_dma_arm +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xea05caa5 mite_dma_tcr +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xf4fef50d mite_bytes_written_to_memory_ub +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xf7e5d9f2 mite_alloc +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_common 0x79bbdc83 labpc_common_detach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_common 0x8ca1dac8 labpc_common_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x0882849a ni_tio_init_counter +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x1cd87188 ni_gpct_device_destroy +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x33a3a16e ni_tio_insn_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x4260ef79 ni_tio_arm +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x5a496a11 ni_tio_insn_read +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x8d6d8cdc ni_tio_insn_write +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0xc5f40ad2 ni_tio_set_gate_src +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0xdeff5ce2 ni_gpct_device_construct +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0x043932ba ni_tio_set_mite_channel +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0x8d5cdae0 ni_tio_acknowledge +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0x9e56699d ni_tio_cmd +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0xc18e85fd ni_tio_handle_interrupt +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0xcf60f44a ni_tio_cancel +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0xd406b651 ni_tio_cmdtest +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x07480653 comedi_get_n_channels +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x2b752558 comedi_dio_get_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x3583bb61 comedi_open +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x4cb2e271 comedi_find_subdevice_by_type +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x5d42ac99 comedi_dio_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x81fadd78 comedi_close +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0xba101e6c comedi_dio_bitfield2 +EXPORT_SYMBOL_GPL drivers/staging/iio/addac/adt7316 0x4c035cce adt7316_pm_ops +EXPORT_SYMBOL_GPL drivers/staging/lustre/lustre/obdclass/obdclass 0x0c1db33c debugfs_lustre_root +EXPORT_SYMBOL_GPL drivers/staging/lustre/lustre/obdclass/obdclass 0x3e5b46e2 lustre_attr_show +EXPORT_SYMBOL_GPL drivers/staging/lustre/lustre/obdclass/obdclass 0x9b8f7bea lustre_sysfs_ops +EXPORT_SYMBOL_GPL drivers/staging/lustre/lustre/obdclass/obdclass 0xed000ce2 lustre_kobj +EXPORT_SYMBOL_GPL drivers/staging/lustre/lustre/obdclass/obdclass 0xf610349b lustre_attr_store +EXPORT_SYMBOL_GPL drivers/staging/nvec/nvec 0x470ef9ae nvec_msg_free +EXPORT_SYMBOL_GPL drivers/staging/nvec/nvec 0x76434e79 nvec_unregister_notifier +EXPORT_SYMBOL_GPL drivers/staging/nvec/nvec 0xc3644198 nvec_register_notifier +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x0e81c76d spk_serial_out +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x1289fdc5 spk_do_catch_up +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x14f06fe7 spk_serial_in_nowait +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x18efde91 spk_synth_immediate +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x1b9251fd spk_synth_flush +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 0x475e158a synth_request_region +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x5418ca48 spk_var_show +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x5e53beda synth_add +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x7a45cf28 spk_synth_is_alive_nop +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x86442336 speakup_event +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x8e146195 synth_release_region +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x9a888082 synth_buffer_getc +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x9afd76e9 spk_serial_synth_probe +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x9bc781ee synth_remove +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xb2978dbc speakup_info +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xb48956f8 synth_buffer_peek +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xb699bb9e spk_synth_is_alive_restart +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xbbd15a51 speakup_start_ttys +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xc766ae09 synth_printf +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xd1b551a2 spk_get_var +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xe7cd4558 spk_serial_release +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xe7e810f8 spk_serial_in +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xeb86f406 spk_var_store +EXPORT_SYMBOL_GPL drivers/tty/n_tracesink 0x585ebaac n_tracesink_datadrain +EXPORT_SYMBOL_GPL drivers/uio/uio 0x1c5856f3 __uio_register_device +EXPORT_SYMBOL_GPL drivers/uio/uio 0xbf32076d uio_unregister_device +EXPORT_SYMBOL_GPL drivers/uio/uio 0xed09d4b8 uio_event_notify +EXPORT_SYMBOL_GPL drivers/usb/atm/usbatm 0x8b97a0af usbatm_usb_disconnect +EXPORT_SYMBOL_GPL drivers/usb/atm/usbatm 0xcdd53bfc usbatm_usb_probe +EXPORT_SYMBOL_GPL drivers/usb/chipidea/ci_hdrc 0xc7e4028e ci_hdrc_add_device +EXPORT_SYMBOL_GPL drivers/usb/chipidea/ci_hdrc 0xef870f99 ci_hdrc_remove_device +EXPORT_SYMBOL_GPL drivers/usb/chipidea/usbmisc_imx 0x0e77fff5 imx_usbmisc_set_wakeup +EXPORT_SYMBOL_GPL drivers/usb/chipidea/usbmisc_imx 0xcaa6c370 imx_usbmisc_init +EXPORT_SYMBOL_GPL drivers/usb/chipidea/usbmisc_imx 0xf117434b imx_usbmisc_init_post +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0x096a87fa ulpi_read +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0x6a9e60a3 ulpi_write +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0x7faf910b ulpi_unregister_interface +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0x9301d8bd ulpi_register_driver +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0x940c086a ulpi_unregister_driver +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0xfc3b62a7 ulpi_register_interface +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x22ba1e03 gether_connect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x2c15cbc5 gether_set_qmult +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x4469a7c9 gether_set_gadget +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x8878cfa6 gether_cleanup +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x947ed4f1 gether_get_host_addr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x9f47fceb gether_register_netdev +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xa0d583e5 gether_set_dev_addr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xa1fa1d41 gether_get_host_addr_u8 +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xa8e941d0 gether_setup_name_default +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xad36af95 gether_set_host_addr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xbcb976c9 gether_get_qmult +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xd273847f gether_get_host_addr_cdc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xd2c7e4c5 gether_get_dev_addr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xde61a307 gether_get_ifname +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xe79545f0 gether_setup_name +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xebf05ca9 gether_disconnect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0x1f52ec72 gserial_disconnect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0x33bfdca2 gserial_alloc_line +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0x912aa7ab gserial_connect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0xb6652875 gserial_free_line +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0xb9c516c6 gs_alloc_req +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0xce29ba00 gs_free_req +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_fs 0x5244a9de ffs_lock +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_fs 0x7a5f2950 ffs_name_dev +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_fs 0xc67700f2 ffs_single_dev +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x0a28d673 fsg_show_removable +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x0a5230df fsg_common_set_nluns +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 0x1b1cc3af store_cdrom_address +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 0x23c8c1b9 fsg_lun_open +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 0x2d10b6a7 fsg_common_create_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 0x423845e4 fsg_ss_bulk_in_comp_desc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x51707c29 fsg_common_run_thread +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 0x5cd43abb fsg_show_file +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x5d80ea50 fsg_common_remove_lun +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x69febb78 fsg_store_file +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 0x7f24abcc fsg_show_ro +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 0x95cffb3e fsg_hs_bulk_in_desc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x99023bfc fsg_common_put +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 0x9dc025a5 fsg_common_free_luns +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xa191f4b2 fsg_lun_close +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xa46e6443 fsg_common_get +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 0xa78690c1 fsg_lun_fsync_sub +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 0xc0dae98f fsg_store_removable +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xc43ade85 fsg_store_nofua +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xd3ae3b65 fsg_common_create_luns +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xd468f882 fsg_common_set_ops +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xd715a53d fsg_store_cdrom +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xe4d1591e fsg_config_from_params +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xe964f9c3 fsg_common_set_cdev +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xec6ba756 fsg_store_ro +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xf2077b4a 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_mass_storage 0xff479995 fsg_show_cdrom +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x064b95ee rndis_set_param_medium +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x116ec858 rndis_rm_hdr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x3cfe03d9 rndis_borrow_net +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x3fb863d9 rndis_set_host_mac +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x410a133b rndis_signal_disconnect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x64dde41c rndis_add_hdr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x78c22948 rndis_set_param_dev +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x796e93c0 rndis_free_response +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x8db9979f rndis_deregister +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x977a0fd0 rndis_msg_parser +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xbe81b3e2 rndis_register +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xbf61bb64 rndis_set_param_vendor +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xdd45768b rndis_signal_connect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xfd4d72e0 rndis_get_next_response +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xfe0170e2 rndis_uninit +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x075590bd usb_get_function_instance +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x0b24dd15 usb_composite_setup_continue +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x0bec3497 usb_interface_id +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x25ca1cbd usb_composite_overwrite_options +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x2e09263f usb_copy_descriptors +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x42310212 usb_assign_descriptors +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x492f44ed usb_remove_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x550ca804 usb_put_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x5f0f2e62 config_ep_by_speed +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x6d222f1f usb_string_ids_tab +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x70f93240 usb_add_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x7bfd089c usb_ep_autoconfig +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x82656117 usb_put_function_instance +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x860af4d5 alloc_ep_req +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x8c72e387 usb_ep_autoconfig_reset +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x94d7075a usb_gadget_get_string +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x96be2012 usb_function_activate +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x9e7cb175 usb_add_config +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xa66df4c5 usb_string_ids_n +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xad4b4c90 unregister_gadget_item +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xbdc8fe8a usb_function_register +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xc7040a96 usb_get_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xc7b435c0 usb_ep_autoconfig_ss +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xd2ea2134 usb_descriptor_fillbuf +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xd399c898 usb_function_deactivate +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xd436ad6e usb_string_id +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xd624b3ea usb_composite_unregister +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xd7fd8e29 usb_add_config_only +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xdd3b4c61 usb_gstrings_attach +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xe866ad7d usb_free_all_descriptors +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xf474a207 usb_gadget_config_buf +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xf53b7b5c usb_composite_probe +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xff47a5d6 usb_function_unregister +EXPORT_SYMBOL_GPL drivers/usb/misc/ezusb 0x4943b1f8 ezusb_fx1_set_reset +EXPORT_SYMBOL_GPL drivers/usb/misc/ezusb 0x7d241b00 ezusb_fx1_ihex_firmware_download +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x06e1802e usb_ftdi_elan_edset_empty +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x29d2f12a usb_ftdi_elan_edset_single +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x34a74cbd ftdi_elan_gone_away +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x4158bcc9 usb_ftdi_elan_edset_flush +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x55c1645a usb_ftdi_elan_read_pcimem +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x5640d02e usb_ftdi_elan_edset_output +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x97c48433 usb_ftdi_elan_write_pcimem +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xa5d2037c usb_ftdi_elan_edset_setup +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xb08f24e4 usb_ftdi_elan_edset_input +EXPORT_SYMBOL_GPL drivers/usb/musb/omap2430 0x6fb55e1f omap_musb_mailbox +EXPORT_SYMBOL_GPL drivers/usb/phy/phy-am335x-control 0x4a3d2d67 am335x_get_phy_control +EXPORT_SYMBOL_GPL drivers/usb/phy/phy-isp1301 0x023a9a47 isp1301_get_client +EXPORT_SYMBOL_GPL drivers/usb/phy/phy-tegra-usb 0x300d7d5e tegra_usb_phy_postresume +EXPORT_SYMBOL_GPL drivers/usb/phy/phy-tegra-usb 0x5cfe185b tegra_ehci_phy_restore_start +EXPORT_SYMBOL_GPL drivers/usb/phy/phy-tegra-usb 0xdc1c9a38 tegra_ehci_phy_restore_end +EXPORT_SYMBOL_GPL drivers/usb/phy/phy-tegra-usb 0xeb4c2c8b tegra_usb_phy_preresume +EXPORT_SYMBOL_GPL drivers/usb/serial/usb_wwan 0x694e0573 usb_wwan_port_probe +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x04ae3c5d usb_serial_generic_write_start +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x2fce5629 usb_serial_deregister_drivers +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x37e62d54 usb_serial_generic_process_read_urb +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x66942b91 usb_serial_generic_unthrottle +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x6fb1b46f usb_serial_generic_open +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x7cd27236 usb_serial_generic_write +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x80821eb5 usb_serial_generic_chars_in_buffer +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x8981f4aa usb_serial_handle_sysrq_char +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x938289e7 usb_serial_handle_break +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xa8d06ea1 usb_serial_generic_resume +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xaefb0116 usb_serial_generic_submit_read_urbs +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xbfe230dd usb_serial_handle_dcd_change +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xc26ff955 usb_serial_generic_wait_until_sent +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xc6c8e2ff usb_serial_generic_read_bulk_callback +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xd7970ef1 usb_serial_register_drivers +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xd8dbe7c1 usb_serial_generic_tiocmiwait +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xe1e01ac2 usb_serial_port_softint +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xe30da217 usb_serial_generic_close +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xf19a59a6 usb_serial_generic_write_bulk_callback +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xf552065c usb_serial_generic_get_icount +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xfb82edd2 usb_serial_generic_throttle +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x1bc3edc2 usb_stor_sense_invalidCDB +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x2b21703c usb_stor_CB_transport +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x2cb05222 usb_stor_bulk_srb +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x35b00e12 usb_stor_probe1 +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x3e6e79ae usb_stor_CB_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x45f56e2e usb_stor_post_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x5c3d4522 usb_stor_disconnect +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x69b8494f usb_stor_clear_halt +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x6c8e0c16 usb_stor_resume +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x7036e5f6 usb_stor_pre_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x72caa14e usb_stor_adjust_quirks +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x9083b83f usb_stor_transparent_scsi_command +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x92693a00 fill_inquiry_response +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xa66b9af9 usb_stor_probe2 +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xa7e8607c usb_stor_Bulk_transport +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xaadf5a40 usb_stor_bulk_transfer_buf +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xb782f0c9 usb_stor_bulk_transfer_sg +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xba34f0fa usb_stor_access_xfer_buf +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xbc7458cf usb_stor_reset_resume +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xcc3d17d2 usb_stor_suspend +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xcca29d61 usb_stor_Bulk_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xe2e22b2f usb_stor_set_xfer_buf +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xe475c7d3 usb_stor_host_template_init +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xe520b376 usb_stor_ctrl_transfer +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xed77a4bd usb_stor_control_msg +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x141670ba usbip_recv_xbuff +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x19db4f8b usbip_pad_iso +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x2d76784e usbip_pack_pdu +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x40b1df5c usbip_alloc_iso_desc_pdu +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x5c8f1d45 usbip_recv +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x78b72f44 usbip_debug_flag +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x7ec11e8d usbip_start_eh +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x840609ef usbip_stop_eh +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x897306b2 usbip_dump_urb +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x8ca2d1b8 usbip_recv_iso +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x9183d6b6 usbip_event_happened +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x98a69a53 dev_attr_usbip_debug +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xc94df696 usbip_event_add +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/usb/wusbcore/wusb-wa 0x5bf93f64 __wa_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x8f83ce63 wa_urb_enqueue +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xbb6778cd rpipe_clear_feature_stalled +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xc146cdeb wa_dti_start +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xc543b60e wa_process_errored_transfers_run +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xc565004d wa_urb_dequeue +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xc6e17cca rpipe_ep_disable +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xcb55ad58 rpipe_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xd734b2c6 wa_create +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xf4654c3f wa_urb_enqueue_run +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x00509aab wusbhc_rh_control +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x0bb6bf5e wusb_cluster_id_get +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x174b3af2 wusbhc_mmcie_set +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x18c3b748 wusbhc_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x1aa2fbd7 wusbhc_create +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x3faf36e5 wusbhc_handle_dn +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x6a33f449 wusbhc_b_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x77c5b6fb wusbhc_rh_start_port_reset +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x7f0b7631 wusb_dev_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xb725d128 wusb_cluster_id_put +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xc5802f06 __wusb_dev_get_by_usb_dev +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xcb66e499 wusbhc_giveback_urb +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xcd87a484 wusbhc_chid_set +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xd671fb1c wusbhc_rh_status_data +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xdc1d815c wusbhc_mmcie_rm +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xf5474682 wusbhc_reset_all +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xf770a6b4 wusbd +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xf77a0f64 wusbhc_b_create +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xfe2e17d7 wusb_et_name +EXPORT_SYMBOL_GPL drivers/uwb/i1480/dfu/i1480-dfu-usb 0x8d85653b i1480_cmd +EXPORT_SYMBOL_GPL drivers/uwb/i1480/dfu/i1480-dfu-usb 0xc1788f4d i1480_rceb_check +EXPORT_SYMBOL_GPL drivers/uwb/i1480/dfu/i1480-dfu-usb 0xfa9c3b70 i1480_fw_upload +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x14a21d1f umc_device_register +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x2f30c456 umc_bus_type +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x7f3e1a0e umc_device_unregister +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x9703ea66 __umc_driver_register +EXPORT_SYMBOL_GPL drivers/uwb/umc 0xa5c8b0a9 umc_match_pci_id +EXPORT_SYMBOL_GPL drivers/uwb/umc 0xa9bd4277 umc_driver_unregister +EXPORT_SYMBOL_GPL drivers/uwb/umc 0xec3592dd umc_device_create +EXPORT_SYMBOL_GPL drivers/uwb/umc 0xf8e10c79 umc_controller_reset +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x0100c811 uwb_rc_cmd +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x0667c2cc __uwb_rc_try_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x0a71ba4e uwb_est_find_size +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x0b8aad57 uwb_est_unregister +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x0e7fcdfd uwb_rsv_modify +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x26ae3354 uwb_rsv_destroy +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x27aeb779 uwb_rc_init +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x386a53d6 uwb_rc_vcmd +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x456c1abd uwb_rc_neh_error +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x472a9456 uwb_notifs_register +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x4d57ae3c uwb_rsv_type_str +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x549b0122 uwb_rc_put +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x57c06bcf uwb_pal_init +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x5871ec98 uwb_rc_pre_reset +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x5e4bc088 __uwb_addr_print +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x6dee392d uwb_rsv_accept +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x79e1c4b0 uwb_rc_mac_addr_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x7dcfcd23 uwb_ie_next +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x87050c12 uwb_radio_stop +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x8f1e2486 uwb_rc_dev_addr_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x90017349 uwb_dev_try_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x91010e56 uwb_pal_unregister +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x95997fe5 uwb_radio_start +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x98413234 uwb_rsv_state_str +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x9e9b7e7d uwb_rc_post_reset +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xa0754db8 uwb_rc_get_by_dev +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xa99deaeb uwb_rc_neh_grok +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xaab2618d uwb_rc_cmd_async +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xac05893a uwb_rsv_establish +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xb06be4f3 uwb_pal_register +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xb2c5d01e uwb_rc_ie_rm +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xc38183b4 uwb_rc_ie_add +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xc70e1d62 uwb_rsv_create +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xd7ccfc25 uwb_rc_add +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xd82e10b4 uwb_rsv_get_usable_mas +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xda45f39f uwb_rsv_terminate +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xe1716f06 uwb_est_register +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xe9f88e10 uwb_notifs_deregister +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xf10a33d1 uwb_dev_for_each +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xf27aead9 uwb_rc_get_by_grandpa +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xf3f03dd6 uwb_rc_reset_all +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xfeaf19f8 uwb_rc_alloc +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xff919ffb uwb_rc_rm +EXPORT_SYMBOL_GPL drivers/uwb/whci 0x0386a5f4 whci_wait_for +EXPORT_SYMBOL_GPL drivers/vfio/platform/reset/vfio-platform-calxedaxgmac 0x5ee4407f vfio_platform_calxedaxgmac_reset +EXPORT_SYMBOL_GPL drivers/vfio/platform/vfio-platform 0x1754d05a vfio_platform_probe_common +EXPORT_SYMBOL_GPL drivers/vfio/platform/vfio-platform 0x9a7f89b6 vfio_platform_remove_common +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x081f4736 vfio_unregister_iommu_driver +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x253a42f2 vfio_register_iommu_driver +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x3567743b vfio_external_user_iommu_id +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x3e39476c vfio_del_group_dev +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x52a4b236 vfio_device_get_from_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 0xae7136c1 vfio_group_get_external_user +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 0xc4b7e4f9 vfio_add_group_dev +EXPORT_SYMBOL_GPL drivers/vfio/vfio_virqfd 0x0f326345 vfio_virqfd_disable +EXPORT_SYMBOL_GPL drivers/vfio/vfio_virqfd 0xee663149 vfio_virqfd_enable +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x10482e0b vhost_dev_has_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x19a782ee vhost_poll_queue +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x1dd12976 vhost_dev_reset_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x1ed4b867 vhost_poll_start +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x1fecc2db vhost_poll_stop +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x207359e7 vhost_dev_ioctl +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x269f7a09 vhost_dev_reset_owner_prepare +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x2b7a44bd vhost_signal +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x2b871b00 vhost_log_write +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x32bcc5e8 vhost_work_init +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x33c3c71c vhost_disable_notify +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x3b5ce99a vhost_work_queue +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x456d1aaf vhost_dev_stop +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x4a543365 vhost_dev_set_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x4df3726b vhost_add_used +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x6097502e vhost_init_used +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x641e00e0 vhost_vq_access_ok +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x6748c026 vhost_vring_ioctl +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x7f214bab vhost_log_access_ok +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x7fbf749d vhost_get_vq_desc +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x8aec67d6 vhost_add_used_and_signal_n +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x90aea42b vhost_add_used_n +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xa4961fd0 vhost_dev_cleanup +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xaeabec31 vhost_discard_vq_desc +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xc5ca0663 vhost_work_flush +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xc8b9671b vhost_poll_init +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xce390cb6 vhost_add_used_and_signal +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xdd779c00 vhost_dev_check_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xe02165a2 vhost_poll_flush +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xe2d0e428 vhost_enable_notify +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xfd749a5a vhost_dev_init +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x03bbe8c3 ili9320_probe_spi +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x1e053bb9 ili9320_remove +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x1f73be23 ili9320_resume +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x229ec08a ili9320_write +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0xaeb8364b ili9320_shutdown +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0xc9887b32 ili9320_suspend +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0xeb3c8d2c ili9320_write_regs +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x12ec1f3a auok190x_pm +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x158aae8a auok190x_send_cmdargs_pixels_nowait +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x2f736078 auok190x_read_cmdargs +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x3cf1ec70 auok190x_send_cmdargs +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x95ae8573 auok190x_common_remove +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0xa4c5ce99 auok190x_send_cmdargs_pixels +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0xae4a9cc6 auok190x_common_probe +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0xb50c1c19 auok190x_send_cmdargs_nowait +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0xb8a1bed6 auok190x_send_command +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0xde7d27bf auok190x_send_command_nowait +EXPORT_SYMBOL_GPL drivers/video/fbdev/core/fb_ddc 0xb9196449 fb_ddc_read +EXPORT_SYMBOL_GPL drivers/video/fbdev/core/fb_sys_fops 0xc85d80ab fb_sys_read +EXPORT_SYMBOL_GPL drivers/video/fbdev/core/fb_sys_fops 0xc996a316 fb_sys_write +EXPORT_SYMBOL_GPL drivers/video/fbdev/sh_mobile_meram 0x5bcf7505 sh_mobile_meram_free +EXPORT_SYMBOL_GPL drivers/video/fbdev/sh_mobile_meram 0x658ce451 sh_mobile_meram_cache_free +EXPORT_SYMBOL_GPL drivers/video/fbdev/sh_mobile_meram 0xcfcb4db4 sh_mobile_meram_cache_update +EXPORT_SYMBOL_GPL drivers/video/fbdev/sh_mobile_meram 0xd5d2f843 sh_mobile_meram_alloc +EXPORT_SYMBOL_GPL drivers/video/fbdev/sh_mobile_meram 0xf7a567de sh_mobile_meram_cache_alloc +EXPORT_SYMBOL_GPL drivers/video/fbdev/sis/sisfb 0x294a10d0 sis_free_new +EXPORT_SYMBOL_GPL drivers/video/fbdev/sis/sisfb 0x98d6b993 sis_malloc_new +EXPORT_SYMBOL_GPL drivers/w1/wire 0x4fac9868 w1_write_block +EXPORT_SYMBOL_GPL drivers/w1/wire 0x7c2f2afb w1_calc_crc8 +EXPORT_SYMBOL_GPL drivers/w1/wire 0x8a8427c7 w1_reset_bus +EXPORT_SYMBOL_GPL drivers/w1/wire 0x979d1942 w1_reset_resume_command +EXPORT_SYMBOL_GPL drivers/w1/wire 0xb142a99e w1_next_pullup +EXPORT_SYMBOL_GPL drivers/w1/wire 0xb42f259d w1_reset_select_slave +EXPORT_SYMBOL_GPL drivers/w1/wire 0xc8960904 w1_read_block +EXPORT_SYMBOL_GPL drivers/w1/wire 0xe904e5b4 w1_touch_block +EXPORT_SYMBOL_GPL drivers/w1/wire 0xf745e751 w1_write_8 +EXPORT_SYMBOL_GPL drivers/w1/wire 0xfeaf93f8 w1_read_8 +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x69393e28 dlm_posix_lock +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x85558acc dlm_posix_unlock +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x9321df95 dlm_lock +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xc6dc8c2f dlm_new_lockspace +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xcf5c8c2c dlm_posix_get +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xcf9f3328 dlm_release_lockspace +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xdc583c08 dlm_unlock +EXPORT_SYMBOL_GPL fs/fscache/fscache 0x092cf98e fscache_object_sleep_till_congested +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x1bfb950c nlmsvc_unlock_all_by_sb +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x2ac999cd nlmsvc_ops +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x40c34fb7 lockd_down +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x77e35ccc nlmsvc_unlock_all_by_ip +EXPORT_SYMBOL_GPL fs/lockd/lockd 0xa6c50578 nlmclnt_done +EXPORT_SYMBOL_GPL fs/lockd/lockd 0xb718efcf lockd_up +EXPORT_SYMBOL_GPL fs/lockd/lockd 0xe437d550 nlmclnt_proc +EXPORT_SYMBOL_GPL fs/lockd/lockd 0xf37e619c nlmclnt_init +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0164140c nfs_mknod +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x042c9227 nfs_init_server_rpcclient +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x059865b8 nfs_create_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x05ae4ee7 nfs_mkdir +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x096bc238 nfs_file_write +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0a595168 nfs_put_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0bfa328d nfs_show_devname +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0ca9a156 nfs_file_mmap +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0f1a3b64 nfs_setsecurity +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1134a49c nfs_fs_mount_common +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1389d726 nfs_free_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x141ea2fa nfs_pageio_resend +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x147893b5 nfs_link +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1681165c nfs_file_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x16b6be32 nfs_fhget +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x17bcdd1d nfs_initiate_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x18023156 nfs_close_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1ac66641 alloc_nfs_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1b71173a nfs_setattr_update_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1f69699e nfs_commitdata_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2018bfaf nfs_show_options +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2281e2c4 nfs_pageio_reset_read_mds +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x26630bfc nfs_revalidate_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x26884ff7 nfs_alloc_fhandle +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2ad335da nfs4_label_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2c9fdfa8 register_nfs_version +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3124be31 nfs_setattr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x362e6b3e nfs_sops +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3888e0ac nfs_request_add_commit_list_locked +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x39e05ac3 nfs_idmap_cache_timeout +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3ad29df4 nfs_unlink +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3c1c6850 nfs_pageio_init_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3ca31f35 nfs_net_id +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3dca4a5b nfs_instantiate +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3f074274 nfs_statfs +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3f2690f2 nfs_check_flags +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x42f2c81f nfs4_client_id_uniquifier +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4302394f nfs_file_operations +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x44c43277 nfs_fs_mount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x462fc812 nfs_sync_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x48583b5f nfs_try_mount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4cb9e001 recover_lost_locks +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4e16edb9 nfs_request_add_commit_list +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4eb4c317 nfs_generic_pgio +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4f813a14 nfs_get_lock_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4fafc795 nfs_file_fsync_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x50ccd953 nfs_commitdata_release +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x51892d61 nfs_callback_set_tcpport +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x51af1f53 nfs_access_add_cache +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x52a4a783 nfs_put_lock_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5446b557 nfs_request_remove_commit_list +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x57147c9a nfs_lookup +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x584b8482 nfs_inc_attr_generation_counter +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x59584f76 nfs_wait_client_init_complete +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5bb7daee nfs_lock +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5cd17aa8 nfs_permission +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5e1d863a nfs_sockaddr_match_ipaddr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5e8e50a6 nfs_post_op_update_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5fd78434 nfs_init_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x630358e1 nfs_fs_type +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x63a203cf nfs_create_rpc_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x64f6df91 nfs_create +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x66ebf14e nfs_atomic_open +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x678c7d23 nfs_fscache_open_file +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6b38a09c nfs_sb_active +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6ca37059 nfs_do_submount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6d249048 nfs_access_zap_cache +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6d6a732a __tracepoint_nfs_fsync_exit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x73434bdc nfs_clone_sb_security +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7bef1320 nfs_fill_super +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7e760442 nfs_rename +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x80e05f5c nfs_mark_client_ready +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x81d2a838 nfs_alloc_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x842aa403 nfs_get_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x84a20208 nfs_alloc_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8761670d nfs_wb_all +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x88b2b1e0 nfs_drop_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8a677354 nfs_file_llseek +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 0x929bf070 nfs_probe_fsinfo +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x92c65075 put_nfs_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x966668b5 nfs_pageio_reset_write_mds +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9d3b8a38 nfs_flock +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9e562c1c nfs_writeback_update_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9ee5b81b nfs_access_set_mask +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9f40aa31 nfs_free_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa0cfc619 nfs_server_insert_lists +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa0e76bcd nfs_server_remove_lists +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa284ac79 nfs_zap_acl_cache +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa363f694 nfs_destroy_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa6c865ee nfs_wait_bit_killable +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa8d2d1ce nfs_callback_tcpport +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa8e9e1ae send_implementation_id +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xaa458f53 nfs4_dentry_operations +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xaaa14361 nfs_dreq_bytes_left +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xad1e585c nfs_invalidate_atime +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb06725ab nfs_force_lookup_revalidate +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb606e716 nfs_fattr_init +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb650f7b0 nfs_file_splice_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb666a851 nfs_pageio_init_write +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb7ab31a5 nfs_alloc_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb9f8b949 nfs_pageio_init +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbad17a15 nfs_remount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbb8bb777 nfs_generic_pg_test +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbbb07757 nfs_show_path +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbca31844 nfs_sb_deactive +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbfc4224b nfs_init_cinfo +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc10cd677 nfs_umount_begin +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc3ebd310 nfs_dentry_operations +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc41637f6 nfs_pgio_header_free +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc4de25fb nfs_write_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc4ff1e9f nfs_auth_info_match +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc5ed58d1 nfs_pgio_header_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc5ef47d5 nfs_init_timeout_values +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xcb133572 nfs_show_stats +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xcc4fac93 nfs_server_copy_userdata +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xcd6a1a0a nfs_file_flush +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xcf360227 nfs_getattr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd2084b8b nfs_submount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd2513081 _nfs_display_fhandle_hash +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd54d988b nfs_kill_super +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd6c15f4f nfs4_fs_type +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdae9b5d7 nfs4_disable_idmapping +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdb402420 nfs_commit_free +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xddb2dda8 nfs_initiate_pgio +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdf95166a nfs_refresh_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe0fcb41e nfs_pgio_data_destroy +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe50e4e53 nfs_init_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe711193b nfs_may_open +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe88d551f nfs_post_op_update_inode_force_wcc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe92c510d nfs_direct_set_resched_writes +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xea007711 __tracepoint_nfs_fsync_enter +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xeaa24e29 nfs_path +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xeb33296d nfs_pgheader_init +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xebcc5f69 nfs_clear_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xec45920d nfs_symlink +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xeecd0168 nfs_rmdir +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xef115819 nfs_clone_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf00d7c14 get_nfs_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf0406542 nfs_file_set_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf0435504 nfs_set_sb_security +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf15cd002 nfs_inode_attach_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf7c51357 nfs_pgio_current_mirror +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfb7ee006 nfs_alloc_fattr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfc619abd _nfs_display_fhandle +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfc88fae9 nfs_retry_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xff6ef6d1 unregister_nfs_version +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xff8e7337 nfs_file_release +EXPORT_SYMBOL_GPL fs/nfs/nfsv3 0xa12dc8f2 nfs3_set_ds_client +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x0267be70 pnfs_nfs_generic_sync +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x03ac83d3 nfs4_pnfs_ds_add +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x066cf4c4 nfs4_schedule_stateid_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x06c6627c pnfs_update_layout +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x0b1e76c6 pnfs_ld_read_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x103979aa nfs4_init_deviceid_node +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x170f3ed6 nfs41_maxgetdevinfo_overhead +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x176cb580 pnfs_generic_pg_init_write +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x1a2b4cc2 pnfs_generic_scan_commit_lists +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x1eac048b nfs4_delete_deviceid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x2120aaca nfs4_find_get_deviceid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x21af0d8b nfs40_setup_sequence +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x22225cac pnfs_generic_recover_commit_reqs +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x23801632 nfs41_setup_sequence +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x2700dc87 nfs4_mark_deviceid_unavailable +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x2b905706 nfs4_schedule_migration_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x3218ed31 pnfs_generic_sync +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x33636257 pnfs_generic_pg_readpages +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x3c551c7b pnfs_generic_pg_init_read +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x3c85036f pnfs_layout_mark_request_commit +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x40536a5a __tracepoint_nfs4_pnfs_write +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x4d6fc4fe nfs4_find_or_create_ds_client +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x5e2a9a62 pnfs_unregister_layoutdriver +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x5ec745d6 pnfs_register_layoutdriver +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x641d831b nfs4_pnfs_ds_connect +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x65172471 pnfs_generic_prepare_to_resend_writes +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x69d3558d pnfs_generic_rw_release +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x6ace3ac3 nfs4_test_deviceid_unavailable +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x71f56c29 nfs4_schedule_lease_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x75e539ea nfs4_schedule_session_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x7ba5bdfd __tracepoint_nfs4_pnfs_commit_ds +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x7deb24ca nfs4_decode_mp_ds_addr +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x7ef003f6 pnfs_read_done_resend_to_mds +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x83ae6aaa nfs4_pnfs_v3_ds_connect_unload +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x8c61bdee pnfs_set_layoutcommit +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x8cd1983f pnfs_generic_pg_writepages +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x90c3ffb4 nfs4_set_ds_client +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x9e62ab45 nfs4_set_rw_stateid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xa02df320 nfs_map_string_to_numeric +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xabc45b54 pnfs_set_lo_fail +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xabf3cbd7 pnfs_read_resend_pnfs +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xb379a6fa nfs_remove_bad_delegation +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xb43a5c10 pnfs_ld_write_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xb6561b2d pnfs_put_lseg +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xb7d36b63 pnfs_destroy_layout +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xbc07e763 pnfs_generic_pg_test +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xbd244c4a pnfs_put_lseg_locked +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xc34ccad7 pnfs_generic_commit_pagelist +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xc4425a4c __tracepoint_nfs4_pnfs_read +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xc9b1a36a _pnfs_return_layout +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xcc2d3cca nfs4_init_ds_session +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xce26b045 nfs4_schedule_lease_moved_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xcf759c40 pnfs_layoutcommit_inode +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xd7a23e5d nfs41_sequence_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xdf8541d1 pnfs_error_mark_layout_for_return +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xdffaa289 pnfs_write_done_resend_to_mds +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xe025956d pnfs_generic_write_commit_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xe2b6f7ba nfs4_pnfs_ds_put +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xe61fb172 nfs4_sequence_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xed15fb41 nfs4_print_deviceid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xef291fc1 nfs4_proc_getdeviceinfo +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xf278c0c2 pnfs_generic_pg_cleanup +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xf5a0e986 pnfs_generic_clear_request_commit +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xf9639810 pnfs_report_layoutstat +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xf999267e pnfs_generic_commit_release +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xfe8a5024 nfs4_put_deviceid_node +EXPORT_SYMBOL_GPL fs/nfs_common/grace 0x17ce645d locks_end_grace +EXPORT_SYMBOL_GPL fs/nfs_common/grace 0x33b40065 locks_start_grace +EXPORT_SYMBOL_GPL fs/nfs_common/grace 0xdca0a368 locks_in_grace +EXPORT_SYMBOL_GPL fs/nfs_common/nfs_acl 0x27e296ed nfsacl_encode +EXPORT_SYMBOL_GPL fs/nfs_common/nfs_acl 0xe8a0b9e3 nfsacl_decode +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x11736b03 __mlog_printk +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 0x1d747ce3 o2hb_check_node_heartbeating +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x36418553 o2net_send_message +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x387253c4 o2nm_node_put +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x4900035b o2hb_stop_all_regions +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x687f6251 mlog_and_bits +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x760855de o2nm_get_node_by_num +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x8b8e2a12 o2hb_setup_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x8cecc064 o2nm_node_get +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x91508613 o2hb_unregister_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x93bf8cfc o2hb_register_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xa1ae48e1 o2hb_check_node_heartbeating_no_sem +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xa82a8645 o2nm_this_node +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xa87bc9e7 o2nm_configured_node_map +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xa9f5379a o2net_send_message_vec +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xae808bac o2net_register_handler +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xbaeb4700 o2hb_check_node_heartbeating_from_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xc3679d7b o2hb_get_all_regions +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xc6c25849 o2nm_get_node_by_ip +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xd60f2c6c o2hb_check_local_node_heartbeating +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/dlm/ocfs2_dlm 0x098bc474 dlm_unregister_domain +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x373c851a 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 0x7f7685e8 dlm_print_one_lock +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xa94a458f dlmunlock +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xbce6c7b4 dlmlock +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xd32140d6 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 0xfb86b96f dlm_errname +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x269d63fd ocfs2_cluster_disconnect +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x316904e1 ocfs2_dlm_unlock +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x3bcef5f3 ocfs2_dlm_lock_status +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x40718c92 ocfs2_dlm_lock +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x4226705d ocfs2_dlm_dump_lksb +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x424241c9 ocfs2_dlm_lvb +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x4d3af7fa ocfs2_cluster_hangup +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x60f4bcef ocfs2_dlm_lvb_valid +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x8f166561 ocfs2_plock +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x9ccafa05 ocfs2_cluster_this_node +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xa06fbc10 ocfs2_cluster_connect_agnostic +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xbbc4ef97 ocfs2_stack_supports_plocks +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xbf9068ab ocfs2_cluster_connect +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xc283b8fa ocfs2_stack_glue_unregister +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xd8c9f3e1 ocfs2_stack_glue_register +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xe40cffce ocfs2_stack_glue_set_max_proto_version +EXPORT_SYMBOL_GPL kernel/torture 0x0a41000e _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 0x21703b59 torture_shuffle_task_register +EXPORT_SYMBOL_GPL kernel/torture 0x3e9619f5 torture_onoff_stats +EXPORT_SYMBOL_GPL kernel/torture 0x4c7529bd torture_shutdown_absorb +EXPORT_SYMBOL_GPL kernel/torture 0x52665f8b torture_random +EXPORT_SYMBOL_GPL kernel/torture 0x5346b23b torture_shuffle_cleanup +EXPORT_SYMBOL_GPL kernel/torture 0x6364b2f0 stutter_wait +EXPORT_SYMBOL_GPL kernel/torture 0x679d9e50 torture_must_stop +EXPORT_SYMBOL_GPL kernel/torture 0x688e6a64 torture_cleanup_end +EXPORT_SYMBOL_GPL kernel/torture 0x6bdeda8f torture_onoff_init +EXPORT_SYMBOL_GPL kernel/torture 0x84f98be1 _torture_create_kthread +EXPORT_SYMBOL_GPL kernel/torture 0x8b0e1d2f torture_shuffle_init +EXPORT_SYMBOL_GPL kernel/torture 0xc1361afc torture_onoff_cleanup +EXPORT_SYMBOL_GPL kernel/torture 0xc6527045 torture_init_begin +EXPORT_SYMBOL_GPL kernel/torture 0xc67a49d4 torture_cleanup_begin +EXPORT_SYMBOL_GPL kernel/torture 0xdbc5277a torture_shutdown_init +EXPORT_SYMBOL_GPL kernel/torture 0xe6989fd3 torture_init_end +EXPORT_SYMBOL_GPL kernel/torture 0xe9ff1468 torture_stutter_init +EXPORT_SYMBOL_GPL kernel/torture 0xf6d34fb5 torture_kthread_stopping +EXPORT_SYMBOL_GPL lib/842/842_compress 0x1ce013cf sw842_compress +EXPORT_SYMBOL_GPL lib/842/842_decompress 0x0d22f116 sw842_decompress +EXPORT_SYMBOL_GPL lib/notifier-error-inject 0xbacb5efa notifier_err_inject_init +EXPORT_SYMBOL_GPL lib/notifier-error-inject 0xe7a259a3 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 0x1d271168 lowpan_header_compress +EXPORT_SYMBOL_GPL net/6lowpan/6lowpan 0x95d16878 lowpan_header_decompress +EXPORT_SYMBOL_GPL net/802/garp 0x7d55c7eb garp_unregister_application +EXPORT_SYMBOL_GPL net/802/garp 0xb306e8b9 garp_init_applicant +EXPORT_SYMBOL_GPL net/802/garp 0xcfcdfd65 garp_uninit_applicant +EXPORT_SYMBOL_GPL net/802/garp 0xeb4b6bf5 garp_request_join +EXPORT_SYMBOL_GPL net/802/garp 0xf9414578 garp_request_leave +EXPORT_SYMBOL_GPL net/802/garp 0xf9f83bb5 garp_register_application +EXPORT_SYMBOL_GPL net/802/mrp 0x044ceb9d mrp_request_join +EXPORT_SYMBOL_GPL net/802/mrp 0x08fd7c83 mrp_init_applicant +EXPORT_SYMBOL_GPL net/802/mrp 0x5606840b mrp_request_leave +EXPORT_SYMBOL_GPL net/802/mrp 0x6acde8e1 mrp_unregister_application +EXPORT_SYMBOL_GPL net/802/mrp 0xa21e8421 mrp_uninit_applicant +EXPORT_SYMBOL_GPL net/802/mrp 0xc9e4e2e1 mrp_register_application +EXPORT_SYMBOL_GPL net/802/stp 0x1ec71ee7 stp_proto_unregister +EXPORT_SYMBOL_GPL net/802/stp 0xcc185348 stp_proto_register +EXPORT_SYMBOL_GPL net/9p/9pnet 0xf711803a p9_client_xattrcreate +EXPORT_SYMBOL_GPL net/9p/9pnet 0xfe5244cd 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 0x111b7e46 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 0x04fedf7a l2cap_chan_del +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x1755efab l2cap_add_psm +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x82d74cee l2cap_chan_send +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0xa8880c70 l2cap_chan_connect +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0xb3abd8a8 l2cap_chan_set_defaults +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0xbf986e0a l2cap_chan_create +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0xc9e10006 l2cap_chan_put +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0xd6b6b116 bt_debugfs +EXPORT_SYMBOL_GPL net/bridge/br_netfilter 0x0cb0f8b7 br_netfilter_enable +EXPORT_SYMBOL_GPL net/bridge/bridge 0x0d726e59 nf_br_ops +EXPORT_SYMBOL_GPL net/bridge/bridge 0x18dc05d8 br_multicast_has_querier_anywhere +EXPORT_SYMBOL_GPL net/bridge/bridge 0x3f768b31 br_multicast_has_querier_adjacent +EXPORT_SYMBOL_GPL net/bridge/bridge 0x44c8423f br_deliver +EXPORT_SYMBOL_GPL net/bridge/bridge 0xaaa982d2 br_handle_frame_finish +EXPORT_SYMBOL_GPL net/bridge/bridge 0xabed6483 br_forward_finish +EXPORT_SYMBOL_GPL net/bridge/bridge 0xbd9d74ba br_dev_queue_push_xmit +EXPORT_SYMBOL_GPL net/bridge/bridge 0xc9e67903 br_multicast_list_adjacent +EXPORT_SYMBOL_GPL net/bridge/netfilter/nf_tables_bridge 0x78ece793 nft_bridge_ip6hdr_validate +EXPORT_SYMBOL_GPL net/bridge/netfilter/nf_tables_bridge 0xabab012e nft_bridge_iphdr_validate +EXPORT_SYMBOL_GPL net/dccp/dccp 0x01470272 dccp_reqsk_init +EXPORT_SYMBOL_GPL net/dccp/dccp 0x08533c93 dccp_make_response +EXPORT_SYMBOL_GPL net/dccp/dccp 0x09a123b7 dccp_orphan_count +EXPORT_SYMBOL_GPL net/dccp/dccp 0x14b80968 dccp_death_row +EXPORT_SYMBOL_GPL net/dccp/dccp 0x1d99d49a dccp_timestamp +EXPORT_SYMBOL_GPL net/dccp/dccp 0x2b96c752 dccp_poll +EXPORT_SYMBOL_GPL net/dccp/dccp 0x30e5c736 dccp_check_req +EXPORT_SYMBOL_GPL net/dccp/dccp 0x31b0512e dccp_set_state +EXPORT_SYMBOL_GPL net/dccp/dccp 0x4cdd391d dccp_feat_list_purge +EXPORT_SYMBOL_GPL net/dccp/dccp 0x4ec35231 dccp_ackvec_parsed_add +EXPORT_SYMBOL_GPL net/dccp/dccp 0x4ed0b3e0 dccp_connect +EXPORT_SYMBOL_GPL net/dccp/dccp 0x51818174 dccp_parse_options +EXPORT_SYMBOL_GPL net/dccp/dccp 0x533207cf dccp_init_sock +EXPORT_SYMBOL_GPL net/dccp/dccp 0x58627e8e dccp_shutdown +EXPORT_SYMBOL_GPL net/dccp/dccp 0x59814a84 dccp_statistics +EXPORT_SYMBOL_GPL net/dccp/dccp 0x603744e2 dccp_feat_nn_get +EXPORT_SYMBOL_GPL net/dccp/dccp 0x675060b2 dccp_getsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0x6a3c5a3a dccp_setsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0x6a65c953 dccp_done +EXPORT_SYMBOL_GPL net/dccp/dccp 0x75cad488 dccp_send_sync +EXPORT_SYMBOL_GPL net/dccp/dccp 0x773fb566 dccp_send_ack +EXPORT_SYMBOL_GPL net/dccp/dccp 0x86be7924 dccp_packet_name +EXPORT_SYMBOL_GPL net/dccp/dccp 0x8873d77b dccp_reqsk_send_ack +EXPORT_SYMBOL_GPL net/dccp/dccp 0x8c684ebc dccp_rcv_established +EXPORT_SYMBOL_GPL net/dccp/dccp 0x8c78db25 dccp_sendmsg +EXPORT_SYMBOL_GPL net/dccp/dccp 0x9598d24d dccp_ackvec_parsed_cleanup +EXPORT_SYMBOL_GPL net/dccp/dccp 0x9a4c59df inet_dccp_listen +EXPORT_SYMBOL_GPL net/dccp/dccp 0x9b1848ae dccp_ctl_make_reset +EXPORT_SYMBOL_GPL net/dccp/dccp 0x9c15c904 dccp_recvmsg +EXPORT_SYMBOL_GPL net/dccp/dccp 0x9f36c213 dccp_rcv_state_process +EXPORT_SYMBOL_GPL net/dccp/dccp 0xad491dcd dccp_sync_mss +EXPORT_SYMBOL_GPL net/dccp/dccp 0xafeba867 dccp_ioctl +EXPORT_SYMBOL_GPL net/dccp/dccp 0xb0596156 dccp_hashinfo +EXPORT_SYMBOL_GPL net/dccp/dccp 0xb9864507 dccp_child_process +EXPORT_SYMBOL_GPL net/dccp/dccp 0xbe24ab05 dccp_insert_option +EXPORT_SYMBOL_GPL net/dccp/dccp 0xd55bcb00 dccp_disconnect +EXPORT_SYMBOL_GPL net/dccp/dccp 0xe0a7fa4c dccp_close +EXPORT_SYMBOL_GPL net/dccp/dccp 0xe5c29f73 dccp_feat_signal_nn_change +EXPORT_SYMBOL_GPL net/dccp/dccp 0xef4fed65 dccp_destroy_sock +EXPORT_SYMBOL_GPL net/dccp/dccp 0xfb18aff5 dccp_create_openreq_child +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x27524c21 dccp_invalid_packet +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x3cb8394f dccp_v4_conn_request +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x4262f53b dccp_v4_request_recv_sock +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x9ae4597e dccp_v4_connect +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0xb7f9cd4a dccp_v4_send_check +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0xe077d123 dccp_v4_do_rcv +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0x2611a0cc ieee802154_hdr_pull +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0x2d3943f1 ieee802154_hdr_peek +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0x4d7aef69 ieee802154_max_payload +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0xa948aaf3 ieee802154_hdr_push +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0xf69cdf8b ieee802154_hdr_peek_addrs +EXPORT_SYMBOL_GPL net/ipv4/geneve_core 0x7fe10eb5 geneve_xmit_skb +EXPORT_SYMBOL_GPL net/ipv4/geneve_core 0x8c62aaf9 geneve_sock_release +EXPORT_SYMBOL_GPL net/ipv4/geneve_core 0xa5a4122c geneve_sock_add +EXPORT_SYMBOL_GPL net/ipv4/gre 0x4919179a gre_build_header +EXPORT_SYMBOL_GPL net/ipv4/gre 0xa5335c3c gre_cisco_unregister +EXPORT_SYMBOL_GPL net/ipv4/gre 0xaf95dbf6 gre_del_protocol +EXPORT_SYMBOL_GPL net/ipv4/gre 0xba28fdec gre_add_protocol +EXPORT_SYMBOL_GPL net/ipv4/gre 0xc9380a83 gre_cisco_register +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x2608b53c inet_diag_register +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x4e858845 inet_diag_dump_icsk +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x5b663e0a inet_diag_unregister +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x6ce43f32 inet_diag_bc_sk +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x7e36212b inet_diag_dump_one_icsk +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0xa643ff4a inet_sk_diag_fill +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x2af1d717 ip_tunnel_setup +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x335b4a86 ip_tunnel_rcv +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x36913123 ip_tunnel_init_net +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x3f6068ed ip_tunnel_change_mtu +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x5be89f0f ip_tunnel_dellink +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x679212a7 ip_tunnel_uninit +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x7bf8c8dc ip_tunnel_init +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x99252859 ip_tunnel_delete_net +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x9a6ba0db ip_tunnel_changelink +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xa5d06b32 ip_tunnel_newlink +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xa776756d ip_tunnel_ioctl +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xc1b13d48 ip_tunnel_xmit +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xf82667c6 ip_tunnel_encap_setup +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xfa2375cc ip_tunnel_lookup +EXPORT_SYMBOL_GPL net/ipv4/netfilter/arp_tables 0xdeba28ed arpt_alloc_initial_table +EXPORT_SYMBOL_GPL net/ipv4/netfilter/ip_tables 0xabea066a ipt_alloc_initial_table +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_defrag_ipv4 0x6b6c3d10 nf_defrag_ipv4_enable +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_ipv4 0x21e6586b nf_nat_ipv4_fn +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_ipv4 0x62558598 nf_nat_ipv4_local_fn +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_ipv4 0x70c8db00 nf_nat_ipv4_in +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_ipv4 0xbc3da9a3 nf_nat_icmp_reply_translation +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_ipv4 0xd577a5d6 nf_nat_ipv4_out +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_masquerade_ipv4 0x1360dc61 nf_nat_masquerade_ipv4 +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_masquerade_ipv4 0x3f5c468e nf_nat_masquerade_ipv4_unregister_notifier +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_masquerade_ipv4 0xfedbf252 nf_nat_masquerade_ipv4_register_notifier +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_proto_gre 0x636b12c8 nf_nat_need_gre +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0x4414205e nf_reject_iphdr_put +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0x9c90c02b nf_reject_ip_tcphdr_put +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0xbf273d7e nf_send_reset +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0xd5b53436 nf_send_unreach +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0xddfdc5cf nf_reject_ip_tcphdr_get +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_tables_ipv4 0x8409e183 nft_af_ipv4 +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x33a1b1f9 tcp_vegas_state +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x5b3d58e8 tcp_vegas_get_info +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x6d28b898 tcp_vegas_cwnd_event +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0xa6683299 tcp_vegas_init +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0xee982e81 tcp_vegas_pkts_acked +EXPORT_SYMBOL_GPL net/ipv4/udp_tunnel 0x6a5ef497 udp_tunnel_sock_release +EXPORT_SYMBOL_GPL net/ipv4/udp_tunnel 0x87690795 udp_tunnel_xmit_skb +EXPORT_SYMBOL_GPL net/ipv4/udp_tunnel 0xf07f1bcc setup_udp_tunnel_sock +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x01e9b5d2 ip6_tnl_dst_check +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x056243b3 ip6_tnl_dst_reset +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x3f639d11 ip6_tnl_rcv_ctl +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0xb2249907 ip6_tnl_dst_store +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0xe15526d2 ip6_tnl_xmit_ctl +EXPORT_SYMBOL_GPL net/ipv6/ip6_udp_tunnel 0xa084e6f5 udp_sock_create6 +EXPORT_SYMBOL_GPL net/ipv6/ip6_udp_tunnel 0xf832179f udp_tunnel6_xmit_skb +EXPORT_SYMBOL_GPL net/ipv6/netfilter/ip6_tables 0xc5e20190 ip6t_alloc_initial_table +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_defrag_ipv6 0x6eb85693 nf_defrag_ipv6_enable +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_ipv6 0x0a8a486e nf_nat_ipv6_in +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_ipv6 0x8d3eae9e nf_nat_icmpv6_reply_translation +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_ipv6 0xbb59a12e nf_nat_ipv6_out +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_ipv6 0xc51509cc nf_nat_ipv6_local_fn +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_ipv6 0xf040089b nf_nat_ipv6_fn +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_masquerade_ipv6 0x2293972c nf_nat_masquerade_ipv6_unregister_notifier +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_masquerade_ipv6 0x38d4401a nf_nat_masquerade_ipv6_register_notifier +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_masquerade_ipv6 0x7d526a9a nf_nat_masquerade_ipv6 +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0x0990de8c nf_reject_ip6hdr_put +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0x383cbea0 nf_reject_ip6_tcphdr_put +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0x510a3152 nf_send_reset6 +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0x5fb65704 nf_send_unreach6 +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0xe6ea2a72 nf_reject_ip6_tcphdr_get +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_tables_ipv6 0xd9248030 nft_af_ipv6 +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x1f35f78c l2tp_udp_encap_recv +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x2d92d73b __l2tp_session_unhash +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x33b47aed l2tp_session_queue_purge +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x3e9e60a0 l2tp_tunnel_delete +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x406e37a3 l2tp_session_free +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x73d7e254 l2tp_xmit_skb +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x77d0748d l2tp_session_find_nth +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x87daae89 l2tp_session_create +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x98335b1c l2tp_tunnel_find_nth +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xa012f187 l2tp_tunnel_create +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xa40c8e5a l2tp_tunnel_find +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xb5a99f0b l2tp_session_delete +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xcdbe166b l2tp_tunnel_closeall +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xd264eef3 l2tp_session_find_by_ifname +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xd5028f08 l2tp_session_find +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xd7332b45 l2tp_session_set_header_len +EXPORT_SYMBOL_GPL net/l2tp/l2tp_netlink 0x337f2432 l2tp_nl_unregister_ops +EXPORT_SYMBOL_GPL net/l2tp/l2tp_netlink 0xc00f87f4 l2tp_nl_register_ops +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x0c12f957 ieee80211_ave_rssi +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x0e086ae2 ieee80211_iter_chan_contexts_atomic +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x236de000 ieee80211_remain_on_channel_expired +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x301516f5 ieee80211_remove_key +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x30247437 ieee80211_iterate_active_interfaces_atomic +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x3325ec6a ieee80211_gtk_rekey_notify +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x3e223b45 ieee80211_iterate_interfaces +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x40e61054 ieee80211_napi_add +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x43f7d4e5 wdev_to_ieee80211_vif +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x749c1a87 ieee80211_resume_disconnect +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x7c45baef ieee80211_find_sta_by_ifaddr +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x8884b4d6 ieee80211_gtk_rekey_add +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x9325ee28 ieee80211_vif_to_wdev +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xa96bab88 ieee80211_ready_on_channel +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xab35eb3a ieee80211_iterate_stations_atomic +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xad0efcfd ieee80211_set_key_tx_seq +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xaf4aba57 ieee80211_iterate_active_interfaces_rtnl +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xc52c5d66 ieee80211_request_smps +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xf9fa191d ieee80211_set_key_rx_seq +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x141df6d0 ip_set_put_extensions +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x397f6231 ip_set_free +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x3c4a959b ip_set_nfnl_put +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x3c7b1ad1 ip_set_get_ip4_port +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x4428be21 ip_set_type_unregister +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x583aefff ip_set_get_extensions +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x60ae54b6 ip_set_get_byname +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x6344eaf6 ip_set_alloc +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x685077a2 ip_set_del +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x6fcfcde1 ip_set_nfnl_get_byindex +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x7543b898 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 0x8a289e96 ip_set_add +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x8b2d45fd ip_set_name_byindex +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x92ecabb3 ip_set_get_ip_port +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x94da7227 ip_set_elem_len +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 0xa2d623f3 ip_set_range_to_cidr +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xcc001bd9 ip_set_extensions +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xd4a60df7 ip_set_get_ip6_port +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xeb3e8b51 ip_set_test +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xf6ef2f2a ip_set_put_byindex +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0x82936b55 ip_vs_conn_in_get_proto +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0x938f06d3 unregister_ip_vs_pe +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0xfc520ec3 ip_vs_conn_out_get_proto +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0xfeb9ab25 register_ip_vs_pe +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x02ab677c nf_ct_l3proto_pernet_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x045072cd nf_ct_port_nla_policy +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x063b3eeb __nf_ct_try_assign_helper +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x07cfd8c0 nf_conntrack_locks +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x09605a28 nf_ct_helper_expectfn_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x1405148e nf_ct_seq_offset +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x14373af7 seq_print_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x178a598a nf_ct_helper_expectfn_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x18e6a33b nf_conntrack_hash_check_insert +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x1a00fe34 nf_ct_delete +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x1a7fa1cb nf_ct_l4proto_pernet_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x23d9b800 nf_ct_expect_register_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x289c3714 nf_ct_alloc_hashtable +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x29530f51 nf_ct_extend_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x2cc1ba9f __nf_ct_refresh_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x315da494 nf_conntrack_set_hashsize +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x37386cac nf_conntrack_hash_rnd +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3c6cb62b __nf_ct_expect_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3e857ea2 nf_ct_timeout_find_get_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3eba6641 nf_ct_seqadj_set +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3f5b1415 nf_ct_port_nlattr_to_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3f6f8c7b nf_ct_expect_unregister_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x41045255 __nf_ct_kill_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x45f1434e nf_conntrack_l4proto_udp6 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x46c35391 nf_ct_expect_related_report +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x4ea7ca84 nf_conntrack_tuple_taken +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x569520fa nf_ct_deliver_cached_events +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x58e6ae72 nf_conntrack_helper_try_module_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x62813e5c nf_ct_port_nlattr_tuple_size +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x62fecfed nf_conntrack_free +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x662dd2f9 __nf_ct_l4proto_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x693c3961 nf_ct_helper_hash +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6ab87de4 nf_ct_tmpl_free +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6ae863c7 nf_conntrack_l3proto_generic +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6e224a7a need_conntrack +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6f53a7c3 nf_ct_seqadj_init +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x71c41c80 __nf_conntrack_helper_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x74d01374 nf_ct_port_tuple_to_nlattr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x77c721cc nf_conntrack_l4proto_udp4 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x7882eaff nf_ct_l4proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x78f9b710 nf_ct_l3proto_try_module_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x79f766e4 nf_ct_l4proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x7d1a57f8 nf_conntrack_in +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x7e1b9a06 nf_ct_iterate_cleanup +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x807682bc nf_ct_get_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x82295da3 nf_ct_unexpect_related +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x880b8d3c nf_ct_expect_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8874df9e nf_conntrack_unregister_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x89147748 nf_conntrack_helper_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x89a046c7 nf_ct_expect_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x89b76efa nf_ct_l4proto_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8aae3940 nf_ct_extend_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8ffe7e89 nf_conntrack_htable_size +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x90ff6c9f nf_ct_invert_tuplepr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x929a5213 nf_ct_helper_ext_add +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x9370f403 nf_ct_l4proto_pernet_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x9a571e9b nf_ct_unlink_expect_report +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x9e9128c4 nf_ct_invert_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x9eeb8f8a nf_ct_l3proto_pernet_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x9f8178e7 nf_ct_l4proto_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xab3d1f95 nf_ct_untracked_status_or +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xad1bb027 nf_ct_free_hashtable +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xae5747f4 nf_conntrack_helper_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xaee09c60 nf_ct_timeout_put_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb602c57e nf_ct_l3proto_module_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xbe9e445c nf_conntrack_register_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc1714962 nf_ct_expect_init +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc18ac88d nf_ct_expect_hsize +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc2abd2fd nf_conntrack_expect_lock +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc40f284c nf_ct_helper_hsize +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc540a641 nf_ct_l3proto_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc86fdac2 nf_conntrack_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xca7a46bc __nf_conntrack_confirm +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xce02f1d5 nf_ct_tmpl_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xceb386e9 nf_ct_expect_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xcf53b5f1 nf_ct_remove_expectations +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd14a8fe5 nf_conntrack_alter_reply +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd4974bb8 nf_ct_helper_expectfn_find_by_name +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd791f44e nf_conntrack_l4proto_tcp6 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xda4bf1a5 nf_ct_helper_log +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xdbc5ec7e nf_ct_l3protos +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xddc104e6 nf_conntrack_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xddea11b2 nf_ct_helper_expectfn_find_by_symbol +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xe5a796cc nf_conntrack_l4proto_tcp4 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xe70c2746 nf_connlabel_set +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xe9b957fc nfnetlink_parse_nat_setup_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf029fa32 nf_ct_seq_adjust +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf0d160f5 nf_ct_l3proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf211c7c5 nf_connlabel_match +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf320811d nf_ct_get_tuplepr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf38bcdf3 nf_conntrack_max +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf6445bef nf_ct_l3proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf7072827 nf_connlabels_replace +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xffc2a6c5 nf_ct_tcp_seqadj_set +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_amanda 0xb6113a20 nf_nat_amanda_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_broadcast 0xe0e23cf0 nf_conntrack_broadcast_help +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_ftp 0x65467851 nf_nat_ftp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x0f36a57a set_h225_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x121884d5 nat_h245_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x2104760f set_h245_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x2ffe42f0 nat_rtp_rtcp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x37bb9f69 set_sig_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x4baeea12 nat_q931_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xa9257cfe nat_t120_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xac7db198 get_h225_addr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xb8446feb nat_callforwarding_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xccbe6a00 set_ras_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_irc 0xbbff5ebd nf_nat_irc_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0x456ebd70 nf_nat_pptp_hook_expectfn +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0x9c94dce8 nf_nat_pptp_hook_outbound +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0xa73abb58 nf_nat_pptp_hook_inbound +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0xbc331add nf_nat_pptp_hook_exp_gre +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_proto_gre 0x2c1f491b nf_ct_gre_keymap_destroy +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_proto_gre 0xb2210e70 nf_ct_gre_keymap_add +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x0cf46f37 ct_sip_parse_address_param +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x44493582 ct_sip_parse_numerical_param +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x5607ab66 ct_sip_parse_header_uri +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x646c57df ct_sip_get_header +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x6c395426 nf_nat_sip_hooks +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xd71c9ee0 ct_sip_parse_request +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xe343b8a8 ct_sip_get_sdp_header +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_snmp 0xaf516c82 nf_nat_snmp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_tftp 0xd4c192b8 nf_nat_tftp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_log_common 0x3c89bbf0 nf_log_dump_udp_header +EXPORT_SYMBOL_GPL net/netfilter/nf_log_common 0x4191b679 nf_log_dump_packet_common +EXPORT_SYMBOL_GPL net/netfilter/nf_log_common 0x5126e726 nf_log_dump_tcp_header +EXPORT_SYMBOL_GPL net/netfilter/nf_log_common 0x7df79814 nf_log_dump_sk_uid_gid +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x09b80eec nf_nat_packet +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x0d9bae4b nf_nat_l4proto_nlattr_to_range +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x131f636c nf_nat_l4proto_in_range +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x3f8bc534 nf_nat_l4proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x4534340d nf_nat_l3proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x490a6a3d nf_ct_nat_ext_add +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x49844018 nf_nat_l4proto_unique_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x7d6247bc __nf_nat_l4proto_find +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x8366cb3b nf_nat_alloc_null_binding +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x8b93e6b7 nf_nat_l3proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xeccf5eff nf_nat_l4proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_nat_redirect 0x77206f63 nf_nat_redirect_ipv4 +EXPORT_SYMBOL_GPL net/netfilter/nf_nat_redirect 0x85c779c7 nf_nat_redirect_ipv6 +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x11a006b5 synproxy_check_timestamp_cookie +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x210aa68e synproxy_parse_options +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x8841d39b synproxy_build_options +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x90298227 synproxy_init_timestamp_cookie +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0xb42e336a synproxy_options_size +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0xceb539ac synproxy_tstamp_adjust +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0xef7db50c synproxy_net_id +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x043e51f9 nft_unregister_chain_type +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x09f8f339 nft_set_elem_destroy +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x154490c9 nft_register_basechain +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x1e6b75a3 nft_parse_register +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x2b43947e nft_unregister_expr +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x3dbde818 nft_data_dump +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x5778f241 nft_chain_validate_hooks +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x68088bee nft_data_uninit +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x77e42e46 nft_register_afinfo +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x7d3f02b4 nft_unregister_afinfo +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x9dbe3331 nft_set_gc_batch_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xac8eabf3 nft_register_chain_type +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xbddaccca nft_dump_register +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xbde2c7be nft_register_expr +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xbf63bb61 nft_set_gc_batch_release +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xc8f272a4 nft_data_init +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xcf03e214 nft_chain_validate_dependency +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xcf9dc983 nft_register_set +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xd50a57b7 nft_unregister_set +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xe09dada2 nft_set_ext_types +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xe9e5957c nft_do_chain +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xed33c632 nft_validate_register_load +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xf171bdd0 nft_unregister_basechain +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xf4494c93 nft_validate_register_store +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x222c314e nfnetlink_alloc_skb +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x34018b2b nfnetlink_subsys_unregister +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x48643f52 nfnetlink_subsys_register +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x58ff8375 nfnetlink_set_err +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x5ce3b588 nfnl_lock +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xc7bab4e0 nfnetlink_has_listeners +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xdb065657 nfnl_unlock +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xe2154d23 nfnetlink_unicast +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xf2aaa007 nfnetlink_send +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0x173df572 nfnl_acct_overquota +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0x21f6bba6 nfnl_acct_find_get +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0x80629d6d nfnl_acct_update +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0xbecf5d14 nfnl_acct_put +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_log 0xc1301b4b nfulnl_log_packet +EXPORT_SYMBOL_GPL net/netfilter/nft_masq 0x3e254c72 nft_masq_init +EXPORT_SYMBOL_GPL net/netfilter/nft_masq 0x71c34904 nft_masq_validate +EXPORT_SYMBOL_GPL net/netfilter/nft_masq 0xe3b8ea21 nft_masq_policy +EXPORT_SYMBOL_GPL net/netfilter/nft_masq 0xe4294c52 nft_masq_dump +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0x17c3327a nft_meta_get_dump +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0x212cb75e nft_meta_set_eval +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0x215682df nft_meta_get_init +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0x463d5ed5 nft_meta_get_eval +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0x57260447 nft_meta_set_init +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0x9f4cd22f nft_meta_set_dump +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0xb80e8358 nft_meta_policy +EXPORT_SYMBOL_GPL net/netfilter/nft_redir 0x2a197f55 nft_redir_dump +EXPORT_SYMBOL_GPL net/netfilter/nft_redir 0x93472aaa nft_redir_validate +EXPORT_SYMBOL_GPL net/netfilter/nft_redir 0xa5be1e1e nft_redir_policy +EXPORT_SYMBOL_GPL net/netfilter/nft_redir 0xda1a0f73 nft_redir_init +EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0x28ee2716 nft_reject_init +EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0xa2db3c7f nft_reject_policy +EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0xca411fc5 nft_reject_dump +EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0xddf15889 nft_reject_icmp_code +EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0xe8cdab4e nft_reject_icmpv6_code +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x0be416d2 xt_hook_link +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x2a07c7c1 xt_register_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x2a18d127 xt_check_match +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x40728a63 xt_find_revision +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x594f6eea xt_table_unlock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x6de10077 xt_check_target +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x807d2b2c xt_recseq +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x894f0fc2 xt_request_find_match +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x8b4231f7 xt_request_find_target +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x9b1047b6 xt_proto_init +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xc644cc44 xt_hook_unlink +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xd5263e49 xt_proto_fini +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xe776878e xt_unregister_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xf04a791c xt_find_table_lock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xf052a9f1 xt_replace_table +EXPORT_SYMBOL_GPL net/netfilter/xt_RATEEST 0x57909dc1 xt_rateest_put +EXPORT_SYMBOL_GPL net/netfilter/xt_RATEEST 0xd0f26ea3 xt_rateest_lookup +EXPORT_SYMBOL_GPL net/nfc/nci/nci 0x1523f9d8 nci_spi_read +EXPORT_SYMBOL_GPL net/nfc/nci/nci 0x405ef13d nci_spi_send +EXPORT_SYMBOL_GPL net/nfc/nci/nci 0x77a65a0a nci_spi_allocate_spi +EXPORT_SYMBOL_GPL net/nfc/nci/nci_uart 0x4b9c7a8b nci_uart_set_config +EXPORT_SYMBOL_GPL net/nfc/nci/nci_uart 0x996fea36 nci_uart_register +EXPORT_SYMBOL_GPL net/nfc/nci/nci_uart 0xcb1408bc nci_uart_unregister +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x2cb454f2 ovs_vport_deferred_free +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x31ec44a3 ovs_vport_receive +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x35780198 ovs_tunnel_get_egress_info +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x9c284af7 ovs_vport_alloc +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0xc251444f ovs_vport_free +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0xca883d2a ovs_vport_ops_register +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0xd40a9b9a ovs_vport_ops_unregister +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0xda83411d ovs_net_id +EXPORT_SYMBOL_GPL net/rds/rds 0x00a467af rds_wq +EXPORT_SYMBOL_GPL net/rds/rds 0x0f0a58a3 rds_atomic_send_complete +EXPORT_SYMBOL_GPL net/rds/rds 0x16c40fb8 rds_info_deregister_func +EXPORT_SYMBOL_GPL net/rds/rds 0x185c5775 rds_recv_incoming +EXPORT_SYMBOL_GPL net/rds/rds 0x1a6552a4 rds_message_unmapped +EXPORT_SYMBOL_GPL net/rds/rds 0x24545eca rds_conn_create_outgoing +EXPORT_SYMBOL_GPL net/rds/rds 0x25a85598 rds_message_addref +EXPORT_SYMBOL_GPL net/rds/rds 0x2ad6f510 rds_send_get_message +EXPORT_SYMBOL_GPL net/rds/rds 0x2c5c5514 rds_message_add_rdma_dest_extension +EXPORT_SYMBOL_GPL net/rds/rds 0x3101936e rds_message_add_extension +EXPORT_SYMBOL_GPL net/rds/rds 0x3b5db061 rds_trans_register +EXPORT_SYMBOL_GPL net/rds/rds 0x3e278ff4 rds_conn_destroy +EXPORT_SYMBOL_GPL net/rds/rds 0x4622b59b rds_page_remainder_alloc +EXPORT_SYMBOL_GPL net/rds/rds 0x4c53c807 rds_connect_complete +EXPORT_SYMBOL_GPL net/rds/rds 0x50cbe7b3 rds_stats +EXPORT_SYMBOL_GPL net/rds/rds 0x51de84cb rds_info_register_func +EXPORT_SYMBOL_GPL net/rds/rds 0x655c926e rds_inc_init +EXPORT_SYMBOL_GPL net/rds/rds 0x6b17c8fe rds_inc_put +EXPORT_SYMBOL_GPL net/rds/rds 0x6c9f3275 rds_trans_unregister +EXPORT_SYMBOL_GPL net/rds/rds 0x6fea01e0 rds_for_each_conn_info +EXPORT_SYMBOL_GPL net/rds/rds 0x704006a8 rds_send_drop_acked +EXPORT_SYMBOL_GPL net/rds/rds 0x70ea8657 rds_page_copy_user +EXPORT_SYMBOL_GPL net/rds/rds 0x73aac73d rds_message_populate_header +EXPORT_SYMBOL_GPL net/rds/rds 0x96fafe85 rds_stats_info_copy +EXPORT_SYMBOL_GPL net/rds/rds 0x9e5d2ef5 rds_conn_drop +EXPORT_SYMBOL_GPL net/rds/rds 0xa271e30e rds_conn_connect_if_down +EXPORT_SYMBOL_GPL net/rds/rds 0xc2dab779 rds_info_copy +EXPORT_SYMBOL_GPL net/rds/rds 0xc5094f19 rds_message_put +EXPORT_SYMBOL_GPL net/rds/rds 0xc642cc2c rds_cong_map_updated +EXPORT_SYMBOL_GPL net/rds/rds 0xdcd2a916 rds_rdma_send_complete +EXPORT_SYMBOL_GPL net/rds/rds 0xe0924078 rds_conn_create +EXPORT_SYMBOL_GPL net/rxrpc/af-rxrpc 0x4b7f6b3c rxrpc_register_security +EXPORT_SYMBOL_GPL net/rxrpc/af-rxrpc 0x98bc5ebd rxrpc_unregister_security +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x00c52ef5 g_make_token_header +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x18b92c5e gss_mech_register +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x8d1a827e svcauth_gss_register_pseudoflavor +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x9b2695dc gss_mech_unregister +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xb5dea7ef g_token_size +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xd61b2862 svcauth_gss_flavor +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xf8b2ff6e g_verify_token_header +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x004e9dcd xprt_reserve_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00a9d15c xdr_read_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x045834e9 rpcauth_get_pseudoflavor +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x05e807a9 xdr_encode_string +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x064dfae0 xprt_set_retrans_timeout_def +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x065994f1 xdr_encode_opaque_fixed +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x06621783 xdr_buf_from_iov +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x066f2b96 svc_print_addr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x07dfa984 svc_proc_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x09493170 rpcb_getport_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0b15893e rpc_max_payload +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0b2566c7 cache_purge +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0bd71f44 rpc_print_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0c81706b svc_xprt_init +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0f668ba9 svc_auth_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x122ecb3a svc_rpcb_cleanup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x12662c5d xprt_alloc +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x146a025c svc_wake_up +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x158e3597 svc_xprt_copy_addrs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x16682cb7 rpcauth_lookupcred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x172c19b2 rpc_destroy_pipe_data +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x17e925bd xprt_wake_pending_tasks +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x18b91467 rpc_peeraddr2str +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1a562502 rpcauth_stringify_acceptor +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1a6c2ff5 svc_xprt_enqueue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1a72d6ec rpcauth_key_timeout_notify +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1abd115e svc_sock_update_bufs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1ac3e803 rpc_sleep_on_priority +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1b0fe3da svc_destroy +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1d4380f0 cache_check +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2147d3eb xprt_lookup_rqst +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x220ade67 xprt_complete_rqst +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x234dd053 svc_alien_sock +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2421fa63 rpcauth_generic_bind_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x25d5a309 rpc_task_reset_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x27163503 svc_reserve +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x28187162 sunrpc_destroy_cache_detail +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2919b156 xdr_decode_string_inplace +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2ad749b5 rpc_d_lookup_sb +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2cbf65af rpc_peeraddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2d812182 xdr_shift_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2dc9e882 rpc_net_ns +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2eec63c9 xdr_encode_netobj +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2ef62760 cache_unregister_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2f641d50 sunrpc_cache_unregister_pipefs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2f8ebbe0 rpc_ntop +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x30f711e2 xdr_decode_word +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x31290286 rpcauth_destroy_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3177eb22 rpc_lookup_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x31a89d59 rpc_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x32153f97 xdr_init_decode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x339a4f46 rpc_unlink +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x34700f13 svcauth_unix_purge +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x34bd4be0 rpc_count_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x34c755ba xprt_set_retrans_timeout_rtt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x35e0086a xdr_buf_subsegment +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x37223129 rpcauth_init_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x387e1639 rpc_pipefs_notifier_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3bd1ffe2 xprt_destroy_backchannel +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3be97fa1 rpc_wake_up +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3c6eb72b rpc_call_start +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3c97e7b7 svc_recv +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3deecabe _copy_from_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3e08b733 rpc_remove_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3f5fc227 xprt_adjust_cwnd +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x40a71c90 rpc_shutdown_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x41cfb589 rpc_init_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x44281a01 xprt_unregister_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x46d4650d rpc_wake_up_first +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4727ae41 rpc_pipe_generic_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x48a6f2b5 gssd_running +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4a4b5329 rpc_free_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4cd21651 xprt_lock_and_alloc_slot +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4d33bb23 xdr_write_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4ee46564 xdr_encode_word +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4f5ffcee rpc_clone_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x52982036 rpc_run_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x52a82efc svc_create_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x52cae7be rpc_put_sb_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x53445f68 nlm_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x53666416 rpc_killall_tasks +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5368b376 xdr_init_encode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5656175b rpc_clnt_swap_deactivate +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x58821a78 rpc_init_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5af60ce3 svc_find_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5b5898be rpc_destroy_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5d9304e8 rpc_pton +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5ef40faa sunrpc_cache_pipe_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x608354ae svc_proc_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x61a6ae6e sunrpc_init_cache_detail +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x629a76df rpc_switch_client_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x643c070f bc_svc_process +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x66de82e3 rpc_mkpipe_dentry +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x66f39fe7 xdr_buf_read_netobj +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6baddfcf rpc_malloc +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6d2b8877 rpc_lookup_machine_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6f50faf6 xprt_register_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6f72f2cd rpc_clone_client_set_auth +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x71bb4a9f rpc_create_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x71e31198 sunrpc_cache_lookup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x71fa908a cache_flush +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x733657e2 rpc_sleep_on +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7359a92d rpc_setbufsize +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x74f641c8 rpc_lookup_cred_nonblock +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x751432a3 cache_create_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x77ab5f30 svc_authenticate +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x77b55aa0 svc_close_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x77ca6ebf rpc_wake_up_status +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7913ef82 rpcauth_init_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x79b270ee rpc_exit +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7a0a4436 rpc_call_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7b9441bf xprt_disconnect_done +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7db2ec1c rpc_wake_up_next +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7de53067 rpc_init_rtt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x80269ed5 xdr_buf_trim +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x80951b28 rpcauth_get_gssinfo +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x80b27197 svc_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x818ffa32 svc_unreg_xprt_class +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x83f7ff8b xdr_inline_decode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x87e4f684 svc_auth_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8fe94c9e __rpc_wait_for_completion_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x94bbbdd2 svc_xprt_put +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x967f5775 rpc_proc_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x968975ae rpc_protocol +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9872fe7e svc_reg_xprt_class +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x98b75d64 rpcauth_list_flavors +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x99a3e53a xprt_write_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9b2351ed xprt_release_rqst_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9c095a66 rpc_delay +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9c09af76 svc_shutdown_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9cb0fc86 xprt_alloc_slot +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9cdcebe1 rpcauth_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9d438b3e xdr_skb_read_bits +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9dc68807 rpc_init_pipe_dir_head +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9f3a06d2 auth_domain_lookup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9f46dd4d rpc_put_task_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9fa5c571 svc_bind +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa2539e36 xprt_release_xprt_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa2729e72 svc_drop +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa30ad887 xprt_release_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa31341ac sunrpc_cache_update +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa58bb8b8 rpc_clnt_swap_activate +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa5f0ff83 rpc_put_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa61f57c8 csum_partial_copy_to_xdr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa6481027 cache_destroy_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa6f61c3f rpc_wake_up_queued_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa955afb2 rpc_alloc_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa9c41741 unix_domain_find +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa9e2d45b rpc_init_priority_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xaa7cb7b2 xdr_encode_array2 +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xac10a8e5 rpc_queue_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xac815c1e rpc_count_iostats_metrics +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xaca88952 rpc_force_rebind +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xad3241fb svc_prepare_thread +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xad89477d svcauth_unix_set_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xaeaa3e9d rpcauth_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xaf5bf6ef nfs_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xafcff816 rpc_find_or_alloc_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb00e8c64 rpc_release_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb278bfc4 xdr_enter_page +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb2cec1cd xdr_set_scratch_buffer +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb3404580 xdr_partial_copy_from_skb +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb4eff637 rpc_get_sb_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb4faaefa rpc_call_null +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb51a3724 rpc_pipefs_notifier_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb67ef74b rpcauth_lookup_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb9dca6ea xdr_inline_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbd6ea1e6 rpc_add_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbda8351a put_rpccred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbf9d1b96 nfsd_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbfc5a942 rpc_get_timeout +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc030b948 svc_process +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc12435e3 rpc_calc_rto +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc1b31940 svc_exit_thread +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc20f3834 rpcauth_cred_key_to_expire +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc3880471 xdr_decode_netobj +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc7e564c6 xdr_process_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc8d049d5 auth_domain_find +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc8e96dea qword_addhex +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcafbe27d rpc_restart_call +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcda80722 write_bytes_to_xdr_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xce0d1bb8 svc_xprt_names +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcee467f3 xprt_load_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd10f4e17 rpc_call_sync +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd2911804 rpc_proc_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd366d5b5 rpc_restart_call_prepare +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd4f8ee2e rpc_rmdir +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd5466801 rpc_bind_new_program +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd7c505c4 svc_create_pooled +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd81efd9c svc_max_payload +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdc69400d read_bytes_from_xdr_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdced6983 rpc_mkpipe_data +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdf0d7714 auth_domain_put +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdf1d3d85 svc_set_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdfb29b7a xdr_decode_array2 +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdfb8b32d svc_set_num_threads +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe1ac2bb8 sunrpc_net_id +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe455ae0d xdr_terminate_string +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe5919cb1 xdr_encode_opaque +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe77df606 xdr_stream_pos +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe97f4ce5 qword_get +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xec4170d1 xprt_free +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xedcf6be4 qword_add +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xee63bce7 xprt_reserve_xprt_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xeeacab69 rpc_update_rtt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf16b3c40 rpc_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf185256e xdr_reserve_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf1d75fcb xdr_init_decode_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf2fe9098 xprt_setup_backchannel +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf32eac9e rpcauth_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf80fc53b xdr_commit_encode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf847d35f rpc_uaddr2sockaddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf8c1063b sunrpc_cache_register_pipefs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf9be3dea cache_register_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf9d1164c rpc_free +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfa4c2b13 xprt_wait_for_buffer_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfb95e137 svc_rpcb_setup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfbe37b2c svc_seq_show +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfc1ae790 svc_addsock +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfff8b3e2 rpc_localaddr +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x0b0a6421 vsock_stream_has_data +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x0c79d5ef vm_sockets_get_local_cid +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x0dfae5ba vsock_enqueue_accept +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x15c0c57c vsock_addr_init +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x2663cb64 vsock_addr_equals_addr +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x33e71058 vsock_find_bound_socket +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x3f81e794 __vsock_core_init +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x4e907cfe vsock_stream_has_space +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x547cd7bc vsock_find_connected_socket +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x728ad88c vsock_for_each_connected_socket +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 0x7f730c80 vsock_core_exit +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x974970ae vsock_add_pending +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xa936bdcf vsock_insert_connected +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xbd0f699d vsock_addr_bound +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xd61de1cb vsock_remove_pending +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xd95ac116 vsock_addr_validate +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xe2adba21 vsock_remove_connected +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xe4ddf4c6 vsock_remove_bound +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xeee5e003 __vsock_create +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xf593c40a vsock_pending_work +EXPORT_SYMBOL_GPL net/wimax/wimax 0x0698ca8f wimax_report_rfkill_hw +EXPORT_SYMBOL_GPL net/wimax/wimax 0x0a4432de wimax_dev_add +EXPORT_SYMBOL_GPL net/wimax/wimax 0x167a333e wimax_msg_len +EXPORT_SYMBOL_GPL net/wimax/wimax 0x49d2502f wimax_dev_rm +EXPORT_SYMBOL_GPL net/wimax/wimax 0x701781fa wimax_state_get +EXPORT_SYMBOL_GPL net/wimax/wimax 0x849562eb wimax_msg_data +EXPORT_SYMBOL_GPL net/wimax/wimax 0x8fd506be wimax_msg +EXPORT_SYMBOL_GPL net/wimax/wimax 0xb0553d63 wimax_msg_alloc +EXPORT_SYMBOL_GPL net/wimax/wimax 0xca528f39 wimax_msg_send +EXPORT_SYMBOL_GPL net/wimax/wimax 0xd63d9c77 wimax_report_rfkill_sw +EXPORT_SYMBOL_GPL net/wimax/wimax 0xddc1e26e wimax_dev_init +EXPORT_SYMBOL_GPL net/wimax/wimax 0xe07a093a wimax_state_change +EXPORT_SYMBOL_GPL net/wimax/wimax 0xe1d824f3 wimax_msg_data_len +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x02f01ec5 cfg80211_wext_giwrts +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x216334ba cfg80211_wext_siwrts +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x2b70db7b cfg80211_wext_giwname +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x3c008006 cfg80211_shutdown_all_interfaces +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x690f29d8 cfg80211_wext_giwfrag +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x7fb777f8 cfg80211_wext_giwscan +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xa996d65f cfg80211_wext_siwfrag +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xbd32a320 cfg80211_wext_giwmode +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xc5d6bff5 cfg80211_wext_giwretry +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xe4010fa8 cfg80211_wext_siwmode +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xed75af0e cfg80211_vendor_cmd_reply +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xfd85fae2 cfg80211_wext_giwrange +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xfe67edc3 cfg80211_wext_siwscan +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 0x3bf471d7 xfrm_calg_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x47b34e60 xfrm_ealg_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x60b73277 xfrm_aead_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x7a8ca627 xfrm_count_pfkey_enc_supported +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x834ba96d xfrm_aalg_get_byid +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xa6e66685 xfrm_aalg_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xaa762fe2 xfrm_aalg_get_byidx +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xad1b60ed xfrm_calg_get_byid +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xdbfc35c8 xfrm_ealg_get_byidx +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xdfea3a6d xfrm_ealg_get_byid +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0x30669532 ipcomp_destroy +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0x9f019680 ipcomp_output +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0xbd8a0dc9 ipcomp_init_state +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0xe089b4ef ipcomp_input +EXPORT_SYMBOL_GPL sound/core/seq/snd-seq-device 0x520f70eb snd_seq_driver_unregister +EXPORT_SYMBOL_GPL sound/core/seq/snd-seq-device 0xa0211588 __snd_seq_driver_register +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x0200520b snd_hdac_bus_init_cmd_io +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x0dfb365b snd_hdac_exec_verb +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x0e729fa0 snd_hdac_bus_enter_link_reset +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x1cf222d3 snd_hdac_stream_timecounter_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x269dd084 snd_hdac_bus_init_chip +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x27c2fb97 snd_hdac_bus_remove_device +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x29e5d77b snd_hdac_stream_cleanup +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x2c26efd1 snd_hdac_stream_clear +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x33a420c2 snd_hdac_bus_exit_link_reset +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x34bb9701 snd_hdac_stream_stop +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x34dfef8a snd_hdac_link_power +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x37590b6a snd_hdac_stream_start +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x391919a0 snd_hdac_override_parm +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x393eb1c9 snd_hdac_stream_sync_trigger +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x419ec068 hdac_get_device_id +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x4dcc077d snd_hdac_stream_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x4e3ad262 snd_hdac_stream_reset +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x500b203b snd_hdac_regmap_add_vendor_verb +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x555611b2 snd_hdac_bus_stop_chip +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x5ab069c8 snd_hdac_regmap_exit +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x5ab29732 snd_hdac_device_unregister +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x60de582b snd_hdac_regmap_write_raw +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x6111c3ab snd_hdac_refresh_widgets +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x66a955d4 snd_hdac_bus_exec_verb +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x6da5c0bd snd_hdac_bus_handle_stream_irq +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x72ffd70f snd_hdac_stream_sync +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x79b74d81 snd_hdac_query_supported_pcm +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x7c5d2a9f snd_hdac_dsp_cleanup +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x7efc2980 snd_hdac_regmap_read_raw +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x868e1f57 snd_hdac_stream_assign +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x8ac1a322 snd_hdac_regmap_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x9227120f snd_hdac_get_sub_nodes +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x9274b413 snd_hdac_device_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x98d6d4a0 snd_hdac_bus_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x99309d28 snd_hdac_device_register +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x99426072 snd_hdac_bus_exit +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x9a8e1877 snd_array_free +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xa2fc996c snd_hdac_power_up_pm +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xa51dc40e snd_hdac_bus_queue_event +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xa9af2141 snd_hdac_stream_release +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xadc28291 snd_hdac_bus_free_stream_pages +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xaea5c69e _snd_hdac_read_parm +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xaeb4534d snd_hdac_bus_exec_verb_unlocked +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xaf700c17 snd_hdac_bus_get_response +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xb1adabc3 snd_hdac_power_down_pm +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xb5edad7e snd_hdac_power_down +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xb7e093c7 snd_hdac_bus_update_rirb +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xb9fdff81 snd_hdac_get_connections +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xbe7dd7dc snd_array_new +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xd02a0de1 snd_hdac_bus_send_cmd +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xd203719a snd_hdac_stream_setup +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xd319ded7 snd_hdac_read_parm_uncached +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xd510f073 snd_hdac_bus_alloc_stream_pages +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xd66dfb33 snd_hdac_device_exit +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xd69fb958 snd_hdac_read +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xda4a2308 snd_hdac_dsp_trigger +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xdd9a804a snd_hdac_calc_stream_format +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xde454db8 snd_hdac_power_up +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xebe66311 snd_hdac_stream_set_params +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xec2c0551 snd_hdac_make_cmd +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xefd55584 snd_hdac_dsp_prepare +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xf3a8565b snd_hda_bus_type +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xf537c68a snd_hdac_regmap_update_raw +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xf6e7a040 snd_hdac_is_supported_format +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xf9d2682c snd_hdac_bus_stop_cmd_io +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xfd48f66d snd_hdac_bus_add_device +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xfff3fa8e snd_hdac_stream_setup_periods +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x00e1d986 snd_ak4113_build +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x07928988 snd_ak4113_external_rate +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0xb6860d5e snd_ak4113_reinit +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0xc0a9cbcf snd_ak4113_check_rate_and_errors +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0xd71bcfb3 snd_ak4113_reg_write +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0xf2d02a34 snd_ak4113_create +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0321a5ef snd_hda_mixer_amp_volume_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x04294669 snd_hda_codec_update_widgets +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 0x07ffc05a hda_codec_driver_unregister +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x083e424c snd_hda_jack_unsol_event +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0983cf89 snd_hda_mixer_amp_volume_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0c0f8eff snd_hda_apply_verbs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0c1c8505 snd_hda_mixer_amp_volume_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0fa137d1 snd_hda_get_conn_index +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1559e762 snd_hda_set_power_save +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x177ac081 snd_hda_jack_add_kctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x19099e1e snd_hda_mixer_amp_tlv +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1955ba5b snd_hda_multi_out_analog_open +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x19731ea1 snd_hda_create_dig_out_ctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x19ce81e4 snd_hda_mixer_amp_switch_get_beep +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1b09a750 snd_hda_detach_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1e8789e0 snd_hda_enable_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x21fe094c snd_hda_register_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x22a5d175 snd_hda_codec_pcm_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x25af76f8 snd_hda_codec_set_pincfg +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x25f83cbc snd_hda_mixer_bind_switch_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x266d5664 snd_hda_check_amp_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2ac51c56 snd_hda_mixer_bind_switch_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2d2b3453 snd_hda_codec_read +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2dbec99c snd_hda_add_nid +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2ec5e4be snd_hda_spdif_out_of_nid +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2fc5d7b9 snd_hda_get_bool_hint +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x33036ef1 snd_hda_parse_pin_defcfg +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x35740031 snd_hda_multi_out_analog_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x375cacd5 snd_hda_input_mux_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x38ce402b azx_interrupt +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3b8346ed snd_hda_codec_load_dsp_trigger +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3cd2e544 snd_hda_multi_out_dig_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3ef98a16 snd_hda_override_amp_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x403b2418 snd_hda_unlock_devices +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x407aeb7f snd_hda_mixer_bind_ctls_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x43538a57 snd_hda_jack_detect_state +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x45e5a1f3 snd_hda_mixer_bind_ctls_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4ad88119 snd_hda_mixer_bind_ctls_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4c3627ad azx_codec_configure +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4cf761a3 azx_stop_all_streams +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x524691fe snd_hda_codec_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x52f32239 snd_hda_mixer_amp_switch_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x561f2b66 snd_hda_enum_helper_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5641186c snd_hda_lock_devices +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x576c68b5 snd_hda_mixer_amp_switch_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5851485f snd_hda_mixer_amp_switch_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x592541c7 snd_hda_spdif_ctls_assign +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5d63a667 snd_hda_override_conn_list +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5d8a64ad snd_hda_codec_setup_stream +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5e86e9fe snd_hda_jack_tbl_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x60a7b2ee snd_hda_mixer_bind_tlv +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x647b62ec snd_hda_codec_get_pin_target +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6567aa6f snd_hda_jack_add_kctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x68b72c1a snd_hda_codec_configure +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x69e48003 snd_hda_codec_get_pincfg +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6aa16a5f snd_hda_codec_eapd_power_filter +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6bd30c18 snd_hda_multi_out_dig_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6d6ed359 snd_hda_codec_load_dsp_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6fa805e4 snd_hda_codec_amp_update +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6fb8c825 snd_hda_apply_pincfgs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7133a65c is_jack_detectable +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x71919ca8 snd_hda_pick_pin_fixup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x73fe2acb azx_bus_init +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x792ddfb8 snd_hda_input_mux_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7d620c96 snd_hda_get_int_hint +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x82c32283 snd_hda_jack_detect_enable_callback +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x82fb3240 snd_hda_codec_new +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x84f9a8c0 snd_hda_codec_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x853556d9 snd_hda_set_vmaster_tlv +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x857b9ad3 snd_hda_bind_vol +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8adf7113 azx_get_pos_posbuf +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8f13af5c snd_hda_add_imux_item +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8f75daed snd_hda_codec_set_pin_target +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x905e1ac7 _snd_hda_set_pin_ctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x93fbcebe azx_get_position +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9505639a snd_hda_pick_fixup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9554e48b snd_hda_load_patch +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9a4d2404 snd_hda_get_pin_label +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9a5a2077 snd_hda_get_connections +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9b319601 __snd_hda_add_vmaster +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9c259877 snd_hda_codec_set_power_to_all +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa26033ee azx_free_streams +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa2827d76 snd_hda_get_jack_location +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa3a01cfb snd_hda_codec_write +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa49b36af snd_hda_shutup_pins +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa551ff83 snd_hda_add_new_ctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xac51af8a snd_hda_get_conn_list +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xad58378f snd_hda_codec_pcm_new +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb1b4a5b9 snd_hda_multi_out_analog_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb2e226a5 snd_hda_jack_detect_enable +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb32f6b39 __hda_codec_driver_register +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb77952bf snd_hda_sync_vmaster_hook +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb854fd2c snd_hda_jack_set_gating_jack +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xbcce9b2d snd_hda_jack_report_sync +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xbff6e0b8 azx_stop_chip +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc16dca89 snd_hda_multi_out_dig_open +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc3705e9e azx_probe_codecs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc46c414f snd_hda_correct_pin_ctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc4afd95f snd_hda_jack_poll_all +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc4e73f5e snd_hda_jack_set_dirty_all +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc652fd69 snd_hda_get_jack_connectivity +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc69af980 snd_hda_pin_sense +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc7d7c11c query_amp_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc7fea223 snd_hda_add_vmaster_hook +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc97d0f64 snd_hda_codec_amp_init +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xcb301b6e snd_hda_get_jack_type +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xcee38d78 snd_hda_create_spdif_in_ctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xcfbc6ad2 snd_hda_add_verbs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd19afc45 snd_hda_codec_load_dsp_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd1fdb830 snd_hda_apply_fixup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd27bbdf0 snd_hda_codec_amp_stereo +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd38ffb34 snd_hda_mixer_amp_switch_put_beep +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd6e62a4e azx_init_streams +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd8b11f46 snd_hda_jack_tbl_get_from_tag +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd8edaba3 hda_get_autocfg_input_label +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xde2b9758 azx_get_pos_lpib +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xdfda98bb snd_hda_spdif_ctls_unassign +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe0e2c22c snd_hda_check_amp_list_power +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe118de5d snd_pcm_2_1_chmaps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe26d2b37 snd_hda_get_default_vref +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe2f26841 snd_hda_attach_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe7bc27c8 snd_hda_multi_out_dig_close +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe93386e2 snd_hda_codec_amp_init_stereo +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xea7a2c5d snd_hda_bind_sw +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xeab360c7 __snd_hda_codec_cleanup_stream +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xeda3a721 snd_print_pcm_bits +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xef02ce36 azx_init_chip +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf4925a1c snd_hda_sequence_write +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf5485e5f snd_hda_get_hint +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf6e0b6f7 snd_hda_find_mixer_ctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xfa18991e snd_hda_ctl_add +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xfcadc224 snd_hda_create_spdif_share_sw +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x0d634fce snd_hda_get_path_from_idx +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x10e467f3 snd_hda_activate_path +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x14e9529f snd_hda_get_nid_path +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x15d57600 snd_hda_add_new_path +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x1e932860 snd_hda_parse_nid_path +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x252f15cb snd_hda_gen_check_power_status +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x293e8a54 snd_hda_gen_update_outputs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x400965dc snd_hda_get_path_idx +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x50af2bb4 snd_hda_gen_path_power_filter +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x530b55c8 snd_hda_gen_line_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 0x821fce75 snd_hda_gen_fix_pin_power +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 0x9d86685e snd_hda_gen_stream_pm +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xa3609f45 snd_hda_gen_parse_auto_config +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xa8697099 snd_hda_gen_hp_automute +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xafc29e37 snd_hda_gen_free +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xb0260cbe snd_hda_gen_build_pcms +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xc7790db0 snd_hda_gen_spec_init +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xdb7e9355 snd_hda_gen_mic_autoswitch +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xdbf889b2 snd_hda_gen_add_kctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xf441fc15 snd_hda_gen_init +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xfe85f308 snd_hda_gen_build_controls +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs4271 0x0974070a cs4271_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs4271 0x33b8e748 cs4271_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs4271 0x7d05786f cs4271_dt_ids +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42l51 0x2fdf51c3 cs42l51_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42l51 0x375ad98c cs42l51_of_match +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42l51 0x6598b5c7 cs42l51_regmap +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0x0245c4f2 cs42xx8_of_match +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0x2b1733a2 cs42xx8_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0x777aff69 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-cs42xx8 0xdcc0f044 cs42xx8_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-es8328 0x3829ca66 es8328_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-es8328 0xd9074618 es8328_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-max98090 0x439d366e max98090_mic_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-max98095 0xbd030e00 max98095_jack_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm512x 0x7f115adf pcm512x_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm512x 0x822c7a35 pcm512x_pm_ops +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm512x 0x8f75968d pcm512x_regmap +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm512x 0x9119d269 pcm512x_remove +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rl6231 0x70617a04 rl6231_get_clk_info +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rl6231 0x7f68b24d rl6231_pll_calc +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rl6231 0xdba4502f rl6231_calc_dmic_clk +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5640 0xbe73ab44 rt5640_dmic_enable +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5645 0x02564f04 rt5645_sel_asrc_clk_src +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5645 0x8832f5ef rt5645_set_jack_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5677 0x4b6c7985 rt5677_sel_asrc_clk_src +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5677-spi 0x24493c97 rt5677_spi_write +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5677-spi 0x73bdda98 rt5677_spi_burst_write +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0x142a11a3 sigmadsp_attach +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0x41e0f8a3 sigmadsp_reset +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0x5ea6f54d sigmadsp_restrict_params +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0x69f4bcf1 devm_sigmadsp_init +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0x8be59705 sigmadsp_setup +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp-i2c 0xee0d6684 devm_sigmadsp_init_i2c +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-ssm2602 0xb033fa45 ssm2602_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-ssm2602 0xb4f0ae6d ssm2602_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-tpa6130a2 0x565a80f8 tpa6130a2_stereo_enable +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-tpa6130a2 0xd3df2758 tpa6130a2_add_controls +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-ts3a227e 0x95d36a31 ts3a227e_enable_jack_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-twl6040 0x13835303 twl6040_get_trim_value +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-twl6040 0x1930c4c2 twl6040_get_clk_id +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-twl6040 0x30bd927b twl6040_hs_jack_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-twl6040 0x3d84d246 twl6040_get_dl1_gain +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-twl6040 0xace7516d twl6040_get_hs_step_size +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0x04e74bdd wm_hubs_handle_analogue_pdata +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0x1230b76f wm_hubs_add_analogue_routes +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0x3d4b5835 wm_hubs_add_analogue_controls +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 0x6db4d790 wm_hubs_vmid_ena +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0x70442cfd wm_hubs_set_bias_level +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 0xd6a1c954 wm_hubs_hpr_mux +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0xd8c7baaf wm_hubs_update_class_w +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0xef7daabf wm_hubs_hpl_mux +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8804 0x01d085aa wm8804_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8804 0x2a9c8a84 wm8804_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8804 0xd7625b91 wm8804_remove +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8804 0xd7d4df68 wm8804_pm +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8903 0xdc0f0654 wm8903_mic_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8962 0xd0091e9c wm8962_mic_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8994 0x87dec18c wm8958_mic_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8994 0xbf77ed3d wm8994_mic_detect +EXPORT_SYMBOL_GPL sound/soc/davinci/snd-soc-edma 0x0e9fd31d edma_pcm_platform_register +EXPORT_SYMBOL_GPL sound/soc/fsl/snd-soc-fsl-asrc 0x20a9cb9c fsl_asrc_platform +EXPORT_SYMBOL_GPL sound/soc/fsl/snd-soc-fsl-asrc 0x83f6b38b fsl_asrc_get_dma_channel +EXPORT_SYMBOL_GPL sound/soc/omap/snd-soc-omap-mcpdm 0x41450a01 omap_mcpdm_configure_dn_offsets +EXPORT_SYMBOL_GPL sound/soc/qcom/snd-soc-lpass-cpu 0xb47e516a asoc_qcom_lpass_cpu_platform_remove +EXPORT_SYMBOL_GPL sound/soc/qcom/snd-soc-lpass-cpu 0xb7a6f16d asoc_qcom_lpass_cpu_dai_probe +EXPORT_SYMBOL_GPL sound/soc/qcom/snd-soc-lpass-cpu 0xd19653b7 asoc_qcom_lpass_cpu_dai_ops +EXPORT_SYMBOL_GPL sound/soc/qcom/snd-soc-lpass-cpu 0xe829db35 asoc_qcom_lpass_cpu_platform_probe +EXPORT_SYMBOL_GPL sound/soc/qcom/snd-soc-lpass-platform 0x111631e7 asoc_qcom_lpass_platform_register +EXPORT_SYMBOL_GPL sound/soc/samsung/snd-soc-idma 0x776c599d idma_reg_addr_init +EXPORT_SYMBOL_GPL sound/soc/samsung/snd-soc-s3c-dma 0xb5211ff2 samsung_asoc_dma_platform_register +EXPORT_SYMBOL_GPL sound/soc/samsung/snd-soc-s3c-dma 0xb95d89b8 samsung_asoc_init_dma_data +EXPORT_SYMBOL_GPL sound/soc/tegra/snd-soc-tegra-pcm 0x67a40bf2 tegra_pcm_platform_register_with_chan_names +EXPORT_SYMBOL_GPL sound/soc/tegra/snd-soc-tegra-pcm 0x6eb56d1f tegra_pcm_platform_unregister +EXPORT_SYMBOL_GPL sound/soc/tegra/snd-soc-tegra-pcm 0xefb82184 tegra_pcm_platform_register +EXPORT_SYMBOL_GPL sound/soc/tegra/snd-soc-tegra-utils 0x006d2bdc tegra_asoc_utils_init +EXPORT_SYMBOL_GPL sound/soc/tegra/snd-soc-tegra-utils 0x6748953c tegra_asoc_utils_set_ac97_rate +EXPORT_SYMBOL_GPL sound/soc/tegra/snd-soc-tegra-utils 0xcb0125b9 tegra_asoc_utils_set_rate +EXPORT_SYMBOL_GPL sound/soc/tegra/snd-soc-tegra-utils 0xe0e81324 tegra_asoc_utils_fini +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 0x04ecb471 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 0x6fe20143 tegra30_ahub_set_rx_cif_source +EXPORT_SYMBOL_GPL sound/soc/tegra/snd-soc-tegra30-ahub 0x72a91a91 tegra30_ahub_allocate_rx_fifo +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/usb/line6/snd-usb-line6 0x11936336 line6_init_midi +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x202a1b1b line6_midi_id +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x30b10987 line6_read_serial_number +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x42ac682f line6_suspend +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x44908a74 line6_read_data +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x5407fa05 line6_pcm_acquire +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x64741fb8 line6_pcm_release +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x707e83ad line6_resume +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x84fde4a2 line6_init_pcm +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x8c49d7b0 line6_alloc_sysex_buffer +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x8ec973cd line6_start_timer +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xa0781d35 line6_send_raw_message_async +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xa0d37c17 line6_version_request_async +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xb75650bb line6_write_data +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xc434547d line6_probe +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xf4407610 line6_disconnect +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xf966de6d line6_send_sysex_message +EXPORT_SYMBOL_GPL vmlinux 0x0011e812 sdio_set_host_pm_flags +EXPORT_SYMBOL_GPL vmlinux 0x0044ebdc wm8400_reset_codec_reg_cache +EXPORT_SYMBOL_GPL vmlinux 0x005ceea1 of_reserved_mem_device_release +EXPORT_SYMBOL_GPL vmlinux 0x006042d4 cpsw_ale_add_vlan +EXPORT_SYMBOL_GPL vmlinux 0x00632780 work_busy +EXPORT_SYMBOL_GPL vmlinux 0x0063ca85 usb_sg_wait +EXPORT_SYMBOL_GPL vmlinux 0x006820b4 pci_write_msi_msg +EXPORT_SYMBOL_GPL vmlinux 0x009304b6 ata_tf_from_fis +EXPORT_SYMBOL_GPL vmlinux 0x009a96cb snd_dmaengine_pcm_open_request_chan +EXPORT_SYMBOL_GPL vmlinux 0x009b9599 blkcipher_aead_walk_virt_block +EXPORT_SYMBOL_GPL vmlinux 0x00aa7fa8 regulator_get_voltage +EXPORT_SYMBOL_GPL vmlinux 0x00e67a49 crypto_create_tfm +EXPORT_SYMBOL_GPL vmlinux 0x00ebcb5d ata_id_string +EXPORT_SYMBOL_GPL vmlinux 0x01010c6d klist_add_before +EXPORT_SYMBOL_GPL vmlinux 0x0103f38e ahci_host_activate +EXPORT_SYMBOL_GPL vmlinux 0x011cf028 regulator_suspend_finish +EXPORT_SYMBOL_GPL vmlinux 0x012cd720 power_supply_set_property +EXPORT_SYMBOL_GPL vmlinux 0x0162eb42 __pm_wakeup_event +EXPORT_SYMBOL_GPL vmlinux 0x016d0ce8 gpiochip_add_pin_range +EXPORT_SYMBOL_GPL vmlinux 0x0174523b attribute_container_classdev_to_container +EXPORT_SYMBOL_GPL vmlinux 0x017e4187 cpuidle_register_device +EXPORT_SYMBOL_GPL vmlinux 0x018200d7 phy_pm_runtime_allow +EXPORT_SYMBOL_GPL vmlinux 0x018edcce cpdma_ctlr_dump +EXPORT_SYMBOL_GPL vmlinux 0x019311dd sdhci_enable_irq_wakeups +EXPORT_SYMBOL_GPL vmlinux 0x01c6cb0c cpu_cluster_pm_enter +EXPORT_SYMBOL_GPL vmlinux 0x01e1a8de kgdb_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x0215a458 snd_soc_add_codec_controls +EXPORT_SYMBOL_GPL vmlinux 0x021855d9 phy_power_off +EXPORT_SYMBOL_GPL vmlinux 0x023350b9 led_trigger_event +EXPORT_SYMBOL_GPL vmlinux 0x0261334a key_set_timeout +EXPORT_SYMBOL_GPL vmlinux 0x027c9639 ohci_init_driver +EXPORT_SYMBOL_GPL vmlinux 0x028944ad cpsw_ale_stop +EXPORT_SYMBOL_GPL vmlinux 0x02a5154d powercap_register_zone +EXPORT_SYMBOL_GPL vmlinux 0x02c22f6a da9055_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0x02d6484b rtnl_register +EXPORT_SYMBOL_GPL vmlinux 0x02de69a5 pci_load_saved_state +EXPORT_SYMBOL_GPL vmlinux 0x02e3a405 usb_get_dev +EXPORT_SYMBOL_GPL vmlinux 0x02e593ff xattr_getsecurity +EXPORT_SYMBOL_GPL vmlinux 0x02f75399 pci_user_read_config_dword +EXPORT_SYMBOL_GPL vmlinux 0x02fe1213 ip6_datagram_recv_ctl +EXPORT_SYMBOL_GPL vmlinux 0x02fea2ae rcu_note_context_switch +EXPORT_SYMBOL_GPL vmlinux 0x0304e56b device_rename +EXPORT_SYMBOL_GPL vmlinux 0x03062b16 kobject_uevent +EXPORT_SYMBOL_GPL vmlinux 0x0321cdbf of_alias_get_highest_id +EXPORT_SYMBOL_GPL vmlinux 0x032375b0 hwrng_unregister +EXPORT_SYMBOL_GPL vmlinux 0x0327d57c ipv6_proxy_select_ident +EXPORT_SYMBOL_GPL vmlinux 0x032cdc1c exportfs_encode_fh +EXPORT_SYMBOL_GPL vmlinux 0x033832c7 usb_amd_hang_symptom_quirk +EXPORT_SYMBOL_GPL vmlinux 0x0343bdf1 __i2c_board_list +EXPORT_SYMBOL_GPL vmlinux 0x035abe29 fuse_request_alloc +EXPORT_SYMBOL_GPL vmlinux 0x035bea54 napi_hash_add +EXPORT_SYMBOL_GPL vmlinux 0x035bf819 device_add +EXPORT_SYMBOL_GPL vmlinux 0x0363c7c8 devm_regmap_init_spi +EXPORT_SYMBOL_GPL vmlinux 0x03709d7a mpc8xxx_spi_rx_buf_u32 +EXPORT_SYMBOL_GPL vmlinux 0x0386fd50 debugfs_create_blob +EXPORT_SYMBOL_GPL vmlinux 0x038cbf3a snd_soc_dpcm_be_set_state +EXPORT_SYMBOL_GPL vmlinux 0x039a8893 platform_bus +EXPORT_SYMBOL_GPL vmlinux 0x039fd867 trace_clock_global +EXPORT_SYMBOL_GPL vmlinux 0x03a90c7d ata_pci_bmdma_init +EXPORT_SYMBOL_GPL vmlinux 0x03dc7b38 pci_sriov_set_totalvfs +EXPORT_SYMBOL_GPL vmlinux 0x03e3686c ata_timing_cycle2mode +EXPORT_SYMBOL_GPL vmlinux 0x03e9ecbe snd_soc_remove_platform +EXPORT_SYMBOL_GPL vmlinux 0x03f2dc34 of_clk_del_provider +EXPORT_SYMBOL_GPL vmlinux 0x04025542 event_triggers_call +EXPORT_SYMBOL_GPL vmlinux 0x0402b504 __percpu_ida_init +EXPORT_SYMBOL_GPL vmlinux 0x042da606 devm_phy_get +EXPORT_SYMBOL_GPL vmlinux 0x04361bd3 aead_geniv_free +EXPORT_SYMBOL_GPL vmlinux 0x0437cf30 tps6586x_get_version +EXPORT_SYMBOL_GPL vmlinux 0x0465a073 regmap_reg_in_ranges +EXPORT_SYMBOL_GPL vmlinux 0x04802fc0 bsg_setup_queue +EXPORT_SYMBOL_GPL vmlinux 0x04818366 tpm_get_timeouts +EXPORT_SYMBOL_GPL vmlinux 0x048b5f8d twl4030_audio_get_mclk +EXPORT_SYMBOL_GPL vmlinux 0x0499deb0 __clk_get_rate +EXPORT_SYMBOL_GPL vmlinux 0x049af9bf dt_init_idle_driver +EXPORT_SYMBOL_GPL vmlinux 0x04b2c777 of_prop_next_string +EXPORT_SYMBOL_GPL vmlinux 0x04c4f603 mpi_get_buffer +EXPORT_SYMBOL_GPL vmlinux 0x04c8feb3 mpc8xxx_spi_rx_buf_u16 +EXPORT_SYMBOL_GPL vmlinux 0x04e1b99f snd_pcm_std_chmaps +EXPORT_SYMBOL_GPL vmlinux 0x04e9cc72 skcipher_geniv_init +EXPORT_SYMBOL_GPL vmlinux 0x04ea5cdf __tracepoint_rpm_idle +EXPORT_SYMBOL_GPL vmlinux 0x04f4bd8d percpu_ref_exit +EXPORT_SYMBOL_GPL vmlinux 0x050d5292 napi_by_id +EXPORT_SYMBOL_GPL vmlinux 0x052b8ff9 spi_sync_locked +EXPORT_SYMBOL_GPL vmlinux 0x053a7763 nf_unregister_afinfo +EXPORT_SYMBOL_GPL vmlinux 0x053f84a7 inet6_csk_bind_conflict +EXPORT_SYMBOL_GPL vmlinux 0x054e550b kernel_halt +EXPORT_SYMBOL_GPL vmlinux 0x05542702 leds_list_lock +EXPORT_SYMBOL_GPL vmlinux 0x05721a29 ata_cable_40wire +EXPORT_SYMBOL_GPL vmlinux 0x0575eff6 usb_get_from_anchor +EXPORT_SYMBOL_GPL vmlinux 0x0583ca7e snd_pcm_lib_default_mmap +EXPORT_SYMBOL_GPL vmlinux 0x058b582a vt_get_leds +EXPORT_SYMBOL_GPL vmlinux 0x058e8867 ata_bmdma_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0x05b4622a of_pci_dma_configure +EXPORT_SYMBOL_GPL vmlinux 0x05b9caca pci_enable_sriov +EXPORT_SYMBOL_GPL vmlinux 0x05d44690 alloc_vm_area +EXPORT_SYMBOL_GPL vmlinux 0x05db7386 iommu_domain_window_disable +EXPORT_SYMBOL_GPL vmlinux 0x05dc3ac3 find_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0x05e108ac aead_geniv_init +EXPORT_SYMBOL_GPL vmlinux 0x05f9a32d relay_switch_subbuf +EXPORT_SYMBOL_GPL vmlinux 0x05f9c6fd pci_assign_unassigned_bridge_resources +EXPORT_SYMBOL_GPL vmlinux 0x05ff5a19 root_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x060a6075 snd_soc_dapm_free +EXPORT_SYMBOL_GPL vmlinux 0x0626da5f od_unregister_powersave_bias_handler +EXPORT_SYMBOL_GPL vmlinux 0x062dcc17 snd_soc_dapm_get_enum_double +EXPORT_SYMBOL_GPL vmlinux 0x06367b11 amba_device_alloc +EXPORT_SYMBOL_GPL vmlinux 0x06402fab blk_end_request_err +EXPORT_SYMBOL_GPL vmlinux 0x06438115 tcp_orphan_count +EXPORT_SYMBOL_GPL vmlinux 0x064db9a5 mark_mounts_for_expiry +EXPORT_SYMBOL_GPL vmlinux 0x064dee2b crypto_alloc_rng +EXPORT_SYMBOL_GPL vmlinux 0x0684806a uhci_check_and_reset_hc +EXPORT_SYMBOL_GPL vmlinux 0x0690cbfe regmap_raw_write +EXPORT_SYMBOL_GPL vmlinux 0x06a3db83 regmap_can_raw_write +EXPORT_SYMBOL_GPL vmlinux 0x06baf499 __cci_control_port_by_device +EXPORT_SYMBOL_GPL vmlinux 0x06d549e6 pinctrl_free_gpio +EXPORT_SYMBOL_GPL vmlinux 0x06f8d755 crypto_larval_kill +EXPORT_SYMBOL_GPL vmlinux 0x0702834a cpsw_ale_add_ucast +EXPORT_SYMBOL_GPL vmlinux 0x07032f9e trace_seq_to_user +EXPORT_SYMBOL_GPL vmlinux 0x072cc51f regulator_bulk_get +EXPORT_SYMBOL_GPL vmlinux 0x0739f429 x509_check_signature +EXPORT_SYMBOL_GPL vmlinux 0x0741d744 irq_generic_chip_ops +EXPORT_SYMBOL_GPL vmlinux 0x0743d720 pingv6_ops +EXPORT_SYMBOL_GPL vmlinux 0x0749b364 pm_generic_poweroff_late +EXPORT_SYMBOL_GPL vmlinux 0x075ad949 devm_regmap_init_vexpress_config +EXPORT_SYMBOL_GPL vmlinux 0x0762403c edac_put_sysfs_subsys +EXPORT_SYMBOL_GPL vmlinux 0x0785e372 regulator_get_voltage_sel_regmap +EXPORT_SYMBOL_GPL vmlinux 0x078c7b45 security_inode_create +EXPORT_SYMBOL_GPL vmlinux 0x0791f2a7 inet6_sk_rebuild_header +EXPORT_SYMBOL_GPL vmlinux 0x079711d8 crypto_ahash_finup +EXPORT_SYMBOL_GPL vmlinux 0x07a5b326 regmap_get_val_endian +EXPORT_SYMBOL_GPL vmlinux 0x07b21f85 kdb_get_kbd_char +EXPORT_SYMBOL_GPL vmlinux 0x07b32c38 regmap_write_async +EXPORT_SYMBOL_GPL vmlinux 0x07b35fb7 noop_backing_dev_info +EXPORT_SYMBOL_GPL vmlinux 0x07b52e38 rtnl_unregister +EXPORT_SYMBOL_GPL vmlinux 0x07e87710 pci_ioremap_bar +EXPORT_SYMBOL_GPL vmlinux 0x08156773 name_to_dev_t +EXPORT_SYMBOL_GPL vmlinux 0x081b2f03 dev_attr_em_message +EXPORT_SYMBOL_GPL vmlinux 0x081fd18e device_create_file +EXPORT_SYMBOL_GPL vmlinux 0x0837fb51 ip6_sk_dst_lookup_flow +EXPORT_SYMBOL_GPL vmlinux 0x08635902 ata_sff_port_intr +EXPORT_SYMBOL_GPL vmlinux 0x087831e2 snd_soc_unregister_component +EXPORT_SYMBOL_GPL vmlinux 0x088867b8 of_property_read_u64 +EXPORT_SYMBOL_GPL vmlinux 0x0892ae1a musb_writew +EXPORT_SYMBOL_GPL vmlinux 0x08a01121 posix_acl_create +EXPORT_SYMBOL_GPL vmlinux 0x08add298 virtqueue_is_broken +EXPORT_SYMBOL_GPL vmlinux 0x08be5269 xfrm_audit_policy_delete +EXPORT_SYMBOL_GPL vmlinux 0x08ccfb28 filter_check_discard +EXPORT_SYMBOL_GPL vmlinux 0x08dd73a9 napi_hash_del +EXPORT_SYMBOL_GPL vmlinux 0x08e5fa4b inet_csk_addr2sockaddr +EXPORT_SYMBOL_GPL vmlinux 0x08f713ab shmem_read_mapping_page_gfp +EXPORT_SYMBOL_GPL vmlinux 0x09150c64 cpsw_ale_add_mcast +EXPORT_SYMBOL_GPL vmlinux 0x091eb9b4 round_jiffies +EXPORT_SYMBOL_GPL vmlinux 0x093802be fwnode_property_read_u16_array +EXPORT_SYMBOL_GPL vmlinux 0x09437748 ring_buffer_read_events_cpu +EXPORT_SYMBOL_GPL vmlinux 0x09469482 kfree_call_rcu +EXPORT_SYMBOL_GPL vmlinux 0x094ca6fa driver_find +EXPORT_SYMBOL_GPL vmlinux 0x0952af60 fb_videomode_from_videomode +EXPORT_SYMBOL_GPL vmlinux 0x0958637c list_lru_add +EXPORT_SYMBOL_GPL vmlinux 0x0991c9b7 skcipher_geniv_free +EXPORT_SYMBOL_GPL vmlinux 0x09959f66 cpufreq_frequency_table_target +EXPORT_SYMBOL_GPL vmlinux 0x09988e61 ata_sas_port_init +EXPORT_SYMBOL_GPL vmlinux 0x099a0765 mtd_unpoint +EXPORT_SYMBOL_GPL vmlinux 0x09afc8a1 ata_link_next +EXPORT_SYMBOL_GPL vmlinux 0x09c42f08 snd_soc_dapm_disable_pin_unlocked +EXPORT_SYMBOL_GPL vmlinux 0x09d1a7b3 snd_soc_jack_add_zones +EXPORT_SYMBOL_GPL vmlinux 0x09e57b2d ehci_resume +EXPORT_SYMBOL_GPL vmlinux 0x09e913c1 snd_pcm_alt_chmaps +EXPORT_SYMBOL_GPL vmlinux 0x0a0f3325 snd_soc_set_ac97_ops +EXPORT_SYMBOL_GPL vmlinux 0x0a1ae2d4 inet_csk_reqsk_queue_hash_add +EXPORT_SYMBOL_GPL vmlinux 0x0a3fb9d5 i2c_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0x0a9eddce tps6586x_writes +EXPORT_SYMBOL_GPL vmlinux 0x0aa1eb99 blk_mq_free_request +EXPORT_SYMBOL_GPL vmlinux 0x0aa2835b zap_vma_ptes +EXPORT_SYMBOL_GPL vmlinux 0x0ab8678c regmap_get_reg_stride +EXPORT_SYMBOL_GPL vmlinux 0x0ad1ba31 snd_soc_dapm_disable_pin +EXPORT_SYMBOL_GPL vmlinux 0x0af39379 device_property_read_u16_array +EXPORT_SYMBOL_GPL vmlinux 0x0afd4610 zs_malloc +EXPORT_SYMBOL_GPL vmlinux 0x0b07abe2 unshare_fs_struct +EXPORT_SYMBOL_GPL vmlinux 0x0b86a3f5 max_gen_clk_ops +EXPORT_SYMBOL_GPL vmlinux 0x0b962f74 of_dma_get_range +EXPORT_SYMBOL_GPL vmlinux 0x0ba7c56b cpufreq_freq_transition_end +EXPORT_SYMBOL_GPL vmlinux 0x0bbae511 return_address +EXPORT_SYMBOL_GPL vmlinux 0x0bbefb21 ata_link_offline +EXPORT_SYMBOL_GPL vmlinux 0x0bd00225 snd_soc_bytes_tlv_callback +EXPORT_SYMBOL_GPL vmlinux 0x0bf827c1 crypto_alloc_ahash +EXPORT_SYMBOL_GPL vmlinux 0x0bf939cc gpiochip_is_requested +EXPORT_SYMBOL_GPL vmlinux 0x0bfa3a19 rcu_idle_exit +EXPORT_SYMBOL_GPL vmlinux 0x0c0c015e ring_buffer_swap_cpu +EXPORT_SYMBOL_GPL vmlinux 0x0c2047b1 of_clk_src_onecell_get +EXPORT_SYMBOL_GPL vmlinux 0x0c25c543 dm_get_rq_mapinfo +EXPORT_SYMBOL_GPL vmlinux 0x0c2cdbf1 synchronize_sched +EXPORT_SYMBOL_GPL vmlinux 0x0c449ce5 powercap_register_control_type +EXPORT_SYMBOL_GPL vmlinux 0x0c7464b3 irq_domain_remove +EXPORT_SYMBOL_GPL vmlinux 0x0c8ca59e attribute_container_register +EXPORT_SYMBOL_GPL vmlinux 0x0cb5eb45 ata_timing_compute +EXPORT_SYMBOL_GPL vmlinux 0x0cc03459 spi_setup +EXPORT_SYMBOL_GPL vmlinux 0x0cc1e40f crypto_it_tab +EXPORT_SYMBOL_GPL vmlinux 0x0ceb9500 hvc_instantiate +EXPORT_SYMBOL_GPL vmlinux 0x0cfdf9aa dma_request_slave_channel_reason +EXPORT_SYMBOL_GPL vmlinux 0x0d0958ae ata_bmdma_post_internal_cmd +EXPORT_SYMBOL_GPL vmlinux 0x0d16724f spi_async_locked +EXPORT_SYMBOL_GPL vmlinux 0x0d2260e3 md_is_badblock +EXPORT_SYMBOL_GPL vmlinux 0x0d35eaa7 i2c_unlock_adapter +EXPORT_SYMBOL_GPL vmlinux 0x0d3841ea sk_clear_memalloc +EXPORT_SYMBOL_GPL vmlinux 0x0d421024 md_run +EXPORT_SYMBOL_GPL vmlinux 0x0d4961de nf_log_buf_open +EXPORT_SYMBOL_GPL vmlinux 0x0d4d9ba9 alloc_page_buffers +EXPORT_SYMBOL_GPL vmlinux 0x0d7264a9 ndo_dflt_bridge_getlink +EXPORT_SYMBOL_GPL vmlinux 0x0d7768dc bus_unregister +EXPORT_SYMBOL_GPL vmlinux 0x0d7d4d70 rcu_batches_completed +EXPORT_SYMBOL_GPL vmlinux 0x0d992f51 aead_geniv_exit +EXPORT_SYMBOL_GPL vmlinux 0x0d9a27a9 snd_pcm_stop_xrun +EXPORT_SYMBOL_GPL vmlinux 0x0ddb1cd7 llist_reverse_order +EXPORT_SYMBOL_GPL vmlinux 0x0ddba570 param_ops_bool_enable_only +EXPORT_SYMBOL_GPL vmlinux 0x0de438bf snd_pcm_stream_unlock_irqrestore +EXPORT_SYMBOL_GPL vmlinux 0x0deabe0a of_css +EXPORT_SYMBOL_GPL vmlinux 0x0e0c7dbc dev_attr_unload_heads +EXPORT_SYMBOL_GPL vmlinux 0x0e0e354d regmap_add_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0x0e0eef37 device_property_read_u8_array +EXPORT_SYMBOL_GPL vmlinux 0x0e2e851b usb_get_current_frame_number +EXPORT_SYMBOL_GPL vmlinux 0x0e446f6d pci_scan_child_bus +EXPORT_SYMBOL_GPL vmlinux 0x0e46d98e tps80031_ext_power_req_config +EXPORT_SYMBOL_GPL vmlinux 0x0e57002c scsi_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x0ec54fad ata_sg_init +EXPORT_SYMBOL_GPL vmlinux 0x0ecd4628 usb_hcd_pci_remove +EXPORT_SYMBOL_GPL vmlinux 0x0ed0d744 bio_trim +EXPORT_SYMBOL_GPL vmlinux 0x0ee0c55d crypto_unregister_alg +EXPORT_SYMBOL_GPL vmlinux 0x0ee5d1e2 debugfs_create_atomic_t +EXPORT_SYMBOL_GPL vmlinux 0x0f163929 ahci_platform_suspend +EXPORT_SYMBOL_GPL vmlinux 0x0f1b39de bsg_register_queue +EXPORT_SYMBOL_GPL vmlinux 0x0f20500a debugfs_create_x8 +EXPORT_SYMBOL_GPL vmlinux 0x0f237df4 add_to_page_cache_lru +EXPORT_SYMBOL_GPL vmlinux 0x0f2fce09 regulator_get_optional +EXPORT_SYMBOL_GPL vmlinux 0x0f336d7f rcutorture_get_gp_data +EXPORT_SYMBOL_GPL vmlinux 0x0f3658e2 crypto_mod_get +EXPORT_SYMBOL_GPL vmlinux 0x0f4996d1 ata_sff_softreset +EXPORT_SYMBOL_GPL vmlinux 0x0f65a719 regcache_sync_region +EXPORT_SYMBOL_GPL vmlinux 0x0f751aea input_event_from_user +EXPORT_SYMBOL_GPL vmlinux 0x0fac644e snd_soc_get_volsw +EXPORT_SYMBOL_GPL vmlinux 0x0fc6dd98 usb_hcd_unmap_urb_for_dma +EXPORT_SYMBOL_GPL vmlinux 0x0fca305e snd_soc_put_volsw_sx +EXPORT_SYMBOL_GPL vmlinux 0x0fe51f61 __inet_inherit_port +EXPORT_SYMBOL_GPL vmlinux 0x0ff9af09 cpdma_ctlr_int_ctrl +EXPORT_SYMBOL_GPL vmlinux 0x10138352 tracing_on +EXPORT_SYMBOL_GPL vmlinux 0x1038c3c6 usb_enable_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0x1054059b pci_cfg_access_lock +EXPORT_SYMBOL_GPL vmlinux 0x105e5c84 xfrm_audit_state_delete +EXPORT_SYMBOL_GPL vmlinux 0x1073f2d6 register_kprobe +EXPORT_SYMBOL_GPL vmlinux 0x10813fb1 vchan_tx_submit +EXPORT_SYMBOL_GPL vmlinux 0x10b20422 of_cpufreq_cooling_register +EXPORT_SYMBOL_GPL vmlinux 0x10bc5684 usb_phy_gen_create_phy +EXPORT_SYMBOL_GPL vmlinux 0x10ecc52c usb_amd_quirk_pll_enable +EXPORT_SYMBOL_GPL vmlinux 0x1115567f rhashtable_walk_init +EXPORT_SYMBOL_GPL vmlinux 0x1126a4f8 device_store_bool +EXPORT_SYMBOL_GPL vmlinux 0x11315fde ahci_save_initial_config +EXPORT_SYMBOL_GPL vmlinux 0x115fbfae ftrace_set_notrace +EXPORT_SYMBOL_GPL vmlinux 0x1172ce54 rtc_ktime_to_tm +EXPORT_SYMBOL_GPL vmlinux 0x1179b19b tcp_fetch_timewait_stamp +EXPORT_SYMBOL_GPL vmlinux 0x118f66dd sprint_OID +EXPORT_SYMBOL_GPL vmlinux 0x11a7dc93 sdhci_set_bus_width +EXPORT_SYMBOL_GPL vmlinux 0x11b490e7 posix_timer_event +EXPORT_SYMBOL_GPL vmlinux 0x11d7589e add_hwgenerator_randomness +EXPORT_SYMBOL_GPL vmlinux 0x11d90b58 __tracepoint_wbc_writepage +EXPORT_SYMBOL_GPL vmlinux 0x11f7bb36 fuse_request_send +EXPORT_SYMBOL_GPL vmlinux 0x121d958a unregister_die_notifier +EXPORT_SYMBOL_GPL vmlinux 0x122ac714 clockevents_register_device +EXPORT_SYMBOL_GPL vmlinux 0x1246fa8d blk_queue_bypass_start +EXPORT_SYMBOL_GPL vmlinux 0x124f2056 crypto_get_attr_type +EXPORT_SYMBOL_GPL vmlinux 0x125c59aa driver_find_device +EXPORT_SYMBOL_GPL vmlinux 0x125d89cb usb_poison_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x1268f357 resume_device_irqs +EXPORT_SYMBOL_GPL vmlinux 0x12a8ba7d ata_sff_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x12b5193c fwnode_handle_put +EXPORT_SYMBOL_GPL vmlinux 0x12be40de pinctrl_dev_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x12cd61db pinctrl_put +EXPORT_SYMBOL_GPL vmlinux 0x12e4276e regulator_bulk_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x12fd441f cpufreq_register_governor +EXPORT_SYMBOL_GPL vmlinux 0x1313bb3c tps6586x_update +EXPORT_SYMBOL_GPL vmlinux 0x131a5ed7 regmap_del_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0x131db64a system_long_wq +EXPORT_SYMBOL_GPL vmlinux 0x13354608 scatterwalk_map_and_copy +EXPORT_SYMBOL_GPL vmlinux 0x1341c2d2 i2c_add_numbered_adapter +EXPORT_SYMBOL_GPL vmlinux 0x13541047 arizona_free_irq +EXPORT_SYMBOL_GPL vmlinux 0x135b262e da903x_read +EXPORT_SYMBOL_GPL vmlinux 0x136209db power_supply_reg_notifier +EXPORT_SYMBOL_GPL vmlinux 0x137107c2 regmap_raw_read +EXPORT_SYMBOL_GPL vmlinux 0x1373a10c list_lru_walk_node +EXPORT_SYMBOL_GPL vmlinux 0x138179fd crypto_alloc_akcipher +EXPORT_SYMBOL_GPL vmlinux 0x13863819 ata_sff_busy_sleep +EXPORT_SYMBOL_GPL vmlinux 0x139f739e bus_for_each_drv +EXPORT_SYMBOL_GPL vmlinux 0x13a3d8e4 ahci_print_info +EXPORT_SYMBOL_GPL vmlinux 0x13b89dee pinctrl_request_gpio +EXPORT_SYMBOL_GPL vmlinux 0x13d311a2 mtd_is_partition +EXPORT_SYMBOL_GPL vmlinux 0x142080eb dma_wait_for_async_tx +EXPORT_SYMBOL_GPL vmlinux 0x142f8867 usb_alloc_coherent +EXPORT_SYMBOL_GPL vmlinux 0x1440cbc9 irq_find_mapping +EXPORT_SYMBOL_GPL vmlinux 0x14634ce1 usb_alloc_urb +EXPORT_SYMBOL_GPL vmlinux 0x1477827b bus_get_device_klist +EXPORT_SYMBOL_GPL vmlinux 0x1482d108 netdev_rx_handler_unregister +EXPORT_SYMBOL_GPL vmlinux 0x148eac43 gpiod_get_value +EXPORT_SYMBOL_GPL vmlinux 0x14918a93 of_clk_add_provider +EXPORT_SYMBOL_GPL vmlinux 0x14f36914 crypto_lookup_aead +EXPORT_SYMBOL_GPL vmlinux 0x150c9fba of_get_videomode +EXPORT_SYMBOL_GPL vmlinux 0x15150048 da9052_enable_irq +EXPORT_SYMBOL_GPL vmlinux 0x1517dc48 power_supply_external_power_changed +EXPORT_SYMBOL_GPL vmlinux 0x1524bf5a crypto_rng_reset +EXPORT_SYMBOL_GPL vmlinux 0x1527c993 iommu_domain_alloc +EXPORT_SYMBOL_GPL vmlinux 0x1533ead9 serial8250_clear_and_reinit_fifos +EXPORT_SYMBOL_GPL vmlinux 0x153b4385 snd_soc_dapm_mux_update_power +EXPORT_SYMBOL_GPL vmlinux 0x153b6f1f pci_restore_ats_state +EXPORT_SYMBOL_GPL vmlinux 0x154862b3 snd_soc_dapm_enable_pin +EXPORT_SYMBOL_GPL vmlinux 0x15892417 async_synchronize_cookie +EXPORT_SYMBOL_GPL vmlinux 0x15a003d5 regulator_list_voltage_linear +EXPORT_SYMBOL_GPL vmlinux 0x15c23202 extcon_get_cable_state +EXPORT_SYMBOL_GPL vmlinux 0x15c28bc4 skb_tstamp_tx +EXPORT_SYMBOL_GPL vmlinux 0x15dbe5b1 regulator_enable +EXPORT_SYMBOL_GPL vmlinux 0x15ebe74f __tracepoint_mc_event +EXPORT_SYMBOL_GPL vmlinux 0x15ed0223 platform_get_irq +EXPORT_SYMBOL_GPL vmlinux 0x15efd446 rcu_batches_started +EXPORT_SYMBOL_GPL vmlinux 0x16000a3c dm_device_name +EXPORT_SYMBOL_GPL vmlinux 0x160aef74 virtqueue_disable_cb +EXPORT_SYMBOL_GPL vmlinux 0x16458c7f bus_register +EXPORT_SYMBOL_GPL vmlinux 0x1650bf27 rcutorture_record_progress +EXPORT_SYMBOL_GPL vmlinux 0x1651b5d5 cpufreq_frequency_table_verify +EXPORT_SYMBOL_GPL vmlinux 0x165fc3d3 ip6_redirect +EXPORT_SYMBOL_GPL vmlinux 0x1667db02 phy_create_lookup +EXPORT_SYMBOL_GPL vmlinux 0x16733123 pcie_bus_configure_settings +EXPORT_SYMBOL_GPL vmlinux 0x16adbf92 debugfs_create_u64 +EXPORT_SYMBOL_GPL vmlinux 0x1717a05d omap_get_plat_info +EXPORT_SYMBOL_GPL vmlinux 0x1736189b regulator_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x17413b71 spi_get_next_queued_message +EXPORT_SYMBOL_GPL vmlinux 0x174a0b91 iommu_detach_group +EXPORT_SYMBOL_GPL vmlinux 0x1753a32f hash_digest_size +EXPORT_SYMBOL_GPL vmlinux 0x175f8ab6 scsi_ioctl_block_when_processing_errors +EXPORT_SYMBOL_GPL vmlinux 0x17671a52 devm_regulator_unregister +EXPORT_SYMBOL_GPL vmlinux 0x177c338d twl_get_version +EXPORT_SYMBOL_GPL vmlinux 0x17a19108 snd_soc_dpcm_be_can_update +EXPORT_SYMBOL_GPL vmlinux 0x18329aab omap_dm_timer_request_by_node +EXPORT_SYMBOL_GPL vmlinux 0x18409538 pci_find_ext_capability +EXPORT_SYMBOL_GPL vmlinux 0x1853653c btree_alloc +EXPORT_SYMBOL_GPL vmlinux 0x1861badc ahci_shost_attrs +EXPORT_SYMBOL_GPL vmlinux 0x1866cec2 ring_buffer_size +EXPORT_SYMBOL_GPL vmlinux 0x186ecae5 __pm_runtime_use_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0x1878f62b edac_err_assert +EXPORT_SYMBOL_GPL vmlinux 0x18a5dc43 spi_alloc_master +EXPORT_SYMBOL_GPL vmlinux 0x18a84676 usb_add_phy_dev +EXPORT_SYMBOL_GPL vmlinux 0x18a9e005 device_create_vargs +EXPORT_SYMBOL_GPL vmlinux 0x18ae990b mbox_controller_register +EXPORT_SYMBOL_GPL vmlinux 0x18b7acd3 regulator_map_voltage_linear_range +EXPORT_SYMBOL_GPL vmlinux 0x18c3074e extcon_dev_unregister +EXPORT_SYMBOL_GPL vmlinux 0x18cef419 gpiod_get_direction +EXPORT_SYMBOL_GPL vmlinux 0x18d79e0a ip_local_out_sk +EXPORT_SYMBOL_GPL vmlinux 0x18fcb051 rhashtable_walk_start +EXPORT_SYMBOL_GPL vmlinux 0x190d01fe tpm2_gen_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x193d48e0 trace_current_buffer_unlock_commit +EXPORT_SYMBOL_GPL vmlinux 0x194a377c dev_pm_opp_find_freq_floor +EXPORT_SYMBOL_GPL vmlinux 0x194c0f91 rtc_irq_register +EXPORT_SYMBOL_GPL vmlinux 0x194dd5f5 pkey_algo_name +EXPORT_SYMBOL_GPL vmlinux 0x196b2f95 perf_event_disable +EXPORT_SYMBOL_GPL vmlinux 0x198dbcdd of_clk_get_parent_name +EXPORT_SYMBOL_GPL vmlinux 0x1990f8ff pm_qos_update_request +EXPORT_SYMBOL_GPL vmlinux 0x19928635 mv_mbus_dram_info +EXPORT_SYMBOL_GPL vmlinux 0x19958cc3 raw_seq_start +EXPORT_SYMBOL_GPL vmlinux 0x199cd39e ata_sff_qc_fill_rtf +EXPORT_SYMBOL_GPL vmlinux 0x19a304ba usb_disabled +EXPORT_SYMBOL_GPL vmlinux 0x19a3193f blkg_stat_recursive_sum +EXPORT_SYMBOL_GPL vmlinux 0x19b384a5 hash_algo_name +EXPORT_SYMBOL_GPL vmlinux 0x19f4b6d3 ohci_setup +EXPORT_SYMBOL_GPL vmlinux 0x19fa2177 thermal_cooling_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x1a17c0b4 snd_soc_pm_ops +EXPORT_SYMBOL_GPL vmlinux 0x1a19a9fd ahci_fill_cmd_slot +EXPORT_SYMBOL_GPL vmlinux 0x1a1c4082 mod_delayed_work_on +EXPORT_SYMBOL_GPL vmlinux 0x1a22ca7c extcon_register_interest +EXPORT_SYMBOL_GPL vmlinux 0x1a25f373 __class_register +EXPORT_SYMBOL_GPL vmlinux 0x1a2f39db snd_soc_dapm_info_pin_switch +EXPORT_SYMBOL_GPL vmlinux 0x1a4bf268 pci_intx +EXPORT_SYMBOL_GPL vmlinux 0x1a5f0697 irq_get_domain_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x1a618cc5 devm_regulator_get_exclusive +EXPORT_SYMBOL_GPL vmlinux 0x1a79fe28 lp8788_read_byte +EXPORT_SYMBOL_GPL vmlinux 0x1a94bb84 gpiod_set_debounce +EXPORT_SYMBOL_GPL vmlinux 0x1a967885 cpufreq_frequency_get_table +EXPORT_SYMBOL_GPL vmlinux 0x1acef7d2 pm_freezing +EXPORT_SYMBOL_GPL vmlinux 0x1ad378ba sysfs_add_file_to_group +EXPORT_SYMBOL_GPL vmlinux 0x1ad60188 add_disk_randomness +EXPORT_SYMBOL_GPL vmlinux 0x1afce1a8 snd_soc_dpcm_be_get_state +EXPORT_SYMBOL_GPL vmlinux 0x1b061743 devm_rtc_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x1b3193ff gen_pool_size +EXPORT_SYMBOL_GPL vmlinux 0x1b3261e0 klist_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x1b3edd13 usb_debug_root +EXPORT_SYMBOL_GPL vmlinux 0x1b3fdb72 of_free_opp_table +EXPORT_SYMBOL_GPL vmlinux 0x1b52db1c probe_kernel_read +EXPORT_SYMBOL_GPL vmlinux 0x1b8822d8 pinctrl_gpio_direction_output +EXPORT_SYMBOL_GPL vmlinux 0x1b974942 blk_rq_prep_clone +EXPORT_SYMBOL_GPL vmlinux 0x1b9aca3f jprobe_return +EXPORT_SYMBOL_GPL vmlinux 0x1ba0bf0f arm_iommu_detach_device +EXPORT_SYMBOL_GPL vmlinux 0x1ba3e439 of_pci_range_parser_init +EXPORT_SYMBOL_GPL vmlinux 0x1bb37548 wm8350_device_init +EXPORT_SYMBOL_GPL vmlinux 0x1bb5fc26 atomic_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0x1bc225ae device_wakeup_enable +EXPORT_SYMBOL_GPL vmlinux 0x1bc5eebe pinctrl_gpio_direction_input +EXPORT_SYMBOL_GPL vmlinux 0x1bccc514 ata_pci_sff_init_one +EXPORT_SYMBOL_GPL vmlinux 0x1bdefe54 skb_to_sgvec_nomark +EXPORT_SYMBOL_GPL vmlinux 0x1bea69c9 __mmc_switch +EXPORT_SYMBOL_GPL vmlinux 0x1bf727b4 snd_compress_deregister +EXPORT_SYMBOL_GPL vmlinux 0x1bf7b68d cpufreq_frequency_table_cpuinfo +EXPORT_SYMBOL_GPL vmlinux 0x1c0debea omap_dm_timer_get_fclk +EXPORT_SYMBOL_GPL vmlinux 0x1c222e7f watchdog_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0x1c2e2239 ata_cable_ignore +EXPORT_SYMBOL_GPL vmlinux 0x1c4fe9c9 snd_soc_dapm_enable_pin_unlocked +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 0x1c664423 stmpe_block_read +EXPORT_SYMBOL_GPL vmlinux 0x1c737571 tps6586x_irq_get_virq +EXPORT_SYMBOL_GPL vmlinux 0x1c80d27d btree_geo128 +EXPORT_SYMBOL_GPL vmlinux 0x1c83238d of_property_read_string +EXPORT_SYMBOL_GPL vmlinux 0x1c87a811 __round_jiffies_up +EXPORT_SYMBOL_GPL vmlinux 0x1c974ab2 cm_notify_event +EXPORT_SYMBOL_GPL vmlinux 0x1c9f0350 spi_add_device +EXPORT_SYMBOL_GPL vmlinux 0x1ca46fc8 sata_scr_valid +EXPORT_SYMBOL_GPL vmlinux 0x1ca8bd99 sock_update_netprioidx +EXPORT_SYMBOL_GPL vmlinux 0x1ca8dc76 sk_detach_filter +EXPORT_SYMBOL_GPL vmlinux 0x1ca98708 snd_soc_get_volsw_range +EXPORT_SYMBOL_GPL vmlinux 0x1cb7c9df tty_port_tty_hangup +EXPORT_SYMBOL_GPL vmlinux 0x1cb889c7 usb_ep0_reinit +EXPORT_SYMBOL_GPL vmlinux 0x1ce2a878 of_property_read_u64_array +EXPORT_SYMBOL_GPL vmlinux 0x1d103e26 cpufreq_generic_init +EXPORT_SYMBOL_GPL vmlinux 0x1d25cf73 omap_dm_timer_set_load +EXPORT_SYMBOL_GPL vmlinux 0x1d4cfa43 of_get_display_timings +EXPORT_SYMBOL_GPL vmlinux 0x1d58ae14 lpddr2_jedec_timings +EXPORT_SYMBOL_GPL vmlinux 0x1d5fc650 cpuidle_unregister +EXPORT_SYMBOL_GPL vmlinux 0x1d6a36ee of_usb_get_maximum_speed +EXPORT_SYMBOL_GPL vmlinux 0x1d6ac314 dma_buf_map_attachment +EXPORT_SYMBOL_GPL vmlinux 0x1d703200 crypto_destroy_tfm +EXPORT_SYMBOL_GPL vmlinux 0x1d77b0f8 unix_socket_table +EXPORT_SYMBOL_GPL vmlinux 0x1d786e4c crypto_register_template +EXPORT_SYMBOL_GPL vmlinux 0x1d7c0168 __ftrace_vprintk +EXPORT_SYMBOL_GPL vmlinux 0x1d7cb586 clk_register_fixed_rate_with_accuracy +EXPORT_SYMBOL_GPL vmlinux 0x1d908070 sata_scr_write +EXPORT_SYMBOL_GPL vmlinux 0x1d9719d5 reset_control_get +EXPORT_SYMBOL_GPL vmlinux 0x1d9bc82d pci_disable_rom +EXPORT_SYMBOL_GPL vmlinux 0x1da2ff03 of_property_read_u16_array +EXPORT_SYMBOL_GPL vmlinux 0x1dc84df1 regmap_update_bits +EXPORT_SYMBOL_GPL vmlinux 0x1dd9ee71 disk_part_iter_next +EXPORT_SYMBOL_GPL vmlinux 0x1e1a3cd9 devm_pinctrl_put +EXPORT_SYMBOL_GPL vmlinux 0x1e4f42b6 virtqueue_kick +EXPORT_SYMBOL_GPL vmlinux 0x1e5a198b perf_event_enable +EXPORT_SYMBOL_GPL vmlinux 0x1e5b03dc pm_qos_add_notifier +EXPORT_SYMBOL_GPL vmlinux 0x1e6239b0 key_type_encrypted +EXPORT_SYMBOL_GPL vmlinux 0x1e65a925 of_reserved_mem_device_init +EXPORT_SYMBOL_GPL vmlinux 0x1e6cc653 __tracepoint_detach_device_from_domain +EXPORT_SYMBOL_GPL vmlinux 0x1e7135ba cpuidle_enable_device +EXPORT_SYMBOL_GPL vmlinux 0x1e75a6db ata_sas_port_destroy +EXPORT_SYMBOL_GPL vmlinux 0x1e76b44d blk_mq_unfreeze_queue +EXPORT_SYMBOL_GPL vmlinux 0x1e7bbcb3 kernel_restart +EXPORT_SYMBOL_GPL vmlinux 0x1e8a7de0 crypto_unregister_algs +EXPORT_SYMBOL_GPL vmlinux 0x1eaed5c9 devfreq_event_set_event +EXPORT_SYMBOL_GPL vmlinux 0x1eb51262 of_reconfig_get_state_change +EXPORT_SYMBOL_GPL vmlinux 0x1eb9516e round_jiffies_relative +EXPORT_SYMBOL_GPL vmlinux 0x1ebf6c2a pci_power_names +EXPORT_SYMBOL_GPL vmlinux 0x1ede4669 snd_soc_component_exit_regmap +EXPORT_SYMBOL_GPL vmlinux 0x1eeaf9ab snd_soc_of_parse_audio_routing +EXPORT_SYMBOL_GPL vmlinux 0x1f1f2d67 skb_zerocopy_headlen +EXPORT_SYMBOL_GPL vmlinux 0x1f3a8d1f inet_csk_route_child_sock +EXPORT_SYMBOL_GPL vmlinux 0x1f4ea6b2 mbox_chan_received_data +EXPORT_SYMBOL_GPL vmlinux 0x1f502a59 usb_bus_list_lock +EXPORT_SYMBOL_GPL vmlinux 0x1f55a05e __tracepoint_unmap +EXPORT_SYMBOL_GPL vmlinux 0x1f55b694 devm_extcon_dev_free +EXPORT_SYMBOL_GPL vmlinux 0x1f5a7d97 ata_bmdma_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x1f608105 devfreq_event_get_edev_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0x1f793f57 __tracepoint_block_split +EXPORT_SYMBOL_GPL vmlinux 0x1f8544b8 panic_timeout +EXPORT_SYMBOL_GPL vmlinux 0x1f8db7f9 ring_buffer_overrun_cpu +EXPORT_SYMBOL_GPL vmlinux 0x1f957574 devm_kfree +EXPORT_SYMBOL_GPL vmlinux 0x1f963d5e mtd_read_oob +EXPORT_SYMBOL_GPL vmlinux 0x1fb9c165 pwmchip_remove +EXPORT_SYMBOL_GPL vmlinux 0x1fc11f85 __pm_runtime_idle +EXPORT_SYMBOL_GPL vmlinux 0x1fdf69cb blkcipher_walk_phys +EXPORT_SYMBOL_GPL vmlinux 0x1ff30e54 ehci_init_driver +EXPORT_SYMBOL_GPL vmlinux 0x1ff6c8b8 perf_trace_buf_prepare +EXPORT_SYMBOL_GPL vmlinux 0x201d8ea3 encode_rs8 +EXPORT_SYMBOL_GPL vmlinux 0x202ad736 cpu_subsys +EXPORT_SYMBOL_GPL vmlinux 0x20470bea regulator_set_voltage_time_sel +EXPORT_SYMBOL_GPL vmlinux 0x204fbd44 dev_pm_opp_enable +EXPORT_SYMBOL_GPL vmlinux 0x2054d14b led_classdev_register +EXPORT_SYMBOL_GPL vmlinux 0x206045a2 ohci_hub_status_data +EXPORT_SYMBOL_GPL vmlinux 0x206528fb sdio_disable_func +EXPORT_SYMBOL_GPL vmlinux 0x206603e8 snd_soc_lookup_platform +EXPORT_SYMBOL_GPL vmlinux 0x20b2bd0b tty_wakeup +EXPORT_SYMBOL_GPL vmlinux 0x20b31777 hvc_poll +EXPORT_SYMBOL_GPL vmlinux 0x20b7bc6b blkio_cgrp_subsys +EXPORT_SYMBOL_GPL vmlinux 0x20d0dd71 stmpe_disable +EXPORT_SYMBOL_GPL vmlinux 0x21058ebe ata_sff_wait_ready +EXPORT_SYMBOL_GPL vmlinux 0x210fb902 i2c_probe_func_quick_read +EXPORT_SYMBOL_GPL vmlinux 0x211c3d15 crypto_shash_setkey +EXPORT_SYMBOL_GPL vmlinux 0x21339779 regulator_list_voltage_table +EXPORT_SYMBOL_GPL vmlinux 0x2144e7fe ping_seq_start +EXPORT_SYMBOL_GPL vmlinux 0x2148d790 usb_hcd_start_port_resume +EXPORT_SYMBOL_GPL vmlinux 0x214daf7b pm_runtime_no_callbacks +EXPORT_SYMBOL_GPL vmlinux 0x21513894 tc3589x_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x2196a405 inet_twsk_put +EXPORT_SYMBOL_GPL vmlinux 0x21a563da clk_get_accuracy +EXPORT_SYMBOL_GPL vmlinux 0x21ac8b77 iommu_group_get_by_id +EXPORT_SYMBOL_GPL vmlinux 0x21b7e17f ahash_register_instance +EXPORT_SYMBOL_GPL vmlinux 0x21e18e2b tty_get_pgrp +EXPORT_SYMBOL_GPL vmlinux 0x21e3557e fat_free_clusters +EXPORT_SYMBOL_GPL vmlinux 0x21e45f64 usb_string +EXPORT_SYMBOL_GPL vmlinux 0x21f25546 stmpe_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x21febf58 clk_register_mux_table +EXPORT_SYMBOL_GPL vmlinux 0x22012379 fanout_mutex +EXPORT_SYMBOL_GPL vmlinux 0x225f1a7e devm_of_phy_get +EXPORT_SYMBOL_GPL vmlinux 0x22663a4d ehci_setup +EXPORT_SYMBOL_GPL vmlinux 0x226a674d atomic_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0x2296c00d crypto_attr_u32 +EXPORT_SYMBOL_GPL vmlinux 0x22de871f crypto_unregister_shashes +EXPORT_SYMBOL_GPL vmlinux 0x22ebcb9e amba_apb_device_add +EXPORT_SYMBOL_GPL vmlinux 0x22f86ffd clk_gate_ops +EXPORT_SYMBOL_GPL vmlinux 0x22fa4715 devm_of_pwm_get +EXPORT_SYMBOL_GPL vmlinux 0x2300576b irq_gc_mask_clr_bit +EXPORT_SYMBOL_GPL vmlinux 0x231d70fc encode_bch +EXPORT_SYMBOL_GPL vmlinux 0x2322f563 stmpe_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x232f1eb9 mpc8xxx_spi_tx_buf_u32 +EXPORT_SYMBOL_GPL vmlinux 0x234610fc usb_autopm_put_interface_no_suspend +EXPORT_SYMBOL_GPL vmlinux 0x2352f873 init_user_ns +EXPORT_SYMBOL_GPL vmlinux 0x2363c4a3 ata_scsi_port_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x23844499 snd_soc_dai_set_tdm_slot +EXPORT_SYMBOL_GPL vmlinux 0x23864ce7 cpuset_mem_spread_node +EXPORT_SYMBOL_GPL vmlinux 0x2396c7f0 clk_set_parent +EXPORT_SYMBOL_GPL vmlinux 0x23a72163 crypto_alloc_pcomp +EXPORT_SYMBOL_GPL vmlinux 0x23cf8ea9 platform_get_irq_byname +EXPORT_SYMBOL_GPL vmlinux 0x23e9a097 spi_finalize_current_message +EXPORT_SYMBOL_GPL vmlinux 0x23fe1dad tcp_ca_get_key_by_name +EXPORT_SYMBOL_GPL vmlinux 0x24021504 eventfd_fget +EXPORT_SYMBOL_GPL vmlinux 0x24065ab9 dma_buf_vmap +EXPORT_SYMBOL_GPL vmlinux 0x242a4b98 crypto_hash_walk_done +EXPORT_SYMBOL_GPL vmlinux 0x243a81d7 mtd_block_markbad +EXPORT_SYMBOL_GPL vmlinux 0x243d5176 rtnl_link_unregister +EXPORT_SYMBOL_GPL vmlinux 0x24457174 audit_enabled +EXPORT_SYMBOL_GPL vmlinux 0x24547fa3 cpsw_ale_destroy +EXPORT_SYMBOL_GPL vmlinux 0x245f8435 each_symbol_section +EXPORT_SYMBOL_GPL vmlinux 0x2466018a scsi_autopm_put_device +EXPORT_SYMBOL_GPL vmlinux 0x24743472 snd_soc_test_bits +EXPORT_SYMBOL_GPL vmlinux 0x247ddc97 sdio_align_size +EXPORT_SYMBOL_GPL vmlinux 0x247ef831 kdb_unregister +EXPORT_SYMBOL_GPL vmlinux 0x248169ec imx_pcm_dma_init +EXPORT_SYMBOL_GPL vmlinux 0x2492822a scsi_target_block +EXPORT_SYMBOL_GPL vmlinux 0x24aac4d9 crypto_aes_expand_key +EXPORT_SYMBOL_GPL vmlinux 0x24ad8856 devm_regulator_get_optional +EXPORT_SYMBOL_GPL vmlinux 0x24dc4bdf platform_device_del +EXPORT_SYMBOL_GPL vmlinux 0x24eb7e32 leds_list +EXPORT_SYMBOL_GPL vmlinux 0x24f39c39 reset_control_reset +EXPORT_SYMBOL_GPL vmlinux 0x24f6a7af pci_bus_max_busnr +EXPORT_SYMBOL_GPL vmlinux 0x250888e2 get_dcookie +EXPORT_SYMBOL_GPL vmlinux 0x252b9060 mtd_is_locked +EXPORT_SYMBOL_GPL vmlinux 0x253355a8 spi_bus_lock +EXPORT_SYMBOL_GPL vmlinux 0x25379e73 clk_set_min_rate +EXPORT_SYMBOL_GPL vmlinux 0x2541a979 snd_soc_calc_frame_size +EXPORT_SYMBOL_GPL vmlinux 0x254acc90 regmap_init_i2c +EXPORT_SYMBOL_GPL vmlinux 0x254afb0a usb_put_phy +EXPORT_SYMBOL_GPL vmlinux 0x25574504 clk_fixed_rate_ops +EXPORT_SYMBOL_GPL vmlinux 0x256531f1 phy_exit +EXPORT_SYMBOL_GPL vmlinux 0x257896ad mtd_erase_callback +EXPORT_SYMBOL_GPL vmlinux 0x257b1d5a pci_sriov_get_totalvfs +EXPORT_SYMBOL_GPL vmlinux 0x257c2ef2 iommu_detach_device +EXPORT_SYMBOL_GPL vmlinux 0x258eb6af ata_sff_prereset +EXPORT_SYMBOL_GPL vmlinux 0x2599016b ipv4_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x25ae3d87 pci_destroy_slot +EXPORT_SYMBOL_GPL vmlinux 0x25cdbb1f snd_soc_get_strobe +EXPORT_SYMBOL_GPL vmlinux 0x25dc93ca phy_power_on +EXPORT_SYMBOL_GPL vmlinux 0x25e4fa8c btree_remove +EXPORT_SYMBOL_GPL vmlinux 0x25e7e5ac rtc_class_open +EXPORT_SYMBOL_GPL vmlinux 0x25fadade ata_pci_remove_one +EXPORT_SYMBOL_GPL vmlinux 0x25fed2cd tty_register_device_attr +EXPORT_SYMBOL_GPL vmlinux 0x260cdd47 thermal_cooling_device_register +EXPORT_SYMBOL_GPL vmlinux 0x260cf26c deregister_mtd_parser +EXPORT_SYMBOL_GPL vmlinux 0x2622c86e relay_close +EXPORT_SYMBOL_GPL vmlinux 0x262f20a8 local_clock +EXPORT_SYMBOL_GPL vmlinux 0x263b853d regulator_allow_bypass +EXPORT_SYMBOL_GPL vmlinux 0x26520970 vm_memory_committed +EXPORT_SYMBOL_GPL vmlinux 0x265591f0 fb_deferred_io_open +EXPORT_SYMBOL_GPL vmlinux 0x266b7638 interval_tree_remove +EXPORT_SYMBOL_GPL vmlinux 0x268bd6e7 debugfs_print_regs32 +EXPORT_SYMBOL_GPL vmlinux 0x269300e8 inet6_hash_connect +EXPORT_SYMBOL_GPL vmlinux 0x26adb815 thread_notify_head +EXPORT_SYMBOL_GPL vmlinux 0x26b71fb4 ring_buffer_time_stamp +EXPORT_SYMBOL_GPL vmlinux 0x26c547c0 bL_switcher_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x26c6ac40 da903x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x26c90ea4 scsi_eh_get_sense +EXPORT_SYMBOL_GPL vmlinux 0x26e2bc15 uhci_reset_hc +EXPORT_SYMBOL_GPL vmlinux 0x27076b72 pinctrl_remove_gpio_range +EXPORT_SYMBOL_GPL vmlinux 0x273d0dbd regmap_get_val_bytes +EXPORT_SYMBOL_GPL vmlinux 0x27486378 i2c_adapter_type +EXPORT_SYMBOL_GPL vmlinux 0x274cf5e1 __clk_get_flags +EXPORT_SYMBOL_GPL vmlinux 0x2787db00 vbin_printf +EXPORT_SYMBOL_GPL vmlinux 0x279c7e49 pci_walk_bus +EXPORT_SYMBOL_GPL vmlinux 0x27b87ffa sysfs_create_mount_point +EXPORT_SYMBOL_GPL vmlinux 0x27bc3df2 blk_queue_rq_timeout +EXPORT_SYMBOL_GPL vmlinux 0x27bfb128 init_uts_ns +EXPORT_SYMBOL_GPL vmlinux 0x27c1e63f usb_amd_find_chipset_info +EXPORT_SYMBOL_GPL vmlinux 0x27dcdf4d mtd_get_fact_prot_info +EXPORT_SYMBOL_GPL vmlinux 0x27dd8352 od_register_powersave_bias_handler +EXPORT_SYMBOL_GPL vmlinux 0x27e39f08 pwm_request_from_chip +EXPORT_SYMBOL_GPL vmlinux 0x27e886c0 ata_sas_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x27f4f029 ftrace_set_global_filter +EXPORT_SYMBOL_GPL vmlinux 0x27fa66e1 nr_free_buffer_pages +EXPORT_SYMBOL_GPL vmlinux 0x28027ab2 input_ff_event +EXPORT_SYMBOL_GPL vmlinux 0x280632b1 netlink_has_listeners +EXPORT_SYMBOL_GPL vmlinux 0x28143c64 regulator_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x2815fcb4 ata_std_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x28210208 dma_buf_kunmap +EXPORT_SYMBOL_GPL vmlinux 0x28284a06 subsys_dev_iter_next +EXPORT_SYMBOL_GPL vmlinux 0x282cdabc usb_led_activity +EXPORT_SYMBOL_GPL vmlinux 0x283b89d8 platform_device_alloc +EXPORT_SYMBOL_GPL vmlinux 0x284e0f43 crypto_find_alg +EXPORT_SYMBOL_GPL vmlinux 0x28661ef8 snd_soc_of_get_dai_link_codecs +EXPORT_SYMBOL_GPL vmlinux 0x286b707d pinctrl_utils_add_config +EXPORT_SYMBOL_GPL vmlinux 0x28a4996f pwm_enable +EXPORT_SYMBOL_GPL vmlinux 0x28bf667e led_trigger_unregister_simple +EXPORT_SYMBOL_GPL vmlinux 0x28cdba30 sdio_writeb +EXPORT_SYMBOL_GPL vmlinux 0x28db2e6d device_remove_file_self +EXPORT_SYMBOL_GPL vmlinux 0x291daa97 component_del +EXPORT_SYMBOL_GPL vmlinux 0x292735ff usb_hcd_check_unlink_urb +EXPORT_SYMBOL_GPL vmlinux 0x29493c3d sysfs_create_groups +EXPORT_SYMBOL_GPL vmlinux 0x2962bc9e bitmap_copy_from_slot +EXPORT_SYMBOL_GPL vmlinux 0x297473d3 spi_write_then_read +EXPORT_SYMBOL_GPL vmlinux 0x29965778 device_find_child +EXPORT_SYMBOL_GPL vmlinux 0x299847e3 blk_queue_flush +EXPORT_SYMBOL_GPL vmlinux 0x299de065 get_pid_task +EXPORT_SYMBOL_GPL vmlinux 0x29a1dfdb ata_dummy_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x29b22c8e dummy_con +EXPORT_SYMBOL_GPL vmlinux 0x29c61b0a regmap_attach_dev +EXPORT_SYMBOL_GPL vmlinux 0x29fa419f decode_rs8 +EXPORT_SYMBOL_GPL vmlinux 0x2a011c61 led_trigger_show +EXPORT_SYMBOL_GPL vmlinux 0x2a0ea307 pinctrl_lookup_state +EXPORT_SYMBOL_GPL vmlinux 0x2a1f0d5e trace_output_call +EXPORT_SYMBOL_GPL vmlinux 0x2a28ad65 snd_dmaengine_pcm_get_chan +EXPORT_SYMBOL_GPL vmlinux 0x2a3fc32b cpsw_ale_control_set +EXPORT_SYMBOL_GPL vmlinux 0x2a678a13 __suspend_report_result +EXPORT_SYMBOL_GPL vmlinux 0x2a6c1eb8 omap_dm_timer_request_by_cap +EXPORT_SYMBOL_GPL vmlinux 0x2a89759f dm_disk +EXPORT_SYMBOL_GPL vmlinux 0x2aae43f7 __srcu_read_lock +EXPORT_SYMBOL_GPL vmlinux 0x2abb496d snd_soc_dapm_put_enum_double +EXPORT_SYMBOL_GPL vmlinux 0x2aca4d2b pm_runtime_set_memalloc_noio +EXPORT_SYMBOL_GPL vmlinux 0x2acba681 fixed_phy_register +EXPORT_SYMBOL_GPL vmlinux 0x2ad8f234 tegra_pinctrl_remove +EXPORT_SYMBOL_GPL vmlinux 0x2ad9d326 md_ack_all_badblocks +EXPORT_SYMBOL_GPL vmlinux 0x2addfb1e __udp4_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x2ae34b4b list_lru_destroy +EXPORT_SYMBOL_GPL vmlinux 0x2ae9510d component_master_add +EXPORT_SYMBOL_GPL vmlinux 0x2aeb824c blk_trace_startstop +EXPORT_SYMBOL_GPL vmlinux 0x2af8d7b7 da903x_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0x2afb4424 find_vpid +EXPORT_SYMBOL_GPL vmlinux 0x2b0502b6 queue_kthread_work +EXPORT_SYMBOL_GPL vmlinux 0x2b25a82a omap_dm_timer_read_counter +EXPORT_SYMBOL_GPL vmlinux 0x2b2637c9 ping_proc_register +EXPORT_SYMBOL_GPL vmlinux 0x2b4ac4a3 dapm_regulator_event +EXPORT_SYMBOL_GPL vmlinux 0x2b74ea8d usb_del_gadget_udc +EXPORT_SYMBOL_GPL vmlinux 0x2b952517 clk_has_parent +EXPORT_SYMBOL_GPL vmlinux 0x2baa5142 usb_clear_halt +EXPORT_SYMBOL_GPL vmlinux 0x2babe81f __wake_up_sync_key +EXPORT_SYMBOL_GPL vmlinux 0x2bc01f35 snd_soc_dapm_ignore_suspend +EXPORT_SYMBOL_GPL vmlinux 0x2bdf5cb6 perf_event_read_value +EXPORT_SYMBOL_GPL vmlinux 0x2bf87811 pinctrl_dev_get_name +EXPORT_SYMBOL_GPL vmlinux 0x2bfc97f8 vfs_getxattr +EXPORT_SYMBOL_GPL vmlinux 0x2c08f259 ata_std_sched_eh +EXPORT_SYMBOL_GPL vmlinux 0x2c133868 bit_wait_io_timeout +EXPORT_SYMBOL_GPL vmlinux 0x2c208607 power_supply_is_system_supplied +EXPORT_SYMBOL_GPL vmlinux 0x2c2ee20c __netpoll_free_async +EXPORT_SYMBOL_GPL vmlinux 0x2c3054f9 net_inc_ingress_queue +EXPORT_SYMBOL_GPL vmlinux 0x2c5cef50 extcon_get_extcon_dev +EXPORT_SYMBOL_GPL vmlinux 0x2c7db649 irq_dispose_mapping +EXPORT_SYMBOL_GPL vmlinux 0x2c81bac3 ata_sff_data_xfer +EXPORT_SYMBOL_GPL vmlinux 0x2c86a250 wait_for_tpm_stat +EXPORT_SYMBOL_GPL vmlinux 0x2c87ecff cpuidle_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0x2c97f8a2 of_reconfig_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x2ca751c9 regulator_get_current_limit +EXPORT_SYMBOL_GPL vmlinux 0x2cb07898 of_dma_configure +EXPORT_SYMBOL_GPL vmlinux 0x2cd03485 omap_iommu_restore_ctx +EXPORT_SYMBOL_GPL vmlinux 0x2cd2f52c snd_soc_of_get_dai_name +EXPORT_SYMBOL_GPL vmlinux 0x2ce98559 kcrypto_wq +EXPORT_SYMBOL_GPL vmlinux 0x2cea32ee unregister_oldmem_pfn_is_ram +EXPORT_SYMBOL_GPL vmlinux 0x2ceccdbe ip6_append_data +EXPORT_SYMBOL_GPL vmlinux 0x2cf1a91f regulator_list_voltage_linear_range +EXPORT_SYMBOL_GPL vmlinux 0x2d131aa0 regulator_set_voltage +EXPORT_SYMBOL_GPL vmlinux 0x2d1af5f9 wm8350_reg_unlock +EXPORT_SYMBOL_GPL vmlinux 0x2d1b02d2 usermodehelper_read_lock_wait +EXPORT_SYMBOL_GPL vmlinux 0x2d41e6f5 __trace_puts +EXPORT_SYMBOL_GPL vmlinux 0x2d59c954 edac_handlers +EXPORT_SYMBOL_GPL vmlinux 0x2d61dd91 devfreq_event_get_event +EXPORT_SYMBOL_GPL vmlinux 0x2d6677e7 pinctrl_unregister +EXPORT_SYMBOL_GPL vmlinux 0x2d87386a bio_clone_mddev +EXPORT_SYMBOL_GPL vmlinux 0x2da80e2d led_sysfs_enable +EXPORT_SYMBOL_GPL vmlinux 0x2dac6614 device_create +EXPORT_SYMBOL_GPL vmlinux 0x2dad9b05 register_jprobes +EXPORT_SYMBOL_GPL vmlinux 0x2db8a14e crypto_grab_spawn +EXPORT_SYMBOL_GPL vmlinux 0x2dba90fd gpiod_unexport +EXPORT_SYMBOL_GPL vmlinux 0x2dd6b4ea sm501_find_clock +EXPORT_SYMBOL_GPL vmlinux 0x2df819d1 wait_for_stable_page +EXPORT_SYMBOL_GPL vmlinux 0x2e03259b bus_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x2e1ac07e iommu_iova_to_phys +EXPORT_SYMBOL_GPL vmlinux 0x2e2360b1 ftrace_set_global_notrace +EXPORT_SYMBOL_GPL vmlinux 0x2e278f88 btree_insert +EXPORT_SYMBOL_GPL vmlinux 0x2e2f1740 ring_buffer_record_disable_cpu +EXPORT_SYMBOL_GPL vmlinux 0x2e518a1b usb_gadget_probe_driver +EXPORT_SYMBOL_GPL vmlinux 0x2e64bd73 blkdev_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x2e662902 thermal_notify_framework +EXPORT_SYMBOL_GPL vmlinux 0x2e7ee06b bitmap_load +EXPORT_SYMBOL_GPL vmlinux 0x2e9670c0 pl320_ipc_transmit +EXPORT_SYMBOL_GPL vmlinux 0x2eb5ef33 crypto_ablkcipher_type +EXPORT_SYMBOL_GPL vmlinux 0x2ebe3135 cpu_is_hotpluggable +EXPORT_SYMBOL_GPL vmlinux 0x2ecabb4c inet_ctl_sock_create +EXPORT_SYMBOL_GPL vmlinux 0x2eea2af3 snd_soc_add_platform_controls +EXPORT_SYMBOL_GPL vmlinux 0x2eea2b77 pci_create_slot +EXPORT_SYMBOL_GPL vmlinux 0x2ef6b5bf smp_call_function_any +EXPORT_SYMBOL_GPL vmlinux 0x2f06520a tty_port_register_device +EXPORT_SYMBOL_GPL vmlinux 0x2f0722b8 snd_soc_unregister_platform +EXPORT_SYMBOL_GPL vmlinux 0x2f0d9053 usb_otg_state_string +EXPORT_SYMBOL_GPL vmlinux 0x2f4113a2 dcookie_register +EXPORT_SYMBOL_GPL vmlinux 0x2f551c4b omap_dm_timer_start +EXPORT_SYMBOL_GPL vmlinux 0x2f576332 spi_master_resume +EXPORT_SYMBOL_GPL vmlinux 0x2f6994c7 __put_task_struct +EXPORT_SYMBOL_GPL vmlinux 0x2f7b6833 powercap_unregister_zone +EXPORT_SYMBOL_GPL vmlinux 0x2f89ffac devm_regulator_bulk_get +EXPORT_SYMBOL_GPL vmlinux 0x2f90da7e trace_seq_putmem +EXPORT_SYMBOL_GPL vmlinux 0x2fb27441 ata_eh_freeze_port +EXPORT_SYMBOL_GPL vmlinux 0x2fc7b541 hwrng_register +EXPORT_SYMBOL_GPL vmlinux 0x2fd8cba9 freeze_wake +EXPORT_SYMBOL_GPL vmlinux 0x2fdbaa90 hrtimer_active +EXPORT_SYMBOL_GPL vmlinux 0x2fef79ac debugfs_create_dir +EXPORT_SYMBOL_GPL vmlinux 0x30007d96 cpufreq_unregister_governor +EXPORT_SYMBOL_GPL vmlinux 0x300a73d5 usb_init_urb +EXPORT_SYMBOL_GPL vmlinux 0x300d7e57 free_rs +EXPORT_SYMBOL_GPL vmlinux 0x302647fd devm_reset_control_get +EXPORT_SYMBOL_GPL vmlinux 0x30308cf6 devm_regulator_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x3033bfba usb_driver_release_interface +EXPORT_SYMBOL_GPL vmlinux 0x30360439 ata_pci_sff_activate_host +EXPORT_SYMBOL_GPL vmlinux 0x3038d1ab clockevents_config_and_register +EXPORT_SYMBOL_GPL vmlinux 0x303f3983 sm501_unit_power +EXPORT_SYMBOL_GPL vmlinux 0x30464b79 usb_set_device_state +EXPORT_SYMBOL_GPL vmlinux 0x304b5a54 __rtnl_register +EXPORT_SYMBOL_GPL vmlinux 0x30693bb7 imx_audmux_v1_configure_port +EXPORT_SYMBOL_GPL vmlinux 0x30750b63 nand_wait_ready +EXPORT_SYMBOL_GPL vmlinux 0x308378c5 ahci_stop_engine +EXPORT_SYMBOL_GPL vmlinux 0x3090a30a srcu_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0x3097c257 md_do_sync +EXPORT_SYMBOL_GPL vmlinux 0x30a4f4ca bstr_printf +EXPORT_SYMBOL_GPL vmlinux 0x30ad24f2 snd_soc_of_parse_card_name +EXPORT_SYMBOL_GPL vmlinux 0x30b02277 of_usb_get_phy_mode +EXPORT_SYMBOL_GPL vmlinux 0x30ceade4 dm_internal_resume +EXPORT_SYMBOL_GPL vmlinux 0x30d44673 sysfs_remove_link +EXPORT_SYMBOL_GPL vmlinux 0x30e3b4a0 blkcipher_walk_done +EXPORT_SYMBOL_GPL vmlinux 0x30e9ca1d of_pci_msi_chip_remove +EXPORT_SYMBOL_GPL vmlinux 0x30f5dc69 debugfs_create_u32_array +EXPORT_SYMBOL_GPL vmlinux 0x3109b751 cpu_clock +EXPORT_SYMBOL_GPL vmlinux 0x31141efb regmap_async_complete +EXPORT_SYMBOL_GPL vmlinux 0x3115f67c __rtnl_link_register +EXPORT_SYMBOL_GPL vmlinux 0x311eefb1 task_user_regset_view +EXPORT_SYMBOL_GPL vmlinux 0x31266931 con_debug_leave +EXPORT_SYMBOL_GPL vmlinux 0x313a1420 regulator_disable +EXPORT_SYMBOL_GPL vmlinux 0x31697f96 ftrace_set_filter_ip +EXPORT_SYMBOL_GPL vmlinux 0x316c46bc blkcg_deactivate_policy +EXPORT_SYMBOL_GPL vmlinux 0x3187af2d omap_dm_timer_get_irq +EXPORT_SYMBOL_GPL vmlinux 0x31c0c2d1 dm_put +EXPORT_SYMBOL_GPL vmlinux 0x31c7970f pciserial_suspend_ports +EXPORT_SYMBOL_GPL vmlinux 0x31cf52d7 blk_update_request +EXPORT_SYMBOL_GPL vmlinux 0x320c18a4 usb_hcd_amd_remote_wakeup_quirk +EXPORT_SYMBOL_GPL vmlinux 0x320d67a2 crypto_alloc_tfm +EXPORT_SYMBOL_GPL vmlinux 0x3218a40a snd_soc_runtime_set_dai_fmt +EXPORT_SYMBOL_GPL vmlinux 0x32413c5a ata_wait_register +EXPORT_SYMBOL_GPL vmlinux 0x328995b5 tracing_generic_entry_update +EXPORT_SYMBOL_GPL vmlinux 0x329acd72 inet_csk_route_req +EXPORT_SYMBOL_GPL vmlinux 0x32a18123 unregister_virtio_device +EXPORT_SYMBOL_GPL vmlinux 0x32a7eb3e tty_prepare_flip_string +EXPORT_SYMBOL_GPL vmlinux 0x32b011da snd_soc_dapm_get_pin_switch +EXPORT_SYMBOL_GPL vmlinux 0x32b2e626 devm_regmap_init_mmio_clk +EXPORT_SYMBOL_GPL vmlinux 0x32bc4a84 pci_find_next_capability +EXPORT_SYMBOL_GPL vmlinux 0x32c2dd78 mtd_write +EXPORT_SYMBOL_GPL vmlinux 0x32c3cb4e class_compat_register +EXPORT_SYMBOL_GPL vmlinux 0x32cc413a dev_pm_qos_expose_latency_tolerance +EXPORT_SYMBOL_GPL vmlinux 0x32db8bad of_resolve_phandles +EXPORT_SYMBOL_GPL vmlinux 0x32df5569 blkg_lookup +EXPORT_SYMBOL_GPL vmlinux 0x32ebba3c gpiochip_add +EXPORT_SYMBOL_GPL vmlinux 0x33021914 pm_runtime_barrier +EXPORT_SYMBOL_GPL vmlinux 0x33021ea5 crypto_lookup_skcipher +EXPORT_SYMBOL_GPL vmlinux 0x332035ad wm831x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x33205722 dev_coredumpm +EXPORT_SYMBOL_GPL vmlinux 0x332365f9 pci_set_pcie_reset_state +EXPORT_SYMBOL_GPL vmlinux 0x333bb5ec pinctrl_utils_reserve_map +EXPORT_SYMBOL_GPL vmlinux 0x334a5e41 usb_ifnum_to_if +EXPORT_SYMBOL_GPL vmlinux 0x33541cbf xfrm_audit_state_add +EXPORT_SYMBOL_GPL vmlinux 0x335b1b31 wm5102_i2c_regmap +EXPORT_SYMBOL_GPL vmlinux 0x335c570f enable_percpu_irq +EXPORT_SYMBOL_GPL vmlinux 0x335fc03b clk_gpio_gate_ops +EXPORT_SYMBOL_GPL vmlinux 0x336154ca rcutorture_record_test_transition +EXPORT_SYMBOL_GPL vmlinux 0x3362c1d7 ata_eh_analyze_ncq_error +EXPORT_SYMBOL_GPL vmlinux 0x3364530a ahci_do_softreset +EXPORT_SYMBOL_GPL vmlinux 0x33688514 scsi_autopm_get_device +EXPORT_SYMBOL_GPL vmlinux 0x3375acb6 __tracepoint_kfree_skb +EXPORT_SYMBOL_GPL vmlinux 0x33797bee alarm_start_relative +EXPORT_SYMBOL_GPL vmlinux 0x3385ccc6 usb_autopm_get_interface +EXPORT_SYMBOL_GPL vmlinux 0x33a73fe2 gpiod_direction_output +EXPORT_SYMBOL_GPL vmlinux 0x33d289c1 mmc_regulator_set_ocr +EXPORT_SYMBOL_GPL vmlinux 0x33d2a0e8 snd_soc_read +EXPORT_SYMBOL_GPL vmlinux 0x33eb776f driver_unregister +EXPORT_SYMBOL_GPL vmlinux 0x33fbe4ed handle_level_irq +EXPORT_SYMBOL_GPL vmlinux 0x3410137c md_rdev_init +EXPORT_SYMBOL_GPL vmlinux 0x341643ba omap_dm_timer_modify_idlect_mask +EXPORT_SYMBOL_GPL vmlinux 0x341f248e vchan_dma_desc_free_list +EXPORT_SYMBOL_GPL vmlinux 0x34416d2f __gpiod_get_index_optional +EXPORT_SYMBOL_GPL vmlinux 0x345cadbe __ata_change_queue_depth +EXPORT_SYMBOL_GPL vmlinux 0x347682ce snmp_fold_field64 +EXPORT_SYMBOL_GPL vmlinux 0x3479b48f crypto_shash_digest +EXPORT_SYMBOL_GPL vmlinux 0x347fd4b3 eventfd_ctx_get +EXPORT_SYMBOL_GPL vmlinux 0x349744ce serial8250_handle_irq +EXPORT_SYMBOL_GPL vmlinux 0x34a52e7c max8997_write_reg +EXPORT_SYMBOL_GPL vmlinux 0x34ac50a4 visitorl +EXPORT_SYMBOL_GPL vmlinux 0x34ac5c70 devfreq_event_add_edev +EXPORT_SYMBOL_GPL vmlinux 0x34d86226 skb_morph +EXPORT_SYMBOL_GPL vmlinux 0x350485c3 debugfs_create_u32 +EXPORT_SYMBOL_GPL vmlinux 0x350d750c max8997_update_reg +EXPORT_SYMBOL_GPL vmlinux 0x35176301 rcu_batches_completed_sched +EXPORT_SYMBOL_GPL vmlinux 0x352795b6 get_task_pid +EXPORT_SYMBOL_GPL vmlinux 0x353adb88 omap_dm_timer_set_int_disable +EXPORT_SYMBOL_GPL vmlinux 0x35636f10 usb_free_streams +EXPORT_SYMBOL_GPL vmlinux 0x35694596 blkg_prfill_rwstat +EXPORT_SYMBOL_GPL vmlinux 0x357817bc sock_gen_put +EXPORT_SYMBOL_GPL vmlinux 0x357935c6 debugfs_create_x16 +EXPORT_SYMBOL_GPL vmlinux 0x358afc92 ahci_set_em_messages +EXPORT_SYMBOL_GPL vmlinux 0x358ff60f twl_get_hfclk_rate +EXPORT_SYMBOL_GPL vmlinux 0x35dcd1f7 trace_seq_vprintf +EXPORT_SYMBOL_GPL vmlinux 0x35f10f43 nfq_ct_nat_hook +EXPORT_SYMBOL_GPL vmlinux 0x35faa636 dma_buf_attach +EXPORT_SYMBOL_GPL vmlinux 0x360688bf regcache_cache_only +EXPORT_SYMBOL_GPL vmlinux 0x36075bb5 iommu_group_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x361e2bcc save_stack_trace +EXPORT_SYMBOL_GPL vmlinux 0x363ef8e2 regulator_map_voltage_iterate +EXPORT_SYMBOL_GPL vmlinux 0x366b499a snd_soc_put_volsw +EXPORT_SYMBOL_GPL vmlinux 0x366da828 devm_regulator_put +EXPORT_SYMBOL_GPL vmlinux 0x367d354b dev_attr_em_message_type +EXPORT_SYMBOL_GPL vmlinux 0x369fcd70 tracing_snapshot +EXPORT_SYMBOL_GPL vmlinux 0x36a0f6e4 sysfs_remove_groups +EXPORT_SYMBOL_GPL vmlinux 0x36aee71e aead_register_instance +EXPORT_SYMBOL_GPL vmlinux 0x36ce935e pci_generic_config_write32 +EXPORT_SYMBOL_GPL vmlinux 0x36dab97f trace_clock_jiffies +EXPORT_SYMBOL_GPL vmlinux 0x370983f6 inet6_lookup +EXPORT_SYMBOL_GPL vmlinux 0x373ccabf dapm_mark_endpoints_dirty +EXPORT_SYMBOL_GPL vmlinux 0x375b2923 usb_get_intf +EXPORT_SYMBOL_GPL vmlinux 0x375e19ba cpufreq_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0x37683202 clone_private_mount +EXPORT_SYMBOL_GPL vmlinux 0x376bfa21 ata_sff_dev_select +EXPORT_SYMBOL_GPL vmlinux 0x3777e39b sched_setattr +EXPORT_SYMBOL_GPL vmlinux 0x378524ca thermal_of_cooling_device_register +EXPORT_SYMBOL_GPL vmlinux 0x3794f7d8 cgroup_attach_task_all +EXPORT_SYMBOL_GPL vmlinux 0x37aa69f2 rdev_get_dev +EXPORT_SYMBOL_GPL vmlinux 0x37f377ee ping_bind +EXPORT_SYMBOL_GPL vmlinux 0x37f53c9a crypto_unregister_pcomp +EXPORT_SYMBOL_GPL vmlinux 0x38090b2f pwm_disable +EXPORT_SYMBOL_GPL vmlinux 0x382aef34 sysfs_remove_group +EXPORT_SYMBOL_GPL vmlinux 0x38639300 of_overlay_destroy +EXPORT_SYMBOL_GPL vmlinux 0x388804e8 add_mtd_blktrans_dev +EXPORT_SYMBOL_GPL vmlinux 0x38890d82 dev_pm_qos_expose_flags +EXPORT_SYMBOL_GPL vmlinux 0x389adb5e wm5110_patch +EXPORT_SYMBOL_GPL vmlinux 0x38a31b5c spi_async +EXPORT_SYMBOL_GPL vmlinux 0x38a9c2c7 input_ff_effect_from_user +EXPORT_SYMBOL_GPL vmlinux 0x38b700f2 pm_generic_freeze_late +EXPORT_SYMBOL_GPL vmlinux 0x38d2f966 ata_wait_after_reset +EXPORT_SYMBOL_GPL vmlinux 0x38d89e62 iommu_get_domain_for_dev +EXPORT_SYMBOL_GPL vmlinux 0x38e5bc5a clk_set_rate_range +EXPORT_SYMBOL_GPL vmlinux 0x38ea11d1 omap_dm_timer_trigger +EXPORT_SYMBOL_GPL vmlinux 0x39036f70 snd_dmaengine_pcm_open +EXPORT_SYMBOL_GPL vmlinux 0x39123f01 sm501_modify_reg +EXPORT_SYMBOL_GPL vmlinux 0x3918eb76 led_trigger_rename_static +EXPORT_SYMBOL_GPL vmlinux 0x393337fd fuse_get_req +EXPORT_SYMBOL_GPL vmlinux 0x393e43ed led_sysfs_disable +EXPORT_SYMBOL_GPL vmlinux 0x394a863a get_user_pages_fast +EXPORT_SYMBOL_GPL vmlinux 0x396c3aad sk_clone_lock +EXPORT_SYMBOL_GPL vmlinux 0x396d0b82 init_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0x39759104 hvc_remove +EXPORT_SYMBOL_GPL vmlinux 0x3982cc33 task_cgroup_path +EXPORT_SYMBOL_GPL vmlinux 0x399be7c3 snd_soc_jack_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0x39c45e77 sata_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x39ca07cc maxim_charger_calc_reg_current +EXPORT_SYMBOL_GPL vmlinux 0x39d1da40 dma_buf_get +EXPORT_SYMBOL_GPL vmlinux 0x39e61495 nf_logger_request_module +EXPORT_SYMBOL_GPL vmlinux 0x39fecae3 inet6_csk_addr2sockaddr +EXPORT_SYMBOL_GPL vmlinux 0x3a023b7e skb_copy_ubufs +EXPORT_SYMBOL_GPL vmlinux 0x3a104bd2 iommu_attach_group +EXPORT_SYMBOL_GPL vmlinux 0x3a2460f1 subsys_interface_unregister +EXPORT_SYMBOL_GPL vmlinux 0x3a26ed11 sched_clock +EXPORT_SYMBOL_GPL vmlinux 0x3a4f6a32 ata_sff_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x3a536bd7 ring_buffer_read_finish +EXPORT_SYMBOL_GPL vmlinux 0x3a5671ca ata_std_bios_param +EXPORT_SYMBOL_GPL vmlinux 0x3a627909 pci_user_read_config_byte +EXPORT_SYMBOL_GPL vmlinux 0x3a76d8ec unregister_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x3a9be019 asymmetric_key_id_partial +EXPORT_SYMBOL_GPL vmlinux 0x3acdf325 twl4030_audio_enable_resource +EXPORT_SYMBOL_GPL vmlinux 0x3ace7742 spi_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x3ad321e3 pci_enable_rom +EXPORT_SYMBOL_GPL vmlinux 0x3adb3901 wm831x_auxadc_read +EXPORT_SYMBOL_GPL vmlinux 0x3b6a6af8 device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x3b716998 sdev_evt_send +EXPORT_SYMBOL_GPL vmlinux 0x3b7b14b8 devm_regmap_field_alloc +EXPORT_SYMBOL_GPL vmlinux 0x3b7dcc58 regulator_get_hardware_vsel_register +EXPORT_SYMBOL_GPL vmlinux 0x3bbd2992 virtqueue_add_outbuf +EXPORT_SYMBOL_GPL vmlinux 0x3bc17534 transport_class_register +EXPORT_SYMBOL_GPL vmlinux 0x3bd9b822 sdio_run_irqs +EXPORT_SYMBOL_GPL vmlinux 0x3bf24d8e regulator_bulk_force_disable +EXPORT_SYMBOL_GPL vmlinux 0x3c0d1313 dma_run_dependencies +EXPORT_SYMBOL_GPL vmlinux 0x3c0d2bd6 usb_remove_hcd +EXPORT_SYMBOL_GPL vmlinux 0x3c33668d snd_soc_of_parse_tdm_slot +EXPORT_SYMBOL_GPL vmlinux 0x3c43e37e mtd_block_isreserved +EXPORT_SYMBOL_GPL vmlinux 0x3c4409d1 arm_iommu_attach_device +EXPORT_SYMBOL_GPL vmlinux 0x3c6593c8 devm_devfreq_event_add_edev +EXPORT_SYMBOL_GPL vmlinux 0x3c6c375a get_task_mm +EXPORT_SYMBOL_GPL vmlinux 0x3c7d6f55 unregister_asymmetric_key_parser +EXPORT_SYMBOL_GPL vmlinux 0x3c831441 arm_check_condition +EXPORT_SYMBOL_GPL vmlinux 0x3c9390db pci_vpd_find_tag +EXPORT_SYMBOL_GPL vmlinux 0x3c93ea25 trace_seq_printf +EXPORT_SYMBOL_GPL vmlinux 0x3ca30b9e ahci_platform_enable_resources +EXPORT_SYMBOL_GPL vmlinux 0x3ca9b404 irq_alloc_domain_generic_chips +EXPORT_SYMBOL_GPL vmlinux 0x3ccbe858 usb_gen_phy_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x3cd06035 add_input_randomness +EXPORT_SYMBOL_GPL vmlinux 0x3cd8a0b2 inet_hash +EXPORT_SYMBOL_GPL vmlinux 0x3cd9ef46 anon_inode_getfd +EXPORT_SYMBOL_GPL vmlinux 0x3d000403 snd_soc_bytes_info +EXPORT_SYMBOL_GPL vmlinux 0x3d02b88a bmp085_probe +EXPORT_SYMBOL_GPL vmlinux 0x3d111c2c omap_dma_filter_fn +EXPORT_SYMBOL_GPL vmlinux 0x3d388324 dpm_resume_end +EXPORT_SYMBOL_GPL vmlinux 0x3d491cf8 vring_transport_features +EXPORT_SYMBOL_GPL vmlinux 0x3d6d0d58 wm5110_revd_irq +EXPORT_SYMBOL_GPL vmlinux 0x3d872592 of_pci_get_devfn +EXPORT_SYMBOL_GPL vmlinux 0x3d9f03c9 anon_transport_class_register +EXPORT_SYMBOL_GPL vmlinux 0x3dc526a9 arizona_of_match +EXPORT_SYMBOL_GPL vmlinux 0x3dc916b6 crypto_fl_tab +EXPORT_SYMBOL_GPL vmlinux 0x3dccb74c sb800_prefetch +EXPORT_SYMBOL_GPL vmlinux 0x3dd4d3a7 bprintf +EXPORT_SYMBOL_GPL vmlinux 0x3dd8181e __clk_get_parent +EXPORT_SYMBOL_GPL vmlinux 0x3dd8c432 mtd_get_device_size +EXPORT_SYMBOL_GPL vmlinux 0x3de9cae1 crypto_remove_final +EXPORT_SYMBOL_GPL vmlinux 0x3df5869c crypto_givcipher_type +EXPORT_SYMBOL_GPL vmlinux 0x3e0c0752 uart_handle_cts_change +EXPORT_SYMBOL_GPL vmlinux 0x3e177d0a ata_sff_postreset +EXPORT_SYMBOL_GPL vmlinux 0x3e1cd62d serial8250_rpm_get +EXPORT_SYMBOL_GPL vmlinux 0x3e3786c6 of_get_nand_bus_width +EXPORT_SYMBOL_GPL vmlinux 0x3e37b656 bpf_prog_put +EXPORT_SYMBOL_GPL vmlinux 0x3e410620 unregister_kprobes +EXPORT_SYMBOL_GPL vmlinux 0x3e470ee1 power_supply_set_battery_charged +EXPORT_SYMBOL_GPL vmlinux 0x3e524a2e xfrm_audit_state_replay_overflow +EXPORT_SYMBOL_GPL vmlinux 0x3e5257fb __srcu_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x3e5e1937 rcu_batches_started_sched +EXPORT_SYMBOL_GPL vmlinux 0x3e69ea41 pci_disable_pasid +EXPORT_SYMBOL_GPL vmlinux 0x3e7080cb mpi_read_from_buffer +EXPORT_SYMBOL_GPL vmlinux 0x3e823d7d fuse_dev_alloc +EXPORT_SYMBOL_GPL vmlinux 0x3e8a28d0 mpc8xxx_spi_rx_buf_u8 +EXPORT_SYMBOL_GPL vmlinux 0x3e8d26ec ata_dev_pair +EXPORT_SYMBOL_GPL vmlinux 0x3e9b136a crypto_register_algs +EXPORT_SYMBOL_GPL vmlinux 0x3eb84c9a omapdss_of_get_next_endpoint +EXPORT_SYMBOL_GPL vmlinux 0x3edf1158 __inet_lookup_established +EXPORT_SYMBOL_GPL vmlinux 0x3ee65c71 blk_queue_rq_timed_out +EXPORT_SYMBOL_GPL vmlinux 0x3efb35c9 get_online_cpus +EXPORT_SYMBOL_GPL vmlinux 0x3f043538 spi_get_device_id +EXPORT_SYMBOL_GPL vmlinux 0x3f0695de crypto_unregister_rngs +EXPORT_SYMBOL_GPL vmlinux 0x3f0c5443 pci_find_next_ht_capability +EXPORT_SYMBOL_GPL vmlinux 0x3f0db9a9 reservation_object_get_fences_rcu +EXPORT_SYMBOL_GPL vmlinux 0x3f156161 dev_pm_enable_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0x3f1712f2 get_device +EXPORT_SYMBOL_GPL vmlinux 0x3f598d9b of_pci_range_parser_one +EXPORT_SYMBOL_GPL vmlinux 0x3fb386e3 syscon_node_to_regmap +EXPORT_SYMBOL_GPL vmlinux 0x3fc541a7 fat_fill_super +EXPORT_SYMBOL_GPL vmlinux 0x4019a36e __pneigh_lookup +EXPORT_SYMBOL_GPL vmlinux 0x4026c911 device_store_int +EXPORT_SYMBOL_GPL vmlinux 0x4027633d __tracepoint_add_device_to_group +EXPORT_SYMBOL_GPL vmlinux 0x402ed4e6 thermal_zone_unbind_cooling_device +EXPORT_SYMBOL_GPL vmlinux 0x403f701e device_dma_is_coherent +EXPORT_SYMBOL_GPL vmlinux 0x403f9529 gpio_request_one +EXPORT_SYMBOL_GPL vmlinux 0x4045c494 filter_match_preds +EXPORT_SYMBOL_GPL vmlinux 0x4065d168 pm_print_active_wakeup_sources +EXPORT_SYMBOL_GPL vmlinux 0x406c4cb1 hrtimer_resolution +EXPORT_SYMBOL_GPL vmlinux 0x40a53fc2 crypto_remove_spawns +EXPORT_SYMBOL_GPL vmlinux 0x40abfa54 __srcu_read_unlock +EXPORT_SYMBOL_GPL vmlinux 0x40af0dec ata_xfer_mode2mask +EXPORT_SYMBOL_GPL vmlinux 0x40b16e38 __pm_runtime_disable +EXPORT_SYMBOL_GPL vmlinux 0x40d46b21 crypto_ft_tab +EXPORT_SYMBOL_GPL vmlinux 0x40f0683e reset_control_put +EXPORT_SYMBOL_GPL vmlinux 0x40f38fff snd_soc_component_init_regmap +EXPORT_SYMBOL_GPL vmlinux 0x40f8ef0e rt_mutex_unlock +EXPORT_SYMBOL_GPL vmlinux 0x4106b34f dequeue_signal +EXPORT_SYMBOL_GPL vmlinux 0x411421c8 ping_queue_rcv_skb +EXPORT_SYMBOL_GPL vmlinux 0x41334f42 vchan_init +EXPORT_SYMBOL_GPL vmlinux 0x4137e61d subsys_dev_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x413fe30d platform_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x4156f624 shash_register_instance +EXPORT_SYMBOL_GPL vmlinux 0x41814cb8 dirty_writeback_interval +EXPORT_SYMBOL_GPL vmlinux 0x4186c290 class_interface_register +EXPORT_SYMBOL_GPL vmlinux 0x41a6f76d rdev_get_id +EXPORT_SYMBOL_GPL vmlinux 0x41e92408 sdio_writel +EXPORT_SYMBOL_GPL vmlinux 0x42055223 pm_runtime_enable +EXPORT_SYMBOL_GPL vmlinux 0x4205ad24 cancel_work_sync +EXPORT_SYMBOL_GPL vmlinux 0x421c2ccf driver_for_each_device +EXPORT_SYMBOL_GPL vmlinux 0x42267a54 gpiod_is_active_low +EXPORT_SYMBOL_GPL vmlinux 0x422bf8fe power_supply_register +EXPORT_SYMBOL_GPL vmlinux 0x422e9e0a snd_soc_component_async_complete +EXPORT_SYMBOL_GPL vmlinux 0x423e6abe hwmon_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x4271a0b5 i2c_new_device +EXPORT_SYMBOL_GPL vmlinux 0x42825ce2 rcu_scheduler_active +EXPORT_SYMBOL_GPL vmlinux 0x4299fdb7 platform_device_add_resources +EXPORT_SYMBOL_GPL vmlinux 0x429eb9a1 snd_soc_jack_add_pins +EXPORT_SYMBOL_GPL vmlinux 0x42ab2bcf ahci_check_ready +EXPORT_SYMBOL_GPL vmlinux 0x42b364ef scatterwalk_done +EXPORT_SYMBOL_GPL vmlinux 0x42d15725 sysfs_create_link +EXPORT_SYMBOL_GPL vmlinux 0x42d2f4af sched_setscheduler +EXPORT_SYMBOL_GPL vmlinux 0x42e7f053 ahci_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x42f333a5 tty_set_termios +EXPORT_SYMBOL_GPL vmlinux 0x430b4b94 __tracepoint_map +EXPORT_SYMBOL_GPL vmlinux 0x431bf93c wm5110_irq +EXPORT_SYMBOL_GPL vmlinux 0x4322c318 crypto_larval_alloc +EXPORT_SYMBOL_GPL vmlinux 0x435de000 pci_stop_and_remove_bus_device_locked +EXPORT_SYMBOL_GPL vmlinux 0x436a137c wm8350_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x438dee81 ip6_sk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x43a53735 __alloc_workqueue_key +EXPORT_SYMBOL_GPL vmlinux 0x43aea5f2 of_pwm_xlate_with_flags +EXPORT_SYMBOL_GPL vmlinux 0x43afacf8 device_get_next_child_node +EXPORT_SYMBOL_GPL vmlinux 0x43b25605 rt_mutex_lock_interruptible +EXPORT_SYMBOL_GPL vmlinux 0x43f163a9 dm_suspended +EXPORT_SYMBOL_GPL vmlinux 0x43f56e82 ata_xfer_mode2shift +EXPORT_SYMBOL_GPL vmlinux 0x43f81957 clk_round_rate +EXPORT_SYMBOL_GPL vmlinux 0x440403a1 snd_soc_free_ac97_codec +EXPORT_SYMBOL_GPL vmlinux 0x4411779d of_phy_simple_xlate +EXPORT_SYMBOL_GPL vmlinux 0x44294201 snd_dmaengine_pcm_close +EXPORT_SYMBOL_GPL vmlinux 0x4431d05a cpuidle_get_cpu_driver +EXPORT_SYMBOL_GPL vmlinux 0x44410dac of_phy_provider_unregister +EXPORT_SYMBOL_GPL vmlinux 0x444f1735 cpu_pm_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x44679dff sock_diag_register_inet_compat +EXPORT_SYMBOL_GPL vmlinux 0x4484a5a4 wait_for_device_probe +EXPORT_SYMBOL_GPL vmlinux 0x448af588 ata_pci_sff_init_host +EXPORT_SYMBOL_GPL vmlinux 0x4491942f pci_stop_root_bus +EXPORT_SYMBOL_GPL vmlinux 0x44e72edc mtd_blktrans_cease_background +EXPORT_SYMBOL_GPL vmlinux 0x44f27cbc md_allow_write +EXPORT_SYMBOL_GPL vmlinux 0x44f46257 fat_scan +EXPORT_SYMBOL_GPL vmlinux 0x4500152d clockevent_delta2ns +EXPORT_SYMBOL_GPL vmlinux 0x4506e185 platform_device_register +EXPORT_SYMBOL_GPL vmlinux 0x45569b8f tracepoint_probe_unregister +EXPORT_SYMBOL_GPL vmlinux 0x457594fa crypto_alg_list +EXPORT_SYMBOL_GPL vmlinux 0x457be08b transport_add_device +EXPORT_SYMBOL_GPL vmlinux 0x45b997c0 gpiod_get_raw_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x45ba1367 btree_init_mempool +EXPORT_SYMBOL_GPL vmlinux 0x45bf1ff3 crypto_inc +EXPORT_SYMBOL_GPL vmlinux 0x45cc4042 snd_pcm_add_chmap_ctls +EXPORT_SYMBOL_GPL vmlinux 0x45e664fb crypto_unregister_akcipher +EXPORT_SYMBOL_GPL vmlinux 0x45f90ded iommu_unmap +EXPORT_SYMBOL_GPL vmlinux 0x45f96bf0 dev_change_net_namespace +EXPORT_SYMBOL_GPL vmlinux 0x46013233 net_dec_ingress_queue +EXPORT_SYMBOL_GPL vmlinux 0x46066e5b perf_pmu_name +EXPORT_SYMBOL_GPL vmlinux 0x460c8b08 inet_csk_bind_conflict +EXPORT_SYMBOL_GPL vmlinux 0x460d6ba4 sdhci_set_clock +EXPORT_SYMBOL_GPL vmlinux 0x460f7531 wait_rcu_gp +EXPORT_SYMBOL_GPL vmlinux 0x462cabb1 ping_init_sock +EXPORT_SYMBOL_GPL vmlinux 0x463732f6 pm_generic_thaw_early +EXPORT_SYMBOL_GPL vmlinux 0x463d24ea ipv6_fixup_options +EXPORT_SYMBOL_GPL vmlinux 0x463ee6a7 kobject_uevent_env +EXPORT_SYMBOL_GPL vmlinux 0x466284de blk_trace_remove +EXPORT_SYMBOL_GPL vmlinux 0x46658ec1 subsys_interface_register +EXPORT_SYMBOL_GPL vmlinux 0x4672e88b __crypto_dequeue_request +EXPORT_SYMBOL_GPL vmlinux 0x4681678f da9052_request_irq +EXPORT_SYMBOL_GPL vmlinux 0x4688d7ec pvclock_gtod_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x469143c4 x509_free_certificate +EXPORT_SYMBOL_GPL vmlinux 0x46d2bec0 usb_get_urb +EXPORT_SYMBOL_GPL vmlinux 0x46e3493b gpiochip_remove_pin_ranges +EXPORT_SYMBOL_GPL vmlinux 0x46ff5dbf devm_usb_put_phy +EXPORT_SYMBOL_GPL vmlinux 0x47151ec8 ata_host_register +EXPORT_SYMBOL_GPL vmlinux 0x47163041 find_get_pid +EXPORT_SYMBOL_GPL vmlinux 0x471c4ca2 ip_build_and_send_pkt +EXPORT_SYMBOL_GPL vmlinux 0x47217cb8 sdio_readb +EXPORT_SYMBOL_GPL vmlinux 0x47229b5c gpio_request +EXPORT_SYMBOL_GPL vmlinux 0x47257886 clk_register_fractional_divider +EXPORT_SYMBOL_GPL vmlinux 0x472bb0e1 arizona_dev_exit +EXPORT_SYMBOL_GPL vmlinux 0x474b6ecf cpufreq_frequency_table_get_index +EXPORT_SYMBOL_GPL vmlinux 0x4761f17c register_netevent_notifier +EXPORT_SYMBOL_GPL vmlinux 0x477ec10a sdhci_free_host +EXPORT_SYMBOL_GPL vmlinux 0x47840c27 regmap_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0x4784feb8 ip6_datagram_connect_v6_only +EXPORT_SYMBOL_GPL vmlinux 0x47884890 system_power_efficient_wq +EXPORT_SYMBOL_GPL vmlinux 0x47a77fa0 snd_soc_resume +EXPORT_SYMBOL_GPL vmlinux 0x47aad3b9 have_governor_per_policy +EXPORT_SYMBOL_GPL vmlinux 0x47b0d809 inet_ehash_locks_alloc +EXPORT_SYMBOL_GPL vmlinux 0x47ca450e devm_mdiobus_alloc_size +EXPORT_SYMBOL_GPL vmlinux 0x47da44bf regulator_bulk_disable +EXPORT_SYMBOL_GPL vmlinux 0x47de0dc7 clk_unregister_mux +EXPORT_SYMBOL_GPL vmlinux 0x47e7c2d3 serial8250_rpm_put +EXPORT_SYMBOL_GPL vmlinux 0x4816dd5d mtd_panic_write +EXPORT_SYMBOL_GPL vmlinux 0x482b1753 simple_attr_release +EXPORT_SYMBOL_GPL vmlinux 0x484c6430 fuse_conn_init +EXPORT_SYMBOL_GPL vmlinux 0x48572cbd wakeup_source_add +EXPORT_SYMBOL_GPL vmlinux 0x485c6f9d locks_alloc_lock +EXPORT_SYMBOL_GPL vmlinux 0x4868c3b4 rcu_batches_started_bh +EXPORT_SYMBOL_GPL vmlinux 0x4870f45a map_vm_area +EXPORT_SYMBOL_GPL vmlinux 0x487c5d33 nf_log_buf_add +EXPORT_SYMBOL_GPL vmlinux 0x48820982 fat_getattr +EXPORT_SYMBOL_GPL vmlinux 0x48a2c12d of_get_dma_window +EXPORT_SYMBOL_GPL vmlinux 0x48a7f078 usb_unlocked_enable_lpm +EXPORT_SYMBOL_GPL vmlinux 0x48d41039 usb_autopm_put_interface +EXPORT_SYMBOL_GPL vmlinux 0x48f66728 pm_runtime_force_resume +EXPORT_SYMBOL_GPL vmlinux 0x48ff111b i2c_recover_bus +EXPORT_SYMBOL_GPL vmlinux 0x49155615 security_kernel_fw_from_file +EXPORT_SYMBOL_GPL vmlinux 0x49260649 fat_setattr +EXPORT_SYMBOL_GPL vmlinux 0x493c07c5 of_dma_request_slave_channel +EXPORT_SYMBOL_GPL vmlinux 0x493eb8df cpufreq_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x495be901 tpm_gen_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x4982a57f probe_kernel_write +EXPORT_SYMBOL_GPL vmlinux 0x498d293a trace_buffer_unlock_commit +EXPORT_SYMBOL_GPL vmlinux 0x499043d3 crypto_init_queue +EXPORT_SYMBOL_GPL vmlinux 0x49de9804 __clocksource_update_freq_scale +EXPORT_SYMBOL_GPL vmlinux 0x49e34e93 devm_clk_register +EXPORT_SYMBOL_GPL vmlinux 0x49e48a2d __gpiod_get +EXPORT_SYMBOL_GPL vmlinux 0x49e96999 cond_synchronize_rcu +EXPORT_SYMBOL_GPL vmlinux 0x49f23f18 irq_domain_simple_ops +EXPORT_SYMBOL_GPL vmlinux 0x49f3aaea phy_create +EXPORT_SYMBOL_GPL vmlinux 0x49f3f5d2 irq_domain_xlate_twocell +EXPORT_SYMBOL_GPL vmlinux 0x4a23a868 usb_hcd_giveback_urb +EXPORT_SYMBOL_GPL vmlinux 0x4a2cd53c page_endio +EXPORT_SYMBOL_GPL vmlinux 0x4aad624a usb_gen_phy_init +EXPORT_SYMBOL_GPL vmlinux 0x4aadeb9a ring_buffer_alloc_read_page +EXPORT_SYMBOL_GPL vmlinux 0x4ab1a16b usb_anchor_resume_wakeups +EXPORT_SYMBOL_GPL vmlinux 0x4ac8fbac snd_dmaengine_pcm_pointer +EXPORT_SYMBOL_GPL vmlinux 0x4adb8262 of_irq_parse_raw +EXPORT_SYMBOL_GPL vmlinux 0x4b197e13 bus_remove_file +EXPORT_SYMBOL_GPL vmlinux 0x4b5954f0 hrtimer_try_to_cancel +EXPORT_SYMBOL_GPL vmlinux 0x4b84eda2 snd_soc_jack_add_gpios +EXPORT_SYMBOL_GPL vmlinux 0x4bafcdd8 btree_update +EXPORT_SYMBOL_GPL vmlinux 0x4bc7d9be cpufreq_driver_target +EXPORT_SYMBOL_GPL vmlinux 0x4bce65c3 usb_get_phy_dev +EXPORT_SYMBOL_GPL vmlinux 0x4befd3a9 unregister_mtd_user +EXPORT_SYMBOL_GPL vmlinux 0x4c051259 kernfs_path +EXPORT_SYMBOL_GPL vmlinux 0x4c1e7309 generic_fh_to_parent +EXPORT_SYMBOL_GPL vmlinux 0x4c24c0e2 __sock_recv_timestamp +EXPORT_SYMBOL_GPL vmlinux 0x4c47ec15 klist_add_head +EXPORT_SYMBOL_GPL vmlinux 0x4c602bf1 __blkg_release_rcu +EXPORT_SYMBOL_GPL vmlinux 0x4c650e8a irq_gc_mask_set_bit +EXPORT_SYMBOL_GPL vmlinux 0x4c7c2e7a ata_sas_port_suspend +EXPORT_SYMBOL_GPL vmlinux 0x4c7de193 gpiod_set_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x4c90990c sdio_release_irq +EXPORT_SYMBOL_GPL vmlinux 0x4c90feeb ahci_platform_init_host +EXPORT_SYMBOL_GPL vmlinux 0x4ca2d21f rhashtable_insert_slow +EXPORT_SYMBOL_GPL vmlinux 0x4ce36500 serial8250_release_dma +EXPORT_SYMBOL_GPL vmlinux 0x4cf28943 fat_attach +EXPORT_SYMBOL_GPL vmlinux 0x4d0015e2 cpu_hotplug_disable +EXPORT_SYMBOL_GPL vmlinux 0x4d2963a9 posix_acl_access_xattr_handler +EXPORT_SYMBOL_GPL vmlinux 0x4d38f1e0 bL_switcher_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x4d64ed6e tcp_done +EXPORT_SYMBOL_GPL vmlinux 0x4d70b5aa setup_irq +EXPORT_SYMBOL_GPL vmlinux 0x4d934e31 dev_pm_domain_detach +EXPORT_SYMBOL_GPL vmlinux 0x4db9c350 sysfs_create_group +EXPORT_SYMBOL_GPL vmlinux 0x4dd739fa tracepoint_probe_register +EXPORT_SYMBOL_GPL vmlinux 0x4de17ab3 usb_state_string +EXPORT_SYMBOL_GPL vmlinux 0x4dfc7c2c sata_async_notification +EXPORT_SYMBOL_GPL vmlinux 0x4e0041ac led_classdev_unregister +EXPORT_SYMBOL_GPL vmlinux 0x4e0419c8 ata_ehi_clear_desc +EXPORT_SYMBOL_GPL vmlinux 0x4e109192 ring_buffer_entries +EXPORT_SYMBOL_GPL vmlinux 0x4e138af2 simple_attr_open +EXPORT_SYMBOL_GPL vmlinux 0x4e242f5f pstore_cannot_block_path +EXPORT_SYMBOL_GPL vmlinux 0x4e2c2dd2 pm_qos_remove_request +EXPORT_SYMBOL_GPL vmlinux 0x4e31c6c4 ahci_platform_disable_resources +EXPORT_SYMBOL_GPL vmlinux 0x4e33ee0b inet6_csk_search_req +EXPORT_SYMBOL_GPL vmlinux 0x4e3c1d93 i2c_generic_gpio_recovery +EXPORT_SYMBOL_GPL vmlinux 0x4e93fbb4 dev_pm_put_subsys_data +EXPORT_SYMBOL_GPL vmlinux 0x4e95ebeb request_firmware_direct +EXPORT_SYMBOL_GPL vmlinux 0x4e9ead73 __pm_stay_awake +EXPORT_SYMBOL_GPL vmlinux 0x4ebd9097 ata_qc_complete +EXPORT_SYMBOL_GPL vmlinux 0x4eddb599 sata_set_spd +EXPORT_SYMBOL_GPL vmlinux 0x4ef5bcf4 perf_swevent_get_recursion_context +EXPORT_SYMBOL_GPL vmlinux 0x4f020dee public_key_verify_signature +EXPORT_SYMBOL_GPL vmlinux 0x4f0d41b4 devm_extcon_dev_unregister +EXPORT_SYMBOL_GPL vmlinux 0x4f290189 ata_msleep +EXPORT_SYMBOL_GPL vmlinux 0x4f41517f ahci_pmp_retry_srst_ops +EXPORT_SYMBOL_GPL vmlinux 0x4f4abb4a dev_forward_skb +EXPORT_SYMBOL_GPL vmlinux 0x4f5b7b01 wm8997_irq +EXPORT_SYMBOL_GPL vmlinux 0x4f6a07fe show_rcu_gp_kthreads +EXPORT_SYMBOL_GPL vmlinux 0x4f98d766 cpu_pm_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x4fb62a9d device_get_child_node_count +EXPORT_SYMBOL_GPL vmlinux 0x4fc3fdb1 fat_build_inode +EXPORT_SYMBOL_GPL vmlinux 0x4fd4e89d ring_buffer_empty_cpu +EXPORT_SYMBOL_GPL vmlinux 0x4fdc945d sata_deb_timing_normal +EXPORT_SYMBOL_GPL vmlinux 0x4fe05c80 __fsnotify_parent +EXPORT_SYMBOL_GPL vmlinux 0x4fe1eddf unregister_netevent_notifier +EXPORT_SYMBOL_GPL vmlinux 0x4fe6ba72 serial8250_do_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x4ff16007 sdio_writew +EXPORT_SYMBOL_GPL vmlinux 0x4ffe4d48 usb_free_coherent +EXPORT_SYMBOL_GPL vmlinux 0x4fffeb11 snd_card_add_dev_attr +EXPORT_SYMBOL_GPL vmlinux 0x50284959 tty_port_tty_wakeup +EXPORT_SYMBOL_GPL vmlinux 0x50315ba3 palmas_ext_control_req_config +EXPORT_SYMBOL_GPL vmlinux 0x5040b2e7 sysfs_chmod_file +EXPORT_SYMBOL_GPL vmlinux 0x5080c352 trace_print_bitmask_seq +EXPORT_SYMBOL_GPL vmlinux 0x5086ac3a alg_test +EXPORT_SYMBOL_GPL vmlinux 0x5091b823 ring_buffer_read_start +EXPORT_SYMBOL_GPL vmlinux 0x5099d1d7 __tracepoint_rpm_return_int +EXPORT_SYMBOL_GPL vmlinux 0x509cf167 regmap_irq_get_domain +EXPORT_SYMBOL_GPL vmlinux 0x50b1039e uprobe_register +EXPORT_SYMBOL_GPL vmlinux 0x50c89f23 __alloc_percpu +EXPORT_SYMBOL_GPL vmlinux 0x50e7193a __i2c_first_dynamic_bus_num +EXPORT_SYMBOL_GPL vmlinux 0x50fad434 round_jiffies_up +EXPORT_SYMBOL_GPL vmlinux 0x51347a06 led_stop_software_blink +EXPORT_SYMBOL_GPL vmlinux 0x514e9875 divider_get_val +EXPORT_SYMBOL_GPL vmlinux 0x51534a39 mm_kobj +EXPORT_SYMBOL_GPL vmlinux 0x515527ac omap_dm_timer_stop +EXPORT_SYMBOL_GPL vmlinux 0x5156a6e4 crypto_register_rng +EXPORT_SYMBOL_GPL vmlinux 0x51570171 trace_event_buffer_commit +EXPORT_SYMBOL_GPL vmlinux 0x515dedfe bus_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x516ea546 pci_restore_msi_state +EXPORT_SYMBOL_GPL vmlinux 0x517045b1 snd_soc_dpcm_can_be_free_stop +EXPORT_SYMBOL_GPL vmlinux 0x518103f4 ata_sff_hsm_move +EXPORT_SYMBOL_GPL vmlinux 0x519f4741 phy_pm_runtime_put_sync +EXPORT_SYMBOL_GPL vmlinux 0x51ae44a2 pm_generic_restore_early +EXPORT_SYMBOL_GPL vmlinux 0x51d7910b ip6_sk_redirect +EXPORT_SYMBOL_GPL vmlinux 0x51e09b92 platform_get_resource +EXPORT_SYMBOL_GPL vmlinux 0x51f9d21a gpiod_set_array_value +EXPORT_SYMBOL_GPL vmlinux 0x51ff7c5b cpufreq_cooling_register +EXPORT_SYMBOL_GPL vmlinux 0x5200c3b4 usb_scuttle_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x5203bff1 gpiod_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x520d275a power_supply_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x5210a5bf hsi_board_list +EXPORT_SYMBOL_GPL vmlinux 0x5221ec3a fwnode_property_read_u32_array +EXPORT_SYMBOL_GPL vmlinux 0x52365495 iommu_domain_get_attr +EXPORT_SYMBOL_GPL vmlinux 0x524b3932 usb_add_hcd +EXPORT_SYMBOL_GPL vmlinux 0x5254ca7e cpsw_ale_set_allmulti +EXPORT_SYMBOL_GPL vmlinux 0x52560b53 ahci_platform_enable_regulators +EXPORT_SYMBOL_GPL vmlinux 0x526280c7 trace_seq_puts +EXPORT_SYMBOL_GPL vmlinux 0x5272d8bc __cookie_v4_check +EXPORT_SYMBOL_GPL vmlinux 0x527cb418 __pm_runtime_resume +EXPORT_SYMBOL_GPL vmlinux 0x52a41251 __cookie_v4_init_sequence +EXPORT_SYMBOL_GPL vmlinux 0x52af0410 pci_cleanup_aer_uncorrect_error_status +EXPORT_SYMBOL_GPL vmlinux 0x52c0d5d8 scatterwalk_bytes_sglen +EXPORT_SYMBOL_GPL vmlinux 0x52df7c4c inet_twsk_schedule +EXPORT_SYMBOL_GPL vmlinux 0x52e6e1cb blocking_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0x53220de0 modify_user_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x532bcd7a usb_put_hcd +EXPORT_SYMBOL_GPL vmlinux 0x532d7c0a pinconf_generic_dt_node_to_map +EXPORT_SYMBOL_GPL vmlinux 0x5350c72c snd_soc_dapm_put_volsw +EXPORT_SYMBOL_GPL vmlinux 0x5358fc36 ring_buffer_discard_commit +EXPORT_SYMBOL_GPL vmlinux 0x535bcea9 watchdog_init_timeout +EXPORT_SYMBOL_GPL vmlinux 0x53614269 get_cpu_idle_time_us +EXPORT_SYMBOL_GPL vmlinux 0x536b2c6f fl6_sock_lookup +EXPORT_SYMBOL_GPL vmlinux 0x5378a654 genpd_dev_pm_attach +EXPORT_SYMBOL_GPL vmlinux 0x53adfae2 led_trigger_blink +EXPORT_SYMBOL_GPL vmlinux 0x53b66090 of_dma_simple_xlate +EXPORT_SYMBOL_GPL vmlinux 0x53bfbc68 ata_bmdma_dumb_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0x53cb2800 __tracepoint_napi_poll +EXPORT_SYMBOL_GPL vmlinux 0x53d20d35 pci_find_next_ext_capability +EXPORT_SYMBOL_GPL vmlinux 0x53d2b0b1 security_inode_mkdir +EXPORT_SYMBOL_GPL vmlinux 0x53d526de user_describe +EXPORT_SYMBOL_GPL vmlinux 0x53efa1f1 of_usb_get_dr_mode +EXPORT_SYMBOL_GPL vmlinux 0x53ff4647 dm_path_uevent +EXPORT_SYMBOL_GPL vmlinux 0x541bd60a irq_work_run +EXPORT_SYMBOL_GPL vmlinux 0x5425d145 bit_wait_timeout +EXPORT_SYMBOL_GPL vmlinux 0x542940af __clk_determine_rate +EXPORT_SYMBOL_GPL vmlinux 0x5430a2cd gpiod_get_array_optional +EXPORT_SYMBOL_GPL vmlinux 0x544aab61 klist_add_tail +EXPORT_SYMBOL_GPL vmlinux 0x5456db1d arizona_of_get_type +EXPORT_SYMBOL_GPL vmlinux 0x545fec86 percpu_ida_for_each_free +EXPORT_SYMBOL_GPL vmlinux 0x5460c8d8 fsnotify_get_cookie +EXPORT_SYMBOL_GPL vmlinux 0x54740eb7 get_cpu_idle_time +EXPORT_SYMBOL_GPL vmlinux 0x549525ef handle_nested_irq +EXPORT_SYMBOL_GPL vmlinux 0x54a64ec0 ata_sff_dma_pause +EXPORT_SYMBOL_GPL vmlinux 0x54a9e7b1 cpsw_ale_create +EXPORT_SYMBOL_GPL vmlinux 0x54b5d307 dm_get_table_device +EXPORT_SYMBOL_GPL vmlinux 0x54c7657e snd_soc_put_xr_sx +EXPORT_SYMBOL_GPL vmlinux 0x54d46690 uart_parse_earlycon +EXPORT_SYMBOL_GPL vmlinux 0x54d468f1 pm_qos_request_active +EXPORT_SYMBOL_GPL vmlinux 0x54ebb7d9 pci_probe_reset_slot +EXPORT_SYMBOL_GPL vmlinux 0x54f42d5c ata_port_desc +EXPORT_SYMBOL_GPL vmlinux 0x550fbf98 clk_mux_ops +EXPORT_SYMBOL_GPL vmlinux 0x55360454 task_cls_state +EXPORT_SYMBOL_GPL vmlinux 0x553b49a4 cpufreq_get_driver_data +EXPORT_SYMBOL_GPL vmlinux 0x553ca83e cpufreq_cooling_unregister +EXPORT_SYMBOL_GPL vmlinux 0x553e588c __netpoll_cleanup +EXPORT_SYMBOL_GPL vmlinux 0x55417264 unregister_vt_notifier +EXPORT_SYMBOL_GPL vmlinux 0x5551eb22 musb_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x555f9f69 ahci_platform_resume +EXPORT_SYMBOL_GPL vmlinux 0x556e4390 clk_get_rate +EXPORT_SYMBOL_GPL vmlinux 0x55784228 regmap_irq_get_virq +EXPORT_SYMBOL_GPL vmlinux 0x55785ae9 posix_acl_default_xattr_handler +EXPORT_SYMBOL_GPL vmlinux 0x557ab231 devfreq_event_remove_edev +EXPORT_SYMBOL_GPL vmlinux 0x557c3f6a arizona_of_get_named_gpio +EXPORT_SYMBOL_GPL vmlinux 0x558e6f26 of_get_pci_domain_nr +EXPORT_SYMBOL_GPL vmlinux 0x559233ec blkcg_policy_register +EXPORT_SYMBOL_GPL vmlinux 0x55c04dda device_reprobe +EXPORT_SYMBOL_GPL vmlinux 0x55c769f6 led_trigger_unregister +EXPORT_SYMBOL_GPL vmlinux 0x55e4fab6 wm831x_device_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x55e9d25f devm_extcon_dev_allocate +EXPORT_SYMBOL_GPL vmlinux 0x55f04c21 trace_buffer_unlock_commit_regs +EXPORT_SYMBOL_GPL vmlinux 0x560902d4 snd_soc_dai_set_tristate +EXPORT_SYMBOL_GPL vmlinux 0x56256e8a orderly_poweroff +EXPORT_SYMBOL_GPL vmlinux 0x56310925 regulator_mode_to_status +EXPORT_SYMBOL_GPL vmlinux 0x5638d872 inet_csk_clone_lock +EXPORT_SYMBOL_GPL vmlinux 0x563c3fc0 clk_register +EXPORT_SYMBOL_GPL vmlinux 0x5641485b tty_termios_encode_baud_rate +EXPORT_SYMBOL_GPL vmlinux 0x565b6892 uuid_le_gen +EXPORT_SYMBOL_GPL vmlinux 0x5676171b ping_getfrag +EXPORT_SYMBOL_GPL vmlinux 0x56b63670 lzo1x_1_compress +EXPORT_SYMBOL_GPL vmlinux 0x56d31820 musb_writel +EXPORT_SYMBOL_GPL vmlinux 0x56d697ce cpu_up +EXPORT_SYMBOL_GPL vmlinux 0x56d7b966 pci_slots_kset +EXPORT_SYMBOL_GPL vmlinux 0x56e75d47 klist_node_attached +EXPORT_SYMBOL_GPL vmlinux 0x56e9103b cpu_pm_enter +EXPORT_SYMBOL_GPL vmlinux 0x56f28b25 blk_mq_tags_cpumask +EXPORT_SYMBOL_GPL vmlinux 0x570842c7 bpf_prog_select_runtime +EXPORT_SYMBOL_GPL vmlinux 0x57231f45 ring_buffer_record_on +EXPORT_SYMBOL_GPL vmlinux 0x572b1472 tcp_reno_cong_avoid +EXPORT_SYMBOL_GPL vmlinux 0x578b9b24 serial8250_do_set_mctrl +EXPORT_SYMBOL_GPL vmlinux 0x5790e7a0 pci_unlock_rescan_remove +EXPORT_SYMBOL_GPL vmlinux 0x5792c5ee ahci_platform_resume_host +EXPORT_SYMBOL_GPL vmlinux 0x579df59d usb_put_intf +EXPORT_SYMBOL_GPL vmlinux 0x579e0bf5 rtnl_unregister_all +EXPORT_SYMBOL_GPL vmlinux 0x57bc999b platform_device_add_data +EXPORT_SYMBOL_GPL vmlinux 0x57be8e11 snd_soc_card_jack_new +EXPORT_SYMBOL_GPL vmlinux 0x57c39727 kdb_register_flags +EXPORT_SYMBOL_GPL vmlinux 0x57e4564a pci_enable_ats +EXPORT_SYMBOL_GPL vmlinux 0x57e7a023 pci_check_and_mask_intx +EXPORT_SYMBOL_GPL vmlinux 0x58026384 wm831x_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0x58063ede srcu_barrier +EXPORT_SYMBOL_GPL vmlinux 0x581195fb mbox_controller_unregister +EXPORT_SYMBOL_GPL vmlinux 0x5812ac0b crypto_init_ahash_spawn +EXPORT_SYMBOL_GPL vmlinux 0x5820c426 ata_bmdma32_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x58228c8c pci_ignore_hotplug +EXPORT_SYMBOL_GPL vmlinux 0x58292e5f clk_fixed_factor_ops +EXPORT_SYMBOL_GPL vmlinux 0x5839790e usb_hcd_map_urb_for_dma +EXPORT_SYMBOL_GPL vmlinux 0x5841e897 usb_add_gadget_udc_release +EXPORT_SYMBOL_GPL vmlinux 0x58631dab imx_audmux_v2_configure_port +EXPORT_SYMBOL_GPL vmlinux 0x587ed8ef ahci_platform_suspend_host +EXPORT_SYMBOL_GPL vmlinux 0x589e4569 syscon_regmap_lookup_by_pdevname +EXPORT_SYMBOL_GPL vmlinux 0x59259876 wb_writeout_inc +EXPORT_SYMBOL_GPL vmlinux 0x5925b8f1 spi_busnum_to_master +EXPORT_SYMBOL_GPL vmlinux 0x592ad9cb fib_table_lookup +EXPORT_SYMBOL_GPL vmlinux 0x594cde67 trace_seq_putmem_hex +EXPORT_SYMBOL_GPL vmlinux 0x59d25e33 snd_compress_register +EXPORT_SYMBOL_GPL vmlinux 0x59d461d2 mnt_want_write +EXPORT_SYMBOL_GPL vmlinux 0x59e2743e call_rcu_bh +EXPORT_SYMBOL_GPL vmlinux 0x59eae699 ring_buffer_read_prepare +EXPORT_SYMBOL_GPL vmlinux 0x59ebacbf blk_lld_busy +EXPORT_SYMBOL_GPL vmlinux 0x59fd6cfb bsg_unregister_queue +EXPORT_SYMBOL_GPL vmlinux 0x5a3ad7ad ata_cable_sata +EXPORT_SYMBOL_GPL vmlinux 0x5a47e91d pm_generic_thaw +EXPORT_SYMBOL_GPL vmlinux 0x5a5fe95f xfrm_output +EXPORT_SYMBOL_GPL vmlinux 0x5a70c704 usb_add_gadget_udc +EXPORT_SYMBOL_GPL vmlinux 0x5a70cbec ata_bmdma_status +EXPORT_SYMBOL_GPL vmlinux 0x5a710b1b key_type_trusted +EXPORT_SYMBOL_GPL vmlinux 0x5a7aaec6 snd_soc_dapm_new_widgets +EXPORT_SYMBOL_GPL vmlinux 0x5a7af014 blkg_prfill_stat +EXPORT_SYMBOL_GPL vmlinux 0x5a7bfe41 crypto_probing_notify +EXPORT_SYMBOL_GPL vmlinux 0x5a8f213c cpdma_ctlr_eoi +EXPORT_SYMBOL_GPL vmlinux 0x5a9ee93f xhci_run +EXPORT_SYMBOL_GPL vmlinux 0x5aaed984 snd_ctl_sync_vmaster +EXPORT_SYMBOL_GPL vmlinux 0x5acf6567 btree_init +EXPORT_SYMBOL_GPL vmlinux 0x5ad60419 lp8788_update_bits +EXPORT_SYMBOL_GPL vmlinux 0x5adceb4f __module_address +EXPORT_SYMBOL_GPL vmlinux 0x5af0fdb9 gpiod_to_chip +EXPORT_SYMBOL_GPL vmlinux 0x5af1fe06 pci_remove_root_bus +EXPORT_SYMBOL_GPL vmlinux 0x5af2a1fb __pci_reset_function +EXPORT_SYMBOL_GPL vmlinux 0x5b14b354 regulator_get_init_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x5b15823e devm_kasprintf +EXPORT_SYMBOL_GPL vmlinux 0x5b363595 sdio_readl +EXPORT_SYMBOL_GPL vmlinux 0x5b48f66f da9052_free_irq +EXPORT_SYMBOL_GPL vmlinux 0x5b4b56be unregister_jprobe +EXPORT_SYMBOL_GPL vmlinux 0x5b641818 ata_dev_next +EXPORT_SYMBOL_GPL vmlinux 0x5bb1e1fc usb_autopm_get_interface_no_resume +EXPORT_SYMBOL_GPL vmlinux 0x5bb54f49 snd_soc_new_ac97_codec +EXPORT_SYMBOL_GPL vmlinux 0x5bc26e35 of_get_phy_mode +EXPORT_SYMBOL_GPL vmlinux 0x5bc7d6ea cn_add_callback +EXPORT_SYMBOL_GPL vmlinux 0x5bd0748f crypto_del_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x5bdb6435 sysfs_merge_group +EXPORT_SYMBOL_GPL vmlinux 0x5bdbac4e rcu_unexpedite_gp +EXPORT_SYMBOL_GPL vmlinux 0x5bfe574d iptunnel_xmit +EXPORT_SYMBOL_GPL vmlinux 0x5c180e66 cci_ace_get_port +EXPORT_SYMBOL_GPL vmlinux 0x5c2455c4 pinctrl_pm_select_default_state +EXPORT_SYMBOL_GPL vmlinux 0x5c2dc421 get_current_tty +EXPORT_SYMBOL_GPL vmlinux 0x5c2fe4a5 cpdma_chan_stop +EXPORT_SYMBOL_GPL vmlinux 0x5c47f72f omap_dm_timer_request_specific +EXPORT_SYMBOL_GPL vmlinux 0x5c5a1b16 tick_broadcast_control +EXPORT_SYMBOL_GPL vmlinux 0x5c631b68 snd_soc_set_runtime_hwparams +EXPORT_SYMBOL_GPL vmlinux 0x5c9b8cd7 class_dev_iter_next +EXPORT_SYMBOL_GPL vmlinux 0x5cabdced dev_pm_qos_remove_global_notifier +EXPORT_SYMBOL_GPL vmlinux 0x5cb52c4c device_property_read_u32_array +EXPORT_SYMBOL_GPL vmlinux 0x5cc457a3 pci_user_write_config_word +EXPORT_SYMBOL_GPL vmlinux 0x5cc509a4 nsecs_to_jiffies +EXPORT_SYMBOL_GPL vmlinux 0x5cc98fa9 dev_pm_opp_add +EXPORT_SYMBOL_GPL vmlinux 0x5cce9292 devres_remove_group +EXPORT_SYMBOL_GPL vmlinux 0x5cf5abe6 page_cache_sync_readahead +EXPORT_SYMBOL_GPL vmlinux 0x5d12e48f input_event_to_user +EXPORT_SYMBOL_GPL vmlinux 0x5d2b5bec register_user_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x5d302a02 dm_accept_partial_bio +EXPORT_SYMBOL_GPL vmlinux 0x5d45f150 inet_csk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x5d51bcf7 scatterwalk_start +EXPORT_SYMBOL_GPL vmlinux 0x5d748762 dm_noflush_suspending +EXPORT_SYMBOL_GPL vmlinux 0x5d7fd325 regcache_drop_region +EXPORT_SYMBOL_GPL vmlinux 0x5d90ba0a snd_dmaengine_pcm_pointer_no_residue +EXPORT_SYMBOL_GPL vmlinux 0x5da67adc zs_compact +EXPORT_SYMBOL_GPL vmlinux 0x5db2b426 gpiochip_free_own_desc +EXPORT_SYMBOL_GPL vmlinux 0x5dc7f943 kick_process +EXPORT_SYMBOL_GPL vmlinux 0x5dcbd31c snd_soc_jack_add_gpiods +EXPORT_SYMBOL_GPL vmlinux 0x5dd4ae42 rdev_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x5dede11d __clk_mux_determine_rate +EXPORT_SYMBOL_GPL vmlinux 0x5e2ceca2 ata_bmdma_irq_clear +EXPORT_SYMBOL_GPL vmlinux 0x5e4d45c8 fuse_file_poll +EXPORT_SYMBOL_GPL vmlinux 0x5e515be6 ktime_get_ts64 +EXPORT_SYMBOL_GPL vmlinux 0x5e51cd74 swiotlb_nr_tbl +EXPORT_SYMBOL_GPL vmlinux 0x5e52b9b5 usb_mon_register +EXPORT_SYMBOL_GPL vmlinux 0x5e53aa59 mmput +EXPORT_SYMBOL_GPL vmlinux 0x5e6b319e devm_add_action +EXPORT_SYMBOL_GPL vmlinux 0x5e701f94 devm_regulator_get +EXPORT_SYMBOL_GPL vmlinux 0x5e8c1231 ata_bmdma_port_start32 +EXPORT_SYMBOL_GPL vmlinux 0x5e925497 irq_domain_add_simple +EXPORT_SYMBOL_GPL vmlinux 0x5ed4defe n_tty_inherit_ops +EXPORT_SYMBOL_GPL vmlinux 0x5eef35cb crypto_attr_alg2 +EXPORT_SYMBOL_GPL vmlinux 0x5f013e78 debugfs_create_file +EXPORT_SYMBOL_GPL vmlinux 0x5f03a31d xfrm_audit_state_notfound_simple +EXPORT_SYMBOL_GPL vmlinux 0x5f06f1df blk_mq_request_started +EXPORT_SYMBOL_GPL vmlinux 0x5f0ab919 irq_create_mapping +EXPORT_SYMBOL_GPL vmlinux 0x5f370191 sdio_f0_writeb +EXPORT_SYMBOL_GPL vmlinux 0x5f72dda9 max_gen_clk_remove +EXPORT_SYMBOL_GPL vmlinux 0x5fa05d89 blockdev_superblock +EXPORT_SYMBOL_GPL vmlinux 0x5fbd7b36 nf_queue_entry_release_refs +EXPORT_SYMBOL_GPL vmlinux 0x5fc47436 regulator_set_voltage_time +EXPORT_SYMBOL_GPL vmlinux 0x5fe311ff inet6_lookup_listener +EXPORT_SYMBOL_GPL vmlinux 0x5fe6e5ce crypto_spawn_tfm2 +EXPORT_SYMBOL_GPL vmlinux 0x60091316 clk_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x6013293e desc_to_gpio +EXPORT_SYMBOL_GPL vmlinux 0x601741a2 of_pwm_get +EXPORT_SYMBOL_GPL vmlinux 0x601af199 ahci_reset_controller +EXPORT_SYMBOL_GPL vmlinux 0x60263ea3 of_get_nand_ecc_mode +EXPORT_SYMBOL_GPL vmlinux 0x602e75b8 rtnl_put_cacheinfo +EXPORT_SYMBOL_GPL vmlinux 0x60506751 unmap_kernel_range_noflush +EXPORT_SYMBOL_GPL vmlinux 0x6061f470 dma_buf_unmap_attachment +EXPORT_SYMBOL_GPL vmlinux 0x6062d1dc public_key_subtype +EXPORT_SYMBOL_GPL vmlinux 0x6075d0c7 omap_tll_init +EXPORT_SYMBOL_GPL vmlinux 0x6083e01c disk_map_sector_rcu +EXPORT_SYMBOL_GPL vmlinux 0x608fbf31 tps65912_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x60932eef skb_pull_rcsum +EXPORT_SYMBOL_GPL vmlinux 0x60a13e90 rcu_barrier +EXPORT_SYMBOL_GPL vmlinux 0x60a94856 cpufreq_cpu_get +EXPORT_SYMBOL_GPL vmlinux 0x60ecc01e usb_lock_device_for_reset +EXPORT_SYMBOL_GPL vmlinux 0x60f60131 dapm_kcontrol_get_value +EXPORT_SYMBOL_GPL vmlinux 0x6110e15e apply_to_page_range +EXPORT_SYMBOL_GPL vmlinux 0x61285935 usb_register_device_driver +EXPORT_SYMBOL_GPL vmlinux 0x612ff276 regmap_field_free +EXPORT_SYMBOL_GPL vmlinux 0x61332c5a otg_ulpi_create +EXPORT_SYMBOL_GPL vmlinux 0x61445a67 ping_recvmsg +EXPORT_SYMBOL_GPL vmlinux 0x614ae23b ata_eh_qc_complete +EXPORT_SYMBOL_GPL vmlinux 0x61550113 scsi_eh_ready_devs +EXPORT_SYMBOL_GPL vmlinux 0x61781fe8 replace_page_cache_page +EXPORT_SYMBOL_GPL vmlinux 0x617dd698 securityfs_create_dir +EXPORT_SYMBOL_GPL vmlinux 0x619e793e usb_create_shared_hcd +EXPORT_SYMBOL_GPL vmlinux 0x61b4b1b0 vfs_lock_file +EXPORT_SYMBOL_GPL vmlinux 0x61c331a2 of_pci_parse_bus_range +EXPORT_SYMBOL_GPL vmlinux 0x61d56336 component_add +EXPORT_SYMBOL_GPL vmlinux 0x61d9e563 get_governor_parent_kobj +EXPORT_SYMBOL_GPL vmlinux 0x61fb756e sata_scr_read +EXPORT_SYMBOL_GPL vmlinux 0x6210299e scatterwalk_ffwd +EXPORT_SYMBOL_GPL vmlinux 0x621e1865 skb_partial_csum_set +EXPORT_SYMBOL_GPL vmlinux 0x62210d15 skcipher_geniv_exit +EXPORT_SYMBOL_GPL vmlinux 0x622c7922 register_oom_notifier +EXPORT_SYMBOL_GPL vmlinux 0x622e3ffe __tracepoint_rpm_resume +EXPORT_SYMBOL_GPL vmlinux 0x6238c07a virtqueue_enable_cb_delayed +EXPORT_SYMBOL_GPL vmlinux 0x6238ee35 xhci_dbg_trace +EXPORT_SYMBOL_GPL vmlinux 0x625fd4bf need_load_eval +EXPORT_SYMBOL_GPL vmlinux 0x62618705 bmp085_remove +EXPORT_SYMBOL_GPL vmlinux 0x6266349c ata_sff_data_xfer32 +EXPORT_SYMBOL_GPL vmlinux 0x6299fc3a spi_unregister_master +EXPORT_SYMBOL_GPL vmlinux 0x62ac0197 usb_match_id +EXPORT_SYMBOL_GPL vmlinux 0x62f96475 power_supply_class +EXPORT_SYMBOL_GPL vmlinux 0x62fd5c39 __devm_of_phy_provider_register +EXPORT_SYMBOL_GPL vmlinux 0x63068043 ping_rcv +EXPORT_SYMBOL_GPL vmlinux 0x63150e06 clk_get_parent +EXPORT_SYMBOL_GPL vmlinux 0x6350115c irq_alloc_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x636075b6 iommu_domain_free +EXPORT_SYMBOL_GPL vmlinux 0x638d7e10 of_genpd_get_from_provider +EXPORT_SYMBOL_GPL vmlinux 0x6395ebd6 of_pci_find_msi_chip_by_node +EXPORT_SYMBOL_GPL vmlinux 0x63bffce8 bpf_prog_create +EXPORT_SYMBOL_GPL vmlinux 0x63c7cf11 inet_putpeer +EXPORT_SYMBOL_GPL vmlinux 0x63cd73b0 cpufreq_freq_attr_scaling_boost_freqs +EXPORT_SYMBOL_GPL vmlinux 0x63fc3e4c trace_event_raw_init +EXPORT_SYMBOL_GPL vmlinux 0x6404ebbb sock_diag_save_cookie +EXPORT_SYMBOL_GPL vmlinux 0x6410e160 ktime_mono_to_any +EXPORT_SYMBOL_GPL vmlinux 0x641fff18 da9052_disable_irq +EXPORT_SYMBOL_GPL vmlinux 0x64256424 visitor32 +EXPORT_SYMBOL_GPL vmlinux 0x642cb1b9 snd_soc_dapm_force_bias_level +EXPORT_SYMBOL_GPL vmlinux 0x643d0a30 snd_soc_component_write +EXPORT_SYMBOL_GPL vmlinux 0x646a07fb scsi_internal_device_unblock +EXPORT_SYMBOL_GPL vmlinux 0x646f3f91 crypto_unregister_template +EXPORT_SYMBOL_GPL vmlinux 0x647537f3 pl320_ipc_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x647732ea of_reset_control_get +EXPORT_SYMBOL_GPL vmlinux 0x6479d85e kern_mount_data +EXPORT_SYMBOL_GPL vmlinux 0x647cf5cb ahci_qc_issue +EXPORT_SYMBOL_GPL vmlinux 0x64824795 handle_mm_fault +EXPORT_SYMBOL_GPL vmlinux 0x6491944e sdio_memcpy_toio +EXPORT_SYMBOL_GPL vmlinux 0x64975925 mmc_send_tuning +EXPORT_SYMBOL_GPL vmlinux 0x64bd30c4 omap_dm_timer_set_source +EXPORT_SYMBOL_GPL vmlinux 0x64be22a5 bio_associate_blkcg +EXPORT_SYMBOL_GPL vmlinux 0x64cfdb43 flush_kthread_worker +EXPORT_SYMBOL_GPL vmlinux 0x64d68369 __platform_create_bundle +EXPORT_SYMBOL_GPL vmlinux 0x64dfa7e5 sdhci_pci_o2_resume +EXPORT_SYMBOL_GPL vmlinux 0x64e36838 del_mtd_blktrans_dev +EXPORT_SYMBOL_GPL vmlinux 0x65246557 snd_ctl_add_vmaster_hook +EXPORT_SYMBOL_GPL vmlinux 0x6531a81d devm_hwmon_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x6533f4bf regulator_bulk_enable +EXPORT_SYMBOL_GPL vmlinux 0x655fc8bb power_supply_get_property +EXPORT_SYMBOL_GPL vmlinux 0x655fcb8c icst_clk_register +EXPORT_SYMBOL_GPL vmlinux 0x6567335b rtc_irq_unregister +EXPORT_SYMBOL_GPL vmlinux 0x65798bd4 of_irq_parse_and_map_pci +EXPORT_SYMBOL_GPL vmlinux 0x6584ce66 ehci_suspend +EXPORT_SYMBOL_GPL vmlinux 0x65879687 crypto_ahash_final +EXPORT_SYMBOL_GPL vmlinux 0x6592797b snd_soc_dapm_kcontrol_dapm +EXPORT_SYMBOL_GPL vmlinux 0x65a14bc7 pm_runtime_forbid +EXPORT_SYMBOL_GPL vmlinux 0x65bbbc78 schedule_hrtimeout_range +EXPORT_SYMBOL_GPL vmlinux 0x65ccb6f0 call_netevent_notifiers +EXPORT_SYMBOL_GPL vmlinux 0x65dc2d18 cpuidle_disable_device +EXPORT_SYMBOL_GPL vmlinux 0x65e1677a wait_on_page_bit_killable_timeout +EXPORT_SYMBOL_GPL vmlinux 0x65e609ca inet_twsk_alloc +EXPORT_SYMBOL_GPL vmlinux 0x65ee251b nf_queue_entry_get_refs +EXPORT_SYMBOL_GPL vmlinux 0x65fbdf85 snd_soc_dai_set_channel_map +EXPORT_SYMBOL_GPL vmlinux 0x66110599 ata_host_init +EXPORT_SYMBOL_GPL vmlinux 0x661601de sprint_symbol +EXPORT_SYMBOL_GPL vmlinux 0x6628dd67 arizona_clk32k_enable +EXPORT_SYMBOL_GPL vmlinux 0x6636c3c9 irq_set_vcpu_affinity +EXPORT_SYMBOL_GPL vmlinux 0x6659cbb4 posix_clock_register +EXPORT_SYMBOL_GPL vmlinux 0x6672f138 i2c_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0x668402aa crypto_put_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x66892a26 of_dma_router_register +EXPORT_SYMBOL_GPL vmlinux 0x66a02b10 pinconf_generic_dt_subnode_to_map +EXPORT_SYMBOL_GPL vmlinux 0x66c36240 gpiod_get_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x66c6b8a7 tcp_ca_get_name_by_key +EXPORT_SYMBOL_GPL vmlinux 0x66d37a45 iommu_attach_device +EXPORT_SYMBOL_GPL vmlinux 0x66d87d38 symbol_put_addr +EXPORT_SYMBOL_GPL vmlinux 0x66eb953f snd_soc_dai_set_pll +EXPORT_SYMBOL_GPL vmlinux 0x66f952e0 fwnode_property_read_string +EXPORT_SYMBOL_GPL vmlinux 0x6701b167 usb_store_new_id +EXPORT_SYMBOL_GPL vmlinux 0x6703ea76 omap_dm_timer_set_prescaler +EXPORT_SYMBOL_GPL vmlinux 0x6712d9d4 dev_attr_link_power_management_policy +EXPORT_SYMBOL_GPL vmlinux 0x672257e3 get_task_comm +EXPORT_SYMBOL_GPL vmlinux 0x6738fe3f ipv6_recv_error +EXPORT_SYMBOL_GPL vmlinux 0x673b5656 bpf_prog_realloc +EXPORT_SYMBOL_GPL vmlinux 0x674589b3 fat_time_unix2fat +EXPORT_SYMBOL_GPL vmlinux 0x674e13e1 public_key_destroy +EXPORT_SYMBOL_GPL vmlinux 0x6754ac18 clk_get_parent_by_index +EXPORT_SYMBOL_GPL vmlinux 0x675941d0 tpm_chip_unregister +EXPORT_SYMBOL_GPL vmlinux 0x676e8dbc dev_pm_qos_add_request +EXPORT_SYMBOL_GPL vmlinux 0x6783ab47 snd_ctl_activate_id +EXPORT_SYMBOL_GPL vmlinux 0x6784d258 of_clk_set_defaults +EXPORT_SYMBOL_GPL vmlinux 0x6790d00e snd_soc_register_platform +EXPORT_SYMBOL_GPL vmlinux 0x67955ce6 profile_hits +EXPORT_SYMBOL_GPL vmlinux 0x67d25cc5 device_show_bool +EXPORT_SYMBOL_GPL vmlinux 0x67f0d817 wakeup_source_create +EXPORT_SYMBOL_GPL vmlinux 0x67f5f93a uart_handle_dcd_change +EXPORT_SYMBOL_GPL vmlinux 0x680c1483 ata_bmdma_stop +EXPORT_SYMBOL_GPL vmlinux 0x6857d1d0 xfrm_output_resume +EXPORT_SYMBOL_GPL vmlinux 0x685b15be alarm_try_to_cancel +EXPORT_SYMBOL_GPL vmlinux 0x6888a5c9 __pm_relax +EXPORT_SYMBOL_GPL vmlinux 0x68a6db44 blk_execute_rq_nowait +EXPORT_SYMBOL_GPL vmlinux 0x68b289d7 spi_alloc_device +EXPORT_SYMBOL_GPL vmlinux 0x68c04f2d crypto_unregister_ahash +EXPORT_SYMBOL_GPL vmlinux 0x68e47b2c cpdma_ctlr_destroy +EXPORT_SYMBOL_GPL vmlinux 0x6923ce63 irq_work_sync +EXPORT_SYMBOL_GPL vmlinux 0x692b0692 irq_domain_associate_many +EXPORT_SYMBOL_GPL vmlinux 0x69447467 ring_buffer_write +EXPORT_SYMBOL_GPL vmlinux 0x6945725e mpi_read_raw_data +EXPORT_SYMBOL_GPL vmlinux 0x694be42a usb_show_dynids +EXPORT_SYMBOL_GPL vmlinux 0x69732549 mtd_get_unmapped_area +EXPORT_SYMBOL_GPL vmlinux 0x697731c9 pm_generic_suspend_late +EXPORT_SYMBOL_GPL vmlinux 0x697c5d0d tracing_snapshot_alloc +EXPORT_SYMBOL_GPL vmlinux 0x6982d416 vfs_setxattr +EXPORT_SYMBOL_GPL vmlinux 0x698a899f ring_buffer_peek +EXPORT_SYMBOL_GPL vmlinux 0x69a3e6e3 ata_sff_dev_classify +EXPORT_SYMBOL_GPL vmlinux 0x69e67f16 omap_dm_timer_set_load_start +EXPORT_SYMBOL_GPL vmlinux 0x69f12c05 pl08x_filter_id +EXPORT_SYMBOL_GPL vmlinux 0x69fa1227 irq_of_parse_and_map +EXPORT_SYMBOL_GPL vmlinux 0x69fea0ff led_trigger_set +EXPORT_SYMBOL_GPL vmlinux 0x6a10eeae tasklet_hrtimer_init +EXPORT_SYMBOL_GPL vmlinux 0x6a14b62f sdio_memcpy_fromio +EXPORT_SYMBOL_GPL vmlinux 0x6a1733eb iommu_group_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x6a1fbe3a serial8250_get_port +EXPORT_SYMBOL_GPL vmlinux 0x6a37e08d unregister_net_sysctl_table +EXPORT_SYMBOL_GPL vmlinux 0x6a441db8 __tracepoint_block_unplug +EXPORT_SYMBOL_GPL vmlinux 0x6a493c14 disk_part_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0x6a4dab01 snd_device_initialize +EXPORT_SYMBOL_GPL vmlinux 0x6a4e1f15 pci_enable_pcie_error_reporting +EXPORT_SYMBOL_GPL vmlinux 0x6a4f623b mmu_notifier_synchronize +EXPORT_SYMBOL_GPL vmlinux 0x6a5fb566 rcu_sched_force_quiescent_state +EXPORT_SYMBOL_GPL vmlinux 0x6a886030 of_property_match_string +EXPORT_SYMBOL_GPL vmlinux 0x6a95eae4 get_net_ns_by_pid +EXPORT_SYMBOL_GPL vmlinux 0x6aa14981 device_bind_driver +EXPORT_SYMBOL_GPL vmlinux 0x6afc0790 tcp_peer_is_proven +EXPORT_SYMBOL_GPL vmlinux 0x6b06e25b ahci_kick_engine +EXPORT_SYMBOL_GPL vmlinux 0x6b12c947 __mnt_drop_write +EXPORT_SYMBOL_GPL vmlinux 0x6b1c7029 __gpiod_get_index +EXPORT_SYMBOL_GPL vmlinux 0x6b2889b4 ata_do_dev_read_id +EXPORT_SYMBOL_GPL vmlinux 0x6b29a1fa ring_buffer_event_length +EXPORT_SYMBOL_GPL vmlinux 0x6b313232 inet_csk_get_port +EXPORT_SYMBOL_GPL vmlinux 0x6b369f7e ata_host_alloc +EXPORT_SYMBOL_GPL vmlinux 0x6b3951cc dev_pm_opp_remove +EXPORT_SYMBOL_GPL vmlinux 0x6b440e4a pinctrl_register +EXPORT_SYMBOL_GPL vmlinux 0x6b45e902 of_modalias_node +EXPORT_SYMBOL_GPL vmlinux 0x6b50f9e3 __mmu_notifier_invalidate_range_start +EXPORT_SYMBOL_GPL vmlinux 0x6b55190e ata_sff_freeze +EXPORT_SYMBOL_GPL vmlinux 0x6b58c1e2 usb_hcd_pci_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x6b69f7a8 cpufreq_freq_attr_scaling_available_freqs +EXPORT_SYMBOL_GPL vmlinux 0x6b723773 crypto_ahash_walk_first +EXPORT_SYMBOL_GPL vmlinux 0x6b770f49 decode_bch +EXPORT_SYMBOL_GPL vmlinux 0x6b81c38b power_supply_unreg_notifier +EXPORT_SYMBOL_GPL vmlinux 0x6b856234 ahci_reset_em +EXPORT_SYMBOL_GPL vmlinux 0x6b9fa7e2 unregister_virtio_driver +EXPORT_SYMBOL_GPL vmlinux 0x6ba259c6 of_fixed_factor_clk_setup +EXPORT_SYMBOL_GPL vmlinux 0x6bb00ebc shash_free_instance +EXPORT_SYMBOL_GPL vmlinux 0x6bb554c8 irq_set_chained_handler_and_data +EXPORT_SYMBOL_GPL vmlinux 0x6bc2edfa unregister_ftrace_function +EXPORT_SYMBOL_GPL vmlinux 0x6bdb3412 unregister_pernet_subsys +EXPORT_SYMBOL_GPL vmlinux 0x6be5fc0c snd_soc_suspend +EXPORT_SYMBOL_GPL vmlinux 0x6bf09a97 usb_hub_claim_port +EXPORT_SYMBOL_GPL vmlinux 0x6bf16cea irq_find_host +EXPORT_SYMBOL_GPL vmlinux 0x6bf8a120 dev_pm_qos_hide_flags +EXPORT_SYMBOL_GPL vmlinux 0x6c07d933 add_uevent_var +EXPORT_SYMBOL_GPL vmlinux 0x6c0f4431 mpc8xxx_spi_tx_buf_u16 +EXPORT_SYMBOL_GPL vmlinux 0x6c1be01c register_wide_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x6c209eab __alloc_percpu_gfp +EXPORT_SYMBOL_GPL vmlinux 0x6c4b6684 reset_control_assert +EXPORT_SYMBOL_GPL vmlinux 0x6c5d106c __blk_put_request +EXPORT_SYMBOL_GPL vmlinux 0x6c773a24 snd_soc_put_volsw_range +EXPORT_SYMBOL_GPL vmlinux 0x6c79d155 sysfs_create_file_ns +EXPORT_SYMBOL_GPL vmlinux 0x6c80e0f6 blocking_notifier_chain_cond_register +EXPORT_SYMBOL_GPL vmlinux 0x6c971347 ehci_adjust_port_wakeup_flags +EXPORT_SYMBOL_GPL vmlinux 0x6ca172bf irq_set_default_host +EXPORT_SYMBOL_GPL vmlinux 0x6ca4bf88 async_synchronize_full_domain +EXPORT_SYMBOL_GPL vmlinux 0x6cab56a8 sdhci_pltfm_resume +EXPORT_SYMBOL_GPL vmlinux 0x6cb7ea81 rtc_read_time +EXPORT_SYMBOL_GPL vmlinux 0x6cba863b regulator_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x6cbe9a0d rtc_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x6cc394ee tps6586x_reads +EXPORT_SYMBOL_GPL vmlinux 0x6cc3d600 usb_hcd_unmap_urb_setup_for_dma +EXPORT_SYMBOL_GPL vmlinux 0x6cc78c5c set_irq_flags +EXPORT_SYMBOL_GPL vmlinux 0x6ccdd4af inet_getpeer +EXPORT_SYMBOL_GPL vmlinux 0x6ccfbdec mtd_read +EXPORT_SYMBOL_GPL vmlinux 0x6cd21997 ata_tf_to_fis +EXPORT_SYMBOL_GPL vmlinux 0x6cd69f01 usb_phy_generic_unregister +EXPORT_SYMBOL_GPL vmlinux 0x6d0048aa snd_soc_get_xr_sx +EXPORT_SYMBOL_GPL vmlinux 0x6d12f009 regulator_list_voltage +EXPORT_SYMBOL_GPL vmlinux 0x6d160edd crypto_aes_set_key +EXPORT_SYMBOL_GPL vmlinux 0x6d1be258 gpiod_set_raw_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x6d2fc5a6 net_namespace_list +EXPORT_SYMBOL_GPL vmlinux 0x6d3c5b05 ata_scsi_slave_config +EXPORT_SYMBOL_GPL vmlinux 0x6d424356 register_kprobes +EXPORT_SYMBOL_GPL vmlinux 0x6d779306 __fat_fs_error +EXPORT_SYMBOL_GPL vmlinux 0x6d7fe5f4 raw_seq_stop +EXPORT_SYMBOL_GPL vmlinux 0x6d95cf36 snd_soc_jack_free_gpios +EXPORT_SYMBOL_GPL vmlinux 0x6d995ccf serial8250_request_dma +EXPORT_SYMBOL_GPL vmlinux 0x6d9e6969 pm_generic_suspend_noirq +EXPORT_SYMBOL_GPL vmlinux 0x6dab0088 tpm2_probe +EXPORT_SYMBOL_GPL vmlinux 0x6db77456 phy_pm_runtime_get +EXPORT_SYMBOL_GPL vmlinux 0x6db9fe6f extcon_set_state +EXPORT_SYMBOL_GPL vmlinux 0x6dec7ed8 led_trigger_blink_oneshot +EXPORT_SYMBOL_GPL vmlinux 0x6e04a077 usb_bind_phy +EXPORT_SYMBOL_GPL vmlinux 0x6e2716c2 irq_setup_alt_chip +EXPORT_SYMBOL_GPL vmlinux 0x6e329120 fat_dir_empty +EXPORT_SYMBOL_GPL vmlinux 0x6e367534 kernfs_find_and_get_ns +EXPORT_SYMBOL_GPL vmlinux 0x6e3ebdfb pwm_config +EXPORT_SYMBOL_GPL vmlinux 0x6e41b19b debugfs_create_u8 +EXPORT_SYMBOL_GPL vmlinux 0x6e4dc4b2 __i2c_board_lock +EXPORT_SYMBOL_GPL vmlinux 0x6e506049 device_attach +EXPORT_SYMBOL_GPL vmlinux 0x6e51afc8 percpu_ref_kill_and_confirm +EXPORT_SYMBOL_GPL vmlinux 0x6e7943ec iommu_group_id +EXPORT_SYMBOL_GPL vmlinux 0x6e847c4a dbs_check_cpu +EXPORT_SYMBOL_GPL vmlinux 0x6e85fcd2 rdev_set_badblocks +EXPORT_SYMBOL_GPL vmlinux 0x6e89a560 regmap_irq_chip_get_base +EXPORT_SYMBOL_GPL vmlinux 0x6e92eb36 bmp085_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0x6ea75fbd snd_soc_dapm_get_pin_status +EXPORT_SYMBOL_GPL vmlinux 0x6ec80784 bgpio_init +EXPORT_SYMBOL_GPL vmlinux 0x6f07327e regulator_get +EXPORT_SYMBOL_GPL vmlinux 0x6f0fa6fb inet_unhash +EXPORT_SYMBOL_GPL vmlinux 0x6f1ee69e kgdb_unregister_io_module +EXPORT_SYMBOL_GPL vmlinux 0x6f639300 pci_vfs_assigned +EXPORT_SYMBOL_GPL vmlinux 0x6f66deb4 reset_controller_unregister +EXPORT_SYMBOL_GPL vmlinux 0x6f7f7c25 usb_autopm_put_interface_async +EXPORT_SYMBOL_GPL vmlinux 0x6f89e2ca device_set_wakeup_enable +EXPORT_SYMBOL_GPL vmlinux 0x6fa10922 crypto_init_spawn +EXPORT_SYMBOL_GPL vmlinux 0x6faa51ff tty_ldisc_ref_wait +EXPORT_SYMBOL_GPL vmlinux 0x6fbb3bd9 init_rs_non_canonical +EXPORT_SYMBOL_GPL vmlinux 0x6fe3d8cf ktime_add_safe +EXPORT_SYMBOL_GPL vmlinux 0x6ff607b6 crypto_get_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x7056b6f2 __clk_get_name +EXPORT_SYMBOL_GPL vmlinux 0x7063da7d wm5102_spi_regmap +EXPORT_SYMBOL_GPL vmlinux 0x70642dee imx_pcm_fiq_init +EXPORT_SYMBOL_GPL vmlinux 0x7078c530 __ata_ehi_push_desc +EXPORT_SYMBOL_GPL vmlinux 0x707ff1bb ata_xfer_mask2mode +EXPORT_SYMBOL_GPL vmlinux 0x7088979b input_ff_destroy +EXPORT_SYMBOL_GPL vmlinux 0x708e169f ata_sff_exec_command +EXPORT_SYMBOL_GPL vmlinux 0x709683a6 mmc_regulator_get_supply +EXPORT_SYMBOL_GPL vmlinux 0x70ab86c8 wm8350_reg_lock +EXPORT_SYMBOL_GPL vmlinux 0x70c045bf device_property_read_u64_array +EXPORT_SYMBOL_GPL vmlinux 0x70c8f87f nf_register_afinfo +EXPORT_SYMBOL_GPL vmlinux 0x70cf032f usb_hcd_irq +EXPORT_SYMBOL_GPL vmlinux 0x70d9bd48 ata_qc_complete_multiple +EXPORT_SYMBOL_GPL vmlinux 0x71008581 atomic_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x7100a346 mddev_suspend +EXPORT_SYMBOL_GPL vmlinux 0x710c73b6 crypto_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x7113cd73 mmu_notifier_unregister_no_release +EXPORT_SYMBOL_GPL vmlinux 0x715eab31 irq_get_irq_data +EXPORT_SYMBOL_GPL vmlinux 0x715f53ea screen_glyph +EXPORT_SYMBOL_GPL vmlinux 0x716265c7 debugfs_initialized +EXPORT_SYMBOL_GPL vmlinux 0x719e17ff clk_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0x71a022ce usb_hub_release_port +EXPORT_SYMBOL_GPL vmlinux 0x71a85af3 led_trigger_register_simple +EXPORT_SYMBOL_GPL vmlinux 0x71d05454 show_class_attr_string +EXPORT_SYMBOL_GPL vmlinux 0x71dc9998 crypto_il_tab +EXPORT_SYMBOL_GPL vmlinux 0x72160184 ata_bmdma_qc_issue +EXPORT_SYMBOL_GPL vmlinux 0x72234dd6 musb_readw +EXPORT_SYMBOL_GPL vmlinux 0x722bde3f gpiod_set_raw_array_value +EXPORT_SYMBOL_GPL vmlinux 0x723e2600 blk_queue_dma_drain +EXPORT_SYMBOL_GPL vmlinux 0x72515d5a snprint_stack_trace +EXPORT_SYMBOL_GPL vmlinux 0x72598989 snd_soc_component_update_bits +EXPORT_SYMBOL_GPL vmlinux 0x72609631 serial8250_tx_chars +EXPORT_SYMBOL_GPL vmlinux 0x72741f25 trace_vbprintk +EXPORT_SYMBOL_GPL vmlinux 0x7278d328 all_vm_events +EXPORT_SYMBOL_GPL vmlinux 0x727b7093 pm_relax +EXPORT_SYMBOL_GPL vmlinux 0x7291019b __cci_control_port_by_index +EXPORT_SYMBOL_GPL vmlinux 0x72aa0071 phy_pm_runtime_forbid +EXPORT_SYMBOL_GPL vmlinux 0x72b2585a usb_gadget_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0x72c51eb2 snd_compress_new +EXPORT_SYMBOL_GPL vmlinux 0x72dc7f91 blk_add_driver_data +EXPORT_SYMBOL_GPL vmlinux 0x72dd78bf rtc_alarm_irq_enable +EXPORT_SYMBOL_GPL vmlinux 0x72ed89d3 edac_subsys +EXPORT_SYMBOL_GPL vmlinux 0x73018661 ahci_port_resume +EXPORT_SYMBOL_GPL vmlinux 0x730bd0c7 asic3_write_register +EXPORT_SYMBOL_GPL vmlinux 0x732276db pm_runtime_set_autosuspend_delay +EXPORT_SYMBOL_GPL vmlinux 0x733cdfa7 __udp6_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x73493c6b reset_controller_register +EXPORT_SYMBOL_GPL vmlinux 0x73510609 fl6_update_dst +EXPORT_SYMBOL_GPL vmlinux 0x7362bdc5 pci_dev_run_wake +EXPORT_SYMBOL_GPL vmlinux 0x736ef278 fuse_abort_conn +EXPORT_SYMBOL_GPL vmlinux 0x739c03be udp4_hwcsum +EXPORT_SYMBOL_GPL vmlinux 0x73a48b4a ata_sff_std_ports +EXPORT_SYMBOL_GPL vmlinux 0x73a58e3e crypto_lookup_template +EXPORT_SYMBOL_GPL vmlinux 0x73b98231 asymmetric_key_generate_id +EXPORT_SYMBOL_GPL vmlinux 0x73c832f2 ata_dev_classify +EXPORT_SYMBOL_GPL vmlinux 0x73d69364 ring_buffer_change_overwrite +EXPORT_SYMBOL_GPL vmlinux 0x73e33813 mtd_writev +EXPORT_SYMBOL_GPL vmlinux 0x73ee71c5 skb_to_sgvec +EXPORT_SYMBOL_GPL vmlinux 0x74283370 mtd_write_user_prot_reg +EXPORT_SYMBOL_GPL vmlinux 0x742def44 __tracepoint_block_bio_remap +EXPORT_SYMBOL_GPL vmlinux 0x743a165e ata_pack_xfermask +EXPORT_SYMBOL_GPL vmlinux 0x7464ea38 dev_pm_qos_add_global_notifier +EXPORT_SYMBOL_GPL vmlinux 0x746d1e5f __irq_set_handler +EXPORT_SYMBOL_GPL vmlinux 0x74717d90 usb_match_one_id +EXPORT_SYMBOL_GPL vmlinux 0x748d801a pcap_adc_sync +EXPORT_SYMBOL_GPL vmlinux 0x74980f9b ata_link_abort +EXPORT_SYMBOL_GPL vmlinux 0x74af8404 __clk_mux_determine_rate_closest +EXPORT_SYMBOL_GPL vmlinux 0x74b5ea68 lcm_not_zero +EXPORT_SYMBOL_GPL vmlinux 0x74b8a442 split_page +EXPORT_SYMBOL_GPL vmlinux 0x74baf17a tracing_is_on +EXPORT_SYMBOL_GPL vmlinux 0x74c2759e skb_zerocopy +EXPORT_SYMBOL_GPL vmlinux 0x74ef0d4f sysfs_update_group +EXPORT_SYMBOL_GPL vmlinux 0x7522f3ba irq_modify_status +EXPORT_SYMBOL_GPL vmlinux 0x7538381c get_net_ns_by_fd +EXPORT_SYMBOL_GPL vmlinux 0x753fc238 pci_bus_add_device +EXPORT_SYMBOL_GPL vmlinux 0x75562846 mount_mtd +EXPORT_SYMBOL_GPL vmlinux 0x75884e9a device_move +EXPORT_SYMBOL_GPL vmlinux 0x758a782e blk_fill_rwbs +EXPORT_SYMBOL_GPL vmlinux 0x75980220 dev_pm_qos_remove_request +EXPORT_SYMBOL_GPL vmlinux 0x75ce7078 usb_choose_configuration +EXPORT_SYMBOL_GPL vmlinux 0x75fad0f2 sdio_claim_irq +EXPORT_SYMBOL_GPL vmlinux 0x7607db73 mddev_resume +EXPORT_SYMBOL_GPL vmlinux 0x761981c4 snd_soc_component_update_bits_async +EXPORT_SYMBOL_GPL vmlinux 0x761e0aca btree_get_prev +EXPORT_SYMBOL_GPL vmlinux 0x7622b63c driver_register +EXPORT_SYMBOL_GPL vmlinux 0x762d1da8 __gpiod_get_optional +EXPORT_SYMBOL_GPL vmlinux 0x764928a2 cpdma_chan_create +EXPORT_SYMBOL_GPL vmlinux 0x767c7659 pci_reset_slot +EXPORT_SYMBOL_GPL vmlinux 0x7681946c unregister_pm_notifier +EXPORT_SYMBOL_GPL vmlinux 0x76968f9c device_del +EXPORT_SYMBOL_GPL vmlinux 0x76ac70a7 devm_usb_get_phy_dev +EXPORT_SYMBOL_GPL vmlinux 0x76ae8b64 pci_create_root_bus +EXPORT_SYMBOL_GPL vmlinux 0x76b2c570 xfrm_audit_state_replay +EXPORT_SYMBOL_GPL vmlinux 0x76d9b876 clk_set_rate +EXPORT_SYMBOL_GPL vmlinux 0x76e65934 power_supply_property_is_writeable +EXPORT_SYMBOL_GPL vmlinux 0x76eb3419 ipv4_sk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x770cf981 tpm_send +EXPORT_SYMBOL_GPL vmlinux 0x772734b6 snd_soc_dpcm_fe_can_update +EXPORT_SYMBOL_GPL vmlinux 0x7729cbdd task_handoff_register +EXPORT_SYMBOL_GPL vmlinux 0x773effa2 xhci_suspend +EXPORT_SYMBOL_GPL vmlinux 0x773f3a6b pci_cfg_access_trylock +EXPORT_SYMBOL_GPL vmlinux 0x7744aa27 __dma_request_channel +EXPORT_SYMBOL_GPL vmlinux 0x7754bc11 dm_hold +EXPORT_SYMBOL_GPL vmlinux 0x7757b51a clk_unregister +EXPORT_SYMBOL_GPL vmlinux 0x77616a2d snd_soc_add_component_controls +EXPORT_SYMBOL_GPL vmlinux 0x7765e568 snd_pcm_stream_lock_irq +EXPORT_SYMBOL_GPL vmlinux 0x7774dbfa ata_host_resume +EXPORT_SYMBOL_GPL vmlinux 0x77799de6 irq_remove_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x77844664 tty_ldisc_deref +EXPORT_SYMBOL_GPL vmlinux 0x7794df46 nand_release +EXPORT_SYMBOL_GPL vmlinux 0x779d864a inet_csk_listen_start +EXPORT_SYMBOL_GPL vmlinux 0x77ac7ebc unregister_wide_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x77d10f19 devm_usb_get_phy_by_node +EXPORT_SYMBOL_GPL vmlinux 0x77e0a661 bd_unlink_disk_holder +EXPORT_SYMBOL_GPL vmlinux 0x77ef39ec simple_attr_write +EXPORT_SYMBOL_GPL vmlinux 0x77f85b07 of_display_timings_exist +EXPORT_SYMBOL_GPL vmlinux 0x77fa45d1 ata_sff_check_status +EXPORT_SYMBOL_GPL vmlinux 0x77fe95c5 ata_dev_disable +EXPORT_SYMBOL_GPL vmlinux 0x78041801 arm_iommu_create_mapping +EXPORT_SYMBOL_GPL vmlinux 0x7809c586 devm_power_supply_get_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0x78368c02 dev_pm_opp_get_freq +EXPORT_SYMBOL_GPL vmlinux 0x78584c76 ping_seq_stop +EXPORT_SYMBOL_GPL vmlinux 0x7899aaa4 crypto_register_akcipher +EXPORT_SYMBOL_GPL vmlinux 0x789c9cd2 cpuidle_register +EXPORT_SYMBOL_GPL vmlinux 0x789fd78f mddev_unlock +EXPORT_SYMBOL_GPL vmlinux 0x78ae8175 smp_call_function_single_async +EXPORT_SYMBOL_GPL vmlinux 0x78e23501 unix_outq_len +EXPORT_SYMBOL_GPL vmlinux 0x7923d6f4 ata_pci_device_suspend +EXPORT_SYMBOL_GPL vmlinux 0x7944e0fc tracing_off +EXPORT_SYMBOL_GPL vmlinux 0x794b7271 orderly_reboot +EXPORT_SYMBOL_GPL vmlinux 0x794e85a2 tpm2_startup +EXPORT_SYMBOL_GPL vmlinux 0x7966a4a3 pinctrl_find_gpio_range_from_pin +EXPORT_SYMBOL_GPL vmlinux 0x796c2d48 dm_get_md +EXPORT_SYMBOL_GPL vmlinux 0x797c342a iommu_set_fault_handler +EXPORT_SYMBOL_GPL vmlinux 0x79976384 mpc8xxx_spi_tx_buf_u8 +EXPORT_SYMBOL_GPL vmlinux 0x79c01062 proc_mkdir_data +EXPORT_SYMBOL_GPL vmlinux 0x79c528a9 devm_get_free_pages +EXPORT_SYMBOL_GPL vmlinux 0x79d07e29 pci_user_write_config_byte +EXPORT_SYMBOL_GPL vmlinux 0x79de964b stmpe_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x79defbe1 kthread_should_park +EXPORT_SYMBOL_GPL vmlinux 0x79f41d5b try_get_online_cpus +EXPORT_SYMBOL_GPL vmlinux 0x7a0f028e snd_soc_platform_trigger +EXPORT_SYMBOL_GPL vmlinux 0x7a13bcaf do_take_over_console +EXPORT_SYMBOL_GPL vmlinux 0x7a2689a3 devm_regmap_field_free +EXPORT_SYMBOL_GPL vmlinux 0x7a2e4b44 ezx_pcap_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x7a311872 skb_scrub_packet +EXPORT_SYMBOL_GPL vmlinux 0x7a319404 clk_register_fixed_rate +EXPORT_SYMBOL_GPL vmlinux 0x7a4eb7da crypto_register_alg +EXPORT_SYMBOL_GPL vmlinux 0x7a57aaa7 bus_find_device_by_name +EXPORT_SYMBOL_GPL vmlinux 0x7a6ed933 blkcipher_walk_virt +EXPORT_SYMBOL_GPL vmlinux 0x7a77009f fuse_put_request +EXPORT_SYMBOL_GPL vmlinux 0x7a777840 usb_deregister +EXPORT_SYMBOL_GPL vmlinux 0x7a850d30 tps65912_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x7a89e1f0 cpufreq_cpu_put +EXPORT_SYMBOL_GPL vmlinux 0x7a8b79c1 verify_signature +EXPORT_SYMBOL_GPL vmlinux 0x7a944007 rcu_idle_enter +EXPORT_SYMBOL_GPL vmlinux 0x7a9d2a53 xfrm_local_error +EXPORT_SYMBOL_GPL vmlinux 0x7ab3ca18 eventfd_ctx_read +EXPORT_SYMBOL_GPL vmlinux 0x7ab84b55 ping_hash +EXPORT_SYMBOL_GPL vmlinux 0x7b080bcd regulator_get_linear_step +EXPORT_SYMBOL_GPL vmlinux 0x7b0f1ab3 ring_buffer_free_read_page +EXPORT_SYMBOL_GPL vmlinux 0x7b1d544d edac_handler_set +EXPORT_SYMBOL_GPL vmlinux 0x7b21f2e3 trace_define_field +EXPORT_SYMBOL_GPL vmlinux 0x7b309f87 __bpf_prog_free +EXPORT_SYMBOL_GPL vmlinux 0x7b5495ee con_debug_enter +EXPORT_SYMBOL_GPL vmlinux 0x7b906eab mpc8xxx_spi_remove +EXPORT_SYMBOL_GPL vmlinux 0x7be4aabd __of_genpd_xlate_simple +EXPORT_SYMBOL_GPL vmlinux 0x7c0074ef usb_register_dev +EXPORT_SYMBOL_GPL vmlinux 0x7c064193 device_remove_file +EXPORT_SYMBOL_GPL vmlinux 0x7c1ac2ce snd_soc_bytes_get +EXPORT_SYMBOL_GPL vmlinux 0x7c1b014c device_for_each_child +EXPORT_SYMBOL_GPL vmlinux 0x7c346357 pkey_algo +EXPORT_SYMBOL_GPL vmlinux 0x7c5d1e6f amba_device_put +EXPORT_SYMBOL_GPL vmlinux 0x7c5e81e8 snd_soc_jack_get_type +EXPORT_SYMBOL_GPL vmlinux 0x7c6a49ce unix_table_lock +EXPORT_SYMBOL_GPL vmlinux 0x7c7da8b7 regulator_enable_regmap +EXPORT_SYMBOL_GPL vmlinux 0x7c89702d ftrace_set_filter +EXPORT_SYMBOL_GPL vmlinux 0x7c95de28 devm_pinctrl_get +EXPORT_SYMBOL_GPL vmlinux 0x7c9a7371 clk_prepare +EXPORT_SYMBOL_GPL vmlinux 0x7c9cca56 list_lru_count_node +EXPORT_SYMBOL_GPL vmlinux 0x7caced1b dma_buf_vunmap +EXPORT_SYMBOL_GPL vmlinux 0x7cd6f042 cpufreq_get_current_driver +EXPORT_SYMBOL_GPL vmlinux 0x7cd81e7e bdev_read_page +EXPORT_SYMBOL_GPL vmlinux 0x7ce05cdd of_property_count_elems_of_size +EXPORT_SYMBOL_GPL vmlinux 0x7ceaf0d5 generic_handle_irq +EXPORT_SYMBOL_GPL vmlinux 0x7d118dda of_init_opp_table +EXPORT_SYMBOL_GPL vmlinux 0x7d17fa09 regulator_put +EXPORT_SYMBOL_GPL vmlinux 0x7d59dd46 pm_wq +EXPORT_SYMBOL_GPL vmlinux 0x7d738b63 gpio_to_desc +EXPORT_SYMBOL_GPL vmlinux 0x7d8a9f69 crypto_init_spawn2 +EXPORT_SYMBOL_GPL vmlinux 0x7dab26b6 wm831x_isinkv_values +EXPORT_SYMBOL_GPL vmlinux 0x7dabe064 snd_soc_dapm_put_pin_switch +EXPORT_SYMBOL_GPL vmlinux 0x7daf6b53 crypto_grab_aead +EXPORT_SYMBOL_GPL vmlinux 0x7db21987 __class_create +EXPORT_SYMBOL_GPL vmlinux 0x7db7c1a8 da903x_reads +EXPORT_SYMBOL_GPL vmlinux 0x7dc23851 pm_stay_awake +EXPORT_SYMBOL_GPL vmlinux 0x7dc28c4d of_pci_find_child_device +EXPORT_SYMBOL_GPL vmlinux 0x7dda30af unregister_tracepoint_module_notifier +EXPORT_SYMBOL_GPL vmlinux 0x7de0fc55 of_dma_xlate_by_chan_id +EXPORT_SYMBOL_GPL vmlinux 0x7e0257fc scsi_internal_device_block +EXPORT_SYMBOL_GPL vmlinux 0x7e201bd0 trace_event_reg +EXPORT_SYMBOL_GPL vmlinux 0x7e2203e9 blk_rq_unprep_clone +EXPORT_SYMBOL_GPL vmlinux 0x7e2840b6 device_for_each_child_reverse +EXPORT_SYMBOL_GPL vmlinux 0x7e42ba67 pm_generic_resume_noirq +EXPORT_SYMBOL_GPL vmlinux 0x7e47fc7d unregister_pernet_device +EXPORT_SYMBOL_GPL vmlinux 0x7e5a2d4e platform_get_resource_byname +EXPORT_SYMBOL_GPL vmlinux 0x7e5e3a40 xfrm_audit_state_notfound +EXPORT_SYMBOL_GPL vmlinux 0x7e606130 snd_soc_calc_bclk +EXPORT_SYMBOL_GPL vmlinux 0x7e64181d usb_calc_bus_time +EXPORT_SYMBOL_GPL vmlinux 0x7e6adafc dev_pm_qos_remove_notifier +EXPORT_SYMBOL_GPL vmlinux 0x7e869a81 regmap_fields_read +EXPORT_SYMBOL_GPL vmlinux 0x7e882b77 virtqueue_get_used +EXPORT_SYMBOL_GPL vmlinux 0x7e9a9ea8 regulator_sync_voltage +EXPORT_SYMBOL_GPL vmlinux 0x7e9ac389 remove_irq +EXPORT_SYMBOL_GPL vmlinux 0x7eade9e9 snd_device_disconnect +EXPORT_SYMBOL_GPL vmlinux 0x7ebd4bf9 virtqueue_add_sgs +EXPORT_SYMBOL_GPL vmlinux 0x7ec11910 cpufreq_freq_transition_begin +EXPORT_SYMBOL_GPL vmlinux 0x7ed2f0d3 phy_put +EXPORT_SYMBOL_GPL vmlinux 0x7ed68941 asic3_read_register +EXPORT_SYMBOL_GPL vmlinux 0x7ed71195 pinctrl_get +EXPORT_SYMBOL_GPL vmlinux 0x7ef29cc6 of_get_nand_ecc_step_size +EXPORT_SYMBOL_GPL vmlinux 0x7f50d48d crypto_alloc_instance2 +EXPORT_SYMBOL_GPL vmlinux 0x7f55b2be thermal_zone_device_register +EXPORT_SYMBOL_GPL vmlinux 0x7fa49629 regulator_force_disable +EXPORT_SYMBOL_GPL vmlinux 0x7fbb5711 probes_decode_arm_table +EXPORT_SYMBOL_GPL vmlinux 0x80021da0 ata_bmdma_setup +EXPORT_SYMBOL_GPL vmlinux 0x800a3260 mmc_app_cmd +EXPORT_SYMBOL_GPL vmlinux 0x801019cf key_type_asymmetric +EXPORT_SYMBOL_GPL vmlinux 0x8010d2c6 percpu_ida_free +EXPORT_SYMBOL_GPL vmlinux 0x802d17b0 devm_led_classdev_unregister +EXPORT_SYMBOL_GPL vmlinux 0x804fb48d irq_create_of_mapping +EXPORT_SYMBOL_GPL vmlinux 0x8065a4fc mmu_notifier_call_srcu +EXPORT_SYMBOL_GPL vmlinux 0x806799e0 usb_unpoison_urb +EXPORT_SYMBOL_GPL vmlinux 0x808ec1a3 crypto_alg_tested +EXPORT_SYMBOL_GPL vmlinux 0x80b0df5a led_trigger_store +EXPORT_SYMBOL_GPL vmlinux 0x80c68137 nf_log_buf_close +EXPORT_SYMBOL_GPL vmlinux 0x80c9e5b2 dev_coredumpv +EXPORT_SYMBOL_GPL vmlinux 0x80caca98 do_unregister_con_driver +EXPORT_SYMBOL_GPL vmlinux 0x80d5e57a mpi_free +EXPORT_SYMBOL_GPL vmlinux 0x80de9020 iommu_domain_set_attr +EXPORT_SYMBOL_GPL vmlinux 0x80ee7b3a dma_get_slave_channel +EXPORT_SYMBOL_GPL vmlinux 0x80f2b34c fat_flush_inodes +EXPORT_SYMBOL_GPL vmlinux 0x80f3268f __trace_printk +EXPORT_SYMBOL_GPL vmlinux 0x80f8589f trace_seq_putc +EXPORT_SYMBOL_GPL vmlinux 0x8114467b cn_netlink_send_mult +EXPORT_SYMBOL_GPL vmlinux 0x811dc334 usb_unregister_notify +EXPORT_SYMBOL_GPL vmlinux 0x8149ea54 ata_timing_find_mode +EXPORT_SYMBOL_GPL vmlinux 0x815588a6 clk_enable +EXPORT_SYMBOL_GPL vmlinux 0x818f1126 serial8250_modem_status +EXPORT_SYMBOL_GPL vmlinux 0x81c4a51b out_of_line_wait_on_bit_timeout +EXPORT_SYMBOL_GPL vmlinux 0x822ad4c7 percpu_ref_init +EXPORT_SYMBOL_GPL vmlinux 0x8234c172 aead_geniv_alloc +EXPORT_SYMBOL_GPL vmlinux 0x824de6e2 __get_mtd_device +EXPORT_SYMBOL_GPL vmlinux 0x82818bf4 pci_try_reset_bus +EXPORT_SYMBOL_GPL vmlinux 0x829b0266 ohci_suspend +EXPORT_SYMBOL_GPL vmlinux 0x82a236f1 bpf_prog_get +EXPORT_SYMBOL_GPL vmlinux 0x82b285fa srcu_batches_completed +EXPORT_SYMBOL_GPL vmlinux 0x82d17f3e device_set_wakeup_capable +EXPORT_SYMBOL_GPL vmlinux 0x82d79b51 sysctl_vfs_cache_pressure +EXPORT_SYMBOL_GPL vmlinux 0x82ec518b perf_pmu_migrate_context +EXPORT_SYMBOL_GPL vmlinux 0x82fd575c ahash_attr_alg +EXPORT_SYMBOL_GPL vmlinux 0x830e9ce3 usb_hc_died +EXPORT_SYMBOL_GPL vmlinux 0x8320cf8f snd_soc_dapm_force_enable_pin_unlocked +EXPORT_SYMBOL_GPL vmlinux 0x8341b25a virtio_check_driver_offered_feature +EXPORT_SYMBOL_GPL vmlinux 0x834616bb sdev_evt_alloc +EXPORT_SYMBOL_GPL vmlinux 0x83476604 snd_soc_component_test_bits +EXPORT_SYMBOL_GPL vmlinux 0x8347af7d of_platform_depopulate +EXPORT_SYMBOL_GPL vmlinux 0x834f5ac1 gpiochip_set_chained_irqchip +EXPORT_SYMBOL_GPL vmlinux 0x8357964b crypto_unregister_shash +EXPORT_SYMBOL_GPL vmlinux 0x8357a506 usb_sg_init +EXPORT_SYMBOL_GPL vmlinux 0x83695c88 crypto_unregister_instance +EXPORT_SYMBOL_GPL vmlinux 0x836ea389 ata_pci_bmdma_prepare_host +EXPORT_SYMBOL_GPL vmlinux 0x83791044 ata_sas_slave_configure +EXPORT_SYMBOL_GPL vmlinux 0x837ef585 clk_register_gpio_gate +EXPORT_SYMBOL_GPL vmlinux 0x83833809 bpf_prog_destroy +EXPORT_SYMBOL_GPL vmlinux 0x838b13e7 ring_buffer_free +EXPORT_SYMBOL_GPL vmlinux 0x83987c81 wm8350_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x83a63fec devm_remove_action +EXPORT_SYMBOL_GPL vmlinux 0x83b3b802 ata_sff_wait_after_reset +EXPORT_SYMBOL_GPL vmlinux 0x83cd321d regulator_set_bypass_regmap +EXPORT_SYMBOL_GPL vmlinux 0x83f890ee ata_cable_unknown +EXPORT_SYMBOL_GPL vmlinux 0x84001f3a tcp_reno_ssthresh +EXPORT_SYMBOL_GPL vmlinux 0x840800d5 ata_scsi_queuecmd +EXPORT_SYMBOL_GPL vmlinux 0x840d2d33 of_overlay_create +EXPORT_SYMBOL_GPL vmlinux 0x8430a463 of_get_fb_videomode +EXPORT_SYMBOL_GPL vmlinux 0x845ecfb8 ohci_restart +EXPORT_SYMBOL_GPL vmlinux 0x8487cdf7 wm8350_clear_bits +EXPORT_SYMBOL_GPL vmlinux 0x848bd0fb call_srcu +EXPORT_SYMBOL_GPL vmlinux 0x849fe03c rtc_device_register +EXPORT_SYMBOL_GPL vmlinux 0x84b87cde regulator_is_supported_voltage +EXPORT_SYMBOL_GPL vmlinux 0x84d356fa snd_dmaengine_pcm_request_channel +EXPORT_SYMBOL_GPL vmlinux 0x84d938e2 __inet_hash_nolisten +EXPORT_SYMBOL_GPL vmlinux 0x85050965 __irq_alloc_descs +EXPORT_SYMBOL_GPL vmlinux 0x8506baa8 clk_unregister_gate +EXPORT_SYMBOL_GPL vmlinux 0x85216155 ezx_pcap_read +EXPORT_SYMBOL_GPL vmlinux 0x85259c35 iptunnel_handle_offloads +EXPORT_SYMBOL_GPL vmlinux 0x855fa52b gpiod_get_raw_value +EXPORT_SYMBOL_GPL vmlinux 0x85740587 ata_common_sdev_attrs +EXPORT_SYMBOL_GPL vmlinux 0x8574ca6c gpio_request_array +EXPORT_SYMBOL_GPL vmlinux 0x857b4611 __blk_end_request_err +EXPORT_SYMBOL_GPL vmlinux 0x85929534 hrtimer_init +EXPORT_SYMBOL_GPL vmlinux 0x85aeb28b usb_find_interface +EXPORT_SYMBOL_GPL vmlinux 0x85b3a73e fat_sync_inode +EXPORT_SYMBOL_GPL vmlinux 0x85c7f674 ring_buffer_normalize_time_stamp +EXPORT_SYMBOL_GPL vmlinux 0x85e9cb4e pinctrl_add_gpio_ranges +EXPORT_SYMBOL_GPL vmlinux 0x86223a7f cpsw_ale_start +EXPORT_SYMBOL_GPL vmlinux 0x862b9816 cpu_topology +EXPORT_SYMBOL_GPL vmlinux 0x863f2465 md_stop +EXPORT_SYMBOL_GPL vmlinux 0x86617eee irq_gc_ack_set_bit +EXPORT_SYMBOL_GPL vmlinux 0x86786286 klist_add_behind +EXPORT_SYMBOL_GPL vmlinux 0x868784cb __symbol_get +EXPORT_SYMBOL_GPL vmlinux 0x868a07a2 for_each_kernel_tracepoint +EXPORT_SYMBOL_GPL vmlinux 0x869b857f snd_dmaengine_pcm_unregister +EXPORT_SYMBOL_GPL vmlinux 0x869e0324 da903x_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x86ab1c5b rtc_update_irq_enable +EXPORT_SYMBOL_GPL vmlinux 0x86b12374 regmap_fields_write +EXPORT_SYMBOL_GPL vmlinux 0x86c9580a crypto_alg_mod_lookup +EXPORT_SYMBOL_GPL vmlinux 0x86ce74ba tty_buffer_unlock_exclusive +EXPORT_SYMBOL_GPL vmlinux 0x86e8252c pcie_port_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x86e89a95 seq_release_net +EXPORT_SYMBOL_GPL vmlinux 0x86f0796f kill_mtd_super +EXPORT_SYMBOL_GPL vmlinux 0x86f0d974 get_cached_msi_msg +EXPORT_SYMBOL_GPL vmlinux 0x86f6b99d synchronize_rcu_expedited +EXPORT_SYMBOL_GPL vmlinux 0x86f8c910 pcap_set_ts_bits +EXPORT_SYMBOL_GPL vmlinux 0x8714808d sdhci_remove_host +EXPORT_SYMBOL_GPL vmlinux 0x87383bdb __netpoll_setup +EXPORT_SYMBOL_GPL vmlinux 0x873fbaea edac_atomic_assert_error +EXPORT_SYMBOL_GPL vmlinux 0x877afe5e usb_control_msg +EXPORT_SYMBOL_GPL vmlinux 0x87817e58 ata_sff_tf_read +EXPORT_SYMBOL_GPL vmlinux 0x879deb35 transport_destroy_device +EXPORT_SYMBOL_GPL vmlinux 0x87b7b049 class_unregister +EXPORT_SYMBOL_GPL vmlinux 0x87e3bae8 of_genpd_del_provider +EXPORT_SYMBOL_GPL vmlinux 0x87f06012 tpm_do_selftest +EXPORT_SYMBOL_GPL vmlinux 0x87fa1ba3 extcon_update_state +EXPORT_SYMBOL_GPL vmlinux 0x8801fb6d snd_hwparams_to_dma_slave_config +EXPORT_SYMBOL_GPL vmlinux 0x880dcd86 snd_soc_dapm_del_routes +EXPORT_SYMBOL_GPL vmlinux 0x8810ad5e crypto_xor +EXPORT_SYMBOL_GPL vmlinux 0x88136838 wm8997_i2c_regmap +EXPORT_SYMBOL_GPL vmlinux 0x883c2740 __cookie_v6_init_sequence +EXPORT_SYMBOL_GPL vmlinux 0x8845e0a9 snd_ctl_get_preferred_subdevice +EXPORT_SYMBOL_GPL vmlinux 0x88568608 file_ra_state_init +EXPORT_SYMBOL_GPL vmlinux 0x88ab6fe3 kgdb_active +EXPORT_SYMBOL_GPL vmlinux 0x88b5647c trace_clock_local +EXPORT_SYMBOL_GPL vmlinux 0x88b57584 list_lru_count_one +EXPORT_SYMBOL_GPL vmlinux 0x88c8da9a inet_twsk_purge +EXPORT_SYMBOL_GPL vmlinux 0x88e12258 __mmu_notifier_invalidate_range_end +EXPORT_SYMBOL_GPL vmlinux 0x88fe098e ablkcipher_walk_phys +EXPORT_SYMBOL_GPL vmlinux 0x8904c539 anon_transport_class_unregister +EXPORT_SYMBOL_GPL vmlinux 0x89113599 usb_create_hcd +EXPORT_SYMBOL_GPL vmlinux 0x8924eb1e rcu_force_quiescent_state +EXPORT_SYMBOL_GPL vmlinux 0x8930fe83 sata_link_resume +EXPORT_SYMBOL_GPL vmlinux 0x89485687 iommu_group_put +EXPORT_SYMBOL_GPL vmlinux 0x89510036 usb_driver_set_configuration +EXPORT_SYMBOL_GPL vmlinux 0x89578b7d sm501_set_clock +EXPORT_SYMBOL_GPL vmlinux 0x896b23e7 spi_new_device +EXPORT_SYMBOL_GPL vmlinux 0x89787309 irq_set_chip_and_handler_name +EXPORT_SYMBOL_GPL vmlinux 0x897b6f74 inet6_csk_reqsk_queue_hash_add +EXPORT_SYMBOL_GPL vmlinux 0x897bd948 kernfs_notify +EXPORT_SYMBOL_GPL vmlinux 0x89897267 pskb_put +EXPORT_SYMBOL_GPL vmlinux 0x89a2d63b omap_dm_timer_free +EXPORT_SYMBOL_GPL vmlinux 0x89a7a6bb __skb_tstamp_tx +EXPORT_SYMBOL_GPL vmlinux 0x89ae3d66 shmem_get_seals +EXPORT_SYMBOL_GPL vmlinux 0x89bbafc6 usb_register_notify +EXPORT_SYMBOL_GPL vmlinux 0x8a2e3d12 debugfs_create_u16 +EXPORT_SYMBOL_GPL vmlinux 0x8a4de2d0 fsnotify +EXPORT_SYMBOL_GPL vmlinux 0x8a538d17 debugfs_create_x32 +EXPORT_SYMBOL_GPL vmlinux 0x8a546d40 of_regulator_match +EXPORT_SYMBOL_GPL vmlinux 0x8a554a36 mpc8xxx_spi_strmode +EXPORT_SYMBOL_GPL vmlinux 0x8a6557bf vfs_setlease +EXPORT_SYMBOL_GPL vmlinux 0x8a83b0bd devres_close_group +EXPORT_SYMBOL_GPL vmlinux 0x8abacc47 get_max_files +EXPORT_SYMBOL_GPL vmlinux 0x8ac8f587 pm_genpd_syscore_poweron +EXPORT_SYMBOL_GPL vmlinux 0x8ad674a8 arizona_dev_init +EXPORT_SYMBOL_GPL vmlinux 0x8b149c36 clk_is_match +EXPORT_SYMBOL_GPL vmlinux 0x8b28feee sdio_set_block_size +EXPORT_SYMBOL_GPL vmlinux 0x8b5b544e driver_remove_file +EXPORT_SYMBOL_GPL vmlinux 0x8b5c300a mmc_switch +EXPORT_SYMBOL_GPL vmlinux 0x8b67bfb1 inet6_destroy_sock +EXPORT_SYMBOL_GPL vmlinux 0x8b685a87 unix_peer_get +EXPORT_SYMBOL_GPL vmlinux 0x8b6c8542 crypto_register_ahash +EXPORT_SYMBOL_GPL vmlinux 0x8b775d3a __wake_up_locked +EXPORT_SYMBOL_GPL vmlinux 0x8b7e257f device_show_int +EXPORT_SYMBOL_GPL vmlinux 0x8ba71e53 regmap_read +EXPORT_SYMBOL_GPL vmlinux 0x8ba854ac ahci_em_messages +EXPORT_SYMBOL_GPL vmlinux 0x8bbaa14f dev_pm_opp_get_notifier +EXPORT_SYMBOL_GPL vmlinux 0x8be14a22 alarm_expires_remaining +EXPORT_SYMBOL_GPL vmlinux 0x8be9cc74 crypto_register_shash +EXPORT_SYMBOL_GPL vmlinux 0x8bfaef9a disk_get_part +EXPORT_SYMBOL_GPL vmlinux 0x8c0215f2 pm_system_wakeup +EXPORT_SYMBOL_GPL vmlinux 0x8c03d20c destroy_workqueue +EXPORT_SYMBOL_GPL vmlinux 0x8c070556 ata_bmdma_port_start +EXPORT_SYMBOL_GPL vmlinux 0x8c0e4543 shmem_file_setup +EXPORT_SYMBOL_GPL vmlinux 0x8c0f23c5 input_ff_upload +EXPORT_SYMBOL_GPL vmlinux 0x8c2dad70 crypto_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x8c39233f sock_diag_check_cookie +EXPORT_SYMBOL_GPL vmlinux 0x8c3926d7 disable_kprobe +EXPORT_SYMBOL_GPL vmlinux 0x8c583e55 dev_set_name +EXPORT_SYMBOL_GPL vmlinux 0x8c589d0d blk_queue_lld_busy +EXPORT_SYMBOL_GPL vmlinux 0x8c646600 edac_report_status +EXPORT_SYMBOL_GPL vmlinux 0x8c6ac3d2 __mmu_notifier_invalidate_range +EXPORT_SYMBOL_GPL vmlinux 0x8c71f09c tpm_pm_suspend +EXPORT_SYMBOL_GPL vmlinux 0x8c743fb6 reset_control_status +EXPORT_SYMBOL_GPL vmlinux 0x8c806949 devm_pwm_get +EXPORT_SYMBOL_GPL vmlinux 0x8c896ded blk_mq_register_disk +EXPORT_SYMBOL_GPL vmlinux 0x8c8fd5aa x509_cert_parse +EXPORT_SYMBOL_GPL vmlinux 0x8c960e79 ehci_reset +EXPORT_SYMBOL_GPL vmlinux 0x8cbdcf33 device_pm_wait_for_dev +EXPORT_SYMBOL_GPL vmlinux 0x8cc1eef8 mtd_device_parse_register +EXPORT_SYMBOL_GPL vmlinux 0x8cd0ff2a sock_diag_unregister_inet_compat +EXPORT_SYMBOL_GPL vmlinux 0x8cd48d64 pci_try_reset_function +EXPORT_SYMBOL_GPL vmlinux 0x8d18afc6 regulator_map_voltage_linear +EXPORT_SYMBOL_GPL vmlinux 0x8d22bb58 iommu_group_alloc +EXPORT_SYMBOL_GPL vmlinux 0x8d308e40 wm5110_spi_regmap +EXPORT_SYMBOL_GPL vmlinux 0x8d319cda devm_hwrng_register +EXPORT_SYMBOL_GPL vmlinux 0x8d5cc6db sysfs_remove_files +EXPORT_SYMBOL_GPL vmlinux 0x8d6b604e __tracepoint_rpm_suspend +EXPORT_SYMBOL_GPL vmlinux 0x8d71c4b0 regmap_field_alloc +EXPORT_SYMBOL_GPL vmlinux 0x8d8728f8 virtio_break_device +EXPORT_SYMBOL_GPL vmlinux 0x8d8d1473 fs_kobj +EXPORT_SYMBOL_GPL vmlinux 0x8da17b42 scatterwalk_copychunks +EXPORT_SYMBOL_GPL vmlinux 0x8dc9df65 devm_regmap_init_i2c +EXPORT_SYMBOL_GPL vmlinux 0x8dd38ed8 hrtimer_forward +EXPORT_SYMBOL_GPL vmlinux 0x8ddb95c0 devm_usb_get_phy_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0x8dfa4704 __mtd_next_device +EXPORT_SYMBOL_GPL vmlinux 0x8e118408 default_iommu_map_sg +EXPORT_SYMBOL_GPL vmlinux 0x8e2b25c2 videomode_from_timings +EXPORT_SYMBOL_GPL vmlinux 0x8e431776 virtqueue_enable_cb_prepare +EXPORT_SYMBOL_GPL vmlinux 0x8e443f45 pid_vnr +EXPORT_SYMBOL_GPL vmlinux 0x8e6379c8 regulator_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x8e7894bd __atomic_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x8e797225 arm_iommu_release_mapping +EXPORT_SYMBOL_GPL vmlinux 0x8ea50f71 dev_pm_opp_init_cpufreq_table +EXPORT_SYMBOL_GPL vmlinux 0x8eb0df6b cpuidle_get_driver +EXPORT_SYMBOL_GPL vmlinux 0x8ec26109 wakeup_source_drop +EXPORT_SYMBOL_GPL vmlinux 0x8ee22b67 of_thermal_get_ntrips +EXPORT_SYMBOL_GPL vmlinux 0x8ee8d3bb subsys_virtual_register +EXPORT_SYMBOL_GPL vmlinux 0x8ef0833f usb_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x8f0748af rcu_expedite_gp +EXPORT_SYMBOL_GPL vmlinux 0x8f6cee77 __round_jiffies_relative +EXPORT_SYMBOL_GPL vmlinux 0x8f988c67 usb_enable_lpm +EXPORT_SYMBOL_GPL vmlinux 0x8fb490ab ata_sff_data_xfer_noirq +EXPORT_SYMBOL_GPL vmlinux 0x8fd2c456 usb_gadget_giveback_request +EXPORT_SYMBOL_GPL vmlinux 0x8fdaaac3 phy_remove_lookup +EXPORT_SYMBOL_GPL vmlinux 0x8fdc79c2 __tracepoint_block_bio_complete +EXPORT_SYMBOL_GPL vmlinux 0x8fe82ecc dma_buf_begin_cpu_access +EXPORT_SYMBOL_GPL vmlinux 0x9006fe91 wm831x_reg_unlock +EXPORT_SYMBOL_GPL vmlinux 0x9039799e edac_get_sysfs_subsys +EXPORT_SYMBOL_GPL vmlinux 0x903b627c list_lru_isolate_move +EXPORT_SYMBOL_GPL vmlinux 0x9047c11a trace_seq_bprintf +EXPORT_SYMBOL_GPL vmlinux 0x9062c322 ring_buffer_consume +EXPORT_SYMBOL_GPL vmlinux 0x90642fb8 md_stop_writes +EXPORT_SYMBOL_GPL vmlinux 0x9064e69f max_gen_clk_probe +EXPORT_SYMBOL_GPL vmlinux 0x90911b3a virtqueue_kick_prepare +EXPORT_SYMBOL_GPL vmlinux 0x9091332b class_dev_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0x90a1004a crypto_has_alg +EXPORT_SYMBOL_GPL vmlinux 0x90a2d42f invalidate_inode_pages2 +EXPORT_SYMBOL_GPL vmlinux 0x90d5f15d regmap_update_bits_check_async +EXPORT_SYMBOL_GPL vmlinux 0x9123b771 pci_assign_unassigned_bus_resources +EXPORT_SYMBOL_GPL vmlinux 0x915dda8e devfreq_event_disable_edev +EXPORT_SYMBOL_GPL vmlinux 0x9189176c omap_pcm_platform_register +EXPORT_SYMBOL_GPL vmlinux 0x918ad429 ring_buffer_lock_reserve +EXPORT_SYMBOL_GPL vmlinux 0x91ab3c89 class_remove_file_ns +EXPORT_SYMBOL_GPL vmlinux 0x91c6e5b0 pcap_to_irq +EXPORT_SYMBOL_GPL vmlinux 0x91ca6f11 __clk_get_hw +EXPORT_SYMBOL_GPL vmlinux 0x91f8048c of_thermal_is_trip_valid +EXPORT_SYMBOL_GPL vmlinux 0x91fa7406 dma_buf_put +EXPORT_SYMBOL_GPL vmlinux 0x920419d7 pinctrl_find_and_add_gpio_range +EXPORT_SYMBOL_GPL vmlinux 0x9205564d snd_soc_jack_report +EXPORT_SYMBOL_GPL vmlinux 0x920da5ce ata_do_eh +EXPORT_SYMBOL_GPL vmlinux 0x921403e1 rtc_class_close +EXPORT_SYMBOL_GPL vmlinux 0x92196e4b sysfs_remove_file_from_group +EXPORT_SYMBOL_GPL vmlinux 0x924c46f8 zs_unmap_object +EXPORT_SYMBOL_GPL vmlinux 0x92b57248 flush_work +EXPORT_SYMBOL_GPL vmlinux 0x92c154e1 ehci_hub_control +EXPORT_SYMBOL_GPL vmlinux 0x92c704fd cpsw_am33xx_cm_get_macid +EXPORT_SYMBOL_GPL vmlinux 0x92d31cfb fixed_phy_add +EXPORT_SYMBOL_GPL vmlinux 0x92db8f68 do_trace_rcu_torture_read +EXPORT_SYMBOL_GPL vmlinux 0x92f6e4b6 __ktime_divns +EXPORT_SYMBOL_GPL vmlinux 0x930c9728 usb_disable_lpm +EXPORT_SYMBOL_GPL vmlinux 0x93113c60 __pm_runtime_set_status +EXPORT_SYMBOL_GPL vmlinux 0x93174dbf dev_pm_get_subsys_data +EXPORT_SYMBOL_GPL vmlinux 0x931f05d3 ktime_get_raw +EXPORT_SYMBOL_GPL vmlinux 0x93507b8c scsi_schedule_eh +EXPORT_SYMBOL_GPL vmlinux 0x93786bbf ahci_platform_get_resources +EXPORT_SYMBOL_GPL vmlinux 0x9378c14f snd_soc_codec_set_pll +EXPORT_SYMBOL_GPL vmlinux 0x93985364 dev_pm_qos_expose_latency_limit +EXPORT_SYMBOL_GPL vmlinux 0x939e38b9 of_dma_controller_free +EXPORT_SYMBOL_GPL vmlinux 0x93b67dd6 trace_seq_path +EXPORT_SYMBOL_GPL vmlinux 0x93ef1191 kthread_unpark +EXPORT_SYMBOL_GPL vmlinux 0x9411a7a9 smpboot_register_percpu_thread +EXPORT_SYMBOL_GPL vmlinux 0x94134866 gpiochip_remove +EXPORT_SYMBOL_GPL vmlinux 0x941f2aaa eventfd_ctx_put +EXPORT_SYMBOL_GPL vmlinux 0x943b6000 pinctrl_dev_get_devname +EXPORT_SYMBOL_GPL vmlinux 0x9445f176 usb_disable_xhci_ports +EXPORT_SYMBOL_GPL vmlinux 0x9463ff71 init_bch +EXPORT_SYMBOL_GPL vmlinux 0x9474bdb0 __init_kthread_worker +EXPORT_SYMBOL_GPL vmlinux 0x94772af9 usb_wakeup_notification +EXPORT_SYMBOL_GPL vmlinux 0x949334db cpdma_ctlr_start +EXPORT_SYMBOL_GPL vmlinux 0x949e0fe9 netdev_rx_handler_register +EXPORT_SYMBOL_GPL vmlinux 0x94abb745 sprint_oid +EXPORT_SYMBOL_GPL vmlinux 0x94c3dde4 fuse_conn_get +EXPORT_SYMBOL_GPL vmlinux 0x94c43531 blk_trace_setup +EXPORT_SYMBOL_GPL vmlinux 0x94db55e1 snd_soc_dai_digital_mute +EXPORT_SYMBOL_GPL vmlinux 0x9504df26 irq_wake_thread +EXPORT_SYMBOL_GPL vmlinux 0x95127540 free_vm_area +EXPORT_SYMBOL_GPL vmlinux 0x951e0f76 register_ftrace_function +EXPORT_SYMBOL_GPL vmlinux 0x952236b2 usb_udc_vbus_handler +EXPORT_SYMBOL_GPL vmlinux 0x9523f58e of_usb_host_tpl_support +EXPORT_SYMBOL_GPL vmlinux 0x952664c5 do_exit +EXPORT_SYMBOL_GPL vmlinux 0x952ac805 __netlink_alloc_skb +EXPORT_SYMBOL_GPL vmlinux 0x95304d3e da903x_writes +EXPORT_SYMBOL_GPL vmlinux 0x953e1b9e ktime_get_real_seconds +EXPORT_SYMBOL_GPL vmlinux 0x955af1eb synchronize_srcu_expedited +EXPORT_SYMBOL_GPL vmlinux 0x955b0e2e kthread_worker_fn +EXPORT_SYMBOL_GPL vmlinux 0x955f9f75 put_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0x956ef388 perf_pmu_register +EXPORT_SYMBOL_GPL vmlinux 0x95773b95 blk_add_request_payload +EXPORT_SYMBOL_GPL vmlinux 0x9586a6ed cpdma_chan_get_stats +EXPORT_SYMBOL_GPL vmlinux 0x958ae669 __crypto_alloc_tfm +EXPORT_SYMBOL_GPL vmlinux 0x958df3ac zs_free +EXPORT_SYMBOL_GPL vmlinux 0x958e6f92 single_open_net +EXPORT_SYMBOL_GPL vmlinux 0x95acb411 tty_ldisc_flush +EXPORT_SYMBOL_GPL vmlinux 0x95adbc18 perf_tp_event +EXPORT_SYMBOL_GPL vmlinux 0x95bc9078 btree_free +EXPORT_SYMBOL_GPL vmlinux 0x95c578a0 ioremap_page_range +EXPORT_SYMBOL_GPL vmlinux 0x95d450e4 snd_soc_add_card_controls +EXPORT_SYMBOL_GPL vmlinux 0x95d7d192 __put_mtd_device +EXPORT_SYMBOL_GPL vmlinux 0x961e06d3 pci_try_reset_slot +EXPORT_SYMBOL_GPL vmlinux 0x9621849f ring_buffer_event_data +EXPORT_SYMBOL_GPL vmlinux 0x96248deb shash_ahash_finup +EXPORT_SYMBOL_GPL vmlinux 0x965496e8 fat_detach +EXPORT_SYMBOL_GPL vmlinux 0x96554810 register_keyboard_notifier +EXPORT_SYMBOL_GPL vmlinux 0x96747de3 usb_hub_find_child +EXPORT_SYMBOL_GPL vmlinux 0x9679cb32 regulator_is_enabled_regmap +EXPORT_SYMBOL_GPL vmlinux 0x967b287f netdev_set_default_ethtool_ops +EXPORT_SYMBOL_GPL vmlinux 0x96919667 musb_readl +EXPORT_SYMBOL_GPL vmlinux 0x969ecd68 blocking_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0x96fa5886 pcie_update_link_speed +EXPORT_SYMBOL_GPL vmlinux 0x9716bf50 rhashtable_init +EXPORT_SYMBOL_GPL vmlinux 0x9718bb31 unix_inq_len +EXPORT_SYMBOL_GPL vmlinux 0x97396365 tty_port_register_device_attr +EXPORT_SYMBOL_GPL vmlinux 0x9747cc22 rtnl_af_unregister +EXPORT_SYMBOL_GPL vmlinux 0x9747ec6a alarm_init +EXPORT_SYMBOL_GPL vmlinux 0x975519c1 asymmetric_key_id_same +EXPORT_SYMBOL_GPL vmlinux 0x9780fabc wm8997_patch +EXPORT_SYMBOL_GPL vmlinux 0x97856297 get_mtd_device_nm +EXPORT_SYMBOL_GPL vmlinux 0x9788e7ea __get_vm_area +EXPORT_SYMBOL_GPL vmlinux 0x97894f1a scsi_mode_select +EXPORT_SYMBOL_GPL vmlinux 0x97a0d1a2 shash_attr_alg +EXPORT_SYMBOL_GPL vmlinux 0x97c652b3 led_classdev_resume +EXPORT_SYMBOL_GPL vmlinux 0x97de2b83 debug_locks_silent +EXPORT_SYMBOL_GPL vmlinux 0x97ffb89a module_mutex +EXPORT_SYMBOL_GPL vmlinux 0x980c3666 spi_sync +EXPORT_SYMBOL_GPL vmlinux 0x980d64fe wm8350_read_auxadc +EXPORT_SYMBOL_GPL vmlinux 0x98111136 rtnl_link_register +EXPORT_SYMBOL_GPL vmlinux 0x981996aa sdhci_suspend_host +EXPORT_SYMBOL_GPL vmlinux 0x9827f233 snd_soc_dapm_sync +EXPORT_SYMBOL_GPL vmlinux 0x982a346e of_dma_is_coherent +EXPORT_SYMBOL_GPL vmlinux 0x982f3c4e adp5520_write +EXPORT_SYMBOL_GPL vmlinux 0x9833bc0c hvc_kick +EXPORT_SYMBOL_GPL vmlinux 0x98503a63 mpi_alloc +EXPORT_SYMBOL_GPL vmlinux 0x98659930 ehci_cf_port_reset_rwsem +EXPORT_SYMBOL_GPL vmlinux 0x9879932b crypto_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x9895f1b5 dm_send_uevents +EXPORT_SYMBOL_GPL vmlinux 0x98989b21 usb_udc_attach_driver +EXPORT_SYMBOL_GPL vmlinux 0x98b2bfa2 raw_unhash_sk +EXPORT_SYMBOL_GPL vmlinux 0x98b7bc67 tpm_pm_resume +EXPORT_SYMBOL_GPL vmlinux 0x98c4ed73 devm_power_supply_register +EXPORT_SYMBOL_GPL vmlinux 0x98c7170c blk_rq_err_bytes +EXPORT_SYMBOL_GPL vmlinux 0x98c9f584 klist_init +EXPORT_SYMBOL_GPL vmlinux 0x98cc6fb6 pci_num_vf +EXPORT_SYMBOL_GPL vmlinux 0x98d45a23 usb_disable_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0x98e24ca1 blk_insert_cloned_request +EXPORT_SYMBOL_GPL vmlinux 0x98fa1e20 dm_get_reserved_rq_based_ios +EXPORT_SYMBOL_GPL vmlinux 0x98fcf128 irq_work_queue_on +EXPORT_SYMBOL_GPL vmlinux 0x9922da7c sdio_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0x9924c496 __usb_get_extra_descriptor +EXPORT_SYMBOL_GPL vmlinux 0x992996cb usb_set_configuration +EXPORT_SYMBOL_GPL vmlinux 0x9935c52f device_show_ulong +EXPORT_SYMBOL_GPL vmlinux 0x995d1071 prof_on +EXPORT_SYMBOL_GPL vmlinux 0x9973add9 __cookie_v6_check +EXPORT_SYMBOL_GPL vmlinux 0x997c4347 unmap_kernel_range +EXPORT_SYMBOL_GPL vmlinux 0x99840d00 timecounter_init +EXPORT_SYMBOL_GPL vmlinux 0x998f40ab dma_get_slave_caps +EXPORT_SYMBOL_GPL vmlinux 0x999087b0 md_rdev_clear +EXPORT_SYMBOL_GPL vmlinux 0x99b43fef devm_snd_soc_register_card +EXPORT_SYMBOL_GPL vmlinux 0x99ba1777 of_property_read_u32_index +EXPORT_SYMBOL_GPL vmlinux 0x99ff7e26 extcon_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x9a0f676c is_skb_forwardable +EXPORT_SYMBOL_GPL vmlinux 0x9a11a0fc crypto_attr_alg_name +EXPORT_SYMBOL_GPL vmlinux 0x9a12fa1d ata_pci_bmdma_init_one +EXPORT_SYMBOL_GPL vmlinux 0x9a3cb406 md_new_event +EXPORT_SYMBOL_GPL vmlinux 0x9a4df2a9 __blkdev_driver_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x9a7eb6b4 sync_page_io +EXPORT_SYMBOL_GPL vmlinux 0x9a89dbf7 lpddr2_jedec_min_tck +EXPORT_SYMBOL_GPL vmlinux 0x9ab91df1 pci_pasid_features +EXPORT_SYMBOL_GPL vmlinux 0x9ac11b74 suspend_set_ops +EXPORT_SYMBOL_GPL vmlinux 0x9aeacb87 ring_buffer_iter_empty +EXPORT_SYMBOL_GPL vmlinux 0x9aefccab snd_soc_dpcm_can_be_params +EXPORT_SYMBOL_GPL vmlinux 0x9b02c5dd dev_pm_opp_get_opp_count +EXPORT_SYMBOL_GPL vmlinux 0x9b0a60c9 dpcm_be_dai_trigger +EXPORT_SYMBOL_GPL vmlinux 0x9b1cf6bd fuse_direct_io +EXPORT_SYMBOL_GPL vmlinux 0x9b5bb59e component_master_del +EXPORT_SYMBOL_GPL vmlinux 0x9ba0ea2c sysfs_rename_link_ns +EXPORT_SYMBOL_GPL vmlinux 0x9ba3806a crypto_mod_put +EXPORT_SYMBOL_GPL vmlinux 0x9bc32843 debugfs_create_size_t +EXPORT_SYMBOL_GPL vmlinux 0x9bece81b mpi_cmp_ui +EXPORT_SYMBOL_GPL vmlinux 0x9bff5be8 usb_gadget_udc_reset +EXPORT_SYMBOL_GPL vmlinux 0x9c3e5b59 percpu_ida_destroy +EXPORT_SYMBOL_GPL vmlinux 0x9c46a20a ata_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x9c4da65b hrtimer_get_remaining +EXPORT_SYMBOL_GPL vmlinux 0x9c4f7826 find_extend_vma +EXPORT_SYMBOL_GPL vmlinux 0x9c559538 regmap_update_bits_async +EXPORT_SYMBOL_GPL vmlinux 0x9c6212d8 mtd_lock_user_prot_reg +EXPORT_SYMBOL_GPL vmlinux 0x9c6a6ce2 pci_add_dynid +EXPORT_SYMBOL_GPL vmlinux 0x9c85519c devm_clk_unregister +EXPORT_SYMBOL_GPL vmlinux 0x9c9076bc sdhci_pltfm_pmops +EXPORT_SYMBOL_GPL vmlinux 0x9ca6e806 nf_ipv6_ops +EXPORT_SYMBOL_GPL vmlinux 0x9cc4f70a register_pm_notifier +EXPORT_SYMBOL_GPL vmlinux 0x9cc627be snd_soc_platform_write +EXPORT_SYMBOL_GPL vmlinux 0x9cdc9867 cpdma_ctlr_stop +EXPORT_SYMBOL_GPL vmlinux 0x9cee57a0 zs_create_pool +EXPORT_SYMBOL_GPL vmlinux 0x9cefc205 snd_soc_get_enum_double +EXPORT_SYMBOL_GPL vmlinux 0x9d0420c6 virtqueue_detach_unused_buf +EXPORT_SYMBOL_GPL vmlinux 0x9d28f3a3 of_get_regulator_init_data +EXPORT_SYMBOL_GPL vmlinux 0x9d3281a8 adp5520_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x9d37ee07 devm_phy_create +EXPORT_SYMBOL_GPL vmlinux 0x9d4c709e extcon_get_edev_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0x9d788526 kobject_move +EXPORT_SYMBOL_GPL vmlinux 0x9d7c5141 ata_sff_irq_on +EXPORT_SYMBOL_GPL vmlinux 0x9d8331c0 ring_buffer_read_page +EXPORT_SYMBOL_GPL vmlinux 0x9daa50fc power_supply_get_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0x9dad2a16 virtqueue_get_buf +EXPORT_SYMBOL_GPL vmlinux 0x9dadbb88 cpufreq_boost_supported +EXPORT_SYMBOL_GPL vmlinux 0x9dae8d6b alarm_forward_now +EXPORT_SYMBOL_GPL vmlinux 0x9dcad135 lp8788_write_byte +EXPORT_SYMBOL_GPL vmlinux 0x9dd0d6b4 ip6_local_out +EXPORT_SYMBOL_GPL vmlinux 0x9dfdf722 gpio_free_array +EXPORT_SYMBOL_GPL vmlinux 0x9e1772d8 fuse_dev_operations +EXPORT_SYMBOL_GPL vmlinux 0x9e302f1b spi_bus_unlock +EXPORT_SYMBOL_GPL vmlinux 0x9e438bf5 ata_scsi_simulate +EXPORT_SYMBOL_GPL vmlinux 0x9e472f5f snmp_fold_field +EXPORT_SYMBOL_GPL vmlinux 0x9e9302ef nl_table +EXPORT_SYMBOL_GPL vmlinux 0x9e94f66f pingv6_prot +EXPORT_SYMBOL_GPL vmlinux 0x9ea556f8 btree_destroy +EXPORT_SYMBOL_GPL vmlinux 0x9eb22d68 regulator_bulk_free +EXPORT_SYMBOL_GPL vmlinux 0x9ed554b3 unregister_keyboard_notifier +EXPORT_SYMBOL_GPL vmlinux 0x9eea85ba phy_pm_runtime_put +EXPORT_SYMBOL_GPL vmlinux 0x9f065118 irq_domain_xlate_onetwocell +EXPORT_SYMBOL_GPL vmlinux 0x9f099cf6 x509_get_sig_params +EXPORT_SYMBOL_GPL vmlinux 0x9f1e87c4 of_clk_parent_fill +EXPORT_SYMBOL_GPL vmlinux 0x9f33ac1e iptunnel_pull_header +EXPORT_SYMBOL_GPL vmlinux 0x9f3a6ec0 pm_generic_suspend +EXPORT_SYMBOL_GPL vmlinux 0x9f5c07ca gpiochip_lock_as_irq +EXPORT_SYMBOL_GPL vmlinux 0x9f6664a5 usb_hcd_unlink_urb_from_ep +EXPORT_SYMBOL_GPL vmlinux 0x9f770376 skb_cow_data +EXPORT_SYMBOL_GPL vmlinux 0x9f8383f9 sata_link_debounce +EXPORT_SYMBOL_GPL vmlinux 0x9f846aa8 ata_port_schedule_eh +EXPORT_SYMBOL_GPL vmlinux 0x9f90aa9a dev_pm_domain_attach +EXPORT_SYMBOL_GPL vmlinux 0x9f930dd3 virtqueue_notify +EXPORT_SYMBOL_GPL vmlinux 0x9fa6239f crypto_alg_sem +EXPORT_SYMBOL_GPL vmlinux 0x9fb08418 cpsw_ale_del_vlan +EXPORT_SYMBOL_GPL vmlinux 0x9fb8fb96 ip6_local_out_sk +EXPORT_SYMBOL_GPL vmlinux 0x9fc02a22 omapdss_of_get_next_port +EXPORT_SYMBOL_GPL vmlinux 0x9fce80db fb_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x9fe6c40d devm_snd_dmaengine_pcm_register +EXPORT_SYMBOL_GPL vmlinux 0x9fe939e1 mpi_powm +EXPORT_SYMBOL_GPL vmlinux 0x9ff9e396 relay_file_operations +EXPORT_SYMBOL_GPL vmlinux 0x9ffc23e2 fib_rules_register +EXPORT_SYMBOL_GPL vmlinux 0xa013a9cf init_srcu_struct +EXPORT_SYMBOL_GPL vmlinux 0xa01bff36 sysfs_create_files +EXPORT_SYMBOL_GPL vmlinux 0xa0228c15 vfs_kern_mount +EXPORT_SYMBOL_GPL vmlinux 0xa031287b pinctrl_force_sleep +EXPORT_SYMBOL_GPL vmlinux 0xa033df40 clk_register_divider +EXPORT_SYMBOL_GPL vmlinux 0xa037dc8d tty_put_char +EXPORT_SYMBOL_GPL vmlinux 0xa0416ea7 crypto_aead_reqsize +EXPORT_SYMBOL_GPL vmlinux 0xa060a077 snd_soc_get_volsw_sx +EXPORT_SYMBOL_GPL vmlinux 0xa06e9b7b pci_store_saved_state +EXPORT_SYMBOL_GPL vmlinux 0xa091d10d fwnode_property_present +EXPORT_SYMBOL_GPL vmlinux 0xa0930752 component_bind_all +EXPORT_SYMBOL_GPL vmlinux 0xa09511bb pm_schedule_suspend +EXPORT_SYMBOL_GPL vmlinux 0xa0d44ec1 register_pernet_subsys +EXPORT_SYMBOL_GPL vmlinux 0xa0db964b ahci_platform_disable_clks +EXPORT_SYMBOL_GPL vmlinux 0xa104463f fb_deferred_io_init +EXPORT_SYMBOL_GPL vmlinux 0xa10be2b0 i2c_slave_register +EXPORT_SYMBOL_GPL vmlinux 0xa10f2043 skb_segment +EXPORT_SYMBOL_GPL vmlinux 0xa1167dc4 clk_divider_ops +EXPORT_SYMBOL_GPL vmlinux 0xa11dc793 class_dev_iter_init +EXPORT_SYMBOL_GPL vmlinux 0xa123ea06 tcp_slow_start +EXPORT_SYMBOL_GPL vmlinux 0xa131313f of_pci_get_host_bridge_resources +EXPORT_SYMBOL_GPL vmlinux 0xa134a184 tcp_twsk_destructor +EXPORT_SYMBOL_GPL vmlinux 0xa13d7fde to_of_pinfo +EXPORT_SYMBOL_GPL vmlinux 0xa14a1817 trace_seq_bitmask +EXPORT_SYMBOL_GPL vmlinux 0xa18f9433 mpi_read_buffer +EXPORT_SYMBOL_GPL vmlinux 0xa1a6c7c3 shash_ahash_update +EXPORT_SYMBOL_GPL vmlinux 0xa1b128ec mtd_kmalloc_up_to +EXPORT_SYMBOL_GPL vmlinux 0xa1c59dc2 phy_get +EXPORT_SYMBOL_GPL vmlinux 0xa1d05f7e ata_pci_sff_prepare_host +EXPORT_SYMBOL_GPL vmlinux 0xa1ed6840 devm_regmap_init +EXPORT_SYMBOL_GPL vmlinux 0xa223c1fa sock_prot_inuse_add +EXPORT_SYMBOL_GPL vmlinux 0xa25aab52 crypto_unregister_aead +EXPORT_SYMBOL_GPL vmlinux 0xa25e3c6b of_get_nand_on_flash_bbt +EXPORT_SYMBOL_GPL vmlinux 0xa26d9b4f workqueue_congested +EXPORT_SYMBOL_GPL vmlinux 0xa286a234 snd_pcm_format_name +EXPORT_SYMBOL_GPL vmlinux 0xa292f35d pci_bus_sem +EXPORT_SYMBOL_GPL vmlinux 0xa2a48d01 usb_set_interface +EXPORT_SYMBOL_GPL vmlinux 0xa2b9c993 clk_register_fixed_factor +EXPORT_SYMBOL_GPL vmlinux 0xa2bafa40 interval_tree_insert +EXPORT_SYMBOL_GPL vmlinux 0xa2cb2b16 snd_soc_unregister_card +EXPORT_SYMBOL_GPL vmlinux 0xa2d27ef8 ata_host_suspend +EXPORT_SYMBOL_GPL vmlinux 0xa2d9fdc4 flush_kthread_work +EXPORT_SYMBOL_GPL vmlinux 0xa3062a9f device_destroy +EXPORT_SYMBOL_GPL vmlinux 0xa30fef51 platform_driver_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa3339e3b ata_scsi_unlock_native_capacity +EXPORT_SYMBOL_GPL vmlinux 0xa36586c3 crypto_grab_skcipher +EXPORT_SYMBOL_GPL vmlinux 0xa38602cd drain_workqueue +EXPORT_SYMBOL_GPL vmlinux 0xa389a49a profile_event_register +EXPORT_SYMBOL_GPL vmlinux 0xa3a04602 btree_geo64 +EXPORT_SYMBOL_GPL vmlinux 0xa3aef644 crypto_aead_setkey +EXPORT_SYMBOL_GPL vmlinux 0xa3b05ad3 usb_get_phy +EXPORT_SYMBOL_GPL vmlinux 0xa3b958ce reset_hung_task_detector +EXPORT_SYMBOL_GPL vmlinux 0xa3c43eab sdhci_alloc_host +EXPORT_SYMBOL_GPL vmlinux 0xa3c75dc3 bio_associate_current +EXPORT_SYMBOL_GPL vmlinux 0xa3d45ea7 regmap_get_device +EXPORT_SYMBOL_GPL vmlinux 0xa3e7c113 ring_buffer_iter_peek +EXPORT_SYMBOL_GPL vmlinux 0xa3ef12e1 crypto_unregister_rng +EXPORT_SYMBOL_GPL vmlinux 0xa40a25a7 pci_intx_mask_supported +EXPORT_SYMBOL_GPL vmlinux 0xa40d0b68 sdio_writesb +EXPORT_SYMBOL_GPL vmlinux 0xa4298e81 usb_disable_ltm +EXPORT_SYMBOL_GPL vmlinux 0xa42e4340 of_property_read_string_helper +EXPORT_SYMBOL_GPL vmlinux 0xa42fb250 pinctrl_utils_add_map_configs +EXPORT_SYMBOL_GPL vmlinux 0xa43cc129 virtio_device_restore +EXPORT_SYMBOL_GPL vmlinux 0xa44a6aff snd_soc_put_strobe +EXPORT_SYMBOL_GPL vmlinux 0xa44ded73 pm_generic_restore +EXPORT_SYMBOL_GPL vmlinux 0xa4579e51 mmc_get_ext_csd +EXPORT_SYMBOL_GPL vmlinux 0xa45c3370 power_supply_powers +EXPORT_SYMBOL_GPL vmlinux 0xa48196c8 kdb_poll_idx +EXPORT_SYMBOL_GPL vmlinux 0xa488b875 usb_hcd_pci_probe +EXPORT_SYMBOL_GPL vmlinux 0xa48a286c bdev_direct_access +EXPORT_SYMBOL_GPL vmlinux 0xa4908ba0 sk_setup_caps +EXPORT_SYMBOL_GPL vmlinux 0xa4b25b3c devm_kstrdup +EXPORT_SYMBOL_GPL vmlinux 0xa4b7b3d2 regulator_set_drvdata +EXPORT_SYMBOL_GPL vmlinux 0xa4d25ad4 regulator_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa4eecf38 simple_attr_read +EXPORT_SYMBOL_GPL vmlinux 0xa50ada61 regmap_write +EXPORT_SYMBOL_GPL vmlinux 0xa50c5eb2 mpc8xxx_spi_probe +EXPORT_SYMBOL_GPL vmlinux 0xa52c06cd devm_extcon_dev_register +EXPORT_SYMBOL_GPL vmlinux 0xa5449d2d __tracepoint_block_rq_remap +EXPORT_SYMBOL_GPL vmlinux 0xa5451e77 ip4_datagram_release_cb +EXPORT_SYMBOL_GPL vmlinux 0xa54b9ffc usb_gadget_set_state +EXPORT_SYMBOL_GPL vmlinux 0xa56092e9 ipv6_opt_accepted +EXPORT_SYMBOL_GPL vmlinux 0xa5a69e04 i2c_new_probed_device +EXPORT_SYMBOL_GPL vmlinux 0xa5c91dbe __pci_reset_function_locked +EXPORT_SYMBOL_GPL vmlinux 0xa5de41dc usb_driver_claim_interface +EXPORT_SYMBOL_GPL vmlinux 0xa5e407e4 wm5110_aod +EXPORT_SYMBOL_GPL vmlinux 0xa5efbf4c async_synchronize_full +EXPORT_SYMBOL_GPL vmlinux 0xa5f8854a usb_unlink_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0xa5ffc702 gov_queue_work +EXPORT_SYMBOL_GPL vmlinux 0xa6040a61 srcu_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0xa611ec7d rtc_read_alarm +EXPORT_SYMBOL_GPL vmlinux 0xa625110d kmsg_dump_rewind +EXPORT_SYMBOL_GPL vmlinux 0xa6266c4e alarm_start +EXPORT_SYMBOL_GPL vmlinux 0xa62f719e blocking_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xa649ba8a pci_reset_bus +EXPORT_SYMBOL_GPL vmlinux 0xa651120d inet_peer_base_init +EXPORT_SYMBOL_GPL vmlinux 0xa665a042 irq_domain_add_legacy +EXPORT_SYMBOL_GPL vmlinux 0xa6788d0b sdio_writeb_readb +EXPORT_SYMBOL_GPL vmlinux 0xa6817fbc tty_port_link_device +EXPORT_SYMBOL_GPL vmlinux 0xa68df3c4 crypto_chain +EXPORT_SYMBOL_GPL vmlinux 0xa6b21ef2 dpm_suspend_end +EXPORT_SYMBOL_GPL vmlinux 0xa6b291de gpiod_to_irq +EXPORT_SYMBOL_GPL vmlinux 0xa6bf284a syscon_regmap_lookup_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0xa6e1a69d kick_all_cpus_sync +EXPORT_SYMBOL_GPL vmlinux 0xa6e7c1f1 __ablkcipher_walk_complete +EXPORT_SYMBOL_GPL vmlinux 0xa71c60f4 kobject_create_and_add +EXPORT_SYMBOL_GPL vmlinux 0xa7258f8b tty_mode_ioctl +EXPORT_SYMBOL_GPL vmlinux 0xa726dd85 device_remove_bin_file +EXPORT_SYMBOL_GPL vmlinux 0xa74eaead wm831x_reg_write +EXPORT_SYMBOL_GPL vmlinux 0xa75312bc call_rcu_sched +EXPORT_SYMBOL_GPL vmlinux 0xa768de66 __blk_run_queue_uncond +EXPORT_SYMBOL_GPL vmlinux 0xa7741728 sdhci_get_of_property +EXPORT_SYMBOL_GPL vmlinux 0xa78036dd perf_event_release_kernel +EXPORT_SYMBOL_GPL vmlinux 0xa7a326cf page_cache_async_readahead +EXPORT_SYMBOL_GPL vmlinux 0xa7e13a6a clk_mux_ro_ops +EXPORT_SYMBOL_GPL vmlinux 0xa7f3ad41 relay_buf_full +EXPORT_SYMBOL_GPL vmlinux 0xa7fa7456 dev_pm_opp_find_freq_exact +EXPORT_SYMBOL_GPL vmlinux 0xa804df38 device_initialize +EXPORT_SYMBOL_GPL vmlinux 0xa80d16f1 device_init_wakeup +EXPORT_SYMBOL_GPL vmlinux 0xa8460dfa component_master_add_with_match +EXPORT_SYMBOL_GPL vmlinux 0xa84ddd4b crypto_shash_update +EXPORT_SYMBOL_GPL vmlinux 0xa851973a raw_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xa8541548 snd_soc_dapm_sync_unlocked +EXPORT_SYMBOL_GPL vmlinux 0xa88b2311 snd_soc_update_bits +EXPORT_SYMBOL_GPL vmlinux 0xa88cb178 gpiochip_irqchip_add +EXPORT_SYMBOL_GPL vmlinux 0xa8ac3870 __clocksource_register_scale +EXPORT_SYMBOL_GPL vmlinux 0xa8b23fb8 ata_platform_remove_one +EXPORT_SYMBOL_GPL vmlinux 0xa8b76a68 timecounter_cyc2time +EXPORT_SYMBOL_GPL vmlinux 0xa8bc717e percpu_ida_free_tags +EXPORT_SYMBOL_GPL vmlinux 0xa8c9af33 dev_pm_set_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0xa8c9b86a crypto_drop_spawn +EXPORT_SYMBOL_GPL vmlinux 0xa8ce5b2f dummy_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0xa8cf6391 register_mtd_blktrans +EXPORT_SYMBOL_GPL vmlinux 0xa8d27f75 crypto_ahash_type +EXPORT_SYMBOL_GPL vmlinux 0xa8e98132 btree_visitor +EXPORT_SYMBOL_GPL vmlinux 0xa921ed04 regcache_sync +EXPORT_SYMBOL_GPL vmlinux 0xa9263752 bus_create_file +EXPORT_SYMBOL_GPL vmlinux 0xa9320d27 ktime_get_seconds +EXPORT_SYMBOL_GPL vmlinux 0xa93ba628 inet6_csk_xmit +EXPORT_SYMBOL_GPL vmlinux 0xa93e7096 devres_for_each_res +EXPORT_SYMBOL_GPL vmlinux 0xa94478d8 mv_mbus_dram_info_nooverlap +EXPORT_SYMBOL_GPL vmlinux 0xa96cc416 of_console_check +EXPORT_SYMBOL_GPL vmlinux 0xa980af16 RSA_public_key_algorithm +EXPORT_SYMBOL_GPL vmlinux 0xa98280c5 class_find_device +EXPORT_SYMBOL_GPL vmlinux 0xa98cf45e pm_runtime_allow +EXPORT_SYMBOL_GPL vmlinux 0xa9a485d9 wm8997_aod +EXPORT_SYMBOL_GPL vmlinux 0xa9c767d5 genlmsg_new_unicast +EXPORT_SYMBOL_GPL vmlinux 0xa9cbc1be devres_open_group +EXPORT_SYMBOL_GPL vmlinux 0xa9e18049 task_handoff_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa9e59bf7 register_jprobe +EXPORT_SYMBOL_GPL vmlinux 0xa9f4400a scsi_get_vpd_page +EXPORT_SYMBOL_GPL vmlinux 0xa9fab746 debugfs_create_x64 +EXPORT_SYMBOL_GPL vmlinux 0xaa1cb54b hwmon_device_register +EXPORT_SYMBOL_GPL vmlinux 0xaa20230b __of_genpd_add_provider +EXPORT_SYMBOL_GPL vmlinux 0xaa2a72bf __iowrite64_copy +EXPORT_SYMBOL_GPL vmlinux 0xaa3337c7 register_virtio_device +EXPORT_SYMBOL_GPL vmlinux 0xaa4049d4 kernfs_get +EXPORT_SYMBOL_GPL vmlinux 0xaa44acff omap_tll_disable +EXPORT_SYMBOL_GPL vmlinux 0xaaa918c9 ftrace_dump +EXPORT_SYMBOL_GPL vmlinux 0xaac667a9 __lock_page_killable +EXPORT_SYMBOL_GPL vmlinux 0xaac8910c netlink_add_tap +EXPORT_SYMBOL_GPL vmlinux 0xaadeabf2 set_task_ioprio +EXPORT_SYMBOL_GPL vmlinux 0xaae388f3 usb_sg_cancel +EXPORT_SYMBOL_GPL vmlinux 0xab384cf0 tty_find_polling_driver +EXPORT_SYMBOL_GPL vmlinux 0xab557df2 thermal_zone_device_update +EXPORT_SYMBOL_GPL vmlinux 0xab5741fc gpiod_set_raw_value +EXPORT_SYMBOL_GPL vmlinux 0xab5a5de4 fixed_phy_del +EXPORT_SYMBOL_GPL vmlinux 0xab69c6d8 usb_gadget_map_request +EXPORT_SYMBOL_GPL vmlinux 0xab6babaf pm_qos_request +EXPORT_SYMBOL_GPL vmlinux 0xab6cf474 extcon_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xab6f6b64 xhci_resume +EXPORT_SYMBOL_GPL vmlinux 0xab70db07 handle_fasteoi_irq +EXPORT_SYMBOL_GPL vmlinux 0xab8bc1a2 snd_pcm_rate_mask_intersect +EXPORT_SYMBOL_GPL vmlinux 0xab8e0cb3 usb_gadget_unmap_request +EXPORT_SYMBOL_GPL vmlinux 0xab945a16 __iowrite32_copy +EXPORT_SYMBOL_GPL vmlinux 0xaba7ebad balloon_page_enqueue +EXPORT_SYMBOL_GPL vmlinux 0xabc640f3 list_lru_isolate +EXPORT_SYMBOL_GPL vmlinux 0xabd04399 dma_get_any_slave_channel +EXPORT_SYMBOL_GPL vmlinux 0xabd5254c spi_register_master +EXPORT_SYMBOL_GPL vmlinux 0xabda1e2e decode_rs16 +EXPORT_SYMBOL_GPL vmlinux 0xabea8d85 regmap_async_complete_cb +EXPORT_SYMBOL_GPL vmlinux 0xac03ac39 pwm_set_chip_data +EXPORT_SYMBOL_GPL vmlinux 0xac1891be ablkcipher_walk_done +EXPORT_SYMBOL_GPL vmlinux 0xac2657fa __mmdrop +EXPORT_SYMBOL_GPL vmlinux 0xac2b255d pci_max_pasids +EXPORT_SYMBOL_GPL vmlinux 0xac2bd262 of_property_read_u8_array +EXPORT_SYMBOL_GPL vmlinux 0xac44f8bc ip6_route_lookup +EXPORT_SYMBOL_GPL vmlinux 0xac477d8a user_preparse +EXPORT_SYMBOL_GPL vmlinux 0xac491f9d fuse_conn_put +EXPORT_SYMBOL_GPL vmlinux 0xac5f3d70 musb_readb +EXPORT_SYMBOL_GPL vmlinux 0xac6f7ae3 pwm_request +EXPORT_SYMBOL_GPL vmlinux 0xac74af4d tpm_chip_register +EXPORT_SYMBOL_GPL vmlinux 0xacaabc08 blk_queue_flush_queueable +EXPORT_SYMBOL_GPL vmlinux 0xacac7a92 arizona_request_irq +EXPORT_SYMBOL_GPL vmlinux 0xacacab7e usb_put_dev +EXPORT_SYMBOL_GPL vmlinux 0xacb86be1 srcu_init_notifier_head +EXPORT_SYMBOL_GPL vmlinux 0xacbcee4e __pm_runtime_suspend +EXPORT_SYMBOL_GPL vmlinux 0xacdea2f1 list_lru_del +EXPORT_SYMBOL_GPL vmlinux 0xace1de41 ptp_classify_raw +EXPORT_SYMBOL_GPL vmlinux 0xace5c0fc usb_bus_list +EXPORT_SYMBOL_GPL vmlinux 0xaced820b snd_soc_dapm_mixer_update_power +EXPORT_SYMBOL_GPL vmlinux 0xad1decb3 mtd_add_partition +EXPORT_SYMBOL_GPL vmlinux 0xad275497 omap_dm_timer_set_pwm +EXPORT_SYMBOL_GPL vmlinux 0xad2b9e33 relay_open +EXPORT_SYMBOL_GPL vmlinux 0xad4ea345 register_mtd_parser +EXPORT_SYMBOL_GPL vmlinux 0xad66ef02 crypto_enqueue_request +EXPORT_SYMBOL_GPL vmlinux 0xad6c051b ata_dev_set_feature +EXPORT_SYMBOL_GPL vmlinux 0xad74373a ping_unhash +EXPORT_SYMBOL_GPL vmlinux 0xad79770c device_release_driver +EXPORT_SYMBOL_GPL vmlinux 0xadad9589 fl6_merge_options +EXPORT_SYMBOL_GPL vmlinux 0xadaf7008 tty_ldisc_ref +EXPORT_SYMBOL_GPL vmlinux 0xadc785ec kgdb_register_io_module +EXPORT_SYMBOL_GPL vmlinux 0xadd4cf8e do_unbind_con_driver +EXPORT_SYMBOL_GPL vmlinux 0xade26e15 irq_domain_xlate_onecell +EXPORT_SYMBOL_GPL vmlinux 0xadf6aa4d tpm_pcr_read +EXPORT_SYMBOL_GPL vmlinux 0xae4afd0d snd_soc_info_volsw_sx +EXPORT_SYMBOL_GPL vmlinux 0xae5fab67 crypto_alloc_base +EXPORT_SYMBOL_GPL vmlinux 0xae69b1c1 usermodehelper_read_unlock +EXPORT_SYMBOL_GPL vmlinux 0xae73b081 clk_debugfs_add_file +EXPORT_SYMBOL_GPL vmlinux 0xae7c231d mpi_cmp +EXPORT_SYMBOL_GPL vmlinux 0xae81922b of_overlay_destroy_all +EXPORT_SYMBOL_GPL vmlinux 0xae838cf0 snd_soc_component_read +EXPORT_SYMBOL_GPL vmlinux 0xae89393e pci_fixup_irqs +EXPORT_SYMBOL_GPL vmlinux 0xae8aa931 dev_pm_opp_get_voltage +EXPORT_SYMBOL_GPL vmlinux 0xae903fa3 stmpe_enable +EXPORT_SYMBOL_GPL vmlinux 0xae9f9d59 nl_table_lock +EXPORT_SYMBOL_GPL vmlinux 0xaea77157 of_thermal_get_trip_points +EXPORT_SYMBOL_GPL vmlinux 0xaeaef709 arizona_clk32k_disable +EXPORT_SYMBOL_GPL vmlinux 0xaec0f59d balloon_page_dequeue +EXPORT_SYMBOL_GPL vmlinux 0xaed4b420 regmap_multi_reg_write_bypassed +EXPORT_SYMBOL_GPL vmlinux 0xaee007b2 dev_pm_qos_flags +EXPORT_SYMBOL_GPL vmlinux 0xaeeb84fe snd_soc_add_dai_controls +EXPORT_SYMBOL_GPL vmlinux 0xaf020787 xfrm_audit_policy_add +EXPORT_SYMBOL_GPL vmlinux 0xaf348da7 cpu_pm_exit +EXPORT_SYMBOL_GPL vmlinux 0xaf47475b call_filter_check_discard +EXPORT_SYMBOL_GPL vmlinux 0xaf54dc63 tps65912_reg_write +EXPORT_SYMBOL_GPL vmlinux 0xaf5d9eb5 shash_ahash_digest +EXPORT_SYMBOL_GPL vmlinux 0xaf7ee9ef pwm_put +EXPORT_SYMBOL_GPL vmlinux 0xb0066375 __blkg_prfill_u64 +EXPORT_SYMBOL_GPL vmlinux 0xb01a304c ip6_push_pending_frames +EXPORT_SYMBOL_GPL vmlinux 0xb030d37c devm_usb_get_phy +EXPORT_SYMBOL_GPL vmlinux 0xb03a9c4d ata_host_start +EXPORT_SYMBOL_GPL vmlinux 0xb03ec3a6 pci_find_ht_capability +EXPORT_SYMBOL_GPL vmlinux 0xb0400c6b add_timer_on +EXPORT_SYMBOL_GPL vmlinux 0xb050f329 init_rs +EXPORT_SYMBOL_GPL vmlinux 0xb060d77a pwmchip_add_with_polarity +EXPORT_SYMBOL_GPL vmlinux 0xb062a6f4 wbc_account_io +EXPORT_SYMBOL_GPL vmlinux 0xb07181f0 ata_std_postreset +EXPORT_SYMBOL_GPL vmlinux 0xb077e70a clk_unprepare +EXPORT_SYMBOL_GPL vmlinux 0xb077edd4 rhashtable_walk_stop +EXPORT_SYMBOL_GPL vmlinux 0xb0b85f47 ring_buffer_iter_reset +EXPORT_SYMBOL_GPL vmlinux 0xb0b93006 put_pid +EXPORT_SYMBOL_GPL vmlinux 0xb0bb4ac2 i2c_lock_adapter +EXPORT_SYMBOL_GPL vmlinux 0xb0d3134f device_property_present +EXPORT_SYMBOL_GPL vmlinux 0xb0df5780 spi_bus_type +EXPORT_SYMBOL_GPL vmlinux 0xb0e13556 wm8400_reg_read +EXPORT_SYMBOL_GPL vmlinux 0xb100d466 cpsw_ale_del_mcast +EXPORT_SYMBOL_GPL vmlinux 0xb1102791 __put_net +EXPORT_SYMBOL_GPL vmlinux 0xb11fefb6 yield_to +EXPORT_SYMBOL_GPL vmlinux 0xb1217b3b omap_dm_timer_enable +EXPORT_SYMBOL_GPL vmlinux 0xb1241b6b dma_buf_kmap +EXPORT_SYMBOL_GPL vmlinux 0xb125ceb2 cpdma_control_set +EXPORT_SYMBOL_GPL vmlinux 0xb140d14c ring_buffer_read +EXPORT_SYMBOL_GPL vmlinux 0xb1425b32 dm_table_add_target_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xb166f8d4 hrtimer_start_range_ns +EXPORT_SYMBOL_GPL vmlinux 0xb18429eb suspend_device_irqs +EXPORT_SYMBOL_GPL vmlinux 0xb1acbcce rcu_barrier_sched +EXPORT_SYMBOL_GPL vmlinux 0xb1bed25d dpm_resume_start +EXPORT_SYMBOL_GPL vmlinux 0xb1c0c1c2 async_schedule_domain +EXPORT_SYMBOL_GPL vmlinux 0xb1e1301f of_mpc8xxx_spi_probe +EXPORT_SYMBOL_GPL vmlinux 0xb1e25684 __trace_bputs +EXPORT_SYMBOL_GPL vmlinux 0xb1e49040 of_alias_get_id +EXPORT_SYMBOL_GPL vmlinux 0xb20b5d0a user_destroy +EXPORT_SYMBOL_GPL vmlinux 0xb214351a __sock_recv_ts_and_drops +EXPORT_SYMBOL_GPL vmlinux 0xb2184723 omapdss_of_find_source_for_first_ep +EXPORT_SYMBOL_GPL vmlinux 0xb2210d64 reset_control_deassert +EXPORT_SYMBOL_GPL vmlinux 0xb232987f devres_add +EXPORT_SYMBOL_GPL vmlinux 0xb237387a serial8250_do_startup +EXPORT_SYMBOL_GPL vmlinux 0xb257c27d devfreq_event_get_edev_count +EXPORT_SYMBOL_GPL vmlinux 0xb25d78e3 snd_soc_dapm_nc_pin +EXPORT_SYMBOL_GPL vmlinux 0xb266e16e deregister_mtd_blktrans +EXPORT_SYMBOL_GPL vmlinux 0xb26a1add elfcorehdr_addr +EXPORT_SYMBOL_GPL vmlinux 0xb27ad813 relay_subbufs_consumed +EXPORT_SYMBOL_GPL vmlinux 0xb28badbc devm_phy_put +EXPORT_SYMBOL_GPL vmlinux 0xb296dc0d pci_generic_config_write +EXPORT_SYMBOL_GPL vmlinux 0xb2991763 snd_soc_dapm_nc_pin_unlocked +EXPORT_SYMBOL_GPL vmlinux 0xb2ae84c8 crypto_register_pcomp +EXPORT_SYMBOL_GPL vmlinux 0xb2de92af kthread_park +EXPORT_SYMBOL_GPL vmlinux 0xb2e4e857 extcon_unregister_interest +EXPORT_SYMBOL_GPL vmlinux 0xb2e764e8 suspend_valid_only_mem +EXPORT_SYMBOL_GPL vmlinux 0xb2ead9e8 amba_ahb_device_add_res +EXPORT_SYMBOL_GPL vmlinux 0xb2ecaa94 sysfs_add_link_to_group +EXPORT_SYMBOL_GPL vmlinux 0xb3125716 of_pci_msi_chip_add +EXPORT_SYMBOL_GPL vmlinux 0xb34de851 srcu_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xb3680626 ata_port_pbar_desc +EXPORT_SYMBOL_GPL vmlinux 0xb36debdc perf_event_refresh +EXPORT_SYMBOL_GPL vmlinux 0xb37f7f1f rhashtable_walk_next +EXPORT_SYMBOL_GPL vmlinux 0xb391b449 snd_soc_dai_set_bclk_ratio +EXPORT_SYMBOL_GPL vmlinux 0xb3cebdad amba_device_add +EXPORT_SYMBOL_GPL vmlinux 0xb3daacfb ata_cable_80wire +EXPORT_SYMBOL_GPL vmlinux 0xb3f31f40 devm_mdiobus_free +EXPORT_SYMBOL_GPL vmlinux 0xb4007585 dpm_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0xb404f6a6 skb_complete_tx_timestamp +EXPORT_SYMBOL_GPL vmlinux 0xb40bb388 wakeup_source_prepare +EXPORT_SYMBOL_GPL vmlinux 0xb40cf3b9 relay_reset +EXPORT_SYMBOL_GPL vmlinux 0xb411968b wakeup_source_destroy +EXPORT_SYMBOL_GPL vmlinux 0xb4259697 omap_dm_timer_set_int_enable +EXPORT_SYMBOL_GPL vmlinux 0xb4263611 ip6_datagram_connect +EXPORT_SYMBOL_GPL vmlinux 0xb469f2bb devm_phy_optional_get +EXPORT_SYMBOL_GPL vmlinux 0xb4778b69 devm_hwmon_device_register_with_groups +EXPORT_SYMBOL_GPL vmlinux 0xb4a3149e tpm_calc_ordinal_duration +EXPORT_SYMBOL_GPL vmlinux 0xb4b97c90 pvclock_gtod_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xb4cf0322 btree_lookup +EXPORT_SYMBOL_GPL vmlinux 0xb4ea7cf7 kgdb_connected +EXPORT_SYMBOL_GPL vmlinux 0xb5004464 mtd_table_mutex +EXPORT_SYMBOL_GPL vmlinux 0xb5170dfc ip6_dst_lookup_flow +EXPORT_SYMBOL_GPL vmlinux 0xb51fbd64 edac_op_state +EXPORT_SYMBOL_GPL vmlinux 0xb53620d1 pci_vpd_find_info_keyword +EXPORT_SYMBOL_GPL vmlinux 0xb54886ae register_pernet_device +EXPORT_SYMBOL_GPL vmlinux 0xb56b6561 tpm2_shutdown +EXPORT_SYMBOL_GPL vmlinux 0xb58dcfa2 synchronize_sched_expedited +EXPORT_SYMBOL_GPL vmlinux 0xb5a0e11e lpddr2_jedec_addressing_table +EXPORT_SYMBOL_GPL vmlinux 0xb5b06884 crypto_hash_walk_first +EXPORT_SYMBOL_GPL vmlinux 0xb5b3af20 of_property_read_u32_array +EXPORT_SYMBOL_GPL vmlinux 0xb5bc01e2 snd_soc_register_card +EXPORT_SYMBOL_GPL vmlinux 0xb5be30ff pwm_free +EXPORT_SYMBOL_GPL vmlinux 0xb5c1a105 snd_soc_dpcm_get_substream +EXPORT_SYMBOL_GPL vmlinux 0xb5caad8c snd_soc_dai_set_clkdiv +EXPORT_SYMBOL_GPL vmlinux 0xb5cba789 inet_hashinfo_init +EXPORT_SYMBOL_GPL vmlinux 0xb5d4fab3 handle_simple_irq +EXPORT_SYMBOL_GPL vmlinux 0xb5d959f6 get_mtd_device +EXPORT_SYMBOL_GPL vmlinux 0xb5e896fb tpm_get_random +EXPORT_SYMBOL_GPL vmlinux 0xb5f17edf perf_register_guest_info_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xb5f90874 ahci_platform_enable_clks +EXPORT_SYMBOL_GPL vmlinux 0xb614a3d3 blk_unprep_request +EXPORT_SYMBOL_GPL vmlinux 0xb6261484 register_die_notifier +EXPORT_SYMBOL_GPL vmlinux 0xb63a10f5 pinctrl_force_default +EXPORT_SYMBOL_GPL vmlinux 0xb63c6073 driver_attach +EXPORT_SYMBOL_GPL vmlinux 0xb653ad44 tps6586x_read +EXPORT_SYMBOL_GPL vmlinux 0xb67feb85 device_add_property_set +EXPORT_SYMBOL_GPL vmlinux 0xb680e3d5 fuse_sync_release +EXPORT_SYMBOL_GPL vmlinux 0xb680e7f8 snd_soc_add_platform +EXPORT_SYMBOL_GPL vmlinux 0xb6a29e43 wm8350_block_read +EXPORT_SYMBOL_GPL vmlinux 0xb6aeb661 ata_id_c_string +EXPORT_SYMBOL_GPL vmlinux 0xb6b74e18 input_class +EXPORT_SYMBOL_GPL vmlinux 0xb6dadb9c ata_sas_async_probe +EXPORT_SYMBOL_GPL vmlinux 0xb6dfed65 dev_pm_clear_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0xb6e6d99d clk_disable +EXPORT_SYMBOL_GPL vmlinux 0xb6fac02c sk_set_memalloc +EXPORT_SYMBOL_GPL vmlinux 0xb6fe4ed4 user_free_preparse +EXPORT_SYMBOL_GPL vmlinux 0xb717ed76 pci_disable_sriov +EXPORT_SYMBOL_GPL vmlinux 0xb72b98b1 ata_pci_bmdma_clear_simplex +EXPORT_SYMBOL_GPL vmlinux 0xb730e71b devm_regulator_bulk_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0xb7329c06 clk_set_phase +EXPORT_SYMBOL_GPL vmlinux 0xb75671a5 ahci_start_fis_rx +EXPORT_SYMBOL_GPL vmlinux 0xb7639ff4 iommu_present +EXPORT_SYMBOL_GPL vmlinux 0xb769b1c8 ipv4_redirect +EXPORT_SYMBOL_GPL vmlinux 0xb771e6b7 bL_switch_request_cb +EXPORT_SYMBOL_GPL vmlinux 0xb7753c7d wm8350_device_exit +EXPORT_SYMBOL_GPL vmlinux 0xb77cb0a8 cpdma_chan_submit +EXPORT_SYMBOL_GPL vmlinux 0xb78ad37c virtqueue_get_vring_size +EXPORT_SYMBOL_GPL vmlinux 0xb7b12fe8 devm_of_phy_provider_unregister +EXPORT_SYMBOL_GPL vmlinux 0xb7f77027 rtc_tm_to_ktime +EXPORT_SYMBOL_GPL vmlinux 0xb7fe33f6 tcp_set_state +EXPORT_SYMBOL_GPL vmlinux 0xb800fb22 posix_timers_register_clock +EXPORT_SYMBOL_GPL vmlinux 0xb80f814c usb_submit_urb +EXPORT_SYMBOL_GPL vmlinux 0xb8142531 mtd_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xb8148ec7 raw_seq_next +EXPORT_SYMBOL_GPL vmlinux 0xb81d7b0a dev_pm_opp_disable +EXPORT_SYMBOL_GPL vmlinux 0xb82566eb omap_tll_enable +EXPORT_SYMBOL_GPL vmlinux 0xb8346aeb percpu_ida_alloc +EXPORT_SYMBOL_GPL vmlinux 0xb843fd6f blkcg_print_blkgs +EXPORT_SYMBOL_GPL vmlinux 0xb87a59fc fuse_do_open +EXPORT_SYMBOL_GPL vmlinux 0xb8bd95ce usb_enable_ltm +EXPORT_SYMBOL_GPL vmlinux 0xb8cd3a7f nf_logger_put +EXPORT_SYMBOL_GPL vmlinux 0xb8f0019f bsg_job_done +EXPORT_SYMBOL_GPL vmlinux 0xb8fbf814 rtc_set_alarm +EXPORT_SYMBOL_GPL vmlinux 0xb900a563 __rtnl_link_unregister +EXPORT_SYMBOL_GPL vmlinux 0xb9176155 asn1_ber_decoder +EXPORT_SYMBOL_GPL vmlinux 0xb934b58b fb_deferred_io_cleanup +EXPORT_SYMBOL_GPL vmlinux 0xb937f0e4 trace_event_buffer_reserve +EXPORT_SYMBOL_GPL vmlinux 0xb95dc753 devres_remove +EXPORT_SYMBOL_GPL vmlinux 0xb969f289 mmu_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0xb96fc72e gpiod_export_link +EXPORT_SYMBOL_GPL vmlinux 0xb9730d97 sata_pmp_error_handler +EXPORT_SYMBOL_GPL vmlinux 0xb974ce45 bus_set_iommu +EXPORT_SYMBOL_GPL vmlinux 0xb9818cef fat_search_long +EXPORT_SYMBOL_GPL vmlinux 0xb982d85f sock_diag_unregister +EXPORT_SYMBOL_GPL vmlinux 0xb99bf200 sata_link_hardreset +EXPORT_SYMBOL_GPL vmlinux 0xb9b9df41 usb_amd_dev_put +EXPORT_SYMBOL_GPL vmlinux 0xb9c1e617 devm_snd_soc_register_platform +EXPORT_SYMBOL_GPL vmlinux 0xb9c425de register_syscore_ops +EXPORT_SYMBOL_GPL vmlinux 0xb9cea583 usb_block_urb +EXPORT_SYMBOL_GPL vmlinux 0xb9d025c9 llist_del_first +EXPORT_SYMBOL_GPL vmlinux 0xb9e12be7 pci_reset_bridge_secondary_bus +EXPORT_SYMBOL_GPL vmlinux 0xb9e87b94 bL_switcher_trace_trigger +EXPORT_SYMBOL_GPL vmlinux 0xb9f44632 ahci_init_controller +EXPORT_SYMBOL_GPL vmlinux 0xb9f71813 pid_nr_ns +EXPORT_SYMBOL_GPL vmlinux 0xb9f7dfe6 dma_release_channel +EXPORT_SYMBOL_GPL vmlinux 0xba2b7f64 cpufreq_generic_get +EXPORT_SYMBOL_GPL vmlinux 0xba492a20 regulator_can_change_voltage +EXPORT_SYMBOL_GPL vmlinux 0xba4f3c39 irq_create_strict_mappings +EXPORT_SYMBOL_GPL vmlinux 0xba532804 ata_link_online +EXPORT_SYMBOL_GPL vmlinux 0xba53fd7a kernfs_put +EXPORT_SYMBOL_GPL vmlinux 0xba6026f2 vga_default_device +EXPORT_SYMBOL_GPL vmlinux 0xba7be8d4 gpiod_get_array +EXPORT_SYMBOL_GPL vmlinux 0xba8929ea percpu_ref_reinit +EXPORT_SYMBOL_GPL vmlinux 0xbab9a9f0 maxim_charger_currents +EXPORT_SYMBOL_GPL vmlinux 0xbac4b169 crypto_shash_final +EXPORT_SYMBOL_GPL vmlinux 0xbac75f4d tps65912_clear_bits +EXPORT_SYMBOL_GPL vmlinux 0xbafbf300 ata_pio_need_iordy +EXPORT_SYMBOL_GPL vmlinux 0xbb038ce4 perf_unregister_guest_info_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xbb0ab47b debug_locks +EXPORT_SYMBOL_GPL vmlinux 0xbb11cfba klist_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0xbb3a6140 __page_file_index +EXPORT_SYMBOL_GPL vmlinux 0xbb3c6435 iommu_group_remove_device +EXPORT_SYMBOL_GPL vmlinux 0xbb4e956b mbox_free_channel +EXPORT_SYMBOL_GPL vmlinux 0xbb97617c of_irq_to_resource_table +EXPORT_SYMBOL_GPL vmlinux 0xbb9776e0 dev_pm_opp_find_freq_ceil +EXPORT_SYMBOL_GPL vmlinux 0xbba02ab6 debugfs_create_symlink +EXPORT_SYMBOL_GPL vmlinux 0xbba5b00e snd_soc_info_volsw +EXPORT_SYMBOL_GPL vmlinux 0xbbab94ba sdhci_pltfm_unregister +EXPORT_SYMBOL_GPL vmlinux 0xbbbbddfd devm_led_classdev_register +EXPORT_SYMBOL_GPL vmlinux 0xbbbc37ea snd_soc_debugfs_root +EXPORT_SYMBOL_GPL vmlinux 0xbbd7dc4c dm_get_queue_limits +EXPORT_SYMBOL_GPL vmlinux 0xbbfc9652 kill_pid_info_as_cred +EXPORT_SYMBOL_GPL vmlinux 0xbc0f7e00 usb_find_alt_setting +EXPORT_SYMBOL_GPL vmlinux 0xbc1c4b7d tcp_twsk_unique +EXPORT_SYMBOL_GPL vmlinux 0xbc1f09ad ata_host_alloc_pinfo +EXPORT_SYMBOL_GPL vmlinux 0xbc4b170a regmap_multi_reg_write +EXPORT_SYMBOL_GPL vmlinux 0xbc57510a __ip6_local_out +EXPORT_SYMBOL_GPL vmlinux 0xbc585a9c get_kernel_page +EXPORT_SYMBOL_GPL vmlinux 0xbc5f9d57 inet6_csk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0xbc62327d snd_soc_dapm_new_controls +EXPORT_SYMBOL_GPL vmlinux 0xbc8a6272 crypto_unregister_aeads +EXPORT_SYMBOL_GPL vmlinux 0xbc989855 ata_sas_port_stop +EXPORT_SYMBOL_GPL vmlinux 0xbc9ea582 udp4_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0xbcabc310 regulator_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xbcac6160 pm_qos_remove_notifier +EXPORT_SYMBOL_GPL vmlinux 0xbcbaa80a __wake_up_locked_key +EXPORT_SYMBOL_GPL vmlinux 0xbcccfacf input_ff_erase +EXPORT_SYMBOL_GPL vmlinux 0xbccfd4d8 register_oldmem_pfn_is_ram +EXPORT_SYMBOL_GPL vmlinux 0xbcdb9ff4 dma_get_required_mask +EXPORT_SYMBOL_GPL vmlinux 0xbcdd5b99 iommu_group_set_name +EXPORT_SYMBOL_GPL vmlinux 0xbcf89ab6 __wake_up_sync +EXPORT_SYMBOL_GPL vmlinux 0xbcfcb4ee pinctrl_get_group_pins +EXPORT_SYMBOL_GPL vmlinux 0xbd1896df register_mtd_user +EXPORT_SYMBOL_GPL vmlinux 0xbd2de05a crypto_dequeue_request +EXPORT_SYMBOL_GPL vmlinux 0xbd3fe1e3 disable_hardirq +EXPORT_SYMBOL_GPL vmlinux 0xbd4b0cbf sdhci_resume_host +EXPORT_SYMBOL_GPL vmlinux 0xbd4c7d8b pci_ioremap_io +EXPORT_SYMBOL_GPL vmlinux 0xbd4d5bd6 attribute_container_find_class_device +EXPORT_SYMBOL_GPL vmlinux 0xbd4f2566 crypto_shash_finup +EXPORT_SYMBOL_GPL vmlinux 0xbd50007a find_symbol +EXPORT_SYMBOL_GPL vmlinux 0xbd5cb8b9 ring_buffer_resize +EXPORT_SYMBOL_GPL vmlinux 0xbd83f687 pci_reset_pri +EXPORT_SYMBOL_GPL vmlinux 0xbdc87cc6 pwmchip_add +EXPORT_SYMBOL_GPL vmlinux 0xbdcd8768 ata_bmdma_error_handler +EXPORT_SYMBOL_GPL vmlinux 0xbdd295f0 trace_vprintk +EXPORT_SYMBOL_GPL vmlinux 0xbdd2f42a rcu_bh_force_quiescent_state +EXPORT_SYMBOL_GPL vmlinux 0xbde9a12f dev_pm_set_dedicated_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0xbdf512de free_bch +EXPORT_SYMBOL_GPL vmlinux 0xbdf975b2 crypto_tfm_in_queue +EXPORT_SYMBOL_GPL vmlinux 0xbdf9f75a dev_pm_qos_hide_latency_tolerance +EXPORT_SYMBOL_GPL vmlinux 0xbe1887e4 ata_unpack_xfermask +EXPORT_SYMBOL_GPL vmlinux 0xbe3228ea da903x_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xbe472d55 kobject_rename +EXPORT_SYMBOL_GPL vmlinux 0xbe4786e5 snd_soc_unregister_codec +EXPORT_SYMBOL_GPL vmlinux 0xbe687e88 wake_up_all_idle_cpus +EXPORT_SYMBOL_GPL vmlinux 0xbe6df87b mbox_request_channel +EXPORT_SYMBOL_GPL vmlinux 0xbe7c1117 tcp_get_info +EXPORT_SYMBOL_GPL vmlinux 0xbe844267 fuse_get_req_for_background +EXPORT_SYMBOL_GPL vmlinux 0xbe87d7dc sdio_register_driver +EXPORT_SYMBOL_GPL vmlinux 0xbe96dfd8 of_reconfig_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0xbea5ff1e static_key_initialized +EXPORT_SYMBOL_GPL vmlinux 0xbebdd703 snd_pcm_stream_unlock +EXPORT_SYMBOL_GPL vmlinux 0xbecbb3bf mnt_want_write_file +EXPORT_SYMBOL_GPL vmlinux 0xbee21107 dm_internal_suspend_noflush +EXPORT_SYMBOL_GPL vmlinux 0xbf041102 register_vt_notifier +EXPORT_SYMBOL_GPL vmlinux 0xbf0a9a31 unregister_trace_event +EXPORT_SYMBOL_GPL vmlinux 0xbf0ffdd5 class_create_file_ns +EXPORT_SYMBOL_GPL vmlinux 0xbf130078 gpiochip_unlock_as_irq +EXPORT_SYMBOL_GPL vmlinux 0xbf2035b7 blk_abort_request +EXPORT_SYMBOL_GPL vmlinux 0xbf2e4575 mtd_point +EXPORT_SYMBOL_GPL vmlinux 0xbf366a58 wm831x_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0xbf8020cd debugfs_remove_recursive +EXPORT_SYMBOL_GPL vmlinux 0xbf86d4a5 vchan_find_desc +EXPORT_SYMBOL_GPL vmlinux 0xbf8c2e93 tty_port_install +EXPORT_SYMBOL_GPL vmlinux 0xbfa2e3e7 skb_gso_transport_seglen +EXPORT_SYMBOL_GPL vmlinux 0xbfb466db snd_soc_register_component +EXPORT_SYMBOL_GPL vmlinux 0xbfbc5434 pciserial_resume_ports +EXPORT_SYMBOL_GPL vmlinux 0xbfbcddf8 idr_alloc +EXPORT_SYMBOL_GPL vmlinux 0xbfbef1d7 ulpi_viewport_access_ops +EXPORT_SYMBOL_GPL vmlinux 0xbfe5616d tick_broadcast_oneshot_control +EXPORT_SYMBOL_GPL vmlinux 0xbfeb91f4 bus_sort_breadthfirst +EXPORT_SYMBOL_GPL vmlinux 0xc00131cf visitor64 +EXPORT_SYMBOL_GPL vmlinux 0xc0175cca kernel_kobj +EXPORT_SYMBOL_GPL vmlinux 0xc0244b66 omapdss_of_get_first_endpoint +EXPORT_SYMBOL_GPL vmlinux 0xc030f1f9 omap_iommu_save_ctx +EXPORT_SYMBOL_GPL vmlinux 0xc033d121 ata_port_abort +EXPORT_SYMBOL_GPL vmlinux 0xc03a654b memalloc_socks +EXPORT_SYMBOL_GPL vmlinux 0xc0611ba0 udp6_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0xc062140e pwm_can_sleep +EXPORT_SYMBOL_GPL vmlinux 0xc06a9d49 phy_destroy +EXPORT_SYMBOL_GPL vmlinux 0xc081c246 bL_switcher_put_enabled +EXPORT_SYMBOL_GPL vmlinux 0xc08647ff ring_buffer_bytes_cpu +EXPORT_SYMBOL_GPL vmlinux 0xc09655e0 devm_power_supply_register_no_ws +EXPORT_SYMBOL_GPL vmlinux 0xc09ada17 tpm2_do_selftest +EXPORT_SYMBOL_GPL vmlinux 0xc0a96e14 rcu_gp_is_expedited +EXPORT_SYMBOL_GPL vmlinux 0xc0b8c02a sata_sff_hardreset +EXPORT_SYMBOL_GPL vmlinux 0xc0b8fa5f user_update +EXPORT_SYMBOL_GPL vmlinux 0xc0bad1ae skb_append_pagefrags +EXPORT_SYMBOL_GPL vmlinux 0xc0d027ff usb_enable_intel_xhci_ports +EXPORT_SYMBOL_GPL vmlinux 0xc0d26387 kmsg_dump_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc0d2a366 skb_complete_wifi_ack +EXPORT_SYMBOL_GPL vmlinux 0xc0d432b8 pci_generic_config_read +EXPORT_SYMBOL_GPL vmlinux 0xc0d4e3a7 snd_soc_dapm_weak_routes +EXPORT_SYMBOL_GPL vmlinux 0xc0df8865 timerqueue_add +EXPORT_SYMBOL_GPL vmlinux 0xc0e75cec visitor128 +EXPORT_SYMBOL_GPL vmlinux 0xc10abbaa wm831x_auxadc_read_uv +EXPORT_SYMBOL_GPL vmlinux 0xc10dbf5b vfs_fallocate +EXPORT_SYMBOL_GPL vmlinux 0xc17515d7 usb_hcds_loaded +EXPORT_SYMBOL_GPL vmlinux 0xc17ea269 usb_unlocked_disable_lpm +EXPORT_SYMBOL_GPL vmlinux 0xc184c889 devm_of_phy_get_by_index +EXPORT_SYMBOL_GPL vmlinux 0xc18578ed process_srcu +EXPORT_SYMBOL_GPL vmlinux 0xc186b933 inet_csk_listen_stop +EXPORT_SYMBOL_GPL vmlinux 0xc18e0e1e blk_queue_bypass_end +EXPORT_SYMBOL_GPL vmlinux 0xc18ed67a debugfs_rename +EXPORT_SYMBOL_GPL vmlinux 0xc1a26d58 mtd_del_partition +EXPORT_SYMBOL_GPL vmlinux 0xc1a3f1e8 da9052_adc_manual_read +EXPORT_SYMBOL_GPL vmlinux 0xc1a3f8eb sdio_claim_host +EXPORT_SYMBOL_GPL vmlinux 0xc1af75c7 mtd_get_user_prot_info +EXPORT_SYMBOL_GPL vmlinux 0xc1bced6a cleanup_srcu_struct +EXPORT_SYMBOL_GPL vmlinux 0xc1bef247 param_set_bool_enable_only +EXPORT_SYMBOL_GPL vmlinux 0xc1c3fd45 vfs_truncate +EXPORT_SYMBOL_GPL vmlinux 0xc1dd4433 usb_hcd_end_port_resume +EXPORT_SYMBOL_GPL vmlinux 0xc1ed4b18 pm_wakeup_event +EXPORT_SYMBOL_GPL vmlinux 0xc217e5ff sata_lpm_ignore_phy_events +EXPORT_SYMBOL_GPL vmlinux 0xc228c93d device_property_read_string_array +EXPORT_SYMBOL_GPL vmlinux 0xc22a3091 vm_unmap_aliases +EXPORT_SYMBOL_GPL vmlinux 0xc230f81f inode_congested +EXPORT_SYMBOL_GPL vmlinux 0xc24c35f9 usb_unanchor_urb +EXPORT_SYMBOL_GPL vmlinux 0xc280fb46 kdb_register +EXPORT_SYMBOL_GPL vmlinux 0xc2918b58 rq_flush_dcache_pages +EXPORT_SYMBOL_GPL vmlinux 0xc2a14484 watchdog_register_device +EXPORT_SYMBOL_GPL vmlinux 0xc2abb5cc tc3589x_reg_write +EXPORT_SYMBOL_GPL vmlinux 0xc2b29f6e alarmtimer_get_rtcdev +EXPORT_SYMBOL_GPL vmlinux 0xc2b673da __of_genpd_xlate_onecell +EXPORT_SYMBOL_GPL vmlinux 0xc2c0e8db usb_get_descriptor +EXPORT_SYMBOL_GPL vmlinux 0xc2e728dc ata_sff_queue_delayed_work +EXPORT_SYMBOL_GPL vmlinux 0xc2ec25d9 devres_destroy +EXPORT_SYMBOL_GPL vmlinux 0xc30b3a36 scatterwalk_map +EXPORT_SYMBOL_GPL vmlinux 0xc30ef538 crypto_aead_type +EXPORT_SYMBOL_GPL vmlinux 0xc31913ac driver_create_file +EXPORT_SYMBOL_GPL vmlinux 0xc3404b81 sdhci_reset +EXPORT_SYMBOL_GPL vmlinux 0xc340e28c sdev_evt_send_simple +EXPORT_SYMBOL_GPL vmlinux 0xc341ae6d zs_map_object +EXPORT_SYMBOL_GPL vmlinux 0xc35c270b mbox_client_peek_data +EXPORT_SYMBOL_GPL vmlinux 0xc36b5a98 ata_scsi_slave_destroy +EXPORT_SYMBOL_GPL vmlinux 0xc37226a5 tpm_pcr_extend +EXPORT_SYMBOL_GPL vmlinux 0xc37ae8ba gpiod_set_raw_array_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0xc385cb58 perf_num_counters +EXPORT_SYMBOL_GPL vmlinux 0xc3972aae __rt_mutex_init +EXPORT_SYMBOL_GPL vmlinux 0xc3a568b4 usb_hub_clear_tt_buffer +EXPORT_SYMBOL_GPL vmlinux 0xc3b93bba klist_next +EXPORT_SYMBOL_GPL vmlinux 0xc3bed0cd tps6586x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xc3d8b5a3 ata_scsi_change_queue_depth +EXPORT_SYMBOL_GPL vmlinux 0xc3e4a9e8 virtio_config_changed +EXPORT_SYMBOL_GPL vmlinux 0xc41e0178 btree_last +EXPORT_SYMBOL_GPL vmlinux 0xc428068d sata_deb_timing_long +EXPORT_SYMBOL_GPL vmlinux 0xc4392c03 ata_bmdma_start +EXPORT_SYMBOL_GPL vmlinux 0xc443c4e8 blkg_conf_finish +EXPORT_SYMBOL_GPL vmlinux 0xc4443dac of_fdt_unflatten_tree +EXPORT_SYMBOL_GPL vmlinux 0xc451b42b transport_remove_device +EXPORT_SYMBOL_GPL vmlinux 0xc454a8cc device_create_bin_file +EXPORT_SYMBOL_GPL vmlinux 0xc454fc7b twl_get_type +EXPORT_SYMBOL_GPL vmlinux 0xc471c67a twl4030_audio_disable_resource +EXPORT_SYMBOL_GPL vmlinux 0xc48b7ccf ata_mode_string +EXPORT_SYMBOL_GPL vmlinux 0xc48df9ab bd_link_disk_holder +EXPORT_SYMBOL_GPL vmlinux 0xc4a03ec6 virtio_device_freeze +EXPORT_SYMBOL_GPL vmlinux 0xc4a1ecf1 bio_alloc_mddev +EXPORT_SYMBOL_GPL vmlinux 0xc4a41a39 mtd_block_isbad +EXPORT_SYMBOL_GPL vmlinux 0xc4ad10dd ata_sas_sync_probe +EXPORT_SYMBOL_GPL vmlinux 0xc4adfd07 pci_load_and_free_saved_state +EXPORT_SYMBOL_GPL vmlinux 0xc4b3bef6 __tracepoint_xhci_dbg_quirks +EXPORT_SYMBOL_GPL vmlinux 0xc4baab9c power_supply_register_no_ws +EXPORT_SYMBOL_GPL vmlinux 0xc4d8d550 pwm_set_polarity +EXPORT_SYMBOL_GPL vmlinux 0xc4f7eb54 __dev_forward_skb +EXPORT_SYMBOL_GPL vmlinux 0xc5009d20 ref_module +EXPORT_SYMBOL_GPL vmlinux 0xc51d5597 sdio_readsb +EXPORT_SYMBOL_GPL vmlinux 0xc542933a timecounter_read +EXPORT_SYMBOL_GPL vmlinux 0xc575c737 debug_locks_off +EXPORT_SYMBOL_GPL vmlinux 0xc5770678 stmpe_set_altfunc +EXPORT_SYMBOL_GPL vmlinux 0xc59788be pm_generic_poweroff_noirq +EXPORT_SYMBOL_GPL vmlinux 0xc5b7353a mbox_client_txdone +EXPORT_SYMBOL_GPL vmlinux 0xc5d5513e cpdma_chan_process +EXPORT_SYMBOL_GPL vmlinux 0xc5ead03a component_master_add_child +EXPORT_SYMBOL_GPL vmlinux 0xc60d20b7 cpuidle_register_driver +EXPORT_SYMBOL_GPL vmlinux 0xc617f82c unregister_oom_notifier +EXPORT_SYMBOL_GPL vmlinux 0xc61d92f3 devres_get +EXPORT_SYMBOL_GPL vmlinux 0xc61da042 crypto_shoot_alg +EXPORT_SYMBOL_GPL vmlinux 0xc61f63f9 kobject_get_path +EXPORT_SYMBOL_GPL vmlinux 0xc620a810 debugfs_create_file_size +EXPORT_SYMBOL_GPL vmlinux 0xc622335a gpiochip_request_own_desc +EXPORT_SYMBOL_GPL vmlinux 0xc63d847d ktime_get_mono_fast_ns +EXPORT_SYMBOL_GPL vmlinux 0xc63f4e08 of_irq_parse_pci +EXPORT_SYMBOL_GPL vmlinux 0xc649229a clk_register_gate +EXPORT_SYMBOL_GPL vmlinux 0xc65a99d4 evm_inode_init_security +EXPORT_SYMBOL_GPL vmlinux 0xc65aa8ac xfrm_audit_state_icvfail +EXPORT_SYMBOL_GPL vmlinux 0xc65d3eed ring_buffer_entries_cpu +EXPORT_SYMBOL_GPL vmlinux 0xc66b77b1 iommu_group_set_iommudata +EXPORT_SYMBOL_GPL vmlinux 0xc6810e93 of_irq_get +EXPORT_SYMBOL_GPL vmlinux 0xc685c037 cpdma_check_free_tx_desc +EXPORT_SYMBOL_GPL vmlinux 0xc69578cc cpufreq_generic_attr +EXPORT_SYMBOL_GPL vmlinux 0xc69b2168 usb_hcd_link_urb_to_ep +EXPORT_SYMBOL_GPL vmlinux 0xc69b7ee5 zs_destroy_pool +EXPORT_SYMBOL_GPL vmlinux 0xc6a4a872 __clk_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0xc6a5a12c omap_dm_timer_write_counter +EXPORT_SYMBOL_GPL vmlinux 0xc6a85d77 regmap_field_update_bits +EXPORT_SYMBOL_GPL vmlinux 0xc6aecb24 sdio_readw +EXPORT_SYMBOL_GPL vmlinux 0xc6c0aba3 clk_fractional_divider_ops +EXPORT_SYMBOL_GPL vmlinux 0xc6e51a73 inet_hash_connect +EXPORT_SYMBOL_GPL vmlinux 0xc6ec1dd4 power_supply_get_by_name +EXPORT_SYMBOL_GPL vmlinux 0xc6ed8e92 inet_csk_search_req +EXPORT_SYMBOL_GPL vmlinux 0xc70f3e03 rt_mutex_lock +EXPORT_SYMBOL_GPL vmlinux 0xc715ecf9 powercap_unregister_control_type +EXPORT_SYMBOL_GPL vmlinux 0xc72e1233 __trace_bprintk +EXPORT_SYMBOL_GPL vmlinux 0xc742d6fc __module_text_address +EXPORT_SYMBOL_GPL vmlinux 0xc7650a1b snd_soc_info_enum_double +EXPORT_SYMBOL_GPL vmlinux 0xc76d6ada trace_event_buffer_lock_reserve +EXPORT_SYMBOL_GPL vmlinux 0xc77fdae9 ata_host_detach +EXPORT_SYMBOL_GPL vmlinux 0xc7812432 usb_add_phy +EXPORT_SYMBOL_GPL vmlinux 0xc787101b of_dma_controller_register +EXPORT_SYMBOL_GPL vmlinux 0xc7a1840e llist_add_batch +EXPORT_SYMBOL_GPL vmlinux 0xc7acc1a7 wm8350_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xc7c6391c mpi_set_buffer +EXPORT_SYMBOL_GPL vmlinux 0xc7d6c497 device_reset +EXPORT_SYMBOL_GPL vmlinux 0xc7d9c46b sdhci_send_command +EXPORT_SYMBOL_GPL vmlinux 0xc7e39bca ring_buffer_dropped_events_cpu +EXPORT_SYMBOL_GPL vmlinux 0xc800eca0 adp5520_read +EXPORT_SYMBOL_GPL vmlinux 0xc81cab7c _snd_pcm_stream_lock_irqsave +EXPORT_SYMBOL_GPL vmlinux 0xc8269f94 snd_soc_params_to_frame_size +EXPORT_SYMBOL_GPL vmlinux 0xc845b11d stmpe_block_write +EXPORT_SYMBOL_GPL vmlinux 0xc8567b5b use_mm +EXPORT_SYMBOL_GPL vmlinux 0xc85b5f2c __hvc_resize +EXPORT_SYMBOL_GPL vmlinux 0xc87c1f84 ktime_get +EXPORT_SYMBOL_GPL vmlinux 0xc8815936 ata_dummy_port_info +EXPORT_SYMBOL_GPL vmlinux 0xc88d703c attribute_container_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc8add232 ring_buffer_record_disable +EXPORT_SYMBOL_GPL vmlinux 0xc8cc38f2 raw_hash_sk +EXPORT_SYMBOL_GPL vmlinux 0xc8d4a38c posix_clock_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc8de802f cn_netlink_send +EXPORT_SYMBOL_GPL vmlinux 0xc8ffdbc9 smpboot_unregister_percpu_thread +EXPORT_SYMBOL_GPL vmlinux 0xc91277a1 kgdb_schedule_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0xc921fed7 gpiochip_add_pingroup_range +EXPORT_SYMBOL_GPL vmlinux 0xc929a521 dma_buf_detach +EXPORT_SYMBOL_GPL vmlinux 0xc930f2d9 __trace_note_message +EXPORT_SYMBOL_GPL vmlinux 0xc9513c86 __platform_driver_probe +EXPORT_SYMBOL_GPL vmlinux 0xc9561772 fb_destroy_modelist +EXPORT_SYMBOL_GPL vmlinux 0xc97c7334 alarm_cancel +EXPORT_SYMBOL_GPL vmlinux 0xc97d1140 cpufreq_cooling_get_level +EXPORT_SYMBOL_GPL vmlinux 0xc982b917 snd_soc_cnew +EXPORT_SYMBOL_GPL vmlinux 0xc99fc890 snd_dmaengine_pcm_prepare_slave_config +EXPORT_SYMBOL_GPL vmlinux 0xc9c94316 ata_port_wait_eh +EXPORT_SYMBOL_GPL vmlinux 0xc9cc46f4 sock_prot_inuse_get +EXPORT_SYMBOL_GPL vmlinux 0xc9e6166c sdhci_pltfm_register +EXPORT_SYMBOL_GPL vmlinux 0xc9ec4e21 free_percpu +EXPORT_SYMBOL_GPL vmlinux 0xca095ba3 thermal_zone_bind_cooling_device +EXPORT_SYMBOL_GPL vmlinux 0xca0b05b3 bus_get_kset +EXPORT_SYMBOL_GPL vmlinux 0xca17c839 pm_generic_runtime_suspend +EXPORT_SYMBOL_GPL vmlinux 0xca2dcba6 __platform_driver_register +EXPORT_SYMBOL_GPL vmlinux 0xca517707 pinctrl_utils_add_map_mux +EXPORT_SYMBOL_GPL vmlinux 0xca5452b4 snd_soc_dai_set_fmt +EXPORT_SYMBOL_GPL vmlinux 0xca5a7a82 blkcg_policy_unregister +EXPORT_SYMBOL_GPL vmlinux 0xca6e711c usb_root_hub_lost_power +EXPORT_SYMBOL_GPL vmlinux 0xca7d8764 kthread_freezable_should_stop +EXPORT_SYMBOL_GPL vmlinux 0xca877350 transport_class_unregister +EXPORT_SYMBOL_GPL vmlinux 0xca8b50f2 fwnode_property_read_u64_array +EXPORT_SYMBOL_GPL vmlinux 0xca948b52 snd_soc_info_xr_sx +EXPORT_SYMBOL_GPL vmlinux 0xcabe04de cpuidle_resume_and_unlock +EXPORT_SYMBOL_GPL vmlinux 0xcad0e2c5 platform_bus_type +EXPORT_SYMBOL_GPL vmlinux 0xcad5d894 dma_buf_fd +EXPORT_SYMBOL_GPL vmlinux 0xcadd40f6 mbox_send_message +EXPORT_SYMBOL_GPL vmlinux 0xcaede0ce pci_disable_pcie_error_reporting +EXPORT_SYMBOL_GPL vmlinux 0xcaf3f875 of_clk_get_parent_count +EXPORT_SYMBOL_GPL vmlinux 0xcb15eee9 sdhci_pci_get_data +EXPORT_SYMBOL_GPL vmlinux 0xcb202650 swiotlb_map_page +EXPORT_SYMBOL_GPL vmlinux 0xcb32cb36 musb_writeb +EXPORT_SYMBOL_GPL vmlinux 0xcb33ed95 rt_mutex_destroy +EXPORT_SYMBOL_GPL vmlinux 0xcb3cfbf1 cpufreq_generic_frequency_table_verify +EXPORT_SYMBOL_GPL vmlinux 0xcb469d2b ddebug_add_module +EXPORT_SYMBOL_GPL vmlinux 0xcb5a5379 ata_sff_queue_pio_task +EXPORT_SYMBOL_GPL vmlinux 0xcb5b6ab5 alarm_forward +EXPORT_SYMBOL_GPL vmlinux 0xcb62f56c mtd_lock +EXPORT_SYMBOL_GPL vmlinux 0xcb652f9c mtd_read_fact_prot_reg +EXPORT_SYMBOL_GPL vmlinux 0xcb6eee7a of_get_nand_ecc_strength +EXPORT_SYMBOL_GPL vmlinux 0xcb6fc07b dev_get_regmap +EXPORT_SYMBOL_GPL vmlinux 0xcb723b65 smpboot_update_cpumask_percpu_thread +EXPORT_SYMBOL_GPL vmlinux 0xcb87c34b ping_proc_unregister +EXPORT_SYMBOL_GPL vmlinux 0xcbe2d66f pci_enable_pasid +EXPORT_SYMBOL_GPL vmlinux 0xcbe56bc2 zs_get_total_pages +EXPORT_SYMBOL_GPL vmlinux 0xcbee20b2 get_cpu_iowait_time_us +EXPORT_SYMBOL_GPL vmlinux 0xcc42d97f max8997_read_reg +EXPORT_SYMBOL_GPL vmlinux 0xcc46bd6b sdio_f0_readb +EXPORT_SYMBOL_GPL vmlinux 0xcc51b8ad pci_cfg_access_unlock +EXPORT_SYMBOL_GPL vmlinux 0xcc5f0fc6 regmap_field_read +EXPORT_SYMBOL_GPL vmlinux 0xcc6b3469 sata_pmp_qc_defer_cmd_switch +EXPORT_SYMBOL_GPL vmlinux 0xcc7ef011 __rtnl_af_unregister +EXPORT_SYMBOL_GPL vmlinux 0xcc84cf39 sysfs_remove_mount_point +EXPORT_SYMBOL_GPL vmlinux 0xcc85fcb6 async_schedule +EXPORT_SYMBOL_GPL vmlinux 0xcc86a549 sdhci_runtime_resume_host +EXPORT_SYMBOL_GPL vmlinux 0xcc947ce1 virtqueue_enable_cb +EXPORT_SYMBOL_GPL vmlinux 0xcc964db0 disk_part_iter_init +EXPORT_SYMBOL_GPL vmlinux 0xccb60c2a sdhci_runtime_suspend_host +EXPORT_SYMBOL_GPL vmlinux 0xcccfb2fa sata_deb_timing_hotplug +EXPORT_SYMBOL_GPL vmlinux 0xcceb9763 ip_route_output_flow +EXPORT_SYMBOL_GPL vmlinux 0xccecc1f4 ip_tunnel_get_stats64 +EXPORT_SYMBOL_GPL vmlinux 0xcd045fee bus_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0xcd06abe3 crypto_aead_setauthsize +EXPORT_SYMBOL_GPL vmlinux 0xcd14d1cd wm8350_block_write +EXPORT_SYMBOL_GPL vmlinux 0xcd166350 wm831x_reg_lock +EXPORT_SYMBOL_GPL vmlinux 0xcd29adbc ata_pci_device_resume +EXPORT_SYMBOL_GPL vmlinux 0xcd475155 list_lru_walk_one +EXPORT_SYMBOL_GPL vmlinux 0xcd55d51b of_phy_get +EXPORT_SYMBOL_GPL vmlinux 0xcd7bbf75 crypto_alloc_shash +EXPORT_SYMBOL_GPL vmlinux 0xcd8cc4ba elv_unregister +EXPORT_SYMBOL_GPL vmlinux 0xcd91b127 system_highpri_wq +EXPORT_SYMBOL_GPL vmlinux 0xcd974f00 rcu_all_qs +EXPORT_SYMBOL_GPL vmlinux 0xcdb5b996 devm_devfreq_event_remove_edev +EXPORT_SYMBOL_GPL vmlinux 0xcdb6adcc ras_userspace_consumers +EXPORT_SYMBOL_GPL vmlinux 0xcdc0997f sdio_enable_func +EXPORT_SYMBOL_GPL vmlinux 0xcdc3cf14 of_gen_pool_get +EXPORT_SYMBOL_GPL vmlinux 0xcdca3691 nr_irqs +EXPORT_SYMBOL_GPL vmlinux 0xce028261 ping_common_sendmsg +EXPORT_SYMBOL_GPL vmlinux 0xce084f0c wm5110_i2c_regmap +EXPORT_SYMBOL_GPL vmlinux 0xce277f77 cpsw_ale_del_ucast +EXPORT_SYMBOL_GPL vmlinux 0xce31d371 __blkg_prfill_rwstat +EXPORT_SYMBOL_GPL vmlinux 0xce3a8e42 pci_probe_reset_bus +EXPORT_SYMBOL_GPL vmlinux 0xce413c52 irq_map_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0xce54db1d devfreq_event_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0xce60b79a usb_alloc_streams +EXPORT_SYMBOL_GPL vmlinux 0xce6a9d9a trace_current_buffer_discard_commit +EXPORT_SYMBOL_GPL vmlinux 0xce6db656 rcu_is_watching +EXPORT_SYMBOL_GPL vmlinux 0xcea0922e i2c_generic_scl_recovery +EXPORT_SYMBOL_GPL vmlinux 0xceac2230 regulator_get_bypass_regmap +EXPORT_SYMBOL_GPL vmlinux 0xcec926f0 pm_generic_thaw_noirq +EXPORT_SYMBOL_GPL vmlinux 0xcecb1e0b elv_register +EXPORT_SYMBOL_GPL vmlinux 0xcede5e3c snd_soc_dapm_force_enable_pin +EXPORT_SYMBOL_GPL vmlinux 0xcee1641c kgdb_unregister_nmi_console +EXPORT_SYMBOL_GPL vmlinux 0xcefd62de rtnl_af_register +EXPORT_SYMBOL_GPL vmlinux 0xcf0385b5 pm_runtime_force_suspend +EXPORT_SYMBOL_GPL vmlinux 0xcf10a369 cpdma_ctlr_create +EXPORT_SYMBOL_GPL vmlinux 0xcf247298 pci_bus_resource_n +EXPORT_SYMBOL_GPL vmlinux 0xcf2fd676 gpiod_direction_output_raw +EXPORT_SYMBOL_GPL vmlinux 0xcf54ea93 async_unregister_domain +EXPORT_SYMBOL_GPL vmlinux 0xcf80ab3a tps6586x_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0xcf8cfeb2 iommu_group_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0xcf995dff ata_sff_lost_interrupt +EXPORT_SYMBOL_GPL vmlinux 0xcfadbd17 regmap_init_spi +EXPORT_SYMBOL_GPL vmlinux 0xcfb279e9 skcipher_geniv_alloc +EXPORT_SYMBOL_GPL vmlinux 0xcfb5871c irq_work_queue +EXPORT_SYMBOL_GPL vmlinux 0xcfc68341 synchronize_rcu_bh +EXPORT_SYMBOL_GPL vmlinux 0xcffb0dc2 snd_soc_register_codec +EXPORT_SYMBOL_GPL vmlinux 0xd00a295f rdev_clear_badblocks +EXPORT_SYMBOL_GPL vmlinux 0xd03c7700 secure_ipv4_port_ephemeral +EXPORT_SYMBOL_GPL vmlinux 0xd046d7f1 uart_set_options +EXPORT_SYMBOL_GPL vmlinux 0xd05b4ecf uart_console_write +EXPORT_SYMBOL_GPL vmlinux 0xd0604c3e rhashtable_insert_rehash +EXPORT_SYMBOL_GPL vmlinux 0xd064e113 dev_pm_qos_add_ancestor_request +EXPORT_SYMBOL_GPL vmlinux 0xd06524ba raw_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd067d3c5 system_freezable_power_efficient_wq +EXPORT_SYMBOL_GPL vmlinux 0xd067eee6 tcp_register_congestion_control +EXPORT_SYMBOL_GPL vmlinux 0xd087bf58 sm501_misc_control +EXPORT_SYMBOL_GPL vmlinux 0xd094fee7 of_irq_parse_one +EXPORT_SYMBOL_GPL vmlinux 0xd0aa5c64 ip6_dst_lookup +EXPORT_SYMBOL_GPL vmlinux 0xd0b74aa1 tc3589x_block_read +EXPORT_SYMBOL_GPL vmlinux 0xd0b82563 get_cpu_device +EXPORT_SYMBOL_GPL vmlinux 0xd0c05159 emergency_restart +EXPORT_SYMBOL_GPL vmlinux 0xd0c22104 tcp_cong_avoid_ai +EXPORT_SYMBOL_GPL vmlinux 0xd0cdb9d0 reservation_object_test_signaled_rcu +EXPORT_SYMBOL_GPL vmlinux 0xd0d3de34 subsys_dev_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0xd0dbd929 cpsw_ale_flush_multicast +EXPORT_SYMBOL_GPL vmlinux 0xd0f6d60b ohci_resume +EXPORT_SYMBOL_GPL vmlinux 0xd10e1d52 cpuidle_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0xd131eb4a blkcg_root +EXPORT_SYMBOL_GPL vmlinux 0xd13b8c29 ata_sff_error_handler +EXPORT_SYMBOL_GPL vmlinux 0xd1468b57 ahci_dev_classify +EXPORT_SYMBOL_GPL vmlinux 0xd1590985 usb_unlink_urb +EXPORT_SYMBOL_GPL vmlinux 0xd162175b amba_apb_device_add_res +EXPORT_SYMBOL_GPL vmlinux 0xd16712f3 crypto_check_attr_type +EXPORT_SYMBOL_GPL vmlinux 0xd16ace09 ahci_start_engine +EXPORT_SYMBOL_GPL vmlinux 0xd171edab ip6_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0xd1822f0b cpufreq_show_cpus +EXPORT_SYMBOL_GPL vmlinux 0xd1ab07ee sock_diag_put_meminfo +EXPORT_SYMBOL_GPL vmlinux 0xd1b183b1 swiotlb_tbl_map_single +EXPORT_SYMBOL_GPL vmlinux 0xd1bf657f regulator_set_load +EXPORT_SYMBOL_GPL vmlinux 0xd1bfa40b ata_bmdma_port_intr +EXPORT_SYMBOL_GPL vmlinux 0xd1c146de devres_alloc +EXPORT_SYMBOL_GPL vmlinux 0xd1f0a011 usb_kill_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0xd1f2eee2 nf_logger_find_get +EXPORT_SYMBOL_GPL vmlinux 0xd1f84c0a tpm2_calc_ordinal_duration +EXPORT_SYMBOL_GPL vmlinux 0xd1fec9f1 devres_release +EXPORT_SYMBOL_GPL vmlinux 0xd204e146 gen_pool_get +EXPORT_SYMBOL_GPL vmlinux 0xd20bf6ba dcookie_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd210c1bb uart_insert_char +EXPORT_SYMBOL_GPL vmlinux 0xd210f05b reservation_object_wait_timeout_rcu +EXPORT_SYMBOL_GPL vmlinux 0xd217bede tcp_unregister_congestion_control +EXPORT_SYMBOL_GPL vmlinux 0xd217e9e6 trace_set_clr_event +EXPORT_SYMBOL_GPL vmlinux 0xd219e9f8 blk_mq_free_hctx_request +EXPORT_SYMBOL_GPL vmlinux 0xd2290f21 blk_mq_cancel_requeue_work +EXPORT_SYMBOL_GPL vmlinux 0xd24c6407 iommu_domain_window_enable +EXPORT_SYMBOL_GPL vmlinux 0xd252498e rhashtable_destroy +EXPORT_SYMBOL_GPL vmlinux 0xd273b1b1 __round_jiffies_up_relative +EXPORT_SYMBOL_GPL vmlinux 0xd2a1fb5d sdhci_pltfm_free +EXPORT_SYMBOL_GPL vmlinux 0xd2aaeb4e kmsg_dump_get_buffer +EXPORT_SYMBOL_GPL vmlinux 0xd2b44776 extcon_dev_register +EXPORT_SYMBOL_GPL vmlinux 0xd2c091fd system_trusted_keyring +EXPORT_SYMBOL_GPL vmlinux 0xd2c5e6ce set_cpus_allowed_ptr +EXPORT_SYMBOL_GPL vmlinux 0xd2d12533 vring_del_virtqueue +EXPORT_SYMBOL_GPL vmlinux 0xd2d7be79 debugfs_create_devm_seqfile +EXPORT_SYMBOL_GPL vmlinux 0xd2de7533 unregister_kprobe +EXPORT_SYMBOL_GPL vmlinux 0xd2ded8ac ata_sff_qc_issue +EXPORT_SYMBOL_GPL vmlinux 0xd2edf4b7 ata_get_cmd_descript +EXPORT_SYMBOL_GPL vmlinux 0xd31b489d snd_soc_limit_volume +EXPORT_SYMBOL_GPL vmlinux 0xd31e20ab xhci_gen_setup +EXPORT_SYMBOL_GPL vmlinux 0xd330d318 irq_create_direct_mapping +EXPORT_SYMBOL_GPL vmlinux 0xd33ada8b cci_probed +EXPORT_SYMBOL_GPL vmlinux 0xd3941546 exportfs_decode_fh +EXPORT_SYMBOL_GPL vmlinux 0xd3b8e766 ata_noop_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0xd3bd0410 ipv6_stub +EXPORT_SYMBOL_GPL vmlinux 0xd3dd3076 tun_get_socket +EXPORT_SYMBOL_GPL vmlinux 0xd3f85788 usb_deregister_dev +EXPORT_SYMBOL_GPL vmlinux 0xd4034828 system_freezable_wq +EXPORT_SYMBOL_GPL vmlinux 0xd40de9c4 of_clk_src_simple_get +EXPORT_SYMBOL_GPL vmlinux 0xd41fffab interval_tree_iter_first +EXPORT_SYMBOL_GPL vmlinux 0xd433a53f pci_user_write_config_dword +EXPORT_SYMBOL_GPL vmlinux 0xd44a5eac kgdb_register_nmi_console +EXPORT_SYMBOL_GPL vmlinux 0xd44c2f38 cci_disable_port_by_cpu +EXPORT_SYMBOL_GPL vmlinux 0xd45df4b1 regmap_update_bits_check +EXPORT_SYMBOL_GPL vmlinux 0xd4a0cb66 crypto_alg_lookup +EXPORT_SYMBOL_GPL vmlinux 0xd4b70eb4 thermal_zone_of_sensor_register +EXPORT_SYMBOL_GPL vmlinux 0xd4c14632 system_unbound_wq +EXPORT_SYMBOL_GPL vmlinux 0xd4d1166d i2c_bus_type +EXPORT_SYMBOL_GPL vmlinux 0xd4df7a57 blkg_lookup_create +EXPORT_SYMBOL_GPL vmlinux 0xd4f8a88f vfs_listxattr +EXPORT_SYMBOL_GPL vmlinux 0xd4fd94dc virtqueue_get_avail +EXPORT_SYMBOL_GPL vmlinux 0xd50457cc seq_open_net +EXPORT_SYMBOL_GPL vmlinux 0xd513232b devm_regulator_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0xd53a4be7 devres_find +EXPORT_SYMBOL_GPL vmlinux 0xd53da4e3 omap_dm_timers_active +EXPORT_SYMBOL_GPL vmlinux 0xd544ec69 scsi_target_unblock +EXPORT_SYMBOL_GPL vmlinux 0xd55ad93b iommu_group_get_iommudata +EXPORT_SYMBOL_GPL vmlinux 0xd58582fa of_prop_next_u32 +EXPORT_SYMBOL_GPL vmlinux 0xd589fdd6 pci_common_swizzle +EXPORT_SYMBOL_GPL vmlinux 0xd5a8e733 __tracepoint_remove_device_from_group +EXPORT_SYMBOL_GPL vmlinux 0xd5bd7dac ring_buffer_record_enable_cpu +EXPORT_SYMBOL_GPL vmlinux 0xd5ee1d7c pci_rescan_bus +EXPORT_SYMBOL_GPL vmlinux 0xd5f44eeb ip6_flush_pending_frames +EXPORT_SYMBOL_GPL vmlinux 0xd60c99b5 rcu_batches_completed_bh +EXPORT_SYMBOL_GPL vmlinux 0xd61019e8 phy_init +EXPORT_SYMBOL_GPL vmlinux 0xd62cf07c tpmm_chip_alloc +EXPORT_SYMBOL_GPL vmlinux 0xd6369a73 usb_deregister_device_driver +EXPORT_SYMBOL_GPL vmlinux 0xd6684563 add_page_wait_queue +EXPORT_SYMBOL_GPL vmlinux 0xd67364f7 eventfd_ctx_fdget +EXPORT_SYMBOL_GPL vmlinux 0xd6770c18 snd_dmaengine_pcm_set_config_from_dai_data +EXPORT_SYMBOL_GPL vmlinux 0xd679e13d tc3589x_block_write +EXPORT_SYMBOL_GPL vmlinux 0xd697c9f3 console_drivers +EXPORT_SYMBOL_GPL vmlinux 0xd6a3a473 usb_reset_endpoint +EXPORT_SYMBOL_GPL vmlinux 0xd6a970e1 bgpio_remove +EXPORT_SYMBOL_GPL vmlinux 0xd6c0c497 snd_soc_bytes_put +EXPORT_SYMBOL_GPL vmlinux 0xd705b4c7 schedule_hrtimeout +EXPORT_SYMBOL_GPL vmlinux 0xd70f3ce3 regulator_list_hardware_vsel +EXPORT_SYMBOL_GPL vmlinux 0xd7125f80 ima_file_check +EXPORT_SYMBOL_GPL vmlinux 0xd7179bf3 register_kretprobe +EXPORT_SYMBOL_GPL vmlinux 0xd74a6d5a xfrm_inner_extract_output +EXPORT_SYMBOL_GPL vmlinux 0xd768e985 regulator_has_full_constraints +EXPORT_SYMBOL_GPL vmlinux 0xd76d3e72 blkcipher_walk_virt_block +EXPORT_SYMBOL_GPL vmlinux 0xd778db49 __tracepoint_suspend_resume +EXPORT_SYMBOL_GPL vmlinux 0xd77c0bc8 klist_remove +EXPORT_SYMBOL_GPL vmlinux 0xd78a4ae1 cpu_device_create +EXPORT_SYMBOL_GPL vmlinux 0xd7c6bc1e class_compat_create_link +EXPORT_SYMBOL_GPL vmlinux 0xd7d79132 put_online_cpus +EXPORT_SYMBOL_GPL vmlinux 0xd7d79af8 pciserial_init_ports +EXPORT_SYMBOL_GPL vmlinux 0xd7e814bf anon_inode_getfile +EXPORT_SYMBOL_GPL vmlinux 0xd81643db cpufreq_table_validate_and_show +EXPORT_SYMBOL_GPL vmlinux 0xd819c9e1 regulator_disable_deferred +EXPORT_SYMBOL_GPL vmlinux 0xd81de62c ring_buffer_record_enable +EXPORT_SYMBOL_GPL vmlinux 0xd820c283 eventfd_ctx_remove_wait_queue +EXPORT_SYMBOL_GPL vmlinux 0xd859257a usb_kill_urb +EXPORT_SYMBOL_GPL vmlinux 0xd869b8b8 devm_pwm_put +EXPORT_SYMBOL_GPL vmlinux 0xd8700acd platform_device_put +EXPORT_SYMBOL_GPL vmlinux 0xd87601cc ring_buffer_unlock_commit +EXPORT_SYMBOL_GPL vmlinux 0xd87fc0a0 usb_amd_prefetch_quirk +EXPORT_SYMBOL_GPL vmlinux 0xd8ae7f43 rhashtable_walk_exit +EXPORT_SYMBOL_GPL vmlinux 0xd8ba0d03 sock_diag_register +EXPORT_SYMBOL_GPL vmlinux 0xd8e3c171 devm_phy_destroy +EXPORT_SYMBOL_GPL vmlinux 0xd8e8d9c2 pci_check_and_unmask_intx +EXPORT_SYMBOL_GPL vmlinux 0xd8f86558 of_get_display_timing +EXPORT_SYMBOL_GPL vmlinux 0xd9109afb tty_init_termios +EXPORT_SYMBOL_GPL vmlinux 0xd91500c7 regmap_raw_write_async +EXPORT_SYMBOL_GPL vmlinux 0xd942d353 ring_buffer_record_off +EXPORT_SYMBOL_GPL vmlinux 0xd94a8779 uprobe_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd94aa457 display_timings_release +EXPORT_SYMBOL_GPL vmlinux 0xd95050a4 pm_generic_restore_noirq +EXPORT_SYMBOL_GPL vmlinux 0xd958cbd5 imx_pcm_fiq_exit +EXPORT_SYMBOL_GPL vmlinux 0xd96babb4 interval_tree_iter_next +EXPORT_SYMBOL_GPL vmlinux 0xd96e0870 devm_spi_register_master +EXPORT_SYMBOL_GPL vmlinux 0xd97d5748 usb_get_hcd +EXPORT_SYMBOL_GPL vmlinux 0xd9881b17 nfq_ct_hook +EXPORT_SYMBOL_GPL vmlinux 0xd98f444f snd_soc_codec_set_sysclk +EXPORT_SYMBOL_GPL vmlinux 0xd99413c0 phy_pm_runtime_get_sync +EXPORT_SYMBOL_GPL vmlinux 0xd99a2174 ahci_platform_disable_regulators +EXPORT_SYMBOL_GPL vmlinux 0xd99a869e swiotlb_unmap_page +EXPORT_SYMBOL_GPL vmlinux 0xd9a2c6f2 dev_pm_qos_hide_latency_limit +EXPORT_SYMBOL_GPL vmlinux 0xd9a5b562 ata_sff_tf_load +EXPORT_SYMBOL_GPL vmlinux 0xd9af1192 wakeup_source_register +EXPORT_SYMBOL_GPL vmlinux 0xd9e297c5 led_trigger_remove +EXPORT_SYMBOL_GPL vmlinux 0xd9ecb670 ring_buffer_overruns +EXPORT_SYMBOL_GPL vmlinux 0xd9ed1180 dma_buf_end_cpu_access +EXPORT_SYMBOL_GPL vmlinux 0xda0acc5c locks_release_private +EXPORT_SYMBOL_GPL vmlinux 0xda3cb116 debugfs_remove +EXPORT_SYMBOL_GPL vmlinux 0xda440411 crypto_init_shash_spawn +EXPORT_SYMBOL_GPL vmlinux 0xda614064 device_register +EXPORT_SYMBOL_GPL vmlinux 0xda6406c1 __inet_lookup_listener +EXPORT_SYMBOL_GPL vmlinux 0xda6e6fcd ata_do_set_mode +EXPORT_SYMBOL_GPL vmlinux 0xda8c680c swiotlb_tbl_sync_single +EXPORT_SYMBOL_GPL vmlinux 0xda986a84 regmap_fields_update_bits +EXPORT_SYMBOL_GPL vmlinux 0xdaace936 rhashtable_free_and_destroy +EXPORT_SYMBOL_GPL vmlinux 0xdab44680 kobj_sysfs_ops +EXPORT_SYMBOL_GPL vmlinux 0xdae715e0 videomode_from_timing +EXPORT_SYMBOL_GPL vmlinux 0xdaed3073 timerqueue_del +EXPORT_SYMBOL_GPL vmlinux 0xdaf457a1 omap_mcbsp_st_add_controls +EXPORT_SYMBOL_GPL vmlinux 0xdaf4dfb3 fb_mode_option +EXPORT_SYMBOL_GPL vmlinux 0xdafa7f8f sata_link_scr_lpm +EXPORT_SYMBOL_GPL vmlinux 0xdb088cb1 pm_qos_add_request +EXPORT_SYMBOL_GPL vmlinux 0xdb184d44 usb_hcd_platform_shutdown +EXPORT_SYMBOL_GPL vmlinux 0xdb35b595 inode_sb_list_add +EXPORT_SYMBOL_GPL vmlinux 0xdb38e67b x509_request_asymmetric_key +EXPORT_SYMBOL_GPL vmlinux 0xdb39b38a usb_reset_device +EXPORT_SYMBOL_GPL vmlinux 0xdb6fe32c ping_close +EXPORT_SYMBOL_GPL vmlinux 0xdb83d920 crypto_ahash_digest +EXPORT_SYMBOL_GPL vmlinux 0xdb8a1b3f usermodehelper_read_trylock +EXPORT_SYMBOL_GPL vmlinux 0xdb93a4d3 mtd_read_user_prot_reg +EXPORT_SYMBOL_GPL vmlinux 0xdb945146 sysfs_unmerge_group +EXPORT_SYMBOL_GPL vmlinux 0xdbea399f irq_setup_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0xdbebdd87 dev_pm_disable_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0xdbf7cb70 mpi_get_nbits +EXPORT_SYMBOL_GPL vmlinux 0xdc0d74c0 thermal_zone_get_temp +EXPORT_SYMBOL_GPL vmlinux 0xdc10d600 tty_perform_flush +EXPORT_SYMBOL_GPL vmlinux 0xdc133ca2 pm_generic_poweroff +EXPORT_SYMBOL_GPL vmlinux 0xdc145698 bpf_prog_alloc +EXPORT_SYMBOL_GPL vmlinux 0xdc224b16 get_kernel_pages +EXPORT_SYMBOL_GPL vmlinux 0xdc22a798 dev_attr_sw_activity +EXPORT_SYMBOL_GPL vmlinux 0xdc3fbed2 proc_get_parent_data +EXPORT_SYMBOL_GPL vmlinux 0xdc4261c1 snd_soc_write +EXPORT_SYMBOL_GPL vmlinux 0xdc461430 irq_set_affinity_hint +EXPORT_SYMBOL_GPL vmlinux 0xdc4e3372 __get_user_pages_fast +EXPORT_SYMBOL_GPL vmlinux 0xdc52766d omap_dm_timer_request +EXPORT_SYMBOL_GPL vmlinux 0xdc688e74 __pci_complete_power_transition +EXPORT_SYMBOL_GPL vmlinux 0xdc789a20 ata_base_port_ops +EXPORT_SYMBOL_GPL vmlinux 0xdc825d6c usb_amd_quirk_pll_disable +EXPORT_SYMBOL_GPL vmlinux 0xdc894860 led_trigger_register +EXPORT_SYMBOL_GPL vmlinux 0xdc97af2e syscore_suspend +EXPORT_SYMBOL_GPL vmlinux 0xdc99d18c devm_regulator_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0xdc9d57dd da9052_disable_irq_nosync +EXPORT_SYMBOL_GPL vmlinux 0xdc9fa232 raw_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0xdcc4407c pm_generic_freeze_noirq +EXPORT_SYMBOL_GPL vmlinux 0xdce73fbb dio_end_io +EXPORT_SYMBOL_GPL vmlinux 0xdcec3a19 i2c_slave_unregister +EXPORT_SYMBOL_GPL vmlinux 0xdd07a62f snd_soc_of_parse_audio_simple_widgets +EXPORT_SYMBOL_GPL vmlinux 0xdd12fcd4 crypto_alloc_ablkcipher +EXPORT_SYMBOL_GPL vmlinux 0xdd17ffec trace_clock +EXPORT_SYMBOL_GPL vmlinux 0xdd2efc0f ring_buffer_reset_cpu +EXPORT_SYMBOL_GPL vmlinux 0xdd391eff profile_event_unregister +EXPORT_SYMBOL_GPL vmlinux 0xdd5925b5 class_compat_remove_link +EXPORT_SYMBOL_GPL vmlinux 0xdd5fd261 __fib_lookup +EXPORT_SYMBOL_GPL vmlinux 0xdd7ea99b device_create_with_groups +EXPORT_SYMBOL_GPL vmlinux 0xdd97bf8c eventfd_ctx_fileget +EXPORT_SYMBOL_GPL vmlinux 0xdda59452 ahci_ops +EXPORT_SYMBOL_GPL vmlinux 0xddb25156 devm_kmemdup +EXPORT_SYMBOL_GPL vmlinux 0xddbeeecc pci_lock_rescan_remove +EXPORT_SYMBOL_GPL vmlinux 0xddd1d45a pinctrl_select_state +EXPORT_SYMBOL_GPL vmlinux 0xddd58dc0 ring_buffer_reset +EXPORT_SYMBOL_GPL vmlinux 0xdddd5f53 crypto_register_rngs +EXPORT_SYMBOL_GPL vmlinux 0xddf0fcfb devm_kmalloc +EXPORT_SYMBOL_GPL vmlinux 0xddf22b1b soc_ac97_ops +EXPORT_SYMBOL_GPL vmlinux 0xde0b3102 regmap_init_mmio_clk +EXPORT_SYMBOL_GPL vmlinux 0xde0c42cc tcp_death_row +EXPORT_SYMBOL_GPL vmlinux 0xde28b1f8 ohci_hub_control +EXPORT_SYMBOL_GPL vmlinux 0xde3a3af6 mmu_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0xde69139e pinconf_generic_dump_config +EXPORT_SYMBOL_GPL vmlinux 0xde803cbc init_dummy_netdev +EXPORT_SYMBOL_GPL vmlinux 0xde8734dc blkcg_activate_policy +EXPORT_SYMBOL_GPL vmlinux 0xde907fea task_active_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0xde962f96 pm_generic_runtime_resume +EXPORT_SYMBOL_GPL vmlinux 0xdeac9fb3 __fsnotify_inode_delete +EXPORT_SYMBOL_GPL vmlinux 0xdee52fb9 mbox_chan_txdone +EXPORT_SYMBOL_GPL vmlinux 0xdf021433 cpufreq_governor_dbs +EXPORT_SYMBOL_GPL vmlinux 0xdf0f75c6 eventfd_signal +EXPORT_SYMBOL_GPL vmlinux 0xdf2da455 register_virtio_driver +EXPORT_SYMBOL_GPL vmlinux 0xdf2ee010 sysfs_remove_file_ns +EXPORT_SYMBOL_GPL vmlinux 0xdf3a4355 amba_ahb_device_add +EXPORT_SYMBOL_GPL vmlinux 0xdf49a1c4 blk_rq_check_limits +EXPORT_SYMBOL_GPL vmlinux 0xdf65a5c2 usb_altnum_to_altsetting +EXPORT_SYMBOL_GPL vmlinux 0xdf722791 securityfs_create_file +EXPORT_SYMBOL_GPL vmlinux 0xdfbc0076 fat_add_entries +EXPORT_SYMBOL_GPL vmlinux 0xdfbf4c99 blkdev_read_iter +EXPORT_SYMBOL_GPL vmlinux 0xdfe1853b debugfs_create_regset32 +EXPORT_SYMBOL_GPL vmlinux 0xdff9fac3 fixed_phy_set_link_update +EXPORT_SYMBOL_GPL vmlinux 0xe007de41 kallsyms_lookup_name +EXPORT_SYMBOL_GPL vmlinux 0xe02eb6d0 ring_buffer_commit_overrun_cpu +EXPORT_SYMBOL_GPL vmlinux 0xe0342e69 wm8400_block_read +EXPORT_SYMBOL_GPL vmlinux 0xe03852fd pin_is_valid +EXPORT_SYMBOL_GPL vmlinux 0xe03958f6 pm_generic_freeze +EXPORT_SYMBOL_GPL vmlinux 0xe0626189 devm_snd_soc_register_component +EXPORT_SYMBOL_GPL vmlinux 0xe0646317 single_release_net +EXPORT_SYMBOL_GPL vmlinux 0xe0655d52 firmware_kobj +EXPORT_SYMBOL_GPL vmlinux 0xe0663c25 gpiochip_find +EXPORT_SYMBOL_GPL vmlinux 0xe06e4157 power_supply_notifier +EXPORT_SYMBOL_GPL vmlinux 0xe078037f sata_pmp_port_ops +EXPORT_SYMBOL_GPL vmlinux 0xe07ca631 cpu_bit_bitmap +EXPORT_SYMBOL_GPL vmlinux 0xe0824582 ipv6_dup_options +EXPORT_SYMBOL_GPL vmlinux 0xe08dfa0b ata_port_freeze +EXPORT_SYMBOL_GPL vmlinux 0xe09ae77e tty_buffer_lock_exclusive +EXPORT_SYMBOL_GPL vmlinux 0xe0b013a9 regmap_check_range_table +EXPORT_SYMBOL_GPL vmlinux 0xe0b1c103 clk_set_max_rate +EXPORT_SYMBOL_GPL vmlinux 0xe0c109a1 scsi_flush_work +EXPORT_SYMBOL_GPL vmlinux 0xe0cef797 kset_create_and_add +EXPORT_SYMBOL_GPL vmlinux 0xe0e1887b bus_rescan_devices +EXPORT_SYMBOL_GPL vmlinux 0xe0e7ade2 snd_soc_of_parse_daifmt +EXPORT_SYMBOL_GPL vmlinux 0xe10c46ee rtc_irq_set_state +EXPORT_SYMBOL_GPL vmlinux 0xe11dcf02 dapm_clock_event +EXPORT_SYMBOL_GPL vmlinux 0xe16591ab stop_machine +EXPORT_SYMBOL_GPL vmlinux 0xe1680d9c omap_dm_timer_disable +EXPORT_SYMBOL_GPL vmlinux 0xe1775ee7 dm_get_reserved_bio_based_ios +EXPORT_SYMBOL_GPL vmlinux 0xe186d219 blkg_rwstat_recursive_sum +EXPORT_SYMBOL_GPL vmlinux 0xe189613d ata_ehi_push_desc +EXPORT_SYMBOL_GPL vmlinux 0xe19e42e6 regulator_get_exclusive +EXPORT_SYMBOL_GPL vmlinux 0xe1b45524 regulator_set_mode +EXPORT_SYMBOL_GPL vmlinux 0xe1c06ba3 fsstack_copy_attr_all +EXPORT_SYMBOL_GPL vmlinux 0xe1c5b224 pinctrl_utils_dt_free_map +EXPORT_SYMBOL_GPL vmlinux 0xe1d3e765 i2c_new_dummy +EXPORT_SYMBOL_GPL vmlinux 0xe1d75fed gpiod_set_array_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0xe1eb985f omap_dm_timer_read_status +EXPORT_SYMBOL_GPL vmlinux 0xe25157c7 sata_std_hardreset +EXPORT_SYMBOL_GPL vmlinux 0xe279d8a2 ata_host_activate +EXPORT_SYMBOL_GPL vmlinux 0xe27d5ccf usb_free_urb +EXPORT_SYMBOL_GPL vmlinux 0xe27eb79f tcp_ca_openreq_child +EXPORT_SYMBOL_GPL vmlinux 0xe285964c sdio_release_host +EXPORT_SYMBOL_GPL vmlinux 0xe28a1d1a sdhci_pci_spt_drive_strength +EXPORT_SYMBOL_GPL vmlinux 0xe29c9462 sdhci_pci_o2_probe +EXPORT_SYMBOL_GPL vmlinux 0xe2e2b72b dma_buf_export +EXPORT_SYMBOL_GPL vmlinux 0xe3043ff9 request_any_context_irq +EXPORT_SYMBOL_GPL vmlinux 0xe306ced8 splice_to_pipe +EXPORT_SYMBOL_GPL vmlinux 0xe311dcf9 __sock_recv_wifi_status +EXPORT_SYMBOL_GPL vmlinux 0xe313917f usb_get_status +EXPORT_SYMBOL_GPL vmlinux 0xe3176f0c tty_buffer_request_room +EXPORT_SYMBOL_GPL vmlinux 0xe323b255 set_primary_fwnode +EXPORT_SYMBOL_GPL vmlinux 0xe346f9aa exportfs_encode_inode_fh +EXPORT_SYMBOL_GPL vmlinux 0xe37c1970 of_fixed_clk_setup +EXPORT_SYMBOL_GPL vmlinux 0xe384a102 usb_speed_string +EXPORT_SYMBOL_GPL vmlinux 0xe3897ec7 devfreq_event_reset_event +EXPORT_SYMBOL_GPL vmlinux 0xe39ead86 regmap_get_max_register +EXPORT_SYMBOL_GPL vmlinux 0xe3a4e390 bitmap_resize +EXPORT_SYMBOL_GPL vmlinux 0xe3b327be snd_soc_poweroff +EXPORT_SYMBOL_GPL vmlinux 0xe3b51cbe tty_buffer_space_avail +EXPORT_SYMBOL_GPL vmlinux 0xe3be86ae md_find_rdev_nr_rcu +EXPORT_SYMBOL_GPL vmlinux 0xe3ce1cc6 rtc_set_time +EXPORT_SYMBOL_GPL vmlinux 0xe3ce1f7e ahci_sdev_attrs +EXPORT_SYMBOL_GPL vmlinux 0xe3e41ceb __page_file_mapping +EXPORT_SYMBOL_GPL vmlinux 0xe3ef57d5 fat_remove_entries +EXPORT_SYMBOL_GPL vmlinux 0xe3fe3652 snd_soc_dapm_get_volsw +EXPORT_SYMBOL_GPL vmlinux 0xe4057be7 rtc_irq_set_freq +EXPORT_SYMBOL_GPL vmlinux 0xe4285bea key_type_user +EXPORT_SYMBOL_GPL vmlinux 0xe42e1f70 klist_iter_init_node +EXPORT_SYMBOL_GPL vmlinux 0xe42fc1f7 netlink_remove_tap +EXPORT_SYMBOL_GPL vmlinux 0xe4309905 syscore_resume +EXPORT_SYMBOL_GPL vmlinux 0xe447cc8e snd_soc_info_volsw_range +EXPORT_SYMBOL_GPL vmlinux 0xe44c1cf1 virtqueue_poll +EXPORT_SYMBOL_GPL vmlinux 0xe4689576 ktime_get_with_offset +EXPORT_SYMBOL_GPL vmlinux 0xe4971ade tracing_alloc_snapshot +EXPORT_SYMBOL_GPL vmlinux 0xe4a372aa rt_mutex_timed_lock +EXPORT_SYMBOL_GPL vmlinux 0xe4b0a0d3 regmap_parse_val +EXPORT_SYMBOL_GPL vmlinux 0xe4c19a0f regulator_map_voltage_ascend +EXPORT_SYMBOL_GPL vmlinux 0xe4c22565 cpdma_chan_destroy +EXPORT_SYMBOL_GPL vmlinux 0xe4e756d3 usb_hcd_poll_rh_status +EXPORT_SYMBOL_GPL vmlinux 0xe4f25957 bsg_request_fn +EXPORT_SYMBOL_GPL vmlinux 0xe506f1cf sysfs_create_bin_file +EXPORT_SYMBOL_GPL vmlinux 0xe5071dcc extcon_set_cable_state +EXPORT_SYMBOL_GPL vmlinux 0xe54cf90e subsys_system_register +EXPORT_SYMBOL_GPL vmlinux 0xe5552b54 blkg_conf_prep +EXPORT_SYMBOL_GPL vmlinux 0xe5581f1f fuse_dev_free +EXPORT_SYMBOL_GPL vmlinux 0xe5767970 power_supply_changed +EXPORT_SYMBOL_GPL vmlinux 0xe5831f0b skb_splice_bits +EXPORT_SYMBOL_GPL vmlinux 0xe5883bd9 class_compat_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe58fb452 aer_irq +EXPORT_SYMBOL_GPL vmlinux 0xe5b2fd03 ahash_free_instance +EXPORT_SYMBOL_GPL vmlinux 0xe5c3c05b register_trace_event +EXPORT_SYMBOL_GPL vmlinux 0xe5d960b2 user_read +EXPORT_SYMBOL_GPL vmlinux 0xe5f3d3dc scsi_nl_sock +EXPORT_SYMBOL_GPL vmlinux 0xe5f96477 vfs_test_lock +EXPORT_SYMBOL_GPL vmlinux 0xe63c2e63 __irq_domain_add +EXPORT_SYMBOL_GPL vmlinux 0xe640cab2 tty_buffer_set_limit +EXPORT_SYMBOL_GPL vmlinux 0xe651f76e selinux_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0xe66b5945 clk_register_mux +EXPORT_SYMBOL_GPL vmlinux 0xe6745183 pci_test_config_bits +EXPORT_SYMBOL_GPL vmlinux 0xe67c3f4e devm_regulator_register +EXPORT_SYMBOL_GPL vmlinux 0xe67d67c4 platform_device_register_full +EXPORT_SYMBOL_GPL vmlinux 0xe69841f1 devm_rtc_device_register +EXPORT_SYMBOL_GPL vmlinux 0xe6aa8266 blk_set_queue_dying +EXPORT_SYMBOL_GPL vmlinux 0xe6bf2088 sdhci_pltfm_suspend +EXPORT_SYMBOL_GPL vmlinux 0xe6c68334 ddebug_remove_module +EXPORT_SYMBOL_GPL vmlinux 0xe6e1c5fe uuid_be_gen +EXPORT_SYMBOL_GPL vmlinux 0xe6ef4abf dm_internal_resume_fast +EXPORT_SYMBOL_GPL vmlinux 0xe6f26a1a max8997_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0xe6ff7c60 __clk_round_rate +EXPORT_SYMBOL_GPL vmlinux 0xe729692f register_net_sysctl +EXPORT_SYMBOL_GPL vmlinux 0xe73133e5 ata_sas_port_start +EXPORT_SYMBOL_GPL vmlinux 0xe7465786 kobject_init_and_add +EXPORT_SYMBOL_GPL vmlinux 0xe7536c10 dm_set_target_max_io_len +EXPORT_SYMBOL_GPL vmlinux 0xe75d4389 crypto_blkcipher_type +EXPORT_SYMBOL_GPL vmlinux 0xe762683f crypto_register_aead +EXPORT_SYMBOL_GPL vmlinux 0xe769232e sprint_symbol_no_offset +EXPORT_SYMBOL_GPL vmlinux 0xe780270e mnt_drop_write +EXPORT_SYMBOL_GPL vmlinux 0xe7a196ab snd_dmaengine_pcm_trigger +EXPORT_SYMBOL_GPL vmlinux 0xe7cb82ea divider_round_rate +EXPORT_SYMBOL_GPL vmlinux 0xe7cd1e41 regmap_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0xe7d1304c crypto_spawn_tfm +EXPORT_SYMBOL_GPL vmlinux 0xe7ea7c82 regmap_init +EXPORT_SYMBOL_GPL vmlinux 0xe7fb29a6 rtc_initialize_alarm +EXPORT_SYMBOL_GPL vmlinux 0xe7ffe877 pcpu_base_addr +EXPORT_SYMBOL_GPL vmlinux 0xe818b32b ata_bmdma_interrupt +EXPORT_SYMBOL_GPL vmlinux 0xe84f6e5c pciserial_remove_ports +EXPORT_SYMBOL_GPL vmlinux 0xe8551376 dev_pm_opp_free_cpufreq_table +EXPORT_SYMBOL_GPL vmlinux 0xe85a9fd3 cpu_cluster_pm_exit +EXPORT_SYMBOL_GPL vmlinux 0xe85f7b50 pinctrl_pm_select_idle_state +EXPORT_SYMBOL_GPL vmlinux 0xe86194be usb_anchor_urb +EXPORT_SYMBOL_GPL vmlinux 0xe862c4b7 dpm_suspend_start +EXPORT_SYMBOL_GPL vmlinux 0xe86c9399 iommu_group_add_device +EXPORT_SYMBOL_GPL vmlinux 0xe88b586d xhci_init_driver +EXPORT_SYMBOL_GPL vmlinux 0xe8a34844 __cpufreq_driver_target +EXPORT_SYMBOL_GPL vmlinux 0xe8a6ec1a platform_add_devices +EXPORT_SYMBOL_GPL vmlinux 0xe8a864f2 platform_device_add +EXPORT_SYMBOL_GPL vmlinux 0xe8bea1c2 fuse_do_ioctl +EXPORT_SYMBOL_GPL vmlinux 0xe8e7454a pstore_register +EXPORT_SYMBOL_GPL vmlinux 0xe8f3c866 blkdev_write_iter +EXPORT_SYMBOL_GPL vmlinux 0xe901053a class_interface_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe92649f3 crypto_register_shashes +EXPORT_SYMBOL_GPL vmlinux 0xe93e49c3 devres_free +EXPORT_SYMBOL_GPL vmlinux 0xe948ce28 fat_alloc_new_dir +EXPORT_SYMBOL_GPL vmlinux 0xe956a75c pl320_ipc_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0xe9612a2a omap_dm_timer_set_match +EXPORT_SYMBOL_GPL vmlinux 0xe966e6b9 tc3589x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xe988c988 dev_pm_qos_add_notifier +EXPORT_SYMBOL_GPL vmlinux 0xe989d4d6 component_unbind_all +EXPORT_SYMBOL_GPL vmlinux 0xe9919816 regulator_set_voltage_sel_regmap +EXPORT_SYMBOL_GPL vmlinux 0xe997a768 btree_grim_visitor +EXPORT_SYMBOL_GPL vmlinux 0xe99a9082 input_ff_create +EXPORT_SYMBOL_GPL vmlinux 0xe9a85277 cpsw_ale_control_get +EXPORT_SYMBOL_GPL vmlinux 0xe9bb1de3 clockevents_unbind_device +EXPORT_SYMBOL_GPL vmlinux 0xe9d1b7cf irq_to_pcap +EXPORT_SYMBOL_GPL vmlinux 0xe9fa2ebe thermal_zone_get_zone_by_name +EXPORT_SYMBOL_GPL vmlinux 0xea124bd1 gcd +EXPORT_SYMBOL_GPL vmlinux 0xea1bb291 bL_switcher_get_enabled +EXPORT_SYMBOL_GPL vmlinux 0xea418e0f atapi_cmd_type +EXPORT_SYMBOL_GPL vmlinux 0xea43355b gen_pool_avail +EXPORT_SYMBOL_GPL vmlinux 0xea50dad3 ahci_ignore_sss +EXPORT_SYMBOL_GPL vmlinux 0xea56256d fb_deferred_io_fsync +EXPORT_SYMBOL_GPL vmlinux 0xea6a3872 __root_device_register +EXPORT_SYMBOL_GPL vmlinux 0xea81b468 pci_enable_pri +EXPORT_SYMBOL_GPL vmlinux 0xeab5016c arizona_pm_ops +EXPORT_SYMBOL_GPL vmlinux 0xeab81c13 hwmon_device_register_with_groups +EXPORT_SYMBOL_GPL vmlinux 0xeabf44df shmem_add_seals +EXPORT_SYMBOL_GPL vmlinux 0xeac0954e unregister_kretprobes +EXPORT_SYMBOL_GPL vmlinux 0xead5696e class_for_each_device +EXPORT_SYMBOL_GPL vmlinux 0xeaea3536 sdhci_pci_o2_fujin2_pci_init +EXPORT_SYMBOL_GPL vmlinux 0xeaf1e9f1 hrtimer_cancel +EXPORT_SYMBOL_GPL vmlinux 0xeb0c9890 fib_rules_lookup +EXPORT_SYMBOL_GPL vmlinux 0xeb0e6d48 unuse_mm +EXPORT_SYMBOL_GPL vmlinux 0xeb2fc3c4 blk_mq_freeze_queue +EXPORT_SYMBOL_GPL vmlinux 0xeb3dd062 bdev_write_page +EXPORT_SYMBOL_GPL vmlinux 0xeb60d844 __tracepoint_cpu_idle +EXPORT_SYMBOL_GPL vmlinux 0xeb640b67 usb_poison_urb +EXPORT_SYMBOL_GPL vmlinux 0xeb711ae7 snd_soc_params_to_bclk +EXPORT_SYMBOL_GPL vmlinux 0xeb73b916 evm_verifyxattr +EXPORT_SYMBOL_GPL vmlinux 0xeb7b55e5 __inet_twsk_hashdance +EXPORT_SYMBOL_GPL vmlinux 0xeb86163b snd_soc_card_get_kcontrol +EXPORT_SYMBOL_GPL vmlinux 0xeb8b52c1 put_mtd_device +EXPORT_SYMBOL_GPL vmlinux 0xeb9abbee ata_sff_queue_work +EXPORT_SYMBOL_GPL vmlinux 0xebb7eb66 iommu_capable +EXPORT_SYMBOL_GPL vmlinux 0xebc55d92 ata_std_prereset +EXPORT_SYMBOL_GPL vmlinux 0xebcbd144 of_irq_to_resource +EXPORT_SYMBOL_GPL vmlinux 0xebec57c4 ring_buffer_oldest_event_ts +EXPORT_SYMBOL_GPL vmlinux 0xebf8d1f3 usb_hcd_is_primary_hcd +EXPORT_SYMBOL_GPL vmlinux 0xec1b043e regulator_suspend_prepare +EXPORT_SYMBOL_GPL vmlinux 0xec25f967 klist_del +EXPORT_SYMBOL_GPL vmlinux 0xec317f29 snd_soc_put_enum_double +EXPORT_SYMBOL_GPL vmlinux 0xec3325e2 __clk_get_num_parents +EXPORT_SYMBOL_GPL vmlinux 0xec41327c fsstack_copy_inode_size +EXPORT_SYMBOL_GPL vmlinux 0xec54f9fc snd_pcm_stream_unlock_irq +EXPORT_SYMBOL_GPL vmlinux 0xec56925f power_supply_am_i_supplied +EXPORT_SYMBOL_GPL vmlinux 0xec780b30 generic_fh_to_dentry +EXPORT_SYMBOL_GPL vmlinux 0xec86e611 usb_remove_phy +EXPORT_SYMBOL_GPL vmlinux 0xec9a63c8 ata_pci_device_do_resume +EXPORT_SYMBOL_GPL vmlinux 0xeca930d5 regulator_register +EXPORT_SYMBOL_GPL vmlinux 0xecabaac7 usb_autopm_get_interface_async +EXPORT_SYMBOL_GPL vmlinux 0xecb63134 crypto_larval_lookup +EXPORT_SYMBOL_GPL vmlinux 0xecc5cba6 put_device +EXPORT_SYMBOL_GPL vmlinux 0xecda085e ata_pci_device_do_suspend +EXPORT_SYMBOL_GPL vmlinux 0xecf56a50 pci_reset_function +EXPORT_SYMBOL_GPL vmlinux 0xecfd8761 usb_unpoison_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0xed01df5f gpiod_put_array +EXPORT_SYMBOL_GPL vmlinux 0xed15aeff dma_buf_kunmap_atomic +EXPORT_SYMBOL_GPL vmlinux 0xed295218 vfs_cancel_lock +EXPORT_SYMBOL_GPL vmlinux 0xed5686a4 fat_get_dotdot_entry +EXPORT_SYMBOL_GPL vmlinux 0xed8f416e pci_user_read_config_word +EXPORT_SYMBOL_GPL vmlinux 0xedb08d81 pci_disable_ats +EXPORT_SYMBOL_GPL vmlinux 0xedcf1cf0 usb_interrupt_msg +EXPORT_SYMBOL_GPL vmlinux 0xeddb342e devm_regulator_bulk_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0xede8b13b ata_eh_qc_retry +EXPORT_SYMBOL_GPL vmlinux 0xedf7570b led_classdev_suspend +EXPORT_SYMBOL_GPL vmlinux 0xee08a93c ehci_handshake +EXPORT_SYMBOL_GPL vmlinux 0xee48a895 gpiod_direction_input +EXPORT_SYMBOL_GPL vmlinux 0xee498cee __ip_route_output_key +EXPORT_SYMBOL_GPL vmlinux 0xee6b71c4 syscon_regmap_lookup_by_compatible +EXPORT_SYMBOL_GPL vmlinux 0xee6d239c snd_soc_get_dai_substream +EXPORT_SYMBOL_GPL vmlinux 0xee738dfb perf_pmu_unregister +EXPORT_SYMBOL_GPL vmlinux 0xee8d7539 cpdma_chan_start +EXPORT_SYMBOL_GPL vmlinux 0xee8dc34f snd_dmaengine_pcm_register +EXPORT_SYMBOL_GPL vmlinux 0xee936b19 wm8350_gpio_config +EXPORT_SYMBOL_GPL vmlinux 0xee965c4f tegra_pinctrl_probe +EXPORT_SYMBOL_GPL vmlinux 0xeec81ac3 power_supply_unregister +EXPORT_SYMBOL_GPL vmlinux 0xeeeef919 regulator_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0xeef12b96 tcp_send_ack +EXPORT_SYMBOL_GPL vmlinux 0xef12a53e ata_sff_drain_fifo +EXPORT_SYMBOL_GPL vmlinux 0xef1ab7c0 look_up_OID +EXPORT_SYMBOL_GPL vmlinux 0xef351f89 of_address_to_resource +EXPORT_SYMBOL_GPL vmlinux 0xef3b54a0 usb_phy_set_event +EXPORT_SYMBOL_GPL vmlinux 0xef3d0e7d alarm_restart +EXPORT_SYMBOL_GPL vmlinux 0xef409b74 kmsg_dump_get_line +EXPORT_SYMBOL_GPL vmlinux 0xef458d94 device_wakeup_disable +EXPORT_SYMBOL_GPL vmlinux 0xef464c28 getboottime64 +EXPORT_SYMBOL_GPL vmlinux 0xef66075c usb_wait_anchor_empty_timeout +EXPORT_SYMBOL_GPL vmlinux 0xef6c3f70 round_jiffies_up_relative +EXPORT_SYMBOL_GPL vmlinux 0xef6f418f device_store_ulong +EXPORT_SYMBOL_GPL vmlinux 0xef72c066 subsys_find_device_by_id +EXPORT_SYMBOL_GPL vmlinux 0xef804d8b digsig_verify +EXPORT_SYMBOL_GPL vmlinux 0xef8c7850 pcap_adc_async +EXPORT_SYMBOL_GPL vmlinux 0xef903c3f iommu_map +EXPORT_SYMBOL_GPL vmlinux 0xefa2c27d register_tracepoint_module_notifier +EXPORT_SYMBOL_GPL vmlinux 0xefc9138b dma_request_slave_channel +EXPORT_SYMBOL_GPL vmlinux 0xefcb93ab event_triggers_post_call +EXPORT_SYMBOL_GPL vmlinux 0xf016e67b invalidate_inode_pages2_range +EXPORT_SYMBOL_GPL vmlinux 0xf0206d6f mddev_congested +EXPORT_SYMBOL_GPL vmlinux 0xf03c072f __ftrace_vbprintk +EXPORT_SYMBOL_GPL vmlinux 0xf04ada75 snd_soc_bytes_info_ext +EXPORT_SYMBOL_GPL vmlinux 0xf066a08d arizona_set_irq_wake +EXPORT_SYMBOL_GPL vmlinux 0xf0727f12 ktime_get_raw_fast_ns +EXPORT_SYMBOL_GPL vmlinux 0xf07b87f9 phy_optional_get +EXPORT_SYMBOL_GPL vmlinux 0xf0a68d41 pci_device_is_present +EXPORT_SYMBOL_GPL vmlinux 0xf0b4f823 devm_free_pages +EXPORT_SYMBOL_GPL vmlinux 0xf0da9418 blk_mq_freeze_queue_start +EXPORT_SYMBOL_GPL vmlinux 0xf0e81b60 class_destroy +EXPORT_SYMBOL_GPL vmlinux 0xf0f5dbc2 timerqueue_iterate_next +EXPORT_SYMBOL_GPL vmlinux 0xf0f7308e device_property_read_string +EXPORT_SYMBOL_GPL vmlinux 0xf10deec0 net_ns_type_operations +EXPORT_SYMBOL_GPL vmlinux 0xf12caf22 clk_register_divider_table +EXPORT_SYMBOL_GPL vmlinux 0xf1319813 usb_bulk_msg +EXPORT_SYMBOL_GPL vmlinux 0xf16bd196 mnt_clone_write +EXPORT_SYMBOL_GPL vmlinux 0xf184d189 kernel_power_off +EXPORT_SYMBOL_GPL vmlinux 0xf18dcddc da9052_adc_read_temp +EXPORT_SYMBOL_GPL vmlinux 0xf1b31314 delayacct_on +EXPORT_SYMBOL_GPL vmlinux 0xf1deb794 unregister_kretprobe +EXPORT_SYMBOL_GPL vmlinux 0xf1f16c9e unregister_jprobes +EXPORT_SYMBOL_GPL vmlinux 0xf21e1f9b disable_percpu_irq +EXPORT_SYMBOL_GPL vmlinux 0xf22be89f regcache_mark_dirty +EXPORT_SYMBOL_GPL vmlinux 0xf23c652c crypto_alg_extsize +EXPORT_SYMBOL_GPL vmlinux 0xf23c8464 wakeup_source_unregister +EXPORT_SYMBOL_GPL vmlinux 0xf2400a26 md_kick_rdev_from_array +EXPORT_SYMBOL_GPL vmlinux 0xf242c190 pci_generic_config_read32 +EXPORT_SYMBOL_GPL vmlinux 0xf251fcad br_fdb_test_addr_hook +EXPORT_SYMBOL_GPL vmlinux 0xf27977e2 async_synchronize_cookie_domain +EXPORT_SYMBOL_GPL vmlinux 0xf28a4c43 __tracepoint_io_page_fault +EXPORT_SYMBOL_GPL vmlinux 0xf28f0043 __list_lru_init +EXPORT_SYMBOL_GPL vmlinux 0xf2a0efb2 __audit_inode_child +EXPORT_SYMBOL_GPL vmlinux 0xf2b32b3b __mmu_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0xf2dc30df sdhci_pci_o2_probe_slot +EXPORT_SYMBOL_GPL vmlinux 0xf2ed48f0 sysfs_remove_link_from_group +EXPORT_SYMBOL_GPL vmlinux 0xf2f077cc pkey_id_type_name +EXPORT_SYMBOL_GPL vmlinux 0xf2fca922 uart_parse_options +EXPORT_SYMBOL_GPL vmlinux 0xf30e105d ezx_pcap_write +EXPORT_SYMBOL_GPL vmlinux 0xf30f84af kallsyms_on_each_symbol +EXPORT_SYMBOL_GPL vmlinux 0xf30fda27 lzo1x_decompress_safe +EXPORT_SYMBOL_GPL vmlinux 0xf31b3fd1 workqueue_set_max_active +EXPORT_SYMBOL_GPL vmlinux 0xf32990fa devfreq_event_enable_edev +EXPORT_SYMBOL_GPL vmlinux 0xf331236f btree_geo32 +EXPORT_SYMBOL_GPL vmlinux 0xf362c393 thermal_generate_netlink_event +EXPORT_SYMBOL_GPL vmlinux 0xf37d4b25 ahci_platform_ops +EXPORT_SYMBOL_GPL vmlinux 0xf3808cb1 get_state_synchronize_rcu +EXPORT_SYMBOL_GPL vmlinux 0xf381f95a sdio_get_host_pm_caps +EXPORT_SYMBOL_GPL vmlinux 0xf38ff6cb usb_reset_configuration +EXPORT_SYMBOL_GPL vmlinux 0xf398dd9b pinctrl_add_gpio_range +EXPORT_SYMBOL_GPL vmlinux 0xf39f675f snd_soc_jack_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0xf3a82ac4 rtc_update_irq +EXPORT_SYMBOL_GPL vmlinux 0xf3b451ca kdb_poll_funcs +EXPORT_SYMBOL_GPL vmlinux 0xf3bcc9ea dm_internal_suspend_fast +EXPORT_SYMBOL_GPL vmlinux 0xf3c3a030 page_mkclean +EXPORT_SYMBOL_GPL vmlinux 0xf3df7b35 ata_std_qc_defer +EXPORT_SYMBOL_GPL vmlinux 0xf3ed8856 raw_seq_open +EXPORT_SYMBOL_GPL vmlinux 0xf3f18238 ktime_get_resolution_ns +EXPORT_SYMBOL_GPL vmlinux 0xf437c32d snd_soc_platform_read +EXPORT_SYMBOL_GPL vmlinux 0xf4499287 adp5520_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0xf45ec514 dmaengine_unmap_put +EXPORT_SYMBOL_GPL vmlinux 0xf4646aa3 snd_soc_set_ac97_ops_of_reset +EXPORT_SYMBOL_GPL vmlinux 0xf464c79e dma_buf_kmap_atomic +EXPORT_SYMBOL_GPL vmlinux 0xf467ec23 usb_anchor_suspend_wakeups +EXPORT_SYMBOL_GPL vmlinux 0xf46b3249 register_kretprobes +EXPORT_SYMBOL_GPL vmlinux 0xf46cdf82 sdhci_pltfm_clk_get_max_clock +EXPORT_SYMBOL_GPL vmlinux 0xf46ec154 hrtimer_init_sleeper +EXPORT_SYMBOL_GPL vmlinux 0xf46f4d39 fb_bl_default_curve +EXPORT_SYMBOL_GPL vmlinux 0xf47ebd7c wm831x_reg_read +EXPORT_SYMBOL_GPL vmlinux 0xf480e63a usb_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0xf4839d2a sk_attach_filter +EXPORT_SYMBOL_GPL vmlinux 0xf494f618 mmc_regulator_get_ocrmask +EXPORT_SYMBOL_GPL vmlinux 0xf4958cda snd_soc_get_pcm_runtime +EXPORT_SYMBOL_GPL vmlinux 0xf496cebf pci_disable_pri +EXPORT_SYMBOL_GPL vmlinux 0xf499fdb2 rcu_barrier_bh +EXPORT_SYMBOL_GPL vmlinux 0xf4aa00b0 mbox_request_channel_byname +EXPORT_SYMBOL_GPL vmlinux 0xf4ac384b fuse_dev_release +EXPORT_SYMBOL_GPL vmlinux 0xf4c937ac thermal_zone_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xf4fa21ff omap_dm_timer_write_status +EXPORT_SYMBOL_GPL vmlinux 0xf4fc2d6c __ring_buffer_alloc +EXPORT_SYMBOL_GPL vmlinux 0xf4fdcd2b register_asymmetric_key_parser +EXPORT_SYMBOL_GPL vmlinux 0xf5402154 cpsw_phy_sel +EXPORT_SYMBOL_GPL vmlinux 0xf542d4ef ping_err +EXPORT_SYMBOL_GPL vmlinux 0xf54bd49b lcm +EXPORT_SYMBOL_GPL vmlinux 0xf54fb667 regmap_field_write +EXPORT_SYMBOL_GPL vmlinux 0xf553318d cpuidle_pause_and_lock +EXPORT_SYMBOL_GPL vmlinux 0xf55f332f regmap_register_patch +EXPORT_SYMBOL_GPL vmlinux 0xf57a8440 __of_phy_provider_register +EXPORT_SYMBOL_GPL vmlinux 0xf5816e60 mtd_unlock +EXPORT_SYMBOL_GPL vmlinux 0xf588c238 regulator_bulk_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0xf58b9ed2 cpsw_ale_dump +EXPORT_SYMBOL_GPL vmlinux 0xf5a691cd invalidate_bh_lrus +EXPORT_SYMBOL_GPL vmlinux 0xf5a7ea45 vring_new_virtqueue +EXPORT_SYMBOL_GPL vmlinux 0xf5b793e7 wakeup_source_remove +EXPORT_SYMBOL_GPL vmlinux 0xf5cab0e9 sata_scr_write_flush +EXPORT_SYMBOL_GPL vmlinux 0xf60a274c iommu_group_get +EXPORT_SYMBOL_GPL vmlinux 0xf6148d3a hvc_alloc +EXPORT_SYMBOL_GPL vmlinux 0xf616f921 pm_generic_resume +EXPORT_SYMBOL_GPL vmlinux 0xf6401538 ping_get_port +EXPORT_SYMBOL_GPL vmlinux 0xf64808e4 mtd_erase +EXPORT_SYMBOL_GPL vmlinux 0xf67fb673 pm_genpd_syscore_poweroff +EXPORT_SYMBOL_GPL vmlinux 0xf6a12870 regmap_exit +EXPORT_SYMBOL_GPL vmlinux 0xf6b89a65 securityfs_remove +EXPORT_SYMBOL_GPL vmlinux 0xf6bb1161 __tracepoint_attach_device_to_domain +EXPORT_SYMBOL_GPL vmlinux 0xf6bcae61 pm_generic_resume_early +EXPORT_SYMBOL_GPL vmlinux 0xf6c8dc62 cpu_hotplug_enable +EXPORT_SYMBOL_GPL vmlinux 0xf6e874f5 ata_timing_merge +EXPORT_SYMBOL_GPL vmlinux 0xf6fab5a7 virtqueue_add_inbuf +EXPORT_SYMBOL_GPL vmlinux 0xf703f46b regmap_reinit_cache +EXPORT_SYMBOL_GPL vmlinux 0xf72e22cd ping_seq_fops +EXPORT_SYMBOL_GPL vmlinux 0xf74134bc snd_dmaengine_pcm_close_release_chan +EXPORT_SYMBOL_GPL vmlinux 0xf755c47d __mnt_is_readonly +EXPORT_SYMBOL_GPL vmlinux 0xf759d90f ata_sas_queuecmd +EXPORT_SYMBOL_GPL vmlinux 0xf76b0a59 read_current_timer +EXPORT_SYMBOL_GPL vmlinux 0xf7858ed3 of_platform_populate +EXPORT_SYMBOL_GPL vmlinux 0xf79cf56d usb_hcd_pci_pm_ops +EXPORT_SYMBOL_GPL vmlinux 0xf7a0566b da903x_update +EXPORT_SYMBOL_GPL vmlinux 0xf80e6c2c spi_finalize_current_transfer +EXPORT_SYMBOL_GPL vmlinux 0xf81017bb of_pci_address_to_resource +EXPORT_SYMBOL_GPL vmlinux 0xf82f16b3 execute_in_process_context +EXPORT_SYMBOL_GPL vmlinux 0xf82f3657 work_on_cpu +EXPORT_SYMBOL_GPL vmlinux 0xf846506f irq_set_affinity_notifier +EXPORT_SYMBOL_GPL vmlinux 0xf85bcf63 sdhci_add_host +EXPORT_SYMBOL_GPL vmlinux 0xf8767239 sysfs_remove_bin_file +EXPORT_SYMBOL_GPL vmlinux 0xf877e970 adp5520_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xf8802492 print_stack_trace +EXPORT_SYMBOL_GPL vmlinux 0xf889a4c6 gpiod_export +EXPORT_SYMBOL_GPL vmlinux 0xf8935f8b key_type_logon +EXPORT_SYMBOL_GPL vmlinux 0xf8d56a7e transport_setup_device +EXPORT_SYMBOL_GPL vmlinux 0xf8db5485 fib_rules_unregister +EXPORT_SYMBOL_GPL vmlinux 0xf8e6b564 hibernation_set_ops +EXPORT_SYMBOL_GPL vmlinux 0xf8f3a0fb ata_ratelimit +EXPORT_SYMBOL_GPL vmlinux 0xf8fbe672 sg_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0xf8fe3d0b kmsg_dump_register +EXPORT_SYMBOL_GPL vmlinux 0xf91317ae inverse_translate +EXPORT_SYMBOL_GPL vmlinux 0xf9202b2a extcon_dev_free +EXPORT_SYMBOL_GPL vmlinux 0xf92ce956 kdb_printf +EXPORT_SYMBOL_GPL vmlinux 0xf932015f __raw_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xf9424fcf regulator_set_current_limit +EXPORT_SYMBOL_GPL vmlinux 0xf94ddab8 usb_queue_reset_device +EXPORT_SYMBOL_GPL vmlinux 0xf95322f4 kthread_parkme +EXPORT_SYMBOL_GPL vmlinux 0xf9547a17 divider_recalc_rate +EXPORT_SYMBOL_GPL vmlinux 0xf95c6b23 ata_sas_port_resume +EXPORT_SYMBOL_GPL vmlinux 0xf963c196 dev_pm_qos_update_request +EXPORT_SYMBOL_GPL vmlinux 0xf97d8352 tty_encode_baud_rate +EXPORT_SYMBOL_GPL vmlinux 0xf9844885 fuse_request_send_background +EXPORT_SYMBOL_GPL vmlinux 0xf98cf8fa shmem_truncate_range +EXPORT_SYMBOL_GPL vmlinux 0xf991c09f rcu_qs_ctr +EXPORT_SYMBOL_GPL vmlinux 0xf9994ab7 debugfs_create_bool +EXPORT_SYMBOL_GPL vmlinux 0xf9a054b5 __round_jiffies +EXPORT_SYMBOL_GPL vmlinux 0xf9b4a663 sysfs_notify +EXPORT_SYMBOL_GPL vmlinux 0xf9c2da57 clkdev_create +EXPORT_SYMBOL_GPL vmlinux 0xf9ca3160 ata_id_xfermask +EXPORT_SYMBOL_GPL vmlinux 0xf9d2220e pinctrl_pm_select_sleep_state +EXPORT_SYMBOL_GPL vmlinux 0xf9d6db1f pwm_get +EXPORT_SYMBOL_GPL vmlinux 0xf9ec4040 tps6586x_write +EXPORT_SYMBOL_GPL vmlinux 0xfa07f4c8 devres_release_group +EXPORT_SYMBOL_GPL vmlinux 0xfa09ae89 ata_slave_link_init +EXPORT_SYMBOL_GPL vmlinux 0xfa1472e9 fwnode_property_read_u8_array +EXPORT_SYMBOL_GPL vmlinux 0xfa1eb910 unregister_syscore_ops +EXPORT_SYMBOL_GPL vmlinux 0xfa413a01 synchronize_srcu +EXPORT_SYMBOL_GPL vmlinux 0xfa41983b tty_standard_install +EXPORT_SYMBOL_GPL vmlinux 0xfa4c439b part_round_stats +EXPORT_SYMBOL_GPL vmlinux 0xfa70250b find_module +EXPORT_SYMBOL_GPL vmlinux 0xfa957473 gpiod_count +EXPORT_SYMBOL_GPL vmlinux 0xfa9bcfd6 mddev_init +EXPORT_SYMBOL_GPL vmlinux 0xfaa0c0c4 __blocking_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xfab8dc5e usb_hcd_resume_root_hub +EXPORT_SYMBOL_GPL vmlinux 0xfab9d44e pwm_get_chip_data +EXPORT_SYMBOL_GPL vmlinux 0xfac3c148 lp8788_read_multi_bytes +EXPORT_SYMBOL_GPL vmlinux 0xfacc7dd8 ata_sff_thaw +EXPORT_SYMBOL_GPL vmlinux 0xfacf92c9 _submit_bh +EXPORT_SYMBOL_GPL vmlinux 0xfad96930 vfs_removexattr +EXPORT_SYMBOL_GPL vmlinux 0xfaff2c71 pci_set_cacheline_size +EXPORT_SYMBOL_GPL vmlinux 0xfb32b30f ring_buffer_read_prepare_sync +EXPORT_SYMBOL_GPL vmlinux 0xfb334693 usb_alloc_dev +EXPORT_SYMBOL_GPL vmlinux 0xfb642cfc usb_phy_generic_register +EXPORT_SYMBOL_GPL vmlinux 0xfb6eedf9 power_group_name +EXPORT_SYMBOL_GPL vmlinux 0xfb884f53 bmp085_detect +EXPORT_SYMBOL_GPL vmlinux 0xfb94f014 usb_anchor_empty +EXPORT_SYMBOL_GPL vmlinux 0xfbade5a4 dma_buf_mmap +EXPORT_SYMBOL_GPL vmlinux 0xfbbd41ca no_action +EXPORT_SYMBOL_GPL vmlinux 0xfbbf4236 ipv6_find_tlv +EXPORT_SYMBOL_GPL vmlinux 0xfbc72542 crypto_alloc_aead +EXPORT_SYMBOL_GPL vmlinux 0xfbcfdcfa bpf_prog_free +EXPORT_SYMBOL_GPL vmlinux 0xfbcfdd8f crypto_alloc_instance +EXPORT_SYMBOL_GPL vmlinux 0xfbd24167 da903x_write +EXPORT_SYMBOL_GPL vmlinux 0xfbe02963 extcon_get_cable_state_ +EXPORT_SYMBOL_GPL vmlinux 0xfbf3c130 crypto_nivaead_type +EXPORT_SYMBOL_GPL vmlinux 0xfc03d97a page_is_ram +EXPORT_SYMBOL_GPL vmlinux 0xfc0c7805 crypto_register_aeads +EXPORT_SYMBOL_GPL vmlinux 0xfc4266ec serial8250_rx_chars +EXPORT_SYMBOL_GPL vmlinux 0xfc626b3e regcache_cache_bypass +EXPORT_SYMBOL_GPL vmlinux 0xfc7d487d bus_find_device +EXPORT_SYMBOL_GPL vmlinux 0xfc94c6ab regulator_disable_regmap +EXPORT_SYMBOL_GPL vmlinux 0xfc95943a enable_kprobe +EXPORT_SYMBOL_GPL vmlinux 0xfc9e78c3 irq_domain_associate +EXPORT_SYMBOL_GPL vmlinux 0xfcaf4f87 gpiod_set_value +EXPORT_SYMBOL_GPL vmlinux 0xfcd7bc0b ring_buffer_empty +EXPORT_SYMBOL_GPL vmlinux 0xfcdb2cf9 ata_eh_thaw_port +EXPORT_SYMBOL_GPL vmlinux 0xfcefb2bf power_supply_put +EXPORT_SYMBOL_GPL vmlinux 0xfcfb74e6 pci_ats_queue_depth +EXPORT_SYMBOL_GPL vmlinux 0xfd02a845 crypto_ahash_setkey +EXPORT_SYMBOL_GPL vmlinux 0xfd2a1a19 spi_master_suspend +EXPORT_SYMBOL_GPL vmlinux 0xfd3a0ef6 thermal_zone_of_sensor_unregister +EXPORT_SYMBOL_GPL vmlinux 0xfd41c7ce btree_merge +EXPORT_SYMBOL_GPL vmlinux 0xfd4f632e perf_event_create_kernel_counter +EXPORT_SYMBOL_GPL vmlinux 0xfd58fd5a sdhci_set_uhs_signaling +EXPORT_SYMBOL_GPL vmlinux 0xfd5f6b32 regulator_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0xfd739c9a rt_mutex_trylock +EXPORT_SYMBOL_GPL vmlinux 0xfd7a50ea set_timer_slack +EXPORT_SYMBOL_GPL vmlinux 0xfd7cb1a7 fwnode_get_named_gpiod +EXPORT_SYMBOL_GPL vmlinux 0xfd8b177e devm_hwrng_unregister +EXPORT_SYMBOL_GPL vmlinux 0xfd92ca59 snd_soc_dapm_add_routes +EXPORT_SYMBOL_GPL vmlinux 0xfd93acd7 led_trigger_set_default +EXPORT_SYMBOL_GPL vmlinux 0xfdb2ba69 regulator_get_mode +EXPORT_SYMBOL_GPL vmlinux 0xfdbeb6d2 ping_seq_next +EXPORT_SYMBOL_GPL vmlinux 0xfddbc738 pm_runtime_autosuspend_expiration +EXPORT_SYMBOL_GPL vmlinux 0xfdde1c1f scsi_queue_work +EXPORT_SYMBOL_GPL vmlinux 0xfde1a33e klist_prev +EXPORT_SYMBOL_GPL vmlinux 0xfdf53b82 trace_call_bpf +EXPORT_SYMBOL_GPL vmlinux 0xfe08f475 snd_pcm_stream_lock +EXPORT_SYMBOL_GPL vmlinux 0xfe1b3d60 ip6_datagram_send_ctl +EXPORT_SYMBOL_GPL vmlinux 0xfe4d3b80 adp5520_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xfe7453fe extcon_set_cable_state_ +EXPORT_SYMBOL_GPL vmlinux 0xfe780712 pm_runtime_irq_safe +EXPORT_SYMBOL_GPL vmlinux 0xfe990052 gpio_free +EXPORT_SYMBOL_GPL vmlinux 0xfeae6801 security_inode_setattr +EXPORT_SYMBOL_GPL vmlinux 0xfeaeed18 ata_sff_pause +EXPORT_SYMBOL_GPL vmlinux 0xfed0659a snd_soc_dai_set_sysclk +EXPORT_SYMBOL_GPL vmlinux 0xfed11ed1 usb_mon_deregister +EXPORT_SYMBOL_GPL vmlinux 0xfed9979a ata_sas_port_alloc +EXPORT_SYMBOL_GPL vmlinux 0xfedb1ff0 transport_configure_device +EXPORT_SYMBOL_GPL vmlinux 0xfef8a166 trace_current_buffer_lock_reserve +EXPORT_SYMBOL_GPL vmlinux 0xff05fa13 vring_interrupt +EXPORT_SYMBOL_GPL vmlinux 0xff291ecf clk_unregister_divider +EXPORT_SYMBOL_GPL vmlinux 0xff3bd71f da9052_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0xff3cd20c ipv4_sk_redirect +EXPORT_SYMBOL_GPL vmlinux 0xff494c03 max8997_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0xff5a8cfe cn_del_callback +EXPORT_SYMBOL_GPL vmlinux 0xff5aca0a regulator_count_voltages +EXPORT_SYMBOL_GPL vmlinux 0xff633558 vprintk_default +EXPORT_SYMBOL_GPL vmlinux 0xff7f409b devm_regulator_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xff82cde7 gpiod_put +EXPORT_SYMBOL_GPL vmlinux 0xff8d19e1 relay_flush +EXPORT_SYMBOL_GPL vmlinux 0xff9a48f3 fwnode_property_read_string_array +EXPORT_SYMBOL_GPL vmlinux 0xffb1052b crypto_register_instance +EXPORT_SYMBOL_GPL vmlinux 0xffcfbafd sdhci_pltfm_init +EXPORT_SYMBOL_GPL vmlinux 0xfff1cb20 swiotlb_tbl_unmap_single --- linux-raspi2-4.2.0.orig/debian.master/abi/4.2.0-26.31/armhf/generic-lpae +++ linux-raspi2-4.2.0/debian.master/abi/4.2.0-26.31/armhf/generic-lpae @@ -0,0 +1,18411 @@ +EXPORT_SYMBOL arch/arm/crypto/aes-arm 0x276b2f72 private_AES_set_encrypt_key +EXPORT_SYMBOL arch/arm/crypto/aes-arm 0x6c62e582 AES_decrypt +EXPORT_SYMBOL arch/arm/crypto/aes-arm 0xc30fcbed AES_encrypt +EXPORT_SYMBOL arch/arm/crypto/aes-arm 0xcf024ae9 private_AES_set_decrypt_key +EXPORT_SYMBOL arch/arm/crypto/sha256-arm 0x9bd48f13 crypto_sha256_arm_update +EXPORT_SYMBOL arch/arm/crypto/sha256-arm 0xe587c6e9 crypto_sha256_arm_finup +EXPORT_SYMBOL arch/arm/lib/xor-neon 0x0f051164 xor_block_neon_inner +EXPORT_SYMBOL crypto/gf128mul 0x0c2f123f gf128mul_4k_bbe +EXPORT_SYMBOL crypto/gf128mul 0x1068004b gf128mul_bbe +EXPORT_SYMBOL crypto/gf128mul 0x2f2889a0 gf128mul_init_64k_lle +EXPORT_SYMBOL crypto/gf128mul 0x3755f990 gf128mul_init_64k_bbe +EXPORT_SYMBOL crypto/gf128mul 0x384ef9ce gf128mul_64k_bbe +EXPORT_SYMBOL crypto/gf128mul 0x56af0dbd gf128mul_x_ble +EXPORT_SYMBOL crypto/gf128mul 0x83581089 gf128mul_init_4k_lle +EXPORT_SYMBOL crypto/gf128mul 0x9b2560b9 gf128mul_init_4k_bbe +EXPORT_SYMBOL crypto/gf128mul 0x9e13f6f6 gf128mul_lle +EXPORT_SYMBOL crypto/gf128mul 0xbd17a0df gf128mul_4k_lle +EXPORT_SYMBOL crypto/gf128mul 0xc0890413 gf128mul_64k_lle +EXPORT_SYMBOL crypto/gf128mul 0xd60736ec gf128mul_free_64k +EXPORT_SYMBOL crypto/mcryptd 0x28865246 mcryptd_arm_flusher +EXPORT_SYMBOL crypto/xor 0x5b6c00e6 xor_blocks +EXPORT_SYMBOL drivers/atm/suni 0x9c763e65 suni_init +EXPORT_SYMBOL drivers/bcma/bcma 0x8cd87b0e bcma_core_dma_translation +EXPORT_SYMBOL drivers/bcma/bcma 0xd9103d56 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 0x1f6009db paride_register +EXPORT_SYMBOL drivers/block/paride/paride 0x264e6543 pi_do_claimed +EXPORT_SYMBOL drivers/block/paride/paride 0x4267110a pi_register_driver +EXPORT_SYMBOL drivers/block/paride/paride 0x473cc549 pi_read_block +EXPORT_SYMBOL drivers/block/paride/paride 0x4ccf7559 pi_write_block +EXPORT_SYMBOL drivers/block/paride/paride 0x5aab95b4 pi_init +EXPORT_SYMBOL drivers/block/paride/paride 0x73f24762 pi_write_regr +EXPORT_SYMBOL drivers/block/paride/paride 0xa7bd628d pi_connect +EXPORT_SYMBOL drivers/block/paride/paride 0xb21ba07d pi_unregister_driver +EXPORT_SYMBOL drivers/block/paride/paride 0xb7a1f06a paride_unregister +EXPORT_SYMBOL drivers/block/paride/paride 0xba23597b pi_disconnect +EXPORT_SYMBOL drivers/block/paride/paride 0xcc58dec5 pi_schedule_claimed +EXPORT_SYMBOL drivers/block/paride/paride 0xdbf5dce4 pi_read_regr +EXPORT_SYMBOL drivers/block/paride/paride 0xe4cecdd1 pi_release +EXPORT_SYMBOL drivers/bluetooth/btbcm 0x55a33780 btbcm_patchram +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x1348760d ipmi_request_settime +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x16dcec76 ipmi_set_my_address +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x1a10c898 ipmi_set_maintenance_mode +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x1aba5db8 ipmi_unregister_smi +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x1e3fab56 ipmi_register_smi +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x1fae3bac ipmi_addr_src_to_str +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x40f2b10c ipmi_alloc_smi_msg +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x423b776a ipmi_create_user +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x4c971bec ipmi_smi_msg_received +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x4fe11c93 ipmi_smi_watcher_unregister +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x524f6f51 ipmi_get_my_address +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x5e80f37c ipmi_unregister_for_cmd +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x5fcdcc05 ipmi_get_my_LUN +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x67cb9784 ipmi_poll_interface +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x78fd36e7 ipmi_request_supply_msgs +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x804f922a ipmi_addr_length +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x8c8ee770 ipmi_destroy_user +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x8faa0751 ipmi_smi_add_proc_entry +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x92b67520 ipmi_get_smi_info +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x96cbcc81 ipmi_get_version +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xa2a98b91 ipmi_get_maintenance_mode +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xb83c6e96 ipmi_smi_watcher_register +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xd69f8567 ipmi_set_gets_events +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xe0fa83f2 ipmi_register_for_cmd +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xe4f4665b ipmi_validate_addr +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xe6ab72a6 ipmi_set_my_LUN +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xf2576cb9 ipmi_smi_watchdog_pretimeout +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xfcb77cfd ipmi_free_recv_msg +EXPORT_SYMBOL drivers/char/nvram 0x0f28cb91 nvram_read_byte +EXPORT_SYMBOL drivers/char/nvram 0x17ff2c1d __nvram_read_byte +EXPORT_SYMBOL drivers/char/nvram 0x2adec1e0 __nvram_check_checksum +EXPORT_SYMBOL drivers/char/nvram 0x7da28f12 nvram_check_checksum +EXPORT_SYMBOL drivers/char/nvram 0x9ce3f83f nvram_write_byte +EXPORT_SYMBOL drivers/char/nvram 0xa8813189 __nvram_write_byte +EXPORT_SYMBOL drivers/char/tpm/st33zp24/tpm_st33zp24 0x1fd0dbe3 st33zp24_pm_suspend +EXPORT_SYMBOL drivers/char/tpm/st33zp24/tpm_st33zp24 0x34e3208a st33zp24_pm_resume +EXPORT_SYMBOL drivers/char/tpm/st33zp24/tpm_st33zp24 0x53a62779 st33zp24_probe +EXPORT_SYMBOL drivers/char/tpm/st33zp24/tpm_st33zp24 0xa4d52c19 st33zp24_remove +EXPORT_SYMBOL drivers/char/xillybus/xillybus_core 0x25978d50 xillybus_isr +EXPORT_SYMBOL drivers/char/xillybus/xillybus_core 0x54d06182 xillybus_init_endpoint +EXPORT_SYMBOL drivers/char/xillybus/xillybus_core 0x877a1cc6 xillybus_endpoint_discovery +EXPORT_SYMBOL drivers/char/xillybus/xillybus_core 0xb6248425 xillybus_endpoint_remove +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0x59cf5745 dw_dma_cyclic_prep +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0x7cedc89d dw_dma_get_src_addr +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0x9a26eb8d dw_dma_get_dst_addr +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0xa3c9b52d dw_dma_cyclic_free +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0xcfc8b5ee dw_dma_cyclic_start +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0xde09ca90 dw_dma_cyclic_stop +EXPORT_SYMBOL drivers/dma/pl330 0xb4c43dd3 pl330_filter +EXPORT_SYMBOL drivers/edac/edac_core 0xcdc7e899 edac_mc_find +EXPORT_SYMBOL drivers/firewire/firewire-core 0x04dd92ce fw_core_add_descriptor +EXPORT_SYMBOL drivers/firewire/firewire-core 0x0fd68694 fw_iso_context_queue +EXPORT_SYMBOL drivers/firewire/firewire-core 0x16e0e55a fw_card_initialize +EXPORT_SYMBOL drivers/firewire/firewire-core 0x16e91e21 fw_csr_iterator_next +EXPORT_SYMBOL drivers/firewire/firewire-core 0x185eb8db fw_iso_buffer_destroy +EXPORT_SYMBOL drivers/firewire/firewire-core 0x1a38c2d3 fw_schedule_bus_reset +EXPORT_SYMBOL drivers/firewire/firewire-core 0x1cc07dc9 fw_iso_context_flush_completions +EXPORT_SYMBOL drivers/firewire/firewire-core 0x1f6a733f fw_card_add +EXPORT_SYMBOL drivers/firewire/firewire-core 0x2885fec5 fw_get_request_speed +EXPORT_SYMBOL drivers/firewire/firewire-core 0x2d17e54f fw_run_transaction +EXPORT_SYMBOL drivers/firewire/firewire-core 0x37580106 fw_core_add_address_handler +EXPORT_SYMBOL drivers/firewire/firewire-core 0x3a148a39 fw_iso_context_create +EXPORT_SYMBOL drivers/firewire/firewire-core 0x3be5ebd7 fw_core_handle_request +EXPORT_SYMBOL drivers/firewire/firewire-core 0x3c56ef91 fw_workqueue +EXPORT_SYMBOL drivers/firewire/firewire-core 0x3cb7726c fw_iso_buffer_init +EXPORT_SYMBOL drivers/firewire/firewire-core 0x4b637e45 fw_bus_type +EXPORT_SYMBOL drivers/firewire/firewire-core 0x4d5d4eca fw_core_remove_descriptor +EXPORT_SYMBOL drivers/firewire/firewire-core 0x5b3d7dd6 fw_send_response +EXPORT_SYMBOL drivers/firewire/firewire-core 0x65c9438b fw_csr_iterator_init +EXPORT_SYMBOL drivers/firewire/firewire-core 0x66f99787 fw_core_handle_response +EXPORT_SYMBOL drivers/firewire/firewire-core 0x7e431b14 fw_csr_string +EXPORT_SYMBOL drivers/firewire/firewire-core 0x7fd3e93c fw_core_handle_bus_reset +EXPORT_SYMBOL drivers/firewire/firewire-core 0x86468d44 fw_rcode_string +EXPORT_SYMBOL drivers/firewire/firewire-core 0x8f87b46a fw_cancel_transaction +EXPORT_SYMBOL drivers/firewire/firewire-core 0x90863005 fw_high_memory_region +EXPORT_SYMBOL drivers/firewire/firewire-core 0x92957342 fw_iso_resource_manage +EXPORT_SYMBOL drivers/firewire/firewire-core 0x9d84f8bc fw_iso_context_destroy +EXPORT_SYMBOL drivers/firewire/firewire-core 0xace26d07 fw_iso_context_queue_flush +EXPORT_SYMBOL drivers/firewire/firewire-core 0xae828cad fw_device_enable_phys_dma +EXPORT_SYMBOL drivers/firewire/firewire-core 0xb1a64e09 fw_iso_context_stop +EXPORT_SYMBOL drivers/firewire/firewire-core 0xc0d0b4d3 fw_send_request +EXPORT_SYMBOL drivers/firewire/firewire-core 0xcf0b249c fw_core_remove_address_handler +EXPORT_SYMBOL drivers/firewire/firewire-core 0xe80137d8 fw_core_remove_card +EXPORT_SYMBOL drivers/firewire/firewire-core 0xeb51083a fw_iso_context_start +EXPORT_SYMBOL drivers/firewire/firewire-core 0xf812f423 fw_fill_response +EXPORT_SYMBOL drivers/fmc/fmc 0x07f4d15b fmc_find_sdb_device +EXPORT_SYMBOL drivers/fmc/fmc 0x08f2d9ea fmc_scan_sdb_tree +EXPORT_SYMBOL drivers/fmc/fmc 0x09487b8b fmc_reprogram +EXPORT_SYMBOL drivers/fmc/fmc 0x0b66776e fmc_free_sdb_tree +EXPORT_SYMBOL drivers/fmc/fmc 0x10b48779 fmc_device_unregister +EXPORT_SYMBOL drivers/fmc/fmc 0x4b067c4d fmc_driver_register +EXPORT_SYMBOL drivers/fmc/fmc 0xacaf6559 fmc_show_sdb_tree +EXPORT_SYMBOL drivers/fmc/fmc 0xcc1da5f3 fmc_driver_unregister +EXPORT_SYMBOL drivers/fmc/fmc 0xd516f4dd fmc_device_register +EXPORT_SYMBOL drivers/fmc/fmc 0xec06f4f1 fmc_device_register_n +EXPORT_SYMBOL drivers/fmc/fmc 0xf3d6f197 fmc_device_unregister_n +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0026304e drm_vblank_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0x004b6523 drm_of_find_possible_crtcs +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0257aafb drm_vma_node_allow +EXPORT_SYMBOL drivers/gpu/drm/drm 0x02f28f77 drm_property_create_blob +EXPORT_SYMBOL drivers/gpu/drm/drm 0x031240c1 drm_object_attach_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x04032950 drm_atomic_connectors_for_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x070111dd drm_property_create_enum +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0719dcf3 drm_crtc_vblank_off +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0731141d drm_send_vblank_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0x085ce7cc drm_bridge_mode_fixup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x08da1cda __drm_modeset_lock_all +EXPORT_SYMBOL drivers/gpu/drm/drm 0x08edb47a drm_universal_plane_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0a72f765 drm_clflush_virt_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0ad5b5cf drm_plane_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0ae4b94c drm_ht_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0b11575a drm_plane_index +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0c481bc4 drm_plane_from_index +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0d839c28 drm_legacy_idlelock_take +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0e162148 drm_pci_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0ed24977 drm_mode_validate_basic +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0ed7dc56 drm_mode_hsync +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0eeecf8f drm_atomic_add_affected_planes +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0fccafb1 drm_global_item_unref +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0fd60df2 drm_get_connector_status_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1035e1d8 drm_mode_find_dmt +EXPORT_SYMBOL drivers/gpu/drm/drm 0x10411fd3 drm_calc_timestamping_constants +EXPORT_SYMBOL drivers/gpu/drm/drm 0x107742a9 drm_get_subpixel_order_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x12bb784e drm_i2c_encoder_dpms +EXPORT_SYMBOL drivers/gpu/drm/drm 0x143bdcaf drm_prime_gem_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x14a9a178 drm_get_format_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x15324eb3 drm_property_unreference_blob +EXPORT_SYMBOL drivers/gpu/drm/drm 0x159055f5 drm_vblank_count_and_time +EXPORT_SYMBOL drivers/gpu/drm/drm 0x176b9e29 drm_object_property_set_value +EXPORT_SYMBOL drivers/gpu/drm/drm 0x181b2eea drm_vblank_off +EXPORT_SYMBOL drivers/gpu/drm/drm 0x185f8051 drm_mode_create_aspect_ratio_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x186f5ce1 drm_dev_unregister +EXPORT_SYMBOL drivers/gpu/drm/drm 0x18b7db76 drm_i2c_encoder_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x18c95138 drm_modeset_backoff_interruptible +EXPORT_SYMBOL drivers/gpu/drm/drm 0x194eadaa drm_edid_header_is_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x196afafc drm_gem_object_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1a546ddd drm_mm_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1a770ac3 drm_detect_hdmi_monitor +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1d0fcdae drm_modeset_lock_all +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1dd71f7a drm_err +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1f84035e drm_debugfs_remove_files +EXPORT_SYMBOL drivers/gpu/drm/drm 0x20575d98 drm_framebuffer_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x20645642 drm_debug +EXPORT_SYMBOL drivers/gpu/drm/drm 0x20831c9b drm_atomic_state_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x20c75c2b drm_noop +EXPORT_SYMBOL drivers/gpu/drm/drm 0x22acaf62 drm_get_cea_aspect_ratio +EXPORT_SYMBOL drivers/gpu/drm/drm 0x22c1d7a0 drm_flip_work_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x22cb3e42 drm_vma_offset_lookup_locked +EXPORT_SYMBOL drivers/gpu/drm/drm 0x241ecfe1 drm_crtc_check_viewport +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2420acb6 drm_atomic_plane_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x24de41b4 drm_flip_work_queue_task +EXPORT_SYMBOL drivers/gpu/drm/drm 0x256f8451 drm_prime_pages_to_sg +EXPORT_SYMBOL drivers/gpu/drm/drm 0x262cfaaf drm_gem_mmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x26817aa2 drm_crtc_init_with_planes +EXPORT_SYMBOL drivers/gpu/drm/drm 0x286e7a15 drm_crtc_get_hv_timing +EXPORT_SYMBOL drivers/gpu/drm/drm 0x29a010e6 drm_mm_insert_node_in_range_generic +EXPORT_SYMBOL drivers/gpu/drm/drm 0x29f2b6d6 drm_mode_validate_size +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2b346e21 drm_vma_node_is_allowed +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2c38b171 drm_panel_attach +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2d1f94dc drm_bridge_disable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2d2a16d1 drm_atomic_set_crtc_for_plane +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2d50570f drm_rect_calc_hscale +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2d94bb3f drm_mode_debug_printmodeline +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2de7137e drm_legacy_getsarea +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2df857f5 drm_bridge_post_disable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2e7a4300 drm_rgb_quant_range_selectable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2ed4ff8e drm_dev_register +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2f36f0f5 drm_framebuffer_unreference +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2f86a34a drm_gem_put_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2fcc1be7 drm_pcie_get_speed_cap_mask +EXPORT_SYMBOL drivers/gpu/drm/drm 0x31346e63 drm_set_preferred_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x318cdfe4 drm_vblank_pre_modeset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x31f41d6d drm_property_create_bool +EXPORT_SYMBOL drivers/gpu/drm/drm 0x325d5673 drm_panel_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0x32fbee3c drm_legacy_addbufs_pci +EXPORT_SYMBOL drivers/gpu/drm/drm 0x330d00d6 drm_panel_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x330f03b6 drm_ioctl +EXPORT_SYMBOL drivers/gpu/drm/drm 0x346127a7 drm_global_item_ref +EXPORT_SYMBOL drivers/gpu/drm/drm 0x360a090a drm_modeset_acquire_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x36357423 drm_edid_to_eld +EXPORT_SYMBOL drivers/gpu/drm/drm 0x368cf3b9 drm_i2c_encoder_mode_fixup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x37ebe743 drm_mm_replace_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0x38a4f7ae drm_format_num_planes +EXPORT_SYMBOL drivers/gpu/drm/drm 0x39697989 drm_mm_dump_table +EXPORT_SYMBOL drivers/gpu/drm/drm 0x39854524 drm_atomic_set_fb_for_plane +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3a23b61b drm_connector_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3a660a47 drm_gem_dmabuf_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3ac1fef9 drm_mode_legacy_fb_format +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3b4ea111 drm_ati_pcigart_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3b7a8f6b drm_vma_offset_manager_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3b9d009a drm_format_plane_cpp +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3b9fba68 drm_atomic_get_connector_state +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3ba8e274 drm_i2c_encoder_save +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3dcdbf5a drm_mode_object_find +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3de7b68b drm_mode_vrefresh +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3df79d5f drm_read +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3eb37b9d drm_ht_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3efec540 drm_unplug_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3fa6e2d6 drm_mode_probed_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0x400af9e5 drm_gem_create_mmap_offset_size +EXPORT_SYMBOL drivers/gpu/drm/drm 0x416c2de9 drm_vblank_count +EXPORT_SYMBOL drivers/gpu/drm/drm 0x442a3700 drm_panel_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x46cbf5d6 drm_atomic_set_crtc_for_connector +EXPORT_SYMBOL drivers/gpu/drm/drm 0x490cfb78 drm_mm_reserve_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4be6ae65 drm_vblank_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4c2b1acb drm_gem_prime_export +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4c511235 drm_edid_is_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4e4b26b2 drm_gem_vm_close +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4ea1f5a2 drm_gem_object_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4f420ad5 drm_i2c_encoder_restore +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4f4d99ff drm_warn_on_modeset_not_all_locked +EXPORT_SYMBOL drivers/gpu/drm/drm 0x50e28c07 drm_edid_to_sad +EXPORT_SYMBOL drivers/gpu/drm/drm 0x50f22fa0 drm_add_modes_noedid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5141159e drm_vma_node_revoke +EXPORT_SYMBOL drivers/gpu/drm/drm 0x526f6f71 drm_rect_calc_hscale_relaxed +EXPORT_SYMBOL drivers/gpu/drm/drm 0x53ba4f85 drm_atomic_set_mode_prop_for_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x53e89f7d drm_bridge_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x54541cfc drm_flip_work_queue +EXPORT_SYMBOL drivers/gpu/drm/drm 0x548ddf4b drm_mode_crtc_set_gamma_size +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5706fe5d drm_pci_exit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x57b6efe3 drm_ioctl_flags +EXPORT_SYMBOL drivers/gpu/drm/drm 0x588783b6 drm_property_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5978b6ee drm_connector_index +EXPORT_SYMBOL drivers/gpu/drm/drm 0x59ef50f0 drm_edid_block_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5b7d297d drm_gem_create_mmap_offset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5d352baa drm_plane_force_disable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5db21829 drm_crtc_vblank_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5ee7e87a drm_pci_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5f673bcc drm_gem_mmap_obj +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5fb7e40f drm_crtc_vblank_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0x629c05e1 drm_clflush_sg +EXPORT_SYMBOL drivers/gpu/drm/drm 0x64bf155e drm_master_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0x64eeec46 drm_gem_prime_handle_to_fd +EXPORT_SYMBOL drivers/gpu/drm/drm 0x65a6c03c drm_legacy_mmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x65c44f57 drm_atomic_add_affected_connectors +EXPORT_SYMBOL drivers/gpu/drm/drm 0x65e68a14 drm_gem_object_lookup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6663100b drm_mode_connector_set_path_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x668e511f drm_framebuffer_reference +EXPORT_SYMBOL drivers/gpu/drm/drm 0x66944a70 drm_modeset_acquire_fini +EXPORT_SYMBOL drivers/gpu/drm/drm 0x67633846 drm_mm_insert_node_generic +EXPORT_SYMBOL drivers/gpu/drm/drm 0x68623e87 drm_atomic_state_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6900d335 drm_rect_clip_scaled +EXPORT_SYMBOL drivers/gpu/drm/drm 0x699f9133 drm_gtf_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x69a8894b drm_gem_get_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6a128fee drm_atomic_crtc_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6a15ec92 drm_framebuffer_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6a9a3cce drm_mode_prune_invalid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6bcac356 drm_hdmi_avi_infoframe_from_display_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6c0ee3bc drm_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6d0afaef drm_property_lookup_blob +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6d805461 drm_i2c_encoder_prepare +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6d8cee59 drm_modeset_unlock_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6e30ba8e drm_rect_rotate_inv +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6f2ab70b drm_legacy_rmmap_locked +EXPORT_SYMBOL drivers/gpu/drm/drm 0x71a038a9 drm_property_create_bitmask +EXPORT_SYMBOL drivers/gpu/drm/drm 0x71b4eedd drm_hdmi_vendor_infoframe_from_display_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x72bc04a8 drm_legacy_idlelock_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x736fb571 drm_put_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7462f9d0 drm_modeset_legacy_acquire_ctx +EXPORT_SYMBOL drivers/gpu/drm/drm 0x75c59a39 drm_mode_plane_set_obj_prop +EXPORT_SYMBOL drivers/gpu/drm/drm 0x75cac768 drm_dev_ref +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7b9fbf85 drm_flip_work_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7ca71964 drm_mode_duplicate +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7e56d208 drm_atomic_set_mode_for_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7ec26cd9 drm_connector_register +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7ffc783c drm_open +EXPORT_SYMBOL drivers/gpu/drm/drm 0x811ff553 drm_bridge_mode_set +EXPORT_SYMBOL drivers/gpu/drm/drm 0x82c2998f drm_flip_work_allocate_task +EXPORT_SYMBOL drivers/gpu/drm/drm 0x830ea239 drm_pci_set_busid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8409a131 drm_crtc_index +EXPORT_SYMBOL drivers/gpu/drm/drm 0x862fb7a9 drm_panel_detach +EXPORT_SYMBOL drivers/gpu/drm/drm 0x86ebcd4b drm_object_property_get_value +EXPORT_SYMBOL drivers/gpu/drm/drm 0x871ab41a drm_rect_intersect +EXPORT_SYMBOL drivers/gpu/drm/drm 0x87e7b8ef drm_property_add_enum +EXPORT_SYMBOL drivers/gpu/drm/drm 0x880702eb drm_prime_sg_to_page_addr_arrays +EXPORT_SYMBOL drivers/gpu/drm/drm 0x898b6bda drm_debugfs_create_files +EXPORT_SYMBOL drivers/gpu/drm/drm 0x89c04322 drm_mode_create_tile_group +EXPORT_SYMBOL drivers/gpu/drm/drm 0x89e8d4df drm_mode_config_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8a64baad drm_atomic_check_only +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8b00cb51 drm_reinit_primary_mode_group +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8b4f9c31 drm_property_reference_blob +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8de13715 drm_format_vert_chroma_subsampling +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8eff9111 drm_ht_find_item +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8f2bff20 drm_modeset_drop_locks +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8f40fd79 drm_mode_equal +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8f58586d drm_mode_group_init_legacy_group +EXPORT_SYMBOL drivers/gpu/drm/drm 0x90138a80 drm_mode_connector_update_edid_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x901ca67e drm_crtc_vblank_reset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x90cc03d0 drm_modeset_unlock_all +EXPORT_SYMBOL drivers/gpu/drm/drm 0x91fec1cc drm_rect_calc_vscale +EXPORT_SYMBOL drivers/gpu/drm/drm 0x921852eb of_drm_find_panel +EXPORT_SYMBOL drivers/gpu/drm/drm 0x92408488 drm_mm_scan_add_block +EXPORT_SYMBOL drivers/gpu/drm/drm 0x92d9b2fa drm_crtc_vblank_count +EXPORT_SYMBOL drivers/gpu/drm/drm 0x92f3e8e7 drm_mode_config_reset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x941522bb drm_bridge_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9544e8cc drm_atomic_state_clear +EXPORT_SYMBOL drivers/gpu/drm/drm 0x95bffeb8 drm_wait_one_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0x95e7554c drm_framebuffer_lookup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x97b632db drm_master_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0x97bcdb2a drm_mode_connector_attach_encoder +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9972db48 drm_rect_calc_vscale_relaxed +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9998112e drm_legacy_addmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9dd9b5e1 drm_bridge_enable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9e3a406c drm_legacy_rmmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9f20cf3c drm_modeset_unlock +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa0a2a7cb drm_encoder_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa0d3d4ee drm_mode_create_dirty_info_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa142614c drm_flip_work_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa1c9c5da drm_display_info_set_bus_formats +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa20833c4 drm_atomic_get_plane_state +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa2310082 drm_property_create_object +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa28078b2 drm_edid_duplicate +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa34bafbf drm_modeset_lock +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa431e03a drm_gem_private_object_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa4466414 drm_mm_remove_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa4778c44 drm_framebuffer_unregister_private +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa4f9cf93 drm_select_eld +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa96acfcb drm_rect_debug_print +EXPORT_SYMBOL drivers/gpu/drm/drm 0xab1957dc drm_modeset_lock_interruptible +EXPORT_SYMBOL drivers/gpu/drm/drm 0xab619193 drm_atomic_get_crtc_state +EXPORT_SYMBOL drivers/gpu/drm/drm 0xab90e5bd drm_gem_object_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xac476b5c drm_mode_equal_no_clocks_no_stereo +EXPORT_SYMBOL drivers/gpu/drm/drm 0xae6dc227 drm_i2c_encoder_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0xaf07eb47 drm_vma_offset_lookup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xaf77a258 drm_connector_unplug_all +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb053adda drm_rect_rotate +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb3250dd1 drm_mode_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb34ace3a drm_platform_set_busid +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb483ede5 drm_gem_prime_import +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb4f41e32 drm_i2c_encoder_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb53e8dca drm_mode_connector_set_tile_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb5e13832 drm_mode_set_config_internal +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb76424f2 drm_modeset_backoff +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb78f1ad1 drm_platform_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb7a86ec7 drm_mode_create_scaling_mode_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb813a475 drm_atomic_state_default_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0xba5aef3a drm_mode_create_dvi_i_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbd07043d drm_match_cea_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbdcc07f9 drm_gem_prime_fd_to_handle +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbe71e946 drm_gem_free_mmap_offset +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbe866fb1 drm_vblank_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbebe45b9 drm_gem_handle_delete +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbf0462d9 drm_mode_create_tv_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbfea5292 drm_vma_offset_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc084b7f7 drm_vma_offset_manager_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc08e79f7 drm_dev_unref +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc14534ee drm_handle_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc1529da6 drm_legacy_ioremap +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc1d71934 drm_mode_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc26237ec drm_crtc_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc29c7e3c drm_atomic_legacy_backoff +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc2d479b5 drm_mode_config_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc360e7e2 drm_ut_debug_printk +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc5389691 drm_gtf_mode_complex +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc5811018 drm_vblank_post_modeset +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc6707d54 drm_modeset_lock_all_crtcs +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc6eb45d2 drm_poll +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc731ca68 drm_property_create_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc74feb67 drm_mode_parse_command_line_for_connector +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc9a162c5 drm_pci_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc9b8da65 drm_i2c_encoder_mode_set +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc9e561e2 drm_irq_uninstall +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc9e7126a drm_get_edid +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc9e780b5 drm_dev_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc9f7de28 drm_property_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0xca45efbc drm_format_horz_chroma_subsampling +EXPORT_SYMBOL drivers/gpu/drm/drm 0xca5c7790 drm_mm_init_scan_with_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcaef3287 drm_atomic_state_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcc388bdf drm_crtc_vblank_on +EXPORT_SYMBOL drivers/gpu/drm/drm 0xccc2fe37 drm_mode_create_suggested_offset_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcd0fc417 drm_ht_just_insert_please +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcd774968 drm_mode_create_from_cmdline_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0xce6c0aac drm_sysfs_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcf179605 drm_crtc_send_vblank_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcf1e7ba4 drm_atomic_state_default_clear +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd1692f42 drm_property_create_signed_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd2335101 drm_fb_get_bpp_depth +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd43021e3 drm_mode_connector_list_update +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd4624870 drm_connector_unregister +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd52b1d11 drm_mm_init_scan +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd57c14fd drm_gem_handle_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd64afb6f drm_vma_offset_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd697a39e drm_probe_ddc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd70c8470 drm_mm_debug_table +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd7febb08 drm_mode_create_rotation_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd8debdb9 drm_framebuffer_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd9cb91a7 of_drm_find_bridge +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd9d476eb drm_cvt_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdbb5a9f5 drm_ht_remove_item +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdd150721 drm_mm_takedown +EXPORT_SYMBOL drivers/gpu/drm/drm 0xde2bbfea drm_mode_set_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdf666902 drm_rotation_simplify +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdfb1d1e9 drm_add_edid_modes +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe092c2b1 drm_mode_copy +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe3a0856e drm_plane_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe4b2e020 drm_legacy_ioremapfree +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe50a776a drm_clflush_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe51d89b5 drm_mm_clean +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe7197773 drm_ht_insert_item +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe7a99b00 drm_crtc_wait_one_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe8685e74 drm_av_sync_delay +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe8fcc03f drm_connector_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xea2da18c drm_dev_set_unique +EXPORT_SYMBOL drivers/gpu/drm/drm 0xea422bab drm_mode_get_tile_group +EXPORT_SYMBOL drivers/gpu/drm/drm 0xea6d4017 drm_get_pci_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0xead16b56 drm_crtc_handle_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0xeae7af99 drm_legacy_ioremap_wc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xeb47ec93 drm_i2c_encoder_detect +EXPORT_SYMBOL drivers/gpu/drm/drm 0xed76a2a2 drm_ati_pcigart_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xed86119e drm_bridge_pre_enable +EXPORT_SYMBOL drivers/gpu/drm/drm 0xedc252f1 drm_atomic_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0xef517ef8 drm_atomic_async_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf1421d13 drm_mode_sort +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf45765ac drm_gem_dumb_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf5b888b6 drm_gem_vm_open +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf7560ba3 drm_encoder_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf7e043b6 drm_modeset_lock_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf8d7274e drm_vblank_on +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf973095f drm_calc_vbltimestamp_from_scanoutpos +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf9fca56e drm_atomic_connector_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfbd991cc drm_mode_set_crtcinfo +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfc441df2 drm_irq_install +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfce88034 drm_bridge_attach +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfcf54a4f drm_mm_scan_remove_block +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfd063935 drm_edid_to_speaker_allocation +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfed70c46 drm_vblank_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xffc6c87a drm_detect_monitor_audio +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x03c51cd6 drm_dp_mst_get_vcpi_slots +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x08048cba drm_dp_mst_topology_mgr_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x083b9adb drm_pick_cmdline_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x098e47d2 drm_dp_link_train_clock_recovery_delay +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0c28f110 drm_helper_encoder_in_use +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0f96ec70 drm_dp_clock_recovery_ok +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x10efbf0a drm_atomic_helper_plane_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x140ecae1 __drm_atomic_helper_connector_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x1612a298 drm_fb_helper_single_add_all_connectors +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x163251c8 drm_dp_link_train_channel_eq_delay +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x1a2a53a9 drm_dp_update_payload_part1 +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x1ba5f40e drm_primary_helper_update +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x1d0f9a89 drm_dp_mst_hpd_irq +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x22ba92b9 drm_dp_dpcd_read_link_status +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x22cf0948 drm_atomic_helper_connector_dpms +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x231930d6 drm_helper_probe_single_connector_modes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2767af8f drm_fb_helper_blank +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2fb1f399 drm_atomic_helper_commit_planes_on_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x34871adf drm_dp_channel_eq_ok +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x395ee6f9 drm_atomic_helper_wait_for_vblanks +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3b1a1c6e drm_dp_dpcd_read +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3b3b7948 drm_dp_mst_topology_mgr_set_mst +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x43cc8b9f __drm_atomic_helper_connector_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4474db5d drm_dp_check_act_status +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x45456aa4 drm_fb_helper_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x466bff87 drm_atomic_helper_disable_plane +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x478181e3 drm_atomic_helper_connector_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4e70546b drm_dp_mst_get_edid +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4e81ee42 drm_atomic_helper_commit_modeset_enables +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x506ce93a drm_dp_update_payload_part2 +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x56d3b585 drm_dp_mst_deallocate_vcpi +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5e06288e drm_kms_helper_poll_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5fc23df5 drm_fb_helper_restore_fbdev_mode_unlocked +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x60693b9f drm_dp_dpcd_write +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x60fda485 drm_kms_helper_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x61386bae drm_atomic_helper_plane_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x64093569 drm_atomic_helper_connector_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x645a30af drm_kms_helper_poll_disable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x654c1cd3 drm_atomic_helper_swap_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x67ed64aa drm_atomic_helper_update_plane +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6c61e783 drm_plane_helper_update +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6d1ce3da drm_dp_aux_register +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6dc6df54 drm_fb_helper_setcmap +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x711a004a drm_dp_link_rate_to_bw_code +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x72f51723 drm_fb_helper_initial_config +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x77983a56 __drm_atomic_helper_plane_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7beed83c drm_crtc_helper_set_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7c1441ab drm_dp_link_probe +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7d748341 drm_plane_helper_disable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7e1d79aa drm_atomic_helper_check_planes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7e211321 drm_atomic_helper_set_config +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7e6e31ae drm_dp_mst_reset_vcpi_slots +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7fe1382a drm_dp_mst_allocate_vcpi +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x81d4e188 drm_atomic_helper_prepare_planes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8258812f drm_atomic_helper_check +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x84e924ba drm_dp_get_adjust_request_pre_emphasis +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x84ec3cf5 drm_dp_mst_dump_topology +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x85f931de drm_kms_helper_poll_fini +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x86fac1c2 drm_fb_helper_fill_var +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8a1007e2 drm_fb_helper_check_var +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8e39b4f6 drm_has_preferred_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9034484f drm_dp_link_power_down +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x90b180e5 drm_atomic_helper_crtc_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x91aa1136 drm_atomic_helper_plane_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x91cf0658 drm_helper_hpd_irq_event +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x92ca0f9f drm_atomic_helper_crtc_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9371e0e6 drm_helper_connector_dpms +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9602dfb8 drm_atomic_helper_check_modeset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9783d2a5 drm_fb_helper_remove_one_connector +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9798f96a drm_atomic_helper_commit +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9bb1c1d8 drm_fb_helper_fill_fix +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9daafe18 drm_primary_helper_disable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9f40ddb2 drm_helper_move_panel_connectors_to_head +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa0475d5e drm_fb_helper_prepare +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa06fd8be drm_fb_helper_debug_enter +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa3cc2776 drm_atomic_helper_crtc_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa47826e4 drm_dp_calc_pbn_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa530f329 drm_helper_resume_force_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa5a66924 drm_dp_aux_unregister +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa77858bb drm_dp_get_adjust_request_voltage +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa8d6809d drm_dp_bw_code_to_link_rate +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa8e26795 drm_crtc_helper_set_config +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa93f4049 drm_crtc_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xad7bdec7 drm_plane_helper_check_update +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xae842e02 drm_atomic_helper_update_legacy_modeset_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb13dc587 drm_atomic_helper_commit_planes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb1b0478b drm_dp_link_configure +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb26874b9 drm_atomic_helper_cleanup_planes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb281a6ef drm_dp_mst_topology_mgr_resume +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb49da51c drm_atomic_helper_crtc_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb89f8dd6 drm_helper_crtc_mode_set_base +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xbbabd265 drm_dp_find_vcpi_slots +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xbd5a8947 drm_helper_crtc_in_use +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xbec6f37a drm_atomic_helper_plane_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc00a7e92 drm_helper_disable_unused_functions +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc15c88c9 drm_fb_helper_pan_display +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc45d9dea drm_atomic_helper_commit_modeset_disables +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xcb2184e6 drm_dp_link_power_up +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xcba76b6a drm_helper_mode_fill_fb_struct +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xccbb0c82 drm_dp_mst_topology_mgr_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd161a2cc drm_fb_helper_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd27e294c drm_fb_helper_debug_leave +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd731ce62 drm_primary_helper_funcs +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd89cbca6 drm_atomic_helper_page_flip +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xdb269790 __drm_atomic_helper_crtc_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xde9d4a0b drm_atomic_helper_connector_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe0d1db0d drm_dp_mst_topology_mgr_suspend +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xee5ac9bc drm_fb_helper_fini +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf341492a drm_fb_helper_add_one_connector +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf3f37d83 drm_helper_crtc_mode_set +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf4d083a7 __drm_atomic_helper_crtc_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf791d06c drm_atomic_helper_connector_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf794cc43 drm_primary_helper_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf8c32e72 drm_fb_helper_set_par +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xfb2368fc drm_helper_probe_single_connector_modes_nomerge +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xfdb7bc10 drm_dp_mst_detect_port +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xfeea6909 __drm_atomic_helper_plane_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xff4de1e4 drm_kms_helper_poll_enable +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x03c27c05 ttm_bo_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x04171fa4 ttm_tt_fini +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x084c0b37 ttm_page_alloc_debugfs +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x11abd93b ttm_bo_add_to_lru +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x132b05be ttm_round_pot +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x136ec7fa ttm_suspend_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x1594c242 ttm_tt_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x1c718cf5 ttm_bo_move_accel_cleanup +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x2074e5d4 ttm_bo_unlock_delayed_workqueue +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x2387d2bd ttm_tt_bind +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x2b46a3dc ttm_mem_io_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x2b54aa9a ttm_object_file_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x2fc04ba6 ttm_bo_validate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x31a8f81b ttm_bo_mem_space +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x334bf8e8 ttm_pool_unpopulate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x338dbff2 ttm_bo_swapout_all +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x3444622f ttm_pool_populate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x35071076 ttm_bo_del_sub_from_lru +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x3f768723 ttm_bo_lock_delayed_workqueue +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x4540236d ttm_bo_acc_size +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x45860a4b ttm_fbdev_mmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x4628b006 ttm_read_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x479cbf67 ttm_bo_wait +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x485a5bc0 ttm_ref_object_add +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x4bc3734e ttm_mem_global_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x5559d57e ttm_bo_create +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x5aeffbf8 ttm_bo_move_ttm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x5c38694f ttm_dma_tt_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x5cf59609 ttm_bo_global_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x61a158a4 ttm_bo_synccpu_write_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x629ea923 ttm_object_device_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x67b1d568 ttm_bo_global_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x68fd5855 ttm_dma_tt_fini +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x6c0ec969 ttm_lock_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x6f767471 ttm_mem_global_free +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x727bf224 ttm_bo_unmap_virtual +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x799d6619 ttm_mem_io_free +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x80d86f0e ttm_object_device_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x8589758d ttm_suspend_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x86bb8a6c ttm_read_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x880a15ad ttm_base_object_lookup +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x8dfbeb83 ttm_bo_device_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x939dcd63 ttm_bo_dma_acc_size +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x94894449 ttm_base_object_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x95a5dd41 ttm_bo_mem_put +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x9601b8f5 ttm_mem_global_alloc +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x998e45c0 ttm_ref_object_base_unref +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xa2391767 ttm_mem_io_reserve +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xad5523e6 ttm_bo_unref +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xae87b61d ttm_io_prot +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xaefae715 ttm_eu_backoff_reservation +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xbb375e58 ttm_bo_clean_mm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xbfc605d5 ttm_bo_evict_mm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xc92fecaa ttm_bo_init_mm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xc968d68f ttm_write_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xcd404f03 ttm_tt_set_placement_caching +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xce6e43a8 ttm_base_object_lookup_for_ref +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xcf67c299 ttm_ref_object_exists +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xcf6edb1b ttm_prime_object_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xd12e8257 ttm_eu_fence_buffer_objects +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xd8edb115 ttm_base_object_unref +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xdcca1b24 ttm_bo_move_memcpy +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xdd1dc3fe ttm_bo_kmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xe1818d1f ttm_bo_kunmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xe3078b73 ttm_bo_mmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xe4b775af ttm_mem_global_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xebbebf29 ttm_bo_synccpu_write_grab +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xec74beff ttm_bo_manager_func +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xefc4df0d ttm_vt_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xf7b8712b ttm_mem_io_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xfa254f42 ttm_eu_reserve_buffers +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xfbc2c5ec ttm_object_file_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xfd7484d3 ttm_write_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xfe8cc064 ttm_vt_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xffd41d14 ttm_bo_device_init +EXPORT_SYMBOL drivers/hwmon/hwmon-vid 0x0903c239 vid_from_reg +EXPORT_SYMBOL drivers/hwmon/hwmon-vid 0xef1c781c vid_which_vrm +EXPORT_SYMBOL drivers/hwmon/sch56xx-common 0x0502437c sch56xx_watchdog_register +EXPORT_SYMBOL drivers/hwmon/sch56xx-common 0x0e2a6864 sch56xx_read_virtual_reg +EXPORT_SYMBOL drivers/hwmon/sch56xx-common 0x0f5877d4 sch56xx_read_virtual_reg16 +EXPORT_SYMBOL drivers/hwmon/sch56xx-common 0x34257f35 sch56xx_watchdog_unregister +EXPORT_SYMBOL drivers/hwmon/sch56xx-common 0xe5022f95 sch56xx_read_virtual_reg12 +EXPORT_SYMBOL drivers/hwmon/sch56xx-common 0xed1d2a08 sch56xx_write_virtual_reg +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-bit 0x57f769da i2c_bit_add_bus +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-bit 0xbe6b3e74 i2c_bit_algo +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-bit 0xfd1ceca8 i2c_bit_add_numbered_bus +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-pca 0x2206f7ae i2c_pca_add_numbered_bus +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-pca 0x8dbd2b80 i2c_pca_add_bus +EXPORT_SYMBOL drivers/i2c/busses/i2c-amd756 0x6cad0075 amd756_smbus +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x0913e116 mma9551_app_reset +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x1285648b mma9551_read_config_words +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x12d21f3a mma9551_read_accel_chan +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x297f0b18 mma9551_read_config_byte +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x2d4d7b6b mma9551_write_config_word +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x3cdd6b6b mma9551_write_config_byte +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x3d72580f mma9551_read_version +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x41ef446c mma9551_read_accel_scale +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x55732cf3 mma9551_write_config_words +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x8932e56e mma9551_gpio_config +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x8ccdff80 mma9551_read_config_word +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xb30194a6 mma9551_read_status_words +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xb9092ea9 mma9551_set_power_state +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xbcd7fe96 mma9551_sleep +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xca508795 mma9551_read_status_word +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xd1ea3842 mma9551_set_device_state +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xddb967b7 mma9551_read_status_byte +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xe85e850b mma9551_update_config_bits +EXPORT_SYMBOL drivers/iio/accel/st_accel 0x79adf0ff st_accel_common_remove +EXPORT_SYMBOL drivers/iio/accel/st_accel 0xaf7ab629 st_accel_common_probe +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x47944ba4 hid_sensor_parse_common_attributes +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x69d9b61b hid_sensor_write_raw_hyst_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x9bf99639 hid_sensor_read_poll_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0xc83a92bf hid_sensor_format_scale +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0xdc1d5dc7 hid_sensor_read_raw_hyst_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0xf2b6e614 hid_sensor_read_samp_freq_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0xfe95b2f2 hid_sensor_write_samp_freq_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-trigger 0x0f8bbf25 hid_sensor_pm_ops +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-trigger 0x16a025c1 hid_sensor_power_state +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-trigger 0x759697cf hid_sensor_remove_trigger +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-trigger 0xd721ed24 hid_sensor_setup_trigger +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0x09644cbc ssp_register_consumer +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0x1f6bd870 ssp_disable_sensor +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0x33603f81 ssp_change_delay +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0x87b0096d ssp_get_sensor_delay +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0xc87d3203 ssp_enable_sensor +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/ssp_iio 0x03d19acd ssp_common_buffer_postdisable +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/ssp_iio 0x6fa23dc6 ssp_common_process_data +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/ssp_iio 0xb502cdf7 ssp_common_buffer_postenable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x05e371ac st_sensors_init_sensor +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x074d7047 st_sensors_trigger_handler +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x1cda2300 st_sensors_power_disable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x2e82be00 st_sensors_allocate_trigger +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x3af058e5 st_sensors_set_axis_enable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x5672d146 st_sensors_read_info_raw +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x571f7e10 st_sensors_power_enable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x5941af94 st_sensors_check_device_support +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x75d8a92e st_sensors_deallocate_trigger +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xb1960295 st_sensors_set_fullscale_by_gain +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xb622368c st_sensors_sysfs_sampling_frequency_avail +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xb9e5d63b st_sensors_set_enable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xc3b2ac70 st_sensors_set_dataready_irq +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xd1c4b976 st_sensors_get_buffer_element +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xf1b69198 st_sensors_set_odr +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xfe0c813d st_sensors_sysfs_scale_avail +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors_i2c 0x8bb689b1 st_sensors_of_i2c_probe +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors_i2c 0xc783974b st_sensors_i2c_configure +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors_spi 0xe52059ed st_sensors_spi_configure +EXPORT_SYMBOL drivers/iio/gyro/st_gyro 0x01a6d480 st_gyro_common_probe +EXPORT_SYMBOL drivers/iio/gyro/st_gyro 0x79d975e4 st_gyro_common_remove +EXPORT_SYMBOL drivers/iio/imu/adis_lib 0x383ef7ab adis_enable_irq +EXPORT_SYMBOL drivers/iio/imu/adis_lib 0xe67dc441 adis_debugfs_reg_access +EXPORT_SYMBOL drivers/iio/industrialio 0x12081dce iio_trigger_poll_chained +EXPORT_SYMBOL drivers/iio/industrialio 0x13100078 iio_device_free +EXPORT_SYMBOL drivers/iio/industrialio 0x241b3b46 iio_device_unregister +EXPORT_SYMBOL drivers/iio/industrialio 0x2d6bcdcb iio_trigger_generic_data_rdy_poll +EXPORT_SYMBOL drivers/iio/industrialio 0x51c72bea iio_trigger_free +EXPORT_SYMBOL drivers/iio/industrialio 0x57c13e1a iio_triggered_buffer_predisable +EXPORT_SYMBOL drivers/iio/industrialio 0x5ec3d85a iio_device_alloc +EXPORT_SYMBOL drivers/iio/industrialio 0x664f47be iio_read_const_attr +EXPORT_SYMBOL drivers/iio/industrialio 0x7a83d5e2 iio_trigger_poll +EXPORT_SYMBOL drivers/iio/industrialio 0x8bcde589 iio_trigger_register +EXPORT_SYMBOL drivers/iio/industrialio 0x8dd7a7fb iio_bus_type +EXPORT_SYMBOL drivers/iio/industrialio 0x8e00a946 iio_buffer_init +EXPORT_SYMBOL drivers/iio/industrialio 0x93afa9c8 iio_triggered_buffer_postenable +EXPORT_SYMBOL drivers/iio/industrialio 0xa100ca41 iio_push_event +EXPORT_SYMBOL drivers/iio/industrialio 0xa3ae0ed9 iio_trigger_unregister +EXPORT_SYMBOL drivers/iio/industrialio 0xa5b27e93 iio_device_register +EXPORT_SYMBOL drivers/iio/industrialio 0xa81eeec2 iio_trigger_notify_done +EXPORT_SYMBOL drivers/iio/industrialio 0xae0e072a iio_trigger_alloc +EXPORT_SYMBOL drivers/iio/industrialio 0xdf76bbeb iio_pollfunc_store_time +EXPORT_SYMBOL drivers/iio/industrialio-triggered-buffer 0x366922ff iio_triggered_buffer_setup +EXPORT_SYMBOL drivers/iio/industrialio-triggered-buffer 0x96bbc561 iio_triggered_buffer_cleanup +EXPORT_SYMBOL drivers/iio/kfifo_buf 0x233e5fe2 devm_iio_kfifo_allocate +EXPORT_SYMBOL drivers/iio/kfifo_buf 0x34f6ba33 devm_iio_kfifo_free +EXPORT_SYMBOL drivers/iio/kfifo_buf 0xa7f110cc iio_kfifo_allocate +EXPORT_SYMBOL drivers/iio/kfifo_buf 0xd0cb83ee iio_kfifo_free +EXPORT_SYMBOL drivers/iio/magnetometer/st_magn 0xc730b9e2 st_magn_common_probe +EXPORT_SYMBOL drivers/iio/magnetometer/st_magn 0xdaa3e3fd st_magn_common_remove +EXPORT_SYMBOL drivers/iio/pressure/ms5611_core 0xb909d76a ms5611_probe +EXPORT_SYMBOL drivers/iio/pressure/st_pressure 0x1c0fecf1 st_press_common_probe +EXPORT_SYMBOL drivers/iio/pressure/st_pressure 0xf116df43 st_press_common_remove +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x049ace30 rdma_addr_find_smac_by_sgid +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x04b8b6d7 rdma_translate_ip +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x1c3c0ad3 rdma_addr_size +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x273f4cca rdma_addr_cancel +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x45bbba01 rdma_resolve_ip +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x5347cc38 rdma_addr_unregister_client +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x79e7ac10 rdma_copy_addr +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x7df81f32 rdma_addr_register_client +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0xf029eb25 rdma_addr_find_dmac_by_grh +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x05a79cda ib_send_cm_rej +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x15321fc1 ib_send_cm_sidr_rep +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x22c62359 ib_send_cm_mra +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x3a48eee2 cm_class +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x41a4f353 ib_send_cm_rtu +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x43aa02fb ib_send_cm_apr +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x4ad71474 ib_send_cm_drep +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x7e1e87a8 ib_send_cm_rep +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x82c185d0 ib_send_cm_req +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x869172e5 ib_cm_notify +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xa1355c71 ib_send_cm_dreq +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xbb17b775 ib_send_cm_lap +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xbd419a6e ib_send_cm_sidr_req +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xcf40f161 ib_destroy_cm_id +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xdac3d650 ib_cm_listen +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xe07b35f0 ib_cm_init_qp_attr +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xf2292a97 ib_create_cm_id +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0097ec94 ib_destroy_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x073e31aa ib_modify_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x082848c1 ib_get_cached_lmc +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x08a03272 ib_alloc_xrcd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x09defd7a ib_destroy_flow +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0b3e4d0e ib_get_cached_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0c1b9ac1 ib_ud_header_unpack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0fbae866 ib_alloc_fast_reg_page_list +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0ffeebf4 ib_get_cached_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x13a17f47 ib_alloc_mw +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1574e5e5 ib_query_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x15befc30 ib_free_fast_reg_page_list +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x16a01edc ib_detach_mcast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1d82bb0d ib_find_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1e491a04 ib_unmap_fmr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x24b82dcb ib_dealloc_fmr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x25f5a5d9 ib_find_cached_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x274474c9 ib_destroy_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x29995c94 ib_umem_copy_from +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2d5ef66b ib_get_client_data +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2e051723 ib_set_client_data +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2ed6e386 ib_ud_header_pack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x3195e2f4 ib_umem_page_count +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x31deb2e2 ib_attach_mcast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x364fccb5 ib_umem_odp_map_dma_pages +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x372717f1 ib_dealloc_pd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x3a63e054 ib_dealloc_xrcd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x42d13fa9 ib_create_fmr_pool +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x442237f2 ib_umem_odp_unmap_dma_pages +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x4422790f ib_dereg_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x498d07fc ib_fmr_pool_unmap +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x4b0c5578 ibnl_put_msg +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x50dbc447 ib_flush_fmr_pool +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x51b31811 ib_fmr_pool_map_phys +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x520b2638 ib_pack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5611cdea rdma_node_get_transport +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x59d076ad ibnl_put_attr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5a40f27f ib_umem_get +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5ab9f61d ib_unregister_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5bcc42a4 rdma_port_get_link_layer +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5cf1b77f ib_check_mr_status +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x614d264f ib_register_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x640ff014 ib_open_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6e030e26 ib_modify_qp_is_ok +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6f6ab6ed ib_umem_release +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6f882763 ib_register_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x707c728b ib_create_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x71443c4c ib_create_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x72375135 ibnl_add_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7bcc9d83 ib_find_exact_cached_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7d39a192 ib_dispatch_event +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x89186f4a ib_create_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x8a11cf62 ib_resolve_eth_l2_attrs +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x8e5b362e ib_destroy_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x8f2a62f0 ib_modify_port +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x908e6e84 ib_alloc_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x937ec10f ib_modify_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x9576b1f8 ib_register_event_handler +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x9b33713a ib_alloc_pd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x9be2e543 ibnl_multicast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x9c622500 ib_modify_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x9e8c4564 ib_query_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa12b13ae ib_unregister_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa29c6d9d ib_get_dma_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa47ec9f6 ib_query_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa688325f ib_alloc_fmr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa849b496 ib_unregister_event_handler +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa90d2685 ib_create_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xab0a3467 mult_to_ib_rate +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb1a312e1 ib_unpack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb93a52b0 ib_rate_to_mbps +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb9c40077 ib_create_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xbadd8259 ib_rate_to_mult +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xbbf1bf6b ib_alloc_fast_reg_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xbeea37c2 ib_find_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xbf9b27da ib_resize_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc066f9c5 ib_rereg_phys_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc32b59ff ib_destroy_fmr_pool +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc50daf59 ib_modify_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc67f14a5 ibnl_remove_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc77048de ib_dealloc_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc8e240db ib_query_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xcacf0350 ib_close_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xcfa2a09f ib_event_msg +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd2466575 ib_create_ah_from_wc +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd3b5a9b7 ibnl_unicast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd52e25ac ib_query_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd7b6a6b5 ib_reg_phys_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd80cfe87 ib_query_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd8a6444b ib_find_cached_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd9e98c4f ib_destroy_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xde3e5f61 ib_init_ah_from_wc +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe40d52e7 ib_dealloc_mw +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe5840ec6 ib_wc_status_msg +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe5a0d023 ib_query_port +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe7dea38c ib_query_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xeac8cd3c ib_destroy_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf81b3f8e ib_create_flow +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xfc150956 ib_ud_header_init +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xfdd4f3e5 ib_modify_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x04686147 ib_create_send_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x12ce6918 ib_modify_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x2f0ea69e ib_response_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x339a5f52 ib_free_recv_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x5fcee720 ib_register_mad_snoop +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x6e85a983 ib_mad_kernel_rmpp_agent +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x6ec6caeb ib_free_send_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x6f077fcf ib_get_mad_data_offset +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x7b5d4b7a ib_is_mad_class_rmpp +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x7e96bc0e ib_register_mad_agent +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xc0ad0be9 ib_unregister_mad_agent +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xc445b2f4 ib_cancel_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xc5597e7f ib_redirect_mad_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xdce1e3e2 ib_post_send_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xe5223fb4 ib_process_mad_wc +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xee2cd36b ib_get_rmpp_segment +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x22f07253 ib_sa_unpack_path +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x3e3d2b1f ib_sa_guid_info_rec_query +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x507db166 ib_sa_path_rec_get +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x576fdbac ib_sa_free_multicast +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x5e5cdd33 ib_sa_get_mcmember_rec +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x8ff18bfc ib_init_ah_from_path +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x90c579e3 ib_sa_service_rec_query +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x93eda73c ib_sa_join_multicast +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x9ce3af5c ib_init_ah_from_mcmember +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x9e7aad54 ib_sa_register_client +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xda0d50ec ib_sa_cancel_query +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xddc330e7 ib_sa_pack_path +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xde9e1b2c ib_sa_unregister_client +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x2569d757 ib_copy_path_rec_to_user +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x52a6ce77 ib_copy_ah_attr_to_user +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x7971c00e ib_copy_qp_attr_to_user +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0xe350f2aa ib_copy_path_rec_from_user +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x0ff9f042 iwpm_remove_mapinfo +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x13ae2f48 iwpm_remote_info_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x1fdeac0e iw_cm_accept +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x2bdbd3b1 iwpm_add_mapping_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x2f49b636 iwpm_mapping_info_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x309b9511 iw_cm_listen +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x5afb51ec iwpm_ack_mapping_info_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x5da59312 iwpm_register_pid +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x62d6696d iwpm_register_pid_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x66a4000c iw_cm_reject +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x68af507a iw_cm_init_qp_attr +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x68eb94d4 iwpm_add_and_query_mapping_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x6968573d iwpm_add_mapping +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x6c74c344 iwpm_get_remote_info +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x76a2bf6c iw_destroy_cm_id +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x904609a0 iwpm_remove_mapping +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x9155d230 iw_cm_connect +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x91a914d6 iwpm_init +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x9327be67 iwpm_exit +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x99edf901 iwpm_valid_pid +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xa411aeba iw_create_cm_id +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xd447b24a iwpm_create_mapinfo +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xdf764cfe iwpm_mapping_error_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xf380aa0f iwpm_add_and_query_mapping +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xfe8ae81d iw_cm_disconnect +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x23203fc1 rdma_create_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x2895705c rdma_init_qp_attr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x3db111f3 rdma_set_reuseaddr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x48c5688a rdma_destroy_qp +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x66455e80 rdma_notify +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x75428a1e rdma_accept +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x82f211b8 rdma_connect +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x85b5294b rdma_listen +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x87b15be7 rdma_reject +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x907df803 rdma_event_msg +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xaa1bc243 rdma_set_service_type +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xb712d678 rdma_resolve_addr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xb7dd1c91 rdma_disconnect +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xb85a46a5 rdma_bind_addr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xc42d6056 rdma_set_afonly +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xc49fc24e rdma_get_service_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xe139a63e rdma_create_qp +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xe43591d0 rdma_destroy_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xf4b56c0e rdma_resolve_route +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xfa5372e5 rdma_set_ib_paths +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xfd3b509b rdma_leave_multicast +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xff4f40a1 rdma_join_multicast +EXPORT_SYMBOL drivers/input/gameport/gameport 0x296bf461 gameport_unregister_port +EXPORT_SYMBOL drivers/input/gameport/gameport 0x4ecb168e __gameport_register_port +EXPORT_SYMBOL drivers/input/gameport/gameport 0x69d53dbc gameport_stop_polling +EXPORT_SYMBOL drivers/input/gameport/gameport 0x6ee76775 gameport_set_phys +EXPORT_SYMBOL drivers/input/gameport/gameport 0x84d120f9 gameport_unregister_driver +EXPORT_SYMBOL drivers/input/gameport/gameport 0x8edd1c65 gameport_start_polling +EXPORT_SYMBOL drivers/input/gameport/gameport 0xa4a0dacb gameport_open +EXPORT_SYMBOL drivers/input/gameport/gameport 0xa52364a7 gameport_close +EXPORT_SYMBOL drivers/input/gameport/gameport 0xfd966e99 __gameport_register_driver +EXPORT_SYMBOL drivers/input/input-polldev 0x0fdc3307 input_unregister_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0x4b087235 input_allocate_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0x969880d8 input_register_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0xa7998a14 input_free_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0xb52aeaf2 devm_input_allocate_polled_device +EXPORT_SYMBOL drivers/input/matrix-keymap 0xf7d89e98 matrix_keypad_build_keymap +EXPORT_SYMBOL drivers/input/misc/ad714x 0x19195498 ad714x_disable +EXPORT_SYMBOL drivers/input/misc/ad714x 0x8f66e5d7 ad714x_probe +EXPORT_SYMBOL drivers/input/misc/ad714x 0x9fdc04ea ad714x_enable +EXPORT_SYMBOL drivers/input/misc/ad714x 0xabe72178 ad714x_remove +EXPORT_SYMBOL drivers/input/misc/cma3000_d0x 0x59711c82 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/sparse-keymap 0x0d6d1f12 sparse_keymap_entry_from_scancode +EXPORT_SYMBOL drivers/input/sparse-keymap 0x1d492560 sparse_keymap_report_entry +EXPORT_SYMBOL drivers/input/sparse-keymap 0x1df035c6 sparse_keymap_entry_from_keycode +EXPORT_SYMBOL drivers/input/sparse-keymap 0x46cb08b0 sparse_keymap_report_event +EXPORT_SYMBOL drivers/input/sparse-keymap 0x6c1927ec sparse_keymap_free +EXPORT_SYMBOL drivers/input/sparse-keymap 0xa3a90001 sparse_keymap_setup +EXPORT_SYMBOL drivers/input/touchscreen/ad7879 0x26cc7a76 ad7879_probe +EXPORT_SYMBOL drivers/input/touchscreen/ad7879 0x97f83edf ad7879_remove +EXPORT_SYMBOL drivers/input/touchscreen/ad7879 0xe7206564 ad7879_pm_ops +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x04403fcf unregister_capi_driver +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x0dd35f34 attach_capi_ctr +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x114a6499 capi_ctr_handle_message +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x14f2aa5a capi20_get_version +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x155299e2 capi_ctr_ready +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x2731eed5 capi_ctr_suspend_output +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x2b8eab1f capilib_free_ncci +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x2baa6586 capilib_new_ncci +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x31c24aa4 capi20_isinstalled +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x417b448b capi_ctr_down +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x4dc788f5 capi_ctr_resume_output +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x4eade299 capi20_register +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x50b33ca4 capi_cmsg2message +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x6057c6f3 capi_message2cmsg +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x62e32d43 capilib_data_b3_conf +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x71e8d5ba capilib_data_b3_req +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x7a33596c capi20_get_serial +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x7e6f1307 capi20_get_manufacturer +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x8f699913 capilib_release +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x930c4c8c detach_capi_ctr +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x9f823278 register_capi_driver +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xa4a6102f capi20_put_message +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xa7c4fd6c capi_message2str +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xaa165d27 capilib_release_appl +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xaec1fecd capi20_release +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xb19fda8d capi_cmd2str +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xb60e5e5f capi_cmsg_header +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xc10fe128 cdebbuf_free +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xc42d9ec1 capi20_manufacturer +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xe19a11ac capi20_get_profile +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xe8ad9bd1 capi_cmsg2str +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x146d395c b1_load_t4file +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x1d4dc40c b1_free_card +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x4139bc0e b1_parse_version +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x44f11654 b1_load_firmware +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x478fc1a0 b1_loaded +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x7731d0ce b1_load_config +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x7a46f6a8 b1ctl_proc_fops +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x7d02b8d1 b1_send_message +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x7e1db53e b1_getrevision +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x85f09690 b1_irq_table +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x99dd5226 avmcard_dma_free +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x9f322703 b1_register_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xbd8e4533 b1_reset_ctr +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xc2dc0039 b1_release_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xc2f11b28 b1_alloc_card +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xd600dfd9 avmcard_dma_alloc +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xdfd28376 b1_detect +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xfa10fee4 b1_interrupt +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x0a10e32b b1pciv4_detect +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x0fa2284f b1dmactl_proc_fops +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x23262b11 b1dma_reset +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x2c4b3ab4 t1pci_detect +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x3e1e645f b1dma_release_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x446d987c b1dma_load_firmware +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x68b5f216 b1dma_reset_ctr +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x9323bd90 b1dma_send_message +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xa42f321f b1dma_register_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xd6f9f1ea b1dma_interrupt +EXPORT_SYMBOL drivers/isdn/hardware/eicon/divadidd 0x2974ead1 DIVA_DIDD_Read +EXPORT_SYMBOL drivers/isdn/hardware/eicon/divadidd 0x7ab59853 proc_net_eicon +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0x282ac09b mISDNipac_irq +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0x2c620bc1 mISDNisac_irq +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0x95ce8614 mISDNipac_init +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0xbc092c9e mISDNisac_init +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNisar 0xb24c7280 mISDNisar_init +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNisar 0xc58def57 mISDNisar_irq +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x00b36741 hisax_init_pcmcia +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x07f4f2ce hisax_unregister +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x148f0c99 FsmFree +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x6fe1ca04 FsmDelTimer +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x93a64734 FsmChangeState +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x9df0cd27 FsmEvent +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x9f987c85 FsmRestartTimer +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0xa1bc94b9 FsmInitTimer +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0xee93522c hisax_register +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0xf0a16657 FsmNew +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0xfc27303b HiSax_closecard +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x054d6bbf isacsx_irq +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x39a78124 isacsx_setup +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x3f3b323a isac_d_l2l1 +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x46b44dbb isac_irq +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x84d6ca00 isac_init +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x8fc68224 isac_setup +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0x2184ee8c isdn_ppp_register_compressor +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0xc25460ec register_isdn +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0xecee5249 isdn_ppp_unregister_compressor +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0xfa06820f isdn_register_divert +EXPORT_SYMBOL drivers/isdn/i4l/isdnhdlc 0x3b71e4fc isdnhdlc_decode +EXPORT_SYMBOL drivers/isdn/i4l/isdnhdlc 0x59cc8a7e isdnhdlc_out_init +EXPORT_SYMBOL drivers/isdn/i4l/isdnhdlc 0x8ee38862 isdnhdlc_rcv_init +EXPORT_SYMBOL drivers/isdn/i4l/isdnhdlc 0xfd9d4c09 isdnhdlc_encode +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x056367d7 mISDN_unregister_device +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x06fcebef mISDN_FsmDelTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x151279f7 recv_Echannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x1cf196fb mISDN_FsmAddTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x1f29e3a5 get_next_bframe +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x2348cc3c mISDN_FsmFree +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x24224751 create_l1 +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x29fa5b43 mISDN_FsmRestartTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x3504c5cf bchannel_get_rxbuf +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x36ec1940 mISDN_FsmInitTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x37bf71c4 mISDNDevName4ch +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x418affbe queue_ch_frame +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x44413153 mISDN_clear_bchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x485d9e73 mISDN_freebchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x48e5dc40 recv_Bchannel_skb +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x4fd3aa3c get_next_dframe +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 0x6acf06cb dchannel_senddata +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x8a4e99fb mISDN_clock_update +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x8d337808 bchannel_senddata +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x9626e19c recv_Bchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xab09187b mISDN_ctrl_bchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xac3a606a mISDN_initbchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xc3401729 mISDN_register_clock +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xc4d2dc4d mISDN_initdchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xc5b2127d mISDN_register_device +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xd237c7f1 mISDN_freedchannel +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 0xe6776c8e mISDN_register_Bprotocol +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xe8f617eb mISDN_unregister_clock +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xf33a32b7 mISDN_unregister_Bprotocol +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xf9e7832f mISDN_FsmNew +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xfb1cbf43 recv_Dchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xfd546b9d recv_Dchannel_skb +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_dsp 0x01087af0 mISDN_dsp_element_unregister +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_dsp 0x60721da7 dsp_audio_law_to_s32 +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_dsp 0xa215f1b2 dsp_audio_s16_to_law +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_dsp 0xb98308d8 mISDN_dsp_element_register +EXPORT_SYMBOL drivers/mailbox/omap-mailbox 0x008aaf6e omap_mbox_save_ctx +EXPORT_SYMBOL drivers/mailbox/omap-mailbox 0x23533a9b omap_mbox_enable_irq +EXPORT_SYMBOL drivers/mailbox/omap-mailbox 0x4954975b omap_mbox_restore_ctx +EXPORT_SYMBOL drivers/mailbox/omap-mailbox 0x7cfadb45 omap_mbox_request_channel +EXPORT_SYMBOL drivers/mailbox/omap-mailbox 0xeba3dfb7 omap_mbox_disable_irq +EXPORT_SYMBOL drivers/md/bcache/bcache 0x10dc0d06 bch_bset_insert +EXPORT_SYMBOL drivers/md/bcache/bcache 0x21c7828c bch_btree_sort_partial +EXPORT_SYMBOL drivers/md/bcache/bcache 0x3361c614 bch_bset_sort_state_init +EXPORT_SYMBOL drivers/md/bcache/bcache 0x66d28e22 bch_btree_iter_init +EXPORT_SYMBOL drivers/md/bcache/bcache 0x6969b5d8 bch_bset_init_next +EXPORT_SYMBOL drivers/md/bcache/bcache 0x70352343 closure_sync +EXPORT_SYMBOL drivers/md/bcache/bcache 0x7b55ca4f bch_bset_fix_invalidated_key +EXPORT_SYMBOL drivers/md/bcache/bcache 0x87292d72 closure_wait +EXPORT_SYMBOL drivers/md/bcache/bcache 0x9e8b3cee bch_btree_keys_alloc +EXPORT_SYMBOL drivers/md/bcache/bcache 0xab2d2b84 bch_btree_insert_key +EXPORT_SYMBOL drivers/md/bcache/bcache 0xad29a6f5 bch_bset_build_written_tree +EXPORT_SYMBOL drivers/md/bcache/bcache 0xaec09a2b bch_bkey_try_merge +EXPORT_SYMBOL drivers/md/bcache/bcache 0xaf77343c bch_btree_keys_free +EXPORT_SYMBOL drivers/md/bcache/bcache 0xafb07281 closure_sub +EXPORT_SYMBOL drivers/md/bcache/bcache 0xc04554f7 bch_btree_iter_next +EXPORT_SYMBOL drivers/md/bcache/bcache 0xca580595 bch_btree_keys_init +EXPORT_SYMBOL drivers/md/bcache/bcache 0xd6316cdf closure_put +EXPORT_SYMBOL drivers/md/bcache/bcache 0xe3c17af1 __closure_wake_up +EXPORT_SYMBOL drivers/md/bcache/bcache 0xe47e0829 __bch_bset_search +EXPORT_SYMBOL drivers/md/bcache/bcache 0xf8fd4bac bch_btree_sort_lazy +EXPORT_SYMBOL drivers/md/dm-bufio 0x72f07bf4 dm_bufio_set_minimum_buffers +EXPORT_SYMBOL drivers/md/dm-bufio 0xa7978f56 dm_bufio_forget +EXPORT_SYMBOL drivers/md/dm-log 0xb28cb160 dm_dirty_log_destroy +EXPORT_SYMBOL drivers/md/dm-log 0xbfcb8777 dm_dirty_log_create +EXPORT_SYMBOL drivers/md/dm-log 0xe5de9383 dm_dirty_log_type_register +EXPORT_SYMBOL drivers/md/dm-log 0xe5f18cd7 dm_dirty_log_type_unregister +EXPORT_SYMBOL drivers/md/dm-snapshot 0x27d86d9e dm_exception_store_type_register +EXPORT_SYMBOL drivers/md/dm-snapshot 0x552f24c3 dm_exception_store_type_unregister +EXPORT_SYMBOL drivers/md/dm-snapshot 0xae89052b dm_exception_store_create +EXPORT_SYMBOL drivers/md/dm-snapshot 0xc0b6fb22 dm_exception_store_destroy +EXPORT_SYMBOL drivers/md/dm-snapshot 0xcbb71d46 dm_snap_cow +EXPORT_SYMBOL drivers/md/dm-snapshot 0xdf7f7184 dm_snap_origin +EXPORT_SYMBOL drivers/md/raid456 0xd8e80f44 raid5_set_cache_size +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x04c4dec6 flexcop_i2c_request +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x089765b2 flexcop_sram_set_dest +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x0c55e7be flexcop_pid_feed_control +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x14ea108f flexcop_eeprom_check_mac_addr +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x32915ebf flexcop_device_kmalloc +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x4736e4cf flexcop_device_exit +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x53edb205 flexcop_pass_dmx_data +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x5cfe54e4 flexcop_wan_set_speed +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xc4966dbd flexcop_pass_dmx_packets +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xe0bf6d6d flexcop_device_kfree +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xe1f318ea flexcop_sram_ctrl +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xeca5c944 flexcop_dump_reg +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xee62b9d8 flexcop_device_initialize +EXPORT_SYMBOL drivers/media/common/cx2341x 0x1ca0c084 cx2341x_log_status +EXPORT_SYMBOL drivers/media/common/cx2341x 0x244d09a9 cx2341x_handler_set_busy +EXPORT_SYMBOL drivers/media/common/cx2341x 0x2f25eee2 cx2341x_update +EXPORT_SYMBOL drivers/media/common/cx2341x 0x30cb4cd7 cx2341x_ext_ctrls +EXPORT_SYMBOL drivers/media/common/cx2341x 0x3db8be82 cx2341x_ctrl_query +EXPORT_SYMBOL drivers/media/common/cx2341x 0x436c0528 cx2341x_handler_setup +EXPORT_SYMBOL drivers/media/common/cx2341x 0x91d1b055 cx2341x_handler_set_50hz +EXPORT_SYMBOL drivers/media/common/cx2341x 0xc184ec1e cx2341x_ctrl_get_menu +EXPORT_SYMBOL drivers/media/common/cx2341x 0xcf76ce95 cx2341x_fill_defaults +EXPORT_SYMBOL drivers/media/common/cx2341x 0xcf8b77a4 cx2341x_mpeg_ctrls +EXPORT_SYMBOL drivers/media/common/cx2341x 0xed509fb0 cx2341x_handler_init +EXPORT_SYMBOL drivers/media/common/cypress_firmware 0xbb11bf07 cypress_load_firmware +EXPORT_SYMBOL drivers/media/common/tveeprom 0x7f77f439 tveeprom_hauppauge_analog +EXPORT_SYMBOL drivers/media/common/tveeprom 0x9c6c2963 tveeprom_read +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x07818f1f dvb_generic_open +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x1b937b8e dvb_generic_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x1ebfda6e dvb_dmx_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x1ee15781 dvb_ca_en50221_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x22db229d dvb_ca_en50221_camready_irq +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x3041b195 dvb_frontend_resume +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x344908d4 dvb_ringbuffer_free +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x3656cb10 dvb_ringbuffer_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x39d7c826 dvb_frontend_reinitialise +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x3ffe2940 dvb_dmx_swfilter_raw +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x41af3e69 dvb_dmx_swfilter_204 +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x43816534 dvb_unregister_adapter +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x4833754d dvb_register_frontend +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x487e0e24 dvb_ca_en50221_camchange_irq +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x489fac82 dvb_generic_ioctl +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x59930239 dvb_ca_en50221_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x627a7f5d dvb_dmx_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x629f9d31 dvb_ringbuffer_read_user +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x68f68ebb dvb_frontend_detach +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x72180695 dvb_ringbuffer_flush_spinlock_wakeup +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x74a5a698 dvb_filter_pes2ts_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x80e3832d dvb_filter_get_ac3info +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x8633f37b dvb_ringbuffer_flush +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x88fa871c dvb_net_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x8905b2c2 dvb_register_device +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x94f6b454 dvb_dmx_swfilter_packets +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x9850cb88 dvb_ringbuffer_write_user +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x9c19040b dvb_ringbuffer_write +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xabc6d11b dvb_net_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xac4ca1b0 intlog2 +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xaec37d0a dvb_dmxdev_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xb0539863 dvb_frontend_suspend +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xc78b1899 dvb_unregister_frontend +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xcb848b8d dvb_dmx_swfilter +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xce6ea133 dvb_ca_en50221_frda_irq +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xd397c23d dvb_unregister_device +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xd9d42e07 dvb_register_adapter +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xdb1a8bd4 dvb_ringbuffer_empty +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xdc094c39 dvb_ringbuffer_avail +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xe5ae8707 intlog10 +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xf48116c6 dvb_ringbuffer_read +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xf5d700d0 dvb_dmxdev_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xf821d629 dvb_frontend_sleep_until +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xf826deb0 dvb_filter_pes2ts +EXPORT_SYMBOL drivers/media/dvb-frontends/a8293 0xa96388b4 a8293_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/af9013 0xc42e5191 af9013_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/atbm8830 0xa37b201b atbm8830_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x6c6f3ebe au8522_analog_i2c_gate_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x8915ff5a au8522_i2c_gate_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x89c814a3 au8522_readreg +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x8e834b9f au8522_init +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x925fe6c6 au8522_get_state +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0xbd1a18c5 au8522_release_state +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0xc31486ca au8522_led_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0xdfc675d0 au8522_writereg +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0xf4cfe013 au8522_sleep +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_dig 0x6bb4a57b au8522_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/bcm3510 0x8c569808 bcm3510_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx22700 0x37ce3f87 cx22700_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx22702 0x15599336 cx22702_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24110 0x081bd8b5 cx24110_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24113 0x13f63c95 cx24113_agc_callback +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24113 0x2c387941 cx24113_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24116 0xcf00d332 cx24116_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24120 0x723a4601 cx24120_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24123 0x20d087fe cx24123_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24123 0xf2a52c0b cx24123_get_tuner_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/cxd2820r 0x61bdf939 cxd2820r_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0x1a279724 dib0070_set_rf_output +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0x6b0390b3 dib0070_ctrl_agc_filter +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0x882e2462 dib0070_get_rf_output +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0xc5ef7f31 dib0070_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0xec62f64e dib0070_wbd_offset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x08b68ec0 dib0090_set_switch +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x2505236b dib0090_get_current_gain +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x38854ba4 dib0090_fw_register +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x40031c00 dib0090_set_vga +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x57cfc8ec dib0090_get_tune_state +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x5c07adc2 dib0090_update_tuning_table_7090 +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x5ff503a5 dib0090_register +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x66440361 dib0090_set_dc_servo +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x6fef22df dib0090_update_rframp_7090 +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x78341911 dib0090_gain_control +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x81688378 dib0090_get_wbd_offset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xb1101eaa dib0090_pwm_gain_reset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xcfb7b75e dib0090_get_wbd_target +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xec899ca5 dib0090_dcc_freq +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xfd028a87 dib0090_set_tune_state +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mb 0x28b40a18 dib3000mb_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x3b07a740 dib3000mc_get_tuner_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x973a07b4 dib3000mc_i2c_enumeration +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0xa10674e8 dib3000mc_set_config +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0xa301614d dib3000mc_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0xafeb4b2f dib3000mc_pid_control +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0xaffe063e dib3000mc_pid_parse +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0x441419b9 dib7000m_pid_filter +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0x51f39b31 dib7000m_get_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0x57333ad2 dib7000m_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0x7a562b76 dib7000m_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0xc7abefdb dib7000p_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x2b1a6fc9 dib8000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0x76a67843 dibx000_i2c_set_speed +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0xad3ad91c systime +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0xb893d801 dibx000_get_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0xeae04f9f dibx000_reset_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0xf34c8e21 dibx000_init_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0xf9c52793 dibx000_exit_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/drx39xyj/drx39xyj 0xc7915017 drx39xxj_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/drxd 0x7f8613e3 drxd_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/drxk 0xe0e2befb drxk_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ds3000 0x7884e9fb ds3000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dvb-pll 0xac5d08a4 dvb_pll_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ec100 0xab5ec3d5 ec100_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/isl6405 0x833cb1ac isl6405_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/isl6421 0x06858b05 isl6421_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/isl6423 0x5d71dd61 isl6423_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/itd1000 0x8bc4cc63 itd1000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ix2505v 0xe9e9702f ix2505v_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/l64781 0xf21b0780 l64781_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lg2160 0xe2340f58 lg2160_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgdt3305 0xb1ca9385 lgdt3305_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgdt3306a 0x10c484ad lgdt3306a_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgdt330x 0xb4a2b4c4 lgdt330x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgs8gxx 0xc889c875 lgs8gxx_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lnbp21 0x12abc040 lnbp21_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lnbp21 0x5463bae4 lnbh24_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lnbp22 0x9dceed93 lnbp22_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/m88ds3103 0x361ebb5a m88ds3103_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/m88ds3103 0xad0efccb m88ds3103_get_agc_pwm +EXPORT_SYMBOL drivers/media/dvb-frontends/m88rs2000 0xaf07c7b0 m88rs2000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mb86a16 0xe51a95b1 mb86a16_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mb86a20s 0x849117a9 mb86a20s_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mt312 0x9b7f2516 mt312_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mt352 0x18a942e2 mt352_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/nxt200x 0x91d66624 nxt200x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/nxt6000 0xdbf519c3 nxt6000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/or51132 0x3fcd965b or51132_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/or51211 0x9bdafd3b or51211_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1409 0x083a0728 s5h1409_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1411 0x67ae5b68 s5h1411_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1420 0xe9e6dca7 s5h1420_get_tuner_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1420 0xeb42965b s5h1420_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s921 0x47eac65d s921_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/si2165 0xd8ce6f62 si2165_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/si21xx 0xf9492fb7 si21xx_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/sp8870 0x8ddf5b52 sp8870_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/sp887x 0xacf4da33 sp887x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stb0899 0xa3cdd242 stb0899_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stb6000 0x32a9f325 stb6000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stb6100 0x0b65e98f stb6100_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0288 0xf32b1fb2 stv0288_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0297 0x6fbeb632 stv0297_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0299 0xb4972ae3 stv0299_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0367 0x38b53e07 stv0367ter_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0367 0xee573be0 stv0367cab_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0900 0x6a657c66 stv0900_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv090x 0x1812ee45 stv090x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv6110 0x6296ae54 stv6110_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv6110x 0x1e9b51a6 stv6110x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10021 0xe4a44e83 tda10021_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10023 0x61227ed0 tda10023_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10048 0x2297a17c tda10048_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda1004x 0xcfb3fdd7 tda10046_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda1004x 0xdd4d6e9d tda10045_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10071 0xaa708f78 tda10071_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10086 0x2a73c78d tda10086_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda665x 0xdf3c5657 tda665x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda8083 0xeecd3fd0 tda8083_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda8261 0xe1e60213 tda8261_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda826x 0xc8f44b7b tda826x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ts2020 0x78ac0789 ts2020_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tua6100 0x7acfeff0 tua6100_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ves1820 0x25fd61cd ves1820_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ves1x93 0x232ba5d8 ves1x93_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/zl10036 0xf745dc93 zl10036_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/zl10039 0x66276dba zl10039_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/zl10353 0x4e9e79f6 zl10353_attach +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x16d34093 flexcop_dma_allocate +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x33dd6e86 flexcop_dma_config_timer +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x340d85c4 flexcop_dma_control_timer_irq +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x85af5501 flexcop_dma_control_size_irq +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x901941e9 flexcop_dma_config +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0xc07ee1b1 flexcop_dma_free +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0xf8d9a6a0 flexcop_dma_xfer_control +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0x1fa98a76 bt878_start +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0x3b012036 bt878_device_control +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0x7b91c877 bt878 +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0xcfedb2f0 bt878_stop +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 0x1756342b bttv_sub_register +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0x8ecf4acc bttv_write_gpio +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0xb6bb9245 bttv_sub_unregister +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0xbcf2d2fb bttv_read_gpio +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0xf84b3058 bttv_get_pcidev +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x205b4b54 dst_wait_dst_ready +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x24547c80 rdc_reset_state +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x30333d1d dst_pio_disable +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x49fae929 dst_error_bailout +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x73abdf66 dst_error_recovery +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x7a7bd0cb dst_attach +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x9f95fef0 dst_comm_init +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xc4f1ac3d write_dst +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xe15d8744 read_dst +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xe94b8c9c dst_check_sum +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst_ca 0xff85ccff dst_ca_attach +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x00126a0c cx18_ext_init +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x2cdea06d cx18_reset_ir_gpio +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x4f7de08c cx18_start_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x903eb58f cx18_claim_stream +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0xcad503bb cx18_release_stream +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0xd750be7c cx18_stop_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/cx23885/altera-ci 0x18185471 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 0x12806c92 cx25821_dev_get +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x3c08aafb cx25821_dev_unregister +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x538ac724 cx25821_riscmem_alloc +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x784853c3 cx25821_print_irqbits +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x8c94875b cx25821_sram_channel_dump_audio +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xb14d5137 cx25821_risc_databuffer_audio +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xba46313d cx25821_sram_channel_setup_audio +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xbdf1ba9a cx25821_set_gpiopin_direction +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xc5d38741 cx25821_sram_channels +EXPORT_SYMBOL drivers/media/pci/cx88/cx88-vp3054-i2c 0x6fd52a3d vp3054_i2c_probe +EXPORT_SYMBOL drivers/media/pci/cx88/cx88-vp3054-i2c 0xade035ea vp3054_i2c_remove +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0xa1de9c36 cx88_video_mux +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0xb87f70e5 cx88_set_freq +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0xcc01612b cx88_querycap +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0xf2994402 cx88_enum_input +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x1a1ee558 cx8802_start_dma +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x1dc7ff76 cx8802_get_driver +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x2d4a9414 cx8802_unregister_driver +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x9a1336a5 cx8802_buf_queue +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0xb30ff65c cx8802_buf_prepare +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0xd6749028 cx8802_cancel_buffers +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0xfcc6bd0d cx8802_register_driver +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x0110a7a4 cx88_shutdown +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x151e1c11 cx88_ir_stop +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x17bb1aa8 cx88_risc_buffer +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x2203dc7e cx88_set_tvnorm +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x258a7f94 cx88_reset +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x4216fc84 cx88_sram_channels +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x52075e36 cx88_set_tvaudio +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x6141c8c5 cx88_tuner_callback +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x66eb8583 cx88_ir_start +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x682a1cc3 cx88_set_scale +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x6e8e9eba cx88_sram_channel_setup +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x74a0acc2 cx88_risc_databuffer +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x7642ed3c cx88_print_irqbits +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x79e95a7d cx88_wakeup +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x7d65f1d8 cx88_newstation +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x815f3124 cx88_core_put +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x8c3bd709 cx88_core_irq +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x8f6789f4 cx88_core_get +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x904b8696 cx88_audio_thread +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x9c4f2eb1 cx88_get_stereo +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xba908789 cx88_sram_channel_dump +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xd90d7b0e cx88_vdev_init +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xe389e734 cx88_dsp_detect_stereo_sap +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xf31f6bb8 cx88_set_stereo +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x0b98f3cc ivtv_ext_init +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x14f67530 ivtv_debug +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x3b03db76 ivtv_stop_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x54dd3e1c ivtv_firmware_check +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x5b0eaeee ivtv_start_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x5f0ee472 ivtv_udma_alloc +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x7768bbee ivtv_udma_setup +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x970d9cb7 ivtv_claim_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xa8b339c2 ivtv_vapi +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xac0cb471 ivtv_set_irq_mask +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xb7da7715 ivtv_udma_prepare +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xbddcdfe5 ivtv_init_on_first_open +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xcc680767 ivtv_api +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xe8442f47 ivtv_clear_irq_mask +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xee1b9183 ivtv_release_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xef4c689f ivtv_vapi_result +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xf728e6e5 ivtv_reset_ir_gpio +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xfa212e97 ivtv_udma_unmap +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x047cc3da saa7134_set_gpio +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x04e83446 saa7134_tuner_callback +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x10b405d0 saa7134_dmasound_exit +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x1211df5d saa7134_devlist +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x152b64c0 saa7134_ts_register +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x26112e91 saa7134_pgtable_build +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x405c8265 saa7134_set_dmabits +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x727ad47f saa_dsp_writel +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x75c66969 saa7134_boards +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xadf13e5c saa7134_devlist_lock +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xd26409bf saa7134_dmasound_init +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xeb700255 saa7134_tvaudio_setmute +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xf2cde6c2 saa7134_pgtable_alloc +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xfc2333d1 saa7134_ts_unregister +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xff8c46fe saa7134_pgtable_free +EXPORT_SYMBOL drivers/media/pci/ttpci/ttpci-eeprom 0x6d9bf75e ttpci_eeprom_parse_mac +EXPORT_SYMBOL drivers/media/pci/ttpci/ttpci-eeprom 0xc3e4c127 ttpci_eeprom_decode_mac +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x1af7321c soc_camera_power_on +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x33bb0b3f soc_camera_xlate_by_fourcc +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x825d459b soc_camera_power_init +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x8df82274 soc_camera_host_unregister +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0xb2d2a444 soc_camera_power_off +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0xb92a18c6 soc_camera_host_register +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0xc5bc1a9a soc_camera_apply_board_flags +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0x25c52d97 soc_mbus_samples_per_pixel +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0x2863728e soc_mbus_image_size +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0x29f5a98b soc_mbus_get_fmtdesc +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0x5f3e3558 soc_mbus_bytes_per_line +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0xc8b28da5 soc_mbus_config_compatible +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0xdc5dafe2 soc_mbus_find_fmtdesc +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_scale_crop 0x54bcc8b1 soc_camera_calc_client_output +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_scale_crop 0x8c8b1f33 soc_camera_client_g_rect +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_scale_crop 0xd2cd73da soc_camera_client_s_crop +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_scale_crop 0xfd3e53be soc_camera_client_scale +EXPORT_SYMBOL drivers/media/radio/tea575x 0x143b4688 snd_tea575x_exit +EXPORT_SYMBOL drivers/media/radio/tea575x 0x2bfadb91 snd_tea575x_enum_freq_bands +EXPORT_SYMBOL drivers/media/radio/tea575x 0x45d84b66 snd_tea575x_hw_init +EXPORT_SYMBOL drivers/media/radio/tea575x 0x77a8877e snd_tea575x_set_freq +EXPORT_SYMBOL drivers/media/radio/tea575x 0x7ea11e08 snd_tea575x_init +EXPORT_SYMBOL drivers/media/radio/tea575x 0xee2fffa9 snd_tea575x_s_hw_freq_seek +EXPORT_SYMBOL drivers/media/radio/tea575x 0xf8d37d19 snd_tea575x_g_tuner +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x04dca738 lirc_unregister_driver +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x0d7d9657 lirc_dev_fop_read +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x5423db88 lirc_dev_fop_open +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x61e0a032 lirc_dev_fop_poll +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x89469e82 lirc_dev_fop_ioctl +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x8a61d82a lirc_register_driver +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0xaf326a34 lirc_dev_fop_write +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0xd9b7088c lirc_get_pdata +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0xe295b358 lirc_dev_fop_close +EXPORT_SYMBOL drivers/media/rc/rc-core 0xa3ee52cd ir_raw_handler_unregister +EXPORT_SYMBOL drivers/media/rc/rc-core 0xcd182e85 ir_raw_handler_register +EXPORT_SYMBOL drivers/media/tuners/fc0011 0xda83be66 fc0011_attach +EXPORT_SYMBOL drivers/media/tuners/fc0012 0x4396747e fc0012_attach +EXPORT_SYMBOL drivers/media/tuners/fc0013 0x08316489 fc0013_attach +EXPORT_SYMBOL drivers/media/tuners/fc0013 0x55ce0c21 fc0013_rc_cal_add +EXPORT_SYMBOL drivers/media/tuners/fc0013 0xab79463e fc0013_rc_cal_reset +EXPORT_SYMBOL drivers/media/tuners/max2165 0x0a14dbaf max2165_attach +EXPORT_SYMBOL drivers/media/tuners/mc44s803 0x419ea427 mc44s803_attach +EXPORT_SYMBOL drivers/media/tuners/mt2060 0x0ea4f01e mt2060_attach +EXPORT_SYMBOL drivers/media/tuners/mt2131 0x8d6cf6ea mt2131_attach +EXPORT_SYMBOL drivers/media/tuners/mt2266 0xa9acbe86 mt2266_attach +EXPORT_SYMBOL drivers/media/tuners/mxl5005s 0x6cc99c8c mxl5005s_attach +EXPORT_SYMBOL drivers/media/tuners/qt1010 0x1c11e9ae qt1010_attach +EXPORT_SYMBOL drivers/media/tuners/tda18218 0x963e5776 tda18218_attach +EXPORT_SYMBOL drivers/media/tuners/tuner-types 0x0cb4b189 tuners +EXPORT_SYMBOL drivers/media/tuners/tuner-types 0xc2821775 tuner_count +EXPORT_SYMBOL drivers/media/tuners/tuner-xc2028 0x4c4658e2 xc2028_attach +EXPORT_SYMBOL drivers/media/tuners/xc4000 0x844a8cdd xc4000_attach +EXPORT_SYMBOL drivers/media/tuners/xc5000 0xfa439d57 xc5000_attach +EXPORT_SYMBOL drivers/media/usb/cx231xx/cx231xx 0x20a21d67 cx231xx_unregister_extension +EXPORT_SYMBOL drivers/media/usb/cx231xx/cx231xx 0xd5144d8a cx231xx_register_extension +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x84d6ca7a dvb_usbv2_resume +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x94ce0c27 dvb_usbv2_generic_write_locked +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x97d396e7 dvb_usbv2_probe +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0xa60ab41e dvb_usbv2_generic_rw_locked +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0xc2b84f6c dvb_usbv2_generic_write +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0xc62690e9 dvb_usbv2_reset_resume +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0xd6abafc9 dvb_usbv2_suspend +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0xe889344e dvb_usbv2_disconnect +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0xec4a1b84 dvb_usbv2_generic_rw +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x040df3bd dvb_usb_generic_write +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x279f0501 dvb_usb_get_hexline +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x6247b2a2 dvb_usb_device_init +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x75cd04e9 dvb_usb_nec_rc_key_to_event +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0xa3ff1a9f dvb_usb_device_exit +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0xd01b5d12 dvb_usb_generic_rw +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0xea252dc2 usb_cypress_load_firmware +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-af9005-remote 0x09c5b18a af9005_rc_decode +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-af9005-remote 0x13e247e0 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 0x02cbea5d dibusb_rc_query +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x0c6494cc dibusb2_0_streaming_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x0c8c0460 dibusb2_0_power_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x31074fd1 dibusb_i2c_algo +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x401c28aa dibusb_streaming_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x4a584f32 dibusb_read_eeprom_byte +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x729560da dibusb_power_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x9cdfcd96 dibusb_dib3000mc_tuner_attach +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xb2745d92 dibusb_dib3000mc_frontend_attach +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xb47559e0 rc_map_dibusb_table +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xbfca4e23 dibusb_pid_filter +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xc326c615 dibusb_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/usb/em28xx/em28xx 0x318cdef0 em28xx_unregister_extension +EXPORT_SYMBOL drivers/media/usb/em28xx/em28xx 0x80835582 em28xx_register_extension +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x217eb15e go7007_alloc +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x31c80ca4 go7007_register_encoder +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x35f555f2 go7007_snd_init +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x36840add go7007_snd_remove +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x3ff92d98 go7007_read_addr +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x49d7742d go7007_update_board +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x71260f4f go7007_boot_encoder +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x893d2d6c go7007_parse_video_stream +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0xb2b6927e go7007_read_interrupt +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x3df78cdd gspca_dev_probe +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x4247684e gspca_resume +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x5242db2d gspca_frame_add +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x6c62a1ad gspca_expo_autogain +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x7be36dc0 gspca_suspend +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x7f96ddcb gspca_disconnect +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x9670af2c gspca_debug +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0xa6a86bc6 gspca_coarse_grained_expo_autogain +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0xc6b6b965 gspca_dev_probe2 +EXPORT_SYMBOL drivers/media/usb/tm6000/tm6000 0x1421ae25 tm6000_unregister_extension +EXPORT_SYMBOL drivers/media/usb/tm6000/tm6000 0x9f9e1d5e tm6000_init_digital_mode +EXPORT_SYMBOL drivers/media/usb/tm6000/tm6000 0xb0dd96fb tm6000_register_extension +EXPORT_SYMBOL drivers/media/usb/ttusb-dec/ttusbdecfe 0x036d1a5c ttusbdecfe_dvbt_attach +EXPORT_SYMBOL drivers/media/usb/ttusb-dec/ttusbdecfe 0x28aa1b96 ttusbdecfe_dvbs_attach +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-common 0xabe27502 v4l2_ctrl_query_fill +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-mem2mem 0x19993501 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 0x7e92a6c9 v4l2_m2m_job_finish +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-mem2mem 0xab231a38 v4l2_m2m_mmap +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0x01b902c7 videobuf_dvb_dealloc_frontends +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0x4cfbed01 videobuf_dvb_unregister_bus +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0x6a555aca videobuf_dvb_get_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0x6e0abded videobuf_dvb_register_bus +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0xab7bd6dd videobuf_dvb_alloc_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0xb90b1af4 videobuf_dvb_find_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-core 0xefca46c8 vb2_querybuf +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0x0b1c0749 vb2_dvb_register_bus +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0x1531a054 vb2_dvb_find_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0x51a58462 vb2_dvb_alloc_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0x853f9304 vb2_dvb_get_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0xab6e4ac3 vb2_dvb_dealloc_frontends +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0xe0993981 vb2_dvb_unregister_bus +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x0614dd5a v4l2_video_std_frame_period +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x06661b9a v4l2_ctrl_radio_filter +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x0af880dd __video_register_device +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x123959a1 v4l2_type_names +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x15456e42 v4l2_subdev_try_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x16244fe5 v4l2_prio_check +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x173dc9ac v4l2_ctrl_activate +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x196b7093 v4l2_clk_unregister +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x1b5c0864 v4l2_ctrl_merge +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x221f9634 v4l2_ctrl_g_ctrl_int64 +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x2342f1ae v4l2_prio_open +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x2519f223 v4l2_ctrl_poll +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x25e31f0e v4l2_ctrl_new_std +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x2680f77d v4l2_ctrl_grab +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x2b65c954 v4l2_async_notifier_unregister +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x2f04e331 v4l2_ctrl_subdev_log_status +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x2f1aca6a video_device_release +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x2f9b4766 v4l2_ctrl_handler_free +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x2ffd50c2 v4l2_s_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x300f55f0 v4l2_subdev_g_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x328e4ed5 v4l2_ctrl_handler_log_status +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x36847d11 v4l2_ctrl_get_int_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x3adbd595 v4l2_field_names +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x3b95e27e v4l2_ctrl_new_std_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x3bdd0f94 v4l2_prio_change +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x3c6d27e5 v4l2_ctrl_subdev_subscribe_event +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x451fa33f video_device_release_empty +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x45a44c24 v4l2_ctrl_fill +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x45baea2b v4l2_of_parse_link +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x495426ee v4l2_ctrl_get_name +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x4b77c88d v4l2_ctrl_replace +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x4c7fe36f v4l2_ctrl_g_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x4f1d2226 v4l2_subdev_s_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x4f1f6333 v4l2_clk_enable +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x57508fca __v4l2_ctrl_s_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x5ad5a05c v4l2_ctrl_add_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x609deff3 v4l2_of_alloc_parse_endpoint +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x638c5afa v4l2_clk_disable +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x649c11c3 v4l2_ctrl_log_status +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x65c16c88 v4l2_subdev_s_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x676ea5cf v4l2_s_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x69f79a1d v4l2_of_parse_endpoint +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x6feb2c47 v4l2_clk_get +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x70e5c427 v4l2_clk_get_rate +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x72db97be v4l2_ctrl_sub_ev_ops +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x77f00ab3 v4l2_of_put_link +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x7a3cd015 v4l2_ctrl_get_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x7c59694b video_unregister_device +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x8106095a v4l2_prio_max +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x81adbdec v4l2_async_unregister_subdev +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x84451719 v4l2_ctrl_find +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x848ee3ac video_device_alloc +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x874dec2a v4l2_queryctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x8c59c3bf v4l2_ctrl_notify +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x91dcaf31 v4l2_clk_unregister_fixed +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x988f95ed __v4l2_ctrl_s_ctrl_int64 +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x98c831fb __v4l2_ctrl_modify_range +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x9e171d03 v4l2_try_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x9e7b7571 v4l2_subdev_init +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x9e8b9dee v4l2_subdev_querymenu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xa0be62f6 v4l2_ctrl_new_std_menu_items +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xa409674d v4l2_ctrl_new_custom +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xa7593db8 v4l2_of_free_endpoint +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xab0a7db5 v4l2_ctrl_handler_setup +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb66f8321 v4l2_async_notifier_register +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb77b0159 v4l2_prio_init +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb9d31799 v4l2_g_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xbc5671dc v4l_printk_ioctl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xbe9a0f19 v4l2_subdev_queryctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xbf29a2b8 v4l2_clk_set_rate +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xc59ca687 v4l2_clk_register +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xc740034e v4l2_ctrl_new_int_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xcadf37ca v4l2_query_ext_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xcc66fa5b v4l2_subdev_g_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xcda04a5b v4l2_prio_close +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xd027eece v4l2_ctrl_subscribe_event +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xd2a702b6 v4l2_g_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xd5f9f848 v4l2_querymenu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xd6c43dac video_usercopy +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xd7b1b9da __v4l2_clk_register_fixed +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe2b92059 v4l2_video_std_construct +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe354dcc2 v4l2_async_register_subdev +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe5c8db4a __v4l2_ctrl_s_ctrl_string +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe78e7c3d v4l2_ctrl_auto_cluster +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe908ae40 v4l2_ctrl_add_handler +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xedb50fc4 video_ioctl2 +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf2c1df9e video_devdata +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf3251e7b v4l2_norm_to_name +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf894d36d v4l2_clk_put +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xfd0a20fd v4l2_ctrl_cluster +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xfe80cd43 v4l2_ctrl_handler_init_class +EXPORT_SYMBOL drivers/memstick/core/memstick 0x33012e4e memstick_free_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x42931685 memstick_suspend_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x5d820a02 memstick_init_req_sg +EXPORT_SYMBOL drivers/memstick/core/memstick 0x5f3054a1 memstick_remove_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x61544195 memstick_set_rw_addr +EXPORT_SYMBOL drivers/memstick/core/memstick 0x63c79893 memstick_alloc_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x6f405b9d memstick_next_req +EXPORT_SYMBOL drivers/memstick/core/memstick 0x8f733d17 memstick_unregister_driver +EXPORT_SYMBOL drivers/memstick/core/memstick 0x943a3645 memstick_new_req +EXPORT_SYMBOL drivers/memstick/core/memstick 0x9e913a07 memstick_resume_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0xa5987a36 memstick_init_req +EXPORT_SYMBOL drivers/memstick/core/memstick 0xd4aae4fe memstick_register_driver +EXPORT_SYMBOL drivers/memstick/core/memstick 0xd5baa547 memstick_detect_change +EXPORT_SYMBOL drivers/memstick/core/memstick 0xf9f74a3b memstick_add_host +EXPORT_SYMBOL drivers/memstick/host/r592 0x52f1b23b memstick_debug_get_tpc_name +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x054fb86e mpt_raid_phys_disk_pg0 +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x23ca25ef mpt_raid_phys_disk_pg1 +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x265e9d9f mpt_halt_firmware +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x32e62591 mpt_suspend +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x3913fe76 mpt_free_msg_frame +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x4526289b mpt_event_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x462016ca mpt_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x4883529c mpt_config +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x502108d0 mpt_fwfault_debug +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x5f4f26b1 mpt_detach +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x600f495f mpt_device_driver_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x602ce4b4 mpt_verify_adapter +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x65308c77 mpt_put_msg_frame +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x77148f05 mpt_print_ioc_summary +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x7c86dbfe mpt_reset_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x7cf67d66 mpt_findImVolumes +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x88bb9dbc mpt_set_taskmgmt_in_progress_flag +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x9a53f10c mpt_alloc_fw_memory +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x9e41c352 mpt_send_handshake_request +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xa469c96e mpt_raid_phys_disk_get_num_paths +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xa6e1045d mpt_GetIocState +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xa77c2b50 mpt_clear_taskmgmt_in_progress_flag +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xa99cfa91 mpt_event_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xb3d9259a mpt_put_msg_frame_hi_pri +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xb5e57ad5 mpt_resume +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xbac16636 mpt_free_fw_memory +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xc0e69f82 mpt_device_driver_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xc47c22e8 mpt_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xc4eeecdf mpt_Soft_Hard_ResetHandler +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xcb1d4bbb mptbase_sas_persist_operation +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xccfdd71e mpt_attach +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xd9a92a75 mpt_reset_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xdd805159 ioc_list +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xebb073c2 mpt_HardResetHandler +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xf85d5469 mpt_get_msg_frame +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x019775f9 mptscsih_shutdown +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x1489cd3f mptscsih_remove +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x18cb163c mptscsih_scandv_complete +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x42c5df8c mptscsih_io_done +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x4b4a8557 mptscsih_suspend +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x5567a3f4 mptscsih_taskmgmt_response_code +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x579c38d5 mptscsih_qcmd +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x5a9fe389 mptscsih_slave_destroy +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x5fcf579c mptscsih_ioc_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x68eedcb1 mptscsih_show_info +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x6a51d8b9 mptscsih_IssueTaskMgmt +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x6be47557 mptscsih_event_process +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x7630ab52 mptscsih_host_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x7db919df mptscsih_slave_configure +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x8146be14 mptscsih_get_scsi_lookup +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x893c344d mptscsih_resume +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x89543956 mptscsih_is_phys_disk +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xa36d4cfd mptscsih_bus_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xa998882d mptscsih_change_queue_depth +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xaacc61ec mptscsih_bios_param +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xae42e97d mptscsih_flush_running_cmds +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xaebe5127 mptscsih_abort +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xb0216aa5 mptscsih_host_attrs +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xc87932c3 mptscsih_info +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xd0eb1c6a mptscsih_dev_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xe1ec17e4 mptscsih_raid_id_to_num +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xeeeb1109 mptscsih_taskmgmt_complete +EXPORT_SYMBOL drivers/mfd/cros_ec 0x1026bbb6 cros_ec_register +EXPORT_SYMBOL drivers/mfd/cros_ec 0x4ba8e02a cros_ec_resume +EXPORT_SYMBOL drivers/mfd/cros_ec 0x6b0aa2cc cros_ec_suspend +EXPORT_SYMBOL drivers/mfd/cros_ec 0xa627284f cros_ec_remove +EXPORT_SYMBOL drivers/mfd/dln2 0x980b4c8a dln2_transfer +EXPORT_SYMBOL drivers/mfd/dln2 0xd80459f0 dln2_unregister_event_cb +EXPORT_SYMBOL drivers/mfd/dln2 0xf8b08fe8 dln2_register_event_cb +EXPORT_SYMBOL drivers/mfd/htc-pasic3 0x42b92b8e pasic3_read_register +EXPORT_SYMBOL drivers/mfd/htc-pasic3 0xe38b56d0 pasic3_write_register +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x01e7c5d5 mc13xxx_irq_mask +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x1cec2814 mc13xxx_lock +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x3a0b6a7a mc13xxx_irq_status +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x49a12ed1 mc13xxx_irq_unmask +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x838f7909 mc13xxx_reg_write +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x84aacb9f mc13xxx_get_flags +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xa7785409 mc13xxx_reg_read +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xb18d6ba8 mc13xxx_unlock +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xb201d693 mc13xxx_irq_request +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xc4fdaf69 mc13xxx_reg_rmw +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xd24d2de7 mc13xxx_irq_free +EXPORT_SYMBOL drivers/mfd/qcom_rpm 0xd042c9be qcom_rpm_write +EXPORT_SYMBOL drivers/mfd/tps6105x 0x36d5efff tps6105x_mask_and_set +EXPORT_SYMBOL drivers/mfd/tps6105x 0xbf25f556 tps6105x_get +EXPORT_SYMBOL drivers/mfd/tps6105x 0xd51a9659 tps6105x_set +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-irq 0x313e9d03 wm8994_irq_exit +EXPORT_SYMBOL drivers/mfd/wm8994-irq 0x7c9dc0ee wm8994_irq_init +EXPORT_SYMBOL drivers/mfd/wm8994-regmap 0x323f1704 wm8994_base_regmap_config +EXPORT_SYMBOL drivers/mfd/wm8994-regmap 0x48e8af74 wm8958_regmap_config +EXPORT_SYMBOL drivers/mfd/wm8994-regmap 0x7ad214ed wm8994_regmap_config +EXPORT_SYMBOL drivers/mfd/wm8994-regmap 0xd78aad59 wm1811_regmap_config +EXPORT_SYMBOL drivers/misc/ad525x_dpot 0x989202fa ad_dpot_probe +EXPORT_SYMBOL drivers/misc/ad525x_dpot 0xff48fb99 ad_dpot_remove +EXPORT_SYMBOL drivers/misc/altera-stapl/altera-stapl 0x8a05ed90 altera_init +EXPORT_SYMBOL drivers/misc/c2port/core 0x1ee08e82 c2port_device_register +EXPORT_SYMBOL drivers/misc/c2port/core 0x31ad6408 c2port_device_unregister +EXPORT_SYMBOL drivers/misc/ioc4 0x4bc8d76e ioc4_unregister_submodule +EXPORT_SYMBOL drivers/misc/ioc4 0x99bc515f ioc4_register_submodule +EXPORT_SYMBOL drivers/misc/tifm_core 0x00a17669 tifm_register_driver +EXPORT_SYMBOL drivers/misc/tifm_core 0x2220c5d0 tifm_add_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0x39f86aa1 tifm_queue_work +EXPORT_SYMBOL drivers/misc/tifm_core 0x41263fea tifm_unmap_sg +EXPORT_SYMBOL drivers/misc/tifm_core 0x7ae3b3ac tifm_alloc_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0x7e003f3c tifm_eject +EXPORT_SYMBOL drivers/misc/tifm_core 0x8adec0d1 tifm_remove_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0x94b4583d tifm_unregister_driver +EXPORT_SYMBOL drivers/misc/tifm_core 0x9ea3bf3f tifm_free_device +EXPORT_SYMBOL drivers/misc/tifm_core 0xc0dad341 tifm_alloc_device +EXPORT_SYMBOL drivers/misc/tifm_core 0xc4637187 tifm_has_ms_pif +EXPORT_SYMBOL drivers/misc/tifm_core 0xdb7de9b7 tifm_map_sg +EXPORT_SYMBOL drivers/misc/tifm_core 0xfbdd5691 tifm_free_adapter +EXPORT_SYMBOL drivers/mmc/host/dw_mmc 0x2678edec dw_mci_remove +EXPORT_SYMBOL drivers/mmc/host/dw_mmc 0x27293d4b dw_mci_suspend +EXPORT_SYMBOL drivers/mmc/host/dw_mmc 0x9e7bf5aa dw_mci_resume +EXPORT_SYMBOL drivers/mmc/host/dw_mmc 0xe49c7f5e dw_mci_probe +EXPORT_SYMBOL drivers/mmc/host/tmio_mmc_core 0x10cdd3b7 tmio_mmc_host_runtime_resume +EXPORT_SYMBOL drivers/mmc/host/tmio_mmc_core 0x378f2335 tmio_mmc_irq +EXPORT_SYMBOL drivers/mmc/host/tmio_mmc_core 0x522405ed tmio_mmc_host_free +EXPORT_SYMBOL drivers/mmc/host/tmio_mmc_core 0x6d3deee9 tmio_mmc_sdcard_irq +EXPORT_SYMBOL drivers/mmc/host/tmio_mmc_core 0x7a6fd700 tmio_mmc_sdio_irq +EXPORT_SYMBOL drivers/mmc/host/tmio_mmc_core 0x88701724 tmio_mmc_host_runtime_suspend +EXPORT_SYMBOL drivers/mmc/host/tmio_mmc_core 0x93cc8a89 tmio_mmc_host_probe +EXPORT_SYMBOL drivers/mmc/host/tmio_mmc_core 0xbbb42215 tmio_mmc_host_remove +EXPORT_SYMBOL drivers/mmc/host/tmio_mmc_core 0xf02062dd tmio_mmc_card_detect_irq +EXPORT_SYMBOL drivers/mmc/host/tmio_mmc_core 0xf061194a tmio_mmc_host_alloc +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x5f602031 cfi_merge_status +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0xaa347b89 cfi_build_cmd_addr +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0xafacfab4 cfi_read_pri +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0xc442194c cfi_varsize_frob +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0xcbdbf8e5 cfi_fixup +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0xcf569cb0 cfi_build_cmd +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0xfc13df9b cfi_send_gen_cmd +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0xff9fa623 cfi_udelay +EXPORT_SYMBOL drivers/mtd/chips/gen_probe 0x91b1eb0a mtd_do_chip_probe +EXPORT_SYMBOL drivers/mtd/lpddr/lpddr_cmds 0xa6dcb5e2 lpddr_cmdset +EXPORT_SYMBOL drivers/mtd/nand/denali 0x216e805d denali_remove +EXPORT_SYMBOL drivers/mtd/nand/denali 0xe7e22c0e denali_init +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0x4995f07a onenand_scan_bbt +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0x843c20cb onenand_default_bbt +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0x94d88a27 flexonenand_region +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0xb6f4ee7b onenand_addr +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x11cfbd03 arcnet_timeout +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x20ea41d9 alloc_arcdev +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x6534792a arcnet_debug +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x7806b1cd arc_bcast_proto +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x917cf032 arc_proto_default +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xbf5dc95e arc_raw_proto +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xc329da90 arc_proto_map +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xdc21a1ef arcnet_close +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xe4cd8df1 arcnet_unregister_proto +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xecb730b0 arcnet_interrupt +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xedc53c71 arcnet_send_packet +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xf352c13c arcnet_open +EXPORT_SYMBOL drivers/net/arcnet/com20020 0x65df64ef com20020_check +EXPORT_SYMBOL drivers/net/arcnet/com20020 0x6ed90df8 com20020_found +EXPORT_SYMBOL drivers/net/arcnet/com20020 0xf485f12d com20020_netdev_ops +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x10d7b126 ei_poll +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x119721ac ei_interrupt +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x2d7b4b72 ei_netdev_ops +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x34e168b2 ei_tx_timeout +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x35ee1617 ei_get_stats +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x659f7531 ei_set_multicast_list +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xcce4e4d8 NS8390_init +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xde3e4c18 ei_open +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xf46fa058 __alloc_ei_netdev +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xf67ce9be ei_close +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xfd29105a ei_start_xmit +EXPORT_SYMBOL drivers/net/ethernet/broadcom/bnx2x/bnx2x 0x0730e262 bnx2x_schedule_sp_rtnl +EXPORT_SYMBOL drivers/net/ethernet/broadcom/cnic 0x1526714b cnic_register_driver +EXPORT_SYMBOL drivers/net/ethernet/broadcom/cnic 0x636af174 cnic_unregister_driver +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x0dbc9652 cxgb3_free_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x27638d3c dev2t3cdev +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x41b13767 t3_l2t_get +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x4ee65daa cxgb3_alloc_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x67ca73e3 cxgb3_unregister_client +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x6c69c615 cxgb3_register_client +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x71b3f058 t3_l2t_send_event +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x81dfb0d1 cxgb3_remove_tid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x944b03ca cxgb3_alloc_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x97ad3215 cxgb3_ofld_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x99efa972 cxgb3_free_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x9a301015 cxgb3_queue_tid_release +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xae74b976 t3_l2e_free +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xbabf6e55 cxgb3_insert_tid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xdbc56aa5 t3_l2t_send_slow +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xe65d0027 t3_register_cpl_handler +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x0c7b42e7 cxgb4_alloc_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x0d6314aa cxgb4_create_server_filter +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x0ebef28e cxgb4_register_uld +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x123785f7 cxgb4_bar2_sge_qregs +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x1f9562cc t4_cleanup_clip_tbl +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x24b53d2d cxgb4_port_viid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x297a74d5 cxgb4_update_root_dev_clip +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x31c9213c cxgb4_free_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x3538024b cxgb4_remove_server +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x3561f677 cxgb4_port_idx +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x3e36e238 cxgb4_ofld_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x3e6723e9 cxgb4_read_tpte +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x41d91ce7 cxgb4_read_sge_timestamp +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x43c8df52 cxgb4_l2t_get +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x50ee5c07 cxgb4_best_aligned_mtu +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x5a424bae cxgb4_dcb_enabled +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x662e3238 cxgb4_alloc_sftid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x69c6af72 cxgb4_flush_eq_cache +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x6f4eb25d cxgb4_create_server6 +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x7014a26e cxgb4_remove_tid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x72034cfd cxgb4_iscsi_init +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x72945bf6 cxgb4_sync_txq_pidx +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x7419d473 cxgb4_clip_release +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x7c82d951 cxgb4_l2t_release +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x8a95977f cxgb4_create_server +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xa0c21417 cxgb4_free_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xbbad4257 cxgb4_get_tcp_stats +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xc6c81def cxgb4_dbfifo_count +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xcdfe0ff2 cxgb4_alloc_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xd00e5a36 cxgb4_unregister_uld +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xd5e8093e cxgb4_select_ntuple +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xd69a0294 cxgb4_best_mtu +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xd8f8d061 cxgb4_l2t_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xe6e67564 cxgb4_remove_server_filter +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xea944251 cxgb4_clip_get +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xf095ed06 cxgb4_pktgl_to_skb +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xf3266a6e cxgb4_port_chan +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0x0b7459aa vnic_dev_register +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0x0e712340 vnic_dev_get_res +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0x421575af vnic_dev_get_pdev +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0x4f650da7 vnic_dev_get_res_count +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0x9196d804 vnic_dev_unregister +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0xebfd1dc4 enic_api_devcmd_proxy_by_index +EXPORT_SYMBOL drivers/net/ethernet/emulex/benet/be2net 0x46627c12 be_roce_unregister_driver +EXPORT_SYMBOL drivers/net/ethernet/emulex/benet/be2net 0xbab62e22 be_roce_mcc_cmd +EXPORT_SYMBOL drivers/net/ethernet/emulex/benet/be2net 0xee15df37 be_roce_register_driver +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x01386063 mlx4_SET_PORT_fcs_check +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x05d5edc9 mlx4_get_slave_node_guid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x12abd58d mlx4_gen_slaves_port_mgt_ev +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1fc193c1 mlx4_SET_PORT_qpn_calc +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x201217c8 mlx4_ALLOCATE_VPP_set +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2a21e655 mlx4_gen_guid_change_eqe +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x30a65c88 mlx4_SET_PORT_SCHEDULER +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x34a52489 set_and_calc_slave_port_state +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x36be48aa mlx4_get_slave_port_state +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x391c818f mlx4_ALLOCATE_VPP_get +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3956ccb3 mlx4_put_slave_node_guid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x42a9be72 mlx4_tunnel_steer_add +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5b0f07cd mlx4_assign_eq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x66686453 mlx4_get_slave_from_roce_gid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x70794c69 mlx4_gen_port_state_change_eqe +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7b12b159 mlx4_SET_PORT_BEACON +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7de6a701 mlx4_SET_VPORT_QOS_get +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8ac87af8 mlx4_release_eq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9a01195d mlx4_is_eq_shared +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9c423012 mlx4_get_parav_qkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa2b271d9 mlx4_get_slave_pkey_gid_tbl_len +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa6d61e63 mlx4_get_eqs_per_port +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xac1ff9bf mlx4_test_interrupts +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb8de4b93 mlx4_get_module_info +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbdb727d3 mlx4_is_slave_active +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbef84abd mlx4_SET_PORT_VXLAN +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbfca0961 mlx4_SET_MCAST_FLTR +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd236c2e5 mlx4_get_roce_gid_from_slave +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd2c35e4f mlx4_gen_pkey_eqe +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xdb7fd2fd mlx4_is_eq_vector_valid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe0726f36 mlx4_get_cpu_rmap +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe46a62b0 mlx4_sync_pkey_table +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe7606c75 mlx4_SET_VPORT_QOS_set +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xec2ba6b6 mlx4_eq_get_irq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xeffe23da mlx4_SET_PORT_PRIO2TC +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf90014fb mlx4_SET_PORT_general +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x0857aabd mlx5_get_flow_table_id +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x0eb7287e mlx5_del_flow_table_entry +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x2da87ddb mlx5_unmap_free_uar +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x395bcd45 mlx5_core_attach_mcg +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x3cde36af mlx5_query_nic_vport_mac_address +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x4caeaf5f mlx5_core_create_psv +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x4d397e22 mlx5_get_protocol_dev +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x4efae6d5 mlx5_core_create_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x50b28119 mlx5_cmd_init +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x5291d44c mlx5_core_dump_fill_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x573a9a73 mlx5_alloc_map_uar +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x5831b694 mlx5_cmd_exec +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x5e1190fd mlx5_core_detach_mcg +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x66763813 mlx5_cmd_exec_cb +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x75dee3f9 mlx5_unregister_interface +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x7e8e1294 mlx5_core_get_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x84c66d2d mlx5_core_destroy_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x88be614f mlx5_core_query_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x8b158549 mlx5_core_query_vendor_id +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x8cb50b11 mlx5_cmd_comp_handler +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x91ed4da7 mlx5_core_arm_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x9f8c9a1e mlx5_core_query_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa65e2503 mlx5_core_dealloc_pd +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa8095d7f mlx5_core_destroy_psv +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xaac308f9 mlx5_debugfs_root +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xaade821f mlx5_cmd_cleanup +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xac398838 mlx5_core_modify_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xb005ffa0 mlx5_create_flow_table +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xbc715588 mlx5_query_vport_state +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xca9db948 mlx5_core_destroy_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xd26f7a6e mlx5_core_destroy_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xd3de029e mlx5_vector2eqn +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xd7e4a22c mlx5_core_create_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xda03c071 mlx5_register_interface +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe5f727d2 mlx5_core_alloc_pd +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe6719a1e mlx5_core_query_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe6af33e4 mlx5_destroy_flow_table +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xef2c57a5 mlx5_cmd_alloc_uar +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf26436b2 mlx5_cmd_free_uar +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf4ada4de mlx5_core_create_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xfc728a49 mlx5_add_flow_table_entry +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x0a9f8b54 hdlcdrv_unregister +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x70e17ece hdlcdrv_receiver +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0xc46d8ad6 hdlcdrv_arbitrate +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0xdefdcce8 hdlcdrv_transmitter +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0xeb7f8cb0 hdlcdrv_register +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x3b6b2cce sirdev_raw_write +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x88153784 sirdev_put_instance +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x8a99aa71 sirdev_raw_read +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x9a4a7fc4 irda_unregister_dongle +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xac63ba9c sirdev_get_instance +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xc831973b irda_register_dongle +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xc9930511 sirdev_write_complete +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xdbdb3fd3 sirdev_set_dtr_rts +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xefa7734e sirdev_set_dongle +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xf0be2f6c sirdev_receive +EXPORT_SYMBOL drivers/net/mdio 0x22bce513 mdio_mii_ioctl +EXPORT_SYMBOL drivers/net/mdio 0x43e4defc mdio45_nway_restart +EXPORT_SYMBOL drivers/net/mdio 0x7577f992 mdio_set_flag +EXPORT_SYMBOL drivers/net/mdio 0xa1a29548 mdio45_probe +EXPORT_SYMBOL drivers/net/mdio 0xc6b1163f mdio45_links_ok +EXPORT_SYMBOL drivers/net/mdio 0xddc98749 mdio45_ethtool_gset_npage +EXPORT_SYMBOL drivers/net/mii 0x1479ea60 generic_mii_ioctl +EXPORT_SYMBOL drivers/net/mii 0x20eff2a8 mii_check_media +EXPORT_SYMBOL drivers/net/mii 0x596d1698 mii_check_link +EXPORT_SYMBOL drivers/net/mii 0x7bae353d mii_check_gmii_support +EXPORT_SYMBOL drivers/net/mii 0x7db15235 mii_nway_restart +EXPORT_SYMBOL drivers/net/mii 0x9e92a0dc mii_ethtool_sset +EXPORT_SYMBOL drivers/net/mii 0xd05cc746 mii_link_ok +EXPORT_SYMBOL drivers/net/mii 0xd2381fb0 mii_ethtool_gset +EXPORT_SYMBOL drivers/net/phy/mdio-bitbang 0x954cd9bd alloc_mdio_bitbang +EXPORT_SYMBOL drivers/net/phy/mdio-bitbang 0xe074a84b free_mdio_bitbang +EXPORT_SYMBOL drivers/net/phy/vitesse 0x0e1085fd vsc824x_add_skew +EXPORT_SYMBOL drivers/net/ppp/pppox 0x030345cb pppox_unbind_sock +EXPORT_SYMBOL drivers/net/ppp/pppox 0x2d941c1e pppox_ioctl +EXPORT_SYMBOL drivers/net/ppp/pppox 0x7038ed62 register_pppox_proto +EXPORT_SYMBOL drivers/net/ppp/pppox 0xe0ff7a18 unregister_pppox_proto +EXPORT_SYMBOL drivers/net/sungem_phy 0x71f51ea6 sungem_phy_probe +EXPORT_SYMBOL drivers/net/team/team 0x39998928 team_options_change_check +EXPORT_SYMBOL drivers/net/team/team 0x40ad58d8 team_options_register +EXPORT_SYMBOL drivers/net/team/team 0x5e183441 team_mode_unregister +EXPORT_SYMBOL drivers/net/team/team 0x8f15af5f team_modeop_port_change_dev_addr +EXPORT_SYMBOL drivers/net/team/team 0xa18fd038 team_modeop_port_enter +EXPORT_SYMBOL drivers/net/team/team 0xb6e8a48e team_option_inst_set_change +EXPORT_SYMBOL drivers/net/team/team 0xbb7161be team_options_unregister +EXPORT_SYMBOL drivers/net/team/team 0xd9b2df52 team_mode_register +EXPORT_SYMBOL drivers/net/usb/usbnet 0x987fdb24 usbnet_device_suggests_idle +EXPORT_SYMBOL drivers/net/usb/usbnet 0xd507e71e usbnet_link_change +EXPORT_SYMBOL drivers/net/usb/usbnet 0xf025e9c3 usbnet_manage_power +EXPORT_SYMBOL drivers/net/wan/hdlc 0x072ee53b alloc_hdlcdev +EXPORT_SYMBOL drivers/net/wan/hdlc 0x0d80dfee detach_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0x20c8e949 hdlc_close +EXPORT_SYMBOL drivers/net/wan/hdlc 0x4066ea79 hdlc_start_xmit +EXPORT_SYMBOL drivers/net/wan/hdlc 0x471ab092 hdlc_ioctl +EXPORT_SYMBOL drivers/net/wan/hdlc 0x8d69dda8 hdlc_open +EXPORT_SYMBOL drivers/net/wan/hdlc 0xa53ce042 attach_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0xc8d9e901 unregister_hdlc_device +EXPORT_SYMBOL drivers/net/wan/hdlc 0xd0c63bae hdlc_change_mtu +EXPORT_SYMBOL drivers/net/wan/hdlc 0xdac117bc unregister_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0xe899edb0 register_hdlc_protocol +EXPORT_SYMBOL drivers/net/wimax/i2400m/i2400m 0x609e4375 i2400m_unknown_barker +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x0ef76564 ath_key_config +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x1ed077dd ath_hw_setbssidmask +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x319c6026 ath_is_49ghz_allowed +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x4d6601dc ath_regd_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x5aa4e548 ath_key_delete +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x819592b6 ath_rxbuf_alloc +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x910e0f73 ath_is_mybeacon +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x97d812fd ath_reg_notifier_apply +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xaafdb617 ath_is_world_regd +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xc23bbffe ath_hw_keyreset +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xcc7a393e ath_hw_cycle_counters_update +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xced489b0 dfs_pattern_detector_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xd05fa3eb ath_printk +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xf3959b9a ath_hw_get_listen_time +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xfb4de67a ath_regd_get_band_ctl +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x002f5263 ath10k_core_start +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x08d613d6 ath10k_core_destroy +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x1c728ff8 ath10k_core_register +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x4a439aa5 ath10k_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x4a90ea57 ath10k_debug_get_new_fw_crash_data +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x8a044750 ath10k_err +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x9169a155 ath10k_core_stop +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xab04a544 ath10k_core_create +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xd19d3c8b ath10k_core_unregister +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xd9aabfb8 ath10k_warn +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xf663eeb4 ath10k_print_driver_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x1659eebf ath6kl_core_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x516bd968 ath6kl_core_cleanup +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x540af0e3 ath6kl_hif_intr_bh_handler +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x70a87edb ath6kl_core_rx_complete +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x78cae1be ath6kl_core_tx_complete +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x7b317424 ath6kl_printk +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x80a09613 ath6kl_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x86d22572 ath6kl_stop_txrx +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x91cfb84a ath6kl_hif_rw_comp_handler +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x98b7d823 ath6kl_core_create +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x9b49c597 ath6kl_cfg80211_resume +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x9bed03b7 ath6kl_cfg80211_suspend +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xa6f66cc1 ath6kl_warn +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xb279d043 ath6kl_core_destroy +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xcb014460 ath6kl_err +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x036e9365 ath9k_cmn_process_rate +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x0512ad06 ath9k_cmn_update_txpow +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x071cd739 ath9k_cmn_init_channels_rates +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x0a6d1311 ath9k_cmn_debug_base_eeprom +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x19209dd2 ath9k_cmn_beacon_config_adhoc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x1b44f47c ath9k_cmn_process_rssi +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x1d4e5751 ath9k_cmn_rx_skb_postprocess +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x2d15177d ath9k_cmn_debug_stat_rx +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x49021262 ath9k_cmn_rx_accept +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x4b75947f ath9k_cmn_beacon_config_sta +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x56d2661d ath9k_cmn_debug_modal_eeprom +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x5b3b7fdf ath9k_cmn_get_channel +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x6d36bebe ath9k_cmn_spectral_scan_config +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x7a03ec14 ath9k_cmn_reload_chainmask +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x7a90af65 ath9k_cmn_debug_recv +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x90e09391 ath9k_cmn_spectral_scan_trigger +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x9fa9f56d ath9k_cmn_beacon_config_ap +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xa10dc2f8 ath9k_cmn_spectral_init_debug +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xa85b9e83 ath9k_cmn_init_crypto +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xd0839533 ath_cmn_process_fft +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xd2981357 ath9k_cmn_count_streams +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xd890468e ath9k_cmn_setup_ht_cap +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xea453b1d ath9k_cmn_debug_phy_err +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xf0f59190 ath9k_cmn_spectral_deinit_debug +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xf83891df ath9k_cmn_get_hw_crypto_keytype +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x00a154f0 ar9003_paprd_init_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x01418136 ath9k_hw_wow_enable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x01a98dc0 ath9k_hw_startpcureceive +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x037acb3f ath9k_hw_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x05169a25 ath9k_hw_request_gpio +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x067a11c6 ar9003_paprd_enable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0ab430e4 ath9k_hw_stop_dma_queue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0aee9c5f ar9003_hw_bb_watchdog_dbg_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0bbf54ff ath9k_hw_puttxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0c109b79 ar9003_mci_get_interrupt +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0d628d31 ath9k_hw_setopmode +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x112ca6f7 ath9k_hw_init_global_settings +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x13ae8d3e ath9k_hw_addrxbuf_edma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x13d04a51 ath9k_hw_setpower +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x177aedaf ath9k_hw_wait +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1836ea03 ath9k_hw_init_btcoex_hw +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x20ff0a33 ar9003_paprd_create_curve +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x253b5c48 ath9k_hw_btcoex_init_2wire +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x262c6ede ath9k_hw_reset_tsf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x26e4dd0a ath9k_hw_rxprocdesc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x275c583a ath9k_hw_set_txq_props +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x28ab12ab ath9k_hw_gen_timer_stop +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2960f416 ath9k_hw_process_rxdesc_edma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x29f84e45 ar9003_paprd_populate_single_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2ac17fb3 ath9k_hw_releasetxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2bbbda7b ath9k_hw_getrxfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x3498cd16 ath9k_hw_resettxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x369dfbb0 ar9003_mci_get_next_gpm_offset +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x3ae156d3 ath9k_hw_stopdmarecv +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x3c478246 ath9k_hw_check_nav +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x41a7de8b ath9k_hw_bstuck_nfcal +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x42fbb902 ar9003_mci_state +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x45191897 ath9k_hw_gettxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4696cc79 ar9003_paprd_is_done +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x479c6b4a ath9k_hw_beaconinit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4834e12a ar9003_get_pll_sqsum_dvc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x49c59ecb ar9003_mci_cleanup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4c8ff051 ath9k_hw_check_alive +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x50da7ec7 ar9003_mci_set_bt_version +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x52f5a1a2 ath_gen_timer_isr +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x64aaa23a ath9k_hw_kill_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x677f4bd9 ath9k_hw_gpio_get +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6b11af55 ath9k_hw_get_txq_props +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6b3af3f8 ath9k_hw_set_sta_beacon_timers +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6c624d11 ath9k_hw_getchan_noise +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6d817a3a ath9k_hw_reset_calvalid +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6e76a720 ar9003_hw_disable_phy_restart +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6f8af0e0 ar9003_is_paprd_enabled +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x75f90d31 ath9k_hw_setmcastfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7ab03999 ath9k_hw_numtxpending +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7b14e54c ath9k_hw_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7c3d6ec8 ar9003_paprd_setup_gain_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7d2a79b8 ath9k_hw_cfg_output +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7e14ddda ath9k_hw_deinit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7f51ec6d ath9k_hw_disable_mib_counters +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x81e69791 ath9k_hw_btcoex_init_scheme +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x83db509a ath9k_hw_write_associd +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x84a080d8 ath9k_hw_set_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8c82cbf4 ath9k_hw_wow_wakeup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x94bb1d25 ath9k_hw_set_tx_filter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9b5a94ef ath9k_hw_setantenna +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9bddafc0 ath9k_hw_enable_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9d244da1 ath9k_hw_updatetxtriglevel +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9e8b6e37 ath9k_hw_setuprxdesc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9f10ad77 ath9k_hw_ani_monitor +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa0707f32 ath9k_hw_disable_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa30c799f ath9k_hw_set_rx_bufsize +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa41701ee ath9k_hw_gen_timer_start +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa5b8e93d ath9k_hw_btcoex_set_weight +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa71f74e1 ath9k_hw_btcoex_init_mci +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xaa9e0cda ath9k_hw_gettsf32 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xab61b0b1 ath9k_hw_name +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xacec00f2 ar9003_mci_send_wlan_channels +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xadfa0fd3 ath9k_hw_set_tsfadjust +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb1c2cb8c ath9k_hw_putrxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb1e29d16 ath9k_hw_btcoex_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb272a9bc ath9k_hw_abortpcurecv +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb331bf81 ath9k_hw_set_gpio +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb5248c87 ath9k_hw_phy_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb55820ff ath9k_hw_computetxtime +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xba91cb93 ath9k_hw_abort_tx_dma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc0ef60c4 ath9k_hw_btcoex_set_concur_txprio +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc17c2ebc ath9k_hw_setrxabort +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc6cbd293 ath9k_hw_setuptxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xcbbd0f03 ar9003_mci_setup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xcc728c65 ath9k_hw_beaconq_setup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xcebc80ce ar9003_hw_bb_watchdog_check +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd1d0b18a ath_gen_timer_free +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd272ead9 ath9k_hw_btcoex_enable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd48f84ca ath9k_hw_txstart +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd6760fd4 ath9k_hw_btcoex_bt_stomp +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xdd4ca6eb ath9k_hw_set_txpowerlimit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe5040612 ath9k_hw_setup_statusring +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe8be8c4e ath9k_hw_settsf64 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xeccf1930 ath9k_hw_intrpend +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xecdd837e ath9k_hw_reset +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xed4c10b8 ath9k_hw_setrxfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xef1537ca ath9k_hw_btcoex_init_3wire +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf224bade ath9k_hw_wow_apply_pattern +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf435df62 ath9k_hw_gettsf64 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf5c815a2 ath_gen_timer_alloc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf625c0d7 ar9003_mci_send_message +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf802916c ath9k_hw_getnf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xfd4103f6 ath9k_hw_cfg_gpio_input +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xffd02408 ath9k_hw_get_tsf_offset +EXPORT_SYMBOL drivers/net/wireless/atmel 0x0d1d1e97 stop_atmel_card +EXPORT_SYMBOL drivers/net/wireless/atmel 0x51ece96f atmel_open +EXPORT_SYMBOL drivers/net/wireless/atmel 0xfec0f3fc init_atmel_card +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x03208ea3 brcmu_pkt_buf_get_skb +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x065203b1 brcmu_pktq_pdeq_match +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x20267811 brcmu_pktq_pdeq_tail +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x3f2988a1 brcmu_dotrev_str +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x511a55c4 brcmu_pktq_penq +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x56675592 brcmu_pktq_mlen +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x6f8a6dfc brcmu_pktq_penq_head +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x73c27ad8 brcmu_pktq_init +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x7db92e6e brcmu_pktq_flush +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x7e393391 brcmu_pktq_mdeq +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x9f4b5dcf brcmu_d11_attach +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xaba30359 brcmu_pkt_buf_free_skb +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xac6f85a1 brcmu_pktq_pdeq +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xb4645699 brcmu_pktq_peek_tail +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xd0c4a828 brcmu_pktq_pflush +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xd261b8a6 brcmu_boardrev_str +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x05703843 hostap_init_ap_proc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x0ad69602 hostap_set_multicast_list_queue +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x0f10e949 hostap_remove_proc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x14c64535 hostap_80211_rx +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x17fed17d hostap_set_hostapd_sta +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x36d07698 hostap_init_proc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x3a516bdd hostap_free_data +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x3e75ade2 hostap_set_roaming +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x40ad626d hostap_set_hostapd +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x43693295 hostap_set_string +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x4620818d hostap_remove_interface +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x463889c1 hostap_add_interface +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x4e0eca31 hostap_init_data +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x56a715b1 prism2_update_comms_qual +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x58c8126d hostap_info_process +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x5e53f5be hostap_set_encryption +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x82ac8b67 hostap_setup_dev +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x854f02a5 hostap_80211_ops +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x8b80aed8 hostap_info_init +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xa12ad27f hostap_dump_tx_header +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xaa211664 hostap_handle_sta_tx_exc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xb2a945e0 hostap_dump_rx_header +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xb4b77c8b hostap_80211_get_hdrlen +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xb54b0e16 hostap_set_word +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xc5e15564 hostap_set_auth_algs +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xda287dbd hostap_master_start_xmit +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xda463c8a hostap_check_sta_fw_version +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xe3cdaffb hostap_set_antsel +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xf7d9b223 hostap_get_porttype +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x018b5e45 libipw_get_channel_flags +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x0a975f80 libipw_channel_to_freq +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x0bc249d6 alloc_libipw +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x0bd90c99 libipw_change_mtu +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x0ec7ee30 libipw_networks_age +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x1d12e978 libipw_get_geo +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x22d32083 libipw_wx_set_encode +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x2ddb99f0 libipw_xmit +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x2e10c284 libipw_rx +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x3b25400c libipw_wx_set_encodeext +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x51fa489f libipw_set_geo +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x613ee7ad libipw_get_channel +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x7113056c libipw_is_valid_channel +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x78777634 libipw_channel_to_index +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x80327fd9 libipw_wx_get_encode +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xb02078bd libipw_wx_get_encodeext +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xb1d1b91d libipw_rx_mgt +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xc2ad36f9 free_libipw +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xc8e80637 libipw_freq_to_channel +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xef23093c libipw_txb_free +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xf79a12d7 libipw_wx_get_scan +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x00d60ed5 il_send_cmd_pdu +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x00e90f68 il_read_targ_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x096dcb12 il_mac_conf_tx +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x09a92117 il_send_bt_config +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x0d3cada2 il_add_beacon_time +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x0d5bcf77 il_get_lowest_plcp +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x0f1995d7 il_mac_bss_info_changed +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x1276e883 _il_apm_stop +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x1510a4e9 il_tx_queue_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x1b635288 il_set_tx_power +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x21971aad il_send_cmd_sync +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x24c6bd11 il_txq_update_write_ptr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x25898a6f il_free_geos +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x275101e6 il_is_ht40_tx_allowed +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x28f36a88 il_wr_prph +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x2ec56604 il_eeprom_query16 +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x36a2f4e9 il_rd_prph +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x393b0412 il_eeprom_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x3a8213dd il_get_passive_dwell_time +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x3c32e720 il_cmd_queue_free +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x43fa7a28 il_hdl_pm_debug_stats +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4857ef47 il_usecs_to_beacons +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4aa39103 il_get_cmd_string +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4b1be09d il_set_flags_for_band +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4c34e492 il_mac_add_interface +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4ee2c1d2 il_mac_hw_scan +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x505dbbb2 il_hdl_csa +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x52016dfa il_send_cmd_pdu_async +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x5620b198 il_rx_queue_update_write_ptr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x564c6740 il_debug_level +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x58a654b0 il_irq_handle_error +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x594402db il_free_txq_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x5babdfbc il_fill_probe_req +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x5e8641f2 il_pm_ops +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x60ad69cd il_setup_rx_scan_handlers +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x63257b01 il_apm_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x67cdbd75 il_free_channel_map +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x692b7c2b il_clear_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x6bba3219 il_tx_queue_unmap +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x728a040d il_hdl_spectrum_measurement +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x72f9132a il_check_rxon_cmd +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x7957567f il_scan_cancel_timeout +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x797355ea il_tx_queue_free +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x79984178 il_power_update_mode +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x7b38c407 il_chswitch_done +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x7deabdce il_update_stats +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x7fcd7002 il_power_initialize +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x7fcee9c3 il_connection_init_rx_config +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x85dd379b il_mac_remove_interface +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x86660f81 il_hdl_error +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x8af67d55 il_leds_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x8bec802a il_scan_cancel +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x912b7a77 il_set_rxon_channel +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x945020e0 il_eeprom_free +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x9862c58e il_rx_queue_alloc +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x9d1166fa il_full_rxon_required +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x9ed2c704 il_rx_queue_space +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x9ef08ce4 il_mac_flush +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x9fd3a625 il_set_decrypted_flag +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa3a553a8 il_tx_cmd_protection +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa62412ed il_mac_sta_remove +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xab08667f il_get_free_ucode_key_idx +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xab97d058 il_mac_change_interface +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xabc42968 il_set_rxon_hwcrypto +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xad2e5d79 il_poll_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb0e9a449 il_tx_queue_reset +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb555ae76 il_get_single_channel_number +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb798da30 il_hdl_pm_sleep +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb7bd33ff il_isr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb91ab30e il_dbgfs_unregister +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xbac66d1c il_setup_scan_deferred_work +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xbbcb8e69 il_mac_config +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xbd0dc092 il_set_rxon_ht +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xbe05a00d il_get_channel_info +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc0cd5152 il_leds_exit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc2fc7781 il_alloc_txq_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc39cf12c il_bg_watchdog +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc44ceae8 il_get_active_dwell_time +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc7d26c89 il_init_geos +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xcc33fa39 il_set_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd0a87b69 il_dbgfs_register +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd2845821 il_apm_stop +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd35030dc il_cancel_scan_deferred_work +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd4401630 il_cmd_queue_unmap +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd8f310eb il_write_targ_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xdab54493 il_force_reset +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xdce2c567 il_mac_reset_tsf +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe1ad87ef il_set_rate +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe20b3f45 il_eeprom_query_addr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe435493a il_queue_space +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe6e36e57 il_restore_stations +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe72e7a08 il_setup_watchdog +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe7c09dad _il_poll_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xea47d072 il_init_scan_params +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xea6b81ea il_add_station_common +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xeae9d314 il_send_rxon_timing +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xed87f13f il_tx_cmd_complete +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf145c337 il_send_add_sta +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf16058ef il_send_cmd +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf3fa4203 il_send_lq_cmd +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf415a1ae il_init_channel_map +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf501278b il_bcast_addr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xfa9f241d il_clear_ucode_stations +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xfd3fc09a il_send_stats_request +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x39483213 __tracepoint_iwlwifi_dev_ucode_cont_event +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x57a72d66 __tracepoint_iwlwifi_dev_ioread32 +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0xaec44e29 __tracepoint_iwlwifi_dev_ucode_wrap_event +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0xb54212ab __tracepoint_iwlwifi_dev_ucode_error +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0xbc905f54 __tracepoint_iwlwifi_dev_iowrite32 +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0xda9416fc __tracepoint_iwlwifi_dev_ucode_event +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0xe9fb9634 __tracepoint_iwlwifi_dev_iowrite8 +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x0301ac66 alloc_orinocodev +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x115dc4b0 orinoco_change_mtu +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x132e74ff __orinoco_ev_info +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x16ecb521 orinoco_if_del +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x21babcde free_orinocodev +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x21e98329 __orinoco_ev_rx +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x29500591 orinoco_up +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x5bfb0c47 hermes_struct_init +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x622f3cd5 orinoco_if_add +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x768a5016 orinoco_init +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x78905d99 orinoco_stop +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x91b1a65b orinoco_get_stats +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x94f400ee orinoco_tx_timeout +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xa892e32f orinoco_open +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xcdc4f405 orinoco_process_xmit_skb +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xdc587f17 orinoco_set_multicast_list +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xf765a92e orinoco_down +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xffe27bca orinoco_interrupt +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/btcoexist/btcoexist 0x613b635e rtl_btc_get_ops_pointer +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x03136f3c rtl92c_dm_write_dig +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x0e6ff2b2 _rtl92c_phy_bb8192c_config_parafile +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x0f67425e _rtl92c_phy_rf_serial_write +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x16ff29b7 _rtl92c_phy_dbm_to_txpwr_idx +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x1a4c9c5f _rtl92c_store_pwrIndex_diffrate_offset +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x25ca7893 rtl92c_phy_query_bb_reg +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x28c24536 _rtl92c_phy_fw_rf_serial_write +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x2e50ae54 rtl8192_phy_check_is_legal_rfpath +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x384f67a9 rtl92c_phy_set_txpower_level +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x3d487453 rtl92c_phy_lc_calibrate +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x3dc23d5d rtl92c_set_fw_pwrmode_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x3ee43d94 rtl92c_dm_init_edca_turbo +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x40daf9e2 rtl92c_phy_set_bb_reg +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x438399d5 rtl92c_phy_sw_chnl +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x491ff853 rtl92c_phy_iq_calibrate +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x5e5182ac rtl92c_phy_set_io_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x668dd78c rtl92c_phy_set_io +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x6b8018f7 _rtl92c_phy_txpwr_idx_to_dbm +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x7a512fda _rtl92c_phy_rf_serial_read +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x7ca13843 _rtl92c_phy_init_bb_rf_register_definition +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x82fd4261 rtl92c_phy_sw_chnl_callback +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x9629daf9 rtl92c_dm_bt_coexist +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x987fef1f rtl92c_fill_h2c_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x9c6d8140 rtl92c_set_fw_joinbss_report_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xa176aadc rtl92c_dm_init +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xa4c7501e rtl92c_phy_rf_config +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xa54be699 rtl92c_bt_rssi_state_change +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xb3314d48 _rtl92c_phy_calculate_bit_shift +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xb347cbb5 rtl92c_phy_ap_calibrate +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xbbbae9b5 rtl92c_firmware_selfreset +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xc169ec88 rtl92c_phy_set_rfpath_switch +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xc74da50b rtl92c_dm_rf_saving +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xc79b05c3 _rtl92c_phy_fw_rf_serial_read +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xcd829f5c rtl92c_download_fw +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xcdc4c8ea rtl92c_set_fw_rsvdpagepkt +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xd413a6cc rtl92c_dm_watchdog +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xda464433 rtl92c_phy_update_txpower_dbm +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xdacf413a rtl92c_dm_check_txpower_tracking +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xdfab8218 rtl92c_dm_init_rate_adaptive_mask +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xe69b427c rtl92ce_phy_set_rf_on +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xefc46e36 rtl92c_phy_set_bw_mode +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xfa6e099b _rtl92c_phy_set_rf_sleep +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x6fb9f06f rtl8723_fill_dummy +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_pci 0x1a42a932 rtl_pci_disconnect +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_pci 0x39b2dbbe rtl_pci_suspend +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_pci 0x6cb6354c rtl_pci_resume +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_pci 0xb5342da4 rtl_pci_probe +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_usb 0x31464d9d rtl_usb_disconnect +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_usb 0x67aa14f2 rtl_usb_suspend +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_usb 0xb5e4c77c rtl_usb_probe +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_usb 0xcdb6639e rtl_usb_resume +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x1cd72f36 rtl_cam_add_one_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x207fbb70 rtl_evm_db_to_percentage +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x44eec0f1 rtl_cam_reset_all_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x4e83b041 rtl_cam_get_free_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x5fa3aefb rtl_ps_set_rf_state +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x61aa4bf2 rtl_init_rfkill +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x672a17f8 rtl_lps_enter +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x6733fb4e rtl_hal_pwrseqcmdparsing +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x688984c4 rtl_cmd_send_packet +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x720cf4d6 rtl_cam_del_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x72c50210 efuse_shadow_read +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x72cac7b2 rtl_phy_scan_operation_backup +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x7333d9f4 rtl_send_smps_action +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x76e1be04 rtl_process_phyinfo +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x79188a02 rtl_query_rxpwrpercentage +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x7c4abfc8 rtl_wowlan_fw_cb +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x7d45ce4a rtl_cam_delete_one_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x8c02f4b6 efuse_read_1byte +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x94ab0b18 rtl_cam_mark_invalid +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x94bca7f5 rtl_cam_empty_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x95137518 rtl_lps_leave +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x980848e2 rtl_addr_delay +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xaceba33f rtl_get_tcb_desc +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xb5bce0b8 rtl_efuse_shadow_map_update +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xd27a63a4 rtl_bb_delay +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xda1d3180 rtl_rfreg_delay +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xe3d4af43 rtl_ps_disable_nic +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xe5dbac73 rtl_dm_diginit +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xe8468926 efuse_one_byte_read +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xec387d23 rtl_ps_enable_nic +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xec66409d rtl_fw_cb +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xf1a6e6f5 rtlwifi_rate_mapping +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xf41ea53a rtl_signal_scale_mapping +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0x209c6cdc wl12xx_is_dummy_packet +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0x8c7bea7a wlcore_tx_complete +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0xcf64b2c2 wlcore_calc_packet_alignment +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0xfdd92262 wl1271_free_tx_id +EXPORT_SYMBOL drivers/nfc/microread/microread 0xac5d8fdd microread_probe +EXPORT_SYMBOL drivers/nfc/microread/microread 0xeae75dfb microread_remove +EXPORT_SYMBOL drivers/nfc/nxp-nci/nxp-nci 0x2168b783 nxp_nci_remove +EXPORT_SYMBOL drivers/nfc/nxp-nci/nxp-nci 0x7cb5ce7e nxp_nci_probe +EXPORT_SYMBOL drivers/nfc/nxp-nci/nxp-nci 0x914edfba nxp_nci_fw_recv_frame +EXPORT_SYMBOL drivers/nfc/pn544/pn544 0x16d05f12 pn544_hci_probe +EXPORT_SYMBOL drivers/nfc/pn544/pn544 0xb2c4896c pn544_hci_remove +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x1db53f42 ndlc_close +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x4402228b ndlc_probe +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x5988c6f3 ndlc_send +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x6469085e ndlc_open +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x7c6491c4 st_nci_se_deinit +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x832d61f5 st_nci_se_io +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0xacac5e16 st_nci_se_init +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0xb8a3532b ndlc_recv +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0xc92e0531 ndlc_remove +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x0c357053 st21nfca_hci_remove +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x16d7b36c st21nfca_im_send_dep_req +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x179c6c84 st21nfca_im_send_atr_req +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x20c6d359 st21nfca_dep_init +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x2275caeb st21nfca_apdu_reader_event_received +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x320101b5 st21nfca_se_init +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x3ca843d6 st21nfca_hci_enable_se +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x41396038 st21nfca_hci_disable_se +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x562a1013 st21nfca_connectivity_event_received +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x57900cf5 st21nfca_dep_event_received +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x5d8d09dd st21nfca_hci_se_io +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x62a2f830 st21nfca_se_deinit +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x84e56fa6 st21nfca_tm_send_dep_res +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xc0ebfc87 st21nfca_hci_probe +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xd70918fa st21nfca_hci_discover_se +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xf8b4e5ef st21nfca_dep_deinit +EXPORT_SYMBOL drivers/ntb/ntb 0x23ed9198 ntb_db_event +EXPORT_SYMBOL drivers/ntb/ntb 0x3a8f65a8 ntb_link_event +EXPORT_SYMBOL drivers/ntb/ntb 0x5980fae7 __ntb_register_client +EXPORT_SYMBOL drivers/ntb/ntb 0x6bfc307e ntb_register_device +EXPORT_SYMBOL drivers/ntb/ntb 0xb08f5294 ntb_unregister_device +EXPORT_SYMBOL drivers/ntb/ntb 0xb2c8a5a2 ntb_unregister_client +EXPORT_SYMBOL drivers/ntb/ntb 0xdb2fcff4 ntb_set_ctx +EXPORT_SYMBOL drivers/ntb/ntb 0xf088a48b ntb_clear_ctx +EXPORT_SYMBOL drivers/nvdimm/nd_btt 0x0d8fbd1a nvdimm_namespace_detach_btt +EXPORT_SYMBOL drivers/nvdimm/nd_btt 0x73486c69 nvdimm_namespace_attach_btt +EXPORT_SYMBOL drivers/parport/parport 0x00a6cfec __parport_register_driver +EXPORT_SYMBOL drivers/parport/parport 0x0514afd7 parport_find_base +EXPORT_SYMBOL drivers/parport/parport 0x0eed7a76 parport_remove_port +EXPORT_SYMBOL drivers/parport/parport 0x1ae692ba parport_ieee1284_write_compat +EXPORT_SYMBOL drivers/parport/parport 0x1b5e7846 parport_write +EXPORT_SYMBOL drivers/parport/parport 0x29c40a07 parport_ieee1284_ecp_read_data +EXPORT_SYMBOL drivers/parport/parport 0x31525070 parport_get_port +EXPORT_SYMBOL drivers/parport/parport 0x37cf4fa6 parport_wait_event +EXPORT_SYMBOL drivers/parport/parport 0x473700fe parport_ieee1284_read_nibble +EXPORT_SYMBOL drivers/parport/parport 0x483c9587 parport_ieee1284_epp_write_data +EXPORT_SYMBOL drivers/parport/parport 0x48a7742b parport_register_port +EXPORT_SYMBOL drivers/parport/parport 0x4d2a941b parport_ieee1284_interrupt +EXPORT_SYMBOL drivers/parport/parport 0x529fef0c parport_del_port +EXPORT_SYMBOL drivers/parport/parport 0x56e5fba6 parport_unregister_driver +EXPORT_SYMBOL drivers/parport/parport 0x5c753b7d parport_ieee1284_ecp_write_addr +EXPORT_SYMBOL drivers/parport/parport 0x5e3a3912 parport_irq_handler +EXPORT_SYMBOL drivers/parport/parport 0x650b6728 parport_negotiate +EXPORT_SYMBOL drivers/parport/parport 0x71fbc850 parport_register_device +EXPORT_SYMBOL drivers/parport/parport 0x7d9958fa parport_find_number +EXPORT_SYMBOL drivers/parport/parport 0x830c85f7 parport_ieee1284_read_byte +EXPORT_SYMBOL drivers/parport/parport 0x8780438f parport_set_timeout +EXPORT_SYMBOL drivers/parport/parport 0x8840eb70 parport_unregister_device +EXPORT_SYMBOL drivers/parport/parport 0xa36c9d72 parport_register_dev_model +EXPORT_SYMBOL drivers/parport/parport 0xa6c98e5c parport_wait_peripheral +EXPORT_SYMBOL drivers/parport/parport 0xae67f092 parport_announce_port +EXPORT_SYMBOL drivers/parport/parport 0xb6dd9321 parport_claim +EXPORT_SYMBOL drivers/parport/parport 0xb9b86bc0 parport_ieee1284_epp_read_addr +EXPORT_SYMBOL drivers/parport/parport 0xc8dafce0 parport_ieee1284_epp_read_data +EXPORT_SYMBOL drivers/parport/parport 0xe8aa565e parport_ieee1284_epp_write_addr +EXPORT_SYMBOL drivers/parport/parport 0xec0e981a parport_put_port +EXPORT_SYMBOL drivers/parport/parport 0xfc2e5417 parport_read +EXPORT_SYMBOL drivers/parport/parport 0xfce3f8a4 parport_ieee1284_ecp_write_data +EXPORT_SYMBOL drivers/parport/parport 0xfdf26c93 parport_release +EXPORT_SYMBOL drivers/parport/parport 0xff7a7965 parport_claim_or_block +EXPORT_SYMBOL drivers/parport/parport_pc 0x3b9a1ed1 parport_pc_probe_port +EXPORT_SYMBOL drivers/parport/parport_pc 0xab5bae01 parport_pc_unregister_port +EXPORT_SYMBOL drivers/pci/host/pcie-iproc 0x040f3cd7 iproc_pcie_remove +EXPORT_SYMBOL drivers/pci/host/pcie-iproc 0x770d197b iproc_pcie_setup +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x1c817fab rproc_put +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x36d44118 rproc_report_crash +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x4b0910c3 rproc_get_by_phandle +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x5998ece6 rproc_alloc +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x648b1eff rproc_da_to_va +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x6d676333 rproc_boot +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x884e2d86 rproc_vq_interrupt +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x91992513 rproc_del +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0xc723b131 rproc_shutdown +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0xe5a8deb0 rproc_add +EXPORT_SYMBOL drivers/rtc/rtc-ds1685 0xe1d04972 ds1685_rtc_poweroff +EXPORT_SYMBOL drivers/scsi/esp_scsi 0x2ab844fb scsi_esp_register +EXPORT_SYMBOL drivers/scsi/esp_scsi 0x4a29ab38 scsi_esp_intr +EXPORT_SYMBOL drivers/scsi/esp_scsi 0x5192eaf3 scsi_esp_cmd +EXPORT_SYMBOL drivers/scsi/esp_scsi 0x54b8a163 scsi_esp_unregister +EXPORT_SYMBOL drivers/scsi/esp_scsi 0xc61bcf79 scsi_esp_template +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x26bb0e21 fcoe_fcf_get_selected +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x2e545fd5 fcoe_ctlr_set_fip_mode +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x3ad160d2 fcoe_ctlr_els_send +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x41b3c0ee fcoe_ctlr_link_down +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x8389373d fcoe_transport_detach +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xa339fb35 fcoe_ctlr_recv +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xb4108abe fcoe_ctlr_destroy +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xcf0615a2 fcoe_ctlr_destroy_store +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xe6778c8f fcoe_ctlr_recv_flogi +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xf93d447e fcoe_ctlr_link_up +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xfc72a378 fcoe_ctlr_init +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xff244db5 fcoe_transport_attach +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x041d911a fc_disc_config +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x1afbc944 libfc_vport_create +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x1f5b25a7 fc_exch_update_stats +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x22b90986 fc_exch_mgr_del +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x2c4ed1a1 fc_lport_flogi_resp +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x2da87e07 fc_get_host_stats +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x34813e43 fc_fcp_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x35c6a4d0 fc_lport_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x36e5fbaf fc_cpu_mask +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x370d084f fc_fabric_login +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x45ece911 fc_exch_mgr_list_clone +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x4684f1bb fc_lport_logo_resp +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x475a45d7 fc_rport_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x4dddbbde fc_lport_notifier_head +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x4f2b5652 fc_exch_mgr_add +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x51748d94 fc_lport_destroy +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x52f524cd fc_lport_set_local_id +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x5768edc2 fc_frame_alloc_fill +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x5d77df6a fc_lport_bsg_request +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x5df6cdac fc_linkdown +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x64c32ca7 fc_exch_mgr_free +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x66618034 fc_vport_id_lookup +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x6673a7ae fc_exch_mgr_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x6902d040 fc_queuecommand +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x6a6a36e4 fc_fill_hdr +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x70b55f71 fc_elsct_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x7342f6b0 fc_set_rport_loss_tmo +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x7b8b61c6 fc_vport_setlink +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x7db78ba3 fc_eh_abort +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x7f150bed fc_exch_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x81e52771 fc_eh_host_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x82ef392b fc_frame_crc_check +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x864690c7 fc_fcp_destroy +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x8c22944d fc_disc_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x99398ba7 fc_get_host_speed +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xa51aede3 fc_lport_iterate +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xac487141 fc_rport_terminate_io +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xb0c23da0 fc_lport_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xb8184148 fc_fill_reply_hdr +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xc1faf2b3 fc_fabric_logoff +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xc9f9f390 fc_set_mfs +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xcb3192b6 fc_eh_device_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xd06d9f03 fc_lport_config +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xd33541c8 fc_slave_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xd719b702 fc_fc4_register_provider +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xe258975d _fc_frame_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xe5f336ac fc_exch_recv +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xe7fe159b fc_fc4_deregister_provider +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xe9a999b0 fc_linkup +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xf85db9e2 fc_exch_mgr_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xfb0a9434 fc_elsct_send +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xfb5b4783 fc_get_host_port_state +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x8393c443 sas_prep_resume_ha +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x8a87e724 try_test_sas_gpio_gp_bit +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0xa1f180a3 sas_wait_eh +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0xdcb00b1e sas_resume_ha +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0xecf1368e sas_suspend_ha +EXPORT_SYMBOL drivers/scsi/megaraid/megaraid_mm 0x05fa56e8 mraid_mm_register_adp +EXPORT_SYMBOL drivers/scsi/megaraid/megaraid_mm 0x2250c66e mraid_mm_adapter_app_handle +EXPORT_SYMBOL drivers/scsi/megaraid/megaraid_mm 0x512c956d mraid_mm_unregister_adp +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x0075dcc1 osd_req_read_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x02256608 osd_req_decode_sense_full +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x0c17edb1 osd_sec_init_nosec_doall_caps +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x22564efa osd_req_add_set_attr_list +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x375b2fb3 osd_req_read +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x3f7870e7 osd_req_list_collection_objects +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x43ca2137 osd_req_list_partition_objects +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x4b4a3a06 osd_req_list_dev_partitions +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x50f317b2 osd_req_create_partition +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x5ef63f22 osd_req_read_sg_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x62ce4a85 osd_req_format +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x631ede73 osd_req_write +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x63ae13b7 osd_req_get_attributes +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x74243484 osd_req_write_sg +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x76307e21 osd_execute_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x77d3d5b6 osd_auto_detect_ver +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x83821650 osd_req_remove_object +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x8e19ecbe osd_execute_request_async +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x8fab9ff8 osd_start_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x968b0318 osd_req_list_partition_collections +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x9c6c9956 osd_req_set_attributes +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x9e0a5418 osd_req_create_object +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xa8ae9f1d osd_req_flush_partition +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xa9cab100 osd_dev_fini +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xc0c6010b osd_req_write_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xcad32c36 osd_req_remove_partition +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xcf588891 osd_req_add_get_attr_page +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xd22a3797 osd_req_read_sg +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xd6268abb osd_dev_init +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xda140c0c osd_finalize_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xdaee70ff osd_req_write_sg_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xdd1e7f0c osd_req_flush_obsd +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xec6cf9e2 osd_req_decode_get_attr_list +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xed20fa38 osd_req_flush_object +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xef8d9e00 osd_req_flush_collection +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xfd5fc85c osd_end_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xfe403647 osd_req_add_get_attr_list +EXPORT_SYMBOL drivers/scsi/osd/osd 0x3d58d44b osduld_path_lookup +EXPORT_SYMBOL drivers/scsi/osd/osd 0x44e64a9f osduld_put_device +EXPORT_SYMBOL drivers/scsi/osd/osd 0x5fc48609 osduld_unregister_test +EXPORT_SYMBOL drivers/scsi/osd/osd 0x6f40a634 osduld_device_info +EXPORT_SYMBOL drivers/scsi/osd/osd 0x934ad3d1 osduld_register_test +EXPORT_SYMBOL drivers/scsi/osd/osd 0x9c7a4a90 osduld_info_lookup +EXPORT_SYMBOL drivers/scsi/osd/osd 0xf9ea1424 osduld_device_same +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x1dba4e30 qlt_rdy_to_xfer +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x32902076 qlt_stop_phase2 +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x35a1a150 qlt_free_cmd +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x38b77e17 qlt_free_mcmd +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x6e89f34b qlt_abort_cmd +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x726943b4 qlt_lport_deregister +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x7af2fe01 qlt_lport_register +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x8ec9fb54 qlt_stop_phase1 +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xb31216ae qlt_xmit_response +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xb47e6749 qlt_xmit_tm_rsp +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xbbeed58f qlt_unreg_sess +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xbe4324fc qlt_enable_vha +EXPORT_SYMBOL drivers/scsi/raid_class 0x1c7f5913 raid_component_add +EXPORT_SYMBOL drivers/scsi/raid_class 0xa1df4d26 raid_class_release +EXPORT_SYMBOL drivers/scsi/raid_class 0xa2132134 raid_class_attach +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x0a57dbdc fc_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x10f2ee25 fc_remote_port_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x14bec8d5 scsi_is_fc_rport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x262060e4 fc_block_scsi_eh +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x4da37cee fc_vport_create +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x68b341c9 scsi_is_fc_vport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x7954b1ea fc_get_event_number +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x842ac3db fc_host_post_vendor_event +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x930bad43 fc_vport_terminate +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xad0f1361 fc_host_post_event +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xb4e80050 fc_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xbfdc3525 fc_remove_host +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xe14ee905 fc_remote_port_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xe31d8ec3 fc_remote_port_rolechg +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x0116f260 sas_rphy_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x076db736 sas_phy_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x17d5362a sas_port_get_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x19e948dd sas_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x1ca9de7b sas_port_alloc_num +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x3623e383 sas_expander_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x4353bc5d sas_port_mark_backlink +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x49c3096a scsi_is_sas_rphy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x627fda8f sas_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x728a6b8d scsi_is_sas_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x7aace5a8 sas_read_port_mode_page +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x7bea939f sas_phy_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x7cbb01da sas_end_device_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x865ae915 sas_rphy_remove +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x8be43eea sas_rphy_unlink +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x8de57626 sas_port_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x9b896ca9 sas_rphy_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x9fe7144a sas_port_delete_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xa701f76f sas_remove_children +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xa708f469 sas_remove_host +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xa875f106 sas_port_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xb160e9a6 sas_port_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xb21e3665 sas_port_add_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xbc40017a sas_port_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xc2e379b1 sas_rphy_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xd167806c sas_phy_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xf020301f sas_phy_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xf0daa3e4 scsi_is_sas_port +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x061e2e10 spi_dv_device +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x3686ea09 spi_print_msg +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x86075aed spi_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x961bf8d2 spi_display_xfer_agreement +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0xb6063597 spi_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0xf5958662 spi_schedule_dv_device +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0x0b9626f7 srp_rport_put +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0x200d7077 srp_start_tl_fail_timers +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0x3ed4b84b srp_rport_get +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0x405b6e05 srp_parse_tmo +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0xa1924520 srp_reconnect_rport +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0x3619b92b ufshcd_alloc_host +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0x372151d4 ufshcd_runtime_suspend +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0x6ea95a36 ufshcd_shutdown +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0x7a831c10 ufshcd_system_resume +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0x9af482f6 ufshcd_system_suspend +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0xbff7a592 ufshcd_runtime_idle +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0xc8d8787a ufshcd_runtime_resume +EXPORT_SYMBOL drivers/ssb/ssb 0x004675ad ssb_device_is_enabled +EXPORT_SYMBOL drivers/ssb/ssb 0x07e1aa2a ssb_set_devtypedata +EXPORT_SYMBOL drivers/ssb/ssb 0x08175061 ssb_dma_translation +EXPORT_SYMBOL drivers/ssb/ssb 0x1114d90a ssb_bus_may_powerdown +EXPORT_SYMBOL drivers/ssb/ssb 0x1dcf9564 ssb_pmu_set_ldo_voltage +EXPORT_SYMBOL drivers/ssb/ssb 0x2c7a99ad ssb_pcihost_register +EXPORT_SYMBOL drivers/ssb/ssb 0x3e97a87d __ssb_driver_register +EXPORT_SYMBOL drivers/ssb/ssb 0x4267a8b5 ssb_clockspeed +EXPORT_SYMBOL drivers/ssb/ssb 0x46eb5aa1 ssb_pcicore_dev_irqvecs_enable +EXPORT_SYMBOL drivers/ssb/ssb 0x558a1957 ssb_bus_powerup +EXPORT_SYMBOL drivers/ssb/ssb 0x5f3ea3fe ssb_device_disable +EXPORT_SYMBOL drivers/ssb/ssb 0x67a670bc ssb_pmu_set_ldo_paref +EXPORT_SYMBOL drivers/ssb/ssb 0x748830d3 ssb_device_enable +EXPORT_SYMBOL drivers/ssb/ssb 0x8086fa6f ssb_bus_unregister +EXPORT_SYMBOL drivers/ssb/ssb 0x8fe719bf ssb_commit_settings +EXPORT_SYMBOL drivers/ssb/ssb 0xae5ab083 ssb_bus_sdiobus_register +EXPORT_SYMBOL drivers/ssb/ssb 0xc0512e0f ssb_admatch_base +EXPORT_SYMBOL drivers/ssb/ssb 0xd481192b ssb_admatch_size +EXPORT_SYMBOL drivers/ssb/ssb 0xe8b0c73f ssb_driver_unregister +EXPORT_SYMBOL drivers/ssb/ssb 0xf1e2fb1e ssb_bus_resume +EXPORT_SYMBOL drivers/ssb/ssb 0xf46e8487 ssb_bus_pcibus_register +EXPORT_SYMBOL drivers/ssb/ssb 0xfaaad804 ssb_chipco_gpio_control +EXPORT_SYMBOL drivers/ssb/ssb 0xfdc0f387 ssb_bus_suspend +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x0357c385 fbtft_framebuffer_alloc +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x0e9f5723 fbtft_read_spi +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x12dd98d7 fbtft_probe_common +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x169f062a fbtft_unregister_backlight +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x1e85fe88 fbtft_write_reg8_bus9 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x26cb8ecb fbtft_write_vmem16_bus8 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x2f7f34b4 fbtft_init_display +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x307de5e9 fbtft_dbg_hex +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x41ede7ab fbtft_unregister_framebuffer +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x469f25bd fbtft_write_vmem16_bus9 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x4e21ffea fbtft_write_spi +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x6180497b fbtft_write_reg16_bus8 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x6a201e93 fbtft_write_gpio8_wr +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x6f2bd149 fbtft_remove_common +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x714b9167 fbtft_framebuffer_release +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x8519c4ad fbtft_write_vmem8_bus8 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x8aecc83d fbtft_write_gpio16_wr_latched +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x8dfec16f fbtft_register_framebuffer +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xafb0f105 fbtft_write_vmem16_bus16 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xb3ea0078 fbtft_register_backlight +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xceb2eae7 fbtft_write_spi_emulate_9 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xe0b2d120 fbtft_write_reg16_bus16 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xf33fc16b fbtft_write_reg8_bus8 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xf3462519 fbtft_write_gpio16_wr +EXPORT_SYMBOL drivers/staging/fwserial/firewire-serial 0xc73dd2bb fwtty_port_get +EXPORT_SYMBOL drivers/staging/fwserial/firewire-serial 0xe182fe41 fwtty_port_put +EXPORT_SYMBOL drivers/staging/iio/addac/adt7316 0xc3076d0c adt7316_probe +EXPORT_SYMBOL drivers/staging/iio/magnetometer/hmc5843_core 0x1f67d0a7 hmc5843_common_suspend +EXPORT_SYMBOL drivers/staging/iio/magnetometer/hmc5843_core 0x8709d1c6 hmc5843_common_probe +EXPORT_SYMBOL drivers/staging/iio/magnetometer/hmc5843_core 0x8deab0e3 hmc5843_common_remove +EXPORT_SYMBOL drivers/staging/iio/magnetometer/hmc5843_core 0xd1af8244 hmc5843_common_resume +EXPORT_SYMBOL drivers/staging/iio/meter/ade7854 0xa393ac7d ade7854_remove +EXPORT_SYMBOL drivers/staging/iio/meter/ade7854 0xb4e7540b ade7854_probe +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x01a2d1fd lnet_finalize +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x03c92f2b lnet_connect +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x0905f373 lnet_copy_iov2kiov +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x0d2a6023 lnet_sock_listen +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x0f24f0a3 lnet_net2ni +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x11078038 lnet_create_reply_msg +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x1366b7ac LNetSetLazyPortal +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x18496d27 lnet_sock_getbuf +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x19670622 LNetNIInit +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x1b191752 lnet_msgtyp2str +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x1ee5f15e lnet_ipif_query +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x1fe16fd5 LNetGet +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x204b8151 lnet_counters_reset +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x22ec0c36 the_lnet +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x2aa9953d lnet_cpt_of_nid +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x2ac93e90 lnet_connect_console_error +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x2bd0a8bd lnet_unregister_lnd +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x33202a6c LNetGetId +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x3bf05ca3 lnet_extract_kiov +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x3c779ee0 LNetPut +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x3f4f5b46 LNetNIFini +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x4359092e lnet_sock_getaddr +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x473ad33b LNetDist +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x55db5324 lnet_iov_nob +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x58a1ca89 LNetMDUnlink +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x5e91cfec lnet_copy_iov2iov +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x5fee352c lnet_acceptor_timeout +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x61f784b2 LNetClearLazyPortal +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x64cdea3a LNetCtl +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x65928f71 lnet_notify +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x66d449b1 lnet_ipif_enumerate +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x6f7be171 LNetEQGet +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x706f61bb lnet_sock_connect +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x717d3cc9 lnet_set_reply_msg_len +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x722c76e5 LNetMDAttach +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x7441d2c5 lnet_sock_read +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x7d59a7fe LNetMEInsert +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x854ab844 LNetEQWait +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x9502190f lnet_sock_setbuf +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x976a237e lnet_sock_write +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x9de986d3 LNetEQAlloc +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xa45e1f4d lnet_copy_kiov2kiov +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xa56de08d lnet_ipif_free_enumeration +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xaa414970 LNetMEUnlink +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xaa9b477e LNetMDBind +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xb75f7953 LNetEQFree +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xba5566d2 lnet_acceptor_port +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xbf0760a2 LNetMEAttach +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xc2346215 lnet_parse +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xc63518c7 lnet_register_lnd +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xd1c2f3e4 lnet_extract_iov +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xd7c50cb9 lnet_init +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xe3f1a1f8 lnet_kiov_nob +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xe8124744 lnet_fini +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xf1b316bf LNetSnprintHandle +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xfa106804 lnet_counters_get +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xfa8f9460 lnet_copy_kiov2iov +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xfdd141f5 lnet_sock_accept +EXPORT_SYMBOL drivers/staging/lustre/lnet/selftest/lnet_selftest 0x078db139 lstcon_ioctl_entry +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0x03f697dd seq_client_alloc_fid +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0x11e73c0e seq_client_flush +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0x19deaf86 seq_client_get_seq +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0x1c4bb5f9 LU_OBF_FID +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0x375e6f8d LUSTRE_BFL_FID +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0x39f4cc25 seq_client_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0x4178c208 seq_client_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0xa94ff729 client_fid_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0xae61cff5 LU_DOT_LUSTRE_FID +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0xc997a02f LUSTRE_SEQ_SPACE_RANGE +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0xecee2727 LUSTRE_SEQ_ZERO_RANGE +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0xfc083496 client_fid_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0x16d5e487 fld_client_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0x4f1ea5b9 fld_client_lookup +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0x826ff338 fld_client_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0x83693cbd fld_client_debugfs_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0x93e5eff0 fld_client_del_target +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0xdf914bc7 fld_client_add_target +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0xe0162f59 fld_client_flush +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x000c507f libcfs_debug_dumplog +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x00c881f6 cfs_cpt_number +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x01db5172 cfs_percpt_atomic_summary +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x0389f857 cfs_cpt_spread_node +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x069f9bb2 cfs_wi_schedule +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x08ada613 libcfs_console_backoff +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x0b4b1546 libcfs_lnd2modname +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x0c68bc45 cfs_cpt_clear +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x0de6c369 cfs_cap_lower +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x0e311d38 cfs_percpt_atomic_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x0f5eff79 cfs_percpt_number +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x10b7e9c3 cfs_cpt_unset_cpu +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x10fd50ae cfs_hash_for_each_empty +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x13550229 lbug_with_loc +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x151e7546 cfs_cpt_table_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x17ac7833 libcfs_deregister_ioctl +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x1a60d439 cfs_parse_nidlist +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x1c7ec980 cfs_hash_for_each_safe +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x22319718 cfs_percpt_unlock +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x23f6f445 cfs_restore_sigs +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x247da28c libcfs_kvzalloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x2637a660 cfs_hash_bd_lookup_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x2663147a __cfs_fail_timeout_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x27b6d3ba cfs_ip_addr_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x2adae33e cfs_init_timer +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x2dbe54b2 cfs_trimwhite +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x2e5044c7 cfs_cpt_set_nodemask +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x2efcc0e6 cfs_block_sigs +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x2f85ad89 cfs_hash_dual_bd_finddel_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x31fc5082 cfs_crypto_hash_update +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x339b461a cfs_hash_dual_bd_findadd_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x377f93fb cfs_srand +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x389ca502 libcfs_debug_mb +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x38fde09c cfs_hash_hlist_for_each +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x39fdcd2b libcfs_debug_set_level +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x3c1285bd libcfs_subsystem_debug +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x3d5e6098 cfs_race_state +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x3ef0d90c libcfs_kkuc_group_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x4062f92b libcfs_run_lbug_upcall +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x411db754 cfs_crypto_hash_final +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x44688a0a cfs_block_allsigs +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x44728d76 cfs_cpt_bind +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x44839bbb cfs_rand +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x48193550 cfs_hash_bd_finddel_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x482deff7 cfs_cpt_unset_cpumask +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x48f163c6 libcfs_str2anynid +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x4a95faa2 cfs_timer_deadline +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x4a99af72 cfs_clear_sigpending +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x4b123f3a cfs_hash_cond_del +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x4d89e988 cfs_block_sigsinv +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x4f1f2fa5 cfs_crypto_hash_digest +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x50345570 libcfs_str2net +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x5051b6d2 portal_enter_debugger +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x509d38b0 libcfs_net2str +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x54fd9a71 cfs_percpt_index +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x55d18175 cfs_hash_size_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x58a7ee00 libcfs_catastrophe +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x5946ec2b cfs_percpt_current +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x5a785762 cfs_cpt_online +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x5c013b81 cfs_expr_list_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x5dce9e80 libcfs_lnd2str +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x5dd2e495 cfs_hash_bd_findadd_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x5df8c623 cfs_cpt_cpumask +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x62289d65 cfs_array_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x63be5b7f cfs_race_waitq +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x64685fef libcfs_console_min_delay +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x6564c55b libcfs_console_max_delay +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x65dd9f0c libcfs_run_upcall +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x67398404 cfs_wi_sched_destroy +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x6c905b5f libcfs_watchdog_ratelimit +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x6c9b4713 cfs_hash_bd_del_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x71f662a3 libcfs_debug +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x75600a04 cfs_hash_bd_move_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x790dbd66 cfs_hash_rehash_key +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x7a63872e cfs_timer_disarm +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x7b0b748a cfs_ip_addr_parse +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x7e6a5b3c cfs_hash_findadd_unique +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x7e6f6485 cfs_ip_addr_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x7fda989d cfs_fail_loc +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x8151c3aa cfs_cap_raised +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x81bef0ce add_wait_queue_exclusive_head +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x828d16a2 cfs_cpt_table +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x83d795e4 cfs_match_nid +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x83e75430 cfs_hash_getref +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x857aaea7 libcfs_register_ioctl +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x89b2ddc3 cfs_hash_rehash_cancel_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x89dcbafa cfs_hash_for_each +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x8c85e4e6 cfs_crypto_hash_speed +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x8d3622c1 cfs_hash_bd_add_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x8dda96cb cfs_hash_dual_bd_unlock +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x91504e8b libcfs_kmemory +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x92af4d75 cfs_crypto_hash_update_page +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x92f54077 cfs_hash_putref +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x940ed192 libcfs_stack +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x95620e8c cfs_wi_deschedule +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x96727837 cfs_hash_dual_bd_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x97b0b9bc cfs_enter_debugger +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x9879b229 cfs_get_random_bytes +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x9ae9cd2f libcfs_kkuc_group_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x9f82f712 cfs_trace_copyout_string +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xa256e060 cfs_hash_bd_peek_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xa28a6757 cfs_percpt_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xa2b68b2a cfs_array_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xa6b9dee6 libcfs_kkuc_group_rem +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xa9088531 cfs_expr_list_values +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xa9a5cf4e cfs_hash_lookup +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xa9c0ca61 cfs_timer_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xa9dc74e2 cfs_trace_copyin_string +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xabc53bf1 cfs_hash_is_empty +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xac0f67e3 cfs_cpt_unset_node +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xafdb46d6 cfs_hash_dual_bd_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xb1964c85 cfs_hash_debug_str +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xb2ae1633 cfs_hash_rehash_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xb336ee38 cfs_hash_for_each_key +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xb473e79e cfs_wi_sched_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xb8c52b1b cfs_timer_done +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xbab4f34e cfs_timer_arm +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xbc275420 cfs_cpt_unset_nodemask +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xbf7a37f1 cfs_signal_pending +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xc0ea7fc0 cfs_expr_list_parse +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xc2092158 cfs_hash_debug_header +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xc2dfd791 libcfs_console_ratelimit +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xc39fd2f9 libcfs_panic_on_lbug +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xc49b1c62 cfs_percpt_atomic_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xc514e721 cfs_hash_del +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xca24b2dc cfs_hash_for_each_nolock +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xcb2160d3 cfs_cpt_of_cpu +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xcb385db9 libcfs_debug_binary +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xcc20e694 libcfs_nid2str +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xcc7e1d13 cfs_percpt_lock_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xccc45639 cfs_free_nidlist +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xcd38904c cfs_wi_exit +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xce1a88f2 libcfs_arch_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xced1fed2 cfs_hash_rehash +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xcf61bacb __cfs_fail_check_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xcf90528c cfs_cpt_table_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xd1319447 cfs_cpt_nodemask +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xd13befa9 cfs_percpt_lock_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xd3965252 cfs_hash_del_key +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xd5396536 cfs_cpt_set_node +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xd66d427e cfs_hash_dual_bd_lookup_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xd6a52be3 libcfs_printk +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xd96f406d cfs_cap_raise +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xdce448d0 cfs_cpt_set_cpumask +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xde17bb8d libcfs_isknown_lnd +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xde83075f libcfs_kvzalloc_cpt +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xdf2789c0 cfs_curproc_cap_pack +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xdf675bc7 cfs_hash_add_unique +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xe262a6e2 cfs_timer_is_armed +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xe2f91ce3 libcfs_debug_msg +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xe3bf6897 cfs_percpt_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xe45b62ff cfs_cpt_current +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xe4c7a975 libcfs_kkuc_msg_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xe6d83cf8 cfs_hash_bd_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xe7b54314 libcfs_arch_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xec1f56d5 libcfs_str2nid +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xeceac781 cfs_fail_val +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xee92bb75 cfs_percpt_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xf0246bf2 cfs_cpt_table_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xf3565b71 libcfs_debug_vmsg2 +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xf372d1c2 cfs_firststr +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xf440bb38 libcfs_kkuc_group_foreach +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xf782fbe6 cfs_cpt_weight +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xf8a8644b libcfs_id2str +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xf94025d1 libcfs_str2lnd +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xfa0d98ca cfs_cpt_set_cpu +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xfbd3438b cfs_hash_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xfde479b0 cfs_hash_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xfe565fa9 cfs_crypto_hash_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/llite/lustre 0x354bc90e ll_iocontrol_register +EXPORT_SYMBOL drivers/staging/lustre/lustre/llite/lustre 0x46553309 ll_direct_rw_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/llite/lustre 0x7248bc72 ll_stats_ops_tally +EXPORT_SYMBOL drivers/staging/lustre/lustre/llite/lustre 0xcd3cde92 ll_iocontrol_unregister +EXPORT_SYMBOL drivers/staging/lustre/lustre/llite/lustre 0xdabc127d ll_osscapa_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/lov/lov 0x18619efe lov_lsm_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/lov/lov 0x1d3dd556 lov_stripe_unlock +EXPORT_SYMBOL drivers/staging/lustre/lustre/lov/lov 0x1fba9b73 lov_lsm_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/lov/lov 0x35c7e364 lov_device_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/lov/lov 0x466c6625 lov_stripe_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/lov/lov 0xcaf4882c lov_read_and_clear_async_rc +EXPORT_SYMBOL drivers/staging/lustre/lustre/mdc/mdc 0x0df21540 it_set_disposition +EXPORT_SYMBOL drivers/staging/lustre/lustre/mdc/mdc 0x5919b6d6 it_clear_disposition +EXPORT_SYMBOL drivers/staging/lustre/lustre/mdc/mdc 0x5ef8417d it_disposition +EXPORT_SYMBOL drivers/staging/lustre/lustre/mdc/mdc 0xfe26c5a6 it_open_error +EXPORT_SYMBOL drivers/staging/lustre/lustre/mgc/mgc 0xdc287f95 mgc_fsname2resid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0074db70 cl_page_cache_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x00840615 llog_reverse_process +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0153c507 lu_site_stats_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x01665e34 class_parse_net +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x018be05b cl_index +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x02f28103 cl_io_sub_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x03565121 cl_env_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x035852d0 lustre_swab_llog_rec +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x03a14211 class_handle_hash_back +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0429b89e llog_cat_reverse_process +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x048fa8ba llog_init_handle +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0520029e lu_context_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x057f6d4b class_find_old_param +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x05af1920 dt_quota_glb_features +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x05f84e88 LU_BUF_NULL +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0607e393 lprocfs_rd_state +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x06302d8e class_put_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x06669f8e lu_device_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x07aa68bb lustre_swab_lustre_cfg +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x07d45876 obdo_set_parent_fid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x083942ff class_del_profile +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x09e64308 class_unlink_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0a462dad lu_object_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0a575ec7 cl_offset +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0a80cef5 ldebugfs_seq_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0ab898b5 obdo_cpu_to_le +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0ae19017 llog_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0af41046 cl_lock_user_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0b513ee7 obd_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0b6b2feb class_connected_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0c378d79 lustre_swab_llog_hdr +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0ce5894d class_search_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0cf99bff dt_acct_features +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0d5839b4 cl_lock_extransit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0e66c942 lu_context_key_degister +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0e99b3f4 lu_object_unhash +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0ea43898 cl_lock_request +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0f097216 class_import_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0f7b3918 cl_page_disown +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x104a1554 cl_pages_prune +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x111e6630 ldebugfs_add_symlink +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x11495519 lprocfs_write_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x11761025 cl_page_list_own +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1491dc30 lu_context_tags_clear +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1510d841 cl_lock_mutex_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x15dd9b6d cl_lock_closure_build +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x15e4a4fb llog_is_empty +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1610d538 lu_site_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x173d8e0d ldebugfs_remove +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1b194f74 __llog_ctxt_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1c3c4eea cl_page_list_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1cc487c7 capa_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1d7683cd cl_page_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1dc8b8e8 cl_page_lookup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1dd999ab cl_lock_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1ecd1fc6 cl_stack_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1ee853aa dt_try_as_dir +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1ee8cc39 cl_page_own +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1f3dfb0d lprocfs_stats_collect +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1f5f0c69 cl_lock_hold +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1f707534 class_exp2cliimp +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1fc767b4 lu_site_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1ff35e1e cl_conf_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x200e7c1a cl_req_page_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x20437539 cl_object_header_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x208351ce llog_cat_cancel_records +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x20d3c898 llog_cancel_rec +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x21307495 lu_buf_check_and_grow +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x221826f1 class_parse_nid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x23069a58 dt_lookup_dir +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2323ad8b cl_lock_is_intransit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x235f3121 cl_lock_closure_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2462fe1e cl_enqueue_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x24664d70 cl_object_attr_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x252407df lu_kmem_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2547efae lustre_uuid_to_peer +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x25799be4 lu_env_refill +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x259ebac6 obd_alloc_fail +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x25d6a1c2 cl_lock_descr_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2617926f capa_lookup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x26907f99 cl_page_list_del +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x275cdc7a cl_env_reexit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x27ab6a7e lu_device_type_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x27e964fa ldebugfs_add_vars +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x286860f5 class_handle_free_cb +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x297cf5e0 class_handle2object +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2aa82ec5 class_conn2obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2ae1cd79 kuc_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2b17f733 lu_context_exit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2b4c48e9 server_name2svname +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2cc05b71 dt_record_read +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2f3a8de7 cl_object_kill +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x30a4aed3 llog_exist +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3242ed35 obdo_cachep +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3337c84b class_find_client_obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x34042b30 cl_io_submit_rw +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3508e6d0 cl_2queue_init_page +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x35fe6f49 cl_queue_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x369be015 obdo_le_to_cpu +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x36b08b2b cl_io_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x36f24105 llog_process +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x376e6bd1 dt_txn_hook_commit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x379bc5b1 cl_2queue_discard +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x37ed6e4b at_early_margin +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x37fe5c2c dt_declare_version_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3802fba2 llog_cat_add_rec +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x38954eeb cl_page_prep +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x38d23be7 dt_key +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x38fb0c90 class_match_param +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x395c823e lprocfs_rd_atomic +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x39d3bbeb lu_context_key_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3a005065 dt_otable_features +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3c05544d cl_object_find +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3ce4f4fc cl_io_loop +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3d971772 llog_cat_init_and_process +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3e19b0db cl_lock_state_wait +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3e93adcb llog_copy_handler +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3ee8c7c5 cl_page_list_splice +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3f25c782 obd_max_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3fa1468d dt_txn_hook_start +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3ff38a42 lprocfs_rd_server_uuid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4093dff5 lu_context_key_degister_many +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x41e2e066 cl_io_rw_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x41f5a65a md_from_obdo +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x421f03c1 cl_page_make_ready +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x42fc8c9a lu_context_refill +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x43baf900 cl_page_list_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x43eed0af lprocfs_alloc_obd_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4416135b cl_lock_at +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4454d1e4 class_incref +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x449a7646 lu_object_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x463d649a class_new_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x46521d61 cl_page_clip +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x467bce45 cl_io_slice_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x468c961a cl_site_stats_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x474ed5bd lustre_swab_ll_fid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x47756378 cl_io_iter_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x47b35f7d statfs_unpack +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x482d3cb5 capa_cachep +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4833988f dt_record_write +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x494cfb52 lustre_acl_xattr_merge2ext +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x49760a17 cl_page_at +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x49a0f6ea lustre_posix_acl_xattr_2ext +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x49a29223 lprocfs_find_named_value +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4a58e4e4 obdo_from_la +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4abd07de lustre_posix_acl_xattr_filter +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4ac58713 obd_connect_flags2str +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4beeaf10 lustre_register_kill_super_cb +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4d0bb867 lu_dev_add_linkage +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4d13458b kuc_len +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4d2e074c lprocfs_init_ops_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4dd36207 cl_lock_user_del +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4df67356 class_new_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4e3637ed lu_stack_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4e6416aa llog_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4f1adaa0 class_add_conn +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4f4f151a cl_io_lock_alloc_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4fba4346 dt_directory_features +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x50234166 llog_open +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x50c7fc36 ptlrpc_put_connection_superhack +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x50ce3366 cl_page_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5173edad lprocfs_rd_u64 +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x521079a1 cl_page_is_under_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x53f4e80f ldebugfs_add_simple +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x544a5167 la_from_obdo +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x54885f87 ldlm_timeout +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5501adf4 cl_page_gang_lookup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x558bec27 obd_ioctl_getdata +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5627cce8 lprocfs_oh_tally +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x564e9d44 init_capa_hash +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x570d09ae lustre_swab_lu_fid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x57a7238a cl_page_assume +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x57aaff6b llog_sync +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x57cbca59 dt_find_or_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x585c100a dt_txn_hook_stop +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x590aa93c lu_object_invariant +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x59b7f80a cl_locks_prune +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x59e93974 lprocfs_rd_uint +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5a20d896 obd_memory_max +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5a64d92d lprocfs_counter_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5a6ce008 lprocfs_seq_release +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5b25adec class_manual_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5b34069a lu_object_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5b9e10c7 lu_device_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5bc022c5 lprocfs_dt_rd_filestotal +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5bfb621e cl_env_unplant +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5d34ae0d cl_lock_mode_name +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5de01627 lprocfs_counter_sub +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5f720d4f lu_context_key_revive +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5fe97b73 block_debug_check +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6033b908 obdo_cmp_md +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x609b0e1e lprocfs_alloc_md_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x60a830aa cl_2queue_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x60e21e2a cl_io_iter_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x614fd038 obdo_from_md +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x621600f1 cl_site_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x62d73cd1 cl_page_list_unmap +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x62e3e8b8 lprocfs_rd_connect_flags +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x631fd7b9 lustre_ext_acl_xattr_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x65de1817 dt_index_read +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x65fb00dd cl_object_top +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x660efaf5 lu_site_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x665d323d lu_context_key_quiesce +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x66c9a11c dt_object_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6734adbd lprocfs_read_frac_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6758cd69 lustre_register_client_fill_super +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x67b358ab lu_site_init_finish +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6890d175 lustre_get_jobid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6941c52c class_connect +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x698b61fc cl_lvb2attr +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x699bd270 lprocfs_alloc_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x69b0b86b cl_site_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x69c42114 at_min +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x69ffd1a4 cl_type_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6a2f87ce cl_page_discard +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6a8febaf lu_context_key_quiesce_many +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6aa48e1a cl_object_header_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6bb6d421 lu_buf_realloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6bbf9c20 llog_declare_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6c825a2f lu_context_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6d9d1635 cl_io_unlock +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6da6bb0b class_name2obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6e590318 class_conn2cliimp +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6e7becf8 cl_page_size +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6f3e6225 dt_quota_slv_features +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6fa50236 lprocfs_rd_name +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7097c419 lu_object_find_slice +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7285156b cl_sync_io_wait +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x72c0af07 lu_object_find +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x742559b1 class_unregister_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x74348412 cl_lock_closure_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x74435832 lu_object_anon +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x744a4f81 obdo_from_inode +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x744e5f74 cl_wait +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x74526c16 llog_erase +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x747d84de cl_object_has_locks +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x74a7d761 cl_lock_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x74aa95cf lprocfs_init_ldlm_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x752f71a8 class_get_profile +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x756a77f3 class_parse_nid_quiet +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x75a15c98 cl_env_nested_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x75c786a5 cl_page_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x76941b56 cl_io_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x76a1a130 cl_lock_state_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x76fac206 cl_page_find +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x770ab369 cl_req_prep +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x772e6406 llog_backup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x77d2089a class_name2dev +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7802fcd7 lustre_swab_llogd_conn_body +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x781fd49e ldebugfs_register +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x789796a1 obd_zombie_barrier +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7920e583 cl_2queue_disown +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x79a02cbd cl_lock_discard_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7a8d2aef cl_req_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7b420749 llog_cat_declare_add_rec +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7b4fc57b at_max +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7b81e794 obd_export_evict_by_uuid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7bcdada2 class_devices_in_group +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7bd550a6 dump_exports +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7da359f8 lprocfs_wr_uint +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7ed79a43 cl_req_attr_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7edcafa0 cl_env_reenter +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7edf5248 cl_lock_get_trust +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7fe5561a obd_dirty_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x800ba779 cl_lock_unhold +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8031efb8 lprocfs_dt_rd_kbytestotal +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x806cc497 class_add_uuid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x80895035 llog_open_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x809395f1 class_destroy_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x80f671b4 dt_device_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x80fc0ab6 lu_object_header_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x81742d89 obd_ioctl_popdata +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x831f656c class_process_config +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x83bc58db cl_page_completion +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x842225be cl_lock_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8446b9a8 obdo_to_ioobj +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x844c92c6 cl_page_header_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8489f086 obd_alloc_fail_rate +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x849e5385 obd_update_maxusage +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x85030eb9 cl_lock_signal +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x85042ffb class_config_llog_handler +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x85d0aef6 iattr_from_obdo +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x85d40144 obd_memory +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x86ae8a0e lu_device_type_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x87380dcb class_import_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x89d06138 cl_page_slice_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8a805d7c cl_req_slice_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8aa2c358 lprocfs_dt_rd_blksize +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8ac0bbf7 cl_env_implant +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8ae0d4a0 obdo_to_inode +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8ae439a8 class_process_proc_param +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8b0d334e llog_cat_process +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8b2112de class_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8b5f4057 lu_context_tags_update +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8ba6e479 lustre_swab_lu_seq_range +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8bb153c9 cl_env_peek +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8e011584 cl_object_prune +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8e24b6a6 cl_page_unassume +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8e53ea29 dt_read +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8f67314c obd_dump_on_eviction +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8fa77da8 lprocfs_rd_timeouts +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8fe142b5 cl_object_attr_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x909fdcc4 cl_env_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x90c8d327 lprocfs_init_mps_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x90f9523b class_num2obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9154b8e4 cl_enqueue +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x92e58479 obd_dump_on_timeout +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x92f3dc0c lu_context_key_revive_many +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x93b46468 lu_session_tags_clear +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x94677235 lprocfs_clear_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x947cdc09 cl_page_top +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x94a2ed2d cl_lock_nr_mutexed +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9512d507 lustre_acl_xattr_merge2posix +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x952edff4 obd_devs +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x955f5220 ldlm_timeout_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x95735c6c at_extra +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x96a1c86c lprocfs_rd_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x96c9c187 lustre_end_log +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9767adce class_uuid2dev +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x97d03783 at_history +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x98881582 lprocfs_obd_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x98be1938 cl_lock_error +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x99b35f27 _debug_capa +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x99debbc5 class_fail_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9b1ed9d8 obd_jobid_var +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9dbb17b6 lprocfs_dt_rd_kbytesfree +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9e184e36 lu_object_find_at +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9eee64ac lprocfs_free_obd_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9f6bc28b obd_max_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9fbad1c5 cl_env_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa0004166 obdo_refresh_inode +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa0c371ca class_disconnect_exports +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa160da4a lu_object_header_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa22d24c2 cl_page_list_move +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa2dcb23e cl_lock_at_pgoff +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa346e802 cl_io_lock_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa352182e cl_page_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa41db1ed cl_io_prepare_write +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa4335379 cl_sync_io_note +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa437382e lu_context_key_register +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa4c33eac cl_page_delete +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa4fa6315 cl_io_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa53d23e2 cl_io_rw_advance +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa5a5a137 class_detach +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa5fb234f lprocfs_write_frac_u64_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa674c241 kuc_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa72c398d class_uuid2obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa862d221 lprocfs_oh_clear +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa874c85f cl_lock_enclosure +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa877635a cl_page_list_assume +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa8c24725 cl_object_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa9402d51 lu_env_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa985ac46 class_disconnect +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xaa072141 dt_store_open +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xaa21b7a0 lustre_register_quota_process_config +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xaa5c4fa9 cl_lock_enqueue_wait +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xab1f3bee obd_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xab6145b9 cl_object_attr_unlock +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xabf45922 capa_decrypt_id +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xac7f1596 kuc_ptr +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xac967035 dt_object_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xaca1fad7 cl_object_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xada93c57 cl_io_start +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xaefacd60 cl_lock_ext_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xaf11e4bc llog_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xaf242b94 dt_version_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb01963a6 class_uuid_unparse +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb09b9e08 cl_lock_mutex_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb0d6a74b llog_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb1454a18 cl_io_submit_sync +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb15a39ad class_export_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb1b89b6d class_attach +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb1fbf714 cl_page_unmap +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb2d6d424 cl_lock_hold_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb33cf42c lu_object_put_nocache +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb35519ed lustre_swab_cfg_marker +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb41998cd lustre_cfg_rename +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb4f8ee63 lprocfs_read_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb53bd51c cl_page_list_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb5c61ca3 lu_object_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb6ba5dd5 kuc_ispayload +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb743ec6a dt_mode_to_dft +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb9dfa513 class_handle_unhash +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xba0ad8bc lprocfs_at_hist_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xba985283 lustre_register_client_process_config +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbacac922 lprocfs_write_frac_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbb7792dc lu_context_key_register_many +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbc017108 cl_use_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbc05a273 lu_object_assign_fid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbc436a0d obdo_cpy_md +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbc527882 cl_page_is_owned +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbcb98aed cl_io_commit_write +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbcc9b1f2 llog_thread_key +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbcfc1078 dt_txn_callback_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbd0f1fdb lu_object_header_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbec7d698 cl_req_completion +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbf7c65c6 lu_object_locate +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbf9e695e lprocfs_oh_tally_log2 +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbfbd25b9 cl_2queue_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc0328cfa lustre_process_log +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc0511394 obd_exports_barrier +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc063cd80 class_get_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc0bf7ef2 obd_debug_peer_on_timeout +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc12bc4be cl_io_top +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc1a8f221 cl_lock_disclosure +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc1b9a319 lprocfs_oh_sum +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc21e562b cl_wait_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc3c3f69c cl_lock_release +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc5bed6db llog_declare_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc61afed1 class_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc6354c4b dt_index_walk +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc735acbd cl_2queue_assume +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc9b3c667 dt_lfsck_features +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xca2c0b8e cl_lock_modify +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xca8ef574 cl_lock_slice_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcab06c2a llog_declare_write_rec +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcae4bbd9 cl_page_list_disown +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcb0ab67f obd_max_dirty_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcb24c3f6 cl_page_find_sub +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcb59e7c9 cl_io_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcbb97342 cl_env_nested_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcd3b2ae0 llog_cat_process_or_fork +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcd4611aa llog_process_or_fork +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcd5a8c86 cl_lock_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcd7537ee get_devices_count +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcd8a604e lu_buf_check_and_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcfb4a25e class_config_dump_llog +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd0103eae cl_sync_io_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd0835a3d lprocfs_rd_conn_uuid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd08827c0 server_name2fsname +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd0b6995d lu_buf_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd10aa042 lustre_swab_llog_id +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd1781417 lustre_common_put_super +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd20d86ce capa_cpy +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd2d88e30 cl_object_attr_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd2ebd997 lprocfs_single_release +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd2fc5c86 llog_write_rec +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd3ac5758 lu_object_add_top +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd3d385e3 cl_lock_weigh +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd54ed491 lu_env_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd62e0b42 class_config_parse_llog +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd70fe669 lustre_swab_llogd_body +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd7bc8654 obd_timeout +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd7bfbc9c lprocfs_dt_rd_filesfree +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd7f7b340 cl_lock_mode_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd817ac8f cl_unuse_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd82a6130 dt_txn_callback_del +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd86d3f3a cl_lock_is_mutexed +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd93c02e3 cl_page_vmpage +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd94212be lprocfs_counter_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xda3866b4 cl_page_own_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xda39ce2d class_disconnect_stale_exports +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xda40edaf lu_site_purge +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xda51c3e9 lprocfs_wr_atomic +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xda5b1ced class_find_param +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdac644c8 lustre_posix_acl_xattr_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdb13dce1 capa_list +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdcc40af0 class_check_uuid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdcf5c1f8 class_register_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdcfd703e ldebugfs_obd_seq_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xddd20b54 class_handle_hash +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xde3f5583 cl_page_flush +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xde7d985b obd_dirty_transit_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdf1ffb10 cl_io_is_going +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdf47af28 lprocfs_exp_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdf623799 lprocfs_stats_alloc_one +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdfdc1688 cl_io_end +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe028cf84 capa_encrypt_id +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe04eaeba lprocfs_seq_read_frac_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe29a7df4 cl_attr2lvb +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe2eb4470 class_get_next_param +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe5474e42 llog_cat_close +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe583b23b lu_kmem_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe60c54e1 lu_device_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe6c1d636 llog_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe6d791eb dt_store_resolve +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe6ea1e12 cl_io_read_page +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe72fcbb6 cl_lock_delete +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe7d83236 cleanup_capa_hash +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe828b653 cl_req_page_done +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe84670c4 class_decref +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe8e84c32 class_match_nid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe91d8eeb llog_write +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe92ea514 class_conn2export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe97b5f48 class_export_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe9f62095 lu_context_enter +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xea9084d2 cl_page_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xeafc5ced lprocfs_free_md_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xec7d6b85 obd_timeout_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xed1e4559 cl_lock_descr_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xed326033 class_exp2obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xedb2eb0b ldebugfs_register_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xede514d2 cl_lock_hold_release +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xedef9f10 lprocfs_obd_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xee68bc29 lu_session_tags_update +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xeea64b93 lprocfs_obd_rd_max_pages_per_rpc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xeed55b35 lu_cdebug_printer +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xeeeb79fa do_lcfg +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xef76f858 block_debug_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xeffe7f6c lu_dev_del_linkage +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf0075515 dump_lniobuf +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf014cd0e cl_page_list_discard +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf01e2527 server_name2index +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf1b7dfaf cl_unuse +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf1ed0f76 lu_env_refill_by_tags +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf2fc7b74 cl_page_is_vmlocked +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf2fd6695 statfs_pack +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf31b7ad2 lu_object_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf3817da1 lu_device_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf410f6b3 obd_export_evict_by_nid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf42532e9 dt_device_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf45b656b llog_close +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf490d5f9 class_del_profiles +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf595bdbc obdo_from_iattr +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf60d4659 capa_count +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf6f0d0ed dt_locate_at +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf7020831 lprocfs_dt_rd_kbytesavail +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf72f9467 cl_vmpage_page +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf7f42641 lprocfs_free_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf8505034 obd_export_nid2str +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf95b7423 llog_cat_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf9fbe424 cl_object_glimpse +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfa12c44d cl_2queue_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfa813d06 capa_hmac +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfafc979d dt_version_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfbc9eb11 cl_lock_intransit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfbe5601c capa_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfbea0098 lu_types_stop +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfc6ff247 cl_lock_mutex_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfc7f18d0 obd_pages_max +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfd68d17a class_notify_sptlrpc_conf +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfd8f5cf4 lu_buf_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfdbe1557 lprocfs_write_u64_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xff18fd80 cl_lock_peek +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xff57e92d class_match_net +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfffc1f11 lustre_swab_ost_id +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x00cb99c1 RQF_LDLM_INTENT_GETXATTR +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x00d95039 ptlrpcd_decref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x00ec133f ptlrpcd_add_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x01d6ef7f ldlm_pools_recalc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x01fe5aaf ldlm_replay_locks +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0240cd3f ptlrpc_free_rq_pool +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0385d124 ptlrpc_send_error +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x03d36373 _ldlm_lock_debug +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x048b59d5 lustre_msg_set_handle +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0515f93b RQF_FLD_QUERY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x06363e3c ldlm_namespace_dump +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x06b3942b lustre_swab_lov_user_md_objects +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x071fc74a RQF_LDLM_ENQUEUE_LVB +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x07605c7d interval_find +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x08bb2d27 lustre_swab_obd_ioobj +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x08cfc334 ldlm_prep_elc_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x095587d0 lustre_msg_buflen +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0a3130b0 RMF_MDT_EPOCH +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0ac252b2 lustre_msg_set_jobid +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0ac54708 lustre_errno_hton +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0b00e50b ldlm_extent_shift_kms +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0bcacb5d RMF_MDS_HSM_USER_ITEM +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0c2d9c43 lustre_swab_lip_header +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0cf343dd RQF_LDLM_INTENT_BASIC +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0f8541cb ptlrpc_lprocfs_unregister_obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0fbd0f2a ldlm_cli_enqueue_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x10f18f20 interval_iterate_reverse +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x115017f6 req_layout_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x12b6f5a3 ptlrpc_connection_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x131f7abd ldlm_cli_enqueue_local +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x14708afc lustre_swab_mdt_rec_reint +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1483eca4 ldlm_lock_addref_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x14d192db lustre_msg_size +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x14d86331 ldlm_pool_set_limit +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x15a3e4db RMF_GETINFO_VAL +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x15abfab3 lustre_pack_reply_flags +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x15dd480c sptlrpc_sec_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x172fb86d lustre_msg_hdr_size +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1747d8b3 ldlm_lockname +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x17950f60 RQF_SEC_CTX +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x19108a0f RQF_OST_DISCONNECT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x196e4f16 lprocfs_rd_pinger_recov +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x198765a0 ldlm_completion_ast +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x19c08934 RQF_LDLM_INTENT_CREATE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1a6a3ce9 RQF_OST_GET_INFO_LAST_ID +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1a788086 ptlrpc_service_health_check +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1a9b76aa RMF_OBD_QUOTACTL +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1abd3258 RMF_SETINFO_VAL +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1ace4b5f RQF_LDLM_BL_CALLBACK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1ad6c330 RMF_EAVALS +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1bae0270 interval_iterate +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1be21715 lustre_msg_size_v2 +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1c300d8e lustre_msg_get_slv +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1cd775a7 sptlrpc_cli_unwrap_bulk_read +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1d043548 lustre_msg_set_op_flags +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1dc2051d RMF_SEQ_OPC +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1de9c288 lustre_swab_layout_intent +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1df9f7f2 req_capsule_server_sized_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1e8e48a4 sptlrpc_flavor_has_bulk +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1eb2a65f RQF_OST_GETATTR +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1ee46b51 lustre_init_msg_v2 +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1ee9eb3c RQF_MDS_QUOTACTL +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2096f5b5 RQF_OST_SET_GRANT_INFO +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x20d6b82c RQF_LDLM_INTENT_QUOTA +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x218a36ce ldlm_cli_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x219391ec RMF_EAVALS_LENS +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x22e7ca6e ldlm_lock_downgrade +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x22f137ad lprocfs_wr_pinger_recov +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x233790b5 RMF_OST_BODY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x244e5558 lustre_msg_get_version +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x24aafdba RMF_MGS_TARGET_INFO +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2585a629 RMF_SEQ_RANGE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2587513c RQF_LDLM_CP_CALLBACK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x269554ce RQF_LDLM_INTENT_GETATTR +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x26d35e6b ldlm_resource_foreach +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x26f99d16 RQF_MGS_CONFIG_READ +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x272f745e ptlrpc_cleanup_client +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x278fe8ca lock_res_and_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x285e5b99 lustre_msg_set_conn_cnt +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x28f60b0b req_capsule_set_size +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x29e0869a sptlrpc_get_hash_name +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2a3354e1 ptlrpc_at_set_req_timeout +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2a63a472 lustre_swab_ptlrpc_body +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2aa05e86 sptlrpc_target_export_check +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2ba2c623 ptlrpc_set_wait +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2c00c60d ptlrpc_sample_next_xid +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2ca92fa8 ldlm_lock_decref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2ccd5b87 ldlm_cli_cancel_list_local +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2d56f168 ptlrpc_pinger_ir_up +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2d798316 RMF_MGS_CONFIG_RES +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2d8b15a3 sptlrpc_cli_ctx_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2e4562fe RQF_LLOG_ORIGIN_HANDLE_CREATE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2e4ca396 RQF_LDLM_INTENT_UNLINK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2ea933ad ldlm_pool_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2ecd7515 lustre_msg_check_version +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2f0e4f87 RQF_OST_QUOTACTL +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2f793215 lustre_swab_ost_body +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2fab3539 lustre_swab_ost_lvb_v1 +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2fd2f737 lustre_msg_set_limit +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x301d4fcd RQF_MDS_READPAGE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x302937e0 RQF_MDS_CONNECT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x305bb811 ldlm_lock_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3060b9c6 sptlrpc_rule_set_expand +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x315f559b client_disconnect_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x31838cb4 RMF_IDX_INFO +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x320365d0 ldlm_blocking_ast_nocheck +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3261b862 RQF_OST_SYNC +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x32fbc5f4 ptlrpc_lprocfs_brw +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x33bb7761 ldlm_typename +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x33d31afd ldlm_cli_cancel_list +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x354034be ptlrpc_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x357e587f sptlrpc_import_flush_my_ctx +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x35939a3d lustre_swab_fiemap +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x35fb7a7c unlock_res_and_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x364fe253 req_capsule_server_pack +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x36dfc90a ldlm_cli_cancel_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3705397e ldlm_pool_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3835ab4b RQF_LLOG_ORIGIN_CONNECT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3858fb94 RMF_OBD_STATFS +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3878e4b9 sptlrpc_cli_ctx_expire +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x38c01799 RQF_LDLM_CALLBACK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x38fce533 lustre_msg_set_versions +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x39008b96 ptlrpc_set_add_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x393e76f2 ldlm_pool_del +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x39f60a5f RMF_OST_ID +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3a1e4bcb __lustre_unpack_msg +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3aa694cd ptlrpc_prep_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3ab90f6e lustre_msg_bufcount +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3ac00716 lustre_swab_hsm_user_state +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3b5caee0 ldlm_pool_get_slv +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3b6b7cba dump_ioo +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3bedb0c7 RMF_LLOGD_CONN_BODY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3c63e62b RQF_MDS_REINT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3c8b16ab lustre_swab_ost_lvb +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3ca50f33 RQF_MDS_HSM_CT_REGISTER +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3d4f1f56 ldlm_namespace_new +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3d7dc5f9 ldlm_pools_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3dc47695 lustre_msg_get_magic +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3e8e0f41 sptlrpc_target_update_exp_flavor +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3f034caf lustre_msg_get_status +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3f752e78 RQF_MDS_STATFS +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3fb87203 ldlm_blocking_ast +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x401acd02 ptlrpc_req_xid +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x41008cef RQF_LDLM_CANCEL +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x41b03260 ptlrpc_request_addref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x42a585be sptlrpc_cli_unwrap_bulk_write +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x42f5c31f ptlrpc_retain_replayable_request +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x43168488 RQF_MDS_RELEASE_CLOSE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x43705ee4 RQF_LOG_CANCEL +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x43d7efc8 lustre_msg_set_transno +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x44036eda RQF_MDS_GET_INFO +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x440c2a71 RMF_FIEMAP_VAL +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4481591d RQF_OST_SET_INFO_LAST_FID +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x44ab4b8c ptlrpc_unregister_service +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x457b5a64 ptlrpc_unpack_rep_msg +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x45d05893 lustre_swab_lustre_capa +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x45e30cea lustre_swab_ldlm_intent +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x467de012 ldlm_cli_cancel_unused_resource +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x468c719c lustre_pack_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4775e09f ptlrpc_obd_ping +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x47f5e903 RMF_MDS_HSM_REQUEST +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4807b090 sptlrpc_unregister_policy +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x49780d98 ptlrpcd_add_rqset +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x498c03c5 lustre_msg_set_last_xid +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4a5a2416 RMF_DLM_REQ +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4b139889 ldlm_lock_convert +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4d2dbe50 ldlm_destroy_flock_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4d7580d0 lustre_swab_hsm_user_item +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4dc46a34 __ldlm_handle2lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4dfaddc4 ptlrpc_activate_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4e1706e5 lustre_msg_buf +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4e1a78da ptlrpc_prep_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4e696b96 ptlrpcd_queue_work +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4eb03a6f ptlrpcd_destroy_work +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4f766c3b lustre_swab_generic_32s +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4f78771a ptlrpc_request_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x50443f6a ptlrpc_init_client +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x507d06c7 ldlm_cli_cancel_unused +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x50dd74f8 RMF_STRING +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5137d91a req_capsule_init_area +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x513d39c5 ptlrpc_wake_delayed +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x51a6a0d7 ptlrpc_request_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x52c62150 RMF_RCS +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x53411557 RMF_DLM_REP +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x53a4a004 bulk_sec_desc_unpack +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x53f13bb7 req_capsule_filled_sizes +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x54ae5021 ldlm_lock_addref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x55185c35 sptlrpc_sec_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x553b0ff5 lustre_pack_request +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x555eb7fe RQF_MDS_HSM_STATE_SET +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x55b04c95 sptlrpc_cli_ctx_wakeup +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x55c773ea ptlrpc_buf_set_swabbed +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5657812c ldlm_resource_unlink_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x56ba29de client_obd_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5758b349 ptlrpc_replay_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x57f4a7c3 req_capsule_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x588035b4 RMF_UPDATE_REPLY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x58f5473b ptlrpc_lprocfs_register_obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x595ab175 lustre_swab_obd_quotactl +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x596582bf RMF_GETINFO_VALLEN +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5a057439 interval_search +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5af0d02a ldlm_lock_dump_handle +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5b6ba895 lustre_packed_msg_size +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5bb0b131 ptlrpc_connect_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5c6a3a83 RQF_SEQ_QUERY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5ca1b491 lustre_swab_close_data +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5caae213 ptlrpc_next_xid +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5db31f11 ptlrpc_unregister_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5e0b19b1 RMF_CLUUID +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5e2b7558 lustre_msghdr_get_flags +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5e6f435d RQF_OST_BRW_READ +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5e80f899 RQF_LLOG_ORIGIN_HANDLE_READ_HEADER +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5ec3284d RQF_MDS_HSM_CT_UNREGISTER +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5ef3838a sptlrpc_gc_add_sec +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5ef831ee lustre_msg_get_handle +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5f4b98b9 ptlrpc_init_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5f96ccdd ptlrpc_connection_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5fb7bcb5 ldlm_namespace_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5fc9a455 RMF_CLOSE_DATA +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5fccd876 req_capsule_other_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5ffae9da ptlrpcd_alloc_work +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6042bc15 RQF_MDS_REINT_RENAME +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x604e2505 RMF_SWAP_LAYOUTS +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x607ec932 lustre_msg_set_buflen +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x60cd26ad RQF_MDS_REINT_CREATE_SYM +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x610d4c24 sptlrpc_enc_pool_put_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x611712bc client_destroy_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x61174306 ptlrpc_disconnect_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x61646e1b RQF_MDS_SWAP_LAYOUTS +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x618ad203 RQF_OST_GET_INFO_LAST_FID +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x61f49631 sptlrpc_req_replace_dead_ctx +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x62aaae3f RQF_MDS_HSM_REQUEST +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x62ff6c76 req_capsule_server_sized_swab_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6315dd4c RMF_LLOGD_BODY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6352a62d ldlm_get_ref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x647b6e48 lustre_swab_ldlm_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6480a258 ldlm_lock_fail_match_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x649b693f ldlm_reprocess_all_ns +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x653723dc RMF_LOGCOOKIES +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x685eeaba RMF_DLM_GL_DESC +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x68cb2541 interval_is_overlapped +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x68f49e5e ptlrpc_expired_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6912990a RQF_OST_QUOTACHECK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x69269635 sptlrpc_gc_del_sec +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x696ba811 lustre_msg_get_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x69c9f04d RQF_MDS_REINT_LINK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6a3785c9 RMF_EADATA +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6b4d3a7e ldlm_pool_get_limit +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6bb8d700 req_capsule_extend +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6bc500ef ldlm_cli_update_pool +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6c1e9621 ldlm_get_enq_timeout +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6c57bbf6 dump_obdo +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6d72828c sptlrpc_conf_log_update_end +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6d7931cc RQF_UPDATE_OBJ +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6e4f5587 ptlrpc_set_add_cb +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6e7a745a req_capsule_client_sized_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6ed20499 ldlm_revalidate_lock_handle +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6efa82b0 RQF_MGS_TARGET_REG +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6f4f4f7c _debug_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6f6dc736 lustre_swab_mdt_remote_perm +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6fb92092 sptlrpc_flavor2name_bulk +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6fe90b2c ldlm_cancel_resource_local +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x703538e4 lustre_swab_hsm_current_action +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7112e014 req_capsule_server_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x72090ceb ptlrpc_set_add_new_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x723d43b6 sptlrpc_rule_set_dump +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x725a892c RQF_MDS_REINT_OPEN +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x72af58b1 req_capsule_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x744331ad llog_initiator_connect +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x74840056 lustre_msg_set_status +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x757150f6 ptlrpc_pinger_sending_on_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x75a2c40d ldlm_put_ref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x76b728e5 lustre_swab_update_buf +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x770e08c1 req_capsule_get_size +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x77840c82 sptlrpc_rule_set_choose +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x78bf9136 lustre_swab_ldlm_lock_desc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7a06d620 ldlm_pool_get_clv +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7a832f10 RMF_CONN +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7b158da4 lustre_swab_ldlm_request +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7b8222c6 ptlrpc_request_pack +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7bb43c42 req_capsule_shrink +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7bbf8001 RMF_MDT_BODY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7c014731 ldlm_lock_allow_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7c4c6107 RQF_LDLM_CONVERT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7ce37b25 ptlrpc_error +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7d1ecd7f RQF_LDLM_INTENT_LAYOUT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7d41a8b9 RQF_QUOTA_DQACQ +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7d4f073a ptlrpc_invalidate_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7dc0e7cd RMF_QUOTA_BODY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7dfb3c18 lustre_msg_clear_flags +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7f4925d8 interval_expand +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7f4a7c92 ldlm_namespace_foreach +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7f4c99b1 ldlm_expired_completion_wait +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7f5a1cc7 lustre_msg_set_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7f6d2357 lustre_msg_is_v1 +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7fbdba38 ldlm_cli_enqueue +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x80a9e8c3 lustre_msg_get_last_xid +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x80caad5d ldlm_resource_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x80ecb4e3 RMF_MDS_HSM_CURRENT_ACTION +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x817d7f1f lustre_msg_add_flags +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x826d3c4f RQF_LDLM_GL_CALLBACK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x83067062 target_send_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x837efb00 RMF_NAME +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x84720ed9 ptlrpc_hpreq_handler +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x85135801 RMF_DLM_LVB +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x85a9e0d8 RMF_FID +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x85cb89de ldlm_lock_fail_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x85eecf67 sptlrpc_get_hash_alg +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x863db6eb RMF_HSM_USER_STATE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x86a8eb3b ptlrpc_start_threads +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x86fa8c3b ldlm_cli_convert +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8760beaf lustre_swab_ldlm_policy_data +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x876c2551 RMF_GETINFO_KEY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x87acf5d6 ptlrpc_save_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x87bf7b3c sptlrpc_get_next_secid +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8810f7f4 sec2target_str +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x886e44a4 ldlm_pool_set_clv +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8872f3d2 RMF_SETINFO_KEY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x88a5739b ldlm_lock2desc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x88fff52d RMF_CAPA2 +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x890284aa ptlrpc_restart_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x89ec9a94 ptlrpc_prep_fcset +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x89f9edf7 RQF_MDS_REINT_SETXATTR +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8a1ea476 lustre_swab_hsm_state_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8a257736 RQF_MDS_HSM_STATE_GET +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8ac440fa ptlrpc_uuid_to_connection +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8b854254 lustre_swab_mgs_config_res +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8cb71d4b RQF_MDS_REINT_CREATE_SLAVE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8d77ea75 lustre_msg_set_flags +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8da3fca7 lustre_msg_add_version +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8e12f898 ptlrpc_send_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8e9abe4d RMF_GENERIC_DATA +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8f0aceac RQF_MDS_HSM_ACTION +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8fec0451 lustre_msg_get_limit +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9079e806 ptlrpc_nrs_policy_unregister +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x90dc3112 client_obd_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x919c4ce3 RMF_OBD_ID +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x91cf58d3 RQF_MDS_PIN +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9228392f lustre_swab_mdt_body +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x937b1ee0 lustre_swab_mdt_ioepoch +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x93fc2b36 ldlm_destroy_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9407ef93 ptlrpc_request_committed +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9553c633 RQF_LDLM_INTENT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x95d08f0c lustre_swab_mgs_target_info +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9660ace0 RMF_FLD_MDFLD +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x967bfd52 RQF_OBD_PING +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9684c6ec ptlrpc_mark_interrupted +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x969279ca ldlm_init_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9798f2f1 RQF_MDS_GETATTR +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x980173ef lustre_free_reply_state +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x980fcfdc ptlrpc_connection_addref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9999cf7a dump_ost_body +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x99fdc16c ptl_send_rpc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9a258886 RQF_MDS_GETSTATUS +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9a6f2f6d lustre_msg_set_opc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9ad72656 ldlm_register_intent +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9b88f6ce RMF_NIOBUF_REMOTE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9bb5198b RQF_MDS_CLOSE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9d7611e7 ptlrpc_req_set_repsize +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9d7ea314 sptlrpc_pack_user_desc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9e776e92 ldlm_lock2handle +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9fb088f1 lustre_swab_lov_mds_md +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa10f0d3d RMF_UPDATE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa163f4c3 dump_rniobuf +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa2244636 RQF_MDS_GETATTR_NAME +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa22c0086 ldlm_error2errno +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa3a5cdb8 client_import_find_conn +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa3d2a6ee RMF_CAPA1 +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa471a976 req_capsule_field_present +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa47787ef RMF_PTLRPC_BODY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa4a2d089 RQF_OST_PUNCH +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa4bea5ef lustre_swab_lmv_user_md +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa5458dad ldlm_lock_decref_and_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa5880075 ldlm_errno2error +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa5c9d4a7 ptlrpc_reconnect_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa62b572e ptlrpc_recover_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa68f5a08 ldlm_pool_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa6a5cb5b sptlrpc_cli_ctx_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa6c436ca RQF_MDS_WRITEPAGE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa7d55cc3 RQF_MDS_REINT_CREATE_RMT_ACL +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa7e360b1 RMF_OBD_IOOBJ +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa7ec567d RMF_CONNECT_DATA +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa8e4b472 ldlm_pool_set_slv +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa943d2bb sptlrpc_svc_ctx_invalidate +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa9704f80 lustre_msg_get_last_committed +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa99bc9a1 client_import_add_conn +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa9c4658e lustre_swab_lov_user_md_v3 +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa9edf09d RQF_OBD_IDX_READ +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xaa153b7c __ptlrpc_prep_bulk_page +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xacd6a7d7 lustre_swab_ost_last_id +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xad307994 ldlm_flock_completion_ast +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xaddc3979 lustre_swab_lustre_capa_key +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xadfa5817 ptlrpc_request_alloc_pool +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xae02f5bc ptlrpc_nrs_policy_register +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xae074c33 client_import_del_conn +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xae9de7f4 ptlrpc_add_timeout_client +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xaee59d57 target_print_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xaf4e9658 RQF_MDS_SYNC +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xaf50a0d6 RMF_HSM_STATE_SET +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb0751fa4 RQF_LLOG_ORIGIN_HANDLE_DESTROY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb080dd47 ptlrpc_schedule_difficult_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb09cb942 ldlm_init_flock_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb0b6248e ldlm_lock_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb1b43d8a dump_rcs +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb27c2374 lustre_msg_get_jobid +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb291473d lustre_msg_early_size +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb337d9dd ptlrpc_commit_replies +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb3440106 sptlrpc_get_bulk_checksum +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb4a7ecf3 lustre_msg_add_op_flags +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb4dbd6e9 sptlrpc_cli_wrap_bulk +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb512ebc2 sptlrpc_parse_flavor +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb61cb95a RQF_MDS_GETXATTR +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb68476df interval_erase +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb6aafd03 RQF_MDS_DONE_WRITING +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb73e735d req_capsule_client_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb7b38189 RMF_MDT_MD +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb7fa3cc8 RMF_LLOG_LOG_HDR +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb903634e RQF_OST_CONNECT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb9b631cf lustre_swab_mgs_config_body +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xba09d87a ldlm_lock_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbaa76097 lustre_msg_string +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbb941ea8 ldlm_namespace_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbc1370dc lustre_shrink_msg +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbcbd6d12 lprocfs_wr_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbd210677 ldlm_pool_get_lvf +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbd83bc44 RQF_OBD_SET_INFO +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbd8c8bed ldlm_namespace_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbdb803ac ldlm_prep_enqueue_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbe47bc7e ping_evictor_start +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbeb7e023 ptlrpc_set_next_timeout +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbed1eb4b client_connect_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbef769cc RQF_CONNECT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbf98b86f RQF_MDS_QUOTACHECK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbfc6d262 sptlrpc_sec_destroy +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbfc78046 ptlrpc_prep_req_pool +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbffd4313 RQF_OST_BRW_WRITE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc06c4670 lustre_msg_get_versions +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc0867da7 RMF_REC_REINT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc08ae71e ptlrpc_pinger_del_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc0a99fbf ptlrpc_register_bulk +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc0cdf55e RMF_MGS_SEND_PARAM +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc2986d28 lustre_swab_ldlm_res_id +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc2b1af57 RQF_MGS_SET_INFO +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc2be922a RMF_SYMTGT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc303e0af ldlm_resource_putref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc313b0bb req_capsule_server_swab_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc559a634 RMF_LAYOUT_INTENT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc5ba6a8f llog_client_ops +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc60a60e1 RQF_OST_STATFS +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc6869b4d ptlrpc_check_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc694be4b RQF_LLOG_ORIGIN_HANDLE_PREV_BLOCK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc763fabc sptlrpc_process_config +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc79b9c67 ldlm_pools_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc7ca8257 RQF_MDS_REINT_SETATTR +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc7e47564 ptlrpc_interrupted_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc8f586a9 ptlrpc_connection_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xca5a81ec ptlrpc_pinger_ir_down +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xcb2cc0cf lustre_swab_lquota_lvb +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xcb2ceaff sptlrpc_secflags2str +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xce1a689b sptlrpc_enc_pool_add_user +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xce86066d lustre_msg_set_slv +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xcec513c9 RQF_MDS_UNPIN +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xced015be sptlrpc_rule_set_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xcf487204 req_capsule_server_dump +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xcf5efb27 ptlrpc_unregister_bulk +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xcf849e4b ptlrpc_pinger_add_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xcf8d8d11 ptlrpc_resend +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xcf9963db lustre_msg_get_op_flags +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xcf9aab6a RQF_MDS_DISCONNECT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd04e2208 ptlrpc_resend_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd17c2743 req_capsule_client_swab_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd19c6cf7 ptlrpc_unpack_req_msg +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd24ff979 ldlm_pool_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd28c2f0d ldlm_pool_shrink +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd2983334 lustre_swab_swap_layouts +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd2e0d4eb lustre_msg_get_opc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd3dae408 ldlm_it2str +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd40182a2 ptlrpc_abort_inflight +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd4334bf4 req_capsule_has_field +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd44960e2 sptlrpc_import_sec_ref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd45eca45 do_set_info_async +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd47e1e14 ptlrpcd_wake +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd54d7457 sptlrpc_lprocfs_cliobd_attach +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd55990ae ptlrpc_queue_wait +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd5caab74 ldlm_lock_change_resource +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd67a5d7b lustre_swab_update_reply_buf +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd69e0a27 RQF_MDS_IS_SUBDIR +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd6c3ebfb RMF_FIEMAP_KEY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd7910326 lustre_swab_obd_statfs +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd8826660 ldlm_glimpse_ast +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd8b91b3e lustre_swab_lov_desc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd8f06300 RQF_MDS_HSM_PROGRESS +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd9253212 lustre_pack_reply_v2 +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd9561861 RQF_LDLM_INTENT_OPEN +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd9da2874 sptlrpc_cli_enlarge_reqbuf +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xda219abc target_pack_pool_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xda98d0b6 req_capsule_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xdad9d7d5 sptlrpc_conf_client_adapt +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xdb1fb0a2 RQF_MDS_REINT_CREATE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xdb671f0e __ptlrpc_free_bulk +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xdb9d5a6a lustre_swab_niobuf_remote +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xdd0ffb04 sptlrpc_flavor2name +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xdd30d7bf RMF_ACL +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xddc40a85 lustre_msg_get_flags +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xde12d36b RMF_MDS_HSM_ARCHIVE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xde555d70 sptlrpc_enc_pool_del_user +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xdee87192 sptlrpc_conf_log_update_begin +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xdf701ae7 lustre_swab_fid2path +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xdfefc097 ptlrpc_deactivate_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe0832736 ptlrpc_init_rq_pool +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe0cc694c RQF_LLOG_ORIGIN_HANDLE_NEXT_BLOCK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe241a235 ldlm_lock_allow_match_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe257f4b5 sptlrpc_register_policy +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe40e0a50 lustre_msg_get_transno +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe431bb6f ldlm_namespace_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe43377f7 req_capsule_server_grow +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe57bd972 sptlrpc_current_user_desc_size +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe5e8169b lustre_errno_ntoh +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe643998e RQF_OST_SETATTR +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe6f0dc96 RQF_OST_CREATE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe7062b5f RMF_U32 +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe7512278 ptlrpcd_addref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe7c90206 ptlrpc_request_bufs_pack +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe81962d0 sptlrpc_gc_add_ctx +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe828246f ldlm_completion_ast_async +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe85b6da3 lustre_swab_obdo +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe895a700 ptlrpc_req_finished +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe9c2846f sptlrpc_import_flush_all_ctx +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xeabac4fc sptlrpc_rule_set_merge +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xebb64e68 req_layout_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xec226f66 ping_evictor_stop +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xec939a00 RQF_MDS_REINT_UNLINK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xecace5c1 RQF_OST_GET_INFO_GENERIC +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xed1c10d6 ptlrpc_connection_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xedcb740d sptlrpc_name2flavor_base +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xee29ec4e ldlm_enqueue_pack +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xee3bfb4f sptlrpc_enc_pool_get_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xef1121fa ptlrpc_cleanup_imp +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xef1aeca9 RMF_FLD_OPC +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xef8d8511 lprocfs_wr_ping +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xefa5f904 ptlrpc_request_alloc_pack +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf0241d6e lustre_swab_hsm_progress_kernel +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf0d52b5f ptlrpc_pinger_suppress_pings +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf1300275 _sptlrpc_enlarge_msg_inplace +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf189cdf0 ptlrpc_register_service +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf19422f7 ptlrpc_fail_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf26985d4 ptlrpc_buf_need_swab +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf277c125 RQF_OST_GET_INFO_FIEMAP +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf27d49dc sptlrpc_target_choose_flavor +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf2c7f793 ptlrpc_set_destroy +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf35f132b lustre_swab_ldlm_resource_desc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf3d44370 RQF_OST_DESTROY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf43540b9 lustre_swab_mgs_nidtbl_entry +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf45085e1 sptlrpc_conf_log_stop +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf4e0e1bc lprocfs_wr_evict_client +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf55c033b RMF_MGS_CONFIG_BODY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf584a16b sptlrpc_part2name +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf596e9ae sptlrpc_conf_log_start +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf5ca4552 ptlrpc_req_finished_with_imp_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf607fc23 sptlrpc_flavor2name_base +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf617ab8a lustre_msg_get_conn_cnt +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf697b756 ldlm_dump_all_namespaces +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf7408f84 lustre_swab_hsm_request +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf74a1c46 ldlm_resource_iterate +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf7ba40c0 RMF_MDS_HSM_PROGRESS +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf7f95828 sptlrpc_target_sec_part +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf85cb27e sptlrpc_parse_rule +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf8619784 ptlrpc_stop_all_threads +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf870fed9 RQF_LDLM_GL_DESC_CALLBACK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf9051bd6 RQF_QC_CALLBACK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf94e41e0 deuuidify +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf973aa93 lustre_swab_lov_user_md_v1 +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf9ee11e2 lustre_msg_set_last_committed +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf9f72dfc RMF_TGTUUID +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xfa51688d interval_insert +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xfa990c81 ptlrpc_prep_bulk_imp +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xfb3b48ea ptlrpc_set_import_active +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xfbca5006 ldlm_lock_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xfc186744 ptlrpc_add_rqs_to_pool +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xfc2fa83f ptlrpc_del_timeout_client +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xfc8b8d3a ptlrpc_request_set_replen +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xfd148bf8 RMF_LDLM_INTENT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xfe0b303d req_capsule_client_dump +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xff02a0e9 ldlm_lock_set_data +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xffc807e8 sptlrpc_unpack_user_desc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xffe29c3f RQF_LDLM_ENQUEUE +EXPORT_SYMBOL drivers/staging/media/cxd2099/cxd2099 0x74101ea4 cxd2099_attach +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x05c62622 rtllib_wx_set_auth +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x069c7d21 rtllib_wx_get_name +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x0ae90c40 rtllib_ps_tx_ack +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x11f4fe12 rtllib_wx_set_scan +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x14b3b5d8 rtllib_act_scanning +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x158d1771 rtllib_wx_get_encode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x1a88bb56 rtllib_wx_get_scan +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x257c8955 rtllib_wx_get_rate +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x2cf1057d rtllib_rx +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x2e00cc11 rtllib_wx_set_rate +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x2eabfb1d alloc_rtllib +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x2ffbe0a4 RemovePeerTS +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x356a6ddf rtllib_legal_channel +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x38eb731a rtllib_softmac_stop_protocol +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x4471fbd4 rtllib_wx_set_rawtx +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x4afb6202 rtllib_EnableIntelPromiscuousMode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x4f3b61db rtllib_stop_scan +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x51cef221 notify_wx_assoc_event +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x5f9c01f9 rtllib_wx_get_rts +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x636fcbeb rtllib_wx_set_encode_ext +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x719d6eea rtllib_wx_get_wap +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x834908e5 rtllib_wx_set_gen_ie +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x84688203 rtllib_start_scan_syncro +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x872e2313 rtllib_wx_set_encode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x8ce3ed59 rtllib_wx_get_power +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x9b43ad53 Dot11d_Channelmap +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x9b8868a4 rtllib_wx_set_essid +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x9c63549d rtllib_reset_queue +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xa036d84a rtllib_wx_set_mode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xa57ae826 dot11d_init +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xab4a9d0e rtllib_wx_get_mode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xab52e913 rtllib_wx_set_mlme +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xb063b78f free_rtllib +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xb1def3f6 rtllib_wx_get_freq +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xb6735d18 rtllib_get_beacon +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xbaa2b6b2 rtllib_wx_set_freq +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xbd81fac8 rtllib_xmit +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xbe1420f2 rt_global_debug_component +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xc68e7e1c rtllib_start_send_beacons +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xc92b3234 rtllib_softmac_start_protocol +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xcb682133 HT_update_self_and_peer_setting +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xd6070b25 rtllib_wx_set_wap +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xdb39e070 rtllib_MgntDisconnect +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xdd07ae6a rtllib_wpa_supplicant_ioctl +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xdf153add rtllib_DisableIntelPromiscuousMode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xdf78f620 rtllib_wlan_frequencies +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xe64fa14a rtllib_stop_scan_syncro +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xea329168 rtllib_wx_get_essid +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xebbff3f6 rtllib_sta_ps_send_null_frame +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xee1a2b25 rtllib_stop_send_beacons +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xf8066436 rtllib_wx_set_rts +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xfd591495 rtllib_wx_set_power +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x017b925f ieee80211_wx_get_encode_ext_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x041ee992 ieee80211_is_shortslot_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x10e5b083 ieee80211_wx_set_mode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x17b6ca4b ieee80211_wx_get_freq_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x1ae99635 ieee80211_rx_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x2491ee96 ieee80211_ps_tx_ack_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x28be2ffa ieee80211_reset_queue_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x2f7698dc ieee80211_rx_mgt_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x315cb8e6 ieee80211_wx_set_power_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x34200483 ieee80211_wx_set_encode_ext_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x36cb793c ieee80211_softmac_stop_protocol_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x3c11c502 ieee80211_wx_get_essid_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x3d46e058 ieee80211_wx_set_rawtx_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x41c81433 ieee80211_wake_queue_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x449ec650 ieee80211_wx_get_encode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x4edbf58c Dot11d_UpdateCountryIe +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x4ff0a4b4 ieee80211_softmac_scan_syncro_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x56769b5e notify_wx_assoc_event_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x5876a74a ieee80211_wx_get_mode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x5879d41d SendDisassociation_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x5ac42f9a ieee80211_stop_send_beacons_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x5e55c621 HTUpdateSelfAndPeerSetting +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x5f25dd82 ieee80211_wx_set_freq_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x6bbb0c2d ieee80211_wx_set_auth_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x711f7e25 ieee80211_wpa_supplicant_ioctl_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x7de4f59e ieee80211_wx_set_gen_ie_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x83482fcf ieee80211_wx_get_rate_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x8c55d39f ieee80211_wx_get_wap_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x91a27321 ieee80211_wx_get_rts_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x924554b4 ieee80211_softmac_xmit_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x92eb854c ieee80211_wx_set_mlme_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x94145d62 ieee80211_stop_scan_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xa771bc35 ieee80211_softmac_start_protocol_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xaaa51704 ieee80211_send_probe_requests_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xab69504a ieee80211_wx_get_name_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xab74d06a Dot11d_Reset +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xad745138 ieee80211_wx_set_wap_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xb083f186 ieee80211_wx_set_rts_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xb7ae33cf ieee80211_disassociate_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xb86da72e ieee80211_wx_get_scan_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xc370a43e ieee80211_wlan_frequencies_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xc974524d ieee80211_get_beacon_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xcbdb3806 ieee80211_wx_set_rate_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xcf482cfb ieee80211_start_scan_syncro_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xcf4c2491 ieee80211_is_54g_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xcff31058 ieee80211_txb_free_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xd131db73 Dot11d_Init +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xd3ac51e5 ieee80211_wx_get_power_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xdd756703 ieee80211_wx_set_encode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xdee12c01 ieee80211_wx_set_essid_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xec13d87b ieee80211_start_send_beacons_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xeff34cce ToLegalChannel +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xf0f33753 ieee80211_stop_queue_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xf0feb0e7 ieee80211_wx_set_scan_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xf27306d7 DOT11D_ScanComplete +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xfc276b8a DOT11D_GetMaxTxPwrInDbm +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xfdf8d149 IsLegalChannel +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x08c0b6a2 iscsit_build_task_mgt_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x0cf4b185 iscsit_build_reject +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x0d68daf4 iscsit_process_text_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x0d80a8ac iscsit_cause_connection_reinstatement +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x1a5defe2 iscsit_find_cmd_from_itt +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x2f2a27f2 iscsit_set_unsoliticed_dataout +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x42947552 iscsit_check_dataout_payload +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x4a8072a2 iscsit_handle_task_mgt_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x6243a968 iscsit_handle_logout_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x8c27c3ab iscsit_process_scsi_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x94fdeae2 iscsit_process_nop_out +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x96713cdf iscsit_build_logout_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x9eccdacb iscsit_build_text_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xa2e6ebfe iscsit_build_nopin_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xa3f30efd iscsit_stop_dataout_timer +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xa49a8e14 iscsit_logout_post_handler +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xa9ea656d iscsit_tmr_post_handler +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xbf538309 iscsit_sequence_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xc0130b1e iscsit_setup_scsi_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xc338f6e5 iscsit_unregister_transport +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xc541eae0 iscsit_release_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xcf8c46b6 iscsit_build_rsp_pdu +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xdbd8bd41 iscsit_increment_maxcmdsn +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xdbdc5d3e iscsit_allocate_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xf7db45a3 iscsit_check_dataout_hdr +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xfac0a23c iscsit_setup_text_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xfd9bb177 iscsit_register_transport +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xfee57f29 iscsit_setup_nop_out +EXPORT_SYMBOL drivers/target/target_core_mod 0x02de3b18 transport_set_vpd_ident +EXPORT_SYMBOL drivers/target/target_core_mod 0x08277410 core_tpg_check_initiator_node_acl +EXPORT_SYMBOL drivers/target/target_core_mod 0x08aa6f9b transport_backend_register +EXPORT_SYMBOL drivers/target/target_core_mod 0x0f465f61 target_unregister_template +EXPORT_SYMBOL drivers/target/target_core_mod 0x1258ca00 target_show_dynamic_sessions +EXPORT_SYMBOL drivers/target/target_core_mod 0x12a6b7dc target_lun_is_rdonly +EXPORT_SYMBOL drivers/target/target_core_mod 0x1d886da2 target_wait_for_sess_cmds +EXPORT_SYMBOL drivers/target/target_core_mod 0x23822d2c transport_register_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x24c3b1b6 passthrough_attrib_attrs +EXPORT_SYMBOL drivers/target/target_core_mod 0x27f3df15 sbc_dif_verify +EXPORT_SYMBOL drivers/target/target_core_mod 0x2ca01c61 target_depend_item +EXPORT_SYMBOL drivers/target/target_core_mod 0x2e2b7867 target_submit_tmr +EXPORT_SYMBOL drivers/target/target_core_mod 0x3013c739 transport_kmap_data_sg +EXPORT_SYMBOL drivers/target/target_core_mod 0x343a0896 transport_init_se_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x35efc714 transport_deregister_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x394d661c transport_send_check_condition_and_sense +EXPORT_SYMBOL drivers/target/target_core_mod 0x3b6ef948 target_sess_cmd_list_set_waiting +EXPORT_SYMBOL drivers/target/target_core_mod 0x3ca697c2 core_tpg_get_initiator_node_acl +EXPORT_SYMBOL drivers/target/target_core_mod 0x4089da13 __transport_register_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x458f1d5b target_nacl_find_deve +EXPORT_SYMBOL drivers/target/target_core_mod 0x4609292d target_setup_cmd_from_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0x4c134ff3 target_execute_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x4c70f105 transport_generic_handle_tmr +EXPORT_SYMBOL drivers/target/target_core_mod 0x4ffd61f6 core_tpg_register +EXPORT_SYMBOL drivers/target/target_core_mod 0x5296df0c sbc_dif_copy_prot +EXPORT_SYMBOL drivers/target/target_core_mod 0x581795cf target_complete_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x5b99b420 target_undepend_item +EXPORT_SYMBOL drivers/target/target_core_mod 0x62dadf9a sbc_get_write_same_sectors +EXPORT_SYMBOL drivers/target/target_core_mod 0x67a6e019 target_register_template +EXPORT_SYMBOL drivers/target/target_core_mod 0x6ecffb5f spc_emulate_evpd_83 +EXPORT_SYMBOL drivers/target/target_core_mod 0x7101d96d core_alua_check_nonop_delay +EXPORT_SYMBOL drivers/target/target_core_mod 0x75c4533e passthrough_parse_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0x7dbada9d transport_set_vpd_ident_type +EXPORT_SYMBOL drivers/target/target_core_mod 0x7e1393de transport_generic_request_failure +EXPORT_SYMBOL drivers/target/target_core_mod 0x819692ac spc_emulate_inquiry_std +EXPORT_SYMBOL drivers/target/target_core_mod 0x85aa880c transport_set_vpd_assoc +EXPORT_SYMBOL drivers/target/target_core_mod 0x893e69bc core_tpg_set_initiator_node_tag +EXPORT_SYMBOL drivers/target/target_core_mod 0x8a4cfc3e transport_init_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x8c4666dd target_put_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x8c562f58 transport_lookup_tmr_lun +EXPORT_SYMBOL drivers/target/target_core_mod 0x90756922 transport_kunmap_data_sg +EXPORT_SYMBOL drivers/target/target_core_mod 0x92409942 core_tpg_set_initiator_node_queue_depth +EXPORT_SYMBOL drivers/target/target_core_mod 0x9566160a transport_free_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x9be9613a sbc_attrib_attrs +EXPORT_SYMBOL drivers/target/target_core_mod 0x9fac2c36 core_tpg_deregister +EXPORT_SYMBOL drivers/target/target_core_mod 0xa2a3ebad sbc_parse_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0xa3647e78 target_submit_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xa4ebeebe target_get_sess_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xa67f4742 transport_generic_new_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xa77fe22f transport_handle_cdb_direct +EXPORT_SYMBOL drivers/target/target_core_mod 0xb3996150 transport_wait_for_tasks +EXPORT_SYMBOL drivers/target/target_core_mod 0xb743ee83 target_put_sess_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xba0d1c19 spc_parse_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0xc0ed8355 transport_init_session_tags +EXPORT_SYMBOL drivers/target/target_core_mod 0xc96532b3 target_submit_cmd_map_sgls +EXPORT_SYMBOL drivers/target/target_core_mod 0xd674ea23 transport_generic_free_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xd871e230 sbc_get_device_type +EXPORT_SYMBOL drivers/target/target_core_mod 0xd8eae2fc spc_emulate_report_luns +EXPORT_SYMBOL drivers/target/target_core_mod 0xda26f4e2 target_get_session +EXPORT_SYMBOL drivers/target/target_core_mod 0xda446a4a transport_check_aborted_status +EXPORT_SYMBOL drivers/target/target_core_mod 0xe77f0663 target_backend_unregister +EXPORT_SYMBOL drivers/target/target_core_mod 0xe9dfb795 transport_deregister_session_configfs +EXPORT_SYMBOL drivers/target/target_core_mod 0xec408edb transport_lookup_cmd_lun +EXPORT_SYMBOL drivers/target/target_core_mod 0xf01621c7 transport_set_vpd_proto_id +EXPORT_SYMBOL drivers/target/target_core_mod 0xfe084ae7 target_complete_cmd_with_length +EXPORT_SYMBOL drivers/target/target_core_mod 0xff273315 transport_alloc_session_tags +EXPORT_SYMBOL drivers/target/target_core_mod 0xffba3edd core_tmr_alloc_req +EXPORT_SYMBOL drivers/usb/class/cdc-wdm 0xcc2ed4c9 usb_cdc_wdm_register +EXPORT_SYMBOL drivers/usb/gadget/function/usb_f_uvc 0x92e9ebac uvc_set_trace_param +EXPORT_SYMBOL drivers/usb/gadget/libcomposite 0x8c26f163 usb_os_desc_prepare_interf_dir +EXPORT_SYMBOL drivers/usb/host/sl811-hcd 0xa30b3655 sl811h_driver +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x141ad24e usb_wwan_ioctl +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x2fec4432 usb_wwan_resume +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x42161691 usb_wwan_tiocmget +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x44832494 usb_wwan_write +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x45161853 usb_wwan_dtr_rts +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x56951a0c usb_wwan_port_remove +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x69d18904 usb_wwan_chars_in_buffer +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x7d38d43d usb_wwan_open +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x883c42d5 usb_wwan_tiocmset +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xb6d0ad31 usb_wwan_suspend +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xbb9f8d56 usb_wwan_write_room +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xf44afa8f usb_wwan_close +EXPORT_SYMBOL drivers/usb/serial/usbserial 0x0149d963 usb_serial_suspend +EXPORT_SYMBOL drivers/usb/serial/usbserial 0x8838efcd usb_serial_resume +EXPORT_SYMBOL drivers/vhost/vringh 0x0fd987f7 vringh_abandon_user +EXPORT_SYMBOL drivers/vhost/vringh 0x14397bb5 vringh_notify_disable_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x2e91ca97 vringh_iov_pull_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x32da6f89 vringh_notify_enable_user +EXPORT_SYMBOL drivers/vhost/vringh 0x367ce26a vringh_iov_push_user +EXPORT_SYMBOL drivers/vhost/vringh 0x39c9d7a5 vringh_complete_multi_user +EXPORT_SYMBOL drivers/vhost/vringh 0x4f384f8b vringh_need_notify_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x58abf4ed vringh_init_user +EXPORT_SYMBOL drivers/vhost/vringh 0x59f824d9 vringh_getdesc_user +EXPORT_SYMBOL drivers/vhost/vringh 0x6432894b vringh_init_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x7bda5e6d vringh_iov_push_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x821e9390 vringh_iov_pull_user +EXPORT_SYMBOL drivers/vhost/vringh 0x8d080d03 vringh_need_notify_user +EXPORT_SYMBOL drivers/vhost/vringh 0x937e412c vringh_getdesc_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x95e62337 vringh_abandon_kern +EXPORT_SYMBOL drivers/vhost/vringh 0xb4b63575 vringh_notify_enable_kern +EXPORT_SYMBOL drivers/vhost/vringh 0xc578f0f7 vringh_complete_user +EXPORT_SYMBOL drivers/vhost/vringh 0xd355e031 vringh_complete_kern +EXPORT_SYMBOL drivers/vhost/vringh 0xd609393d vringh_notify_disable_user +EXPORT_SYMBOL drivers/video/backlight/lcd 0xa2629be3 devm_lcd_device_register +EXPORT_SYMBOL drivers/video/backlight/lcd 0xb4c6e589 lcd_device_register +EXPORT_SYMBOL drivers/video/backlight/lcd 0xdb914dce lcd_device_unregister +EXPORT_SYMBOL drivers/video/backlight/lcd 0xe4c595c2 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 0x46c3451d svga_tilefill +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x4ab38ef2 svga_set_default_crt_regs +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x6e4adb1e svga_check_timings +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x80f24d95 svga_wcrt_multi +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x86a4a8b7 svga_tilecopy +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x8de63fb4 svga_set_timings +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xa71bb8de svga_get_caps +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xadc5aa4d svga_tileblit +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xcd6de2f4 svga_settile +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xd1429fca svga_wseq_multi +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xd22ca511 svga_set_default_atc_regs +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xe21e699d svga_get_tilemax +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xe28d2a49 svga_set_default_gfx_regs +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xef774f5d svga_compute_pll +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xf2db5956 svga_match_format +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xfc47056c svga_tilecursor +EXPORT_SYMBOL drivers/video/fbdev/core/syscopyarea 0x9df62065 sys_copyarea +EXPORT_SYMBOL drivers/video/fbdev/core/sysfillrect 0xc192031e sys_fillrect +EXPORT_SYMBOL drivers/video/fbdev/core/sysimgblt 0xf13872d7 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 0xb39f68d1 cyber2000fb_enable_extregs +EXPORT_SYMBOL drivers/video/fbdev/cyber2000fb 0xd08d41a6 cyber2000fb_attach +EXPORT_SYMBOL drivers/video/fbdev/macmodes 0x233917d1 mac_vmode_to_var +EXPORT_SYMBOL drivers/video/fbdev/macmodes 0x7ccf4069 mac_find_mode +EXPORT_SYMBOL drivers/video/fbdev/macmodes 0xe2304303 mac_map_monitor_sense +EXPORT_SYMBOL drivers/video/fbdev/matrox/g450_pll 0x176cb477 matroxfb_g450_setclk +EXPORT_SYMBOL drivers/video/fbdev/matrox/g450_pll 0xb1a468bb matroxfb_g450_setpll_cond +EXPORT_SYMBOL drivers/video/fbdev/matrox/g450_pll 0xfaca7f8c g450_mnp2f +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_DAC1064 0x1bd8bde3 DAC1064_global_init +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_DAC1064 0x9f905fe9 DAC1064_global_restore +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_DAC1064 0xb9b10409 matrox_G100 +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_DAC1064 0xef15b230 matrox_mystique +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_Ti3026 0xa9f52507 matrox_millennium +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_accel 0x536507cd matrox_cfbX_init +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_base 0x8fa42762 matroxfb_wait_for_sync +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_base 0xb21da50b matroxfb_register_driver +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_base 0xc6963f71 matroxfb_enable_irq +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_base 0xcba8d66e matroxfb_unregister_driver +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_g450 0xddeacc66 matroxfb_g450_shutdown +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_g450 0xe09a5e50 matroxfb_g450_connect +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0x25cf8049 matroxfb_PLL_calcclock +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0x3aadd6e2 matroxfb_DAC_in +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0x8692a4de matroxfb_read_pins +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0xc889e0a2 matroxfb_vgaHWinit +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0xcdc90c64 matroxfb_var2my +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0xe62d2e86 matroxfb_vgaHWrestore +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0xf3e14805 matroxfb_DAC_out +EXPORT_SYMBOL drivers/video/fbdev/mb862xx/mb862xxfb 0x49eac60f mb862xxfb_init_accel +EXPORT_SYMBOL drivers/video/fbdev/sis/sisfb 0x3037658e sis_malloc +EXPORT_SYMBOL drivers/video/fbdev/sis/sisfb 0x454a3cf0 sis_free +EXPORT_SYMBOL drivers/video/vgastate 0x686de290 restore_vga +EXPORT_SYMBOL drivers/video/vgastate 0xe7a2620e save_vga +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0x8c9c8a84 w1_ds2760_read +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0xdb8fd12f w1_ds2760_write +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0xebc87334 w1_ds2760_store_eeprom +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0xff2caa49 w1_ds2760_recall_eeprom +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2780 0x15d0b7e4 w1_ds2780_eeprom_cmd +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2780 0x225f9e29 w1_ds2780_io +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2781 0xc8af2374 w1_ds2781_eeprom_cmd +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2781 0xcbe9e44b w1_ds2781_io +EXPORT_SYMBOL drivers/w1/wire 0x3b0a55d5 w1_add_master_device +EXPORT_SYMBOL drivers/w1/wire 0xc00264fb w1_register_family +EXPORT_SYMBOL drivers/w1/wire 0xcf112aa8 w1_remove_master_device +EXPORT_SYMBOL drivers/w1/wire 0xff659b21 w1_unregister_family +EXPORT_SYMBOL fs/configfs/configfs 0x08a42eff config_group_init +EXPORT_SYMBOL fs/configfs/configfs 0x108ddaff config_item_set_name +EXPORT_SYMBOL fs/configfs/configfs 0x1878479a configfs_register_subsystem +EXPORT_SYMBOL fs/configfs/configfs 0x219d0213 config_item_init_type_name +EXPORT_SYMBOL fs/configfs/configfs 0x3ad0dfdb config_item_get +EXPORT_SYMBOL fs/configfs/configfs 0xac61e209 config_item_put +EXPORT_SYMBOL fs/configfs/configfs 0xb4054067 config_group_init_type_name +EXPORT_SYMBOL fs/configfs/configfs 0xb6c6c188 configfs_unregister_subsystem +EXPORT_SYMBOL fs/configfs/configfs 0xdaaef0ae config_group_find_item +EXPORT_SYMBOL fs/configfs/configfs 0xf09dd6a5 configfs_undepend_item +EXPORT_SYMBOL fs/configfs/configfs 0xf7ab7595 configfs_depend_item +EXPORT_SYMBOL fs/exofs/libore 0x04b6174b ore_truncate +EXPORT_SYMBOL fs/exofs/libore 0x150f64af ore_create +EXPORT_SYMBOL fs/exofs/libore 0x262b0a64 ore_read +EXPORT_SYMBOL fs/exofs/libore 0x28806871 ore_verify_layout +EXPORT_SYMBOL fs/exofs/libore 0x333d0f17 ore_get_io_state +EXPORT_SYMBOL fs/exofs/libore 0x4527e170 ore_calc_stripe_info +EXPORT_SYMBOL fs/exofs/libore 0x53d37912 ore_check_io +EXPORT_SYMBOL fs/exofs/libore 0x9851e67c extract_attr_from_ios +EXPORT_SYMBOL fs/exofs/libore 0xa3d2a634 g_attr_logical_length +EXPORT_SYMBOL fs/exofs/libore 0xc1fb8cc2 ore_write +EXPORT_SYMBOL fs/exofs/libore 0xd01ef1eb ore_remove +EXPORT_SYMBOL fs/exofs/libore 0xd68b2ab4 ore_put_io_state +EXPORT_SYMBOL fs/exofs/libore 0xe4139f70 ore_get_rw_state +EXPORT_SYMBOL fs/fscache/fscache 0x0bbe7f1b fscache_io_error +EXPORT_SYMBOL fs/fscache/fscache 0x0c8bd279 __fscache_read_or_alloc_pages +EXPORT_SYMBOL fs/fscache/fscache 0x0cac6188 fscache_object_init +EXPORT_SYMBOL fs/fscache/fscache 0x0d5ce5a5 __fscache_check_consistency +EXPORT_SYMBOL fs/fscache/fscache 0x0e356947 __fscache_disable_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x1469337d fscache_object_retrying_stale +EXPORT_SYMBOL fs/fscache/fscache 0x18f91aff fscache_mark_pages_cached +EXPORT_SYMBOL fs/fscache/fscache 0x1962cca6 fscache_withdraw_cache +EXPORT_SYMBOL fs/fscache/fscache 0x25631afd fscache_cache_cleared_wq +EXPORT_SYMBOL fs/fscache/fscache 0x35725ea1 __fscache_acquire_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x49156160 __fscache_attr_changed +EXPORT_SYMBOL fs/fscache/fscache 0x4b1f61d6 fscache_object_destroy +EXPORT_SYMBOL fs/fscache/fscache 0x4bc8aabb fscache_mark_page_cached +EXPORT_SYMBOL fs/fscache/fscache 0x66f9357c fscache_object_lookup_negative +EXPORT_SYMBOL fs/fscache/fscache 0x66fe9142 __fscache_register_netfs +EXPORT_SYMBOL fs/fscache/fscache 0x69297749 __fscache_relinquish_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x6b52570b __fscache_unregister_netfs +EXPORT_SYMBOL fs/fscache/fscache 0x74530ecd fscache_op_debug_id +EXPORT_SYMBOL fs/fscache/fscache 0x76de1af1 fscache_fsdef_index +EXPORT_SYMBOL fs/fscache/fscache 0x76ed4005 fscache_put_operation +EXPORT_SYMBOL fs/fscache/fscache 0x7e3c8d1c fscache_operation_init +EXPORT_SYMBOL fs/fscache/fscache 0x85cc7a6e __fscache_write_page +EXPORT_SYMBOL fs/fscache/fscache 0x8aba152f __fscache_read_or_alloc_page +EXPORT_SYMBOL fs/fscache/fscache 0xa068f3de fscache_enqueue_operation +EXPORT_SYMBOL fs/fscache/fscache 0xa090349d __fscache_uncache_page +EXPORT_SYMBOL fs/fscache/fscache 0xb19bebf4 fscache_add_cache +EXPORT_SYMBOL fs/fscache/fscache 0xb209853b __fscache_alloc_page +EXPORT_SYMBOL fs/fscache/fscache 0xb7132757 fscache_check_aux +EXPORT_SYMBOL fs/fscache/fscache 0xbbd44ad9 __fscache_wait_on_page_write +EXPORT_SYMBOL fs/fscache/fscache 0xbc24e69e fscache_obtained_object +EXPORT_SYMBOL fs/fscache/fscache 0xc6d3b01f fscache_object_mark_killed +EXPORT_SYMBOL fs/fscache/fscache 0xc976ece5 __fscache_maybe_release_page +EXPORT_SYMBOL fs/fscache/fscache 0xcee6f9bd __fscache_enable_cookie +EXPORT_SYMBOL fs/fscache/fscache 0xd0f781f4 __fscache_uncache_all_inode_pages +EXPORT_SYMBOL fs/fscache/fscache 0xd241797d __fscache_update_cookie +EXPORT_SYMBOL fs/fscache/fscache 0xd429ffa4 __fscache_check_page_write +EXPORT_SYMBOL fs/fscache/fscache 0xdabd70b0 __fscache_wait_on_invalidate +EXPORT_SYMBOL fs/fscache/fscache 0xe18e0638 fscache_op_complete +EXPORT_SYMBOL fs/fscache/fscache 0xe39b3563 fscache_init_cache +EXPORT_SYMBOL fs/fscache/fscache 0xeaf754ae __fscache_invalidate +EXPORT_SYMBOL fs/fscache/fscache 0xfafad5e4 __fscache_readpages_cancel +EXPORT_SYMBOL fs/ocfs2/cluster/ocfs2_nodemanager 0xbfd7d7a2 o2hb_global_heartbeat_active +EXPORT_SYMBOL fs/quota/quota_tree 0x00390715 qtree_release_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0x39bde299 qtree_write_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0xa7bc79db qtree_delete_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0xdbb02f85 qtree_read_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0xfb16bb60 qtree_entry_unused +EXPORT_SYMBOL lib/cordic 0x434bfd07 cordic_calc_iq +EXPORT_SYMBOL lib/crc-ccitt 0x3771b461 crc_ccitt +EXPORT_SYMBOL lib/crc-ccitt 0x75811312 crc_ccitt_table +EXPORT_SYMBOL lib/crc-itu-t 0xd29b009f crc_itu_t_table +EXPORT_SYMBOL lib/crc-itu-t 0xf5b4a948 crc_itu_t +EXPORT_SYMBOL lib/crc7 0x66213969 crc7_be +EXPORT_SYMBOL lib/crc7 0x7a222007 crc7_be_syndrome_table +EXPORT_SYMBOL lib/crc8 0x41248eaf crc8 +EXPORT_SYMBOL lib/crc8 0xab9ad613 crc8_populate_lsb +EXPORT_SYMBOL lib/crc8 0xd4534d80 crc8_populate_msb +EXPORT_SYMBOL lib/libcrc32c 0x27000b29 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 0x7d28f74a lc_seq_dump_details +EXPORT_SYMBOL lib/lru_cache 0x84e0214b lc_committed +EXPORT_SYMBOL lib/lru_cache 0xad52ca6a lc_seq_printf_stats +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/lz4_compress 0xcbc5d521 lz4_compress +EXPORT_SYMBOL lib/lz4/lz4hc_compress 0x26c3aa22 lz4hc_compress +EXPORT_SYMBOL lib/raid6/raid6_pq 0x0bd662f6 raid6_gfmul +EXPORT_SYMBOL lib/raid6/raid6_pq 0x15fe0cd3 raid6_gfexp +EXPORT_SYMBOL lib/raid6/raid6_pq 0x5ba93f9d raid6_gfinv +EXPORT_SYMBOL lib/raid6/raid6_pq 0xb0d904b7 raid6_empty_zero_page +EXPORT_SYMBOL lib/raid6/raid6_pq 0xce45a6f1 raid6_gfexi +EXPORT_SYMBOL lib/raid6/raid6_pq 0xd9e91f83 raid6_vgfmul +EXPORT_SYMBOL net/6lowpan/6lowpan 0x71f4fe3b lowpan_nhc_add +EXPORT_SYMBOL net/6lowpan/6lowpan 0xe92fc41a lowpan_nhc_del +EXPORT_SYMBOL net/802/p8022 0xa9846a17 unregister_8022_client +EXPORT_SYMBOL net/802/p8022 0xd38b5088 register_8022_client +EXPORT_SYMBOL net/802/p8023 0x74156cd5 destroy_8023_client +EXPORT_SYMBOL net/802/p8023 0xda17b7bb make_8023_client +EXPORT_SYMBOL net/802/psnap 0xdb57cba3 register_snap_client +EXPORT_SYMBOL net/802/psnap 0xe76b9e11 unregister_snap_client +EXPORT_SYMBOL net/9p/9pnet 0x16f77a82 v9fs_register_trans +EXPORT_SYMBOL net/9p/9pnet 0x194fdf27 p9_client_mknod_dotl +EXPORT_SYMBOL net/9p/9pnet 0x1a37c7e9 p9_parse_header +EXPORT_SYMBOL net/9p/9pnet 0x2527c51a p9_is_proto_dotl +EXPORT_SYMBOL net/9p/9pnet 0x26195b30 p9_client_create_dotl +EXPORT_SYMBOL net/9p/9pnet 0x35d1e27e p9_idpool_get +EXPORT_SYMBOL net/9p/9pnet 0x3c94a2c4 p9_release_pages +EXPORT_SYMBOL net/9p/9pnet 0x3d73a797 p9_errstr2errno +EXPORT_SYMBOL net/9p/9pnet 0x3f6010dd p9_client_statfs +EXPORT_SYMBOL net/9p/9pnet 0x44d2c2c0 p9stat_free +EXPORT_SYMBOL net/9p/9pnet 0x45946329 p9stat_read +EXPORT_SYMBOL net/9p/9pnet 0x4fcc74e2 p9_client_unlinkat +EXPORT_SYMBOL net/9p/9pnet 0x502950e6 p9_client_mkdir_dotl +EXPORT_SYMBOL net/9p/9pnet 0x58174bb0 p9_client_open +EXPORT_SYMBOL net/9p/9pnet 0x5861e96f p9_client_link +EXPORT_SYMBOL net/9p/9pnet 0x5f34ec8a p9_client_rename +EXPORT_SYMBOL net/9p/9pnet 0x6ae664d4 v9fs_get_default_trans +EXPORT_SYMBOL net/9p/9pnet 0x6bd34788 p9_client_symlink +EXPORT_SYMBOL net/9p/9pnet 0x6c8645d4 p9_tag_lookup +EXPORT_SYMBOL net/9p/9pnet 0x6f6cd7b6 p9_client_setattr +EXPORT_SYMBOL net/9p/9pnet 0x72e244e6 p9_client_fcreate +EXPORT_SYMBOL net/9p/9pnet 0x766d0f62 p9_is_proto_dotu +EXPORT_SYMBOL net/9p/9pnet 0x77bb44b2 p9_client_begin_disconnect +EXPORT_SYMBOL net/9p/9pnet 0x788a4b8d p9_client_readlink +EXPORT_SYMBOL net/9p/9pnet 0x7b01df10 p9_client_readdir +EXPORT_SYMBOL net/9p/9pnet 0x7ef4f6f3 p9_client_create +EXPORT_SYMBOL net/9p/9pnet 0x821f0920 p9_client_destroy +EXPORT_SYMBOL net/9p/9pnet 0x8a057780 v9fs_unregister_trans +EXPORT_SYMBOL net/9p/9pnet 0x97ac7e7f p9_client_attach +EXPORT_SYMBOL net/9p/9pnet 0x9ce58e4f p9dirent_read +EXPORT_SYMBOL net/9p/9pnet 0x9db307e8 p9_client_read +EXPORT_SYMBOL net/9p/9pnet 0xa093c072 p9_client_clunk +EXPORT_SYMBOL net/9p/9pnet 0xaea545f9 p9_client_getlock_dotl +EXPORT_SYMBOL net/9p/9pnet 0xb2b11110 p9_client_renameat +EXPORT_SYMBOL net/9p/9pnet 0xbad9e1a1 p9_client_lock_dotl +EXPORT_SYMBOL net/9p/9pnet 0xc32e96e9 p9_client_getattr_dotl +EXPORT_SYMBOL net/9p/9pnet 0xc3902d88 p9_client_disconnect +EXPORT_SYMBOL net/9p/9pnet 0xc5db54a9 p9_idpool_destroy +EXPORT_SYMBOL net/9p/9pnet 0xcfa29730 p9_client_write +EXPORT_SYMBOL net/9p/9pnet 0xd0f5bb1a p9_client_remove +EXPORT_SYMBOL net/9p/9pnet 0xd5baebb3 p9_client_walk +EXPORT_SYMBOL net/9p/9pnet 0xdcee18b6 p9_client_fsync +EXPORT_SYMBOL net/9p/9pnet 0xe58a3360 p9_error_init +EXPORT_SYMBOL net/9p/9pnet 0xeb1f2546 p9_client_stat +EXPORT_SYMBOL net/9p/9pnet 0xee6bf3fe p9_client_cb +EXPORT_SYMBOL net/9p/9pnet 0xf4a111d8 p9_idpool_create +EXPORT_SYMBOL net/9p/9pnet 0xf84f2022 p9_idpool_put +EXPORT_SYMBOL net/9p/9pnet 0xf8fe3c69 p9_client_wstat +EXPORT_SYMBOL net/9p/9pnet 0xf9df9366 v9fs_get_trans_by_name +EXPORT_SYMBOL net/9p/9pnet 0xfd40c79d p9_idpool_check +EXPORT_SYMBOL net/appletalk/appletalk 0x18464865 alloc_ltalkdev +EXPORT_SYMBOL net/appletalk/appletalk 0x248728f1 atrtr_get_dev +EXPORT_SYMBOL net/appletalk/appletalk 0x45cb93ea atalk_find_dev_addr +EXPORT_SYMBOL net/appletalk/appletalk 0xbd69950d aarp_send_ddp +EXPORT_SYMBOL net/atm/atm 0x0042a8ab atm_dev_register +EXPORT_SYMBOL net/atm/atm 0x012d3eaf atm_dev_signal_change +EXPORT_SYMBOL net/atm/atm 0x09992f40 atm_dev_lookup +EXPORT_SYMBOL net/atm/atm 0x0d85c9eb atm_dev_release_vccs +EXPORT_SYMBOL net/atm/atm 0x1143d05a atm_alloc_charge +EXPORT_SYMBOL net/atm/atm 0x1160bc71 vcc_process_recv_queue +EXPORT_SYMBOL net/atm/atm 0x1a1ed295 vcc_release_async +EXPORT_SYMBOL net/atm/atm 0x2cc2d52d vcc_hash +EXPORT_SYMBOL net/atm/atm 0x428ed451 deregister_atm_ioctl +EXPORT_SYMBOL net/atm/atm 0x4443d399 atm_proc_root +EXPORT_SYMBOL net/atm/atm 0x46a1238d register_atm_ioctl +EXPORT_SYMBOL net/atm/atm 0x6e918192 atm_init_aal5 +EXPORT_SYMBOL net/atm/atm 0x9171226e atm_dev_deregister +EXPORT_SYMBOL net/atm/atm 0x9feaf287 sonet_subtract_stats +EXPORT_SYMBOL net/atm/atm 0xaa024146 sonet_copy_stats +EXPORT_SYMBOL net/atm/atm 0xd03e9176 vcc_insert_socket +EXPORT_SYMBOL net/atm/atm 0xe91c6328 atm_charge +EXPORT_SYMBOL net/atm/atm 0xf1774b53 vcc_sklist_lock +EXPORT_SYMBOL net/atm/atm 0xf49bc67a atm_pcr_goal +EXPORT_SYMBOL net/ax25/ax25 0x242852b9 ax25_uid_policy +EXPORT_SYMBOL net/ax25/ax25 0x3afee63e ax25_findbyuid +EXPORT_SYMBOL net/ax25/ax25 0x4502c65a asc2ax +EXPORT_SYMBOL net/ax25/ax25 0x53dea1ff ax2asc +EXPORT_SYMBOL net/ax25/ax25 0x58fa7f2b ax25_linkfail_register +EXPORT_SYMBOL net/ax25/ax25 0x59167882 ax25_listen_release +EXPORT_SYMBOL net/ax25/ax25 0x664e4baf ax25_header_ops +EXPORT_SYMBOL net/ax25/ax25 0x8ede9e26 ax25_protocol_release +EXPORT_SYMBOL net/ax25/ax25 0x9e238b62 ax25_send_frame +EXPORT_SYMBOL net/ax25/ax25 0xa7f3015b ax25_display_timer +EXPORT_SYMBOL net/ax25/ax25 0xaa15ab47 ax25_find_cb +EXPORT_SYMBOL net/ax25/ax25 0xbb8b39b1 ax25_linkfail_release +EXPORT_SYMBOL net/ax25/ax25 0xbccfbe80 ax25_listen_register +EXPORT_SYMBOL net/ax25/ax25 0xc1444946 ax25cmp +EXPORT_SYMBOL net/ax25/ax25 0xcb2af61d ax25_ip_xmit +EXPORT_SYMBOL net/ax25/ax25 0xd43ecbf1 null_ax25_address +EXPORT_SYMBOL net/bluetooth/bluetooth 0x07485d3e __hci_cmd_sync +EXPORT_SYMBOL net/bluetooth/bluetooth 0x095940d8 bt_accept_unlink +EXPORT_SYMBOL net/bluetooth/bluetooth 0x17e0486b l2cap_chan_close +EXPORT_SYMBOL net/bluetooth/bluetooth 0x1dd58c17 bt_procfs_cleanup +EXPORT_SYMBOL net/bluetooth/bluetooth 0x22ffac85 hci_conn_check_secure +EXPORT_SYMBOL net/bluetooth/bluetooth 0x2b7bd00a __hci_cmd_sync_ev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x47022514 bt_err +EXPORT_SYMBOL net/bluetooth/bluetooth 0x4729ab4f hci_unregister_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x4b030956 hci_resume_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x54111ebd hci_mgmt_chan_register +EXPORT_SYMBOL net/bluetooth/bluetooth 0x557ee28d bt_procfs_init +EXPORT_SYMBOL net/bluetooth/bluetooth 0x57382a6d hci_reset_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x57cd602a l2cap_unregister_user +EXPORT_SYMBOL net/bluetooth/bluetooth 0x5bb87128 l2cap_is_socket +EXPORT_SYMBOL net/bluetooth/bluetooth 0x62647383 hci_unregister_cb +EXPORT_SYMBOL net/bluetooth/bluetooth 0x62b0906b hci_conn_switch_role +EXPORT_SYMBOL net/bluetooth/bluetooth 0x696b7558 bt_sock_poll +EXPORT_SYMBOL net/bluetooth/bluetooth 0x727ecaf2 hci_alloc_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x8fea24bd bt_sock_unregister +EXPORT_SYMBOL net/bluetooth/bluetooth 0x90ddb76a bt_accept_enqueue +EXPORT_SYMBOL net/bluetooth/bluetooth 0x91c9a325 bt_to_errno +EXPORT_SYMBOL net/bluetooth/bluetooth 0x99db53ef hci_conn_security +EXPORT_SYMBOL net/bluetooth/bluetooth 0x99dc158e hci_suspend_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x9e509760 hci_get_route +EXPORT_SYMBOL net/bluetooth/bluetooth 0x9f614c3b bt_sock_unlink +EXPORT_SYMBOL net/bluetooth/bluetooth 0xa567855c bt_sock_reclassify_lock +EXPORT_SYMBOL net/bluetooth/bluetooth 0xaa84e83c l2cap_conn_put +EXPORT_SYMBOL net/bluetooth/bluetooth 0xae19eabc hci_recv_frame +EXPORT_SYMBOL net/bluetooth/bluetooth 0xb907011b bt_sock_wait_ready +EXPORT_SYMBOL net/bluetooth/bluetooth 0xbb8f5527 bt_sock_register +EXPORT_SYMBOL net/bluetooth/bluetooth 0xbc480970 hci_mgmt_chan_unregister +EXPORT_SYMBOL net/bluetooth/bluetooth 0xc02a303c l2cap_register_user +EXPORT_SYMBOL net/bluetooth/bluetooth 0xc972faea bt_accept_dequeue +EXPORT_SYMBOL net/bluetooth/bluetooth 0xcc1fb551 baswap +EXPORT_SYMBOL net/bluetooth/bluetooth 0xd0838c37 hci_register_cb +EXPORT_SYMBOL net/bluetooth/bluetooth 0xd1906a02 hci_free_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xd3dc04fb bt_sock_stream_recvmsg +EXPORT_SYMBOL net/bluetooth/bluetooth 0xd4702a7d l2cap_conn_get +EXPORT_SYMBOL net/bluetooth/bluetooth 0xd7442057 bt_info +EXPORT_SYMBOL net/bluetooth/bluetooth 0xd94ac993 bt_sock_recvmsg +EXPORT_SYMBOL net/bluetooth/bluetooth 0xdbd8cbbf bt_sock_ioctl +EXPORT_SYMBOL net/bluetooth/bluetooth 0xe38c8ccf hci_register_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xe42939d0 bt_sock_link +EXPORT_SYMBOL net/bluetooth/bluetooth 0xf88df58a bt_sock_wait_state +EXPORT_SYMBOL net/bridge/bridge 0x8c2f184d br_should_route_hook +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0x341fd296 ebt_do_table +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0xf7aa7f93 ebt_register_table +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0xf892dcd5 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 0x4678e92a get_cfcnfg +EXPORT_SYMBOL net/caif/caif 0x4a237e57 cfpkt_tonative +EXPORT_SYMBOL net/caif/caif 0x5750de52 caif_connect_client +EXPORT_SYMBOL net/caif/caif 0x6a44fc70 cfpkt_extr_head +EXPORT_SYMBOL net/caif/caif 0x839ddb7b cfcnfg_set_phy_state +EXPORT_SYMBOL net/caif/caif 0x966d7de2 cfpkt_add_head +EXPORT_SYMBOL net/caif/caif 0x9e3e305d cfpkt_set_prio +EXPORT_SYMBOL net/caif/caif 0xa8771d06 caif_enroll_dev +EXPORT_SYMBOL net/caif/caif 0xb7b6874e caif_free_client +EXPORT_SYMBOL net/caif/caif 0xca0ca79c cfcnfg_add_phy_layer +EXPORT_SYMBOL net/caif/caif 0xd89b7c80 caif_disconnect_client +EXPORT_SYMBOL net/can/can 0x04ac9cf9 can_rx_register +EXPORT_SYMBOL net/can/can 0x2f90d447 can_rx_unregister +EXPORT_SYMBOL net/can/can 0x6a9f038c can_proto_unregister +EXPORT_SYMBOL net/can/can 0x84f04461 can_send +EXPORT_SYMBOL net/can/can 0xd4b0a54f can_proto_register +EXPORT_SYMBOL net/can/can 0xf40bd5d4 can_ioctl +EXPORT_SYMBOL net/ceph/libceph 0x01e8cfd4 ceph_osdc_readpages +EXPORT_SYMBOL net/ceph/libceph 0x04c8d64b osd_req_op_alloc_hint_init +EXPORT_SYMBOL net/ceph/libceph 0x08db368d ceph_osdc_alloc_request +EXPORT_SYMBOL net/ceph/libceph 0x09290ab3 ceph_debugfs_init +EXPORT_SYMBOL net/ceph/libceph 0x1388cde4 ceph_copy_user_to_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x15333f35 ceph_client_id +EXPORT_SYMBOL net/ceph/libceph 0x15c42997 ceph_alloc_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x16c2448f osd_req_op_cls_response_data +EXPORT_SYMBOL net/ceph/libceph 0x1ce76c9c osd_req_op_init +EXPORT_SYMBOL net/ceph/libceph 0x1fa93c55 ceph_osdc_start_request +EXPORT_SYMBOL net/ceph/libceph 0x20d151cb ceph_osdc_setup +EXPORT_SYMBOL net/ceph/libceph 0x2885cd60 ceph_osdc_cancel_event +EXPORT_SYMBOL net/ceph/libceph 0x2cf75f9c osd_req_op_extent_osd_data_bio +EXPORT_SYMBOL net/ceph/libceph 0x2db717f3 ceph_destroy_options +EXPORT_SYMBOL net/ceph/libceph 0x2e55eefc osd_req_op_extent_osd_data_pagelist +EXPORT_SYMBOL net/ceph/libceph 0x2f231db1 ceph_monc_validate_auth +EXPORT_SYMBOL net/ceph/libceph 0x30d649f2 __ceph_open_session +EXPORT_SYMBOL net/ceph/libceph 0x34f351d2 ceph_pg_poolid_by_name +EXPORT_SYMBOL net/ceph/libceph 0x35f79ca8 ceph_check_fsid +EXPORT_SYMBOL net/ceph/libceph 0x3abec91f ceph_pr_addr +EXPORT_SYMBOL net/ceph/libceph 0x3ef4222a ceph_auth_destroy_authorizer +EXPORT_SYMBOL net/ceph/libceph 0x3efb1bcf ceph_con_init +EXPORT_SYMBOL net/ceph/libceph 0x3f688151 ceph_put_snap_context +EXPORT_SYMBOL net/ceph/libceph 0x3fbbaa39 ceph_messenger_fini +EXPORT_SYMBOL net/ceph/libceph 0x4135e52f osd_req_op_extent_init +EXPORT_SYMBOL net/ceph/libceph 0x43e458f6 ceph_file_part +EXPORT_SYMBOL net/ceph/libceph 0x43efd647 ceph_calc_file_object_mapping +EXPORT_SYMBOL net/ceph/libceph 0x449aefc2 ceph_oloc_oid_to_pg +EXPORT_SYMBOL net/ceph/libceph 0x466b85b8 libceph_compatible +EXPORT_SYMBOL net/ceph/libceph 0x47a9920e ceph_pagelist_release +EXPORT_SYMBOL net/ceph/libceph 0x4d34fc2e ceph_destroy_client +EXPORT_SYMBOL net/ceph/libceph 0x4f29c19b ceph_msg_put +EXPORT_SYMBOL net/ceph/libceph 0x50059455 ceph_monc_open_session +EXPORT_SYMBOL net/ceph/libceph 0x5379cea3 ceph_caps_for_mode +EXPORT_SYMBOL net/ceph/libceph 0x57baf885 ceph_str_hash +EXPORT_SYMBOL net/ceph/libceph 0x59d54522 ceph_con_keepalive +EXPORT_SYMBOL net/ceph/libceph 0x5abb11c2 ceph_monc_do_statfs +EXPORT_SYMBOL net/ceph/libceph 0x5c666662 ceph_osdc_writepages +EXPORT_SYMBOL net/ceph/libceph 0x60349d7e ceph_osdc_new_request +EXPORT_SYMBOL net/ceph/libceph 0x62b0376c ceph_con_open +EXPORT_SYMBOL net/ceph/libceph 0x63758856 ceph_str_hash_name +EXPORT_SYMBOL net/ceph/libceph 0x6b2e3bcd ceph_get_snap_context +EXPORT_SYMBOL net/ceph/libceph 0x722af9fd ceph_msg_data_add_pagelist +EXPORT_SYMBOL net/ceph/libceph 0x737ecf94 ceph_calc_pg_primary +EXPORT_SYMBOL net/ceph/libceph 0x752ed426 osd_req_op_extent_osd_data +EXPORT_SYMBOL net/ceph/libceph 0x78793560 ceph_msg_new +EXPORT_SYMBOL net/ceph/libceph 0x7cd9eab6 ceph_osdc_create_event +EXPORT_SYMBOL net/ceph/libceph 0x815f0b4d ceph_osdc_put_event +EXPORT_SYMBOL net/ceph/libceph 0x86fdd3be ceph_put_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x8967c0cb ceph_monc_wait_osdmap +EXPORT_SYMBOL net/ceph/libceph 0x8b3f53d4 ceph_monc_request_next_osdmap +EXPORT_SYMBOL net/ceph/libceph 0x8b69d59d ceph_messenger_init +EXPORT_SYMBOL net/ceph/libceph 0x9120b404 ceph_auth_is_authenticated +EXPORT_SYMBOL net/ceph/libceph 0x92c67fc7 ceph_osdc_sync +EXPORT_SYMBOL net/ceph/libceph 0x99e36571 ceph_osdc_cleanup +EXPORT_SYMBOL net/ceph/libceph 0x9a05c550 osd_req_op_extent_osd_data_pages +EXPORT_SYMBOL net/ceph/libceph 0x9aee1bb8 ceph_get_direct_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x9be724fb ceph_zero_page_vector_range +EXPORT_SYMBOL net/ceph/libceph 0x9e6de1c8 ceph_osdc_set_request_linger +EXPORT_SYMBOL net/ceph/libceph 0x9f534f4d ceph_buffer_release +EXPORT_SYMBOL net/ceph/libceph 0xa0c30a1d ceph_copy_from_page_vector +EXPORT_SYMBOL net/ceph/libceph 0xa1ebde8f ceph_pagelist_truncate +EXPORT_SYMBOL net/ceph/libceph 0xa373078a ceph_monc_got_mdsmap +EXPORT_SYMBOL net/ceph/libceph 0xa7ccda41 osd_req_op_extent_update +EXPORT_SYMBOL net/ceph/libceph 0xa96910d5 ceph_compare_options +EXPORT_SYMBOL net/ceph/libceph 0xabf22a82 ceph_monc_stop +EXPORT_SYMBOL net/ceph/libceph 0xad92882e ceph_osdc_cancel_request +EXPORT_SYMBOL net/ceph/libceph 0xae3515ba ceph_create_snap_context +EXPORT_SYMBOL net/ceph/libceph 0xae4e4a03 ceph_pg_pool_name_by_id +EXPORT_SYMBOL net/ceph/libceph 0xafb8a407 ceph_msgr_flush +EXPORT_SYMBOL net/ceph/libceph 0xb19dc152 ceph_pagelist_reserve +EXPORT_SYMBOL net/ceph/libceph 0xb4113a4d ceph_release_page_vector +EXPORT_SYMBOL net/ceph/libceph 0xb54676fa ceph_msg_type_name +EXPORT_SYMBOL net/ceph/libceph 0xb6081d6d ceph_msgr_exit +EXPORT_SYMBOL net/ceph/libceph 0xbb0fd35e ceph_osdc_wait_request +EXPORT_SYMBOL net/ceph/libceph 0xbf532b96 ceph_con_send +EXPORT_SYMBOL net/ceph/libceph 0xc1c2ec33 ceph_osdc_flush_notifies +EXPORT_SYMBOL net/ceph/libceph 0xc421b61e ceph_msg_data_add_bio +EXPORT_SYMBOL net/ceph/libceph 0xc4a80955 ceph_debugfs_cleanup +EXPORT_SYMBOL net/ceph/libceph 0xc4fc634d ceph_osdc_get_request +EXPORT_SYMBOL net/ceph/libceph 0xc9f82b38 ceph_msgr_init +EXPORT_SYMBOL net/ceph/libceph 0xcb4b9e2d ceph_open_session +EXPORT_SYMBOL net/ceph/libceph 0xcb50a624 ceph_parse_ips +EXPORT_SYMBOL net/ceph/libceph 0xcd645a6d osd_req_op_cls_init +EXPORT_SYMBOL net/ceph/libceph 0xd2c107bb ceph_flags_to_mode +EXPORT_SYMBOL net/ceph/libceph 0xd2e24af3 osd_req_op_cls_request_data_pages +EXPORT_SYMBOL net/ceph/libceph 0xd3444eaa ceph_create_client +EXPORT_SYMBOL net/ceph/libceph 0xd5383217 ceph_pagelist_set_cursor +EXPORT_SYMBOL net/ceph/libceph 0xd70cb0ae ceph_print_client_options +EXPORT_SYMBOL net/ceph/libceph 0xd813625e ceph_pagelist_append +EXPORT_SYMBOL net/ceph/libceph 0xd83e6c4b osd_req_op_xattr_init +EXPORT_SYMBOL net/ceph/libceph 0xdba32e00 ceph_auth_update_authorizer +EXPORT_SYMBOL net/ceph/libceph 0xdd8e7550 ceph_parse_options +EXPORT_SYMBOL net/ceph/libceph 0xddb279ea ceph_auth_invalidate_authorizer +EXPORT_SYMBOL net/ceph/libceph 0xde042033 ceph_osdc_put_request +EXPORT_SYMBOL net/ceph/libceph 0xde0eb6ba ceph_pagelist_free_reserve +EXPORT_SYMBOL net/ceph/libceph 0xe10e9710 osd_req_op_cls_response_data_pages +EXPORT_SYMBOL net/ceph/libceph 0xe1274a53 ceph_copy_to_page_vector +EXPORT_SYMBOL net/ceph/libceph 0xe1a50459 ceph_monc_do_get_version +EXPORT_SYMBOL net/ceph/libceph 0xe40a593e ceph_con_close +EXPORT_SYMBOL net/ceph/libceph 0xe439f5b2 osd_req_op_watch_init +EXPORT_SYMBOL net/ceph/libceph 0xe55d9bcd ceph_buffer_new +EXPORT_SYMBOL net/ceph/libceph 0xe70fed60 ceph_osdc_build_request +EXPORT_SYMBOL net/ceph/libceph 0xe8b71075 ceph_auth_create_authorizer +EXPORT_SYMBOL net/ceph/libceph 0xe981023d osd_req_op_cls_request_data_pagelist +EXPORT_SYMBOL net/ceph/libceph 0xf5d2ccf8 ceph_msg_data_add_pages +EXPORT_SYMBOL net/ceph/libceph 0xf8c0e64f ceph_auth_verify_authorizer_reply +EXPORT_SYMBOL net/ceph/libceph 0xf8c56813 osd_req_op_raw_data_in_pages +EXPORT_SYMBOL net/ceph/libceph 0xfb871768 ceph_msg_get +EXPORT_SYMBOL net/ceph/libceph 0xfbb064c6 ceph_msg_dump +EXPORT_SYMBOL net/ceph/libceph 0xfd6900b2 ceph_monc_init +EXPORT_SYMBOL net/dccp/dccp_ipv4 0x64650874 dccp_syn_ack_timeout +EXPORT_SYMBOL net/dccp/dccp_ipv4 0xfebc0467 dccp_req_err +EXPORT_SYMBOL net/ieee802154/6lowpan/ieee802154_6lowpan 0x1fbefca2 lowpan_frag_rcv +EXPORT_SYMBOL net/ieee802154/ieee802154 0x088d4a13 wpan_phy_new +EXPORT_SYMBOL net/ieee802154/ieee802154 0x40f1f338 wpan_phy_free +EXPORT_SYMBOL net/ieee802154/ieee802154 0x46c1d849 wpan_phy_find +EXPORT_SYMBOL net/ieee802154/ieee802154 0x56a98d27 wpan_phy_unregister +EXPORT_SYMBOL net/ieee802154/ieee802154 0xb33a637d wpan_phy_register +EXPORT_SYMBOL net/ieee802154/ieee802154 0xcae77fcc wpan_phy_for_each +EXPORT_SYMBOL net/ipv4/fou 0x87596169 fou_encap_hlen +EXPORT_SYMBOL net/ipv4/fou 0xb1c820f6 gue_build_header +EXPORT_SYMBOL net/ipv4/fou 0xc4e98179 fou_build_header +EXPORT_SYMBOL net/ipv4/fou 0xfe4c1f2f gue_encap_hlen +EXPORT_SYMBOL net/ipv4/ip_tunnel 0x0b389fd1 ip_tunnel_get_iflink +EXPORT_SYMBOL net/ipv4/ip_tunnel 0x79086963 ip_tunnel_encap_del_ops +EXPORT_SYMBOL net/ipv4/ip_tunnel 0xc34ae6ac ip_tunnel_encap +EXPORT_SYMBOL net/ipv4/ip_tunnel 0xd13e2f94 ip_tunnel_encap_add_ops +EXPORT_SYMBOL net/ipv4/ip_tunnel 0xed91ca71 ip_tunnel_dst_reset_all +EXPORT_SYMBOL net/ipv4/ip_tunnel 0xfdf8c6ea ip_tunnel_get_link_net +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0xd4f42841 arpt_register_table +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0xd8195d89 arpt_do_table +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0xfbb3f908 arpt_unregister_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0x84490c8a ipt_register_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0xa0df7642 ipt_unregister_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0xa5419411 ipt_do_table +EXPORT_SYMBOL net/ipv4/tunnel4 0x714fe946 xfrm4_tunnel_register +EXPORT_SYMBOL net/ipv4/tunnel4 0xca1ff3d6 xfrm4_tunnel_deregister +EXPORT_SYMBOL net/ipv4/udp_tunnel 0x9d62c12c udp_sock_create4 +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0x11d0ab48 ip6_tnl_parse_tlv_enc_lim +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0x901e59ec ip6_tnl_get_link_net +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0xb98227cf ip6_tnl_get_iflink +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0xbfa7220d ip6_tnl_get_cap +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0xb96324c5 ip6t_unregister_table +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0xd1c788b5 ip6t_do_table +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0xee273ad7 ip6t_register_table +EXPORT_SYMBOL net/ipv6/tunnel6 0x7d73cd8b xfrm6_tunnel_deregister +EXPORT_SYMBOL net/ipv6/tunnel6 0xe5542a2a xfrm6_tunnel_register +EXPORT_SYMBOL net/ipv6/xfrm6_tunnel 0x3116ffb0 xfrm6_tunnel_alloc_spi +EXPORT_SYMBOL net/ipv6/xfrm6_tunnel 0xc5c40c53 xfrm6_tunnel_spi_lookup +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x01d04df4 ircomm_control_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x2c0eafb9 ircomm_disconnect_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x3d4b611f ircomm_connect_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0xc0385f1c ircomm_close +EXPORT_SYMBOL net/irda/ircomm/ircomm 0xc6b0c70f ircomm_open +EXPORT_SYMBOL net/irda/ircomm/ircomm 0xe69c490e ircomm_connect_response +EXPORT_SYMBOL net/irda/ircomm/ircomm 0xf33e47ea ircomm_flow_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0xf5da740c ircomm_data_request +EXPORT_SYMBOL net/irda/irda 0x06a3ee58 irias_new_integer_value +EXPORT_SYMBOL net/irda/irda 0x07d3647c irlmp_register_service +EXPORT_SYMBOL net/irda/irda 0x17a491c5 irias_add_octseq_attrib +EXPORT_SYMBOL net/irda/irda 0x1a6861a5 async_unwrap_char +EXPORT_SYMBOL net/irda/irda 0x1f15a3dc irttp_close_tsap +EXPORT_SYMBOL net/irda/irda 0x2670e6b0 iriap_getvaluebyclass_request +EXPORT_SYMBOL net/irda/irda 0x33cbe2c6 proc_irda +EXPORT_SYMBOL net/irda/irda 0x356c6b4b irlmp_data_request +EXPORT_SYMBOL net/irda/irda 0x358a5878 irlap_close +EXPORT_SYMBOL net/irda/irda 0x36cad55b hashbin_remove_this +EXPORT_SYMBOL net/irda/irda 0x37791344 hashbin_get_first +EXPORT_SYMBOL net/irda/irda 0x382f4388 irttp_flow_request +EXPORT_SYMBOL net/irda/irda 0x3da37987 irlmp_connect_request +EXPORT_SYMBOL net/irda/irda 0x448b8aaa irda_qos_bits_to_value +EXPORT_SYMBOL net/irda/irda 0x46c1c4a2 irlmp_unregister_service +EXPORT_SYMBOL net/irda/irda 0x5ee0afef irda_notify_init +EXPORT_SYMBOL net/irda/irda 0x6492e28c hashbin_get_next +EXPORT_SYMBOL net/irda/irda 0x6a4c3f29 irttp_dup +EXPORT_SYMBOL net/irda/irda 0x6b043eba irda_init_max_qos_capabilies +EXPORT_SYMBOL net/irda/irda 0x6b76aa70 hashbin_delete +EXPORT_SYMBOL net/irda/irda 0x6e6e8d36 irttp_disconnect_request +EXPORT_SYMBOL net/irda/irda 0x7042bc54 irlmp_register_client +EXPORT_SYMBOL net/irda/irda 0x731cec71 hashbin_insert +EXPORT_SYMBOL net/irda/irda 0x763e54a4 irlmp_unregister_client +EXPORT_SYMBOL net/irda/irda 0x764d2d2d irlmp_open_lsap +EXPORT_SYMBOL net/irda/irda 0x7957f728 irlmp_update_client +EXPORT_SYMBOL net/irda/irda 0x7e67ca6e irias_new_object +EXPORT_SYMBOL net/irda/irda 0x7f52a8bf irda_param_insert +EXPORT_SYMBOL net/irda/irda 0x8982c8d9 irias_delete_object +EXPORT_SYMBOL net/irda/irda 0x8a44dd5e hashbin_new +EXPORT_SYMBOL net/irda/irda 0x8d0352f6 iriap_close +EXPORT_SYMBOL net/irda/irda 0x90ddb6bd hashbin_remove +EXPORT_SYMBOL net/irda/irda 0x91815586 irda_param_pack +EXPORT_SYMBOL net/irda/irda 0x933b4a4b irttp_data_request +EXPORT_SYMBOL net/irda/irda 0x94a824db irda_param_extract_all +EXPORT_SYMBOL net/irda/irda 0x971f74c6 async_wrap_skb +EXPORT_SYMBOL net/irda/irda 0x99673b0e irlap_open +EXPORT_SYMBOL net/irda/irda 0x9f8260da irttp_udata_request +EXPORT_SYMBOL net/irda/irda 0x9fae9b8f alloc_irdadev +EXPORT_SYMBOL net/irda/irda 0x9ffda243 irias_add_string_attrib +EXPORT_SYMBOL net/irda/irda 0xac3b3962 irttp_connect_response +EXPORT_SYMBOL net/irda/irda 0xb199b3d2 irda_device_set_media_busy +EXPORT_SYMBOL net/irda/irda 0xb3c13d7f irias_add_integer_attrib +EXPORT_SYMBOL net/irda/irda 0xb9394173 irias_delete_value +EXPORT_SYMBOL net/irda/irda 0xbca25e98 irttp_open_tsap +EXPORT_SYMBOL net/irda/irda 0xbcd3ef13 irias_object_change_attribute +EXPORT_SYMBOL net/irda/irda 0xbe0a625c irlmp_connect_response +EXPORT_SYMBOL net/irda/irda 0xbe40ace9 irlmp_discovery_request +EXPORT_SYMBOL net/irda/irda 0xbf7dd554 hashbin_find +EXPORT_SYMBOL net/irda/irda 0xbfa7c08d hashbin_lock_find +EXPORT_SYMBOL net/irda/irda 0xc0b9e631 irlmp_close_lsap +EXPORT_SYMBOL net/irda/irda 0xc477368d irias_find_object +EXPORT_SYMBOL net/irda/irda 0xde4c6b3c irlmp_service_to_hint +EXPORT_SYMBOL net/irda/irda 0xedd521c2 irlmp_get_discoveries +EXPORT_SYMBOL net/irda/irda 0xef601b3d irttp_connect_request +EXPORT_SYMBOL net/irda/irda 0xf199cba4 irias_insert_object +EXPORT_SYMBOL net/irda/irda 0xfefe993b irlmp_disconnect_request +EXPORT_SYMBOL net/irda/irda 0xff31c0ad iriap_open +EXPORT_SYMBOL net/l2tp/l2tp_core 0x2a8856c6 l2tp_recv_common +EXPORT_SYMBOL net/lapb/lapb 0x227667a7 lapb_register +EXPORT_SYMBOL net/lapb/lapb 0x5b68e431 lapb_unregister +EXPORT_SYMBOL net/lapb/lapb 0x89b745d7 lapb_setparms +EXPORT_SYMBOL net/lapb/lapb 0x9fa0c5e3 lapb_data_received +EXPORT_SYMBOL net/lapb/lapb 0xa5fd2a1a lapb_disconnect_request +EXPORT_SYMBOL net/lapb/lapb 0xcbdac545 lapb_getparms +EXPORT_SYMBOL net/lapb/lapb 0xebaf4227 lapb_connect_request +EXPORT_SYMBOL net/lapb/lapb 0xf7e9f291 lapb_data_request +EXPORT_SYMBOL net/llc/llc 0x2e60c8e0 llc_sap_find +EXPORT_SYMBOL net/llc/llc 0x38b92846 llc_remove_pack +EXPORT_SYMBOL net/llc/llc 0x3b98ca13 llc_sap_close +EXPORT_SYMBOL net/llc/llc 0x521d5e59 llc_mac_hdr_init +EXPORT_SYMBOL net/llc/llc 0x52d7b2fd llc_sap_list +EXPORT_SYMBOL net/llc/llc 0x90318dbb llc_set_station_handler +EXPORT_SYMBOL net/llc/llc 0xa2c11d31 llc_add_pack +EXPORT_SYMBOL net/llc/llc 0xa869baf4 llc_build_and_send_ui_pkt +EXPORT_SYMBOL net/llc/llc 0xcc9320b8 llc_sap_open +EXPORT_SYMBOL net/mac80211/mac80211 0x02166686 ieee80211_get_tkip_p1k_iv +EXPORT_SYMBOL net/mac80211/mac80211 0x044df6a1 ieee80211_proberesp_get +EXPORT_SYMBOL net/mac80211/mac80211 0x05534d59 ieee80211_ap_probereq_get +EXPORT_SYMBOL net/mac80211/mac80211 0x0755e460 ieee80211_alloc_hw_nm +EXPORT_SYMBOL net/mac80211/mac80211 0x0f9c4ad1 ieee80211_tx_status_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0x104a64ef ieee80211_sched_scan_results +EXPORT_SYMBOL net/mac80211/mac80211 0x1192afbd ieee80211_connection_loss +EXPORT_SYMBOL net/mac80211/mac80211 0x15cee150 ieee80211_nullfunc_get +EXPORT_SYMBOL net/mac80211/mac80211 0x15fbab61 ieee80211_sta_eosp +EXPORT_SYMBOL net/mac80211/mac80211 0x16a7b940 ieee80211_reserve_tid +EXPORT_SYMBOL net/mac80211/mac80211 0x16dd2856 ieee80211_sta_ps_transition +EXPORT_SYMBOL net/mac80211/mac80211 0x19e96125 __ieee80211_get_tx_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0x1bb68eec ieee80211_ctstoself_get +EXPORT_SYMBOL net/mac80211/mac80211 0x20ebb81c ieee80211_csa_is_complete +EXPORT_SYMBOL net/mac80211/mac80211 0x21a84761 ieee80211_stop_tx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0x23500d2a __ieee80211_get_rx_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0x2407c0b7 ieee80211_sched_scan_stopped +EXPORT_SYMBOL net/mac80211/mac80211 0x25ef97ed ieee80211_rate_control_register +EXPORT_SYMBOL net/mac80211/mac80211 0x31d9d114 ieee80211_report_wowlan_wakeup +EXPORT_SYMBOL net/mac80211/mac80211 0x323b21fd ieee80211_wake_queue +EXPORT_SYMBOL net/mac80211/mac80211 0x356ee676 ieee80211_disable_rssi_reports +EXPORT_SYMBOL net/mac80211/mac80211 0x3869f08e ieee80211_aes_cmac_calculate_k1_k2 +EXPORT_SYMBOL net/mac80211/mac80211 0x3d6bf26e ieee80211_report_low_ack +EXPORT_SYMBOL net/mac80211/mac80211 0x3df70cea ieee80211_scan_completed +EXPORT_SYMBOL net/mac80211/mac80211 0x3f29e004 ieee80211_sta_block_awake +EXPORT_SYMBOL net/mac80211/mac80211 0x4098a25c ieee80211_chswitch_done +EXPORT_SYMBOL net/mac80211/mac80211 0x432a4546 ieee80211_radar_detected +EXPORT_SYMBOL net/mac80211/mac80211 0x438b0f9e ieee80211_probereq_get +EXPORT_SYMBOL net/mac80211/mac80211 0x45df6b4a ieee80211_unregister_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x4d7a9a35 ieee80211_rx +EXPORT_SYMBOL net/mac80211/mac80211 0x55d37aef ieee80211_cqm_rssi_notify +EXPORT_SYMBOL net/mac80211/mac80211 0x57cd0a29 ieee80211_stop_queue +EXPORT_SYMBOL net/mac80211/mac80211 0x58c1aada ieee80211_rx_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0x5a198a4b ieee80211_stop_rx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0x5d7f8700 ieee80211_send_bar +EXPORT_SYMBOL net/mac80211/mac80211 0x5fdf5539 ieee80211_find_sta +EXPORT_SYMBOL net/mac80211/mac80211 0x62f49d63 ieee80211_rts_get +EXPORT_SYMBOL net/mac80211/mac80211 0x696742b4 ieee80211_tdls_oper_request +EXPORT_SYMBOL net/mac80211/mac80211 0x69de096c ieee80211_get_tkip_rx_p1k +EXPORT_SYMBOL net/mac80211/mac80211 0x6af2a584 ieee80211_tx_dequeue +EXPORT_SYMBOL net/mac80211/mac80211 0x73a40eb8 __ieee80211_get_assoc_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0x76b9ef28 ieee80211_get_key_rx_seq +EXPORT_SYMBOL net/mac80211/mac80211 0x76f3f042 ieee80211_cqm_beacon_loss_notify +EXPORT_SYMBOL net/mac80211/mac80211 0x77ea65c4 ieee80211_update_p2p_noa +EXPORT_SYMBOL net/mac80211/mac80211 0x7b386a19 rate_control_set_rates +EXPORT_SYMBOL net/mac80211/mac80211 0x7bd90b60 ieee80211_unreserve_tid +EXPORT_SYMBOL net/mac80211/mac80211 0x83e18777 wiphy_to_ieee80211_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x84f612b7 ieee80211_restart_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x86369ec1 ieee80211_queue_delayed_work +EXPORT_SYMBOL net/mac80211/mac80211 0x888250df ieee80211_ctstoself_duration +EXPORT_SYMBOL net/mac80211/mac80211 0x8982293f ieee80211_get_tx_rates +EXPORT_SYMBOL net/mac80211/mac80211 0x8996c3f9 ieee80211_start_tx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0x89c68998 ieee80211_csa_finish +EXPORT_SYMBOL net/mac80211/mac80211 0x8b602f4d ieee80211_tx_status_noskb +EXPORT_SYMBOL net/mac80211/mac80211 0x8ed020f7 ieee80211_beacon_get_tim +EXPORT_SYMBOL net/mac80211/mac80211 0x99c72d9c __ieee80211_get_radio_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0x9a7a97d6 ieee80211_tx_status +EXPORT_SYMBOL net/mac80211/mac80211 0x9ac9dc7e ieee80211_tx_prepare_skb +EXPORT_SYMBOL net/mac80211/mac80211 0x9b7a1763 ieee80211_rate_control_unregister +EXPORT_SYMBOL net/mac80211/mac80211 0x9f2a29b2 ieee80211_queue_work +EXPORT_SYMBOL net/mac80211/mac80211 0xa2a0a9d6 ieee80211_pspoll_get +EXPORT_SYMBOL net/mac80211/mac80211 0xa2adfde5 ieee80211_register_hw +EXPORT_SYMBOL net/mac80211/mac80211 0xa93081f2 ieee80211_beacon_loss +EXPORT_SYMBOL net/mac80211/mac80211 0xb1aaef91 ieee80211_get_key_tx_seq +EXPORT_SYMBOL net/mac80211/mac80211 0xb6c94b3b ieee80211_sta_set_buffered +EXPORT_SYMBOL net/mac80211/mac80211 0xb731b445 ieee80211_get_tkip_p2k +EXPORT_SYMBOL net/mac80211/mac80211 0xb7a4d35a ieee80211_stop_tx_ba_cb_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0xbcc3255e ieee80211_rts_duration +EXPORT_SYMBOL net/mac80211/mac80211 0xc6f1c179 __ieee80211_create_tpt_led_trigger +EXPORT_SYMBOL net/mac80211/mac80211 0xca725374 ieee80211_beacon_get_template +EXPORT_SYMBOL net/mac80211/mac80211 0xd140af19 ieee80211_generic_frame_duration +EXPORT_SYMBOL net/mac80211/mac80211 0xd48cf418 ieee80211_start_rx_ba_session_offl +EXPORT_SYMBOL net/mac80211/mac80211 0xd72625cb ieee80211_parse_p2p_noa +EXPORT_SYMBOL net/mac80211/mac80211 0xddd004ea ieee80211_stop_rx_ba_session_offl +EXPORT_SYMBOL net/mac80211/mac80211 0xdddb4e5b rate_control_send_low +EXPORT_SYMBOL net/mac80211/mac80211 0xde15aead ieee80211_stop_queues +EXPORT_SYMBOL net/mac80211/mac80211 0xde3ae6de ieee80211_start_tx_ba_cb_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0xf4803faf ieee80211_queue_stopped +EXPORT_SYMBOL net/mac80211/mac80211 0xf4cff157 ieee80211_free_txskb +EXPORT_SYMBOL net/mac80211/mac80211 0xf512369e ieee80211_iter_keys +EXPORT_SYMBOL net/mac80211/mac80211 0xf81afc3b ieee80211_free_hw +EXPORT_SYMBOL net/mac80211/mac80211 0xf8923f6f ieee80211_csa_update_counter +EXPORT_SYMBOL net/mac80211/mac80211 0xf9956130 ieee80211_enable_rssi_reports +EXPORT_SYMBOL net/mac80211/mac80211 0xfe8c60c4 ieee80211_wake_queues +EXPORT_SYMBOL net/mac80211/mac80211 0xfeb4b643 ieee80211_get_buffered_bc +EXPORT_SYMBOL net/mac802154/mac802154 0x1165f529 ieee802154_stop_queue +EXPORT_SYMBOL net/mac802154/mac802154 0x136c866c ieee802154_unregister_hw +EXPORT_SYMBOL net/mac802154/mac802154 0x15b97d88 ieee802154_wake_queue +EXPORT_SYMBOL net/mac802154/mac802154 0x298740ff ieee802154_register_hw +EXPORT_SYMBOL net/mac802154/mac802154 0x2dd3c2b6 ieee802154_xmit_complete +EXPORT_SYMBOL net/mac802154/mac802154 0x810b4743 ieee802154_rx_irqsafe +EXPORT_SYMBOL net/mac802154/mac802154 0xdb161304 ieee802154_alloc_hw +EXPORT_SYMBOL net/mac802154/mac802154 0xdfa0c7d5 ieee802154_free_hw +EXPORT_SYMBOL net/mac802154/mac802154 0xf0800753 ieee802154_rx +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x0ced639e unregister_ip_vs_app +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x1728585d ip_vs_proto_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x29e1a577 register_ip_vs_app +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x31a69765 register_ip_vs_app_inc +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x64767378 ip_vs_conn_put +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x806df39e ip_vs_tcp_conn_listen +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x97d8dfeb ip_vs_nfct_expect_related +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xa3daee5e ip_vs_conn_in_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xacd66ad7 ip_vs_conn_out_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xad3f1fd5 unregister_ip_vs_scheduler +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xb00aa9a2 ip_vs_scheduler_err +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xba0aa08b register_ip_vs_scheduler +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xd831a1a2 ip_vs_proto_name +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xe70af177 ip_vs_conn_new +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xeeb14c26 ip_vs_proto_data_get +EXPORT_SYMBOL net/netfilter/nf_conntrack 0x241011a5 __nf_ct_ext_destroy +EXPORT_SYMBOL net/netfilter/nf_conntrack 0xa5957a64 __nf_ct_ext_add_length +EXPORT_SYMBOL net/netfilter/nf_conntrack 0xd557cca5 nf_conntrack_untracked +EXPORT_SYMBOL net/netfilter/nf_conntrack_pptp 0x827cc6a1 pptp_msg_name +EXPORT_SYMBOL net/netfilter/nf_nat 0x0a577721 nf_nat_used_tuple +EXPORT_SYMBOL net/netfilter/nf_nat 0x1288a151 __nf_nat_mangle_tcp_packet +EXPORT_SYMBOL net/netfilter/nf_nat 0xbad4c5e3 nf_xfrm_me_harder +EXPORT_SYMBOL net/netfilter/nf_nat 0xce65dd09 nf_nat_follow_master +EXPORT_SYMBOL net/netfilter/nf_nat 0xe6331dc4 nf_nat_mangle_udp_packet +EXPORT_SYMBOL net/netfilter/nf_nat 0xf0cb93b2 nf_nat_setup_info +EXPORT_SYMBOL net/netfilter/x_tables 0x23550012 xt_register_match +EXPORT_SYMBOL net/netfilter/x_tables 0x240f9015 xt_unregister_match +EXPORT_SYMBOL net/netfilter/x_tables 0x34e0e6e7 xt_find_target +EXPORT_SYMBOL net/netfilter/x_tables 0x41699b31 xt_register_targets +EXPORT_SYMBOL net/netfilter/x_tables 0x482d26fd xt_alloc_table_info +EXPORT_SYMBOL net/netfilter/x_tables 0x4c3c32a3 xt_register_target +EXPORT_SYMBOL net/netfilter/x_tables 0x8247ff0a xt_register_matches +EXPORT_SYMBOL net/netfilter/x_tables 0x945463cf xt_unregister_matches +EXPORT_SYMBOL net/netfilter/x_tables 0xaa71be92 xt_unregister_targets +EXPORT_SYMBOL net/netfilter/x_tables 0xc83381f1 xt_find_match +EXPORT_SYMBOL net/netfilter/x_tables 0xd1a21986 xt_free_table_info +EXPORT_SYMBOL net/netfilter/x_tables 0xf372307a xt_unregister_target +EXPORT_SYMBOL net/nfc/hci/hci 0x0103b55f nfc_hci_get_clientdata +EXPORT_SYMBOL net/nfc/hci/hci 0x170d2884 nfc_hci_reset_pipes +EXPORT_SYMBOL net/nfc/hci/hci 0x1e2e27e7 nfc_hci_set_clientdata +EXPORT_SYMBOL net/nfc/hci/hci 0x389a1bda nfc_hci_get_param +EXPORT_SYMBOL net/nfc/hci/hci 0x43028a27 nfc_hci_result_to_errno +EXPORT_SYMBOL net/nfc/hci/hci 0x660868de nfc_hci_connect_gate +EXPORT_SYMBOL net/nfc/hci/hci 0x7cf2661d nfc_hci_unregister_device +EXPORT_SYMBOL net/nfc/hci/hci 0x81033bdb nfc_hci_disconnect_all_gates +EXPORT_SYMBOL net/nfc/hci/hci 0x859eec98 nfc_hci_target_discovered +EXPORT_SYMBOL net/nfc/hci/hci 0x897d0a15 nfc_hci_register_device +EXPORT_SYMBOL net/nfc/hci/hci 0x8b996774 nfc_hci_driver_failure +EXPORT_SYMBOL net/nfc/hci/hci 0x8d1097bc nfc_hci_set_param +EXPORT_SYMBOL net/nfc/hci/hci 0xaa26af61 nfc_hci_recv_frame +EXPORT_SYMBOL net/nfc/hci/hci 0xb0e43c38 nfc_hci_reset_pipes_per_host +EXPORT_SYMBOL net/nfc/hci/hci 0xbca0b4fd nfc_hci_sak_to_protocol +EXPORT_SYMBOL net/nfc/hci/hci 0xc31d9754 nfc_hci_free_device +EXPORT_SYMBOL net/nfc/hci/hci 0xddd542c4 nfc_hci_send_cmd +EXPORT_SYMBOL net/nfc/hci/hci 0xe5d0bde4 nfc_hci_send_event +EXPORT_SYMBOL net/nfc/hci/hci 0xe6192a6d nfc_hci_disconnect_gate +EXPORT_SYMBOL net/nfc/hci/hci 0xed8b0750 nfc_hci_send_cmd_async +EXPORT_SYMBOL net/nfc/hci/hci 0xf1e89b17 nfc_hci_allocate_device +EXPORT_SYMBOL net/nfc/nci/nci 0x165249f6 nci_register_device +EXPORT_SYMBOL net/nfc/nci/nci 0x1e0055ae nci_prop_cmd +EXPORT_SYMBOL net/nfc/nci/nci 0x20d7bd68 nci_hci_send_event +EXPORT_SYMBOL net/nfc/nci/nci 0x21506156 nci_hci_set_param +EXPORT_SYMBOL net/nfc/nci/nci 0x2f1b221a nci_hci_open_pipe +EXPORT_SYMBOL net/nfc/nci/nci 0x345c0ef2 nci_hci_get_param +EXPORT_SYMBOL net/nfc/nci/nci 0x3e1d93be nci_hci_connect_gate +EXPORT_SYMBOL net/nfc/nci/nci 0x7134dc80 nci_core_conn_close +EXPORT_SYMBOL net/nfc/nci/nci 0x72866c01 nci_hci_send_cmd +EXPORT_SYMBOL net/nfc/nci/nci 0x748490d5 nci_allocate_device +EXPORT_SYMBOL net/nfc/nci/nci 0x796752b7 nci_recv_frame +EXPORT_SYMBOL net/nfc/nci/nci 0x91e76192 nci_nfcee_mode_set +EXPORT_SYMBOL net/nfc/nci/nci 0xa20f3496 nci_core_conn_create +EXPORT_SYMBOL net/nfc/nci/nci 0xa8182349 nci_unregister_device +EXPORT_SYMBOL net/nfc/nci/nci 0xa8b74f36 nci_set_config +EXPORT_SYMBOL net/nfc/nci/nci 0xb69328af nci_free_device +EXPORT_SYMBOL net/nfc/nci/nci 0xba490602 nci_to_errno +EXPORT_SYMBOL net/nfc/nci/nci 0xcbe7cbe5 nci_nfcee_discover +EXPORT_SYMBOL net/nfc/nci/nci 0xcedb47f9 nci_req_complete +EXPORT_SYMBOL net/nfc/nci/nci 0xd18d0252 nci_hci_dev_session_init +EXPORT_SYMBOL net/nfc/nfc 0x13cbd76c nfc_driver_failure +EXPORT_SYMBOL net/nfc/nfc 0x3270e5b7 nfc_class +EXPORT_SYMBOL net/nfc/nfc 0x4189853d nfc_se_transaction +EXPORT_SYMBOL net/nfc/nfc 0x45724f32 nfc_set_remote_general_bytes +EXPORT_SYMBOL net/nfc/nfc 0x5a7ab991 nfc_register_device +EXPORT_SYMBOL net/nfc/nfc 0x72d4113e nfc_send_to_raw_sock +EXPORT_SYMBOL net/nfc/nfc 0x86854931 nfc_tm_deactivated +EXPORT_SYMBOL net/nfc/nfc 0x8eafbf19 nfc_proto_register +EXPORT_SYMBOL net/nfc/nfc 0x99176f32 nfc_dep_link_is_up +EXPORT_SYMBOL net/nfc/nfc 0xa4744dec nfc_add_se +EXPORT_SYMBOL net/nfc/nfc 0xaac7ad3d nfc_proto_unregister +EXPORT_SYMBOL net/nfc/nfc 0xb2ee20d6 nfc_fw_download_done +EXPORT_SYMBOL net/nfc/nfc 0xb3115b10 nfc_unregister_device +EXPORT_SYMBOL net/nfc/nfc 0xc7c6a256 nfc_get_local_general_bytes +EXPORT_SYMBOL net/nfc/nfc 0xc7e64616 nfc_allocate_device +EXPORT_SYMBOL net/nfc/nfc 0xe13c3b83 nfc_targets_found +EXPORT_SYMBOL net/nfc/nfc 0xe3b909d1 nfc_tm_activated +EXPORT_SYMBOL net/nfc/nfc 0xe4099b88 nfc_tm_data_received +EXPORT_SYMBOL net/nfc/nfc 0xeb06c014 nfc_find_se +EXPORT_SYMBOL net/nfc/nfc 0xeeaecc44 nfc_target_lost +EXPORT_SYMBOL net/nfc/nfc 0xf4670416 nfc_alloc_recv_skb +EXPORT_SYMBOL net/nfc/nfc 0xf7e6795d nfc_remove_se +EXPORT_SYMBOL net/nfc/nfc_digital 0x15f4ba74 nfc_digital_unregister_device +EXPORT_SYMBOL net/nfc/nfc_digital 0x6da97287 nfc_digital_allocate_device +EXPORT_SYMBOL net/nfc/nfc_digital 0x902a40b0 nfc_digital_free_device +EXPORT_SYMBOL net/nfc/nfc_digital 0xee4c5cce nfc_digital_register_device +EXPORT_SYMBOL net/phonet/phonet 0x2f6f3e62 phonet_header_ops +EXPORT_SYMBOL net/phonet/phonet 0x62f7e4c2 pn_skb_send +EXPORT_SYMBOL net/phonet/phonet 0x67e0feb2 phonet_proto_unregister +EXPORT_SYMBOL net/phonet/phonet 0xa497a026 pn_sock_hash +EXPORT_SYMBOL net/phonet/phonet 0xc8f5b857 pn_sock_get_port +EXPORT_SYMBOL net/phonet/phonet 0xcf215ca7 phonet_proto_register +EXPORT_SYMBOL net/phonet/phonet 0xea728d70 phonet_stream_ops +EXPORT_SYMBOL net/phonet/phonet 0xeb28f1ff pn_sock_unhash +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x03563346 rxrpc_get_server_data_key +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x0b25bd0b rxrpc_kernel_end_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x100774b8 rxrpc_kernel_send_data +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x13953338 rxrpc_kernel_get_error_number +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x28730be6 rxrpc_kernel_data_delivered +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x39d71f60 rxrpc_kernel_free_skb +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x46f50b85 rxrpc_kernel_intercept_rx_messages +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x5260a389 key_type_rxrpc +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x6954d846 rxrpc_kernel_is_data_last +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x6e0dc984 rxrpc_get_null_key +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x7e1eec2b rxrpc_kernel_begin_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x96e51e71 rxrpc_kernel_get_abort_code +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xdecc873e rxrpc_kernel_accept_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xe5d3ca06 rxrpc_kernel_abort_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xec3c3c27 rxrpc_kernel_reject_call +EXPORT_SYMBOL net/sctp/sctp 0xeae3cec9 sctp_do_peeloff +EXPORT_SYMBOL net/sunrpc/auth_gss/auth_rpcgss 0x04e4ded4 gss_mech_put +EXPORT_SYMBOL net/sunrpc/auth_gss/auth_rpcgss 0x102f1e72 gss_pseudoflavor_to_service +EXPORT_SYMBOL net/sunrpc/auth_gss/auth_rpcgss 0x29575c84 gss_mech_get +EXPORT_SYMBOL net/sunrpc/sunrpc 0x047c15f0 svc_pool_stats_open +EXPORT_SYMBOL net/sunrpc/sunrpc 0x9a758264 xdr_restrict_buflen +EXPORT_SYMBOL net/sunrpc/sunrpc 0xa7d0c14c xdr_truncate_encode +EXPORT_SYMBOL net/wimax/wimax 0x189700e5 wimax_rfkill +EXPORT_SYMBOL net/wimax/wimax 0x1baf5fef wimax_reset +EXPORT_SYMBOL net/wireless/cfg80211 0x01750edf cfg80211_cac_event +EXPORT_SYMBOL net/wireless/cfg80211 0x0388e9ea cfg80211_michael_mic_failure +EXPORT_SYMBOL net/wireless/cfg80211 0x061b925b cfg80211_reg_can_beacon_relax +EXPORT_SYMBOL net/wireless/cfg80211 0x090452ef cfg80211_ibss_joined +EXPORT_SYMBOL net/wireless/cfg80211 0x0970fce0 wiphy_register +EXPORT_SYMBOL net/wireless/cfg80211 0x09c64fbd ieee80211_frequency_to_channel +EXPORT_SYMBOL net/wireless/cfg80211 0x0b0f2021 __cfg80211_alloc_event_skb +EXPORT_SYMBOL net/wireless/cfg80211 0x0bccdd83 cfg80211_scan_done +EXPORT_SYMBOL net/wireless/cfg80211 0x0c2db3b5 cfg80211_radar_event +EXPORT_SYMBOL net/wireless/cfg80211 0x15836391 cfg80211_roamed_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x1879fcbd bridge_tunnel_header +EXPORT_SYMBOL net/wireless/cfg80211 0x19e03378 cfg80211_get_p2p_attr +EXPORT_SYMBOL net/wireless/cfg80211 0x1a0b3da1 cfg80211_rx_unexpected_4addr_frame +EXPORT_SYMBOL net/wireless/cfg80211 0x1b960026 cfg80211_report_obss_beacon +EXPORT_SYMBOL net/wireless/cfg80211 0x201aa0b1 cfg80211_connect_result +EXPORT_SYMBOL net/wireless/cfg80211 0x256cc336 cfg80211_rx_mlme_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0x2594b5e1 cfg80211_chandef_usable +EXPORT_SYMBOL net/wireless/cfg80211 0x264c4646 cfg80211_inform_bss_width +EXPORT_SYMBOL net/wireless/cfg80211 0x27dc4397 ieee80211_data_to_8023 +EXPORT_SYMBOL net/wireless/cfg80211 0x29b72e94 cfg80211_auth_timeout +EXPORT_SYMBOL net/wireless/cfg80211 0x2d5724d9 cfg80211_ch_switch_started_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x2fcbd5c0 cfg80211_remain_on_channel_expired +EXPORT_SYMBOL net/wireless/cfg80211 0x3025fbe4 wiphy_new_nm +EXPORT_SYMBOL net/wireless/cfg80211 0x32fc86ad cfg80211_assoc_timeout +EXPORT_SYMBOL net/wireless/cfg80211 0x3665b7b1 wiphy_rfkill_start_polling +EXPORT_SYMBOL net/wireless/cfg80211 0x3788ee1f wiphy_apply_custom_regulatory +EXPORT_SYMBOL net/wireless/cfg80211 0x37ae1cb1 cfg80211_report_wowlan_wakeup +EXPORT_SYMBOL net/wireless/cfg80211 0x3d470c4d cfg80211_chandef_compatible +EXPORT_SYMBOL net/wireless/cfg80211 0x3e285fec cfg80211_chandef_valid +EXPORT_SYMBOL net/wireless/cfg80211 0x3f13d237 cfg80211_cqm_rssi_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x422a0b25 cfg80211_put_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x44606d0b regulatory_set_wiphy_regd_sync_rtnl +EXPORT_SYMBOL net/wireless/cfg80211 0x495457ff cfg80211_calculate_bitrate +EXPORT_SYMBOL net/wireless/cfg80211 0x4fa9fe15 cfg80211_iter_combinations +EXPORT_SYMBOL net/wireless/cfg80211 0x4fef0577 wiphy_rfkill_set_hw_state +EXPORT_SYMBOL net/wireless/cfg80211 0x50214c28 ieee80211_bss_get_ie +EXPORT_SYMBOL net/wireless/cfg80211 0x520ef4e5 cfg80211_classify8021d +EXPORT_SYMBOL net/wireless/cfg80211 0x55d1224e __cfg80211_send_event_skb +EXPORT_SYMBOL net/wireless/cfg80211 0x5649c362 cfg80211_ref_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x56ca98f4 cfg80211_tx_mlme_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0x6719e2b3 ieee80211_amsdu_to_8023s +EXPORT_SYMBOL net/wireless/cfg80211 0x68c5515f cfg80211_tdls_oper_request +EXPORT_SYMBOL net/wireless/cfg80211 0x69580538 cfg80211_get_station +EXPORT_SYMBOL net/wireless/cfg80211 0x69b18f43 rfc1042_header +EXPORT_SYMBOL net/wireless/cfg80211 0x6b4eeb59 cfg80211_chandef_dfs_required +EXPORT_SYMBOL net/wireless/cfg80211 0x6d6cb9ad ieee80211_operating_class_to_band +EXPORT_SYMBOL net/wireless/cfg80211 0x70e5cb48 regulatory_hint +EXPORT_SYMBOL net/wireless/cfg80211 0x722a24de __cfg80211_alloc_reply_skb +EXPORT_SYMBOL net/wireless/cfg80211 0x7464a1ef cfg80211_gtk_rekey_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x782de48b cfg80211_check_combinations +EXPORT_SYMBOL net/wireless/cfg80211 0x7916e660 cfg80211_sched_scan_stopped +EXPORT_SYMBOL net/wireless/cfg80211 0x7cc3320e cfg80211_disconnected +EXPORT_SYMBOL net/wireless/cfg80211 0x7d8fe370 cfg80211_unlink_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x7ef39823 ieee80211_hdrlen +EXPORT_SYMBOL net/wireless/cfg80211 0x7fe1a403 cfg80211_find_ie +EXPORT_SYMBOL net/wireless/cfg80211 0x8388b5e2 cfg80211_inform_bss_width_frame +EXPORT_SYMBOL net/wireless/cfg80211 0x8492a430 ieee80211_get_response_rate +EXPORT_SYMBOL net/wireless/cfg80211 0x893a5e79 cfg80211_conn_failed +EXPORT_SYMBOL net/wireless/cfg80211 0x8a7062a5 ieee80211_mandatory_rates +EXPORT_SYMBOL net/wireless/cfg80211 0x8cc710dc cfg80211_ready_on_channel +EXPORT_SYMBOL net/wireless/cfg80211 0x8fcc6c00 cfg80211_notify_new_peer_candidate +EXPORT_SYMBOL net/wireless/cfg80211 0x90bc1dc8 cfg80211_ch_switch_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x90c1b931 freq_reg_info +EXPORT_SYMBOL net/wireless/cfg80211 0x90ee5a51 cfg80211_cqm_beacon_loss_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x966ff54d ieee80211_ie_split_ric +EXPORT_SYMBOL net/wireless/cfg80211 0x982e6b6d ieee80211_radiotap_iterator_init +EXPORT_SYMBOL net/wireless/cfg80211 0x994e0eb6 wiphy_unregister +EXPORT_SYMBOL net/wireless/cfg80211 0x9c59b611 cfg80211_mgmt_tx_status +EXPORT_SYMBOL net/wireless/cfg80211 0xa1425906 ieee80211_channel_to_frequency +EXPORT_SYMBOL net/wireless/cfg80211 0xa197b1ff ieee80211_get_mesh_hdrlen +EXPORT_SYMBOL net/wireless/cfg80211 0xa2bec020 cfg80211_reg_can_beacon +EXPORT_SYMBOL net/wireless/cfg80211 0xa3920406 cfg80211_cqm_txe_notify +EXPORT_SYMBOL net/wireless/cfg80211 0xa63786ba cfg80211_rx_spurious_frame +EXPORT_SYMBOL net/wireless/cfg80211 0xab7e445f __ieee80211_get_channel +EXPORT_SYMBOL net/wireless/cfg80211 0xac64d767 ieee80211_data_from_8023 +EXPORT_SYMBOL net/wireless/cfg80211 0xb03f4480 cfg80211_check_station_change +EXPORT_SYMBOL net/wireless/cfg80211 0xb2f7eef8 wiphy_rfkill_stop_polling +EXPORT_SYMBOL net/wireless/cfg80211 0xbaeb91f0 cfg80211_roamed +EXPORT_SYMBOL net/wireless/cfg80211 0xbc1862ba cfg80211_new_sta +EXPORT_SYMBOL net/wireless/cfg80211 0xc5c577a7 cfg80211_get_drvinfo +EXPORT_SYMBOL net/wireless/cfg80211 0xc63f1b81 ieee80211_radiotap_iterator_next +EXPORT_SYMBOL net/wireless/cfg80211 0xc90fde22 ieee80211_chandef_to_operating_class +EXPORT_SYMBOL net/wireless/cfg80211 0xcb4dc98b cfg80211_get_bss +EXPORT_SYMBOL net/wireless/cfg80211 0xcd81a752 cfg80211_cqm_pktloss_notify +EXPORT_SYMBOL net/wireless/cfg80211 0xd0dca61a cfg80211_stop_iface +EXPORT_SYMBOL net/wireless/cfg80211 0xd0f4d2dc cfg80211_rx_assoc_resp +EXPORT_SYMBOL net/wireless/cfg80211 0xd33f2e37 ieee80211_get_hdrlen_from_skb +EXPORT_SYMBOL net/wireless/cfg80211 0xd49a90dd cfg80211_sched_scan_results +EXPORT_SYMBOL net/wireless/cfg80211 0xd505b024 cfg80211_del_sta_sinfo +EXPORT_SYMBOL net/wireless/cfg80211 0xd571de47 cfg80211_ft_event +EXPORT_SYMBOL net/wireless/cfg80211 0xd7bd215b cfg80211_probe_status +EXPORT_SYMBOL net/wireless/cfg80211 0xd9dbd3a1 cfg80211_crit_proto_stopped +EXPORT_SYMBOL net/wireless/cfg80211 0xdba126c1 reg_initiator_name +EXPORT_SYMBOL net/wireless/cfg80211 0xdc3584e6 ieee80211_get_num_supported_channels +EXPORT_SYMBOL net/wireless/cfg80211 0xde3ace62 regulatory_set_wiphy_regd +EXPORT_SYMBOL net/wireless/cfg80211 0xdf708454 cfg80211_sched_scan_stopped_rtnl +EXPORT_SYMBOL net/wireless/cfg80211 0xe4ee8f94 cfg80211_rx_unprot_mlme_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0xeb6d7c6c ieee80211_ie_split +EXPORT_SYMBOL net/wireless/cfg80211 0xec0776ec wiphy_free +EXPORT_SYMBOL net/wireless/cfg80211 0xefc56354 cfg80211_chandef_create +EXPORT_SYMBOL net/wireless/cfg80211 0xf2686471 cfg80211_pmksa_candidate_notify +EXPORT_SYMBOL net/wireless/cfg80211 0xf2f66cdd cfg80211_rx_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0xf5a99588 cfg80211_unregister_wdev +EXPORT_SYMBOL net/wireless/cfg80211 0xfed4d591 cfg80211_find_vendor_ie +EXPORT_SYMBOL net/wireless/lib80211 0x0f7fab59 lib80211_get_crypto_ops +EXPORT_SYMBOL net/wireless/lib80211 0x36cc6576 lib80211_crypt_info_init +EXPORT_SYMBOL net/wireless/lib80211 0x4ccb97f4 lib80211_unregister_crypto_ops +EXPORT_SYMBOL net/wireless/lib80211 0x4d4d63ad lib80211_crypt_info_free +EXPORT_SYMBOL net/wireless/lib80211 0x93587e60 lib80211_register_crypto_ops +EXPORT_SYMBOL net/wireless/lib80211 0xc27266ba lib80211_crypt_delayed_deinit +EXPORT_SYMBOL sound/core/oss/snd-mixer-oss 0x5695ed21 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 0x206ee83d 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 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 0xb949cace snd_seq_event_port_attach +EXPORT_SYMBOL sound/core/seq/snd-seq 0xcac0a3be snd_seq_kernel_client_enqueue +EXPORT_SYMBOL sound/core/seq/snd-seq 0xd0f817da snd_seq_create_kernel_client +EXPORT_SYMBOL sound/core/seq/snd-seq 0xe56d808f snd_seq_kernel_client_enqueue_blocking +EXPORT_SYMBOL sound/core/seq/snd-seq 0xe934da1d snd_seq_dump_var_event +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0x091def1c snd_seq_autoload_exit +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0x370a0736 snd_seq_autoload_init +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0x6339b6d0 snd_seq_device_load_drivers +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0x94089555 snd_seq_device_new +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 0xf0a1fdb3 snd_midi_process_event +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x127b30fb snd_midi_event_encode +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x1cdc0812 snd_midi_event_decode +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x59eb74ae snd_midi_event_encode_byte +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x8102ed2f snd_midi_event_reset_encode +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0xb11ba32d snd_midi_event_new +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0xb2c7f684 snd_midi_event_reset_decode +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0xea0e5748 snd_midi_event_free +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0xed42580b snd_midi_event_no_status +EXPORT_SYMBOL sound/core/seq/snd-seq-virmidi 0x6f736dc5 snd_virmidi_new +EXPORT_SYMBOL sound/core/snd-hwdep 0xf60c5c8b snd_hwdep_new +EXPORT_SYMBOL sound/core/snd-rawmidi 0x01bd7026 snd_rawmidi_transmit_ack +EXPORT_SYMBOL sound/core/snd-rawmidi 0x0e6d7621 snd_rawmidi_info_select +EXPORT_SYMBOL sound/core/snd-rawmidi 0x37321c49 snd_rawmidi_transmit_empty +EXPORT_SYMBOL sound/core/snd-rawmidi 0x4493ac16 snd_rawmidi_drain_input +EXPORT_SYMBOL sound/core/snd-rawmidi 0x5bbc4cc5 snd_rawmidi_kernel_release +EXPORT_SYMBOL sound/core/snd-rawmidi 0x732574f9 snd_rawmidi_receive +EXPORT_SYMBOL sound/core/snd-rawmidi 0x758f3cb7 snd_rawmidi_input_params +EXPORT_SYMBOL sound/core/snd-rawmidi 0x80176f70 snd_rawmidi_drop_output +EXPORT_SYMBOL sound/core/snd-rawmidi 0x8f5640de snd_rawmidi_output_params +EXPORT_SYMBOL sound/core/snd-rawmidi 0xba49539f snd_rawmidi_new +EXPORT_SYMBOL sound/core/snd-rawmidi 0xbe03ffff snd_rawmidi_kernel_write +EXPORT_SYMBOL sound/core/snd-rawmidi 0xc058492f snd_rawmidi_kernel_read +EXPORT_SYMBOL sound/core/snd-rawmidi 0xc182c3d8 snd_rawmidi_kernel_open +EXPORT_SYMBOL sound/core/snd-rawmidi 0xc3c7cf53 snd_rawmidi_drain_output +EXPORT_SYMBOL sound/core/snd-rawmidi 0xe5e94732 snd_rawmidi_transmit +EXPORT_SYMBOL sound/core/snd-rawmidi 0xe93731db snd_rawmidi_transmit_peek +EXPORT_SYMBOL sound/core/snd-rawmidi 0xfd805d7d snd_rawmidi_set_ops +EXPORT_SYMBOL sound/drivers/mpu401/snd-mpu401-uart 0x34aea050 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 0x129f3a4e snd_opl3_reset +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x1e2303bc snd_opl3_hwdep_new +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x25d3e36d snd_opl3_init +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x38566553 snd_opl3_find_patch +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x454348fd snd_opl3_interrupt +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x665c369e snd_opl3_create +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x69e7fc66 snd_opl3_load_patch +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xad11f6e7 snd_opl3_new +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xd5248825 snd_opl3_timer_new +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x0e08b66d 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 0x3ae88a21 snd_vx_dsp_load +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x5c032be2 snd_vx_suspend +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x91b850ee snd_vx_resume +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xb6f92b52 snd_vx_create +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xdb6136cc snd_vx_setup_firmware +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xe90d34b7 snd_vx_check_reg_bit +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xf1f04d23 snd_vx_irq_handler +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xf9ef404c snd_vx_free_firmware +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xffdbca39 snd_vx_dsp_boot +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x02af22ed avc_general_set_sig_fmt +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x0e5e462d amdtp_stream_add_pcm_hw_constraints +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x11210577 fcp_avc_transaction +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x169a8edc amdtp_stream_update +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x20254e45 amdtp_syt_intervals +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x269c1987 cmp_connection_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x2fa17a15 amdtp_stream_set_pcm_format +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x30269463 amdtp_stream_stop +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x317ec705 amdtp_stream_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x34230c25 amdtp_stream_pcm_pointer +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x3a644fc2 fw_iso_resources_free +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x41e7da5c amdtp_stream_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x53ca18e8 amdtp_rate_table +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x56ddb00c avc_general_get_sig_fmt +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x59fc3b2c amdtp_stream_pcm_abort +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x5ec95371 cmp_connection_break +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x6222afd4 iso_packets_buffer_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x78ccefb1 snd_fw_transaction +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x7d73020d amdtp_stream_pcm_prepare +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x815c631b fcp_bus_reset +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x8345eb16 avc_general_get_plug_info +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x85e63cbf cmp_connection_update +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x970fb57f amdtp_stream_start +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xa8a91c0a cmp_connection_establish +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xabd784a9 fw_iso_resources_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xafe0055b cmp_connection_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xb396d0ec fw_iso_resources_update +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xd8ccfd5c cmp_connection_check_used +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xddffa5a4 amdtp_stream_set_parameters +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xe4dcb137 iso_packets_buffer_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xf1ec7a51 fw_iso_resources_allocate +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xf3955d50 amdtp_stream_get_max_payload +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xf7f04428 fw_iso_resources_destroy +EXPORT_SYMBOL sound/i2c/other/snd-ak4113 0x03f1cbad snd_ak4113_resume +EXPORT_SYMBOL sound/i2c/other/snd-ak4113 0xe51dcc34 snd_ak4113_suspend +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x06f93b82 snd_ak4114_reg_write +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x3c590059 snd_ak4114_external_rate +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x51679dfe snd_ak4114_resume +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x548b469b snd_ak4114_build +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x60c229d7 snd_ak4114_suspend +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x953600b1 snd_ak4114_reinit +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x9e0cc823 snd_ak4114_check_rate_and_errors +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0xa9201cfd snd_ak4114_create +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0x71544e19 snd_akm4xxx_reset +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0xb14a1fe2 snd_akm4xxx_write +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0xbe7a4f53 snd_akm4xxx_init +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0xf06021fa snd_akm4xxx_build_controls +EXPORT_SYMBOL sound/i2c/other/snd-pt2258 0xb93fc3ba snd_pt2258_build_controls +EXPORT_SYMBOL sound/i2c/other/snd-pt2258 0xc5777bd6 snd_pt2258_reset +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x15e9f2e5 snd_cs8427_init +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x39637e9c snd_cs8427_iec958_active +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x48b7e0c4 snd_cs8427_iec958_build +EXPORT_SYMBOL sound/i2c/snd-cs8427 0xa5ad0ab8 snd_cs8427_reg_write +EXPORT_SYMBOL sound/i2c/snd-cs8427 0xb2671822 snd_cs8427_create +EXPORT_SYMBOL sound/i2c/snd-cs8427 0xbe8690ea snd_cs8427_iec958_pcm +EXPORT_SYMBOL sound/i2c/snd-i2c 0x17327bcf snd_i2c_sendbytes +EXPORT_SYMBOL sound/i2c/snd-i2c 0x26bbf59c snd_i2c_bus_create +EXPORT_SYMBOL sound/i2c/snd-i2c 0x5182031b snd_i2c_device_create +EXPORT_SYMBOL sound/i2c/snd-i2c 0x611771fd snd_i2c_device_free +EXPORT_SYMBOL sound/i2c/snd-i2c 0x72992a80 snd_i2c_readbytes +EXPORT_SYMBOL sound/i2c/snd-i2c 0x94279afa snd_i2c_probeaddr +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x0037cb0c snd_ac97_write_cache +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x0c2117b7 snd_ac97_mixer +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x1abaad24 snd_ac97_pcm_assign +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x28171aa3 snd_ac97_update_power +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x3ec74ef4 snd_ac97_set_rate +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x4b288741 snd_ac97_tune_hardware +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x5c939e63 snd_ac97_update_bits +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x60369e23 snd_ac97_resume +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x6c6e31c4 snd_ac97_read +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x7665ea4d snd_ac97_bus +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x87eb3f0e snd_ac97_suspend +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x8b4ee699 snd_ac97_pcm_close +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xa93dcc57 snd_ac97_pcm_open +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xc606619e snd_ac97_pcm_double_rate_rules +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xceab4f2a snd_ac97_get_short_name +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xd754f679 snd_ac97_update +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xf324dd56 snd_ac97_write +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x13970fd1 snd_emu10k1_synth_alloc +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x2c0c548f snd_emu10k1_voice_alloc +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x37923252 snd_emu10k1_ptr_read +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x6693a046 snd_emu10k1_synth_free +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x7b84f11c snd_emu10k1_voice_free +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x829f57e1 snd_emu10k1_ptr_write +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xc0c66d9c snd_emu10k1_synth_copy_from_user +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xdf2e456b snd_emu10k1_synth_bzero +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xf1ce1cea snd_emu10k1_memblk_map +EXPORT_SYMBOL sound/pci/ice1712/snd-ice17xx-ak4xxx 0x1834b4a9 snd_ice1712_akm4xxx_build_controls +EXPORT_SYMBOL sound/pci/ice1712/snd-ice17xx-ak4xxx 0x5f516baf snd_ice1712_akm4xxx_init +EXPORT_SYMBOL sound/pci/ice1712/snd-ice17xx-ak4xxx 0xa4fe5146 snd_ice1712_akm4xxx_free +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x053809e5 oxygen_pci_shutdown +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x0d93d45b oxygen_write_spi +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x25645b1a oxygen_pci_pm +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x2b9d3212 oxygen_reset_uart +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x35dfd8fc oxygen_write_i2c +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x398a109c oxygen_pci_remove +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x3a05fefc oxygen_write8 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x4956c733 oxygen_write16_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x527dae9e oxygen_read8 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x7651d682 oxygen_read_ac97 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xaf7df52e oxygen_write32 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xbcda7f59 oxygen_write8_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xc91c0122 oxygen_write32_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xd08e4c2a oxygen_write_uart +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xd18383bd oxygen_read16 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xd280d6ef oxygen_read32 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xd9417198 oxygen_write_ac97 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xdb0604be oxygen_update_dac_routing +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xe44ba321 oxygen_write16 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xf69033c6 oxygen_pci_probe +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xffdea800 oxygen_write_ac97_masked +EXPORT_SYMBOL sound/pci/trident/snd-trident 0x132b16de snd_trident_free_voice +EXPORT_SYMBOL sound/pci/trident/snd-trident 0x784e8b1c snd_trident_alloc_voice +EXPORT_SYMBOL sound/pci/trident/snd-trident 0xb831df41 snd_trident_stop_voice +EXPORT_SYMBOL sound/pci/trident/snd-trident 0xdd0499c0 snd_trident_start_voice +EXPORT_SYMBOL sound/pci/trident/snd-trident 0xf58c21dc snd_trident_write_voice_regs +EXPORT_SYMBOL sound/soc/codecs/snd-soc-tlv320aic23 0x4c189a49 tlv320aic23_probe +EXPORT_SYMBOL sound/soc/codecs/snd-soc-tlv320aic23 0x8d2d1a3e tlv320aic23_regmap +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x0b5cf788 snd_emux_new +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x17bc94fd snd_emux_register +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x42ba575f snd_emux_unlock_voice +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x47b17452 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 0x6e232178 snd_emux_free +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0xf8b1bb8b snd_emux_terminate_all +EXPORT_SYMBOL sound/synth/snd-util-mem 0x112dcfac snd_util_memhdr_free +EXPORT_SYMBOL sound/synth/snd-util-mem 0x3d7d2369 snd_util_mem_alloc +EXPORT_SYMBOL sound/synth/snd-util-mem 0x869780d6 __snd_util_mem_free +EXPORT_SYMBOL sound/synth/snd-util-mem 0x8c9d2094 __snd_util_mem_alloc +EXPORT_SYMBOL sound/synth/snd-util-mem 0x9024b505 snd_util_mem_avail +EXPORT_SYMBOL sound/synth/snd-util-mem 0x9956cd11 snd_util_mem_free +EXPORT_SYMBOL sound/synth/snd-util-mem 0x9ae7d6b4 __snd_util_memblk_new +EXPORT_SYMBOL sound/synth/snd-util-mem 0x9d0ce273 snd_util_memhdr_new +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 0x63480212 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 0x00145527 genphy_read_status +EXPORT_SYMBOL vmlinux 0x0030a83e blk_mq_requeue_request +EXPORT_SYMBOL vmlinux 0x00507282 km_state_expired +EXPORT_SYMBOL vmlinux 0x005a5ce6 iget5_locked +EXPORT_SYMBOL vmlinux 0x006650b8 security_dentry_init_security +EXPORT_SYMBOL vmlinux 0x007c0698 tty_mutex +EXPORT_SYMBOL vmlinux 0x007ff031 dcache_dir_lseek +EXPORT_SYMBOL vmlinux 0x00898e14 of_match_device +EXPORT_SYMBOL vmlinux 0x008faac1 pcibios_bus_to_resource +EXPORT_SYMBOL vmlinux 0x009091ff pci_get_slot +EXPORT_SYMBOL vmlinux 0x00b5ff34 sock_no_getsockopt +EXPORT_SYMBOL vmlinux 0x00cd315f n_tty_ioctl_helper +EXPORT_SYMBOL vmlinux 0x00d7e722 vme_lm_count +EXPORT_SYMBOL vmlinux 0x00e17722 nf_unregister_hooks +EXPORT_SYMBOL vmlinux 0x00ea2b77 nf_ct_attach +EXPORT_SYMBOL vmlinux 0x01000e51 schedule +EXPORT_SYMBOL vmlinux 0x0101d5b1 ip_idents_reserve +EXPORT_SYMBOL vmlinux 0x01139ffc max_mapnr +EXPORT_SYMBOL vmlinux 0x0117f3de dev_err +EXPORT_SYMBOL vmlinux 0x01197242 udp6_set_csum +EXPORT_SYMBOL vmlinux 0x011a9e53 elf_hwcap2 +EXPORT_SYMBOL vmlinux 0x012cefec pci_request_region +EXPORT_SYMBOL vmlinux 0x0169d02c __xfrm_route_forward +EXPORT_SYMBOL vmlinux 0x016e5c2a mod_timer +EXPORT_SYMBOL vmlinux 0x016f28ec empty_aops +EXPORT_SYMBOL vmlinux 0x0174385a vme_irq_request +EXPORT_SYMBOL vmlinux 0x0186e2de smp_call_function_many +EXPORT_SYMBOL vmlinux 0x0192d58f kernel_read +EXPORT_SYMBOL vmlinux 0x0193caa7 nvdimm_namespace_common_probe +EXPORT_SYMBOL vmlinux 0x01953cde amba_request_regions +EXPORT_SYMBOL vmlinux 0x01a3d310 omap_set_dma_channel_mode +EXPORT_SYMBOL vmlinux 0x01b7fd59 dispc_read_irqstatus +EXPORT_SYMBOL vmlinux 0x01ceb09f del_random_ready_callback +EXPORT_SYMBOL vmlinux 0x01cf7e39 snd_card_register +EXPORT_SYMBOL vmlinux 0x01cfcc5a devfreq_unregister_opp_notifier +EXPORT_SYMBOL vmlinux 0x01da2eee pci_lost_interrupt +EXPORT_SYMBOL vmlinux 0x01ea132e dispc_runtime_put +EXPORT_SYMBOL vmlinux 0x0203351d scsi_cmd_ioctl +EXPORT_SYMBOL vmlinux 0x02124474 ip_send_check +EXPORT_SYMBOL vmlinux 0x02196324 __aeabi_idiv +EXPORT_SYMBOL vmlinux 0x021b675d jbd2_journal_file_inode +EXPORT_SYMBOL vmlinux 0x021b8b2b mfd_add_devices +EXPORT_SYMBOL vmlinux 0x02419ad6 noop_fsync +EXPORT_SYMBOL vmlinux 0x0247492f iunique +EXPORT_SYMBOL vmlinux 0x02573b36 omap_disable_dma_irq +EXPORT_SYMBOL vmlinux 0x025f5a18 blk_alloc_queue +EXPORT_SYMBOL vmlinux 0x02649054 security_sock_rcv_skb +EXPORT_SYMBOL vmlinux 0x0270d4f3 cdrom_media_changed +EXPORT_SYMBOL vmlinux 0x0274dc2b netif_get_num_default_rss_queues +EXPORT_SYMBOL vmlinux 0x0275ef63 prepare_kernel_cred +EXPORT_SYMBOL vmlinux 0x027b7df0 __xfrm_decode_session +EXPORT_SYMBOL vmlinux 0x0283dfe3 _snd_pcm_hw_params_any +EXPORT_SYMBOL vmlinux 0x02a18c74 nf_conntrack_destroy +EXPORT_SYMBOL vmlinux 0x02a6ce5a crc16_table +EXPORT_SYMBOL vmlinux 0x02e0738b blk_make_request +EXPORT_SYMBOL vmlinux 0x02ea111e scsi_driverbyte_string +EXPORT_SYMBOL vmlinux 0x02ee26c1 free_pages_exact +EXPORT_SYMBOL vmlinux 0x02ef742b percpu_counter_set +EXPORT_SYMBOL vmlinux 0x02feba76 tty_port_free_xmit_buf +EXPORT_SYMBOL vmlinux 0x03005606 omapdss_get_version +EXPORT_SYMBOL vmlinux 0x03026722 mempool_alloc +EXPORT_SYMBOL vmlinux 0x031f4cf5 key_link +EXPORT_SYMBOL vmlinux 0x0334795d icst307_s2div +EXPORT_SYMBOL vmlinux 0x0334da4e scsi_command_size_tbl +EXPORT_SYMBOL vmlinux 0x03592ea0 security_unix_stream_connect +EXPORT_SYMBOL vmlinux 0x03635439 edma_stop +EXPORT_SYMBOL vmlinux 0x03659c13 pci_select_bars +EXPORT_SYMBOL vmlinux 0x0366307a console_suspend_enabled +EXPORT_SYMBOL vmlinux 0x03761482 scsi_device_get +EXPORT_SYMBOL vmlinux 0x037a0cba kfree +EXPORT_SYMBOL vmlinux 0x038902f7 blk_dump_rq_flags +EXPORT_SYMBOL vmlinux 0x03b0a212 file_open_root +EXPORT_SYMBOL vmlinux 0x03ba39b0 v7_flush_user_cache_all +EXPORT_SYMBOL vmlinux 0x03c0e46d vme_slave_request +EXPORT_SYMBOL vmlinux 0x03ca2051 submit_bio_wait +EXPORT_SYMBOL vmlinux 0x03d0beeb pci_request_selected_regions +EXPORT_SYMBOL vmlinux 0x03db3fdc blk_init_queue_node +EXPORT_SYMBOL vmlinux 0x03f44007 tty_port_close +EXPORT_SYMBOL vmlinux 0x03fd2571 vm_unmap_ram +EXPORT_SYMBOL vmlinux 0x04016690 xfrm_state_add +EXPORT_SYMBOL vmlinux 0x0422fe4a inet_csk_timer_bug_msg +EXPORT_SYMBOL vmlinux 0x04336cfe jbd2_journal_wipe +EXPORT_SYMBOL vmlinux 0x04482cdb __refrigerator +EXPORT_SYMBOL vmlinux 0x045923d1 tcf_action_exec +EXPORT_SYMBOL vmlinux 0x04655571 pm860x_page_bulk_read +EXPORT_SYMBOL vmlinux 0x0467ec48 md_check_recovery +EXPORT_SYMBOL vmlinux 0x046c898f sock_common_getsockopt +EXPORT_SYMBOL vmlinux 0x0474a497 dma_async_device_unregister +EXPORT_SYMBOL vmlinux 0x0487f831 fb_find_best_display +EXPORT_SYMBOL vmlinux 0x04b96fe9 put_filp +EXPORT_SYMBOL vmlinux 0x04c388e2 xfrm_unregister_km +EXPORT_SYMBOL vmlinux 0x04c4e252 iov_iter_get_pages_alloc +EXPORT_SYMBOL vmlinux 0x04c74374 pipe_lock +EXPORT_SYMBOL vmlinux 0x04cda566 snd_interval_refine +EXPORT_SYMBOL vmlinux 0x04ea56f9 _kstrtol +EXPORT_SYMBOL vmlinux 0x0514c22a rc5t583_ext_power_req_config +EXPORT_SYMBOL vmlinux 0x0522896c dev_get_by_name +EXPORT_SYMBOL vmlinux 0x05240ee7 percpu_counter_batch +EXPORT_SYMBOL vmlinux 0x0534cdb1 eth_mac_addr +EXPORT_SYMBOL vmlinux 0x053902ef netif_device_detach +EXPORT_SYMBOL vmlinux 0x053ab63b pci_get_device +EXPORT_SYMBOL vmlinux 0x0562463f uart_add_one_port +EXPORT_SYMBOL vmlinux 0x0596e0a2 ptp_clock_index +EXPORT_SYMBOL vmlinux 0x05a9af18 __ethtool_get_settings +EXPORT_SYMBOL vmlinux 0x05c4b250 snd_jack_report +EXPORT_SYMBOL vmlinux 0x05c71772 mmc_can_discard +EXPORT_SYMBOL vmlinux 0x05d1edc8 netpoll_send_skb_on_dev +EXPORT_SYMBOL vmlinux 0x05dd0c6e clkdev_drop +EXPORT_SYMBOL vmlinux 0x05e6408f lease_modify +EXPORT_SYMBOL vmlinux 0x060fe64d udp_flush_pending_frames +EXPORT_SYMBOL vmlinux 0x061651be strcat +EXPORT_SYMBOL vmlinux 0x061848c0 blk_mq_unique_tag +EXPORT_SYMBOL vmlinux 0x0618f2ac of_find_node_by_type +EXPORT_SYMBOL vmlinux 0x061df441 snd_info_create_module_entry +EXPORT_SYMBOL vmlinux 0x0627eadb xfrm_policy_flush +EXPORT_SYMBOL vmlinux 0x0634100a bitmap_parselist_user +EXPORT_SYMBOL vmlinux 0x06425751 unlock_page +EXPORT_SYMBOL vmlinux 0x0647a498 __ip4_datagram_connect +EXPORT_SYMBOL vmlinux 0x065add51 tty_port_tty_get +EXPORT_SYMBOL vmlinux 0x0660107f blk_pre_runtime_resume +EXPORT_SYMBOL vmlinux 0x06607f92 dss_feat_get_supported_outputs +EXPORT_SYMBOL vmlinux 0x067d8d35 security_release_secctx +EXPORT_SYMBOL vmlinux 0x068b2ff0 tso_count_descs +EXPORT_SYMBOL vmlinux 0x06da2802 vc_resize +EXPORT_SYMBOL vmlinux 0x06e99514 pagecache_get_page +EXPORT_SYMBOL vmlinux 0x06ed71a9 snd_seq_root +EXPORT_SYMBOL vmlinux 0x06fe3b14 default_grn +EXPORT_SYMBOL vmlinux 0x070367ef pneigh_lookup +EXPORT_SYMBOL vmlinux 0x070b6885 skb_get_hash_perturb +EXPORT_SYMBOL vmlinux 0x072f901c vme_master_rmw +EXPORT_SYMBOL vmlinux 0x073bce87 edma_write_slot +EXPORT_SYMBOL vmlinux 0x074b78f3 blkdev_put +EXPORT_SYMBOL vmlinux 0x075285e9 of_n_size_cells +EXPORT_SYMBOL vmlinux 0x076c80b3 kernel_param_unlock +EXPORT_SYMBOL vmlinux 0x07a4b576 flex_array_free +EXPORT_SYMBOL vmlinux 0x07a890c8 fb_alloc_cmap +EXPORT_SYMBOL vmlinux 0x07aeb08c input_mt_drop_unused +EXPORT_SYMBOL vmlinux 0x07c96ba8 alloc_etherdev_mqs +EXPORT_SYMBOL vmlinux 0x07ca4886 phy_device_free +EXPORT_SYMBOL vmlinux 0x07cc4a5d printk_timed_ratelimit +EXPORT_SYMBOL vmlinux 0x07cf9099 wait_for_completion_timeout +EXPORT_SYMBOL vmlinux 0x07d1f0cd dss_mgr_set_timings +EXPORT_SYMBOL vmlinux 0x07d7d97d ip_options_compile +EXPORT_SYMBOL vmlinux 0x07d915c0 dss_mgr_unregister_framedone_handler +EXPORT_SYMBOL vmlinux 0x07eee5ec update_devfreq +EXPORT_SYMBOL vmlinux 0x0816d9be snd_dma_alloc_pages_fallback +EXPORT_SYMBOL vmlinux 0x081f3afb complete_all +EXPORT_SYMBOL vmlinux 0x082c3213 pci_root_buses +EXPORT_SYMBOL vmlinux 0x083eb21c rfkill_unregister +EXPORT_SYMBOL vmlinux 0x0841d91e nd_region_to_nstype +EXPORT_SYMBOL vmlinux 0x085079ba sync_inode_metadata +EXPORT_SYMBOL vmlinux 0x08537b1a i2c_verify_adapter +EXPORT_SYMBOL vmlinux 0x08586d8e kthread_create_on_node +EXPORT_SYMBOL vmlinux 0x087da932 keyring_alloc +EXPORT_SYMBOL vmlinux 0x088fc33b inode_add_bytes +EXPORT_SYMBOL vmlinux 0x08928b90 __nla_put +EXPORT_SYMBOL vmlinux 0x08a497ec eth_header_cache +EXPORT_SYMBOL vmlinux 0x08af3705 lookup_bdev +EXPORT_SYMBOL vmlinux 0x08aff01b inet_frags_exit_net +EXPORT_SYMBOL vmlinux 0x08e31d15 lookup_one_len +EXPORT_SYMBOL vmlinux 0x08ea69e7 mipi_dsi_packet_format_is_long +EXPORT_SYMBOL vmlinux 0x08f3768e neigh_sysctl_register +EXPORT_SYMBOL vmlinux 0x08f9f58a bdi_setup_and_register +EXPORT_SYMBOL vmlinux 0x09078d92 mmc_put_card +EXPORT_SYMBOL vmlinux 0x0908c6f4 dma_release_from_coherent +EXPORT_SYMBOL vmlinux 0x093b6155 passthru_features_check +EXPORT_SYMBOL vmlinux 0x09503458 ip6_route_me_harder +EXPORT_SYMBOL vmlinux 0x09580deb init_timer_key +EXPORT_SYMBOL vmlinux 0x0975920d abx500_register_ops +EXPORT_SYMBOL vmlinux 0x097bb5e5 inet_del_offload +EXPORT_SYMBOL vmlinux 0x097e4440 km_query +EXPORT_SYMBOL vmlinux 0x097ec1ff _raw_write_lock_irqsave +EXPORT_SYMBOL vmlinux 0x097fae3b dst_destroy +EXPORT_SYMBOL vmlinux 0x098292e5 crypto_sha256_update +EXPORT_SYMBOL vmlinux 0x098b71c6 fb_dealloc_cmap +EXPORT_SYMBOL vmlinux 0x09a73a3e cfb_copyarea +EXPORT_SYMBOL vmlinux 0x09a82767 pagevec_lookup +EXPORT_SYMBOL vmlinux 0x09c26301 register_key_type +EXPORT_SYMBOL vmlinux 0x09c55cec schedule_timeout_interruptible +EXPORT_SYMBOL vmlinux 0x09c8eb55 font_vga_8x16 +EXPORT_SYMBOL vmlinux 0x09cbce2a block_write_full_page +EXPORT_SYMBOL vmlinux 0x09cf1b46 proc_dointvec_jiffies +EXPORT_SYMBOL vmlinux 0x09d44df9 in_lock_functions +EXPORT_SYMBOL vmlinux 0x0a03db1e of_find_mipi_dsi_device_by_node +EXPORT_SYMBOL vmlinux 0x0a0786de udplite_table +EXPORT_SYMBOL vmlinux 0x0a2487e0 unblock_all_signals +EXPORT_SYMBOL vmlinux 0x0a292872 reservation_seqcount_class +EXPORT_SYMBOL vmlinux 0x0a3131f6 strnchr +EXPORT_SYMBOL vmlinux 0x0a373226 crc32_le_shift +EXPORT_SYMBOL vmlinux 0x0a3c1762 kernel_sock_shutdown +EXPORT_SYMBOL vmlinux 0x0a45523c tcf_em_tree_destroy +EXPORT_SYMBOL vmlinux 0x0a469d23 mfd_clone_cell +EXPORT_SYMBOL vmlinux 0x0a718b13 seq_vprintf +EXPORT_SYMBOL vmlinux 0x0aa309cf synchronize_hardirq +EXPORT_SYMBOL vmlinux 0x0aabb52f inet_csk_reset_keepalive_timer +EXPORT_SYMBOL vmlinux 0x0ab53ce9 __sb_end_write +EXPORT_SYMBOL vmlinux 0x0acf7679 dma_issue_pending_all +EXPORT_SYMBOL vmlinux 0x0ae3bd56 seq_put_decimal_ll +EXPORT_SYMBOL vmlinux 0x0ae78a75 inode_claim_rsv_space +EXPORT_SYMBOL vmlinux 0x0b087c7c con_copy_unimap +EXPORT_SYMBOL vmlinux 0x0b0d888b icmpv6_err_convert +EXPORT_SYMBOL vmlinux 0x0b1beb31 vmalloc_32_user +EXPORT_SYMBOL vmlinux 0x0b48677a __kfifo_init +EXPORT_SYMBOL vmlinux 0x0b565f1e t10_pi_type1_crc +EXPORT_SYMBOL vmlinux 0x0b5c7331 dma_declare_coherent_memory +EXPORT_SYMBOL vmlinux 0x0b742fd7 simple_strtol +EXPORT_SYMBOL vmlinux 0x0b923ae1 cpu_user +EXPORT_SYMBOL vmlinux 0x0b94dc85 snd_pcm_hw_param_first +EXPORT_SYMBOL vmlinux 0x0bbc5908 gen_estimator_active +EXPORT_SYMBOL vmlinux 0x0bc477a2 irq_set_irq_type +EXPORT_SYMBOL vmlinux 0x0bd27027 devm_gpio_request_one +EXPORT_SYMBOL vmlinux 0x0bd480e7 bio_alloc_bioset +EXPORT_SYMBOL vmlinux 0x0bd86d88 security_d_instantiate +EXPORT_SYMBOL vmlinux 0x0be1c421 filp_close +EXPORT_SYMBOL vmlinux 0x0bf2f2fd __netlink_dump_start +EXPORT_SYMBOL vmlinux 0x0c0b6e6d call_usermodehelper_setup +EXPORT_SYMBOL vmlinux 0x0c0c8fac netdev_warn +EXPORT_SYMBOL vmlinux 0x0c0e5f80 pci_bus_write_config_dword +EXPORT_SYMBOL vmlinux 0x0c0f11ab insert_inode_locked +EXPORT_SYMBOL vmlinux 0x0c1284a6 copy_to_iter +EXPORT_SYMBOL vmlinux 0x0c13104c neigh_lookup +EXPORT_SYMBOL vmlinux 0x0c2108d9 shdma_reset +EXPORT_SYMBOL vmlinux 0x0c328a7b skb_push +EXPORT_SYMBOL vmlinux 0x0c3c2213 snd_ctl_make_virtual_master +EXPORT_SYMBOL vmlinux 0x0c45fc96 vfs_lstat +EXPORT_SYMBOL vmlinux 0x0c58a8cd netdev_increment_features +EXPORT_SYMBOL vmlinux 0x0c92199d bitmap_close_sync +EXPORT_SYMBOL vmlinux 0x0ca0c882 twl6030_interrupt_mask +EXPORT_SYMBOL vmlinux 0x0ca54fee _test_and_set_bit +EXPORT_SYMBOL vmlinux 0x0cae232b utf16s_to_utf8s +EXPORT_SYMBOL vmlinux 0x0ccd5ff8 gro_find_receive_by_type +EXPORT_SYMBOL vmlinux 0x0cd6e696 unload_nls +EXPORT_SYMBOL vmlinux 0x0cdbdfa9 abx500_get_chip_id +EXPORT_SYMBOL vmlinux 0x0ceddbea d_drop +EXPORT_SYMBOL vmlinux 0x0cfefe1e percpu_counter_destroy +EXPORT_SYMBOL vmlinux 0x0d09ce44 fbcon_set_rotate +EXPORT_SYMBOL vmlinux 0x0d1018b9 omapdss_unregister_output +EXPORT_SYMBOL vmlinux 0x0d1637ef __dev_get_by_flags +EXPORT_SYMBOL vmlinux 0x0d1893fe fsync_bdev +EXPORT_SYMBOL vmlinux 0x0d3f57a2 _find_next_bit_le +EXPORT_SYMBOL vmlinux 0x0d496a34 devfreq_monitor_start +EXPORT_SYMBOL vmlinux 0x0d4c2e7d phy_ethtool_gset +EXPORT_SYMBOL vmlinux 0x0d4d7a32 _atomic_dec_and_lock +EXPORT_SYMBOL vmlinux 0x0d5100f4 shdma_init +EXPORT_SYMBOL vmlinux 0x0d542439 __ipv6_addr_type +EXPORT_SYMBOL vmlinux 0x0d56dc49 scsi_execute +EXPORT_SYMBOL vmlinux 0x0d61eeee __bitmap_subset +EXPORT_SYMBOL vmlinux 0x0d640094 mark_buffer_dirty_inode +EXPORT_SYMBOL vmlinux 0x0d66beb5 udplite_prot +EXPORT_SYMBOL vmlinux 0x0d860c7f devfreq_remove_governor +EXPORT_SYMBOL vmlinux 0x0d93b9df dev_trans_start +EXPORT_SYMBOL vmlinux 0x0d9fbd3a jbd2_journal_set_features +EXPORT_SYMBOL vmlinux 0x0da10ec3 security_sock_graft +EXPORT_SYMBOL vmlinux 0x0dc1a78c bin2hex +EXPORT_SYMBOL vmlinux 0x0dcc930a snd_pcm_hw_constraint_mask64 +EXPORT_SYMBOL vmlinux 0x0de9757a __cleancache_invalidate_page +EXPORT_SYMBOL vmlinux 0x0e0e3757 iov_iter_alignment +EXPORT_SYMBOL vmlinux 0x0e21a318 netdev_rx_csum_fault +EXPORT_SYMBOL vmlinux 0x0e3750d1 xfrm_register_type +EXPORT_SYMBOL vmlinux 0x0e3a025d tcp_conn_request +EXPORT_SYMBOL vmlinux 0x0e47dcab do_truncate +EXPORT_SYMBOL vmlinux 0x0e6da44a set_normalized_timespec +EXPORT_SYMBOL vmlinux 0x0e763a2b unregister_console +EXPORT_SYMBOL vmlinux 0x0e95c1ac mount_subtree +EXPORT_SYMBOL vmlinux 0x0e99fa0e generic_getxattr +EXPORT_SYMBOL vmlinux 0x0ea7d863 simple_rmdir +EXPORT_SYMBOL vmlinux 0x0eacde82 ata_link_printk +EXPORT_SYMBOL vmlinux 0x0eaf451e hdmi_vendor_infoframe_pack +EXPORT_SYMBOL vmlinux 0x0ec5b4e1 scsi_ioctl_reset +EXPORT_SYMBOL vmlinux 0x0ec5babe vme_dma_free +EXPORT_SYMBOL vmlinux 0x0ed1e9e3 make_bad_inode +EXPORT_SYMBOL vmlinux 0x0ee3957e inet_get_local_port_range +EXPORT_SYMBOL vmlinux 0x0eec72c5 __task_pid_nr_ns +EXPORT_SYMBOL vmlinux 0x0efcbb1b set_current_groups +EXPORT_SYMBOL vmlinux 0x0f06a073 kmalloc_caches +EXPORT_SYMBOL vmlinux 0x0f1d09be vlan_vids_add_by_dev +EXPORT_SYMBOL vmlinux 0x0f33413a skb_coalesce_rx_frag +EXPORT_SYMBOL vmlinux 0x0f3eafbc mmc_wait_for_cmd +EXPORT_SYMBOL vmlinux 0x0f4c91ed ns_to_timespec +EXPORT_SYMBOL vmlinux 0x0f5a32b2 serio_unregister_driver +EXPORT_SYMBOL vmlinux 0x0f5b99ba posix_acl_from_xattr +EXPORT_SYMBOL vmlinux 0x0f5c5151 neigh_parms_alloc +EXPORT_SYMBOL vmlinux 0x0f613e49 fifo_set_limit +EXPORT_SYMBOL vmlinux 0x0f6a3b5c string_get_size +EXPORT_SYMBOL vmlinux 0x0f6eb2f2 omapdss_output_unset_device +EXPORT_SYMBOL vmlinux 0x0f7980b8 eth_validate_addr +EXPORT_SYMBOL vmlinux 0x0fa2a45e __memzero +EXPORT_SYMBOL vmlinux 0x0faef0ed __tasklet_schedule +EXPORT_SYMBOL vmlinux 0x0fb2f8a4 mktime64 +EXPORT_SYMBOL vmlinux 0x0fc7b2e7 fb_blank +EXPORT_SYMBOL vmlinux 0x0ff178f6 __aeabi_idivmod +EXPORT_SYMBOL vmlinux 0x0ff2b602 slhc_compress +EXPORT_SYMBOL vmlinux 0x0ff3753c scsi_device_resume +EXPORT_SYMBOL vmlinux 0x0ffb2d51 __tcf_hash_release +EXPORT_SYMBOL vmlinux 0x1021c2cc skb_add_rx_frag +EXPORT_SYMBOL vmlinux 0x1021d158 snd_timer_stop +EXPORT_SYMBOL vmlinux 0x1031888f mipi_dsi_dcs_set_column_address +EXPORT_SYMBOL vmlinux 0x10344ae1 skb_copy_and_csum_bits +EXPORT_SYMBOL vmlinux 0x103f3ae3 dquot_quota_on +EXPORT_SYMBOL vmlinux 0x1058a7bd simple_fill_super +EXPORT_SYMBOL vmlinux 0x106017c3 backlight_device_unregister +EXPORT_SYMBOL vmlinux 0x10650061 sb_set_blocksize +EXPORT_SYMBOL vmlinux 0x106f13ab crc_t10dif_generic +EXPORT_SYMBOL vmlinux 0x1072a394 csum_partial_copy_from_user +EXPORT_SYMBOL vmlinux 0x107e5878 zlib_inflateEnd +EXPORT_SYMBOL vmlinux 0x109313d9 snd_pcm_lib_writev +EXPORT_SYMBOL vmlinux 0x10a083f8 scsi_report_device_reset +EXPORT_SYMBOL vmlinux 0x10a7b4b6 inet_reqsk_alloc +EXPORT_SYMBOL vmlinux 0x10cc9ccc arp_send +EXPORT_SYMBOL vmlinux 0x10def9e1 generic_splice_sendpage +EXPORT_SYMBOL vmlinux 0x10ee20bb default_blu +EXPORT_SYMBOL vmlinux 0x10f56dbe ip_mc_inc_group +EXPORT_SYMBOL vmlinux 0x10f74b3d scsi_test_unit_ready +EXPORT_SYMBOL vmlinux 0x10fd577e __find_get_block +EXPORT_SYMBOL vmlinux 0x11089ac7 _ctype +EXPORT_SYMBOL vmlinux 0x11190830 tcp_shutdown +EXPORT_SYMBOL vmlinux 0x1121c0dd jbd2_log_start_commit +EXPORT_SYMBOL vmlinux 0x11300faf param_set_long +EXPORT_SYMBOL vmlinux 0x1148daac unregister_framebuffer +EXPORT_SYMBOL vmlinux 0x114b7174 tcp_make_synack +EXPORT_SYMBOL vmlinux 0x114c6ea7 scsi_eh_finish_cmd +EXPORT_SYMBOL vmlinux 0x1161af25 check_disk_change +EXPORT_SYMBOL vmlinux 0x1163f0a7 blk_max_low_pfn +EXPORT_SYMBOL vmlinux 0x117093be qdisc_class_hash_init +EXPORT_SYMBOL vmlinux 0x1176653e tcp_v4_connect +EXPORT_SYMBOL vmlinux 0x1180206a mount_ns +EXPORT_SYMBOL vmlinux 0x118a5e56 blk_limits_io_min +EXPORT_SYMBOL vmlinux 0x119b50e7 elf_check_arch +EXPORT_SYMBOL vmlinux 0x11a044f6 mod_timer_pinned +EXPORT_SYMBOL vmlinux 0x11a30e4c nand_bch_init +EXPORT_SYMBOL vmlinux 0x11f7ed4c hex_to_bin +EXPORT_SYMBOL vmlinux 0x120b336a __rb_insert_augmented +EXPORT_SYMBOL vmlinux 0x120fc6b1 kstrdup_const +EXPORT_SYMBOL vmlinux 0x1250fa73 search_binary_handler +EXPORT_SYMBOL vmlinux 0x125a2619 clear_wb_congested +EXPORT_SYMBOL vmlinux 0x1262bae6 dmam_pool_create +EXPORT_SYMBOL vmlinux 0x12634c3c snd_pcm_lib_readv +EXPORT_SYMBOL vmlinux 0x126d70e7 mipi_dsi_dcs_set_page_address +EXPORT_SYMBOL vmlinux 0x127f4153 scsi_is_target_device +EXPORT_SYMBOL vmlinux 0x1285621b pcix_get_mmrbc +EXPORT_SYMBOL vmlinux 0x128f85eb inode_dio_wait +EXPORT_SYMBOL vmlinux 0x12a38747 usleep_range +EXPORT_SYMBOL vmlinux 0x12c52b0f dcb_ieee_getapp_mask +EXPORT_SYMBOL vmlinux 0x12da5bb2 __kmalloc +EXPORT_SYMBOL vmlinux 0x12ea8363 padata_unregister_cpumask_notifier +EXPORT_SYMBOL vmlinux 0x12f9a1e5 ip6_frag_match +EXPORT_SYMBOL vmlinux 0x12ff5abc vfs_iter_read +EXPORT_SYMBOL vmlinux 0x1306d6a1 flush_dcache_page +EXPORT_SYMBOL vmlinux 0x13087458 __fib6_flush_trees +EXPORT_SYMBOL vmlinux 0x1309fd68 mutex_lock +EXPORT_SYMBOL vmlinux 0x13243d4b wl1251_get_platform_data +EXPORT_SYMBOL vmlinux 0x13307fde vsscanf +EXPORT_SYMBOL vmlinux 0x13315729 flex_array_alloc +EXPORT_SYMBOL vmlinux 0x134c1180 ilookup5 +EXPORT_SYMBOL vmlinux 0x134f47d8 nd_namespace_blk_validate +EXPORT_SYMBOL vmlinux 0x13517374 netpoll_send_udp +EXPORT_SYMBOL vmlinux 0x13551651 ip6_expire_frag_queue +EXPORT_SYMBOL vmlinux 0x137fa8a1 mmc_gpio_get_ro +EXPORT_SYMBOL vmlinux 0x139e1234 wait_iff_congested +EXPORT_SYMBOL vmlinux 0x13cff01f tty_check_change +EXPORT_SYMBOL vmlinux 0x13d0adf7 __kfifo_out +EXPORT_SYMBOL vmlinux 0x13d6abfd inet_unregister_protosw +EXPORT_SYMBOL vmlinux 0x13e0153e vfs_symlink +EXPORT_SYMBOL vmlinux 0x13f42152 system_entering_hibernation +EXPORT_SYMBOL vmlinux 0x13fe6b04 pcie_capability_write_word +EXPORT_SYMBOL vmlinux 0x1408645f __mem_cgroup_count_vm_event +EXPORT_SYMBOL vmlinux 0x1408daa1 pci_bus_find_capability +EXPORT_SYMBOL vmlinux 0x140dfc6d ipv6_skip_exthdr +EXPORT_SYMBOL vmlinux 0x1420b379 kstrtou16_from_user +EXPORT_SYMBOL vmlinux 0x143b3f4c sock_i_uid +EXPORT_SYMBOL vmlinux 0x14502dc6 prepare_creds +EXPORT_SYMBOL vmlinux 0x1465037b dma_mark_declared_memory_occupied +EXPORT_SYMBOL vmlinux 0x148f7e09 dev_printk_emit +EXPORT_SYMBOL vmlinux 0x14bff7a1 input_get_keycode +EXPORT_SYMBOL vmlinux 0x14c169e6 unregister_cdrom +EXPORT_SYMBOL vmlinux 0x14c2f13f ppp_unregister_compressor +EXPORT_SYMBOL vmlinux 0x14d4a9c5 _change_bit +EXPORT_SYMBOL vmlinux 0x1508aaf1 vfs_rename +EXPORT_SYMBOL vmlinux 0x151e2434 twl6040_get_vibralr_status +EXPORT_SYMBOL vmlinux 0x151ef99a audit_log_task_info +EXPORT_SYMBOL vmlinux 0x152747df pps_lookup_dev +EXPORT_SYMBOL vmlinux 0x152b1275 of_get_pci_address +EXPORT_SYMBOL vmlinux 0x15420664 devfreq_monitor_stop +EXPORT_SYMBOL vmlinux 0x15463500 md_unregister_thread +EXPORT_SYMBOL vmlinux 0x154c6338 dm_kcopyd_client_destroy +EXPORT_SYMBOL vmlinux 0x157a3ceb scsi_remove_device +EXPORT_SYMBOL vmlinux 0x15827548 padata_free +EXPORT_SYMBOL vmlinux 0x1586baac kernel_write +EXPORT_SYMBOL vmlinux 0x15bafe29 unregister_md_cluster_operations +EXPORT_SYMBOL vmlinux 0x15c6edd5 block_truncate_page +EXPORT_SYMBOL vmlinux 0x15d15572 iov_iter_get_pages +EXPORT_SYMBOL vmlinux 0x15e73a6f tcp_setsockopt +EXPORT_SYMBOL vmlinux 0x15f36ba1 netif_receive_skb_sk +EXPORT_SYMBOL vmlinux 0x161470f8 mmc_hw_reset +EXPORT_SYMBOL vmlinux 0x162a014b of_phy_attach +EXPORT_SYMBOL vmlinux 0x162ccc0c lg_local_lock +EXPORT_SYMBOL vmlinux 0x16305289 warn_slowpath_null +EXPORT_SYMBOL vmlinux 0x16669a3f neigh_app_ns +EXPORT_SYMBOL vmlinux 0x16766435 vm_get_page_prot +EXPORT_SYMBOL vmlinux 0x1683a50b radix_tree_delete +EXPORT_SYMBOL vmlinux 0x169490b7 kern_path_mountpoint +EXPORT_SYMBOL vmlinux 0x16af6421 dentry_path_raw +EXPORT_SYMBOL vmlinux 0x16b39b8b __alloc_pages_nodemask +EXPORT_SYMBOL vmlinux 0x16c36e51 have_submounts +EXPORT_SYMBOL vmlinux 0x16e51e0f jbd2_journal_errno +EXPORT_SYMBOL vmlinux 0x16e8b794 dst_discard_sk +EXPORT_SYMBOL vmlinux 0x16f86531 remove_arg_zero +EXPORT_SYMBOL vmlinux 0x17042a2d blk_queue_update_dma_pad +EXPORT_SYMBOL vmlinux 0x170ecb2e __neigh_event_send +EXPORT_SYMBOL vmlinux 0x171a86b6 import_iovec +EXPORT_SYMBOL vmlinux 0x17426d1b dma_async_device_register +EXPORT_SYMBOL vmlinux 0x1784f057 dispc_ovl_set_fifo_threshold +EXPORT_SYMBOL vmlinux 0x17a142df __copy_from_user +EXPORT_SYMBOL vmlinux 0x17a75194 rfkill_alloc +EXPORT_SYMBOL vmlinux 0x17b1125d gen_kill_estimator +EXPORT_SYMBOL vmlinux 0x17c14a03 sg_miter_start +EXPORT_SYMBOL vmlinux 0x17c9e909 cdev_del +EXPORT_SYMBOL vmlinux 0x17ea3148 unregister_tcf_proto_ops +EXPORT_SYMBOL vmlinux 0x180c8e5a snd_pcm_lib_preallocate_pages_for_all +EXPORT_SYMBOL vmlinux 0x181a81f7 mmc_of_parse +EXPORT_SYMBOL vmlinux 0x1829d188 wait_woken +EXPORT_SYMBOL vmlinux 0x183fa88b mempool_alloc_slab +EXPORT_SYMBOL vmlinux 0x184b82fb mmc_vddrange_to_ocrmask +EXPORT_SYMBOL vmlinux 0x18621b4f __getblk_slow +EXPORT_SYMBOL vmlinux 0x1883a66e xfrm_state_insert +EXPORT_SYMBOL vmlinux 0x188a3dfb timespec_trunc +EXPORT_SYMBOL vmlinux 0x189868d7 get_random_bytes_arch +EXPORT_SYMBOL vmlinux 0x189dbc72 mmc_fixup_device +EXPORT_SYMBOL vmlinux 0x18a760c2 of_get_next_parent +EXPORT_SYMBOL vmlinux 0x18bd76a4 _raw_spin_trylock +EXPORT_SYMBOL vmlinux 0x18c2227f cpu_rmap_update +EXPORT_SYMBOL vmlinux 0x18e90989 netdev_master_upper_dev_link_private +EXPORT_SYMBOL vmlinux 0x18ef80c0 sk_mc_loop +EXPORT_SYMBOL vmlinux 0x18f2b5d1 led_blink_set_oneshot +EXPORT_SYMBOL vmlinux 0x18f5f4b6 blk_rq_unmap_user +EXPORT_SYMBOL vmlinux 0x19155169 netdev_upper_dev_unlink +EXPORT_SYMBOL vmlinux 0x19275597 blk_finish_request +EXPORT_SYMBOL vmlinux 0x1953728f __page_symlink +EXPORT_SYMBOL vmlinux 0x19610e1f cpu_all_bits +EXPORT_SYMBOL vmlinux 0x197a66cd request_firmware_nowait +EXPORT_SYMBOL vmlinux 0x197d9f99 pci_release_regions +EXPORT_SYMBOL vmlinux 0x197dc3b3 omap_set_dma_src_burst_mode +EXPORT_SYMBOL vmlinux 0x19821f60 xfrm_state_update +EXPORT_SYMBOL vmlinux 0x198788b4 snd_lookup_oss_minor_data +EXPORT_SYMBOL vmlinux 0x199ed0cd net_disable_timestamp +EXPORT_SYMBOL vmlinux 0x19b32531 blk_mq_kick_requeue_list +EXPORT_SYMBOL vmlinux 0x19b81d1f devm_kvasprintf +EXPORT_SYMBOL vmlinux 0x19bd383b security_secmark_refcount_dec +EXPORT_SYMBOL vmlinux 0x19c323c3 set_page_dirty +EXPORT_SYMBOL vmlinux 0x19d1d2b3 xfrm_policy_insert +EXPORT_SYMBOL vmlinux 0x19d7a8b2 tty_throttle +EXPORT_SYMBOL vmlinux 0x19e6cba0 __blk_mq_end_request +EXPORT_SYMBOL vmlinux 0x19eb5eea i2c_use_client +EXPORT_SYMBOL vmlinux 0x19f3341d mem_map +EXPORT_SYMBOL vmlinux 0x19f5809b dm_ratelimit_state +EXPORT_SYMBOL vmlinux 0x19fe857b skb_recv_datagram +EXPORT_SYMBOL vmlinux 0x1a0e3c7a snd_cards +EXPORT_SYMBOL vmlinux 0x1a1f671d __scm_destroy +EXPORT_SYMBOL vmlinux 0x1a28d6a1 setup_arg_pages +EXPORT_SYMBOL vmlinux 0x1a44a654 xfrm_state_flush +EXPORT_SYMBOL vmlinux 0x1a4697be starget_for_each_device +EXPORT_SYMBOL vmlinux 0x1a50a50a xfrm_input_register_afinfo +EXPORT_SYMBOL vmlinux 0x1a555549 unregister_shrinker +EXPORT_SYMBOL vmlinux 0x1a65f4ad __arm_ioremap_pfn +EXPORT_SYMBOL vmlinux 0x1a72f5bd iterate_supers_type +EXPORT_SYMBOL vmlinux 0x1a759e65 dev_queue_xmit_sk +EXPORT_SYMBOL vmlinux 0x1a8f7ae5 of_mdio_find_bus +EXPORT_SYMBOL vmlinux 0x1ad1f2e7 _memcpy_fromio +EXPORT_SYMBOL vmlinux 0x1ae06bde d_path +EXPORT_SYMBOL vmlinux 0x1b015d25 bitmap_parselist +EXPORT_SYMBOL vmlinux 0x1b06a209 blk_set_default_limits +EXPORT_SYMBOL vmlinux 0x1b1e1088 sg_nents +EXPORT_SYMBOL vmlinux 0x1b2262de pci_get_subsys +EXPORT_SYMBOL vmlinux 0x1b24f284 __generic_file_fsync +EXPORT_SYMBOL vmlinux 0x1b2d3cfd fb_set_suspend +EXPORT_SYMBOL vmlinux 0x1b2d6d2c qcom_scm_cpu_power_down +EXPORT_SYMBOL vmlinux 0x1b3e8925 devfreq_interval_update +EXPORT_SYMBOL vmlinux 0x1b50d259 snd_pcm_hw_constraint_step +EXPORT_SYMBOL vmlinux 0x1b6314fd in_aton +EXPORT_SYMBOL vmlinux 0x1b66b61c blk_queue_alignment_offset +EXPORT_SYMBOL vmlinux 0x1b67f961 neigh_parms_release +EXPORT_SYMBOL vmlinux 0x1b783fac nf_hook_slow +EXPORT_SYMBOL vmlinux 0x1b7b6757 inet_frags_fini +EXPORT_SYMBOL vmlinux 0x1b82fefa md_unplug +EXPORT_SYMBOL vmlinux 0x1bb31047 add_timer +EXPORT_SYMBOL vmlinux 0x1bd38430 devm_devfreq_register_opp_notifier +EXPORT_SYMBOL vmlinux 0x1c114a6a vm_event_states +EXPORT_SYMBOL vmlinux 0x1c270468 kthread_stop +EXPORT_SYMBOL vmlinux 0x1c27dbf8 snd_info_free_entry +EXPORT_SYMBOL vmlinux 0x1c2af6c9 led_blink_set +EXPORT_SYMBOL vmlinux 0x1c396475 alloc_disk_node +EXPORT_SYMBOL vmlinux 0x1c4f2ac1 inet_csk_prepare_forced_close +EXPORT_SYMBOL vmlinux 0x1c5e3878 icst525_idx2s +EXPORT_SYMBOL vmlinux 0x1c65b17f cap_mmap_file +EXPORT_SYMBOL vmlinux 0x1c6ba162 mmc_add_host +EXPORT_SYMBOL vmlinux 0x1c808dd5 iov_iter_zero +EXPORT_SYMBOL vmlinux 0x1c8c75bf vme_irq_handler +EXPORT_SYMBOL vmlinux 0x1ca217ed rawv6_mh_filter_unregister +EXPORT_SYMBOL vmlinux 0x1ca30dde mntget +EXPORT_SYMBOL vmlinux 0x1cab13e1 sk_stream_kill_queues +EXPORT_SYMBOL vmlinux 0x1cca7d68 __skb_checksum_complete_head +EXPORT_SYMBOL vmlinux 0x1ce25870 dev_mc_unsync +EXPORT_SYMBOL vmlinux 0x1cfb04fa finish_wait +EXPORT_SYMBOL vmlinux 0x1d027e4b snd_pcm_format_signed +EXPORT_SYMBOL vmlinux 0x1d1f57a9 ip_check_defrag +EXPORT_SYMBOL vmlinux 0x1d2dc16f elv_rq_merge_ok +EXPORT_SYMBOL vmlinux 0x1d3a4534 __tracepoint_kmalloc_node +EXPORT_SYMBOL vmlinux 0x1d3f08e8 i2c_smbus_read_block_data +EXPORT_SYMBOL vmlinux 0x1d406967 tcp_md5_do_add +EXPORT_SYMBOL vmlinux 0x1d555f20 __nla_put_nohdr +EXPORT_SYMBOL vmlinux 0x1d669084 blk_mq_tag_to_rq +EXPORT_SYMBOL vmlinux 0x1d70cf7a mutex_trylock +EXPORT_SYMBOL vmlinux 0x1d82ed70 proto_register +EXPORT_SYMBOL vmlinux 0x1d842778 pci_unregister_driver +EXPORT_SYMBOL vmlinux 0x1d90cdee km_state_notify +EXPORT_SYMBOL vmlinux 0x1da73762 current_fs_time +EXPORT_SYMBOL vmlinux 0x1dafb718 dev_loopback_xmit +EXPORT_SYMBOL vmlinux 0x1db6a30a dss_mgr_set_lcd_config +EXPORT_SYMBOL vmlinux 0x1dc36131 fb_destroy_modedb +EXPORT_SYMBOL vmlinux 0x1dd571e6 fb_copy_cmap +EXPORT_SYMBOL vmlinux 0x1ddc053d dev_mc_sync +EXPORT_SYMBOL vmlinux 0x1deac79e tcp_v4_conn_request +EXPORT_SYMBOL vmlinux 0x1dfc6202 jbd2__journal_restart +EXPORT_SYMBOL vmlinux 0x1e047854 warn_slowpath_fmt +EXPORT_SYMBOL vmlinux 0x1e26be3b get_anon_bdev +EXPORT_SYMBOL vmlinux 0x1e2945fd snd_pcm_hw_refine +EXPORT_SYMBOL vmlinux 0x1e407185 backlight_device_register +EXPORT_SYMBOL vmlinux 0x1e473d4d map_destroy +EXPORT_SYMBOL vmlinux 0x1e4deac0 tcp_prequeue +EXPORT_SYMBOL vmlinux 0x1e4e73f6 vfs_readv +EXPORT_SYMBOL vmlinux 0x1e6d26a8 strstr +EXPORT_SYMBOL vmlinux 0x1e6faa6d scsi_execute_req_flags +EXPORT_SYMBOL vmlinux 0x1e7c89e5 adjust_managed_page_count +EXPORT_SYMBOL vmlinux 0x1e8c91bc scsi_set_medium_removal +EXPORT_SYMBOL vmlinux 0x1e9edfb7 seq_hlist_start_head_rcu +EXPORT_SYMBOL vmlinux 0x1ea15459 __dquot_alloc_space +EXPORT_SYMBOL vmlinux 0x1eaaecab devm_ioremap_nocache +EXPORT_SYMBOL vmlinux 0x1ebf3b23 twl6040_set_bits +EXPORT_SYMBOL vmlinux 0x1ece7535 gnet_stats_copy_basic +EXPORT_SYMBOL vmlinux 0x1edd19bf single_open_size +EXPORT_SYMBOL vmlinux 0x1eeb848e __percpu_counter_sum +EXPORT_SYMBOL vmlinux 0x1f10cb1d seq_release_private +EXPORT_SYMBOL vmlinux 0x1f157a1e iget_failed +EXPORT_SYMBOL vmlinux 0x1f25d31c ps2_begin_command +EXPORT_SYMBOL vmlinux 0x1f3bf5ca __scm_send +EXPORT_SYMBOL vmlinux 0x1f42b07f pm860x_reg_read +EXPORT_SYMBOL vmlinux 0x1f4d2e15 jbd2_journal_check_available_features +EXPORT_SYMBOL vmlinux 0x1f54e2ec md_register_thread +EXPORT_SYMBOL vmlinux 0x1f5a7c25 netdev_state_change +EXPORT_SYMBOL vmlinux 0x1f7e807f kstrtoint_from_user +EXPORT_SYMBOL vmlinux 0x1f7f0fe4 alloc_netdev_mqs +EXPORT_SYMBOL vmlinux 0x1f89f983 netif_set_real_num_tx_queues +EXPORT_SYMBOL vmlinux 0x1fa5e053 nvdimm_namespace_disk_name +EXPORT_SYMBOL vmlinux 0x1fa9c9ee eth_gro_receive +EXPORT_SYMBOL vmlinux 0x1fab5905 wait_for_completion +EXPORT_SYMBOL vmlinux 0x1fac087c max8998_write_reg +EXPORT_SYMBOL vmlinux 0x1fbd16da ip_tos2prio +EXPORT_SYMBOL vmlinux 0x1fbe7acb __ww_mutex_lock +EXPORT_SYMBOL vmlinux 0x1fbe7d98 dev_mc_sync_multiple +EXPORT_SYMBOL vmlinux 0x1fcdddaf dump_emit +EXPORT_SYMBOL vmlinux 0x1fcf5281 ndisc_mc_map +EXPORT_SYMBOL vmlinux 0x1fd07fff kdb_grepping_flag +EXPORT_SYMBOL vmlinux 0x1fd5fd0c blk_run_queue +EXPORT_SYMBOL vmlinux 0x1fe912f1 netdev_alloc_frag +EXPORT_SYMBOL vmlinux 0x1fe9f800 unregister_cpu_notifier +EXPORT_SYMBOL vmlinux 0x1fedf0f4 __request_region +EXPORT_SYMBOL vmlinux 0x1feea46f of_platform_bus_probe +EXPORT_SYMBOL vmlinux 0x20000329 simple_strtoul +EXPORT_SYMBOL vmlinux 0x2000b8d6 blk_mq_init_queue +EXPORT_SYMBOL vmlinux 0x200b2041 in6addr_any +EXPORT_SYMBOL vmlinux 0x200f0405 force_sig +EXPORT_SYMBOL vmlinux 0x20141f29 scsi_scan_target +EXPORT_SYMBOL vmlinux 0x20205f64 trace_print_array_seq +EXPORT_SYMBOL vmlinux 0x202cf20b genphy_suspend +EXPORT_SYMBOL vmlinux 0x20421305 on_each_cpu_mask +EXPORT_SYMBOL vmlinux 0x2044ede7 sock_efree +EXPORT_SYMBOL vmlinux 0x2046b4ee posix_lock_file +EXPORT_SYMBOL vmlinux 0x204c19f5 tcp_alloc_md5sig_pool +EXPORT_SYMBOL vmlinux 0x205c34ed eth_prepare_mac_addr_change +EXPORT_SYMBOL vmlinux 0x205ec8de omap_dispc_register_isr +EXPORT_SYMBOL vmlinux 0x2066f930 xfrm_lookup +EXPORT_SYMBOL vmlinux 0x2072ee9b request_threaded_irq +EXPORT_SYMBOL vmlinux 0x2079f8d2 pci_fixup_device +EXPORT_SYMBOL vmlinux 0x209463b8 netlink_kernel_release +EXPORT_SYMBOL vmlinux 0x20a789ac irq_set_chip_data +EXPORT_SYMBOL vmlinux 0x20c55ae0 sscanf +EXPORT_SYMBOL vmlinux 0x20cd684d dquot_quota_sync +EXPORT_SYMBOL vmlinux 0x20df0621 elv_unregister_queue +EXPORT_SYMBOL vmlinux 0x20df5a3d vme_dma_pci_attribute +EXPORT_SYMBOL vmlinux 0x20fed1e5 dma_alloc_from_coherent +EXPORT_SYMBOL vmlinux 0x2100d398 down_read +EXPORT_SYMBOL vmlinux 0x21028782 tty_register_device +EXPORT_SYMBOL vmlinux 0x21110dbf mmioset +EXPORT_SYMBOL vmlinux 0x211331fa __divsi3 +EXPORT_SYMBOL vmlinux 0x211b6dfd twl6030_mmc_card_detect +EXPORT_SYMBOL vmlinux 0x2121547d inet_rtx_syn_ack +EXPORT_SYMBOL vmlinux 0x2141a1ec dma_common_get_sgtable +EXPORT_SYMBOL vmlinux 0x214215d7 rt6_lookup +EXPORT_SYMBOL vmlinux 0x215315e6 inet6_protos +EXPORT_SYMBOL vmlinux 0x215669a5 tcp_md5_do_del +EXPORT_SYMBOL vmlinux 0x21617007 __cleancache_put_page +EXPORT_SYMBOL vmlinux 0x216d759a mmiocpy +EXPORT_SYMBOL vmlinux 0x217f222f tcf_exts_validate +EXPORT_SYMBOL vmlinux 0x217f63c9 rtnl_link_get_net +EXPORT_SYMBOL vmlinux 0x2181d8f8 mnt_drop_write_file +EXPORT_SYMBOL vmlinux 0x21835181 ipv6_select_ident +EXPORT_SYMBOL vmlinux 0x2198c13d param_get_ushort +EXPORT_SYMBOL vmlinux 0x219ebcdf no_llseek +EXPORT_SYMBOL vmlinux 0x21b78f3e inet_addr_type +EXPORT_SYMBOL vmlinux 0x21df74d9 bitmap_set +EXPORT_SYMBOL vmlinux 0x220fb49e vme_unregister_bridge +EXPORT_SYMBOL vmlinux 0x2212429c pagevec_lookup_tag +EXPORT_SYMBOL vmlinux 0x222e7ce2 sysfs_streq +EXPORT_SYMBOL vmlinux 0x222eaebd bio_advance +EXPORT_SYMBOL vmlinux 0x222fa684 lg_global_lock +EXPORT_SYMBOL vmlinux 0x2232a8a5 mempool_free +EXPORT_SYMBOL vmlinux 0x224639a6 pci_iomap +EXPORT_SYMBOL vmlinux 0x2256fafa div64_u64_rem +EXPORT_SYMBOL vmlinux 0x2276db98 kstrtoint +EXPORT_SYMBOL vmlinux 0x22830711 edma_clear_event +EXPORT_SYMBOL vmlinux 0x22b325d5 kd_mksound +EXPORT_SYMBOL vmlinux 0x22c2a22b snd_pcm_hw_param_last +EXPORT_SYMBOL vmlinux 0x22c836f5 scsi_print_sense_hdr +EXPORT_SYMBOL vmlinux 0x22cf1408 tcp_v4_md5_lookup +EXPORT_SYMBOL vmlinux 0x22ddaab0 blk_queue_physical_block_size +EXPORT_SYMBOL vmlinux 0x22dfdd06 radix_tree_tag_set +EXPORT_SYMBOL vmlinux 0x22f36230 dmaengine_get_unmap_data +EXPORT_SYMBOL vmlinux 0x22fc4f3a trace_print_flags_seq +EXPORT_SYMBOL vmlinux 0x2307f0c6 pcie_capability_clear_and_set_word +EXPORT_SYMBOL vmlinux 0x231d4001 fb_edid_add_monspecs +EXPORT_SYMBOL vmlinux 0x2329b877 dcb_getapp +EXPORT_SYMBOL vmlinux 0x234e564d blk_init_tags +EXPORT_SYMBOL vmlinux 0x235c3514 sk_reset_timer +EXPORT_SYMBOL vmlinux 0x2371f634 snd_timer_pause +EXPORT_SYMBOL vmlinux 0x2389af0e tcp_parse_options +EXPORT_SYMBOL vmlinux 0x23918276 devm_iounmap +EXPORT_SYMBOL vmlinux 0x239ece70 bitmap_start_sync +EXPORT_SYMBOL vmlinux 0x23a574fd security_secmark_relabel_packet +EXPORT_SYMBOL vmlinux 0x23aa49d3 _raw_read_trylock +EXPORT_SYMBOL vmlinux 0x23b9d6e2 mangle_path +EXPORT_SYMBOL vmlinux 0x23c00dcf scsi_print_command +EXPORT_SYMBOL vmlinux 0x23c8f257 slhc_uncompress +EXPORT_SYMBOL vmlinux 0x23e67fdd icmpv6_send +EXPORT_SYMBOL vmlinux 0x23fd3028 vmalloc_node +EXPORT_SYMBOL vmlinux 0x240a1bae drop_super +EXPORT_SYMBOL vmlinux 0x241b2de2 neigh_seq_start +EXPORT_SYMBOL vmlinux 0x24212d86 __frontswap_invalidate_page +EXPORT_SYMBOL vmlinux 0x242e1cf7 xfrm_policy_walk +EXPORT_SYMBOL vmlinux 0x2434bfc0 netdev_class_create_file_ns +EXPORT_SYMBOL vmlinux 0x2434c360 simple_transaction_get +EXPORT_SYMBOL vmlinux 0x24421f4e dm_register_target +EXPORT_SYMBOL vmlinux 0x24428be5 strncpy_from_user +EXPORT_SYMBOL vmlinux 0x2445d4d5 msm_pinctrl_remove +EXPORT_SYMBOL vmlinux 0x2449b10d snd_pcm_hw_constraint_ratnums +EXPORT_SYMBOL vmlinux 0x2459bbcc console_set_on_cmdline +EXPORT_SYMBOL vmlinux 0x2482e688 vsprintf +EXPORT_SYMBOL vmlinux 0x248778a0 tcp_v4_do_rcv +EXPORT_SYMBOL vmlinux 0x24a0e493 snd_ctl_replace +EXPORT_SYMBOL vmlinux 0x24a94b26 snd_info_get_line +EXPORT_SYMBOL vmlinux 0x24ab48cb pci_choose_state +EXPORT_SYMBOL vmlinux 0x24c15458 netdev_features_change +EXPORT_SYMBOL vmlinux 0x24d7cfbd __frontswap_load +EXPORT_SYMBOL vmlinux 0x24fdac79 wake_bit_function +EXPORT_SYMBOL vmlinux 0x250113b4 memory_read_from_buffer +EXPORT_SYMBOL vmlinux 0x2509633f memory_cgrp_subsys +EXPORT_SYMBOL vmlinux 0x250f9804 mnt_set_expiry +EXPORT_SYMBOL vmlinux 0x251210c0 wireless_send_event +EXPORT_SYMBOL vmlinux 0x25277497 rfkill_register +EXPORT_SYMBOL vmlinux 0x2539ed3a of_parse_phandle_with_fixed_args +EXPORT_SYMBOL vmlinux 0x254e2a6a i2c_register_driver +EXPORT_SYMBOL vmlinux 0x25540332 inode_sb_list_lock +EXPORT_SYMBOL vmlinux 0x2557d8c9 __tty_alloc_driver +EXPORT_SYMBOL vmlinux 0x255e8786 nlmsg_notify +EXPORT_SYMBOL vmlinux 0x2570a138 reservation_seqcount_string +EXPORT_SYMBOL vmlinux 0x2580c2c1 do_splice_to +EXPORT_SYMBOL vmlinux 0x25820c64 fs_overflowuid +EXPORT_SYMBOL vmlinux 0x258665ef bio_copy_kern +EXPORT_SYMBOL vmlinux 0x259108c3 xfrm_state_unregister_afinfo +EXPORT_SYMBOL vmlinux 0x2592f730 __serio_register_driver +EXPORT_SYMBOL vmlinux 0x259842c3 inet_dev_addr_type +EXPORT_SYMBOL vmlinux 0x259c0953 tcf_em_tree_validate +EXPORT_SYMBOL vmlinux 0x25b55e07 km_is_alive +EXPORT_SYMBOL vmlinux 0x25d2bd55 ptp_clock_register +EXPORT_SYMBOL vmlinux 0x25d801a2 ipv6_sock_mc_drop +EXPORT_SYMBOL vmlinux 0x25e8ed29 sg_nents_for_len +EXPORT_SYMBOL vmlinux 0x25e9d4bd resource_list_free +EXPORT_SYMBOL vmlinux 0x25ee8c48 vfs_rmdir +EXPORT_SYMBOL vmlinux 0x25f32b22 __ip_select_ident +EXPORT_SYMBOL vmlinux 0x2626dc5e napi_gro_frags +EXPORT_SYMBOL vmlinux 0x2627965c nf_ip_checksum +EXPORT_SYMBOL vmlinux 0x263beb75 ecryptfs_get_versions +EXPORT_SYMBOL vmlinux 0x263ccb21 copy_page_to_iter +EXPORT_SYMBOL vmlinux 0x264d0c02 pci_clear_master +EXPORT_SYMBOL vmlinux 0x2650d835 sysctl_ip_early_demux +EXPORT_SYMBOL vmlinux 0x268bcf86 abort_creds +EXPORT_SYMBOL vmlinux 0x26bb950b __kfifo_from_user_r +EXPORT_SYMBOL vmlinux 0x26c2128c lockref_mark_dead +EXPORT_SYMBOL vmlinux 0x26e76fb8 sysctl_udp_wmem_min +EXPORT_SYMBOL vmlinux 0x26fa8821 cont_write_begin +EXPORT_SYMBOL vmlinux 0x27040fcb __hw_addr_unsync_dev +EXPORT_SYMBOL vmlinux 0x27043f13 posix_unblock_lock +EXPORT_SYMBOL vmlinux 0x2710c2e2 swiotlb_unmap_sg +EXPORT_SYMBOL vmlinux 0x27176106 tcp_close +EXPORT_SYMBOL vmlinux 0x274d08dc __kfifo_dma_out_prepare +EXPORT_SYMBOL vmlinux 0x275d473d flush_kernel_dcache_page +EXPORT_SYMBOL vmlinux 0x275ef902 __init_waitqueue_head +EXPORT_SYMBOL vmlinux 0x276c146f mpage_writepage +EXPORT_SYMBOL vmlinux 0x27864d57 memparse +EXPORT_SYMBOL vmlinux 0x27866435 security_xfrm_state_alloc +EXPORT_SYMBOL vmlinux 0x2798713e padata_stop +EXPORT_SYMBOL vmlinux 0x279bae0f flow_get_u32_dst +EXPORT_SYMBOL vmlinux 0x27a40e66 of_get_cpu_node +EXPORT_SYMBOL vmlinux 0x27b3786d pci_dev_driver +EXPORT_SYMBOL vmlinux 0x27bbf221 disable_irq_nosync +EXPORT_SYMBOL vmlinux 0x27d47a9f __get_user_pages +EXPORT_SYMBOL vmlinux 0x27e03839 simple_lookup +EXPORT_SYMBOL vmlinux 0x27e1a049 printk +EXPORT_SYMBOL vmlinux 0x27e6014c of_device_is_big_endian +EXPORT_SYMBOL vmlinux 0x27f4def6 load_nls +EXPORT_SYMBOL vmlinux 0x28118cb6 __get_user_1 +EXPORT_SYMBOL vmlinux 0x28158f6d devfreq_register_opp_notifier +EXPORT_SYMBOL vmlinux 0x281823c5 __kfifo_out_peek +EXPORT_SYMBOL vmlinux 0x281e6680 cdrom_release +EXPORT_SYMBOL vmlinux 0x2821235a devm_get_gpiod_from_child +EXPORT_SYMBOL vmlinux 0x28276546 mmc_gpiod_request_cd_irq +EXPORT_SYMBOL vmlinux 0x28323299 jbd2_journal_clear_err +EXPORT_SYMBOL vmlinux 0x2853ba09 pid_task +EXPORT_SYMBOL vmlinux 0x285eebd7 t10_pi_type3_ip +EXPORT_SYMBOL vmlinux 0x289e38a8 set_page_dirty_lock +EXPORT_SYMBOL vmlinux 0x28a2ed02 scsi_build_sense_buffer +EXPORT_SYMBOL vmlinux 0x28ae30f2 i2c_del_driver +EXPORT_SYMBOL vmlinux 0x28b0b252 read_cache_page +EXPORT_SYMBOL vmlinux 0x28c41844 __insert_inode_hash +EXPORT_SYMBOL vmlinux 0x28cfc80a blk_stop_queue +EXPORT_SYMBOL vmlinux 0x28f4378d param_set_invbool +EXPORT_SYMBOL vmlinux 0x291844ac bio_integrity_prep +EXPORT_SYMBOL vmlinux 0x291caef3 swiotlb_dma_mapping_error +EXPORT_SYMBOL vmlinux 0x29311901 param_ops_ulong +EXPORT_SYMBOL vmlinux 0x29537c9e alloc_chrdev_region +EXPORT_SYMBOL vmlinux 0x29574970 dev_alloc_name +EXPORT_SYMBOL vmlinux 0x295bfe12 devm_ioremap_resource +EXPORT_SYMBOL vmlinux 0x295f636d omapdss_register_output +EXPORT_SYMBOL vmlinux 0x2976b846 tcp_v4_syn_recv_sock +EXPORT_SYMBOL vmlinux 0x29852e5f __skb_gro_checksum_complete +EXPORT_SYMBOL vmlinux 0x29854454 consume_skb +EXPORT_SYMBOL vmlinux 0x29bc4c92 netif_set_real_num_rx_queues +EXPORT_SYMBOL vmlinux 0x29c2d705 generic_write_end +EXPORT_SYMBOL vmlinux 0x29d8dbb9 get_io_context +EXPORT_SYMBOL vmlinux 0x29dc9925 find_get_pages_tag +EXPORT_SYMBOL vmlinux 0x29dcffc4 pci_scan_bus +EXPORT_SYMBOL vmlinux 0x29e1b020 ida_simple_remove +EXPORT_SYMBOL vmlinux 0x29f30e00 uart_get_divisor +EXPORT_SYMBOL vmlinux 0x29fdda53 kstrtos8_from_user +EXPORT_SYMBOL vmlinux 0x2a04e4f3 build_skb +EXPORT_SYMBOL vmlinux 0x2a12499d nonseekable_open +EXPORT_SYMBOL vmlinux 0x2a127ad9 inet6_ioctl +EXPORT_SYMBOL vmlinux 0x2a303d4d check_signature +EXPORT_SYMBOL vmlinux 0x2a37d074 dma_pool_free +EXPORT_SYMBOL vmlinux 0x2a3aa678 _test_and_clear_bit +EXPORT_SYMBOL vmlinux 0x2a7f4489 simple_dentry_operations +EXPORT_SYMBOL vmlinux 0x2a80d353 omapdss_default_get_recommended_bpp +EXPORT_SYMBOL vmlinux 0x2a828de3 blk_put_queue +EXPORT_SYMBOL vmlinux 0x2a8e85f5 sock_i_ino +EXPORT_SYMBOL vmlinux 0x2a917b7f inet_stream_ops +EXPORT_SYMBOL vmlinux 0x2aa0e4fc strncasecmp +EXPORT_SYMBOL vmlinux 0x2aad35de mb_cache_destroy +EXPORT_SYMBOL vmlinux 0x2ac09249 sock_create +EXPORT_SYMBOL vmlinux 0x2acf0feb vfs_fstat +EXPORT_SYMBOL vmlinux 0x2ae3deaa release_and_free_resource +EXPORT_SYMBOL vmlinux 0x2aea0651 scsi_device_quiesce +EXPORT_SYMBOL vmlinux 0x2afdac64 __bread_gfp +EXPORT_SYMBOL vmlinux 0x2b0ba2b0 scsi_sense_desc_find +EXPORT_SYMBOL vmlinux 0x2b12925d cpumask_next_and +EXPORT_SYMBOL vmlinux 0x2b172d5a phy_start_interrupts +EXPORT_SYMBOL vmlinux 0x2b1b3a35 __cleancache_init_fs +EXPORT_SYMBOL vmlinux 0x2b1b3d13 netdev_printk +EXPORT_SYMBOL vmlinux 0x2b2ce78b kstrtos8 +EXPORT_SYMBOL vmlinux 0x2b372477 dev_add_pack +EXPORT_SYMBOL vmlinux 0x2b43e1e9 sock_wake_async +EXPORT_SYMBOL vmlinux 0x2b49aa25 vme_master_request +EXPORT_SYMBOL vmlinux 0x2b4cadf7 pci_fixup_cardbus +EXPORT_SYMBOL vmlinux 0x2b4e956e mempool_create +EXPORT_SYMBOL vmlinux 0x2b9da7a4 genl_lock +EXPORT_SYMBOL vmlinux 0x2ba3cfff get_unmapped_area +EXPORT_SYMBOL vmlinux 0x2ba707a8 sysctl_tcp_low_latency +EXPORT_SYMBOL vmlinux 0x2be0f12d dql_completed +EXPORT_SYMBOL vmlinux 0x2c0e631e uart_resume_port +EXPORT_SYMBOL vmlinux 0x2c14323a kstrtol_from_user +EXPORT_SYMBOL vmlinux 0x2c17c5f1 xfrm_prepare_input +EXPORT_SYMBOL vmlinux 0x2c17d327 input_set_keycode +EXPORT_SYMBOL vmlinux 0x2c256e1f input_scancode_to_scalar +EXPORT_SYMBOL vmlinux 0x2c6ea7b3 neigh_resolve_output +EXPORT_SYMBOL vmlinux 0x2c7c8e9a pcibios_min_mem +EXPORT_SYMBOL vmlinux 0x2c81ec75 __irq_regs +EXPORT_SYMBOL vmlinux 0x2c8f4b95 skb_unlink +EXPORT_SYMBOL vmlinux 0x2c900d91 cpufreq_put_global_kobject +EXPORT_SYMBOL vmlinux 0x2c9732f8 gen_pool_destroy +EXPORT_SYMBOL vmlinux 0x2c988955 prepare_to_wait_exclusive +EXPORT_SYMBOL vmlinux 0x2cb7930b param_ops_int +EXPORT_SYMBOL vmlinux 0x2cc0c1d1 fb_get_buffer_offset +EXPORT_SYMBOL vmlinux 0x2cc94366 jbd2_journal_extend +EXPORT_SYMBOL vmlinux 0x2cd6022f netlink_capable +EXPORT_SYMBOL vmlinux 0x2cdefdd6 fbcon_set_tileops +EXPORT_SYMBOL vmlinux 0x2cf74f9f tcp_release_cb +EXPORT_SYMBOL vmlinux 0x2d140a58 genl_unlock +EXPORT_SYMBOL vmlinux 0x2d155406 pci_request_regions +EXPORT_SYMBOL vmlinux 0x2d30596c from_kqid_munged +EXPORT_SYMBOL vmlinux 0x2d31acc2 netlink_rcv_skb +EXPORT_SYMBOL vmlinux 0x2d32db25 dev_get_by_index +EXPORT_SYMBOL vmlinux 0x2d3385d3 system_wq +EXPORT_SYMBOL vmlinux 0x2d43af33 blk_mq_alloc_tag_set +EXPORT_SYMBOL vmlinux 0x2d4e0372 vm_iomap_memory +EXPORT_SYMBOL vmlinux 0x2d5fcf21 param_ops_invbool +EXPORT_SYMBOL vmlinux 0x2d6507b5 _find_next_zero_bit_le +EXPORT_SYMBOL vmlinux 0x2d770676 dispc_mgr_go +EXPORT_SYMBOL vmlinux 0x2d962c1e input_mt_assign_slots +EXPORT_SYMBOL vmlinux 0x2db6e833 pci_release_region +EXPORT_SYMBOL vmlinux 0x2dd496cb locks_init_lock +EXPORT_SYMBOL vmlinux 0x2dd8d00c qdisc_class_hash_grow +EXPORT_SYMBOL vmlinux 0x2dd9a36b flex_array_shrink +EXPORT_SYMBOL vmlinux 0x2de47b02 snd_pcm_set_ops +EXPORT_SYMBOL vmlinux 0x2deda4a1 security_sk_classify_flow +EXPORT_SYMBOL vmlinux 0x2e0b47b6 param_get_bool +EXPORT_SYMBOL vmlinux 0x2e0cfa3c may_umount +EXPORT_SYMBOL vmlinux 0x2e1ca751 clk_put +EXPORT_SYMBOL vmlinux 0x2e202e21 set_anon_super +EXPORT_SYMBOL vmlinux 0x2e2ce9e0 sysctl_tcp_syncookies +EXPORT_SYMBOL vmlinux 0x2e3f8175 __tracepoint_kfree +EXPORT_SYMBOL vmlinux 0x2e53681d bdev_stack_limits +EXPORT_SYMBOL vmlinux 0x2e5810c6 __aeabi_unwind_cpp_pr1 +EXPORT_SYMBOL vmlinux 0x2e6003fb cdrom_mode_sense +EXPORT_SYMBOL vmlinux 0x2e7cbf4e blk_mq_map_queue +EXPORT_SYMBOL vmlinux 0x2ea1871c md_reload_sb +EXPORT_SYMBOL vmlinux 0x2ec524ad __kfifo_in_r +EXPORT_SYMBOL vmlinux 0x2eca3e3c fb_class +EXPORT_SYMBOL vmlinux 0x2ecd441b fence_free +EXPORT_SYMBOL vmlinux 0x2edc767d linkwatch_fire_event +EXPORT_SYMBOL vmlinux 0x2ef63ad6 scsi_dev_info_list_del_keyed +EXPORT_SYMBOL vmlinux 0x2f03fc4b security_secmark_refcount_inc +EXPORT_SYMBOL vmlinux 0x2f064b55 allocate_resource +EXPORT_SYMBOL vmlinux 0x2f0a72e6 cros_ec_cmd_xfer +EXPORT_SYMBOL vmlinux 0x2f16508a __vfs_write +EXPORT_SYMBOL vmlinux 0x2f3c69a5 misc_register +EXPORT_SYMBOL vmlinux 0x2f462047 snd_info_create_card_entry +EXPORT_SYMBOL vmlinux 0x2f463da1 __alloc_page_frag +EXPORT_SYMBOL vmlinux 0x2f5f2a57 rps_sock_flow_table +EXPORT_SYMBOL vmlinux 0x2f65d8d9 mipi_dsi_dcs_nop +EXPORT_SYMBOL vmlinux 0x2f95e536 scsi_mode_sense +EXPORT_SYMBOL vmlinux 0x2f99106b loop_backing_file +EXPORT_SYMBOL vmlinux 0x2faccc71 __dev_remove_pack +EXPORT_SYMBOL vmlinux 0x2fb4608b bprm_change_interp +EXPORT_SYMBOL vmlinux 0x2fb6de5d add_device_randomness +EXPORT_SYMBOL vmlinux 0x2fbca6bc blkdev_fsync +EXPORT_SYMBOL vmlinux 0x2fbe0d01 sk_stream_write_space +EXPORT_SYMBOL vmlinux 0x2fc3fca8 submit_bh +EXPORT_SYMBOL vmlinux 0x2fe252cc unregister_inet6addr_notifier +EXPORT_SYMBOL vmlinux 0x30095684 kmem_cache_alloc_trace +EXPORT_SYMBOL vmlinux 0x301f4002 dget_parent +EXPORT_SYMBOL vmlinux 0x303041c6 udp_flow_hashrnd +EXPORT_SYMBOL vmlinux 0x3031418f tcp_syn_ack_timeout +EXPORT_SYMBOL vmlinux 0x30727148 reservation_object_add_shared_fence +EXPORT_SYMBOL vmlinux 0x307c2fd0 generic_check_addressable +EXPORT_SYMBOL vmlinux 0x3082a0b3 dss_feat_get_supported_color_modes +EXPORT_SYMBOL vmlinux 0x308d93fb snd_ctl_find_numid +EXPORT_SYMBOL vmlinux 0x30951a9b __pci_register_driver +EXPORT_SYMBOL vmlinux 0x3096be16 names_cachep +EXPORT_SYMBOL vmlinux 0x30a80826 __kfifo_from_user +EXPORT_SYMBOL vmlinux 0x30b271b8 dma_release_declared_memory +EXPORT_SYMBOL vmlinux 0x30b8bfba __alloc_skb +EXPORT_SYMBOL vmlinux 0x30beea3c blk_queue_bounce +EXPORT_SYMBOL vmlinux 0x30ca2577 vme_dma_list_free +EXPORT_SYMBOL vmlinux 0x30cfc69a genphy_restart_aneg +EXPORT_SYMBOL vmlinux 0x30d2de45 pcim_iomap_regions_request_all +EXPORT_SYMBOL vmlinux 0x30d39f44 mipi_dsi_dcs_set_display_off +EXPORT_SYMBOL vmlinux 0x30db4b25 udp_sendmsg +EXPORT_SYMBOL vmlinux 0x30e11bea tcp_seq_open +EXPORT_SYMBOL vmlinux 0x30e74134 tty_termios_copy_hw +EXPORT_SYMBOL vmlinux 0x3102d70b frontswap_curr_pages +EXPORT_SYMBOL vmlinux 0x310917fe sort +EXPORT_SYMBOL vmlinux 0x311df583 phy_read_mmd_indirect +EXPORT_SYMBOL vmlinux 0x3128550f pci_get_domain_bus_and_slot +EXPORT_SYMBOL vmlinux 0x312a7039 iget_locked +EXPORT_SYMBOL vmlinux 0x3132ee65 __nand_calculate_ecc +EXPORT_SYMBOL vmlinux 0x31380354 getrawmonotonic64 +EXPORT_SYMBOL vmlinux 0x3138a9bd kmap +EXPORT_SYMBOL vmlinux 0x3145216f pci_dev_present +EXPORT_SYMBOL vmlinux 0x3147857d default_red +EXPORT_SYMBOL vmlinux 0x314c4bfe devm_ioremap_wc +EXPORT_SYMBOL vmlinux 0x31683780 kset_unregister +EXPORT_SYMBOL vmlinux 0x3174bd79 bitmap_clear +EXPORT_SYMBOL vmlinux 0x31805f80 __net_get_random_once +EXPORT_SYMBOL vmlinux 0x3191f109 __krealloc +EXPORT_SYMBOL vmlinux 0x31a4767f qcom_scm_hdcp_available +EXPORT_SYMBOL vmlinux 0x31af9f1e abx500_remove_ops +EXPORT_SYMBOL vmlinux 0x31b31f5c csum_partial_copy_nocheck +EXPORT_SYMBOL vmlinux 0x31bb6f06 sock_rfree +EXPORT_SYMBOL vmlinux 0x31c0f482 do_splice_direct +EXPORT_SYMBOL vmlinux 0x31c83cf5 xfrm_policy_destroy +EXPORT_SYMBOL vmlinux 0x31da16bf xfrm_policy_delete +EXPORT_SYMBOL vmlinux 0x31db3198 out_of_line_wait_on_bit +EXPORT_SYMBOL vmlinux 0x31f0bb78 __kmap_atomic_idx +EXPORT_SYMBOL vmlinux 0x321cb39d dm_kcopyd_zero +EXPORT_SYMBOL vmlinux 0x324f3ab1 dm_kcopyd_copy +EXPORT_SYMBOL vmlinux 0x3261a93f tcp_read_sock +EXPORT_SYMBOL vmlinux 0x328a05f1 strncpy +EXPORT_SYMBOL vmlinux 0x32907b91 idr_remove +EXPORT_SYMBOL vmlinux 0x32a43329 d_make_root +EXPORT_SYMBOL vmlinux 0x32b7ccfe get_mem_type +EXPORT_SYMBOL vmlinux 0x32c39489 jbd2_log_wait_commit +EXPORT_SYMBOL vmlinux 0x330b6d3c bh_uptodate_or_lock +EXPORT_SYMBOL vmlinux 0x3316845e idr_get_next +EXPORT_SYMBOL vmlinux 0x331f5704 phy_init_hw +EXPORT_SYMBOL vmlinux 0x3329770b would_dump +EXPORT_SYMBOL vmlinux 0x3329b57b kobject_add +EXPORT_SYMBOL vmlinux 0x3330a47d gen_pool_free +EXPORT_SYMBOL vmlinux 0x33346489 dma_sync_wait +EXPORT_SYMBOL vmlinux 0x3348250b vfs_create +EXPORT_SYMBOL vmlinux 0x334f085a gen_pool_for_each_chunk +EXPORT_SYMBOL vmlinux 0x337884c0 snd_pcm_lib_preallocate_pages +EXPORT_SYMBOL vmlinux 0x33822add scsi_host_lookup +EXPORT_SYMBOL vmlinux 0x3384729c ata_scsi_cmd_error_handler +EXPORT_SYMBOL vmlinux 0x339c4346 write_dirty_buffer +EXPORT_SYMBOL vmlinux 0x33a9b839 jbd2_journal_forget +EXPORT_SYMBOL vmlinux 0x33ae33d4 vfs_mkdir +EXPORT_SYMBOL vmlinux 0x33c7435c prandom_u32_state +EXPORT_SYMBOL vmlinux 0x33dbfd93 tcp_memory_allocated +EXPORT_SYMBOL vmlinux 0x33e12069 skb_orphan_partial +EXPORT_SYMBOL vmlinux 0x33f01e3b security_path_mkdir +EXPORT_SYMBOL vmlinux 0x33f0768c cpufreq_quick_get_max +EXPORT_SYMBOL vmlinux 0x33feb60b tag_pages_for_writeback +EXPORT_SYMBOL vmlinux 0x34184afe current_kernel_time +EXPORT_SYMBOL vmlinux 0x341dbfa3 __per_cpu_offset +EXPORT_SYMBOL vmlinux 0x34240d20 inetpeer_invalidate_tree +EXPORT_SYMBOL vmlinux 0x34414731 mmc_set_data_timeout +EXPORT_SYMBOL vmlinux 0x344b7739 prepare_to_wait_event +EXPORT_SYMBOL vmlinux 0x3454fe16 bio_add_page +EXPORT_SYMBOL vmlinux 0x3465caa3 cpu_maps_update_begin +EXPORT_SYMBOL vmlinux 0x347013de nla_validate +EXPORT_SYMBOL vmlinux 0x34740c6e dquot_writeback_dquots +EXPORT_SYMBOL vmlinux 0x34801e02 input_flush_device +EXPORT_SYMBOL vmlinux 0x348bbaa0 skb_prepare_seq_read +EXPORT_SYMBOL vmlinux 0x349cba85 strchr +EXPORT_SYMBOL vmlinux 0x34a39691 pm_vt_switch_unregister +EXPORT_SYMBOL vmlinux 0x34ac15f9 generic_permission +EXPORT_SYMBOL vmlinux 0x34d79c84 freeze_bdev +EXPORT_SYMBOL vmlinux 0x34dc39e4 jbd2_journal_start_reserved +EXPORT_SYMBOL vmlinux 0x34e663be snd_pcm_lib_ioctl +EXPORT_SYMBOL vmlinux 0x34e9d17d __dev_kfree_skb_any +EXPORT_SYMBOL vmlinux 0x34f3484e security_tun_dev_attach_queue +EXPORT_SYMBOL vmlinux 0x3507a132 _raw_spin_lock_irq +EXPORT_SYMBOL vmlinux 0x3517383e register_reboot_notifier +EXPORT_SYMBOL vmlinux 0x3526ab4e dquot_mark_dquot_dirty +EXPORT_SYMBOL vmlinux 0x3526efe7 security_sb_clone_mnt_opts +EXPORT_SYMBOL vmlinux 0x353de98f cmdline_parts_parse +EXPORT_SYMBOL vmlinux 0x353e3fa5 __get_user_4 +EXPORT_SYMBOL vmlinux 0x3552097d input_free_device +EXPORT_SYMBOL vmlinux 0x356461c8 rtc_time64_to_tm +EXPORT_SYMBOL vmlinux 0x356744f9 __get_page_tail +EXPORT_SYMBOL vmlinux 0x357bfb44 kobject_init +EXPORT_SYMBOL vmlinux 0x357c1ebe blk_free_tags +EXPORT_SYMBOL vmlinux 0x35a88f28 zlib_inflateInit2 +EXPORT_SYMBOL vmlinux 0x35c47b7e snd_card_file_add +EXPORT_SYMBOL vmlinux 0x35cd0604 __napi_alloc_skb +EXPORT_SYMBOL vmlinux 0x35da7ad8 drop_nlink +EXPORT_SYMBOL vmlinux 0x35e580cb generic_perform_write +EXPORT_SYMBOL vmlinux 0x35f6b5d2 ndo_dflt_fdb_dump +EXPORT_SYMBOL vmlinux 0x360b1afe probe_irq_mask +EXPORT_SYMBOL vmlinux 0x3612c10f tmio_core_mmc_enable +EXPORT_SYMBOL vmlinux 0x36163535 pcie_capability_read_word +EXPORT_SYMBOL vmlinux 0x3619969d jbd2_journal_init_inode +EXPORT_SYMBOL vmlinux 0x362f4bc2 dev_open +EXPORT_SYMBOL vmlinux 0x363a307d tcp_md5_hash_key +EXPORT_SYMBOL vmlinux 0x363e5c5f padata_register_cpumask_notifier +EXPORT_SYMBOL vmlinux 0x36493889 skb_queue_tail +EXPORT_SYMBOL vmlinux 0x366c1f48 i2c_smbus_xfer +EXPORT_SYMBOL vmlinux 0x36722446 swiotlb_alloc_coherent +EXPORT_SYMBOL vmlinux 0x367b3aaf __splice_from_pipe +EXPORT_SYMBOL vmlinux 0x367ba856 __crc32c_le_shift +EXPORT_SYMBOL vmlinux 0x3680623b dss_mgr_connect +EXPORT_SYMBOL vmlinux 0x3683b86d security_path_rmdir +EXPORT_SYMBOL vmlinux 0x3693b8be snd_card_free_when_closed +EXPORT_SYMBOL vmlinux 0x36a9bcc6 sock_kzfree_s +EXPORT_SYMBOL vmlinux 0x36b3bc8a kernel_listen +EXPORT_SYMBOL vmlinux 0x36b4115b inet_ioctl +EXPORT_SYMBOL vmlinux 0x36bd681b groups_alloc +EXPORT_SYMBOL vmlinux 0x36c2847a pci_set_power_state +EXPORT_SYMBOL vmlinux 0x36ccab35 __block_write_begin +EXPORT_SYMBOL vmlinux 0x36fd3aa6 pci_stop_and_remove_bus_device +EXPORT_SYMBOL vmlinux 0x36fdda67 hdmi_infoframe_pack +EXPORT_SYMBOL vmlinux 0x37259c26 block_read_full_page +EXPORT_SYMBOL vmlinux 0x37380e27 uart_get_baud_rate +EXPORT_SYMBOL vmlinux 0x3739153d skb_vlan_untag +EXPORT_SYMBOL vmlinux 0x3744cf36 vmalloc_to_pfn +EXPORT_SYMBOL vmlinux 0x374b5f69 blkdev_issue_zeroout +EXPORT_SYMBOL vmlinux 0x3764e838 try_to_release_page +EXPORT_SYMBOL vmlinux 0x376b9c79 simple_dir_inode_operations +EXPORT_SYMBOL vmlinux 0x376d0286 dev_crit +EXPORT_SYMBOL vmlinux 0x37776654 tty_register_ldisc +EXPORT_SYMBOL vmlinux 0x377da429 try_to_free_buffers +EXPORT_SYMBOL vmlinux 0x3787c247 ether_setup +EXPORT_SYMBOL vmlinux 0x3796bdcc snd_pcm_format_little_endian +EXPORT_SYMBOL vmlinux 0x379dee5f trace_print_symbols_seq_u64 +EXPORT_SYMBOL vmlinux 0x37af3190 dm_table_run_md_queue_async +EXPORT_SYMBOL vmlinux 0x37bd54ca sk_filter +EXPORT_SYMBOL vmlinux 0x37befc70 jiffies_to_msecs +EXPORT_SYMBOL vmlinux 0x37d33309 open_exec +EXPORT_SYMBOL vmlinux 0x37e74642 get_jiffies_64 +EXPORT_SYMBOL vmlinux 0x37f614b7 __kfifo_len_r +EXPORT_SYMBOL vmlinux 0x380659a5 flush_signals +EXPORT_SYMBOL vmlinux 0x3814e494 dst_alloc +EXPORT_SYMBOL vmlinux 0x38150593 sock_release +EXPORT_SYMBOL vmlinux 0x381a798a setup_max_cpus +EXPORT_SYMBOL vmlinux 0x381ccc13 __kfifo_dma_in_prepare_r +EXPORT_SYMBOL vmlinux 0x3872f177 save_mount_options +EXPORT_SYMBOL vmlinux 0x387e10ff tcf_action_dump_1 +EXPORT_SYMBOL vmlinux 0x38869d88 kstat +EXPORT_SYMBOL vmlinux 0x38938ebf __pagevec_release +EXPORT_SYMBOL vmlinux 0x3895b531 snd_ctl_add +EXPORT_SYMBOL vmlinux 0x389acf0c gpmc_configure +EXPORT_SYMBOL vmlinux 0x389ecf9e __bswapdi2 +EXPORT_SYMBOL vmlinux 0x38a511cb mark_buffer_async_write +EXPORT_SYMBOL vmlinux 0x38a6eb54 ethtool_op_get_link +EXPORT_SYMBOL vmlinux 0x38a71b7e pci_free_resource_list +EXPORT_SYMBOL vmlinux 0x38a9f7c5 in6addr_loopback +EXPORT_SYMBOL vmlinux 0x38af23d7 blk_limits_max_hw_sectors +EXPORT_SYMBOL vmlinux 0x38b72100 tcp_simple_retransmit +EXPORT_SYMBOL vmlinux 0x38b95269 mmc_can_secure_erase_trim +EXPORT_SYMBOL vmlinux 0x38c946d4 devm_backlight_device_register +EXPORT_SYMBOL vmlinux 0x38dc2278 skb_free_datagram_locked +EXPORT_SYMBOL vmlinux 0x38de33a5 netpoll_setup +EXPORT_SYMBOL vmlinux 0x38f2902c sock_no_poll +EXPORT_SYMBOL vmlinux 0x38fa8854 pci_disable_msi +EXPORT_SYMBOL vmlinux 0x39067998 mntput +EXPORT_SYMBOL vmlinux 0x3924dd56 try_wait_for_completion +EXPORT_SYMBOL vmlinux 0x3939f8f0 rfkill_pause_polling +EXPORT_SYMBOL vmlinux 0x393cb0c8 revalidate_disk +EXPORT_SYMBOL vmlinux 0x39461d6a in_egroup_p +EXPORT_SYMBOL vmlinux 0x394a5864 udp6_csum_init +EXPORT_SYMBOL vmlinux 0x3969a845 blk_rq_set_block_pc +EXPORT_SYMBOL vmlinux 0x3971b4df snd_ecards_limit +EXPORT_SYMBOL vmlinux 0x39730d06 atomic_io_modify +EXPORT_SYMBOL vmlinux 0x39991865 icmp_global_allow +EXPORT_SYMBOL vmlinux 0x399caa3d inet_confirm_addr +EXPORT_SYMBOL vmlinux 0x399fbc80 fb_get_mode +EXPORT_SYMBOL vmlinux 0x39a0f297 skb_seq_read +EXPORT_SYMBOL vmlinux 0x39a1f3b5 xfrm6_rcv_spi +EXPORT_SYMBOL vmlinux 0x39a785cf scsi_rescan_device +EXPORT_SYMBOL vmlinux 0x39b52d19 __bitmap_and +EXPORT_SYMBOL vmlinux 0x39bf9301 _snd_pcm_hw_param_setempty +EXPORT_SYMBOL vmlinux 0x39e76a41 wait_on_page_bit +EXPORT_SYMBOL vmlinux 0x39e92732 fb_show_logo +EXPORT_SYMBOL vmlinux 0x39ef0703 posix_lock_inode_wait +EXPORT_SYMBOL vmlinux 0x39f0c92c serial8250_register_8250_port +EXPORT_SYMBOL vmlinux 0x3a053ffb blk_queue_free_tags +EXPORT_SYMBOL vmlinux 0x3a1ac054 set_normalized_timespec64 +EXPORT_SYMBOL vmlinux 0x3a37a686 trace_raw_output_prep +EXPORT_SYMBOL vmlinux 0x3a3bb554 __vfs_read +EXPORT_SYMBOL vmlinux 0x3a6d3c4a touch_atime +EXPORT_SYMBOL vmlinux 0x3a874933 bdev_read_only +EXPORT_SYMBOL vmlinux 0x3a997058 param_get_invbool +EXPORT_SYMBOL vmlinux 0x3a9b6fb9 blk_unregister_region +EXPORT_SYMBOL vmlinux 0x3ab60efa scsi_get_host_dev +EXPORT_SYMBOL vmlinux 0x3b012e25 snd_jack_set_parent +EXPORT_SYMBOL vmlinux 0x3b0ea799 dss_mgr_register_framedone_handler +EXPORT_SYMBOL vmlinux 0x3b14b5eb scsi_command_normalize_sense +EXPORT_SYMBOL vmlinux 0x3b153424 blk_mq_start_hw_queue +EXPORT_SYMBOL vmlinux 0x3b15b72d kmap_atomic +EXPORT_SYMBOL vmlinux 0x3b263593 complete_request_key +EXPORT_SYMBOL vmlinux 0x3b51c1f7 nobh_write_end +EXPORT_SYMBOL vmlinux 0x3b639a4f dev_remove_pack +EXPORT_SYMBOL vmlinux 0x3b644591 __bitmap_shift_left +EXPORT_SYMBOL vmlinux 0x3b714b0c blk_mq_start_hw_queues +EXPORT_SYMBOL vmlinux 0x3b835167 inet_csk_destroy_sock +EXPORT_SYMBOL vmlinux 0x3b91f3af snd_free_pages +EXPORT_SYMBOL vmlinux 0x3b9ede2d scsi_register_driver +EXPORT_SYMBOL vmlinux 0x3bbb171b set_device_ro +EXPORT_SYMBOL vmlinux 0x3bbe9a64 blk_mq_start_request +EXPORT_SYMBOL vmlinux 0x3bbf46ea vga_base +EXPORT_SYMBOL vmlinux 0x3bd84e27 generic_file_readonly_mmap +EXPORT_SYMBOL vmlinux 0x3bf750b6 blkdev_get_by_dev +EXPORT_SYMBOL vmlinux 0x3bfebfd0 skb_copy_and_csum_dev +EXPORT_SYMBOL vmlinux 0x3c3fce39 __local_bh_enable_ip +EXPORT_SYMBOL vmlinux 0x3c80c06c kstrtoull +EXPORT_SYMBOL vmlinux 0x3c8a9620 kmem_cache_create +EXPORT_SYMBOL vmlinux 0x3cb3931b sg_copy_to_buffer +EXPORT_SYMBOL vmlinux 0x3cc3d636 of_node_put +EXPORT_SYMBOL vmlinux 0x3cd9a906 param_set_bint +EXPORT_SYMBOL vmlinux 0x3ce4ca6f disable_irq +EXPORT_SYMBOL vmlinux 0x3d0154bc tcp_initialize_rcv_mss +EXPORT_SYMBOL vmlinux 0x3d057b23 sock_sendmsg +EXPORT_SYMBOL vmlinux 0x3d2ac0a4 xfrm_lookup_route +EXPORT_SYMBOL vmlinux 0x3d30409d iommu_tbl_range_free +EXPORT_SYMBOL vmlinux 0x3d3a1e6e devm_devfreq_add_device +EXPORT_SYMBOL vmlinux 0x3d3c540f elf_hwcap +EXPORT_SYMBOL vmlinux 0x3d4f5cd3 igrab +EXPORT_SYMBOL vmlinux 0x3d548256 bioset_integrity_create +EXPORT_SYMBOL vmlinux 0x3d686adf inet_release +EXPORT_SYMBOL vmlinux 0x3d6ef2a9 of_cpufreq_power_cooling_register +EXPORT_SYMBOL vmlinux 0x3d76679a path_put +EXPORT_SYMBOL vmlinux 0x3d7d36b5 noop_qdisc +EXPORT_SYMBOL vmlinux 0x3d84a30b page_follow_link_light +EXPORT_SYMBOL vmlinux 0x3d8afbcc param_set_int +EXPORT_SYMBOL vmlinux 0x3dabe791 elevator_init +EXPORT_SYMBOL vmlinux 0x3daf74d1 param_get_long +EXPORT_SYMBOL vmlinux 0x3dc32427 of_find_property +EXPORT_SYMBOL vmlinux 0x3dcb88a0 irq_set_handler_data +EXPORT_SYMBOL vmlinux 0x3ddb4233 inet6_offloads +EXPORT_SYMBOL vmlinux 0x3dde464a dma_supported +EXPORT_SYMBOL vmlinux 0x3df75397 amba_driver_register +EXPORT_SYMBOL vmlinux 0x3dfc897c seq_hlist_start_head +EXPORT_SYMBOL vmlinux 0x3e150e29 mtd_concat_create +EXPORT_SYMBOL vmlinux 0x3e1c480a release_firmware +EXPORT_SYMBOL vmlinux 0x3e296160 param_set_bool +EXPORT_SYMBOL vmlinux 0x3e2e5bcb tc6393xb_lcd_set_power +EXPORT_SYMBOL vmlinux 0x3e3fbd2c xfrm_find_acq_byseq +EXPORT_SYMBOL vmlinux 0x3e55e128 jbd2_journal_init_jbd_inode +EXPORT_SYMBOL vmlinux 0x3e5beda1 __vlan_find_dev_deep_rcu +EXPORT_SYMBOL vmlinux 0x3e801f25 __i2c_transfer +EXPORT_SYMBOL vmlinux 0x3e9110fa __hw_addr_unsync +EXPORT_SYMBOL vmlinux 0x3e95083c vme_slave_get +EXPORT_SYMBOL vmlinux 0x3e9e951c touchscreen_parse_of_params +EXPORT_SYMBOL vmlinux 0x3eda0d78 sock_recv_errqueue +EXPORT_SYMBOL vmlinux 0x3ee25ed7 inet_put_port +EXPORT_SYMBOL vmlinux 0x3ef2a995 mmc_interrupt_hpi +EXPORT_SYMBOL vmlinux 0x3ef79074 generic_cont_expand_simple +EXPORT_SYMBOL vmlinux 0x3f16cdf0 netdev_master_upper_dev_get_rcu +EXPORT_SYMBOL vmlinux 0x3f27bd24 scsicam_bios_param +EXPORT_SYMBOL vmlinux 0x3f4547a7 put_unused_fd +EXPORT_SYMBOL vmlinux 0x3f58cf8a ipv6_chk_addr +EXPORT_SYMBOL vmlinux 0x3f5b67d5 wait_for_completion_killable +EXPORT_SYMBOL vmlinux 0x3f616ce2 queue_delayed_work_on +EXPORT_SYMBOL vmlinux 0x3f6aa22d page_symlink_inode_operations +EXPORT_SYMBOL vmlinux 0x3f7f22e0 sock_init_data +EXPORT_SYMBOL vmlinux 0x3f83ea43 __lock_buffer +EXPORT_SYMBOL vmlinux 0x3f95d291 __cleancache_get_page +EXPORT_SYMBOL vmlinux 0x3fab3ca9 register_sysctl_table +EXPORT_SYMBOL vmlinux 0x3fdb3a0f blk_put_request +EXPORT_SYMBOL vmlinux 0x3fe716ea serial8250_do_set_termios +EXPORT_SYMBOL vmlinux 0x3fec048f sg_next +EXPORT_SYMBOL vmlinux 0x40026125 mipi_dsi_host_register +EXPORT_SYMBOL vmlinux 0x4002e8e7 security_path_rename +EXPORT_SYMBOL vmlinux 0x4004e859 __pskb_copy_fclone +EXPORT_SYMBOL vmlinux 0x40064bdc pci_restore_state +EXPORT_SYMBOL vmlinux 0x400ca513 jbd2_journal_stop +EXPORT_SYMBOL vmlinux 0x402830c7 generic_error_remove_page +EXPORT_SYMBOL vmlinux 0x402a6145 skb_find_text +EXPORT_SYMBOL vmlinux 0x402b8281 __request_module +EXPORT_SYMBOL vmlinux 0x402ffe49 freezing_slow_path +EXPORT_SYMBOL vmlinux 0x4039918a clk_register_clkdev +EXPORT_SYMBOL vmlinux 0x4049a247 blk_mq_start_stopped_hw_queues +EXPORT_SYMBOL vmlinux 0x404d6aaf da903x_query_status +EXPORT_SYMBOL vmlinux 0x40550f98 get_cached_acl +EXPORT_SYMBOL vmlinux 0x4059792f print_hex_dump +EXPORT_SYMBOL vmlinux 0x405c1144 get_seconds +EXPORT_SYMBOL vmlinux 0x4060cbb0 snd_timer_interrupt +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 0x409f2cb9 genl_unregister_family +EXPORT_SYMBOL vmlinux 0x40a16417 bdget_disk +EXPORT_SYMBOL vmlinux 0x40a27c37 scsi_dev_info_remove_list +EXPORT_SYMBOL vmlinux 0x40a2d1dd dm_table_get_size +EXPORT_SYMBOL vmlinux 0x40a386d5 tcp_enter_memory_pressure +EXPORT_SYMBOL vmlinux 0x40a9b349 vzalloc +EXPORT_SYMBOL vmlinux 0x40ad3abc neigh_proc_dointvec_ms_jiffies +EXPORT_SYMBOL vmlinux 0x40b49164 fget_raw +EXPORT_SYMBOL vmlinux 0x40c01859 gen_pool_best_fit +EXPORT_SYMBOL vmlinux 0x40c7247c si_meminfo +EXPORT_SYMBOL vmlinux 0x40cc4eb8 set_nlink +EXPORT_SYMBOL vmlinux 0x40d04664 console_trylock +EXPORT_SYMBOL vmlinux 0x40d59096 unregister_restart_handler +EXPORT_SYMBOL vmlinux 0x40d63c39 blk_queue_dma_pad +EXPORT_SYMBOL vmlinux 0x40dd3d86 of_graph_get_endpoint_by_regs +EXPORT_SYMBOL vmlinux 0x40e49f26 fb_firmware_edid +EXPORT_SYMBOL vmlinux 0x40e6b0f5 i2c_smbus_read_word_data +EXPORT_SYMBOL vmlinux 0x40e7fa28 inet_add_offload +EXPORT_SYMBOL vmlinux 0x40ed524a _raw_read_lock_irq +EXPORT_SYMBOL vmlinux 0x40f00fef kill_litter_super +EXPORT_SYMBOL vmlinux 0x40f07981 __ashldi3 +EXPORT_SYMBOL vmlinux 0x40f07e63 kernel_param_lock +EXPORT_SYMBOL vmlinux 0x41482d8b strndup_user +EXPORT_SYMBOL vmlinux 0x4155248f forget_cached_acl +EXPORT_SYMBOL vmlinux 0x415ad83b tcp_poll +EXPORT_SYMBOL vmlinux 0x415b842d ata_std_end_eh +EXPORT_SYMBOL vmlinux 0x415e43c1 register_qdisc +EXPORT_SYMBOL vmlinux 0x41714d9f pci_pme_capable +EXPORT_SYMBOL vmlinux 0x418251d2 textsearch_unregister +EXPORT_SYMBOL vmlinux 0x41862ad4 vme_alloc_consistent +EXPORT_SYMBOL vmlinux 0x4188d439 neigh_rand_reach_time +EXPORT_SYMBOL vmlinux 0x418a5367 __scsi_format_command +EXPORT_SYMBOL vmlinux 0x419e2f54 __pci_enable_wake +EXPORT_SYMBOL vmlinux 0x41b40353 __register_nls +EXPORT_SYMBOL vmlinux 0x41d0bb57 is_bad_inode +EXPORT_SYMBOL vmlinux 0x41f76958 pm860x_bulk_write +EXPORT_SYMBOL vmlinux 0x42160169 flush_workqueue +EXPORT_SYMBOL vmlinux 0x4230745c blk_mq_stop_hw_queue +EXPORT_SYMBOL vmlinux 0x423746c7 bio_flush_dcache_pages +EXPORT_SYMBOL vmlinux 0x423d81ed ida_pre_get +EXPORT_SYMBOL vmlinux 0x4243dd41 qdisc_watchdog_init +EXPORT_SYMBOL vmlinux 0x4248ae3c single_task_running +EXPORT_SYMBOL vmlinux 0x424d3620 zlib_inflateIncomp +EXPORT_SYMBOL vmlinux 0x427b4e5e udp_proc_register +EXPORT_SYMBOL vmlinux 0x42858ff2 sdev_enable_disk_events +EXPORT_SYMBOL vmlinux 0x4298b775 v7_flush_kern_cache_all +EXPORT_SYMBOL vmlinux 0x42a1b208 gen_pool_first_fit +EXPORT_SYMBOL vmlinux 0x42b50b4e fib_default_rule_pref +EXPORT_SYMBOL vmlinux 0x42bac4b2 dss_mgr_disable +EXPORT_SYMBOL vmlinux 0x42c61eb8 rtnl_notify +EXPORT_SYMBOL vmlinux 0x42d20d00 from_kgid +EXPORT_SYMBOL vmlinux 0x42ecf546 ioremap +EXPORT_SYMBOL vmlinux 0x42fdd014 mmc_free_host +EXPORT_SYMBOL vmlinux 0x4302d0eb free_pages +EXPORT_SYMBOL vmlinux 0x43233b43 param_set_copystring +EXPORT_SYMBOL vmlinux 0x4331008f sock_common_setsockopt +EXPORT_SYMBOL vmlinux 0x4345fa59 snd_ctl_boolean_mono_info +EXPORT_SYMBOL vmlinux 0x4351577a fb_parse_edid +EXPORT_SYMBOL vmlinux 0x436e2f0d d_instantiate +EXPORT_SYMBOL vmlinux 0x4379876e max8925_set_bits +EXPORT_SYMBOL vmlinux 0x437b0f83 pcibios_resource_to_bus +EXPORT_SYMBOL vmlinux 0x437c9204 eth_change_mtu +EXPORT_SYMBOL vmlinux 0x438610bd security_tun_dev_alloc_security +EXPORT_SYMBOL vmlinux 0x43a8316b bitmap_end_sync +EXPORT_SYMBOL vmlinux 0x43b8a044 blk_mq_run_hw_queues +EXPORT_SYMBOL vmlinux 0x43dc48da locks_remove_posix +EXPORT_SYMBOL vmlinux 0x43e78e11 param_get_int +EXPORT_SYMBOL vmlinux 0x43f23311 dm_table_get_md +EXPORT_SYMBOL vmlinux 0x43f8b0cb security_path_truncate +EXPORT_SYMBOL vmlinux 0x4411c503 prandom_seed +EXPORT_SYMBOL vmlinux 0x44122f5c rwsem_downgrade_wake +EXPORT_SYMBOL vmlinux 0x442495c9 tmio_core_mmc_resume +EXPORT_SYMBOL vmlinux 0x44272f0a key_revoke +EXPORT_SYMBOL vmlinux 0x4434dda0 mmc_wait_for_req +EXPORT_SYMBOL vmlinux 0x44366cfc simple_write_to_buffer +EXPORT_SYMBOL vmlinux 0x443f2eb4 bio_integrity_alloc +EXPORT_SYMBOL vmlinux 0x44438b96 hex2bin +EXPORT_SYMBOL vmlinux 0x44445f83 md_cluster_mod +EXPORT_SYMBOL vmlinux 0x445e8adf eth_header +EXPORT_SYMBOL vmlinux 0x44643b93 __aeabi_lmul +EXPORT_SYMBOL vmlinux 0x44758041 nf_unregister_hook +EXPORT_SYMBOL vmlinux 0x4491a25d tcp_sendmsg +EXPORT_SYMBOL vmlinux 0x44a6662f netif_wake_subqueue +EXPORT_SYMBOL vmlinux 0x44ada28c mark_buffer_dirty +EXPORT_SYMBOL vmlinux 0x44b1d426 __dynamic_pr_debug +EXPORT_SYMBOL vmlinux 0x44b7ce26 blk_complete_request +EXPORT_SYMBOL vmlinux 0x44c209e1 abx500_set_register_interruptible +EXPORT_SYMBOL vmlinux 0x44da5d0f __csum_ipv6_magic +EXPORT_SYMBOL vmlinux 0x44dd3d8d completion_done +EXPORT_SYMBOL vmlinux 0x44dea83d jbd2_journal_start_commit +EXPORT_SYMBOL vmlinux 0x44e9a829 match_token +EXPORT_SYMBOL vmlinux 0x44fb2d87 in6_dev_finish_destroy +EXPORT_SYMBOL vmlinux 0x45079bf4 arp_tbl +EXPORT_SYMBOL vmlinux 0x451c07f6 sk_wait_data +EXPORT_SYMBOL vmlinux 0x453c8403 pci_msi_enabled +EXPORT_SYMBOL vmlinux 0x453ea3dd scmd_printk +EXPORT_SYMBOL vmlinux 0x455aec94 inet6_unregister_protosw +EXPORT_SYMBOL vmlinux 0x456d24d5 iw_handler_get_thrspy +EXPORT_SYMBOL vmlinux 0x4578f528 __kfifo_to_user +EXPORT_SYMBOL vmlinux 0x45901063 textsearch_destroy +EXPORT_SYMBOL vmlinux 0x45a6be13 cpufreq_sysfs_remove_file +EXPORT_SYMBOL vmlinux 0x45a765cf pci_add_resource +EXPORT_SYMBOL vmlinux 0x45aac56e sock_update_memcg +EXPORT_SYMBOL vmlinux 0x45baf9c7 generic_show_options +EXPORT_SYMBOL vmlinux 0x45bda0d5 system_serial_low +EXPORT_SYMBOL vmlinux 0x45bf7ed1 md_done_sync +EXPORT_SYMBOL vmlinux 0x45c165bc create_empty_buffers +EXPORT_SYMBOL vmlinux 0x45cc0cbb bio_put +EXPORT_SYMBOL vmlinux 0x45eac0dd gen_pool_virt_to_phys +EXPORT_SYMBOL vmlinux 0x46002964 ip_queue_xmit +EXPORT_SYMBOL vmlinux 0x46106dff inet_sock_destruct +EXPORT_SYMBOL vmlinux 0x4612ca52 tty_port_put +EXPORT_SYMBOL vmlinux 0x4614bd6f dquot_resume +EXPORT_SYMBOL vmlinux 0x462a2e75 match_strlcpy +EXPORT_SYMBOL vmlinux 0x462bb95a tc_classify +EXPORT_SYMBOL vmlinux 0x4633bf55 scm_fp_dup +EXPORT_SYMBOL vmlinux 0x463c7756 phy_get_eee_err +EXPORT_SYMBOL vmlinux 0x46417619 of_device_alloc +EXPORT_SYMBOL vmlinux 0x465757c3 cpu_present_mask +EXPORT_SYMBOL vmlinux 0x465cab34 secure_ipv6_port_ephemeral +EXPORT_SYMBOL vmlinux 0x4661a659 arp_xmit +EXPORT_SYMBOL vmlinux 0x46649cd1 vme_lm_set +EXPORT_SYMBOL vmlinux 0x46707dae pci_setup_cardbus +EXPORT_SYMBOL vmlinux 0x468078de vfs_readf +EXPORT_SYMBOL vmlinux 0x46954b74 xfrm_init_replay +EXPORT_SYMBOL vmlinux 0x469977a4 iov_iter_kvec +EXPORT_SYMBOL vmlinux 0x469efe15 t10_pi_type3_crc +EXPORT_SYMBOL vmlinux 0x46abf886 kmap_to_page +EXPORT_SYMBOL vmlinux 0x46aec649 dev_set_mtu +EXPORT_SYMBOL vmlinux 0x46c222fe block_invalidatepage +EXPORT_SYMBOL vmlinux 0x46ca246c omap_get_dma_src_pos +EXPORT_SYMBOL vmlinux 0x46d3b28c __div0 +EXPORT_SYMBOL vmlinux 0x46f0181e simple_getattr +EXPORT_SYMBOL vmlinux 0x46fa6e9d xfrm_state_walk_done +EXPORT_SYMBOL vmlinux 0x46feb099 dm_read_arg +EXPORT_SYMBOL vmlinux 0x4706ac13 lock_rename +EXPORT_SYMBOL vmlinux 0x47416e14 cpu_rmap_add +EXPORT_SYMBOL vmlinux 0x475e41e2 up_write +EXPORT_SYMBOL vmlinux 0x4779117b dquot_destroy +EXPORT_SYMBOL vmlinux 0x4782d6a8 amba_device_unregister +EXPORT_SYMBOL vmlinux 0x47939e0d __tasklet_hi_schedule +EXPORT_SYMBOL vmlinux 0x47b25ef5 snd_pcm_limit_hw_rates +EXPORT_SYMBOL vmlinux 0x47b2b0a1 follow_down +EXPORT_SYMBOL vmlinux 0x47bcf695 omap_dss_get_overlay +EXPORT_SYMBOL vmlinux 0x47e70229 v7_flush_user_cache_range +EXPORT_SYMBOL vmlinux 0x47f757de elf_platform +EXPORT_SYMBOL vmlinux 0x48096356 revert_creds +EXPORT_SYMBOL vmlinux 0x480e2987 clkdev_add +EXPORT_SYMBOL vmlinux 0x481ce6ce cpu_active_mask +EXPORT_SYMBOL vmlinux 0x4835767f ipv6_setsockopt +EXPORT_SYMBOL vmlinux 0x48436e06 km_report +EXPORT_SYMBOL vmlinux 0x48453123 skb_abort_seq_read +EXPORT_SYMBOL vmlinux 0x4857ea73 tty_register_driver +EXPORT_SYMBOL vmlinux 0x4859b8bb rtc_year_days +EXPORT_SYMBOL vmlinux 0x486ebc84 pci_find_next_bus +EXPORT_SYMBOL vmlinux 0x487a908b pci_bus_write_config_word +EXPORT_SYMBOL vmlinux 0x48a5b067 __machine_arch_type +EXPORT_SYMBOL vmlinux 0x48ac3201 ihold +EXPORT_SYMBOL vmlinux 0x48b99a13 vme_lm_free +EXPORT_SYMBOL vmlinux 0x48c6f3c8 security_path_unlink +EXPORT_SYMBOL vmlinux 0x48cf2860 tcf_exts_dump +EXPORT_SYMBOL vmlinux 0x48e25c72 register_netdevice +EXPORT_SYMBOL vmlinux 0x48fda63b get_fs_type +EXPORT_SYMBOL vmlinux 0x49045426 icmp_err_convert +EXPORT_SYMBOL vmlinux 0x490db093 xfrm_unregister_type +EXPORT_SYMBOL vmlinux 0x491a90b1 kernel_connect +EXPORT_SYMBOL vmlinux 0x491b7a03 ppp_channel_index +EXPORT_SYMBOL vmlinux 0x495c96f8 posix_acl_init +EXPORT_SYMBOL vmlinux 0x49603fb8 security_sb_copy_data +EXPORT_SYMBOL vmlinux 0x4972788b truncate_pagecache_range +EXPORT_SYMBOL vmlinux 0x497564e6 setup_new_exec +EXPORT_SYMBOL vmlinux 0x49824429 param_ops_byte +EXPORT_SYMBOL vmlinux 0x4988f241 neigh_for_each +EXPORT_SYMBOL vmlinux 0x49924f32 remap_vmalloc_range_partial +EXPORT_SYMBOL vmlinux 0x499621f6 simple_transaction_set +EXPORT_SYMBOL vmlinux 0x499cb58c prepare_to_wait +EXPORT_SYMBOL vmlinux 0x49b07aec tcp_select_initial_window +EXPORT_SYMBOL vmlinux 0x49c0316a xfrm_policy_hash_rebuild +EXPORT_SYMBOL vmlinux 0x49c1a815 edma_set_src +EXPORT_SYMBOL vmlinux 0x49ebacbd _clear_bit +EXPORT_SYMBOL vmlinux 0x49f71442 dev_close_many +EXPORT_SYMBOL vmlinux 0x49f8fe7f setattr_copy +EXPORT_SYMBOL vmlinux 0x4a39e5a1 omap_set_dma_src_params +EXPORT_SYMBOL vmlinux 0x4a3ea5c0 snd_request_card +EXPORT_SYMBOL vmlinux 0x4a418998 scsi_cmd_get_serial +EXPORT_SYMBOL vmlinux 0x4a4b151d of_find_i2c_adapter_by_node +EXPORT_SYMBOL vmlinux 0x4a57b339 wait_for_completion_io_timeout +EXPORT_SYMBOL vmlinux 0x4a5b3f2a bitmap_unplug +EXPORT_SYMBOL vmlinux 0x4a914b82 tso_start +EXPORT_SYMBOL vmlinux 0x4a93af24 kill_anon_super +EXPORT_SYMBOL vmlinux 0x4a9ec521 from_kprojid +EXPORT_SYMBOL vmlinux 0x4abbe3c2 vm_brk +EXPORT_SYMBOL vmlinux 0x4abdf10d dquot_reclaim_space_nodirty +EXPORT_SYMBOL vmlinux 0x4abe5e9f snd_card_free +EXPORT_SYMBOL vmlinux 0x4acd93d3 release_resource +EXPORT_SYMBOL vmlinux 0x4ad208b2 reqsk_queue_hash_req +EXPORT_SYMBOL vmlinux 0x4ad542d5 generic_make_request +EXPORT_SYMBOL vmlinux 0x4ae4f779 blk_mq_init_allocated_queue +EXPORT_SYMBOL vmlinux 0x4af03a34 dev_activate +EXPORT_SYMBOL vmlinux 0x4afe9a77 scsi_partsize +EXPORT_SYMBOL vmlinux 0x4afee3fb netif_carrier_on +EXPORT_SYMBOL vmlinux 0x4b1ec3e2 kstrtoul_from_user +EXPORT_SYMBOL vmlinux 0x4b2703f6 __wait_on_bit +EXPORT_SYMBOL vmlinux 0x4b34fbf5 block_all_signals +EXPORT_SYMBOL vmlinux 0x4b47aad5 ps2_drain +EXPORT_SYMBOL vmlinux 0x4b4ceadb ptp_find_pin +EXPORT_SYMBOL vmlinux 0x4b5fd49e dm_kcopyd_do_callback +EXPORT_SYMBOL vmlinux 0x4b78933c qcom_scm_set_cold_boot_addr +EXPORT_SYMBOL vmlinux 0x4b8820e3 kern_unmount +EXPORT_SYMBOL vmlinux 0x4b945cf3 tcp_rcv_state_process +EXPORT_SYMBOL vmlinux 0x4b9ec8bc __dev_getfirstbyhwtype +EXPORT_SYMBOL vmlinux 0x4bab4794 generic_file_read_iter +EXPORT_SYMBOL vmlinux 0x4baf35a7 vme_master_get +EXPORT_SYMBOL vmlinux 0x4bb0778e vm_stat +EXPORT_SYMBOL vmlinux 0x4bbf700b jbd2_journal_get_write_access +EXPORT_SYMBOL vmlinux 0x4bc9e4dd i2c_master_send +EXPORT_SYMBOL vmlinux 0x4bcd9ef2 dquot_release +EXPORT_SYMBOL vmlinux 0x4bcf03a4 radix_tree_tag_clear +EXPORT_SYMBOL vmlinux 0x4bd0acd7 input_mt_report_slot_state +EXPORT_SYMBOL vmlinux 0x4be7fb63 up +EXPORT_SYMBOL vmlinux 0x4be85a03 memweight +EXPORT_SYMBOL vmlinux 0x4bf87a20 of_count_phandle_with_args +EXPORT_SYMBOL vmlinux 0x4bfd7043 dcache_readdir +EXPORT_SYMBOL vmlinux 0x4bff04cb phy_init_eee +EXPORT_SYMBOL vmlinux 0x4c1c0b16 xfrm_policy_alloc +EXPORT_SYMBOL vmlinux 0x4c219fa4 elm_decode_bch_error_page +EXPORT_SYMBOL vmlinux 0x4c233a44 _raw_read_unlock_bh +EXPORT_SYMBOL vmlinux 0x4c29dcbf cancel_delayed_work_sync +EXPORT_SYMBOL vmlinux 0x4c2a4481 __sb_start_write +EXPORT_SYMBOL vmlinux 0x4c2ae700 strnstr +EXPORT_SYMBOL vmlinux 0x4c2f35ac iterate_mounts +EXPORT_SYMBOL vmlinux 0x4c33081d omapdss_compat_uninit +EXPORT_SYMBOL vmlinux 0x4c346a53 kvasprintf +EXPORT_SYMBOL vmlinux 0x4c4e4498 page_cache_next_hole +EXPORT_SYMBOL vmlinux 0x4c517cf8 sg_alloc_table_from_pages +EXPORT_SYMBOL vmlinux 0x4c5fc58c _raw_read_lock_bh +EXPORT_SYMBOL vmlinux 0x4c86184b remove_wait_queue +EXPORT_SYMBOL vmlinux 0x4ca328db from_kuid_munged +EXPORT_SYMBOL vmlinux 0x4caf09b5 vfs_mknod +EXPORT_SYMBOL vmlinux 0x4cb4d619 kobject_set_name +EXPORT_SYMBOL vmlinux 0x4cdb3178 ns_to_timeval +EXPORT_SYMBOL vmlinux 0x4cf0a978 kill_pid +EXPORT_SYMBOL vmlinux 0x4cf3a8f8 vga_put +EXPORT_SYMBOL vmlinux 0x4d083e96 inet_add_protocol +EXPORT_SYMBOL vmlinux 0x4d0d163d copy_page +EXPORT_SYMBOL vmlinux 0x4d0e81b3 phy_stop +EXPORT_SYMBOL vmlinux 0x4d184a3b devm_backlight_device_unregister +EXPORT_SYMBOL vmlinux 0x4d27c249 seq_printf +EXPORT_SYMBOL vmlinux 0x4d294bb4 bit_wait_io +EXPORT_SYMBOL vmlinux 0x4d3ac3b6 lockref_put_or_lock +EXPORT_SYMBOL vmlinux 0x4d3c153f sigprocmask +EXPORT_SYMBOL vmlinux 0x4d3c2c0d elevator_change +EXPORT_SYMBOL vmlinux 0x4d45d89e udp_memory_allocated +EXPORT_SYMBOL vmlinux 0x4d6e3329 neigh_connected_output +EXPORT_SYMBOL vmlinux 0x4d974b9c register_sysrq_key +EXPORT_SYMBOL vmlinux 0x4d9b652b rb_erase +EXPORT_SYMBOL vmlinux 0x4d9b6d35 snd_pcm_format_size +EXPORT_SYMBOL vmlinux 0x4da0838f abx500_event_registers_startup_state_get +EXPORT_SYMBOL vmlinux 0x4da631ad dev_alert +EXPORT_SYMBOL vmlinux 0x4daa4a00 input_handler_for_each_handle +EXPORT_SYMBOL vmlinux 0x4dc0e6ab mutex_lock_killable +EXPORT_SYMBOL vmlinux 0x4de34a07 cpu_rmap_put +EXPORT_SYMBOL vmlinux 0x4dec6038 memscan +EXPORT_SYMBOL vmlinux 0x4df119fa __bitmap_parse +EXPORT_SYMBOL vmlinux 0x4e25aa57 __mark_inode_dirty +EXPORT_SYMBOL vmlinux 0x4e26d6d4 mount_single +EXPORT_SYMBOL vmlinux 0x4e3567f7 match_int +EXPORT_SYMBOL vmlinux 0x4e3f66ed kmalloc_dma_caches +EXPORT_SYMBOL vmlinux 0x4e4091eb inode_init_once +EXPORT_SYMBOL vmlinux 0x4e506013 omap_dma_link_lch +EXPORT_SYMBOL vmlinux 0x4e56af68 __genl_register_family +EXPORT_SYMBOL vmlinux 0x4e68e9be rb_next_postorder +EXPORT_SYMBOL vmlinux 0x4e6a1a14 unlock_rename +EXPORT_SYMBOL vmlinux 0x4e6e8ea7 fg_console +EXPORT_SYMBOL vmlinux 0x4e9ce9f9 edma_link +EXPORT_SYMBOL vmlinux 0x4f1cd128 security_tun_dev_create +EXPORT_SYMBOL vmlinux 0x4f1e04d2 ip_defrag +EXPORT_SYMBOL vmlinux 0x4f2250ba rtc_tm_to_time64 +EXPORT_SYMBOL vmlinux 0x4f391d0e nla_parse +EXPORT_SYMBOL vmlinux 0x4f476e96 init_cdrom_command +EXPORT_SYMBOL vmlinux 0x4f534070 of_clk_get +EXPORT_SYMBOL vmlinux 0x4f68e5c9 do_gettimeofday +EXPORT_SYMBOL vmlinux 0x4f78bece tcf_hash_search +EXPORT_SYMBOL vmlinux 0x4f816e9b snd_pcm_format_big_endian +EXPORT_SYMBOL vmlinux 0x4f89c9de gpmc_cs_free +EXPORT_SYMBOL vmlinux 0x4f91e0b9 nd_device_unregister +EXPORT_SYMBOL vmlinux 0x4faeb9f5 jbd2_journal_check_used_features +EXPORT_SYMBOL vmlinux 0x4fc0bc48 nd_integrity_init +EXPORT_SYMBOL vmlinux 0x4fef75cc omap_dss_find_output_by_port_node +EXPORT_SYMBOL vmlinux 0x50097088 security_tun_dev_free_security +EXPORT_SYMBOL vmlinux 0x500bbe38 delete_from_page_cache +EXPORT_SYMBOL vmlinux 0x5010f08f dma_common_mmap +EXPORT_SYMBOL vmlinux 0x503b29f3 d_obtain_alias +EXPORT_SYMBOL vmlinux 0x503bd137 snd_interval_ranges +EXPORT_SYMBOL vmlinux 0x505406f3 file_ns_capable +EXPORT_SYMBOL vmlinux 0x505c9396 devm_devfreq_remove_device +EXPORT_SYMBOL vmlinux 0x5063df40 __posix_acl_create +EXPORT_SYMBOL vmlinux 0x5079d1d4 trace_print_hex_seq +EXPORT_SYMBOL vmlinux 0x509817cf vprintk_emit +EXPORT_SYMBOL vmlinux 0x50a06ef0 scsi_track_queue_full +EXPORT_SYMBOL vmlinux 0x50b121aa dev_queue_xmit_accel +EXPORT_SYMBOL vmlinux 0x50b66bcb radix_tree_next_chunk +EXPORT_SYMBOL vmlinux 0x50bec84c md_integrity_add_rdev +EXPORT_SYMBOL vmlinux 0x50d5612e dispc_mgr_get_sync_lost_irq +EXPORT_SYMBOL vmlinux 0x50d82ab4 kernel_bind +EXPORT_SYMBOL vmlinux 0x50ded37c __posix_acl_chmod +EXPORT_SYMBOL vmlinux 0x50f3575a snd_power_wait +EXPORT_SYMBOL vmlinux 0x510fc1c2 blkdev_get +EXPORT_SYMBOL vmlinux 0x511746c1 dump_fpu +EXPORT_SYMBOL vmlinux 0x5118c382 secure_dccp_sequence_number +EXPORT_SYMBOL vmlinux 0x511e5633 lock_fb_info +EXPORT_SYMBOL vmlinux 0x516b0be2 neigh_seq_stop +EXPORT_SYMBOL vmlinux 0x518b4526 ata_print_version +EXPORT_SYMBOL vmlinux 0x51c1a538 scsi_register +EXPORT_SYMBOL vmlinux 0x51cd04d9 mmc_remove_host +EXPORT_SYMBOL vmlinux 0x51d559d1 _raw_spin_unlock_irqrestore +EXPORT_SYMBOL vmlinux 0x51e77c97 pfn_valid +EXPORT_SYMBOL vmlinux 0x51ef33b8 kstrndup +EXPORT_SYMBOL vmlinux 0x52026cdf security_sb_parse_opts_str +EXPORT_SYMBOL vmlinux 0x520fdcfd edma_set_dest +EXPORT_SYMBOL vmlinux 0x52131661 user_path_at_empty +EXPORT_SYMBOL vmlinux 0x521b36b5 qdisc_put_rtab +EXPORT_SYMBOL vmlinux 0x52428cc8 parent_mem_cgroup +EXPORT_SYMBOL vmlinux 0x52432ac3 i2c_clients_command +EXPORT_SYMBOL vmlinux 0x524ee52d inet_sk_rx_dst_set +EXPORT_SYMBOL vmlinux 0x525f5f6d nf_log_packet +EXPORT_SYMBOL vmlinux 0x5289d3e9 devm_gen_pool_create +EXPORT_SYMBOL vmlinux 0x528c709d simple_read_from_buffer +EXPORT_SYMBOL vmlinux 0x528d0c14 idr_init +EXPORT_SYMBOL vmlinux 0x529eb8b7 t10_pi_type1_ip +EXPORT_SYMBOL vmlinux 0x52ad3a34 dev_get_stats +EXPORT_SYMBOL vmlinux 0x52af562a __crc32c_le +EXPORT_SYMBOL vmlinux 0x52bb841c atomic_io_modify_relaxed +EXPORT_SYMBOL vmlinux 0x52bf0e8a __skb_get_hash_flowi4 +EXPORT_SYMBOL vmlinux 0x52cfe4fe skb_copy +EXPORT_SYMBOL vmlinux 0x52d4c965 blk_queue_update_dma_alignment +EXPORT_SYMBOL vmlinux 0x52d54c4a filemap_map_pages +EXPORT_SYMBOL vmlinux 0x52e3e4a5 snd_pcm_hw_param_value +EXPORT_SYMBOL vmlinux 0x52e4b2af input_event +EXPORT_SYMBOL vmlinux 0x52fbbecf rtnl_set_sk_err +EXPORT_SYMBOL vmlinux 0x52fe08ca of_get_ddr_timings +EXPORT_SYMBOL vmlinux 0x530b1e98 pm_suspend +EXPORT_SYMBOL vmlinux 0x532e1b4e neigh_lookup_nodev +EXPORT_SYMBOL vmlinux 0x53326531 mempool_alloc_pages +EXPORT_SYMBOL vmlinux 0x533e61ad skb_copy_bits +EXPORT_SYMBOL vmlinux 0x53429f96 key_put +EXPORT_SYMBOL vmlinux 0x53485ff4 __check_sticky +EXPORT_SYMBOL vmlinux 0x534dabe0 blk_mq_add_to_requeue_list +EXPORT_SYMBOL vmlinux 0x535c8308 vme_dma_pattern_attribute +EXPORT_SYMBOL vmlinux 0x53708770 inet_frag_maybe_warn_overflow +EXPORT_SYMBOL vmlinux 0x537341df inode_sub_bytes +EXPORT_SYMBOL vmlinux 0x5390eabf __put_cred +EXPORT_SYMBOL vmlinux 0x539af73c __sg_alloc_table +EXPORT_SYMBOL vmlinux 0x53b9f4d3 blk_queue_make_request +EXPORT_SYMBOL vmlinux 0x53bf4c29 skb_queue_purge +EXPORT_SYMBOL vmlinux 0x53d8224c dev_uc_sync +EXPORT_SYMBOL vmlinux 0x53dab41e skb_split +EXPORT_SYMBOL vmlinux 0x5409775b free_irq_cpu_rmap +EXPORT_SYMBOL vmlinux 0x540fa6fa scsi_verify_blk_ioctl +EXPORT_SYMBOL vmlinux 0x5418ea35 i2c_smbus_write_block_data +EXPORT_SYMBOL vmlinux 0x54278017 ip_setsockopt +EXPORT_SYMBOL vmlinux 0x542e89ca blk_end_request_cur +EXPORT_SYMBOL vmlinux 0x543ef284 seq_hlist_start +EXPORT_SYMBOL vmlinux 0x54453f7d mipi_dsi_driver_unregister +EXPORT_SYMBOL vmlinux 0x546103ea locks_free_lock +EXPORT_SYMBOL vmlinux 0x546d992d dev_get_phys_port_name +EXPORT_SYMBOL vmlinux 0x54703812 tty_wait_until_sent +EXPORT_SYMBOL vmlinux 0x547077ec __wake_up_bit +EXPORT_SYMBOL vmlinux 0x547bbe01 input_release_device +EXPORT_SYMBOL vmlinux 0x547ce898 dispc_read_irqenable +EXPORT_SYMBOL vmlinux 0x548475ef filemap_write_and_wait_range +EXPORT_SYMBOL vmlinux 0x5484b637 xfrm4_protocol_register +EXPORT_SYMBOL vmlinux 0x54a9db5f _kstrtoul +EXPORT_SYMBOL vmlinux 0x54c18fbf default_file_splice_read +EXPORT_SYMBOL vmlinux 0x54c256e0 vme_check_window +EXPORT_SYMBOL vmlinux 0x54e6fcdd net_enable_timestamp +EXPORT_SYMBOL vmlinux 0x54f6830a omapdss_get_default_display_name +EXPORT_SYMBOL vmlinux 0x54f6f756 snd_pcm_lib_read +EXPORT_SYMBOL vmlinux 0x54f7fd2b input_unregister_handler +EXPORT_SYMBOL vmlinux 0x54fbce23 mfd_remove_devices +EXPORT_SYMBOL vmlinux 0x5506c1ab __xfrm_state_delete +EXPORT_SYMBOL vmlinux 0x550ff468 __getblk_gfp +EXPORT_SYMBOL vmlinux 0x551011e6 set_user_nice +EXPORT_SYMBOL vmlinux 0x55119302 twl6040_power +EXPORT_SYMBOL vmlinux 0x55166915 block_page_mkwrite +EXPORT_SYMBOL vmlinux 0x551bd071 __rb_erase_color +EXPORT_SYMBOL vmlinux 0x5532e5ba skb_append_datato_frags +EXPORT_SYMBOL vmlinux 0x55357414 __netlink_kernel_create +EXPORT_SYMBOL vmlinux 0x554083f6 tcp_disconnect +EXPORT_SYMBOL vmlinux 0x5541ea93 on_each_cpu +EXPORT_SYMBOL vmlinux 0x5556bf1d tty_vhangup +EXPORT_SYMBOL vmlinux 0x5557cc71 twl6040_reg_read +EXPORT_SYMBOL vmlinux 0x5567c227 kernel_cpustat +EXPORT_SYMBOL vmlinux 0x556894ce phy_register_fixup +EXPORT_SYMBOL vmlinux 0x556d0083 phy_find_first +EXPORT_SYMBOL vmlinux 0x557adb2a ip_generic_getfrag +EXPORT_SYMBOL vmlinux 0x557bb13d snd_pcm_period_elapsed +EXPORT_SYMBOL vmlinux 0x557c74e6 __devm_request_region +EXPORT_SYMBOL vmlinux 0x55b13085 mmc_power_save_host +EXPORT_SYMBOL vmlinux 0x55b61f80 snd_timer_notify +EXPORT_SYMBOL vmlinux 0x55baf6d0 sk_send_sigurg +EXPORT_SYMBOL vmlinux 0x55c31945 cfb_fillrect +EXPORT_SYMBOL vmlinux 0x55d481c9 hdmi_infoframe_unpack +EXPORT_SYMBOL vmlinux 0x55e0e919 serio_rescan +EXPORT_SYMBOL vmlinux 0x55e2b382 sock_create_kern +EXPORT_SYMBOL vmlinux 0x560147fd edma_unlink +EXPORT_SYMBOL vmlinux 0x56035efc end_page_writeback +EXPORT_SYMBOL vmlinux 0x560b2343 task_tgid_nr_ns +EXPORT_SYMBOL vmlinux 0x562b5554 phy_ethtool_sset +EXPORT_SYMBOL vmlinux 0x5635a60a vmalloc_user +EXPORT_SYMBOL vmlinux 0x563952a3 kblockd_schedule_work +EXPORT_SYMBOL vmlinux 0x565857ae led_set_brightness +EXPORT_SYMBOL vmlinux 0x565f6cae mod_zone_page_state +EXPORT_SYMBOL vmlinux 0x567f591e inode_permission +EXPORT_SYMBOL vmlinux 0x5689afe7 dispc_ovl_enable +EXPORT_SYMBOL vmlinux 0x569185c2 tty_unthrottle +EXPORT_SYMBOL vmlinux 0x56936f52 netif_carrier_off +EXPORT_SYMBOL vmlinux 0x56a984f6 component_match_add +EXPORT_SYMBOL vmlinux 0x56adff0e sk_page_frag_refill +EXPORT_SYMBOL vmlinux 0x56bc285d __scsi_device_lookup_by_target +EXPORT_SYMBOL vmlinux 0x56bc2f15 dispc_ovl_set_channel_out +EXPORT_SYMBOL vmlinux 0x56c8799d scsi_kunmap_atomic_sg +EXPORT_SYMBOL vmlinux 0x56caad6f nf_log_bind_pf +EXPORT_SYMBOL vmlinux 0x56d476cc dquot_get_dqblk +EXPORT_SYMBOL vmlinux 0x56d63c3b proc_set_user +EXPORT_SYMBOL vmlinux 0x56eb0bdf netpoll_cleanup +EXPORT_SYMBOL vmlinux 0x571fd997 end_buffer_write_sync +EXPORT_SYMBOL vmlinux 0x572dcb8d security_sb_set_mnt_opts +EXPORT_SYMBOL vmlinux 0x572e85d4 blk_lookup_devt +EXPORT_SYMBOL vmlinux 0x57359692 qdisc_list_add +EXPORT_SYMBOL vmlinux 0x574c2e74 bitmap_release_region +EXPORT_SYMBOL vmlinux 0x57575f08 dmaengine_put +EXPORT_SYMBOL vmlinux 0x57674fd7 __sw_hweight16 +EXPORT_SYMBOL vmlinux 0x57c03898 skb_queue_head +EXPORT_SYMBOL vmlinux 0x57d77882 snd_pcm_stop +EXPORT_SYMBOL vmlinux 0x57e0c602 sg_miter_stop +EXPORT_SYMBOL vmlinux 0x57e753a3 __seq_open_private +EXPORT_SYMBOL vmlinux 0x580156c1 mmc_detect_card_removed +EXPORT_SYMBOL vmlinux 0x58039cf3 blk_post_runtime_resume +EXPORT_SYMBOL vmlinux 0x5808288c devfreq_add_device +EXPORT_SYMBOL vmlinux 0x581d46d9 blk_requeue_request +EXPORT_SYMBOL vmlinux 0x581f98da zlib_inflate +EXPORT_SYMBOL vmlinux 0x5838f6c9 rtc_valid_tm +EXPORT_SYMBOL vmlinux 0x58516557 omap_set_dma_src_data_pack +EXPORT_SYMBOL vmlinux 0x5857b7cd pgprot_kernel +EXPORT_SYMBOL vmlinux 0x585931bc scsi_dma_unmap +EXPORT_SYMBOL vmlinux 0x586ba49e inet_accept +EXPORT_SYMBOL vmlinux 0x587616f1 vfs_fstatat +EXPORT_SYMBOL vmlinux 0x58761764 input_reset_device +EXPORT_SYMBOL vmlinux 0x58a6d38e jbd2_journal_load +EXPORT_SYMBOL vmlinux 0x58a92072 mmc_gpio_set_cd_isr +EXPORT_SYMBOL vmlinux 0x58b73bc7 match_wildcard +EXPORT_SYMBOL vmlinux 0x58ce1a18 fbcon_set_bitops +EXPORT_SYMBOL vmlinux 0x58d633c7 neigh_proc_dointvec_jiffies +EXPORT_SYMBOL vmlinux 0x590a4e04 iov_iter_npages +EXPORT_SYMBOL vmlinux 0x590ad376 tty_devnum +EXPORT_SYMBOL vmlinux 0x590ed985 mmc_gpiod_request_cd +EXPORT_SYMBOL vmlinux 0x594bf15b ioport_map +EXPORT_SYMBOL vmlinux 0x594e1317 __modsi3 +EXPORT_SYMBOL vmlinux 0x595c201e sock_register +EXPORT_SYMBOL vmlinux 0x596b2ccc mipi_dsi_dcs_set_tear_on +EXPORT_SYMBOL vmlinux 0x596cec24 of_get_parent +EXPORT_SYMBOL vmlinux 0x5971d8f2 make_kuid +EXPORT_SYMBOL vmlinux 0x597492b5 devfreq_suspend_device +EXPORT_SYMBOL vmlinux 0x597f4845 of_get_min_tck +EXPORT_SYMBOL vmlinux 0x598542b2 _raw_spin_lock_irqsave +EXPORT_SYMBOL vmlinux 0x5986666f d_instantiate_unique +EXPORT_SYMBOL vmlinux 0x598cd828 udp_table +EXPORT_SYMBOL vmlinux 0x598e4904 mod_timer_pending +EXPORT_SYMBOL vmlinux 0x598f1c1c tcp_timewait_state_process +EXPORT_SYMBOL vmlinux 0x59aa14cf fence_release +EXPORT_SYMBOL vmlinux 0x59bf6423 sk_free +EXPORT_SYMBOL vmlinux 0x59d29dab v7_flush_kern_dcache_area +EXPORT_SYMBOL vmlinux 0x59d534eb param_set_charp +EXPORT_SYMBOL vmlinux 0x59dd3923 sync_blockdev +EXPORT_SYMBOL vmlinux 0x59e5070d __do_div64 +EXPORT_SYMBOL vmlinux 0x59ef0e85 dmam_free_coherent +EXPORT_SYMBOL vmlinux 0x59fc713e ip_mc_leave_group +EXPORT_SYMBOL vmlinux 0x5a0b73d0 zlib_deflateInit2 +EXPORT_SYMBOL vmlinux 0x5a4fcd3b sock_no_ioctl +EXPORT_SYMBOL vmlinux 0x5a958450 jbd2_journal_release_jbd_inode +EXPORT_SYMBOL vmlinux 0x5a9776ff flock_lock_inode_wait +EXPORT_SYMBOL vmlinux 0x5aa9ab19 __generic_file_write_iter +EXPORT_SYMBOL vmlinux 0x5ae5be44 lg_lock_init +EXPORT_SYMBOL vmlinux 0x5aff4177 vme_lm_get +EXPORT_SYMBOL vmlinux 0x5b19634d div_s64_rem +EXPORT_SYMBOL vmlinux 0x5b1e0c9e buffer_check_dirty_writeback +EXPORT_SYMBOL vmlinux 0x5b65e849 sock_no_connect +EXPORT_SYMBOL vmlinux 0x5b6df422 xfrm4_prepare_output +EXPORT_SYMBOL vmlinux 0x5b99edf5 single_release +EXPORT_SYMBOL vmlinux 0x5ba09dae bioset_integrity_free +EXPORT_SYMBOL vmlinux 0x5bf31600 param_ops_bint +EXPORT_SYMBOL vmlinux 0x5bfc30b2 ping_prot +EXPORT_SYMBOL vmlinux 0x5c15b13d skb_tx_error +EXPORT_SYMBOL vmlinux 0x5c2c6b74 blk_mq_alloc_request +EXPORT_SYMBOL vmlinux 0x5c313a23 mmc_retune_timer_stop +EXPORT_SYMBOL vmlinux 0x5c3a7e1c phy_driver_unregister +EXPORT_SYMBOL vmlinux 0x5c4483fd shdma_cleanup +EXPORT_SYMBOL vmlinux 0x5c5db218 lro_receive_skb +EXPORT_SYMBOL vmlinux 0x5c7043c8 devm_gpiod_put_array +EXPORT_SYMBOL vmlinux 0x5c9284a0 processor_id +EXPORT_SYMBOL vmlinux 0x5c92a9be netdev_lower_get_first_private_rcu +EXPORT_SYMBOL vmlinux 0x5caab79a netdev_boot_setup_check +EXPORT_SYMBOL vmlinux 0x5cccdecd blkdev_issue_discard +EXPORT_SYMBOL vmlinux 0x5ce85848 textsearch_find_continuous +EXPORT_SYMBOL vmlinux 0x5cf53ce2 input_free_minor +EXPORT_SYMBOL vmlinux 0x5d00d029 clocksource_change_rating +EXPORT_SYMBOL vmlinux 0x5d116bd6 path_is_under +EXPORT_SYMBOL vmlinux 0x5d284629 dev_getfirstbyhwtype +EXPORT_SYMBOL vmlinux 0x5d4aa589 free_netdev +EXPORT_SYMBOL vmlinux 0x5d550c4d scsi_sd_probe_domain +EXPORT_SYMBOL vmlinux 0x5d6763a7 nand_correct_data +EXPORT_SYMBOL vmlinux 0x5d67a98f read_cache_pages +EXPORT_SYMBOL vmlinux 0x5d77b8d1 __set_page_dirty_buffers +EXPORT_SYMBOL vmlinux 0x5da80495 security_task_getsecid +EXPORT_SYMBOL vmlinux 0x5da870cf __devm_gpiod_get_index_optional +EXPORT_SYMBOL vmlinux 0x5dc3a836 pci_enable_msix_range +EXPORT_SYMBOL vmlinux 0x5dcdbcda vga_client_register +EXPORT_SYMBOL vmlinux 0x5dcf6341 outer_cache +EXPORT_SYMBOL vmlinux 0x5e05959e rtmsg_ifinfo +EXPORT_SYMBOL vmlinux 0x5e0f2348 nvdimm_revalidate_disk +EXPORT_SYMBOL vmlinux 0x5e1cf78e simple_transaction_release +EXPORT_SYMBOL vmlinux 0x5e1dc692 ps2_handle_ack +EXPORT_SYMBOL vmlinux 0x5e2c3d42 splice_direct_to_actor +EXPORT_SYMBOL vmlinux 0x5e2f4f78 inet6_bind +EXPORT_SYMBOL vmlinux 0x5e2f9d02 dentry_update_name_case +EXPORT_SYMBOL vmlinux 0x5e48c463 xfrm6_protocol_deregister +EXPORT_SYMBOL vmlinux 0x5e5c337a ip_mc_check_igmp +EXPORT_SYMBOL vmlinux 0x5e64f5c8 release_sock +EXPORT_SYMBOL vmlinux 0x5e7f4920 snd_pcm_format_set_silence +EXPORT_SYMBOL vmlinux 0x5e866d85 prandom_bytes +EXPORT_SYMBOL vmlinux 0x5e88f251 key_instantiate_and_link +EXPORT_SYMBOL vmlinux 0x5e93d64b inet_del_protocol +EXPORT_SYMBOL vmlinux 0x5e95b1cd current_umask +EXPORT_SYMBOL vmlinux 0x5e98c6da dcbnl_ieee_notify +EXPORT_SYMBOL vmlinux 0x5e992e2f sock_queue_err_skb +EXPORT_SYMBOL vmlinux 0x5eb24829 dm_shift_arg +EXPORT_SYMBOL vmlinux 0x5ed040b0 pm_set_vt_switch +EXPORT_SYMBOL vmlinux 0x5ed339ba bdi_destroy +EXPORT_SYMBOL vmlinux 0x5ed59c53 fasync_helper +EXPORT_SYMBOL vmlinux 0x5f005368 kstrtou8 +EXPORT_SYMBOL vmlinux 0x5f08e466 scsi_device_lookup +EXPORT_SYMBOL vmlinux 0x5f098b2a in6addr_interfacelocal_allrouters +EXPORT_SYMBOL vmlinux 0x5f0ba06f qdisc_warn_nonwc +EXPORT_SYMBOL vmlinux 0x5f0cf7d8 iov_iter_advance +EXPORT_SYMBOL vmlinux 0x5f104726 mdio_bus_type +EXPORT_SYMBOL vmlinux 0x5f1d3a3b mipi_dsi_dcs_write_buffer +EXPORT_SYMBOL vmlinux 0x5f2032ae vme_register_driver +EXPORT_SYMBOL vmlinux 0x5f27323c _raw_write_trylock +EXPORT_SYMBOL vmlinux 0x5f754e5a memset +EXPORT_SYMBOL vmlinux 0x5fc06847 crypto_sha1_update +EXPORT_SYMBOL vmlinux 0x5fd268cb radix_tree_gang_lookup +EXPORT_SYMBOL vmlinux 0x5fda0227 vfs_stat +EXPORT_SYMBOL vmlinux 0x5fda81c8 blk_mq_abort_requeue_list +EXPORT_SYMBOL vmlinux 0x5fe5589f register_shrinker +EXPORT_SYMBOL vmlinux 0x5ff11cc3 pcibios_min_io +EXPORT_SYMBOL vmlinux 0x60055baa dispc_mgr_get_vsync_irq +EXPORT_SYMBOL vmlinux 0x600683d3 do_unblank_screen +EXPORT_SYMBOL vmlinux 0x601f665f dm_io_client_create +EXPORT_SYMBOL vmlinux 0x602c96f0 copy_to_user_fromio +EXPORT_SYMBOL vmlinux 0x60352082 register_inet6addr_notifier +EXPORT_SYMBOL vmlinux 0x603b9f2b mpage_readpage +EXPORT_SYMBOL vmlinux 0x60541702 edma_alloc_slot +EXPORT_SYMBOL vmlinux 0x606d0b09 secure_tcpv6_sequence_number +EXPORT_SYMBOL vmlinux 0x607b7159 generic_setlease +EXPORT_SYMBOL vmlinux 0x6091644e flow_keys_dissector +EXPORT_SYMBOL vmlinux 0x609f1c7e synchronize_net +EXPORT_SYMBOL vmlinux 0x60a32ea9 pm_power_off +EXPORT_SYMBOL vmlinux 0x60a5306f of_graph_get_next_endpoint +EXPORT_SYMBOL vmlinux 0x60b86f61 sg_pcopy_to_buffer +EXPORT_SYMBOL vmlinux 0x60ba55bb __mmc_claim_host +EXPORT_SYMBOL vmlinux 0x60bcfc6d snd_pcm_hw_rule_noresample +EXPORT_SYMBOL vmlinux 0x60d9243b tcp_rcv_established +EXPORT_SYMBOL vmlinux 0x60df1e3b posix_acl_equiv_mode +EXPORT_SYMBOL vmlinux 0x60eb5cf5 ppp_unregister_channel +EXPORT_SYMBOL vmlinux 0x6128b5fc __printk_ratelimit +EXPORT_SYMBOL vmlinux 0x61450968 snd_jack_add_new_kctl +EXPORT_SYMBOL vmlinux 0x614a3546 call_netdevice_notifiers +EXPORT_SYMBOL vmlinux 0x61529e1e blk_queue_find_tag +EXPORT_SYMBOL vmlinux 0x6162a8a8 tcp_md5_hash_skb_data +EXPORT_SYMBOL vmlinux 0x61691a22 key_reject_and_link +EXPORT_SYMBOL vmlinux 0x6179ba9f default_llseek +EXPORT_SYMBOL vmlinux 0x617a218d __cond_resched_lock +EXPORT_SYMBOL vmlinux 0x618d2902 get_cached_acl_rcu +EXPORT_SYMBOL vmlinux 0x619228b0 __destroy_inode +EXPORT_SYMBOL vmlinux 0x619b9b02 jbd2_journal_force_commit_nested +EXPORT_SYMBOL vmlinux 0x619bcbb1 fb_validate_mode +EXPORT_SYMBOL vmlinux 0x61b3560c cmdline_parts_set +EXPORT_SYMBOL vmlinux 0x61b4d1f8 scsi_host_put +EXPORT_SYMBOL vmlinux 0x61b7b126 simple_strtoull +EXPORT_SYMBOL vmlinux 0x61c998c4 __bio_clone_fast +EXPORT_SYMBOL vmlinux 0x61cb4c38 snd_mixer_oss_notify_callback +EXPORT_SYMBOL vmlinux 0x61e1e3e5 htc_egpio_get_wakeup_irq +EXPORT_SYMBOL vmlinux 0x61fd6c3f scsi_add_host_with_dma +EXPORT_SYMBOL vmlinux 0x6206a515 jbd2_journal_ack_err +EXPORT_SYMBOL vmlinux 0x6214aef2 cpufreq_unregister_notifier +EXPORT_SYMBOL vmlinux 0x6220b4a2 crc32_le +EXPORT_SYMBOL vmlinux 0x6225637e md5_transform +EXPORT_SYMBOL vmlinux 0x6228c21f smp_call_function_single +EXPORT_SYMBOL vmlinux 0x62296be1 qcom_scm_get_version +EXPORT_SYMBOL vmlinux 0x622e685c security_inode_readlink +EXPORT_SYMBOL vmlinux 0x623c2fab simple_dname +EXPORT_SYMBOL vmlinux 0x623e7a14 in_dev_finish_destroy +EXPORT_SYMBOL vmlinux 0x6246b05c netdev_master_upper_dev_get +EXPORT_SYMBOL vmlinux 0x625060e5 jbd2_journal_blocks_per_page +EXPORT_SYMBOL vmlinux 0x62737e1d sock_unregister +EXPORT_SYMBOL vmlinux 0x62827bec security_secctx_to_secid +EXPORT_SYMBOL vmlinux 0x62849ac7 dev_valid_name +EXPORT_SYMBOL vmlinux 0x62d353b0 of_dev_get +EXPORT_SYMBOL vmlinux 0x62e059a9 netlink_ack +EXPORT_SYMBOL vmlinux 0x62e173bb sock_wfree +EXPORT_SYMBOL vmlinux 0x62e4cd02 block_is_partially_uptodate +EXPORT_SYMBOL vmlinux 0x62e58de4 devm_gpiod_get_array_optional +EXPORT_SYMBOL vmlinux 0x6300c557 sdev_disable_disk_events +EXPORT_SYMBOL vmlinux 0x63040382 framebuffer_release +EXPORT_SYMBOL vmlinux 0x63187451 pcie_aspm_support_enabled +EXPORT_SYMBOL vmlinux 0x633485ab netdev_class_remove_file_ns +EXPORT_SYMBOL vmlinux 0x6340ee7e set_create_files_as +EXPORT_SYMBOL vmlinux 0x635082d3 mipi_dsi_generic_write +EXPORT_SYMBOL vmlinux 0x636b3461 omap_dss_get_num_overlays +EXPORT_SYMBOL vmlinux 0x638cbf60 down_read_trylock +EXPORT_SYMBOL vmlinux 0x639bf278 thaw_bdev +EXPORT_SYMBOL vmlinux 0x63a7c28c bitmap_find_free_region +EXPORT_SYMBOL vmlinux 0x63c4d61f __bitmap_weight +EXPORT_SYMBOL vmlinux 0x63dbf956 ilookup +EXPORT_SYMBOL vmlinux 0x63dd0c39 blk_queue_segment_boundary +EXPORT_SYMBOL vmlinux 0x63dde974 blk_integrity_compare +EXPORT_SYMBOL vmlinux 0x63de22de __mutex_init +EXPORT_SYMBOL vmlinux 0x63eb9355 panic_blink +EXPORT_SYMBOL vmlinux 0x63fc232f strlen_user +EXPORT_SYMBOL vmlinux 0x63ff6694 d_genocide +EXPORT_SYMBOL vmlinux 0x6403e338 tcp_memory_pressure +EXPORT_SYMBOL vmlinux 0x64127b67 bitmap_find_next_zero_area_off +EXPORT_SYMBOL vmlinux 0x64464b00 truncate_pagecache +EXPORT_SYMBOL vmlinux 0x644ce825 devm_gpiod_put +EXPORT_SYMBOL vmlinux 0x6455b25f invalidate_partition +EXPORT_SYMBOL vmlinux 0x645cfe9f inet_csk_accept +EXPORT_SYMBOL vmlinux 0x64999478 congestion_wait +EXPORT_SYMBOL vmlinux 0x64a22ff0 dispc_mgr_set_lcd_config +EXPORT_SYMBOL vmlinux 0x64e391fb iw_handler_set_thrspy +EXPORT_SYMBOL vmlinux 0x64f9913a d_add_ci +EXPORT_SYMBOL vmlinux 0x64fdedd8 of_phy_register_fixed_link +EXPORT_SYMBOL vmlinux 0x650f8603 snd_pcm_format_silence_64 +EXPORT_SYMBOL vmlinux 0x6513131d elm_config +EXPORT_SYMBOL vmlinux 0x6513a3fa fb_get_color_depth +EXPORT_SYMBOL vmlinux 0x651a4139 test_taint +EXPORT_SYMBOL vmlinux 0x651ef847 pci_add_new_bus +EXPORT_SYMBOL vmlinux 0x651fde62 get_thermal_instance +EXPORT_SYMBOL vmlinux 0x652d9aa9 proto_unregister +EXPORT_SYMBOL vmlinux 0x653cbee2 unregister_nls +EXPORT_SYMBOL vmlinux 0x65408378 zlib_inflate_blob +EXPORT_SYMBOL vmlinux 0x65466939 proc_doulongvec_ms_jiffies_minmax +EXPORT_SYMBOL vmlinux 0x6547e7a8 phy_attach +EXPORT_SYMBOL vmlinux 0x654d2491 jbd2_journal_update_sb_errno +EXPORT_SYMBOL vmlinux 0x654f01ff cfb_imageblit +EXPORT_SYMBOL vmlinux 0x6552ea16 scsi_dma_map +EXPORT_SYMBOL vmlinux 0x65589afd i2c_add_adapter +EXPORT_SYMBOL vmlinux 0x655b3173 padata_do_serial +EXPORT_SYMBOL vmlinux 0x6565d33f scsi_kmap_atomic_sg +EXPORT_SYMBOL vmlinux 0x6566c951 user_path_create +EXPORT_SYMBOL vmlinux 0x6576c9ec __pskb_pull_tail +EXPORT_SYMBOL vmlinux 0x65865c1e __dev_kfree_skb_irq +EXPORT_SYMBOL vmlinux 0x65a6333b input_open_device +EXPORT_SYMBOL vmlinux 0x65b426f2 mark_page_accessed +EXPORT_SYMBOL vmlinux 0x65d69742 blk_mq_stop_hw_queues +EXPORT_SYMBOL vmlinux 0x65d9919d netif_tx_stop_all_queues +EXPORT_SYMBOL vmlinux 0x65d9e877 cpufreq_register_notifier +EXPORT_SYMBOL vmlinux 0x65dccf13 xz_dec_end +EXPORT_SYMBOL vmlinux 0x65e395a8 vme_unregister_driver +EXPORT_SYMBOL vmlinux 0x65e44a3d netif_device_attach +EXPORT_SYMBOL vmlinux 0x65f3ad9a fb_videomode_to_var +EXPORT_SYMBOL vmlinux 0x660bc3af __sync_dirty_buffer +EXPORT_SYMBOL vmlinux 0x6612a0ce udp_proc_unregister +EXPORT_SYMBOL vmlinux 0x661868e0 find_get_entry +EXPORT_SYMBOL vmlinux 0x662a79e8 snd_pcm_mmap_data +EXPORT_SYMBOL vmlinux 0x6653c30e __skb_tx_hash +EXPORT_SYMBOL vmlinux 0x665ddc2f gnet_stats_copy_queue +EXPORT_SYMBOL vmlinux 0x668139aa generic_key_instantiate +EXPORT_SYMBOL vmlinux 0x669c4c7c vfs_writev +EXPORT_SYMBOL vmlinux 0x66cfb06a blk_register_region +EXPORT_SYMBOL vmlinux 0x66e8678f read_code +EXPORT_SYMBOL vmlinux 0x671867c4 ipv6_chk_addr_and_flags +EXPORT_SYMBOL vmlinux 0x672d0011 param_set_ullong +EXPORT_SYMBOL vmlinux 0x673da061 freeze_super +EXPORT_SYMBOL vmlinux 0x6762e468 input_mt_report_finger_count +EXPORT_SYMBOL vmlinux 0x676bbc0f _set_bit +EXPORT_SYMBOL vmlinux 0x67733cf4 mb_cache_create +EXPORT_SYMBOL vmlinux 0x6791bfd9 inet6_getname +EXPORT_SYMBOL vmlinux 0x679ff788 pci_enable_device +EXPORT_SYMBOL vmlinux 0x67b27ec1 tty_std_termios +EXPORT_SYMBOL vmlinux 0x67b78eb3 seq_hlist_next_rcu +EXPORT_SYMBOL vmlinux 0x67daf0ad keyring_clear +EXPORT_SYMBOL vmlinux 0x6808b453 __unregister_cpu_notifier +EXPORT_SYMBOL vmlinux 0x680d1920 register_gifconf +EXPORT_SYMBOL vmlinux 0x681c0752 seq_path +EXPORT_SYMBOL vmlinux 0x686ba2ff padata_set_cpumasks +EXPORT_SYMBOL vmlinux 0x687b6a16 kdbgetsymval +EXPORT_SYMBOL vmlinux 0x687fad29 vme_dma_list_exec +EXPORT_SYMBOL vmlinux 0x68869bae panic_notifier_list +EXPORT_SYMBOL vmlinux 0x6889967f scsi_print_result +EXPORT_SYMBOL vmlinux 0x688ddf46 dquot_get_state +EXPORT_SYMBOL vmlinux 0x689be111 mipi_dsi_dcs_soft_reset +EXPORT_SYMBOL vmlinux 0x68a24153 snd_pcm_format_physical_width +EXPORT_SYMBOL vmlinux 0x68a7aa0b simple_link +EXPORT_SYMBOL vmlinux 0x68abb700 kobject_put +EXPORT_SYMBOL vmlinux 0x68b83ac6 posix_acl_alloc +EXPORT_SYMBOL vmlinux 0x68c0b56b phy_disconnect +EXPORT_SYMBOL vmlinux 0x68c39d47 xfrm_state_register_afinfo +EXPORT_SYMBOL vmlinux 0x68c51f81 submit_bio +EXPORT_SYMBOL vmlinux 0x68cb758a snd_ctl_unregister_ioctl +EXPORT_SYMBOL vmlinux 0x68fb581a icst307_idx2s +EXPORT_SYMBOL vmlinux 0x6915eb38 down_interruptible +EXPORT_SYMBOL vmlinux 0x6921c016 i2c_smbus_read_byte_data +EXPORT_SYMBOL vmlinux 0x693383d5 input_alloc_absinfo +EXPORT_SYMBOL vmlinux 0x693a5ed0 mdiobus_register +EXPORT_SYMBOL vmlinux 0x696f3a66 tcp_child_process +EXPORT_SYMBOL vmlinux 0x696f59f0 d_instantiate_no_diralias +EXPORT_SYMBOL vmlinux 0x6971447a rtc_month_days +EXPORT_SYMBOL vmlinux 0x697255bc tty_unregister_device +EXPORT_SYMBOL vmlinux 0x6973b4ae get_mm_exe_file +EXPORT_SYMBOL vmlinux 0x69742c0e nd_region_release_lane +EXPORT_SYMBOL vmlinux 0x69862f97 dquot_quotactl_sysfile_ops +EXPORT_SYMBOL vmlinux 0x69885364 skb_realloc_headroom +EXPORT_SYMBOL vmlinux 0x69a358a6 iomem_resource +EXPORT_SYMBOL vmlinux 0x69a48699 skb_free_datagram +EXPORT_SYMBOL vmlinux 0x69ad2f20 kstrtouint +EXPORT_SYMBOL vmlinux 0x69b6f8d9 omap_set_dma_transfer_params +EXPORT_SYMBOL vmlinux 0x69c7159d rwsem_down_read_failed +EXPORT_SYMBOL vmlinux 0x6a00b5b0 dqget +EXPORT_SYMBOL vmlinux 0x6a037cf1 mempool_kfree +EXPORT_SYMBOL vmlinux 0x6a08a620 vmalloc_to_page +EXPORT_SYMBOL vmlinux 0x6a0b6a55 pci_bus_get +EXPORT_SYMBOL vmlinux 0x6a0fd2ee ata_dev_printk +EXPORT_SYMBOL vmlinux 0x6a17fd71 i2c_del_adapter +EXPORT_SYMBOL vmlinux 0x6a37b70c sound_class +EXPORT_SYMBOL vmlinux 0x6a399869 input_register_handle +EXPORT_SYMBOL vmlinux 0x6a39eab9 __remove_inode_hash +EXPORT_SYMBOL vmlinux 0x6a5ecb18 unregister_module_notifier +EXPORT_SYMBOL vmlinux 0x6a6cad21 dm_put_device +EXPORT_SYMBOL vmlinux 0x6a76f3ac blk_iopoll_enable +EXPORT_SYMBOL vmlinux 0x6a7b61bf swiotlb_map_sg +EXPORT_SYMBOL vmlinux 0x6a83285a mmc_release_host +EXPORT_SYMBOL vmlinux 0x6a9e09a2 ilookup5_nowait +EXPORT_SYMBOL vmlinux 0x6aa17eac inet6_add_protocol +EXPORT_SYMBOL vmlinux 0x6aad8bf8 set_cached_acl +EXPORT_SYMBOL vmlinux 0x6acafd5b cookie_timestamp_decode +EXPORT_SYMBOL vmlinux 0x6aeefac4 zlib_deflateReset +EXPORT_SYMBOL vmlinux 0x6af026cf get_task_io_context +EXPORT_SYMBOL vmlinux 0x6b06fdce delayed_work_timer_fn +EXPORT_SYMBOL vmlinux 0x6b1b67d3 __bdevname +EXPORT_SYMBOL vmlinux 0x6b1eb216 mipi_dsi_dcs_set_pixel_format +EXPORT_SYMBOL vmlinux 0x6b2653b7 fsnotify_init_mark +EXPORT_SYMBOL vmlinux 0x6b2dc060 dump_stack +EXPORT_SYMBOL vmlinux 0x6b45abd0 simple_readpage +EXPORT_SYMBOL vmlinux 0x6b4f309d netdev_notify_peers +EXPORT_SYMBOL vmlinux 0x6b72f477 mdiobus_free +EXPORT_SYMBOL vmlinux 0x6b8b73b9 dmam_alloc_noncoherent +EXPORT_SYMBOL vmlinux 0x6b90af15 ndo_dflt_fdb_del +EXPORT_SYMBOL vmlinux 0x6b950f55 cookie_ecn_ok +EXPORT_SYMBOL vmlinux 0x6ba3f975 vme_new_dma_list +EXPORT_SYMBOL vmlinux 0x6bc3fbc0 __unregister_chrdev +EXPORT_SYMBOL vmlinux 0x6bcca1e8 netdev_all_upper_get_next_dev_rcu +EXPORT_SYMBOL vmlinux 0x6bdcfd99 qdisc_class_hash_remove +EXPORT_SYMBOL vmlinux 0x6beca34a neigh_table_clear +EXPORT_SYMBOL vmlinux 0x6beeb6ba vlan_vids_del_by_dev +EXPORT_SYMBOL vmlinux 0x6bfc7b4b iov_iter_init +EXPORT_SYMBOL vmlinux 0x6c09c2a4 del_timer +EXPORT_SYMBOL vmlinux 0x6c179f1e phy_resume +EXPORT_SYMBOL vmlinux 0x6c1ce5ce strcspn +EXPORT_SYMBOL vmlinux 0x6c1f9cfd blk_queue_stack_limits +EXPORT_SYMBOL vmlinux 0x6c51a836 sysctl_tcp_notsent_lowat +EXPORT_SYMBOL vmlinux 0x6c5af8c4 snd_info_register +EXPORT_SYMBOL vmlinux 0x6c61ce70 num_registered_fb +EXPORT_SYMBOL vmlinux 0x6c6a1c39 scsi_change_queue_depth +EXPORT_SYMBOL vmlinux 0x6c6cdd4d wait_for_completion_interruptible_timeout +EXPORT_SYMBOL vmlinux 0x6c702af7 sysctl_udp_rmem_min +EXPORT_SYMBOL vmlinux 0x6c8e685f max8998_update_reg +EXPORT_SYMBOL vmlinux 0x6c924b4c nf_getsockopt +EXPORT_SYMBOL vmlinux 0x6c946faf snd_pcm_open_substream +EXPORT_SYMBOL vmlinux 0x6cd4c9fc pci_release_selected_regions +EXPORT_SYMBOL vmlinux 0x6cdc5c6b nla_strlcpy +EXPORT_SYMBOL vmlinux 0x6ce3edad kill_bdev +EXPORT_SYMBOL vmlinux 0x6d0f1f89 dm_table_get_mode +EXPORT_SYMBOL vmlinux 0x6d17ffe8 bio_integrity_clone +EXPORT_SYMBOL vmlinux 0x6d1a2271 skb_try_coalesce +EXPORT_SYMBOL vmlinux 0x6d1c44dd lockref_get_not_zero +EXPORT_SYMBOL vmlinux 0x6d22af1a flow_cache_init +EXPORT_SYMBOL vmlinux 0x6d294e43 clock_t_to_jiffies +EXPORT_SYMBOL vmlinux 0x6d340f64 tty_termios_input_baud_rate +EXPORT_SYMBOL vmlinux 0x6d4b3992 nobh_write_begin +EXPORT_SYMBOL vmlinux 0x6d662533 _find_first_bit_le +EXPORT_SYMBOL vmlinux 0x6d6d1234 __tracepoint_fence_annotate_wait_on +EXPORT_SYMBOL vmlinux 0x6d756086 set_groups +EXPORT_SYMBOL vmlinux 0x6d875a78 get_user_pages +EXPORT_SYMBOL vmlinux 0x6d9299bf alloc_buffer_head +EXPORT_SYMBOL vmlinux 0x6daa957c bio_clone_bioset +EXPORT_SYMBOL vmlinux 0x6dab96fb amba_find_device +EXPORT_SYMBOL vmlinux 0x6dd8a504 keyring_search +EXPORT_SYMBOL vmlinux 0x6dde3203 xfrm_dst_ifdown +EXPORT_SYMBOL vmlinux 0x6def2db2 half_md4_transform +EXPORT_SYMBOL vmlinux 0x6df1aaf1 kernel_sigaction +EXPORT_SYMBOL vmlinux 0x6e0b855c phy_start_aneg +EXPORT_SYMBOL vmlinux 0x6e1e491d nf_afinfo +EXPORT_SYMBOL vmlinux 0x6e6514ed radix_tree_insert +EXPORT_SYMBOL vmlinux 0x6e720ff2 rtnl_unlock +EXPORT_SYMBOL vmlinux 0x6e9dd606 __symbol_put +EXPORT_SYMBOL vmlinux 0x6ea0dc1c security_inode_setsecctx +EXPORT_SYMBOL vmlinux 0x6eaa4678 tty_chars_in_buffer +EXPORT_SYMBOL vmlinux 0x6eaa8003 pci_iounmap +EXPORT_SYMBOL vmlinux 0x6ec9ccdb _raw_write_lock_bh +EXPORT_SYMBOL vmlinux 0x6ecc62d6 ip_getsockopt +EXPORT_SYMBOL vmlinux 0x6ecffd49 qdisc_watchdog_cancel +EXPORT_SYMBOL vmlinux 0x6ee58a77 textsearch_prepare +EXPORT_SYMBOL vmlinux 0x6ef8fcd8 snd_pcm_format_linear +EXPORT_SYMBOL vmlinux 0x6efa8435 address_space_init_once +EXPORT_SYMBOL vmlinux 0x6f103824 input_close_device +EXPORT_SYMBOL vmlinux 0x6f20960a full_name_hash +EXPORT_SYMBOL vmlinux 0x6f2737d0 simple_statfs +EXPORT_SYMBOL vmlinux 0x6f3ab281 sock_alloc_send_skb +EXPORT_SYMBOL vmlinux 0x6f3cb6f9 phy_attach_direct +EXPORT_SYMBOL vmlinux 0x6f40787b of_node_get +EXPORT_SYMBOL vmlinux 0x6f5a76bc shrink_dcache_parent +EXPORT_SYMBOL vmlinux 0x6f7ddb26 max8998_bulk_read +EXPORT_SYMBOL vmlinux 0x6f82858d to_nd_btt +EXPORT_SYMBOL vmlinux 0x6f88effb hdmi_avi_infoframe_init +EXPORT_SYMBOL vmlinux 0x6fa4e6da pci_request_selected_regions_exclusive +EXPORT_SYMBOL vmlinux 0x6fa5f748 bio_reset +EXPORT_SYMBOL vmlinux 0x6fbf07cd __free_page_frag +EXPORT_SYMBOL vmlinux 0x6fcb87a1 touch_softlockup_watchdog +EXPORT_SYMBOL vmlinux 0x6fd9284f reservation_object_reserve_shared +EXPORT_SYMBOL vmlinux 0x6fd92952 do_map_probe +EXPORT_SYMBOL vmlinux 0x6fe93154 gnet_stats_start_copy +EXPORT_SYMBOL vmlinux 0x7001df38 pm8606_osc_disable +EXPORT_SYMBOL vmlinux 0x70097aa0 nand_bch_free +EXPORT_SYMBOL vmlinux 0x700bd9a0 __tracepoint_kmalloc +EXPORT_SYMBOL vmlinux 0x701a5d6a simple_nosetlease +EXPORT_SYMBOL vmlinux 0x703487f7 dev_warn +EXPORT_SYMBOL vmlinux 0x7038db6c of_get_next_child +EXPORT_SYMBOL vmlinux 0x70406174 mmc_alloc_host +EXPORT_SYMBOL vmlinux 0x70523a7a __cond_resched_softirq +EXPORT_SYMBOL vmlinux 0x7062b4cd cmdline_parts_free +EXPORT_SYMBOL vmlinux 0x70648a9f snd_card_new +EXPORT_SYMBOL vmlinux 0x706d051c del_timer_sync +EXPORT_SYMBOL vmlinux 0x707f43f6 __ctzdi2 +EXPORT_SYMBOL vmlinux 0x70868e2a ioctl_by_bdev +EXPORT_SYMBOL vmlinux 0x7086a745 console_start +EXPORT_SYMBOL vmlinux 0x70917e19 mb_cache_entry_release +EXPORT_SYMBOL vmlinux 0x709f262d block_write_end +EXPORT_SYMBOL vmlinux 0x70a0fe24 of_clk_get_by_name +EXPORT_SYMBOL vmlinux 0x70e39dae dss_uninstall_mgr_ops +EXPORT_SYMBOL vmlinux 0x70f4f022 kfree_put_link +EXPORT_SYMBOL vmlinux 0x70f96f88 glob_match +EXPORT_SYMBOL vmlinux 0x70fd9311 mount_pseudo +EXPORT_SYMBOL vmlinux 0x710089a1 sk_ns_capable +EXPORT_SYMBOL vmlinux 0x7107ce0c sock_edemux +EXPORT_SYMBOL vmlinux 0x7119db7f omap_dss_pal_timings +EXPORT_SYMBOL vmlinux 0x71264dd5 kernel_sock_ioctl +EXPORT_SYMBOL vmlinux 0x7126e148 __wait_on_bit_lock +EXPORT_SYMBOL vmlinux 0x7129e5f8 hex_asc +EXPORT_SYMBOL vmlinux 0x712ed37b radix_tree_gang_lookup_tag_slot +EXPORT_SYMBOL vmlinux 0x7142c63c edma_free_slot +EXPORT_SYMBOL vmlinux 0x714859b3 truncate_setsize +EXPORT_SYMBOL vmlinux 0x714c11b2 pci_msi_vec_count +EXPORT_SYMBOL vmlinux 0x7169102e omap_dss_ntsc_timings +EXPORT_SYMBOL vmlinux 0x7171121c overflowgid +EXPORT_SYMBOL vmlinux 0x719d7a90 kmem_cache_size +EXPORT_SYMBOL vmlinux 0x71a50dbc register_blkdev +EXPORT_SYMBOL vmlinux 0x71a5c40e security_inode_init_security +EXPORT_SYMBOL vmlinux 0x71a672ef dmam_pool_destroy +EXPORT_SYMBOL vmlinux 0x71b914d7 __ip_dev_find +EXPORT_SYMBOL vmlinux 0x71c90087 memcmp +EXPORT_SYMBOL vmlinux 0x71d4bfd3 lro_flush_all +EXPORT_SYMBOL vmlinux 0x71df455c __dynamic_dev_dbg +EXPORT_SYMBOL vmlinux 0x71ecf852 notify_change +EXPORT_SYMBOL vmlinux 0x71f65175 hdmi_spd_infoframe_pack +EXPORT_SYMBOL vmlinux 0x71fe8687 key_validate +EXPORT_SYMBOL vmlinux 0x720f74d1 blk_queue_merge_bvec +EXPORT_SYMBOL vmlinux 0x722b004f nand_scan_tail +EXPORT_SYMBOL vmlinux 0x72350130 ___ratelimit +EXPORT_SYMBOL vmlinux 0x725e82cb of_find_device_by_node +EXPORT_SYMBOL vmlinux 0x727577be vme_bus_num +EXPORT_SYMBOL vmlinux 0x7295359e __skb_checksum +EXPORT_SYMBOL vmlinux 0x7296d8a2 memcg_kmem_enabled_key +EXPORT_SYMBOL vmlinux 0x72b46a8c kobject_get +EXPORT_SYMBOL vmlinux 0x72bc8790 dquot_initialize +EXPORT_SYMBOL vmlinux 0x72bf0537 try_to_writeback_inodes_sb_nr +EXPORT_SYMBOL vmlinux 0x72c6f079 pci_reenable_device +EXPORT_SYMBOL vmlinux 0x72ce2723 generic_read_dir +EXPORT_SYMBOL vmlinux 0x72d58de9 kstrtou8_from_user +EXPORT_SYMBOL vmlinux 0x72de65cb tcf_em_register +EXPORT_SYMBOL vmlinux 0x72ea7b2d scsi_device_type +EXPORT_SYMBOL vmlinux 0x72faa356 of_parse_phandle +EXPORT_SYMBOL vmlinux 0x7315a4e9 twl6030_mmc_card_detect_config +EXPORT_SYMBOL vmlinux 0x73270890 kernel_sendmsg +EXPORT_SYMBOL vmlinux 0x733c3b54 kasprintf +EXPORT_SYMBOL vmlinux 0x733fa43f blk_queue_max_segments +EXPORT_SYMBOL vmlinux 0x73413820 inet_sendmsg +EXPORT_SYMBOL vmlinux 0x73496220 end_buffer_async_write +EXPORT_SYMBOL vmlinux 0x738a0ca5 mmc_can_sanitize +EXPORT_SYMBOL vmlinux 0x73b73cd7 simple_write_end +EXPORT_SYMBOL vmlinux 0x73b7fcf9 mipi_dsi_driver_register_full +EXPORT_SYMBOL vmlinux 0x73dc74bc dev_graft_qdisc +EXPORT_SYMBOL vmlinux 0x73e20c1c strlcpy +EXPORT_SYMBOL vmlinux 0x740baab3 tcp_init_cgroup +EXPORT_SYMBOL vmlinux 0x740d4349 pcim_iomap +EXPORT_SYMBOL vmlinux 0x7410aba2 strreplace +EXPORT_SYMBOL vmlinux 0x7412b307 netif_schedule_queue +EXPORT_SYMBOL vmlinux 0x74242eeb dma_pool_create +EXPORT_SYMBOL vmlinux 0x7436c657 loop_register_transfer +EXPORT_SYMBOL vmlinux 0x743951f4 snd_pcm_hw_constraint_integer +EXPORT_SYMBOL vmlinux 0x744374e2 elv_dispatch_sort +EXPORT_SYMBOL vmlinux 0x746ba301 shdma_chan_probe +EXPORT_SYMBOL vmlinux 0x747195f0 hdmi_vendor_infoframe_init +EXPORT_SYMBOL vmlinux 0x7485e15e unregister_chrdev_region +EXPORT_SYMBOL vmlinux 0x748a356a inet_dgram_connect +EXPORT_SYMBOL vmlinux 0x748a6282 inode_add_rsv_space +EXPORT_SYMBOL vmlinux 0x74b7f2ef get_user_pages_unlocked +EXPORT_SYMBOL vmlinux 0x74bb61aa dquot_alloc_inode +EXPORT_SYMBOL vmlinux 0x74c134b9 __sw_hweight32 +EXPORT_SYMBOL vmlinux 0x74d17fd4 tcf_em_unregister +EXPORT_SYMBOL vmlinux 0x74e033b6 _snd_ctl_add_slave +EXPORT_SYMBOL vmlinux 0x74e3aec3 vme_lm_request +EXPORT_SYMBOL vmlinux 0x74e5ff1a udpv6_encap_enable +EXPORT_SYMBOL vmlinux 0x74ea750a blk_queue_chunk_sectors +EXPORT_SYMBOL vmlinux 0x74ecc86b of_find_node_opts_by_path +EXPORT_SYMBOL vmlinux 0x74ecfe26 dev_set_group +EXPORT_SYMBOL vmlinux 0x74f0f42f param_set_ushort +EXPORT_SYMBOL vmlinux 0x74fa022d edma_trigger_channel +EXPORT_SYMBOL vmlinux 0x7505bdef memchr_inv +EXPORT_SYMBOL vmlinux 0x7506ad13 frontswap_register_ops +EXPORT_SYMBOL vmlinux 0x7506cfed dev_change_carrier +EXPORT_SYMBOL vmlinux 0x75300933 netpoll_poll_enable +EXPORT_SYMBOL vmlinux 0x7556ae45 kern_path +EXPORT_SYMBOL vmlinux 0x75697b2f sock_no_listen +EXPORT_SYMBOL vmlinux 0x756b0151 mmc_flush_cache +EXPORT_SYMBOL vmlinux 0x757b5d0b omap_dss_get_device +EXPORT_SYMBOL vmlinux 0x75850d01 __vmalloc +EXPORT_SYMBOL vmlinux 0x7593d385 div64_s64 +EXPORT_SYMBOL vmlinux 0x75a37be3 kernel_recvmsg +EXPORT_SYMBOL vmlinux 0x75bda77a seq_hlist_next +EXPORT_SYMBOL vmlinux 0x75bdea12 iommu_area_alloc +EXPORT_SYMBOL vmlinux 0x75c4aaca sock_wmalloc +EXPORT_SYMBOL vmlinux 0x75d177a8 pci_write_vpd +EXPORT_SYMBOL vmlinux 0x760a0f4f yield +EXPORT_SYMBOL vmlinux 0x7647726c handle_sysrq +EXPORT_SYMBOL vmlinux 0x764bd77c request_resource +EXPORT_SYMBOL vmlinux 0x765ec4a7 skb_kill_datagram +EXPORT_SYMBOL vmlinux 0x766e7860 seq_dentry +EXPORT_SYMBOL vmlinux 0x7685799b netdev_notice +EXPORT_SYMBOL vmlinux 0x7693a283 md_wakeup_thread +EXPORT_SYMBOL vmlinux 0x7697d370 pci_try_set_mwi +EXPORT_SYMBOL vmlinux 0x769c3740 netpoll_poll_disable +EXPORT_SYMBOL vmlinux 0x769d26a3 secpath_dup +EXPORT_SYMBOL vmlinux 0x76cf47f6 __aeabi_llsl +EXPORT_SYMBOL vmlinux 0x76d3cd60 laptop_mode +EXPORT_SYMBOL vmlinux 0x76d451c4 add_taint +EXPORT_SYMBOL vmlinux 0x76d9bf11 crc32_be +EXPORT_SYMBOL vmlinux 0x76e30f5c input_mt_sync_frame +EXPORT_SYMBOL vmlinux 0x76e7be57 dm_unregister_target +EXPORT_SYMBOL vmlinux 0x76f6c5ef kmalloc_order +EXPORT_SYMBOL vmlinux 0x770a0430 inet6_release +EXPORT_SYMBOL vmlinux 0x77119020 blk_rq_map_integrity_sg +EXPORT_SYMBOL vmlinux 0x771cf835 dma_pool_alloc +EXPORT_SYMBOL vmlinux 0x7721f10c serio_close +EXPORT_SYMBOL vmlinux 0x7746bdf7 request_key +EXPORT_SYMBOL vmlinux 0x7769753e csum_and_copy_from_iter +EXPORT_SYMBOL vmlinux 0x776e26c3 fget +EXPORT_SYMBOL vmlinux 0x778d66c4 fixed_phy_update_state +EXPORT_SYMBOL vmlinux 0x7791193f icst525_s2div +EXPORT_SYMBOL vmlinux 0x779a18af kstrtoll +EXPORT_SYMBOL vmlinux 0x77a8ea45 dcache_dir_open +EXPORT_SYMBOL vmlinux 0x77bc13a0 strim +EXPORT_SYMBOL vmlinux 0x77de8c97 blk_peek_request +EXPORT_SYMBOL vmlinux 0x77ec0ea0 phy_register_fixup_for_id +EXPORT_SYMBOL vmlinux 0x780c652c flow_cache_fini +EXPORT_SYMBOL vmlinux 0x780ca548 mb_cache_entry_find_first +EXPORT_SYMBOL vmlinux 0x7810a88b fence_signal_locked +EXPORT_SYMBOL vmlinux 0x7819a310 mdiobus_scan +EXPORT_SYMBOL vmlinux 0x781fc7c1 unregister_md_personality +EXPORT_SYMBOL vmlinux 0x78308b6a f_setown +EXPORT_SYMBOL vmlinux 0x7833deb2 pgprot_user +EXPORT_SYMBOL vmlinux 0x783b3563 wake_up_atomic_t +EXPORT_SYMBOL vmlinux 0x784c6cf6 tty_port_close_end +EXPORT_SYMBOL vmlinux 0x7853b167 __napi_complete +EXPORT_SYMBOL vmlinux 0x7857cbac inet_frag_destroy +EXPORT_SYMBOL vmlinux 0x785de49c pcim_iomap_table +EXPORT_SYMBOL vmlinux 0x78621201 generic_writepages +EXPORT_SYMBOL vmlinux 0x7864f9db mmc_can_erase +EXPORT_SYMBOL vmlinux 0x7880c781 dm_kcopyd_prepare_callback +EXPORT_SYMBOL vmlinux 0x788e7bb0 netpoll_parse_options +EXPORT_SYMBOL vmlinux 0x789affb1 frontswap_tmem_exclusive_gets +EXPORT_SYMBOL vmlinux 0x789fe57c pci_bus_type +EXPORT_SYMBOL vmlinux 0x78a3991d snd_jack_new +EXPORT_SYMBOL vmlinux 0x78aeec4a sock_diag_put_filterinfo +EXPORT_SYMBOL vmlinux 0x78c6bd00 dev_get_nest_level +EXPORT_SYMBOL vmlinux 0x78d987c6 tcp_proc_unregister +EXPORT_SYMBOL vmlinux 0x78df6bd7 no_pci_devices +EXPORT_SYMBOL vmlinux 0x78e9636e devm_ioremap +EXPORT_SYMBOL vmlinux 0x78eadf3c vlan_dev_vlan_proto +EXPORT_SYMBOL vmlinux 0x791cc9b9 netpoll_print_options +EXPORT_SYMBOL vmlinux 0x7923b937 inet_proto_csum_replace16 +EXPORT_SYMBOL vmlinux 0x7934b7d5 simple_follow_link +EXPORT_SYMBOL vmlinux 0x7937d0b1 pcim_iounmap +EXPORT_SYMBOL vmlinux 0x7945df01 cdev_add +EXPORT_SYMBOL vmlinux 0x7961617b napi_complete_done +EXPORT_SYMBOL vmlinux 0x79634d98 processor +EXPORT_SYMBOL vmlinux 0x796fc5ce scsi_get_sense_info_fld +EXPORT_SYMBOL vmlinux 0x797febf7 devm_input_allocate_device +EXPORT_SYMBOL vmlinux 0x79a96b78 bdi_init +EXPORT_SYMBOL vmlinux 0x79aa04a2 get_random_bytes +EXPORT_SYMBOL vmlinux 0x79b0b1ed _dev_info +EXPORT_SYMBOL vmlinux 0x79b4ee84 skb_insert +EXPORT_SYMBOL vmlinux 0x79bcd40c max8925_reg_read +EXPORT_SYMBOL vmlinux 0x79c3b096 up_read +EXPORT_SYMBOL vmlinux 0x79fb1df3 pcie_get_minimum_link +EXPORT_SYMBOL vmlinux 0x7a0db38b sched_autogroup_create_attach +EXPORT_SYMBOL vmlinux 0x7a1f2611 dispc_mgr_set_timings +EXPORT_SYMBOL vmlinux 0x7a2154a3 ip_cmsg_recv_offset +EXPORT_SYMBOL vmlinux 0x7a25c242 amba_device_register +EXPORT_SYMBOL vmlinux 0x7a270476 udp_lib_get_port +EXPORT_SYMBOL vmlinux 0x7a27c184 ewma_init +EXPORT_SYMBOL vmlinux 0x7a303999 of_get_named_gpio_flags +EXPORT_SYMBOL vmlinux 0x7a4497db kzfree +EXPORT_SYMBOL vmlinux 0x7a570d7a omap_dss_get_overlay_manager +EXPORT_SYMBOL vmlinux 0x7a5a3fd3 uart_remove_one_port +EXPORT_SYMBOL vmlinux 0x7a6a4dd9 devm_clk_put +EXPORT_SYMBOL vmlinux 0x7a925833 cpufreq_get_global_kobject +EXPORT_SYMBOL vmlinux 0x7a9484f3 load_nls_default +EXPORT_SYMBOL vmlinux 0x7a95e5ae do_settimeofday64 +EXPORT_SYMBOL vmlinux 0x7a9c96cd register_console +EXPORT_SYMBOL vmlinux 0x7aa1756e kvfree +EXPORT_SYMBOL vmlinux 0x7ab88a45 system_freezing_cnt +EXPORT_SYMBOL vmlinux 0x7acf4199 tty_set_operations +EXPORT_SYMBOL vmlinux 0x7ad050b9 qid_lt +EXPORT_SYMBOL vmlinux 0x7add44b5 posix_acl_valid +EXPORT_SYMBOL vmlinux 0x7adf770d blk_queue_io_opt +EXPORT_SYMBOL vmlinux 0x7af09426 tty_insert_flip_string_fixed_flag +EXPORT_SYMBOL vmlinux 0x7afa89fc vsnprintf +EXPORT_SYMBOL vmlinux 0x7afc9d8a unregister_sound_mixer +EXPORT_SYMBOL vmlinux 0x7b01d6b2 mmc_cleanup_queue +EXPORT_SYMBOL vmlinux 0x7b0a225a dev_addr_init +EXPORT_SYMBOL vmlinux 0x7b1ade38 lz4_decompress +EXPORT_SYMBOL vmlinux 0x7b283ce3 prandom_bytes_state +EXPORT_SYMBOL vmlinux 0x7b2df4c0 __devm_release_region +EXPORT_SYMBOL vmlinux 0x7b5c8440 vm_munmap +EXPORT_SYMBOL vmlinux 0x7b6ed884 inet_register_protosw +EXPORT_SYMBOL vmlinux 0x7b7c1a88 netdev_emerg +EXPORT_SYMBOL vmlinux 0x7b7c8298 generic_pipe_buf_release +EXPORT_SYMBOL vmlinux 0x7b8511b5 finish_open +EXPORT_SYMBOL vmlinux 0x7bb75f8c snd_timer_global_new +EXPORT_SYMBOL vmlinux 0x7bbe6c14 qdisc_reset +EXPORT_SYMBOL vmlinux 0x7be3fc7d iput +EXPORT_SYMBOL vmlinux 0x7bf1323b seq_release +EXPORT_SYMBOL vmlinux 0x7c0d281a __module_get +EXPORT_SYMBOL vmlinux 0x7c0e81fd km_new_mapping +EXPORT_SYMBOL vmlinux 0x7c1372e8 panic +EXPORT_SYMBOL vmlinux 0x7c173634 __bitmap_complement +EXPORT_SYMBOL vmlinux 0x7c243577 vga_tryget +EXPORT_SYMBOL vmlinux 0x7c2e57c8 of_device_is_available +EXPORT_SYMBOL vmlinux 0x7c3baf7b blk_start_request +EXPORT_SYMBOL vmlinux 0x7c46233a cpufreq_quick_get +EXPORT_SYMBOL vmlinux 0x7c4c1632 pci_bus_read_config_dword +EXPORT_SYMBOL vmlinux 0x7c61340c __release_region +EXPORT_SYMBOL vmlinux 0x7c85af78 dquot_quota_on_mount +EXPORT_SYMBOL vmlinux 0x7c91a449 netif_napi_del +EXPORT_SYMBOL vmlinux 0x7c98845d twl_i2c_read +EXPORT_SYMBOL vmlinux 0x7c9c4ecf __ww_mutex_lock_interruptible +EXPORT_SYMBOL vmlinux 0x7cb08b00 kernel_getpeername +EXPORT_SYMBOL vmlinux 0x7cb1ae69 cpu_down +EXPORT_SYMBOL vmlinux 0x7cbc2527 mapping_tagged +EXPORT_SYMBOL vmlinux 0x7cc035a7 __ucmpdi2 +EXPORT_SYMBOL vmlinux 0x7cc1f915 tcp_create_openreq_child +EXPORT_SYMBOL vmlinux 0x7cd4325b scsi_print_sense +EXPORT_SYMBOL vmlinux 0x7cd62a5d bd_set_size +EXPORT_SYMBOL vmlinux 0x7ce18c9f from_kqid +EXPORT_SYMBOL vmlinux 0x7cea6c0b bio_uncopy_user +EXPORT_SYMBOL vmlinux 0x7ced6403 snd_timer_start +EXPORT_SYMBOL vmlinux 0x7cf35220 vme_master_free +EXPORT_SYMBOL vmlinux 0x7cf86c4c nla_reserve_nohdr +EXPORT_SYMBOL vmlinux 0x7cfec23a bitmap_startwrite +EXPORT_SYMBOL vmlinux 0x7d0db45c jiffies_to_clock_t +EXPORT_SYMBOL vmlinux 0x7d11c268 jiffies +EXPORT_SYMBOL vmlinux 0x7d13e8cd skb_checksum_help +EXPORT_SYMBOL vmlinux 0x7d176af4 tcp_prot +EXPORT_SYMBOL vmlinux 0x7d194daa __kfree_skb +EXPORT_SYMBOL vmlinux 0x7d4cb4d3 simple_pin_fs +EXPORT_SYMBOL vmlinux 0x7d705738 blk_start_plug +EXPORT_SYMBOL vmlinux 0x7d77bf7e ptp_clock_event +EXPORT_SYMBOL vmlinux 0x7dccc294 proc_doulongvec_minmax +EXPORT_SYMBOL vmlinux 0x7deff673 dm_consume_args +EXPORT_SYMBOL vmlinux 0x7df0ac6a d_lookup +EXPORT_SYMBOL vmlinux 0x7df2def9 __skb_checksum_complete +EXPORT_SYMBOL vmlinux 0x7e1ac185 dev_printk +EXPORT_SYMBOL vmlinux 0x7e1ee9e2 init_special_inode +EXPORT_SYMBOL vmlinux 0x7e3b475a param_ops_short +EXPORT_SYMBOL vmlinux 0x7e5cafee __brelse +EXPORT_SYMBOL vmlinux 0x7e6fa3ef tcf_hash_new_index +EXPORT_SYMBOL vmlinux 0x7e8dfd3b scsi_free_host_dev +EXPORT_SYMBOL vmlinux 0x7e953eea mipi_dsi_dcs_enter_sleep_mode +EXPORT_SYMBOL vmlinux 0x7e9efe8e complete_and_exit +EXPORT_SYMBOL vmlinux 0x7eb1eb77 pci_scan_slot +EXPORT_SYMBOL vmlinux 0x7eb21395 inetdev_by_index +EXPORT_SYMBOL vmlinux 0x7eb8cbbd omapdss_unregister_display +EXPORT_SYMBOL vmlinux 0x7eb925f6 unlink_framebuffer +EXPORT_SYMBOL vmlinux 0x7ec5ba1e abx500_get_register_interruptible +EXPORT_SYMBOL vmlinux 0x7ed568ab md_write_end +EXPORT_SYMBOL vmlinux 0x7edc9f23 vfs_unlink +EXPORT_SYMBOL vmlinux 0x7edddc9f genphy_config_aneg +EXPORT_SYMBOL vmlinux 0x7ee53c59 skb_mac_gso_segment +EXPORT_SYMBOL vmlinux 0x7ee6d93a nsecs_to_jiffies64 +EXPORT_SYMBOL vmlinux 0x7ee7f093 dispc_ovl_compute_fifo_thresholds +EXPORT_SYMBOL vmlinux 0x7ef2210f pci_disable_msix +EXPORT_SYMBOL vmlinux 0x7ef94c8b vme_dma_list_add +EXPORT_SYMBOL vmlinux 0x7f015745 omap_dss_get_output +EXPORT_SYMBOL vmlinux 0x7f02188f __msecs_to_jiffies +EXPORT_SYMBOL vmlinux 0x7f12ce21 input_allocate_device +EXPORT_SYMBOL vmlinux 0x7f1d7006 get_user_pages_locked +EXPORT_SYMBOL vmlinux 0x7f24de73 jiffies_to_usecs +EXPORT_SYMBOL vmlinux 0x7f2ca8f9 __tracepoint_fence_emit +EXPORT_SYMBOL vmlinux 0x7f2cce73 __ps2_command +EXPORT_SYMBOL vmlinux 0x7f41c93b inet6_register_protosw +EXPORT_SYMBOL vmlinux 0x7f4ef453 tcf_hash_create +EXPORT_SYMBOL vmlinux 0x7f517e20 pci_scan_root_bus +EXPORT_SYMBOL vmlinux 0x7f5f09ae xfrm6_protocol_register +EXPORT_SYMBOL vmlinux 0x7f62a045 cpu_maps_update_done +EXPORT_SYMBOL vmlinux 0x7f63b31e _memcpy_toio +EXPORT_SYMBOL vmlinux 0x7f6811b5 blk_rq_count_integrity_sg +EXPORT_SYMBOL vmlinux 0x7f72a412 generic_pipe_buf_get +EXPORT_SYMBOL vmlinux 0x7f72b1e6 vm_map_ram +EXPORT_SYMBOL vmlinux 0x7f8d81e0 scsi_bios_ptable +EXPORT_SYMBOL vmlinux 0x7f9c8fae dev_set_mac_address +EXPORT_SYMBOL vmlinux 0x7f9fe98c __starget_for_each_device +EXPORT_SYMBOL vmlinux 0x7fddf7f7 __set_page_dirty_nobuffers +EXPORT_SYMBOL vmlinux 0x7fde2edb vme_master_read +EXPORT_SYMBOL vmlinux 0x7fe32873 rb_replace_node +EXPORT_SYMBOL vmlinux 0x7ff93f73 snd_dma_alloc_pages +EXPORT_SYMBOL vmlinux 0x7ffc7f83 writeback_inodes_sb_nr +EXPORT_SYMBOL vmlinux 0x7ffe20bf inode_needs_sync +EXPORT_SYMBOL vmlinux 0x800e4ffa __muldi3 +EXPORT_SYMBOL vmlinux 0x8011a761 dev_get_phys_port_id +EXPORT_SYMBOL vmlinux 0x802ab98f inet_bind +EXPORT_SYMBOL vmlinux 0x8037c425 nf_log_unregister +EXPORT_SYMBOL vmlinux 0x804aabdf idr_is_empty +EXPORT_SYMBOL vmlinux 0x80525753 iov_iter_copy_from_user_atomic +EXPORT_SYMBOL vmlinux 0x805c268b __skb_flow_dissect +EXPORT_SYMBOL vmlinux 0x805ebdd4 input_register_handler +EXPORT_SYMBOL vmlinux 0x806a0c09 generic_pipe_buf_steal +EXPORT_SYMBOL vmlinux 0x80744b19 of_phy_is_fixed_link +EXPORT_SYMBOL vmlinux 0x8087e629 sk_prot_clear_portaddr_nulls +EXPORT_SYMBOL vmlinux 0x808cbb9d clk_add_alias +EXPORT_SYMBOL vmlinux 0x809ad30b mark_info_dirty +EXPORT_SYMBOL vmlinux 0x80ca5026 _bin2bcd +EXPORT_SYMBOL vmlinux 0x80d3139b jbd2_journal_force_commit +EXPORT_SYMBOL vmlinux 0x80d68d3e fb_register_client +EXPORT_SYMBOL vmlinux 0x80e2e831 param_get_ulong +EXPORT_SYMBOL vmlinux 0x80e943d6 dput +EXPORT_SYMBOL vmlinux 0x80fee67b xfrm_policy_register_afinfo +EXPORT_SYMBOL vmlinux 0x812408fc serio_unregister_child_port +EXPORT_SYMBOL vmlinux 0x812f6ed9 param_get_short +EXPORT_SYMBOL vmlinux 0x813c58cf __break_lease +EXPORT_SYMBOL vmlinux 0x813c8607 cpufreq_power_cooling_register +EXPORT_SYMBOL vmlinux 0x81490126 of_graph_get_port_by_id +EXPORT_SYMBOL vmlinux 0x814e7730 nf_ct_destroy +EXPORT_SYMBOL vmlinux 0x815b5dd4 match_octal +EXPORT_SYMBOL vmlinux 0x817a829e __sk_backlog_rcv +EXPORT_SYMBOL vmlinux 0x819c4192 skb_dequeue_tail +EXPORT_SYMBOL vmlinux 0x81b69e41 snd_ctl_enum_info +EXPORT_SYMBOL vmlinux 0x81c69de1 dss_mgr_start_update +EXPORT_SYMBOL vmlinux 0x81cf6398 mipi_dsi_dcs_write +EXPORT_SYMBOL vmlinux 0x81d011f7 nf_register_hook +EXPORT_SYMBOL vmlinux 0x81db6ebb xz_dec_reset +EXPORT_SYMBOL vmlinux 0x81edd07a inc_zone_page_state +EXPORT_SYMBOL vmlinux 0x81ee6a87 elv_rb_add +EXPORT_SYMBOL vmlinux 0x81ef8414 vme_slot_num +EXPORT_SYMBOL vmlinux 0x82072614 tasklet_kill +EXPORT_SYMBOL vmlinux 0x824a4367 tmio_core_mmc_pwr +EXPORT_SYMBOL vmlinux 0x82617091 __nlmsg_put +EXPORT_SYMBOL vmlinux 0x82701365 int_to_scsilun +EXPORT_SYMBOL vmlinux 0x828062b1 __frontswap_init +EXPORT_SYMBOL vmlinux 0x8285e074 __inet_stream_connect +EXPORT_SYMBOL vmlinux 0x8285f57f mipi_dsi_dcs_get_power_mode +EXPORT_SYMBOL vmlinux 0x82871b60 dmt_modes +EXPORT_SYMBOL vmlinux 0x82acfb70 blk_iopoll_sched +EXPORT_SYMBOL vmlinux 0x82ad05fd snd_pcm_lib_free_vmalloc_buffer +EXPORT_SYMBOL vmlinux 0x82c1014f tcp_connect +EXPORT_SYMBOL vmlinux 0x82d20630 xfrm6_input_addr +EXPORT_SYMBOL vmlinux 0x8304733a blk_set_stacking_limits +EXPORT_SYMBOL vmlinux 0x831396c3 fence_signal +EXPORT_SYMBOL vmlinux 0x831ba6d9 try_module_get +EXPORT_SYMBOL vmlinux 0x831ffe7f kernel_getsockopt +EXPORT_SYMBOL vmlinux 0x8320bea8 __umodsi3 +EXPORT_SYMBOL vmlinux 0x8332ed03 d_tmpfile +EXPORT_SYMBOL vmlinux 0x835fcd8d __xfrm_state_destroy +EXPORT_SYMBOL vmlinux 0x83665d05 dmam_alloc_coherent +EXPORT_SYMBOL vmlinux 0x836ba3c2 free_inode_nonrcu +EXPORT_SYMBOL vmlinux 0x8372cd2f __gnet_stats_copy_basic +EXPORT_SYMBOL vmlinux 0x8375d79d ida_destroy +EXPORT_SYMBOL vmlinux 0x837acedf seq_write +EXPORT_SYMBOL vmlinux 0x8382eaf9 vfs_getxattr_alloc +EXPORT_SYMBOL vmlinux 0x83873287 register_mtd_chip_driver +EXPORT_SYMBOL vmlinux 0x839430b2 __register_cpu_notifier +EXPORT_SYMBOL vmlinux 0x839cdf99 edma_resume +EXPORT_SYMBOL vmlinux 0x83b009ea xfrm_state_walk_init +EXPORT_SYMBOL vmlinux 0x83c52fba xfrm4_protocol_init +EXPORT_SYMBOL vmlinux 0x83d70683 edma_start +EXPORT_SYMBOL vmlinux 0x83df7f44 d_find_alias +EXPORT_SYMBOL vmlinux 0x83e92939 snd_ctl_free_one +EXPORT_SYMBOL vmlinux 0x83f8b413 kernel_accept +EXPORT_SYMBOL vmlinux 0x8415e334 pneigh_enqueue +EXPORT_SYMBOL vmlinux 0x841d7fa6 flow_cache_lookup +EXPORT_SYMBOL vmlinux 0x844c28da generic_block_bmap +EXPORT_SYMBOL vmlinux 0x8456467c framebuffer_alloc +EXPORT_SYMBOL vmlinux 0x847e1b5d generic_readlink +EXPORT_SYMBOL vmlinux 0x847e60a3 ps2_init +EXPORT_SYMBOL vmlinux 0x848b09ec inet_frags_init +EXPORT_SYMBOL vmlinux 0x849dc77d __scsi_iterate_devices +EXPORT_SYMBOL vmlinux 0x84ac23f5 blk_start_queue +EXPORT_SYMBOL vmlinux 0x84ad84a7 param_array_ops +EXPORT_SYMBOL vmlinux 0x84b183ae strncmp +EXPORT_SYMBOL vmlinux 0x84ffea8b idr_preload +EXPORT_SYMBOL vmlinux 0x850520a7 bio_get_nr_vecs +EXPORT_SYMBOL vmlinux 0x852ad42c qdisc_tree_decrease_qlen +EXPORT_SYMBOL vmlinux 0x85670f1d rtnl_is_locked +EXPORT_SYMBOL vmlinux 0x85765fee omap_enable_dma_irq +EXPORT_SYMBOL vmlinux 0x8577f355 of_find_node_by_name +EXPORT_SYMBOL vmlinux 0x857f1f2c xfrm_state_delete_tunnel +EXPORT_SYMBOL vmlinux 0x8584ddaa bh_submit_read +EXPORT_SYMBOL vmlinux 0x85a391ef wake_up_process +EXPORT_SYMBOL vmlinux 0x85b5e625 rfkill_set_states +EXPORT_SYMBOL vmlinux 0x85c20625 xfrm_stateonly_find +EXPORT_SYMBOL vmlinux 0x85ca11b2 invalidate_bdev +EXPORT_SYMBOL vmlinux 0x85d5de9f pcim_pin_device +EXPORT_SYMBOL vmlinux 0x85df9b6c strsep +EXPORT_SYMBOL vmlinux 0x85efc7e0 zero_pfn +EXPORT_SYMBOL vmlinux 0x85f054cd vme_dma_request +EXPORT_SYMBOL vmlinux 0x8609ef40 blkdev_reread_part +EXPORT_SYMBOL vmlinux 0x8612e07f sock_dequeue_err_skb +EXPORT_SYMBOL vmlinux 0x861701b1 xfrm_policy_unregister_afinfo +EXPORT_SYMBOL vmlinux 0x865029ac __hw_addr_sync +EXPORT_SYMBOL vmlinux 0x8664f62e cpufreq_update_policy +EXPORT_SYMBOL vmlinux 0x86722f04 dev_uc_init +EXPORT_SYMBOL vmlinux 0x86860195 dss_feat_get_supported_displays +EXPORT_SYMBOL vmlinux 0x868acba5 get_options +EXPORT_SYMBOL vmlinux 0x86a4889a kmalloc_order_trace +EXPORT_SYMBOL vmlinux 0x86c99de4 devfreq_recommended_opp +EXPORT_SYMBOL vmlinux 0x86db008e generic_removexattr +EXPORT_SYMBOL vmlinux 0x86df18ff alloc_fddidev +EXPORT_SYMBOL vmlinux 0x86fb9b05 bitmap_parse_user +EXPORT_SYMBOL vmlinux 0x87003790 fence_init +EXPORT_SYMBOL vmlinux 0x8707fef7 padata_set_cpumask +EXPORT_SYMBOL vmlinux 0x8709b40b nf_register_sockopt +EXPORT_SYMBOL vmlinux 0x871c0a7e fiemap_check_flags +EXPORT_SYMBOL vmlinux 0x873267f3 ipv6_chk_custom_prefix +EXPORT_SYMBOL vmlinux 0x873e3c5f ioremap_wc +EXPORT_SYMBOL vmlinux 0x8748710a kfree_skb +EXPORT_SYMBOL vmlinux 0x8756bfbb netdev_crit +EXPORT_SYMBOL vmlinux 0x87573ec0 udp_lib_getsockopt +EXPORT_SYMBOL vmlinux 0x87608bb5 unregister_key_type +EXPORT_SYMBOL vmlinux 0x8761ae09 pci_dev_put +EXPORT_SYMBOL vmlinux 0x8780c3ef dquot_quotactl_ops +EXPORT_SYMBOL vmlinux 0x8782dd66 remap_vmalloc_range +EXPORT_SYMBOL vmlinux 0x8782ece8 bio_map_kern +EXPORT_SYMBOL vmlinux 0x878ab3ce sysctl_tcp_adv_win_scale +EXPORT_SYMBOL vmlinux 0x8798cf83 ip4_datagram_connect +EXPORT_SYMBOL vmlinux 0x87b538f2 vm_mmap +EXPORT_SYMBOL vmlinux 0x87dcd34c param_get_ullong +EXPORT_SYMBOL vmlinux 0x87f0b2bb swiotlb_sync_single_for_cpu +EXPORT_SYMBOL vmlinux 0x87f7fc35 nf_register_hooks +EXPORT_SYMBOL vmlinux 0x88173884 cad_pid +EXPORT_SYMBOL vmlinux 0x883aadcc send_sig_info +EXPORT_SYMBOL vmlinux 0x88520a47 of_match_node +EXPORT_SYMBOL vmlinux 0x88605eb8 jbd2_journal_set_triggers +EXPORT_SYMBOL vmlinux 0x886bc76f mempool_resize +EXPORT_SYMBOL vmlinux 0x88822dea fsnotify_alloc_group +EXPORT_SYMBOL vmlinux 0x888cc5e1 dev_set_promiscuity +EXPORT_SYMBOL vmlinux 0x889450e5 seq_lseek +EXPORT_SYMBOL vmlinux 0x8898a1ea pci_iomap_range +EXPORT_SYMBOL vmlinux 0x88b19f45 system_serial +EXPORT_SYMBOL vmlinux 0x88c8aded downgrade_write +EXPORT_SYMBOL vmlinux 0x88d77413 __blk_run_queue +EXPORT_SYMBOL vmlinux 0x88eef096 sync_filesystem +EXPORT_SYMBOL vmlinux 0x8900ddbc clear_page_dirty_for_io +EXPORT_SYMBOL vmlinux 0x8915b1b6 tcp_v4_destroy_sock +EXPORT_SYMBOL vmlinux 0x89335d92 param_ops_uint +EXPORT_SYMBOL vmlinux 0x8963d089 snd_pcm_hw_constraint_msbits +EXPORT_SYMBOL vmlinux 0x89640a55 snd_device_free +EXPORT_SYMBOL vmlinux 0x8976c0ae blk_run_queue_async +EXPORT_SYMBOL vmlinux 0x898e9a14 vfs_llseek +EXPORT_SYMBOL vmlinux 0x899b0ed0 vfs_write +EXPORT_SYMBOL vmlinux 0x89afe34e __kfifo_dma_in_prepare +EXPORT_SYMBOL vmlinux 0x89b3bee2 blk_queue_dma_alignment +EXPORT_SYMBOL vmlinux 0x89b69ce7 devm_request_resource +EXPORT_SYMBOL vmlinux 0x89bc345b pci_disable_link_state_locked +EXPORT_SYMBOL vmlinux 0x89be79c5 register_cdrom +EXPORT_SYMBOL vmlinux 0x89ca7935 __neigh_for_each_release +EXPORT_SYMBOL vmlinux 0x89d015da pci_dev_get +EXPORT_SYMBOL vmlinux 0x89d299d0 set_binfmt +EXPORT_SYMBOL vmlinux 0x89d5538d fb_pad_aligned_buffer +EXPORT_SYMBOL vmlinux 0x89d7aa97 mmc_calc_max_discard +EXPORT_SYMBOL vmlinux 0x89f93c26 xfrm6_rcv_cb +EXPORT_SYMBOL vmlinux 0x89fd3b07 sg_miter_skip +EXPORT_SYMBOL vmlinux 0x89ffb1e4 gnet_stats_start_copy_compat +EXPORT_SYMBOL vmlinux 0x8a020feb abx500_mask_and_set_register_interruptible +EXPORT_SYMBOL vmlinux 0x8a0f4230 rename_lock +EXPORT_SYMBOL vmlinux 0x8a1ab4ee timeval_to_jiffies +EXPORT_SYMBOL vmlinux 0x8a1c5455 blk_stack_limits +EXPORT_SYMBOL vmlinux 0x8a1d3a24 tty_hangup +EXPORT_SYMBOL vmlinux 0x8a29748e blk_rq_map_kern +EXPORT_SYMBOL vmlinux 0x8a4823a6 snd_pcm_hw_constraint_minmax +EXPORT_SYMBOL vmlinux 0x8a490c90 rfkill_set_sw_state +EXPORT_SYMBOL vmlinux 0x8a4fa83b __aeabi_llsr +EXPORT_SYMBOL vmlinux 0x8a51c18c devm_gpiod_get_array +EXPORT_SYMBOL vmlinux 0x8a51d565 quota_send_warning +EXPORT_SYMBOL vmlinux 0x8a6cc753 pci_set_mwi +EXPORT_SYMBOL vmlinux 0x8a73e771 sync_inodes_sb +EXPORT_SYMBOL vmlinux 0x8a7d1c31 high_memory +EXPORT_SYMBOL vmlinux 0x8a7e8380 mb_cache_entry_free +EXPORT_SYMBOL vmlinux 0x8a93cab5 unregister_mtd_chip_driver +EXPORT_SYMBOL vmlinux 0x8a99a016 mempool_free_slab +EXPORT_SYMBOL vmlinux 0x8ac14382 dmam_declare_coherent_memory +EXPORT_SYMBOL vmlinux 0x8af9dd1c omapdss_find_output_from_display +EXPORT_SYMBOL vmlinux 0x8b0bf302 dev_get_by_name_rcu +EXPORT_SYMBOL vmlinux 0x8b0c1f46 snd_pcm_set_sync +EXPORT_SYMBOL vmlinux 0x8b35e873 sg_last +EXPORT_SYMBOL vmlinux 0x8b43159b register_cpu_notifier +EXPORT_SYMBOL vmlinux 0x8b618d08 overflowuid +EXPORT_SYMBOL vmlinux 0x8b8059bd in_group_p +EXPORT_SYMBOL vmlinux 0x8b8e20af dquot_alloc +EXPORT_SYMBOL vmlinux 0x8b90ed33 scsi_is_host_device +EXPORT_SYMBOL vmlinux 0x8ba4f364 sock_get_timestampns +EXPORT_SYMBOL vmlinux 0x8bafe029 tcf_register_action +EXPORT_SYMBOL vmlinux 0x8bb3dcbc pcie_capability_read_dword +EXPORT_SYMBOL vmlinux 0x8bb936be vfs_getattr_nosec +EXPORT_SYMBOL vmlinux 0x8bc86f76 pci_enable_msix +EXPORT_SYMBOL vmlinux 0x8beeefc6 of_n_addr_cells +EXPORT_SYMBOL vmlinux 0x8bf9c1d0 iw_handler_get_spy +EXPORT_SYMBOL vmlinux 0x8c176409 blk_init_allocated_queue +EXPORT_SYMBOL vmlinux 0x8c17dc75 gnet_stats_copy_rate_est +EXPORT_SYMBOL vmlinux 0x8c1fee91 mmc_align_data_size +EXPORT_SYMBOL vmlinux 0x8c4b9d15 ip_mc_join_group +EXPORT_SYMBOL vmlinux 0x8c608dce account_page_dirtied +EXPORT_SYMBOL vmlinux 0x8c637d43 irq_cpu_rmap_add +EXPORT_SYMBOL vmlinux 0x8c674765 ps2_sendbyte +EXPORT_SYMBOL vmlinux 0x8c705b8c edma_clean_channel +EXPORT_SYMBOL vmlinux 0x8c7facc9 security_inode_notifysecctx +EXPORT_SYMBOL vmlinux 0x8c8f9001 mipi_dsi_dcs_exit_sleep_mode +EXPORT_SYMBOL vmlinux 0x8cbb87ac dm_io +EXPORT_SYMBOL vmlinux 0x8cd8c339 omap_free_dma +EXPORT_SYMBOL vmlinux 0x8cfcf75c nand_flash_ids +EXPORT_SYMBOL vmlinux 0x8d134c39 idr_replace +EXPORT_SYMBOL vmlinux 0x8d1da4e8 generic_end_io_acct +EXPORT_SYMBOL vmlinux 0x8d1dabbe get_disk +EXPORT_SYMBOL vmlinux 0x8d537fa1 bioset_create +EXPORT_SYMBOL vmlinux 0x8d53ec36 mtd_concat_destroy +EXPORT_SYMBOL vmlinux 0x8d551bef sysctl_tcp_rmem +EXPORT_SYMBOL vmlinux 0x8d55bb8a qid_eq +EXPORT_SYMBOL vmlinux 0x8d5b4ed0 of_mdiobus_register +EXPORT_SYMBOL vmlinux 0x8d628e6e tcp_recvmsg +EXPORT_SYMBOL vmlinux 0x8d6a6414 kfree_skb_partial +EXPORT_SYMBOL vmlinux 0x8d6b2ce1 radix_tree_delete_item +EXPORT_SYMBOL vmlinux 0x8d6f81b4 __div64_32 +EXPORT_SYMBOL vmlinux 0x8d72495b __getnstimeofday64 +EXPORT_SYMBOL vmlinux 0x8d73278e hex_asc_upper +EXPORT_SYMBOL vmlinux 0x8d74d180 of_get_mac_address +EXPORT_SYMBOL vmlinux 0x8d7da207 input_mt_report_pointer_emulation +EXPORT_SYMBOL vmlinux 0x8d7f3265 snd_card_disconnect +EXPORT_SYMBOL vmlinux 0x8d8b6353 proc_dointvec_userhz_jiffies +EXPORT_SYMBOL vmlinux 0x8daa1ba3 nand_calculate_ecc +EXPORT_SYMBOL vmlinux 0x8dab9eda udp_poll +EXPORT_SYMBOL vmlinux 0x8dcff6e2 __pv_offset +EXPORT_SYMBOL vmlinux 0x8dd32a65 snd_register_oss_device +EXPORT_SYMBOL vmlinux 0x8ddb0373 kmem_cache_shrink +EXPORT_SYMBOL vmlinux 0x8df3789f snd_oss_info_register +EXPORT_SYMBOL vmlinux 0x8e006411 sk_common_release +EXPORT_SYMBOL vmlinux 0x8e050cae param_get_string +EXPORT_SYMBOL vmlinux 0x8e1a41c7 generic_shutdown_super +EXPORT_SYMBOL vmlinux 0x8e1d4e92 xfrm_state_delete +EXPORT_SYMBOL vmlinux 0x8e4149b7 ppp_input +EXPORT_SYMBOL vmlinux 0x8e676639 blk_cleanup_queue +EXPORT_SYMBOL vmlinux 0x8e865d3c arm_delay_ops +EXPORT_SYMBOL vmlinux 0x8eb371be pcibios_fixup_bus +EXPORT_SYMBOL vmlinux 0x8eb89a1c phy_stop_interrupts +EXPORT_SYMBOL vmlinux 0x8ec63f0d pskb_expand_head +EXPORT_SYMBOL vmlinux 0x8edeefce vc_cons +EXPORT_SYMBOL vmlinux 0x8ee34153 twl6040_reg_write +EXPORT_SYMBOL vmlinux 0x8ee54372 dma_mmap_from_coherent +EXPORT_SYMBOL vmlinux 0x8ee91c88 put_io_context +EXPORT_SYMBOL vmlinux 0x8f0984ed tty_port_lower_dtr_rts +EXPORT_SYMBOL vmlinux 0x8f224915 pci_enable_msi_range +EXPORT_SYMBOL vmlinux 0x8f232c45 genphy_config_init +EXPORT_SYMBOL vmlinux 0x8f595b11 snd_major +EXPORT_SYMBOL vmlinux 0x8f62e9fe devfreq_add_governor +EXPORT_SYMBOL vmlinux 0x8f678b07 __stack_chk_guard +EXPORT_SYMBOL vmlinux 0x8f6ecee6 vfs_link +EXPORT_SYMBOL vmlinux 0x8f7049b8 devfreq_monitor_resume +EXPORT_SYMBOL vmlinux 0x8f775376 kernel_sendpage +EXPORT_SYMBOL vmlinux 0x8f7d6e70 __dst_free +EXPORT_SYMBOL vmlinux 0x8f80cd28 netif_rx_ni +EXPORT_SYMBOL vmlinux 0x8fa4130a omap_set_dma_callback +EXPORT_SYMBOL vmlinux 0x8fb26450 filemap_flush +EXPORT_SYMBOL vmlinux 0x8fcceba8 dev_uc_unsync +EXPORT_SYMBOL vmlinux 0x8fcffb08 tcf_hash_cleanup +EXPORT_SYMBOL vmlinux 0x8fd180e7 kernel_neon_begin +EXPORT_SYMBOL vmlinux 0x8fe21872 pci_get_class +EXPORT_SYMBOL vmlinux 0x8ff56619 md_integrity_register +EXPORT_SYMBOL vmlinux 0x8ffc025f ___pskb_trim +EXPORT_SYMBOL vmlinux 0x8ffdb3b8 crc16 +EXPORT_SYMBOL vmlinux 0x9024d54f __sk_mem_reclaim +EXPORT_SYMBOL vmlinux 0x90695906 vme_free_consistent +EXPORT_SYMBOL vmlinux 0x90907d49 __netlink_ns_capable +EXPORT_SYMBOL vmlinux 0x909d64fa __secpath_destroy +EXPORT_SYMBOL vmlinux 0x90a76231 snd_ctl_find_id +EXPORT_SYMBOL vmlinux 0x90b426cc vme_irq_free +EXPORT_SYMBOL vmlinux 0x90c5e819 kstrtoll_from_user +EXPORT_SYMBOL vmlinux 0x90c8047f nvdimm_bus_unlock +EXPORT_SYMBOL vmlinux 0x90ca209b thermal_cdev_update +EXPORT_SYMBOL vmlinux 0x90f51c61 xfrm_input_unregister_afinfo +EXPORT_SYMBOL vmlinux 0x9118b65e shrink_dcache_sb +EXPORT_SYMBOL vmlinux 0x91463b1d kstrtos16 +EXPORT_SYMBOL vmlinux 0x9148569b jbd2_journal_try_to_free_buffers +EXPORT_SYMBOL vmlinux 0x9150745e pci_set_dma_seg_boundary +EXPORT_SYMBOL vmlinux 0x91695783 cdrom_ioctl +EXPORT_SYMBOL vmlinux 0x91715312 sprintf +EXPORT_SYMBOL vmlinux 0x9177c2df done_path_create +EXPORT_SYMBOL vmlinux 0x918f23e3 vme_irq_generate +EXPORT_SYMBOL vmlinux 0x919029aa __readwrite_bug +EXPORT_SYMBOL vmlinux 0x91b15053 nf_nat_decode_session_hook +EXPORT_SYMBOL vmlinux 0x91c0980e icst_hz +EXPORT_SYMBOL vmlinux 0x91c62711 xfrm4_protocol_deregister +EXPORT_SYMBOL vmlinux 0x91e4322d bio_integrity_free +EXPORT_SYMBOL vmlinux 0x91ebe9aa blk_queue_end_tag +EXPORT_SYMBOL vmlinux 0x9212ccff dss_install_mgr_ops +EXPORT_SYMBOL vmlinux 0x9212ddf9 mmc_power_restore_host +EXPORT_SYMBOL vmlinux 0x922e3550 snd_timer_resolution +EXPORT_SYMBOL vmlinux 0x923b1276 dmaengine_get +EXPORT_SYMBOL vmlinux 0x923f3a2c backlight_force_update +EXPORT_SYMBOL vmlinux 0x92579f65 rawv6_mh_filter_register +EXPORT_SYMBOL vmlinux 0x926a4088 __tracepoint_kmem_cache_alloc_node +EXPORT_SYMBOL vmlinux 0x9270a5c4 blk_queue_resize_tags +EXPORT_SYMBOL vmlinux 0x929850f7 jbd2_complete_transaction +EXPORT_SYMBOL vmlinux 0x92a301f6 pci_request_regions_exclusive +EXPORT_SYMBOL vmlinux 0x92a9c60c time_to_tm +EXPORT_SYMBOL vmlinux 0x92d016d2 bdi_set_max_ratio +EXPORT_SYMBOL vmlinux 0x92e4d2fe flow_hash_from_keys +EXPORT_SYMBOL vmlinux 0x92ec5d1b dispc_mgr_enable +EXPORT_SYMBOL vmlinux 0x92ee4135 nand_lock +EXPORT_SYMBOL vmlinux 0x92f50b06 phy_write_mmd_indirect +EXPORT_SYMBOL vmlinux 0x92f754b0 fbcon_rotate_ud +EXPORT_SYMBOL vmlinux 0x92fa0cac tcf_em_tree_dump +EXPORT_SYMBOL vmlinux 0x92fa5abb vme_lm_detach +EXPORT_SYMBOL vmlinux 0x93027cd8 md_flush_request +EXPORT_SYMBOL vmlinux 0x9305f8e6 cpufreq_get +EXPORT_SYMBOL vmlinux 0x9318f291 cros_ec_query_all +EXPORT_SYMBOL vmlinux 0x931c21e0 pci_map_rom +EXPORT_SYMBOL vmlinux 0x93215e1d __kfifo_skip_r +EXPORT_SYMBOL vmlinux 0x9352d1cd ip_ct_attach +EXPORT_SYMBOL vmlinux 0x9352dec0 blk_rq_init +EXPORT_SYMBOL vmlinux 0x935a9c0f cdev_init +EXPORT_SYMBOL vmlinux 0x937399bb shdma_request_irq +EXPORT_SYMBOL vmlinux 0x937733e3 qid_valid +EXPORT_SYMBOL vmlinux 0x937d0953 locks_copy_lock +EXPORT_SYMBOL vmlinux 0x937ebb95 nf_log_trace +EXPORT_SYMBOL vmlinux 0x93963a85 dss_feat_get_num_mgrs +EXPORT_SYMBOL vmlinux 0x93b3fc74 register_dcbevent_notifier +EXPORT_SYMBOL vmlinux 0x93d17024 mipi_dsi_host_unregister +EXPORT_SYMBOL vmlinux 0x93d378c0 dev_deactivate +EXPORT_SYMBOL vmlinux 0x93df0c71 snd_soc_alloc_ac97_codec +EXPORT_SYMBOL vmlinux 0x93f6f53e new_inode +EXPORT_SYMBOL vmlinux 0x93fca811 __get_free_pages +EXPORT_SYMBOL vmlinux 0x9402a6a5 scsilun_to_int +EXPORT_SYMBOL vmlinux 0x94098ff8 snd_interval_list +EXPORT_SYMBOL vmlinux 0x940f1596 soft_cursor +EXPORT_SYMBOL vmlinux 0x940f9cf6 kblockd_schedule_delayed_work +EXPORT_SYMBOL vmlinux 0x9427f6dd of_get_property +EXPORT_SYMBOL vmlinux 0x945e3d38 simple_setattr +EXPORT_SYMBOL vmlinux 0x948bcea1 inode_reclaim_rsv_space +EXPORT_SYMBOL vmlinux 0x94961283 vunmap +EXPORT_SYMBOL vmlinux 0x94b4a61c skb_store_bits +EXPORT_SYMBOL vmlinux 0x94c8aca3 tcp_proto_cgroup +EXPORT_SYMBOL vmlinux 0x94d3da68 rtc_lock +EXPORT_SYMBOL vmlinux 0x94de1cc3 jbd2_journal_flush +EXPORT_SYMBOL vmlinux 0x94eea794 getnstimeofday64 +EXPORT_SYMBOL vmlinux 0x94f3f912 register_quota_format +EXPORT_SYMBOL vmlinux 0x951013b6 omap_dss_get_next_device +EXPORT_SYMBOL vmlinux 0x951cdcd9 bitmap_endwrite +EXPORT_SYMBOL vmlinux 0x952bf001 atomic_dec_and_mutex_lock +EXPORT_SYMBOL vmlinux 0x953e5685 blk_queue_unprep_rq +EXPORT_SYMBOL vmlinux 0x9545af6d tasklet_init +EXPORT_SYMBOL vmlinux 0x954eea2f of_find_node_by_phandle +EXPORT_SYMBOL vmlinux 0x95622f41 down_timeout +EXPORT_SYMBOL vmlinux 0x9570ef8d mmc_gpio_get_cd +EXPORT_SYMBOL vmlinux 0x957f251a pcie_port_service_register +EXPORT_SYMBOL vmlinux 0x95ae1ab6 udp_push_pending_frames +EXPORT_SYMBOL vmlinux 0x95b6f1c6 iw_handler_set_spy +EXPORT_SYMBOL vmlinux 0x95d7cbf0 dm_kobject_release +EXPORT_SYMBOL vmlinux 0x95da27b2 unregister_qdisc +EXPORT_SYMBOL vmlinux 0x95dbe078 __get_user_2 +EXPORT_SYMBOL vmlinux 0x960dfaf5 radix_tree_tag_get +EXPORT_SYMBOL vmlinux 0x960fd8de bio_integrity_endio +EXPORT_SYMBOL vmlinux 0x961299fd gen_pool_dma_alloc +EXPORT_SYMBOL vmlinux 0x961e7200 blk_queue_start_tag +EXPORT_SYMBOL vmlinux 0x964a1e22 get_gendisk +EXPORT_SYMBOL vmlinux 0x964bb226 fsnotify_put_group +EXPORT_SYMBOL vmlinux 0x9650b74e generic_start_io_acct +EXPORT_SYMBOL vmlinux 0x96573b80 __kfifo_dma_in_finish_r +EXPORT_SYMBOL vmlinux 0x965764ce serio_interrupt +EXPORT_SYMBOL vmlinux 0x966ac8e6 dmam_free_noncoherent +EXPORT_SYMBOL vmlinux 0x966e69d7 put_tty_driver +EXPORT_SYMBOL vmlinux 0x96898769 sysfs_format_mac +EXPORT_SYMBOL vmlinux 0x96bb8d53 elv_rb_find +EXPORT_SYMBOL vmlinux 0x96c5d1d4 __napi_schedule_irqoff +EXPORT_SYMBOL vmlinux 0x96c86a3f free_page_put_link +EXPORT_SYMBOL vmlinux 0x96cd2b04 scsi_sense_key_string +EXPORT_SYMBOL vmlinux 0x96d1bc7b __elv_add_request +EXPORT_SYMBOL vmlinux 0x96e70096 udp_lib_rehash +EXPORT_SYMBOL vmlinux 0x96fa209f dispc_ovl_check +EXPORT_SYMBOL vmlinux 0x96fd7a96 grab_cache_page_write_begin +EXPORT_SYMBOL vmlinux 0x97255bdf strlen +EXPORT_SYMBOL vmlinux 0x97286975 blk_queue_max_discard_sectors +EXPORT_SYMBOL vmlinux 0x972b449a unregister_filesystem +EXPORT_SYMBOL vmlinux 0x974ee92c cpufreq_get_policy +EXPORT_SYMBOL vmlinux 0x9754ec10 radix_tree_preload +EXPORT_SYMBOL vmlinux 0x97572631 blk_integrity_register +EXPORT_SYMBOL vmlinux 0x976e700f down_trylock +EXPORT_SYMBOL vmlinux 0x97863a9f posix_acl_to_xattr +EXPORT_SYMBOL vmlinux 0x978a397b xfrm4_rcv_encap +EXPORT_SYMBOL vmlinux 0x978db8ca deactivate_super +EXPORT_SYMBOL vmlinux 0x978fc5a4 free_user_ns +EXPORT_SYMBOL vmlinux 0x9793c93a dispc_mgr_setup +EXPORT_SYMBOL vmlinux 0x97999817 rfkill_set_hw_state +EXPORT_SYMBOL vmlinux 0x97a0ffc5 fsnotify_put_mark +EXPORT_SYMBOL vmlinux 0x97a3ad5c __module_put_and_exit +EXPORT_SYMBOL vmlinux 0x97ad8ad6 padata_add_cpu +EXPORT_SYMBOL vmlinux 0x97b71455 put_disk +EXPORT_SYMBOL vmlinux 0x97ec26ae kset_register +EXPORT_SYMBOL vmlinux 0x97f7d5c2 of_translate_dma_address +EXPORT_SYMBOL vmlinux 0x97f99fd4 dispc_ovl_setup +EXPORT_SYMBOL vmlinux 0x97fac4b5 touch_buffer +EXPORT_SYMBOL vmlinux 0x98082893 __copy_to_user +EXPORT_SYMBOL vmlinux 0x981b7d81 scsi_report_bus_reset +EXPORT_SYMBOL vmlinux 0x981fc934 snd_pcm_suspend +EXPORT_SYMBOL vmlinux 0x9820b644 warn_slowpath_fmt_taint +EXPORT_SYMBOL vmlinux 0x98351a4b __f_setown +EXPORT_SYMBOL vmlinux 0x985e466a __blk_end_request +EXPORT_SYMBOL vmlinux 0x9868630b xfrm6_rcv +EXPORT_SYMBOL vmlinux 0x986e6135 fb_pad_unaligned_buffer +EXPORT_SYMBOL vmlinux 0x9871b9c9 pm860x_page_reg_write +EXPORT_SYMBOL vmlinux 0x9872fa4d blk_queue_max_write_same_sectors +EXPORT_SYMBOL vmlinux 0x987c11c7 __pv_phys_pfn_offset +EXPORT_SYMBOL vmlinux 0x989ccc01 dev_set_allmulti +EXPORT_SYMBOL vmlinux 0x989d4b5d nf_log_unbind_pf +EXPORT_SYMBOL vmlinux 0x98b47c44 __blkdev_reread_part +EXPORT_SYMBOL vmlinux 0x98d6f7fd snd_pcm_lib_free_pages +EXPORT_SYMBOL vmlinux 0x98e68eca cancel_delayed_work +EXPORT_SYMBOL vmlinux 0x98ead04d mfd_cell_enable +EXPORT_SYMBOL vmlinux 0x98ef8991 input_mt_get_slot_by_key +EXPORT_SYMBOL vmlinux 0x9918804b migrate_page +EXPORT_SYMBOL vmlinux 0x9939eba0 backlight_unregister_notifier +EXPORT_SYMBOL vmlinux 0x99517682 udp_encap_enable +EXPORT_SYMBOL vmlinux 0x99572570 update_region +EXPORT_SYMBOL vmlinux 0x99591a7a ipv6_ext_hdr +EXPORT_SYMBOL vmlinux 0x995bf28c __nla_reserve_nohdr +EXPORT_SYMBOL vmlinux 0x995f8069 mmc_gpio_request_cd +EXPORT_SYMBOL vmlinux 0x996c4d30 proc_dointvec_ms_jiffies +EXPORT_SYMBOL vmlinux 0x997108c1 tcf_unregister_action +EXPORT_SYMBOL vmlinux 0x99799f1f ppp_unit_number +EXPORT_SYMBOL vmlinux 0x9983e05e sync_inode +EXPORT_SYMBOL vmlinux 0x9994c0ca ps2_is_keyboard_id +EXPORT_SYMBOL vmlinux 0x999e8297 vfree +EXPORT_SYMBOL vmlinux 0x99b349e4 bio_copy_data +EXPORT_SYMBOL vmlinux 0x99bb8806 memmove +EXPORT_SYMBOL vmlinux 0x99c95fa5 unregister_sound_special +EXPORT_SYMBOL vmlinux 0x99cdc86b sysctl_tcp_reordering +EXPORT_SYMBOL vmlinux 0x99e3e2b9 stop_tty +EXPORT_SYMBOL vmlinux 0x99eadda1 iterate_dir +EXPORT_SYMBOL vmlinux 0x99ec053a remove_proc_entry +EXPORT_SYMBOL vmlinux 0x99f58330 lg_local_lock_cpu +EXPORT_SYMBOL vmlinux 0x9a1dfd65 strpbrk +EXPORT_SYMBOL vmlinux 0x9a1fc4b4 jiffies_to_timeval +EXPORT_SYMBOL vmlinux 0x9a24793d pcim_iounmap_regions +EXPORT_SYMBOL vmlinux 0x9a32d065 uart_update_timeout +EXPORT_SYMBOL vmlinux 0x9a332d6f of_mdio_parse_addr +EXPORT_SYMBOL vmlinux 0x9a42c141 cros_ec_prepare_tx +EXPORT_SYMBOL vmlinux 0x9a444b9c csum_and_copy_to_iter +EXPORT_SYMBOL vmlinux 0x9a623142 ida_get_new_above +EXPORT_SYMBOL vmlinux 0x9a765c04 skb_vlan_push +EXPORT_SYMBOL vmlinux 0x9a774cfd call_usermodehelper_exec +EXPORT_SYMBOL vmlinux 0x9a8318ef v7_coherent_kern_range +EXPORT_SYMBOL vmlinux 0x9abed4d5 netdev_has_upper_dev +EXPORT_SYMBOL vmlinux 0x9acbd118 sock_recvmsg +EXPORT_SYMBOL vmlinux 0x9ad0f48c lru_cache_add_file +EXPORT_SYMBOL vmlinux 0x9aeb07e8 vme_lm_attach +EXPORT_SYMBOL vmlinux 0x9b233ef4 tty_port_close_start +EXPORT_SYMBOL vmlinux 0x9b327578 simple_transaction_read +EXPORT_SYMBOL vmlinux 0x9b33e0d7 unregister_dcbevent_notifier +EXPORT_SYMBOL vmlinux 0x9b388444 get_zeroed_page +EXPORT_SYMBOL vmlinux 0x9b38dc30 i2c_put_adapter +EXPORT_SYMBOL vmlinux 0x9b3c7e21 page_address +EXPORT_SYMBOL vmlinux 0x9b478907 locks_mandatory_area +EXPORT_SYMBOL vmlinux 0x9b588a0a blk_rq_map_sg +EXPORT_SYMBOL vmlinux 0x9b606d08 proc_mkdir_mode +EXPORT_SYMBOL vmlinux 0x9b6eb137 ksize +EXPORT_SYMBOL vmlinux 0x9b7de693 sock_kfree_s +EXPORT_SYMBOL vmlinux 0x9b87be45 sk_stream_wait_memory +EXPORT_SYMBOL vmlinux 0x9b88d16e dentry_open +EXPORT_SYMBOL vmlinux 0x9b933d34 i2c_get_adapter +EXPORT_SYMBOL vmlinux 0x9b9c4cbf filp_open +EXPORT_SYMBOL vmlinux 0x9b9e05f9 alloc_cpu_rmap +EXPORT_SYMBOL vmlinux 0x9ba6c49a security_path_chmod +EXPORT_SYMBOL vmlinux 0x9ba7089d argv_split +EXPORT_SYMBOL vmlinux 0x9bbe88b3 flex_array_put +EXPORT_SYMBOL vmlinux 0x9bc6126a param_get_byte +EXPORT_SYMBOL vmlinux 0x9be7bde4 security_tun_dev_attach +EXPORT_SYMBOL vmlinux 0x9be8a2fe arp_create +EXPORT_SYMBOL vmlinux 0x9bea4e9a genphy_setup_forced +EXPORT_SYMBOL vmlinux 0x9bf16f4c uart_unregister_driver +EXPORT_SYMBOL vmlinux 0x9c0bd51f _raw_spin_lock +EXPORT_SYMBOL vmlinux 0x9c20473f sb_min_blocksize +EXPORT_SYMBOL vmlinux 0x9c412ed7 inet6_add_offload +EXPORT_SYMBOL vmlinux 0x9c4195f5 vlan_vid_add +EXPORT_SYMBOL vmlinux 0x9c491f60 sg_alloc_table +EXPORT_SYMBOL vmlinux 0x9c5a5557 uart_suspend_port +EXPORT_SYMBOL vmlinux 0x9c7f0db3 qcom_scm_set_warm_boot_addr +EXPORT_SYMBOL vmlinux 0x9c97082e edma_pause +EXPORT_SYMBOL vmlinux 0x9c9ec2a0 proc_dointvec_minmax +EXPORT_SYMBOL vmlinux 0x9ca66f9c ethtool_op_get_ts_info +EXPORT_SYMBOL vmlinux 0x9ca78173 __devcgroup_inode_permission +EXPORT_SYMBOL vmlinux 0x9cab34a6 rfkill_set_led_trigger_name +EXPORT_SYMBOL vmlinux 0x9cba3c37 _raw_read_unlock_irqrestore +EXPORT_SYMBOL vmlinux 0x9ce76ee0 pci_disable_link_state +EXPORT_SYMBOL vmlinux 0x9ce8b438 set_bh_page +EXPORT_SYMBOL vmlinux 0x9d0d6206 unregister_netdevice_notifier +EXPORT_SYMBOL vmlinux 0x9d25d7f8 scsi_host_alloc +EXPORT_SYMBOL vmlinux 0x9d3aa376 blk_iopoll_init +EXPORT_SYMBOL vmlinux 0x9d64087b blk_mq_can_queue +EXPORT_SYMBOL vmlinux 0x9d669763 memcpy +EXPORT_SYMBOL vmlinux 0x9d6aa3c3 security_old_inode_init_security +EXPORT_SYMBOL vmlinux 0x9d959376 security_inode_getsecctx +EXPORT_SYMBOL vmlinux 0x9d9b737d mipi_dsi_dcs_read +EXPORT_SYMBOL vmlinux 0x9db9032c snd_dma_free_pages +EXPORT_SYMBOL vmlinux 0x9dd676c8 filemap_fault +EXPORT_SYMBOL vmlinux 0x9df88d25 vfs_getattr +EXPORT_SYMBOL vmlinux 0x9dfe7307 lz4_decompress_unknownoutputsize +EXPORT_SYMBOL vmlinux 0x9e03ba02 of_find_matching_node_and_match +EXPORT_SYMBOL vmlinux 0x9e0b2d33 sg_miter_next +EXPORT_SYMBOL vmlinux 0x9e0c711d vzalloc_node +EXPORT_SYMBOL vmlinux 0x9e22097a fence_enable_sw_signaling +EXPORT_SYMBOL vmlinux 0x9e32acb0 check_disk_size_change +EXPORT_SYMBOL vmlinux 0x9e32acd8 phy_ethtool_set_eee +EXPORT_SYMBOL vmlinux 0x9e4faeef dm_io_client_destroy +EXPORT_SYMBOL vmlinux 0x9e5284af cdev_alloc +EXPORT_SYMBOL vmlinux 0x9e61bb05 set_freezable +EXPORT_SYMBOL vmlinux 0x9e6d79f8 snd_info_get_str +EXPORT_SYMBOL vmlinux 0x9e763530 reciprocal_value +EXPORT_SYMBOL vmlinux 0x9e99fb54 mipi_dsi_attach +EXPORT_SYMBOL vmlinux 0x9e9d982a security_inode_permission +EXPORT_SYMBOL vmlinux 0x9eba56c5 nand_scan_bbt +EXPORT_SYMBOL vmlinux 0x9ebd4c04 adjust_resource +EXPORT_SYMBOL vmlinux 0x9ebf70d5 tty_driver_flush_buffer +EXPORT_SYMBOL vmlinux 0x9ee36cae jbd2__journal_start +EXPORT_SYMBOL vmlinux 0x9f05fa08 bio_chain +EXPORT_SYMBOL vmlinux 0x9f0ad95d __devm_gpiod_get_index +EXPORT_SYMBOL vmlinux 0x9f0f8d83 from_kuid +EXPORT_SYMBOL vmlinux 0x9f196150 swiotlb_dma_supported +EXPORT_SYMBOL vmlinux 0x9f24b6b8 scsi_scan_host +EXPORT_SYMBOL vmlinux 0x9f3734fe generic_write_checks +EXPORT_SYMBOL vmlinux 0x9f3a72e4 tcp_init_sock +EXPORT_SYMBOL vmlinux 0x9f4042d8 path_get +EXPORT_SYMBOL vmlinux 0x9f46ced8 __sw_hweight64 +EXPORT_SYMBOL vmlinux 0x9f53b4ae simple_dir_operations +EXPORT_SYMBOL vmlinux 0x9f7082b1 inet_recvmsg +EXPORT_SYMBOL vmlinux 0x9f823cea dispc_mgr_is_enabled +EXPORT_SYMBOL vmlinux 0x9f984513 strrchr +EXPORT_SYMBOL vmlinux 0x9fa8c608 vm_insert_mixed +EXPORT_SYMBOL vmlinux 0x9fc439df jbd2_journal_dirty_metadata +EXPORT_SYMBOL vmlinux 0x9fd7cda1 flex_array_prealloc +EXPORT_SYMBOL vmlinux 0x9fdecc31 unregister_netdevice_many +EXPORT_SYMBOL vmlinux 0x9feb6a73 md_error +EXPORT_SYMBOL vmlinux 0x9ff0e868 commit_creds +EXPORT_SYMBOL vmlinux 0x9ffa3a75 netdev_max_backlog +EXPORT_SYMBOL vmlinux 0xa00ecd8b blk_queue_max_hw_sectors +EXPORT_SYMBOL vmlinux 0xa01612a8 of_find_backlight_by_node +EXPORT_SYMBOL vmlinux 0xa02c6c96 snd_ctl_remove +EXPORT_SYMBOL vmlinux 0xa037e2e8 tso_build_data +EXPORT_SYMBOL vmlinux 0xa03eeab1 tty_driver_kref_put +EXPORT_SYMBOL vmlinux 0xa0436e98 in6addr_linklocal_allnodes +EXPORT_SYMBOL vmlinux 0xa047b62f param_ops_long +EXPORT_SYMBOL vmlinux 0xa04a01bd qdisc_class_hash_insert +EXPORT_SYMBOL vmlinux 0xa05591ca fixed_size_llseek +EXPORT_SYMBOL vmlinux 0xa058b66a skb_clone_sk +EXPORT_SYMBOL vmlinux 0xa05c03df mempool_kmalloc +EXPORT_SYMBOL vmlinux 0xa06df9e1 __kfifo_dma_out_finish_r +EXPORT_SYMBOL vmlinux 0xa07ed110 xz_dec_init +EXPORT_SYMBOL vmlinux 0xa084749a __bitmap_or +EXPORT_SYMBOL vmlinux 0xa0936772 scsi_get_device_flags_keyed +EXPORT_SYMBOL vmlinux 0xa09ea822 vfs_statfs +EXPORT_SYMBOL vmlinux 0xa0a0ba1d netdev_upper_dev_link +EXPORT_SYMBOL vmlinux 0xa0abf294 jbd2_journal_invalidatepage +EXPORT_SYMBOL vmlinux 0xa0b04675 vmalloc_32 +EXPORT_SYMBOL vmlinux 0xa0b7fb87 kmem_cache_alloc +EXPORT_SYMBOL vmlinux 0xa0beaf86 down_write +EXPORT_SYMBOL vmlinux 0xa0c1d7ab security_path_symlink +EXPORT_SYMBOL vmlinux 0xa0ce5ade bfifo_qdisc_ops +EXPORT_SYMBOL vmlinux 0xa0d8316e msm_pinctrl_probe +EXPORT_SYMBOL vmlinux 0xa0dad88e netdev_adjacent_get_private +EXPORT_SYMBOL vmlinux 0xa0ebd14c sysctl_tcp_mem +EXPORT_SYMBOL vmlinux 0xa0fbac79 wake_up_bit +EXPORT_SYMBOL vmlinux 0xa0fd2427 snd_pci_quirk_lookup_id +EXPORT_SYMBOL vmlinux 0xa108eb4d sysctl_optmem_max +EXPORT_SYMBOL vmlinux 0xa10b22e6 pci_bus_alloc_resource +EXPORT_SYMBOL vmlinux 0xa120d33c tty_unregister_ldisc +EXPORT_SYMBOL vmlinux 0xa1415618 twl6030_interrupt_unmask +EXPORT_SYMBOL vmlinux 0xa14b3f5d flex_array_free_parts +EXPORT_SYMBOL vmlinux 0xa14d111f dquot_commit_info +EXPORT_SYMBOL vmlinux 0xa14f3d8c ewma_add +EXPORT_SYMBOL vmlinux 0xa165ca68 mmc_get_card +EXPORT_SYMBOL vmlinux 0xa16706a3 __netdev_alloc_skb +EXPORT_SYMBOL vmlinux 0xa173952d con_is_bound +EXPORT_SYMBOL vmlinux 0xa185c873 phy_print_status +EXPORT_SYMBOL vmlinux 0xa18ce551 tcp_rtx_synack +EXPORT_SYMBOL vmlinux 0xa192813b idr_for_each +EXPORT_SYMBOL vmlinux 0xa1a68aa8 qdisc_watchdog_schedule_ns +EXPORT_SYMBOL vmlinux 0xa1b16993 crypto_sha1_finup +EXPORT_SYMBOL vmlinux 0xa1b759ce fb_add_videomode +EXPORT_SYMBOL vmlinux 0xa1be8dbb bioset_create_nobvec +EXPORT_SYMBOL vmlinux 0xa1c208c4 tcp_getsockopt +EXPORT_SYMBOL vmlinux 0xa1c76e0a _cond_resched +EXPORT_SYMBOL vmlinux 0xa1cfb183 xfrm_spd_getinfo +EXPORT_SYMBOL vmlinux 0xa1d3e33f blk_queue_invalidate_tags +EXPORT_SYMBOL vmlinux 0xa1d55e90 _raw_spin_lock_bh +EXPORT_SYMBOL vmlinux 0xa1d7b48c alloc_file +EXPORT_SYMBOL vmlinux 0xa1f0ebea bit_waitqueue +EXPORT_SYMBOL vmlinux 0xa206c8ec mpage_readpages +EXPORT_SYMBOL vmlinux 0xa209451c bitmap_fold +EXPORT_SYMBOL vmlinux 0xa2112447 blk_post_runtime_suspend +EXPORT_SYMBOL vmlinux 0xa21bb277 dev_getbyhwaddr_rcu +EXPORT_SYMBOL vmlinux 0xa21dd050 tcp_sendpage +EXPORT_SYMBOL vmlinux 0xa236e417 pm_vt_switch_required +EXPORT_SYMBOL vmlinux 0xa2643c3a param_ops_ushort +EXPORT_SYMBOL vmlinux 0xa2783248 clear_inode +EXPORT_SYMBOL vmlinux 0xa2848c50 ecryptfs_get_auth_tok_key +EXPORT_SYMBOL vmlinux 0xa2a0eae7 cdrom_get_media_event +EXPORT_SYMBOL vmlinux 0xa2b071ab vfs_read +EXPORT_SYMBOL vmlinux 0xa2d59b1b tcp_try_fastopen +EXPORT_SYMBOL vmlinux 0xa2e801e0 __skb_warn_lro_forwarding +EXPORT_SYMBOL vmlinux 0xa30076ab cdrom_open +EXPORT_SYMBOL vmlinux 0xa31bdf07 vme_master_set +EXPORT_SYMBOL vmlinux 0xa31e44ba edma_free_channel +EXPORT_SYMBOL vmlinux 0xa3243e74 proc_create_data +EXPORT_SYMBOL vmlinux 0xa336feb7 nand_manuf_ids +EXPORT_SYMBOL vmlinux 0xa3534fa6 tty_port_init +EXPORT_SYMBOL vmlinux 0xa35444e4 dispc_write_irqenable +EXPORT_SYMBOL vmlinux 0xa3690e94 tcp_check_req +EXPORT_SYMBOL vmlinux 0xa3768c79 dquot_claim_space_nodirty +EXPORT_SYMBOL vmlinux 0xa37e78b6 flex_array_get +EXPORT_SYMBOL vmlinux 0xa381944f dql_reset +EXPORT_SYMBOL vmlinux 0xa3934a74 cdrom_check_events +EXPORT_SYMBOL vmlinux 0xa39851b6 to_ndd +EXPORT_SYMBOL vmlinux 0xa39a123a fence_add_callback +EXPORT_SYMBOL vmlinux 0xa3a0bf47 thaw_super +EXPORT_SYMBOL vmlinux 0xa3b55c84 inode_change_ok +EXPORT_SYMBOL vmlinux 0xa3bf5176 do_SAK +EXPORT_SYMBOL vmlinux 0xa3c55a01 inet6_unregister_icmp_sender +EXPORT_SYMBOL vmlinux 0xa414882d add_wait_queue_exclusive +EXPORT_SYMBOL vmlinux 0xa4359c60 of_find_i2c_device_by_node +EXPORT_SYMBOL vmlinux 0xa43b1297 vscnprintf +EXPORT_SYMBOL vmlinux 0xa4610bc6 omap_rev +EXPORT_SYMBOL vmlinux 0xa4701e9e timekeeping_inject_offset +EXPORT_SYMBOL vmlinux 0xa470a8d2 of_device_is_compatible +EXPORT_SYMBOL vmlinux 0xa48f5b09 omap_dma_set_global_params +EXPORT_SYMBOL vmlinux 0xa491ce09 __skb_get_hash +EXPORT_SYMBOL vmlinux 0xa4939e9b netdev_change_features +EXPORT_SYMBOL vmlinux 0xa4b42c55 omap_set_dma_priority +EXPORT_SYMBOL vmlinux 0xa4b45ea5 out_of_line_wait_on_bit_lock +EXPORT_SYMBOL vmlinux 0xa4c281f1 generic_listxattr +EXPORT_SYMBOL vmlinux 0xa4dfb11d md_reap_sync_thread +EXPORT_SYMBOL vmlinux 0xa4e48f3c find_get_pages_contig +EXPORT_SYMBOL vmlinux 0xa4fc8dbd prepare_binprm +EXPORT_SYMBOL vmlinux 0xa5112d43 block_write_begin +EXPORT_SYMBOL vmlinux 0xa523799b inet_frag_kill +EXPORT_SYMBOL vmlinux 0xa544d85f set_wb_congested +EXPORT_SYMBOL vmlinux 0xa5526619 rb_insert_color +EXPORT_SYMBOL vmlinux 0xa5740fd0 iov_iter_fault_in_readable +EXPORT_SYMBOL vmlinux 0xa58fea9d mempool_destroy +EXPORT_SYMBOL vmlinux 0xa590820d simple_open +EXPORT_SYMBOL vmlinux 0xa598e29c vesa_modes +EXPORT_SYMBOL vmlinux 0xa59c181a of_get_address +EXPORT_SYMBOL vmlinux 0xa5a9a4b4 unlock_buffer +EXPORT_SYMBOL vmlinux 0xa5d81fdd tty_port_hangup +EXPORT_SYMBOL vmlinux 0xa5dc5446 tty_do_resize +EXPORT_SYMBOL vmlinux 0xa5df4f04 sock_kmalloc +EXPORT_SYMBOL vmlinux 0xa5f69f45 nand_bch_correct_data +EXPORT_SYMBOL vmlinux 0xa60ecf6c snd_timer_close +EXPORT_SYMBOL vmlinux 0xa613321a tcp_v4_send_check +EXPORT_SYMBOL vmlinux 0xa61aa028 snd_pcm_format_unsigned +EXPORT_SYMBOL vmlinux 0xa61e4362 omap_request_dma +EXPORT_SYMBOL vmlinux 0xa635bb01 snd_timer_global_free +EXPORT_SYMBOL vmlinux 0xa63d85ab slhc_remember +EXPORT_SYMBOL vmlinux 0xa641cf62 dev_mc_del_global +EXPORT_SYMBOL vmlinux 0xa6469ade tty_kref_put +EXPORT_SYMBOL vmlinux 0xa6574e28 pci_bus_put +EXPORT_SYMBOL vmlinux 0xa67374f0 __percpu_counter_compare +EXPORT_SYMBOL vmlinux 0xa675804c utf8s_to_utf16s +EXPORT_SYMBOL vmlinux 0xa681fe88 generate_random_uuid +EXPORT_SYMBOL vmlinux 0xa6831a90 snd_pcm_notify +EXPORT_SYMBOL vmlinux 0xa695eed8 __devm_gpiod_get_optional +EXPORT_SYMBOL vmlinux 0xa6970398 __kfifo_to_user_r +EXPORT_SYMBOL vmlinux 0xa69cb0b0 __pagevec_lru_add +EXPORT_SYMBOL vmlinux 0xa6af933a of_get_child_by_name +EXPORT_SYMBOL vmlinux 0xa6bab23d dqstats +EXPORT_SYMBOL vmlinux 0xa6ffec60 woken_wake_function +EXPORT_SYMBOL vmlinux 0xa7067e01 tcp_md5_hash_header +EXPORT_SYMBOL vmlinux 0xa734a3e9 abort_exclusive_wait +EXPORT_SYMBOL vmlinux 0xa735db59 prandom_u32 +EXPORT_SYMBOL vmlinux 0xa7590254 skb_checksum +EXPORT_SYMBOL vmlinux 0xa759f2c1 param_ops_string +EXPORT_SYMBOL vmlinux 0xa7634725 of_gpio_simple_xlate +EXPORT_SYMBOL vmlinux 0xa76b48e2 pci_claim_resource +EXPORT_SYMBOL vmlinux 0xa77884f2 writeback_inodes_sb +EXPORT_SYMBOL vmlinux 0xa77fe5d8 snd_device_new +EXPORT_SYMBOL vmlinux 0xa78a0d9c __cleancache_invalidate_inode +EXPORT_SYMBOL vmlinux 0xa78ad4c7 bitmap_cond_end_sync +EXPORT_SYMBOL vmlinux 0xa796f9c0 tty_schedule_flip +EXPORT_SYMBOL vmlinux 0xa7a295fc cleancache_register_ops +EXPORT_SYMBOL vmlinux 0xa7b51014 tty_unregister_driver +EXPORT_SYMBOL vmlinux 0xa7f0b70a dst_cow_metrics_generic +EXPORT_SYMBOL vmlinux 0xa82196f9 skb_copy_datagram_iter +EXPORT_SYMBOL vmlinux 0xa8232c78 strtobool +EXPORT_SYMBOL vmlinux 0xa8282764 devm_release_resource +EXPORT_SYMBOL vmlinux 0xa843805a get_unused_fd_flags +EXPORT_SYMBOL vmlinux 0xa8495e61 xfrm_init_state +EXPORT_SYMBOL vmlinux 0xa85425b8 eth_gro_complete +EXPORT_SYMBOL vmlinux 0xa86b0d21 seq_puts +EXPORT_SYMBOL vmlinux 0xa86c760f __blk_end_request_cur +EXPORT_SYMBOL vmlinux 0xa870fce3 key_invalidate +EXPORT_SYMBOL vmlinux 0xa8721b97 system_state +EXPORT_SYMBOL vmlinux 0xa87a7df5 tcp_v4_md5_hash_skb +EXPORT_SYMBOL vmlinux 0xa89e4091 __nd_driver_register +EXPORT_SYMBOL vmlinux 0xa8a0fa72 sock_common_recvmsg +EXPORT_SYMBOL vmlinux 0xa8a8110c kernel_neon_end +EXPORT_SYMBOL vmlinux 0xa8c096ef alloc_disk +EXPORT_SYMBOL vmlinux 0xa8ea995d remove_proc_subtree +EXPORT_SYMBOL vmlinux 0xa8fef7bb security_unix_may_send +EXPORT_SYMBOL vmlinux 0xa90eb8a4 ipv4_specific +EXPORT_SYMBOL vmlinux 0xa9168676 xmit_recursion +EXPORT_SYMBOL vmlinux 0xa94ffda3 nosteal_pipe_buf_ops +EXPORT_SYMBOL vmlinux 0xa950c9aa pci_bus_add_devices +EXPORT_SYMBOL vmlinux 0xa95e19b8 kernel_setsockopt +EXPORT_SYMBOL vmlinux 0xa964dd13 gpmc_cs_request +EXPORT_SYMBOL vmlinux 0xa96d7948 inet_csk_init_xmit_timers +EXPORT_SYMBOL vmlinux 0xa976957d bitmap_remap +EXPORT_SYMBOL vmlinux 0xa9ad8f62 kern_path_create +EXPORT_SYMBOL vmlinux 0xa9b19d9f flush_old_exec +EXPORT_SYMBOL vmlinux 0xa9b9cf8e inet_csk_reqsk_queue_drop +EXPORT_SYMBOL vmlinux 0xa9bfb4fe __qdisc_calculate_pkt_len +EXPORT_SYMBOL vmlinux 0xa9c3443c add_random_ready_callback +EXPORT_SYMBOL vmlinux 0xa9c63b69 security_xfrm_policy_free +EXPORT_SYMBOL vmlinux 0xa9c75b90 request_firmware +EXPORT_SYMBOL vmlinux 0xa9d24a2d qdisc_list_del +EXPORT_SYMBOL vmlinux 0xa9d2f3f7 lockref_get_not_dead +EXPORT_SYMBOL vmlinux 0xaa0474aa truncate_inode_pages_final +EXPORT_SYMBOL vmlinux 0xaa070e0f dentry_needs_remove_privs +EXPORT_SYMBOL vmlinux 0xaa1de2f4 mdiobus_write +EXPORT_SYMBOL vmlinux 0xaa230a18 pcie_port_service_unregister +EXPORT_SYMBOL vmlinux 0xaa3c116d kill_fasync +EXPORT_SYMBOL vmlinux 0xaa43b50f sget +EXPORT_SYMBOL vmlinux 0xaa4cddcf dcache_dir_close +EXPORT_SYMBOL vmlinux 0xaa677d4c of_root +EXPORT_SYMBOL vmlinux 0xaa6901ac __kfifo_out_r +EXPORT_SYMBOL vmlinux 0xaa6f23ad rfkill_get_led_trigger_name +EXPORT_SYMBOL vmlinux 0xaa766245 phy_start +EXPORT_SYMBOL vmlinux 0xaa807f57 write_cache_pages +EXPORT_SYMBOL vmlinux 0xaa8720c7 blk_integrity_unregister +EXPORT_SYMBOL vmlinux 0xaa8ccafe sockfd_lookup +EXPORT_SYMBOL vmlinux 0xaa994bc6 iommu_tbl_range_alloc +EXPORT_SYMBOL vmlinux 0xaaaac2e2 inode_init_owner +EXPORT_SYMBOL vmlinux 0xaab09dae fib_default_rule_add +EXPORT_SYMBOL vmlinux 0xaad0ae78 __bitmap_shift_right +EXPORT_SYMBOL vmlinux 0xaad6d92f rfkill_init_sw_state +EXPORT_SYMBOL vmlinux 0xaadc0a1d neigh_update +EXPORT_SYMBOL vmlinux 0xaaf8e26e kfree_skb_list +EXPORT_SYMBOL vmlinux 0xaafb7a8c sk_alloc +EXPORT_SYMBOL vmlinux 0xaafdc258 strcasecmp +EXPORT_SYMBOL vmlinux 0xab468f44 netdev_lower_get_next_private_rcu +EXPORT_SYMBOL vmlinux 0xab4e3521 ac97_bus_type +EXPORT_SYMBOL vmlinux 0xab600421 probe_irq_off +EXPORT_SYMBOL vmlinux 0xab694444 bsearch +EXPORT_SYMBOL vmlinux 0xab6bde28 sysctl_max_syn_backlog +EXPORT_SYMBOL vmlinux 0xab71d339 param_get_charp +EXPORT_SYMBOL vmlinux 0xab780801 tcp_get_cookie_sock +EXPORT_SYMBOL vmlinux 0xab781570 fb_get_options +EXPORT_SYMBOL vmlinux 0xab80f257 scsi_target_resume +EXPORT_SYMBOL vmlinux 0xab972ed5 padata_start +EXPORT_SYMBOL vmlinux 0xab9e32cc scsi_host_set_state +EXPORT_SYMBOL vmlinux 0xaba3ad0c radix_tree_gang_lookup_tag +EXPORT_SYMBOL vmlinux 0xabba3471 i2c_verify_client +EXPORT_SYMBOL vmlinux 0xabbdf957 amba_release_regions +EXPORT_SYMBOL vmlinux 0xabbff366 __bforget +EXPORT_SYMBOL vmlinux 0xabc6dd63 cpufreq_sysfs_create_file +EXPORT_SYMBOL vmlinux 0xabcaa577 free_anon_bdev +EXPORT_SYMBOL vmlinux 0xabd58b4e inet6_register_icmp_sender +EXPORT_SYMBOL vmlinux 0xabd68991 inet_csk_delete_keepalive_timer +EXPORT_SYMBOL vmlinux 0xabef0bcc mb_cache_entry_alloc +EXPORT_SYMBOL vmlinux 0xabf3d1e8 put_page +EXPORT_SYMBOL vmlinux 0xabfc8738 genphy_resume +EXPORT_SYMBOL vmlinux 0xabfcb4c3 flush_delayed_work +EXPORT_SYMBOL vmlinux 0xabff8628 pci_scan_single_device +EXPORT_SYMBOL vmlinux 0xac035f3f ps2_end_command +EXPORT_SYMBOL vmlinux 0xac04b658 open_check_o_direct +EXPORT_SYMBOL vmlinux 0xac0ba8c1 blk_iopoll_disable +EXPORT_SYMBOL vmlinux 0xac1a55be unregister_reboot_notifier +EXPORT_SYMBOL vmlinux 0xac1de21d dm_put_table_device +EXPORT_SYMBOL vmlinux 0xac390091 dev_base_lock +EXPORT_SYMBOL vmlinux 0xac398912 flex_array_clear +EXPORT_SYMBOL vmlinux 0xac484904 dev_addr_flush +EXPORT_SYMBOL vmlinux 0xac4cfd82 pci_assign_resource +EXPORT_SYMBOL vmlinux 0xac8b9842 ipv6_chk_prefix +EXPORT_SYMBOL vmlinux 0xac918019 skb_checksum_setup +EXPORT_SYMBOL vmlinux 0xaca0b97a get_tz_trend +EXPORT_SYMBOL vmlinux 0xaca25551 blk_rq_map_user_iov +EXPORT_SYMBOL vmlinux 0xaca77962 vfs_fsync_range +EXPORT_SYMBOL vmlinux 0xacab29b7 seq_hlist_start_percpu +EXPORT_SYMBOL vmlinux 0xacb8ae0a key_alloc +EXPORT_SYMBOL vmlinux 0xacc1a34d proc_remove +EXPORT_SYMBOL vmlinux 0xaccabc6a in4_pton +EXPORT_SYMBOL vmlinux 0xacd81eb3 jbd2_inode_cache +EXPORT_SYMBOL vmlinux 0xacd83b28 nd_iostat_end +EXPORT_SYMBOL vmlinux 0xacf4d843 match_strdup +EXPORT_SYMBOL vmlinux 0xacf8a72e mb_cache_entry_insert +EXPORT_SYMBOL vmlinux 0xad0038e2 elevator_exit +EXPORT_SYMBOL vmlinux 0xad0413d4 match_hex +EXPORT_SYMBOL vmlinux 0xad165779 nobh_truncate_page +EXPORT_SYMBOL vmlinux 0xad36a2d7 request_key_async_with_auxdata +EXPORT_SYMBOL vmlinux 0xad3b597f datagram_poll +EXPORT_SYMBOL vmlinux 0xad512b6f snd_pcm_release_substream +EXPORT_SYMBOL vmlinux 0xad52723f skb_vlan_pop +EXPORT_SYMBOL vmlinux 0xad574d3d napi_disable +EXPORT_SYMBOL vmlinux 0xad5be8ca dcb_setapp +EXPORT_SYMBOL vmlinux 0xad5e1158 devm_request_threaded_irq +EXPORT_SYMBOL vmlinux 0xad5f05ae amba_driver_unregister +EXPORT_SYMBOL vmlinux 0xad614964 blk_delay_queue +EXPORT_SYMBOL vmlinux 0xad683c97 udp_add_offload +EXPORT_SYMBOL vmlinux 0xad779be9 sync_mapping_buffers +EXPORT_SYMBOL vmlinux 0xad824a5a blk_mq_tag_busy_iter +EXPORT_SYMBOL vmlinux 0xad84bef8 dm_table_event +EXPORT_SYMBOL vmlinux 0xad893eb9 netlink_broadcast_filtered +EXPORT_SYMBOL vmlinux 0xad925c3e generic_file_splice_read +EXPORT_SYMBOL vmlinux 0xada5c5ee set_security_override +EXPORT_SYMBOL vmlinux 0xadcc437c blk_get_request +EXPORT_SYMBOL vmlinux 0xadccd1f5 inode_newsize_ok +EXPORT_SYMBOL vmlinux 0xadcdab30 input_unregister_handle +EXPORT_SYMBOL vmlinux 0xadd47e82 kobject_del +EXPORT_SYMBOL vmlinux 0xade88e76 snd_malloc_pages +EXPORT_SYMBOL vmlinux 0xadfdfcef __bitmap_andnot +EXPORT_SYMBOL vmlinux 0xae182792 scsi_unblock_requests +EXPORT_SYMBOL vmlinux 0xae1a9bf4 md_wait_for_blocked_rdev +EXPORT_SYMBOL vmlinux 0xae2d4e48 dquot_drop +EXPORT_SYMBOL vmlinux 0xae3aee3e __get_user_pages_unlocked +EXPORT_SYMBOL vmlinux 0xae4855dc inet_csk_clear_xmit_timers +EXPORT_SYMBOL vmlinux 0xae49e588 gnet_stats_copy_app +EXPORT_SYMBOL vmlinux 0xae729e59 security_req_classify_flow +EXPORT_SYMBOL vmlinux 0xae77a595 radix_tree_gang_lookup_slot +EXPORT_SYMBOL vmlinux 0xae8186f4 snd_pcm_hw_constraint_ranges +EXPORT_SYMBOL vmlinux 0xae85a27e radix_tree_lookup +EXPORT_SYMBOL vmlinux 0xae86ccba file_remove_privs +EXPORT_SYMBOL vmlinux 0xae906708 tcp_proc_register +EXPORT_SYMBOL vmlinux 0xaeb15e3a block_commit_write +EXPORT_SYMBOL vmlinux 0xaec655c7 alloc_pages_exact +EXPORT_SYMBOL vmlinux 0xaecd1fb2 filemap_fdatawrite_range +EXPORT_SYMBOL vmlinux 0xaecd533e crypto_sha256_finup +EXPORT_SYMBOL vmlinux 0xaede2127 twl6040_set_pll +EXPORT_SYMBOL vmlinux 0xaeeb6205 set_disk_ro +EXPORT_SYMBOL vmlinux 0xaef45cd0 filemap_fdatawait +EXPORT_SYMBOL vmlinux 0xaf08f9e7 snd_ctl_new1 +EXPORT_SYMBOL vmlinux 0xaf319ee2 __devm_gpiod_get +EXPORT_SYMBOL vmlinux 0xaf3dd7dc scsi_logging_level +EXPORT_SYMBOL vmlinux 0xaf50e76d elf_set_personality +EXPORT_SYMBOL vmlinux 0xaf5e6ee6 phy_connect +EXPORT_SYMBOL vmlinux 0xaf84865e __get_user_8 +EXPORT_SYMBOL vmlinux 0xaf8aa518 system_rev +EXPORT_SYMBOL vmlinux 0xafb6fa1e snd_timer_global_register +EXPORT_SYMBOL vmlinux 0xafd4252a icmp_send +EXPORT_SYMBOL vmlinux 0xafd5381f ppp_dev_name +EXPORT_SYMBOL vmlinux 0xafd7fc7b unmap_mapping_range +EXPORT_SYMBOL vmlinux 0xafdd6908 pcie_set_readrq +EXPORT_SYMBOL vmlinux 0xaff5c449 abx500_startup_irq_enabled +EXPORT_SYMBOL vmlinux 0xaff6d0d4 posix_acl_chmod +EXPORT_SYMBOL vmlinux 0xb04cf0fe lg_local_unlock +EXPORT_SYMBOL vmlinux 0xb05fc310 sysctl_rmem_max +EXPORT_SYMBOL vmlinux 0xb066b530 iommu_tbl_pool_init +EXPORT_SYMBOL vmlinux 0xb06ac1c1 debugfs_create_automount +EXPORT_SYMBOL vmlinux 0xb0792f79 netlink_broadcast +EXPORT_SYMBOL vmlinux 0xb07b365a kmem_cache_free +EXPORT_SYMBOL vmlinux 0xb07c0dcc nvdimm_bus_lock +EXPORT_SYMBOL vmlinux 0xb0a0da0c rational_best_approximation +EXPORT_SYMBOL vmlinux 0xb0caab5f sk_stream_wait_close +EXPORT_SYMBOL vmlinux 0xb0e10781 get_option +EXPORT_SYMBOL vmlinux 0xb10c7b8a ip_route_input_noref +EXPORT_SYMBOL vmlinux 0xb111627f bio_phys_segments +EXPORT_SYMBOL vmlinux 0xb1158cec mmc_gpiod_request_ro +EXPORT_SYMBOL vmlinux 0xb121390a probe_irq_on +EXPORT_SYMBOL vmlinux 0xb125cd2b i2c_release_client +EXPORT_SYMBOL vmlinux 0xb12cbacb fb_unregister_client +EXPORT_SYMBOL vmlinux 0xb15b129c md_cluster_ops +EXPORT_SYMBOL vmlinux 0xb15cb614 security_xfrm_policy_alloc +EXPORT_SYMBOL vmlinux 0xb15cf825 of_platform_device_create +EXPORT_SYMBOL vmlinux 0xb1645a2e sg_free_table +EXPORT_SYMBOL vmlinux 0xb19b7b49 dev_uc_add_excl +EXPORT_SYMBOL vmlinux 0xb1a15a7f pci_bus_set_ops +EXPORT_SYMBOL vmlinux 0xb1ad28e0 __gnu_mcount_nc +EXPORT_SYMBOL vmlinux 0xb1b89f58 __tracepoint_kmem_cache_free +EXPORT_SYMBOL vmlinux 0xb1bf0387 remap_pfn_range +EXPORT_SYMBOL vmlinux 0xb1c3a01a oops_in_progress +EXPORT_SYMBOL vmlinux 0xb1cdcc17 tcp_openreq_init_rwin +EXPORT_SYMBOL vmlinux 0xb1cf44df fb_find_best_mode +EXPORT_SYMBOL vmlinux 0xb1d0c924 pci_alloc_dev +EXPORT_SYMBOL vmlinux 0xb1d9aabd lg_local_unlock_cpu +EXPORT_SYMBOL vmlinux 0xb1e62754 jbd2_journal_init_dev +EXPORT_SYMBOL vmlinux 0xb2166517 sk_dst_check +EXPORT_SYMBOL vmlinux 0xb21f83aa bdput +EXPORT_SYMBOL vmlinux 0xb2240877 audit_log_start +EXPORT_SYMBOL vmlinux 0xb22a5707 kunmap +EXPORT_SYMBOL vmlinux 0xb24a224d __xfrm_init_state +EXPORT_SYMBOL vmlinux 0xb24d0e1d deactivate_locked_super +EXPORT_SYMBOL vmlinux 0xb24dc8b0 dev_mc_add_global +EXPORT_SYMBOL vmlinux 0xb256d57c __inc_zone_page_state +EXPORT_SYMBOL vmlinux 0xb260d332 ps2_cmd_aborted +EXPORT_SYMBOL vmlinux 0xb260e635 seq_escape +EXPORT_SYMBOL vmlinux 0xb2682405 utf8_to_utf32 +EXPORT_SYMBOL vmlinux 0xb2a08bf9 tcp_get_md5sig_pool +EXPORT_SYMBOL vmlinux 0xb2a31534 register_sound_midi +EXPORT_SYMBOL vmlinux 0xb2be6e92 netdev_stats_to_stats64 +EXPORT_SYMBOL vmlinux 0xb2d48a2e queue_work_on +EXPORT_SYMBOL vmlinux 0xb2d4b1a8 arm_dma_zone_size +EXPORT_SYMBOL vmlinux 0xb2e5ae4a snd_lookup_minor_data +EXPORT_SYMBOL vmlinux 0xb303d2fe blk_queue_io_min +EXPORT_SYMBOL vmlinux 0xb317ab93 sdev_prefix_printk +EXPORT_SYMBOL vmlinux 0xb329e6a2 snd_card_file_remove +EXPORT_SYMBOL vmlinux 0xb32d7b7e radix_tree_tagged +EXPORT_SYMBOL vmlinux 0xb33c351f ioremap_cache +EXPORT_SYMBOL vmlinux 0xb35218a6 zerocopy_sg_from_iter +EXPORT_SYMBOL vmlinux 0xb369d622 input_grab_device +EXPORT_SYMBOL vmlinux 0xb371447f __inet_hash +EXPORT_SYMBOL vmlinux 0xb37c3693 devm_free_irq +EXPORT_SYMBOL vmlinux 0xb37fc1a2 security_inode_listsecurity +EXPORT_SYMBOL vmlinux 0xb38972e1 param_get_uint +EXPORT_SYMBOL vmlinux 0xb38a5c9d snd_component_add +EXPORT_SYMBOL vmlinux 0xb3ae5a8a __block_page_mkwrite +EXPORT_SYMBOL vmlinux 0xb3b173af disk_stack_limits +EXPORT_SYMBOL vmlinux 0xb3d2c76d scsi_hostbyte_string +EXPORT_SYMBOL vmlinux 0xb3d56553 __frontswap_test +EXPORT_SYMBOL vmlinux 0xb3d855d4 dentry_unhash +EXPORT_SYMBOL vmlinux 0xb3dcd4b2 mmc_erase +EXPORT_SYMBOL vmlinux 0xb3e0a724 key_type_keyring +EXPORT_SYMBOL vmlinux 0xb3f7646e kthread_should_stop +EXPORT_SYMBOL vmlinux 0xb3fce332 pps_register_source +EXPORT_SYMBOL vmlinux 0xb41ac3cd snd_ctl_remove_id +EXPORT_SYMBOL vmlinux 0xb423dba1 console_blanked +EXPORT_SYMBOL vmlinux 0xb42bc6a7 udp_seq_open +EXPORT_SYMBOL vmlinux 0xb42ef529 irq_set_chip +EXPORT_SYMBOL vmlinux 0xb4390f9a mcount +EXPORT_SYMBOL vmlinux 0xb43c1866 netdev_lower_get_next +EXPORT_SYMBOL vmlinux 0xb4519a8f string_escape_mem +EXPORT_SYMBOL vmlinux 0xb45447db __frontswap_store +EXPORT_SYMBOL vmlinux 0xb4709322 scsi_dev_info_add_list +EXPORT_SYMBOL vmlinux 0xb4726737 inet_listen +EXPORT_SYMBOL vmlinux 0xb48d65a2 register_filesystem +EXPORT_SYMBOL vmlinux 0xb4a5b739 jbd2_journal_get_undo_access +EXPORT_SYMBOL vmlinux 0xb4b491a3 bio_integrity_advance +EXPORT_SYMBOL vmlinux 0xb4b94377 __nand_correct_data +EXPORT_SYMBOL vmlinux 0xb4c81a38 serio_reconnect +EXPORT_SYMBOL vmlinux 0xb4e85ba0 blk_get_backing_dev_info +EXPORT_SYMBOL vmlinux 0xb4e8871b xfrm6_prepare_output +EXPORT_SYMBOL vmlinux 0xb4ecef54 nd_device_register +EXPORT_SYMBOL vmlinux 0xb4f002f3 kthread_bind +EXPORT_SYMBOL vmlinux 0xb506d318 dm_get_device +EXPORT_SYMBOL vmlinux 0xb50980ba ab3100_event_unregister +EXPORT_SYMBOL vmlinux 0xb515ae7a get_empty_filp +EXPORT_SYMBOL vmlinux 0xb5198b77 _raw_read_lock +EXPORT_SYMBOL vmlinux 0xb51bc58c kill_block_super +EXPORT_SYMBOL vmlinux 0xb5298cde ip6_dst_hoplimit +EXPORT_SYMBOL vmlinux 0xb538e646 fb_prepare_logo +EXPORT_SYMBOL vmlinux 0xb54c6824 dev_addr_add +EXPORT_SYMBOL vmlinux 0xb558838d tty_port_carrier_raised +EXPORT_SYMBOL vmlinux 0xb5598e53 send_sig +EXPORT_SYMBOL vmlinux 0xb5618514 ip6_find_1stfragopt +EXPORT_SYMBOL vmlinux 0xb5684e29 idr_find_slowpath +EXPORT_SYMBOL vmlinux 0xb57343c2 frontswap_shrink +EXPORT_SYMBOL vmlinux 0xb582fffb of_device_get_match_data +EXPORT_SYMBOL vmlinux 0xb587ac41 init_net +EXPORT_SYMBOL vmlinux 0xb59840e7 security_path_chown +EXPORT_SYMBOL vmlinux 0xb5a459dc unregister_blkdev +EXPORT_SYMBOL vmlinux 0xb5a919ab snd_pcm_lib_write +EXPORT_SYMBOL vmlinux 0xb5aa7165 dma_pool_destroy +EXPORT_SYMBOL vmlinux 0xb5c00014 _raw_write_lock_irq +EXPORT_SYMBOL vmlinux 0xb5ca1c46 slhc_free +EXPORT_SYMBOL vmlinux 0xb5d9454c printk_emit +EXPORT_SYMBOL vmlinux 0xb5dc7a90 mipi_dsi_set_maximum_return_packet_size +EXPORT_SYMBOL vmlinux 0xb5e156b0 inode_get_bytes +EXPORT_SYMBOL vmlinux 0xb5f89e6c padata_remove_cpu +EXPORT_SYMBOL vmlinux 0xb61d3f38 rtnl_create_link +EXPORT_SYMBOL vmlinux 0xb6244511 sg_init_one +EXPORT_SYMBOL vmlinux 0xb628d0f5 generic_setxattr +EXPORT_SYMBOL vmlinux 0xb678366f int_sqrt +EXPORT_SYMBOL vmlinux 0xb67c0fc9 tcp_init_xmit_timers +EXPORT_SYMBOL vmlinux 0xb6896671 crc_t10dif +EXPORT_SYMBOL vmlinux 0xb68e5c46 bio_integrity_enabled +EXPORT_SYMBOL vmlinux 0xb6936ffe _bcd2bin +EXPORT_SYMBOL vmlinux 0xb69d7855 sk_stop_timer +EXPORT_SYMBOL vmlinux 0xb6a68816 find_last_bit +EXPORT_SYMBOL vmlinux 0xb6b3852a phy_ethtool_get_eee +EXPORT_SYMBOL vmlinux 0xb6b6a739 input_inject_event +EXPORT_SYMBOL vmlinux 0xb6cf98d8 swiotlb_sync_sg_for_device +EXPORT_SYMBOL vmlinux 0xb6d05069 brioctl_set +EXPORT_SYMBOL vmlinux 0xb6d3daf1 qcom_scm_hdcp_req +EXPORT_SYMBOL vmlinux 0xb72229ad nf_log_unset +EXPORT_SYMBOL vmlinux 0xb728facb read_cache_page_gfp +EXPORT_SYMBOL vmlinux 0xb7443ed2 bio_alloc_pages +EXPORT_SYMBOL vmlinux 0xb7488905 scsi_normalize_sense +EXPORT_SYMBOL vmlinux 0xb76db082 __quota_error +EXPORT_SYMBOL vmlinux 0xb77131b1 psched_ratecfg_precompute +EXPORT_SYMBOL vmlinux 0xb7733bc4 pci_bus_assign_resources +EXPORT_SYMBOL vmlinux 0xb77d4285 tty_write_room +EXPORT_SYMBOL vmlinux 0xb780ed20 skb_append +EXPORT_SYMBOL vmlinux 0xb79ec15d mipi_dsi_create_packet +EXPORT_SYMBOL vmlinux 0xb7aa10e2 eth_header_cache_update +EXPORT_SYMBOL vmlinux 0xb7adb633 tty_port_destroy +EXPORT_SYMBOL vmlinux 0xb7b31112 __scsi_alloc_queue +EXPORT_SYMBOL vmlinux 0xb7ba76c7 __aeabi_unwind_cpp_pr2 +EXPORT_SYMBOL vmlinux 0xb7bf7f76 sock_no_setsockopt +EXPORT_SYMBOL vmlinux 0xb7c22efd tcp_sync_mss +EXPORT_SYMBOL vmlinux 0xb7d2df82 blk_init_queue +EXPORT_SYMBOL vmlinux 0xb7eee763 del_gendisk +EXPORT_SYMBOL vmlinux 0xb7f2eca0 is_nd_btt +EXPORT_SYMBOL vmlinux 0xb81960ca snprintf +EXPORT_SYMBOL vmlinux 0xb8370414 sg_pcopy_from_buffer +EXPORT_SYMBOL vmlinux 0xb83c4304 pci_enable_device_io +EXPORT_SYMBOL vmlinux 0xb83c7819 input_set_abs_params +EXPORT_SYMBOL vmlinux 0xb83efab4 fbcon_rotate_cw +EXPORT_SYMBOL vmlinux 0xb8496378 __dquot_transfer +EXPORT_SYMBOL vmlinux 0xb852751b tcp_mtup_init +EXPORT_SYMBOL vmlinux 0xb857186e udp_lib_setsockopt +EXPORT_SYMBOL vmlinux 0xb85dbec2 pci_bus_size_bridges +EXPORT_SYMBOL vmlinux 0xb874b87a __clzsi2 +EXPORT_SYMBOL vmlinux 0xb874df59 user_revoke +EXPORT_SYMBOL vmlinux 0xb8759132 follow_down_one +EXPORT_SYMBOL vmlinux 0xb8854ac8 sg_copy_from_buffer +EXPORT_SYMBOL vmlinux 0xb88ab1b6 xfrm_input_resume +EXPORT_SYMBOL vmlinux 0xb8a10f7d sk_receive_skb +EXPORT_SYMBOL vmlinux 0xb8b2c770 blk_alloc_queue_node +EXPORT_SYMBOL vmlinux 0xb8ddbe5c blkdev_issue_flush +EXPORT_SYMBOL vmlinux 0xb8e877e7 kstrtouint_from_user +EXPORT_SYMBOL vmlinux 0xb8f20688 skb_clone +EXPORT_SYMBOL vmlinux 0xb904506b neigh_xmit +EXPORT_SYMBOL vmlinux 0xb90c2875 snd_pcm_hw_rule_add +EXPORT_SYMBOL vmlinux 0xb95f98d6 _memset_io +EXPORT_SYMBOL vmlinux 0xb9638db4 snd_pcm_rate_to_rate_bit +EXPORT_SYMBOL vmlinux 0xb9691294 qdisc_create_dflt +EXPORT_SYMBOL vmlinux 0xb974128e blk_mq_free_tag_set +EXPORT_SYMBOL vmlinux 0xb9a3f2e1 mmc_detect_change +EXPORT_SYMBOL vmlinux 0xb9a8f03b omap_stop_dma +EXPORT_SYMBOL vmlinux 0xb9ac55dd phy_mii_ioctl +EXPORT_SYMBOL vmlinux 0xb9acd3d9 __put_user_2 +EXPORT_SYMBOL vmlinux 0xb9b1a18b jbd2_journal_destroy +EXPORT_SYMBOL vmlinux 0xb9ce586b param_set_short +EXPORT_SYMBOL vmlinux 0xb9e8e2cc in6addr_sitelocal_allrouters +EXPORT_SYMBOL vmlinux 0xb9ea7dc3 skb_trim +EXPORT_SYMBOL vmlinux 0xba497f13 loops_per_jiffy +EXPORT_SYMBOL vmlinux 0xba51314c ipv6_mc_check_mld +EXPORT_SYMBOL vmlinux 0xba522af3 pci_bus_read_dev_vendor_id +EXPORT_SYMBOL vmlinux 0xba6f43a8 mmc_set_blocklen +EXPORT_SYMBOL vmlinux 0xba8f253b mmc_erase_group_aligned +EXPORT_SYMBOL vmlinux 0xbabdf025 dev_vprintk_emit +EXPORT_SYMBOL vmlinux 0xbabfff10 kill_pgrp +EXPORT_SYMBOL vmlinux 0xbac2b3ea iterate_fd +EXPORT_SYMBOL vmlinux 0xbac3cbf2 ns_to_timespec64 +EXPORT_SYMBOL vmlinux 0xbacaf259 wireless_spy_update +EXPORT_SYMBOL vmlinux 0xbace5f6b dss_mgr_disconnect +EXPORT_SYMBOL vmlinux 0xbafeee36 dispc_runtime_get +EXPORT_SYMBOL vmlinux 0xbb0540aa zlib_inflateReset +EXPORT_SYMBOL vmlinux 0xbb35675b __bitmap_intersects +EXPORT_SYMBOL vmlinux 0xbb5d343d xfrm_get_acqseq +EXPORT_SYMBOL vmlinux 0xbb6ca901 md_write_start +EXPORT_SYMBOL vmlinux 0xbb72d4fe __put_user_1 +EXPORT_SYMBOL vmlinux 0xbb914277 inet_frag_find +EXPORT_SYMBOL vmlinux 0xbb949fc1 skb_ensure_writable +EXPORT_SYMBOL vmlinux 0xbb99125c get_default_font +EXPORT_SYMBOL vmlinux 0xbb9f08c3 d_set_d_op +EXPORT_SYMBOL vmlinux 0xbbb89f8e scsi_add_device +EXPORT_SYMBOL vmlinux 0xbbc45261 __invalidate_device +EXPORT_SYMBOL vmlinux 0xbbc8c37f register_netdev +EXPORT_SYMBOL vmlinux 0xbbce5eef of_dev_put +EXPORT_SYMBOL vmlinux 0xbbd76e57 bit_wait +EXPORT_SYMBOL vmlinux 0xbbd8d6a1 scsi_ioctl +EXPORT_SYMBOL vmlinux 0xbbe2c91f blkdev_get_by_path +EXPORT_SYMBOL vmlinux 0xbbece444 i2c_smbus_write_word_data +EXPORT_SYMBOL vmlinux 0xbc10dd97 __put_user_4 +EXPORT_SYMBOL vmlinux 0xbc2bbae0 scsi_remove_target +EXPORT_SYMBOL vmlinux 0xbc31726c xfrm_policy_bysel_ctx +EXPORT_SYMBOL vmlinux 0xbc3cdd9d swiotlb_sync_single_for_device +EXPORT_SYMBOL vmlinux 0xbc466e71 d_prune_aliases +EXPORT_SYMBOL vmlinux 0xbc678e87 inet_sk_rebuild_header +EXPORT_SYMBOL vmlinux 0xbc878c63 tcp_enter_cwr +EXPORT_SYMBOL vmlinux 0xbc94de10 dev_notice +EXPORT_SYMBOL vmlinux 0xbc9509cd fifo_create_dflt +EXPORT_SYMBOL vmlinux 0xbc979b74 vlan_dev_real_dev +EXPORT_SYMBOL vmlinux 0xbca6c724 snd_pcm_kernel_ioctl +EXPORT_SYMBOL vmlinux 0xbcc308bb strnlen_user +EXPORT_SYMBOL vmlinux 0xbcd72f7c xfrm_alloc_spi +EXPORT_SYMBOL vmlinux 0xbd0379ff tcf_exts_dump_stats +EXPORT_SYMBOL vmlinux 0xbd0cbdd7 generic_file_open +EXPORT_SYMBOL vmlinux 0xbd17c6de gen_replace_estimator +EXPORT_SYMBOL vmlinux 0xbd18b628 blk_integrity_is_initialized +EXPORT_SYMBOL vmlinux 0xbd1e50dc netif_skb_features +EXPORT_SYMBOL vmlinux 0xbd3ebeaa tcf_exts_change +EXPORT_SYMBOL vmlinux 0xbd80a5e4 unlock_new_inode +EXPORT_SYMBOL vmlinux 0xbd88a463 blk_get_queue +EXPORT_SYMBOL vmlinux 0xbd9074b1 blk_finish_plug +EXPORT_SYMBOL vmlinux 0xbdaebddf snd_unregister_oss_device +EXPORT_SYMBOL vmlinux 0xbdb88ff6 inet_getname +EXPORT_SYMBOL vmlinux 0xbdbc1393 pci_find_capability +EXPORT_SYMBOL vmlinux 0xbdd9617d __nla_reserve +EXPORT_SYMBOL vmlinux 0xbde340c8 dquot_operations +EXPORT_SYMBOL vmlinux 0xbdec4d08 fence_remove_callback +EXPORT_SYMBOL vmlinux 0xbdedb6b2 irq_stat +EXPORT_SYMBOL vmlinux 0xbdf55421 tcf_hash_check +EXPORT_SYMBOL vmlinux 0xbdff9eb3 sock_queue_rcv_skb +EXPORT_SYMBOL vmlinux 0xbe0b466a register_md_cluster_operations +EXPORT_SYMBOL vmlinux 0xbe0e5118 nla_memcmp +EXPORT_SYMBOL vmlinux 0xbe142686 snd_pcm_lib_preallocate_free_for_all +EXPORT_SYMBOL vmlinux 0xbe1bb112 bitmap_onto +EXPORT_SYMBOL vmlinux 0xbe1df867 snd_pcm_new +EXPORT_SYMBOL vmlinux 0xbe363955 vlan_ioctl_set +EXPORT_SYMBOL vmlinux 0xbe3947a0 of_iomap +EXPORT_SYMBOL vmlinux 0xbe3eb839 of_phy_connect +EXPORT_SYMBOL vmlinux 0xbe41113c sock_get_timestamp +EXPORT_SYMBOL vmlinux 0xbe542f1a i2c_master_recv +EXPORT_SYMBOL vmlinux 0xbe5461d7 __neigh_create +EXPORT_SYMBOL vmlinux 0xbe576b8a init_buffer +EXPORT_SYMBOL vmlinux 0xbe66cc77 dev_uc_flush +EXPORT_SYMBOL vmlinux 0xbe7e7ce8 cpufreq_global_kobject +EXPORT_SYMBOL vmlinux 0xbe8860a8 dispc_mgr_go_busy +EXPORT_SYMBOL vmlinux 0xbe8fb90c dispc_mgr_get_framedone_irq +EXPORT_SYMBOL vmlinux 0xbea3361c pci_bus_read_config_byte +EXPORT_SYMBOL vmlinux 0xbebaac3e elv_register_queue +EXPORT_SYMBOL vmlinux 0xbecb7604 bdgrab +EXPORT_SYMBOL vmlinux 0xbee258ca may_umount_tree +EXPORT_SYMBOL vmlinux 0xbee90f2f __kfifo_out_peek_r +EXPORT_SYMBOL vmlinux 0xbee96218 i2c_transfer +EXPORT_SYMBOL vmlinux 0xbef43296 console_conditional_schedule +EXPORT_SYMBOL vmlinux 0xbf0e304e cpufreq_generic_suspend +EXPORT_SYMBOL vmlinux 0xbf1d2f0c __cleancache_invalidate_fs +EXPORT_SYMBOL vmlinux 0xbf3de7fd phy_ethtool_get_wol +EXPORT_SYMBOL vmlinux 0xbf46d805 registered_fb +EXPORT_SYMBOL vmlinux 0xbf6467ef sk_stream_error +EXPORT_SYMBOL vmlinux 0xbf7cede0 jbd2_journal_start +EXPORT_SYMBOL vmlinux 0xbf7f6a09 skb_page_frag_refill +EXPORT_SYMBOL vmlinux 0xbf7fd2f5 schedule_timeout_killable +EXPORT_SYMBOL vmlinux 0xbf8ba54a vprintk +EXPORT_SYMBOL vmlinux 0xbf9a1d1e snd_pcm_suspend_all +EXPORT_SYMBOL vmlinux 0xbf9bcc8d __cap_empty_set +EXPORT_SYMBOL vmlinux 0xbfb5638a lock_sock_fast +EXPORT_SYMBOL vmlinux 0xbfbb477c __skb_recv_datagram +EXPORT_SYMBOL vmlinux 0xbfc083fe pci_enable_device_mem +EXPORT_SYMBOL vmlinux 0xbfd3511f netdev_lower_get_next_private +EXPORT_SYMBOL vmlinux 0xbfd4883d free_task +EXPORT_SYMBOL vmlinux 0xbfdccaca nd_btt_probe +EXPORT_SYMBOL vmlinux 0xbfee3ad5 loop_unregister_transfer +EXPORT_SYMBOL vmlinux 0xbff9116e file_update_time +EXPORT_SYMBOL vmlinux 0xbffc7b90 snd_pcm_new_stream +EXPORT_SYMBOL vmlinux 0xc0056be5 _raw_write_unlock_bh +EXPORT_SYMBOL vmlinux 0xc02bd2dc input_unregister_device +EXPORT_SYMBOL vmlinux 0xc03f82e2 xfrm_state_lookup_byspi +EXPORT_SYMBOL vmlinux 0xc046eebe mdiobus_read +EXPORT_SYMBOL vmlinux 0xc04e1030 max8925_bulk_write +EXPORT_SYMBOL vmlinux 0xc05cd779 xfrm_sad_getinfo +EXPORT_SYMBOL vmlinux 0xc068440e __kfifo_alloc +EXPORT_SYMBOL vmlinux 0xc0763484 rfkill_blocked +EXPORT_SYMBOL vmlinux 0xc0823e4c twl_i2c_write +EXPORT_SYMBOL vmlinux 0xc0a6a8c5 omap_set_dma_dest_burst_mode +EXPORT_SYMBOL vmlinux 0xc0a98385 profile_pc +EXPORT_SYMBOL vmlinux 0xc0a9d350 dev_mc_init +EXPORT_SYMBOL vmlinux 0xc0b1a9d8 xfrm_state_lookup +EXPORT_SYMBOL vmlinux 0xc0d1d846 pci_platform_rom +EXPORT_SYMBOL vmlinux 0xc0ef248a unregister_binfmt +EXPORT_SYMBOL vmlinux 0xc113a758 serio_open +EXPORT_SYMBOL vmlinux 0xc11d8093 iov_shorten +EXPORT_SYMBOL vmlinux 0xc1203e52 generic_update_time +EXPORT_SYMBOL vmlinux 0xc12b2ea7 vmap +EXPORT_SYMBOL vmlinux 0xc12ec3a6 dns_query +EXPORT_SYMBOL vmlinux 0xc1494123 pfifo_qdisc_ops +EXPORT_SYMBOL vmlinux 0xc14cdfab ppp_input_error +EXPORT_SYMBOL vmlinux 0xc16f8af6 rps_may_expire_flow +EXPORT_SYMBOL vmlinux 0xc17be114 edma_assign_channel_eventq +EXPORT_SYMBOL vmlinux 0xc188d1d9 single_open +EXPORT_SYMBOL vmlinux 0xc1d8cfaf __fdget +EXPORT_SYMBOL vmlinux 0xc1e50c0b rtnl_nla_parse_ifla +EXPORT_SYMBOL vmlinux 0xc21321f9 of_translate_address +EXPORT_SYMBOL vmlinux 0xc216dcc9 make_kgid +EXPORT_SYMBOL vmlinux 0xc2171345 cancel_dirty_page +EXPORT_SYMBOL vmlinux 0xc2340b8e arm_coherent_dma_ops +EXPORT_SYMBOL vmlinux 0xc259726a dev_uc_del +EXPORT_SYMBOL vmlinux 0xc2844ea8 pipe_unlock +EXPORT_SYMBOL vmlinux 0xc2a8c63f iov_iter_bvec +EXPORT_SYMBOL vmlinux 0xc2a90f24 snd_ctl_rename_id +EXPORT_SYMBOL vmlinux 0xc2acc033 hex_dump_to_buffer +EXPORT_SYMBOL vmlinux 0xc2cfe1e3 generic_file_llseek +EXPORT_SYMBOL vmlinux 0xc2d37ee0 get_super_thawed +EXPORT_SYMBOL vmlinux 0xc2d711e1 krealloc +EXPORT_SYMBOL vmlinux 0xc2dab7b0 mipi_dsi_dcs_set_display_on +EXPORT_SYMBOL vmlinux 0xc2e587d1 reset_devices +EXPORT_SYMBOL vmlinux 0xc2f1dffc cros_ec_check_result +EXPORT_SYMBOL vmlinux 0xc2f882fb peernet2id_alloc +EXPORT_SYMBOL vmlinux 0xc2f9c045 timespec_to_jiffies +EXPORT_SYMBOL vmlinux 0xc30309cb blk_rq_map_user +EXPORT_SYMBOL vmlinux 0xc359fb65 abort +EXPORT_SYMBOL vmlinux 0xc37ac848 bmap +EXPORT_SYMBOL vmlinux 0xc38bcfed dump_skip +EXPORT_SYMBOL vmlinux 0xc390a3da tcp_ioctl +EXPORT_SYMBOL vmlinux 0xc3c0ea29 security_path_link +EXPORT_SYMBOL vmlinux 0xc3c2be91 mipi_dsi_packet_format_is_short +EXPORT_SYMBOL vmlinux 0xc3cb242f dec_zone_page_state +EXPORT_SYMBOL vmlinux 0xc3d1e624 __blockdev_direct_IO +EXPORT_SYMBOL vmlinux 0xc3d1fa4d edma_alloc_cont_slots +EXPORT_SYMBOL vmlinux 0xc3d4cb28 balance_dirty_pages_ratelimited +EXPORT_SYMBOL vmlinux 0xc3f3f499 dev_get_iflink +EXPORT_SYMBOL vmlinux 0xc41f0516 node_states +EXPORT_SYMBOL vmlinux 0xc4359a63 vme_master_mmap +EXPORT_SYMBOL vmlinux 0xc43c195b jbd2_journal_begin_ordered_truncate +EXPORT_SYMBOL vmlinux 0xc43e88c3 snd_timer_continue +EXPORT_SYMBOL vmlinux 0xc43f61d9 iov_iter_fault_in_multipages_readable +EXPORT_SYMBOL vmlinux 0xc4417d89 lock_two_nondirectories +EXPORT_SYMBOL vmlinux 0xc4539a1e generic_file_fsync +EXPORT_SYMBOL vmlinux 0xc459c3a2 nand_scan_ident +EXPORT_SYMBOL vmlinux 0xc499ae1e kstrdup +EXPORT_SYMBOL vmlinux 0xc4b96978 neigh_sysctl_unregister +EXPORT_SYMBOL vmlinux 0xc52da066 omap_set_dma_dest_params +EXPORT_SYMBOL vmlinux 0xc552c38b generic_file_direct_write +EXPORT_SYMBOL vmlinux 0xc55eec00 seq_read +EXPORT_SYMBOL vmlinux 0xc562ce29 dup_iter +EXPORT_SYMBOL vmlinux 0xc56d685d __neigh_set_probe_once +EXPORT_SYMBOL vmlinux 0xc599a772 security_xfrm_state_delete +EXPORT_SYMBOL vmlinux 0xc5a62ba7 security_file_permission +EXPORT_SYMBOL vmlinux 0xc5c35350 vme_register_bridge +EXPORT_SYMBOL vmlinux 0xc5cb6732 dump_align +EXPORT_SYMBOL vmlinux 0xc5f42d1d nf_register_queue_handler +EXPORT_SYMBOL vmlinux 0xc5fdef94 call_usermodehelper +EXPORT_SYMBOL vmlinux 0xc600a1ca vm_insert_page +EXPORT_SYMBOL vmlinux 0xc631580a console_unlock +EXPORT_SYMBOL vmlinux 0xc645d566 inode_sub_rsv_space +EXPORT_SYMBOL vmlinux 0xc658694a __inode_permission +EXPORT_SYMBOL vmlinux 0xc65c10b7 posix_test_lock +EXPORT_SYMBOL vmlinux 0xc66204d8 vfs_setpos +EXPORT_SYMBOL vmlinux 0xc66fa6a6 ida_remove +EXPORT_SYMBOL vmlinux 0xc671442d vm_insert_pfn +EXPORT_SYMBOL vmlinux 0xc685e825 fb_set_var +EXPORT_SYMBOL vmlinux 0xc68d00a9 of_device_register +EXPORT_SYMBOL vmlinux 0xc694f655 padata_alloc +EXPORT_SYMBOL vmlinux 0xc6cbbc89 capable +EXPORT_SYMBOL vmlinux 0xc6ce99b5 sock_create_lite +EXPORT_SYMBOL vmlinux 0xc6cf2326 mmc_set_blockcount +EXPORT_SYMBOL vmlinux 0xc6de77b4 gen_new_estimator +EXPORT_SYMBOL vmlinux 0xc6f20099 inet_sendpage +EXPORT_SYMBOL vmlinux 0xc6f36775 udp_ioctl +EXPORT_SYMBOL vmlinux 0xc6f5c5bd sock_no_mmap +EXPORT_SYMBOL vmlinux 0xc6fb8a78 snd_unregister_device +EXPORT_SYMBOL vmlinux 0xc6ff2d5d crypto_sha512_finup +EXPORT_SYMBOL vmlinux 0xc7062f4e mipi_dsi_generic_read +EXPORT_SYMBOL vmlinux 0xc71d97dd skb_checksum_trimmed +EXPORT_SYMBOL vmlinux 0xc7208c3a serial8250_resume_port +EXPORT_SYMBOL vmlinux 0xc72e3d79 PDE_DATA +EXPORT_SYMBOL vmlinux 0xc72f0b34 nd_btt_sb_checksum +EXPORT_SYMBOL vmlinux 0xc7323fb4 md_check_no_bitmap +EXPORT_SYMBOL vmlinux 0xc74c06fe rwsem_down_write_failed +EXPORT_SYMBOL vmlinux 0xc751dc12 ww_mutex_unlock +EXPORT_SYMBOL vmlinux 0xc7563db8 twl_set_regcache_bypass +EXPORT_SYMBOL vmlinux 0xc75fe7f2 simple_empty +EXPORT_SYMBOL vmlinux 0xc76042d9 mmc_can_trim +EXPORT_SYMBOL vmlinux 0xc7773f37 inet_dgram_ops +EXPORT_SYMBOL vmlinux 0xc781bd9f rfkill_resume_polling +EXPORT_SYMBOL vmlinux 0xc7856a3d inet6addr_notifier_call_chain +EXPORT_SYMBOL vmlinux 0xc79005c7 of_phy_find_device +EXPORT_SYMBOL vmlinux 0xc7910c45 inet_peer_xrlim_allow +EXPORT_SYMBOL vmlinux 0xc7930e0e serio_unregister_port +EXPORT_SYMBOL vmlinux 0xc79a18c3 sk_net_capable +EXPORT_SYMBOL vmlinux 0xc79ade0f nla_put_nohdr +EXPORT_SYMBOL vmlinux 0xc79bcd36 dm_vcalloc +EXPORT_SYMBOL vmlinux 0xc79fef84 snd_device_register +EXPORT_SYMBOL vmlinux 0xc7a4fbed rtnl_lock +EXPORT_SYMBOL vmlinux 0xc7ab4086 seqno_fence_ops +EXPORT_SYMBOL vmlinux 0xc7bcbc8d add_wait_queue +EXPORT_SYMBOL vmlinux 0xc7da2c7c scsi_eh_prep_cmnd +EXPORT_SYMBOL vmlinux 0xc7e1f46c blk_mq_all_tag_busy_iter +EXPORT_SYMBOL vmlinux 0xc7e6fe23 insert_inode_locked4 +EXPORT_SYMBOL vmlinux 0xc7ec6c27 strspn +EXPORT_SYMBOL vmlinux 0xc8097b6f __skb_flow_get_ports +EXPORT_SYMBOL vmlinux 0xc815827f __test_set_page_writeback +EXPORT_SYMBOL vmlinux 0xc81c1187 sk_capable +EXPORT_SYMBOL vmlinux 0xc8339e24 string_unescape +EXPORT_SYMBOL vmlinux 0xc83b4d5b posix_acl_from_mode +EXPORT_SYMBOL vmlinux 0xc842f500 blkdev_issue_write_same +EXPORT_SYMBOL vmlinux 0xc84a0a7e seq_hlist_start_rcu +EXPORT_SYMBOL vmlinux 0xc852993a max8925_bulk_read +EXPORT_SYMBOL vmlinux 0xc85d7284 seq_putc +EXPORT_SYMBOL vmlinux 0xc8607d9b snd_pcm_hw_constraint_list +EXPORT_SYMBOL vmlinux 0xc86f3569 pcie_capability_write_dword +EXPORT_SYMBOL vmlinux 0xc872fd85 in6addr_interfacelocal_allnodes +EXPORT_SYMBOL vmlinux 0xc87526a3 blk_integrity_merge_rq +EXPORT_SYMBOL vmlinux 0xc877a33f ip6_route_output +EXPORT_SYMBOL vmlinux 0xc87b45ba input_mt_init_slots +EXPORT_SYMBOL vmlinux 0xc890c008 zlib_deflateEnd +EXPORT_SYMBOL vmlinux 0xc897c382 sg_init_table +EXPORT_SYMBOL vmlinux 0xc89f23cf neigh_changeaddr +EXPORT_SYMBOL vmlinux 0xc8a91f5b cpumask_local_spread +EXPORT_SYMBOL vmlinux 0xc8b57c27 autoremove_wake_function +EXPORT_SYMBOL vmlinux 0xc8b766e3 nd_region_acquire_lane +EXPORT_SYMBOL vmlinux 0xc8c73cb0 pci_set_master +EXPORT_SYMBOL vmlinux 0xc8e9ad01 dquot_commit +EXPORT_SYMBOL vmlinux 0xc8f3357f contig_page_data +EXPORT_SYMBOL vmlinux 0xc8ff5ac8 elv_dispatch_add_tail +EXPORT_SYMBOL vmlinux 0xc900f431 seq_pad +EXPORT_SYMBOL vmlinux 0xc911b9d5 eth_get_headlen +EXPORT_SYMBOL vmlinux 0xc920b89f vfs_fsync +EXPORT_SYMBOL vmlinux 0xc9219195 pci_clear_mwi +EXPORT_SYMBOL vmlinux 0xc92d140f __dst_destroy_metrics_generic +EXPORT_SYMBOL vmlinux 0xc9322b30 get_acl +EXPORT_SYMBOL vmlinux 0xc93a2f4d edma_free_cont_slots +EXPORT_SYMBOL vmlinux 0xc9634df9 in6addr_linklocal_allrouters +EXPORT_SYMBOL vmlinux 0xc96d2066 kmem_cache_destroy +EXPORT_SYMBOL vmlinux 0xc990444f nand_scan +EXPORT_SYMBOL vmlinux 0xc99e2a55 twl_rev +EXPORT_SYMBOL vmlinux 0xc9a43433 blk_integrity_merge_bio +EXPORT_SYMBOL vmlinux 0xc9b9db61 __nd_iostat_start +EXPORT_SYMBOL vmlinux 0xca0f4667 readlink_copy +EXPORT_SYMBOL vmlinux 0xca1e5d0e pps_unregister_source +EXPORT_SYMBOL vmlinux 0xca284e6d udp_del_offload +EXPORT_SYMBOL vmlinux 0xca336791 netlink_unicast +EXPORT_SYMBOL vmlinux 0xca3645a1 snd_register_device +EXPORT_SYMBOL vmlinux 0xca48a648 xfrm_policy_walk_done +EXPORT_SYMBOL vmlinux 0xca7a0037 inode_owner_or_capable +EXPORT_SYMBOL vmlinux 0xca9360b5 rb_next +EXPORT_SYMBOL vmlinux 0xcac88e4e dev_uc_sync_multiple +EXPORT_SYMBOL vmlinux 0xcaddbd7e edma_set_dest_index +EXPORT_SYMBOL vmlinux 0xcaf2478f fsnotify_destroy_mark +EXPORT_SYMBOL vmlinux 0xcaf2c603 scsi_sd_pm_domain +EXPORT_SYMBOL vmlinux 0xcb0288ea ledtrig_cpu +EXPORT_SYMBOL vmlinux 0xcb3761c5 __dev_get_by_name +EXPORT_SYMBOL vmlinux 0xcb466063 wait_for_completion_killable_timeout +EXPORT_SYMBOL vmlinux 0xcb6618ac dquot_enable +EXPORT_SYMBOL vmlinux 0xcb66b7ba register_sound_special +EXPORT_SYMBOL vmlinux 0xcb6d6803 eth_type_trans +EXPORT_SYMBOL vmlinux 0xcb78b692 ptp_clock_unregister +EXPORT_SYMBOL vmlinux 0xcbbf0a6f audit_log_task_context +EXPORT_SYMBOL vmlinux 0xcbc9557f unregister_sysrq_key +EXPORT_SYMBOL vmlinux 0xcbeac4be hdmi_avi_infoframe_pack +EXPORT_SYMBOL vmlinux 0xcbee6439 ida_simple_get +EXPORT_SYMBOL vmlinux 0xcc076683 devfreq_remove_device +EXPORT_SYMBOL vmlinux 0xcc248d26 serial8250_suspend_port +EXPORT_SYMBOL vmlinux 0xcc3f7464 md_update_sb +EXPORT_SYMBOL vmlinux 0xcc43face sock_no_bind +EXPORT_SYMBOL vmlinux 0xcc5005fe msleep_interruptible +EXPORT_SYMBOL vmlinux 0xcc6100a2 serial8250_do_pm +EXPORT_SYMBOL vmlinux 0xcc63550c udp_lib_unhash +EXPORT_SYMBOL vmlinux 0xcc6430f6 mipi_dsi_dcs_get_pixel_format +EXPORT_SYMBOL vmlinux 0xcc7b51be blk_recount_segments +EXPORT_SYMBOL vmlinux 0xcc85bf8f snd_pcm_hw_constraint_ratdens +EXPORT_SYMBOL vmlinux 0xcc8b3773 of_graph_get_remote_port_parent +EXPORT_SYMBOL vmlinux 0xcc91520b nf_log_set +EXPORT_SYMBOL vmlinux 0xccc21f5e input_get_new_minor +EXPORT_SYMBOL vmlinux 0xccd6a305 filemap_write_and_wait +EXPORT_SYMBOL vmlinux 0xccdf5d00 dquot_free_inode +EXPORT_SYMBOL vmlinux 0xccee0d2c eth_header_parse +EXPORT_SYMBOL vmlinux 0xccfef64f skb_flow_dissector_init +EXPORT_SYMBOL vmlinux 0xcd03a1c9 dcbnl_cee_notify +EXPORT_SYMBOL vmlinux 0xcd083b10 unregister_sound_dsp +EXPORT_SYMBOL vmlinux 0xcd22b4b0 dcb_ieee_setapp +EXPORT_SYMBOL vmlinux 0xcd230d6f pm8606_osc_enable +EXPORT_SYMBOL vmlinux 0xcd279169 nla_find +EXPORT_SYMBOL vmlinux 0xcd30b95a tmio_core_mmc_clk_div +EXPORT_SYMBOL vmlinux 0xcd3d26f5 ipv6_push_nfrag_opts +EXPORT_SYMBOL vmlinux 0xcd63c845 __aeabi_lasr +EXPORT_SYMBOL vmlinux 0xcd65fd9f mem_cgroup_begin_page_stat +EXPORT_SYMBOL vmlinux 0xcd698a8f ipv6_dev_get_saddr +EXPORT_SYMBOL vmlinux 0xcd6b1e58 should_remove_suid +EXPORT_SYMBOL vmlinux 0xcd75ea6e always_delete_dentry +EXPORT_SYMBOL vmlinux 0xcd7c8d08 omap_dss_find_output +EXPORT_SYMBOL vmlinux 0xcd8a697e pci_disable_device +EXPORT_SYMBOL vmlinux 0xcd8d36f4 flow_get_u32_src +EXPORT_SYMBOL vmlinux 0xcd8e3367 neigh_ifdown +EXPORT_SYMBOL vmlinux 0xcdaceb6c generic_fillattr +EXPORT_SYMBOL vmlinux 0xcdb69109 register_sound_mixer +EXPORT_SYMBOL vmlinux 0xcdc39c9e security_ismaclabel +EXPORT_SYMBOL vmlinux 0xcdc49e19 lockref_get +EXPORT_SYMBOL vmlinux 0xcdcfa624 generic_file_llseek_size +EXPORT_SYMBOL vmlinux 0xcde087f9 shdma_chan_remove +EXPORT_SYMBOL vmlinux 0xcdfa952b bdevname +EXPORT_SYMBOL vmlinux 0xce27aea8 key_unlink +EXPORT_SYMBOL vmlinux 0xce2840e7 irq_set_irq_wake +EXPORT_SYMBOL vmlinux 0xce2f496c ip6_frag_init +EXPORT_SYMBOL vmlinux 0xce3ca308 copy_from_user_toio +EXPORT_SYMBOL vmlinux 0xce3f5908 __init_rwsem +EXPORT_SYMBOL vmlinux 0xce4c7e1d ps2_handle_response +EXPORT_SYMBOL vmlinux 0xce5ac24f zlib_inflate_workspacesize +EXPORT_SYMBOL vmlinux 0xce6e59cb netif_rx +EXPORT_SYMBOL vmlinux 0xceab0311 strchrnul +EXPORT_SYMBOL vmlinux 0xceac1b74 tcp_v4_mtu_reduced +EXPORT_SYMBOL vmlinux 0xcec67155 sock_no_getname +EXPORT_SYMBOL vmlinux 0xcee000c3 skb_copy_and_csum_datagram_msg +EXPORT_SYMBOL vmlinux 0xceed7f85 _raw_write_unlock_irqrestore +EXPORT_SYMBOL vmlinux 0xcef51982 kstrtou16 +EXPORT_SYMBOL vmlinux 0xcefcd99a serial8250_unregister_port +EXPORT_SYMBOL vmlinux 0xcf0c40cc ip_route_me_harder +EXPORT_SYMBOL vmlinux 0xcf1a859c pcix_get_max_mmrbc +EXPORT_SYMBOL vmlinux 0xcf3d3cee pm860x_bulk_read +EXPORT_SYMBOL vmlinux 0xcf88625f mempool_create_node +EXPORT_SYMBOL vmlinux 0xcf9b44f2 rwsem_wake +EXPORT_SYMBOL vmlinux 0xcfa2aacf jbd2_trans_will_send_data_barrier +EXPORT_SYMBOL vmlinux 0xcfb26f4f set_security_override_from_ctx +EXPORT_SYMBOL vmlinux 0xcff6b676 _raw_spin_trylock_bh +EXPORT_SYMBOL vmlinux 0xd034105f lockref_put_return +EXPORT_SYMBOL vmlinux 0xd05d06f5 jbd2_journal_get_create_access +EXPORT_SYMBOL vmlinux 0xd0720a17 on_each_cpu_cond +EXPORT_SYMBOL vmlinux 0xd09b0199 fence_context_alloc +EXPORT_SYMBOL vmlinux 0xd09db54c I_BDEV +EXPORT_SYMBOL vmlinux 0xd0a2847c sha_init +EXPORT_SYMBOL vmlinux 0xd0a75e3a phy_drivers_unregister +EXPORT_SYMBOL vmlinux 0xd0a91bab skip_spaces +EXPORT_SYMBOL vmlinux 0xd0c8e1b8 neigh_destroy +EXPORT_SYMBOL vmlinux 0xd0cecb8f copy_page_from_iter +EXPORT_SYMBOL vmlinux 0xd0e773ba __d_drop +EXPORT_SYMBOL vmlinux 0xd0ee38b8 schedule_timeout_uninterruptible +EXPORT_SYMBOL vmlinux 0xd0f36f0d audit_log_format +EXPORT_SYMBOL vmlinux 0xd0fb7cd4 __tasklet_hi_schedule_first +EXPORT_SYMBOL vmlinux 0xd100acbd _raw_write_lock +EXPORT_SYMBOL vmlinux 0xd1067ba7 dispc_ovl_enabled +EXPORT_SYMBOL vmlinux 0xd109f090 truncate_inode_pages_range +EXPORT_SYMBOL vmlinux 0xd1108f38 scsi_block_requests +EXPORT_SYMBOL vmlinux 0xd11ee56b genphy_aneg_done +EXPORT_SYMBOL vmlinux 0xd13ce570 led_update_brightness +EXPORT_SYMBOL vmlinux 0xd1680803 module_put +EXPORT_SYMBOL vmlinux 0xd17e2115 snd_ctl_notify +EXPORT_SYMBOL vmlinux 0xd1816f32 frontswap_writethrough +EXPORT_SYMBOL vmlinux 0xd196c9be kstrtos16_from_user +EXPORT_SYMBOL vmlinux 0xd1b3de0c netdev_upper_get_next_dev_rcu +EXPORT_SYMBOL vmlinux 0xd1b73132 param_ops_ullong +EXPORT_SYMBOL vmlinux 0xd1c84dfb hdmi_audio_infoframe_pack +EXPORT_SYMBOL vmlinux 0xd1d5d00d elv_rb_latter_request +EXPORT_SYMBOL vmlinux 0xd1d87e92 scsi_mlreturn_string +EXPORT_SYMBOL vmlinux 0xd1e79cae fence_wait_timeout +EXPORT_SYMBOL vmlinux 0xd20680c2 blk_mq_delay_queue +EXPORT_SYMBOL vmlinux 0xd220cf8a jiffies_to_timespec +EXPORT_SYMBOL vmlinux 0xd221c734 phys_mem_access_prot +EXPORT_SYMBOL vmlinux 0xd2253e77 cpu_tlb +EXPORT_SYMBOL vmlinux 0xd2268266 dev_mc_flush +EXPORT_SYMBOL vmlinux 0xd22a8540 netdev_err +EXPORT_SYMBOL vmlinux 0xd2320af7 mount_nodev +EXPORT_SYMBOL vmlinux 0xd23277cc simple_rename +EXPORT_SYMBOL vmlinux 0xd2405c97 pcim_enable_device +EXPORT_SYMBOL vmlinux 0xd245229f inode_init_always +EXPORT_SYMBOL vmlinux 0xd251d7b0 security_socket_getpeersec_dgram +EXPORT_SYMBOL vmlinux 0xd254a4a0 clkdev_alloc +EXPORT_SYMBOL vmlinux 0xd2555f19 jiffies_64_to_clock_t +EXPORT_SYMBOL vmlinux 0xd259d249 vga_get +EXPORT_SYMBOL vmlinux 0xd25d0abf nla_put +EXPORT_SYMBOL vmlinux 0xd25d4f74 console_blank_hook +EXPORT_SYMBOL vmlinux 0xd2747da4 twl6040_get_pll +EXPORT_SYMBOL vmlinux 0xd27b25dd blk_check_plugged +EXPORT_SYMBOL vmlinux 0xd2954cc5 pci_save_state +EXPORT_SYMBOL vmlinux 0xd2af138b reservation_ww_class +EXPORT_SYMBOL vmlinux 0xd2c35eac dev_uc_add +EXPORT_SYMBOL vmlinux 0xd2d11ad4 register_framebuffer +EXPORT_SYMBOL vmlinux 0xd2da1048 register_netdevice_notifier +EXPORT_SYMBOL vmlinux 0xd2f18b76 inet_proto_csum_replace4 +EXPORT_SYMBOL vmlinux 0xd31851a2 invalidate_inode_buffers +EXPORT_SYMBOL vmlinux 0xd31ccb06 of_machine_is_compatible +EXPORT_SYMBOL vmlinux 0xd35bf7cc account_page_redirty +EXPORT_SYMBOL vmlinux 0xd391f840 pm860x_set_bits +EXPORT_SYMBOL vmlinux 0xd39ac32d inet_offloads +EXPORT_SYMBOL vmlinux 0xd39c7a66 udp_disconnect +EXPORT_SYMBOL vmlinux 0xd3bfd1bb tcp_md5_do_lookup +EXPORT_SYMBOL vmlinux 0xd3c5e1ef jbd2_journal_restart +EXPORT_SYMBOL vmlinux 0xd3ceed2c d_splice_alias +EXPORT_SYMBOL vmlinux 0xd3dbfbc4 _find_first_zero_bit_le +EXPORT_SYMBOL vmlinux 0xd3e6f60d cpu_possible_mask +EXPORT_SYMBOL vmlinux 0xd403cec7 __dynamic_netdev_dbg +EXPORT_SYMBOL vmlinux 0xd407c2f9 bdi_register +EXPORT_SYMBOL vmlinux 0xd465b364 serial8250_set_isa_configurator +EXPORT_SYMBOL vmlinux 0xd4669fad complete +EXPORT_SYMBOL vmlinux 0xd4788371 blk_queue_init_tags +EXPORT_SYMBOL vmlinux 0xd4a6e3ce inet_stream_connect +EXPORT_SYMBOL vmlinux 0xd4aa0052 ab3100_event_register +EXPORT_SYMBOL vmlinux 0xd4bb1d1d replace_mount_options +EXPORT_SYMBOL vmlinux 0xd4c119ca sock_alloc_send_pskb +EXPORT_SYMBOL vmlinux 0xd4e559b4 page_put_link +EXPORT_SYMBOL vmlinux 0xd4e7eb55 inet6_del_protocol +EXPORT_SYMBOL vmlinux 0xd4f090e7 vfs_whiteout +EXPORT_SYMBOL vmlinux 0xd4f128d8 empty_zero_page +EXPORT_SYMBOL vmlinux 0xd4fdb406 of_find_all_nodes +EXPORT_SYMBOL vmlinux 0xd502257e elv_rb_del +EXPORT_SYMBOL vmlinux 0xd5058602 netlink_set_err +EXPORT_SYMBOL vmlinux 0xd529db3d do_splice_from +EXPORT_SYMBOL vmlinux 0xd530e6e1 __register_chrdev +EXPORT_SYMBOL vmlinux 0xd54f41ce try_to_del_timer_sync +EXPORT_SYMBOL vmlinux 0xd559bb82 udp_prot +EXPORT_SYMBOL vmlinux 0xd55f2e4d is_nvdimm_bus_locked +EXPORT_SYMBOL vmlinux 0xd57f3933 end_buffer_read_sync +EXPORT_SYMBOL vmlinux 0xd58cd9ea padata_alloc_possible +EXPORT_SYMBOL vmlinux 0xd58ea00e mdiobus_alloc_size +EXPORT_SYMBOL vmlinux 0xd596d7bf devfreq_monitor_suspend +EXPORT_SYMBOL vmlinux 0xd5a32e18 console_stop +EXPORT_SYMBOL vmlinux 0xd5ce1e24 neigh_table_init +EXPORT_SYMBOL vmlinux 0xd5dd611a inet6_del_offload +EXPORT_SYMBOL vmlinux 0xd5f52d4f netdev_rss_key_fill +EXPORT_SYMBOL vmlinux 0xd5fb889f simple_symlink_inode_operations +EXPORT_SYMBOL vmlinux 0xd61347c6 register_sysctl +EXPORT_SYMBOL vmlinux 0xd616683a ecryptfs_fill_auth_tok +EXPORT_SYMBOL vmlinux 0xd624454d dev_load +EXPORT_SYMBOL vmlinux 0xd627480b strncat +EXPORT_SYMBOL vmlinux 0xd62c833f schedule_timeout +EXPORT_SYMBOL vmlinux 0xd62dc8a6 jbd2_journal_free_reserved +EXPORT_SYMBOL vmlinux 0xd648e564 fb_match_mode +EXPORT_SYMBOL vmlinux 0xd66e9283 sync_dirty_buffer +EXPORT_SYMBOL vmlinux 0xd67a019a ip6_xmit +EXPORT_SYMBOL vmlinux 0xd6857c3a _snd_pcm_lib_alloc_vmalloc_buffer +EXPORT_SYMBOL vmlinux 0xd68680c2 fd_install +EXPORT_SYMBOL vmlinux 0xd688716b dm_kcopyd_client_create +EXPORT_SYMBOL vmlinux 0xd68bd257 kunmap_high +EXPORT_SYMBOL vmlinux 0xd691b707 blk_queue_logical_block_size +EXPORT_SYMBOL vmlinux 0xd6adb9f8 pm860x_reg_write +EXPORT_SYMBOL vmlinux 0xd6c6b96e ipv6_find_hdr +EXPORT_SYMBOL vmlinux 0xd6e12793 sock_setsockopt +EXPORT_SYMBOL vmlinux 0xd6ed1a0f put_cmsg +EXPORT_SYMBOL vmlinux 0xd6ee688f vmalloc +EXPORT_SYMBOL vmlinux 0xd6f1a63a scm_detach_fds +EXPORT_SYMBOL vmlinux 0xd70ab8ba pci_request_region_exclusive +EXPORT_SYMBOL vmlinux 0xd723a7ca noop_llseek +EXPORT_SYMBOL vmlinux 0xd7321c6a gen_pool_add_virt +EXPORT_SYMBOL vmlinux 0xd74289f9 __percpu_counter_add +EXPORT_SYMBOL vmlinux 0xd75c79df smp_call_function +EXPORT_SYMBOL vmlinux 0xd75f42b2 blk_limits_io_opt +EXPORT_SYMBOL vmlinux 0xd78025ae gen_pool_create +EXPORT_SYMBOL vmlinux 0xd78e6f89 security_skb_classify_flow +EXPORT_SYMBOL vmlinux 0xd7970ba5 file_path +EXPORT_SYMBOL vmlinux 0xd797b9a5 vme_master_write +EXPORT_SYMBOL vmlinux 0xd7a3f68b xfrm4_rcv +EXPORT_SYMBOL vmlinux 0xd7b3a695 hdmi_infoframe_log +EXPORT_SYMBOL vmlinux 0xd7b9e1b7 blk_mq_complete_request +EXPORT_SYMBOL vmlinux 0xd7bae47e blk_fetch_request +EXPORT_SYMBOL vmlinux 0xd7bbd496 __dquot_free_space +EXPORT_SYMBOL vmlinux 0xd7be05ce snd_card_set_id +EXPORT_SYMBOL vmlinux 0xd7e56a4e simple_strtoll +EXPORT_SYMBOL vmlinux 0xd7e71e77 netdev_refcnt_read +EXPORT_SYMBOL vmlinux 0xd7ea7094 nf_unregister_queue_handler +EXPORT_SYMBOL vmlinux 0xd7f50c56 snd_timer_new +EXPORT_SYMBOL vmlinux 0xd7fd6762 xfrm_state_walk +EXPORT_SYMBOL vmlinux 0xd8171667 vlan_uses_dev +EXPORT_SYMBOL vmlinux 0xd8460db7 input_mt_destroy_slots +EXPORT_SYMBOL vmlinux 0xd8561b37 generic_delete_inode +EXPORT_SYMBOL vmlinux 0xd85833cb __kfifo_dma_out_prepare_r +EXPORT_SYMBOL vmlinux 0xd85cd67e __wake_up +EXPORT_SYMBOL vmlinux 0xd8872ce9 pcie_get_readrq +EXPORT_SYMBOL vmlinux 0xd89a37b6 sock_no_shutdown +EXPORT_SYMBOL vmlinux 0xd8a994eb scsi_extd_sense_format +EXPORT_SYMBOL vmlinux 0xd8bcd4f5 lock_sock_nested +EXPORT_SYMBOL vmlinux 0xd8c88c46 md_set_array_sectors +EXPORT_SYMBOL vmlinux 0xd8db09d5 d_find_any_alias +EXPORT_SYMBOL vmlinux 0xd8ded085 radix_tree_maybe_preload +EXPORT_SYMBOL vmlinux 0xd8ded645 d_alloc_name +EXPORT_SYMBOL vmlinux 0xd8e484f0 register_chrdev_region +EXPORT_SYMBOL vmlinux 0xd8e6b446 genphy_update_link +EXPORT_SYMBOL vmlinux 0xd9536f0d seq_put_decimal_ull +EXPORT_SYMBOL vmlinux 0xd955d2b7 omap_set_dma_dest_data_pack +EXPORT_SYMBOL vmlinux 0xd96d6f6a pcim_iomap_regions +EXPORT_SYMBOL vmlinux 0xd96e9f6f phy_ethtool_set_wol +EXPORT_SYMBOL vmlinux 0xd97edd47 neigh_proc_dointvec +EXPORT_SYMBOL vmlinux 0xd97f64b0 add_to_page_cache_locked +EXPORT_SYMBOL vmlinux 0xd985dc99 mempool_free_pages +EXPORT_SYMBOL vmlinux 0xd987f64f max8998_read_reg +EXPORT_SYMBOL vmlinux 0xd999fd9f padata_do_parallel +EXPORT_SYMBOL vmlinux 0xd99ad579 __tracepoint_module_get +EXPORT_SYMBOL vmlinux 0xd99f46f5 nvdimm_namespace_capacity +EXPORT_SYMBOL vmlinux 0xd9b627b3 fsnotify_get_group +EXPORT_SYMBOL vmlinux 0xd9ce8f0c strnlen +EXPORT_SYMBOL vmlinux 0xd9d8fd16 register_restart_handler +EXPORT_SYMBOL vmlinux 0xd9d923fa pci_set_dma_max_seg_size +EXPORT_SYMBOL vmlinux 0xd9da26d3 inet_twsk_deschedule +EXPORT_SYMBOL vmlinux 0xd9e2a491 ppp_output_wakeup +EXPORT_SYMBOL vmlinux 0xda3d10a8 security_tun_dev_open +EXPORT_SYMBOL vmlinux 0xda3eb7c2 ppp_register_net_channel +EXPORT_SYMBOL vmlinux 0xda41d231 unlock_two_nondirectories +EXPORT_SYMBOL vmlinux 0xda59ca81 genlmsg_put +EXPORT_SYMBOL vmlinux 0xda65c879 jbd2_journal_lock_updates +EXPORT_SYMBOL vmlinux 0xda7ca6cb fb_mode_is_equal +EXPORT_SYMBOL vmlinux 0xda8af7ad fb_find_nearest_mode +EXPORT_SYMBOL vmlinux 0xda94a50c tc6393xb_lcd_mode +EXPORT_SYMBOL vmlinux 0xda9f227b dev_addr_del +EXPORT_SYMBOL vmlinux 0xda9f5dc0 install_exec_creds +EXPORT_SYMBOL vmlinux 0xdaa57ec3 totalhigh_pages +EXPORT_SYMBOL vmlinux 0xdaafc807 tcp_sockets_allocated +EXPORT_SYMBOL vmlinux 0xdabb1f4b unmap_underlying_metadata +EXPORT_SYMBOL vmlinux 0xdac3baad seq_file_path +EXPORT_SYMBOL vmlinux 0xdac4913a bitmap_allocate_region +EXPORT_SYMBOL vmlinux 0xdad4521a mmc_unregister_driver +EXPORT_SYMBOL vmlinux 0xdad97f94 __raw_writesw +EXPORT_SYMBOL vmlinux 0xdadc5b86 page_readlink +EXPORT_SYMBOL vmlinux 0xdb053fc6 snd_pcm_lib_get_vmalloc_page +EXPORT_SYMBOL vmlinux 0xdb17937c unregister_netdevice_queue +EXPORT_SYMBOL vmlinux 0xdb1834a5 dcb_ieee_delapp +EXPORT_SYMBOL vmlinux 0xdb303111 d_walk +EXPORT_SYMBOL vmlinux 0xdb4292e4 omap_set_dma_params +EXPORT_SYMBOL vmlinux 0xdb49fcf7 snd_pcm_hw_constraint_pow2 +EXPORT_SYMBOL vmlinux 0xdb59b616 fddi_change_mtu +EXPORT_SYMBOL vmlinux 0xdb68bbad rfkill_destroy +EXPORT_SYMBOL vmlinux 0xdb7305a1 __stack_chk_fail +EXPORT_SYMBOL vmlinux 0xdb760f52 __kfifo_free +EXPORT_SYMBOL vmlinux 0xdb78aca0 of_parse_phandle_with_args +EXPORT_SYMBOL vmlinux 0xdb7ee11f tty_port_alloc_xmit_buf +EXPORT_SYMBOL vmlinux 0xdb896c56 proc_mkdir +EXPORT_SYMBOL vmlinux 0xdb89de78 elv_add_request +EXPORT_SYMBOL vmlinux 0xdb93b838 dispc_free_irq +EXPORT_SYMBOL vmlinux 0xdbb055eb skb_copy_datagram_from_iter +EXPORT_SYMBOL vmlinux 0xdbbd5f6e softnet_data +EXPORT_SYMBOL vmlinux 0xdbe72667 lease_get_mtime +EXPORT_SYMBOL vmlinux 0xdbf65c0f shdma_chan_filter +EXPORT_SYMBOL vmlinux 0xdbfacfa2 blk_pm_runtime_init +EXPORT_SYMBOL vmlinux 0xdc047fc4 scsi_dev_info_list_add_keyed +EXPORT_SYMBOL vmlinux 0xdc0bfd23 xfrm_garbage_collect +EXPORT_SYMBOL vmlinux 0xdc14eda7 pci_pci_problems +EXPORT_SYMBOL vmlinux 0xdc1d1753 from_kgid_munged +EXPORT_SYMBOL vmlinux 0xdc23e460 register_sound_dsp +EXPORT_SYMBOL vmlinux 0xdc3fcbc9 __sw_hweight8 +EXPORT_SYMBOL vmlinux 0xdc4ab50e skb_put +EXPORT_SYMBOL vmlinux 0xdc512134 backlight_register_notifier +EXPORT_SYMBOL vmlinux 0xdc5c6297 videomode_to_omap_video_timings +EXPORT_SYMBOL vmlinux 0xdc62f288 sock_no_sendmsg +EXPORT_SYMBOL vmlinux 0xdc7246a2 dev_get_flags +EXPORT_SYMBOL vmlinux 0xdc7ebed2 redirty_page_for_writepage +EXPORT_SYMBOL vmlinux 0xdc8f20d5 xfrm_user_policy +EXPORT_SYMBOL vmlinux 0xdc9a1662 d_delete +EXPORT_SYMBOL vmlinux 0xdc9e0b83 security_mmap_file +EXPORT_SYMBOL vmlinux 0xdca9ed48 edma_read_slot +EXPORT_SYMBOL vmlinux 0xdcb0349b sys_close +EXPORT_SYMBOL vmlinux 0xdcca831f dev_driver_string +EXPORT_SYMBOL vmlinux 0xdccb61ef mpage_writepages +EXPORT_SYMBOL vmlinux 0xdccf0346 zpool_register_driver +EXPORT_SYMBOL vmlinux 0xdcebc8a8 pagecache_write_end +EXPORT_SYMBOL vmlinux 0xdcfc0eb9 phy_register_fixup_for_uid +EXPORT_SYMBOL vmlinux 0xdd0a2ba2 strlcat +EXPORT_SYMBOL vmlinux 0xdd226fa9 __raw_readsw +EXPORT_SYMBOL vmlinux 0xdd27fa87 memchr +EXPORT_SYMBOL vmlinux 0xdd35d5de clk_register_clkdevs +EXPORT_SYMBOL vmlinux 0xdd3916ac _raw_spin_unlock_bh +EXPORT_SYMBOL vmlinux 0xdd441bf2 max8925_reg_write +EXPORT_SYMBOL vmlinux 0xdd581b25 tty_port_block_til_ready +EXPORT_SYMBOL vmlinux 0xdd82f22e fs_bio_set +EXPORT_SYMBOL vmlinux 0xdd8a1607 tty_port_raise_dtr_rts +EXPORT_SYMBOL vmlinux 0xdd93a449 xfrm_policy_byid +EXPORT_SYMBOL vmlinux 0xddbd8188 dss_mgr_enable +EXPORT_SYMBOL vmlinux 0xddbf181c eth_commit_mac_addr_change +EXPORT_SYMBOL vmlinux 0xddfd6d7f tty_flip_buffer_push +EXPORT_SYMBOL vmlinux 0xde17f59d i2c_smbus_write_byte +EXPORT_SYMBOL vmlinux 0xde1ba06c module_refcount +EXPORT_SYMBOL vmlinux 0xde219232 dst_release +EXPORT_SYMBOL vmlinux 0xde346bbe security_path_mknod +EXPORT_SYMBOL vmlinux 0xde3e3bc9 devm_gpio_request +EXPORT_SYMBOL vmlinux 0xde47e6eb vfs_path_lookup +EXPORT_SYMBOL vmlinux 0xde55be35 find_vma +EXPORT_SYMBOL vmlinux 0xde6ef33e ndo_dflt_fdb_add +EXPORT_SYMBOL vmlinux 0xde914cfc netdev_lower_dev_get_private +EXPORT_SYMBOL vmlinux 0xde9360ba totalram_pages +EXPORT_SYMBOL vmlinux 0xdecc6662 start_tty +EXPORT_SYMBOL vmlinux 0xded931f3 resource_list_create_entry +EXPORT_SYMBOL vmlinux 0xdeda609e override_creds +EXPORT_SYMBOL vmlinux 0xdedf756c mmc_register_driver +EXPORT_SYMBOL vmlinux 0xdf0b8adf km_policy_notify +EXPORT_SYMBOL vmlinux 0xdf1f092c iter_file_splice_write +EXPORT_SYMBOL vmlinux 0xdf2c2742 rb_last +EXPORT_SYMBOL vmlinux 0xdf3a693d crc_t10dif_update +EXPORT_SYMBOL vmlinux 0xdf3b4ebf ipv6_sock_mc_join +EXPORT_SYMBOL vmlinux 0xdf3e9c5f mutex_unlock +EXPORT_SYMBOL vmlinux 0xdf483745 bio_unmap_user +EXPORT_SYMBOL vmlinux 0xdf54a8f7 netlink_unregister_notifier +EXPORT_SYMBOL vmlinux 0xdf60cc27 __print_symbol +EXPORT_SYMBOL vmlinux 0xdf733fdd snd_ctl_boolean_stereo_info +EXPORT_SYMBOL vmlinux 0xdf73a994 mmc_can_reset +EXPORT_SYMBOL vmlinux 0xdf913f62 inode_set_flags +EXPORT_SYMBOL vmlinux 0xdf929370 fs_overflowgid +EXPORT_SYMBOL vmlinux 0xdfc5169b slhc_init +EXPORT_SYMBOL vmlinux 0xdfd91ce9 omap_type +EXPORT_SYMBOL vmlinux 0xdff905e5 vme_slave_free +EXPORT_SYMBOL vmlinux 0xe00efcc6 vfs_writef +EXPORT_SYMBOL vmlinux 0xe03c1238 snd_jack_set_key +EXPORT_SYMBOL vmlinux 0xe04f7caa dm_read_arg_group +EXPORT_SYMBOL vmlinux 0xe06141e9 security_sk_clone +EXPORT_SYMBOL vmlinux 0xe0729316 __serio_register_port +EXPORT_SYMBOL vmlinux 0xe0735b47 genlmsg_multicast_allns +EXPORT_SYMBOL vmlinux 0xe075d6eb iter_div_u64_rem +EXPORT_SYMBOL vmlinux 0xe077d3c6 __scsi_print_sense +EXPORT_SYMBOL vmlinux 0xe083e246 gen_pool_first_fit_order_align +EXPORT_SYMBOL vmlinux 0xe08e147c tty_lock +EXPORT_SYMBOL vmlinux 0xe0a4db4d ipv6_getsockopt +EXPORT_SYMBOL vmlinux 0xe0b13336 argv_free +EXPORT_SYMBOL vmlinux 0xe0b3db99 __sk_mem_schedule +EXPORT_SYMBOL vmlinux 0xe0b4cc7d con_set_default_unimap +EXPORT_SYMBOL vmlinux 0xe0bef318 icst_hz_to_vco +EXPORT_SYMBOL vmlinux 0xe0c28aaf __netif_schedule +EXPORT_SYMBOL vmlinux 0xe0c873b1 dev_get_by_index_rcu +EXPORT_SYMBOL vmlinux 0xe113bbbc csum_partial +EXPORT_SYMBOL vmlinux 0xe11b75d0 tcp_gro_complete +EXPORT_SYMBOL vmlinux 0xe127fb18 down_killable +EXPORT_SYMBOL vmlinux 0xe12b9957 gro_find_complete_by_type +EXPORT_SYMBOL vmlinux 0xe1540306 neigh_direct_output +EXPORT_SYMBOL vmlinux 0xe1761617 security_inet_conn_request +EXPORT_SYMBOL vmlinux 0xe1786c32 make_flow_keys_digest +EXPORT_SYMBOL vmlinux 0xe196144f udp_set_csum +EXPORT_SYMBOL vmlinux 0xe19ad1c2 devm_request_any_context_irq +EXPORT_SYMBOL vmlinux 0xe1d03aa7 omapdss_output_set_device +EXPORT_SYMBOL vmlinux 0xe1f0ab3a _raw_read_lock_irqsave +EXPORT_SYMBOL vmlinux 0xe200f872 secure_dccpv6_sequence_number +EXPORT_SYMBOL vmlinux 0xe2259c92 ps2_command +EXPORT_SYMBOL vmlinux 0xe23ae481 blk_iopoll_complete +EXPORT_SYMBOL vmlinux 0xe24d3a97 jiffies_64 +EXPORT_SYMBOL vmlinux 0xe256db08 netif_napi_add +EXPORT_SYMBOL vmlinux 0xe25d99f5 omapdss_default_get_resolution +EXPORT_SYMBOL vmlinux 0xe2801626 dmam_release_declared_memory +EXPORT_SYMBOL vmlinux 0xe281b924 down_write_trylock +EXPORT_SYMBOL vmlinux 0xe2851559 km_policy_expired +EXPORT_SYMBOL vmlinux 0xe29e1d0e out_of_line_wait_on_atomic_t +EXPORT_SYMBOL vmlinux 0xe2a80b3f scsi_remove_host +EXPORT_SYMBOL vmlinux 0xe2b2781b kiocb_set_cancel_fn +EXPORT_SYMBOL vmlinux 0xe2c631f7 skb_pull +EXPORT_SYMBOL vmlinux 0xe2d5255a strcmp +EXPORT_SYMBOL vmlinux 0xe2e3a92b swiotlb_unmap_sg_attrs +EXPORT_SYMBOL vmlinux 0xe2e8065e memdup_user +EXPORT_SYMBOL vmlinux 0xe2f425e7 rps_cpu_mask +EXPORT_SYMBOL vmlinux 0xe2fae716 kmemdup +EXPORT_SYMBOL vmlinux 0xe300f401 jbd2_journal_clear_features +EXPORT_SYMBOL vmlinux 0xe312a199 tty_free_termios +EXPORT_SYMBOL vmlinux 0xe33d7392 mb_cache_entry_get +EXPORT_SYMBOL vmlinux 0xe3491230 tso_build_hdr +EXPORT_SYMBOL vmlinux 0xe36e9db8 find_inode_nowait +EXPORT_SYMBOL vmlinux 0xe37d10ae omap_dispc_unregister_isr +EXPORT_SYMBOL vmlinux 0xe39eef81 nf_reinject +EXPORT_SYMBOL vmlinux 0xe3b7de8f nand_unlock +EXPORT_SYMBOL vmlinux 0xe3c44087 ns_capable +EXPORT_SYMBOL vmlinux 0xe3d6f284 fb_find_mode_cvt +EXPORT_SYMBOL vmlinux 0xe3e933c4 blk_queue_prep_rq +EXPORT_SYMBOL vmlinux 0xe4054442 scsi_block_when_processing_errors +EXPORT_SYMBOL vmlinux 0xe413be4a memcg_socket_limit_enabled +EXPORT_SYMBOL vmlinux 0xe41fa233 page_zero_new_buffers +EXPORT_SYMBOL vmlinux 0xe4204c5d blk_pre_runtime_suspend +EXPORT_SYMBOL vmlinux 0xe4285494 d_rehash +EXPORT_SYMBOL vmlinux 0xe43274bc proc_dointvec +EXPORT_SYMBOL vmlinux 0xe434c2a1 pci_match_id +EXPORT_SYMBOL vmlinux 0xe47abdd5 uart_register_driver +EXPORT_SYMBOL vmlinux 0xe48e0af3 netdev_master_upper_dev_link +EXPORT_SYMBOL vmlinux 0xe4a45881 __sock_create +EXPORT_SYMBOL vmlinux 0xe4a9dac1 follow_pfn +EXPORT_SYMBOL vmlinux 0xe4abb74d scsi_target_quiesce +EXPORT_SYMBOL vmlinux 0xe4ad04ca pci_back_from_sleep +EXPORT_SYMBOL vmlinux 0xe4ad8da1 elevator_alloc +EXPORT_SYMBOL vmlinux 0xe4adb30c scsi_report_opcode +EXPORT_SYMBOL vmlinux 0xe4c80097 cacheid +EXPORT_SYMBOL vmlinux 0xe4d847ff d_alloc_pseudo +EXPORT_SYMBOL vmlinux 0xe4ed2983 pci_bus_read_config_word +EXPORT_SYMBOL vmlinux 0xe4f13aad nf_unregister_sockopt +EXPORT_SYMBOL vmlinux 0xe50503d8 twl6040_clear_bits +EXPORT_SYMBOL vmlinux 0xe5120c26 xfrm_find_acq +EXPORT_SYMBOL vmlinux 0xe51537e7 dev_mc_del +EXPORT_SYMBOL vmlinux 0xe523ad75 synchronize_irq +EXPORT_SYMBOL vmlinux 0xe54eb10d cdrom_mode_select +EXPORT_SYMBOL vmlinux 0xe556a9f4 jbd2_journal_revoke +EXPORT_SYMBOL vmlinux 0xe5578281 mutex_lock_interruptible +EXPORT_SYMBOL vmlinux 0xe56a9336 snd_pcm_format_width +EXPORT_SYMBOL vmlinux 0xe57361dd __tracepoint_kmem_cache_alloc +EXPORT_SYMBOL vmlinux 0xe5769ae6 default_qdisc_ops +EXPORT_SYMBOL vmlinux 0xe57878a1 in6_pton +EXPORT_SYMBOL vmlinux 0xe5867808 dlci_ioctl_set +EXPORT_SYMBOL vmlinux 0xe5a02732 module_layout +EXPORT_SYMBOL vmlinux 0xe5b50551 free_buffer_head +EXPORT_SYMBOL vmlinux 0xe5b8d382 scsi_is_sdev_device +EXPORT_SYMBOL vmlinux 0xe5c480b5 tty_hung_up_p +EXPORT_SYMBOL vmlinux 0xe5c78a99 do_blank_screen +EXPORT_SYMBOL vmlinux 0xe5e69e93 pci_wait_for_pending_transaction +EXPORT_SYMBOL vmlinux 0xe5ed5467 xfrm_policy_walk_init +EXPORT_SYMBOL vmlinux 0xe603bffe napi_gro_flush +EXPORT_SYMBOL vmlinux 0xe63a4634 mipi_dsi_dcs_set_tear_off +EXPORT_SYMBOL vmlinux 0xe64ab2b8 simple_release_fs +EXPORT_SYMBOL vmlinux 0xe65bc2a1 mfd_cell_disable +EXPORT_SYMBOL vmlinux 0xe66452ab dql_init +EXPORT_SYMBOL vmlinux 0xe693a6ce vme_get_size +EXPORT_SYMBOL vmlinux 0xe697d108 __blk_iopoll_complete +EXPORT_SYMBOL vmlinux 0xe6a025c3 omap_dss_find_device +EXPORT_SYMBOL vmlinux 0xe6a1488c page_waitqueue +EXPORT_SYMBOL vmlinux 0xe6a8e48c dqput +EXPORT_SYMBOL vmlinux 0xe6ebc016 key_create_or_update +EXPORT_SYMBOL vmlinux 0xe6fbe430 can_do_mlock +EXPORT_SYMBOL vmlinux 0xe6fd0231 generic_block_fiemap +EXPORT_SYMBOL vmlinux 0xe7075b97 idr_alloc_cyclic +EXPORT_SYMBOL vmlinux 0xe707d823 __aeabi_uidiv +EXPORT_SYMBOL vmlinux 0xe70fa93f twl6040_get_sysclk +EXPORT_SYMBOL vmlinux 0xe733cfe9 bio_add_pc_page +EXPORT_SYMBOL vmlinux 0xe742d037 mipi_dsi_detach +EXPORT_SYMBOL vmlinux 0xe742dec4 __wait_on_buffer +EXPORT_SYMBOL vmlinux 0xe759dfbb snd_pcm_new_internal +EXPORT_SYMBOL vmlinux 0xe790afc3 omap_get_dma_dst_pos +EXPORT_SYMBOL vmlinux 0xe7a05f62 pcie_set_mps +EXPORT_SYMBOL vmlinux 0xe7a664c4 nf_hooks +EXPORT_SYMBOL vmlinux 0xe7a81967 audit_log_secctx +EXPORT_SYMBOL vmlinux 0xe7b6315e kblockd_schedule_delayed_work_on +EXPORT_SYMBOL vmlinux 0xe7d4daac seq_list_next +EXPORT_SYMBOL vmlinux 0xe7e15910 dispc_clear_irqstatus +EXPORT_SYMBOL vmlinux 0xe7e6d0dd finish_no_open +EXPORT_SYMBOL vmlinux 0xe7e72500 netdev_update_features +EXPORT_SYMBOL vmlinux 0xe7f6e945 sock_no_sendpage +EXPORT_SYMBOL vmlinux 0xe7facd95 snd_timer_open +EXPORT_SYMBOL vmlinux 0xe81ef1dd remove_conflicting_framebuffers +EXPORT_SYMBOL vmlinux 0xe8214184 tcf_exts_destroy +EXPORT_SYMBOL vmlinux 0xe82a7784 xfrm_unregister_mode +EXPORT_SYMBOL vmlinux 0xe832c235 tcp_req_err +EXPORT_SYMBOL vmlinux 0xe837e532 __generic_block_fiemap +EXPORT_SYMBOL vmlinux 0xe8590902 filemap_page_mkwrite +EXPORT_SYMBOL vmlinux 0xe85debdf forget_all_cached_acls +EXPORT_SYMBOL vmlinux 0xe85fc725 rtnl_configure_link +EXPORT_SYMBOL vmlinux 0xe874e78b unregister_quota_format +EXPORT_SYMBOL vmlinux 0xe8794ce1 slhc_toss +EXPORT_SYMBOL vmlinux 0xe87b2edd sg_copy_buffer +EXPORT_SYMBOL vmlinux 0xe880009f tcf_hash_insert +EXPORT_SYMBOL vmlinux 0xe893fee7 mem_cgroup_end_page_stat +EXPORT_SYMBOL vmlinux 0xe8b3dedc clear_nlink +EXPORT_SYMBOL vmlinux 0xe8bea3bc qdisc_put_stab +EXPORT_SYMBOL vmlinux 0xe8df8ded write_one_page +EXPORT_SYMBOL vmlinux 0xe90094e0 find_lock_entry +EXPORT_SYMBOL vmlinux 0xe90179dc fb_find_mode +EXPORT_SYMBOL vmlinux 0xe90a48ae vlan_vid_del +EXPORT_SYMBOL vmlinux 0xe912da6b unregister_sysctl_table +EXPORT_SYMBOL vmlinux 0xe914e41e strcpy +EXPORT_SYMBOL vmlinux 0xe93f6042 trace_print_symbols_seq +EXPORT_SYMBOL vmlinux 0xe9416840 bdget +EXPORT_SYMBOL vmlinux 0xe953b21f get_next_ino +EXPORT_SYMBOL vmlinux 0xe95e00cf flex_array_get_ptr +EXPORT_SYMBOL vmlinux 0xe971f8e1 pci_scan_bridge +EXPORT_SYMBOL vmlinux 0xe9937102 simple_unlink +EXPORT_SYMBOL vmlinux 0xe9a06489 vme_bus_type +EXPORT_SYMBOL vmlinux 0xe9ab6051 phy_driver_register +EXPORT_SYMBOL vmlinux 0xe9be808d lockref_get_or_lock +EXPORT_SYMBOL vmlinux 0xe9cab497 tty_name +EXPORT_SYMBOL vmlinux 0xe9d03ae6 sock_alloc_file +EXPORT_SYMBOL vmlinux 0xe9f7149c zlib_deflate_workspacesize +EXPORT_SYMBOL vmlinux 0xea054b22 nla_policy_len +EXPORT_SYMBOL vmlinux 0xea0c8d7c input_set_capability +EXPORT_SYMBOL vmlinux 0xea16dd4c tcp_destroy_cgroup +EXPORT_SYMBOL vmlinux 0xea1f5b88 samsung_rev +EXPORT_SYMBOL vmlinux 0xea48cf0a phy_drivers_register +EXPORT_SYMBOL vmlinux 0xea49bfb6 get_phy_device +EXPORT_SYMBOL vmlinux 0xea66f5bc bio_clone_fast +EXPORT_SYMBOL vmlinux 0xea7278bf kdb_current_task +EXPORT_SYMBOL vmlinux 0xea7987f1 key_update +EXPORT_SYMBOL vmlinux 0xea7a42f9 __sg_free_table +EXPORT_SYMBOL vmlinux 0xea911eda crypto_sha512_update +EXPORT_SYMBOL vmlinux 0xeab684b7 devm_devfreq_unregister_opp_notifier +EXPORT_SYMBOL vmlinux 0xeab963ba mdiobus_unregister +EXPORT_SYMBOL vmlinux 0xead79489 __breadahead +EXPORT_SYMBOL vmlinux 0xeada0c98 pci_wake_from_d3 +EXPORT_SYMBOL vmlinux 0xeadb289f inc_nlink +EXPORT_SYMBOL vmlinux 0xeae32f54 phy_detach +EXPORT_SYMBOL vmlinux 0xeafc399c pcie_capability_clear_and_set_dword +EXPORT_SYMBOL vmlinux 0xeb03b389 __raw_readsl +EXPORT_SYMBOL vmlinux 0xeb1aaf77 netif_tx_wake_queue +EXPORT_SYMBOL vmlinux 0xeb1b120e omap_set_dma_write_mode +EXPORT_SYMBOL vmlinux 0xeb2d8137 init_task +EXPORT_SYMBOL vmlinux 0xeb37101c audit_log_end +EXPORT_SYMBOL vmlinux 0xeb48eaf5 blk_mq_end_request +EXPORT_SYMBOL vmlinux 0xeb50ec63 scsi_eh_restore_cmnd +EXPORT_SYMBOL vmlinux 0xeb55a931 __kfifo_max_r +EXPORT_SYMBOL vmlinux 0xeb565e1b clk_get +EXPORT_SYMBOL vmlinux 0xeb5f6af8 xfrm_register_km +EXPORT_SYMBOL vmlinux 0xeb63ecd1 pci_find_bus +EXPORT_SYMBOL vmlinux 0xeb77e6cc elv_rb_former_request +EXPORT_SYMBOL vmlinux 0xeb818925 pagecache_write_begin +EXPORT_SYMBOL vmlinux 0xeb87773f pci_bus_write_config_byte +EXPORT_SYMBOL vmlinux 0xeb905e77 key_payload_reserve +EXPORT_SYMBOL vmlinux 0xeb937d54 tty_port_open +EXPORT_SYMBOL vmlinux 0xeb949b12 generic_file_write_iter +EXPORT_SYMBOL vmlinux 0xeba3dbd9 dquot_disable +EXPORT_SYMBOL vmlinux 0xebf2d82e uart_write_wakeup +EXPORT_SYMBOL vmlinux 0xebf4edbd vlan_dev_vlan_id +EXPORT_SYMBOL vmlinux 0xebfdcbdf system_serial_high +EXPORT_SYMBOL vmlinux 0xec031626 fb_pan_display +EXPORT_SYMBOL vmlinux 0xec18ebf3 of_find_compatible_node +EXPORT_SYMBOL vmlinux 0xec1aa6ef memzero_explicit +EXPORT_SYMBOL vmlinux 0xec2f926f scsi_device_set_state +EXPORT_SYMBOL vmlinux 0xec4d9e3a clk_get_sys +EXPORT_SYMBOL vmlinux 0xec53427d capable_wrt_inode_uidgid +EXPORT_SYMBOL vmlinux 0xec766c17 tcp_splice_read +EXPORT_SYMBOL vmlinux 0xec7b1897 d_move +EXPORT_SYMBOL vmlinux 0xec829e10 request_key_async +EXPORT_SYMBOL vmlinux 0xec924739 __dev_get_by_index +EXPORT_SYMBOL vmlinux 0xec94f7af param_set_byte +EXPORT_SYMBOL vmlinux 0xeca8c78f pci_read_vpd +EXPORT_SYMBOL vmlinux 0xecb64026 zero_fill_bio +EXPORT_SYMBOL vmlinux 0xecb75d3f follow_up +EXPORT_SYMBOL vmlinux 0xecbcb8bb radix_tree_lookup_slot +EXPORT_SYMBOL vmlinux 0xecc87e09 sk_stream_wait_connect +EXPORT_SYMBOL vmlinux 0xecd110c9 snd_ctl_register_ioctl +EXPORT_SYMBOL vmlinux 0xece784c2 rb_first +EXPORT_SYMBOL vmlinux 0xecee6bf3 dquot_set_dqinfo +EXPORT_SYMBOL vmlinux 0xecf8a3b4 __raw_writesl +EXPORT_SYMBOL vmlinux 0xed0f35eb netdev_alert +EXPORT_SYMBOL vmlinux 0xed2b8383 simple_write_begin +EXPORT_SYMBOL vmlinux 0xed3d5ea1 netlink_ns_capable +EXPORT_SYMBOL vmlinux 0xed4cb7b0 get_super +EXPORT_SYMBOL vmlinux 0xed4d8e55 copy_from_iter +EXPORT_SYMBOL vmlinux 0xed597524 qdisc_get_rtab +EXPORT_SYMBOL vmlinux 0xed6308e2 read_dev_sector +EXPORT_SYMBOL vmlinux 0xed638151 dquot_quota_off +EXPORT_SYMBOL vmlinux 0xed687304 __inode_sub_bytes +EXPORT_SYMBOL vmlinux 0xed75665c jbd2_journal_abort +EXPORT_SYMBOL vmlinux 0xed7a2151 __napi_schedule +EXPORT_SYMBOL vmlinux 0xed838b44 seq_open_private +EXPORT_SYMBOL vmlinux 0xed86863a wait_for_key_construction +EXPORT_SYMBOL vmlinux 0xed93f29e __kunmap_atomic +EXPORT_SYMBOL vmlinux 0xed9f9a20 __ctzsi2 +EXPORT_SYMBOL vmlinux 0xeda32236 __skb_get_hash_flowi6 +EXPORT_SYMBOL vmlinux 0xedb24b11 sock_from_file +EXPORT_SYMBOL vmlinux 0xedbaee5e nla_strcmp +EXPORT_SYMBOL vmlinux 0xedc03953 iounmap +EXPORT_SYMBOL vmlinux 0xedc7f4ec dq_data_lock +EXPORT_SYMBOL vmlinux 0xedd9106d __ashrdi3 +EXPORT_SYMBOL vmlinux 0xee09f50f request_key_with_auxdata +EXPORT_SYMBOL vmlinux 0xee111fc9 reservation_object_add_excl_fence +EXPORT_SYMBOL vmlinux 0xee17e59b devm_gpio_free +EXPORT_SYMBOL vmlinux 0xee2bc2d0 omapdss_is_initialized +EXPORT_SYMBOL vmlinux 0xee2d0fc7 _local_bh_enable +EXPORT_SYMBOL vmlinux 0xee345948 nf_log_register +EXPORT_SYMBOL vmlinux 0xee474a05 __blk_end_request_all +EXPORT_SYMBOL vmlinux 0xee47ee61 mmc_start_bkops +EXPORT_SYMBOL vmlinux 0xee505983 generic_pipe_buf_confirm +EXPORT_SYMBOL vmlinux 0xee6f8884 xfrm_state_check_expire +EXPORT_SYMBOL vmlinux 0xee715ef8 lg_global_unlock +EXPORT_SYMBOL vmlinux 0xee91879b rb_first_postorder +EXPORT_SYMBOL vmlinux 0xee942275 mmc_gpio_request_ro +EXPORT_SYMBOL vmlinux 0xee9c3647 tcp_hashinfo +EXPORT_SYMBOL vmlinux 0xeea9dbaf bitmap_bitremap +EXPORT_SYMBOL vmlinux 0xeeadeffb d_obtain_root +EXPORT_SYMBOL vmlinux 0xeeb6dfce uart_match_port +EXPORT_SYMBOL vmlinux 0xeec30157 bio_integrity_trim +EXPORT_SYMBOL vmlinux 0xeed3635b proc_dostring +EXPORT_SYMBOL vmlinux 0xeedb7a67 __kernel_write +EXPORT_SYMBOL vmlinux 0xeee7c024 poll_initwait +EXPORT_SYMBOL vmlinux 0xeef161aa groups_free +EXPORT_SYMBOL vmlinux 0xeefe7578 mmc_wait_for_app_cmd +EXPORT_SYMBOL vmlinux 0xef12f2d1 poll_schedule_timeout +EXPORT_SYMBOL vmlinux 0xef171336 write_inode_now +EXPORT_SYMBOL vmlinux 0xef2fdc4f __percpu_counter_init +EXPORT_SYMBOL vmlinux 0xef51aa36 tc_classify_compat +EXPORT_SYMBOL vmlinux 0xef691109 blk_queue_max_segment_size +EXPORT_SYMBOL vmlinux 0xef859391 onfi_async_timing_mode_to_sdr_timings +EXPORT_SYMBOL vmlinux 0xefab4a0d zpool_unregister_driver +EXPORT_SYMBOL vmlinux 0xefcc22bb kernel_getsockname +EXPORT_SYMBOL vmlinux 0xefcf3143 wait_for_completion_io +EXPORT_SYMBOL vmlinux 0xefd1624a vme_dma_free_attribute +EXPORT_SYMBOL vmlinux 0xefd6cf06 __aeabi_unwind_cpp_pr0 +EXPORT_SYMBOL vmlinux 0xefdcb903 i2c_smbus_write_i2c_block_data +EXPORT_SYMBOL vmlinux 0xefdd70ce security_secid_to_secctx +EXPORT_SYMBOL vmlinux 0xefeb9601 __xfrm_policy_check +EXPORT_SYMBOL vmlinux 0xefec312f omap_get_dma_active_status +EXPORT_SYMBOL vmlinux 0xeff061e3 d_hash_and_lookup +EXPORT_SYMBOL vmlinux 0xf0009fee put_pages_list +EXPORT_SYMBOL vmlinux 0xf0056348 pci_unmap_rom +EXPORT_SYMBOL vmlinux 0xf007f549 phy_device_register +EXPORT_SYMBOL vmlinux 0xf0187927 __sg_page_iter_next +EXPORT_SYMBOL vmlinux 0xf01c34e0 dquot_scan_active +EXPORT_SYMBOL vmlinux 0xf02a02bc of_get_next_available_child +EXPORT_SYMBOL vmlinux 0xf02bca7c generic_file_mmap +EXPORT_SYMBOL vmlinux 0xf0387f59 dump_page +EXPORT_SYMBOL vmlinux 0xf0445d98 rtnetlink_put_metrics +EXPORT_SYMBOL vmlinux 0xf05ffa15 fb_var_to_videomode +EXPORT_SYMBOL vmlinux 0xf06c303c omap_video_timings_to_videomode +EXPORT_SYMBOL vmlinux 0xf0702129 __dec_zone_page_state +EXPORT_SYMBOL vmlinux 0xf0821417 alloc_fcdev +EXPORT_SYMBOL vmlinux 0xf084a2b9 devfreq_resume_device +EXPORT_SYMBOL vmlinux 0xf08c67de napi_alloc_frag +EXPORT_SYMBOL vmlinux 0xf09de776 get_random_int +EXPORT_SYMBOL vmlinux 0xf0a68505 phy_mac_interrupt +EXPORT_SYMBOL vmlinux 0xf0ca7349 xfrm_state_lookup_byaddr +EXPORT_SYMBOL vmlinux 0xf0d1b274 cdrom_get_last_written +EXPORT_SYMBOL vmlinux 0xf0e80898 skb_dequeue +EXPORT_SYMBOL vmlinux 0xf0ed2ef4 __raw_writesb +EXPORT_SYMBOL vmlinux 0xf0ef15b4 list_sort +EXPORT_SYMBOL vmlinux 0xf10526ac verify_spi_info +EXPORT_SYMBOL vmlinux 0xf11c8fed irq_to_desc +EXPORT_SYMBOL vmlinux 0xf141624a __scsi_device_lookup +EXPORT_SYMBOL vmlinux 0xf1473bc8 blk_end_request +EXPORT_SYMBOL vmlinux 0xf147dcb2 hdmi_spd_infoframe_init +EXPORT_SYMBOL vmlinux 0xf152890c register_md_personality +EXPORT_SYMBOL vmlinux 0xf16bf7ef scsi_register_interface +EXPORT_SYMBOL vmlinux 0xf1773261 dquot_set_dqblk +EXPORT_SYMBOL vmlinux 0xf17d7ca8 pagecache_isize_extended +EXPORT_SYMBOL vmlinux 0xf181d84f xfrm_register_mode +EXPORT_SYMBOL vmlinux 0xf18a3204 netlink_net_capable +EXPORT_SYMBOL vmlinux 0xf18d18c6 pci_pme_active +EXPORT_SYMBOL vmlinux 0xf195c682 fb_invert_cmaps +EXPORT_SYMBOL vmlinux 0xf1969a8e __usecs_to_jiffies +EXPORT_SYMBOL vmlinux 0xf199a6ab i2c_smbus_write_byte_data +EXPORT_SYMBOL vmlinux 0xf19e9355 cpu_online_mask +EXPORT_SYMBOL vmlinux 0xf1db1704 nla_memcpy +EXPORT_SYMBOL vmlinux 0xf1deabf2 div64_u64 +EXPORT_SYMBOL vmlinux 0xf1e0b260 edma_set_transfer_params +EXPORT_SYMBOL vmlinux 0xf1e98c74 avenrun +EXPORT_SYMBOL vmlinux 0xf1ea6f1c __bswapsi2 +EXPORT_SYMBOL vmlinux 0xf1ff08cb dma_async_tx_descriptor_init +EXPORT_SYMBOL vmlinux 0xf2016c3f try_to_writeback_inodes_sb +EXPORT_SYMBOL vmlinux 0xf20dabd8 free_irq +EXPORT_SYMBOL vmlinux 0xf2135d62 textsearch_register +EXPORT_SYMBOL vmlinux 0xf22961bf bioset_free +EXPORT_SYMBOL vmlinux 0xf22b5719 swiotlb_map_sg_attrs +EXPORT_SYMBOL vmlinux 0xf22c56fe __sock_tx_timestamp +EXPORT_SYMBOL vmlinux 0xf22d097b audit_log +EXPORT_SYMBOL vmlinux 0xf23fcb99 __kfifo_in +EXPORT_SYMBOL vmlinux 0xf242b66e filemap_fdatawait_range +EXPORT_SYMBOL vmlinux 0xf25471f0 scsi_cmd_blk_ioctl +EXPORT_SYMBOL vmlinux 0xf2644e56 blk_end_request_all +EXPORT_SYMBOL vmlinux 0xf26be544 ioc_lookup_icq +EXPORT_SYMBOL vmlinux 0xf2704d29 of_device_unregister +EXPORT_SYMBOL vmlinux 0xf2827685 acl_by_type +EXPORT_SYMBOL vmlinux 0xf2997713 tty_termios_hw_change +EXPORT_SYMBOL vmlinux 0xf2a0af8f backlight_device_registered +EXPORT_SYMBOL vmlinux 0xf2a2fca7 mb_cache_entry_find_next +EXPORT_SYMBOL vmlinux 0xf2ba51f6 filemap_fdatawrite +EXPORT_SYMBOL vmlinux 0xf2c43f3f zlib_deflate +EXPORT_SYMBOL vmlinux 0xf2e69cee phy_suspend +EXPORT_SYMBOL vmlinux 0xf301dba9 locks_copy_conflock +EXPORT_SYMBOL vmlinux 0xf313da4e sha_transform +EXPORT_SYMBOL vmlinux 0xf31e6192 truncate_inode_pages +EXPORT_SYMBOL vmlinux 0xf3341268 __clear_user +EXPORT_SYMBOL vmlinux 0xf335bff3 sock_no_accept +EXPORT_SYMBOL vmlinux 0xf346231f seq_list_start_head +EXPORT_SYMBOL vmlinux 0xf353a698 register_module_notifier +EXPORT_SYMBOL vmlinux 0xf35c3e3b pps_event +EXPORT_SYMBOL vmlinux 0xf3797152 snd_interval_ratnum +EXPORT_SYMBOL vmlinux 0xf381a551 __tcf_em_tree_match +EXPORT_SYMBOL vmlinux 0xf388ad03 blk_sync_queue +EXPORT_SYMBOL vmlinux 0xf389fe60 __hw_addr_init +EXPORT_SYMBOL vmlinux 0xf38b8907 genl_notify +EXPORT_SYMBOL vmlinux 0xf3916987 global_cursor_default +EXPORT_SYMBOL vmlinux 0xf396cd21 tcp_parse_md5sig_option +EXPORT_SYMBOL vmlinux 0xf3b1e84e omap_dss_put_device +EXPORT_SYMBOL vmlinux 0xf3b52391 napi_get_frags +EXPORT_SYMBOL vmlinux 0xf3baaed4 fsnotify_add_mark +EXPORT_SYMBOL vmlinux 0xf3e6402e __bitmap_equal +EXPORT_SYMBOL vmlinux 0xf408661f of_graph_get_remote_port +EXPORT_SYMBOL vmlinux 0xf40b2297 __crypto_memneq +EXPORT_SYMBOL vmlinux 0xf4174900 sock_no_recvmsg +EXPORT_SYMBOL vmlinux 0xf44fd7bd scsi_device_lookup_by_target +EXPORT_SYMBOL vmlinux 0xf46b6d16 xfrm_state_alloc +EXPORT_SYMBOL vmlinux 0xf473ffaf down +EXPORT_SYMBOL vmlinux 0xf474c21c bitmap_print_to_pagebuf +EXPORT_SYMBOL vmlinux 0xf474fdcb kfree_const +EXPORT_SYMBOL vmlinux 0xf479e90d sched_autogroup_detach +EXPORT_SYMBOL vmlinux 0xf47f8eb6 clocksource_unregister +EXPORT_SYMBOL vmlinux 0xf489a9b8 inet_shutdown +EXPORT_SYMBOL vmlinux 0xf49c66c7 mmc_start_req +EXPORT_SYMBOL vmlinux 0xf49ed248 copy_strings_kernel +EXPORT_SYMBOL vmlinux 0xf4a7fc6d omapdss_compat_init +EXPORT_SYMBOL vmlinux 0xf4bdbeb9 __frontswap_invalidate_area +EXPORT_SYMBOL vmlinux 0xf4d51b5c register_sound_special_device +EXPORT_SYMBOL vmlinux 0xf4f14de6 rtnl_trylock +EXPORT_SYMBOL vmlinux 0xf4f71fc3 gen_pool_alloc +EXPORT_SYMBOL vmlinux 0xf4f83bca param_set_uint +EXPORT_SYMBOL vmlinux 0xf510440c dev_change_flags +EXPORT_SYMBOL vmlinux 0xf5115a36 skb_copy_expand +EXPORT_SYMBOL vmlinux 0xf522f8b1 d_alloc +EXPORT_SYMBOL vmlinux 0xf526e6be from_kprojid_munged +EXPORT_SYMBOL vmlinux 0xf528745c snd_pcm_lib_malloc_pages +EXPORT_SYMBOL vmlinux 0xf5333a18 rtnl_unicast +EXPORT_SYMBOL vmlinux 0xf5336d80 inode_set_bytes +EXPORT_SYMBOL vmlinux 0xf5375afb bio_endio +EXPORT_SYMBOL vmlinux 0xf53d4c26 qdisc_class_hash_destroy +EXPORT_SYMBOL vmlinux 0xf5514ce0 ioremap_page +EXPORT_SYMBOL vmlinux 0xf564412a __aeabi_ulcmp +EXPORT_SYMBOL vmlinux 0xf58f1b21 dev_mc_add +EXPORT_SYMBOL vmlinux 0xf59e026f phy_connect_direct +EXPORT_SYMBOL vmlinux 0xf5a10e25 vme_slave_set +EXPORT_SYMBOL vmlinux 0xf5a92517 phy_device_create +EXPORT_SYMBOL vmlinux 0xf5b6ea8e __mod_zone_page_state +EXPORT_SYMBOL vmlinux 0xf5c2d34d hdmi_audio_infoframe_init +EXPORT_SYMBOL vmlinux 0xf5ca8ba4 devm_clk_get +EXPORT_SYMBOL vmlinux 0xf5eb86ea blk_verify_command +EXPORT_SYMBOL vmlinux 0xf5ffe3f1 neigh_seq_next +EXPORT_SYMBOL vmlinux 0xf619a29a ata_port_printk +EXPORT_SYMBOL vmlinux 0xf6388c56 sysctl_ip_default_ttl +EXPORT_SYMBOL vmlinux 0xf66dd905 mmc_read_bkops_status +EXPORT_SYMBOL vmlinux 0xf66e487b dquot_file_open +EXPORT_SYMBOL vmlinux 0xf6770391 mac_pton +EXPORT_SYMBOL vmlinux 0xf67abdaf ll_rw_block +EXPORT_SYMBOL vmlinux 0xf68285c0 register_inetaddr_notifier +EXPORT_SYMBOL vmlinux 0xf6851d5f register_sysctl_paths +EXPORT_SYMBOL vmlinux 0xf68687be __sg_page_iter_start +EXPORT_SYMBOL vmlinux 0xf68e9e13 i2c_smbus_read_byte +EXPORT_SYMBOL vmlinux 0xf6917f5c proc_symlink +EXPORT_SYMBOL vmlinux 0xf6b5b830 netdev_bonding_info_change +EXPORT_SYMBOL vmlinux 0xf6bb4729 color_table +EXPORT_SYMBOL vmlinux 0xf6dca995 skb_pad +EXPORT_SYMBOL vmlinux 0xf6ebc03b net_ratelimit +EXPORT_SYMBOL vmlinux 0xf6fc7916 alloc_skb_with_frags +EXPORT_SYMBOL vmlinux 0xf6fc8791 __bitmap_xor +EXPORT_SYMBOL vmlinux 0xf70160de redraw_screen +EXPORT_SYMBOL vmlinux 0xf7163ec9 __raw_readsb +EXPORT_SYMBOL vmlinux 0xf71cd3cf tty_port_tty_set +EXPORT_SYMBOL vmlinux 0xf725d85b nf_ip6_checksum +EXPORT_SYMBOL vmlinux 0xf7271948 edma_set_src_index +EXPORT_SYMBOL vmlinux 0xf7406a60 __skb_gso_segment +EXPORT_SYMBOL vmlinux 0xf74c2703 skb_make_writable +EXPORT_SYMBOL vmlinux 0xf7584a9c find_font +EXPORT_SYMBOL vmlinux 0xf76186f3 unregister_netdev +EXPORT_SYMBOL vmlinux 0xf76261a4 dev_mc_add_excl +EXPORT_SYMBOL vmlinux 0xf76b94b8 bio_integrity_add_page +EXPORT_SYMBOL vmlinux 0xf7799a49 cdrom_number_of_slots +EXPORT_SYMBOL vmlinux 0xf77c9ca0 of_io_request_and_map +EXPORT_SYMBOL vmlinux 0xf77fc359 netif_stacked_transfer_operstate +EXPORT_SYMBOL vmlinux 0xf7802486 __aeabi_uidivmod +EXPORT_SYMBOL vmlinux 0xf7858e69 tcf_destroy_chain +EXPORT_SYMBOL vmlinux 0xf7902347 ip_do_fragment +EXPORT_SYMBOL vmlinux 0xf79704fe ppp_register_channel +EXPORT_SYMBOL vmlinux 0xf79ce83a bdi_register_dev +EXPORT_SYMBOL vmlinux 0xf7a422eb misc_deregister +EXPORT_SYMBOL vmlinux 0xf7aaeddc ida_init +EXPORT_SYMBOL vmlinux 0xf7bcc8d7 __hw_addr_sync_dev +EXPORT_SYMBOL vmlinux 0xf7dcdda1 set_blocksize +EXPORT_SYMBOL vmlinux 0xf7ee9f4d fddi_type_trans +EXPORT_SYMBOL vmlinux 0xf7f2c506 dev_add_offload +EXPORT_SYMBOL vmlinux 0xf811e69d scsi_eh_flush_done_q +EXPORT_SYMBOL vmlinux 0xf824a271 dev_remove_offload +EXPORT_SYMBOL vmlinux 0xf827cb83 free_reserved_area +EXPORT_SYMBOL vmlinux 0xf82abc1d isa_dma_bridge_buggy +EXPORT_SYMBOL vmlinux 0xf82ec573 rb_prev +EXPORT_SYMBOL vmlinux 0xf86bf2bb xfrm4_rcv_cb +EXPORT_SYMBOL vmlinux 0xf873d25b make_kprojid +EXPORT_SYMBOL vmlinux 0xf87749f5 input_register_device +EXPORT_SYMBOL vmlinux 0xf89ad85a param_set_ulong +EXPORT_SYMBOL vmlinux 0xf8be034c vfs_iter_write +EXPORT_SYMBOL vmlinux 0xf8c501cb napi_gro_receive +EXPORT_SYMBOL vmlinux 0xf8c5d276 blk_queue_bounce_limit +EXPORT_SYMBOL vmlinux 0xf8c8333b vga_set_legacy_decoding +EXPORT_SYMBOL vmlinux 0xf8e23bd6 blk_queue_softirq_done +EXPORT_SYMBOL vmlinux 0xf8eee90f omapdss_default_get_timings +EXPORT_SYMBOL vmlinux 0xf91cbf65 __cleancache_init_shared_fs +EXPORT_SYMBOL vmlinux 0xf9348cbc xz_dec_run +EXPORT_SYMBOL vmlinux 0xf9384772 dquot_transfer +EXPORT_SYMBOL vmlinux 0xf9427374 dispc_request_irq +EXPORT_SYMBOL vmlinux 0xf945423c key_task_permission +EXPORT_SYMBOL vmlinux 0xf95ef7f6 param_ops_charp +EXPORT_SYMBOL vmlinux 0xf961c459 scsi_init_io +EXPORT_SYMBOL vmlinux 0xf9772595 nobh_writepage +EXPORT_SYMBOL vmlinux 0xf97ee8ac handle_edge_irq +EXPORT_SYMBOL vmlinux 0xf989e372 pcix_set_mmrbc +EXPORT_SYMBOL vmlinux 0xf9a482f9 msleep +EXPORT_SYMBOL vmlinux 0xf9c0ebe5 qdisc_destroy +EXPORT_SYMBOL vmlinux 0xf9c409aa proc_set_size +EXPORT_SYMBOL vmlinux 0xf9e73082 scnprintf +EXPORT_SYMBOL vmlinux 0xf9f6ef63 ip_options_rcv_srr +EXPORT_SYMBOL vmlinux 0xf9f7a4a1 nla_append +EXPORT_SYMBOL vmlinux 0xfa09d2a2 dev_emerg +EXPORT_SYMBOL vmlinux 0xfa18031e dev_disable_lro +EXPORT_SYMBOL vmlinux 0xfa2825b3 simple_map_init +EXPORT_SYMBOL vmlinux 0xfa328fb5 nand_bch_calculate_ecc +EXPORT_SYMBOL vmlinux 0xfa337224 release_pages +EXPORT_SYMBOL vmlinux 0xfa599bb2 netlink_register_notifier +EXPORT_SYMBOL vmlinux 0xfa5a2ec5 i2c_smbus_read_i2c_block_data +EXPORT_SYMBOL vmlinux 0xfa5c4c6b ip_mc_dec_group +EXPORT_SYMBOL vmlinux 0xfa6dc62f __register_binfmt +EXPORT_SYMBOL vmlinux 0xfa7921eb swiotlb_sync_sg_for_cpu +EXPORT_SYMBOL vmlinux 0xfaa1115b of_mm_gpiochip_remove +EXPORT_SYMBOL vmlinux 0xfac68eba arm_elf_read_implies_exec +EXPORT_SYMBOL vmlinux 0xfac8865f sysctl_wmem_max +EXPORT_SYMBOL vmlinux 0xfacd8e72 vme_dma_vme_attribute +EXPORT_SYMBOL vmlinux 0xfae0acac jbd2_journal_unlock_updates +EXPORT_SYMBOL vmlinux 0xfae67b1f cap_mmap_addr +EXPORT_SYMBOL vmlinux 0xfaf7ee8a generic_ro_fops +EXPORT_SYMBOL vmlinux 0xfb216a17 fb_set_cmap +EXPORT_SYMBOL vmlinux 0xfb4f20f2 register_tcf_proto_ops +EXPORT_SYMBOL vmlinux 0xfb4f3f3d page_cache_prev_hole +EXPORT_SYMBOL vmlinux 0xfb6af58d recalc_sigpending +EXPORT_SYMBOL vmlinux 0xfb7d9c45 __udivsi3 +EXPORT_SYMBOL vmlinux 0xfb80d621 add_disk +EXPORT_SYMBOL vmlinux 0xfb94103e __clzdi2 +EXPORT_SYMBOL vmlinux 0xfb9dcd33 dquot_acquire +EXPORT_SYMBOL vmlinux 0xfbaaf01e console_lock +EXPORT_SYMBOL vmlinux 0xfbad330b mmc_of_parse_voltage +EXPORT_SYMBOL vmlinux 0xfbc4f89e io_schedule_timeout +EXPORT_SYMBOL vmlinux 0xfbd3d412 mb_cache_shrink +EXPORT_SYMBOL vmlinux 0xfbd65e17 __sk_dst_check +EXPORT_SYMBOL vmlinux 0xfc02b7ad sysctl_tcp_wmem +EXPORT_SYMBOL vmlinux 0xfc067f54 __lock_page +EXPORT_SYMBOL vmlinux 0xfc284c68 d_invalidate +EXPORT_SYMBOL vmlinux 0xfc2e45fa md_finish_reshape +EXPORT_SYMBOL vmlinux 0xfc3908f5 fence_default_wait +EXPORT_SYMBOL vmlinux 0xfc39e32f ioport_unmap +EXPORT_SYMBOL vmlinux 0xfc490bc1 of_find_node_with_property +EXPORT_SYMBOL vmlinux 0xfc63e6d0 snd_pci_quirk_lookup +EXPORT_SYMBOL vmlinux 0xfc65459a kstrtoull_from_user +EXPORT_SYMBOL vmlinux 0xfc6573f3 seq_open +EXPORT_SYMBOL vmlinux 0xfc67fb03 scsi_device_put +EXPORT_SYMBOL vmlinux 0xfc6b3f52 scsi_unregister +EXPORT_SYMBOL vmlinux 0xfc72dcf5 page_symlink +EXPORT_SYMBOL vmlinux 0xfc9c5f1e xfrm_input +EXPORT_SYMBOL vmlinux 0xfcc2a43c utf32_to_utf8 +EXPORT_SYMBOL vmlinux 0xfcdcdbe9 scsi_host_get +EXPORT_SYMBOL vmlinux 0xfcec0987 enable_irq +EXPORT_SYMBOL vmlinux 0xfced1de3 max8998_bulk_write +EXPORT_SYMBOL vmlinux 0xfcedc365 give_up_console +EXPORT_SYMBOL vmlinux 0xfcfa03ff fb_videomode_to_modelist +EXPORT_SYMBOL vmlinux 0xfcfab397 poll_freewait +EXPORT_SYMBOL vmlinux 0xfcfd36cc __inet6_lookup_established +EXPORT_SYMBOL vmlinux 0xfd1d9754 omapdss_find_mgr_from_display +EXPORT_SYMBOL vmlinux 0xfd217f8d d_set_fallthru +EXPORT_SYMBOL vmlinux 0xfd28a79f fput +EXPORT_SYMBOL vmlinux 0xfd2ccba5 kmap_high +EXPORT_SYMBOL vmlinux 0xfd305341 walk_stackframe +EXPORT_SYMBOL vmlinux 0xfd336d9c of_find_net_device_by_node +EXPORT_SYMBOL vmlinux 0xfd33b5fa cmdline_parts_find +EXPORT_SYMBOL vmlinux 0xfd41bbb2 param_ops_bool +EXPORT_SYMBOL vmlinux 0xfd50c87a gnet_stats_finish_copy +EXPORT_SYMBOL vmlinux 0xfd5683b9 wait_for_completion_interruptible +EXPORT_SYMBOL vmlinux 0xfd6d644a nf_setsockopt +EXPORT_SYMBOL vmlinux 0xfd7ec254 of_mm_gpiochip_add +EXPORT_SYMBOL vmlinux 0xfd811e75 pci_prepare_to_sleep +EXPORT_SYMBOL vmlinux 0xfd99623a ip_frag_ecn_table +EXPORT_SYMBOL vmlinux 0xfd9e256f dev_close +EXPORT_SYMBOL vmlinux 0xfda0214b of_graph_parse_endpoint +EXPORT_SYMBOL vmlinux 0xfda4a41d invalidate_mapping_pages +EXPORT_SYMBOL vmlinux 0xfdab6de3 unregister_sound_midi +EXPORT_SYMBOL vmlinux 0xfdb08832 mmc_stop_bkops +EXPORT_SYMBOL vmlinux 0xfdbe0288 pci_add_resource_offset +EXPORT_SYMBOL vmlinux 0xfdc82f9f inet_select_addr +EXPORT_SYMBOL vmlinux 0xfdcdae33 netdev_info +EXPORT_SYMBOL vmlinux 0xfdcf8f76 tty_insert_flip_string_flags +EXPORT_SYMBOL vmlinux 0xfddc3d90 alloc_anon_inode +EXPORT_SYMBOL vmlinux 0xfdedfd87 __scsi_add_device +EXPORT_SYMBOL vmlinux 0xfdf6725e pci_find_parent_resource +EXPORT_SYMBOL vmlinux 0xfdfc0b3b fiemap_fill_next_extent +EXPORT_SYMBOL vmlinux 0xfdffcf8e copy_from_iter_nocache +EXPORT_SYMBOL vmlinux 0xfe029963 unregister_inetaddr_notifier +EXPORT_SYMBOL vmlinux 0xfe33d8f8 tty_unlock +EXPORT_SYMBOL vmlinux 0xfe40bf95 dss_feat_get_num_ovls +EXPORT_SYMBOL vmlinux 0xfe5d4bb2 sys_tz +EXPORT_SYMBOL vmlinux 0xfe643570 bio_split +EXPORT_SYMBOL vmlinux 0xfe7c4287 nr_cpu_ids +EXPORT_SYMBOL vmlinux 0xfea06bbd arm_dma_ops +EXPORT_SYMBOL vmlinux 0xfeb16115 netif_set_xps_queue +EXPORT_SYMBOL vmlinux 0xfebbc4d7 pci_msix_vec_count +EXPORT_SYMBOL vmlinux 0xfeca7590 radix_tree_range_tag_if_tagged +EXPORT_SYMBOL vmlinux 0xfedcdb60 seq_hlist_next_percpu +EXPORT_SYMBOL vmlinux 0xfef91870 iov_iter_single_seg_count +EXPORT_SYMBOL vmlinux 0xfef9f24f genphy_soft_reset +EXPORT_SYMBOL vmlinux 0xfefb6077 edma_alloc_channel +EXPORT_SYMBOL vmlinux 0xfeffcd56 edma_filter_fn +EXPORT_SYMBOL vmlinux 0xff0080dd swiotlb_free_coherent +EXPORT_SYMBOL vmlinux 0xff064fee gen_pool_set_algo +EXPORT_SYMBOL vmlinux 0xff083107 mmc_request_done +EXPORT_SYMBOL vmlinux 0xff10748d abx500_get_register_page_interruptible +EXPORT_SYMBOL vmlinux 0xff1aba49 blk_execute_rq +EXPORT_SYMBOL vmlinux 0xff1e9dd8 seq_list_start +EXPORT_SYMBOL vmlinux 0xff22920b omapdss_register_display +EXPORT_SYMBOL vmlinux 0xff2dc95d sock_no_socketpair +EXPORT_SYMBOL vmlinux 0xff33d378 fbcon_rotate_ccw +EXPORT_SYMBOL vmlinux 0xff39dd5b pcie_get_mps +EXPORT_SYMBOL vmlinux 0xff447220 nla_reserve +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 0xff6ea4da dma_find_channel +EXPORT_SYMBOL vmlinux 0xff7559e4 ioport_resource +EXPORT_SYMBOL vmlinux 0xff8cbb1f idr_destroy +EXPORT_SYMBOL vmlinux 0xff9ca065 fb_edid_to_monspecs +EXPORT_SYMBOL vmlinux 0xffabaf2b bio_init +EXPORT_SYMBOL vmlinux 0xffb89721 xfrm6_find_1stfragopt +EXPORT_SYMBOL vmlinux 0xffb94ef0 _test_and_change_bit +EXPORT_SYMBOL vmlinux 0xffbf598f pci_remove_bus +EXPORT_SYMBOL vmlinux 0xffcfcd09 __free_pages +EXPORT_SYMBOL vmlinux 0xffd2cf99 omap_dss_get_num_overlay_managers +EXPORT_SYMBOL vmlinux 0xffd5a395 default_wake_function +EXPORT_SYMBOL vmlinux 0xffe07a90 buffer_migrate_page +EXPORT_SYMBOL vmlinux 0xffe8cea4 tcf_hash_destroy +EXPORT_SYMBOL vmlinux 0xffeaf1cc mount_bdev +EXPORT_SYMBOL vmlinux 0xffebff68 neigh_event_ns +EXPORT_SYMBOL vmlinux 0xfff27c2c ppp_register_compressor +EXPORT_SYMBOL_GPL arch/arm/crypto/sha1-arm 0x26a6378d sha1_finup_arm +EXPORT_SYMBOL_GPL arch/arm/crypto/sha1-arm 0x9b91fc0a sha1_update_arm +EXPORT_SYMBOL_GPL crypto/ablk_helper 0x08273594 ablk_init +EXPORT_SYMBOL_GPL crypto/ablk_helper 0x4f1673df ablk_encrypt +EXPORT_SYMBOL_GPL crypto/ablk_helper 0x8b70d78a ablk_init_common +EXPORT_SYMBOL_GPL crypto/ablk_helper 0xb8585948 ablk_decrypt +EXPORT_SYMBOL_GPL crypto/ablk_helper 0xdc197b19 __ablk_encrypt +EXPORT_SYMBOL_GPL crypto/ablk_helper 0xe5ce67db ablk_set_key +EXPORT_SYMBOL_GPL crypto/ablk_helper 0xecf06996 ablk_exit +EXPORT_SYMBOL_GPL crypto/af_alg 0x2536e9fb af_alg_free_sg +EXPORT_SYMBOL_GPL crypto/af_alg 0x4095fc0d af_alg_register_type +EXPORT_SYMBOL_GPL crypto/af_alg 0x586096cb af_alg_cmsg_send +EXPORT_SYMBOL_GPL crypto/af_alg 0x7af3e917 af_alg_complete +EXPORT_SYMBOL_GPL crypto/af_alg 0xa9b36003 af_alg_make_sg +EXPORT_SYMBOL_GPL crypto/af_alg 0xae91d989 af_alg_link_sg +EXPORT_SYMBOL_GPL crypto/af_alg 0xc35752ad af_alg_accept +EXPORT_SYMBOL_GPL crypto/af_alg 0xd1cde7c6 af_alg_release +EXPORT_SYMBOL_GPL crypto/af_alg 0xd2dc233e af_alg_unregister_type +EXPORT_SYMBOL_GPL crypto/af_alg 0xd954ef95 af_alg_wait_for_completion +EXPORT_SYMBOL_GPL crypto/asymmetric_keys/pkcs7_message 0x0c495886 pkcs7_get_content_data +EXPORT_SYMBOL_GPL crypto/asymmetric_keys/pkcs7_message 0x44e8d9ac pkcs7_free_message +EXPORT_SYMBOL_GPL crypto/asymmetric_keys/pkcs7_message 0x4cc33646 pkcs7_parse_message +EXPORT_SYMBOL_GPL crypto/asymmetric_keys/pkcs7_message 0x883bd89d pkcs7_verify +EXPORT_SYMBOL_GPL crypto/asymmetric_keys/pkcs7_message 0x90d76756 pkcs7_validate_trust +EXPORT_SYMBOL_GPL crypto/async_tx/async_memcpy 0xcd804246 async_memcpy +EXPORT_SYMBOL_GPL crypto/async_tx/async_pq 0x4f83b3dc async_gen_syndrome +EXPORT_SYMBOL_GPL crypto/async_tx/async_pq 0x6ee0fef4 async_syndrome_val +EXPORT_SYMBOL_GPL crypto/async_tx/async_raid6_recov 0x2c89c61c async_raid6_datap_recov +EXPORT_SYMBOL_GPL crypto/async_tx/async_raid6_recov 0x7985bf7e async_raid6_2data_recov +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0x29534a6a __async_tx_find_channel +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0x46c0b354 async_tx_submit +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0x7eb378db async_trigger_callback +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0x92b89e2a async_tx_quiesce +EXPORT_SYMBOL_GPL crypto/async_tx/async_xor 0x1f28f971 async_xor +EXPORT_SYMBOL_GPL crypto/async_tx/async_xor 0xbb740387 async_xor_val +EXPORT_SYMBOL_GPL crypto/authenc 0x587ef278 crypto_authenc_extractkeys +EXPORT_SYMBOL_GPL crypto/blowfish_common 0xd44f02e4 blowfish_setkey +EXPORT_SYMBOL_GPL crypto/cast5_generic 0x27278ca9 __cast5_encrypt +EXPORT_SYMBOL_GPL crypto/cast5_generic 0x4a2a3ca6 __cast5_decrypt +EXPORT_SYMBOL_GPL crypto/cast5_generic 0xef19d60c cast5_setkey +EXPORT_SYMBOL_GPL crypto/cast6_generic 0x1291971c __cast6_setkey +EXPORT_SYMBOL_GPL crypto/cast6_generic 0x1e2c961f __cast6_decrypt +EXPORT_SYMBOL_GPL crypto/cast6_generic 0x8f04034a __cast6_encrypt +EXPORT_SYMBOL_GPL crypto/cast6_generic 0xdfac5471 cast6_setkey +EXPORT_SYMBOL_GPL crypto/cast_common 0x08aa6fb7 cast_s1 +EXPORT_SYMBOL_GPL crypto/cast_common 0x0c5fbf8a cast_s3 +EXPORT_SYMBOL_GPL crypto/cast_common 0xe39dd4b4 cast_s2 +EXPORT_SYMBOL_GPL crypto/cast_common 0xee83a4f3 cast_s4 +EXPORT_SYMBOL_GPL crypto/cryptd 0x0058cd24 cryptd_ahash_child +EXPORT_SYMBOL_GPL crypto/cryptd 0x21e8348a cryptd_shash_desc +EXPORT_SYMBOL_GPL crypto/cryptd 0x24a3b414 cryptd_alloc_ablkcipher +EXPORT_SYMBOL_GPL crypto/cryptd 0x35c268b5 cryptd_aead_child +EXPORT_SYMBOL_GPL crypto/cryptd 0x4699a1ff cryptd_alloc_aead +EXPORT_SYMBOL_GPL crypto/cryptd 0x505c8e4b cryptd_alloc_ahash +EXPORT_SYMBOL_GPL crypto/cryptd 0x65458b86 cryptd_ablkcipher_child +EXPORT_SYMBOL_GPL crypto/cryptd 0x9c0fbd07 cryptd_free_ablkcipher +EXPORT_SYMBOL_GPL crypto/cryptd 0xc2aca312 cryptd_free_aead +EXPORT_SYMBOL_GPL crypto/cryptd 0xe6829c10 cryptd_free_ahash +EXPORT_SYMBOL_GPL crypto/crypto_null 0x21cd536a crypto_put_default_null_skcipher +EXPORT_SYMBOL_GPL crypto/crypto_null 0x2a76c209 crypto_get_default_null_skcipher +EXPORT_SYMBOL_GPL crypto/des_generic 0xcfd9a2c0 des_ekey +EXPORT_SYMBOL_GPL crypto/des_generic 0xf8c78d49 __des3_ede_setkey +EXPORT_SYMBOL_GPL crypto/lrw 0x3236b2b9 lrw_crypt +EXPORT_SYMBOL_GPL crypto/lrw 0x3864eb66 lrw_free_table +EXPORT_SYMBOL_GPL crypto/lrw 0xcd074900 lrw_init_table +EXPORT_SYMBOL_GPL crypto/mcryptd 0x14bdd4d3 mcryptd_flusher +EXPORT_SYMBOL_GPL crypto/mcryptd 0x2251a4ef mcryptd_ahash_child +EXPORT_SYMBOL_GPL crypto/mcryptd 0x39a06dc8 shash_ahash_mcryptd_final +EXPORT_SYMBOL_GPL crypto/mcryptd 0x7fa08e90 mcryptd_free_ahash +EXPORT_SYMBOL_GPL crypto/mcryptd 0xad1b479e mcryptd_shash_desc +EXPORT_SYMBOL_GPL crypto/mcryptd 0xb02679e6 shash_ahash_mcryptd_digest +EXPORT_SYMBOL_GPL crypto/mcryptd 0xb8f870e3 shash_ahash_mcryptd_finup +EXPORT_SYMBOL_GPL crypto/mcryptd 0xc23f16af shash_ahash_mcryptd_update +EXPORT_SYMBOL_GPL crypto/mcryptd 0xffb37521 mcryptd_alloc_ahash +EXPORT_SYMBOL_GPL crypto/rsa_generic 0xadc25bd8 rsa_parse_key +EXPORT_SYMBOL_GPL crypto/rsa_generic 0xf1b141d1 rsa_free_key +EXPORT_SYMBOL_GPL crypto/serpent_generic 0x5ddb33e9 __serpent_encrypt +EXPORT_SYMBOL_GPL crypto/serpent_generic 0x60825106 serpent_setkey +EXPORT_SYMBOL_GPL crypto/serpent_generic 0x77b39cb4 __serpent_setkey +EXPORT_SYMBOL_GPL crypto/serpent_generic 0x8a1a99ad __serpent_decrypt +EXPORT_SYMBOL_GPL crypto/twofish_common 0x6c3229bb __twofish_setkey +EXPORT_SYMBOL_GPL crypto/twofish_common 0xcd067b66 twofish_setkey +EXPORT_SYMBOL_GPL crypto/xts 0xb8bb78a8 xts_crypt +EXPORT_SYMBOL_GPL drivers/ata/pata_platform 0x251400c2 __pata_platform_probe +EXPORT_SYMBOL_GPL drivers/ata/pata_sis 0x286c1180 sis_info133_for_sata +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-spmi 0xa8cef7e4 devm_regmap_init_spmi_base +EXPORT_SYMBOL_GPL drivers/base/regmap/regmap-spmi 0xab1ebf15 regmap_init_spmi_ext +EXPORT_SYMBOL_GPL drivers/base/regmap/regmap-spmi 0xc4ac9984 regmap_init_spmi_base +EXPORT_SYMBOL_GPL drivers/base/regmap/regmap-spmi 0xcfe53241 devm_regmap_init_spmi_ext +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x036bd83f bcma_core_set_clockmode +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x09567520 bcma_chipco_get_alp_clock +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x17e68df9 bcma_pmu_get_bus_clock +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x22c62e43 bcma_find_core_unit +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x297f40ad bcma_core_pll_ctl +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x2fe87d23 bcma_core_enable +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x34156be6 bcma_chipco_pll_maskset +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x3f7ad677 bcma_chipco_regctl_maskset +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x41537c29 bcma_chipco_pll_read +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x50bdd052 bcma_chipco_gpio_out +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x6956a1de bcma_chipco_gpio_outen +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x7a30d78d bcma_host_pci_down +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x7ab3e30e bcma_host_pci_irq_ctl +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x891a0ae1 __bcma_driver_register +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x96f5ab24 bcma_chipco_chipctl_maskset +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x9fffa5b7 bcma_chipco_gpio_control +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xa29c0336 bcma_driver_unregister +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xadf3a337 bcma_core_disable +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xc142a07a bcma_pmu_spuravoid_pllupdate +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xd3bda40b bcma_core_pci_power_save +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xdcf27fa8 bcma_chipco_b_mii_write +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xe85d071f bcma_chipco_pll_write +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xf31f06e8 bcma_host_pci_up +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xf355122b bcma_core_is_enabled +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0x4a53a7a9 btbcm_set_bdaddr +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0x7783b42b btbcm_initialize +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0x82baf15d btbcm_check_bdaddr +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0xc3eac345 btbcm_setup_apple +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0xd0246690 btbcm_finalize +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0xe83c24f6 btbcm_setup_patchram +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0xae4bb881 btintel_check_bdaddr +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0xca6418b7 btintel_set_bdaddr +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x14d097bf btmrvl_interrupt +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x180c9910 btmrvl_remove_card +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x246048eb btmrvl_register_hdev +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x3b0dabb0 btmrvl_add_card +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x8dd1dae4 btmrvl_check_evtpkt +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x97deabfd btmrvl_send_module_cfg_cmd +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xae5453cf btmrvl_pscan_window_reporting +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xbbcbf758 btmrvl_send_hscfg_cmd +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xd588ffc0 btmrvl_enable_hs +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xef506830 btmrvl_process_event +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xfd2ceec7 btmrvl_enable_ps +EXPORT_SYMBOL_GPL drivers/bluetooth/btrtl 0x605374b3 btrtl_setup_realtek +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x061a85a5 clk_rcg_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x06a50e46 clk_branch2_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x072706ba clk_pll_configure_sr_hpm_lp +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x14d48935 clk_enable_regmap +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x23d339a0 clk_regmap_div_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x24b79d44 clk_branch_simple_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x2a23ce84 devm_clk_register_regmap +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x3aac27e3 qcom_find_src_index +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x436dd5de clk_branch_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x47307fc0 clk_regmap_mux_closest_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x4d64c163 clk_rcg_lcc_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x4f659d64 qcom_cc_remove +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x5f2122b2 clk_pll_vote_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x669bd1fd qcom_find_freq +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x7592d0de clk_pll_configure_sr +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x77c457fa qcom_reset_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x82227310 qcom_cc_really_probe +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x92861df8 clk_is_enabled_regmap +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0x96ab70e9 qcom_cc_probe +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0xbb22aecf clk_pixel_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0xbf1e693b qcom_cc_map +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0xc03f8663 clk_rcg_bypass_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0xc137d1a2 clk_rcg2_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0xc731002c clk_byte_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0xd8b002f2 clk_pll_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0xe66071f2 clk_disable_regmap +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0xec923bd6 clk_edp_pixel_ops +EXPORT_SYMBOL_GPL drivers/clk/qcom/clk-qcom 0xecad5ff5 clk_dyn_rcg_ops +EXPORT_SYMBOL_GPL drivers/cpufreq/arm_big_little 0x3d40dd52 bL_cpufreq_register +EXPORT_SYMBOL_GPL drivers/cpufreq/arm_big_little 0xbf4d3ba3 bL_cpufreq_unregister +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0x3cb30336 dw_dma_filter +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0x41606ec4 dw_dma_enable +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0x42e10c66 dw_dma_disable +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0x583dd184 dw_dma_remove +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0x7372f887 dw_dma_probe +EXPORT_SYMBOL_GPL drivers/dma/hsu/hsu_dma 0x02a0afee hsu_dma_remove +EXPORT_SYMBOL_GPL drivers/dma/hsu/hsu_dma 0x7aeea123 hsu_dma_irq +EXPORT_SYMBOL_GPL drivers/dma/hsu/hsu_dma 0xd519b7f3 hsu_dma_probe +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x0c32ff8a edac_pci_alloc_index +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x11e63b86 edac_mc_del_mc +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x1686a04f edac_device_del_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x242e000b edac_mc_add_mc_with_groups +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x2c8dd6b8 edac_mem_types +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x34d8d7e0 find_mci_by_dev +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x444de4ca edac_pci_release_generic_ctl +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x49f50c90 edac_pci_create_generic_ctl +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x5266ed2c edac_pci_add_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x5a57ae11 edac_pci_handle_npe +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x5c924d9d edac_mc_free +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x63abee8e edac_pci_free_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x650b2e56 edac_device_handle_ce +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x692598b3 edac_pci_alloc_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x6e0eaa79 edac_pci_reset_delay_period +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x6e3ff83a edac_device_alloc_index +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x9542883b edac_device_add_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xa6640d29 edac_mc_alloc +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xb5b65bf5 edac_raw_mc_handle_error +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xb79797c0 edac_pci_del_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xb804f570 edac_pci_handle_pe +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xc0dcb59e edac_layer_name +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xc688e7ad edac_mc_find_csrow_by_page +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xc82d7032 edac_mc_handle_error +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xd0d4ac17 edac_device_free_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xdfd429a9 edac_device_alloc_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xf10a882a edac_device_handle_ue +EXPORT_SYMBOL_GPL drivers/firewire/firewire-core 0xf4ade51f fw_card_release +EXPORT_SYMBOL_GPL drivers/gpio/gpio-max730x 0x1f667b0f __max730x_probe +EXPORT_SYMBOL_GPL drivers/gpio/gpio-max730x 0xce7d7523 __max730x_remove +EXPORT_SYMBOL_GPL drivers/gpu/drm/bridge/dw_hdmi 0xc178f175 dw_hdmi_bind +EXPORT_SYMBOL_GPL drivers/gpu/drm/bridge/dw_hdmi 0xcf7ebb1a dw_hdmi_unbind +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x29ce7091 drm_gem_cma_prime_vmap +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x35c5e83b drm_gem_cma_prime_mmap +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x3a69e908 drm_gem_cma_create +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x57aa5475 drm_gem_cma_mmap +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x57e341a1 drm_display_mode_from_videomode +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x7196aeab drm_gem_cma_prime_get_sg_table +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x83caf598 drm_class_device_register +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x8427d11d of_get_drm_display_mode +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x9105bd24 drm_gem_cma_dumb_create_internal +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x93f553b5 drm_gem_cma_vm_ops +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x9d88aa0a drm_do_get_edid +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x9e1a43ec drm_gem_cma_dumb_create +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x9fdcd869 drm_gem_cma_dumb_map_offset +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xad4d5f0b drm_gem_cma_free_object +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xb58b3b8b drm_gem_cma_prime_import_sg_table +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xc6086056 drm_gem_cma_prime_vunmap +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xf1a11986 drm_display_mode_to_videomode +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xf56f98ef drm_gem_cma_describe +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xf5ae66a2 drm_class_device_unregister +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm_kms_helper 0x1148b623 drm_fbdev_cma_fini +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm_kms_helper 0x2b5c4696 drm_fb_cma_create +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm_kms_helper 0x4fdbf914 drm_fbdev_cma_init +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm_kms_helper 0x75a912e1 drm_fb_cma_debugfs_show +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm_kms_helper 0x864ce7aa drm_fb_cma_get_gem_obj +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm_kms_helper 0xb2c912af drm_fbdev_cma_hotplug_event +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm_kms_helper 0xcc337fd5 drm_fbdev_cma_restore_mode +EXPORT_SYMBOL_GPL drivers/gpu/drm/exynos/exynosdrm 0x16d80060 exynos_drm_device_subdrv_remove +EXPORT_SYMBOL_GPL drivers/gpu/drm/exynos/exynosdrm 0x9de00a59 exynos_drm_subdrv_close +EXPORT_SYMBOL_GPL drivers/gpu/drm/exynos/exynosdrm 0xa460934b exynos_drm_device_subdrv_probe +EXPORT_SYMBOL_GPL drivers/gpu/drm/exynos/exynosdrm 0xb4dec994 exynos_drm_subdrv_unregister +EXPORT_SYMBOL_GPL drivers/gpu/drm/exynos/exynosdrm 0xe12fb897 exynos_drm_subdrv_open +EXPORT_SYMBOL_GPL drivers/gpu/drm/exynos/exynosdrm 0xeeb325df exynos_drm_subdrv_register +EXPORT_SYMBOL_GPL drivers/gpu/drm/imx/imxdrm 0x009bbb13 imx_drm_encoder_get_mux_id +EXPORT_SYMBOL_GPL drivers/gpu/drm/imx/imxdrm 0x1cfe024a imx_drm_crtc_vblank_get +EXPORT_SYMBOL_GPL drivers/gpu/drm/imx/imxdrm 0x37707c0a imx_drm_crtc_id +EXPORT_SYMBOL_GPL drivers/gpu/drm/imx/imxdrm 0x419b08de imx_drm_handle_vblank +EXPORT_SYMBOL_GPL drivers/gpu/drm/imx/imxdrm 0x4c125fb9 imx_drm_encoder_destroy +EXPORT_SYMBOL_GPL drivers/gpu/drm/imx/imxdrm 0x5f056ff0 imx_drm_crtc_vblank_put +EXPORT_SYMBOL_GPL drivers/gpu/drm/imx/imxdrm 0x81451614 imx_drm_set_bus_format_pins +EXPORT_SYMBOL_GPL drivers/gpu/drm/imx/imxdrm 0xa66d1847 imx_drm_add_crtc +EXPORT_SYMBOL_GPL drivers/gpu/drm/imx/imxdrm 0xc097cba9 imx_drm_encoder_parse_of +EXPORT_SYMBOL_GPL drivers/gpu/drm/imx/imxdrm 0xc3225a3b imx_drm_connector_destroy +EXPORT_SYMBOL_GPL drivers/gpu/drm/imx/imxdrm 0xd652b5a4 imx_drm_remove_crtc +EXPORT_SYMBOL_GPL drivers/gpu/drm/imx/imxdrm 0xfd0dd905 imx_drm_set_bus_format +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0x4970ce46 ttm_dma_populate +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0x59789347 ttm_dma_page_alloc_debugfs +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0x6adf436b ttm_prime_fd_to_handle +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0xce36343e ttm_prime_handle_to_fd +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0xf97df0a9 ttm_dma_unpopulate +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x0408592a ipu_idmac_get_current_buffer +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x04f7075a ipu_csi_set_mipi_datatype +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x0728116a ipu_csi_disable +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x0b2eb015 ipu_dmfc_get +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 0x118160e1 ipu_ic_enable +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x11d8f100 ipu_stride_to_bytes +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 0x157e187a ipu_cpmem_set_yuv_planar_full +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x15ec2ba5 ipu_di_put +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x1764d8ec ipu_idmac_clear_buffer +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x1808cab7 ipu_idmac_channel_busy +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x199bd5c8 ipu_dp_disable_channel +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x1a945623 ipu_idmac_buffer_is_ready +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x1ba497eb ipu_pixelformat_to_colorspace +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x1e581b2c ipu_cpmem_set_burstsize +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 0x2255cda2 ipu_idmac_enable_watermark +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 0x25b67ca3 ipu_cpmem_set_buffer +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 0x2f9751b4 ipu_degrees_to_rot_mode +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x30b6999c ipu_rot_mode_to_degrees +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 0x31f66f6d ipu_dc_disable +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x350ebb50 ipu_map_irq +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x35c4b9ec ipu_cpmem_set_stride +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x3732e9dc ipu_idmac_put +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x3afbb44e ipu_smfc_set_watermark +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 0x414840f8 ipu_cpmem_set_format_rgb +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x425918a1 ipu_idmac_select_buffer +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x44f1a546 ipu_set_csi_src_mux +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x47ac6d3e ipu_ic_task_idma_init +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x4917f47a ipu_ic_dump +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x4c179b49 ipu_dp_put +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 0x5b1f2837 ipu_cpmem_set_axi_id +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x5c3d2846 ipu_wait_interrupt +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x603e00e1 ipu_dc_get +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 0x6afd809d ipu_cpmem_set_resolution +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x7068e939 ipu_dc_put +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x7121bd07 ipu_di_init_sync_panel +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x721945b2 ipu_cpmem_interlaced_scan +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x76302d14 ipu_csi_set_skip_smfc +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x7cbe6e80 ipu_module_disable +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x82cae9e5 ipu_cpmem_set_fmt +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x8826a003 ipu_cpmem_zero +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 0x8b479f8e ipu_di_get +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x8e8c8cbb ipu_csi_get +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x9058e289 ipu_smfc_put +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x951a09d5 ipu_csi_enable +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x99a0ef07 ipu_drm_fourcc_to_colorspace +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x9a9f6b4e ipu_idmac_set_double_buffer +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x9b2262f0 ipu_ic_get +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0x9c335d85 ipu_pixelformat_is_planar +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 0xa279ecab ipu_cpmem_set_block_mode +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 0xa579616b ipu_di_adjust_videomode +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 0xa96882d8 ipu_ic_disable +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xb228bf1e ipu_dp_set_global_alpha +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xb2e41fce ipu_idmac_lock_enable +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xb5c207fa ipu_srm_dp_sync_update +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xb94ca95a ipu_dmfc_init_channel +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xc0fad907 ipu_idmac_wait_busy +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xc0fbbbab ipu_cpmem_set_format_passthrough +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xc30d2c1a ipu_dp_disable +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xc3c2cdb0 ipu_smfc_disable +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 0xc7f94a7d ipu_module_enable +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xc848c5d7 ipu_dmfc_free_bandwidth +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xc88d89a1 ipu_mbus_code_to_colorspace +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xc8cbb911 ipu_smfc_get +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xc97e7a0f ipu_di_disable +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xcb2d6393 ipu_dc_enable +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xcb51a000 ipu_idmac_enable_channel +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xcd7c6998 ipu_ic_task_init +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xce194666 ipu_idmac_get +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xd064a453 ipu_ic_task_graphics_init +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xd311854c ipu_set_ic_src_mux +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xd415e688 ipu_cpmem_set_yuv_interleaved +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xd5055dd9 ipu_dmfc_alloc_bandwidth +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xd95230ce ipu_cpmem_dump +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xdac5ffaf ipu_cpmem_set_yuv_planar +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 0xe3b86336 ipu_csi_init_interface +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 0xe9fc6a8d ipu_cpmem_set_high_priority +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xec2e1553 ipu_cpmem_set_rotation +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xec458d12 ipu_idmac_disable_channel +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xef85dfdc ipu_cpmem_set_image +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xf1440dc1 ipu_ic_put +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xf69d6cb6 ipu_csi_set_test_generator +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xf6bc636b ipu_dump +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xf7d99d69 ipu_dc_init_sync +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xf9ed222e ipu_dp_set_window_pos +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xfb19d70b ipu_dp_get +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xfc626fe0 ipu_dp_enable +EXPORT_SYMBOL_GPL drivers/gpu/ipu-v3/imx-ipu-v3 0xfff03947 ipu_idmac_channel_irq +EXPORT_SYMBOL_GPL drivers/hid/hid 0x01f2e2a6 hid_add_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0x05495392 hid_debug +EXPORT_SYMBOL_GPL drivers/hid/hid 0x0e0e8b05 __hid_request +EXPORT_SYMBOL_GPL drivers/hid/hid 0x200911d3 hid_open_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x21b29018 hid_parse_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x27fd57cd hidinput_calc_abs_res +EXPORT_SYMBOL_GPL drivers/hid/hid 0x2c417fca hid_resolv_usage +EXPORT_SYMBOL_GPL drivers/hid/hid 0x2e8a624c hidinput_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x3850d5bc hid_ignore +EXPORT_SYMBOL_GPL drivers/hid/hid 0x4906a967 hid_snto32 +EXPORT_SYMBOL_GPL drivers/hid/hid 0x4a3d2f6c hid_debug_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0x4beb1ccb hid_register_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x5c0cbc40 hidinput_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x5c42332a hidinput_find_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0x633506e7 hid_output_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x74ad3f20 hidraw_report_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0x77a02cd2 hid_unregister_driver +EXPORT_SYMBOL_GPL drivers/hid/hid 0x78074ecc hidraw_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x7aa8dff5 __hid_register_driver +EXPORT_SYMBOL_GPL drivers/hid/hid 0x82a61d0b hid_allocate_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0x8431af3f hidraw_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x8d41521e hid_dump_input +EXPORT_SYMBOL_GPL drivers/hid/hid 0x8ee9e38f hid_set_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0xac9b9f65 hid_dump_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0xb6200ca4 hid_dump_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0xb67d2012 hid_field_extract +EXPORT_SYMBOL_GPL drivers/hid/hid 0xbaf2ed6e hidinput_count_leds +EXPORT_SYMBOL_GPL drivers/hid/hid 0xbddf3caa hid_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0xc5879a01 hidinput_report_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0xc9c12c50 hid_dump_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0xcb3ea217 hid_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0xd1c9a075 hidinput_get_led_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0xe53c60ca hid_input_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0xf36e6a37 hid_destroy_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0xf5e7c537 hid_check_keys_pressed +EXPORT_SYMBOL_GPL drivers/hid/hid 0xf865ca05 hid_alloc_report_buf +EXPORT_SYMBOL_GPL drivers/hid/hid 0xfbe8298f hid_validate_values +EXPORT_SYMBOL_GPL drivers/hid/hid 0xff326c0c hid_report_raw_event +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat 0x2f622ea1 roccat_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat 0x8c4181ec roccat_report_event +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat 0xf8ea67b4 roccat_connect +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x29305d9d roccat_common2_receive +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x3356ac96 roccat_common2_device_init_struct +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x74fc2aac roccat_common2_send_with_status +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x8f131d94 roccat_common2_send +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0xa5cc6987 roccat_common2_sysfs_read +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0xdba94216 roccat_common2_sysfs_write +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x79ea474e sensor_hub_input_attr_get_raw_value +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x88a03cef sensor_hub_remove_callback +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x97befe2b sensor_hub_set_feature +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x9c85dfe7 sensor_hub_get_feature +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0xa250e775 sensor_hub_register_callback +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0xa59bca34 sensor_hub_device_close +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0xd8650792 hid_sensor_get_usage_index +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0xe28d6a3c sensor_hub_device_open +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0xf0b58c5e sensor_hub_input_get_attribute_info +EXPORT_SYMBOL_GPL drivers/hid/usbhid/usbhid 0x01fd453e usbhid_lookup_quirk +EXPORT_SYMBOL_GPL drivers/hid/usbhid/usbhid 0x94a9a764 hiddev_hid_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x04bc264e hsi_unregister_port_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x155eb6e2 hsi_register_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x30df82ab hsi_remove_client +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x34d416c0 hsi_put_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x43f5d875 hsi_add_clients_from_dt +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x73c4b08d hsi_alloc_msg +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x78843fc6 hsi_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x81faf94d hsi_new_client +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x98ab2fe8 hsi_register_client_driver +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xb188e74b hsi_port_unregister_clients +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xb31e136a hsi_claim_port +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xb611b7ed hsi_free_msg +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xc5c46b78 hsi_alloc_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xcb73fb81 hsi_async +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xcf9510ea hsi_unregister_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xe132f0eb hsi_get_channel_id_by_name +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xe5daf105 hsi_register_port_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xf2ea7179 hsi_release_port +EXPORT_SYMBOL_GPL drivers/hwmon/adt7x10 0x9af7210c adt7x10_remove +EXPORT_SYMBOL_GPL drivers/hwmon/adt7x10 0xc5663dc9 adt7x10_dev_pm_ops +EXPORT_SYMBOL_GPL drivers/hwmon/adt7x10 0xf1b36271 adt7x10_probe +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x01a81d00 pmbus_check_word_register +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x311896c1 pmbus_regulator_ops +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x50b4938e pmbus_check_byte_register +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x69d5e2ef pmbus_clear_cache +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x700ded32 pmbus_read_word_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x89e9b98e pmbus_get_driver_info +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x8b01bf3d pmbus_set_page +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x98009fea pmbus_update_byte_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xaecf1170 pmbus_clear_faults +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xb688c7bd pmbus_read_byte_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xbe4367aa pmbus_do_remove +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xe5a7f981 pmbus_write_byte_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xf175a2cd pmbus_write_byte +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xfd9827ae pmbus_do_probe +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xffc5d76d pmbus_write_word_data +EXPORT_SYMBOL_GPL drivers/hwspinlock/hwspinlock_core 0x24cb3eb4 __hwspin_unlock +EXPORT_SYMBOL_GPL drivers/hwspinlock/hwspinlock_core 0x39717439 hwspin_lock_request +EXPORT_SYMBOL_GPL drivers/hwspinlock/hwspinlock_core 0x4bd53393 __hwspin_lock_timeout +EXPORT_SYMBOL_GPL drivers/hwspinlock/hwspinlock_core 0x4fe3424f hwspin_lock_get_id +EXPORT_SYMBOL_GPL drivers/hwspinlock/hwspinlock_core 0x516cb45d hwspin_lock_register +EXPORT_SYMBOL_GPL drivers/hwspinlock/hwspinlock_core 0x6ce005f6 __hwspin_trylock +EXPORT_SYMBOL_GPL drivers/hwspinlock/hwspinlock_core 0x76a3a2fc hwspin_lock_unregister +EXPORT_SYMBOL_GPL drivers/hwspinlock/hwspinlock_core 0xb61d7441 hwspin_lock_free +EXPORT_SYMBOL_GPL drivers/hwspinlock/hwspinlock_core 0xdcc3111e of_hwspin_lock_get_id +EXPORT_SYMBOL_GPL drivers/hwspinlock/hwspinlock_core 0xea4fd178 hwspin_lock_request_specific +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x2811375d i2c_dw_func +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x2c0f556d i2c_dw_xfer +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x2d220038 i2c_dw_enable +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x2ed5ad6a i2c_dw_init +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x57cee31f i2c_dw_is_enabled +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x5bb1170b i2c_dw_isr +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x6181508e i2c_dw_clear_int +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0xb5ff1393 i2c_dw_disable +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0xbb6da9fc i2c_dw_disable_int +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0xc959b484 i2c_dw_read_comp_param +EXPORT_SYMBOL_GPL drivers/i2c/i2c-mux 0x97b43691 i2c_add_mux_adapter +EXPORT_SYMBOL_GPL drivers/i2c/i2c-mux 0xb6c8b380 i2c_del_mux_adapter +EXPORT_SYMBOL_GPL drivers/i2c/i2c-smbus 0x9722a0dd i2c_setup_smbus_alert +EXPORT_SYMBOL_GPL drivers/i2c/i2c-smbus 0xbbb60ce1 i2c_handle_smbus_alert +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x31ae89f3 ad_sigma_delta_single_conversion +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x4a0c3a5c ad_sd_init +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x6ccc1545 ad_sd_write_reg +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xb3f56226 ad_sd_cleanup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xc7527882 ad_sd_set_comm +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xc84dc797 ad_sd_read_reg +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xcaeafc65 ad_sd_validate_trigger +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xf0e15910 ad_sd_calibrate_all +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xfaf9cc92 ad_sd_setup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/adc/twl4030-madc 0x4362dc66 twl4030_get_madc_conversion +EXPORT_SYMBOL_GPL drivers/iio/adc/twl4030-madc 0xb1be4a75 twl4030_madc_conversion +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x0441d513 adis_read_reg +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x1a4a1d81 adis_reset +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x4a0e45db adis_initial_startup +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x517c1e6c adis_single_conversion +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xa66dd719 adis_setup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xa9ea3015 adis_init +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xbad01822 adis_update_scan_mode +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xcaa95979 adis_remove_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xd40a1a90 adis_cleanup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xd73d2af8 adis_probe_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xf19b7d25 adis_write_reg +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xfb014708 adis_check_status +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x043e773b iio_channel_get_all +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x049f2e31 iio_buffer_put +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x19911b1a iio_map_array_unregister +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x20b66cd6 iio_channel_get_all_cb +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x23748608 iio_convert_raw_to_processed +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x2394c198 iio_update_buffers +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x25d8d7c8 iio_dealloc_pollfunc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x267c0508 iio_channel_release_all_cb +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x26f6b499 iio_str_to_fixpoint +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x28245c7f devm_iio_device_free +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x2a1fab3c iio_channel_stop_all_cb +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x3be7b85e iio_validate_scan_mask_onehot +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x43637929 iio_scan_mask_query +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x4b36f6c1 iio_read_channel_average_raw +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x5d641a66 iio_enum_available_read +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x60e77f6b devm_iio_trigger_free +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x7a711aef iio_channel_start_all_cb +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x7cae1e77 iio_enum_read +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x863d189a iio_read_channel_processed +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x88803b21 iio_read_channel_scale +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x8f58a5de devm_iio_trigger_alloc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x931a5a36 iio_channel_release_all +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x93654bec iio_buffer_get +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x99ba8d7c devm_iio_device_register +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xb3507cb9 iio_read_channel_raw +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xb940a443 iio_push_to_buffers +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xbd12c201 iio_channel_cb_get_channels +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xc158b970 iio_write_channel_raw +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xc38469b2 iio_get_channel_type +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xc3cfb93f iio_alloc_pollfunc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xcb4abb83 devm_iio_device_unregister +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xd0844b9b iio_map_array_register +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xd4c6532a iio_update_demux +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xd8138408 devm_iio_device_alloc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xed3819d9 iio_channel_release +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xf56b1394 iio_enum_write +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xfc79cb29 iio_channel_get +EXPORT_SYMBOL_GPL drivers/infiniband/core/ib_core 0xdbd019c4 ib_wq +EXPORT_SYMBOL_GPL drivers/input/ff-memless 0x7fa0d41c input_ff_create_memless +EXPORT_SYMBOL_GPL drivers/input/matrix-keymap 0x8d686bc1 matrix_keypad_parse_of_params +EXPORT_SYMBOL_GPL drivers/input/misc/adxl34x 0x1665f1ba 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/touchscreen/cyttsp4_core 0x3ed14181 cyttsp4_pm_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp4_core 0x85370390 cyttsp4_probe +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp4_core 0xfd01c8cc cyttsp4_remove +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_core 0x6fe3b774 cyttsp_remove +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_core 0x9e1b25ae cyttsp_probe +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_core 0xec70444f cyttsp_pm_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_i2c_common 0x4ed21c3c cyttsp_i2c_read_block_data +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_i2c_common 0xaa761415 cyttsp_i2c_write_block_data +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x0bd54e1f wm9705_codec +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x166b5345 wm9712_codec +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x4d3bf5be wm97xx_get_gpio +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x53f10460 wm97xx_reg_read +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x60f529e8 wm97xx_set_suspend_mode +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x7bcb1b84 wm97xx_reg_write +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x82889cf1 wm97xx_read_aux_adc +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x83d364d4 wm97xx_register_mach_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xbff33142 wm97xx_set_gpio +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xd09d2375 wm97xx_unregister_mach_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xd1af0c50 wm97xx_config_gpio +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xdac153db wm9713_codec +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x0863b9ea ipack_bus_unregister +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x2c5f5192 ipack_device_del +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x43f311a9 ipack_put_device +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x5b5fbe8b ipack_driver_register +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x64069f74 ipack_device_add +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x7e12abe0 ipack_driver_unregister +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0xa425f72e ipack_device_init +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0xa810c9e8 ipack_bus_register +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0xf1aa01fe ipack_get_device +EXPORT_SYMBOL_GPL drivers/isdn/capi/kernelcapi 0x23359aff unregister_capictr_notifier +EXPORT_SYMBOL_GPL drivers/isdn/capi/kernelcapi 0xce1414b2 register_capictr_notifier +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x1d052dc4 gigaset_freecs +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x454aa44f gigaset_debuglevel +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x4a6c2ede gigaset_skb_sent +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x5d5709da gigaset_m10x_send_skb +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x6a18a990 gigaset_add_event +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x7e16f059 gigaset_m10x_input +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x8037be83 gigaset_skb_rcvd +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x8bcce1b0 gigaset_start +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x8eff32df gigaset_dbg_buffer +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x99536f0d gigaset_shutdown +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xa257e9e4 gigaset_fill_inbuf +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xa25aa061 gigaset_blockdriver +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xa56dcd39 gigaset_initcs +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xa5e3a6fd gigaset_initdriver +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xc656a1b6 gigaset_if_receive +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xd2a47229 gigaset_handle_modem_response +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xd4471819 gigaset_stop +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xed158292 gigaset_isdn_rcv_err +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xf3ba64e3 gigaset_freedriver +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0x03ae1f4b led_set_flash_timeout +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0x2fab8f79 led_classdev_flash_unregister +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0x56dc5bf0 led_update_flash_brightness +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0x68612d34 led_classdev_flash_register +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0xea4bf7fe led_get_flash_fault +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0xee1282b2 led_set_flash_brightness +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/mcb/mcb 0x11f8f30a mcb_bus_put +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x14cc34bb mcb_get_irq +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x23ad1acc mcb_request_mem +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x23e6ccfe mcb_alloc_dev +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x737ed48b __mcb_register_driver +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x8bf52ac0 mcb_release_mem +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0xb5c5269b mcb_unregister_driver +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0xbce3aa77 mcb_free_dev +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0xbe3247b4 mcb_release_bus +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0xbe34cf8d mcb_device_register +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0xdcca7144 mcb_bus_add_devices +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0xf5997279 mcb_bus_get +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0xfc8585d9 mcb_alloc_bus +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0xff71bd16 chameleon_parse_cells +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x038d4400 __tracepoint_bcache_btree_write +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x1bf19a28 __tracepoint_bcache_gc_copy +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x20b0dcba __tracepoint_bcache_read_retry +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x23a39c93 __tracepoint_bcache_read +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x2db90065 __tracepoint_bcache_bypass_congested +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x32a854e2 __tracepoint_bcache_btree_node_alloc_fail +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x33685aee __tracepoint_bcache_journal_entry_full +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x386e0aec __tracepoint_bcache_writeback_collision +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x43f797c7 __tracepoint_bcache_btree_node_free +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x56d844d9 __tracepoint_bcache_write +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x65c69d18 __tracepoint_bcache_btree_node_compact +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x6f318137 __tracepoint_bcache_btree_node_split +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x73856a24 __tracepoint_bcache_btree_read +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x7c7a26dc __tracepoint_bcache_cache_insert +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x824f349d __tracepoint_bcache_btree_gc_coalesce +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x8531a000 __tracepoint_bcache_btree_node_alloc +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x86192e50 __tracepoint_bcache_journal_write +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x87a79df0 __tracepoint_bcache_journal_full +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x8f336079 __tracepoint_bcache_bypass_sequential +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x90293fb5 __tracepoint_bcache_request_start +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x903dcb57 __tracepoint_bcache_writeback +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x94c4008d __tracepoint_bcache_alloc_fail +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x9aacde96 __tracepoint_bcache_btree_set_root +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x9d01a77b __tracepoint_bcache_invalidate +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xb0f4bf93 __tracepoint_bcache_btree_insert_key +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xd2be2929 __tracepoint_bcache_request_end +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xd9cf1106 __tracepoint_bcache_journal_replay_key +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xdb00ad98 __tracepoint_bcache_btree_cache_cannibalize +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xe7e528bd __tracepoint_bcache_gc_end +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xf2037566 __tracepoint_bcache_gc_start +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xfd1d6dbc __tracepoint_bcache_gc_copy_collision +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 0x473192a2 dm_bio_detain +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x6791a44e dm_deferred_entry_dec +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x730c065d dm_cell_release_no_holder +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x753e20b2 dm_bio_prison_create +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x7a86c836 dm_cell_release +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x9b001a03 dm_bio_prison_free_cell +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x9b4c63c6 dm_cell_visit_release +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 0xb94e8c8d dm_get_cell +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xca2e3a88 dm_deferred_entry_inc +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xd648012d dm_bio_prison_alloc_cell +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xd6c79f7f dm_cell_error +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xff7cd56d dm_cell_promote_or_release +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x0ad0dc4f dm_bufio_mark_buffer_dirty +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x22163b69 dm_bufio_release_move +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x3909d3a8 dm_bufio_prefetch +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x594952bd dm_bufio_read +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x62a23587 dm_bufio_get_device_size +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x6d3f57bd dm_bufio_get_client +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 0x9b2b253a dm_bufio_get +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xa82b2066 dm_bufio_write_dirty_buffers +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xc9a3422d dm_bufio_write_dirty_buffers_async +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xd4bddf5c dm_bufio_issue_flush +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xdc69e37a dm_bufio_get_block_number +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xe004ee92 dm_bufio_new +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 0xed49a920 dm_bufio_client_create +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x0b025048 dm_cache_policy_unregister +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x2d968833 dm_cache_policy_get_hint_size +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x8a10853d dm_cache_policy_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xc0f9632e dm_cache_policy_get_version +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xcb51eb98 dm_cache_policy_create +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xd0caa90b dm_cache_policy_register +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xde120861 dm_cache_policy_get_name +EXPORT_SYMBOL_GPL drivers/md/dm-multipath 0x855b0dff dm_unregister_path_selector +EXPORT_SYMBOL_GPL drivers/md/dm-multipath 0xf569313d 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 0x09472122 dm_rh_dec +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x14c9346c dm_region_hash_create +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x38efaf5a dm_region_hash_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x397ea755 dm_rh_mark_nosync +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x3a18389a dm_rh_update_states +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x5c168471 dm_rh_delay +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x677de02e dm_rh_inc_pending +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 0x8e18281a 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 0xa8813ad6 dm_rh_region_to_sector +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xb79612b6 dm_rh_dirty_log +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xbe38a431 dm_rh_recovery_prepare +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xc66ce277 dm_rh_get_region_size +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xcab63c3d dm_rh_get_state +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xd8aa4284 dm_rh_region_context +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xf37a3cfe dm_rh_get_region_key +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 0x01445176 dm_btree_find_highest_key +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x0604db1b dm_btree_remove_leaves +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x11eab9fe dm_bm_read_lock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x150c85ce dm_tm_open_with_sm +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x1e3f728d dm_block_data +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x2025e954 dm_array_info_init +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x24fa6664 dm_bitset_set_bit +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x2c112836 dm_block_location +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x2e730a21 dm_bm_checksum +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 0x32b5f546 dm_array_empty +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x33c03da6 dm_sm_disk_open +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 0x3ad0f55b dm_bm_flush +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x40f7bd91 dm_tm_inc +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x4360913e dm_btree_find_lowest_key +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x4ce7040b dm_block_manager_create +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x5aed1dd7 dm_bitset_flush +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x5e6aea80 dm_btree_walk +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x619701dc dm_sm_disk_create +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x62c1b9ee dm_array_walk +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 0x72289260 dm_block_manager_destroy +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x7657e859 dm_bitset_clear_bit +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 0x80c89b3d dm_tm_unlock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x832bf228 dm_array_del +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x858c8d94 dm_array_set_value +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x89f1e1cc dm_btree_insert_notify +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 0x966a8838 dm_btree_lookup +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x9b4b5b29 dm_bm_write_lock +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 0xa2507774 dm_tm_shadow_block +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xa87c5b4d dm_array_resize +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xab96bd2d dm_bitset_test_bit +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xaee02382 dm_btree_empty +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xb7bad799 dm_bm_unlock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xb9a6ecf8 dm_tm_dec +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xba47c03a dm_bitset_del +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xbcfdc290 dm_tm_read_lock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xbd50ebbb dm_btree_del +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xbe0497aa dm_tm_create_with_sm +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xca40abd5 dm_btree_insert +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xd041d62b dm_array_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 0xead1e727 dm_bm_write_lock_zero +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xed1e1f96 dm_btree_remove +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xed58cfa1 dm_bitset_empty +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xf12ec3cd dm_disk_bitset_init +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xffff2ac3 dm_bitset_resize +EXPORT_SYMBOL_GPL drivers/media/common/b2c2/b2c2-flexcop 0x66c0289a b2c2_flexcop_debug +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x0d9b04d3 saa7146_vfree_destroy_pgtable +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x317d8030 saa7146_pgtable_build_single +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x3ec08270 saa7146_setgpio +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x4bbf8029 saa7146_pgtable_alloc +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x4c3ae5d2 saa7146_pgtable_free +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x4cf1b138 saa7146_unregister_extension +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x7656c885 saa7146_wait_for_debi_done +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xa53e7520 saa7146_register_extension +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xb0441d71 saa7146_i2c_adapter_prepare +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xe3cd9b5c saa7146_debug +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xf868e1e9 saa7146_vmalloc_build_pgtable +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x2a77d280 saa7146_stop_preview +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x6cf5f187 saa7146_set_hps_source_and_sync +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0xc4494ae2 saa7146_vv_init +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0xc5e26456 saa7146_start_preview +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0xd36efb47 saa7146_register_device +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0xd473e04b saa7146_vv_release +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0xe96f00e4 saa7146_unregister_device +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x16427a31 smscore_getbuffer +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x21e36bf2 smscore_registry_getmode +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x2c52e12d smscore_set_board_id +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x37d91069 smsendian_handle_tx_message +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x384ca94d smscore_onresponse +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x45284ae9 smsendian_handle_rx_message +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x4d70fcd2 smscore_register_hotplug +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x4e992f75 sms_board_setup +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x5f1f3d46 sms_board_led_feedback +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x5fdceec2 sms_board_event +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 0x77ab70b6 smscore_register_client +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 0x8cde0b82 sms_board_lna_control +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x95d47e15 sms_board_power +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x9c2225ed smscore_translate_msg +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xa9ceed1c smscore_get_device_mode +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xaa5c2667 smscore_unregister_hotplug +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xaac8eaac smscore_register_device +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xb2b99bc5 smscore_putbuffer +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xb653e6e7 smscore_start_device +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xbbdb5c42 smscore_unregister_client +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xd9fc7ffd smscore_get_board_id +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xdbb1f080 smscore_unregister_device +EXPORT_SYMBOL_GPL drivers/media/dvb-frontends/as102_fe 0x793ffee3 as102_attach +EXPORT_SYMBOL_GPL drivers/media/dvb-frontends/cx24117 0xf306befb cx24117_attach +EXPORT_SYMBOL_GPL drivers/media/dvb-frontends/tda18271c2dd 0x32afbc11 tda18271c2dd_attach +EXPORT_SYMBOL_GPL drivers/media/media 0x0b509e32 media_entity_pipeline_start +EXPORT_SYMBOL_GPL drivers/media/media 0x2d5ff1c3 media_device_unregister +EXPORT_SYMBOL_GPL drivers/media/media 0x31d92bba __media_device_register +EXPORT_SYMBOL_GPL drivers/media/media 0x3ac3056f media_entity_setup_link +EXPORT_SYMBOL_GPL drivers/media/media 0x4fc55d7f media_entity_graph_walk_start +EXPORT_SYMBOL_GPL drivers/media/media 0x542d5e09 media_entity_get +EXPORT_SYMBOL_GPL drivers/media/media 0x5e149e81 media_entity_pipeline_stop +EXPORT_SYMBOL_GPL drivers/media/media 0x6e6567bb media_device_unregister_entity +EXPORT_SYMBOL_GPL drivers/media/media 0x7eefb079 media_entity_create_link +EXPORT_SYMBOL_GPL drivers/media/media 0x887863f6 media_entity_find_link +EXPORT_SYMBOL_GPL drivers/media/media 0x88c4a12c media_entity_remote_pad +EXPORT_SYMBOL_GPL drivers/media/media 0x9d3374a0 media_entity_put +EXPORT_SYMBOL_GPL drivers/media/media 0xa775f20f media_entity_graph_walk_next +EXPORT_SYMBOL_GPL drivers/media/media 0xa9eb9bae media_entity_init +EXPORT_SYMBOL_GPL drivers/media/media 0xb1d196fc media_entity_cleanup +EXPORT_SYMBOL_GPL drivers/media/media 0xd3157808 media_device_register_entity +EXPORT_SYMBOL_GPL drivers/media/media 0xe73af363 media_entity_remove_links +EXPORT_SYMBOL_GPL drivers/media/media 0xee65e101 __media_entity_remove_links +EXPORT_SYMBOL_GPL drivers/media/pci/cx88/cx88xx 0x302a0465 cx88_setup_xc3028 +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x0adac1b9 mantis_input_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x0be9de17 mantis_uart_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x26337acf mantis_stream_control +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x28213264 mantis_frontend_power +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x2bef0fc7 mantis_uart_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x32befd0c mantis_frontend_soft_reset +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x3639059f mantis_ca_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x49f94bfe mantis_get_mac +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x4ecfca5c mantis_dvb_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x5d758d8a mantis_ca_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x7c5511a2 mantis_dvb_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x80ec31c5 mantis_pci_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x99959462 mantis_pci_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x9e5749f5 mantis_i2c_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xa68c49f8 mantis_input_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xaab77e16 mantis_gpio_set_bits +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xaccd920b mantis_i2c_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xca2e4faf mantis_dma_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xf8b49451 mantis_dma_init +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x03c32c24 saa7134_ts_buffer_init +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x0865c8e8 saa7134_stop_streaming +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x0c72d6a6 saa7134_s_frequency +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x1e16d71b saa7134_ts_queue_setup +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x2e2cdfbc saa7134_g_tuner +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x30c31d42 saa7134_vb2_buffer_queue +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x3802799e saa7134_ts_qops +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x43fb4d67 saa7134_g_std +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x4dc241da saa7134_g_frequency +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x53b5aacd saa7134_g_input +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x5ba37f3b saa7134_s_input +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x6a374667 saa7134_enum_input +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x82e24e41 saa7134_querycap +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xc5e51a68 saa7134_ts_buffer_prepare +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xd8b7a30d saa7134_ts_stop_streaming +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xe0583522 saa7134_ts_start_streaming +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xe9bbdfb6 saa7134_s_std +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xee2f0174 saa7134_s_tuner +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xf3685a0e saa7134_querystd +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x3e3cedb2 ttpci_budget_debiread +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x69b1aac8 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 0xa3225e04 ttpci_budget_irq10_handler +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0xc422cc17 ttpci_budget_deinit +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0xd39796e6 ttpci_budget_init +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0xe4f5cb4d ttpci_budget_set_video_port +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0xe8880e22 ttpci_budget_debiwrite +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0x0b2585ce xvip_get_format_by_fourcc +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0x36e037d1 xvip_init_resources +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0x3c7eb685 xvip_set_format_size +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0x490bd11c xvip_get_format_by_code +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0x49799920 xvip_of_get_format +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0x5c54f549 xvip_enum_frame_size +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0x7fd30ecb xvip_clr_or_set +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0xb9be34f9 xvip_enum_mbus_code +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0xd3f42990 xvip_clr_and_set +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0xf833921d xvip_cleanup_resources +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-vtc 0x3705e97e xvtc_of_get +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/radio/shark2 0x6bcb7d9a radio_tea5777_exit +EXPORT_SYMBOL_GPL drivers/media/radio/shark2 0xc0dfe681 radio_tea5777_init +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x08fc7bc3 ir_raw_event_store_with_filter +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x1bcd9452 rc_free_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x45fed7b2 ir_raw_event_store_edge +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x553efb91 rc_core_debug +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x94b2721f rc_map_get +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x95f3d252 rc_open +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x9b0c0a0e ir_raw_event_set_idle +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x9e432da8 rc_map_unregister +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xa497e069 ir_raw_event_handle +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xa8dfc627 ir_raw_event_store +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xaa92d378 rc_keyup +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xb3780a1f rc_close +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xb7dfd6af rc_map_register +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xbc07e0ed rc_register_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xbec2bc9d rc_unregister_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xcc42a094 rc_g_keycode_from_table +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xcd74c395 rc_allocate_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xd9e8f47f rc_keydown +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xda6d40e3 rc_repeat +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xf3ae3440 rc_keydown_notimeout +EXPORT_SYMBOL_GPL drivers/media/tuners/mt2063 0x04b0143c mt2063_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/mt20xx 0x12301bae microtune_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/mxl5007t 0xc449b4ae mxl5007t_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/r820t 0x3567c7ce r820t_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda18271 0x8113d117 tda18271_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda827x 0xe4634d33 tda827x_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda8290 0x0511b4a7 tda829x_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda8290 0xaa5a2fc5 tda829x_probe +EXPORT_SYMBOL_GPL drivers/media/tuners/tda9887 0xaeaf845c tda9887_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5761 0x32d92f63 tea5761_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5761 0xd8a679dc tea5761_autodetection +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5767 0x779e5c91 tea5767_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5767 0xb9c28766 tea5767_autodetection +EXPORT_SYMBOL_GPL drivers/media/tuners/tuner-simple 0x4e1d170a simple_tuner_attach +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x017ea7c7 cx231xx_tuner_callback +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x1696f627 cx231xx_get_i2c_adap +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x2c1697c7 cx231xx_init_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x3a462596 is_fw_load +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x3be7b7f6 cx231xx_init_bulk +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x3bfa47ee cx231xx_send_usb_command +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x3cf8b28e cx231xx_unmute_audio +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x4cab8b7e cx231xx_disable656 +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x53681b33 cx231xx_uninit_bulk +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x6a65d32b cx231xx_init_vbi_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x787c5ced cx231xx_set_mode +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x80a3990f cx231xx_capture_start +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x8778e2a5 cx231xx_uninit_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x888f5dec cx231xx_demod_reset +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xa66e2324 cx231xx_dev_uninit +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xb8a87884 cx231xx_set_alt_setting +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xbf7b150f cx231xx_dev_init +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xca20f954 cx231xx_send_gpio_cmd +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xcf2d1040 cx231xx_enable_i2c_port_3 +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xd2b7b914 cx231xx_uninit_vbi_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xe4776d81 cx231xx_enable656 +EXPORT_SYMBOL_GPL drivers/media/usb/dvb-usb-v2/mxl111sf-demod 0xc749bfb5 mxl111sf_demod_attach +EXPORT_SYMBOL_GPL drivers/media/usb/dvb-usb-v2/mxl111sf-tuner 0xc120ce0b mxl111sf_tuner_attach +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x0ae0c243 em28xx_gpio_set +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x0ff2dc76 em28xx_alloc_urbs +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x14e2f79f em28xx_read_reg +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x1becd2d8 em28xx_set_mode +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x1c78c43f em28xx_write_ac97 +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x25e95ff1 em28xx_init_usb_xfer +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x4dabd959 em28xx_write_reg_bits +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x54438ac7 em28xx_toggle_reg_bits +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x6d578f78 em28xx_boards +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x7fc8652c em28xx_tuner_callback +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x81aba9da em28xx_setup_xc3028 +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x8363958c em28xx_write_reg +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xa8ed12ac em28xx_audio_analog_set +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xbfc2c1f3 em28xx_uninit_usb_xfer +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xcc6617a8 em28xx_init_camera +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xcd75ef7f em28xx_free_device +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xcffe71d8 em28xx_read_ac97 +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xd2793fe1 em28xx_stop_urbs +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xe5955d55 em28xx_audio_setup +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xfbcd987e em28xx_write_regs +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xfca80ce2 em28xx_find_led +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x0774039f tm6000_set_reg +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x2309a6d6 tm6000_xc5000_callback +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x35ed8079 tm6000_get_reg +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x81ace95e tm6000_set_reg_mask +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/usb/tm6000/tm6000 0xf4cd5179 tm6000_set_audio_bitrate +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x01c483a9 v4l2_get_timestamp +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x083f8487 v4l2_i2c_new_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x25b3f4e1 v4l2_spi_new_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x5efb5ada v4l2_spi_subdev_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x6e03f5e9 v4l2_i2c_subdev_addr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x813f3de4 v4l2_find_nearest_format +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0xbd2579a1 v4l2_i2c_new_subdev_board +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0xd9c17a12 v4l2_i2c_subdev_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0xf2a353ac v4l2_i2c_tuner_addrs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0xf5ef842e v4l_bound_align_image +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x08982d59 v4l2_match_dv_timings +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x4103badb v4l2_print_dv_timings +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x5491c182 v4l2_enum_dv_timings_cap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x67b8205b v4l2_detect_cvt +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x6f344bb9 v4l2_calc_aspect_ratio +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0xb0891da2 v4l2_dv_timings_presets +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0xdfa5a008 v4l2_valid_dv_timings +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0xf0e1988c v4l2_find_dv_timings_cap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0xf98d0f9d v4l2_detect_gtf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-flash-led-class 0xb46f4729 v4l2_flash_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-flash-led-class 0xc951ca0a v4l2_flash_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x17eb0eee v4l2_m2m_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x189fbac9 v4l2_m2m_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x255e0149 v4l2_m2m_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x26f214a0 v4l2_m2m_buf_remove +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x27d2ed4f v4l2_m2m_fop_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x2ac14c73 v4l2_m2m_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x2dc785c3 v4l2_m2m_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x45028564 v4l2_m2m_ioctl_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x4cbdde1a v4l2_m2m_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x52279033 v4l2_m2m_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x529fdb26 v4l2_m2m_buf_queue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x54eac96d v4l2_m2m_next_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x58dd43c3 v4l2_m2m_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x6063f485 v4l2_m2m_fop_mmap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x61be34dc v4l2_m2m_ioctl_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x6875fb35 v4l2_m2m_try_schedule +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x7d8469f3 v4l2_m2m_ctx_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x84deb222 v4l2_m2m_ioctl_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x92eb7355 v4l2_m2m_ioctl_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x95cf936d v4l2_m2m_ioctl_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xa276694f v4l2_m2m_ioctl_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xaa11f1b7 v4l2_m2m_ioctl_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xb34b1cbd v4l2_m2m_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xc00e8612 v4l2_m2m_ctx_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xc15be605 v4l2_m2m_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xc622902d v4l2_m2m_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xc6fca5ad v4l2_m2m_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xcebc7c80 v4l2_m2m_ioctl_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xe54bfc81 v4l2_m2m_ioctl_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x062e6f88 videobuf_next_field +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x06cb5498 videobuf_read_one +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x128fdbd2 videobuf_stop +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x159ed8c7 videobuf_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x15a6faa0 videobuf_mmap_setup +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x20ce3972 __videobuf_mmap_setup +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x277c652f videobuf_poll_stream +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x2a686552 videobuf_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x33cf6e87 videobuf_queue_to_vaddr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x45b485c6 videobuf_read_stream +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x4912fbed videobuf_mmap_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x592f419e videobuf_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x5a3705fb videobuf_waiton +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x644ac398 videobuf_queue_core_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x799de433 videobuf_queue_is_busy +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x7c4aaaf8 videobuf_queue_cancel +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x87ab7e90 videobuf_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x89f467a1 videobuf_iolock +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x98b05108 videobuf_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x9e452654 videobuf_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xb0475a33 videobuf_mmap_mapper +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xb95b65d8 videobuf_read_stop +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xd5ec5a5c videobuf_read_start +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xf01cc16e videobuf_alloc_vb +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-contig 0x109e39ab videobuf_queue_dma_contig_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-contig 0x46b30be3 videobuf_dma_contig_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-contig 0xfd3d8639 videobuf_to_dma_contig +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x2540913c videobuf_to_dma +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x59ce7d95 videobuf_dma_unmap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x768cd87b videobuf_queue_sg_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0xa825c75b videobuf_sg_alloc +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0xd66d91a4 videobuf_dma_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-vmalloc 0x2e26fe97 videobuf_vmalloc_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-vmalloc 0x900f49c0 videobuf_to_vmalloc +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-vmalloc 0xe1f38d56 videobuf_queue_vmalloc_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x0454e906 vb2_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x0783a9fd vb2_ops_wait_finish +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x0e57af89 vb2_thread_start +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x0f852520 vb2_buffer_done +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x17aea8be vb2_ioctl_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x192d5de3 vb2_fop_read +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x1a1e2bfc vb2_thread_stop +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x1cf3a930 vb2_ioctl_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x1f9afe36 _vb2_fop_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x2a1bc3ae vb2_ioctl_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x2b0d94f9 vb2_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x381a6ac2 vb2_queue_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x52debca2 vb2_wait_for_all_buffers +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x554a1ec3 vb2_write +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x7311eb00 vb2_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x74b24f5d vb2_fop_mmap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x78d57386 vb2_ops_wait_prepare +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x7d571d68 vb2_ioctl_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x9411b7e9 vb2_discard_done +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x962893a7 vb2_plane_cookie +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x99acd90d vb2_ioctl_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x9b39d281 vb2_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xa8104b45 vb2_fop_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xaab8e405 vb2_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xab7dd6c9 vb2_ioctl_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xafb9de81 vb2_ioctl_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xb49107e3 vb2_fop_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xc649d6de vb2_queue_error +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xca73853c vb2_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xd55f8fa9 vb2_queue_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xdc2c8bb5 vb2_plane_vaddr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xdebe1dd2 vb2_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xe181878e vb2_ioctl_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xe304742d vb2_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xe6050126 vb2_read +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xe74fe0f3 vb2_fop_write +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xf3d8e4b3 vb2_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xf576474e vb2_ioctl_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xf92f68c4 vb2_mmap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-contig 0x3d470a1e vb2_dma_contig_init_ctx +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-contig 0xc03f2353 vb2_dma_contig_memops +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-contig 0xe57f0426 vb2_dma_contig_cleanup_ctx +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-sg 0xd30ec30f vb2_dma_sg_cleanup_ctx +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-sg 0xe7aaf5d2 vb2_dma_sg_init_ctx +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-sg 0xfafaceff vb2_dma_sg_memops +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-memops 0x63d96491 vb2_put_vma +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-memops 0x9fd79098 vb2_get_contig_userptr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-memops 0xf3f31583 vb2_common_vm_ops +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-memops 0xfbc2e027 vb2_get_vma +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-vmalloc 0x54256f7e vb2_vmalloc_memops +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x15abf538 v4l2_fh_exit +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x2144f3bf v4l2_fh_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x23a8daf1 v4l2_fh_add +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x356dba4d v4l2_device_register_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x35fe67cf v4l2_event_pending +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x363de559 v4l2_device_disconnect +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x44c3990a v4l2_fh_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x508137c9 v4l2_event_subdev_unsubscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x5217f2b4 v4l2_src_change_event_subdev_subscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x54b614fc v4l2_event_unsubscribe_all +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x58e623fc v4l2_fh_is_singular +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x5b8edbc9 v4l2_event_dequeue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x63141bdf v4l2_device_unregister +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x7b746db2 v4l2_event_unsubscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x80666a63 v4l2_device_unregister_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x8f7b39bb v4l2_event_queue_fh +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x916172b4 v4l2_device_register +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xa556a88a v4l2_fh_open +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xb316ee94 v4l2_subdev_link_validate_default +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xb8cb6efb v4l2_event_queue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xdc42e7de v4l2_event_subscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xdf86e584 v4l2_device_put +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xeb31ded8 v4l2_device_set_name +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xedeafe00 v4l2_fh_del +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xf3224376 v4l2_src_change_event_subscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xf7dc675e v4l2_subdev_link_validate +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xff83df59 v4l2_device_register_subdev_nodes +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0x17d4519e pm80x_pm_ops +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0x82af0710 pm80x_init +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0x89c7227b pm80x_regmap_config +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0xd99fd720 pm80x_deinit +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0x353f6e16 da9150_set_bits +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0x77cafa08 da9150_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0xb5d5b43c da9150_bulk_read +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0xbb59e0bd da9150_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0xeaaab8a2 da9150_bulk_write +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x1154c9b9 kempld_read8 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x136fdaa5 kempld_release_mutex +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x29746461 kempld_write32 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x7faee261 kempld_write16 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x8d92b14b kempld_write8 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0xa20d0144 kempld_get_mutex +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0xedb7a88f kempld_read16 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0xf40e9d4a kempld_read32 +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0x0890c948 lm3533_update +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0xe1dc50d0 lm3533_write +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0xf4ef2ddf lm3533_read +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x45a0787e lm3533_ctrlbank_set_max_current +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x66ebeaa8 lm3533_ctrlbank_get_pwm +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x6d131a6a lm3533_ctrlbank_set_brightness +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x9c373aa7 lm3533_ctrlbank_enable +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0xb4ac4dbc lm3533_ctrlbank_set_pwm +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0xce1e8098 lm3533_ctrlbank_disable +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0xe4dd1939 lm3533_ctrlbank_get_brightness +EXPORT_SYMBOL_GPL drivers/mfd/lp3943 0x0f4791b4 lp3943_write_byte +EXPORT_SYMBOL_GPL drivers/mfd/lp3943 0xbaa2e9c4 lp3943_update_bits +EXPORT_SYMBOL_GPL drivers/mfd/lp3943 0xe4ab6633 lp3943_read_byte +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x97a6132e mc13xxx_common_init +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0xab2683f2 mc13xxx_variant_mc34708 +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0xadc37f7d mc13xxx_common_exit +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0xb929769a mc13xxx_variant_mc13783 +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0xc5f16d35 mc13xxx_adc_do_conversion +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0xf9933dba mc13xxx_variant_mc13892 +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x0a4f4900 pcf50633_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x11d44a29 pcf50633_reg_set_bit_mask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x3f2e88aa pcf50633_read_block +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x690c2bb5 pcf50633_irq_mask_get +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x9c2ce768 pcf50633_irq_unmask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xa83dff48 pcf50633_register_irq +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xad1bd10b pcf50633_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xaf3e51ba pcf50633_irq_mask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xb90b6d7d pcf50633_write_block +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xb9c874c8 pcf50633_free_irq +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xc086c361 pcf50633_reg_clear_bits +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-adc 0x2d36e7a7 pcf50633_adc_sync_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-adc 0xcfe79b47 pcf50633_adc_async_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x1f407219 pcf50633_gpio_invert_set +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x404d827a pcf50633_gpio_invert_get +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x6a5d68cf pcf50633_gpio_get +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x9ca51259 pcf50633_gpio_power_supply_set +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0xb3b6af7e pcf50633_gpio_set +EXPORT_SYMBOL_GPL drivers/mfd/retu-mfd 0x01a33234 retu_write +EXPORT_SYMBOL_GPL drivers/mfd/retu-mfd 0x4fca3918 retu_read +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x17f04e80 rtsx_pci_read_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x23e41d06 rtsx_pci_dma_unmap_sg +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x2bd0f508 rtsx_pci_stop_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x3017a2ee rtsx_pci_write_ppbuf +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x395f2708 rtsx_pci_write_phy_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x3c790067 rtsx_pci_read_phy_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x4a8032f2 rtsx_pci_card_pull_ctl_disable +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x5d279f92 rtsx_pci_dma_transfer +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x633e53f1 rtsx_pci_card_exclusive_check +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x68521bde rtsx_pci_write_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x6d78a710 rtsx_pci_send_cmd_no_wait +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x97f82a3c rtsx_pci_card_power_off +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x9cb5c917 rtsx_pci_send_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xac9157bf rtsx_pci_start_run +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xac99b341 rtsx_pci_dma_map_sg +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xb9d180ac rtsx_pci_card_power_on +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xc276aa71 rtsx_pci_read_ppbuf +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xcdb25d7f rtsx_pci_add_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xd502e621 rtsx_pci_transfer_data +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xe4ae1731 rtsx_pci_switch_clock +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xe821cc11 rtsx_pci_card_exist +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xec261704 rtsx_pci_switch_output_voltage +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xfdf5e158 rtsx_pci_complete_unfinished_transfer +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xfe14a668 rtsx_pci_card_pull_ctl_enable +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x02d6387e rtsx_usb_transfer_data +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x1494885f rtsx_usb_read_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x1542fefa rtsx_usb_write_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x1af9d044 rtsx_usb_get_card_status +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x2e342bd8 rtsx_usb_get_rsp +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x3ceee4d7 rtsx_usb_ep0_write_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x4ee49ddf rtsx_usb_add_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x4fab715a rtsx_usb_ep0_read_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x6c3cf207 rtsx_usb_card_exclusive_check +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x7a493099 rtsx_usb_switch_clock +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x8f934e1b rtsx_usb_send_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0xb784b6a7 rtsx_usb_write_ppbuf +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0xd9b5fdff rtsx_usb_read_ppbuf +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x06e2853a si476x_core_has_diversity +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x0f1e2362 si476x_core_cmd_am_seek_start +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x231b86f3 si476x_core_is_powered_up +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x240aaa54 si476x_core_cmd_fm_tune_freq +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x2cc9b058 si476x_core_cmd_intb_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x322e6274 si476x_core_set_power_state +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x3f306ef9 si476x_core_cmd_zif_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x50223972 si476x_core_cmd_fm_phase_div_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x5228b38f si476x_core_cmd_fm_rds_blockcount +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x54ae5a28 si476x_core_cmd_power_down +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x5596ac5f si476x_core_has_am +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x55c27abf si476x_core_cmd_am_tune_freq +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x62b1a356 si476x_core_cmd_dig_audio_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x69302d91 si476x_core_cmd_fm_acf_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x6e8acf73 si476x_core_cmd_am_rsq_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x8921882e si476x_core_cmd_ic_link_gpo_ctl_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x89b97c53 si476x_core_cmd_am_acf_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x8eaa04bd si476x_core_cmd_fm_rsq_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x90c96f4f si476x_core_cmd_agc_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x9b91f5fa si476x_core_i2c_xfer +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x9cf8efd5 si476x_core_stop +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xa9c45063 si476x_core_is_a_secondary_tuner +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xab40d471 si476x_core_cmd_power_up +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xaf6a21b9 si476x_core_cmd_fm_phase_diversity +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xb9d2f7d9 si476x_core_cmd_set_property +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xbe50eb06 si476x_core_cmd_get_property +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xca0d556b si476x_core_is_a_primary_tuner +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xcbbc149b si476x_core_start +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xd0058f18 devm_regmap_init_si476x +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xdfb5cf13 si476x_core_cmd_ana_audio_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xefe5972d si476x_core_is_in_am_receiver_mode +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xf526a317 si476x_core_cmd_fm_seek_start +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xf88fc25f si476x_core_cmd_fm_rds_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xfb5b12ad si476x_core_cmd_func_info +EXPORT_SYMBOL_GPL drivers/mfd/ssbi 0x14632a34 ssbi_write +EXPORT_SYMBOL_GPL drivers/mfd/ssbi 0xf7fceae2 ssbi_read +EXPORT_SYMBOL_GPL drivers/mfd/ti_am335x_tscadc 0x06dcf8da am335x_tsc_se_adc_done +EXPORT_SYMBOL_GPL drivers/mfd/ti_am335x_tscadc 0x1ec8581b am335x_tsc_se_set_cache +EXPORT_SYMBOL_GPL drivers/mfd/ti_am335x_tscadc 0x3d6c0d72 am335x_tsc_se_clr +EXPORT_SYMBOL_GPL drivers/mfd/ti_am335x_tscadc 0x5a1fe53f am335x_tsc_se_set_once +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0x52dfa7a3 tps65217_clear_bits +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0xb0829cc0 tps65217_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0xe0596609 tps65217_set_bits +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0xfd28cd15 tps65217_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/tps65218 0x2f52ffd4 tps65218_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/tps65218 0xb94f28c7 tps65218_clear_bits +EXPORT_SYMBOL_GPL drivers/mfd/tps65218 0xdf1eb798 tps65218_set_bits +EXPORT_SYMBOL_GPL drivers/mfd/tps65218 0xfd3aadb2 tps65218_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/ucb1400_core 0xbef43762 ucb1400_adc_read +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0x048d2481 cb710_pci_update_config_reg +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0x22dbd5ba cb710_sg_dwiter_read_next_block +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0x66641c6d cb710_sg_dwiter_write_next_block +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0xd8dc4687 cb710_set_irq_handler +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0x1a1b5249 oslec_flush +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0x2feda75b oslec_hpf_tx +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0x3227a28e oslec_snapshot +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0x7dc9dddd oslec_adaption_mode +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0xb2c66001 oslec_create +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0xc8b5a524 oslec_free +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0xd370f679 oslec_update +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0x27cb133b eeprom_93cx6_multiread +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0x63d2ff63 eeprom_93cx6_wren +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0x793fc8de eeprom_93cx6_multireadb +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0x822222db eeprom_93cx6_write +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0x98bb5a22 eeprom_93cx6_read +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0xdb9ca14b eeprom_93cx6_readb +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x08763897 enclosure_remove_device +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x49d732d9 enclosure_unregister +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x51d6763f enclosure_for_each_device +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x74fdcfbc enclosure_component_alloc +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x7604092d enclosure_find +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0xaed8115c enclosure_component_register +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0xb3ec0a78 enclosure_add_device +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0xba4f51a4 enclosure_register +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x0c2d3529 lis3lv02d_joystick_disable +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x1e45a91c lis3lv02d_joystick_enable +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x2c7a9d68 lis3lv02d_poweron +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x62f1facb lis3lv02d_init_device +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x6a816503 lis3_dev +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x6e1a83db lis3lv02d_init_dt +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x93194b8e lis3lv02d_poweroff +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xcc6ab6a5 lis3lv02d_remove_fs +EXPORT_SYMBOL_GPL drivers/misc/ti-st/st_drv 0x55c61ed4 st_register +EXPORT_SYMBOL_GPL drivers/misc/ti-st/st_drv 0x77138830 st_unregister +EXPORT_SYMBOL_GPL drivers/mmc/host/dw_mmc-pltfm 0x16aee2b1 dw_mci_pltfm_register +EXPORT_SYMBOL_GPL drivers/mmc/host/dw_mmc-pltfm 0x5da6f15d dw_mci_pltfm_pmops +EXPORT_SYMBOL_GPL drivers/mmc/host/dw_mmc-pltfm 0x6fce52ba dw_mci_pltfm_remove +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0x4744ffe4 cfi_cmdset_0001 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0x786dda0c cfi_cmdset_0003 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0x8573ff9a cfi_cmdset_0200 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0x01c21938 cfi_cmdset_0701 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0x8c699d6e cfi_cmdset_0006 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0xf23bd6be cfi_cmdset_0002 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0020 0xf63e2e7f cfi_cmdset_0020 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0x11555468 cfi_qry_mode_on +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0x55cc1629 cfi_qry_mode_off +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0x6a5620d3 cfi_qry_present +EXPORT_SYMBOL_GPL drivers/mtd/nand/brcmnand/brcmnand 0x1b140597 brcmnand_probe +EXPORT_SYMBOL_GPL drivers/mtd/nand/brcmnand/brcmnand 0x1df3c6e3 brcmnand_remove +EXPORT_SYMBOL_GPL drivers/mtd/nand/brcmnand/brcmnand 0x67543b0f brcmnand_pm_ops +EXPORT_SYMBOL_GPL drivers/mtd/nand/sm_common 0xac07495b sm_register_device +EXPORT_SYMBOL_GPL drivers/mtd/onenand/onenand 0x73ef4769 onenand_release +EXPORT_SYMBOL_GPL drivers/mtd/onenand/onenand 0xdafe7ed6 onenand_scan +EXPORT_SYMBOL_GPL drivers/mtd/spi-nor/spi-nor 0x040944bd spi_nor_scan +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x169fbcc5 ubi_leb_erase +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x1e9dba95 ubi_open_volume_path +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x251a5c2a ubi_leb_write +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x381c7fbe ubi_get_volume_info +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 0x5cfdd22d ubi_get_device_info +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x5f8251c4 ubi_leb_change +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x67b44887 ubi_close_volume +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x6db86bc4 ubi_open_volume +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x7a2e0ccd ubi_is_mapped +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x85a8ee76 ubi_unregister_volume_notifier +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x89df8104 ubi_open_volume_nm +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x8e67e1be ubi_leb_unmap +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xbe112dde ubi_leb_read +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xd07c9a9e ubi_leb_map +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xe34617c9 ubi_leb_read_sg +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xec61df8c ubi_do_get_device_info +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xf5ee9ba8 ubi_register_volume_notifier +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x1e16fdeb alloc_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x4f34706f unregister_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x880dee0a c_can_power_down +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x89dfa13a register_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x8a04e906 c_can_power_up +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x8bf0a6f5 free_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x05cf7431 register_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x222c295a can_len2dlc +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x2a0ff4fd can_led_event +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x2b3991b6 alloc_can_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x302cc327 alloc_canfd_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x320d48c5 alloc_can_err_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x71a796e9 safe_candev_priv +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x7971257f can_change_mtu +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x8498c1bd unregister_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x9067b2e0 can_free_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x9e97f38b alloc_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xb346573b can_dlc2len +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xc64783b6 can_change_state +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xcaac4f8c can_get_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xcd5b74e7 devm_can_led_init +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xe2a77f1e can_put_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xf0b51825 can_bus_off +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xf3fb7df6 close_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xfad276fc open_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xfaf4e2ae free_candev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0x34faf96b free_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0x352cfdec register_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0x9bb7bab3 alloc_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0xa53db257 unregister_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x3a5efa09 register_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x49ebd0d2 sja1000_interrupt +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x49f1314a free_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0xd552cc94 alloc_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0xdb0c416a unregister_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/ethernet/arc/arc_emac 0x1d923974 arc_emac_probe +EXPORT_SYMBOL_GPL drivers/net/ethernet/arc/arc_emac 0x49c26b9c arc_emac_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x08936a72 mlx4_unicast_promisc_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x091e0b4b mlx4_counter_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0b27a8a4 mlx4_vf_get_enable_smi_admin +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0b55e3b0 mlx4_cq_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0e35220d __mlx4_replace_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x111d7f89 mlx4_cq_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x140f7dc0 mlx4_srq_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x14b44aa3 mlx4_qp_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x167966a8 mlx4_get_admin_guid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x18738795 mlx4_register_interface +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1a95a155 mlx4_flow_steer_promisc_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1b9e7313 mlx4_mr_rereg_mem_cleanup +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1cc9b663 mlx4_SYNC_TPT +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1f3a1b44 mlx4_qp_modify +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2203d2e2 mlx4_INIT_PORT +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2375346b mlx4_get_protocol_dev +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x24324934 mlx4_mr_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x26623e6c mlx4_unicast_detach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x272a13de mlx4_config_vxlan_port +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2bc71ddc mlx4_register_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2cc0a936 mlx4_mr_hw_put_mpt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2df8b247 mlx4_flow_detach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3190fc50 mlx4_config_dev_retrieval +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x349ee1da mlx4_set_vf_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x34a86fd6 mlx4_alloc_cmd_mailbox +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3bc0ba06 mlx4_hw_rule_sz +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3d73a6a7 mlx4_buf_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x42b52409 mlx4_get_slave_default_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x42c55b6f mlx4_set_vf_link_state +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x48627376 mlx4_get_internal_clock_params +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x486b2427 mlx4_phys_to_slaves_pport_actv +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x48bd32ed mlx4_set_vf_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4c29ed08 mlx4_register_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4f5f6287 mlx4_mw_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x505e36ae mlx4_multicast_promisc_add +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5124ca85 mlx4_fmr_enable +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x56488ae4 mlx4_phys_to_slave_port +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x57ba31e4 mlx4_set_vf_rate +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x588edc99 mlx4_get_active_ports +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5a44b034 mlx4_counter_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5ce334b6 mlx4_get_default_counter_index +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x620a64c3 mlx4_mtt_init +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x62aeb5f3 mlx4_bond +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x632a8a3e mlx4_flow_steer_promisc_add +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x63f8ab71 mlx4_fmr_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x65cad378 mlx4_qp_release_range +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6632f2b6 mlx4_qp_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6d8f3cee mlx4_mr_hw_write_mpt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6e6f7711 mlx4_get_base_qpn +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6f7c7703 mlx4_get_base_gid_ix +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x734c516c mlx4_port_map_set +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x73d1b5a8 mlx4_unbond +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x76c7b226 mlx4_srq_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x79e2faef mlx4_mr_hw_change_pd +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7cb52bde mlx4_free_hwq_res +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7fe51fc9 mlx4_buf_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x80b8a6ff mlx4_wol_read +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x81093df9 mlx4_mr_enable +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x85638087 mlx4_CLOSE_PORT +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x864dbf40 mlx4_write_mtt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x884f7343 mlx4_uar_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8b9de147 mlx4_mr_rereg_mem_write +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8dc7981e mlx4_mw_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8e283414 mlx4_mw_enable +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9210d81b mlx4_map_sw_to_hw_steering_mode +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x92bb1e29 __mlx4_unregister_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x93f69ca7 mlx4_qp_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x93fda6c2 mlx4_read_clock +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x941175aa mlx4_get_vf_stats +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9435f5f0 mlx4_get_vf_config +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x97dabfef mlx4_cq_resize +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x99624ce7 mlx4_get_counter_stats +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9e223ad6 mlx4_free_cmd_mailbox +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa07df6b8 mlx4_multicast_detach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa617e918 mlx4_FLOW_STEERING_IB_UC_QP_RANGE +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa6d6bf6f __mlx4_register_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa9128865 mlx4_srq_arm +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xac4ead86 mlx4_unicast_promisc_add +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xadc0827c mlx4_bf_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xaf58c292 mlx4_find_cached_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb1cf3e63 mlx4_multicast_promisc_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb1dd6883 mlx4_find_cached_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb2a793f5 mlx4_mr_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb340b438 mlx4_qp_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb35b0110 mlx4_unregister_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb57e5e0d mlx4_xrcd_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb6c964ad mlx4_wol_write +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb7f9df49 mlx4_mr_hw_get_mpt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbdd2e59c mlx4_mtt_addr +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbf078b85 __mlx4_cmd +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbf393708 mlx4_set_admin_guid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc1123e4f mlx4_ACCESS_PTYS_REG +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xcaa71963 mlx4_unicast_attach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xcb231f3b mlx4_unregister_interface +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xcb9a35f9 mlx4_phys_to_slaves_pport +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xcdabfe2c mlx4_pd_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd149a64e mlx4_map_sw_to_hw_steering_id +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd28e0114 mlx4_slave_convert_port +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd2a25aa8 mlx4_mtt_cleanup +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd37e2ce4 mlx4_db_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd4d8dfa9 mlx4_flow_attach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd545b497 mlx4_uar_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd7bc7f95 mlx4_vf_set_enable_smi_admin +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xda88d985 mlx4_fmr_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xdca49d9f mlx4_update_qp +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xde7c41fc mlx4_cq_modify +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xdf5757df mlx4_pd_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xdfaddc64 mlx4_srq_lookup +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe3ce8664 mlx4_unregister_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe665b7e0 mlx4_map_phys_fmr +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe6f0fcfd mlx4_db_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe8694e98 mlx4_alloc_hwq_res +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe997e880 mlx4_xrcd_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xec2ea0ba mlx4_buf_write_mtt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xee37917d mlx4_srq_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf4113f0d mlx4_mr_hw_change_access +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf50be07d mlx4_set_vf_spoofchk +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf6c6eec0 mlx4_fmr_unmap +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf818c7ff mlx4_qp_reserve_range +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xfb3beb89 mlx4_qp_to_ready +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xfb6b537b mlx4_vf_smi_enabled +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xfc01a757 mlx4_multicast_attach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xfe29311b mlx4_bf_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x0569b214 mlx5_query_hca_vport_gid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x09504852 mlx5_query_port_admin_status +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x09543b3d mlx5_fill_page_array +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x10d1b678 mlx5_query_port_max_mtu +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x1343ed32 mlx5_core_create_qp +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x1792fddd mlx5_core_page_fault_resume +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x426ee7db mlx5_core_xrcd_dealloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x4de431c4 mlx5_query_port_proto_cap +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x5545f2b3 mlx5_core_destroy_qp +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x56018e0e mlx5_query_hca_vport_system_image_guid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x5679ab09 mlx5_set_port_caps +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x607e63dd mlx5_query_hca_vport_context +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x61df228f mlx5_set_port_admin_status +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x644647a9 mlx5_query_port_vl_hw_cap +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x66086fe5 mlx5_core_access_reg +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x6608b722 mlx5_create_map_eq +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x679ae01b mlx5_destroy_unmap_eq +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x68834c8a mlx5_db_alloc_node +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x6a2cc6da mlx5_core_eq_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x715f38c2 mlx5_core_xrcd_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x71b5527d mlx5_query_port_oper_mtu +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x725b31bc mlx5_query_port_proto_oper +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x80a8d3a9 mlx5_query_port_link_width_oper +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x83757a54 mlx5_core_qp_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x919641e7 mlx5_buf_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x99f834e3 mlx5_set_port_proto +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x9c7d10d1 mlx5_set_port_mtu +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa680b2ad mlx5_query_port_proto_admin +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xaf17af70 mlx5_query_hca_vport_pkey +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xb5f2af77 mlx5_db_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xb922fa92 mlx5_core_qp_modify +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xcb4f1b1f mlx5_query_hca_vport_node_guid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe161e267 mlx5_core_mad_ifc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf47b2ca0 mlx5_buf_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf4b869db mlx5_query_port_ptys +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf94f4719 mlx5_db_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac 0x4f05e4e6 stmmac_suspend +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac 0x5bf1b358 stmmac_dvr_probe +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac 0x944b180b stmmac_dvr_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac 0xe797e306 stmmac_resume +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac-platform 0x45e67358 stmmac_pltfr_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac-platform 0x823bced7 stmmac_pltfr_pm_ops +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac-platform 0xd5a36dab stmmac_pltfr_probe +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x56e9b16c macvlan_link_register +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x71079ea2 macvlan_dellink +EXPORT_SYMBOL_GPL drivers/net/macvlan 0xb78ad6a6 macvlan_common_newlink +EXPORT_SYMBOL_GPL drivers/net/macvlan 0xb7e4c056 macvlan_common_setup +EXPORT_SYMBOL_GPL drivers/net/macvtap 0xa3e0d0aa macvtap_get_socket +EXPORT_SYMBOL_GPL drivers/net/phy/mdio-mux 0x6318757f mdio_mux_uninit +EXPORT_SYMBOL_GPL drivers/net/phy/mdio-mux 0xd1430246 mdio_mux_init +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0x0b7cda2d usbnet_cdc_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0x723a16e6 usbnet_cdc_bind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0x7b00a770 usbnet_generic_cdc_bind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0x8058b92c usbnet_cdc_status +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x0785156c cdc_ncm_tx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x43db1a4d cdc_ncm_rx_verify_ndp16 +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x73532684 cdc_ncm_select_altsetting +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x92a0a2cc cdc_ncm_fill_tx_frame +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0xb12a5421 cdc_ncm_rx_verify_nth16 +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0xb5a43322 cdc_ncm_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0xd9f206d4 cdc_ncm_rx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0xdf2ccd4c cdc_ncm_bind_common +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x2dd219a6 rndis_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x36bd8f9b rndis_tx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x3af6a891 generic_rndis_bind +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x45c01467 rndis_command +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x46d7f0ff rndis_rx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x99aec5df rndis_status +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x047f48e7 usbnet_probe +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x0b950df8 usbnet_pause_rx +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x139c37fd usbnet_skb_return +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x17605f4f usbnet_write_cmd +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x19e65fc4 usbnet_change_mtu +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x1ad7bb27 usbnet_read_cmd_nopm +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x45b14715 usbnet_resume_rx +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x4c241931 usbnet_suspend +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x5468da03 usbnet_get_msglevel +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x7d5e61fb usbnet_set_msglevel +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x8174ccdf usbnet_status_start +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x83428166 usbnet_get_ethernet_addr +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x866001ad usbnet_purge_paused_rxq +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x87c08cb1 usbnet_update_max_qlen +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x91bd95ef usbnet_get_drvinfo +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x931bbe0f usbnet_get_endpoints +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x9449af90 usbnet_get_settings +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x9796c8a9 usbnet_write_cmd_nopm +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xb175e797 usbnet_status_stop +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xb8d08094 usbnet_disconnect +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xc62d9304 usbnet_set_settings +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xc8817ee5 usbnet_resume +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xc95a03cb usbnet_write_cmd_async +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xccadd1ad usbnet_read_cmd +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xd63dc890 usbnet_open +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xdfbd8ab0 usbnet_start_xmit +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xe093e5f3 usbnet_nway_reset +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xe3bbc589 usbnet_tx_timeout +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xeaaa91d9 usbnet_get_link +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xeb4ce288 usbnet_defer_kevent +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xeb5b8f71 usbnet_unlink_rx_urbs +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xf376bd35 usbnet_stop +EXPORT_SYMBOL_GPL drivers/net/vxlan 0x2b995077 vxlan_sock_add +EXPORT_SYMBOL_GPL drivers/net/vxlan 0x3cee85ea vxlan_get_rx_port +EXPORT_SYMBOL_GPL drivers/net/vxlan 0x43ac54d9 vxlan_xmit_skb +EXPORT_SYMBOL_GPL drivers/net/vxlan 0xbbe4622e vxlan_sock_release +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x1f77bb08 i2400m_tx +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x2badd38f i2400m_rx +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x41df85ba i2400m_post_reset +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x60314408 i2400m_dev_bootstrap +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x8437745e i2400m_netdev_setup +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x8a64191f i2400m_release +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x8e202093 i2400m_tx_msg_get +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x9633f2d2 i2400m_init +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xab51f4a0 i2400m_cmd_enter_powersave +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xadcadd1f i2400m_error_recovery +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xb00b793c i2400m_bm_cmd_prepare +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xb36008d1 i2400m_pre_reset +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xb42a72a8 i2400m_is_boot_barker +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xd20cc32b i2400m_reset +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xd3805fa9 i2400m_setup +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xd53d1b9b i2400m_dev_reset_handle +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xf9b9385e i2400m_tx_msg_sent +EXPORT_SYMBOL_GPL drivers/net/wireless/cw1200/cw1200_core 0x39028bf2 cw1200_core_release +EXPORT_SYMBOL_GPL drivers/net/wireless/cw1200/cw1200_core 0x587d0092 cw1200_irq_handler +EXPORT_SYMBOL_GPL drivers/net/wireless/cw1200/cw1200_core 0x8f578a93 cw1200_core_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/cw1200/cw1200_core 0x9b49400b cw1200_can_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/ipw2x00/libipw 0x4f64e9f3 libipw_rx_any +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0x2655dade _il_grab_nic_access +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0x26e91039 il_mac_tx_last_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0x352b792f il_dealloc_bcast_stations +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0x3a4095af il_prep_station +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0xf614a1a5 il_remove_station +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x00368899 iwl_read_direct32 +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x10da38dc __iwl_dbg +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x194202ee iwl_notification_wait_init +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x194cdd69 iwl_parse_nvm_mcc_info +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x2506420c iwl_write_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x35033c81 iwl_phy_db_free +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x3f0b9a6d iwl_remove_notification +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x4007026e __iwl_crit +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x4082805f __iwl_warn +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x46ce26eb iwl_opmode_register +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x51b657cd iwlwifi_mod_params +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x5a10d898 iwl_abort_notification_waits +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x5c52e109 iwl_opmode_deregister +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x5d229371 iwl_set_bits_mask_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x64b15252 iwl_clear_bits_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x67fc8485 iwl_poll_direct_bit +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x74d394f2 iwl_phy_db_init +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x776221bf iwl_send_phy_db_data +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x8c5d5ab3 iwl_phy_db_set_section +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x91da5085 __iwl_info +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x92e64568 iwl_wait_notification +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xa4d3b590 iwl_poll_bit +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xa7b5c06c iwl_nvm_check_version +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xae2d8967 iwl_write_direct32 +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xb084568f iwl_force_nmi +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xba603c3f __iwl_err +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xbb7fa974 iwl_read_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xc1723d93 iwl_read_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xc5cabb86 iwl_set_bits_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xd03688c5 iwl_parse_eeprom_data +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xd3ec3f57 iwl_parse_nvm_data +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xe11f9eaa iwl_notification_wait_notify +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xf5032a20 iwl_init_notification_wait +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x04c3ac6f lbs_get_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x0c6c32ff lbs_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x1d559adf __lbs_cmd +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x1e2d9314 lbs_start_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x31c63337 lbs_stop_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x50052d4b lbs_send_tx_feedback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x54681609 lbs_process_rxed_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x5fdf38b8 lbs_disablemesh +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x676aa9d6 lbs_notify_command_response +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x8a4d274d lbs_queue_event +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x9bd3de8c lbs_get_firmware_async +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x9e03f8de lbs_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xa00f30ea lbs_cmd_copyback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xaa70ba28 lbs_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xad9e2955 lbs_host_sleep_cfg +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xafd23490 lbs_host_to_card_done +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xdd13e669 lbs_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xf64277de lbs_debug +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x0cad18c3 __lbtf_cmd +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x31f8ecd3 lbtf_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x38f82b94 lbtf_bcn_sent +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x487a1540 lbtf_cmd_response_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xc85e6899 lbtf_debug +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xe6cb259f lbtf_send_tx_feedback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xe9a28748 lbtf_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xeef0bd9f lbtf_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xefa4f8be lbtf_cmd_copyback +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x0121ded5 mwifiex_add_virtual_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x01a1d5d8 mwifiex_write_data_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x0739a4eb mwifiex_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x31bd9748 mwifiex_alloc_dma_align_buf +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x5d347bf4 mwifiex_upload_device_dump +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x60ef3708 mwifiex_disable_auto_ds +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x71dcd769 mwifiex_cancel_hs +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x90ba0d34 mwifiex_deauthenticate_all +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x94cbc5ff mwifiex_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x9fd79031 mwifiex_drv_info_dump +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xcdd8e006 mwifiex_process_sleep_confirm_resp +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xd1d19da9 mwifiex_process_hs_config +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xd56fddca mwifiex_del_virtual_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xeadd06ab mwifiex_main_process +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xec1676d5 mwifiex_queue_main_work +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xfb08efca mwifiex_init_shutdown_fw +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xfc756543 mwifiex_handle_rx_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xfd4a31d3 mwifiex_enable_hs +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x17d1f095 p54_free_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x40f82626 p54_free_skb +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x6db4af47 p54_init_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x847a0f06 p54_unregister_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xa7b1afa9 p54_parse_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xbcce1ed6 p54_register_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xd2e04224 p54_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xd8ceac38 p54_read_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xd9038bae p54_parse_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0x38140271 rsi_91x_init +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0x70618d57 rsi_mac80211_detach +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0x7201b98a rsi_dbg +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0x8ee08dfe rsi_91x_deinit +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0xa11d1303 rsi_read_pkt +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0xdb3ca0e5 rsi_zone_enabled +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x05a41e01 rt2800_config_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x05a6db01 rt2800_write_tx_data +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x0776ea6f rt2800_sta_add +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x07cba757 rt2800_set_rts_threshold +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x0e6a7007 rt2800_config_filter +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x17fbb0d4 rt2800_disable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x1dbabe50 rt2800_get_txwi_rxwi_size +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x1f72f9a3 rt2800_conf_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x20564b3a rt2800_gain_calibration +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x280573fc rt2800_mcu_request +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x3f941c14 rt2800_ampdu_action +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x3fc6eb77 rt2800_config_shared_key +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x3fee516b rt2800_txdone_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x45cdab62 rt2800_get_tsf +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x591e8c30 rt2800_link_tuner +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x665b01ca rt2800_vco_calibration +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x6c1ff4ed rt2800_get_survey +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x6de4adbd rt2800_check_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x79acfa8d rt2800_rfkill_poll +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x7b02b0f5 rt2800_read_eeprom_efuse +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x7d0e352e rt2800_config_erp +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x7f0b5a0e rt2800_disable_wpdma +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x8292d86a rt2800_write_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x9053aec9 rt2800_probe_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x9f3889bc rt2800_config_pairwise_key +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xadefe45b rt2800_get_key_seq +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xaecc7d7a rt2800_efuse_detect +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xb176b11c rt2800_wait_wpdma_ready +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xc0eb3630 rt2800_wait_csr_ready +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xc224110f rt2800_link_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xc23d1d38 rt2800_enable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xcd77edf6 rt2800_reset_tuner +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xcf618e29 rt2800_load_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xd0ec2005 rt2800_config +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xdeb41cd1 rt2800_process_rxwi +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xf1aab46d rt2800_config_ant +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xf9c28dab rt2800_clear_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xfdb0c681 rt2800_sta_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x0fad1430 rt2800mmio_pretbtt_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x1c79f30f rt2800mmio_init_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x2505789d rt2800mmio_tbtt_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x33e43260 rt2800mmio_stop_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x3888946c rt2800mmio_get_txwi +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x52ac54fa rt2800mmio_fill_rxdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x5c43e41a rt2800mmio_write_tx_desc +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x5fa4db64 rt2800mmio_interrupt +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x7f31628a rt2800mmio_init_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x8f8e4fcb rt2800mmio_kick_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x92c0bcd1 rt2800mmio_rxdone_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x96f956d2 rt2800mmio_get_entry_state +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xad7c6701 rt2800mmio_toggle_irq +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xb8a46ab0 rt2800mmio_start_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xc6a1455e rt2800mmio_autowake_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xe236f5a9 rt2800mmio_queue_init +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xe28f94c7 rt2800mmio_txstatus_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xebd2f816 rt2800mmio_enable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xf92d4116 rt2800mmio_clear_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x0656e464 rt2x00lib_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x0e082c9d rt2x00mac_stop +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x0f465af1 rt2x00queue_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x152cf687 rt2x00lib_remove_dev +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x29b91a7c rt2x00mac_config +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x2a55b798 rt2x00mac_get_antenna +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x33b97f73 rt2x00queue_get_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x40145087 rt2x00lib_dmadone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x4eadfc52 rt2x00mac_set_tim +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x57c6b321 rt2x00mac_set_key +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x584ad3b0 rt2x00mac_get_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x5a9af985 rt2x00mac_add_interface +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x5fe551f9 rt2x00mac_remove_interface +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x6dea9b94 rt2x00mac_flush +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x6f54910a rt2x00mac_sta_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x70267c3b rt2x00lib_txdone_noinfo +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x75f3cac9 rt2x00queue_start_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x7eeddc01 rt2x00lib_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x83779e39 rt2x00mac_bss_info_changed +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x8e42d887 rt2x00mac_sw_scan_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x9763a1ce rt2x00mac_tx_frames_pending +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x97c922a5 rt2x00mac_configure_filter +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x98459010 rt2x00queue_stop_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x9f943f7f rt2x00mac_rfkill_poll +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xa597061f rt2x00mac_sw_scan_start +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xa920df20 rt2x00mac_conf_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xad4ea54b rt2x00queue_unpause_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xafdaeafc rt2x00lib_probe_dev +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xb342d895 rt2x00queue_stop_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xb4a5a4f7 rt2x00queue_flush_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xb5dbf444 rt2x00lib_get_bssidx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xb5dc0836 rt2x00lib_txdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xcca9a4d4 rt2x00mac_start +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xce80e20a rt2x00mac_sta_add +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xd443aa05 rt2x00lib_beacondone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xd88f208e rt2x00queue_unmap_skb +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xe709d975 rt2x00queue_for_each_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xea782e4e rt2x00lib_rxdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xeb2d3ddd rt2x00mac_get_ringparam +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xec7f0ffa rt2x00mac_set_antenna +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xeccb6f17 rt2x00lib_dmastart +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xedc6d9de rt2x00queue_map_txskb +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xf0946ae3 rt2x00lib_pretbtt +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xf3d84065 rt2x00queue_pause_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xfa5e3cdd rt2x00queue_start_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xfbb3ef45 rt2x00mac_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0x07a233f0 rt2x00mmio_initialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0x899d2f1a rt2x00mmio_uninitialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0xb345d0ff rt2x00mmio_rxdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0xf7774861 rt2x00mmio_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0xfdf0a868 rt2x00mmio_regbusy_read +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0x1e75fbc9 rt2x00pci_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0x4de8633f rt2x00pci_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0x625f9acf rt2x00pci_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0xdf3c3024 rt2x00pci_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x0d8457b7 rt2x00usb_vendor_request +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x1542edbc rt2x00usb_clear_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x2b122fad rt2x00usb_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x3dbcc69c rt2x00usb_watchdog +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x52de0076 rt2x00usb_register_read_async +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x6719b600 rt2x00usb_kick_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x69b30fcf rt2x00usb_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x6e1a96c5 rt2x00usb_initialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x9c6b5bc4 rt2x00usb_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xa429709f rt2x00usb_regbusy_read +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xaf537569 rt2x00usb_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xc02cb1a4 rt2x00usb_vendor_request_buff +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xc3204e40 rt2x00usb_disconnect +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xcb251585 rt2x00usb_vendor_req_buff_lock +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xeba18b63 rt2x00usb_uninitialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xef6eb52c rt2x00usb_disable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x3311c682 rtl92c_set_p2p_ps_offload_cmd +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xc2575053 dm_restorepowerindex +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xc8559eaa dm_savepowerindex +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xea8483c1 dm_writepowerindex +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x0bcf1a83 rtl8723_cmd_send_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x1012b005 rtl8723_save_adda_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x1ea9a3eb rtl8723_phy_path_a_standby +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x271f6303 rtl8723_phy_rf_serial_write +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x35a3d6b3 rtl8723_enable_fw_download +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x3a7f2962 rtl8723_phy_path_a_fill_iqk_matrix +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x4603bd43 rtl8723_phy_mac_setting_calibration +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x46044679 rtl8723_fw_block_write +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x4f383652 rtl8723_fw_page_write +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x59cb70aa rtl8723_phy_txpwr_idx_to_dbm +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x6fee3a6c rtl8723_phy_set_sw_chnl_cmdarray +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x74ef5f04 rtl8723_phy_query_bb_reg +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x7996b3f4 rtl8723_fw_free_to_go +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x852ca5d8 rtl8723ae_firmware_selfreset +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x8a9c7be0 rtl8723_phy_init_bb_rf_reg_def +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x8ebc290f rtl8723_phy_reload_adda_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x8f5ce8d6 rtl8723_phy_path_adda_on +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x967f83af rtl8723_phy_pi_mode_switch +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x9f02ff2a rtl8723_phy_reload_mac_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xab00ba01 rtl8723be_firmware_selfreset +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xaf4d6d94 rtl8723_phy_calculate_bit_shift +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xc1e6faf9 rtl8723_dm_init_edca_turbo +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xc53e94b2 rtl8723_dm_init_dynamic_bb_powersaving +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xcb5ea97a rtl8723_phy_save_mac_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xdc76c2bb rtl8723_write_fw +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xe3e61764 rtl8723_dm_init_dynamic_txpower +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xe81df9c8 rtl8723_phy_rf_serial_read +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xf95d6e52 rtl8723_phy_set_bb_reg +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xfd075209 rtl8723_download_fw +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x01aa2344 rtl_deinit_rfkill +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x01e9ffec rtl_attribute_group +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x07b53e03 rtl_beacon_statistic +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x0c8d4ff3 rtl_ips_nic_on +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x14726dba rtl_is_special_data +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x241dedc1 rtl_tid_to_ac +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x2921a4d4 rtl_btc_status_false +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x2d882d91 rtl_global_var +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x3dde3a55 rtl_init_rx_config +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x509e8a75 rtl_dbgp_flag_init +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x6f1130a2 rtl_tx_mgmt_proc +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x84930656 rtl_deinit_deferred_work +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x99ac82cd rtl_swlps_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x9f3abc9f rtl_action_proc +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xc829c953 rtl_p2p_info +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xe1c134bc rtl_ops +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xece445ff rtl_recognize_peer +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xf461d080 read_efuse_byte +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xf71ad970 rtl_deinit_core +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xf8ff6add rtl_lps_change_work_callback +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xfe0aa6b7 rtl_init_core +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0x26a0333a wl1251_alloc_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0xb2c0a67d wl1251_free_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0xdcf45f7b wl1251_init_ieee80211 +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x04d3fab5 wl1271_cmd_configure +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x09a95c41 wlcore_event_rssi_trigger +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x10e643c4 wlcore_synchronize_interrupts +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x18bdab15 wlcore_event_max_tx_failure +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x2e4c7498 wlcore_event_sched_scan_completed +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x30fb9ad8 wlcore_set_partition +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x3206a2ca wlcore_set_scan_chan_params +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x34266d56 wlcore_event_ba_rx_constraint +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x3a51259d wl1271_acx_set_ht_capabilities +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x3a7b8a3e wl1271_tx_min_rate_get +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x3c7cd770 wl1271_cmd_test +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x3ed1aa6e wlcore_free_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x4310fd42 wl1271_tx_flush +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x4327bef5 wlcore_translate_addr +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x43299ea6 wl1271_acx_init_mem_config +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x48e94a68 wlcore_event_channel_switch +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x4c643831 wl12xx_cmd_build_probe_req +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x4db59b5d wlcore_event_inactive_sta +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x53dff67d wl12xx_debug_level +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x5f70e8bf wl1271_debugfs_update_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x61ead8a0 wlcore_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x65dc1a6f wlcore_alloc_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x7571467c wlcore_scan_sched_scan_ssid_list +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x77092dcc wlcore_get_native_channel_type +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x79651498 wl1271_ps_elp_sleep +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x7ab3a25a wlcore_cmd_wait_for_event_or_timeout +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x81a7efd0 wlcore_boot_upload_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x85109e82 wlcore_event_dummy_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x91da5146 wl1271_format_buffer +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x931a7220 wl1271_acx_pm_config +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x99341a5e wlcore_event_roc_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x9beff71d wl1271_cmd_data_path +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x9df5d50a wlcore_event_soft_gemini_sense +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xa59faa77 wlcore_disable_interrupts_nosync +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xaea99393 wlcore_scan_sched_scan_results +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xafe7253d wlcore_boot_run_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xb24004e2 wlcore_set_key +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xb325441e wlcore_disable_interrupts +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xc4796745 wlcore_enable_interrupts +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xc6d12c64 wlcore_event_beacon_loss +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xd2003d3e wl1271_acx_sleep_auth +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xdd497576 wlcore_boot_upload_nvs +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xec44f3a9 wl12xx_acx_mem_cfg +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xef7c8787 wl1271_ps_elp_wakeup +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xf1c52695 wlcore_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xf46bbc34 wl1271_cmd_send +EXPORT_SYMBOL_GPL drivers/nfc/nfcmrvl/nfcmrvl 0x0be22748 nfcmrvl_nci_recv_frame +EXPORT_SYMBOL_GPL drivers/nfc/nfcmrvl/nfcmrvl 0x15289c3b nfcmrvl_nci_unregister_dev +EXPORT_SYMBOL_GPL drivers/nfc/nfcmrvl/nfcmrvl 0x3f9555ed nfcmrvl_parse_dt +EXPORT_SYMBOL_GPL drivers/nfc/nfcmrvl/nfcmrvl 0x964de7da nfcmrvl_nci_register_dev +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x29f7e7ff st_nci_hci_event_received +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x5341e1b9 st_nci_disable_se +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x5e0db4d6 st_nci_discover_se +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x893de79f st_nci_probe +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0xb6218f6b st_nci_hci_cmd_received +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0xcc64c765 st_nci_remove +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0xd16bc2a2 st_nci_enable_se +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0xf7f41c9d st_nci_hci_load_session +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x0f945c90 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 0x6829caa3 ntb_transport_register_client +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x6bddb310 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/phy/phy-omap-control 0x06cb90b5 omap_control_phy_power +EXPORT_SYMBOL_GPL drivers/phy/phy-omap-control 0x0fc71b81 omap_control_pcie_pcs +EXPORT_SYMBOL_GPL drivers/phy/phy-omap-control 0x210e74f8 omap_control_usb_set_mode +EXPORT_SYMBOL_GPL drivers/phy/phy-omap-usb2 0x00d48f33 omap_usb2_set_comparator +EXPORT_SYMBOL_GPL drivers/phy/phy-qcom-ufs 0x0e172862 ufs_qcom_phy_init_clks +EXPORT_SYMBOL_GPL drivers/phy/phy-qcom-ufs 0x1ababcc1 ufs_qcom_phy_init_vregulators +EXPORT_SYMBOL_GPL drivers/phy/phy-qcom-ufs 0x3b2a9936 ufs_qcom_phy_remove +EXPORT_SYMBOL_GPL drivers/phy/phy-qcom-ufs 0x7112daa1 ufs_qcom_phy_calibrate +EXPORT_SYMBOL_GPL drivers/phy/phy-qcom-ufs 0x72aa110b ufs_qcom_phy_power_on +EXPORT_SYMBOL_GPL drivers/phy/phy-qcom-ufs 0xa92cd2ac ufs_qcom_phy_exit +EXPORT_SYMBOL_GPL drivers/phy/phy-qcom-ufs 0xb971a14d get_ufs_qcom_phy +EXPORT_SYMBOL_GPL drivers/phy/phy-qcom-ufs 0xe4a69f4f ufs_qcom_phy_generic_probe +EXPORT_SYMBOL_GPL drivers/phy/phy-qcom-ufs 0xee2cd17d ufs_qcom_phy_power_off +EXPORT_SYMBOL_GPL drivers/power/pcf50633-charger 0x1ee0177b pcf50633_mbc_get_status +EXPORT_SYMBOL_GPL drivers/power/pcf50633-charger 0xe339bd21 pcf50633_mbc_get_usb_online_status +EXPORT_SYMBOL_GPL drivers/power/pcf50633-charger 0xec02de00 pcf50633_mbc_usb_curlim_set +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x1ad2aa63 mc13xxx_regulator_ops +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x5ba3684d mc13xxx_parse_regulators_dt +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x650feb96 mc13xxx_fixed_regulator_ops +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x71197287 mc13xxx_get_num_regulators_dt +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0xc949e7a0 mc13xxx_fixed_regulator_set_voltage +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x46b4be00 wm8350_dcdc_set_slot +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x4bf8663e wm8350_register_led +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x64604f72 wm8350_register_regulator +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x737d0ee7 wm8350_dcdc25_set_mode +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x8131e0fb wm8350_ldo_set_slot +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0xde801993 wm8350_isink_set_flash +EXPORT_SYMBOL_GPL drivers/regulator/wm8400-regulator 0x4b64c2d4 wm8400_register_regulator +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x019d959c cxgbi_create_session +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x0b767e42 cxgbi_sock_select_mss +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x0cf150f0 cxgbi_device_find_by_netdev_rcu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x0e9ac63a cxgbi_bind_conn +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x0fa6f85f cxgbi_ddp_ppod_set +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x12316ef6 cxgbi_device_portmap_create +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x1a0ae4d6 cxgbi_parse_pdu_itt +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x1bc35f4f cxgbi_ddp_cleanup +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x1f2ffc3d cxgbi_get_ep_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x2a4cc2ec cxgbi_cleanup_task +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x2d86aabe cxgbi_device_portmap_cleanup +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x34b02726 cxgbi_device_register +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x3a5c4389 cxgbi_ddp_page_size_factor +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x3c271e69 cxgbi_ep_poll +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x534596f7 cxgbi_sock_rcv_peer_close +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x57b5aa55 cxgbi_sock_rcv_close_conn_rpl +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x5b3cbdc1 cxgbi_sock_check_wr_invariants +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x5d28e147 cxgbi_conn_alloc_pdu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x5fc6dd24 cxgbi_sock_rcv_wr_ack +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x6c4f094d cxgbi_conn_xmit_pdu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x7b515d04 cxgbi_ep_disconnect +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x7fdb6004 cxgbi_device_unregister_all +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x8309259a cxgbi_conn_pdu_ready +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x89733da1 cxgbi_sock_fail_act_open +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x8b8fc8d1 cxgbi_sock_skb_entail +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x8ba0c384 cxgbi_get_host_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x8c2ba369 cxgbi_ddp_ppod_clear +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x93abac38 cxgbi_iscsi_init +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x93fbda00 cxgbi_device_find_by_lldev +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x977fd7b9 cxgbi_destroy_session +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x97b6bba2 cxgbi_sock_closed +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x99eab817 cxgbi_sock_established +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x9a5a4842 cxgbi_set_conn_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xa2d2b877 cxgbi_ddp_init +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xa7f02b1e cxgbi_set_host_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xae821c62 cxgbi_hbas_add +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xb4749570 cxgbi_hbas_remove +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xbde72b4f cxgbi_sock_rcv_abort_rpl +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xca60aea8 cxgbi_create_conn +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xcbec8b97 cxgbi_device_find_by_netdev +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xd7285f18 cxgbi_sock_free_cpl_skbs +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xdd438a06 cxgbi_device_unregister +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xe0c4c14e cxgbi_sock_act_open_req_arp_failure +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xe32baf47 cxgbi_conn_tx_open +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xe7ca4d5c cxgbi_get_conn_stats +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xef346615 cxgbi_attr_is_visible +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xf0a40dd7 cxgbi_sock_purge_wr_queue +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xf568c8b3 cxgbi_ep_connect +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xf75cb2e4 cxgbi_iscsi_cleanup +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xf9bf50ed cxgbi_conn_init_pdu +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x3b9bb933 scsi_dh_attached_handler_name +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x5583d92f scsi_dh_attach +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x57c90ff6 scsi_dh_detach +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x593a36c2 scsi_dh_handler_exist +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x59ac895d scsi_unregister_device_handler +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x65aeaf1a scsi_dh_activate +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x8ff54a24 scsi_dh_set_params +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x90249753 scsi_register_device_handler +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x011cd327 fcoe_fcf_device_delete +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x0d83ee97 fcoe_get_wwn +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x0fb51275 fcoe_queue_timer +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x166e4d94 fcoe_link_speed_update +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x2f6a72a7 fcoe_clean_pending_queue +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x374c1e1c fcoe_wwn_from_mac +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x434ea01e fcoe_start_io +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x47e9cb3f __fcoe_get_lesb +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x562c92bc fcoe_fc_crc +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x5a2a4381 fcoe_get_paged_crc_eof +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x66da7020 fcoe_fcf_device_add +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x7d5bfee2 fcoe_ctlr_device_add +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x7e18f079 fcoe_ctlr_device_delete +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x84b3d915 fcoe_wwn_to_str +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x9080eb0e fcoe_check_wait_queue +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x910d5c2e fcoe_get_lesb +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xd31f69ed fcoe_libfc_config +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xd8f00606 fcoe_validate_vport_create +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xec747781 fcoe_ctlr_get_lesb +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x0d056970 iscsi_boot_create_ethernet +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x52954042 iscsi_boot_create_target +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x63e06097 iscsi_boot_create_kset +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x82e9bed9 iscsi_boot_create_host_kset +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0xd1854324 iscsi_boot_destroy_kset +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0xe5f3905d iscsi_boot_create_initiator +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x12b2ad06 iscsi_switch_str_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x14ee4d34 iscsi_verify_itt +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x24c55cb2 iscsi_host_remove +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x274679a8 __iscsi_put_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x28c78188 iscsi_eh_session_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x291c755e iscsi_queuecommand +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x304641a2 iscsi_eh_recover_target +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x33bf8ccb iscsi_conn_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x34cb136f iscsi_requeue_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x36dfbfc4 iscsi_update_cmdsn +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x3bef2f73 iscsi_pool_init +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x4131b7f5 iscsi_eh_device_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x43c2e2cc iscsi_conn_bind +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x4f41c35c iscsi_session_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x515a5d5d iscsi_conn_start +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x55feaebc iscsi_conn_send_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x5cd5f55a iscsi_conn_failure +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x5dd2ace5 iscsi_complete_scsi_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x66cb6262 iscsi_host_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x6b854ebd iscsi_conn_stop +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x75ec2752 iscsi_eh_target_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x7aff7681 iscsi_set_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x7b746409 iscsi_suspend_tx +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x7f1de6b5 iscsi_suspend_queue +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x8d303b1b iscsi_pool_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x97b1334a iscsi_itt_to_ctask +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x99a6cfb9 iscsi_conn_queue_work +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x9dd8f076 iscsi_session_failure +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xa86bffbc iscsi_session_recovery_timedout +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xa9f569be iscsi_prep_data_out_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xab956519 iscsi_conn_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xae02b70d iscsi_conn_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xb6145ffa iscsi_host_set_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xbe24b9c6 iscsi_target_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xbf8c9136 iscsi_conn_get_addr_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xc0a62c66 iscsi_complete_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xc4f18cb5 iscsi_itt_to_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xca214e4a iscsi_put_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xdd7c5b63 iscsi_eh_abort +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xe299648f __iscsi_get_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xe3a47d60 iscsi_host_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xe4d9329f iscsi_host_add +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xe6fcfce5 iscsi_host_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xea36f9be iscsi_session_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xed7ed93c iscsi_session_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xf66a3634 __iscsi_complete_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x18deb87e iscsi_tcp_r2tpool_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x1e9180c8 iscsi_tcp_conn_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x20cfe421 iscsi_segment_init_linear +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x24d9d9ef iscsi_tcp_task_init +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x3b6c24ce iscsi_tcp_recv_segment_is_hdr +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x4a2e2a41 iscsi_tcp_cleanup_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x5cb66dd2 iscsi_tcp_conn_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x6182ed35 iscsi_tcp_dgst_header +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x8c2ceaa7 iscsi_tcp_hdr_recv_prep +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x961f932a iscsi_tcp_set_max_r2t +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x965e1d67 iscsi_tcp_r2tpool_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xa159ef4c iscsi_segment_seek_sg +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xac31f593 iscsi_tcp_segment_done +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xd2f76931 iscsi_tcp_recv_skb +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xd82c936e iscsi_tcp_segment_unmap +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xeb5b5273 iscsi_tcp_task_xmit +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xf968c9df iscsi_tcp_conn_get_stats +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x087b3d5e sas_change_queue_depth +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x10d24678 sas_phy_reset +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x3ab2addb sas_alloc_slow_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x42012c4d sas_drain_work +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x45622686 sas_domain_attach_transport +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x56b8ec87 sas_task_abort +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x5ec52db7 sas_free_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x72fa4b54 sas_unregister_ha +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x7c36c266 sas_eh_device_reset_handler +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x8a277e15 sas_domain_release_transport +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x8f31b8fd sas_alloc_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x98c9b7be sas_ata_schedule_reset +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x9ea660a2 sas_queuecommand +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xa5bddcd9 sas_ioctl +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xa61f3adc sas_request_addr +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xba8a6cad sas_register_ha +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xca82be24 sas_ssp_task_response +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xd2b6f33a sas_slave_configure +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xd9fa6be0 sas_get_local_phy +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xe23a7633 sas_eh_abort_handler +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xe805b012 sas_bios_param +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xecb96dbe sas_target_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xed5189ac sas_target_destroy +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xf8ecd450 sas_eh_bus_reset_handler +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x0703cafd iscsi_create_flashnode_sess +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x10c3f01b iscsi_free_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x1106b44d iscsi_find_flashnode_sess +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x1a4690a8 iscsi_create_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x1f30805a iscsi_flashnode_bus_match +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x2d0c33ea iscsi_is_flashnode_conn_dev +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x3eda00e0 iscsi_block_scsi_eh +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x439067b8 iscsi_create_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x45c39b66 iscsi_remove_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x4865f2c4 iscsi_is_session_dev +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x4d01ae90 iscsi_add_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x593aa092 iscsi_recv_pdu +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x63189d5c iscsi_destroy_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x6517cfef iscsi_destroy_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x678ad88b iscsi_offload_mesg +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x699fe53e iscsi_get_discovery_parent_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x70a5fd40 iscsi_destroy_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x767103d3 iscsi_unregister_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x7cea71cd iscsi_session_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x84a005f1 iscsi_get_router_state_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x8c8f0b6b iscsi_create_flashnode_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x8cc99b77 iscsi_register_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x8d6416cd iscsi_alloc_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x8f6e167f iscsi_session_chkready +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x8f8fecd9 iscsi_block_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x9678e1e0 iscsi_create_iface +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x9f5c468f iscsi_destroy_all_flashnode +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xab6ddfe6 iscsi_get_port_state_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xb35b95f2 iscsi_destroy_iface +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xbaf6df51 iscsi_destroy_flashnode_sess +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xbc071179 iscsi_get_ipaddress_state_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xbdbcd8c5 iscsi_is_session_online +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xbe9b18b8 iscsi_conn_login_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xbf8f49af iscsi_scan_finished +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xc32d18ea iscsi_create_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xc38896f6 iscsi_lookup_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xcef6da18 iscsi_post_host_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xd83bf0fd iscsi_unblock_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xde315c9b iscsi_ping_comp_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xdffb0073 iscsi_host_for_each_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xe16f2794 iscsi_get_port_speed_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xe961a293 iscsi_find_flashnode_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xfc778390 iscsi_conn_error_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0x391be1d0 sas_enable_tlr +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0x6da410f9 sas_disable_tlr +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0xd6dc05c2 sas_tlr_supported +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0xfb57ff9d 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 0x2e6a4a0c 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 0x05cc33c4 srp_stop_rport_timers +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x4fdaae25 srp_rport_del +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x6ac7bfad srp_attach_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x6fe81cb2 srp_release_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x7bc50373 srp_rport_add +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0xd56eb27e srp_remove_host +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0xee891cc0 srp_tmo_valid +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0x47e114c2 ufshcd_dme_get_attr +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0x6c7869da ufshcd_remove +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0xd886f314 ufshcd_dme_set_attr +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0xddd65d7a ufshcd_init +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x3057babe spi_bitbang_start +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x48b22ffa spi_bitbang_setup +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x4a2516a2 spi_bitbang_setup_transfer +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x85463443 spi_bitbang_stop +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0xa2c4cc5d spi_bitbang_cleanup +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0x25f56aa1 dw_spi_resume_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0x401e8537 dw_spi_remove_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0x572db58e dw_spi_suspend_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0x73b09082 dw_spi_add_host +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x01ff6827 spmi_register_read +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x1e36491e spmi_register_write +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x281e56f2 spmi_ext_register_write +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x3d5eea54 spmi_command_reset +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x44633b3b spmi_controller_remove +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x4cb73556 spmi_register_zero_write +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x72cf4195 spmi_command_wakeup +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x88ec78fd spmi_command_sleep +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x8a67b8f2 spmi_driver_register +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x8b3ddb3e spmi_ext_register_read +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xa2b167e2 spmi_ext_register_writel +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xa3e91804 spmi_device_remove +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xb2533dc8 spmi_device_add +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xd22a7be3 spmi_ext_register_readl +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xdf5f7ff1 spmi_controller_add +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xefe3c168 spmi_controller_alloc +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xf74dfe5d spmi_device_alloc +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xfd6d2d00 spmi_command_shutdown +EXPORT_SYMBOL_GPL drivers/ssb/ssb 0x7c8b04dc ssb_pmu_spuravoid_pllupdate +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x07e4b471 comedi_check_chanlist +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x0cd330f4 range_unknown +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x163449ef comedi_buf_write_free +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x1a6cc534 comedi_buf_read_free +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x1b687845 comedi_set_hw_dev +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x1dc9843e comedi_nscans_left +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x1f914352 comedi_buf_read_samples +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x208709e5 comedi_auto_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x21102f87 range_0_32mA +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x23b7910e comedi_auto_unconfig +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x28ce0713 comedi_driver_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x2e9ea092 comedi_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x2f0ad9d3 range_bipolar5 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x31bfa129 __comedi_request_region +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x32428f16 comedi_dio_update_state +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x3a247916 comedi_inc_scan_progress +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x3baba57c comedi_timeout +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x418d2735 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 0x54e867a2 comedi_handle_events +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x55582982 comedi_legacy_detach +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x63f5694d comedi_buf_read_n_available +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x6558630e comedi_buf_read_alloc +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x6795b0af comedi_alloc_subdev_readback +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x745530de comedi_buf_write_alloc +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x7815313a comedi_dev_put +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x8113872c range_unipolar10 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x8aa49c1d comedi_nsamples_left +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x94ca7b58 comedi_dio_insn_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xa6cef54b comedi_dev_get_from_minor +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xabfcbfc3 comedi_event +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xb2356724 comedi_alloc_spriv +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 0xbe91c061 comedi_request_region +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xbe9d92a3 comedi_alloc_subdevices +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xd9b16ca5 comedi_alloc_devpriv +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xdb2044b2 range_unipolar5 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xdb2732fa comedi_bytes_per_scan +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xdc68b38c comedi_set_spriv_auto_free +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xe1bd6130 comedi_load_firmware +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xe1bfb87f comedi_buf_write_samples +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xf32c86df comedi_is_subdevice_running +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0x29856e4b comedi_pci_auto_unconfig +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0x4d477921 comedi_to_pci_dev +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0x4fbef289 comedi_pci_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0x601429ad comedi_pci_disable +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0x60419206 comedi_pci_auto_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0x979acaa1 comedi_pci_driver_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0xf0ce94c1 comedi_pci_detach +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0xfd5fdb2c comedi_pci_enable +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0x608c860a comedi_to_usb_dev +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0x6378e6c3 comedi_usb_auto_unconfig +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0x66fc9994 comedi_to_usb_interface +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0x91faa283 comedi_usb_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0xae66bf52 comedi_usb_driver_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0xf2a45008 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 0xd3b8f5f5 addi_watchdog_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/amplc_dio200_common 0x26f98c9f amplc_dio200_set_enhance +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/amplc_dio200_common 0x800399c4 amplc_dio200_common_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/amplc_pc236_common 0xe15f523c amplc_pc236_common_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x0c3efad7 comedi_8254_set_busy +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x1d7510cf comedi_8254_cascade_ns_to_timer +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x5c0a8f12 comedi_8254_status +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x616c6e05 comedi_8254_pacer_enable +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x6747fec9 comedi_8254_set_mode +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x80c683c6 comedi_8254_load +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x854f90f0 comedi_8254_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x86816665 comedi_8254_update_divisors +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x9f0f2d0b comedi_8254_read +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0xa64bc95b comedi_8254_write +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0xc77a7810 comedi_8254_subdevice_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0xcf7ca8ab comedi_8254_ns_to_timer +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0xde5310bc comedi_8254_mm_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8255 0x5c95059d subdev_8255_mm_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8255 0xbdb38775 subdev_8255_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8255 0xdd85c7a6 subdev_8255_regbase +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/das08 0x9502a1eb das08_common_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x086365f9 mite_prep_dma +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x11e2e565 mite_get_status +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x1d396430 mite_free_ring +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x4bccd28e mite_sync_output_dma +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x4d69871d mite_request_channel_in_range +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x5cb17384 mite_sync_input_dma +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x6a9d4cba mite_done +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x804f0d89 mite_detach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x8b2aa595 mite_bytes_read_from_memory_ub +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x9e9a08c1 mite_dma_tcr +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xa8af6472 mite_bytes_written_to_memory_lb +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xb393ae35 mite_dma_arm +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xc0544fd8 mite_bytes_in_transit +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xcacb7b25 mite_alloc +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xcc7b9e96 mite_alloc_ring +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xd3b28971 mite_setup2 +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xd3bf3fe5 mite_bytes_read_from_memory_lb +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xddbe4086 mite_buf_change +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xebbd72c0 mite_dma_disarm +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xec591b88 mite_release_channel +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xf03afe02 mite_bytes_written_to_memory_ub +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_common 0x12f7cc51 labpc_common_detach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_common 0xf65537ea labpc_common_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x0aedec55 ni_gpct_device_destroy +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x1379cb04 ni_tio_init_counter +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x460b4480 ni_tio_insn_write +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x6518c049 ni_tio_set_gate_src +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x70352746 ni_tio_arm +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0xd35bab32 ni_gpct_device_construct +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0xe69de51a ni_tio_insn_read +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0xf1e2f434 ni_tio_insn_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0x437b1490 ni_tio_set_mite_channel +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0x6bd570be ni_tio_cancel +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0xc1870a43 ni_tio_cmd +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0xc3dfbb4b ni_tio_cmdtest +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0xd5daab06 ni_tio_acknowledge +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0xdea9cd40 ni_tio_handle_interrupt +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x01a1d5f3 comedi_close +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x2b7da1f9 comedi_dio_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x35650b20 comedi_dio_get_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x835e52b8 comedi_find_subdevice_by_type +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x9700cbda comedi_open +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0xd30cd943 comedi_dio_bitfield2 +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0xf39f6769 comedi_get_n_channels +EXPORT_SYMBOL_GPL drivers/staging/iio/addac/adt7316 0xacb5388b adt7316_pm_ops +EXPORT_SYMBOL_GPL drivers/staging/lustre/lustre/obdclass/obdclass 0x4ec31110 lustre_kobj +EXPORT_SYMBOL_GPL drivers/staging/lustre/lustre/obdclass/obdclass 0x5f93f641 lustre_sysfs_ops +EXPORT_SYMBOL_GPL drivers/staging/lustre/lustre/obdclass/obdclass 0x6595b0ec debugfs_lustre_root +EXPORT_SYMBOL_GPL drivers/staging/lustre/lustre/obdclass/obdclass 0xbd121d75 lustre_attr_store +EXPORT_SYMBOL_GPL drivers/staging/lustre/lustre/obdclass/obdclass 0xc2013a1b lustre_attr_show +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x0e81c76d spk_serial_out +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x14f06fe7 spk_serial_in_nowait +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x35f08cfc synth_add +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x41a160e5 synth_buffer_empty +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x4248ee02 spk_synth_is_alive_restart +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x4449e1dd synth_buffer_clear +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x475e158a synth_request_region +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x4ac37c3c spk_synth_immediate +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x515ac9b0 spk_serial_synth_probe +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x86442336 speakup_event +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x8c42721a synth_remove +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x8e146195 synth_release_region +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x9a888082 synth_buffer_getc +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xb2978dbc speakup_info +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xb48956f8 synth_buffer_peek +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xbbd15a51 speakup_start_ttys +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xc766ae09 synth_printf +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xd1b551a2 spk_get_var +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xdea1114b spk_var_store +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xe73a3328 spk_var_show +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xe7cd4558 spk_serial_release +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xe7e810f8 spk_serial_in +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xed210ee6 spk_do_catch_up +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xf73f9403 spk_synth_flush +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xfa4a824c spk_synth_is_alive_nop +EXPORT_SYMBOL_GPL drivers/tty/n_tracesink 0x585ebaac n_tracesink_datadrain +EXPORT_SYMBOL_GPL drivers/uio/uio 0xa6bf0cd9 __uio_register_device +EXPORT_SYMBOL_GPL drivers/uio/uio 0xae71f6eb uio_unregister_device +EXPORT_SYMBOL_GPL drivers/uio/uio 0xf198a5f6 uio_event_notify +EXPORT_SYMBOL_GPL drivers/usb/atm/usbatm 0x3e6deb5f usbatm_usb_disconnect +EXPORT_SYMBOL_GPL drivers/usb/atm/usbatm 0xa9dbe757 usbatm_usb_probe +EXPORT_SYMBOL_GPL drivers/usb/chipidea/ci_hdrc 0x2d1759da ci_hdrc_add_device +EXPORT_SYMBOL_GPL drivers/usb/chipidea/ci_hdrc 0xd553c35d ci_hdrc_remove_device +EXPORT_SYMBOL_GPL drivers/usb/chipidea/usbmisc_imx 0x0e77fff5 imx_usbmisc_set_wakeup +EXPORT_SYMBOL_GPL drivers/usb/chipidea/usbmisc_imx 0xcaa6c370 imx_usbmisc_init +EXPORT_SYMBOL_GPL drivers/usb/chipidea/usbmisc_imx 0xf117434b imx_usbmisc_init_post +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0x204e5de6 ulpi_unregister_driver +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0x38cfe9fa ulpi_write +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0x3ba6b951 ulpi_register_driver +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0x691e0126 ulpi_register_interface +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0x8a53bf46 ulpi_unregister_interface +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0xc364af00 ulpi_read +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x025bb7ad gether_get_ifname +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x05815da4 gether_get_host_addr_cdc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x09b5842c gether_register_netdev +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x1aca5d52 gether_get_host_addr_u8 +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x283f91cf gether_set_dev_addr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x3a906b08 gether_setup_name_default +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x48cc8199 gether_set_qmult +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x4ddde22e gether_setup_name +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x5db3f77e gether_get_qmult +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x70aa2858 gether_connect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x78b106ea 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 0x8914d8c1 gether_get_host_addr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xc014cbda gether_set_host_addr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xefe13151 gether_set_gadget +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xfc34304a gether_disconnect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0x33bfdca2 gserial_alloc_line +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0x6adfeed2 gserial_disconnect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0x89263781 gs_free_req +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0xb6652875 gserial_free_line +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0xbb8345d6 gserial_connect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0xf9e5ceeb gs_alloc_req +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_fs 0x2bab9ff8 ffs_lock +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_fs 0x41627bfd ffs_single_dev +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_fs 0xda10d014 ffs_name_dev +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x0a5230df fsg_common_set_nluns +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x12a25018 fsg_lun_open +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 0x1b1cc3af store_cdrom_address +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 0x2baf8d0b fsg_common_remove_lun +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x2d10b6a7 fsg_common_create_lun +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x38406766 fsg_lun_close +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 0x423845e4 fsg_ss_bulk_in_comp_desc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x45f427fc fsg_show_removable +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x46d7ebd4 fsg_store_file +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x51707c29 fsg_common_run_thread +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 0x5e142d3b 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 0x6d0c2576 fsg_show_nofua +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x6d88473b fsg_show_cdrom +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x6ffb1d48 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 0x888868c0 fsg_show_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 0x99023bfc fsg_common_put +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 0x9dc025a5 fsg_common_free_luns +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xa46e6443 fsg_common_get +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 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 0xc634e64d fsg_show_ro +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xca005fca fsg_store_ro +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xd220c9a3 fsg_store_nofua +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xd3ae3b65 fsg_common_create_luns +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xd468f882 fsg_common_set_ops +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xdfca96dc fsg_common_set_cdev +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xe4d1591e fsg_config_from_params +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xf1e06013 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_rndis 0x1b7e0ec9 rndis_set_param_vendor +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x26cf75f8 rndis_get_next_response +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x298f9f14 rndis_set_param_medium +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x3a2ce512 rndis_set_host_mac +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x4c506679 rndis_add_hdr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x8f763aca rndis_free_response +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x949826f0 rndis_deregister +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xa6287235 rndis_signal_disconnect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xc08157b7 rndis_borrow_net +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xc2a5743e rndis_rm_hdr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xcb6e1f5e rndis_uninit +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xd5432ac4 rndis_signal_connect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xdd776511 rndis_register +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xe3fa3fea rndis_set_param_dev +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xf55d45fc rndis_msg_parser +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x0df90ba8 usb_add_config +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x0f5773f7 usb_string_ids_n +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x0ff7a430 usb_composite_setup_continue +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x243c0dcf usb_string_ids_tab +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x2a0e82b3 usb_ep_autoconfig_reset +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x2e09263f usb_copy_descriptors +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x3e072b3b unregister_gadget_item +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x43fc615b usb_ep_autoconfig +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x6b8e0b70 usb_composite_probe +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x6c60ca49 usb_put_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x6d936430 usb_put_function_instance +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x71e55859 usb_function_deactivate +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x94d7075a usb_gadget_get_string +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x99e84911 usb_composite_overwrite_options +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xa073382d alloc_ep_req +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xa85e35e0 usb_free_all_descriptors +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xaa75ac67 usb_string_id +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xb15c2522 usb_function_unregister +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xb2466dd7 usb_get_function_instance +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xb51f2c2a usb_add_config_only +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xbaec4423 usb_get_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xc382ac81 usb_composite_unregister +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xd2ea2134 usb_descriptor_fillbuf +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xd98be7ee usb_remove_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xdc7f8cc3 usb_ep_autoconfig_ss +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xe036b7ea usb_add_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xe7af4839 usb_function_register +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xea0f3b3d usb_function_activate +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xeb58a65e usb_interface_id +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xf14e88ad config_ep_by_speed +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xf191dd9e usb_gstrings_attach +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xf474a207 usb_gadget_config_buf +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xf71d919c usb_assign_descriptors +EXPORT_SYMBOL_GPL drivers/usb/misc/ezusb 0xccdce6cf ezusb_fx1_set_reset +EXPORT_SYMBOL_GPL drivers/usb/misc/ezusb 0xd36916f3 ezusb_fx1_ihex_firmware_download +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x1ec035ce usb_ftdi_elan_edset_input +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x2f8bec1c usb_ftdi_elan_edset_output +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x470c4f52 usb_ftdi_elan_edset_empty +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x6f24b0e6 usb_ftdi_elan_edset_flush +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x803ba26f usb_ftdi_elan_write_pcimem +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x9b19b4fe usb_ftdi_elan_read_pcimem +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x9ede443a usb_ftdi_elan_edset_single +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xb7541eb6 usb_ftdi_elan_edset_setup +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xec081cc0 ftdi_elan_gone_away +EXPORT_SYMBOL_GPL drivers/usb/musb/omap2430 0x6fb55e1f omap_musb_mailbox +EXPORT_SYMBOL_GPL drivers/usb/phy/phy-am335x-control 0x4a3d2d67 am335x_get_phy_control +EXPORT_SYMBOL_GPL drivers/usb/phy/phy-isp1301 0xa002ff7c isp1301_get_client +EXPORT_SYMBOL_GPL drivers/usb/serial/usb_wwan 0x1b164437 usb_wwan_port_probe +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x0e16621a usb_serial_port_softint +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x10abc800 usb_serial_generic_open +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x17112cfd usb_serial_generic_wait_until_sent +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x2ac2708b usb_serial_generic_unthrottle +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x3855a9f7 usb_serial_register_drivers +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x47871a33 usb_serial_generic_throttle +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x656ab8d4 usb_serial_generic_get_icount +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x81887534 usb_serial_generic_read_bulk_callback +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x9e6483d8 usb_serial_generic_write_start +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xa14c92cf usb_serial_handle_dcd_change +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xa664cf9e usb_serial_generic_close +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xaee73548 usb_serial_generic_tiocmiwait +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xc564e544 usb_serial_deregister_drivers +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xc980887d usb_serial_generic_write +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xd1f94a5c usb_serial_handle_sysrq_char +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xdd5ba64d usb_serial_generic_process_read_urb +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xe3616b29 usb_serial_generic_write_bulk_callback +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xe8c2df4f usb_serial_handle_break +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xf1c8c815 usb_serial_generic_resume +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xf83d15f7 usb_serial_generic_chars_in_buffer +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xf85f4638 usb_serial_generic_submit_read_urbs +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x0ee550fd usb_stor_set_xfer_buf +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x1bc3edc2 usb_stor_sense_invalidCDB +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x27914db5 usb_stor_resume +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x2de0a203 usb_stor_Bulk_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x35374894 usb_stor_access_xfer_buf +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x43aa80f7 usb_stor_post_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x4bafcae2 usb_stor_Bulk_transport +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x4d82c322 usb_stor_bulk_srb +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x57426758 usb_stor_CB_transport +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x5832327b usb_stor_bulk_transfer_sg +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x5958d486 usb_stor_adjust_quirks +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x6441aee4 usb_stor_bulk_transfer_buf +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x6a9a32c1 usb_stor_disconnect +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x71200eea usb_stor_control_msg +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x8086a210 usb_stor_transparent_scsi_command +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x83d701dc usb_stor_host_template_init +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x90732cd3 fill_inquiry_response +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xa2e6ce3f usb_stor_reset_resume +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xa8dfc191 usb_stor_pre_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xb473fb1e usb_stor_probe2 +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xb74650d1 usb_stor_probe1 +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xdda735b0 usb_stor_ctrl_transfer +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xdf7e0f7e usb_stor_clear_halt +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xf35446c8 usb_stor_CB_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xfeda8c3d usb_stor_suspend +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x23622f98 usbip_event_happened +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x47459452 usbip_pad_iso +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x5e25fefb usbip_stop_eh +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x72b083ca usbip_start_eh +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x78b72f44 usbip_debug_flag +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x9c6a0450 usbip_recv_iso +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xac8be943 usbip_recv_xbuff +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xbbc721e1 usbip_pack_pdu +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xc17a3b50 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 0xd8600854 usbip_event_add +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xe1ea0586 usbip_dump_header +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xe88e61bd usbip_alloc_iso_desc_pdu +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xf45e467a usbip_recv +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xfd33ad54 usbip_dump_urb +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x08225799 rpipe_ep_disable +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x2d1b119f rpipe_clear_feature_stalled +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x76380045 wa_dti_start +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x92460be8 __wa_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xc453a119 wa_urb_dequeue +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xc543b60e wa_process_errored_transfers_run +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xcb55ad58 rpipe_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xdac82740 wa_create +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xe97eeeed wa_urb_enqueue +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xf4654c3f wa_urb_enqueue_run +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x0962e917 wusbhc_giveback_urb +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x0bb6bf5e wusb_cluster_id_get +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x1046c37f wusbhc_rh_status_data +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x1c818af9 wusbhc_mmcie_set +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x34f70046 wusbhc_chid_set +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x6a4fc29f __wusb_dev_get_by_usb_dev +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x7643b8c4 wusbhc_mmcie_rm +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x7f0b7631 wusb_dev_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x8475ad50 wusbhc_handle_dn +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x8cd6b2ff wusbhc_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x917d0d3e wusbhc_rh_start_port_reset +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xa4a6238e wusbhc_create +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xb713df13 wusbhc_reset_all +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xb725d128 wusb_cluster_id_put +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xbe262fd4 wusbhc_b_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xc5708f83 wusbhc_rh_control +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xd69c1b12 wusbhc_b_create +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xf770a6b4 wusbd +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xfe2e17d7 wusb_et_name +EXPORT_SYMBOL_GPL drivers/uwb/i1480/dfu/i1480-dfu-usb 0x09484c62 i1480_rceb_check +EXPORT_SYMBOL_GPL drivers/uwb/i1480/dfu/i1480-dfu-usb 0x22205268 i1480_fw_upload +EXPORT_SYMBOL_GPL drivers/uwb/i1480/dfu/i1480-dfu-usb 0xa7020240 i1480_cmd +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x07fc116b umc_device_create +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x274734bb __umc_driver_register +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x55281de6 umc_device_register +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x552bed7d umc_match_pci_id +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x6b9be786 umc_bus_type +EXPORT_SYMBOL_GPL drivers/uwb/umc 0xb356fd0b umc_controller_reset +EXPORT_SYMBOL_GPL drivers/uwb/umc 0xb97b7ba5 umc_driver_unregister +EXPORT_SYMBOL_GPL drivers/uwb/umc 0xf7256a5b umc_device_unregister +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x0b8aad57 uwb_est_unregister +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x0d1fa099 uwb_dev_try_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x23aab090 uwb_notifs_register +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x2dde792f uwb_rc_cmd +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x35464667 uwb_rc_put +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x45dfe324 uwb_rc_pre_reset +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x47651eb9 uwb_rc_get_by_dev +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x4d57ae3c uwb_rsv_type_str +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x4ebc8f27 uwb_rc_rm +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x504ddaad uwb_rc_ie_rm +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x569e89b3 uwb_rsv_accept +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x58cec65d __uwb_rc_try_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x5e4bc088 __uwb_addr_print +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x5f5c9a27 uwb_rc_mac_addr_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x605d9d0c uwb_rc_neh_error +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x66350c73 uwb_rsv_terminate +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x6d9a4eff uwb_rc_vcmd +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x6e461ac4 uwb_rc_add +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x79ed907a uwb_dev_for_each +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x7dcfcd23 uwb_ie_next +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x8173cfaf uwb_rc_init +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x85682e4a uwb_est_find_size +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x87818e0c uwb_rsv_establish +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x89457944 uwb_pal_unregister +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x8b893bc3 uwb_pal_init +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x8db6947f uwb_rc_ie_add +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x93a4c18d uwb_rsv_create +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x94979a51 uwb_rc_dev_addr_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x98413234 uwb_rsv_state_str +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xa6d70e7d uwb_rsv_destroy +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xa9b7c981 uwb_rc_post_reset +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xa9ed3abf uwb_rsv_get_usable_mas +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xb3f54877 uwb_pal_register +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xb4cf4dc2 uwb_rc_reset_all +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xb9544429 uwb_radio_stop +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xbabdd334 uwb_rc_neh_grok +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xbe86596b uwb_rc_alloc +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xc01ed03e uwb_rc_cmd_async +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xe1716f06 uwb_est_register +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xeba3b174 uwb_rc_get_by_grandpa +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xebbb4ab5 uwb_notifs_deregister +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xed6e10f9 uwb_radio_start +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xfd664752 uwb_rsv_modify +EXPORT_SYMBOL_GPL drivers/uwb/whci 0x54b32b6b whci_wait_for +EXPORT_SYMBOL_GPL drivers/vfio/platform/reset/vfio-platform-calxedaxgmac 0x7908158d vfio_platform_calxedaxgmac_reset +EXPORT_SYMBOL_GPL drivers/vfio/platform/vfio-platform 0x96cfde37 vfio_platform_probe_common +EXPORT_SYMBOL_GPL drivers/vfio/platform/vfio-platform 0xc788b735 vfio_platform_remove_common +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x21caccda vfio_register_iommu_driver +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x3567743b vfio_external_user_iommu_id +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x65105319 vfio_group_get_external_user +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 0xae342238 vfio_del_group_dev +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0xb5a1fc15 vfio_device_get_from_dev +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0xb6704743 vfio_add_group_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 0xe53a8418 vfio_unregister_iommu_driver +EXPORT_SYMBOL_GPL drivers/vfio/vfio_virqfd 0x468e5c07 vfio_virqfd_disable +EXPORT_SYMBOL_GPL drivers/vfio/vfio_virqfd 0x492cd113 vfio_virqfd_enable +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x00693b78 vhost_signal +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x08e833af vhost_add_used_n +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x1c1d9af2 vhost_vq_access_ok +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x1ca25c4e vhost_poll_init +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x1dcaa80f vhost_dev_ioctl +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x269f7a09 vhost_dev_reset_owner_prepare +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x281513c4 vhost_dev_set_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x3149f2d6 vhost_add_used_and_signal +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x32bcc5e8 vhost_work_init +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x540b8dad vhost_get_vq_desc +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x57ea0f2a vhost_disable_notify +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x617e1598 vhost_poll_queue +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x6628efc0 vhost_add_used +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x6668d0b1 vhost_dev_reset_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x6af1a8f6 vhost_log_write +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x6dc844a5 vhost_dev_has_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x71f983af vhost_init_used +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x72bab931 vhost_work_flush +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x74050b36 vhost_log_access_ok +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x8439a66d vhost_poll_start +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x94bfe225 vhost_poll_flush +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xb127a80e vhost_vring_ioctl +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xb1d952a1 vhost_add_used_and_signal_n +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xcfc71513 vhost_dev_check_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xd1162bad vhost_dev_stop +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xd7714917 vhost_poll_stop +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xedf2ffa3 vhost_discard_vq_desc +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xef379455 vhost_enable_notify +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xf281877c vhost_work_queue +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xf8f497b1 vhost_dev_init +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xfbbd66e1 vhost_dev_cleanup +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x1c35ee1c ili9320_shutdown +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x392e445b ili9320_suspend +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x3bbf090b ili9320_write +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x4fb46d5d ili9320_probe_spi +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x700d98a6 ili9320_write_regs +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0xc73c5000 ili9320_remove +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0xd6b398d1 ili9320_resume +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x02ca9832 auok190x_send_cmdargs +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x18f5e7c1 auok190x_send_command +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x25367395 auok190x_common_remove +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x44313dd4 auok190x_send_cmdargs_nowait +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x4bccf1e0 auok190x_send_command_nowait +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x54e1022f auok190x_read_cmdargs +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0xa4fdddbf auok190x_pm +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0xc555e0f3 auok190x_send_cmdargs_pixels_nowait +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0xd3b0ffa8 auok190x_send_cmdargs_pixels +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0xe1c1c0c2 auok190x_common_probe +EXPORT_SYMBOL_GPL drivers/video/fbdev/core/fb_ddc 0xee8e7743 fb_ddc_read +EXPORT_SYMBOL_GPL drivers/video/fbdev/core/fb_sys_fops 0x5ff547d4 fb_sys_write +EXPORT_SYMBOL_GPL drivers/video/fbdev/core/fb_sys_fops 0xc74e6981 fb_sys_read +EXPORT_SYMBOL_GPL drivers/video/fbdev/sh_mobile_meram 0x21aa1382 sh_mobile_meram_free +EXPORT_SYMBOL_GPL drivers/video/fbdev/sh_mobile_meram 0x2820973c sh_mobile_meram_cache_update +EXPORT_SYMBOL_GPL drivers/video/fbdev/sh_mobile_meram 0x5d34c48f sh_mobile_meram_cache_free +EXPORT_SYMBOL_GPL drivers/video/fbdev/sh_mobile_meram 0x9ce15319 sh_mobile_meram_cache_alloc +EXPORT_SYMBOL_GPL drivers/video/fbdev/sh_mobile_meram 0xed6ad89d sh_mobile_meram_alloc +EXPORT_SYMBOL_GPL drivers/video/fbdev/sis/sisfb 0x77cb7448 sis_free_new +EXPORT_SYMBOL_GPL drivers/video/fbdev/sis/sisfb 0x9e30f20d sis_malloc_new +EXPORT_SYMBOL_GPL drivers/w1/wire 0x4fac9868 w1_write_block +EXPORT_SYMBOL_GPL drivers/w1/wire 0x7c2f2afb w1_calc_crc8 +EXPORT_SYMBOL_GPL drivers/w1/wire 0x8a8427c7 w1_reset_bus +EXPORT_SYMBOL_GPL drivers/w1/wire 0x979d1942 w1_reset_resume_command +EXPORT_SYMBOL_GPL drivers/w1/wire 0xb142a99e w1_next_pullup +EXPORT_SYMBOL_GPL drivers/w1/wire 0xb42f259d w1_reset_select_slave +EXPORT_SYMBOL_GPL drivers/w1/wire 0xc8960904 w1_read_block +EXPORT_SYMBOL_GPL drivers/w1/wire 0xe904e5b4 w1_touch_block +EXPORT_SYMBOL_GPL drivers/w1/wire 0xf745e751 w1_write_8 +EXPORT_SYMBOL_GPL drivers/w1/wire 0xfeaf93f8 w1_read_8 +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x19cbe62b dlm_posix_lock +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x91a49930 dlm_posix_unlock +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x9321df95 dlm_lock +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xbee16579 dlm_posix_get +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xc6dc8c2f dlm_new_lockspace +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xcf9f3328 dlm_release_lockspace +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xdc583c08 dlm_unlock +EXPORT_SYMBOL_GPL fs/fscache/fscache 0x092cf98e fscache_object_sleep_till_congested +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x2a165a86 nlmsvc_unlock_all_by_sb +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x6a1e781c lockd_down +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x77e35ccc nlmsvc_unlock_all_by_ip +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x845f9913 nlmclnt_proc +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x939e769c nlmclnt_done +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x9cbc8353 lockd_up +EXPORT_SYMBOL_GPL fs/lockd/lockd 0xb3040506 nlmsvc_ops +EXPORT_SYMBOL_GPL fs/lockd/lockd 0xeb423565 nlmclnt_init +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x02e2919a nfs_remount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x071524b7 nfs_pgio_header_free +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x075cfb13 nfs_fscache_open_file +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x07886113 nfs_set_sb_security +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x09cb5166 nfs_show_stats +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0a893c12 nfs_fs_mount_common +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0b85759f nfs4_dentry_operations +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0c15aa8d nfs_show_options +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0e5483e9 nfs_do_submount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0f0c94d5 nfs_destroy_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0ff2d1d9 nfs_init_cinfo +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x107b8ca0 nfs_instantiate +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x12d0bf4d nfs_sync_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1480a289 nfs_commitdata_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x192efb99 nfs_create +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x19ff57ad nfs_statfs +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1b09a7ce nfs_generic_pgio +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1d84d2c5 nfs_pageio_reset_write_mds +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1df97b81 nfs_free_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1f253877 nfs_may_open +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x240122c9 unregister_nfs_version +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x240f51ce get_nfs_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x24c15e37 nfs_server_remove_lists +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x24cec3a3 alloc_nfs_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x25bd9acd nfs_pageio_init +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x26884ff7 nfs_alloc_fhandle +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x26bf8189 put_nfs_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x279547bd nfs_show_path +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2bdcd820 nfs_get_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2eb94f31 nfs_init_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x308ba951 nfs_rename +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x30f0a5a6 nfs_sops +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3324fe27 nfs_fs_mount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x33a734ac nfs_setattr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x39159fe1 nfs_symlink +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x39e05ac3 nfs_idmap_cache_timeout +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3b67820a nfs_access_set_mask +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3bc022e5 nfs_pageio_reset_read_mds +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3ca31f35 nfs_net_id +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3e9a1f15 nfs4_fs_type +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3f2690f2 nfs_check_flags +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x40643f6e nfs_setsecurity +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x42f2c81f nfs4_client_id_uniquifier +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x431cff80 nfs_lookup +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4c542e5a nfs_zap_acl_cache +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4cb9e001 recover_lost_locks +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4fdf5a90 nfs_atomic_open +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 0x5e1d863a nfs_sockaddr_match_ipaddr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5f88f1e9 nfs_getattr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x60f125ce nfs_sb_deactive +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x61471ec6 nfs_file_splice_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6475ca00 nfs_write_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x65c9e61f nfs_file_flush +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6b5ce50b nfs_drop_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6d6a732a __tracepoint_nfs_fsync_exit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6f52e698 nfs_initiate_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x73456ab2 nfs_get_lock_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x780bf78b nfs_probe_fsinfo +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x793ec5d4 nfs_wb_all +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7a53cf66 nfs_pgio_header_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7db7b080 nfs_unlink +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x809731a6 nfs_fs_type +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x80ac5439 nfs_mknod +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x81f596f4 nfs_free_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8310f502 nfs_fhget +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x84a3ee6b nfs_force_lookup_revalidate +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x84e2e9b2 nfs_file_set_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8778e1dd nfs_access_add_cache +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x89a1cb0e nfs_try_mount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8e3e2e28 nfs_show_devname +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x90a5530f nfsiod_workqueue +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x910ee24d nfs_alloc_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x91d1fe52 max_session_slots +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x92c86c35 nfs_path +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x933ea7a3 nfs4_label_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x955d8718 nfs_pageio_resend +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x956cc60a nfs_file_release +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9675b96c nfs_file_operations +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9b70d964 nfs_server_copy_userdata +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9cdbe096 nfs_rmdir +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9f355622 nfs_refresh_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa156bafd nfs_init_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa43ab32b nfs_create_rpc_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa5c71edb nfs_revalidate_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa6643bd6 nfs_put_lock_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa6c865ee nfs_wait_bit_killable +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa7dc2477 register_nfs_version +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa8d2d1ce nfs_callback_tcpport +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa8e9e1ae send_implementation_id +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xaaa14361 nfs_dreq_bytes_left +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xacb2aedc nfs_pgio_data_destroy +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xad6ad5d4 nfs_file_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xae8cab72 nfs_clear_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xaf274669 nfs_request_add_commit_list +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb0ffb83b nfs_submount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb3873fe1 nfs_invalidate_atime +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb55804fc nfs_setattr_update_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb606e716 nfs_fattr_init +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb6bb50bd nfs_file_write +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb9c52eac nfs_commit_free +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbbe75d98 nfs_inode_attach_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbe67f1be nfs_server_insert_lists +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbf6dcb2f nfs_init_server_rpcclient +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbfa7f9a5 nfs_request_add_commit_list_locked +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc023feaa nfs_fill_super +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc198d767 nfs_access_zap_cache +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc379a6fb nfs_umount_begin +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc3b7d24b nfs_alloc_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc4457af3 nfs_writeback_update_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc49e0a7f nfs_post_op_update_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc4ff1e9f nfs_auth_info_match +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc582be95 nfs_commitdata_release +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc5ef47d5 nfs_init_timeout_values +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc6b5af12 nfs_link +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc782ed24 nfs_clone_sb_security +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc849d76f nfs_file_llseek +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd2513081 _nfs_display_fhandle_hash +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd28261b1 nfs_dentry_operations +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd3746176 nfs_file_fsync_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd37957ed nfs_pgheader_init +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd5c4fece nfs_kill_super +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdae9b5d7 nfs4_disable_idmapping +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdb0acf97 nfs_request_remove_commit_list +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdefd7451 nfs_pageio_init_write +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdf1f36e2 nfs_lock +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe058c75e nfs_permission +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe081a9dc nfs_flock +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe11ea489 nfs_sb_active +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe6badaaa nfs_pgio_current_mirror +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe7a979a6 nfs_close_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe8c46052 nfs_alloc_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe92c510d nfs_direct_set_resched_writes +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xea007711 __tracepoint_nfs_fsync_enter +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xeac97def nfs_generic_pg_test +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xeec53c19 nfs_create_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf159630f nfs_clone_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf1f1f866 nfs_wait_client_init_complete +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf502c82a nfs_mkdir +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf7422cb1 nfs_pageio_init_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf8a0db3a nfs_mark_client_ready +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf9de0153 nfs_post_op_update_inode_force_wcc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfb7ee006 nfs_alloc_fattr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfc619abd _nfs_display_fhandle +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfd1f34ac nfs_file_mmap +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfde0f8a1 nfs_initiate_pgio +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfe2943b4 nfs_put_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfee2c569 nfs_retry_commit +EXPORT_SYMBOL_GPL fs/nfs/nfsv3 0xd4fb9af6 nfs3_set_ds_client +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x057bfd96 pnfs_report_layoutstat +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x08aa1c2f nfs4_set_ds_client +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x0aa130ed pnfs_generic_clear_request_commit +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x0edbfd55 pnfs_destroy_layout +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x0f39eb3a nfs41_sequence_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x170f3ed6 nfs41_maxgetdevinfo_overhead +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x297e3c60 pnfs_generic_pg_test +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x2d166ece nfs4_schedule_stateid_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x2f6954ca pnfs_generic_prepare_to_resend_writes +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x37bebfaf pnfs_read_resend_pnfs +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x3993d88c nfs_remove_bad_delegation +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x3f8f3684 pnfs_write_done_resend_to_mds +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x3ff705a3 pnfs_register_layoutdriver +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x40536a5a __tracepoint_nfs4_pnfs_write +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x424b9342 pnfs_update_layout +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x4bb64964 nfs4_init_ds_session +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x4e0555fe nfs4_schedule_lease_moved_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x50711a55 pnfs_unregister_layoutdriver +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x50f12e34 _pnfs_return_layout +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x5245c734 nfs4_schedule_migration_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x5520a981 nfs4_find_get_deviceid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x5ad471e7 nfs4_init_deviceid_node +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x5bda5673 pnfs_error_mark_layout_for_return +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x5caf5209 pnfs_generic_recover_commit_reqs +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x69d3558d pnfs_generic_rw_release +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x6b13f4ae pnfs_ld_write_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x6cbed061 nfs40_setup_sequence +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x6fe3218c pnfs_generic_commit_pagelist +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x79c1c4b8 nfs4_find_or_create_ds_client +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x7ba5bdfd __tracepoint_nfs4_pnfs_commit_ds +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x7e1e5e7b nfs41_setup_sequence +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x7ebe7907 nfs4_mark_deviceid_unavailable +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x83ae6aaa nfs4_pnfs_v3_ds_connect_unload +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x87385c5a pnfs_set_lo_fail +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x877f6e03 pnfs_set_layoutcommit +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x8936b3fc pnfs_layoutcommit_inode +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x967bef4e nfs4_test_deviceid_unavailable +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x9de1b234 nfs4_pnfs_ds_connect +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xa02df320 nfs_map_string_to_numeric +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xa194981e pnfs_put_lseg +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xa82c54cb pnfs_ld_read_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xa9a42419 nfs4_pnfs_ds_put +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xc1777c8d nfs4_decode_mp_ds_addr +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xc4425a4c __tracepoint_nfs4_pnfs_read +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xc95e24d4 pnfs_nfs_generic_sync +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xca1d1ab4 nfs4_sequence_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xcac2b7eb pnfs_generic_pg_writepages +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xcb0ac2cf pnfs_put_lseg_locked +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xcc81afee nfs4_schedule_lease_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xcd9f1bd3 pnfs_layout_mark_request_commit +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xcfc1394a pnfs_generic_sync +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xd5342d7f nfs4_set_rw_stateid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xd8888e00 nfs4_schedule_session_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xde210fe8 pnfs_generic_write_commit_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xdf23a2d9 pnfs_generic_pg_init_read +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xe103ae92 pnfs_generic_pg_cleanup +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xe5ba74b4 pnfs_generic_pg_init_write +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xe6562c0c nfs4_proc_getdeviceinfo +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xe77f54b7 pnfs_generic_pg_readpages +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xebe8cddb nfs4_delete_deviceid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xebf7d5bd pnfs_generic_scan_commit_lists +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xed15fb41 nfs4_print_deviceid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xf4a3aea7 pnfs_read_done_resend_to_mds +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xf72f0251 nfs4_pnfs_ds_add +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xf7ed1ea7 nfs4_put_deviceid_node +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xf999267e pnfs_generic_commit_release +EXPORT_SYMBOL_GPL fs/nfs_common/grace 0x17ce645d locks_end_grace +EXPORT_SYMBOL_GPL fs/nfs_common/grace 0x35658c11 locks_start_grace +EXPORT_SYMBOL_GPL fs/nfs_common/grace 0x9f53563e locks_in_grace +EXPORT_SYMBOL_GPL fs/nfs_common/nfs_acl 0x2b7935a4 nfsacl_encode +EXPORT_SYMBOL_GPL fs/nfs_common/nfs_acl 0x812d137c nfsacl_decode +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x11736b03 __mlog_printk +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 0x1d747ce3 o2hb_check_node_heartbeating +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x2593d1aa o2hb_register_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x36418553 o2net_send_message +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x4900035b o2hb_stop_all_regions +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x492644ca o2hb_unregister_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x49ac5b38 o2nm_get_node_by_ip +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x4e4be371 o2nm_get_node_by_num +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x687f6251 mlog_and_bits +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x9c722348 o2nm_node_get +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xa1ae48e1 o2hb_check_node_heartbeating_no_sem +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xa82a8645 o2nm_this_node +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xa87bc9e7 o2nm_configured_node_map +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xa9f5379a o2net_send_message_vec +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xae808bac o2net_register_handler +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xb55cc5dc o2nm_node_put +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xbaeb4700 o2hb_check_node_heartbeating_from_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xc3679d7b o2hb_get_all_regions +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xd60f2c6c o2hb_check_local_node_heartbeating +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xd859ac8c o2net_fill_node_map +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xec776dd2 o2hb_setup_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xf1a5611d o2net_unregister_handler_list +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x24072616 dlmlock +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x4dd95bf3 dlm_register_domain +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x5775b4f7 dlm_register_eviction_cb +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x6462e26d dlm_unregister_domain +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x674eb55f dlm_print_one_lock +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x7a1211f8 dlm_setup_eviction_cb +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x91c62919 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 0x269d63fd ocfs2_cluster_disconnect +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x316904e1 ocfs2_dlm_unlock +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x3bcef5f3 ocfs2_dlm_lock_status +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x40718c92 ocfs2_dlm_lock +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x4226705d ocfs2_dlm_dump_lksb +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x424241c9 ocfs2_dlm_lvb +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x4d3af7fa ocfs2_cluster_hangup +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x60f4bcef ocfs2_dlm_lvb_valid +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x8f166561 ocfs2_plock +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x9ccafa05 ocfs2_cluster_this_node +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xa06fbc10 ocfs2_cluster_connect_agnostic +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xbbc4ef97 ocfs2_stack_supports_plocks +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xbf9068ab ocfs2_cluster_connect +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xc283b8fa ocfs2_stack_glue_unregister +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xd8c9f3e1 ocfs2_stack_glue_register +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xe40cffce ocfs2_stack_glue_set_max_proto_version +EXPORT_SYMBOL_GPL kernel/torture 0x1b2fca48 torture_must_stop_irq +EXPORT_SYMBOL_GPL kernel/torture 0x1be7d8be torture_onoff_failures +EXPORT_SYMBOL_GPL kernel/torture 0x31127b78 _torture_create_kthread +EXPORT_SYMBOL_GPL kernel/torture 0x3e9619f5 torture_onoff_stats +EXPORT_SYMBOL_GPL kernel/torture 0x4c7529bd torture_shutdown_absorb +EXPORT_SYMBOL_GPL kernel/torture 0x52665f8b torture_random +EXPORT_SYMBOL_GPL kernel/torture 0x5346b23b torture_shuffle_cleanup +EXPORT_SYMBOL_GPL kernel/torture 0x6364b2f0 stutter_wait +EXPORT_SYMBOL_GPL kernel/torture 0x679d9e50 torture_must_stop +EXPORT_SYMBOL_GPL kernel/torture 0x688e6a64 torture_cleanup_end +EXPORT_SYMBOL_GPL kernel/torture 0x6bdeda8f torture_onoff_init +EXPORT_SYMBOL_GPL kernel/torture 0x72f828d0 torture_shuffle_task_register +EXPORT_SYMBOL_GPL kernel/torture 0x8b0e1d2f torture_shuffle_init +EXPORT_SYMBOL_GPL kernel/torture 0xc1361afc torture_onoff_cleanup +EXPORT_SYMBOL_GPL kernel/torture 0xc6527045 torture_init_begin +EXPORT_SYMBOL_GPL kernel/torture 0xc67a49d4 torture_cleanup_begin +EXPORT_SYMBOL_GPL kernel/torture 0xd8915561 _torture_stop_kthread +EXPORT_SYMBOL_GPL kernel/torture 0xdbc5277a torture_shutdown_init +EXPORT_SYMBOL_GPL kernel/torture 0xe6989fd3 torture_init_end +EXPORT_SYMBOL_GPL kernel/torture 0xe9ff1468 torture_stutter_init +EXPORT_SYMBOL_GPL kernel/torture 0xf6d34fb5 torture_kthread_stopping +EXPORT_SYMBOL_GPL lib/842/842_compress 0x1ce013cf sw842_compress +EXPORT_SYMBOL_GPL lib/842/842_decompress 0x0d22f116 sw842_decompress +EXPORT_SYMBOL_GPL lib/notifier-error-inject 0xbacb5efa notifier_err_inject_init +EXPORT_SYMBOL_GPL lib/notifier-error-inject 0xe7a259a3 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 0x37fcd2ca lowpan_header_compress +EXPORT_SYMBOL_GPL net/6lowpan/6lowpan 0x9392c1c1 lowpan_header_decompress +EXPORT_SYMBOL_GPL net/802/garp 0x3fd9c92f garp_request_join +EXPORT_SYMBOL_GPL net/802/garp 0x56b16ec5 garp_request_leave +EXPORT_SYMBOL_GPL net/802/garp 0x5b903285 garp_register_application +EXPORT_SYMBOL_GPL net/802/garp 0x80d7052a garp_init_applicant +EXPORT_SYMBOL_GPL net/802/garp 0xe3429393 garp_unregister_application +EXPORT_SYMBOL_GPL net/802/garp 0xf2debc1a garp_uninit_applicant +EXPORT_SYMBOL_GPL net/802/mrp 0xa261e470 mrp_register_application +EXPORT_SYMBOL_GPL net/802/mrp 0xc1fce8d2 mrp_uninit_applicant +EXPORT_SYMBOL_GPL net/802/mrp 0xc8710857 mrp_init_applicant +EXPORT_SYMBOL_GPL net/802/mrp 0xd4609a90 mrp_unregister_application +EXPORT_SYMBOL_GPL net/802/mrp 0xe5afae9d mrp_request_join +EXPORT_SYMBOL_GPL net/802/mrp 0xebac0e57 mrp_request_leave +EXPORT_SYMBOL_GPL net/802/stp 0x76527a51 stp_proto_register +EXPORT_SYMBOL_GPL net/802/stp 0x88ab700f stp_proto_unregister +EXPORT_SYMBOL_GPL net/9p/9pnet 0x5bb86069 p9_client_xattrwalk +EXPORT_SYMBOL_GPL net/9p/9pnet 0x6d34551c 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 0xac93ae05 ax25_bcast +EXPORT_SYMBOL_GPL net/ax25/ax25 0xaeb7451e ax25_defaddr +EXPORT_SYMBOL_GPL net/ax25/ax25 0xcf6dc565 ax25_register_pid +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x066ff09b bt_debugfs +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x3395236c l2cap_chan_create +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x5bc3059a l2cap_chan_send +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x70e0cfc4 l2cap_chan_connect +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x9363bc9b l2cap_add_psm +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x954cb73a l2cap_chan_del +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0xaf34f08b l2cap_chan_set_defaults +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0xc0148974 l2cap_chan_put +EXPORT_SYMBOL_GPL net/bridge/br_netfilter 0x0cb0f8b7 br_netfilter_enable +EXPORT_SYMBOL_GPL net/bridge/bridge 0x3ad60bac br_multicast_has_querier_adjacent +EXPORT_SYMBOL_GPL net/bridge/bridge 0x46331d17 br_deliver +EXPORT_SYMBOL_GPL net/bridge/bridge 0x8f91205a nf_br_ops +EXPORT_SYMBOL_GPL net/bridge/bridge 0x9596ee6f br_forward_finish +EXPORT_SYMBOL_GPL net/bridge/bridge 0xa0445351 br_handle_frame_finish +EXPORT_SYMBOL_GPL net/bridge/bridge 0xc182b823 br_multicast_list_adjacent +EXPORT_SYMBOL_GPL net/bridge/bridge 0xc3291718 br_dev_queue_push_xmit +EXPORT_SYMBOL_GPL net/bridge/bridge 0xdb79fb89 br_multicast_has_querier_anywhere +EXPORT_SYMBOL_GPL net/bridge/netfilter/nf_tables_bridge 0x90578349 nft_bridge_iphdr_validate +EXPORT_SYMBOL_GPL net/bridge/netfilter/nf_tables_bridge 0xd0edd878 nft_bridge_ip6hdr_validate +EXPORT_SYMBOL_GPL net/dccp/dccp 0x09a123b7 dccp_orphan_count +EXPORT_SYMBOL_GPL net/dccp/dccp 0x11dec258 dccp_rcv_established +EXPORT_SYMBOL_GPL net/dccp/dccp 0x1452eefe dccp_destroy_sock +EXPORT_SYMBOL_GPL net/dccp/dccp 0x14b80968 dccp_death_row +EXPORT_SYMBOL_GPL net/dccp/dccp 0x1d99d49a dccp_timestamp +EXPORT_SYMBOL_GPL net/dccp/dccp 0x251dd699 dccp_setsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0x3ac48c4c dccp_send_sync +EXPORT_SYMBOL_GPL net/dccp/dccp 0x4422b398 dccp_rcv_state_process +EXPORT_SYMBOL_GPL net/dccp/dccp 0x49284e84 dccp_close +EXPORT_SYMBOL_GPL net/dccp/dccp 0x4ab7c852 dccp_reqsk_send_ack +EXPORT_SYMBOL_GPL net/dccp/dccp 0x4cdd391d dccp_feat_list_purge +EXPORT_SYMBOL_GPL net/dccp/dccp 0x4ec35231 dccp_ackvec_parsed_add +EXPORT_SYMBOL_GPL net/dccp/dccp 0x59814a84 dccp_statistics +EXPORT_SYMBOL_GPL net/dccp/dccp 0x5d225c6f dccp_ctl_make_reset +EXPORT_SYMBOL_GPL net/dccp/dccp 0x6b568dd3 dccp_ioctl +EXPORT_SYMBOL_GPL net/dccp/dccp 0x77a24aa1 dccp_sendmsg +EXPORT_SYMBOL_GPL net/dccp/dccp 0x83029375 dccp_connect +EXPORT_SYMBOL_GPL net/dccp/dccp 0x86be7924 dccp_packet_name +EXPORT_SYMBOL_GPL net/dccp/dccp 0x87c86bcf inet_dccp_listen +EXPORT_SYMBOL_GPL net/dccp/dccp 0x901e10b1 dccp_reqsk_init +EXPORT_SYMBOL_GPL net/dccp/dccp 0x9598d24d dccp_ackvec_parsed_cleanup +EXPORT_SYMBOL_GPL net/dccp/dccp 0x9dd2650b dccp_getsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0x9e1553ed dccp_poll +EXPORT_SYMBOL_GPL net/dccp/dccp 0xa2523283 dccp_parse_options +EXPORT_SYMBOL_GPL net/dccp/dccp 0xa8ddbc02 dccp_insert_option +EXPORT_SYMBOL_GPL net/dccp/dccp 0xaadb475b dccp_feat_nn_get +EXPORT_SYMBOL_GPL net/dccp/dccp 0xb0596156 dccp_hashinfo +EXPORT_SYMBOL_GPL net/dccp/dccp 0xb458c526 dccp_make_response +EXPORT_SYMBOL_GPL net/dccp/dccp 0xb907af43 dccp_check_req +EXPORT_SYMBOL_GPL net/dccp/dccp 0xb9d0eeb9 dccp_feat_signal_nn_change +EXPORT_SYMBOL_GPL net/dccp/dccp 0xbbebb97d dccp_create_openreq_child +EXPORT_SYMBOL_GPL net/dccp/dccp 0xbcccf557 dccp_recvmsg +EXPORT_SYMBOL_GPL net/dccp/dccp 0xc9c495c9 dccp_init_sock +EXPORT_SYMBOL_GPL net/dccp/dccp 0xd31e6afe dccp_set_state +EXPORT_SYMBOL_GPL net/dccp/dccp 0xdb439c84 dccp_sync_mss +EXPORT_SYMBOL_GPL net/dccp/dccp 0xdd039d6e dccp_done +EXPORT_SYMBOL_GPL net/dccp/dccp 0xe30bea4d dccp_send_ack +EXPORT_SYMBOL_GPL net/dccp/dccp 0xe6686173 dccp_disconnect +EXPORT_SYMBOL_GPL net/dccp/dccp 0xe6939a19 dccp_child_process +EXPORT_SYMBOL_GPL net/dccp/dccp 0xe843b796 dccp_shutdown +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x13ccabff dccp_v4_connect +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x21bd535b dccp_v4_do_rcv +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x4df3ea7f dccp_v4_conn_request +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x7ff545e8 dccp_v4_request_recv_sock +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x80ddd813 dccp_invalid_packet +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0xdd8024ab dccp_v4_send_check +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0x302ce1ae ieee802154_hdr_pull +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0x42c41761 ieee802154_hdr_peek +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0x4d7aef69 ieee802154_max_payload +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0xafe6c67e ieee802154_hdr_push +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0xd06184b8 ieee802154_hdr_peek_addrs +EXPORT_SYMBOL_GPL net/ipv4/geneve_core 0x16b9d082 geneve_sock_add +EXPORT_SYMBOL_GPL net/ipv4/geneve_core 0x74912601 geneve_xmit_skb +EXPORT_SYMBOL_GPL net/ipv4/geneve_core 0xec1944c7 geneve_sock_release +EXPORT_SYMBOL_GPL net/ipv4/gre 0x2b39f07d gre_cisco_register +EXPORT_SYMBOL_GPL net/ipv4/gre 0x4bf6edb7 gre_build_header +EXPORT_SYMBOL_GPL net/ipv4/gre 0x6a23cdbe gre_del_protocol +EXPORT_SYMBOL_GPL net/ipv4/gre 0xb68dd079 gre_add_protocol +EXPORT_SYMBOL_GPL net/ipv4/gre 0xeb5b6296 gre_cisco_unregister +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x0f8cbc6a inet_diag_bc_sk +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x465f214c inet_diag_dump_icsk +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x78537a7d inet_diag_register +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x7a66b0cc inet_diag_unregister +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0xc11c953e inet_diag_dump_one_icsk +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0xc7ac3b8e inet_sk_diag_fill +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x01ad61e3 ip_tunnel_changelink +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x3659e193 ip_tunnel_xmit +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x46acbbca ip_tunnel_setup +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x476d1fd6 ip_tunnel_init +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x538b126c ip_tunnel_uninit +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x7969ecff ip_tunnel_newlink +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x8a712d91 ip_tunnel_change_mtu +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x8ea52b6a ip_tunnel_rcv +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xaa4fcab8 ip_tunnel_delete_net +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xb1df2958 ip_tunnel_ioctl +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xb8ff963a ip_tunnel_lookup +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xd869354c ip_tunnel_dellink +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xe3d7f6d4 ip_tunnel_encap_setup +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xf2c33185 ip_tunnel_init_net +EXPORT_SYMBOL_GPL net/ipv4/netfilter/arp_tables 0x489e823c arpt_alloc_initial_table +EXPORT_SYMBOL_GPL net/ipv4/netfilter/ip_tables 0x50202490 ipt_alloc_initial_table +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_defrag_ipv4 0x6b6c3d10 nf_defrag_ipv4_enable +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_ipv4 0x02ac4251 nf_nat_ipv4_local_fn +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_ipv4 0x23bb680d nf_nat_ipv4_fn +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_ipv4 0x37c91fc4 nf_nat_ipv4_out +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_ipv4 0x39f6fedf nf_nat_ipv4_in +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_ipv4 0x8111c68a nf_nat_icmp_reply_translation +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_masquerade_ipv4 0x3f5c468e nf_nat_masquerade_ipv4_unregister_notifier +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_masquerade_ipv4 0x8271eb5f nf_nat_masquerade_ipv4 +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_masquerade_ipv4 0xfedbf252 nf_nat_masquerade_ipv4_register_notifier +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_proto_gre 0x636b12c8 nf_nat_need_gre +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0x0a0375d0 nf_send_reset +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0x3cd32b9b nf_reject_iphdr_put +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0x9821ed7a nf_reject_ip_tcphdr_put +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0x9f16bb15 nf_send_unreach +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0xfa21eac8 nf_reject_ip_tcphdr_get +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_tables_ipv4 0xc6ae85b2 nft_af_ipv4 +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x0cbd7326 tcp_vegas_pkts_acked +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x3c38b5e3 tcp_vegas_init +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x86c4bb1c tcp_vegas_get_info +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0xa1137653 tcp_vegas_cwnd_event +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0xd258c844 tcp_vegas_state +EXPORT_SYMBOL_GPL net/ipv4/udp_tunnel 0x1c437a96 udp_tunnel_sock_release +EXPORT_SYMBOL_GPL net/ipv4/udp_tunnel 0x8257fb6e setup_udp_tunnel_sock +EXPORT_SYMBOL_GPL net/ipv4/udp_tunnel 0x8c2e38c1 udp_tunnel_xmit_skb +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x321dcb1f ip6_tnl_xmit_ctl +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x390656b9 ip6_tnl_dst_store +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x742c01a7 ip6_tnl_rcv_ctl +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x7e4a0a46 ip6_tnl_dst_check +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x9c52696f ip6_tnl_dst_reset +EXPORT_SYMBOL_GPL net/ipv6/ip6_udp_tunnel 0x27a4ea0f udp_tunnel6_xmit_skb +EXPORT_SYMBOL_GPL net/ipv6/ip6_udp_tunnel 0x2dc897cb udp_sock_create6 +EXPORT_SYMBOL_GPL net/ipv6/netfilter/ip6_tables 0x2966f16d ip6t_alloc_initial_table +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_defrag_ipv6 0x6eb85693 nf_defrag_ipv6_enable +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_ipv6 0x3f7ecfc6 nf_nat_icmpv6_reply_translation +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_ipv6 0x65a1a890 nf_nat_ipv6_in +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_ipv6 0x86b19ad9 nf_nat_ipv6_fn +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_ipv6 0xbae8016a nf_nat_ipv6_out +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_ipv6 0xca1c1e08 nf_nat_ipv6_local_fn +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_masquerade_ipv6 0x2293972c nf_nat_masquerade_ipv6_unregister_notifier +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_masquerade_ipv6 0x38d4401a nf_nat_masquerade_ipv6_register_notifier +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_masquerade_ipv6 0x7ef5b34b nf_nat_masquerade_ipv6 +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0x25fcaad0 nf_send_reset6 +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0x73f4b316 nf_reject_ip6hdr_put +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0x82bb6c0a nf_reject_ip6_tcphdr_put +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0xcdf133e3 nf_send_unreach6 +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0xfd7f281b nf_reject_ip6_tcphdr_get +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_tables_ipv6 0x2c8bb244 nft_af_ipv6 +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x0143c3ab l2tp_tunnel_find_nth +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x0bfbc897 l2tp_xmit_skb +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x17306482 l2tp_session_find_nth +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x23445e52 l2tp_tunnel_delete +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x23e73275 l2tp_udp_encap_recv +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x2660f726 l2tp_tunnel_create +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x42bb1372 l2tp_session_find_by_ifname +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x720c809e l2tp_session_delete +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x8b89db76 l2tp_session_find +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x8e2c91a0 l2tp_session_set_header_len +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x9d1155e6 l2tp_session_create +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x9d464af0 l2tp_tunnel_closeall +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x9e3b328c l2tp_tunnel_find +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xa6748668 l2tp_session_queue_purge +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xc2df730d l2tp_session_free +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xd854e3b8 __l2tp_session_unhash +EXPORT_SYMBOL_GPL net/l2tp/l2tp_netlink 0x337f2432 l2tp_nl_unregister_ops +EXPORT_SYMBOL_GPL net/l2tp/l2tp_netlink 0xd0f27372 l2tp_nl_register_ops +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x142bb069 ieee80211_resume_disconnect +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x16bc803b ieee80211_iterate_stations_atomic +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x2ab7f581 ieee80211_iterate_interfaces +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x301516f5 ieee80211_remove_key +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x3188b321 ieee80211_ready_on_channel +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x7ffd6316 wdev_to_ieee80211_vif +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x8f3e960f ieee80211_iterate_active_interfaces_rtnl +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xa15fe72a ieee80211_find_sta_by_ifaddr +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xab4a53e3 ieee80211_ave_rssi +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xad0efcfd ieee80211_set_key_tx_seq +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xade77d0f ieee80211_napi_add +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xbafdcad1 ieee80211_gtk_rekey_notify +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xcce7e678 ieee80211_vif_to_wdev +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xd57cf47a ieee80211_gtk_rekey_add +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xd5dce748 ieee80211_remain_on_channel_expired +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xdb8e3396 ieee80211_request_smps +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xe5026238 ieee80211_iter_chan_contexts_atomic +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xf81ac091 ieee80211_iterate_active_interfaces_atomic +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xf9fa191d ieee80211_set_key_rx_seq +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x0d025a26 ip_set_get_extensions +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x23f5d02a ip_set_del +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x2b078635 ip_set_put_extensions +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x2b8f4217 ip_set_get_ip_port +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x397f6231 ip_set_free +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x55168d6f ip_set_type_unregister +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x59397466 ip_set_add +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x6344eaf6 ip_set_alloc +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x7714b6ba ip_set_put_byindex +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 0x9fa102d4 ip_set_type_register +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xa293f8a6 ip_set_get_ipaddr4 +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xa2d623f3 ip_set_range_to_cidr +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xa74d1e79 ip_set_nfnl_put +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xb1bab442 ip_set_name_byindex +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xb7f92f37 ip_set_get_ip4_port +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xcc001bd9 ip_set_extensions +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xd672dc3b ip_set_get_ip6_port +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xdb5b36ca ip_set_get_byname +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xe7c4036f ip_set_test +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xeb87cb2d ip_set_elem_len +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xefe7618b ip_set_nfnl_get_byindex +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0x0bf52d13 ip_vs_conn_out_get_proto +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0x47e7e6c1 ip_vs_conn_in_get_proto +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0x5b75d2bf register_ip_vs_pe +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0x76dd3f78 unregister_ip_vs_pe +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x02d378a4 nf_connlabel_match +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x045072cd nf_ct_port_nla_policy +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x07cfd8c0 nf_conntrack_locks +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x0856dd65 nf_conntrack_helper_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x0b85fab9 nf_ct_l3proto_pernet_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x0f802a6c nf_conntrack_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x113f8c1d __nf_ct_l4proto_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x158762bc nf_ct_helper_expectfn_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x19349057 nf_ct_tcp_seqadj_set +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x208b0e3c nf_ct_invert_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x25057f6c nf_conntrack_free +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x289c3714 nf_ct_alloc_hashtable +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x2e922a44 nf_conntrack_hash_check_insert +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x33e6b318 nf_ct_l3proto_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x36da9c0e nf_ct_remove_expectations +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x37386cac nf_conntrack_hash_rnd +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3a450101 nf_ct_helper_ext_add +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3bcfa486 nf_ct_get_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3c240290 nf_connlabels_replace +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3f5b1415 nf_ct_port_nlattr_to_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3f7653f3 nf_ct_l4proto_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x4650095b nf_conntrack_tuple_taken +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x472c14a9 __nf_ct_refresh_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x4a566eeb nf_conntrack_helper_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x4dcb0611 __nf_ct_expect_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x5c537ddd nf_ct_expect_register_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x5f731dd2 nf_conntrack_l4proto_udp4 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x62813e5c nf_ct_port_nlattr_tuple_size +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x67685a95 nf_ct_expect_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6783d4cb nf_conntrack_unregister_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x68c369a3 nf_ct_l4proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x693c3961 nf_ct_helper_hash +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6c5827e2 __nf_ct_kill_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6d0e73c3 nf_ct_seq_adjust +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6d457f50 nf_conntrack_l4proto_udp6 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6e224a7a need_conntrack +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x73861675 __nf_conntrack_confirm +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x73a0d1aa nf_ct_unlink_expect_report +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x76b21881 nf_ct_helper_log +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x78c70262 nf_ct_extend_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x78f9b710 nf_ct_l3proto_try_module_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x826bb30f nf_ct_expect_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x86007d11 nf_conntrack_register_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x860b11de nf_ct_iterate_cleanup +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x89fc505d nf_ct_get_tuplepr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8ca56fe1 __nf_ct_try_assign_helper +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8e8fd55d nf_ct_l4proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8eb71c90 nf_ct_l3protos +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8ffe7e89 nf_conntrack_htable_size +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x90ff6c9f nf_ct_invert_tuplepr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x92019826 nf_ct_tmpl_free +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x942c7456 nf_ct_l4proto_pernet_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x94d9ca46 nf_ct_l4proto_pernet_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x96b3b5b0 nf_ct_tmpl_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x99836775 nf_ct_expect_init +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x99ed5bb9 nf_ct_timeout_find_get_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x9a6801be nf_ct_expect_unregister_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x9b9aaebb nf_conntrack_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x9bd747e1 nfnetlink_parse_nat_setup_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x9eccd257 nf_conntrack_in +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa2ed0d18 nf_ct_expect_related_report +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa3facfb7 nf_ct_port_tuple_to_nlattr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xaa667b74 nf_conntrack_helper_try_module_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xab3d1f95 nf_ct_untracked_status_or +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xad1bb027 nf_ct_free_hashtable +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xaf1395be nf_ct_seqadj_set +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb11fb80a nf_ct_expect_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb5998a09 nf_ct_helper_expectfn_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb602c57e nf_ct_l3proto_module_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb680f5bf nf_connlabel_set +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xbe48fb5e nf_ct_unexpect_related +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xbfaa819a nf_ct_l3proto_pernet_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc18ac88d nf_ct_expect_hsize +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc2abd2fd nf_conntrack_expect_lock +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc40f284c nf_ct_helper_hsize +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc4e1c49a nf_ct_l3proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc5563c61 nf_ct_l3proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc5e3a9c1 nf_conntrack_l3proto_generic +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc7e1272b nf_conntrack_alter_reply +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xcd22f828 nf_ct_helper_expectfn_find_by_name +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xcd809195 nf_conntrack_l4proto_tcp4 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd7184999 nf_ct_delete +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd9e58630 nf_ct_deliver_cached_events +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xe09bcf8d nf_conntrack_set_hashsize +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xe462c328 __nf_conntrack_helper_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xe5faba1a nf_ct_extend_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xe8dd3a23 seq_print_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xebcadb92 nf_ct_seq_offset +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf38bcdf3 nf_conntrack_max +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf561f0c5 nf_ct_l4proto_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf9acbff0 nf_ct_timeout_put_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xfe3066f3 nf_ct_seqadj_init +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xfec3602b nf_ct_helper_expectfn_find_by_symbol +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xffb6f317 nf_conntrack_l4proto_tcp6 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_amanda 0x0c1de19a nf_nat_amanda_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_broadcast 0xb351c8c1 nf_conntrack_broadcast_help +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_ftp 0xd21c29f2 nf_nat_ftp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x19903965 set_ras_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x3a3413c4 get_h225_addr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x5abed648 nat_rtp_rtcp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x707b078e set_sig_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x747f22f7 nat_q931_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x77a733fa nat_h245_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x93f565f7 set_h245_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xa884329d nat_callforwarding_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xef180274 set_h225_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xf7c0e0d8 nat_t120_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_irc 0x2d6eb153 nf_nat_irc_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0x33c6c8ad nf_nat_pptp_hook_outbound +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0x9d039701 nf_nat_pptp_hook_inbound +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0xb36b0c31 nf_nat_pptp_hook_exp_gre +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0xc5f2a3e5 nf_nat_pptp_hook_expectfn +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_proto_gre 0x21817af4 nf_ct_gre_keymap_add +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_proto_gre 0x903b00b7 nf_ct_gre_keymap_destroy +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x2d4cbd6c ct_sip_parse_header_uri +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x447e8bdc ct_sip_get_sdp_header +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x636daef6 ct_sip_parse_numerical_param +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xbe8304a7 ct_sip_get_header +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xd3797592 ct_sip_parse_request +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xe92a806c nf_nat_sip_hooks +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xeb4c1f6a ct_sip_parse_address_param +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_snmp 0xa7c19e51 nf_nat_snmp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_tftp 0x7003e05b nf_nat_tftp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_log_common 0x3af3692c nf_log_dump_packet_common +EXPORT_SYMBOL_GPL net/netfilter/nf_log_common 0x41bfa94e nf_log_dump_sk_uid_gid +EXPORT_SYMBOL_GPL net/netfilter/nf_log_common 0x6e4e30f2 nf_log_dump_udp_header +EXPORT_SYMBOL_GPL net/netfilter/nf_log_common 0x8c4cecf6 nf_log_dump_tcp_header +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x0d36f352 nf_nat_l3proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x0d9bae4b nf_nat_l4proto_nlattr_to_range +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x10189992 nf_nat_l4proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x131f636c nf_nat_l4proto_in_range +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x26f966b4 nf_nat_alloc_null_binding +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x2beb502d nf_nat_l4proto_unique_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x371ab041 nf_nat_l4proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x40680bc0 __nf_nat_l4proto_find +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x5f032f35 nf_ct_nat_ext_add +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x9a4f29f7 nf_nat_packet +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xf721c2f1 nf_nat_l3proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_nat_redirect 0x63956944 nf_nat_redirect_ipv4 +EXPORT_SYMBOL_GPL net/netfilter/nf_nat_redirect 0x8809cea0 nf_nat_redirect_ipv6 +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x11a006b5 synproxy_check_timestamp_cookie +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x5be10531 synproxy_parse_options +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x699ddf80 synproxy_tstamp_adjust +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x8841d39b synproxy_build_options +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x90298227 synproxy_init_timestamp_cookie +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0xb42e336a synproxy_options_size +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0xef7db50c synproxy_net_id +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x04bb85e0 nft_do_chain +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x12601553 nft_validate_register_store +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x1e6b75a3 nft_parse_register +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x21786e0c nft_unregister_basechain +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x27ee2736 nft_unregister_set +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x2f0321a7 nft_unregister_expr +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x329d4d50 nft_unregister_chain_type +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x35217621 nft_data_dump +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x5778f241 nft_chain_validate_hooks +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x5bb39bb8 nft_data_init +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x61afa0a7 nft_set_elem_destroy +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x68088bee nft_data_uninit +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x6c4f4240 nft_register_set +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x8135c9f7 nft_set_gc_batch_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xaa6ce0ef nft_register_basechain +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xb057af31 nft_unregister_afinfo +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xbf63bb61 nft_set_gc_batch_release +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xc66b829d nft_dump_register +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xcf03e214 nft_chain_validate_dependency +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xe09dada2 nft_set_ext_types +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xe604f4c4 nft_register_expr +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xed33c632 nft_validate_register_load +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xf48b03c1 nft_register_chain_type +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xf8ff1ce5 nft_register_afinfo +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x2e8f28a0 nfnetlink_alloc_skb +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x5ce3b588 nfnl_lock +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x6e5a3096 nfnetlink_subsys_unregister +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x9ddb7bc1 nfnetlink_set_err +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xaf68f82b nfnetlink_send +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xb046dd3d nfnetlink_has_listeners +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xdb065657 nfnl_unlock +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xdef09640 nfnetlink_subsys_register +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xf25598fa nfnetlink_unicast +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0x21f6bba6 nfnl_acct_find_get +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0x40394955 nfnl_acct_overquota +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0x8bb6d0cf nfnl_acct_update +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0xbecf5d14 nfnl_acct_put +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_log 0x0da3c227 nfulnl_log_packet +EXPORT_SYMBOL_GPL net/netfilter/nft_masq 0x0369bc98 nft_masq_init +EXPORT_SYMBOL_GPL net/netfilter/nft_masq 0x6f666f12 nft_masq_validate +EXPORT_SYMBOL_GPL net/netfilter/nft_masq 0xe3b8ea21 nft_masq_policy +EXPORT_SYMBOL_GPL net/netfilter/nft_masq 0xff085d6e nft_masq_dump +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0x0edf74d9 nft_meta_get_init +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0x81f112b6 nft_meta_set_init +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0xa9ac2841 nft_meta_set_eval +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0xb80e8358 nft_meta_policy +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0xbd7da524 nft_meta_get_dump +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0xc68c4db7 nft_meta_get_eval +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0xe7fcba2b nft_meta_set_dump +EXPORT_SYMBOL_GPL net/netfilter/nft_redir 0x96015891 nft_redir_init +EXPORT_SYMBOL_GPL net/netfilter/nft_redir 0xa5be1e1e nft_redir_policy +EXPORT_SYMBOL_GPL net/netfilter/nft_redir 0xcc3f49f3 nft_redir_validate +EXPORT_SYMBOL_GPL net/netfilter/nft_redir 0xce500ebb nft_redir_dump +EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0x6e385379 nft_reject_init +EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0x93a95b7b nft_reject_dump +EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0xa2db3c7f nft_reject_policy +EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0xddf15889 nft_reject_icmp_code +EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0xe8cdab4e nft_reject_icmpv6_code +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x0856045d xt_hook_link +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x088dff53 xt_request_find_match +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x1ee2aee8 xt_replace_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x1fa7a19c xt_register_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x40728a63 xt_find_revision +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x4316d2bc xt_proto_init +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x4532f68d xt_unregister_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x4699f782 xt_check_match +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x4e022725 xt_find_table_lock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x8040a6cf xt_check_target +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x807d2b2c xt_recseq +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x9ade56f5 xt_request_find_target +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x9b7a0302 xt_hook_unlink +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xc7011d8f xt_proto_fini +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xff9e21a1 xt_table_unlock +EXPORT_SYMBOL_GPL net/netfilter/xt_RATEEST 0x57909dc1 xt_rateest_put +EXPORT_SYMBOL_GPL net/netfilter/xt_RATEEST 0xd0f26ea3 xt_rateest_lookup +EXPORT_SYMBOL_GPL net/nfc/nci/nci 0x7aea47ff nci_spi_allocate_spi +EXPORT_SYMBOL_GPL net/nfc/nci/nci 0xa00eaaf9 nci_spi_send +EXPORT_SYMBOL_GPL net/nfc/nci/nci 0xe8a401a8 nci_spi_read +EXPORT_SYMBOL_GPL net/nfc/nci/nci_uart 0x0e7b8d05 nci_uart_set_config +EXPORT_SYMBOL_GPL net/nfc/nci/nci_uart 0x1f7e4380 nci_uart_unregister +EXPORT_SYMBOL_GPL net/nfc/nci/nci_uart 0x33402c1d nci_uart_register +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x157d4be6 ovs_vport_free +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x1f496a70 ovs_vport_ops_unregister +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x20511796 ovs_vport_receive +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x2628c86b ovs_vport_ops_register +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x2dcc8dfb ovs_tunnel_get_egress_info +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0xb4ee0bcf ovs_vport_deferred_free +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0xd25598ac ovs_vport_alloc +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0xda83411d ovs_net_id +EXPORT_SYMBOL_GPL net/rds/rds 0x00a467af rds_wq +EXPORT_SYMBOL_GPL net/rds/rds 0x083bc7d8 rds_message_addref +EXPORT_SYMBOL_GPL net/rds/rds 0x2c5c5514 rds_message_add_rdma_dest_extension +EXPORT_SYMBOL_GPL net/rds/rds 0x2fb9c832 rds_trans_unregister +EXPORT_SYMBOL_GPL net/rds/rds 0x3101936e rds_message_add_extension +EXPORT_SYMBOL_GPL net/rds/rds 0x315a489c rds_for_each_conn_info +EXPORT_SYMBOL_GPL net/rds/rds 0x35e49352 rds_inc_put +EXPORT_SYMBOL_GPL net/rds/rds 0x3b4fc0fc rds_page_remainder_alloc +EXPORT_SYMBOL_GPL net/rds/rds 0x4137a50d rds_message_put +EXPORT_SYMBOL_GPL net/rds/rds 0x4de7e3dd rds_recv_incoming +EXPORT_SYMBOL_GPL net/rds/rds 0x50cbe7b3 rds_stats +EXPORT_SYMBOL_GPL net/rds/rds 0x536e2e49 rds_conn_create_outgoing +EXPORT_SYMBOL_GPL net/rds/rds 0x6442d7ed rds_info_register_func +EXPORT_SYMBOL_GPL net/rds/rds 0x6b4efa73 rds_conn_destroy +EXPORT_SYMBOL_GPL net/rds/rds 0x6c6c4256 rds_atomic_send_complete +EXPORT_SYMBOL_GPL net/rds/rds 0x73aac73d rds_message_populate_header +EXPORT_SYMBOL_GPL net/rds/rds 0x742a5cf4 rds_connect_complete +EXPORT_SYMBOL_GPL net/rds/rds 0x76b08c0b rds_conn_create +EXPORT_SYMBOL_GPL net/rds/rds 0x857fa80c rds_conn_drop +EXPORT_SYMBOL_GPL net/rds/rds 0x8893e4f0 rds_send_drop_acked +EXPORT_SYMBOL_GPL net/rds/rds 0x8a7a62ff rds_message_unmapped +EXPORT_SYMBOL_GPL net/rds/rds 0x8c33cbd3 rds_rdma_send_complete +EXPORT_SYMBOL_GPL net/rds/rds 0x904ae03a rds_trans_register +EXPORT_SYMBOL_GPL net/rds/rds 0x943c2e14 rds_send_get_message +EXPORT_SYMBOL_GPL net/rds/rds 0x96fafe85 rds_stats_info_copy +EXPORT_SYMBOL_GPL net/rds/rds 0xb7eed251 rds_conn_connect_if_down +EXPORT_SYMBOL_GPL net/rds/rds 0xc2dab779 rds_info_copy +EXPORT_SYMBOL_GPL net/rds/rds 0xc642cc2c rds_cong_map_updated +EXPORT_SYMBOL_GPL net/rds/rds 0xdf24cc1a rds_info_deregister_func +EXPORT_SYMBOL_GPL net/rds/rds 0xfbffda4c rds_inc_init +EXPORT_SYMBOL_GPL net/rds/rds 0xffdc3ac0 rds_page_copy_user +EXPORT_SYMBOL_GPL net/rxrpc/af-rxrpc 0x3f429ca3 rxrpc_unregister_security +EXPORT_SYMBOL_GPL net/rxrpc/af-rxrpc 0x71243b2f rxrpc_register_security +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x00c52ef5 g_make_token_header +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x2773e2fc svcauth_gss_flavor +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x350d7a16 gss_mech_unregister +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x3cd159ef gss_mech_register +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x8d1a827e svcauth_gss_register_pseudoflavor +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xb5dea7ef g_token_size +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xf8b2ff6e g_verify_token_header +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x006537e0 xprt_reserve_xprt_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x01c23cf4 rpc_proc_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x035f9904 xprt_reserve_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x045834e9 rpcauth_get_pseudoflavor +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x05e807a9 xdr_encode_string +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0639df2a xprt_release_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x065994f1 xdr_encode_opaque_fixed +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x06f80893 xdr_process_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x07f3f0c7 xdr_decode_word +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x07fc9f8e sunrpc_cache_lookup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x09c8ee84 cache_purge +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0ca5607c svc_xprt_names +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0e1821eb xdr_reserve_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0e7750dd svc_xprt_init +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0ed6944e xprt_complete_rqst +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0f668ba9 svc_auth_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1440c988 rpc_force_rebind +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x17e85538 rpc_print_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1912223b svc_recv +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x19cbf8f3 xprt_disconnect_done +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1afcc942 xdr_skb_read_bits +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x206c3b2e xprt_set_retrans_timeout_rtt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x21737c3c xdr_buf_read_netobj +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x22d2f3d3 rpc_pton +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2328e783 rpc_clnt_swap_activate +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x244b1c55 rpc_d_lookup_sb +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2919b156 xdr_decode_string_inplace +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x291c45d2 rpc_lookup_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2945b264 xprt_adjust_cwnd +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2a454aed rpc_get_sb_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2ad70d5d xprt_lock_and_alloc_slot +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2d5eab60 xdr_commit_encode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2d75f035 rpcauth_generic_bind_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2d76ce84 rpc_clnt_swap_deactivate +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2e62e568 rpc_call_null +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2eec63c9 xdr_encode_netobj +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2f8ebbe0 rpc_ntop +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3108041d rpc_sleep_on_priority +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3195b010 rpc_wake_up_first +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x31a89d59 rpc_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x322d4701 rpc_localaddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x333d44da svcauth_unix_set_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x387e1639 rpc_pipefs_notifier_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x39f98c44 xprt_alloc_slot +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3adecbdd svc_destroy +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3b495ccd svc_drop +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3b616e11 svc_xprt_enqueue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3be97fa1 rpc_wake_up +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3bf3ef05 rpc_lookup_cred_nonblock +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3d810af8 rpc_protocol +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3db64d75 svc_create_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3dc2e35b xdr_inline_decode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3fa4f34f csum_partial_copy_to_xdr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4071bd1a xdr_stream_pos +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x42f8bfd9 sunrpc_init_cache_detail +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x439bacb6 rpc_create_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4460e746 rpc_get_timeout +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x44d11502 xdr_buf_trim +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x44ee7a94 xdr_buf_from_iov +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x46aa80bd rpc_put_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x47716c74 svc_set_num_threads +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x47eca83f xprt_write_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4964e272 svc_authenticate +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x49e3b627 svc_wake_up +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4a4b5329 rpc_free_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4be5a52c xdr_encode_word +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4fb9bf99 put_rpccred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4fe466e8 rpc_init_pipe_dir_head +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5030ddd4 xdr_read_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x506e6eb8 rpcauth_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x53445f68 nlm_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5385d900 rpc_peeraddr2str +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x53c8c564 rpcauth_init_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x54159b23 svc_find_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5604f219 rpcauth_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x58821a78 rpc_init_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x58e75cf1 rpcauth_cred_key_to_expire +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5a85b657 cache_register_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5b5898be rpc_destroy_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5b8ed258 rpc_mkpipe_data +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5ce0bf5b rpc_exit +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5d3939ed svc_alien_sock +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5e2d1a50 svc_proc_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5e34d56c svc_max_payload +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x61ae1f03 sunrpc_cache_update +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6391874b xprt_setup_backchannel +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x65a7269a rpc_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x68e02314 rpcauth_stringify_acceptor +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6acdf953 xprt_wait_for_buffer_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6bdf013a rpc_put_task_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6d7a82dd svc_rpcb_setup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6e639fbc cache_check +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6e87e1eb read_bytes_from_xdr_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6f0a8a2a rpc_proc_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6fdb59ad svc_exit_thread +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x70434fd6 svcauth_unix_purge +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x71b31446 rpc_bind_new_program +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x71fa908a cache_flush +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x734807d9 auth_domain_find +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x761a8211 svc_rpcb_cleanup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x76288993 rpcb_getport_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x77b80f47 rpc_clone_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x77ca6ebf rpc_wake_up_status +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7aa971c6 rpc_destroy_pipe_data +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7c089505 xprt_alloc +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7c2e3683 rpc_init_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7cdda15d xprt_free +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7d6d325e rpc_find_or_alloc_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7dbe3b7a xprt_wake_pending_tasks +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7dceec4e rpc_setbufsize +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7de53067 rpc_init_rtt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8023c11b rpc_alloc_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x80951b28 rpcauth_get_gssinfo +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8146fae5 sunrpc_cache_register_pipefs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x83b88c30 sunrpc_cache_unregister_pipefs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x83c054f3 xdr_encode_array2 +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x841f3b25 xprt_destroy_backchannel +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x84949fcd xdr_inline_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x85359cad rpc_switch_client_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8618ce5f rpc_killall_tasks +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8949c65a xdr_shift_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8c022000 svc_unreg_xprt_class +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8c85d53e rpc_call_start +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8d79db1e rpc_delay +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8da528cd sunrpc_destroy_cache_detail +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8dc0c525 rpc_task_reset_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8e396bcf xdr_write_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8eff6192 rpc_wake_up_queued_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8fc6e0b3 svc_create_pooled +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9060fa93 rpc_max_payload +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x91d7af86 rpc_shutdown_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x930a2bf6 rpc_count_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x971281bc xdr_partial_copy_from_skb +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x989182b6 _copy_from_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x989896e7 xdr_init_decode_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x98b75d64 rpcauth_list_flavors +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9abb2aee rpc_restart_call_prepare +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9c3f935f rpcauth_destroy_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa9e2d45b rpc_init_priority_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xae7769c4 rpc_pipe_generic_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xaea65b12 xprt_lookup_rqst +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xaf27a617 xdr_set_scratch_buffer +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xaf5bf6ef nfs_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xaf5f6e12 write_bytes_to_xdr_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb0223db4 xprt_set_retrans_timeout_def +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb2830b66 rpc_count_iostats_metrics +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb2db89b3 svc_proc_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb468c428 rpc_put_sb_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb4b48c2a xprt_unregister_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb51a3724 rpc_pipefs_notifier_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb6ded404 rpc_unlink +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb70d254e rpc_malloc +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb73a6e89 __rpc_wait_for_completion_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb7451df2 rpc_run_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb7902cd1 svc_shutdown_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xba1bbee9 svc_auth_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbabd6274 rpcauth_init_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbc5ce67b svc_xprt_copy_addrs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbe6eb0bf svc_close_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbf2afd1d rpcauth_lookup_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbf9d1b96 nfsd_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc03c429b rpc_net_ns +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc12435e3 rpc_calc_rto +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc1a0637c svc_reserve +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc3880471 xdr_decode_netobj +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc44f9f24 cache_destroy_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc489bb47 svc_set_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc4c2ad4a cache_unregister_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc55c079f rpcauth_lookupcred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc55e258c unix_domain_find +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc66a29e3 rpc_wake_up_next +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc6df3b09 rpc_queue_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc8e96dea qword_addhex +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc96988e5 xdr_terminate_string +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc9b2c6ce svc_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc9c2988e rpc_remove_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcd0ec7e5 svc_xprt_put +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcee467f3 xprt_load_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcf4d4c59 sunrpc_cache_pipe_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcf753702 svc_reg_xprt_class +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcfd4e9a7 svc_prepare_thread +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd0a04e62 xdr_init_decode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd3555441 gssd_running +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd37810f8 svc_addsock +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd3e3eaf7 xprt_release_rqst_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd4752a40 xdr_init_encode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd609bec4 rpc_peeraddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd657d8e9 rpc_mkpipe_dentry +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd797e0c7 rpc_release_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd881e090 svc_print_addr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd8cf7046 svc_process +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe1ac2bb8 sunrpc_net_id +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe1d9c3a8 rpcauth_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe23f14cb rpc_rmdir +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe2deb93c rpc_call_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe5919cb1 xdr_encode_opaque +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe78e7fec rpc_clone_client_set_auth +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe7c83a2b cache_create_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe860c1b9 rpc_lookup_machine_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe881aec2 auth_domain_lookup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe97a8632 bc_svc_process +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe97f4ce5 qword_get +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xeb9e8d63 svc_sock_update_bufs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xed50504d rpc_call_sync +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xed522705 xdr_enter_page +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xed97ac2a xdr_decode_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 0xef5752a7 svc_bind +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf035dea5 rpc_add_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf1c6e2b3 xprt_release_xprt_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf32299f1 rpc_uaddr2sockaddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf33b75c4 rpc_sleep_on +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf53da78d xdr_buf_subsegment +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf80afe16 auth_domain_put +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf8da9325 rpcauth_key_timeout_notify +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf9d1164c rpc_free +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfb7b943c rpc_restart_call +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfe96a49a xprt_register_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfeb0e8a6 svc_seq_show +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x0c79d5ef vm_sockets_get_local_cid +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x15c0c57c vsock_addr_init +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x2663cb64 vsock_addr_equals_addr +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x381cf0cb vsock_remove_bound +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x5877ff84 vsock_stream_has_data +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x59070939 vsock_add_pending +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x594b85e9 vsock_remove_pending +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x5d2e57bc vsock_for_each_connected_socket +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x6c1829b9 vsock_find_bound_socket +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 0x7f730c80 vsock_core_exit +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x8bf8236d vsock_find_connected_socket +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x919ccfb2 vsock_enqueue_accept +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xb0219b83 __vsock_create +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xbd0f699d vsock_addr_bound +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xd3ebedc2 vsock_stream_has_space +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xd95ac116 vsock_addr_validate +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xeeb00141 __vsock_core_init +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xf48ddc1c vsock_remove_connected +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xf593c40a vsock_pending_work +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xfca3fa8b vsock_insert_connected +EXPORT_SYMBOL_GPL net/wimax/wimax 0x1171290f wimax_msg_data_len +EXPORT_SYMBOL_GPL net/wimax/wimax 0x222e7fc0 wimax_msg_data +EXPORT_SYMBOL_GPL net/wimax/wimax 0x2de80351 wimax_dev_add +EXPORT_SYMBOL_GPL net/wimax/wimax 0x538b1e2e wimax_dev_rm +EXPORT_SYMBOL_GPL net/wimax/wimax 0x565094d3 wimax_state_change +EXPORT_SYMBOL_GPL net/wimax/wimax 0x78f535cb wimax_report_rfkill_hw +EXPORT_SYMBOL_GPL net/wimax/wimax 0x92ebdfdf wimax_dev_init +EXPORT_SYMBOL_GPL net/wimax/wimax 0x93900546 wimax_state_get +EXPORT_SYMBOL_GPL net/wimax/wimax 0xbbd8775f wimax_msg_alloc +EXPORT_SYMBOL_GPL net/wimax/wimax 0xc1f71879 wimax_msg_len +EXPORT_SYMBOL_GPL net/wimax/wimax 0xcaad9e5f wimax_msg +EXPORT_SYMBOL_GPL net/wimax/wimax 0xda2c40bb wimax_report_rfkill_sw +EXPORT_SYMBOL_GPL net/wimax/wimax 0xdc5fe666 wimax_msg_send +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x17a52804 cfg80211_wext_giwscan +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x5bcea89d cfg80211_wext_giwretry +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x8bd3964f cfg80211_wext_siwscan +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xb2f12f0d cfg80211_wext_giwmode +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xb6a501c6 cfg80211_wext_siwfrag +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xbfb3c5a0 cfg80211_vendor_cmd_reply +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xc254dabe cfg80211_wext_siwmode +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xca5f7919 cfg80211_wext_giwrts +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xd8323cd8 cfg80211_wext_giwname +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xe0718585 cfg80211_wext_giwrange +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xf29343bc cfg80211_wext_giwfrag +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xf6244a84 cfg80211_shutdown_all_interfaces +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xf8307075 cfg80211_wext_siwrts +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 0x3bf471d7 xfrm_calg_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x47b34e60 xfrm_ealg_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x60b73277 xfrm_aead_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x7a8ca627 xfrm_count_pfkey_enc_supported +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x834ba96d xfrm_aalg_get_byid +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xa6e66685 xfrm_aalg_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xaa762fe2 xfrm_aalg_get_byidx +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xad1b60ed xfrm_calg_get_byid +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xdbfc35c8 xfrm_ealg_get_byidx +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xdfea3a6d xfrm_ealg_get_byid +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0x06740b5e ipcomp_init_state +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0x2935dc18 ipcomp_output +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0xb6e71373 ipcomp_input +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0xd6135840 ipcomp_destroy +EXPORT_SYMBOL_GPL sound/core/seq/snd-seq-device 0x571f1c55 __snd_seq_driver_register +EXPORT_SYMBOL_GPL sound/core/seq/snd-seq-device 0xfaf86008 snd_seq_driver_unregister +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x02147fdf snd_hdac_get_connections +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x062a50ce snd_hdac_device_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x190d4a2c snd_hdac_query_supported_pcm +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x1b0ee932 snd_hdac_device_unregister +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x20467dd8 snd_hdac_stream_set_params +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x2920b299 snd_hdac_stream_reset +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x2f9a2e1e snd_hdac_dsp_trigger +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x32a4d17b snd_hdac_power_down +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x33bf13b3 snd_hdac_bus_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x371997ce snd_hdac_stream_stop +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x3983b2cb snd_hdac_stream_release +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x3d0e898f snd_hdac_read_parm_uncached +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x3df4ae90 snd_hdac_bus_exit_link_reset +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x42efe5c9 snd_hdac_bus_get_response +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x44305eb9 snd_hdac_regmap_write_raw +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x4a07b9a4 snd_hdac_refresh_widgets +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x4fd6a3cf snd_hdac_stream_cleanup +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x519b9d18 snd_hdac_stream_clear +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x536c8154 snd_hdac_regmap_read_raw +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x57526667 snd_hdac_bus_add_device +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x5e4ccc8c snd_hdac_get_sub_nodes +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x60e4c764 snd_hdac_stream_timecounter_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x766e583f _snd_hdac_read_parm +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x7b5c96e2 hdac_get_device_id +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x7d369618 snd_hdac_bus_handle_stream_irq +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x84adc4bd snd_hdac_make_cmd +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x8bc30fef snd_hdac_bus_enter_link_reset +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x90e6bf6f snd_hda_bus_type +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x922fe69a snd_hdac_exec_verb +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x925a0342 snd_hdac_bus_exec_verb_unlocked +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x92e8eb16 snd_hdac_bus_stop_cmd_io +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x953be492 snd_hdac_bus_alloc_stream_pages +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x95f29536 snd_hdac_stream_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x96ecfee5 snd_hdac_regmap_exit +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x9a8e1877 snd_array_free +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x9adb9808 snd_hdac_is_supported_format +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x9ecfd3e7 snd_hdac_regmap_update_raw +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xa373f653 snd_hdac_bus_exec_verb +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xa43dc501 snd_hdac_dsp_cleanup +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xabec3201 snd_hdac_stream_setup_periods +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xb4cb050e snd_hdac_power_up_pm +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xb7e64e92 snd_hdac_bus_init_chip +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xbe7dd7dc snd_array_new +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xc2911b7d snd_hdac_power_down_pm +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xc44ac832 snd_hdac_bus_remove_device +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xc5d5727c snd_hdac_dsp_prepare +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xca7a86f1 snd_hdac_stream_sync_trigger +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xca8b171c snd_hdac_stream_start +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xcecd17b9 snd_hdac_bus_free_stream_pages +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xd04cf225 snd_hdac_power_up +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xd3671268 snd_hdac_stream_assign +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xd571763b snd_hdac_link_power +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xd8955c73 snd_hdac_stream_sync +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xdb489ba2 snd_hdac_bus_queue_event +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xdb84feba snd_hdac_regmap_add_vendor_verb +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xdd6b8410 snd_hdac_regmap_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xdd9a804a snd_hdac_calc_stream_format +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xe42aea38 snd_hdac_bus_stop_chip +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xe4d4e689 snd_hdac_bus_init_cmd_io +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xe509d57f snd_hdac_device_register +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xee043346 snd_hdac_bus_exit +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xf2ee1462 snd_hdac_bus_update_rirb +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xf4a27f73 snd_hdac_read +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xf765a92e snd_hdac_stream_setup +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xf8f98e7a snd_hdac_device_exit +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xfe9f2d92 snd_hdac_bus_send_cmd +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xff7babee snd_hdac_override_parm +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x56e29274 snd_ak4113_reinit +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x6bb446a8 snd_ak4113_check_rate_and_errors +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x9c912131 snd_ak4113_external_rate +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0xd2f4f9db snd_ak4113_create +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0xe996d5aa snd_ak4113_reg_write +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0xfa112ad1 snd_ak4113_build +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x02670b3c snd_hda_sequence_write +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x03ef4107 azx_bus_init +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 0x08227935 snd_hda_multi_out_analog_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x08365096 snd_hda_apply_pincfgs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0a4170cb snd_hda_attach_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0a6c363b snd_hda_check_amp_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0ab381f2 azx_free_streams +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0e10121e __snd_hda_codec_cleanup_stream +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0e544e5f azx_init_streams +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0f3e953e snd_hda_codec_write +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0fbee8b2 azx_codec_configure +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x104bdc9d snd_hda_apply_fixup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x172bd98c snd_hda_shutup_pins +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1a40797a snd_hda_codec_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1b76f1da snd_hda_jack_add_kctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1c051cc5 hda_get_autocfg_input_label +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1d5680e0 snd_hda_mixer_amp_switch_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x20faa724 snd_hda_codec_new +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2267a590 snd_hda_add_verbs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2293156f snd_hda_mixer_bind_ctls_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x231bf9e7 snd_hda_bind_vol +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x23880d0c snd_hda_codec_load_dsp_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2cc0b807 __hda_codec_driver_register +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2d921279 snd_hda_get_int_hint +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2eb0e872 snd_hda_codec_update_widgets +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2f891c93 snd_hda_codec_pcm_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x32cc54a4 snd_hda_input_mux_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x35ff8b1f snd_hda_codec_amp_update +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x364e7ff8 snd_hda_bind_sw +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x375cacd5 snd_hda_input_mux_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x38ce402b azx_interrupt +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x391d0c49 snd_hda_mixer_amp_tlv +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3b3d370d snd_hda_mixer_amp_switch_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3fa92ccf snd_hda_add_imux_item +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x435ba2e0 snd_hda_codec_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x497f09f7 hda_codec_driver_unregister +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4a1ed198 snd_hda_jack_tbl_get_from_tag +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4b2ed7a5 azx_get_pos_lpib +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4c383ddd snd_hda_unlock_devices +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4cdd9ffa snd_hda_mixer_bind_ctls_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5e269c72 snd_hda_override_conn_list +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5fddef80 is_jack_detectable +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6858e6c5 snd_hda_create_dig_out_ctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6a452cb6 snd_hda_enable_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6ab62817 snd_hda_mixer_bind_ctls_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6e6c0ad7 snd_hda_jack_report_sync +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6ed71c55 snd_hda_codec_eapd_power_filter +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x73180a75 snd_hda_mixer_amp_switch_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7321cfb9 snd_hda_codec_get_pin_target +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x73ce65fa query_amp_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x75045ffa snd_hda_pick_pin_fixup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x760bb8ba snd_hda_spdif_ctls_assign +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x78fa0107 snd_hda_get_default_vref +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x792fe1dd snd_hda_check_amp_list_power +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7c0d03ad snd_hda_jack_detect_enable_callback +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7dc0a589 snd_hda_codec_load_dsp_trigger +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x82eb3ae7 snd_hda_mixer_amp_switch_put_beep +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x848f2b77 _snd_hda_set_pin_ctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x851618aa snd_hda_override_amp_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8525b1ea snd_hda_ctl_add +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8575a054 snd_hda_multi_out_dig_close +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x865416fc snd_hda_codec_amp_stereo +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8666dc88 snd_hda_mixer_amp_volume_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x87c6f4c3 snd_hda_set_vmaster_tlv +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x88107fc8 snd_hda_get_conn_list +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8d5d9205 snd_hda_codec_read +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8e787254 snd_hda_multi_out_dig_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8e80db79 snd_hda_jack_tbl_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8f3168de snd_hda_mixer_bind_switch_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x934324cf snd_hda_codec_amp_init +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9c674275 snd_hda_jack_detect_enable +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa00d6b65 snd_hda_mixer_amp_volume_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa0e1d201 snd_hda_jack_add_kctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa1881e93 snd_hda_jack_set_dirty_all +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa2827d76 snd_hda_get_jack_location +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa385e9c3 snd_hda_get_hint +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa6de03c1 __snd_hda_add_vmaster +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xaa011c5f snd_hda_multi_out_analog_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xac37bf64 snd_hda_spdif_out_of_nid +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xad1986c2 snd_hda_enum_helper_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb0ba78c0 snd_hda_codec_get_pincfg +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb435f6e8 snd_hda_jack_detect_state +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb6756684 azx_init_chip +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb6f84f21 azx_get_pos_posbuf +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb7b6e37b snd_hda_codec_amp_init_stereo +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xba453ba5 snd_hda_get_connections +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xbaf2232f snd_hda_add_new_ctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xbeb8f4aa snd_hda_apply_verbs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc22b4c62 snd_hda_add_vmaster_hook +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc2caf7a8 snd_hda_correct_pin_ctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc3a050d8 snd_hda_set_power_save +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc5e63d20 snd_hda_parse_pin_defcfg +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc652fd69 snd_hda_get_jack_connectivity +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc82cbb5d snd_hda_pick_fixup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xcb301b6e snd_hda_get_jack_type +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xcc798d29 snd_hda_find_mixer_ctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xccdd1fc2 snd_hda_jack_poll_all +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xce43e1f0 snd_hda_mixer_amp_volume_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xcf649e34 snd_hda_pin_sense +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd1a0efda snd_hda_create_spdif_share_sw +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd1ee0da6 snd_hda_create_spdif_in_ctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd280bb62 snd_hda_add_nid +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd4a594d6 snd_hda_codec_setup_stream +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd535580e snd_hda_codec_configure +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd7025f0f azx_get_position +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd9b3e537 azx_stop_chip +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd9c8c284 snd_hda_codec_set_power_to_all +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd9ff697b snd_hda_jack_set_gating_jack +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xdaee16a5 snd_hda_get_bool_hint +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xdf28cbae snd_hda_multi_out_analog_open +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe118de5d snd_pcm_2_1_chmaps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe118e410 snd_hda_mixer_amp_switch_get_beep +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe17fe24b snd_hda_mixer_bind_switch_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe419e0e4 snd_hda_multi_out_dig_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe5b3a0d3 azx_probe_codecs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe6c58a93 snd_hda_detach_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe70bcfca snd_hda_get_conn_index +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe82fd7f2 snd_hda_spdif_ctls_unassign +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xeda3a721 snd_print_pcm_bits +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xedbd409e snd_hda_codec_pcm_new +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xee6fcab6 snd_hda_jack_unsol_event +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf1f95da5 azx_stop_all_streams +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf2159992 snd_hda_codec_set_pincfg +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf296a9f2 snd_hda_load_patch +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf49d3d58 snd_hda_register_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf62c5768 snd_hda_get_pin_label +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf7b3fabe snd_hda_codec_load_dsp_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf7e2dc70 snd_hda_lock_devices +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf8ee760a snd_hda_mixer_bind_tlv +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xfa5e853f snd_hda_sync_vmaster_hook +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xfb0f1a61 snd_hda_codec_set_pin_target +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xff140e0a snd_hda_multi_out_dig_open +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x0b59045a snd_hda_gen_mic_autoswitch +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x123a5e84 snd_hda_activate_path +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x1a863e00 snd_hda_gen_init +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x1cfd3a05 snd_hda_get_path_idx +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x226dc9b4 snd_hda_gen_stream_pm +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x2b46e13f snd_hda_gen_parse_auto_config +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x3d249088 snd_hda_parse_nid_path +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x55d92594 snd_hda_gen_build_pcms +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x72b3ce57 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 0x825f62b3 snd_hda_gen_add_kctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x82b59fd4 snd_hda_gen_path_power_filter +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 0x88a2c16c snd_hda_gen_update_outputs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x8ba1448b snd_hda_gen_free +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x99aabcc8 snd_hda_gen_spec_init +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x9af4602f snd_hda_gen_check_power_status +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x9b79b3a9 snd_hda_add_new_path +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xadc39b4b snd_hda_gen_hp_automute +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xb4864d58 snd_hda_get_nid_path +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xc5563fc5 snd_hda_gen_line_automute +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xdd090fa1 snd_hda_gen_fix_pin_power +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xe0687ff7 snd_hda_gen_build_controls +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs4271 0x204eaa3b cs4271_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs4271 0x7d05786f cs4271_dt_ids +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs4271 0x855a0d53 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 0xe895c4d2 cs42l51_regmap +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42l51 0xe999c2f3 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 0xcd3794c9 cs42448_data +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0xcefb371e cs42xx8_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0xd168d6db cs42xx8_pm +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0xd935d013 cs42xx8_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-es8328 0x55294c41 es8328_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-es8328 0xced2d2b3 es8328_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-max98090 0x68ed4191 max98090_mic_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-max98095 0x71c7a36b max98095_jack_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm512x 0x0278e798 pcm512x_regmap +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm512x 0x458af745 pcm512x_pm_ops +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm512x 0xcd034492 pcm512x_remove +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm512x 0xd3fcb1ad pcm512x_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rl6231 0x70617a04 rl6231_get_clk_info +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rl6231 0x7f68b24d rl6231_pll_calc +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rl6231 0xdba4502f rl6231_calc_dmic_clk +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5645 0x35102b0e rt5645_set_jack_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5645 0xf98bb409 rt5645_sel_asrc_clk_src +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5677 0xce993be8 rt5677_sel_asrc_clk_src +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5677-spi 0x18fe5a9a rt5677_spi_burst_write +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5677-spi 0x24493c97 rt5677_spi_write +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0x1147c364 sigmadsp_reset +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0x197c11cd sigmadsp_setup +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0x744845e4 devm_sigmadsp_init +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0xafb67f24 sigmadsp_attach +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0xbec98e43 sigmadsp_restrict_params +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp-i2c 0x0731c7fe devm_sigmadsp_init_i2c +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-ssm2602 0x7db049c3 ssm2602_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-ssm2602 0xa6cb6937 ssm2602_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-tpa6130a2 0xd002f754 tpa6130a2_stereo_enable +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-tpa6130a2 0xef123a8e tpa6130a2_add_controls +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-ts3a227e 0x8210e299 ts3a227e_enable_jack_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0x0789e3cb wm_hubs_hpr_mux +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0x18aeeed5 wm_hubs_add_analogue_routes +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0x3e558020 wm_hubs_hpl_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 0x75029b50 wm_hubs_update_class_w +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 0x9a641792 wm_hubs_add_analogue_controls +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0xbd0fa552 wm_hubs_set_bias_level +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0xdeb7a1b9 wm_hubs_vmid_ena +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0xf223b4f8 wm_hubs_handle_analogue_pdata +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8804 0x6131e813 wm8804_remove +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8804 0x79aa0acd wm8804_pm +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8804 0x8dfe8ff3 wm8804_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8804 0xc3f802b8 wm8804_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8903 0x6bbac43e wm8903_mic_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8962 0x749bdf32 wm8962_mic_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8994 0x07d8ac0d wm8994_mic_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8994 0xc3f9568e wm8958_mic_detect +EXPORT_SYMBOL_GPL sound/soc/fsl/snd-soc-fsl-asrc 0x0d96c7e8 fsl_asrc_platform +EXPORT_SYMBOL_GPL sound/soc/fsl/snd-soc-fsl-asrc 0xc2848664 fsl_asrc_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/qcom/snd-soc-lpass-cpu 0x7b94b8fc asoc_qcom_lpass_cpu_dai_probe +EXPORT_SYMBOL_GPL sound/soc/qcom/snd-soc-lpass-cpu 0xe3e53e92 asoc_qcom_lpass_cpu_platform_remove +EXPORT_SYMBOL_GPL sound/soc/qcom/snd-soc-lpass-cpu 0xe5e6182d asoc_qcom_lpass_cpu_platform_probe +EXPORT_SYMBOL_GPL sound/soc/qcom/snd-soc-lpass-cpu 0xe7b8608a asoc_qcom_lpass_cpu_dai_ops +EXPORT_SYMBOL_GPL sound/soc/qcom/snd-soc-lpass-platform 0xc1d60b74 asoc_qcom_lpass_platform_register +EXPORT_SYMBOL_GPL sound/soc/samsung/snd-soc-idma 0xade84e1d idma_reg_addr_init +EXPORT_SYMBOL_GPL sound/soc/samsung/snd-soc-s3c-dma 0x686a142e samsung_asoc_init_dma_data +EXPORT_SYMBOL_GPL sound/soc/samsung/snd-soc-s3c-dma 0xf0ce996b samsung_asoc_dma_platform_register +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x0475f329 line6_pcm_release +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x0709d693 line6_suspend +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x118caa32 line6_resume +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x1755d289 line6_pcm_acquire +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x202a1b1b line6_midi_id +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x22922de8 line6_write_data +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x3a3c073d line6_version_request_async +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x4f1cc075 line6_init_pcm +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x5121cc1c line6_read_data +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x57ea15dd line6_send_raw_message_async +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x580a395c line6_read_serial_number +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x82ba5d6c line6_disconnect +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x86856a9d line6_probe +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x8ec973cd line6_start_timer +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x8f22bcb4 line6_alloc_sysex_buffer +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xa6d3fbbc line6_init_midi +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xe2584d90 line6_send_sysex_message +EXPORT_SYMBOL_GPL vmlinux 0x00062690 snd_soc_dapm_nc_pin +EXPORT_SYMBOL_GPL vmlinux 0x000756f3 ahci_platform_resume_host +EXPORT_SYMBOL_GPL vmlinux 0x00632780 work_busy +EXPORT_SYMBOL_GPL vmlinux 0x006820b4 pci_write_msi_msg +EXPORT_SYMBOL_GPL vmlinux 0x007c208b xhci_init_driver +EXPORT_SYMBOL_GPL vmlinux 0x008452bb kvm_clear_guest_page +EXPORT_SYMBOL_GPL vmlinux 0x009304b6 ata_tf_from_fis +EXPORT_SYMBOL_GPL vmlinux 0x00a8051a rtc_initialize_alarm +EXPORT_SYMBOL_GPL vmlinux 0x00abf376 virtqueue_enable_cb_prepare +EXPORT_SYMBOL_GPL vmlinux 0x00b64ba0 call_filter_check_discard +EXPORT_SYMBOL_GPL vmlinux 0x00ce174a __blkg_prfill_rwstat +EXPORT_SYMBOL_GPL vmlinux 0x00d01bb1 snd_soc_card_jack_new +EXPORT_SYMBOL_GPL vmlinux 0x00ebcb5d ata_id_string +EXPORT_SYMBOL_GPL vmlinux 0x00f44b79 usb_hcd_end_port_resume +EXPORT_SYMBOL_GPL vmlinux 0x00fd4b5c regmap_init +EXPORT_SYMBOL_GPL vmlinux 0x01010c6d klist_add_before +EXPORT_SYMBOL_GPL vmlinux 0x011cf028 regulator_suspend_finish +EXPORT_SYMBOL_GPL vmlinux 0x012cd720 power_supply_set_property +EXPORT_SYMBOL_GPL vmlinux 0x012e7619 mtd_read_oob +EXPORT_SYMBOL_GPL vmlinux 0x0135fa63 inet6_sk_rebuild_header +EXPORT_SYMBOL_GPL vmlinux 0x0138c5a8 ahci_kick_engine +EXPORT_SYMBOL_GPL vmlinux 0x01394917 dm_noflush_suspending +EXPORT_SYMBOL_GPL vmlinux 0x0174523b attribute_container_classdev_to_container +EXPORT_SYMBOL_GPL vmlinux 0x017e4187 cpuidle_register_device +EXPORT_SYMBOL_GPL vmlinux 0x018200d7 phy_pm_runtime_allow +EXPORT_SYMBOL_GPL vmlinux 0x01872b35 blk_mq_register_disk +EXPORT_SYMBOL_GPL vmlinux 0x018edcce cpdma_ctlr_dump +EXPORT_SYMBOL_GPL vmlinux 0x01985403 da903x_reads +EXPORT_SYMBOL_GPL vmlinux 0x01c6cb0c cpu_cluster_pm_enter +EXPORT_SYMBOL_GPL vmlinux 0x01ce7e14 cpsw_ale_create +EXPORT_SYMBOL_GPL vmlinux 0x01d36292 tty_port_tty_wakeup +EXPORT_SYMBOL_GPL vmlinux 0x01e1a8de kgdb_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x01e625b9 tty_set_termios +EXPORT_SYMBOL_GPL vmlinux 0x01f02c18 wm8350_block_write +EXPORT_SYMBOL_GPL vmlinux 0x01f764f1 ata_cable_sata +EXPORT_SYMBOL_GPL vmlinux 0x01fd6f3c reservation_object_get_fences_rcu +EXPORT_SYMBOL_GPL vmlinux 0x021855d9 phy_power_off +EXPORT_SYMBOL_GPL vmlinux 0x022303d4 snd_soc_register_component +EXPORT_SYMBOL_GPL vmlinux 0x023350b9 led_trigger_event +EXPORT_SYMBOL_GPL vmlinux 0x02915965 ip6_redirect +EXPORT_SYMBOL_GPL vmlinux 0x02a5154d powercap_register_zone +EXPORT_SYMBOL_GPL vmlinux 0x02acabbb snd_soc_set_ac97_ops +EXPORT_SYMBOL_GPL vmlinux 0x02c22f6a da9055_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0x02d1ae8e sdio_f0_writeb +EXPORT_SYMBOL_GPL vmlinux 0x02fea2ae rcu_note_context_switch +EXPORT_SYMBOL_GPL vmlinux 0x03049f7f max_gen_clk_remove +EXPORT_SYMBOL_GPL vmlinux 0x03064051 snd_soc_bytes_put +EXPORT_SYMBOL_GPL vmlinux 0x0321cdbf of_alias_get_highest_id +EXPORT_SYMBOL_GPL vmlinux 0x032375b0 hwrng_unregister +EXPORT_SYMBOL_GPL vmlinux 0x033832c7 usb_amd_hang_symptom_quirk +EXPORT_SYMBOL_GPL vmlinux 0x034138ab cpsw_ale_start +EXPORT_SYMBOL_GPL vmlinux 0x0343bdf1 __i2c_board_list +EXPORT_SYMBOL_GPL vmlinux 0x0345555a ioremap_page_range +EXPORT_SYMBOL_GPL vmlinux 0x03484af6 ahci_shost_attrs +EXPORT_SYMBOL_GPL vmlinux 0x03544041 usb_submit_urb +EXPORT_SYMBOL_GPL vmlinux 0x037ce39d tcp_unregister_congestion_control +EXPORT_SYMBOL_GPL vmlinux 0x039fd867 trace_clock_global +EXPORT_SYMBOL_GPL vmlinux 0x03e3686c ata_timing_cycle2mode +EXPORT_SYMBOL_GPL vmlinux 0x03ec4f93 snd_soc_platform_write +EXPORT_SYMBOL_GPL vmlinux 0x0402b504 __percpu_ida_init +EXPORT_SYMBOL_GPL vmlinux 0x0402cbbf preempt_notifier_inc +EXPORT_SYMBOL_GPL vmlinux 0x041ca8c3 __rtnl_link_register +EXPORT_SYMBOL_GPL vmlinux 0x0420e21c ata_port_freeze +EXPORT_SYMBOL_GPL vmlinux 0x042da606 devm_phy_get +EXPORT_SYMBOL_GPL vmlinux 0x043c18aa crypto_alloc_ahash +EXPORT_SYMBOL_GPL vmlinux 0x0465a073 regmap_reg_in_ranges +EXPORT_SYMBOL_GPL vmlinux 0x0481f5b4 register_ftrace_function +EXPORT_SYMBOL_GPL vmlinux 0x048b5f8d twl4030_audio_get_mclk +EXPORT_SYMBOL_GPL vmlinux 0x0499b665 rhashtable_free_and_destroy +EXPORT_SYMBOL_GPL vmlinux 0x0499deb0 __clk_get_rate +EXPORT_SYMBOL_GPL vmlinux 0x049af9bf dt_init_idle_driver +EXPORT_SYMBOL_GPL vmlinux 0x04b2c777 of_prop_next_string +EXPORT_SYMBOL_GPL vmlinux 0x04c4f603 mpi_get_buffer +EXPORT_SYMBOL_GPL vmlinux 0x04cd7d37 ata_sff_tf_load +EXPORT_SYMBOL_GPL vmlinux 0x04e1b99f snd_pcm_std_chmaps +EXPORT_SYMBOL_GPL vmlinux 0x04ea5cdf __tracepoint_rpm_idle +EXPORT_SYMBOL_GPL vmlinux 0x04efde27 crypto_spawn_tfm2 +EXPORT_SYMBOL_GPL vmlinux 0x04f4bd8d percpu_ref_exit +EXPORT_SYMBOL_GPL vmlinux 0x05234ba3 pci_rescan_bus +EXPORT_SYMBOL_GPL vmlinux 0x054e550b kernel_halt +EXPORT_SYMBOL_GPL vmlinux 0x05542702 leds_list_lock +EXPORT_SYMBOL_GPL vmlinux 0x0562d503 of_get_regulator_init_data +EXPORT_SYMBOL_GPL vmlinux 0x056adc76 fat_alloc_new_dir +EXPORT_SYMBOL_GPL vmlinux 0x058b582a vt_get_leds +EXPORT_SYMBOL_GPL vmlinux 0x058ca068 __pm_runtime_use_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0x05efee93 lp8788_read_byte +EXPORT_SYMBOL_GPL vmlinux 0x05fc5422 skb_segment +EXPORT_SYMBOL_GPL vmlinux 0x0600ed87 snd_soc_component_async_complete +EXPORT_SYMBOL_GPL vmlinux 0x0609eca0 device_find_child +EXPORT_SYMBOL_GPL vmlinux 0x061e6f3f pci_try_reset_function +EXPORT_SYMBOL_GPL vmlinux 0x0626da5f od_unregister_powersave_bias_handler +EXPORT_SYMBOL_GPL vmlinux 0x063b935e ablkcipher_walk_phys +EXPORT_SYMBOL_GPL vmlinux 0x06438115 tcp_orphan_count +EXPORT_SYMBOL_GPL vmlinux 0x064db9a5 mark_mounts_for_expiry +EXPORT_SYMBOL_GPL vmlinux 0x067a4035 tps6586x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x06a7e3f5 uhci_check_and_reset_hc +EXPORT_SYMBOL_GPL vmlinux 0x06bf2f5c vring_transport_features +EXPORT_SYMBOL_GPL vmlinux 0x06ce347b dev_pm_qos_expose_latency_limit +EXPORT_SYMBOL_GPL vmlinux 0x06d549e6 pinctrl_free_gpio +EXPORT_SYMBOL_GPL vmlinux 0x06d7b778 crypto_alg_mod_lookup +EXPORT_SYMBOL_GPL vmlinux 0x06dc476a nand_release +EXPORT_SYMBOL_GPL vmlinux 0x06f9787e device_del +EXPORT_SYMBOL_GPL vmlinux 0x07032f9e trace_seq_to_user +EXPORT_SYMBOL_GPL vmlinux 0x071732b4 unregister_pernet_device +EXPORT_SYMBOL_GPL vmlinux 0x072ff473 ata_msleep +EXPORT_SYMBOL_GPL vmlinux 0x0739f429 x509_check_signature +EXPORT_SYMBOL_GPL vmlinux 0x07473f88 ip_build_and_send_pkt +EXPORT_SYMBOL_GPL vmlinux 0x0749b364 pm_generic_poweroff_late +EXPORT_SYMBOL_GPL vmlinux 0x075ad949 devm_regmap_init_vexpress_config +EXPORT_SYMBOL_GPL vmlinux 0x0762403c edac_put_sysfs_subsys +EXPORT_SYMBOL_GPL vmlinux 0x07704b3d xhci_run +EXPORT_SYMBOL_GPL vmlinux 0x0785e372 regulator_get_voltage_sel_regmap +EXPORT_SYMBOL_GPL vmlinux 0x07b21f85 kdb_get_kbd_char +EXPORT_SYMBOL_GPL vmlinux 0x07b52e38 rtnl_unregister +EXPORT_SYMBOL_GPL vmlinux 0x07ca54e2 snd_soc_put_volsw_range +EXPORT_SYMBOL_GPL vmlinux 0x07d94d68 trace_define_field +EXPORT_SYMBOL_GPL vmlinux 0x08156773 name_to_dev_t +EXPORT_SYMBOL_GPL vmlinux 0x081cfa7e rtc_set_time +EXPORT_SYMBOL_GPL vmlinux 0x082737b0 __skb_tstamp_tx +EXPORT_SYMBOL_GPL vmlinux 0x0835079b kernfs_find_and_get_ns +EXPORT_SYMBOL_GPL vmlinux 0x08422331 snd_soc_dpcm_be_can_update +EXPORT_SYMBOL_GPL vmlinux 0x087a82a9 aead_geniv_init +EXPORT_SYMBOL_GPL vmlinux 0x088867b8 of_property_read_u64 +EXPORT_SYMBOL_GPL vmlinux 0x0892ae1a musb_writew +EXPORT_SYMBOL_GPL vmlinux 0x08d0bea5 pcie_bus_configure_settings +EXPORT_SYMBOL_GPL vmlinux 0x08d4115f fib_rules_register +EXPORT_SYMBOL_GPL vmlinux 0x08e6a66f pci_load_saved_state +EXPORT_SYMBOL_GPL vmlinux 0x090a51e0 ip6_append_data +EXPORT_SYMBOL_GPL vmlinux 0x090ff2fd get_task_comm +EXPORT_SYMBOL_GPL vmlinux 0x091eb9b4 round_jiffies +EXPORT_SYMBOL_GPL vmlinux 0x093802be fwnode_property_read_u16_array +EXPORT_SYMBOL_GPL vmlinux 0x09437748 ring_buffer_read_events_cpu +EXPORT_SYMBOL_GPL vmlinux 0x09469482 kfree_call_rcu +EXPORT_SYMBOL_GPL vmlinux 0x094ca6fa driver_find +EXPORT_SYMBOL_GPL vmlinux 0x0952af60 fb_videomode_from_videomode +EXPORT_SYMBOL_GPL vmlinux 0x0956d317 dma_buf_mmap +EXPORT_SYMBOL_GPL vmlinux 0x0958637c list_lru_add +EXPORT_SYMBOL_GPL vmlinux 0x095869c4 crypto_unregister_instance +EXPORT_SYMBOL_GPL vmlinux 0x09959f66 cpufreq_frequency_table_target +EXPORT_SYMBOL_GPL vmlinux 0x099f8353 regulator_can_change_voltage +EXPORT_SYMBOL_GPL vmlinux 0x09e913c1 snd_pcm_alt_chmaps +EXPORT_SYMBOL_GPL vmlinux 0x09f881e3 cpufreq_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x0a0677aa fb_deferred_io_cleanup +EXPORT_SYMBOL_GPL vmlinux 0x0a33272c xfrm_audit_state_notfound_simple +EXPORT_SYMBOL_GPL vmlinux 0x0a36241e usb_queue_reset_device +EXPORT_SYMBOL_GPL vmlinux 0x0a372672 __netpoll_cleanup +EXPORT_SYMBOL_GPL vmlinux 0x0a5e6857 adp5520_write +EXPORT_SYMBOL_GPL vmlinux 0x0a762315 pci_user_read_config_byte +EXPORT_SYMBOL_GPL vmlinux 0x0a806f72 get_current_tty +EXPORT_SYMBOL_GPL vmlinux 0x0a84ae6e modify_user_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x0a8a79f8 usb_add_gadget_udc_release +EXPORT_SYMBOL_GPL vmlinux 0x0a9d12bb ehci_setup +EXPORT_SYMBOL_GPL vmlinux 0x0ac0e02e add_disk_randomness +EXPORT_SYMBOL_GPL vmlinux 0x0ac343a2 set_primary_fwnode +EXPORT_SYMBOL_GPL vmlinux 0x0ac54ae7 snd_dmaengine_pcm_unregister +EXPORT_SYMBOL_GPL vmlinux 0x0ac72c34 skb_to_sgvec +EXPORT_SYMBOL_GPL vmlinux 0x0ae7e4f6 crypto_shash_setkey +EXPORT_SYMBOL_GPL vmlinux 0x0afd4610 zs_malloc +EXPORT_SYMBOL_GPL vmlinux 0x0b07abe2 unshare_fs_struct +EXPORT_SYMBOL_GPL vmlinux 0x0b152f89 arm_iommu_detach_device +EXPORT_SYMBOL_GPL vmlinux 0x0b37f6e5 usb_hcd_pci_pm_ops +EXPORT_SYMBOL_GPL vmlinux 0x0b4078e5 snd_soc_codec_set_pll +EXPORT_SYMBOL_GPL vmlinux 0x0b6ea947 single_open_net +EXPORT_SYMBOL_GPL vmlinux 0x0b7d3bbf pingv6_ops +EXPORT_SYMBOL_GPL vmlinux 0x0b86a3f5 max_gen_clk_ops +EXPORT_SYMBOL_GPL vmlinux 0x0b8e8bb3 debugfs_create_u32_array +EXPORT_SYMBOL_GPL vmlinux 0x0b962f74 of_dma_get_range +EXPORT_SYMBOL_GPL vmlinux 0x0ba7b830 usb_block_urb +EXPORT_SYMBOL_GPL vmlinux 0x0bbae511 return_address +EXPORT_SYMBOL_GPL vmlinux 0x0bc3d250 snd_soc_dapm_add_routes +EXPORT_SYMBOL_GPL vmlinux 0x0bc963cf pci_bus_resource_n +EXPORT_SYMBOL_GPL vmlinux 0x0bdaf820 cgroup_attach_task_all +EXPORT_SYMBOL_GPL vmlinux 0x0be42ec7 tpm2_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x0bf4b881 reservation_object_wait_timeout_rcu +EXPORT_SYMBOL_GPL vmlinux 0x0bfa3a19 rcu_idle_exit +EXPORT_SYMBOL_GPL vmlinux 0x0c0c015e ring_buffer_swap_cpu +EXPORT_SYMBOL_GPL vmlinux 0x0c190b71 spi_unregister_master +EXPORT_SYMBOL_GPL vmlinux 0x0c24b50a __inet_lookup_established +EXPORT_SYMBOL_GPL vmlinux 0x0c2cdbf1 synchronize_sched +EXPORT_SYMBOL_GPL vmlinux 0x0c3254b9 locks_alloc_lock +EXPORT_SYMBOL_GPL vmlinux 0x0c3a8190 cpdma_ctlr_create +EXPORT_SYMBOL_GPL vmlinux 0x0c3e152f mount_mtd +EXPORT_SYMBOL_GPL vmlinux 0x0c449ce5 powercap_register_control_type +EXPORT_SYMBOL_GPL vmlinux 0x0c54f1bb ahash_register_instance +EXPORT_SYMBOL_GPL vmlinux 0x0c6fdb6a gpiod_put +EXPORT_SYMBOL_GPL vmlinux 0x0c7464b3 irq_domain_remove +EXPORT_SYMBOL_GPL vmlinux 0x0c755edd each_symbol_section +EXPORT_SYMBOL_GPL vmlinux 0x0c78079a usb_add_gadget_udc +EXPORT_SYMBOL_GPL vmlinux 0x0c84588b blk_mq_free_request +EXPORT_SYMBOL_GPL vmlinux 0x0c8ca59e attribute_container_register +EXPORT_SYMBOL_GPL vmlinux 0x0c949e06 ata_scsi_queuecmd +EXPORT_SYMBOL_GPL vmlinux 0x0ca523f8 pci_sriov_set_totalvfs +EXPORT_SYMBOL_GPL vmlinux 0x0cc1e40f crypto_it_tab +EXPORT_SYMBOL_GPL vmlinux 0x0cc5b744 tty_wakeup +EXPORT_SYMBOL_GPL vmlinux 0x0cd25323 fb_bl_default_curve +EXPORT_SYMBOL_GPL vmlinux 0x0cd32675 pci_bus_max_busnr +EXPORT_SYMBOL_GPL vmlinux 0x0cd8e979 __mmu_notifier_invalidate_range_start +EXPORT_SYMBOL_GPL vmlinux 0x0ce80133 virtqueue_kick_prepare +EXPORT_SYMBOL_GPL vmlinux 0x0ce9a6f3 scsi_autopm_put_device +EXPORT_SYMBOL_GPL vmlinux 0x0cf4b7dd bpf_prog_create +EXPORT_SYMBOL_GPL vmlinux 0x0cf6ecc9 user_describe +EXPORT_SYMBOL_GPL vmlinux 0x0d05d107 do_unbind_con_driver +EXPORT_SYMBOL_GPL vmlinux 0x0d12e020 sata_scr_valid +EXPORT_SYMBOL_GPL vmlinux 0x0d1a2166 pci_add_dynid +EXPORT_SYMBOL_GPL vmlinux 0x0d1b68ed tpm_pm_suspend +EXPORT_SYMBOL_GPL vmlinux 0x0d2260e3 md_is_badblock +EXPORT_SYMBOL_GPL vmlinux 0x0d39ba0a device_register +EXPORT_SYMBOL_GPL vmlinux 0x0d4961de nf_log_buf_open +EXPORT_SYMBOL_GPL vmlinux 0x0d66ca64 ata_sas_port_destroy +EXPORT_SYMBOL_GPL vmlinux 0x0d7768dc bus_unregister +EXPORT_SYMBOL_GPL vmlinux 0x0d7d4d70 rcu_batches_completed +EXPORT_SYMBOL_GPL vmlinux 0x0d86d5b6 alarmtimer_get_rtcdev +EXPORT_SYMBOL_GPL vmlinux 0x0d9e6ed2 regmap_fields_read +EXPORT_SYMBOL_GPL vmlinux 0x0ddb1cd7 llist_reverse_order +EXPORT_SYMBOL_GPL vmlinux 0x0ddba570 param_ops_bool_enable_only +EXPORT_SYMBOL_GPL vmlinux 0x0e0e354d regmap_add_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0x0e1ef47a md_stop +EXPORT_SYMBOL_GPL vmlinux 0x0e3744ef unregister_ftrace_function +EXPORT_SYMBOL_GPL vmlinux 0x0e607b0a omap_dma_filter_fn +EXPORT_SYMBOL_GPL vmlinux 0x0e64454d device_remove_file_self +EXPORT_SYMBOL_GPL vmlinux 0x0e84ef6a irq_alloc_domain_generic_chips +EXPORT_SYMBOL_GPL vmlinux 0x0ece5d70 sysfs_rename_link_ns +EXPORT_SYMBOL_GPL vmlinux 0x0ed81c70 seq_open_net +EXPORT_SYMBOL_GPL vmlinux 0x0ee0dcd7 regulator_bulk_enable +EXPORT_SYMBOL_GPL vmlinux 0x0ee8221a ehci_suspend +EXPORT_SYMBOL_GPL vmlinux 0x0f09d7b1 sdhci_resume_host +EXPORT_SYMBOL_GPL vmlinux 0x0f125a7d tc3589x_block_write +EXPORT_SYMBOL_GPL vmlinux 0x0f127446 ata_pci_device_do_resume +EXPORT_SYMBOL_GPL vmlinux 0x0f336d7f rcutorture_get_gp_data +EXPORT_SYMBOL_GPL vmlinux 0x0f50d8c1 usb_hcd_pci_probe +EXPORT_SYMBOL_GPL vmlinux 0x0f65a719 regcache_sync_region +EXPORT_SYMBOL_GPL vmlinux 0x0f745e86 put_device +EXPORT_SYMBOL_GPL vmlinux 0x0f751aea input_event_from_user +EXPORT_SYMBOL_GPL vmlinux 0x0f8e4ab8 regulator_get_voltage +EXPORT_SYMBOL_GPL vmlinux 0x0fa52e92 gpiod_get_raw_value +EXPORT_SYMBOL_GPL vmlinux 0x0fa79402 trace_event_buffer_reserve +EXPORT_SYMBOL_GPL vmlinux 0x0faf63c5 inet_csk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x0fb34798 tps6586x_read +EXPORT_SYMBOL_GPL vmlinux 0x0fc7f04d inode_congested +EXPORT_SYMBOL_GPL vmlinux 0x0fce160a pm_runtime_set_autosuspend_delay +EXPORT_SYMBOL_GPL vmlinux 0x0fd9ebc3 to_nd_desc +EXPORT_SYMBOL_GPL vmlinux 0x0fdbef8f thermal_notify_framework +EXPORT_SYMBOL_GPL vmlinux 0x0fe414cd snd_soc_poweroff +EXPORT_SYMBOL_GPL vmlinux 0x0ff9af09 cpdma_ctlr_int_ctrl +EXPORT_SYMBOL_GPL vmlinux 0x0ffae3c7 ata_sas_queuecmd +EXPORT_SYMBOL_GPL vmlinux 0x0ffe47c7 ipv6_proxy_select_ident +EXPORT_SYMBOL_GPL vmlinux 0x10138352 tracing_on +EXPORT_SYMBOL_GPL vmlinux 0x10181660 snd_dmaengine_pcm_register +EXPORT_SYMBOL_GPL vmlinux 0x102e7031 omap_dm_timer_write_status +EXPORT_SYMBOL_GPL vmlinux 0x1073f2d6 register_kprobe +EXPORT_SYMBOL_GPL vmlinux 0x1082ff30 snd_soc_info_volsw_sx +EXPORT_SYMBOL_GPL vmlinux 0x10b20422 of_cpufreq_cooling_register +EXPORT_SYMBOL_GPL vmlinux 0x10d2fb58 blkdev_read_iter +EXPORT_SYMBOL_GPL vmlinux 0x10d8def2 usb_set_configuration +EXPORT_SYMBOL_GPL vmlinux 0x10dbc7fe devm_usb_get_phy_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0x10ea457c md_rdev_init +EXPORT_SYMBOL_GPL vmlinux 0x10ecc52c usb_amd_quirk_pll_enable +EXPORT_SYMBOL_GPL vmlinux 0x10ef70d2 gfn_to_memslot +EXPORT_SYMBOL_GPL vmlinux 0x10f9587e trace_event_buffer_commit +EXPORT_SYMBOL_GPL vmlinux 0x111d7c76 unregister_wide_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x113d87cb dequeue_signal +EXPORT_SYMBOL_GPL vmlinux 0x1172ce54 rtc_ktime_to_tm +EXPORT_SYMBOL_GPL vmlinux 0x1181f3b7 ata_sas_port_init +EXPORT_SYMBOL_GPL vmlinux 0x118f66dd sprint_OID +EXPORT_SYMBOL_GPL vmlinux 0x11a2e0ea pci_sriov_get_totalvfs +EXPORT_SYMBOL_GPL vmlinux 0x11a81e75 ata_sff_softreset +EXPORT_SYMBOL_GPL vmlinux 0x11d7589e add_hwgenerator_randomness +EXPORT_SYMBOL_GPL vmlinux 0x11d90b58 __tracepoint_wbc_writepage +EXPORT_SYMBOL_GPL vmlinux 0x1203eaf6 blk_mq_free_hctx_request +EXPORT_SYMBOL_GPL vmlinux 0x120ea9c9 dma_wait_for_async_tx +EXPORT_SYMBOL_GPL vmlinux 0x121d958a unregister_die_notifier +EXPORT_SYMBOL_GPL vmlinux 0x122d43aa snd_soc_dapm_get_volsw +EXPORT_SYMBOL_GPL vmlinux 0x123311ff md_allow_write +EXPORT_SYMBOL_GPL vmlinux 0x124a1320 regulator_bulk_get +EXPORT_SYMBOL_GPL vmlinux 0x124f2056 crypto_get_attr_type +EXPORT_SYMBOL_GPL vmlinux 0x125863f0 crypto_alloc_akcipher +EXPORT_SYMBOL_GPL vmlinux 0x125c59aa driver_find_device +EXPORT_SYMBOL_GPL vmlinux 0x125d89cb usb_poison_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x1268f357 resume_device_irqs +EXPORT_SYMBOL_GPL vmlinux 0x1291b119 ata_sas_slave_configure +EXPORT_SYMBOL_GPL vmlinux 0x12b5193c fwnode_handle_put +EXPORT_SYMBOL_GPL vmlinux 0x12be40de pinctrl_dev_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x12c9aadd perf_event_create_kernel_counter +EXPORT_SYMBOL_GPL vmlinux 0x12cd61db pinctrl_put +EXPORT_SYMBOL_GPL vmlinux 0x12e86e40 snd_pcm_stream_unlock_irqrestore +EXPORT_SYMBOL_GPL vmlinux 0x131a5ed7 regmap_del_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0x131d9e8f shash_ahash_finup +EXPORT_SYMBOL_GPL vmlinux 0x131db64a system_long_wq +EXPORT_SYMBOL_GPL vmlinux 0x131f0c71 virtio_break_device +EXPORT_SYMBOL_GPL vmlinux 0x1321db66 ipv4_sk_redirect +EXPORT_SYMBOL_GPL vmlinux 0x1331c461 omap_dm_timer_get_fclk +EXPORT_SYMBOL_GPL vmlinux 0x133b50b3 snd_soc_limit_volume +EXPORT_SYMBOL_GPL vmlinux 0x13541047 arizona_free_irq +EXPORT_SYMBOL_GPL vmlinux 0x136209db power_supply_reg_notifier +EXPORT_SYMBOL_GPL vmlinux 0x1373a10c list_lru_walk_node +EXPORT_SYMBOL_GPL vmlinux 0x1373bbf8 dma_buf_put +EXPORT_SYMBOL_GPL vmlinux 0x138b24cc usb_create_shared_hcd +EXPORT_SYMBOL_GPL vmlinux 0x138fda76 __platform_driver_register +EXPORT_SYMBOL_GPL vmlinux 0x139f739e bus_for_each_drv +EXPORT_SYMBOL_GPL vmlinux 0x13ad647f scatterwalk_bytes_sglen +EXPORT_SYMBOL_GPL vmlinux 0x13b89dee pinctrl_request_gpio +EXPORT_SYMBOL_GPL vmlinux 0x13d23ff5 __audit_inode_child +EXPORT_SYMBOL_GPL vmlinux 0x13d62b46 skb_scrub_packet +EXPORT_SYMBOL_GPL vmlinux 0x13f8ab3c crypto_register_pcomp +EXPORT_SYMBOL_GPL vmlinux 0x140895e1 omap_dm_timer_set_pwm +EXPORT_SYMBOL_GPL vmlinux 0x1414b46b tty_port_register_device +EXPORT_SYMBOL_GPL vmlinux 0x143bf79a pci_check_and_unmask_intx +EXPORT_SYMBOL_GPL vmlinux 0x1440cbc9 irq_find_mapping +EXPORT_SYMBOL_GPL vmlinux 0x1446cd5b regmap_write +EXPORT_SYMBOL_GPL vmlinux 0x1447b2b2 hvc_instantiate +EXPORT_SYMBOL_GPL vmlinux 0x1451d5e6 pm_runtime_barrier +EXPORT_SYMBOL_GPL vmlinux 0x1456d75b swiotlb_map_page +EXPORT_SYMBOL_GPL vmlinux 0x145c0d81 vga_default_device +EXPORT_SYMBOL_GPL vmlinux 0x1477827b bus_get_device_klist +EXPORT_SYMBOL_GPL vmlinux 0x149391c8 input_ff_upload +EXPORT_SYMBOL_GPL vmlinux 0x149745d8 pci_reset_pri +EXPORT_SYMBOL_GPL vmlinux 0x14a4c58f of_genpd_del_provider +EXPORT_SYMBOL_GPL vmlinux 0x14baf13e mtd_get_device_size +EXPORT_SYMBOL_GPL vmlinux 0x14e1b015 crypto_ahash_setkey +EXPORT_SYMBOL_GPL vmlinux 0x14e577bc kvm_vcpu_write_guest +EXPORT_SYMBOL_GPL vmlinux 0x150bf295 of_usb_host_tpl_support +EXPORT_SYMBOL_GPL vmlinux 0x150c9fba of_get_videomode +EXPORT_SYMBOL_GPL vmlinux 0x1514e50c snd_soc_pm_ops +EXPORT_SYMBOL_GPL vmlinux 0x15150048 da9052_enable_irq +EXPORT_SYMBOL_GPL vmlinux 0x1517dc48 power_supply_external_power_changed +EXPORT_SYMBOL_GPL vmlinux 0x153579c5 wbc_account_io +EXPORT_SYMBOL_GPL vmlinux 0x1537c0b6 ata_dev_set_feature +EXPORT_SYMBOL_GPL vmlinux 0x15892417 async_synchronize_cookie +EXPORT_SYMBOL_GPL vmlinux 0x159bf31b perf_event_read_value +EXPORT_SYMBOL_GPL vmlinux 0x159d83a5 regulator_unregister +EXPORT_SYMBOL_GPL vmlinux 0x15a003d5 regulator_list_voltage_linear +EXPORT_SYMBOL_GPL vmlinux 0x15bd8a9e usb_hub_claim_port +EXPORT_SYMBOL_GPL vmlinux 0x15c23202 extcon_get_cable_state +EXPORT_SYMBOL_GPL vmlinux 0x15c4fef3 __put_net +EXPORT_SYMBOL_GPL vmlinux 0x15e18cf1 _submit_bh +EXPORT_SYMBOL_GPL vmlinux 0x15e93f7d sk_setup_caps +EXPORT_SYMBOL_GPL vmlinux 0x15ebe74f __tracepoint_mc_event +EXPORT_SYMBOL_GPL vmlinux 0x15ed7d53 omap_iommu_save_ctx +EXPORT_SYMBOL_GPL vmlinux 0x15efd446 rcu_batches_started +EXPORT_SYMBOL_GPL vmlinux 0x16000a3c dm_device_name +EXPORT_SYMBOL_GPL vmlinux 0x161a10e5 mtd_block_markbad +EXPORT_SYMBOL_GPL vmlinux 0x163bdc92 sdio_f0_readb +EXPORT_SYMBOL_GPL vmlinux 0x16458c7f bus_register +EXPORT_SYMBOL_GPL vmlinux 0x164dd6ca snd_soc_unregister_component +EXPORT_SYMBOL_GPL vmlinux 0x1650bf27 rcutorture_record_progress +EXPORT_SYMBOL_GPL vmlinux 0x1651b5d5 cpufreq_frequency_table_verify +EXPORT_SYMBOL_GPL vmlinux 0x1667db02 phy_create_lookup +EXPORT_SYMBOL_GPL vmlinux 0x1679329c of_get_nand_ecc_mode +EXPORT_SYMBOL_GPL vmlinux 0x167c1b2b nf_unregister_afinfo +EXPORT_SYMBOL_GPL vmlinux 0x16f3ff58 mmc_get_ext_csd +EXPORT_SYMBOL_GPL vmlinux 0x17099547 trace_event_reg +EXPORT_SYMBOL_GPL vmlinux 0x1717a05d omap_get_plat_info +EXPORT_SYMBOL_GPL vmlinux 0x17390ff7 snd_soc_component_read +EXPORT_SYMBOL_GPL vmlinux 0x173a2e72 of_regulator_match +EXPORT_SYMBOL_GPL vmlinux 0x1753a32f hash_digest_size +EXPORT_SYMBOL_GPL vmlinux 0x17638b5a pci_reset_bridge_secondary_bus +EXPORT_SYMBOL_GPL vmlinux 0x17671a52 devm_regulator_unregister +EXPORT_SYMBOL_GPL vmlinux 0x17766018 usb_hc_died +EXPORT_SYMBOL_GPL vmlinux 0x177c338d twl_get_version +EXPORT_SYMBOL_GPL vmlinux 0x17bbf109 of_clk_get_parent_name +EXPORT_SYMBOL_GPL vmlinux 0x18372af5 skb_gso_transport_seglen +EXPORT_SYMBOL_GPL vmlinux 0x1853653c btree_alloc +EXPORT_SYMBOL_GPL vmlinux 0x1866cec2 ring_buffer_size +EXPORT_SYMBOL_GPL vmlinux 0x1878f62b edac_err_assert +EXPORT_SYMBOL_GPL vmlinux 0x1879c8ca arizona_clk32k_disable +EXPORT_SYMBOL_GPL vmlinux 0x1890b367 regulator_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x18a4090a inet6_csk_reqsk_queue_hash_add +EXPORT_SYMBOL_GPL vmlinux 0x18a91de5 to_nd_blk_region +EXPORT_SYMBOL_GPL vmlinux 0x18ae990b mbox_controller_register +EXPORT_SYMBOL_GPL vmlinux 0x18b7acd3 regulator_map_voltage_linear_range +EXPORT_SYMBOL_GPL vmlinux 0x18c3074e extcon_dev_unregister +EXPORT_SYMBOL_GPL vmlinux 0x18e049c5 snd_soc_dapm_new_widgets +EXPORT_SYMBOL_GPL vmlinux 0x191c9ced da903x_read +EXPORT_SYMBOL_GPL vmlinux 0x19213bde usb_phy_gen_create_phy +EXPORT_SYMBOL_GPL vmlinux 0x192ef0fc ipv6_stub +EXPORT_SYMBOL_GPL vmlinux 0x193d48e0 trace_current_buffer_unlock_commit +EXPORT_SYMBOL_GPL vmlinux 0x19400a3c spi_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x19467b73 debugfs_create_file +EXPORT_SYMBOL_GPL vmlinux 0x194a377c dev_pm_opp_find_freq_floor +EXPORT_SYMBOL_GPL vmlinux 0x194dd5f5 pkey_algo_name +EXPORT_SYMBOL_GPL vmlinux 0x1978bce0 sysfs_create_link +EXPORT_SYMBOL_GPL vmlinux 0x1982356c devm_regmap_init_i2c +EXPORT_SYMBOL_GPL vmlinux 0x1990f8ff pm_qos_update_request +EXPORT_SYMBOL_GPL vmlinux 0x19928635 mv_mbus_dram_info +EXPORT_SYMBOL_GPL vmlinux 0x19a111f6 generic_fh_to_dentry +EXPORT_SYMBOL_GPL vmlinux 0x19a304ba usb_disabled +EXPORT_SYMBOL_GPL vmlinux 0x19b384a5 hash_algo_name +EXPORT_SYMBOL_GPL vmlinux 0x19d660bd find_symbol +EXPORT_SYMBOL_GPL vmlinux 0x19d75f7a skb_tstamp_tx +EXPORT_SYMBOL_GPL vmlinux 0x19ee2715 usb_put_dev +EXPORT_SYMBOL_GPL vmlinux 0x1a1c4082 mod_delayed_work_on +EXPORT_SYMBOL_GPL vmlinux 0x1a22ca7c extcon_register_interest +EXPORT_SYMBOL_GPL vmlinux 0x1a25f373 __class_register +EXPORT_SYMBOL_GPL vmlinux 0x1a2659cc nvdimm_bus_attribute_group +EXPORT_SYMBOL_GPL vmlinux 0x1a467bd1 snd_soc_dai_set_pll +EXPORT_SYMBOL_GPL vmlinux 0x1a618cc5 devm_regulator_get_exclusive +EXPORT_SYMBOL_GPL vmlinux 0x1a68051d rhashtable_init +EXPORT_SYMBOL_GPL vmlinux 0x1a967885 cpufreq_frequency_get_table +EXPORT_SYMBOL_GPL vmlinux 0x1a9d635c xfrm_audit_state_add +EXPORT_SYMBOL_GPL vmlinux 0x1aae3721 crypto_remove_spawns +EXPORT_SYMBOL_GPL vmlinux 0x1acb283d __udp6_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x1acef7d2 pm_freezing +EXPORT_SYMBOL_GPL vmlinux 0x1ad378ba sysfs_add_file_to_group +EXPORT_SYMBOL_GPL vmlinux 0x1b061743 devm_rtc_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x1b2305df pm_runtime_force_suspend +EXPORT_SYMBOL_GPL vmlinux 0x1b3193ff gen_pool_size +EXPORT_SYMBOL_GPL vmlinux 0x1b3261e0 klist_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x1b3fdb72 of_free_opp_table +EXPORT_SYMBOL_GPL vmlinux 0x1b4717d4 i2c_lock_adapter +EXPORT_SYMBOL_GPL vmlinux 0x1b48d244 inet6_csk_search_req +EXPORT_SYMBOL_GPL vmlinux 0x1b52db1c probe_kernel_read +EXPORT_SYMBOL_GPL vmlinux 0x1b549519 kthread_park +EXPORT_SYMBOL_GPL vmlinux 0x1b5e45a9 __blk_run_queue_uncond +EXPORT_SYMBOL_GPL vmlinux 0x1b713ef4 sdhci_pltfm_free +EXPORT_SYMBOL_GPL vmlinux 0x1b86d7d5 ata_port_desc +EXPORT_SYMBOL_GPL vmlinux 0x1b8822d8 pinctrl_gpio_direction_output +EXPORT_SYMBOL_GPL vmlinux 0x1b985b8b ata_sff_qc_fill_rtf +EXPORT_SYMBOL_GPL vmlinux 0x1b9aca3f jprobe_return +EXPORT_SYMBOL_GPL vmlinux 0x1ba3e439 of_pci_range_parser_init +EXPORT_SYMBOL_GPL vmlinux 0x1ba5a57a crypto_grab_spawn +EXPORT_SYMBOL_GPL vmlinux 0x1bb5fc26 atomic_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0x1bbdf542 vfs_listxattr +EXPORT_SYMBOL_GPL vmlinux 0x1bc08e4c sdhci_alloc_host +EXPORT_SYMBOL_GPL vmlinux 0x1bc5eebe pinctrl_gpio_direction_input +EXPORT_SYMBOL_GPL vmlinux 0x1beea125 spi_bus_lock +EXPORT_SYMBOL_GPL vmlinux 0x1bf1e6a3 tcp_reno_cong_avoid +EXPORT_SYMBOL_GPL vmlinux 0x1bf7b68d cpufreq_frequency_table_cpuinfo +EXPORT_SYMBOL_GPL vmlinux 0x1c08ad01 regulator_set_voltage_time_sel +EXPORT_SYMBOL_GPL vmlinux 0x1c222e7f watchdog_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0x1c36401b __clocksource_register_scale +EXPORT_SYMBOL_GPL vmlinux 0x1c4d9281 crypto_init_shash_spawn +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 0x1c6c662b ata_pci_bmdma_prepare_host +EXPORT_SYMBOL_GPL vmlinux 0x1c6f9c51 unix_peer_get +EXPORT_SYMBOL_GPL vmlinux 0x1c80d27d btree_geo128 +EXPORT_SYMBOL_GPL vmlinux 0x1c83238d of_property_read_string +EXPORT_SYMBOL_GPL vmlinux 0x1c87a811 __round_jiffies_up +EXPORT_SYMBOL_GPL vmlinux 0x1c8c7f0b device_bind_driver +EXPORT_SYMBOL_GPL vmlinux 0x1c974ab2 cm_notify_event +EXPORT_SYMBOL_GPL vmlinux 0x1c9d28e9 ahci_platform_suspend_host +EXPORT_SYMBOL_GPL vmlinux 0x1ca2403b gfn_to_hva +EXPORT_SYMBOL_GPL vmlinux 0x1ccaffaf ip6_local_out +EXPORT_SYMBOL_GPL vmlinux 0x1ccb8539 regmap_check_range_table +EXPORT_SYMBOL_GPL vmlinux 0x1cd0945f inet6_lookup_listener +EXPORT_SYMBOL_GPL vmlinux 0x1cddbaf6 stmpe_block_read +EXPORT_SYMBOL_GPL vmlinux 0x1ce2a878 of_property_read_u64_array +EXPORT_SYMBOL_GPL vmlinux 0x1cfaf763 gpiod_get_direction +EXPORT_SYMBOL_GPL vmlinux 0x1cfdc055 device_dma_is_coherent +EXPORT_SYMBOL_GPL vmlinux 0x1cfff9bc snd_soc_jack_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0x1d0a8718 inet6_csk_addr2sockaddr +EXPORT_SYMBOL_GPL vmlinux 0x1d4cfa43 of_get_display_timings +EXPORT_SYMBOL_GPL vmlinux 0x1d4dcebb trace_event_raw_init +EXPORT_SYMBOL_GPL vmlinux 0x1d58ae14 lpddr2_jedec_timings +EXPORT_SYMBOL_GPL vmlinux 0x1d77b0f8 unix_socket_table +EXPORT_SYMBOL_GPL vmlinux 0x1d7b364f fat_time_unix2fat +EXPORT_SYMBOL_GPL vmlinux 0x1d7c0168 __ftrace_vprintk +EXPORT_SYMBOL_GPL vmlinux 0x1d7cb586 clk_register_fixed_rate_with_accuracy +EXPORT_SYMBOL_GPL vmlinux 0x1d8371ed stmpe_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x1d9719d5 reset_control_get +EXPORT_SYMBOL_GPL vmlinux 0x1da05b99 usb_hcd_unmap_urb_for_dma +EXPORT_SYMBOL_GPL vmlinux 0x1da2ff03 of_property_read_u16_array +EXPORT_SYMBOL_GPL vmlinux 0x1db5b5ba ping_err +EXPORT_SYMBOL_GPL vmlinux 0x1de074d3 crypto_alloc_tfm +EXPORT_SYMBOL_GPL vmlinux 0x1dfbe485 mmc_switch +EXPORT_SYMBOL_GPL vmlinux 0x1e0b9349 part_round_stats +EXPORT_SYMBOL_GPL vmlinux 0x1e1a3cd9 devm_pinctrl_put +EXPORT_SYMBOL_GPL vmlinux 0x1e1b3a9e pci_test_config_bits +EXPORT_SYMBOL_GPL vmlinux 0x1e380df6 netdev_rx_handler_unregister +EXPORT_SYMBOL_GPL vmlinux 0x1e4feeed proc_get_parent_data +EXPORT_SYMBOL_GPL vmlinux 0x1e5b03dc pm_qos_add_notifier +EXPORT_SYMBOL_GPL vmlinux 0x1e63b718 tty_buffer_space_avail +EXPORT_SYMBOL_GPL vmlinux 0x1e6cc653 __tracepoint_detach_device_from_domain +EXPORT_SYMBOL_GPL vmlinux 0x1e7135ba cpuidle_enable_device +EXPORT_SYMBOL_GPL vmlinux 0x1e7b0fb1 register_kretprobes +EXPORT_SYMBOL_GPL vmlinux 0x1e7bbcb3 kernel_restart +EXPORT_SYMBOL_GPL vmlinux 0x1e8322c7 snd_soc_of_get_dai_link_codecs +EXPORT_SYMBOL_GPL vmlinux 0x1ea28fd0 snd_soc_unregister_codec +EXPORT_SYMBOL_GPL vmlinux 0x1eaed5c9 devfreq_event_set_event +EXPORT_SYMBOL_GPL vmlinux 0x1eb4ce1e i2c_unlock_adapter +EXPORT_SYMBOL_GPL vmlinux 0x1eb51262 of_reconfig_get_state_change +EXPORT_SYMBOL_GPL vmlinux 0x1eb9516e round_jiffies_relative +EXPORT_SYMBOL_GPL vmlinux 0x1ebf6c2a pci_power_names +EXPORT_SYMBOL_GPL vmlinux 0x1ee7edb2 snd_soc_dapm_disable_pin_unlocked +EXPORT_SYMBOL_GPL vmlinux 0x1ef0554f tty_buffer_set_limit +EXPORT_SYMBOL_GPL vmlinux 0x1efca54f usb_clear_halt +EXPORT_SYMBOL_GPL vmlinux 0x1f0e40f0 n_tty_inherit_ops +EXPORT_SYMBOL_GPL vmlinux 0x1f132e97 ipv6_opt_accepted +EXPORT_SYMBOL_GPL vmlinux 0x1f4ea6b2 mbox_chan_received_data +EXPORT_SYMBOL_GPL vmlinux 0x1f55a05e __tracepoint_unmap +EXPORT_SYMBOL_GPL vmlinux 0x1f55b694 devm_extcon_dev_free +EXPORT_SYMBOL_GPL vmlinux 0x1f608105 devfreq_event_get_edev_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0x1f75e2eb snd_soc_platform_trigger +EXPORT_SYMBOL_GPL vmlinux 0x1f793f57 __tracepoint_block_split +EXPORT_SYMBOL_GPL vmlinux 0x1f8544b8 panic_timeout +EXPORT_SYMBOL_GPL vmlinux 0x1f8db7f9 ring_buffer_overrun_cpu +EXPORT_SYMBOL_GPL vmlinux 0x1f957574 devm_kfree +EXPORT_SYMBOL_GPL vmlinux 0x1fa414cd device_add_property_set +EXPORT_SYMBOL_GPL vmlinux 0x1fb833a7 gpiod_direction_output +EXPORT_SYMBOL_GPL vmlinux 0x1fb9c165 pwmchip_remove +EXPORT_SYMBOL_GPL vmlinux 0x1fc585fd of_css +EXPORT_SYMBOL_GPL vmlinux 0x1fcc0b98 blk_abort_request +EXPORT_SYMBOL_GPL vmlinux 0x1fe86934 crypto_unregister_algs +EXPORT_SYMBOL_GPL vmlinux 0x1ff6a877 sm501_modify_reg +EXPORT_SYMBOL_GPL vmlinux 0x1ff6c8b8 perf_trace_buf_prepare +EXPORT_SYMBOL_GPL vmlinux 0x201d8ea3 encode_rs8 +EXPORT_SYMBOL_GPL vmlinux 0x2038d448 skb_cow_data +EXPORT_SYMBOL_GPL vmlinux 0x204fbd44 dev_pm_opp_enable +EXPORT_SYMBOL_GPL vmlinux 0x2054d14b led_classdev_register +EXPORT_SYMBOL_GPL vmlinux 0x205e83b8 posix_timer_event +EXPORT_SYMBOL_GPL vmlinux 0x205eb68f ata_pci_sff_init_one +EXPORT_SYMBOL_GPL vmlinux 0x206933c0 omap_dm_timer_start +EXPORT_SYMBOL_GPL vmlinux 0x20ca5946 blkcipher_walk_virt +EXPORT_SYMBOL_GPL vmlinux 0x20de5193 kvm_disable_largepages +EXPORT_SYMBOL_GPL vmlinux 0x20f14873 crypto_register_akcipher +EXPORT_SYMBOL_GPL vmlinux 0x20f5cafe tun_get_socket +EXPORT_SYMBOL_GPL vmlinux 0x211b00b7 fat_dir_empty +EXPORT_SYMBOL_GPL vmlinux 0x21217442 inet_csk_route_child_sock +EXPORT_SYMBOL_GPL vmlinux 0x21339779 regulator_list_voltage_table +EXPORT_SYMBOL_GPL vmlinux 0x2136fd23 fuse_dev_operations +EXPORT_SYMBOL_GPL vmlinux 0x21557083 device_for_each_child_reverse +EXPORT_SYMBOL_GPL vmlinux 0x219dc7a5 pci_cfg_access_trylock +EXPORT_SYMBOL_GPL vmlinux 0x21a563da clk_get_accuracy +EXPORT_SYMBOL_GPL vmlinux 0x21ac8b77 iommu_group_get_by_id +EXPORT_SYMBOL_GPL vmlinux 0x21c808e9 blkcipher_walk_virt_block +EXPORT_SYMBOL_GPL vmlinux 0x21e78953 scsi_get_vpd_page +EXPORT_SYMBOL_GPL vmlinux 0x21febf58 clk_register_mux_table +EXPORT_SYMBOL_GPL vmlinux 0x22117870 perf_pmu_register +EXPORT_SYMBOL_GPL vmlinux 0x22159ec1 platform_get_irq +EXPORT_SYMBOL_GPL vmlinux 0x22388e97 rtnl_af_register +EXPORT_SYMBOL_GPL vmlinux 0x223ce73d regulator_enable +EXPORT_SYMBOL_GPL vmlinux 0x2240f807 inet_hash_connect +EXPORT_SYMBOL_GPL vmlinux 0x225f1a7e devm_of_phy_get +EXPORT_SYMBOL_GPL vmlinux 0x226a674d atomic_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0x226abe7c skcipher_geniv_alloc +EXPORT_SYMBOL_GPL vmlinux 0x2271f0e2 omap_dm_timer_write_counter +EXPORT_SYMBOL_GPL vmlinux 0x227d606b of_clk_parent_fill +EXPORT_SYMBOL_GPL vmlinux 0x228d8792 sata_link_scr_lpm +EXPORT_SYMBOL_GPL vmlinux 0x2296c00d crypto_attr_u32 +EXPORT_SYMBOL_GPL vmlinux 0x22a46361 kvm_vcpu_init +EXPORT_SYMBOL_GPL vmlinux 0x22e28897 device_for_each_child +EXPORT_SYMBOL_GPL vmlinux 0x22f4d812 iommu_attach_group +EXPORT_SYMBOL_GPL vmlinux 0x22f86ffd clk_gate_ops +EXPORT_SYMBOL_GPL vmlinux 0x22fa4715 devm_of_pwm_get +EXPORT_SYMBOL_GPL vmlinux 0x22faa727 anon_inode_getfd +EXPORT_SYMBOL_GPL vmlinux 0x22ff92c9 tpm_calc_ordinal_duration +EXPORT_SYMBOL_GPL vmlinux 0x22ffa2d2 uhci_reset_hc +EXPORT_SYMBOL_GPL vmlinux 0x231ae772 gpiod_set_array_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x231d70fc encode_bch +EXPORT_SYMBOL_GPL vmlinux 0x232d5882 snd_ctl_get_preferred_subdevice +EXPORT_SYMBOL_GPL vmlinux 0x2349aa70 ata_do_eh +EXPORT_SYMBOL_GPL vmlinux 0x235d51a2 ping_close +EXPORT_SYMBOL_GPL vmlinux 0x236ff761 exportfs_encode_inode_fh +EXPORT_SYMBOL_GPL vmlinux 0x23864ce7 cpuset_mem_spread_node +EXPORT_SYMBOL_GPL vmlinux 0x23932400 crypto_ahash_final +EXPORT_SYMBOL_GPL vmlinux 0x2396c7f0 clk_set_parent +EXPORT_SYMBOL_GPL vmlinux 0x23a494b2 __ata_ehi_push_desc +EXPORT_SYMBOL_GPL vmlinux 0x23abf358 handle_level_irq +EXPORT_SYMBOL_GPL vmlinux 0x23ef9aeb devm_hwmon_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x23fe1dad tcp_ca_get_key_by_name +EXPORT_SYMBOL_GPL vmlinux 0x241987a1 omap_dm_timer_read_counter +EXPORT_SYMBOL_GPL vmlinux 0x2432cec2 regulator_set_voltage +EXPORT_SYMBOL_GPL vmlinux 0x24457174 audit_enabled +EXPORT_SYMBOL_GPL vmlinux 0x244ded67 nd_blk_region_set_provider_data +EXPORT_SYMBOL_GPL vmlinux 0x2455a83b iommu_domain_window_enable +EXPORT_SYMBOL_GPL vmlinux 0x24596446 ata_std_postreset +EXPORT_SYMBOL_GPL vmlinux 0x24727e8f pl08x_filter_id +EXPORT_SYMBOL_GPL vmlinux 0x247ef831 kdb_unregister +EXPORT_SYMBOL_GPL vmlinux 0x24a0d20e relay_subbufs_consumed +EXPORT_SYMBOL_GPL vmlinux 0x24aac4d9 crypto_aes_expand_key +EXPORT_SYMBOL_GPL vmlinux 0x24ad8856 devm_regulator_get_optional +EXPORT_SYMBOL_GPL vmlinux 0x24d54828 kobject_uevent_env +EXPORT_SYMBOL_GPL vmlinux 0x24df601d pci_device_is_present +EXPORT_SYMBOL_GPL vmlinux 0x24e2cdb1 evm_verifyxattr +EXPORT_SYMBOL_GPL vmlinux 0x24eb7e32 leds_list +EXPORT_SYMBOL_GPL vmlinux 0x24f39c39 reset_control_reset +EXPORT_SYMBOL_GPL vmlinux 0x24fc0cf7 ata_bmdma_port_start +EXPORT_SYMBOL_GPL vmlinux 0x25042977 gfn_to_pfn +EXPORT_SYMBOL_GPL vmlinux 0x250da54c wakeup_source_prepare +EXPORT_SYMBOL_GPL vmlinux 0x251ec9ab device_store_ulong +EXPORT_SYMBOL_GPL vmlinux 0x25379e73 clk_set_min_rate +EXPORT_SYMBOL_GPL vmlinux 0x253940b9 device_property_read_string +EXPORT_SYMBOL_GPL vmlinux 0x25417624 ata_sff_queue_pio_task +EXPORT_SYMBOL_GPL vmlinux 0x2541a979 snd_soc_calc_frame_size +EXPORT_SYMBOL_GPL vmlinux 0x2543f96e rtnl_af_unregister +EXPORT_SYMBOL_GPL vmlinux 0x25574504 clk_fixed_rate_ops +EXPORT_SYMBOL_GPL vmlinux 0x255b5734 usb_hcd_poll_rh_status +EXPORT_SYMBOL_GPL vmlinux 0x255fda2f sm501_misc_control +EXPORT_SYMBOL_GPL vmlinux 0x256531f1 phy_exit +EXPORT_SYMBOL_GPL vmlinux 0x2581e363 __module_address +EXPORT_SYMBOL_GPL vmlinux 0x258fa2c3 locks_release_private +EXPORT_SYMBOL_GPL vmlinux 0x259e8cac otg_ulpi_create +EXPORT_SYMBOL_GPL vmlinux 0x25a20ee3 snd_soc_component_update_bits +EXPORT_SYMBOL_GPL vmlinux 0x25cf5d21 dma_buf_vunmap +EXPORT_SYMBOL_GPL vmlinux 0x25daf71f usb_remove_phy +EXPORT_SYMBOL_GPL vmlinux 0x25dc93ca phy_power_on +EXPORT_SYMBOL_GPL vmlinux 0x25e4fa8c btree_remove +EXPORT_SYMBOL_GPL vmlinux 0x25f0414e gfn_to_page_many_atomic +EXPORT_SYMBOL_GPL vmlinux 0x262f20a8 local_clock +EXPORT_SYMBOL_GPL vmlinux 0x26338258 thermal_zone_get_zone_by_name +EXPORT_SYMBOL_GPL vmlinux 0x2638af16 usb_udc_attach_driver +EXPORT_SYMBOL_GPL vmlinux 0x26520970 vm_memory_committed +EXPORT_SYMBOL_GPL vmlinux 0x265fbd42 ipv6_dup_options +EXPORT_SYMBOL_GPL vmlinux 0x266b7638 interval_tree_remove +EXPORT_SYMBOL_GPL vmlinux 0x2699f557 sdhci_enable_irq_wakeups +EXPORT_SYMBOL_GPL vmlinux 0x26a07b27 wm8400_reset_codec_reg_cache +EXPORT_SYMBOL_GPL vmlinux 0x26ab2320 usb_deregister +EXPORT_SYMBOL_GPL vmlinux 0x26adb815 thread_notify_head +EXPORT_SYMBOL_GPL vmlinux 0x26b71fb4 ring_buffer_time_stamp +EXPORT_SYMBOL_GPL vmlinux 0x26c547c0 bL_switcher_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x26c90ea4 scsi_eh_get_sense +EXPORT_SYMBOL_GPL vmlinux 0x26caf934 mtd_blktrans_cease_background +EXPORT_SYMBOL_GPL vmlinux 0x26e82ebc __pm_runtime_idle +EXPORT_SYMBOL_GPL vmlinux 0x26f0cf2c shash_ahash_digest +EXPORT_SYMBOL_GPL vmlinux 0x27046576 kvm_exit +EXPORT_SYMBOL_GPL vmlinux 0x27076b72 pinctrl_remove_gpio_range +EXPORT_SYMBOL_GPL vmlinux 0x2708923c sdio_memcpy_toio +EXPORT_SYMBOL_GPL vmlinux 0x274032ed ata_host_alloc_pinfo +EXPORT_SYMBOL_GPL vmlinux 0x2743914a tty_perform_flush +EXPORT_SYMBOL_GPL vmlinux 0x274cf5e1 __clk_get_flags +EXPORT_SYMBOL_GPL vmlinux 0x276fa489 put_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0x27750f18 ata_sff_dma_pause +EXPORT_SYMBOL_GPL vmlinux 0x2787db00 vbin_printf +EXPORT_SYMBOL_GPL vmlinux 0x278d20a2 usb_register_dev +EXPORT_SYMBOL_GPL vmlinux 0x279a6440 pci_enable_pasid +EXPORT_SYMBOL_GPL vmlinux 0x27a67b4f bd_unlink_disk_holder +EXPORT_SYMBOL_GPL vmlinux 0x27b87ffa sysfs_create_mount_point +EXPORT_SYMBOL_GPL vmlinux 0x27c1e63f usb_amd_find_chipset_info +EXPORT_SYMBOL_GPL vmlinux 0x27c441d1 irq_alloc_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x27c631d7 of_pci_find_child_device +EXPORT_SYMBOL_GPL vmlinux 0x27e39f08 pwm_request_from_chip +EXPORT_SYMBOL_GPL vmlinux 0x27f1b192 ata_cable_80wire +EXPORT_SYMBOL_GPL vmlinux 0x27f4f029 ftrace_set_global_filter +EXPORT_SYMBOL_GPL vmlinux 0x27f9c995 crypto_register_algs +EXPORT_SYMBOL_GPL vmlinux 0x27fa66e1 nr_free_buffer_pages +EXPORT_SYMBOL_GPL vmlinux 0x28284a06 subsys_dev_iter_next +EXPORT_SYMBOL_GPL vmlinux 0x282cdabc usb_led_activity +EXPORT_SYMBOL_GPL vmlinux 0x2830149e vchan_dma_desc_free_list +EXPORT_SYMBOL_GPL vmlinux 0x286b707d pinctrl_utils_add_config +EXPORT_SYMBOL_GPL vmlinux 0x289bef65 desc_to_gpio +EXPORT_SYMBOL_GPL vmlinux 0x28a4996f pwm_enable +EXPORT_SYMBOL_GPL vmlinux 0x28bf667e led_trigger_unregister_simple +EXPORT_SYMBOL_GPL vmlinux 0x290a64d9 snd_soc_dpcm_can_be_free_stop +EXPORT_SYMBOL_GPL vmlinux 0x290e3748 ata_sff_check_status +EXPORT_SYMBOL_GPL vmlinux 0x29138711 usb_hcd_unmap_urb_setup_for_dma +EXPORT_SYMBOL_GPL vmlinux 0x29158ffc crypto_aes_set_key +EXPORT_SYMBOL_GPL vmlinux 0x291daa97 component_del +EXPORT_SYMBOL_GPL vmlinux 0x291facf1 ata_pci_bmdma_init +EXPORT_SYMBOL_GPL vmlinux 0x29249645 kvm_vcpu_read_guest_page +EXPORT_SYMBOL_GPL vmlinux 0x29305a22 uart_insert_char +EXPORT_SYMBOL_GPL vmlinux 0x29493c3d sysfs_create_groups +EXPORT_SYMBOL_GPL vmlinux 0x2964b56d usb_create_hcd +EXPORT_SYMBOL_GPL vmlinux 0x296f5080 kvm_vcpu_gfn_to_hva +EXPORT_SYMBOL_GPL vmlinux 0x297d497e blkg_rwstat_recursive_sum +EXPORT_SYMBOL_GPL vmlinux 0x299e1627 ata_sff_data_xfer +EXPORT_SYMBOL_GPL vmlinux 0x29fa419f decode_rs8 +EXPORT_SYMBOL_GPL vmlinux 0x2a011c61 led_trigger_show +EXPORT_SYMBOL_GPL vmlinux 0x2a0ea307 pinctrl_lookup_state +EXPORT_SYMBOL_GPL vmlinux 0x2a162d5d tty_register_device_attr +EXPORT_SYMBOL_GPL vmlinux 0x2a26dba1 simple_attr_read +EXPORT_SYMBOL_GPL vmlinux 0x2a2935bf ablkcipher_walk_done +EXPORT_SYMBOL_GPL vmlinux 0x2a2d8ab9 blockdev_superblock +EXPORT_SYMBOL_GPL vmlinux 0x2a6171a2 snd_soc_new_ac97_codec +EXPORT_SYMBOL_GPL vmlinux 0x2a678a13 __suspend_report_result +EXPORT_SYMBOL_GPL vmlinux 0x2a7bef68 serial8250_modem_status +EXPORT_SYMBOL_GPL vmlinux 0x2a858175 usb_choose_configuration +EXPORT_SYMBOL_GPL vmlinux 0x2a8a46fd blk_rq_unprep_clone +EXPORT_SYMBOL_GPL vmlinux 0x2a8ee887 ping_seq_fops +EXPORT_SYMBOL_GPL vmlinux 0x2aac0abf sdhci_reset +EXPORT_SYMBOL_GPL vmlinux 0x2aae43f7 __srcu_read_lock +EXPORT_SYMBOL_GPL vmlinux 0x2ab1e747 arm_iommu_attach_device +EXPORT_SYMBOL_GPL vmlinux 0x2ab9ff16 usb_interrupt_msg +EXPORT_SYMBOL_GPL vmlinux 0x2ad9d326 md_ack_all_badblocks +EXPORT_SYMBOL_GPL vmlinux 0x2ae34b4b list_lru_destroy +EXPORT_SYMBOL_GPL vmlinux 0x2ae9510d component_master_add +EXPORT_SYMBOL_GPL vmlinux 0x2b19811c ata_bmdma_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0x2b1ea172 regmap_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0x2b570e3c nl_table +EXPORT_SYMBOL_GPL vmlinux 0x2b8684c2 regulator_force_disable +EXPORT_SYMBOL_GPL vmlinux 0x2b93d847 srcu_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0x2b952517 clk_has_parent +EXPORT_SYMBOL_GPL vmlinux 0x2babe81f __wake_up_sync_key +EXPORT_SYMBOL_GPL vmlinux 0x2bc11500 relay_close +EXPORT_SYMBOL_GPL vmlinux 0x2bcd8531 serial8250_do_set_mctrl +EXPORT_SYMBOL_GPL vmlinux 0x2be2018d ata_sff_drain_fifo +EXPORT_SYMBOL_GPL vmlinux 0x2bf87811 pinctrl_dev_get_name +EXPORT_SYMBOL_GPL vmlinux 0x2bfa985e nd_cmd_dimm_desc +EXPORT_SYMBOL_GPL vmlinux 0x2c133868 bit_wait_io_timeout +EXPORT_SYMBOL_GPL vmlinux 0x2c208607 power_supply_is_system_supplied +EXPORT_SYMBOL_GPL vmlinux 0x2c3054f9 net_inc_ingress_queue +EXPORT_SYMBOL_GPL vmlinux 0x2c5cef50 extcon_get_extcon_dev +EXPORT_SYMBOL_GPL vmlinux 0x2c69be1b hrtimer_init_sleeper +EXPORT_SYMBOL_GPL vmlinux 0x2c6cad52 dma_get_any_slave_channel +EXPORT_SYMBOL_GPL vmlinux 0x2c7db649 irq_dispose_mapping +EXPORT_SYMBOL_GPL vmlinux 0x2c87ecff cpuidle_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0x2c952e0e ata_sg_init +EXPORT_SYMBOL_GPL vmlinux 0x2c97c915 snd_soc_remove_platform +EXPORT_SYMBOL_GPL vmlinux 0x2c97f8a2 of_reconfig_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x2ce1cc7e ref_module +EXPORT_SYMBOL_GPL vmlinux 0x2ce98559 kcrypto_wq +EXPORT_SYMBOL_GPL vmlinux 0x2cea32ee unregister_oldmem_pfn_is_ram +EXPORT_SYMBOL_GPL vmlinux 0x2cf1a91f regulator_list_voltage_linear_range +EXPORT_SYMBOL_GPL vmlinux 0x2cffa3bb bsg_setup_queue +EXPORT_SYMBOL_GPL vmlinux 0x2d059639 xfrm_audit_state_delete +EXPORT_SYMBOL_GPL vmlinux 0x2d09478a usb_debug_root +EXPORT_SYMBOL_GPL vmlinux 0x2d09fd72 event_triggers_call +EXPORT_SYMBOL_GPL vmlinux 0x2d1b02d2 usermodehelper_read_lock_wait +EXPORT_SYMBOL_GPL vmlinux 0x2d1b79b1 event_triggers_post_call +EXPORT_SYMBOL_GPL vmlinux 0x2d41e6f5 __trace_puts +EXPORT_SYMBOL_GPL vmlinux 0x2d59c954 edac_handlers +EXPORT_SYMBOL_GPL vmlinux 0x2d61dd91 devfreq_event_get_event +EXPORT_SYMBOL_GPL vmlinux 0x2d6677e7 pinctrl_unregister +EXPORT_SYMBOL_GPL vmlinux 0x2d8aaebe input_class +EXPORT_SYMBOL_GPL vmlinux 0x2d9013a5 ehci_init_driver +EXPORT_SYMBOL_GPL vmlinux 0x2d9015e7 tps80031_ext_power_req_config +EXPORT_SYMBOL_GPL vmlinux 0x2da42c65 ip6_sk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x2da80e2d led_sysfs_enable +EXPORT_SYMBOL_GPL vmlinux 0x2dad9b05 register_jprobes +EXPORT_SYMBOL_GPL vmlinux 0x2dba90fd gpiod_unexport +EXPORT_SYMBOL_GPL vmlinux 0x2dd4b2a0 usb_ifnum_to_if +EXPORT_SYMBOL_GPL vmlinux 0x2dd60574 virtqueue_get_avail +EXPORT_SYMBOL_GPL vmlinux 0x2dde37e8 usb_autopm_get_interface_async +EXPORT_SYMBOL_GPL vmlinux 0x2de192f8 get_net_ns_by_pid +EXPORT_SYMBOL_GPL vmlinux 0x2df4fb4c nvdimm_pmem_region_create +EXPORT_SYMBOL_GPL vmlinux 0x2e03259b bus_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x2e2360b1 ftrace_set_global_notrace +EXPORT_SYMBOL_GPL vmlinux 0x2e278f88 btree_insert +EXPORT_SYMBOL_GPL vmlinux 0x2e2f1740 ring_buffer_record_disable_cpu +EXPORT_SYMBOL_GPL vmlinux 0x2e751ee1 snd_soc_bytes_get +EXPORT_SYMBOL_GPL vmlinux 0x2e925a4f snd_soc_dai_set_channel_map +EXPORT_SYMBOL_GPL vmlinux 0x2e9670c0 pl320_ipc_transmit +EXPORT_SYMBOL_GPL vmlinux 0x2ea71c54 blkg_prfill_rwstat +EXPORT_SYMBOL_GPL vmlinux 0x2eaa0198 swiotlb_tbl_sync_single +EXPORT_SYMBOL_GPL vmlinux 0x2eb0de37 gpiod_set_raw_array_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x2ebe3135 cpu_is_hotpluggable +EXPORT_SYMBOL_GPL vmlinux 0x2ecd6e08 gpiochip_remove_pin_ranges +EXPORT_SYMBOL_GPL vmlinux 0x2ed55d68 gpiochip_add +EXPORT_SYMBOL_GPL vmlinux 0x2ed935cb arizona_of_get_named_gpio +EXPORT_SYMBOL_GPL vmlinux 0x2ef6b5bf smp_call_function_any +EXPORT_SYMBOL_GPL vmlinux 0x2f0d9053 usb_otg_state_string +EXPORT_SYMBOL_GPL vmlinux 0x2f2e0bb4 to_nvdimm +EXPORT_SYMBOL_GPL vmlinux 0x2f32d046 alloc_page_buffers +EXPORT_SYMBOL_GPL vmlinux 0x2f3d419d wm8350_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x2f4113a2 dcookie_register +EXPORT_SYMBOL_GPL vmlinux 0x2f579d5b regmap_get_val_endian +EXPORT_SYMBOL_GPL vmlinux 0x2f77245d thermal_zone_get_temp +EXPORT_SYMBOL_GPL vmlinux 0x2f7a0e73 pci_load_and_free_saved_state +EXPORT_SYMBOL_GPL vmlinux 0x2f7b6833 powercap_unregister_zone +EXPORT_SYMBOL_GPL vmlinux 0x2f7ed28f key_type_user +EXPORT_SYMBOL_GPL vmlinux 0x2f7f0f7b __mmu_notifier_invalidate_range +EXPORT_SYMBOL_GPL vmlinux 0x2f89ffac devm_regulator_bulk_get +EXPORT_SYMBOL_GPL vmlinux 0x2f90da7e trace_seq_putmem +EXPORT_SYMBOL_GPL vmlinux 0x2f982110 dma_buf_map_attachment +EXPORT_SYMBOL_GPL vmlinux 0x2fb3313b kvm_get_dirty_log_protect +EXPORT_SYMBOL_GPL vmlinux 0x2fc7b541 hwrng_register +EXPORT_SYMBOL_GPL vmlinux 0x2fd8cba9 freeze_wake +EXPORT_SYMBOL_GPL vmlinux 0x2fdbaa90 hrtimer_active +EXPORT_SYMBOL_GPL vmlinux 0x2fde401b of_dma_controller_register +EXPORT_SYMBOL_GPL vmlinux 0x2fdfe721 page_cache_sync_readahead +EXPORT_SYMBOL_GPL vmlinux 0x300d7e57 free_rs +EXPORT_SYMBOL_GPL vmlinux 0x3015dc71 find_module +EXPORT_SYMBOL_GPL vmlinux 0x302647fd devm_reset_control_get +EXPORT_SYMBOL_GPL vmlinux 0x302be1c2 wm8350_read_auxadc +EXPORT_SYMBOL_GPL vmlinux 0x30308cf6 devm_regulator_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x304040bb securityfs_create_file +EXPORT_SYMBOL_GPL vmlinux 0x3054d692 adp5520_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0x30699409 crypto_lookup_aead +EXPORT_SYMBOL_GPL vmlinux 0x3072c6c9 dev_pm_qos_add_ancestor_request +EXPORT_SYMBOL_GPL vmlinux 0x309c9d62 sdio_readl +EXPORT_SYMBOL_GPL vmlinux 0x30a18d16 gfn_to_page +EXPORT_SYMBOL_GPL vmlinux 0x30a4f4ca bstr_printf +EXPORT_SYMBOL_GPL vmlinux 0x30b53e2d gpiochip_unlock_as_irq +EXPORT_SYMBOL_GPL vmlinux 0x30ba7b90 ata_bmdma_dumb_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0x30ceade4 dm_internal_resume +EXPORT_SYMBOL_GPL vmlinux 0x30e0c0ec scsi_internal_device_block +EXPORT_SYMBOL_GPL vmlinux 0x30e3133d mpc8xxx_spi_probe +EXPORT_SYMBOL_GPL vmlinux 0x3109b751 cpu_clock +EXPORT_SYMBOL_GPL vmlinux 0x3116c423 sdhci_add_host +EXPORT_SYMBOL_GPL vmlinux 0x31266931 con_debug_leave +EXPORT_SYMBOL_GPL vmlinux 0x3155aa09 rtc_class_open +EXPORT_SYMBOL_GPL vmlinux 0x31702c98 dev_pm_qos_remove_request +EXPORT_SYMBOL_GPL vmlinux 0x317a6a37 fixed_phy_register +EXPORT_SYMBOL_GPL vmlinux 0x31c0c2d1 dm_put +EXPORT_SYMBOL_GPL vmlinux 0x31c2371c replace_page_cache_page +EXPORT_SYMBOL_GPL vmlinux 0x31c7970f pciserial_suspend_ports +EXPORT_SYMBOL_GPL vmlinux 0x3205bc47 max8997_update_reg +EXPORT_SYMBOL_GPL vmlinux 0x3210fdc5 snd_soc_component_init_regmap +EXPORT_SYMBOL_GPL vmlinux 0x3287ff66 to_of_pinfo +EXPORT_SYMBOL_GPL vmlinux 0x328995b5 tracing_generic_entry_update +EXPORT_SYMBOL_GPL vmlinux 0x32924a4d scatterwalk_copychunks +EXPORT_SYMBOL_GPL vmlinux 0x329cdf20 devm_usb_get_phy_dev +EXPORT_SYMBOL_GPL vmlinux 0x32a7acc3 snd_soc_set_ac97_ops_of_reset +EXPORT_SYMBOL_GPL vmlinux 0x32ac93b0 iommu_domain_free +EXPORT_SYMBOL_GPL vmlinux 0x32b2e626 devm_regmap_init_mmio_clk +EXPORT_SYMBOL_GPL vmlinux 0x32b3b463 ehci_hub_control +EXPORT_SYMBOL_GPL vmlinux 0x32bae70a pciserial_init_ports +EXPORT_SYMBOL_GPL vmlinux 0x32bc0fcf preempt_notifier_dec +EXPORT_SYMBOL_GPL vmlinux 0x32c3cb4e class_compat_register +EXPORT_SYMBOL_GPL vmlinux 0x32db8bad of_resolve_phandles +EXPORT_SYMBOL_GPL vmlinux 0x3319a1f4 platform_device_add +EXPORT_SYMBOL_GPL vmlinux 0x332035ad wm831x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x33205722 dev_coredumpm +EXPORT_SYMBOL_GPL vmlinux 0x333bb5ec pinctrl_utils_reserve_map +EXPORT_SYMBOL_GPL vmlinux 0x334adfbe sata_pmp_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x335b1b31 wm5102_i2c_regmap +EXPORT_SYMBOL_GPL vmlinux 0x335c570f enable_percpu_irq +EXPORT_SYMBOL_GPL vmlinux 0x335fb379 kallsyms_on_each_symbol +EXPORT_SYMBOL_GPL vmlinux 0x335fc03b clk_gpio_gate_ops +EXPORT_SYMBOL_GPL vmlinux 0x336154ca rcutorture_record_test_transition +EXPORT_SYMBOL_GPL vmlinux 0x3375acb6 __tracepoint_kfree_skb +EXPORT_SYMBOL_GPL vmlinux 0x33797bee alarm_start_relative +EXPORT_SYMBOL_GPL vmlinux 0x337c1896 ip_route_output_flow +EXPORT_SYMBOL_GPL vmlinux 0x3398925e snd_soc_update_bits +EXPORT_SYMBOL_GPL vmlinux 0x339bc639 cci_ace_get_port +EXPORT_SYMBOL_GPL vmlinux 0x33ba2c1b rq_flush_dcache_pages +EXPORT_SYMBOL_GPL vmlinux 0x33c174f6 snd_soc_dapm_mixer_update_power +EXPORT_SYMBOL_GPL vmlinux 0x33c7ecfc clockevents_register_device +EXPORT_SYMBOL_GPL vmlinux 0x33c99f4a tpmm_chip_alloc +EXPORT_SYMBOL_GPL vmlinux 0x33d58bc5 regulator_sync_voltage +EXPORT_SYMBOL_GPL vmlinux 0x33daa0f8 dev_pm_qos_expose_latency_tolerance +EXPORT_SYMBOL_GPL vmlinux 0x33e6126e device_set_wakeup_enable +EXPORT_SYMBOL_GPL vmlinux 0x33eb776f driver_unregister +EXPORT_SYMBOL_GPL vmlinux 0x340553b3 wm8400_block_read +EXPORT_SYMBOL_GPL vmlinux 0x341643ba omap_dm_timer_modify_idlect_mask +EXPORT_SYMBOL_GPL vmlinux 0x341d1fa7 xfrm_audit_state_replay +EXPORT_SYMBOL_GPL vmlinux 0x34331d5e nd_fletcher64 +EXPORT_SYMBOL_GPL vmlinux 0x345c979a blk_execute_rq_nowait +EXPORT_SYMBOL_GPL vmlinux 0x3461137b amba_apb_device_add_res +EXPORT_SYMBOL_GPL vmlinux 0x34634e3b regmap_field_write +EXPORT_SYMBOL_GPL vmlinux 0x3469007e omap_dm_timer_set_load +EXPORT_SYMBOL_GPL vmlinux 0x347682ce snmp_fold_field64 +EXPORT_SYMBOL_GPL vmlinux 0x347fd4b3 eventfd_ctx_get +EXPORT_SYMBOL_GPL vmlinux 0x34803448 kvm_vcpu_mark_page_dirty +EXPORT_SYMBOL_GPL vmlinux 0x34ac50a4 visitorl +EXPORT_SYMBOL_GPL vmlinux 0x34ac5c70 devfreq_event_add_edev +EXPORT_SYMBOL_GPL vmlinux 0x34b680c5 __sock_recv_wifi_status +EXPORT_SYMBOL_GPL vmlinux 0x34bd5307 snd_soc_of_parse_card_name +EXPORT_SYMBOL_GPL vmlinux 0x34c22982 devm_snd_dmaengine_pcm_register +EXPORT_SYMBOL_GPL vmlinux 0x34dbacd3 cpuidle_unregister +EXPORT_SYMBOL_GPL vmlinux 0x34e1219c fl6_merge_options +EXPORT_SYMBOL_GPL vmlinux 0x35176301 rcu_batches_completed_sched +EXPORT_SYMBOL_GPL vmlinux 0x352cf494 usb_gadget_giveback_request +EXPORT_SYMBOL_GPL vmlinux 0x35426c38 input_ff_erase +EXPORT_SYMBOL_GPL vmlinux 0x35508e4b regmap_init_i2c +EXPORT_SYMBOL_GPL vmlinux 0x355faef9 devm_usb_get_phy +EXPORT_SYMBOL_GPL vmlinux 0x3575200b blk_trace_startstop +EXPORT_SYMBOL_GPL vmlinux 0x358ff60f twl_get_hfclk_rate +EXPORT_SYMBOL_GPL vmlinux 0x35a6fb0d init_uts_ns +EXPORT_SYMBOL_GPL vmlinux 0x35af140c snd_dmaengine_pcm_trigger +EXPORT_SYMBOL_GPL vmlinux 0x35af79db ata_pio_need_iordy +EXPORT_SYMBOL_GPL vmlinux 0x35b81897 usb_wakeup_notification +EXPORT_SYMBOL_GPL vmlinux 0x35ce7d60 cpufreq_freq_transition_begin +EXPORT_SYMBOL_GPL vmlinux 0x35dcd1f7 trace_seq_vprintf +EXPORT_SYMBOL_GPL vmlinux 0x35e477ca snd_soc_dapm_free +EXPORT_SYMBOL_GPL vmlinux 0x35f10f43 nfq_ct_nat_hook +EXPORT_SYMBOL_GPL vmlinux 0x35f5f3a0 omap_mcbsp_st_add_controls +EXPORT_SYMBOL_GPL vmlinux 0x360688bf regcache_cache_only +EXPORT_SYMBOL_GPL vmlinux 0x36075bb5 iommu_group_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x361e2bcc save_stack_trace +EXPORT_SYMBOL_GPL vmlinux 0x362d906d ehci_resume +EXPORT_SYMBOL_GPL vmlinux 0x363ef8e2 regulator_map_voltage_iterate +EXPORT_SYMBOL_GPL vmlinux 0x364c9611 rtnl_link_register +EXPORT_SYMBOL_GPL vmlinux 0x366da828 devm_regulator_put +EXPORT_SYMBOL_GPL vmlinux 0x369d99b7 gpiod_to_chip +EXPORT_SYMBOL_GPL vmlinux 0x369fcd70 tracing_snapshot +EXPORT_SYMBOL_GPL vmlinux 0x36a0f6e4 sysfs_remove_groups +EXPORT_SYMBOL_GPL vmlinux 0x36a7e9dd arizona_dev_init +EXPORT_SYMBOL_GPL vmlinux 0x36d45052 sched_setscheduler +EXPORT_SYMBOL_GPL vmlinux 0x36dab97f trace_clock_jiffies +EXPORT_SYMBOL_GPL vmlinux 0x36e4b7c6 unregister_trace_event +EXPORT_SYMBOL_GPL vmlinux 0x371dbd7c gfn_to_pfn_memslot +EXPORT_SYMBOL_GPL vmlinux 0x372ca04b snd_soc_get_volsw_range +EXPORT_SYMBOL_GPL vmlinux 0x372ce4cf sock_gen_put +EXPORT_SYMBOL_GPL vmlinux 0x3734d2d4 crypto_register_template +EXPORT_SYMBOL_GPL vmlinux 0x3747c270 mtd_add_partition +EXPORT_SYMBOL_GPL vmlinux 0x377a6952 evm_inode_init_security +EXPORT_SYMBOL_GPL vmlinux 0x3783aaff serial8250_do_startup +EXPORT_SYMBOL_GPL vmlinux 0x379936ed shmem_file_setup +EXPORT_SYMBOL_GPL vmlinux 0x379adae3 regmap_parse_val +EXPORT_SYMBOL_GPL vmlinux 0x37c3965a sm501_set_clock +EXPORT_SYMBOL_GPL vmlinux 0x37c5cefa sdio_memcpy_fromio +EXPORT_SYMBOL_GPL vmlinux 0x37cef80f __fib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x37d63e5a omap_dm_timer_trigger +EXPORT_SYMBOL_GPL vmlinux 0x37e9a2f7 usb_anchor_urb +EXPORT_SYMBOL_GPL vmlinux 0x38090b2f pwm_disable +EXPORT_SYMBOL_GPL vmlinux 0x381debb1 devm_snd_soc_register_card +EXPORT_SYMBOL_GPL vmlinux 0x382aef34 sysfs_remove_group +EXPORT_SYMBOL_GPL vmlinux 0x384a6981 __gfn_to_pfn_memslot +EXPORT_SYMBOL_GPL vmlinux 0x38639300 of_overlay_destroy +EXPORT_SYMBOL_GPL vmlinux 0x388a648e dio_end_io +EXPORT_SYMBOL_GPL vmlinux 0x389adb5e wm5110_patch +EXPORT_SYMBOL_GPL vmlinux 0x38a9c2c7 input_ff_effect_from_user +EXPORT_SYMBOL_GPL vmlinux 0x38b700f2 pm_generic_freeze_late +EXPORT_SYMBOL_GPL vmlinux 0x38b81334 shmem_get_seals +EXPORT_SYMBOL_GPL vmlinux 0x38c4bf28 crypto_alg_lookup +EXPORT_SYMBOL_GPL vmlinux 0x38e5bc5a clk_set_rate_range +EXPORT_SYMBOL_GPL vmlinux 0x38ff251e nfq_ct_hook +EXPORT_SYMBOL_GPL vmlinux 0x3917f661 net_ns_type_operations +EXPORT_SYMBOL_GPL vmlinux 0x3918eb76 led_trigger_rename_static +EXPORT_SYMBOL_GPL vmlinux 0x393e43ed led_sysfs_disable +EXPORT_SYMBOL_GPL vmlinux 0x39426136 regulator_set_current_limit +EXPORT_SYMBOL_GPL vmlinux 0x396fe09f device_init_wakeup +EXPORT_SYMBOL_GPL vmlinux 0x3971cb8d device_destroy +EXPORT_SYMBOL_GPL vmlinux 0x397b110f iommu_group_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0x39840998 wakeup_source_register +EXPORT_SYMBOL_GPL vmlinux 0x39a012ac nd_blk_region_to_dimm +EXPORT_SYMBOL_GPL vmlinux 0x39c2a538 ip6_local_out_sk +EXPORT_SYMBOL_GPL vmlinux 0x39ca07cc maxim_charger_calc_reg_current +EXPORT_SYMBOL_GPL vmlinux 0x39cd0717 sb800_prefetch +EXPORT_SYMBOL_GPL vmlinux 0x39dbc199 usb_hcd_pci_remove +EXPORT_SYMBOL_GPL vmlinux 0x39e61495 nf_logger_request_module +EXPORT_SYMBOL_GPL vmlinux 0x39e86d74 usb_autopm_put_interface_async +EXPORT_SYMBOL_GPL vmlinux 0x3a0a31d6 mtd_unpoint +EXPORT_SYMBOL_GPL vmlinux 0x3a166cac __mmc_switch +EXPORT_SYMBOL_GPL vmlinux 0x3a2460f1 subsys_interface_unregister +EXPORT_SYMBOL_GPL vmlinux 0x3a26ed11 sched_clock +EXPORT_SYMBOL_GPL vmlinux 0x3a393c53 handle_fasteoi_irq +EXPORT_SYMBOL_GPL vmlinux 0x3a3f4dc5 wm8350_reg_lock +EXPORT_SYMBOL_GPL vmlinux 0x3a430f0f add_page_wait_queue +EXPORT_SYMBOL_GPL vmlinux 0x3a4f6a32 ata_sff_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x3a4fdbb8 virtqueue_add_inbuf +EXPORT_SYMBOL_GPL vmlinux 0x3a536bd7 ring_buffer_read_finish +EXPORT_SYMBOL_GPL vmlinux 0x3a7fe744 ohci_restart +EXPORT_SYMBOL_GPL vmlinux 0x3a86a51b devm_clk_register +EXPORT_SYMBOL_GPL vmlinux 0x3a885c1c ata_eh_qc_retry +EXPORT_SYMBOL_GPL vmlinux 0x3a8f90c0 dev_pm_qos_expose_flags +EXPORT_SYMBOL_GPL vmlinux 0x3a9be019 asymmetric_key_id_partial +EXPORT_SYMBOL_GPL vmlinux 0x3a9fba6f mddev_init +EXPORT_SYMBOL_GPL vmlinux 0x3aa602d6 __blkdev_driver_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x3ab124ae mtd_is_partition +EXPORT_SYMBOL_GPL vmlinux 0x3acdf325 twl4030_audio_enable_resource +EXPORT_SYMBOL_GPL vmlinux 0x3adb3901 wm831x_auxadc_read +EXPORT_SYMBOL_GPL vmlinux 0x3ae0dc6a __platform_driver_probe +EXPORT_SYMBOL_GPL vmlinux 0x3b1cadac tty_port_register_device_attr +EXPORT_SYMBOL_GPL vmlinux 0x3b241c29 cpufreq_cpu_get +EXPORT_SYMBOL_GPL vmlinux 0x3b9c3eb1 inet_hash +EXPORT_SYMBOL_GPL vmlinux 0x3bc17534 transport_class_register +EXPORT_SYMBOL_GPL vmlinux 0x3bcae48e nvdimm_bus_unregister +EXPORT_SYMBOL_GPL vmlinux 0x3c1dc9d7 udp4_hwcsum +EXPORT_SYMBOL_GPL vmlinux 0x3c307e7f usb_hcd_start_port_resume +EXPORT_SYMBOL_GPL vmlinux 0x3c6593c8 devm_devfreq_event_add_edev +EXPORT_SYMBOL_GPL vmlinux 0x3c6c54ef snd_compress_new +EXPORT_SYMBOL_GPL vmlinux 0x3c7d6f55 unregister_asymmetric_key_parser +EXPORT_SYMBOL_GPL vmlinux 0x3c831441 arm_check_condition +EXPORT_SYMBOL_GPL vmlinux 0x3c9390db pci_vpd_find_tag +EXPORT_SYMBOL_GPL vmlinux 0x3c93ea25 trace_seq_printf +EXPORT_SYMBOL_GPL vmlinux 0x3cc324fd tpm2_gen_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x3cd06035 add_input_randomness +EXPORT_SYMBOL_GPL vmlinux 0x3ce2a7e4 ping_init_sock +EXPORT_SYMBOL_GPL vmlinux 0x3cf95e6a ata_sff_postreset +EXPORT_SYMBOL_GPL vmlinux 0x3cfb03a7 napi_by_id +EXPORT_SYMBOL_GPL vmlinux 0x3d02b88a bmp085_probe +EXPORT_SYMBOL_GPL vmlinux 0x3d1fc96f ata_scsi_port_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x3d241f0e perf_event_release_kernel +EXPORT_SYMBOL_GPL vmlinux 0x3d388324 dpm_resume_end +EXPORT_SYMBOL_GPL vmlinux 0x3d459498 regmap_update_bits_check_async +EXPORT_SYMBOL_GPL vmlinux 0x3d5c0a0a srcu_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x3d6d0d58 wm5110_revd_irq +EXPORT_SYMBOL_GPL vmlinux 0x3d8bc4c6 ata_do_set_mode +EXPORT_SYMBOL_GPL vmlinux 0x3d96b681 pci_ignore_hotplug +EXPORT_SYMBOL_GPL vmlinux 0x3d9f03c9 anon_transport_class_register +EXPORT_SYMBOL_GPL vmlinux 0x3dc526a9 arizona_of_match +EXPORT_SYMBOL_GPL vmlinux 0x3dc916b6 crypto_fl_tab +EXPORT_SYMBOL_GPL vmlinux 0x3dd4d3a7 bprintf +EXPORT_SYMBOL_GPL vmlinux 0x3dd8181e __clk_get_parent +EXPORT_SYMBOL_GPL vmlinux 0x3de36d69 spi_async_locked +EXPORT_SYMBOL_GPL vmlinux 0x3de9cae1 crypto_remove_final +EXPORT_SYMBOL_GPL vmlinux 0x3dfe239f sdhci_set_bus_width +EXPORT_SYMBOL_GPL vmlinux 0x3e1a77dc sata_link_hardreset +EXPORT_SYMBOL_GPL vmlinux 0x3e1f72e0 kvm_vcpu_cache +EXPORT_SYMBOL_GPL vmlinux 0x3e37b656 bpf_prog_put +EXPORT_SYMBOL_GPL vmlinux 0x3e410620 unregister_kprobes +EXPORT_SYMBOL_GPL vmlinux 0x3e461e22 tps6586x_get_version +EXPORT_SYMBOL_GPL vmlinux 0x3e470ee1 power_supply_set_battery_charged +EXPORT_SYMBOL_GPL vmlinux 0x3e51d121 platform_get_resource +EXPORT_SYMBOL_GPL vmlinux 0x3e5e1937 rcu_batches_started_sched +EXPORT_SYMBOL_GPL vmlinux 0x3e7080cb mpi_read_from_buffer +EXPORT_SYMBOL_GPL vmlinux 0x3e77de81 usb_hcd_platform_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x3e85a4a2 gpiod_direction_output_raw +EXPORT_SYMBOL_GPL vmlinux 0x3e8ad40f fat_fill_super +EXPORT_SYMBOL_GPL vmlinux 0x3e9dc4be serial8250_tx_chars +EXPORT_SYMBOL_GPL vmlinux 0x3eb84c9a omapdss_of_get_next_endpoint +EXPORT_SYMBOL_GPL vmlinux 0x3ebb80a6 omap_dm_timer_get_irq +EXPORT_SYMBOL_GPL vmlinux 0x3ee2e063 tcp_done +EXPORT_SYMBOL_GPL vmlinux 0x3eeb922d regulator_disable +EXPORT_SYMBOL_GPL vmlinux 0x3ef6d96b fl6_sock_lookup +EXPORT_SYMBOL_GPL vmlinux 0x3efb35c9 get_online_cpus +EXPORT_SYMBOL_GPL vmlinux 0x3f0f3903 crypto_alloc_aead +EXPORT_SYMBOL_GPL vmlinux 0x3f14b48f ahci_stop_engine +EXPORT_SYMBOL_GPL vmlinux 0x3f156161 dev_pm_enable_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0x3f48e383 usb_deregister_device_driver +EXPORT_SYMBOL_GPL vmlinux 0x3f598d9b of_pci_range_parser_one +EXPORT_SYMBOL_GPL vmlinux 0x3f5f335b mtd_get_user_prot_info +EXPORT_SYMBOL_GPL vmlinux 0x3f615fae kvm_vcpu_uninit +EXPORT_SYMBOL_GPL vmlinux 0x3f779cf8 hwmon_device_register +EXPORT_SYMBOL_GPL vmlinux 0x3f78e020 add_to_page_cache_lru +EXPORT_SYMBOL_GPL vmlinux 0x3f7c760b dmaengine_unmap_put +EXPORT_SYMBOL_GPL vmlinux 0x3f9b6b47 ata_sff_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x3fa5af9c nd_cmd_bus_desc +EXPORT_SYMBOL_GPL vmlinux 0x3faf83c6 rhashtable_insert_rehash +EXPORT_SYMBOL_GPL vmlinux 0x3fb386e3 syscon_node_to_regmap +EXPORT_SYMBOL_GPL vmlinux 0x3fba5a36 xfrm_audit_policy_delete +EXPORT_SYMBOL_GPL vmlinux 0x3fba8c55 fuse_conn_get +EXPORT_SYMBOL_GPL vmlinux 0x3fc61810 ata_wait_after_reset +EXPORT_SYMBOL_GPL vmlinux 0x3ff6b406 get_pid_task +EXPORT_SYMBOL_GPL vmlinux 0x3ffc7253 fuse_sync_release +EXPORT_SYMBOL_GPL vmlinux 0x3ffdf7cf srcu_init_notifier_head +EXPORT_SYMBOL_GPL vmlinux 0x401c7b0b crypto_alg_extsize +EXPORT_SYMBOL_GPL vmlinux 0x4027633d __tracepoint_add_device_to_group +EXPORT_SYMBOL_GPL vmlinux 0x40344767 tps6586x_reads +EXPORT_SYMBOL_GPL vmlinux 0x403575f0 cpuidle_get_driver +EXPORT_SYMBOL_GPL vmlinux 0x403f9529 gpio_request_one +EXPORT_SYMBOL_GPL vmlinux 0x4045c494 filter_match_preds +EXPORT_SYMBOL_GPL vmlinux 0x404dcd80 regulator_get_mode +EXPORT_SYMBOL_GPL vmlinux 0x4065d168 pm_print_active_wakeup_sources +EXPORT_SYMBOL_GPL vmlinux 0x406c4cb1 hrtimer_resolution +EXPORT_SYMBOL_GPL vmlinux 0x40a20862 preempt_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0x40aab01b omap_dm_timer_set_load_start +EXPORT_SYMBOL_GPL vmlinux 0x40abfa54 __srcu_read_unlock +EXPORT_SYMBOL_GPL vmlinux 0x40af0dec ata_xfer_mode2mask +EXPORT_SYMBOL_GPL vmlinux 0x40c18275 inet_csk_listen_stop +EXPORT_SYMBOL_GPL vmlinux 0x40cad63e ehci_adjust_port_wakeup_flags +EXPORT_SYMBOL_GPL vmlinux 0x40d46b21 crypto_ft_tab +EXPORT_SYMBOL_GPL vmlinux 0x40e48062 regmap_update_bits_async +EXPORT_SYMBOL_GPL vmlinux 0x40edecbf snd_soc_add_card_controls +EXPORT_SYMBOL_GPL vmlinux 0x40f0683e reset_control_put +EXPORT_SYMBOL_GPL vmlinux 0x41022a52 raw_hash_sk +EXPORT_SYMBOL_GPL vmlinux 0x41045a46 ata_sff_port_intr +EXPORT_SYMBOL_GPL vmlinux 0x4111cda9 ata_scsi_slave_config +EXPORT_SYMBOL_GPL vmlinux 0x4137e61d subsys_dev_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x4165e54e of_irq_parse_pci +EXPORT_SYMBOL_GPL vmlinux 0x41814cb8 dirty_writeback_interval +EXPORT_SYMBOL_GPL vmlinux 0x4186c290 class_interface_register +EXPORT_SYMBOL_GPL vmlinux 0x41977771 of_genpd_get_from_provider +EXPORT_SYMBOL_GPL vmlinux 0x41be1eac tty_port_tty_hangup +EXPORT_SYMBOL_GPL vmlinux 0x41d2d247 fuse_dev_alloc +EXPORT_SYMBOL_GPL vmlinux 0x4205ad24 cancel_work_sync +EXPORT_SYMBOL_GPL vmlinux 0x421c2ccf driver_for_each_device +EXPORT_SYMBOL_GPL vmlinux 0x4222e54f usb_hcd_is_primary_hcd +EXPORT_SYMBOL_GPL vmlinux 0x422b964d disk_part_iter_next +EXPORT_SYMBOL_GPL vmlinux 0x422bf8fe power_supply_register +EXPORT_SYMBOL_GPL vmlinux 0x424acc6d scatterwalk_done +EXPORT_SYMBOL_GPL vmlinux 0x425b0c0f snd_soc_put_xr_sx +EXPORT_SYMBOL_GPL vmlinux 0x425ed001 regulator_bulk_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x426e50a6 fat_add_entries +EXPORT_SYMBOL_GPL vmlinux 0x42825ce2 rcu_scheduler_active +EXPORT_SYMBOL_GPL vmlinux 0x428db61c crypto_alloc_pcomp +EXPORT_SYMBOL_GPL vmlinux 0x4296e47d ahci_fill_cmd_slot +EXPORT_SYMBOL_GPL vmlinux 0x42aed493 gpiod_set_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x42b24784 crypto_shash_finup +EXPORT_SYMBOL_GPL vmlinux 0x42b64db5 pci_stop_root_bus +EXPORT_SYMBOL_GPL vmlinux 0x42ba114f kthread_unpark +EXPORT_SYMBOL_GPL vmlinux 0x42bbeca6 seq_release_net +EXPORT_SYMBOL_GPL vmlinux 0x42c0a247 con_debug_enter +EXPORT_SYMBOL_GPL vmlinux 0x42cd3054 ata_sas_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x42ffa48f wakeup_source_create +EXPORT_SYMBOL_GPL vmlinux 0x430b4b94 __tracepoint_map +EXPORT_SYMBOL_GPL vmlinux 0x431bf93c wm5110_irq +EXPORT_SYMBOL_GPL vmlinux 0x43619e1a scatterwalk_ffwd +EXPORT_SYMBOL_GPL vmlinux 0x43791386 pci_generic_config_read32 +EXPORT_SYMBOL_GPL vmlinux 0x43806249 mnt_want_write +EXPORT_SYMBOL_GPL vmlinux 0x43841929 usb_get_status +EXPORT_SYMBOL_GPL vmlinux 0x43a53735 __alloc_workqueue_key +EXPORT_SYMBOL_GPL vmlinux 0x43a80339 genpd_dev_pm_attach +EXPORT_SYMBOL_GPL vmlinux 0x43aea5f2 of_pwm_xlate_with_flags +EXPORT_SYMBOL_GPL vmlinux 0x43b466b0 gfn_to_pfn_memslot_atomic +EXPORT_SYMBOL_GPL vmlinux 0x43c45fab cpsw_ale_add_ucast +EXPORT_SYMBOL_GPL vmlinux 0x43edbe35 tps6586x_write +EXPORT_SYMBOL_GPL vmlinux 0x43f56e82 ata_xfer_mode2shift +EXPORT_SYMBOL_GPL vmlinux 0x43f81957 clk_round_rate +EXPORT_SYMBOL_GPL vmlinux 0x4411779d of_phy_simple_xlate +EXPORT_SYMBOL_GPL vmlinux 0x4438f175 is_skb_forwardable +EXPORT_SYMBOL_GPL vmlinux 0x44410dac of_phy_provider_unregister +EXPORT_SYMBOL_GPL vmlinux 0x444312d4 netlink_has_listeners +EXPORT_SYMBOL_GPL vmlinux 0x444f1735 cpu_pm_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x445206c2 usb_control_msg +EXPORT_SYMBOL_GPL vmlinux 0x446989c0 mddev_suspend +EXPORT_SYMBOL_GPL vmlinux 0x447d4126 ata_pci_device_resume +EXPORT_SYMBOL_GPL vmlinux 0x4484a5a4 wait_for_device_probe +EXPORT_SYMBOL_GPL vmlinux 0x4495b53d ahci_do_softreset +EXPORT_SYMBOL_GPL vmlinux 0x44cceb16 amba_apb_device_add +EXPORT_SYMBOL_GPL vmlinux 0x44d0b99b pci_find_next_ht_capability +EXPORT_SYMBOL_GPL vmlinux 0x44e70d71 pci_assign_unassigned_bridge_resources +EXPORT_SYMBOL_GPL vmlinux 0x45160b2e pcie_update_link_speed +EXPORT_SYMBOL_GPL vmlinux 0x452f7be9 ahci_pmp_retry_srst_ops +EXPORT_SYMBOL_GPL vmlinux 0x4533d075 da903x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x453958b2 usb_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0x453e4707 fat_free_clusters +EXPORT_SYMBOL_GPL vmlinux 0x4549b447 wm8350_reg_unlock +EXPORT_SYMBOL_GPL vmlinux 0x45569b8f tracepoint_probe_unregister +EXPORT_SYMBOL_GPL vmlinux 0x4557bd4e ndo_dflt_bridge_getlink +EXPORT_SYMBOL_GPL vmlinux 0x457594fa crypto_alg_list +EXPORT_SYMBOL_GPL vmlinux 0x457be08b transport_add_device +EXPORT_SYMBOL_GPL vmlinux 0x459ee7f6 __root_device_register +EXPORT_SYMBOL_GPL vmlinux 0x45a26a1f rhashtable_insert_slow +EXPORT_SYMBOL_GPL vmlinux 0x45a583d3 dev_forward_skb +EXPORT_SYMBOL_GPL vmlinux 0x45afcb98 __rt_mutex_init +EXPORT_SYMBOL_GPL vmlinux 0x45b2d7e3 bsg_job_done +EXPORT_SYMBOL_GPL vmlinux 0x45ba1367 btree_init_mempool +EXPORT_SYMBOL_GPL vmlinux 0x45bf1ff3 crypto_inc +EXPORT_SYMBOL_GPL vmlinux 0x45d1d1db crypto_aead_setkey +EXPORT_SYMBOL_GPL vmlinux 0x45eb7e4e pci_cleanup_aer_uncorrect_error_status +EXPORT_SYMBOL_GPL vmlinux 0x46013233 net_dec_ingress_queue +EXPORT_SYMBOL_GPL vmlinux 0x46066e5b perf_pmu_name +EXPORT_SYMBOL_GPL vmlinux 0x460f7531 wait_rcu_gp +EXPORT_SYMBOL_GPL vmlinux 0x4613ba21 of_pci_msi_chip_add +EXPORT_SYMBOL_GPL vmlinux 0x46292169 tpm_chip_unregister +EXPORT_SYMBOL_GPL vmlinux 0x4636097c usb_reset_endpoint +EXPORT_SYMBOL_GPL vmlinux 0x463732f6 pm_generic_thaw_early +EXPORT_SYMBOL_GPL vmlinux 0x463d24ea ipv6_fixup_options +EXPORT_SYMBOL_GPL vmlinux 0x4659ed8a kernfs_put +EXPORT_SYMBOL_GPL vmlinux 0x465a0469 blk_queue_bypass_end +EXPORT_SYMBOL_GPL vmlinux 0x465e7712 serial8250_get_port +EXPORT_SYMBOL_GPL vmlinux 0x46658ec1 subsys_interface_register +EXPORT_SYMBOL_GPL vmlinux 0x4672e88b __crypto_dequeue_request +EXPORT_SYMBOL_GPL vmlinux 0x467a1eec invalidate_inode_pages2_range +EXPORT_SYMBOL_GPL vmlinux 0x4681678f da9052_request_irq +EXPORT_SYMBOL_GPL vmlinux 0x4688d7ec pvclock_gtod_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x469143c4 x509_free_certificate +EXPORT_SYMBOL_GPL vmlinux 0x46abd907 scsi_nl_sock +EXPORT_SYMBOL_GPL vmlinux 0x46b1dcf1 inet_csk_search_req +EXPORT_SYMBOL_GPL vmlinux 0x46bf0b98 cpu_device_create +EXPORT_SYMBOL_GPL vmlinux 0x46bfed3a snd_soc_register_card +EXPORT_SYMBOL_GPL vmlinux 0x46da19f9 cpufreq_unregister_governor +EXPORT_SYMBOL_GPL vmlinux 0x46fece03 pingv6_prot +EXPORT_SYMBOL_GPL vmlinux 0x4709fc0e usb_get_current_frame_number +EXPORT_SYMBOL_GPL vmlinux 0x470d86cc ata_sas_port_alloc +EXPORT_SYMBOL_GPL vmlinux 0x471482bb crypto_ahash_finup +EXPORT_SYMBOL_GPL vmlinux 0x4716d88e usb_put_hcd +EXPORT_SYMBOL_GPL vmlinux 0x47229b5c gpio_request +EXPORT_SYMBOL_GPL vmlinux 0x47257886 clk_register_fractional_divider +EXPORT_SYMBOL_GPL vmlinux 0x473d77bd register_user_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x474b6ecf cpufreq_frequency_table_get_index +EXPORT_SYMBOL_GPL vmlinux 0x4761f17c register_netevent_notifier +EXPORT_SYMBOL_GPL vmlinux 0x476efa2c ahci_host_activate +EXPORT_SYMBOL_GPL vmlinux 0x47884890 system_power_efficient_wq +EXPORT_SYMBOL_GPL vmlinux 0x47929f39 aead_geniv_exit +EXPORT_SYMBOL_GPL vmlinux 0x47aad3b9 have_governor_per_policy +EXPORT_SYMBOL_GPL vmlinux 0x47ad21ed nf_ipv6_ops +EXPORT_SYMBOL_GPL vmlinux 0x47b0d809 inet_ehash_locks_alloc +EXPORT_SYMBOL_GPL vmlinux 0x47b69679 kvm_vcpu_block +EXPORT_SYMBOL_GPL vmlinux 0x47c63394 rtc_update_irq +EXPORT_SYMBOL_GPL vmlinux 0x47de0dc7 clk_unregister_mux +EXPORT_SYMBOL_GPL vmlinux 0x480a314c fixed_phy_set_link_update +EXPORT_SYMBOL_GPL vmlinux 0x4814ab21 ata_dummy_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x48223a00 __sock_recv_timestamp +EXPORT_SYMBOL_GPL vmlinux 0x483fd2a3 __kvm_set_memory_region +EXPORT_SYMBOL_GPL vmlinux 0x485cd7f6 kvm_rebooting +EXPORT_SYMBOL_GPL vmlinux 0x4868c3b4 rcu_batches_started_bh +EXPORT_SYMBOL_GPL vmlinux 0x486c069d pm_genpd_syscore_poweron +EXPORT_SYMBOL_GPL vmlinux 0x486dabbe ahci_platform_disable_clks +EXPORT_SYMBOL_GPL vmlinux 0x487152db mmc_app_cmd +EXPORT_SYMBOL_GPL vmlinux 0x487c5d33 nf_log_buf_add +EXPORT_SYMBOL_GPL vmlinux 0x488db0bb mtd_erase +EXPORT_SYMBOL_GPL vmlinux 0x48cebc44 xfrm_audit_state_replay_overflow +EXPORT_SYMBOL_GPL vmlinux 0x48f3ee10 dma_buf_detach +EXPORT_SYMBOL_GPL vmlinux 0x490fdacb pci_reset_bus +EXPORT_SYMBOL_GPL vmlinux 0x491da6dc usb_hub_clear_tt_buffer +EXPORT_SYMBOL_GPL vmlinux 0x492c7b41 of_pci_dma_configure +EXPORT_SYMBOL_GPL vmlinux 0x49436407 of_clk_add_provider +EXPORT_SYMBOL_GPL vmlinux 0x4982a57f probe_kernel_write +EXPORT_SYMBOL_GPL vmlinux 0x49842b44 rt_mutex_timed_lock +EXPORT_SYMBOL_GPL vmlinux 0x498d293a trace_buffer_unlock_commit +EXPORT_SYMBOL_GPL vmlinux 0x499043d3 crypto_init_queue +EXPORT_SYMBOL_GPL vmlinux 0x499634ac md_do_sync +EXPORT_SYMBOL_GPL vmlinux 0x49aa3c82 ata_timing_compute +EXPORT_SYMBOL_GPL vmlinux 0x49abb6a0 blk_mq_unfreeze_queue +EXPORT_SYMBOL_GPL vmlinux 0x49b6fd3e ata_sff_data_xfer_noirq +EXPORT_SYMBOL_GPL vmlinux 0x49c01285 devm_hwmon_device_register_with_groups +EXPORT_SYMBOL_GPL vmlinux 0x49e96999 cond_synchronize_rcu +EXPORT_SYMBOL_GPL vmlinux 0x49f0358f cpsw_ale_set_allmulti +EXPORT_SYMBOL_GPL vmlinux 0x49f23f18 irq_domain_simple_ops +EXPORT_SYMBOL_GPL vmlinux 0x49f3aaea phy_create +EXPORT_SYMBOL_GPL vmlinux 0x49f3f5d2 irq_domain_xlate_twocell +EXPORT_SYMBOL_GPL vmlinux 0x4a3b4b97 serial8250_do_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x4a6a18e8 snd_soc_dapm_put_pin_switch +EXPORT_SYMBOL_GPL vmlinux 0x4a73f2f8 pm_wakeup_event +EXPORT_SYMBOL_GPL vmlinux 0x4a7d4f89 usb_mon_register +EXPORT_SYMBOL_GPL vmlinux 0x4a8ccc49 snd_dmaengine_pcm_open_request_chan +EXPORT_SYMBOL_GPL vmlinux 0x4a95db3b device_property_present +EXPORT_SYMBOL_GPL vmlinux 0x4aa7a07d snd_dmaengine_pcm_pointer_no_residue +EXPORT_SYMBOL_GPL vmlinux 0x4aadeb9a ring_buffer_alloc_read_page +EXPORT_SYMBOL_GPL vmlinux 0x4ab1a16b usb_anchor_resume_wakeups +EXPORT_SYMBOL_GPL vmlinux 0x4ace2b94 pci_slots_kset +EXPORT_SYMBOL_GPL vmlinux 0x4adb8262 of_irq_parse_raw +EXPORT_SYMBOL_GPL vmlinux 0x4aeb23b1 xfrm_local_error +EXPORT_SYMBOL_GPL vmlinux 0x4aef46b5 blk_mq_cancel_requeue_work +EXPORT_SYMBOL_GPL vmlinux 0x4af049c4 pci_disable_pri +EXPORT_SYMBOL_GPL vmlinux 0x4b03fdac ata_eh_thaw_port +EXPORT_SYMBOL_GPL vmlinux 0x4b197e13 bus_remove_file +EXPORT_SYMBOL_GPL vmlinux 0x4b3410e7 regulator_set_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x4b42029c snd_dmaengine_pcm_close +EXPORT_SYMBOL_GPL vmlinux 0x4b5954f0 hrtimer_try_to_cancel +EXPORT_SYMBOL_GPL vmlinux 0x4b5c7287 sdhci_pltfm_clk_get_max_clock +EXPORT_SYMBOL_GPL vmlinux 0x4b602b5a aead_register_instance +EXPORT_SYMBOL_GPL vmlinux 0x4b793574 rtnl_put_cacheinfo +EXPORT_SYMBOL_GPL vmlinux 0x4bafcdd8 btree_update +EXPORT_SYMBOL_GPL vmlinux 0x4bbf12f7 vfs_lock_file +EXPORT_SYMBOL_GPL vmlinux 0x4bf784b9 ohci_hub_control +EXPORT_SYMBOL_GPL vmlinux 0x4bfae19f tcp_send_ack +EXPORT_SYMBOL_GPL vmlinux 0x4c17fffc usb_unanchor_urb +EXPORT_SYMBOL_GPL vmlinux 0x4c1845f2 iommu_detach_device +EXPORT_SYMBOL_GPL vmlinux 0x4c3e3e3e scsi_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x4c47ec15 klist_add_head +EXPORT_SYMBOL_GPL vmlinux 0x4c54b813 get_kernel_page +EXPORT_SYMBOL_GPL vmlinux 0x4c5c712e dma_buf_fd +EXPORT_SYMBOL_GPL vmlinux 0x4c602bf1 __blkg_release_rcu +EXPORT_SYMBOL_GPL vmlinux 0x4c61c698 fanout_mutex +EXPORT_SYMBOL_GPL vmlinux 0x4c6e805d dev_pm_qos_hide_latency_limit +EXPORT_SYMBOL_GPL vmlinux 0x4ca2f12f kvm_set_memory_region +EXPORT_SYMBOL_GPL vmlinux 0x4cac12fd snd_soc_write +EXPORT_SYMBOL_GPL vmlinux 0x4cb3b7f6 snd_soc_register_platform +EXPORT_SYMBOL_GPL vmlinux 0x4cb619bb gpiod_count +EXPORT_SYMBOL_GPL vmlinux 0x4cb7a073 yield_to +EXPORT_SYMBOL_GPL vmlinux 0x4ccb13c5 xfrm_output_resume +EXPORT_SYMBOL_GPL vmlinux 0x4cd0db17 skb_splice_bits +EXPORT_SYMBOL_GPL vmlinux 0x4d0015e2 cpu_hotplug_disable +EXPORT_SYMBOL_GPL vmlinux 0x4d043f65 __page_file_mapping +EXPORT_SYMBOL_GPL vmlinux 0x4d38f1e0 bL_switcher_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x4d624d0b dbs_check_cpu +EXPORT_SYMBOL_GPL vmlinux 0x4d85f09f thermal_zone_device_update +EXPORT_SYMBOL_GPL vmlinux 0x4d95ca8f blk_queue_rq_timed_out +EXPORT_SYMBOL_GPL vmlinux 0x4db9c350 sysfs_create_group +EXPORT_SYMBOL_GPL vmlinux 0x4dcc0fd8 pci_ioremap_bar +EXPORT_SYMBOL_GPL vmlinux 0x4dcfb948 ata_bmdma_irq_clear +EXPORT_SYMBOL_GPL vmlinux 0x4dd739fa tracepoint_probe_register +EXPORT_SYMBOL_GPL vmlinux 0x4de17ab3 usb_state_string +EXPORT_SYMBOL_GPL vmlinux 0x4deaeae0 netlink_remove_tap +EXPORT_SYMBOL_GPL vmlinux 0x4e0041ac led_classdev_unregister +EXPORT_SYMBOL_GPL vmlinux 0x4e00f13d bus_set_iommu +EXPORT_SYMBOL_GPL vmlinux 0x4e05958b ata_port_abort +EXPORT_SYMBOL_GPL vmlinux 0x4e109192 ring_buffer_entries +EXPORT_SYMBOL_GPL vmlinux 0x4e242f5f pstore_cannot_block_path +EXPORT_SYMBOL_GPL vmlinux 0x4e2c2dd2 pm_qos_remove_request +EXPORT_SYMBOL_GPL vmlinux 0x4e56efcf fuse_do_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x4e5af652 dev_pm_qos_flags +EXPORT_SYMBOL_GPL vmlinux 0x4e7426e8 thermal_cooling_device_register +EXPORT_SYMBOL_GPL vmlinux 0x4e861195 inet6_lookup +EXPORT_SYMBOL_GPL vmlinux 0x4e93528e mtd_block_isbad +EXPORT_SYMBOL_GPL vmlinux 0x4e95cbf1 rhashtable_walk_next +EXPORT_SYMBOL_GPL vmlinux 0x4e99527b usb_sg_cancel +EXPORT_SYMBOL_GPL vmlinux 0x4ea37321 aead_geniv_alloc +EXPORT_SYMBOL_GPL vmlinux 0x4ea51ab1 sk_set_memalloc +EXPORT_SYMBOL_GPL vmlinux 0x4ead10d1 irq_remove_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x4ef5bcf4 perf_swevent_get_recursion_context +EXPORT_SYMBOL_GPL vmlinux 0x4f020dee public_key_verify_signature +EXPORT_SYMBOL_GPL vmlinux 0x4f0d41b4 devm_extcon_dev_unregister +EXPORT_SYMBOL_GPL vmlinux 0x4f39821d pci_disable_sriov +EXPORT_SYMBOL_GPL vmlinux 0x4f43cfd6 spi_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x4f5b7b01 wm8997_irq +EXPORT_SYMBOL_GPL vmlinux 0x4f6a07fe show_rcu_gp_kthreads +EXPORT_SYMBOL_GPL vmlinux 0x4f98d766 cpu_pm_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x4faaa479 init_dummy_netdev +EXPORT_SYMBOL_GPL vmlinux 0x4fb8698d kern_mount_data +EXPORT_SYMBOL_GPL vmlinux 0x4fd4e89d ring_buffer_empty_cpu +EXPORT_SYMBOL_GPL vmlinux 0x4fdc945d sata_deb_timing_normal +EXPORT_SYMBOL_GPL vmlinux 0x4fdf7111 ata_host_init +EXPORT_SYMBOL_GPL vmlinux 0x4fe1eddf unregister_netevent_notifier +EXPORT_SYMBOL_GPL vmlinux 0x5003a4b1 kill_pid_info_as_cred +EXPORT_SYMBOL_GPL vmlinux 0x5026ec19 sock_prot_inuse_add +EXPORT_SYMBOL_GPL vmlinux 0x502b9f62 snd_soc_read +EXPORT_SYMBOL_GPL vmlinux 0x5040b2e7 sysfs_chmod_file +EXPORT_SYMBOL_GPL vmlinux 0x506551c3 blk_end_request_err +EXPORT_SYMBOL_GPL vmlinux 0x50715540 usb_sg_wait +EXPORT_SYMBOL_GPL vmlinux 0x5076ebab ata_bmdma_qc_issue +EXPORT_SYMBOL_GPL vmlinux 0x5080c352 trace_print_bitmask_seq +EXPORT_SYMBOL_GPL vmlinux 0x50826d2b of_get_dma_window +EXPORT_SYMBOL_GPL vmlinux 0x5086ac3a alg_test +EXPORT_SYMBOL_GPL vmlinux 0x50903b55 module_mutex +EXPORT_SYMBOL_GPL vmlinux 0x5091b823 ring_buffer_read_start +EXPORT_SYMBOL_GPL vmlinux 0x5099d1d7 __tracepoint_rpm_return_int +EXPORT_SYMBOL_GPL vmlinux 0x509cf167 regmap_irq_get_domain +EXPORT_SYMBOL_GPL vmlinux 0x50c89f23 __alloc_percpu +EXPORT_SYMBOL_GPL vmlinux 0x50e7193a __i2c_first_dynamic_bus_num +EXPORT_SYMBOL_GPL vmlinux 0x50f1c759 omap_dm_timer_set_int_enable +EXPORT_SYMBOL_GPL vmlinux 0x50fad434 round_jiffies_up +EXPORT_SYMBOL_GPL vmlinux 0x510307c8 ata_wait_register +EXPORT_SYMBOL_GPL vmlinux 0x51347a06 led_stop_software_blink +EXPORT_SYMBOL_GPL vmlinux 0x51389f7b get_mtd_device +EXPORT_SYMBOL_GPL vmlinux 0x51442d0e rhashtable_walk_init +EXPORT_SYMBOL_GPL vmlinux 0x514886eb snd_soc_dpcm_be_set_state +EXPORT_SYMBOL_GPL vmlinux 0x514e9875 divider_get_val +EXPORT_SYMBOL_GPL vmlinux 0x51559c60 usb_lock_device_for_reset +EXPORT_SYMBOL_GPL vmlinux 0x515dedfe bus_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x519419a3 debugfs_create_u32 +EXPORT_SYMBOL_GPL vmlinux 0x51993a52 ip6_datagram_recv_ctl +EXPORT_SYMBOL_GPL vmlinux 0x519f4741 phy_pm_runtime_put_sync +EXPORT_SYMBOL_GPL vmlinux 0x51ae44a2 pm_generic_restore_early +EXPORT_SYMBOL_GPL vmlinux 0x51c3923b spi_setup +EXPORT_SYMBOL_GPL vmlinux 0x51cf6c85 fuse_get_req_for_background +EXPORT_SYMBOL_GPL vmlinux 0x51cfc6a8 ahash_attr_alg +EXPORT_SYMBOL_GPL vmlinux 0x51d2c722 tcp_ca_openreq_child +EXPORT_SYMBOL_GPL vmlinux 0x51e9a9a6 debugfs_create_x16 +EXPORT_SYMBOL_GPL vmlinux 0x51ff7c5b cpufreq_cooling_register +EXPORT_SYMBOL_GPL vmlinux 0x5200c3b4 usb_scuttle_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x520d275a power_supply_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x5210a5bf hsi_board_list +EXPORT_SYMBOL_GPL vmlinux 0x5219fd3e ipv4_sk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x5221ec3a fwnode_property_read_u32_array +EXPORT_SYMBOL_GPL vmlinux 0x5231120e bio_alloc_mddev +EXPORT_SYMBOL_GPL vmlinux 0x526280c7 trace_seq_puts +EXPORT_SYMBOL_GPL vmlinux 0x5272d8bc __cookie_v4_check +EXPORT_SYMBOL_GPL vmlinux 0x52a235bf blk_unprep_request +EXPORT_SYMBOL_GPL vmlinux 0x52a298b6 snd_soc_dpcm_get_substream +EXPORT_SYMBOL_GPL vmlinux 0x52a41251 __cookie_v4_init_sequence +EXPORT_SYMBOL_GPL vmlinux 0x52aa74d3 ata_port_schedule_eh +EXPORT_SYMBOL_GPL vmlinux 0x52b39c98 fuse_do_open +EXPORT_SYMBOL_GPL vmlinux 0x52de2c5d snd_ctl_add_vmaster_hook +EXPORT_SYMBOL_GPL vmlinux 0x52e7bc47 wakeup_source_destroy +EXPORT_SYMBOL_GPL vmlinux 0x52e7f6a6 usb_alloc_dev +EXPORT_SYMBOL_GPL vmlinux 0x530a513a pci_set_pcie_reset_state +EXPORT_SYMBOL_GPL vmlinux 0x53296134 regmap_fields_update_bits +EXPORT_SYMBOL_GPL vmlinux 0x532c25df crypto_hash_walk_first +EXPORT_SYMBOL_GPL vmlinux 0x532d7c0a pinconf_generic_dt_node_to_map +EXPORT_SYMBOL_GPL vmlinux 0x5358fc36 ring_buffer_discard_commit +EXPORT_SYMBOL_GPL vmlinux 0x535bcea9 watchdog_init_timeout +EXPORT_SYMBOL_GPL vmlinux 0x535c4797 cn_add_callback +EXPORT_SYMBOL_GPL vmlinux 0x53614269 get_cpu_idle_time_us +EXPORT_SYMBOL_GPL vmlinux 0x537e2f52 iommu_detach_group +EXPORT_SYMBOL_GPL vmlinux 0x538815c5 tpm_do_selftest +EXPORT_SYMBOL_GPL vmlinux 0x539be00a snd_soc_get_strobe +EXPORT_SYMBOL_GPL vmlinux 0x53a08f1f snd_soc_free_ac97_codec +EXPORT_SYMBOL_GPL vmlinux 0x53adfae2 led_trigger_blink +EXPORT_SYMBOL_GPL vmlinux 0x53bc3c96 debugfs_create_file_size +EXPORT_SYMBOL_GPL vmlinux 0x53cb2800 __tracepoint_napi_poll +EXPORT_SYMBOL_GPL vmlinux 0x53cbc6ed crypto_alloc_shash +EXPORT_SYMBOL_GPL vmlinux 0x53d01322 iommu_get_domain_for_dev +EXPORT_SYMBOL_GPL vmlinux 0x53fe0f8e snd_soc_put_enum_double +EXPORT_SYMBOL_GPL vmlinux 0x5400e7de serial8250_rpm_put +EXPORT_SYMBOL_GPL vmlinux 0x541bd60a irq_work_run +EXPORT_SYMBOL_GPL vmlinux 0x5425d145 bit_wait_timeout +EXPORT_SYMBOL_GPL vmlinux 0x544a22e3 debugfs_create_regset32 +EXPORT_SYMBOL_GPL vmlinux 0x544aab61 klist_add_tail +EXPORT_SYMBOL_GPL vmlinux 0x545091a2 crypto_alg_sem +EXPORT_SYMBOL_GPL vmlinux 0x545fec86 percpu_ida_for_each_free +EXPORT_SYMBOL_GPL vmlinux 0x5460c8d8 fsnotify_get_cookie +EXPORT_SYMBOL_GPL vmlinux 0x5466ae44 ata_sff_pause +EXPORT_SYMBOL_GPL vmlinux 0x54740eb7 get_cpu_idle_time +EXPORT_SYMBOL_GPL vmlinux 0x549525ef handle_nested_irq +EXPORT_SYMBOL_GPL vmlinux 0x54aff321 mtd_panic_write +EXPORT_SYMBOL_GPL vmlinux 0x54d46690 uart_parse_earlycon +EXPORT_SYMBOL_GPL vmlinux 0x54d468f1 pm_qos_request_active +EXPORT_SYMBOL_GPL vmlinux 0x54d5c0fe snd_soc_dapm_nc_pin_unlocked +EXPORT_SYMBOL_GPL vmlinux 0x54db38a3 usb_gadget_unmap_request +EXPORT_SYMBOL_GPL vmlinux 0x54dc6303 usb_register_device_driver +EXPORT_SYMBOL_GPL vmlinux 0x54f5b4ce crypto_shash_digest +EXPORT_SYMBOL_GPL vmlinux 0x55039a1d device_pm_wait_for_dev +EXPORT_SYMBOL_GPL vmlinux 0x5505a844 unix_inq_len +EXPORT_SYMBOL_GPL vmlinux 0x550a7371 of_pci_get_host_bridge_resources +EXPORT_SYMBOL_GPL vmlinux 0x550fbf98 clk_mux_ops +EXPORT_SYMBOL_GPL vmlinux 0x5517fb1d virtqueue_kick +EXPORT_SYMBOL_GPL vmlinux 0x551ef001 regulator_get_exclusive +EXPORT_SYMBOL_GPL vmlinux 0x5524e65b nand_wait_ready +EXPORT_SYMBOL_GPL vmlinux 0x553b49a4 cpufreq_get_driver_data +EXPORT_SYMBOL_GPL vmlinux 0x553ca83e cpufreq_cooling_unregister +EXPORT_SYMBOL_GPL vmlinux 0x55417264 unregister_vt_notifier +EXPORT_SYMBOL_GPL vmlinux 0x554503cd smpboot_update_cpumask_percpu_thread +EXPORT_SYMBOL_GPL vmlinux 0x554b9d96 find_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0x556e4390 clk_get_rate +EXPORT_SYMBOL_GPL vmlinux 0x55784228 regmap_irq_get_virq +EXPORT_SYMBOL_GPL vmlinux 0x557ab231 devfreq_event_remove_edev +EXPORT_SYMBOL_GPL vmlinux 0x55852cf6 of_pci_msi_chip_remove +EXPORT_SYMBOL_GPL vmlinux 0x5587d4bb kvm_vcpu_write_guest_page +EXPORT_SYMBOL_GPL vmlinux 0x558fe74a sk_clear_memalloc +EXPORT_SYMBOL_GPL vmlinux 0x55a99a8a virtio_config_changed +EXPORT_SYMBOL_GPL vmlinux 0x55c04dda device_reprobe +EXPORT_SYMBOL_GPL vmlinux 0x55c769f6 led_trigger_unregister +EXPORT_SYMBOL_GPL vmlinux 0x55cbd27b kvm_write_guest_cached +EXPORT_SYMBOL_GPL vmlinux 0x55e4fab6 wm831x_device_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x55e9d25f devm_extcon_dev_allocate +EXPORT_SYMBOL_GPL vmlinux 0x55f04c21 trace_buffer_unlock_commit_regs +EXPORT_SYMBOL_GPL vmlinux 0x561f2402 crypto_unregister_shash +EXPORT_SYMBOL_GPL vmlinux 0x56256e8a orderly_poweroff +EXPORT_SYMBOL_GPL vmlinux 0x56310925 regulator_mode_to_status +EXPORT_SYMBOL_GPL vmlinux 0x5641485b tty_termios_encode_baud_rate +EXPORT_SYMBOL_GPL vmlinux 0x56431bc6 md_run +EXPORT_SYMBOL_GPL vmlinux 0x565b6892 uuid_le_gen +EXPORT_SYMBOL_GPL vmlinux 0x565e0de5 dma_buf_get +EXPORT_SYMBOL_GPL vmlinux 0x56886b19 scatterwalk_map +EXPORT_SYMBOL_GPL vmlinux 0x56b63670 lzo1x_1_compress +EXPORT_SYMBOL_GPL vmlinux 0x56d31820 musb_writel +EXPORT_SYMBOL_GPL vmlinux 0x56d697ce cpu_up +EXPORT_SYMBOL_GPL vmlinux 0x56e75d47 klist_node_attached +EXPORT_SYMBOL_GPL vmlinux 0x56e9103b cpu_pm_enter +EXPORT_SYMBOL_GPL vmlinux 0x570842c7 bpf_prog_select_runtime +EXPORT_SYMBOL_GPL vmlinux 0x57231f45 ring_buffer_record_on +EXPORT_SYMBOL_GPL vmlinux 0x573fdd64 crypto_register_alg +EXPORT_SYMBOL_GPL vmlinux 0x57424f3e i2c_generic_scl_recovery +EXPORT_SYMBOL_GPL vmlinux 0x574a1a9f vring_new_virtqueue +EXPORT_SYMBOL_GPL vmlinux 0x574c4f5a regmap_multi_reg_write_bypassed +EXPORT_SYMBOL_GPL vmlinux 0x577aa222 nd_blk_region_provider_data +EXPORT_SYMBOL_GPL vmlinux 0x5790e7a0 pci_unlock_rescan_remove +EXPORT_SYMBOL_GPL vmlinux 0x579e0bf5 rtnl_unregister_all +EXPORT_SYMBOL_GPL vmlinux 0x57ae3c3c pci_stop_and_remove_bus_device_locked +EXPORT_SYMBOL_GPL vmlinux 0x57c39727 kdb_register_flags +EXPORT_SYMBOL_GPL vmlinux 0x57cbe425 sdio_run_irqs +EXPORT_SYMBOL_GPL vmlinux 0x57cd10eb thermal_zone_device_register +EXPORT_SYMBOL_GPL vmlinux 0x57cfba44 crypto_larval_alloc +EXPORT_SYMBOL_GPL vmlinux 0x57df59f0 mmc_regulator_get_supply +EXPORT_SYMBOL_GPL vmlinux 0x57e9ddc8 amba_ahb_device_add_res +EXPORT_SYMBOL_GPL vmlinux 0x57f37fbe setup_irq +EXPORT_SYMBOL_GPL vmlinux 0x57fe4049 nd_numa_attribute_group +EXPORT_SYMBOL_GPL vmlinux 0x58026384 wm831x_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0x58063ede srcu_barrier +EXPORT_SYMBOL_GPL vmlinux 0x581195fb mbox_controller_unregister +EXPORT_SYMBOL_GPL vmlinux 0x582469be gpiochip_is_requested +EXPORT_SYMBOL_GPL vmlinux 0x58292e5f clk_fixed_factor_ops +EXPORT_SYMBOL_GPL vmlinux 0x58538bfe device_property_read_u64_array +EXPORT_SYMBOL_GPL vmlinux 0x5875ad35 usb_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x587df9b3 sdhci_pltfm_register +EXPORT_SYMBOL_GPL vmlinux 0x588325f4 snd_soc_unregister_platform +EXPORT_SYMBOL_GPL vmlinux 0x589e4569 syscon_regmap_lookup_by_pdevname +EXPORT_SYMBOL_GPL vmlinux 0x58aaa81b spi_alloc_master +EXPORT_SYMBOL_GPL vmlinux 0x58c7f6e7 dev_pm_qos_add_notifier +EXPORT_SYMBOL_GPL vmlinux 0x58ffd35b snd_soc_dapm_get_pin_switch +EXPORT_SYMBOL_GPL vmlinux 0x59193f11 kvm_read_guest_page +EXPORT_SYMBOL_GPL vmlinux 0x59310eef usb_disable_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0x59377262 usb_altnum_to_altsetting +EXPORT_SYMBOL_GPL vmlinux 0x593f0dbb ahci_set_em_messages +EXPORT_SYMBOL_GPL vmlinux 0x594cde67 trace_seq_putmem_hex +EXPORT_SYMBOL_GPL vmlinux 0x595815e5 ip4_datagram_release_cb +EXPORT_SYMBOL_GPL vmlinux 0x59820638 snd_soc_info_volsw_range +EXPORT_SYMBOL_GPL vmlinux 0x5994bebc nvdimm_bus_check_dimm_count +EXPORT_SYMBOL_GPL vmlinux 0x59b4c8b4 pm_runtime_allow +EXPORT_SYMBOL_GPL vmlinux 0x59e2743e call_rcu_bh +EXPORT_SYMBOL_GPL vmlinux 0x59eae699 ring_buffer_read_prepare +EXPORT_SYMBOL_GPL vmlinux 0x59f09421 regulator_disable_deferred +EXPORT_SYMBOL_GPL vmlinux 0x59f7b419 eventfd_fget +EXPORT_SYMBOL_GPL vmlinux 0x5a09bdca usb_unlocked_enable_lpm +EXPORT_SYMBOL_GPL vmlinux 0x5a144df1 nd_mapping_attribute_group +EXPORT_SYMBOL_GPL vmlinux 0x5a213d65 usb_gadget_udc_reset +EXPORT_SYMBOL_GPL vmlinux 0x5a3c5e51 pci_bus_add_device +EXPORT_SYMBOL_GPL vmlinux 0x5a47e91d pm_generic_thaw +EXPORT_SYMBOL_GPL vmlinux 0x5a5d7a03 pci_set_cacheline_size +EXPORT_SYMBOL_GPL vmlinux 0x5a7bfe41 crypto_probing_notify +EXPORT_SYMBOL_GPL vmlinux 0x5a7dbb06 pm_runtime_no_callbacks +EXPORT_SYMBOL_GPL vmlinux 0x5a80b0e0 crypto_ahash_digest +EXPORT_SYMBOL_GPL vmlinux 0x5a8f213c cpdma_ctlr_eoi +EXPORT_SYMBOL_GPL vmlinux 0x5ac0a4a7 sock_update_netprioidx +EXPORT_SYMBOL_GPL vmlinux 0x5ac4caba key_type_trusted +EXPORT_SYMBOL_GPL vmlinux 0x5acf6567 btree_init +EXPORT_SYMBOL_GPL vmlinux 0x5adfe0b4 ipv4_redirect +EXPORT_SYMBOL_GPL vmlinux 0x5ae567db regulator_set_mode +EXPORT_SYMBOL_GPL vmlinux 0x5aeab39c i2c_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x5b023c16 stmpe_enable +EXPORT_SYMBOL_GPL vmlinux 0x5b14b354 regulator_get_init_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x5b15823e devm_kasprintf +EXPORT_SYMBOL_GPL vmlinux 0x5b1921e0 __ip6_local_out +EXPORT_SYMBOL_GPL vmlinux 0x5b1998f6 snd_soc_put_volsw +EXPORT_SYMBOL_GPL vmlinux 0x5b3682d2 spi_finalize_current_transfer +EXPORT_SYMBOL_GPL vmlinux 0x5b48f66f da9052_free_irq +EXPORT_SYMBOL_GPL vmlinux 0x5b4b56be unregister_jprobe +EXPORT_SYMBOL_GPL vmlinux 0x5b763879 gpiod_get_value +EXPORT_SYMBOL_GPL vmlinux 0x5bad9b92 cpsw_ale_del_mcast +EXPORT_SYMBOL_GPL vmlinux 0x5bb1e1e5 adp5520_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x5bd0748f crypto_del_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x5bd12adb uart_set_options +EXPORT_SYMBOL_GPL vmlinux 0x5bdb6435 sysfs_merge_group +EXPORT_SYMBOL_GPL vmlinux 0x5bdbac4e rcu_unexpedite_gp +EXPORT_SYMBOL_GPL vmlinux 0x5be40e8f vfs_cancel_lock +EXPORT_SYMBOL_GPL vmlinux 0x5c112d1e find_get_pid +EXPORT_SYMBOL_GPL vmlinux 0x5c137c1f blk_mq_request_started +EXPORT_SYMBOL_GPL vmlinux 0x5c2455c4 pinctrl_pm_select_default_state +EXPORT_SYMBOL_GPL vmlinux 0x5c2fe4a5 cpdma_chan_stop +EXPORT_SYMBOL_GPL vmlinux 0x5c3e1e0e ata_slave_link_init +EXPORT_SYMBOL_GPL vmlinux 0x5c5a1b16 tick_broadcast_control +EXPORT_SYMBOL_GPL vmlinux 0x5c62ff29 gpiod_set_raw_value +EXPORT_SYMBOL_GPL vmlinux 0x5c6e870e ip6_flush_pending_frames +EXPORT_SYMBOL_GPL vmlinux 0x5c772641 pci_restore_ats_state +EXPORT_SYMBOL_GPL vmlinux 0x5c88c0a3 digsig_verify +EXPORT_SYMBOL_GPL vmlinux 0x5c8f1442 ip6_sk_dst_lookup_flow +EXPORT_SYMBOL_GPL vmlinux 0x5c904d86 dma_buf_end_cpu_access +EXPORT_SYMBOL_GPL vmlinux 0x5c9b8cd7 class_dev_iter_next +EXPORT_SYMBOL_GPL vmlinux 0x5c9e3f7a sdhci_set_uhs_signaling +EXPORT_SYMBOL_GPL vmlinux 0x5cabdced dev_pm_qos_remove_global_notifier +EXPORT_SYMBOL_GPL vmlinux 0x5cc509a4 nsecs_to_jiffies +EXPORT_SYMBOL_GPL vmlinux 0x5cc98fa9 dev_pm_opp_add +EXPORT_SYMBOL_GPL vmlinux 0x5cce9292 devres_remove_group +EXPORT_SYMBOL_GPL vmlinux 0x5ce39fcd serial8250_rx_chars +EXPORT_SYMBOL_GPL vmlinux 0x5cf33106 regulator_count_voltages +EXPORT_SYMBOL_GPL vmlinux 0x5d0a9bbc device_show_int +EXPORT_SYMBOL_GPL vmlinux 0x5d12e48f input_event_to_user +EXPORT_SYMBOL_GPL vmlinux 0x5d1b83a6 sdhci_pci_o2_resume +EXPORT_SYMBOL_GPL vmlinux 0x5d425a14 srcu_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0x5d516585 key_type_encrypted +EXPORT_SYMBOL_GPL vmlinux 0x5d7fd325 regcache_drop_region +EXPORT_SYMBOL_GPL vmlinux 0x5d859c68 snd_soc_of_parse_audio_routing +EXPORT_SYMBOL_GPL vmlinux 0x5d8667a0 hvc_poll +EXPORT_SYMBOL_GPL vmlinux 0x5da67adc zs_compact +EXPORT_SYMBOL_GPL vmlinux 0x5ddf8154 iommu_unmap +EXPORT_SYMBOL_GPL vmlinux 0x5e1748e9 regulator_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x5e5072b0 kvm_get_kvm +EXPORT_SYMBOL_GPL vmlinux 0x5e515be6 ktime_get_ts64 +EXPORT_SYMBOL_GPL vmlinux 0x5e51cd74 swiotlb_nr_tbl +EXPORT_SYMBOL_GPL vmlinux 0x5e56791f tty_prepare_flip_string +EXPORT_SYMBOL_GPL vmlinux 0x5e61e47e pci_common_swizzle +EXPORT_SYMBOL_GPL vmlinux 0x5e690827 omap_dm_timer_stop +EXPORT_SYMBOL_GPL vmlinux 0x5e6b319e devm_add_action +EXPORT_SYMBOL_GPL vmlinux 0x5e701f94 devm_regulator_get +EXPORT_SYMBOL_GPL vmlinux 0x5e885cca register_pernet_device +EXPORT_SYMBOL_GPL vmlinux 0x5e887ec4 i2c_recover_bus +EXPORT_SYMBOL_GPL vmlinux 0x5e916106 disk_get_part +EXPORT_SYMBOL_GPL vmlinux 0x5e925497 irq_domain_add_simple +EXPORT_SYMBOL_GPL vmlinux 0x5ee0ef23 tpm_pm_resume +EXPORT_SYMBOL_GPL vmlinux 0x5ee15909 cpsw_ale_del_vlan +EXPORT_SYMBOL_GPL vmlinux 0x5f056f90 of_pci_get_devfn +EXPORT_SYMBOL_GPL vmlinux 0x5f0ab919 irq_create_mapping +EXPORT_SYMBOL_GPL vmlinux 0x5f481b5c virtqueue_get_vring_size +EXPORT_SYMBOL_GPL vmlinux 0x5f5f6613 skb_complete_wifi_ack +EXPORT_SYMBOL_GPL vmlinux 0x5f794133 unregister_net_sysctl_table +EXPORT_SYMBOL_GPL vmlinux 0x5f7dc10c device_rename +EXPORT_SYMBOL_GPL vmlinux 0x5f84e347 ata_port_wait_eh +EXPORT_SYMBOL_GPL vmlinux 0x5fa95c62 irq_get_domain_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x5fd3e305 snd_soc_bytes_info_ext +EXPORT_SYMBOL_GPL vmlinux 0x60091316 clk_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x601741a2 of_pwm_get +EXPORT_SYMBOL_GPL vmlinux 0x6023033a serial8250_rpm_get +EXPORT_SYMBOL_GPL vmlinux 0x602b45a2 usb_string +EXPORT_SYMBOL_GPL vmlinux 0x6039332c find_vpid +EXPORT_SYMBOL_GPL vmlinux 0x6049c083 input_ff_create +EXPORT_SYMBOL_GPL vmlinux 0x60506751 unmap_kernel_range_noflush +EXPORT_SYMBOL_GPL vmlinux 0x60562192 virtqueue_poll +EXPORT_SYMBOL_GPL vmlinux 0x60626ba4 fib_table_lookup +EXPORT_SYMBOL_GPL vmlinux 0x6062d1dc public_key_subtype +EXPORT_SYMBOL_GPL vmlinux 0x606c74f3 ohci_init_driver +EXPORT_SYMBOL_GPL vmlinux 0x6071eac1 ata_port_pbar_desc +EXPORT_SYMBOL_GPL vmlinux 0x6075d0c7 omap_tll_init +EXPORT_SYMBOL_GPL vmlinux 0x608fbf31 tps65912_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x60a13e90 rcu_barrier +EXPORT_SYMBOL_GPL vmlinux 0x60a188e5 ata_sff_hsm_move +EXPORT_SYMBOL_GPL vmlinux 0x60b52dcf snd_pcm_stream_unlock_irq +EXPORT_SYMBOL_GPL vmlinux 0x60d544f4 raw_unhash_sk +EXPORT_SYMBOL_GPL vmlinux 0x60ef5e91 usb_gadget_probe_driver +EXPORT_SYMBOL_GPL vmlinux 0x610052f2 spi_sync +EXPORT_SYMBOL_GPL vmlinux 0x6135db1e device_attach +EXPORT_SYMBOL_GPL vmlinux 0x614fca46 ata_std_prereset +EXPORT_SYMBOL_GPL vmlinux 0x6157df0c usb_hcd_check_unlink_urb +EXPORT_SYMBOL_GPL vmlinux 0x617edbaa __nvdimm_bus_register +EXPORT_SYMBOL_GPL vmlinux 0x61b445a5 serial8250_clear_and_reinit_fifos +EXPORT_SYMBOL_GPL vmlinux 0x61d56336 component_add +EXPORT_SYMBOL_GPL vmlinux 0x61d950c1 securityfs_create_dir +EXPORT_SYMBOL_GPL vmlinux 0x61de28c0 dm_suspended +EXPORT_SYMBOL_GPL vmlinux 0x62126003 dev_get_regmap +EXPORT_SYMBOL_GPL vmlinux 0x622c7922 register_oom_notifier +EXPORT_SYMBOL_GPL vmlinux 0x622e3ffe __tracepoint_rpm_resume +EXPORT_SYMBOL_GPL vmlinux 0x62346b19 unregister_virtio_driver +EXPORT_SYMBOL_GPL vmlinux 0x62618705 bmp085_remove +EXPORT_SYMBOL_GPL vmlinux 0x6264735c serial8250_release_dma +EXPORT_SYMBOL_GPL vmlinux 0x62768891 mm_kobj +EXPORT_SYMBOL_GPL vmlinux 0x62797829 usb_phy_set_event +EXPORT_SYMBOL_GPL vmlinux 0x628c6c9c bsg_register_queue +EXPORT_SYMBOL_GPL vmlinux 0x6295d425 crypto_unregister_alg +EXPORT_SYMBOL_GPL vmlinux 0x62a3542d crypto_tfm_in_queue +EXPORT_SYMBOL_GPL vmlinux 0x62cdb38b vfs_removexattr +EXPORT_SYMBOL_GPL vmlinux 0x62f96475 power_supply_class +EXPORT_SYMBOL_GPL vmlinux 0x62f9b5a1 platform_driver_unregister +EXPORT_SYMBOL_GPL vmlinux 0x62fd5c39 __devm_of_phy_provider_register +EXPORT_SYMBOL_GPL vmlinux 0x63150e06 clk_get_parent +EXPORT_SYMBOL_GPL vmlinux 0x6318fb27 snd_soc_get_enum_double +EXPORT_SYMBOL_GPL vmlinux 0x639e67f8 snd_soc_component_test_bits +EXPORT_SYMBOL_GPL vmlinux 0x63c7cf11 inet_putpeer +EXPORT_SYMBOL_GPL vmlinux 0x63cd73b0 cpufreq_freq_attr_scaling_boost_freqs +EXPORT_SYMBOL_GPL vmlinux 0x63ef775b fuse_dev_release +EXPORT_SYMBOL_GPL vmlinux 0x63fa7fbc add_mtd_blktrans_dev +EXPORT_SYMBOL_GPL vmlinux 0x63fb5923 spi_sync_locked +EXPORT_SYMBOL_GPL vmlinux 0x6410e160 ktime_mono_to_any +EXPORT_SYMBOL_GPL vmlinux 0x641fff18 da9052_disable_irq +EXPORT_SYMBOL_GPL vmlinux 0x64256424 visitor32 +EXPORT_SYMBOL_GPL vmlinux 0x6445363f __inet_twsk_hashdance +EXPORT_SYMBOL_GPL vmlinux 0x64581d1d crypto_mod_get +EXPORT_SYMBOL_GPL vmlinux 0x645f7260 __pm_stay_awake +EXPORT_SYMBOL_GPL vmlinux 0x647537f3 pl320_ipc_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x647732ea of_reset_control_get +EXPORT_SYMBOL_GPL vmlinux 0x649a6ecf of_platform_populate +EXPORT_SYMBOL_GPL vmlinux 0x64a6ec4b pid_vnr +EXPORT_SYMBOL_GPL vmlinux 0x64b93ae8 __mnt_drop_write +EXPORT_SYMBOL_GPL vmlinux 0x64e74e45 inet_ctl_sock_create +EXPORT_SYMBOL_GPL vmlinux 0x64ef2d39 regulator_bulk_disable +EXPORT_SYMBOL_GPL vmlinux 0x64fe9a54 ata_pci_bmdma_init_one +EXPORT_SYMBOL_GPL vmlinux 0x653a040a regmap_raw_read +EXPORT_SYMBOL_GPL vmlinux 0x655fc8bb power_supply_get_property +EXPORT_SYMBOL_GPL vmlinux 0x655fcb8c icst_clk_register +EXPORT_SYMBOL_GPL vmlinux 0x65756511 snd_soc_of_parse_tdm_slot +EXPORT_SYMBOL_GPL vmlinux 0x6577ee74 regmap_register_patch +EXPORT_SYMBOL_GPL vmlinux 0x6579cfdb ata_sas_port_suspend +EXPORT_SYMBOL_GPL vmlinux 0x659fe0c2 ftrace_set_filter_ip +EXPORT_SYMBOL_GPL vmlinux 0x65b40c56 virtqueue_add_sgs +EXPORT_SYMBOL_GPL vmlinux 0x65bbbc78 schedule_hrtimeout_range +EXPORT_SYMBOL_GPL vmlinux 0x65ccb6f0 call_netevent_notifiers +EXPORT_SYMBOL_GPL vmlinux 0x65da6ae5 crypto_lookup_template +EXPORT_SYMBOL_GPL vmlinux 0x65dc2d18 cpuidle_disable_device +EXPORT_SYMBOL_GPL vmlinux 0x66032dee crypto_grab_skcipher +EXPORT_SYMBOL_GPL vmlinux 0x661601de sprint_symbol +EXPORT_SYMBOL_GPL vmlinux 0x6636c3c9 irq_set_vcpu_affinity +EXPORT_SYMBOL_GPL vmlinux 0x66437c01 crypto_hash_walk_done +EXPORT_SYMBOL_GPL vmlinux 0x66515e61 blkg_conf_finish +EXPORT_SYMBOL_GPL vmlinux 0x6675aa6c crypto_init_spawn +EXPORT_SYMBOL_GPL vmlinux 0x667cf8d3 rhashtable_walk_stop +EXPORT_SYMBOL_GPL vmlinux 0x668402aa crypto_put_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x669da1fd kvm_set_pfn_dirty +EXPORT_SYMBOL_GPL vmlinux 0x66a02b10 pinconf_generic_dt_subnode_to_map +EXPORT_SYMBOL_GPL vmlinux 0x66c03779 ata_pci_sff_init_host +EXPORT_SYMBOL_GPL vmlinux 0x66c6b8a7 tcp_ca_get_name_by_key +EXPORT_SYMBOL_GPL vmlinux 0x66d87d38 symbol_put_addr +EXPORT_SYMBOL_GPL vmlinux 0x66f952e0 fwnode_property_read_string +EXPORT_SYMBOL_GPL vmlinux 0x6705b7be snd_soc_dpcm_be_get_state +EXPORT_SYMBOL_GPL vmlinux 0x6707cd6c regmap_async_complete +EXPORT_SYMBOL_GPL vmlinux 0x6733461b mddev_unlock +EXPORT_SYMBOL_GPL vmlinux 0x6733c1c8 pci_max_pasids +EXPORT_SYMBOL_GPL vmlinux 0x673b5656 bpf_prog_realloc +EXPORT_SYMBOL_GPL vmlinux 0x674e13e1 public_key_destroy +EXPORT_SYMBOL_GPL vmlinux 0x6754ac18 clk_get_parent_by_index +EXPORT_SYMBOL_GPL vmlinux 0x676fbca9 ata_host_suspend +EXPORT_SYMBOL_GPL vmlinux 0x677beeeb ahci_platform_disable_regulators +EXPORT_SYMBOL_GPL vmlinux 0x6784d258 of_clk_set_defaults +EXPORT_SYMBOL_GPL vmlinux 0x67955ce6 profile_hits +EXPORT_SYMBOL_GPL vmlinux 0x6795f533 register_net_sysctl +EXPORT_SYMBOL_GPL vmlinux 0x67a70c72 spi_master_resume +EXPORT_SYMBOL_GPL vmlinux 0x67a985fb snd_soc_runtime_set_dai_fmt +EXPORT_SYMBOL_GPL vmlinux 0x67ab3865 gpiod_set_array_value +EXPORT_SYMBOL_GPL vmlinux 0x67b9ae75 cpsw_ale_control_set +EXPORT_SYMBOL_GPL vmlinux 0x67c413dd blk_trace_setup +EXPORT_SYMBOL_GPL vmlinux 0x67c99558 gpiod_get_array +EXPORT_SYMBOL_GPL vmlinux 0x67d62567 mtd_lock_user_prot_reg +EXPORT_SYMBOL_GPL vmlinux 0x67f43707 page_endio +EXPORT_SYMBOL_GPL vmlinux 0x681c3d97 snd_ctl_sync_vmaster +EXPORT_SYMBOL_GPL vmlinux 0x684656ef usb_get_descriptor +EXPORT_SYMBOL_GPL vmlinux 0x6848a9d2 __pneigh_lookup +EXPORT_SYMBOL_GPL vmlinux 0x6851432b deregister_mtd_parser +EXPORT_SYMBOL_GPL vmlinux 0x685b15be alarm_try_to_cancel +EXPORT_SYMBOL_GPL vmlinux 0x68603062 pci_user_write_config_word +EXPORT_SYMBOL_GPL vmlinux 0x6862f4b8 of_get_fb_videomode +EXPORT_SYMBOL_GPL vmlinux 0x688faae3 hvc_alloc +EXPORT_SYMBOL_GPL vmlinux 0x68acfc98 sock_diag_unregister_inet_compat +EXPORT_SYMBOL_GPL vmlinux 0x68cf8375 of_clk_src_simple_get +EXPORT_SYMBOL_GPL vmlinux 0x68e47b2c cpdma_ctlr_destroy +EXPORT_SYMBOL_GPL vmlinux 0x68f34142 device_wakeup_disable +EXPORT_SYMBOL_GPL vmlinux 0x68f3f6cb rt_mutex_trylock +EXPORT_SYMBOL_GPL vmlinux 0x6923ce63 irq_work_sync +EXPORT_SYMBOL_GPL vmlinux 0x692b0692 irq_domain_associate_many +EXPORT_SYMBOL_GPL vmlinux 0x693d401f scsi_internal_device_unblock +EXPORT_SYMBOL_GPL vmlinux 0x69447467 ring_buffer_write +EXPORT_SYMBOL_GPL vmlinux 0x6945725e mpi_read_raw_data +EXPORT_SYMBOL_GPL vmlinux 0x694be42a usb_show_dynids +EXPORT_SYMBOL_GPL vmlinux 0x69527c66 md_stop_writes +EXPORT_SYMBOL_GPL vmlinux 0x695d31f5 snd_dmaengine_pcm_open +EXPORT_SYMBOL_GPL vmlinux 0x697731c9 pm_generic_suspend_late +EXPORT_SYMBOL_GPL vmlinux 0x697c5d0d tracing_snapshot_alloc +EXPORT_SYMBOL_GPL vmlinux 0x6980b3d7 usb_set_interface +EXPORT_SYMBOL_GPL vmlinux 0x698a899f ring_buffer_peek +EXPORT_SYMBOL_GPL vmlinux 0x69a39fce usb_driver_set_configuration +EXPORT_SYMBOL_GPL vmlinux 0x69a8beed bio_associate_current +EXPORT_SYMBOL_GPL vmlinux 0x69ba9fac skb_to_sgvec_nomark +EXPORT_SYMBOL_GPL vmlinux 0x69c49df8 bitmap_resize +EXPORT_SYMBOL_GPL vmlinux 0x69d0053d inet_twsk_alloc +EXPORT_SYMBOL_GPL vmlinux 0x69deb7bb ata_pci_remove_one +EXPORT_SYMBOL_GPL vmlinux 0x69fa1227 irq_of_parse_and_map +EXPORT_SYMBOL_GPL vmlinux 0x69fea0ff led_trigger_set +EXPORT_SYMBOL_GPL vmlinux 0x6a0a88fe sdhci_pci_o2_probe +EXPORT_SYMBOL_GPL vmlinux 0x6a10eeae tasklet_hrtimer_init +EXPORT_SYMBOL_GPL vmlinux 0x6a1733eb iommu_group_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x6a1b69b3 rdev_set_badblocks +EXPORT_SYMBOL_GPL vmlinux 0x6a1d2ab7 ohci_setup +EXPORT_SYMBOL_GPL vmlinux 0x6a1e732d iommu_domain_set_attr +EXPORT_SYMBOL_GPL vmlinux 0x6a2b641e ata_platform_remove_one +EXPORT_SYMBOL_GPL vmlinux 0x6a3d033c pci_find_next_capability +EXPORT_SYMBOL_GPL vmlinux 0x6a441db8 __tracepoint_block_unplug +EXPORT_SYMBOL_GPL vmlinux 0x6a4f623b mmu_notifier_synchronize +EXPORT_SYMBOL_GPL vmlinux 0x6a5fb566 rcu_sched_force_quiescent_state +EXPORT_SYMBOL_GPL vmlinux 0x6a648e76 sched_setattr +EXPORT_SYMBOL_GPL vmlinux 0x6a7971dd task_user_regset_view +EXPORT_SYMBOL_GPL vmlinux 0x6a886030 of_property_match_string +EXPORT_SYMBOL_GPL vmlinux 0x6b2657f5 fat_get_dotdot_entry +EXPORT_SYMBOL_GPL vmlinux 0x6b29a1fa ring_buffer_event_length +EXPORT_SYMBOL_GPL vmlinux 0x6b29c7bd ata_host_resume +EXPORT_SYMBOL_GPL vmlinux 0x6b3951cc dev_pm_opp_remove +EXPORT_SYMBOL_GPL vmlinux 0x6b440e4a pinctrl_register +EXPORT_SYMBOL_GPL vmlinux 0x6b45e902 of_modalias_node +EXPORT_SYMBOL_GPL vmlinux 0x6b5be689 eventfd_ctx_fileget +EXPORT_SYMBOL_GPL vmlinux 0x6b69f7a8 cpufreq_freq_attr_scaling_available_freqs +EXPORT_SYMBOL_GPL vmlinux 0x6b71c5d6 tps6586x_irq_get_virq +EXPORT_SYMBOL_GPL vmlinux 0x6b770f49 decode_bch +EXPORT_SYMBOL_GPL vmlinux 0x6b7b7978 spi_get_next_queued_message +EXPORT_SYMBOL_GPL vmlinux 0x6b81c38b power_supply_unreg_notifier +EXPORT_SYMBOL_GPL vmlinux 0x6ba259c6 of_fixed_factor_clk_setup +EXPORT_SYMBOL_GPL vmlinux 0x6bc51a4e kvm_vcpu_on_spin +EXPORT_SYMBOL_GPL vmlinux 0x6bc99bfe blkio_cgrp_subsys +EXPORT_SYMBOL_GPL vmlinux 0x6bd437b1 use_mm +EXPORT_SYMBOL_GPL vmlinux 0x6be7cd8f dma_buf_kmap +EXPORT_SYMBOL_GPL vmlinux 0x6bf16cea irq_find_host +EXPORT_SYMBOL_GPL vmlinux 0x6bfc85fd sata_set_spd +EXPORT_SYMBOL_GPL vmlinux 0x6c07d933 add_uevent_var +EXPORT_SYMBOL_GPL vmlinux 0x6c209eab __alloc_percpu_gfp +EXPORT_SYMBOL_GPL vmlinux 0x6c281b70 sdio_release_irq +EXPORT_SYMBOL_GPL vmlinux 0x6c3a8d1b pm_stay_awake +EXPORT_SYMBOL_GPL vmlinux 0x6c4b6684 reset_control_assert +EXPORT_SYMBOL_GPL vmlinux 0x6c501684 wm8350_block_read +EXPORT_SYMBOL_GPL vmlinux 0x6c75e525 device_create_vargs +EXPORT_SYMBOL_GPL vmlinux 0x6c79d155 sysfs_create_file_ns +EXPORT_SYMBOL_GPL vmlinux 0x6c7ead7a crypto_unregister_shashes +EXPORT_SYMBOL_GPL vmlinux 0x6c90a893 sock_prot_inuse_get +EXPORT_SYMBOL_GPL vmlinux 0x6ca172bf irq_set_default_host +EXPORT_SYMBOL_GPL vmlinux 0x6ca4bf88 async_synchronize_full_domain +EXPORT_SYMBOL_GPL vmlinux 0x6cbe9a0d rtc_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x6cc56f5f pci_user_write_config_dword +EXPORT_SYMBOL_GPL vmlinux 0x6cc78c5c set_irq_flags +EXPORT_SYMBOL_GPL vmlinux 0x6ccdd4af inet_getpeer +EXPORT_SYMBOL_GPL vmlinux 0x6cd21997 ata_tf_to_fis +EXPORT_SYMBOL_GPL vmlinux 0x6cdc27c4 do_unregister_con_driver +EXPORT_SYMBOL_GPL vmlinux 0x6cec9da0 get_task_mm +EXPORT_SYMBOL_GPL vmlinux 0x6cf46890 snd_soc_jack_free_gpios +EXPORT_SYMBOL_GPL vmlinux 0x6d0e43b2 regmap_raw_write_async +EXPORT_SYMBOL_GPL vmlinux 0x6d2fc5a6 net_namespace_list +EXPORT_SYMBOL_GPL vmlinux 0x6d3b527c ahci_platform_enable_resources +EXPORT_SYMBOL_GPL vmlinux 0x6d424356 register_kprobes +EXPORT_SYMBOL_GPL vmlinux 0x6d479f30 __trace_note_message +EXPORT_SYMBOL_GPL vmlinux 0x6d557e8a device_show_bool +EXPORT_SYMBOL_GPL vmlinux 0x6d8a20cc nd_cmd_out_size +EXPORT_SYMBOL_GPL vmlinux 0x6d9e6969 pm_generic_suspend_noirq +EXPORT_SYMBOL_GPL vmlinux 0x6daf5ab4 of_pci_parse_bus_range +EXPORT_SYMBOL_GPL vmlinux 0x6db77456 phy_pm_runtime_get +EXPORT_SYMBOL_GPL vmlinux 0x6db9fe6f extcon_set_state +EXPORT_SYMBOL_GPL vmlinux 0x6dbc43f9 br_fdb_test_addr_hook +EXPORT_SYMBOL_GPL vmlinux 0x6dc406c9 musb_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x6dc95097 sdio_writel +EXPORT_SYMBOL_GPL vmlinux 0x6ddf149c need_load_eval +EXPORT_SYMBOL_GPL vmlinux 0x6dec7ed8 led_trigger_blink_oneshot +EXPORT_SYMBOL_GPL vmlinux 0x6df93574 kvm_vcpu_read_guest +EXPORT_SYMBOL_GPL vmlinux 0x6e027102 ata_sas_sync_probe +EXPORT_SYMBOL_GPL vmlinux 0x6e04a077 usb_bind_phy +EXPORT_SYMBOL_GPL vmlinux 0x6e074e14 __rtnl_af_unregister +EXPORT_SYMBOL_GPL vmlinux 0x6e245dda platform_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x6e282a89 simple_attr_open +EXPORT_SYMBOL_GPL vmlinux 0x6e2b1501 ftrace_set_notrace +EXPORT_SYMBOL_GPL vmlinux 0x6e3ebdfb pwm_config +EXPORT_SYMBOL_GPL vmlinux 0x6e468357 ehci_cf_port_reset_rwsem +EXPORT_SYMBOL_GPL vmlinux 0x6e47caf5 sock_diag_check_cookie +EXPORT_SYMBOL_GPL vmlinux 0x6e51afc8 percpu_ref_kill_and_confirm +EXPORT_SYMBOL_GPL vmlinux 0x6e5e13fd pm_runtime_set_memalloc_noio +EXPORT_SYMBOL_GPL vmlinux 0x6e7943ec iommu_group_id +EXPORT_SYMBOL_GPL vmlinux 0x6e89a560 regmap_irq_chip_get_base +EXPORT_SYMBOL_GPL vmlinux 0x6e92eb36 bmp085_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0x6eaf78e2 ata_qc_complete_multiple +EXPORT_SYMBOL_GPL vmlinux 0x6ebcced1 __fsnotify_parent +EXPORT_SYMBOL_GPL vmlinux 0x6ec80784 bgpio_init +EXPORT_SYMBOL_GPL vmlinux 0x6ef1058d nd_region_provider_data +EXPORT_SYMBOL_GPL vmlinux 0x6f100d09 usb_autopm_get_interface_no_resume +EXPORT_SYMBOL_GPL vmlinux 0x6f1ee69e kgdb_unregister_io_module +EXPORT_SYMBOL_GPL vmlinux 0x6f3d96c0 unregister_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x6f640c2f fb_deferred_io_fsync +EXPORT_SYMBOL_GPL vmlinux 0x6f66deb4 reset_controller_unregister +EXPORT_SYMBOL_GPL vmlinux 0x6f89c179 usb_unlocked_disable_lpm +EXPORT_SYMBOL_GPL vmlinux 0x6f97d075 rdev_get_dev +EXPORT_SYMBOL_GPL vmlinux 0x6fb94449 omap_dm_timer_request_by_cap +EXPORT_SYMBOL_GPL vmlinux 0x6fbb3bd9 init_rs_non_canonical +EXPORT_SYMBOL_GPL vmlinux 0x6fde9337 blocking_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0x6fe3d8cf ktime_add_safe +EXPORT_SYMBOL_GPL vmlinux 0x6ff607b6 crypto_get_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x7056b6f2 __clk_get_name +EXPORT_SYMBOL_GPL vmlinux 0x7063da7d wm5102_spi_regmap +EXPORT_SYMBOL_GPL vmlinux 0x7065f61b register_kretprobe +EXPORT_SYMBOL_GPL vmlinux 0x707ff1bb ata_xfer_mask2mode +EXPORT_SYMBOL_GPL vmlinux 0x7084d4e9 platform_device_put +EXPORT_SYMBOL_GPL vmlinux 0x70899ec3 ata_dev_pair +EXPORT_SYMBOL_GPL vmlinux 0x70bbc307 snd_soc_dapm_info_pin_switch +EXPORT_SYMBOL_GPL vmlinux 0x70c362d0 unregister_kretprobe +EXPORT_SYMBOL_GPL vmlinux 0x70cf032f usb_hcd_irq +EXPORT_SYMBOL_GPL vmlinux 0x71008581 atomic_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x710c73b6 crypto_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x715ea861 crypto_register_aead +EXPORT_SYMBOL_GPL vmlinux 0x716265c7 debugfs_initialized +EXPORT_SYMBOL_GPL vmlinux 0x71747818 iommu_group_remove_device +EXPORT_SYMBOL_GPL vmlinux 0x717f2d62 tcp_slow_start +EXPORT_SYMBOL_GPL vmlinux 0x71887cef __clocksource_update_freq_scale +EXPORT_SYMBOL_GPL vmlinux 0x719e17ff clk_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0x71a85af3 led_trigger_register_simple +EXPORT_SYMBOL_GPL vmlinux 0x71b44d39 __netpoll_free_async +EXPORT_SYMBOL_GPL vmlinux 0x71c29660 rtc_irq_set_freq +EXPORT_SYMBOL_GPL vmlinux 0x71c438fe __clk_determine_rate +EXPORT_SYMBOL_GPL vmlinux 0x71d05454 show_class_attr_string +EXPORT_SYMBOL_GPL vmlinux 0x71dc9998 crypto_il_tab +EXPORT_SYMBOL_GPL vmlinux 0x71e3f95e ata_bmdma_start +EXPORT_SYMBOL_GPL vmlinux 0x720f3ed6 gfn_to_pfn_atomic +EXPORT_SYMBOL_GPL vmlinux 0x72195e88 blk_queue_dma_drain +EXPORT_SYMBOL_GPL vmlinux 0x72234dd6 musb_readw +EXPORT_SYMBOL_GPL vmlinux 0x723d23f2 debugfs_create_u64 +EXPORT_SYMBOL_GPL vmlinux 0x72515d5a snprint_stack_trace +EXPORT_SYMBOL_GPL vmlinux 0x725fc9d8 rhashtable_walk_exit +EXPORT_SYMBOL_GPL vmlinux 0x72741f25 trace_vbprintk +EXPORT_SYMBOL_GPL vmlinux 0x7278d328 all_vm_events +EXPORT_SYMBOL_GPL vmlinux 0x7291019b __cci_control_port_by_index +EXPORT_SYMBOL_GPL vmlinux 0x72a95cb4 shmem_truncate_range +EXPORT_SYMBOL_GPL vmlinux 0x72aa0071 phy_pm_runtime_forbid +EXPORT_SYMBOL_GPL vmlinux 0x72c94f25 snd_soc_platform_read +EXPORT_SYMBOL_GPL vmlinux 0x72ed89d3 edac_subsys +EXPORT_SYMBOL_GPL vmlinux 0x7302f19d pci_reset_slot +EXPORT_SYMBOL_GPL vmlinux 0x730bd0c7 asic3_write_register +EXPORT_SYMBOL_GPL vmlinux 0x730fe66f task_cls_state +EXPORT_SYMBOL_GPL vmlinux 0x73170d0c tcp_twsk_destructor +EXPORT_SYMBOL_GPL vmlinux 0x7325047d sysfs_remove_link +EXPORT_SYMBOL_GPL vmlinux 0x73420b2e sdhci_pltfm_init +EXPORT_SYMBOL_GPL vmlinux 0x73493c6b reset_controller_register +EXPORT_SYMBOL_GPL vmlinux 0x73510609 fl6_update_dst +EXPORT_SYMBOL_GPL vmlinux 0x735d27c7 mddev_congested +EXPORT_SYMBOL_GPL vmlinux 0x7361c9ff sdio_claim_irq +EXPORT_SYMBOL_GPL vmlinux 0x73660c52 kvm_write_guest_page +EXPORT_SYMBOL_GPL vmlinux 0x737278c1 ata_sff_qc_issue +EXPORT_SYMBOL_GPL vmlinux 0x738a0f1e device_remove_file +EXPORT_SYMBOL_GPL vmlinux 0x73a48b4a ata_sff_std_ports +EXPORT_SYMBOL_GPL vmlinux 0x73b3b626 blkcipher_aead_walk_virt_block +EXPORT_SYMBOL_GPL vmlinux 0x73b8fbc4 spi_write_then_read +EXPORT_SYMBOL_GPL vmlinux 0x73b98231 asymmetric_key_generate_id +EXPORT_SYMBOL_GPL vmlinux 0x73c832f2 ata_dev_classify +EXPORT_SYMBOL_GPL vmlinux 0x73cbb988 regulator_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x73d69364 ring_buffer_change_overwrite +EXPORT_SYMBOL_GPL vmlinux 0x73e4edf3 gpiochip_request_own_desc +EXPORT_SYMBOL_GPL vmlinux 0x73ff996f i2c_new_dummy +EXPORT_SYMBOL_GPL vmlinux 0x7428e964 tty_encode_baud_rate +EXPORT_SYMBOL_GPL vmlinux 0x742def44 __tracepoint_block_bio_remap +EXPORT_SYMBOL_GPL vmlinux 0x743a165e ata_pack_xfermask +EXPORT_SYMBOL_GPL vmlinux 0x74598101 sdio_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0x7464ea38 dev_pm_qos_add_global_notifier +EXPORT_SYMBOL_GPL vmlinux 0x747671bf vfs_truncate +EXPORT_SYMBOL_GPL vmlinux 0x7479b49c ata_pci_device_do_suspend +EXPORT_SYMBOL_GPL vmlinux 0x748d801a pcap_adc_sync +EXPORT_SYMBOL_GPL vmlinux 0x74ae3a01 handle_simple_irq +EXPORT_SYMBOL_GPL vmlinux 0x74b5ea68 lcm_not_zero +EXPORT_SYMBOL_GPL vmlinux 0x74baf17a tracing_is_on +EXPORT_SYMBOL_GPL vmlinux 0x74d3b7de regulator_get_linear_step +EXPORT_SYMBOL_GPL vmlinux 0x74e2ec36 dev_pm_qos_hide_latency_tolerance +EXPORT_SYMBOL_GPL vmlinux 0x74ef0d4f sysfs_update_group +EXPORT_SYMBOL_GPL vmlinux 0x750800c9 ata_std_bios_param +EXPORT_SYMBOL_GPL vmlinux 0x751077b1 cpufreq_governor_dbs +EXPORT_SYMBOL_GPL vmlinux 0x7522f3ba irq_modify_status +EXPORT_SYMBOL_GPL vmlinux 0x7523b6f8 iommu_group_get +EXPORT_SYMBOL_GPL vmlinux 0x752b291e sm501_find_clock +EXPORT_SYMBOL_GPL vmlinux 0x75381e57 ip6_dst_lookup +EXPORT_SYMBOL_GPL vmlinux 0x7538e363 sata_lpm_ignore_phy_events +EXPORT_SYMBOL_GPL vmlinux 0x75494ae9 shash_free_instance +EXPORT_SYMBOL_GPL vmlinux 0x754b3802 page_cache_async_readahead +EXPORT_SYMBOL_GPL vmlinux 0x754bfda8 snd_soc_bytes_tlv_callback +EXPORT_SYMBOL_GPL vmlinux 0x75519604 anon_inode_getfile +EXPORT_SYMBOL_GPL vmlinux 0x755f6f50 debugfs_create_size_t +EXPORT_SYMBOL_GPL vmlinux 0x757d67f7 arizona_of_get_type +EXPORT_SYMBOL_GPL vmlinux 0x758a782e blk_fill_rwbs +EXPORT_SYMBOL_GPL vmlinux 0x75bbc158 pci_restore_msi_state +EXPORT_SYMBOL_GPL vmlinux 0x75c6a98d thermal_zone_bind_cooling_device +EXPORT_SYMBOL_GPL vmlinux 0x760c9475 virtqueue_enable_cb_delayed +EXPORT_SYMBOL_GPL vmlinux 0x761e0aca btree_get_prev +EXPORT_SYMBOL_GPL vmlinux 0x7622b63c driver_register +EXPORT_SYMBOL_GPL vmlinux 0x76240879 crypto_spawn_tfm +EXPORT_SYMBOL_GPL vmlinux 0x7639b679 perf_event_enable +EXPORT_SYMBOL_GPL vmlinux 0x764928a2 cpdma_chan_create +EXPORT_SYMBOL_GPL vmlinux 0x7681946c unregister_pm_notifier +EXPORT_SYMBOL_GPL vmlinux 0x768720d2 ping_get_port +EXPORT_SYMBOL_GPL vmlinux 0x769d52d8 platform_bus +EXPORT_SYMBOL_GPL vmlinux 0x76baa511 bio_associate_blkcg +EXPORT_SYMBOL_GPL vmlinux 0x76be7b14 dm_get_table_device +EXPORT_SYMBOL_GPL vmlinux 0x76cc7933 debugfs_rename +EXPORT_SYMBOL_GPL vmlinux 0x76d1e6f0 sdhci_runtime_suspend_host +EXPORT_SYMBOL_GPL vmlinux 0x76d32355 dev_set_name +EXPORT_SYMBOL_GPL vmlinux 0x76d9b876 clk_set_rate +EXPORT_SYMBOL_GPL vmlinux 0x76e65934 power_supply_property_is_writeable +EXPORT_SYMBOL_GPL vmlinux 0x76f6f500 usb_store_new_id +EXPORT_SYMBOL_GPL vmlinux 0x770cf981 tpm_send +EXPORT_SYMBOL_GPL vmlinux 0x771c1ae7 regulator_bulk_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x7729cbdd task_handoff_register +EXPORT_SYMBOL_GPL vmlinux 0x773a2e65 blk_add_driver_data +EXPORT_SYMBOL_GPL vmlinux 0x7754bc11 dm_hold +EXPORT_SYMBOL_GPL vmlinux 0x7757b51a clk_unregister +EXPORT_SYMBOL_GPL vmlinux 0x776bc830 virtqueue_get_buf +EXPORT_SYMBOL_GPL vmlinux 0x777d1535 da903x_update +EXPORT_SYMBOL_GPL vmlinux 0x779359fe usb_put_phy +EXPORT_SYMBOL_GPL vmlinux 0x77b95747 crypto_larval_kill +EXPORT_SYMBOL_GPL vmlinux 0x77ba26fb spi_master_suspend +EXPORT_SYMBOL_GPL vmlinux 0x77c23ef5 inet_unhash +EXPORT_SYMBOL_GPL vmlinux 0x77d908e0 kvm_init +EXPORT_SYMBOL_GPL vmlinux 0x77f85b07 of_display_timings_exist +EXPORT_SYMBOL_GPL vmlinux 0x77fe180d crypto_register_rng +EXPORT_SYMBOL_GPL vmlinux 0x7809c586 devm_power_supply_get_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0x783037a8 pm_genpd_syscore_poweroff +EXPORT_SYMBOL_GPL vmlinux 0x78368c02 dev_pm_opp_get_freq +EXPORT_SYMBOL_GPL vmlinux 0x783c78cf dev_attr_sw_activity +EXPORT_SYMBOL_GPL vmlinux 0x783c81ee usb_hub_find_child +EXPORT_SYMBOL_GPL vmlinux 0x783cf1ee blkg_conf_prep +EXPORT_SYMBOL_GPL vmlinux 0x785306e5 xfrm_audit_state_icvfail +EXPORT_SYMBOL_GPL vmlinux 0x7856f8de usb_gadget_set_state +EXPORT_SYMBOL_GPL vmlinux 0x7858ce8e blkcg_policy_register +EXPORT_SYMBOL_GPL vmlinux 0x785deba8 key_set_timeout +EXPORT_SYMBOL_GPL vmlinux 0x78ae8175 smp_call_function_single_async +EXPORT_SYMBOL_GPL vmlinux 0x7912d832 mtd_del_partition +EXPORT_SYMBOL_GPL vmlinux 0x792c5e9a ip6_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x7931c963 cpsw_ale_control_get +EXPORT_SYMBOL_GPL vmlinux 0x7944e0fc tracing_off +EXPORT_SYMBOL_GPL vmlinux 0x794b7271 orderly_reboot +EXPORT_SYMBOL_GPL vmlinux 0x7966a4a3 pinctrl_find_gpio_range_from_pin +EXPORT_SYMBOL_GPL vmlinux 0x796c2d48 dm_get_md +EXPORT_SYMBOL_GPL vmlinux 0x796f0596 dev_pm_put_subsys_data +EXPORT_SYMBOL_GPL vmlinux 0x79963f6c smpboot_unregister_percpu_thread +EXPORT_SYMBOL_GPL vmlinux 0x79b156dc amba_device_alloc +EXPORT_SYMBOL_GPL vmlinux 0x79c528a9 devm_get_free_pages +EXPORT_SYMBOL_GPL vmlinux 0x79dc6542 __lock_page_killable +EXPORT_SYMBOL_GPL vmlinux 0x79defbe1 kthread_should_park +EXPORT_SYMBOL_GPL vmlinux 0x79e45957 device_show_ulong +EXPORT_SYMBOL_GPL vmlinux 0x79f41d5b try_get_online_cpus +EXPORT_SYMBOL_GPL vmlinux 0x7a084541 blocking_notifier_chain_cond_register +EXPORT_SYMBOL_GPL vmlinux 0x7a2e4b44 ezx_pcap_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x7a319404 clk_register_fixed_rate +EXPORT_SYMBOL_GPL vmlinux 0x7a3627a5 regmap_can_raw_write +EXPORT_SYMBOL_GPL vmlinux 0x7a57aaa7 bus_find_device_by_name +EXPORT_SYMBOL_GPL vmlinux 0x7a850d30 tps65912_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x7a8913c2 tc3589x_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x7a8b79c1 verify_signature +EXPORT_SYMBOL_GPL vmlinux 0x7a8f9d26 __page_file_index +EXPORT_SYMBOL_GPL vmlinux 0x7a944007 rcu_idle_enter +EXPORT_SYMBOL_GPL vmlinux 0x7a99f5e5 wm8350_clear_bits +EXPORT_SYMBOL_GPL vmlinux 0x7aa51012 tty_port_install +EXPORT_SYMBOL_GPL vmlinux 0x7aa64803 kvm_release_pfn_clean +EXPORT_SYMBOL_GPL vmlinux 0x7ab3ca18 eventfd_ctx_read +EXPORT_SYMBOL_GPL vmlinux 0x7b0f1ab3 ring_buffer_free_read_page +EXPORT_SYMBOL_GPL vmlinux 0x7b1308f8 regmap_get_max_register +EXPORT_SYMBOL_GPL vmlinux 0x7b1b1430 debugfs_print_regs32 +EXPORT_SYMBOL_GPL vmlinux 0x7b1d544d edac_handler_set +EXPORT_SYMBOL_GPL vmlinux 0x7b26a6be of_get_phy_mode +EXPORT_SYMBOL_GPL vmlinux 0x7b309f87 __bpf_prog_free +EXPORT_SYMBOL_GPL vmlinux 0x7b4710c5 sata_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x7b48a5dd usb_put_intf +EXPORT_SYMBOL_GPL vmlinux 0x7b5789c0 snd_soc_dai_set_fmt +EXPORT_SYMBOL_GPL vmlinux 0x7b712479 inverse_translate +EXPORT_SYMBOL_GPL vmlinux 0x7b8b8baf fat_setattr +EXPORT_SYMBOL_GPL vmlinux 0x7b95952e wait_for_stable_page +EXPORT_SYMBOL_GPL vmlinux 0x7b9eef37 elv_register +EXPORT_SYMBOL_GPL vmlinux 0x7bb3beb4 rhashtable_walk_start +EXPORT_SYMBOL_GPL vmlinux 0x7bc5de58 __irq_set_handler +EXPORT_SYMBOL_GPL vmlinux 0x7bf697b6 kernfs_path +EXPORT_SYMBOL_GPL vmlinux 0x7c1847fc input_ff_destroy +EXPORT_SYMBOL_GPL vmlinux 0x7c346357 pkey_algo +EXPORT_SYMBOL_GPL vmlinux 0x7c5554ff sdio_disable_func +EXPORT_SYMBOL_GPL vmlinux 0x7c57f732 register_trace_event +EXPORT_SYMBOL_GPL vmlinux 0x7c6a49ce unix_table_lock +EXPORT_SYMBOL_GPL vmlinux 0x7c7da8b7 regulator_enable_regmap +EXPORT_SYMBOL_GPL vmlinux 0x7c819727 wm8350_device_exit +EXPORT_SYMBOL_GPL vmlinux 0x7c946453 rtc_update_irq_enable +EXPORT_SYMBOL_GPL vmlinux 0x7c95de28 devm_pinctrl_get +EXPORT_SYMBOL_GPL vmlinux 0x7c9a7371 clk_prepare +EXPORT_SYMBOL_GPL vmlinux 0x7c9cca56 list_lru_count_node +EXPORT_SYMBOL_GPL vmlinux 0x7ca09348 apply_to_page_range +EXPORT_SYMBOL_GPL vmlinux 0x7cd306b7 inet_twsk_schedule +EXPORT_SYMBOL_GPL vmlinux 0x7cd6f042 cpufreq_get_current_driver +EXPORT_SYMBOL_GPL vmlinux 0x7ce05cdd of_property_count_elems_of_size +EXPORT_SYMBOL_GPL vmlinux 0x7ce8c628 kvm_vcpu_kick +EXPORT_SYMBOL_GPL vmlinux 0x7ceaf0d5 generic_handle_irq +EXPORT_SYMBOL_GPL vmlinux 0x7cfedac0 __netlink_alloc_skb +EXPORT_SYMBOL_GPL vmlinux 0x7d00c65b nd_synchronize +EXPORT_SYMBOL_GPL vmlinux 0x7d022784 i2c_slave_register +EXPORT_SYMBOL_GPL vmlinux 0x7d118dda of_init_opp_table +EXPORT_SYMBOL_GPL vmlinux 0x7d222183 crypto_alloc_instance2 +EXPORT_SYMBOL_GPL vmlinux 0x7d365b5e skcipher_geniv_free +EXPORT_SYMBOL_GPL vmlinux 0x7d4dd900 dev_pm_qos_update_request +EXPORT_SYMBOL_GPL vmlinux 0x7d4fe472 bdev_read_page +EXPORT_SYMBOL_GPL vmlinux 0x7d5844f3 device_property_read_u8_array +EXPORT_SYMBOL_GPL vmlinux 0x7d59dd46 pm_wq +EXPORT_SYMBOL_GPL vmlinux 0x7d71dbba of_pci_find_msi_chip_by_node +EXPORT_SYMBOL_GPL vmlinux 0x7d8209e2 xhci_suspend +EXPORT_SYMBOL_GPL vmlinux 0x7d885a32 init_user_ns +EXPORT_SYMBOL_GPL vmlinux 0x7dab26b6 wm831x_isinkv_values +EXPORT_SYMBOL_GPL vmlinux 0x7db21987 __class_create +EXPORT_SYMBOL_GPL vmlinux 0x7dd04181 dma_run_dependencies +EXPORT_SYMBOL_GPL vmlinux 0x7dd3fc65 ata_sff_freeze +EXPORT_SYMBOL_GPL vmlinux 0x7dd43eba ahci_init_controller +EXPORT_SYMBOL_GPL vmlinux 0x7dda30af unregister_tracepoint_module_notifier +EXPORT_SYMBOL_GPL vmlinux 0x7e39f4ee usb_alloc_urb +EXPORT_SYMBOL_GPL vmlinux 0x7e42ba67 pm_generic_resume_noirq +EXPORT_SYMBOL_GPL vmlinux 0x7e606130 snd_soc_calc_bclk +EXPORT_SYMBOL_GPL vmlinux 0x7e64181d usb_calc_bus_time +EXPORT_SYMBOL_GPL vmlinux 0x7e6fb913 nd_cmd_in_size +EXPORT_SYMBOL_GPL vmlinux 0x7ed2f0d3 phy_put +EXPORT_SYMBOL_GPL vmlinux 0x7ed68941 asic3_read_register +EXPORT_SYMBOL_GPL vmlinux 0x7ed71195 pinctrl_get +EXPORT_SYMBOL_GPL vmlinux 0x7f6de508 fuse_put_request +EXPORT_SYMBOL_GPL vmlinux 0x7f7ce067 usb_phy_generic_register +EXPORT_SYMBOL_GPL vmlinux 0x7fa141fb sdio_writeb_readb +EXPORT_SYMBOL_GPL vmlinux 0x7fbb5711 probes_decode_arm_table +EXPORT_SYMBOL_GPL vmlinux 0x7fc1b318 sg_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x7fd36e3e system_trusted_keyring +EXPORT_SYMBOL_GPL vmlinux 0x7fda4f78 ping_recvmsg +EXPORT_SYMBOL_GPL vmlinux 0x7ff75640 ip_local_out_sk +EXPORT_SYMBOL_GPL vmlinux 0x801019cf key_type_asymmetric +EXPORT_SYMBOL_GPL vmlinux 0x8010d2c6 percpu_ida_free +EXPORT_SYMBOL_GPL vmlinux 0x80129502 ata_sff_dev_classify +EXPORT_SYMBOL_GPL vmlinux 0x802d17b0 devm_led_classdev_unregister +EXPORT_SYMBOL_GPL vmlinux 0x803587e0 __put_mtd_device +EXPORT_SYMBOL_GPL vmlinux 0x8045052f gpiod_set_raw_array_value +EXPORT_SYMBOL_GPL vmlinux 0x804fb48d irq_create_of_mapping +EXPORT_SYMBOL_GPL vmlinux 0x8065a4fc mmu_notifier_call_srcu +EXPORT_SYMBOL_GPL vmlinux 0x80698a68 pci_ioremap_io +EXPORT_SYMBOL_GPL vmlinux 0x80784ee8 pci_vfs_assigned +EXPORT_SYMBOL_GPL vmlinux 0x808ec1a3 crypto_alg_tested +EXPORT_SYMBOL_GPL vmlinux 0x80a511ec single_release_net +EXPORT_SYMBOL_GPL vmlinux 0x80a65cc7 usb_disable_ltm +EXPORT_SYMBOL_GPL vmlinux 0x80b0df5a led_trigger_store +EXPORT_SYMBOL_GPL vmlinux 0x80b28b36 disk_part_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x80b9a0b3 __netpoll_setup +EXPORT_SYMBOL_GPL vmlinux 0x80c63346 user_destroy +EXPORT_SYMBOL_GPL vmlinux 0x80c68137 nf_log_buf_close +EXPORT_SYMBOL_GPL vmlinux 0x80c9e5b2 dev_coredumpv +EXPORT_SYMBOL_GPL vmlinux 0x80cd142e skcipher_geniv_exit +EXPORT_SYMBOL_GPL vmlinux 0x80d5e57a mpi_free +EXPORT_SYMBOL_GPL vmlinux 0x80d72a03 clockevents_config_and_register +EXPORT_SYMBOL_GPL vmlinux 0x80f3268f __trace_printk +EXPORT_SYMBOL_GPL vmlinux 0x80f8589f trace_seq_putc +EXPORT_SYMBOL_GPL vmlinux 0x80f98eea da903x_write +EXPORT_SYMBOL_GPL vmlinux 0x8114467b cn_netlink_send_mult +EXPORT_SYMBOL_GPL vmlinux 0x811dc334 usb_unregister_notify +EXPORT_SYMBOL_GPL vmlinux 0x8124d659 ahci_reset_em +EXPORT_SYMBOL_GPL vmlinux 0x812f9919 snd_ctl_activate_id +EXPORT_SYMBOL_GPL vmlinux 0x8136a12c sdio_release_host +EXPORT_SYMBOL_GPL vmlinux 0x8149ea54 ata_timing_find_mode +EXPORT_SYMBOL_GPL vmlinux 0x815588a6 clk_enable +EXPORT_SYMBOL_GPL vmlinux 0x81604d19 usb_get_phy_dev +EXPORT_SYMBOL_GPL vmlinux 0x8178bdc9 ata_sff_prereset +EXPORT_SYMBOL_GPL vmlinux 0x818977ef pstore_register +EXPORT_SYMBOL_GPL vmlinux 0x81a9fb25 usb_add_phy +EXPORT_SYMBOL_GPL vmlinux 0x81c07bea regulator_allow_bypass +EXPORT_SYMBOL_GPL vmlinux 0x81c4a51b out_of_line_wait_on_bit_timeout +EXPORT_SYMBOL_GPL vmlinux 0x81c573b6 cpufreq_driver_target +EXPORT_SYMBOL_GPL vmlinux 0x81d101b6 usb_enable_intel_xhci_ports +EXPORT_SYMBOL_GPL vmlinux 0x81ee83b1 usb_add_phy_dev +EXPORT_SYMBOL_GPL vmlinux 0x81f1576e mpc8xxx_spi_tx_buf_u32 +EXPORT_SYMBOL_GPL vmlinux 0x81f4687e netdev_set_default_ethtool_ops +EXPORT_SYMBOL_GPL vmlinux 0x81f93ac0 kvm_clear_guest +EXPORT_SYMBOL_GPL vmlinux 0x820c46a6 iommu_domain_window_disable +EXPORT_SYMBOL_GPL vmlinux 0x822ad4c7 percpu_ref_init +EXPORT_SYMBOL_GPL vmlinux 0x8239d07a nf_register_afinfo +EXPORT_SYMBOL_GPL vmlinux 0x827e3855 snd_soc_dapm_force_bias_level +EXPORT_SYMBOL_GPL vmlinux 0x82a236f1 bpf_prog_get +EXPORT_SYMBOL_GPL vmlinux 0x82b285fa srcu_batches_completed +EXPORT_SYMBOL_GPL vmlinux 0x82d79b51 sysctl_vfs_cache_pressure +EXPORT_SYMBOL_GPL vmlinux 0x82e78022 od_register_powersave_bias_handler +EXPORT_SYMBOL_GPL vmlinux 0x82f09403 irq_gc_mask_clr_bit +EXPORT_SYMBOL_GPL vmlinux 0x82f38548 ip6_push_pending_frames +EXPORT_SYMBOL_GPL vmlinux 0x82fbb2d7 relay_reset +EXPORT_SYMBOL_GPL vmlinux 0x831a4047 iommu_capable +EXPORT_SYMBOL_GPL vmlinux 0x8321dedd ahci_platform_enable_clks +EXPORT_SYMBOL_GPL vmlinux 0x83313c16 ata_sff_lost_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x8340e964 __gpiod_get_optional +EXPORT_SYMBOL_GPL vmlinux 0x834616bb sdev_evt_alloc +EXPORT_SYMBOL_GPL vmlinux 0x834630fe blkcg_activate_policy +EXPORT_SYMBOL_GPL vmlinux 0x837ef585 clk_register_gpio_gate +EXPORT_SYMBOL_GPL vmlinux 0x838b13e7 ring_buffer_free +EXPORT_SYMBOL_GPL vmlinux 0x838f28ea init_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0x83999b4d ipv4_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x83a2aac8 md_kick_rdev_from_array +EXPORT_SYMBOL_GPL vmlinux 0x83a63fec devm_remove_action +EXPORT_SYMBOL_GPL vmlinux 0x83a9cee1 inet_csk_reqsk_queue_hash_add +EXPORT_SYMBOL_GPL vmlinux 0x83cd321d regulator_set_bypass_regmap +EXPORT_SYMBOL_GPL vmlinux 0x83d82c73 tc3589x_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x83fd433f ata_do_dev_read_id +EXPORT_SYMBOL_GPL vmlinux 0x83ff8741 x509_request_asymmetric_key +EXPORT_SYMBOL_GPL vmlinux 0x840d2d33 of_overlay_create +EXPORT_SYMBOL_GPL vmlinux 0x84231ef5 regulator_get_optional +EXPORT_SYMBOL_GPL vmlinux 0x8427f5c6 debugfs_create_blob +EXPORT_SYMBOL_GPL vmlinux 0x8430f96e snd_soc_resume +EXPORT_SYMBOL_GPL vmlinux 0x844a15b6 pci_find_ht_capability +EXPORT_SYMBOL_GPL vmlinux 0x8461f125 put_mtd_device +EXPORT_SYMBOL_GPL vmlinux 0x847ac3e8 lp8788_write_byte +EXPORT_SYMBOL_GPL vmlinux 0x848bd0fb call_srcu +EXPORT_SYMBOL_GPL vmlinux 0x849fe03c rtc_device_register +EXPORT_SYMBOL_GPL vmlinux 0x84d051e4 usb_free_urb +EXPORT_SYMBOL_GPL vmlinux 0x84e53929 ata_link_online +EXPORT_SYMBOL_GPL vmlinux 0x84f2cfd6 bsg_unregister_queue +EXPORT_SYMBOL_GPL vmlinux 0x85050965 __irq_alloc_descs +EXPORT_SYMBOL_GPL vmlinux 0x8506baa8 clk_unregister_gate +EXPORT_SYMBOL_GPL vmlinux 0x850d9901 platform_get_resource_byname +EXPORT_SYMBOL_GPL vmlinux 0x85216155 ezx_pcap_read +EXPORT_SYMBOL_GPL vmlinux 0x85413a11 device_create_bin_file +EXPORT_SYMBOL_GPL vmlinux 0x854fe970 ip6_datagram_connect_v6_only +EXPORT_SYMBOL_GPL vmlinux 0x8574ca6c gpio_request_array +EXPORT_SYMBOL_GPL vmlinux 0x85929534 hrtimer_init +EXPORT_SYMBOL_GPL vmlinux 0x85c7f674 ring_buffer_normalize_time_stamp +EXPORT_SYMBOL_GPL vmlinux 0x85d1e412 __pm_runtime_set_status +EXPORT_SYMBOL_GPL vmlinux 0x85e9cb4e pinctrl_add_gpio_ranges +EXPORT_SYMBOL_GPL vmlinux 0x85fe5ff4 dma_buf_kmap_atomic +EXPORT_SYMBOL_GPL vmlinux 0x862b9816 cpu_topology +EXPORT_SYMBOL_GPL vmlinux 0x862cd8d9 tps6586x_update +EXPORT_SYMBOL_GPL vmlinux 0x86786286 klist_add_behind +EXPORT_SYMBOL_GPL vmlinux 0x86788620 wm8350_device_init +EXPORT_SYMBOL_GPL vmlinux 0x867d3bac usb_enable_ltm +EXPORT_SYMBOL_GPL vmlinux 0x868784cb __symbol_get +EXPORT_SYMBOL_GPL vmlinux 0x86882649 sdio_enable_func +EXPORT_SYMBOL_GPL vmlinux 0x868a07a2 for_each_kernel_tracepoint +EXPORT_SYMBOL_GPL vmlinux 0x86939a99 snd_card_add_dev_attr +EXPORT_SYMBOL_GPL vmlinux 0x869670ba ip6_route_lookup +EXPORT_SYMBOL_GPL vmlinux 0x869b234f arizona_pm_ops +EXPORT_SYMBOL_GPL vmlinux 0x869ef9b0 omap_dm_timer_free +EXPORT_SYMBOL_GPL vmlinux 0x86dcee2b blkcg_print_blkgs +EXPORT_SYMBOL_GPL vmlinux 0x86f0d974 get_cached_msi_msg +EXPORT_SYMBOL_GPL vmlinux 0x86f6b99d synchronize_rcu_expedited +EXPORT_SYMBOL_GPL vmlinux 0x86f8c910 pcap_set_ts_bits +EXPORT_SYMBOL_GPL vmlinux 0x87245b65 fib_rules_unregister +EXPORT_SYMBOL_GPL vmlinux 0x873b8936 pci_num_vf +EXPORT_SYMBOL_GPL vmlinux 0x873f4234 ehci_handshake +EXPORT_SYMBOL_GPL vmlinux 0x873fbaea edac_atomic_assert_error +EXPORT_SYMBOL_GPL vmlinux 0x8767f1e5 scsi_schedule_eh +EXPORT_SYMBOL_GPL vmlinux 0x877f9124 alloc_vm_area +EXPORT_SYMBOL_GPL vmlinux 0x8793ad7e rtc_read_alarm +EXPORT_SYMBOL_GPL vmlinux 0x879afa45 kernfs_notify +EXPORT_SYMBOL_GPL vmlinux 0x879c6736 dma_buf_attach +EXPORT_SYMBOL_GPL vmlinux 0x879deb35 transport_destroy_device +EXPORT_SYMBOL_GPL vmlinux 0x87ab6ad5 free_vm_area +EXPORT_SYMBOL_GPL vmlinux 0x87b7b049 class_unregister +EXPORT_SYMBOL_GPL vmlinux 0x87e83525 tpm_chip_register +EXPORT_SYMBOL_GPL vmlinux 0x87fa1ba3 extcon_update_state +EXPORT_SYMBOL_GPL vmlinux 0x87fd462b virtio_check_driver_offered_feature +EXPORT_SYMBOL_GPL vmlinux 0x8810ad5e crypto_xor +EXPORT_SYMBOL_GPL vmlinux 0x88136838 wm8997_i2c_regmap +EXPORT_SYMBOL_GPL vmlinux 0x883c16b1 snd_dmaengine_pcm_prepare_slave_config +EXPORT_SYMBOL_GPL vmlinux 0x883c2740 __cookie_v6_init_sequence +EXPORT_SYMBOL_GPL vmlinux 0x883cef22 pci_probe_reset_bus +EXPORT_SYMBOL_GPL vmlinux 0x88445146 ata_pci_sff_activate_host +EXPORT_SYMBOL_GPL vmlinux 0x8876e9d6 snd_soc_dapm_force_enable_pin_unlocked +EXPORT_SYMBOL_GPL vmlinux 0x8881e990 of_fdt_unflatten_tree +EXPORT_SYMBOL_GPL vmlinux 0x88925c46 kvm_vcpu_gfn_to_pfn_atomic +EXPORT_SYMBOL_GPL vmlinux 0x88a4a258 ata_sff_wait_ready +EXPORT_SYMBOL_GPL vmlinux 0x88ab6fe3 kgdb_active +EXPORT_SYMBOL_GPL vmlinux 0x88b5647c trace_clock_local +EXPORT_SYMBOL_GPL vmlinux 0x88b57584 list_lru_count_one +EXPORT_SYMBOL_GPL vmlinux 0x88c8da9a inet_twsk_purge +EXPORT_SYMBOL_GPL vmlinux 0x88f29221 blocking_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0x88ff9411 lp8788_update_bits +EXPORT_SYMBOL_GPL vmlinux 0x8904c539 anon_transport_class_unregister +EXPORT_SYMBOL_GPL vmlinux 0x8924eb1e rcu_force_quiescent_state +EXPORT_SYMBOL_GPL vmlinux 0x89409d34 fib_rules_lookup +EXPORT_SYMBOL_GPL vmlinux 0x89485687 iommu_group_put +EXPORT_SYMBOL_GPL vmlinux 0x8971aaa1 ping_seq_start +EXPORT_SYMBOL_GPL vmlinux 0x89ad8099 snd_dmaengine_pcm_request_channel +EXPORT_SYMBOL_GPL vmlinux 0x89bbafc6 usb_register_notify +EXPORT_SYMBOL_GPL vmlinux 0x89d2cd6f snd_soc_dai_set_sysclk +EXPORT_SYMBOL_GPL vmlinux 0x89dc187f snd_soc_test_bits +EXPORT_SYMBOL_GPL vmlinux 0x89ecac84 i2c_add_numbered_adapter +EXPORT_SYMBOL_GPL vmlinux 0x8a497bb7 sdhci_pci_o2_fujin2_pci_init +EXPORT_SYMBOL_GPL vmlinux 0x8a554a36 mpc8xxx_spi_strmode +EXPORT_SYMBOL_GPL vmlinux 0x8a5e32ed rtc_irq_register +EXPORT_SYMBOL_GPL vmlinux 0x8a83b0bd devres_close_group +EXPORT_SYMBOL_GPL vmlinux 0x8a89b451 crypto_ablkcipher_type +EXPORT_SYMBOL_GPL vmlinux 0x8a8c3afa ata_link_offline +EXPORT_SYMBOL_GPL vmlinux 0x8a94ce8a netdev_rx_handler_register +EXPORT_SYMBOL_GPL vmlinux 0x8abacc47 get_max_files +EXPORT_SYMBOL_GPL vmlinux 0x8abb10fe ata_host_detach +EXPORT_SYMBOL_GPL vmlinux 0x8abef7c9 pci_intx_mask_supported +EXPORT_SYMBOL_GPL vmlinux 0x8ae1f052 irq_setup_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x8aebbaa3 crypto_nivaead_type +EXPORT_SYMBOL_GPL vmlinux 0x8b0bdf07 sdhci_suspend_host +EXPORT_SYMBOL_GPL vmlinux 0x8b105d6f pci_bus_sem +EXPORT_SYMBOL_GPL vmlinux 0x8b149c36 clk_is_match +EXPORT_SYMBOL_GPL vmlinux 0x8b17207a ping_proc_unregister +EXPORT_SYMBOL_GPL vmlinux 0x8b2efe6c pid_nr_ns +EXPORT_SYMBOL_GPL vmlinux 0x8b2f0a77 regulator_get +EXPORT_SYMBOL_GPL vmlinux 0x8b5b544e driver_remove_file +EXPORT_SYMBOL_GPL vmlinux 0x8b775d3a __wake_up_locked +EXPORT_SYMBOL_GPL vmlinux 0x8b7aca7a regulator_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x8b8b3f5f get_task_pid +EXPORT_SYMBOL_GPL vmlinux 0x8b99898c cpsw_ale_add_mcast +EXPORT_SYMBOL_GPL vmlinux 0x8ba854ac ahci_em_messages +EXPORT_SYMBOL_GPL vmlinux 0x8bbaa14f dev_pm_opp_get_notifier +EXPORT_SYMBOL_GPL vmlinux 0x8bbeac80 balloon_page_dequeue +EXPORT_SYMBOL_GPL vmlinux 0x8bbef122 sock_diag_unregister +EXPORT_SYMBOL_GPL vmlinux 0x8bcec40e pm_runtime_enable +EXPORT_SYMBOL_GPL vmlinux 0x8bcf2bc3 regulator_register +EXPORT_SYMBOL_GPL vmlinux 0x8bdf4385 blk_queue_flush +EXPORT_SYMBOL_GPL vmlinux 0x8be14a22 alarm_expires_remaining +EXPORT_SYMBOL_GPL vmlinux 0x8c0215f2 pm_system_wakeup +EXPORT_SYMBOL_GPL vmlinux 0x8c03d20c destroy_workqueue +EXPORT_SYMBOL_GPL vmlinux 0x8c09a9ce usb_get_intf +EXPORT_SYMBOL_GPL vmlinux 0x8c0a2e5e pm_runtime_force_resume +EXPORT_SYMBOL_GPL vmlinux 0x8c3926d7 disable_kprobe +EXPORT_SYMBOL_GPL vmlinux 0x8c39416d spi_finalize_current_message +EXPORT_SYMBOL_GPL vmlinux 0x8c4c95fe stmpe_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x8c60ad7f crypto_register_ahash +EXPORT_SYMBOL_GPL vmlinux 0x8c646600 edac_report_status +EXPORT_SYMBOL_GPL vmlinux 0x8c743fb6 reset_control_status +EXPORT_SYMBOL_GPL vmlinux 0x8c806949 devm_pwm_get +EXPORT_SYMBOL_GPL vmlinux 0x8c8fd5aa x509_cert_parse +EXPORT_SYMBOL_GPL vmlinux 0x8ca514e5 arm_iommu_create_mapping +EXPORT_SYMBOL_GPL vmlinux 0x8cb776d3 ehci_reset +EXPORT_SYMBOL_GPL vmlinux 0x8d18afc6 regulator_map_voltage_linear +EXPORT_SYMBOL_GPL vmlinux 0x8d22bb58 iommu_group_alloc +EXPORT_SYMBOL_GPL vmlinux 0x8d308e40 wm5110_spi_regmap +EXPORT_SYMBOL_GPL vmlinux 0x8d4355d1 securityfs_remove +EXPORT_SYMBOL_GPL vmlinux 0x8d5cc6db sysfs_remove_files +EXPORT_SYMBOL_GPL vmlinux 0x8d6b604e __tracepoint_rpm_suspend +EXPORT_SYMBOL_GPL vmlinux 0x8d6cf89e wakeup_source_drop +EXPORT_SYMBOL_GPL vmlinux 0x8d9b8eba gpiod_put_array +EXPORT_SYMBOL_GPL vmlinux 0x8da01274 kvm_get_pfn +EXPORT_SYMBOL_GPL vmlinux 0x8da60f21 devm_snd_soc_register_component +EXPORT_SYMBOL_GPL vmlinux 0x8dd38ed8 hrtimer_forward +EXPORT_SYMBOL_GPL vmlinux 0x8df3d083 ata_sff_dev_select +EXPORT_SYMBOL_GPL vmlinux 0x8e1cd06f kvm_set_pfn_accessed +EXPORT_SYMBOL_GPL vmlinux 0x8e2b25c2 videomode_from_timings +EXPORT_SYMBOL_GPL vmlinux 0x8e37a435 usb_remove_hcd +EXPORT_SYMBOL_GPL vmlinux 0x8e3ada41 sdio_writew +EXPORT_SYMBOL_GPL vmlinux 0x8e4da897 usb_reset_configuration +EXPORT_SYMBOL_GPL vmlinux 0x8e521649 i2c_new_probed_device +EXPORT_SYMBOL_GPL vmlinux 0x8e7894bd __atomic_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x8ea50f71 dev_pm_opp_init_cpufreq_table +EXPORT_SYMBOL_GPL vmlinux 0x8eadcdc4 debugfs_create_u8 +EXPORT_SYMBOL_GPL vmlinux 0x8ed1e478 virtqueue_is_broken +EXPORT_SYMBOL_GPL vmlinux 0x8ed9b2b0 balloon_page_enqueue +EXPORT_SYMBOL_GPL vmlinux 0x8eddff68 scsi_ioctl_block_when_processing_errors +EXPORT_SYMBOL_GPL vmlinux 0x8ee22b67 of_thermal_get_ntrips +EXPORT_SYMBOL_GPL vmlinux 0x8ee8d3bb subsys_virtual_register +EXPORT_SYMBOL_GPL vmlinux 0x8ef6136e of_dma_controller_free +EXPORT_SYMBOL_GPL vmlinux 0x8f0748af rcu_expedite_gp +EXPORT_SYMBOL_GPL vmlinux 0x8f1f26bf ata_sas_port_start +EXPORT_SYMBOL_GPL vmlinux 0x8f235069 tty_put_char +EXPORT_SYMBOL_GPL vmlinux 0x8f347a01 ata_sff_busy_sleep +EXPORT_SYMBOL_GPL vmlinux 0x8f3c087b register_mtd_user +EXPORT_SYMBOL_GPL vmlinux 0x8f599206 hvc_remove +EXPORT_SYMBOL_GPL vmlinux 0x8f6097b5 blkdev_write_iter +EXPORT_SYMBOL_GPL vmlinux 0x8f6cee77 __round_jiffies_relative +EXPORT_SYMBOL_GPL vmlinux 0x8f87d615 dapm_regulator_event +EXPORT_SYMBOL_GPL vmlinux 0x8f97996c ip_tunnel_get_stats64 +EXPORT_SYMBOL_GPL vmlinux 0x8fdaaac3 phy_remove_lookup +EXPORT_SYMBOL_GPL vmlinux 0x8fdab50e cpsw_ale_flush_multicast +EXPORT_SYMBOL_GPL vmlinux 0x8fdc79c2 __tracepoint_block_bio_complete +EXPORT_SYMBOL_GPL vmlinux 0x8fe30e75 ata_scsi_unlock_native_capacity +EXPORT_SYMBOL_GPL vmlinux 0x8febc9f0 ipv6_find_tlv +EXPORT_SYMBOL_GPL vmlinux 0x8fef20e8 snd_soc_get_volsw +EXPORT_SYMBOL_GPL vmlinux 0x90014724 regulator_get_current_limit +EXPORT_SYMBOL_GPL vmlinux 0x9002c8a4 crypto_unregister_akcipher +EXPORT_SYMBOL_GPL vmlinux 0x9006fe91 wm831x_reg_unlock +EXPORT_SYMBOL_GPL vmlinux 0x900df5be gpiod_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x9039799e edac_get_sysfs_subsys +EXPORT_SYMBOL_GPL vmlinux 0x903b627c list_lru_isolate_move +EXPORT_SYMBOL_GPL vmlinux 0x9047c11a trace_seq_bprintf +EXPORT_SYMBOL_GPL vmlinux 0x904ef459 snd_soc_dapm_sync_unlocked +EXPORT_SYMBOL_GPL vmlinux 0x9058387f crypto_blkcipher_type +EXPORT_SYMBOL_GPL vmlinux 0x9062c322 ring_buffer_consume +EXPORT_SYMBOL_GPL vmlinux 0x906bcc71 lp8788_read_multi_bytes +EXPORT_SYMBOL_GPL vmlinux 0x9073d45a uart_console_write +EXPORT_SYMBOL_GPL vmlinux 0x908b933a cpuidle_get_cpu_driver +EXPORT_SYMBOL_GPL vmlinux 0x908e50fc ima_file_check +EXPORT_SYMBOL_GPL vmlinux 0x9091332b class_dev_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0x90a1004a crypto_has_alg +EXPORT_SYMBOL_GPL vmlinux 0x90a8c265 ping_getfrag +EXPORT_SYMBOL_GPL vmlinux 0x90e38e19 ata_qc_complete +EXPORT_SYMBOL_GPL vmlinux 0x91240e1c user_read +EXPORT_SYMBOL_GPL vmlinux 0x91371cac sdio_readsb +EXPORT_SYMBOL_GPL vmlinux 0x91372edb gpiod_get_raw_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x915dda8e devfreq_event_disable_edev +EXPORT_SYMBOL_GPL vmlinux 0x91776114 stmpe_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x918ad429 ring_buffer_lock_reserve +EXPORT_SYMBOL_GPL vmlinux 0x91ab3c89 class_remove_file_ns +EXPORT_SYMBOL_GPL vmlinux 0x91bdf567 bitmap_copy_from_slot +EXPORT_SYMBOL_GPL vmlinux 0x91c6e5b0 pcap_to_irq +EXPORT_SYMBOL_GPL vmlinux 0x91d61e0e mtd_read_fact_prot_reg +EXPORT_SYMBOL_GPL vmlinux 0x91e0b1e5 fat_scan +EXPORT_SYMBOL_GPL vmlinux 0x91f8048c of_thermal_is_trip_valid +EXPORT_SYMBOL_GPL vmlinux 0x920419d7 pinctrl_find_and_add_gpio_range +EXPORT_SYMBOL_GPL vmlinux 0x920ac5e9 clk_debugfs_add_file +EXPORT_SYMBOL_GPL vmlinux 0x92196e4b sysfs_remove_file_from_group +EXPORT_SYMBOL_GPL vmlinux 0x924c46f8 zs_unmap_object +EXPORT_SYMBOL_GPL vmlinux 0x924c6177 inet6_hash_connect +EXPORT_SYMBOL_GPL vmlinux 0x92694e9b snd_soc_jack_report +EXPORT_SYMBOL_GPL vmlinux 0x927a7efd regmap_get_val_bytes +EXPORT_SYMBOL_GPL vmlinux 0x92886731 ata_sff_exec_command +EXPORT_SYMBOL_GPL vmlinux 0x92931ceb crypto_dequeue_request +EXPORT_SYMBOL_GPL vmlinux 0x92b57248 flush_work +EXPORT_SYMBOL_GPL vmlinux 0x92d31cfb fixed_phy_add +EXPORT_SYMBOL_GPL vmlinux 0x92db8f68 do_trace_rcu_torture_read +EXPORT_SYMBOL_GPL vmlinux 0x92ddc65f shmem_add_seals +EXPORT_SYMBOL_GPL vmlinux 0x92f3f9e6 device_property_read_u32_array +EXPORT_SYMBOL_GPL vmlinux 0x92f6e4b6 __ktime_divns +EXPORT_SYMBOL_GPL vmlinux 0x92faf8ba snd_soc_dai_set_bclk_ratio +EXPORT_SYMBOL_GPL vmlinux 0x93067794 snd_soc_dpcm_can_be_params +EXPORT_SYMBOL_GPL vmlinux 0x930cfc9f skb_morph +EXPORT_SYMBOL_GPL vmlinux 0x930df039 ping_seq_stop +EXPORT_SYMBOL_GPL vmlinux 0x931252fe ata_eh_qc_complete +EXPORT_SYMBOL_GPL vmlinux 0x931f05d3 ktime_get_raw +EXPORT_SYMBOL_GPL vmlinux 0x9358c4e0 pci_reset_function +EXPORT_SYMBOL_GPL vmlinux 0x936bcae8 usb_unpoison_urb +EXPORT_SYMBOL_GPL vmlinux 0x93b0eb28 rtc_irq_unregister +EXPORT_SYMBOL_GPL vmlinux 0x93b74198 sk_detach_filter +EXPORT_SYMBOL_GPL vmlinux 0x93ce53ed clone_private_mount +EXPORT_SYMBOL_GPL vmlinux 0x93db61ab pm_runtime_forbid +EXPORT_SYMBOL_GPL vmlinux 0x94116284 ahci_platform_enable_regulators +EXPORT_SYMBOL_GPL vmlinux 0x94119ecf snd_soc_component_write +EXPORT_SYMBOL_GPL vmlinux 0x941c6cc4 tty_buffer_unlock_exclusive +EXPORT_SYMBOL_GPL vmlinux 0x941f2aaa eventfd_ctx_put +EXPORT_SYMBOL_GPL vmlinux 0x94241845 gpiod_direction_input +EXPORT_SYMBOL_GPL vmlinux 0x943b6000 pinctrl_dev_get_devname +EXPORT_SYMBOL_GPL vmlinux 0x9463ff71 init_bch +EXPORT_SYMBOL_GPL vmlinux 0x94643641 ahci_port_resume +EXPORT_SYMBOL_GPL vmlinux 0x94772225 rtc_alarm_irq_enable +EXPORT_SYMBOL_GPL vmlinux 0x94857c06 kvm_release_page_dirty +EXPORT_SYMBOL_GPL vmlinux 0x949334db cpdma_ctlr_start +EXPORT_SYMBOL_GPL vmlinux 0x94abb745 sprint_oid +EXPORT_SYMBOL_GPL vmlinux 0x94b5f445 pci_disable_pasid +EXPORT_SYMBOL_GPL vmlinux 0x94c7c6d5 sata_link_debounce +EXPORT_SYMBOL_GPL vmlinux 0x94f2900c ata_sas_port_stop +EXPORT_SYMBOL_GPL vmlinux 0x94f58689 crypto_rng_reset +EXPORT_SYMBOL_GPL vmlinux 0x94f77d84 dma_buf_kunmap +EXPORT_SYMBOL_GPL vmlinux 0x9504df26 irq_wake_thread +EXPORT_SYMBOL_GPL vmlinux 0x952664c5 do_exit +EXPORT_SYMBOL_GPL vmlinux 0x953e1b9e ktime_get_real_seconds +EXPORT_SYMBOL_GPL vmlinux 0x95590ec8 __pm_runtime_resume +EXPORT_SYMBOL_GPL vmlinux 0x955af1eb synchronize_srcu_expedited +EXPORT_SYMBOL_GPL vmlinux 0x955b0e2e kthread_worker_fn +EXPORT_SYMBOL_GPL vmlinux 0x955e5f23 bsg_request_fn +EXPORT_SYMBOL_GPL vmlinux 0x9586a6ed cpdma_chan_get_stats +EXPORT_SYMBOL_GPL vmlinux 0x958df3ac zs_free +EXPORT_SYMBOL_GPL vmlinux 0x959e104b usb_alloc_coherent +EXPORT_SYMBOL_GPL vmlinux 0x95a98308 wm8400_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x95bc9078 btree_free +EXPORT_SYMBOL_GPL vmlinux 0x95c7ba25 invalidate_inode_pages2 +EXPORT_SYMBOL_GPL vmlinux 0x95d8d870 virtqueue_notify +EXPORT_SYMBOL_GPL vmlinux 0x95e6f046 sdhci_get_of_property +EXPORT_SYMBOL_GPL vmlinux 0x960036c8 proc_mkdir_data +EXPORT_SYMBOL_GPL vmlinux 0x9621849f ring_buffer_event_data +EXPORT_SYMBOL_GPL vmlinux 0x9633c1f7 posix_timers_register_clock +EXPORT_SYMBOL_GPL vmlinux 0x9645d792 of_irq_to_resource +EXPORT_SYMBOL_GPL vmlinux 0x96554810 register_keyboard_notifier +EXPORT_SYMBOL_GPL vmlinux 0x9655acba kvm_vcpu_read_guest_atomic +EXPORT_SYMBOL_GPL vmlinux 0x96561536 crypto_alloc_ablkcipher +EXPORT_SYMBOL_GPL vmlinux 0x965a03ab iommu_iova_to_phys +EXPORT_SYMBOL_GPL vmlinux 0x9663f4d9 kvm_is_visible_gfn +EXPORT_SYMBOL_GPL vmlinux 0x966bbfeb thermal_zone_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x96753a3f md_rdev_clear +EXPORT_SYMBOL_GPL vmlinux 0x9679cb32 regulator_is_enabled_regmap +EXPORT_SYMBOL_GPL vmlinux 0x96919667 musb_readl +EXPORT_SYMBOL_GPL vmlinux 0x9696950d blk_update_request +EXPORT_SYMBOL_GPL vmlinux 0x969a419b virtqueue_detach_unused_buf +EXPORT_SYMBOL_GPL vmlinux 0x96a1b011 ahci_print_info +EXPORT_SYMBOL_GPL vmlinux 0x96adb411 snd_soc_get_xr_sx +EXPORT_SYMBOL_GPL vmlinux 0x96bce7b5 rtc_set_alarm +EXPORT_SYMBOL_GPL vmlinux 0x96d6e533 wakeup_source_remove +EXPORT_SYMBOL_GPL vmlinux 0x96fe2b88 to_nvdimm_bus +EXPORT_SYMBOL_GPL vmlinux 0x9709489d deregister_mtd_blktrans +EXPORT_SYMBOL_GPL vmlinux 0x970f1f11 handle_mm_fault +EXPORT_SYMBOL_GPL vmlinux 0x973e88a1 crypto_larval_lookup +EXPORT_SYMBOL_GPL vmlinux 0x9747ec6a alarm_init +EXPORT_SYMBOL_GPL vmlinux 0x9751ae77 fat_build_inode +EXPORT_SYMBOL_GPL vmlinux 0x9751f403 wb_writeout_inc +EXPORT_SYMBOL_GPL vmlinux 0x975519c1 asymmetric_key_id_same +EXPORT_SYMBOL_GPL vmlinux 0x97677078 platform_get_irq_byname +EXPORT_SYMBOL_GPL vmlinux 0x9780fabc wm8997_patch +EXPORT_SYMBOL_GPL vmlinux 0x978204bc snd_soc_dapm_enable_pin_unlocked +EXPORT_SYMBOL_GPL vmlinux 0x978628e7 pci_enable_sriov +EXPORT_SYMBOL_GPL vmlinux 0x979b0379 regulator_list_voltage +EXPORT_SYMBOL_GPL vmlinux 0x97b31e81 gpiochip_add_pingroup_range +EXPORT_SYMBOL_GPL vmlinux 0x97c38c5c blkg_stat_recursive_sum +EXPORT_SYMBOL_GPL vmlinux 0x97c652b3 led_classdev_resume +EXPORT_SYMBOL_GPL vmlinux 0x97de2b83 debug_locks_silent +EXPORT_SYMBOL_GPL vmlinux 0x982a346e of_dma_is_coherent +EXPORT_SYMBOL_GPL vmlinux 0x98315ddb dapm_kcontrol_get_value +EXPORT_SYMBOL_GPL vmlinux 0x9833bc0c hvc_kick +EXPORT_SYMBOL_GPL vmlinux 0x9838e456 mnt_drop_write +EXPORT_SYMBOL_GPL vmlinux 0x98503a63 mpi_alloc +EXPORT_SYMBOL_GPL vmlinux 0x9867f6df pci_disable_rom +EXPORT_SYMBOL_GPL vmlinux 0x9879932b crypto_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x988dd0e2 wakeup_source_add +EXPORT_SYMBOL_GPL vmlinux 0x98926627 fuse_dev_free +EXPORT_SYMBOL_GPL vmlinux 0x98b5205a sata_async_notification +EXPORT_SYMBOL_GPL vmlinux 0x98c4ed73 devm_power_supply_register +EXPORT_SYMBOL_GPL vmlinux 0x98c9f584 klist_init +EXPORT_SYMBOL_GPL vmlinux 0x98fa1e20 dm_get_reserved_rq_based_ios +EXPORT_SYMBOL_GPL vmlinux 0x98fcf128 irq_work_queue_on +EXPORT_SYMBOL_GPL vmlinux 0x990c3c1c i2c_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0x9922c274 fuse_conn_init +EXPORT_SYMBOL_GPL vmlinux 0x9924c496 __usb_get_extra_descriptor +EXPORT_SYMBOL_GPL vmlinux 0x992df417 ata_bmdma_port_intr +EXPORT_SYMBOL_GPL vmlinux 0x994f664a of_platform_depopulate +EXPORT_SYMBOL_GPL vmlinux 0x994fada4 iommu_domain_alloc +EXPORT_SYMBOL_GPL vmlinux 0x99515b28 ping_queue_rcv_skb +EXPORT_SYMBOL_GPL vmlinux 0x99519770 irq_set_chip_and_handler_name +EXPORT_SYMBOL_GPL vmlinux 0x995d1071 prof_on +EXPORT_SYMBOL_GPL vmlinux 0x995f9116 tcp_get_info +EXPORT_SYMBOL_GPL vmlinux 0x9973add9 __cookie_v6_check +EXPORT_SYMBOL_GPL vmlinux 0x997b57cf ata_base_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x997c4347 unmap_kernel_range +EXPORT_SYMBOL_GPL vmlinux 0x99840d00 timecounter_init +EXPORT_SYMBOL_GPL vmlinux 0x99a446b4 register_wide_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x99ba1777 of_property_read_u32_index +EXPORT_SYMBOL_GPL vmlinux 0x99e07c2d shash_register_instance +EXPORT_SYMBOL_GPL vmlinux 0x99e08558 sk_clone_lock +EXPORT_SYMBOL_GPL vmlinux 0x99e97ca0 pci_try_reset_slot +EXPORT_SYMBOL_GPL vmlinux 0x99efad5c sdio_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x99ff7e26 extcon_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x9a11a0fc crypto_attr_alg_name +EXPORT_SYMBOL_GPL vmlinux 0x9a1b6d4b gpio_to_desc +EXPORT_SYMBOL_GPL vmlinux 0x9a2efa00 mtd_get_fact_prot_info +EXPORT_SYMBOL_GPL vmlinux 0x9a31a5f9 usb_sg_init +EXPORT_SYMBOL_GPL vmlinux 0x9a39a184 ping_seq_next +EXPORT_SYMBOL_GPL vmlinux 0x9a3a4a7b ata_cable_40wire +EXPORT_SYMBOL_GPL vmlinux 0x9a3aeea4 kernel_kobj +EXPORT_SYMBOL_GPL vmlinux 0x9a627303 snd_soc_put_volsw_sx +EXPORT_SYMBOL_GPL vmlinux 0x9a87c454 __clk_mux_determine_rate_closest +EXPORT_SYMBOL_GPL vmlinux 0x9a89dbf7 lpddr2_jedec_min_tck +EXPORT_SYMBOL_GPL vmlinux 0x9ac11b74 suspend_set_ops +EXPORT_SYMBOL_GPL vmlinux 0x9ad73db0 pci_enable_pri +EXPORT_SYMBOL_GPL vmlinux 0x9ae65962 blk_queue_flush_queueable +EXPORT_SYMBOL_GPL vmlinux 0x9aeacb87 ring_buffer_iter_empty +EXPORT_SYMBOL_GPL vmlinux 0x9b02c5dd dev_pm_opp_get_opp_count +EXPORT_SYMBOL_GPL vmlinux 0x9b24fb49 devm_spi_register_master +EXPORT_SYMBOL_GPL vmlinux 0x9b31b4d2 cpuidle_register +EXPORT_SYMBOL_GPL vmlinux 0x9b5bb59e component_master_del +EXPORT_SYMBOL_GPL vmlinux 0x9b712e75 trace_seq_path +EXPORT_SYMBOL_GPL vmlinux 0x9bd7a494 wakeup_source_unregister +EXPORT_SYMBOL_GPL vmlinux 0x9bece81b mpi_cmp_ui +EXPORT_SYMBOL_GPL vmlinux 0x9c2897b2 ip6_datagram_send_ctl +EXPORT_SYMBOL_GPL vmlinux 0x9c2d5f21 nvdimm_blk_region_create +EXPORT_SYMBOL_GPL vmlinux 0x9c3e5b59 percpu_ida_destroy +EXPORT_SYMBOL_GPL vmlinux 0x9c4b0cf8 tty_mode_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x9c4da65b hrtimer_get_remaining +EXPORT_SYMBOL_GPL vmlinux 0x9cae9cc8 mpc8xxx_spi_tx_buf_u8 +EXPORT_SYMBOL_GPL vmlinux 0x9cc26c6e scsi_eh_ready_devs +EXPORT_SYMBOL_GPL vmlinux 0x9cc4f70a register_pm_notifier +EXPORT_SYMBOL_GPL vmlinux 0x9cdc9867 cpdma_ctlr_stop +EXPORT_SYMBOL_GPL vmlinux 0x9cee57a0 zs_create_pool +EXPORT_SYMBOL_GPL vmlinux 0x9cf97ac3 skb_partial_csum_set +EXPORT_SYMBOL_GPL vmlinux 0x9d13e79e page_mkclean +EXPORT_SYMBOL_GPL vmlinux 0x9d1f2298 snd_soc_info_volsw +EXPORT_SYMBOL_GPL vmlinux 0x9d2a22da tpm_get_timeouts +EXPORT_SYMBOL_GPL vmlinux 0x9d37957a usb_gen_phy_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x9d37ee07 devm_phy_create +EXPORT_SYMBOL_GPL vmlinux 0x9d459f9b sdio_writeb +EXPORT_SYMBOL_GPL vmlinux 0x9d4c709e extcon_get_edev_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0x9d52da51 fat_search_long +EXPORT_SYMBOL_GPL vmlinux 0x9d5c8b25 snd_soc_dapm_new_controls +EXPORT_SYMBOL_GPL vmlinux 0x9d6b4da7 tty_ldisc_ref +EXPORT_SYMBOL_GPL vmlinux 0x9d788526 kobject_move +EXPORT_SYMBOL_GPL vmlinux 0x9d82d029 rtc_read_time +EXPORT_SYMBOL_GPL vmlinux 0x9d8331c0 ring_buffer_read_page +EXPORT_SYMBOL_GPL vmlinux 0x9da9198a gpiod_set_value +EXPORT_SYMBOL_GPL vmlinux 0x9daa50fc power_supply_get_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0x9dab8673 ata_eh_analyze_ncq_error +EXPORT_SYMBOL_GPL vmlinux 0x9dadbb88 cpufreq_boost_supported +EXPORT_SYMBOL_GPL vmlinux 0x9dae8d6b alarm_forward_now +EXPORT_SYMBOL_GPL vmlinux 0x9db7dbf5 ata_common_sdev_attrs +EXPORT_SYMBOL_GPL vmlinux 0x9dd393d6 of_dma_xlate_by_chan_id +EXPORT_SYMBOL_GPL vmlinux 0x9de7a480 noop_backing_dev_info +EXPORT_SYMBOL_GPL vmlinux 0x9dfdf722 gpio_free_array +EXPORT_SYMBOL_GPL vmlinux 0x9e29fbd5 dm_send_uevents +EXPORT_SYMBOL_GPL vmlinux 0x9e472f5f snmp_fold_field +EXPORT_SYMBOL_GPL vmlinux 0x9e71a956 snd_soc_component_exit_regmap +EXPORT_SYMBOL_GPL vmlinux 0x9e9ea8e3 of_reserved_mem_device_release +EXPORT_SYMBOL_GPL vmlinux 0x9ea13ea8 nd_region_attribute_group +EXPORT_SYMBOL_GPL vmlinux 0x9ea556f8 btree_destroy +EXPORT_SYMBOL_GPL vmlinux 0x9eb25e5e of_usb_get_phy_mode +EXPORT_SYMBOL_GPL vmlinux 0x9eb45a78 gpiod_get_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x9eb55b0e fat_flush_inodes +EXPORT_SYMBOL_GPL vmlinux 0x9ed554b3 unregister_keyboard_notifier +EXPORT_SYMBOL_GPL vmlinux 0x9edb7f26 fuse_conn_put +EXPORT_SYMBOL_GPL vmlinux 0x9ede3f59 cpsw_ale_add_vlan +EXPORT_SYMBOL_GPL vmlinux 0x9edf0ede max8997_write_reg +EXPORT_SYMBOL_GPL vmlinux 0x9ee4f43c dma_buf_unmap_attachment +EXPORT_SYMBOL_GPL vmlinux 0x9eea85ba phy_pm_runtime_put +EXPORT_SYMBOL_GPL vmlinux 0x9ef3d056 pci_enable_rom +EXPORT_SYMBOL_GPL vmlinux 0x9f065118 irq_domain_xlate_onetwocell +EXPORT_SYMBOL_GPL vmlinux 0x9f099cf6 x509_get_sig_params +EXPORT_SYMBOL_GPL vmlinux 0x9f1c1846 vfs_test_lock +EXPORT_SYMBOL_GPL vmlinux 0x9f3a6ec0 pm_generic_suspend +EXPORT_SYMBOL_GPL vmlinux 0x9f756c98 xfrm_audit_policy_add +EXPORT_SYMBOL_GPL vmlinux 0x9fc02a22 omapdss_of_get_next_port +EXPORT_SYMBOL_GPL vmlinux 0x9fc0ad19 thermal_zone_unbind_cooling_device +EXPORT_SYMBOL_GPL vmlinux 0x9fc167e2 gpiochip_find +EXPORT_SYMBOL_GPL vmlinux 0x9fc99711 iommu_present +EXPORT_SYMBOL_GPL vmlinux 0x9fce80db fb_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x9fe939e1 mpi_powm +EXPORT_SYMBOL_GPL vmlinux 0xa013a9cf init_srcu_struct +EXPORT_SYMBOL_GPL vmlinux 0xa01bff36 sysfs_create_files +EXPORT_SYMBOL_GPL vmlinux 0xa02add47 snd_pcm_add_chmap_ctls +EXPORT_SYMBOL_GPL vmlinux 0xa031287b pinctrl_force_sleep +EXPORT_SYMBOL_GPL vmlinux 0xa033df40 clk_register_divider +EXPORT_SYMBOL_GPL vmlinux 0xa04faace dpm_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0xa07f3bb3 mnt_clone_write +EXPORT_SYMBOL_GPL vmlinux 0xa081c5dd __ablkcipher_walk_complete +EXPORT_SYMBOL_GPL vmlinux 0xa091d10d fwnode_property_present +EXPORT_SYMBOL_GPL vmlinux 0xa0930752 component_bind_all +EXPORT_SYMBOL_GPL vmlinux 0xa0a6afbe iommu_set_fault_handler +EXPORT_SYMBOL_GPL vmlinux 0xa0b0c5f4 mpc8xxx_spi_remove +EXPORT_SYMBOL_GPL vmlinux 0xa0de3ab1 hwmon_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa10bf2d7 pci_ats_queue_depth +EXPORT_SYMBOL_GPL vmlinux 0xa1167dc4 clk_divider_ops +EXPORT_SYMBOL_GPL vmlinux 0xa11dc793 class_dev_iter_init +EXPORT_SYMBOL_GPL vmlinux 0xa129bb72 ata_pci_sff_prepare_host +EXPORT_SYMBOL_GPL vmlinux 0xa14a1817 trace_seq_bitmask +EXPORT_SYMBOL_GPL vmlinux 0xa169598e kernfs_get +EXPORT_SYMBOL_GPL vmlinux 0xa1847772 inet_csk_route_req +EXPORT_SYMBOL_GPL vmlinux 0xa18a351e vring_del_virtqueue +EXPORT_SYMBOL_GPL vmlinux 0xa18f9433 mpi_read_buffer +EXPORT_SYMBOL_GPL vmlinux 0xa1c59dc2 phy_get +EXPORT_SYMBOL_GPL vmlinux 0xa2044c4d ahci_platform_resume +EXPORT_SYMBOL_GPL vmlinux 0xa216a902 pci_destroy_slot +EXPORT_SYMBOL_GPL vmlinux 0xa2545d6f virtqueue_get_used +EXPORT_SYMBOL_GPL vmlinux 0xa25b6cc1 set_cpus_allowed_ptr +EXPORT_SYMBOL_GPL vmlinux 0xa26bf569 iommu_domain_get_attr +EXPORT_SYMBOL_GPL vmlinux 0xa26d9b4f workqueue_congested +EXPORT_SYMBOL_GPL vmlinux 0xa2759402 usb_autopm_put_interface_no_suspend +EXPORT_SYMBOL_GPL vmlinux 0xa286a234 snd_pcm_format_name +EXPORT_SYMBOL_GPL vmlinux 0xa29faa9f ata_bmdma_status +EXPORT_SYMBOL_GPL vmlinux 0xa2ad0d3d blk_rq_check_limits +EXPORT_SYMBOL_GPL vmlinux 0xa2b0a37b snd_soc_dapm_get_pin_status +EXPORT_SYMBOL_GPL vmlinux 0xa2b9c993 clk_register_fixed_factor +EXPORT_SYMBOL_GPL vmlinux 0xa2bafa40 interval_tree_insert +EXPORT_SYMBOL_GPL vmlinux 0xa2bebc1c pci_generic_config_read +EXPORT_SYMBOL_GPL vmlinux 0xa2ef545b udp6_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0xa327b501 hwmon_device_register_with_groups +EXPORT_SYMBOL_GPL vmlinux 0xa38602cd drain_workqueue +EXPORT_SYMBOL_GPL vmlinux 0xa389a49a profile_event_register +EXPORT_SYMBOL_GPL vmlinux 0xa39902be get_cpu_device +EXPORT_SYMBOL_GPL vmlinux 0xa3a04602 btree_geo64 +EXPORT_SYMBOL_GPL vmlinux 0xa3b958ce reset_hung_task_detector +EXPORT_SYMBOL_GPL vmlinux 0xa3dab8bf debugfs_create_atomic_t +EXPORT_SYMBOL_GPL vmlinux 0xa3e7b225 fuse_request_alloc +EXPORT_SYMBOL_GPL vmlinux 0xa3e7c113 ring_buffer_iter_peek +EXPORT_SYMBOL_GPL vmlinux 0xa3feff34 snd_soc_bytes_info +EXPORT_SYMBOL_GPL vmlinux 0xa406585f pci_generic_config_write32 +EXPORT_SYMBOL_GPL vmlinux 0xa413156b mddev_resume +EXPORT_SYMBOL_GPL vmlinux 0xa415ffa4 i2c_new_device +EXPORT_SYMBOL_GPL vmlinux 0xa42bcc7e unregister_pernet_subsys +EXPORT_SYMBOL_GPL vmlinux 0xa42e4340 of_property_read_string_helper +EXPORT_SYMBOL_GPL vmlinux 0xa42fb250 pinctrl_utils_add_map_configs +EXPORT_SYMBOL_GPL vmlinux 0xa44ded73 pm_generic_restore +EXPORT_SYMBOL_GPL vmlinux 0xa457d19a ahash_free_instance +EXPORT_SYMBOL_GPL vmlinux 0xa45c3370 power_supply_powers +EXPORT_SYMBOL_GPL vmlinux 0xa48196c8 kdb_poll_idx +EXPORT_SYMBOL_GPL vmlinux 0xa4b25b3c devm_kstrdup +EXPORT_SYMBOL_GPL vmlinux 0xa4d977a8 device_store_int +EXPORT_SYMBOL_GPL vmlinux 0xa4dba679 devm_usb_put_phy +EXPORT_SYMBOL_GPL vmlinux 0xa51a4994 spi_new_device +EXPORT_SYMBOL_GPL vmlinux 0xa52c06cd devm_extcon_dev_register +EXPORT_SYMBOL_GPL vmlinux 0xa5449d2d __tracepoint_block_rq_remap +EXPORT_SYMBOL_GPL vmlinux 0xa549c621 snd_soc_get_pcm_runtime +EXPORT_SYMBOL_GPL vmlinux 0xa576bf0f snd_compress_register +EXPORT_SYMBOL_GPL vmlinux 0xa5a12589 mtd_table_mutex +EXPORT_SYMBOL_GPL vmlinux 0xa5c434e8 file_ra_state_init +EXPORT_SYMBOL_GPL vmlinux 0xa5c6fdee usb_match_one_id +EXPORT_SYMBOL_GPL vmlinux 0xa5e407e4 wm5110_aod +EXPORT_SYMBOL_GPL vmlinux 0xa5eb32ca ftrace_set_filter +EXPORT_SYMBOL_GPL vmlinux 0xa5efbf4c async_synchronize_full +EXPORT_SYMBOL_GPL vmlinux 0xa5f8854a usb_unlink_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0xa5f9e7f2 bpf_prog_destroy +EXPORT_SYMBOL_GPL vmlinux 0xa6222eee of_clk_get_parent_count +EXPORT_SYMBOL_GPL vmlinux 0xa625110d kmsg_dump_rewind +EXPORT_SYMBOL_GPL vmlinux 0xa6266c4e alarm_start +EXPORT_SYMBOL_GPL vmlinux 0xa64c4bd4 pci_intx +EXPORT_SYMBOL_GPL vmlinux 0xa651120d inet_peer_base_init +EXPORT_SYMBOL_GPL vmlinux 0xa665a042 irq_domain_add_legacy +EXPORT_SYMBOL_GPL vmlinux 0xa66bb9df crypto_shash_final +EXPORT_SYMBOL_GPL vmlinux 0xa68a9fb2 sata_std_hardreset +EXPORT_SYMBOL_GPL vmlinux 0xa6b01c4e kvm_vcpu_yield_to +EXPORT_SYMBOL_GPL vmlinux 0xa6b21ef2 dpm_suspend_end +EXPORT_SYMBOL_GPL vmlinux 0xa6b77edf sata_scr_read +EXPORT_SYMBOL_GPL vmlinux 0xa6bf284a syscon_regmap_lookup_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0xa6c092c3 inet_twsk_put +EXPORT_SYMBOL_GPL vmlinux 0xa6ca3c5d sock_diag_register +EXPORT_SYMBOL_GPL vmlinux 0xa6dbf5b9 rtnl_register +EXPORT_SYMBOL_GPL vmlinux 0xa6e1a69d kick_all_cpus_sync +EXPORT_SYMBOL_GPL vmlinux 0xa6ed26e7 sdhci_remove_host +EXPORT_SYMBOL_GPL vmlinux 0xa70b992a dev_pm_qos_remove_notifier +EXPORT_SYMBOL_GPL vmlinux 0xa71c60f4 kobject_create_and_add +EXPORT_SYMBOL_GPL vmlinux 0xa7204ab6 dummy_con +EXPORT_SYMBOL_GPL vmlinux 0xa7320619 tty_buffer_lock_exclusive +EXPORT_SYMBOL_GPL vmlinux 0xa74eaead wm831x_reg_write +EXPORT_SYMBOL_GPL vmlinux 0xa75312bc call_rcu_sched +EXPORT_SYMBOL_GPL vmlinux 0xa78e05f9 virtqueue_enable_cb +EXPORT_SYMBOL_GPL vmlinux 0xa7c1693e pci_create_root_bus +EXPORT_SYMBOL_GPL vmlinux 0xa7c73376 get_user_pages_fast +EXPORT_SYMBOL_GPL vmlinux 0xa7e13a6a clk_mux_ro_ops +EXPORT_SYMBOL_GPL vmlinux 0xa7f9a1d1 da903x_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0xa7fa7456 dev_pm_opp_find_freq_exact +EXPORT_SYMBOL_GPL vmlinux 0xa804f352 blkcipher_walk_phys +EXPORT_SYMBOL_GPL vmlinux 0xa80d7bdd cpufreq_register_governor +EXPORT_SYMBOL_GPL vmlinux 0xa8460dfa component_master_add_with_match +EXPORT_SYMBOL_GPL vmlinux 0xa851973a raw_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xa85ae0ca of_get_nand_bus_width +EXPORT_SYMBOL_GPL vmlinux 0xa870b0f8 rdev_clear_badblocks +EXPORT_SYMBOL_GPL vmlinux 0xa8ab1c8d sk_attach_filter +EXPORT_SYMBOL_GPL vmlinux 0xa8b14fe1 posix_acl_default_xattr_handler +EXPORT_SYMBOL_GPL vmlinux 0xa8b76a68 timecounter_cyc2time +EXPORT_SYMBOL_GPL vmlinux 0xa8bc717e percpu_ida_free_tags +EXPORT_SYMBOL_GPL vmlinux 0xa8c9af33 dev_pm_set_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0xa8ce5b2f dummy_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0xa8e3e7a8 of_get_nand_ecc_step_size +EXPORT_SYMBOL_GPL vmlinux 0xa8e98132 btree_visitor +EXPORT_SYMBOL_GPL vmlinux 0xa8fde051 of_dma_router_register +EXPORT_SYMBOL_GPL vmlinux 0xa921ed04 regcache_sync +EXPORT_SYMBOL_GPL vmlinux 0xa9263752 bus_create_file +EXPORT_SYMBOL_GPL vmlinux 0xa929ca80 cpuidle_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0xa9313ab9 shmem_read_mapping_page_gfp +EXPORT_SYMBOL_GPL vmlinux 0xa9320d27 ktime_get_seconds +EXPORT_SYMBOL_GPL vmlinux 0xa93e7096 devres_for_each_res +EXPORT_SYMBOL_GPL vmlinux 0xa9402bd1 snd_soc_put_strobe +EXPORT_SYMBOL_GPL vmlinux 0xa94478d8 mv_mbus_dram_info_nooverlap +EXPORT_SYMBOL_GPL vmlinux 0xa9621d40 mtd_write +EXPORT_SYMBOL_GPL vmlinux 0xa96cc416 of_console_check +EXPORT_SYMBOL_GPL vmlinux 0xa96f2042 snd_soc_dapm_force_enable_pin +EXPORT_SYMBOL_GPL vmlinux 0xa97fd971 usb_get_hcd +EXPORT_SYMBOL_GPL vmlinux 0xa980af16 RSA_public_key_algorithm +EXPORT_SYMBOL_GPL vmlinux 0xa98280c5 class_find_device +EXPORT_SYMBOL_GPL vmlinux 0xa9860036 ahci_error_handler +EXPORT_SYMBOL_GPL vmlinux 0xa9943da2 inet6_destroy_sock +EXPORT_SYMBOL_GPL vmlinux 0xa9a485d9 wm8997_aod +EXPORT_SYMBOL_GPL vmlinux 0xa9ae27d8 ahci_start_fis_rx +EXPORT_SYMBOL_GPL vmlinux 0xa9aef2e1 gfn_to_hva_memslot +EXPORT_SYMBOL_GPL vmlinux 0xa9bb869e kvm_get_dirty_log +EXPORT_SYMBOL_GPL vmlinux 0xa9cbc1be devres_open_group +EXPORT_SYMBOL_GPL vmlinux 0xa9e18049 task_handoff_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa9e59bf7 register_jprobe +EXPORT_SYMBOL_GPL vmlinux 0xa9ec9936 vfs_kern_mount +EXPORT_SYMBOL_GPL vmlinux 0xa9ed722d disk_part_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0xaa0dbc28 pci_probe_reset_slot +EXPORT_SYMBOL_GPL vmlinux 0xaa2a72bf __iowrite64_copy +EXPORT_SYMBOL_GPL vmlinux 0xaa3aa06d dma_buf_export +EXPORT_SYMBOL_GPL vmlinux 0xaa44acff omap_tll_disable +EXPORT_SYMBOL_GPL vmlinux 0xaa512ebc ulpi_viewport_access_ops +EXPORT_SYMBOL_GPL vmlinux 0xaa8dd859 put_pid +EXPORT_SYMBOL_GPL vmlinux 0xaaa918c9 ftrace_dump +EXPORT_SYMBOL_GPL vmlinux 0xaabf1e8d udp4_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0xaad54f32 snd_soc_dapm_weak_routes +EXPORT_SYMBOL_GPL vmlinux 0xaad57a4d blk_lld_busy +EXPORT_SYMBOL_GPL vmlinux 0xaadeb13b bio_clone_mddev +EXPORT_SYMBOL_GPL vmlinux 0xaadf6ab3 ip6_sk_redirect +EXPORT_SYMBOL_GPL vmlinux 0xaaeb79fe mmu_notifier_unregister_no_release +EXPORT_SYMBOL_GPL vmlinux 0xab185ec1 sata_sff_hardreset +EXPORT_SYMBOL_GPL vmlinux 0xab4f5029 serial8250_handle_irq +EXPORT_SYMBOL_GPL vmlinux 0xab53db86 to_nd_region +EXPORT_SYMBOL_GPL vmlinux 0xab58ce7b unregister_kretprobes +EXPORT_SYMBOL_GPL vmlinux 0xab5a5de4 fixed_phy_del +EXPORT_SYMBOL_GPL vmlinux 0xab5dd7cc security_inode_mkdir +EXPORT_SYMBOL_GPL vmlinux 0xab6babaf pm_qos_request +EXPORT_SYMBOL_GPL vmlinux 0xab6cf474 extcon_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xab8bc1a2 snd_pcm_rate_mask_intersect +EXPORT_SYMBOL_GPL vmlinux 0xab945a16 __iowrite32_copy +EXPORT_SYMBOL_GPL vmlinux 0xabb1f4e6 flush_kthread_worker +EXPORT_SYMBOL_GPL vmlinux 0xabc640f3 list_lru_isolate +EXPORT_SYMBOL_GPL vmlinux 0xabda1e2e decode_rs16 +EXPORT_SYMBOL_GPL vmlinux 0xabe58ec7 posix_clock_register +EXPORT_SYMBOL_GPL vmlinux 0xabe86e68 snd_soc_jack_get_type +EXPORT_SYMBOL_GPL vmlinux 0xac03ac39 pwm_set_chip_data +EXPORT_SYMBOL_GPL vmlinux 0xac0f81fc vchan_tx_submit +EXPORT_SYMBOL_GPL vmlinux 0xac176906 ahci_save_initial_config +EXPORT_SYMBOL_GPL vmlinux 0xac1e0986 virtqueue_disable_cb +EXPORT_SYMBOL_GPL vmlinux 0xac27ae06 __blk_end_request_err +EXPORT_SYMBOL_GPL vmlinux 0xac2bd262 of_property_read_u8_array +EXPORT_SYMBOL_GPL vmlinux 0xac477d8a user_preparse +EXPORT_SYMBOL_GPL vmlinux 0xac4a43d1 usb_get_urb +EXPORT_SYMBOL_GPL vmlinux 0xac511482 device_add +EXPORT_SYMBOL_GPL vmlinux 0xac526d8b mnt_want_write_file +EXPORT_SYMBOL_GPL vmlinux 0xac5f3d70 musb_readb +EXPORT_SYMBOL_GPL vmlinux 0xac6f7ae3 pwm_request +EXPORT_SYMBOL_GPL vmlinux 0xac8a0939 device_initialize +EXPORT_SYMBOL_GPL vmlinux 0xac8cb212 fuse_direct_io +EXPORT_SYMBOL_GPL vmlinux 0xac9e7345 fsnotify +EXPORT_SYMBOL_GPL vmlinux 0xacac7a92 arizona_request_irq +EXPORT_SYMBOL_GPL vmlinux 0xacdea2f1 list_lru_del +EXPORT_SYMBOL_GPL vmlinux 0xace1de41 ptp_classify_raw +EXPORT_SYMBOL_GPL vmlinux 0xace5c0fc usb_bus_list +EXPORT_SYMBOL_GPL vmlinux 0xad16e1e4 dm_accept_partial_bio +EXPORT_SYMBOL_GPL vmlinux 0xad1792b3 devm_regmap_field_free +EXPORT_SYMBOL_GPL vmlinux 0xad53e5cb tty_port_link_device +EXPORT_SYMBOL_GPL vmlinux 0xad7340b1 perf_pmu_migrate_context +EXPORT_SYMBOL_GPL vmlinux 0xad9bc83a kvm_release_page_clean +EXPORT_SYMBOL_GPL vmlinux 0xadc785ec kgdb_register_io_module +EXPORT_SYMBOL_GPL vmlinux 0xade26e15 irq_domain_xlate_onecell +EXPORT_SYMBOL_GPL vmlinux 0xadf61cd6 usb_match_id +EXPORT_SYMBOL_GPL vmlinux 0xadf6aa4d tpm_pcr_read +EXPORT_SYMBOL_GPL vmlinux 0xae63d892 dm_disk +EXPORT_SYMBOL_GPL vmlinux 0xae69b1c1 usermodehelper_read_unlock +EXPORT_SYMBOL_GPL vmlinux 0xae760414 spi_bus_unlock +EXPORT_SYMBOL_GPL vmlinux 0xae7c231d mpi_cmp +EXPORT_SYMBOL_GPL vmlinux 0xae7f0cb8 posix_acl_create +EXPORT_SYMBOL_GPL vmlinux 0xae816ef6 crypto_attr_alg2 +EXPORT_SYMBOL_GPL vmlinux 0xae81922b of_overlay_destroy_all +EXPORT_SYMBOL_GPL vmlinux 0xae8aa931 dev_pm_opp_get_voltage +EXPORT_SYMBOL_GPL vmlinux 0xae8cf538 del_mtd_blktrans_dev +EXPORT_SYMBOL_GPL vmlinux 0xae9f9d59 nl_table_lock +EXPORT_SYMBOL_GPL vmlinux 0xaea77157 of_thermal_get_trip_points +EXPORT_SYMBOL_GPL vmlinux 0xaeaf007f of_mpc8xxx_spi_probe +EXPORT_SYMBOL_GPL vmlinux 0xaebb1504 mtd_block_isreserved +EXPORT_SYMBOL_GPL vmlinux 0xaedd94b9 tc3589x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xaf348da7 cpu_pm_exit +EXPORT_SYMBOL_GPL vmlinux 0xaf399ad3 pci_enable_ats +EXPORT_SYMBOL_GPL vmlinux 0xaf4a85d4 device_create_file +EXPORT_SYMBOL_GPL vmlinux 0xaf54dc63 tps65912_reg_write +EXPORT_SYMBOL_GPL vmlinux 0xaf5f7a37 filter_check_discard +EXPORT_SYMBOL_GPL vmlinux 0xaf6818fb blk_insert_cloned_request +EXPORT_SYMBOL_GPL vmlinux 0xaf7ee9ef pwm_put +EXPORT_SYMBOL_GPL vmlinux 0xafaf9e5f kvm_read_guest_atomic +EXPORT_SYMBOL_GPL vmlinux 0xafbd400f sdio_readb +EXPORT_SYMBOL_GPL vmlinux 0xafdbd914 snd_compress_deregister +EXPORT_SYMBOL_GPL vmlinux 0xb0100db4 arizona_clk32k_enable +EXPORT_SYMBOL_GPL vmlinux 0xb019030e max8997_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0xb029336a snd_soc_of_parse_daifmt +EXPORT_SYMBOL_GPL vmlinux 0xb03afb68 rhashtable_destroy +EXPORT_SYMBOL_GPL vmlinux 0xb03f0d16 pci_user_write_config_byte +EXPORT_SYMBOL_GPL vmlinux 0xb0400c6b add_timer_on +EXPORT_SYMBOL_GPL vmlinux 0xb050f329 init_rs +EXPORT_SYMBOL_GPL vmlinux 0xb05b30bb snd_soc_dapm_del_routes +EXPORT_SYMBOL_GPL vmlinux 0xb060d77a pwmchip_add_with_polarity +EXPORT_SYMBOL_GPL vmlinux 0xb077e70a clk_unprepare +EXPORT_SYMBOL_GPL vmlinux 0xb08884fa get_mtd_device_nm +EXPORT_SYMBOL_GPL vmlinux 0xb08bb991 __pm_wakeup_event +EXPORT_SYMBOL_GPL vmlinux 0xb0b85f47 ring_buffer_iter_reset +EXPORT_SYMBOL_GPL vmlinux 0xb0cffcd4 tpm2_probe +EXPORT_SYMBOL_GPL vmlinux 0xb109abe5 regmap_field_read +EXPORT_SYMBOL_GPL vmlinux 0xb125ceb2 cpdma_control_set +EXPORT_SYMBOL_GPL vmlinux 0xb1313146 __of_genpd_xlate_simple +EXPORT_SYMBOL_GPL vmlinux 0xb13a8cbe mtd_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xb13d602c inet_csk_addr2sockaddr +EXPORT_SYMBOL_GPL vmlinux 0xb140d14c ring_buffer_read +EXPORT_SYMBOL_GPL vmlinux 0xb1425b32 dm_table_add_target_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xb166f8d4 hrtimer_start_range_ns +EXPORT_SYMBOL_GPL vmlinux 0xb1717f93 blocking_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xb1719240 cpsw_ale_del_ucast +EXPORT_SYMBOL_GPL vmlinux 0xb176cf43 snd_soc_add_platform_controls +EXPORT_SYMBOL_GPL vmlinux 0xb177ee39 device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xb18429eb suspend_device_irqs +EXPORT_SYMBOL_GPL vmlinux 0xb1acbcce rcu_barrier_sched +EXPORT_SYMBOL_GPL vmlinux 0xb1b02713 irq_generic_chip_ops +EXPORT_SYMBOL_GPL vmlinux 0xb1bed25d dpm_resume_start +EXPORT_SYMBOL_GPL vmlinux 0xb1c0c1c2 async_schedule_domain +EXPORT_SYMBOL_GPL vmlinux 0xb1e25684 __trace_bputs +EXPORT_SYMBOL_GPL vmlinux 0xb1e49040 of_alias_get_id +EXPORT_SYMBOL_GPL vmlinux 0xb1e68a71 crypto_create_tfm +EXPORT_SYMBOL_GPL vmlinux 0xb1f58c21 mmu_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0xb2162b4a da903x_writes +EXPORT_SYMBOL_GPL vmlinux 0xb2184723 omapdss_of_find_source_for_first_ep +EXPORT_SYMBOL_GPL vmlinux 0xb2210d64 reset_control_deassert +EXPORT_SYMBOL_GPL vmlinux 0xb22a4233 fat_attach +EXPORT_SYMBOL_GPL vmlinux 0xb232987f devres_add +EXPORT_SYMBOL_GPL vmlinux 0xb248e237 serial8250_request_dma +EXPORT_SYMBOL_GPL vmlinux 0xb257c27d devfreq_event_get_edev_count +EXPORT_SYMBOL_GPL vmlinux 0xb26a1add elfcorehdr_addr +EXPORT_SYMBOL_GPL vmlinux 0xb28badbc devm_phy_put +EXPORT_SYMBOL_GPL vmlinux 0xb2987f29 regulator_get_hardware_vsel_register +EXPORT_SYMBOL_GPL vmlinux 0xb2b75573 snd_soc_get_dai_substream +EXPORT_SYMBOL_GPL vmlinux 0xb2c0fc2b dma_request_slave_channel_reason +EXPORT_SYMBOL_GPL vmlinux 0xb2ce1817 simple_attr_write +EXPORT_SYMBOL_GPL vmlinux 0xb2e4e857 extcon_unregister_interest +EXPORT_SYMBOL_GPL vmlinux 0xb2e764e8 suspend_valid_only_mem +EXPORT_SYMBOL_GPL vmlinux 0xb2ecaa94 sysfs_add_link_to_group +EXPORT_SYMBOL_GPL vmlinux 0xb2fd32e7 device_property_read_string_array +EXPORT_SYMBOL_GPL vmlinux 0xb30d7ff2 ata_ehi_push_desc +EXPORT_SYMBOL_GPL vmlinux 0xb319ce5f fb_deferred_io_init +EXPORT_SYMBOL_GPL vmlinux 0xb33246b1 of_irq_parse_and_map_pci +EXPORT_SYMBOL_GPL vmlinux 0xb33a6cb0 crypto_unregister_aeads +EXPORT_SYMBOL_GPL vmlinux 0xb37d8762 omap_dm_timer_set_int_disable +EXPORT_SYMBOL_GPL vmlinux 0xb37f2919 trace_event_buffer_lock_reserve +EXPORT_SYMBOL_GPL vmlinux 0xb38e43ce snd_soc_info_enum_double +EXPORT_SYMBOL_GPL vmlinux 0xb398970b ipv6_recv_error +EXPORT_SYMBOL_GPL vmlinux 0xb3b8283a genlmsg_new_unicast +EXPORT_SYMBOL_GPL vmlinux 0xb3b87142 ahci_platform_ops +EXPORT_SYMBOL_GPL vmlinux 0xb3bdaa0e snd_soc_info_xr_sx +EXPORT_SYMBOL_GPL vmlinux 0xb3bf4a88 security_inode_create +EXPORT_SYMBOL_GPL vmlinux 0xb3c43a37 dma_request_slave_channel +EXPORT_SYMBOL_GPL vmlinux 0xb3ce5665 device_property_read_u16_array +EXPORT_SYMBOL_GPL vmlinux 0xb3e39bc9 gpiochip_remove +EXPORT_SYMBOL_GPL vmlinux 0xb4071e9b __dev_forward_skb +EXPORT_SYMBOL_GPL vmlinux 0xb427baec snd_soc_jack_add_pins +EXPORT_SYMBOL_GPL vmlinux 0xb44fbb73 debugfs_create_bool +EXPORT_SYMBOL_GPL vmlinux 0xb469f2bb devm_phy_optional_get +EXPORT_SYMBOL_GPL vmlinux 0xb486d05c of_usb_get_maximum_speed +EXPORT_SYMBOL_GPL vmlinux 0xb4b97c90 pvclock_gtod_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xb4c4cde9 tc3589x_block_read +EXPORT_SYMBOL_GPL vmlinux 0xb4cf0322 btree_lookup +EXPORT_SYMBOL_GPL vmlinux 0xb4d3d50c pci_user_read_config_dword +EXPORT_SYMBOL_GPL vmlinux 0xb4e1ecfd __put_task_struct +EXPORT_SYMBOL_GPL vmlinux 0xb4ea7cf7 kgdb_connected +EXPORT_SYMBOL_GPL vmlinux 0xb50df9cc tpm2_calc_ordinal_duration +EXPORT_SYMBOL_GPL vmlinux 0xb51fbd64 edac_op_state +EXPORT_SYMBOL_GPL vmlinux 0xb53620d1 pci_vpd_find_info_keyword +EXPORT_SYMBOL_GPL vmlinux 0xb5480243 pm_runtime_irq_safe +EXPORT_SYMBOL_GPL vmlinux 0xb54cac84 rdev_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0xb573ebe9 sdio_set_host_pm_flags +EXPORT_SYMBOL_GPL vmlinux 0xb5838d6a ata_pci_device_suspend +EXPORT_SYMBOL_GPL vmlinux 0xb58dcfa2 synchronize_sched_expedited +EXPORT_SYMBOL_GPL vmlinux 0xb594fb6d mtd_device_parse_register +EXPORT_SYMBOL_GPL vmlinux 0xb5a0e11e lpddr2_jedec_addressing_table +EXPORT_SYMBOL_GPL vmlinux 0xb5b0b84d raw_seq_open +EXPORT_SYMBOL_GPL vmlinux 0xb5b30707 sdio_readw +EXPORT_SYMBOL_GPL vmlinux 0xb5b3af20 of_property_read_u32_array +EXPORT_SYMBOL_GPL vmlinux 0xb5b5daf5 register_virtio_device +EXPORT_SYMBOL_GPL vmlinux 0xb5be30ff pwm_free +EXPORT_SYMBOL_GPL vmlinux 0xb5c96bdb virtio_device_restore +EXPORT_SYMBOL_GPL vmlinux 0xb5cba789 inet_hashinfo_init +EXPORT_SYMBOL_GPL vmlinux 0xb5cf6eca dma_get_slave_channel +EXPORT_SYMBOL_GPL vmlinux 0xb5da2a59 cpsw_am33xx_cm_get_macid +EXPORT_SYMBOL_GPL vmlinux 0xb5e723aa regmap_fields_write +EXPORT_SYMBOL_GPL vmlinux 0xb5e896fb tpm_get_random +EXPORT_SYMBOL_GPL vmlinux 0xb5f17edf perf_register_guest_info_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xb5f21f81 fuse_request_send +EXPORT_SYMBOL_GPL vmlinux 0xb622b7b6 get_kernel_pages +EXPORT_SYMBOL_GPL vmlinux 0xb6261484 register_die_notifier +EXPORT_SYMBOL_GPL vmlinux 0xb63a10f5 pinctrl_force_default +EXPORT_SYMBOL_GPL vmlinux 0xb649a141 vfs_setlease +EXPORT_SYMBOL_GPL vmlinux 0xb6ad7e50 snd_soc_add_dai_controls +EXPORT_SYMBOL_GPL vmlinux 0xb6aeb661 ata_id_c_string +EXPORT_SYMBOL_GPL vmlinux 0xb6d68e5c __cpufreq_driver_target +EXPORT_SYMBOL_GPL vmlinux 0xb6dfed65 dev_pm_clear_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0xb6e6d99d clk_disable +EXPORT_SYMBOL_GPL vmlinux 0xb6fcbb73 kvm_vcpu_gfn_to_pfn +EXPORT_SYMBOL_GPL vmlinux 0xb6fe4ed4 user_free_preparse +EXPORT_SYMBOL_GPL vmlinux 0xb72d3dfa usb_init_urb +EXPORT_SYMBOL_GPL vmlinux 0xb73027a2 blk_rq_err_bytes +EXPORT_SYMBOL_GPL vmlinux 0xb730e71b devm_regulator_bulk_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0xb7329c06 clk_set_phase +EXPORT_SYMBOL_GPL vmlinux 0xb754e275 perf_event_refresh +EXPORT_SYMBOL_GPL vmlinux 0xb771e6b7 bL_switch_request_cb +EXPORT_SYMBOL_GPL vmlinux 0xb77a3b54 spi_alloc_device +EXPORT_SYMBOL_GPL vmlinux 0xb77cb0a8 cpdma_chan_submit +EXPORT_SYMBOL_GPL vmlinux 0xb7b0e16a cpufreq_freq_transition_end +EXPORT_SYMBOL_GPL vmlinux 0xb7b12fe8 devm_of_phy_provider_unregister +EXPORT_SYMBOL_GPL vmlinux 0xb7b5bf45 soc_ac97_ops +EXPORT_SYMBOL_GPL vmlinux 0xb7c11b26 stmpe_block_write +EXPORT_SYMBOL_GPL vmlinux 0xb7c95aab sdhci_runtime_resume_host +EXPORT_SYMBOL_GPL vmlinux 0xb7dfe661 of_reserved_mem_device_init +EXPORT_SYMBOL_GPL vmlinux 0xb7f77027 rtc_tm_to_ktime +EXPORT_SYMBOL_GPL vmlinux 0xb81d7b0a dev_pm_opp_disable +EXPORT_SYMBOL_GPL vmlinux 0xb82566eb omap_tll_enable +EXPORT_SYMBOL_GPL vmlinux 0xb8346aeb percpu_ida_alloc +EXPORT_SYMBOL_GPL vmlinux 0xb83682e1 sdhci_pltfm_unregister +EXPORT_SYMBOL_GPL vmlinux 0xb843960b platform_device_add_data +EXPORT_SYMBOL_GPL vmlinux 0xb8a387f9 crypto_default_rng +EXPORT_SYMBOL_GPL vmlinux 0xb8cd3a7f nf_logger_put +EXPORT_SYMBOL_GPL vmlinux 0xb8e39a20 gpiochip_set_chained_irqchip +EXPORT_SYMBOL_GPL vmlinux 0xb8eed39e usb_hcd_giveback_urb +EXPORT_SYMBOL_GPL vmlinux 0xb903674c scatterwalk_map_and_copy +EXPORT_SYMBOL_GPL vmlinux 0xb9176155 asn1_ber_decoder +EXPORT_SYMBOL_GPL vmlinux 0xb91d63dd amba_ahb_device_add +EXPORT_SYMBOL_GPL vmlinux 0xb95ac640 find_extend_vma +EXPORT_SYMBOL_GPL vmlinux 0xb95dc753 devres_remove +EXPORT_SYMBOL_GPL vmlinux 0xb96751d7 of_clk_del_provider +EXPORT_SYMBOL_GPL vmlinux 0xb96f56f1 sdio_set_block_size +EXPORT_SYMBOL_GPL vmlinux 0xb96fc72e gpiod_export_link +EXPORT_SYMBOL_GPL vmlinux 0xb98de8f2 usb_disable_xhci_ports +EXPORT_SYMBOL_GPL vmlinux 0xb9af04a2 snd_soc_dai_digital_mute +EXPORT_SYMBOL_GPL vmlinux 0xb9b9df41 usb_amd_dev_put +EXPORT_SYMBOL_GPL vmlinux 0xb9c425de register_syscore_ops +EXPORT_SYMBOL_GPL vmlinux 0xb9c769cf generic_fh_to_parent +EXPORT_SYMBOL_GPL vmlinux 0xb9d025c9 llist_del_first +EXPORT_SYMBOL_GPL vmlinux 0xb9d89deb ip6_datagram_connect +EXPORT_SYMBOL_GPL vmlinux 0xb9e48aff scsi_target_block +EXPORT_SYMBOL_GPL vmlinux 0xb9e87b94 bL_switcher_trace_trigger +EXPORT_SYMBOL_GPL vmlinux 0xba1eae8f snd_soc_dapm_get_enum_double +EXPORT_SYMBOL_GPL vmlinux 0xba2b7f64 cpufreq_generic_get +EXPORT_SYMBOL_GPL vmlinux 0xba332e7e PageHuge +EXPORT_SYMBOL_GPL vmlinux 0xba3cef55 snd_soc_dai_set_tristate +EXPORT_SYMBOL_GPL vmlinux 0xba4f3c39 irq_create_strict_mappings +EXPORT_SYMBOL_GPL vmlinux 0xba56f928 gpiochip_add_pin_range +EXPORT_SYMBOL_GPL vmlinux 0xba8929ea percpu_ref_reinit +EXPORT_SYMBOL_GPL vmlinux 0xbaa06757 rt_mutex_unlock +EXPORT_SYMBOL_GPL vmlinux 0xbaaf0e2e snd_soc_dapm_enable_pin +EXPORT_SYMBOL_GPL vmlinux 0xbab256b2 crypto_chain +EXPORT_SYMBOL_GPL vmlinux 0xbab9a9f0 maxim_charger_currents +EXPORT_SYMBOL_GPL vmlinux 0xbabdf651 vfs_getxattr +EXPORT_SYMBOL_GPL vmlinux 0xbac75f4d tps65912_clear_bits +EXPORT_SYMBOL_GPL vmlinux 0xbaefbf3a crypto_ahash_type +EXPORT_SYMBOL_GPL vmlinux 0xbb038ce4 perf_unregister_guest_info_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xbb065d40 usb_hub_release_port +EXPORT_SYMBOL_GPL vmlinux 0xbb0ab47b debug_locks +EXPORT_SYMBOL_GPL vmlinux 0xbb11cfba klist_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0xbb3029d4 scsi_queue_work +EXPORT_SYMBOL_GPL vmlinux 0xbb4e956b mbox_free_channel +EXPORT_SYMBOL_GPL vmlinux 0xbb549f24 snd_pcm_stop_xrun +EXPORT_SYMBOL_GPL vmlinux 0xbb7d0fc9 pm_relax +EXPORT_SYMBOL_GPL vmlinux 0xbb9776e0 dev_pm_opp_find_freq_ceil +EXPORT_SYMBOL_GPL vmlinux 0xbb9edf77 pci_dev_run_wake +EXPORT_SYMBOL_GPL vmlinux 0xbbaea174 ata_scsi_slave_destroy +EXPORT_SYMBOL_GPL vmlinux 0xbbb07004 usb_ep0_reinit +EXPORT_SYMBOL_GPL vmlinux 0xbbb862ea mmc_send_tuning +EXPORT_SYMBOL_GPL vmlinux 0xbbbbddfd devm_led_classdev_register +EXPORT_SYMBOL_GPL vmlinux 0xbbd7dc4c dm_get_queue_limits +EXPORT_SYMBOL_GPL vmlinux 0xbbee8bbc sock_diag_put_meminfo +EXPORT_SYMBOL_GPL vmlinux 0xbc9175d8 crypto_init_spawn2 +EXPORT_SYMBOL_GPL vmlinux 0xbc92de43 split_page +EXPORT_SYMBOL_GPL vmlinux 0xbcac6160 pm_qos_remove_notifier +EXPORT_SYMBOL_GPL vmlinux 0xbcafd023 __get_vm_area +EXPORT_SYMBOL_GPL vmlinux 0xbcbaa80a __wake_up_locked_key +EXPORT_SYMBOL_GPL vmlinux 0xbcc7ff06 crypto_register_aeads +EXPORT_SYMBOL_GPL vmlinux 0xbccfd4d8 register_oldmem_pfn_is_ram +EXPORT_SYMBOL_GPL vmlinux 0xbcdd5b99 iommu_group_set_name +EXPORT_SYMBOL_GPL vmlinux 0xbce2af72 __blkg_prfill_u64 +EXPORT_SYMBOL_GPL vmlinux 0xbcee417d usb_find_alt_setting +EXPORT_SYMBOL_GPL vmlinux 0xbcefc0dd sock_diag_register_inet_compat +EXPORT_SYMBOL_GPL vmlinux 0xbcf1497f nvdimm_volatile_region_create +EXPORT_SYMBOL_GPL vmlinux 0xbcf89ab6 __wake_up_sync +EXPORT_SYMBOL_GPL vmlinux 0xbcfcb4ee pinctrl_get_group_pins +EXPORT_SYMBOL_GPL vmlinux 0xbd3003d4 dma_buf_begin_cpu_access +EXPORT_SYMBOL_GPL vmlinux 0xbd3fc0fc fb_deferred_io_open +EXPORT_SYMBOL_GPL vmlinux 0xbd3fe1e3 disable_hardirq +EXPORT_SYMBOL_GPL vmlinux 0xbd449e72 arm_iommu_release_mapping +EXPORT_SYMBOL_GPL vmlinux 0xbd48b56e mtd_erase_callback +EXPORT_SYMBOL_GPL vmlinux 0xbd4d5bd6 attribute_container_find_class_device +EXPORT_SYMBOL_GPL vmlinux 0xbd5cb8b9 ring_buffer_resize +EXPORT_SYMBOL_GPL vmlinux 0xbd6b4594 i2c_generic_gpio_recovery +EXPORT_SYMBOL_GPL vmlinux 0xbd77da7b relay_flush +EXPORT_SYMBOL_GPL vmlinux 0xbdc87cc6 pwmchip_add +EXPORT_SYMBOL_GPL vmlinux 0xbdd295f0 trace_vprintk +EXPORT_SYMBOL_GPL vmlinux 0xbdd2f42a rcu_bh_force_quiescent_state +EXPORT_SYMBOL_GPL vmlinux 0xbdd3592b usb_del_gadget_udc +EXPORT_SYMBOL_GPL vmlinux 0xbdd85c46 pci_disable_pcie_error_reporting +EXPORT_SYMBOL_GPL vmlinux 0xbde9a12f dev_pm_set_dedicated_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0xbdedca6e kill_mtd_super +EXPORT_SYMBOL_GPL vmlinux 0xbdf512de free_bch +EXPORT_SYMBOL_GPL vmlinux 0xbe0a4f54 register_mtd_blktrans +EXPORT_SYMBOL_GPL vmlinux 0xbe1887e4 ata_unpack_xfermask +EXPORT_SYMBOL_GPL vmlinux 0xbe1d54b0 omap_dm_timer_enable +EXPORT_SYMBOL_GPL vmlinux 0xbe24fa0b __fsnotify_inode_delete +EXPORT_SYMBOL_GPL vmlinux 0xbe31e8bd thermal_cooling_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xbe472d55 kobject_rename +EXPORT_SYMBOL_GPL vmlinux 0xbe57c0e7 ata_sff_irq_on +EXPORT_SYMBOL_GPL vmlinux 0xbe62097c root_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xbe687e88 wake_up_all_idle_cpus +EXPORT_SYMBOL_GPL vmlinux 0xbe6df87b mbox_request_channel +EXPORT_SYMBOL_GPL vmlinux 0xbe946f46 usb_enable_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0xbe96dfd8 of_reconfig_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0xbea5ff1e static_key_initialized +EXPORT_SYMBOL_GPL vmlinux 0xbec6756e ahci_platform_disable_resources +EXPORT_SYMBOL_GPL vmlinux 0xbee21107 dm_internal_suspend_noflush +EXPORT_SYMBOL_GPL vmlinux 0xbeee71a7 __get_mtd_device +EXPORT_SYMBOL_GPL vmlinux 0xbf041102 register_vt_notifier +EXPORT_SYMBOL_GPL vmlinux 0xbf0643e7 relay_open +EXPORT_SYMBOL_GPL vmlinux 0xbf0b8880 ahci_platform_suspend +EXPORT_SYMBOL_GPL vmlinux 0xbf0ffdd5 class_create_file_ns +EXPORT_SYMBOL_GPL vmlinux 0xbf135f1a cpsw_ale_dump +EXPORT_SYMBOL_GPL vmlinux 0xbf18e9bd nvdimm_name +EXPORT_SYMBOL_GPL vmlinux 0xbf366a58 wm831x_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0xbf3bc78e ip6_dst_lookup_flow +EXPORT_SYMBOL_GPL vmlinux 0xbf4d2033 of_get_pci_domain_nr +EXPORT_SYMBOL_GPL vmlinux 0xbf91e966 mtd_unlock +EXPORT_SYMBOL_GPL vmlinux 0xbfbc5434 pciserial_resume_ports +EXPORT_SYMBOL_GPL vmlinux 0xbfbcddf8 idr_alloc +EXPORT_SYMBOL_GPL vmlinux 0xbfc6c20e pci_remove_root_bus +EXPORT_SYMBOL_GPL vmlinux 0xbfcbf01a scsi_mode_select +EXPORT_SYMBOL_GPL vmlinux 0xbfce8698 snd_dmaengine_pcm_set_config_from_dai_data +EXPORT_SYMBOL_GPL vmlinux 0xbfd407aa ping_rcv +EXPORT_SYMBOL_GPL vmlinux 0xbfe5616d tick_broadcast_oneshot_control +EXPORT_SYMBOL_GPL vmlinux 0xbfea4c70 regmap_field_alloc +EXPORT_SYMBOL_GPL vmlinux 0xbfeb91f4 bus_sort_breadthfirst +EXPORT_SYMBOL_GPL vmlinux 0xbff1cb29 raw_seq_start +EXPORT_SYMBOL_GPL vmlinux 0xc00101bb scsi_flush_work +EXPORT_SYMBOL_GPL vmlinux 0xc00131cf visitor64 +EXPORT_SYMBOL_GPL vmlinux 0xc0244b66 omapdss_of_get_first_endpoint +EXPORT_SYMBOL_GPL vmlinux 0xc02de527 omap_dm_timer_set_match +EXPORT_SYMBOL_GPL vmlinux 0xc031afa3 kvm_vcpu_gfn_to_page +EXPORT_SYMBOL_GPL vmlinux 0xc03a654b memalloc_socks +EXPORT_SYMBOL_GPL vmlinux 0xc0430334 __fat_fs_error +EXPORT_SYMBOL_GPL vmlinux 0xc046e280 snd_soc_dpcm_fe_can_update +EXPORT_SYMBOL_GPL vmlinux 0xc060e6c4 pci_enable_pcie_error_reporting +EXPORT_SYMBOL_GPL vmlinux 0xc062140e pwm_can_sleep +EXPORT_SYMBOL_GPL vmlinux 0xc06a9d49 phy_destroy +EXPORT_SYMBOL_GPL vmlinux 0xc06f3b51 mtd_point +EXPORT_SYMBOL_GPL vmlinux 0xc07e1364 get_governor_parent_kobj +EXPORT_SYMBOL_GPL vmlinux 0xc081c246 bL_switcher_put_enabled +EXPORT_SYMBOL_GPL vmlinux 0xc08647ff ring_buffer_bytes_cpu +EXPORT_SYMBOL_GPL vmlinux 0xc08e8316 register_virtio_driver +EXPORT_SYMBOL_GPL vmlinux 0xc09655e0 devm_power_supply_register_no_ws +EXPORT_SYMBOL_GPL vmlinux 0xc0983154 crypto_unregister_pcomp +EXPORT_SYMBOL_GPL vmlinux 0xc0a96e14 rcu_gp_is_expedited +EXPORT_SYMBOL_GPL vmlinux 0xc0b95397 pci_fixup_irqs +EXPORT_SYMBOL_GPL vmlinux 0xc0c61216 unix_outq_len +EXPORT_SYMBOL_GPL vmlinux 0xc0c8dd0f __rtnl_register +EXPORT_SYMBOL_GPL vmlinux 0xc0d01eb1 dm_path_uevent +EXPORT_SYMBOL_GPL vmlinux 0xc0d26387 kmsg_dump_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc0dab9b6 spi_add_device +EXPORT_SYMBOL_GPL vmlinux 0xc0df1cbe mtd_kmalloc_up_to +EXPORT_SYMBOL_GPL vmlinux 0xc0df8865 timerqueue_add +EXPORT_SYMBOL_GPL vmlinux 0xc0e75cec visitor128 +EXPORT_SYMBOL_GPL vmlinux 0xc10abbaa wm831x_auxadc_read_uv +EXPORT_SYMBOL_GPL vmlinux 0xc127afd6 __pci_reset_function +EXPORT_SYMBOL_GPL vmlinux 0xc17515d7 usb_hcds_loaded +EXPORT_SYMBOL_GPL vmlinux 0xc1831628 devm_mdiobus_free +EXPORT_SYMBOL_GPL vmlinux 0xc184c889 devm_of_phy_get_by_index +EXPORT_SYMBOL_GPL vmlinux 0xc184cd82 pci_find_ext_capability +EXPORT_SYMBOL_GPL vmlinux 0xc18578ed process_srcu +EXPORT_SYMBOL_GPL vmlinux 0xc19bc272 snd_soc_jack_add_gpiods +EXPORT_SYMBOL_GPL vmlinux 0xc1a3f1e8 da9052_adc_manual_read +EXPORT_SYMBOL_GPL vmlinux 0xc1abce34 blk_queue_rq_timeout +EXPORT_SYMBOL_GPL vmlinux 0xc1ac9610 ata_sff_error_handler +EXPORT_SYMBOL_GPL vmlinux 0xc1bced6a cleanup_srcu_struct +EXPORT_SYMBOL_GPL vmlinux 0xc1bef247 param_set_bool_enable_only +EXPORT_SYMBOL_GPL vmlinux 0xc1c9c495 ata_bmdma_port_start32 +EXPORT_SYMBOL_GPL vmlinux 0xc1e2285a __rtnl_link_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc1f85235 security_kernel_fw_from_file +EXPORT_SYMBOL_GPL vmlinux 0xc1f91e1d pci_create_slot +EXPORT_SYMBOL_GPL vmlinux 0xc1fa080b snd_soc_dapm_mux_update_power +EXPORT_SYMBOL_GPL vmlinux 0xc202a878 perf_pmu_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc2053141 tty_ldisc_flush +EXPORT_SYMBOL_GPL vmlinux 0xc20bd7f2 snd_soc_component_update_bits_async +EXPORT_SYMBOL_GPL vmlinux 0xc21395ef uart_handle_cts_change +EXPORT_SYMBOL_GPL vmlinux 0xc219150d device_get_child_node_count +EXPORT_SYMBOL_GPL vmlinux 0xc21e8044 __platform_create_bundle +EXPORT_SYMBOL_GPL vmlinux 0xc22a3091 vm_unmap_aliases +EXPORT_SYMBOL_GPL vmlinux 0xc280fb46 kdb_register +EXPORT_SYMBOL_GPL vmlinux 0xc2896051 usb_poison_urb +EXPORT_SYMBOL_GPL vmlinux 0xc2a14484 watchdog_register_device +EXPORT_SYMBOL_GPL vmlinux 0xc2e36592 crypto_register_shash +EXPORT_SYMBOL_GPL vmlinux 0xc2e728dc ata_sff_queue_delayed_work +EXPORT_SYMBOL_GPL vmlinux 0xc2ec25d9 devres_destroy +EXPORT_SYMBOL_GPL vmlinux 0xc31913ac driver_create_file +EXPORT_SYMBOL_GPL vmlinux 0xc33478a8 ahci_qc_issue +EXPORT_SYMBOL_GPL vmlinux 0xc33bcd5b usb_disable_lpm +EXPORT_SYMBOL_GPL vmlinux 0xc341ae6d zs_map_object +EXPORT_SYMBOL_GPL vmlinux 0xc34602cc pci_find_next_ext_capability +EXPORT_SYMBOL_GPL vmlinux 0xc35c270b mbox_client_peek_data +EXPORT_SYMBOL_GPL vmlinux 0xc37226a5 tpm_pcr_extend +EXPORT_SYMBOL_GPL vmlinux 0xc37ad1b7 skb_zerocopy +EXPORT_SYMBOL_GPL vmlinux 0xc385cb58 perf_num_counters +EXPORT_SYMBOL_GPL vmlinux 0xc3a76bf0 ata_sas_port_resume +EXPORT_SYMBOL_GPL vmlinux 0xc3b93bba klist_next +EXPORT_SYMBOL_GPL vmlinux 0xc41e0178 btree_last +EXPORT_SYMBOL_GPL vmlinux 0xc41ee21e ata_link_next +EXPORT_SYMBOL_GPL vmlinux 0xc42301a9 get_net_ns_by_fd +EXPORT_SYMBOL_GPL vmlinux 0xc428068d sata_deb_timing_long +EXPORT_SYMBOL_GPL vmlinux 0xc4467571 __ata_change_queue_depth +EXPORT_SYMBOL_GPL vmlinux 0xc44875e7 __hvc_resize +EXPORT_SYMBOL_GPL vmlinux 0xc451b42b transport_remove_device +EXPORT_SYMBOL_GPL vmlinux 0xc454fc7b twl_get_type +EXPORT_SYMBOL_GPL vmlinux 0xc45612c1 snd_soc_dapm_put_volsw +EXPORT_SYMBOL_GPL vmlinux 0xc45bd4bc usb_hcd_resume_root_hub +EXPORT_SYMBOL_GPL vmlinux 0xc46acca0 iommu_attach_device +EXPORT_SYMBOL_GPL vmlinux 0xc471c67a twl4030_audio_disable_resource +EXPORT_SYMBOL_GPL vmlinux 0xc48b0f76 dma_release_channel +EXPORT_SYMBOL_GPL vmlinux 0xc48b7ccf ata_mode_string +EXPORT_SYMBOL_GPL vmlinux 0xc49cbf84 __srcu_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xc4b3bef6 __tracepoint_xhci_dbg_quirks +EXPORT_SYMBOL_GPL vmlinux 0xc4baab9c power_supply_register_no_ws +EXPORT_SYMBOL_GPL vmlinux 0xc4bf19e5 ping_bind +EXPORT_SYMBOL_GPL vmlinux 0xc4d8d550 pwm_set_polarity +EXPORT_SYMBOL_GPL vmlinux 0xc5130fab skb_copy_ubufs +EXPORT_SYMBOL_GPL vmlinux 0xc537e633 kick_process +EXPORT_SYMBOL_GPL vmlinux 0xc542933a timecounter_read +EXPORT_SYMBOL_GPL vmlinux 0xc55c052f elv_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc55fa130 snd_soc_dapm_disable_pin +EXPORT_SYMBOL_GPL vmlinux 0xc55fa9ac cpsw_phy_sel +EXPORT_SYMBOL_GPL vmlinux 0xc5682062 xhci_gen_setup +EXPORT_SYMBOL_GPL vmlinux 0xc575c737 debug_locks_off +EXPORT_SYMBOL_GPL vmlinux 0xc57f6e5e relay_file_operations +EXPORT_SYMBOL_GPL vmlinux 0xc5809cd5 key_type_logon +EXPORT_SYMBOL_GPL vmlinux 0xc5817511 crypto_aead_type +EXPORT_SYMBOL_GPL vmlinux 0xc5886a68 sdhci_send_command +EXPORT_SYMBOL_GPL vmlinux 0xc59788be pm_generic_poweroff_noirq +EXPORT_SYMBOL_GPL vmlinux 0xc5b17bee crypto_alloc_instance +EXPORT_SYMBOL_GPL vmlinux 0xc5b7353a mbox_client_txdone +EXPORT_SYMBOL_GPL vmlinux 0xc5c16f57 scsi_autopm_get_device +EXPORT_SYMBOL_GPL vmlinux 0xc5c742ab omap_iommu_restore_ctx +EXPORT_SYMBOL_GPL vmlinux 0xc5d137bb debugfs_remove +EXPORT_SYMBOL_GPL vmlinux 0xc5d5513e cpdma_chan_process +EXPORT_SYMBOL_GPL vmlinux 0xc5e0aa30 usb_enable_lpm +EXPORT_SYMBOL_GPL vmlinux 0xc5ead03a component_master_add_child +EXPORT_SYMBOL_GPL vmlinux 0xc6040099 crypto_aead_reqsize +EXPORT_SYMBOL_GPL vmlinux 0xc617f82c unregister_oom_notifier +EXPORT_SYMBOL_GPL vmlinux 0xc61d92f3 devres_get +EXPORT_SYMBOL_GPL vmlinux 0xc61f63f9 kobject_get_path +EXPORT_SYMBOL_GPL vmlinux 0xc628a783 wm8350_reg_write +EXPORT_SYMBOL_GPL vmlinux 0xc63d847d ktime_get_mono_fast_ns +EXPORT_SYMBOL_GPL vmlinux 0xc649229a clk_register_gate +EXPORT_SYMBOL_GPL vmlinux 0xc6534445 platform_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc65d3eed ring_buffer_entries_cpu +EXPORT_SYMBOL_GPL vmlinux 0xc66b77b1 iommu_group_set_iommudata +EXPORT_SYMBOL_GPL vmlinux 0xc67af00f ata_noop_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0xc6810e93 of_irq_get +EXPORT_SYMBOL_GPL vmlinux 0xc685c037 cpdma_check_free_tx_desc +EXPORT_SYMBOL_GPL vmlinux 0xc6903885 ata_cable_unknown +EXPORT_SYMBOL_GPL vmlinux 0xc69578cc cpufreq_generic_attr +EXPORT_SYMBOL_GPL vmlinux 0xc69adbb0 snd_soc_dai_set_tdm_slot +EXPORT_SYMBOL_GPL vmlinux 0xc69b7ee5 zs_destroy_pool +EXPORT_SYMBOL_GPL vmlinux 0xc6a2271f devm_regmap_init_spi +EXPORT_SYMBOL_GPL vmlinux 0xc6a4a872 __clk_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0xc6be6f62 ohci_hub_status_data +EXPORT_SYMBOL_GPL vmlinux 0xc6c0aba3 clk_fractional_divider_ops +EXPORT_SYMBOL_GPL vmlinux 0xc6e8a198 __i2c_board_lock +EXPORT_SYMBOL_GPL vmlinux 0xc6e93736 fat_detach +EXPORT_SYMBOL_GPL vmlinux 0xc6ec1dd4 power_supply_get_by_name +EXPORT_SYMBOL_GPL vmlinux 0xc7001565 dev_attr_em_message +EXPORT_SYMBOL_GPL vmlinux 0xc7142c87 __mmdrop +EXPORT_SYMBOL_GPL vmlinux 0xc715ecf9 powercap_unregister_control_type +EXPORT_SYMBOL_GPL vmlinux 0xc72e1233 __trace_bprintk +EXPORT_SYMBOL_GPL vmlinux 0xc7342e7c fat_remove_entries +EXPORT_SYMBOL_GPL vmlinux 0xc76e1c5a relay_switch_subbuf +EXPORT_SYMBOL_GPL vmlinux 0xc76f960f snd_dmaengine_pcm_close_release_chan +EXPORT_SYMBOL_GPL vmlinux 0xc7a1840e llist_add_batch +EXPORT_SYMBOL_GPL vmlinux 0xc7b2c015 rtnl_link_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc7c6391c mpi_set_buffer +EXPORT_SYMBOL_GPL vmlinux 0xc7c7fa33 spi_get_device_id +EXPORT_SYMBOL_GPL vmlinux 0xc7d6c497 device_reset +EXPORT_SYMBOL_GPL vmlinux 0xc7e39bca ring_buffer_dropped_events_cpu +EXPORT_SYMBOL_GPL vmlinux 0xc8269f94 snd_soc_params_to_frame_size +EXPORT_SYMBOL_GPL vmlinux 0xc8324b69 ata_sff_data_xfer32 +EXPORT_SYMBOL_GPL vmlinux 0xc839f5e8 wm8350_gpio_config +EXPORT_SYMBOL_GPL vmlinux 0xc83a3c28 crypto_register_rngs +EXPORT_SYMBOL_GPL vmlinux 0xc83b3f27 skb_pull_rcsum +EXPORT_SYMBOL_GPL vmlinux 0xc85c6739 usb_autopm_put_interface +EXPORT_SYMBOL_GPL vmlinux 0xc8644f13 tcp_reno_ssthresh +EXPORT_SYMBOL_GPL vmlinux 0xc87c1f84 ktime_get +EXPORT_SYMBOL_GPL vmlinux 0xc88d703c attribute_container_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc8abedc8 ata_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0xc8ac9ffa blk_set_queue_dying +EXPORT_SYMBOL_GPL vmlinux 0xc8add232 ring_buffer_record_disable +EXPORT_SYMBOL_GPL vmlinux 0xc8aebb2f debugfs_create_devm_seqfile +EXPORT_SYMBOL_GPL vmlinux 0xc8c8add2 crypto_destroy_tfm +EXPORT_SYMBOL_GPL vmlinux 0xc8d88ef8 ata_std_error_handler +EXPORT_SYMBOL_GPL vmlinux 0xc8de802f cn_netlink_send +EXPORT_SYMBOL_GPL vmlinux 0xc91277a1 kgdb_schedule_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0xc917f176 reservation_object_test_signaled_rcu +EXPORT_SYMBOL_GPL vmlinux 0xc9226c18 ata_sff_tf_read +EXPORT_SYMBOL_GPL vmlinux 0xc9371af8 regulator_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0xc9490bbc omap_dm_timer_request +EXPORT_SYMBOL_GPL vmlinux 0xc9551cd9 dma_buf_kunmap_atomic +EXPORT_SYMBOL_GPL vmlinux 0xc9561772 fb_destroy_modelist +EXPORT_SYMBOL_GPL vmlinux 0xc96022d0 xfrm_output +EXPORT_SYMBOL_GPL vmlinux 0xc97c7334 alarm_cancel +EXPORT_SYMBOL_GPL vmlinux 0xc97d1140 cpufreq_cooling_get_level +EXPORT_SYMBOL_GPL vmlinux 0xc989b176 devm_hwrng_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc9a280a8 pci_cfg_access_lock +EXPORT_SYMBOL_GPL vmlinux 0xc9b349ec usb_unlink_urb +EXPORT_SYMBOL_GPL vmlinux 0xc9ec4e21 free_percpu +EXPORT_SYMBOL_GPL vmlinux 0xc9f8b2ea crypto_unregister_aead +EXPORT_SYMBOL_GPL vmlinux 0xca026581 usb_kill_urb +EXPORT_SYMBOL_GPL vmlinux 0xca04e4cc __module_text_address +EXPORT_SYMBOL_GPL vmlinux 0xca0b05b3 bus_get_kset +EXPORT_SYMBOL_GPL vmlinux 0xca176dcd of_dma_configure +EXPORT_SYMBOL_GPL vmlinux 0xca17c839 pm_generic_runtime_suspend +EXPORT_SYMBOL_GPL vmlinux 0xca4af98a get_device +EXPORT_SYMBOL_GPL vmlinux 0xca4ef916 blk_queue_lld_busy +EXPORT_SYMBOL_GPL vmlinux 0xca517707 pinctrl_utils_add_map_mux +EXPORT_SYMBOL_GPL vmlinux 0xca51ce60 skcipher_geniv_init +EXPORT_SYMBOL_GPL vmlinux 0xca5fb970 sata_link_resume +EXPORT_SYMBOL_GPL vmlinux 0xca7d8764 kthread_freezable_should_stop +EXPORT_SYMBOL_GPL vmlinux 0xca877350 transport_class_unregister +EXPORT_SYMBOL_GPL vmlinux 0xca8b50f2 fwnode_property_read_u64_array +EXPORT_SYMBOL_GPL vmlinux 0xcabbc4d3 ahci_platform_get_resources +EXPORT_SYMBOL_GPL vmlinux 0xcabe04de cpuidle_resume_and_unlock +EXPORT_SYMBOL_GPL vmlinux 0xcac63c84 usb_get_from_anchor +EXPORT_SYMBOL_GPL vmlinux 0xcadd40f6 mbox_send_message +EXPORT_SYMBOL_GPL vmlinux 0xcae390bf ping_unhash +EXPORT_SYMBOL_GPL vmlinux 0xcae42186 iptunnel_handle_offloads +EXPORT_SYMBOL_GPL vmlinux 0xcb01195b ata_link_abort +EXPORT_SYMBOL_GPL vmlinux 0xcb15eee9 sdhci_pci_get_data +EXPORT_SYMBOL_GPL vmlinux 0xcb1b75be dpcm_be_dai_trigger +EXPORT_SYMBOL_GPL vmlinux 0xcb276c9f ata_bmdma_port_ops +EXPORT_SYMBOL_GPL vmlinux 0xcb32cb36 musb_writeb +EXPORT_SYMBOL_GPL vmlinux 0xcb3cfbf1 cpufreq_generic_frequency_table_verify +EXPORT_SYMBOL_GPL vmlinux 0xcb469d2b ddebug_add_module +EXPORT_SYMBOL_GPL vmlinux 0xcb5b6ab5 alarm_forward +EXPORT_SYMBOL_GPL vmlinux 0xcb97cde4 __pm_runtime_suspend +EXPORT_SYMBOL_GPL vmlinux 0xcb9b4e2b ahci_sdev_attrs +EXPORT_SYMBOL_GPL vmlinux 0xcb9c40ef ata_host_start +EXPORT_SYMBOL_GPL vmlinux 0xcbce4ea8 mtd_read +EXPORT_SYMBOL_GPL vmlinux 0xcbe56bc2 zs_get_total_pages +EXPORT_SYMBOL_GPL vmlinux 0xcbee20b2 get_cpu_iowait_time_us +EXPORT_SYMBOL_GPL vmlinux 0xcc022210 pci_check_and_mask_intx +EXPORT_SYMBOL_GPL vmlinux 0xcc061540 screen_glyph +EXPORT_SYMBOL_GPL vmlinux 0xcc455539 ahci_platform_init_host +EXPORT_SYMBOL_GPL vmlinux 0xcc52626a sdio_writesb +EXPORT_SYMBOL_GPL vmlinux 0xcc84cf39 sysfs_remove_mount_point +EXPORT_SYMBOL_GPL vmlinux 0xcc85fcb6 async_schedule +EXPORT_SYMBOL_GPL vmlinux 0xcc9f380c snd_soc_set_runtime_hwparams +EXPORT_SYMBOL_GPL vmlinux 0xccaee7ee clk_register +EXPORT_SYMBOL_GPL vmlinux 0xccc144f6 __cci_control_port_by_device +EXPORT_SYMBOL_GPL vmlinux 0xcccfb2fa sata_deb_timing_hotplug +EXPORT_SYMBOL_GPL vmlinux 0xcce20370 crypto_grab_aead +EXPORT_SYMBOL_GPL vmlinux 0xcd045fee bus_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0xcd066230 amba_device_put +EXPORT_SYMBOL_GPL vmlinux 0xcd166350 wm831x_reg_lock +EXPORT_SYMBOL_GPL vmlinux 0xcd475155 list_lru_walk_one +EXPORT_SYMBOL_GPL vmlinux 0xcd55d51b of_phy_get +EXPORT_SYMBOL_GPL vmlinux 0xcd6a2b26 debugfs_create_x64 +EXPORT_SYMBOL_GPL vmlinux 0xcd734f94 ata_bmdma_setup +EXPORT_SYMBOL_GPL vmlinux 0xcd7d9fbf iommu_group_add_device +EXPORT_SYMBOL_GPL vmlinux 0xcd8a2468 regmap_init_spi +EXPORT_SYMBOL_GPL vmlinux 0xcd91b127 system_highpri_wq +EXPORT_SYMBOL_GPL vmlinux 0xcd974f00 rcu_all_qs +EXPORT_SYMBOL_GPL vmlinux 0xcd9bf00d sdio_claim_host +EXPORT_SYMBOL_GPL vmlinux 0xcdb5b996 devm_devfreq_event_remove_edev +EXPORT_SYMBOL_GPL vmlinux 0xcdb6adcc ras_userspace_consumers +EXPORT_SYMBOL_GPL vmlinux 0xcdc3cf14 of_gen_pool_get +EXPORT_SYMBOL_GPL vmlinux 0xcdca3691 nr_irqs +EXPORT_SYMBOL_GPL vmlinux 0xce084f0c wm5110_i2c_regmap +EXPORT_SYMBOL_GPL vmlinux 0xce0b9702 sata_pmp_qc_defer_cmd_switch +EXPORT_SYMBOL_GPL vmlinux 0xce2315a9 regulator_put +EXPORT_SYMBOL_GPL vmlinux 0xce523a6d regmap_write_async +EXPORT_SYMBOL_GPL vmlinux 0xce54db1d devfreq_event_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0xce5a5254 set_task_ioprio +EXPORT_SYMBOL_GPL vmlinux 0xce6a9d9a trace_current_buffer_discard_commit +EXPORT_SYMBOL_GPL vmlinux 0xce6db656 rcu_is_watching +EXPORT_SYMBOL_GPL vmlinux 0xce9021b2 user_update +EXPORT_SYMBOL_GPL vmlinux 0xce96403c gpiod_set_raw_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0xceac2230 regulator_get_bypass_regmap +EXPORT_SYMBOL_GPL vmlinux 0xcec926f0 pm_generic_thaw_noirq +EXPORT_SYMBOL_GPL vmlinux 0xced965b7 regulator_bulk_force_disable +EXPORT_SYMBOL_GPL vmlinux 0xced97c2b sdhci_pltfm_pmops +EXPORT_SYMBOL_GPL vmlinux 0xcedda2b3 dev_pm_qos_hide_flags +EXPORT_SYMBOL_GPL vmlinux 0xcee1641c kgdb_unregister_nmi_console +EXPORT_SYMBOL_GPL vmlinux 0xcee69566 _snd_pcm_stream_lock_irqsave +EXPORT_SYMBOL_GPL vmlinux 0xcefa136a fuse_get_req +EXPORT_SYMBOL_GPL vmlinux 0xcf0f2cb0 max_gen_clk_probe +EXPORT_SYMBOL_GPL vmlinux 0xcf1a7a4c perf_event_disable +EXPORT_SYMBOL_GPL vmlinux 0xcf2303d5 iptunnel_xmit +EXPORT_SYMBOL_GPL vmlinux 0xcf2fed8e ping_proc_register +EXPORT_SYMBOL_GPL vmlinux 0xcf50f034 rt_mutex_destroy +EXPORT_SYMBOL_GPL vmlinux 0xcf54ea93 async_unregister_domain +EXPORT_SYMBOL_GPL vmlinux 0xcf5c7e15 task_active_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0xcf82d59f blkcg_root +EXPORT_SYMBOL_GPL vmlinux 0xcf89cbe8 of_get_nand_ecc_strength +EXPORT_SYMBOL_GPL vmlinux 0xcf8f4794 kvm_irq_has_notifier +EXPORT_SYMBOL_GPL vmlinux 0xcfb5871c irq_work_queue +EXPORT_SYMBOL_GPL vmlinux 0xcfc5f470 gfn_to_pfn_prot +EXPORT_SYMBOL_GPL vmlinux 0xcfc68341 synchronize_rcu_bh +EXPORT_SYMBOL_GPL vmlinux 0xcfc6dc32 stmpe_set_altfunc +EXPORT_SYMBOL_GPL vmlinux 0xcfc8f2e3 blk_mq_freeze_queue_start +EXPORT_SYMBOL_GPL vmlinux 0xcfdc7adf of_usb_get_dr_mode +EXPORT_SYMBOL_GPL vmlinux 0xcff736a5 security_inode_setattr +EXPORT_SYMBOL_GPL vmlinux 0xd005b5ba cpufreq_cpu_put +EXPORT_SYMBOL_GPL vmlinux 0xd007136c default_iommu_map_sg +EXPORT_SYMBOL_GPL vmlinux 0xd0167d04 ahci_dev_classify +EXPORT_SYMBOL_GPL vmlinux 0xd0337ab3 kvm_read_guest +EXPORT_SYMBOL_GPL vmlinux 0xd039af2a crypto_unregister_ahash +EXPORT_SYMBOL_GPL vmlinux 0xd03c7700 secure_ipv4_port_ephemeral +EXPORT_SYMBOL_GPL vmlinux 0xd03f2b89 of_clk_src_onecell_get +EXPORT_SYMBOL_GPL vmlinux 0xd041180a tpm_gen_interrupt +EXPORT_SYMBOL_GPL vmlinux 0xd0498088 kvm_write_guest +EXPORT_SYMBOL_GPL vmlinux 0xd06524ba raw_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd067d3c5 system_freezable_power_efficient_wq +EXPORT_SYMBOL_GPL vmlinux 0xd06a89fa crypto_givcipher_type +EXPORT_SYMBOL_GPL vmlinux 0xd094fee7 of_irq_parse_one +EXPORT_SYMBOL_GPL vmlinux 0xd0a65ace ping_common_sendmsg +EXPORT_SYMBOL_GPL vmlinux 0xd0bec1af tty_get_pgrp +EXPORT_SYMBOL_GPL vmlinux 0xd0c05159 emergency_restart +EXPORT_SYMBOL_GPL vmlinux 0xd0d3de34 subsys_dev_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0xd0d8ae2b ahci_check_ready +EXPORT_SYMBOL_GPL vmlinux 0xd0e47f7e da903x_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0xd0e681d9 devm_clk_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd1058f9e inet6_csk_xmit +EXPORT_SYMBOL_GPL vmlinux 0xd135c48f usb_hcd_pci_shutdown +EXPORT_SYMBOL_GPL vmlinux 0xd138713d unregister_virtio_device +EXPORT_SYMBOL_GPL vmlinux 0xd145411c rtc_class_close +EXPORT_SYMBOL_GPL vmlinux 0xd14c555c swiotlb_tbl_map_single +EXPORT_SYMBOL_GPL vmlinux 0xd15968d0 mpc8xxx_spi_rx_buf_u8 +EXPORT_SYMBOL_GPL vmlinux 0xd16712f3 crypto_check_attr_type +EXPORT_SYMBOL_GPL vmlinux 0xd1822f0b cpufreq_show_cpus +EXPORT_SYMBOL_GPL vmlinux 0xd1853db3 dma_get_required_mask +EXPORT_SYMBOL_GPL vmlinux 0xd1c146de devres_alloc +EXPORT_SYMBOL_GPL vmlinux 0xd1c5a1f3 swiotlb_tbl_unmap_single +EXPORT_SYMBOL_GPL vmlinux 0xd1c5aa1e inet_csk_bind_conflict +EXPORT_SYMBOL_GPL vmlinux 0xd1c8a753 snd_pcm_stream_lock_irq +EXPORT_SYMBOL_GPL vmlinux 0xd1ce9265 gpiod_to_irq +EXPORT_SYMBOL_GPL vmlinux 0xd1f0a011 usb_kill_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0xd1f2eee2 nf_logger_find_get +EXPORT_SYMBOL_GPL vmlinux 0xd1fda22e nvdimm_attribute_group +EXPORT_SYMBOL_GPL vmlinux 0xd1fec9f1 devres_release +EXPORT_SYMBOL_GPL vmlinux 0xd204e146 gen_pool_get +EXPORT_SYMBOL_GPL vmlinux 0xd20bf6ba dcookie_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd20ceb11 dma_buf_vmap +EXPORT_SYMBOL_GPL vmlinux 0xd217e9e6 trace_set_clr_event +EXPORT_SYMBOL_GPL vmlinux 0xd23da263 tcp_cong_avoid_ai +EXPORT_SYMBOL_GPL vmlinux 0xd25d3002 ata_std_qc_defer +EXPORT_SYMBOL_GPL vmlinux 0xd264443e inet_csk_get_port +EXPORT_SYMBOL_GPL vmlinux 0xd2680407 regmap_update_bits_check +EXPORT_SYMBOL_GPL vmlinux 0xd273b1b1 __round_jiffies_up_relative +EXPORT_SYMBOL_GPL vmlinux 0xd27c7fcb rdev_get_id +EXPORT_SYMBOL_GPL vmlinux 0xd29ea736 adp5520_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xd2aaeb4e kmsg_dump_get_buffer +EXPORT_SYMBOL_GPL vmlinux 0xd2b44776 extcon_dev_register +EXPORT_SYMBOL_GPL vmlinux 0xd2bf0bb8 dm_set_target_max_io_len +EXPORT_SYMBOL_GPL vmlinux 0xd2de7533 unregister_kprobe +EXPORT_SYMBOL_GPL vmlinux 0xd2edf4b7 ata_get_cmd_descript +EXPORT_SYMBOL_GPL vmlinux 0xd2f56cff ata_sff_wait_after_reset +EXPORT_SYMBOL_GPL vmlinux 0xd3005a6b ohci_suspend +EXPORT_SYMBOL_GPL vmlinux 0xd330d318 irq_create_direct_mapping +EXPORT_SYMBOL_GPL vmlinux 0xd33575fa regmap_raw_write +EXPORT_SYMBOL_GPL vmlinux 0xd33ada8b cci_probed +EXPORT_SYMBOL_GPL vmlinux 0xd3436a6a usb_hcd_unlink_urb_from_ep +EXPORT_SYMBOL_GPL vmlinux 0xd359eb89 skb_complete_tx_timestamp +EXPORT_SYMBOL_GPL vmlinux 0xd3bcb2eb ata_sas_async_probe +EXPORT_SYMBOL_GPL vmlinux 0xd3fbfe9a spi_async +EXPORT_SYMBOL_GPL vmlinux 0xd4034828 system_freezable_wq +EXPORT_SYMBOL_GPL vmlinux 0xd41fffab interval_tree_iter_first +EXPORT_SYMBOL_GPL vmlinux 0xd4340b3e rt_mutex_lock_interruptible +EXPORT_SYMBOL_GPL vmlinux 0xd44a5eac kgdb_register_nmi_console +EXPORT_SYMBOL_GPL vmlinux 0xd44c2f38 cci_disable_port_by_cpu +EXPORT_SYMBOL_GPL vmlinux 0xd45808b3 __mtd_next_device +EXPORT_SYMBOL_GPL vmlinux 0xd46e8815 preempt_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0xd4813f24 gpiochip_irqchip_add +EXPORT_SYMBOL_GPL vmlinux 0xd4b70eb4 thermal_zone_of_sensor_register +EXPORT_SYMBOL_GPL vmlinux 0xd4c14632 system_unbound_wq +EXPORT_SYMBOL_GPL vmlinux 0xd4c4d15f devm_regmap_field_alloc +EXPORT_SYMBOL_GPL vmlinux 0xd4d5e3a9 rt_mutex_lock +EXPORT_SYMBOL_GPL vmlinux 0xd5018d18 adp5520_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xd513232b devm_regulator_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0xd523f26d kobject_uevent +EXPORT_SYMBOL_GPL vmlinux 0xd534ae23 snd_device_disconnect +EXPORT_SYMBOL_GPL vmlinux 0xd53a4be7 devres_find +EXPORT_SYMBOL_GPL vmlinux 0xd53da4e3 omap_dm_timers_active +EXPORT_SYMBOL_GPL vmlinux 0xd542dec4 stmpe_disable +EXPORT_SYMBOL_GPL vmlinux 0xd546b525 debugfs_create_symlink +EXPORT_SYMBOL_GPL vmlinux 0xd5563afe ata_dev_next +EXPORT_SYMBOL_GPL vmlinux 0xd55ad93b iommu_group_get_iommudata +EXPORT_SYMBOL_GPL vmlinux 0xd582fb07 regmap_field_update_bits +EXPORT_SYMBOL_GPL vmlinux 0xd5849570 blk_queue_bypass_start +EXPORT_SYMBOL_GPL vmlinux 0xd58582fa of_prop_next_u32 +EXPORT_SYMBOL_GPL vmlinux 0xd5a3c19e __pm_runtime_disable +EXPORT_SYMBOL_GPL vmlinux 0xd5a6a9ed usb_get_phy +EXPORT_SYMBOL_GPL vmlinux 0xd5a8e733 __tracepoint_remove_device_from_group +EXPORT_SYMBOL_GPL vmlinux 0xd5bd7dac ring_buffer_record_enable_cpu +EXPORT_SYMBOL_GPL vmlinux 0xd5cf80d3 __inet_hash_nolisten +EXPORT_SYMBOL_GPL vmlinux 0xd5e2182b crypto_register_instance +EXPORT_SYMBOL_GPL vmlinux 0xd5e8415e of_get_nand_on_flash_bbt +EXPORT_SYMBOL_GPL vmlinux 0xd5eaab8d __crypto_alloc_tfm +EXPORT_SYMBOL_GPL vmlinux 0xd60c99b5 rcu_batches_completed_bh +EXPORT_SYMBOL_GPL vmlinux 0xd61019e8 phy_init +EXPORT_SYMBOL_GPL vmlinux 0xd652a835 do_take_over_console +EXPORT_SYMBOL_GPL vmlinux 0xd67364f7 eventfd_ctx_fdget +EXPORT_SYMBOL_GPL vmlinux 0xd67c71ab tty_ldisc_ref_wait +EXPORT_SYMBOL_GPL vmlinux 0xd6a970e1 bgpio_remove +EXPORT_SYMBOL_GPL vmlinux 0xd6e12f0a sdhci_pci_o2_probe_slot +EXPORT_SYMBOL_GPL vmlinux 0xd6f35dfc usb_hcd_amd_remote_wakeup_quirk +EXPORT_SYMBOL_GPL vmlinux 0xd705b4c7 schedule_hrtimeout +EXPORT_SYMBOL_GPL vmlinux 0xd75c0940 regulator_set_voltage_time +EXPORT_SYMBOL_GPL vmlinux 0xd768e985 regulator_has_full_constraints +EXPORT_SYMBOL_GPL vmlinux 0xd778db49 __tracepoint_suspend_resume +EXPORT_SYMBOL_GPL vmlinux 0xd77c0bc8 klist_remove +EXPORT_SYMBOL_GPL vmlinux 0xd79b3c13 of_irq_to_resource_table +EXPORT_SYMBOL_GPL vmlinux 0xd79d856e cpufreq_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0xd7a284a4 queue_kthread_work +EXPORT_SYMBOL_GPL vmlinux 0xd7a5c274 sdev_evt_send +EXPORT_SYMBOL_GPL vmlinux 0xd7aa4e6f rtc_irq_set_state +EXPORT_SYMBOL_GPL vmlinux 0xd7c33335 omap_pcm_platform_register +EXPORT_SYMBOL_GPL vmlinux 0xd7c6bc1e class_compat_create_link +EXPORT_SYMBOL_GPL vmlinux 0xd7d79132 put_online_cpus +EXPORT_SYMBOL_GPL vmlinux 0xd81643db cpufreq_table_validate_and_show +EXPORT_SYMBOL_GPL vmlinux 0xd81de62c ring_buffer_record_enable +EXPORT_SYMBOL_GPL vmlinux 0xd820c283 eventfd_ctx_remove_wait_queue +EXPORT_SYMBOL_GPL vmlinux 0xd82f2caa tty_ldisc_deref +EXPORT_SYMBOL_GPL vmlinux 0xd8593386 pci_disable_ats +EXPORT_SYMBOL_GPL vmlinux 0xd869b8b8 devm_pwm_put +EXPORT_SYMBOL_GPL vmlinux 0xd8736acb regulator_is_supported_voltage +EXPORT_SYMBOL_GPL vmlinux 0xd87601cc ring_buffer_unlock_commit +EXPORT_SYMBOL_GPL vmlinux 0xd8795bbf regulator_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0xd87fc0a0 usb_amd_prefetch_quirk +EXPORT_SYMBOL_GPL vmlinux 0xd8a3b63d usb_add_hcd +EXPORT_SYMBOL_GPL vmlinux 0xd8b6ae25 blkcg_deactivate_policy +EXPORT_SYMBOL_GPL vmlinux 0xd8df0acb pci_store_saved_state +EXPORT_SYMBOL_GPL vmlinux 0xd8e3c171 devm_phy_destroy +EXPORT_SYMBOL_GPL vmlinux 0xd8e8bbb4 raw_seq_stop +EXPORT_SYMBOL_GPL vmlinux 0xd8f86558 of_get_display_timing +EXPORT_SYMBOL_GPL vmlinux 0xd942d353 ring_buffer_record_off +EXPORT_SYMBOL_GPL vmlinux 0xd9457531 __blocking_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xd94aa457 display_timings_release +EXPORT_SYMBOL_GPL vmlinux 0xd94d373f regulator_bulk_free +EXPORT_SYMBOL_GPL vmlinux 0xd95050a4 pm_generic_restore_noirq +EXPORT_SYMBOL_GPL vmlinux 0xd96babb4 interval_tree_iter_next +EXPORT_SYMBOL_GPL vmlinux 0xd99413c0 phy_pm_runtime_get_sync +EXPORT_SYMBOL_GPL vmlinux 0xd9ae4fcd __gpiod_get +EXPORT_SYMBOL_GPL vmlinux 0xd9c30321 __ip_route_output_key +EXPORT_SYMBOL_GPL vmlinux 0xd9e297c5 led_trigger_remove +EXPORT_SYMBOL_GPL vmlinux 0xd9ecb670 ring_buffer_overruns +EXPORT_SYMBOL_GPL vmlinux 0xda1ede0a crypto_init_ahash_spawn +EXPORT_SYMBOL_GPL vmlinux 0xda37073b __inet_lookup_listener +EXPORT_SYMBOL_GPL vmlinux 0xda3d52d3 simple_attr_release +EXPORT_SYMBOL_GPL vmlinux 0xda5de817 regmap_get_reg_stride +EXPORT_SYMBOL_GPL vmlinux 0xda5edaec omap_dm_timer_request_specific +EXPORT_SYMBOL_GPL vmlinux 0xda762dcc map_vm_area +EXPORT_SYMBOL_GPL vmlinux 0xda8d325a devm_usb_get_phy_by_node +EXPORT_SYMBOL_GPL vmlinux 0xda918ba3 thermal_generate_netlink_event +EXPORT_SYMBOL_GPL vmlinux 0xdaa0d4dd zap_vma_ptes +EXPORT_SYMBOL_GPL vmlinux 0xdab44680 kobj_sysfs_ops +EXPORT_SYMBOL_GPL vmlinux 0xdae715e0 videomode_from_timing +EXPORT_SYMBOL_GPL vmlinux 0xdaed3073 timerqueue_del +EXPORT_SYMBOL_GPL vmlinux 0xdaed5fdc ping_hash +EXPORT_SYMBOL_GPL vmlinux 0xdaf4dfb3 fb_mode_option +EXPORT_SYMBOL_GPL vmlinux 0xdb088cb1 pm_qos_add_request +EXPORT_SYMBOL_GPL vmlinux 0xdb1b9814 spi_register_master +EXPORT_SYMBOL_GPL vmlinux 0xdb77460c dma_get_slave_caps +EXPORT_SYMBOL_GPL vmlinux 0xdb89dd3c disk_map_sector_rcu +EXPORT_SYMBOL_GPL vmlinux 0xdb8a1b3f usermodehelper_read_trylock +EXPORT_SYMBOL_GPL vmlinux 0xdb945146 sysfs_unmerge_group +EXPORT_SYMBOL_GPL vmlinux 0xdbbbc4b4 flush_kthread_work +EXPORT_SYMBOL_GPL vmlinux 0xdbc579c5 fs_kobj +EXPORT_SYMBOL_GPL vmlinux 0xdbddc034 __init_kthread_worker +EXPORT_SYMBOL_GPL vmlinux 0xdbebdd87 dev_pm_disable_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0xdbf7cb70 mpi_get_nbits +EXPORT_SYMBOL_GPL vmlinux 0xdc017c96 relay_buf_full +EXPORT_SYMBOL_GPL vmlinux 0xdc08d5db platform_add_devices +EXPORT_SYMBOL_GPL vmlinux 0xdc133ca2 pm_generic_poweroff +EXPORT_SYMBOL_GPL vmlinux 0xdc145698 bpf_prog_alloc +EXPORT_SYMBOL_GPL vmlinux 0xdc24a093 gpiochip_lock_as_irq +EXPORT_SYMBOL_GPL vmlinux 0xdc461430 irq_set_affinity_hint +EXPORT_SYMBOL_GPL vmlinux 0xdc4cc735 mtd_write_user_prot_reg +EXPORT_SYMBOL_GPL vmlinux 0xdc55ceb8 inet6_csk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0xdc5d9090 fat_getattr +EXPORT_SYMBOL_GPL vmlinux 0xdc825d6c usb_amd_quirk_pll_disable +EXPORT_SYMBOL_GPL vmlinux 0xdc894860 led_trigger_register +EXPORT_SYMBOL_GPL vmlinux 0xdc917b1a sdhci_pltfm_resume +EXPORT_SYMBOL_GPL vmlinux 0xdc934de3 ata_eh_freeze_port +EXPORT_SYMBOL_GPL vmlinux 0xdc940b5b regmap_reinit_cache +EXPORT_SYMBOL_GPL vmlinux 0xdc97af2e syscore_suspend +EXPORT_SYMBOL_GPL vmlinux 0xdc99d18c devm_regulator_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0xdc9d57dd da9052_disable_irq_nosync +EXPORT_SYMBOL_GPL vmlinux 0xdc9fa232 raw_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0xdca438eb crypto_shoot_alg +EXPORT_SYMBOL_GPL vmlinux 0xdcc4407c pm_generic_freeze_noirq +EXPORT_SYMBOL_GPL vmlinux 0xdcf8bd7f tcp_register_congestion_control +EXPORT_SYMBOL_GPL vmlinux 0xdcfbbd4a vchan_init +EXPORT_SYMBOL_GPL vmlinux 0xdd17ffec trace_clock +EXPORT_SYMBOL_GPL vmlinux 0xdd230245 regulator_list_hardware_vsel +EXPORT_SYMBOL_GPL vmlinux 0xdd2efc0f ring_buffer_reset_cpu +EXPORT_SYMBOL_GPL vmlinux 0xdd391eff profile_event_unregister +EXPORT_SYMBOL_GPL vmlinux 0xdd5925b5 class_compat_remove_link +EXPORT_SYMBOL_GPL vmlinux 0xdd9ddff8 __pci_reset_function_locked +EXPORT_SYMBOL_GPL vmlinux 0xdda14d5a sata_scr_write +EXPORT_SYMBOL_GPL vmlinux 0xddaad73d crypto_aead_setauthsize +EXPORT_SYMBOL_GPL vmlinux 0xddb10e32 crypto_ahash_walk_first +EXPORT_SYMBOL_GPL vmlinux 0xddb25156 devm_kmemdup +EXPORT_SYMBOL_GPL vmlinux 0xddbeeecc pci_lock_rescan_remove +EXPORT_SYMBOL_GPL vmlinux 0xddd1d45a pinctrl_select_state +EXPORT_SYMBOL_GPL vmlinux 0xddd58dc0 ring_buffer_reset +EXPORT_SYMBOL_GPL vmlinux 0xddda2ca1 adp5520_read +EXPORT_SYMBOL_GPL vmlinux 0xddee6ce8 device_release_driver +EXPORT_SYMBOL_GPL vmlinux 0xddf0fcfb devm_kmalloc +EXPORT_SYMBOL_GPL vmlinux 0xde089617 usb_autopm_get_interface +EXPORT_SYMBOL_GPL vmlinux 0xde0b3102 regmap_init_mmio_clk +EXPORT_SYMBOL_GPL vmlinux 0xde0c42cc tcp_death_row +EXPORT_SYMBOL_GPL vmlinux 0xde17b2bc wm8350_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xde1b90e3 console_drivers +EXPORT_SYMBOL_GPL vmlinux 0xde2263de usb_driver_claim_interface +EXPORT_SYMBOL_GPL vmlinux 0xde4a593d crypto_mod_put +EXPORT_SYMBOL_GPL vmlinux 0xde5ab837 i2c_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0xde69139e pinconf_generic_dump_config +EXPORT_SYMBOL_GPL vmlinux 0xde6f4f7d ata_ehi_clear_desc +EXPORT_SYMBOL_GPL vmlinux 0xde774967 ata_sff_thaw +EXPORT_SYMBOL_GPL vmlinux 0xde932376 trace_output_call +EXPORT_SYMBOL_GPL vmlinux 0xde94a22d __udp4_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0xde962f96 pm_generic_runtime_resume +EXPORT_SYMBOL_GPL vmlinux 0xded0b142 device_create +EXPORT_SYMBOL_GPL vmlinux 0xdee52fb9 mbox_chan_txdone +EXPORT_SYMBOL_GPL vmlinux 0xdefef4fe dapm_mark_endpoints_dirty +EXPORT_SYMBOL_GPL vmlinux 0xdf0a76e8 arizona_dev_exit +EXPORT_SYMBOL_GPL vmlinux 0xdf0f75c6 eventfd_signal +EXPORT_SYMBOL_GPL vmlinux 0xdf18f51f vma_kernel_pagesize +EXPORT_SYMBOL_GPL vmlinux 0xdf2d096f platform_device_alloc +EXPORT_SYMBOL_GPL vmlinux 0xdf2ee010 sysfs_remove_file_ns +EXPORT_SYMBOL_GPL vmlinux 0xdf47b299 pskb_put +EXPORT_SYMBOL_GPL vmlinux 0xdf597afa ata_pci_bmdma_clear_simplex +EXPORT_SYMBOL_GPL vmlinux 0xdf67092a ahci_ops +EXPORT_SYMBOL_GPL vmlinux 0xdf80b607 shash_attr_alg +EXPORT_SYMBOL_GPL vmlinux 0xdfd91415 regmap_update_bits +EXPORT_SYMBOL_GPL vmlinux 0xdfde359c blkg_prfill_stat +EXPORT_SYMBOL_GPL vmlinux 0xdfe8ad5a ata_scsi_change_queue_depth +EXPORT_SYMBOL_GPL vmlinux 0xdff92fcf irq_map_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0xe007de41 kallsyms_lookup_name +EXPORT_SYMBOL_GPL vmlinux 0xe02eb6d0 ring_buffer_commit_overrun_cpu +EXPORT_SYMBOL_GPL vmlinux 0xe03852fd pin_is_valid +EXPORT_SYMBOL_GPL vmlinux 0xe03958f6 pm_generic_freeze +EXPORT_SYMBOL_GPL vmlinux 0xe05cc6a0 snd_dmaengine_pcm_pointer +EXPORT_SYMBOL_GPL vmlinux 0xe05d4695 raw_seq_next +EXPORT_SYMBOL_GPL vmlinux 0xe0655d52 firmware_kobj +EXPORT_SYMBOL_GPL vmlinux 0xe06e4157 power_supply_notifier +EXPORT_SYMBOL_GPL vmlinux 0xe07ca631 cpu_bit_bitmap +EXPORT_SYMBOL_GPL vmlinux 0xe0b1c103 clk_set_max_rate +EXPORT_SYMBOL_GPL vmlinux 0xe0ce378c __pm_relax +EXPORT_SYMBOL_GPL vmlinux 0xe0cef797 kset_create_and_add +EXPORT_SYMBOL_GPL vmlinux 0xe0e1887b bus_rescan_devices +EXPORT_SYMBOL_GPL vmlinux 0xe101b895 i2c_adapter_type +EXPORT_SYMBOL_GPL vmlinux 0xe12f3475 usb_free_streams +EXPORT_SYMBOL_GPL vmlinux 0xe141cf6a snd_pcm_stream_lock +EXPORT_SYMBOL_GPL vmlinux 0xe144b69c omap_dm_timer_set_prescaler +EXPORT_SYMBOL_GPL vmlinux 0xe16591ab stop_machine +EXPORT_SYMBOL_GPL vmlinux 0xe1775ee7 dm_get_reserved_bio_based_ios +EXPORT_SYMBOL_GPL vmlinux 0xe17d151f regmap_multi_reg_write +EXPORT_SYMBOL_GPL vmlinux 0xe1830214 inet_csk_listen_start +EXPORT_SYMBOL_GPL vmlinux 0xe1848184 ata_host_activate +EXPORT_SYMBOL_GPL vmlinux 0xe19b5326 snd_soc_of_parse_audio_simple_widgets +EXPORT_SYMBOL_GPL vmlinux 0xe1abf7b5 tpm2_startup +EXPORT_SYMBOL_GPL vmlinux 0xe1c06ba3 fsstack_copy_attr_all +EXPORT_SYMBOL_GPL vmlinux 0xe1c5b224 pinctrl_utils_dt_free_map +EXPORT_SYMBOL_GPL vmlinux 0xe1c890dd tcp_peer_is_proven +EXPORT_SYMBOL_GPL vmlinux 0xe1eeaff2 nvdimm_provider_data +EXPORT_SYMBOL_GPL vmlinux 0xe1f9f9b5 crypto_find_alg +EXPORT_SYMBOL_GPL vmlinux 0xe21442ef __inet_inherit_port +EXPORT_SYMBOL_GPL vmlinux 0xe222dd2f skb_zerocopy_headlen +EXPORT_SYMBOL_GPL vmlinux 0xe2355228 sdhci_set_clock +EXPORT_SYMBOL_GPL vmlinux 0xe2540fb4 perf_tp_event +EXPORT_SYMBOL_GPL vmlinux 0xe28a1d1a sdhci_pci_spt_drive_strength +EXPORT_SYMBOL_GPL vmlinux 0xe29695c7 xfrm_audit_state_notfound +EXPORT_SYMBOL_GPL vmlinux 0xe2ae4d0f ata_dummy_port_info +EXPORT_SYMBOL_GPL vmlinux 0xe2df61e5 snd_device_initialize +EXPORT_SYMBOL_GPL vmlinux 0xe2fa6c2e omap_dm_timer_set_source +EXPORT_SYMBOL_GPL vmlinux 0xe2ff14e0 pci_generic_config_write +EXPORT_SYMBOL_GPL vmlinux 0xe3043ff9 request_any_context_irq +EXPORT_SYMBOL_GPL vmlinux 0xe3047482 snd_soc_add_codec_controls +EXPORT_SYMBOL_GPL vmlinux 0xe3131202 register_mtd_parser +EXPORT_SYMBOL_GPL vmlinux 0xe3195893 pci_user_read_config_word +EXPORT_SYMBOL_GPL vmlinux 0xe34fb638 usb_gen_phy_init +EXPORT_SYMBOL_GPL vmlinux 0xe3627bff fuse_request_send_background +EXPORT_SYMBOL_GPL vmlinux 0xe37c1970 of_fixed_clk_setup +EXPORT_SYMBOL_GPL vmlinux 0xe384a102 usb_speed_string +EXPORT_SYMBOL_GPL vmlinux 0xe3882873 dev_attr_em_message_type +EXPORT_SYMBOL_GPL vmlinux 0xe3897ec7 devfreq_event_reset_event +EXPORT_SYMBOL_GPL vmlinux 0xe3b083eb blk_mq_tags_cpumask +EXPORT_SYMBOL_GPL vmlinux 0xe3dcd55e usb_phy_generic_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe3f85425 ata_host_register +EXPORT_SYMBOL_GPL vmlinux 0xe42e1f70 klist_iter_init_node +EXPORT_SYMBOL_GPL vmlinux 0xe4309905 syscore_resume +EXPORT_SYMBOL_GPL vmlinux 0xe4321ae3 md_find_rdev_nr_rcu +EXPORT_SYMBOL_GPL vmlinux 0xe4565108 usb_deregister_dev +EXPORT_SYMBOL_GPL vmlinux 0xe4689576 ktime_get_with_offset +EXPORT_SYMBOL_GPL vmlinux 0xe47b0774 mtd_is_locked +EXPORT_SYMBOL_GPL vmlinux 0xe482c3e1 fuse_file_poll +EXPORT_SYMBOL_GPL vmlinux 0xe4971ade tracing_alloc_snapshot +EXPORT_SYMBOL_GPL vmlinux 0xe4a318ba fwnode_get_named_gpiod +EXPORT_SYMBOL_GPL vmlinux 0xe4b03191 tps6586x_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0xe4c19a0f regulator_map_voltage_ascend +EXPORT_SYMBOL_GPL vmlinux 0xe4c22565 cpdma_chan_destroy +EXPORT_SYMBOL_GPL vmlinux 0xe4c2cb24 __mmu_notifier_invalidate_range_end +EXPORT_SYMBOL_GPL vmlinux 0xe4ca4d2b cpsw_ale_stop +EXPORT_SYMBOL_GPL vmlinux 0xe4e31228 ahci_reset_controller +EXPORT_SYMBOL_GPL vmlinux 0xe4f4efad clockevents_unbind_device +EXPORT_SYMBOL_GPL vmlinux 0xe50613d6 clockevent_delta2ns +EXPORT_SYMBOL_GPL vmlinux 0xe506f1cf sysfs_create_bin_file +EXPORT_SYMBOL_GPL vmlinux 0xe5071dcc extcon_set_cable_state +EXPORT_SYMBOL_GPL vmlinux 0xe5197bad cpsw_ale_destroy +EXPORT_SYMBOL_GPL vmlinux 0xe51a6fc6 splice_to_pipe +EXPORT_SYMBOL_GPL vmlinux 0xe51fb0c0 __mnt_is_readonly +EXPORT_SYMBOL_GPL vmlinux 0xe52cab9f snd_soc_jack_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0xe537dfbc crypto_drop_spawn +EXPORT_SYMBOL_GPL vmlinux 0xe54aa6e5 sync_page_io +EXPORT_SYMBOL_GPL vmlinux 0xe54cf90e subsys_system_register +EXPORT_SYMBOL_GPL vmlinux 0xe5639ffe kvm_put_kvm +EXPORT_SYMBOL_GPL vmlinux 0xe56d46e8 __blk_put_request +EXPORT_SYMBOL_GPL vmlinux 0xe5767970 power_supply_changed +EXPORT_SYMBOL_GPL vmlinux 0xe57bc6e8 regmap_exit +EXPORT_SYMBOL_GPL vmlinux 0xe5883bd9 class_compat_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe58fb452 aer_irq +EXPORT_SYMBOL_GPL vmlinux 0xe5aefbb1 usb_driver_release_interface +EXPORT_SYMBOL_GPL vmlinux 0xe5b8fd7c gpiod_set_debounce +EXPORT_SYMBOL_GPL vmlinux 0xe5e3c841 gov_queue_work +EXPORT_SYMBOL_GPL vmlinux 0xe5ed8c53 snd_soc_add_platform +EXPORT_SYMBOL_GPL vmlinux 0xe60ff83e kvm_gfn_to_hva_cache_init +EXPORT_SYMBOL_GPL vmlinux 0xe629696e sdev_evt_send_simple +EXPORT_SYMBOL_GPL vmlinux 0xe63367cf nf_queue_entry_release_refs +EXPORT_SYMBOL_GPL vmlinux 0xe63c2e63 __irq_domain_add +EXPORT_SYMBOL_GPL vmlinux 0xe64b189f debugfs_remove_recursive +EXPORT_SYMBOL_GPL vmlinux 0xe651f76e selinux_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0xe66b5945 clk_register_mux +EXPORT_SYMBOL_GPL vmlinux 0xe67c3f4e devm_regulator_register +EXPORT_SYMBOL_GPL vmlinux 0xe69841f1 devm_rtc_device_register +EXPORT_SYMBOL_GPL vmlinux 0xe6b3c0b7 max8997_read_reg +EXPORT_SYMBOL_GPL vmlinux 0xe6b9e00c request_firmware_direct +EXPORT_SYMBOL_GPL vmlinux 0xe6c511b3 posix_acl_access_xattr_handler +EXPORT_SYMBOL_GPL vmlinux 0xe6c68334 ddebug_remove_module +EXPORT_SYMBOL_GPL vmlinux 0xe6cf6905 xhci_resume +EXPORT_SYMBOL_GPL vmlinux 0xe6dea9e8 device_move +EXPORT_SYMBOL_GPL vmlinux 0xe6e1c5fe uuid_be_gen +EXPORT_SYMBOL_GPL vmlinux 0xe6ef4abf dm_internal_resume_fast +EXPORT_SYMBOL_GPL vmlinux 0xe6fb9b92 virtio_device_freeze +EXPORT_SYMBOL_GPL vmlinux 0xe6ff7c60 __clk_round_rate +EXPORT_SYMBOL_GPL vmlinux 0xe70ae404 tcp_fetch_timewait_stamp +EXPORT_SYMBOL_GPL vmlinux 0xe7247edf devm_snd_soc_register_platform +EXPORT_SYMBOL_GPL vmlinux 0xe73d0c31 xhci_dbg_trace +EXPORT_SYMBOL_GPL vmlinux 0xe7465786 kobject_init_and_add +EXPORT_SYMBOL_GPL vmlinux 0xe7543ff4 crypto_register_shashes +EXPORT_SYMBOL_GPL vmlinux 0xe76729d0 sm501_unit_power +EXPORT_SYMBOL_GPL vmlinux 0xe769232e sprint_symbol_no_offset +EXPORT_SYMBOL_GPL vmlinux 0xe79d5d65 usb_hcd_map_urb_for_dma +EXPORT_SYMBOL_GPL vmlinux 0xe7a8e28c of_dma_simple_xlate +EXPORT_SYMBOL_GPL vmlinux 0xe7a9981d snd_soc_lookup_platform +EXPORT_SYMBOL_GPL vmlinux 0xe7cb82ea divider_round_rate +EXPORT_SYMBOL_GPL vmlinux 0xe7ffe877 pcpu_base_addr +EXPORT_SYMBOL_GPL vmlinux 0xe8061886 blkdev_ioctl +EXPORT_SYMBOL_GPL vmlinux 0xe80faafe devm_hwrng_register +EXPORT_SYMBOL_GPL vmlinux 0xe8138dd5 __of_genpd_xlate_onecell +EXPORT_SYMBOL_GPL vmlinux 0xe818b32b ata_bmdma_interrupt +EXPORT_SYMBOL_GPL vmlinux 0xe81bedc5 blkg_lookup +EXPORT_SYMBOL_GPL vmlinux 0xe8330246 __clk_get_hw +EXPORT_SYMBOL_GPL vmlinux 0xe83dd0a8 ata_std_sched_eh +EXPORT_SYMBOL_GPL vmlinux 0xe84f6e5c pciserial_remove_ports +EXPORT_SYMBOL_GPL vmlinux 0xe8551376 dev_pm_opp_free_cpufreq_table +EXPORT_SYMBOL_GPL vmlinux 0xe85a9fd3 cpu_cluster_pm_exit +EXPORT_SYMBOL_GPL vmlinux 0xe85f7b50 pinctrl_pm_select_idle_state +EXPORT_SYMBOL_GPL vmlinux 0xe862c4b7 dpm_suspend_start +EXPORT_SYMBOL_GPL vmlinux 0xe864d972 snd_soc_dapm_put_enum_double +EXPORT_SYMBOL_GPL vmlinux 0xe8673eef xattr_getsecurity +EXPORT_SYMBOL_GPL vmlinux 0xe86d1251 regmap_async_complete_cb +EXPORT_SYMBOL_GPL vmlinux 0xe88b3371 dev_change_net_namespace +EXPORT_SYMBOL_GPL vmlinux 0xe8c4e42b snd_soc_codec_set_sysclk +EXPORT_SYMBOL_GPL vmlinux 0xe8cbd403 nd_device_attribute_group +EXPORT_SYMBOL_GPL vmlinux 0xe8cf02de usb_reset_device +EXPORT_SYMBOL_GPL vmlinux 0xe8f688d3 device_store_bool +EXPORT_SYMBOL_GPL vmlinux 0xe8f6cb66 spi_busnum_to_master +EXPORT_SYMBOL_GPL vmlinux 0xe901053a class_interface_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe9107594 dapm_clock_event +EXPORT_SYMBOL_GPL vmlinux 0xe9185385 tcp_twsk_unique +EXPORT_SYMBOL_GPL vmlinux 0xe934b7b9 netlink_add_tap +EXPORT_SYMBOL_GPL vmlinux 0xe9357a85 snd_soc_dapm_kcontrol_dapm +EXPORT_SYMBOL_GPL vmlinux 0xe93e49c3 devres_free +EXPORT_SYMBOL_GPL vmlinux 0xe956a75c pl320_ipc_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0xe963652a ahci_start_engine +EXPORT_SYMBOL_GPL vmlinux 0xe97384a7 dev_attr_link_power_management_policy +EXPORT_SYMBOL_GPL vmlinux 0xe989d4d6 component_unbind_all +EXPORT_SYMBOL_GPL vmlinux 0xe9919816 regulator_set_voltage_sel_regmap +EXPORT_SYMBOL_GPL vmlinux 0xe997a768 btree_grim_visitor +EXPORT_SYMBOL_GPL vmlinux 0xe9bf7bde pm_runtime_autosuspend_expiration +EXPORT_SYMBOL_GPL vmlinux 0xe9c01045 pci_walk_bus +EXPORT_SYMBOL_GPL vmlinux 0xe9c3e3c0 ata_host_alloc +EXPORT_SYMBOL_GPL vmlinux 0xe9cd5bec crypto_lookup_skcipher +EXPORT_SYMBOL_GPL vmlinux 0xe9d1b7cf irq_to_pcap +EXPORT_SYMBOL_GPL vmlinux 0xea124bd1 gcd +EXPORT_SYMBOL_GPL vmlinux 0xea1bb291 bL_switcher_get_enabled +EXPORT_SYMBOL_GPL vmlinux 0xea418e0f atapi_cmd_type +EXPORT_SYMBOL_GPL vmlinux 0xea43355b gen_pool_avail +EXPORT_SYMBOL_GPL vmlinux 0xea50dad3 ahci_ignore_sss +EXPORT_SYMBOL_GPL vmlinux 0xea541d1d mmc_regulator_set_ocr +EXPORT_SYMBOL_GPL vmlinux 0xea570540 __dma_request_channel +EXPORT_SYMBOL_GPL vmlinux 0xea58a14e irq_set_chained_handler_and_data +EXPORT_SYMBOL_GPL vmlinux 0xea8ab5a8 debugfs_create_dir +EXPORT_SYMBOL_GPL vmlinux 0xea8fa3a6 ata_dev_disable +EXPORT_SYMBOL_GPL vmlinux 0xeaaa2e29 mtd_read_user_prot_reg +EXPORT_SYMBOL_GPL vmlinux 0xeaba05f5 regmap_attach_dev +EXPORT_SYMBOL_GPL vmlinux 0xeabc6b9d snd_soc_dapm_sync +EXPORT_SYMBOL_GPL vmlinux 0xead5696e class_for_each_device +EXPORT_SYMBOL_GPL vmlinux 0xeaf1e9f1 hrtimer_cancel +EXPORT_SYMBOL_GPL vmlinux 0xeaf7d048 usb_get_dev +EXPORT_SYMBOL_GPL vmlinux 0xeb60d844 __tracepoint_cpu_idle +EXPORT_SYMBOL_GPL vmlinux 0xeb6868b8 __sock_recv_ts_and_drops +EXPORT_SYMBOL_GPL vmlinux 0xeb711ae7 snd_soc_params_to_bclk +EXPORT_SYMBOL_GPL vmlinux 0xeb85f9ab gpiod_is_active_low +EXPORT_SYMBOL_GPL vmlinux 0xeb9abbee ata_sff_queue_work +EXPORT_SYMBOL_GPL vmlinux 0xebccb588 bdev_direct_access +EXPORT_SYMBOL_GPL vmlinux 0xebec57c4 ring_buffer_oldest_event_ts +EXPORT_SYMBOL_GPL vmlinux 0xebf9b6c8 sdio_get_host_pm_caps +EXPORT_SYMBOL_GPL vmlinux 0xec1b043e regulator_suspend_prepare +EXPORT_SYMBOL_GPL vmlinux 0xec25f967 klist_del +EXPORT_SYMBOL_GPL vmlinux 0xec3325e2 __clk_get_num_parents +EXPORT_SYMBOL_GPL vmlinux 0xec41327c fsstack_copy_inode_size +EXPORT_SYMBOL_GPL vmlinux 0xec4dff7f vfs_fallocate +EXPORT_SYMBOL_GPL vmlinux 0xec56925f power_supply_am_i_supplied +EXPORT_SYMBOL_GPL vmlinux 0xec6a8d9b driver_attach +EXPORT_SYMBOL_GPL vmlinux 0xec831a11 dev_pm_qos_add_request +EXPORT_SYMBOL_GPL vmlinux 0xeca05f9f of_address_to_resource +EXPORT_SYMBOL_GPL vmlinux 0xecc2c35b device_wakeup_enable +EXPORT_SYMBOL_GPL vmlinux 0xecdbe926 bitmap_load +EXPORT_SYMBOL_GPL vmlinux 0xecfd8761 usb_unpoison_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0xed0080db kvm_io_bus_write +EXPORT_SYMBOL_GPL vmlinux 0xed01c034 napi_hash_add +EXPORT_SYMBOL_GPL vmlinux 0xed116faa sdio_align_size +EXPORT_SYMBOL_GPL vmlinux 0xed5ce50e input_ff_event +EXPORT_SYMBOL_GPL vmlinux 0xed7c852c pci_try_reset_bus +EXPORT_SYMBOL_GPL vmlinux 0xedaa59fb regmap_read +EXPORT_SYMBOL_GPL vmlinux 0xedb437cb pci_pasid_features +EXPORT_SYMBOL_GPL vmlinux 0xeddb342e devm_regulator_bulk_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0xedf7570b led_classdev_suspend +EXPORT_SYMBOL_GPL vmlinux 0xee0c01fc mpc8xxx_spi_rx_buf_u32 +EXPORT_SYMBOL_GPL vmlinux 0xee291b64 scsi_target_unblock +EXPORT_SYMBOL_GPL vmlinux 0xee542217 omap_dm_timer_disable +EXPORT_SYMBOL_GPL vmlinux 0xee5cb0ec ata_cable_ignore +EXPORT_SYMBOL_GPL vmlinux 0xee6b71c4 syscon_regmap_lookup_by_compatible +EXPORT_SYMBOL_GPL vmlinux 0xee7fe468 snd_soc_jack_add_zones +EXPORT_SYMBOL_GPL vmlinux 0xee81cd01 regulator_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0xee8ae2bd snd_soc_card_get_kcontrol +EXPORT_SYMBOL_GPL vmlinux 0xee8d7539 cpdma_chan_start +EXPORT_SYMBOL_GPL vmlinux 0xee972539 sata_pmp_port_ops +EXPORT_SYMBOL_GPL vmlinux 0xeea88705 of_dma_request_slave_channel +EXPORT_SYMBOL_GPL vmlinux 0xeeae5a5d swiotlb_unmap_page +EXPORT_SYMBOL_GPL vmlinux 0xeeb7bec7 platform_device_add_resources +EXPORT_SYMBOL_GPL vmlinux 0xeebea172 debugfs_create_u16 +EXPORT_SYMBOL_GPL vmlinux 0xeec31177 debugfs_create_x32 +EXPORT_SYMBOL_GPL vmlinux 0xeec81ac3 power_supply_unregister +EXPORT_SYMBOL_GPL vmlinux 0xeed7b7d4 omap_dm_timer_read_status +EXPORT_SYMBOL_GPL vmlinux 0xeeee6693 uprobe_unregister +EXPORT_SYMBOL_GPL vmlinux 0xef06aca2 bd_link_disk_holder +EXPORT_SYMBOL_GPL vmlinux 0xef1ab7c0 look_up_OID +EXPORT_SYMBOL_GPL vmlinux 0xef3c6c2f snd_pcm_lib_default_mmap +EXPORT_SYMBOL_GPL vmlinux 0xef3d0e7d alarm_restart +EXPORT_SYMBOL_GPL vmlinux 0xef409b74 kmsg_dump_get_line +EXPORT_SYMBOL_GPL vmlinux 0xef464c28 getboottime64 +EXPORT_SYMBOL_GPL vmlinux 0xef478e41 kvm_debugfs_dir +EXPORT_SYMBOL_GPL vmlinux 0xef484d51 snd_soc_dapm_ignore_suspend +EXPORT_SYMBOL_GPL vmlinux 0xef4983d4 amba_device_add +EXPORT_SYMBOL_GPL vmlinux 0xef66075c usb_wait_anchor_empty_timeout +EXPORT_SYMBOL_GPL vmlinux 0xef6c3f70 round_jiffies_up_relative +EXPORT_SYMBOL_GPL vmlinux 0xef72c066 subsys_find_device_by_id +EXPORT_SYMBOL_GPL vmlinux 0xef8c7850 pcap_adc_async +EXPORT_SYMBOL_GPL vmlinux 0xefa2c27d register_tracepoint_module_notifier +EXPORT_SYMBOL_GPL vmlinux 0xefcc2c55 debugfs_create_x8 +EXPORT_SYMBOL_GPL vmlinux 0xefedcb6b snd_soc_suspend +EXPORT_SYMBOL_GPL vmlinux 0xf009d142 bio_trim +EXPORT_SYMBOL_GPL vmlinux 0xf03c072f __ftrace_vbprintk +EXPORT_SYMBOL_GPL vmlinux 0xf066a08d arizona_set_irq_wake +EXPORT_SYMBOL_GPL vmlinux 0xf0727f12 ktime_get_raw_fast_ns +EXPORT_SYMBOL_GPL vmlinux 0xf07b87f9 phy_optional_get +EXPORT_SYMBOL_GPL vmlinux 0xf07d8dfd regmap_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0xf09859d0 __gpiod_get_index_optional +EXPORT_SYMBOL_GPL vmlinux 0xf0a1c146 devm_mdiobus_alloc_size +EXPORT_SYMBOL_GPL vmlinux 0xf0b4f823 devm_free_pages +EXPORT_SYMBOL_GPL vmlinux 0xf0c9c975 usb_root_hub_lost_power +EXPORT_SYMBOL_GPL vmlinux 0xf0e209b9 uprobe_register +EXPORT_SYMBOL_GPL vmlinux 0xf0e81b60 class_destroy +EXPORT_SYMBOL_GPL vmlinux 0xf0f5dbc2 timerqueue_iterate_next +EXPORT_SYMBOL_GPL vmlinux 0xf0f5e0c0 posix_clock_unregister +EXPORT_SYMBOL_GPL vmlinux 0xf0f76b07 ata_bmdma_stop +EXPORT_SYMBOL_GPL vmlinux 0xf0fc6307 usb_hcd_link_urb_to_ep +EXPORT_SYMBOL_GPL vmlinux 0xf11d76a5 inet6_csk_bind_conflict +EXPORT_SYMBOL_GPL vmlinux 0xf126696d device_get_next_child_node +EXPORT_SYMBOL_GPL vmlinux 0xf12caf22 clk_register_divider_table +EXPORT_SYMBOL_GPL vmlinux 0xf12cfddc crypto_unregister_rngs +EXPORT_SYMBOL_GPL vmlinux 0xf15393a2 wait_on_page_bit_killable_timeout +EXPORT_SYMBOL_GPL vmlinux 0xf17df6a2 irq_gc_mask_set_bit +EXPORT_SYMBOL_GPL vmlinux 0xf184d189 kernel_power_off +EXPORT_SYMBOL_GPL vmlinux 0xf18b8dbc blk_rq_prep_clone +EXPORT_SYMBOL_GPL vmlinux 0xf18dcddc da9052_adc_read_temp +EXPORT_SYMBOL_GPL vmlinux 0xf19e53c9 tty_buffer_request_room +EXPORT_SYMBOL_GPL vmlinux 0xf1b31314 delayacct_on +EXPORT_SYMBOL_GPL vmlinux 0xf1e41461 i2c_slave_unregister +EXPORT_SYMBOL_GPL vmlinux 0xf1f16c9e unregister_jprobes +EXPORT_SYMBOL_GPL vmlinux 0xf206d40a blk_trace_remove +EXPORT_SYMBOL_GPL vmlinux 0xf21d823d usb_find_interface +EXPORT_SYMBOL_GPL vmlinux 0xf21e1f9b disable_percpu_irq +EXPORT_SYMBOL_GPL vmlinux 0xf22be89f regcache_mark_dirty +EXPORT_SYMBOL_GPL vmlinux 0xf2471716 kvm_read_guest_cached +EXPORT_SYMBOL_GPL vmlinux 0xf2523b4a snd_soc_debugfs_root +EXPORT_SYMBOL_GPL vmlinux 0xf25dfd38 thermal_of_cooling_device_register +EXPORT_SYMBOL_GPL vmlinux 0xf27977e2 async_synchronize_cookie_domain +EXPORT_SYMBOL_GPL vmlinux 0xf282b9be devm_regmap_init +EXPORT_SYMBOL_GPL vmlinux 0xf28a4c43 __tracepoint_io_page_fault +EXPORT_SYMBOL_GPL vmlinux 0xf28f0043 __list_lru_init +EXPORT_SYMBOL_GPL vmlinux 0xf29068cb max8997_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0xf299fb8b snd_soc_jack_add_gpios +EXPORT_SYMBOL_GPL vmlinux 0xf2d83a82 shash_ahash_update +EXPORT_SYMBOL_GPL vmlinux 0xf2de6413 snd_pcm_stream_unlock +EXPORT_SYMBOL_GPL vmlinux 0xf2ed48f0 sysfs_remove_link_from_group +EXPORT_SYMBOL_GPL vmlinux 0xf2f077cc pkey_id_type_name +EXPORT_SYMBOL_GPL vmlinux 0xf2fca922 uart_parse_options +EXPORT_SYMBOL_GPL vmlinux 0xf30e105d ezx_pcap_write +EXPORT_SYMBOL_GPL vmlinux 0xf30fda27 lzo1x_decompress_safe +EXPORT_SYMBOL_GPL vmlinux 0xf31b3fd1 workqueue_set_max_active +EXPORT_SYMBOL_GPL vmlinux 0xf32990fa devfreq_event_enable_edev +EXPORT_SYMBOL_GPL vmlinux 0xf331236f btree_geo32 +EXPORT_SYMBOL_GPL vmlinux 0xf34a350c regmap_field_free +EXPORT_SYMBOL_GPL vmlinux 0xf366641b uart_handle_dcd_change +EXPORT_SYMBOL_GPL vmlinux 0xf3808cb1 get_state_synchronize_rcu +EXPORT_SYMBOL_GPL vmlinux 0xf3894af5 vfs_setxattr +EXPORT_SYMBOL_GPL vmlinux 0xf398dd9b pinctrl_add_gpio_range +EXPORT_SYMBOL_GPL vmlinux 0xf3a33547 aead_geniv_free +EXPORT_SYMBOL_GPL vmlinux 0xf3b451ca kdb_poll_funcs +EXPORT_SYMBOL_GPL vmlinux 0xf3bcc9ea dm_internal_suspend_fast +EXPORT_SYMBOL_GPL vmlinux 0xf3c3d665 tty_standard_install +EXPORT_SYMBOL_GPL vmlinux 0xf3cc5370 cpuidle_register_driver +EXPORT_SYMBOL_GPL vmlinux 0xf3d22955 snd_soc_register_codec +EXPORT_SYMBOL_GPL vmlinux 0xf3e1b656 wait_for_tpm_stat +EXPORT_SYMBOL_GPL vmlinux 0xf3f18238 ktime_get_resolution_ns +EXPORT_SYMBOL_GPL vmlinux 0xf404c54d snd_dmaengine_pcm_get_chan +EXPORT_SYMBOL_GPL vmlinux 0xf4188e34 snd_soc_get_volsw_sx +EXPORT_SYMBOL_GPL vmlinux 0xf429805d vchan_find_desc +EXPORT_SYMBOL_GPL vmlinux 0xf42f551c crypto_unregister_rng +EXPORT_SYMBOL_GPL vmlinux 0xf433d99c cpu_subsys +EXPORT_SYMBOL_GPL vmlinux 0xf446e7fa irq_get_irq_data +EXPORT_SYMBOL_GPL vmlinux 0xf4576246 palmas_ext_control_req_config +EXPORT_SYMBOL_GPL vmlinux 0xf467ec23 usb_anchor_suspend_wakeups +EXPORT_SYMBOL_GPL vmlinux 0xf47ebd7c wm831x_reg_read +EXPORT_SYMBOL_GPL vmlinux 0xf494f618 mmc_regulator_get_ocrmask +EXPORT_SYMBOL_GPL vmlinux 0xf499fdb2 rcu_barrier_bh +EXPORT_SYMBOL_GPL vmlinux 0xf4a00f6c gpiochip_free_own_desc +EXPORT_SYMBOL_GPL vmlinux 0xf4a59a38 mpc8xxx_spi_rx_buf_u16 +EXPORT_SYMBOL_GPL vmlinux 0xf4aa00b0 mbox_request_channel_byname +EXPORT_SYMBOL_GPL vmlinux 0xf4d24316 snd_soc_of_get_dai_name +EXPORT_SYMBOL_GPL vmlinux 0xf4dedb06 nvdimm_create +EXPORT_SYMBOL_GPL vmlinux 0xf4eed660 pci_scan_child_bus +EXPORT_SYMBOL_GPL vmlinux 0xf4fc2d6c __ring_buffer_alloc +EXPORT_SYMBOL_GPL vmlinux 0xf4fdcd2b register_asymmetric_key_parser +EXPORT_SYMBOL_GPL vmlinux 0xf512fff4 platform_device_register_full +EXPORT_SYMBOL_GPL vmlinux 0xf53d0516 dev_pm_get_subsys_data +EXPORT_SYMBOL_GPL vmlinux 0xf54bd49b lcm +EXPORT_SYMBOL_GPL vmlinux 0xf553318d cpuidle_pause_and_lock +EXPORT_SYMBOL_GPL vmlinux 0xf57a8440 __of_phy_provider_register +EXPORT_SYMBOL_GPL vmlinux 0xf5a691cd invalidate_bh_lrus +EXPORT_SYMBOL_GPL vmlinux 0xf5b89c68 mtd_writev +EXPORT_SYMBOL_GPL vmlinux 0xf5c325a7 sata_scr_write_flush +EXPORT_SYMBOL_GPL vmlinux 0xf5c9390e smpboot_register_percpu_thread +EXPORT_SYMBOL_GPL vmlinux 0xf5dbae93 device_create_with_groups +EXPORT_SYMBOL_GPL vmlinux 0xf60b9727 snd_soc_add_component_controls +EXPORT_SYMBOL_GPL vmlinux 0xf616f921 pm_generic_resume +EXPORT_SYMBOL_GPL vmlinux 0xf619412e crypto_alloc_base +EXPORT_SYMBOL_GPL vmlinux 0xf668df42 sock_diag_save_cookie +EXPORT_SYMBOL_GPL vmlinux 0xf6bb1161 __tracepoint_attach_device_to_domain +EXPORT_SYMBOL_GPL vmlinux 0xf6bcae61 pm_generic_resume_early +EXPORT_SYMBOL_GPL vmlinux 0xf6c8dc62 cpu_hotplug_enable +EXPORT_SYMBOL_GPL vmlinux 0xf6e2da92 tpm2_do_selftest +EXPORT_SYMBOL_GPL vmlinux 0xf6e874f5 ata_timing_merge +EXPORT_SYMBOL_GPL vmlinux 0xf6efdc3a fat_sync_inode +EXPORT_SYMBOL_GPL vmlinux 0xf73145b3 blkg_lookup_create +EXPORT_SYMBOL_GPL vmlinux 0xf7470145 __pci_complete_power_transition +EXPORT_SYMBOL_GPL vmlinux 0xf748a8ef dm_get_rq_mapinfo +EXPORT_SYMBOL_GPL vmlinux 0xf7606131 iptunnel_pull_header +EXPORT_SYMBOL_GPL vmlinux 0xf76848bb platform_device_del +EXPORT_SYMBOL_GPL vmlinux 0xf76b0a59 read_current_timer +EXPORT_SYMBOL_GPL vmlinux 0xf76b65dd iommu_map +EXPORT_SYMBOL_GPL vmlinux 0xf76bd564 usb_alloc_streams +EXPORT_SYMBOL_GPL vmlinux 0xf7945124 snd_soc_cnew +EXPORT_SYMBOL_GPL vmlinux 0xf7b65d32 platform_device_register +EXPORT_SYMBOL_GPL vmlinux 0xf7c1e955 mmu_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0xf819fe46 inode_sb_list_add +EXPORT_SYMBOL_GPL vmlinux 0xf82f16b3 execute_in_process_context +EXPORT_SYMBOL_GPL vmlinux 0xf82f3657 work_on_cpu +EXPORT_SYMBOL_GPL vmlinux 0xf846506f irq_set_affinity_notifier +EXPORT_SYMBOL_GPL vmlinux 0xf847e9ac crypto_shash_update +EXPORT_SYMBOL_GPL vmlinux 0xf8531e1a dev_pm_domain_attach +EXPORT_SYMBOL_GPL vmlinux 0xf861dd9e snd_hwparams_to_dma_slave_config +EXPORT_SYMBOL_GPL vmlinux 0xf8767239 sysfs_remove_bin_file +EXPORT_SYMBOL_GPL vmlinux 0xf8802492 print_stack_trace +EXPORT_SYMBOL_GPL vmlinux 0xf888039a i2c_probe_func_quick_read +EXPORT_SYMBOL_GPL vmlinux 0xf8882218 tps6586x_writes +EXPORT_SYMBOL_GPL vmlinux 0xf889a4c6 gpiod_export +EXPORT_SYMBOL_GPL vmlinux 0xf89459f9 blkcg_policy_unregister +EXPORT_SYMBOL_GPL vmlinux 0xf895f1ae md_new_event +EXPORT_SYMBOL_GPL vmlinux 0xf8a1be74 unregister_mtd_user +EXPORT_SYMBOL_GPL vmlinux 0xf8c6b235 crypto_enqueue_request +EXPORT_SYMBOL_GPL vmlinux 0xf8d56a7e transport_setup_device +EXPORT_SYMBOL_GPL vmlinux 0xf8e58dad irq_gc_ack_set_bit +EXPORT_SYMBOL_GPL vmlinux 0xf8e6b564 hibernation_set_ops +EXPORT_SYMBOL_GPL vmlinux 0xf8f3a0fb ata_ratelimit +EXPORT_SYMBOL_GPL vmlinux 0xf8f4d046 __get_user_pages_fast +EXPORT_SYMBOL_GPL vmlinux 0xf8fe3d0b kmsg_dump_register +EXPORT_SYMBOL_GPL vmlinux 0xf9171513 ata_scsi_simulate +EXPORT_SYMBOL_GPL vmlinux 0xf9202b2a extcon_dev_free +EXPORT_SYMBOL_GPL vmlinux 0xf92732b3 inet_csk_clone_lock +EXPORT_SYMBOL_GPL vmlinux 0xf92ce956 kdb_printf +EXPORT_SYMBOL_GPL vmlinux 0xf932015f __raw_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xf95322f4 kthread_parkme +EXPORT_SYMBOL_GPL vmlinux 0xf9547a17 divider_recalc_rate +EXPORT_SYMBOL_GPL vmlinux 0xf9827453 crypto_alloc_rng +EXPORT_SYMBOL_GPL vmlinux 0xf984362d usb_gadget_map_request +EXPORT_SYMBOL_GPL vmlinux 0xf991c09f rcu_qs_ctr +EXPORT_SYMBOL_GPL vmlinux 0xf9a054b5 __round_jiffies +EXPORT_SYMBOL_GPL vmlinux 0xf9b263ce usb_free_coherent +EXPORT_SYMBOL_GPL vmlinux 0xf9b4578d usb_bulk_msg +EXPORT_SYMBOL_GPL vmlinux 0xf9b4a663 sysfs_notify +EXPORT_SYMBOL_GPL vmlinux 0xf9b6936f dev_pm_domain_detach +EXPORT_SYMBOL_GPL vmlinux 0xf9c2da57 clkdev_create +EXPORT_SYMBOL_GPL vmlinux 0xf9ca3160 ata_id_xfermask +EXPORT_SYMBOL_GPL vmlinux 0xf9d2220e pinctrl_pm_select_sleep_state +EXPORT_SYMBOL_GPL vmlinux 0xf9d6db1f pwm_get +EXPORT_SYMBOL_GPL vmlinux 0xf9d8de67 tcp_set_state +EXPORT_SYMBOL_GPL vmlinux 0xf9fe2eff exportfs_decode_fh +EXPORT_SYMBOL_GPL vmlinux 0xfa07f4c8 devres_release_group +EXPORT_SYMBOL_GPL vmlinux 0xfa1472e9 fwnode_property_read_u8_array +EXPORT_SYMBOL_GPL vmlinux 0xfa1eb910 unregister_syscore_ops +EXPORT_SYMBOL_GPL vmlinux 0xfa1f4662 scatterwalk_start +EXPORT_SYMBOL_GPL vmlinux 0xfa413a01 synchronize_srcu +EXPORT_SYMBOL_GPL vmlinux 0xfa49baa1 ata_bmdma32_port_ops +EXPORT_SYMBOL_GPL vmlinux 0xfa4d4d5a __clk_mux_determine_rate +EXPORT_SYMBOL_GPL vmlinux 0xfa4e84af gpiod_get_array_optional +EXPORT_SYMBOL_GPL vmlinux 0xfa9e2fde mark_page_dirty +EXPORT_SYMBOL_GPL vmlinux 0xfab9d44e pwm_get_chip_data +EXPORT_SYMBOL_GPL vmlinux 0xfaf06c6d usb_bus_list_lock +EXPORT_SYMBOL_GPL vmlinux 0xfb0eba1d irq_setup_alt_chip +EXPORT_SYMBOL_GPL vmlinux 0xfb1541d7 tty_find_polling_driver +EXPORT_SYMBOL_GPL vmlinux 0xfb1f1e9e tty_init_termios +EXPORT_SYMBOL_GPL vmlinux 0xfb32b30f ring_buffer_read_prepare_sync +EXPORT_SYMBOL_GPL vmlinux 0xfb3f7eab task_cgroup_path +EXPORT_SYMBOL_GPL vmlinux 0xfb4b0806 usb_udc_vbus_handler +EXPORT_SYMBOL_GPL vmlinux 0xfb58a994 unuse_mm +EXPORT_SYMBOL_GPL vmlinux 0xfb6eedf9 power_group_name +EXPORT_SYMBOL_GPL vmlinux 0xfb8557ad of_pci_address_to_resource +EXPORT_SYMBOL_GPL vmlinux 0xfb884f53 bmp085_detect +EXPORT_SYMBOL_GPL vmlinux 0xfb8da5c9 xfrm_inner_extract_output +EXPORT_SYMBOL_GPL vmlinux 0xfb94f014 usb_anchor_empty +EXPORT_SYMBOL_GPL vmlinux 0xfba7a734 dev_attr_unload_heads +EXPORT_SYMBOL_GPL vmlinux 0xfbbd41ca no_action +EXPORT_SYMBOL_GPL vmlinux 0xfbcfdcfa bpf_prog_free +EXPORT_SYMBOL_GPL vmlinux 0xfbe02963 extcon_get_cable_state_ +EXPORT_SYMBOL_GPL vmlinux 0xfbe226ca blk_add_request_payload +EXPORT_SYMBOL_GPL vmlinux 0xfc03d97a page_is_ram +EXPORT_SYMBOL_GPL vmlinux 0xfc04048e cpufreq_generic_init +EXPORT_SYMBOL_GPL vmlinux 0xfc15162e ata_bmdma_post_internal_cmd +EXPORT_SYMBOL_GPL vmlinux 0xfc278299 mtd_get_unmapped_area +EXPORT_SYMBOL_GPL vmlinux 0xfc432725 blk_mq_freeze_queue +EXPORT_SYMBOL_GPL vmlinux 0xfc6186cf regulator_set_load +EXPORT_SYMBOL_GPL vmlinux 0xfc626b3e regcache_cache_bypass +EXPORT_SYMBOL_GPL vmlinux 0xfc782984 __of_genpd_add_provider +EXPORT_SYMBOL_GPL vmlinux 0xfc7d487d bus_find_device +EXPORT_SYMBOL_GPL vmlinux 0xfc94c6ab regulator_disable_regmap +EXPORT_SYMBOL_GPL vmlinux 0xfc95943a enable_kprobe +EXPORT_SYMBOL_GPL vmlinux 0xfc9e78c3 irq_domain_associate +EXPORT_SYMBOL_GPL vmlinux 0xfc9f5bc7 snd_soc_dai_set_clkdiv +EXPORT_SYMBOL_GPL vmlinux 0xfca69f4f sdhci_free_host +EXPORT_SYMBOL_GPL vmlinux 0xfcb5e63e bdev_write_page +EXPORT_SYMBOL_GPL vmlinux 0xfcd7bc0b ring_buffer_empty +EXPORT_SYMBOL_GPL vmlinux 0xfce24e77 mpc8xxx_spi_tx_buf_u16 +EXPORT_SYMBOL_GPL vmlinux 0xfce8f421 usb_set_device_state +EXPORT_SYMBOL_GPL vmlinux 0xfcefb2bf power_supply_put +EXPORT_SYMBOL_GPL vmlinux 0xfcfb9bfb sdhci_pltfm_suspend +EXPORT_SYMBOL_GPL vmlinux 0xfd14496a crypto_unregister_template +EXPORT_SYMBOL_GPL vmlinux 0xfd3a0ef6 thermal_zone_of_sensor_unregister +EXPORT_SYMBOL_GPL vmlinux 0xfd41c7ce btree_merge +EXPORT_SYMBOL_GPL vmlinux 0xfd46e8dd da903x_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xfd5db952 ohci_resume +EXPORT_SYMBOL_GPL vmlinux 0xfd7a50ea set_timer_slack +EXPORT_SYMBOL_GPL vmlinux 0xfd91017e napi_hash_del +EXPORT_SYMBOL_GPL vmlinux 0xfd93acd7 led_trigger_set_default +EXPORT_SYMBOL_GPL vmlinux 0xfdb4a200 register_pernet_subsys +EXPORT_SYMBOL_GPL vmlinux 0xfde1a33e klist_prev +EXPORT_SYMBOL_GPL vmlinux 0xfde6d3a4 usb_gadget_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0xfdea6b1d regmap_get_device +EXPORT_SYMBOL_GPL vmlinux 0xfdf53b82 trace_call_bpf +EXPORT_SYMBOL_GPL vmlinux 0xfe144670 mtd_lock +EXPORT_SYMBOL_GPL vmlinux 0xfe23154c fuse_abort_conn +EXPORT_SYMBOL_GPL vmlinux 0xfe23fbd4 nf_queue_entry_get_refs +EXPORT_SYMBOL_GPL vmlinux 0xfe2cd135 device_remove_bin_file +EXPORT_SYMBOL_GPL vmlinux 0xfe2ff092 get_dcookie +EXPORT_SYMBOL_GPL vmlinux 0xfe5794f3 pci_cfg_access_unlock +EXPORT_SYMBOL_GPL vmlinux 0xfe7453fe extcon_set_cable_state_ +EXPORT_SYMBOL_GPL vmlinux 0xfe90167a exportfs_encode_fh +EXPORT_SYMBOL_GPL vmlinux 0xfe990052 gpio_free +EXPORT_SYMBOL_GPL vmlinux 0xfed11ed1 usb_mon_deregister +EXPORT_SYMBOL_GPL vmlinux 0xfedb1ff0 transport_configure_device +EXPORT_SYMBOL_GPL vmlinux 0xfef8a166 trace_current_buffer_lock_reserve +EXPORT_SYMBOL_GPL vmlinux 0xfefb854e mmput +EXPORT_SYMBOL_GPL vmlinux 0xfefdec47 skb_append_pagefrags +EXPORT_SYMBOL_GPL vmlinux 0xfeff0841 snd_soc_unregister_card +EXPORT_SYMBOL_GPL vmlinux 0xff05fa13 vring_interrupt +EXPORT_SYMBOL_GPL vmlinux 0xff163bcd virtqueue_add_outbuf +EXPORT_SYMBOL_GPL vmlinux 0xff1baf65 __mmu_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0xff291ecf clk_unregister_divider +EXPORT_SYMBOL_GPL vmlinux 0xff334ecc device_set_wakeup_capable +EXPORT_SYMBOL_GPL vmlinux 0xff3bd71f da9052_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0xff4e4842 pm_schedule_suspend +EXPORT_SYMBOL_GPL vmlinux 0xff4ed7cf pcie_port_bus_type +EXPORT_SYMBOL_GPL vmlinux 0xff5a8cfe cn_del_callback +EXPORT_SYMBOL_GPL vmlinux 0xff633558 vprintk_default +EXPORT_SYMBOL_GPL vmlinux 0xff758117 pci_assign_unassigned_bus_resources +EXPORT_SYMBOL_GPL vmlinux 0xff7f409b devm_regulator_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xff8b13c9 remove_irq +EXPORT_SYMBOL_GPL vmlinux 0xff9a48f3 fwnode_property_read_string_array +EXPORT_SYMBOL_GPL vmlinux 0xffb0b999 ata_bmdma_error_handler +EXPORT_SYMBOL_GPL vmlinux 0xffd0f843 __gpiod_get_index +EXPORT_SYMBOL_GPL vmlinux 0xffd94023 omap_dm_timer_request_by_node +EXPORT_SYMBOL_GPL vmlinux 0xffebabf6 blkcipher_walk_done --- linux-raspi2-4.2.0.orig/debian.master/abi/4.2.0-26.31/armhf/generic-lpae.compiler +++ linux-raspi2-4.2.0/debian.master/abi/4.2.0-26.31/armhf/generic-lpae.compiler @@ -0,0 +1 @@ +GCC: (Ubuntu 5.2.1-22ubuntu2) 5.2.1 20151010 --- linux-raspi2-4.2.0.orig/debian.master/abi/4.2.0-26.31/armhf/generic-lpae.modules +++ linux-raspi2-4.2.0/debian.master/abi/4.2.0-26.31/armhf/generic-lpae.modules @@ -0,0 +1,4378 @@ +3w-9xxx +3w-sas +3w-xxxx +6lowpan +6pack +8021q +8139cp +8139too +8250_dw +8250_omap +8250_uniphier +8255 +8255_pci +8390 +842 +842_compress +842_decompress +88pm800 +88pm805 +88pm80x +88pm80x_onkey +88pm8607 +88pm860x_battery +88pm860x_bl +88pm860x_charger +88pm860x_onkey +88pm860x-ts +9p +9pnet +9pnet_rdma +9pnet_virtio +a100u2w +a3d +a8293 +aacraid +aat2870_bl +aat2870-regulator +ab3100 +ab3100-otp +ablk_helper +acard-ahci +acecad +acenic +act200l-sir +act8865-regulator +act_bpf +act_connmark +act_csum +act_gact +act_ipt +actisys-sir +act_mirred +act_nat +act_pedit +act_police +act_simple +act_skbedit +act_vlan +ad2s1200 +ad2s1210 +ad2s90 +ad5064 +ad525x_dpot +ad525x_dpot-i2c +ad525x_dpot-spi +ad5360 +ad5380 +ad5398 +ad5421 +ad5446 +ad5449 +ad5504 +ad5624r_spi +ad5686 +ad5755 +ad5764 +ad5791 +ad5933 +ad714x +ad714x-i2c +ad714x-spi +ad7150 +ad7152 +ad7192 +ad7266 +ad7280a +ad7291 +ad7298 +ad7303 +ad7314 +ad7414 +ad7418 +ad7476 +ad7606 +ad7746 +ad7780 +ad7791 +ad7793 +ad7816 +ad7877 +ad7879 +ad7879-i2c +ad7879-spi +ad7887 +ad7923 +ad799x +ad8366 +ad9523 +ad9832 +ad9834 +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 +ade7753 +ade7754 +ade7758 +ade7759 +ade7854 +ade7854-i2c +ade7854-spi +adf4350 +adfs +adi +adis16060 +adis16080 +adis16130 +adis16136 +adis16201 +adis16203 +adis16204 +adis16209 +adis16220 +adis16240 +adis16260 +adis16400 +adis16480 +adis_lib +adjd_s311 +adl_pci6208 +adl_pci7x3x +adl_pci8164 +adl_pci9111 +adl_pci9118 +adm1021 +adm1025 +adm1026 +adm1029 +adm1031 +adm1275 +adm8211 +adm9240 +adp5520_bl +adp5520-keys +adp5588-keys +adp5589-keys +adp8860_bl +adp8870_bl +adq12b +ads1015 +ads7828 +ads7846 +ads7871 +ad_sigma_delta +adt7310 +adt7316 +adt7316-i2c +adt7316-spi +adt7410 +adt7411 +adt7462 +adt7470 +adt7475 +adt7x10 +adummy +adutux +adv7511 +adv7604 +adv7842 +advansys +adv_pci1710 +adv_pci1723 +adv_pci1724 +adv_pci_dio +adxl34x +adxl34x-i2c +adxl34x-spi +adxrs450 +aes-arm +aes-arm-bs +aes-arm-ce +af9013 +af9033 +af_alg +affs +af_key +af_packet_diag +af-rxrpc +afs +ah4 +ah6 +ahci +ahci_ceva +ahci_mvebu +aic79xx +aic7xxx +aic94xx +aio_aio12_8 +aio_iiro_16 +aiptek +aircable +airspy +ak8975 +al3320a +algif_aead +algif_hash +algif_rng +algif_skcipher +alim7101_wdt +altera-ci +altera_jtaguart +altera_ps2 +altera-stapl +altera_tse +altera_uart +alx +am35x +am53c974 +ambakmi +amba-pl010 +amc6821 +amd +amd5536udc +amd8111e +amdgpu +amplc_dio200 +amplc_dio200_common +amplc_dio200_pci +amplc_pc236 +amplc_pc236_common +amplc_pc263 +amplc_pci224 +amplc_pci230 +amplc_pci236 +amplc_pci263 +ams369fg06 +analog +anatop-regulator +ansi_cprng +anubis +aoe +apbps2 +apds9300 +apds9802als +apds990x +appledisplay +appletalk +appletouch +applicom +ar1021_i2c +ar5523 +ar7part +arc4 +arc_emac +arcmsr +arcnet +arc_ps2 +arc-rawmode +arc-rimi +arc_uart +arizona-haptics +arizona-i2c +arizona-ldo1 +arizona-micsupp +arizona-spi +ark3116 +arkfb +armada +arm_big_little +arm_big_little_dt +arm-exynos-cpufreq +arm_mhu +arptable_filter +arp_tables +arpt_mangle +as102_fe +as3711_bl +as3711-regulator +as3722-regulator +as3935 +as5011 +asc7621 +asix +ast +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 +ath3k +ath5k +ath6kl_core +ath6kl_sdio +ath6kl_usb +ath9k +ath9k_common +ath9k_htc +ath9k_hw +ati_remote +ati_remote2 +atl1 +atl1c +atl1e +atl2 +atm +atmel +atmel-hlcdc +atmel-hlcdc-dc +atmel_mxt_ts +atmel_pci +atmtcp +atp870u +atusb +atxp1 +aty128fb +atyfb +au0828 +au8522_common +au8522_decoder +au8522_dig +aufs +auo_k1900fb +auo_k1901fb +auo_k190x +auo-pixcir-ts +authenc +authencesn +auth_rpcgss +autofs4 +avmfritz +ax25 +ax88179_178a +ax88796 +axp20x-pek +axp20x-regulator +axp288_adc +axp288_charger +axp288_fuel_gauge +b1 +b1dma +b1pci +b2c2-flexcop +b2c2-flexcop-pci +b2c2-flexcop-usb +b43 +b43legacy +b44 +bas_gigaset +batman-adv +baycom_epp +baycom_par +baycom_ser_fdx +baycom_ser_hdx +bcache +bcm203x +bcm3510 +bcm590xx +bcm590xx-regulator +bcm5974 +bcm63138_nand +bcm63xx_uart +bcm7xxx +bcm87xx +bcma +bcm-keypad +bcmsysport +bd6107 +bdc +bdc_pci +be2iscsi +be2net +befs +belkin_sa +berlin2-adc +bfa +bfs +bfusb +bh1750 +bh1770glc +bh1780gli +binfmt_misc +block2mtd +blocklayoutdriver +blowfish_common +blowfish_generic +bL_switcher_dummy_if +bluetooth +bluetooth_6lowpan +bma150 +bma180 +bmc150-accel +bmc150_magn +bmg160 +bmp085-i2c +bmp085-spi +bmp280 +bna +bnep +bnx2 +bnx2fc +bnx2i +bnx2x +bonding +bpa10x +bpck +bpck6 +bpqether +bq2415x_charger +bq24190_charger +bq24257_charger +bq24735-charger +bq25890_charger +bq27x00_battery +br2684 +brcmfmac +brcmnand +brcmsmac +brcmstb_nand +brcmutil +bridge +br_netfilter +broadcom +broadsheetfb +bsd_comp +bt878 +btbcm +btcoexist +btintel +btmrvl +btmrvl_sdio +btrfs +btrtl +btsdio +bttv +btusb +btwilink +bu21013_ts +budget +budget-av +budget-ci +budget-core +budget-patch +c4 +c67x00 +c6xdigio +cachefiles +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-raw +cap11xx +capi +capidrv +capmode +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 +c_can +c_can_pci +c_can_platform +cciss +ccm +cdc-acm +cdc_eem +cdc_ether +cdc_mbim +cdc_ncm +cdc-phonet +cdc_subset +cdc-wdm +ceph +cfg80211 +cfi_cmdset_0001 +cfi_cmdset_0002 +cfi_cmdset_0020 +cfi_probe +cfi_util +cfspi_slave +ch +ch341 +ch7006 +chacha20_generic +chacha20poly1305 +chaoskey +chipone_icn8318 +chnl_net +cicada +cifs +ci_hdrc +ci_hdrc_imx +ci_hdrc_msm +ci_hdrc_pci +ci_hdrc_usb2 +ci_hdrc_zevio +cirrus +cirrusfb +clip +clk-cdce706 +clk-cdce925 +clk-max77686 +clk-max77802 +clk-palmas +clk-pwm +clk-qcom +clk-rk808 +clk-s2mps11 +clk-si5351 +clk-si570 +clk-twl6040 +clk-wm831x +cls_basic +cls_bpf +cls_cgroup +cls_flow +cls_flower +cls_fw +cls_route +cls_rsvp +cls_rsvp6 +cls_tcindex +cls_u32 +cm109 +cm32181 +cm3232 +cm3323 +cm36651 +cma3000_d0x +cma3000_d0x_i2c +cmac +cmtp +cnic +cobalt +cobra +coda +com20020 +com20020-pci +com90io +com90xx +comedi +comedi_8254 +comedi_8255 +comedi_bond +comedi_parport +comedi_pci +comedi_test +comedi_usb +comm +configfs +connector-analog-tv +connector-dvi +contec_pci_dio +cordic +core +cp210x +cpia2 +cppi41 +cpu-notifier-error-inject +cramfs +crc32 +crc7 +crc8 +crc-ccitt +crc-itu-t +cros_ec +cros_ec_devs +cros_ec_i2c +cros_ec_keyb +cros_ec_spi +cryptd +cryptoloop +crypto_null +crypto_user +cs5345 +cs53l32a +cs89x0 +csiostor +ctr +cts +cuse +cw1200_core +cw1200_wlan_sdio +cw1200_wlan_spi +cx18 +cx18-alsa +cx22700 +cx22702 +cx231xx +cx231xx-alsa +cx231xx-dvb +cx2341x +cx23885 +cx24110 +cx24113 +cx24116 +cx24117 +cx24120 +cx24123 +cx25821 +cx25821-alsa +cx25840 +cx82310_eth +cx8800 +cx8802 +cx88-alsa +cx88-blackbird +cx88-dvb +cx88-vp3054-i2c +cx88xx +cxacru +cxd2099 +cxd2820r +cxgb +cxgb3 +cxgb3i +cxgb4 +cxgb4i +cxgb4vf +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 +da9030_battery +da9034-ts +da903x +da903x_bl +da9052-battery +da9052_bl +da9052-hwmon +da9052_onkey +da9052-regulator +da9052_tsi +da9052_wdt +da9055-hwmon +da9055_onkey +da9055-regulator +da9055_wdt +da9063_onkey +da9063-regulator +da9063_wdt +da9150-charger +da9150-core +da9150-gpadc +da9210-regulator +da9211-regulator +dac02 +DAC960 +daqboard2000 +das08 +das08_isa +das08_pci +das16 +das16m1 +das1800 +das6402 +das800 +davicom +db9 +dc395x +dccp +dccp_diag +dccp_ipv4 +dccp_ipv6 +dccp_probe +ddbridge +de2104x +decnet +deflate +defxx +denali +denali_dt +denali_pci +des_generic +designware_i2s +dgap +dgnc +dht11 +dib0070 +dib0090 +dib3000mb +dib3000mc +dib7000m +dib7000p +dib8000 +dibx000_common +digi_acceleport +digicolor-usart +diskonchip +divacapi +divadidd +diva_idi +diva_mnt +divas +dl2k +dlci +dlm +dln2 +dm1105 +dm9000 +dm9601 +dm-bio-prison +dm-bufio +dm-cache +dm-cache-cleaner +dm-cache-mq +dm-cache-smq +dm-crypt +dm-delay +dme1737 +dm-era +dmfe +dm-flakey +dm-log +dm-log-userspace +dm-log-writes +dmm32at +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-verity +dmx3191d +dm-zero +dnet +dn_rtmsg +docg3 +docg4 +dove_thermal +dp83867 +drbd +drbg +drm +drm_kms_helper +drv260x +drv2665 +drv2667 +drx39xyj +drxd +drxk +ds1621 +ds1682 +ds1wm +ds2482 +ds2490 +ds2760_battery +ds2780_battery +ds2781_battery +ds2782_battery +ds3000 +ds620 +dsbr100 +dscc4 +dss1_divert +dst +dst_ca +dstr +dt2801 +dt2811 +dt2814 +dt2815 +dt2817 +dt282x +dt3000 +dt3155 +dt9812 +dummy +dummy-irq +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-digitv +dvb-usb-dtt200u +dvb-usb-dtv5100 +dvb-usb-dvbsky +dvb-usb-dw2102 +dvb-usb-ec168 +dvb-usb-friio +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_v2 +dvb-usb-vp702x +dvb-usb-vp7045 +dwc3 +dwc3-exynos +dwc3-omap +dwc3-pci +dwc3-qcom +dw_dmac +dw_dmac_core +dw_dmac_pci +dw_hdmi +dw_hdmi-imx +dwmac-generic +dwmac-ipq806x +dwmac-lpc18xx +dwmac-meson +dwmac-rk +dwmac-socfpga +dwmac-sti +dwmac-sunxi +dw_mmc +dw_mmc-exynos +dw_mmc-k3 +dw_mmc-pci +dw_mmc-pltfm +dw_wdt +dyna_pci10xx +dynapro +e100 +e1000 +e1000e +e3x0-button +e4000 +earth-pt1 +earth-pt3 +ebt_802_3 +ebtable_broute +ebtable_filter +ebtable_nat +ebtables +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 +ec100 +echainiv +echo +edac_core +edt-ft5x06 +eeprom +eeprom_93cx6 +eeprom_93xx46 +eeti_ts +efs +egalax_ts +ehci-msm +ehci-omap +ehset +elan_i2c +elants_i2c +elo +em28xx +em28xx-alsa +em28xx-dvb +em28xx-rc +em28xx-v4l +emac_arc +emac_rockchip +emc1403 +emc2103 +emc6w201 +em_canid +em_cmp +emi26 +emi62 +emif +em_ipset +em_meta +em_nbyte +empeg +ems_pci +ems_usb +em_text +emu10k1-gp +em_u32 +enc28j60 +enclosure +encoder-opa362 +encoder-tfp410 +eni +enic +epat +epia +epic100 +eql +esas2r +esd_usb2 +esi-sir +esp4 +esp6 +esp_scsi +et1011c +et131x +ethoc +evbug +exofs +extcon-adc-jack +extcon-arizona +extcon-axp288 +extcon-gpio +extcon-max14577 +extcon-max77693 +extcon-max77843 +extcon-max8997 +extcon-palmas +extcon-rt8973a +extcon-sm5502 +extcon-usb-gpio +exynos_adc +exynosdrm +exynos-gsc +exynos-rng +ezusb +f2fs +f71805f +f71882fg +f75375s +f81232 +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_ssd1289 +fb_ssd1306 +fb_ssd1331 +fb_ssd1351 +fb_st7735r +fb_sys_fops +fbtft +fbtft_device +fb_tinylcd +fb_tls8204 +fb_uc1701 +fb_upd161704 +fb_watterott +fc0011 +fc0012 +fc0013 +fc2580 +fcoe +fcrypt +fdomain +fealnx +ff-memless +fid +firedtv +firewire-core +firewire-net +firewire-ohci +firewire-sbp2 +firewire-serial +fit2 +fit3 +fl512 +fld +flexcan +flexfb +fm10k +fm801-gp +fmc +fmc-chardev +fmc-fakedev +fmc-trivial +fmc-write-eeprom +fm_drv +forcedeth +fore_200e +fotg210-hcd +fotg210-udc +fou +freevxfs +friq +frpw +fsa9480 +fscache +fsl-edma +fsl_lpuart +ft1000 +ftdi-elan +ftdi_sio +ftgmac100 +ftl +ftmac100 +fujitsu_ts +fusbh200-hcd +g450_pll +g760a +g762 +g_acm_ms +gadgetfs +gamecon +gameport +garmin_gps +garp +g_audio +gcc-apq8084 +gcc-ipq806x +gcc-msm8660 +gcc-msm8916 +gcc-msm8960 +gcc-msm8974 +g_cdc +gcm +g_dbgp +gdmtty +gdmulte +gdmwm +generic +generic-adc-battery +generic_bl +genet +geneve +geneve_core +gen_probe +g_ether +gf128mul +gf2k +g_ffs +gfs2 +ghash-arm-ce +ghash-generic +g_hid +gigaset +girbil-sir +gl518sm +gl520sm +gl620a +gluebi +g_mass_storage +g_midi +g_multi +g_ncm +g_nokia +go7007 +go7007-loader +go7007-usb +goku_udc +goodix +gp2ap002a00f +gp2ap020a00f +gpio +gpio-74x164 +gpio-74xx-mmio +gpio-addr-flash +gpio-adnp +gpio-adp5520 +gpio-adp5588 +gpio-altera +gpio-amd8111 +gpio-arizona +gpio_backlight +gpio-beeper +gpio-charger +gpio-crystalcove +gpio-da9052 +gpio-da9055 +gpio-dln2 +gpio-dwapb +gpio-fan +gpio-grgpio +gpio-ir-recv +gpio-janz-ttl +gpio-kempld +gpio_keys +gpio_keys_polled +gpio-lp3943 +gpio-max7300 +gpio-max7301 +gpio-max730x +gpio-max732x +gpio-mc33880 +gpio-mcp23s08 +gpio-ml-ioh +gpio_mouse +gpio-msm-v2 +gpio-pca953x +gpio-pcf857x +gpio-rcar +gpio-rdc321x +gpio-regulator +gpio-sch311x +gpio-syscon +gpio_tilt_polled +gpio-tps65912 +gpio-ucb1400 +gpio-viperboard +gpio-vx855 +gpio_wdt +gpio-wm831x +gpio-wm8350 +gpio-wm8994 +g_printer +grace +grcan +gre +grip +grip_mp +gr_udc +gsc_hpdi +g_serial +gs_fpga +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 +gs_usb +gtco +guillemot +gunze +g_webcam +g_zero +hackrf +hamachi +hampshire +hanwang +hci +hci_uart +hci_vhci +hdlc +hdlc_cisco +hdlcdrv +hdlc_fr +hdlc_ppp +hdlc_raw +hdlc_raw_eth +hdlc_x25 +hdpvr +he +hexium_gemini +hexium_orion +hfc4s8s_l1 +hfcmulti +hfcpci +hfcsusb +hfc_usb +hfs +hfsplus +hi6421-pmic-core +hi6421-regulator +hid +hid-a4tech +hid-apple +hid-appleir +hid-aureal +hid-axff +hid-belkin +hid-betopff +hid-cherry +hid-chicony +hid-cp2112 +hid-cypress +hid-dr +hid-elecom +hid-elo +hid-emsff +hid-ezkey +hid-gaff +hid-generic +hid-gt683r +hid-gyration +hid-holtekff +hid-holtek-kbd +hid-holtek-mouse +hid-icade +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 +hidp +hid-penmount +hid-petalynx +hid-picolcd +hid-pl +hid-plantronics +hid-primax +hid-prodikeys +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-iio-common +hid-sensor-incl-3d +hid-sensor-magn-3d +hid-sensor-press +hid-sensor-prox +hid-sensor-rotation +hid-sensor-trigger +hid-sjoy +hid-sony +hid-speedlink +hid-steelseries +hid-sunplus +hid-thingm +hid-tivo +hid-tmff +hid-topseed +hid-twinhan +hid-uclogic +hid-waltop +hid-wiimote +hid-xinmo +hid-zpff +hid-zydacron +highbank-cpufreq +highbank_l2_edac +highbank_mc_edac +hih6130 +hip04_eth +hip04_mdio +hisax +hisax_fcpcipnp +hisax_isac +hisax_st5481 +hisi504_nand +hisi-acpu-cpufreq +hisi_thermal +hix5hd2_gmac +hmc5843_core +hmc5843_i2c +hmc5843_spi +hmc6352 +hopper +hostap +hostap_pci +hostap_plx +hp100 +hpfs +hpilo +hpsa +hptiop +hsi +hsi_char +hso +hsr +hsu_dma +hsu_dma_pci +htc-pasic3 +htu21 +huawei_cdc_ncm +hwa-hc +hwa-rc +hwmon-vid +hwspinlock_core +hx8357 +hysdn +i1480-dfu-usb +i1480-est +i2400m +i2400m-usb +i2c-algo-bit +i2c-algo-pca +i2c-ali1535 +i2c-ali1563 +i2c-ali15x3 +i2c-amd756 +i2c-amd8111 +i2c-arb-gpio-challenge +i2c-axxia +i2c-cbus-gpio +i2c-cros-ec-tunnel +i2c-designware-core +i2c-designware-pci +i2c-designware-platform +i2c-diolan-u2c +i2c-dln2 +i2c-exynos5 +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-pca9541 +i2c-mux-pca954x +i2c-mux-pinctrl +i2c-mv64xxx +i2c-nforce2 +i2c-nomadik +i2c-ocores +i2c-parport +i2c-parport-light +i2c-pca-platform +i2c-piix4 +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 +i40e +i40evf +i5k_amb +i6300esb +i740fb +ib_addr +ib_cm +ib_core +ib_ipoib +ib_iser +ib_isert +ib_mad +ibmaem +ibmpex +ib_mthca +ib_sa +ib_srp +ib_srpt +ib_ucm +ib_umad +ib_uverbs +icplus +icp_multi +ics932s401 +idma64 +idmouse +idt77252 +ieee802154 +ieee802154_6lowpan +ieee802154_socket +ifb +iforce +igb +igbvf +igorplugusb +iguanair +iio_dummy +iio_hwmon +iio-trig-interrupt +iio-trig-periodic-rtc +iio-trig-sysfs +ii_pci20kc +ili210x +ili922x +ili9320 +imm +imon +impa7 +ims-pcu +imx074 +imxdrm +imx-ipu-v3 +imx-ipuv3-crtc +imx-ldb +imx_thermal +imx-tve +ina209 +ina2xx +industrialio +industrialio-triggered-buffer +inet_diag +inexio +inftl +initio +input-leds +input-polldev +int51x1 +intel_vr_nor +interact +interval_tree_test +inv-mpu6050 +ioc4 +io_edgeport +io_ti +iowarrior +ip6_gre +ip6table_filter +ip6table_mangle +ip6table_nat +ip6table_raw +ip6_tables +ip6table_security +ip6t_ah +ip6t_eui64 +ip6t_frag +ip6t_hbh +ip6t_ipv6header +ip6t_MASQUERADE +ip6t_mh +ip6t_NPT +ip6t_REJECT +ip6t_rpfilter +ip6t_rt +ip6t_SYNPROXY +ip6_tunnel +ip6_udp_tunnel +ip6_vti +ipack +ipaq +ipcomp +ipcomp6 +ipddp +ipg +ip_gre +iphase +ipheth +ipip +ipmi_devintf +ipmi_msghandler +ipmi_poweroff +ipmi_si +ipmi_ssif +ipmi_watchdog +ipoctal +ipr +iproc_nand +ips +ip_set +ip_set_bitmap_ip +ip_set_bitmap_ipmac +ip_set_bitmap_port +ip_set_hash_ip +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 +iptable_filter +iptable_mangle +iptable_nat +iptable_raw +ip_tables +iptable_security +ipt_ah +ipt_CLUSTERIP +ipt_ECN +ipt_MASQUERADE +ipt_REJECT +ipt_rpfilter +ipt_SYNPROXY +ip_tunnel +ipvlan +ip_vs +ip_vs_dh +ip_vs_fo +ip_vs_ftp +ip_vs_lblc +ip_vs_lblcr +ip_vs_lc +ip_vs_nq +ip_vs_pe_sip +ip_vs_rr +ip_vs_sed +ip_vs_sh +ip_vs_wlc +ip_vs_wrr +ip_vti +ipw +ipw2100 +ipw2200 +ipx +ircomm +ircomm-tty +irda +irda-usb +ir-hix5hd2 +ir-jvc-decoder +ir-kbd-i2c +irlan +ir-lirc-codec +ir-mce_kbd-decoder +ir-nec-decoder +irnet +ir-rc5-decoder +ir-rc6-decoder +ir-sanyo-decoder +ir-sharp-decoder +ir-sony-decoder +irtty-sir +ir-usb +ir-xmp-decoder +iscsi_boot_sysfs +iscsi_target_mod +iscsi_tcp +isdn +isdn_bsdcomp +isdnhdlc +isicom +isight_firmware +isl29003 +isl29018 +isl29020 +isl29028 +isl29125 +isl6271a-regulator +isl6405 +isl6421 +isl6423 +isl9305 +isofs +isp116x-hcd +isp1362-hcd +isp1704_charger +isp1760 +it87 +it913x +itd1000 +itg3200 +iuu_phoenix +ivtv +ivtv-alsa +ivtvfb +iw_c2 +iw_cm +iw_cxgb3 +iw_cxgb4 +iwl3945 +iwl4965 +iwldvm +iwlegacy +iwlmvm +iwlwifi +iw_nes +ix2505v +ixgb +ixgbe +ixgbevf +janz-cmodio +janz-ican3 +jc42 +jedec_probe +jffs2 +jfs +jitterentropy_rng +jmb38x_ms +jme +joydev +joydump +jr3_pci +jsa1212 +jsm +k3dma +kafs +kalmia +kaweth +kbic +kbtab +kcomedilib +ke_counter +kempld-core +kempld_wdt +kernelcapi +keyspan +keyspan_pda +keyspan_remote +kfifo_buf +khazad +kingsun-sir +kl5kusb105 +kmx61 +ko2iblnd +kobil_sct +ks0108 +ks8842 +ks8851 +ks8851_mll +ks959-sir +ksdazzle-sir +ksocklnd +ksz884x +ktti +kvaser_pci +kvaser_usb +kxcjk-1013 +kxsd9 +kxtj9 +kyrofb +l1oip +l2tp_core +l2tp_debugfs +l2tp_eth +l2tp_ip +l2tp_ip6 +l2tp_netlink +l2tp_ppp +l4f00242t03 +l64781 +lanai +lapb +lapbether +latch-addr-flash +lattice-ecp3-config +lcc-ipq806x +lcc-msm8960 +lcd +ld9040 +ldusb +lec +led-class-flash +leds-88pm860x +leds-aat1290 +leds-adp5520 +leds-bcm6328 +leds-bcm6358 +leds-bd2802 +leds-blinkm +leds-da903x +leds-da9052 +leds-dac124s085 +leds-gpio +leds-ktd2692 +leds-lm3530 +leds-lm3533 +leds-lm355x +leds-lm3642 +leds-lp3944 +leds-lp8788 +leds-lp8860 +leds-lt3593 +leds-max77693 +leds-max8997 +leds-mc13783 +leds-menf21bmc +leds-pca9532 +leds-pca955x +leds-pca963x +leds-pm8941-wled +leds-pwm +leds-regulator +leds-tca6507 +leds-tlc591xx +leds-wm831x-status +leds-wm8350 +ledtrig-backlight +ledtrig-camera +ledtrig-default-on +ledtrig-gpio +ledtrig-oneshot +ledtrig-timer +ledtrig-transient +legousbtower +lg2160 +lgdt3305 +lgdt3306a +lgdt330x +lgs8gxx +lg-vl600 +lib80211 +lib80211_crypt_ccmp +lib80211_crypt_tkip +lib80211_crypt_wep +libceph +libcfs +libcomposite +libcrc32c +libcxgbi +libertas +libertas_sdio +libertas_spi +libertas_tf +libertas_tf_usb +libfc +libfcoe +libipw +libiscsi +libiscsi_tcp +libore +libosd +libsas +lightning +lineage-pem +linear +lirc_bt829 +lirc_dev +lirc_imon +lirc_parallel +lirc_sasem +lirc_serial +lirc_sir +lirc_zilog +lis3l02dq +lis3lv02d +lis3lv02d_i2c +lis3lv02d_spi +litelink-sir +lkkbd +llc +llc2 +llite_lloop +lm25066 +lm3533-als +lm3533_bl +lm3533-core +lm3533-ctrlbank +lm3630a_bl +lm3639_bl +lm63 +lm70 +lm73 +lm75 +lm77 +lm78 +lm80 +lm83 +lm8323 +lm8333 +lm85 +lm87 +lm90 +lm92 +lm93 +lm95234 +lm95241 +lm95245 +lms283gf05 +lms501kf03 +lmv +lnbp21 +lnbp22 +lnet +lnet_selftest +lockd +locktorture +lov +lp +lp3943 +lp3971 +lp3972 +lp855x_bl +lp8727_charger +lp872x +lp8755 +lp8788_adc +lp8788_bl +lp8788-buck +lp8788-charger +lp8788-ldo +lpc_ich +lpc_sch +lpddr2_nvm +lpddr_cmds +lpfc +lru_cache +lrw +ltc2941-battery-gauge +ltc2945 +ltc2978 +ltc3589 +ltc4151 +ltc4215 +ltc4222 +ltc4245 +ltc4260 +ltc4261 +ltr501 +ltv350qv +lustre +lv5207lp +lvstest +lxt +lz4 +lz4_compress +lz4hc +lz4hc_compress +m25p80 +m2m-deinterlace +m52790 +m62332 +m88ds3103 +m88rs2000 +m88rs6000t +ma600-sir +mac80211 +mac80211_hwsim +mac802154 +macb +mac-celtic +mac-centeuro +mac-croatian +mac-cyrillic +mac-gaelic +mac-greek +mac-iceland +mac-inuit +macmodes +mac-roman +mac-romanian +mac-turkish +macvlan +macvtap +mag3110 +magellan +mailbox-altera +mantis +mantis_core +map_absent +map_ram +map_rom +marvell +marvell-cesa +matrix-keymap +matrix_keypad +matroxfb_accel +matroxfb_base +matroxfb_crtc2 +matroxfb_DAC1064 +matroxfb_g450 +matroxfb_maven +matroxfb_misc +matroxfb_Ti3026 +matrox_w1 +max1027 +max1111 +max11801_ts +max1363 +max14577 +max14577_charger +max1586 +max16064 +max16065 +max1619 +max1668 +max17040_battery +max17042_battery +max197 +max2165 +max3100 +max3421-hcd +max34440 +max517 +max5821 +max63xx_wdt +max6639 +max6642 +max6650 +max6697 +max6875 +max7359_keypad +max77686 +max77693 +max77693_charger +max77693-haptic +max77802 +max77843 +max77843-haptic +max8649 +max8660 +max8688 +max8903_charger +max8907 +max8907-regulator +max8925_bl +max8925_onkey +max8925_power +max8925-regulator +max8952 +max8973-regulator +max8997 +max8997_charger +max8997_haptic +max8998 +max8998_charger +mb862xxfb +mb86a16 +mb86a20s +mc13783-adc +mc13783-pwrbutton +mc13783-regulator +mc13783_ts +mc13892-regulator +mc13xxx-core +mc13xxx-i2c +mc13xxx-regulator-core +mc13xxx-spi +mc44s803 +m_can +mcb +mcb-pci +mceusb +mcp2120-sir +mcp251x +mcp3021 +mcp320x +mcp3422 +mcp4725 +mcp4922 +mcryptd +mcs5000_ts +mcs7780 +mcs7830 +mcs_touchkey +mct_u232 +md4 +mdc +mdc800 +md-cluster +mdio +mdio-bcm-unimac +mdio-bitbang +mdio-gpio +mdio-mux +mdio-mux-gpio +mdio-mux-mmioreg +me4000 +me_daq +media +megaraid +megaraid_mbox +megaraid_mm +megaraid_sas +memstick +mena21_wdt +menf21bmc +menf21bmc_hwmon +menf21bmc_wdt +men_z135_uart +men_z188_adc +meson-ir +meson_uart +meson_wdt +metronomefb +metro-usb +mf6x4 +mga +mgc +mg_disk +michael_mic +micrel +microread +microread_i2c +microtek +mii +minix +mip6 +mISDN_core +mISDN_dsp +mISDNinfineon +mISDNipac +mISDNisar +mite +mk712 +mkiss +mlx4_core +mlx4_en +mlx4_ib +mlx5_core +mlx5_ib +mlx90614 +mma8450 +mma8452 +mma9551 +mma9551_core +mma9553 +mmc35240 +mmcc-apq8084 +mmcc-msm8960 +mmcc-msm8974 +mmci_qcom_dml +mms114 +mn88472 +mn88473 +mos7720 +mos7840 +moxa +mpc624 +mpl115 +mpl3115 +mpls_gso +mpls_router +mpoa +mpr121_touchkey +mpt2sas +mpt3sas +mptbase +mptctl +mptfc +mptlan +mptsas +mptscsih +mptspi +mpu3050 +mrf24j40 +mrp +ms5611_core +ms5611_i2c +ms5611_spi +ms_block +msdos +msi001 +msi2500 +msm +msm-rng +msp3400 +mspro_block +mt2060 +mt2063 +mt20xx +mt2131 +mt2266 +mt29f_spinand +mt312 +mt352 +mt6397-core +mt6397-regulator +mt7601u +mt8173-max98090 +mt8173-rt5650-rt5676 +mt9m001 +mt9m111 +mt9t031 +mt9t112 +mt9v011 +mt9v022 +mtd_dataflash +mtdoops +mtdram +mtdswap +mtip32xx +mtk-afe-pcm +mtk-pmic-wrap +mtk-sd +mtk_wdt +mtouch +multipath +multiq3 +musb_am335x +musb_dsps +mv643xx_eth +mv_cesa +mvmdio +mvneta +mvpp2 +mvsas +mvsdio +mv_u3d_core +mv_udc +mvumi +mwifiex +mwifiex_pcie +mwifiex_sdio +mwifiex_usb +mwl8k +mxb +mxl111sf-demod +mxl111sf-tuner +mxl301rf +mxl5005s +mxl5007t +mxser +mxuport +myri10ge +nandsim +national +natsemi +nau7802 +navman +nbd +nbpfaxi +nci +nci_uart +ncpfs +nct6683 +nct6775 +nct7802 +nct7904 +nd_blk +nd_btt +nd_pmem +ne2k-pci +neofb +net1080 +net2272 +net2280 +netconsole +netjet +netlink_diag +netrom +netxen_nic +newtonkbd +nfc +nfc_digital +nfcmrvl +nfcmrvl_uart +nfcmrvl_usb +nf_conntrack +nf_conntrack_amanda +nf_conntrack_broadcast +nf_conntrack_ftp +nf_conntrack_h323 +nf_conntrack_ipv4 +nf_conntrack_ipv6 +nf_conntrack_irc +nf_conntrack_netbios_ns +nf_conntrack_netlink +nf_conntrack_pptp +nf_conntrack_proto_dccp +nf_conntrack_proto_gre +nf_conntrack_proto_sctp +nf_conntrack_proto_udplite +nf_conntrack_sane +nf_conntrack_sip +nf_conntrack_snmp +nf_conntrack_tftp +nfcsim +nfcwilink +nf_defrag_ipv4 +nf_defrag_ipv6 +nf_log_arp +nf_log_bridge +nf_log_common +nf_log_ipv4 +nf_log_ipv6 +nf_nat +nf_nat_amanda +nf_nat_ftp +nf_nat_h323 +nf_nat_ipv4 +nf_nat_ipv6 +nf_nat_irc +nf_nat_masquerade_ipv4 +nf_nat_masquerade_ipv6 +nf_nat_pptp +nf_nat_proto_dccp +nf_nat_proto_gre +nf_nat_proto_sctp +nf_nat_proto_udplite +nf_nat_redirect +nf_nat_sip +nf_nat_snmp_basic +nf_nat_tftp +nfnetlink +nfnetlink_acct +nfnetlink_cthelper +nfnetlink_cttimeout +nfnetlink_log +nfnetlink_queue +nf_reject_ipv4 +nf_reject_ipv6 +nfs +nfs_acl +nfsd +nfs_layout_flexfiles +nfs_layout_nfsv41_files +nfsv2 +nfsv3 +nfsv4 +nf_synproxy_core +nf_tables +nf_tables_arp +nf_tables_bridge +nf_tables_inet +nf_tables_ipv4 +nf_tables_ipv6 +nf_tables_netdev +nft_chain_nat_ipv4 +nft_chain_nat_ipv6 +nft_chain_route_ipv4 +nft_chain_route_ipv6 +nft_compat +nft_counter +nft_ct +nft_exthdr +nft_hash +nftl +nft_limit +nft_log +nft_masq +nft_masq_ipv4 +nft_masq_ipv6 +nft_meta +nft_meta_bridge +nft_nat +nft_queue +nft_rbtree +nft_redir +nft_redir_ipv4 +nft_redir_ipv6 +nft_reject +nft_reject_bridge +nft_reject_inet +nft_reject_ipv4 +nft_reject_ipv6 +ngene +n_gsm +nhc_dest +nhc_fragment +nhc_hop +nhc_ipv6 +nhc_mobility +nhc_routing +nhc_udp +n_hdlc +ni_6527 +ni_65xx +ni_660x +ni_670x +ni_at_a2150 +ni_at_ao +ni_atmio +ni_atmio16d +nicstar +ni_labpc +ni_labpc_common +ni_labpc_pci +nilfs2 +ni_pcidio +ni_pcimio +ni_tio +ni_tiocmd +niu +ni_usb6501 +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 +nosy +notifier-error-inject +nouveau +nozomi +nps_enet +n_r3964 +ns558 +ns83820 +nsp32 +ntb +ntb_netdev +ntb_pingpong +ntb_tool +ntb_transport +ntc_thermistor +ntfs +n_tracerouter +n_tracesink +null_blk +nvidiafb +nvme +nvram +nxp-nci +nxp-nci_i2c +nxt200x +nxt6000 +obdclass +obdecho +objlayoutdriver +ocfb +ocfs2 +ocfs2_dlm +ocfs2_dlmfs +ocfs2_nodemanager +ocfs2_stackglue +ocfs2_stack_o2cb +ocfs2_stack_user +ocrdma +of_xilinx_wdt +old_belkin-sir +omap +omap2430 +omap4-keypad +omap-aes +omap-des +omapfb +omap_hdq +omap_hwspinlock +omap-mailbox +omap-ocp2scp +omap-rng +omap-sham +omap_wdt +omfs +omninet +on20 +on26 +onenand +opencores-kbd +openvswitch +oprofile +opticon +option +or51132 +or51211 +orinoco +orinoco_nortel +orinoco_plx +orinoco_tmd +orinoco_usb +orion_nand +orion_wdt +osc +osd +osdblk +osst +oti6858 +ov2640 +ov5642 +ov6650 +ov7640 +ov7670 +ov772x +ov9640 +ov9740 +overlay +oxu210hp-hcd +ozwpan +p54common +p54pci +p54spi +p54usb +p8022 +p8023 +palmas-pwrbutton +palmas-regulator +pandora_bl +panel +panel-dpi +panel-dsi-cm +panel-ld9040 +panel-lgphilips-lb035q02 +panel-nec-nl8048hl11 +panel-s6e8aa0 +panel-sharp-lq101r1sx01 +panel-sharp-ls037v7dw01 +panel-simple +panel-sony-acx565akm +panel-tpo-td028ttec1 +panel-tpo-td043mtea1 +parallel-display +paride +parkbd +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 +pc300too +pc87360 +pc87427 +pcap_keys +pcap-regulator +pcap_ts +pcbc +pcd +pcf50633 +pcf50633-adc +pcf50633-backlight +pcf50633-charger +pcf50633-gpio +pcf50633-input +pcf50633-regulator +pcf8574_keypad +pcf8591 +pch_udc +pci +pci200syn +pcie-iproc +pcips2 +pci-stub +pcl711 +pcl724 +pcl726 +pcl730 +pcl812 +pcl816 +pcl818 +pcm3724 +pcmad +pcmda12 +pcmmio +pcmuio +pcnet32 +pcrypt +pcwd_pci +pcwd_usb +pd +pda_power +pdc_adma +peak_pci +peak_usb +pegasus +penmount +percpu_test +pf +pfuze100-regulator +pg +phantom +phonet +phram +phy-am335x +phy-am335x-control +phy-bcm-kona-usb2 +phy-berlin-sata +phy-berlin-usb +phy-dm816x-usb +phy-exynos5-usbdrd +phy-exynos-usb2 +phy-gpio-vbus-usb +phy-hix5hd2-sata +phy-isp1301 +phy-msm-usb +phy-omap-control +phy-omap-usb2 +phy-pxa-28nm-hsic +phy-pxa-28nm-usb2 +phy-qcom-apq8064-sata +phy-qcom-ipq806x-sata +phy-qcom-ufs +phy-qcom-ufs-qmp-14nm +phy-qcom-ufs-qmp-20nm +phy-rcar-gen2 +phy-rcar-usb +physmap +physmap_of +phy-tahvo +phy-ti-pipe3 +phy-tusb1210 +phy-twl4030-usb +phy-twl6030-usb +pinctrl-apq8064 +pinctrl-apq8084 +pinctrl-ipq8064 +pinctrl-msm8660 +pinctrl-msm8916 +pinctrl-msm8960 +pinctrl-msm8x74 +pinctrl-spmi-gpio +pinctrl-spmi-mpp +pixcir_i2c_ts +pkcs7_message +pkcs7_test_key +pktcdvd +pktgen +pl2303 +pl330 +platform_lcd +plat_nand +plat-ram +plip +plusb +pluto2 +plx_pci +pm2fb +pm3fb +pm80xx +pm8921-core +pm8941-pwrkey +pm8xxx-vibrator +pmbus +pmbus_core +pmc551 +pmcraid +pmic8xxx-keypad +pmic8xxx-pwrkey +pm-notifier-error-inject +pn533 +pn544 +pn544_i2c +pn_pep +poly1305_generic +port100 +powermate +powr1220 +ppa +ppdev +ppp_async +ppp_deflate +ppp_mppe +pppoatm +pppoe +pppox +ppp_synctty +pps-gpio +pps-ldisc +pps_parport +pptp +prism2_usb +ps2mult +ps8622 +psmouse +psnap +pt +ptlrpc +ptn3460 +pvrusb2 +pwc +pwm-atmel-hlcdc +pwm-beeper +pwm_bl +pwm-fan +pwm-fsl-ftm +pwm-lp3943 +pwm-pca9685 +pwm-regulator +pwm-renesas-tpu +pwm-samsung +pwm-twl +pwm-twl-led +pxa168_eth +pxa27x_udc +pxa3xx_nand +qcaspi +qcaux +qcom_bam_dma +qcom_gsbi +qcom_hwspinlock +qcom_rpm +qcom_rpm-regulator +qcom-spmi-iadc +qcom-spmi-pmic +qcom_spmi-regulator +qcom-spmi-temp-alarm +qcom-spmi-vadc +qcom-wdt +qcrypto +qcserial +qinfo_probe +qla1280 +qla2xxx +qla3xxx +qla4xxx +qlcnic +qlge +qm1d1c0042 +qmi_wwan +qnx4 +qnx6 +qoriq-cpufreq +qsemi +qt1010 +qt1070 +qt2160 +quatech2 +quota_tree +quota_v1 +quota_v2 +qxl +r128 +r592 +r6040 +r8152 +r8169 +r8188eu +r8192e_pci +r8192u_usb +r820t +r852 +r8712u +r8723au +r8a66597-hcd +r8a66597-udc +radeon +radeonfb +radio-bcm2048 +radio-i2c-si470x +radio-keene +radio-ma901 +radio-maxiradio +radio-mr800 +radio-platform-si4713 +radio-raremono +radio-shark +radio-si476x +radio-tea5764 +radio-usb-si470x +radio-usb-si4713 +radio-wl1273 +raid0 +raid1 +raid10 +raid456 +raid6_pq +raid6test +raid_class +ravb +raw +rbd +rbtree_test +rc5t583-regulator +rc-adstech-dvb-t-pci +rc-alink-dtu-m +rc-anysee +rc-apac-viewcomp +rcar_can +rcar-dmac +rcar-du-drm +rcar-hpbdma +rcar_thermal +rcar_vin +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-behold +rc-behold-columbus +rc-budget-ci-old +rc-cinergy +rc-cinergy-1400 +rc-core +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-dvbsky +rc-em-terratec +rc-encore-enltv +rc-encore-enltv2 +rc-encore-enltv-fm53 +rc-evga-indtube +rc-eztv +rc-flydvb +rc-flyvideo +rc-fusionhdtv-mce +rc-gadmei-rm008z +rc-genius-tvgo-a11mce +rc-gotview7135 +rc-hauppauge +rc-imon-mce +rc-imon-pad +rc-iodata-bctv7e +rc-it913x-v1 +rc-it913x-v2 +rc-kaiomy +rc-kworld-315u +rc-kworld-pc150u +rc-kworld-plus-tv-analog +rc-leadtek-y04g0051 +rc-lirc +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-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-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-twinhan1027 +rc-twinhan-dtv-cab-ci +rc-videomate-m1f +rc-videomate-s350 +rc-videomate-tv-pvr +rc-winfast +rc-winfast-usbii-deluxe +rdc321x-southbridge +rdma_cm +rdma_ucm +rds +rds_rdma +rds_tcp +realtek +redboot +redrat3 +regmap-spmi +regulator-haptic +reiserfs +remoteproc +renesas_usbhs +retu-mfd +retu-pwrbutton +retu_wdt +rfc1051 +rfc1201 +rfcomm +rfd_ftl +rfkill-gpio +rfkill-regulator +rio500 +rivafb +rj54n1cb0c +rk808 +rk808-regulator +rmd128 +rmd160 +rmd256 +rmd320 +rmobile-reset +rn5t618 +rn5t618-regulator +rn5t618_wdt +rndis_host +rndis_wlan +rocket +romfs +rose +rotary_encoder +rp2 +rpcrdma +rpcsec_gss_krb5 +rsa_generic +rsi_91x +rsi_sdio +rsi_usb +rsxx +rt2400pci +rt2500pci +rt2500usb +rt2800lib +rt2800mmio +rt2800pci +rt2800usb +rt2x00lib +rt2x00mmio +rt2x00pci +rt2x00usb +rt5033 +rt5033_battery +rt5033-regulator +rt61pci +rt73usb +rt9455_charger +rtc-88pm80x +rtc-88pm860x +rtc-ab3100 +rtc-ab-b5ze-s3 +rtc-abx80x +rtc-armada38x +rtc-as3722 +rtc-bq32k +rtc-bq4802 +rtc-cmos +rtc-da9052 +rtc-da9055 +rtc-da9063 +rtc-ds1286 +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-ds3234 +rtc-em3027 +rtc-fm3130 +rtc-hid-sensor-time +rtc-hym8563 +rtc-isl12022 +rtc-isl12057 +rtc-isl1208 +rtc-lp8788 +rtc-m41t80 +rtc-m41t93 +rtc-m41t94 +rtc-m48t35 +rtc-m48t59 +rtc-m48t86 +rtc-max6900 +rtc-max6902 +rtc-max77686 +rtc-max77802 +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-pcf8563 +rtc-pcf8583 +rtc-pl030 +rtc-pm8xxx +rtc-r9701 +rtc-rc5t583 +rtc-rk808 +rtc-rp5c01 +rtc-rs5c348 +rtc-rs5c372 +rtc-rv3029c2 +rtc-rx4581 +rtc-rx8025 +rtc-rx8581 +rtc-s35390a +rtc-s5m +rtc-snvs +rtc-stk17ta8 +rtc-tps6586x +rtc-tps65910 +rtc-tps80031 +rtc-v3020 +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 +rtl8723ae +rtl8723be +rtl8723-common +rtl8821ae +rtllib +rtllib_crypt_ccmp +rtllib_crypt_tkip +rtllib_crypt_wep +rtl_pci +rtl_usb +rtlwifi +rts5208 +rtsx_pci +rtsx_pci_ms +rtsx_pci_sdmmc +rtsx_usb +rtsx_usb_ms +rtsx_usb_sdmmc +rx51_battery +rxkad +s1d13xxxfb +s2250 +s2255drv +s2io +s2mpa01 +s2mps11 +s3c2410_wdt +s3c-fb +s3fb +s526 +s5h1409 +s5h1411 +s5h1420 +s5m8767 +s5p-g2d +s5p-hdmi +s5p-hdmiphy +s5p-jpeg +s5p-mfc +s5p-mixer +s5p-sdo +s5p-sii9234 +s5p-sss +s626 +s6e63m0 +s921 +saa6588 +saa6752hs +saa7115 +saa7127 +saa7134 +saa7134-alsa +saa7134-dvb +saa7134-empress +saa7134-go7007 +saa7146 +saa7146_vv +saa7164 +saa717x +saa7706h +safe_serial +salsa20_generic +samsung +samsung-keypad +samsung-sxgbe +sata_highbank +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 +savage +savagefb +sbp_target +sbs-battery +sc16is7xx +sc92031 +sca3000 +sch5627 +sch5636 +sch56xx-common +sch_atm +sch_cbq +sch_choke +sch_codel +sch_drr +sch_dsmark +sch_fq +sch_fq_codel +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_tbf +sch_teql +scsi_debug +scsi_dh +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_probe +sdhci-dove +sdhci_f_sdh30 +sdhci-msm +sdhci-of-arasan +sdhci-pci +sdhci-pxav3 +sdhci-s3c +sdio_uart +seed +sensorhub +seqiv +ser_gigaset +serial2002 +serio_raw +sermouse +serpent_generic +serport +ses +sfc +sha1-arm +sha1-arm-ce +sha1-arm-neon +sha256-arm +sha2-arm-ce +sha512-arm +shark2 +shdma +sh_eth +sh_flctl +sh_irda +sh_keysc +sh_mmcif +shmob-drm +sh_mobile_ceu_camera +sh_mobile_csi2 +sh_mobile_hdmi +sh_mobile_lcdcfb +sh_mobile_meram +sh_mobile_sdhi +sh-sci +sht15 +sht21 +shtc1 +sh_veu +sh_vou +si2157 +si2165 +si2168 +si21xx +si4713 +si476x-core +si7005 +si7020 +sidewinder +sierra +sierra_net +sil164 +sir-dev +sis190 +sis5595 +sis900 +sisfb +sisusbvga +sit +sja1000 +sja1000_isa +sja1000_platform +skfp +skge +sky2 +sky81452 +sky81452-backlight +sky81452-regulator +sl811-hcd +slcan +slip +slram +sm501fb +sm750fb +sm7xxfb +smb347-charger +smc911x +smc91x +sm_common +sm_ftl +smipcie +smm665 +smsc +smsc47b397 +smsc47m1 +smsc47m192 +smsc75xx +smsc911x +smsc9420 +smsc95xx +smscufx +smsdvb +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-firewire-lib +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-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-pcm-oss +snd-pcxhr +snd-portman2x4 +snd-pt2258 +snd-rawmidi +snd-riptide +snd-rme32 +snd-rme96 +snd-rme9652 +snd-scs1x +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-ac97 +snd-soc-adau1701 +snd-soc-ak4104 +snd-soc-ak4554 +snd-soc-ak4642 +snd-soc-ak5386 +snd-soc-alc5623 +snd-soc-apq8016-sbc +snd-soc-armada-370-db +snd-soc-arndale-rt5631 +snd-soc-cs35l32 +snd-soc-cs4265 +snd-soc-cs4270 +snd-soc-cs4271 +snd-soc-cs4271-i2c +snd-soc-cs4271-spi +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-davinci-mcasp +snd-soc-es8328 +snd-soc-fsi +snd-soc-fsl-asrc +snd-soc-fsl-esai +snd-soc-fsl-sai +snd-soc-fsl-spdif +snd-soc-fsl-ssi +snd-soc-i2s +snd-soc-idma +snd-soc-imx-audmux +snd-soc-kirkwood +snd-soc-lpass-apq8016 +snd-soc-lpass-cpu +snd-soc-lpass-ipq806x +snd-soc-lpass-platform +snd-soc-max98090 +snd-soc-max98095 +snd-soc-max98357a +snd-soc-odroidx2-max98090 +snd-soc-omap-hdmi-audio +snd-soc-pcm +snd-soc-pcm1681 +snd-soc-pcm1792a-codec +snd-soc-pcm512x +snd-soc-pcm512x-i2c +snd-soc-pcm512x-spi +snd-soc-rcar +snd-soc-rl6231 +snd-soc-rsrc-card +snd-soc-rt5631 +snd-soc-rt5645 +snd-soc-rt5677 +snd-soc-rt5677-spi +snd-soc-rx51 +snd-soc-s3c-dma +snd-soc-samsung-spdif +snd-soc-sgtl5000 +snd-soc-si476x +snd-soc-sigmadsp +snd-soc-sigmadsp-i2c +snd-soc-simple-card +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-ssm2602 +snd-soc-ssm2602-i2c +snd-soc-ssm2602-spi +snd-soc-ssm4567 +snd-soc-sta32x +snd-soc-sta350 +snd-soc-storm +snd-soc-tas2552 +snd-soc-tas5086 +snd-soc-tas571x +snd-soc-tfa9879 +snd-soc-tlv320aic23 +snd-soc-tlv320aic23-i2c +snd-soc-tlv320aic23-spi +snd-soc-tlv320aic31xx +snd-soc-tlv320aic3x +snd-soc-tpa6130a2 +snd-soc-ts3a227e +snd-soc-wm8510 +snd-soc-wm8523 +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-wm8804 +snd-soc-wm8804-i2c +snd-soc-wm8804-spi +snd-soc-wm8903 +snd-soc-wm8962 +snd-soc-wm8978 +snd-soc-wm8994 +snd-soc-wm-hubs +snd-soc-xtfpga-i2s +snd-sonicvibes +snd-trident +snd-ua101 +snd-usb-6fire +snd-usb-audio +snd-usb-caiaq +snd-usb-hiface +snd-usb-line6 +snd-usbmidi-lib +snd-usb-pod +snd-usb-podhd +snd-usb-toneport +snd-usb-variax +snd-util-mem +snd-via82xx +snd-via82xx-modem +snd-virmidi +snd-virtuoso +snd-vx222 +snd-vx-lib +snd-ymfpci +snic +soc_button_array +soc_camera +soc_camera_platform +soc_mediabus +soc_scale_crop +softdog +softing +solo6x10 +solos-pci +sony-btf-mpx +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-bitbang +spi-butterfly +spi-cadence +spidev +spi-dln2 +spi-dw +spi-dw-midpci +spi-dw-mmio +spi-gpio +spi_ks8995 +spi-lm70llp +spi-meson-spifc +spi-nor +spi-oc-tiny +spi-orion +spi-pl022 +spi-pxa2xx-pci +spi-pxa2xx-platform +spi-qup +spi-rockchip +spi-rspi +spi-s3c64xx +spi-sc18is602 +spi-sh-hspi +spi-sh-msiof +spi-ti-qspi +spi-tle62x0 +spi-xcomm +spi-zynqmp-gqspi +spmi +spmi-pmic-arb +squashfs +sr9700 +sr9800 +ssb +ssbi +ssd1307fb +ssfdc +ssp_accel_sensor +ssp_gyro_sensor +ssp_iio +sst25l +sstfb +ssu100 +st +st1232 +st21nfca_hci +st21nfca_i2c +st_accel +st_accel_i2c +st_accel_spi +starfire +st-asc +stb0899 +stb6000 +stb6100 +st_drv +ste10Xp +ste_modem_rproc +stex +st_gyro +st_gyro_i2c +st_gyro_spi +stinger +stir4200 +stk1160 +stk3310 +stk8312 +stk8ba50 +stkwebcam +stm32-usart +st_magn +st_magn_i2c +st_magn_spi +stmmac +stmmac-platform +stmpe-keypad +stmpe-ts +st-nci +st-nci_i2c +stowaway +stp +st_pressure +st_pressure_i2c +st_pressure_spi +streamzap +st_sensors +st_sensors_i2c +st_sensors_spi +stv0288 +stv0297 +stv0299 +stv0367 +stv0900 +stv090x +stv6110 +stv6110x +sudmac +sundance +sungem +sungem_phy +sunhme +suni +sunkbd +sunrpc +sur40 +svgalib +sx8 +sx8654 +sx9500 +sym53c8xx +symbolserial +synaptics_i2c +synaptics_i2c_rmi4 +synaptics_usb +synclink_gt +synclinkmp +syscopyarea +sysfillrect +sysimgblt +sysv +t1pci +t5403 +target_core_file +target_core_iblock +target_core_mod +target_core_pscsi +target_core_user +tc3589x-keypad +tc74 +tc90522 +tca6416-keypad +tca8418_keypad +tcm_fc +tcm_loop +tcm_qla2xxx +tcm_usb_gadget +tcp_bic +tcp_cdg +tcp_dctcp +tcp_diag +tcp_highspeed +tcp_htcp +tcp_hybla +tcp_illinois +tcp_lp +tcp_probe +tcp_scalable +tcp_vegas +tcp_veno +tcp_westwood +tcp_yeah +tcrypt +tcs3414 +tcs3472 +tda10021 +tda10023 +tda10048 +tda1004x +tda10071 +tda10086 +tda18212 +tda18218 +tda18271 +tda18271c2dd +tda665x +tda7432 +tda8083 +tda8261 +tda826x +tda827x +tda8290 +tda9840 +tda9887 +tda998x +tdfx +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 +tekram-sir +test_bpf +test_firmware +test-hexdump +test-kprobes +test-kstrtox +test_module +test_power +test-string_helpers +test_udelay +test_user_copy +tg3 +tgr192 +thmc50 +thunderbolt +ti-adc081c +ti-adc128s052 +ti_am335x_adc +ti_am335x_tsc +ti_am335x_tscadc +ti_dac7512 +tifm_7xx1 +tifm_core +tifm_ms +tifm_sd +ti_hecc +tilcdc +timeriomem-rng +tipc +ti-soc-thermal +ti_usb_3410_5052 +ti-vpe +tlan +tm6000 +tm6000-alsa +tm6000-dvb +tmdc +tmiofb +tmio_mmc +tmio_mmc_core +tmio_nand +tmp006 +tmp102 +tmp103 +tmp401 +tmp421 +toim3232-sir +torture +toshsd +touchit213 +touchright +touchwin +tpci200 +tpm_i2c_atmel +tpm_i2c_infineon +tpm_i2c_nuvoton +tpm-rng +tpm_st33zp24 +tpm_st33zp24_i2c +tpm_st33zp24_spi +tps40422 +tps51632-regulator +tps6105x +tps6105x-regulator +tps62360-regulator +tps65010 +tps65023-regulator +tps6507x +tps6507x-regulator +tps6507x-ts +tps65090-charger +tps65090-regulator +tps65217 +tps65217_bl +tps65217-regulator +tps65218 +tps65218-pwrbutton +tps65218-regulator +tps6524x-regulator +tps6586x-regulator +tps65910-regulator +tps65912-regulator +tps80031-regulator +trancevibrator +trf7970a +tridentfb +ts2020 +ts_bm +tsc2005 +tsc2007 +tsc40 +ts_fsm +ts_kmp +tsl2550 +tsl2563 +tsl2583 +tsl2x7x_core +tsl4531 +ttm +ttpci-eeprom +ttusb_dec +ttusbdecfe +ttusbir +tua6100 +tua9001 +tulip +tuner +tuner-simple +tuner-types +tuner-xc2028 +tunnel4 +tunnel6 +turbografx +tusb6010 +tvaudio +tveeprom +tvp5150 +tw2804 +tw68 +tw9903 +tw9906 +tw9910 +twidjoy +twl4030_charger +twl4030_keypad +twl4030-madc +twl4030_madc_battery +twl4030-madc-hwmon +twl4030-pwrbutton +twl4030-vibra +twl4030_wdt +twl6030-gpadc +twl6040-vibra +twl-regulator +twofish_common +twofish_generic +typhoon +u132-hcd +uas +ubi +ubifs +ucb1400_core +ucb1400_ts +ucd9000 +ucd9200 +uda1342 +udc-xilinx +udf +udl +udlfb +udp_diag +udp_tunnel +ueagle-atm +u_ether +ufs +ufshcd +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 +uli526x +ulpi +umc +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 +unioxx5 +unix_diag +upd64031a +upd64083 +usb3503 +usb_8dev +usb8xxx +usbatm +usb_debug +usb-dmac +usbdux +usbduxfast +usbduxsigma +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_uac1 +usb_f_uac2 +usb_f_uvc +usb_gigaset +usbhid +usbip-core +usbip-host +usbkbd +usblcd +usbled +usblp +usbmisc_imx +usbmon +usbmouse +usbnet +usbserial +usb-serial-simple +usbsevseg +usb-storage +usbtest +usbtmc +usbtouchscreen +usbtv +usbvision +usb_wwan +usdhi6rol0 +u_serial +userspace-consumer +ushc +uss720 +uvcvideo +uvesafb +uwb +v4l2-common +v4l2-dv-timings +v4l2-flash-led-class +v4l2-mem2mem +vcan +vcnl4000 +ves1820 +ves1x93 +veth +vexpress +vexpress-spc-cpufreq +vf610_adc +vfio +vfio-amba +vfio-pci +vfio-platform +vfio-platform-calxedaxgmac +vfio_virqfd +vgastate +vgem +vgg2432a4 +vhci-hcd +vhost +vhost_net +vhost_scsi +via +via686a +via-rhine +via-sdmmc +via-velocity +videobuf2-core +videobuf2-dma-contig +videobuf2-dma-sg +videobuf2-dvb +videobuf2-memops +videobuf2-vmalloc +videobuf-core +videobuf-dma-contig +videobuf-dma-sg +videobuf-dvb +videobuf-vmalloc +videodev +vim2m +viperboard +viperboard_adc +virtio-gpu +virtio_input +virtio-rng +virtio_scsi +virtual +visor +vitesse +vivid +vlsi_ir +vmac +vme_pio2 +vme_tsi148 +vme_user +vme_vmivme7805 +vmk80xx +vmwgfx +vmxnet3 +vp27smpx +vport-geneve +vport-gre +vport-vxlan +vringh +vsock +vsp1 +vsxxxaa +vt1211 +vt6655_stage +vt6656_stage +vt8231 +vt8623fb +vub300 +vx855 +vxge +vxlan +w1_bq27000 +w1_ds2406 +w1_ds2408 +w1_ds2413 +w1_ds2423 +w1_ds2431 +w1_ds2433 +w1_ds2760 +w1_ds2780 +w1_ds2781 +w1_ds28e04 +w1-gpio +w1_smem +w1_therm +w5100 +w5300 +w6692 +w83627ehf +w83627hf +w83781d +w83791d +w83792d +w83793 +w83795 +w83l785ts +w83l786ng +wacom +wacom_i2c +wacom_serial4 +wacom_w8001 +walkera0701 +wanxl +warrior +wcn36xx +wd719x +wdt87xx_i2c +wdt_pci +whci +whci-hcd +whc-rc +whiteheat +wil6210 +wimax +winbond-840 +wire +wishbone-serial +wl1251 +wl1251_sdio +wl1251_spi +wl1273-core +wl12xx +wl18xx +wlcore +wlcore_sdio +wlcore_spi +wm831x_backup +wm831x_bl +wm831x-dcdc +wm831x-hwmon +wm831x-isink +wm831x-ldo +wm831x-on +wm831x_power +wm831x-ts +wm831x_wdt +wm8350-hwmon +wm8350_power +wm8350-regulator +wm8350_wdt +wm8400-regulator +wm8739 +wm8775 +wm8994-core +wm8994-irq +wm8994-regmap +wm8994-regulator +wm97xx-ts +wp512 +wusb-cbaf +wusbcore +wusb-wa +x25 +x25_asy +xc4000 +xc5000 +xcbc +xfrm4_mode_beet +xfrm4_mode_transport +xfrm4_mode_tunnel +xfrm4_tunnel +xfrm6_mode_beet +xfrm6_mode_ro +xfrm6_mode_transport +xfrm6_mode_tunnel +xfrm6_tunnel +xfrm_algo +xfrm_ipcomp +xfrm_user +xfs +xgifb +xgmac +xhci-plat-hcd +xilinx-tpg +xilinx_uartps +xilinx-video +xilinx-vtc +xillybus_core +xillybus_of +xillybus_pcie +xor +xor-neon +xpad +xsens_mt +x_tables +xt_addrtype +xt_AUDIT +xt_bpf +xt_cgroup +xt_CHECKSUM +xt_CLASSIFY +xt_cluster +xt_comment +xt_connbytes +xt_connlabel +xt_connlimit +xt_connmark +xt_CONNSECMARK +xt_conntrack +xt_cpu +xt_CT +xt_dccp +xt_devgroup +xt_dscp +xt_DSCP +xt_ecn +xt_esp +xt_hashlimit +xt_helper +xt_hl +xt_HL +xt_HMARK +xt_IDLETIMER +xt_ipcomp +xt_iprange +xt_ipvs +xtkbd +xt_l2tp +xt_LED +xt_length +xt_limit +xt_LOG +xt_mac +xt_mark +xt_multiport +xt_nat +xt_NETMAP +xt_nfacct +xt_NFLOG +xt_NFQUEUE +xt_osf +xt_owner +xt_physdev +xt_pkttype +xt_policy +xt_quota +xt_rateest +xt_RATEEST +xt_realm +xt_recent +xt_REDIRECT +xts +xt_sctp +xt_SECMARK +xt_set +xt_socket +xt_state +xt_statistic +xt_string +xt_tcpmss +xt_TCPMSS +xt_TCPOPTSTRIP +xt_tcpudp +xt_TEE +xt_time +xt_TPROXY +xt_TRACE +xt_u32 +xusbatm +xz_dec_test +yam +yealink +yellowfin +yurex +zaurus +zd1201 +zd1211rw +zforce_ts +zhenhua +zl10036 +zl10039 +zl10353 +zl6100 +zlib +zr364xx +zram +zx296702-i2s +zx296702-spdif --- linux-raspi2-4.2.0.orig/debian.master/abi/4.2.0-26.31/armhf/generic.compiler +++ linux-raspi2-4.2.0/debian.master/abi/4.2.0-26.31/armhf/generic.compiler @@ -0,0 +1 @@ +GCC: (Ubuntu 5.2.1-22ubuntu2) 5.2.1 20151010 --- linux-raspi2-4.2.0.orig/debian.master/abi/4.2.0-26.31/armhf/generic.modules +++ linux-raspi2-4.2.0/debian.master/abi/4.2.0-26.31/armhf/generic.modules @@ -0,0 +1,4475 @@ +3w-9xxx +3w-sas +3w-xxxx +6lowpan +6pack +8021q +8139cp +8139too +8250_dw +8250_omap +8250_uniphier +8255 +8255_pci +8390 +842 +842_compress +842_decompress +88pm800 +88pm805 +88pm80x +88pm80x_onkey +88pm8607 +88pm860x_battery +88pm860x_bl +88pm860x_charger +88pm860x_onkey +88pm860x-ts +9p +9pnet +9pnet_rdma +9pnet_virtio +a100u2w +a3d +a8293 +aacraid +aat2870_bl +aat2870-regulator +ab3100 +ab3100-otp +ablk_helper +acard-ahci +acecad +acenic +act200l-sir +act8865-regulator +act_bpf +act_connmark +act_csum +act_gact +act_ipt +actisys-sir +act_mirred +act_nat +act_pedit +act_police +act_simple +act_skbedit +act_vlan +ad2s1200 +ad2s1210 +ad2s90 +ad5064 +ad525x_dpot +ad525x_dpot-i2c +ad525x_dpot-spi +ad5360 +ad5380 +ad5398 +ad5421 +ad5446 +ad5449 +ad5504 +ad5624r_spi +ad5686 +ad5755 +ad5764 +ad5791 +ad5933 +ad714x +ad714x-i2c +ad714x-spi +ad7150 +ad7152 +ad7192 +ad7266 +ad7280a +ad7291 +ad7298 +ad7303 +ad7314 +ad7414 +ad7418 +ad7476 +ad7606 +ad7746 +ad7780 +ad7791 +ad7793 +ad7816 +ad7877 +ad7879 +ad7879-i2c +ad7879-spi +ad7887 +ad7923 +ad799x +ad8366 +ad9523 +ad9832 +ad9834 +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 +ade7753 +ade7754 +ade7758 +ade7759 +ade7854 +ade7854-i2c +ade7854-spi +adf4350 +adfs +adi +adis16060 +adis16080 +adis16130 +adis16136 +adis16201 +adis16203 +adis16204 +adis16209 +adis16220 +adis16240 +adis16260 +adis16400 +adis16480 +adis_lib +adjd_s311 +adl_pci6208 +adl_pci7x3x +adl_pci8164 +adl_pci9111 +adl_pci9118 +adm1021 +adm1025 +adm1026 +adm1029 +adm1031 +adm1275 +adm8211 +adm9240 +adp5520_bl +adp5520-keys +adp5588-keys +adp5589-keys +adp8860_bl +adp8870_bl +adq12b +ads1015 +ads7828 +ads7846 +ads7871 +ad_sigma_delta +adt7310 +adt7316 +adt7316-i2c +adt7316-spi +adt7410 +adt7411 +adt7462 +adt7470 +adt7475 +adt7x10 +adummy +adutux +adv7511 +adv7604 +adv7842 +advansys +adv_pci1710 +adv_pci1723 +adv_pci1724 +adv_pci_dio +adxl34x +adxl34x-i2c +adxl34x-spi +adxrs450 +aes-arm +aes-arm-bs +aes-arm-ce +af9013 +af9033 +af_alg +affs +af_key +af_packet_diag +af-rxrpc +afs +ah4 +ah6 +ahci +ahci_ceva +ahci_mvebu +ahci_tegra +aic79xx +aic7xxx +aic94xx +aio_aio12_8 +aio_iiro_16 +aiptek +aircable +airspy +ak8975 +al3320a +algif_aead +algif_hash +algif_rng +algif_skcipher +alim7101_wdt +altera-ci +altera_jtaguart +altera_ps2 +altera-stapl +altera_tse +altera_uart +alx +am35x +am53c974 +ambakmi +amba-pl010 +amc6821 +amd +amd5536udc +amd8111e +amdgpu +amplc_dio200 +amplc_dio200_common +amplc_dio200_pci +amplc_pc236 +amplc_pc236_common +amplc_pc263 +amplc_pci224 +amplc_pci230 +amplc_pci236 +amplc_pci263 +ams369fg06 +analog +anatop-regulator +ansi_cprng +anubis +aoe +apbps2 +apds9300 +apds9802als +apds990x +appledisplay +appletalk +appletouch +applicom +ar1021_i2c +ar5523 +ar7part +arc4 +arc_emac +arcmsr +arcnet +arc_ps2 +arc-rawmode +arc-rimi +arc_uart +arizona-haptics +arizona-i2c +arizona-ldo1 +arizona-micsupp +arizona-spi +ark3116 +arkfb +armada +arm_big_little +arm_big_little_dt +arm-exynos-cpufreq +arm_mhu +arptable_filter +arp_tables +arpt_mangle +as102_fe +as3711_bl +as3711-regulator +as3722-regulator +as3935 +as5011 +asc7621 +asix +ast +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 +ath3k +ath5k +ath6kl_core +ath6kl_sdio +ath6kl_usb +ath9k +ath9k_common +ath9k_htc +ath9k_hw +ati_remote +ati_remote2 +atl1 +atl1c +atl1e +atl2 +atm +atmel +atmel-hlcdc +atmel-hlcdc-dc +atmel_mxt_ts +atmel_pci +atmtcp +atp870u +atusb +atxp1 +aty128fb +atyfb +au0828 +au8522_common +au8522_decoder +au8522_dig +aufs +auo_k1900fb +auo_k1901fb +auo_k190x +auo-pixcir-ts +authenc +authencesn +auth_rpcgss +autofs4 +avmfritz +ax25 +ax88179_178a +ax88796 +axp20x-pek +axp20x-regulator +axp288_adc +axp288_charger +axp288_fuel_gauge +b1 +b1dma +b1pci +b2c2-flexcop +b2c2-flexcop-pci +b2c2-flexcop-usb +b43 +b43legacy +b44 +bas_gigaset +batman-adv +baycom_epp +baycom_par +baycom_ser_fdx +baycom_ser_hdx +bcache +bcm203x +bcm3510 +bcm590xx +bcm590xx-regulator +bcm5974 +bcm63138_nand +bcm63xx_uart +bcm7xxx +bcm87xx +bcma +bcm-keypad +bcmsysport +bd6107 +bdc +bdc_pci +be2iscsi +be2net +befs +belkin_sa +berlin2-adc +bfa +bfs +bfusb +bh1750 +bh1770glc +bh1780gli +binfmt_misc +block2mtd +blocklayoutdriver +blowfish_common +blowfish_generic +bL_switcher_dummy_if +bluetooth +bluetooth_6lowpan +bma150 +bma180 +bmc150-accel +bmc150_magn +bmg160 +bmp085-i2c +bmp085-spi +bmp280 +bna +bnep +bnx2 +bnx2fc +bnx2i +bnx2x +bonding +bpa10x +bpck +bpck6 +bpqether +bq2415x_charger +bq24190_charger +bq24257_charger +bq24735-charger +bq25890_charger +bq27x00_battery +br2684 +brcmfmac +brcmnand +brcmsmac +brcmstb_nand +brcmutil +bridge +br_netfilter +broadcom +broadsheetfb +bsd_comp +bt878 +btbcm +btcoexist +btintel +btmrvl +btmrvl_sdio +btrfs +btrtl +btsdio +bttv +btusb +btwilink +bu21013_ts +budget +budget-av +budget-ci +budget-core +budget-patch +c4 +c67x00 +c6xdigio +cachefiles +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-raw +cap11xx +capi +capidrv +capmode +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 +c_can +c_can_pci +c_can_platform +cciss +ccm +cdc-acm +cdc_eem +cdc_ether +cdc_mbim +cdc_ncm +cdc-phonet +cdc_subset +cdc-wdm +ceph +cfg80211 +cfi_cmdset_0001 +cfi_cmdset_0002 +cfi_cmdset_0020 +cfi_probe +cfi_util +cfspi_slave +ch +ch341 +ch7006 +chacha20_generic +chacha20poly1305 +chaoskey +chipone_icn8318 +chnl_net +cicada +cifs +ci_hdrc +ci_hdrc_imx +ci_hdrc_msm +ci_hdrc_pci +ci_hdrc_usb2 +ci_hdrc_zevio +cirrus +cirrusfb +clip +clk-cdce706 +clk-cdce925 +clk-max77686 +clk-max77802 +clk-palmas +clk-pwm +clk-qcom +clk-rk808 +clk-s2mps11 +clk-si5351 +clk-si570 +clk-twl6040 +clk-wm831x +cls_basic +cls_bpf +cls_cgroup +cls_flow +cls_flower +cls_fw +cls_route +cls_rsvp +cls_rsvp6 +cls_tcindex +cls_u32 +cm109 +cm32181 +cm3232 +cm3323 +cm36651 +cma3000_d0x +cma3000_d0x_i2c +cmac +cmtp +cmt_speech +cnic +cobalt +cobra +coda +com20020 +com20020-pci +com90io +com90xx +comedi +comedi_8254 +comedi_8255 +comedi_bond +comedi_parport +comedi_pci +comedi_test +comedi_usb +comm +configfs +connector-analog-tv +connector-dvi +contec_pci_dio +cordic +core +cp210x +cpia2 +cppi41 +cpu-notifier-error-inject +cramfs +crc32 +crc7 +crc8 +crc-ccitt +crc-itu-t +cros_ec +cros_ec_devs +cros_ec_i2c +cros_ec_keyb +cros_ec_spi +cryptd +cryptoloop +crypto_null +crypto_user +cs5345 +cs53l32a +cs89x0 +csiostor +ctr +cts +cuse +cw1200_core +cw1200_wlan_sdio +cw1200_wlan_spi +cx18 +cx18-alsa +cx22700 +cx22702 +cx231xx +cx231xx-alsa +cx231xx-dvb +cx2341x +cx23885 +cx24110 +cx24113 +cx24116 +cx24117 +cx24120 +cx24123 +cx25821 +cx25821-alsa +cx25840 +cx82310_eth +cx8800 +cx8802 +cx88-alsa +cx88-blackbird +cx88-dvb +cx88-vp3054-i2c +cx88xx +cxacru +cxd2099 +cxd2820r +cxgb +cxgb3 +cxgb3i +cxgb4 +cxgb4i +cxgb4vf +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 +da8xx-fb +da9030_battery +da9034-ts +da903x +da903x_bl +da9052-battery +da9052_bl +da9052-hwmon +da9052_onkey +da9052-regulator +da9052_tsi +da9052_wdt +da9055-hwmon +da9055_onkey +da9055-regulator +da9055_wdt +da9063_onkey +da9063-regulator +da9063_wdt +da9150-charger +da9150-core +da9150-gpadc +da9210-regulator +da9211-regulator +dac02 +DAC960 +daqboard2000 +das08 +das08_isa +das08_pci +das16 +das16m1 +das1800 +das6402 +das800 +davicom +davinci_emac +db9 +dc395x +dccp +dccp_diag +dccp_ipv4 +dccp_ipv6 +dccp_probe +ddbridge +de2104x +decnet +deflate +defxx +denali +denali_dt +denali_pci +des_generic +designware_i2s +dgap +dgnc +dht11 +dib0070 +dib0090 +dib3000mb +dib3000mc +dib7000m +dib7000p +dib8000 +dibx000_common +digi_acceleport +digicolor-usart +diskonchip +divacapi +divadidd +diva_idi +diva_mnt +divas +dl2k +dlci +dlm +dln2 +dm1105 +dm9000 +dm9601 +dm-bio-prison +dm-bufio +dm-cache +dm-cache-cleaner +dm-cache-mq +dm-cache-smq +dm-crypt +dm-delay +dme1737 +dm-era +dmfe +dm-flakey +dm-log +dm-log-userspace +dm-log-writes +dmm32at +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-verity +dmx3191d +dm-zero +dnet +dn_rtmsg +docg3 +docg4 +dove_thermal +dp83867 +drbd +drbg +drm +drm_kms_helper +drv260x +drv2665 +drv2667 +drx39xyj +drxd +drxk +ds1621 +ds1682 +ds1wm +ds2482 +ds2490 +ds2760_battery +ds2780_battery +ds2781_battery +ds2782_battery +ds3000 +ds620 +dsbr100 +dscc4 +dss1_divert +dst +dst_ca +dstr +dt2801 +dt2811 +dt2814 +dt2815 +dt2817 +dt282x +dt3000 +dt3155 +dt9812 +dummy +dummy-irq +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-digitv +dvb-usb-dtt200u +dvb-usb-dtv5100 +dvb-usb-dvbsky +dvb-usb-dw2102 +dvb-usb-ec168 +dvb-usb-friio +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_v2 +dvb-usb-vp702x +dvb-usb-vp7045 +dwc3 +dwc3-exynos +dwc3-omap +dwc3-pci +dwc3-qcom +dw_dmac +dw_dmac_core +dw_dmac_pci +dw_hdmi +dw_hdmi-imx +dwmac-generic +dwmac-ipq806x +dwmac-lpc18xx +dwmac-meson +dwmac-rk +dwmac-socfpga +dwmac-sti +dwmac-sunxi +dw_mmc +dw_mmc-exynos +dw_mmc-k3 +dw_mmc-pci +dw_mmc-pltfm +dw_wdt +dyna_pci10xx +dynapro +e100 +e1000 +e1000e +e3x0-button +e4000 +earth-pt1 +earth-pt3 +ebt_802_3 +ebtable_broute +ebtable_filter +ebtable_nat +ebtables +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 +ec100 +echainiv +echo +edac_core +edt-ft5x06 +eeprom +eeprom_93cx6 +eeprom_93xx46 +eeti_ts +efs +egalax_ts +ehci-msm +ehci-mxc +ehci-omap +ehci-tegra +ehset +elan_i2c +elants_i2c +elo +em28xx +em28xx-alsa +em28xx-dvb +em28xx-rc +em28xx-v4l +emac_arc +emac_rockchip +emc1403 +emc2103 +emc6w201 +em_canid +em_cmp +emi26 +emi62 +emif +em_ipset +em_meta +em_nbyte +empeg +ems_pci +ems_usb +em_text +emu10k1-gp +em_u32 +enc28j60 +enclosure +encoder-opa362 +encoder-tfp410 +eni +enic +epat +epia +epic100 +eql +esas2r +esd_usb2 +esi-sir +esp4 +esp6 +esp_scsi +et1011c +et131x +ethoc +evbug +exofs +extcon-adc-jack +extcon-arizona +extcon-axp288 +extcon-gpio +extcon-max14577 +extcon-max77693 +extcon-max77843 +extcon-max8997 +extcon-palmas +extcon-rt8973a +extcon-sm5502 +extcon-usb-gpio +exynos_adc +exynosdrm +exynos-gsc +exynos-rng +ezusb +f2fs +f71805f +f71882fg +f75375s +f81232 +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_ssd1289 +fb_ssd1306 +fb_ssd1331 +fb_ssd1351 +fb_st7735r +fb_sys_fops +fbtft +fbtft_device +fb_tinylcd +fb_tls8204 +fb_uc1701 +fb_upd161704 +fb_watterott +fc0011 +fc0012 +fc0013 +fc2580 +fcoe +fcrypt +fdomain +fealnx +ff-memless +fid +firedtv +firewire-core +firewire-net +firewire-ohci +firewire-sbp2 +firewire-serial +fit2 +fit3 +fl512 +fld +flexcan +flexfb +fm10k +fm801-gp +fmc +fmc-chardev +fmc-fakedev +fmc-trivial +fmc-write-eeprom +fm_drv +forcedeth +fore_200e +fotg210-hcd +fotg210-udc +fou +freevxfs +friq +frpw +fsa9480 +fscache +fsl-edma +fsl_lpuart +fsl-mph-dr-of +fsl_pq_mdio +fsl-quadspi +fsl_usb2_udc +ft1000 +ftdi-elan +ftdi_sio +ftgmac100 +ftl +ftmac100 +fujitsu_ts +fusb300_udc +fusbh200-hcd +g450_pll +g760a +g762 +g_acm_ms +gadgetfs +gamecon +gameport +garmin_gps +garp +g_audio +gcc-apq8084 +gcc-ipq806x +gcc-msm8660 +gcc-msm8916 +gcc-msm8960 +gcc-msm8974 +g_cdc +gcm +g_dbgp +gdmtty +gdmulte +gdmwm +generic +generic-adc-battery +generic_bl +genet +geneve +geneve_core +gen_probe +g_ether +gf128mul +gf2k +g_ffs +gfs2 +ghash-arm-ce +ghash-generic +g_hid +gianfar_driver +gianfar_ptp +gigaset +girbil-sir +gl518sm +gl520sm +gl620a +gluebi +g_mass_storage +g_midi +g_multi +g_ncm +g_nokia +go7007 +go7007-loader +go7007-usb +goku_udc +goodix +gp2ap002a00f +gp2ap020a00f +gpio +gpio-74x164 +gpio-74xx-mmio +gpio-addr-flash +gpio-adnp +gpio-adp5520 +gpio-adp5588 +gpio-altera +gpio-amd8111 +gpio-arizona +gpio_backlight +gpio-beeper +gpio-charger +gpio-crystalcove +gpio-da9052 +gpio-da9055 +gpio-dln2 +gpio-dwapb +gpio-fan +gpio-grgpio +gpio-ir-recv +gpio-janz-ttl +gpio-kempld +gpio_keys +gpio_keys_polled +gpio-lp3943 +gpio-max7300 +gpio-max7301 +gpio-max730x +gpio-max732x +gpio-mc33880 +gpio-mcp23s08 +gpio-ml-ioh +gpio_mouse +gpio-msm-v2 +gpio-pca953x +gpio-pcf857x +gpio-rcar +gpio-rdc321x +gpio-regulator +gpio-sch311x +gpio-syscon +gpio_tilt_polled +gpio-tps65912 +gpio-ucb1400 +gpio-viperboard +gpio-vx855 +gpio_wdt +gpio-wm831x +gpio-wm8350 +gpio-wm8994 +gpmi_nand +g_printer +grace +grcan +gre +grip +grip_mp +gr_udc +gsc_hpdi +g_serial +gs_fpga +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 +gs_usb +gtco +guillemot +gunze +g_webcam +g_zero +hackrf +hamachi +hampshire +hanwang +hci +hci_uart +hci_vhci +hdlc +hdlc_cisco +hdlcdrv +hdlc_fr +hdlc_ppp +hdlc_raw +hdlc_raw_eth +hdlc_x25 +hdpvr +he +hexium_gemini +hexium_orion +hfc4s8s_l1 +hfcmulti +hfcpci +hfcsusb +hfc_usb +hfs +hfsplus +hi6421-pmic-core +hi6421-regulator +hid +hid-a4tech +hid-apple +hid-appleir +hid-aureal +hid-axff +hid-belkin +hid-betopff +hid-cherry +hid-chicony +hid-cp2112 +hid-cypress +hid-dr +hid-elecom +hid-elo +hid-emsff +hid-ezkey +hid-gaff +hid-generic +hid-gt683r +hid-gyration +hid-holtekff +hid-holtek-kbd +hid-holtek-mouse +hid-icade +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 +hidp +hid-penmount +hid-petalynx +hid-picolcd +hid-pl +hid-plantronics +hid-primax +hid-prodikeys +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-iio-common +hid-sensor-incl-3d +hid-sensor-magn-3d +hid-sensor-press +hid-sensor-prox +hid-sensor-rotation +hid-sensor-trigger +hid-sjoy +hid-sony +hid-speedlink +hid-steelseries +hid-sunplus +hid-thingm +hid-tivo +hid-tmff +hid-topseed +hid-twinhan +hid-uclogic +hid-waltop +hid-wiimote +hid-xinmo +hid-zpff +hid-zydacron +hifn_795x +highbank-cpufreq +highbank_l2_edac +highbank_mc_edac +hih6130 +hip04_eth +hip04_mdio +hisax +hisax_fcpcipnp +hisax_isac +hisax_st5481 +hisi504_nand +hisi-acpu-cpufreq +hisi_thermal +hix5hd2_gmac +hmc5843_core +hmc5843_i2c +hmc5843_spi +hmc6352 +hopper +host1x +hostap +hostap_pci +hostap_plx +hp100 +hpfs +hpilo +hpsa +hptiop +hsi +hsi_char +hso +hsr +hsu_dma +hsu_dma_pci +htc-pasic3 +htu21 +huawei_cdc_ncm +hwa-hc +hwa-rc +hwmon-vid +hwspinlock_core +hx8357 +hysdn +i1480-dfu-usb +i1480-est +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-cros-ec-tunnel +i2c-designware-core +i2c-designware-pci +i2c-designware-platform +i2c-diolan-u2c +i2c-dln2 +i2c-exynos5 +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-pca9541 +i2c-mux-pca954x +i2c-mux-pinctrl +i2c-mv64xxx +i2c-nforce2 +i2c-nomadik +i2c-ocores +i2c-parport +i2c-parport-light +i2c-pca-platform +i2c-piix4 +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-tiny-usb +i2c-versatile +i2c-via +i2c-viapro +i2c-viperboard +i2c-xiic +i40e +i40evf +i5k_amb +i6300esb +i740fb +ib_addr +ib_cm +ib_core +ib_ipoib +ib_iser +ib_isert +ib_mad +ibmaem +ibmpex +ib_mthca +ib_sa +ib_srp +ib_srpt +ib_ucm +ib_umad +ib_uverbs +icplus +icp_multi +ics932s401 +idma64 +idmouse +idt77252 +ieee802154 +ieee802154_6lowpan +ieee802154_socket +ifb +iforce +igb +igbvf +igorplugusb +iguanair +iio_dummy +iio_hwmon +iio-trig-interrupt +iio-trig-periodic-rtc +iio-trig-sysfs +ii_pci20kc +ili210x +ili922x +ili9320 +imm +imon +impa7 +ims-pcu +imx074 +imx21-hcd +imx2_wdt +imx6q-cpufreq +imx-dma +imxdrm +imxfb +imx-ipu-v3 +imx-ipuv3-crtc +imx_keypad +imx-ldb +imx-sdma +imx_thermal +imx-tve +ina209 +ina2xx +industrialio +industrialio-triggered-buffer +inet_diag +inexio +inftl +initio +input-leds +input-polldev +int51x1 +intel_vr_nor +interact +interval_tree_test +inv-mpu6050 +ioc4 +io_edgeport +io_ti +iowarrior +ip6_gre +ip6table_filter +ip6table_mangle +ip6table_nat +ip6table_raw +ip6_tables +ip6table_security +ip6t_ah +ip6t_eui64 +ip6t_frag +ip6t_hbh +ip6t_ipv6header +ip6t_MASQUERADE +ip6t_mh +ip6t_NPT +ip6t_REJECT +ip6t_rpfilter +ip6t_rt +ip6t_SYNPROXY +ip6_tunnel +ip6_udp_tunnel +ip6_vti +ipack +ipaq +ipcomp +ipcomp6 +ipddp +ipg +ip_gre +iphase +ipheth +ipip +ipmi_devintf +ipmi_msghandler +ipmi_poweroff +ipmi_si +ipmi_ssif +ipmi_watchdog +ipoctal +ipr +iproc_nand +ips +ip_set +ip_set_bitmap_ip +ip_set_bitmap_ipmac +ip_set_bitmap_port +ip_set_hash_ip +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 +iptable_filter +iptable_mangle +iptable_nat +iptable_raw +ip_tables +iptable_security +ipt_ah +ipt_CLUSTERIP +ipt_ECN +ipt_MASQUERADE +ipt_REJECT +ipt_rpfilter +ipt_SYNPROXY +ip_tunnel +ipvlan +ip_vs +ip_vs_dh +ip_vs_fo +ip_vs_ftp +ip_vs_lblc +ip_vs_lblcr +ip_vs_lc +ip_vs_nq +ip_vs_pe_sip +ip_vs_rr +ip_vs_sed +ip_vs_sh +ip_vs_wlc +ip_vs_wrr +ip_vti +ipw +ipw2100 +ipw2200 +ipx +ircomm +ircomm-tty +irda +irda-usb +ir-hix5hd2 +ir-jvc-decoder +ir-kbd-i2c +irlan +ir-lirc-codec +ir-mce_kbd-decoder +ir-nec-decoder +irnet +ir-rc5-decoder +ir-rc6-decoder +ir-sanyo-decoder +ir-sharp-decoder +ir-sony-decoder +irtty-sir +ir-usb +ir-xmp-decoder +iscsi_boot_sysfs +iscsi_target_mod +iscsi_tcp +isdn +isdn_bsdcomp +isdnhdlc +isicom +isight_firmware +isl29003 +isl29018 +isl29020 +isl29028 +isl29125 +isl6271a-regulator +isl6405 +isl6421 +isl6423 +isl9305 +isofs +isp116x-hcd +isp1362-hcd +isp1704_charger +isp1760 +it87 +it913x +itd1000 +itg3200 +iuu_phoenix +ivtv +ivtv-alsa +ivtvfb +iw_c2 +iw_cm +iw_cxgb3 +iw_cxgb4 +iwl3945 +iwl4965 +iwldvm +iwlegacy +iwlmvm +iwlwifi +iw_nes +ix2505v +ixgb +ixgbe +ixgbevf +janz-cmodio +janz-ican3 +jc42 +jedec_probe +jffs2 +jfs +jitterentropy_rng +jmb38x_ms +jme +joydev +joydump +jr3_pci +jsa1212 +jsm +k3dma +kafs +kalmia +kaweth +kbic +kbtab +kcomedilib +ke_counter +kempld-core +kempld_wdt +kernelcapi +keyspan +keyspan_pda +keyspan_remote +kfifo_buf +khazad +kingsun-sir +kl5kusb105 +kmx61 +ko2iblnd +kobil_sct +ks0108 +ks8842 +ks8851 +ks8851_mll +ks959-sir +ksdazzle-sir +ksocklnd +ksz884x +ktti +kvaser_pci +kvaser_usb +kxcjk-1013 +kxsd9 +kxtj9 +kyrofb +l1oip +l2tp_core +l2tp_debugfs +l2tp_eth +l2tp_ip +l2tp_ip6 +l2tp_netlink +l2tp_ppp +l4f00242t03 +l64781 +lanai +lapb +lapbether +latch-addr-flash +lattice-ecp3-config +lcc-ipq806x +lcc-msm8960 +lcd +ld9040 +ldusb +lec +led-class-flash +leds-88pm860x +leds-aat1290 +leds-adp5520 +leds-bcm6328 +leds-bcm6358 +leds-bd2802 +leds-blinkm +leds-da903x +leds-da9052 +leds-dac124s085 +leds-gpio +leds-ktd2692 +leds-lm3530 +leds-lm3533 +leds-lm355x +leds-lm3642 +leds-lp3944 +leds-lp8788 +leds-lp8860 +leds-lt3593 +leds-max77693 +leds-max8997 +leds-mc13783 +leds-menf21bmc +leds-pca9532 +leds-pca955x +leds-pca963x +leds-pm8941-wled +leds-pwm +leds-regulator +leds-tca6507 +leds-tlc591xx +leds-wm831x-status +leds-wm8350 +ledtrig-backlight +ledtrig-camera +ledtrig-default-on +ledtrig-gpio +ledtrig-oneshot +ledtrig-timer +ledtrig-transient +legousbtower +lg2160 +lgdt3305 +lgdt3306a +lgdt330x +lgs8gxx +lg-vl600 +lib80211 +lib80211_crypt_ccmp +lib80211_crypt_tkip +lib80211_crypt_wep +libceph +libcfs +libcomposite +libcrc32c +libcxgbi +libertas +libertas_sdio +libertas_spi +libertas_tf +libertas_tf_usb +libfc +libfcoe +libipw +libiscsi +libiscsi_tcp +libore +libosd +libsas +lightning +lineage-pem +linear +lirc_bt829 +lirc_dev +lirc_imon +lirc_parallel +lirc_sasem +lirc_serial +lirc_sir +lirc_zilog +lis3l02dq +lis3lv02d +lis3lv02d_i2c +lis3lv02d_spi +litelink-sir +lkkbd +llc +llc2 +llite_lloop +lm25066 +lm3533-als +lm3533_bl +lm3533-core +lm3533-ctrlbank +lm3630a_bl +lm3639_bl +lm63 +lm70 +lm73 +lm75 +lm77 +lm78 +lm80 +lm83 +lm8323 +lm8333 +lm85 +lm87 +lm90 +lm92 +lm93 +lm95234 +lm95241 +lm95245 +lms283gf05 +lms501kf03 +lmv +lnbp21 +lnbp22 +lnet +lnet_selftest +lockd +locktorture +lov +lp +lp3943 +lp3971 +lp3972 +lp855x_bl +lp8727_charger +lp872x +lp8755 +lp8788_adc +lp8788_bl +lp8788-buck +lp8788-charger +lp8788-ldo +lpc_ich +lpc_sch +lpddr2_nvm +lpddr_cmds +lpfc +lru_cache +lrw +ltc2941-battery-gauge +ltc2945 +ltc2978 +ltc3589 +ltc4151 +ltc4215 +ltc4222 +ltc4245 +ltc4260 +ltc4261 +ltr501 +ltv350qv +lustre +lv5207lp +lvstest +lxt +lz4 +lz4_compress +lz4hc +lz4hc_compress +m25p80 +m2m-deinterlace +m52790 +m62332 +m88ds3103 +m88rs2000 +m88rs6000t +ma600-sir +mac80211 +mac80211_hwsim +mac802154 +macb +mac-celtic +mac-centeuro +mac-croatian +mac-cyrillic +mac-gaelic +mac-greek +mac-iceland +mac-inuit +macmodes +mac-roman +mac-romanian +mac-turkish +macvlan +macvtap +mag3110 +magellan +mailbox-altera +mantis +mantis_core +map_absent +map_ram +map_rom +marvell +marvell-cesa +matrix-keymap +matrix_keypad +matroxfb_accel +matroxfb_base +matroxfb_crtc2 +matroxfb_DAC1064 +matroxfb_g450 +matroxfb_maven +matroxfb_misc +matroxfb_Ti3026 +matrox_w1 +max1027 +max1111 +max11801_ts +max1363 +max14577 +max14577_charger +max1586 +max16064 +max16065 +max1619 +max1668 +max17040_battery +max17042_battery +max197 +max2165 +max3100 +max3421-hcd +max34440 +max517 +max5821 +max63xx_wdt +max6639 +max6642 +max6650 +max6697 +max6875 +max7359_keypad +max77686 +max77693 +max77693_charger +max77693-haptic +max77802 +max77843 +max77843-haptic +max8649 +max8660 +max8688 +max8903_charger +max8907 +max8907-regulator +max8925_bl +max8925_onkey +max8925_power +max8925-regulator +max8952 +max8973-regulator +max8997 +max8997_charger +max8997_haptic +max8998 +max8998_charger +mb862xxfb +mb86a16 +mb86a20s +mc13783-adc +mc13783-pwrbutton +mc13783-regulator +mc13783_ts +mc13892-regulator +mc13xxx-core +mc13xxx-i2c +mc13xxx-regulator-core +mc13xxx-spi +mc44s803 +m_can +mcb +mcb-pci +mceusb +mcp2120-sir +mcp251x +mcp3021 +mcp320x +mcp3422 +mcp4725 +mcp4922 +mcryptd +mcs5000_ts +mcs7780 +mcs7830 +mcs_touchkey +mct_u232 +md4 +mdc +mdc800 +md-cluster +mdio +mdio-bcm-unimac +mdio-bitbang +mdio-gpio +mdio-mux +mdio-mux-gpio +mdio-mux-mmioreg +me4000 +me_daq +media +megaraid +megaraid_mbox +megaraid_mm +megaraid_sas +memstick +mena21_wdt +menf21bmc +menf21bmc_hwmon +menf21bmc_wdt +men_z135_uart +men_z188_adc +meson-ir +meson_uart +meson_wdt +metronomefb +metro-usb +mf6x4 +mga +mgc +mg_disk +michael_mic +micrel +microread +microread_i2c +microtek +mii +minix +mip6 +mISDN_core +mISDN_dsp +mISDNinfineon +mISDNipac +mISDNisar +mite +mk712 +mkiss +mlx4_core +mlx4_en +mlx4_ib +mlx5_core +mlx5_ib +mlx90614 +mma8450 +mma8452 +mma9551 +mma9551_core +mma9553 +mmc35240 +mmcc-apq8084 +mmcc-msm8960 +mmcc-msm8974 +mmci_qcom_dml +mms114 +mn88472 +mn88473 +mos7720 +mos7840 +moxa +mpc624 +mpl115 +mpl3115 +mpls_gso +mpls_router +mpoa +mpr121_touchkey +mpt2sas +mpt3sas +mptbase +mptctl +mptfc +mptlan +mptsas +mptscsih +mptspi +mpu3050 +mrf24j40 +mrp +ms5611_core +ms5611_i2c +ms5611_spi +ms_block +msdos +msi001 +msi2500 +msm +msm-rng +msp3400 +mspro_block +mt2060 +mt2063 +mt20xx +mt2131 +mt2266 +mt29f_spinand +mt312 +mt352 +mt6397-core +mt6397-regulator +mt7601u +mt8173-max98090 +mt8173-rt5650-rt5676 +mt9m001 +mt9m111 +mt9t031 +mt9t112 +mt9v011 +mt9v022 +mtd_dataflash +mtdoops +mtdram +mtdswap +mtip32xx +mtk-afe-pcm +mtk-pmic-wrap +mtk-sd +mtk_wdt +mtouch +multipath +multiq3 +musb_am335x +musb_dsps +mv643xx_eth +mv_cesa +mvmdio +mvneta +mvpp2 +mvsas +mvsdio +mv_u3d_core +mv_udc +mvumi +mwifiex +mwifiex_pcie +mwifiex_sdio +mwifiex_usb +mwl8k +mx3_camera +mxb +mxcmmc +mxc_nand +mxc_w1 +mxl111sf-demod +mxl111sf-tuner +mxl301rf +mxl5005s +mxl5007t +mxser +mxsfb +mxuport +myri10ge +nandsim +national +natsemi +nau7802 +navman +nbd +nbpfaxi +nci +nci_uart +ncpfs +nct6683 +nct6775 +nct7802 +nct7904 +ne2k-pci +neofb +net1080 +net2272 +net2280 +netconsole +netjet +netlink_diag +netrom +netxen_nic +newtonkbd +nfc +nfc_digital +nfcmrvl +nfcmrvl_uart +nfcmrvl_usb +nf_conntrack +nf_conntrack_amanda +nf_conntrack_broadcast +nf_conntrack_ftp +nf_conntrack_h323 +nf_conntrack_ipv4 +nf_conntrack_ipv6 +nf_conntrack_irc +nf_conntrack_netbios_ns +nf_conntrack_netlink +nf_conntrack_pptp +nf_conntrack_proto_dccp +nf_conntrack_proto_gre +nf_conntrack_proto_sctp +nf_conntrack_proto_udplite +nf_conntrack_sane +nf_conntrack_sip +nf_conntrack_snmp +nf_conntrack_tftp +nfcsim +nfcwilink +nf_defrag_ipv4 +nf_defrag_ipv6 +nf_log_arp +nf_log_bridge +nf_log_common +nf_log_ipv4 +nf_log_ipv6 +nf_nat +nf_nat_amanda +nf_nat_ftp +nf_nat_h323 +nf_nat_ipv4 +nf_nat_ipv6 +nf_nat_irc +nf_nat_masquerade_ipv4 +nf_nat_masquerade_ipv6 +nf_nat_pptp +nf_nat_proto_dccp +nf_nat_proto_gre +nf_nat_proto_sctp +nf_nat_proto_udplite +nf_nat_redirect +nf_nat_sip +nf_nat_snmp_basic +nf_nat_tftp +nfnetlink +nfnetlink_acct +nfnetlink_cthelper +nfnetlink_cttimeout +nfnetlink_log +nfnetlink_queue +nf_reject_ipv4 +nf_reject_ipv6 +nfs +nfs_acl +nfsd +nfs_layout_flexfiles +nfs_layout_nfsv41_files +nfsv2 +nfsv3 +nfsv4 +nf_synproxy_core +nf_tables +nf_tables_arp +nf_tables_bridge +nf_tables_inet +nf_tables_ipv4 +nf_tables_ipv6 +nf_tables_netdev +nft_chain_nat_ipv4 +nft_chain_nat_ipv6 +nft_chain_route_ipv4 +nft_chain_route_ipv6 +nft_compat +nft_counter +nft_ct +nft_exthdr +nft_hash +nftl +nft_limit +nft_log +nft_masq +nft_masq_ipv4 +nft_masq_ipv6 +nft_meta +nft_meta_bridge +nft_nat +nft_queue +nft_rbtree +nft_redir +nft_redir_ipv4 +nft_redir_ipv6 +nft_reject +nft_reject_bridge +nft_reject_inet +nft_reject_ipv4 +nft_reject_ipv6 +ngene +n_gsm +nhc_dest +nhc_fragment +nhc_hop +nhc_ipv6 +nhc_mobility +nhc_routing +nhc_udp +n_hdlc +ni_6527 +ni_65xx +ni_660x +ni_670x +ni_at_a2150 +ni_at_ao +ni_atmio +ni_atmio16d +nicstar +ni_labpc +ni_labpc_common +ni_labpc_pci +nilfs2 +ni_pcidio +ni_pcimio +ni_tio +ni_tiocmd +niu +ni_usb6501 +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 +nokia-modem +nosy +notifier-error-inject +nouveau +nozomi +nps_enet +n_r3964 +ns558 +ns83820 +nsp32 +ntb +ntb_netdev +ntb_pingpong +ntb_tool +ntb_transport +ntc_thermistor +ntfs +n_tracerouter +n_tracesink +null_blk +nvec +nvec_kbd +nvec_paz00 +nvec_power +nvec_ps2 +nvidiafb +nvme +nvram +nxp-nci +nxp-nci_i2c +nxt200x +nxt6000 +obdclass +obdecho +objlayoutdriver +ocfb +ocfs2 +ocfs2_dlm +ocfs2_dlmfs +ocfs2_nodemanager +ocfs2_stackglue +ocfs2_stack_o2cb +ocfs2_stack_user +ocrdma +of_xilinx_wdt +ohci-omap3 +old_belkin-sir +omap +omap2 +omap2430 +omap3-isp +omap3-rom-rng +omap4-keypad +omap-aes +omap-des +omapfb +omap_hdq +omap_hwspinlock +omap-mailbox +omap-ocp2scp +omap_remoteproc +omap-rng +omap-sham +omap_ssi +omap_ssi_port +omap-vout +omap_wdt +omfs +omninet +on20 +on26 +onenand +opencores-kbd +openvswitch +oprofile +opticon +option +or51132 +or51211 +orinoco +orinoco_nortel +orinoco_plx +orinoco_tmd +orinoco_usb +orion_nand +orion_wdt +osc +osd +osdblk +osst +oti6858 +ov2640 +ov5642 +ov6650 +ov7640 +ov7670 +ov772x +ov9640 +ov9740 +overlay +oxu210hp-hcd +ozwpan +p54common +p54pci +p54spi +p54usb +p8022 +p8023 +palmas-pwrbutton +palmas-regulator +pandora_bl +panel +panel-dpi +panel-dsi-cm +panel-ld9040 +panel-lgphilips-lb035q02 +panel-nec-nl8048hl11 +panel-s6e8aa0 +panel-sharp-lq101r1sx01 +panel-sharp-ls037v7dw01 +panel-simple +panel-sony-acx565akm +panel-tpo-td028ttec1 +panel-tpo-td043mtea1 +parallel-display +paride +parkbd +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 +pc300too +pc87360 +pc87427 +pcap_keys +pcap-regulator +pcap_ts +pcbc +pcd +pcf50633 +pcf50633-adc +pcf50633-backlight +pcf50633-charger +pcf50633-gpio +pcf50633-input +pcf50633-regulator +pcf8574_keypad +pcf8591 +pch_udc +pci +pci200syn +pcie-iproc +pcips2 +pci-stub +pcl711 +pcl724 +pcl726 +pcl730 +pcl812 +pcl816 +pcl818 +pcm3724 +pcmad +pcmda12 +pcmmio +pcmuio +pcnet32 +pcrypt +pcwd_pci +pcwd_usb +pd +pda_power +pdc_adma +peak_pci +peak_usb +pegasus +penmount +percpu_test +pf +pfuze100-regulator +pg +phantom +phonet +phram +phy-am335x +phy-am335x-control +phy-bcm-kona-usb2 +phy-berlin-sata +phy-berlin-usb +phy-dm816x-usb +phy-exynos5-usbdrd +phy-exynos-usb2 +phy-gpio-vbus-usb +phy-hix5hd2-sata +phy-isp1301 +phy-msm-usb +phy-omap-control +phy-omap-usb2 +phy-pxa-28nm-hsic +phy-pxa-28nm-usb2 +phy-qcom-apq8064-sata +phy-qcom-ipq806x-sata +phy-qcom-ufs +phy-qcom-ufs-qmp-14nm +phy-qcom-ufs-qmp-20nm +phy-rcar-gen2 +phy-rcar-usb +physmap +physmap_of +phy-tahvo +phy-tegra-usb +phy-ti-pipe3 +phy-tusb1210 +phy-twl4030-usb +phy-twl6030-usb +pinctrl-apq8064 +pinctrl-apq8084 +pinctrl-ipq8064 +pinctrl-msm8660 +pinctrl-msm8916 +pinctrl-msm8960 +pinctrl-msm8x74 +pinctrl-spmi-gpio +pinctrl-spmi-mpp +pixcir_i2c_ts +pkcs7_message +pkcs7_test_key +pktcdvd +pktgen +pl2303 +pl330 +platform_lcd +plat_nand +plat-ram +plip +plusb +pluto2 +plx_pci +pm2fb +pm3fb +pm80xx +pm8921-core +pm8941-pwrkey +pm8xxx-vibrator +pmbus +pmbus_core +pmc551 +pmcraid +pmic8xxx-keypad +pmic8xxx-pwrkey +pm-notifier-error-inject +pn533 +pn544 +pn544_i2c +pn_pep +poly1305_generic +port100 +powermate +powr1220 +ppa +ppdev +ppp_async +ppp_deflate +ppp_mppe +pppoatm +pppoe +pppox +ppp_synctty +pps-gpio +pps-ldisc +pps_parport +pptp +prism2_usb +ps2mult +ps8622 +psmouse +psnap +pt +ptlrpc +ptn3460 +pvrusb2 +pwc +pwm-atmel-hlcdc +pwm-beeper +pwm_bl +pwm-fan +pwm-fsl-ftm +pwm-imx +pwm-lp3943 +pwm-pca9685 +pwm-regulator +pwm-renesas-tpu +pwm-samsung +pwm-tegra +pwm-tiecap +pwm-tiehrpwm +pwm-twl +pwm-twl-led +pxa168_eth +pxa27x_udc +pxa3xx_nand +qcaspi +qcaux +qcom_bam_dma +qcom_gsbi +qcom_hwspinlock +qcom_rpm +qcom_rpm-regulator +qcom-spmi-iadc +qcom-spmi-pmic +qcom_spmi-regulator +qcom-spmi-temp-alarm +qcom-spmi-vadc +qcom-wdt +qcrypto +qcserial +qinfo_probe +qla1280 +qla2xxx +qla3xxx +qla4xxx +qlcnic +qlge +qm1d1c0042 +qmi_wwan +qnx4 +qnx6 +qoriq-cpufreq +qsemi +qt1010 +qt1070 +qt2160 +quatech2 +quota_tree +quota_v1 +quota_v2 +qxl +r128 +r592 +r6040 +r8152 +r8169 +r8188eu +r8192e_pci +r8192u_usb +r820t +r852 +r8712u +r8723au +r8a66597-hcd +r8a66597-udc +radeon +radeonfb +radio-bcm2048 +radio-i2c-si470x +radio-keene +radio-ma901 +radio-maxiradio +radio-mr800 +radio-platform-si4713 +radio-raremono +radio-shark +radio-si476x +radio-tea5764 +radio-usb-si470x +radio-usb-si4713 +radio-wl1273 +raid0 +raid1 +raid10 +raid456 +raid6_pq +raid6test +raid_class +ravb +raw +rbd +rbtree_test +rc5t583-regulator +rc-adstech-dvb-t-pci +rc-alink-dtu-m +rc-anysee +rc-apac-viewcomp +rcar_can +rcar-dmac +rcar-du-drm +rcar-hpbdma +rcar_thermal +rcar_vin +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-behold +rc-behold-columbus +rc-budget-ci-old +rc-cinergy +rc-cinergy-1400 +rc-core +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-dvbsky +rc-em-terratec +rc-encore-enltv +rc-encore-enltv2 +rc-encore-enltv-fm53 +rc-evga-indtube +rc-eztv +rc-flydvb +rc-flyvideo +rc-fusionhdtv-mce +rc-gadmei-rm008z +rc-genius-tvgo-a11mce +rc-gotview7135 +rc-hauppauge +rc-imon-mce +rc-imon-pad +rc-iodata-bctv7e +rc-it913x-v1 +rc-it913x-v2 +rc-kaiomy +rc-kworld-315u +rc-kworld-pc150u +rc-kworld-plus-tv-analog +rc-leadtek-y04g0051 +rc-lirc +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-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-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-twinhan1027 +rc-twinhan-dtv-cab-ci +rc-videomate-m1f +rc-videomate-s350 +rc-videomate-tv-pvr +rc-winfast +rc-winfast-usbii-deluxe +rdc321x-southbridge +rdma_cm +rdma_ucm +rds +rds_rdma +rds_tcp +realtek +redboot +redrat3 +regmap-spmi +regulator-haptic +reiserfs +remoteproc +renesas_usbhs +retu-mfd +retu-pwrbutton +retu_wdt +rfc1051 +rfc1201 +rfcomm +rfd_ftl +rfkill-gpio +rfkill-regulator +rio500 +rivafb +rj54n1cb0c +rk808 +rk808-regulator +rmd128 +rmd160 +rmd256 +rmd320 +rmobile-reset +rn5t618 +rn5t618-regulator +rn5t618_wdt +rndis_host +rndis_wlan +rocket +romfs +rose +rotary_encoder +rp2 +rpcrdma +rpcsec_gss_krb5 +rsa_generic +rsi_91x +rsi_sdio +rsi_usb +rsxx +rt2400pci +rt2500pci +rt2500usb +rt2800lib +rt2800mmio +rt2800pci +rt2800usb +rt2x00lib +rt2x00mmio +rt2x00pci +rt2x00usb +rt5033 +rt5033_battery +rt5033-regulator +rt61pci +rt73usb +rt9455_charger +rtc-88pm80x +rtc-88pm860x +rtc-ab3100 +rtc-ab-b5ze-s3 +rtc-abx80x +rtc-armada38x +rtc-as3722 +rtc-bq32k +rtc-bq4802 +rtc-cmos +rtc-da9052 +rtc-da9055 +rtc-da9063 +rtc-ds1286 +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-ds3234 +rtc-em3027 +rtc-fm3130 +rtc-hid-sensor-time +rtc-hym8563 +rtc-imxdi +rtc-isl12022 +rtc-isl12057 +rtc-isl1208 +rtc-lp8788 +rtc-m41t80 +rtc-m41t93 +rtc-m41t94 +rtc-m48t35 +rtc-m48t59 +rtc-m48t86 +rtc-max6900 +rtc-max6902 +rtc-max77686 +rtc-max77802 +rtc-max8907 +rtc-max8925 +rtc-max8997 +rtc-max8998 +rtc-mc13xxx +rtc-mcp795 +rtc-msm6242 +rtc-mt6397 +rtc-mxc +rtc-palmas +rtc-pcap +rtc-pcf2123 +rtc-pcf2127 +rtc-pcf50633 +rtc-pcf85063 +rtc-pcf8563 +rtc-pcf8583 +rtc-pl030 +rtc-pm8xxx +rtc-r9701 +rtc-rc5t583 +rtc-rk808 +rtc-rp5c01 +rtc-rs5c348 +rtc-rs5c372 +rtc-rv3029c2 +rtc-rx4581 +rtc-rx8025 +rtc-rx8581 +rtc-s35390a +rtc-s5m +rtc-snvs +rtc-stk17ta8 +rtc-tegra +rtc-tps6586x +rtc-tps65910 +rtc-tps80031 +rtc-v3020 +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 +rtl8723ae +rtl8723be +rtl8723-common +rtl8821ae +rtllib +rtllib_crypt_ccmp +rtllib_crypt_tkip +rtllib_crypt_wep +rtl_pci +rtl_usb +rtlwifi +rts5208 +rtsx_pci +rtsx_pci_ms +rtsx_pci_sdmmc +rtsx_usb +rtsx_usb_ms +rtsx_usb_sdmmc +rx51_battery +rxkad +s1d13xxxfb +s2250 +s2255drv +s2io +s2mpa01 +s2mps11 +s3c2410_wdt +s3c-fb +s3fb +s526 +s5h1409 +s5h1411 +s5h1420 +s5m8767 +s5p-g2d +s5p-hdmi +s5p-hdmiphy +s5p-jpeg +s5p-mfc +s5p-mixer +s5p-sdo +s5p-sii9234 +s5p-sss +s626 +s6e63m0 +s921 +saa6588 +saa6752hs +saa7115 +saa7127 +saa7134 +saa7134-alsa +saa7134-dvb +saa7134-empress +saa7134-go7007 +saa7146 +saa7146_vv +saa7164 +saa717x +saa7706h +safe_serial +sahara +salsa20_generic +samsung +samsung-keypad +samsung-sxgbe +sata_highbank +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 +savage +savagefb +sbp_target +sbs-battery +sc16is7xx +sc92031 +sca3000 +sch5627 +sch5636 +sch56xx-common +sch_atm +sch_cbq +sch_choke +sch_codel +sch_drr +sch_dsmark +sch_fq +sch_fq_codel +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_tbf +sch_teql +scsi_debug +scsi_dh +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_probe +sdhci-dove +sdhci_f_sdh30 +sdhci-msm +sdhci-of-arasan +sdhci-pci +sdhci-pxav3 +sdhci-s3c +sdhci-tegra +sdio_uart +seed +sensorhub +seqiv +ser_gigaset +serial2002 +serial-tegra +serio_raw +sermouse +serpent_generic +serport +ses +sfc +sha1-arm +sha1-arm-ce +sha1-arm-neon +sha256-arm +sha2-arm-ce +sha512-arm +shark2 +shdma +sh_eth +sh_flctl +sh_irda +sh_keysc +sh_mmcif +shmob-drm +sh_mobile_ceu_camera +sh_mobile_csi2 +sh_mobile_hdmi +sh_mobile_lcdcfb +sh_mobile_meram +sh_mobile_sdhi +sh-sci +sht15 +sht21 +shtc1 +sh_veu +sh_vou +si2157 +si2165 +si2168 +si21xx +si4713 +si476x-core +si7005 +si7020 +sidewinder +sierra +sierra_net +sil164 +sir-dev +sis190 +sis5595 +sis900 +sisfb +sisusbvga +sit +sja1000 +sja1000_isa +sja1000_platform +skfp +skge +sky2 +sky81452 +sky81452-backlight +sky81452-regulator +sl811-hcd +slcan +slip +slram +sm501fb +sm750fb +sm7xxfb +smb347-charger +smc911x +smc91x +sm_common +sm_ftl +smipcie +smm665 +smsc +smsc47b397 +smsc47m1 +smsc47m192 +smsc75xx +smsc911x +smsc9420 +smsc95xx +smscufx +smsdvb +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-firewire-lib +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-ice1712 +snd-ice1724 +snd-ice17xx-ak4xxx +snd-indigo +snd-indigodj +snd-indigodjx +snd-indigoio +snd-indigoiox +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-pcm-oss +snd-pcxhr +snd-portman2x4 +snd-pt2258 +snd-rawmidi +snd-riptide +snd-rme32 +snd-rme96 +snd-rme9652 +snd-scs1x +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-ac97 +snd-soc-adau1701 +snd-soc-ak4104 +snd-soc-ak4554 +snd-soc-ak4642 +snd-soc-ak5386 +snd-soc-alc5623 +snd-soc-alc5632 +snd-soc-apq8016-sbc +snd-soc-armada-370-db +snd-soc-arndale-rt5631 +snd-soc-cs35l32 +snd-soc-cs4265 +snd-soc-cs4270 +snd-soc-cs4271 +snd-soc-cs4271-i2c +snd-soc-cs4271-spi +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-davinci-mcasp +snd-soc-dmic +snd-soc-edma +snd-soc-es8328 +snd-soc-es8328-i2c +snd-soc-es8328-spi +snd-soc-eukrea-tlv320 +snd-soc-evm +snd-soc-fsi +snd-soc-fsl-asoc-card +snd-soc-fsl-asrc +snd-soc-fsl-esai +snd-soc-fsl-sai +snd-soc-fsl-spdif +snd-soc-fsl-utils +snd-soc-i2s +snd-soc-idma +snd-soc-imx-es8328 +snd-soc-imx-mc13783 +snd-soc-imx-spdif +snd-soc-imx-ssi +snd-soc-imx-wm8962 +snd-soc-kirkwood +snd-soc-lpass-apq8016 +snd-soc-lpass-cpu +snd-soc-lpass-ipq806x +snd-soc-lpass-platform +snd-soc-max98090 +snd-soc-max98095 +snd-soc-max98357a +snd-soc-mc13783 +snd-soc-odroidx2-max98090 +snd-soc-omap3pandora +snd-soc-omap-abe-twl6040 +snd-soc-omap-dmic +snd-soc-omap-hdmi-audio +snd-soc-omap-mcpdm +snd-soc-pcm +snd-soc-pcm1681 +snd-soc-pcm1792a-codec +snd-soc-pcm512x +snd-soc-pcm512x-i2c +snd-soc-pcm512x-spi +snd-soc-rcar +snd-soc-rl6231 +snd-soc-rsrc-card +snd-soc-rt5631 +snd-soc-rt5640 +snd-soc-rt5645 +snd-soc-rt5677 +snd-soc-rt5677-spi +snd-soc-rx51 +snd-soc-s3c-dma +snd-soc-samsung-spdif +snd-soc-si476x +snd-soc-sigmadsp +snd-soc-sigmadsp-i2c +snd-soc-simple-card +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-ssm2602 +snd-soc-ssm2602-i2c +snd-soc-ssm2602-spi +snd-soc-ssm4567 +snd-soc-sta32x +snd-soc-sta350 +snd-soc-storm +snd-soc-tas2552 +snd-soc-tas5086 +snd-soc-tas571x +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-tegra-alc5632 +snd-soc-tegra-max98090 +snd-soc-tegra-pcm +snd-soc-tegra-rt5640 +snd-soc-tegra-rt5677 +snd-soc-tegra-trimslice +snd-soc-tegra-utils +snd-soc-tegra-wm8753 +snd-soc-tegra-wm8903 +snd-soc-tegra-wm9712 +snd-soc-tfa9879 +snd-soc-tlv320aic23 +snd-soc-tlv320aic23-i2c +snd-soc-tlv320aic23-spi +snd-soc-tlv320aic31xx +snd-soc-tlv320aic3x +snd-soc-tpa6130a2 +snd-soc-ts3a227e +snd-soc-twl6040 +snd-soc-wm8510 +snd-soc-wm8523 +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-wm8804 +snd-soc-wm8804-i2c +snd-soc-wm8804-spi +snd-soc-wm8903 +snd-soc-wm8962 +snd-soc-wm8978 +snd-soc-wm8994 +snd-soc-wm9712 +snd-soc-wm-hubs +snd-soc-xtfpga-i2s +snd-sonicvibes +snd-trident +snd-ua101 +snd-usb-6fire +snd-usb-audio +snd-usb-caiaq +snd-usb-hiface +snd-usb-line6 +snd-usbmidi-lib +snd-usb-pod +snd-usb-podhd +snd-usb-toneport +snd-usb-variax +snd-util-mem +snd-via82xx +snd-via82xx-modem +snd-virmidi +snd-virtuoso +snd-vx222 +snd-vx-lib +snd-ymfpci +snic +soc_button_array +soc_camera +soc_camera_platform +soc_mediabus +soc_scale_crop +softdog +softing +solo6x10 +solos-pci +sony-btf-mpx +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-bitbang +spi-butterfly +spi-cadence +spidev +spi-dln2 +spi-dw +spi-dw-midpci +spi-dw-mmio +spi-fsl-dspi +spi-gpio +spi-imx +spi_ks8995 +spi-lm70llp +spi-meson-spifc +spi-nor +spi-oc-tiny +spi-orion +spi-pl022 +spi-pxa2xx-pci +spi-pxa2xx-platform +spi-qup +spi-rockchip +spi-rspi +spi-s3c64xx +spi-sc18is602 +spi-sh-hspi +spi-sh-msiof +spi-tegra114 +spi-tegra20-sflash +spi-tegra20-slink +spi-ti-qspi +spi-tle62x0 +spi-xcomm +spi-zynqmp-gqspi +spmi +spmi-pmic-arb +squashfs +sr9700 +sr9800 +ssb +ssbi +ssd1307fb +ssfdc +ssi_protocol +ssp_accel_sensor +ssp_gyro_sensor +ssp_iio +sst25l +sstfb +ssu100 +st +st1232 +st21nfca_hci +st21nfca_i2c +st_accel +st_accel_i2c +st_accel_spi +starfire +st-asc +stb0899 +stb6000 +stb6100 +st_drv +ste10Xp +ste_modem_rproc +stex +st_gyro +st_gyro_i2c +st_gyro_spi +stinger +stir4200 +stk1160 +stk3310 +stk8312 +stk8ba50 +stkwebcam +stm32-usart +st_magn +st_magn_i2c +st_magn_spi +stmmac +stmmac-platform +stmpe-keypad +stmpe-ts +st-nci +st-nci_i2c +stowaway +stp +st_pressure +st_pressure_i2c +st_pressure_spi +streamzap +st_sensors +st_sensors_i2c +st_sensors_spi +stv0288 +stv0297 +stv0299 +stv0367 +stv0900 +stv090x +stv6110 +stv6110x +sudmac +sundance +sungem +sungem_phy +sunhme +suni +sunkbd +sunrpc +sur40 +svgalib +sx8 +sx8654 +sx9500 +sym53c8xx +symbolserial +synaptics_i2c +synaptics_i2c_rmi4 +synaptics_usb +synclink_gt +synclinkmp +syscopyarea +sysfillrect +sysimgblt +sysv +t1pci +t5403 +target_core_file +target_core_iblock +target_core_mod +target_core_pscsi +target_core_user +tc3589x-keypad +tc74 +tc90522 +tca6416-keypad +tca8418_keypad +tcm_fc +tcm_loop +tcm_qla2xxx +tcm_usb_gadget +tcp_bic +tcp_cdg +tcp_dctcp +tcp_diag +tcp_highspeed +tcp_htcp +tcp_hybla +tcp_illinois +tcp_lp +tcp_probe +tcp_scalable +tcp_vegas +tcp_veno +tcp_westwood +tcp_yeah +tcrypt +tcs3414 +tcs3472 +tda10021 +tda10023 +tda10048 +tda1004x +tda10071 +tda10086 +tda18212 +tda18218 +tda18271 +tda18271c2dd +tda665x +tda7432 +tda8083 +tda8261 +tda826x +tda827x +tda8290 +tda9840 +tda9887 +tda998x +tdfx +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 +tegra-devfreq +tegra-drm +tegra-kbc +tegra_wdt +tehuti +tekram-sir +test_bpf +test_firmware +test-hexdump +test-kprobes +test-kstrtox +test_module +test_power +test-string_helpers +test_udelay +test_user_copy +tg3 +tgr192 +thmc50 +thunderbolt +ti-adc081c +ti-adc128s052 +ti_am335x_adc +ti_am335x_tsc +ti_am335x_tscadc +ti_dac7512 +tifm_7xx1 +tifm_core +tifm_ms +tifm_sd +ti_hecc +tilcdc +timeriomem-rng +tipc +ti-soc-thermal +ti_usb_3410_5052 +ti-vpe +tlan +tm6000 +tm6000-alsa +tm6000-dvb +tmdc +tmiofb +tmio_mmc +tmio_mmc_core +tmio_nand +tmp006 +tmp102 +tmp103 +tmp401 +tmp421 +toim3232-sir +torture +toshsd +touchit213 +touchright +touchwin +tpci200 +tpm_i2c_atmel +tpm_i2c_infineon +tpm_i2c_nuvoton +tpm-rng +tpm_st33zp24 +tpm_st33zp24_i2c +tpm_st33zp24_spi +tps40422 +tps51632-regulator +tps6105x +tps6105x-regulator +tps62360-regulator +tps65010 +tps65023-regulator +tps6507x +tps6507x-regulator +tps6507x-ts +tps65090-charger +tps65090-regulator +tps65217 +tps65217_bl +tps65217-regulator +tps65218 +tps65218-pwrbutton +tps65218-regulator +tps6524x-regulator +tps6586x-regulator +tps65910-regulator +tps65912-regulator +tps80031-regulator +trancevibrator +trf7970a +tridentfb +ts2020 +ts_bm +tsc2005 +tsc2007 +tsc40 +ts_fsm +ts_kmp +tsl2550 +tsl2563 +tsl2583 +tsl2x7x_core +tsl4531 +ttm +ttpci-eeprom +ttusb_dec +ttusbdecfe +ttusbir +tua6100 +tua9001 +tulip +tuner +tuner-simple +tuner-types +tuner-xc2028 +tunnel4 +tunnel6 +turbografx +tusb6010 +tvaudio +tveeprom +tvp5150 +tw2804 +tw68 +tw9903 +tw9906 +tw9910 +twidjoy +twl4030_charger +twl4030_keypad +twl4030-madc +twl4030_madc_battery +twl4030-madc-hwmon +twl4030-pwrbutton +twl4030-vibra +twl4030_wdt +twl6030-gpadc +twl6040-vibra +twofish_common +twofish_generic +typhoon +u132-hcd +uas +ubi +ubifs +ucb1400_core +ucb1400_ts +ucd9000 +ucd9200 +uda1342 +udc-xilinx +udf +udl +udlfb +udp_diag +udp_tunnel +ueagle-atm +u_ether +ufs +ufshcd +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 +uli526x +ulpi +umc +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 +unioxx5 +unix_diag +upd64031a +upd64083 +usb3503 +usb_8dev +usb8xxx +usbatm +usb_debug +usb-dmac +usbdux +usbduxfast +usbduxsigma +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_uac1 +usb_f_uac2 +usb_f_uvc +usb_gigaset +usbhid +usbip-core +usbip-host +usbkbd +usblcd +usbled +usblp +usbmisc_imx +usbmon +usbmouse +usbnet +usbserial +usb-serial-simple +usbsevseg +usb-storage +usbtest +usbtmc +usbtouchscreen +usbtv +usbvision +usb_wwan +usdhi6rol0 +u_serial +userspace-consumer +ushc +uss720 +uvcvideo +uvesafb +uwb +v4l2-common +v4l2-dv-timings +v4l2-flash-led-class +v4l2-mem2mem +vcan +vcnl4000 +ves1820 +ves1x93 +veth +vexpress +vexpress-spc-cpufreq +vf610_adc +vfio +vfio-amba +vfio-pci +vfio-platform +vfio-platform-calxedaxgmac +vfio_virqfd +vgastate +vgem +vgg2432a4 +vhci-hcd +vhost +vhost_net +vhost_scsi +via +via686a +via-rhine +via-sdmmc +via-velocity +videobuf2-core +videobuf2-dma-contig +videobuf2-dma-sg +videobuf2-dvb +videobuf2-memops +videobuf2-vmalloc +videobuf-core +videobuf-dma-contig +videobuf-dma-sg +videobuf-dvb +videobuf-vmalloc +videodev +vim2m +viperboard +viperboard_adc +virtio-gpu +virtio_input +virtio-rng +virtio_rpmsg_bus +virtio_scsi +virtual +visor +vitesse +vivid +vlsi_ir +vmac +vme_pio2 +vme_tsi148 +vme_user +vme_vmivme7805 +vmk80xx +vmwgfx +vmxnet3 +vp27smpx +vport-geneve +vport-gre +vport-vxlan +vringh +vsock +vsp1 +vsxxxaa +vt1211 +vt6655_stage +vt6656_stage +vt8231 +vt8623fb +vub300 +vx855 +vxge +vxlan +w1_bq27000 +w1_ds2406 +w1_ds2408 +w1_ds2413 +w1_ds2423 +w1_ds2431 +w1_ds2433 +w1_ds2760 +w1_ds2780 +w1_ds2781 +w1_ds28e04 +w1-gpio +w1_smem +w1_therm +w5100 +w5300 +w6692 +w83627ehf +w83627hf +w83781d +w83791d +w83792d +w83793 +w83795 +w83l785ts +w83l786ng +wacom +wacom_i2c +wacom_serial4 +wacom_w8001 +walkera0701 +wanxl +warrior +wcn36xx +wd719x +wdt87xx_i2c +wdt_pci +whci +whci-hcd +whc-rc +whiteheat +wil6210 +wimax +winbond-840 +wire +wishbone-serial +wkup_m3_rproc +wl1251 +wl1251_sdio +wl1251_spi +wl1273-core +wl12xx +wl18xx +wlcore +wlcore_sdio +wlcore_spi +wm831x_backup +wm831x_bl +wm831x-dcdc +wm831x-hwmon +wm831x-isink +wm831x-ldo +wm831x-on +wm831x_power +wm831x-ts +wm831x_wdt +wm8350-hwmon +wm8350_power +wm8350-regulator +wm8350_wdt +wm8400-regulator +wm8739 +wm8775 +wm8994-core +wm8994-irq +wm8994-regmap +wm8994-regulator +wm97xx-ts +wp512 +wusb-cbaf +wusbcore +wusb-wa +x25 +x25_asy +xc4000 +xc5000 +xcbc +xfrm4_mode_beet +xfrm4_mode_transport +xfrm4_mode_tunnel +xfrm4_tunnel +xfrm6_mode_beet +xfrm6_mode_ro +xfrm6_mode_transport +xfrm6_mode_tunnel +xfrm6_tunnel +xfrm_algo +xfrm_ipcomp +xfrm_user +xfs +xgifb +xgmac +xhci-plat-hcd +xilinx-tpg +xilinx_uartps +xilinx-video +xilinx-vtc +xillybus_core +xillybus_of +xillybus_pcie +xor +xor-neon +xpad +xsens_mt +x_tables +xt_addrtype +xt_AUDIT +xt_bpf +xt_cgroup +xt_CHECKSUM +xt_CLASSIFY +xt_cluster +xt_comment +xt_connbytes +xt_connlabel +xt_connlimit +xt_connmark +xt_CONNSECMARK +xt_conntrack +xt_cpu +xt_CT +xt_dccp +xt_devgroup +xt_dscp +xt_DSCP +xt_ecn +xt_esp +xt_hashlimit +xt_helper +xt_hl +xt_HL +xt_HMARK +xt_IDLETIMER +xt_ipcomp +xt_iprange +xt_ipvs +xtkbd +xt_l2tp +xt_LED +xt_length +xt_limit +xt_LOG +xt_mac +xt_mark +xt_multiport +xt_nat +xt_NETMAP +xt_nfacct +xt_NFLOG +xt_NFQUEUE +xt_osf +xt_owner +xt_physdev +xt_pkttype +xt_policy +xt_quota +xt_rateest +xt_RATEEST +xt_realm +xt_recent +xt_REDIRECT +xts +xt_sctp +xt_SECMARK +xt_set +xt_socket +xt_state +xt_statistic +xt_string +xt_tcpmss +xt_TCPMSS +xt_TCPOPTSTRIP +xt_tcpudp +xt_TEE +xt_time +xt_TPROXY +xt_TRACE +xt_u32 +xusbatm +xz_dec_test +yam +yealink +yellowfin +yurex +zaurus +zd1201 +zd1211rw +zforce_ts +zhenhua +zl10036 +zl10039 +zl10353 +zl6100 +zlib +zr364xx +zram +zx296702-i2s +zx296702-spdif --- linux-raspi2-4.2.0.orig/debian.master/abi/4.2.0-26.31/fwinfo +++ linux-raspi2-4.2.0/debian.master/abi/4.2.0-26.31/fwinfo @@ -0,0 +1,958 @@ +firmware: 3826.arm +firmware: 3com/typhoon.bin +firmware: 6fire/dmx6fireap.ihx +firmware: 6fire/dmx6firecf.bin +firmware: 6fire/dmx6firel2.ihx +firmware: a300_pfp.fw +firmware: a300_pm4.fw +firmware: a330_pfp.fw +firmware: a330_pm4.fw +firmware: a420_pfp.fw +firmware: a420_pm4.fw +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/carrizo_ce.bin +firmware: amdgpu/carrizo_me.bin +firmware: amdgpu/carrizo_mec2.bin +firmware: amdgpu/carrizo_mec.bin +firmware: amdgpu/carrizo_pfp.bin +firmware: amdgpu/carrizo_rlc.bin +firmware: amdgpu/carrizo_sdma1.bin +firmware: amdgpu/carrizo_sdma.bin +firmware: amdgpu/carrizo_uvd.bin +firmware: amdgpu/carrizo_vce.bin +firmware: amdgpu/tonga_ce.bin +firmware: amdgpu/tonga_mc.bin +firmware: amdgpu/tonga_me.bin +firmware: amdgpu/tonga_mec2.bin +firmware: amdgpu/tonga_mec.bin +firmware: amdgpu/tonga_pfp.bin +firmware: amdgpu/tonga_rlc.bin +firmware: amdgpu/tonga_sdma1.bin +firmware: amdgpu/tonga_sdma.bin +firmware: amdgpu/tonga_smc.bin +firmware: amdgpu/tonga_uvd.bin +firmware: amdgpu/tonga_vce.bin +firmware: amdgpu/topaz_ce.bin +firmware: amdgpu/topaz_mc.bin +firmware: amdgpu/topaz_me.bin +firmware: amdgpu/topaz_mec2.bin +firmware: amdgpu/topaz_mec.bin +firmware: amdgpu/topaz_pfp.bin +firmware: amdgpu/topaz_rlc.bin +firmware: amdgpu/topaz_sdma1.bin +firmware: amdgpu/topaz_sdma.bin +firmware: amdgpu/topaz_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.bin +firmware: ath10k/QCA6174/hw2.1/firmware-4.bin +firmware: ath10k/QCA6174/hw2.1/firmware-5.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/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: ath10k/QCA988X/hw2.0/firmware.bin +firmware: ath3k-1.fw +firmware: ath6k/AR6003/hw2.0/athwlan.bin.z77 +firmware: ath6k/AR6003/hw2.0/bdata.bin +firmware: ath6k/AR6003/hw2.0/bdata.SD31.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.bin +firmware: ath6k/AR6003/hw2.1.1/bdata.SD31.bin +firmware: ath6k/AR6003/hw2.1.1/data.patch.bin +firmware: ath6k/AR6003/hw2.1.1/otp.bin +firmware: ath6k/AR6004/hw1.0/bdata.bin +firmware: ath6k/AR6004/hw1.0/bdata.DB132.bin +firmware: ath6k/AR6004/hw1.0/fw.ram.bin +firmware: ath6k/AR6004/hw1.1/bdata.bin +firmware: ath6k/AR6004/hw1.1/bdata.DB132.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: atmel_at76c502_3com.bin +firmware: atmel_at76c502_3com-wpa.bin +firmware: atmel_at76c502.bin +firmware: atmel_at76c502d.bin +firmware: atmel_at76c502d-wpa.bin +firmware: atmel_at76c502e.bin +firmware: atmel_at76c502e-wpa.bin +firmware: atmel_at76c502-wpa.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_2958.bin +firmware: atmel_at76c504_2958-wpa.bin +firmware: atmel_at76c504a_2958.bin +firmware: atmel_at76c504a_2958-wpa.bin +firmware: atmel_at76c504.bin +firmware: atmel_at76c504-wpa.bin +firmware: atmel_at76c505amx-rfmd.bin +firmware: atmel_at76c505a-rfmd2958.bin +firmware: atmel_at76c505-rfmd2958.bin +firmware: atmel_at76c505-rfmd.bin +firmware: atmel_at76c506.bin +firmware: atmel_at76c506-wpa.bin +firmware: atmsar11.fw +firmware: atsc_denver.inp +firmware: av7110/bootcode.bin +firmware: b43legacy/ucode2.fw +firmware: b43legacy/ucode4.fw +firmware: b43/ucode11.fw +firmware: b43/ucode13.fw +firmware: b43/ucode14.fw +firmware: b43/ucode15.fw +firmware: b43/ucode16_mimo.fw +firmware: b43/ucode5.fw +firmware: b43/ucode9.fw +firmware: BCM2033-FW.bin +firmware: BCM2033-MD.hex +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.10.51.0.fw +firmware: bnx2x/bnx2x-e1h-7.10.51.0.fw +firmware: bnx2x/bnx2x-e2-7.10.51.0.fw +firmware: brcm/bcm43xx-0.fw +firmware: brcm/bcm43xx_hdr-0.fw +firmware: brcm/brcmfmac43143.bin +firmware: brcm/brcmfmac43143-sdio.bin +firmware: brcm/brcmfmac43143-sdio.txt +firmware: brcm/brcmfmac43236b.bin +firmware: brcm/brcmfmac43241b0-sdio.bin +firmware: brcm/brcmfmac43241b0-sdio.txt +firmware: brcm/brcmfmac43241b4-sdio.bin +firmware: brcm/brcmfmac43241b4-sdio.txt +firmware: brcm/brcmfmac43241b5-sdio.bin +firmware: brcm/brcmfmac43241b5-sdio.txt +firmware: brcm/brcmfmac43242a.bin +firmware: brcm/brcmfmac4329-sdio.bin +firmware: brcm/brcmfmac4329-sdio.txt +firmware: brcm/brcmfmac4330-sdio.bin +firmware: brcm/brcmfmac4330-sdio.txt +firmware: brcm/brcmfmac43340-sdio.bin +firmware: brcm/brcmfmac43340-sdio.txt +firmware: brcm/brcmfmac4334-sdio.bin +firmware: brcm/brcmfmac4334-sdio.txt +firmware: brcm/brcmfmac4335-sdio.bin +firmware: brcm/brcmfmac4335-sdio.txt +firmware: brcm/brcmfmac43362-sdio.bin +firmware: brcm/brcmfmac43362-sdio.txt +firmware: brcm/brcmfmac4339-sdio.bin +firmware: brcm/brcmfmac4339-sdio.txt +firmware: brcm/brcmfmac43430-sdio.bin +firmware: brcm/brcmfmac43430-sdio.txt +firmware: brcm/brcmfmac43455-sdio.bin +firmware: brcm/brcmfmac43455-sdio.txt +firmware: brcm/brcmfmac4354-sdio.bin +firmware: brcm/brcmfmac4354-sdio.txt +firmware: brcm/brcmfmac43569.bin +firmware: brcm/brcmfmac4356-pcie.bin +firmware: brcm/brcmfmac4356-pcie.txt +firmware: brcm/brcmfmac43570-pcie.bin +firmware: brcm/brcmfmac43570-pcie.txt +firmware: brcm/brcmfmac4358-pcie.bin +firmware: brcm/brcmfmac4358-pcie.txt +firmware: brcm/brcmfmac43602-pcie.bin +firmware: brcm/brcmfmac43602-pcie.txt +firmware: BT3CPCC.bin +firmware: c218tunx.cod +firmware: c320tunx.cod +firmware: carl9170-1.fw +firmware: cbfw-3.2.3.0.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.3.0.bin +firmware: ct2fw-3.2.5.1.bin +firmware: ctefx.bin +firmware: ctfw-3.2.3.0.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: 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-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-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: dvbh_rio.inp +firmware: dvb_nova_12mhz_b0.inp +firmware: dvb_nova_12mhz.inp +firmware: dvb_rio.inp +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-lme2510c-lg.fw +firmware: dvb-usb-lme2510c-rs2000.fw +firmware: dvb-usb-lme2510c-s0194.fw +firmware: dvb-usb-lme2510c-s7395.fw +firmware: dvb-usb-lme2510-lg.fw +firmware: dvb-usb-lme2510-s0194.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: 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/boot2.fw +firmware: edgeport/boot.fw +firmware: edgeport/down2.fw +firmware: edgeport/down3.bin +firmware: edgeport/down.fw +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/emu1010b.fw +firmware: emu/emu1010_notebook.fw +firmware: emu/hana.fw +firmware: emu/micro_dock.fw +firmware: ene-ub6250/ms_init.bin +firmware: ene-ub6250/msp_rdwr.bin +firmware: ene-ub6250/ms_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: htc_7010.fw +firmware: htc_9271.fw +firmware: i1480-phy-0.0.bin +firmware: i1480-pre-phy-0.0.bin +firmware: i1480-usb-0.0.bin +firmware: i2400m-fw-usb-1.5.sbcf +firmware: i6050-fw-usb-1.5.sbcf +firmware: i915/skl_dmc_ver1.bin +firmware: icom_asc.bin +firmware: icom_call_setup.bin +firmware: icom_res_dce.bin +firmware: ipw2100-1.3.fw +firmware: ipw2100-1.3-i.fw +firmware: ipw2100-1.3-p.fw +firmware: ipw2200-bss.fw +firmware: ipw2200-ibss.fw +firmware: ipw2200-sniffer.fw +firmware: isci/isci_firmware.bin +firmware: isdbt_nova_12mhz_b0.inp +firmware: isdbt_nova_12mhz.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-1000-5.ucode +firmware: iwlwifi-100-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-12.ucode +firmware: iwlwifi-3945-2.ucode +firmware: iwlwifi-4965-2.ucode +firmware: iwlwifi-5000-5.ucode +firmware: iwlwifi-5150-2.ucode +firmware: iwlwifi-6000-4.ucode +firmware: iwlwifi-6000g2a-5.ucode +firmware: iwlwifi-6000g2b-6.ucode +firmware: iwlwifi-6050-5.ucode +firmware: iwlwifi-7260-12.ucode +firmware: iwlwifi-7265-12.ucode +firmware: iwlwifi-7265D-12.ucode +firmware: iwlwifi-8000-12.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_pda/keyspan_pda.fw +firmware: keyspan_pda/xircom_pgs.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/usa28xa.fw +firmware: keyspan/usa28xb.fw +firmware: keyspan/usa28x.fw +firmware: keyspan/usa49w.fw +firmware: keyspan/usa49wlc.fw +firmware: korg/k1212.dsp +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_cs.fw +firmware: libertas_cs_helper.fw +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: liquidio/lio_210nv.bin +firmware: liquidio/lio_210sv.bin +firmware: liquidio/lio_410nv.bin +firmware: matrox/g200_warp.fw +firmware: matrox/g400_warp.fw +firmware: me2600_firmware.bin +firmware: me4000_firmware.bin +firmware: mixart/miXart8AES.xlx +firmware: mixart/miXart8.elf +firmware: mixart/miXart8.xlx +firmware: mrvl/pcie8766_uapsta.bin +firmware: mrvl/pcie8897_uapsta.bin +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/usb8766_uapsta.bin +firmware: mrvl/usb8797_uapsta.bin +firmware: mrvl/usb8801_uapsta.bin +firmware: mrvl/usb8897_uapsta.bin +firmware: mt7601u.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_ap-3.fw +firmware: mwl8k/fmimage_8366.fw +firmware: mwl8k/fmimage_8687.fw +firmware: mwl8k/helper_8363.fw +firmware: mwl8k/helper_8366.fw +firmware: mwl8k/helper_8687.fw +firmware: myri10ge_ethp_z8e.dat +firmware: myri10ge_eth_z8e.dat +firmware: myri10ge_rss_ethp_z8e.dat +firmware: myri10ge_rss_eth_z8e.dat +firmware: ni6534a.bin +firmware: niscrb01.bin +firmware: niscrb02.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: ql2100_fw.bin +firmware: ql2200_fw.bin +firmware: ql2300_fw.bin +firmware: ql2322_fw.bin +firmware: ql2400_fw.bin +firmware: ql2500_fw.bin +firmware: ql2600_fw.bin +firmware: ql2700_fw.bin +firmware: ql8300_fw.bin +firmware: qlogic/1040.bin +firmware: qlogic/12160.bin +firmware: qlogic/1280.bin +firmware: qlogic/sd7220.fw +firmware: r128/r128_cce.bin +firmware: r8a779x_usb3_v1.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_ce.bin +firmware: radeon/BONAIRE_mc2.bin +firmware: radeon/bonaire_mc.bin +firmware: radeon/BONAIRE_mc.bin +firmware: radeon/bonaire_me.bin +firmware: radeon/BONAIRE_me.bin +firmware: radeon/bonaire_mec.bin +firmware: radeon/BONAIRE_mec.bin +firmware: radeon/bonaire_pfp.bin +firmware: radeon/BONAIRE_pfp.bin +firmware: radeon/bonaire_rlc.bin +firmware: radeon/BONAIRE_rlc.bin +firmware: radeon/bonaire_sdma.bin +firmware: radeon/BONAIRE_sdma.bin +firmware: radeon/bonaire_smc.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_ce.bin +firmware: radeon/HAINAN_mc2.bin +firmware: radeon/hainan_mc.bin +firmware: radeon/HAINAN_mc.bin +firmware: radeon/hainan_me.bin +firmware: radeon/HAINAN_me.bin +firmware: radeon/hainan_pfp.bin +firmware: radeon/HAINAN_pfp.bin +firmware: radeon/hainan_rlc.bin +firmware: radeon/HAINAN_rlc.bin +firmware: radeon/hainan_smc.bin +firmware: radeon/HAINAN_smc.bin +firmware: radeon/hawaii_ce.bin +firmware: radeon/HAWAII_ce.bin +firmware: radeon/HAWAII_mc2.bin +firmware: radeon/hawaii_mc.bin +firmware: radeon/HAWAII_mc.bin +firmware: radeon/hawaii_me.bin +firmware: radeon/HAWAII_me.bin +firmware: radeon/hawaii_mec.bin +firmware: radeon/HAWAII_mec.bin +firmware: radeon/hawaii_pfp.bin +firmware: radeon/HAWAII_pfp.bin +firmware: radeon/hawaii_rlc.bin +firmware: radeon/HAWAII_rlc.bin +firmware: radeon/hawaii_sdma.bin +firmware: radeon/HAWAII_sdma.bin +firmware: radeon/hawaii_smc.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_ce.bin +firmware: radeon/kabini_me.bin +firmware: radeon/KABINI_me.bin +firmware: radeon/kabini_mec.bin +firmware: radeon/KABINI_mec.bin +firmware: radeon/kabini_pfp.bin +firmware: radeon/KABINI_pfp.bin +firmware: radeon/kabini_rlc.bin +firmware: radeon/KABINI_rlc.bin +firmware: radeon/kabini_sdma.bin +firmware: radeon/KABINI_sdma.bin +firmware: radeon/kaveri_ce.bin +firmware: radeon/KAVERI_ce.bin +firmware: radeon/kaveri_me.bin +firmware: radeon/KAVERI_me.bin +firmware: radeon/kaveri_mec2.bin +firmware: radeon/kaveri_mec.bin +firmware: radeon/KAVERI_mec.bin +firmware: radeon/kaveri_pfp.bin +firmware: radeon/KAVERI_pfp.bin +firmware: radeon/kaveri_rlc.bin +firmware: radeon/KAVERI_rlc.bin +firmware: radeon/kaveri_sdma.bin +firmware: radeon/KAVERI_sdma.bin +firmware: radeon/mullins_ce.bin +firmware: radeon/MULLINS_ce.bin +firmware: radeon/mullins_me.bin +firmware: radeon/MULLINS_me.bin +firmware: radeon/mullins_mec.bin +firmware: radeon/MULLINS_mec.bin +firmware: radeon/mullins_pfp.bin +firmware: radeon/MULLINS_pfp.bin +firmware: radeon/mullins_rlc.bin +firmware: radeon/MULLINS_rlc.bin +firmware: radeon/mullins_sdma.bin +firmware: radeon/MULLINS_sdma.bin +firmware: radeon/oland_ce.bin +firmware: radeon/OLAND_ce.bin +firmware: radeon/OLAND_mc2.bin +firmware: radeon/oland_mc.bin +firmware: radeon/OLAND_mc.bin +firmware: radeon/oland_me.bin +firmware: radeon/OLAND_me.bin +firmware: radeon/oland_pfp.bin +firmware: radeon/OLAND_pfp.bin +firmware: radeon/oland_rlc.bin +firmware: radeon/OLAND_rlc.bin +firmware: radeon/oland_smc.bin +firmware: radeon/OLAND_smc.bin +firmware: radeon/PALM_me.bin +firmware: radeon/PALM_pfp.bin +firmware: radeon/pitcairn_ce.bin +firmware: radeon/PITCAIRN_ce.bin +firmware: radeon/PITCAIRN_mc2.bin +firmware: radeon/pitcairn_mc.bin +firmware: radeon/PITCAIRN_mc.bin +firmware: radeon/pitcairn_me.bin +firmware: radeon/PITCAIRN_me.bin +firmware: radeon/pitcairn_pfp.bin +firmware: radeon/PITCAIRN_pfp.bin +firmware: radeon/pitcairn_rlc.bin +firmware: radeon/PITCAIRN_rlc.bin +firmware: radeon/pitcairn_smc.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_ce.bin +firmware: radeon/TAHITI_mc2.bin +firmware: radeon/tahiti_mc.bin +firmware: radeon/TAHITI_mc.bin +firmware: radeon/tahiti_me.bin +firmware: radeon/TAHITI_me.bin +firmware: radeon/tahiti_pfp.bin +firmware: radeon/TAHITI_pfp.bin +firmware: radeon/tahiti_rlc.bin +firmware: radeon/TAHITI_rlc.bin +firmware: radeon/tahiti_smc.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_ce.bin +firmware: radeon/VERDE_mc2.bin +firmware: radeon/verde_mc.bin +firmware: radeon/VERDE_mc.bin +firmware: radeon/verde_me.bin +firmware: radeon/VERDE_me.bin +firmware: radeon/verde_pfp.bin +firmware: radeon/VERDE_pfp.bin +firmware: radeon/verde_rlc.bin +firmware: radeon/VERDE_rlc.bin +firmware: radeon/verde_smc.bin +firmware: radeon/VERDE_smc.bin +firmware: riptide.hex +firmware: rp2.fw +firmware: rpm_firmware.bin +firmware: rsi_91x.fw +firmware: rt2561.bin +firmware: rt2561s.bin +firmware: rt2661.bin +firmware: rt2860.bin +firmware: rt2870.bin +firmware: rt73.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: 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/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/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/rtl8192cfw.bin +firmware: rtlwifi/rtl8192cfwU_B.bin +firmware: rtlwifi/rtl8192cfwU.bin +firmware: rtlwifi/rtl8192cufw_A.bin +firmware: rtlwifi/rtl8192cufw_B.bin +firmware: rtlwifi/rtl8192cufw.bin +firmware: rtlwifi/rtl8192cufw_TMSC.bin +firmware: rtlwifi/rtl8192defw.bin +firmware: rtlwifi/rtl8192eefw.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/rtl8723efw.bin +firmware: rtlwifi/rtl8821aefw.bin +firmware: sb16/alaw_main.csp +firmware: sb16/ima_adpcm_capture.csp +firmware: sb16/ima_adpcm_init.csp +firmware: sb16/ima_adpcm_playback.csp +firmware: sb16/mulaw_main.csp +firmware: scope.cod +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: sndscape.co0 +firmware: sndscape.co1 +firmware: sndscape.co2 +firmware: sndscape.co3 +firmware: sndscape.co4 +firmware: softing-4.6/bcard2.bin +firmware: softing-4.6/bcard.bin +firmware: softing-4.6/cancard.bin +firmware: softing-4.6/cancrd2.bin +firmware: softing-4.6/cansja.bin +firmware: softing-4.6/ldcard2.bin +firmware: softing-4.6/ldcard.bin +firmware: solos-db-FPGA.bin +firmware: solos-Firmware.bin +firmware: solos-FPGA.bin +firmware: sun/cassini.bin +firmware: symbol_sp24t_prim_fw +firmware: symbol_sp24t_sec_fw +firmware: tdmb_denver.inp +firmware: tdmb_nova_12mhz_b0.inp +firmware: tdmb_nova_12mhz.inp +firmware: tehuti/bdx.bin +firmware: ti_3410.fw +firmware: ti_5052.fw +firmware: ti-connectivity/wl1251-fw.bin +firmware: ti-connectivity/wl1251-nvs.bin +firmware: ti-connectivity/wl1271-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: tigon/tg3.bin +firmware: tigon/tg3_tso5.bin +firmware: tigon/tg3_tso.bin +firmware: ttusb-budget/dspbootcode.bin +firmware: turtlebeach/msndinit.bin +firmware: turtlebeach/msndperm.bin +firmware: turtlebeach/pndsperm.bin +firmware: turtlebeach/pndspini.bin +firmware: ueagle-atm/930-fpga.bin +firmware: ueagle-atm/adi930.fw +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/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: usbduxfast_firmware.bin +firmware: usbdux_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: vxge/X3fw.ncf +firmware: vxge/X3fw-pxe.ncf +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: wavefront.os +firmware: wd719x-risc.bin +firmware: wd719x-wcs.bin +firmware: whiteheat.fw +firmware: whiteheat_loader.fw +firmware: wil6210.brd +firmware: wil6210.fw +firmware: wlan/prima/WCNSS_qcom_wlan_nv.bin +firmware: xc3028L-v36.fw +firmware: xc3028-v27.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: yamaha/yss225_registers.bin +firmware: zd1201-ap.fw +firmware: zd1201.fw +firmware: zd1211/zd1211b_ub +firmware: zd1211/zd1211b_uphr +firmware: zd1211/zd1211b_ur +firmware: zd1211/zd1211_ub +firmware: zd1211/zd1211_uphr +firmware: zd1211/zd1211_ur --- linux-raspi2-4.2.0.orig/debian.master/abi/4.2.0-26.31/i386/generic +++ linux-raspi2-4.2.0/debian.master/abi/4.2.0-26.31/i386/generic @@ -0,0 +1,19514 @@ +EXPORT_SYMBOL arch/x86/kvm/kvm 0x12ca23bd kvm_cpu_has_pending_timer +EXPORT_SYMBOL arch/x86/platform/scx200/scx200 0x254e5667 scx200_gpio_base +EXPORT_SYMBOL arch/x86/platform/scx200/scx200 0x35a3c008 scx200_gpio_configure +EXPORT_SYMBOL arch/x86/platform/scx200/scx200 0x8cfa375c scx200_gpio_shadow +EXPORT_SYMBOL arch/x86/platform/scx200/scx200 0x907665bd scx200_cb_base +EXPORT_SYMBOL crypto/gf128mul 0x0c2f123f gf128mul_4k_bbe +EXPORT_SYMBOL crypto/gf128mul 0x1068004b gf128mul_bbe +EXPORT_SYMBOL crypto/gf128mul 0x2f2889a0 gf128mul_init_64k_lle +EXPORT_SYMBOL crypto/gf128mul 0x3755f990 gf128mul_init_64k_bbe +EXPORT_SYMBOL crypto/gf128mul 0x384ef9ce gf128mul_64k_bbe +EXPORT_SYMBOL crypto/gf128mul 0x56af0dbd gf128mul_x_ble +EXPORT_SYMBOL crypto/gf128mul 0x83581089 gf128mul_init_4k_lle +EXPORT_SYMBOL crypto/gf128mul 0x9b2560b9 gf128mul_init_4k_bbe +EXPORT_SYMBOL crypto/gf128mul 0x9e13f6f6 gf128mul_lle +EXPORT_SYMBOL crypto/gf128mul 0xbd17a0df gf128mul_4k_lle +EXPORT_SYMBOL crypto/gf128mul 0xc0890413 gf128mul_64k_lle +EXPORT_SYMBOL crypto/gf128mul 0xd60736ec gf128mul_free_64k +EXPORT_SYMBOL crypto/mcryptd 0x2d7e229d mcryptd_arm_flusher +EXPORT_SYMBOL crypto/xor 0x5b6c00e6 xor_blocks +EXPORT_SYMBOL drivers/acpi/nfit 0xa7e9a159 to_nfit_uuid +EXPORT_SYMBOL drivers/acpi/video 0x043e4593 acpi_video_get_edid +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 0x8826c13b acpi_video_register +EXPORT_SYMBOL drivers/acpi/video 0xe92ca535 acpi_video_set_dmi_backlight_type +EXPORT_SYMBOL drivers/atm/suni 0x449abbae suni_init +EXPORT_SYMBOL drivers/atm/uPD98402 0x9fbec561 uPD98402_init +EXPORT_SYMBOL drivers/bcma/bcma 0x400b6799 bcma_core_irq +EXPORT_SYMBOL drivers/bcma/bcma 0xc8c566f8 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 0x056ad998 pi_write_regr +EXPORT_SYMBOL drivers/block/paride/paride 0x0679b1d9 pi_release +EXPORT_SYMBOL drivers/block/paride/paride 0x1a16abd3 pi_read_regr +EXPORT_SYMBOL drivers/block/paride/paride 0x3dde138e pi_init +EXPORT_SYMBOL drivers/block/paride/paride 0x4267110a pi_register_driver +EXPORT_SYMBOL drivers/block/paride/paride 0x4942e378 paride_register +EXPORT_SYMBOL drivers/block/paride/paride 0x521e3a70 pi_read_block +EXPORT_SYMBOL drivers/block/paride/paride 0x5bef1843 pi_write_block +EXPORT_SYMBOL drivers/block/paride/paride 0x81a5050c pi_schedule_claimed +EXPORT_SYMBOL drivers/block/paride/paride 0x969b349b pi_disconnect +EXPORT_SYMBOL drivers/block/paride/paride 0xb21ba07d pi_unregister_driver +EXPORT_SYMBOL drivers/block/paride/paride 0xc39c47df pi_connect +EXPORT_SYMBOL drivers/block/paride/paride 0xea6d1fd0 paride_unregister +EXPORT_SYMBOL drivers/block/paride/paride 0xfc447166 pi_do_claimed +EXPORT_SYMBOL drivers/bluetooth/btbcm 0x3eef3d8b btbcm_patchram +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x1348760d ipmi_request_settime +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x16dcec76 ipmi_set_my_address +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x1a10c898 ipmi_set_maintenance_mode +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x1aba5db8 ipmi_unregister_smi +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x1fae3bac ipmi_addr_src_to_str +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x40f2b10c ipmi_alloc_smi_msg +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x423b776a ipmi_create_user +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x4c971bec ipmi_smi_msg_received +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x524f6f51 ipmi_get_my_address +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x5e80f37c ipmi_unregister_for_cmd +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x5fcdcc05 ipmi_get_my_LUN +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x6013c35b ipmi_smi_add_proc_entry +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x67cb9784 ipmi_poll_interface +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x76bfdd40 ipmi_register_smi +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x78fd36e7 ipmi_request_supply_msgs +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x804f922a ipmi_addr_length +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x8c8ee770 ipmi_destroy_user +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x96cbcc81 ipmi_get_version +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xa2a98b91 ipmi_get_maintenance_mode +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xab324cd3 ipmi_smi_watcher_unregister +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xb375affd ipmi_get_smi_info +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xd69f8567 ipmi_set_gets_events +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xe06781aa ipmi_smi_watcher_register +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xe0fa83f2 ipmi_register_for_cmd +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xe4f4665b ipmi_validate_addr +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xe6ab72a6 ipmi_set_my_LUN +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xf2576cb9 ipmi_smi_watchdog_pretimeout +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xfcb77cfd ipmi_free_recv_msg +EXPORT_SYMBOL drivers/char/nsc_gpio 0x3f0eb54a nsc_gpio_write +EXPORT_SYMBOL drivers/char/nsc_gpio 0x4fc8bbe1 nsc_gpio_dump +EXPORT_SYMBOL drivers/char/nsc_gpio 0x5f4ed478 nsc_gpio_read +EXPORT_SYMBOL drivers/char/nvram 0x0f28cb91 nvram_read_byte +EXPORT_SYMBOL drivers/char/nvram 0x17ff2c1d __nvram_read_byte +EXPORT_SYMBOL drivers/char/nvram 0x2adec1e0 __nvram_check_checksum +EXPORT_SYMBOL drivers/char/nvram 0x7da28f12 nvram_check_checksum +EXPORT_SYMBOL drivers/char/nvram 0x9ce3f83f nvram_write_byte +EXPORT_SYMBOL drivers/char/nvram 0xa8813189 __nvram_write_byte +EXPORT_SYMBOL drivers/char/tpm/st33zp24/tpm_st33zp24 0x77c3f024 st33zp24_pm_suspend +EXPORT_SYMBOL drivers/char/tpm/st33zp24/tpm_st33zp24 0xa7b2e26b st33zp24_probe +EXPORT_SYMBOL drivers/char/tpm/st33zp24/tpm_st33zp24 0xdd75cf20 st33zp24_pm_resume +EXPORT_SYMBOL drivers/char/tpm/st33zp24/tpm_st33zp24 0xfea3288f st33zp24_remove +EXPORT_SYMBOL drivers/char/xillybus/xillybus_core 0x21e698f3 xillybus_endpoint_discovery +EXPORT_SYMBOL drivers/char/xillybus/xillybus_core 0x25978d50 xillybus_isr +EXPORT_SYMBOL drivers/char/xillybus/xillybus_core 0x9cefac74 xillybus_endpoint_remove +EXPORT_SYMBOL drivers/char/xillybus/xillybus_core 0xcd564060 xillybus_init_endpoint +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0x1cce3a19 dw_dma_get_src_addr +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0x41756c07 dw_dma_cyclic_prep +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0x7d0327e1 dw_dma_get_dst_addr +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0xa1307cdc dw_dma_cyclic_free +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0xdd9850c1 dw_dma_cyclic_stop +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0xea42ea9a dw_dma_cyclic_start +EXPORT_SYMBOL drivers/dma/ioat/ioatdma 0x57ff6a82 ioat_dma_setup_interrupts +EXPORT_SYMBOL drivers/edac/edac_core 0x286dc441 edac_mc_find +EXPORT_SYMBOL drivers/firewire/firewire-core 0x01b76eb1 fw_core_add_address_handler +EXPORT_SYMBOL drivers/firewire/firewire-core 0x04dd92ce fw_core_add_descriptor +EXPORT_SYMBOL drivers/firewire/firewire-core 0x04f1a0d3 fw_iso_context_flush_completions +EXPORT_SYMBOL drivers/firewire/firewire-core 0x05c6e259 fw_card_add +EXPORT_SYMBOL drivers/firewire/firewire-core 0x078593dc fw_cancel_transaction +EXPORT_SYMBOL drivers/firewire/firewire-core 0x0eab5d4b fw_iso_context_stop +EXPORT_SYMBOL drivers/firewire/firewire-core 0x13cd6fb2 fw_device_enable_phys_dma +EXPORT_SYMBOL drivers/firewire/firewire-core 0x16e91e21 fw_csr_iterator_next +EXPORT_SYMBOL drivers/firewire/firewire-core 0x178ee9d2 fw_run_transaction +EXPORT_SYMBOL drivers/firewire/firewire-core 0x1c9d2fa3 fw_card_initialize +EXPORT_SYMBOL drivers/firewire/firewire-core 0x1f02775c fw_schedule_bus_reset +EXPORT_SYMBOL drivers/firewire/firewire-core 0x1f65807b fw_iso_context_queue_flush +EXPORT_SYMBOL drivers/firewire/firewire-core 0x2885fec5 fw_get_request_speed +EXPORT_SYMBOL drivers/firewire/firewire-core 0x3c56ef91 fw_workqueue +EXPORT_SYMBOL drivers/firewire/firewire-core 0x4d5d4eca fw_core_remove_descriptor +EXPORT_SYMBOL drivers/firewire/firewire-core 0x4f298b5c fw_iso_context_start +EXPORT_SYMBOL drivers/firewire/firewire-core 0x600b693c fw_core_handle_bus_reset +EXPORT_SYMBOL drivers/firewire/firewire-core 0x65c9438b fw_csr_iterator_init +EXPORT_SYMBOL drivers/firewire/firewire-core 0x6ba9b726 fw_iso_context_destroy +EXPORT_SYMBOL drivers/firewire/firewire-core 0x7e0a8ee1 fw_iso_context_queue +EXPORT_SYMBOL drivers/firewire/firewire-core 0x7e431b14 fw_csr_string +EXPORT_SYMBOL drivers/firewire/firewire-core 0x839b8a6a fw_iso_context_create +EXPORT_SYMBOL drivers/firewire/firewire-core 0x86468d44 fw_rcode_string +EXPORT_SYMBOL drivers/firewire/firewire-core 0x891afb76 fw_send_request +EXPORT_SYMBOL drivers/firewire/firewire-core 0x90863005 fw_high_memory_region +EXPORT_SYMBOL drivers/firewire/firewire-core 0x911bbf7f fw_iso_resource_manage +EXPORT_SYMBOL drivers/firewire/firewire-core 0x923d7f81 fw_iso_buffer_init +EXPORT_SYMBOL drivers/firewire/firewire-core 0x9b758475 fw_send_response +EXPORT_SYMBOL drivers/firewire/firewire-core 0x9ba59446 fw_bus_type +EXPORT_SYMBOL drivers/firewire/firewire-core 0xa965075f fw_iso_buffer_destroy +EXPORT_SYMBOL drivers/firewire/firewire-core 0xb5976743 fw_core_handle_request +EXPORT_SYMBOL drivers/firewire/firewire-core 0xc37bf39e fw_fill_response +EXPORT_SYMBOL drivers/firewire/firewire-core 0xc88674f0 fw_core_handle_response +EXPORT_SYMBOL drivers/firewire/firewire-core 0xe2ecfe08 fw_core_remove_address_handler +EXPORT_SYMBOL drivers/firewire/firewire-core 0xf3e19ac6 fw_core_remove_card +EXPORT_SYMBOL drivers/firmware/dcdbas 0xa75079d6 dcdbas_smi_request +EXPORT_SYMBOL drivers/fmc/fmc 0x20146ba5 fmc_device_unregister_n +EXPORT_SYMBOL drivers/fmc/fmc 0x3454e241 fmc_show_sdb_tree +EXPORT_SYMBOL drivers/fmc/fmc 0x35adcaf7 fmc_find_sdb_device +EXPORT_SYMBOL drivers/fmc/fmc 0x58d8b085 fmc_driver_register +EXPORT_SYMBOL drivers/fmc/fmc 0x5e67c62b fmc_reprogram +EXPORT_SYMBOL drivers/fmc/fmc 0x977e75e3 fmc_free_sdb_tree +EXPORT_SYMBOL drivers/fmc/fmc 0x99594d9b fmc_scan_sdb_tree +EXPORT_SYMBOL drivers/fmc/fmc 0xdd639d86 fmc_device_register +EXPORT_SYMBOL drivers/fmc/fmc 0xdefc1681 fmc_device_register_n +EXPORT_SYMBOL drivers/fmc/fmc 0xfa7b7326 fmc_device_unregister +EXPORT_SYMBOL drivers/fmc/fmc 0xffe58cf4 fmc_driver_unregister +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0049ea49 drm_modeset_acquire_fini +EXPORT_SYMBOL drivers/gpu/drm/drm 0x038b913a drm_master_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0x056cd575 drm_dev_register +EXPORT_SYMBOL drivers/gpu/drm/drm 0x05842d49 drm_legacy_getsarea +EXPORT_SYMBOL drivers/gpu/drm/drm 0x05da469e drm_add_modes_noedid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x069c4496 drm_debugfs_create_files +EXPORT_SYMBOL drivers/gpu/drm/drm 0x06d98409 drm_modeset_legacy_acquire_ctx +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0773f7b0 drm_calc_vbltimestamp_from_scanoutpos +EXPORT_SYMBOL drivers/gpu/drm/drm 0x08049492 drm_atomic_add_affected_connectors +EXPORT_SYMBOL drivers/gpu/drm/drm 0x09031cf1 drm_modeset_lock_all +EXPORT_SYMBOL drivers/gpu/drm/drm 0x09503b28 drm_universal_plane_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x099c48a1 drm_modeset_backoff +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0a037de9 drm_prime_pages_to_sg +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0a1f7925 drm_add_edid_modes +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0a72f765 drm_clflush_virt_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0ae4b94c drm_ht_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0b061d58 drm_gem_mmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0bed361a drm_i2c_encoder_restore +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0d6dac00 drm_send_vblank_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0f4017d1 drm_legacy_addbufs_pci +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0fccafb1 drm_global_item_unref +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 0x10931d45 drm_irq_install +EXPORT_SYMBOL drivers/gpu/drm/drm 0x127f315e drm_property_lookup_blob +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1386537b drm_plane_force_disable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x14511b83 drm_atomic_get_connector_state +EXPORT_SYMBOL drivers/gpu/drm/drm 0x145d9aeb drm_mode_create_aspect_ratio_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1461fd76 drm_open +EXPORT_SYMBOL drivers/gpu/drm/drm 0x14a9a178 drm_get_format_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x154fd7ae drm_probe_ddc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x170e7f88 drm_mode_equal +EXPORT_SYMBOL drivers/gpu/drm/drm 0x17c0a5bf drm_gem_object_lookup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x182a229c drm_bridge_post_disable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1881adad drm_gem_dumb_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x194eadaa drm_edid_header_is_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1983d87d drm_agp_bind +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1a22d3f7 drm_vma_offset_lookup_locked +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1a546ddd drm_mm_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1a770ac3 drm_detect_hdmi_monitor +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1b242cf7 drm_vma_offset_lookup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1dd71f7a drm_err +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1ed6ebc7 drm_agp_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1ef7788f drm_framebuffer_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1f2cd683 drm_gem_mmap_obj +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2034d227 drm_mode_plane_set_obj_prop +EXPORT_SYMBOL drivers/gpu/drm/drm 0x20645642 drm_debug +EXPORT_SYMBOL drivers/gpu/drm/drm 0x210e2e32 drm_i2c_encoder_save +EXPORT_SYMBOL drivers/gpu/drm/drm 0x218b4c97 drm_atomic_state_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x22acaf62 drm_get_cea_aspect_ratio +EXPORT_SYMBOL drivers/gpu/drm/drm 0x245d0778 drm_crtc_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2735b118 drm_panel_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2855d70f drm_gem_get_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2866dee6 drm_property_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2932a77d drm_bridge_disable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x296c0b84 drm_prime_sg_to_page_addr_arrays +EXPORT_SYMBOL drivers/gpu/drm/drm 0x29a010e6 drm_mm_insert_node_in_range_generic +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2abfffc0 drm_mode_set_crtcinfo +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2adac309 drm_property_create_bitmask +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2b5d4b3d drm_crtc_vblank_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2c4ea1e2 drm_framebuffer_unregister_private +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2c7ff419 drm_i2c_encoder_mode_set +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2ccafc69 drm_framebuffer_unreference +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2d50570f drm_rect_calc_hscale +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2df894a2 drm_pci_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2e7a4300 drm_rgb_quant_range_selectable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2f5dde29 drm_encoder_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2faa7904 drm_panel_detach +EXPORT_SYMBOL drivers/gpu/drm/drm 0x31ac8b35 drm_gtf_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x31c64905 drm_gem_private_object_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x338aacdb drm_vblank_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3406fa91 drm_flip_work_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x346127a7 drm_global_item_ref +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3576569c drm_mode_create_rotation_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x37d40d2f drm_mode_connector_attach_encoder +EXPORT_SYMBOL drivers/gpu/drm/drm 0x37ebe743 drm_mm_replace_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0x38a4f7ae drm_format_num_planes +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3ac1fef9 drm_mode_legacy_fb_format +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3b49b509 drm_prime_gem_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3b752d10 drm_atomic_get_plane_state +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3b9d009a drm_format_plane_cpp +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3bef1786 drm_mode_set_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3da9cf9b drm_atomic_connectors_for_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3e2d5c03 drm_gem_vm_close +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3eb37b9d drm_ht_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3f1157ca drm_mode_create_tile_group +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3f813928 drm_mode_create_suggested_offset_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0x410a3900 drm_mode_validate_basic +EXPORT_SYMBOL drivers/gpu/drm/drm 0x45c6f2fb drm_clflush_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4862c746 drm_set_preferred_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x490cfb78 drm_mm_reserve_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0x49a46886 drm_mode_object_find +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4b63f6e5 drm_mode_find_dmt +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4ba4df3e drm_vma_offset_manager_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4bdeda7b drm_dev_set_unique +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4c511235 drm_edid_is_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4cc24bdb drm_property_create_bool +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4e093819 drm_i2c_encoder_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4ea1f5a2 drm_gem_object_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x508adc3b drm_i2c_encoder_prepare +EXPORT_SYMBOL drivers/gpu/drm/drm 0x50e28c07 drm_edid_to_sad +EXPORT_SYMBOL drivers/gpu/drm/drm 0x514eac4d drm_modeset_unlock +EXPORT_SYMBOL drivers/gpu/drm/drm 0x52282e95 drm_atomic_state_default_clear +EXPORT_SYMBOL drivers/gpu/drm/drm 0x526f6f71 drm_rect_calc_hscale_relaxed +EXPORT_SYMBOL drivers/gpu/drm/drm 0x55588072 drm_unplug_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0x55e0dc7c drm_gem_handle_delete +EXPORT_SYMBOL drivers/gpu/drm/drm 0x563d773e drm_gem_prime_import +EXPORT_SYMBOL drivers/gpu/drm/drm 0x56984de5 drm_cvt_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x57b6efe3 drm_ioctl_flags +EXPORT_SYMBOL drivers/gpu/drm/drm 0x57e11695 drm_connector_index +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5811bed2 drm_mode_config_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x58a86210 drm_vblank_pre_modeset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x58cecc6d drm_panel_attach +EXPORT_SYMBOL drivers/gpu/drm/drm 0x598b7fae drm_dev_unregister +EXPORT_SYMBOL drivers/gpu/drm/drm 0x59ef50f0 drm_edid_block_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5a3fb47f drm_property_unreference_blob +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5a537a84 drm_platform_set_busid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5b13dacb drm_atomic_connector_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5cc4f8fe drm_mode_group_init_legacy_group +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5cfe8613 drm_mode_debug_printmodeline +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5dd160de drm_object_property_set_value +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5f14485c drm_mode_config_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5f4bde01 drm_pcie_get_speed_cap_mask +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5f6598f5 drm_gem_prime_export +EXPORT_SYMBOL drivers/gpu/drm/drm 0x60325cc7 drm_property_create_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0x60769fa4 drm_vblank_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0x608b16e9 drm_modeset_unlock_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x61bb77a8 drm_mode_create_scaling_mode_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x61dd4140 drm_vma_node_is_allowed +EXPORT_SYMBOL drivers/gpu/drm/drm 0x629c05e1 drm_clflush_sg +EXPORT_SYMBOL drivers/gpu/drm/drm 0x62da28ec drm_handle_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0x62f922b9 drm_bridge_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0x63178a7c drm_modeset_unlock_all +EXPORT_SYMBOL drivers/gpu/drm/drm 0x63e71f4b drm_crtc_vblank_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0x64e21869 drm_hdmi_avi_infoframe_from_display_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x64e4bc47 drm_flip_work_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x64ecfbd8 drm_noop +EXPORT_SYMBOL drivers/gpu/drm/drm 0x666583b6 drm_vblank_post_modeset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x66b1599a drm_get_edid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x67633846 drm_mm_insert_node_generic +EXPORT_SYMBOL drivers/gpu/drm/drm 0x68650201 drm_master_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6900d335 drm_rect_clip_scaled +EXPORT_SYMBOL drivers/gpu/drm/drm 0x696af21a drm_vblank_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0x69a3220b drm_vblank_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6b0ea26a drm_mode_create_dvi_i_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6bc5ebc8 drm_atomic_state_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6bdf155c drm_vma_offset_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6d97d755 drm_dev_ref +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6da39459 drm_atomic_crtc_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6dfd5e15 drm_i2c_encoder_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6e30ba8e drm_rect_rotate_inv +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6e57514d drm_legacy_ioremap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6f0166e0 drm_bridge_pre_enable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6f0bcba2 drm_bridge_attach +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6f7691bf drm_modeset_lock_interruptible +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6fe41696 drm_connector_register +EXPORT_SYMBOL drivers/gpu/drm/drm 0x706d3106 drm_vma_offset_manager_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x71e1952f drm_platform_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x73033ef9 drm_framebuffer_lookup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x734fb21a drm_framebuffer_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x73ee7202 drm_mode_connector_list_update +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7601d0f1 drm_warn_on_modeset_not_all_locked +EXPORT_SYMBOL drivers/gpu/drm/drm 0x76c171b5 drm_framebuffer_reference +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7711e6b5 drm_legacy_rmmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x785be0e8 drm_crtc_vblank_off +EXPORT_SYMBOL drivers/gpu/drm/drm 0x79fef9c3 drm_agp_acquire +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7a9ed339 drm_atomic_set_mode_prop_for_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7af8a359 drm_property_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7bb33551 drm_mode_copy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7e06126e drm_pci_exit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7f2d47ef drm_legacy_idlelock_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7fb66a6d drm_mode_create_from_cmdline_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8178ced5 drm_atomic_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x81e3f15f drm_vma_node_revoke +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8210165f drm_mode_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x82a8d6e1 drm_i2c_encoder_detect +EXPORT_SYMBOL drivers/gpu/drm/drm 0x82c2998f drm_flip_work_allocate_task +EXPORT_SYMBOL drivers/gpu/drm/drm 0x83214ce2 drm_gem_dmabuf_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x83c98cfa drm_gtf_mode_complex +EXPORT_SYMBOL drivers/gpu/drm/drm 0x840444ca drm_plane_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x84605d08 drm_vblank_on +EXPORT_SYMBOL drivers/gpu/drm/drm 0x84afa19b drm_mode_equal_no_clocks_no_stereo +EXPORT_SYMBOL drivers/gpu/drm/drm 0x84afaa56 drm_mode_set_config_internal +EXPORT_SYMBOL drivers/gpu/drm/drm 0x871ab41a drm_rect_intersect +EXPORT_SYMBOL drivers/gpu/drm/drm 0x87caa595 drm_crtc_index +EXPORT_SYMBOL drivers/gpu/drm/drm 0x894de6bb drm_mode_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x89aabb19 drm_gem_vm_open +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8a13d4e2 drm_property_create_signed_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8af52a51 drm_agp_enable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8c72ac44 drm_get_pci_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8d5529af drm_gem_put_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8de13715 drm_format_vert_chroma_subsampling +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8e2de6b2 drm_atomic_check_only +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8e645898 drm_legacy_idlelock_take +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8ed200cb drm_gem_free_mmap_offset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8ee505db drm_edid_to_eld +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8eff9111 drm_ht_find_item +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9060a862 drm_irq_uninstall +EXPORT_SYMBOL drivers/gpu/drm/drm 0x90b50a0d drm_mode_vrefresh +EXPORT_SYMBOL drivers/gpu/drm/drm 0x916c679a drm_i2c_encoder_mode_fixup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x91e7bfc1 drm_mode_create_dirty_info_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x91fec1cc drm_rect_calc_vscale +EXPORT_SYMBOL drivers/gpu/drm/drm 0x92408488 drm_mm_scan_add_block +EXPORT_SYMBOL drivers/gpu/drm/drm 0x92d16a31 drm_ioctl +EXPORT_SYMBOL drivers/gpu/drm/drm 0x93790a42 drm_bridge_enable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x94581887 drm_agp_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9489967d drm_property_reference_blob +EXPORT_SYMBOL drivers/gpu/drm/drm 0x94ff3f76 drm_mode_create_tv_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0x967582b4 drm_crtc_wait_one_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0x96d5bfde drm_pci_set_busid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x98bdf4c1 drm_gem_prime_fd_to_handle +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9972db48 drm_rect_calc_vscale_relaxed +EXPORT_SYMBOL drivers/gpu/drm/drm 0x99b9df79 drm_agp_info +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9ad28959 drm_atomic_get_crtc_state +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9b907858 drm_mode_duplicate +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9c10d0f9 drm_bridge_mode_fixup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9d048b3d drm_mode_connector_set_tile_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9d0fdc71 drm_flip_work_queue_task +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9d1cb20c drm_vblank_count +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9e925607 drm_crtc_vblank_on +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa0f31357 drm_agp_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa1037217 drm_hdmi_vendor_infoframe_from_display_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa1c9c5da drm_display_info_set_bus_formats +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa28078b2 drm_edid_duplicate +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa41607c7 drm_i2c_encoder_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa4466414 drm_mm_remove_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa73c36da drm_gem_object_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa8e00923 drm_mm_dump_table +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa94a8994 drm_atomic_state_default_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa96acfcb drm_rect_debug_print +EXPORT_SYMBOL drivers/gpu/drm/drm 0xac4eed1b drm_connector_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xaf458985 drm_poll +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb03fe3bb drm_crtc_check_viewport +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb053adda drm_rect_rotate +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb10e9444 drm_panel_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb1ca8ad0 drm_vma_node_allow +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb241b526 drm_match_cea_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb39c4c28 drm_connector_unregister +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb3a788a2 drm_modeset_lock_all_crtcs +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb5c77599 drm_agp_bind_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb5dd0648 drm_flip_work_queue +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb5e967fc drm_property_create_object +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb714e5a8 drm_mode_validate_size +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb95ae3ad drm_atomic_set_mode_for_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xba511357 drm_crtc_send_vblank_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0xba955a7f drm_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbc183801 drm_atomic_legacy_backoff +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbcd1ef8d drm_plane_index +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbd4a96cd drm_crtc_init_with_planes +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbdf547b1 drm_wait_one_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbf3c01f4 drm_crtc_handle_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbfaf288e drm_atomic_set_crtc_for_connector +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc226fbdd drm_calc_timestamping_constants +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc2cd364e drm_vblank_off +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc360e7e2 drm_ut_debug_printk +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc48fe547 drm_atomic_set_crtc_for_plane +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc4d53801 drm_legacy_rmmap_locked +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc50bc5b4 drm_legacy_mmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc570f6f4 drm_read +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc58535b8 drm_atomic_plane_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc63c3a06 drm_atomic_state_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc63cc4d5 drm_gem_handle_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc65469f3 drm_atomic_set_fb_for_plane +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc738cd40 drm_modeset_backoff_interruptible +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc854cd99 drm_mode_connector_set_path_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xca45efbc drm_format_horz_chroma_subsampling +EXPORT_SYMBOL drivers/gpu/drm/drm 0xca5c7790 drm_mm_init_scan_with_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcaa9f4d2 drm_modeset_acquire_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcad1598c drm_av_sync_delay +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcd0fc417 drm_ht_just_insert_please +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcfaf363f drm_connector_unplug_all +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd11e8859 drm_plane_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd176c270 drm_property_create_blob +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd18f53d3 drm_vma_offset_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd2335101 drm_fb_get_bpp_depth +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd2bbd37b drm_connector_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd2f4d60e drm_atomic_add_affected_planes +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd52b1d11 drm_mm_init_scan +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd63eb126 drm_crtc_vblank_reset +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd64806c3 drm_bridge_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd685da54 drm_legacy_addmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd6a0d66b drm_vblank_count_and_time +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd70c8470 drm_mm_debug_table +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd7b86b13 __drm_modeset_lock_all +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd878e4bc drm_debugfs_remove_files +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd882ccf3 drm_framebuffer_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd8ca45ab drm_panel_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xda2f5773 drm_gem_prime_handle_to_fd +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdad33a3a drm_reinit_primary_mode_group +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdb4c0e81 drm_pci_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdbb5a9f5 drm_ht_remove_item +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdc7b5509 drm_mode_crtc_set_gamma_size +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdd078bb8 drm_mode_get_tile_group +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdd150721 drm_mm_takedown +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdda0835f drm_gem_create_mmap_offset_size +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdda7455a drm_object_attach_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdf666902 drm_rotation_simplify +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe076cdda drm_legacy_addbufs_agp +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe17b709d drm_ati_pcigart_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe24d72d0 drm_plane_from_index +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe293a6e7 drm_crtc_vblank_count +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe3ed4a25 drm_ati_pcigart_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe51d89b5 drm_mm_clean +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe6de8ae3 drm_property_create_enum +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe7197773 drm_ht_insert_item +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe81d0b2a drm_legacy_ioremapfree +EXPORT_SYMBOL drivers/gpu/drm/drm 0xeb22957b drm_mode_parse_command_line_for_connector +EXPORT_SYMBOL drivers/gpu/drm/drm 0xeb40ffc6 drm_pci_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0xec24714c drm_mode_connector_update_edid_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xed80a215 drm_atomic_state_clear +EXPORT_SYMBOL drivers/gpu/drm/drm 0xee24fe77 drm_i2c_encoder_dpms +EXPORT_SYMBOL drivers/gpu/drm/drm 0xeeb3d130 drm_encoder_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xefabdbd2 drm_legacy_ioremap_wc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf07bebf4 drm_mode_probed_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf0c78b0b drm_mode_config_reset +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf1421d13 drm_mode_sort +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf1f4e7e2 drm_flip_work_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf29b8c43 drm_modeset_drop_locks +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf3e77585 drm_select_eld +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf4097d6d drm_dev_unref +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf42f6067 drm_sysfs_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf4fb1ded drm_bridge_mode_set +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf557bbef drm_gem_create_mmap_offset +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf7e3dc6e drm_modeset_lock_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf826b1a5 drm_property_add_enum +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf95e2700 drm_crtc_get_hv_timing +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf9e72bd1 drm_object_property_get_value +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfa0dd9c3 drm_modeset_lock +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfa120d24 drm_dev_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfa840751 drm_put_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfb5f8542 drm_mode_prune_invalid +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfcf54a4f drm_mm_scan_remove_block +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfd063935 drm_edid_to_speaker_allocation +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfd69de31 drm_agp_unbind +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfd86ac72 drm_atomic_async_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0xff48d0b8 drm_gem_object_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0xff537c86 drm_mode_hsync +EXPORT_SYMBOL drivers/gpu/drm/drm 0xffc6c87a drm_detect_monitor_audio +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x09225cbe drm_kms_helper_poll_disable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x098e47d2 drm_dp_link_train_clock_recovery_delay +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0c3a3502 drm_plane_helper_update +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0cc8f924 drm_pick_cmdline_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0f96ec70 drm_dp_clock_recovery_ok +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x119848f2 drm_dp_mst_deallocate_vcpi +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x12a465f2 drm_dp_link_power_down +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x13dec125 drm_primary_helper_funcs +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x14934597 drm_dp_dpcd_read_link_status +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x163251c8 drm_dp_link_train_channel_eq_delay +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x173fcaf1 drm_dp_mst_get_edid +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x17662f22 drm_fb_helper_single_add_all_connectors +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x1e140d7d drm_fb_helper_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2500e329 drm_fb_helper_debug_enter +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x284fa11b drm_helper_mode_fill_fb_struct +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2ccd8c18 drm_helper_hpd_irq_event +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2dd5f312 drm_atomic_helper_check +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x30351e3c drm_atomic_helper_crtc_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x308360ba drm_plane_helper_check_update +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x32a17062 __drm_atomic_helper_connector_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x34871adf drm_dp_channel_eq_ok +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x34935dc3 drm_atomic_helper_check_planes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x350947c1 drm_dp_mst_dump_topology +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x36e9fda4 drm_helper_connector_dpms +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x37f3c1c5 drm_atomic_helper_page_flip +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x38c56798 drm_dp_link_power_up +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3a0f72f3 drm_dp_find_vcpi_slots +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3c330e63 drm_fb_helper_check_var +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3c42148e drm_helper_crtc_in_use +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3c6f09e9 drm_fb_helper_fini +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3de1efde drm_dp_mst_detect_port +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3e4125ad drm_dp_mst_topology_mgr_resume +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x40326662 drm_fb_helper_prepare +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x47292ca2 drm_atomic_helper_update_plane +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x473ff66d drm_fb_helper_fill_var +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x49237573 drm_atomic_helper_prepare_planes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x493f40ff drm_atomic_helper_crtc_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x496fe38c drm_atomic_helper_crtc_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4cddbac3 drm_crtc_helper_set_config +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4d8cb62b drm_fb_helper_restore_fbdev_mode_unlocked +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4ec02469 drm_dp_mst_allocate_vcpi +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x51434e0b drm_dp_link_configure +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x526fa2fb drm_helper_probe_single_connector_modes_nomerge +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x543e8624 drm_fb_helper_fill_fix +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x54acf3ca drm_atomic_helper_commit_modeset_disables +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x574061fc drm_fb_helper_pan_display +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5b273e85 __drm_atomic_helper_plane_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5ce0e268 drm_atomic_helper_connector_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5e8a0280 drm_atomic_helper_plane_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x632a1d7f __drm_atomic_helper_plane_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x63c5efc3 drm_atomic_helper_connector_dpms +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x67e1dd01 drm_atomic_helper_plane_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x69a40779 drm_kms_helper_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x70cb164a drm_helper_disable_unused_functions +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x711a004a drm_dp_link_rate_to_bw_code +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x71290236 drm_fb_helper_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x73d76bd8 drm_atomic_helper_commit_modeset_enables +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x77cb4228 drm_primary_helper_update +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x78733294 drm_dp_mst_topology_mgr_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x78de4393 drm_plane_helper_disable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x796e75a4 drm_atomic_helper_commit_planes_on_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7dc7faa2 drm_primary_helper_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7e26b371 drm_atomic_helper_crtc_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x84e924ba drm_dp_get_adjust_request_pre_emphasis +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x89b0fe5e drm_kms_helper_poll_fini +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8b1b6e1d drm_helper_probe_single_connector_modes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8b2735fb drm_dp_mst_topology_mgr_set_mst +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8f9f4783 drm_atomic_helper_cleanup_planes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8ff58e6f drm_atomic_helper_check_modeset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x93656786 drm_dp_link_probe +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x94c31f1b drm_dp_aux_unregister +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa33fa818 drm_has_preferred_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa40a4cb4 drm_helper_crtc_mode_set_base +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa47826e4 drm_dp_calc_pbn_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa6324186 __drm_atomic_helper_crtc_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa6675676 drm_dp_dpcd_read +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa77858bb drm_dp_get_adjust_request_voltage +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa8d6809d drm_dp_bw_code_to_link_rate +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xab703106 drm_atomic_helper_commit +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xae4c333f drm_atomic_helper_connector_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb829bef8 drm_fb_helper_debug_leave +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xba2215c3 drm_dp_update_payload_part2 +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xbf24bf27 drm_dp_aux_register +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc0415232 drm_atomic_helper_plane_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc079e797 drm_helper_move_panel_connectors_to_head +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc108db0e drm_kms_helper_poll_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc41e58f7 drm_dp_mst_topology_mgr_suspend +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc4f988e6 drm_atomic_helper_swap_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc5a7606f drm_fb_helper_setcmap +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc634ce3a drm_dp_mst_topology_mgr_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xcd789020 drm_dp_check_act_status +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd12b8171 __drm_atomic_helper_crtc_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd2cdf7b1 drm_crtc_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd8af8c7c __drm_atomic_helper_connector_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xdadab9c9 drm_dp_mst_reset_vcpi_slots +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe0be6bd2 drm_dp_mst_get_vcpi_slots +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe4babd9f drm_atomic_helper_wait_for_vblanks +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe5a7b51f drm_dp_mst_hpd_irq +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xea39c689 drm_fb_helper_add_one_connector +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xeb699284 drm_crtc_helper_set_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xef5ec0fe drm_fb_helper_initial_config +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xefd517db drm_atomic_helper_plane_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf0b97967 drm_fb_helper_blank +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf1b3367a drm_atomic_helper_connector_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf24d414a drm_primary_helper_disable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf50ca1b2 drm_atomic_helper_disable_plane +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf5b83dc1 drm_atomic_helper_set_config +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf63da17d drm_dp_update_payload_part1 +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf68d03c9 drm_helper_resume_force_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf6a1ebe0 drm_fb_helper_remove_one_connector +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf85f15e4 drm_atomic_helper_commit_planes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xfa6dc1ba drm_fb_helper_set_par +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xfaedd5f1 drm_helper_crtc_mode_set +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xfb9301ad drm_dp_dpcd_write +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xfc173a9f drm_helper_encoder_in_use +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xfc206c22 drm_atomic_helper_connector_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xfe10414c drm_kms_helper_poll_enable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xfea2c2f0 drm_atomic_helper_update_legacy_modeset_state +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x0a7e6ef9 ttm_agp_tt_unpopulate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x0bab7f47 ttm_read_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x125dfabf ttm_tt_bind +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x12d41cab ttm_eu_reserve_buffers +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x132b05be ttm_round_pot +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x1762fe32 ttm_bo_acc_size +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x1940e4cd ttm_write_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x22ec80fe ttm_vt_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x24765c33 ttm_read_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x266d8a60 ttm_io_prot +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x2b54aa9a ttm_object_file_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x312cbd83 ttm_bo_validate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x355b78c4 ttm_mem_io_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x3ca0bf11 ttm_mem_io_free +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x427c9037 ttm_bo_mem_put +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x4366011e ttm_eu_backoff_reservation +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x478e7b78 ttm_bo_del_sub_from_lru +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x485a5bc0 ttm_ref_object_add +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x4a22b676 ttm_mem_global_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x4b3b5092 ttm_bo_unmap_virtual +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x538bdff2 ttm_dma_tt_fini +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x569fc0e5 ttm_bo_kmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x5903407b ttm_tt_fini +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x5cf59609 ttm_bo_global_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x5d0d6f9b ttm_bo_unlock_delayed_workqueue +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x5daa5e06 ttm_object_device_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x650f8f4c ttm_bo_dma_acc_size +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x67694dd7 ttm_bo_device_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x679a3baf ttm_bo_swapout_all +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x67b1d568 ttm_bo_global_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x6a8cd863 ttm_mem_global_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x6b26794d ttm_bo_add_to_lru +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x6b4ba76a ttm_tt_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x6c8dc6bf ttm_vt_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x6e875de9 ttm_lock_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x73811f88 ttm_fbdev_mmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x7747bb8f ttm_bo_move_ttm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x793c0c6a ttm_bo_lock_delayed_workqueue +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x7a2ca9b4 ttm_pool_unpopulate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x80d86f0e ttm_object_device_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x8268d103 ttm_agp_tt_populate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x836d8fd0 ttm_suspend_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x854f40e1 ttm_bo_synccpu_write_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x872fa860 ttm_mem_io_reserve +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x880a15ad ttm_base_object_lookup +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x8a2f7880 ttm_bo_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x8c650472 ttm_bo_mmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x946d9ea3 ttm_write_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x94894449 ttm_base_object_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x95421bbf ttm_bo_unref +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x998e45c0 ttm_ref_object_base_unref +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xa02a4d87 ttm_pool_populate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xa11f320d ttm_bo_mem_space +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xa5941be9 ttm_dma_tt_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xaaead8e0 ttm_tt_set_placement_caching +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xc2adcc60 ttm_bo_move_accel_cleanup +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xc62889ec ttm_mem_global_alloc +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xc7a52df0 ttm_page_alloc_debugfs +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xce6e43a8 ttm_base_object_lookup_for_ref +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xcf49f835 ttm_suspend_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xcf67c299 ttm_ref_object_exists +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xd218102d ttm_eu_fence_buffer_objects +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xd378ecec ttm_bo_kunmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xd80c365b ttm_bo_device_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xd8edb115 ttm_base_object_unref +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xd9637a58 ttm_mem_global_free +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xda4eb6b1 ttm_bo_move_memcpy +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xde4f26fb ttm_bo_evict_mm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xe07e4c76 ttm_bo_create +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xe46506b1 ttm_bo_wait +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xe86a96a6 ttm_agp_tt_create +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xed99ac92 ttm_bo_clean_mm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xf651e3a0 ttm_prime_object_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xfbc2c5ec ttm_object_file_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xfd9a6db1 ttm_bo_synccpu_write_grab +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xfdab0a7b ttm_mem_io_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xff1e5367 ttm_bo_manager_func +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xff6df44f ttm_bo_init_mm +EXPORT_SYMBOL drivers/hv/hv_vmbus 0x19d1564b vmbus_recvpacket +EXPORT_SYMBOL drivers/hv/hv_vmbus 0x3dac5423 vmbus_sendpacket_ctl +EXPORT_SYMBOL drivers/hv/hv_vmbus 0xc9e9fa91 vmbus_sendpacket +EXPORT_SYMBOL drivers/hwmon/hwmon-vid 0x0903c239 vid_from_reg +EXPORT_SYMBOL drivers/hwmon/hwmon-vid 0xef1c781c vid_which_vrm +EXPORT_SYMBOL drivers/hwmon/sch56xx-common 0x0e2a6864 sch56xx_read_virtual_reg +EXPORT_SYMBOL drivers/hwmon/sch56xx-common 0x0f5877d4 sch56xx_read_virtual_reg16 +EXPORT_SYMBOL drivers/hwmon/sch56xx-common 0x18184812 sch56xx_watchdog_register +EXPORT_SYMBOL drivers/hwmon/sch56xx-common 0x34257f35 sch56xx_watchdog_unregister +EXPORT_SYMBOL drivers/hwmon/sch56xx-common 0xe5022f95 sch56xx_read_virtual_reg12 +EXPORT_SYMBOL drivers/hwmon/sch56xx-common 0xed1d2a08 sch56xx_write_virtual_reg +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-bit 0x728e114e i2c_bit_add_numbered_bus +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-bit 0x9663e1c7 i2c_bit_add_bus +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-bit 0xb2712dcf i2c_bit_algo +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-pca 0x760ca6f9 i2c_pca_add_numbered_bus +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-pca 0x8eba39ec i2c_pca_add_bus +EXPORT_SYMBOL drivers/i2c/busses/i2c-amd756 0xf0d6f4f0 amd756_smbus +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x032a8385 mma9551_set_device_state +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x0d19e364 mma9551_read_config_word +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x16fe340f mma9551_read_status_word +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x21e6edd5 mma9551_read_version +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x41ef446c mma9551_read_accel_scale +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x4a552856 mma9551_read_status_byte +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x4ad13fcd mma9551_app_reset +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x65aa491f mma9551_read_config_words +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x679720df mma9551_read_status_words +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x8b1d66a2 mma9551_write_config_words +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x8d584988 mma9551_update_config_bits +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xa324553c mma9551_gpio_config +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xa4803927 mma9551_write_config_byte +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xa8e83d7f mma9551_read_accel_chan +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xac273803 mma9551_read_config_byte +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xbcd7fe96 mma9551_sleep +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xcc1edfcc mma9551_set_power_state +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xd5b5cec1 mma9551_write_config_word +EXPORT_SYMBOL drivers/iio/accel/st_accel 0x5b4aca8f st_accel_common_probe +EXPORT_SYMBOL drivers/iio/accel/st_accel 0x81fe4946 st_accel_common_remove +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x0e74d635 hid_sensor_read_raw_hyst_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x999204c5 hid_sensor_parse_common_attributes +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0xa75d15a8 hid_sensor_write_samp_freq_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0xaf26eaf6 hid_sensor_write_raw_hyst_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0xba63fbcb hid_sensor_read_samp_freq_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0xbf35d02d hid_sensor_read_poll_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0xc83a92bf hid_sensor_format_scale +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-trigger 0x485a66cd hid_sensor_remove_trigger +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-trigger 0x81aadfef hid_sensor_power_state +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-trigger 0xa0c9ae36 hid_sensor_setup_trigger +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-trigger 0xaa1cedca hid_sensor_pm_ops +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0x65f63df0 ssp_change_delay +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0x759aa47c ssp_get_sensor_delay +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0x9fa1ef24 ssp_enable_sensor +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0xccd675ec ssp_register_consumer +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0xf6dd8567 ssp_disable_sensor +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/ssp_iio 0x75451131 ssp_common_buffer_postenable +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/ssp_iio 0xe3f4b9d2 ssp_common_process_data +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/ssp_iio 0xf85e2c38 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 0x106cb416 st_sensors_read_info_raw +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x25de01f6 st_sensors_deallocate_trigger +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x2b9f8737 st_sensors_sysfs_scale_avail +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x2cc8d7b5 st_sensors_allocate_trigger +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x32b0d095 st_sensors_power_disable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x442b14f4 st_sensors_init_sensor +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x4456e8f2 st_sensors_check_device_support +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x47c5b138 st_sensors_set_odr +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x79d68c16 st_sensors_set_fullscale_by_gain +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x862a5752 st_sensors_sysfs_sampling_frequency_avail +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x8ce10294 st_sensors_get_buffer_element +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x972f45dd st_sensors_power_enable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xa7beb605 st_sensors_set_axis_enable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xbdbccdba st_sensors_set_enable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xca627524 st_sensors_set_dataready_irq +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors_i2c 0x5ed095fa st_sensors_i2c_configure +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors_spi 0xab101282 st_sensors_spi_configure +EXPORT_SYMBOL drivers/iio/gyro/st_gyro 0x1fdffa1c st_gyro_common_probe +EXPORT_SYMBOL drivers/iio/gyro/st_gyro 0x9a3f91c3 st_gyro_common_remove +EXPORT_SYMBOL drivers/iio/imu/adis_lib 0x5824cb94 adis_enable_irq +EXPORT_SYMBOL drivers/iio/imu/adis_lib 0xb1e37039 adis_debugfs_reg_access +EXPORT_SYMBOL drivers/iio/industrialio 0x1375f373 iio_buffer_init +EXPORT_SYMBOL drivers/iio/industrialio 0x263d6c2a iio_trigger_register +EXPORT_SYMBOL drivers/iio/industrialio 0x2d6bcdcb iio_trigger_generic_data_rdy_poll +EXPORT_SYMBOL drivers/iio/industrialio 0x48560dc4 iio_device_free +EXPORT_SYMBOL drivers/iio/industrialio 0x4ea766c6 iio_trigger_free +EXPORT_SYMBOL drivers/iio/industrialio 0x4f015f5e iio_trigger_poll +EXPORT_SYMBOL drivers/iio/industrialio 0x64e9cda6 iio_push_event +EXPORT_SYMBOL drivers/iio/industrialio 0x75da6999 iio_device_alloc +EXPORT_SYMBOL drivers/iio/industrialio 0x7e270201 iio_device_register +EXPORT_SYMBOL drivers/iio/industrialio 0x829a1cbd iio_trigger_notify_done +EXPORT_SYMBOL drivers/iio/industrialio 0x8d149aa4 iio_trigger_poll_chained +EXPORT_SYMBOL drivers/iio/industrialio 0xa705c57e iio_trigger_alloc +EXPORT_SYMBOL drivers/iio/industrialio 0xa82ca811 iio_triggered_buffer_predisable +EXPORT_SYMBOL drivers/iio/industrialio 0xb0aa865b iio_read_const_attr +EXPORT_SYMBOL drivers/iio/industrialio 0xba35d53f iio_device_unregister +EXPORT_SYMBOL drivers/iio/industrialio 0xdf76bbeb iio_pollfunc_store_time +EXPORT_SYMBOL drivers/iio/industrialio 0xe052e292 iio_triggered_buffer_postenable +EXPORT_SYMBOL drivers/iio/industrialio 0xe27fc9a4 iio_bus_type +EXPORT_SYMBOL drivers/iio/industrialio 0xf8383e5e iio_trigger_unregister +EXPORT_SYMBOL drivers/iio/industrialio-triggered-buffer 0x7b0cb506 iio_triggered_buffer_cleanup +EXPORT_SYMBOL drivers/iio/industrialio-triggered-buffer 0xe5c5275d iio_triggered_buffer_setup +EXPORT_SYMBOL drivers/iio/kfifo_buf 0x0f1e5d9e devm_iio_kfifo_allocate +EXPORT_SYMBOL drivers/iio/kfifo_buf 0x58a8f17a iio_kfifo_free +EXPORT_SYMBOL drivers/iio/kfifo_buf 0x695c47e4 iio_kfifo_allocate +EXPORT_SYMBOL drivers/iio/kfifo_buf 0x80e383b6 devm_iio_kfifo_free +EXPORT_SYMBOL drivers/iio/magnetometer/st_magn 0x7512e46b st_magn_common_remove +EXPORT_SYMBOL drivers/iio/magnetometer/st_magn 0xe7ba785f st_magn_common_probe +EXPORT_SYMBOL drivers/iio/pressure/ms5611_core 0x7e2f81a7 ms5611_probe +EXPORT_SYMBOL drivers/iio/pressure/st_pressure 0x867d08fb st_press_common_probe +EXPORT_SYMBOL drivers/iio/pressure/st_pressure 0xd64bcba1 st_press_common_remove +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x049ace30 rdma_addr_find_smac_by_sgid +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x04b8b6d7 rdma_translate_ip +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x1c3c0ad3 rdma_addr_size +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x1edc4064 rdma_addr_unregister_client +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x273f4cca rdma_addr_cancel +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x460ec1f5 rdma_copy_addr +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x9846b88f rdma_resolve_ip +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x9d9cabc5 rdma_addr_register_client +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0xf029eb25 rdma_addr_find_dmac_by_grh +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x0450cdef ib_send_cm_sidr_rep +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x1603164c ib_send_cm_mra +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x182d533f ib_create_cm_id +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x1daa91a5 ib_send_cm_drep +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x2548289c ib_send_cm_apr +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x36ff6fcd ib_send_cm_rej +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x4db63531 ib_send_cm_sidr_req +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x4f2059c0 ib_cm_init_qp_attr +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x587c66d0 ib_cm_notify +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x63ef6357 cm_class +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x973aa1d3 ib_send_cm_rtu +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xa895ee78 ib_send_cm_lap +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xafcc6683 ib_send_cm_rep +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xb7ae90da ib_send_cm_req +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xbb308ccf ib_cm_listen +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xbca034f8 ib_send_cm_dreq +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xe38df3d7 ib_destroy_cm_id +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x03829e5e ib_alloc_fast_reg_page_list +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x08a507fb ib_modify_port +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0a8fca27 ib_query_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0c1b9ac1 ib_ud_header_unpack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0e0794cf ib_create_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0edd642a ibnl_put_attr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x10e1716c ib_close_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x127857b9 ib_unregister_event_handler +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x17292d71 ib_dealloc_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1867ffa6 ibnl_add_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1b907ca7 ib_query_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1e491a04 ib_unmap_fmr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1ec3948d ib_find_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x20dd4344 ib_fmr_pool_unmap +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x218e9855 ib_fmr_pool_map_phys +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x233c6245 ib_alloc_fast_reg_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x245eb41c ib_get_cached_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x25237cb3 ib_attach_mcast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2b477f7a ib_dealloc_xrcd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2c238b44 ib_query_port +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2cd395f5 ib_register_event_handler +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2d5827f8 ib_dealloc_mw +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2ed6e386 ib_ud_header_pack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x31b6b074 ib_register_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x32b5d837 ib_modify_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x342ab12a ib_resolve_eth_l2_attrs +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x34748d6c ib_create_fmr_pool +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x35cc9726 ib_umem_release +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x3c046876 ib_set_client_data +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x428ee661 ib_create_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x42963532 ib_destroy_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x46172365 ib_rereg_phys_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x477fd68e ib_umem_get +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x4a0695f4 ib_destroy_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x4a847be4 ib_init_ah_from_wc +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x50dbc447 ib_flush_fmr_pool +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x520b2638 ib_pack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x55e1784f ibnl_unicast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5611cdea rdma_node_get_transport +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5799dea9 ib_modify_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5dcba11e ib_query_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x60630edd ib_create_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x61e3152f ib_dereg_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6622319d ib_register_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x66b948ab ib_umem_page_count +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6e030e26 ib_modify_qp_is_ok +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6fcc2ea0 ib_modify_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x72078d38 ib_unregister_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x749be355 ibnl_put_msg +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x775f911f ib_dealloc_fmr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x77645258 ib_umem_odp_map_dma_pages +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7811d37c ib_destroy_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7887d761 ib_create_ah_from_wc +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7db87101 ib_find_cached_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x8238ffb9 ib_query_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x827cdb16 ib_query_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x84770bbc ib_modify_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x8ded3fa9 ib_modify_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x8e181e15 ib_get_dma_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x9448cc30 ib_alloc_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x99d79aaf ib_destroy_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x9a8fd990 ib_create_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x9cb8f718 ib_create_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x9f53acf1 ib_find_exact_cached_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa0b9318f ib_destroy_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa0eae40e ib_umem_odp_unmap_dma_pages +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xab0a3467 mult_to_ib_rate +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xadd0706c ib_free_fast_reg_page_list +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb1a312e1 ib_unpack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb29d3c30 ib_get_client_data +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb3015698 ib_alloc_xrcd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb403412b ib_umem_copy_from +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb93a52b0 ib_rate_to_mbps +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb9b60b43 ib_destroy_flow +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xba9c51ff ib_query_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xbadd8259 ib_rate_to_mult +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xbaed3ffe ib_dealloc_pd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc0ab3430 ib_find_cached_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc32b59ff ib_destroy_fmr_pool +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc553774a ib_open_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc67f14a5 ibnl_remove_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc68c1885 ib_get_cached_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xcde1f464 rdma_port_get_link_layer +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xcfa2a09f ib_event_msg +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd1920eae ib_detach_mcast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd22bffe0 ib_dispatch_event +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd75b7bc9 ib_query_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe00653dc ib_reg_phys_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe16ce915 ibnl_multicast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe5840ec6 ib_wc_status_msg +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xea1f3a88 ib_get_cached_lmc +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xed78a2a7 ib_find_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xee6bf9e2 ib_unregister_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xeea9a3ed ib_alloc_fmr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf1012da7 ib_alloc_mw +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf79b30c6 ib_create_flow +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf7eed8cd ib_resize_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf8efbc97 ib_alloc_pd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf944285c ib_check_mr_status +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xfc150956 ib_ud_header_init +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x1dfbee51 ib_register_mad_agent +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x297c754b ib_create_send_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x2df92e75 ib_get_rmpp_segment +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x2f0ea69e ib_response_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x4cf1fdc6 ib_process_mad_wc +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x4d6d3fbf ib_post_send_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x4fdb4bb1 ib_free_recv_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x6f077fcf ib_get_mad_data_offset +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x7b5d4b7a ib_is_mad_class_rmpp +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x7c04a7fc ib_free_send_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xa16f9cb5 ib_unregister_mad_agent +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xa32bdb70 ib_redirect_mad_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xda3b571c ib_cancel_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xdce4ea59 ib_modify_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xe88f61cb ib_register_mad_snoop +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xf0a17d24 ib_mad_kernel_rmpp_agent +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x05f51c4a ib_sa_register_client +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x22f07253 ib_sa_unpack_path +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x287d1e73 ib_sa_unregister_client +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x576fdbac ib_sa_free_multicast +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x98d8b414 ib_sa_path_rec_get +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x9d11bcf5 ib_sa_get_mcmember_rec +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xb5a16662 ib_sa_join_multicast +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xb6e136a1 ib_init_ah_from_mcmember +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xd0dc92f9 ib_init_ah_from_path +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xd2b3a9b8 ib_sa_guid_info_rec_query +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xda0d50ec ib_sa_cancel_query +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xddc330e7 ib_sa_pack_path +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xe117bfe0 ib_sa_service_rec_query +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x2569d757 ib_copy_path_rec_to_user +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x52a6ce77 ib_copy_ah_attr_to_user +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x7971c00e ib_copy_qp_attr_to_user +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0xe350f2aa ib_copy_path_rec_from_user +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x04431dff iw_cm_connect +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x0ff9f042 iwpm_remove_mapinfo +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x132812f5 iwpm_mapping_info_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x26453a45 iw_cm_listen +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x3748ac8a iw_destroy_cm_id +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x599fcf40 iwpm_add_mapping_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x5da59312 iwpm_register_pid +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x6040bbde iw_create_cm_id +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x64b5ab08 iwpm_register_pid_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x6968573d iwpm_add_mapping +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x6a3f5fa1 iw_cm_reject +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x6ae22c9e iwpm_ack_mapping_info_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x6c74c344 iwpm_get_remote_info +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x8459c9df iwpm_add_and_query_mapping_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x8bee7b8e iw_cm_accept +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x904609a0 iwpm_remove_mapping +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x91a914d6 iwpm_init +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x9327be67 iwpm_exit +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x99edf901 iwpm_valid_pid +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x9d278ae0 iwpm_mapping_error_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x9fafab29 iw_cm_disconnect +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xd07596ed iwpm_remote_info_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xd447b24a iwpm_create_mapinfo +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xf2d80687 iw_cm_init_qp_attr +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xf380aa0f iwpm_add_and_query_mapping +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x014a3171 rdma_init_qp_attr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x0d15da87 rdma_resolve_addr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x16c36018 rdma_set_service_type +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x18cf3732 rdma_create_qp +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x1becfc13 rdma_bind_addr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x2277b57c rdma_join_multicast +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x3a6984ab rdma_accept +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x3d92826c rdma_create_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x56b71128 rdma_leave_multicast +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x59332df5 rdma_listen +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x666f3578 rdma_set_ib_paths +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x6f62d872 rdma_get_service_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x907df803 rdma_event_msg +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x96dae875 rdma_destroy_qp +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x99dcbc6c rdma_resolve_route +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x9dae8e7f rdma_destroy_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xb90b3e07 rdma_set_afonly +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xbd8db7e9 rdma_reject +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xce2670cd rdma_connect +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xec77dc0f rdma_set_reuseaddr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xfe0d5f45 rdma_disconnect +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xffd3e1d7 rdma_notify +EXPORT_SYMBOL drivers/input/gameport/gameport 0x17eafe84 __gameport_register_driver +EXPORT_SYMBOL drivers/input/gameport/gameport 0x4c742594 __gameport_register_port +EXPORT_SYMBOL drivers/input/gameport/gameport 0x51b0cda9 gameport_start_polling +EXPORT_SYMBOL drivers/input/gameport/gameport 0x5f5695d2 gameport_unregister_port +EXPORT_SYMBOL drivers/input/gameport/gameport 0x649b454b gameport_open +EXPORT_SYMBOL drivers/input/gameport/gameport 0xaa3b170e gameport_unregister_driver +EXPORT_SYMBOL drivers/input/gameport/gameport 0xe787d3db gameport_stop_polling +EXPORT_SYMBOL drivers/input/gameport/gameport 0xebcfca3f gameport_set_phys +EXPORT_SYMBOL drivers/input/gameport/gameport 0xfadfd1f9 gameport_close +EXPORT_SYMBOL drivers/input/input-polldev 0x1f1aa389 devm_input_allocate_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0x2cba8a54 input_allocate_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0xa806d784 input_unregister_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0xd346db43 input_free_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0xe4c51067 input_register_polled_device +EXPORT_SYMBOL drivers/input/matrix-keymap 0x50b74f4b matrix_keypad_build_keymap +EXPORT_SYMBOL drivers/input/misc/ad714x 0x14dc6a05 ad714x_enable +EXPORT_SYMBOL drivers/input/misc/ad714x 0x7216ac98 ad714x_disable +EXPORT_SYMBOL drivers/input/misc/ad714x 0xee6d0270 ad714x_remove +EXPORT_SYMBOL drivers/input/misc/ad714x 0xef805e5f ad714x_probe +EXPORT_SYMBOL drivers/input/misc/cma3000_d0x 0x17084641 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/sparse-keymap 0x179874a0 sparse_keymap_report_entry +EXPORT_SYMBOL drivers/input/sparse-keymap 0x4dfaaf14 sparse_keymap_free +EXPORT_SYMBOL drivers/input/sparse-keymap 0x6c2d7dca sparse_keymap_entry_from_scancode +EXPORT_SYMBOL drivers/input/sparse-keymap 0x76fd5271 sparse_keymap_entry_from_keycode +EXPORT_SYMBOL drivers/input/sparse-keymap 0xb730cef5 sparse_keymap_report_event +EXPORT_SYMBOL drivers/input/sparse-keymap 0xcaff0c28 sparse_keymap_setup +EXPORT_SYMBOL drivers/input/touchscreen/ad7879 0x4c983370 ad7879_probe +EXPORT_SYMBOL drivers/input/touchscreen/ad7879 0x726b1049 ad7879_pm_ops +EXPORT_SYMBOL drivers/input/touchscreen/ad7879 0x97f83edf ad7879_remove +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x04403fcf unregister_capi_driver +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x08df1c9d capi_ctr_down +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x14f2aa5a capi20_get_version +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x157b0782 capi20_register +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x2b8eab1f capilib_free_ncci +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x2baa6586 capilib_new_ncci +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x2c2a6da9 attach_capi_ctr +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x31c24aa4 capi20_isinstalled +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x50b33ca4 capi_cmsg2message +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x6057c6f3 capi_message2cmsg +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x62e32d43 capilib_data_b3_conf +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x71e8d5ba capilib_data_b3_req +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x7a33596c capi20_get_serial +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x7e6dd81b detach_capi_ctr +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x7e6f1307 capi20_get_manufacturer +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x8f699913 capilib_release +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x9f823278 register_capi_driver +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xa7c4fd6c capi_message2str +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xaa165d27 capilib_release_appl +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xab79e4e3 capi20_put_message +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xb19fda8d capi_cmd2str +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xb32f26d8 capi20_release +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xb55b3d5c capi_ctr_resume_output +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xb60e5e5f capi_cmsg_header +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xb902b721 capi_ctr_suspend_output +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xc10fe128 cdebbuf_free +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xc42d9ec1 capi20_manufacturer +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xe19a11ac capi20_get_profile +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xe831fedb capi_ctr_handle_message +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xe8ad9bd1 capi_cmsg2str +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xeb57abcf capi_ctr_ready +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x03fae18a avmcard_dma_free +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x08e58e98 b1_register_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x11ad5b1b b1ctl_proc_fops +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x1b72e35a avmcard_dma_alloc +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x249c9a09 b1_send_message +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x3cacf704 b1_reset_ctr +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x6f76115b b1_free_card +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x75c27a5e b1_parse_version +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x78e15124 b1_load_firmware +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x85f09690 b1_irq_table +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x96c3af3d b1_alloc_card +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xa0c0ba58 b1_load_t4file +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xb5a55a73 b1_load_config +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xbf2d359e b1_getrevision +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xd46319c8 b1_loaded +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xdfd28376 b1_detect +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xea6508f7 b1_release_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xfa10fee4 b1_interrupt +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x40c3d86a b1dma_reset_ctr +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x5b18fe17 b1dma_load_firmware +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x5f8cd38d b1dma_release_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x616539fe b1dma_send_message +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x8e9a36b5 b1pciv4_detect +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xa41337cd t1pci_detect +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xab9a97ae b1dma_register_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xd6f9f1ea b1dma_interrupt +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xe4cb9139 b1dmactl_proc_fops +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xfc7116ee b1dma_reset +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1pcmcia 0x29562993 b1pcmcia_delcard +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1pcmcia 0xaec3240e b1pcmcia_addcard_m1 +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1pcmcia 0xea620116 b1pcmcia_addcard_m2 +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1pcmcia 0xf14bf8b1 b1pcmcia_addcard_b1 +EXPORT_SYMBOL drivers/isdn/hardware/eicon/divadidd 0x2974ead1 DIVA_DIDD_Read +EXPORT_SYMBOL drivers/isdn/hardware/eicon/divadidd 0x7ab59853 proc_net_eicon +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0x2230a84f mISDNisac_irq +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0x52d53a40 mISDNipac_init +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0xebbf16e7 mISDNipac_irq +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0xebda0cce mISDNisac_init +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNisar 0x223c423d mISDNisar_init +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNisar 0xfeacbc98 mISDNisar_irq +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x07f4f2ce hisax_unregister +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x148f0c99 FsmFree +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x6fe1ca04 FsmDelTimer +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x93a64734 FsmChangeState +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x97073a00 hisax_init_pcmcia +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x9df0cd27 FsmEvent +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x9f987c85 FsmRestartTimer +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0xa1bc94b9 FsmInitTimer +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0xee93522c hisax_register +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0xf0a16657 FsmNew +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0xfc27303b HiSax_closecard +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x300b1577 isac_setup +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x3f3b323a isac_d_l2l1 +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x6c7023e8 isacsx_setup +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x7ec0a0ac isacsx_irq +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x9aa070c6 isac_init +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0xf50a9b9e isac_irq +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0x3c6bbf6b isdn_ppp_unregister_compressor +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0xbd32fec7 register_isdn +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0xed41fce8 isdn_ppp_register_compressor +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0xfa06820f isdn_register_divert +EXPORT_SYMBOL drivers/isdn/i4l/isdnhdlc 0x3b71e4fc isdnhdlc_decode +EXPORT_SYMBOL drivers/isdn/i4l/isdnhdlc 0x59cc8a7e isdnhdlc_out_init +EXPORT_SYMBOL drivers/isdn/i4l/isdnhdlc 0x8ee38862 isdnhdlc_rcv_init +EXPORT_SYMBOL drivers/isdn/i4l/isdnhdlc 0xfd9d4c09 isdnhdlc_encode +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x04bff0b7 dchannel_senddata +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x06fcebef mISDN_FsmDelTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x1cf196fb mISDN_FsmAddTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x2348cc3c mISDN_FsmFree +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x271a4507 mISDN_register_Bprotocol +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x29fa5b43 mISDN_FsmRestartTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x2d1f9759 get_next_dframe +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x36ec1940 mISDN_FsmInitTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x4e6ecc66 mISDN_unregister_Bprotocol +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x50c2230c mISDN_FsmChangeState +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x55198d55 get_next_bframe +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x588886a6 l1_event +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x5a13f16c mISDN_unregister_device +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x5cac716c bchannel_get_rxbuf +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x5fa989ba mISDN_ctrl_bchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x6629c658 mISDNDevName4ch +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x6c15d460 mISDN_initdchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x71f2d8ee bchannel_senddata +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x7a15351d create_l1 +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x7d74ed60 mISDN_freedchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x8a4e99fb mISDN_clock_update +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x8d384bd7 queue_ch_frame +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x8d678daa mISDN_initbchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x9f7cdb51 recv_Dchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xb24be413 recv_Bchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xb475fb55 recv_Bchannel_skb +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xc3401729 mISDN_register_clock +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xc53d1d50 mISDN_freebchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xcd1ac938 recv_Dchannel_skb +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 0xda315154 recv_Echannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xe2978f2a mISDN_clear_bchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xe6fab0ad mISDN_register_device +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xe8f617eb mISDN_unregister_clock +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xf9e7832f mISDN_FsmNew +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_dsp 0x01087af0 mISDN_dsp_element_unregister +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_dsp 0x60721da7 dsp_audio_law_to_s32 +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_dsp 0xa215f1b2 dsp_audio_s16_to_law +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_dsp 0xb98308d8 mISDN_dsp_element_register +EXPORT_SYMBOL drivers/md/bcache/bcache 0x10dc0d06 bch_bset_insert +EXPORT_SYMBOL drivers/md/bcache/bcache 0x32583f19 closure_sync +EXPORT_SYMBOL drivers/md/bcache/bcache 0x66d28e22 bch_btree_iter_init +EXPORT_SYMBOL drivers/md/bcache/bcache 0x6969b5d8 bch_bset_init_next +EXPORT_SYMBOL drivers/md/bcache/bcache 0x7b55ca4f bch_bset_fix_invalidated_key +EXPORT_SYMBOL drivers/md/bcache/bcache 0x7f2a56c0 bch_bset_sort_state_init +EXPORT_SYMBOL drivers/md/bcache/bcache 0x9e8b3cee bch_btree_keys_alloc +EXPORT_SYMBOL drivers/md/bcache/bcache 0x9f2e84ce closure_put +EXPORT_SYMBOL drivers/md/bcache/bcache 0xab2d2b84 bch_btree_insert_key +EXPORT_SYMBOL drivers/md/bcache/bcache 0xad29a6f5 bch_bset_build_written_tree +EXPORT_SYMBOL drivers/md/bcache/bcache 0xaec09a2b bch_bkey_try_merge +EXPORT_SYMBOL drivers/md/bcache/bcache 0xaf77343c bch_btree_keys_free +EXPORT_SYMBOL drivers/md/bcache/bcache 0xb5623a8b closure_sub +EXPORT_SYMBOL drivers/md/bcache/bcache 0xc04554f7 bch_btree_iter_next +EXPORT_SYMBOL drivers/md/bcache/bcache 0xca580595 bch_btree_keys_init +EXPORT_SYMBOL drivers/md/bcache/bcache 0xe3c17af1 __closure_wake_up +EXPORT_SYMBOL drivers/md/bcache/bcache 0xe47e0829 __bch_bset_search +EXPORT_SYMBOL drivers/md/bcache/bcache 0xeb844b07 closure_wait +EXPORT_SYMBOL drivers/md/bcache/bcache 0xecf7cef9 bch_btree_sort_lazy +EXPORT_SYMBOL drivers/md/bcache/bcache 0xfbf30701 bch_btree_sort_partial +EXPORT_SYMBOL drivers/md/dm-bufio 0x72f07bf4 dm_bufio_set_minimum_buffers +EXPORT_SYMBOL drivers/md/dm-bufio 0xa7978f56 dm_bufio_forget +EXPORT_SYMBOL drivers/md/dm-log 0x479a5b73 dm_dirty_log_type_unregister +EXPORT_SYMBOL drivers/md/dm-log 0x4b1f6642 dm_dirty_log_destroy +EXPORT_SYMBOL drivers/md/dm-log 0x4e9eaba9 dm_dirty_log_type_register +EXPORT_SYMBOL drivers/md/dm-log 0x5deaa1e4 dm_dirty_log_create +EXPORT_SYMBOL drivers/md/dm-snapshot 0x1d7d47db dm_exception_store_type_register +EXPORT_SYMBOL drivers/md/dm-snapshot 0x2bfdd0d6 dm_snap_origin +EXPORT_SYMBOL drivers/md/dm-snapshot 0x65835a85 dm_exception_store_create +EXPORT_SYMBOL drivers/md/dm-snapshot 0x6ba449a2 dm_snap_cow +EXPORT_SYMBOL drivers/md/dm-snapshot 0xabbcefd4 dm_exception_store_destroy +EXPORT_SYMBOL drivers/md/dm-snapshot 0xf8ec7788 dm_exception_store_type_unregister +EXPORT_SYMBOL drivers/md/raid456 0xfe01a3db raid5_set_cache_size +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x273d0ced flexcop_pass_dmx_data +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x37c5f84f flexcop_device_kmalloc +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x44ec21af flexcop_eeprom_check_mac_addr +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x7a31292c flexcop_device_initialize +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x97550dbe flexcop_pid_feed_control +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xa5b1ae67 flexcop_wan_set_speed +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xb2d83a5a flexcop_sram_ctrl +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xbd7dc8e4 flexcop_i2c_request +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xdfd0496b flexcop_device_kfree +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xe298bafb flexcop_sram_set_dest +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xeba82d87 flexcop_dump_reg +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xecc2597c flexcop_device_exit +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xf9f8bc63 flexcop_pass_dmx_packets +EXPORT_SYMBOL drivers/media/common/cx2341x 0x1ca0c084 cx2341x_log_status +EXPORT_SYMBOL drivers/media/common/cx2341x 0x2f25eee2 cx2341x_update +EXPORT_SYMBOL drivers/media/common/cx2341x 0x30cb4cd7 cx2341x_ext_ctrls +EXPORT_SYMBOL drivers/media/common/cx2341x 0x3db8be82 cx2341x_ctrl_query +EXPORT_SYMBOL drivers/media/common/cx2341x 0x52d5d0b6 cx2341x_handler_set_busy +EXPORT_SYMBOL drivers/media/common/cx2341x 0x59c8297e cx2341x_handler_set_50hz +EXPORT_SYMBOL drivers/media/common/cx2341x 0x62ef9ff4 cx2341x_handler_setup +EXPORT_SYMBOL drivers/media/common/cx2341x 0x8ee5b62f cx2341x_handler_init +EXPORT_SYMBOL drivers/media/common/cx2341x 0xc184ec1e cx2341x_ctrl_get_menu +EXPORT_SYMBOL drivers/media/common/cx2341x 0xcf76ce95 cx2341x_fill_defaults +EXPORT_SYMBOL drivers/media/common/cx2341x 0xcf8b77a4 cx2341x_mpeg_ctrls +EXPORT_SYMBOL drivers/media/common/cypress_firmware 0x62d0809e cypress_load_firmware +EXPORT_SYMBOL drivers/media/common/tveeprom 0xa8c8523e tveeprom_hauppauge_analog +EXPORT_SYMBOL drivers/media/common/tveeprom 0xb6965b14 tveeprom_read +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x113aa9a5 dvb_dmx_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x139e9216 dvb_ca_en50221_camready_irq +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x1557a0ac dvb_dmxdev_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x1e5f0bdd dvb_ringbuffer_write +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x2907e8ed dvb_ringbuffer_avail +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x2cf288a0 dvb_ringbuffer_flush_spinlock_wakeup +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x2ea21bef dvb_frontend_resume +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x2f483fae dvb_dmx_swfilter +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x362dcccf dvb_generic_ioctl +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x3ee8cfed dvb_ringbuffer_free +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x441fb553 dvb_frontend_detach +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x49c929c2 dvb_ca_en50221_camchange_irq +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x4f574292 dvb_dmx_swfilter_packets +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x58c0b3ca dvb_ringbuffer_read_user +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x5a6f883d dvb_ringbuffer_write_user +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x6d1551c2 dvb_dmxdev_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x70de704a dvb_ringbuffer_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x74a5a698 dvb_filter_pes2ts_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x7fd389d1 dvb_register_frontend +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x80e3832d dvb_filter_get_ac3info +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x868aedaa dvb_register_adapter +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x90cdcfd2 dvb_ca_en50221_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x936fe83e dvb_ca_en50221_frda_irq +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x9ab4d06a dvb_ringbuffer_empty +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xa7cdd2f6 dvb_frontend_reinitialise +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xab6d2ae5 dvb_dmx_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xac4ca1b0 intlog2 +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xb11601d2 dvb_generic_open +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xb38cee0a dvb_dmx_swfilter_raw +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xc645fbc3 dvb_ringbuffer_read +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xcdf6d3b0 dvb_net_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xd226d3e6 dvb_unregister_device +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xd71583e9 dvb_generic_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xdc626d7b dvb_ca_en50221_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xe1ab1e7c dvb_dmx_swfilter_204 +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xe1c2289f dvb_unregister_adapter +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xe330fb17 dvb_net_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xe4691dd4 dvb_frontend_suspend +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xe5ae8707 intlog10 +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xe773a66b dvb_register_device +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xebd38af9 dvb_ringbuffer_flush +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xed70e7c5 dvb_unregister_frontend +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xf821d629 dvb_frontend_sleep_until +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xf826deb0 dvb_filter_pes2ts +EXPORT_SYMBOL drivers/media/dvb-frontends/a8293 0xaa05781f a8293_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/af9013 0x51011684 af9013_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/atbm8830 0x878dc197 atbm8830_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x15ed4c35 au8522_release_state +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x22228506 au8522_get_state +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x2548418b au8522_i2c_gate_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x2edf9b6d au8522_analog_i2c_gate_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x3995d32b au8522_sleep +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x3a2eb6e4 au8522_led_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x7ef96783 au8522_init +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0xdb99f90a au8522_readreg +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0xee4a90f3 au8522_writereg +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_dig 0x220dc05b au8522_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/bcm3510 0x7a576d52 bcm3510_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx22700 0x0e742b76 cx22700_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx22702 0xa5dfdc5e cx22702_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24110 0xc1ede7aa cx24110_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24113 0x09b8ed7e cx24113_agc_callback +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24113 0xfdd9d22c cx24113_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24116 0x2ed1a9f6 cx24116_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24120 0x66656c83 cx24120_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24123 0x0cc84bde cx24123_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24123 0x5efc14ec cx24123_get_tuner_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/cxd2820r 0x196b22cd cxd2820r_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0x3bf455a2 dib0070_get_rf_output +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0x5e1d6076 dib0070_wbd_offset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0x76527087 dib0070_set_rf_output +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0xa40b0f38 dib0070_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0xb81a8c3a dib0070_ctrl_agc_filter +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x4a20df6d dib0090_set_dc_servo +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x6942db8e dib0090_pwm_gain_reset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x6b82db01 dib0090_get_wbd_target +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x79b01822 dib0090_set_tune_state +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x955fe643 dib0090_get_current_gain +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x9c16ac55 dib0090_gain_control +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xb21cc608 dib0090_get_wbd_offset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xb6665eaf dib0090_update_tuning_table_7090 +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xb7efa9b4 dib0090_set_switch +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xd08a41d4 dib0090_dcc_freq +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xd150039e dib0090_register +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xd3c748c6 dib0090_update_rframp_7090 +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xd685dfed dib0090_fw_register +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xdb976dd8 dib0090_set_vga +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xef8dfb53 dib0090_get_tune_state +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mb 0x37f6c58e dib3000mb_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x2797b11e dib3000mc_get_tuner_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x736e6cdf dib3000mc_pid_control +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x74384b05 dib3000mc_pid_parse +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x892edad3 dib3000mc_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0xb4e91670 dib3000mc_i2c_enumeration +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0xf9cea876 dib3000mc_set_config +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0x9175d78f dib7000m_get_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0xb5305dad dib7000m_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0xc5e10993 dib7000m_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0xe2a7bc76 dib7000m_pid_filter +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0x7166d1dd dib7000p_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0xb3abe2b9 dib8000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0x3493335a dibx000_i2c_set_speed +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0x5b3b4848 dibx000_exit_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0xa85125c6 dibx000_reset_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0xad3ad91c systime +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0xed327223 dibx000_get_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0xf0221c7e dibx000_init_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/drx39xyj/drx39xyj 0x905600fe drx39xxj_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/drxd 0xb41d3247 drxd_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/drxk 0x3046a072 drxk_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ds3000 0xec8a5c57 ds3000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dvb-pll 0x42c61fb5 dvb_pll_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ec100 0x56d9b1a2 ec100_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/isl6405 0x6f62f1f1 isl6405_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/isl6421 0x4310e6db isl6421_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/isl6423 0x3dd08079 isl6423_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/itd1000 0xa5ee0575 itd1000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ix2505v 0xbd9484ef ix2505v_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/l64781 0x7249c008 l64781_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lg2160 0x28af5a9f lg2160_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgdt3305 0xdc2e0751 lgdt3305_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgdt3306a 0x4af2f418 lgdt3306a_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgdt330x 0x1fa6a584 lgdt330x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgs8gxx 0x73f4d35a lgs8gxx_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lnbp21 0x15bcc227 lnbp21_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lnbp21 0xa5191b15 lnbh24_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lnbp22 0x25499c50 lnbp22_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/m88ds3103 0x2de1c8df m88ds3103_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/m88ds3103 0xbe9d353e m88ds3103_get_agc_pwm +EXPORT_SYMBOL drivers/media/dvb-frontends/m88rs2000 0x68508e36 m88rs2000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mb86a16 0xa35de035 mb86a16_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mb86a20s 0x380e7386 mb86a20s_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mt312 0x1ff43d6f mt312_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mt352 0xfae30b98 mt352_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/nxt200x 0x40eeaa48 nxt200x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/nxt6000 0x3af9a1bd nxt6000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/or51132 0xfb305a7d or51132_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/or51211 0xb019885e or51211_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1409 0xe96d5896 s5h1409_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1411 0x022d6401 s5h1411_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1420 0x45bfe440 s5h1420_get_tuner_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1420 0xf2a9e2bf s5h1420_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s921 0xd7caf3b1 s921_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/si2165 0x4a545047 si2165_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/si21xx 0x1a88be81 si21xx_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/sp8870 0x36900657 sp8870_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/sp887x 0x6525c496 sp887x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stb0899 0x41c2c2ff stb0899_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stb6000 0x09395c10 stb6000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stb6100 0xcdd5abe5 stb6100_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0288 0x1fa1dbbc stv0288_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0297 0x8aa704a7 stv0297_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0299 0xb0461936 stv0299_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0367 0xc0b73897 stv0367ter_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0367 0xc3ee008d stv0367cab_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0900 0x46bf6ed9 stv0900_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv090x 0x45898ea7 stv090x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv6110 0x94b2a790 stv6110_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv6110x 0x912b2433 stv6110x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10021 0x5472a042 tda10021_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10023 0x4230a9b1 tda10023_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10048 0xf02683cb tda10048_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda1004x 0x94e823f1 tda10045_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda1004x 0xa0fd8b99 tda10046_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10071 0x389953f3 tda10071_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10086 0x3374ee7c tda10086_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda665x 0xa683ba5d tda665x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda8083 0x63ce2b2a tda8083_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda8261 0xf4c87731 tda8261_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda826x 0x6e0a2254 tda826x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ts2020 0x33bdf431 ts2020_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tua6100 0xc2f3c1d1 tua6100_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ves1820 0xc30dde42 ves1820_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ves1x93 0x39f7b371 ves1x93_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/zl10036 0x4d47b82e zl10036_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/zl10039 0xa481bfa1 zl10039_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/zl10353 0x4df6ea54 zl10353_attach +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x46180bcf flexcop_dma_control_timer_irq +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x4c1ccbae flexcop_dma_config_timer +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x837276da flexcop_dma_config +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x8c073f8b flexcop_dma_xfer_control +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0xcfb67852 flexcop_dma_free +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0xdd1af038 flexcop_dma_control_size_irq +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0xf3eaf51a flexcop_dma_allocate +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0x0f28ce11 bt878_stop +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0x29848218 bt878_start +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0x769c85e9 bt878_device_control +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0xc328f194 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 0x3557df2c 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 0xc70c5c1f bttv_sub_register +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0xf154cfed bttv_get_pcidev +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x06031afd dst_comm_init +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x1cccb929 rdc_reset_state +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x406523aa dst_attach +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x7154ab9e dst_wait_dst_ready +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x83e38209 dst_pio_disable +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xba305552 read_dst +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xbf2dd5b7 dst_error_recovery +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xda03b98f dst_error_bailout +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xe94b8c9c dst_check_sum +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xf3ab163d write_dst +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst_ca 0x043b88dd dst_ca_attach +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x1fffe9a1 cx18_ext_init +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x2cdea06d cx18_reset_ir_gpio +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x4e875b74 cx18_start_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x5d24d263 cx18_release_stream +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0xb884a84f cx18_stop_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0xc0c45312 cx18_claim_stream +EXPORT_SYMBOL drivers/media/pci/cx23885/altera-ci 0x6ff7510d altera_ci_tuner_reset +EXPORT_SYMBOL drivers/media/pci/cx23885/altera-ci 0x9164b144 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 0x25e7a4ce cx25821_riscmem_alloc +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x3f272e2a cx25821_risc_databuffer_audio +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x5203f544 cx25821_sram_channel_setup_audio +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x60c89967 cx25821_dev_get +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x70fae237 cx25821_sram_channel_dump_audio +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x784853c3 cx25821_print_irqbits +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xc5d38741 cx25821_sram_channels +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xd2a59939 cx25821_dev_unregister +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xe1901940 cx25821_set_gpiopin_direction +EXPORT_SYMBOL drivers/media/pci/cx88/cx88-vp3054-i2c 0x53339eba vp3054_i2c_remove +EXPORT_SYMBOL drivers/media/pci/cx88/cx88-vp3054-i2c 0x5599e3b1 vp3054_i2c_probe +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0x7d84e4d2 cx88_querycap +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0x837651e0 cx88_video_mux +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0xc8cbfca1 cx88_enum_input +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0xdbcd3ee9 cx88_set_freq +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x06bb1e4b cx8802_buf_queue +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x1c95bad6 cx8802_unregister_driver +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x291fe69b cx8802_buf_prepare +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x6281db0b cx8802_start_dma +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x7d81775b cx8802_register_driver +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x7e730ebe cx8802_cancel_buffers +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0xa5337cac cx8802_get_driver +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x0052bd2f cx88_set_tvaudio +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x1118d132 cx88_core_put +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x2e38f0b6 cx88_vdev_init +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x41f1a58d cx88_ir_stop +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x4216fc84 cx88_sram_channels +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x4e713d1a cx88_risc_databuffer +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x595b3c2a cx88_sram_channel_setup +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x6141c8c5 cx88_tuner_callback +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x71ed8719 cx88_reset +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x7642ed3c cx88_print_irqbits +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x7f14ba9c cx88_ir_start +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x88aee537 cx88_core_irq +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x8a8b8dda cx88_risc_buffer +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x8cedd747 cx88_core_get +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x904b8696 cx88_audio_thread +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xa40286bf cx88_newstation +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xaf265260 cx88_set_stereo +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xc338d527 cx88_get_stereo +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xc5765678 cx88_wakeup +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xdc2465c5 cx88_shutdown +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xe554a869 cx88_set_tvnorm +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xe6335d4a cx88_set_scale +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xe9faa7a8 cx88_sram_channel_dump +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xf96600e8 cx88_dsp_detect_stereo_sap +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x14566eb3 ivtv_firmware_check +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x14f67530 ivtv_debug +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x25d147cf ivtv_stop_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x2f9a51e8 ivtv_udma_setup +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x34353917 ivtv_udma_alloc +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x354cd681 ivtv_claim_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x54ee6047 ivtv_start_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x55faee19 ivtv_ext_init +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x64fa8404 ivtv_clear_irq_mask +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x68d7d007 ivtv_reset_ir_gpio +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x720fb7a8 ivtv_udma_unmap +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x94b41c0b ivtv_set_irq_mask +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x9b57a3c0 ivtv_init_on_first_open +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xb6cebf8c ivtv_udma_prepare +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xf5a7ef02 ivtv_release_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xf6e503c5 ivtv_vapi_result +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xfd0d43ad ivtv_vapi +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xfdfc88ad ivtv_api +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x04e83446 saa7134_tuner_callback +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x06bdbc71 saa7134_pgtable_free +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x1211df5d saa7134_devlist +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x16128e97 saa7134_dmasound_exit +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x37e8c2e3 saa_dsp_writel +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x3bef6301 saa7134_set_gpio +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x459086de saa7134_ts_register +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x54e8e02a saa7134_tvaudio_setmute +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x5738a3b9 saa7134_pgtable_alloc +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x75c66969 saa7134_boards +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x762e4265 saa7134_set_dmabits +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x8eca6fd5 saa7134_dmasound_init +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xc87dab85 saa7134_pgtable_build +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xeba124a0 saa7134_devlist_lock +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xf0c6f06d saa7134_ts_unregister +EXPORT_SYMBOL drivers/media/pci/ttpci/ttpci-eeprom 0xb5163656 ttpci_eeprom_parse_mac +EXPORT_SYMBOL drivers/media/pci/ttpci/ttpci-eeprom 0xc3e4c127 ttpci_eeprom_decode_mac +EXPORT_SYMBOL drivers/media/pci/zoran/videocodec 0x0266fa4a videocodec_register +EXPORT_SYMBOL drivers/media/pci/zoran/videocodec 0x250a9467 videocodec_attach +EXPORT_SYMBOL drivers/media/pci/zoran/videocodec 0x84a9e27c videocodec_unregister +EXPORT_SYMBOL drivers/media/pci/zoran/videocodec 0xcf775301 videocodec_detach +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x0b97ea91 soc_camera_xlate_by_fourcc +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x1baecdde soc_camera_host_unregister +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x649f5490 soc_camera_host_register +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x69a30927 soc_camera_power_off +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x7524fc83 soc_camera_apply_board_flags +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x835bbcaf soc_camera_power_on +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0xa2f5d2e1 soc_camera_power_init +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0x25c52d97 soc_mbus_samples_per_pixel +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0x2863728e soc_mbus_image_size +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0x29f5a98b soc_mbus_get_fmtdesc +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0x5f3e3558 soc_mbus_bytes_per_line +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0xc8b28da5 soc_mbus_config_compatible +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0xdc5dafe2 soc_mbus_find_fmtdesc +EXPORT_SYMBOL drivers/media/radio/tea575x 0x1410c58c snd_tea575x_hw_init +EXPORT_SYMBOL drivers/media/radio/tea575x 0x35705256 snd_tea575x_exit +EXPORT_SYMBOL drivers/media/radio/tea575x 0x516e3e75 snd_tea575x_enum_freq_bands +EXPORT_SYMBOL drivers/media/radio/tea575x 0x52cc4aeb snd_tea575x_init +EXPORT_SYMBOL drivers/media/radio/tea575x 0xbdd9d5ba snd_tea575x_set_freq +EXPORT_SYMBOL drivers/media/radio/tea575x 0xdd53f499 snd_tea575x_s_hw_freq_seek +EXPORT_SYMBOL drivers/media/radio/tea575x 0xf6ce9537 snd_tea575x_g_tuner +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x04dca738 lirc_unregister_driver +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x1b357431 lirc_dev_fop_close +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x22e66ac7 lirc_dev_fop_poll +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x3130cc7e lirc_get_pdata +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x4ca5c96b lirc_dev_fop_ioctl +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x752768cb lirc_dev_fop_read +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0xa2e542fe lirc_dev_fop_write +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0xcb82b3e1 lirc_dev_fop_open +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0xf5dbdc4f lirc_register_driver +EXPORT_SYMBOL drivers/media/rc/rc-core 0x77737dfb ir_raw_handler_register +EXPORT_SYMBOL drivers/media/rc/rc-core 0xcc8091ec ir_raw_handler_unregister +EXPORT_SYMBOL drivers/media/tuners/fc0011 0x103d3f8f fc0011_attach +EXPORT_SYMBOL drivers/media/tuners/fc0012 0x3073db2b fc0012_attach +EXPORT_SYMBOL drivers/media/tuners/fc0013 0x8b7b66c7 fc0013_attach +EXPORT_SYMBOL drivers/media/tuners/fc0013 0xb5fd23a9 fc0013_rc_cal_reset +EXPORT_SYMBOL drivers/media/tuners/fc0013 0xcfdbbb53 fc0013_rc_cal_add +EXPORT_SYMBOL drivers/media/tuners/max2165 0xaff6c3fa max2165_attach +EXPORT_SYMBOL drivers/media/tuners/mc44s803 0x4af9670b mc44s803_attach +EXPORT_SYMBOL drivers/media/tuners/mt2060 0x12854113 mt2060_attach +EXPORT_SYMBOL drivers/media/tuners/mt2131 0x2acdf636 mt2131_attach +EXPORT_SYMBOL drivers/media/tuners/mt2266 0xd7256e95 mt2266_attach +EXPORT_SYMBOL drivers/media/tuners/mxl5005s 0x03bb19da mxl5005s_attach +EXPORT_SYMBOL drivers/media/tuners/qt1010 0xae8a6dbf qt1010_attach +EXPORT_SYMBOL drivers/media/tuners/tda18218 0x0597bf09 tda18218_attach +EXPORT_SYMBOL drivers/media/tuners/tuner-types 0x0cb4b189 tuners +EXPORT_SYMBOL drivers/media/tuners/tuner-types 0xc2821775 tuner_count +EXPORT_SYMBOL drivers/media/tuners/tuner-xc2028 0x7a95cb7c xc2028_attach +EXPORT_SYMBOL drivers/media/tuners/xc4000 0x3e973a2f xc4000_attach +EXPORT_SYMBOL drivers/media/tuners/xc5000 0x5a4f3866 xc5000_attach +EXPORT_SYMBOL drivers/media/usb/cx231xx/cx231xx 0xc26c53fb cx231xx_register_extension +EXPORT_SYMBOL drivers/media/usb/cx231xx/cx231xx 0xd8657d80 cx231xx_unregister_extension +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x062f7781 dvb_usbv2_generic_write +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x0ef7f599 dvb_usbv2_resume +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x13d02680 dvb_usbv2_disconnect +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x40505d95 dvb_usbv2_probe +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x52e52979 dvb_usbv2_generic_rw_locked +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x6a16fa04 dvb_usbv2_reset_resume +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0xd6556019 dvb_usbv2_generic_rw +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0xdf1d5e20 dvb_usbv2_generic_write_locked +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0xdf515f58 dvb_usbv2_suspend +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x0efcf6db dvb_usb_device_exit +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x6bb2d32c dvb_usb_get_hexline +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x7dfbeb62 dvb_usb_nec_rc_key_to_event +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x8c512887 dvb_usb_generic_write +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0xbaff4dc7 dvb_usb_device_init +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0xca746ed2 dvb_usb_generic_rw +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0xe65d4209 usb_cypress_load_firmware +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-af9005-remote 0x13e247e0 rc_map_af9005_table +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-af9005-remote 0xd1630804 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 0x0844e976 dibusb_dib3000mc_frontend_attach +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x0dcfa2fd dibusb_power_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x17af08b8 dibusb_pid_filter +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x3c339d73 dibusb_i2c_algo +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x5ba081f9 dibusb2_0_streaming_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x68c83f41 dibusb2_0_power_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x76e1c2a5 dibusb_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xb47559e0 rc_map_dibusb_table +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xcea5ba79 dibusb_dib3000mc_tuner_attach +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xd75432af dibusb_rc_query +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xdc78d4f2 dibusb_streaming_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xf254a595 dibusb_read_eeprom_byte +EXPORT_SYMBOL drivers/media/usb/em28xx/em28xx 0x046dbe85 em28xx_register_extension +EXPORT_SYMBOL drivers/media/usb/em28xx/em28xx 0x36182e42 em28xx_unregister_extension +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x2292057d go7007_read_interrupt +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x58d592f7 go7007_snd_remove +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x83a96069 go7007_parse_video_stream +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x88cff19b go7007_snd_init +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0xa5b38bd6 go7007_boot_encoder +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0xaecbd9f5 go7007_register_encoder +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0xbd212fef go7007_alloc +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0xdab5143b go7007_update_board +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0xf6a546ec go7007_read_addr +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x49527890 gspca_expo_autogain +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x6d778f88 gspca_disconnect +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x878815f1 gspca_suspend +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x9670af2c gspca_debug +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x9e89c564 gspca_dev_probe2 +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0xaa8c1652 gspca_dev_probe +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0xad11b497 gspca_resume +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0xc8dd7050 gspca_coarse_grained_expo_autogain +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0xee2c787e gspca_frame_add +EXPORT_SYMBOL drivers/media/usb/tm6000/tm6000 0x519280b2 tm6000_register_extension +EXPORT_SYMBOL drivers/media/usb/tm6000/tm6000 0x53676ee1 tm6000_init_digital_mode +EXPORT_SYMBOL drivers/media/usb/tm6000/tm6000 0xca19cd10 tm6000_unregister_extension +EXPORT_SYMBOL drivers/media/usb/ttusb-dec/ttusbdecfe 0x8edb6caa ttusbdecfe_dvbs_attach +EXPORT_SYMBOL drivers/media/usb/ttusb-dec/ttusbdecfe 0xa51c6d60 ttusbdecfe_dvbt_attach +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-common 0xabe27502 v4l2_ctrl_query_fill +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-mem2mem 0x459e133f v4l2_m2m_get_curr_priv +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-mem2mem 0x478170a4 v4l2_m2m_get_vq +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-mem2mem 0xb48a63fb v4l2_m2m_mmap +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-mem2mem 0xc9002b21 v4l2_m2m_job_finish +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0x391507d0 videobuf_dvb_find_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0xa8b55e9b videobuf_dvb_unregister_bus +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0xad818b66 videobuf_dvb_alloc_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0xb0a5ee3b videobuf_dvb_dealloc_frontends +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0xebe141eb videobuf_dvb_get_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0xff6f5b3f videobuf_dvb_register_bus +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-core 0x3cd76c84 vb2_querybuf +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0x12c162c0 vb2_dvb_unregister_bus +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0x1c9d2698 vb2_dvb_dealloc_frontends +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0x354fdbf2 vb2_dvb_find_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0x60304958 vb2_dvb_register_bus +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0xde63fc6a vb2_dvb_alloc_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0xdfc83b66 vb2_dvb_get_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x011ccb50 v4l2_ctrl_g_ctrl_int64 +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x024481bc v4l2_async_notifier_register +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x0614dd5a v4l2_video_std_frame_period +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x0f869323 v4l2_async_unregister_subdev +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x10ebc907 v4l2_subdev_init +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x1154a325 v4l2_ctrl_new_std_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x123959a1 v4l2_type_names +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x145b9a1a v4l2_clk_unregister_fixed +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x16244fe5 v4l2_prio_check +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x1b5c0864 v4l2_ctrl_merge +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x2342f1ae v4l2_prio_open +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x245356ec video_usercopy +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x25aa75aa v4l2_ctrl_activate +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x2e9c3d06 video_unregister_device +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x314f6d54 v4l2_subdev_queryctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x36847d11 v4l2_ctrl_get_int_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x37c2ff5b video_ioctl2 +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 0x400b5217 v4l2_ctrl_new_std +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x440973d7 v4l2_querymenu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x4433af10 v4l2_clk_disable +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x45a44c24 v4l2_ctrl_fill +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x495426ee v4l2_ctrl_get_name +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x4a23cbb3 v4l2_async_notifier_unregister +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x4b77c88d v4l2_ctrl_replace +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x501b08e4 v4l2_ctrl_handler_free +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x50507a28 __v4l2_ctrl_s_ctrl_int64 +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x534f0bd7 v4l2_subdev_try_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x541f9938 v4l2_ctrl_radio_filter +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x5c23f8c0 video_device_release +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x5f64ec78 __v4l2_clk_register_fixed +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x66e6a9ee v4l2_ctrl_g_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x6a07cebf __v4l2_ctrl_modify_range +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x6add99f7 __v4l2_ctrl_s_ctrl_string +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x6f9c2304 v4l2_clk_enable +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x78ff504c v4l2_ctrl_log_status +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x7a3cd015 v4l2_ctrl_get_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x7cb568a7 v4l2_ctrl_new_int_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x7df2f055 v4l2_ctrl_subdev_subscribe_event +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x7ed1b865 v4l2_ctrl_notify +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x8106095a v4l2_prio_max +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x88279e1d v4l2_ctrl_add_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x8ae93c83 v4l2_ctrl_handler_setup +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x8ebd3aca video_device_release_empty +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x901ec344 v4l2_clk_register +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x95bdfd0e v4l2_ctrl_subscribe_event +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x96a10a1f __v4l2_ctrl_s_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x9d47d43f v4l2_ctrl_subdev_log_status +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x9d69969e v4l2_ctrl_sub_ev_ops +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x9f3c3f87 v4l2_query_ext_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xaa76f3ea v4l2_ctrl_new_std_menu_items +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb0d2107a video_devdata +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb10347ae v4l2_subdev_s_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb218098e v4l2_clk_put +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb35dcafb v4l2_clk_set_rate +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb64fd743 v4l2_subdev_s_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb65c321e v4l2_ctrl_poll +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb747ac6b v4l2_subdev_g_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb77b0159 v4l2_prio_init +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xbc5671dc v4l_printk_ioctl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xbf01313c v4l2_clk_unregister +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xbf4f52c2 v4l2_ctrl_auto_cluster +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xc29a70f8 __video_register_device +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xc5ab5379 v4l2_ctrl_find +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xc7c98a0e v4l2_s_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xcbee96eb v4l2_clk_get +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xcc093a75 v4l2_subdev_querymenu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xcda04a5b v4l2_prio_close +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xcf662903 v4l2_g_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xd1929348 v4l2_ctrl_add_handler +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xd450c518 v4l2_ctrl_cluster +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xd6456880 v4l2_clk_get_rate +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xd6aab39e video_device_alloc +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xd7a25181 v4l2_queryctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xdc248107 v4l2_ctrl_handler_log_status +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xdc646c51 v4l2_async_register_subdev +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xdf45dbea v4l2_ctrl_new_custom +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe2b92059 v4l2_video_std_construct +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xeaed4983 v4l2_subdev_g_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xec44515d v4l2_s_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xee986c68 v4l2_ctrl_handler_init_class +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xefde0e3b v4l2_try_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf3251e7b v4l2_norm_to_name +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf3713ac0 v4l2_ctrl_grab +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf789b0d0 v4l2_g_ctrl +EXPORT_SYMBOL drivers/memstick/core/memstick 0x06e48993 memstick_new_req +EXPORT_SYMBOL drivers/memstick/core/memstick 0x18b6341c memstick_next_req +EXPORT_SYMBOL drivers/memstick/core/memstick 0x28689e3f memstick_alloc_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x34893549 memstick_register_driver +EXPORT_SYMBOL drivers/memstick/core/memstick 0x34a19ec3 memstick_resume_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x35eaf936 memstick_set_rw_addr +EXPORT_SYMBOL drivers/memstick/core/memstick 0x57d08ef5 memstick_add_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x5d820a02 memstick_init_req_sg +EXPORT_SYMBOL drivers/memstick/core/memstick 0x624a96b2 memstick_free_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x8c7fce6c memstick_remove_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0xa43d2106 memstick_suspend_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0xa5987a36 memstick_init_req +EXPORT_SYMBOL drivers/memstick/core/memstick 0xe698265f memstick_unregister_driver +EXPORT_SYMBOL drivers/memstick/core/memstick 0xf2492090 memstick_detect_change +EXPORT_SYMBOL drivers/memstick/host/r592 0x52f1b23b memstick_debug_get_tpc_name +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x05a9dfaf mpt_clear_taskmgmt_in_progress_flag +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x0650ff7d mpt_raid_phys_disk_get_num_paths +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x0663346d mpt_alloc_fw_memory +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x166a57a1 mpt_raid_phys_disk_pg0 +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x1dcdc3c6 mpt_event_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x1fd98c60 mpt_send_handshake_request +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x25fff95d mpt_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x2c45e9fe mpt_free_msg_frame +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x34589d63 mpt_get_msg_frame +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x39e05406 mpt_reset_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x4526289b mpt_event_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x4e06f636 mpt_attach +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x502108d0 mpt_fwfault_debug +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x54ed7b29 mpt_halt_firmware +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x5bd3bc2f mpt_suspend +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x5e96638d mpt_device_driver_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x5fcb52a8 mpt_GetIocState +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x675305ee mptbase_sas_persist_operation +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x6ec2a8d2 mpt_set_taskmgmt_in_progress_flag +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x71303361 mpt_print_ioc_summary +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x74678bea mpt_Soft_Hard_ResetHandler +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x856ce2b4 mpt_detach +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x904442df mpt_resume +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xa57027da mpt_put_msg_frame +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xb08d0af9 mpt_put_msg_frame_hi_pri +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xbb102cc5 mpt_findImVolumes +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xc0e69f82 mpt_device_driver_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xc47c22e8 mpt_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xd9a92a75 mpt_reset_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xdb2a9cd2 mpt_HardResetHandler +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xdd805159 ioc_list +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xe63460fc mpt_verify_adapter +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xf0060f3c mpt_free_fw_memory +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xf421943d mpt_config +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xfec70226 mpt_raid_phys_disk_pg1 +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x06898a65 mptscsih_taskmgmt_complete +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x12f82015 mptscsih_resume +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x2882a466 mptscsih_scandv_complete +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x2a293574 mptscsih_remove +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x2f1d96c6 mptscsih_change_queue_depth +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x4842d3d8 mptscsih_flush_running_cmds +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x5cb682c4 mptscsih_host_attrs +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x7afff01e mptscsih_raid_id_to_num +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x7c98a682 mptscsih_io_done +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x7d584a5f mptscsih_info +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x7d9e6180 mptscsih_ioc_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x88e858d4 mptscsih_IssueTaskMgmt +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x8ea1d492 mptscsih_host_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x9b776f55 mptscsih_bus_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xb4e1d456 mptscsih_is_phys_disk +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xb67eda55 mptscsih_abort +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xbbe72a98 mptscsih_show_info +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xbc42cfa4 mptscsih_dev_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xc4d86d80 mptscsih_qcmd +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xd4d8bc98 mptscsih_slave_configure +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xd733c949 mptscsih_slave_destroy +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xd7dc3feb mptscsih_get_scsi_lookup +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xe1ad6d89 mptscsih_taskmgmt_response_code +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xe63d06e9 mptscsih_bios_param +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xf3af43ea mptscsih_event_process +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xf53d4358 mptscsih_suspend +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xf76cc798 mptscsih_shutdown +EXPORT_SYMBOL drivers/mfd/cros_ec 0x16306646 cros_ec_register +EXPORT_SYMBOL drivers/mfd/cros_ec 0x41248544 cros_ec_resume +EXPORT_SYMBOL drivers/mfd/cros_ec 0x56460c11 cros_ec_remove +EXPORT_SYMBOL drivers/mfd/cros_ec 0x7db4f9bd cros_ec_suspend +EXPORT_SYMBOL drivers/mfd/dln2 0x0a827932 dln2_register_event_cb +EXPORT_SYMBOL drivers/mfd/dln2 0x83db95bc dln2_unregister_event_cb +EXPORT_SYMBOL drivers/mfd/dln2 0xc81e8893 dln2_transfer +EXPORT_SYMBOL drivers/mfd/htc-pasic3 0x8508fe4f pasic3_write_register +EXPORT_SYMBOL drivers/mfd/htc-pasic3 0xb07adf07 pasic3_read_register +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x21f1f75f mc13xxx_reg_write +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x2da9f635 mc13xxx_irq_mask +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x46be8116 mc13xxx_lock +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x46ea6be0 mc13xxx_irq_free +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x55a85a77 mc13xxx_irq_unmask +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x8de5b8bd mc13xxx_irq_status +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x9c066bae mc13xxx_get_flags +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x9fa2388e mc13xxx_unlock +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xc271fad4 mc13xxx_reg_read +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xc415d90f mc13xxx_reg_rmw +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xc4ab131b mc13xxx_irq_request +EXPORT_SYMBOL drivers/mfd/tps6105x 0x71f4a11d tps6105x_mask_and_set +EXPORT_SYMBOL drivers/mfd/tps6105x 0x84c618b9 tps6105x_get +EXPORT_SYMBOL drivers/mfd/tps6105x 0xa32dfde3 tps6105x_set +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-irq 0xd8786080 wm8994_irq_exit +EXPORT_SYMBOL drivers/mfd/wm8994-irq 0xf35d7edb wm8994_irq_init +EXPORT_SYMBOL drivers/mfd/wm8994-regmap 0x21f205db wm1811_regmap_config +EXPORT_SYMBOL drivers/mfd/wm8994-regmap 0x69c2bacf wm8994_base_regmap_config +EXPORT_SYMBOL drivers/mfd/wm8994-regmap 0x8caabc6f wm8994_regmap_config +EXPORT_SYMBOL drivers/mfd/wm8994-regmap 0xbe9007f6 wm8958_regmap_config +EXPORT_SYMBOL drivers/misc/ad525x_dpot 0x2199a243 ad_dpot_probe +EXPORT_SYMBOL drivers/misc/ad525x_dpot 0xa831fa43 ad_dpot_remove +EXPORT_SYMBOL drivers/misc/altera-stapl/altera-stapl 0xad231c72 altera_init +EXPORT_SYMBOL drivers/misc/c2port/core 0x1fe934a8 c2port_device_unregister +EXPORT_SYMBOL drivers/misc/c2port/core 0xff8d4a88 c2port_device_register +EXPORT_SYMBOL drivers/misc/ioc4 0x933d5bdb ioc4_unregister_submodule +EXPORT_SYMBOL drivers/misc/ioc4 0xfe626bf3 ioc4_register_submodule +EXPORT_SYMBOL drivers/misc/mei/mei 0x50147b5a __tracepoint_mei_reg_read +EXPORT_SYMBOL drivers/misc/mei/mei 0xb413892a __tracepoint_mei_reg_write +EXPORT_SYMBOL drivers/misc/tifm_core 0x056acb3a tifm_free_device +EXPORT_SYMBOL drivers/misc/tifm_core 0x0f42a275 tifm_add_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0x3261bfa2 tifm_unregister_driver +EXPORT_SYMBOL drivers/misc/tifm_core 0x39f86aa1 tifm_queue_work +EXPORT_SYMBOL drivers/misc/tifm_core 0x5b3adfb8 tifm_remove_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0x62516ba1 tifm_has_ms_pif +EXPORT_SYMBOL drivers/misc/tifm_core 0xa930ff95 tifm_alloc_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0xaab96199 tifm_alloc_device +EXPORT_SYMBOL drivers/misc/tifm_core 0xafaa5bf6 tifm_register_driver +EXPORT_SYMBOL drivers/misc/tifm_core 0xafc84276 tifm_map_sg +EXPORT_SYMBOL drivers/misc/tifm_core 0xb0683d47 tifm_unmap_sg +EXPORT_SYMBOL drivers/misc/tifm_core 0xda16f513 tifm_eject +EXPORT_SYMBOL drivers/misc/tifm_core 0xf2b8b9a2 tifm_free_adapter +EXPORT_SYMBOL drivers/mmc/card/mmc_block 0xdf73eb07 mmc_cleanup_queue +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x00b510e5 cfi_varsize_frob +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x124c2d66 cfi_merge_status +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x2c958ab2 cfi_fixup +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x4979f543 cfi_build_cmd_addr +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x5aa7b9bf cfi_build_cmd +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0xc272f288 cfi_send_gen_cmd +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0xccaf8f7b cfi_read_pri +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0xff9fa623 cfi_udelay +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0x1ce186eb unregister_mtd_chip_driver +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0x23f322ab do_map_probe +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0x861cbdcf map_destroy +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0xd915e957 register_mtd_chip_driver +EXPORT_SYMBOL drivers/mtd/chips/gen_probe 0xf493594a mtd_do_chip_probe +EXPORT_SYMBOL drivers/mtd/lpddr/lpddr_cmds 0xd0b77183 lpddr_cmdset +EXPORT_SYMBOL drivers/mtd/maps/map_funcs 0x6430b375 simple_map_init +EXPORT_SYMBOL drivers/mtd/mtd 0xb7d71dad mtd_concat_destroy +EXPORT_SYMBOL drivers/mtd/mtd 0xc4b4ebb1 mtd_concat_create +EXPORT_SYMBOL drivers/mtd/nand/denali 0xabe2ed37 denali_remove +EXPORT_SYMBOL drivers/mtd/nand/denali 0xc01fc0b0 denali_init +EXPORT_SYMBOL drivers/mtd/nand/nand 0x4d00e208 nand_scan +EXPORT_SYMBOL drivers/mtd/nand/nand 0x91fa86e0 nand_unlock +EXPORT_SYMBOL drivers/mtd/nand/nand 0x93755370 nand_scan_bbt +EXPORT_SYMBOL drivers/mtd/nand/nand 0x983f757b nand_scan_tail +EXPORT_SYMBOL drivers/mtd/nand/nand 0xdb1a3610 nand_scan_ident +EXPORT_SYMBOL drivers/mtd/nand/nand 0xef859391 onfi_async_timing_mode_to_sdr_timings +EXPORT_SYMBOL drivers/mtd/nand/nand 0xff553a61 nand_lock +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0x2e9045aa nand_bch_init +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0x53927a23 nand_bch_calculate_ecc +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0x70097aa0 nand_bch_free +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0xc914ecc4 nand_bch_correct_data +EXPORT_SYMBOL drivers/mtd/nand/nand_ecc 0x012db5e6 nand_correct_data +EXPORT_SYMBOL drivers/mtd/nand/nand_ecc 0x3132ee65 __nand_calculate_ecc +EXPORT_SYMBOL drivers/mtd/nand/nand_ecc 0x922ca3e1 nand_calculate_ecc +EXPORT_SYMBOL drivers/mtd/nand/nand_ecc 0xb4b94377 __nand_correct_data +EXPORT_SYMBOL drivers/mtd/nand/nand_ids 0x8cfcf75c nand_flash_ids +EXPORT_SYMBOL drivers/mtd/nand/nand_ids 0xa336feb7 nand_manuf_ids +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0x3260438c onenand_default_bbt +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0x5d4a93bd flexonenand_region +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0xa21795e6 onenand_addr +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0xbd09c286 onenand_scan_bbt +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x490210e6 arcnet_open +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x515fa591 alloc_arcdev +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x525a1466 arcnet_timeout +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x5f1c16f9 arcnet_unregister_proto +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x6534792a arcnet_debug +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x6606220f arc_raw_proto +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x68d21c6f arcnet_close +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x962dffb7 arcnet_send_packet +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xb9ae3e39 arc_proto_map +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xe13a495b arc_proto_default +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xec7e3f73 arc_bcast_proto +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xecb730b0 arcnet_interrupt +EXPORT_SYMBOL drivers/net/arcnet/com20020 0x2b7f07c0 com20020_found +EXPORT_SYMBOL drivers/net/arcnet/com20020 0x62ee3a24 com20020_netdev_ops +EXPORT_SYMBOL drivers/net/arcnet/com20020 0x67a0baa9 com20020_check +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x06a63e62 ei_tx_timeout +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x06e00c1b ei_get_stats +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x119721ac ei_interrupt +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x37754b56 __alloc_ei_netdev +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x916e077a NS8390_init +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x9c7bd65d ei_open +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x9d1b9bef ei_start_xmit +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xc75e46dd ei_set_multicast_list +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xd131b93e ei_poll +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xe420810f ei_netdev_ops +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xe75564fc ei_close +EXPORT_SYMBOL drivers/net/ethernet/8390/8390p 0x133c01ff eip_set_multicast_list +EXPORT_SYMBOL drivers/net/ethernet/8390/8390p 0x40ce849e eip_close +EXPORT_SYMBOL drivers/net/ethernet/8390/8390p 0x417070a9 __alloc_eip_netdev +EXPORT_SYMBOL drivers/net/ethernet/8390/8390p 0x5192d25d eip_get_stats +EXPORT_SYMBOL drivers/net/ethernet/8390/8390p 0x60bdd5b9 eip_open +EXPORT_SYMBOL drivers/net/ethernet/8390/8390p 0x87b96525 eip_start_xmit +EXPORT_SYMBOL drivers/net/ethernet/8390/8390p 0x99c03fd7 eip_interrupt +EXPORT_SYMBOL drivers/net/ethernet/8390/8390p 0xa30b8123 eip_poll +EXPORT_SYMBOL drivers/net/ethernet/8390/8390p 0xa58ca4af eip_netdev_ops +EXPORT_SYMBOL drivers/net/ethernet/8390/8390p 0xd498dbeb NS8390p_init +EXPORT_SYMBOL drivers/net/ethernet/8390/8390p 0xe05c789b eip_tx_timeout +EXPORT_SYMBOL drivers/net/ethernet/broadcom/bnx2x/bnx2x 0x92a801c1 bnx2x_schedule_sp_rtnl +EXPORT_SYMBOL drivers/net/ethernet/broadcom/cnic 0x636af174 cnic_unregister_driver +EXPORT_SYMBOL drivers/net/ethernet/broadcom/cnic 0x75838d97 cnic_register_driver +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x1a894fae dev2t3cdev +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x1cb9bfe0 cxgb3_remove_tid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x208e2ac7 t3_l2t_send_slow +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x335874a3 cxgb3_register_client +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x41133cc3 cxgb3_alloc_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x4e277f67 t3_register_cpl_handler +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x4e577275 t3_l2e_free +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x522286e4 cxgb3_insert_tid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x535beab9 cxgb3_unregister_client +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x573829c8 cxgb3_ofld_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x5c5a10ee cxgb3_free_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x5d4e71c8 cxgb3_alloc_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x78348907 t3_l2t_send_event +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x7a1bc5ed t3_l2t_get +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x9d5e5549 cxgb3_queue_tid_release +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xe3e9d090 cxgb3_free_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x0177d283 cxgb4_dbfifo_count +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x0775ea39 cxgb4_update_root_dev_clip +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x0e1460bc cxgb4_port_idx +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x12cc0d1a cxgb4_free_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x1f5fd9a1 cxgb4_bar2_sge_qregs +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x22c4fda5 cxgb4_sync_txq_pidx +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x3998aabe cxgb4_l2t_release +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x3dfdb2ad cxgb4_alloc_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x50ee5c07 cxgb4_best_aligned_mtu +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x59f5f730 cxgb4_l2t_get +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x5d2b4012 cxgb4_flush_eq_cache +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x700cf3fd cxgb4_read_sge_timestamp +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x7173a440 cxgb4_create_server_filter +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x741ab66f cxgb4_read_tpte +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x7a413d96 cxgb4_ofld_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x927f5c7c cxgb4_clip_get +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x949b4dd7 cxgb4_port_viid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x94b8785a cxgb4_pktgl_to_skb +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xa22c9cbb cxgb4_remove_server_filter +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xa73b57eb cxgb4_get_tcp_stats +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xa7b58385 cxgb4_remove_server +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xa976950d cxgb4_port_chan +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xaa073a6a cxgb4_dcb_enabled +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xae1db6f5 cxgb4_l2t_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xb726c3d0 cxgb4_select_ntuple +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xbe24c527 cxgb4_register_uld +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xc6f2224d cxgb4_alloc_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xc7d98954 cxgb4_create_server6 +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xd00e5a36 cxgb4_unregister_uld +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xd6418161 cxgb4_clip_release +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xd69a0294 cxgb4_best_mtu +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xd74a302a cxgb4_remove_tid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xec185ec3 cxgb4_alloc_sftid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xfa970f85 cxgb4_free_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xfb76e1e5 cxgb4_iscsi_init +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xfdcd66aa cxgb4_create_server +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xfe055b6d t4_cleanup_clip_tbl +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0x0e712340 vnic_dev_get_res +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0x4de25f1b enic_api_devcmd_proxy_by_index +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0x4f650da7 vnic_dev_get_res_count +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0x9196d804 vnic_dev_unregister +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0x9f425446 vnic_dev_get_pdev +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0xcd5e903c vnic_dev_register +EXPORT_SYMBOL drivers/net/ethernet/emulex/benet/be2net 0x16a5c02f be_roce_unregister_driver +EXPORT_SYMBOL drivers/net/ethernet/emulex/benet/be2net 0xa39db6fc be_roce_register_driver +EXPORT_SYMBOL drivers/net/ethernet/emulex/benet/be2net 0xbab62e22 be_roce_mcc_cmd +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x01afa0da mlx4_get_slave_from_roce_gid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x07484913 mlx4_SET_PORT_BEACON +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0bbb14b7 mlx4_ALLOCATE_VPP_set +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x16c237c8 mlx4_get_module_info +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x19d74735 mlx4_SET_PORT_general +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x239890ee mlx4_SET_PORT_PRIO2TC +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2acf9e7d mlx4_sync_pkey_table +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2cb011df mlx4_gen_slaves_port_mgt_ev +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x30231337 mlx4_release_eq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x30882dcc mlx4_gen_guid_change_eqe +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3dbfd6d2 mlx4_get_parav_qkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3e20212f mlx4_ALLOCATE_VPP_get +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3ecab09b mlx4_tunnel_steer_add +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3fee3985 mlx4_get_slave_pkey_gid_tbl_len +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x40e47642 mlx4_SET_PORT_SCHEDULER +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4359b349 set_and_calc_slave_port_state +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4a8ef760 mlx4_gen_pkey_eqe +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4df5cc4b mlx4_get_eqs_per_port +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4f8a3cb1 mlx4_gen_port_state_change_eqe +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5043cec0 mlx4_assign_eq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x65acd225 mlx4_test_interrupts +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x68f270c7 mlx4_is_eq_vector_valid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7204390b mlx4_SET_VPORT_QOS_get +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7a4ef27c mlx4_eq_get_irq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8f7a6666 mlx4_SET_MCAST_FLTR +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x954a2d0d mlx4_get_cpu_rmap +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9589d2be mlx4_get_slave_node_guid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9c5b2ae7 mlx4_SET_VPORT_QOS_set +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbdd359b8 mlx4_SET_PORT_VXLAN +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc7f20a10 mlx4_SET_PORT_qpn_calc +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xcf457e61 mlx4_get_roce_gid_from_slave +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xcf8d5ee0 mlx4_put_slave_node_guid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd2488162 mlx4_is_slave_active +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd56959a3 mlx4_get_slave_port_state +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xda021122 mlx4_SET_PORT_fcs_check +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xde9655cd mlx4_is_eq_shared +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x0857aabd mlx5_get_flow_table_id +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x0d47e2c1 mlx5_cmd_exec_cb +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x0eb7287e mlx5_del_flow_table_entry +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x131d7a26 mlx5_core_get_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x1ba05ed8 mlx5_cmd_comp_handler +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x1c7ef2a5 mlx5_core_create_psv +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x2015921f mlx5_core_query_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x23537a9c mlx5_core_destroy_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x2fa03fcf mlx5_debugfs_root +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x3d5c051f mlx5_alloc_map_uar +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x3eb05b99 mlx5_query_nic_vport_mac_address +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x42b2241a mlx5_core_arm_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x45cc3499 mlx5_core_query_vendor_id +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x5c7e09a7 mlx5_cmd_init +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x699acbe4 mlx5_get_protocol_dev +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x6c92e382 mlx5_core_alloc_pd +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x727a4856 mlx5_vector2eqn +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x77cf8d2b mlx5_core_attach_mcg +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x784757a2 mlx5_core_modify_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x79acc911 mlx5_unregister_interface +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x805bc468 mlx5_core_detach_mcg +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x8bf96091 mlx5_core_destroy_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x907c2387 mlx5_cmd_exec +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x9432f69a mlx5_cmd_alloc_uar +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x96644d63 mlx5_core_destroy_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x971ceb42 mlx5_core_create_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x97bb91f7 mlx5_core_create_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x985606ad mlx5_cmd_cleanup +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x99d87af3 mlx5_cmd_free_uar +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xb8143f5a mlx5_core_destroy_psv +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xba4ddaca mlx5_core_query_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xbc8bac2b mlx5_core_create_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xc4f41aeb mlx5_core_query_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xc51beb53 mlx5_core_dealloc_pd +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xd1ded75f mlx5_register_interface +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xdde73691 mlx5_unmap_free_uar +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe0d9a2f3 mlx5_query_vport_state +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe6af33e4 mlx5_destroy_flow_table +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf217fc99 mlx5_core_dump_fill_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf34effca mlx5_create_flow_table +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xfc728a49 mlx5_add_flow_table_entry +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x16ccc7bb hdlcdrv_receiver +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x2b7b7a9d hdlcdrv_arbitrate +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x5296ae03 hdlcdrv_unregister +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x65c7f9bf hdlcdrv_transmitter +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0xdf4fc0f3 hdlcdrv_register +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x26ccd60c sirdev_set_dtr_rts +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x49cb3d38 sirdev_raw_read +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x61ab033e sirdev_raw_write +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x62fa3517 sirdev_write_complete +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x6a20ba3f sirdev_get_instance +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x79a26fc9 irda_register_dongle +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x83d54169 sirdev_put_instance +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x9a51861e sirdev_set_dongle +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x9aa9d5cd sirdev_receive +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xb1f05757 irda_unregister_dongle +EXPORT_SYMBOL drivers/net/mdio 0x22bce513 mdio_mii_ioctl +EXPORT_SYMBOL drivers/net/mdio 0x43e4defc mdio45_nway_restart +EXPORT_SYMBOL drivers/net/mdio 0x7577f992 mdio_set_flag +EXPORT_SYMBOL drivers/net/mdio 0xa1a29548 mdio45_probe +EXPORT_SYMBOL drivers/net/mdio 0xc6b1163f mdio45_links_ok +EXPORT_SYMBOL drivers/net/mdio 0xddc98749 mdio45_ethtool_gset_npage +EXPORT_SYMBOL drivers/net/mii 0x18090c51 mii_nway_restart +EXPORT_SYMBOL drivers/net/mii 0x1951da63 mii_link_ok +EXPORT_SYMBOL drivers/net/mii 0x87d4df01 mii_ethtool_gset +EXPORT_SYMBOL drivers/net/mii 0x92253b1d mii_ethtool_sset +EXPORT_SYMBOL drivers/net/mii 0x98484386 mii_check_media +EXPORT_SYMBOL drivers/net/mii 0xccbcfd13 mii_check_link +EXPORT_SYMBOL drivers/net/mii 0xda66ce9a generic_mii_ioctl +EXPORT_SYMBOL drivers/net/mii 0xf8dcd152 mii_check_gmii_support +EXPORT_SYMBOL drivers/net/phy/mdio-bitbang 0x1f158434 free_mdio_bitbang +EXPORT_SYMBOL drivers/net/phy/mdio-bitbang 0x403df6e0 alloc_mdio_bitbang +EXPORT_SYMBOL drivers/net/phy/vitesse 0xd54addb2 vsc824x_add_skew +EXPORT_SYMBOL drivers/net/ppp/pppox 0x3c0cfd98 pppox_unbind_sock +EXPORT_SYMBOL drivers/net/ppp/pppox 0x3c9a8b26 pppox_ioctl +EXPORT_SYMBOL drivers/net/ppp/pppox 0x5742c13e register_pppox_proto +EXPORT_SYMBOL drivers/net/ppp/pppox 0xe0ff7a18 unregister_pppox_proto +EXPORT_SYMBOL drivers/net/sungem_phy 0x0cdcea74 sungem_phy_probe +EXPORT_SYMBOL drivers/net/team/team 0x45cea733 team_options_change_check +EXPORT_SYMBOL drivers/net/team/team 0x6eac37fe team_mode_register +EXPORT_SYMBOL drivers/net/team/team 0x83fa2b01 team_options_unregister +EXPORT_SYMBOL drivers/net/team/team 0xb556340f team_mode_unregister +EXPORT_SYMBOL drivers/net/team/team 0xbad9fe78 team_options_register +EXPORT_SYMBOL drivers/net/team/team 0xce5cb2ed team_option_inst_set_change +EXPORT_SYMBOL drivers/net/team/team 0xf248cf4f team_modeop_port_enter +EXPORT_SYMBOL drivers/net/team/team 0xf6e5d658 team_modeop_port_change_dev_addr +EXPORT_SYMBOL drivers/net/usb/usbnet 0x2cbd36ab usbnet_manage_power +EXPORT_SYMBOL drivers/net/usb/usbnet 0x3de24364 usbnet_device_suggests_idle +EXPORT_SYMBOL drivers/net/usb/usbnet 0xb30b5c7e usbnet_link_change +EXPORT_SYMBOL drivers/net/wan/hdlc 0x0629ca08 hdlc_close +EXPORT_SYMBOL drivers/net/wan/hdlc 0x329d9a1b hdlc_start_xmit +EXPORT_SYMBOL drivers/net/wan/hdlc 0x3384bd5d hdlc_ioctl +EXPORT_SYMBOL drivers/net/wan/hdlc 0x815044b5 unregister_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0x8d21fcb2 hdlc_change_mtu +EXPORT_SYMBOL drivers/net/wan/hdlc 0xb758863c register_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0xb9a57d36 alloc_hdlcdev +EXPORT_SYMBOL drivers/net/wan/hdlc 0xc448d993 unregister_hdlc_device +EXPORT_SYMBOL drivers/net/wan/hdlc 0xcc6e5618 attach_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0xe06c47e7 detach_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0xf490c8d7 hdlc_open +EXPORT_SYMBOL drivers/net/wan/z85230 0x10c78988 z8530_dead_port +EXPORT_SYMBOL drivers/net/wan/z85230 0x137fd4d4 z8530_sync +EXPORT_SYMBOL drivers/net/wan/z85230 0x1a6e1a2a z8530_sync_open +EXPORT_SYMBOL drivers/net/wan/z85230 0x33beb2ac z8530_channel_load +EXPORT_SYMBOL drivers/net/wan/z85230 0x3ec00fcf z8530_shutdown +EXPORT_SYMBOL drivers/net/wan/z85230 0x51ea4ba5 z8530_init +EXPORT_SYMBOL drivers/net/wan/z85230 0x5cd24d29 z8530_hdlc_kilostream +EXPORT_SYMBOL drivers/net/wan/z85230 0x64d63a4d z8530_queue_xmit +EXPORT_SYMBOL drivers/net/wan/z85230 0x6ad21bcc z8530_describe +EXPORT_SYMBOL drivers/net/wan/z85230 0x6d4d077e z8530_null_rx +EXPORT_SYMBOL drivers/net/wan/z85230 0x8d901fb0 z8530_sync_txdma_open +EXPORT_SYMBOL drivers/net/wan/z85230 0x9d6a8d6b z8530_nop +EXPORT_SYMBOL drivers/net/wan/z85230 0xb4253688 z8530_sync_dma_open +EXPORT_SYMBOL drivers/net/wan/z85230 0xcb4b32e3 z8530_sync_close +EXPORT_SYMBOL drivers/net/wan/z85230 0xd4ffebf0 z8530_interrupt +EXPORT_SYMBOL drivers/net/wan/z85230 0xdb06b6bc z8530_sync_txdma_close +EXPORT_SYMBOL drivers/net/wan/z85230 0xe3d80064 z8530_hdlc_kilostream_85230 +EXPORT_SYMBOL drivers/net/wan/z85230 0xf33dbb0b z8530_sync_dma_close +EXPORT_SYMBOL drivers/net/wimax/i2400m/i2400m 0x80d514f9 i2400m_unknown_barker +EXPORT_SYMBOL drivers/net/wireless/airo 0x36b0878e reset_airo_card +EXPORT_SYMBOL drivers/net/wireless/airo 0x70c76914 stop_airo_card +EXPORT_SYMBOL drivers/net/wireless/airo 0x73acf34c init_airo_card +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x00d0e259 ath_key_config +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x0cb52e60 ath_hw_keyreset +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x2837d56f ath_hw_setbssidmask +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x2bfef1bb ath_hw_get_listen_time +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x319c6026 ath_is_49ghz_allowed +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x5c7f210c ath_reg_notifier_apply +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x71ea2583 ath_printk +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x7ab28390 dfs_pattern_detector_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x802bbdf7 ath_key_delete +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x84d0d921 ath_rxbuf_alloc +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x882f5f57 ath_regd_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x9c3d5db1 ath_hw_cycle_counters_update +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xaafdb617 ath_is_world_regd +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xd946ef80 ath_is_mybeacon +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xfb4de67a ath_regd_get_band_ctl +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x0a76996e ath10k_core_register +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x258fec54 ath10k_core_create +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x3a290e41 ath10k_warn +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x4da1b8c8 ath10k_core_start +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x62be0579 ath10k_core_destroy +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x7bc93605 ath10k_err +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x7c96cfb6 ath10k_debug_get_new_fw_crash_data +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x91220d2d ath10k_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xb3e206b3 ath10k_core_stop +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xb5d35036 ath10k_core_unregister +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xe75186e4 ath10k_print_driver_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x0e5ad72c ath6kl_stop_txrx +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x3698cfd9 ath6kl_core_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x42b10449 ath6kl_hif_intr_bh_handler +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x554a93f3 ath6kl_core_rx_complete +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x79ffd3e7 ath6kl_core_tx_complete +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x7b317424 ath6kl_printk +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x804e991a ath6kl_cfg80211_suspend +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x80a09613 ath6kl_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x91cfb84a ath6kl_hif_rw_comp_handler +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x9bdec0fc ath6kl_core_create +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xa6f66cc1 ath6kl_warn +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xa8e56554 ath6kl_cfg80211_resume +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xcb014460 ath6kl_err +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xcc26b59a ath6kl_core_cleanup +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xf2618519 ath6kl_core_destroy +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x0bdd30c2 ath9k_cmn_process_rssi +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x0c5e05dd ath9k_cmn_setup_ht_cap +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x21966646 ath9k_cmn_beacon_config_ap +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x2d15177d ath9k_cmn_debug_stat_rx +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x310ef331 ath9k_cmn_process_rate +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x327b711c ath9k_cmn_beacon_config_adhoc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x43cd18d5 ath9k_cmn_debug_phy_err +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x4a444e31 ath9k_cmn_get_hw_crypto_keytype +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x621a2de6 ath9k_cmn_beacon_config_sta +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x9232a226 ath9k_cmn_spectral_scan_config +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x9384d747 ath9k_cmn_rx_accept +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x986c5196 ath9k_cmn_rx_skb_postprocess +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x99ef5d27 ath9k_cmn_spectral_deinit_debug +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x9d935a69 ath9k_cmn_get_channel +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x9dad26aa ath9k_cmn_init_crypto +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x9f4c568c ath9k_cmn_debug_modal_eeprom +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xa8dc949a ath9k_cmn_spectral_scan_trigger +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xadedc459 ath9k_cmn_init_channels_rates +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xb8cfc717 ath9k_cmn_debug_recv +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xd2981357 ath9k_cmn_count_streams +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xdd78e096 ath9k_cmn_reload_chainmask +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xe60791fe ath9k_cmn_update_txpow +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xea7a3ea3 ath9k_cmn_debug_base_eeprom +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xede839c8 ath_cmn_process_fft +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xf87ece19 ath9k_cmn_spectral_init_debug +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x01e746f0 ath9k_hw_stopdmarecv +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0388b90b ath9k_hw_request_gpio +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0754358b ath9k_hw_setrxfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x07f0ebc6 ath9k_hw_setuprxdesc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0c9e86c5 ar9003_paprd_setup_gain_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0cec63ab ath9k_hw_cfg_output +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0e30a999 ath9k_hw_abort_tx_dma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0ee3d518 ath9k_hw_reset +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1083d57f ath_gen_timer_isr +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1160f39f ath9k_hw_wow_enable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x116cce1b ath9k_hw_setuptxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x12e1518a ath9k_hw_settsf64 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1b661e18 ath9k_hw_btcoex_set_weight +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1c32d216 ath9k_hw_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1d725baf ath9k_hw_addrxbuf_edma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1ddcb74b ath9k_hw_enable_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x207a4120 ath9k_hw_wow_apply_pattern +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x226f154b ath9k_hw_btcoex_bt_stomp +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x239b9412 ath9k_hw_setopmode +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2566b5f7 ar9003_hw_disable_phy_restart +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x27ae7155 ath9k_hw_setantenna +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2d8d224b ath9k_hw_beaconq_setup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x3588d446 ath9k_hw_setrxabort +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x35b24ad6 ath9k_hw_reset_tsf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x3807a1d0 ath9k_hw_puttxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x3c3de4a9 ar9003_paprd_is_done +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x3ca2be49 ar9003_mci_get_next_gpm_offset +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x3caadf2a ath9k_hw_btcoex_init_3wire +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4014327e ath9k_hw_ani_monitor +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x40b417d1 ath9k_hw_rxprocdesc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x41f6d62f ath9k_hw_setpower +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x44ca69d9 ath9k_hw_btcoex_init_mci +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x44fa9268 ar9003_mci_setup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4ead063d ar9003_hw_bb_watchdog_check +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x53b5af0f ath9k_hw_kill_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x57e53236 ath9k_hw_computetxtime +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x5a0e529c ar9003_is_paprd_enabled +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x5c5540d8 ath9k_hw_set_sta_beacon_timers +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x5c845a13 ath9k_hw_check_alive +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x5d88f6b2 ath9k_hw_btcoex_init_2wire +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x5fc579da ar9003_paprd_init_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x60423fb0 ath9k_hw_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x62a20d88 ath9k_hw_putrxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6567f0f5 ath9k_hw_init_global_settings +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6aef9c8b ar9003_get_pll_sqsum_dvc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6c9b164d ar9003_mci_get_interrupt +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7103061e ath9k_hw_process_rxdesc_edma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x72b2cd3a ath9k_hw_wait +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7676b3c1 ath9k_hw_btcoex_set_concur_txprio +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x79546392 ath9k_hw_getrxfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7e399b66 ath9k_hw_gettsf32 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x85017845 ath9k_hw_txstart +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8b53887d ath9k_hw_gen_timer_start +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8cff9bfa ath9k_hw_beaconinit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8d12b47b ath9k_hw_setup_statusring +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8ea95278 ath9k_hw_set_txpowerlimit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x919fb084 ath9k_hw_phy_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x958cb4fb ar9003_mci_send_wlan_channels +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9681a6b8 ath9k_hw_btcoex_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9838e73a ath9k_hw_name +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9c56fe90 ath9k_hw_wow_wakeup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9c81ea45 ath9k_hw_cfg_gpio_input +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9c9788f9 ath9k_hw_reset_calvalid +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9d7cc497 ath9k_hw_set_tsfadjust +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9e05b976 ath9k_hw_set_txq_props +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9ee925d3 ath9k_hw_resettxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9f93b073 ath9k_hw_getchan_noise +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa240405b ar9003_mci_send_message +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa28527f0 ath9k_hw_disable_mib_counters +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa5ae9583 ath9k_hw_startpcureceive +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xaa13b81a ath9k_hw_deinit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xae009c7d ath9k_hw_setmcastfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb124b8aa ath9k_hw_disable_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb1b0606b ar9003_paprd_create_curve +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb20ad551 ath9k_hw_set_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb4f50d35 ath9k_hw_set_rx_bufsize +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb8cfeb86 ath9k_hw_bstuck_nfcal +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb8de7cc9 ath9k_hw_set_tx_filter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xbac569dc ar9003_paprd_enable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xbb9a8037 ath9k_hw_gen_timer_stop +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xbcc3942b ath9k_hw_getnf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xbd19cb68 ath_gen_timer_free +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc11bd7aa ar9003_mci_cleanup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc199360b ath9k_hw_numtxpending +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc6ad771b ath9k_hw_check_nav +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc8830295 ath9k_hw_intrpend +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xcd8873be ar9003_mci_state +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xced64287 ath9k_hw_releasetxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xcf726159 ar9003_paprd_populate_single_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd3ad8d44 ar9003_hw_bb_watchdog_dbg_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd4e7fea3 ath9k_hw_stop_dma_queue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd5850e8c ath9k_hw_gpio_get +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd925d803 ath9k_hw_get_txq_props +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xdbc93a25 ath_gen_timer_alloc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xde2d0bee ath9k_hw_updatetxtriglevel +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xdf6150ab ath9k_hw_gettxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xdffe215d ath9k_hw_set_gpio +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xea1c5a8c ath9k_hw_write_associd +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xec502108 ar9003_mci_set_bt_version +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xec5929ca ath9k_hw_btcoex_enable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf44af65b ath9k_hw_init_btcoex_hw +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf69a6f23 ath9k_hw_gettsf64 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf8566ac6 ath9k_hw_abortpcurecv +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xff6bf472 ath9k_hw_btcoex_init_scheme +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xffd02408 ath9k_hw_get_tsf_offset +EXPORT_SYMBOL drivers/net/wireless/atmel 0x73135dca atmel_open +EXPORT_SYMBOL drivers/net/wireless/atmel 0xb4131dc4 stop_atmel_card +EXPORT_SYMBOL drivers/net/wireless/atmel 0xf89e324d init_atmel_card +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x15ff5cb1 brcmu_pkt_buf_free_skb +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x1ad20233 brcmu_pktq_peek_tail +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x1ba1b47f brcmu_pktq_pflush +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x22f58c23 brcmu_pktq_pdeq +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x2a7c6a6e brcmu_pktq_flush +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x3f2988a1 brcmu_dotrev_str +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x813e1c9b brcmu_pkt_buf_get_skb +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x81618f34 brcmu_pktq_pdeq_match +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x9f4b5dcf brcmu_d11_attach +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xa432051b brcmu_pktq_penq +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xc38c5c8a brcmu_pktq_pdeq_tail +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xc42bce74 brcmu_pktq_mlen +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xc459ade0 brcmu_pktq_init +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xd261b8a6 brcmu_boardrev_str +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xd5289331 brcmu_pktq_mdeq +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xf0b78876 brcmu_pktq_penq_head +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x0324edb9 hostap_set_string +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x0ad69602 hostap_set_multicast_list_queue +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x1f98836a hostap_remove_proc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x272d95fa hostap_handle_sta_tx_exc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x2f64c885 hostap_set_hostapd_sta +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x3db31f4b hostap_set_roaming +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x4ed326a8 hostap_setup_dev +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x52146510 hostap_set_hostapd +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x5a68aa60 hostap_add_interface +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x5e60fd7d hostap_get_porttype +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x68c94281 hostap_check_sta_fw_version +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x6c68547b hostap_set_word +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x6ffe2ee8 hostap_master_start_xmit +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x8cc01194 prism2_update_comms_qual +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x8d686cd2 hostap_info_process +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x8f381944 hostap_remove_interface +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x95a1a070 hostap_init_ap_proc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xa12ad27f hostap_dump_tx_header +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xb2a945e0 hostap_dump_rx_header +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xb4b77c8b hostap_80211_get_hdrlen +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xc6cef622 hostap_info_init +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xc71ed1b9 hostap_set_auth_algs +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xce2b89aa hostap_init_proc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xd9eb06f9 hostap_set_encryption +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xdaa1a4ac hostap_80211_rx +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xe1cc9c18 hostap_free_data +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xe418e85c hostap_80211_ops +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xe5d5c984 hostap_init_data +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xf78a8f4b hostap_set_antsel +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x10dee895 libipw_get_geo +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x1351d7b6 libipw_networks_age +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x14431cc4 free_libipw +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x1c856a88 libipw_xmit +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x21e822f1 libipw_wx_get_encodeext +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x33ffc13e libipw_wx_set_encode +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x4d7844ba libipw_get_channel +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x53fdc464 libipw_is_valid_channel +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x6425e8f0 libipw_freq_to_channel +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x7a1269a9 libipw_set_geo +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x7fa5a477 libipw_rx +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x9b8afabd libipw_wx_get_encode +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xad6af20d libipw_rx_mgt +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xb19dbc30 libipw_channel_to_freq +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xca292ca8 libipw_change_mtu +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xd77eaa16 alloc_libipw +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xd91b51da libipw_channel_to_index +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xde46ed0b libipw_wx_set_encodeext +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xdfc54105 libipw_txb_free +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xfa2b2332 libipw_wx_get_scan +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xfaa49328 libipw_get_channel_flags +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x007726fa il_eeprom_query_addr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x01e2878e il_power_update_mode +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x0515c36c il_tx_cmd_complete +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x07170f23 il_mac_flush +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x0b597f8b il_get_passive_dwell_time +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x0ed4c4ce il_rd_prph +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x116d6497 il_force_reset +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x118ccc7b il_update_stats +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x14ae0db7 il_hdl_pm_sleep +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x1c53fd3e il_restore_stations +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x21e71556 il_set_rxon_ht +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x2279cb74 il_hdl_pm_debug_stats +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x244095b6 il_rx_queue_update_write_ptr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x26cb71c9 il_send_bt_config +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x277f4f0e il_init_scan_params +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x2a017a7c il_setup_scan_deferred_work +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x2a52587b il_get_free_ucode_key_idx +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x30bb69bb il_scan_cancel_timeout +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x3145dbb3 il_tx_queue_free +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x31fd1907 il_cmd_queue_unmap +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x3332cd55 il_scan_cancel +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x350a498a il_pm_ops +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x361b8f4e il_get_lowest_plcp +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x3aa57fe9 il_add_beacon_time +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x3b840e57 il_send_cmd_sync +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x410e1bc1 il_alloc_txq_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x43632ced il_init_geos +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4590e295 il_free_channel_map +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x45b0c08f il_hdl_error +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x45c0ebe9 il_fill_probe_req +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x45ea0b19 il_apm_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4aa39103 il_get_cmd_string +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4cb60ce3 il_send_cmd +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x526f78ce il_set_rxon_channel +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x5351f0f1 il_read_targ_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x54aef694 il_set_flags_for_band +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x564c6740 il_debug_level +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x5ccc41f6 il_clear_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x5d3fa957 il_is_ht40_tx_allowed +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x5f5aeab5 il_send_rxon_timing +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x63d83d8b il_check_rxon_cmd +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x699cb9e2 il_rx_queue_space +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x6cfdeb25 il_set_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x7243e218 il_tx_queue_reset +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x74a60d6a il_rx_queue_alloc +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x78cbce75 il_send_lq_cmd +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x7915b825 il_set_decrypted_flag +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x7d52854d il_irq_handle_error +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x7e66cc68 il_leds_exit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x7eec57b7 il_mac_config +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x84cf6491 il_send_cmd_pdu_async +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x851c82d5 il_mac_sta_remove +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x8731af41 il_mac_change_interface +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x8b10baa7 il_set_rate +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x8b17b8a9 _il_poll_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x8bbba7a7 il_connection_init_rx_config +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x8dc3b21c il_tx_cmd_protection +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x90620e54 il_apm_stop +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x9246ff03 il_setup_watchdog +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x9516385d il_set_tx_power +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x98456fbe il_mac_conf_tx +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x9866bec5 il_chswitch_done +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x99397edf il_write_targ_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x9b732900 il_clear_ucode_stations +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x9ba0b7d0 il_free_txq_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x9d01d977 _il_apm_stop +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x9dc87a05 il_send_stats_request +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa1bd9977 il_mac_remove_interface +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa4e2ed52 il_get_channel_info +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa635950f il_mac_bss_info_changed +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa7a6d0a7 il_power_initialize +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xaac32db6 il_eeprom_free +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xaf1c0e6d il_send_cmd_pdu +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xaf584e5c il_hdl_spectrum_measurement +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb00ecbab il_dbgfs_unregister +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb5aba887 il_full_rxon_required +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb6e5f556 il_usecs_to_beacons +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb78f6a24 il_add_station_common +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb7bd33ff il_isr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc1455ebb il_txq_update_write_ptr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc149c172 il_wr_prph +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc270ce79 il_setup_rx_scan_handlers +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc39cf12c il_bg_watchdog +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc6cf3608 il_mac_hw_scan +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc7bd2be0 il_tx_queue_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc7f2ebae il_send_add_sta +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc89813a5 il_tx_queue_unmap +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc992e7c3 il_eeprom_query16 +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xcabc3fe7 il_leds_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xcd38a0b7 il_get_active_dwell_time +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd5371889 il_mac_reset_tsf +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xdb5affe5 il_dbgfs_register +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe0ed2905 il_mac_add_interface +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe435493a il_queue_space +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe897a08d il_init_channel_map +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xea7a59f1 il_hdl_csa +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf1935d12 il_free_geos +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf1fc38f4 il_eeprom_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf501278b il_bcast_addr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf995fa4d il_poll_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xfc1e0627 il_cmd_queue_free +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xfe5cb257 il_set_rxon_hwcrypto +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xff3a930b il_cancel_scan_deferred_work +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xff8b7848 il_get_single_channel_number +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x08ee1e7d __tracepoint_iwlwifi_dev_ucode_event +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x0d9eb5ff __tracepoint_iwlwifi_dev_ucode_wrap_event +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x36dcef55 __tracepoint_iwlwifi_dev_iowrite32 +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x67381a2a __tracepoint_iwlwifi_dev_ucode_error +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x7edec07d __tracepoint_iwlwifi_dev_ioread32 +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x9a12c9c5 __tracepoint_iwlwifi_dev_ucode_cont_event +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0xc0827b2f __tracepoint_iwlwifi_dev_iowrite8 +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x02cf7fcf hermes_struct_init +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x1b3b8c5f orinoco_if_add +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x2944424e orinoco_init +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x46c0a2a8 free_orinocodev +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x541158a8 orinoco_if_del +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x54402fc4 orinoco_change_mtu +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x914e7ab5 orinoco_set_multicast_list +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x91a0288d orinoco_process_xmit_skb +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x98d3be5a orinoco_open +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x9f8d012c orinoco_stop +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xa08ac871 alloc_orinocodev +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xa1188669 __orinoco_ev_rx +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xc038531f __orinoco_ev_info +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xc087b4aa orinoco_down +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xc2a0a675 orinoco_tx_timeout +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xeabaca9b orinoco_get_stats +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xf33ce521 orinoco_up +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xffe27bca orinoco_interrupt +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/btcoexist/btcoexist 0xa27bf1c7 rtl_btc_get_ops_pointer +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x053c0a34 rtl92c_phy_set_io_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x08125d96 rtl92c_dm_write_dig +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x09d7b35d rtl92c_dm_init_edca_turbo +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x0a039712 rtl92c_phy_set_txpower_level +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x140e977e _rtl92c_phy_dbm_to_txpwr_idx +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x1bdb9efe rtl92c_phy_set_bb_reg +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x28af9789 rtl92c_bt_rssi_state_change +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x2b7df1e1 _rtl92c_phy_txpwr_idx_to_dbm +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x2c21f600 rtl92c_dm_watchdog +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x48738424 rtl92c_dm_init +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x4b511329 rtl92c_phy_sw_chnl_callback +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x501011b2 rtl92c_phy_iq_calibrate +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x527d0870 _rtl92c_phy_rf_serial_write +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x570baf6b _rtl92c_phy_rf_serial_read +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x5c65f032 rtl92c_firmware_selfreset +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x61277352 rtl92c_dm_bt_coexist +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x6404019b _rtl92c_phy_bb8192c_config_parafile +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x6c00ad85 _rtl92c_phy_fw_rf_serial_write +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x7282bc27 rtl92ce_phy_set_rf_on +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x82674ea7 _rtl92c_phy_fw_rf_serial_read +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x8420e6ea rtl92c_phy_sw_chnl +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x8d38c6e3 rtl92c_phy_rf_config +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x9695db28 rtl92c_phy_query_bb_reg +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x970bbd3a rtl92c_phy_update_txpower_dbm +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x9d1c1725 rtl92c_set_fw_rsvdpagepkt +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x9e02c33b rtl92c_set_fw_pwrmode_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xac517df1 rtl8192_phy_check_is_legal_rfpath +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xb3314d48 _rtl92c_phy_calculate_bit_shift +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xb502b623 rtl92c_set_fw_joinbss_report_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xbd21b816 rtl92c_phy_set_rfpath_switch +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xc13c6437 rtl92c_download_fw +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xce3520c3 rtl92c_dm_init_rate_adaptive_mask +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xd06ff4eb _rtl92c_store_pwrIndex_diffrate_offset +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xd17c79d1 rtl92c_phy_set_bw_mode +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xd35b3fe6 rtl92c_phy_set_io +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xdb5c99a8 rtl92c_fill_h2c_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xea9490df rtl92c_dm_check_txpower_tracking +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xf2c872c3 rtl92c_phy_lc_calibrate +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xf309db11 _rtl92c_phy_set_rf_sleep +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xfa7dd0ec _rtl92c_phy_init_bb_rf_register_definition +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xfd040645 rtl92c_dm_rf_saving +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xfd6e3683 rtl92c_phy_ap_calibrate +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x6fb9f06f rtl8723_fill_dummy +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_pci 0x0d365bc5 rtl_pci_probe +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_pci 0x1cb694c0 rtl_pci_disconnect +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_pci 0x2e31ea29 rtl_pci_resume +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_pci 0xd3590fd3 rtl_pci_suspend +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_usb 0x21c0236c rtl_usb_suspend +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_usb 0x2b0d95c8 rtl_usb_probe +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_usb 0x39e2a99b rtl_usb_disconnect +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_usb 0x5144d598 rtl_usb_resume +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x1d23a83a rtl_phy_scan_operation_backup +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x1f48322e rtl_ps_enable_nic +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x207fbb70 rtl_evm_db_to_percentage +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x20eb3ca6 rtl_efuse_shadow_map_update +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x2b38f9ad rtl_ps_set_rf_state +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x40435adc rtl_get_tcb_desc +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x43218fc0 rtl_cam_mark_invalid +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x4bfc2c8d rtl_cam_reset_all_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x51167494 rtl_lps_leave +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x5ea97685 rtl_wowlan_fw_cb +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x6c8bf2b1 rtlwifi_rate_mapping +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x6d889b4a rtl_signal_scale_mapping +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x7372996a rtl_process_phyinfo +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x79188a02 rtl_query_rxpwrpercentage +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x7e737250 rtl_send_smps_action +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x8d5788c7 rtl_cmd_send_packet +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x94e1bb21 rtl_bb_delay +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x966f3d40 rtl_dm_diginit +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x980848e2 rtl_addr_delay +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x983bf26d efuse_read_1byte +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x98d75e8a rtl_cam_add_one_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xa8d1cab7 rtl_cam_delete_one_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xad802628 rtl_init_rfkill +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xaece1c55 rtl_cam_del_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xb1eb9850 rtl_fw_cb +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xbef2d2fd rtl_ps_disable_nic +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xc062e30e efuse_one_byte_read +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xc78edf38 rtl_hal_pwrseqcmdparsing +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xcb8551ce rtl_rfreg_delay +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xd08624ba efuse_shadow_read +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xd8fbb9eb rtl_cam_get_free_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xda620ff3 rtl_lps_enter +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xf69e5dba rtl_cam_empty_entry +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0x20905488 wlcore_tx_complete +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0x5dd6d2c2 wlcore_calc_packet_alignment +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0x5efe4b54 wl1271_free_tx_id +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0xe537b0ad wl12xx_is_dummy_packet +EXPORT_SYMBOL drivers/nfc/microread/microread 0x5d5bebe8 microread_remove +EXPORT_SYMBOL drivers/nfc/microread/microread 0xb5b1df2f microread_probe +EXPORT_SYMBOL drivers/nfc/nxp-nci/nxp-nci 0xc9b40639 nxp_nci_probe +EXPORT_SYMBOL drivers/nfc/nxp-nci/nxp-nci 0xcb9c37cf nxp_nci_remove +EXPORT_SYMBOL drivers/nfc/nxp-nci/nxp-nci 0xfe18a0ff nxp_nci_fw_recv_frame +EXPORT_SYMBOL drivers/nfc/pn544/pn544 0x4c114375 pn544_hci_probe +EXPORT_SYMBOL drivers/nfc/pn544/pn544 0xb753ca4c pn544_hci_remove +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x29cf52ba st_nci_se_io +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x374ac999 st_nci_se_init +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x5e68ddf2 ndlc_remove +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x7df12508 ndlc_probe +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0xc29ad4ca ndlc_open +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0xc4f6c109 ndlc_recv +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0xe8c975bd st_nci_se_deinit +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0xf636fe01 ndlc_send +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0xfa7bd880 ndlc_close +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x0cb26491 st21nfca_hci_se_io +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x1baa8341 st21nfca_se_init +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x1c747b36 st21nfca_se_deinit +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x261c8b5f st21nfca_connectivity_event_received +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x286fef35 st21nfca_tm_send_dep_res +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x3dc9c5a0 st21nfca_hci_enable_se +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x3fe0052b st21nfca_hci_remove +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x70b06c66 st21nfca_dep_event_received +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x92b7df96 st21nfca_hci_discover_se +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x9c44ab19 st21nfca_dep_deinit +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xa96839f6 st21nfca_dep_init +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xa976c708 st21nfca_im_send_dep_req +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xb08a78e4 st21nfca_hci_probe +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xc6f93934 st21nfca_im_send_atr_req +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xd0044837 st21nfca_apdu_reader_event_received +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xe7a150fe st21nfca_hci_disable_se +EXPORT_SYMBOL drivers/ntb/ntb 0x1cd12c15 ntb_register_device +EXPORT_SYMBOL drivers/ntb/ntb 0x467122d6 ntb_link_event +EXPORT_SYMBOL drivers/ntb/ntb 0xb4b58727 ntb_unregister_client +EXPORT_SYMBOL drivers/ntb/ntb 0xb5dc0935 ntb_clear_ctx +EXPORT_SYMBOL drivers/ntb/ntb 0xc15cb763 ntb_db_event +EXPORT_SYMBOL drivers/ntb/ntb 0xc507b4ae ntb_unregister_device +EXPORT_SYMBOL drivers/ntb/ntb 0xd65785ed ntb_set_ctx +EXPORT_SYMBOL drivers/ntb/ntb 0xdd6c5f1b __ntb_register_client +EXPORT_SYMBOL drivers/nvdimm/nd_btt 0x631b1417 nvdimm_namespace_detach_btt +EXPORT_SYMBOL drivers/nvdimm/nd_btt 0xb34f1d6d nvdimm_namespace_attach_btt +EXPORT_SYMBOL drivers/parport/parport 0x1a5659cc parport_unregister_driver +EXPORT_SYMBOL drivers/parport/parport 0x2f470ac0 parport_ieee1284_epp_write_addr +EXPORT_SYMBOL drivers/parport/parport 0x2ff22ac9 parport_ieee1284_read_byte +EXPORT_SYMBOL drivers/parport/parport 0x33aa374f parport_ieee1284_epp_read_data +EXPORT_SYMBOL drivers/parport/parport 0x380c89aa parport_ieee1284_ecp_write_data +EXPORT_SYMBOL drivers/parport/parport 0x3aaf4b40 parport_negotiate +EXPORT_SYMBOL drivers/parport/parport 0x42aec7a8 parport_register_device +EXPORT_SYMBOL drivers/parport/parport 0x48be4394 parport_register_dev_model +EXPORT_SYMBOL drivers/parport/parport 0x4d2a941b parport_ieee1284_interrupt +EXPORT_SYMBOL drivers/parport/parport 0x4d687b69 parport_get_port +EXPORT_SYMBOL drivers/parport/parport 0x50ab9ca0 parport_ieee1284_ecp_read_data +EXPORT_SYMBOL drivers/parport/parport 0x57424a39 parport_claim +EXPORT_SYMBOL drivers/parport/parport 0x5e3a3912 parport_irq_handler +EXPORT_SYMBOL drivers/parport/parport 0x6dae60e3 parport_claim_or_block +EXPORT_SYMBOL drivers/parport/parport 0x76542a64 parport_write +EXPORT_SYMBOL drivers/parport/parport 0x86b5df1f parport_del_port +EXPORT_SYMBOL drivers/parport/parport 0x89be41ba __parport_register_driver +EXPORT_SYMBOL drivers/parport/parport 0x9a0f0205 parport_ieee1284_write_compat +EXPORT_SYMBOL drivers/parport/parport 0x9c0765ba parport_wait_event +EXPORT_SYMBOL drivers/parport/parport 0xa2e66098 parport_find_base +EXPORT_SYMBOL drivers/parport/parport 0xa6b31066 parport_ieee1284_epp_read_addr +EXPORT_SYMBOL drivers/parport/parport 0xa9b99db4 parport_release +EXPORT_SYMBOL drivers/parport/parport 0xaacccf24 parport_ieee1284_epp_write_data +EXPORT_SYMBOL drivers/parport/parport 0xbd874c4e parport_ieee1284_ecp_write_addr +EXPORT_SYMBOL drivers/parport/parport 0xce30e0f6 parport_set_timeout +EXPORT_SYMBOL drivers/parport/parport 0xd3d9cf92 parport_unregister_device +EXPORT_SYMBOL drivers/parport/parport 0xd61ea647 parport_put_port +EXPORT_SYMBOL drivers/parport/parport 0xd9c3c14f parport_announce_port +EXPORT_SYMBOL drivers/parport/parport 0xd9d6bf4b parport_find_number +EXPORT_SYMBOL drivers/parport/parport 0xdd56d437 parport_read +EXPORT_SYMBOL drivers/parport/parport 0xe3a3d049 parport_ieee1284_read_nibble +EXPORT_SYMBOL drivers/parport/parport 0xe54fae71 parport_remove_port +EXPORT_SYMBOL drivers/parport/parport 0xee08ec86 parport_wait_peripheral +EXPORT_SYMBOL drivers/parport/parport 0xf575ad5b parport_register_port +EXPORT_SYMBOL drivers/parport/parport_pc 0x3c106ff4 parport_pc_probe_port +EXPORT_SYMBOL drivers/parport/parport_pc 0x8e341199 parport_pc_unregister_port +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x068155e2 pcmcia_request_window +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x1bdea060 pcmcia_dev_present +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x2f98e5a7 __pcmcia_request_exclusive_irq +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x36bbea2d pcmcia_write_config_byte +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x459f39e8 pcmcia_read_config_byte +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x4675dc24 pcmcia_loop_config +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x4dbc3fa6 pcmcia_unregister_driver +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x4f3f2ca1 pcmcia_map_mem_page +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x657cbfaa pcmcia_fixup_iowidth +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x742f5665 pcmcia_parse_tuple +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x7841c1ff pcmcia_request_io +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x8565eb16 pcmcia_request_irq +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xb226a56f pcmcia_disable_device +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xb8be0c86 pcmcia_register_driver +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xbdbb5baa pcmcia_get_mac_from_cis +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xc416d1b8 pcmcia_enable_device +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xd84676c4 pcmcia_release_window +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xe0330f5b pcmcia_loop_tuple +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xe4a8b458 pcmcia_get_tuple +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xe932c42a pcmcia_fixup_vpp +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x2076de98 pcmcia_parse_uevents +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x212db8d2 pcmcia_socket_list +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x4933348f pcmcia_socket_class +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x8251b398 pcmcia_unregister_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xa11f093d pcmcia_register_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xaaa7748e pcmcia_get_socket_by_nr +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xc22ac2e2 pcmcia_get_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xc4ce38d7 pcmcia_parse_events +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xcf97f3bd dead_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xd2fd35a9 pcmcia_put_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xe0e6e121 pcmcia_socket_list_rwsem +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xe5371dac pcmcia_reset_card +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xf06e21c9 pccard_register_pcmcia +EXPORT_SYMBOL drivers/pcmcia/pcmcia_rsrc 0x745cc0cf pccard_static_ops +EXPORT_SYMBOL drivers/pcmcia/pcmcia_rsrc 0xb3b60051 pccard_nonstatic_ops +EXPORT_SYMBOL drivers/platform/x86/sony-laptop 0x5bb1e117 sony_pic_camera_command +EXPORT_SYMBOL drivers/pps/pps_core 0x2aebf5aa pps_event +EXPORT_SYMBOL drivers/pps/pps_core 0x829d2e7d pps_lookup_dev +EXPORT_SYMBOL drivers/pps/pps_core 0x841e256b pps_unregister_source +EXPORT_SYMBOL drivers/pps/pps_core 0x8f5ee792 pps_register_source +EXPORT_SYMBOL drivers/ptp/ptp 0x0af076f6 ptp_clock_index +EXPORT_SYMBOL drivers/ptp/ptp 0x1014752b ptp_clock_event +EXPORT_SYMBOL drivers/ptp/ptp 0x5864da07 ptp_find_pin +EXPORT_SYMBOL drivers/ptp/ptp 0xc2099075 ptp_clock_unregister +EXPORT_SYMBOL drivers/ptp/ptp 0xf2fe83b5 ptp_clock_register +EXPORT_SYMBOL drivers/ptp/ptp_pch 0x08d6c1a4 pch_tx_snap_read +EXPORT_SYMBOL drivers/ptp/ptp_pch 0x1b5b499d pch_src_uuid_lo_read +EXPORT_SYMBOL drivers/ptp/ptp_pch 0x2f24538a pch_ch_event_write +EXPORT_SYMBOL drivers/ptp/ptp_pch 0x6d9d25f1 pch_rx_snap_read +EXPORT_SYMBOL drivers/ptp/ptp_pch 0x7e4f4a54 pch_ch_control_write +EXPORT_SYMBOL drivers/ptp/ptp_pch 0x9d76dc9e pch_ch_control_read +EXPORT_SYMBOL drivers/ptp/ptp_pch 0xd0bd488c pch_ch_event_read +EXPORT_SYMBOL drivers/ptp/ptp_pch 0xda871b1d pch_src_uuid_hi_read +EXPORT_SYMBOL drivers/ptp/ptp_pch 0xe0d37ff2 pch_set_station_address +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x0257fd33 rproc_alloc +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x197161d0 rproc_put +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x58604d2e rproc_da_to_va +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x7762597b rproc_get_by_phandle +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x980f29bc rproc_shutdown +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x9c80c015 rproc_add +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x9e58e034 rproc_del +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0xbb2b1a0d rproc_vq_interrupt +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0xbcad8d1a rproc_report_crash +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0xc04851b1 rproc_boot +EXPORT_SYMBOL drivers/rtc/rtc-ds1685 0x4931e98a ds1685_rtc_poweroff +EXPORT_SYMBOL drivers/scsi/53c700 0x24365660 NCR_700_detect +EXPORT_SYMBOL drivers/scsi/53c700 0x3d9cece0 NCR_700_intr +EXPORT_SYMBOL drivers/scsi/53c700 0xb250623a NCR_700_release +EXPORT_SYMBOL drivers/scsi/esp_scsi 0x363d5509 scsi_esp_register +EXPORT_SYMBOL drivers/scsi/esp_scsi 0x47557a3b scsi_esp_cmd +EXPORT_SYMBOL drivers/scsi/esp_scsi 0x4a29ab38 scsi_esp_intr +EXPORT_SYMBOL drivers/scsi/esp_scsi 0x5028c24b scsi_esp_template +EXPORT_SYMBOL drivers/scsi/esp_scsi 0x70b4c592 scsi_esp_unregister +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x22859fd3 fcoe_fcf_get_selected +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x2e8595e8 fcoe_ctlr_link_down +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x2f46e263 fcoe_transport_attach +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x3bd87d94 fcoe_ctlr_destroy +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x9a6d229a fcoe_ctlr_set_fip_mode +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xa6be5b65 fcoe_ctlr_init +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xbbe6dc00 fcoe_ctlr_recv_flogi +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xbd3d5360 fcoe_ctlr_link_up +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xdc2287f7 fcoe_ctlr_els_send +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xe0f44988 fcoe_ctlr_destroy_store +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xe4b047e3 fcoe_transport_detach +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xf4d31039 fcoe_ctlr_recv +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x01c816d1 fc_lport_config +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x0a137ddd fc_rport_terminate_io +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x0b625639 fc_vport_setlink +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x0bce3de7 fc_lport_iterate +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x0ce723f6 fc_fabric_login +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x100c56b3 fc_lport_bsg_request +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x122c2fbb fc_exch_update_stats +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x22b90986 fc_exch_mgr_del +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x2b450139 fc_get_host_stats +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x2bbdf011 fc_eh_host_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x2c4ed1a1 fc_lport_flogi_resp +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x3028f1af fc_fc4_register_provider +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x303de519 fc_queuecommand +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x34f45c5c libfc_vport_create +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x353baea7 fc_lport_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x36e5fbaf fc_cpu_mask +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x38ab8336 fc_elsct_send +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x39b35129 fc_linkup +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x417d506f fc_lport_notifier_head +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x4451b83c fc_lport_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x4684f1bb fc_lport_logo_resp +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x486e152c fc_vport_id_lookup +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x4e2d3983 fc_eh_device_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x4fe8c455 fc_disc_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x5768edc2 fc_frame_alloc_fill +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x6209429e fc_exch_mgr_list_clone +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x6a6a36e4 fc_fill_hdr +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x713a573c fc_exch_mgr_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x7a995bdf fc_lport_destroy +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x7c39b88d fc_fcp_destroy +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x82ef392b fc_frame_crc_check +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x868dd824 fc_fabric_logoff +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x8a1b16da fc_get_host_port_state +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x9110725a fc_disc_config +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x9321e001 fc_set_rport_loss_tmo +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x9c5681f6 fc_exch_mgr_add +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xa27445b3 fc_lport_set_local_id +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xb8184148 fc_fill_reply_hdr +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xbb4302c3 fc_elsct_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xbdd6991a fc_get_host_speed +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xc84b5015 fc_rport_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xd29aab97 fc_fcp_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xd9660a11 fc_exch_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xe22736ca fc_set_mfs +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xe258975d _fc_frame_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xe2e8870b fc_exch_mgr_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xe954cafb fc_linkdown +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xf3ce560e fc_exch_recv +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xf85dd1d1 fc_fc4_deregister_provider +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xf8ad2bc9 fc_exch_mgr_free +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xfd43ae28 fc_slave_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xfe83df4c fc_eh_abort +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x638f1825 sas_resume_ha +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x8a87e724 try_test_sas_gpio_gp_bit +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0xb64039d6 sas_suspend_ha +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0xf89bf476 sas_prep_resume_ha +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0xf8b0ecec sas_wait_eh +EXPORT_SYMBOL drivers/scsi/megaraid/megaraid_mm 0x2250c66e mraid_mm_adapter_app_handle +EXPORT_SYMBOL drivers/scsi/megaraid/megaraid_mm 0x36e8b357 mraid_mm_register_adp +EXPORT_SYMBOL drivers/scsi/megaraid/megaraid_mm 0x512c956d mraid_mm_unregister_adp +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x0c17edb1 osd_sec_init_nosec_doall_caps +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x1b05230f osd_end_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x1b9622ae osd_req_read +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x22f19089 osd_req_create_partition +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x2adfcced osd_req_list_dev_partitions +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x2bbf666c osd_execute_request_async +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x2d1221fc osd_start_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x3beea05b osd_req_add_get_attr_page +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x3d7d292d osd_dev_init +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x3f3f88ac osd_req_flush_collection +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x4528dbda osd_req_flush_partition +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x50a02270 osd_req_read_sg_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x7b6b535a osd_dev_fini +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x837b5eb4 osd_req_get_attributes +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x8aae7674 osd_req_write_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x90e4a96a osd_req_add_set_attr_list +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x9e60da53 osd_finalize_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xa042c097 osd_req_create_object +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xa3d4f758 osd_execute_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xa478396b osd_req_write_sg +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xb101213d osd_req_read_sg +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xb286d750 osd_req_flush_object +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xb9b39220 osd_req_list_collection_objects +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xb9c263fe osd_req_decode_sense_full +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xbbb19a1f osd_auto_detect_ver +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xbc46729f osd_req_remove_object +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xc28a3aca osd_req_format +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xc6b65f06 osd_req_remove_partition +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xc8ffd7b2 osd_req_read_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xcdb260b1 osd_req_decode_get_attr_list +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xcec7d604 osd_req_write +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xd2bdafa9 osd_req_write_sg_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xd2fbc62c osd_req_flush_obsd +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xe9e86ac0 osd_req_list_partition_collections +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xf5fdd1a3 osd_req_add_get_attr_list +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xf6d1b3c5 osd_req_set_attributes +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xf780c5b2 osd_req_list_partition_objects +EXPORT_SYMBOL drivers/scsi/osd/osd 0x5fc48609 osduld_unregister_test +EXPORT_SYMBOL drivers/scsi/osd/osd 0x79d44ad8 osduld_info_lookup +EXPORT_SYMBOL drivers/scsi/osd/osd 0x7d75ae67 osduld_put_device +EXPORT_SYMBOL drivers/scsi/osd/osd 0x829f3ecc osduld_device_info +EXPORT_SYMBOL drivers/scsi/osd/osd 0x88119103 osduld_device_same +EXPORT_SYMBOL drivers/scsi/osd/osd 0xb6ae4e8b osduld_path_lookup +EXPORT_SYMBOL drivers/scsi/osd/osd 0xe1b5d9ca osduld_register_test +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x066a649c qlt_abort_cmd +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x15ef2ea9 qlt_rdy_to_xfer +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x3b7698b0 qlt_unreg_sess +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x3e27e568 qlt_free_cmd +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x43f9fa88 qlt_free_mcmd +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x47516fb3 qlt_stop_phase2 +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x764624da qlt_enable_vha +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x782b8342 qlt_xmit_tm_rsp +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x972a525b qlt_stop_phase1 +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x9cbf9295 qlt_xmit_response +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xad9d2be1 qlt_lport_deregister +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xbc5fbab9 qlt_lport_register +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x10b7269c qlogicfas408_info +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x1f55cd70 qlogicfas408_ihandl +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x3fd8cd71 qlogicfas408_detect +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x733bae7e qlogicfas408_biosparam +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x740d1dd9 qlogicfas408_abort +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x9b8009c3 qlogicfas408_disable_ints +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0xb4957c4b qlogicfas408_bus_reset +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0xe76b3b20 qlogicfas408_get_chip_type +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0xec3a2424 qlogicfas408_queuecommand +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0xf2b95199 qlogicfas408_setup +EXPORT_SYMBOL drivers/scsi/raid_class 0x0a7717a8 raid_class_release +EXPORT_SYMBOL drivers/scsi/raid_class 0x51d78578 raid_component_add +EXPORT_SYMBOL drivers/scsi/raid_class 0x80d32c29 raid_class_attach +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x0188eec3 fc_remote_port_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x10624969 fc_block_scsi_eh +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x24df8526 fc_remote_port_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x46bf90d9 fc_host_post_event +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x5c087334 fc_host_post_vendor_event +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x7954b1ea fc_get_event_number +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x8a9a2a1d fc_vport_terminate +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x9c22b021 fc_remove_host +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xb32838fa fc_remote_port_rolechg +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xbbe98ae7 fc_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xc66bf7e0 scsi_is_fc_vport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xd2504f7a fc_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xe0448d2c fc_vport_create +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xf86864a4 scsi_is_fc_rport +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x0482b381 sas_remove_children +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x061c8419 sas_port_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x13eb798b sas_rphy_unlink +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x30cbf57c sas_rphy_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x34d0bcee sas_phy_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x35de9752 sas_port_delete_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x380e6f41 sas_port_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x4c300b45 sas_port_alloc_num +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x4e3343b4 sas_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x5799eea8 scsi_is_sas_port +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x5aca45e7 sas_port_get_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x5bf24197 scsi_is_sas_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x70e30f65 scsi_is_sas_rphy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x8322aaba sas_phy_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x89ea698a sas_rphy_remove +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x92fbf040 sas_port_add_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x94446a2a sas_end_device_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x9a574788 sas_rphy_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xaaeb6e35 sas_phy_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xb19b4b54 sas_rphy_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xb3b69c58 sas_remove_host +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xb76a4f2d sas_port_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xc083bf49 sas_read_port_mode_page +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xca3482e1 sas_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xce9a00f5 sas_expander_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xdb63b78e sas_port_mark_backlink +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xe9e1621d sas_port_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xf4fb15a4 sas_phy_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x3686ea09 spi_print_msg +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x4c2d7cc5 spi_dv_device +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0xaf64e3a9 spi_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0xb71cbbe6 spi_schedule_dv_device +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0xc03b8d48 spi_display_xfer_agreement +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0xe0da5bcc spi_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0x405b6e05 srp_parse_tmo +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0x6bf2861c srp_rport_get +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0x7fd0e5fa srp_rport_put +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0x93de153b srp_reconnect_rport +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0xf877ead0 srp_start_tl_fail_timers +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0x2ce78b5a ufshcd_shutdown +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0xbb2ff18c ufshcd_system_resume +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0xca1f5b02 ufshcd_runtime_suspend +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0xd3f25bf5 ufshcd_alloc_host +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0xd99819f5 ufshcd_runtime_idle +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0xeee02497 ufshcd_system_suspend +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0xf0f3c27f ufshcd_runtime_resume +EXPORT_SYMBOL drivers/ssb/ssb 0x19d5c889 ssb_pmu_set_ldo_paref +EXPORT_SYMBOL drivers/ssb/ssb 0x1c4f8adc ssb_pcihost_register +EXPORT_SYMBOL drivers/ssb/ssb 0x1eea013b ssb_bus_suspend +EXPORT_SYMBOL drivers/ssb/ssb 0x2886522e ssb_commit_settings +EXPORT_SYMBOL drivers/ssb/ssb 0x2bd88add ssb_clockspeed +EXPORT_SYMBOL drivers/ssb/ssb 0x34d1f7b6 ssb_bus_sdiobus_register +EXPORT_SYMBOL drivers/ssb/ssb 0x40762b71 ssb_pmu_set_ldo_voltage +EXPORT_SYMBOL drivers/ssb/ssb 0x4f22c93b ssb_bus_may_powerdown +EXPORT_SYMBOL drivers/ssb/ssb 0x8b626eb8 ssb_set_devtypedata +EXPORT_SYMBOL drivers/ssb/ssb 0x8b988aa9 ssb_bus_pcibus_register +EXPORT_SYMBOL drivers/ssb/ssb 0xa3cb7dd9 ssb_bus_powerup +EXPORT_SYMBOL drivers/ssb/ssb 0xa97fbe75 ssb_bus_unregister +EXPORT_SYMBOL drivers/ssb/ssb 0xaa1f3f21 ssb_device_enable +EXPORT_SYMBOL drivers/ssb/ssb 0xaf828ae2 ssb_device_is_enabled +EXPORT_SYMBOL drivers/ssb/ssb 0xb9dc14f6 ssb_chipco_gpio_control +EXPORT_SYMBOL drivers/ssb/ssb 0xbe6cdf88 ssb_dma_translation +EXPORT_SYMBOL drivers/ssb/ssb 0xc0512e0f ssb_admatch_base +EXPORT_SYMBOL drivers/ssb/ssb 0xd09f21d3 ssb_driver_unregister +EXPORT_SYMBOL drivers/ssb/ssb 0xd481192b ssb_admatch_size +EXPORT_SYMBOL drivers/ssb/ssb 0xec575ad0 ssb_device_disable +EXPORT_SYMBOL drivers/ssb/ssb 0xf769a60a ssb_pcicore_dev_irqvecs_enable +EXPORT_SYMBOL drivers/ssb/ssb 0xf77ad21b ssb_bus_resume +EXPORT_SYMBOL drivers/ssb/ssb 0xf9d7529f __ssb_driver_register +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x04373d16 fbtft_unregister_framebuffer +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x12014734 fbtft_write_spi_emulate_9 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x264ba5d6 fbtft_register_framebuffer +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x2c50bab1 fbtft_write_vmem16_bus8 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x40fbaad1 fbtft_write_reg16_bus16 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x42732abf fbtft_write_reg8_bus8 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x55f7042c fbtft_write_vmem16_bus16 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x56cf15b1 fbtft_probe_common +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x6162cf79 fbtft_framebuffer_alloc +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x73034814 fbtft_write_reg8_bus9 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x82453c6e fbtft_write_gpio8_wr +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x84716145 fbtft_init_display +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x90077188 fbtft_register_backlight +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xad83eb88 fbtft_write_vmem8_bus8 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xb0a717d3 fbtft_write_gpio16_wr_latched +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xcc32828e fbtft_write_gpio16_wr +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xd171f319 fbtft_dbg_hex +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xd1ef6cd3 fbtft_write_reg16_bus8 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xd7ee87c9 fbtft_remove_common +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xd9dd40cb fbtft_read_spi +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xdf406002 fbtft_framebuffer_release +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xf2ef508a fbtft_write_vmem16_bus9 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xf573d2e3 fbtft_unregister_backlight +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xfaa4e186 fbtft_write_spi +EXPORT_SYMBOL drivers/staging/fwserial/firewire-serial 0x376387b3 fwtty_port_put +EXPORT_SYMBOL drivers/staging/fwserial/firewire-serial 0xbeb045c1 fwtty_port_get +EXPORT_SYMBOL drivers/staging/iio/addac/adt7316 0xbac79ca0 adt7316_probe +EXPORT_SYMBOL drivers/staging/iio/magnetometer/hmc5843_core 0x471b4cef hmc5843_common_remove +EXPORT_SYMBOL drivers/staging/iio/magnetometer/hmc5843_core 0x4cce32e0 hmc5843_common_resume +EXPORT_SYMBOL drivers/staging/iio/magnetometer/hmc5843_core 0xe55259e4 hmc5843_common_suspend +EXPORT_SYMBOL drivers/staging/iio/magnetometer/hmc5843_core 0xe9bb7356 hmc5843_common_probe +EXPORT_SYMBOL drivers/staging/iio/meter/ade7854 0x6e3e8ce4 ade7854_remove +EXPORT_SYMBOL drivers/staging/iio/meter/ade7854 0xab43fd28 ade7854_probe +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x05e7d5c0 lnet_copy_kiov2iov +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x0aa1c2da lnet_parse +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x1205bba4 lnet_copy_iov2kiov +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x1366b7ac LNetSetLazyPortal +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x19670622 LNetNIInit +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x1b191752 lnet_msgtyp2str +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x1ee5f15e lnet_ipif_query +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x1fe16fd5 LNetGet +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x204b8151 lnet_counters_reset +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x2aa9953d lnet_cpt_of_nid +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x2ac93e90 lnet_connect_console_error +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x2fed4b74 lnet_extract_kiov +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x33202a6c LNetGetId +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x3c779ee0 LNetPut +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x3f4f5b46 LNetNIFini +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x473ad33b LNetDist +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x4fa9d306 lnet_sock_accept +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x55db5324 lnet_iov_nob +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x58246e8b lnet_net2ni +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x58a1ca89 LNetMDUnlink +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x5e91cfec lnet_copy_iov2iov +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x5fee352c lnet_acceptor_timeout +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x61f784b2 LNetClearLazyPortal +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x64cdea3a LNetCtl +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x66d449b1 lnet_ipif_enumerate +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x68fceaba lnet_sock_setbuf +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x69d5cee8 lnet_finalize +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x6f7be171 LNetEQGet +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x705b590f lnet_create_reply_msg +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x7086071a lnet_kiov_nob +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x722c76e5 LNetMDAttach +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x7d59a7fe LNetMEInsert +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x854ab844 LNetEQWait +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x9de986d3 LNetEQAlloc +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xa56de08d lnet_ipif_free_enumeration +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xa7a9b127 lnet_sock_connect +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xa97ff5c2 lnet_unregister_lnd +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xaa414970 LNetMEUnlink +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xaa9b477e LNetMDBind +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xb43387dd lnet_copy_kiov2kiov +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xb75f7953 LNetEQFree +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xba5566d2 lnet_acceptor_port +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xbf0760a2 LNetMEAttach +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xc0eecb34 lnet_notify +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xc706c422 lnet_sock_read +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xd1c2f3e4 lnet_extract_iov +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xd497031e lnet_set_reply_msg_len +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xd7c50cb9 lnet_init +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xd9f31a32 lnet_connect +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xdde7895a lnet_register_lnd +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xdf86ee2a lnet_sock_getbuf +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xe8124744 lnet_fini +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xed3c186a lnet_sock_listen +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xf1b316bf LNetSnprintHandle +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xf455cb9c the_lnet +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xf838c2db lnet_sock_write +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xfa106804 lnet_counters_get +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xff90b8a6 lnet_sock_getaddr +EXPORT_SYMBOL drivers/staging/lustre/lnet/selftest/lnet_selftest 0x078db139 lstcon_ioctl_entry +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0x1a9ee4e3 seq_client_get_seq +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0x1c4bb5f9 LU_OBF_FID +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0x375e6f8d LUSTRE_BFL_FID +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0x44fa3a0c seq_client_flush +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0x598cae96 seq_client_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0x6e4ee307 seq_client_alloc_fid +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0x857a9b18 client_fid_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0xae61cff5 LU_DOT_LUSTRE_FID +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0xc997a02f LUSTRE_SEQ_SPACE_RANGE +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0xd8573734 seq_client_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0xdf6b5081 client_fid_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0xecee2727 LUSTRE_SEQ_ZERO_RANGE +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0x008040ee fld_client_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0x1adb6dc3 fld_client_del_target +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0x2bee6f8c fld_client_debugfs_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0x63f666fa fld_client_flush +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0x87bf52ea fld_client_lookup +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0xb459950e fld_client_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0xeea5da28 fld_client_add_target +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x000c507f libcfs_debug_dumplog +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x01db5172 cfs_percpt_atomic_summary +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x03ae0009 cfs_hash_lookup +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x069f9bb2 cfs_wi_schedule +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x08ada613 libcfs_console_backoff +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x0aa98a7a cfs_hash_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x0b4b1546 libcfs_lnd2modname +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x0de6c369 cfs_cap_lower +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x0e4820ab cfs_percpt_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x0f5eff79 cfs_percpt_number +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x117c8a95 cfs_cpt_nodemask +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x13550229 lbug_with_loc +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x15565c7f cfs_cpt_set_node +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x16a778d4 libcfs_kkuc_msg_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x17ac7833 libcfs_deregister_ioctl +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x1a60d439 cfs_parse_nidlist +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x21a44499 cfs_percpt_lock_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x23f6f445 cfs_restore_sigs +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x247da28c libcfs_kvzalloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x2663147a __cfs_fail_timeout_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x27b6d3ba cfs_ip_addr_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x297fac97 cfs_hash_bd_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x2a4ed56a cfs_hash_rehash_key +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x2adae33e cfs_init_timer +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x2c4efe0b cfs_hash_dual_bd_lookup_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x2dbe54b2 cfs_trimwhite +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x2ef02848 cfs_hash_del_key +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x2efcc0e6 cfs_block_sigs +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x31fc5082 cfs_crypto_hash_update +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x36b60398 cfs_race_waitq +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x377f93fb cfs_srand +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x38828b92 cfs_cpt_unset_nodemask +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x389ca502 libcfs_debug_mb +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x39a6e022 cfs_hash_debug_str +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x39fdcd2b libcfs_debug_set_level +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x3a62a183 cfs_cpt_set_cpu +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x3c1285bd libcfs_subsystem_debug +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x3c4937a9 cfs_hash_for_each_empty +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x3d5e6098 cfs_race_state +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x3ef0d90c libcfs_kkuc_group_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x3f0d9281 cfs_wi_sched_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x4062f92b libcfs_run_lbug_upcall +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x411db754 cfs_crypto_hash_final +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x413056d8 cfs_cpt_weight +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x413c5299 cfs_hash_bd_move_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x42393d2a cfs_hash_bd_lookup_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x42e22feb cfs_cpt_table +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x44688a0a cfs_block_allsigs +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x44839bbb cfs_rand +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x463e853d cfs_hash_rehash_cancel_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x475f4d26 cfs_hash_getref +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x48f163c6 libcfs_str2anynid +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x4a95faa2 cfs_timer_deadline +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x4a99af72 cfs_clear_sigpending +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x4d89e988 cfs_block_sigsinv +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x4f1f2fa5 cfs_crypto_hash_digest +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x50345570 libcfs_str2net +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x5051b6d2 portal_enter_debugger +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x509d38b0 libcfs_net2str +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x52e9cfc1 cfs_cpt_current +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x53134f6c cfs_percpt_lock_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x53b383e4 cfs_cpt_unset_cpumask +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x54fd9a71 cfs_percpt_index +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x58a7ee00 libcfs_catastrophe +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x5946ec2b cfs_percpt_current +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x5ae9e250 cfs_crypto_hash_update_page +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x5b2451b1 cfs_percpt_unlock +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x5c013b81 cfs_expr_list_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x5ce62c0e cfs_cpt_table_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x5dce9e80 libcfs_lnd2str +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x600fae9b cfs_hash_for_each_key +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x61d6e1e0 cfs_hash_add_unique +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x62289d65 cfs_array_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x64685fef libcfs_console_min_delay +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x6564c55b libcfs_console_max_delay +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x65dd9f0c libcfs_run_upcall +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x67398404 cfs_wi_sched_destroy +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x675e1725 cfs_hash_bd_add_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x68497dbf cfs_cpt_number +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x6aa9d0e6 cfs_hash_size_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x6b18b7fc cfs_hash_for_each_safe +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x6c147ea0 libcfs_kvzalloc_cpt +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x6c605eaa cfs_cpt_unset_node +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x6c905b5f libcfs_watchdog_ratelimit +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x71c4cca8 cfs_percpt_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x71f662a3 libcfs_debug +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x752858fb cfs_cpt_table_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x77ef5792 cfs_hash_dual_bd_unlock +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x7a63872e cfs_timer_disarm +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x7b0b748a cfs_ip_addr_parse +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x7d93cded cfs_cpt_of_cpu +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x7e6f6485 cfs_ip_addr_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x7f04ceef cfs_hash_bd_peek_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x7fab218c cfs_hash_dual_bd_findadd_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x7fda989d cfs_fail_loc +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x8151c3aa cfs_cap_raised +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x83d795e4 cfs_match_nid +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x857aaea7 libcfs_register_ioctl +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x8c85e4e6 cfs_crypto_hash_speed +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x8e61d47b cfs_cpt_cpumask +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x8f5f81ec cfs_hash_dual_bd_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x91504e8b libcfs_kmemory +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x924ef5a8 cfs_hash_is_empty +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x940ed192 libcfs_stack +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x94c8f789 cfs_hash_cond_del +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x95620e8c cfs_wi_deschedule +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x97b0b9bc cfs_enter_debugger +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x9879b229 cfs_get_random_bytes +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x9bd94a35 cfs_hash_bd_del_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x9d7193e4 cfs_hash_rehash_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x9f82f712 cfs_trace_copyout_string +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xa2b68b2a cfs_array_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xa6b9dee6 libcfs_kkuc_group_rem +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xa6be5411 add_wait_queue_exclusive_head +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xa711aec5 cfs_cpt_table_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xa9088531 cfs_expr_list_values +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xa9c0ca61 cfs_timer_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xa9dc74e2 cfs_trace_copyin_string +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xaaf59b75 cfs_cpt_set_nodemask +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xae1545e4 cfs_hash_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xb18cbfd1 cfs_hash_del +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xb289de95 cfs_hash_bd_finddel_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xb53b5569 cfs_cpt_spread_node +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xb7b46d49 libcfs_kkuc_group_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xb883b006 cfs_percpt_atomic_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xb8c52b1b cfs_timer_done +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xbab4f34e cfs_timer_arm +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xbada117b cfs_cpt_clear +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xbb18b4f1 cfs_hash_for_each +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xbf7a37f1 cfs_signal_pending +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xc05afcd7 cfs_hash_rehash +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xc0ea7fc0 cfs_expr_list_parse +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xc2dfd791 libcfs_console_ratelimit +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xc39fd2f9 libcfs_panic_on_lbug +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xc3ab0e9f cfs_hash_findadd_unique +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xc49b1c62 cfs_percpt_atomic_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xc77a24c3 cfs_cpt_set_cpumask +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xcb385db9 libcfs_debug_binary +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xcc001df7 cfs_hash_bd_findadd_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xcc20e694 libcfs_nid2str +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xccc45639 cfs_free_nidlist +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xcd38904c cfs_wi_exit +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xce1a88f2 libcfs_arch_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xcf61bacb __cfs_fail_check_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xd0d8d08a cfs_cpt_unset_cpu +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xd6a52be3 libcfs_printk +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xd6dfea47 cfs_hash_debug_header +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xd96f406d cfs_cap_raise +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xda3a5d85 cfs_hash_for_each_nolock +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xde17bb8d libcfs_isknown_lnd +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xdf2789c0 cfs_curproc_cap_pack +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xdfca7737 cfs_hash_putref +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xe012b076 cfs_hash_dual_bd_finddel_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xe262a6e2 cfs_timer_is_armed +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xe2f91ce3 libcfs_debug_msg +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xe3bf6897 cfs_percpt_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xe7b54314 libcfs_arch_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xeaf51f70 cfs_hash_hlist_for_each +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xec1f56d5 libcfs_str2nid +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xeccafa5c cfs_cpt_online +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xeceac781 cfs_fail_val +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xf2c02048 cfs_cpt_bind +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xf3565b71 libcfs_debug_vmsg2 +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xf372d1c2 cfs_firststr +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xf440bb38 libcfs_kkuc_group_foreach +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xf8a8644b libcfs_id2str +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xf94025d1 libcfs_str2lnd +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xf9701ad1 cfs_hash_dual_bd_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xfe565fa9 cfs_crypto_hash_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/llite/lustre 0x14b9dc53 ll_iocontrol_register +EXPORT_SYMBOL drivers/staging/lustre/lustre/llite/lustre 0xc275a567 ll_osscapa_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/llite/lustre 0xcd3cde92 ll_iocontrol_unregister +EXPORT_SYMBOL drivers/staging/lustre/lustre/llite/lustre 0xe103e912 ll_direct_rw_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/llite/lustre 0xee9c1bf4 ll_stats_ops_tally +EXPORT_SYMBOL drivers/staging/lustre/lustre/lov/lov 0x0536bdc8 lov_lsm_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/lov/lov 0x207c6a69 lov_stripe_unlock +EXPORT_SYMBOL drivers/staging/lustre/lustre/lov/lov 0x23e937ab lov_stripe_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/lov/lov 0x932ae020 lov_read_and_clear_async_rc +EXPORT_SYMBOL drivers/staging/lustre/lustre/lov/lov 0x9ff4fab4 lov_device_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/lov/lov 0xc38a6393 lov_lsm_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/mdc/mdc 0x0df21540 it_set_disposition +EXPORT_SYMBOL drivers/staging/lustre/lustre/mdc/mdc 0x5919b6d6 it_clear_disposition +EXPORT_SYMBOL drivers/staging/lustre/lustre/mdc/mdc 0x5ef8417d it_disposition +EXPORT_SYMBOL drivers/staging/lustre/lustre/mdc/mdc 0xfe26c5a6 it_open_error +EXPORT_SYMBOL drivers/staging/lustre/lustre/mgc/mgc 0xdc287f95 mgc_fsname2resid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0095f84c cl_lock_release +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x00e76bc9 cl_object_attr_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x01665e34 class_parse_net +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x027d2dc8 cl_page_list_move +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0340f9e0 ldebugfs_add_vars +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x035852d0 lustre_swab_llog_rec +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x03b67e2f lu_context_key_degister_many +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x03d30e7d cl_lock_intransit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x049ea5a4 dt_find_or_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x04fbc296 capa_cpy +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x057f6d4b class_find_old_param +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x05af1920 dt_quota_glb_features +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x05f84e88 LU_BUF_NULL +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x062b600c cl_lock_slice_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x06d82d96 class_handle_unhash +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x07354c0b cl_env_nested_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x07682fe0 cl_sync_io_note +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x07aa68bb lustre_swab_lustre_cfg +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x07d45876 obdo_set_parent_fid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x08365fcc cl_2queue_assume +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x083942ff class_del_profile +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x085d0665 dt_txn_hook_commit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x088dccc2 lprocfs_oh_tally +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0a35c42e cl_page_delete +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0ab898b5 obdo_cpu_to_le +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0adb9526 lustre_end_log +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0aed34c6 ldebugfs_add_simple +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0b513ee7 obd_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0b8e39a2 llog_is_empty +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0baf5eb6 dt_version_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0c378d79 lustre_swab_llog_hdr +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0cf99bff dt_acct_features +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0d0ab319 cl_lock_user_del +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0d2f31cc cl_page_vmpage +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0d36aefb dump_lniobuf +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0d46d53a dt_declare_version_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0ee3a5cc class_export_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0f27de88 cl_index +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0f7746d9 cl_lock_closure_build +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0f788189 llog_process +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x100072d8 cl_io_end +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x11495519 lprocfs_write_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x11688992 lu_object_find_at +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x11f675bb cl_lock_is_mutexed +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x126c5ce6 cl_page_lookup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1277d285 cl_req_attr_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x12d713fd cl_lock_mutex_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1491dc30 lu_context_tags_clear +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x150e8da3 lprocfs_rd_name +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1594e371 obd_exports_barrier +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x159c5bc9 lprocfs_rd_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x163a91d8 cl_page_slice_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x16af90d2 lu_context_enter +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x18000b7d lprocfs_rd_conn_uuid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x18155f3c dt_device_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x191377d5 cl_page_completion +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x194c7c65 cl_lock_closure_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1985fcb8 cl_page_make_ready +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x19984808 cl_object_kill +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1a579259 cl_page_list_unmap +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1b3ff168 cl_2queue_discard +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1ba28a7f cl_lock_state_wait +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1c84649a class_config_parse_llog +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1c88cd60 cl_lock_state_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1ce10bd0 dt_index_walk +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1ee83cbb cl_lock_disclosure +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1f24c21b lu_dev_add_linkage +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x206fe776 cl_lock_get_trust +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x21307495 lu_buf_check_and_grow +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x219e4926 class_import_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x221826f1 class_parse_nid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x246cdfd0 capa_lookup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x252407df lu_kmem_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2547efae lustre_uuid_to_peer +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x259ebac6 obd_alloc_fail +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x25c7d721 lprocfs_obd_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x25f0da88 cl_page_cache_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x26a34076 llog_write_rec +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x275cdc7a cl_env_reexit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x286860f5 class_handle_free_cb +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x28c17c3d cl_page_own_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x297cf5e0 class_handle2object +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2999ee81 cl_object_has_locks +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x299cc13d obdo_to_inode +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x29bb0a22 class_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x29f9ffd9 cl_sync_io_wait +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2aa65ae0 lu_object_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2ae1cd79 kuc_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2b4c48e9 server_name2svname +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2bb589c8 class_export_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2cceb7a3 class_handle_hash +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2df63fe2 lprocfs_alloc_obd_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x30fdf493 lu_context_refill +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x316d9b5a capa_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x317fcf5a cl_page_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x31b974f9 class_put_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x31d4fe49 lu_object_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x321107e1 lprocfs_seq_release +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3242ed35 obdo_cachep +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x32fec992 class_detach +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3383df57 iattr_from_obdo +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x33da23b0 dt_version_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3414e158 cl_lock_ext_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3452a479 cl_lock_descr_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x345b0d3b cl_object_header_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x349010b0 lustre_register_client_fill_super +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x34b55f48 cl_lock_mutex_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x357b04db class_import_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x35f6e591 lprocfs_rd_u64 +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3652986c cl_io_read_page +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x369be015 obdo_le_to_cpu +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x375e712a llog_sync +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x37c691ef lprocfs_free_md_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x37ed6e4b at_early_margin +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x38105227 dt_read +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x38375332 dt_txn_hook_stop +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x38eec666 cl_page_find +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x38fb0c90 class_match_param +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x39506112 lu_context_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x39a88656 cl_io_loop +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3a005065 dt_otable_features +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3a5ee45a cl_io_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3a7f4051 llog_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3b7a5220 obd_export_evict_by_nid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3ba6cc47 cl_env_nested_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3be2b23d cl_page_clip +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3d48a101 lu_object_add_top +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3dcb46ba lu_device_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3f0c68e6 lu_context_key_quiesce_many +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3f25c782 obd_max_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3f3ed1b2 lu_object_header_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3f6114de llog_cancel_rec +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3f80c00a lustre_common_put_super +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3fb68eb1 cl_use_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x403c1f36 llog_cat_init_and_process +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x428d2e5d cl_io_lock_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4293937c cl_object_attr_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x43380b0e lu_cdebug_printer +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4357b315 lprocfs_counter_sub +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x436d26bf cl_lock_is_intransit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x445a04b9 lprocfs_obd_rd_max_pages_per_rpc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x44ec16f5 cl_io_prepare_write +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x474e658e class_uuid2obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x474ed5bd lustre_swab_ll_fid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x47b35f7d statfs_unpack +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x47bce2a2 cl_lock_enclosure +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x482d3cb5 capa_cachep +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x48637380 cl_lock_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x48d7f8df lu_site_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x494cfb52 lustre_acl_xattr_merge2ext +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x49a0f6ea lustre_posix_acl_xattr_2ext +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x49a29223 lprocfs_find_named_value +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x49dfb352 dt_lookup_dir +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4a58e4e4 obdo_from_la +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4a769a64 class_new_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4a93d0cd lu_context_key_degister +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4abd07de lustre_posix_acl_xattr_filter +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4ac58713 obd_connect_flags2str +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4c3da45c class_process_proc_param +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4d13458b kuc_len +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4d7f43f9 class_disconnect_stale_exports +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4f22315c cl_page_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4f70d1b2 class_unlink_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4fba4346 dt_directory_features +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4ff07288 cl_lock_request +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x50c7fc36 ptlrpc_put_connection_superhack +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5148ba3a llog_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x527b0b48 llog_write +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x52b5ca5b cl_page_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x532d2ab2 cl_io_start +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x53c9e549 llog_close +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5437b7e9 lprocfs_obd_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x544a5167 la_from_obdo +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x54885f87 ldlm_timeout +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x54a92131 llog_reverse_process +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x552d125f cl_lock_mutex_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x554b8811 cl_page_list_own +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x558bec27 obd_ioctl_getdata +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x564e9d44 init_capa_hash +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x56c5d3e4 lu_context_key_quiesce +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x570d09ae lustre_swab_lu_fid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x57785724 cl_lock_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x582ecfea lu_site_stats_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5841033d llog_cat_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5847930e obd_memory +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x59b61c1b llog_declare_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5a20d896 obd_memory_max +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5a43e04b class_devices_in_group +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5a918692 lprocfs_wr_atomic +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5abb4b2f cl_lock_hold_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5ac9fb15 cl_env_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5afccd18 cl_page_disown +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5bb82dcf llog_open +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5bc022c5 lprocfs_dt_rd_filestotal +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5c360b47 obdo_from_iattr +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5c3d18b9 ldebugfs_register_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5d34ae0d cl_lock_mode_name +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5d4f6292 cl_locks_prune +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5ec0a11c class_get_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5eca41ad cl_io_slice_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5fe97b73 block_debug_check +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6033b908 obdo_cmp_md +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x603a4801 cl_page_discard +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x60c029d8 llog_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x60c9e74f llog_copy_handler +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x615f3ffe cl_queue_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x631fd7b9 lustre_ext_acl_xattr_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x63561664 cl_object_glimpse +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x63b6a02c lprocfs_alloc_md_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x64f3f886 cl_req_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x65e99d3a cl_lock_hold +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x66971f58 llog_cat_close +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x66f141c5 cl_lock_at_pgoff +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6734adbd lprocfs_read_frac_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6890d175 lustre_get_jobid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x68bd49da lprocfs_oh_clear +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6901e56a ldebugfs_register +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x698b61fc cl_lvb2attr +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x69c42114 at_min +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6b35af8c cl_object_attr_unlock +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6b61ea81 cl_page_list_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6bb6d421 lu_buf_realloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6c5198ae lu_site_purge +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6c716ede cl_object_attr_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6cd65a0a lprocfs_init_ldlm_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6d3dfee1 cl_page_list_discard +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6e797674 cl_lock_hold_release +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6f1f5c69 cl_stack_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6f3e6225 dt_quota_slv_features +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6fcb7042 lprocfs_counter_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x703794f0 lprocfs_rd_state +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x716adf55 dt_record_write +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x720caee6 class_config_dump_llog +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7256ae5a cl_lock_signal +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x726fec06 cl_page_own +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7353192b cl_lock_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7375896a cl_io_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x741945f3 cl_offset +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x742559b1 class_unregister_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x742cd0e6 cl_enqueue_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x74db53d5 class_exp2obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x752f71a8 class_get_profile +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x756a77f3 class_parse_nid_quiet +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x756c39f9 dt_locate_at +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7622543e lu_object_locate +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x76f87e36 lu_context_key_register_many +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x77d2089a class_name2dev +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7802fcd7 lustre_swab_llogd_conn_body +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x78769774 lu_device_type_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x789796a1 obd_zombie_barrier +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x78affe9f cl_page_list_disown +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x79fe8388 cl_unuse_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7a0a1d2a dt_store_open +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7a58019f lu_object_find_slice +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7b4fc57b at_max +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7c6d0d4a llog_backup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7d0b25e7 lu_site_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7d9a884c cl_io_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7e0b1281 obd_devs +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7e7b1ebe class_search_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7edcafa0 cl_env_reenter +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7f1e5fd3 lprocfs_init_ops_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7fe5561a obd_dirty_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x801d7539 lu_object_put_nocache +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8031efb8 lprocfs_dt_rd_kbytestotal +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x806cc497 class_add_uuid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x80c5f3b5 class_register_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x80fc0ab6 lu_object_header_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x81742d89 obd_ioctl_popdata +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8180b0a5 ldebugfs_add_symlink +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x81eb3905 lprocfs_free_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x82ccad30 cl_page_at +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x831f656c class_process_config +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8446b9a8 obdo_to_ioobj +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8489f086 obd_alloc_fail_rate +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x849e5385 obd_update_maxusage +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8521e83c cl_page_top +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x85898443 lprocfs_clear_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x85ae6cd3 cl_lock_peek +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x85e53507 capa_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x86306b60 cl_object_prune +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x864450da cl_io_sub_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x878a29f3 cl_wait +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x881ef9f9 cl_page_unassume +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x896165d6 cl_page_list_splice +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x89b460b0 lprocfs_wr_uint +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x89b827d5 lu_device_type_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8a893066 lu_stack_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8a8d5318 lu_env_refill_by_tags +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8aa2c358 lprocfs_dt_rd_blksize +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8aa3e6f1 llog_cat_add_rec +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8b5f4057 lu_context_tags_update +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8b8cd551 cl_req_page_done +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8ba6e479 lustre_swab_lu_seq_range +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8dbd805a cl_page_unmap +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8df95b71 cl_pages_prune +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8e15c886 cl_lock_unhold +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8e7c8312 cl_io_top +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8f1014fb lprocfs_rd_atomic +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8f67314c obd_dump_on_eviction +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x900d4ca2 cl_page_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x90d1f06c lprocfs_rd_connect_flags +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x918ac18d cl_page_is_under_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9221d024 lprocfs_init_mps_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x92e58479 obd_dump_on_timeout +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9315cccd lustre_process_log +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x93b46468 lu_session_tags_clear +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x94c23ff5 class_disconnect_exports +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9512d507 lustre_acl_xattr_merge2posix +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x955f5220 ldlm_timeout_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x95735c6c at_extra +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x95bc2a0d lu_context_exit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x95db255e dt_store_resolve +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x967a5b7f llog_init_handle +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9716238b llog_cat_reverse_process +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9767adce class_uuid2dev +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x97a7515a lu_env_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x97d03783 at_history +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9873c25c cl_io_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x98a47940 cl_object_top +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x98c8a592 dt_record_read +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x99112d9b cl_io_unlock +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9945d970 cl_page_prep +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x99b35f27 _debug_capa +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9af99c30 cl_2queue_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9b1ed9d8 obd_jobid_var +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9bab109c class_add_conn +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9c1ea426 llog_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9c8e69fe cl_object_header_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9c900b19 llog_cat_cancel_records +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9c939ac6 cl_2queue_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9ccf2d03 cl_page_flush +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9dbb17b6 lprocfs_dt_rd_kbytesfree +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9e4301a3 dt_index_read +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9ec30cb7 class_destroy_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9f26ebd8 cl_lock_delete +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9f2cf494 llog_open_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9f6bc28b obd_max_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9fa592c5 llog_erase +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa008bbc8 lu_context_key_revive_many +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa02ff2fe lu_object_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa160da4a lu_object_header_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa2c1ea08 lu_context_key_revive +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa499ad5e dt_txn_callback_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa5fb234f lprocfs_write_frac_u64_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa674c241 kuc_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa73532c9 lu_object_invariant +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa76abd40 lu_context_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa820b9b1 lprocfs_exp_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa858390e class_num2obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa8c89e53 cl_io_iter_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa9806d61 dump_exports +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa9c4d9c4 cl_unuse +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xaa21b7a0 lustre_register_quota_process_config +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xab1f3bee obd_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xab858958 cl_object_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xab86cd94 cl_lock_discard_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xabf45922 capa_decrypt_id +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xac7f1596 kuc_ptr +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xaccb8158 cl_lock_extransit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xad337c24 class_exp2cliimp +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xad6003f1 class_conn2export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xadd6ffe8 cl_env_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xae288fec cl_lock_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xaff71402 cl_lock_error +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb01963a6 class_uuid_unparse +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb112a135 cl_page_gang_lookup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb17778c1 lu_context_key_register +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb1b89b6d class_attach +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb2824821 cl_enqueue +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb35519ed lustre_swab_cfg_marker +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb39bbd76 class_incref +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb41998cd lustre_cfg_rename +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb4f8ee63 lprocfs_read_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb58b1e51 cl_2queue_disown +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb5f0069d llog_thread_key +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb68e1c83 cl_io_submit_rw +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb690f6d5 cl_io_lock_alloc_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb6a5208b llog_cat_process +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb6ba5dd5 kuc_ispayload +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb736556f lu_env_refill +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb743ec6a dt_mode_to_dft +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb79f1763 llog_exist +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb84a3435 lprocfs_at_hist_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb88f89e4 llog_cat_declare_add_rec +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb8c62bd0 lprocfs_oh_tally_log2 +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xba43435a cl_page_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xba6799e5 cl_vmpage_page +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xba985283 lustre_register_client_process_config +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbacac922 lprocfs_write_frac_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbbca4443 ldebugfs_obd_seq_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbc436a0d obdo_cpy_md +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbcf06d01 cl_page_is_owned +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbe2083bc cl_page_is_vmlocked +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbe4c7e03 cl_req_slice_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbf7ea018 cl_req_completion +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc021e129 class_name2obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc02c267b llog_cat_process_or_fork +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc0bf7ef2 obd_debug_peer_on_timeout +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc1c16f25 class_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc260900e cl_io_rw_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc3f89dda cl_page_list_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc404837c lprocfs_stats_alloc_one +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc490cce3 llog_process_or_fork +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc5a0fd12 cl_req_page_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc5a98ab8 lu_device_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc644a5be obdo_refresh_inode +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc6e7fa08 lu_context_key_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc6f70bbd cl_req_prep +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc7527d94 cl_page_size +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc7e5ef3c lu_device_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc83213cb class_fail_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc88a7972 obd_export_evict_by_uuid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc9987a9f dt_device_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc9b3c667 dt_lfsck_features +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc9c2c222 lprocfs_alloc_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc9d22bbf cl_object_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcad4033d cl_2queue_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcb0ab67f obd_max_dirty_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcb72e8d3 cl_lock_weigh +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcc456669 cl_lock_user_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcc53f178 __llog_ctxt_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcd7537ee get_devices_count +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcd7564a5 lprocfs_free_obd_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcd8a604e lu_buf_check_and_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xce5c6392 cl_env_peek +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcfaaa16e class_conn2cliimp +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd0101fc1 lprocfs_counter_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd07e6ba6 cl_io_submit_sync +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd08827c0 server_name2fsname +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd0b6995d lu_buf_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd10aa042 lustre_swab_llog_id +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd1a5995e class_config_llog_handler +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd1cfd03c obd_export_nid2str +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd1d664f4 cl_page_list_assume +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd2017930 lprocfs_oh_sum +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd372d6d4 obdo_from_md +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd3aab70f cl_page_list_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd3c3b969 cl_page_list_del +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd40dc67e dt_txn_hook_start +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd57fd24d cl_lock_closure_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd6e7f60a lprocfs_rd_uint +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd70fe669 lustre_swab_llogd_body +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd7bc8654 obd_timeout +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd7bfbc9c lprocfs_dt_rd_filesfree +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd7d03510 lu_object_find +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd7f7b340 cl_lock_mode_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd882459f lprocfs_rd_timeouts +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd8b70c1a cl_env_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xda17a2d4 cl_object_find +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xda5b1ced class_find_param +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdac644c8 lustre_posix_acl_xattr_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdb13dce1 capa_list +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdb4d98b6 lustre_register_kill_super_cb +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdc099a71 cl_site_stats_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdc6d6793 cl_lock_enqueue_wait +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdcc40af0 class_check_uuid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdcdd5055 cl_io_iter_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdcf1c67e cl_wait_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdd63bc40 lu_object_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xde309586 cl_io_rw_advance +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xde7d985b obd_dirty_transit_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xded69f52 lprocfs_rd_server_uuid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdfb79862 cl_lock_at +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdfe5245f lprocfs_seq_read_frac_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe028cf84 capa_encrypt_id +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe146cccb cl_sync_io_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe1579bfb lprocfs_stats_collect +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe29a7df4 cl_attr2lvb +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe2eb4470 class_get_next_param +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe386aa7a ldebugfs_remove +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe3891368 dt_key +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe3fcfb8d lu_object_assign_fid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe488d47a lu_device_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe5737c36 cl_conf_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe583b23b lu_kmem_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe6824877 cl_io_is_going +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe7c6f386 class_find_client_obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe7d83236 cleanup_capa_hash +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe7f2a5ba dt_txn_callback_del +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe81161e5 cl_lock_descr_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe882c9d0 class_connect +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe883098a obdo_from_inode +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe8e84c32 class_match_nid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe97d3d18 cl_page_assume +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xec03c121 cl_2queue_init_page +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xec7d6b85 obd_timeout_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xece365ed cl_env_implant +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xece9cd8e llog_declare_write_rec +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xecfd39bf class_decref +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xee1a6e94 lu_dev_del_linkage +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xee68bc29 lu_session_tags_update +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xeeeb79fa do_lcfg +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xef76f858 block_debug_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xefeecadd cl_env_unplant +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf01e2527 server_name2index +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf061e44a cl_site_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf0c15982 dt_try_as_dir +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf18f8da2 cl_site_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf2fd6695 statfs_pack +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf33be9a2 cl_lock_modify +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf45678b2 lprocfs_single_release +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf45ec100 class_manual_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf481a292 lu_site_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf490d5f9 class_del_profiles +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf509c46e cl_io_commit_write +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf52dabcc class_connected_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf599d237 llog_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf5a43daf cl_type_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf60d4659 capa_count +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf6ab01ec ldebugfs_seq_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf7020831 lprocfs_dt_rd_kbytesavail +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf79601da dt_object_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf8c95b31 dt_object_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf9375db0 lu_site_init_finish +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf9fe08ad class_conn2obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfa1e4308 class_handle_hash_back +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfa7e11a7 lu_object_unhash +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfa813d06 capa_hmac +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfa815fae lu_object_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfb6420df lu_env_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfba9c220 lu_object_anon +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfbea0098 lu_types_stop +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfc7f18d0 obd_pages_max +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfca33365 cl_page_header_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfd4519e1 cl_page_find_sub +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfd68d17a class_notify_sptlrpc_conf +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfd8f5cf4 lu_buf_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfdaacc5f cl_lock_nr_mutexed +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfdb41903 llog_declare_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfdbe1557 lprocfs_write_u64_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfe4e6063 class_disconnect +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfe6b062a md_from_obdo +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xff57e92d class_match_net +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xffb57a46 class_new_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfffc1f11 lustre_swab_ost_id +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0022bca7 ptlrpc_obd_ping +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x00a1f2a6 ldlm_resource_putref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x00cb99c1 RQF_LDLM_INTENT_GETXATTR +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x00d95039 ptlrpcd_decref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0119a473 req_capsule_server_sized_swab_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0141aa14 __ldlm_handle2lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x01a8be1f ldlm_cli_cancel_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x01d6ef7f ldlm_pools_recalc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x04892997 ldlm_cli_enqueue_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x048b59d5 lustre_msg_set_handle +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0515f93b RQF_FLD_QUERY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x05be6ce2 ptlrpc_restart_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x060c4211 ldlm_pool_get_lvf +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x06b3942b lustre_swab_lov_user_md_objects +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x071fc74a RQF_LDLM_ENQUEUE_LVB +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x07605c7d interval_find +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x07a35b68 lustre_pack_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x08bb2d27 lustre_swab_obd_ioobj +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x08caceeb ptlrpc_pinger_sending_on_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x08d31b30 ptlrpc_buf_need_swab +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x095587d0 lustre_msg_buflen +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0a3130b0 RMF_MDT_EPOCH +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0ac252b2 lustre_msg_set_jobid +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0b174c28 ptlrpc_set_destroy +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0bcacb5d RMF_MDS_HSM_USER_ITEM +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0bf439dc ptlrpc_send_error +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0c2d9c43 lustre_swab_lip_header +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0c3f0a8b ptlrpc_retain_replayable_request +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0cf343dd RQF_LDLM_INTENT_BASIC +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0fa6efb2 ptlrpc_error +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1094e719 req_capsule_filled_sizes +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x10f18f20 interval_iterate_reverse +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x115017f6 req_layout_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x11ba484a ptlrpc_prep_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x12b6f5a3 ptlrpc_connection_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x14708afc lustre_swab_mdt_rec_reint +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1483eca4 ldlm_lock_addref_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x14d192db lustre_msg_size +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x15388752 req_capsule_server_pack +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x153f5ab8 ptlrpc_request_committed +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x15496294 ptlrpc_request_alloc_pool +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x15a3e4db RMF_GETINFO_VAL +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x16ad99ac ldlm_pool_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1719491e sptlrpc_target_update_exp_flavor +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x172fb86d lustre_msg_hdr_size +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x174526b3 lprocfs_rd_pinger_recov +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1747d8b3 ldlm_lockname +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x17950f60 RQF_SEC_CTX +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x19108a0f RQF_OST_DISCONNECT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x19c08934 RQF_LDLM_INTENT_CREATE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1a6a3ce9 RQF_OST_GET_INFO_LAST_ID +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1a9b76aa RMF_OBD_QUOTACTL +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1abd3258 RMF_SETINFO_VAL +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1ace4b5f RQF_LDLM_BL_CALLBACK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1ad6c330 RMF_EAVALS +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1afa806a ptlrpc_cleanup_imp +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1b0acbbe req_capsule_extend +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1b895a69 lprocfs_wr_evict_client +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1bae0270 interval_iterate +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1bdd6d53 lprocfs_wr_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1be21715 lustre_msg_size_v2 +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1c1d7202 sptlrpc_cli_unwrap_bulk_read +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1c300d8e lustre_msg_get_slv +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1c588bc1 ptlrpc_set_add_cb +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1c5acb8c sptlrpc_import_flush_all_ctx +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1cd6be9a ldlm_lock_fail_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1d043548 lustre_msg_set_op_flags +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1d38f14f ptlrpc_prep_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1dc2051d RMF_SEQ_OPC +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1de9c288 lustre_swab_layout_intent +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1df8c023 ptlrpc_buf_set_swabbed +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1e38c8b7 ptlrpc_activate_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1e8e48a4 sptlrpc_flavor_has_bulk +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1eb2a65f RQF_OST_GETATTR +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1ee46b51 lustre_init_msg_v2 +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1ee9eb3c RQF_MDS_QUOTACTL +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x208126ca ldlm_lock_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2096f5b5 RQF_OST_SET_GRANT_INFO +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x20d6b82c RQF_LDLM_INTENT_QUOTA +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x218a36ce ldlm_cli_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x219391ec RMF_EAVALS_LENS +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x233790b5 RMF_OST_BODY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x242b2c74 ldlm_namespace_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x243ad380 req_capsule_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x244e5558 lustre_msg_get_version +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x24aafdba RMF_MGS_TARGET_INFO +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x24af2ec0 ldlm_cli_cancel_unused +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2546673f lprocfs_wr_pinger_recov +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x254dbb6c ptlrpc_cleanup_client +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2585a629 RMF_SEQ_RANGE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2587513c RQF_LDLM_CP_CALLBACK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x269554ce RQF_LDLM_INTENT_GETATTR +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2699b381 sptlrpc_enc_pool_put_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x26f2e331 ldlm_cli_update_pool +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x26f99d16 RQF_MGS_CONFIG_READ +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x27d851d9 lustre_pack_reply_flags +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x285e5b99 lustre_msg_set_conn_cnt +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x289444b9 ldlm_resource_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x28e8aa05 ptlrpc_send_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x294be8a8 ldlm_completion_ast_async +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x29e0869a sptlrpc_get_hash_name +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2a5bd8d9 ptlrpc_request_alloc_pack +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2a63a472 lustre_swab_ptlrpc_body +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2c00c60d ptlrpc_sample_next_xid +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2c0388e5 ptlrpc_unpack_req_msg +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2c5c94be sptlrpc_gc_add_ctx +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2ca92fa8 ldlm_lock_decref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2ccd5b87 ldlm_cli_cancel_list_local +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2d56f168 ptlrpc_pinger_ir_up +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2d798316 RMF_MGS_CONFIG_RES +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2e3b4dac ldlm_blocking_ast +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2e4562fe RQF_LLOG_ORIGIN_HANDLE_CREATE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2e4ca396 RQF_LDLM_INTENT_UNLINK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2ecd7515 lustre_msg_check_version +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2eff1862 sptlrpc_svc_ctx_invalidate +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2f0e4f87 RQF_OST_QUOTACTL +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2f14d838 ptlrpc_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2f27de34 req_capsule_client_dump +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2f793215 lustre_swab_ost_body +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2fab3539 lustre_swab_ost_lvb_v1 +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2fd2f737 lustre_msg_set_limit +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x301d4fcd RQF_MDS_READPAGE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x301ff485 lustre_free_reply_state +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x302937e0 RQF_MDS_CONNECT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3060b9c6 sptlrpc_rule_set_expand +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x31838cb4 RMF_IDX_INFO +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3261b862 RQF_OST_SYNC +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x32d49d55 sptlrpc_cli_unwrap_bulk_write +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x337db157 req_capsule_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x33bb7761 ldlm_typename +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x33e30481 ptlrpc_hpreq_handler +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x343cd69e ptlrpc_prep_fcset +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x35939a3d lustre_swab_fiemap +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x36fdb9f8 ldlm_lock_allow_match_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x36ffb838 sptlrpc_req_replace_dead_ctx +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3835ab4b RQF_LLOG_ORIGIN_CONNECT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3858fb94 RMF_OBD_STATFS +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x38c01799 RQF_LDLM_CALLBACK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x38fce533 lustre_msg_set_versions +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x39b5fa5f ptlrpc_req_finished_with_imp_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x39f60a5f RMF_OST_ID +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3a1e4bcb __lustre_unpack_msg +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3ab90f6e lustre_msg_bufcount +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3ac00716 lustre_swab_hsm_user_state +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3b6b7cba dump_ioo +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3beba45d client_obd_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3bedb0c7 RMF_LLOGD_CONN_BODY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3c63e62b RQF_MDS_REINT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3c8b16ab lustre_swab_ost_lvb +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3ca50f33 RQF_MDS_HSM_CT_REGISTER +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3d7dc5f9 ldlm_pools_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3dc47695 lustre_msg_get_magic +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3e222bb2 client_import_del_conn +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3f034caf lustre_msg_get_status +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3f74c21e req_capsule_client_sized_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3f752e78 RQF_MDS_STATFS +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x41008cef RQF_LDLM_CANCEL +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x41cfa3f7 ptlrpc_reconnect_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x42755706 target_pack_pool_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x430fd20d ldlm_init_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x43168488 RQF_MDS_RELEASE_CLOSE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x43705ee4 RQF_LOG_CANCEL +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x43d7efc8 lustre_msg_set_transno +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x44036eda RQF_MDS_GET_INFO +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x440c2a71 RMF_FIEMAP_VAL +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4481591d RQF_OST_SET_INFO_LAST_FID +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4541b727 client_disconnect_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x45a03408 sptlrpc_gc_add_sec +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x45b21197 req_capsule_other_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x45d05893 lustre_swab_lustre_capa +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x45e30cea lustre_swab_ldlm_intent +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4603a906 ldlm_lock_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x46ddb9fc ptlrpc_request_bufs_pack +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x47f5e903 RMF_MDS_HSM_REQUEST +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x483691df ldlm_get_enq_timeout +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x498c03c5 lustre_msg_set_last_xid +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4a51bfda req_capsule_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4a5a2416 RMF_DLM_REQ +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4ace3217 ldlm_lock_convert +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4c6a89a6 ptlrpc_commit_replies +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4d1463e4 ptlrpc_add_rqs_to_pool +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4d7580d0 lustre_swab_hsm_user_item +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4e1706e5 lustre_msg_buf +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4e2c5934 ldlm_destroy_flock_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4e52abe6 lprocfs_wr_ping +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4e696b96 ptlrpcd_queue_work +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4eb03a6f ptlrpcd_destroy_work +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4f766c3b lustre_swab_generic_32s +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x50443f6a ptlrpc_init_client +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x50dd74f8 RMF_STRING +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x52c62150 RMF_RCS +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x53411557 RMF_DLM_REP +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x53a4a004 bulk_sec_desc_unpack +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x54ae5021 ldlm_lock_addref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x555eb7fe RQF_MDS_HSM_STATE_SET +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x55924608 sptlrpc_conf_client_adapt +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x570d5222 ldlm_glimpse_ast +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5757057d ptlrpc_disconnect_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x588035b4 RMF_UPDATE_REPLY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x588f20f6 sptlrpc_cli_ctx_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x589cf1a8 ptlrpc_set_import_active +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x58fae580 ldlm_pool_set_slv +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x595ab175 lustre_swab_obd_quotactl +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x596582bf RMF_GETINFO_VALLEN +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5a057439 interval_search +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5af0d02a ldlm_lock_dump_handle +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5b30dd8f ptlrpc_schedule_difficult_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5b6ba895 lustre_packed_msg_size +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5c370aea ldlm_register_intent +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5c6a3a83 RQF_SEQ_QUERY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5ca1b491 lustre_swab_close_data +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5caae213 ptlrpc_next_xid +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5d00e437 ptlrpc_unregister_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5e0b19b1 RMF_CLUUID +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5e17f7b2 sptlrpc_import_sec_ref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5e2b7558 lustre_msghdr_get_flags +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5e6f435d RQF_OST_BRW_READ +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5e80f899 RQF_LLOG_ORIGIN_HANDLE_READ_HEADER +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5ec3284d RQF_MDS_HSM_CT_UNREGISTER +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5ef831ee lustre_msg_get_handle +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5f96ccdd ptlrpc_connection_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5fc9a455 RMF_CLOSE_DATA +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6042bc15 RQF_MDS_REINT_RENAME +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x604e2505 RMF_SWAP_LAYOUTS +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x607ec932 lustre_msg_set_buflen +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x60a056d6 unlock_res_and_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x60cd26ad RQF_MDS_REINT_CREATE_SYM +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x61646e1b RQF_MDS_SWAP_LAYOUTS +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x618ad203 RQF_OST_GET_INFO_LAST_FID +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x62aaae3f RQF_MDS_HSM_REQUEST +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6315dd4c RMF_LLOGD_BODY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6352a62d ldlm_get_ref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x63b6d5c2 ldlm_pool_set_limit +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x647b6e48 lustre_swab_ldlm_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x653723dc RMF_LOGCOOKIES +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6599eba6 ptlrpc_fail_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x67b8dfb2 target_send_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x67bd2bb3 ptlrpc_start_threads +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x682e9620 sptlrpc_lprocfs_cliobd_attach +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x685eeaba RMF_DLM_GL_DESC +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x689ccc4f ptlrpc_register_service +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x68cb2541 interval_is_overlapped +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x68f49e5e ptlrpc_expired_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6912990a RQF_OST_QUOTACHECK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x69221378 ptlrpc_nrs_policy_unregister +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x695a5da7 ptlrpc_request_addref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x696ba811 lustre_msg_get_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x69c9f04d RQF_MDS_REINT_LINK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6a0d8011 ldlm_pool_get_clv +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6a3785c9 RMF_EADATA +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6c1c730c ptlrpcd_add_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6c57bbf6 dump_obdo +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6d72828c sptlrpc_conf_log_update_end +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6d7931cc RQF_UPDATE_OBJ +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6ed20499 ldlm_revalidate_lock_handle +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6efa82b0 RQF_MGS_TARGET_REG +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6efb32a2 ptlrpc_set_wait +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6f1499e5 ldlm_resource_foreach +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6f4bb97d ptlrpc_abort_inflight +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6f6dc736 lustre_swab_mdt_remote_perm +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6fb92092 sptlrpc_flavor2name_bulk +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x703538e4 lustre_swab_hsm_current_action +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x723d43b6 sptlrpc_rule_set_dump +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x725a892c RQF_MDS_REINT_OPEN +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x72b2323a ldlm_resource_unlink_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x72e80f1b ptlrpc_request_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x72ff2b80 ptlrpc_unregister_service +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7376f38f ptlrpcd_alloc_work +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x74840056 lustre_msg_set_status +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x754d15e7 ptlrpc_invalidate_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7593d0a1 client_obd_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x75a2c40d ldlm_put_ref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x768b4b5a ptlrpc_mark_interrupted +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x76b728e5 lustre_swab_update_buf +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x76dc2101 ldlm_pool_set_clv +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x77840c82 sptlrpc_rule_set_choose +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7869d3aa req_capsule_has_field +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x78bf9136 lustre_swab_ldlm_lock_desc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7a832f10 RMF_CONN +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7aa9f4c1 req_capsule_get_size +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7b158da4 lustre_swab_ldlm_request +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7bbf8001 RMF_MDT_BODY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7c49f763 ptlrpc_service_health_check +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7c4c6107 RQF_LDLM_CONVERT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7c4d0313 ptlrpc_request_pack +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7cb71015 sptlrpc_target_sec_part +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7d1ecd7f RQF_LDLM_INTENT_LAYOUT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7d41a8b9 RQF_QUOTA_DQACQ +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7dc0e7cd RMF_QUOTA_BODY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7dd72659 ldlm_lock_fail_match_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7dfb3c18 lustre_msg_clear_flags +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7f4925d8 interval_expand +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7f4c99b1 ldlm_expired_completion_wait +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7f5a1cc7 lustre_msg_set_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7f6d2357 lustre_msg_is_v1 +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x805c83e8 ptlrpc_stop_all_threads +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8083cb34 ldlm_replay_locks +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x80a9e8c3 lustre_msg_get_last_xid +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x80ecb4e3 RMF_MDS_HSM_CURRENT_ACTION +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x817d7f1f lustre_msg_add_flags +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x81a4e709 ldlm_enqueue_pack +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x826d3c4f RQF_LDLM_GL_CALLBACK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x837efb00 RMF_NAME +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x849fecbf __ptlrpc_prep_bulk_page +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x85135801 RMF_DLM_LVB +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8549bd00 ptlrpc_resend_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x85a9e0d8 RMF_FID +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x85eecf67 sptlrpc_get_hash_alg +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x863db6eb RMF_HSM_USER_STATE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x866a3998 ldlm_blocking_ast_nocheck +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x869ad4be sptlrpc_cli_ctx_expire +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x86fa8c3b ldlm_cli_convert +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8760beaf lustre_swab_ldlm_policy_data +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x876c2551 RMF_GETINFO_KEY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x87bf7b3c sptlrpc_get_next_secid +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8872f3d2 RMF_SETINFO_KEY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x88fff52d RMF_CAPA2 +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x89f9edf7 RQF_MDS_REINT_SETXATTR +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8a066753 ldlm_namespace_dump +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8a1ea476 lustre_swab_hsm_state_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8a257736 RQF_MDS_HSM_STATE_GET +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8ac440fa ptlrpc_uuid_to_connection +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8af86525 ptlrpc_queue_wait +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8b854254 lustre_swab_mgs_config_res +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8cb71d4b RQF_MDS_REINT_CREATE_SLAVE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8d77ea75 lustre_msg_set_flags +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8da3fca7 lustre_msg_add_version +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8e137d33 sptlrpc_gc_del_sec +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8e9abe4d RMF_GENERIC_DATA +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8f0aceac RQF_MDS_HSM_ACTION +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8fbd23a5 llog_client_ops +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8fec0451 lustre_msg_get_limit +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x902a20a0 llog_initiator_connect +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9160b9bc req_capsule_server_sized_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x919c4ce3 RMF_OBD_ID +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x91cf58d3 RQF_MDS_PIN +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9228392f lustre_swab_mdt_body +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x92dfffec ldlm_lock_allow_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9340667f ldlm_namespace_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x937b1ee0 lustre_swab_mdt_ioepoch +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9553c633 RQF_LDLM_INTENT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x959c3f4b ptlrpcd_add_rqset +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x95d08f0c lustre_swab_mgs_target_info +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9660ace0 RMF_FLD_MDFLD +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9668be4a ptl_send_rpc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x967bfd52 RQF_OBD_PING +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x96d9061a sptlrpc_sec_destroy +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9798f2f1 RQF_MDS_GETATTR +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x97e60866 sptlrpc_cli_wrap_bulk +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x980fcfdc ptlrpc_connection_addref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x982abdeb ldlm_cli_enqueue +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x98585ed8 ptlrpc_pinger_add_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x996228bd ptlrpc_nrs_policy_register +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9999cf7a dump_ost_body +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9a258886 RQF_MDS_GETSTATUS +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9a2cb78d client_import_find_conn +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9a6f2f6d lustre_msg_set_opc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9b5c3431 sptlrpc_cli_ctx_wakeup +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9b78ca48 ptlrpc_set_add_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9b88f6ce RMF_NIOBUF_REMOTE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9bb5198b RQF_MDS_CLOSE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9c6e96ec ptlrpc_check_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9c70ac1e ptlrpc_req_set_repsize +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9cd41b1e lustre_pack_reply_v2 +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9d7ea314 sptlrpc_pack_user_desc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9d9d0291 ptlrpc_wake_delayed +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9eac432a sptlrpc_get_bulk_checksum +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9f960d4a ptlrpc_lprocfs_unregister_obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9fb088f1 lustre_swab_lov_mds_md +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa081c155 ptlrpc_request_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa10f0d3d RMF_UPDATE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa163f4c3 dump_rniobuf +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa16eb4da req_capsule_field_present +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa2244636 RQF_MDS_GETATTR_NAME +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa22c0086 ldlm_error2errno +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa247fa65 sptlrpc_target_export_check +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa3d2a6ee RMF_CAPA1 +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa47787ef RMF_PTLRPC_BODY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa4a2d089 RQF_OST_PUNCH +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa4bea5ef lustre_swab_lmv_user_md +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa4c42ff4 sptlrpc_sec_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa5458dad ldlm_lock_decref_and_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa5880075 ldlm_errno2error +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa6c436ca RQF_MDS_WRITEPAGE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa7d55cc3 RQF_MDS_REINT_CREATE_RMT_ACL +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa7e360b1 RMF_OBD_IOOBJ +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa7ec567d RMF_CONNECT_DATA +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa9704f80 lustre_msg_get_last_committed +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa9c4658e lustre_swab_lov_user_md_v3 +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa9edf09d RQF_OBD_IDX_READ +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xac5ba8e5 ptlrpc_resend +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xac9fbc6e req_capsule_server_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xacd6a7d7 lustre_swab_ost_last_id +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xad49dc7c ldlm_pool_get_limit +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xaddc3979 lustre_swab_lustre_capa_key +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xae65d7ef ldlm_lock_downgrade +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xae9de7f4 ptlrpc_add_timeout_client +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xaec05b11 sptlrpc_enc_pool_get_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xaee0d287 ptlrpc_unpack_rep_msg +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xaf0d1e72 ldlm_pool_del +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xaf4e9658 RQF_MDS_SYNC +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xaf50a0d6 RMF_HSM_STATE_SET +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb0751fa4 RQF_LLOG_ORIGIN_HANDLE_DESTROY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb0ccb7aa ldlm_prep_enqueue_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb1b43d8a dump_rcs +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb27563f4 ptlrpc_prep_bulk_imp +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb27c2374 lustre_msg_get_jobid +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb291473d lustre_msg_early_size +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb4a7ecf3 lustre_msg_add_op_flags +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb4e6f34c ptlrpc_save_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb512ebc2 sptlrpc_parse_flavor +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb61cb95a RQF_MDS_GETXATTR +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb68476df interval_erase +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb68787aa req_capsule_server_swab_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb6aafd03 RQF_MDS_DONE_WRITING +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb6e60926 req_capsule_shrink +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb7b38189 RMF_MDT_MD +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb7fa3cc8 RMF_LLOG_LOG_HDR +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb8101ccd ldlm_lock2handle +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb903634e RQF_OST_CONNECT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb9b631cf lustre_swab_mgs_config_body +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xba49d573 ldlm_destroy_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbaa76097 lustre_msg_string +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbb673c2f req_capsule_server_grow +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbc1370dc lustre_shrink_msg +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbcc0dd15 sptlrpc_import_flush_my_ctx +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbd83bc44 RQF_OBD_SET_INFO +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbe47bc7e ping_evictor_start +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbedb3f3d lock_res_and_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbeeb7439 ldlm_namespace_new +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbef769cc RQF_CONNECT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbf98b86f RQF_MDS_QUOTACHECK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbffd4313 RQF_OST_BRW_WRITE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc0499162 ptlrpc_replay_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc06c4670 lustre_msg_get_versions +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc0867da7 RMF_REC_REINT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc0cdf55e RMF_MGS_SEND_PARAM +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc1653bb3 ldlm_cancel_resource_local +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc25d0ce3 ldlm_prep_elc_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc2986d28 lustre_swab_ldlm_res_id +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc2b1af57 RQF_MGS_SET_INFO +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc2be922a RMF_SYMTGT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc3b54218 ptlrpc_pinger_del_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc496d51a ldlm_cli_cancel_list +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc4c6960e ldlm_extent_shift_kms +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc559a634 RMF_LAYOUT_INTENT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc60a60e1 RQF_OST_STATFS +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc6154cae req_capsule_set_size +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc65eb081 client_destroy_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc694be4b RQF_LLOG_ORIGIN_HANDLE_PREV_BLOCK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc763fabc sptlrpc_process_config +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc79b9c67 ldlm_pools_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc79fe15b ptlrpcd_wake +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc7ca8257 RQF_MDS_REINT_SETATTR +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc7e47564 ptlrpc_interrupted_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc82cdad8 ldlm_lock_change_resource +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc8f586a9 ptlrpc_connection_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc94ea62b ldlm_init_flock_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xca5a81ec ptlrpc_pinger_ir_down +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xcad1a790 lustre_pack_request +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xcb2cc0cf lustre_swab_lquota_lvb +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xcb2ceaff sptlrpc_secflags2str +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xcc64f087 target_print_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xcc660e04 ptlrpc_req_finished +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xcdb45b35 do_set_info_async +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xce1a689b sptlrpc_enc_pool_add_user +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xce86066d lustre_msg_set_slv +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xcec513c9 RQF_MDS_UNPIN +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xced015be sptlrpc_rule_set_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xceeee587 client_connect_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xcf9963db lustre_msg_get_op_flags +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xcf9aab6a RQF_MDS_DISCONNECT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xcfa0eef5 ldlm_pool_get_slv +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd04815d9 ldlm_namespace_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd260c9ab ldlm_namespace_foreach +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd289da6d ptlrpc_prep_req_pool +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd2983334 lustre_swab_swap_layouts +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd2e0d4eb lustre_msg_get_opc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd3dae408 ldlm_it2str +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd5bea103 ptlrpc_connect_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd67a5d7b lustre_swab_update_reply_buf +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd69e0a27 RQF_MDS_IS_SUBDIR +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd6c3ebfb RMF_FIEMAP_KEY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd7910326 lustre_swab_obd_statfs +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd8b91b3e lustre_swab_lov_desc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd8f06300 RQF_MDS_HSM_PROGRESS +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd9561861 RQF_LDLM_INTENT_OPEN +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd9822984 ptlrpc_recover_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd9ab6922 ptlrpc_lprocfs_brw +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xdb1fb0a2 RQF_MDS_REINT_CREATE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xdb9d5a6a lustre_swab_niobuf_remote +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xdbc22ba8 req_capsule_server_dump +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xdbede6b0 ldlm_cli_enqueue_local +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xdc9306bf ldlm_pool_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xdd0ffb04 sptlrpc_flavor2name +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xdd30d7bf RMF_ACL +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xddc40a85 lustre_msg_get_flags +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xde12d36b RMF_MDS_HSM_ARCHIVE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xde555d70 sptlrpc_enc_pool_del_user +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xdea9da72 ldlm_pool_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xdee87192 sptlrpc_conf_log_update_begin +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xdf701ae7 lustre_swab_fid2path +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe019e591 ldlm_resource_iterate +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe0cc694c RQF_LLOG_ORIGIN_HANDLE_NEXT_BLOCK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe0db0d17 ptlrpc_at_set_req_timeout +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe1651ce9 ptlrpc_set_add_new_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe25b623d sptlrpc_sec_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe28299d0 req_capsule_client_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe2d36b90 client_import_add_conn +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe3738053 ptlrpc_set_next_timeout +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe40e0a50 lustre_msg_get_transno +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe412eeb0 ldlm_completion_ast +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe57bd972 sptlrpc_current_user_desc_size +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe5c3bdd6 ldlm_lock_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe624de52 ptlrpc_free_rq_pool +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe643998e RQF_OST_SETATTR +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe6f0dc96 RQF_OST_CREATE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe7062b5f RMF_U32 +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe7415d6f ptlrpc_init_rq_pool +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe7512278 ptlrpcd_addref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe76d3042 ldlm_flock_completion_ast +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe7b3b67d ptlrpc_request_set_replen +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe85b6da3 lustre_swab_obdo +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe924758f ptlrpc_unregister_bulk +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe98ed28a ptlrpc_init_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe9ad87e4 __ptlrpc_free_bulk +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xea2c577b _ldlm_lock_debug +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xea6b9742 ldlm_lock2desc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xeabac4fc sptlrpc_rule_set_merge +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xebb64e68 req_layout_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xec226f66 ping_evictor_stop +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xec496ca2 ldlm_namespace_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xec68f446 req_capsule_init_area +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xec939a00 RQF_MDS_REINT_UNLINK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xecace5c1 RQF_OST_GET_INFO_GENERIC +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xecc05940 ptlrpc_lprocfs_register_obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xed1c10d6 ptlrpc_connection_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xed615f61 req_capsule_client_swab_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xedcb740d sptlrpc_name2flavor_base +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xee8c648b _debug_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xeed51d55 ldlm_pool_shrink +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xef10d510 sptlrpc_register_policy +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xef1aeca9 RMF_FLD_OPC +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xef49b751 sptlrpc_cli_enlarge_reqbuf +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf0241d6e lustre_swab_hsm_progress_kernel +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf02dd11c ldlm_cli_cancel_unused_resource +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf0d52b5f ptlrpc_pinger_suppress_pings +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf1300275 _sptlrpc_enlarge_msg_inplace +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf20660d6 ldlm_reprocess_all_ns +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf277c125 RQF_OST_GET_INFO_FIEMAP +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf27d49dc sptlrpc_target_choose_flavor +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf35f132b lustre_swab_ldlm_resource_desc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf3d44370 RQF_OST_DESTROY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf43540b9 lustre_swab_mgs_nidtbl_entry +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf45085e1 sptlrpc_conf_log_stop +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf4ae35ab ptlrpc_req_xid +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf55c033b RMF_MGS_CONFIG_BODY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf584a16b sptlrpc_part2name +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf596e9ae sptlrpc_conf_log_start +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf607fc23 sptlrpc_flavor2name_base +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf617ab8a lustre_msg_get_conn_cnt +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf697b756 ldlm_dump_all_namespaces +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf7408f84 lustre_swab_hsm_request +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf75d9dde sptlrpc_cli_ctx_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf7ba40c0 RMF_MDS_HSM_PROGRESS +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf85cb27e sptlrpc_parse_rule +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf870fed9 RQF_LDLM_GL_DESC_CALLBACK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf9051bd6 RQF_QC_CALLBACK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf94e41e0 deuuidify +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf973aa93 lustre_swab_lov_user_md_v1 +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf9ee11e2 lustre_msg_set_last_committed +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf9f72dfc RMF_TGTUUID +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xfa51688d interval_insert +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xfb297021 ldlm_pool_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xfc2fa83f ptlrpc_del_timeout_client +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xfc8f304e sec2target_str +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xfca85f4b sptlrpc_unregister_policy +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xfd148bf8 RMF_LDLM_INTENT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xfd81e3aa ldlm_lock_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xfeb351b7 ptlrpc_register_bulk +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xff02a0e9 ldlm_lock_set_data +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xff2e3d2b ptlrpc_deactivate_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xffc807e8 sptlrpc_unpack_user_desc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xffe29c3f RQF_LDLM_ENQUEUE +EXPORT_SYMBOL drivers/staging/media/cxd2099/cxd2099 0xa59bcea6 cxd2099_attach +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x00e56de8 rtllib_act_scanning +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x07de56d1 rtllib_wx_set_wap +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x09457da6 rtllib_wx_get_freq +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x09c197c8 rtllib_stop_scan +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x12c0a471 rtllib_wx_set_power +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x141255bb free_rtllib +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x188afb25 notify_wx_assoc_event +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x29d1e93e rtllib_wx_get_scan +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x29f2470c rtllib_wx_get_wap +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x2dab5d3e rtllib_EnableIntelPromiscuousMode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x2ed1023a rtllib_wx_get_encode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x3eec580b rtllib_reset_queue +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x3f017ef2 rtllib_wx_set_rawtx +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x44f375ea rtllib_wx_set_rts +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x4ce611fd rtllib_wx_get_power +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x5044d3fb rtllib_ps_tx_ack +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x525993db rtllib_start_scan_syncro +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x59a6b89d rtllib_softmac_start_protocol +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x5c08c3fe rtllib_wx_get_rate +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x607b3ccb rtllib_stop_scan_syncro +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x62afe450 rtllib_stop_send_beacons +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x6419ae9e rtllib_wx_set_mode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x6adf6437 rtllib_wx_get_rts +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x6e3bdc52 rtllib_start_send_beacons +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x707b5f96 Dot11d_Channelmap +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x751b7695 rtllib_wx_set_mlme +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x778aca0b rtllib_wx_set_auth +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x78e55491 rtllib_xmit +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x7d34a03b RemovePeerTS +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x832dd7d2 rtllib_wx_get_name +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x86667035 rtllib_wx_set_gen_ie +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x8e37fd9d rtllib_softmac_stop_protocol +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x8fc071d5 rtllib_rx +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x92471095 rtllib_wpa_supplicant_ioctl +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x985f1521 rtllib_wx_get_essid +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x9c552ce6 rtllib_wx_get_mode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xa4444186 rtllib_wx_set_rate +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xbe1420f2 rt_global_debug_component +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xbe3b9f02 rtllib_get_beacon +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xc679a0ad rtllib_wx_set_essid +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xca81eb84 rtllib_wx_set_encode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xcb94290e rtllib_DisableIntelPromiscuousMode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xcc743721 alloc_rtllib +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xd19d6b46 rtllib_wx_set_scan +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xd4c65cfd HT_update_self_and_peer_setting +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xd713a9c1 rtllib_MgntDisconnect +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xde1eabfc rtllib_wx_set_encode_ext +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xdf78f620 rtllib_wlan_frequencies +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xe7dfa30f rtllib_sta_ps_send_null_frame +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xeed2d3e1 rtllib_legal_channel +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xf109ffde rtllib_wx_set_freq +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xf4cefdfd dot11d_init +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x041ee992 ieee80211_is_shortslot_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x099ab13c ieee80211_wx_set_auth_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x0bdddfe9 ieee80211_rx_mgt_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x12d0e5f1 ieee80211_wx_set_power_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x1459f465 ieee80211_get_beacon_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x14b049bb ieee80211_wx_set_wap_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x14bd6ee2 ieee80211_wx_get_name_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x183a8aed ieee80211_stop_scan_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x1a727842 SendDisassociation_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x21e36132 ieee80211_wx_get_rate_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x224a9039 Dot11d_Init +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x2739583e ieee80211_wx_get_encode_ext_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x27c22aa3 ieee80211_wx_get_rts_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x2b501134 ieee80211_wx_set_mode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x2c30591c IsLegalChannel +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x2eac7333 DOT11D_GetMaxTxPwrInDbm +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x35157993 HTUpdateSelfAndPeerSetting +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x3ed3fe1a ieee80211_wx_get_essid_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x4809a5bd ieee80211_start_send_beacons_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x4cc7c632 ieee80211_wx_set_freq_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x4fb4c20f ieee80211_wx_set_rts_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x505b8fcd ieee80211_start_scan_syncro_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x51a96f6b Dot11d_Reset +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x528a01cd notify_wx_assoc_event_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x61f22a72 ieee80211_wx_set_encode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x7329f0b6 ieee80211_send_probe_requests_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x7c251007 ieee80211_softmac_xmit_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x7c45515a ieee80211_wx_get_scan_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x7cc6a117 ieee80211_wx_get_wap_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x7ce017a4 ieee80211_rx_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x7d807969 ieee80211_disassociate_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x7e5d9de2 ieee80211_stop_queue_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x8fac10a3 ieee80211_reset_queue_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x92b00fc3 ieee80211_wx_set_essid_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x93cf5f19 ieee80211_wx_get_freq_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x9c05a888 ieee80211_txb_free_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x9cad1f3e ieee80211_wx_set_gen_ie_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x9e5123f3 ieee80211_wx_get_encode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xa0b78b4f ieee80211_softmac_stop_protocol_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xa34dc871 ieee80211_wx_set_scan_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xa38efb5d ieee80211_wx_set_mlme_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xa62c29de ieee80211_softmac_scan_syncro_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xa8c517e2 ToLegalChannel +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xa9813da1 ieee80211_stop_send_beacons_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xa9c25f74 ieee80211_softmac_start_protocol_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xaa632c63 ieee80211_wx_set_rawtx_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xaf139e6d ieee80211_wake_queue_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xb171f8a0 Dot11d_UpdateCountryIe +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xbeb31428 ieee80211_wx_get_power_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xc2098eef DOT11D_ScanComplete +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xc370a43e ieee80211_wlan_frequencies_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xcbd3af11 ieee80211_wpa_supplicant_ioctl_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xcf4c2491 ieee80211_is_54g_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xd525b248 ieee80211_wx_set_encode_ext_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xf458881f ieee80211_wx_get_mode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xf584ac79 ieee80211_ps_tx_ack_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xfeebf819 ieee80211_wx_set_rate_rsl +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x1a837969 iscsit_unregister_transport +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x212618b0 iscsit_increment_maxcmdsn +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x216dc5e4 iscsit_build_logout_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x2e33d2e1 iscsit_setup_text_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x31c6aad2 iscsit_tmr_post_handler +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x326aa492 iscsit_setup_scsi_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x3b43e87f iscsit_cause_connection_reinstatement +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x43cf9bf6 iscsit_build_text_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x4748a21c iscsit_stop_dataout_timer +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x4c47cdcd iscsit_build_nopin_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x4d1600ba iscsit_allocate_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x60fdf969 iscsit_set_unsoliticed_dataout +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x790b1b55 iscsit_build_reject +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x8660b61b iscsit_register_transport +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x9cb7ec10 iscsit_release_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xb7c99516 iscsit_check_dataout_hdr +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xc68de3e9 iscsit_sequence_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xd3b8f0a6 iscsit_process_nop_out +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xd4348fdc iscsit_build_rsp_pdu +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xde67541d iscsit_build_task_mgt_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xe462bcda iscsit_logout_post_handler +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xe65d55a8 iscsit_check_dataout_payload +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xecd0224b iscsit_handle_task_mgt_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xed9a7428 iscsit_find_cmd_from_itt +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xee3b8123 iscsit_setup_nop_out +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xf09e5a4a iscsit_process_text_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xf270f8f2 iscsit_handle_logout_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xfdbcfa7c iscsit_process_scsi_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x02de3b18 transport_set_vpd_ident +EXPORT_SYMBOL drivers/target/target_core_mod 0x041e6691 transport_generic_request_failure +EXPORT_SYMBOL drivers/target/target_core_mod 0x046c6e61 transport_generic_free_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x0ac0b44d core_tpg_set_initiator_node_tag +EXPORT_SYMBOL drivers/target/target_core_mod 0x11e593e9 target_wait_for_sess_cmds +EXPORT_SYMBOL drivers/target/target_core_mod 0x12f6efb8 transport_free_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x1b17483a target_unregister_template +EXPORT_SYMBOL drivers/target/target_core_mod 0x1be1d24f transport_check_aborted_status +EXPORT_SYMBOL drivers/target/target_core_mod 0x26aeb84f passthrough_parse_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0x332fe800 target_put_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x349e5063 target_show_dynamic_sessions +EXPORT_SYMBOL drivers/target/target_core_mod 0x4f7bdeb3 target_put_sess_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x5468f943 sbc_dif_copy_prot +EXPORT_SYMBOL drivers/target/target_core_mod 0x54a6ed6f sbc_attrib_attrs +EXPORT_SYMBOL drivers/target/target_core_mod 0x55613852 target_submit_tmr +EXPORT_SYMBOL drivers/target/target_core_mod 0x5da1b12c sbc_get_write_same_sectors +EXPORT_SYMBOL drivers/target/target_core_mod 0x5de90b2f spc_emulate_report_luns +EXPORT_SYMBOL drivers/target/target_core_mod 0x62644f56 target_nacl_find_deve +EXPORT_SYMBOL drivers/target/target_core_mod 0x67ac9e2d transport_wait_for_tasks +EXPORT_SYMBOL drivers/target/target_core_mod 0x67fef983 target_execute_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x69d17abc transport_kunmap_data_sg +EXPORT_SYMBOL drivers/target/target_core_mod 0x6adde6dd transport_alloc_session_tags +EXPORT_SYMBOL drivers/target/target_core_mod 0x6f6587e5 target_submit_cmd_map_sgls +EXPORT_SYMBOL drivers/target/target_core_mod 0x7082dcde transport_init_se_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x7359f997 target_sess_cmd_list_set_waiting +EXPORT_SYMBOL drivers/target/target_core_mod 0x7558d93a sbc_parse_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0x7b8fee7b transport_handle_cdb_direct +EXPORT_SYMBOL drivers/target/target_core_mod 0x7cc8f8fd target_setup_cmd_from_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0x7dbada9d transport_set_vpd_ident_type +EXPORT_SYMBOL drivers/target/target_core_mod 0x7de7e4af target_lun_is_rdonly +EXPORT_SYMBOL drivers/target/target_core_mod 0x7f83a774 spc_emulate_evpd_83 +EXPORT_SYMBOL drivers/target/target_core_mod 0x80f6f5ec sbc_dif_verify +EXPORT_SYMBOL drivers/target/target_core_mod 0x844f976d transport_backend_register +EXPORT_SYMBOL drivers/target/target_core_mod 0x848c592c transport_deregister_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x85aa880c transport_set_vpd_assoc +EXPORT_SYMBOL drivers/target/target_core_mod 0x860098d6 __transport_register_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x865520ee core_tpg_set_initiator_node_queue_depth +EXPORT_SYMBOL drivers/target/target_core_mod 0x884288fc transport_register_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x887c33e0 target_submit_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x8b6ce052 core_alua_check_nonop_delay +EXPORT_SYMBOL drivers/target/target_core_mod 0x8cebb3dd transport_generic_new_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x8d27e953 transport_lookup_cmd_lun +EXPORT_SYMBOL drivers/target/target_core_mod 0x8f510c33 transport_init_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x9b29afde transport_init_session_tags +EXPORT_SYMBOL drivers/target/target_core_mod 0x9e8f594d target_undepend_item +EXPORT_SYMBOL drivers/target/target_core_mod 0xa44ae57a transport_generic_handle_tmr +EXPORT_SYMBOL drivers/target/target_core_mod 0xade2608a transport_send_check_condition_and_sense +EXPORT_SYMBOL drivers/target/target_core_mod 0xaf9d904d target_complete_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xb8496f19 core_tpg_get_initiator_node_acl +EXPORT_SYMBOL drivers/target/target_core_mod 0xba9f525d transport_kmap_data_sg +EXPORT_SYMBOL drivers/target/target_core_mod 0xbd8f86ee target_complete_cmd_with_length +EXPORT_SYMBOL drivers/target/target_core_mod 0xbee3d262 target_register_template +EXPORT_SYMBOL drivers/target/target_core_mod 0xc3101d16 core_tpg_register +EXPORT_SYMBOL drivers/target/target_core_mod 0xc7f70a96 core_tpg_deregister +EXPORT_SYMBOL drivers/target/target_core_mod 0xd68877fa sbc_get_device_type +EXPORT_SYMBOL drivers/target/target_core_mod 0xd98d9605 core_tpg_check_initiator_node_acl +EXPORT_SYMBOL drivers/target/target_core_mod 0xdc72ea97 spc_parse_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0xe3f80b21 passthrough_attrib_attrs +EXPORT_SYMBOL drivers/target/target_core_mod 0xe9e7ff9b core_tmr_alloc_req +EXPORT_SYMBOL drivers/target/target_core_mod 0xeb195fdc target_backend_unregister +EXPORT_SYMBOL drivers/target/target_core_mod 0xeeb85daf target_depend_item +EXPORT_SYMBOL drivers/target/target_core_mod 0xf01621c7 transport_set_vpd_proto_id +EXPORT_SYMBOL drivers/target/target_core_mod 0xf22c7984 spc_emulate_inquiry_std +EXPORT_SYMBOL drivers/target/target_core_mod 0xf29cb30a transport_lookup_tmr_lun +EXPORT_SYMBOL drivers/target/target_core_mod 0xfa0330ec target_get_sess_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xfc1d9019 target_get_session +EXPORT_SYMBOL drivers/target/target_core_mod 0xff509bdb transport_deregister_session_configfs +EXPORT_SYMBOL drivers/thermal/int340x_thermal/acpi_thermal_rel 0x1887763e acpi_thermal_rel_misc_device_add +EXPORT_SYMBOL drivers/thermal/int340x_thermal/acpi_thermal_rel 0x5007fc2c acpi_parse_art +EXPORT_SYMBOL drivers/thermal/int340x_thermal/acpi_thermal_rel 0x86c998e6 acpi_thermal_rel_misc_device_remove +EXPORT_SYMBOL drivers/thermal/int340x_thermal/acpi_thermal_rel 0xdf707fab acpi_parse_trt +EXPORT_SYMBOL drivers/usb/class/cdc-wdm 0x00ae6504 usb_cdc_wdm_register +EXPORT_SYMBOL drivers/usb/gadget/function/usb_f_uvc 0x92e9ebac uvc_set_trace_param +EXPORT_SYMBOL drivers/usb/gadget/libcomposite 0x52444e9d usb_os_desc_prepare_interf_dir +EXPORT_SYMBOL drivers/usb/host/sl811-hcd 0x6d9b9b0d sl811h_driver +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x16775d2d usb_wwan_write_room +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x219b3951 usb_wwan_suspend +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x3fe767be usb_wwan_port_remove +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x40ff88c9 usb_wwan_tiocmset +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x5604a6d2 usb_wwan_resume +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x62d4dbe2 usb_wwan_write +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x7452cbfe usb_wwan_tiocmget +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xa1ef20bd usb_wwan_open +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xa9148881 usb_wwan_ioctl +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xbdcd3655 usb_wwan_close +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xf3578144 usb_wwan_chars_in_buffer +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xf7abe12c usb_wwan_dtr_rts +EXPORT_SYMBOL drivers/usb/serial/usbserial 0x6c46c7a3 usb_serial_suspend +EXPORT_SYMBOL drivers/usb/serial/usbserial 0xed4e069e usb_serial_resume +EXPORT_SYMBOL drivers/vhost/vringh 0x0fd987f7 vringh_abandon_user +EXPORT_SYMBOL drivers/vhost/vringh 0x14397bb5 vringh_notify_disable_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x2e91ca97 vringh_iov_pull_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x32da6f89 vringh_notify_enable_user +EXPORT_SYMBOL drivers/vhost/vringh 0x367ce26a vringh_iov_push_user +EXPORT_SYMBOL drivers/vhost/vringh 0x39c9d7a5 vringh_complete_multi_user +EXPORT_SYMBOL drivers/vhost/vringh 0x4f384f8b vringh_need_notify_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x58abf4ed vringh_init_user +EXPORT_SYMBOL drivers/vhost/vringh 0x59f824d9 vringh_getdesc_user +EXPORT_SYMBOL drivers/vhost/vringh 0x6432894b vringh_init_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x7bda5e6d vringh_iov_push_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x821e9390 vringh_iov_pull_user +EXPORT_SYMBOL drivers/vhost/vringh 0x8d080d03 vringh_need_notify_user +EXPORT_SYMBOL drivers/vhost/vringh 0x937e412c vringh_getdesc_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x95e62337 vringh_abandon_kern +EXPORT_SYMBOL drivers/vhost/vringh 0xb4b63575 vringh_notify_enable_kern +EXPORT_SYMBOL drivers/vhost/vringh 0xc578f0f7 vringh_complete_user +EXPORT_SYMBOL drivers/vhost/vringh 0xd355e031 vringh_complete_kern +EXPORT_SYMBOL drivers/vhost/vringh 0xd609393d vringh_notify_disable_user +EXPORT_SYMBOL drivers/video/backlight/lcd 0x2a8e4f1a lcd_device_register +EXPORT_SYMBOL drivers/video/backlight/lcd 0x738199e3 devm_lcd_device_unregister +EXPORT_SYMBOL drivers/video/backlight/lcd 0x9cc432ba lcd_device_unregister +EXPORT_SYMBOL drivers/video/backlight/lcd 0xcddcce97 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 0x36a8d430 svga_get_caps +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x45e88d9d svga_tilecursor +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x4ab38ef2 svga_set_default_crt_regs +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x6899d50b svga_tileblit +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x6e4adb1e svga_check_timings +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x702305e0 svga_tilefill +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x80f24d95 svga_wcrt_multi +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x8a12fa71 svga_settile +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x8de63fb4 svga_set_timings +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xa67d9818 svga_tilecopy +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xbbb561a5 svga_get_tilemax +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xd1429fca svga_wseq_multi +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xd22ca511 svga_set_default_atc_regs +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xe28d2a49 svga_set_default_gfx_regs +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xef774f5d svga_compute_pll +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xf2db5956 svga_match_format +EXPORT_SYMBOL drivers/video/fbdev/core/syscopyarea 0x565a978e sys_copyarea +EXPORT_SYMBOL drivers/video/fbdev/core/sysfillrect 0x2a1b8c11 sys_fillrect +EXPORT_SYMBOL drivers/video/fbdev/core/sysimgblt 0xfe00c2c2 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 0xb39f68d1 cyber2000fb_enable_extregs +EXPORT_SYMBOL drivers/video/fbdev/cyber2000fb 0xe6345223 cyber2000fb_attach +EXPORT_SYMBOL drivers/video/fbdev/macmodes 0x233917d1 mac_vmode_to_var +EXPORT_SYMBOL drivers/video/fbdev/macmodes 0x778219c3 mac_find_mode +EXPORT_SYMBOL drivers/video/fbdev/macmodes 0xe2304303 mac_map_monitor_sense +EXPORT_SYMBOL drivers/video/fbdev/matrox/g450_pll 0xa910b5cb g450_mnp2f +EXPORT_SYMBOL drivers/video/fbdev/matrox/g450_pll 0xb8c73bcd matroxfb_g450_setpll_cond +EXPORT_SYMBOL drivers/video/fbdev/matrox/g450_pll 0xea399eb3 matroxfb_g450_setclk +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_DAC1064 0x2e1e90b2 matrox_mystique +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_DAC1064 0x84c7fa3a DAC1064_global_restore +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_DAC1064 0xedca355d matrox_G100 +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_DAC1064 0xf66276b9 DAC1064_global_init +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_Ti3026 0x75205f21 matrox_millennium +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_accel 0x598f484b matrox_cfbX_init +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_base 0x11d33bf9 matroxfb_unregister_driver +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_base 0x42d4e7b8 matroxfb_register_driver +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_base 0xb9cb29af matroxfb_wait_for_sync +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_base 0xf2387e61 matroxfb_enable_irq +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_g450 0x9703b3e7 matroxfb_g450_shutdown +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_g450 0xee402e1c matroxfb_g450_connect +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0x25cf8049 matroxfb_PLL_calcclock +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0x331b9980 matroxfb_DAC_in +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0x82cc3e08 matroxfb_vgaHWinit +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0x97637310 matroxfb_DAC_out +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0xcdc90c64 matroxfb_var2my +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0xf4aefbd6 matroxfb_vgaHWrestore +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0xf7005764 matroxfb_read_pins +EXPORT_SYMBOL drivers/video/fbdev/mb862xx/mb862xxfb 0xaf18bbcc mb862xxfb_init_accel +EXPORT_SYMBOL drivers/video/fbdev/sis/sisfb 0x3037658e sis_malloc +EXPORT_SYMBOL drivers/video/fbdev/sis/sisfb 0x454a3cf0 sis_free +EXPORT_SYMBOL drivers/video/vgastate 0x686de290 restore_vga +EXPORT_SYMBOL drivers/video/vgastate 0xe7a2620e save_vga +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0x707e750a w1_ds2760_read +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0x7841ce7c w1_ds2760_recall_eeprom +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0xa13e6a4c w1_ds2760_write +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0xc352ef25 w1_ds2760_store_eeprom +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2780 0x4454ec4b w1_ds2780_io +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2780 0xa7fded79 w1_ds2780_eeprom_cmd +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2781 0x8226d678 w1_ds2781_eeprom_cmd +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2781 0xc100a50b w1_ds2781_io +EXPORT_SYMBOL drivers/w1/wire 0x22474f7e w1_register_family +EXPORT_SYMBOL drivers/w1/wire 0x9c8bf956 w1_unregister_family +EXPORT_SYMBOL drivers/w1/wire 0xe29eea02 w1_add_master_device +EXPORT_SYMBOL drivers/w1/wire 0xfb6536ec w1_remove_master_device +EXPORT_SYMBOL drivers/watchdog/iTCO_vendor_support 0x04e133fc iTCO_vendor_check_noreboot_on +EXPORT_SYMBOL drivers/watchdog/iTCO_vendor_support 0xa78bd894 iTCO_vendor_pre_set_heartbeat +EXPORT_SYMBOL drivers/watchdog/iTCO_vendor_support 0xb5f20875 iTCO_vendor_pre_keepalive +EXPORT_SYMBOL drivers/watchdog/iTCO_vendor_support 0xc4f657bf iTCO_vendor_pre_stop +EXPORT_SYMBOL drivers/watchdog/iTCO_vendor_support 0xdc6effc9 iTCO_vendor_pre_start +EXPORT_SYMBOL fs/configfs/configfs 0x1d18a611 config_item_set_name +EXPORT_SYMBOL fs/configfs/configfs 0x457c541c configfs_undepend_item +EXPORT_SYMBOL fs/configfs/configfs 0x5b0d0d18 config_item_get +EXPORT_SYMBOL fs/configfs/configfs 0x7091756e config_group_init +EXPORT_SYMBOL fs/configfs/configfs 0x78710868 config_item_put +EXPORT_SYMBOL fs/configfs/configfs 0xa4af7e3d configfs_depend_item +EXPORT_SYMBOL fs/configfs/configfs 0xcf1584bc config_group_find_item +EXPORT_SYMBOL fs/configfs/configfs 0xd4f75fd6 config_group_init_type_name +EXPORT_SYMBOL fs/configfs/configfs 0xe495083a configfs_unregister_subsystem +EXPORT_SYMBOL fs/configfs/configfs 0xef1724eb config_item_init_type_name +EXPORT_SYMBOL fs/configfs/configfs 0xfebbb36d configfs_register_subsystem +EXPORT_SYMBOL fs/exofs/libore 0x28806871 ore_verify_layout +EXPORT_SYMBOL fs/exofs/libore 0x2ada4053 ore_put_io_state +EXPORT_SYMBOL fs/exofs/libore 0x4527e170 ore_calc_stripe_info +EXPORT_SYMBOL fs/exofs/libore 0x458b8a71 ore_remove +EXPORT_SYMBOL fs/exofs/libore 0x62a2c6cc ore_truncate +EXPORT_SYMBOL fs/exofs/libore 0x669e46af ore_check_io +EXPORT_SYMBOL fs/exofs/libore 0x6822e14e ore_get_rw_state +EXPORT_SYMBOL fs/exofs/libore 0x7c8592b1 ore_get_io_state +EXPORT_SYMBOL fs/exofs/libore 0xa3d2a634 g_attr_logical_length +EXPORT_SYMBOL fs/exofs/libore 0xaad40ee1 extract_attr_from_ios +EXPORT_SYMBOL fs/exofs/libore 0xc496dd4a ore_write +EXPORT_SYMBOL fs/exofs/libore 0xd87bc2e4 ore_create +EXPORT_SYMBOL fs/exofs/libore 0xec3d4969 ore_read +EXPORT_SYMBOL fs/fscache/fscache 0x1bbe08fa __fscache_readpages_cancel +EXPORT_SYMBOL fs/fscache/fscache 0x1bebff3f fscache_withdraw_cache +EXPORT_SYMBOL fs/fscache/fscache 0x238de109 fscache_object_destroy +EXPORT_SYMBOL fs/fscache/fscache 0x2ce85f00 __fscache_disable_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x2e60b0f2 __fscache_write_page +EXPORT_SYMBOL fs/fscache/fscache 0x2e9cb5ec fscache_op_complete +EXPORT_SYMBOL fs/fscache/fscache 0x2fedd927 __fscache_wait_on_invalidate +EXPORT_SYMBOL fs/fscache/fscache 0x3520f136 __fscache_relinquish_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x35b7519c fscache_object_lookup_negative +EXPORT_SYMBOL fs/fscache/fscache 0x41dc640e fscache_check_aux +EXPORT_SYMBOL fs/fscache/fscache 0x47536166 fscache_enqueue_operation +EXPORT_SYMBOL fs/fscache/fscache 0x4fa0eba0 fscache_obtained_object +EXPORT_SYMBOL fs/fscache/fscache 0x661ba38c fscache_object_mark_killed +EXPORT_SYMBOL fs/fscache/fscache 0x6dffc749 __fscache_update_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x720d7190 fscache_io_error +EXPORT_SYMBOL fs/fscache/fscache 0x74530ecd fscache_op_debug_id +EXPORT_SYMBOL fs/fscache/fscache 0x790d4d27 __fscache_acquire_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x794a907b __fscache_attr_changed +EXPORT_SYMBOL fs/fscache/fscache 0x7bf3fc15 __fscache_register_netfs +EXPORT_SYMBOL fs/fscache/fscache 0x7e1e48a6 __fscache_check_page_write +EXPORT_SYMBOL fs/fscache/fscache 0x82997575 fscache_operation_init +EXPORT_SYMBOL fs/fscache/fscache 0x8540384d __fscache_wait_on_page_write +EXPORT_SYMBOL fs/fscache/fscache 0x8b428b64 __fscache_maybe_release_page +EXPORT_SYMBOL fs/fscache/fscache 0x97907cf7 __fscache_invalidate +EXPORT_SYMBOL fs/fscache/fscache 0x9b048ab8 fscache_mark_page_cached +EXPORT_SYMBOL fs/fscache/fscache 0x9bdf323e fscache_cache_cleared_wq +EXPORT_SYMBOL fs/fscache/fscache 0x9ff6d85c __fscache_unregister_netfs +EXPORT_SYMBOL fs/fscache/fscache 0xa3b74a1f fscache_init_cache +EXPORT_SYMBOL fs/fscache/fscache 0xb48069a0 fscache_mark_pages_cached +EXPORT_SYMBOL fs/fscache/fscache 0xca6ccf2f __fscache_alloc_page +EXPORT_SYMBOL fs/fscache/fscache 0xcc6c4912 __fscache_uncache_page +EXPORT_SYMBOL fs/fscache/fscache 0xcd1c9f15 __fscache_check_consistency +EXPORT_SYMBOL fs/fscache/fscache 0xcddfdbec __fscache_read_or_alloc_page +EXPORT_SYMBOL fs/fscache/fscache 0xd5b33849 fscache_add_cache +EXPORT_SYMBOL fs/fscache/fscache 0xdfa10191 __fscache_enable_cookie +EXPORT_SYMBOL fs/fscache/fscache 0xe005f904 fscache_put_operation +EXPORT_SYMBOL fs/fscache/fscache 0xe11431c3 __fscache_read_or_alloc_pages +EXPORT_SYMBOL fs/fscache/fscache 0xea43effa fscache_object_init +EXPORT_SYMBOL fs/fscache/fscache 0xecbd6acf fscache_fsdef_index +EXPORT_SYMBOL fs/fscache/fscache 0xee9170d8 fscache_object_retrying_stale +EXPORT_SYMBOL fs/fscache/fscache 0xf275c7f1 __fscache_uncache_all_inode_pages +EXPORT_SYMBOL fs/ocfs2/cluster/ocfs2_nodemanager 0xbfd7d7a2 o2hb_global_heartbeat_active +EXPORT_SYMBOL fs/quota/quota_tree 0x056b4268 qtree_write_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0x6248811b qtree_read_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0xb63db56e qtree_entry_unused +EXPORT_SYMBOL fs/quota/quota_tree 0xc01bafba qtree_release_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0xf7a848d3 qtree_delete_dquot +EXPORT_SYMBOL lib/cordic 0x434bfd07 cordic_calc_iq +EXPORT_SYMBOL lib/crc-ccitt 0x3771b461 crc_ccitt +EXPORT_SYMBOL lib/crc-ccitt 0x75811312 crc_ccitt_table +EXPORT_SYMBOL lib/crc-itu-t 0xd29b009f crc_itu_t_table +EXPORT_SYMBOL lib/crc-itu-t 0xf5b4a948 crc_itu_t +EXPORT_SYMBOL lib/crc7 0x66213969 crc7_be +EXPORT_SYMBOL lib/crc7 0x7a222007 crc7_be_syndrome_table +EXPORT_SYMBOL lib/crc8 0x41248eaf crc8 +EXPORT_SYMBOL lib/crc8 0xab9ad613 crc8_populate_lsb +EXPORT_SYMBOL lib/crc8 0xd4534d80 crc8_populate_msb +EXPORT_SYMBOL lib/libcrc32c 0x27000b29 crc32c +EXPORT_SYMBOL lib/lru_cache 0x03f599c7 lc_get_cumulative +EXPORT_SYMBOL lib/lru_cache 0x4feade4b lc_create +EXPORT_SYMBOL lib/lru_cache 0x56930467 lc_seq_printf_stats +EXPORT_SYMBOL lib/lru_cache 0x56fc3ea0 lc_put +EXPORT_SYMBOL lib/lru_cache 0x619ed575 lc_try_get +EXPORT_SYMBOL lib/lru_cache 0x6a059eb3 lc_seq_dump_details +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/lz4_compress 0xcbc5d521 lz4_compress +EXPORT_SYMBOL lib/lz4/lz4hc_compress 0x26c3aa22 lz4hc_compress +EXPORT_SYMBOL lib/raid6/raid6_pq 0x0bd662f6 raid6_gfmul +EXPORT_SYMBOL lib/raid6/raid6_pq 0x15fe0cd3 raid6_gfexp +EXPORT_SYMBOL lib/raid6/raid6_pq 0x5ba93f9d raid6_gfinv +EXPORT_SYMBOL lib/raid6/raid6_pq 0xb0d904b7 raid6_empty_zero_page +EXPORT_SYMBOL lib/raid6/raid6_pq 0xce45a6f1 raid6_gfexi +EXPORT_SYMBOL lib/raid6/raid6_pq 0xd9e91f83 raid6_vgfmul +EXPORT_SYMBOL net/6lowpan/6lowpan 0x0e2a5d6f lowpan_nhc_add +EXPORT_SYMBOL net/6lowpan/6lowpan 0x755ba2d8 lowpan_nhc_del +EXPORT_SYMBOL net/802/p8022 0x64883d0c register_8022_client +EXPORT_SYMBOL net/802/p8022 0xb8a5e9f1 unregister_8022_client +EXPORT_SYMBOL net/802/p8023 0x767b4656 make_8023_client +EXPORT_SYMBOL net/802/p8023 0xfdfe8d41 destroy_8023_client +EXPORT_SYMBOL net/802/psnap 0x0ef4c575 unregister_snap_client +EXPORT_SYMBOL net/802/psnap 0xc234cb0c register_snap_client +EXPORT_SYMBOL net/9p/9pnet 0x02e3dc64 v9fs_register_trans +EXPORT_SYMBOL net/9p/9pnet 0x062a850d p9_client_walk +EXPORT_SYMBOL net/9p/9pnet 0x095cdcd4 p9_client_symlink +EXPORT_SYMBOL net/9p/9pnet 0x1275d4fe p9_client_setattr +EXPORT_SYMBOL net/9p/9pnet 0x1328eaef p9_is_proto_dotu +EXPORT_SYMBOL net/9p/9pnet 0x145ef820 v9fs_unregister_trans +EXPORT_SYMBOL net/9p/9pnet 0x1a37c7e9 p9_parse_header +EXPORT_SYMBOL net/9p/9pnet 0x1f5d73fe p9_client_open +EXPORT_SYMBOL net/9p/9pnet 0x1f7c7f2a p9_client_getlock_dotl +EXPORT_SYMBOL net/9p/9pnet 0x218a3ce8 p9_client_statfs +EXPORT_SYMBOL net/9p/9pnet 0x2427fb81 v9fs_get_default_trans +EXPORT_SYMBOL net/9p/9pnet 0x28c76532 p9_is_proto_dotl +EXPORT_SYMBOL net/9p/9pnet 0x3077df21 p9_client_disconnect +EXPORT_SYMBOL net/9p/9pnet 0x35d1e27e p9_idpool_get +EXPORT_SYMBOL net/9p/9pnet 0x3d73a797 p9_errstr2errno +EXPORT_SYMBOL net/9p/9pnet 0x41fe299c p9_client_mkdir_dotl +EXPORT_SYMBOL net/9p/9pnet 0x44d2c2c0 p9stat_free +EXPORT_SYMBOL net/9p/9pnet 0x4f3edeb1 p9_client_write +EXPORT_SYMBOL net/9p/9pnet 0x50a9953b p9_client_link +EXPORT_SYMBOL net/9p/9pnet 0x52ef67e5 p9_client_begin_disconnect +EXPORT_SYMBOL net/9p/9pnet 0x5553fd0e p9_client_create +EXPORT_SYMBOL net/9p/9pnet 0x5c6a9e98 p9_client_attach +EXPORT_SYMBOL net/9p/9pnet 0x5ea3fa63 v9fs_get_trans_by_name +EXPORT_SYMBOL net/9p/9pnet 0x640e710b p9_client_lock_dotl +EXPORT_SYMBOL net/9p/9pnet 0x69bfa02c p9_client_clunk +EXPORT_SYMBOL net/9p/9pnet 0x6cb375ea p9dirent_read +EXPORT_SYMBOL net/9p/9pnet 0x7ffce76d p9_client_readlink +EXPORT_SYMBOL net/9p/9pnet 0x8861c659 p9_client_wstat +EXPORT_SYMBOL net/9p/9pnet 0x90b37f56 p9_client_create_dotl +EXPORT_SYMBOL net/9p/9pnet 0x94242fa5 p9_client_read +EXPORT_SYMBOL net/9p/9pnet 0xa445f3a8 p9_client_stat +EXPORT_SYMBOL net/9p/9pnet 0xaa9245ae p9stat_read +EXPORT_SYMBOL net/9p/9pnet 0xad85ae46 p9_client_unlinkat +EXPORT_SYMBOL net/9p/9pnet 0xb04a781e p9_client_readdir +EXPORT_SYMBOL net/9p/9pnet 0xb0cf8e62 p9_client_renameat +EXPORT_SYMBOL net/9p/9pnet 0xbc4e0c49 p9_client_fsync +EXPORT_SYMBOL net/9p/9pnet 0xbcc08742 p9_client_remove +EXPORT_SYMBOL net/9p/9pnet 0xc5a7bef2 p9_client_rename +EXPORT_SYMBOL net/9p/9pnet 0xc5db54a9 p9_idpool_destroy +EXPORT_SYMBOL net/9p/9pnet 0xced63799 p9_client_mknod_dotl +EXPORT_SYMBOL net/9p/9pnet 0xd0d6fa52 p9_client_getattr_dotl +EXPORT_SYMBOL net/9p/9pnet 0xd55d23a2 p9_client_cb +EXPORT_SYMBOL net/9p/9pnet 0xdc8ec0ad p9_tag_lookup +EXPORT_SYMBOL net/9p/9pnet 0xe49ff096 p9_release_pages +EXPORT_SYMBOL net/9p/9pnet 0xe58a3360 p9_error_init +EXPORT_SYMBOL net/9p/9pnet 0xf2cb358f p9_client_destroy +EXPORT_SYMBOL net/9p/9pnet 0xf2e0801b p9_client_fcreate +EXPORT_SYMBOL net/9p/9pnet 0xf4a111d8 p9_idpool_create +EXPORT_SYMBOL net/9p/9pnet 0xf84f2022 p9_idpool_put +EXPORT_SYMBOL net/9p/9pnet 0xfd40c79d p9_idpool_check +EXPORT_SYMBOL net/appletalk/appletalk 0x1afe07d2 atalk_find_dev_addr +EXPORT_SYMBOL net/appletalk/appletalk 0x2345508f aarp_send_ddp +EXPORT_SYMBOL net/appletalk/appletalk 0x46c59e80 atrtr_get_dev +EXPORT_SYMBOL net/appletalk/appletalk 0xceb2bc69 alloc_ltalkdev +EXPORT_SYMBOL net/atm/atm 0x003bac0c atm_dev_lookup +EXPORT_SYMBOL net/atm/atm 0x07a107a1 atm_charge +EXPORT_SYMBOL net/atm/atm 0x1bfbb10f vcc_sklist_lock +EXPORT_SYMBOL net/atm/atm 0x2cc2d52d vcc_hash +EXPORT_SYMBOL net/atm/atm 0x4443d399 atm_proc_root +EXPORT_SYMBOL net/atm/atm 0x597068a3 atm_alloc_charge +EXPORT_SYMBOL net/atm/atm 0x7784eae2 vcc_process_recv_queue +EXPORT_SYMBOL net/atm/atm 0x9224efb8 atm_dev_signal_change +EXPORT_SYMBOL net/atm/atm 0x99a71aab atm_dev_register +EXPORT_SYMBOL net/atm/atm 0x9feaf287 sonet_subtract_stats +EXPORT_SYMBOL net/atm/atm 0xa1779b3f register_atm_ioctl +EXPORT_SYMBOL net/atm/atm 0xa3be8c8b atm_dev_release_vccs +EXPORT_SYMBOL net/atm/atm 0xaa024146 sonet_copy_stats +EXPORT_SYMBOL net/atm/atm 0xc8af98bc deregister_atm_ioctl +EXPORT_SYMBOL net/atm/atm 0xd04c67f4 vcc_release_async +EXPORT_SYMBOL net/atm/atm 0xd9aab4ba vcc_insert_socket +EXPORT_SYMBOL net/atm/atm 0xea086212 atm_dev_deregister +EXPORT_SYMBOL net/atm/atm 0xf49bc67a atm_pcr_goal +EXPORT_SYMBOL net/atm/atm 0xff06b37c atm_init_aal5 +EXPORT_SYMBOL net/ax25/ax25 0x1b9c26a6 ax25_header_ops +EXPORT_SYMBOL net/ax25/ax25 0x242852b9 ax25_uid_policy +EXPORT_SYMBOL net/ax25/ax25 0x2d2f3dce ax25_send_frame +EXPORT_SYMBOL net/ax25/ax25 0x3afee63e ax25_findbyuid +EXPORT_SYMBOL net/ax25/ax25 0x4502c65a asc2ax +EXPORT_SYMBOL net/ax25/ax25 0x5134e7b5 ax25_linkfail_register +EXPORT_SYMBOL net/ax25/ax25 0x53dea1ff ax2asc +EXPORT_SYMBOL net/ax25/ax25 0x5acc1015 ax25_find_cb +EXPORT_SYMBOL net/ax25/ax25 0x8592a99a ax25_ip_xmit +EXPORT_SYMBOL net/ax25/ax25 0x8a41d385 ax25_linkfail_release +EXPORT_SYMBOL net/ax25/ax25 0x8ede9e26 ax25_protocol_release +EXPORT_SYMBOL net/ax25/ax25 0xa7f3015b ax25_display_timer +EXPORT_SYMBOL net/ax25/ax25 0xb5750ce0 ax25_listen_register +EXPORT_SYMBOL net/ax25/ax25 0xc1444946 ax25cmp +EXPORT_SYMBOL net/ax25/ax25 0xd43ecbf1 null_ax25_address +EXPORT_SYMBOL net/ax25/ax25 0xf92b6d4c ax25_listen_release +EXPORT_SYMBOL net/bluetooth/bluetooth 0x0154a26b hci_mgmt_chan_register +EXPORT_SYMBOL net/bluetooth/bluetooth 0x046bd92a hci_register_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x0de2a783 l2cap_unregister_user +EXPORT_SYMBOL net/bluetooth/bluetooth 0x0e8d1db5 hci_get_route +EXPORT_SYMBOL net/bluetooth/bluetooth 0x22baeca5 hci_suspend_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x3112f825 bt_sock_poll +EXPORT_SYMBOL net/bluetooth/bluetooth 0x370cc749 hci_unregister_cb +EXPORT_SYMBOL net/bluetooth/bluetooth 0x3a1a210f bt_sock_wait_ready +EXPORT_SYMBOL net/bluetooth/bluetooth 0x47022514 bt_err +EXPORT_SYMBOL net/bluetooth/bluetooth 0x5f02a5ee bt_procfs_cleanup +EXPORT_SYMBOL net/bluetooth/bluetooth 0x5f0bffe1 bt_sock_ioctl +EXPORT_SYMBOL net/bluetooth/bluetooth 0x615b84ef l2cap_is_socket +EXPORT_SYMBOL net/bluetooth/bluetooth 0x6330f2e4 bt_sock_link +EXPORT_SYMBOL net/bluetooth/bluetooth 0x64b5783b bt_procfs_init +EXPORT_SYMBOL net/bluetooth/bluetooth 0x68c78bda bt_sock_register +EXPORT_SYMBOL net/bluetooth/bluetooth 0x6ab2d3b9 l2cap_conn_put +EXPORT_SYMBOL net/bluetooth/bluetooth 0x73919762 hci_register_cb +EXPORT_SYMBOL net/bluetooth/bluetooth 0x74dc50a0 bt_sock_reclassify_lock +EXPORT_SYMBOL net/bluetooth/bluetooth 0x830fbee0 bt_accept_enqueue +EXPORT_SYMBOL net/bluetooth/bluetooth 0x87457d82 hci_recv_frame +EXPORT_SYMBOL net/bluetooth/bluetooth 0x8fea24bd bt_sock_unregister +EXPORT_SYMBOL net/bluetooth/bluetooth 0x91c9a325 bt_to_errno +EXPORT_SYMBOL net/bluetooth/bluetooth 0xa0a9091a hci_mgmt_chan_unregister +EXPORT_SYMBOL net/bluetooth/bluetooth 0xa0d28c67 l2cap_register_user +EXPORT_SYMBOL net/bluetooth/bluetooth 0xa399bfd0 bt_accept_dequeue +EXPORT_SYMBOL net/bluetooth/bluetooth 0xa64f3844 __hci_cmd_sync_ev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xa68a6c6b bt_accept_unlink +EXPORT_SYMBOL net/bluetooth/bluetooth 0xa8a3ac27 hci_free_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xae88095b bt_sock_wait_state +EXPORT_SYMBOL net/bluetooth/bluetooth 0xc1fd55c2 hci_conn_check_secure +EXPORT_SYMBOL net/bluetooth/bluetooth 0xc2d42255 hci_conn_switch_role +EXPORT_SYMBOL net/bluetooth/bluetooth 0xcc1fb551 baswap +EXPORT_SYMBOL net/bluetooth/bluetooth 0xd7442057 bt_info +EXPORT_SYMBOL net/bluetooth/bluetooth 0xd7e2c5e6 hci_conn_security +EXPORT_SYMBOL net/bluetooth/bluetooth 0xe5847961 l2cap_conn_get +EXPORT_SYMBOL net/bluetooth/bluetooth 0xe5c8ece2 hci_resume_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xe72e2b59 hci_unregister_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xe747a750 hci_reset_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xe7ae4027 __hci_cmd_sync +EXPORT_SYMBOL net/bluetooth/bluetooth 0xe98b7a2d hci_alloc_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xeb23ab8f bt_sock_recvmsg +EXPORT_SYMBOL net/bluetooth/bluetooth 0xfa67d9db l2cap_chan_close +EXPORT_SYMBOL net/bluetooth/bluetooth 0xfc4766bd bt_sock_unlink +EXPORT_SYMBOL net/bluetooth/bluetooth 0xfea420f0 bt_sock_stream_recvmsg +EXPORT_SYMBOL net/bridge/bridge 0xfb38ca04 br_should_route_hook +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0x30c554be ebt_do_table +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0x7d56a5a3 ebt_unregister_table +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0xf2baa1c1 ebt_register_table +EXPORT_SYMBOL net/caif/caif 0x1446b60a caif_client_register_refcnt +EXPORT_SYMBOL net/caif/caif 0x163886be cfcnfg_add_phy_layer +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 0x4a237e57 cfpkt_tonative +EXPORT_SYMBOL net/caif/caif 0x6093123d get_cfcnfg +EXPORT_SYMBOL net/caif/caif 0x672660ce caif_enroll_dev +EXPORT_SYMBOL net/caif/caif 0x6a44fc70 cfpkt_extr_head +EXPORT_SYMBOL net/caif/caif 0x7e961288 caif_disconnect_client +EXPORT_SYMBOL net/caif/caif 0x839ddb7b cfcnfg_set_phy_state +EXPORT_SYMBOL net/caif/caif 0x966d7de2 cfpkt_add_head +EXPORT_SYMBOL net/caif/caif 0x9e3e305d cfpkt_set_prio +EXPORT_SYMBOL net/caif/caif 0xb7b6874e caif_free_client +EXPORT_SYMBOL net/caif/caif 0xc084d1e3 caif_connect_client +EXPORT_SYMBOL net/can/can 0x0808cb8f can_proto_unregister +EXPORT_SYMBOL net/can/can 0x0f958fc5 can_rx_register +EXPORT_SYMBOL net/can/can 0x181db262 can_rx_unregister +EXPORT_SYMBOL net/can/can 0x451bdaa4 can_send +EXPORT_SYMBOL net/can/can 0x5c9ba9d0 can_ioctl +EXPORT_SYMBOL net/can/can 0x753681c1 can_proto_register +EXPORT_SYMBOL net/ceph/libceph 0x007dc6a3 ceph_auth_is_authenticated +EXPORT_SYMBOL net/ceph/libceph 0x055dbebf osd_req_op_extent_osd_data_pagelist +EXPORT_SYMBOL net/ceph/libceph 0x09290ab3 ceph_debugfs_init +EXPORT_SYMBOL net/ceph/libceph 0x09b4fff6 ceph_osdc_alloc_request +EXPORT_SYMBOL net/ceph/libceph 0x0d7332e2 ceph_calc_pg_primary +EXPORT_SYMBOL net/ceph/libceph 0x0dbe67ef ceph_monc_stop +EXPORT_SYMBOL net/ceph/libceph 0x0e097478 ceph_get_direct_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x0f892e58 ceph_check_fsid +EXPORT_SYMBOL net/ceph/libceph 0x1399f260 ceph_monc_open_session +EXPORT_SYMBOL net/ceph/libceph 0x16a78622 ceph_osdc_set_request_linger +EXPORT_SYMBOL net/ceph/libceph 0x17203064 osd_req_op_cls_init +EXPORT_SYMBOL net/ceph/libceph 0x20ba7de4 ceph_copy_user_to_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x20d151cb ceph_osdc_setup +EXPORT_SYMBOL net/ceph/libceph 0x23842516 ceph_msg_get +EXPORT_SYMBOL net/ceph/libceph 0x24a3b155 ceph_osdc_new_request +EXPORT_SYMBOL net/ceph/libceph 0x24f465cf osd_req_op_alloc_hint_init +EXPORT_SYMBOL net/ceph/libceph 0x25d37349 osd_req_op_extent_osd_data_pages +EXPORT_SYMBOL net/ceph/libceph 0x29dcd316 ceph_msg_new +EXPORT_SYMBOL net/ceph/libceph 0x2db717f3 ceph_destroy_options +EXPORT_SYMBOL net/ceph/libceph 0x30442838 ceph_msg_data_add_pagelist +EXPORT_SYMBOL net/ceph/libceph 0x31fa7181 ceph_monc_do_statfs +EXPORT_SYMBOL net/ceph/libceph 0x321a1ded ceph_auth_verify_authorizer_reply +EXPORT_SYMBOL net/ceph/libceph 0x36974910 ceph_monc_validate_auth +EXPORT_SYMBOL net/ceph/libceph 0x38237735 ceph_con_init +EXPORT_SYMBOL net/ceph/libceph 0x382c9db7 osd_req_op_extent_init +EXPORT_SYMBOL net/ceph/libceph 0x3abec91f ceph_pr_addr +EXPORT_SYMBOL net/ceph/libceph 0x3bf43568 ceph_messenger_init +EXPORT_SYMBOL net/ceph/libceph 0x3d79fb80 ceph_open_session +EXPORT_SYMBOL net/ceph/libceph 0x3dde0858 ceph_copy_from_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x3f688151 ceph_put_snap_context +EXPORT_SYMBOL net/ceph/libceph 0x43e458f6 ceph_file_part +EXPORT_SYMBOL net/ceph/libceph 0x43efd647 ceph_calc_file_object_mapping +EXPORT_SYMBOL net/ceph/libceph 0x44ac330d osd_req_op_watch_init +EXPORT_SYMBOL net/ceph/libceph 0x466b85b8 libceph_compatible +EXPORT_SYMBOL net/ceph/libceph 0x47a9920e ceph_pagelist_release +EXPORT_SYMBOL net/ceph/libceph 0x4b2fc86f ceph_osdc_put_request +EXPORT_SYMBOL net/ceph/libceph 0x51d59c28 ceph_put_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x5379cea3 ceph_caps_for_mode +EXPORT_SYMBOL net/ceph/libceph 0x57baf885 ceph_str_hash +EXPORT_SYMBOL net/ceph/libceph 0x5b19f578 ceph_osdc_start_request +EXPORT_SYMBOL net/ceph/libceph 0x5be65023 ceph_pg_poolid_by_name +EXPORT_SYMBOL net/ceph/libceph 0x5f0bbd4a ceph_osdc_build_request +EXPORT_SYMBOL net/ceph/libceph 0x63758856 ceph_str_hash_name +EXPORT_SYMBOL net/ceph/libceph 0x68d8426a ceph_client_id +EXPORT_SYMBOL net/ceph/libceph 0x6982fdb5 ceph_auth_destroy_authorizer +EXPORT_SYMBOL net/ceph/libceph 0x69f9e9e2 osd_req_op_extent_osd_data +EXPORT_SYMBOL net/ceph/libceph 0x6b2e3bcd ceph_get_snap_context +EXPORT_SYMBOL net/ceph/libceph 0x71a8b44c ceph_osdc_wait_request +EXPORT_SYMBOL net/ceph/libceph 0x72283b4a ceph_con_open +EXPORT_SYMBOL net/ceph/libceph 0x73031884 ceph_msg_data_add_pages +EXPORT_SYMBOL net/ceph/libceph 0x7986dba2 osd_req_op_init +EXPORT_SYMBOL net/ceph/libceph 0x79c8f601 ceph_monc_request_next_osdmap +EXPORT_SYMBOL net/ceph/libceph 0x7a293c87 ceph_osdc_get_request +EXPORT_SYMBOL net/ceph/libceph 0x7b879395 ceph_con_send +EXPORT_SYMBOL net/ceph/libceph 0x7c3010ab ceph_osdc_writepages +EXPORT_SYMBOL net/ceph/libceph 0x7c3e9d1e osd_req_op_cls_response_data_pages +EXPORT_SYMBOL net/ceph/libceph 0x8f013bdc ceph_osdc_cancel_request +EXPORT_SYMBOL net/ceph/libceph 0x8ffe5361 osd_req_op_raw_data_in_pages +EXPORT_SYMBOL net/ceph/libceph 0x99e36571 ceph_osdc_cleanup +EXPORT_SYMBOL net/ceph/libceph 0x9d1025e8 ceph_copy_to_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x9f534f4d ceph_buffer_release +EXPORT_SYMBOL net/ceph/libceph 0xa0314744 osd_req_op_cls_request_data_pages +EXPORT_SYMBOL net/ceph/libceph 0xa07105a6 ceph_auth_invalidate_authorizer +EXPORT_SYMBOL net/ceph/libceph 0xa17bb8da ceph_msg_dump +EXPORT_SYMBOL net/ceph/libceph 0xa1ebde8f ceph_pagelist_truncate +EXPORT_SYMBOL net/ceph/libceph 0xa43301ea ceph_release_page_vector +EXPORT_SYMBOL net/ceph/libceph 0xa5c1e031 ceph_alloc_page_vector +EXPORT_SYMBOL net/ceph/libceph 0xa647fb6d ceph_compare_options +EXPORT_SYMBOL net/ceph/libceph 0xa77a0cf4 osd_req_op_cls_request_data_pagelist +EXPORT_SYMBOL net/ceph/libceph 0xa7b818fd osd_req_op_extent_update +EXPORT_SYMBOL net/ceph/libceph 0xa80a57c1 ceph_osdc_flush_notifies +EXPORT_SYMBOL net/ceph/libceph 0xa9bf917f ceph_monc_got_mdsmap +EXPORT_SYMBOL net/ceph/libceph 0xae3515ba ceph_create_snap_context +EXPORT_SYMBOL net/ceph/libceph 0xaf9c693f ceph_osdc_sync +EXPORT_SYMBOL net/ceph/libceph 0xafb8a407 ceph_msgr_flush +EXPORT_SYMBOL net/ceph/libceph 0xb19dc152 ceph_pagelist_reserve +EXPORT_SYMBOL net/ceph/libceph 0xb39308fb ceph_msg_put +EXPORT_SYMBOL net/ceph/libceph 0xb4092ec1 ceph_messenger_fini +EXPORT_SYMBOL net/ceph/libceph 0xb51c6d85 ceph_con_close +EXPORT_SYMBOL net/ceph/libceph 0xb54676fa ceph_msg_type_name +EXPORT_SYMBOL net/ceph/libceph 0xb6081d6d ceph_msgr_exit +EXPORT_SYMBOL net/ceph/libceph 0xb7bf9eb2 ceph_osdc_create_event +EXPORT_SYMBOL net/ceph/libceph 0xb829c361 ceph_monc_wait_osdmap +EXPORT_SYMBOL net/ceph/libceph 0xbbcbb015 ceph_msg_data_add_bio +EXPORT_SYMBOL net/ceph/libceph 0xbf19d62e ceph_destroy_client +EXPORT_SYMBOL net/ceph/libceph 0xc4a80955 ceph_debugfs_cleanup +EXPORT_SYMBOL net/ceph/libceph 0xc6bd975f osd_req_op_cls_response_data +EXPORT_SYMBOL net/ceph/libceph 0xc9f82b38 ceph_msgr_init +EXPORT_SYMBOL net/ceph/libceph 0xcb50a624 ceph_parse_ips +EXPORT_SYMBOL net/ceph/libceph 0xcea48b80 ceph_osdc_cancel_event +EXPORT_SYMBOL net/ceph/libceph 0xd2c107bb ceph_flags_to_mode +EXPORT_SYMBOL net/ceph/libceph 0xd31fb1be ceph_osdc_put_event +EXPORT_SYMBOL net/ceph/libceph 0xd330f7ac ceph_auth_create_authorizer +EXPORT_SYMBOL net/ceph/libceph 0xd3572813 osd_req_op_xattr_init +EXPORT_SYMBOL net/ceph/libceph 0xd5383217 ceph_pagelist_set_cursor +EXPORT_SYMBOL net/ceph/libceph 0xd813625e ceph_pagelist_append +EXPORT_SYMBOL net/ceph/libceph 0xdd8e7550 ceph_parse_options +EXPORT_SYMBOL net/ceph/libceph 0xde0eb6ba ceph_pagelist_free_reserve +EXPORT_SYMBOL net/ceph/libceph 0xde20be38 osd_req_op_extent_osd_data_bio +EXPORT_SYMBOL net/ceph/libceph 0xe384b42f ceph_osdc_readpages +EXPORT_SYMBOL net/ceph/libceph 0xe55d9bcd ceph_buffer_new +EXPORT_SYMBOL net/ceph/libceph 0xe5b6e459 ceph_con_keepalive +EXPORT_SYMBOL net/ceph/libceph 0xeb7975e7 ceph_monc_do_get_version +EXPORT_SYMBOL net/ceph/libceph 0xec8a6bb9 ceph_auth_update_authorizer +EXPORT_SYMBOL net/ceph/libceph 0xeeabc1c6 ceph_print_client_options +EXPORT_SYMBOL net/ceph/libceph 0xf1321dd3 ceph_oloc_oid_to_pg +EXPORT_SYMBOL net/ceph/libceph 0xf8d70d4e __ceph_open_session +EXPORT_SYMBOL net/ceph/libceph 0xf9ca6718 ceph_monc_init +EXPORT_SYMBOL net/ceph/libceph 0xfa2e5939 ceph_zero_page_vector_range +EXPORT_SYMBOL net/ceph/libceph 0xfa415931 ceph_pg_pool_name_by_id +EXPORT_SYMBOL net/ceph/libceph 0xfd6e4628 ceph_create_client +EXPORT_SYMBOL net/dccp/dccp_ipv4 0x21778426 dccp_req_err +EXPORT_SYMBOL net/dccp/dccp_ipv4 0x8051ed0b dccp_syn_ack_timeout +EXPORT_SYMBOL net/ieee802154/6lowpan/ieee802154_6lowpan 0xfb0ab8e7 lowpan_frag_rcv +EXPORT_SYMBOL net/ieee802154/ieee802154 0x32c2276f wpan_phy_new +EXPORT_SYMBOL net/ieee802154/ieee802154 0x49175a5d wpan_phy_free +EXPORT_SYMBOL net/ieee802154/ieee802154 0x660c4268 wpan_phy_register +EXPORT_SYMBOL net/ieee802154/ieee802154 0x94ff109a wpan_phy_find +EXPORT_SYMBOL net/ieee802154/ieee802154 0xdfdf0471 wpan_phy_for_each +EXPORT_SYMBOL net/ieee802154/ieee802154 0xff793545 wpan_phy_unregister +EXPORT_SYMBOL net/ipv4/fou 0x270db268 gue_build_header +EXPORT_SYMBOL net/ipv4/fou 0x3798535d fou_build_header +EXPORT_SYMBOL net/ipv4/fou 0x87596169 fou_encap_hlen +EXPORT_SYMBOL net/ipv4/fou 0xfe4c1f2f gue_encap_hlen +EXPORT_SYMBOL net/ipv4/ip_tunnel 0x04e2cefc ip_tunnel_get_iflink +EXPORT_SYMBOL net/ipv4/ip_tunnel 0x17edc192 ip_tunnel_get_link_net +EXPORT_SYMBOL net/ipv4/ip_tunnel 0x56fc0fe0 ip_tunnel_encap +EXPORT_SYMBOL net/ipv4/ip_tunnel 0x67122759 ip_tunnel_dst_reset_all +EXPORT_SYMBOL net/ipv4/ip_tunnel 0xd3066ade ip_tunnel_encap_add_ops +EXPORT_SYMBOL net/ipv4/ip_tunnel 0xfc913a48 ip_tunnel_encap_del_ops +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0x21521cd4 arpt_do_table +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0x324c894e arpt_unregister_table +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0xfd1c99c4 arpt_register_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0x2f772a2a ipt_unregister_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0x3abef7ee ipt_do_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0x4f6093a5 ipt_register_table +EXPORT_SYMBOL net/ipv4/tunnel4 0x0b1a8e63 xfrm4_tunnel_deregister +EXPORT_SYMBOL net/ipv4/tunnel4 0x738a2c40 xfrm4_tunnel_register +EXPORT_SYMBOL net/ipv4/udp_tunnel 0xb80f5c99 udp_sock_create4 +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0x305e4d56 ip6_tnl_get_link_net +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0x375eb386 ip6_tnl_parse_tlv_enc_lim +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0x4555b1b6 ip6_tnl_get_iflink +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0xbbafc491 ip6_tnl_get_cap +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0x0321ab92 ip6t_register_table +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0x3439c283 ip6t_unregister_table +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0x3df66baa ip6t_do_table +EXPORT_SYMBOL net/ipv6/tunnel6 0xb40d25dd xfrm6_tunnel_deregister +EXPORT_SYMBOL net/ipv6/tunnel6 0xcc6614a8 xfrm6_tunnel_register +EXPORT_SYMBOL net/ipv6/xfrm6_tunnel 0x1ed37177 xfrm6_tunnel_alloc_spi +EXPORT_SYMBOL net/ipv6/xfrm6_tunnel 0x6bb59eeb xfrm6_tunnel_spi_lookup +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x179d7735 ircomm_control_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x1eb5ff74 ircomm_connect_response +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x32b5587d ircomm_close +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x5c4d6232 ircomm_flow_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x6a3f2fb5 ircomm_data_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x6ebfc36c ircomm_disconnect_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x95505cc7 ircomm_connect_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0xc172f3fb ircomm_open +EXPORT_SYMBOL net/irda/irda 0x02e896dd irlmp_open_lsap +EXPORT_SYMBOL net/irda/irda 0x052f0959 irttp_open_tsap +EXPORT_SYMBOL net/irda/irda 0x06a3ee58 irias_new_integer_value +EXPORT_SYMBOL net/irda/irda 0x07d3647c irlmp_register_service +EXPORT_SYMBOL net/irda/irda 0x0963c24b irias_add_string_attrib +EXPORT_SYMBOL net/irda/irda 0x09939c11 irias_add_integer_attrib +EXPORT_SYMBOL net/irda/irda 0x18632ad5 irlmp_connect_response +EXPORT_SYMBOL net/irda/irda 0x198be40c irda_notify_init +EXPORT_SYMBOL net/irda/irda 0x1e8baa71 irttp_connect_request +EXPORT_SYMBOL net/irda/irda 0x1fe6f554 irlmp_disconnect_request +EXPORT_SYMBOL net/irda/irda 0x23bbc2ce irias_find_object +EXPORT_SYMBOL net/irda/irda 0x2b432980 hashbin_get_next +EXPORT_SYMBOL net/irda/irda 0x2c5ad866 irttp_flow_request +EXPORT_SYMBOL net/irda/irda 0x33cbe2c6 proc_irda +EXPORT_SYMBOL net/irda/irda 0x385847aa irias_delete_object +EXPORT_SYMBOL net/irda/irda 0x3cea6b69 irttp_udata_request +EXPORT_SYMBOL net/irda/irda 0x40a81d94 irlap_open +EXPORT_SYMBOL net/irda/irda 0x448b8aaa irda_qos_bits_to_value +EXPORT_SYMBOL net/irda/irda 0x46b00fdf irias_insert_object +EXPORT_SYMBOL net/irda/irda 0x46c1c4a2 irlmp_unregister_service +EXPORT_SYMBOL net/irda/irda 0x624739fd irlmp_close_lsap +EXPORT_SYMBOL net/irda/irda 0x6829ffc9 irttp_connect_response +EXPORT_SYMBOL net/irda/irda 0x6b043eba irda_init_max_qos_capabilies +EXPORT_SYMBOL net/irda/irda 0x7042bc54 irlmp_register_client +EXPORT_SYMBOL net/irda/irda 0x70a3f20f hashbin_lock_find +EXPORT_SYMBOL net/irda/irda 0x763e54a4 irlmp_unregister_client +EXPORT_SYMBOL net/irda/irda 0x76f4b3e7 iriap_close +EXPORT_SYMBOL net/irda/irda 0x7957f728 irlmp_update_client +EXPORT_SYMBOL net/irda/irda 0x7f52a8bf irda_param_insert +EXPORT_SYMBOL net/irda/irda 0x91815586 irda_param_pack +EXPORT_SYMBOL net/irda/irda 0x94a824db irda_param_extract_all +EXPORT_SYMBOL net/irda/irda 0x975a7bfc irttp_dup +EXPORT_SYMBOL net/irda/irda 0x98a8b3b4 hashbin_delete +EXPORT_SYMBOL net/irda/irda 0x9ccbdfca hashbin_insert +EXPORT_SYMBOL net/irda/irda 0xac3dc858 irias_add_octseq_attrib +EXPORT_SYMBOL net/irda/irda 0xaddfb5c6 iriap_getvaluebyclass_request +EXPORT_SYMBOL net/irda/irda 0xaeeff2b5 hashbin_find +EXPORT_SYMBOL net/irda/irda 0xb9394173 irias_delete_value +EXPORT_SYMBOL net/irda/irda 0xbcd3ef13 irias_object_change_attribute +EXPORT_SYMBOL net/irda/irda 0xbe40ace9 irlmp_discovery_request +EXPORT_SYMBOL net/irda/irda 0xbfdae2ce iriap_open +EXPORT_SYMBOL net/irda/irda 0xca7fb5a5 async_unwrap_char +EXPORT_SYMBOL net/irda/irda 0xce1929e7 alloc_irdadev +EXPORT_SYMBOL net/irda/irda 0xd6deeaae irda_setup_dma +EXPORT_SYMBOL net/irda/irda 0xd6e2fd21 irda_device_set_media_busy +EXPORT_SYMBOL net/irda/irda 0xd6f550a8 irttp_close_tsap +EXPORT_SYMBOL net/irda/irda 0xdc0196c2 hashbin_remove +EXPORT_SYMBOL net/irda/irda 0xde4c6b3c irlmp_service_to_hint +EXPORT_SYMBOL net/irda/irda 0xe1ba6308 irias_new_object +EXPORT_SYMBOL net/irda/irda 0xe329462a hashbin_get_first +EXPORT_SYMBOL net/irda/irda 0xea23f47e irttp_disconnect_request +EXPORT_SYMBOL net/irda/irda 0xeb78333e hashbin_remove_this +EXPORT_SYMBOL net/irda/irda 0xec242b93 hashbin_new +EXPORT_SYMBOL net/irda/irda 0xedbf568b irlmp_connect_request +EXPORT_SYMBOL net/irda/irda 0xedd521c2 irlmp_get_discoveries +EXPORT_SYMBOL net/irda/irda 0xf30a67a8 irlmp_data_request +EXPORT_SYMBOL net/irda/irda 0xfb66deca async_wrap_skb +EXPORT_SYMBOL net/irda/irda 0xfbaa5add irttp_data_request +EXPORT_SYMBOL net/irda/irda 0xff6d0069 irlap_close +EXPORT_SYMBOL net/l2tp/l2tp_core 0xbb7cba73 l2tp_recv_common +EXPORT_SYMBOL net/lapb/lapb 0x16a3a6fa lapb_connect_request +EXPORT_SYMBOL net/lapb/lapb 0x6ccd0480 lapb_data_received +EXPORT_SYMBOL net/lapb/lapb 0x6d8823df lapb_data_request +EXPORT_SYMBOL net/lapb/lapb 0x6e27b882 lapb_disconnect_request +EXPORT_SYMBOL net/lapb/lapb 0x73f606e5 lapb_setparms +EXPORT_SYMBOL net/lapb/lapb 0xcaef3a5e lapb_register +EXPORT_SYMBOL net/lapb/lapb 0xd600be58 lapb_unregister +EXPORT_SYMBOL net/lapb/lapb 0xecab29b1 lapb_getparms +EXPORT_SYMBOL net/llc/llc 0x04bdd057 llc_sap_open +EXPORT_SYMBOL net/llc/llc 0x1799fec4 llc_mac_hdr_init +EXPORT_SYMBOL net/llc/llc 0x33a87c94 llc_sap_find +EXPORT_SYMBOL net/llc/llc 0x38b92846 llc_remove_pack +EXPORT_SYMBOL net/llc/llc 0x526d64c0 llc_add_pack +EXPORT_SYMBOL net/llc/llc 0x52d7b2fd llc_sap_list +EXPORT_SYMBOL net/llc/llc 0x759ad6ae llc_build_and_send_ui_pkt +EXPORT_SYMBOL net/llc/llc 0xa141129c llc_set_station_handler +EXPORT_SYMBOL net/llc/llc 0xb42e9e67 llc_sap_close +EXPORT_SYMBOL net/mac80211/mac80211 0x024cc816 ieee80211_stop_rx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0x024ccddf ieee80211_nullfunc_get +EXPORT_SYMBOL net/mac80211/mac80211 0x03d2655b ieee80211_scan_completed +EXPORT_SYMBOL net/mac80211/mac80211 0x07fecd17 ieee80211_rts_duration +EXPORT_SYMBOL net/mac80211/mac80211 0x0994848e ieee80211_sta_eosp +EXPORT_SYMBOL net/mac80211/mac80211 0x0e6d0a63 ieee80211_cqm_rssi_notify +EXPORT_SYMBOL net/mac80211/mac80211 0x10fd30ce ieee80211_get_tkip_p1k_iv +EXPORT_SYMBOL net/mac80211/mac80211 0x16a55be0 ieee80211_start_tx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0x1a49c72c ieee80211_sched_scan_stopped +EXPORT_SYMBOL net/mac80211/mac80211 0x2124776a ieee80211_stop_queue +EXPORT_SYMBOL net/mac80211/mac80211 0x2994bfd8 ieee80211_probereq_get +EXPORT_SYMBOL net/mac80211/mac80211 0x2c8bc9d7 ieee80211_connection_loss +EXPORT_SYMBOL net/mac80211/mac80211 0x2e5a634b ieee80211_get_buffered_bc +EXPORT_SYMBOL net/mac80211/mac80211 0x2e9167d1 ieee80211_stop_queues +EXPORT_SYMBOL net/mac80211/mac80211 0x301075fb ieee80211_get_key_tx_seq +EXPORT_SYMBOL net/mac80211/mac80211 0x3176386a rate_control_set_rates +EXPORT_SYMBOL net/mac80211/mac80211 0x326530c7 ieee80211_tx_status +EXPORT_SYMBOL net/mac80211/mac80211 0x350d3477 ieee80211_csa_update_counter +EXPORT_SYMBOL net/mac80211/mac80211 0x3518ae29 ieee80211_stop_rx_ba_session_offl +EXPORT_SYMBOL net/mac80211/mac80211 0x391cca5d wiphy_to_ieee80211_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x3c41f570 ieee80211_chswitch_done +EXPORT_SYMBOL net/mac80211/mac80211 0x3d067165 ieee80211_tdls_oper_request +EXPORT_SYMBOL net/mac80211/mac80211 0x437d5843 ieee80211_queue_work +EXPORT_SYMBOL net/mac80211/mac80211 0x4d96c1ac ieee80211_tx_dequeue +EXPORT_SYMBOL net/mac80211/mac80211 0x4e1e5adf ieee80211_generic_frame_duration +EXPORT_SYMBOL net/mac80211/mac80211 0x51821c37 ieee80211_sta_set_buffered +EXPORT_SYMBOL net/mac80211/mac80211 0x53a2e7b4 ieee80211_queue_stopped +EXPORT_SYMBOL net/mac80211/mac80211 0x559e236a ieee80211_get_tx_rates +EXPORT_SYMBOL net/mac80211/mac80211 0x568c6660 ieee80211_restart_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x5b0d6052 ieee80211_sta_ps_transition +EXPORT_SYMBOL net/mac80211/mac80211 0x5dbf7464 ieee80211_free_txskb +EXPORT_SYMBOL net/mac80211/mac80211 0x5e6ae25b ieee80211_ap_probereq_get +EXPORT_SYMBOL net/mac80211/mac80211 0x60d66dc5 ieee80211_disable_rssi_reports +EXPORT_SYMBOL net/mac80211/mac80211 0x6171948c ieee80211_get_key_rx_seq +EXPORT_SYMBOL net/mac80211/mac80211 0x6652b164 ieee80211_unreserve_tid +EXPORT_SYMBOL net/mac80211/mac80211 0x69416077 ieee80211_beacon_get_tim +EXPORT_SYMBOL net/mac80211/mac80211 0x7583e575 __ieee80211_get_tx_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0x776ee7e2 ieee80211_wake_queue +EXPORT_SYMBOL net/mac80211/mac80211 0x77ea65c4 ieee80211_update_p2p_noa +EXPORT_SYMBOL net/mac80211/mac80211 0x795dea3c ieee80211_proberesp_get +EXPORT_SYMBOL net/mac80211/mac80211 0x7b145f2b ieee80211_beacon_loss +EXPORT_SYMBOL net/mac80211/mac80211 0x7edc32ab rate_control_send_low +EXPORT_SYMBOL net/mac80211/mac80211 0x823f0b8f __ieee80211_create_tpt_led_trigger +EXPORT_SYMBOL net/mac80211/mac80211 0x82c473c2 ieee80211_csa_is_complete +EXPORT_SYMBOL net/mac80211/mac80211 0x85c4cdfe ieee80211_pspoll_get +EXPORT_SYMBOL net/mac80211/mac80211 0x85c537f3 ieee80211_wake_queues +EXPORT_SYMBOL net/mac80211/mac80211 0x89073444 ieee80211_free_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x8b4a206e ieee80211_queue_delayed_work +EXPORT_SYMBOL net/mac80211/mac80211 0x8dcda1a3 ieee80211_rx +EXPORT_SYMBOL net/mac80211/mac80211 0x90636fcc ieee80211_ctstoself_get +EXPORT_SYMBOL net/mac80211/mac80211 0x94f5d721 ieee80211_reserve_tid +EXPORT_SYMBOL net/mac80211/mac80211 0x9776d5e9 ieee80211_stop_tx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0x99ac378f ieee80211_report_wowlan_wakeup +EXPORT_SYMBOL net/mac80211/mac80211 0x9a67ba99 ieee80211_rts_get +EXPORT_SYMBOL net/mac80211/mac80211 0x9cba3a82 ieee80211_sta_block_awake +EXPORT_SYMBOL net/mac80211/mac80211 0x9cf02976 ieee80211_tx_status_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0x9d545123 ieee80211_sched_scan_results +EXPORT_SYMBOL net/mac80211/mac80211 0x9dd73949 ieee80211_iter_keys +EXPORT_SYMBOL net/mac80211/mac80211 0xa01c6f4b __ieee80211_get_radio_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0xa0a76834 ieee80211_alloc_hw_nm +EXPORT_SYMBOL net/mac80211/mac80211 0xa81f7525 ieee80211_enable_rssi_reports +EXPORT_SYMBOL net/mac80211/mac80211 0xa92b8d43 ieee80211_tx_status_noskb +EXPORT_SYMBOL net/mac80211/mac80211 0xaa8088a3 ieee80211_aes_cmac_calculate_k1_k2 +EXPORT_SYMBOL net/mac80211/mac80211 0xaca27e91 ieee80211_radar_detected +EXPORT_SYMBOL net/mac80211/mac80211 0xbfc4941c __ieee80211_get_rx_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0xc29fa39c ieee80211_unregister_hw +EXPORT_SYMBOL net/mac80211/mac80211 0xc9736626 ieee80211_tx_prepare_skb +EXPORT_SYMBOL net/mac80211/mac80211 0xd28b6d8e ieee80211_csa_finish +EXPORT_SYMBOL net/mac80211/mac80211 0xd42a38cc ieee80211_get_tkip_p2k +EXPORT_SYMBOL net/mac80211/mac80211 0xd72625cb ieee80211_parse_p2p_noa +EXPORT_SYMBOL net/mac80211/mac80211 0xdb4445ce ieee80211_cqm_beacon_loss_notify +EXPORT_SYMBOL net/mac80211/mac80211 0xdde7050f ieee80211_register_hw +EXPORT_SYMBOL net/mac80211/mac80211 0xdf8a52c8 ieee80211_rate_control_register +EXPORT_SYMBOL net/mac80211/mac80211 0xe50a4268 __ieee80211_get_assoc_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0xe55b98a0 ieee80211_stop_tx_ba_cb_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0xe636f6f9 ieee80211_rx_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0xe649adc6 ieee80211_find_sta +EXPORT_SYMBOL net/mac80211/mac80211 0xe759d272 ieee80211_get_tkip_rx_p1k +EXPORT_SYMBOL net/mac80211/mac80211 0xe7db076b ieee80211_ctstoself_duration +EXPORT_SYMBOL net/mac80211/mac80211 0xe94a2e21 ieee80211_rate_control_unregister +EXPORT_SYMBOL net/mac80211/mac80211 0xf00431a7 ieee80211_start_rx_ba_session_offl +EXPORT_SYMBOL net/mac80211/mac80211 0xf9e95a92 ieee80211_send_bar +EXPORT_SYMBOL net/mac80211/mac80211 0xfc9da5b1 ieee80211_report_low_ack +EXPORT_SYMBOL net/mac80211/mac80211 0xfd3c4705 ieee80211_start_tx_ba_cb_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0xfe96c4cd ieee80211_beacon_get_template +EXPORT_SYMBOL net/mac802154/mac802154 0x263a1401 ieee802154_alloc_hw +EXPORT_SYMBOL net/mac802154/mac802154 0x309b093c ieee802154_stop_queue +EXPORT_SYMBOL net/mac802154/mac802154 0x332e53b3 ieee802154_rx +EXPORT_SYMBOL net/mac802154/mac802154 0x3cc7eba8 ieee802154_register_hw +EXPORT_SYMBOL net/mac802154/mac802154 0x53697712 ieee802154_wake_queue +EXPORT_SYMBOL net/mac802154/mac802154 0x6e7ed11d ieee802154_unregister_hw +EXPORT_SYMBOL net/mac802154/mac802154 0x8966dbb2 ieee802154_rx_irqsafe +EXPORT_SYMBOL net/mac802154/mac802154 0xaed1bc25 ieee802154_xmit_complete +EXPORT_SYMBOL net/mac802154/mac802154 0xd242f726 ieee802154_free_hw +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x38e74f7f register_ip_vs_scheduler +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x3d595979 ip_vs_conn_put +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x5e17ba7d ip_vs_proto_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x70d0d9c7 ip_vs_tcp_conn_listen +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x728902e9 unregister_ip_vs_scheduler +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x8a92fc82 register_ip_vs_app +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x94a10ac1 ip_vs_conn_in_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x98175b6f ip_vs_conn_new +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xb28f5962 unregister_ip_vs_app +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xbbd1f450 ip_vs_scheduler_err +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xcc519fe6 ip_vs_conn_out_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xcef6ce27 ip_vs_nfct_expect_related +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xd831a1a2 ip_vs_proto_name +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xde30cbbb ip_vs_proto_data_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xf3fee8eb register_ip_vs_app_inc +EXPORT_SYMBOL net/netfilter/nf_conntrack 0x0ba6635f __nf_ct_ext_add_length +EXPORT_SYMBOL net/netfilter/nf_conntrack 0x30a36ca1 __nf_ct_ext_destroy +EXPORT_SYMBOL net/netfilter/nf_conntrack 0xe39ad65e nf_conntrack_untracked +EXPORT_SYMBOL net/netfilter/nf_conntrack_pptp 0x827cc6a1 pptp_msg_name +EXPORT_SYMBOL net/netfilter/nf_nat 0x4c37a1fe nf_xfrm_me_harder +EXPORT_SYMBOL net/netfilter/nf_nat 0x585d3e9d nf_nat_mangle_udp_packet +EXPORT_SYMBOL net/netfilter/nf_nat 0x6de4a3f6 nf_nat_used_tuple +EXPORT_SYMBOL net/netfilter/nf_nat 0x7406e2ff __nf_nat_mangle_tcp_packet +EXPORT_SYMBOL net/netfilter/nf_nat 0x7d003efa nf_nat_setup_info +EXPORT_SYMBOL net/netfilter/nf_nat 0x88aae9f9 nf_nat_follow_master +EXPORT_SYMBOL net/netfilter/x_tables 0x2dee2bd1 xt_find_target +EXPORT_SYMBOL net/netfilter/x_tables 0x482d26fd xt_alloc_table_info +EXPORT_SYMBOL net/netfilter/x_tables 0x49a3c52d xt_unregister_target +EXPORT_SYMBOL net/netfilter/x_tables 0x7a9bd85b xt_register_match +EXPORT_SYMBOL net/netfilter/x_tables 0x9222946c xt_find_match +EXPORT_SYMBOL net/netfilter/x_tables 0xa5ec6903 xt_unregister_matches +EXPORT_SYMBOL net/netfilter/x_tables 0xaa56abc3 xt_register_targets +EXPORT_SYMBOL net/netfilter/x_tables 0xb9758c12 xt_register_matches +EXPORT_SYMBOL net/netfilter/x_tables 0xc0fa12d4 xt_unregister_targets +EXPORT_SYMBOL net/netfilter/x_tables 0xcf8fba5d xt_register_target +EXPORT_SYMBOL net/netfilter/x_tables 0xd1a21986 xt_free_table_info +EXPORT_SYMBOL net/netfilter/x_tables 0xd8557882 xt_unregister_match +EXPORT_SYMBOL net/nfc/hci/hci 0x3b0250de nfc_hci_reset_pipes +EXPORT_SYMBOL net/nfc/hci/hci 0x42b0a904 nfc_hci_free_device +EXPORT_SYMBOL net/nfc/hci/hci 0x43028a27 nfc_hci_result_to_errno +EXPORT_SYMBOL net/nfc/hci/hci 0x4368523e nfc_hci_send_cmd +EXPORT_SYMBOL net/nfc/hci/hci 0x4744b800 nfc_hci_get_clientdata +EXPORT_SYMBOL net/nfc/hci/hci 0x488da4df nfc_hci_send_cmd_async +EXPORT_SYMBOL net/nfc/hci/hci 0x543ac310 nfc_hci_disconnect_all_gates +EXPORT_SYMBOL net/nfc/hci/hci 0x6d3b3cdb nfc_hci_disconnect_gate +EXPORT_SYMBOL net/nfc/hci/hci 0x7a7a6929 nfc_hci_set_clientdata +EXPORT_SYMBOL net/nfc/hci/hci 0x884b0919 nfc_hci_allocate_device +EXPORT_SYMBOL net/nfc/hci/hci 0x9ea6a6e8 nfc_hci_target_discovered +EXPORT_SYMBOL net/nfc/hci/hci 0xa011947f nfc_hci_register_device +EXPORT_SYMBOL net/nfc/hci/hci 0xb50dff62 nfc_hci_recv_frame +EXPORT_SYMBOL net/nfc/hci/hci 0xb932dfb3 nfc_hci_connect_gate +EXPORT_SYMBOL net/nfc/hci/hci 0xbca0b4fd nfc_hci_sak_to_protocol +EXPORT_SYMBOL net/nfc/hci/hci 0xcbb7de83 nfc_hci_reset_pipes_per_host +EXPORT_SYMBOL net/nfc/hci/hci 0xe96f315f nfc_hci_driver_failure +EXPORT_SYMBOL net/nfc/hci/hci 0xed1ec8cf nfc_hci_send_event +EXPORT_SYMBOL net/nfc/hci/hci 0xef0b394e nfc_hci_set_param +EXPORT_SYMBOL net/nfc/hci/hci 0xf0236fb7 nfc_hci_get_param +EXPORT_SYMBOL net/nfc/hci/hci 0xf133c8d4 nfc_hci_unregister_device +EXPORT_SYMBOL net/nfc/nci/nci 0x0a9fdf72 nci_prop_cmd +EXPORT_SYMBOL net/nfc/nci/nci 0x16d4f027 nci_core_conn_close +EXPORT_SYMBOL net/nfc/nci/nci 0x219f0c65 nci_nfcee_mode_set +EXPORT_SYMBOL net/nfc/nci/nci 0x23f896a7 nci_set_config +EXPORT_SYMBOL net/nfc/nci/nci 0x34fbc079 nci_hci_dev_session_init +EXPORT_SYMBOL net/nfc/nci/nci 0x362a46b6 nci_hci_connect_gate +EXPORT_SYMBOL net/nfc/nci/nci 0x4061e701 nci_req_complete +EXPORT_SYMBOL net/nfc/nci/nci 0x492e5e87 nci_hci_open_pipe +EXPORT_SYMBOL net/nfc/nci/nci 0x57307169 nci_hci_get_param +EXPORT_SYMBOL net/nfc/nci/nci 0x6e52050a nci_free_device +EXPORT_SYMBOL net/nfc/nci/nci 0x8788e525 nci_unregister_device +EXPORT_SYMBOL net/nfc/nci/nci 0x974b5b71 nci_register_device +EXPORT_SYMBOL net/nfc/nci/nci 0xa5608b8a nci_core_conn_create +EXPORT_SYMBOL net/nfc/nci/nci 0xba490602 nci_to_errno +EXPORT_SYMBOL net/nfc/nci/nci 0xdd14b02d nci_hci_set_param +EXPORT_SYMBOL net/nfc/nci/nci 0xdd4ebcaf nci_allocate_device +EXPORT_SYMBOL net/nfc/nci/nci 0xe1b90bf1 nci_recv_frame +EXPORT_SYMBOL net/nfc/nci/nci 0xe5c6c9ee nci_hci_send_event +EXPORT_SYMBOL net/nfc/nci/nci 0xe7df91b7 nci_hci_send_cmd +EXPORT_SYMBOL net/nfc/nci/nci 0xf16e70e5 nci_nfcee_discover +EXPORT_SYMBOL net/nfc/nfc 0x01825225 nfc_tm_activated +EXPORT_SYMBOL net/nfc/nfc 0x03626fca nfc_add_se +EXPORT_SYMBOL net/nfc/nfc 0x1fdcfdd0 nfc_unregister_device +EXPORT_SYMBOL net/nfc/nfc 0x2cc4617e nfc_target_lost +EXPORT_SYMBOL net/nfc/nfc 0x35a4b263 nfc_driver_failure +EXPORT_SYMBOL net/nfc/nfc 0x3a7931ab nfc_proto_unregister +EXPORT_SYMBOL net/nfc/nfc 0x463ce3e0 nfc_tm_deactivated +EXPORT_SYMBOL net/nfc/nfc 0x46bf52f0 nfc_get_local_general_bytes +EXPORT_SYMBOL net/nfc/nfc 0x4938d060 nfc_register_device +EXPORT_SYMBOL net/nfc/nfc 0x4e9e9aad nfc_se_transaction +EXPORT_SYMBOL net/nfc/nfc 0x679dba81 nfc_class +EXPORT_SYMBOL net/nfc/nfc 0x6e7e589d nfc_tm_data_received +EXPORT_SYMBOL net/nfc/nfc 0x80499869 nfc_targets_found +EXPORT_SYMBOL net/nfc/nfc 0x8aabf87b nfc_dep_link_is_up +EXPORT_SYMBOL net/nfc/nfc 0x95419945 nfc_fw_download_done +EXPORT_SYMBOL net/nfc/nfc 0xa0c7b123 nfc_find_se +EXPORT_SYMBOL net/nfc/nfc 0xb438f3ac nfc_alloc_recv_skb +EXPORT_SYMBOL net/nfc/nfc 0xbcc1511e nfc_proto_register +EXPORT_SYMBOL net/nfc/nfc 0xbefade79 nfc_remove_se +EXPORT_SYMBOL net/nfc/nfc 0xd3671ca3 nfc_set_remote_general_bytes +EXPORT_SYMBOL net/nfc/nfc 0xdbc5cabd nfc_send_to_raw_sock +EXPORT_SYMBOL net/nfc/nfc 0xfa1679b0 nfc_allocate_device +EXPORT_SYMBOL net/nfc/nfc_digital 0x70f1f13f nfc_digital_register_device +EXPORT_SYMBOL net/nfc/nfc_digital 0x75ed0a21 nfc_digital_unregister_device +EXPORT_SYMBOL net/nfc/nfc_digital 0xa311d7db nfc_digital_allocate_device +EXPORT_SYMBOL net/nfc/nfc_digital 0xd8c51d69 nfc_digital_free_device +EXPORT_SYMBOL net/phonet/phonet 0x0a1a548d pn_skb_send +EXPORT_SYMBOL net/phonet/phonet 0x23a5e90c phonet_proto_register +EXPORT_SYMBOL net/phonet/phonet 0x48353069 pn_sock_hash +EXPORT_SYMBOL net/phonet/phonet 0x6f88f128 phonet_header_ops +EXPORT_SYMBOL net/phonet/phonet 0x89a8707f pn_sock_unhash +EXPORT_SYMBOL net/phonet/phonet 0xad97543d pn_sock_get_port +EXPORT_SYMBOL net/phonet/phonet 0xcbbd3785 phonet_proto_unregister +EXPORT_SYMBOL net/phonet/phonet 0xeadff2cc phonet_stream_ops +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x05dd4f75 rxrpc_kernel_reject_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x0e417e6a rxrpc_kernel_get_abort_code +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x19df4f26 rxrpc_kernel_data_delivered +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x2a51c230 rxrpc_kernel_accept_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x30848835 key_type_rxrpc +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x34d24f64 rxrpc_kernel_abort_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x4e9c9bd1 rxrpc_kernel_send_data +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x6e2ea909 rxrpc_kernel_intercept_rx_messages +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x751f669c rxrpc_kernel_begin_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x78f2be06 rxrpc_kernel_free_skb +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x7ac8afa4 rxrpc_get_null_key +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xb666deca rxrpc_get_server_data_key +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xd93fac96 rxrpc_kernel_get_error_number +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xfef6eda5 rxrpc_kernel_end_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xff4759b1 rxrpc_kernel_is_data_last +EXPORT_SYMBOL net/sctp/sctp 0x7b4473d0 sctp_do_peeloff +EXPORT_SYMBOL net/sunrpc/auth_gss/auth_rpcgss 0x49c2c15f gss_mech_get +EXPORT_SYMBOL net/sunrpc/auth_gss/auth_rpcgss 0xa79a1d5d gss_mech_put +EXPORT_SYMBOL net/sunrpc/auth_gss/auth_rpcgss 0xd3629149 gss_pseudoflavor_to_service +EXPORT_SYMBOL net/sunrpc/sunrpc 0xc0d5b968 xdr_restrict_buflen +EXPORT_SYMBOL net/sunrpc/sunrpc 0xdc18cf89 xdr_truncate_encode +EXPORT_SYMBOL net/sunrpc/sunrpc 0xe71b9874 svc_pool_stats_open +EXPORT_SYMBOL net/wimax/wimax 0x34447549 wimax_reset +EXPORT_SYMBOL net/wimax/wimax 0xb0641254 wimax_rfkill +EXPORT_SYMBOL net/wireless/cfg80211 0x01a6a650 cfg80211_cac_event +EXPORT_SYMBOL net/wireless/cfg80211 0x04272080 cfg80211_chandef_dfs_required +EXPORT_SYMBOL net/wireless/cfg80211 0x04ab9821 __ieee80211_get_channel +EXPORT_SYMBOL net/wireless/cfg80211 0x068655d3 regulatory_set_wiphy_regd +EXPORT_SYMBOL net/wireless/cfg80211 0x096e1add cfg80211_check_combinations +EXPORT_SYMBOL net/wireless/cfg80211 0x09c64fbd ieee80211_frequency_to_channel +EXPORT_SYMBOL net/wireless/cfg80211 0x0ac2fd05 cfg80211_notify_new_peer_candidate +EXPORT_SYMBOL net/wireless/cfg80211 0x0ad43c5f cfg80211_stop_iface +EXPORT_SYMBOL net/wireless/cfg80211 0x0d6ef98d cfg80211_iter_combinations +EXPORT_SYMBOL net/wireless/cfg80211 0x13078366 cfg80211_rx_unprot_mlme_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0x1629d28f cfg80211_ready_on_channel +EXPORT_SYMBOL net/wireless/cfg80211 0x178d0190 cfg80211_gtk_rekey_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x1879fcbd bridge_tunnel_header +EXPORT_SYMBOL net/wireless/cfg80211 0x18c05dcb cfg80211_inform_bss_width +EXPORT_SYMBOL net/wireless/cfg80211 0x19e03378 cfg80211_get_p2p_attr +EXPORT_SYMBOL net/wireless/cfg80211 0x1f5b19e7 cfg80211_classify8021d +EXPORT_SYMBOL net/wireless/cfg80211 0x1f8d7f25 cfg80211_disconnected +EXPORT_SYMBOL net/wireless/cfg80211 0x2005afdd wiphy_register +EXPORT_SYMBOL net/wireless/cfg80211 0x2b627d97 cfg80211_ibss_joined +EXPORT_SYMBOL net/wireless/cfg80211 0x2d120830 cfg80211_check_station_change +EXPORT_SYMBOL net/wireless/cfg80211 0x2e5eb504 cfg80211_report_obss_beacon +EXPORT_SYMBOL net/wireless/cfg80211 0x3d470c4d cfg80211_chandef_compatible +EXPORT_SYMBOL net/wireless/cfg80211 0x3e285fec cfg80211_chandef_valid +EXPORT_SYMBOL net/wireless/cfg80211 0x405d9346 cfg80211_radar_event +EXPORT_SYMBOL net/wireless/cfg80211 0x43858059 cfg80211_conn_failed +EXPORT_SYMBOL net/wireless/cfg80211 0x47a01229 cfg80211_sched_scan_stopped_rtnl +EXPORT_SYMBOL net/wireless/cfg80211 0x495457ff cfg80211_calculate_bitrate +EXPORT_SYMBOL net/wireless/cfg80211 0x4c60366a cfg80211_ref_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x4db90ca2 cfg80211_tdls_oper_request +EXPORT_SYMBOL net/wireless/cfg80211 0x4dffb687 ieee80211_get_num_supported_channels +EXPORT_SYMBOL net/wireless/cfg80211 0x50214c28 ieee80211_bss_get_ie +EXPORT_SYMBOL net/wireless/cfg80211 0x502a9fb3 cfg80211_rx_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0x5800b925 cfg80211_sched_scan_results +EXPORT_SYMBOL net/wireless/cfg80211 0x58907c65 cfg80211_get_drvinfo +EXPORT_SYMBOL net/wireless/cfg80211 0x5e0ba09c __cfg80211_send_event_skb +EXPORT_SYMBOL net/wireless/cfg80211 0x604ac591 cfg80211_ft_event +EXPORT_SYMBOL net/wireless/cfg80211 0x63ca8ae9 cfg80211_michael_mic_failure +EXPORT_SYMBOL net/wireless/cfg80211 0x651213af freq_reg_info +EXPORT_SYMBOL net/wireless/cfg80211 0x689686a7 cfg80211_pmksa_candidate_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x69b18f43 rfc1042_header +EXPORT_SYMBOL net/wireless/cfg80211 0x6d6cb9ad ieee80211_operating_class_to_band +EXPORT_SYMBOL net/wireless/cfg80211 0x7179395b cfg80211_scan_done +EXPORT_SYMBOL net/wireless/cfg80211 0x7a84edc6 wiphy_apply_custom_regulatory +EXPORT_SYMBOL net/wireless/cfg80211 0x7da9e9de ieee80211_get_hdrlen_from_skb +EXPORT_SYMBOL net/wireless/cfg80211 0x7ef39823 ieee80211_hdrlen +EXPORT_SYMBOL net/wireless/cfg80211 0x7fe1a403 cfg80211_find_ie +EXPORT_SYMBOL net/wireless/cfg80211 0x80fea757 cfg80211_ch_switch_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x820392e5 cfg80211_get_station +EXPORT_SYMBOL net/wireless/cfg80211 0x82e0a497 cfg80211_chandef_usable +EXPORT_SYMBOL net/wireless/cfg80211 0x836c5221 __cfg80211_alloc_reply_skb +EXPORT_SYMBOL net/wireless/cfg80211 0x846a9326 cfg80211_unregister_wdev +EXPORT_SYMBOL net/wireless/cfg80211 0x8492a430 ieee80211_get_response_rate +EXPORT_SYMBOL net/wireless/cfg80211 0x84b2d3e8 cfg80211_rx_assoc_resp +EXPORT_SYMBOL net/wireless/cfg80211 0x8503c167 cfg80211_sched_scan_stopped +EXPORT_SYMBOL net/wireless/cfg80211 0x8a7062a5 ieee80211_mandatory_rates +EXPORT_SYMBOL net/wireless/cfg80211 0x8b105fc8 ieee80211_amsdu_to_8023s +EXPORT_SYMBOL net/wireless/cfg80211 0x8c392a2a cfg80211_rx_mlme_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0x8fb12f51 wiphy_new_nm +EXPORT_SYMBOL net/wireless/cfg80211 0x9554c65e cfg80211_unlink_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x966ff54d ieee80211_ie_split_ric +EXPORT_SYMBOL net/wireless/cfg80211 0x982e6b6d ieee80211_radiotap_iterator_init +EXPORT_SYMBOL net/wireless/cfg80211 0x98a4e093 wiphy_rfkill_start_polling +EXPORT_SYMBOL net/wireless/cfg80211 0x9ae7def1 cfg80211_roamed +EXPORT_SYMBOL net/wireless/cfg80211 0x9f83b1e1 cfg80211_rx_spurious_frame +EXPORT_SYMBOL net/wireless/cfg80211 0xa1425906 ieee80211_channel_to_frequency +EXPORT_SYMBOL net/wireless/cfg80211 0xa197b1ff ieee80211_get_mesh_hdrlen +EXPORT_SYMBOL net/wireless/cfg80211 0xa723c717 cfg80211_remain_on_channel_expired +EXPORT_SYMBOL net/wireless/cfg80211 0xa8209040 cfg80211_cqm_rssi_notify +EXPORT_SYMBOL net/wireless/cfg80211 0xac8be294 cfg80211_roamed_bss +EXPORT_SYMBOL net/wireless/cfg80211 0xae18737c cfg80211_crit_proto_stopped +EXPORT_SYMBOL net/wireless/cfg80211 0xb967349f wiphy_free +EXPORT_SYMBOL net/wireless/cfg80211 0xba872c88 cfg80211_report_wowlan_wakeup +EXPORT_SYMBOL net/wireless/cfg80211 0xbfcbe812 cfg80211_auth_timeout +EXPORT_SYMBOL net/wireless/cfg80211 0xbffa7df2 cfg80211_get_bss +EXPORT_SYMBOL net/wireless/cfg80211 0xc1b8fe89 cfg80211_mgmt_tx_status +EXPORT_SYMBOL net/wireless/cfg80211 0xc2b62e2a cfg80211_tx_mlme_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0xc2db73f6 regulatory_hint +EXPORT_SYMBOL net/wireless/cfg80211 0xc5c85ce0 wiphy_unregister +EXPORT_SYMBOL net/wireless/cfg80211 0xc63f1b81 ieee80211_radiotap_iterator_next +EXPORT_SYMBOL net/wireless/cfg80211 0xc70c9502 wiphy_rfkill_stop_polling +EXPORT_SYMBOL net/wireless/cfg80211 0xc90fde22 ieee80211_chandef_to_operating_class +EXPORT_SYMBOL net/wireless/cfg80211 0xd48268ee cfg80211_assoc_timeout +EXPORT_SYMBOL net/wireless/cfg80211 0xd5196cdd cfg80211_reg_can_beacon_relax +EXPORT_SYMBOL net/wireless/cfg80211 0xda779e74 cfg80211_del_sta_sinfo +EXPORT_SYMBOL net/wireless/cfg80211 0xdba126c1 reg_initiator_name +EXPORT_SYMBOL net/wireless/cfg80211 0xdda81c19 cfg80211_put_bss +EXPORT_SYMBOL net/wireless/cfg80211 0xdef6a252 cfg80211_new_sta +EXPORT_SYMBOL net/wireless/cfg80211 0xe2c36864 cfg80211_cqm_txe_notify +EXPORT_SYMBOL net/wireless/cfg80211 0xe3babef9 cfg80211_cqm_beacon_loss_notify +EXPORT_SYMBOL net/wireless/cfg80211 0xe5345530 wiphy_rfkill_set_hw_state +EXPORT_SYMBOL net/wireless/cfg80211 0xe5ab8e92 cfg80211_rx_unexpected_4addr_frame +EXPORT_SYMBOL net/wireless/cfg80211 0xe719a694 cfg80211_inform_bss_width_frame +EXPORT_SYMBOL net/wireless/cfg80211 0xeb28178e cfg80211_cqm_pktloss_notify +EXPORT_SYMBOL net/wireless/cfg80211 0xeb6002ea __cfg80211_alloc_event_skb +EXPORT_SYMBOL net/wireless/cfg80211 0xeb6d7c6c ieee80211_ie_split +EXPORT_SYMBOL net/wireless/cfg80211 0xeeff5e56 cfg80211_ch_switch_started_notify +EXPORT_SYMBOL net/wireless/cfg80211 0xefc56354 cfg80211_chandef_create +EXPORT_SYMBOL net/wireless/cfg80211 0xf30e2471 cfg80211_reg_can_beacon +EXPORT_SYMBOL net/wireless/cfg80211 0xf3e0fea6 cfg80211_connect_result +EXPORT_SYMBOL net/wireless/cfg80211 0xf8cd346e regulatory_set_wiphy_regd_sync_rtnl +EXPORT_SYMBOL net/wireless/cfg80211 0xf9f4fcb4 ieee80211_data_from_8023 +EXPORT_SYMBOL net/wireless/cfg80211 0xfc7e06fd ieee80211_data_to_8023 +EXPORT_SYMBOL net/wireless/cfg80211 0xfd8f8ff4 cfg80211_probe_status +EXPORT_SYMBOL net/wireless/cfg80211 0xfed4d591 cfg80211_find_vendor_ie +EXPORT_SYMBOL net/wireless/lib80211 0x05f67824 lib80211_crypt_delayed_deinit +EXPORT_SYMBOL net/wireless/lib80211 0x223eb2f1 lib80211_get_crypto_ops +EXPORT_SYMBOL net/wireless/lib80211 0x7944185d lib80211_crypt_info_init +EXPORT_SYMBOL net/wireless/lib80211 0x8054ec49 lib80211_register_crypto_ops +EXPORT_SYMBOL net/wireless/lib80211 0xb6fc7a2f lib80211_unregister_crypto_ops +EXPORT_SYMBOL net/wireless/lib80211 0xba96230e lib80211_crypt_info_free +EXPORT_SYMBOL sound/ac97_bus 0x2036543b ac97_bus_type +EXPORT_SYMBOL sound/core/oss/snd-mixer-oss 0xb72cdfe8 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 0x3530701d snd_seq_kernel_client_enqueue_blocking +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 0x9eeaa347 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 0xbdf07891 snd_seq_kernel_client_write_poll +EXPORT_SYMBOL sound/core/seq/snd-seq 0xc7293bd5 snd_seq_event_port_attach +EXPORT_SYMBOL sound/core/seq/snd-seq 0xcac0a3be snd_seq_kernel_client_enqueue +EXPORT_SYMBOL sound/core/seq/snd-seq 0xe934da1d snd_seq_dump_var_event +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0x091def1c snd_seq_autoload_exit +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0x370a0736 snd_seq_autoload_init +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0x552ccb50 snd_seq_device_new +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0x6339b6d0 snd_seq_device_load_drivers +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 0xf0a1fdb3 snd_midi_process_event +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x205395a0 snd_midi_event_encode_byte +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x614705ff snd_midi_event_no_status +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x7746bb9b snd_midi_event_decode +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x79794472 snd_midi_event_new +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x991c0f60 snd_midi_event_reset_encode +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0xef8fa3d2 snd_midi_event_free +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0xf3f0324e snd_midi_event_reset_decode +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0xf6fdda44 snd_midi_event_encode +EXPORT_SYMBOL sound/core/seq/snd-seq-virmidi 0x84831a3e snd_virmidi_new +EXPORT_SYMBOL sound/core/snd 0x016c357b snd_ctl_remove +EXPORT_SYMBOL sound/core/snd 0x09960e7a snd_info_create_card_entry +EXPORT_SYMBOL sound/core/snd 0x0b4a292b snd_ctl_free_one +EXPORT_SYMBOL sound/core/snd 0x0f1d605e snd_ctl_notify +EXPORT_SYMBOL sound/core/snd 0x126d26f3 snd_register_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 0x20cdda7c snd_info_create_module_entry +EXPORT_SYMBOL sound/core/snd 0x24a94b26 snd_info_get_line +EXPORT_SYMBOL sound/core/snd 0x25d5be61 snd_cards +EXPORT_SYMBOL sound/core/snd 0x2ae3deaa release_and_free_resource +EXPORT_SYMBOL sound/core/snd 0x2aee0fd4 snd_card_set_id +EXPORT_SYMBOL sound/core/snd 0x32310286 snd_ctl_remove_id +EXPORT_SYMBOL sound/core/snd 0x3913c4a5 snd_unregister_oss_device +EXPORT_SYMBOL sound/core/snd 0x3971b4df snd_ecards_limit +EXPORT_SYMBOL sound/core/snd 0x4063f475 snd_pci_quirk_lookup +EXPORT_SYMBOL sound/core/snd 0x415bf1b7 snd_ctl_register_ioctl +EXPORT_SYMBOL sound/core/snd 0x436b302f snd_card_file_add +EXPORT_SYMBOL sound/core/snd 0x488e2f02 snd_jack_new +EXPORT_SYMBOL sound/core/snd 0x4a3ea5c0 snd_request_card +EXPORT_SYMBOL sound/core/snd 0x4b33d045 snd_info_free_entry +EXPORT_SYMBOL sound/core/snd 0x56ed6f06 snd_ctl_replace +EXPORT_SYMBOL sound/core/snd 0x59374931 snd_unregister_device +EXPORT_SYMBOL sound/core/snd 0x5b21131f snd_component_add +EXPORT_SYMBOL sound/core/snd 0x602c96f0 copy_to_user_fromio +EXPORT_SYMBOL sound/core/snd 0x60f7324c snd_ctl_make_virtual_master +EXPORT_SYMBOL sound/core/snd 0x63b7904f snd_device_register +EXPORT_SYMBOL sound/core/snd 0x6d860507 snd_card_new +EXPORT_SYMBOL sound/core/snd 0x70571832 snd_ctl_find_numid +EXPORT_SYMBOL sound/core/snd 0x70c15ac1 snd_dma_disable +EXPORT_SYMBOL sound/core/snd 0x728b60d9 snd_ctl_boolean_stereo_info +EXPORT_SYMBOL sound/core/snd 0x75dcc81e snd_ctl_new1 +EXPORT_SYMBOL sound/core/snd 0x81b69e41 snd_ctl_enum_info +EXPORT_SYMBOL sound/core/snd 0x82462c2d snd_device_free +EXPORT_SYMBOL sound/core/snd 0x8a7918c9 snd_ctl_find_id +EXPORT_SYMBOL sound/core/snd 0x8be2307b snd_jack_set_key +EXPORT_SYMBOL sound/core/snd 0x8df3789f snd_oss_info_register +EXPORT_SYMBOL sound/core/snd 0x8f595b11 snd_major +EXPORT_SYMBOL sound/core/snd 0x91d1dadf snd_card_register +EXPORT_SYMBOL sound/core/snd 0x95fecf5b snd_seq_root +EXPORT_SYMBOL sound/core/snd 0x9c3a4f77 snd_card_disconnect +EXPORT_SYMBOL sound/core/snd 0x9e6d79f8 snd_info_get_str +EXPORT_SYMBOL sound/core/snd 0x9ee08eea snd_register_oss_device +EXPORT_SYMBOL sound/core/snd 0xa0fd2427 snd_pci_quirk_lookup_id +EXPORT_SYMBOL sound/core/snd 0xa15ef3aa snd_card_file_remove +EXPORT_SYMBOL sound/core/snd 0xab3ab712 snd_jack_report +EXPORT_SYMBOL sound/core/snd 0xb2e5ae4a snd_lookup_minor_data +EXPORT_SYMBOL sound/core/snd 0xb6977844 snd_card_free_when_closed +EXPORT_SYMBOL sound/core/snd 0xb75660ca snd_ctl_unregister_ioctl +EXPORT_SYMBOL sound/core/snd 0xbaa9ff18 snd_jack_add_new_kctl +EXPORT_SYMBOL sound/core/snd 0xc6d95efe snd_ctl_boolean_mono_info +EXPORT_SYMBOL sound/core/snd 0xcc098506 snd_device_new +EXPORT_SYMBOL sound/core/snd 0xce3ca308 copy_from_user_toio +EXPORT_SYMBOL sound/core/snd 0xcfe95383 snd_ctl_rename_id +EXPORT_SYMBOL sound/core/snd 0xe43b2ff1 snd_info_register +EXPORT_SYMBOL sound/core/snd 0xe930cf6c snd_jack_set_parent +EXPORT_SYMBOL sound/core/snd 0xebe63b42 _snd_ctl_add_slave +EXPORT_SYMBOL sound/core/snd 0xef468631 snd_mixer_oss_notify_callback +EXPORT_SYMBOL sound/core/snd 0xef5399ee snd_power_wait +EXPORT_SYMBOL sound/core/snd 0xf9eb60aa snd_ctl_add +EXPORT_SYMBOL sound/core/snd 0xfa340d2d snd_card_free +EXPORT_SYMBOL sound/core/snd-hwdep 0xf65b09d6 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 0x064a1cef snd_pcm_hw_constraint_mask64 +EXPORT_SYMBOL sound/core/snd-pcm 0x0a11d249 snd_pcm_set_ops +EXPORT_SYMBOL sound/core/snd-pcm 0x19a437fb snd_pcm_lib_writev +EXPORT_SYMBOL sound/core/snd-pcm 0x1b5d0119 snd_pcm_hw_constraint_integer +EXPORT_SYMBOL sound/core/snd-pcm 0x1c47a745 snd_pcm_release_substream +EXPORT_SYMBOL sound/core/snd-pcm 0x1d027e4b snd_pcm_format_signed +EXPORT_SYMBOL sound/core/snd-pcm 0x1d4d9769 snd_pcm_hw_refine +EXPORT_SYMBOL sound/core/snd-pcm 0x1f885cbd snd_pcm_lib_read +EXPORT_SYMBOL sound/core/snd-pcm 0x20424e2a snd_sgbuf_get_chunk_size +EXPORT_SYMBOL sound/core/snd-pcm 0x20fda587 snd_pcm_new +EXPORT_SYMBOL sound/core/snd-pcm 0x25efde94 snd_pcm_lib_mmap_iomem +EXPORT_SYMBOL sound/core/snd-pcm 0x292a9fdc snd_pcm_lib_get_vmalloc_page +EXPORT_SYMBOL sound/core/snd-pcm 0x2e64703b snd_pcm_set_sync +EXPORT_SYMBOL sound/core/snd-pcm 0x2e6a64cd snd_pcm_hw_constraint_pow2 +EXPORT_SYMBOL sound/core/snd-pcm 0x2e93ad96 snd_pcm_sgbuf_ops_page +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 0x3b91f3af snd_free_pages +EXPORT_SYMBOL sound/core/snd-pcm 0x4117006c snd_pcm_lib_free_vmalloc_buffer +EXPORT_SYMBOL sound/core/snd-pcm 0x4d9b6d35 snd_pcm_format_size +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 0x50c8fa94 snd_pcm_suspend +EXPORT_SYMBOL sound/core/snd-pcm 0x52e3e4a5 snd_pcm_hw_param_value +EXPORT_SYMBOL sound/core/snd-pcm 0x56cc79ab snd_dma_alloc_pages_fallback +EXPORT_SYMBOL sound/core/snd-pcm 0x5d572abd snd_pcm_mmap_data +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 0x671960ea snd_pcm_lib_preallocate_free_for_all +EXPORT_SYMBOL sound/core/snd-pcm 0x68a24153 snd_pcm_format_physical_width +EXPORT_SYMBOL sound/core/snd-pcm 0x6980e5de snd_pcm_hw_param_first +EXPORT_SYMBOL sound/core/snd-pcm 0x6ae63a9c snd_pcm_period_elapsed +EXPORT_SYMBOL sound/core/snd-pcm 0x6b07c6b7 _snd_pcm_lib_alloc_vmalloc_buffer +EXPORT_SYMBOL sound/core/snd-pcm 0x6ef8fcd8 snd_pcm_format_linear +EXPORT_SYMBOL sound/core/snd-pcm 0x7320e04d snd_pcm_hw_constraint_step +EXPORT_SYMBOL sound/core/snd-pcm 0x754face2 snd_pcm_lib_malloc_pages +EXPORT_SYMBOL sound/core/snd-pcm 0x7c1728b5 snd_pcm_hw_constraint_ratnums +EXPORT_SYMBOL sound/core/snd-pcm 0x7ec4bac7 snd_pcm_hw_constraint_ranges +EXPORT_SYMBOL sound/core/snd-pcm 0x838cab9b snd_pcm_suspend_all +EXPORT_SYMBOL sound/core/snd-pcm 0x86c1820f snd_pcm_lib_write +EXPORT_SYMBOL sound/core/snd-pcm 0x8c9b8db0 snd_pcm_hw_constraint_msbits +EXPORT_SYMBOL sound/core/snd-pcm 0x94098ff8 snd_interval_list +EXPORT_SYMBOL sound/core/snd-pcm 0x9465a8e6 snd_pcm_open_substream +EXPORT_SYMBOL sound/core/snd-pcm 0x9b064621 snd_pcm_stop +EXPORT_SYMBOL sound/core/snd-pcm 0xa3a818a0 snd_pcm_hw_rule_add +EXPORT_SYMBOL sound/core/snd-pcm 0xa61aa028 snd_pcm_format_unsigned +EXPORT_SYMBOL sound/core/snd-pcm 0xa8c5306f snd_pcm_notify +EXPORT_SYMBOL sound/core/snd-pcm 0xab44a407 snd_pcm_kernel_ioctl +EXPORT_SYMBOL sound/core/snd-pcm 0xade88e76 snd_malloc_pages +EXPORT_SYMBOL sound/core/snd-pcm 0xae865053 snd_pcm_lib_preallocate_pages_for_all +EXPORT_SYMBOL sound/core/snd-pcm 0xb2dd22e5 snd_pcm_new_internal +EXPORT_SYMBOL sound/core/snd-pcm 0xb9638db4 snd_pcm_rate_to_rate_bit +EXPORT_SYMBOL sound/core/snd-pcm 0xba805a00 snd_pcm_lib_ioctl +EXPORT_SYMBOL sound/core/snd-pcm 0xc38c435d snd_pcm_lib_free_pages +EXPORT_SYMBOL sound/core/snd-pcm 0xc9e3f5bf snd_pcm_hw_constraint_list +EXPORT_SYMBOL sound/core/snd-pcm 0xca29bfe1 snd_pcm_limit_hw_rates +EXPORT_SYMBOL sound/core/snd-pcm 0xd5889951 snd_pcm_hw_constraint_ratdens +EXPORT_SYMBOL sound/core/snd-pcm 0xdb9e46b5 snd_dma_free_pages +EXPORT_SYMBOL sound/core/snd-pcm 0xe56a9336 snd_pcm_format_width +EXPORT_SYMBOL sound/core/snd-pcm 0xec798359 snd_pcm_hw_constraint_minmax +EXPORT_SYMBOL sound/core/snd-pcm 0xecb71e8d snd_pcm_lib_readv +EXPORT_SYMBOL sound/core/snd-pcm 0xf3797152 snd_interval_ratnum +EXPORT_SYMBOL sound/core/snd-pcm 0xf409a8d9 snd_pcm_lib_preallocate_pages +EXPORT_SYMBOL sound/core/snd-pcm 0xf736def5 snd_pcm_hw_param_last +EXPORT_SYMBOL sound/core/snd-pcm 0xf9052e2b snd_dma_alloc_pages +EXPORT_SYMBOL sound/core/snd-pcm 0xfb368791 snd_pcm_new_stream +EXPORT_SYMBOL sound/core/snd-pcm 0xfd0dd0bd snd_pcm_hw_rule_noresample +EXPORT_SYMBOL sound/core/snd-pcm 0xff6104d0 snd_pcm_rate_bit_to_rate +EXPORT_SYMBOL sound/core/snd-rawmidi 0x099e189f snd_rawmidi_kernel_open +EXPORT_SYMBOL sound/core/snd-rawmidi 0x191fcc6a snd_rawmidi_receive +EXPORT_SYMBOL sound/core/snd-rawmidi 0x2cd61b53 snd_rawmidi_input_params +EXPORT_SYMBOL sound/core/snd-rawmidi 0x3010f32a snd_rawmidi_transmit_peek +EXPORT_SYMBOL sound/core/snd-rawmidi 0x343c0589 snd_rawmidi_kernel_read +EXPORT_SYMBOL sound/core/snd-rawmidi 0x71bfba01 snd_rawmidi_transmit +EXPORT_SYMBOL sound/core/snd-rawmidi 0x727e3000 snd_rawmidi_drop_output +EXPORT_SYMBOL sound/core/snd-rawmidi 0x7fdecaa0 snd_rawmidi_output_params +EXPORT_SYMBOL sound/core/snd-rawmidi 0x84f6015d snd_rawmidi_transmit_empty +EXPORT_SYMBOL sound/core/snd-rawmidi 0xb4fd04fa snd_rawmidi_transmit_ack +EXPORT_SYMBOL sound/core/snd-rawmidi 0xbece749e snd_rawmidi_info_select +EXPORT_SYMBOL sound/core/snd-rawmidi 0xc0f80eb6 snd_rawmidi_drain_input +EXPORT_SYMBOL sound/core/snd-rawmidi 0xd69087c7 snd_rawmidi_drain_output +EXPORT_SYMBOL sound/core/snd-rawmidi 0xe269db48 snd_rawmidi_new +EXPORT_SYMBOL sound/core/snd-rawmidi 0xed2cc108 snd_rawmidi_kernel_release +EXPORT_SYMBOL sound/core/snd-rawmidi 0xf12f29c6 snd_rawmidi_kernel_write +EXPORT_SYMBOL sound/core/snd-rawmidi 0xfd1e71c5 snd_rawmidi_set_ops +EXPORT_SYMBOL sound/core/snd-timer 0x08664618 snd_timer_close +EXPORT_SYMBOL sound/core/snd-timer 0x1d0d3b16 snd_timer_open +EXPORT_SYMBOL sound/core/snd-timer 0x209bb338 snd_timer_resolution +EXPORT_SYMBOL sound/core/snd-timer 0x27521df8 snd_timer_start +EXPORT_SYMBOL sound/core/snd-timer 0x338f478d snd_timer_global_free +EXPORT_SYMBOL sound/core/snd-timer 0x3b0e1ec7 snd_timer_notify +EXPORT_SYMBOL sound/core/snd-timer 0x51400e6f snd_timer_stop +EXPORT_SYMBOL sound/core/snd-timer 0x639cc6b3 snd_timer_global_new +EXPORT_SYMBOL sound/core/snd-timer 0x76c83ab9 snd_timer_pause +EXPORT_SYMBOL sound/core/snd-timer 0xabece6b6 snd_timer_continue +EXPORT_SYMBOL sound/core/snd-timer 0xb0c5d292 snd_timer_interrupt +EXPORT_SYMBOL sound/core/snd-timer 0xba6e9f42 snd_timer_global_register +EXPORT_SYMBOL sound/core/snd-timer 0xbb719db8 snd_timer_new +EXPORT_SYMBOL sound/drivers/mpu401/snd-mpu401-uart 0x6d629c59 snd_mpu401_uart_interrupt_tx +EXPORT_SYMBOL sound/drivers/mpu401/snd-mpu401-uart 0x8cbc15b8 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 0x088992c8 snd_opl3_load_patch +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x337aa052 snd_opl3_find_patch +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x894e0d3e snd_opl3_create +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x93af938e snd_opl3_init +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xa2cf10e0 snd_opl3_hwdep_new +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xa459a034 snd_opl3_timer_new +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xb77480a8 snd_opl3_new +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xc4ff9a26 snd_opl3_interrupt +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xd3bc53db snd_opl3_reset +EXPORT_SYMBOL sound/drivers/opl4/snd-opl4-lib 0x2aaadcc3 snd_opl4_create +EXPORT_SYMBOL sound/drivers/opl4/snd-opl4-lib 0x5115c820 snd_opl4_read +EXPORT_SYMBOL sound/drivers/opl4/snd-opl4-lib 0x781d583e snd_opl4_read_memory +EXPORT_SYMBOL sound/drivers/opl4/snd-opl4-lib 0x9a394617 snd_opl4_write +EXPORT_SYMBOL sound/drivers/opl4/snd-opl4-lib 0xe2303aa8 snd_opl4_write_memory +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x0244cbf4 snd_vx_resume +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x226138b0 snd_vx_threaded_irq_handler +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x44983ad9 snd_vx_check_reg_bit +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x795f11a2 snd_vx_suspend +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x93498e1c snd_vx_load_boot_image +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x9fe6f29c snd_vx_dsp_boot +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xc6766183 snd_vx_create +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xe167c23e snd_vx_dsp_load +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xf1f04d23 snd_vx_irq_handler +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xfbd2bc0f snd_vx_setup_firmware +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xfea5bf2f snd_vx_free_firmware +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x0162add1 cmp_connection_update +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x04341d68 fcp_avc_transaction +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x17cbe073 avc_general_get_sig_fmt +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x1d53ef3f amdtp_stream_update +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x20254e45 amdtp_syt_intervals +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x37e4bd46 cmp_connection_establish +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x3814daa4 amdtp_stream_pcm_abort +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x3d789e37 amdtp_stream_set_parameters +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x3eee94ba amdtp_stream_pcm_pointer +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x4731bebd amdtp_stream_pcm_prepare +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x493e161f amdtp_stream_get_max_payload +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x53ca18e8 amdtp_rate_table +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x56d2c29a amdtp_stream_stop +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x637e8cf6 amdtp_stream_start +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x6bbcd43f amdtp_stream_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x7a95c093 iso_packets_buffer_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x7aaa28bf fw_iso_resources_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x8195f651 fcp_bus_reset +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x8395126c avc_general_get_plug_info +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xa02069a0 fw_iso_resources_allocate +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xa1169c81 cmp_connection_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xa33e267a cmp_connection_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xb1300c0c cmp_connection_check_used +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xb7c2bfed snd_fw_transaction +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xbb0a2230 cmp_connection_break +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xcac51d28 fw_iso_resources_free +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xceafd6f0 fw_iso_resources_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xcffb4907 amdtp_stream_add_pcm_hw_constraints +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xe31fcaa9 amdtp_stream_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xe54f2c24 fw_iso_resources_update +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xe57fac2d avc_general_set_sig_fmt +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xec0d880d amdtp_stream_set_pcm_format +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xf692db47 iso_packets_buffer_destroy +EXPORT_SYMBOL sound/i2c/other/snd-ak4113 0x159aa5c3 snd_ak4113_suspend +EXPORT_SYMBOL sound/i2c/other/snd-ak4113 0x8e93aa91 snd_ak4113_resume +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x2d7af624 snd_ak4114_resume +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x4be5b7f3 snd_ak4114_check_rate_and_errors +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0xa9b9cf28 snd_ak4114_external_rate +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0xb31dda5a snd_ak4114_create +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0xb8e3410b snd_ak4114_reg_write +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0xd1b5206f snd_ak4114_build +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0xece9ce5e snd_ak4114_reinit +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0xfd96fb7b snd_ak4114_suspend +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0x12382d2b snd_ak4117_create +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0x23aa81f4 snd_ak4117_reg_write +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0x733a90e0 snd_ak4117_build +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0x8dbe6b90 snd_ak4117_reinit +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0xa1b0f66a snd_ak4117_external_rate +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0xfec60ec8 snd_ak4117_check_rate_and_errors +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0x1412b1e3 snd_akm4xxx_reset +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0x76f1085f snd_akm4xxx_init +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0x88e19209 snd_akm4xxx_write +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0xad5fa21b snd_akm4xxx_build_controls +EXPORT_SYMBOL sound/i2c/other/snd-pt2258 0x7b0a3d99 snd_pt2258_build_controls +EXPORT_SYMBOL sound/i2c/other/snd-pt2258 0xf34afd71 snd_pt2258_reset +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x0574e833 snd_cs8427_iec958_build +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x646f06f1 snd_cs8427_reg_write +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x6bb7785b snd_cs8427_init +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x72c70e68 snd_cs8427_iec958_active +EXPORT_SYMBOL sound/i2c/snd-cs8427 0xa44e7f0d snd_cs8427_iec958_pcm +EXPORT_SYMBOL sound/i2c/snd-cs8427 0xca8d6a13 snd_cs8427_create +EXPORT_SYMBOL sound/i2c/snd-i2c 0x8e079f9d snd_i2c_device_free +EXPORT_SYMBOL sound/i2c/snd-i2c 0x8ff535f6 snd_i2c_bus_create +EXPORT_SYMBOL sound/i2c/snd-i2c 0xbb694198 snd_i2c_probeaddr +EXPORT_SYMBOL sound/i2c/snd-i2c 0xd522c3df snd_i2c_readbytes +EXPORT_SYMBOL sound/i2c/snd-i2c 0xe4827349 snd_i2c_device_create +EXPORT_SYMBOL sound/i2c/snd-i2c 0xeb0d7e4d snd_i2c_sendbytes +EXPORT_SYMBOL sound/i2c/snd-tea6330t 0x824a8292 snd_tea6330t_update_mixer +EXPORT_SYMBOL sound/i2c/snd-tea6330t 0xe3e3e412 snd_tea6330t_detect +EXPORT_SYMBOL sound/isa/es1688/snd-es1688-lib 0x0066f165 snd_es1688_mixer_write +EXPORT_SYMBOL sound/isa/es1688/snd-es1688-lib 0x39a860df snd_es1688_reset +EXPORT_SYMBOL sound/isa/es1688/snd-es1688-lib 0x4fd515d6 snd_es1688_create +EXPORT_SYMBOL sound/isa/es1688/snd-es1688-lib 0x57494b91 snd_es1688_mixer +EXPORT_SYMBOL sound/isa/es1688/snd-es1688-lib 0x87c2ffab snd_es1688_pcm +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0x0899268c snd_gus_create +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0x0ba5ce35 snd_gus_use_dec +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0x0c43d728 snd_gf1_write16 +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0x1749f492 snd_gf1_translate_freq +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0x1c1ce117 snd_gus_interrupt +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0x28ff9c5a snd_gf1_ctrl_stop +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0x3a23d30a snd_gus_dram_write +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0x4061f2b1 snd_gf1_write_addr +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0x43c1d8a8 snd_gf1_peek +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0x46db8d67 snd_gf1_lvol_to_gvol_raw +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0x480a2abd snd_gus_initialize +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0x4b79585a snd_gf1_new_mixer +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0x4cadf3ad snd_gf1_write8 +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0x535f82d9 snd_gf1_i_write8 +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0x56c5d5c9 snd_gus_use_inc +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0x5e4a21d0 snd_gf1_rawmidi_new +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0x63349524 snd_gf1_stop_voice +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0x6eabeed8 snd_gf1_i_look8 +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0x76aad947 snd_gf1_mem_lock +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0xa15dc136 snd_gf1_pcm_new +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0xa5a6b63c snd_gf1_free_voice +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0xa7f037ed snd_gf1_mem_xfree +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0xb2141208 snd_gf1_look8 +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0xbda0c372 snd_gf1_look16 +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0xc13e5767 snd_gf1_i_look16 +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0xc43a5527 snd_gf1_atten_table +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0xc5ec289d snd_gf1_poke +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0xcf437ba4 snd_gf1_alloc_voice +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0xd3549a27 snd_gf1_mem_free +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0xd67e259f snd_gus_dram_read +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0xd83a198e snd_gf1_dram_addr +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0xe6b4d81d snd_gf1_delay +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0xf38f001d snd_gf1_mem_alloc +EXPORT_SYMBOL sound/isa/msnd/snd-msnd-lib 0x011a1130 snd_msnd_DARQ +EXPORT_SYMBOL sound/isa/msnd/snd-msnd-lib 0x0e096be3 snd_msnd_init_queue +EXPORT_SYMBOL sound/isa/msnd/snd-msnd-lib 0x17f6ba8d snd_msndmix_force_recsrc +EXPORT_SYMBOL sound/isa/msnd/snd-msnd-lib 0x38eeefaf snd_msnd_disable_irq +EXPORT_SYMBOL sound/isa/msnd/snd-msnd-lib 0x69253ae4 snd_msndmix_new +EXPORT_SYMBOL sound/isa/msnd/snd-msnd-lib 0x75026b24 snd_msndmidi_input_read +EXPORT_SYMBOL sound/isa/msnd/snd-msnd-lib 0x7db71e08 snd_msnd_pcm +EXPORT_SYMBOL sound/isa/msnd/snd-msnd-lib 0x85c5f3ab snd_msnd_send_word +EXPORT_SYMBOL sound/isa/msnd/snd-msnd-lib 0x8e501cdd snd_msnd_upload_host +EXPORT_SYMBOL sound/isa/msnd/snd-msnd-lib 0xa3612216 snd_msndmix_setup +EXPORT_SYMBOL sound/isa/msnd/snd-msnd-lib 0xb3c1f9be snd_msnd_send_dsp_cmd +EXPORT_SYMBOL sound/isa/msnd/snd-msnd-lib 0xea8cdd7a snd_msnd_dsp_halt +EXPORT_SYMBOL sound/isa/msnd/snd-msnd-lib 0xed935abc snd_msnd_enable_irq +EXPORT_SYMBOL sound/isa/msnd/snd-msnd-lib 0xf7275a7d snd_msnd_DAPQ +EXPORT_SYMBOL sound/isa/opti9xx/snd-miro 0x0423f313 snd_aci_get_aci +EXPORT_SYMBOL sound/isa/opti9xx/snd-miro 0xe9fe77cf snd_aci_cmd +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x0a0de4ef snd_sbmixer_read +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x3cea605c snd_sbmixer_resume +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x570eb3d7 snd_sbmixer_add_ctl +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x6dead482 snd_sbmixer_write +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x7baf1d20 snd_sbdsp_create +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0xb367703f snd_sbmixer_suspend +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0xcb557e13 snd_sbmixer_new +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0xdd8d768d snd_sbdsp_reset +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0xf8519021 snd_sbdsp_command +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0xfdaf4f7c snd_sbdsp_get_byte +EXPORT_SYMBOL sound/isa/sb/snd-sb16-csp 0x54d00d07 snd_sb_csp_new +EXPORT_SYMBOL sound/isa/sb/snd-sb16-dsp 0x18e3ac40 snd_sb16dsp_get_pcm_ops +EXPORT_SYMBOL sound/isa/sb/snd-sb16-dsp 0x6c3d7ca9 snd_sb16dsp_configure +EXPORT_SYMBOL sound/isa/sb/snd-sb16-dsp 0xbb0778a7 snd_sb16dsp_pcm +EXPORT_SYMBOL sound/isa/sb/snd-sb16-dsp 0xe0b3f690 snd_sb16dsp_interrupt +EXPORT_SYMBOL sound/isa/sb/snd-sb8-dsp 0x22d06fea snd_sb8dsp_midi +EXPORT_SYMBOL sound/isa/sb/snd-sb8-dsp 0x806ab6de snd_sb8dsp_pcm +EXPORT_SYMBOL sound/isa/sb/snd-sb8-dsp 0xaa149055 snd_sb8dsp_interrupt +EXPORT_SYMBOL sound/isa/sb/snd-sb8-dsp 0xe6d81858 snd_sb8dsp_midi_interrupt +EXPORT_SYMBOL sound/isa/sb/snd-sbawe 0x1ae9f1d6 snd_emu8000_update_chorus_mode +EXPORT_SYMBOL sound/isa/sb/snd-sbawe 0x294798ba snd_emu8000_poke_dw +EXPORT_SYMBOL sound/isa/sb/snd-sbawe 0x3199a20c snd_emu8000_load_reverb_fx +EXPORT_SYMBOL sound/isa/sb/snd-sbawe 0x45f49366 snd_emu8000_init_fm +EXPORT_SYMBOL sound/isa/sb/snd-sbawe 0x491cf9e5 snd_emu8000_peek_dw +EXPORT_SYMBOL sound/isa/sb/snd-sbawe 0x5fb5d43a snd_emu8000_load_chorus_fx +EXPORT_SYMBOL sound/isa/sb/snd-sbawe 0x76b3387c snd_emu8000_poke +EXPORT_SYMBOL sound/isa/sb/snd-sbawe 0x88f8425e snd_emu8000_update_reverb_mode +EXPORT_SYMBOL sound/isa/sb/snd-sbawe 0xd45fd6cf snd_emu8000_peek +EXPORT_SYMBOL sound/isa/sb/snd-sbawe 0xee1c04ee snd_emu8000_dma_chan +EXPORT_SYMBOL sound/isa/sb/snd-sbawe 0xffd7dbaa snd_emu8000_update_equalizer +EXPORT_SYMBOL sound/isa/wss/snd-wss-lib 0x04d76499 snd_wss_mce_down +EXPORT_SYMBOL sound/isa/wss/snd-wss-lib 0x2824fb12 snd_wss_pcm +EXPORT_SYMBOL sound/isa/wss/snd-wss-lib 0x3573baf5 snd_wss_chip_id +EXPORT_SYMBOL sound/isa/wss/snd-wss-lib 0x51895a4f snd_cs4236_ext_in +EXPORT_SYMBOL sound/isa/wss/snd-wss-lib 0x7b0cebeb snd_wss_overrange +EXPORT_SYMBOL sound/isa/wss/snd-wss-lib 0x7b202637 snd_wss_interrupt +EXPORT_SYMBOL sound/isa/wss/snd-wss-lib 0xa15606b5 snd_wss_get_single +EXPORT_SYMBOL sound/isa/wss/snd-wss-lib 0xa2c8e000 snd_wss_get_double +EXPORT_SYMBOL sound/isa/wss/snd-wss-lib 0xa9e202f3 snd_wss_get_pcm_ops +EXPORT_SYMBOL sound/isa/wss/snd-wss-lib 0xac990425 snd_wss_mce_up +EXPORT_SYMBOL sound/isa/wss/snd-wss-lib 0xc17c5240 snd_wss_in +EXPORT_SYMBOL sound/isa/wss/snd-wss-lib 0xc482547e snd_wss_create +EXPORT_SYMBOL sound/isa/wss/snd-wss-lib 0xc6da26c5 snd_cs4236_ext_out +EXPORT_SYMBOL sound/isa/wss/snd-wss-lib 0xcd0a403f snd_wss_mixer +EXPORT_SYMBOL sound/isa/wss/snd-wss-lib 0xcdf0d081 snd_wss_info_double +EXPORT_SYMBOL sound/isa/wss/snd-wss-lib 0xdfb28f3e snd_wss_timer +EXPORT_SYMBOL sound/isa/wss/snd-wss-lib 0xe5f46903 snd_wss_info_single +EXPORT_SYMBOL sound/isa/wss/snd-wss-lib 0xedd6c55a snd_wss_put_single +EXPORT_SYMBOL sound/isa/wss/snd-wss-lib 0xee4823ef snd_wss_put_double +EXPORT_SYMBOL sound/isa/wss/snd-wss-lib 0xff44aaa2 snd_wss_out +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x0632065b snd_ac97_tune_hardware +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x07008342 snd_ac97_suspend +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x1052cc64 snd_ac97_set_rate +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x1cbc650f snd_ac97_pcm_open +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x59576600 snd_ac97_pcm_close +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x5cba7da0 snd_ac97_write +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x60d90852 snd_ac97_update +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x67510dd0 snd_ac97_update_power +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x747e849f snd_ac97_pcm_assign +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x97941ae0 snd_ac97_bus +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xa3f2d6b6 snd_ac97_pcm_double_rate_rules +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xbc85ba0e snd_ac97_get_short_name +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xc5132bf6 snd_ac97_resume +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xc8ee5627 snd_ac97_mixer +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xdd31fe95 snd_ac97_read +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xed24c83d snd_ac97_update_bits +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xf3dff368 snd_ac97_write_cache +EXPORT_SYMBOL sound/pci/asihpi/snd-asihpi 0x74f650f8 hpi_send_recv +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x0da000a9 snd_emu10k1_voice_alloc +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x35403cc7 snd_emu10k1_synth_copy_from_user +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x4d988e8c snd_emu10k1_synth_free +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xa88f7a43 snd_emu10k1_voice_free +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xc20cfcb3 snd_emu10k1_synth_bzero +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xc2682d41 snd_emu10k1_synth_alloc +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xd1e1ffce snd_emu10k1_memblk_map +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xd288dff6 snd_emu10k1_ptr_read +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xe2517388 snd_emu10k1_ptr_write +EXPORT_SYMBOL sound/pci/ice1712/snd-ice17xx-ak4xxx 0x5ee5b7c2 snd_ice1712_akm4xxx_free +EXPORT_SYMBOL sound/pci/ice1712/snd-ice17xx-ak4xxx 0xc95788a5 snd_ice1712_akm4xxx_init +EXPORT_SYMBOL sound/pci/ice1712/snd-ice17xx-ak4xxx 0xcf9c7d59 snd_ice1712_akm4xxx_build_controls +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x020eb778 oxygen_read16 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x2ee83ce9 oxygen_write_ac97 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x304cd7a4 oxygen_read32 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x3bfe7629 oxygen_write_uart +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x487a5d0a oxygen_pci_probe +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x4895b94d oxygen_read_ac97 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x5402b8ef oxygen_write_spi +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x54d19186 oxygen_pci_pm +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x6a080bc0 oxygen_write_ac97_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x6f71e9a7 oxygen_write32_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x766e4268 oxygen_update_dac_routing +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x846c2244 oxygen_pci_shutdown +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xb502129f oxygen_pci_remove +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xba1fb035 oxygen_read8 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xc66d4c71 oxygen_write16_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xd088d2b3 oxygen_write8 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xd6848da3 oxygen_write16 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xdb03b284 oxygen_reset_uart +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xdb8336d0 oxygen_write8_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xdca33935 oxygen_write32 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xde8696bc oxygen_write_i2c +EXPORT_SYMBOL sound/pci/trident/snd-trident 0x6f51c573 snd_trident_alloc_voice +EXPORT_SYMBOL sound/pci/trident/snd-trident 0x72046835 snd_trident_write_voice_regs +EXPORT_SYMBOL sound/pci/trident/snd-trident 0xa054f123 snd_trident_free_voice +EXPORT_SYMBOL sound/pci/trident/snd-trident 0xb8a7de72 snd_trident_stop_voice +EXPORT_SYMBOL sound/pci/trident/snd-trident 0xda04e2b1 snd_trident_start_voice +EXPORT_SYMBOL sound/soc/codecs/snd-soc-tlv320aic23 0x095e4b39 tlv320aic23_regmap +EXPORT_SYMBOL sound/soc/codecs/snd-soc-tlv320aic23 0x388c7356 tlv320aic23_probe +EXPORT_SYMBOL sound/soc/intel/common/snd-soc-sst-dsp 0x5ab95e2b sst_dma_new +EXPORT_SYMBOL sound/soc/intel/common/snd-soc-sst-dsp 0xdc045797 sst_dma_free +EXPORT_SYMBOL sound/soc/snd-soc-core 0xbfb38d6c snd_soc_alloc_ac97_codec +EXPORT_SYMBOL sound/soundcore 0x21c5eff2 sound_class +EXPORT_SYMBOL sound/soundcore 0x6987afef register_sound_midi +EXPORT_SYMBOL sound/soundcore 0x7afc9d8a unregister_sound_mixer +EXPORT_SYMBOL sound/soundcore 0x83f0e021 register_sound_special_device +EXPORT_SYMBOL sound/soundcore 0x978d4ba2 register_sound_dsp +EXPORT_SYMBOL sound/soundcore 0x99c95fa5 unregister_sound_special +EXPORT_SYMBOL sound/soundcore 0xa4c45ad9 register_sound_special +EXPORT_SYMBOL sound/soundcore 0xb1248ce0 register_sound_mixer +EXPORT_SYMBOL sound/soundcore 0xcd083b10 unregister_sound_dsp +EXPORT_SYMBOL sound/soundcore 0xfdab6de3 unregister_sound_midi +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x02cdec4f snd_emux_register +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x1fe48460 snd_emux_new +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x655cb202 snd_sf_linear_to_log +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x6f63ead0 snd_emux_unlock_voice +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x9486639a snd_emux_terminate_all +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x9dd001ab snd_emux_lock_voice +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0xa1c5ac0f snd_emux_free +EXPORT_SYMBOL sound/synth/snd-util-mem 0x009c0d82 snd_util_mem_avail +EXPORT_SYMBOL sound/synth/snd-util-mem 0x0dfa3b3b __snd_util_memblk_new +EXPORT_SYMBOL sound/synth/snd-util-mem 0x82ace363 snd_util_memhdr_free +EXPORT_SYMBOL sound/synth/snd-util-mem 0x8a67e9b4 snd_util_mem_alloc +EXPORT_SYMBOL sound/synth/snd-util-mem 0xa70c3052 __snd_util_mem_free +EXPORT_SYMBOL sound/synth/snd-util-mem 0xc3694db6 snd_util_mem_free +EXPORT_SYMBOL sound/synth/snd-util-mem 0xcabdefa8 __snd_util_mem_alloc +EXPORT_SYMBOL sound/synth/snd-util-mem 0xd0c0a029 snd_util_memhdr_new +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 0xf40f05e1 snd_usbmidi_create +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x002d778d VBoxGuest_RTMpNotificationDeregister +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x0064d4f7 VBoxGuest_RTSemFastMutexCreate +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x00712528 VBoxGuest_RTAssertMsg2Weak +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x01795170 VBoxGuest_RTMpGetCoreCount +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x0276540a VBoxGuest_RTLogPrintfV +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x03d8513f VBoxGuest_RTThreadSetName +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x05626dc7 VBoxGuest_RTR0MemObjReserveKernelTag +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x0665bcaa VBoxGuest_RTAssertSetMayPanic +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x0823cb2f VBoxGuest_RTMemAllocTag +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x08b98b3c VBoxGuest_RTMpCpuIdFromSetIndex +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x08d7a261 VBoxGuest_RTThreadSelfName +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x09458185 VBoxGuest_RTR0MemAreKrnlAndUsrDifferent +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x0b14ec2c VBoxGuest_RTThreadCreateF +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x0b628628 VBoxGuest_RTSemEventMultiDestroy +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x0b94344b VBoxGuest_g_pszRTAssertExpr +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x0d1abebe VBoxGuest_RTLogFlush +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x0dfb68c6 VBoxGuest_RTSemEventWait +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x0e1a390f VBoxGuest_RTStrToInt8Full +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x104391d1 VBoxGuest_RTSemMutexDestroy +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x113a02d9 VBoxGuest_RTMpOnPair +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x127e9d01 VBoxGuest_RTTimerRequestSystemGranularity +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x143fba5b VBoxGuest_RTThreadPreemptDisable +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x14835127 VBoxGuest_RTAssertMsg2AddWeak +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x16d72922 VBoxGuest_RTR0MemObjIsMapping +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x17d84704 VBoxGuest_RTSpinlockCreate +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x187c16e2 VBoxGuest_RTLogCreate +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x19087f6f VBoxGuest_RTSemEventMultiWaitEx +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x1a79fedb VBoxGuest_RTSemMutexRequestNoResumeDebug +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x1abe7e93 VBoxGuest_RTThreadGetNative +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x1ad481e4 VBoxGuest_RTLogLogger +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x1d042132 VBoxGuest_RTMemContFree +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x1e7216d7 VBoxGuest_RTThreadFromNative +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x1efa8169 VBoxGuest_RTThreadUserSignal +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x1f152547 VBoxGuest_RTMpGetMaxCpuId +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x1fc40aab VBoxGuest_RTR0MemObjReserveUserTag +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x21b1ee43 VBoxGuest_RTThreadSleepNoLog +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x221205d1 VBoxGuest_RTThreadSetType +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x2280771d VBoxGuestIDCCall +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x22bd51c7 VBoxGuest_RTErrConvertToErrno +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x23a552fd VBoxGuest_RTMpIsCpuOnline +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x246391eb VBoxGuest_RTStrToUInt16Full +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x25938e5f VBoxGuest_RTLogWriteDebugger +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x267da4c4 VBoxGuest_RTThreadIsMain +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x27740cb3 VBoxGuest_RTStrToUInt8Ex +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x2902013c VBoxGuest_RTTimerGetSystemGranularity +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x29066860 VBoxGuest_RTStrConvertHexBytes +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x2972116c VBoxGuest_RTThreadPreemptIsEnabled +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x29bf3685 VBoxGuest_RTThreadGetName +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x2b015c38 VBoxGuest_RTMpOnAll +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x2b5f52a8 VBoxGuest_RTMpCurSetIndexAndId +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x2bad2a8e VBoxGuest_RTStrToInt16 +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x2c5b3002 VBoxGuest_RTErrConvertFromErrno +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x2d27c026 VBoxGuest_RTSemEventWaitExDebug +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x2e136d3c VBoxGuest_RTR0MemObjAllocPhysExTag +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x309de102 VBoxGuest_RTMpCpuId +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x3519743a VBoxGuest_RTMpCurSetIndex +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x3534ed69 VBoxGuest_RTMemAllocVarTag +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x353b64a3 VBoxGuest_RTSemMutexRelease +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x353e5a81 VBoxGuest_RTSemEventMultiReset +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x365d44f1 VBoxGuest_RTR0MemObjMapKernelExTag +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x36e780e0 VBoxGuest_RTStrToUInt8Full +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x37b2d47a VBoxGuest_RTStrPrintf +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x39df70a0 VBoxGuest_RTStrPrintfV +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x3a29bcdb VBoxGuest_RTThreadIsInitialized +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x3a77155a VBoxGuest_RTMpOnPairIsConcurrentExecSupported +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x3b0a3d87 VBoxGuest_RTMemAllocZVarTag +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x3d00f113 VBoxGuest_g_u32RTAssertLine +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x3ed3a918 VBoxGuest_RTAssertMsg1 +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x3f452f12 VBoxGuest_RTR0MemObjAllocPageTag +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x3f8d56e7 VBoxGuest_RTMemDupTag +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x4002b8b4 VBoxGuest_RTTimeSpecToString +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x405901ff VBoxGuest_RTStrFormatTypeRegister +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x428e3456 VBoxGuest_RTR0Term +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x428eb5ba VBoxGuest_RTMemTmpAllocZTag +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x42c5bff2 VBoxGuest_RTLogRelLogger +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x432b6724 VBoxGuest_RTR0MemObjAllocPhysNCTag +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x433ceadb VBoxGuest_RTLogWriteStdOut +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x4453e900 VBoxGuest_RTR0MemObjProtect +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x4484f9ee VBoxGuest_RTTimerStart +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x44ce618e VBoxGuest_RTMemAllocExTag +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x453e64fb VBoxGuest_RTSemEventMultiSignal +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x45933412 VBoxGuest_RTStrToInt8Ex +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x4597652f VBoxGuest_RTStrFormat +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x45d332ae VBoxGuest_RTMemReallocTag +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x46b36f60 VBoxGuest_RTTimeSpecFromString +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x4819f15e VBoxGuest_RTThreadWait +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x48487b79 VBoxGuest_RTLogDefaultInstanceEx +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x4983ea42 VBoxGuest_RTAssertShouldPanic +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x4aca506e VBoxGuest_RTStrToUInt32Ex +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x4d0161ca VBoxGuest_RTLogBackdoorPrintf +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x4d47859f VBoxGuest_RTR0MemKernelCopyTo +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x4e6d6986 VBoxGuest_RTStrToUInt16 +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x4e7faa59 VBoxGuest_RTStrToInt64 +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x503f488a VBoxGuest_RTLogRelSetDefaultInstance +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x5045b702 VBoxGuest_RTLogGetDestinations +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x5118e8ae VBoxGuest_RTStrToUInt64 +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x52041f46 VBoxGuest_RTThreadPreemptIsPossible +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x53602f45 VBoxGuest_RTMemTmpFree +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x539dd662 VBoxGuest_RTTimeSystemMilliTS +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x53b772da VBoxGuest_RTAssertSetQuiet +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x543527dc VBoxGuest_RTLogWriteStdErr +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x5460fc01 VBoxGuest_RTTimeImplode +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x54abe5d4 VBoxGuest_RTSemMutexRequestNoResume +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x54e45046 VBoxGuest_RTR0MemObjAllocLowTag +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x55c48692 VBoxGuest_RTMpIsCpuWorkPending +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x57280c42 VBoxGuest_RTR0MemExecDonate +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x57406d20 VBoxGuest_RTR0ProcHandleSelf +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x5929b954 VBoxGuest_RTPowerSignalEvent +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x5936a317 VBoxGuest_RTR0MemObjAddress +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x59390acb VBoxGuest_RTTimeIsLeapYear +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x5ad3216a VBoxGuest_RTR0MemKernelIsValidAddr +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x5b0eaa4d VBoxGuest_RTThreadWaitNoResume +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x5c15981f VBoxGuest_RTMemContAlloc +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x5ca67994 VBoxGuest_RTLogDestinations +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x613042f7 VBoxGuest_RTR0MemObjMapUserTag +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x622a261f VBoxGuest_RTPowerNotificationRegister +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x622bf330 VBoxGuest_RTMemAllocZTag +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x62fd45a8 VBoxGuest_RTTimeNanoTS +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x63ba9fd2 VBoxGuest_RTLogGetDefaultInstance +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x64655cd4 VBoxGuest_RTSemEventMultiWaitExDebug +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x64af2463 VBoxGuest_RTStrToInt32 +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x650e77e8 VBoxGuest_RTMpGetCount +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x651c778b VBoxGuest_RTSemEventMultiCreate +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x6549a3e0 VBoxGuest_RTTimeFromString +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x65b04e5d VBoxGuest_RTStrToUInt64Full +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x687ae6ac VBoxGuest_RTStrToUInt64Ex +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x6a930d21 VBoxGuest_RTTimerCanDoHighResolution +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x6bcedab4 VBoxGuest_RTThreadPreemptIsPending +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x6c17021e VBoxGuest_RTThreadUserReset +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x6c2df755 VBoxGuest_RTAssertMsg1Weak +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x6ca5b4ec VBoxGuest_RTSemEventMultiGetResolution +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x6f8ed216 VBoxGuest_RTStrToUInt16Ex +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x6fd2e761 VBoxGuest_RTTimeNormalize +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x713f25d5 VBoxGuestIDCClose +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x715699a0 VBoxGuest_RTSpinlockDestroy +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x72d1c8f4 VBoxGuestIDCOpen +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x73a23c8b VBoxGuest_RTLogRelPrintf +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x73f65247 VBoxGuest_RTStrToInt32Full +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x744623d2 VBoxGuest_RTSemMutexCreate +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x753d3a3a VBoxGuest_RTLogFormatV +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x755479c2 VBoxGuest_RTR0MemObjLockKernelTag +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x75bee68e VBoxGuest_RTThreadIsSelfKnown +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x76608be1 VBoxGuest_RTSemSpinMutexCreate +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x766a8684 VBoxGuest_RTThreadCreateV +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x76b885fb VBoxGuest_RTLogGetDefaultInstanceEx +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x76bb35b9 VBoxGuest_RTLogLoggerEx +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x76dbecb7 VBoxGuest_RTProcSelf +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x77248ef3 VBoxGuest_RTR0MemObjLockUserTag +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x7841b10d VBoxGuest_RTMpIsCpuPossible +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x78ad2401 VBoxGuest_RTStrToInt8 +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x797e701f VBoxGuest_RTLogCreateEx +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x79aefc0b VBoxGuest_RTTimeNow +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x7ac53b51 VBoxGuest_RTR0MemUserCopyFrom +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x7ae3b63b VBoxGuest_RTStrToUInt32 +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x7b423f4c VBoxGuest_RTLogGetFlags +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x7cef940f VBoxGuest_RTStrToUInt8 +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x80162938 VBoxGuest_RTStrFormatV +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x8229caac VBoxGuest_RTThreadUserWait +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x847577ac VBoxGuest_RTMpGetOnlineCount +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x84e86094 VBoxGuest_RTStrPrintfExV +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x854806f2 VBoxGuest_RTSpinlockAcquire +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x8587f091 VBoxGuest_RTR0MemUserCopyTo +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x85afce7f VBoxGuest_RTMpNotificationRegister +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x867199c4 VBoxGuest_RTMpPokeCpu +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x86f9f023 VBoxGuest_RTSemFastMutexRequest +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x87abe8dd VBoxGuest_RTR0MemObjSize +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x8ab21a95 VBoxGuest_RTSemSpinMutexDestroy +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x8b4fd3ef VBoxGuest_RTTimeSystemNanoTS +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x8ff5c8e5 VBoxGuest_RTSemEventMultiWaitNoResume +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x937cd6a2 VBoxGuest_RTLogComPrintf +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x9474d99a VBoxGuest_RTSemFastMutexDestroy +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x951fbe81 VBoxGuest_RTLogLoggerV +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x953b2ba4 VBoxGuest_RTLogSetDefaultInstance +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x983f332c VBoxGuest_RTSemSpinMutexRequest +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x9853901a VBoxGuest_RTAssertMsg2Add +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x98a8f55f VBoxGuest_RTMpGetPresentCoreCount +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x9909ff3d VBoxGuest_g_pszRTAssertFunction +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x993cc778 VBoxGuest_RTLogRelSetBuffering +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x99ee476f VBoxGuest_RTThreadYield +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x9b02b021 VBoxGuest_RTThreadSleep +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x9be73ec4 VBoxGuest_RTMpCpuIdToSetIndex +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x9dc75797 VBoxGuest_RTLogBackdoorPrintfV +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x9e97ef59 VBoxGuest_RTSemEventWaitNoResume +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x9eb3db26 VBoxGuest_RTR0MemObjAllocPhysTag +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xa21775d1 VBoxGuest_RTSemFastMutexRelease +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xa2c23601 VBoxGuest_RTR0MemObjAllocContTag +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xa3ff74bf VBoxGuest_RTStrToInt16Full +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xa52847a2 VBoxGuest_RTR0MemUserIsValidAddr +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xa5655a80 VBoxGuest_RTTimerReleaseSystemGranularity +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xa582aeba VBoxGuest_RTMemExecFree +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xa5f0f1ad VBoxGuest_RTAssertMsg2 +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xa61aa915 VBoxGuest_RTR0MemObjFree +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xa6209fc7 VBoxGuest_RTLogPrintf +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xa74258ab VBoxGuest_RTTimeExplode +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xa8a47d40 VBoxGuest_RTLogLoggerExV +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xaaab8c57 VBoxGuest_RTLogRelGetDefaultInstanceEx +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xaadc0b5d VBoxGuest_RTTimerChangeInterval +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xab5ee692 VBoxGuest_RTLogWriteUser +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xab871924 VBoxGuest_RTThreadPreemptIsPendingTrusty +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xacaac41d VBoxGuest_g_szRTAssertMsg1 +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xadb5cc54 VBoxGuest_RTStrFormatTypeSetUser +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xae21ae1f VBoxGuest_RTThreadCreate +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xb2f248c6 VBoxGuest_RTStrCopyP +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xb33ca348 VBoxGuest_RTLogRelPrintfV +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xb3f592b9 VBoxGuest_RTThreadNativeSelf +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xb4227efb VBoxGuest_RTTimeToString +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xb42ea0e3 VBoxGuest_g_pszRTAssertFile +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xb5676d46 VBoxGuest_RTLogSetCustomPrefixCallback +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xb5ec2977 VBoxGuest_RTStrToInt16Ex +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xb6fc848a VBoxGuest_RTStrToUInt32Full +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xb9a86152 VBoxGuest_RTStrFormatNumber +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xb9e03c35 VBoxGuest_RTTimerStop +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xba349142 VBoxGuest_RTR0MemObjEnterPhysTag +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xbaa97421 VBoxGuest_g_szRTAssertMsg2 +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xbaf6967f VBoxGuest_RTR0MemObjGetPagePhysAddr +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xbba29a48 VBoxGuest_RTR0MemObjAddressR3 +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xbbbc6e84 VBoxGuest_RTSemMutexRequest +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xbbccb0c7 VBoxGuest_RTTimeMilliTS +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xbc7fbd2a VBoxGuest_RTLogFlushRC +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xbcd1b6de VBoxGuest_RTSemSpinMutexRelease +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xbd0aa67d VBoxGuest_RTLogFlags +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xbeed82c5 VBoxGuest_RTSemEventDestroy +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xbf5b421e VBoxGuest_RTLogComPrintfV +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xc272f283 VBoxGuest_RTLogGroupSettings +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xc2e0f25a VBoxGuest_RTMemTmpAllocTag +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xc312f533 VBoxGuest_RTMpIsCpuPresent +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xc4b8857d VBoxGuest_RTThreadPreemptRestore +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xc4c265c6 VBoxGuest_RTMpGetPresentCount +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xc5151dcf VBoxGuest_RTLogDestroy +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xc56f27ff VBoxGuest_RTR0Init +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xc57a9c9b VBoxGuest_RTStrToInt32Ex +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xc636859e VBoxGuest_RTThreadUserWaitNoResume +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xc6b243bf VBoxGuest_RTTimerDestroy +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xc7601bb1 VBoxGuest_RTSemEventMultiWait +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xc9978a5f VBoxGuest_RTAssertMsg2V +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xcb6463c6 VBoxGuest_RTStrFormatTypeDeregister +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xcdbc5e5d VBoxGuest_RTSemEventCreate +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xcdd40e5b VBoxGuest_RTMpOnOthers +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xceb98390 VBoxGuest_RTMpOnSpecific +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xd032523c VBoxGuest_RTThreadGetType +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xd1c8b171 VBoxGuest_RTStrCopyEx +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xd2ebb507 VBoxGuest_RTMpGetPresentSet +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xd38c5d55 VBoxGuest_RTLogCloneRC +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xd4f35c7d VBoxGuest_RTSemSpinMutexTryRequest +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xd63c8527 VBoxGuest_RTMemFreeEx +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xd76ab832 VBoxGuest_RTMemDupExTag +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xd8730925 VBoxGuest_RTLogRelLoggerV +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xdd31359f VBoxGuest_RTLogSetDefaultInstanceThread +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xdd699fb2 VBoxGuest_RTSemMutexIsOwned +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xde296aea VBoxGuest_RTAssertAreQuiet +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xdead7a1c VBoxGuest_RTLogSetBuffering +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xdfaa7e65 VBoxGuest_RTSemEventSignal +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xe0453bfd VBoxGuest_RTTimerCreateEx +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xe0afcea8 VBoxGuest_RTR0AssertPanicSystem +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xe0ebf12c VBoxGuest_RTAssertMsg2WeakV +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xe16047ab VBoxGuest_RTLogDefaultInstance +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xe19acf09 VBoxGuest_RTStrCopy +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xe208c712 VBoxGuest_RTLogGetGroupSettings +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xe2aa3ed6 VBoxGuest_RTR0MemKernelCopyFrom +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xe4104f8b VBoxGuest_RTLogFlushToLogger +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xe46f3670 VBoxGuest_RTLogRelGetDefaultInstance +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xe47b5364 VBoxGuest_RTSemEventGetResolution +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xe5908cc3 VBoxGuest_RTStrToInt64Full +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xe59fc65c VBoxGuest_RTLogWriteCom +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xe6a00917 VBoxGuest_RTThreadIsInInterrupt +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xebbe4bc3 VBoxGuest_RTThreadIsSelfAlive +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xecd69ee8 VBoxGuest_RTAssertMsg2AddWeakV +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xed0424f7 VBoxGuest_RTMemFree +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xed92363f VBoxGuest_RTR0MemObjMapKernelTag +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xf244ec46 VBoxGuest_RTSemMutexRequestDebug +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xf2e6e2c5 VBoxGuest_RTStrPrintfEx +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xf3cd37e7 VBoxGuest_RTSemEventWaitEx +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xf450a3d4 VBoxGuest_RTLogCreateExV +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xf722f7d1 VBoxGuest_RTMemExecAllocTag +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xf7c384ae VBoxGuest_RTStrToInt64Ex +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xf81b13f5 VBoxGuest_RTPowerNotificationDeregister +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xfb5ca767 VBoxGuest_RTSpinlockRelease +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xfcfe8381 VBoxGuest_RTMpGetOnlineSet +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xfe4fce41 VBoxGuest_RTAssertMayPanic +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xfe5c0dc7 VBoxGuest_RTAssertMsg2AddV +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xfec59082 VBoxGuest_RTLogDumpPrintfV +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xfec8da5c VBoxGuest_RTMpOnAllIsConcurrentSafe +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xffc16d99 VBoxGuest_RTMpGetSet +EXPORT_SYMBOL vmlinux 0x00041252 neigh_seq_next +EXPORT_SYMBOL vmlinux 0x0010a03d kmem_cache_alloc_trace +EXPORT_SYMBOL vmlinux 0x0064b664 pci_remove_bus +EXPORT_SYMBOL vmlinux 0x006fc355 thermal_cdev_update +EXPORT_SYMBOL vmlinux 0x007d4e2e __ww_mutex_lock +EXPORT_SYMBOL vmlinux 0x00872739 lock_rename +EXPORT_SYMBOL vmlinux 0x008d4ed4 init_task +EXPORT_SYMBOL vmlinux 0x008fffef mmc_power_restore_host +EXPORT_SYMBOL vmlinux 0x009822fb mutex_trylock +EXPORT_SYMBOL vmlinux 0x00989def blk_queue_segment_boundary +EXPORT_SYMBOL vmlinux 0x00a04f90 mdiobus_alloc_size +EXPORT_SYMBOL vmlinux 0x00b8c3a7 mempool_alloc +EXPORT_SYMBOL vmlinux 0x00c60273 mipi_dsi_dcs_set_display_on +EXPORT_SYMBOL vmlinux 0x00cee0b4 acpi_bus_unregister_driver +EXPORT_SYMBOL vmlinux 0x00d7e722 vme_lm_count +EXPORT_SYMBOL vmlinux 0x00eef9c8 pcix_set_mmrbc +EXPORT_SYMBOL vmlinux 0x0101d5b1 ip_idents_reserve +EXPORT_SYMBOL vmlinux 0x01139ffc max_mapnr +EXPORT_SYMBOL vmlinux 0x0123073b skb_dequeue_tail +EXPORT_SYMBOL vmlinux 0x0139b504 cpu_current_top_of_stack +EXPORT_SYMBOL vmlinux 0x0149dc9e pnp_release_card_device +EXPORT_SYMBOL vmlinux 0x0150f0a0 scsi_add_host_with_dma +EXPORT_SYMBOL vmlinux 0x016a64ac file_update_time +EXPORT_SYMBOL vmlinux 0x016e5c2a mod_timer +EXPORT_SYMBOL vmlinux 0x0180529d i2c_smbus_read_word_data +EXPORT_SYMBOL vmlinux 0x0195f232 dentry_needs_remove_privs +EXPORT_SYMBOL vmlinux 0x01a7f084 pci_stop_and_remove_bus_device +EXPORT_SYMBOL vmlinux 0x01a991b1 scsi_report_opcode +EXPORT_SYMBOL vmlinux 0x01cb4b98 dev_deactivate +EXPORT_SYMBOL vmlinux 0x01d7b5e1 pci_get_subsys +EXPORT_SYMBOL vmlinux 0x01f79b04 agp_find_bridge +EXPORT_SYMBOL vmlinux 0x02124474 ip_send_check +EXPORT_SYMBOL vmlinux 0x0237b57a arch_unregister_cpu +EXPORT_SYMBOL vmlinux 0x023b3e92 kiocb_set_cancel_fn +EXPORT_SYMBOL vmlinux 0x02649054 security_sock_rcv_skb +EXPORT_SYMBOL vmlinux 0x0269db57 blk_mq_all_tag_busy_iter +EXPORT_SYMBOL vmlinux 0x0274dc2b netif_get_num_default_rss_queues +EXPORT_SYMBOL vmlinux 0x027f838d vfs_unlink +EXPORT_SYMBOL vmlinux 0x02878e92 sock_dequeue_err_skb +EXPORT_SYMBOL vmlinux 0x029444f0 native_read_tsc +EXPORT_SYMBOL vmlinux 0x0299b67e __dquot_alloc_space +EXPORT_SYMBOL vmlinux 0x02a18c74 nf_conntrack_destroy +EXPORT_SYMBOL vmlinux 0x02a6ce5a crc16_table +EXPORT_SYMBOL vmlinux 0x02bdef8f tcf_exts_change +EXPORT_SYMBOL vmlinux 0x02d9ccb8 nd_region_release_lane +EXPORT_SYMBOL vmlinux 0x02da82b8 devm_gpiod_put_array +EXPORT_SYMBOL vmlinux 0x02db550b xfrm_input_unregister_afinfo +EXPORT_SYMBOL vmlinux 0x02e0c52a skb_add_rx_frag +EXPORT_SYMBOL vmlinux 0x02e8d834 __devm_gpiod_get_index_optional +EXPORT_SYMBOL vmlinux 0x02ea111e scsi_driverbyte_string +EXPORT_SYMBOL vmlinux 0x02ec01ee dput +EXPORT_SYMBOL vmlinux 0x02ee26c1 free_pages_exact +EXPORT_SYMBOL vmlinux 0x02f80bad simple_symlink_inode_operations +EXPORT_SYMBOL vmlinux 0x0334da4e scsi_command_size_tbl +EXPORT_SYMBOL vmlinux 0x0344908a tcp_simple_retransmit +EXPORT_SYMBOL vmlinux 0x034c7e46 xfrm_init_replay +EXPORT_SYMBOL vmlinux 0x03592ea0 security_unix_stream_connect +EXPORT_SYMBOL vmlinux 0x0366307a console_suspend_enabled +EXPORT_SYMBOL vmlinux 0x037a0cba kfree +EXPORT_SYMBOL vmlinux 0x037b530c neigh_parms_alloc +EXPORT_SYMBOL vmlinux 0x03d0536a xfrm6_input_addr +EXPORT_SYMBOL vmlinux 0x03e4e8c9 netdev_update_features +EXPORT_SYMBOL vmlinux 0x03fad175 max8925_bulk_write +EXPORT_SYMBOL vmlinux 0x03fd2571 vm_unmap_ram +EXPORT_SYMBOL vmlinux 0x04086a67 pci_clear_mwi +EXPORT_SYMBOL vmlinux 0x040dc50c agp_alloc_page_array +EXPORT_SYMBOL vmlinux 0x0422fe4a inet_csk_timer_bug_msg +EXPORT_SYMBOL vmlinux 0x0426ba24 idr_for_each +EXPORT_SYMBOL vmlinux 0x0444a202 neigh_changeaddr +EXPORT_SYMBOL vmlinux 0x04482cdb __refrigerator +EXPORT_SYMBOL vmlinux 0x045b7ce1 vme_irq_request +EXPORT_SYMBOL vmlinux 0x0487f831 fb_find_best_display +EXPORT_SYMBOL vmlinux 0x04991eea dentry_open +EXPORT_SYMBOL vmlinux 0x04a07f28 current_fs_time +EXPORT_SYMBOL vmlinux 0x04b0ef8a vc_resize +EXPORT_SYMBOL vmlinux 0x04d333f4 dev_remove_pack +EXPORT_SYMBOL vmlinux 0x04d8c750 release_perfctr_nmi +EXPORT_SYMBOL vmlinux 0x04da135f tcp_enter_memory_pressure +EXPORT_SYMBOL vmlinux 0x04db43f7 md_integrity_add_rdev +EXPORT_SYMBOL vmlinux 0x04ea56f9 _kstrtol +EXPORT_SYMBOL vmlinux 0x050877b9 dmi_first_match +EXPORT_SYMBOL vmlinux 0x05240ee7 percpu_counter_batch +EXPORT_SYMBOL vmlinux 0x054dc0c5 bio_copy_kern +EXPORT_SYMBOL vmlinux 0x0565cb97 sock_recvmsg +EXPORT_SYMBOL vmlinux 0x0582ca01 nf_setsockopt +EXPORT_SYMBOL vmlinux 0x058c311c skb_get_hash_perturb +EXPORT_SYMBOL vmlinux 0x05925902 peernet2id_alloc +EXPORT_SYMBOL vmlinux 0x0599032f up_write +EXPORT_SYMBOL vmlinux 0x059aeb92 da903x_query_status +EXPORT_SYMBOL vmlinux 0x05a8b553 vc_cons +EXPORT_SYMBOL vmlinux 0x05aa1803 bio_integrity_add_page +EXPORT_SYMBOL vmlinux 0x05d313d6 submit_bio +EXPORT_SYMBOL vmlinux 0x05dd0c6e clkdev_drop +EXPORT_SYMBOL vmlinux 0x05df75ba acpi_pm_device_run_wake +EXPORT_SYMBOL vmlinux 0x05f2efe3 fb_class +EXPORT_SYMBOL vmlinux 0x060a8e23 vm_iomap_memory +EXPORT_SYMBOL vmlinux 0x061651be strcat +EXPORT_SYMBOL vmlinux 0x062ce059 gen_pool_add_virt +EXPORT_SYMBOL vmlinux 0x0634100a bitmap_parselist_user +EXPORT_SYMBOL vmlinux 0x064ff21a scsi_cmd_blk_ioctl +EXPORT_SYMBOL vmlinux 0x065de3b8 alloc_file +EXPORT_SYMBOL vmlinux 0x065e56ac pneigh_lookup +EXPORT_SYMBOL vmlinux 0x066729ba netdev_master_upper_dev_link_private +EXPORT_SYMBOL vmlinux 0x066e16a5 swiotlb_sync_single_for_cpu +EXPORT_SYMBOL vmlinux 0x06728c12 vga_switcheroo_fini_domain_pm_ops +EXPORT_SYMBOL vmlinux 0x067d8d35 security_release_secctx +EXPORT_SYMBOL vmlinux 0x06819499 d_tmpfile +EXPORT_SYMBOL vmlinux 0x068c32f7 xfrm_policy_bysel_ctx +EXPORT_SYMBOL vmlinux 0x068c7263 ioremap_cache +EXPORT_SYMBOL vmlinux 0x068d0242 blk_queue_chunk_sectors +EXPORT_SYMBOL vmlinux 0x06c0dae5 __kernel_fpu_end +EXPORT_SYMBOL vmlinux 0x06cd5c34 inet_csk_reqsk_queue_drop +EXPORT_SYMBOL vmlinux 0x06d77d8f eth_gro_receive +EXPORT_SYMBOL vmlinux 0x06fe3b14 default_grn +EXPORT_SYMBOL vmlinux 0x070a3049 blk_mq_start_stopped_hw_queues +EXPORT_SYMBOL vmlinux 0x070c5dd3 set_pages_uc +EXPORT_SYMBOL vmlinux 0x071294b2 input_inject_event +EXPORT_SYMBOL vmlinux 0x07159f9b __blk_run_queue +EXPORT_SYMBOL vmlinux 0x0715e84e ip_check_defrag +EXPORT_SYMBOL vmlinux 0x071b9789 truncate_pagecache_range +EXPORT_SYMBOL vmlinux 0x0721fb03 fb_get_mode +EXPORT_SYMBOL vmlinux 0x0727c4f3 iowrite8 +EXPORT_SYMBOL vmlinux 0x072ae9ce register_tcf_proto_ops +EXPORT_SYMBOL vmlinux 0x072f901c vme_master_rmw +EXPORT_SYMBOL vmlinux 0x0730adc1 inet_register_protosw +EXPORT_SYMBOL vmlinux 0x07608604 acpi_get_vendor_resource +EXPORT_SYMBOL vmlinux 0x0772b283 tty_do_resize +EXPORT_SYMBOL vmlinux 0x079ff9f1 pci_enable_device_mem +EXPORT_SYMBOL vmlinux 0x07a4b576 flex_array_free +EXPORT_SYMBOL vmlinux 0x07a890c8 fb_alloc_cmap +EXPORT_SYMBOL vmlinux 0x07a95e8a bitmap_startwrite +EXPORT_SYMBOL vmlinux 0x07b0f85f cdev_init +EXPORT_SYMBOL vmlinux 0x07be3cde ps2_handle_ack +EXPORT_SYMBOL vmlinux 0x07c59ebe xfrm_spd_getinfo +EXPORT_SYMBOL vmlinux 0x07cc4a5d printk_timed_ratelimit +EXPORT_SYMBOL vmlinux 0x07cd073b skb_pull +EXPORT_SYMBOL vmlinux 0x07d50a24 csum_partial +EXPORT_SYMBOL vmlinux 0x07e20429 pcix_get_mmrbc +EXPORT_SYMBOL vmlinux 0x07e41d9c passthru_features_check +EXPORT_SYMBOL vmlinux 0x0817e770 redirty_page_for_writepage +EXPORT_SYMBOL vmlinux 0x082c3213 pci_root_buses +EXPORT_SYMBOL vmlinux 0x083eb21c rfkill_unregister +EXPORT_SYMBOL vmlinux 0x08665e2a devm_devfreq_unregister_opp_notifier +EXPORT_SYMBOL vmlinux 0x086bc9d0 delete_from_page_cache +EXPORT_SYMBOL vmlinux 0x0871abe6 update_region +EXPORT_SYMBOL vmlinux 0x08928b90 __nla_put +EXPORT_SYMBOL vmlinux 0x0897287b acpi_disable_all_gpes +EXPORT_SYMBOL vmlinux 0x08ddc0d7 ppp_channel_index +EXPORT_SYMBOL vmlinux 0x08e6cdf8 release_firmware +EXPORT_SYMBOL vmlinux 0x08e6fe96 dcache_dir_close +EXPORT_SYMBOL vmlinux 0x08ea69e7 mipi_dsi_packet_format_is_long +EXPORT_SYMBOL vmlinux 0x0908698a __ps2_command +EXPORT_SYMBOL vmlinux 0x09413ec1 rtnl_unicast +EXPORT_SYMBOL vmlinux 0x094728c7 blk_rq_set_block_pc +EXPORT_SYMBOL vmlinux 0x094b70db rwsem_downgrade_wake +EXPORT_SYMBOL vmlinux 0x094f4de5 mmc_gpio_request_ro +EXPORT_SYMBOL vmlinux 0x095696c8 sock_from_file +EXPORT_SYMBOL vmlinux 0x09580deb init_timer_key +EXPORT_SYMBOL vmlinux 0x098b71c6 fb_dealloc_cmap +EXPORT_SYMBOL vmlinux 0x09a8d162 udp_seq_open +EXPORT_SYMBOL vmlinux 0x09c55cec schedule_timeout_interruptible +EXPORT_SYMBOL vmlinux 0x09c8eb55 font_vga_8x16 +EXPORT_SYMBOL vmlinux 0x09d44df9 in_lock_functions +EXPORT_SYMBOL vmlinux 0x09d8413a dev_mc_sync_multiple +EXPORT_SYMBOL vmlinux 0x09e474a7 vlan_uses_dev +EXPORT_SYMBOL vmlinux 0x09e816a8 seq_printf +EXPORT_SYMBOL vmlinux 0x09e88526 __init_waitqueue_head +EXPORT_SYMBOL vmlinux 0x09ebc421 abx500_get_chip_id +EXPORT_SYMBOL vmlinux 0x09ed5628 tcp_mtup_init +EXPORT_SYMBOL vmlinux 0x0a016a00 mb_cache_entry_insert +EXPORT_SYMBOL vmlinux 0x0a203ce5 mipi_dsi_driver_register_full +EXPORT_SYMBOL vmlinux 0x0a2487e0 unblock_all_signals +EXPORT_SYMBOL vmlinux 0x0a292872 reservation_seqcount_class +EXPORT_SYMBOL vmlinux 0x0a294f1c tcp_sendmsg +EXPORT_SYMBOL vmlinux 0x0a3131f6 strnchr +EXPORT_SYMBOL vmlinux 0x0a373226 crc32_le_shift +EXPORT_SYMBOL vmlinux 0x0a469d23 mfd_clone_cell +EXPORT_SYMBOL vmlinux 0x0a497aca skb_checksum_setup +EXPORT_SYMBOL vmlinux 0x0a4caf02 tcp_init_xmit_timers +EXPORT_SYMBOL vmlinux 0x0a661faa lg_local_unlock +EXPORT_SYMBOL vmlinux 0x0a770832 register_memory_notifier +EXPORT_SYMBOL vmlinux 0x0a92be2d generic_fillattr +EXPORT_SYMBOL vmlinux 0x0a9644be d_add_ci +EXPORT_SYMBOL vmlinux 0x0aa309cf synchronize_hardirq +EXPORT_SYMBOL vmlinux 0x0aaf1ba2 uart_suspend_port +EXPORT_SYMBOL vmlinux 0x0acf7679 dma_issue_pending_all +EXPORT_SYMBOL vmlinux 0x0ad64cd3 scsi_device_set_state +EXPORT_SYMBOL vmlinux 0x0ae3a7e3 jbd2_journal_get_write_access +EXPORT_SYMBOL vmlinux 0x0b0d888b icmpv6_err_convert +EXPORT_SYMBOL vmlinux 0x0b1beb31 vmalloc_32_user +EXPORT_SYMBOL vmlinux 0x0b48677a __kfifo_init +EXPORT_SYMBOL vmlinux 0x0b5e21c5 fsnotify_destroy_mark +EXPORT_SYMBOL vmlinux 0x0b742fd7 simple_strtol +EXPORT_SYMBOL vmlinux 0x0b905c66 __percpu_counter_init +EXPORT_SYMBOL vmlinux 0x0b91bf08 __cleancache_put_page +EXPORT_SYMBOL vmlinux 0x0baae4db blk_cleanup_queue +EXPORT_SYMBOL vmlinux 0x0baedb7d __xfrm_state_delete +EXPORT_SYMBOL vmlinux 0x0bbc5908 gen_estimator_active +EXPORT_SYMBOL vmlinux 0x0bc477a2 irq_set_irq_type +EXPORT_SYMBOL vmlinux 0x0bf7de7d x86_hyper +EXPORT_SYMBOL vmlinux 0x0c347835 dma_find_channel +EXPORT_SYMBOL vmlinux 0x0c3b487c pcie_capability_clear_and_set_dword +EXPORT_SYMBOL vmlinux 0x0c45fc96 vfs_lstat +EXPORT_SYMBOL vmlinux 0x0c5727dc padata_set_cpumasks +EXPORT_SYMBOL vmlinux 0x0c58a8cd netdev_increment_features +EXPORT_SYMBOL vmlinux 0x0c76d7d2 param_set_byte +EXPORT_SYMBOL vmlinux 0x0c76fe61 igrab +EXPORT_SYMBOL vmlinux 0x0c8c9a5c tcp_splice_read +EXPORT_SYMBOL vmlinux 0x0ca0c882 twl6030_interrupt_mask +EXPORT_SYMBOL vmlinux 0x0ca2a37d rwsem_down_write_failed +EXPORT_SYMBOL vmlinux 0x0ca2e1b6 kmem_cache_size +EXPORT_SYMBOL vmlinux 0x0ca7b7a8 acpi_check_region +EXPORT_SYMBOL vmlinux 0x0cae232b utf16s_to_utf8s +EXPORT_SYMBOL vmlinux 0x0ccf09dd __sb_start_write +EXPORT_SYMBOL vmlinux 0x0cdb7d12 __kernel_fpu_begin +EXPORT_SYMBOL vmlinux 0x0d041a98 lockref_get_or_lock +EXPORT_SYMBOL vmlinux 0x0d146472 jbd2_journal_revoke +EXPORT_SYMBOL vmlinux 0x0d32f83d bio_unmap_user +EXPORT_SYMBOL vmlinux 0x0d37c325 dev_get_stats +EXPORT_SYMBOL vmlinux 0x0d38ae62 pci_map_rom +EXPORT_SYMBOL vmlinux 0x0d394f9d alloc_netdev_mqs +EXPORT_SYMBOL vmlinux 0x0d3dda14 acpi_get_type +EXPORT_SYMBOL vmlinux 0x0d468098 scsi_device_get +EXPORT_SYMBOL vmlinux 0x0d468961 kobject_put +EXPORT_SYMBOL vmlinux 0x0d4de32a tty_chars_in_buffer +EXPORT_SYMBOL vmlinux 0x0d542439 __ipv6_addr_type +EXPORT_SYMBOL vmlinux 0x0d61eeee __bitmap_subset +EXPORT_SYMBOL vmlinux 0x0d656d5b padata_unregister_cpumask_notifier +EXPORT_SYMBOL vmlinux 0x0d841453 bdi_destroy +EXPORT_SYMBOL vmlinux 0x0d9de43e __insert_inode_hash +EXPORT_SYMBOL vmlinux 0x0da10ec3 security_sock_graft +EXPORT_SYMBOL vmlinux 0x0dae0528 ether_setup +EXPORT_SYMBOL vmlinux 0x0db1c37a tcf_exts_dump_stats +EXPORT_SYMBOL vmlinux 0x0dc1a78c bin2hex +EXPORT_SYMBOL vmlinux 0x0dc4c39d swiotlb_alloc_coherent +EXPORT_SYMBOL vmlinux 0x0e11ac76 blk_pre_runtime_suspend +EXPORT_SYMBOL vmlinux 0x0e19e4b5 to_ndd +EXPORT_SYMBOL vmlinux 0x0e34d89b default_llseek +EXPORT_SYMBOL vmlinux 0x0e37f28e skb_trim +EXPORT_SYMBOL vmlinux 0x0e4f37da vme_irq_free +EXPORT_SYMBOL vmlinux 0x0e6da44a set_normalized_timespec +EXPORT_SYMBOL vmlinux 0x0e99a6ff lockref_put_or_lock +EXPORT_SYMBOL vmlinux 0x0e9abb15 vfs_llseek +EXPORT_SYMBOL vmlinux 0x0ea55a5c cdrom_media_changed +EXPORT_SYMBOL vmlinux 0x0ea5d7ee agp_put_bridge +EXPORT_SYMBOL vmlinux 0x0eaf1ca3 md_reload_sb +EXPORT_SYMBOL vmlinux 0x0eaf451e hdmi_vendor_infoframe_pack +EXPORT_SYMBOL vmlinux 0x0ec5babe vme_dma_free +EXPORT_SYMBOL vmlinux 0x0ed3f4a9 md_flush_request +EXPORT_SYMBOL vmlinux 0x0efcbb1b set_current_groups +EXPORT_SYMBOL vmlinux 0x0f0b8710 blk_rq_count_integrity_sg +EXPORT_SYMBOL vmlinux 0x0f0d6e0d udp_del_offload +EXPORT_SYMBOL vmlinux 0x0f158972 twl6030_mmc_card_detect +EXPORT_SYMBOL vmlinux 0x0f1ac5d7 netdev_master_upper_dev_get +EXPORT_SYMBOL vmlinux 0x0f4c91ed ns_to_timespec +EXPORT_SYMBOL vmlinux 0x0f6a3b5c string_get_size +EXPORT_SYMBOL vmlinux 0x0f8fee39 tcp_v4_mtu_reduced +EXPORT_SYMBOL vmlinux 0x0f9b0cc3 pci_bus_set_ops +EXPORT_SYMBOL vmlinux 0x0fa3c23e dma_common_get_sgtable +EXPORT_SYMBOL vmlinux 0x0faef0ed __tasklet_schedule +EXPORT_SYMBOL vmlinux 0x0fb2be5e netif_skb_features +EXPORT_SYMBOL vmlinux 0x0fb2f8a4 mktime64 +EXPORT_SYMBOL vmlinux 0x0fd00a68 acpi_clear_event +EXPORT_SYMBOL vmlinux 0x0ff2b602 slhc_compress +EXPORT_SYMBOL vmlinux 0x0ffbbf01 scsi_host_get +EXPORT_SYMBOL vmlinux 0x0ffcc101 posix_lock_inode_wait +EXPORT_SYMBOL vmlinux 0x0ffcd794 tcf_destroy_chain +EXPORT_SYMBOL vmlinux 0x1002d9eb blk_queue_stack_limits +EXPORT_SYMBOL vmlinux 0x102693cd dev_get_phys_port_name +EXPORT_SYMBOL vmlinux 0x102c56de irq_regs +EXPORT_SYMBOL vmlinux 0x103603db ip_setsockopt +EXPORT_SYMBOL vmlinux 0x1059f8e3 unregister_console +EXPORT_SYMBOL vmlinux 0x106f13ab crc_t10dif_generic +EXPORT_SYMBOL vmlinux 0x107e5878 zlib_inflateEnd +EXPORT_SYMBOL vmlinux 0x1086c560 agp_bridge +EXPORT_SYMBOL vmlinux 0x10b06375 xfrm_policy_hash_rebuild +EXPORT_SYMBOL vmlinux 0x10beec46 pci_disable_msix +EXPORT_SYMBOL vmlinux 0x10c2f187 gen_pool_virt_to_phys +EXPORT_SYMBOL vmlinux 0x10c87e3a scsi_scan_host +EXPORT_SYMBOL vmlinux 0x10dc4bea blk_rq_map_sg +EXPORT_SYMBOL vmlinux 0x10dcc3f8 scsi_command_normalize_sense +EXPORT_SYMBOL vmlinux 0x10e4e882 gen_pool_free +EXPORT_SYMBOL vmlinux 0x10ee20bb default_blu +EXPORT_SYMBOL vmlinux 0x10f0dd41 xfrm_policy_byid +EXPORT_SYMBOL vmlinux 0x11089ac7 _ctype +EXPORT_SYMBOL vmlinux 0x112575f7 dquot_free_inode +EXPORT_SYMBOL vmlinux 0x1129450f dquot_quotactl_sysfile_ops +EXPORT_SYMBOL vmlinux 0x112f09f8 jbd2_journal_ack_err +EXPORT_SYMBOL vmlinux 0x113e9f79 nf_unregister_hook +EXPORT_SYMBOL vmlinux 0x11479fde agp_generic_alloc_by_type +EXPORT_SYMBOL vmlinux 0x1163f0a7 blk_max_low_pfn +EXPORT_SYMBOL vmlinux 0x11701b04 mdiobus_read +EXPORT_SYMBOL vmlinux 0x117093be qdisc_class_hash_init +EXPORT_SYMBOL vmlinux 0x11886a47 alloc_disk +EXPORT_SYMBOL vmlinux 0x118a5e56 blk_limits_io_min +EXPORT_SYMBOL vmlinux 0x11936c3a dm_register_target +EXPORT_SYMBOL vmlinux 0x11a044f6 mod_timer_pinned +EXPORT_SYMBOL vmlinux 0x11a66840 jbd2_journal_get_undo_access +EXPORT_SYMBOL vmlinux 0x11b40e4c elv_rb_latter_request +EXPORT_SYMBOL vmlinux 0x11dd01ad intel_scu_ipc_command +EXPORT_SYMBOL vmlinux 0x11f7ed4c hex_to_bin +EXPORT_SYMBOL vmlinux 0x120b336a __rb_insert_augmented +EXPORT_SYMBOL vmlinux 0x120d67d4 unregister_memory_isolate_notifier +EXPORT_SYMBOL vmlinux 0x120fc6b1 kstrdup_const +EXPORT_SYMBOL vmlinux 0x12156494 security_path_link +EXPORT_SYMBOL vmlinux 0x121b8c89 alloc_fddidev +EXPORT_SYMBOL vmlinux 0x122e5f88 padata_alloc_possible +EXPORT_SYMBOL vmlinux 0x122fcd92 vme_bus_num +EXPORT_SYMBOL vmlinux 0x1230cf6a __pskb_pull_tail +EXPORT_SYMBOL vmlinux 0x1237a8a1 phy_device_create +EXPORT_SYMBOL vmlinux 0x1250c7e1 _raw_spin_trylock +EXPORT_SYMBOL vmlinux 0x126cf0df kfree_skb_partial +EXPORT_SYMBOL vmlinux 0x126fd9df generic_read_dir +EXPORT_SYMBOL vmlinux 0x12821f6f fb_find_mode +EXPORT_SYMBOL vmlinux 0x12a38747 usleep_range +EXPORT_SYMBOL vmlinux 0x12a79a81 jbd2_journal_restart +EXPORT_SYMBOL vmlinux 0x12b8bb9a remap_vmalloc_range +EXPORT_SYMBOL vmlinux 0x12b92835 block_commit_write +EXPORT_SYMBOL vmlinux 0x12da5bb2 __kmalloc +EXPORT_SYMBOL vmlinux 0x12e8934d mipi_dsi_dcs_get_pixel_format +EXPORT_SYMBOL vmlinux 0x130dc94d filemap_map_pages +EXPORT_SYMBOL vmlinux 0x13243d4b wl1251_get_platform_data +EXPORT_SYMBOL vmlinux 0x13307fde vsscanf +EXPORT_SYMBOL vmlinux 0x13315729 flex_array_alloc +EXPORT_SYMBOL vmlinux 0x1353d1e3 inode_needs_sync +EXPORT_SYMBOL vmlinux 0x1367fdf4 tty_port_hangup +EXPORT_SYMBOL vmlinux 0x138c04c0 xfrm_policy_register_afinfo +EXPORT_SYMBOL vmlinux 0x13991ae0 blk_end_request_cur +EXPORT_SYMBOL vmlinux 0x139b4b2a abx500_get_register_page_interruptible +EXPORT_SYMBOL vmlinux 0x13c328e7 inc_zone_page_state +EXPORT_SYMBOL vmlinux 0x13ce4385 __napi_schedule_irqoff +EXPORT_SYMBOL vmlinux 0x13d0adf7 __kfifo_out +EXPORT_SYMBOL vmlinux 0x13e6dfb1 flow_cache_lookup +EXPORT_SYMBOL vmlinux 0x13f42152 system_entering_hibernation +EXPORT_SYMBOL vmlinux 0x140668cd netdev_class_create_file_ns +EXPORT_SYMBOL vmlinux 0x1406b48a free_inode_nonrcu +EXPORT_SYMBOL vmlinux 0x141e1b44 ip6_dst_hoplimit +EXPORT_SYMBOL vmlinux 0x141ef0ea kfree_skb +EXPORT_SYMBOL vmlinux 0x1420b379 kstrtou16_from_user +EXPORT_SYMBOL vmlinux 0x1421a93d vga_get +EXPORT_SYMBOL vmlinux 0x14376d08 set_pages_wb +EXPORT_SYMBOL vmlinux 0x143ca079 sock_alloc_send_pskb +EXPORT_SYMBOL vmlinux 0x144c25c6 x86_hyper_xen +EXPORT_SYMBOL vmlinux 0x1458c26b nobh_write_end +EXPORT_SYMBOL vmlinux 0x14618084 invalidate_partition +EXPORT_SYMBOL vmlinux 0x14695b38 jbd2_journal_stop +EXPORT_SYMBOL vmlinux 0x1472a089 xfrm_lookup_route +EXPORT_SYMBOL vmlinux 0x1485189e jbd2_journal_get_create_access +EXPORT_SYMBOL vmlinux 0x14a3ca92 ll_rw_block +EXPORT_SYMBOL vmlinux 0x14b77fda mb_cache_shrink +EXPORT_SYMBOL vmlinux 0x14c909e2 mmc_set_blocklen +EXPORT_SYMBOL vmlinux 0x14ca43e4 reservation_object_reserve_shared +EXPORT_SYMBOL vmlinux 0x14db8d5d ata_dev_printk +EXPORT_SYMBOL vmlinux 0x14e51bee dma_async_device_register +EXPORT_SYMBOL vmlinux 0x14e96904 __mem_cgroup_count_vm_event +EXPORT_SYMBOL vmlinux 0x14edd1a5 read_cache_page_gfp +EXPORT_SYMBOL vmlinux 0x150389d6 acpi_processor_power_init_bm_check +EXPORT_SYMBOL vmlinux 0x15239176 param_set_int +EXPORT_SYMBOL vmlinux 0x15332ed8 ppp_register_compressor +EXPORT_SYMBOL vmlinux 0x1546746c scsi_device_lookup_by_target +EXPORT_SYMBOL vmlinux 0x154c6338 dm_kcopyd_client_destroy +EXPORT_SYMBOL vmlinux 0x154da606 dev_set_mac_address +EXPORT_SYMBOL vmlinux 0x155dc8e2 n_tty_ioctl_helper +EXPORT_SYMBOL vmlinux 0x156625d6 tcp_poll +EXPORT_SYMBOL vmlinux 0x156a8a59 down_trylock +EXPORT_SYMBOL vmlinux 0x1570a047 param_get_uint +EXPORT_SYMBOL vmlinux 0x15921cf1 kill_pgrp +EXPORT_SYMBOL vmlinux 0x15aa5ced blkdev_get_by_path +EXPORT_SYMBOL vmlinux 0x15b0215e xfrm_state_insert +EXPORT_SYMBOL vmlinux 0x15ba73dd inet_accept +EXPORT_SYMBOL vmlinux 0x15bafe29 unregister_md_cluster_operations +EXPORT_SYMBOL vmlinux 0x15c6cfb7 i2c_smbus_write_byte_data +EXPORT_SYMBOL vmlinux 0x15c965d6 unregister_netdev +EXPORT_SYMBOL vmlinux 0x15e52534 tcp_initialize_rcv_mss +EXPORT_SYMBOL vmlinux 0x160ea4c8 sfi_disabled +EXPORT_SYMBOL vmlinux 0x1616cb30 acpi_evaluate_dsm +EXPORT_SYMBOL vmlinux 0x1629ecff generic_file_fsync +EXPORT_SYMBOL vmlinux 0x16305289 warn_slowpath_null +EXPORT_SYMBOL vmlinux 0x1640c0f7 elv_rb_del +EXPORT_SYMBOL vmlinux 0x16764b88 jbd2_journal_errno +EXPORT_SYMBOL vmlinux 0x167e7f9d __get_user_1 +EXPORT_SYMBOL vmlinux 0x1683a50b radix_tree_delete +EXPORT_SYMBOL vmlinux 0x16dc4d1f fence_init +EXPORT_SYMBOL vmlinux 0x16f67247 fb_set_var +EXPORT_SYMBOL vmlinux 0x170c25ee acpi_get_next_object +EXPORT_SYMBOL vmlinux 0x171ceece security_path_mkdir +EXPORT_SYMBOL vmlinux 0x171e11a1 wait_for_key_construction +EXPORT_SYMBOL vmlinux 0x172b97e8 tcf_hash_destroy +EXPORT_SYMBOL vmlinux 0x1748590a blk_register_region +EXPORT_SYMBOL vmlinux 0x17773bef devm_devfreq_remove_device +EXPORT_SYMBOL vmlinux 0x1780b3b6 simple_getattr +EXPORT_SYMBOL vmlinux 0x178b417a pci_disable_msi +EXPORT_SYMBOL vmlinux 0x179570cc input_mt_report_pointer_emulation +EXPORT_SYMBOL vmlinux 0x17b1125d gen_kill_estimator +EXPORT_SYMBOL vmlinux 0x17e01dc2 input_unregister_handle +EXPORT_SYMBOL vmlinux 0x17f341a0 i8042_lock_chip +EXPORT_SYMBOL vmlinux 0x17fffef5 inet_csk_delete_keepalive_timer +EXPORT_SYMBOL vmlinux 0x180bd398 ndo_dflt_fdb_dump +EXPORT_SYMBOL vmlinux 0x1826f089 __tracepoint_kmem_cache_alloc_node +EXPORT_SYMBOL vmlinux 0x1829d188 wait_woken +EXPORT_SYMBOL vmlinux 0x183fa88b mempool_alloc_slab +EXPORT_SYMBOL vmlinux 0x1847f41d dev_mc_unsync +EXPORT_SYMBOL vmlinux 0x184826e9 __nlmsg_put +EXPORT_SYMBOL vmlinux 0x184b82fb mmc_vddrange_to_ocrmask +EXPORT_SYMBOL vmlinux 0x1888a317 kernel_bind +EXPORT_SYMBOL vmlinux 0x188a3dfb timespec_trunc +EXPORT_SYMBOL vmlinux 0x189868d7 get_random_bytes_arch +EXPORT_SYMBOL vmlinux 0x189d83c4 __elv_add_request +EXPORT_SYMBOL vmlinux 0x18a430c5 inet_proto_csum_replace4 +EXPORT_SYMBOL vmlinux 0x18a6880e fbcon_rotate_ccw +EXPORT_SYMBOL vmlinux 0x18d96501 atomic64_dec_if_positive_cx8 +EXPORT_SYMBOL vmlinux 0x1905f224 make_kprojid +EXPORT_SYMBOL vmlinux 0x19060243 xfrm_state_flush +EXPORT_SYMBOL vmlinux 0x1916e38c _raw_spin_unlock_irqrestore +EXPORT_SYMBOL vmlinux 0x19170268 devm_kvasprintf +EXPORT_SYMBOL vmlinux 0x191bd7e1 open_exec +EXPORT_SYMBOL vmlinux 0x192f3665 request_key_with_auxdata +EXPORT_SYMBOL vmlinux 0x19374a38 dquot_quotactl_ops +EXPORT_SYMBOL vmlinux 0x194f5a1e follow_pfn +EXPORT_SYMBOL vmlinux 0x199695d0 __module_get +EXPORT_SYMBOL vmlinux 0x199ed0cd net_disable_timestamp +EXPORT_SYMBOL vmlinux 0x19bd383b security_secmark_refcount_dec +EXPORT_SYMBOL vmlinux 0x19dc4855 page_symlink_inode_operations +EXPORT_SYMBOL vmlinux 0x19f807dd mmc_set_blockcount +EXPORT_SYMBOL vmlinux 0x19ff2153 bio_split +EXPORT_SYMBOL vmlinux 0x1a045e5d ip_mc_check_igmp +EXPORT_SYMBOL vmlinux 0x1a16d206 neigh_ifdown +EXPORT_SYMBOL vmlinux 0x1a1ddf44 rtnl_create_link +EXPORT_SYMBOL vmlinux 0x1a411767 inet_frags_init +EXPORT_SYMBOL vmlinux 0x1a45cb6c acpi_disabled +EXPORT_SYMBOL vmlinux 0x1a555549 unregister_shrinker +EXPORT_SYMBOL vmlinux 0x1a63af34 vga_switcheroo_process_delayed_switch +EXPORT_SYMBOL vmlinux 0x1a7bc432 pcim_enable_device +EXPORT_SYMBOL vmlinux 0x1a9dad45 pci_scan_slot +EXPORT_SYMBOL vmlinux 0x1aa47335 tcp_rcv_state_process +EXPORT_SYMBOL vmlinux 0x1ab62410 xfrm_sad_getinfo +EXPORT_SYMBOL vmlinux 0x1acffd67 simple_readpage +EXPORT_SYMBOL vmlinux 0x1ad4edf5 posix_unblock_lock +EXPORT_SYMBOL vmlinux 0x1ade9ff5 generic_pipe_buf_steal +EXPORT_SYMBOL vmlinux 0x1ae06e12 __tracepoint_fence_annotate_wait_on +EXPORT_SYMBOL vmlinux 0x1aefa035 __devcgroup_inode_permission +EXPORT_SYMBOL vmlinux 0x1afb1aaa acpi_mark_gpe_for_wake +EXPORT_SYMBOL vmlinux 0x1b015d25 bitmap_parselist +EXPORT_SYMBOL vmlinux 0x1b038f88 adjust_managed_page_count +EXPORT_SYMBOL vmlinux 0x1b06a209 blk_set_default_limits +EXPORT_SYMBOL vmlinux 0x1b0ac272 __tracepoint_kmalloc_node +EXPORT_SYMBOL vmlinux 0x1b1e1088 sg_nents +EXPORT_SYMBOL vmlinux 0x1b3c4981 inode_set_bytes +EXPORT_SYMBOL vmlinux 0x1b4b5662 writeback_inodes_sb_nr +EXPORT_SYMBOL vmlinux 0x1b570d23 acpi_warning +EXPORT_SYMBOL vmlinux 0x1b6314fd in_aton +EXPORT_SYMBOL vmlinux 0x1b80672a inet_frag_find +EXPORT_SYMBOL vmlinux 0x1b82fefa md_unplug +EXPORT_SYMBOL vmlinux 0x1b8b95ad i8042_unlock_chip +EXPORT_SYMBOL vmlinux 0x1b8f6bf5 ping_prot +EXPORT_SYMBOL vmlinux 0x1b910547 bitmap_cond_end_sync +EXPORT_SYMBOL vmlinux 0x1bb31047 add_timer +EXPORT_SYMBOL vmlinux 0x1bdaf01f soft_cursor +EXPORT_SYMBOL vmlinux 0x1be1dd26 lg_global_lock +EXPORT_SYMBOL vmlinux 0x1bea5399 kernel_recvmsg +EXPORT_SYMBOL vmlinux 0x1bf93c0a ppp_register_channel +EXPORT_SYMBOL vmlinux 0x1c0a1e37 mipi_dsi_dcs_set_page_address +EXPORT_SYMBOL vmlinux 0x1c0b9a9b get_mm_exe_file +EXPORT_SYMBOL vmlinux 0x1c114a6a vm_event_states +EXPORT_SYMBOL vmlinux 0x1c3fe049 generic_file_read_iter +EXPORT_SYMBOL vmlinux 0x1c460871 up_read +EXPORT_SYMBOL vmlinux 0x1c4b2573 wait_on_page_bit +EXPORT_SYMBOL vmlinux 0x1c626cb6 nf_ip_checksum +EXPORT_SYMBOL vmlinux 0x1c8a04b0 acpi_reset +EXPORT_SYMBOL vmlinux 0x1c9136f2 register_netdevice +EXPORT_SYMBOL vmlinux 0x1ca141e0 agp_generic_alloc_page +EXPORT_SYMBOL vmlinux 0x1ca32144 blk_mq_init_allocated_queue +EXPORT_SYMBOL vmlinux 0x1ca7e0c2 inet_rtx_syn_ack +EXPORT_SYMBOL vmlinux 0x1cc5d5de generic_end_io_acct +EXPORT_SYMBOL vmlinux 0x1cccd6bb tty_port_init +EXPORT_SYMBOL vmlinux 0x1cd0d7ff kunmap_high +EXPORT_SYMBOL vmlinux 0x1ce8a144 jbd2_journal_set_triggers +EXPORT_SYMBOL vmlinux 0x1d23fafe misc_register +EXPORT_SYMBOL vmlinux 0x1d297120 dma_set_mask +EXPORT_SYMBOL vmlinux 0x1d2e47b8 neigh_xmit +EXPORT_SYMBOL vmlinux 0x1d33e4c9 param_set_bool +EXPORT_SYMBOL vmlinux 0x1d3d965c request_firmware +EXPORT_SYMBOL vmlinux 0x1d555f20 __nla_put_nohdr +EXPORT_SYMBOL vmlinux 0x1d58b958 km_query +EXPORT_SYMBOL vmlinux 0x1d6ffe5c qdisc_list_add +EXPORT_SYMBOL vmlinux 0x1d7ca5c1 kmap_to_page +EXPORT_SYMBOL vmlinux 0x1d9273b9 pci_request_region_exclusive +EXPORT_SYMBOL vmlinux 0x1d994719 skb_split +EXPORT_SYMBOL vmlinux 0x1d9c1b18 nonseekable_open +EXPORT_SYMBOL vmlinux 0x1dbfea48 security_path_rmdir +EXPORT_SYMBOL vmlinux 0x1dc36131 fb_destroy_modedb +EXPORT_SYMBOL vmlinux 0x1dd571e6 fb_copy_cmap +EXPORT_SYMBOL vmlinux 0x1de74f72 acpi_execute_simple_method +EXPORT_SYMBOL vmlinux 0x1deafb8f sock_create_kern +EXPORT_SYMBOL vmlinux 0x1decc653 vme_unregister_bridge +EXPORT_SYMBOL vmlinux 0x1df78a0a reservation_object_add_excl_fence +EXPORT_SYMBOL vmlinux 0x1e036c98 acpi_set_gpe +EXPORT_SYMBOL vmlinux 0x1e047854 warn_slowpath_fmt +EXPORT_SYMBOL vmlinux 0x1e0c2be4 ioremap_wc +EXPORT_SYMBOL vmlinux 0x1e126db6 mmc_can_erase +EXPORT_SYMBOL vmlinux 0x1e26be3b get_anon_bdev +EXPORT_SYMBOL vmlinux 0x1e28a2c1 simple_nosetlease +EXPORT_SYMBOL vmlinux 0x1e3ccdb4 netdev_change_features +EXPORT_SYMBOL vmlinux 0x1e44b53f trace_raw_output_prep +EXPORT_SYMBOL vmlinux 0x1e4b9421 gnet_stats_copy_rate_est +EXPORT_SYMBOL vmlinux 0x1e6d26a8 strstr +EXPORT_SYMBOL vmlinux 0x1e7ac96d pci_bus_size_bridges +EXPORT_SYMBOL vmlinux 0x1e7c99dd dm_unregister_target +EXPORT_SYMBOL vmlinux 0x1e9edfb7 seq_hlist_start_head_rcu +EXPORT_SYMBOL vmlinux 0x1eb922a3 IO_APIC_get_PCI_irq_vector +EXPORT_SYMBOL vmlinux 0x1ec41345 kernel_sock_shutdown +EXPORT_SYMBOL vmlinux 0x1ec8a493 tty_port_alloc_xmit_buf +EXPORT_SYMBOL vmlinux 0x1ec990c8 efi +EXPORT_SYMBOL vmlinux 0x1edca132 gen_replace_estimator +EXPORT_SYMBOL vmlinux 0x1ee29ac4 sock_kzfree_s +EXPORT_SYMBOL vmlinux 0x1ef8cb0c blk_sync_queue +EXPORT_SYMBOL vmlinux 0x1f045c1d pci_set_master +EXPORT_SYMBOL vmlinux 0x1f24d6a4 iterate_dir +EXPORT_SYMBOL vmlinux 0x1f4ee2fa locks_free_lock +EXPORT_SYMBOL vmlinux 0x1f7e807f kstrtoint_from_user +EXPORT_SYMBOL vmlinux 0x1f97495c __starget_for_each_device +EXPORT_SYMBOL vmlinux 0x1faaa9bd simple_statfs +EXPORT_SYMBOL vmlinux 0x1fbd16da ip_tos2prio +EXPORT_SYMBOL vmlinux 0x1fd07fff kdb_grepping_flag +EXPORT_SYMBOL vmlinux 0x1fe912f1 netdev_alloc_frag +EXPORT_SYMBOL vmlinux 0x1fe9f800 unregister_cpu_notifier +EXPORT_SYMBOL vmlinux 0x1fedf0f4 __request_region +EXPORT_SYMBOL vmlinux 0x1ffbacbc __dev_get_by_flags +EXPORT_SYMBOL vmlinux 0x1ffdf0f2 ipv6_chk_custom_prefix +EXPORT_SYMBOL vmlinux 0x20000329 simple_strtoul +EXPORT_SYMBOL vmlinux 0x2005e68a acpi_remove_fixed_event_handler +EXPORT_SYMBOL vmlinux 0x20092385 acpi_enter_sleep_state_s4bios +EXPORT_SYMBOL vmlinux 0x200b2041 in6addr_any +EXPORT_SYMBOL vmlinux 0x201402cc neigh_table_clear +EXPORT_SYMBOL vmlinux 0x201831ed cont_write_begin +EXPORT_SYMBOL vmlinux 0x2018a659 tcp_v4_do_rcv +EXPORT_SYMBOL vmlinux 0x201b0ac0 lg_global_unlock +EXPORT_SYMBOL vmlinux 0x20205f64 trace_print_array_seq +EXPORT_SYMBOL vmlinux 0x202ef20b flow_cache_fini +EXPORT_SYMBOL vmlinux 0x202f4e92 acpi_extract_package +EXPORT_SYMBOL vmlinux 0x203b8b14 cdrom_number_of_slots +EXPORT_SYMBOL vmlinux 0x204c19f5 tcp_alloc_md5sig_pool +EXPORT_SYMBOL vmlinux 0x2059e29e fsync_bdev +EXPORT_SYMBOL vmlinux 0x2072ee9b request_threaded_irq +EXPORT_SYMBOL vmlinux 0x208739f6 acpi_load_table +EXPORT_SYMBOL vmlinux 0x208e33ab genphy_soft_reset +EXPORT_SYMBOL vmlinux 0x20a789ac irq_set_chip_data +EXPORT_SYMBOL vmlinux 0x20c55ae0 sscanf +EXPORT_SYMBOL vmlinux 0x20c6192f intel_scu_ipc_ioread32 +EXPORT_SYMBOL vmlinux 0x20df5a3d vme_dma_pci_attribute +EXPORT_SYMBOL vmlinux 0x2111b161 capable_wrt_inode_uidgid +EXPORT_SYMBOL vmlinux 0x212374b9 atomic_dec_and_mutex_lock +EXPORT_SYMBOL vmlinux 0x212f7d34 neigh_app_ns +EXPORT_SYMBOL vmlinux 0x2146a6cb page_symlink +EXPORT_SYMBOL vmlinux 0x2160fe65 irq_set_chip +EXPORT_SYMBOL vmlinux 0x217254b2 vme_new_dma_list +EXPORT_SYMBOL vmlinux 0x21748192 kunmap +EXPORT_SYMBOL vmlinux 0x217505a7 unregister_cdrom +EXPORT_SYMBOL vmlinux 0x2199a16a input_mt_report_finger_count +EXPORT_SYMBOL vmlinux 0x219bf5c9 padata_do_parallel +EXPORT_SYMBOL vmlinux 0x21a701fe fence_signal +EXPORT_SYMBOL vmlinux 0x21b30d81 __mark_inode_dirty +EXPORT_SYMBOL vmlinux 0x21bda38a param_ops_ushort +EXPORT_SYMBOL vmlinux 0x21c088bf textsearch_register +EXPORT_SYMBOL vmlinux 0x21cc65e0 netlink_capable +EXPORT_SYMBOL vmlinux 0x21df74d9 bitmap_set +EXPORT_SYMBOL vmlinux 0x21e992a5 ida_simple_get +EXPORT_SYMBOL vmlinux 0x21f367bf bitmap_end_sync +EXPORT_SYMBOL vmlinux 0x220236bf may_umount_tree +EXPORT_SYMBOL vmlinux 0x2202c31e led_update_brightness +EXPORT_SYMBOL vmlinux 0x220623ab sync_blockdev +EXPORT_SYMBOL vmlinux 0x2207a57f prepare_to_wait_event +EXPORT_SYMBOL vmlinux 0x221e6b48 freeze_super +EXPORT_SYMBOL vmlinux 0x22267c81 __page_symlink +EXPORT_SYMBOL vmlinux 0x222e7ce2 sysfs_streq +EXPORT_SYMBOL vmlinux 0x224cdc7e key_revoke +EXPORT_SYMBOL vmlinux 0x2256fafa div64_u64_rem +EXPORT_SYMBOL vmlinux 0x226e9d96 vme_bus_type +EXPORT_SYMBOL vmlinux 0x2276db98 kstrtoint +EXPORT_SYMBOL vmlinux 0x2291c4e1 unlock_new_inode +EXPORT_SYMBOL vmlinux 0x229ea7b0 ata_std_end_eh +EXPORT_SYMBOL vmlinux 0x22a8d26d udp_lib_rehash +EXPORT_SYMBOL vmlinux 0x22b325d5 kd_mksound +EXPORT_SYMBOL vmlinux 0x22c50968 phy_register_fixup_for_uid +EXPORT_SYMBOL vmlinux 0x22cabd1f tcf_hash_create +EXPORT_SYMBOL vmlinux 0x22dfdd06 radix_tree_tag_set +EXPORT_SYMBOL vmlinux 0x22fc4f3a trace_print_flags_seq +EXPORT_SYMBOL vmlinux 0x23142de4 copy_from_iter +EXPORT_SYMBOL vmlinux 0x231d4001 fb_edid_add_monspecs +EXPORT_SYMBOL vmlinux 0x231ead4a ps2_end_command +EXPORT_SYMBOL vmlinux 0x232b6e16 param_ops_ulong +EXPORT_SYMBOL vmlinux 0x232d18ec rps_sock_flow_table +EXPORT_SYMBOL vmlinux 0x2341bd2b set_cached_acl +EXPORT_SYMBOL vmlinux 0x23533e28 __i2c_transfer +EXPORT_SYMBOL vmlinux 0x23693f87 pagecache_isize_extended +EXPORT_SYMBOL vmlinux 0x238e38a9 override_creds +EXPORT_SYMBOL vmlinux 0x238f5c1a _raw_write_unlock_irqrestore +EXPORT_SYMBOL vmlinux 0x23a41118 gnet_stats_copy_queue +EXPORT_SYMBOL vmlinux 0x23a574fd security_secmark_relabel_packet +EXPORT_SYMBOL vmlinux 0x23a873ab devm_ioremap_nocache +EXPORT_SYMBOL vmlinux 0x23ab6361 __init_rwsem +EXPORT_SYMBOL vmlinux 0x23b9d6e2 mangle_path +EXPORT_SYMBOL vmlinux 0x23c8f257 slhc_uncompress +EXPORT_SYMBOL vmlinux 0x23d4711e mmc_get_card +EXPORT_SYMBOL vmlinux 0x23fd3028 vmalloc_node +EXPORT_SYMBOL vmlinux 0x240920dc blk_queue_bounce +EXPORT_SYMBOL vmlinux 0x24094515 pcim_iomap +EXPORT_SYMBOL vmlinux 0x24097a03 pci_unmap_rom +EXPORT_SYMBOL vmlinux 0x240f7042 pcibios_bus_to_resource +EXPORT_SYMBOL vmlinux 0x2412a48a md_finish_reshape +EXPORT_SYMBOL vmlinux 0x24212d86 __frontswap_invalidate_page +EXPORT_SYMBOL vmlinux 0x242d857e read_dev_sector +EXPORT_SYMBOL vmlinux 0x2431e90e __devm_release_region +EXPORT_SYMBOL vmlinux 0x2439f9ce fib_default_rule_pref +EXPORT_SYMBOL vmlinux 0x243a944d phy_ethtool_get_wol +EXPORT_SYMBOL vmlinux 0x243d217b dquot_alloc_inode +EXPORT_SYMBOL vmlinux 0x24428be5 strncpy_from_user +EXPORT_SYMBOL vmlinux 0x2445ed0c dmam_free_noncoherent +EXPORT_SYMBOL vmlinux 0x244667aa __module_put_and_exit +EXPORT_SYMBOL vmlinux 0x24504b8c dquot_mark_dquot_dirty +EXPORT_SYMBOL vmlinux 0x24537bb7 cpu_tss +EXPORT_SYMBOL vmlinux 0x2454f48f eisa_bus_type +EXPORT_SYMBOL vmlinux 0x2459bbcc console_set_on_cmdline +EXPORT_SYMBOL vmlinux 0x24806d71 param_ops_string +EXPORT_SYMBOL vmlinux 0x2482e688 vsprintf +EXPORT_SYMBOL vmlinux 0x24a0a164 noop_llseek +EXPORT_SYMBOL vmlinux 0x24a45a96 bio_put +EXPORT_SYMBOL vmlinux 0x24cead1d d_set_fallthru +EXPORT_SYMBOL vmlinux 0x24ea017e lock_sock_fast +EXPORT_SYMBOL vmlinux 0x24fdac79 wake_bit_function +EXPORT_SYMBOL vmlinux 0x250113b4 memory_read_from_buffer +EXPORT_SYMBOL vmlinux 0x251f0915 ip6_frag_init +EXPORT_SYMBOL vmlinux 0x251fec63 sk_stream_wait_connect +EXPORT_SYMBOL vmlinux 0x25277497 rfkill_register +EXPORT_SYMBOL vmlinux 0x254dcdb8 inet_release +EXPORT_SYMBOL vmlinux 0x2570a138 reservation_seqcount_string +EXPORT_SYMBOL vmlinux 0x25820c64 fs_overflowuid +EXPORT_SYMBOL vmlinux 0x25888c9e locks_copy_conflock +EXPORT_SYMBOL vmlinux 0x25b481a2 bprm_change_interp +EXPORT_SYMBOL vmlinux 0x25e8ed29 sg_nents_for_len +EXPORT_SYMBOL vmlinux 0x25e9d4bd resource_list_free +EXPORT_SYMBOL vmlinux 0x2608ddbd keyring_search +EXPORT_SYMBOL vmlinux 0x2614be6e __break_lease +EXPORT_SYMBOL vmlinux 0x26388f69 pci_disable_device +EXPORT_SYMBOL vmlinux 0x263beb75 ecryptfs_get_versions +EXPORT_SYMBOL vmlinux 0x2650d835 sysctl_ip_early_demux +EXPORT_SYMBOL vmlinux 0x265d6eb3 ata_print_version +EXPORT_SYMBOL vmlinux 0x26756bec ppp_unregister_channel +EXPORT_SYMBOL vmlinux 0x268cc6a2 sys_close +EXPORT_SYMBOL vmlinux 0x268eb1ad pm8606_osc_disable +EXPORT_SYMBOL vmlinux 0x26a16a56 framebuffer_release +EXPORT_SYMBOL vmlinux 0x26bb950b __kfifo_from_user_r +EXPORT_SYMBOL vmlinux 0x26bcfa9c acpi_evaluate_ost +EXPORT_SYMBOL vmlinux 0x26cb34a2 mempool_create +EXPORT_SYMBOL vmlinux 0x26d136f6 prepare_creds +EXPORT_SYMBOL vmlinux 0x26e298e0 unregister_memory_notifier +EXPORT_SYMBOL vmlinux 0x26e76fb8 sysctl_udp_wmem_min +EXPORT_SYMBOL vmlinux 0x270d1382 km_policy_notify +EXPORT_SYMBOL vmlinux 0x27124e2b param_get_long +EXPORT_SYMBOL vmlinux 0x271cba95 acpi_bus_private_data_handler +EXPORT_SYMBOL vmlinux 0x272d394e mtrr_del +EXPORT_SYMBOL vmlinux 0x2742491b freezing_slow_path +EXPORT_SYMBOL vmlinux 0x2747ee33 build_skb +EXPORT_SYMBOL vmlinux 0x274d08dc __kfifo_dma_out_prepare +EXPORT_SYMBOL vmlinux 0x276890d8 cdrom_get_last_written +EXPORT_SYMBOL vmlinux 0x2785a1c7 pcie_set_mps +EXPORT_SYMBOL vmlinux 0x27864d57 memparse +EXPORT_SYMBOL vmlinux 0x27866435 security_xfrm_state_alloc +EXPORT_SYMBOL vmlinux 0x27882b9b ida_simple_remove +EXPORT_SYMBOL vmlinux 0x278fdd51 max8998_bulk_write +EXPORT_SYMBOL vmlinux 0x279bae0f flow_get_u32_dst +EXPORT_SYMBOL vmlinux 0x27a0220b max8925_bulk_read +EXPORT_SYMBOL vmlinux 0x27ad3469 blk_integrity_compare +EXPORT_SYMBOL vmlinux 0x27ae7d0c ec_transaction +EXPORT_SYMBOL vmlinux 0x27b2a013 clear_wb_congested +EXPORT_SYMBOL vmlinux 0x27bbf221 disable_irq_nosync +EXPORT_SYMBOL vmlinux 0x27bfdff3 netdev_master_upper_dev_link +EXPORT_SYMBOL vmlinux 0x27dd393a __blk_end_request_cur +EXPORT_SYMBOL vmlinux 0x27e7a643 bio_integrity_alloc +EXPORT_SYMBOL vmlinux 0x280bb0a4 fddi_type_trans +EXPORT_SYMBOL vmlinux 0x280e92fb jbd2_journal_set_features +EXPORT_SYMBOL vmlinux 0x2814b949 nobh_writepage +EXPORT_SYMBOL vmlinux 0x2814d8af phy_connect_direct +EXPORT_SYMBOL vmlinux 0x281823c5 __kfifo_out_peek +EXPORT_SYMBOL vmlinux 0x2856afe7 simple_unlink +EXPORT_SYMBOL vmlinux 0x28872e77 pci_clear_master +EXPORT_SYMBOL vmlinux 0x28940818 seq_put_decimal_ull +EXPORT_SYMBOL vmlinux 0x28a2ed02 scsi_build_sense_buffer +EXPORT_SYMBOL vmlinux 0x28b715a6 isapnp_cfg_end +EXPORT_SYMBOL vmlinux 0x28b8bc62 clocksource_unregister +EXPORT_SYMBOL vmlinux 0x28bd944f phy_mii_ioctl +EXPORT_SYMBOL vmlinux 0x28d01394 netdev_notify_peers +EXPORT_SYMBOL vmlinux 0x28e09af1 iosf_mbi_available +EXPORT_SYMBOL vmlinux 0x291e1d8e create_empty_buffers +EXPORT_SYMBOL vmlinux 0x2931310d add_random_ready_callback +EXPORT_SYMBOL vmlinux 0x294dcc8c __napi_alloc_skb +EXPORT_SYMBOL vmlinux 0x29537c9e alloc_chrdev_region +EXPORT_SYMBOL vmlinux 0x295c0af2 dev_notice +EXPORT_SYMBOL vmlinux 0x295cd9c0 pnp_register_card_driver +EXPORT_SYMBOL vmlinux 0x2962da07 x86_dma_fallback_dev +EXPORT_SYMBOL vmlinux 0x296bd21e neigh_destroy +EXPORT_SYMBOL vmlinux 0x296d2c08 __devm_request_region +EXPORT_SYMBOL vmlinux 0x2996d21a sock_create +EXPORT_SYMBOL vmlinux 0x299888db dev_mc_sync +EXPORT_SYMBOL vmlinux 0x29b9e333 pci_dev_put +EXPORT_SYMBOL vmlinux 0x29fdda53 kstrtos8_from_user +EXPORT_SYMBOL vmlinux 0x2a303d4d check_signature +EXPORT_SYMBOL vmlinux 0x2a31a8ff md_reap_sync_thread +EXPORT_SYMBOL vmlinux 0x2a37d074 dma_pool_free +EXPORT_SYMBOL vmlinux 0x2a40b9ef xfrm_state_delete_tunnel +EXPORT_SYMBOL vmlinux 0x2a40c9ee blk_init_allocated_queue +EXPORT_SYMBOL vmlinux 0x2a565a25 wait_for_completion_timeout +EXPORT_SYMBOL vmlinux 0x2a5def2f intel_scu_ipc_iowrite32 +EXPORT_SYMBOL vmlinux 0x2a6772b3 tso_count_descs +EXPORT_SYMBOL vmlinux 0x2a8d6356 kmap_atomic_to_page +EXPORT_SYMBOL vmlinux 0x2aa0e4fc strncasecmp +EXPORT_SYMBOL vmlinux 0x2aa43155 bitmap_start_sync +EXPORT_SYMBOL vmlinux 0x2aad35de mb_cache_destroy +EXPORT_SYMBOL vmlinux 0x2ab45e31 init_net +EXPORT_SYMBOL vmlinux 0x2aba614c i2c_smbus_write_word_data +EXPORT_SYMBOL vmlinux 0x2acf0feb vfs_fstat +EXPORT_SYMBOL vmlinux 0x2ad1d177 bio_integrity_prep +EXPORT_SYMBOL vmlinux 0x2ad4512f mipi_dsi_attach +EXPORT_SYMBOL vmlinux 0x2ae49d4a simple_release_fs +EXPORT_SYMBOL vmlinux 0x2af153a9 netif_device_detach +EXPORT_SYMBOL vmlinux 0x2b0ba2b0 scsi_sense_desc_find +EXPORT_SYMBOL vmlinux 0x2b16388d elv_rb_former_request +EXPORT_SYMBOL vmlinux 0x2b1c1031 jbd2_journal_unlock_updates +EXPORT_SYMBOL vmlinux 0x2b2c7d3f mipi_dsi_dcs_write +EXPORT_SYMBOL vmlinux 0x2b2ce78b kstrtos8 +EXPORT_SYMBOL vmlinux 0x2b2d62eb dquot_get_state +EXPORT_SYMBOL vmlinux 0x2b5a5fc9 pnp_start_dev +EXPORT_SYMBOL vmlinux 0x2b5ec74f fbcon_rotate_cw +EXPORT_SYMBOL vmlinux 0x2b652be8 consume_skb +EXPORT_SYMBOL vmlinux 0x2b744906 pci_request_selected_regions_exclusive +EXPORT_SYMBOL vmlinux 0x2b88878f blk_queue_max_discard_sectors +EXPORT_SYMBOL vmlinux 0x2b945b99 __scm_send +EXPORT_SYMBOL vmlinux 0x2b9da7a4 genl_lock +EXPORT_SYMBOL vmlinux 0x2ba707a8 sysctl_tcp_low_latency +EXPORT_SYMBOL vmlinux 0x2bb55d6e acpi_remove_notify_handler +EXPORT_SYMBOL vmlinux 0x2bbd910b __hw_addr_unsync_dev +EXPORT_SYMBOL vmlinux 0x2bf99b72 jbd2_journal_clear_features +EXPORT_SYMBOL vmlinux 0x2bfeb410 acpi_get_handle +EXPORT_SYMBOL vmlinux 0x2c02a520 try_to_writeback_inodes_sb_nr +EXPORT_SYMBOL vmlinux 0x2c14323a kstrtol_from_user +EXPORT_SYMBOL vmlinux 0x2c170296 key_put +EXPORT_SYMBOL vmlinux 0x2c1baf71 nf_log_unset +EXPORT_SYMBOL vmlinux 0x2c1cf4e5 udp_set_csum +EXPORT_SYMBOL vmlinux 0x2c256e1f input_scancode_to_scalar +EXPORT_SYMBOL vmlinux 0x2c461e96 xfrm_policy_walk_done +EXPORT_SYMBOL vmlinux 0x2c5e9f42 security_old_inode_init_security +EXPORT_SYMBOL vmlinux 0x2c6d05c9 sock_get_timestamp +EXPORT_SYMBOL vmlinux 0x2c900d91 cpufreq_put_global_kobject +EXPORT_SYMBOL vmlinux 0x2c9449e4 skb_copy_datagram_iter +EXPORT_SYMBOL vmlinux 0x2ca319a6 wrmsrl_safe_on_cpu +EXPORT_SYMBOL vmlinux 0x2cc40ecf fence_remove_callback +EXPORT_SYMBOL vmlinux 0x2ccbcafb mipi_dsi_dcs_set_tear_on +EXPORT_SYMBOL vmlinux 0x2cd85885 scsi_target_quiesce +EXPORT_SYMBOL vmlinux 0x2ce0bcd9 tty_mutex +EXPORT_SYMBOL vmlinux 0x2ce1ba4d truncate_inode_pages_range +EXPORT_SYMBOL vmlinux 0x2cf4f375 generic_update_time +EXPORT_SYMBOL vmlinux 0x2cf99fbd phy_stop +EXPORT_SYMBOL vmlinux 0x2cf9a785 call_usermodehelper_exec +EXPORT_SYMBOL vmlinux 0x2cfbf747 send_sig_info +EXPORT_SYMBOL vmlinux 0x2d140a58 genl_unlock +EXPORT_SYMBOL vmlinux 0x2d144e21 rdmsrl_on_cpu +EXPORT_SYMBOL vmlinux 0x2d195acf vga_switcheroo_register_audio_client +EXPORT_SYMBOL vmlinux 0x2d30596c from_kqid_munged +EXPORT_SYMBOL vmlinux 0x2d3385d3 system_wq +EXPORT_SYMBOL vmlinux 0x2d37342e cpu_online_mask +EXPORT_SYMBOL vmlinux 0x2d42d0e9 phy_device_free +EXPORT_SYMBOL vmlinux 0x2d766363 scsi_unregister +EXPORT_SYMBOL vmlinux 0x2d8e9138 __inc_zone_page_state +EXPORT_SYMBOL vmlinux 0x2d9219ba jbd2_journal_check_used_features +EXPORT_SYMBOL vmlinux 0x2dab100f register_console +EXPORT_SYMBOL vmlinux 0x2db9deec mmc_wait_for_cmd +EXPORT_SYMBOL vmlinux 0x2dc362ea put_filp +EXPORT_SYMBOL vmlinux 0x2dc44b90 i2c_master_send +EXPORT_SYMBOL vmlinux 0x2dd16564 arch_register_cpu +EXPORT_SYMBOL vmlinux 0x2dd9a36b flex_array_shrink +EXPORT_SYMBOL vmlinux 0x2ddab935 __fib6_flush_trees +EXPORT_SYMBOL vmlinux 0x2dddb6ae _raw_write_lock_irqsave +EXPORT_SYMBOL vmlinux 0x2dde7d61 nf_unregister_sockopt +EXPORT_SYMBOL vmlinux 0x2deda4a1 security_sk_classify_flow +EXPORT_SYMBOL vmlinux 0x2dedc4c2 acpi_format_exception +EXPORT_SYMBOL vmlinux 0x2def7f76 rtc_cmos_write +EXPORT_SYMBOL vmlinux 0x2e1ca751 clk_put +EXPORT_SYMBOL vmlinux 0x2e20a4fc flow_cache_init +EXPORT_SYMBOL vmlinux 0x2e21c8ca seq_write +EXPORT_SYMBOL vmlinux 0x2e2ce9e0 sysctl_tcp_syncookies +EXPORT_SYMBOL vmlinux 0x2e668491 textsearch_find_continuous +EXPORT_SYMBOL vmlinux 0x2e7115ba pci_bus_read_config_byte +EXPORT_SYMBOL vmlinux 0x2e735399 dget_parent +EXPORT_SYMBOL vmlinux 0x2e76fdf6 elv_unregister_queue +EXPORT_SYMBOL vmlinux 0x2e8dc2a4 gro_find_receive_by_type +EXPORT_SYMBOL vmlinux 0x2ec524ad __kfifo_in_r +EXPORT_SYMBOL vmlinux 0x2eeac325 vm_mmap +EXPORT_SYMBOL vmlinux 0x2eee89fb __nd_driver_register +EXPORT_SYMBOL vmlinux 0x2ef63ad6 scsi_dev_info_list_del_keyed +EXPORT_SYMBOL vmlinux 0x2f03fc4b security_secmark_refcount_inc +EXPORT_SYMBOL vmlinux 0x2f064b55 allocate_resource +EXPORT_SYMBOL vmlinux 0x2f0cb4ac sock_no_getname +EXPORT_SYMBOL vmlinux 0x2f3767f9 bdev_read_only +EXPORT_SYMBOL vmlinux 0x2f384db3 acpi_is_video_device +EXPORT_SYMBOL vmlinux 0x2f393d81 blk_mq_requeue_request +EXPORT_SYMBOL vmlinux 0x2f3bad2e __dquot_transfer +EXPORT_SYMBOL vmlinux 0x2f3bc828 cpufreq_generic_suspend +EXPORT_SYMBOL vmlinux 0x2f432082 sk_prot_clear_portaddr_nulls +EXPORT_SYMBOL vmlinux 0x2f463da1 __alloc_page_frag +EXPORT_SYMBOL vmlinux 0x2f49a5af nf_afinfo +EXPORT_SYMBOL vmlinux 0x2f53601f param_ops_int +EXPORT_SYMBOL vmlinux 0x2f5cee81 acpi_pm_device_sleep_state +EXPORT_SYMBOL vmlinux 0x2f99a793 gen_pool_create +EXPORT_SYMBOL vmlinux 0x2f9de3f8 tcp_enter_cwr +EXPORT_SYMBOL vmlinux 0x2fabccba blk_mq_start_hw_queue +EXPORT_SYMBOL vmlinux 0x2fb6de5d add_device_randomness +EXPORT_SYMBOL vmlinux 0x2fde58d6 tcp_req_err +EXPORT_SYMBOL vmlinux 0x2fe252cc unregister_inet6addr_notifier +EXPORT_SYMBOL vmlinux 0x2fedd080 nf_log_trace +EXPORT_SYMBOL vmlinux 0x300b18f4 pci_try_set_mwi +EXPORT_SYMBOL vmlinux 0x3015b4c8 devfreq_monitor_suspend +EXPORT_SYMBOL vmlinux 0x3016493f datagram_poll +EXPORT_SYMBOL vmlinux 0x30226ddf agp_device_command +EXPORT_SYMBOL vmlinux 0x303041c6 udp_flow_hashrnd +EXPORT_SYMBOL vmlinux 0x30364cf7 complete_request_key +EXPORT_SYMBOL vmlinux 0x3049e549 softnet_data +EXPORT_SYMBOL vmlinux 0x304d3a4e dma_pool_create +EXPORT_SYMBOL vmlinux 0x3062a007 fbcon_set_tileops +EXPORT_SYMBOL vmlinux 0x307c2fd0 generic_check_addressable +EXPORT_SYMBOL vmlinux 0x30832fda ip_cmsg_recv_offset +EXPORT_SYMBOL vmlinux 0x3083b207 inode_change_ok +EXPORT_SYMBOL vmlinux 0x3085721f scsi_get_host_dev +EXPORT_SYMBOL vmlinux 0x3096be16 names_cachep +EXPORT_SYMBOL vmlinux 0x30a80826 __kfifo_from_user +EXPORT_SYMBOL vmlinux 0x30a92038 icmp_send +EXPORT_SYMBOL vmlinux 0x30b04526 ida_init +EXPORT_SYMBOL vmlinux 0x30b8663e unregister_qdisc +EXPORT_SYMBOL vmlinux 0x30c3d516 lockref_put_return +EXPORT_SYMBOL vmlinux 0x30e027d1 f_setown +EXPORT_SYMBOL vmlinux 0x30e74134 tty_termios_copy_hw +EXPORT_SYMBOL vmlinux 0x30f688a7 neigh_proc_dointvec +EXPORT_SYMBOL vmlinux 0x30f8a89c __devm_gpiod_get +EXPORT_SYMBOL vmlinux 0x30ffb810 tso_build_hdr +EXPORT_SYMBOL vmlinux 0x3102d70b frontswap_curr_pages +EXPORT_SYMBOL vmlinux 0x310917fe sort +EXPORT_SYMBOL vmlinux 0x3116a1e7 rwsem_wake +EXPORT_SYMBOL vmlinux 0x312559cc backlight_force_update +EXPORT_SYMBOL vmlinux 0x313486ea input_open_device +EXPORT_SYMBOL vmlinux 0x31380354 getrawmonotonic64 +EXPORT_SYMBOL vmlinux 0x31399d92 __register_chrdev +EXPORT_SYMBOL vmlinux 0x313e9c5a dquot_resume +EXPORT_SYMBOL vmlinux 0x3145216f pci_dev_present +EXPORT_SYMBOL vmlinux 0x3147857d default_red +EXPORT_SYMBOL vmlinux 0x3174bd79 bitmap_clear +EXPORT_SYMBOL vmlinux 0x31815456 simple_dname +EXPORT_SYMBOL vmlinux 0x3191f109 __krealloc +EXPORT_SYMBOL vmlinux 0x319bf55b jbd2_journal_invalidatepage +EXPORT_SYMBOL vmlinux 0x31a54720 xfrm_policy_alloc +EXPORT_SYMBOL vmlinux 0x31b09fb2 cookie_ecn_ok +EXPORT_SYMBOL vmlinux 0x31b0eede udp6_set_csum +EXPORT_SYMBOL vmlinux 0x31db3198 out_of_line_wait_on_bit +EXPORT_SYMBOL vmlinux 0x31e76b57 recalibrate_cpu_khz +EXPORT_SYMBOL vmlinux 0x31f0bb78 __kmap_atomic_idx +EXPORT_SYMBOL vmlinux 0x3202435a wrmsr_safe_regs +EXPORT_SYMBOL vmlinux 0x322520c1 inet_put_port +EXPORT_SYMBOL vmlinux 0x323448d4 qdisc_watchdog_cancel +EXPORT_SYMBOL vmlinux 0x32511bbb scsi_is_target_device +EXPORT_SYMBOL vmlinux 0x326425ca pci_unmap_biosrom +EXPORT_SYMBOL vmlinux 0x3276fb3f scsi_print_result +EXPORT_SYMBOL vmlinux 0x328bc6f9 inet_sendmsg +EXPORT_SYMBOL vmlinux 0x328efafe __skb_warn_lro_forwarding +EXPORT_SYMBOL vmlinux 0x3290d146 module_put +EXPORT_SYMBOL vmlinux 0x32a26158 blk_mq_free_tag_set +EXPORT_SYMBOL vmlinux 0x32a74a4c registered_fb +EXPORT_SYMBOL vmlinux 0x32e6f1a0 acpi_video_backlight_string +EXPORT_SYMBOL vmlinux 0x32f67da9 tcp_conn_request +EXPORT_SYMBOL vmlinux 0x332f50c3 simple_dentry_operations +EXPORT_SYMBOL vmlinux 0x3332509a sock_setsockopt +EXPORT_SYMBOL vmlinux 0x3333995a blk_queue_io_opt +EXPORT_SYMBOL vmlinux 0x333a5038 pci_msi_vec_count +EXPORT_SYMBOL vmlinux 0x333e0441 vfs_getattr_nosec +EXPORT_SYMBOL vmlinux 0x33732901 neigh_seq_start +EXPORT_SYMBOL vmlinux 0x33779a8e blk_free_tags +EXPORT_SYMBOL vmlinux 0x339ca9c7 xfrm_find_acq_byseq +EXPORT_SYMBOL vmlinux 0x33bab619 key_validate +EXPORT_SYMBOL vmlinux 0x33c3cb9b set_anon_super +EXPORT_SYMBOL vmlinux 0x33c7435c prandom_u32_state +EXPORT_SYMBOL vmlinux 0x33dbfd93 tcp_memory_allocated +EXPORT_SYMBOL vmlinux 0x33e52657 pcie_get_minimum_link +EXPORT_SYMBOL vmlinux 0x33f0768c cpufreq_quick_get_max +EXPORT_SYMBOL vmlinux 0x3407729f unregister_quota_format +EXPORT_SYMBOL vmlinux 0x340cd1df pci_unregister_driver +EXPORT_SYMBOL vmlinux 0x34184afe current_kernel_time +EXPORT_SYMBOL vmlinux 0x34275b8e blk_queue_init_tags +EXPORT_SYMBOL vmlinux 0x342f60fe apm_info +EXPORT_SYMBOL vmlinux 0x34316b8f mmc_request_done +EXPORT_SYMBOL vmlinux 0x344d5cad nf_reinject +EXPORT_SYMBOL vmlinux 0x34505aaa sock_common_getsockopt +EXPORT_SYMBOL vmlinux 0x34575f6c ethtool_op_get_ts_info +EXPORT_SYMBOL vmlinux 0x3465caa3 cpu_maps_update_begin +EXPORT_SYMBOL vmlinux 0x3466e021 nvdimm_bus_lock +EXPORT_SYMBOL vmlinux 0x346eca8d mdiobus_scan +EXPORT_SYMBOL vmlinux 0x346fbe9c get_fs_type +EXPORT_SYMBOL vmlinux 0x347013de nla_validate +EXPORT_SYMBOL vmlinux 0x347e62ae pci_pme_active +EXPORT_SYMBOL vmlinux 0x348569a2 led_blink_set_oneshot +EXPORT_SYMBOL vmlinux 0x349cba85 strchr +EXPORT_SYMBOL vmlinux 0x34a4061a agp_create_memory +EXPORT_SYMBOL vmlinux 0x34ad1059 would_dump +EXPORT_SYMBOL vmlinux 0x34b84728 touch_atime +EXPORT_SYMBOL vmlinux 0x34be061e blk_queue_prep_rq +EXPORT_SYMBOL vmlinux 0x34cedacd tcp_make_synack +EXPORT_SYMBOL vmlinux 0x34d50d9b crypto_sha256_finup +EXPORT_SYMBOL vmlinux 0x34f04d04 acl_by_type +EXPORT_SYMBOL vmlinux 0x34f3484e security_tun_dev_attach_queue +EXPORT_SYMBOL vmlinux 0x34f9bff3 pci_iomap +EXPORT_SYMBOL vmlinux 0x35033921 remap_pfn_range +EXPORT_SYMBOL vmlinux 0x3506e1bf setup_arg_pages +EXPORT_SYMBOL vmlinux 0x3517383e register_reboot_notifier +EXPORT_SYMBOL vmlinux 0x35183036 sg_miter_skip +EXPORT_SYMBOL vmlinux 0x351f1d58 fsnotify_add_mark +EXPORT_SYMBOL vmlinux 0x35302278 replace_mount_options +EXPORT_SYMBOL vmlinux 0x353de98f cmdline_parts_parse +EXPORT_SYMBOL vmlinux 0x353e21e3 acpi_bios_warning +EXPORT_SYMBOL vmlinux 0x353eda2a blk_requeue_request +EXPORT_SYMBOL vmlinux 0x354b3d9c max8925_reg_write +EXPORT_SYMBOL vmlinux 0x3554f135 kmem_cache_destroy +EXPORT_SYMBOL vmlinux 0x35573847 dev_mc_del +EXPORT_SYMBOL vmlinux 0x355b3efb dquot_quota_on_mount +EXPORT_SYMBOL vmlinux 0x356461c8 rtc_time64_to_tm +EXPORT_SYMBOL vmlinux 0x3581d4dd unregister_md_personality +EXPORT_SYMBOL vmlinux 0x3587ed0b generic_start_io_acct +EXPORT_SYMBOL vmlinux 0x358c4fca fb_blank +EXPORT_SYMBOL vmlinux 0x35a2ab98 security_inode_permission +EXPORT_SYMBOL vmlinux 0x35a88f28 zlib_inflateInit2 +EXPORT_SYMBOL vmlinux 0x35ab5e80 fb_is_primary_device +EXPORT_SYMBOL vmlinux 0x35c3e715 dev_crit +EXPORT_SYMBOL vmlinux 0x35cf2b56 ip6_find_1stfragopt +EXPORT_SYMBOL vmlinux 0x35d96fdd jbd2_journal_destroy +EXPORT_SYMBOL vmlinux 0x35f03cba tcp_ioctl +EXPORT_SYMBOL vmlinux 0x36089b90 seq_release +EXPORT_SYMBOL vmlinux 0x360b1afe probe_irq_mask +EXPORT_SYMBOL vmlinux 0x362bb5d8 generic_removexattr +EXPORT_SYMBOL vmlinux 0x362ffcd5 agp_generic_mask_memory +EXPORT_SYMBOL vmlinux 0x367ba856 __crc32c_le_shift +EXPORT_SYMBOL vmlinux 0x368ebb9e sock_common_setsockopt +EXPORT_SYMBOL vmlinux 0x36b137c0 copy_page_to_iter +EXPORT_SYMBOL vmlinux 0x36bd681b groups_alloc +EXPORT_SYMBOL vmlinux 0x36c5a2f5 vga_client_register +EXPORT_SYMBOL vmlinux 0x36c6af51 intel_scu_ipc_iowrite8 +EXPORT_SYMBOL vmlinux 0x36d12921 skb_kill_datagram +EXPORT_SYMBOL vmlinux 0x36fdda67 hdmi_infoframe_pack +EXPORT_SYMBOL vmlinux 0x370bb1ce nlmsg_notify +EXPORT_SYMBOL vmlinux 0x3719fa27 inet_dev_addr_type +EXPORT_SYMBOL vmlinux 0x371f7af6 md_write_end +EXPORT_SYMBOL vmlinux 0x3744cf36 vmalloc_to_pfn +EXPORT_SYMBOL vmlinux 0x37584cfc kobject_get +EXPORT_SYMBOL vmlinux 0x3782e344 dump_trace +EXPORT_SYMBOL vmlinux 0x378dafaf register_framebuffer +EXPORT_SYMBOL vmlinux 0x37933745 mmc_gpiod_request_cd_irq +EXPORT_SYMBOL vmlinux 0x379dee5f trace_print_symbols_seq_u64 +EXPORT_SYMBOL vmlinux 0x37a52ca3 __get_user_pages_unlocked +EXPORT_SYMBOL vmlinux 0x37af3190 dm_table_run_md_queue_async +EXPORT_SYMBOL vmlinux 0x37ba72a2 __vfs_read +EXPORT_SYMBOL vmlinux 0x37befc70 jiffies_to_msecs +EXPORT_SYMBOL vmlinux 0x37db8f19 dmi_get_date +EXPORT_SYMBOL vmlinux 0x37df1d54 dmam_free_coherent +EXPORT_SYMBOL vmlinux 0x37e2469e set_wb_congested +EXPORT_SYMBOL vmlinux 0x37e5a84d scsi_register_interface +EXPORT_SYMBOL vmlinux 0x37e74642 get_jiffies_64 +EXPORT_SYMBOL vmlinux 0x37f610df __cleancache_init_shared_fs +EXPORT_SYMBOL vmlinux 0x37f614b7 __kfifo_len_r +EXPORT_SYMBOL vmlinux 0x38099e13 wrmsrl_on_cpu +EXPORT_SYMBOL vmlinux 0x381144a9 __tracepoint_module_get +EXPORT_SYMBOL vmlinux 0x381a798a setup_max_cpus +EXPORT_SYMBOL vmlinux 0x381ccc13 __kfifo_dma_in_prepare_r +EXPORT_SYMBOL vmlinux 0x3825d1c5 iov_iter_copy_from_user_atomic +EXPORT_SYMBOL vmlinux 0x3829dc13 simple_dir_operations +EXPORT_SYMBOL vmlinux 0x38367b9c ip6_frag_match +EXPORT_SYMBOL vmlinux 0x384ab98e nd_region_to_nstype +EXPORT_SYMBOL vmlinux 0x3856f806 vme_register_driver +EXPORT_SYMBOL vmlinux 0x388509bc vga_switcheroo_init_domain_pm_ops +EXPORT_SYMBOL vmlinux 0x38869d88 kstat +EXPORT_SYMBOL vmlinux 0x388799f6 unregister_kmmio_probe +EXPORT_SYMBOL vmlinux 0x38938d07 elv_rb_add +EXPORT_SYMBOL vmlinux 0x38a3dd2d kobject_set_name +EXPORT_SYMBOL vmlinux 0x38a71b7e pci_free_resource_list +EXPORT_SYMBOL vmlinux 0x38a9f7c5 in6addr_loopback +EXPORT_SYMBOL vmlinux 0x38aa98da vlan_dev_vlan_proto +EXPORT_SYMBOL vmlinux 0x38aab844 devm_gpio_request +EXPORT_SYMBOL vmlinux 0x38af23d7 blk_limits_max_hw_sectors +EXPORT_SYMBOL vmlinux 0x38c198fc cdrom_get_media_event +EXPORT_SYMBOL vmlinux 0x38d040a0 dev_alert +EXPORT_SYMBOL vmlinux 0x38e09cd7 dquot_initialize +EXPORT_SYMBOL vmlinux 0x38ee0c6b tcp_recvmsg +EXPORT_SYMBOL vmlinux 0x38ffcbe5 __hw_addr_sync_dev +EXPORT_SYMBOL vmlinux 0x393935d7 eth_gro_complete +EXPORT_SYMBOL vmlinux 0x3939f8f0 rfkill_pause_polling +EXPORT_SYMBOL vmlinux 0x39461d6a in_egroup_p +EXPORT_SYMBOL vmlinux 0x3949b88d netif_schedule_queue +EXPORT_SYMBOL vmlinux 0x3978abb9 inet6_release +EXPORT_SYMBOL vmlinux 0x39991865 icmp_global_allow +EXPORT_SYMBOL vmlinux 0x39a055f3 acpi_remove_gpe_handler +EXPORT_SYMBOL vmlinux 0x39b52d19 __bitmap_and +EXPORT_SYMBOL vmlinux 0x39edd670 security_dentry_init_security +EXPORT_SYMBOL vmlinux 0x39f1c2f4 ida_get_new_above +EXPORT_SYMBOL vmlinux 0x3a08475f platform_thermal_notify +EXPORT_SYMBOL vmlinux 0x3a1ac054 set_normalized_timespec64 +EXPORT_SYMBOL vmlinux 0x3a2d8178 gnet_stats_copy_basic +EXPORT_SYMBOL vmlinux 0x3a32839e intel_gtt_chipset_flush +EXPORT_SYMBOL vmlinux 0x3a34c37c scsi_device_resume +EXPORT_SYMBOL vmlinux 0x3a3f2a54 tcp_read_sock +EXPORT_SYMBOL vmlinux 0x3a416dd7 param_get_ushort +EXPORT_SYMBOL vmlinux 0x3a4cb150 sync_filesystem +EXPORT_SYMBOL vmlinux 0x3a4f8b26 dma_common_mmap +EXPORT_SYMBOL vmlinux 0x3a7997a8 jbd2_journal_start +EXPORT_SYMBOL vmlinux 0x3a7a1ffd skb_vlan_untag +EXPORT_SYMBOL vmlinux 0x3a7f5de6 blk_mq_tag_to_rq +EXPORT_SYMBOL vmlinux 0x3a8b3d07 ___pskb_trim +EXPORT_SYMBOL vmlinux 0x3a93fe26 netif_receive_skb_sk +EXPORT_SYMBOL vmlinux 0x3a9b6fb9 blk_unregister_region +EXPORT_SYMBOL vmlinux 0x3aced625 xfrm_policy_destroy +EXPORT_SYMBOL vmlinux 0x3ad1cfad __sk_mem_schedule +EXPORT_SYMBOL vmlinux 0x3b03cea4 tty_free_termios +EXPORT_SYMBOL vmlinux 0x3b0b56d7 tcf_em_unregister +EXPORT_SYMBOL vmlinux 0x3b201620 machine_real_restart +EXPORT_SYMBOL vmlinux 0x3b24db6b fput +EXPORT_SYMBOL vmlinux 0x3b28dbe5 sk_stream_error +EXPORT_SYMBOL vmlinux 0x3b3c5975 tso_build_data +EXPORT_SYMBOL vmlinux 0x3b44c9ec get_user_pages +EXPORT_SYMBOL vmlinux 0x3b4abbe0 param_get_charp +EXPORT_SYMBOL vmlinux 0x3b644591 __bitmap_shift_left +EXPORT_SYMBOL vmlinux 0x3b653af5 mem_cgroup_begin_page_stat +EXPORT_SYMBOL vmlinux 0x3b6f6cd2 udp_table +EXPORT_SYMBOL vmlinux 0x3b8cdf7a input_free_device +EXPORT_SYMBOL vmlinux 0x3ba6e97f __dev_kfree_skb_any +EXPORT_SYMBOL vmlinux 0x3baf17de read_cache_page +EXPORT_SYMBOL vmlinux 0x3bb3d961 tcf_em_register +EXPORT_SYMBOL vmlinux 0x3bb5114a prepare_to_wait +EXPORT_SYMBOL vmlinux 0x3bd6bce4 seq_escape +EXPORT_SYMBOL vmlinux 0x3be46768 agp_generic_enable +EXPORT_SYMBOL vmlinux 0x3be8a170 __inode_sub_bytes +EXPORT_SYMBOL vmlinux 0x3bf3b176 mod_zone_page_state +EXPORT_SYMBOL vmlinux 0x3bf43f7a tcp_init_sock +EXPORT_SYMBOL vmlinux 0x3c30d23a dev_mc_flush +EXPORT_SYMBOL vmlinux 0x3c3fce39 __local_bh_enable_ip +EXPORT_SYMBOL vmlinux 0x3c4fa90f kdb_current_task +EXPORT_SYMBOL vmlinux 0x3c52aa20 from_kuid +EXPORT_SYMBOL vmlinux 0x3c676865 skb_clone +EXPORT_SYMBOL vmlinux 0x3c6a1f00 serio_unregister_driver +EXPORT_SYMBOL vmlinux 0x3c794806 security_path_unlink +EXPORT_SYMBOL vmlinux 0x3c80c06c kstrtoull +EXPORT_SYMBOL vmlinux 0x3c87a4a6 dev_get_phys_port_id +EXPORT_SYMBOL vmlinux 0x3c8986da agp_generic_destroy_pages +EXPORT_SYMBOL vmlinux 0x3ca11de0 i2c_master_recv +EXPORT_SYMBOL vmlinux 0x3ca8dff1 i2c_smbus_write_byte +EXPORT_SYMBOL vmlinux 0x3cb3931b sg_copy_to_buffer +EXPORT_SYMBOL vmlinux 0x3cc5b374 pci_add_new_bus +EXPORT_SYMBOL vmlinux 0x3ccde43d nd_device_unregister +EXPORT_SYMBOL vmlinux 0x3cd65b56 insert_inode_locked4 +EXPORT_SYMBOL vmlinux 0x3ce4ca6f disable_irq +EXPORT_SYMBOL vmlinux 0x3ce88deb dev_mc_add +EXPORT_SYMBOL vmlinux 0x3d092df7 skb_copy_expand +EXPORT_SYMBOL vmlinux 0x3d1d10f0 led_blink_set +EXPORT_SYMBOL vmlinux 0x3d2f42b3 neigh_lookup_nodev +EXPORT_SYMBOL vmlinux 0x3d65ab7e tty_port_put +EXPORT_SYMBOL vmlinux 0x3d6e6d90 fasync_helper +EXPORT_SYMBOL vmlinux 0x3d7317a8 ip6_route_me_harder +EXPORT_SYMBOL vmlinux 0x3d764f64 simple_open +EXPORT_SYMBOL vmlinux 0x3d7c1ed7 msrs_alloc +EXPORT_SYMBOL vmlinux 0x3d7d8c81 kernel_write +EXPORT_SYMBOL vmlinux 0x3da171f9 pci_mem_start +EXPORT_SYMBOL vmlinux 0x3da19c2c neigh_proc_dointvec_jiffies +EXPORT_SYMBOL vmlinux 0x3dc9a121 md_set_array_sectors +EXPORT_SYMBOL vmlinux 0x3dcb88a0 irq_set_handler_data +EXPORT_SYMBOL vmlinux 0x3df0b557 tcf_register_action +EXPORT_SYMBOL vmlinux 0x3df0d135 sock_update_memcg +EXPORT_SYMBOL vmlinux 0x3dfc897c seq_hlist_start_head +EXPORT_SYMBOL vmlinux 0x3e2ae3a8 acpi_release_global_lock +EXPORT_SYMBOL vmlinux 0x3e3de22f param_set_invbool +EXPORT_SYMBOL vmlinux 0x3e4079e1 blk_queue_update_dma_pad +EXPORT_SYMBOL vmlinux 0x3e583505 devm_clk_get +EXPORT_SYMBOL vmlinux 0x3e5b3193 user_revoke +EXPORT_SYMBOL vmlinux 0x3e654f49 acpi_decode_pld_buffer +EXPORT_SYMBOL vmlinux 0x3e6bbca1 sock_queue_rcv_skb +EXPORT_SYMBOL vmlinux 0x3e882943 pcibios_align_resource +EXPORT_SYMBOL vmlinux 0x3e8b5193 bio_integrity_endio +EXPORT_SYMBOL vmlinux 0x3e9110fa __hw_addr_unsync +EXPORT_SYMBOL vmlinux 0x3e95083c vme_slave_get +EXPORT_SYMBOL vmlinux 0x3e96c143 send_sig +EXPORT_SYMBOL vmlinux 0x3ea1bb66 skb_queue_head +EXPORT_SYMBOL vmlinux 0x3eb0f3e0 mount_subtree +EXPORT_SYMBOL vmlinux 0x3ec7cd55 i2c_put_adapter +EXPORT_SYMBOL vmlinux 0x3edbbc3e blk_post_runtime_resume +EXPORT_SYMBOL vmlinux 0x3edc01c2 blk_fetch_request +EXPORT_SYMBOL vmlinux 0x3eea72ce page_cache_next_hole +EXPORT_SYMBOL vmlinux 0x3eedf29a skb_make_writable +EXPORT_SYMBOL vmlinux 0x3ef78d80 vm_get_page_prot +EXPORT_SYMBOL vmlinux 0x3eff5ac2 intel_scu_ipc_writev +EXPORT_SYMBOL vmlinux 0x3f0546a8 ioread32_rep +EXPORT_SYMBOL vmlinux 0x3f06683e jbd2_journal_dirty_metadata +EXPORT_SYMBOL vmlinux 0x3f081f77 forget_cached_acl +EXPORT_SYMBOL vmlinux 0x3f0d9f32 _raw_read_trylock +EXPORT_SYMBOL vmlinux 0x3f175c86 __scsi_alloc_queue +EXPORT_SYMBOL vmlinux 0x3f20bdd9 in6_dev_finish_destroy +EXPORT_SYMBOL vmlinux 0x3f20ca97 rtc_lock +EXPORT_SYMBOL vmlinux 0x3f2d42b5 register_cdrom +EXPORT_SYMBOL vmlinux 0x3f3c4dea bh_uptodate_or_lock +EXPORT_SYMBOL vmlinux 0x3f3fae07 cap_mmap_file +EXPORT_SYMBOL vmlinux 0x3f40154f netdev_warn +EXPORT_SYMBOL vmlinux 0x3f43ea59 ipv6_chk_addr_and_flags +EXPORT_SYMBOL vmlinux 0x3f4547a7 put_unused_fd +EXPORT_SYMBOL vmlinux 0x3f5c671c mmc_of_parse +EXPORT_SYMBOL vmlinux 0x3f616ce2 queue_delayed_work_on +EXPORT_SYMBOL vmlinux 0x3f669f7d simple_transaction_release +EXPORT_SYMBOL vmlinux 0x3fb085c8 inet_reqsk_alloc +EXPORT_SYMBOL vmlinux 0x3fe57df8 blk_queue_end_tag +EXPORT_SYMBOL vmlinux 0x3fec048f sg_next +EXPORT_SYMBOL vmlinux 0x3ff1bae7 key_payload_reserve +EXPORT_SYMBOL vmlinux 0x401e48f6 vfs_read +EXPORT_SYMBOL vmlinux 0x402077e8 pci_set_dma_max_seg_size +EXPORT_SYMBOL vmlinux 0x402b8281 __request_module +EXPORT_SYMBOL vmlinux 0x4034a728 put_disk +EXPORT_SYMBOL vmlinux 0x4039918a clk_register_clkdev +EXPORT_SYMBOL vmlinux 0x4050188a inet6_getname +EXPORT_SYMBOL vmlinux 0x4059792f print_hex_dump +EXPORT_SYMBOL vmlinux 0x405bace2 blk_mq_map_queue +EXPORT_SYMBOL vmlinux 0x405c1144 get_seconds +EXPORT_SYMBOL vmlinux 0x40973662 sysctl_udp_mem +EXPORT_SYMBOL vmlinux 0x4097fa45 acpi_read_bit_register +EXPORT_SYMBOL vmlinux 0x409873e3 tty_termios_baud_rate +EXPORT_SYMBOL vmlinux 0x40a1f0b3 block_write_begin +EXPORT_SYMBOL vmlinux 0x40a27c37 scsi_dev_info_remove_list +EXPORT_SYMBOL vmlinux 0x40a2d1dd dm_table_get_size +EXPORT_SYMBOL vmlinux 0x40a9b349 vzalloc +EXPORT_SYMBOL vmlinux 0x40c01859 gen_pool_best_fit +EXPORT_SYMBOL vmlinux 0x40c510e2 iw_handler_get_spy +EXPORT_SYMBOL vmlinux 0x40c7247c si_meminfo +EXPORT_SYMBOL vmlinux 0x40c89d46 acpi_get_table_by_index +EXPORT_SYMBOL vmlinux 0x40c9225d __devm_gpiod_get_index +EXPORT_SYMBOL vmlinux 0x40d04664 console_trylock +EXPORT_SYMBOL vmlinux 0x40d59096 unregister_restart_handler +EXPORT_SYMBOL vmlinux 0x41227e78 inetdev_by_index +EXPORT_SYMBOL vmlinux 0x412a268e param_ops_bint +EXPORT_SYMBOL vmlinux 0x413150a3 devm_ioport_unmap +EXPORT_SYMBOL vmlinux 0x4131c822 scsi_ioctl_reset +EXPORT_SYMBOL vmlinux 0x41482d8b strndup_user +EXPORT_SYMBOL vmlinux 0x4160815e netpoll_cleanup +EXPORT_SYMBOL vmlinux 0x416aa30d tcp_v4_send_check +EXPORT_SYMBOL vmlinux 0x4175ca25 tty_insert_flip_string_flags +EXPORT_SYMBOL vmlinux 0x41862ad4 vme_alloc_consistent +EXPORT_SYMBOL vmlinux 0x4188d439 neigh_rand_reach_time +EXPORT_SYMBOL vmlinux 0x418a5367 __scsi_format_command +EXPORT_SYMBOL vmlinux 0x419bf53c kern_path_mountpoint +EXPORT_SYMBOL vmlinux 0x41ba5183 security_d_instantiate +EXPORT_SYMBOL vmlinux 0x41c211ca vga_switcheroo_register_handler +EXPORT_SYMBOL vmlinux 0x41d544ff generic_file_llseek +EXPORT_SYMBOL vmlinux 0x41d7be67 inet6_unregister_protosw +EXPORT_SYMBOL vmlinux 0x41d856c7 irq_to_desc +EXPORT_SYMBOL vmlinux 0x41d96d94 generic_block_fiemap +EXPORT_SYMBOL vmlinux 0x4211c77d shrink_dcache_sb +EXPORT_SYMBOL vmlinux 0x4214176f xfrm_register_km +EXPORT_SYMBOL vmlinux 0x42160169 flush_workqueue +EXPORT_SYMBOL vmlinux 0x42188d7b __netdev_alloc_skb +EXPORT_SYMBOL vmlinux 0x421e608c xfrm_state_update +EXPORT_SYMBOL vmlinux 0x4224c987 blk_mq_add_to_requeue_list +EXPORT_SYMBOL vmlinux 0x422d9885 generic_file_splice_read +EXPORT_SYMBOL vmlinux 0x4233d2e4 dev_close +EXPORT_SYMBOL vmlinux 0x42350e8d ucs2_strlen +EXPORT_SYMBOL vmlinux 0x4248ae3c single_task_running +EXPORT_SYMBOL vmlinux 0x424d3620 zlib_inflateIncomp +EXPORT_SYMBOL vmlinux 0x42595e58 vgacon_text_force +EXPORT_SYMBOL vmlinux 0x426719dc blk_queue_make_request +EXPORT_SYMBOL vmlinux 0x426847e4 jbd2_journal_extend +EXPORT_SYMBOL vmlinux 0x428968e9 input_flush_device +EXPORT_SYMBOL vmlinux 0x4292364c schedule +EXPORT_SYMBOL vmlinux 0x429935e5 check_disk_change +EXPORT_SYMBOL vmlinux 0x42a1b208 gen_pool_first_fit +EXPORT_SYMBOL vmlinux 0x42a8ef57 seq_path +EXPORT_SYMBOL vmlinux 0x42b00ceb netpoll_print_options +EXPORT_SYMBOL vmlinux 0x42bbd4cd mmc_register_driver +EXPORT_SYMBOL vmlinux 0x42c8de35 ioremap_nocache +EXPORT_SYMBOL vmlinux 0x42d40178 __xfrm_state_destroy +EXPORT_SYMBOL vmlinux 0x42f0e4e9 i2c_del_adapter +EXPORT_SYMBOL vmlinux 0x4300671b key_reject_and_link +EXPORT_SYMBOL vmlinux 0x430168d7 simple_dir_inode_operations +EXPORT_SYMBOL vmlinux 0x4302d0eb free_pages +EXPORT_SYMBOL vmlinux 0x4308066c generic_write_checks +EXPORT_SYMBOL vmlinux 0x431f3c56 sk_common_release +EXPORT_SYMBOL vmlinux 0x431f6cbb scsi_host_put +EXPORT_SYMBOL vmlinux 0x43410fcb vfs_rmdir +EXPORT_SYMBOL vmlinux 0x434d08c1 __pci_enable_wake +EXPORT_SYMBOL vmlinux 0x4351577a fb_parse_edid +EXPORT_SYMBOL vmlinux 0x436023d7 devfreq_suspend_device +EXPORT_SYMBOL vmlinux 0x436c2179 iowrite32 +EXPORT_SYMBOL vmlinux 0x43721b32 generic_permission +EXPORT_SYMBOL vmlinux 0x437d7ebf __pci_register_driver +EXPORT_SYMBOL vmlinux 0x43825890 qdisc_reset +EXPORT_SYMBOL vmlinux 0x438610bd security_tun_dev_alloc_security +EXPORT_SYMBOL vmlinux 0x43aaee78 netdev_alert +EXPORT_SYMBOL vmlinux 0x43cc34f5 pcim_iomap_regions_request_all +EXPORT_SYMBOL vmlinux 0x43d74165 read_cache_pages +EXPORT_SYMBOL vmlinux 0x43f23311 dm_table_get_md +EXPORT_SYMBOL vmlinux 0x440bc3ce scm_fp_dup +EXPORT_SYMBOL vmlinux 0x440f766c i2c_verify_client +EXPORT_SYMBOL vmlinux 0x4410f8bf kobject_init +EXPORT_SYMBOL vmlinux 0x4411c503 prandom_seed +EXPORT_SYMBOL vmlinux 0x44366cfc simple_write_to_buffer +EXPORT_SYMBOL vmlinux 0x44387c86 xfrm4_protocol_register +EXPORT_SYMBOL vmlinux 0x443ec4f1 jbd2_journal_check_available_features +EXPORT_SYMBOL vmlinux 0x44438b96 hex2bin +EXPORT_SYMBOL vmlinux 0x44625a6b tag_pages_for_writeback +EXPORT_SYMBOL vmlinux 0x446305f7 d_drop +EXPORT_SYMBOL vmlinux 0x448e085f prepare_to_wait_exclusive +EXPORT_SYMBOL vmlinux 0x448e19ff mount_single +EXPORT_SYMBOL vmlinux 0x449a4ad3 ata_scsi_cmd_error_handler +EXPORT_SYMBOL vmlinux 0x449fe84b acpi_set_firmware_waking_vectors +EXPORT_SYMBOL vmlinux 0x44aaf30f tsc_khz +EXPORT_SYMBOL vmlinux 0x44ad054d page_zero_new_buffers +EXPORT_SYMBOL vmlinux 0x44b1d426 __dynamic_pr_debug +EXPORT_SYMBOL vmlinux 0x44c58e71 scsi_mode_sense +EXPORT_SYMBOL vmlinux 0x44d87115 netdev_state_change +EXPORT_SYMBOL vmlinux 0x44da2387 lookup_bdev +EXPORT_SYMBOL vmlinux 0x44e222be vfs_write +EXPORT_SYMBOL vmlinux 0x44e9a829 match_token +EXPORT_SYMBOL vmlinux 0x44f38432 mmc_gpio_request_cd +EXPORT_SYMBOL vmlinux 0x44f69964 _raw_read_unlock_bh +EXPORT_SYMBOL vmlinux 0x45081703 ec_get_handle +EXPORT_SYMBOL vmlinux 0x450dec01 phy_drivers_register +EXPORT_SYMBOL vmlinux 0x453263ac ipv6_skip_exthdr +EXPORT_SYMBOL vmlinux 0x453c8403 pci_msi_enabled +EXPORT_SYMBOL vmlinux 0x4541e965 mb_cache_entry_release +EXPORT_SYMBOL vmlinux 0x454a9d11 netpoll_send_udp +EXPORT_SYMBOL vmlinux 0x454f6405 ipv6_push_nfrag_opts +EXPORT_SYMBOL vmlinux 0x4555c5ce sock_recv_errqueue +EXPORT_SYMBOL vmlinux 0x456c2942 __skb_checksum_complete_head +EXPORT_SYMBOL vmlinux 0x4578f528 __kfifo_to_user +EXPORT_SYMBOL vmlinux 0x4593e24f simple_rename +EXPORT_SYMBOL vmlinux 0x4596cf86 pagecache_get_page +EXPORT_SYMBOL vmlinux 0x45a6be13 cpufreq_sysfs_remove_file +EXPORT_SYMBOL vmlinux 0x45a765cf pci_add_resource +EXPORT_SYMBOL vmlinux 0x45b7d427 poll_schedule_timeout +EXPORT_SYMBOL vmlinux 0x45d66aa2 __vfs_write +EXPORT_SYMBOL vmlinux 0x4616f856 mount_pseudo +EXPORT_SYMBOL vmlinux 0x4629334c __preempt_count +EXPORT_SYMBOL vmlinux 0x462a2e75 match_strlcpy +EXPORT_SYMBOL vmlinux 0x46302590 d_obtain_alias +EXPORT_SYMBOL vmlinux 0x46382c98 dec_zone_page_state +EXPORT_SYMBOL vmlinux 0x463c3939 netdev_all_upper_get_next_dev_rcu +EXPORT_SYMBOL vmlinux 0x4657a933 con_set_default_unimap +EXPORT_SYMBOL vmlinux 0x46594ac7 devfreq_remove_device +EXPORT_SYMBOL vmlinux 0x465a01ac secpath_dup +EXPORT_SYMBOL vmlinux 0x465cab34 secure_ipv6_port_ephemeral +EXPORT_SYMBOL vmlinux 0x46649cd1 vme_lm_set +EXPORT_SYMBOL vmlinux 0x466c14a7 __delay +EXPORT_SYMBOL vmlinux 0x4678fa48 agp_copy_info +EXPORT_SYMBOL vmlinux 0x46909dc2 udp_lib_unhash +EXPORT_SYMBOL vmlinux 0x46f0d70d dquot_acquire +EXPORT_SYMBOL vmlinux 0x46feb099 dm_read_arg +EXPORT_SYMBOL vmlinux 0x4731e2e0 new_inode +EXPORT_SYMBOL vmlinux 0x473ec6fa vga_tryget +EXPORT_SYMBOL vmlinux 0x47416e14 cpu_rmap_add +EXPORT_SYMBOL vmlinux 0x475f010b acpi_purge_cached_objects +EXPORT_SYMBOL vmlinux 0x47638a4b param_set_copystring +EXPORT_SYMBOL vmlinux 0x478d10b2 ht_destroy_irq +EXPORT_SYMBOL vmlinux 0x47939e0d __tasklet_hi_schedule +EXPORT_SYMBOL vmlinux 0x479c3c86 find_next_zero_bit +EXPORT_SYMBOL vmlinux 0x47a9acfa mark_buffer_dirty +EXPORT_SYMBOL vmlinux 0x47c711f2 mmc_can_secure_erase_trim +EXPORT_SYMBOL vmlinux 0x47cbb004 swiotlb_sync_sg_for_cpu +EXPORT_SYMBOL vmlinux 0x47d8f074 agp_free_memory +EXPORT_SYMBOL vmlinux 0x47e1d8b5 dmam_alloc_noncoherent +EXPORT_SYMBOL vmlinux 0x47f992cb dev_loopback_xmit +EXPORT_SYMBOL vmlinux 0x4803c7cc netdev_rx_csum_fault +EXPORT_SYMBOL vmlinux 0x4805f193 vfs_readf +EXPORT_SYMBOL vmlinux 0x480e2987 clkdev_add +EXPORT_SYMBOL vmlinux 0x48193639 acpi_lid_open +EXPORT_SYMBOL vmlinux 0x481a31a2 devfreq_monitor_start +EXPORT_SYMBOL vmlinux 0x481cb9ab acpi_enter_sleep_state_prep +EXPORT_SYMBOL vmlinux 0x482500ac ip4_datagram_connect +EXPORT_SYMBOL vmlinux 0x482ef72c loop_backing_file +EXPORT_SYMBOL vmlinux 0x48354ef7 nd_iostat_end +EXPORT_SYMBOL vmlinux 0x4858149e dma_sync_wait +EXPORT_SYMBOL vmlinux 0x4859b8bb rtc_year_days +EXPORT_SYMBOL vmlinux 0x4862faea inet_proto_csum_replace16 +EXPORT_SYMBOL vmlinux 0x488647b9 truncate_pagecache +EXPORT_SYMBOL vmlinux 0x489e599c tcp_connect +EXPORT_SYMBOL vmlinux 0x48a1fa40 agp_backend_release +EXPORT_SYMBOL vmlinux 0x48b268c2 vfs_writev +EXPORT_SYMBOL vmlinux 0x48b80eec posix_lock_file +EXPORT_SYMBOL vmlinux 0x48b99a13 vme_lm_free +EXPORT_SYMBOL vmlinux 0x48d2f0dd lookup_one_len +EXPORT_SYMBOL vmlinux 0x48fad873 scsi_get_device_flags_keyed +EXPORT_SYMBOL vmlinux 0x49045426 icmp_err_convert +EXPORT_SYMBOL vmlinux 0x490e87e2 netdev_upper_dev_unlink +EXPORT_SYMBOL vmlinux 0x49321b00 sock_common_recvmsg +EXPORT_SYMBOL vmlinux 0x495650a2 do_splice_direct +EXPORT_SYMBOL vmlinux 0x495c96f8 posix_acl_init +EXPORT_SYMBOL vmlinux 0x49603fb8 security_sb_copy_data +EXPORT_SYMBOL vmlinux 0x496adc74 phy_attach +EXPORT_SYMBOL vmlinux 0x497a31f2 unregister_key_type +EXPORT_SYMBOL vmlinux 0x4982f6d4 serio_interrupt +EXPORT_SYMBOL vmlinux 0x4991e051 sched_autogroup_create_attach +EXPORT_SYMBOL vmlinux 0x49b07aec tcp_select_initial_window +EXPORT_SYMBOL vmlinux 0x49b163b8 acpi_bus_scan +EXPORT_SYMBOL vmlinux 0x49d8d202 pci_back_from_sleep +EXPORT_SYMBOL vmlinux 0x49f28080 pci_find_bus +EXPORT_SYMBOL vmlinux 0x49f71442 dev_close_many +EXPORT_SYMBOL vmlinux 0x4a164ec2 call_usermodehelper_setup +EXPORT_SYMBOL vmlinux 0x4a3efe14 tty_kref_put +EXPORT_SYMBOL vmlinux 0x4a5419f3 agp_generic_alloc_pages +EXPORT_SYMBOL vmlinux 0x4a5e733b __skb_checksum +EXPORT_SYMBOL vmlinux 0x4a619f83 memcpy +EXPORT_SYMBOL vmlinux 0x4a61e533 vfs_create +EXPORT_SYMBOL vmlinux 0x4a669091 input_mt_assign_slots +EXPORT_SYMBOL vmlinux 0x4a75f3db inode_add_rsv_space +EXPORT_SYMBOL vmlinux 0x4a770f0d proc_set_size +EXPORT_SYMBOL vmlinux 0x4a90c7de vme_irq_generate +EXPORT_SYMBOL vmlinux 0x4aad9a51 pci_bus_add_devices +EXPORT_SYMBOL vmlinux 0x4ab67299 jbd2_log_wait_commit +EXPORT_SYMBOL vmlinux 0x4abbe3c2 vm_brk +EXPORT_SYMBOL vmlinux 0x4acd93d3 release_resource +EXPORT_SYMBOL vmlinux 0x4ade047d gnet_stats_start_copy_compat +EXPORT_SYMBOL vmlinux 0x4afdfe55 pci_select_bars +EXPORT_SYMBOL vmlinux 0x4afe9a77 scsi_partsize +EXPORT_SYMBOL vmlinux 0x4b062afa bio_endio +EXPORT_SYMBOL vmlinux 0x4b085dbf agp3_generic_configure +EXPORT_SYMBOL vmlinux 0x4b0b3fd0 cdev_add +EXPORT_SYMBOL vmlinux 0x4b1d4124 sg_alloc_table_from_pages +EXPORT_SYMBOL vmlinux 0x4b1ec3e2 kstrtoul_from_user +EXPORT_SYMBOL vmlinux 0x4b229d8b __tcf_em_tree_match +EXPORT_SYMBOL vmlinux 0x4b34fbf5 block_all_signals +EXPORT_SYMBOL vmlinux 0x4b382d99 sk_stream_write_space +EXPORT_SYMBOL vmlinux 0x4b5fd49e dm_kcopyd_do_callback +EXPORT_SYMBOL vmlinux 0x4b60ae61 dma_release_declared_memory +EXPORT_SYMBOL vmlinux 0x4b667176 lg_local_lock_cpu +EXPORT_SYMBOL vmlinux 0x4b726c05 sget +EXPORT_SYMBOL vmlinux 0x4b80b00d security_path_rename +EXPORT_SYMBOL vmlinux 0x4b87849d __sk_backlog_rcv +EXPORT_SYMBOL vmlinux 0x4b8b5a52 xfrm_policy_insert +EXPORT_SYMBOL vmlinux 0x4b96e48b page_follow_link_light +EXPORT_SYMBOL vmlinux 0x4b9dfb04 _raw_spin_trylock_bh +EXPORT_SYMBOL vmlinux 0x4baf35a7 vme_master_get +EXPORT_SYMBOL vmlinux 0x4bb0778e vm_stat +EXPORT_SYMBOL vmlinux 0x4bb1ba2b account_page_dirtied +EXPORT_SYMBOL vmlinux 0x4bb29ca2 bio_get_nr_vecs +EXPORT_SYMBOL vmlinux 0x4bba21a6 crypto_sha256_update +EXPORT_SYMBOL vmlinux 0x4bcf03a4 radix_tree_tag_clear +EXPORT_SYMBOL vmlinux 0x4bd42845 devm_backlight_device_unregister +EXPORT_SYMBOL vmlinux 0x4be85a03 memweight +EXPORT_SYMBOL vmlinux 0x4bf1d348 write_dirty_buffer +EXPORT_SYMBOL vmlinux 0x4bf3d2d7 i2c_smbus_write_i2c_block_data +EXPORT_SYMBOL vmlinux 0x4bf7ced6 tcp_gro_complete +EXPORT_SYMBOL vmlinux 0x4c0fb014 bioset_integrity_free +EXPORT_SYMBOL vmlinux 0x4c287932 pci_iounmap +EXPORT_SYMBOL vmlinux 0x4c29dcbf cancel_delayed_work_sync +EXPORT_SYMBOL vmlinux 0x4c2ae700 strnstr +EXPORT_SYMBOL vmlinux 0x4c2fdd72 contig_page_data +EXPORT_SYMBOL vmlinux 0x4c346a53 kvasprintf +EXPORT_SYMBOL vmlinux 0x4c38e92b tcf_hash_cleanup +EXPORT_SYMBOL vmlinux 0x4c3d114b eth_commit_mac_addr_change +EXPORT_SYMBOL vmlinux 0x4c4364b9 sync_inode_metadata +EXPORT_SYMBOL vmlinux 0x4c55a671 sock_no_shutdown +EXPORT_SYMBOL vmlinux 0x4c660760 xfrm6_protocol_register +EXPORT_SYMBOL vmlinux 0x4c878322 iosf_mbi_modify +EXPORT_SYMBOL vmlinux 0x4c87fbe4 inet6_unregister_icmp_sender +EXPORT_SYMBOL vmlinux 0x4c881457 kernel_accept +EXPORT_SYMBOL vmlinux 0x4c89aebb __mmc_claim_host +EXPORT_SYMBOL vmlinux 0x4c91d4ef pcie_capability_write_dword +EXPORT_SYMBOL vmlinux 0x4ca89d7a i2c_smbus_read_i2c_block_data +EXPORT_SYMBOL vmlinux 0x4cb3d5fe serio_close +EXPORT_SYMBOL vmlinux 0x4cdb3178 ns_to_timeval +EXPORT_SYMBOL vmlinux 0x4cf42f64 dquot_file_open +EXPORT_SYMBOL vmlinux 0x4d10a415 blkdev_reread_part +EXPORT_SYMBOL vmlinux 0x4d294bb4 bit_wait_io +EXPORT_SYMBOL vmlinux 0x4d2fe868 posix_acl_chmod +EXPORT_SYMBOL vmlinux 0x4d3c153f sigprocmask +EXPORT_SYMBOL vmlinux 0x4d45d89e udp_memory_allocated +EXPORT_SYMBOL vmlinux 0x4d6d6d30 phy_ethtool_sset +EXPORT_SYMBOL vmlinux 0x4d7cf1ec skb_vlan_push +EXPORT_SYMBOL vmlinux 0x4d974b9c register_sysrq_key +EXPORT_SYMBOL vmlinux 0x4d9b652b rb_erase +EXPORT_SYMBOL vmlinux 0x4dae7978 fsnotify_alloc_group +EXPORT_SYMBOL vmlinux 0x4de34a07 cpu_rmap_put +EXPORT_SYMBOL vmlinux 0x4df119fa __bitmap_parse +EXPORT_SYMBOL vmlinux 0x4e058061 swiotlb_sync_sg_for_device +EXPORT_SYMBOL vmlinux 0x4e3567f7 match_int +EXPORT_SYMBOL vmlinux 0x4e68e9be rb_next_postorder +EXPORT_SYMBOL vmlinux 0x4e6e8ea7 fg_console +EXPORT_SYMBOL vmlinux 0x4ea25709 dql_reset +EXPORT_SYMBOL vmlinux 0x4eb3c0f7 filemap_fdatawrite_range +EXPORT_SYMBOL vmlinux 0x4eb68f5e swiotlb_map_sg +EXPORT_SYMBOL vmlinux 0x4ec10bac input_register_handler +EXPORT_SYMBOL vmlinux 0x4f08b5d8 starget_for_each_device +EXPORT_SYMBOL vmlinux 0x4f1cd128 security_tun_dev_create +EXPORT_SYMBOL vmlinux 0x4f2250ba rtc_tm_to_time64 +EXPORT_SYMBOL vmlinux 0x4f2aebd5 i8042_check_port_owner +EXPORT_SYMBOL vmlinux 0x4f391d0e nla_parse +EXPORT_SYMBOL vmlinux 0x4f476e96 init_cdrom_command +EXPORT_SYMBOL vmlinux 0x4f4829a3 xfrm6_find_1stfragopt +EXPORT_SYMBOL vmlinux 0x4f6285fd get_phy_device +EXPORT_SYMBOL vmlinux 0x4f68e5c9 do_gettimeofday +EXPORT_SYMBOL vmlinux 0x4f6b400b _copy_from_user +EXPORT_SYMBOL vmlinux 0x4f783f30 acpi_read +EXPORT_SYMBOL vmlinux 0x4f8b5ddb _copy_to_user +EXPORT_SYMBOL vmlinux 0x4fd3fdfd __netlink_kernel_create +EXPORT_SYMBOL vmlinux 0x4fd966d6 set_disk_ro +EXPORT_SYMBOL vmlinux 0x4fdee897 i8042_command +EXPORT_SYMBOL vmlinux 0x50097088 security_tun_dev_free_security +EXPORT_SYMBOL vmlinux 0x5017e3ef jbd2_journal_free_reserved +EXPORT_SYMBOL vmlinux 0x502107a6 filemap_write_and_wait +EXPORT_SYMBOL vmlinux 0x50304345 blk_stop_queue +EXPORT_SYMBOL vmlinux 0x503c1f77 find_get_pages_tag +EXPORT_SYMBOL vmlinux 0x50529870 acpi_get_gpe_status +EXPORT_SYMBOL vmlinux 0x5053f901 seq_release_private +EXPORT_SYMBOL vmlinux 0x5063df40 __posix_acl_create +EXPORT_SYMBOL vmlinux 0x50684ed0 udp_lib_setsockopt +EXPORT_SYMBOL vmlinux 0x507135f8 iter_file_splice_write +EXPORT_SYMBOL vmlinux 0x5072a72b pm860x_reg_read +EXPORT_SYMBOL vmlinux 0x5079d1d4 trace_print_hex_seq +EXPORT_SYMBOL vmlinux 0x50928131 end_buffer_async_write +EXPORT_SYMBOL vmlinux 0x50972e46 led_set_brightness +EXPORT_SYMBOL vmlinux 0x509b64ea acpi_has_method +EXPORT_SYMBOL vmlinux 0x50b16ef7 mb_cache_entry_find_first +EXPORT_SYMBOL vmlinux 0x50b605f9 kernel_listen +EXPORT_SYMBOL vmlinux 0x50b66bcb radix_tree_next_chunk +EXPORT_SYMBOL vmlinux 0x50b8f933 __skb_flow_dissect +EXPORT_SYMBOL vmlinux 0x50d68377 arch_phys_wc_del +EXPORT_SYMBOL vmlinux 0x50ded37c __posix_acl_chmod +EXPORT_SYMBOL vmlinux 0x50e6bc43 set_security_override_from_ctx +EXPORT_SYMBOL vmlinux 0x50edb37b find_inode_nowait +EXPORT_SYMBOL vmlinux 0x50eedeb8 printk +EXPORT_SYMBOL vmlinux 0x50f14577 uart_match_port +EXPORT_SYMBOL vmlinux 0x50f776f1 dev_emerg +EXPORT_SYMBOL vmlinux 0x50f9b8ab address_space_init_once +EXPORT_SYMBOL vmlinux 0x5118c382 secure_dccp_sequence_number +EXPORT_SYMBOL vmlinux 0x511c3ae4 dquot_alloc +EXPORT_SYMBOL vmlinux 0x512049a7 jbd2_journal_try_to_free_buffers +EXPORT_SYMBOL vmlinux 0x51719973 dq_data_lock +EXPORT_SYMBOL vmlinux 0x5177e028 netpoll_send_skb_on_dev +EXPORT_SYMBOL vmlinux 0x5186518f profile_pc +EXPORT_SYMBOL vmlinux 0x518e6968 tty_port_tty_get +EXPORT_SYMBOL vmlinux 0x51935f05 napi_disable +EXPORT_SYMBOL vmlinux 0x51a13380 from_kgid_munged +EXPORT_SYMBOL vmlinux 0x51a2c98c mb_cache_entry_find_next +EXPORT_SYMBOL vmlinux 0x51c8c46c __ip_select_ident +EXPORT_SYMBOL vmlinux 0x51d12d4e acpi_pci_disabled +EXPORT_SYMBOL vmlinux 0x51d2d0ae filemap_fdatawrite +EXPORT_SYMBOL vmlinux 0x51dac830 security_path_chown +EXPORT_SYMBOL vmlinux 0x51e6e0e8 ip_mc_join_group +EXPORT_SYMBOL vmlinux 0x51ef33b8 kstrndup +EXPORT_SYMBOL vmlinux 0x52026cdf security_sb_parse_opts_str +EXPORT_SYMBOL vmlinux 0x52095e19 acpi_get_data +EXPORT_SYMBOL vmlinux 0x520d8807 netif_set_xps_queue +EXPORT_SYMBOL vmlinux 0x52126700 mutex_unlock +EXPORT_SYMBOL vmlinux 0x52159bff xfrm_unregister_type +EXPORT_SYMBOL vmlinux 0x521b36b5 qdisc_put_rtab +EXPORT_SYMBOL vmlinux 0x52428cc8 parent_mem_cgroup +EXPORT_SYMBOL vmlinux 0x525d2307 reqsk_queue_hash_req +EXPORT_SYMBOL vmlinux 0x525e026f acpi_os_unmap_generic_address +EXPORT_SYMBOL vmlinux 0x52687d66 tcp_seq_open +EXPORT_SYMBOL vmlinux 0x526eae82 param_ops_ullong +EXPORT_SYMBOL vmlinux 0x528af66b sk_stream_wait_memory +EXPORT_SYMBOL vmlinux 0x528c709d simple_read_from_buffer +EXPORT_SYMBOL vmlinux 0x52965b82 rt6_lookup +EXPORT_SYMBOL vmlinux 0x52af562a __crc32c_le +EXPORT_SYMBOL vmlinux 0x52e43683 sock_no_poll +EXPORT_SYMBOL vmlinux 0x5300d698 skb_checksum +EXPORT_SYMBOL vmlinux 0x53019a7b devfreq_unregister_opp_notifier +EXPORT_SYMBOL vmlinux 0x530b1e4c rdmsr_on_cpus +EXPORT_SYMBOL vmlinux 0x530b1e98 pm_suspend +EXPORT_SYMBOL vmlinux 0x530d13bb pci_reenable_device +EXPORT_SYMBOL vmlinux 0x531b604e __virt_addr_valid +EXPORT_SYMBOL vmlinux 0x53326531 mempool_alloc_pages +EXPORT_SYMBOL vmlinux 0x5348595c inet_csk_accept +EXPORT_SYMBOL vmlinux 0x53569707 this_cpu_off +EXPORT_SYMBOL vmlinux 0x535b74a7 param_ops_byte +EXPORT_SYMBOL vmlinux 0x535c8308 vme_dma_pattern_attribute +EXPORT_SYMBOL vmlinux 0x536c6959 ip_mc_leave_group +EXPORT_SYMBOL vmlinux 0x537571d1 skb_copy_and_csum_dev +EXPORT_SYMBOL vmlinux 0x538bbf4d netdev_crit +EXPORT_SYMBOL vmlinux 0x539af73c __sg_alloc_table +EXPORT_SYMBOL vmlinux 0x53a9278c con_is_bound +EXPORT_SYMBOL vmlinux 0x53dd1c02 _raw_read_lock_irqsave +EXPORT_SYMBOL vmlinux 0x53e80fe4 sync_inode +EXPORT_SYMBOL vmlinux 0x53f798e9 bio_advance +EXPORT_SYMBOL vmlinux 0x5400d3a8 nvdimm_namespace_disk_name +EXPORT_SYMBOL vmlinux 0x5409775b free_irq_cpu_rmap +EXPORT_SYMBOL vmlinux 0x543b787a i2c_get_adapter +EXPORT_SYMBOL vmlinux 0x543ef284 seq_hlist_start +EXPORT_SYMBOL vmlinux 0x5446e053 __check_sticky +EXPORT_SYMBOL vmlinux 0x544b0c11 acpi_lid_notifier_register +EXPORT_SYMBOL vmlinux 0x5464d3f6 acpi_remove_sci_handler +EXPORT_SYMBOL vmlinux 0x546a4462 inet_confirm_addr +EXPORT_SYMBOL vmlinux 0x5470b15f agp_generic_insert_memory +EXPORT_SYMBOL vmlinux 0x548660c3 pid_task +EXPORT_SYMBOL vmlinux 0x549beb28 iterate_fd +EXPORT_SYMBOL vmlinux 0x54a9db5f _kstrtoul +EXPORT_SYMBOL vmlinux 0x54badf5b dentry_unhash +EXPORT_SYMBOL vmlinux 0x54c256e0 vme_check_window +EXPORT_SYMBOL vmlinux 0x54da34ad pcie_port_service_register +EXPORT_SYMBOL vmlinux 0x54dab7cb tcp_proto_cgroup +EXPORT_SYMBOL vmlinux 0x54e6fcdd net_enable_timestamp +EXPORT_SYMBOL vmlinux 0x54f24d1a fence_default_wait +EXPORT_SYMBOL vmlinux 0x54f84623 skb_insert +EXPORT_SYMBOL vmlinux 0x5511d826 arch_debugfs_dir +EXPORT_SYMBOL vmlinux 0x55145460 register_quota_format +EXPORT_SYMBOL vmlinux 0x551a2dfd page_waitqueue +EXPORT_SYMBOL vmlinux 0x551bd071 __rb_erase_color +EXPORT_SYMBOL vmlinux 0x551bedc7 fence_enable_sw_signaling +EXPORT_SYMBOL vmlinux 0x5522f4af scsi_block_when_processing_errors +EXPORT_SYMBOL vmlinux 0x552eb092 free_xenballooned_pages +EXPORT_SYMBOL vmlinux 0x5541ea93 on_each_cpu +EXPORT_SYMBOL vmlinux 0x554e7367 sk_page_frag_refill +EXPORT_SYMBOL vmlinux 0x555f2889 xfrm6_rcv_cb +EXPORT_SYMBOL vmlinux 0x5567c227 kernel_cpustat +EXPORT_SYMBOL vmlinux 0x55acee3e mmc_read_bkops_status +EXPORT_SYMBOL vmlinux 0x55d481c9 hdmi_infoframe_unpack +EXPORT_SYMBOL vmlinux 0x55f1cd36 vlan_dev_real_dev +EXPORT_SYMBOL vmlinux 0x56355461 tty_port_block_til_ready +EXPORT_SYMBOL vmlinux 0x5635a60a vmalloc_user +EXPORT_SYMBOL vmlinux 0x563952a3 kblockd_schedule_work +EXPORT_SYMBOL vmlinux 0x56405134 pci_set_power_state +EXPORT_SYMBOL vmlinux 0x5641419b wait_for_completion_killable_timeout +EXPORT_SYMBOL vmlinux 0x565202f8 kmalloc_dma_caches +EXPORT_SYMBOL vmlinux 0x566b86eb PDE_DATA +EXPORT_SYMBOL vmlinux 0x5676a3e5 intel_scu_ipc_ioread8 +EXPORT_SYMBOL vmlinux 0x56839bdf from_kgid +EXPORT_SYMBOL vmlinux 0x568779be free_buffer_head +EXPORT_SYMBOL vmlinux 0x56ae33ab d_set_d_op +EXPORT_SYMBOL vmlinux 0x56c8799d scsi_kunmap_atomic_sg +EXPORT_SYMBOL vmlinux 0x56c97a82 bio_phys_segments +EXPORT_SYMBOL vmlinux 0x5705088a __vmalloc +EXPORT_SYMBOL vmlinux 0x570da32e wireless_send_event +EXPORT_SYMBOL vmlinux 0x57181d7e vmalloc_to_page +EXPORT_SYMBOL vmlinux 0x57284bd9 pci_pme_capable +EXPORT_SYMBOL vmlinux 0x5729eda1 security_inode_getsecctx +EXPORT_SYMBOL vmlinux 0x572e85d4 blk_lookup_devt +EXPORT_SYMBOL vmlinux 0x574673d2 kmem_cache_shrink +EXPORT_SYMBOL vmlinux 0x5748c130 ps2_drain +EXPORT_SYMBOL vmlinux 0x574c2e74 bitmap_release_region +EXPORT_SYMBOL vmlinux 0x57534a82 pcim_iomap_table +EXPORT_SYMBOL vmlinux 0x57575f08 dmaengine_put +EXPORT_SYMBOL vmlinux 0x57587f9e tcf_exts_validate +EXPORT_SYMBOL vmlinux 0x575af70c on_each_cpu_mask +EXPORT_SYMBOL vmlinux 0x5766b8b6 __inode_permission +EXPORT_SYMBOL vmlinux 0x57674fd7 __sw_hweight16 +EXPORT_SYMBOL vmlinux 0x579fbcd2 cpu_possible_mask +EXPORT_SYMBOL vmlinux 0x57ba72ab fence_wait_timeout +EXPORT_SYMBOL vmlinux 0x57d03b90 set_groups +EXPORT_SYMBOL vmlinux 0x581f98da zlib_inflate +EXPORT_SYMBOL vmlinux 0x583523cc tcp_v4_destroy_sock +EXPORT_SYMBOL vmlinux 0x5838f6c9 rtc_valid_tm +EXPORT_SYMBOL vmlinux 0x584497c8 inc_nlink +EXPORT_SYMBOL vmlinux 0x584738f9 rdmsr_safe_on_cpu +EXPORT_SYMBOL vmlinux 0x5857b225 ioread16_rep +EXPORT_SYMBOL vmlinux 0x586103be acpi_setup_gpe_for_wake +EXPORT_SYMBOL vmlinux 0x58693f10 seq_open +EXPORT_SYMBOL vmlinux 0x587616f1 vfs_fstatat +EXPORT_SYMBOL vmlinux 0x5882df3a request_key_async +EXPORT_SYMBOL vmlinux 0x588540ef should_remove_suid +EXPORT_SYMBOL vmlinux 0x58871dbd dev_addr_add +EXPORT_SYMBOL vmlinux 0x58aca9ae tcp_v4_syn_recv_sock +EXPORT_SYMBOL vmlinux 0x58b73bc7 match_wildcard +EXPORT_SYMBOL vmlinux 0x58b9273d __test_set_page_writeback +EXPORT_SYMBOL vmlinux 0x58bb1f08 sk_dst_check +EXPORT_SYMBOL vmlinux 0x58bd4ea1 tty_devnum +EXPORT_SYMBOL vmlinux 0x58eb8d67 generic_make_request +EXPORT_SYMBOL vmlinux 0x58fef6f8 ist_info +EXPORT_SYMBOL vmlinux 0x5916fbeb param_get_int +EXPORT_SYMBOL vmlinux 0x5918f08c x86_hyper_ms_hyperv +EXPORT_SYMBOL vmlinux 0x5930051d dcache_dir_open +EXPORT_SYMBOL vmlinux 0x59390195 sk_free +EXPORT_SYMBOL vmlinux 0x59428ccc nosteal_pipe_buf_ops +EXPORT_SYMBOL vmlinux 0x5944d015 __cachemode2pte_tbl +EXPORT_SYMBOL vmlinux 0x59460b9f dm_put_table_device +EXPORT_SYMBOL vmlinux 0x594bf15b ioport_map +EXPORT_SYMBOL vmlinux 0x594f1f69 dump_skip +EXPORT_SYMBOL vmlinux 0x59668cc1 install_exec_creds +EXPORT_SYMBOL vmlinux 0x59683734 agp_allocate_memory +EXPORT_SYMBOL vmlinux 0x598e4904 mod_timer_pending +EXPORT_SYMBOL vmlinux 0x59958d78 scsi_host_alloc +EXPORT_SYMBOL vmlinux 0x59aa14cf fence_release +EXPORT_SYMBOL vmlinux 0x59bc9609 acpi_write_bit_register +EXPORT_SYMBOL vmlinux 0x59be95b2 tcf_exts_dump +EXPORT_SYMBOL vmlinux 0x59ccd60f netif_rx +EXPORT_SYMBOL vmlinux 0x59d0767c xfrm_state_lookup_byaddr +EXPORT_SYMBOL vmlinux 0x5a004d4d dev_activate +EXPORT_SYMBOL vmlinux 0x5a0b73d0 zlib_deflateInit2 +EXPORT_SYMBOL vmlinux 0x5a17a0fc skb_mac_gso_segment +EXPORT_SYMBOL vmlinux 0x5a2bacdf cpu_info +EXPORT_SYMBOL vmlinux 0x5a35cc56 i2c_release_client +EXPORT_SYMBOL vmlinux 0x5a3bfaa0 security_inode_listsecurity +EXPORT_SYMBOL vmlinux 0x5a3fad19 dev_uc_flush +EXPORT_SYMBOL vmlinux 0x5a4896a8 __put_user_2 +EXPORT_SYMBOL vmlinux 0x5a5933b8 do_truncate +EXPORT_SYMBOL vmlinux 0x5a6bc00c __netif_schedule +EXPORT_SYMBOL vmlinux 0x5a6ebb8a dev_get_by_index +EXPORT_SYMBOL vmlinux 0x5a82c44a complete_and_exit +EXPORT_SYMBOL vmlinux 0x5a8b4d0b tcp_release_cb +EXPORT_SYMBOL vmlinux 0x5ac376a5 acpi_install_fixed_event_handler +EXPORT_SYMBOL vmlinux 0x5ad90091 eth_prepare_mac_addr_change +EXPORT_SYMBOL vmlinux 0x5ada1743 blk_rq_map_user_iov +EXPORT_SYMBOL vmlinux 0x5ae46f24 pnp_unregister_driver +EXPORT_SYMBOL vmlinux 0x5aef4baa pm860x_page_bulk_read +EXPORT_SYMBOL vmlinux 0x5aff01c8 bioset_create +EXPORT_SYMBOL vmlinux 0x5aff4177 vme_lm_get +EXPORT_SYMBOL vmlinux 0x5b06e2fd blk_rq_unmap_user +EXPORT_SYMBOL vmlinux 0x5b0c0270 tcf_hash_insert +EXPORT_SYMBOL vmlinux 0x5b19634d div_s64_rem +EXPORT_SYMBOL vmlinux 0x5b2c4d6f __serio_register_port +EXPORT_SYMBOL vmlinux 0x5b67deeb add_to_page_cache_locked +EXPORT_SYMBOL vmlinux 0x5b7047e1 nobh_write_begin +EXPORT_SYMBOL vmlinux 0x5b9b5933 neigh_event_ns +EXPORT_SYMBOL vmlinux 0x5bc046f1 blk_put_queue +EXPORT_SYMBOL vmlinux 0x5bc8d583 copy_from_user_overflow +EXPORT_SYMBOL vmlinux 0x5bdc1241 security_inode_setsecctx +EXPORT_SYMBOL vmlinux 0x5bde552f udp_sendmsg +EXPORT_SYMBOL vmlinux 0x5befaa30 sync_dirty_buffer +EXPORT_SYMBOL vmlinux 0x5bf2aeba pci_request_selected_regions +EXPORT_SYMBOL vmlinux 0x5c0442fd acpi_gbl_FADT +EXPORT_SYMBOL vmlinux 0x5c05c5ab kernel_setsockopt +EXPORT_SYMBOL vmlinux 0x5c09eb32 bdi_register_dev +EXPORT_SYMBOL vmlinux 0x5c497030 crypto_sha1_finup +EXPORT_SYMBOL vmlinux 0x5c545234 ucs2_strncmp +EXPORT_SYMBOL vmlinux 0x5c5fbe4e mipi_dsi_host_register +EXPORT_SYMBOL vmlinux 0x5c784e01 scsi_print_sense +EXPORT_SYMBOL vmlinux 0x5c867045 unregister_nls +EXPORT_SYMBOL vmlinux 0x5c8a5285 dev_mc_del_global +EXPORT_SYMBOL vmlinux 0x5c9b026a inode_sb_list_lock +EXPORT_SYMBOL vmlinux 0x5cb2e6a2 xfrm_input +EXPORT_SYMBOL vmlinux 0x5cb5d7b6 genphy_restart_aneg +EXPORT_SYMBOL vmlinux 0x5cb91042 blk_mq_abort_requeue_list +EXPORT_SYMBOL vmlinux 0x5cd873ac mmc_detect_card_removed +EXPORT_SYMBOL vmlinux 0x5ce847e3 xfrm4_protocol_deregister +EXPORT_SYMBOL vmlinux 0x5cf53ce2 input_free_minor +EXPORT_SYMBOL vmlinux 0x5d184b5d keyring_clear +EXPORT_SYMBOL vmlinux 0x5d2546f3 dquot_operations +EXPORT_SYMBOL vmlinux 0x5d45c807 iget5_locked +EXPORT_SYMBOL vmlinux 0x5d550c4d scsi_sd_probe_domain +EXPORT_SYMBOL vmlinux 0x5d612b6f pagecache_write_end +EXPORT_SYMBOL vmlinux 0x5d74dbcf pnp_range_reserved +EXPORT_SYMBOL vmlinux 0x5d8475e0 completion_done +EXPORT_SYMBOL vmlinux 0x5d9de816 tty_lock +EXPORT_SYMBOL vmlinux 0x5dcc59f5 find_get_pages_contig +EXPORT_SYMBOL vmlinux 0x5dce0602 pci_lost_interrupt +EXPORT_SYMBOL vmlinux 0x5e1df2e5 scsi_ioctl +EXPORT_SYMBOL vmlinux 0x5e249950 vlan_vid_del +EXPORT_SYMBOL vmlinux 0x5e4f3e83 pci_write_vpd +EXPORT_SYMBOL vmlinux 0x5e52ae7c mipi_dsi_dcs_write_buffer +EXPORT_SYMBOL vmlinux 0x5e654e61 ethtool_op_get_link +EXPORT_SYMBOL vmlinux 0x5e71b425 input_close_device +EXPORT_SYMBOL vmlinux 0x5e84d281 nd_region_acquire_lane +EXPORT_SYMBOL vmlinux 0x5e866d85 prandom_bytes +EXPORT_SYMBOL vmlinux 0x5e8760fb qdisc_watchdog_schedule_ns +EXPORT_SYMBOL vmlinux 0x5e95b1cd current_umask +EXPORT_SYMBOL vmlinux 0x5ea727c0 truncate_setsize +EXPORT_SYMBOL vmlinux 0x5eb0d12c dquot_release +EXPORT_SYMBOL vmlinux 0x5eb24829 dm_shift_arg +EXPORT_SYMBOL vmlinux 0x5ed040b0 pm_set_vt_switch +EXPORT_SYMBOL vmlinux 0x5ee0d077 default_file_splice_read +EXPORT_SYMBOL vmlinux 0x5ef6828d ilookup +EXPORT_SYMBOL vmlinux 0x5f005368 kstrtou8 +EXPORT_SYMBOL vmlinux 0x5f098b2a in6addr_interfacelocal_allrouters +EXPORT_SYMBOL vmlinux 0x5f16efee security_mmap_file +EXPORT_SYMBOL vmlinux 0x5f1a4ccf intel_scu_ipc_update_register +EXPORT_SYMBOL vmlinux 0x5f1ce806 i2c_smbus_write_block_data +EXPORT_SYMBOL vmlinux 0x5f1fefa3 posix_acl_from_xattr +EXPORT_SYMBOL vmlinux 0x5f25b19c blk_rq_map_integrity_sg +EXPORT_SYMBOL vmlinux 0x5f342d45 sock_i_ino +EXPORT_SYMBOL vmlinux 0x5f45c0bb d_make_root +EXPORT_SYMBOL vmlinux 0x5f463b76 mipi_dsi_dcs_set_column_address +EXPORT_SYMBOL vmlinux 0x5f4b9d83 mipi_dsi_generic_write +EXPORT_SYMBOL vmlinux 0x5f4c4311 ip_route_input_noref +EXPORT_SYMBOL vmlinux 0x5f59dc4f default_qdisc_ops +EXPORT_SYMBOL vmlinux 0x5f93f6a4 follow_down_one +EXPORT_SYMBOL vmlinux 0x5fb2e8ef idr_init +EXPORT_SYMBOL vmlinux 0x5fb9d290 __blk_end_request +EXPORT_SYMBOL vmlinux 0x5fcda356 twl6040_reg_write +EXPORT_SYMBOL vmlinux 0x5fd268cb radix_tree_gang_lookup +EXPORT_SYMBOL vmlinux 0x5fd2c1d6 param_set_ulong +EXPORT_SYMBOL vmlinux 0x5fd4256f __skb_checksum_complete +EXPORT_SYMBOL vmlinux 0x5fda0227 vfs_stat +EXPORT_SYMBOL vmlinux 0x5fe5589f register_shrinker +EXPORT_SYMBOL vmlinux 0x5ff945e0 fixed_size_llseek +EXPORT_SYMBOL vmlinux 0x6005aa0b __napi_complete +EXPORT_SYMBOL vmlinux 0x600683d3 do_unblank_screen +EXPORT_SYMBOL vmlinux 0x6013fc6a tty_unthrottle +EXPORT_SYMBOL vmlinux 0x60148f8f poll_freewait +EXPORT_SYMBOL vmlinux 0x6018e942 fget +EXPORT_SYMBOL vmlinux 0x601d1439 netdev_boot_setup_check +EXPORT_SYMBOL vmlinux 0x601f665f dm_io_client_create +EXPORT_SYMBOL vmlinux 0x6020d610 __splice_from_pipe +EXPORT_SYMBOL vmlinux 0x602d1736 cros_ec_prepare_tx +EXPORT_SYMBOL vmlinux 0x602ed00d acpi_current_gpe_count +EXPORT_SYMBOL vmlinux 0x60352082 register_inet6addr_notifier +EXPORT_SYMBOL vmlinux 0x6040f53c vme_dma_list_add +EXPORT_SYMBOL vmlinux 0x604316d8 acpi_finish_gpe +EXPORT_SYMBOL vmlinux 0x60450065 jbd2_journal_init_inode +EXPORT_SYMBOL vmlinux 0x60649ca6 find_get_entry +EXPORT_SYMBOL vmlinux 0x60686e5c iw_handler_get_thrspy +EXPORT_SYMBOL vmlinux 0x606d0b09 secure_tcpv6_sequence_number +EXPORT_SYMBOL vmlinux 0x607aabe5 dev_mc_init +EXPORT_SYMBOL vmlinux 0x6091644e flow_keys_dissector +EXPORT_SYMBOL vmlinux 0x609f1c7e synchronize_net +EXPORT_SYMBOL vmlinux 0x60a32ea9 pm_power_off +EXPORT_SYMBOL vmlinux 0x60b86f61 sg_pcopy_to_buffer +EXPORT_SYMBOL vmlinux 0x60bf126f frontswap_register_ops +EXPORT_SYMBOL vmlinux 0x60bf97fa rc5t583_ext_power_req_config +EXPORT_SYMBOL vmlinux 0x60bfdb4d ps2_cmd_aborted +EXPORT_SYMBOL vmlinux 0x60c405ac arp_create +EXPORT_SYMBOL vmlinux 0x60cf85d2 _raw_read_lock_bh +EXPORT_SYMBOL vmlinux 0x60db71c5 sock_queue_err_skb +EXPORT_SYMBOL vmlinux 0x60dc3fa4 handle_edge_irq +EXPORT_SYMBOL vmlinux 0x60df1e3b posix_acl_equiv_mode +EXPORT_SYMBOL vmlinux 0x610aaa40 mempool_destroy +EXPORT_SYMBOL vmlinux 0x6113eecc scsi_is_sdev_device +EXPORT_SYMBOL vmlinux 0x6128b5fc __printk_ratelimit +EXPORT_SYMBOL vmlinux 0x612a1b6e ip_queue_xmit +EXPORT_SYMBOL vmlinux 0x6136d0a5 proto_unregister +EXPORT_SYMBOL vmlinux 0x6142a7fe do_splice_from +EXPORT_SYMBOL vmlinux 0x61553dcb ndisc_mc_map +EXPORT_SYMBOL vmlinux 0x615c9ed3 blk_queue_find_tag +EXPORT_SYMBOL vmlinux 0x616e47b2 posix_test_lock +EXPORT_SYMBOL vmlinux 0x617f94a3 blk_get_queue +EXPORT_SYMBOL vmlinux 0x61b3560c cmdline_parts_set +EXPORT_SYMBOL vmlinux 0x61b7b126 simple_strtoull +EXPORT_SYMBOL vmlinux 0x61bf9a25 mmc_gpio_get_cd +EXPORT_SYMBOL vmlinux 0x61fc0e86 del_gendisk +EXPORT_SYMBOL vmlinux 0x62049256 acpi_disable +EXPORT_SYMBOL vmlinux 0x6214aef2 cpufreq_unregister_notifier +EXPORT_SYMBOL vmlinux 0x6220b4a2 crc32_le +EXPORT_SYMBOL vmlinux 0x6221d4b9 generic_file_mmap +EXPORT_SYMBOL vmlinux 0x6225637e md5_transform +EXPORT_SYMBOL vmlinux 0x6226b9fa machine_to_phys_mapping +EXPORT_SYMBOL vmlinux 0x6228c21f smp_call_function_single +EXPORT_SYMBOL vmlinux 0x622ac471 kernel_getpeername +EXPORT_SYMBOL vmlinux 0x6237f6b5 acpi_enable_event +EXPORT_SYMBOL vmlinux 0x6241a2ab __copy_from_user_ll_nocache +EXPORT_SYMBOL vmlinux 0x626559e8 __register_nls +EXPORT_SYMBOL vmlinux 0x6266187a param_set_ushort +EXPORT_SYMBOL vmlinux 0x62662cf7 blk_integrity_merge_rq +EXPORT_SYMBOL vmlinux 0x62737e1d sock_unregister +EXPORT_SYMBOL vmlinux 0x62827bec security_secctx_to_secid +EXPORT_SYMBOL vmlinux 0x62849ac7 dev_valid_name +EXPORT_SYMBOL vmlinux 0x62a56d2a page_address +EXPORT_SYMBOL vmlinux 0x62bb6f91 pci_dev_driver +EXPORT_SYMBOL vmlinux 0x62d4e000 poll_initwait +EXPORT_SYMBOL vmlinux 0x62e27a64 follow_up +EXPORT_SYMBOL vmlinux 0x630413cf unload_nls +EXPORT_SYMBOL vmlinux 0x63152162 request_firmware_nowait +EXPORT_SYMBOL vmlinux 0x63187451 pcie_aspm_support_enabled +EXPORT_SYMBOL vmlinux 0x6318a68d dev_uc_add +EXPORT_SYMBOL vmlinux 0x631aad7b tty_port_free_xmit_buf +EXPORT_SYMBOL vmlinux 0x631cfd88 kernel_param_lock +EXPORT_SYMBOL vmlinux 0x63225454 add_disk +EXPORT_SYMBOL vmlinux 0x6328d987 jbd2_journal_start_commit +EXPORT_SYMBOL vmlinux 0x632f5d73 iw_handler_set_spy +EXPORT_SYMBOL vmlinux 0x63309208 neigh_parms_release +EXPORT_SYMBOL vmlinux 0x63485fbb netdev_has_upper_dev +EXPORT_SYMBOL vmlinux 0x634dc02c pci_enable_msi_range +EXPORT_SYMBOL vmlinux 0x6356761b __netlink_ns_capable +EXPORT_SYMBOL vmlinux 0x636a5691 acpi_register_ioapic +EXPORT_SYMBOL vmlinux 0x636e7432 netif_device_attach +EXPORT_SYMBOL vmlinux 0x6371368e skb_checksum_trimmed +EXPORT_SYMBOL vmlinux 0x63804d45 tcf_em_tree_dump +EXPORT_SYMBOL vmlinux 0x6388591c down_timeout +EXPORT_SYMBOL vmlinux 0x63a01291 acpi_leave_sleep_state_prep +EXPORT_SYMBOL vmlinux 0x63a7c28c bitmap_find_free_region +EXPORT_SYMBOL vmlinux 0x63ae0138 intel_gtt_get +EXPORT_SYMBOL vmlinux 0x63ba37f5 lock_sock_nested +EXPORT_SYMBOL vmlinux 0x63c27789 rawv6_mh_filter_unregister +EXPORT_SYMBOL vmlinux 0x63c4d61f __bitmap_weight +EXPORT_SYMBOL vmlinux 0x63e97084 dev_change_carrier +EXPORT_SYMBOL vmlinux 0x63eb9355 panic_blink +EXPORT_SYMBOL vmlinux 0x63ef450d blk_integrity_unregister +EXPORT_SYMBOL vmlinux 0x63f2cc09 pagevec_lookup_tag +EXPORT_SYMBOL vmlinux 0x63f36e13 agp_generic_free_gatt_table +EXPORT_SYMBOL vmlinux 0x63fc232f strlen_user +EXPORT_SYMBOL vmlinux 0x64000efe netdev_upper_dev_link +EXPORT_SYMBOL vmlinux 0x6403e338 tcp_memory_pressure +EXPORT_SYMBOL vmlinux 0x6405114a pm860x_set_bits +EXPORT_SYMBOL vmlinux 0x640c727c cdev_alloc +EXPORT_SYMBOL vmlinux 0x64127b67 bitmap_find_next_zero_area_off +EXPORT_SYMBOL vmlinux 0x642d9e60 down_write_trylock +EXPORT_SYMBOL vmlinux 0x64384f8f dma_supported +EXPORT_SYMBOL vmlinux 0x6449fd41 acpi_install_address_space_handler +EXPORT_SYMBOL vmlinux 0x64511f99 blk_pre_runtime_resume +EXPORT_SYMBOL vmlinux 0x645930fb _raw_write_lock_bh +EXPORT_SYMBOL vmlinux 0x6482ec57 tcp_v4_connect +EXPORT_SYMBOL vmlinux 0x64999478 congestion_wait +EXPORT_SYMBOL vmlinux 0x64a4b84d cpu_rmap_update +EXPORT_SYMBOL vmlinux 0x64a926af simple_write_begin +EXPORT_SYMBOL vmlinux 0x64ab0e98 wait_for_completion +EXPORT_SYMBOL vmlinux 0x64b5d2ac inet_stream_ops +EXPORT_SYMBOL vmlinux 0x64b5f89e inet_getname +EXPORT_SYMBOL vmlinux 0x64bcdbaf __dev_getfirstbyhwtype +EXPORT_SYMBOL vmlinux 0x64c073d7 seq_dentry +EXPORT_SYMBOL vmlinux 0x64d468ca __dquot_free_space +EXPORT_SYMBOL vmlinux 0x64eae7ad set_memory_array_wb +EXPORT_SYMBOL vmlinux 0x64f98662 locks_remove_posix +EXPORT_SYMBOL vmlinux 0x64fa7693 __acpi_handle_debug +EXPORT_SYMBOL vmlinux 0x64fb9257 abx500_startup_irq_enabled +EXPORT_SYMBOL vmlinux 0x6513a3fa fb_get_color_depth +EXPORT_SYMBOL vmlinux 0x651a4139 test_taint +EXPORT_SYMBOL vmlinux 0x65408378 zlib_inflate_blob +EXPORT_SYMBOL vmlinux 0x6544602b block_is_partially_uptodate +EXPORT_SYMBOL vmlinux 0x655f1ab0 set_memory_array_wc +EXPORT_SYMBOL vmlinux 0x6565d33f scsi_kmap_atomic_sg +EXPORT_SYMBOL vmlinux 0x6566f059 xfrm6_rcv +EXPORT_SYMBOL vmlinux 0x65733c90 ip_route_me_harder +EXPORT_SYMBOL vmlinux 0x65784705 dev_get_by_index_rcu +EXPORT_SYMBOL vmlinux 0x65893c64 read_code +EXPORT_SYMBOL vmlinux 0x6594d8ac inet_sendpage +EXPORT_SYMBOL vmlinux 0x65a295bb atomic64_xchg_cx8 +EXPORT_SYMBOL vmlinux 0x65aacf44 devm_devfreq_add_device +EXPORT_SYMBOL vmlinux 0x65c6bacf agp_generic_alloc_user +EXPORT_SYMBOL vmlinux 0x65d9e877 cpufreq_register_notifier +EXPORT_SYMBOL vmlinux 0x65dccf13 xz_dec_end +EXPORT_SYMBOL vmlinux 0x65f3897d get_empty_filp +EXPORT_SYMBOL vmlinux 0x65f3ad9a fb_videomode_to_var +EXPORT_SYMBOL vmlinux 0x65fb860d max8998_read_reg +EXPORT_SYMBOL vmlinux 0x660d8d00 iov_iter_advance +EXPORT_SYMBOL vmlinux 0x66247d19 rtmsg_ifinfo +EXPORT_SYMBOL vmlinux 0x66355efc vprintk +EXPORT_SYMBOL vmlinux 0x663f7cd0 acpi_install_table_handler +EXPORT_SYMBOL vmlinux 0x666b99cc skb_copy_datagram_from_iter +EXPORT_SYMBOL vmlinux 0x66730267 md_wait_for_blocked_rdev +EXPORT_SYMBOL vmlinux 0x667e4e80 proc_dointvec_ms_jiffies +EXPORT_SYMBOL vmlinux 0x669bf80b proc_dointvec_jiffies +EXPORT_SYMBOL vmlinux 0x66ac4c19 sk_stream_wait_close +EXPORT_SYMBOL vmlinux 0x66d804b1 percpu_counter_destroy +EXPORT_SYMBOL vmlinux 0x66ed3652 generic_perform_write +EXPORT_SYMBOL vmlinux 0x66ee8ffd mipi_dsi_dcs_enter_sleep_mode +EXPORT_SYMBOL vmlinux 0x66f53fc6 __vlan_find_dev_deep_rcu +EXPORT_SYMBOL vmlinux 0x670732c1 ps2_handle_response +EXPORT_SYMBOL vmlinux 0x6722f3bc _raw_write_lock +EXPORT_SYMBOL vmlinux 0x6729d3df __get_user_4 +EXPORT_SYMBOL vmlinux 0x673f815e agp_bridges +EXPORT_SYMBOL vmlinux 0x6741c3cd cdrom_release +EXPORT_SYMBOL vmlinux 0x6747604d dst_destroy +EXPORT_SYMBOL vmlinux 0x6757b924 pv_cpu_ops +EXPORT_SYMBOL vmlinux 0x67611020 nf_log_unregister +EXPORT_SYMBOL vmlinux 0x67718c8e jbd2_journal_begin_ordered_truncate +EXPORT_SYMBOL vmlinux 0x67733cf4 mb_cache_create +EXPORT_SYMBOL vmlinux 0x678e192c netpoll_setup +EXPORT_SYMBOL vmlinux 0x67a818c8 dcbnl_cee_notify +EXPORT_SYMBOL vmlinux 0x67b27ec1 tty_std_termios +EXPORT_SYMBOL vmlinux 0x67b78eb3 seq_hlist_next_rcu +EXPORT_SYMBOL vmlinux 0x67f98a1f single_release +EXPORT_SYMBOL vmlinux 0x6808b453 __unregister_cpu_notifier +EXPORT_SYMBOL vmlinux 0x680dd509 udp_poll +EXPORT_SYMBOL vmlinux 0x680ea302 setattr_copy +EXPORT_SYMBOL vmlinux 0x680ec266 _raw_spin_lock_irqsave +EXPORT_SYMBOL vmlinux 0x68432136 sock_no_getsockopt +EXPORT_SYMBOL vmlinux 0x68515ea6 mntget +EXPORT_SYMBOL vmlinux 0x687b6a16 kdbgetsymval +EXPORT_SYMBOL vmlinux 0x6890c740 agp3_generic_tlbflush +EXPORT_SYMBOL vmlinux 0x68b83ac6 posix_acl_alloc +EXPORT_SYMBOL vmlinux 0x68db9a76 nvdimm_namespace_common_probe +EXPORT_SYMBOL vmlinux 0x68de2691 invalidate_mapping_pages +EXPORT_SYMBOL vmlinux 0x68edc838 generic_file_readonly_mmap +EXPORT_SYMBOL vmlinux 0x68ee231e pm8606_osc_enable +EXPORT_SYMBOL vmlinux 0x690fd1dc tcp_prequeue +EXPORT_SYMBOL vmlinux 0x691001b5 acpi_evaluate_integer +EXPORT_SYMBOL vmlinux 0x6919226a neigh_table_init +EXPORT_SYMBOL vmlinux 0x69346466 md_check_recovery +EXPORT_SYMBOL vmlinux 0x693e423f dev_uc_init +EXPORT_SYMBOL vmlinux 0x6943ec37 tty_port_lower_dtr_rts +EXPORT_SYMBOL vmlinux 0x6944950f generic_ro_fops +EXPORT_SYMBOL vmlinux 0x694ab004 amd_northbridges +EXPORT_SYMBOL vmlinux 0x695803b8 reservation_object_add_shared_fence +EXPORT_SYMBOL vmlinux 0x6971447a rtc_month_days +EXPORT_SYMBOL vmlinux 0x6984979f i8042_remove_filter +EXPORT_SYMBOL vmlinux 0x6988d0ca cpu_dr7 +EXPORT_SYMBOL vmlinux 0x6989b062 ppp_output_wakeup +EXPORT_SYMBOL vmlinux 0x69a0ca7d iowrite16be +EXPORT_SYMBOL vmlinux 0x69a358a6 iomem_resource +EXPORT_SYMBOL vmlinux 0x69a3b61a skb_prepare_seq_read +EXPORT_SYMBOL vmlinux 0x69a8ba1a gen_pool_for_each_chunk +EXPORT_SYMBOL vmlinux 0x69ac0536 pm860x_reg_write +EXPORT_SYMBOL vmlinux 0x69ad2f20 kstrtouint +EXPORT_SYMBOL vmlinux 0x69bcf31f netif_tx_stop_all_queues +EXPORT_SYMBOL vmlinux 0x69c6ec9d netif_set_real_num_rx_queues +EXPORT_SYMBOL vmlinux 0x69e89c8c mmc_hw_reset +EXPORT_SYMBOL vmlinux 0x69e8cd4c get_io_context +EXPORT_SYMBOL vmlinux 0x6a02b4f4 tcf_action_exec +EXPORT_SYMBOL vmlinux 0x6a037cf1 mempool_kfree +EXPORT_SYMBOL vmlinux 0x6a04800a __ip4_datagram_connect +EXPORT_SYMBOL vmlinux 0x6a27bfce csum_partial_copy_generic +EXPORT_SYMBOL vmlinux 0x6a285ef8 xfrm6_rcv_spi +EXPORT_SYMBOL vmlinux 0x6a47cd6d pnp_is_active +EXPORT_SYMBOL vmlinux 0x6a5ecb18 unregister_module_notifier +EXPORT_SYMBOL vmlinux 0x6a60277d acpi_buffer_to_resource +EXPORT_SYMBOL vmlinux 0x6a725fcb xfrm_register_mode +EXPORT_SYMBOL vmlinux 0x6a76f3ac blk_iopoll_enable +EXPORT_SYMBOL vmlinux 0x6a814259 qdisc_watchdog_init +EXPORT_SYMBOL vmlinux 0x6a8e2c97 bio_init +EXPORT_SYMBOL vmlinux 0x6aa71321 dev_uc_del +EXPORT_SYMBOL vmlinux 0x6aaeb0a7 vfs_mkdir +EXPORT_SYMBOL vmlinux 0x6abe9788 d_move +EXPORT_SYMBOL vmlinux 0x6acafd5b cookie_timestamp_decode +EXPORT_SYMBOL vmlinux 0x6acb973d iowrite32be +EXPORT_SYMBOL vmlinux 0x6ad85887 acpi_enable_gpe +EXPORT_SYMBOL vmlinux 0x6add5c9a dmi_find_device +EXPORT_SYMBOL vmlinux 0x6aeefac4 zlib_deflateReset +EXPORT_SYMBOL vmlinux 0x6af09a61 __lock_page +EXPORT_SYMBOL vmlinux 0x6af1eb80 locks_mandatory_area +EXPORT_SYMBOL vmlinux 0x6afe7591 padata_do_serial +EXPORT_SYMBOL vmlinux 0x6b06fdce delayed_work_timer_fn +EXPORT_SYMBOL vmlinux 0x6b1b67d3 __bdevname +EXPORT_SYMBOL vmlinux 0x6b4e8989 sdev_disable_disk_events +EXPORT_SYMBOL vmlinux 0x6b5fb9bb dump_emit +EXPORT_SYMBOL vmlinux 0x6b6480a7 uart_get_divisor +EXPORT_SYMBOL vmlinux 0x6b6b962f bdevname +EXPORT_SYMBOL vmlinux 0x6b6ec828 proc_set_user +EXPORT_SYMBOL vmlinux 0x6b74b9be bit_waitqueue +EXPORT_SYMBOL vmlinux 0x6b8dbf88 i2c_clients_command +EXPORT_SYMBOL vmlinux 0x6bb6a949 __block_page_mkwrite +EXPORT_SYMBOL vmlinux 0x6bbc65ea km_report +EXPORT_SYMBOL vmlinux 0x6bbf3809 tty_port_close +EXPORT_SYMBOL vmlinux 0x6bc3fbc0 __unregister_chrdev +EXPORT_SYMBOL vmlinux 0x6bc516ea padata_remove_cpu +EXPORT_SYMBOL vmlinux 0x6bd8b358 phy_driver_register +EXPORT_SYMBOL vmlinux 0x6bdcfd99 qdisc_class_hash_remove +EXPORT_SYMBOL vmlinux 0x6bf1c17f pv_lock_ops +EXPORT_SYMBOL vmlinux 0x6c09c2a4 del_timer +EXPORT_SYMBOL vmlinux 0x6c1c0298 inet_sock_destruct +EXPORT_SYMBOL vmlinux 0x6c1ce5ce strcspn +EXPORT_SYMBOL vmlinux 0x6c21893d sockfd_lookup +EXPORT_SYMBOL vmlinux 0x6c2e3320 strncmp +EXPORT_SYMBOL vmlinux 0x6c32580f mmc_gpio_set_cd_isr +EXPORT_SYMBOL vmlinux 0x6c3428b1 iov_iter_alignment +EXPORT_SYMBOL vmlinux 0x6c51a836 sysctl_tcp_notsent_lowat +EXPORT_SYMBOL vmlinux 0x6c61ce70 num_registered_fb +EXPORT_SYMBOL vmlinux 0x6c702af7 sysctl_udp_rmem_min +EXPORT_SYMBOL vmlinux 0x6ca5b0f8 __net_get_random_once +EXPORT_SYMBOL vmlinux 0x6ca9d905 mb_cache_entry_alloc +EXPORT_SYMBOL vmlinux 0x6cb0c9d0 input_reset_device +EXPORT_SYMBOL vmlinux 0x6cb6a8c7 __xfrm_init_state +EXPORT_SYMBOL vmlinux 0x6cdc5c6b nla_strlcpy +EXPORT_SYMBOL vmlinux 0x6d0f1f89 dm_table_get_mode +EXPORT_SYMBOL vmlinux 0x6d1d5d9b iosf_mbi_write +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 0x6d355f4b module_refcount +EXPORT_SYMBOL vmlinux 0x6d67dc31 register_xen_selfballooning +EXPORT_SYMBOL vmlinux 0x6d85ccd7 inet_frags_exit_net +EXPORT_SYMBOL vmlinux 0x6da1a917 mnt_set_expiry +EXPORT_SYMBOL vmlinux 0x6db275fc tso_start +EXPORT_SYMBOL vmlinux 0x6dc0c9dc down_interruptible +EXPORT_SYMBOL vmlinux 0x6dc50edc kobject_add +EXPORT_SYMBOL vmlinux 0x6dc6dd56 down +EXPORT_SYMBOL vmlinux 0x6dd26e43 file_ns_capable +EXPORT_SYMBOL vmlinux 0x6ddf7ffd mipi_dsi_dcs_set_display_off +EXPORT_SYMBOL vmlinux 0x6de0cdbe register_filesystem +EXPORT_SYMBOL vmlinux 0x6def2db2 half_md4_transform +EXPORT_SYMBOL vmlinux 0x6defe508 iov_iter_fault_in_multipages_readable +EXPORT_SYMBOL vmlinux 0x6df1aaf1 kernel_sigaction +EXPORT_SYMBOL vmlinux 0x6e0ed6ca vm_insert_mixed +EXPORT_SYMBOL vmlinux 0x6e1a9b0f ipv6_chk_prefix +EXPORT_SYMBOL vmlinux 0x6e433948 inet_ioctl +EXPORT_SYMBOL vmlinux 0x6e525e30 bio_integrity_advance +EXPORT_SYMBOL vmlinux 0x6e6514ed radix_tree_insert +EXPORT_SYMBOL vmlinux 0x6e674d70 copy_from_iter_nocache +EXPORT_SYMBOL vmlinux 0x6e6bbf8c sync_inodes_sb +EXPORT_SYMBOL vmlinux 0x6e720ff2 rtnl_unlock +EXPORT_SYMBOL vmlinux 0x6e9dd606 __symbol_put +EXPORT_SYMBOL vmlinux 0x6ebb4ad0 twl6040_power +EXPORT_SYMBOL vmlinux 0x6ef5aca5 get_cached_acl_rcu +EXPORT_SYMBOL vmlinux 0x6efcfd53 abx500_register_ops +EXPORT_SYMBOL vmlinux 0x6f20960a full_name_hash +EXPORT_SYMBOL vmlinux 0x6f2e4f46 __cond_resched_lock +EXPORT_SYMBOL vmlinux 0x6f324d81 down_read_trylock +EXPORT_SYMBOL vmlinux 0x6f4fd53d nf_hook_slow +EXPORT_SYMBOL vmlinux 0x6f556bdb acpi_get_gpe_device +EXPORT_SYMBOL vmlinux 0x6f5f8901 hdmi_infoframe_log +EXPORT_SYMBOL vmlinux 0x6f64139c dev_uc_add_excl +EXPORT_SYMBOL vmlinux 0x6f6eedb9 eth_change_mtu +EXPORT_SYMBOL vmlinux 0x6f7a12b7 pnp_activate_dev +EXPORT_SYMBOL vmlinux 0x6f819ee5 sock_get_timestampns +EXPORT_SYMBOL vmlinux 0x6f88effb hdmi_avi_infoframe_init +EXPORT_SYMBOL vmlinux 0x6fa377c2 dmam_release_declared_memory +EXPORT_SYMBOL vmlinux 0x6fab1b30 dquot_claim_space_nodirty +EXPORT_SYMBOL vmlinux 0x6fbf07cd __free_page_frag +EXPORT_SYMBOL vmlinux 0x6fc21ad7 jbd2_journal_lock_updates +EXPORT_SYMBOL vmlinux 0x6fcb87a1 touch_softlockup_watchdog +EXPORT_SYMBOL vmlinux 0x6fdc22d3 agp_unbind_memory +EXPORT_SYMBOL vmlinux 0x6fe67a92 scsi_dma_map +EXPORT_SYMBOL vmlinux 0x6feb2039 acpi_write +EXPORT_SYMBOL vmlinux 0x7023bea8 unregister_acpi_notifier +EXPORT_SYMBOL vmlinux 0x7029f11b iommu_tbl_pool_init +EXPORT_SYMBOL vmlinux 0x70523a7a __cond_resched_softirq +EXPORT_SYMBOL vmlinux 0x7054a3e4 request_dma +EXPORT_SYMBOL vmlinux 0x7062b4cd cmdline_parts_free +EXPORT_SYMBOL vmlinux 0x706d051c del_timer_sync +EXPORT_SYMBOL vmlinux 0x706dc9d0 dma_async_tx_descriptor_init +EXPORT_SYMBOL vmlinux 0x707558e2 udp_proc_unregister +EXPORT_SYMBOL vmlinux 0x7075e0a1 __scsi_device_lookup +EXPORT_SYMBOL vmlinux 0x707f43f6 __ctzdi2 +EXPORT_SYMBOL vmlinux 0x7088ce72 printk_emit +EXPORT_SYMBOL vmlinux 0x708a79f7 __percpu_counter_compare +EXPORT_SYMBOL vmlinux 0x70d1f8f3 strncat +EXPORT_SYMBOL vmlinux 0x70d8ab82 acpi_acquire_global_lock +EXPORT_SYMBOL vmlinux 0x70df6c5b param_set_ullong +EXPORT_SYMBOL vmlinux 0x70e3ddc3 scmd_printk +EXPORT_SYMBOL vmlinux 0x70f96f88 glob_match +EXPORT_SYMBOL vmlinux 0x7100e278 udp_lib_get_port +EXPORT_SYMBOL vmlinux 0x71033b8a pm860x_bulk_read +EXPORT_SYMBOL vmlinux 0x7104e9fb pci_disable_link_state +EXPORT_SYMBOL vmlinux 0x71120351 vme_slave_request +EXPORT_SYMBOL vmlinux 0x7123d385 padata_register_cpumask_notifier +EXPORT_SYMBOL vmlinux 0x7129e5f8 hex_asc +EXPORT_SYMBOL vmlinux 0x712c29b1 inode_sub_bytes +EXPORT_SYMBOL vmlinux 0x712ed37b radix_tree_gang_lookup_tag_slot +EXPORT_SYMBOL vmlinux 0x7140a23c __blkdev_reread_part +EXPORT_SYMBOL vmlinux 0x7145e6bf dev_disable_lro +EXPORT_SYMBOL vmlinux 0x71497e12 abx500_event_registers_startup_state_get +EXPORT_SYMBOL vmlinux 0x71557a01 mpage_writepages +EXPORT_SYMBOL vmlinux 0x715c849b filemap_flush +EXPORT_SYMBOL vmlinux 0x715ec411 import_iovec +EXPORT_SYMBOL vmlinux 0x716bd8c1 kernel_sendmsg +EXPORT_SYMBOL vmlinux 0x7171121c overflowgid +EXPORT_SYMBOL vmlinux 0x717f6a14 deactivate_locked_super +EXPORT_SYMBOL vmlinux 0x7184f117 jbd2_journal_flush +EXPORT_SYMBOL vmlinux 0x7188ca46 shrink_dcache_parent +EXPORT_SYMBOL vmlinux 0x71a50dbc register_blkdev +EXPORT_SYMBOL vmlinux 0x71a672ef dmam_pool_destroy +EXPORT_SYMBOL vmlinux 0x71b8fd8c mmc_calc_max_discard +EXPORT_SYMBOL vmlinux 0x71bbd2d8 tcp_md5_hash_header +EXPORT_SYMBOL vmlinux 0x71dca010 param_set_bint +EXPORT_SYMBOL vmlinux 0x71e3113a vga_con +EXPORT_SYMBOL vmlinux 0x71e662e4 d_genocide +EXPORT_SYMBOL vmlinux 0x71f3e71c dm_kobject_release +EXPORT_SYMBOL vmlinux 0x71f65175 hdmi_spd_infoframe_pack +EXPORT_SYMBOL vmlinux 0x7209425d vm_insert_page +EXPORT_SYMBOL vmlinux 0x7240282a vme_master_mmap +EXPORT_SYMBOL vmlinux 0x72618070 pci_get_class +EXPORT_SYMBOL vmlinux 0x726f801a blk_mq_start_request +EXPORT_SYMBOL vmlinux 0x727959cc netdev_master_upper_dev_get_rcu +EXPORT_SYMBOL vmlinux 0x728ffe1f pcim_iounmap_regions +EXPORT_SYMBOL vmlinux 0x729e0591 blk_peek_request +EXPORT_SYMBOL vmlinux 0x72b243d4 free_dma +EXPORT_SYMBOL vmlinux 0x72bf2140 mtrr_add +EXPORT_SYMBOL vmlinux 0x72d2955f skb_page_frag_refill +EXPORT_SYMBOL vmlinux 0x72d58de9 kstrtou8_from_user +EXPORT_SYMBOL vmlinux 0x72dc8159 agp_generic_remove_memory +EXPORT_SYMBOL vmlinux 0x72e72e86 phy_ethtool_set_wol +EXPORT_SYMBOL vmlinux 0x72ea7b2d scsi_device_type +EXPORT_SYMBOL vmlinux 0x7315a4e9 twl6030_mmc_card_detect_config +EXPORT_SYMBOL vmlinux 0x731bff5c xfrm_input_resume +EXPORT_SYMBOL vmlinux 0x733c3b54 kasprintf +EXPORT_SYMBOL vmlinux 0x733fb108 scsi_scan_target +EXPORT_SYMBOL vmlinux 0x7348b31c inode_init_owner +EXPORT_SYMBOL vmlinux 0x735a0bd5 native_io_delay +EXPORT_SYMBOL vmlinux 0x735a5886 xfrm4_rcv_encap +EXPORT_SYMBOL vmlinux 0x7364a10f twl6040_get_sysclk +EXPORT_SYMBOL vmlinux 0x738714db ida_pre_get +EXPORT_SYMBOL vmlinux 0x738803e6 strnlen +EXPORT_SYMBOL vmlinux 0x73a2bdc0 gnet_stats_finish_copy +EXPORT_SYMBOL vmlinux 0x73dd54eb irq_fpu_usable +EXPORT_SYMBOL vmlinux 0x73e20c1c strlcpy +EXPORT_SYMBOL vmlinux 0x73e5a8f6 neigh_sysctl_unregister +EXPORT_SYMBOL vmlinux 0x73e78be4 __f_setown +EXPORT_SYMBOL vmlinux 0x740a1ad0 make_kuid +EXPORT_SYMBOL vmlinux 0x740a1b95 reserve_evntsel_nmi +EXPORT_SYMBOL vmlinux 0x7410aba2 strreplace +EXPORT_SYMBOL vmlinux 0x74125bab xfrm_state_add +EXPORT_SYMBOL vmlinux 0x7413793a EISA_bus +EXPORT_SYMBOL vmlinux 0x7421304d param_ops_short +EXPORT_SYMBOL vmlinux 0x74389749 blk_init_queue_node +EXPORT_SYMBOL vmlinux 0x743b4ae3 atomic64_inc_not_zero_cx8 +EXPORT_SYMBOL vmlinux 0x745f20a3 idr_is_empty +EXPORT_SYMBOL vmlinux 0x747195f0 hdmi_vendor_infoframe_init +EXPORT_SYMBOL vmlinux 0x7475028d scsi_report_device_reset +EXPORT_SYMBOL vmlinux 0x7477c54a xfrm_policy_flush +EXPORT_SYMBOL vmlinux 0x7485e15e unregister_chrdev_region +EXPORT_SYMBOL vmlinux 0x74a436c4 mem_section +EXPORT_SYMBOL vmlinux 0x74abbd17 skb_clone_sk +EXPORT_SYMBOL vmlinux 0x74c134b9 __sw_hweight32 +EXPORT_SYMBOL vmlinux 0x74e33541 devm_ioremap_resource +EXPORT_SYMBOL vmlinux 0x74e5c98f ucs2_strnlen +EXPORT_SYMBOL vmlinux 0x74e5ff1a udpv6_encap_enable +EXPORT_SYMBOL vmlinux 0x74eb5c70 ipv6_find_hdr +EXPORT_SYMBOL vmlinux 0x7505bdef memchr_inv +EXPORT_SYMBOL vmlinux 0x7514caf0 fget_raw +EXPORT_SYMBOL vmlinux 0x75183ae4 gnttab_alloc_pages +EXPORT_SYMBOL vmlinux 0x751995cb vlan_ioctl_set +EXPORT_SYMBOL vmlinux 0x75271716 save_processor_state +EXPORT_SYMBOL vmlinux 0x752e26a3 crypto_sha512_update +EXPORT_SYMBOL vmlinux 0x7531e3dc acpi_get_event_resources +EXPORT_SYMBOL vmlinux 0x7536bc92 fifo_set_limit +EXPORT_SYMBOL vmlinux 0x7538b132 agp_off +EXPORT_SYMBOL vmlinux 0x7557053c mipi_dsi_set_maximum_return_packet_size +EXPORT_SYMBOL vmlinux 0x7559b024 xfrm4_rcv +EXPORT_SYMBOL vmlinux 0x7562b5ab vm_map_ram +EXPORT_SYMBOL vmlinux 0x757fc591 pv_mmu_ops +EXPORT_SYMBOL vmlinux 0x75925115 vga_set_legacy_decoding +EXPORT_SYMBOL vmlinux 0x7593d385 div64_s64 +EXPORT_SYMBOL vmlinux 0x75bc549a x86_cpu_to_apicid +EXPORT_SYMBOL vmlinux 0x75bda77a seq_hlist_next +EXPORT_SYMBOL vmlinux 0x75bdea12 iommu_area_alloc +EXPORT_SYMBOL vmlinux 0x75d21809 vprintk_emit +EXPORT_SYMBOL vmlinux 0x75d220b5 scsi_dma_unmap +EXPORT_SYMBOL vmlinux 0x75e017af tcp_proc_register +EXPORT_SYMBOL vmlinux 0x75f5ca8f sock_efree +EXPORT_SYMBOL vmlinux 0x75fbdefd acpi_remove_address_space_handler +EXPORT_SYMBOL vmlinux 0x760a0f4f yield +EXPORT_SYMBOL vmlinux 0x762add85 atomic64_inc_return_cx8 +EXPORT_SYMBOL vmlinux 0x7647726c handle_sysrq +EXPORT_SYMBOL vmlinux 0x764bd77c request_resource +EXPORT_SYMBOL vmlinux 0x766a6630 blk_queue_bounce_limit +EXPORT_SYMBOL vmlinux 0x767d2a16 mdiobus_write +EXPORT_SYMBOL vmlinux 0x767ddb02 set_memory_wc +EXPORT_SYMBOL vmlinux 0x769e06d7 smp_call_function_many +EXPORT_SYMBOL vmlinux 0x76b90cb1 find_lock_entry +EXPORT_SYMBOL vmlinux 0x76d3cd60 laptop_mode +EXPORT_SYMBOL vmlinux 0x76d451c4 add_taint +EXPORT_SYMBOL vmlinux 0x76d7b367 sock_i_uid +EXPORT_SYMBOL vmlinux 0x76d9bf11 crc32_be +EXPORT_SYMBOL vmlinux 0x76f6c5ef kmalloc_order +EXPORT_SYMBOL vmlinux 0x77003683 processors +EXPORT_SYMBOL vmlinux 0x770a0036 isapnp_cfg_begin +EXPORT_SYMBOL vmlinux 0x770eefb8 fsnotify_put_mark +EXPORT_SYMBOL vmlinux 0x771b8ec4 queue_write_lock_slowpath +EXPORT_SYMBOL vmlinux 0x771cf835 dma_pool_alloc +EXPORT_SYMBOL vmlinux 0x77279461 bio_uncopy_user +EXPORT_SYMBOL vmlinux 0x7744a905 pnp_get_resource +EXPORT_SYMBOL vmlinux 0x77456e0a acpi_root_dir +EXPORT_SYMBOL vmlinux 0x775243d3 ppp_unregister_compressor +EXPORT_SYMBOL vmlinux 0x779a18af kstrtoll +EXPORT_SYMBOL vmlinux 0x77bc13a0 strim +EXPORT_SYMBOL vmlinux 0x77d8f04f d_splice_alias +EXPORT_SYMBOL vmlinux 0x77fd0eed sk_wait_data +EXPORT_SYMBOL vmlinux 0x780fdfd1 intel_enable_gtt +EXPORT_SYMBOL vmlinux 0x782567ec memcg_kmem_enabled_key +EXPORT_SYMBOL vmlinux 0x783b3563 wake_up_atomic_t +EXPORT_SYMBOL vmlinux 0x784a66b8 simple_transaction_read +EXPORT_SYMBOL vmlinux 0x78554122 bio_integrity_free +EXPORT_SYMBOL vmlinux 0x78759547 __dec_zone_page_state +EXPORT_SYMBOL vmlinux 0x787ddc87 ip_options_compile +EXPORT_SYMBOL vmlinux 0x7880c781 dm_kcopyd_prepare_callback +EXPORT_SYMBOL vmlinux 0x789affb1 frontswap_tmem_exclusive_gets +EXPORT_SYMBOL vmlinux 0x78a2dea6 pci_release_regions +EXPORT_SYMBOL vmlinux 0x78a5ff8a fence_add_callback +EXPORT_SYMBOL vmlinux 0x78ce3cfb elv_rq_merge_ok +EXPORT_SYMBOL vmlinux 0x78d75636 xfrm_prepare_input +EXPORT_SYMBOL vmlinux 0x78dc8726 pci_scan_single_device +EXPORT_SYMBOL vmlinux 0x78df6bd7 no_pci_devices +EXPORT_SYMBOL vmlinux 0x78e739aa up +EXPORT_SYMBOL vmlinux 0x78e82ec2 blk_end_request_all +EXPORT_SYMBOL vmlinux 0x78f560af blk_init_queue +EXPORT_SYMBOL vmlinux 0x79068fda acpi_install_method +EXPORT_SYMBOL vmlinux 0x7907921d generic_error_remove_page +EXPORT_SYMBOL vmlinux 0x7919b916 dev_mc_add_global +EXPORT_SYMBOL vmlinux 0x791ed1c9 rename_lock +EXPORT_SYMBOL vmlinux 0x792bb77f __cleancache_invalidate_page +EXPORT_SYMBOL vmlinux 0x79316ee2 xfrm_state_register_afinfo +EXPORT_SYMBOL vmlinux 0x793f5141 sock_wake_async +EXPORT_SYMBOL vmlinux 0x794b3a6b scsi_print_sense_hdr +EXPORT_SYMBOL vmlinux 0x794b67f4 tcp_md5_hash_key +EXPORT_SYMBOL vmlinux 0x7964449b pci_alloc_dev +EXPORT_SYMBOL vmlinux 0x796fc5ce scsi_get_sense_info_fld +EXPORT_SYMBOL vmlinux 0x79724b3f blk_integrity_is_initialized +EXPORT_SYMBOL vmlinux 0x798307f4 pcix_get_max_mmrbc +EXPORT_SYMBOL vmlinux 0x79891410 blk_put_request +EXPORT_SYMBOL vmlinux 0x798c8442 pskb_expand_head +EXPORT_SYMBOL vmlinux 0x79a7e738 mmc_set_data_timeout +EXPORT_SYMBOL vmlinux 0x79aa04a2 get_random_bytes +EXPORT_SYMBOL vmlinux 0x79dbe471 __secpath_destroy +EXPORT_SYMBOL vmlinux 0x79e607c5 abx500_mask_and_set_register_interruptible +EXPORT_SYMBOL vmlinux 0x79f19e1d prepare_kernel_cred +EXPORT_SYMBOL vmlinux 0x7a028771 i2c_use_client +EXPORT_SYMBOL vmlinux 0x7a27c184 ewma_init +EXPORT_SYMBOL vmlinux 0x7a2af7b4 cpu_number +EXPORT_SYMBOL vmlinux 0x7a39f02a phy_stop_interrupts +EXPORT_SYMBOL vmlinux 0x7a3ae32e _raw_write_trylock +EXPORT_SYMBOL vmlinux 0x7a4497db kzfree +EXPORT_SYMBOL vmlinux 0x7a476dc3 d_path +EXPORT_SYMBOL vmlinux 0x7a4c2692 devm_gpio_request_one +EXPORT_SYMBOL vmlinux 0x7a530679 mount_nodev +EXPORT_SYMBOL vmlinux 0x7a6e1088 uart_remove_one_port +EXPORT_SYMBOL vmlinux 0x7a82cb47 rdmsrl_safe_on_cpu +EXPORT_SYMBOL vmlinux 0x7a83855c dup_iter +EXPORT_SYMBOL vmlinux 0x7a915647 dquot_disable +EXPORT_SYMBOL vmlinux 0x7a925833 cpufreq_get_global_kobject +EXPORT_SYMBOL vmlinux 0x7a95e5ae do_settimeofday64 +EXPORT_SYMBOL vmlinux 0x7aa09088 tty_unlock +EXPORT_SYMBOL vmlinux 0x7aa1756e kvfree +EXPORT_SYMBOL vmlinux 0x7aa19840 input_handler_for_each_handle +EXPORT_SYMBOL vmlinux 0x7aa82187 mipi_dsi_generic_read +EXPORT_SYMBOL vmlinux 0x7aad14c8 tcp_create_openreq_child +EXPORT_SYMBOL vmlinux 0x7ab88a45 system_freezing_cnt +EXPORT_SYMBOL vmlinux 0x7acdeaab dev_remove_offload +EXPORT_SYMBOL vmlinux 0x7ad050b9 qid_lt +EXPORT_SYMBOL vmlinux 0x7add44b5 posix_acl_valid +EXPORT_SYMBOL vmlinux 0x7aec9089 clear_user +EXPORT_SYMBOL vmlinux 0x7af52b60 __alloc_pages_nodemask +EXPORT_SYMBOL vmlinux 0x7afa89fc vsnprintf +EXPORT_SYMBOL vmlinux 0x7b134ddf acpi_get_name +EXPORT_SYMBOL vmlinux 0x7b1ade38 lz4_decompress +EXPORT_SYMBOL vmlinux 0x7b283ce3 prandom_bytes_state +EXPORT_SYMBOL vmlinux 0x7b52a859 wrmsr_safe_on_cpu +EXPORT_SYMBOL vmlinux 0x7b5c8440 vm_munmap +EXPORT_SYMBOL vmlinux 0x7b5fde27 x86_hyper_vmware +EXPORT_SYMBOL vmlinux 0x7b7745ab get_gendisk +EXPORT_SYMBOL vmlinux 0x7b7cc27d nf_log_register +EXPORT_SYMBOL vmlinux 0x7b82467a acpi_bus_get_device +EXPORT_SYMBOL vmlinux 0x7b9cc1e2 pci_find_capability +EXPORT_SYMBOL vmlinux 0x7ba02658 padata_stop +EXPORT_SYMBOL vmlinux 0x7ba6fb5a pci_prepare_to_sleep +EXPORT_SYMBOL vmlinux 0x7ba788bb inet_csk_prepare_forced_close +EXPORT_SYMBOL vmlinux 0x7bad7a1a acpi_walk_resources +EXPORT_SYMBOL vmlinux 0x7bd7ab6e remove_proc_entry +EXPORT_SYMBOL vmlinux 0x7bd7aba4 free_user_ns +EXPORT_SYMBOL vmlinux 0x7be8f8cb truncate_inode_pages +EXPORT_SYMBOL vmlinux 0x7c00ad93 tcp_md5_do_lookup +EXPORT_SYMBOL vmlinux 0x7c0a2655 finish_no_open +EXPORT_SYMBOL vmlinux 0x7c0b1df9 security_path_truncate +EXPORT_SYMBOL vmlinux 0x7c0c9a0b brioctl_set +EXPORT_SYMBOL vmlinux 0x7c10b295 ip6_expire_frag_queue +EXPORT_SYMBOL vmlinux 0x7c1372e8 panic +EXPORT_SYMBOL vmlinux 0x7c173634 __bitmap_complement +EXPORT_SYMBOL vmlinux 0x7c209082 __dynamic_dev_dbg +EXPORT_SYMBOL vmlinux 0x7c46233a cpufreq_quick_get +EXPORT_SYMBOL vmlinux 0x7c4b1dda user_path_create +EXPORT_SYMBOL vmlinux 0x7c4c206c tcp_child_process +EXPORT_SYMBOL vmlinux 0x7c61340c __release_region +EXPORT_SYMBOL vmlinux 0x7c80cf50 have_submounts +EXPORT_SYMBOL vmlinux 0x7c8cafb7 ip_mc_inc_group +EXPORT_SYMBOL vmlinux 0x7c98845d twl_i2c_read +EXPORT_SYMBOL vmlinux 0x7caab2fa blkdev_put +EXPORT_SYMBOL vmlinux 0x7cb09a6a simple_link +EXPORT_SYMBOL vmlinux 0x7cb1ae69 cpu_down +EXPORT_SYMBOL vmlinux 0x7cba2792 qdisc_warn_nonwc +EXPORT_SYMBOL vmlinux 0x7cdcb122 simple_pin_fs +EXPORT_SYMBOL vmlinux 0x7cddb152 pci_platform_rom +EXPORT_SYMBOL vmlinux 0x7ce18c9f from_kqid +EXPORT_SYMBOL vmlinux 0x7ce83365 acpi_remove_table_handler +EXPORT_SYMBOL vmlinux 0x7cea0110 nvdimm_revalidate_disk +EXPORT_SYMBOL vmlinux 0x7cf35220 vme_master_free +EXPORT_SYMBOL vmlinux 0x7cf3fe50 fbcon_set_rotate +EXPORT_SYMBOL vmlinux 0x7cf42331 get_task_io_context +EXPORT_SYMBOL vmlinux 0x7cf86c4c nla_reserve_nohdr +EXPORT_SYMBOL vmlinux 0x7cfe7a50 submit_bio_wait +EXPORT_SYMBOL vmlinux 0x7d09256b neigh_update +EXPORT_SYMBOL vmlinux 0x7d0db45c jiffies_to_clock_t +EXPORT_SYMBOL vmlinux 0x7d11c268 jiffies +EXPORT_SYMBOL vmlinux 0x7d14c04b tcp_sendpage +EXPORT_SYMBOL vmlinux 0x7d333219 wake_up_process +EXPORT_SYMBOL vmlinux 0x7d37c463 dev_uc_sync_multiple +EXPORT_SYMBOL vmlinux 0x7d3c1739 __alloc_skb +EXPORT_SYMBOL vmlinux 0x7d537ecc blk_queue_max_hw_sectors +EXPORT_SYMBOL vmlinux 0x7d705738 blk_start_plug +EXPORT_SYMBOL vmlinux 0x7d7fa608 pnpbios_protocol +EXPORT_SYMBOL vmlinux 0x7d8efa07 ps2_command +EXPORT_SYMBOL vmlinux 0x7d913de1 inode_add_bytes +EXPORT_SYMBOL vmlinux 0x7d94f746 acpi_os_write_port +EXPORT_SYMBOL vmlinux 0x7d96cea3 wait_for_completion_interruptible +EXPORT_SYMBOL vmlinux 0x7d99057d genphy_suspend +EXPORT_SYMBOL vmlinux 0x7db0c499 inode_set_flags +EXPORT_SYMBOL vmlinux 0x7dbc2e57 mmiotrace_printk +EXPORT_SYMBOL vmlinux 0x7dea0228 mmc_fixup_device +EXPORT_SYMBOL vmlinux 0x7deff673 dm_consume_args +EXPORT_SYMBOL vmlinux 0x7dfe7ee6 jbd2__journal_restart +EXPORT_SYMBOL vmlinux 0x7e02a52f arp_xmit +EXPORT_SYMBOL vmlinux 0x7e198752 dev_alloc_name +EXPORT_SYMBOL vmlinux 0x7e1b80aa i2c_smbus_xfer +EXPORT_SYMBOL vmlinux 0x7e1d1072 tty_insert_flip_string_fixed_flag +EXPORT_SYMBOL vmlinux 0x7e28810b blk_integrity_register +EXPORT_SYMBOL vmlinux 0x7e6986b5 pipe_unlock +EXPORT_SYMBOL vmlinux 0x7e7fc3fb __wake_up_bit +EXPORT_SYMBOL vmlinux 0x7e7fd1aa page_readlink +EXPORT_SYMBOL vmlinux 0x7e960120 sock_no_sendmsg +EXPORT_SYMBOL vmlinux 0x7e9d291d dev_change_flags +EXPORT_SYMBOL vmlinux 0x7ea8b59c sock_diag_put_filterinfo +EXPORT_SYMBOL vmlinux 0x7ec12e80 block_page_mkwrite +EXPORT_SYMBOL vmlinux 0x7ecb001b __per_cpu_offset +EXPORT_SYMBOL vmlinux 0x7ecbb323 sock_no_accept +EXPORT_SYMBOL vmlinux 0x7ed7e6bb follow_down +EXPORT_SYMBOL vmlinux 0x7edeb037 audit_log_start +EXPORT_SYMBOL vmlinux 0x7ee6d93a nsecs_to_jiffies64 +EXPORT_SYMBOL vmlinux 0x7ee73c0c memcg_socket_limit_enabled +EXPORT_SYMBOL vmlinux 0x7f02188f __msecs_to_jiffies +EXPORT_SYMBOL vmlinux 0x7f0b13fa con_copy_unimap +EXPORT_SYMBOL vmlinux 0x7f1d2a75 freeze_bdev +EXPORT_SYMBOL vmlinux 0x7f24de73 jiffies_to_usecs +EXPORT_SYMBOL vmlinux 0x7f258de0 is_nvdimm_bus_locked +EXPORT_SYMBOL vmlinux 0x7f29e397 generic_splice_sendpage +EXPORT_SYMBOL vmlinux 0x7f310209 __skb_get_hash_flowi6 +EXPORT_SYMBOL vmlinux 0x7f362fa1 md_cluster_mod +EXPORT_SYMBOL vmlinux 0x7f61992f key_unlink +EXPORT_SYMBOL vmlinux 0x7f62a045 cpu_maps_update_done +EXPORT_SYMBOL vmlinux 0x7f6cbe45 xfrm6_protocol_deregister +EXPORT_SYMBOL vmlinux 0x7f6d2adb vfs_link +EXPORT_SYMBOL vmlinux 0x7f9d9749 dma_mark_declared_memory_occupied +EXPORT_SYMBOL vmlinux 0x7fb05fbe phy_device_register +EXPORT_SYMBOL vmlinux 0x7fc0ac98 alloc_skb_with_frags +EXPORT_SYMBOL vmlinux 0x7fde2edb vme_master_read +EXPORT_SYMBOL vmlinux 0x7fe32873 rb_replace_node +EXPORT_SYMBOL vmlinux 0x7fedb3d8 pci_wake_from_d3 +EXPORT_SYMBOL vmlinux 0x803da415 sk_alloc +EXPORT_SYMBOL vmlinux 0x807421c5 tty_register_ldisc +EXPORT_SYMBOL vmlinux 0x8086bfe3 dquot_drop +EXPORT_SYMBOL vmlinux 0x8087727d __blk_mq_end_request +EXPORT_SYMBOL vmlinux 0x809388ca idr_destroy +EXPORT_SYMBOL vmlinux 0x80ca5026 _bin2bcd +EXPORT_SYMBOL vmlinux 0x80d68d3e fb_register_client +EXPORT_SYMBOL vmlinux 0x80d9ca85 paravirt_ticketlocks_enabled +EXPORT_SYMBOL vmlinux 0x80dd2249 dev_getfirstbyhwtype +EXPORT_SYMBOL vmlinux 0x80e591ae scsi_bios_ptable +EXPORT_SYMBOL vmlinux 0x80eb423b acpi_get_object_info +EXPORT_SYMBOL vmlinux 0x80ec1b8b bioset_create_nobvec +EXPORT_SYMBOL vmlinux 0x80f19f05 vme_dma_list_free +EXPORT_SYMBOL vmlinux 0x81144f9d idr_find_slowpath +EXPORT_SYMBOL vmlinux 0x811c800a unlock_page +EXPORT_SYMBOL vmlinux 0x8121155f tty_port_raise_dtr_rts +EXPORT_SYMBOL vmlinux 0x8140cf58 __scsi_device_lookup_by_target +EXPORT_SYMBOL vmlinux 0x81472677 acpi_get_table +EXPORT_SYMBOL vmlinux 0x814e7730 nf_ct_destroy +EXPORT_SYMBOL vmlinux 0x8155c485 nf_log_unbind_pf +EXPORT_SYMBOL vmlinux 0x815b5dd4 match_octal +EXPORT_SYMBOL vmlinux 0x815c56d0 cpu_present_mask +EXPORT_SYMBOL vmlinux 0x815f2897 empty_zero_page +EXPORT_SYMBOL vmlinux 0x81a3d32a ip_defrag +EXPORT_SYMBOL vmlinux 0x81bcead7 try_to_free_buffers +EXPORT_SYMBOL vmlinux 0x81c164de mmc_gpio_get_ro +EXPORT_SYMBOL vmlinux 0x81cb575b set_nlink +EXPORT_SYMBOL vmlinux 0x81db6ebb xz_dec_reset +EXPORT_SYMBOL vmlinux 0x81e67b60 i2c_verify_adapter +EXPORT_SYMBOL vmlinux 0x81e6b37f dmi_get_system_info +EXPORT_SYMBOL vmlinux 0x82072614 tasklet_kill +EXPORT_SYMBOL vmlinux 0x8212071e iov_iter_kvec +EXPORT_SYMBOL vmlinux 0x8212721d xenbus_dev_request_and_reply +EXPORT_SYMBOL vmlinux 0x8217bc14 devfreq_interval_update +EXPORT_SYMBOL vmlinux 0x82255a50 uart_add_one_port +EXPORT_SYMBOL vmlinux 0x8235805b memmove +EXPORT_SYMBOL vmlinux 0x824e3c83 dquot_quota_sync +EXPORT_SYMBOL vmlinux 0x82587c49 bioset_free +EXPORT_SYMBOL vmlinux 0x82694cd6 noop_fsync +EXPORT_SYMBOL vmlinux 0x82701365 int_to_scsilun +EXPORT_SYMBOL vmlinux 0x8271b7c6 csum_and_copy_to_iter +EXPORT_SYMBOL vmlinux 0x828062b1 __frontswap_init +EXPORT_SYMBOL vmlinux 0x8283385b scsi_free_host_dev +EXPORT_SYMBOL vmlinux 0x8284e449 tty_schedule_flip +EXPORT_SYMBOL vmlinux 0x82852df1 mdiobus_free +EXPORT_SYMBOL vmlinux 0x82871b60 dmt_modes +EXPORT_SYMBOL vmlinux 0x829534b3 fence_free +EXPORT_SYMBOL vmlinux 0x829e913c i2c_transfer +EXPORT_SYMBOL vmlinux 0x82a853fd seq_vprintf +EXPORT_SYMBOL vmlinux 0x82acfb70 blk_iopoll_sched +EXPORT_SYMBOL vmlinux 0x82c2181c dst_alloc +EXPORT_SYMBOL vmlinux 0x82e8bed7 blk_queue_max_segment_size +EXPORT_SYMBOL vmlinux 0x8304733a blk_set_stacking_limits +EXPORT_SYMBOL vmlinux 0x830e547b ioremap_prot +EXPORT_SYMBOL vmlinux 0x8326fd35 dev_set_promiscuity +EXPORT_SYMBOL vmlinux 0x8329e6f0 memset +EXPORT_SYMBOL vmlinux 0x833c03aa acpi_enable_all_runtime_gpes +EXPORT_SYMBOL vmlinux 0x833fd1e5 __mod_zone_page_state +EXPORT_SYMBOL vmlinux 0x8340b01c scsi_register_driver +EXPORT_SYMBOL vmlinux 0x835c8d23 scsi_device_put +EXPORT_SYMBOL vmlinux 0x8372cd2f __gnet_stats_copy_basic +EXPORT_SYMBOL vmlinux 0x8382e59a acpi_walk_resource_buffer +EXPORT_SYMBOL vmlinux 0x838b54b1 iput +EXPORT_SYMBOL vmlinux 0x839430b2 __register_cpu_notifier +EXPORT_SYMBOL vmlinux 0x83b009ea xfrm_state_walk_init +EXPORT_SYMBOL vmlinux 0x83ba46ba register_netdev +EXPORT_SYMBOL vmlinux 0x83bcd330 pcibios_set_irq_routing +EXPORT_SYMBOL vmlinux 0x83c52fba xfrm4_protocol_init +EXPORT_SYMBOL vmlinux 0x83d4c415 gro_find_complete_by_type +EXPORT_SYMBOL vmlinux 0x83e79fce vme_master_request +EXPORT_SYMBOL vmlinux 0x83ee0686 lease_get_mtime +EXPORT_SYMBOL vmlinux 0x83eeef77 devfreq_register_opp_notifier +EXPORT_SYMBOL vmlinux 0x83f6f944 zpool_register_driver +EXPORT_SYMBOL vmlinux 0x8404b527 ht_create_irq +EXPORT_SYMBOL vmlinux 0x84060081 xen_poll_irq_timeout +EXPORT_SYMBOL vmlinux 0x841638e4 neigh_resolve_output +EXPORT_SYMBOL vmlinux 0x8417f512 acpi_update_all_gpes +EXPORT_SYMBOL vmlinux 0x8426aeee writeback_inodes_sb +EXPORT_SYMBOL vmlinux 0x8434a3ee mpage_readpage +EXPORT_SYMBOL vmlinux 0x8445b22d textsearch_prepare +EXPORT_SYMBOL vmlinux 0x845b0d3d pcie_capability_read_word +EXPORT_SYMBOL vmlinux 0x84800824 vlan_dev_vlan_id +EXPORT_SYMBOL vmlinux 0x84ef0096 dqget +EXPORT_SYMBOL vmlinux 0x84efc672 pci_request_region +EXPORT_SYMBOL vmlinux 0x84f53652 blk_mq_start_hw_queues +EXPORT_SYMBOL vmlinux 0x84ffea8b idr_preload +EXPORT_SYMBOL vmlinux 0x85096fca d_alloc_name +EXPORT_SYMBOL vmlinux 0x85126925 touch_buffer +EXPORT_SYMBOL vmlinux 0x851e5dfc inet_csk_clear_xmit_timers +EXPORT_SYMBOL vmlinux 0x8526c35a remove_wait_queue +EXPORT_SYMBOL vmlinux 0x854dc870 acpi_match_device_ids +EXPORT_SYMBOL vmlinux 0x854f56ff cdrom_check_events +EXPORT_SYMBOL vmlinux 0x85670f1d rtnl_is_locked +EXPORT_SYMBOL vmlinux 0x856ac4a6 nf_register_sockopt +EXPORT_SYMBOL vmlinux 0x857582f7 acpi_enable_all_wakeup_gpes +EXPORT_SYMBOL vmlinux 0x857a784e napi_gro_receive +EXPORT_SYMBOL vmlinux 0x858b878f input_allocate_device +EXPORT_SYMBOL vmlinux 0x85b5e625 rfkill_set_states +EXPORT_SYMBOL vmlinux 0x85d0f384 pci_enable_device +EXPORT_SYMBOL vmlinux 0x85df9b6c strsep +EXPORT_SYMBOL vmlinux 0x85efc7e0 zero_pfn +EXPORT_SYMBOL vmlinux 0x86001776 bdi_set_max_ratio +EXPORT_SYMBOL vmlinux 0x8602feb7 pagecache_write_begin +EXPORT_SYMBOL vmlinux 0x861e22a4 acpi_map_cpu +EXPORT_SYMBOL vmlinux 0x86305bab nf_ct_attach +EXPORT_SYMBOL vmlinux 0x8632386a d_delete +EXPORT_SYMBOL vmlinux 0x865029ac __hw_addr_sync +EXPORT_SYMBOL vmlinux 0x86588053 gen_pool_destroy +EXPORT_SYMBOL vmlinux 0x865c2206 __sk_dst_check +EXPORT_SYMBOL vmlinux 0x865d263c tcp_sockets_allocated +EXPORT_SYMBOL vmlinux 0x8664f62e cpufreq_update_policy +EXPORT_SYMBOL vmlinux 0x868acba5 get_options +EXPORT_SYMBOL vmlinux 0x868b7280 tcp_setsockopt +EXPORT_SYMBOL vmlinux 0x868e42a0 d_instantiate +EXPORT_SYMBOL vmlinux 0x86a2358c sock_no_sendpage +EXPORT_SYMBOL vmlinux 0x86a4889a kmalloc_order_trace +EXPORT_SYMBOL vmlinux 0x86a809ee __ethtool_get_settings +EXPORT_SYMBOL vmlinux 0x86c28b05 dev_mc_add_excl +EXPORT_SYMBOL vmlinux 0x86d30322 dcb_getapp +EXPORT_SYMBOL vmlinux 0x86da303a dentry_path_raw +EXPORT_SYMBOL vmlinux 0x86dd3288 empty_aops +EXPORT_SYMBOL vmlinux 0x86f406b2 vme_register_bridge +EXPORT_SYMBOL vmlinux 0x86fb9b05 bitmap_parse_user +EXPORT_SYMBOL vmlinux 0x8703c20f __sync_dirty_buffer +EXPORT_SYMBOL vmlinux 0x871c0a7e fiemap_check_flags +EXPORT_SYMBOL vmlinux 0x87348c9d skb_checksum_help +EXPORT_SYMBOL vmlinux 0x876dafc3 ec_write +EXPORT_SYMBOL vmlinux 0x877de68b kmalloc_caches +EXPORT_SYMBOL vmlinux 0x8784b583 filp_open +EXPORT_SYMBOL vmlinux 0x878ab3ce sysctl_tcp_adv_win_scale +EXPORT_SYMBOL vmlinux 0x878cd015 wait_for_completion_interruptible_timeout +EXPORT_SYMBOL vmlinux 0x87931071 bdi_register +EXPORT_SYMBOL vmlinux 0x87963c5b pci_bus_alloc_resource +EXPORT_SYMBOL vmlinux 0x8798e453 __tracepoint_kfree +EXPORT_SYMBOL vmlinux 0x879b9f03 dev_get_flags +EXPORT_SYMBOL vmlinux 0x87a88a10 free_page_put_link +EXPORT_SYMBOL vmlinux 0x87aaddf8 wrmsr_safe_regs_on_cpu +EXPORT_SYMBOL vmlinux 0x87ad815c __set_page_dirty_nobuffers +EXPORT_SYMBOL vmlinux 0x87b86946 km_new_mapping +EXPORT_SYMBOL vmlinux 0x87ea0f9d ipv6_getsockopt +EXPORT_SYMBOL vmlinux 0x87ef2b99 serio_open +EXPORT_SYMBOL vmlinux 0x87f89ce0 _raw_read_unlock_irqrestore +EXPORT_SYMBOL vmlinux 0x87ffa952 scsi_track_queue_full +EXPORT_SYMBOL vmlinux 0x882023e9 rtnl_set_sk_err +EXPORT_SYMBOL vmlinux 0x882ba254 pci_iomap_range +EXPORT_SYMBOL vmlinux 0x882bb6e6 ip_generic_getfrag +EXPORT_SYMBOL vmlinux 0x8844e6ef netif_wake_subqueue +EXPORT_SYMBOL vmlinux 0x88579287 iterate_mounts +EXPORT_SYMBOL vmlinux 0x889e96b5 fib_default_rule_add +EXPORT_SYMBOL vmlinux 0x88a70f1c __generic_file_write_iter +EXPORT_SYMBOL vmlinux 0x88bb586c remap_vmalloc_range_partial +EXPORT_SYMBOL vmlinux 0x88bff11b __dev_get_by_index +EXPORT_SYMBOL vmlinux 0x88c694fc tty_port_open +EXPORT_SYMBOL vmlinux 0x88f16b57 genphy_aneg_done +EXPORT_SYMBOL vmlinux 0x892875d0 inode_init_always +EXPORT_SYMBOL vmlinux 0x892aadbf qdisc_class_hash_grow +EXPORT_SYMBOL vmlinux 0x892b26a0 set_memory_nx +EXPORT_SYMBOL vmlinux 0x893c06e8 dmaengine_get_unmap_data +EXPORT_SYMBOL vmlinux 0x8943bb97 pci_fixup_cardbus +EXPORT_SYMBOL vmlinux 0x8953f8ff __tracepoint_kmem_cache_alloc +EXPORT_SYMBOL vmlinux 0x896c47fb __mutex_init +EXPORT_SYMBOL vmlinux 0x896ec924 d_obtain_root +EXPORT_SYMBOL vmlinux 0x8999751a dma_free_attrs +EXPORT_SYMBOL vmlinux 0x899f359b swiotlb_unmap_sg_attrs +EXPORT_SYMBOL vmlinux 0x89afe34e __kfifo_dma_in_prepare +EXPORT_SYMBOL vmlinux 0x89ce6c1c xfrm_state_unregister_afinfo +EXPORT_SYMBOL vmlinux 0x89d5538d fb_pad_aligned_buffer +EXPORT_SYMBOL vmlinux 0x89da5076 elevator_alloc +EXPORT_SYMBOL vmlinux 0x8a071f4a get_user_pages_locked +EXPORT_SYMBOL vmlinux 0x8a0b12c6 complete_all +EXPORT_SYMBOL vmlinux 0x8a107ff6 xfrm_init_state +EXPORT_SYMBOL vmlinux 0x8a1ab4ee timeval_to_jiffies +EXPORT_SYMBOL vmlinux 0x8a1c5455 blk_stack_limits +EXPORT_SYMBOL vmlinux 0x8a490c90 rfkill_set_sw_state +EXPORT_SYMBOL vmlinux 0x8a501b70 load_nls_default +EXPORT_SYMBOL vmlinux 0x8a510a86 pci_request_regions +EXPORT_SYMBOL vmlinux 0x8a51d565 quota_send_warning +EXPORT_SYMBOL vmlinux 0x8a6944f9 percpu_counter_set +EXPORT_SYMBOL vmlinux 0x8a6ef3c1 netdev_class_remove_file_ns +EXPORT_SYMBOL vmlinux 0x8a7d1c31 high_memory +EXPORT_SYMBOL vmlinux 0x8a80d7a5 acpi_error +EXPORT_SYMBOL vmlinux 0x8a99a016 mempool_free_slab +EXPORT_SYMBOL vmlinux 0x8ab7927b d_alloc_pseudo +EXPORT_SYMBOL vmlinux 0x8af00022 jbd2_journal_clear_err +EXPORT_SYMBOL vmlinux 0x8af80d0f __frontswap_store +EXPORT_SYMBOL vmlinux 0x8b18496f __copy_to_user_ll +EXPORT_SYMBOL vmlinux 0x8b27e7ca swiotlb_dma_supported +EXPORT_SYMBOL vmlinux 0x8b35e873 sg_last +EXPORT_SYMBOL vmlinux 0x8b43159b register_cpu_notifier +EXPORT_SYMBOL vmlinux 0x8b50ea72 splice_direct_to_actor +EXPORT_SYMBOL vmlinux 0x8b5d7b81 cdev_del +EXPORT_SYMBOL vmlinux 0x8b618d08 overflowuid +EXPORT_SYMBOL vmlinux 0x8b7c6f9f request_key +EXPORT_SYMBOL vmlinux 0x8b8059bd in_group_p +EXPORT_SYMBOL vmlinux 0x8b89e1ad unlock_two_nondirectories +EXPORT_SYMBOL vmlinux 0x8b989cf9 acpi_bus_can_wakeup +EXPORT_SYMBOL vmlinux 0x8bb299ac pnp_device_detach +EXPORT_SYMBOL vmlinux 0x8bb2a851 scsi_report_bus_reset +EXPORT_SYMBOL vmlinux 0x8bb811fe eth_type_trans +EXPORT_SYMBOL vmlinux 0x8bbe831d textsearch_destroy +EXPORT_SYMBOL vmlinux 0x8bf96146 mmc_free_host +EXPORT_SYMBOL vmlinux 0x8c0dcb0f filemap_fdatawait_range +EXPORT_SYMBOL vmlinux 0x8c183cbe iowrite16 +EXPORT_SYMBOL vmlinux 0x8c48564a jbd2_journal_abort +EXPORT_SYMBOL vmlinux 0x8c4fdf45 km_policy_expired +EXPORT_SYMBOL vmlinux 0x8c637d43 irq_cpu_rmap_add +EXPORT_SYMBOL vmlinux 0x8c74608e pnp_disable_dev +EXPORT_SYMBOL vmlinux 0x8c8e5e64 pci_msix_vec_count +EXPORT_SYMBOL vmlinux 0x8c9d48ec jbd2_journal_file_inode +EXPORT_SYMBOL vmlinux 0x8cc79cab iowrite16_rep +EXPORT_SYMBOL vmlinux 0x8cda8029 xen_clear_irq_pending +EXPORT_SYMBOL vmlinux 0x8d05d06d elv_register_queue +EXPORT_SYMBOL vmlinux 0x8d272b8b pci_choose_state +EXPORT_SYMBOL vmlinux 0x8d322c0c set_create_files_as +EXPORT_SYMBOL vmlinux 0x8d525e1c mmc_can_reset +EXPORT_SYMBOL vmlinux 0x8d551bef sysctl_tcp_rmem +EXPORT_SYMBOL vmlinux 0x8d55bb8a qid_eq +EXPORT_SYMBOL vmlinux 0x8d5bf968 dma_alloc_attrs +EXPORT_SYMBOL vmlinux 0x8d68f8a5 pci_scan_root_bus +EXPORT_SYMBOL vmlinux 0x8d6b2ce1 radix_tree_delete_item +EXPORT_SYMBOL vmlinux 0x8d6f81b4 __div64_32 +EXPORT_SYMBOL vmlinux 0x8d72495b __getnstimeofday64 +EXPORT_SYMBOL vmlinux 0x8d73278e hex_asc_upper +EXPORT_SYMBOL vmlinux 0x8d7c1cb3 xfrm_policy_walk +EXPORT_SYMBOL vmlinux 0x8d838d91 ida_remove +EXPORT_SYMBOL vmlinux 0x8d846745 ab3100_event_unregister +EXPORT_SYMBOL vmlinux 0x8d899a2f jbd2_journal_force_commit_nested +EXPORT_SYMBOL vmlinux 0x8d8d96c6 acpi_get_sleep_type_data +EXPORT_SYMBOL vmlinux 0x8d8e85b5 ip6_xmit +EXPORT_SYMBOL vmlinux 0x8da1a3cb acpi_remove_interface +EXPORT_SYMBOL vmlinux 0x8daf8c42 dql_init +EXPORT_SYMBOL vmlinux 0x8dc6e564 restore_processor_state +EXPORT_SYMBOL vmlinux 0x8de33c2e set_user_nice +EXPORT_SYMBOL vmlinux 0x8de40d19 phy_ethtool_set_eee +EXPORT_SYMBOL vmlinux 0x8e002cda acpi_remove_gpe_block +EXPORT_SYMBOL vmlinux 0x8e082688 _raw_read_lock +EXPORT_SYMBOL vmlinux 0x8e0d66f4 __tracepoint_kmalloc +EXPORT_SYMBOL vmlinux 0x8e153198 xfrm_state_lookup_byspi +EXPORT_SYMBOL vmlinux 0x8e7658ef cdrom_mode_sense +EXPORT_SYMBOL vmlinux 0x8e8541dc mdiobus_unregister +EXPORT_SYMBOL vmlinux 0x8e888ec3 cpumask_next_and +EXPORT_SYMBOL vmlinux 0x8ea93031 tty_driver_flush_buffer +EXPORT_SYMBOL vmlinux 0x8eaf2a5f vga_switcheroo_unregister_handler +EXPORT_SYMBOL vmlinux 0x8eb545de inet_sk_rx_dst_set +EXPORT_SYMBOL vmlinux 0x8eb7f3b0 param_array_ops +EXPORT_SYMBOL vmlinux 0x8ed469a1 dma_release_from_coherent +EXPORT_SYMBOL vmlinux 0x8f051a17 vme_dma_list_exec +EXPORT_SYMBOL vmlinux 0x8f2703b7 wbinvd_on_all_cpus +EXPORT_SYMBOL vmlinux 0x8f289fdd __ht_create_irq +EXPORT_SYMBOL vmlinux 0x8f604902 file_open_root +EXPORT_SYMBOL vmlinux 0x8f649f74 gen_new_estimator +EXPORT_SYMBOL vmlinux 0x8f7c6d86 elv_dispatch_add_tail +EXPORT_SYMBOL vmlinux 0x8f7d87f2 inet_csk_reset_keepalive_timer +EXPORT_SYMBOL vmlinux 0x8f8133ef inet_frag_kill +EXPORT_SYMBOL vmlinux 0x8f81af57 xfrm_policy_delete +EXPORT_SYMBOL vmlinux 0x8f937154 vfs_symlink +EXPORT_SYMBOL vmlinux 0x8f9c199c __get_user_2 +EXPORT_SYMBOL vmlinux 0x8f9c53fb inet6_del_offload +EXPORT_SYMBOL vmlinux 0x8fa354f7 make_bad_inode +EXPORT_SYMBOL vmlinux 0x8fb505b4 netdev_notice +EXPORT_SYMBOL vmlinux 0x8fdeac5e skb_find_text +EXPORT_SYMBOL vmlinux 0x8ff4079b pv_irq_ops +EXPORT_SYMBOL vmlinux 0x8ffd81c2 tcp_v4_conn_request +EXPORT_SYMBOL vmlinux 0x8ffdb3b8 crc16 +EXPORT_SYMBOL vmlinux 0x90079305 skb_orphan_partial +EXPORT_SYMBOL vmlinux 0x90199a8f pci_release_selected_regions +EXPORT_SYMBOL vmlinux 0x90230e8d bio_integrity_clone +EXPORT_SYMBOL vmlinux 0x902bdc85 mfd_add_devices +EXPORT_SYMBOL vmlinux 0x904409c6 acpi_set_firmware_waking_vector +EXPORT_SYMBOL vmlinux 0x904c72f8 mipi_dsi_driver_unregister +EXPORT_SYMBOL vmlinux 0x905c6557 skb_copy_bits +EXPORT_SYMBOL vmlinux 0x90695906 vme_free_consistent +EXPORT_SYMBOL vmlinux 0x9072d292 inet6_del_protocol +EXPORT_SYMBOL vmlinux 0x90833261 serial8250_set_isa_configurator +EXPORT_SYMBOL vmlinux 0x90995b79 unregister_binfmt +EXPORT_SYMBOL vmlinux 0x90a7230c __seq_open_private +EXPORT_SYMBOL vmlinux 0x90b2f734 inet_select_addr +EXPORT_SYMBOL vmlinux 0x90bbd639 blk_init_tags +EXPORT_SYMBOL vmlinux 0x90bc074f pfifo_qdisc_ops +EXPORT_SYMBOL vmlinux 0x90bed5a5 phy_start +EXPORT_SYMBOL vmlinux 0x90c1d44a pci_setup_cardbus +EXPORT_SYMBOL vmlinux 0x90c5e819 kstrtoll_from_user +EXPORT_SYMBOL vmlinux 0x90c7bc11 __neigh_set_probe_once +EXPORT_SYMBOL vmlinux 0x90cfcb78 unregister_tcf_proto_ops +EXPORT_SYMBOL vmlinux 0x90d86b6a posix_acl_to_xattr +EXPORT_SYMBOL vmlinux 0x90e412ab seq_file_path +EXPORT_SYMBOL vmlinux 0x91152b5c qdisc_list_del +EXPORT_SYMBOL vmlinux 0x911cd4ca pci_bus_find_capability +EXPORT_SYMBOL vmlinux 0x911ecd95 bio_map_kern +EXPORT_SYMBOL vmlinux 0x912461a3 scsi_change_queue_depth +EXPORT_SYMBOL vmlinux 0x91424319 vga_switcheroo_unregister_client +EXPORT_SYMBOL vmlinux 0x91463b1d kstrtos16 +EXPORT_SYMBOL vmlinux 0x915fba56 i2c_smbus_read_byte +EXPORT_SYMBOL vmlinux 0x91607d95 set_memory_wb +EXPORT_SYMBOL vmlinux 0x91715312 sprintf +EXPORT_SYMBOL vmlinux 0x91731ac9 vfs_getxattr_alloc +EXPORT_SYMBOL vmlinux 0x9186c8b8 iommu_tbl_range_alloc +EXPORT_SYMBOL vmlinux 0x918c123e km_is_alive +EXPORT_SYMBOL vmlinux 0x91967e8e xen_selfballoon_init +EXPORT_SYMBOL vmlinux 0x91ab9259 blk_queue_max_write_same_sectors +EXPORT_SYMBOL vmlinux 0x91af6379 tty_port_destroy +EXPORT_SYMBOL vmlinux 0x91d854e5 xfrm_dst_ifdown +EXPORT_SYMBOL vmlinux 0x91ee9e5a twl6040_get_vibralr_status +EXPORT_SYMBOL vmlinux 0x91f4ea53 downgrade_write +EXPORT_SYMBOL vmlinux 0x92177505 scsi_rescan_device +EXPORT_SYMBOL vmlinux 0x921d5670 serio_rescan +EXPORT_SYMBOL vmlinux 0x92233d5d fs_bio_set +EXPORT_SYMBOL vmlinux 0x922a6a09 rtnetlink_put_metrics +EXPORT_SYMBOL vmlinux 0x9234a6f5 __neigh_create +EXPORT_SYMBOL vmlinux 0x923b1276 dmaengine_get +EXPORT_SYMBOL vmlinux 0x925e0924 __wait_on_bit +EXPORT_SYMBOL vmlinux 0x92897e3d default_idle +EXPORT_SYMBOL vmlinux 0x92932c35 nf_log_packet +EXPORT_SYMBOL vmlinux 0x92a9c60c time_to_tm +EXPORT_SYMBOL vmlinux 0x92aff3b3 __set_page_dirty_buffers +EXPORT_SYMBOL vmlinux 0x92b8c897 pcim_iounmap +EXPORT_SYMBOL vmlinux 0x92e4d2fe flow_hash_from_keys +EXPORT_SYMBOL vmlinux 0x92ed5fcc __frontswap_test +EXPORT_SYMBOL vmlinux 0x92f6767f lg_local_lock +EXPORT_SYMBOL vmlinux 0x92fa5abb vme_lm_detach +EXPORT_SYMBOL vmlinux 0x92ff34fa input_grab_device +EXPORT_SYMBOL vmlinux 0x93002127 simple_setattr +EXPORT_SYMBOL vmlinux 0x9305f8e6 cpufreq_get +EXPORT_SYMBOL vmlinux 0x930bc1f3 generic_write_end +EXPORT_SYMBOL vmlinux 0x93215e1d __kfifo_skip_r +EXPORT_SYMBOL vmlinux 0x932493a8 iosf_mbi_read +EXPORT_SYMBOL vmlinux 0x932983bf __dynamic_netdev_dbg +EXPORT_SYMBOL vmlinux 0x932c7a26 __getblk_slow +EXPORT_SYMBOL vmlinux 0x93448c57 screen_info +EXPORT_SYMBOL vmlinux 0x935aea54 mmc_gpiod_request_ro +EXPORT_SYMBOL vmlinux 0x937733e3 qid_valid +EXPORT_SYMBOL vmlinux 0x93b3fc74 register_dcbevent_notifier +EXPORT_SYMBOL vmlinux 0x93b7deb7 tcp_check_req +EXPORT_SYMBOL vmlinux 0x93ea6d1c param_ops_uint +EXPORT_SYMBOL vmlinux 0x93f56b7e generic_file_direct_write +EXPORT_SYMBOL vmlinux 0x93fca811 __get_free_pages +EXPORT_SYMBOL vmlinux 0x9402a6a5 scsilun_to_int +EXPORT_SYMBOL vmlinux 0x9408b336 dentry_update_name_case +EXPORT_SYMBOL vmlinux 0x940f9cf6 kblockd_schedule_delayed_work +EXPORT_SYMBOL vmlinux 0x942e4a33 pci_match_id +EXPORT_SYMBOL vmlinux 0x9432f853 sk_net_capable +EXPORT_SYMBOL vmlinux 0x945a768f sb_set_blocksize +EXPORT_SYMBOL vmlinux 0x945b2176 nf_register_hooks +EXPORT_SYMBOL vmlinux 0x9473c877 down_read +EXPORT_SYMBOL vmlinux 0x947d0919 devm_iounmap +EXPORT_SYMBOL vmlinux 0x94816189 swiotlb_dma_mapping_error +EXPORT_SYMBOL vmlinux 0x94961283 vunmap +EXPORT_SYMBOL vmlinux 0x94994cda swiotlb_unmap_sg +EXPORT_SYMBOL vmlinux 0x949fe7cb unregister_framebuffer +EXPORT_SYMBOL vmlinux 0x94a16fe2 mmc_gpiod_request_cd +EXPORT_SYMBOL vmlinux 0x94ae5b67 dm_put_device +EXPORT_SYMBOL vmlinux 0x94b0df8a jbd2_log_start_commit +EXPORT_SYMBOL vmlinux 0x94b20aad rawv6_mh_filter_register +EXPORT_SYMBOL vmlinux 0x94b541b5 cpu_active_mask +EXPORT_SYMBOL vmlinux 0x94dad5f0 blk_end_request +EXPORT_SYMBOL vmlinux 0x94eea794 getnstimeofday64 +EXPORT_SYMBOL vmlinux 0x950c20d4 __ww_mutex_lock_interruptible +EXPORT_SYMBOL vmlinux 0x951a21b9 mmc_wait_for_app_cmd +EXPORT_SYMBOL vmlinux 0x95395301 acpi_exception +EXPORT_SYMBOL vmlinux 0x953c650e devfreq_resume_device +EXPORT_SYMBOL vmlinux 0x9545af6d tasklet_init +EXPORT_SYMBOL vmlinux 0x954ea448 mnt_drop_write_file +EXPORT_SYMBOL vmlinux 0x9553eb93 fixed_phy_update_state +EXPORT_SYMBOL vmlinux 0x955b1089 padata_free +EXPORT_SYMBOL vmlinux 0x95610ff1 elv_dispatch_sort +EXPORT_SYMBOL vmlinux 0x95671be2 submit_bh +EXPORT_SYMBOL vmlinux 0x9573d633 simple_transaction_set +EXPORT_SYMBOL vmlinux 0x95a7ae75 tcp_getsockopt +EXPORT_SYMBOL vmlinux 0x95bd5e40 netdev_lower_get_next +EXPORT_SYMBOL vmlinux 0x95bd6e26 acpi_install_sci_handler +EXPORT_SYMBOL vmlinux 0x95c84141 pci_disable_link_state_locked +EXPORT_SYMBOL vmlinux 0x95fb61bd netlink_rcv_skb +EXPORT_SYMBOL vmlinux 0x96057e88 buffer_migrate_page +EXPORT_SYMBOL vmlinux 0x96080879 km_state_notify +EXPORT_SYMBOL vmlinux 0x960dfaf5 radix_tree_tag_get +EXPORT_SYMBOL vmlinux 0x962e7d8a blk_queue_invalidate_tags +EXPORT_SYMBOL vmlinux 0x9642bfdb md_error +EXPORT_SYMBOL vmlinux 0x9645bf75 netif_napi_add +EXPORT_SYMBOL vmlinux 0x96573b80 __kfifo_dma_in_finish_r +EXPORT_SYMBOL vmlinux 0x96613fea nd_btt_probe +EXPORT_SYMBOL vmlinux 0x967b0deb phy_write_mmd_indirect +EXPORT_SYMBOL vmlinux 0x96898769 sysfs_format_mac +EXPORT_SYMBOL vmlinux 0x969c9cba tcp_try_fastopen +EXPORT_SYMBOL vmlinux 0x96a3d28e pcibios_resource_to_bus +EXPORT_SYMBOL vmlinux 0x96b0ce99 i8042_install_filter +EXPORT_SYMBOL vmlinux 0x96cd2b04 scsi_sense_key_string +EXPORT_SYMBOL vmlinux 0x96cf5261 eth_mac_addr +EXPORT_SYMBOL vmlinux 0x96d28d6e gen_pool_alloc +EXPORT_SYMBOL vmlinux 0x96db9703 eisa_driver_register +EXPORT_SYMBOL vmlinux 0x96eacfea proc_symlink +EXPORT_SYMBOL vmlinux 0x96fc1f64 insert_inode_locked +EXPORT_SYMBOL vmlinux 0x96fde893 bitmap_close_sync +EXPORT_SYMBOL vmlinux 0x96fefd16 dev_get_iflink +EXPORT_SYMBOL vmlinux 0x970936da dquot_reclaim_space_nodirty +EXPORT_SYMBOL vmlinux 0x9717b8cc blk_mq_unique_tag +EXPORT_SYMBOL vmlinux 0x973fa82e register_acpi_notifier +EXPORT_SYMBOL vmlinux 0x9754ec10 radix_tree_preload +EXPORT_SYMBOL vmlinux 0x97938763 mmc_put_card +EXPORT_SYMBOL vmlinux 0x97999817 rfkill_set_hw_state +EXPORT_SYMBOL vmlinux 0x979c5323 bioset_integrity_create +EXPORT_SYMBOL vmlinux 0x979e7a5d netlink_ack +EXPORT_SYMBOL vmlinux 0x97b4500c __tracepoint_kmem_cache_free +EXPORT_SYMBOL vmlinux 0x97c5bd0a acpi_unload_parent_table +EXPORT_SYMBOL vmlinux 0x97cf6ac5 linkwatch_fire_event +EXPORT_SYMBOL vmlinux 0x97dcef29 acpi_processor_unregister_performance +EXPORT_SYMBOL vmlinux 0x97de0ddd acpi_install_gpe_block +EXPORT_SYMBOL vmlinux 0x97f5b6a1 seq_putc +EXPORT_SYMBOL vmlinux 0x9820b644 warn_slowpath_fmt_taint +EXPORT_SYMBOL vmlinux 0x984b25e0 md_unregister_thread +EXPORT_SYMBOL vmlinux 0x98516efc write_inode_now +EXPORT_SYMBOL vmlinux 0x9865b03f drop_super +EXPORT_SYMBOL vmlinux 0x986a7292 fbcon_rotate_ud +EXPORT_SYMBOL vmlinux 0x986c28f8 try_module_get +EXPORT_SYMBOL vmlinux 0x986e6135 fb_pad_unaligned_buffer +EXPORT_SYMBOL vmlinux 0x9878745c _atomic_dec_and_lock +EXPORT_SYMBOL vmlinux 0x9889f027 load_nls +EXPORT_SYMBOL vmlinux 0x988ed85d set_memory_x +EXPORT_SYMBOL vmlinux 0x98956534 mmc_wait_for_req +EXPORT_SYMBOL vmlinux 0x989e753c skb_append_datato_frags +EXPORT_SYMBOL vmlinux 0x98a9d7c6 i2c_smbus_read_byte_data +EXPORT_SYMBOL vmlinux 0x98aaa681 input_unregister_handler +EXPORT_SYMBOL vmlinux 0x98e68eca cancel_delayed_work +EXPORT_SYMBOL vmlinux 0x98f0e43c mdiobus_register +EXPORT_SYMBOL vmlinux 0x9913c1da pm860x_bulk_write +EXPORT_SYMBOL vmlinux 0x9917e61c mmc_align_data_size +EXPORT_SYMBOL vmlinux 0x99233c32 cpu_core_map +EXPORT_SYMBOL vmlinux 0x9939eba0 backlight_unregister_notifier +EXPORT_SYMBOL vmlinux 0x99517682 udp_encap_enable +EXPORT_SYMBOL vmlinux 0x99580149 ata_port_printk +EXPORT_SYMBOL vmlinux 0x99591a7a ipv6_ext_hdr +EXPORT_SYMBOL vmlinux 0x995bf28c __nla_reserve_nohdr +EXPORT_SYMBOL vmlinux 0x997caffa scsi_host_set_state +EXPORT_SYMBOL vmlinux 0x9994c0ca ps2_is_keyboard_id +EXPORT_SYMBOL vmlinux 0x999e8297 vfree +EXPORT_SYMBOL vmlinux 0x99ae84d3 security_inode_notifysecctx +EXPORT_SYMBOL vmlinux 0x99b18696 iw_handler_set_thrspy +EXPORT_SYMBOL vmlinux 0x99c14484 napi_gro_frags +EXPORT_SYMBOL vmlinux 0x99caa36b mb_cache_entry_free +EXPORT_SYMBOL vmlinux 0x99cdc86b sysctl_tcp_reordering +EXPORT_SYMBOL vmlinux 0x99daa9bf try_offline_node +EXPORT_SYMBOL vmlinux 0x99ea4c51 netdev_emerg +EXPORT_SYMBOL vmlinux 0x9a1dfd65 strpbrk +EXPORT_SYMBOL vmlinux 0x9a1fc4b4 jiffies_to_timeval +EXPORT_SYMBOL vmlinux 0x9a25eb13 save_mount_options +EXPORT_SYMBOL vmlinux 0x9a36a5b7 blk_queue_softirq_done +EXPORT_SYMBOL vmlinux 0x9a3d4d7a dm_ratelimit_state +EXPORT_SYMBOL vmlinux 0x9a554bbc uart_get_baud_rate +EXPORT_SYMBOL vmlinux 0x9a6a83f9 cmos_lock +EXPORT_SYMBOL vmlinux 0x9a81acc2 blk_mq_can_queue +EXPORT_SYMBOL vmlinux 0x9a94327d security_inode_readlink +EXPORT_SYMBOL vmlinux 0x9a951a64 mutex_lock_killable +EXPORT_SYMBOL vmlinux 0x9ac93657 alloc_xenballooned_pages +EXPORT_SYMBOL vmlinux 0x9aeb07e8 vme_lm_attach +EXPORT_SYMBOL vmlinux 0x9aedbcdf tty_hangup +EXPORT_SYMBOL vmlinux 0x9af0e1ec vme_lm_request +EXPORT_SYMBOL vmlinux 0x9b33e0d7 unregister_dcbevent_notifier +EXPORT_SYMBOL vmlinux 0x9b37265d generic_cont_expand_simple +EXPORT_SYMBOL vmlinux 0x9b388444 get_zeroed_page +EXPORT_SYMBOL vmlinux 0x9b41f542 sk_stop_timer +EXPORT_SYMBOL vmlinux 0x9b4832c7 netif_set_real_num_tx_queues +EXPORT_SYMBOL vmlinux 0x9b6eb137 ksize +EXPORT_SYMBOL vmlinux 0x9b90dd46 serial8250_register_8250_port +EXPORT_SYMBOL vmlinux 0x9b9e05f9 alloc_cpu_rmap +EXPORT_SYMBOL vmlinux 0x9ba146bf wait_for_completion_io_timeout +EXPORT_SYMBOL vmlinux 0x9ba7089d argv_split +EXPORT_SYMBOL vmlinux 0x9bacfc74 generic_readlink +EXPORT_SYMBOL vmlinux 0x9bbe88b3 flex_array_put +EXPORT_SYMBOL vmlinux 0x9bd300d1 input_get_keycode +EXPORT_SYMBOL vmlinux 0x9be57824 skb_abort_seq_read +EXPORT_SYMBOL vmlinux 0x9be7bde4 security_tun_dev_attach +EXPORT_SYMBOL vmlinux 0x9befa13e cros_ec_check_result +EXPORT_SYMBOL vmlinux 0x9bfab5cf debugfs_create_automount +EXPORT_SYMBOL vmlinux 0x9c130171 nobh_truncate_page +EXPORT_SYMBOL vmlinux 0x9c19a0b3 dma_declare_coherent_memory +EXPORT_SYMBOL vmlinux 0x9c2c944a __copy_from_user_ll_nocache_nozero +EXPORT_SYMBOL vmlinux 0x9c30b4a7 revalidate_disk +EXPORT_SYMBOL vmlinux 0x9c491f60 sg_alloc_table +EXPORT_SYMBOL vmlinux 0x9c608842 clear_page_dirty_for_io +EXPORT_SYMBOL vmlinux 0x9c77fd44 cleancache_register_ops +EXPORT_SYMBOL vmlinux 0x9c7c7f88 genlmsg_multicast_allns +EXPORT_SYMBOL vmlinux 0x9cab34a6 rfkill_set_led_trigger_name +EXPORT_SYMBOL vmlinux 0x9cb0cfcf iov_iter_bvec +EXPORT_SYMBOL vmlinux 0x9cbdeed5 __sk_mem_reclaim +EXPORT_SYMBOL vmlinux 0x9cc96523 cros_ec_cmd_xfer +EXPORT_SYMBOL vmlinux 0x9cce1827 sched_autogroup_detach +EXPORT_SYMBOL vmlinux 0x9ce169af neigh_proc_dointvec_ms_jiffies +EXPORT_SYMBOL vmlinux 0x9d0d6206 unregister_netdevice_notifier +EXPORT_SYMBOL vmlinux 0x9d1ef6b2 vfs_fsync_range +EXPORT_SYMBOL vmlinux 0x9d2e4d0f blk_mq_complete_request +EXPORT_SYMBOL vmlinux 0x9d33ef5e acpi_enable +EXPORT_SYMBOL vmlinux 0x9d3aa376 blk_iopoll_init +EXPORT_SYMBOL vmlinux 0x9d523c0e __destroy_inode +EXPORT_SYMBOL vmlinux 0x9d69ea9e sync_mapping_buffers +EXPORT_SYMBOL vmlinux 0x9d71b77e acpi_device_set_power +EXPORT_SYMBOL vmlinux 0x9d97b020 register_md_personality +EXPORT_SYMBOL vmlinux 0x9d98b826 scsi_execute_req_flags +EXPORT_SYMBOL vmlinux 0x9d9ee650 call_netdevice_notifiers +EXPORT_SYMBOL vmlinux 0x9da1475c dump_page +EXPORT_SYMBOL vmlinux 0x9da35ab4 fd_install +EXPORT_SYMBOL vmlinux 0x9db36cdf d_find_alias +EXPORT_SYMBOL vmlinux 0x9dc9d9ac devm_ioport_map +EXPORT_SYMBOL vmlinux 0x9dfbc26d mmc_can_discard +EXPORT_SYMBOL vmlinux 0x9dfe7307 lz4_decompress_unknownoutputsize +EXPORT_SYMBOL vmlinux 0x9e01e1f2 __pagevec_lru_add +EXPORT_SYMBOL vmlinux 0x9e0c711d vzalloc_node +EXPORT_SYMBOL vmlinux 0x9e167028 blkdev_fsync +EXPORT_SYMBOL vmlinux 0x9e30e27b i2c_register_driver +EXPORT_SYMBOL vmlinux 0x9e363b6b acpi_disable_gpe +EXPORT_SYMBOL vmlinux 0x9e3db8ac param_get_byte +EXPORT_SYMBOL vmlinux 0x9e4faeef dm_io_client_destroy +EXPORT_SYMBOL vmlinux 0x9e56656d twl6040_reg_read +EXPORT_SYMBOL vmlinux 0x9e5ea993 param_set_charp +EXPORT_SYMBOL vmlinux 0x9e61bb05 set_freezable +EXPORT_SYMBOL vmlinux 0x9e620974 lock_fb_info +EXPORT_SYMBOL vmlinux 0x9e64fbfe rtc_cmos_read +EXPORT_SYMBOL vmlinux 0x9e763530 reciprocal_value +EXPORT_SYMBOL vmlinux 0x9e7b57dc netdev_upper_get_next_dev_rcu +EXPORT_SYMBOL vmlinux 0x9e7d6bd0 __udelay +EXPORT_SYMBOL vmlinux 0x9e843973 dquot_enable +EXPORT_SYMBOL vmlinux 0x9ea0c91f proc_doulongvec_minmax +EXPORT_SYMBOL vmlinux 0x9ea73929 __tracepoint_fence_emit +EXPORT_SYMBOL vmlinux 0x9eaf1c99 pnp_possible_config +EXPORT_SYMBOL vmlinux 0x9eb991ef xfrm_unregister_km +EXPORT_SYMBOL vmlinux 0x9ebd4c04 adjust_resource +EXPORT_SYMBOL vmlinux 0x9ec73906 d_rehash +EXPORT_SYMBOL vmlinux 0x9ef27403 input_event +EXPORT_SYMBOL vmlinux 0x9efd9d21 kernel_param_unlock +EXPORT_SYMBOL vmlinux 0x9f1efce1 blk_rq_map_user +EXPORT_SYMBOL vmlinux 0x9f28c2f0 sdev_enable_disk_events +EXPORT_SYMBOL vmlinux 0x9f299835 ndo_dflt_fdb_add +EXPORT_SYMBOL vmlinux 0x9f2f7a8c eth_header_parse +EXPORT_SYMBOL vmlinux 0x9f3e8957 request_key_async_with_auxdata +EXPORT_SYMBOL vmlinux 0x9f46ced8 __sw_hweight64 +EXPORT_SYMBOL vmlinux 0x9f5b89ba xfrm_input_register_afinfo +EXPORT_SYMBOL vmlinux 0x9f650b30 set_pages_array_wc +EXPORT_SYMBOL vmlinux 0x9f984513 strrchr +EXPORT_SYMBOL vmlinux 0x9fbc9f21 scsi_unblock_requests +EXPORT_SYMBOL vmlinux 0x9fbd6b91 d_find_any_alias +EXPORT_SYMBOL vmlinux 0x9fce4d35 skb_push +EXPORT_SYMBOL vmlinux 0x9fd7cda1 flex_array_prealloc +EXPORT_SYMBOL vmlinux 0x9fdecc31 unregister_netdevice_many +EXPORT_SYMBOL vmlinux 0x9fea6473 pcie_set_readrq +EXPORT_SYMBOL vmlinux 0x9ff790b9 iterate_supers_type +EXPORT_SYMBOL vmlinux 0x9ffa3a75 netdev_max_backlog +EXPORT_SYMBOL vmlinux 0xa0095fc6 devm_gpio_free +EXPORT_SYMBOL vmlinux 0xa00aca2a dql_completed +EXPORT_SYMBOL vmlinux 0xa00ae016 block_read_full_page +EXPORT_SYMBOL vmlinux 0xa0223b70 kmap +EXPORT_SYMBOL vmlinux 0xa0436e98 in6addr_linklocal_allnodes +EXPORT_SYMBOL vmlinux 0xa04a01bd qdisc_class_hash_insert +EXPORT_SYMBOL vmlinux 0xa04afabe devm_get_gpiod_from_child +EXPORT_SYMBOL vmlinux 0xa04e7315 always_delete_dentry +EXPORT_SYMBOL vmlinux 0xa05aca62 ps2_init +EXPORT_SYMBOL vmlinux 0xa05c03df mempool_kmalloc +EXPORT_SYMBOL vmlinux 0xa06df9e1 __kfifo_dma_out_finish_r +EXPORT_SYMBOL vmlinux 0xa0779d6d kernel_getsockname +EXPORT_SYMBOL vmlinux 0xa07ed110 xz_dec_init +EXPORT_SYMBOL vmlinux 0xa084749a __bitmap_or +EXPORT_SYMBOL vmlinux 0xa08ee55f t10_pi_type1_ip +EXPORT_SYMBOL vmlinux 0xa09c08df vga_switcheroo_get_client_state +EXPORT_SYMBOL vmlinux 0xa0b04675 vmalloc_32 +EXPORT_SYMBOL vmlinux 0xa0ba5e21 jbd2_journal_init_dev +EXPORT_SYMBOL vmlinux 0xa0c0637e dquot_set_dqinfo +EXPORT_SYMBOL vmlinux 0xa0dad88e netdev_adjacent_get_private +EXPORT_SYMBOL vmlinux 0xa0dcbcca pci_dev_get +EXPORT_SYMBOL vmlinux 0xa0ebd14c sysctl_tcp_mem +EXPORT_SYMBOL vmlinux 0xa0ee4d45 tc_classify +EXPORT_SYMBOL vmlinux 0xa0fbac79 wake_up_bit +EXPORT_SYMBOL vmlinux 0xa1008b9a dev_trans_start +EXPORT_SYMBOL vmlinux 0xa108eb4d sysctl_optmem_max +EXPORT_SYMBOL vmlinux 0xa1205063 scsi_eh_restore_cmnd +EXPORT_SYMBOL vmlinux 0xa120d33c tty_unregister_ldisc +EXPORT_SYMBOL vmlinux 0xa1415618 twl6030_interrupt_unmask +EXPORT_SYMBOL vmlinux 0xa1484818 max8998_write_reg +EXPORT_SYMBOL vmlinux 0xa14b3f5d flex_array_free_parts +EXPORT_SYMBOL vmlinux 0xa14f3d8c ewma_add +EXPORT_SYMBOL vmlinux 0xa167d011 sk_filter +EXPORT_SYMBOL vmlinux 0xa17d6845 get_super_thawed +EXPORT_SYMBOL vmlinux 0xa18ad6ae generic_file_llseek_size +EXPORT_SYMBOL vmlinux 0xa19a786a vm_insert_pfn +EXPORT_SYMBOL vmlinux 0xa19ce8fd netdev_lower_dev_get_private +EXPORT_SYMBOL vmlinux 0xa1b759ce fb_add_videomode +EXPORT_SYMBOL vmlinux 0xa1c76e0a _cond_resched +EXPORT_SYMBOL vmlinux 0xa1cecbae ipv6_setsockopt +EXPORT_SYMBOL vmlinux 0xa2016f2c scsi_verify_blk_ioctl +EXPORT_SYMBOL vmlinux 0xa20282ab fddi_change_mtu +EXPORT_SYMBOL vmlinux 0xa209451c bitmap_fold +EXPORT_SYMBOL vmlinux 0xa20f7de5 inet_offloads +EXPORT_SYMBOL vmlinux 0xa237e695 skb_unlink +EXPORT_SYMBOL vmlinux 0xa26193ed dev_base_lock +EXPORT_SYMBOL vmlinux 0xa27aa000 mipi_dsi_dcs_set_tear_off +EXPORT_SYMBOL vmlinux 0xa2848c50 ecryptfs_get_auth_tok_key +EXPORT_SYMBOL vmlinux 0xa28d081a pci_fixup_device +EXPORT_SYMBOL vmlinux 0xa29e1af7 padata_start +EXPORT_SYMBOL vmlinux 0xa29fbed1 zerocopy_sg_from_iter +EXPORT_SYMBOL vmlinux 0xa2cfcaed key_alloc +EXPORT_SYMBOL vmlinux 0xa2f96866 nf_ip6_checksum +EXPORT_SYMBOL vmlinux 0xa30f2994 set_pages_array_wb +EXPORT_SYMBOL vmlinux 0xa31bdf07 vme_master_set +EXPORT_SYMBOL vmlinux 0xa32683e2 blk_mq_stop_hw_queues +EXPORT_SYMBOL vmlinux 0xa34035dc fb_get_buffer_offset +EXPORT_SYMBOL vmlinux 0xa3439713 dquot_commit +EXPORT_SYMBOL vmlinux 0xa34fcb2d mempool_create_node +EXPORT_SYMBOL vmlinux 0xa350a8f8 set_memory_array_uc +EXPORT_SYMBOL vmlinux 0xa36f6323 netif_stacked_transfer_operstate +EXPORT_SYMBOL vmlinux 0xa36f8f83 phy_ethtool_gset +EXPORT_SYMBOL vmlinux 0xa37e78b6 flex_array_get +EXPORT_SYMBOL vmlinux 0xa37f1a3b memory_cgrp_subsys +EXPORT_SYMBOL vmlinux 0xa393e88d pci_bus_write_config_dword +EXPORT_SYMBOL vmlinux 0xa3b9f2a5 tcf_em_tree_destroy +EXPORT_SYMBOL vmlinux 0xa3c2ec0a skb_vlan_pop +EXPORT_SYMBOL vmlinux 0xa3dcbfd3 register_sysctl_paths +EXPORT_SYMBOL vmlinux 0xa3dfffaf arp_tbl +EXPORT_SYMBOL vmlinux 0xa3ef6da8 tty_port_tty_set +EXPORT_SYMBOL vmlinux 0xa3fb86b1 generic_block_bmap +EXPORT_SYMBOL vmlinux 0xa4128646 cad_pid +EXPORT_SYMBOL vmlinux 0xa416c72d nd_namespace_blk_validate +EXPORT_SYMBOL vmlinux 0xa43921d4 stop_tty +EXPORT_SYMBOL vmlinux 0xa43b1297 vscnprintf +EXPORT_SYMBOL vmlinux 0xa468c80a xfrm_user_policy +EXPORT_SYMBOL vmlinux 0xa46d89aa dev_add_pack +EXPORT_SYMBOL vmlinux 0xa4701e9e timekeeping_inject_offset +EXPORT_SYMBOL vmlinux 0xa47b9451 param_set_uint +EXPORT_SYMBOL vmlinux 0xa47beceb scsi_init_io +EXPORT_SYMBOL vmlinux 0xa488a91c dcb_ieee_setapp +EXPORT_SYMBOL vmlinux 0xa48be931 loop_register_transfer +EXPORT_SYMBOL vmlinux 0xa48dc07c skb_recv_datagram +EXPORT_SYMBOL vmlinux 0xa4b45ea5 out_of_line_wait_on_bit_lock +EXPORT_SYMBOL vmlinux 0xa4b94fea iowrite8_rep +EXPORT_SYMBOL vmlinux 0xa4c6c875 netif_tx_wake_queue +EXPORT_SYMBOL vmlinux 0xa4cfef0c kthread_stop +EXPORT_SYMBOL vmlinux 0xa4d4f0e6 global_cache_flush +EXPORT_SYMBOL vmlinux 0xa4d7a132 input_register_handle +EXPORT_SYMBOL vmlinux 0xa51cdfe8 __FIXADDR_TOP +EXPORT_SYMBOL vmlinux 0xa51ffa99 kmem_cache_alloc +EXPORT_SYMBOL vmlinux 0xa5427414 try_to_writeback_inodes_sb +EXPORT_SYMBOL vmlinux 0xa5526619 rb_insert_color +EXPORT_SYMBOL vmlinux 0xa5752509 t10_pi_type1_crc +EXPORT_SYMBOL vmlinux 0xa58958b0 jbd2_trans_will_send_data_barrier +EXPORT_SYMBOL vmlinux 0xa598e29c vesa_modes +EXPORT_SYMBOL vmlinux 0xa5a12006 agp_generic_destroy_page +EXPORT_SYMBOL vmlinux 0xa5a36aa2 key_link +EXPORT_SYMBOL vmlinux 0xa5bc8a68 iov_iter_fault_in_readable +EXPORT_SYMBOL vmlinux 0xa5d67732 __getblk_gfp +EXPORT_SYMBOL vmlinux 0xa601bb53 setup_new_exec +EXPORT_SYMBOL vmlinux 0xa62c42fc serio_unregister_child_port +EXPORT_SYMBOL vmlinux 0xa62e6e4f acpi_get_table_with_size +EXPORT_SYMBOL vmlinux 0xa63d85ab slhc_remember +EXPORT_SYMBOL vmlinux 0xa64bca3b icmpv6_send +EXPORT_SYMBOL vmlinux 0xa664198e iov_iter_npages +EXPORT_SYMBOL vmlinux 0xa675804c utf8s_to_utf16s +EXPORT_SYMBOL vmlinux 0xa681fe88 generate_random_uuid +EXPORT_SYMBOL vmlinux 0xa6921943 unlock_buffer +EXPORT_SYMBOL vmlinux 0xa6970398 __kfifo_to_user_r +EXPORT_SYMBOL vmlinux 0xa6a93792 kernel_sock_ioctl +EXPORT_SYMBOL vmlinux 0xa6b10997 pci_bus_put +EXPORT_SYMBOL vmlinux 0xa6bbd805 __wake_up +EXPORT_SYMBOL vmlinux 0xa6bd63ca acpi_bios_error +EXPORT_SYMBOL vmlinux 0xa6bf132f elv_add_request +EXPORT_SYMBOL vmlinux 0xa6c231e7 pci_bus_write_config_byte +EXPORT_SYMBOL vmlinux 0xa6ffec60 woken_wake_function +EXPORT_SYMBOL vmlinux 0xa70fabbe release_evntsel_nmi +EXPORT_SYMBOL vmlinux 0xa72810c7 phy_register_fixup_for_id +EXPORT_SYMBOL vmlinux 0xa735db59 prandom_u32 +EXPORT_SYMBOL vmlinux 0xa74337e4 sock_wmalloc +EXPORT_SYMBOL vmlinux 0xa75e936a inet_del_offload +EXPORT_SYMBOL vmlinux 0xa7701fe2 fb_firmware_edid +EXPORT_SYMBOL vmlinux 0xa774d359 jbd2_journal_start_reserved +EXPORT_SYMBOL vmlinux 0xa788f1a0 i8253_lock +EXPORT_SYMBOL vmlinux 0xa7a6430d elv_rb_find +EXPORT_SYMBOL vmlinux 0xa7b37c7c fbcon_set_bitops +EXPORT_SYMBOL vmlinux 0xa7b63ea2 netdev_err +EXPORT_SYMBOL vmlinux 0xa7be91cc bio_reset +EXPORT_SYMBOL vmlinux 0xa7cf6c2f atomic64_dec_return_cx8 +EXPORT_SYMBOL vmlinux 0xa7f73398 nf_getsockopt +EXPORT_SYMBOL vmlinux 0xa805d7c3 inode_owner_or_capable +EXPORT_SYMBOL vmlinux 0xa8159d0f inet6_offloads +EXPORT_SYMBOL vmlinux 0xa816bc21 __tty_alloc_driver +EXPORT_SYMBOL vmlinux 0xa8232c78 strtobool +EXPORT_SYMBOL vmlinux 0xa833db13 kernel_getsockopt +EXPORT_SYMBOL vmlinux 0xa843805a get_unused_fd_flags +EXPORT_SYMBOL vmlinux 0xa84cceeb mntput +EXPORT_SYMBOL vmlinux 0xa8619d21 mmc_flush_cache +EXPORT_SYMBOL vmlinux 0xa8721b97 system_state +EXPORT_SYMBOL vmlinux 0xa887bc93 inet6_ioctl +EXPORT_SYMBOL vmlinux 0xa8c99ca7 bio_alloc_pages +EXPORT_SYMBOL vmlinux 0xa8f2360f alloc_etherdev_mqs +EXPORT_SYMBOL vmlinux 0xa8fef7bb security_unix_may_send +EXPORT_SYMBOL vmlinux 0xa9168676 xmit_recursion +EXPORT_SYMBOL vmlinux 0xa9338f2b xfrm_state_walk +EXPORT_SYMBOL vmlinux 0xa94aa060 __generic_block_fiemap +EXPORT_SYMBOL vmlinux 0xa95224fd __skb_flow_get_ports +EXPORT_SYMBOL vmlinux 0xa96e7645 pci_bus_write_config_word +EXPORT_SYMBOL vmlinux 0xa976957d bitmap_remap +EXPORT_SYMBOL vmlinux 0xa983b50d skb_copy_and_csum_datagram_msg +EXPORT_SYMBOL vmlinux 0xa9939bc3 get_user_pages_unlocked +EXPORT_SYMBOL vmlinux 0xa9a8e17f arch_phys_wc_add +EXPORT_SYMBOL vmlinux 0xa9a9d6cb vfs_setpos +EXPORT_SYMBOL vmlinux 0xa9c63b69 security_xfrm_policy_free +EXPORT_SYMBOL vmlinux 0xa9d305a7 md_done_sync +EXPORT_SYMBOL vmlinux 0xa9e854ec alloc_buffer_head +EXPORT_SYMBOL vmlinux 0xaa0e24f6 __blockdev_direct_IO +EXPORT_SYMBOL vmlinux 0xaa26e41f _raw_read_lock_irq +EXPORT_SYMBOL vmlinux 0xaa5bd08d __pv_queued_spin_lock_slowpath +EXPORT_SYMBOL vmlinux 0xaa678d30 task_tgid_nr_ns +EXPORT_SYMBOL vmlinux 0xaa6901ac __kfifo_out_r +EXPORT_SYMBOL vmlinux 0xaa6f23ad rfkill_get_led_trigger_name +EXPORT_SYMBOL vmlinux 0xaa8fea18 acpi_processor_register_performance +EXPORT_SYMBOL vmlinux 0xaab640fc phy_start_interrupts +EXPORT_SYMBOL vmlinux 0xaab691b7 input_mt_drop_unused +EXPORT_SYMBOL vmlinux 0xaabdcbec gnet_stats_start_copy +EXPORT_SYMBOL vmlinux 0xaad0ae78 __bitmap_shift_right +EXPORT_SYMBOL vmlinux 0xaad6d92f rfkill_init_sw_state +EXPORT_SYMBOL vmlinux 0xaae4f02d swiotlb_sync_single_for_device +EXPORT_SYMBOL vmlinux 0xaae8ab0e acpi_bus_power_manageable +EXPORT_SYMBOL vmlinux 0xaaf1e176 devm_free_irq +EXPORT_SYMBOL vmlinux 0xaafdc258 strcasecmp +EXPORT_SYMBOL vmlinux 0xab0f9ca5 __xfrm_decode_session +EXPORT_SYMBOL vmlinux 0xab1a52bf input_release_device +EXPORT_SYMBOL vmlinux 0xab23c179 put_page +EXPORT_SYMBOL vmlinux 0xab551fad acpi_get_data_full +EXPORT_SYMBOL vmlinux 0xab600421 probe_irq_off +EXPORT_SYMBOL vmlinux 0xab65ed80 set_memory_uc +EXPORT_SYMBOL vmlinux 0xab694444 bsearch +EXPORT_SYMBOL vmlinux 0xab6bde28 sysctl_max_syn_backlog +EXPORT_SYMBOL vmlinux 0xab770678 rdmsr_safe_regs_on_cpu +EXPORT_SYMBOL vmlinux 0xab781570 fb_get_options +EXPORT_SYMBOL vmlinux 0xab96b787 xfrm4_prepare_output +EXPORT_SYMBOL vmlinux 0xab99d3e7 vfs_path_lookup +EXPORT_SYMBOL vmlinux 0xaba3ad0c radix_tree_gang_lookup_tag +EXPORT_SYMBOL vmlinux 0xabaefd79 blkdev_issue_zeroout +EXPORT_SYMBOL vmlinux 0xabb20d4d blk_queue_dma_alignment +EXPORT_SYMBOL vmlinux 0xabc6dd63 cpufreq_sysfs_create_file +EXPORT_SYMBOL vmlinux 0xabcaa577 free_anon_bdev +EXPORT_SYMBOL vmlinux 0xabce9604 set_page_dirty +EXPORT_SYMBOL vmlinux 0xabdba80d inet_frag_destroy +EXPORT_SYMBOL vmlinux 0xabe559eb pneigh_enqueue +EXPORT_SYMBOL vmlinux 0xabfa74dc ppp_input +EXPORT_SYMBOL vmlinux 0xabfcb4c3 flush_delayed_work +EXPORT_SYMBOL vmlinux 0xabfe498a dcbnl_ieee_notify +EXPORT_SYMBOL vmlinux 0xac0ba8c1 blk_iopoll_disable +EXPORT_SYMBOL vmlinux 0xac1a55be unregister_reboot_notifier +EXPORT_SYMBOL vmlinux 0xac230be1 sk_receive_skb +EXPORT_SYMBOL vmlinux 0xac246b57 free_netdev +EXPORT_SYMBOL vmlinux 0xac2db6e9 isapnp_protocol +EXPORT_SYMBOL vmlinux 0xac382ce9 max8998_bulk_read +EXPORT_SYMBOL vmlinux 0xac398912 flex_array_clear +EXPORT_SYMBOL vmlinux 0xac4161af bio_chain +EXPORT_SYMBOL vmlinux 0xac4e0a6a tcp_v4_md5_hash_skb +EXPORT_SYMBOL vmlinux 0xac7d7fac genphy_config_init +EXPORT_SYMBOL vmlinux 0xac8bd18b nf_log_bind_pf +EXPORT_SYMBOL vmlinux 0xac9bf69a get_agp_version +EXPORT_SYMBOL vmlinux 0xac9c9ec1 nd_device_register +EXPORT_SYMBOL vmlinux 0xacab29b7 seq_hlist_start_percpu +EXPORT_SYMBOL vmlinux 0xacb99769 ida_destroy +EXPORT_SYMBOL vmlinux 0xacbee86d prepare_binprm +EXPORT_SYMBOL vmlinux 0xaccabc6a in4_pton +EXPORT_SYMBOL vmlinux 0xacd81eb3 jbd2_inode_cache +EXPORT_SYMBOL vmlinux 0xacf4d843 match_strdup +EXPORT_SYMBOL vmlinux 0xad03aa19 scsi_is_host_device +EXPORT_SYMBOL vmlinux 0xad0413d4 match_hex +EXPORT_SYMBOL vmlinux 0xad0bc6f7 skb_queue_tail +EXPORT_SYMBOL vmlinux 0xad13853d ppp_unit_number +EXPORT_SYMBOL vmlinux 0xad13c689 acpi_os_execute +EXPORT_SYMBOL vmlinux 0xad1fda76 dev_load +EXPORT_SYMBOL vmlinux 0xad3cefd0 blk_queue_update_dma_alignment +EXPORT_SYMBOL vmlinux 0xad661778 phy_detach +EXPORT_SYMBOL vmlinux 0xad698f77 dqstats +EXPORT_SYMBOL vmlinux 0xad6e4bb6 mempool_free +EXPORT_SYMBOL vmlinux 0xad6f79e1 scsicam_bios_param +EXPORT_SYMBOL vmlinux 0xad84bef8 dm_table_event +EXPORT_SYMBOL vmlinux 0xad966670 pm_vt_switch_unregister +EXPORT_SYMBOL vmlinux 0xad978acf scsi_host_lookup +EXPORT_SYMBOL vmlinux 0xadb3ca46 blk_queue_io_min +EXPORT_SYMBOL vmlinux 0xadc36d0d blk_queue_dma_pad +EXPORT_SYMBOL vmlinux 0xadce1dce sock_wfree +EXPORT_SYMBOL vmlinux 0xadf223e4 unmap_underlying_metadata +EXPORT_SYMBOL vmlinux 0xadfdfcef __bitmap_andnot +EXPORT_SYMBOL vmlinux 0xae044bc7 panic_notifier_list +EXPORT_SYMBOL vmlinux 0xae41c3ba tcf_hash_check +EXPORT_SYMBOL vmlinux 0xae638de8 pcie_capability_clear_and_set_word +EXPORT_SYMBOL vmlinux 0xae729e59 security_req_classify_flow +EXPORT_SYMBOL vmlinux 0xae77a595 radix_tree_gang_lookup_slot +EXPORT_SYMBOL vmlinux 0xae78ff52 md_register_thread +EXPORT_SYMBOL vmlinux 0xae7f3c59 inode_permission +EXPORT_SYMBOL vmlinux 0xae85a27e radix_tree_lookup +EXPORT_SYMBOL vmlinux 0xae8d129c __dax_fault +EXPORT_SYMBOL vmlinux 0xae97d790 _dev_info +EXPORT_SYMBOL vmlinux 0xaea976a8 acpi_check_resource_conflict +EXPORT_SYMBOL vmlinux 0xaebe807c input_mt_sync_frame +EXPORT_SYMBOL vmlinux 0xaec655c7 alloc_pages_exact +EXPORT_SYMBOL vmlinux 0xaedee191 tcp_get_md5sig_pool +EXPORT_SYMBOL vmlinux 0xaee7dc7d scsi_device_lookup +EXPORT_SYMBOL vmlinux 0xaf1fffc2 cpufreq_global_kobject +EXPORT_SYMBOL vmlinux 0xaf2a848c migrate_page +EXPORT_SYMBOL vmlinux 0xaf302ddb simple_lookup +EXPORT_SYMBOL vmlinux 0xaf337909 input_set_keycode +EXPORT_SYMBOL vmlinux 0xaf3dd7dc scsi_logging_level +EXPORT_SYMBOL vmlinux 0xaf4953de scsi_execute +EXPORT_SYMBOL vmlinux 0xaf4b1540 acpi_get_irq_routing_table +EXPORT_SYMBOL vmlinux 0xaf4cdfb6 scsi_eh_finish_cmd +EXPORT_SYMBOL vmlinux 0xaf611eac amd_nb_misc_ids +EXPORT_SYMBOL vmlinux 0xaf780f7c phy_mac_interrupt +EXPORT_SYMBOL vmlinux 0xaf98c994 blk_queue_physical_block_size +EXPORT_SYMBOL vmlinux 0xaf99240d pci_find_next_bus +EXPORT_SYMBOL vmlinux 0xafab7575 clear_inode +EXPORT_SYMBOL vmlinux 0xafb32902 __wait_on_bit_lock +EXPORT_SYMBOL vmlinux 0xafb5904b qdisc_create_dflt +EXPORT_SYMBOL vmlinux 0xafb6d348 uart_resume_port +EXPORT_SYMBOL vmlinux 0xb0031025 seq_put_decimal_ll +EXPORT_SYMBOL vmlinux 0xb00d3cca vga_put +EXPORT_SYMBOL vmlinux 0xb0123acc proc_remove +EXPORT_SYMBOL vmlinux 0xb01b1db8 intel_gtt_insert_sg_entries +EXPORT_SYMBOL vmlinux 0xb01b6254 pnp_device_attach +EXPORT_SYMBOL vmlinux 0xb03060e1 sock_init_data +EXPORT_SYMBOL vmlinux 0xb030ffe8 end_buffer_write_sync +EXPORT_SYMBOL vmlinux 0xb03953da tty_port_carrier_raised +EXPORT_SYMBOL vmlinux 0xb0445900 zpool_unregister_driver +EXPORT_SYMBOL vmlinux 0xb0451d4a search_binary_handler +EXPORT_SYMBOL vmlinux 0xb05fc310 sysctl_rmem_max +EXPORT_SYMBOL vmlinux 0xb067c3f9 bio_alloc_bioset +EXPORT_SYMBOL vmlinux 0xb06d1c9e I_BDEV +EXPORT_SYMBOL vmlinux 0xb0805be9 kern_path_create +EXPORT_SYMBOL vmlinux 0xb0830124 agp_bind_memory +EXPORT_SYMBOL vmlinux 0xb08df5f6 input_mt_destroy_slots +EXPORT_SYMBOL vmlinux 0xb0960f85 udp_ioctl +EXPORT_SYMBOL vmlinux 0xb0a0da0c rational_best_approximation +EXPORT_SYMBOL vmlinux 0xb0d7d714 sock_no_recvmsg +EXPORT_SYMBOL vmlinux 0xb0e10781 get_option +EXPORT_SYMBOL vmlinux 0xb0eb41ff iommu_tbl_range_free +EXPORT_SYMBOL vmlinux 0xb0f1238f tcp_shutdown +EXPORT_SYMBOL vmlinux 0xb121390a probe_irq_on +EXPORT_SYMBOL vmlinux 0xb12cbacb fb_unregister_client +EXPORT_SYMBOL vmlinux 0xb13d982c sock_no_ioctl +EXPORT_SYMBOL vmlinux 0xb143d62f blk_mq_init_queue +EXPORT_SYMBOL vmlinux 0xb1453d7d scsi_device_quiesce +EXPORT_SYMBOL vmlinux 0xb15cb614 security_xfrm_policy_alloc +EXPORT_SYMBOL vmlinux 0xb1645a2e sg_free_table +EXPORT_SYMBOL vmlinux 0xb16c000d register_md_cluster_operations +EXPORT_SYMBOL vmlinux 0xb172ca55 force_sig +EXPORT_SYMBOL vmlinux 0xb17d107a alloc_fcdev +EXPORT_SYMBOL vmlinux 0xb17e241f tcp_md5_do_del +EXPORT_SYMBOL vmlinux 0xb187b3a8 lg_lock_init +EXPORT_SYMBOL vmlinux 0xb19c5b84 tc_classify_compat +EXPORT_SYMBOL vmlinux 0xb1a7fe9b path_get +EXPORT_SYMBOL vmlinux 0xb1c3a01a oops_in_progress +EXPORT_SYMBOL vmlinux 0xb1cf44df fb_find_best_mode +EXPORT_SYMBOL vmlinux 0xb1cfad22 rdmsr_on_cpu +EXPORT_SYMBOL vmlinux 0xb1e2f623 uart_update_timeout +EXPORT_SYMBOL vmlinux 0xb2188ac1 blk_mq_alloc_tag_set +EXPORT_SYMBOL vmlinux 0xb219d56c wbinvd_on_cpu +EXPORT_SYMBOL vmlinux 0xb22ef449 jbd2_journal_blocks_per_page +EXPORT_SYMBOL vmlinux 0xb263cb65 current_task +EXPORT_SYMBOL vmlinux 0xb2682405 utf8_to_utf32 +EXPORT_SYMBOL vmlinux 0xb28d9315 inet_stream_connect +EXPORT_SYMBOL vmlinux 0xb2950fb3 from_kuid_munged +EXPORT_SYMBOL vmlinux 0xb2af329e ilookup5_nowait +EXPORT_SYMBOL vmlinux 0xb2be6e92 netdev_stats_to_stats64 +EXPORT_SYMBOL vmlinux 0xb2d144c6 tty_throttle +EXPORT_SYMBOL vmlinux 0xb2d48a2e queue_work_on +EXPORT_SYMBOL vmlinux 0xb2d5a552 complete +EXPORT_SYMBOL vmlinux 0xb2f0a450 pnpacpi_protocol +EXPORT_SYMBOL vmlinux 0xb2f608f9 agp_generic_free_by_type +EXPORT_SYMBOL vmlinux 0xb2f74fb6 intel_gmch_remove +EXPORT_SYMBOL vmlinux 0xb2fd5ceb __put_user_4 +EXPORT_SYMBOL vmlinux 0xb31cb361 block_write_full_page +EXPORT_SYMBOL vmlinux 0xb3284531 acpi_dbg_layer +EXPORT_SYMBOL vmlinux 0xb32d7b7e radix_tree_tagged +EXPORT_SYMBOL vmlinux 0xb3399af0 input_mt_init_slots +EXPORT_SYMBOL vmlinux 0xb34af955 sock_rfree +EXPORT_SYMBOL vmlinux 0xb352177e find_first_bit +EXPORT_SYMBOL vmlinux 0xb38cf80b ip_options_rcv_srr +EXPORT_SYMBOL vmlinux 0xb3a812e7 block_invalidatepage +EXPORT_SYMBOL vmlinux 0xb3aef6c1 cfb_fillrect +EXPORT_SYMBOL vmlinux 0xb3c6749d devm_request_resource +EXPORT_SYMBOL vmlinux 0xb3d2c76d scsi_hostbyte_string +EXPORT_SYMBOL vmlinux 0xb3e0590d acpi_set_current_resources +EXPORT_SYMBOL vmlinux 0xb3e9db73 cfb_imageblit +EXPORT_SYMBOL vmlinux 0xb3f7646e kthread_should_stop +EXPORT_SYMBOL vmlinux 0xb4076177 vlan_vid_add +EXPORT_SYMBOL vmlinux 0xb40fca11 md_check_no_bitmap +EXPORT_SYMBOL vmlinux 0xb41c959d skb_queue_purge +EXPORT_SYMBOL vmlinux 0xb423dba1 console_blanked +EXPORT_SYMBOL vmlinux 0xb4390f9a mcount +EXPORT_SYMBOL vmlinux 0xb4519a8f string_escape_mem +EXPORT_SYMBOL vmlinux 0xb45578b8 memscan +EXPORT_SYMBOL vmlinux 0xb4709322 scsi_dev_info_add_list +EXPORT_SYMBOL vmlinux 0xb4752f32 pcie_capability_read_dword +EXPORT_SYMBOL vmlinux 0xb484c1d8 file_remove_privs +EXPORT_SYMBOL vmlinux 0xb48d6d12 sock_no_listen +EXPORT_SYMBOL vmlinux 0xb49bb318 devm_clk_put +EXPORT_SYMBOL vmlinux 0xb4f0c7bd vme_irq_handler +EXPORT_SYMBOL vmlinux 0xb4f274ba __d_drop +EXPORT_SYMBOL vmlinux 0xb4f9a30d flush_old_exec +EXPORT_SYMBOL vmlinux 0xb50681ee of_find_mipi_dsi_device_by_node +EXPORT_SYMBOL vmlinux 0xb5229392 cpu_sibling_map +EXPORT_SYMBOL vmlinux 0xb528f9f2 jbd2_journal_forget +EXPORT_SYMBOL vmlinux 0xb52ee8be intel_gtt_clear_range +EXPORT_SYMBOL vmlinux 0xb5415f32 xen_biovec_phys_mergeable +EXPORT_SYMBOL vmlinux 0xb54edd9f ip_ct_attach +EXPORT_SYMBOL vmlinux 0xb57343c2 frontswap_shrink +EXPORT_SYMBOL vmlinux 0xb5a459dc unregister_blkdev +EXPORT_SYMBOL vmlinux 0xb5aa7165 dma_pool_destroy +EXPORT_SYMBOL vmlinux 0xb5bf5355 blk_get_backing_dev_info +EXPORT_SYMBOL vmlinux 0xb5ca1c46 slhc_free +EXPORT_SYMBOL vmlinux 0xb5dbd16a __percpu_counter_sum +EXPORT_SYMBOL vmlinux 0xb605b5b3 do_SAK +EXPORT_SYMBOL vmlinux 0xb6244511 sg_init_one +EXPORT_SYMBOL vmlinux 0xb628a9f1 register_key_type +EXPORT_SYMBOL vmlinux 0xb641d407 devfreq_recommended_opp +EXPORT_SYMBOL vmlinux 0xb674a534 acpi_unmap_cpu +EXPORT_SYMBOL vmlinux 0xb678366f int_sqrt +EXPORT_SYMBOL vmlinux 0xb6896671 crc_t10dif +EXPORT_SYMBOL vmlinux 0xb6936ffe _bcd2bin +EXPORT_SYMBOL vmlinux 0xb697fd98 twl6040_get_pll +EXPORT_SYMBOL vmlinux 0xb6a68816 find_last_bit +EXPORT_SYMBOL vmlinux 0xb6d67a7b uart_write_wakeup +EXPORT_SYMBOL vmlinux 0xb6e41883 memcmp +EXPORT_SYMBOL vmlinux 0xb6eb300c scsi_add_device +EXPORT_SYMBOL vmlinux 0xb6ed1e53 strncpy +EXPORT_SYMBOL vmlinux 0xb7476802 __nd_iostat_start +EXPORT_SYMBOL vmlinux 0xb7488905 scsi_normalize_sense +EXPORT_SYMBOL vmlinux 0xb758b225 acpi_disable_event +EXPORT_SYMBOL vmlinux 0xb75af28e get_cached_acl +EXPORT_SYMBOL vmlinux 0xb75c1667 max8925_set_bits +EXPORT_SYMBOL vmlinux 0xb76dfb20 dev_vprintk_emit +EXPORT_SYMBOL vmlinux 0xb77131b1 psched_ratecfg_precompute +EXPORT_SYMBOL vmlinux 0xb7768eb0 noop_qdisc +EXPORT_SYMBOL vmlinux 0xb79ec15d mipi_dsi_create_packet +EXPORT_SYMBOL vmlinux 0xb7c37784 blk_dump_rq_flags +EXPORT_SYMBOL vmlinux 0xb7c7949b acpi_get_hp_hw_control_from_firmware +EXPORT_SYMBOL vmlinux 0xb7c7bc45 ndo_dflt_fdb_del +EXPORT_SYMBOL vmlinux 0xb7de535b skb_free_datagram +EXPORT_SYMBOL vmlinux 0xb7f55ecc atomic64_add_return_cx8 +EXPORT_SYMBOL vmlinux 0xb81960ca snprintf +EXPORT_SYMBOL vmlinux 0xb81e389a mpage_writepage +EXPORT_SYMBOL vmlinux 0xb8370414 sg_pcopy_from_buffer +EXPORT_SYMBOL vmlinux 0xb84b5620 alloc_anon_inode +EXPORT_SYMBOL vmlinux 0xb86f8f19 input_register_device +EXPORT_SYMBOL vmlinux 0xb874b87a __clzsi2 +EXPORT_SYMBOL vmlinux 0xb8854ac8 sg_copy_from_buffer +EXPORT_SYMBOL vmlinux 0xb8876835 dquot_transfer +EXPORT_SYMBOL vmlinux 0xb88d9725 __cleancache_invalidate_fs +EXPORT_SYMBOL vmlinux 0xb8ac0780 fsnotify_get_group +EXPORT_SYMBOL vmlinux 0xb8b6a76c __percpu_counter_add +EXPORT_SYMBOL vmlinux 0xb8b9c221 eth_header_cache +EXPORT_SYMBOL vmlinux 0xb8d4efb8 single_open +EXPORT_SYMBOL vmlinux 0xb8dd1c40 console_start +EXPORT_SYMBOL vmlinux 0xb8e7ce2c __put_user_8 +EXPORT_SYMBOL vmlinux 0xb8e877e7 kstrtouint_from_user +EXPORT_SYMBOL vmlinux 0xb8f34289 pagevec_lookup +EXPORT_SYMBOL vmlinux 0xb8fc4363 __neigh_for_each_release +EXPORT_SYMBOL vmlinux 0xb8fdcd10 mempool_resize +EXPORT_SYMBOL vmlinux 0xb916adbd dev_queue_xmit_accel +EXPORT_SYMBOL vmlinux 0xb92a15bb tcp_disconnect +EXPORT_SYMBOL vmlinux 0xb98babe4 generic_pipe_buf_release +EXPORT_SYMBOL vmlinux 0xb99a9887 unlink_framebuffer +EXPORT_SYMBOL vmlinux 0xb9b81460 ipv6_select_ident +EXPORT_SYMBOL vmlinux 0xb9bfe939 blk_finish_request +EXPORT_SYMBOL vmlinux 0xb9cd30c9 get_tz_trend +EXPORT_SYMBOL vmlinux 0xb9e8e2cc in6addr_sitelocal_allrouters +EXPORT_SYMBOL vmlinux 0xb9ec67a6 dquot_destroy +EXPORT_SYMBOL vmlinux 0xb9f5518e mb_cache_entry_get +EXPORT_SYMBOL vmlinux 0xb9feab6d genl_unregister_family +EXPORT_SYMBOL vmlinux 0xba064945 __find_get_block +EXPORT_SYMBOL vmlinux 0xba2693f4 bdput +EXPORT_SYMBOL vmlinux 0xba274419 __lock_buffer +EXPORT_SYMBOL vmlinux 0xba2d8594 ec_read +EXPORT_SYMBOL vmlinux 0xba3fbb82 acpi_bus_register_driver +EXPORT_SYMBOL vmlinux 0xba471ad2 mem_map +EXPORT_SYMBOL vmlinux 0xba486143 tcf_action_dump_1 +EXPORT_SYMBOL vmlinux 0xba4965c6 tcp_v4_md5_lookup +EXPORT_SYMBOL vmlinux 0xba497f13 loops_per_jiffy +EXPORT_SYMBOL vmlinux 0xba4bc3ed napi_complete_done +EXPORT_SYMBOL vmlinux 0xba548bf7 udp_disconnect +EXPORT_SYMBOL vmlinux 0xba572589 param_get_string +EXPORT_SYMBOL vmlinux 0xba9e86a1 param_ops_long +EXPORT_SYMBOL vmlinux 0xbab5ce9b set_binfmt +EXPORT_SYMBOL vmlinux 0xbac3cbf2 ns_to_timespec64 +EXPORT_SYMBOL vmlinux 0xbad21148 inet_twsk_deschedule +EXPORT_SYMBOL vmlinux 0xbaf7bd55 lro_flush_all +EXPORT_SYMBOL vmlinux 0xbb0540aa zlib_inflateReset +EXPORT_SYMBOL vmlinux 0xbb303a6b ilookup5 +EXPORT_SYMBOL vmlinux 0xbb325e02 make_kgid +EXPORT_SYMBOL vmlinux 0xbb35675b __bitmap_intersects +EXPORT_SYMBOL vmlinux 0xbb35906d kernel_sendpage +EXPORT_SYMBOL vmlinux 0xbb4954f8 ipv6_sock_mc_drop +EXPORT_SYMBOL vmlinux 0xbb5d343d xfrm_get_acqseq +EXPORT_SYMBOL vmlinux 0xbb635dcd __inet_hash +EXPORT_SYMBOL vmlinux 0xbb6481e9 udp_prot +EXPORT_SYMBOL vmlinux 0xbb93bbbb is_nd_btt +EXPORT_SYMBOL vmlinux 0xbb99125c get_default_font +EXPORT_SYMBOL vmlinux 0xbb997e79 mipi_dsi_dcs_nop +EXPORT_SYMBOL vmlinux 0xbba70a2d _raw_spin_unlock_bh +EXPORT_SYMBOL vmlinux 0xbba74254 key_invalidate +EXPORT_SYMBOL vmlinux 0xbbbb451a _raw_write_unlock_bh +EXPORT_SYMBOL vmlinux 0xbbc05412 __get_user_pages +EXPORT_SYMBOL vmlinux 0xbbd76e57 bit_wait +EXPORT_SYMBOL vmlinux 0xbbeb1ec6 ioremap_wt +EXPORT_SYMBOL vmlinux 0xbc03b59b generic_pipe_buf_get +EXPORT_SYMBOL vmlinux 0xbc043e43 check_disk_size_change +EXPORT_SYMBOL vmlinux 0xbc1297a3 pnp_unregister_card_driver +EXPORT_SYMBOL vmlinux 0xbc1c95fd ipv6_mc_check_mld +EXPORT_SYMBOL vmlinux 0xbc1dd4ee bio_integrity_enabled +EXPORT_SYMBOL vmlinux 0xbc2031de acpi_processor_get_bios_limit +EXPORT_SYMBOL vmlinux 0xbc435770 dump_stack +EXPORT_SYMBOL vmlinux 0xbc66f013 proc_create_data +EXPORT_SYMBOL vmlinux 0xbc67beab tcp_close +EXPORT_SYMBOL vmlinux 0xbc754101 filemap_fault +EXPORT_SYMBOL vmlinux 0xbcc308bb strnlen_user +EXPORT_SYMBOL vmlinux 0xbcc9c05b dev_uc_unsync +EXPORT_SYMBOL vmlinux 0xbcefc9bf update_devfreq +EXPORT_SYMBOL vmlinux 0xbcfb1300 cdrom_open +EXPORT_SYMBOL vmlinux 0xbd19f2da __napi_schedule +EXPORT_SYMBOL vmlinux 0xbd28e19d nvdimm_bus_unlock +EXPORT_SYMBOL vmlinux 0xbd333bf7 seq_read +EXPORT_SYMBOL vmlinux 0xbd3fdb10 vfs_whiteout +EXPORT_SYMBOL vmlinux 0xbd5237d1 generic_show_options +EXPORT_SYMBOL vmlinux 0xbd9074b1 blk_finish_plug +EXPORT_SYMBOL vmlinux 0xbdaf5b07 acpi_os_read_port +EXPORT_SYMBOL vmlinux 0xbdc6bce5 cancel_dirty_page +EXPORT_SYMBOL vmlinux 0xbdc974c5 padata_add_cpu +EXPORT_SYMBOL vmlinux 0xbdd872bd genphy_resume +EXPORT_SYMBOL vmlinux 0xbdd9617d __nla_reserve +EXPORT_SYMBOL vmlinux 0xbdea84a0 tcp_init_cgroup +EXPORT_SYMBOL vmlinux 0xbe043527 skb_seq_read +EXPORT_SYMBOL vmlinux 0xbe0e5118 nla_memcmp +EXPORT_SYMBOL vmlinux 0xbe1bb112 bitmap_onto +EXPORT_SYMBOL vmlinux 0xbe1e6593 devfreq_monitor_stop +EXPORT_SYMBOL vmlinux 0xbe20c293 dmam_alloc_coherent +EXPORT_SYMBOL vmlinux 0xbe3420db xfrm_register_type +EXPORT_SYMBOL vmlinux 0xbe36be2e km_state_expired +EXPORT_SYMBOL vmlinux 0xbe40c2ea mfd_cell_disable +EXPORT_SYMBOL vmlinux 0xbe4b6504 sock_no_bind +EXPORT_SYMBOL vmlinux 0xbe8c37d9 intel_scu_ipc_simple_command +EXPORT_SYMBOL vmlinux 0xbe9f94fc input_set_abs_params +EXPORT_SYMBOL vmlinux 0xbea42d85 netlink_kernel_release +EXPORT_SYMBOL vmlinux 0xbeb0d554 udp6_csum_init +EXPORT_SYMBOL vmlinux 0xbeb43d85 devm_gpiod_get_array_optional +EXPORT_SYMBOL vmlinux 0xbec30d05 x86_match_cpu +EXPORT_SYMBOL vmlinux 0xbec7a9d3 tty_register_driver +EXPORT_SYMBOL vmlinux 0xbee90f2f __kfifo_out_peek_r +EXPORT_SYMBOL vmlinux 0xbef43296 console_conditional_schedule +EXPORT_SYMBOL vmlinux 0xbef73309 dquot_quota_off +EXPORT_SYMBOL vmlinux 0xbf0ba66b phy_init_eee +EXPORT_SYMBOL vmlinux 0xbf1261ae dmam_pool_create +EXPORT_SYMBOL vmlinux 0xbf1ac3af jbd2_complete_transaction +EXPORT_SYMBOL vmlinux 0xbf270045 boot_cpu_data +EXPORT_SYMBOL vmlinux 0xbf5a6573 __xfrm_route_forward +EXPORT_SYMBOL vmlinux 0xbf763a41 nf_unregister_hooks +EXPORT_SYMBOL vmlinux 0xbf7fd2f5 schedule_timeout_killable +EXPORT_SYMBOL vmlinux 0xbf8b39e9 isapnp_present +EXPORT_SYMBOL vmlinux 0xbf8d6d33 module_layout +EXPORT_SYMBOL vmlinux 0xbf95e001 file_path +EXPORT_SYMBOL vmlinux 0xbf9bcc8d __cap_empty_set +EXPORT_SYMBOL vmlinux 0xbfb5965e cdrom_ioctl +EXPORT_SYMBOL vmlinux 0xbfc02663 tty_port_close_end +EXPORT_SYMBOL vmlinux 0xbfc177bc iowrite32_rep +EXPORT_SYMBOL vmlinux 0xbfee3ad5 loop_unregister_transfer +EXPORT_SYMBOL vmlinux 0xc01eed33 __copy_from_user_ll_nozero +EXPORT_SYMBOL vmlinux 0xc0261b7b blk_get_request +EXPORT_SYMBOL vmlinux 0xc02b9dc3 skb_store_bits +EXPORT_SYMBOL vmlinux 0xc03fa01a unlock_rename +EXPORT_SYMBOL vmlinux 0xc04d8ad7 abx500_set_register_interruptible +EXPORT_SYMBOL vmlinux 0xc052d740 mapping_tagged +EXPORT_SYMBOL vmlinux 0xc05a4187 phy_init_hw +EXPORT_SYMBOL vmlinux 0xc05e355f idr_alloc_cyclic +EXPORT_SYMBOL vmlinux 0xc068440e __kfifo_alloc +EXPORT_SYMBOL vmlinux 0xc06d3cf1 md_update_sb +EXPORT_SYMBOL vmlinux 0xc0763484 rfkill_blocked +EXPORT_SYMBOL vmlinux 0xc0823e4c twl_i2c_write +EXPORT_SYMBOL vmlinux 0xc09077e8 intel_gmch_probe +EXPORT_SYMBOL vmlinux 0xc091cbf2 simple_empty +EXPORT_SYMBOL vmlinux 0xc0929169 scsi_block_requests +EXPORT_SYMBOL vmlinux 0xc09383af sock_kfree_s +EXPORT_SYMBOL vmlinux 0xc0a3d105 find_next_bit +EXPORT_SYMBOL vmlinux 0xc0bc24b3 __netlink_dump_start +EXPORT_SYMBOL vmlinux 0xc0bd1c7e tcp_sync_mss +EXPORT_SYMBOL vmlinux 0xc0cd3b13 ___ratelimit +EXPORT_SYMBOL vmlinux 0xc0f8edb1 blk_pm_runtime_init +EXPORT_SYMBOL vmlinux 0xc10281d8 xfrm_alloc_spi +EXPORT_SYMBOL vmlinux 0xc11d8093 iov_shorten +EXPORT_SYMBOL vmlinux 0xc12ec3a6 dns_query +EXPORT_SYMBOL vmlinux 0xc1447977 dm_kcopyd_copy +EXPORT_SYMBOL vmlinux 0xc161d1fc vlan_vids_del_by_dev +EXPORT_SYMBOL vmlinux 0xc1764a79 mmc_stop_bkops +EXPORT_SYMBOL vmlinux 0xc183d8b8 mark_info_dirty +EXPORT_SYMBOL vmlinux 0xc185c612 __cleancache_invalidate_inode +EXPORT_SYMBOL vmlinux 0xc1b5e74b bmap +EXPORT_SYMBOL vmlinux 0xc1d8cfaf __fdget +EXPORT_SYMBOL vmlinux 0xc1e50c0b rtnl_nla_parse_ifla +EXPORT_SYMBOL vmlinux 0xc1f67199 xfrm_find_acq +EXPORT_SYMBOL vmlinux 0xc2023a1e blk_mq_kick_requeue_list +EXPORT_SYMBOL vmlinux 0xc2269148 d_hash_and_lookup +EXPORT_SYMBOL vmlinux 0xc236eb35 __free_pages +EXPORT_SYMBOL vmlinux 0xc23d419e blk_queue_resize_tags +EXPORT_SYMBOL vmlinux 0xc2424641 agp3_generic_cleanup +EXPORT_SYMBOL vmlinux 0xc2474c62 forget_all_cached_acls +EXPORT_SYMBOL vmlinux 0xc250dd81 netpoll_parse_options +EXPORT_SYMBOL vmlinux 0xc25e47f1 mark_page_accessed +EXPORT_SYMBOL vmlinux 0xc280a525 __copy_from_user_ll +EXPORT_SYMBOL vmlinux 0xc28325d5 input_mt_report_slot_state +EXPORT_SYMBOL vmlinux 0xc28f1f7f mipi_dsi_dcs_get_power_mode +EXPORT_SYMBOL vmlinux 0xc2a0f044 sock_alloc_file +EXPORT_SYMBOL vmlinux 0xc2a8d492 __sb_end_write +EXPORT_SYMBOL vmlinux 0xc2a92963 mipi_dsi_host_unregister +EXPORT_SYMBOL vmlinux 0xc2acc033 hex_dump_to_buffer +EXPORT_SYMBOL vmlinux 0xc2b1bda3 clocksource_change_rating +EXPORT_SYMBOL vmlinux 0xc2d3e8d6 genphy_config_aneg +EXPORT_SYMBOL vmlinux 0xc2d5773d pci_enable_msix +EXPORT_SYMBOL vmlinux 0xc2d711e1 krealloc +EXPORT_SYMBOL vmlinux 0xc2e4fb95 napi_get_frags +EXPORT_SYMBOL vmlinux 0xc2e587d1 reset_devices +EXPORT_SYMBOL vmlinux 0xc2f2e578 scsi_target_resume +EXPORT_SYMBOL vmlinux 0xc2f9c045 timespec_to_jiffies +EXPORT_SYMBOL vmlinux 0xc31b70ba scsi_cmd_get_serial +EXPORT_SYMBOL vmlinux 0xc323a823 scsi_print_command +EXPORT_SYMBOL vmlinux 0xc3349bf8 pci_release_region +EXPORT_SYMBOL vmlinux 0xc356f13e blk_queue_start_tag +EXPORT_SYMBOL vmlinux 0xc3575ecc skb_put +EXPORT_SYMBOL vmlinux 0xc371eca4 xfrm_state_delete +EXPORT_SYMBOL vmlinux 0xc37e156b tcf_unregister_action +EXPORT_SYMBOL vmlinux 0xc3aaf0a9 __put_user_1 +EXPORT_SYMBOL vmlinux 0xc3ba5b75 kthread_create_on_node +EXPORT_SYMBOL vmlinux 0xc3c2be91 mipi_dsi_packet_format_is_short +EXPORT_SYMBOL vmlinux 0xc3d87d26 to_nd_btt +EXPORT_SYMBOL vmlinux 0xc3fa6a59 memchr +EXPORT_SYMBOL vmlinux 0xc3ff81d7 devm_backlight_device_register +EXPORT_SYMBOL vmlinux 0xc40761c5 set_trace_device +EXPORT_SYMBOL vmlinux 0xc40fd124 ip6_route_output +EXPORT_SYMBOL vmlinux 0xc41f0516 node_states +EXPORT_SYMBOL vmlinux 0xc421063d inet_dgram_connect +EXPORT_SYMBOL vmlinux 0xc422c7f0 do_splice_to +EXPORT_SYMBOL vmlinux 0xc42c5fd8 dcache_readdir +EXPORT_SYMBOL vmlinux 0xc435ed50 proc_dointvec_minmax +EXPORT_SYMBOL vmlinux 0xc44a5a28 param_get_short +EXPORT_SYMBOL vmlinux 0xc45cf2f4 blk_queue_alignment_offset +EXPORT_SYMBOL vmlinux 0xc461488b __skb_gro_checksum_complete +EXPORT_SYMBOL vmlinux 0xc475180f dev_addr_init +EXPORT_SYMBOL vmlinux 0xc499ae1e kstrdup +EXPORT_SYMBOL vmlinux 0xc4a2e5f4 mipi_dsi_dcs_set_pixel_format +EXPORT_SYMBOL vmlinux 0xc4a414fc __invalidate_device +EXPORT_SYMBOL vmlinux 0xc4b07eb8 proc_mkdir_mode +EXPORT_SYMBOL vmlinux 0xc4d07f98 vfs_mknod +EXPORT_SYMBOL vmlinux 0xc4d72619 scsi_remove_target +EXPORT_SYMBOL vmlinux 0xc4ff3d2a ip_getsockopt +EXPORT_SYMBOL vmlinux 0xc50ab324 acpi_notifier_call_chain +EXPORT_SYMBOL vmlinux 0xc5116b5c agp_generic_type_to_mask_type +EXPORT_SYMBOL vmlinux 0xc5137552 x86_bios_cpu_apicid +EXPORT_SYMBOL vmlinux 0xc52c1e0d eth_header +EXPORT_SYMBOL vmlinux 0xc5318714 skb_free_datagram_locked +EXPORT_SYMBOL vmlinux 0xc53af63b ppp_register_net_channel +EXPORT_SYMBOL vmlinux 0xc5462085 proc_doulongvec_ms_jiffies_minmax +EXPORT_SYMBOL vmlinux 0xc5493085 phy_driver_unregister +EXPORT_SYMBOL vmlinux 0xc5534d64 ioread16 +EXPORT_SYMBOL vmlinux 0xc599a772 security_xfrm_state_delete +EXPORT_SYMBOL vmlinux 0xc5bcd716 pcie_port_service_unregister +EXPORT_SYMBOL vmlinux 0xc5d9c46c agp_try_unsupported_boot +EXPORT_SYMBOL vmlinux 0xc5e0f4bc devm_input_allocate_device +EXPORT_SYMBOL vmlinux 0xc5fa5c6b mmc_power_save_host +EXPORT_SYMBOL vmlinux 0xc5fdef94 call_usermodehelper +EXPORT_SYMBOL vmlinux 0xc601140d udp_proc_register +EXPORT_SYMBOL vmlinux 0xc6042c50 scsi_test_unit_ready +EXPORT_SYMBOL vmlinux 0xc6092e35 cdrom_mode_select +EXPORT_SYMBOL vmlinux 0xc6229f46 seq_pad +EXPORT_SYMBOL vmlinux 0xc631580a console_unlock +EXPORT_SYMBOL vmlinux 0xc6438201 pnp_find_card +EXPORT_SYMBOL vmlinux 0xc65abeb7 agp3_generic_sizes +EXPORT_SYMBOL vmlinux 0xc6a2e418 ns_capable +EXPORT_SYMBOL vmlinux 0xc6b23120 intel_scu_ipc_iowrite16 +EXPORT_SYMBOL vmlinux 0xc6b368d3 acpi_gpe_count +EXPORT_SYMBOL vmlinux 0xc6b73471 init_special_inode +EXPORT_SYMBOL vmlinux 0xc6cbbc89 capable +EXPORT_SYMBOL vmlinux 0xc6cddf30 vga_switcheroo_client_fb_set +EXPORT_SYMBOL vmlinux 0xc6eb3d0d inode_newsize_ok +EXPORT_SYMBOL vmlinux 0xc707913c iov_iter_get_pages_alloc +EXPORT_SYMBOL vmlinux 0xc70c3187 d_invalidate +EXPORT_SYMBOL vmlinux 0xc71bb437 truncate_inode_pages_final +EXPORT_SYMBOL vmlinux 0xc7208c3a serial8250_resume_port +EXPORT_SYMBOL vmlinux 0xc72f0b34 nd_btt_sb_checksum +EXPORT_SYMBOL vmlinux 0xc73bf050 bdi_init +EXPORT_SYMBOL vmlinux 0xc7563db8 twl_set_regcache_bypass +EXPORT_SYMBOL vmlinux 0xc768de19 cpu_all_bits +EXPORT_SYMBOL vmlinux 0xc77ef92e abort_creds +EXPORT_SYMBOL vmlinux 0xc781bd9f rfkill_resume_polling +EXPORT_SYMBOL vmlinux 0xc7856a3d inet6addr_notifier_call_chain +EXPORT_SYMBOL vmlinux 0xc7910c45 inet_peer_xrlim_allow +EXPORT_SYMBOL vmlinux 0xc7975b0c init_buffer +EXPORT_SYMBOL vmlinux 0xc79ade0f nla_put_nohdr +EXPORT_SYMBOL vmlinux 0xc79bcd36 dm_vcalloc +EXPORT_SYMBOL vmlinux 0xc7a4fbed rtnl_lock +EXPORT_SYMBOL vmlinux 0xc7a5fe69 vga_switcheroo_init_domain_pm_optimus_hdmi_audio +EXPORT_SYMBOL vmlinux 0xc7a6d05a input_mt_get_slot_by_key +EXPORT_SYMBOL vmlinux 0xc7c7f75e kill_fasync +EXPORT_SYMBOL vmlinux 0xc7eb632d blk_queue_max_segments +EXPORT_SYMBOL vmlinux 0xc7ec6c27 strspn +EXPORT_SYMBOL vmlinux 0xc7f72131 notify_change +EXPORT_SYMBOL vmlinux 0xc7fcc5bf acpi_resource_to_address64 +EXPORT_SYMBOL vmlinux 0xc80350f3 inet_csk_destroy_sock +EXPORT_SYMBOL vmlinux 0xc8276a79 nf_hooks_needed +EXPORT_SYMBOL vmlinux 0xc833909f input_set_capability +EXPORT_SYMBOL vmlinux 0xc8339e24 string_unescape +EXPORT_SYMBOL vmlinux 0xc83b4d5b posix_acl_from_mode +EXPORT_SYMBOL vmlinux 0xc8421e9d sock_no_socketpair +EXPORT_SYMBOL vmlinux 0xc84a0a7e seq_hlist_start_rcu +EXPORT_SYMBOL vmlinux 0xc869020f __skb_recv_datagram +EXPORT_SYMBOL vmlinux 0xc872fd85 in6addr_interfacelocal_allnodes +EXPORT_SYMBOL vmlinux 0xc87a567b pci_set_mwi +EXPORT_SYMBOL vmlinux 0xc885070f pci_save_state +EXPORT_SYMBOL vmlinux 0xc890c008 zlib_deflateEnd +EXPORT_SYMBOL vmlinux 0xc897c382 sg_init_table +EXPORT_SYMBOL vmlinux 0xc8a91f5b cpumask_local_spread +EXPORT_SYMBOL vmlinux 0xc8ad6961 simple_fill_super +EXPORT_SYMBOL vmlinux 0xc8aecb45 devm_gpiod_get_array +EXPORT_SYMBOL vmlinux 0xc8b08059 blkdev_issue_flush +EXPORT_SYMBOL vmlinux 0xc8b57c27 autoremove_wake_function +EXPORT_SYMBOL vmlinux 0xc8babdfc phy_ethtool_get_eee +EXPORT_SYMBOL vmlinux 0xc8c9efc8 param_set_short +EXPORT_SYMBOL vmlinux 0xc8cd416e genlmsg_put +EXPORT_SYMBOL vmlinux 0xc8de5981 tty_register_device +EXPORT_SYMBOL vmlinux 0xc911b9d5 eth_get_headlen +EXPORT_SYMBOL vmlinux 0xc9161d18 __blk_end_request_all +EXPORT_SYMBOL vmlinux 0xc92ce765 generic_getxattr +EXPORT_SYMBOL vmlinux 0xc936fc30 phy_read_mmd_indirect +EXPORT_SYMBOL vmlinux 0xc95453f4 scm_detach_fds +EXPORT_SYMBOL vmlinux 0xc9582c6d __cleancache_init_fs +EXPORT_SYMBOL vmlinux 0xc95fd1b2 bio_clone_fast +EXPORT_SYMBOL vmlinux 0xc9634df9 in6addr_linklocal_allrouters +EXPORT_SYMBOL vmlinux 0xc964bd20 mutex_lock +EXPORT_SYMBOL vmlinux 0xc97c4fce free_task +EXPORT_SYMBOL vmlinux 0xc997d4f8 fifo_create_dflt +EXPORT_SYMBOL vmlinux 0xc99e2a55 twl_rev +EXPORT_SYMBOL vmlinux 0xc99f6aae dma_spin_lock +EXPORT_SYMBOL vmlinux 0xc9aadd82 vfs_iter_write +EXPORT_SYMBOL vmlinux 0xc9ac8fe8 devm_gpiod_put +EXPORT_SYMBOL vmlinux 0xc9c3c712 sock_edemux +EXPORT_SYMBOL vmlinux 0xc9e07001 vfs_rename +EXPORT_SYMBOL vmlinux 0xc9f57e87 deactivate_super +EXPORT_SYMBOL vmlinux 0xc9fef317 add_wait_queue +EXPORT_SYMBOL vmlinux 0xca0f4667 readlink_copy +EXPORT_SYMBOL vmlinux 0xca11a26b inet_add_offload +EXPORT_SYMBOL vmlinux 0xca7c0e5b devm_ioremap_wc +EXPORT_SYMBOL vmlinux 0xca7c70df tcp_rcv_established +EXPORT_SYMBOL vmlinux 0xca83e6e4 copy_to_iter +EXPORT_SYMBOL vmlinux 0xca8acc78 acpi_dbg_level +EXPORT_SYMBOL vmlinux 0xca9360b5 rb_next +EXPORT_SYMBOL vmlinux 0xca96748b inet6_add_protocol +EXPORT_SYMBOL vmlinux 0xca9ca3b0 dev_graft_qdisc +EXPORT_SYMBOL vmlinux 0xca9f0111 dcb_setapp +EXPORT_SYMBOL vmlinux 0xcac6aa84 proc_mkdir +EXPORT_SYMBOL vmlinux 0xcaeffe51 crypto_sha512_finup +EXPORT_SYMBOL vmlinux 0xcaf2c603 scsi_sd_pm_domain +EXPORT_SYMBOL vmlinux 0xcaf589bb agp_enable +EXPORT_SYMBOL vmlinux 0xcafcc245 blk_run_queue_async +EXPORT_SYMBOL vmlinux 0xcb0288ea ledtrig_cpu +EXPORT_SYMBOL vmlinux 0xcb25acaa __skb_tx_hash +EXPORT_SYMBOL vmlinux 0xcb71287f inet_recvmsg +EXPORT_SYMBOL vmlinux 0xcb733bf2 acpi_bus_set_power +EXPORT_SYMBOL vmlinux 0xcb90dc9e backlight_device_unregister +EXPORT_SYMBOL vmlinux 0xcb944279 pci_read_vpd +EXPORT_SYMBOL vmlinux 0xcb9d0836 netlink_broadcast +EXPORT_SYMBOL vmlinux 0xcbae6c7a acpi_lid_notifier_unregister +EXPORT_SYMBOL vmlinux 0xcbb4d4c5 cros_ec_query_all +EXPORT_SYMBOL vmlinux 0xcbbf0a6f audit_log_task_context +EXPORT_SYMBOL vmlinux 0xcbc6cd69 tty_flip_buffer_push +EXPORT_SYMBOL vmlinux 0xcbc9557f unregister_sysrq_key +EXPORT_SYMBOL vmlinux 0xcbeac4be hdmi_avi_infoframe_pack +EXPORT_SYMBOL vmlinux 0xcbf4d5a8 netdev_refcnt_read +EXPORT_SYMBOL vmlinux 0xcbfabbff __bforget +EXPORT_SYMBOL vmlinux 0xcc248d26 serial8250_suspend_port +EXPORT_SYMBOL vmlinux 0xcc4d1bfb atomic64_read_cx8 +EXPORT_SYMBOL vmlinux 0xcc5005fe msleep_interruptible +EXPORT_SYMBOL vmlinux 0xcc838223 __pte2cachemode_tbl +EXPORT_SYMBOL vmlinux 0xcc959bb1 dev_printk +EXPORT_SYMBOL vmlinux 0xcc97d03e revert_creds +EXPORT_SYMBOL vmlinux 0xcca2191f vlan_vids_add_by_dev +EXPORT_SYMBOL vmlinux 0xcca2bc49 inet_del_protocol +EXPORT_SYMBOL vmlinux 0xccbd7719 pm860x_page_reg_write +EXPORT_SYMBOL vmlinux 0xccc21f5e input_get_new_minor +EXPORT_SYMBOL vmlinux 0xccc53bfd blk_rq_map_kern +EXPORT_SYMBOL vmlinux 0xccfef64f skb_flow_dissector_init +EXPORT_SYMBOL vmlinux 0xcd0bdc77 vfs_getattr +EXPORT_SYMBOL vmlinux 0xcd1aa377 param_get_invbool +EXPORT_SYMBOL vmlinux 0xcd279169 nla_find +EXPORT_SYMBOL vmlinux 0xcd47c4fa dev_get_by_name +EXPORT_SYMBOL vmlinux 0xcd5ec904 __qdisc_calculate_pkt_len +EXPORT_SYMBOL vmlinux 0xcd62e080 lockref_get_not_zero +EXPORT_SYMBOL vmlinux 0xcd69a095 nf_register_hook +EXPORT_SYMBOL vmlinux 0xcd795efb max8998_update_reg +EXPORT_SYMBOL vmlinux 0xcd82495b arp_send +EXPORT_SYMBOL vmlinux 0xcd8d36f4 flow_get_u32_src +EXPORT_SYMBOL vmlinux 0xcda4a2ae bio_add_pc_page +EXPORT_SYMBOL vmlinux 0xcdbb517e inet_frag_maybe_warn_overflow +EXPORT_SYMBOL vmlinux 0xcdc39c9e security_ismaclabel +EXPORT_SYMBOL vmlinux 0xcdc9cb67 __bio_clone_fast +EXPORT_SYMBOL vmlinux 0xcdeb30ca genphy_update_link +EXPORT_SYMBOL vmlinux 0xce034574 netdev_lower_get_next_private_rcu +EXPORT_SYMBOL vmlinux 0xce10eb35 tcp_proc_unregister +EXPORT_SYMBOL vmlinux 0xce2840e7 irq_set_irq_wake +EXPORT_SYMBOL vmlinux 0xce2c45cc wait_for_completion_io +EXPORT_SYMBOL vmlinux 0xce3689a1 kobject_del +EXPORT_SYMBOL vmlinux 0xce425e0f neigh_direct_output +EXPORT_SYMBOL vmlinux 0xce4904a4 acpi_leave_sleep_state +EXPORT_SYMBOL vmlinux 0xce4dcfa1 ps2_sendbyte +EXPORT_SYMBOL vmlinux 0xce5ac24f zlib_inflate_workspacesize +EXPORT_SYMBOL vmlinux 0xce5bd626 __dev_remove_pack +EXPORT_SYMBOL vmlinux 0xce6ae76c inet_unregister_protosw +EXPORT_SYMBOL vmlinux 0xce7a69e6 security_path_symlink +EXPORT_SYMBOL vmlinux 0xce8499bf mmc_start_req +EXPORT_SYMBOL vmlinux 0xce9e41e9 lockref_get +EXPORT_SYMBOL vmlinux 0xceab0311 strchrnul +EXPORT_SYMBOL vmlinux 0xcecf36f9 start_tty +EXPORT_SYMBOL vmlinux 0xcedfc84d lockref_mark_dead +EXPORT_SYMBOL vmlinux 0xcef51982 kstrtou16 +EXPORT_SYMBOL vmlinux 0xcef7e20a d_walk +EXPORT_SYMBOL vmlinux 0xcefcd99a serial8250_unregister_port +EXPORT_SYMBOL vmlinux 0xcf08e3d8 pci_map_biosrom +EXPORT_SYMBOL vmlinux 0xcf0a851f scsi_remove_host +EXPORT_SYMBOL vmlinux 0xcf13f085 sk_stream_kill_queues +EXPORT_SYMBOL vmlinux 0xcf2a7f1a bio_clone_bioset +EXPORT_SYMBOL vmlinux 0xcf303b23 i2c_add_adapter +EXPORT_SYMBOL vmlinux 0xcf4dde3d dquot_quota_on +EXPORT_SYMBOL vmlinux 0xcf4fde11 dcache_dir_lseek +EXPORT_SYMBOL vmlinux 0xcf5239b5 serio_unregister_port +EXPORT_SYMBOL vmlinux 0xcf53bddc blk_mq_alloc_request +EXPORT_SYMBOL vmlinux 0xcf66cce6 genl_notify +EXPORT_SYMBOL vmlinux 0xcf6cfe1f msrs_free +EXPORT_SYMBOL vmlinux 0xcf719fb4 neigh_lookup +EXPORT_SYMBOL vmlinux 0xcf732b66 tty_write_room +EXPORT_SYMBOL vmlinux 0xcf968310 bdgrab +EXPORT_SYMBOL vmlinux 0xcfa08225 vme_slot_num +EXPORT_SYMBOL vmlinux 0xcfc0c7f3 sock_create_lite +EXPORT_SYMBOL vmlinux 0xcfe05d4d register_kmmio_probe +EXPORT_SYMBOL vmlinux 0xcfeba332 mount_ns +EXPORT_SYMBOL vmlinux 0xcfefed5e cfb_copyarea +EXPORT_SYMBOL vmlinux 0xcffd6ff8 dquot_scan_active +EXPORT_SYMBOL vmlinux 0xd04a5035 elevator_change +EXPORT_SYMBOL vmlinux 0xd04d8d6f __neigh_event_send +EXPORT_SYMBOL vmlinux 0xd04dbc25 lro_receive_skb +EXPORT_SYMBOL vmlinux 0xd0720a17 on_each_cpu_cond +EXPORT_SYMBOL vmlinux 0xd0829999 mfd_remove_devices +EXPORT_SYMBOL vmlinux 0xd0844435 bdi_setup_and_register +EXPORT_SYMBOL vmlinux 0xd09b0199 fence_context_alloc +EXPORT_SYMBOL vmlinux 0xd0a2847c sha_init +EXPORT_SYMBOL vmlinux 0xd0a91bab skip_spaces +EXPORT_SYMBOL vmlinux 0xd0b11c40 simple_follow_link +EXPORT_SYMBOL vmlinux 0xd0c451e8 inet6_register_icmp_sender +EXPORT_SYMBOL vmlinux 0xd0caf39c tty_vhangup +EXPORT_SYMBOL vmlinux 0xd0d8621b strlen +EXPORT_SYMBOL vmlinux 0xd0d9888d security_inode_init_security +EXPORT_SYMBOL vmlinux 0xd0ee18e2 sb_min_blocksize +EXPORT_SYMBOL vmlinux 0xd0ee38b8 schedule_timeout_uninterruptible +EXPORT_SYMBOL vmlinux 0xd0f36f0d audit_log_format +EXPORT_SYMBOL vmlinux 0xd0f3cf11 pci_scan_bus +EXPORT_SYMBOL vmlinux 0xd0fb7cd4 __tasklet_hi_schedule_first +EXPORT_SYMBOL vmlinux 0xd0fef3b2 agp_free_key +EXPORT_SYMBOL vmlinux 0xd108a077 xfrm_state_check_expire +EXPORT_SYMBOL vmlinux 0xd110ae58 security_path_mknod +EXPORT_SYMBOL vmlinux 0xd11639be md_wakeup_thread +EXPORT_SYMBOL vmlinux 0xd117e631 genphy_read_status +EXPORT_SYMBOL vmlinux 0xd11f159f pcim_pin_device +EXPORT_SYMBOL vmlinux 0xd138092e ip_do_fragment +EXPORT_SYMBOL vmlinux 0xd14420cb pci_get_domain_bus_and_slot +EXPORT_SYMBOL vmlinux 0xd146a211 first_ec +EXPORT_SYMBOL vmlinux 0xd1652a93 acpi_info +EXPORT_SYMBOL vmlinux 0xd1710aa1 netif_napi_del +EXPORT_SYMBOL vmlinux 0xd1816f32 frontswap_writethrough +EXPORT_SYMBOL vmlinux 0xd196741b pm_vt_switch_required +EXPORT_SYMBOL vmlinux 0xd196c9be kstrtos16_from_user +EXPORT_SYMBOL vmlinux 0xd1a578d7 phy_start_aneg +EXPORT_SYMBOL vmlinux 0xd1b91b7e simple_write_end +EXPORT_SYMBOL vmlinux 0xd1c79f10 blk_make_request +EXPORT_SYMBOL vmlinux 0xd1c84dfb hdmi_audio_infoframe_pack +EXPORT_SYMBOL vmlinux 0xd1d87e92 scsi_mlreturn_string +EXPORT_SYMBOL vmlinux 0xd1da92bc tty_wait_until_sent +EXPORT_SYMBOL vmlinux 0xd1eac9ce input_unregister_device +EXPORT_SYMBOL vmlinux 0xd1ee7eae jbd2_journal_wipe +EXPORT_SYMBOL vmlinux 0xd1f6c5f3 smp_num_siblings +EXPORT_SYMBOL vmlinux 0xd2064e2f idr_replace +EXPORT_SYMBOL vmlinux 0xd220cf8a jiffies_to_timespec +EXPORT_SYMBOL vmlinux 0xd241022b pci_set_dma_seg_boundary +EXPORT_SYMBOL vmlinux 0xd245c51c put_cmsg +EXPORT_SYMBOL vmlinux 0xd24ea7f6 pci_enable_msix_range +EXPORT_SYMBOL vmlinux 0xd251d7b0 security_socket_getpeersec_dgram +EXPORT_SYMBOL vmlinux 0xd254a4a0 clkdev_alloc +EXPORT_SYMBOL vmlinux 0xd2555f19 jiffies_64_to_clock_t +EXPORT_SYMBOL vmlinux 0xd25d0abf nla_put +EXPORT_SYMBOL vmlinux 0xd25d4f74 console_blank_hook +EXPORT_SYMBOL vmlinux 0xd271a2fe tcp_syn_ack_timeout +EXPORT_SYMBOL vmlinux 0xd27b25dd blk_check_plugged +EXPORT_SYMBOL vmlinux 0xd2862b37 iov_iter_single_seg_count +EXPORT_SYMBOL vmlinux 0xd2a7b094 sg_miter_next +EXPORT_SYMBOL vmlinux 0xd2af138b reservation_ww_class +EXPORT_SYMBOL vmlinux 0xd2c143d2 cpufreq_get_policy +EXPORT_SYMBOL vmlinux 0xd2c78866 uart_unregister_driver +EXPORT_SYMBOL vmlinux 0xd2da1048 register_netdevice_notifier +EXPORT_SYMBOL vmlinux 0xd2e6a582 acpi_processor_preregister_performance +EXPORT_SYMBOL vmlinux 0xd36008c6 pci_request_regions_exclusive +EXPORT_SYMBOL vmlinux 0xd36aa336 kill_anon_super +EXPORT_SYMBOL vmlinux 0xd36e4871 ioc_lookup_icq +EXPORT_SYMBOL vmlinux 0xd38b7064 disk_stack_limits +EXPORT_SYMBOL vmlinux 0xd3a2999c mmc_can_sanitize +EXPORT_SYMBOL vmlinux 0xd3a669d8 padata_set_cpumask +EXPORT_SYMBOL vmlinux 0xd3a8181f bdev_stack_limits +EXPORT_SYMBOL vmlinux 0xd3b0798f audit_log +EXPORT_SYMBOL vmlinux 0xd3b1327b fb_pan_display +EXPORT_SYMBOL vmlinux 0xd3b6ac07 bdget +EXPORT_SYMBOL vmlinux 0xd3bd1f81 generic_setlease +EXPORT_SYMBOL vmlinux 0xd3c84707 pcie_get_mps +EXPORT_SYMBOL vmlinux 0xd3c95dad del_random_ready_callback +EXPORT_SYMBOL vmlinux 0xd3d1889a d_lookup +EXPORT_SYMBOL vmlinux 0xd449fd6b pci_bus_read_config_dword +EXPORT_SYMBOL vmlinux 0xd469f38d keyring_alloc +EXPORT_SYMBOL vmlinux 0xd46d6af1 pci_enable_device_io +EXPORT_SYMBOL vmlinux 0xd4835ef8 dmi_check_system +EXPORT_SYMBOL vmlinux 0xd483f54e blk_complete_request +EXPORT_SYMBOL vmlinux 0xd48580b1 fb_set_suspend +EXPORT_SYMBOL vmlinux 0xd4a10aed tcp_md5_hash_skb_data +EXPORT_SYMBOL vmlinux 0xd4c4cb4e __dst_destroy_metrics_generic +EXPORT_SYMBOL vmlinux 0xd4cc5cdb tty_check_change +EXPORT_SYMBOL vmlinux 0xd4f809ba agp_collect_device_status +EXPORT_SYMBOL vmlinux 0xd50fef48 acpi_detach_data +EXPORT_SYMBOL vmlinux 0xd54bc892 blk_start_queue +EXPORT_SYMBOL vmlinux 0xd54f41ce try_to_del_timer_sync +EXPORT_SYMBOL vmlinux 0xd5592e8d abx500_get_register_interruptible +EXPORT_SYMBOL vmlinux 0xd598f87d phy_get_eee_err +EXPORT_SYMBOL vmlinux 0xd5d1952d kern_path +EXPORT_SYMBOL vmlinux 0xd5d8e540 neigh_sysctl_register +EXPORT_SYMBOL vmlinux 0xd5ed8f45 mipi_dsi_dcs_read +EXPORT_SYMBOL vmlinux 0xd5f1893f mount_bdev +EXPORT_SYMBOL vmlinux 0xd5f52d4f netdev_rss_key_fill +EXPORT_SYMBOL vmlinux 0xd616683a ecryptfs_fill_auth_tok +EXPORT_SYMBOL vmlinux 0xd617be29 phy_find_first +EXPORT_SYMBOL vmlinux 0xd6299733 dma_mmap_from_coherent +EXPORT_SYMBOL vmlinux 0xd62a501a bh_submit_read +EXPORT_SYMBOL vmlinux 0xd62c029f path_is_under +EXPORT_SYMBOL vmlinux 0xd62c833f schedule_timeout +EXPORT_SYMBOL vmlinux 0xd63e99a8 udp_add_offload +EXPORT_SYMBOL vmlinux 0xd648b573 dev_set_allmulti +EXPORT_SYMBOL vmlinux 0xd648e564 fb_match_mode +EXPORT_SYMBOL vmlinux 0xd64958a7 remove_proc_subtree +EXPORT_SYMBOL vmlinux 0xd64a0e45 devm_release_resource +EXPORT_SYMBOL vmlinux 0xd64b97be blk_post_runtime_suspend +EXPORT_SYMBOL vmlinux 0xd654df1f kmem_cache_free +EXPORT_SYMBOL vmlinux 0xd6861e6e seq_puts +EXPORT_SYMBOL vmlinux 0xd688716b dm_kcopyd_client_create +EXPORT_SYMBOL vmlinux 0xd696dc02 ipv6_dev_get_saddr +EXPORT_SYMBOL vmlinux 0xd6b2ed5f generate_pm_trace +EXPORT_SYMBOL vmlinux 0xd6b33026 cpu_khz +EXPORT_SYMBOL vmlinux 0xd6bcee2b inet_get_local_port_range +EXPORT_SYMBOL vmlinux 0xd6ee688f vmalloc +EXPORT_SYMBOL vmlinux 0xd6f40fff dst_discard_sk +EXPORT_SYMBOL vmlinux 0xd702e51a rfkill_alloc +EXPORT_SYMBOL vmlinux 0xd730959d seqno_fence_ops +EXPORT_SYMBOL vmlinux 0xd7472d9b sk_mc_loop +EXPORT_SYMBOL vmlinux 0xd74e9eed security_path_chmod +EXPORT_SYMBOL vmlinux 0xd74ff67b swiotlb_free_coherent +EXPORT_SYMBOL vmlinux 0xd75c79df smp_call_function +EXPORT_SYMBOL vmlinux 0xd75f42b2 blk_limits_io_opt +EXPORT_SYMBOL vmlinux 0xd76eda5c inet_listen +EXPORT_SYMBOL vmlinux 0xd78e6f89 security_skb_classify_flow +EXPORT_SYMBOL vmlinux 0xd797b9a5 vme_master_write +EXPORT_SYMBOL vmlinux 0xd7dd777b reserve_perfctr_nmi +EXPORT_SYMBOL vmlinux 0xd7e56a4e simple_strtoll +EXPORT_SYMBOL vmlinux 0xd7ea7094 nf_unregister_queue_handler +EXPORT_SYMBOL vmlinux 0xd810e047 __kernel_write +EXPORT_SYMBOL vmlinux 0xd818f74b dump_align +EXPORT_SYMBOL vmlinux 0xd825f10b mmc_erase +EXPORT_SYMBOL vmlinux 0xd840dcf0 phy_register_fixup +EXPORT_SYMBOL vmlinux 0xd84edcd4 pci_bus_get +EXPORT_SYMBOL vmlinux 0xd85833cb __kfifo_dma_out_prepare_r +EXPORT_SYMBOL vmlinux 0xd859499c dm_io +EXPORT_SYMBOL vmlinux 0xd8625681 mark_buffer_dirty_inode +EXPORT_SYMBOL vmlinux 0xd878d646 nf_register_queue_handler +EXPORT_SYMBOL vmlinux 0xd889234d kthread_bind +EXPORT_SYMBOL vmlinux 0xd89da37f movable_zone +EXPORT_SYMBOL vmlinux 0xd8a994eb scsi_extd_sense_format +EXPORT_SYMBOL vmlinux 0xd8ba2576 twl6040_set_bits +EXPORT_SYMBOL vmlinux 0xd8ded085 radix_tree_maybe_preload +EXPORT_SYMBOL vmlinux 0xd8e484f0 register_chrdev_region +EXPORT_SYMBOL vmlinux 0xd8e75607 netlink_broadcast_filtered +EXPORT_SYMBOL vmlinux 0xd8f48e52 md_write_start +EXPORT_SYMBOL vmlinux 0xd9091363 acpi_install_notify_handler +EXPORT_SYMBOL vmlinux 0xd92e2dca tcp_hashinfo +EXPORT_SYMBOL vmlinux 0xd94068a2 mmc_start_bkops +EXPORT_SYMBOL vmlinux 0xd94322e7 acpi_evaluate_reference +EXPORT_SYMBOL vmlinux 0xd94e76b6 kill_bdev +EXPORT_SYMBOL vmlinux 0xd969b2c7 amd_e400_c1e_detected +EXPORT_SYMBOL vmlinux 0xd97e27b3 phy_connect +EXPORT_SYMBOL vmlinux 0xd985dc99 mempool_free_pages +EXPORT_SYMBOL vmlinux 0xd998079c sock_no_setsockopt +EXPORT_SYMBOL vmlinux 0xd9ba63b4 tcp_get_cookie_sock +EXPORT_SYMBOL vmlinux 0xd9c099de bio_integrity_trim +EXPORT_SYMBOL vmlinux 0xd9cc9a2c mark_buffer_async_write +EXPORT_SYMBOL vmlinux 0xd9d3bcd3 _raw_spin_lock_bh +EXPORT_SYMBOL vmlinux 0xd9d8fd16 register_restart_handler +EXPORT_SYMBOL vmlinux 0xd9f8ff4a inet6_register_protosw +EXPORT_SYMBOL vmlinux 0xd9fac122 netlink_net_capable +EXPORT_SYMBOL vmlinux 0xd9fe7f21 ata_link_printk +EXPORT_SYMBOL vmlinux 0xda08c0d7 pcibios_get_irq_routing_table +EXPORT_SYMBOL vmlinux 0xda3d10a8 security_tun_dev_open +EXPORT_SYMBOL vmlinux 0xda4eb63f t10_pi_type3_ip +EXPORT_SYMBOL vmlinux 0xda516157 blk_mq_run_hw_queues +EXPORT_SYMBOL vmlinux 0xda5e2ddf end_page_writeback +EXPORT_SYMBOL vmlinux 0xda6ec882 __wait_on_buffer +EXPORT_SYMBOL vmlinux 0xda7ca6cb fb_mode_is_equal +EXPORT_SYMBOL vmlinux 0xda8af7ad fb_find_nearest_mode +EXPORT_SYMBOL vmlinux 0xda8fd495 isapnp_write_byte +EXPORT_SYMBOL vmlinux 0xdaa50d06 is_bad_inode +EXPORT_SYMBOL vmlinux 0xdaa57ec3 totalhigh_pages +EXPORT_SYMBOL vmlinux 0xdac4913a bitmap_allocate_region +EXPORT_SYMBOL vmlinux 0xdaffe7db thaw_bdev +EXPORT_SYMBOL vmlinux 0xdb22fd45 inet_frags_fini +EXPORT_SYMBOL vmlinux 0xdb68bbad rfkill_destroy +EXPORT_SYMBOL vmlinux 0xdb71e0ca xfrm_policy_unregister_afinfo +EXPORT_SYMBOL vmlinux 0xdb7305a1 __stack_chk_fail +EXPORT_SYMBOL vmlinux 0xdb760f52 __kfifo_free +EXPORT_SYMBOL vmlinux 0xdb76d647 skb_copy_and_csum_bits +EXPORT_SYMBOL vmlinux 0xdb93c978 blk_queue_free_tags +EXPORT_SYMBOL vmlinux 0xdba763dd phy_drivers_unregister +EXPORT_SYMBOL vmlinux 0xdbc3cf91 sg_miter_start +EXPORT_SYMBOL vmlinux 0xdbc486b9 mipi_dsi_dcs_exit_sleep_mode +EXPORT_SYMBOL vmlinux 0xdbc73b8b skb_dequeue +EXPORT_SYMBOL vmlinux 0xdc047fc4 scsi_dev_info_list_add_keyed +EXPORT_SYMBOL vmlinux 0xdc14eda7 pci_pci_problems +EXPORT_SYMBOL vmlinux 0xdc30863b genphy_setup_forced +EXPORT_SYMBOL vmlinux 0xdc3be6e2 dev_uc_sync +EXPORT_SYMBOL vmlinux 0xdc3fcbc9 __sw_hweight8 +EXPORT_SYMBOL vmlinux 0xdc48a93b register_sysctl_table +EXPORT_SYMBOL vmlinux 0xdc4ceefc get_disk +EXPORT_SYMBOL vmlinux 0xdc512134 backlight_register_notifier +EXPORT_SYMBOL vmlinux 0xdc57f532 acpi_install_gpe_handler +EXPORT_SYMBOL vmlinux 0xdc5b4f7b clk_get +EXPORT_SYMBOL vmlinux 0xdc76991c generic_listxattr +EXPORT_SYMBOL vmlinux 0xdc7a0153 framebuffer_alloc +EXPORT_SYMBOL vmlinux 0xdc98d91f __genl_register_family +EXPORT_SYMBOL vmlinux 0xdcbf7fe2 simple_rmdir +EXPORT_SYMBOL vmlinux 0xdccdb56f devfreq_monitor_resume +EXPORT_SYMBOL vmlinux 0xdcd0436f __pskb_copy_fclone +EXPORT_SYMBOL vmlinux 0xdcdb57ae dev_warn +EXPORT_SYMBOL vmlinux 0xdce530c3 tcp_timewait_state_process +EXPORT_SYMBOL vmlinux 0xdd0a2ba2 strlcat +EXPORT_SYMBOL vmlinux 0xdd22fa0b acpi_bus_get_status +EXPORT_SYMBOL vmlinux 0xdd35400b pcie_get_readrq +EXPORT_SYMBOL vmlinux 0xdd35d5de clk_register_clkdevs +EXPORT_SYMBOL vmlinux 0xdd38240b dev_addr_flush +EXPORT_SYMBOL vmlinux 0xdd3855d8 lock_two_nondirectories +EXPORT_SYMBOL vmlinux 0xdd52c775 __breadahead +EXPORT_SYMBOL vmlinux 0xdd60f2d8 blk_queue_merge_bvec +EXPORT_SYMBOL vmlinux 0xdd6dec8e serial8250_do_set_termios +EXPORT_SYMBOL vmlinux 0xddb37d02 proc_dointvec +EXPORT_SYMBOL vmlinux 0xddb9495a pnp_find_dev +EXPORT_SYMBOL vmlinux 0xddc1c5aa dquot_writeback_dquots +EXPORT_SYMBOL vmlinux 0xddd29ac7 blk_integrity_merge_bio +EXPORT_SYMBOL vmlinux 0xdddb8405 get_super +EXPORT_SYMBOL vmlinux 0xdde7613f inet_addr_type +EXPORT_SYMBOL vmlinux 0xddf4cd01 sg_miter_stop +EXPORT_SYMBOL vmlinux 0xde16dc16 tboot +EXPORT_SYMBOL vmlinux 0xde20df90 blkdev_get_by_dev +EXPORT_SYMBOL vmlinux 0xde239a37 dst_cow_metrics_generic +EXPORT_SYMBOL vmlinux 0xde3a8603 __scsi_add_device +EXPORT_SYMBOL vmlinux 0xde3bea28 path_put +EXPORT_SYMBOL vmlinux 0xde40dc30 gnttab_free_pages +EXPORT_SYMBOL vmlinux 0xde51cbc4 unregister_sysctl_table +EXPORT_SYMBOL vmlinux 0xde78db80 flock_lock_inode_wait +EXPORT_SYMBOL vmlinux 0xde79547a set_blocksize +EXPORT_SYMBOL vmlinux 0xde8b2cdf blkdev_get +EXPORT_SYMBOL vmlinux 0xde9360ba totalram_pages +EXPORT_SYMBOL vmlinux 0xde9b17ed agp3_generic_fetch_size +EXPORT_SYMBOL vmlinux 0xde9c56c2 md_integrity_register +EXPORT_SYMBOL vmlinux 0xded931f3 resource_list_create_entry +EXPORT_SYMBOL vmlinux 0xdedb6611 try_wait_for_completion +EXPORT_SYMBOL vmlinux 0xdedbe84d sock_alloc_send_skb +EXPORT_SYMBOL vmlinux 0xdf0da3cc acpi_get_devices +EXPORT_SYMBOL vmlinux 0xdf0ddd48 pci_bus_type +EXPORT_SYMBOL vmlinux 0xdf12a927 acpi_check_dsm +EXPORT_SYMBOL vmlinux 0xdf1427e5 idr_remove +EXPORT_SYMBOL vmlinux 0xdf2c2742 rb_last +EXPORT_SYMBOL vmlinux 0xdf3a693d crc_t10dif_update +EXPORT_SYMBOL vmlinux 0xdf3d8702 jbd2_journal_init_jbd_inode +EXPORT_SYMBOL vmlinux 0xdf4320e4 kill_pid +EXPORT_SYMBOL vmlinux 0xdf4fc797 __register_nmi_handler +EXPORT_SYMBOL vmlinux 0xdf54a8f7 netlink_unregister_notifier +EXPORT_SYMBOL vmlinux 0xdf60cc27 __print_symbol +EXPORT_SYMBOL vmlinux 0xdf749797 ww_mutex_unlock +EXPORT_SYMBOL vmlinux 0xdf8c695a __ndelay +EXPORT_SYMBOL vmlinux 0xdf929370 fs_overflowgid +EXPORT_SYMBOL vmlinux 0xdfb09da4 mfd_cell_enable +EXPORT_SYMBOL vmlinux 0xdfb90fee locks_copy_lock +EXPORT_SYMBOL vmlinux 0xdfc5169b slhc_init +EXPORT_SYMBOL vmlinux 0xdfd3a075 wait_for_completion_killable +EXPORT_SYMBOL vmlinux 0xdfe0c0c5 done_path_create +EXPORT_SYMBOL vmlinux 0xdff905e5 vme_slave_free +EXPORT_SYMBOL vmlinux 0xdffb1575 inet6_bind +EXPORT_SYMBOL vmlinux 0xe00a83dd __put_cred +EXPORT_SYMBOL vmlinux 0xe03df979 devm_gen_pool_create +EXPORT_SYMBOL vmlinux 0xe04f7caa dm_read_arg_group +EXPORT_SYMBOL vmlinux 0xe06141e9 security_sk_clone +EXPORT_SYMBOL vmlinux 0xe06bebf3 devm_request_threaded_irq +EXPORT_SYMBOL vmlinux 0xe075d6eb iter_div_u64_rem +EXPORT_SYMBOL vmlinux 0xe083e246 gen_pool_first_fit_order_align +EXPORT_SYMBOL vmlinux 0xe099dfee iget_locked +EXPORT_SYMBOL vmlinux 0xe0a16a20 intel_scu_ipc_i2c_cntrl +EXPORT_SYMBOL vmlinux 0xe0aaa2ab dev_printk_emit +EXPORT_SYMBOL vmlinux 0xe0ac8bd2 acpi_bus_generate_netlink_event +EXPORT_SYMBOL vmlinux 0xe0b13336 argv_free +EXPORT_SYMBOL vmlinux 0xe0b34128 xfrm4_rcv_cb +EXPORT_SYMBOL vmlinux 0xe0b914ea i2c_del_driver +EXPORT_SYMBOL vmlinux 0xe0bc8cfc textsearch_unregister +EXPORT_SYMBOL vmlinux 0xe0ca399e vfs_readv +EXPORT_SYMBOL vmlinux 0xe0f87075 phy_disconnect +EXPORT_SYMBOL vmlinux 0xe0f8b72f sock_register +EXPORT_SYMBOL vmlinux 0xe12f2144 acpi_device_hid +EXPORT_SYMBOL vmlinux 0xe13cd8a7 dmi_name_in_vendors +EXPORT_SYMBOL vmlinux 0xe13e1070 vfs_fsync +EXPORT_SYMBOL vmlinux 0xe161b810 dquot_set_dqblk +EXPORT_SYMBOL vmlinux 0xe1761617 security_inet_conn_request +EXPORT_SYMBOL vmlinux 0xe1786c32 make_flow_keys_digest +EXPORT_SYMBOL vmlinux 0xe1a96699 inode_dio_wait +EXPORT_SYMBOL vmlinux 0xe1b02a46 __devm_gpiod_get_optional +EXPORT_SYMBOL vmlinux 0xe1bd7dac pci_restore_state +EXPORT_SYMBOL vmlinux 0xe1c44d2c __skb_get_hash_flowi4 +EXPORT_SYMBOL vmlinux 0xe1d2c588 dev_err +EXPORT_SYMBOL vmlinux 0xe1f1e9e5 pci_get_slot +EXPORT_SYMBOL vmlinux 0xe200f872 secure_dccpv6_sequence_number +EXPORT_SYMBOL vmlinux 0xe20391cb proc_dointvec_userhz_jiffies +EXPORT_SYMBOL vmlinux 0xe23ae481 blk_iopoll_complete +EXPORT_SYMBOL vmlinux 0xe23ea457 get_unmapped_area +EXPORT_SYMBOL vmlinux 0xe24b608a nd_integrity_init +EXPORT_SYMBOL vmlinux 0xe24d3a97 jiffies_64 +EXPORT_SYMBOL vmlinux 0xe259ae9e _raw_spin_lock +EXPORT_SYMBOL vmlinux 0xe29e1d0e out_of_line_wait_on_atomic_t +EXPORT_SYMBOL vmlinux 0xe2a2a5de pipe_lock +EXPORT_SYMBOL vmlinux 0xe2aa0020 security_sb_set_mnt_opts +EXPORT_SYMBOL vmlinux 0xe2ccf99a dev_set_group +EXPORT_SYMBOL vmlinux 0xe2d362fa inet6_add_offload +EXPORT_SYMBOL vmlinux 0xe2d5255a strcmp +EXPORT_SYMBOL vmlinux 0xe2da17c7 pci_scan_bridge +EXPORT_SYMBOL vmlinux 0xe2e657a9 pci_find_parent_resource +EXPORT_SYMBOL vmlinux 0xe2e8065e memdup_user +EXPORT_SYMBOL vmlinux 0xe2e81f02 uart_register_driver +EXPORT_SYMBOL vmlinux 0xe2f425e7 rps_cpu_mask +EXPORT_SYMBOL vmlinux 0xe2f939ed tcp_md5_do_add +EXPORT_SYMBOL vmlinux 0xe2fae716 kmemdup +EXPORT_SYMBOL vmlinux 0xe31029e5 blk_execute_rq +EXPORT_SYMBOL vmlinux 0xe3161f65 ipv6_chk_addr +EXPORT_SYMBOL vmlinux 0xe3197208 proc_dostring +EXPORT_SYMBOL vmlinux 0xe319eb24 acpi_pci_osc_control_set +EXPORT_SYMBOL vmlinux 0xe31b88e7 sock_sendmsg +EXPORT_SYMBOL vmlinux 0xe32ba07c devfreq_add_governor +EXPORT_SYMBOL vmlinux 0xe339921a __skb_get_hash +EXPORT_SYMBOL vmlinux 0xe3399a75 native_queued_spin_lock_slowpath +EXPORT_SYMBOL vmlinux 0xe339ec2c vfs_iter_read +EXPORT_SYMBOL vmlinux 0xe3410945 pnp_register_driver +EXPORT_SYMBOL vmlinux 0xe347232b from_kprojid +EXPORT_SYMBOL vmlinux 0xe38094a8 fb_validate_mode +EXPORT_SYMBOL vmlinux 0xe3c1e120 mmc_can_trim +EXPORT_SYMBOL vmlinux 0xe3c3be25 filp_close +EXPORT_SYMBOL vmlinux 0xe3d6f284 fb_find_mode_cvt +EXPORT_SYMBOL vmlinux 0xe3f9f964 kmap_high +EXPORT_SYMBOL vmlinux 0xe4016972 dma_ops +EXPORT_SYMBOL vmlinux 0xe40afd64 backlight_device_register +EXPORT_SYMBOL vmlinux 0xe41075f1 bd_set_size +EXPORT_SYMBOL vmlinux 0xe4284d97 scsi_set_medium_removal +EXPORT_SYMBOL vmlinux 0xe441b911 __dev_get_by_name +EXPORT_SYMBOL vmlinux 0xe4445f0f netdev_features_change +EXPORT_SYMBOL vmlinux 0xe445db4a acpi_check_address_range +EXPORT_SYMBOL vmlinux 0xe44b6f34 netif_carrier_off +EXPORT_SYMBOL vmlinux 0xe45d2d2b seq_open_private +EXPORT_SYMBOL vmlinux 0xe4655197 iget_failed +EXPORT_SYMBOL vmlinux 0xe46e8a13 security_sb_clone_mnt_opts +EXPORT_SYMBOL vmlinux 0xe47341bf inet_sk_rebuild_header +EXPORT_SYMBOL vmlinux 0xe4759725 eth_validate_addr +EXPORT_SYMBOL vmlinux 0xe47e2bfb twl6040_set_pll +EXPORT_SYMBOL vmlinux 0xe484e35f ioread32 +EXPORT_SYMBOL vmlinux 0xe48af626 qdisc_tree_decrease_qlen +EXPORT_SYMBOL vmlinux 0xe495b557 d_instantiate_unique +EXPORT_SYMBOL vmlinux 0xe4c5b109 dev_queue_xmit_sk +EXPORT_SYMBOL vmlinux 0xe4d798bd pci_bus_read_config_word +EXPORT_SYMBOL vmlinux 0xe4d7b2eb blk_queue_logical_block_size +EXPORT_SYMBOL vmlinux 0xe5091024 phy_resume +EXPORT_SYMBOL vmlinux 0xe50f904f intel_scu_ipc_ioread16 +EXPORT_SYMBOL vmlinux 0xe523ad75 synchronize_irq +EXPORT_SYMBOL vmlinux 0xe5251c14 rps_may_expire_flow +EXPORT_SYMBOL vmlinux 0xe530d757 acpi_clear_gpe +EXPORT_SYMBOL vmlinux 0xe53a8662 skb_realloc_headroom +EXPORT_SYMBOL vmlinux 0xe53d7338 rtnl_configure_link +EXPORT_SYMBOL vmlinux 0xe53df7b7 commit_creds +EXPORT_SYMBOL vmlinux 0xe53fa31a tcp_prot +EXPORT_SYMBOL vmlinux 0xe54c40d1 elevator_init +EXPORT_SYMBOL vmlinux 0xe556c3ff pci_get_device +EXPORT_SYMBOL vmlinux 0xe56413aa pnp_stop_dev +EXPORT_SYMBOL vmlinux 0xe57878a1 in6_pton +EXPORT_SYMBOL vmlinux 0xe5815f8a _raw_spin_lock_irq +EXPORT_SYMBOL vmlinux 0xe5820dcd __dst_free +EXPORT_SYMBOL vmlinux 0xe5867808 dlci_ioctl_set +EXPORT_SYMBOL vmlinux 0xe5c78a99 do_blank_screen +EXPORT_SYMBOL vmlinux 0xe5da3f15 pci_claim_resource +EXPORT_SYMBOL vmlinux 0xe5ed5467 xfrm_policy_walk_init +EXPORT_SYMBOL vmlinux 0xe5f70607 devm_ioremap +EXPORT_SYMBOL vmlinux 0xe6162877 down_killable +EXPORT_SYMBOL vmlinux 0xe632d2ac dm_get_device +EXPORT_SYMBOL vmlinux 0xe64cf22b agp_generic_create_gatt_table +EXPORT_SYMBOL vmlinux 0xe64d98fe rdmsr_safe_regs +EXPORT_SYMBOL vmlinux 0xe64e0a67 __serio_register_driver +EXPORT_SYMBOL vmlinux 0xe6578689 dev_get_by_name_rcu +EXPORT_SYMBOL vmlinux 0xe666e4b3 pcim_iomap_regions +EXPORT_SYMBOL vmlinux 0xe66b1e4f tcp_openreq_init_rwin +EXPORT_SYMBOL vmlinux 0xe67d3bc5 fb_show_logo +EXPORT_SYMBOL vmlinux 0xe688b248 __brelse +EXPORT_SYMBOL vmlinux 0xe690fde3 netdev_info +EXPORT_SYMBOL vmlinux 0xe693a6ce vme_get_size +EXPORT_SYMBOL vmlinux 0xe697d108 __blk_iopoll_complete +EXPORT_SYMBOL vmlinux 0xe698aa30 bio_add_page +EXPORT_SYMBOL vmlinux 0xe69b293f kset_unregister +EXPORT_SYMBOL vmlinux 0xe6a3dcf9 neigh_for_each +EXPORT_SYMBOL vmlinux 0xe6bda532 param_ops_invbool +EXPORT_SYMBOL vmlinux 0xe6c43005 udp_lib_getsockopt +EXPORT_SYMBOL vmlinux 0xe6d11a2d rwsem_down_read_failed +EXPORT_SYMBOL vmlinux 0xe6e75ee1 devfreq_remove_governor +EXPORT_SYMBOL vmlinux 0xe6ebc016 key_create_or_update +EXPORT_SYMBOL vmlinux 0xe6fbe430 can_do_mlock +EXPORT_SYMBOL vmlinux 0xe705ca18 d_instantiate_no_diralias +EXPORT_SYMBOL vmlinux 0xe716baed acpi_unregister_ioapic +EXPORT_SYMBOL vmlinux 0xe71a16d7 set_pages_array_uc +EXPORT_SYMBOL vmlinux 0xe736536f tcf_em_tree_validate +EXPORT_SYMBOL vmlinux 0xe7425daf filemap_write_and_wait_range +EXPORT_SYMBOL vmlinux 0xe7503a5c netlink_set_err +EXPORT_SYMBOL vmlinux 0xe75db8d5 inet_dgram_ops +EXPORT_SYMBOL vmlinux 0xe77536c9 udp_flush_pending_frames +EXPORT_SYMBOL vmlinux 0xe77d389a gen_pool_dma_alloc +EXPORT_SYMBOL vmlinux 0xe781b5f6 intel_scu_ipc_readv +EXPORT_SYMBOL vmlinux 0xe78da251 user_path_at_empty +EXPORT_SYMBOL vmlinux 0xe7988b3c param_ops_bool +EXPORT_SYMBOL vmlinux 0xe7a664c4 nf_hooks +EXPORT_SYMBOL vmlinux 0xe7a81967 audit_log_secctx +EXPORT_SYMBOL vmlinux 0xe7b18371 fb_prepare_logo +EXPORT_SYMBOL vmlinux 0xe7b6315e kblockd_schedule_delayed_work_on +EXPORT_SYMBOL vmlinux 0xe7d027ac vme_unregister_driver +EXPORT_SYMBOL vmlinux 0xe7d4daac seq_list_next +EXPORT_SYMBOL vmlinux 0xe7dd61ed swiotlb_map_sg_attrs +EXPORT_SYMBOL vmlinux 0xe7f51af7 dmam_declare_coherent_memory +EXPORT_SYMBOL vmlinux 0xe8102418 lease_modify +EXPORT_SYMBOL vmlinux 0xe816fcc2 clear_nlink +EXPORT_SYMBOL vmlinux 0xe81ef1dd remove_conflicting_framebuffers +EXPORT_SYMBOL vmlinux 0xe8214184 tcf_exts_destroy +EXPORT_SYMBOL vmlinux 0xe83cb559 dcb_ieee_delapp +EXPORT_SYMBOL vmlinux 0xe844d704 sock_no_mmap +EXPORT_SYMBOL vmlinux 0xe850056c mmc_add_host +EXPORT_SYMBOL vmlinux 0xe86550bc __scm_destroy +EXPORT_SYMBOL vmlinux 0xe87025f0 acpi_evaluate_object_typed +EXPORT_SYMBOL vmlinux 0xe8794ce1 slhc_toss +EXPORT_SYMBOL vmlinux 0xe87b2edd sg_copy_buffer +EXPORT_SYMBOL vmlinux 0xe890eac6 _raw_write_lock_irq +EXPORT_SYMBOL vmlinux 0xe893fee7 mem_cgroup_end_page_stat +EXPORT_SYMBOL vmlinux 0xe8a7b3af tty_name +EXPORT_SYMBOL vmlinux 0xe8b68849 wrmsr_on_cpus +EXPORT_SYMBOL vmlinux 0xe8b79ea9 tcp_parse_options +EXPORT_SYMBOL vmlinux 0xe8b9bf06 mutex_lock_interruptible +EXPORT_SYMBOL vmlinux 0xe8bd8402 t10_pi_type3_crc +EXPORT_SYMBOL vmlinux 0xe8bea3bc qdisc_put_stab +EXPORT_SYMBOL vmlinux 0xe8e3b97b twl6040_clear_bits +EXPORT_SYMBOL vmlinux 0xe8f081a9 udplite_prot +EXPORT_SYMBOL vmlinux 0xe913a941 ihold +EXPORT_SYMBOL vmlinux 0xe914e41e strcpy +EXPORT_SYMBOL vmlinux 0xe91c0d8b skb_pad +EXPORT_SYMBOL vmlinux 0xe91edd05 fsnotify_init_mark +EXPORT_SYMBOL vmlinux 0xe93f6042 trace_print_symbols_seq +EXPORT_SYMBOL vmlinux 0xe942e4bd __sock_tx_timestamp +EXPORT_SYMBOL vmlinux 0xe9510a97 ipv4_specific +EXPORT_SYMBOL vmlinux 0xe953b21f get_next_ino +EXPORT_SYMBOL vmlinux 0xe95b2c2d inode_reclaim_rsv_space +EXPORT_SYMBOL vmlinux 0xe95ce8ed scsi_cmd_ioctl +EXPORT_SYMBOL vmlinux 0xe95e00cf flex_array_get_ptr +EXPORT_SYMBOL vmlinux 0xe997667b wrmsr_on_cpu +EXPORT_SYMBOL vmlinux 0xe99b0074 open_check_o_direct +EXPORT_SYMBOL vmlinux 0xe9a1c311 register_gifconf +EXPORT_SYMBOL vmlinux 0xe9acfac4 tcf_hash_new_index +EXPORT_SYMBOL vmlinux 0xe9f7149c zlib_deflate_workspacesize +EXPORT_SYMBOL vmlinux 0xe9fe4dad put_io_context +EXPORT_SYMBOL vmlinux 0xea054b22 nla_policy_len +EXPORT_SYMBOL vmlinux 0xea16dd4c tcp_destroy_cgroup +EXPORT_SYMBOL vmlinux 0xea175476 sdev_prefix_printk +EXPORT_SYMBOL vmlinux 0xea56572d tcp_rtx_synack +EXPORT_SYMBOL vmlinux 0xea65547d jbd2__journal_start +EXPORT_SYMBOL vmlinux 0xea7987f1 key_update +EXPORT_SYMBOL vmlinux 0xea7a42f9 __sg_free_table +EXPORT_SYMBOL vmlinux 0xea7b8a44 acpi_install_interface +EXPORT_SYMBOL vmlinux 0xea90bdd3 acpi_attach_data +EXPORT_SYMBOL vmlinux 0xeac8d196 kill_block_super +EXPORT_SYMBOL vmlinux 0xeacd1ff1 d_prune_aliases +EXPORT_SYMBOL vmlinux 0xeae3dfd6 __const_udelay +EXPORT_SYMBOL vmlinux 0xeafc44aa sock_kmalloc +EXPORT_SYMBOL vmlinux 0xeb0da44c param_get_bool +EXPORT_SYMBOL vmlinux 0xeb1619ca dqput +EXPORT_SYMBOL vmlinux 0xeb2ec90a page_cache_prev_hole +EXPORT_SYMBOL vmlinux 0xeb333319 key_task_permission +EXPORT_SYMBOL vmlinux 0xeb37101c audit_log_end +EXPORT_SYMBOL vmlinux 0xeb38d29a __cleancache_get_page +EXPORT_SYMBOL vmlinux 0xeb486cda __quota_error +EXPORT_SYMBOL vmlinux 0xeb55a931 __kfifo_max_r +EXPORT_SYMBOL vmlinux 0xeb5ad6c5 generic_pipe_buf_confirm +EXPORT_SYMBOL vmlinux 0xeb63a5d8 padata_alloc +EXPORT_SYMBOL vmlinux 0xeb6bf4f5 blk_alloc_queue_node +EXPORT_SYMBOL vmlinux 0xeb7d2012 ppp_dev_name +EXPORT_SYMBOL vmlinux 0xeb9135a3 inet_add_protocol +EXPORT_SYMBOL vmlinux 0xeb9dbf96 generic_file_write_iter +EXPORT_SYMBOL vmlinux 0xeba3ff9c __scsi_iterate_devices +EXPORT_SYMBOL vmlinux 0xebaea330 lru_cache_add_file +EXPORT_SYMBOL vmlinux 0xebd0e3f2 set_bh_page +EXPORT_SYMBOL vmlinux 0xebff5cf5 fence_signal_locked +EXPORT_SYMBOL vmlinux 0xec1aa6ef memzero_explicit +EXPORT_SYMBOL vmlinux 0xec1f439a generic_shutdown_super +EXPORT_SYMBOL vmlinux 0xec20ae65 may_umount +EXPORT_SYMBOL vmlinux 0xec308393 try_to_release_page +EXPORT_SYMBOL vmlinux 0xec4d9e3a clk_get_sys +EXPORT_SYMBOL vmlinux 0xec4e5fd5 remove_arg_zero +EXPORT_SYMBOL vmlinux 0xec7293da down_write +EXPORT_SYMBOL vmlinux 0xec81a635 tty_driver_kref_put +EXPORT_SYMBOL vmlinux 0xec900bba unmap_mapping_range +EXPORT_SYMBOL vmlinux 0xec938b09 netif_rx_ni +EXPORT_SYMBOL vmlinux 0xec9a9db1 write_cache_pages +EXPORT_SYMBOL vmlinux 0xeca5d42d dev_add_offload +EXPORT_SYMBOL vmlinux 0xecb9a05d inode_init_once +EXPORT_SYMBOL vmlinux 0xecbcb8bb radix_tree_lookup_slot +EXPORT_SYMBOL vmlinux 0xeccd3e0c acpi_handle_printk +EXPORT_SYMBOL vmlinux 0xecd80d92 elevator_exit +EXPORT_SYMBOL vmlinux 0xece784c2 rb_first +EXPORT_SYMBOL vmlinux 0xecfd7329 __get_page_tail +EXPORT_SYMBOL vmlinux 0xed328201 __generic_file_fsync +EXPORT_SYMBOL vmlinux 0xed3329dd dquot_commit_info +EXPORT_SYMBOL vmlinux 0xed597524 qdisc_get_rtab +EXPORT_SYMBOL vmlinux 0xed59e553 get_acl +EXPORT_SYMBOL vmlinux 0xed5bc6d7 register_qdisc +EXPORT_SYMBOL vmlinux 0xed6c9d94 dev_get_nest_level +EXPORT_SYMBOL vmlinux 0xed73400c blk_run_queue +EXPORT_SYMBOL vmlinux 0xed8fae04 sk_ns_capable +EXPORT_SYMBOL vmlinux 0xed93f29e __kunmap_atomic +EXPORT_SYMBOL vmlinux 0xed9764c3 netlink_ns_capable +EXPORT_SYMBOL vmlinux 0xed9f9a20 __ctzsi2 +EXPORT_SYMBOL vmlinux 0xedb13e0b scsi_eh_prep_cmnd +EXPORT_SYMBOL vmlinux 0xedbaee5e nla_strcmp +EXPORT_SYMBOL vmlinux 0xedbd671e tty_unregister_driver +EXPORT_SYMBOL vmlinux 0xedbd968b component_match_add +EXPORT_SYMBOL vmlinux 0xedc03953 iounmap +EXPORT_SYMBOL vmlinux 0xedc99f4a __pagevec_release +EXPORT_SYMBOL vmlinux 0xedcca8b5 kmap_atomic_prot +EXPORT_SYMBOL vmlinux 0xedd2d352 mmc_alloc_host +EXPORT_SYMBOL vmlinux 0xedde962b blkdev_issue_write_same +EXPORT_SYMBOL vmlinux 0xee046550 __xfrm_policy_check +EXPORT_SYMBOL vmlinux 0xee22c25b inetpeer_invalidate_tree +EXPORT_SYMBOL vmlinux 0xee2326a1 bitmap_endwrite +EXPORT_SYMBOL vmlinux 0xee2d0fc7 _local_bh_enable +EXPORT_SYMBOL vmlinux 0xee33424a inet_bind +EXPORT_SYMBOL vmlinux 0xee3897ac netdev_bonding_info_change +EXPORT_SYMBOL vmlinux 0xee60c073 gnet_stats_copy_app +EXPORT_SYMBOL vmlinux 0xee7eb9e1 pnp_platform_devices +EXPORT_SYMBOL vmlinux 0xee91879b rb_first_postorder +EXPORT_SYMBOL vmlinux 0xeea9dbaf bitmap_bitremap +EXPORT_SYMBOL vmlinux 0xeebc5698 inode_get_bytes +EXPORT_SYMBOL vmlinux 0xeec75c99 unregister_filesystem +EXPORT_SYMBOL vmlinux 0xeee41531 pci_bus_assign_resources +EXPORT_SYMBOL vmlinux 0xeee5df9a inet6_protos +EXPORT_SYMBOL vmlinux 0xeef161aa groups_free +EXPORT_SYMBOL vmlinux 0xeef381a5 blk_queue_unprep_rq +EXPORT_SYMBOL vmlinux 0xef02009a iov_iter_get_pages +EXPORT_SYMBOL vmlinux 0xef0cdfef phy_attach_direct +EXPORT_SYMBOL vmlinux 0xef527472 from_kprojid_munged +EXPORT_SYMBOL vmlinux 0xef9aedfc boot_option_idle_override +EXPORT_SYMBOL vmlinux 0xefa9806b udp_push_pending_frames +EXPORT_SYMBOL vmlinux 0xefabd780 blk_mq_delay_queue +EXPORT_SYMBOL vmlinux 0xefae173d generic_delete_inode +EXPORT_SYMBOL vmlinux 0xefc1540d generic_setxattr +EXPORT_SYMBOL vmlinux 0xefcbdf0d kern_unmount +EXPORT_SYMBOL vmlinux 0xefd1624a vme_dma_free_attribute +EXPORT_SYMBOL vmlinux 0xefda8d99 abort_exclusive_wait +EXPORT_SYMBOL vmlinux 0xefdd70ce security_secid_to_secctx +EXPORT_SYMBOL vmlinux 0xefe099c3 acpi_get_event_status +EXPORT_SYMBOL vmlinux 0xeff74f8b mdio_bus_type +EXPORT_SYMBOL vmlinux 0xf0009fee put_pages_list +EXPORT_SYMBOL vmlinux 0xf0105126 key_instantiate_and_link +EXPORT_SYMBOL vmlinux 0xf0187927 __sg_page_iter_next +EXPORT_SYMBOL vmlinux 0xf01a72e8 netdev_lower_get_next_private +EXPORT_SYMBOL vmlinux 0xf01afffc neigh_connected_output +EXPORT_SYMBOL vmlinux 0xf0550e0e give_up_console +EXPORT_SYMBOL vmlinux 0xf058a5b1 filemap_page_mkwrite +EXPORT_SYMBOL vmlinux 0xf05ffa15 fb_var_to_videomode +EXPORT_SYMBOL vmlinux 0xf065f629 ioread16be +EXPORT_SYMBOL vmlinux 0xf067257c register_memory_isolate_notifier +EXPORT_SYMBOL vmlinux 0xf06b8cc0 vga_switcheroo_register_client +EXPORT_SYMBOL vmlinux 0xf07e6f19 neigh_seq_stop +EXPORT_SYMBOL vmlinux 0xf08242c2 finish_wait +EXPORT_SYMBOL vmlinux 0xf082999f skb_tx_error +EXPORT_SYMBOL vmlinux 0xf085f9ec in_dev_finish_destroy +EXPORT_SYMBOL vmlinux 0xf08c67de napi_alloc_frag +EXPORT_SYMBOL vmlinux 0xf08f76e2 skb_append +EXPORT_SYMBOL vmlinux 0xf09de776 get_random_int +EXPORT_SYMBOL vmlinux 0xf0c04773 pci_bus_read_dev_vendor_id +EXPORT_SYMBOL vmlinux 0xf0c6b12a dm_kcopyd_zero +EXPORT_SYMBOL vmlinux 0xf0cbe261 napi_gro_flush +EXPORT_SYMBOL vmlinux 0xf0ef15b4 list_sort +EXPORT_SYMBOL vmlinux 0xf1043ffc alloc_disk_node +EXPORT_SYMBOL vmlinux 0xf10526ac verify_spi_info +EXPORT_SYMBOL vmlinux 0xf10de535 ioread8 +EXPORT_SYMBOL vmlinux 0xf11543ff find_first_zero_bit +EXPORT_SYMBOL vmlinux 0xf11f369e mipi_dsi_dcs_soft_reset +EXPORT_SYMBOL vmlinux 0xf129997b input_alloc_absinfo +EXPORT_SYMBOL vmlinux 0xf1398e2e lg_local_unlock_cpu +EXPORT_SYMBOL vmlinux 0xf13b1cb2 bfifo_qdisc_ops +EXPORT_SYMBOL vmlinux 0xf147dcb2 hdmi_spd_infoframe_init +EXPORT_SYMBOL vmlinux 0xf18242e1 atomic64_set_cx8 +EXPORT_SYMBOL vmlinux 0xf195c682 fb_invert_cmaps +EXPORT_SYMBOL vmlinux 0xf1969a8e __usecs_to_jiffies +EXPORT_SYMBOL vmlinux 0xf19f5a9f flush_signals +EXPORT_SYMBOL vmlinux 0xf1a9e55c skb_try_coalesce +EXPORT_SYMBOL vmlinux 0xf1bae5a2 generic_file_open +EXPORT_SYMBOL vmlinux 0xf1bf4028 kfree_put_link +EXPORT_SYMBOL vmlinux 0xf1db1704 nla_memcpy +EXPORT_SYMBOL vmlinux 0xf1deabf2 div64_u64 +EXPORT_SYMBOL vmlinux 0xf1e98c74 avenrun +EXPORT_SYMBOL vmlinux 0xf1ea0d24 xfrm_state_alloc +EXPORT_SYMBOL vmlinux 0xf1ebfad9 sk_reset_timer +EXPORT_SYMBOL vmlinux 0xf1eea3a9 balance_dirty_pages_ratelimited +EXPORT_SYMBOL vmlinux 0xf2002265 crypto_sha1_update +EXPORT_SYMBOL vmlinux 0xf2072a8e dev_set_mtu +EXPORT_SYMBOL vmlinux 0xf20dabd8 free_irq +EXPORT_SYMBOL vmlinux 0xf229f5aa get_thermal_instance +EXPORT_SYMBOL vmlinux 0xf239e638 netdev_printk +EXPORT_SYMBOL vmlinux 0xf23fcb99 __kfifo_in +EXPORT_SYMBOL vmlinux 0xf267b92c mipi_dsi_detach +EXPORT_SYMBOL vmlinux 0xf28ed6e2 machine_to_phys_nr +EXPORT_SYMBOL vmlinux 0xf28f0e35 generic_writepages +EXPORT_SYMBOL vmlinux 0xf296043b max8925_reg_read +EXPORT_SYMBOL vmlinux 0xf2997713 tty_termios_hw_change +EXPORT_SYMBOL vmlinux 0xf2a0af8f backlight_device_registered +EXPORT_SYMBOL vmlinux 0xf2a0df88 xfrm_unregister_mode +EXPORT_SYMBOL vmlinux 0xf2a9089e console_stop +EXPORT_SYMBOL vmlinux 0xf2ae2b44 inode_claim_rsv_space +EXPORT_SYMBOL vmlinux 0xf2b1b3f9 param_get_ullong +EXPORT_SYMBOL vmlinux 0xf2bb6e30 blk_recount_segments +EXPORT_SYMBOL vmlinux 0xf2bddc96 sk_send_sigurg +EXPORT_SYMBOL vmlinux 0xf2c43f3f zlib_deflate +EXPORT_SYMBOL vmlinux 0xf2c69372 netpoll_poll_disable +EXPORT_SYMBOL vmlinux 0xf2ce2181 ps2_begin_command +EXPORT_SYMBOL vmlinux 0xf2f806ac ipv6_sock_mc_join +EXPORT_SYMBOL vmlinux 0xf2fa01c9 security_task_getsecid +EXPORT_SYMBOL vmlinux 0xf2fd95d6 security_file_permission +EXPORT_SYMBOL vmlinux 0xf301d1fe pcie_capability_write_word +EXPORT_SYMBOL vmlinux 0xf3080b04 pnp_request_card_device +EXPORT_SYMBOL vmlinux 0xf312cb9d ucs2_strsize +EXPORT_SYMBOL vmlinux 0xf313da4e sha_transform +EXPORT_SYMBOL vmlinux 0xf3341268 __clear_user +EXPORT_SYMBOL vmlinux 0xf33c5e7f kill_litter_super +EXPORT_SYMBOL vmlinux 0xf342287b misc_deregister +EXPORT_SYMBOL vmlinux 0xf34480e1 param_ops_charp +EXPORT_SYMBOL vmlinux 0xf346231f seq_list_start_head +EXPORT_SYMBOL vmlinux 0xf34a2e74 invalidate_bdev +EXPORT_SYMBOL vmlinux 0xf353a698 register_module_notifier +EXPORT_SYMBOL vmlinux 0xf389fe60 __hw_addr_init +EXPORT_SYMBOL vmlinux 0xf3916987 global_cursor_default +EXPORT_SYMBOL vmlinux 0xf396cd21 tcp_parse_md5sig_option +EXPORT_SYMBOL vmlinux 0xf3986b06 acpi_os_map_generic_address +EXPORT_SYMBOL vmlinux 0xf398cf04 __task_pid_nr_ns +EXPORT_SYMBOL vmlinux 0xf3af8e80 thaw_super +EXPORT_SYMBOL vmlinux 0xf3b467af tcf_hash_search +EXPORT_SYMBOL vmlinux 0xf3bff403 clk_add_alias +EXPORT_SYMBOL vmlinux 0xf3c1e256 inet_csk_init_xmit_timers +EXPORT_SYMBOL vmlinux 0xf3dddb4d finish_open +EXPORT_SYMBOL vmlinux 0xf3e6402e __bitmap_equal +EXPORT_SYMBOL vmlinux 0xf3fdef1d eisa_driver_unregister +EXPORT_SYMBOL vmlinux 0xf409e834 netif_carrier_on +EXPORT_SYMBOL vmlinux 0xf40b2297 __crypto_memneq +EXPORT_SYMBOL vmlinux 0xf412ffff phy_suspend +EXPORT_SYMBOL vmlinux 0xf4216caa xfrm_lookup +EXPORT_SYMBOL vmlinux 0xf441ac43 ioread8_rep +EXPORT_SYMBOL vmlinux 0xf450eecb set_security_override +EXPORT_SYMBOL vmlinux 0xf467edb7 drop_nlink +EXPORT_SYMBOL vmlinux 0xf474c21c bitmap_print_to_pagebuf +EXPORT_SYMBOL vmlinux 0xf474fdcb kfree_const +EXPORT_SYMBOL vmlinux 0xf47bb2a7 vme_dma_request +EXPORT_SYMBOL vmlinux 0xf499bce7 vfs_writef +EXPORT_SYMBOL vmlinux 0xf4a5c213 avail_to_resrv_perfctr_nmi_bit +EXPORT_SYMBOL vmlinux 0xf4af02af devm_request_any_context_irq +EXPORT_SYMBOL vmlinux 0xf4b754fd acpi_resources_are_enforced +EXPORT_SYMBOL vmlinux 0xf4bdbeb9 __frontswap_invalidate_area +EXPORT_SYMBOL vmlinux 0xf4d8438f skb_coalesce_rx_frag +EXPORT_SYMBOL vmlinux 0xf4ea0855 dev_open +EXPORT_SYMBOL vmlinux 0xf4f14de6 rtnl_trylock +EXPORT_SYMBOL vmlinux 0xf4f5f2d5 ioctl_by_bdev +EXPORT_SYMBOL vmlinux 0xf502d273 acpi_get_current_resources +EXPORT_SYMBOL vmlinux 0xf51ae235 touch_nmi_watchdog +EXPORT_SYMBOL vmlinux 0xf536d22e acpi_set_gpe_wake_mask +EXPORT_SYMBOL vmlinux 0xf53d4c26 qdisc_class_hash_destroy +EXPORT_SYMBOL vmlinux 0xf53fe11c proto_register +EXPORT_SYMBOL vmlinux 0xf57099e7 grab_cache_page_write_begin +EXPORT_SYMBOL vmlinux 0xf593a5d7 __register_binfmt +EXPORT_SYMBOL vmlinux 0xf599ac21 mmc_erase_group_aligned +EXPORT_SYMBOL vmlinux 0xf5a10e25 vme_slave_set +EXPORT_SYMBOL vmlinux 0xf5b10e67 acpi_install_global_event_handler +EXPORT_SYMBOL vmlinux 0xf5b2d520 xfrm_state_lookup +EXPORT_SYMBOL vmlinux 0xf5b44f0a unregister_netdevice_queue +EXPORT_SYMBOL vmlinux 0xf5c2d34d hdmi_audio_infoframe_init +EXPORT_SYMBOL vmlinux 0xf5ce2831 __kfree_skb +EXPORT_SYMBOL vmlinux 0xf5dcd80f mmc_unregister_driver +EXPORT_SYMBOL vmlinux 0xf5dd37f5 filemap_fdatawait +EXPORT_SYMBOL vmlinux 0xf5eb86ea blk_verify_command +EXPORT_SYMBOL vmlinux 0xf5ec53b5 __tcf_hash_release +EXPORT_SYMBOL vmlinux 0xf600a21c mmc_interrupt_hpi +EXPORT_SYMBOL vmlinux 0xf621bb7d queue_read_lock_slowpath +EXPORT_SYMBOL vmlinux 0xf62460a1 mmc_retune_timer_stop +EXPORT_SYMBOL vmlinux 0xf62fa8c8 pci_assign_resource +EXPORT_SYMBOL vmlinux 0xf6346414 copy_strings_kernel +EXPORT_SYMBOL vmlinux 0xf6388c56 sysctl_ip_default_ttl +EXPORT_SYMBOL vmlinux 0xf66b3a8b end_buffer_read_sync +EXPORT_SYMBOL vmlinux 0xf6770391 mac_pton +EXPORT_SYMBOL vmlinux 0xf68285c0 register_inetaddr_notifier +EXPORT_SYMBOL vmlinux 0xf68687be __sg_page_iter_start +EXPORT_SYMBOL vmlinux 0xf693a145 irq_stat +EXPORT_SYMBOL vmlinux 0xf6aca57a netlink_unicast +EXPORT_SYMBOL vmlinux 0xf6ae9df4 jbd2_journal_force_commit +EXPORT_SYMBOL vmlinux 0xf6b03d98 iunique +EXPORT_SYMBOL vmlinux 0xf6bb4729 color_table +EXPORT_SYMBOL vmlinux 0xf6d91960 copy_page_from_iter +EXPORT_SYMBOL vmlinux 0xf6ebc03b net_ratelimit +EXPORT_SYMBOL vmlinux 0xf6fc8791 __bitmap_xor +EXPORT_SYMBOL vmlinux 0xf6fcf318 __scsi_print_sense +EXPORT_SYMBOL vmlinux 0xf701c4fa key_type_keyring +EXPORT_SYMBOL vmlinux 0xf71705ef __inet_stream_connect +EXPORT_SYMBOL vmlinux 0xf726d02f atomic64_add_unless_cx8 +EXPORT_SYMBOL vmlinux 0xf728dc17 abx500_remove_ops +EXPORT_SYMBOL vmlinux 0xf745cb16 atomic64_sub_return_cx8 +EXPORT_SYMBOL vmlinux 0xf754d93a tty_port_close_start +EXPORT_SYMBOL vmlinux 0xf7584a9c find_font +EXPORT_SYMBOL vmlinux 0xf764868a udplite_table +EXPORT_SYMBOL vmlinux 0xf773d9fd rtnl_link_get_net +EXPORT_SYMBOL vmlinux 0xf77bb837 jbd2_journal_release_jbd_inode +EXPORT_SYMBOL vmlinux 0xf77d68ec iov_iter_zero +EXPORT_SYMBOL vmlinux 0xf788424d register_sysctl +EXPORT_SYMBOL vmlinux 0xf79e97cd acpi_get_physical_device_location +EXPORT_SYMBOL vmlinux 0xf7af0079 block_truncate_page +EXPORT_SYMBOL vmlinux 0xf7b348ac xfrm_state_walk_done +EXPORT_SYMBOL vmlinux 0xf7c522b0 devm_devfreq_register_opp_notifier +EXPORT_SYMBOL vmlinux 0xf7c819e9 ip_mc_dec_group +EXPORT_SYMBOL vmlinux 0xf7dc2e4b agp_alloc_bridge +EXPORT_SYMBOL vmlinux 0xf7dd9740 netdev_lower_get_first_private_rcu +EXPORT_SYMBOL vmlinux 0xf7f4138b kernel_read +EXPORT_SYMBOL vmlinux 0xf8050fac acpi_evaluate_object +EXPORT_SYMBOL vmlinux 0xf811e69d scsi_eh_flush_done_q +EXPORT_SYMBOL vmlinux 0xf81cae0d wireless_spy_update +EXPORT_SYMBOL vmlinux 0xf827cb83 free_reserved_area +EXPORT_SYMBOL vmlinux 0xf82abc1d isa_dma_bridge_buggy +EXPORT_SYMBOL vmlinux 0xf82ec573 rb_prev +EXPORT_SYMBOL vmlinux 0xf83ec7b3 param_get_ulong +EXPORT_SYMBOL vmlinux 0xf856ac67 dst_release +EXPORT_SYMBOL vmlinux 0xf869b12e dev_getbyhwaddr_rcu +EXPORT_SYMBOL vmlinux 0xf8716458 devfreq_add_device +EXPORT_SYMBOL vmlinux 0xf88e0ee2 acpi_get_table_header +EXPORT_SYMBOL vmlinux 0xf8bd203a mmc_remove_host +EXPORT_SYMBOL vmlinux 0xf8e2c1b4 put_tty_driver +EXPORT_SYMBOL vmlinux 0xf8fa24b6 netpoll_poll_enable +EXPORT_SYMBOL vmlinux 0xf90f5020 bio_copy_data +EXPORT_SYMBOL vmlinux 0xf9144830 blk_mq_tag_busy_iter +EXPORT_SYMBOL vmlinux 0xf9348cbc xz_dec_run +EXPORT_SYMBOL vmlinux 0xf9354df7 bdget_disk +EXPORT_SYMBOL vmlinux 0xf95a2fd4 xfrm6_prepare_output +EXPORT_SYMBOL vmlinux 0xf9616f45 agp_backend_acquire +EXPORT_SYMBOL vmlinux 0xf97aca64 simple_transaction_get +EXPORT_SYMBOL vmlinux 0xf97e040f tty_set_operations +EXPORT_SYMBOL vmlinux 0xf97e0cd3 single_open_size +EXPORT_SYMBOL vmlinux 0xf9804a40 invalidate_inode_buffers +EXPORT_SYMBOL vmlinux 0xf981ba3d __inet6_lookup_established +EXPORT_SYMBOL vmlinux 0xf98c5a6b dquot_get_dqblk +EXPORT_SYMBOL vmlinux 0xf9a482f9 msleep +EXPORT_SYMBOL vmlinux 0xf9a6933d nf_nat_decode_session_hook +EXPORT_SYMBOL vmlinux 0xf9c200fe block_write_end +EXPORT_SYMBOL vmlinux 0xf9cd4ffa phy_print_status +EXPORT_SYMBOL vmlinux 0xf9d2c5fd blk_alloc_queue +EXPORT_SYMBOL vmlinux 0xf9d5f513 bitmap_unplug +EXPORT_SYMBOL vmlinux 0xf9da1b76 dev_driver_string +EXPORT_SYMBOL vmlinux 0xf9e1d59f redraw_screen +EXPORT_SYMBOL vmlinux 0xf9e4ffc2 __block_write_begin +EXPORT_SYMBOL vmlinux 0xf9e73082 scnprintf +EXPORT_SYMBOL vmlinux 0xf9f7a4a1 nla_append +EXPORT_SYMBOL vmlinux 0xfa20c855 page_put_link +EXPORT_SYMBOL vmlinux 0xfa28e433 pci_biosrom_size +EXPORT_SYMBOL vmlinux 0xfa29a957 __dev_kfree_skb_irq +EXPORT_SYMBOL vmlinux 0xfa435d80 kfree_skb_list +EXPORT_SYMBOL vmlinux 0xfa599bb2 netlink_register_notifier +EXPORT_SYMBOL vmlinux 0xfa692cb8 param_set_long +EXPORT_SYMBOL vmlinux 0xfa79391a blk_delay_queue +EXPORT_SYMBOL vmlinux 0xfa7b3a4f xfrm_garbage_collect +EXPORT_SYMBOL vmlinux 0xfa90640b dma_alloc_from_coherent +EXPORT_SYMBOL vmlinux 0xfa978f7e tty_hung_up_p +EXPORT_SYMBOL vmlinux 0xfa98d2aa md_cluster_ops +EXPORT_SYMBOL vmlinux 0xfa9ead9c scsi_register +EXPORT_SYMBOL vmlinux 0xfaa221a4 qdisc_destroy +EXPORT_SYMBOL vmlinux 0xfac8865f sysctl_wmem_max +EXPORT_SYMBOL vmlinux 0xfacd8e72 vme_dma_vme_attribute +EXPORT_SYMBOL vmlinux 0xfaced743 gen_pool_set_algo +EXPORT_SYMBOL vmlinux 0xfad55d4d skb_ensure_writable +EXPORT_SYMBOL vmlinux 0xfad82ba6 __ip_dev_find +EXPORT_SYMBOL vmlinux 0xfae12272 __frontswap_load +EXPORT_SYMBOL vmlinux 0xfae67b1f cap_mmap_addr +EXPORT_SYMBOL vmlinux 0xfb00851b sk_capable +EXPORT_SYMBOL vmlinux 0xfb0443fb acpi_get_parent +EXPORT_SYMBOL vmlinux 0xfb27ee79 no_llseek +EXPORT_SYMBOL vmlinux 0xfb35109e jbd2_journal_update_sb_errno +EXPORT_SYMBOL vmlinux 0xfb35a720 kmem_cache_create +EXPORT_SYMBOL vmlinux 0xfb48066a blkdev_issue_discard +EXPORT_SYMBOL vmlinux 0xfb6af58d recalc_sigpending +EXPORT_SYMBOL vmlinux 0xfb6d45ed release_sock +EXPORT_SYMBOL vmlinux 0xfb705ed6 set_pages_x +EXPORT_SYMBOL vmlinux 0xfb80c7a0 acpi_walk_namespace +EXPORT_SYMBOL vmlinux 0xfb8119ca set_pages_nx +EXPORT_SYMBOL vmlinux 0xfb842aca d_alloc +EXPORT_SYMBOL vmlinux 0xfb94103e __clzdi2 +EXPORT_SYMBOL vmlinux 0xfba66c51 xfrm_stateonly_find +EXPORT_SYMBOL vmlinux 0xfbaaf01e console_lock +EXPORT_SYMBOL vmlinux 0xfbc4f89e io_schedule_timeout +EXPORT_SYMBOL vmlinux 0xfbc82bc1 generic_key_instantiate +EXPORT_SYMBOL vmlinux 0xfbd71298 lockref_get_not_dead +EXPORT_SYMBOL vmlinux 0xfbe8e95b iov_iter_init +EXPORT_SYMBOL vmlinux 0xfbf2673e write_one_page +EXPORT_SYMBOL vmlinux 0xfbfe5340 inode_sub_rsv_space +EXPORT_SYMBOL vmlinux 0xfc02b7ad sysctl_tcp_wmem +EXPORT_SYMBOL vmlinux 0xfc071a30 dma_async_device_unregister +EXPORT_SYMBOL vmlinux 0xfc0a8ec5 fsnotify_put_group +EXPORT_SYMBOL vmlinux 0xfc0f74af buffer_check_dirty_writeback +EXPORT_SYMBOL vmlinux 0xfc10021e mmc_release_host +EXPORT_SYMBOL vmlinux 0xfc18e5e3 ab3100_event_register +EXPORT_SYMBOL vmlinux 0xfc224887 csum_and_copy_from_iter +EXPORT_SYMBOL vmlinux 0xfc2f9dfa tty_unregister_device +EXPORT_SYMBOL vmlinux 0xfc35ce64 __remove_inode_hash +EXPORT_SYMBOL vmlinux 0xfc392cec release_pages +EXPORT_SYMBOL vmlinux 0xfc39e32f ioport_unmap +EXPORT_SYMBOL vmlinux 0xfc3cc328 nf_log_set +EXPORT_SYMBOL vmlinux 0xfc4f220d account_page_redirty +EXPORT_SYMBOL vmlinux 0xfc4f40a9 nvdimm_namespace_capacity +EXPORT_SYMBOL vmlinux 0xfc562165 acpi_run_osc +EXPORT_SYMBOL vmlinux 0xfc64a255 dev_addr_del +EXPORT_SYMBOL vmlinux 0xfc65459a kstrtoull_from_user +EXPORT_SYMBOL vmlinux 0xfc872fd1 get_ibs_caps +EXPORT_SYMBOL vmlinux 0xfc9e80af blk_rq_init +EXPORT_SYMBOL vmlinux 0xfcac0d40 acpi_install_interface_handler +EXPORT_SYMBOL vmlinux 0xfcc2a43c utf32_to_utf8 +EXPORT_SYMBOL vmlinux 0xfcd249e3 find_vma +EXPORT_SYMBOL vmlinux 0xfcd541c8 sock_no_connect +EXPORT_SYMBOL vmlinux 0xfce4345c serial8250_do_pm +EXPORT_SYMBOL vmlinux 0xfcec0987 enable_irq +EXPORT_SYMBOL vmlinux 0xfcedb2f4 __bread_gfp +EXPORT_SYMBOL vmlinux 0xfcfa03ff fb_videomode_to_modelist +EXPORT_SYMBOL vmlinux 0xfd0433f2 kset_register +EXPORT_SYMBOL vmlinux 0xfd3184dc vmap +EXPORT_SYMBOL vmlinux 0xfd33b5fa cmdline_parts_find +EXPORT_SYMBOL vmlinux 0xfd4540f4 skb_copy +EXPORT_SYMBOL vmlinux 0xfd620afb mpage_readpages +EXPORT_SYMBOL vmlinux 0xfd689789 blk_start_request +EXPORT_SYMBOL vmlinux 0xfd99623a ip_frag_ecn_table +EXPORT_SYMBOL vmlinux 0xfdb9b629 ioread32be +EXPORT_SYMBOL vmlinux 0xfdbe0288 pci_add_resource_offset +EXPORT_SYMBOL vmlinux 0xfdfc0b3b fiemap_fill_next_extent +EXPORT_SYMBOL vmlinux 0xfdfd6c90 add_wait_queue_exclusive +EXPORT_SYMBOL vmlinux 0xfe029963 unregister_inetaddr_notifier +EXPORT_SYMBOL vmlinux 0xfe047ce6 acpi_enter_sleep_state +EXPORT_SYMBOL vmlinux 0xfe04c570 vfs_statfs +EXPORT_SYMBOL vmlinux 0xfe093a6d mmc_detect_change +EXPORT_SYMBOL vmlinux 0xfe13c522 acpi_install_gpe_raw_handler +EXPORT_SYMBOL vmlinux 0xfe1b7d71 __sock_create +EXPORT_SYMBOL vmlinux 0xfe1c0d13 sock_release +EXPORT_SYMBOL vmlinux 0xfe555de5 kmap_atomic +EXPORT_SYMBOL vmlinux 0xfe5d4bb2 sys_tz +EXPORT_SYMBOL vmlinux 0xfe5fd6cb blk_mq_stop_hw_queue +EXPORT_SYMBOL vmlinux 0xfe7314c8 audit_log_task_info +EXPORT_SYMBOL vmlinux 0xfe7c4287 nr_cpu_ids +EXPORT_SYMBOL vmlinux 0xfe88b06a dcb_ieee_getapp_mask +EXPORT_SYMBOL vmlinux 0xfe9ebbbb acpi_osi_is_win8 +EXPORT_SYMBOL vmlinux 0xfeaedb86 rtnl_notify +EXPORT_SYMBOL vmlinux 0xfebd0638 inet_shutdown +EXPORT_SYMBOL vmlinux 0xfeca7590 radix_tree_range_tag_if_tagged +EXPORT_SYMBOL vmlinux 0xfedba5bb acpi_processor_notify_smm +EXPORT_SYMBOL vmlinux 0xfedcdb60 seq_hlist_next_percpu +EXPORT_SYMBOL vmlinux 0xfede9a09 zero_fill_bio +EXPORT_SYMBOL vmlinux 0xfef2c78f idr_get_next +EXPORT_SYMBOL vmlinux 0xff004372 i2c_smbus_read_block_data +EXPORT_SYMBOL vmlinux 0xff06bb0a blk_mq_end_request +EXPORT_SYMBOL vmlinux 0xff144da6 serio_reconnect +EXPORT_SYMBOL vmlinux 0xff1e9dd8 seq_list_start +EXPORT_SYMBOL vmlinux 0xff2ad57c ppp_input_error +EXPORT_SYMBOL vmlinux 0xff447220 nla_reserve +EXPORT_SYMBOL vmlinux 0xff480992 dump_fpu +EXPORT_SYMBOL vmlinux 0xff577e9e seq_lseek +EXPORT_SYMBOL vmlinux 0xff6878cf fb_default_cmap +EXPORT_SYMBOL vmlinux 0xff6a9ddf eth_header_cache_update +EXPORT_SYMBOL vmlinux 0xff7559e4 ioport_resource +EXPORT_SYMBOL vmlinux 0xff815ce8 fb_set_cmap +EXPORT_SYMBOL vmlinux 0xff9846b9 kernel_connect +EXPORT_SYMBOL vmlinux 0xff9bffb0 pci_wait_for_pending_transaction +EXPORT_SYMBOL vmlinux 0xff9ca065 fb_edid_to_monspecs +EXPORT_SYMBOL vmlinux 0xffb60304 jbd2_journal_load +EXPORT_SYMBOL vmlinux 0xffb96282 __skb_gso_segment +EXPORT_SYMBOL vmlinux 0xffbefb51 set_page_dirty_lock +EXPORT_SYMBOL vmlinux 0xffc82a48 vga_switcheroo_set_dynamic_switch +EXPORT_SYMBOL vmlinux 0xffc864a8 wait_iff_congested +EXPORT_SYMBOL vmlinux 0xffcc95c7 locks_init_lock +EXPORT_SYMBOL vmlinux 0xffd5a395 default_wake_function +EXPORT_SYMBOL vmlinux 0xffd955f1 set_device_ro +EXPORT_SYMBOL vmlinux 0xffdf50fc scsi_remove_device +EXPORT_SYMBOL_GPL arch/x86/crypto/aes-i586 0x7060bf0a crypto_aes_encrypt_x86 +EXPORT_SYMBOL_GPL arch/x86/crypto/aes-i586 0xe409b491 crypto_aes_decrypt_x86 +EXPORT_SYMBOL_GPL arch/x86/crypto/glue_helper 0x18e01654 glue_ecb_crypt_128bit +EXPORT_SYMBOL_GPL arch/x86/crypto/glue_helper 0x4e563787 glue_cbc_encrypt_128bit +EXPORT_SYMBOL_GPL arch/x86/crypto/glue_helper 0x5a365b0a glue_xts_crypt_128bit +EXPORT_SYMBOL_GPL arch/x86/crypto/glue_helper 0x8f02ac4d glue_xts_crypt_128bit_one +EXPORT_SYMBOL_GPL arch/x86/crypto/glue_helper 0x9e538848 glue_ctr_crypt_128bit +EXPORT_SYMBOL_GPL arch/x86/crypto/glue_helper 0xcfbc625d glue_cbc_decrypt_128bit +EXPORT_SYMBOL_GPL arch/x86/crypto/twofish-i586 0x28afd262 twofish_enc_blk +EXPORT_SYMBOL_GPL arch/x86/crypto/twofish-i586 0x6f068d90 twofish_dec_blk +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x00aaf935 kvm_disable_tdp +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x02d89c28 kvm_queue_exception +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x0d7746d4 kvm_x86_ops +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x11dd9fd9 kvm_set_cr0 +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x1288889d kvm_cpuid +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x15053178 kvm_cpu_get_interrupt +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x179629c4 kvm_task_switch +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x18e257ab __tracepoint_kvm_nested_vmexit +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x1971fcb9 kvm_get_dirty_log +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x19a4eaa5 kvm_vcpu_read_guest_page +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x1a4342a5 __tracepoint_kvm_invlpga +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x1c279cdc kvm_emulate_wbinvd +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x1d4920fc kvm_io_bus_write +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x1dba0be2 gfn_to_page_many_atomic +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x1ecc7bb3 kvm_mmu_reset_context +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x1fba18f5 kvm_vcpu_write_guest +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x2076cb86 kvm_get_apic_base +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x20de5193 kvm_disable_largepages +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x2322af0f kvm_mtrr_valid +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x2337fb9d kvm_read_guest +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x2433d6fd __tracepoint_kvm_exit +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x27046576 kvm_exit +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x2c78b8d4 __gfn_to_pfn_memslot +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x2de912ec kvm_vcpu_read_guest +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x2f636c31 kvm_spurious_fault +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x317f9e6b kvm_enable_efer_bits +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x33393fd6 __tracepoint_kvm_ple_window +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x3470b25e kvm_mmu_page_fault +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x3648f466 kvm_vcpu_init +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x38a29f42 kvm_rdpmc +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x3a024176 kvm_vcpu_yield_to +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x3b280380 kvm_arch_has_assigned_device +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x3bb9a13e kvm_read_guest_page +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x3bd1ec1b kvm_write_guest_virt_system +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x3e1f72e0 kvm_vcpu_cache +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x3e8859ca kvm_set_cr3 +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x3ee59a92 __tracepoint_kvm_skinit +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x41e23ce7 gfn_to_hva +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x43b32d6c kvm_read_guest_atomic +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x4560f21d x86_set_memory_region +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x485cd7f6 kvm_rebooting +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x490edf1e kvm_before_handle_nmi +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x4c98e1f3 __kvm_set_memory_region +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x517011ad __x86_set_memory_region +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x5b5d54fc kvm_mmu_unprotect_page +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x6260ac68 kvm_require_dr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x62d0376d kvm_read_guest_page_mmu +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x64020e10 kvm_set_shared_msr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x669da1fd kvm_set_pfn_dirty +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x673f8c8b kvm_set_apic_base +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x6825872a reprogram_counter +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x6b0965bc kvm_write_tsc +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x6b0b9c70 kvm_is_linear_rip +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x6f752db7 kvm_requeue_exception_e +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x6fb794cb kvm_inject_pending_timer_irqs +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x736908ff kvm_set_msr_common +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x746a2fce kvm_set_msr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x7548a5e4 kvm_emulate_halt +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x755ae052 kvm_mmu_unprotect_page_virt +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x75bb9afd kvm_is_visible_gfn +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x7753b5c0 kvm_write_guest +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x77a2aaab kvm_mmu_slot_leaf_clear_dirty +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x7aa64803 kvm_release_pfn_clean +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x7aecde5c kvm_get_cr8 +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x7aef681d kvm_set_cr4 +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x7b9d3b22 kvm_after_handle_nmi +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x7cc9f773 kvm_init_shadow_mmu +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x7d5fc3a9 kvm_find_cpuid_entry +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x7e170d7e kvm_debugfs_dir +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x7ebc73f6 kvm_mtrr_get_guest_memory_type +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x80b54c70 kvm_apic_write_nodecode +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x82d64717 kvm_mmu_slot_set_dirty +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x831327da kvm_max_guest_tsc_khz +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x84a2f56d kvm_vcpu_write_guest_page +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x84ceb28c __tracepoint_kvm_msr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x8517bf2e kvm_flush_remote_tlbs +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x87d48424 kvm_get_msr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x8abc2aa1 kvm_apic_update_irr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x8bb03e6e __tracepoint_kvm_write_tsc_offset +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x8bf1c4d5 load_pdptrs +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x8ce4f3ab kvm_enable_tdp +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x8da01274 kvm_get_pfn +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x8e1cd06f kvm_set_pfn_accessed +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x9030f1dc kvm_release_page_clean +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x90caee30 kvm_cpu_has_interrupt +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x9120a3b7 kvm_gfn_to_hva_cache_init +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x915205dd mark_page_dirty +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x9161da93 gfn_to_pfn_prot +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x922887bb kvm_vcpu_gfn_to_pfn_atomic +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x9266ad90 kvm_set_rflags +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x933a9f60 kvm_mmu_slot_largepage_remove_write_access +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x95f5ea14 kvm_vcpu_gfn_to_hva +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x962fe539 kvm_mmu_clear_dirty_pt_masked +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x98e9f2f0 kvm_get_rflags +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x9a216313 kvm_define_shared_msr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x9c461fb7 kvm_get_msr_common +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x9cab556c gfn_to_page +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x9d048b31 kvm_get_dirty_log_protect +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xa020c92c handle_mmio_page_fault_common +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xa0ec3a0a gfn_to_hva_memslot +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xa4630e3e kvm_require_cpl +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xa57526ef kvm_queue_exception_e +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xa77c5417 kvm_apic_set_eoi_accelerated +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xaa8f9c46 kvm_vcpu_uninit +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xaac7c868 __tracepoint_kvm_nested_intr_vmexit +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xab1936d3 kvm_set_memory_region +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xacbc8ddd kvm_emulate_cpuid +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xacf7f97c gfn_to_pfn_memslot_atomic +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xadd62bf9 kvm_vcpu_read_guest_atomic +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xade06ed5 kvm_vcpu_block +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xb0998988 kvm_vcpu_halt +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xb0f13c22 kvm_vcpu_kick +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xb22e17b6 kvm_put_kvm +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xb284eed4 __tracepoint_kvm_nested_vmexit_inject +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xb2a65cca __tracepoint_kvm_page_fault +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xb4eacc1f kvm_init +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xb522bda8 kvm_valid_efer +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xb8cf07b7 kvm_clear_guest +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xba9ed435 kvm_mmu_set_mmio_spte_mask +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xbb7c4b53 kvm_mmu_unload +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xbbd9f570 kvm_set_xcr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xbc2b538e __tracepoint_kvm_nested_vmrun +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xbe0f6d29 kvm_write_guest_page +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xbf05ab76 __tracepoint_kvm_inj_virq +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xc11cdb15 kvm_arch_end_assignment +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xc18cd35c kvm_mmu_get_spte_hierarchy +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xc1c2f046 __tracepoint_kvm_pml_full +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xc2b250d8 kvm_write_guest_cached +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xc56d75ce __kvm_apic_update_irr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xc5d65e67 kvm_requeue_exception +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xc603c7ae kvm_clear_guest_page +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xc6a11755 kvm_lapic_set_eoi +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xc7b87051 kvm_set_cr8 +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xc7dce384 kvm_inject_nmi +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xc7f874ce kvm_inject_page_fault +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xc82e2c6e kvm_lmsw +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xc9179046 kvm_fast_pio_out +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xcab8bc75 kvm_arch_start_assignment +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xcb2bbda1 kvm_get_kvm +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xcb67ce10 __tracepoint_kvm_nested_intercepts +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xd0459e67 kvm_has_tsc_control +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xd0b2727a kvm_mmu_set_mask_ptes +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xd1863f46 x86_emulate_instruction +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xd4b8828f kvm_vcpu_mark_page_dirty +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xd5452e80 kvm_mmu_invlpg +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xd5457792 kvm_emulate_hypercall +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xd71accdd gfn_to_memslot +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xd855f7f5 kvm_get_dr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xd920e0fa kvm_read_guest_virt +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xd93bbd46 gfn_to_pfn_memslot +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xd96b71bb cpuid_query_maxphyaddr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xdc1ada82 kvm_get_cs_db_l_bits +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xe1010183 kvm_irq_has_notifier +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xe1bbab86 kvm_read_guest_cached +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xe1cf7d1f kvm_mmu_sync_roots +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xe35c8f63 kvm_complete_insn_gp +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xe391e0d9 kvm_arch_has_noncoherent_dma +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xe40671ca reprogram_gp_counter +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xe6ef8626 kvm_vcpu_reload_apic_access_page +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xe7042b08 kvm_release_page_dirty +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xe9790e86 __tracepoint_kvm_cr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xeb7c0040 kvm_vcpu_gfn_to_page +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xec14a3db reprogram_fixed_counter +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xed697c66 gfn_to_pfn_atomic +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xee8183e2 kvm_get_linear_rip +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xf1fe252e kvm_arch_unregister_noncoherent_dma +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xf222e2ee kvm_arch_register_noncoherent_dma +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xf278afc0 kvm_vcpu_gfn_to_pfn +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xf2af67fb kvm_mmu_load +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xf5e040fe kvm_set_dr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xf659c690 kvm_inject_realmode_interrupt +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xf9182a66 gfn_to_pfn +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xfa3532e9 kvm_vcpu_on_spin +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xfda2d3f7 kvm_init_shadow_ept_mmu +EXPORT_SYMBOL_GPL crypto/ablk_helper 0x173f4f96 __ablk_encrypt +EXPORT_SYMBOL_GPL crypto/ablk_helper 0x612a9d13 ablk_decrypt +EXPORT_SYMBOL_GPL crypto/ablk_helper 0x816c80ca ablk_init +EXPORT_SYMBOL_GPL crypto/ablk_helper 0x92a2cc70 ablk_encrypt +EXPORT_SYMBOL_GPL crypto/ablk_helper 0xa89534aa ablk_init_common +EXPORT_SYMBOL_GPL crypto/ablk_helper 0xe9dd8e70 ablk_exit +EXPORT_SYMBOL_GPL crypto/ablk_helper 0xfef1b09f ablk_set_key +EXPORT_SYMBOL_GPL crypto/af_alg 0x11badcb8 af_alg_wait_for_completion +EXPORT_SYMBOL_GPL crypto/af_alg 0x3a043151 af_alg_free_sg +EXPORT_SYMBOL_GPL crypto/af_alg 0x49b5dba4 af_alg_complete +EXPORT_SYMBOL_GPL crypto/af_alg 0x8debeb57 af_alg_link_sg +EXPORT_SYMBOL_GPL crypto/af_alg 0xa89f73e2 af_alg_release +EXPORT_SYMBOL_GPL crypto/af_alg 0xbd4ca360 af_alg_cmsg_send +EXPORT_SYMBOL_GPL crypto/af_alg 0xd3faba52 af_alg_accept +EXPORT_SYMBOL_GPL crypto/af_alg 0xd5b06121 af_alg_make_sg +EXPORT_SYMBOL_GPL crypto/af_alg 0xd69eeb40 af_alg_register_type +EXPORT_SYMBOL_GPL crypto/af_alg 0xf5f72102 af_alg_unregister_type +EXPORT_SYMBOL_GPL crypto/asymmetric_keys/pkcs7_message 0x0c495886 pkcs7_get_content_data +EXPORT_SYMBOL_GPL crypto/asymmetric_keys/pkcs7_message 0x44e8d9ac pkcs7_free_message +EXPORT_SYMBOL_GPL crypto/asymmetric_keys/pkcs7_message 0x4cc33646 pkcs7_parse_message +EXPORT_SYMBOL_GPL crypto/asymmetric_keys/pkcs7_message 0x883bd89d pkcs7_verify +EXPORT_SYMBOL_GPL crypto/asymmetric_keys/pkcs7_message 0xe580c159 pkcs7_validate_trust +EXPORT_SYMBOL_GPL crypto/async_tx/async_memcpy 0x0eeffddf async_memcpy +EXPORT_SYMBOL_GPL crypto/async_tx/async_pq 0xa62a3a76 async_gen_syndrome +EXPORT_SYMBOL_GPL crypto/async_tx/async_pq 0xb26b3e4c async_syndrome_val +EXPORT_SYMBOL_GPL crypto/async_tx/async_raid6_recov 0xb9093930 async_raid6_2data_recov +EXPORT_SYMBOL_GPL crypto/async_tx/async_raid6_recov 0xd6a1a5ea async_raid6_datap_recov +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0x26dbe1f1 async_trigger_callback +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0xaec2675f async_tx_quiesce +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0xe292eba3 async_tx_submit +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0xed3be70a __async_tx_find_channel +EXPORT_SYMBOL_GPL crypto/async_tx/async_xor 0x02081f66 async_xor +EXPORT_SYMBOL_GPL crypto/async_tx/async_xor 0xc543f336 async_xor_val +EXPORT_SYMBOL_GPL crypto/authenc 0x587ef278 crypto_authenc_extractkeys +EXPORT_SYMBOL_GPL crypto/blowfish_common 0xb1f81d75 blowfish_setkey +EXPORT_SYMBOL_GPL crypto/cast5_generic 0x27278ca9 __cast5_encrypt +EXPORT_SYMBOL_GPL crypto/cast5_generic 0x4a2a3ca6 __cast5_decrypt +EXPORT_SYMBOL_GPL crypto/cast5_generic 0xf547097f cast5_setkey +EXPORT_SYMBOL_GPL crypto/cast6_generic 0x1291971c __cast6_setkey +EXPORT_SYMBOL_GPL crypto/cast6_generic 0x12f61f7a cast6_setkey +EXPORT_SYMBOL_GPL crypto/cast6_generic 0x1e2c961f __cast6_decrypt +EXPORT_SYMBOL_GPL crypto/cast6_generic 0x8f04034a __cast6_encrypt +EXPORT_SYMBOL_GPL crypto/cast_common 0x08aa6fb7 cast_s1 +EXPORT_SYMBOL_GPL crypto/cast_common 0x0c5fbf8a cast_s3 +EXPORT_SYMBOL_GPL crypto/cast_common 0xe39dd4b4 cast_s2 +EXPORT_SYMBOL_GPL crypto/cast_common 0xee83a4f3 cast_s4 +EXPORT_SYMBOL_GPL crypto/cryptd 0x0f3e9925 cryptd_alloc_ahash +EXPORT_SYMBOL_GPL crypto/cryptd 0x10f3aad8 cryptd_free_ablkcipher +EXPORT_SYMBOL_GPL crypto/cryptd 0x165326b2 cryptd_free_aead +EXPORT_SYMBOL_GPL crypto/cryptd 0x49a4adb6 cryptd_aead_child +EXPORT_SYMBOL_GPL crypto/cryptd 0x58a167e5 cryptd_shash_desc +EXPORT_SYMBOL_GPL crypto/cryptd 0x76b2d7cb cryptd_free_ahash +EXPORT_SYMBOL_GPL crypto/cryptd 0xca45c9fe cryptd_alloc_ablkcipher +EXPORT_SYMBOL_GPL crypto/cryptd 0xcd304640 cryptd_alloc_aead +EXPORT_SYMBOL_GPL crypto/cryptd 0xd34afde3 cryptd_ablkcipher_child +EXPORT_SYMBOL_GPL crypto/cryptd 0xf79de299 cryptd_ahash_child +EXPORT_SYMBOL_GPL crypto/crypto_null 0x21cd536a crypto_put_default_null_skcipher +EXPORT_SYMBOL_GPL crypto/crypto_null 0x4905e055 crypto_get_default_null_skcipher +EXPORT_SYMBOL_GPL crypto/des_generic 0xcfd9a2c0 des_ekey +EXPORT_SYMBOL_GPL crypto/des_generic 0xf8c78d49 __des3_ede_setkey +EXPORT_SYMBOL_GPL crypto/lrw 0x3864eb66 lrw_free_table +EXPORT_SYMBOL_GPL crypto/lrw 0xcd074900 lrw_init_table +EXPORT_SYMBOL_GPL crypto/lrw 0xcfc7d943 lrw_crypt +EXPORT_SYMBOL_GPL crypto/mcryptd 0x14bdd4d3 mcryptd_flusher +EXPORT_SYMBOL_GPL crypto/mcryptd 0x15ac4df9 shash_ahash_mcryptd_update +EXPORT_SYMBOL_GPL crypto/mcryptd 0x314e745e mcryptd_ahash_child +EXPORT_SYMBOL_GPL crypto/mcryptd 0x5bec2b92 shash_ahash_mcryptd_finup +EXPORT_SYMBOL_GPL crypto/mcryptd 0x5d46c9b5 mcryptd_alloc_ahash +EXPORT_SYMBOL_GPL crypto/mcryptd 0x7c883d0d shash_ahash_mcryptd_final +EXPORT_SYMBOL_GPL crypto/mcryptd 0x8256ade7 mcryptd_free_ahash +EXPORT_SYMBOL_GPL crypto/mcryptd 0xa484ce90 shash_ahash_mcryptd_digest +EXPORT_SYMBOL_GPL crypto/mcryptd 0xdd896f0e mcryptd_shash_desc +EXPORT_SYMBOL_GPL crypto/rsa_generic 0xadc25bd8 rsa_parse_key +EXPORT_SYMBOL_GPL crypto/rsa_generic 0xf1b141d1 rsa_free_key +EXPORT_SYMBOL_GPL crypto/serpent_generic 0x5ddb33e9 __serpent_encrypt +EXPORT_SYMBOL_GPL crypto/serpent_generic 0x77b39cb4 __serpent_setkey +EXPORT_SYMBOL_GPL crypto/serpent_generic 0x8a1a99ad __serpent_decrypt +EXPORT_SYMBOL_GPL crypto/serpent_generic 0xac970923 serpent_setkey +EXPORT_SYMBOL_GPL crypto/twofish_common 0x6c3229bb __twofish_setkey +EXPORT_SYMBOL_GPL crypto/twofish_common 0xd973f776 twofish_setkey +EXPORT_SYMBOL_GPL crypto/xts 0xd967adec xts_crypt +EXPORT_SYMBOL_GPL drivers/acpi/nfit 0xb946cdc7 acpi_nfit_attribute_groups +EXPORT_SYMBOL_GPL drivers/acpi/nfit 0xe433e44e acpi_nfit_init +EXPORT_SYMBOL_GPL drivers/acpi/sbshc 0x1c8984c7 acpi_smbus_unregister_callback +EXPORT_SYMBOL_GPL drivers/acpi/sbshc 0x87bd07bd acpi_smbus_register_callback +EXPORT_SYMBOL_GPL drivers/acpi/sbshc 0xb9a141b0 acpi_smbus_read +EXPORT_SYMBOL_GPL drivers/acpi/sbshc 0xe1372311 acpi_smbus_write +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x0870a62d ahci_fill_cmd_slot +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x127d27bd ahci_dev_classify +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x20f8c97c ahci_stop_engine +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x21d94da7 ahci_start_engine +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x363ed58e ahci_set_em_messages +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x3e63055a ahci_init_controller +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x46ada9d1 ahci_do_softreset +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x4a63768f ahci_start_fis_rx +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x590a09d5 ahci_ops +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x5e1ec2a6 ahci_save_initial_config +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x650d7e8d ahci_reset_controller +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x8ba854ac ahci_em_messages +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x91fd3011 ahci_kick_engine +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x934d003d ahci_sdev_attrs +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x9f59e243 ahci_pmp_retry_srst_ops +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xaf4e3517 ahci_error_handler +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xb95b7c1a ahci_host_activate +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xcc1f3c87 ahci_print_info +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xdb62f66b ahci_port_resume +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xe18703ba ahci_qc_issue +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xe8224f4f ahci_reset_em +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xea50dad3 ahci_ignore_sss +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xf2f3a23a ahci_check_ready +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xf7c429e9 ahci_shost_attrs +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x0f2cc677 ahci_platform_disable_regulators +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x26d536ac ahci_platform_enable_resources +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x50594962 ahci_platform_enable_regulators +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x528c263c ahci_platform_resume_host +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x56d22b95 ahci_platform_disable_resources +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x7112a87f ahci_platform_init_host +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x7ce8651c ahci_platform_ops +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x834d7a29 ahci_platform_resume +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x88eaa4b1 ahci_platform_get_resources +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x9ac7e56c ahci_platform_disable_clks +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0xa211dcfc ahci_platform_suspend_host +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0xef27b322 ahci_platform_suspend +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0xf9a63d05 ahci_platform_enable_clks +EXPORT_SYMBOL_GPL drivers/ata/pata_platform 0x367b42df __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/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-spmi 0x0f04160d devm_regmap_init_spmi_ext +EXPORT_SYMBOL_GPL drivers/base/regmap/regmap-spmi 0x21e34e77 devm_regmap_init_spmi_base +EXPORT_SYMBOL_GPL drivers/base/regmap/regmap-spmi 0x6ce1dd14 regmap_init_spmi_base +EXPORT_SYMBOL_GPL drivers/base/regmap/regmap-spmi 0xbff62d6d regmap_init_spmi_ext +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x00ce9298 bcma_chipco_gpio_out +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x00df3cf4 bcma_core_set_clockmode +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x2096c2a3 bcma_core_pll_ctl +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x258e6c06 bcma_chipco_pll_read +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x308c7987 bcma_chipco_gpio_outen +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x349befff bcma_chipco_regctl_maskset +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x5225589d bcma_find_core_unit +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x5ec42268 bcma_core_pci_power_save +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x63be5f5d bcma_core_is_enabled +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x82355d31 bcma_chipco_gpio_control +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x87e34b4b bcma_chipco_pll_write +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x88fc96dc bcma_chipco_chipctl_maskset +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x936544bf bcma_host_pci_down +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x937fb1da bcma_pmu_spuravoid_pllupdate +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xa8e1ebca bcma_chipco_b_mii_write +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xa8ea0022 bcma_chipco_get_alp_clock +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xb6275495 bcma_host_pci_irq_ctl +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xcb7e1150 bcma_core_disable +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xda6c086b bcma_host_pci_up +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xdcf0e2bd __bcma_driver_register +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xe9d3e20b bcma_core_enable +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xf014d446 bcma_chipco_pll_maskset +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xfb03206a bcma_pmu_get_bus_clock +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xfdf9e99b bcma_driver_unregister +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0x107823b1 btbcm_setup_apple +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0x23b55577 btbcm_finalize +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0x57f39c04 btbcm_setup_patchram +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0x7054a9ff btbcm_initialize +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0x8ad1b74f btbcm_set_bdaddr +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0x8b0a6e80 btbcm_check_bdaddr +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0x13319579 btintel_check_bdaddr +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0x28d489ce btintel_set_bdaddr +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x26916fdd btmrvl_check_evtpkt +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x2efdcb73 btmrvl_enable_ps +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x385c1614 btmrvl_register_hdev +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x60fff0d8 btmrvl_add_card +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x7d8ed8df btmrvl_process_event +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x8a655f38 btmrvl_enable_hs +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xa234e12a btmrvl_remove_card +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xb7b93113 btmrvl_interrupt +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xbde0f1be btmrvl_pscan_window_reporting +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xc0f33963 btmrvl_send_hscfg_cmd +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xf181c04b btmrvl_send_module_cfg_cmd +EXPORT_SYMBOL_GPL drivers/bluetooth/btrtl 0x826488d4 btrtl_setup_realtek +EXPORT_SYMBOL_GPL drivers/char/scx200_gpio 0xf87dafaa scx200_gpio_ops +EXPORT_SYMBOL_GPL drivers/crypto/ccp/ccp 0x04773b60 ccp_present +EXPORT_SYMBOL_GPL drivers/crypto/ccp/ccp 0x2448d332 ccp_enqueue_cmd +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0x04cbcb48 adf_service_register +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0x0bb6ff46 adf_dev_init +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0x28c1fbe1 adf_dev_shutdown +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0x3bc6d230 adf_devmgr_add_dev +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0x4c12ea06 adf_response_handler +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0x70ace672 adf_devmgr_rm_dev +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0x749349d0 adf_cfg_dev_add +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0x74ad36fd adf_dev_stop +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0x964498ec adf_init_etr_data +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0xa2ccaa1b adf_cfg_dev_remove +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0xaed75f0e adf_cleanup_etr_data +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0xb1d445ef adf_service_unregister +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0xc283c798 adf_cfg_section_add +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0xd5713f81 adf_dev_start +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0xe095597c adf_cfg_add_key_value_param +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0xe10b6c43 adf_disable_aer +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0xeec0d89f adf_devmgr_pci_to_accel_dev +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0xf9aeaae9 adf_enable_aer +EXPORT_SYMBOL_GPL drivers/dca/dca 0x00211873 register_dca_provider +EXPORT_SYMBOL_GPL drivers/dca/dca 0x01a33ab9 dca_unregister_notify +EXPORT_SYMBOL_GPL drivers/dca/dca 0x0e2d423b dca3_get_tag +EXPORT_SYMBOL_GPL drivers/dca/dca 0x2248ec7b free_dca_provider +EXPORT_SYMBOL_GPL drivers/dca/dca 0x31a2c8df dca_get_tag +EXPORT_SYMBOL_GPL drivers/dca/dca 0x32fe7abd dca_add_requester +EXPORT_SYMBOL_GPL drivers/dca/dca 0xac34ecec dca_register_notify +EXPORT_SYMBOL_GPL drivers/dca/dca 0xb92aa862 unregister_dca_provider +EXPORT_SYMBOL_GPL drivers/dca/dca 0xc16d4e49 dca_remove_requester +EXPORT_SYMBOL_GPL drivers/dca/dca 0xd2549cd7 alloc_dca_provider +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0x15302352 dw_dma_disable +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0x6c68327d dw_dma_filter +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0x761508b6 dw_dma_enable +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0xce9f0bf3 dw_dma_remove +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0xd094c0f5 dw_dma_probe +EXPORT_SYMBOL_GPL drivers/dma/hsu/hsu_dma 0x1fa195af hsu_dma_remove +EXPORT_SYMBOL_GPL drivers/dma/hsu/hsu_dma 0x5e7a18f0 hsu_dma_probe +EXPORT_SYMBOL_GPL drivers/dma/hsu/hsu_dma 0x698dea07 hsu_dma_irq +EXPORT_SYMBOL_GPL drivers/dma/virt-dma 0x1bb27253 vchan_dma_desc_free_list +EXPORT_SYMBOL_GPL drivers/dma/virt-dma 0xa90d8009 vchan_init +EXPORT_SYMBOL_GPL drivers/dma/virt-dma 0xee6758ad vchan_tx_submit +EXPORT_SYMBOL_GPL drivers/dma/virt-dma 0xf7cf63b0 vchan_find_desc +EXPORT_SYMBOL_GPL drivers/edac/amd64_edac_mod 0xe3b57a46 amd64_get_dram_hole_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x0c32ff8a edac_pci_alloc_index +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x0fb90d30 edac_mc_add_mc_with_groups +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x0fc8adc5 edac_pci_add_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x187afa44 edac_device_del_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x25a39a27 find_mci_by_dev +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x2c8dd6b8 edac_mem_types +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x40b05e23 edac_mc_find_csrow_by_page +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x47636afc edac_pci_create_generic_ctl +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x4e6fe043 edac_pci_free_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x5a64c2e7 edac_raw_mc_handle_error +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x6b7a5258 edac_pci_handle_npe +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x6ba0a05d edac_mc_del_mc +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x6e3ff83a edac_device_alloc_index +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x7e396a79 edac_pci_reset_delay_period +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x8bde4e5f edac_mc_handle_error +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x8dcac053 edac_device_free_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x98509bb2 edac_mc_alloc +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x9acc2e79 edac_pci_handle_pe +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x9ae75608 edac_pci_alloc_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xae76c781 edac_device_handle_ce +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xaeaec5ea edac_device_add_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xb372111a edac_device_alloc_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xbdbe885d edac_pci_release_generic_ctl +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xbee9b82e edac_device_handle_ue +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xc0dcb59e edac_layer_name +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xd8fc9a61 edac_pci_del_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xda66d2e3 edac_mc_free +EXPORT_SYMBOL_GPL drivers/edac/edac_mce_amd 0x14878009 amd_report_gart_errors +EXPORT_SYMBOL_GPL drivers/edac/edac_mce_amd 0x1d34e996 pp_msgs +EXPORT_SYMBOL_GPL drivers/edac/edac_mce_amd 0x21626132 amd_register_ecc_decoder +EXPORT_SYMBOL_GPL drivers/edac/edac_mce_amd 0x737912b3 amd_unregister_ecc_decoder +EXPORT_SYMBOL_GPL drivers/edac/edac_mce_amd 0xb30b7e56 amd_decode_mce +EXPORT_SYMBOL_GPL drivers/firewire/firewire-core 0xf4ade51f fw_card_release +EXPORT_SYMBOL_GPL drivers/gpio/gpio-cs5535 0x013fbdac cs5535_gpio_set +EXPORT_SYMBOL_GPL drivers/gpio/gpio-cs5535 0x93f8fe67 cs5535_gpio_set_irq +EXPORT_SYMBOL_GPL drivers/gpio/gpio-cs5535 0xc0bb404a cs5535_gpio_setup_event +EXPORT_SYMBOL_GPL drivers/gpio/gpio-cs5535 0xd3bd9300 cs5535_gpio_isset +EXPORT_SYMBOL_GPL drivers/gpio/gpio-cs5535 0xe07c0954 cs5535_gpio_clear +EXPORT_SYMBOL_GPL drivers/gpio/gpio-generic 0x447b0f36 bgpio_remove +EXPORT_SYMBOL_GPL drivers/gpio/gpio-generic 0x99cd3706 bgpio_init +EXPORT_SYMBOL_GPL drivers/gpio/gpio-max730x 0x34a6680e __max730x_remove +EXPORT_SYMBOL_GPL drivers/gpio/gpio-max730x 0xbbf74d5c __max730x_probe +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x047dad07 drm_class_device_register +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x4df1c73e drm_do_get_edid +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x7a9fc318 drm_class_device_unregister +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 0xe7237b0b i915_gpu_turbo_disable +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0x0fb819a8 ttm_dma_populate +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0x3a6e1ca0 ttm_dma_unpopulate +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0x6adf436b ttm_prime_fd_to_handle +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0xa200c479 ttm_dma_page_alloc_debugfs +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0xce36343e ttm_prime_handle_to_fd +EXPORT_SYMBOL_GPL drivers/hid/hid 0x008f4563 hid_input_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x02d02352 hid_open_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x05495392 hid_debug +EXPORT_SYMBOL_GPL drivers/hid/hid 0x09a67889 hidinput_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x0a4e188f hid_dump_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0x12992013 hid_debug_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0x1468cf0e hidraw_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x1bdc50ee hidinput_get_led_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0x1fa26700 hid_allocate_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0x20f2bece hid_dump_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x30157cc9 hidinput_count_leds +EXPORT_SYMBOL_GPL drivers/hid/hid 0x37cf0eb1 hid_ignore +EXPORT_SYMBOL_GPL drivers/hid/hid 0x41a4c308 hid_validate_values +EXPORT_SYMBOL_GPL drivers/hid/hid 0x43aa8c51 hidinput_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x4906a967 hid_snto32 +EXPORT_SYMBOL_GPL drivers/hid/hid 0x51db9eec hidraw_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x51f363a8 hid_check_keys_pressed +EXPORT_SYMBOL_GPL drivers/hid/hid 0x5b646a12 hidinput_calc_abs_res +EXPORT_SYMBOL_GPL drivers/hid/hid 0x643ae218 hid_dump_input +EXPORT_SYMBOL_GPL drivers/hid/hid 0x7b74db9b hid_field_extract +EXPORT_SYMBOL_GPL drivers/hid/hid 0x7fbcafac __hid_request +EXPORT_SYMBOL_GPL drivers/hid/hid 0x837280e8 hid_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x84bc170d hid_register_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x888e12e9 hid_report_raw_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0x8946f695 hid_output_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x91eef978 hid_destroy_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0x98e0abea hid_unregister_driver +EXPORT_SYMBOL_GPL drivers/hid/hid 0x9c823852 hid_resolv_usage +EXPORT_SYMBOL_GPL drivers/hid/hid 0xa96a9902 hid_parse_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0xab886186 hid_dump_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0xba254636 __hid_register_driver +EXPORT_SYMBOL_GPL drivers/hid/hid 0xba9e4b13 hid_add_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0xce724c0a hid_alloc_report_buf +EXPORT_SYMBOL_GPL drivers/hid/hid 0xcf17aad8 hidraw_report_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0xd2151a6d hidinput_find_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0xdbe63468 hid_set_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0xe8fbb925 hid_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0xf24148ec hidinput_report_event +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat 0x2f622ea1 roccat_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat 0x31cb72cb roccat_connect +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat 0x8c4181ec roccat_report_event +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x266c7eae roccat_common2_send_with_status +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x575a5a60 roccat_common2_device_init_struct +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x6a2b586e roccat_common2_receive +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x6f00a3ab roccat_common2_send +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0xb17e82b3 roccat_common2_sysfs_read +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0xc2567703 roccat_common2_sysfs_write +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x03785104 sensor_hub_device_open +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x447309f0 sensor_hub_input_attr_get_raw_value +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x5a967cd4 sensor_hub_get_feature +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x5cb987d6 sensor_hub_input_get_attribute_info +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x8c0d3991 sensor_hub_remove_callback +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x960e9318 hid_sensor_get_usage_index +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0xc833fcf7 sensor_hub_register_callback +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0xe14f1a09 sensor_hub_device_close +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0xf5b430a2 sensor_hub_set_feature +EXPORT_SYMBOL_GPL drivers/hid/usbhid/usbhid 0x01fd453e usbhid_lookup_quirk +EXPORT_SYMBOL_GPL drivers/hid/usbhid/usbhid 0x0d74bc8a hiddev_hid_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x31966aca hsi_async +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x3f069926 hsi_put_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x5a32b88d hsi_get_channel_id_by_name +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x5cb7df39 hsi_unregister_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x65eceb60 hsi_unregister_port_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x6d2852da hsi_port_unregister_clients +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x7285d678 hsi_alloc_msg +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x868b5a49 hsi_register_port_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xa895af2d hsi_remove_client +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xae0404d3 hsi_free_msg +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xb5c5a26d hsi_new_client +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xd29d7371 hsi_release_port +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xdb6e4a86 hsi_register_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xdbe5aab5 hsi_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xe0c19d98 hsi_register_client_driver +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xe389cff1 hsi_claim_port +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xfbb9a2f4 hsi_alloc_controller +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x01fa78c2 vmbus_sendpacket_multipagebuffer +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x236b28c6 vmbus_recvpacket_raw +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x2686b779 vmbus_are_subchannels_present +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x2b9e98c9 __vmbus_driver_register +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x2f1141a2 vmbus_get_outgoing_channel +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x358fafa5 vmbus_prep_negotiate_resp +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x44dbacf8 vmbus_establish_gpadl +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x46a417ca vmbus_proto_version +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x6ded48b8 vmbus_open +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x71be23f2 vmbus_sendpacket_pagebuffer_ctl +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x840c31d1 vmbus_sendpacket_pagebuffer +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x8762af1c vmbus_allocate_mmio +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x9f89824c vmbus_driver_unregister +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0xa00cce4b vmbus_set_sc_create_callback +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0xbdd84bc3 vmbus_teardown_gpadl +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0xc4ee1fd3 vmbus_close +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0xcb9549f8 vmbus_sendpacket_mpb_desc +EXPORT_SYMBOL_GPL drivers/hwmon/adt7x10 0x664a7ceb adt7x10_dev_pm_ops +EXPORT_SYMBOL_GPL drivers/hwmon/adt7x10 0x9f83a1f5 adt7x10_probe +EXPORT_SYMBOL_GPL drivers/hwmon/adt7x10 0xf1bba58c adt7x10_remove +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x22c58d4b pmbus_write_byte +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x2f945957 pmbus_write_word_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x34d693b0 pmbus_read_word_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x420e4366 pmbus_check_byte_register +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x5a102030 pmbus_do_remove +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x5f5e61e1 pmbus_do_probe +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x6aecb96f pmbus_write_byte_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xae50e273 pmbus_get_driver_info +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xb3e7df06 pmbus_read_byte_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xc94e634a pmbus_update_byte_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xcbd72559 pmbus_regulator_ops +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xcfdc0bba pmbus_set_page +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xebba493e pmbus_clear_cache +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xf2fb86d9 pmbus_check_word_register +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xfe1978c1 pmbus_clear_faults +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x4c6d7d91 i2c_dw_disable_int +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x5bb1170b i2c_dw_isr +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x7e5b4e69 i2c_dw_clear_int +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x811c27cc i2c_dw_enable +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x85f81a6b i2c_dw_func +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0xb4ec8fe4 i2c_dw_is_enabled +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0xb5f457c9 i2c_dw_init +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0xccda92c9 i2c_dw_xfer +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0xd5b5b6b2 i2c_dw_read_comp_param +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0xec132af8 i2c_dw_disable +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-nforce2 0x1c364788 nforce2_smbus +EXPORT_SYMBOL_GPL drivers/i2c/i2c-mux 0x6a4a11a3 i2c_del_mux_adapter +EXPORT_SYMBOL_GPL drivers/i2c/i2c-mux 0xab9c49c7 i2c_add_mux_adapter +EXPORT_SYMBOL_GPL drivers/i2c/i2c-smbus 0x39807c96 i2c_handle_smbus_alert +EXPORT_SYMBOL_GPL drivers/i2c/i2c-smbus 0x940507e3 i2c_setup_smbus_alert +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x088ac6d3 ad_sd_cleanup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x435ad145 ad_sigma_delta_single_conversion +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x5294f8c1 ad_sd_setup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x7000380a ad_sd_write_reg +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x85dcb686 ad_sd_calibrate_all +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x9f2e4f0b ad_sd_validate_trigger +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xd39d9e38 ad_sd_set_comm +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xd55e97bd ad_sd_init +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xdd419243 ad_sd_read_reg +EXPORT_SYMBOL_GPL drivers/iio/adc/twl4030-madc 0x4362dc66 twl4030_get_madc_conversion +EXPORT_SYMBOL_GPL drivers/iio/adc/twl4030-madc 0xb1be4a75 twl4030_madc_conversion +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x0d2212a5 adis_update_scan_mode +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x1805f956 adis_initial_startup +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x313fe216 adis_check_status +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x466a63f7 adis_probe_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x55aa2f2d adis_cleanup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x71403d0a adis_remove_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x83b50238 adis_single_conversion +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x8d86d3f4 adis_read_reg +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xbcb21e77 adis_reset +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xe2b52b0f adis_init +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xe52af2e3 adis_write_reg +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xe93259a6 adis_setup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x0047389f devm_iio_device_alloc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x0ba3f7b2 iio_channel_get_all +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x175c8617 iio_read_channel_average_raw +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x18a5e79e iio_write_channel_raw +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x267c0508 iio_channel_release_all_cb +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x26f6b499 iio_str_to_fixpoint +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x2a1fab3c iio_channel_stop_all_cb +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x2f05c423 iio_scan_mask_query +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x2f4b65aa iio_enum_write +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x30a370b5 iio_enum_available_read +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x31023686 devm_iio_trigger_free +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x314c67b5 iio_enum_read +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x3595f8d3 iio_read_channel_processed +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x3729c665 iio_convert_raw_to_processed +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x47938d2e devm_iio_trigger_alloc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x553afb34 iio_map_array_register +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x569e3a42 iio_channel_release_all +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x65f46572 iio_update_buffers +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x6aa8738e devm_iio_device_register +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x6d704612 iio_buffer_put +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x6eda4af2 iio_validate_scan_mask_onehot +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x7a711aef iio_channel_start_all_cb +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x82e27213 iio_read_channel_scale +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x8ce04dbe iio_map_array_unregister +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x989638e8 iio_update_demux +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x9aa8dbb2 iio_alloc_pollfunc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x9fa21465 iio_push_to_buffers +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xb269bb40 iio_channel_cb_get_channels +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xb3abd6a8 iio_channel_get_all_cb +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xbbef8505 devm_iio_device_free +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xbd2efc99 iio_channel_release +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xbf97eaa3 devm_iio_device_unregister +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xd2c1174c iio_dealloc_pollfunc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xddb33a53 iio_get_channel_type +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xe7444186 iio_buffer_get +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xf42a7ef7 iio_channel_get +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xfe26c871 iio_read_channel_raw +EXPORT_SYMBOL_GPL drivers/infiniband/core/ib_core 0xdbd019c4 ib_wq +EXPORT_SYMBOL_GPL drivers/input/ff-memless 0xff6cedd8 input_ff_create_memless +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 0x721672ae adxl34x_probe +EXPORT_SYMBOL_GPL drivers/input/misc/adxl34x 0xe4586827 adxl34x_resume +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp4_core 0x529773c7 cyttsp4_pm_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp4_core 0x5bf32d48 cyttsp4_remove +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp4_core 0x8923c2a2 cyttsp4_probe +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_core 0x7611d312 cyttsp_probe +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_core 0xa3f52074 cyttsp_remove +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_core 0xaddfe191 cyttsp_pm_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_i2c_common 0x03a55c84 cyttsp_i2c_read_block_data +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_i2c_common 0x9e2b30a7 cyttsp_i2c_write_block_data +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x003426fb wm97xx_unregister_mach_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x0313b36a wm97xx_reg_read +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x228f3b44 wm97xx_set_gpio +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x37e64dfd wm97xx_read_aux_adc +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x75318b97 wm9713_codec +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x7c793dad wm97xx_get_gpio +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xa4259653 wm9705_codec +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xa9465744 wm97xx_config_gpio +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xad9fb84c wm97xx_reg_write +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xb28360cb wm97xx_set_suspend_mode +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xb99b8b09 wm9712_codec +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xd0e2d2ee wm97xx_register_mach_ops +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x1ee30c6b ipack_device_init +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x7b2c3051 ipack_put_device +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x7f01f51c ipack_driver_unregister +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x83d7bf3f ipack_get_device +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0xac1ee46c ipack_device_add +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0xbced73da ipack_driver_register +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0xcf8f46f9 ipack_bus_unregister +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0xdb764fff ipack_device_del +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0xf2257ad1 ipack_bus_register +EXPORT_SYMBOL_GPL drivers/isdn/capi/kernelcapi 0x23359aff unregister_capictr_notifier +EXPORT_SYMBOL_GPL drivers/isdn/capi/kernelcapi 0xce1414b2 register_capictr_notifier +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x1bbe1705 gigaset_freecs +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x32562af9 gigaset_handle_modem_response +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x454aa44f gigaset_debuglevel +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x6b72161f gigaset_m10x_input +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x72dd76bd gigaset_freedriver +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x7faced44 gigaset_add_event +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x81d24a9a gigaset_isdn_rcv_err +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x8268c0e8 gigaset_m10x_send_skb +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x8eff32df gigaset_dbg_buffer +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x9767be3f gigaset_fill_inbuf +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xac324d2f gigaset_initdriver +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xb55a9ae0 gigaset_if_receive +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xc8c7e44b gigaset_skb_rcvd +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xd2bb6544 gigaset_stop +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xdb96e41f gigaset_shutdown +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xdece7f1d gigaset_blockdriver +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xe093ee0b gigaset_initcs +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xe4400f87 gigaset_skb_sent +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xfb07ba3f gigaset_start +EXPORT_SYMBOL_GPL drivers/leds/dell-led 0x86fd1ffb dell_app_wmi_led_set +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0x0bac2cbc led_set_flash_timeout +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0x11b3fa80 led_classdev_flash_register +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0x27a354bc led_set_flash_brightness +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0x3682b7ee led_classdev_flash_unregister +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0x562fc43f led_get_flash_fault +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0xd8436b02 led_update_flash_brightness +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/mcb/mcb 0x23570da9 mcb_get_irq +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x3e991eb4 mcb_free_dev +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x4c700ff2 mcb_bus_get +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x52bf8109 chameleon_parse_cells +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x6b9e21be mcb_request_mem +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x732424dd __mcb_register_driver +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x8656360c mcb_alloc_bus +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x89a81549 mcb_device_register +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x8bf52ac0 mcb_release_mem +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x94fd240a mcb_release_bus +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0xb19bc361 mcb_alloc_dev +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0xb9e4b468 mcb_bus_add_devices +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0xc15bfa3d mcb_bus_put +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0xc76ee636 mcb_unregister_driver +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x10e06e97 __tracepoint_bcache_btree_set_root +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x155ea9c7 __tracepoint_bcache_bypass_sequential +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x1822fd23 __tracepoint_bcache_btree_gc_coalesce +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x1f2ba9ac __tracepoint_bcache_journal_entry_full +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x260d47cf __tracepoint_bcache_btree_cache_cannibalize +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x27831e89 __tracepoint_bcache_journal_full +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x2dec45e0 __tracepoint_bcache_btree_write +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x347aebe1 __tracepoint_bcache_btree_node_free +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x41c861f0 __tracepoint_bcache_alloc_fail +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x480dc606 __tracepoint_bcache_invalidate +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x49856e5a __tracepoint_bcache_btree_node_compact +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x50e8c39f __tracepoint_bcache_write +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x574ba881 __tracepoint_bcache_btree_node_alloc +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x628eb712 __tracepoint_bcache_btree_insert_key +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x6770a402 __tracepoint_bcache_gc_copy_collision +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x785cfc9f __tracepoint_bcache_gc_end +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x91f2af34 __tracepoint_bcache_btree_node_alloc_fail +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xa09069a3 __tracepoint_bcache_writeback_collision +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xa591c5d6 __tracepoint_bcache_read +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xa6890b59 __tracepoint_bcache_btree_read +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xaf60c34b __tracepoint_bcache_journal_write +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xb950d2ae __tracepoint_bcache_request_start +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xbd4b89b6 __tracepoint_bcache_btree_node_split +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xce0e6218 __tracepoint_bcache_gc_copy +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xd40fba32 __tracepoint_bcache_gc_start +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xdc5ea5a5 __tracepoint_bcache_cache_insert +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xf58ce244 __tracepoint_bcache_journal_replay_key +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xf5bcbdc7 __tracepoint_bcache_read_retry +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xfc1d5275 __tracepoint_bcache_writeback +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xfcdf28c9 __tracepoint_bcache_request_end +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xffc308e4 __tracepoint_bcache_bypass_congested +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x094e999b dm_cell_release +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x17dd39d6 dm_deferred_set_create +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x1aa82196 dm_get_cell +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x2cd66eec 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 0x3f5d4152 dm_cell_error +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 0x82f4663d dm_cell_visit_release +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x8ac696fa dm_bio_prison_alloc_cell +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xa3f1e65b dm_bio_detain +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xadd5384a dm_cell_release_no_holder +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 0xf9fca75d dm_bio_prison_free_cell +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x083bf20d dm_bufio_client_create +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x0ad0dc4f dm_bufio_mark_buffer_dirty +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x22163b69 dm_bufio_release_move +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x3909d3a8 dm_bufio_prefetch +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x594952bd dm_bufio_read +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x62a23587 dm_bufio_get_device_size +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x6d3f57bd dm_bufio_get_client +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 0x9b2b253a dm_bufio_get +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xa82b2066 dm_bufio_write_dirty_buffers +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xc9a3422d dm_bufio_write_dirty_buffers_async +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xd4bddf5c dm_bufio_issue_flush +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xdc69e37a dm_bufio_get_block_number +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xe004ee92 dm_bufio_new +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-cache 0x06a1f930 dm_cache_policy_get_version +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x0a6e756a dm_cache_policy_create +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x2c94767c dm_cache_policy_unregister +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x3515e184 dm_cache_policy_get_name +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x67b1046f dm_cache_policy_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xe32736ae dm_cache_policy_register +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xfb5ce66a dm_cache_policy_get_hint_size +EXPORT_SYMBOL_GPL drivers/md/dm-multipath 0x7ad015de dm_unregister_path_selector +EXPORT_SYMBOL_GPL drivers/md/dm-multipath 0x9848a1b0 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 0x09472122 dm_rh_dec +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x0d5ae077 dm_region_hash_create +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 0x4101d451 dm_rh_delay +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x6e6cb581 dm_rh_bio_to_region +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x7774620f dm_rh_stop_recovery +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x7b5f9134 dm_rh_inc_pending +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x7d053fc5 dm_rh_start_recovery +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xa106c5a5 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 0xa8813ad6 dm_rh_region_to_sector +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xbe38a431 dm_rh_recovery_prepare +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xc66ce277 dm_rh_get_region_size +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xcab63c3d dm_rh_get_state +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xd8aa4284 dm_rh_region_context +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xf37a3cfe dm_rh_get_region_key +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xfd93482e dm_rh_recovery_in_flight +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xffd09a42 dm_rh_dirty_log +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 0x01445176 dm_btree_find_highest_key +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x0604db1b dm_btree_remove_leaves +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x11eab9fe dm_bm_read_lock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x150c85ce dm_tm_open_with_sm +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x1e3f728d dm_block_data +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x2025e954 dm_array_info_init +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x24fa6664 dm_bitset_set_bit +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x2c112836 dm_block_location +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x2e730a21 dm_bm_checksum +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 0x32b5f546 dm_array_empty +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x33c03da6 dm_sm_disk_open +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 0x3ad0f55b dm_bm_flush +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x40f7bd91 dm_tm_inc +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x4360913e dm_btree_find_lowest_key +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x5aed1dd7 dm_bitset_flush +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x5e6aea80 dm_btree_walk +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x619701dc dm_sm_disk_create +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x62c1b9ee dm_array_walk +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 0x72289260 dm_block_manager_destroy +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x7657e859 dm_bitset_clear_bit +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 0x80c89b3d dm_tm_unlock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x832bf228 dm_array_del +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x858c8d94 dm_array_set_value +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x89f1e1cc dm_btree_insert_notify +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 0x966a8838 dm_btree_lookup +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x9b4b5b29 dm_bm_write_lock +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 0xa2507774 dm_tm_shadow_block +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xa87c5b4d dm_array_resize +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xab96bd2d dm_bitset_test_bit +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xaee02382 dm_btree_empty +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xb4b92738 dm_block_manager_create +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xb7bad799 dm_bm_unlock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xb9a6ecf8 dm_tm_dec +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xba47c03a dm_bitset_del +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xbcfdc290 dm_tm_read_lock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xbd50ebbb dm_btree_del +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xbe0497aa dm_tm_create_with_sm +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xca40abd5 dm_btree_insert +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xd041d62b dm_array_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 0xead1e727 dm_bm_write_lock_zero +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xed1e1f96 dm_btree_remove +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xed58cfa1 dm_bitset_empty +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xf12ec3cd dm_disk_bitset_init +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xffff2ac3 dm_bitset_resize +EXPORT_SYMBOL_GPL drivers/media/common/b2c2/b2c2-flexcop 0x66c0289a b2c2_flexcop_debug +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x012b170b saa7146_pgtable_alloc +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x057ad3a5 saa7146_i2c_adapter_prepare +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x35318dfc saa7146_vfree_destroy_pgtable +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x9bbf21e6 saa7146_wait_for_debi_done +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x9f7d1777 saa7146_pgtable_free +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xa28d2d95 saa7146_setgpio +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xd02173bb saa7146_register_extension +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xd1fa670e saa7146_vmalloc_build_pgtable +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xd8b6c5b0 saa7146_unregister_extension +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xe3cd9b5c saa7146_debug +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xff974dda saa7146_pgtable_build_single +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x0b9ddfbf saa7146_unregister_device +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x32e3b000 saa7146_set_hps_source_and_sync +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x6eb5d058 saa7146_start_preview +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0xc5679bad saa7146_register_device +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0xc6fcae99 saa7146_vv_release +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0xecb4637d saa7146_vv_init +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0xfae3577d saa7146_stop_preview +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x0d6baad5 smscore_getbuffer +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x0f8f7435 smscore_start_device +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x21e36bf2 smscore_registry_getmode +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x259d66ba sms_board_led_feedback +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x277b9ab5 smscore_onresponse +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 0x605b0f34 smscore_putbuffer +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x63222b29 smsclient_sendrequest +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x6bc64300 smscore_register_client +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x73ce1442 sms_board_lna_control +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 0x85ff0fc0 sms_board_power +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x8ad5e380 smscore_register_hotplug +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x9c2225ed smscore_translate_msg +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xb6831173 smscore_unregister_hotplug +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xb9b30372 sms_board_event +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xbaf05a73 sms_board_setup +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xbbdb5c42 smscore_unregister_client +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xcc5a0789 smscore_get_device_mode +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xd31529ec smscore_set_board_id +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xe1cc40da smscore_get_board_id +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xe70944de smscore_register_device +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xe843de4d smscore_unregister_device +EXPORT_SYMBOL_GPL drivers/media/dvb-frontends/as102_fe 0xf75c712d as102_attach +EXPORT_SYMBOL_GPL drivers/media/dvb-frontends/cx24117 0x05a6c794 cx24117_attach +EXPORT_SYMBOL_GPL drivers/media/dvb-frontends/tda18271c2dd 0xa7cb3f4d tda18271c2dd_attach +EXPORT_SYMBOL_GPL drivers/media/media 0x015e00bd media_entity_put +EXPORT_SYMBOL_GPL drivers/media/media 0x0bbb7d6f media_entity_pipeline_start +EXPORT_SYMBOL_GPL drivers/media/media 0x11290d3a media_device_unregister +EXPORT_SYMBOL_GPL drivers/media/media 0x21615b2c media_entity_pipeline_stop +EXPORT_SYMBOL_GPL drivers/media/media 0x27d5a020 media_entity_create_link +EXPORT_SYMBOL_GPL drivers/media/media 0x2ceb5d6b media_entity_init +EXPORT_SYMBOL_GPL drivers/media/media 0x2ddd0971 media_device_unregister_entity +EXPORT_SYMBOL_GPL drivers/media/media 0x316a7f86 media_entity_cleanup +EXPORT_SYMBOL_GPL drivers/media/media 0x50983261 media_entity_find_link +EXPORT_SYMBOL_GPL drivers/media/media 0x66937e33 media_device_register_entity +EXPORT_SYMBOL_GPL drivers/media/media 0x73a13142 media_entity_remote_pad +EXPORT_SYMBOL_GPL drivers/media/media 0x907d4723 media_entity_setup_link +EXPORT_SYMBOL_GPL drivers/media/media 0x9e3d2eca media_entity_graph_walk_start +EXPORT_SYMBOL_GPL drivers/media/media 0xa55f2b61 media_entity_graph_walk_next +EXPORT_SYMBOL_GPL drivers/media/media 0xacaeeef8 __media_entity_remove_links +EXPORT_SYMBOL_GPL drivers/media/media 0xb0620847 media_entity_get +EXPORT_SYMBOL_GPL drivers/media/media 0xecfcb4d2 media_entity_remove_links +EXPORT_SYMBOL_GPL drivers/media/media 0xf513ac84 __media_device_register +EXPORT_SYMBOL_GPL drivers/media/pci/cx88/cx88xx 0xac040b3e cx88_setup_xc3028 +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x155d0253 mantis_dma_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x2c8f8006 mantis_uart_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x2d83f7f5 mantis_i2c_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x32222553 mantis_frontend_power +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x348eea28 mantis_pci_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x49001fc9 mantis_stream_control +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x4a85b432 mantis_input_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x527ff4ee mantis_dma_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x658f39aa mantis_pci_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x6aa10148 mantis_i2c_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x6bfa1d01 mantis_ca_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x7ff98ad6 mantis_gpio_set_bits +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x8153ac04 mantis_dvb_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x95bd8998 mantis_input_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xa95b661f mantis_ca_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xb24a0e81 mantis_frontend_soft_reset +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xc2c653f2 mantis_get_mac +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xc6715ab9 mantis_dvb_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xdddd78a3 mantis_uart_init +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x12af35a8 saa7134_ts_start_streaming +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x13d5dbef saa7134_ts_stop_streaming +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x26d9b83f saa7134_ts_queue_setup +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x26e75e6c saa7134_ts_buffer_prepare +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x395f3818 saa7134_s_input +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x495869be saa7134_s_tuner +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x4ffc2eaa saa7134_s_frequency +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x5e6ecf32 saa7134_querycap +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x6a161a6c saa7134_g_input +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x6c223f1b saa7134_g_std +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x70666350 saa7134_s_std +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x7649ab25 saa7134_ts_buffer_init +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x7a8444d3 saa7134_g_frequency +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x87d0615d saa7134_vb2_buffer_queue +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x890961b7 saa7134_ts_qops +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xa865838a saa7134_querystd +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xb18f8584 saa7134_g_tuner +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xd023ec6f saa7134_stop_streaming +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xe5c9aca8 saa7134_enum_input +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x045bc331 ttpci_budget_set_video_port +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x07dab361 ttpci_budget_init_hooks +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x5903853e ttpci_budget_debiread +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x60ec3481 ttpci_budget_init +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x7948c222 budget_debug +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x83eac096 ttpci_budget_debiwrite +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0xbb882fdf ttpci_budget_irq10_handler +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0xeb5a720c ttpci_budget_deinit +EXPORT_SYMBOL_GPL drivers/media/radio/radio-isa 0xa3420b06 radio_isa_probe +EXPORT_SYMBOL_GPL drivers/media/radio/radio-isa 0xbf72ab75 radio_isa_match +EXPORT_SYMBOL_GPL drivers/media/radio/radio-isa 0xc223b7d7 radio_isa_pnp_probe +EXPORT_SYMBOL_GPL drivers/media/radio/radio-isa 0xf610f6a3 radio_isa_remove +EXPORT_SYMBOL_GPL drivers/media/radio/radio-isa 0xf6312e0c radio_isa_pnp_remove +EXPORT_SYMBOL_GPL drivers/media/radio/shark2 0x19b051a3 radio_tea5777_exit +EXPORT_SYMBOL_GPL drivers/media/radio/shark2 0x1e419c01 radio_tea5777_init +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x09edf10d ir_raw_event_store +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x1360bf1b rc_free_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x149ed03f rc_open +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x313439ac rc_g_keycode_from_table +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x3b71274f rc_keydown_notimeout +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x3b8e3c2d ir_raw_event_store_with_filter +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x5306ed4f rc_keyup +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x553efb91 rc_core_debug +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x7d6427c8 rc_allocate_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x832a803f rc_map_unregister +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x93c4cf5e rc_close +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x98de735f rc_repeat +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xa3527498 rc_unregister_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xaa8c17cf rc_register_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xaf23c6cd rc_map_get +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xcdeb120e ir_raw_event_store_edge +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xd2715bc8 rc_keydown +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xf27c1ca7 rc_map_register +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xf6cf48c1 ir_raw_event_set_idle +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xf7f0015a ir_raw_event_handle +EXPORT_SYMBOL_GPL drivers/media/tuners/mt2063 0xf08b8823 mt2063_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/mt20xx 0x2fa0f7b4 microtune_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/mxl5007t 0x0fd0ae9b mxl5007t_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/r820t 0x50d4dcdf r820t_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda18271 0xe99c30a9 tda18271_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda827x 0x3a343eff tda827x_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda8290 0x0eb0ba16 tda829x_probe +EXPORT_SYMBOL_GPL drivers/media/tuners/tda8290 0x99fc6e00 tda829x_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda9887 0x6c943a22 tda9887_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5761 0x0b5ab1e7 tea5761_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5761 0x190a5da6 tea5761_autodetection +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5767 0xc545ec73 tea5767_autodetection +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5767 0xe2d41bb9 tea5767_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tuner-simple 0x780bed52 simple_tuner_attach +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x017ea7c7 cx231xx_tuner_callback +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x2ab7bce7 cx231xx_demod_reset +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x414f26d7 cx231xx_unmute_audio +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x49fd52a0 cx231xx_set_mode +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x4cbcdf54 cx231xx_send_usb_command +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x57a133ba cx231xx_get_i2c_adap +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x61fd99bc cx231xx_init_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x7638b468 cx231xx_enable656 +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x77080719 cx231xx_init_vbi_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x79459a26 cx231xx_send_gpio_cmd +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x7ee4b112 cx231xx_capture_start +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x89d1d88f cx231xx_set_alt_setting +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xa7beddbf cx231xx_init_bulk +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xa811c23a cx231xx_uninit_vbi_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xb0dc2ff8 cx231xx_uninit_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xb39c5505 cx231xx_uninit_bulk +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xc8fe128c is_fw_load +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xcb7ff22f cx231xx_dev_uninit +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xced587d3 cx231xx_dev_init +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xddc62522 cx231xx_disable656 +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xe6c1df85 cx231xx_enable_i2c_port_3 +EXPORT_SYMBOL_GPL drivers/media/usb/dvb-usb-v2/mxl111sf-demod 0x6aa88259 mxl111sf_demod_attach +EXPORT_SYMBOL_GPL drivers/media/usb/dvb-usb-v2/mxl111sf-tuner 0x576e8bb2 mxl111sf_tuner_attach +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x0ea6024f em28xx_read_ac97 +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x24fb7d0f em28xx_audio_analog_set +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x280822c2 em28xx_init_usb_xfer +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x4b87e8e8 em28xx_setup_xc3028 +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x5cd956ea em28xx_toggle_reg_bits +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x68b957ab em28xx_uninit_usb_xfer +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x69731c48 em28xx_alloc_urbs +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x6d578f78 em28xx_boards +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x7169c931 em28xx_write_reg +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x7fc8652c em28xx_tuner_callback +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x83c3f32f em28xx_audio_setup +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x8ea7031a em28xx_set_mode +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x98fb114e em28xx_find_led +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x99d342fd em28xx_write_ac97 +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xb1e9f26c em28xx_init_camera +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xc830e407 em28xx_write_reg_bits +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xcd75ef7f em28xx_free_device +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xcdab6a64 em28xx_write_regs +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xd4b50330 em28xx_stop_urbs +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xdd472129 em28xx_gpio_set +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xf7f86e6d em28xx_read_reg +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x00c4e0fe tm6000_get_reg +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x2309a6d6 tm6000_xc5000_callback +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x8580b36f tm6000_set_reg +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x89b611dd tm6000_debug +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0xbda695de tm6000_set_reg_mask +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0xc4f61920 tm6000_set_audio_bitrate +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0xdff8e89d tm6000_tuner_callback +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x01c483a9 v4l2_get_timestamp +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x26ab4fe0 v4l2_i2c_subdev_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x6eeb45f5 v4l2_i2c_new_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x813f3de4 v4l2_find_nearest_format +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x96b95681 v4l2_spi_new_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x9c39dd4e v4l2_i2c_new_subdev_board +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0xab73543f v4l2_i2c_subdev_addr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0xd43a55c4 v4l2_spi_subdev_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0xf2a353ac v4l2_i2c_tuner_addrs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0xf5ef842e v4l_bound_align_image +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x08982d59 v4l2_match_dv_timings +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x4103badb v4l2_print_dv_timings +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x5491c182 v4l2_enum_dv_timings_cap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x67b8205b v4l2_detect_cvt +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x6f344bb9 v4l2_calc_aspect_ratio +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0xb0891da2 v4l2_dv_timings_presets +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0xdfa5a008 v4l2_valid_dv_timings +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0xf0e1988c v4l2_find_dv_timings_cap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0xf98d0f9d v4l2_detect_gtf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-flash-led-class 0x00d3aa03 v4l2_flash_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-flash-led-class 0x900e93da v4l2_flash_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x01c10ff5 v4l2_m2m_buf_remove +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x02f1d8db v4l2_m2m_next_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x03c3a7a9 v4l2_m2m_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x05c12fc3 v4l2_m2m_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x061d1a7d v4l2_m2m_ioctl_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x17eb0eee v4l2_m2m_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x2769d1af v4l2_m2m_ioctl_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x42ccca70 v4l2_m2m_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x61878d7c v4l2_m2m_ioctl_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x6a6131ca v4l2_m2m_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x764e5454 v4l2_m2m_ioctl_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x791ef0f0 v4l2_m2m_ioctl_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x7aea2ccf v4l2_m2m_ioctl_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x869f07d3 v4l2_m2m_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xac320582 v4l2_m2m_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xb1e8805f v4l2_m2m_ctx_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xbcd93dc9 v4l2_m2m_ioctl_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xc6fca5ad v4l2_m2m_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xcd85f0dc v4l2_m2m_fop_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xe5241bae v4l2_m2m_ioctl_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xeadf0189 v4l2_m2m_ioctl_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xf36b412e v4l2_m2m_fop_mmap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xf3b24994 v4l2_m2m_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xf56a510f v4l2_m2m_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xf683c36b v4l2_m2m_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xf7160aa2 v4l2_m2m_buf_queue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xf71b56e5 v4l2_m2m_ctx_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xfb0dcd92 v4l2_m2m_try_schedule +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xfcc0ba7c v4l2_m2m_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x0091851c videobuf_read_stop +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x0edc4751 videobuf_waiton +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x0f1b0a61 videobuf_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x17f637ca videobuf_iolock +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x180bec16 videobuf_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x1d015c9e videobuf_stop +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x1d92d4ba videobuf_queue_cancel +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x2ea2616d videobuf_read_start +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x38241885 videobuf_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x3b7004aa videobuf_mmap_setup +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x438d5cd9 videobuf_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x4e6b81de videobuf_read_one +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x4f915e76 videobuf_mmap_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x625f0a07 videobuf_queue_core_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x6c61c39c videobuf_queue_is_busy +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x8b2a7098 videobuf_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x9da53cf7 videobuf_alloc_vb +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xa750cede __videobuf_mmap_setup +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xb89aed52 videobuf_read_stream +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xbd6475bd videobuf_next_field +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xca18fc68 videobuf_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xf2fe2d0c videobuf_queue_to_vaddr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xf3548550 videobuf_mmap_mapper +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xfa58fdfa videobuf_poll_stream +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-contig 0xabe9c924 videobuf_dma_contig_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-contig 0xc5188816 videobuf_queue_dma_contig_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-contig 0xdf370e82 videobuf_to_dma_contig +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x69127650 videobuf_dma_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x6b601bc1 videobuf_dma_unmap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x915f1fd1 videobuf_queue_sg_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0xa825c75b videobuf_sg_alloc +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0xf7effdb1 videobuf_to_dma +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-vmalloc 0x2a56246b videobuf_vmalloc_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-vmalloc 0x40610a9c videobuf_queue_vmalloc_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-vmalloc 0x582b6913 videobuf_to_vmalloc +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x188dc6f3 vb2_ioctl_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x1a6d3728 vb2_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x302bda91 vb2_plane_cookie +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x32ebb084 vb2_ops_wait_prepare +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x4a9e4edc vb2_thread_stop +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x4b345f14 vb2_queue_error +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x4c7b2c29 vb2_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x552e7480 vb2_queue_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x5abeb1c4 _vb2_fop_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x5e66ffda vb2_ioctl_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x5eea7a94 vb2_ioctl_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x62cd3b63 vb2_fop_mmap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x6e83ff95 vb2_ioctl_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x7aa96e94 vb2_fop_write +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x833ba6b8 vb2_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x85dd8415 vb2_buffer_done +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x8aa4833d vb2_discard_done +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x8b3c5042 vb2_write +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x8c3e132d vb2_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x8ee7f978 vb2_read +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x932d39b0 vb2_fop_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x9f1b8f49 vb2_wait_for_all_buffers +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xa9a26d51 vb2_fop_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xab058664 vb2_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xad8f671e vb2_queue_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xaebf61f2 vb2_ioctl_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xb04c2c8b vb2_ops_wait_finish +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xb5e5c777 vb2_ioctl_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xc111497e vb2_ioctl_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xc359e542 vb2_mmap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xcf0520de vb2_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xd5180db0 vb2_fop_read +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xd5ce3104 vb2_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xd5f82e6d vb2_thread_start +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xe5b620db vb2_ioctl_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xe91be851 vb2_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xee4cfa5c vb2_ioctl_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xef9e5237 vb2_plane_vaddr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xfc232105 vb2_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-contig 0xd008395b vb2_dma_contig_memops +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-contig 0xd30044aa vb2_dma_contig_init_ctx +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-contig 0xe57f0426 vb2_dma_contig_cleanup_ctx +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-sg 0xbdada9d1 vb2_dma_sg_memops +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-sg 0xd30ec30f vb2_dma_sg_cleanup_ctx +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-sg 0xde403b86 vb2_dma_sg_init_ctx +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-memops 0x5e60b5f4 vb2_put_vma +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-memops 0x61b152dc vb2_get_vma +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-memops 0x67c4c675 vb2_common_vm_ops +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-memops 0x95980d29 vb2_get_contig_userptr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-vmalloc 0x88b435d6 vb2_vmalloc_memops +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x02140c07 v4l2_device_register +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x0864175f v4l2_src_change_event_subdev_subscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x0a03cb07 v4l2_event_queue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x0f3b3a5c v4l2_event_unsubscribe_all +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x1254b225 v4l2_event_subdev_unsubscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x18824618 v4l2_device_set_name +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x2bf4e34c v4l2_device_register_subdev_nodes +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x2d576cdf v4l2_device_put +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x31bfc7c2 v4l2_device_disconnect +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x336c336d v4l2_fh_del +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x33fd8211 v4l2_fh_open +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x41af435b v4l2_device_unregister +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x6001fd12 v4l2_fh_is_singular +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x60e31032 v4l2_src_change_event_subscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x88dd933b v4l2_device_register_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x8d332c48 v4l2_subdev_link_validate_default +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x92af72fb v4l2_subdev_link_validate +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x9c2191de v4l2_fh_exit +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xacd79aae v4l2_event_pending +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xb46db3fd v4l2_fh_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xb8fb0e47 v4l2_event_subscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xb903a3f2 v4l2_event_queue_fh +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xbfddb919 v4l2_fh_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xe50670ef v4l2_fh_add +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xe81e7657 v4l2_event_unsubscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xf0a4f637 v4l2_device_unregister_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xfb38cb92 v4l2_event_dequeue +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0xb0c6617c pm80x_regmap_config +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0xd99fd720 pm80x_deinit +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0xe8a27a69 pm80x_pm_ops +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0xfec1703c pm80x_init +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0x188bc13b da9150_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0xa33001d7 da9150_set_bits +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0xbfece3ab da9150_bulk_read +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0xdb168c45 da9150_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0xfe1ba4af da9150_bulk_write +EXPORT_SYMBOL_GPL drivers/mfd/intel-lpss 0x2c9e2c87 intel_lpss_probe +EXPORT_SYMBOL_GPL drivers/mfd/intel-lpss 0x476dfeb2 intel_lpss_remove +EXPORT_SYMBOL_GPL drivers/mfd/intel-lpss 0x729c134e intel_lpss_prepare +EXPORT_SYMBOL_GPL drivers/mfd/intel-lpss 0xa0a84877 intel_lpss_resume +EXPORT_SYMBOL_GPL drivers/mfd/intel-lpss 0xade909a6 intel_lpss_suspend +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x107951fa kempld_get_mutex +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x31b0294b kempld_write8 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x5c18aba3 kempld_write32 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0xab0e0281 kempld_release_mutex +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0xaeae5fda kempld_read32 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0xb115a723 kempld_write16 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0xc2fbb021 kempld_read16 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0xfb952a5b kempld_read8 +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0x6650dedd lm3533_update +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0x70d984ba lm3533_write +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0x76055dcd lm3533_read +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x136ef021 lm3533_ctrlbank_set_brightness +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x4c3f7c4c lm3533_ctrlbank_set_max_current +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x586aae7b lm3533_ctrlbank_enable +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x74a2153d lm3533_ctrlbank_set_pwm +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0xbc9f5c3a lm3533_ctrlbank_get_pwm +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0xbd2173d6 lm3533_ctrlbank_disable +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0xf0caebf5 lm3533_ctrlbank_get_brightness +EXPORT_SYMBOL_GPL drivers/mfd/lp3943 0x50c37fa3 lp3943_write_byte +EXPORT_SYMBOL_GPL drivers/mfd/lp3943 0x5b04ea72 lp3943_read_byte +EXPORT_SYMBOL_GPL drivers/mfd/lp3943 0xb70c192e lp3943_update_bits +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x2f12cafc mc13xxx_variant_mc34708 +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x3d1d3f94 mc13xxx_variant_mc13783 +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x733ef641 mc13xxx_common_exit +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x7da774b4 mc13xxx_variant_mc13892 +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0xc698c8a6 mc13xxx_common_init +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0xc86caaa3 mc13xxx_adc_do_conversion +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x08376a7d pcf50633_write_block +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x149cae4e pcf50633_irq_mask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x2903c69b pcf50633_read_block +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x63385f4a pcf50633_register_irq +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x6d5e1cf2 pcf50633_free_irq +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x7540ef33 pcf50633_reg_clear_bits +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x7aa65bc1 pcf50633_irq_unmask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x93dd8470 pcf50633_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x941e1ac5 pcf50633_irq_mask_get +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xdff35512 pcf50633_reg_set_bit_mask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xfa4b5ba7 pcf50633_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-adc 0x3eb05f66 pcf50633_adc_sync_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-adc 0x5e1a6728 pcf50633_adc_async_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x2fce28e2 pcf50633_gpio_invert_set +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x4fa73584 pcf50633_gpio_invert_get +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x5b0b52e5 pcf50633_gpio_get +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0xc2f66d7b pcf50633_gpio_set +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0xf4fc062e pcf50633_gpio_power_supply_set +EXPORT_SYMBOL_GPL drivers/mfd/retu-mfd 0x01a33234 retu_write +EXPORT_SYMBOL_GPL drivers/mfd/retu-mfd 0x4fca3918 retu_read +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x091bf052 rtsx_pci_card_pull_ctl_enable +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x0fa1a3de rtsx_pci_complete_unfinished_transfer +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x2ea1413d rtsx_pci_stop_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x31848b9b rtsx_pci_read_ppbuf +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x410516d6 rtsx_pci_send_cmd_no_wait +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x494b827e rtsx_pci_start_run +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x612f15de rtsx_pci_send_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x64037d5c rtsx_pci_write_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x74a94fc3 rtsx_pci_read_phy_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x88cd94fc rtsx_pci_card_pull_ctl_disable +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x8da87d08 rtsx_pci_card_exclusive_check +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x8de75603 rtsx_pci_card_exist +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xb25a71de rtsx_pci_switch_clock +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xb2c896bd rtsx_pci_dma_unmap_sg +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xb4b40ab4 rtsx_pci_transfer_data +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xb7cccdb1 rtsx_pci_dma_transfer +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xbdc89e70 rtsx_pci_read_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xcdd192bc rtsx_pci_add_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xcdfef4a6 rtsx_pci_card_power_on +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xe5faa8ea rtsx_pci_switch_output_voltage +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xe8bf7cce rtsx_pci_write_phy_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xeae8c798 rtsx_pci_card_power_off +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xef411c15 rtsx_pci_dma_map_sg +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xf09cb718 rtsx_pci_write_ppbuf +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x030d7cf3 rtsx_usb_send_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x053b1041 rtsx_usb_read_ppbuf +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x4c111d97 rtsx_usb_read_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x6d6521dd rtsx_usb_write_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x72b57da5 rtsx_usb_add_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x736c065a rtsx_usb_ep0_write_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x755abf4c rtsx_usb_get_card_status +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x86eb5ebd rtsx_usb_switch_clock +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0xa3f88b79 rtsx_usb_get_rsp +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0xc070bebb rtsx_usb_card_exclusive_check +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0xd02819da rtsx_usb_write_ppbuf +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0xde7923b5 rtsx_usb_transfer_data +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0xe624cb41 rtsx_usb_ep0_read_register +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x0006baff si476x_core_cmd_get_property +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x12b15fa8 si476x_core_cmd_am_seek_start +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x144b9bf5 si476x_core_cmd_fm_rds_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x1520a97d si476x_core_cmd_zif_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x16cb8f64 si476x_core_cmd_am_tune_freq +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x192961d4 si476x_core_is_a_secondary_tuner +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x1a75b750 devm_regmap_init_si476x +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x1eb7e396 si476x_core_cmd_am_acf_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x26e08e28 si476x_core_has_am +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x3db3232a si476x_core_cmd_set_property +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x4612d13b si476x_core_cmd_power_up +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x49c6f2ec si476x_core_stop +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x54ec8e2c si476x_core_is_powered_up +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x633eaf36 si476x_core_cmd_func_info +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x6b465b5c si476x_core_i2c_xfer +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x7202c205 si476x_core_start +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x7260f5f8 si476x_core_cmd_fm_phase_div_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x7dd75f3b si476x_core_cmd_agc_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x843f55f3 si476x_core_cmd_fm_tune_freq +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x8b8dc4b2 si476x_core_is_in_am_receiver_mode +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x95cfbc9a si476x_core_cmd_ana_audio_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xa5ef38e7 si476x_core_cmd_ic_link_gpo_ctl_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xa8f2736d si476x_core_cmd_fm_phase_diversity +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xc2cf0ff6 si476x_core_cmd_am_rsq_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xcb5ccfa0 si476x_core_set_power_state +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xceebd926 si476x_core_has_diversity +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xd23b7117 si476x_core_cmd_power_down +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xd2d2e60a si476x_core_cmd_intb_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xdae0043d si476x_core_cmd_fm_rds_blockcount +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xe2e851d5 si476x_core_is_a_primary_tuner +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xe47650e5 si476x_core_cmd_fm_rsq_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xe4fb50c9 si476x_core_cmd_fm_acf_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xee33e7e7 si476x_core_cmd_dig_audio_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xfec4607e si476x_core_cmd_fm_seek_start +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x6eb12855 sm501_find_clock +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x73a77449 sm501_set_clock +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x86e75f69 sm501_modify_reg +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0xc891e42a sm501_misc_control +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0xd90bd173 sm501_unit_power +EXPORT_SYMBOL_GPL drivers/mfd/ti_am335x_tscadc 0x061be429 am335x_tsc_se_set_once +EXPORT_SYMBOL_GPL drivers/mfd/ti_am335x_tscadc 0x0756f263 am335x_tsc_se_set_cache +EXPORT_SYMBOL_GPL drivers/mfd/ti_am335x_tscadc 0x587d2261 am335x_tsc_se_adc_done +EXPORT_SYMBOL_GPL drivers/mfd/ti_am335x_tscadc 0xe4a969b7 am335x_tsc_se_clr +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0x48a02151 tps65217_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0x7f3fb600 tps65217_clear_bits +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0x846fc88e tps65217_set_bits +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0xd358aaf3 tps65217_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/tps65218 0x07ad63c4 tps65218_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/tps65218 0x1f198e13 tps65218_clear_bits +EXPORT_SYMBOL_GPL drivers/mfd/tps65218 0x2bf69fa7 tps65218_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/tps65218 0xea0eb3ff tps65218_set_bits +EXPORT_SYMBOL_GPL drivers/mfd/ucb1400_core 0x7a77c22e ucb1400_adc_read +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0x0a761432 cb710_sg_dwiter_write_next_block +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0x2639e540 cb710_pci_update_config_reg +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0x63dd4ab6 cb710_sg_dwiter_read_next_block +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0xc928f197 cb710_set_irq_handler +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0x1a1b5249 oslec_flush +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0x2feda75b oslec_hpf_tx +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0x3227a28e oslec_snapshot +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0x7dc9dddd oslec_adaption_mode +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0xb2c66001 oslec_create +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0xc8b5a524 oslec_free +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0xd370f679 oslec_update +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0x27cb133b eeprom_93cx6_multiread +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0x63d2ff63 eeprom_93cx6_wren +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0x793fc8de eeprom_93cx6_multireadb +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0x822222db eeprom_93cx6_write +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0x98bb5a22 eeprom_93cx6_read +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0xdb9ca14b eeprom_93cx6_readb +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x2906a723 enclosure_register +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x5270bc68 enclosure_component_register +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x6c78ac01 enclosure_find +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x73b70aa8 enclosure_unregister +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x977ea511 enclosure_for_each_device +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0xa9e64d83 enclosure_remove_device +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0xb045254d enclosure_add_device +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0xc5ff104d enclosure_component_alloc +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x0ff77fec lis3lv02d_joystick_enable +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x5dc8566c lis3lv02d_init_dt +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x61d7b8de lis3lv02d_poweroff +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x6366948f lis3_dev +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xa77be003 lis3lv02d_joystick_disable +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xa8a4887b lis3lv02d_remove_fs +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xd75c9ff4 lis3lv02d_init_device +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xeadd17b0 lis3lv02d_poweron +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x1177886a mei_cl_disable_device +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x20bb1003 mei_cl_set_drvdata +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x21b40311 mei_restart +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x2a9c5851 mei_irq_write_handler +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x57375a46 mei_cl_register_event_cb +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x5d2f2521 mei_device_init +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x60d8edcc __mei_cl_driver_register +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x65afb675 mei_deregister +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x66558bd4 mei_irq_read_handler +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x665beac3 mei_hbm_pg +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x74666b5e mei_cl_enable_device +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x833dbbc3 mei_start +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x980fe2aa mei_cancel_work +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0xa7cde74e mei_stop +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0xacb21b57 mei_reset +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0xb16c6061 mei_cl_driver_unregister +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0xb99d0159 mei_write_is_idle +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0xc8134140 mei_cl_recv +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0xcc2dd1c7 mei_hbm_pg_resume +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0xcf459843 mei_irq_compl_handler +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0xda27124f mei_fw_status2str +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0xdc901dd0 mei_cl_send +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0xe7f0e8b2 mei_register +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0xf985f6b0 mei_cl_get_drvdata +EXPORT_SYMBOL_GPL drivers/misc/pti 0x19f09b98 pti_release_masterchannel +EXPORT_SYMBOL_GPL drivers/misc/pti 0x23bde487 pti_request_masterchannel +EXPORT_SYMBOL_GPL drivers/misc/pti 0x52a78e81 pti_writedata +EXPORT_SYMBOL_GPL drivers/misc/ti-st/st_drv 0x55c61ed4 st_register +EXPORT_SYMBOL_GPL drivers/misc/ti-st/st_drv 0x77138830 st_unregister +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x0f6680ea vmci_qpair_produce_buf_ready +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x1152e318 vmci_qpair_get_produce_indexes +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x13aa5a5d vmci_datagram_create_handle +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x1515b5a5 vmci_qpair_peekv +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x1872c7af vmci_qpair_produce_free_space +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x1a195863 vmci_context_get_priv_flags +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x2e30d970 vmci_qpair_dequeue +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x3ef56cd5 vmci_qpair_alloc +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x4b630dac vmci_get_context_id +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x4ea2ccbc vmci_qpair_peek +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x50a255c9 vmci_doorbell_create +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x612df9ae vmci_qpair_detach +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x61572459 vmci_qpair_dequev +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x677c36d0 vmci_is_context_owner +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x69ef87ff vmci_datagram_destroy_handle +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x6cc1a5f7 vmci_datagram_create_handle_priv +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x722d488a vmci_event_unsubscribe +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x7d540b50 vmci_qpair_consume_free_space +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x8b8ad67a vmci_qpair_enqueue +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x9624c58c vmci_datagram_send +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x9973b9b2 vmci_qpair_consume_buf_ready +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x9d16164a vmci_send_datagram +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0xccbb53d1 vmci_doorbell_notify +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0xcf5ed7ef vmci_event_subscribe +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0xdac94780 vmci_qpair_get_consume_indexes +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0xdc9bf745 vmci_qpair_enquev +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0xe7e7c107 vmci_doorbell_destroy +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x30f7bb59 sdhci_alloc_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x385a8ba2 sdhci_set_uhs_signaling +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x3ee17539 sdhci_free_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x4e23db0b sdhci_runtime_resume_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x55c3d119 sdhci_add_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x5e06e733 sdhci_reset +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x70e9a569 sdhci_set_clock +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x71a8ce68 sdhci_enable_irq_wakeups +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x77f546a8 sdhci_resume_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xafdc0a5e sdhci_suspend_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xc220a807 sdhci_set_bus_width +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xcd0ad1c2 sdhci_remove_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xe03a2e91 sdhci_runtime_suspend_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xf743b7b9 sdhci_send_command +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x4ed28dbe sdhci_pltfm_pmops +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x588a93fa sdhci_pltfm_unregister +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x61b2c0b8 sdhci_get_of_property +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x63640423 sdhci_pltfm_suspend +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x6dddc3d8 sdhci_pltfm_clk_get_max_clock +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x91cdb1ef sdhci_pltfm_register +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0xc1ea6ba1 sdhci_pltfm_resume +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0xc2566895 sdhci_pltfm_free +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0xdc1fb235 sdhci_pltfm_init +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0x3e9b000e cfi_cmdset_0200 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0xc3852598 cfi_cmdset_0003 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0xfcac0070 cfi_cmdset_0001 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0x2b7c8571 cfi_cmdset_0006 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0x552ecea1 cfi_cmdset_0002 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0xa6d70127 cfi_cmdset_0701 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0020 0x4dd6d1eb cfi_cmdset_0020 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0x2e121f1d cfi_qry_present +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0x670d68c7 cfi_qry_mode_off +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0xfeb046bb cfi_qry_mode_on +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x126a9a9d get_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x12f6be9e mtd_lock_user_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x17d74bb2 mtd_kmalloc_up_to +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x3c99b305 mtd_block_markbad +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x4ddcfbb7 mtd_block_isreserved +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x4f2f860c mtd_is_partition +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x5076c6b1 mount_mtd +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x526da11f mtd_erase +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x5867779a mtd_writev +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x5ce4d4ae __get_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x6e5e6b11 mtd_read_user_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x6ef8d96f mtd_get_user_prot_info +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x6f08d5f2 get_mtd_device_nm +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x7669ab4e mtd_lock +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x776b5f6f mtd_get_fact_prot_info +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x7991fa2f mtd_get_unmapped_area +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x7c1db7e6 register_mtd_parser +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x823ab0ac mtd_get_device_size +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x836166b1 deregister_mtd_parser +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x84f9029f mtd_table_mutex +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x8b1fa0bd mtd_read +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x91ce6172 mtd_point +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x91ee1a87 mtd_read_fact_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x9439346a unregister_mtd_user +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x97e51f61 mtd_erase_callback +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xab811651 mtd_del_partition +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xb23e4427 __mtd_next_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xc6d47cfe put_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xc85682a8 mtd_panic_write +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xc8c04a07 mtd_write +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xca2bb14c mtd_write_user_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xcd375e58 mtd_device_parse_register +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xce634098 mtd_device_unregister +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xd4d973ef register_mtd_user +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xdde41453 mtd_unlock +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xe1199015 mtd_read_oob +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xe96e3083 kill_mtd_super +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xf04c4d9a mtd_add_partition +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xf2c5d879 mtd_unpoint +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xfbf6ea27 mtd_is_locked +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xfeb2587d mtd_block_isbad +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xfee76ce0 __put_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0x4d6fd0e5 mtd_blktrans_cease_background +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0x8c071f73 add_mtd_blktrans_dev +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0x9414d620 del_mtd_blktrans_dev +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0xe06966e4 deregister_mtd_blktrans +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0xf5ca0333 register_mtd_blktrans +EXPORT_SYMBOL_GPL drivers/mtd/nand/nand 0x3e78cd97 nand_wait_ready +EXPORT_SYMBOL_GPL drivers/mtd/nand/nand 0xdcf2d90a nand_release +EXPORT_SYMBOL_GPL drivers/mtd/nand/sm_common 0xd6d48afa sm_register_device +EXPORT_SYMBOL_GPL drivers/mtd/onenand/onenand 0x1e69e063 onenand_scan +EXPORT_SYMBOL_GPL drivers/mtd/onenand/onenand 0xde2a3650 onenand_release +EXPORT_SYMBOL_GPL drivers/mtd/spi-nor/spi-nor 0x02e2ad9f spi_nor_scan +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x0819db1f ubi_close_volume +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x20dc52a0 ubi_leb_read_sg +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x38e10c1d ubi_flush +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x419a58cc ubi_leb_write +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x42801d20 ubi_sync +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x5cfdd22d ubi_get_device_info +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x5f35cec5 ubi_open_volume +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x67a3e6f7 ubi_is_mapped +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x816cb184 ubi_open_volume_nm +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x85a8ee76 ubi_unregister_volume_notifier +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x92ebcb28 ubi_leb_erase +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x946b52a9 ubi_leb_read +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xa73cf39c ubi_leb_map +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xb4073980 ubi_do_get_device_info +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xb48d42d4 ubi_leb_unmap +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xbe6baa22 ubi_open_volume_path +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xce8ae76a ubi_leb_change +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xe7527d1b ubi_get_volume_info +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xf5ee9ba8 ubi_register_volume_notifier +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x08735216 alloc_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x08758fe6 c_can_power_up +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x4008af1e unregister_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x42eec03a register_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0xb5eebc2f c_can_power_down +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0xe87ac7a6 free_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x0d7437c6 close_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x13320091 register_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x140711a3 alloc_can_err_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x222c295a can_len2dlc +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x27e66612 can_change_state +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x2e486b2e can_change_mtu +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x474a6de6 can_put_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x6282839a alloc_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x6d07a7af can_free_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x8f298eb4 alloc_can_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x9d2dea39 free_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xa9bfebdf open_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xae2cb6c6 devm_can_led_init +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xb346573b can_dlc2len +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xbc149fd1 can_bus_off +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xc9709d0c safe_candev_priv +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xdbaf1614 can_led_event +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xde86b214 alloc_canfd_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xe5ced8fb can_get_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xe8489607 unregister_candev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0x1b76cd80 alloc_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0x2a7e3a24 unregister_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0x44f338cf free_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0x98db2bbe register_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x15e0c284 register_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x49ebd0d2 sja1000_interrupt +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0xa77a17c5 free_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0xef58cdfa alloc_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0xf4fe3243 unregister_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x028a8083 mlx4_phys_to_slaves_pport_actv +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x04d13bae mlx4_unbond +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x06117368 mlx4_alloc_hwq_res +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x08d6d580 mlx4_mr_rereg_mem_cleanup +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0a52c091 mlx4_cq_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0a73192c mlx4_alloc_cmd_mailbox +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0a74deaf mlx4_map_sw_to_hw_steering_mode +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0b40b134 mlx4_set_vf_link_state +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0c534e38 mlx4_mw_enable +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0d9b0cc9 mlx4_db_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0e36c27b mlx4_counter_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x11f1a482 mlx4_flow_steer_promisc_add +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1279e99a mlx4_vf_smi_enabled +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x179b09b3 mlx4_qp_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x18555cf7 mlx4_config_vxlan_port +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x196129df mlx4_qp_reserve_range +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1b12a14d mlx4_flow_attach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1b1bc34b mlx4_multicast_promisc_add +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1d51d8e2 mlx4_cq_resize +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1d5d9267 mlx4_register_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1eb5ca61 mlx4_find_cached_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1ebe134f mlx4_register_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1f144c69 mlx4_uar_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x22f758b8 mlx4_mw_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x23ad2ea1 mlx4_fmr_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x24a5be03 mlx4_fmr_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x28e96f4b mlx4_flow_steer_promisc_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x29b07f22 mlx4_ACCESS_PTYS_REG +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2b8f1edf mlx4_mr_hw_write_mpt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2c253d91 mlx4_mr_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2cde2ed0 mlx4_db_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x30a2cd26 mlx4_set_admin_guid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x31e5b7d2 mlx4_get_protocol_dev +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x33d4f061 mlx4_free_cmd_mailbox +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3616e881 mlx4_mr_enable +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x389867d6 mlx4_set_vf_rate +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3b3703ad mlx4_srq_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3c61488d mlx4_buf_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3dba1d41 mlx4_map_sw_to_hw_steering_id +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3e3ed735 mlx4_CLOSE_PORT +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x41164fc2 mlx4_get_internal_clock_params +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4478c1f1 mlx4_qp_modify +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x47a2b0e2 mlx4_unregister_interface +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4dbe26d9 mlx4_multicast_promisc_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4de8cefe mlx4_mw_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4e815b38 __mlx4_register_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x51e891dd mlx4_cq_modify +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x52a5e4f1 mlx4_get_slave_default_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x542673db mlx4_read_clock +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x54e951d9 mlx4_qp_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x56b9e376 mlx4_wol_write +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5ba489ef mlx4_get_base_gid_ix +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x61034483 mlx4_srq_lookup +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x64efdb02 mlx4_wol_read +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x678d0147 mlx4_qp_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x67f8ed2e mlx4_vf_set_enable_smi_admin +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x68acbaeb mlx4_mtt_cleanup +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6ad5d3d7 mlx4_find_cached_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6d1551cd mlx4_srq_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6e56bf50 mlx4_fmr_unmap +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x776b65df mlx4_unregister_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x792c9df1 mlx4_update_qp +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7aec6b1c mlx4_SYNC_TPT +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7dd3ebf7 mlx4_mtt_init +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7e2eac47 __mlx4_replace_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x801ce937 mlx4_srq_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x812fb5d5 mlx4_vf_get_enable_smi_admin +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x85ab22d6 mlx4_unregister_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x86ee0462 mlx4_xrcd_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x874c8126 mlx4_register_interface +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x877046d9 mlx4_get_base_qpn +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x919d2495 mlx4_pd_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x93baa70e mlx4_config_dev_retrieval +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x94fbf166 mlx4_bond +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x95a7ba3c mlx4_qp_to_ready +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9d54d9e3 mlx4_bf_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9d7c1e72 mlx4_xrcd_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9ef5808d mlx4_mr_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa195ad59 mlx4_uar_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa239d5e2 mlx4_buf_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa306a502 mlx4_mr_hw_change_pd +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa381eda1 mlx4_qp_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa5d6b579 mlx4_set_vf_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa6d98dcf mlx4_unicast_detach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa7ff5d78 mlx4_set_vf_spoofchk +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xabd5c073 mlx4_get_vf_config +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb10d2c3a mlx4_buf_write_mtt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb3357a5c mlx4_set_vf_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb375caeb mlx4_mr_rereg_mem_write +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb3a48479 mlx4_qp_release_range +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb87453e1 mlx4_write_mtt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb8a481d7 mlx4_multicast_attach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbb124434 __mlx4_unregister_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbd3cc62e mlx4_mr_hw_change_access +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbe657f7e mlx4_hw_rule_sz +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc06c48d1 mlx4_map_phys_fmr +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc74238a8 mlx4_mr_hw_get_mpt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc99f9bb1 mlx4_pd_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xcaa74944 mlx4_free_hwq_res +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xcf756245 mlx4_srq_arm +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xcfdaf6a4 mlx4_get_default_counter_index +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xcfe3a1b4 mlx4_get_active_ports +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd175f34f mlx4_cq_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd3d817da mlx4_phys_to_slave_port +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd6ab8b1c mlx4_mr_hw_put_mpt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd6ac2fa1 mlx4_unicast_attach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xdc66d3f3 mlx4_unicast_promisc_add +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xddb211db mlx4_port_map_set +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xdf32f38d mlx4_INIT_PORT +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe077c479 __mlx4_cmd +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe184cf13 mlx4_get_admin_guid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe2859666 mlx4_unicast_promisc_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe4800ccc mlx4_FLOW_STEERING_IB_UC_QP_RANGE +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe95f54d0 mlx4_slave_convert_port +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe9e6a30e mlx4_flow_detach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xec119510 mlx4_phys_to_slaves_pport +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf18db0d5 mlx4_fmr_enable +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf3330740 mlx4_bf_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf5cc3376 mlx4_mtt_addr +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf730cbe9 mlx4_counter_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf9c4e623 mlx4_multicast_detach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xfbafde71 mlx4_get_vf_stats +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xfe8ecba0 mlx4_get_counter_stats +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x0081adc1 mlx5_core_qp_modify +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x081f61ce mlx5_db_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x09543b3d mlx5_fill_page_array +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x0d3fe8ef mlx5_query_port_max_mtu +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x151dbf11 mlx5_core_xrcd_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x17a36041 mlx5_set_port_admin_status +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x1b9df420 mlx5_create_map_eq +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x1d98e4fd mlx5_buf_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x1e71e2e4 mlx5_destroy_unmap_eq +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x2408a91c mlx5_db_alloc_node +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x3a275383 mlx5_query_port_ptys +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x4ffceec8 mlx5_core_mad_ifc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x5dea579f mlx5_query_hca_vport_system_image_guid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x68025bab mlx5_buf_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x69311983 mlx5_core_xrcd_dealloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x6adbfec4 mlx5_core_create_qp +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x76f25df1 mlx5_query_port_oper_mtu +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x7f1be91b mlx5_set_port_caps +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x86ebc98b mlx5_core_eq_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x8871a0f2 mlx5_query_hca_vport_gid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x9a6eb341 mlx5_query_port_vl_hw_cap +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x9e23eac6 mlx5_core_page_fault_resume +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa61d6c29 mlx5_query_port_admin_status +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xabbec619 mlx5_query_hca_vport_node_guid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xb1a748a8 mlx5_query_port_proto_admin +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xbb603392 mlx5_query_hca_vport_context +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xc2f50ce8 mlx5_core_destroy_qp +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xd5320313 mlx5_db_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xd79bf555 mlx5_query_port_proto_cap +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xdb253fba mlx5_core_qp_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xdddb2eb6 mlx5_query_hca_vport_pkey +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe40773c3 mlx5_set_port_mtu +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xea946aa0 mlx5_set_port_proto +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xed7ac113 mlx5_core_access_reg +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf80b1c0b mlx5_query_port_proto_oper +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xfd9aebc2 mlx5_query_port_link_width_oper +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac 0x5e1ab0f3 stmmac_resume +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac 0xadeec496 stmmac_dvr_probe +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac 0xd90f2e43 stmmac_dvr_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac 0xdf037f1b stmmac_suspend +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac-platform 0x1e84eb72 stmmac_pltfr_probe +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac-platform 0xcb7bb68b stmmac_pltfr_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac-platform 0xfa3c3ed4 stmmac_pltfr_pm_ops +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x148d5055 cpsw_ale_stop +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x25695f3f cpsw_ale_del_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x3823a14d cpsw_ale_start +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x42d1b68a cpsw_ale_del_mcast +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x48b7562d cpsw_ale_add_ucast +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x5a454a40 cpsw_ale_del_ucast +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x9a6e20d1 cpsw_ale_destroy +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0xa1045d8e cpsw_ale_set_allmulti +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0xb4566b58 cpsw_ale_flush_multicast +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0xb52d055b cpsw_ale_create +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0xbc0e741c cpsw_ale_add_mcast +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0xd00c19c4 cpsw_ale_control_set +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0xe87e534f cpsw_ale_add_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0xead59028 cpsw_ale_dump +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0xf2913f55 cpsw_ale_control_get +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x1f65709f macvlan_common_setup +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x5f77ce1c macvlan_dellink +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x7a184ea9 macvlan_common_newlink +EXPORT_SYMBOL_GPL drivers/net/macvlan 0xee6d9b44 macvlan_link_register +EXPORT_SYMBOL_GPL drivers/net/macvtap 0xfed6f51d macvtap_get_socket +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0x02566c8d usbnet_cdc_status +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0x291f9e3b usbnet_cdc_bind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0x4d745817 usbnet_generic_cdc_bind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0x91584e0f usbnet_cdc_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x12cf49ba cdc_ncm_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x2deb278b cdc_ncm_bind_common +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x3abf20bf cdc_ncm_select_altsetting +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x55d9f75e cdc_ncm_rx_verify_ndp16 +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x78a7feb5 cdc_ncm_tx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x7e6235ac cdc_ncm_rx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0xad03513d cdc_ncm_fill_tx_frame +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0xf6c97953 cdc_ncm_rx_verify_nth16 +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x3f7d902d rndis_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x62e9883c rndis_tx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x79d8f385 rndis_status +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x834ee5c7 rndis_rx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0xc146150d generic_rndis_bind +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0xdd856081 rndis_command +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x0c064367 usbnet_write_cmd_nopm +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x2594c867 usbnet_start_xmit +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x2c14f445 usbnet_read_cmd_nopm +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x2d941ad4 usbnet_disconnect +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x3091ca99 usbnet_resume_rx +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x3923b904 usbnet_probe +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x3a0f805f usbnet_read_cmd +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x55d566ea usbnet_write_cmd +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x567d8f30 usbnet_resume +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x6a8eacf0 usbnet_skb_return +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x74f26b86 usbnet_pause_rx +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x76a9390d usbnet_status_stop +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x85a618ce usbnet_get_endpoints +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x8e26b35d usbnet_unlink_rx_urbs +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x91abaa85 usbnet_change_mtu +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x9d3e18e1 usbnet_status_start +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xa3cea68e usbnet_stop +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xa69f8372 usbnet_update_max_qlen +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xa8e90360 usbnet_set_msglevel +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xb3629735 usbnet_write_cmd_async +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xb667cd65 usbnet_get_msglevel +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xd2372e92 usbnet_get_drvinfo +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xd2e465db usbnet_nway_reset +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xd5118b70 usbnet_defer_kevent +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xda944135 usbnet_open +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xe063d5c6 usbnet_set_settings +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xe412741d usbnet_tx_timeout +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xf1e7c98b usbnet_suspend +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xf202b9b5 usbnet_purge_paused_rxq +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xf5eb0f06 usbnet_get_link +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xf6096b09 usbnet_get_settings +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xfc983717 usbnet_get_ethernet_addr +EXPORT_SYMBOL_GPL drivers/net/vxlan 0x0a40aa27 vxlan_xmit_skb +EXPORT_SYMBOL_GPL drivers/net/vxlan 0x75f84dc3 vxlan_sock_release +EXPORT_SYMBOL_GPL drivers/net/vxlan 0x80ade518 vxlan_get_rx_port +EXPORT_SYMBOL_GPL drivers/net/vxlan 0xddcf830c vxlan_sock_add +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x0f497a4c i2400m_tx +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x108048f6 i2400m_pre_reset +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x20cdc0b4 i2400m_setup +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x323cb67b i2400m_dev_reset_handle +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x742e9087 i2400m_dev_bootstrap +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x747b15e0 i2400m_init +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x766940e8 i2400m_error_recovery +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x79979343 i2400m_tx_msg_get +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x7d137e19 i2400m_reset +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x85e7f698 i2400m_is_boot_barker +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x89f31137 i2400m_netdev_setup +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xa72e1b68 i2400m_rx +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xb00b793c i2400m_bm_cmd_prepare +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xc1797c13 i2400m_post_reset +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xc46f155a i2400m_tx_msg_sent +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xc959679f i2400m_cmd_enter_powersave +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xeb41a2f8 i2400m_release +EXPORT_SYMBOL_GPL drivers/net/wireless/cw1200/cw1200_core 0x0f502eaa cw1200_irq_handler +EXPORT_SYMBOL_GPL drivers/net/wireless/cw1200/cw1200_core 0x8c4b9548 cw1200_core_release +EXPORT_SYMBOL_GPL drivers/net/wireless/cw1200/cw1200_core 0xa927d64b cw1200_can_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/cw1200/cw1200_core 0xb777159c cw1200_core_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/ipw2x00/libipw 0xe737d1e4 libipw_rx_any +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0x415b8e7e il_mac_tx_last_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0x4c5f4e1c il_prep_station +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0x8cbf101d il_dealloc_bcast_stations +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0xe1eea801 il_remove_station +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0xe827b3e1 _il_grab_nic_access +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x132f02b5 __iwl_err +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x18905193 iwl_parse_nvm_data +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x1b074767 iwl_abort_notification_waits +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x2161fefb iwl_force_nmi +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x2d245fee iwl_init_notification_wait +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x2f760d27 iwl_read_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x35033c81 iwl_phy_db_free +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x46e59547 iwl_nvm_check_version +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x46f9cefd iwl_remove_notification +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x48aed6a3 iwl_parse_nvm_mcc_info +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x51b657cd iwlwifi_mod_params +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x55bc34a2 __iwl_warn +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x5c52e109 iwl_opmode_deregister +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x5c97e1c4 iwl_clear_bits_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x5dfa101e iwl_read_direct32 +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x694857b4 __iwl_info +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x7708db22 iwl_write_direct32 +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x776221bf iwl_send_phy_db_data +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x8c5d5ab3 iwl_phy_db_set_section +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x8ca191c8 iwl_phy_db_init +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x9a71d1c6 iwl_set_bits_mask_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x9c8e3fa2 iwl_wait_notification +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xa82f8b72 __iwl_crit +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xab4a9c3f iwl_notification_wait_notify +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xb10eea8a iwl_parse_eeprom_data +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xb5cee0d5 iwl_read_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xb8979af3 iwl_notification_wait_init +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xbd3c4ae2 iwl_poll_bit +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xcc136b58 iwl_write_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xd30649be iwl_opmode_register +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xd4fa5ffe iwl_poll_direct_bit +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xe6eb2212 iwl_set_bits_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xed6c0d5d __iwl_dbg +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x09a53ac4 lbs_stop_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x184d19f5 lbs_notify_command_response +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x451e22c0 lbs_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x5da2c995 lbs_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x5fdf38b8 lbs_disablemesh +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x699caf54 lbs_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x95d6f371 lbs_get_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x9e685e4c lbs_process_rxed_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xa3745566 lbs_host_to_card_done +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xb1a86817 lbs_send_tx_feedback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xc1b172e5 lbs_get_firmware_async +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xc1bf3b06 lbs_host_sleep_cfg +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xceba4819 lbs_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xdde28c5f lbs_queue_event +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xde309fdb lbs_cmd_copyback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xe2511526 lbs_start_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xf1bcca4a __lbs_cmd +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xf64277de lbs_debug +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x295ccb1e __lbtf_cmd +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x714c6801 lbtf_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x73174941 lbtf_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x80777f7b lbtf_send_tx_feedback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x9f1f5028 lbtf_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xa8a040c0 lbtf_bcn_sent +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xc85e6899 lbtf_debug +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xce56f93f lbtf_cmd_response_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xe431ce26 lbtf_cmd_copyback +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x00c498d9 mwifiex_upload_device_dump +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x1dcadea3 mwifiex_queue_main_work +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x2557c1ce mwifiex_init_shutdown_fw +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x31bd9748 mwifiex_alloc_dma_align_buf +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x467444c0 mwifiex_drv_info_dump +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x57f8b749 mwifiex_process_hs_config +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x5b66afff mwifiex_process_sleep_confirm_resp +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x607541ac mwifiex_main_process +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x8e7d7aaf mwifiex_add_virtual_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x909b3b5b mwifiex_cancel_hs +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x96f5ea73 mwifiex_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xaa0d9a68 mwifiex_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xb208d9eb mwifiex_write_data_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xc872cbad mwifiex_del_virtual_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xc8b4278e mwifiex_handle_rx_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xd060be0c mwifiex_deauthenticate_all +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xd4ef1756 mwifiex_enable_hs +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xf6ea8875 mwifiex_disable_auto_ds +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x52b19301 p54_init_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x52f5aed2 p54_read_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x7f035777 p54_free_skb +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x8426e498 p54_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xc6836994 p54_unregister_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xcfb9d575 p54_register_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xeafd25e7 p54_parse_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xfe509b2b p54_free_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xfe773e37 p54_parse_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0x41f883b5 rsi_mac80211_detach +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0x6bd57fc2 rsi_read_pkt +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0x7201b98a rsi_dbg +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0xafb38593 rsi_91x_deinit +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0xcf434e1b rsi_91x_init +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0xdb3ca0e5 rsi_zone_enabled +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x0495e66c rt2800_write_tx_data +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x086e0bfc rt2800_disable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x0cfeb483 rt2800_config_pairwise_key +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x1997060e rt2800_clear_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x24f08725 rt2800_config +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x274689c9 rt2800_config_shared_key +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x2f7669fe rt2800_efuse_detect +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x3075dc6a rt2800_link_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x3eb7c4b1 rt2800_wait_wpdma_ready +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x40bd3df9 rt2800_sta_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x48689d5d rt2800_get_survey +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x4b86ec4d rt2800_write_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x588bf206 rt2800_reset_tuner +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x6816622b rt2800_get_tsf +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x6dd01749 rt2800_mcu_request +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x71b69a0e rt2800_disable_wpdma +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x74ff2189 rt2800_ampdu_action +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x7bd2fabb rt2800_config_ant +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x83d59fed rt2800_load_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x9e04cbb2 rt2800_config_filter +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xa7d7991f rt2800_process_rxwi +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xb1f8f034 rt2800_read_eeprom_efuse +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xba07a6cf rt2800_rfkill_poll +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xc231782d rt2800_enable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xc8cf633e rt2800_config_erp +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xd54c0aee rt2800_link_tuner +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xd615f4be rt2800_get_key_seq +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xd9b6ef47 rt2800_check_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xe8d66bf0 rt2800_conf_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xe93f4780 rt2800_sta_add +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xe9af391f rt2800_config_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xeeaed903 rt2800_txdone_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xf10a570a rt2800_wait_csr_ready +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xf2462871 rt2800_set_rts_threshold +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xf48604ad rt2800_get_txwi_rxwi_size +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xf650e462 rt2800_probe_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xf809b0cd rt2800_vco_calibration +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xfc20dc98 rt2800_gain_calibration +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x0b6cf03e rt2800mmio_init_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x0fad1430 rt2800mmio_pretbtt_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x180e93f6 rt2800mmio_queue_init +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x23bf3041 rt2800mmio_toggle_irq +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x2505789d rt2800mmio_tbtt_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x3e3bb26f rt2800mmio_init_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x5a822d68 rt2800mmio_start_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x5fa4db64 rt2800mmio_interrupt +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x76fb16fb rt2800mmio_clear_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x8d759a09 rt2800mmio_get_entry_state +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x92c0bcd1 rt2800mmio_rxdone_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x96462ad0 rt2800mmio_enable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x96ce91ef rt2800mmio_get_txwi +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xa6f7a92e rt2800mmio_fill_rxdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xbadc7216 rt2800mmio_stop_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xbd0a885e rt2800mmio_write_tx_desc +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xc6a1455e rt2800mmio_autowake_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xd3e0d966 rt2800mmio_kick_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xe28f94c7 rt2800mmio_txstatus_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x047c5f44 rt2x00queue_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x07fe7f55 rt2x00mac_configure_filter +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x111901ff rt2x00mac_conf_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x135ab5ba rt2x00mac_set_antenna +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x16da165d rt2x00mac_tx_frames_pending +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x1761e877 rt2x00queue_pause_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x194e4b90 rt2x00mac_set_key +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x195c166a rt2x00mac_remove_interface +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x2aac90f7 rt2x00lib_remove_dev +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x2b50f4e1 rt2x00mac_get_antenna +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x2bc2ab5f rt2x00lib_dmastart +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x2c685cdf rt2x00lib_txdone_noinfo +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x306589bc rt2x00mac_set_tim +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x3dd03a61 rt2x00queue_for_each_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x429c0087 rt2x00queue_start_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x470107cd rt2x00queue_stop_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x47747b5b rt2x00mac_sta_add +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x4b7efb41 rt2x00queue_start_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x4ed300c7 rt2x00mac_get_ringparam +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x4ff25725 rt2x00lib_txdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x585b7de9 rt2x00lib_dmadone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x5e8f83d4 rt2x00lib_beacondone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x7dde830a rt2x00mac_start +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x82192e22 rt2x00mac_add_interface +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x825e4478 rt2x00queue_flush_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x82c91e6d rt2x00queue_map_txskb +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x857c456f rt2x00mac_flush +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x95df6ef1 rt2x00lib_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x9a103af0 rt2x00mac_sw_scan_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x9beafc85 rt2x00lib_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x9d3ddfaa rt2x00lib_rxdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xa5e0b445 rt2x00mac_rfkill_poll +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xa69eb070 rt2x00queue_stop_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xadeaa155 rt2x00mac_get_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xc00a1148 rt2x00lib_get_bssidx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xcb2ab110 rt2x00mac_config +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xd2431780 rt2x00mac_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xd35461ff rt2x00queue_unpause_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xe1bb4f56 rt2x00mac_stop +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xe7205d4d rt2x00queue_unmap_skb +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xeb6a6064 rt2x00mac_bss_info_changed +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xef767d7e rt2x00lib_probe_dev +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xf2fd58d7 rt2x00mac_sw_scan_start +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xf31fcffe rt2x00queue_get_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xf45bc48e rt2x00mac_sta_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xf96fcd02 rt2x00lib_pretbtt +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0x6b4f36b8 rt2x00mmio_regbusy_read +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0x6dd3e3b8 rt2x00mmio_uninitialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0x801a16d4 rt2x00mmio_rxdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0xbec1fbc4 rt2x00mmio_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0xf25ebc8f rt2x00mmio_initialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0x6182eeed rt2x00pci_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0x8c2be241 rt2x00pci_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0xcc595722 rt2x00pci_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0xe801f730 rt2x00pci_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x0149c774 rt2x00usb_initialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x0af6b59a rt2x00usb_vendor_request_buff +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x10072130 rt2x00usb_vendor_req_buff_lock +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x36b999e2 rt2x00usb_clear_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x66a37730 rt2x00usb_regbusy_read +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x7e0190de rt2x00usb_vendor_request +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x85e89ce3 rt2x00usb_kick_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x8d97aa06 rt2x00usb_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xa9b738f9 rt2x00usb_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xc8963ed4 rt2x00usb_watchdog +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xccd13c82 rt2x00usb_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xdc1719fc rt2x00usb_register_read_async +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xdf091bd0 rt2x00usb_disable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xe16b4559 rt2x00usb_disconnect +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xee98bb72 rt2x00usb_uninitialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xfc172985 rt2x00usb_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x0c3dafae dm_writepowerindex +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x9af3c361 rtl92c_set_p2p_ps_offload_cmd +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xd4e9e036 dm_restorepowerindex +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xfa983bd8 dm_savepowerindex +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x0de3f15a rtl8723_phy_mac_setting_calibration +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x159ae36b rtl8723_phy_set_bb_reg +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x1d37d585 rtl8723_fw_block_write +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x1ec36d61 rtl8723_dm_init_dynamic_txpower +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x1f359ce7 rtl8723_phy_rf_serial_write +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x29b99408 rtl8723_write_fw +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x2a4f4e0b rtl8723_dm_init_dynamic_bb_powersaving +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x3c3dd014 rtl8723_save_adda_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x3da47ece rtl8723_phy_path_adda_on +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x5dfaeb1f rtl8723_fw_free_to_go +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x69d1cc28 rtl8723_phy_reload_adda_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x6fee3a6c rtl8723_phy_set_sw_chnl_cmdarray +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x873dd99d rtl8723_phy_path_a_standby +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x88324cd2 rtl8723_phy_path_a_fill_iqk_matrix +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x8ac6ee34 rtl8723ae_firmware_selfreset +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x8b199d9c rtl8723_dm_init_edca_turbo +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x8fa187e6 rtl8723_phy_txpwr_idx_to_dbm +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x9d0351e5 rtl8723be_firmware_selfreset +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xa1060028 rtl8723_cmd_send_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xa280d8ba rtl8723_phy_query_bb_reg +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xaf4d6d94 rtl8723_phy_calculate_bit_shift +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xb9022bc2 rtl8723_download_fw +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xbbdc3364 rtl8723_phy_save_mac_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xcd7e1939 rtl8723_fw_page_write +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xd8432dc3 rtl8723_enable_fw_download +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xe1fe95cb rtl8723_phy_pi_mode_switch +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xed4d010d rtl8723_phy_rf_serial_read +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xfabdccc3 rtl8723_phy_reload_mac_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xfe882831 rtl8723_phy_init_bb_rf_reg_def +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x05991bf4 rtl_deinit_rfkill +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x13fefea2 rtl_is_special_data +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x241dedc1 rtl_tid_to_ac +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x2921a4d4 rtl_btc_status_false +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x602bae80 rtl_p2p_info +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x6bb945a3 rtl_deinit_deferred_work +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x7357fa1c rtl_action_proc +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x81a076d9 rtl_init_rx_config +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x9741ae68 read_efuse_byte +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xaf5b328f rtl_dbgp_flag_init +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xafcdc668 rtl_global_var +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xaffe553c rtl_swlps_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xb216e373 rtl_beacon_statistic +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xb716ad3b rtl_ops +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xc0cc36e6 rtl_attribute_group +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xc8502600 rtl_init_core +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xe783f7ee rtl_recognize_peer +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xf4925b23 rtl_tx_mgmt_proc +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xf7213c20 rtl_ips_nic_on +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xf8ff6add rtl_lps_change_work_callback +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xfdded6c8 rtl_deinit_core +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0x0526d144 wl1251_free_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0xb6e3706b wl1251_init_ieee80211 +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0xcca3b740 wl1251_alloc_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x03ac4f81 wlcore_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x072937f4 wlcore_scan_sched_scan_ssid_list +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x0a096811 wlcore_cmd_wait_for_event_or_timeout +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x11f947f4 wlcore_event_inactive_sta +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x1a6fef88 wlcore_event_rssi_trigger +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x2161244f wl12xx_acx_mem_cfg +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x2b2d184b wl1271_cmd_data_path +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x2c01356d wlcore_free_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x2c3e4d99 wlcore_scan_sched_scan_results +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x2e23f541 wlcore_event_dummy_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x2fb3fea4 wlcore_event_roc_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x32922b4d wl1271_cmd_test +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x33ae94db wlcore_event_soft_gemini_sense +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x3b26c13b wlcore_boot_upload_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x3d430f1f wlcore_disable_interrupts +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x421f7a67 wlcore_boot_upload_nvs +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x4927ab49 wl1271_acx_init_mem_config +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x5291b61a wlcore_synchronize_interrupts +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x53dff67d wl12xx_debug_level +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x5af93ab3 wl1271_cmd_send +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x5cffe3b2 wlcore_event_ba_rx_constraint +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x607dee77 wlcore_event_channel_switch +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x6cc7d267 wl1271_ps_elp_wakeup +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x6e0c3cf7 wlcore_event_max_tx_failure +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x6fd7bb74 wlcore_disable_interrupts_nosync +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x76166059 wl1271_acx_pm_config +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x77092dcc wlcore_get_native_channel_type +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x7ee0eb56 wl12xx_cmd_build_probe_req +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x85fc132d wlcore_set_partition +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x8f5315e3 wlcore_alloc_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x91da5146 wl1271_format_buffer +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xa1f7e240 wlcore_set_key +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xa3040c41 wlcore_enable_interrupts +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xac8afc14 wlcore_event_beacon_loss +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xb1e06cb3 wl1271_tx_flush +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xb31e3b63 wl1271_acx_sleep_auth +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xb3676e7a wlcore_translate_addr +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xb4d50172 wl1271_cmd_configure +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xbe5270cf wl1271_ps_elp_sleep +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xc9fbb6ba wl1271_debugfs_update_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xca15c07d wlcore_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xd0a6739e wlcore_event_sched_scan_completed +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xd1db6e9a wlcore_boot_run_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xdadf6554 wl1271_tx_min_rate_get +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xdf568886 wl1271_acx_set_ht_capabilities +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xfd85071d wlcore_set_scan_chan_params +EXPORT_SYMBOL_GPL drivers/nfc/mei_phy 0x63d23de4 nfc_mei_phy_free +EXPORT_SYMBOL_GPL drivers/nfc/mei_phy 0x9231ee80 mei_phy_ops +EXPORT_SYMBOL_GPL drivers/nfc/mei_phy 0xa45c30cb nfc_mei_phy_alloc +EXPORT_SYMBOL_GPL drivers/nfc/nfcmrvl/nfcmrvl 0x0eeb9b4a nfcmrvl_nci_register_dev +EXPORT_SYMBOL_GPL drivers/nfc/nfcmrvl/nfcmrvl 0x81d5b94f nfcmrvl_nci_recv_frame +EXPORT_SYMBOL_GPL drivers/nfc/nfcmrvl/nfcmrvl 0xded49ad2 nfcmrvl_nci_unregister_dev +EXPORT_SYMBOL_GPL drivers/nfc/nfcmrvl/nfcmrvl 0xe4b4c0bd nfcmrvl_parse_dt +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x24f8ac48 st_nci_discover_se +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x34a646c6 st_nci_enable_se +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x5e01d932 st_nci_hci_load_session +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x75e3630f st_nci_hci_cmd_received +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x8990b7ef st_nci_hci_event_received +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x97ca0ef0 st_nci_disable_se +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0xebd6d030 st_nci_probe +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0xfb12bb80 st_nci_remove +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x2e370e95 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 0x540d4522 ntb_transport_register_client +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 0xdc5f29f6 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/pinctrl/intel/pinctrl-intel 0x229cc743 intel_pinctrl_resume +EXPORT_SYMBOL_GPL drivers/pinctrl/intel/pinctrl-intel 0x31b66731 intel_pinctrl_suspend +EXPORT_SYMBOL_GPL drivers/pinctrl/intel/pinctrl-intel 0x4f3d71ca intel_pinctrl_probe +EXPORT_SYMBOL_GPL drivers/pinctrl/intel/pinctrl-intel 0xca3bf470 intel_pinctrl_remove +EXPORT_SYMBOL_GPL drivers/platform/x86/asus-wmi 0x7adeae2a asus_wmi_unregister_driver +EXPORT_SYMBOL_GPL drivers/platform/x86/asus-wmi 0x7cee0f70 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/intel_ips 0x46809fa9 ips_link_to_i915_driver +EXPORT_SYMBOL_GPL drivers/platform/x86/intel_pmc_ipc 0x56235c72 intel_pmc_ipc_command +EXPORT_SYMBOL_GPL drivers/platform/x86/intel_pmc_ipc 0x75068282 intel_pmc_ipc_raw_cmd +EXPORT_SYMBOL_GPL drivers/platform/x86/intel_pmc_ipc 0xdea07053 intel_pmc_ipc_simple_command +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/thinkpad_acpi 0x706cdcef tpacpi_led_set +EXPORT_SYMBOL_GPL drivers/platform/x86/wmi 0x3ecf6cfc wmi_install_notify_handler +EXPORT_SYMBOL_GPL drivers/platform/x86/wmi 0x64ebe677 wmi_query_block +EXPORT_SYMBOL_GPL drivers/platform/x86/wmi 0xa9b7afd8 wmi_set_block +EXPORT_SYMBOL_GPL drivers/platform/x86/wmi 0xb5a6ebe2 wmi_remove_notify_handler +EXPORT_SYMBOL_GPL drivers/platform/x86/wmi 0xc5e3dddf wmi_get_event_data +EXPORT_SYMBOL_GPL drivers/platform/x86/wmi 0xc9d4d6d1 wmi_has_guid +EXPORT_SYMBOL_GPL drivers/platform/x86/wmi 0xe2426710 wmi_evaluate_method +EXPORT_SYMBOL_GPL drivers/power/pcf50633-charger 0x040df96c pcf50633_mbc_usb_curlim_set +EXPORT_SYMBOL_GPL drivers/power/pcf50633-charger 0x82ded922 pcf50633_mbc_get_status +EXPORT_SYMBOL_GPL drivers/power/pcf50633-charger 0xb06291c5 pcf50633_mbc_get_usb_online_status +EXPORT_SYMBOL_GPL drivers/pwm/pwm-lpss 0x21e22848 pwm_lpss_byt_info +EXPORT_SYMBOL_GPL drivers/pwm/pwm-lpss 0x81ca2e1d pwm_lpss_bsw_info +EXPORT_SYMBOL_GPL drivers/pwm/pwm-lpss 0xa9bce8f8 pwm_lpss_probe +EXPORT_SYMBOL_GPL drivers/pwm/pwm-lpss 0xb563cdb0 pwm_lpss_remove +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x6acdf572 mc13xxx_fixed_regulator_ops +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0xaa792054 mc13xxx_fixed_regulator_set_voltage +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0xf122b288 mc13xxx_regulator_ops +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x0a18a387 wm8350_dcdc_set_slot +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x2fec9aac wm8350_dcdc25_set_mode +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x4fc223c8 wm8350_register_regulator +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0xdcfa7bbc wm8350_register_led +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0xe27544f4 wm8350_ldo_set_slot +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0xf421a752 wm8350_isink_set_flash +EXPORT_SYMBOL_GPL drivers/regulator/wm8400-regulator 0x1922d36e wm8400_register_regulator +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x0090c25e cxgbi_sock_rcv_close_conn_rpl +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x018a0e72 cxgbi_sock_rcv_wr_ack +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x0546d3ce cxgbi_hbas_add +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x065349ff cxgbi_ddp_cleanup +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x0cdd842c cxgbi_bind_conn +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x106edf10 cxgbi_sock_established +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x12d2ad4c cxgbi_device_find_by_netdev_rcu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x14421b5e cxgbi_cleanup_task +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x14b3ed41 cxgbi_device_unregister +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x19d8d861 cxgbi_iscsi_cleanup +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x1bf7eb7f cxgbi_device_portmap_cleanup +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x1d7245c8 cxgbi_sock_free_cpl_skbs +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x2072e6dc cxgbi_sock_rcv_peer_close +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x2b0ea62c cxgbi_hbas_remove +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x376237f2 cxgbi_sock_check_wr_invariants +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x3a5c4389 cxgbi_ddp_page_size_factor +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x3b102144 cxgbi_set_host_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x3c1b024a cxgbi_ep_disconnect +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x460650dc cxgbi_set_conn_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x66c5f426 cxgbi_parse_pdu_itt +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x682c1a38 cxgbi_create_session +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x6d34a157 cxgbi_sock_act_open_req_arp_failure +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x7e19a87f cxgbi_get_conn_stats +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x7fdb6004 cxgbi_device_unregister_all +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x807f4d3e cxgbi_device_find_by_netdev +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x8181c84f cxgbi_destroy_session +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x8321326f cxgbi_iscsi_init +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x8c2ba369 cxgbi_ddp_ppod_clear +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x8f4e13e2 cxgbi_sock_purge_wr_queue +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x9283ea59 cxgbi_create_conn +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x958208b8 cxgbi_device_portmap_create +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x9b1ce9d7 cxgbi_sock_skb_entail +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xacd42321 cxgbi_get_ep_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xae6111b8 cxgbi_conn_alloc_pdu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xb0b10dc8 cxgbi_ep_poll +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xb34e40f7 cxgbi_conn_init_pdu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xb351c0c4 cxgbi_get_host_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xb51b4194 cxgbi_conn_xmit_pdu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xca5bb6b7 cxgbi_sock_closed +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xd163c401 cxgbi_ep_connect +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xd2092949 cxgbi_conn_tx_open +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xdd8d65b7 cxgbi_ddp_init +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xe0419683 cxgbi_sock_select_mss +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xe1d3547d cxgbi_conn_pdu_ready +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xe8307b8a cxgbi_ddp_ppod_set +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xec2750bb cxgbi_device_find_by_lldev +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xef346615 cxgbi_attr_is_visible +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xf90f35c2 cxgbi_device_register +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xfab582af cxgbi_sock_fail_act_open +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xfcf68862 cxgbi_sock_rcv_abort_rpl +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x1979d5ee scsi_unregister_device_handler +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x1a454a5a scsi_dh_set_params +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x282f633d scsi_dh_activate +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x370e4f0d scsi_dh_attached_handler_name +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x478ea7cf scsi_dh_attach +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x593a36c2 scsi_dh_handler_exist +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x6048b9e1 scsi_dh_detach +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0xcdb31361 scsi_register_device_handler +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x045287ec fcoe_get_wwn +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x050ab66f fcoe_check_wait_queue +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x0fb51275 fcoe_queue_timer +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x118ce0c4 fcoe_ctlr_device_delete +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x1687862b fcoe_clean_pending_queue +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x2364ce19 fcoe_ctlr_device_add +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x374c1e1c fcoe_wwn_from_mac +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x3d768fd9 fcoe_ctlr_get_lesb +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x3e33c3be fcoe_get_paged_crc_eof +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x44c17614 fcoe_fcf_device_add +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x5835bb34 fcoe_validate_vport_create +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x5e2041df fcoe_libfc_config +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x6562d343 fcoe_link_speed_update +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x84b3d915 fcoe_wwn_to_str +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x8f077c34 fcoe_start_io +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x9b4ea125 fcoe_fc_crc +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x9bc3f601 __fcoe_get_lesb +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xb92609be fcoe_get_lesb +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xca4cdcf8 fcoe_fcf_device_delete +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x1220a3b2 iscsi_boot_create_target +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x20ba7bba iscsi_boot_create_ethernet +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x9e6f04e1 iscsi_boot_create_initiator +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0xad82ccce iscsi_boot_create_kset +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0xae7d5050 iscsi_boot_create_host_kset +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0xe1fae296 iscsi_boot_destroy_kset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x0d0c6864 iscsi_conn_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x12b2ad06 iscsi_switch_str_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x142300a7 iscsi_host_set_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x15772427 iscsi_conn_start +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x1886ab2d iscsi_conn_bind +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x24a2cf8d iscsi_update_cmdsn +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x2796720b iscsi_eh_target_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x2f5bbdcb iscsi_requeue_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x349b13e3 iscsi_host_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x373504f1 iscsi_itt_to_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x3bef2f73 iscsi_pool_init +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x3c456c27 iscsi_queuecommand +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x3df23706 iscsi_conn_stop +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x459def9a iscsi_session_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x4c91458b iscsi_host_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x4cebc2bb iscsi_conn_failure +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x5ad0175f iscsi_session_failure +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x5ae476a6 iscsi_prep_data_out_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x6661b7a1 iscsi_session_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x6b375340 iscsi_target_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x70215f16 iscsi_suspend_tx +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x7796aec8 iscsi_put_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x79734d07 iscsi_eh_session_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x7a7e1071 iscsi_conn_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x7d2d8795 iscsi_eh_abort +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x8029df25 iscsi_complete_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x85a7d02e iscsi_host_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x8837bd41 iscsi_eh_device_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x8d303b1b iscsi_pool_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x96e52e25 iscsi_complete_scsi_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xa27d9b6f iscsi_session_recovery_timedout +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xa89fd383 iscsi_eh_recover_target +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xa98d4335 __iscsi_get_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xa99d56eb iscsi_conn_queue_work +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xaa4f2c7c iscsi_conn_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xaa55423e iscsi_host_remove +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xaa8e9f72 iscsi_suspend_queue +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xae55b9f3 iscsi_session_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xb0514a90 iscsi_set_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xb47d89af iscsi_host_add +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xb8b49ca1 __iscsi_put_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xbf8c9136 iscsi_conn_get_addr_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xe2f66c4b iscsi_verify_itt +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xe6f3724b iscsi_itt_to_ctask +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xf15c5e32 iscsi_conn_send_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xf1cbde33 __iscsi_complete_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x036a3fc5 iscsi_tcp_segment_done +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x17d94d5e iscsi_tcp_segment_unmap +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x230f2f05 iscsi_tcp_r2tpool_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x3670dbc2 iscsi_tcp_conn_get_stats +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x51d7820c iscsi_tcp_task_init +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x701f77fd iscsi_tcp_recv_skb +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x71238d8f iscsi_tcp_hdr_recv_prep +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x7397f602 iscsi_tcp_dgst_header +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x7f7ca760 iscsi_tcp_cleanup_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x9b096a6a iscsi_tcp_conn_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x9f59744b iscsi_tcp_recv_segment_is_hdr +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xad48945f iscsi_tcp_set_max_r2t +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xb36952a6 iscsi_tcp_task_xmit +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xd64e3747 iscsi_tcp_conn_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xeea4ff31 iscsi_segment_init_linear +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xf5f1b197 iscsi_segment_seek_sg +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xfca1268a iscsi_tcp_r2tpool_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x0033f4fc sas_change_queue_depth +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x2b21c68d sas_free_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x3a0e605b sas_phy_reset +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x4187cd72 sas_request_addr +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x51cc1ca2 sas_queuecommand +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x55aea070 sas_task_abort +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x56908102 sas_eh_abort_handler +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x664a9b95 sas_alloc_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x671de3ee sas_target_destroy +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x6b9a3faf sas_slave_configure +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x6ed91cb7 sas_drain_work +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x71117782 sas_get_local_phy +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x7189e2b5 sas_ssp_task_response +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x71f913b1 sas_unregister_ha +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x85727b29 sas_domain_attach_transport +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x86e4140e sas_bios_param +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x8e50bbae sas_domain_release_transport +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xb563ca9d sas_ata_schedule_reset +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xc4cc9f0b sas_ioctl +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xc98f2664 sas_register_ha +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xca476b05 sas_eh_device_reset_handler +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xd747d29c sas_target_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xeff199a0 sas_eh_bus_reset_handler +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xf66f5e93 sas_alloc_slow_task +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x049be776 iscsi_flashnode_bus_match +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x0c3a5c5f iscsi_create_flashnode_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x0f18a9ab iscsi_add_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x12d6e3c6 iscsi_scan_finished +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x1473e047 iscsi_free_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x1b9414b9 iscsi_session_chkready +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x1cb67669 iscsi_host_for_each_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x1e1abd99 iscsi_offload_mesg +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x258b6ce5 iscsi_is_session_online +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x2723e32b iscsi_destroy_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x385bcf7c iscsi_lookup_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x3ce7e37b iscsi_ping_comp_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x3ea6da92 iscsi_find_flashnode_sess +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x3f13df84 iscsi_block_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x3f465820 iscsi_get_port_state_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x47a10c0d iscsi_destroy_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x53b7249f iscsi_block_scsi_eh +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x58d0844c iscsi_remove_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x5b4d230b iscsi_alloc_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x699fe53e iscsi_get_discovery_parent_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x77283f79 iscsi_create_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x77b6288e iscsi_conn_error_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x78f3e995 iscsi_is_session_dev +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x7b0a0082 iscsi_unregister_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x7de71b99 iscsi_unblock_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x810920d1 iscsi_is_flashnode_conn_dev +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x83a0a678 iscsi_register_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x841b5d99 iscsi_create_iface +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x84a005f1 iscsi_get_router_state_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x8babc3b5 iscsi_find_flashnode_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x8e979b21 iscsi_recv_pdu +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x93a0e00d iscsi_get_port_speed_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xb119f666 iscsi_destroy_flashnode_sess +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xb8433e32 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 0xc08ec2a2 iscsi_destroy_all_flashnode +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xc2bd2df6 iscsi_destroy_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xc555ac2c iscsi_conn_login_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xcdcb074c iscsi_create_flashnode_sess +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xe2b43bbf iscsi_session_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xf82052dc iscsi_destroy_iface +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xfbbc2925 iscsi_post_host_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xfc6d4a50 iscsi_create_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0x05e1f6fd sas_enable_tlr +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0x201b3190 sas_disable_tlr +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0x6e984036 sas_tlr_supported +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0xc92e99cf 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 0x27a2e44d 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 0x0ed4bffb srp_attach_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x721de72a srp_remove_host +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0xa7869600 srp_rport_add +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0xa8dfd32b srp_rport_del +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0xce0b86de srp_release_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0xee891cc0 srp_tmo_valid +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0xfb9824aa srp_stop_rport_timers +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0x5c7cc54b ufshcd_remove +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0x8bd9f1a9 ufshcd_dme_set_attr +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0xbcabf35c ufshcd_dme_get_attr +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0xdaa5eaa6 ufshcd_init +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x4881aeca spi_bitbang_start +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x48f4b043 spi_bitbang_setup_transfer +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x5a2204b1 spi_bitbang_stop +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0xa96af8e2 spi_bitbang_cleanup +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0xf040fdc7 spi_bitbang_setup +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0x0252e8b0 dw_spi_remove_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0x29e2c595 dw_spi_suspend_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0x71ce9cca dw_spi_resume_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0x79f017b2 dw_spi_add_host +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x1187af84 spmi_controller_alloc +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x1dfee68e spmi_device_add +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x3263c14d spmi_command_shutdown +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x390d9acd spmi_controller_remove +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x3e58cd49 spmi_register_zero_write +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x55a5c32a spmi_register_write +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x5d7dca72 spmi_device_alloc +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x716bd3bc spmi_command_sleep +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x74ecbf4e spmi_driver_register +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xa01f0067 spmi_device_remove +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xa02ea28a spmi_register_read +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xad8a5f69 spmi_ext_register_read +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xcd50b18c spmi_ext_register_write +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xd1ba0a81 spmi_controller_add +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xd685823a spmi_ext_register_writel +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xda375a65 spmi_command_reset +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xe6fab6c1 spmi_command_wakeup +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xe7306a52 spmi_ext_register_readl +EXPORT_SYMBOL_GPL drivers/ssb/ssb 0x67b01fb4 ssb_pmu_spuravoid_pllupdate +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x04cb1de8 comedi_nscans_left +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x0cd330f4 range_unknown +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x0f04e9d8 comedi_event +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x1279926f comedi_buf_write_alloc +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x1e6ad0db comedi_auto_config +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 0x347ac2da comedi_alloc_devpriv +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x4236eaaf range_4_20mA +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x43cee186 __comedi_request_region +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x4579c61d comedi_set_spriv_auto_free +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x47d5cd61 comedi_set_hw_dev +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x4a4d2e6d comedi_dio_insn_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x4cbd9f0e comedi_dev_get_from_minor +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x4fe634f3 range_bipolar2_5 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x528b8cbd comedi_nsamples_left +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x58109b8c comedi_driver_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x5b484a40 comedi_timeout +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x5bfd8948 comedi_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x5df8173a comedi_buf_read_n_available +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x62288fec comedi_is_subdevice_running +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x6630c6bb comedi_handle_events +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x69e95bb6 comedi_alloc_spriv +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x6b1f1af7 comedi_buf_read_samples +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x8113872c range_unipolar10 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x9078f38e comedi_buf_read_free +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x9637782a comedi_check_chanlist +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xa531163b comedi_buf_write_free +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xa9479c89 comedi_buf_read_alloc +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 0xda87b595 comedi_alloc_subdev_readback +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xdb2044b2 range_unipolar5 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xdd3c84a7 comedi_buf_write_samples +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xdff0da0d comedi_dio_update_state +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xe1646a4d comedi_request_region +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xe36d67cb comedi_bytes_per_scan +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xe968941a comedi_auto_unconfig +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xe9bb4863 comedi_alloc_subdevices +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xeb1811f9 comedi_inc_scan_progress +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xef822aed comedi_load_firmware +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xeff09c08 comedi_legacy_detach +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xf0e7a0b9 comedi_dev_put +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xf4edf1a5 comedi_readback_insn_read +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0x07ca1de0 comedi_pci_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0x163903c6 comedi_pci_auto_unconfig +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0x3bc489ff comedi_to_pci_dev +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0x774f4953 comedi_pci_driver_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0x8e12d6f1 comedi_pci_auto_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0xc3ce288d comedi_pci_enable +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0xd7ddb218 comedi_pci_detach +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0xe2103dd9 comedi_pci_disable +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pcmcia 0x349d419f comedi_pcmcia_driver_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pcmcia 0x94108ae6 comedi_pcmcia_enable +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pcmcia 0xcab06dd7 comedi_to_pcmcia_dev +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pcmcia 0xd2927d6e comedi_pcmcia_disable +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pcmcia 0xd90669d1 comedi_pcmcia_auto_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pcmcia 0xdaa2a5c5 comedi_pcmcia_auto_unconfig +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pcmcia 0xdaa674a8 comedi_pcmcia_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0x0c667c95 comedi_usb_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0x18148770 comedi_to_usb_dev +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0x422cf97f comedi_to_usb_interface +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0x650df682 comedi_usb_auto_unconfig +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0x92eeeef3 comedi_usb_auto_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0xe24f3402 comedi_usb_driver_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/addi_watchdog 0x57ff3427 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 0x3c72cf86 amplc_dio200_common_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/amplc_dio200_common 0x4997d55d amplc_dio200_set_enhance +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/amplc_pc236_common 0x9045ba64 amplc_pc236_common_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x0166308a comedi_8254_update_divisors +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x1cb25060 comedi_8254_write +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x6ff97916 comedi_8254_set_mode +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x7e424a4d comedi_8254_status +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x92b4b75a comedi_8254_cascade_ns_to_timer +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x950df5a9 comedi_8254_read +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0xa3a83669 comedi_8254_subdevice_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0xbe41c80e comedi_8254_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0xca3bc36a comedi_8254_mm_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0xcd8ba7ae comedi_8254_pacer_enable +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0xd4035f31 comedi_8254_ns_to_timer +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0xe38589cd comedi_8254_set_busy +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0xeb9b4331 comedi_8254_load +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8255 0x0aaa3117 subdev_8255_regbase +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8255 0x89169bf5 subdev_8255_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8255 0xa4c42762 subdev_8255_mm_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_isadma 0x0d68fcd9 comedi_isadma_poll +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 0x6815a033 comedi_isadma_free +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_isadma 0xa3d01a85 comedi_isadma_program +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_isadma 0xa7ebb8a3 comedi_isadma_set_mode +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_isadma 0xa8244237 comedi_isadma_alloc +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/das08 0x95b4f572 das08_common_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x061dd043 mite_alloc_ring +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x06801401 mite_detach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x0b064b14 mite_dma_arm +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x125bf0b0 mite_sync_input_dma +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x1b43899d mite_free_ring +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x257a514c mite_request_channel_in_range +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x2885b9cd mite_bytes_written_to_memory_ub +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x370694dd mite_bytes_read_from_memory_ub +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x4a488292 mite_prep_dma +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x4cc8f5e5 mite_buf_change +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x4df6ba1a mite_sync_output_dma +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x56168f15 mite_alloc +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x8c44cb27 mite_dma_tcr +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x8dbba662 mite_bytes_written_to_memory_lb +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x92388b72 mite_bytes_read_from_memory_lb +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x96f0a548 mite_setup2 +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xac99e47d mite_get_status +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xbd39e55d mite_release_channel +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xc782d144 mite_bytes_in_transit +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xd53f2641 mite_dma_disarm +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xe80fd413 mite_done +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_common 0x7d100482 labpc_common_detach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_common 0xa98bea38 labpc_common_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_isadma 0x756a88a3 labpc_init_dma_chan +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_isadma 0x97181421 labpc_drain_dma +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_isadma 0xb16cc6bd labpc_handle_dma_status +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_isadma 0xc33b102f labpc_free_dma_chan +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_isadma 0xf862832a labpc_setup_dma +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x13f987ad ni_tio_set_gate_src +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x44e3c6d5 ni_gpct_device_construct +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x490d8cfb ni_gpct_device_destroy +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x7355dc1d ni_tio_insn_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x8557502f ni_tio_init_counter +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0xabfb4df8 ni_tio_arm +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0xd16eba8f ni_tio_insn_read +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0xdbe58b54 ni_tio_insn_write +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0x42ee16b7 ni_tio_handle_interrupt +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0x4f190f2b ni_tio_cmd +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0x5c1ae1df ni_tio_set_mite_channel +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0x91f15484 ni_tio_cmdtest +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0x99139403 ni_tio_acknowledge +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0xd14a585b ni_tio_cancel +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x045fe238 comedi_get_n_channels +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x0685ba60 comedi_open +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x5dc2bc9e comedi_dio_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x611bfcd1 comedi_close +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x64baba69 comedi_find_subdevice_by_type +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0xb086edbc comedi_dio_get_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0xe3690c98 comedi_dio_bitfield2 +EXPORT_SYMBOL_GPL drivers/staging/iio/addac/adt7316 0xba54335d adt7316_pm_ops +EXPORT_SYMBOL_GPL drivers/staging/lustre/lustre/obdclass/obdclass 0x25f89ca7 debugfs_lustre_root +EXPORT_SYMBOL_GPL drivers/staging/lustre/lustre/obdclass/obdclass 0x3f20af35 lustre_attr_store +EXPORT_SYMBOL_GPL drivers/staging/lustre/lustre/obdclass/obdclass 0x7db94f47 lustre_kobj +EXPORT_SYMBOL_GPL drivers/staging/lustre/lustre/obdclass/obdclass 0xb448a15c lustre_sysfs_ops +EXPORT_SYMBOL_GPL drivers/staging/lustre/lustre/obdclass/obdclass 0xda4056b6 lustre_attr_show +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x0e81c76d spk_serial_out +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x14f06fe7 spk_serial_in_nowait +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x24465eaf spk_var_store +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x262a3af0 spk_synth_is_alive_restart +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x2ab8daa7 speakup_info +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x2be66c30 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 0x475e158a synth_request_region +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x54122356 spk_synth_flush +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x62c7c25f spk_synth_immediate +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x630dfe3a spk_synth_is_alive_nop +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x8b3aeb81 speakup_event +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x8e146195 synth_release_region +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x9a888082 synth_buffer_getc +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x9ea28957 spk_do_catch_up +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xabf8f738 spk_var_show +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xb48956f8 synth_buffer_peek +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xbbd15a51 speakup_start_ttys +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xc2c22881 spk_serial_synth_probe +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xc766ae09 synth_printf +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xd1a01435 synth_remove +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xd1b551a2 spk_get_var +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xe7cd4558 spk_serial_release +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xe7e810f8 spk_serial_in +EXPORT_SYMBOL_GPL drivers/thermal/int340x_thermal/int340x_thermal_zone 0x246b2b8a int340x_thermal_zone_add +EXPORT_SYMBOL_GPL drivers/thermal/int340x_thermal/int340x_thermal_zone 0x7551d384 int340x_thermal_zone_remove +EXPORT_SYMBOL_GPL drivers/thermal/intel_soc_dts_iosf 0x08626815 intel_soc_dts_iosf_add_read_only_critical_trip +EXPORT_SYMBOL_GPL drivers/thermal/intel_soc_dts_iosf 0x33f90317 intel_soc_dts_iosf_interrupt_handler +EXPORT_SYMBOL_GPL drivers/thermal/intel_soc_dts_iosf 0x48e4dd6d intel_soc_dts_iosf_init +EXPORT_SYMBOL_GPL drivers/thermal/intel_soc_dts_iosf 0x6bb8e4c8 intel_soc_dts_iosf_exit +EXPORT_SYMBOL_GPL drivers/tty/n_tracesink 0x585ebaac n_tracesink_datadrain +EXPORT_SYMBOL_GPL drivers/uio/uio 0x00613ee2 __uio_register_device +EXPORT_SYMBOL_GPL drivers/uio/uio 0x07a15be1 uio_event_notify +EXPORT_SYMBOL_GPL drivers/uio/uio 0x08f89fde uio_unregister_device +EXPORT_SYMBOL_GPL drivers/usb/atm/usbatm 0x2f9fd5c2 usbatm_usb_probe +EXPORT_SYMBOL_GPL drivers/usb/atm/usbatm 0xc364f1f2 usbatm_usb_disconnect +EXPORT_SYMBOL_GPL drivers/usb/chipidea/ci_hdrc 0x40e0386b ci_hdrc_add_device +EXPORT_SYMBOL_GPL drivers/usb/chipidea/ci_hdrc 0xfe4b7a3d ci_hdrc_remove_device +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0x0105ce36 ulpi_unregister_driver +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0x37a62044 ulpi_write +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0x3f933b90 ulpi_register_driver +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0x463a7344 ulpi_unregister_interface +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0x56decf63 ulpi_read +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0xe4eb26d2 ulpi_register_interface +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x1fd5847c gether_setup_name +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x29641b97 gether_set_qmult +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x504dea39 gether_get_ifname +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x6185de30 gether_get_host_addr_u8 +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x662dec63 gether_get_dev_addr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x7a4ff3e4 gether_set_gadget +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x7e84e46c gether_connect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x83c6e2dc gether_set_dev_addr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x872f1f5d gether_get_qmult +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x8878cfa6 gether_cleanup +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xa5d9edd5 gether_get_host_addr_cdc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xb2ce6509 gether_get_host_addr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xc1643cb8 gether_register_netdev +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xd91507c1 gether_setup_name_default +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xe70bbabf gether_disconnect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xeba169d1 gether_set_host_addr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0x33bfdca2 gserial_alloc_line +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0x61e6be0d gserial_connect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0x82061503 gserial_disconnect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0x89263781 gs_free_req +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0xb6652875 gserial_free_line +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0xf9e5ceeb gs_alloc_req +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_fs 0x70eb5dad ffs_single_dev +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_fs 0xb4ae33ea ffs_lock +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_fs 0xfecc3136 ffs_name_dev +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x0a5230df fsg_common_set_nluns +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 0x1b1cc3af store_cdrom_address +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 0x1e6e40cd 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 0x2d10b6a7 fsg_common_create_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 0x3f92df18 fsg_show_file +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 0x51707c29 fsg_common_run_thread +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x534bc173 fsg_lun_fsync_sub +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 0x5de29f46 fsg_lun_close +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x67e86573 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 0x7540ebd1 fsg_lun_open +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 0x83d8b452 fsg_store_nofua +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x8505b6c9 fsg_store_removable +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 0x8fa8d912 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 0x99023bfc fsg_common_put +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 0x9dc025a5 fsg_common_free_luns +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x9ff30961 fsg_show_nofua +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xa46e6443 fsg_common_get +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 0xafc04913 fsg_store_cdrom +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 0xbdf2d79f fsg_store_file +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xc30f945a fsg_common_set_cdev +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xd3ae3b65 fsg_common_create_luns +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xd468f882 fsg_common_set_ops +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xe4d1591e fsg_config_from_params +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xf03b18d7 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_mass_storage 0xfd1e2417 fsg_common_remove_lun +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x1aad906a rndis_set_param_dev +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x1de6af82 rndis_add_hdr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x347f83ac rndis_uninit +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x37fb0c59 rndis_signal_connect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x3fc8b151 rndis_set_param_medium +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x47486413 rndis_rm_hdr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x5331ffd5 rndis_get_next_response +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x8122b98a rndis_signal_disconnect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x8f4026be rndis_register +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x9c294122 rndis_free_response +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xbaa284b1 rndis_set_host_mac +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xc6691ec2 rndis_deregister +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xd45082f3 rndis_set_param_vendor +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xfc3c7ce1 rndis_borrow_net +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xfe450f42 rndis_msg_parser +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x0e6d870e usb_function_unregister +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x147dc5a1 usb_ep_autoconfig_ss +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x156c6c02 usb_function_activate +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x19a2dc61 usb_function_register +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x1beba5e2 usb_get_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x2e09263f usb_copy_descriptors +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x3073ec73 usb_interface_id +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x377f9ef8 usb_composite_setup_continue +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x39fd6000 usb_string_ids_tab +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x43f2c458 usb_gstrings_attach +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x500609c4 usb_add_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x5a170351 usb_put_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x5d46a830 usb_add_config +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x5d6826ce usb_free_all_descriptors +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x6ab75272 usb_string_id +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x6d4ad37e usb_assign_descriptors +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x7da56ddd usb_ep_autoconfig_reset +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x94a46b94 usb_string_ids_n +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x94d7075a usb_gadget_get_string +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x97719799 usb_remove_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xa073382d alloc_ep_req +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xa0ec5cd1 usb_composite_overwrite_options +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xa758129b usb_put_function_instance +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xb230d3e2 usb_ep_autoconfig +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xb6ce1ef5 config_ep_by_speed +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xbba0f7c6 usb_get_function_instance +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xcbfd971b usb_composite_unregister +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xd259e87a usb_function_deactivate +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xd2ea2134 usb_descriptor_fillbuf +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xe235fe43 usb_add_config_only +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xf1b88748 usb_composite_probe +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xf45c31b6 unregister_gadget_item +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xf474a207 usb_gadget_config_buf +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x0f77af2c usb_gadget_probe_driver +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x263a6fcc usb_add_gadget_udc_release +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x2855b4d8 usb_del_gadget_udc +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x29989992 usb_gadget_udc_reset +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x2a5251ae usb_gadget_unregister_driver +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x2fc6acfa usb_gadget_unmap_request +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x352cf494 usb_gadget_giveback_request +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x4ebf9b5a usb_udc_attach_driver +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x59993009 usb_add_gadget_udc +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x966c5e05 usb_gadget_set_state +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0xead14de6 usb_udc_vbus_handler +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0xf6c3d039 usb_gadget_map_request +EXPORT_SYMBOL_GPL drivers/usb/misc/ezusb 0xea5e647c ezusb_fx1_set_reset +EXPORT_SYMBOL_GPL drivers/usb/misc/ezusb 0xf0a82c4b ezusb_fx1_ihex_firmware_download +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x049b63f0 usb_ftdi_elan_edset_output +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x476ce009 usb_ftdi_elan_edset_setup +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x6b79cb78 usb_ftdi_elan_edset_single +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x81c3989c usb_ftdi_elan_edset_flush +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xc0f68cc8 usb_ftdi_elan_edset_empty +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xc8062695 usb_ftdi_elan_edset_input +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xd825ccdc usb_ftdi_elan_write_pcimem +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xf0cb6dec usb_ftdi_elan_read_pcimem +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xf830f9df ftdi_elan_gone_away +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0x0892ae1a musb_writew +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0x56d31820 musb_writel +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0x72234dd6 musb_readw +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0x96919667 musb_readl +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0xac5f3d70 musb_readb +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0xc0244d14 musb_interrupt +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0xcb32cb36 musb_writeb +EXPORT_SYMBOL_GPL drivers/usb/phy/phy-isp1301 0xd267401e isp1301_get_client +EXPORT_SYMBOL_GPL drivers/usb/serial/usb_wwan 0x3a01220b usb_wwan_port_probe +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x0370eed6 usb_serial_port_softint +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x1edce206 usb_serial_generic_write_bulk_callback +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x259838b6 usb_serial_deregister_drivers +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x25a1e22e usb_serial_generic_submit_read_urbs +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x2c7b94c2 usb_serial_generic_chars_in_buffer +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x34431544 usb_serial_generic_process_read_urb +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x3a606143 usb_serial_generic_open +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x44a55359 usb_serial_generic_read_bulk_callback +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x5342e3d9 usb_serial_generic_unthrottle +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x674fd7ab usb_serial_generic_tiocmiwait +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x8cecf695 usb_serial_generic_resume +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x90c823d4 usb_serial_generic_write +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x91ac503a usb_serial_generic_throttle +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xaec22ca3 usb_serial_generic_get_icount +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xb9389174 usb_serial_generic_write_start +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xbd6914b4 usb_serial_handle_sysrq_char +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xd3cbaa0a usb_serial_register_drivers +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xed6a5467 usb_serial_handle_break +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xf62dd7f8 usb_serial_generic_close +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xfadc53aa usb_serial_handle_dcd_change +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xfb0df26e usb_serial_generic_wait_until_sent +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x02031875 usb_stor_transparent_scsi_command +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x0233fd01 usb_stor_Bulk_transport +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x046bc14b usb_stor_CB_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x0d56756b usb_stor_ctrl_transfer +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x0d7e4863 usb_stor_adjust_quirks +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x1bc3edc2 usb_stor_sense_invalidCDB +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x2c568367 usb_stor_probe1 +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x323d1564 usb_stor_bulk_transfer_buf +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x3794bcc8 fill_inquiry_response +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x41a935eb usb_stor_clear_halt +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x51fb3040 usb_stor_resume +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x5bd5b64e usb_stor_control_msg +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x6288226d usb_stor_access_xfer_buf +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x707ccc74 usb_stor_Bulk_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x7261c6bb usb_stor_set_xfer_buf +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x7cfec0ab usb_stor_bulk_transfer_sg +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x8e2692f4 usb_stor_host_template_init +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xb1faf3b8 usb_stor_pre_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xba2dd6ef usb_stor_suspend +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xcf0d8ee8 usb_stor_probe2 +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xe9f0975e usb_stor_reset_resume +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xeb0446a5 usb_stor_post_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xed59bf6f usb_stor_disconnect +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xefef3367 usb_stor_bulk_srb +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xf2334acd usb_stor_CB_transport +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x2e3f568f usbip_event_happened +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x46ea3ad8 usbip_recv +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x58f004d2 usbip_recv_iso +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x5dd89fb4 usbip_event_add +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x775c2fef usbip_recv_xbuff +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x78b72f44 usbip_debug_flag +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x7baeefc5 usbip_alloc_iso_desc_pdu +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xa14ee8f2 usbip_dump_urb +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xbb6ca8f5 usbip_start_eh +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xce134e2c usbip_pad_iso +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xd02753dc usbip_header_correct_endian +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xdf9425d2 usbip_stop_eh +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xdfb6b56a usbip_pack_pdu +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xe1ea0586 usbip_dump_header +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xe97f0d38 dev_attr_usbip_debug +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x18858992 __wa_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x2b15fbe4 wa_dti_start +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x4ea504a2 rpipe_clear_feature_stalled +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x58f47d41 wa_urb_enqueue +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xab35128a rpipe_ep_disable +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xc0a7370e wa_urb_dequeue +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xc543b60e wa_process_errored_transfers_run +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xcb55ad58 rpipe_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xf4654c3f wa_urb_enqueue_run +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xfe719763 wa_create +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x0ad5de28 wusbhc_b_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x0bb6bf5e wusb_cluster_id_get +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x14bff45d wusbhc_chid_set +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x166c8f5e wusbhc_b_create +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x3241a387 wusbhc_mmcie_rm +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x3cdc016f wusbhc_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x430f196c wusbhc_create +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x49958f4e __wusb_dev_get_by_usb_dev +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x4d6fdfa1 wusbhc_rh_status_data +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x7f0b7631 wusb_dev_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x879995e3 wusbhc_rh_start_port_reset +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xa9780b9e wusbhc_rh_control +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xb725d128 wusb_cluster_id_put +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xc99c343c wusbhc_giveback_urb +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xdf3566f2 wusbhc_reset_all +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xe62394cd wusbhc_mmcie_set +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xee6e1a60 wusbhc_handle_dn +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xf770a6b4 wusbd +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xfe2e17d7 wusb_et_name +EXPORT_SYMBOL_GPL drivers/uwb/i1480/dfu/i1480-dfu-usb 0x2e6fd814 i1480_rceb_check +EXPORT_SYMBOL_GPL drivers/uwb/i1480/dfu/i1480-dfu-usb 0xdc021254 i1480_cmd +EXPORT_SYMBOL_GPL drivers/uwb/i1480/dfu/i1480-dfu-usb 0xe3ed7598 i1480_fw_upload +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x0242f094 __umc_driver_register +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x4440f639 umc_device_unregister +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x56764fde umc_match_pci_id +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x587a8aaa umc_driver_unregister +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x7444779a umc_device_create +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x9144218b umc_device_register +EXPORT_SYMBOL_GPL drivers/uwb/umc 0xbc3d7a89 umc_bus_type +EXPORT_SYMBOL_GPL drivers/uwb/umc 0xeec0e331 umc_controller_reset +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x05fca4e3 uwb_rc_put +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x0b8aad57 uwb_est_unregister +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x1236f20c uwb_rc_neh_error +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x12fe6808 __uwb_rc_try_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x184dc39b uwb_rsv_accept +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x188b72c6 uwb_rsv_create +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x1deeff5f uwb_rc_dev_addr_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x39244745 uwb_dev_for_each +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x4724f068 uwb_notifs_deregister +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x4d57ae3c uwb_rsv_type_str +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x5e4bc088 __uwb_addr_print +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x5f12090b uwb_rc_cmd +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x63f521a8 uwb_rc_get_by_dev +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x64c6249c uwb_rc_ie_rm +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x6c6c0c1a uwb_pal_init +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x6f0dc81d uwb_rc_pre_reset +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x70c321ac uwb_rc_ie_add +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x77693f82 uwb_rc_alloc +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x7dcfcd23 uwb_ie_next +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x843d05db uwb_rc_mac_addr_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x87c4ea3a uwb_rc_cmd_async +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x88a898fa uwb_rsv_establish +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x9145f09e uwb_est_find_size +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x98413234 uwb_rsv_state_str +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xa0f2b4cb uwb_rc_rm +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xa18648da uwb_pal_register +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xa2bade33 uwb_rsv_destroy +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xb0145c22 uwb_dev_try_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xb2833b37 uwb_rsv_terminate +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xb4a51cbd uwb_pal_unregister +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xb82c3830 uwb_rc_vcmd +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xbf391cf5 uwb_radio_start +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xc1e2d369 uwb_rc_post_reset +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xc3b7e487 uwb_rc_get_by_grandpa +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xcf5e8ec8 uwb_rc_reset_all +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xd489c44c uwb_radio_stop +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xdeaec433 uwb_rc_init +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xe1716f06 uwb_est_register +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xe6f8131c uwb_rc_neh_grok +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xeb5923cd uwb_rsv_modify +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xf00c5468 uwb_rsv_get_usable_mas +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xf5ddbedc uwb_notifs_register +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xfe41c939 uwb_rc_add +EXPORT_SYMBOL_GPL drivers/uwb/whci 0xf91e3993 whci_wait_for +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x15389a05 vfio_add_group_dev +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x2831dfbd vfio_device_get_from_dev +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x3567743b vfio_external_user_iommu_id +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x672a09fc vfio_group_get_external_user +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 0xdaeb7836 vfio_del_group_dev +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0xf02a519d vfio_register_iommu_driver +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0xf5653af7 vfio_unregister_iommu_driver +EXPORT_SYMBOL_GPL drivers/vfio/vfio_virqfd 0x2e3fa764 vfio_virqfd_disable +EXPORT_SYMBOL_GPL drivers/vfio/vfio_virqfd 0xb692b43d vfio_virqfd_enable +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x028b8760 vhost_poll_init +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x045a1bc1 vhost_get_vq_desc +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x25752310 vhost_poll_queue +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x269f7a09 vhost_dev_reset_owner_prepare +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x2af5ec49 vhost_dev_cleanup +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x3261e925 vhost_poll_flush +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x437135ca vhost_log_write +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x4ad9082c vhost_add_used_n +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x4cb96f77 vhost_work_init +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x4ed98091 vhost_dev_set_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x52681a3f vhost_dev_ioctl +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x66fd4f86 vhost_poll_start +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x800a9e29 vhost_add_used_and_signal +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x884b4f5d vhost_work_flush +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x8e67aecb vhost_add_used +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x9828cf9d vhost_poll_stop +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x9aac208e vhost_dev_stop +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x9c1cc7e8 vhost_dev_has_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x9e7033ef vhost_add_used_and_signal_n +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xa68311bf vhost_dev_reset_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xaed17dcd vhost_disable_notify +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xbe34761c vhost_enable_notify +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xc6e10b85 vhost_dev_init +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xd347e17e vhost_init_used +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xda9bd480 vhost_vring_ioctl +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xe02b2769 vhost_dev_check_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xe5ffdfdc vhost_work_queue +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xe73893a5 vhost_discard_vq_desc +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xf2afb72d vhost_signal +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xf3a4eec1 vhost_log_access_ok +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xfef67068 vhost_vq_access_ok +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 0x435d752b ili9320_resume +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x5a49fbf5 ili9320_suspend +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x77ecd685 ili9320_remove +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x9f2b858a ili9320_write_regs +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x9f492a23 ili9320_write +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0xbcc449fb ili9320_shutdown +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0xf2b7139e ili9320_probe_spi +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x281a85d8 auok190x_read_cmdargs +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x2f7068ca auok190x_send_cmdargs_pixels +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x495e1337 auok190x_send_command +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x4cfc1caa auok190x_send_cmdargs_nowait +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x5c56e8ed auok190x_pm +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x65b41e48 auok190x_common_probe +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0xa5888b2b auok190x_common_remove +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0xd85cfc22 auok190x_send_cmdargs +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0xd8d65922 auok190x_send_cmdargs_pixels_nowait +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0xe06c4315 auok190x_send_command_nowait +EXPORT_SYMBOL_GPL drivers/video/fbdev/core/fb_ddc 0x4cf1428e fb_ddc_read +EXPORT_SYMBOL_GPL drivers/video/fbdev/core/fb_sys_fops 0x2ca68e13 fb_sys_read +EXPORT_SYMBOL_GPL drivers/video/fbdev/core/fb_sys_fops 0xbe3b5429 fb_sys_write +EXPORT_SYMBOL_GPL drivers/video/fbdev/sis/sisfb 0x15914657 sis_free_new +EXPORT_SYMBOL_GPL drivers/video/fbdev/sis/sisfb 0x87f18269 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 0x22a7af24 viafb_dma_copy_out_sg +EXPORT_SYMBOL_GPL drivers/video/fbdev/via/viafb 0x292da7a2 viafb_irq_enable +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 0x79e6190a viafb_irq_disable +EXPORT_SYMBOL_GPL drivers/video/fbdev/via/viafb 0x7e6a69b8 viafb_find_i2c_adapter +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 0xfff2dfd2 viafb_gpio_lookup +EXPORT_SYMBOL_GPL drivers/w1/wire 0x2ec94e48 w1_reset_select_slave +EXPORT_SYMBOL_GPL drivers/w1/wire 0x3926016e w1_read_block +EXPORT_SYMBOL_GPL drivers/w1/wire 0x55526c28 w1_reset_resume_command +EXPORT_SYMBOL_GPL drivers/w1/wire 0x712dad19 w1_read_8 +EXPORT_SYMBOL_GPL drivers/w1/wire 0x739933a7 w1_next_pullup +EXPORT_SYMBOL_GPL drivers/w1/wire 0x7c2f2afb w1_calc_crc8 +EXPORT_SYMBOL_GPL drivers/w1/wire 0x80b368d6 w1_write_block +EXPORT_SYMBOL_GPL drivers/w1/wire 0xa186f5db w1_write_8 +EXPORT_SYMBOL_GPL drivers/w1/wire 0xa46074e1 w1_reset_bus +EXPORT_SYMBOL_GPL drivers/w1/wire 0xf042adff w1_touch_block +EXPORT_SYMBOL_GPL drivers/xen/xen-privcmd 0xd0f5a7e0 xen_privcmd_fops +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x3740ced3 dlm_posix_unlock +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x6a86327b dlm_posix_get +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x9321df95 dlm_lock +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xc6dc8c2f dlm_new_lockspace +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xc9406f04 dlm_posix_lock +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xcf9f3328 dlm_release_lockspace +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xdc583c08 dlm_unlock +EXPORT_SYMBOL_GPL fs/fscache/fscache 0x092cf98e fscache_object_sleep_till_congested +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x2943ca36 lockd_up +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x560c34bd nlmsvc_unlock_all_by_sb +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x77e35ccc nlmsvc_unlock_all_by_ip +EXPORT_SYMBOL_GPL fs/lockd/lockd 0xa1ac6da3 nlmsvc_ops +EXPORT_SYMBOL_GPL fs/lockd/lockd 0xdf7f881c nlmclnt_proc +EXPORT_SYMBOL_GPL fs/lockd/lockd 0xeafd0b2b nlmclnt_done +EXPORT_SYMBOL_GPL fs/lockd/lockd 0xef3ecc36 lockd_down +EXPORT_SYMBOL_GPL fs/lockd/lockd 0xf57b39e9 nlmclnt_init +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x10af1a7c nfs_free_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x11ac9ff2 nfs_file_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x156e7d3d nfs_instantiate +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1608b368 nfs_generic_pgio +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x18177f07 nfs_wait_client_init_complete +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1bf313ac nfs_wb_all +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1d57985d nfs_getattr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1d7c6565 nfs_sops +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x200b30fb nfs_alloc_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x211f74c1 nfs_pageio_init_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x22249000 nfs_fs_mount_common +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x22d27df3 nfs_alloc_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x236d1e96 nfs_request_add_commit_list +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x255338e3 nfs_remount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x26884ff7 nfs_alloc_fhandle +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2852c6a7 nfs_init_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x291e1d8d nfs_create_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x29662aca nfs_commit_free +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x29bb6b2f nfs_rmdir +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2c4907f6 put_nfs_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2dbc092e nfs4_label_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3044e16d nfs_refresh_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x30ad98d8 register_nfs_version +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x32b7c173 nfs_file_mmap +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x32feb2d8 nfs_access_set_mask +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x34690f74 nfs_initiate_pgio +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3519753a nfs_clone_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x35359154 nfs_commitdata_release +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x36dcccdc nfs_post_op_update_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x37e3f6d2 nfs_setattr_update_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x39e05ac3 nfs_idmap_cache_timeout +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3c5d88f8 nfs_show_path +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3ca31f35 nfs_net_id +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3f2690f2 nfs_check_flags +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x42f2c81f nfs4_client_id_uniquifier +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x457011f5 nfs_show_devname +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x476ed395 nfs_get_lock_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4adc654d nfs_unlink +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4cb9e001 recover_lost_locks +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4e4fe799 unregister_nfs_version +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4ec82c5f nfs_symlink +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x511f999b nfs_fs_mount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x51892d61 nfs_callback_set_tcpport +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x535ce015 nfs_file_write +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x55907b03 nfs_pageio_init +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5621c147 nfs_set_sb_security +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x584b8482 nfs_inc_attr_generation_counter +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5ada9a2b nfs_pageio_resend +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5b8d7dec nfs_submount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5e1d863a nfs_sockaddr_match_ipaddr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5fecca86 nfs_sb_deactive +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x60256d0a nfs_destroy_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x63cce98b nfs_free_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x65c71fc3 alloc_nfs_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x65f56365 nfs_post_op_update_inode_force_wcc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x65f85aeb nfs_mark_client_ready +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6609c281 nfs_show_options +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6c8dbd57 nfs_force_lookup_revalidate +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6dbe4ddb nfs_retry_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6fd8a4f6 nfs_statfs +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x72babdf0 nfs_drop_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x744456bc nfs_put_lock_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x74b3a3f5 nfs_initiate_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7695c562 nfs_pgio_header_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7b7f5688 nfs_alloc_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7e1bcf46 nfs_file_release +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7f949af4 nfs_flock +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x81035987 nfs_create +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8536f403 nfs_write_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x869512e4 nfs_file_fsync_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x87e572d3 nfs_file_operations +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8a81e140 nfs_pageio_reset_write_mds +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8e484283 nfs_setsecurity +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8ecfecf7 nfs_probe_fsinfo +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8f7171ff nfs_writeback_update_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8fa04080 nfs_access_add_cache +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x90a5530f nfsiod_workqueue +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x91775720 nfs_pgheader_init +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x91d1fe52 max_session_slots +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x91e34c00 nfs_clone_sb_security +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x93197397 nfs_fill_super +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9629b0f0 nfs4_dentry_operations +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x97a544d1 nfs_init_cinfo +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9a72b436 nfs_umount_begin +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9e6ffb7f nfs_path +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa009c7fa nfs_pgio_data_destroy +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa26cd9ad nfs_clear_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa4d4fdb8 nfs_permission +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa57e3744 nfs_atomic_open +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa6c865ee nfs_wait_bit_killable +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa7c0796f nfs_fs_type +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa8c3f3b3 nfs_request_add_commit_list_locked +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa8d2d1ce nfs_callback_tcpport +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa8e9e1ae send_implementation_id +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xaaa14361 nfs_dreq_bytes_left +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xab99a936 nfs_get_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xac30a134 nfs_dentry_operations +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xad9e3952 nfs_put_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb197edf6 nfs_show_stats +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb3328d9b nfs_server_copy_userdata +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb57b0933 nfs_revalidate_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb606e716 nfs_fattr_init +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb82aa415 nfs_rename +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb8958b1a __tracepoint_nfs_fsync_exit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbe46f75c nfs_server_remove_lists +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc28ba6cf nfs_init_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc34f0486 nfs_close_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc4ff1e9f nfs_auth_info_match +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc5ef47d5 nfs_init_timeout_values +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc68ad2c6 nfs_file_flush +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc6db94fe nfs_pageio_init_write +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc786386c nfs_file_llseek +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc7eb434c nfs_sync_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xcb3a75e7 nfs_zap_acl_cache +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xcc0cb845 __tracepoint_nfs_fsync_enter +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xcc22b5a0 nfs_mknod +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xcc4a6475 nfs_init_server_rpcclient +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xcc940613 nfs_pgio_current_mirror +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd018ea64 nfs_try_mount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd038e4c6 nfs_server_insert_lists +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd2513081 _nfs_display_fhandle_hash +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd2bb4d5f nfs_lock +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd589e14f nfs_mkdir +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd61d3d43 nfs_file_set_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdae9b5d7 nfs4_disable_idmapping +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdc053249 nfs4_fs_type +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdfafe4d7 nfs_pageio_reset_read_mds +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe485f345 nfs_file_splice_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe526463e nfs_do_submount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe6310b7c nfs_pgio_header_free +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe92c510d nfs_direct_set_resched_writes +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xeb662023 nfs_fscache_open_file +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xeda0f929 nfs_generic_pg_test +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xef27c06b nfs_kill_super +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xef65c444 get_nfs_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf00f9a05 nfs_may_open +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf1976c60 nfs_create_rpc_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf2f5ce9c nfs_access_zap_cache +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf3dac9ee nfs_inode_attach_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf5ae86ab nfs_setattr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf681b204 nfs_lookup +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf69fb5b1 nfs_link +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf6af0b30 nfs_invalidate_atime +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf6afd460 nfs_sb_active +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfab3a82f nfs_fhget +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfaf868c1 nfs_commitdata_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfb3fc6e5 nfs_request_remove_commit_list +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfb7ee006 nfs_alloc_fattr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfc619abd _nfs_display_fhandle +EXPORT_SYMBOL_GPL fs/nfs/nfsv3 0xf7db8ccc nfs3_set_ds_client +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x0366fb8e pnfs_put_lseg +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x05828f29 nfs4_set_ds_client +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x0714af73 pnfs_generic_pg_readpages +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x07f1acf8 nfs4_mark_deviceid_unavailable +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x0bd80805 pnfs_error_mark_layout_for_return +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x0f97146e _pnfs_return_layout +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x101a024d pnfs_update_layout +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x11bda27c __tracepoint_nfs4_pnfs_read +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x1211aa86 pnfs_ld_write_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x164e3e68 nfs4_proc_getdeviceinfo +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x1668e660 pnfs_write_done_resend_to_mds +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x16da00ac pnfs_generic_clear_request_commit +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x170f3ed6 nfs41_maxgetdevinfo_overhead +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x1961a7ba nfs4_pnfs_ds_add +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x19876893 pnfs_generic_pg_test +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x1a7e76d7 nfs4_find_or_create_ds_client +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x1d8bd076 nfs4_sequence_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x1f4293a8 pnfs_generic_recover_commit_reqs +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x20621581 pnfs_unregister_layoutdriver +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x20c25ad9 nfs4_schedule_migration_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x22dc46e9 nfs4_pnfs_ds_put +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x255562f5 pnfs_generic_pg_init_write +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x27db57db pnfs_layoutcommit_inode +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x288b31ed pnfs_register_layoutdriver +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x3e8908ef pnfs_ld_read_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x3fbbc803 pnfs_read_done_resend_to_mds +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x4271805e pnfs_set_lo_fail +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x4a7e2c89 pnfs_nfs_generic_sync +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x5fdf955d nfs4_delete_deviceid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x5ffa699c nfs41_sequence_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x60f89429 nfs4_test_deviceid_unavailable +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x62933263 pnfs_generic_pg_writepages +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x63810941 nfs4_pnfs_ds_connect +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x65513c9e nfs4_schedule_lease_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x665fa50e __tracepoint_nfs4_pnfs_write +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x69d3558d pnfs_generic_rw_release +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x73445ec2 pnfs_generic_pg_cleanup +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x7bfc86e1 nfs4_init_deviceid_node +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x7d1abfb4 nfs41_setup_sequence +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x81524d7c pnfs_layout_mark_request_commit +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x83ae6aaa nfs4_pnfs_v3_ds_connect_unload +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x8d692269 nfs4_put_deviceid_node +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x8ec858a9 pnfs_generic_scan_commit_lists +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x9a3584d7 nfs40_setup_sequence +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xa0274845 nfs4_find_get_deviceid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xa02df320 nfs_map_string_to_numeric +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xa5db3933 pnfs_generic_commit_pagelist +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xaaab40b9 pnfs_put_lseg_locked +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xaaae6673 nfs4_schedule_session_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xad7cdc09 pnfs_destroy_layout +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xaed39047 pnfs_generic_sync +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xafce4ae1 nfs4_set_rw_stateid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xb479cc55 nfs4_init_ds_session +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xb51018aa nfs4_schedule_stateid_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xb6f4556f pnfs_generic_pg_init_read +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xb9a4b7c0 nfs_remove_bad_delegation +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xc556174a pnfs_set_layoutcommit +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xc5671423 pnfs_report_layoutstat +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xccade6f2 nfs4_schedule_lease_moved_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xd74b9759 pnfs_generic_prepare_to_resend_writes +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xdb813e84 __tracepoint_nfs4_pnfs_commit_ds +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xe1ec8a14 pnfs_read_resend_pnfs +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xed15fb41 nfs4_print_deviceid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xf2906054 pnfs_generic_write_commit_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xf999267e pnfs_generic_commit_release +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xfe36bc59 nfs4_decode_mp_ds_addr +EXPORT_SYMBOL_GPL fs/nfs_common/grace 0x17ce645d locks_end_grace +EXPORT_SYMBOL_GPL fs/nfs_common/grace 0x42acf85a locks_start_grace +EXPORT_SYMBOL_GPL fs/nfs_common/grace 0x9c4434a6 locks_in_grace +EXPORT_SYMBOL_GPL fs/nfs_common/nfs_acl 0x300e760f nfsacl_decode +EXPORT_SYMBOL_GPL fs/nfs_common/nfs_acl 0x8e596cbe nfsacl_encode +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x025ad7b9 o2nm_get_node_by_num +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x078a4f89 o2nm_get_node_by_ip +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x11736b03 __mlog_printk +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x14150be1 o2hb_setup_callback +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 0x1d747ce3 o2hb_check_node_heartbeating +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x36418553 o2net_send_message +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x4900035b o2hb_stop_all_regions +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x49c42782 o2hb_unregister_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x53d218b3 o2nm_node_get +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x6814f06b o2nm_node_put +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x687f6251 mlog_and_bits +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xa1ae48e1 o2hb_check_node_heartbeating_no_sem +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xa82a8645 o2nm_this_node +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xa87bc9e7 o2nm_configured_node_map +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xa9f5379a o2net_send_message_vec +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xae808bac o2net_register_handler +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xbaeb4700 o2hb_check_node_heartbeating_from_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xbc879857 o2hb_register_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xc3679d7b o2hb_get_all_regions +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xd60f2c6c o2hb_check_local_node_heartbeating +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/dlm/ocfs2_dlm 0x0969b72d dlm_register_eviction_cb +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x1f5579e3 dlm_unregister_domain +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x22316cb0 dlmunlock +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x6095578b dlm_register_domain +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x69d7e8ba dlm_print_one_lock +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 0xfb86b96f dlm_errname +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xfc63bdca dlmlock +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x1f5b573d ocfs2_stack_glue_register +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x269d63fd ocfs2_cluster_disconnect +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x316904e1 ocfs2_dlm_unlock +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x3bcef5f3 ocfs2_dlm_lock_status +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x40718c92 ocfs2_dlm_lock +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x4226705d ocfs2_dlm_dump_lksb +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x424241c9 ocfs2_dlm_lvb +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x4d3af7fa ocfs2_cluster_hangup +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x4fdb11bc ocfs2_stack_glue_unregister +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x60f4bcef ocfs2_dlm_lvb_valid +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x9ccafa05 ocfs2_cluster_this_node +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xa06fbc10 ocfs2_cluster_connect_agnostic +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xb19d2e0f ocfs2_plock +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xbbc4ef97 ocfs2_stack_supports_plocks +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xbf9068ab ocfs2_cluster_connect +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xe40cffce ocfs2_stack_glue_set_max_proto_version +EXPORT_SYMBOL_GPL kernel/torture 0x06c53305 _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 0x4c7529bd torture_shutdown_absorb +EXPORT_SYMBOL_GPL kernel/torture 0x52665f8b torture_random +EXPORT_SYMBOL_GPL kernel/torture 0x5346b23b torture_shuffle_cleanup +EXPORT_SYMBOL_GPL kernel/torture 0x6364b2f0 stutter_wait +EXPORT_SYMBOL_GPL kernel/torture 0x679d9e50 torture_must_stop +EXPORT_SYMBOL_GPL kernel/torture 0x688e6a64 torture_cleanup_end +EXPORT_SYMBOL_GPL kernel/torture 0x6bdeda8f torture_onoff_init +EXPORT_SYMBOL_GPL kernel/torture 0x8b0e1d2f torture_shuffle_init +EXPORT_SYMBOL_GPL kernel/torture 0xc1361afc torture_onoff_cleanup +EXPORT_SYMBOL_GPL kernel/torture 0xc55d8b3f _torture_create_kthread +EXPORT_SYMBOL_GPL kernel/torture 0xc6527045 torture_init_begin +EXPORT_SYMBOL_GPL kernel/torture 0xc67a49d4 torture_cleanup_begin +EXPORT_SYMBOL_GPL kernel/torture 0xc6f26849 torture_shuffle_task_register +EXPORT_SYMBOL_GPL kernel/torture 0xdbc5277a torture_shutdown_init +EXPORT_SYMBOL_GPL kernel/torture 0xe6989fd3 torture_init_end +EXPORT_SYMBOL_GPL kernel/torture 0xe9ff1468 torture_stutter_init +EXPORT_SYMBOL_GPL kernel/torture 0xf6d34fb5 torture_kthread_stopping +EXPORT_SYMBOL_GPL lib/842/842_compress 0x1ce013cf sw842_compress +EXPORT_SYMBOL_GPL lib/842/842_decompress 0x0d22f116 sw842_decompress +EXPORT_SYMBOL_GPL lib/bch 0x231d70fc encode_bch +EXPORT_SYMBOL_GPL lib/bch 0x6b770f49 decode_bch +EXPORT_SYMBOL_GPL lib/bch 0x9463ff71 init_bch +EXPORT_SYMBOL_GPL lib/bch 0xbdf512de free_bch +EXPORT_SYMBOL_GPL lib/notifier-error-inject 0x21c75b3d notifier_err_inject_init +EXPORT_SYMBOL_GPL lib/notifier-error-inject 0xe56816b8 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 lib/reed_solomon/reed_solomon 0x201d8ea3 encode_rs8 +EXPORT_SYMBOL_GPL lib/reed_solomon/reed_solomon 0x29fa419f decode_rs8 +EXPORT_SYMBOL_GPL lib/reed_solomon/reed_solomon 0x300d7e57 free_rs +EXPORT_SYMBOL_GPL lib/reed_solomon/reed_solomon 0x6fbb3bd9 init_rs_non_canonical +EXPORT_SYMBOL_GPL lib/reed_solomon/reed_solomon 0xabda1e2e decode_rs16 +EXPORT_SYMBOL_GPL lib/reed_solomon/reed_solomon 0xb050f329 init_rs +EXPORT_SYMBOL_GPL net/6lowpan/6lowpan 0x483ef89a lowpan_header_compress +EXPORT_SYMBOL_GPL net/6lowpan/6lowpan 0xdce11e97 lowpan_header_decompress +EXPORT_SYMBOL_GPL net/802/garp 0x1e22f95f garp_request_join +EXPORT_SYMBOL_GPL net/802/garp 0x264ba95e garp_uninit_applicant +EXPORT_SYMBOL_GPL net/802/garp 0x5f71511d garp_request_leave +EXPORT_SYMBOL_GPL net/802/garp 0x863f7a28 garp_register_application +EXPORT_SYMBOL_GPL net/802/garp 0xa1149998 garp_unregister_application +EXPORT_SYMBOL_GPL net/802/garp 0xda3bd0f0 garp_init_applicant +EXPORT_SYMBOL_GPL net/802/mrp 0x1f085615 mrp_request_join +EXPORT_SYMBOL_GPL net/802/mrp 0x5a28cae2 mrp_request_leave +EXPORT_SYMBOL_GPL net/802/mrp 0x9541bda2 mrp_uninit_applicant +EXPORT_SYMBOL_GPL net/802/mrp 0xaa49fd24 mrp_init_applicant +EXPORT_SYMBOL_GPL net/802/mrp 0xad21c808 mrp_unregister_application +EXPORT_SYMBOL_GPL net/802/mrp 0xfaa341a3 mrp_register_application +EXPORT_SYMBOL_GPL net/802/stp 0x4f432dd8 stp_proto_register +EXPORT_SYMBOL_GPL net/802/stp 0x565dd467 stp_proto_unregister +EXPORT_SYMBOL_GPL net/9p/9pnet 0x350cce9d p9_client_xattrcreate +EXPORT_SYMBOL_GPL net/9p/9pnet 0xb3518ccb 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 0xa7cd74b0 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 0x4ffba220 l2cap_chan_create +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x5e7a6a20 l2cap_chan_send +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x9c6c171f bt_debugfs +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x9e6f379b l2cap_add_psm +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0xa77b6cf2 l2cap_chan_del +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0xa9a089ce l2cap_chan_set_defaults +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0xc0b84dfa l2cap_chan_put +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0xe0681921 l2cap_chan_connect +EXPORT_SYMBOL_GPL net/bridge/br_netfilter 0x0cb0f8b7 br_netfilter_enable +EXPORT_SYMBOL_GPL net/bridge/bridge 0x0e3a01a3 br_multicast_list_adjacent +EXPORT_SYMBOL_GPL net/bridge/bridge 0x3a8a6f4f br_dev_queue_push_xmit +EXPORT_SYMBOL_GPL net/bridge/bridge 0x3b201b8c br_multicast_has_querier_adjacent +EXPORT_SYMBOL_GPL net/bridge/bridge 0x6521062c br_deliver +EXPORT_SYMBOL_GPL net/bridge/bridge 0x68d8a6a5 br_multicast_has_querier_anywhere +EXPORT_SYMBOL_GPL net/bridge/bridge 0xc498fd22 nf_br_ops +EXPORT_SYMBOL_GPL net/bridge/bridge 0xeb9fa7f0 br_forward_finish +EXPORT_SYMBOL_GPL net/bridge/bridge 0xfede676a br_handle_frame_finish +EXPORT_SYMBOL_GPL net/bridge/netfilter/nf_tables_bridge 0x5af749f7 nft_bridge_iphdr_validate +EXPORT_SYMBOL_GPL net/bridge/netfilter/nf_tables_bridge 0x637a447a nft_bridge_ip6hdr_validate +EXPORT_SYMBOL_GPL net/dccp/dccp 0x04cb5e98 dccp_sync_mss +EXPORT_SYMBOL_GPL net/dccp/dccp 0x08c3a4c1 dccp_setsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0x0dd10055 dccp_recvmsg +EXPORT_SYMBOL_GPL net/dccp/dccp 0x10e6ded0 dccp_ioctl +EXPORT_SYMBOL_GPL net/dccp/dccp 0x1748b386 dccp_make_response +EXPORT_SYMBOL_GPL net/dccp/dccp 0x1c4d968b dccp_set_state +EXPORT_SYMBOL_GPL net/dccp/dccp 0x1d99d49a dccp_timestamp +EXPORT_SYMBOL_GPL net/dccp/dccp 0x1e8967bb dccp_close +EXPORT_SYMBOL_GPL net/dccp/dccp 0x23672cd0 dccp_hashinfo +EXPORT_SYMBOL_GPL net/dccp/dccp 0x3684f998 dccp_done +EXPORT_SYMBOL_GPL net/dccp/dccp 0x3c33ce8e dccp_rcv_established +EXPORT_SYMBOL_GPL net/dccp/dccp 0x4cdd391d dccp_feat_list_purge +EXPORT_SYMBOL_GPL net/dccp/dccp 0x4e2d4d99 dccp_death_row +EXPORT_SYMBOL_GPL net/dccp/dccp 0x4ec35231 dccp_ackvec_parsed_add +EXPORT_SYMBOL_GPL net/dccp/dccp 0x504f3c32 dccp_shutdown +EXPORT_SYMBOL_GPL net/dccp/dccp 0x59814a84 dccp_statistics +EXPORT_SYMBOL_GPL net/dccp/dccp 0x5afd795f dccp_check_req +EXPORT_SYMBOL_GPL net/dccp/dccp 0x617ba2f6 dccp_feat_nn_get +EXPORT_SYMBOL_GPL net/dccp/dccp 0x62d6fb21 dccp_reqsk_init +EXPORT_SYMBOL_GPL net/dccp/dccp 0x679cc974 dccp_parse_options +EXPORT_SYMBOL_GPL net/dccp/dccp 0x69bee8a3 dccp_reqsk_send_ack +EXPORT_SYMBOL_GPL net/dccp/dccp 0x714afef7 inet_dccp_listen +EXPORT_SYMBOL_GPL net/dccp/dccp 0x741910f6 dccp_feat_signal_nn_change +EXPORT_SYMBOL_GPL net/dccp/dccp 0x7e879b7b dccp_init_sock +EXPORT_SYMBOL_GPL net/dccp/dccp 0x86be7924 dccp_packet_name +EXPORT_SYMBOL_GPL net/dccp/dccp 0x89067217 dccp_rcv_state_process +EXPORT_SYMBOL_GPL net/dccp/dccp 0x90a65510 dccp_send_sync +EXPORT_SYMBOL_GPL net/dccp/dccp 0x92c25e86 dccp_ctl_make_reset +EXPORT_SYMBOL_GPL net/dccp/dccp 0x94359eb1 dccp_poll +EXPORT_SYMBOL_GPL net/dccp/dccp 0x9598d24d dccp_ackvec_parsed_cleanup +EXPORT_SYMBOL_GPL net/dccp/dccp 0xa28ca3b2 dccp_send_ack +EXPORT_SYMBOL_GPL net/dccp/dccp 0xaafe89ca dccp_getsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0xbe6ddf23 dccp_destroy_sock +EXPORT_SYMBOL_GPL net/dccp/dccp 0xc3c1602c dccp_disconnect +EXPORT_SYMBOL_GPL net/dccp/dccp 0xc5da88be dccp_child_process +EXPORT_SYMBOL_GPL net/dccp/dccp 0xcba5f30f dccp_connect +EXPORT_SYMBOL_GPL net/dccp/dccp 0xd4cdbddb dccp_create_openreq_child +EXPORT_SYMBOL_GPL net/dccp/dccp 0xda4405c2 dccp_orphan_count +EXPORT_SYMBOL_GPL net/dccp/dccp 0xfd61eb29 dccp_sendmsg +EXPORT_SYMBOL_GPL net/dccp/dccp 0xfe207d87 dccp_insert_option +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x39ce015d dccp_v4_request_recv_sock +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x51d9aacb dccp_v4_do_rcv +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x55fb6bfe dccp_v4_send_check +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x8161508f dccp_v4_conn_request +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0xb4fc0610 dccp_invalid_packet +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0xd08131c1 dccp_v4_connect +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0x0db5ad01 ieee802154_hdr_push +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0x3f3ab60f ieee802154_hdr_pull +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0x4d7aef69 ieee802154_max_payload +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0x8e6a534f ieee802154_hdr_peek +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0xc4debd2b ieee802154_hdr_peek_addrs +EXPORT_SYMBOL_GPL net/ipv4/geneve_core 0x29fe9b4a geneve_sock_release +EXPORT_SYMBOL_GPL net/ipv4/geneve_core 0x350f0cf7 geneve_sock_add +EXPORT_SYMBOL_GPL net/ipv4/geneve_core 0x5999dafc geneve_xmit_skb +EXPORT_SYMBOL_GPL net/ipv4/gre 0x304624e1 gre_cisco_unregister +EXPORT_SYMBOL_GPL net/ipv4/gre 0x461efbfc gre_add_protocol +EXPORT_SYMBOL_GPL net/ipv4/gre 0x52d6df80 gre_build_header +EXPORT_SYMBOL_GPL net/ipv4/gre 0xe37e6952 gre_cisco_register +EXPORT_SYMBOL_GPL net/ipv4/gre 0xe6ca6448 gre_del_protocol +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x2be0bf08 inet_diag_unregister +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x47de85c2 inet_diag_register +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x4f12f3bc inet_sk_diag_fill +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x8c9244ee inet_diag_dump_icsk +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x9c739333 inet_diag_dump_one_icsk +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0xec62282d inet_diag_bc_sk +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x153b9bbe ip_tunnel_uninit +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x246848cd ip_tunnel_newlink +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x39376dc4 ip_tunnel_changelink +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x39bef98e ip_tunnel_init +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x3dbbf4fa ip_tunnel_setup +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x423601d0 ip_tunnel_lookup +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x642fcb06 ip_tunnel_ioctl +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x672b979e ip_tunnel_delete_net +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x7550712c ip_tunnel_change_mtu +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x91a70233 ip_tunnel_init_net +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xb589c5bd ip_tunnel_xmit +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xd594a95e ip_tunnel_rcv +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xeb4abb98 ip_tunnel_dellink +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xfb97ca6e ip_tunnel_encap_setup +EXPORT_SYMBOL_GPL net/ipv4/netfilter/arp_tables 0x5d0c89fd arpt_alloc_initial_table +EXPORT_SYMBOL_GPL net/ipv4/netfilter/ip_tables 0xe10ed90a ipt_alloc_initial_table +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_defrag_ipv4 0x6b6c3d10 nf_defrag_ipv4_enable +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_ipv4 0x10c079ba nf_nat_ipv4_in +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_ipv4 0x2b515018 nf_nat_ipv4_local_fn +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_ipv4 0x44fdf26c nf_nat_icmp_reply_translation +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_ipv4 0x86ba1d27 nf_nat_ipv4_fn +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_ipv4 0xc7acecea nf_nat_ipv4_out +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_masquerade_ipv4 0x3f5c468e nf_nat_masquerade_ipv4_unregister_notifier +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_masquerade_ipv4 0xd12dd572 nf_nat_masquerade_ipv4 +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_masquerade_ipv4 0xfedbf252 nf_nat_masquerade_ipv4_register_notifier +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_proto_gre 0x636b12c8 nf_nat_need_gre +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0x5c093664 nf_send_reset +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0x67956035 nf_reject_ip_tcphdr_get +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0x81c78f7d nf_reject_ip_tcphdr_put +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0xefe31f6d nf_send_unreach +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0xf1203a8a nf_reject_iphdr_put +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_tables_ipv4 0x58f10a34 nft_af_ipv4 +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x1f24c983 tcp_vegas_pkts_acked +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x22f3dc41 tcp_vegas_get_info +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x5dff0fa5 tcp_vegas_state +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x8ec5e511 tcp_vegas_cwnd_event +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0xd7f34a66 tcp_vegas_init +EXPORT_SYMBOL_GPL net/ipv4/udp_tunnel 0x14adfc49 udp_tunnel_xmit_skb +EXPORT_SYMBOL_GPL net/ipv4/udp_tunnel 0x22b13882 setup_udp_tunnel_sock +EXPORT_SYMBOL_GPL net/ipv4/udp_tunnel 0xd74d31b7 udp_tunnel_sock_release +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x6360f5e5 ip6_tnl_rcv_ctl +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0xa04e1290 ip6_tnl_dst_check +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0xd2c0481e ip6_tnl_dst_store +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0xee9c0802 ip6_tnl_xmit_ctl +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0xf819136e ip6_tnl_dst_reset +EXPORT_SYMBOL_GPL net/ipv6/ip6_udp_tunnel 0x7a3492ce udp_sock_create6 +EXPORT_SYMBOL_GPL net/ipv6/ip6_udp_tunnel 0xbd591ff1 udp_tunnel6_xmit_skb +EXPORT_SYMBOL_GPL net/ipv6/netfilter/ip6_tables 0x7047d64f ip6t_alloc_initial_table +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_defrag_ipv6 0x6eb85693 nf_defrag_ipv6_enable +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_ipv6 0x04ec1dd1 nf_nat_ipv6_in +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_ipv6 0x438a6187 nf_nat_icmpv6_reply_translation +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_ipv6 0x478a85b0 nf_nat_ipv6_out +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_ipv6 0x8373e17b nf_nat_ipv6_fn +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_ipv6 0xfa81d63e nf_nat_ipv6_local_fn +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_masquerade_ipv6 0x2293972c nf_nat_masquerade_ipv6_unregister_notifier +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_masquerade_ipv6 0x38d4401a nf_nat_masquerade_ipv6_register_notifier +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_masquerade_ipv6 0xce1ebc5c nf_nat_masquerade_ipv6 +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0x343fd4c8 nf_reject_ip6_tcphdr_put +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0x9ba169df nf_send_unreach6 +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0xa651fd61 nf_reject_ip6_tcphdr_get +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0xc06d8e41 nf_reject_ip6hdr_put +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0xd7bffd82 nf_send_reset6 +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_tables_ipv6 0x0d2e2204 nft_af_ipv6 +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x0e8795eb l2tp_tunnel_delete +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x1b61e8c3 l2tp_session_free +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x2d42bd89 l2tp_session_set_header_len +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x322e9f5e l2tp_tunnel_closeall +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x3ab3e1e5 l2tp_session_find_nth +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x3b089080 l2tp_session_delete +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x3c3312ca l2tp_session_queue_purge +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x4da0691b l2tp_session_create +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x7174a74c l2tp_tunnel_create +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x74b804ee l2tp_tunnel_find +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x8600d319 l2tp_udp_encap_recv +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x9025cb65 __l2tp_session_unhash +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x9140640c l2tp_session_find_by_ifname +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xcfe1d185 l2tp_session_find +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xd33549f9 l2tp_xmit_skb +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xe0fba5ef l2tp_tunnel_find_nth +EXPORT_SYMBOL_GPL net/l2tp/l2tp_netlink 0x262c157e l2tp_nl_register_ops +EXPORT_SYMBOL_GPL net/l2tp/l2tp_netlink 0x337f2432 l2tp_nl_unregister_ops +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x15c43223 ieee80211_find_sta_by_ifaddr +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x1e1d95d0 ieee80211_iterate_active_interfaces_atomic +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x22a18478 ieee80211_vif_to_wdev +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x33afd28d ieee80211_remove_key +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x3ce28290 ieee80211_ave_rssi +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x434157d5 ieee80211_iterate_stations_atomic +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x448072e0 ieee80211_napi_add +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x5beefd0c wdev_to_ieee80211_vif +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x7234a9ad ieee80211_remain_on_channel_expired +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x8ca3ddcd ieee80211_gtk_rekey_notify +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x8ea67951 ieee80211_set_key_tx_seq +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x966df426 ieee80211_resume_disconnect +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xab77cb8b ieee80211_gtk_rekey_add +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xc9129bce ieee80211_request_smps +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xd24ad287 ieee80211_iterate_active_interfaces_rtnl +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xd5d84ec5 ieee80211_iter_chan_contexts_atomic +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xd6d3c8a2 ieee80211_iterate_interfaces +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xe74996ec ieee80211_ready_on_channel +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xebdf8959 ieee80211_set_key_rx_seq +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x1479ae08 ip_set_get_byname +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x1c6e3319 ip_set_del +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x30e631a1 ip_set_get_extensions +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x31199ff0 ip_set_nfnl_get_byindex +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x38cc889f ip_set_type_register +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x397f6231 ip_set_free +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x42fcc528 ip_set_elem_len +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x55ddd4ee ip_set_test +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x5a32fa60 ip_set_nfnl_put +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x6344eaf6 ip_set_alloc +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x703f54f9 ip_set_type_unregister +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x708bdb55 ip_set_put_byindex +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 0x9da4cc6e ip_set_get_ip4_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 0xa2d623f3 ip_set_range_to_cidr +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xaacb743c ip_set_name_byindex +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xbe37293e ip_set_put_extensions +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xcc001bd9 ip_set_extensions +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xce14739b ip_set_get_ip6_port +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xeacfce7c ip_set_add +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xef10e0db ip_set_get_ip_port +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0x433e9634 unregister_ip_vs_pe +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0x55b4b0b7 register_ip_vs_pe +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0xbd0616a3 ip_vs_conn_out_get_proto +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0xd2f16bfe ip_vs_conn_in_get_proto +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x03394eeb __nf_ct_expect_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x045072cd nf_ct_port_nla_policy +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x04bde1f0 __nf_ct_l4proto_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x0a469a56 nf_ct_l4proto_pernet_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x1497885b nf_conntrack_locks +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x1d3dd032 nf_conntrack_register_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x23a17fa0 nf_ct_l4proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x2622192e nf_conntrack_helper_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x289c3714 nf_ct_alloc_hashtable +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x2c42b8b6 nf_ct_timeout_put_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x2e0f2e8b nf_ct_tcp_seqadj_set +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x32c536f8 nf_conntrack_helper_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x36d471f8 nf_ct_port_tuple_to_nlattr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x37386cac nf_conntrack_hash_rnd +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x37a532b7 nf_conntrack_tuple_taken +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3812d76c nf_ct_extend_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3940b323 nf_ct_helper_expectfn_find_by_symbol +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3e2e2699 nf_ct_l4proto_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3f5b1415 nf_ct_port_nlattr_to_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x41b2c350 nf_conntrack_l4proto_tcp4 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x435d8739 nf_connlabels_replace +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x4605c307 nf_ct_l3proto_pernet_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x4ff05f40 nf_ct_deliver_cached_events +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x5129fc07 nf_conntrack_in +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x521ff525 seq_print_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x5432e6eb nf_conntrack_l3proto_generic +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x5670a507 nf_connlabel_set +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x5e06aa6b nf_ct_l3proto_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x5e8775e1 nf_ct_helper_expectfn_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x600a0c6c nf_ct_l4proto_pernet_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x61c4eff6 __nf_ct_refresh_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x62813e5c nf_ct_port_nlattr_tuple_size +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x68a8b6e3 nf_conntrack_unregister_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x68c9aade nf_ct_helper_expectfn_find_by_name +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x693c3961 nf_ct_helper_hash +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6a18dc58 nf_conntrack_expect_lock +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6d87c670 nf_ct_expect_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6e224a7a need_conntrack +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x70279c11 __nf_ct_try_assign_helper +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x703dead3 __nf_conntrack_confirm +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x71ff948f nf_ct_timeout_find_get_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x7384a1d2 nf_conntrack_l4proto_tcp6 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x78f9b710 nf_ct_l3proto_try_module_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x858bdfdd nf_ct_helper_expectfn_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x86596358 nf_ct_seq_offset +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x87467b3d nf_ct_seqadj_set +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8b51bd66 __nf_conntrack_helper_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8e2542ed nf_ct_iterate_cleanup +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8f8df40e nf_ct_unexpect_related +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8ffe7e89 nf_conntrack_htable_size +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x90ff6c9f nf_ct_invert_tuplepr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x95e840bf nf_conntrack_hash_check_insert +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x965852df nf_conntrack_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x9802323e nf_ct_remove_expectations +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x9f57a84f nf_ct_get_tuplepr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa526f808 nfnetlink_parse_nat_setup_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa6294e78 nf_ct_get_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa9e0a784 nf_ct_expect_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xab3d1f95 nf_ct_untracked_status_or +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xab5a104d nf_conntrack_free +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xac8dd00a nf_ct_seq_adjust +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xace5d707 nf_conntrack_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xad11437d nf_ct_expect_register_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xad1bb027 nf_ct_free_hashtable +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb0179d73 nf_ct_l3proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb3aa9542 nf_conntrack_helper_try_module_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb5b0b94f nf_connlabel_match +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb602c57e nf_ct_l3proto_module_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb626c0bb __nf_ct_kill_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb97ea4b1 nf_ct_expect_unregister_notifier +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 0xc4a7212e nf_conntrack_set_hashsize +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc692445c nf_ct_expect_init +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xca6a76b8 nf_conntrack_l4proto_udp4 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xcab51be3 nf_ct_extend_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd121660e nf_ct_l3proto_pernet_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd212eade nf_ct_tmpl_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd560688c nf_ct_seqadj_init +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd9ecd3c0 nf_ct_expect_related_report +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xdda2ed4e nf_ct_tmpl_free +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xe6785c15 nf_ct_invert_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xe7a5d635 nf_ct_l4proto_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xe7f402e1 nf_ct_l4proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xeec1b159 nf_conntrack_alter_reply +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf13cd4f2 nf_ct_expect_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf354cbc8 nf_ct_helper_ext_add +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf38bcdf3 nf_conntrack_max +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf556dc3c nf_ct_delete +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf85c143a nf_conntrack_l4proto_udp6 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf98456db nf_ct_l3protos +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf9af5114 nf_ct_unlink_expect_report +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xfa5ee00c nf_ct_l3proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xffb9011b nf_ct_helper_log +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_amanda 0x88a9170a nf_nat_amanda_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_broadcast 0x0519e619 nf_conntrack_broadcast_help +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_ftp 0xa2324e77 nf_nat_ftp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x01b4caab nat_t120_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x0dcdde64 nat_callforwarding_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x1aec310b set_ras_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x30858280 set_h245_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x3e27ffee set_sig_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xd1f81372 get_h225_addr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xd9c2568c set_h225_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xdb351432 nat_q931_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xf745838c nat_h245_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xfe3e0aa4 nat_rtp_rtcp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_irc 0x6843b481 nf_nat_irc_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0x198718ac nf_nat_pptp_hook_inbound +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0xb1152b9a nf_nat_pptp_hook_exp_gre +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0xcf24b52f nf_nat_pptp_hook_outbound +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0xebc60720 nf_nat_pptp_hook_expectfn +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_proto_gre 0x54779f05 nf_ct_gre_keymap_add +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_proto_gre 0xa0798847 nf_ct_gre_keymap_destroy +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x1d413ace ct_sip_parse_numerical_param +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x5c30cf72 nf_nat_sip_hooks +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x62d6d359 ct_sip_parse_header_uri +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xad65b534 ct_sip_parse_address_param +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xd3f14d78 ct_sip_get_header +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xd50e7b98 ct_sip_parse_request +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xfd112321 ct_sip_get_sdp_header +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_snmp 0x291d6575 nf_nat_snmp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_tftp 0x4d50864c nf_nat_tftp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_log_common 0x252609cb nf_log_dump_tcp_header +EXPORT_SYMBOL_GPL net/netfilter/nf_log_common 0x7cad06be nf_log_dump_sk_uid_gid +EXPORT_SYMBOL_GPL net/netfilter/nf_log_common 0x9f7708a6 nf_log_dump_udp_header +EXPORT_SYMBOL_GPL net/netfilter/nf_log_common 0xca8b70cb nf_log_dump_packet_common +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x0d9bae4b nf_nat_l4proto_nlattr_to_range +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x12d080b3 nf_nat_l4proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x131f636c nf_nat_l4proto_in_range +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x16cc493b nf_nat_l4proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x2d32a951 nf_nat_l4proto_unique_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x32304cec __nf_nat_l4proto_find +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x670cfa31 nf_nat_packet +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x75d578bd nf_ct_nat_ext_add +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xbe0ab3ad nf_nat_l3proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xf6e53f56 nf_nat_l3proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xfc624309 nf_nat_alloc_null_binding +EXPORT_SYMBOL_GPL net/netfilter/nf_nat_redirect 0x1fa5f24c nf_nat_redirect_ipv6 +EXPORT_SYMBOL_GPL net/netfilter/nf_nat_redirect 0x26f0c01c nf_nat_redirect_ipv4 +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x11a006b5 synproxy_check_timestamp_cookie +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x8841d39b synproxy_build_options +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x90298227 synproxy_init_timestamp_cookie +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0xb42e336a synproxy_options_size +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0xdb593cd8 synproxy_parse_options +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0xdc4fd824 synproxy_tstamp_adjust +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0xef7db50c synproxy_net_id +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x0015deb1 nft_register_basechain +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x002b5d3b nft_unregister_basechain +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x1b04ffbc nft_set_gc_batch_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x1c12add7 nft_unregister_afinfo +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x1d24bc69 nft_validate_register_store +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x1e6b75a3 nft_parse_register +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x3c7fff41 nft_set_elem_destroy +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x4826243f nft_unregister_set +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x48c2fe6a nft_do_chain +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x574aecf7 nft_data_dump +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x5778f241 nft_chain_validate_hooks +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x67a16489 nft_register_afinfo +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x68088bee nft_data_uninit +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x8806c396 nft_unregister_expr +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x9b6af8af nft_register_expr +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xbf63bb61 nft_set_gc_batch_release +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xc3bb75dd nft_register_set +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xc404ee09 nft_register_chain_type +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xcf03e214 nft_chain_validate_dependency +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xd9deae8c nft_data_init +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xe09dada2 nft_set_ext_types +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xe0c47e54 nft_unregister_chain_type +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xed33c632 nft_validate_register_load +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xfb21826a nft_dump_register +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x1e60fa1f nfnetlink_send +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x24c29ab7 nfnetlink_set_err +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x4029a869 nfnetlink_alloc_skb +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x5ce3b588 nfnl_lock +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x638fa6d5 nfnetlink_subsys_register +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x78a2ce90 nfnetlink_unicast +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x82455faa nfnetlink_has_listeners +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xd06cddba nfnetlink_subsys_unregister +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xdb065657 nfnl_unlock +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0x21f6bba6 nfnl_acct_find_get +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0x59ea6219 nfnl_acct_overquota +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0xbecf5d14 nfnl_acct_put +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0xdf60d6d6 nfnl_acct_update +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_log 0x1af05d70 nfulnl_log_packet +EXPORT_SYMBOL_GPL net/netfilter/nft_masq 0x92aeffd6 nft_masq_dump +EXPORT_SYMBOL_GPL net/netfilter/nft_masq 0x94c46a47 nft_masq_init +EXPORT_SYMBOL_GPL net/netfilter/nft_masq 0xab3dc0be nft_masq_validate +EXPORT_SYMBOL_GPL net/netfilter/nft_masq 0xe3b8ea21 nft_masq_policy +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0x2355d84e nft_meta_get_init +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0x2498184a nft_meta_set_init +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0x37a1dfdd nft_meta_get_dump +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0x65b191ba nft_meta_get_eval +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0xb80e8358 nft_meta_policy +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0xd1a4bef2 nft_meta_set_dump +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0xf12c5c45 nft_meta_set_eval +EXPORT_SYMBOL_GPL net/netfilter/nft_redir 0x042fa663 nft_redir_validate +EXPORT_SYMBOL_GPL net/netfilter/nft_redir 0x0483ba6a nft_redir_init +EXPORT_SYMBOL_GPL net/netfilter/nft_redir 0xa5be1e1e nft_redir_policy +EXPORT_SYMBOL_GPL net/netfilter/nft_redir 0xf828086f nft_redir_dump +EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0x9815f4cc nft_reject_init +EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0xa2db3c7f nft_reject_policy +EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0xc8e7f5c0 nft_reject_dump +EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0xddf15889 nft_reject_icmp_code +EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0xe8cdab4e nft_reject_icmpv6_code +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x0c9be0f2 xt_table_unlock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x0e4ecd59 xt_find_table_lock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x234c66c7 xt_request_find_target +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x33c7eb4e xt_request_find_match +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x3f325fe7 xt_hook_link +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x40728a63 xt_find_revision +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x5b078b9d xt_proto_fini +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x5b632f82 xt_check_target +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x807d2b2c xt_recseq +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x9c1e0a74 xt_proto_init +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x9f400f82 xt_register_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xbbc4f0ca xt_replace_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xbe48bac2 xt_hook_unlink +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xc3c07f29 xt_unregister_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xc64250bf xt_check_match +EXPORT_SYMBOL_GPL net/netfilter/xt_RATEEST 0x4c32c169 xt_rateest_lookup +EXPORT_SYMBOL_GPL net/netfilter/xt_RATEEST 0xb7459345 xt_rateest_put +EXPORT_SYMBOL_GPL net/nfc/nci/nci 0x544dc10d nci_spi_read +EXPORT_SYMBOL_GPL net/nfc/nci/nci 0x5d3e307a nci_spi_send +EXPORT_SYMBOL_GPL net/nfc/nci/nci 0x6e8f9387 nci_spi_allocate_spi +EXPORT_SYMBOL_GPL net/nfc/nci/nci_uart 0xa1ccaca4 nci_uart_register +EXPORT_SYMBOL_GPL net/nfc/nci/nci_uart 0xd54d0525 nci_uart_unregister +EXPORT_SYMBOL_GPL net/nfc/nci/nci_uart 0xff82e34a nci_uart_set_config +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x0111cc5d ovs_vport_free +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x42149c2e ovs_vport_ops_unregister +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x42830c80 ovs_tunnel_get_egress_info +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x52784a43 ovs_vport_alloc +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x6ab5fe43 ovs_vport_ops_register +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x7d8a8be5 ovs_vport_deferred_free +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0xd4bb83fa ovs_vport_receive +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0xda83411d ovs_net_id +EXPORT_SYMBOL_GPL net/rds/rds 0x00a467af rds_wq +EXPORT_SYMBOL_GPL net/rds/rds 0x086bb251 rds_send_drop_acked +EXPORT_SYMBOL_GPL net/rds/rds 0x16745be3 rds_recv_incoming +EXPORT_SYMBOL_GPL net/rds/rds 0x2a259432 rds_conn_destroy +EXPORT_SYMBOL_GPL net/rds/rds 0x2c5c5514 rds_message_add_rdma_dest_extension +EXPORT_SYMBOL_GPL net/rds/rds 0x3101936e rds_message_add_extension +EXPORT_SYMBOL_GPL net/rds/rds 0x3782b223 rds_for_each_conn_info +EXPORT_SYMBOL_GPL net/rds/rds 0x3b4fc0fc rds_page_remainder_alloc +EXPORT_SYMBOL_GPL net/rds/rds 0x500b0419 rds_inc_put +EXPORT_SYMBOL_GPL net/rds/rds 0x50cbe7b3 rds_stats +EXPORT_SYMBOL_GPL net/rds/rds 0x549c2e02 rds_conn_create_outgoing +EXPORT_SYMBOL_GPL net/rds/rds 0x6e08e469 rds_trans_register +EXPORT_SYMBOL_GPL net/rds/rds 0x73aac73d rds_message_populate_header +EXPORT_SYMBOL_GPL net/rds/rds 0x7509b3b2 rds_connect_complete +EXPORT_SYMBOL_GPL net/rds/rds 0x7d1fcf47 rds_info_register_func +EXPORT_SYMBOL_GPL net/rds/rds 0x846df2a5 rds_conn_create +EXPORT_SYMBOL_GPL net/rds/rds 0x96fafe85 rds_stats_info_copy +EXPORT_SYMBOL_GPL net/rds/rds 0xa3f49ca8 rds_message_unmapped +EXPORT_SYMBOL_GPL net/rds/rds 0xaf464aff rds_trans_unregister +EXPORT_SYMBOL_GPL net/rds/rds 0xb72c17bd rds_rdma_send_complete +EXPORT_SYMBOL_GPL net/rds/rds 0xb8d8db77 rds_atomic_send_complete +EXPORT_SYMBOL_GPL net/rds/rds 0xc2dab779 rds_info_copy +EXPORT_SYMBOL_GPL net/rds/rds 0xc815c3d5 rds_info_deregister_func +EXPORT_SYMBOL_GPL net/rds/rds 0xcef9948a rds_message_put +EXPORT_SYMBOL_GPL net/rds/rds 0xd5e8c6d7 rds_message_addref +EXPORT_SYMBOL_GPL net/rds/rds 0xdb5263f5 rds_page_copy_user +EXPORT_SYMBOL_GPL net/rds/rds 0xde673448 rds_cong_map_updated +EXPORT_SYMBOL_GPL net/rds/rds 0xef01453e rds_send_get_message +EXPORT_SYMBOL_GPL net/rds/rds 0xefa403f5 rds_conn_connect_if_down +EXPORT_SYMBOL_GPL net/rds/rds 0xf3f73d70 rds_inc_init +EXPORT_SYMBOL_GPL net/rds/rds 0xf95b741c rds_conn_drop +EXPORT_SYMBOL_GPL net/rxrpc/af-rxrpc 0x5f5bfca3 rxrpc_unregister_security +EXPORT_SYMBOL_GPL net/rxrpc/af-rxrpc 0xacf24f1d rxrpc_register_security +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x00c52ef5 g_make_token_header +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x8d1a827e svcauth_gss_register_pseudoflavor +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xa8c02b04 gss_mech_unregister +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xb5dea7ef g_token_size +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xcd25bb46 svcauth_gss_flavor +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xd6edf12b gss_mech_register +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xf8b2ff6e g_verify_token_header +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x01500a92 rpc_max_payload +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x02055d41 xdr_buf_subsegment +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x04294bc0 rpcauth_lookup_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x045834e9 rpcauth_get_pseudoflavor +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 0x06d05208 xdr_set_scratch_buffer +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x07187463 rpc_queue_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x080b8091 xdr_buf_from_iov +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x095ab4d2 rpc_delay +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x09b5fddd auth_domain_lookup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0a9621b7 rpc_switch_client_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0b99dab3 rpc_lookup_machine_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0bf22fb0 xprt_register_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0bfa2267 rpc_init_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0f668ba9 svc_auth_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x10653225 rpc_destroy_pipe_data +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x120117f7 rpc_release_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x129e70a1 rpc_run_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x135a87db xdr_shift_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x135aa7cc svc_shutdown_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x154ffed0 xdr_encode_array2 +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x15bcfa79 sunrpc_init_cache_detail +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1792e5b4 svc_find_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1a20bc33 rpc_setbufsize +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1bf3f52c rpc_task_reset_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1c2c7d19 rpc_rmdir +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1e03256f svc_rpcb_setup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2096be5e unix_domain_find +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2261c0ae svc_destroy +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x232285db rpc_add_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x23d0a334 rpc_put_task_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x24dbca6e sunrpc_cache_update +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2584595a rpcauth_key_timeout_notify +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x26116a7e rpc_restart_call_prepare +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2799cf87 rpc_wake_up_queued_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2872b93a xprt_destroy_backchannel +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2900df29 svc_authenticate +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2919b156 xdr_decode_string_inplace +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2aae763f svc_reg_xprt_class +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2ccfd742 xprt_release_rqst_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2d73439d rpc_create_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2eec63c9 xdr_encode_netobj +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2f8ebbe0 rpc_ntop +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x30809b3a rpcauth_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x31a89d59 rpc_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x32eb3208 xdr_enter_page +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x35611dcc rpc_peeraddr2str +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x370cdc3b svc_xprt_names +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x387e1639 rpc_pipefs_notifier_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3954f395 xprt_complete_rqst +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3b000404 rpc_mkpipe_dentry +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3c29934b rpc_call_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3c46572e rpc_destroy_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3ed88967 xdr_decode_word +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3f7a5842 sunrpc_cache_unregister_pipefs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3f8d4cfb rpc_wake_up_next +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x41a9ccb0 xdr_inline_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x424da20c rpc_sleep_on_priority +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x42765d3b xprt_alloc_slot +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x445cc695 svc_print_addr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x452c79c5 rpcauth_cred_key_to_expire +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4856ad30 xprt_wait_for_buffer_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4891969d xdr_read_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4a2e4c9f sunrpc_cache_pipe_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4eff578e rpc_malloc +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4f18426d write_bytes_to_xdr_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x519ae530 svc_addsock +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x51b2e244 read_bytes_from_xdr_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x52a1725a xprt_release_xprt_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x53246e14 rpcauth_init_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x53414e97 rpc_pton +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x53445f68 nlm_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5448a214 xdr_partial_copy_from_skb +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5479a878 svc_close_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x56be0ca3 rpc_call_null +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x579b5093 rpc_remove_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x57f0c789 svcauth_unix_set_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5922a738 csum_partial_copy_to_xdr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5959623c xprt_wake_pending_tasks +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5a23b98d auth_domain_find +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5abf5e71 rpc_clone_client_set_auth +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5afa755d rpc_proc_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5b92c232 xprt_set_retrans_timeout_rtt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5c733a16 svc_proc_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5de97973 svc_process +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5f8a24e0 rpc_uaddr2sockaddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x60bfc730 rpc_mkpipe_data +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x60f2987b cache_register_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x60fd3e9e svc_wake_up +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6161c781 rpc_call_sync +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x61ce4a35 svc_exit_thread +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x63506e68 rpc_lookup_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x679a6b74 svc_xprt_enqueue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6889fa7c rpc_init_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x68d54220 rpc_clnt_swap_activate +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6c994fc6 xprt_reserve_xprt_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6e62e998 rpc_killall_tasks +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6eb74c5f rpc_count_iostats_metrics +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6fcded01 rpc_lookup_cred_nonblock +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x71fa908a cache_flush +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x723708e8 rpcauth_init_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x74ad06bd xprt_release_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x75150f29 rpc_sleep_on +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x75bf1201 rpcauth_stringify_acceptor +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7625a8db xprt_lock_and_alloc_slot +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x77d736cf xprt_adjust_cwnd +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7bcf6508 svc_prepare_thread +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7c3fa233 rpc_put_sb_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7de53067 rpc_init_rtt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7ee65002 svc_rpcb_cleanup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7f5d5145 svc_bind +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x80951b28 rpcauth_get_gssinfo +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8172428a xdr_commit_encode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x84a33856 svc_xprt_put +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8507712a rpcauth_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x87e2035a sunrpc_cache_lookup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x89ad9dbc rpc_find_or_alloc_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8b9bedad rpc_call_start +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8c5dfff9 svc_drop +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8db532ee xprt_alloc +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8e381ca3 rpc_init_priority_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8f9f3ce0 xprt_disconnect_done +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x907409dd put_rpccred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x910cb46b xdr_write_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x94070227 gssd_running +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x941f0acf svc_alien_sock +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x94b2ed71 xprt_free +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x967646e8 rpcauth_generic_bind_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x970f4db6 rpcauth_destroy_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x97d7e0bc rpc_wake_up_first +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x98b75d64 rpcauth_list_flavors +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x99b8aca6 xdr_stream_pos +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9a453b92 rpc_count_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9e6b5cf8 rpc_restart_call +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9e9213b2 svc_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa0a184db rpc_alloc_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa150a2b3 rpc_print_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa3fcbf17 _copy_from_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa5eb4438 rpc_net_ns +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa6ff81c8 svc_recv +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa79e6146 xdr_skb_read_bits +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa8066f03 rpcb_getport_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa8ab714b auth_domain_put +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xaa02ac77 rpc_unlink +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xaa0cb4e9 xprt_unregister_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xac6cae5b svc_proc_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xac7e915f rpc_put_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xaca0a6d7 xprt_setup_backchannel +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xad456bf7 xdr_process_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xade37b67 xdr_init_encode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xae952d55 xprt_reserve_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xaf5bf6ef nfs_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb0aa4b6a svc_sock_update_bufs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb0c5dd58 svc_set_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb0dbdc42 svc_create_pooled +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb0f7e74c xdr_terminate_string +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb112c6e9 xdr_init_decode_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb2c1aaac svc_auth_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb3e1a474 cache_create_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb51a3724 rpc_pipefs_notifier_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb716d71c rpc_bind_new_program +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb7ef0667 xdr_buf_trim +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb85834ec cache_check +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb89ed679 rpc_peeraddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb9ff9cb3 rpc_wake_up_status +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbf736a9c xprt_lookup_rqst +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbf9d1b96 nfsd_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbfc3c4d2 svc_xprt_copy_addrs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc0867b7f rpc_get_timeout +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc0c5c823 xdr_buf_read_netobj +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc0d9a546 svcauth_unix_purge +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc12435e3 rpc_calc_rto +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc3880471 xdr_decode_netobj +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc57f4783 rpc_pipe_generic_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc8e96dea qword_addhex +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcee467f3 xprt_load_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcee892ed rpc_d_lookup_sb +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcf23e7e3 rpc_proc_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcf54f121 xprt_set_retrans_timeout_def +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd08bf93e rpc_clnt_swap_deactivate +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd0a2aa00 rpcauth_lookupcred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd14c8eb9 rpc_wake_up +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd2f1e0bd cache_purge +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd3b1e57c xprt_write_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd47438d2 __rpc_wait_for_completion_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd6b37c67 svc_create_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd7ce0699 rpcauth_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd8a88850 svc_max_payload +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd8efba6c bc_svc_process +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd91284c3 sunrpc_destroy_cache_detail +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xda859819 svc_unreg_xprt_class +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdb578755 rpc_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdeb380a1 svc_seq_show +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdf23f174 svc_set_num_threads +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe08f7a1e rpc_exit +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe0941cb6 rpc_clone_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe1ac2bb8 sunrpc_net_id +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe27219c2 xdr_init_decode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe2d44e4b xdr_encode_word +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe482cdcb rpc_get_sb_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe512d4c4 cache_destroy_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe5919cb1 xdr_encode_opaque +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe97f4ce5 qword_get +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xec5d2beb rpc_init_pipe_dir_head +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 0xeec3d028 cache_unregister_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf17cf13f rpc_shutdown_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf1d644ce rpc_localaddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf80d4c02 rpc_free_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf832ad8e rpc_protocol +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf98154e8 rpc_force_rebind +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf9d1164c rpc_free +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfa538abc svc_xprt_init +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfb12f23a xdr_inline_decode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfbafb83a svc_reserve +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfdb986f0 sunrpc_cache_register_pipefs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xff78bcc2 xdr_reserve_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xffa076eb xdr_decode_array2 +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x0945509b vsock_remove_connected +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x0c79d5ef vm_sockets_get_local_cid +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x15c0c57c vsock_addr_init +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x17ee3ce7 vsock_stream_has_space +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x1a58c1d1 vsock_stream_has_data +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x2663cb64 vsock_addr_equals_addr +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x43ddc2bd vsock_for_each_connected_socket +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x6a133301 vsock_remove_pending +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 0x76275cee vsock_find_bound_socket +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x7f730c80 vsock_core_exit +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x88551a0c vsock_enqueue_accept +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x93f3ad13 __vsock_create +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xa3e40925 vsock_insert_connected +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xa7d16805 __vsock_core_init +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xbd0f699d vsock_addr_bound +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xd46d3bc1 vsock_add_pending +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xd95ac116 vsock_addr_validate +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xe4a1f772 vsock_remove_bound +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xf593c40a vsock_pending_work +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xf7115029 vsock_find_connected_socket +EXPORT_SYMBOL_GPL net/wimax/wimax 0x32dc5fc0 wimax_dev_init +EXPORT_SYMBOL_GPL net/wimax/wimax 0x3f474156 wimax_state_get +EXPORT_SYMBOL_GPL net/wimax/wimax 0x632272b6 wimax_report_rfkill_sw +EXPORT_SYMBOL_GPL net/wimax/wimax 0x749d4fef wimax_msg_len +EXPORT_SYMBOL_GPL net/wimax/wimax 0x790b9885 wimax_msg_send +EXPORT_SYMBOL_GPL net/wimax/wimax 0x7fbef6ea wimax_report_rfkill_hw +EXPORT_SYMBOL_GPL net/wimax/wimax 0x8d3e3e86 wimax_msg_data_len +EXPORT_SYMBOL_GPL net/wimax/wimax 0xa6e85290 wimax_state_change +EXPORT_SYMBOL_GPL net/wimax/wimax 0xb187af8a wimax_msg +EXPORT_SYMBOL_GPL net/wimax/wimax 0xc329c285 wimax_dev_rm +EXPORT_SYMBOL_GPL net/wimax/wimax 0xd1f9ee7e wimax_dev_add +EXPORT_SYMBOL_GPL net/wimax/wimax 0xdf8dd532 wimax_msg_data +EXPORT_SYMBOL_GPL net/wimax/wimax 0xf6f370f7 wimax_msg_alloc +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x44fd781f cfg80211_wext_siwfrag +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x4f05d195 cfg80211_wext_giwrts +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x5751e694 cfg80211_wext_giwrange +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x58a2ab02 cfg80211_wext_giwscan +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x65c94f62 cfg80211_shutdown_all_interfaces +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x943032ae cfg80211_wext_siwrts +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xae628950 cfg80211_vendor_cmd_reply +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xc4343e18 cfg80211_wext_giwname +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xd4bac7a6 cfg80211_wext_siwscan +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xe6ca359c cfg80211_wext_siwmode +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xe860b8c1 cfg80211_wext_giwretry +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xe877feb9 cfg80211_wext_giwmode +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xf52da4d8 cfg80211_wext_giwfrag +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 0x3bf471d7 xfrm_calg_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x47b34e60 xfrm_ealg_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x60b73277 xfrm_aead_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x7a8ca627 xfrm_count_pfkey_enc_supported +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x834ba96d xfrm_aalg_get_byid +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xa6e66685 xfrm_aalg_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xaa762fe2 xfrm_aalg_get_byidx +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xad1b60ed xfrm_calg_get_byid +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xdbfc35c8 xfrm_ealg_get_byidx +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xdfea3a6d xfrm_ealg_get_byid +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0x4be4eef9 ipcomp_input +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0x800a86f5 ipcomp_destroy +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0x98d5bf95 ipcomp_output +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0xe2f18f29 ipcomp_init_state +EXPORT_SYMBOL_GPL sound/core/seq/snd-seq-device 0x1a9f511b __snd_seq_driver_register +EXPORT_SYMBOL_GPL sound/core/seq/snd-seq-device 0xae7b520a snd_seq_driver_unregister +EXPORT_SYMBOL_GPL sound/core/snd 0x065bd3ae snd_device_initialize +EXPORT_SYMBOL_GPL sound/core/snd 0x24e1276a snd_ctl_sync_vmaster +EXPORT_SYMBOL_GPL sound/core/snd 0x3fb26110 snd_ctl_get_preferred_subdevice +EXPORT_SYMBOL_GPL sound/core/snd 0x6730697d snd_device_disconnect +EXPORT_SYMBOL_GPL sound/core/snd 0x7c67837c snd_card_add_dev_attr +EXPORT_SYMBOL_GPL sound/core/snd 0xdd9a42e9 snd_ctl_activate_id +EXPORT_SYMBOL_GPL sound/core/snd 0xfff63143 snd_ctl_add_vmaster_hook +EXPORT_SYMBOL_GPL sound/core/snd-compress 0x00cd3709 snd_compress_deregister +EXPORT_SYMBOL_GPL sound/core/snd-compress 0x79e3f8fb snd_compress_new +EXPORT_SYMBOL_GPL sound/core/snd-compress 0x93fcb2ab 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 0x19414c7b snd_pcm_stream_unlock_irq +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x43e3556a snd_pcm_add_chmap_ctls +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x649a1c37 snd_pcm_stream_lock +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0xa1465015 snd_pcm_stream_unlock_irqrestore +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 0xb741723c snd_pcm_stream_lock_irq +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0xbd754904 snd_pcm_stream_unlock +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0xe0034f2b _snd_pcm_stream_lock_irqsave +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0xf1d18dff snd_pcm_lib_default_mmap +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0xf7a9a6bb snd_pcm_stop_xrun +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x05c04c99 snd_dmaengine_pcm_pointer_no_residue +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x09a76fee snd_hwparams_to_dma_slave_config +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x1a6c0095 snd_dmaengine_pcm_open_request_chan +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x4c7250eb snd_dmaengine_pcm_pointer +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x51ca0aab snd_dmaengine_pcm_get_chan +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x6f6e38b0 snd_dmaengine_pcm_trigger +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x7d4f42d8 snd_dmaengine_pcm_open +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0xaadb2052 snd_dmaengine_pcm_request_channel +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0xbeed9b47 snd_dmaengine_pcm_close_release_chan +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0xd4aeccc9 snd_dmaengine_pcm_set_config_from_dai_data +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0xfa5a1a2f snd_dmaengine_pcm_close +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x0eacbdc6 snd_hdac_stream_clear +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x15b1996e snd_hdac_is_supported_format +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x19ed886d snd_hdac_get_display_clk +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x1abd975f snd_hdac_exec_verb +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x1cd3afb8 snd_hdac_bus_enter_link_reset +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x22c0a388 snd_hda_bus_type +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x25520445 snd_hdac_stream_cleanup +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x28a8200a snd_hdac_bus_free_stream_pages +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x2f66b870 snd_hdac_stream_setup_periods +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x34685e18 snd_hdac_dsp_trigger +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x3a6e8741 snd_hdac_bus_update_rirb +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x445bd59b snd_hdac_stream_assign +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x461957b1 snd_hdac_stream_start +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x5348e445 snd_hdac_bus_exec_verb_unlocked +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x5701a9a2 snd_hdac_get_sub_nodes +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x5742ed81 snd_hdac_bus_remove_device +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x59d48c7f snd_hdac_stream_set_params +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x5cfcb1ad snd_hdac_bus_exit +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x5ec0a6da snd_hdac_device_register +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x61c182f1 snd_hdac_power_down +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x6203db74 snd_hdac_link_power +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x64072ade snd_hdac_power_up +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x76d6cfc0 snd_hdac_stream_reset +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x76dd144e snd_hdac_device_unregister +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x790421e1 snd_hdac_bus_add_device +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x7fe25ece snd_hdac_i915_register_notifier +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x82a622a6 snd_hdac_stream_setup +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x8adfec05 snd_hdac_regmap_write_raw +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x8d88d7c6 snd_hdac_bus_queue_event +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x9146c74a snd_hdac_read_parm_uncached +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x94264940 snd_hdac_stream_sync +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x956e132f snd_hdac_make_cmd +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x97c01c37 snd_hdac_bus_exit_link_reset +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x98ef68e2 snd_hdac_device_exit +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x9a15e9f7 snd_hdac_regmap_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x9a8e1877 snd_array_free +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x9b08b53b snd_hdac_read +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x9d5d728c snd_hdac_power_down_pm +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x9f1c601e snd_hdac_stream_release +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xa0aa2f5d snd_hdac_bus_init_chip +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xa1c23260 snd_hdac_device_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xa57278f3 snd_hdac_stream_sync_trigger +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xaf3f2cf2 snd_hdac_i915_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xb81b1162 snd_hdac_bus_send_cmd +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xba1aad4d snd_hdac_display_power +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xba3b6786 hdac_get_device_id +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xba952230 snd_hdac_power_up_pm +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xbdfdb224 snd_hdac_bus_handle_stream_irq +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xbe7dd7dc snd_array_new +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xbee3f6c4 snd_hdac_regmap_add_vendor_verb +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xc3d61a74 snd_hdac_stream_stop +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xc59c5bb7 snd_hdac_bus_stop_cmd_io +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xc62edf97 snd_hdac_query_supported_pcm +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xc808b459 snd_hdac_bus_get_response +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xcb513d70 snd_hdac_stream_timecounter_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xcebcef63 snd_hdac_i915_exit +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xd8491037 snd_hdac_bus_alloc_stream_pages +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xd94a7213 snd_hdac_regmap_update_raw +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xdb2d8a56 snd_hdac_regmap_exit +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xdbe1baff _snd_hdac_read_parm +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xdd9a804a snd_hdac_calc_stream_format +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xddc1c201 snd_hdac_bus_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xe12117ec snd_hdac_bus_init_cmd_io +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xe178eb8c snd_hdac_set_codec_wakeup +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xe2734b79 snd_hdac_dsp_cleanup +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xe288df04 snd_hdac_bus_stop_chip +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xeabbb632 snd_hdac_refresh_widgets +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xec181942 snd_hdac_regmap_read_raw +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xf25a2b01 snd_hdac_get_connections +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xf46f3875 snd_hdac_bus_exec_verb +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xf588bc9a snd_hdac_override_parm +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xfd7bacb1 snd_hdac_dsp_prepare +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xfde988b0 snd_hdac_stream_init +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x3bca68dd snd_ak4113_reinit +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x54e64064 snd_ak4113_external_rate +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x556832ac snd_ak4113_check_rate_and_errors +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x5f133e73 snd_ak4113_create +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0xa2d72efd snd_ak4113_build +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0xfaae09c8 snd_ak4113_reg_write +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x017af2b5 azx_probe_codecs +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 0x08fdb63f snd_hda_jack_add_kctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0a2497cc snd_hda_apply_pincfgs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0b92b5ec snd_hda_jack_detect_enable_callback +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0d723ae2 snd_hda_codec_read +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0e89c637 snd_hda_enum_helper_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x105c5ff8 snd_hda_codec_setup_stream +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x10fb5713 snd_hda_jack_unsol_event +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x115c9a4d snd_hda_add_vmaster_hook +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1468ead2 snd_hda_add_nid +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1477e3e6 snd_hda_check_amp_list_power +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1558d98c snd_hda_get_hint +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1697149a snd_hda_mixer_amp_volume_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x17501626 snd_hda_multi_out_analog_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1798bbea snd_hda_correct_pin_ctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x179dd7b8 snd_hda_codec_configure +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1b3b1d19 snd_hda_codec_pcm_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1f023d07 snd_hda_override_conn_list +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1f860ed2 __snd_hda_add_vmaster +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x22051e6e snd_hda_codec_set_pincfg +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x244aec48 snd_hda_jack_detect_state +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2520b243 snd_hda_get_pin_label +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x298438b4 snd_hda_ctl_add +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x29bf636a azx_get_position +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x29dce166 snd_hda_mixer_amp_tlv +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2c658741 azx_stop_chip +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2cd4ceb6 snd_hda_create_spdif_share_sw +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2ead3a19 hda_get_autocfg_input_label +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x32be623b is_jack_detectable +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x349e6c8f __hda_codec_driver_register +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x35151130 snd_hda_codec_new +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3540b8fe snd_hda_spdif_ctls_assign +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3643340f snd_hda_add_imux_item +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x36d8a03f hda_codec_driver_unregister +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x375cacd5 snd_hda_input_mux_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3894acf7 snd_hda_find_mixer_ctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x38af966c snd_hda_jack_tbl_get_from_tag +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x38ce402b azx_interrupt +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3db5f413 snd_hda_codec_get_pin_target +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x40b06a71 snd_hda_mixer_bind_switch_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x440d03dd snd_hda_sequence_write +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x444ac325 __snd_hda_codec_cleanup_stream +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x45e7a92a snd_hda_multi_out_dig_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x48205317 snd_hda_jack_detect_enable +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4d8a1809 snd_hda_codec_get_pincfg +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4fab8bea snd_hda_codec_amp_init_stereo +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x51a2c8b2 snd_hda_pick_fixup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x51ad26cd snd_hda_multi_out_analog_open +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x51db1feb snd_hda_codec_eapd_power_filter +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x537f7030 snd_hda_get_int_hint +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x571078c6 snd_hda_mixer_amp_switch_get_beep +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5a15ed55 snd_hda_get_default_vref +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5b7d6443 query_amp_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5cb62f3f azx_stop_all_streams +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x60aa6314 snd_hda_bind_vol +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6513329b snd_hda_get_bool_hint +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x664fe910 snd_hda_codec_write +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x66d0c120 snd_hda_sync_vmaster_hook +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6c7709d8 snd_hda_mixer_bind_ctls_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6dddb93d snd_hda_mixer_bind_ctls_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6f94dc46 snd_hda_mixer_amp_switch_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7281f0b6 snd_hda_load_patch +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7587f974 snd_hda_jack_tbl_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x773d866a snd_hda_codec_update_widgets +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x78a2cc9b snd_hda_shutup_pins +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x79cd4c83 azx_get_pos_posbuf +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x79d47f89 snd_hda_spdif_ctls_unassign +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7a68d7d1 snd_hda_input_mux_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7c4f43ff azx_bus_init +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7c7fef8e snd_hda_detach_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8157be09 snd_hda_create_spdif_in_ctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8a6fbad7 snd_hda_parse_pin_defcfg +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8baa3139 snd_hda_get_conn_list +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8ead4d8d snd_hda_codec_amp_init +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8f32fa51 snd_hda_codec_set_pin_target +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8fe64c93 snd_hda_jack_report_sync +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x914e60df snd_hda_mixer_bind_tlv +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x91dc9c93 snd_hda_codec_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x92176967 snd_hda_get_connections +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x93bfc8dc snd_hda_multi_out_dig_open +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x963b8178 snd_hda_pick_pin_fixup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x988ef644 snd_hda_mixer_bind_switch_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9a216c14 snd_hda_codec_pcm_new +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9bd2361a snd_hda_attach_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9c960c8a snd_hda_mixer_amp_switch_put_beep +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9fac9fef azx_init_streams +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa0156140 snd_hda_set_vmaster_tlv +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa2827d76 snd_hda_get_jack_location +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa74917e4 snd_hda_set_power_save +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa7fbd9f7 snd_hda_jack_set_gating_jack +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa8a698df azx_codec_configure +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xaa127bf2 snd_hda_codec_set_power_to_all +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xad194955 snd_hda_pin_sense +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xad76492f azx_free_streams +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xafac2cf5 snd_hda_get_conn_index +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb3ac46f6 snd_hda_codec_amp_update +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb44995ed snd_hda_mixer_bind_ctls_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb600f096 snd_hda_mixer_amp_switch_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb7aa4073 snd_hda_mixer_amp_switch_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb9ffef77 snd_hda_check_amp_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xbadc1cbe _snd_hda_set_pin_ctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xbd578817 snd_hda_multi_out_dig_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xbd68032c snd_hda_codec_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xbd91d715 snd_hda_codec_load_dsp_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xbf61e161 snd_hda_jack_poll_all +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc1a196cc snd_hda_spdif_out_of_nid +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc58320e1 snd_hda_apply_fixup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc596c4c7 snd_hda_lock_devices +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc652fd69 snd_hda_get_jack_connectivity +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc8d0fb3b snd_hda_enable_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc93c55e8 snd_hda_jack_add_kctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xca8eb759 snd_hda_register_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xcb301b6e snd_hda_get_jack_type +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xcea988af snd_hda_mixer_amp_volume_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xcf03384a snd_hda_mixer_amp_volume_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd0acc3ad azx_init_chip +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd1d22f70 snd_hda_codec_load_dsp_trigger +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd43729c9 azx_get_pos_lpib +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xdb77e2eb snd_hda_create_dig_out_ctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xde922cf6 snd_hda_apply_verbs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe07faaaf snd_hda_add_verbs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe118de5d snd_pcm_2_1_chmaps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe23ef767 snd_hda_unlock_devices +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe4ee2828 snd_hda_jack_set_dirty_all +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe56c94af snd_hda_multi_out_analog_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe5b6eb9f snd_hda_add_new_ctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xea72aa80 snd_hda_multi_out_dig_close +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xeda3a721 snd_print_pcm_bits +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xee3de690 snd_hda_bind_sw +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xee966549 snd_hda_codec_load_dsp_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf5108992 snd_hda_override_amp_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf93b2967 snd_hda_codec_amp_stereo +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x09ad33f7 snd_hda_gen_parse_auto_config +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x0fbfd561 snd_hda_gen_stream_pm +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x17a1f3f8 snd_hda_gen_build_controls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x2c914ec6 snd_hda_gen_add_kctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x3dd70c7e snd_hda_parse_nid_path +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x427403b8 snd_hda_get_nid_path +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x43ab3140 snd_hda_gen_path_power_filter +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x43fb2db7 snd_hda_add_new_path +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x472991fd snd_hda_gen_build_pcms +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x4da62c37 snd_hda_gen_init +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 0x8f75f615 snd_hda_get_path_idx +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x996e2047 snd_hda_gen_line_automute +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x9a252974 snd_hda_gen_spec_init +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xa9e42df3 snd_hda_gen_free +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xbc99be0b snd_hda_gen_update_outputs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xbfc0c703 snd_hda_gen_hp_automute +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xc266b2aa snd_hda_gen_check_power_status +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xc6d7fa5c snd_hda_get_path_from_idx +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xd89b0567 snd_hda_activate_path +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xde3a3db3 snd_hda_gen_fix_pin_power +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xf1841326 snd_hda_gen_mic_autoswitch +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs4271 0x42954120 cs4271_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs4271 0xd6777e85 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 0xade9929f cs42l51_regmap +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42l51 0xf1c9b028 cs42l51_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0x0245c4f2 cs42xx8_of_match +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0x2e7ccaf7 cs42xx8_pm +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0x7cac7292 cs42888_data +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0xa1186d8c cs42xx8_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0xcd3794c9 cs42448_data +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0xd73df676 cs42xx8_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-es8328 0x06043f97 es8328_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-es8328 0x7fa1ec56 es8328_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-max98090 0x2e0d53e8 max98090_mic_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm512x 0x4704b1d5 pcm512x_regmap +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm512x 0x487e3509 pcm512x_remove +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm512x 0x4ff30300 pcm512x_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm512x 0xb9fe850f pcm512x_pm_ops +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rl6231 0x70617a04 rl6231_get_clk_info +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rl6231 0x7f68b24d rl6231_pll_calc +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 0xd4bd06c7 rt286_mic_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5640 0xd8b8a2f9 rt5640_dmic_enable +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5645 0x6f7df97c rt5645_set_jack_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5645 0xb0b25bbb rt5645_sel_asrc_clk_src +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5670 0x2719c25e rt5670_sel_asrc_clk_src +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5670 0x6dbaea1f rt5670_jack_suspend +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5670 0x8cf8dec7 rt5670_set_jack_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5670 0xfaae2fe3 rt5670_jack_resume +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0x501834ca devm_sigmadsp_init +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0x54f131ca sigmadsp_reset +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0x593f51a4 sigmadsp_restrict_params +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0xabdbbec2 sigmadsp_attach +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0xb9a9714c sigmadsp_setup +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp-i2c 0x9a7f3af6 devm_sigmadsp_init_i2c +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sn95031 0x51324e01 sn95031_jack_detection +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-ssm2602 0xb834d0f4 ssm2602_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-ssm2602 0xc92833a5 ssm2602_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-tpa6130a2 0x0a7f68d6 tpa6130a2_stereo_enable +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-tpa6130a2 0xc64cc31b tpa6130a2_add_controls +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-ts3a227e 0xbe09d486 ts3a227e_enable_jack_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8804 0x2dac47c7 wm8804_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8804 0x62dc5614 wm8804_pm +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8804 0x99eb2a76 wm8804_remove +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8804 0xded3fc25 wm8804_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8903 0xf5d8883b wm8903_mic_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8962 0xf7a2a50f wm8962_mic_detect +EXPORT_SYMBOL_GPL sound/soc/fsl/snd-soc-fsl-asrc 0x4f24b839 fsl_asrc_get_dma_channel +EXPORT_SYMBOL_GPL sound/soc/fsl/snd-soc-fsl-asrc 0x545b1ad3 fsl_asrc_platform +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/intel/atom/snd-soc-sst-mfld-platform 0x38d274b8 sst_unregister_dsp +EXPORT_SYMBOL_GPL sound/soc/intel/atom/snd-soc-sst-mfld-platform 0xec20ad13 sst_register_dsp +EXPORT_SYMBOL_GPL sound/soc/intel/atom/sst/snd-intel-sst-core 0x15cee12f sst_configure_runtime_pm +EXPORT_SYMBOL_GPL sound/soc/intel/atom/sst/snd-intel-sst-core 0x4cd50bc8 sst_alloc_drv_context +EXPORT_SYMBOL_GPL sound/soc/intel/atom/sst/snd-intel-sst-core 0x4de9cd48 sst_context_init +EXPORT_SYMBOL_GPL sound/soc/intel/atom/sst/snd-intel-sst-core 0x5150c410 sst_context_cleanup +EXPORT_SYMBOL_GPL sound/soc/intel/atom/sst/snd-intel-sst-core 0x58237f39 intel_sst_pm +EXPORT_SYMBOL_GPL sound/soc/intel/atom/sst/snd-intel-sst-core 0xab14edd5 relocate_imr_addr_mrfld +EXPORT_SYMBOL_GPL sound/soc/intel/baytrail/snd-soc-sst-baytrail-pcm 0x3d10a3ae sst_byt_dsp_boot +EXPORT_SYMBOL_GPL sound/soc/intel/baytrail/snd-soc-sst-baytrail-pcm 0x496c7e4e sst_byt_dsp_free +EXPORT_SYMBOL_GPL sound/soc/intel/baytrail/snd-soc-sst-baytrail-pcm 0x5d0f1e3e sst_byt_dsp_suspend_late +EXPORT_SYMBOL_GPL sound/soc/intel/baytrail/snd-soc-sst-baytrail-pcm 0xdf6a0f52 sst_byt_dsp_init +EXPORT_SYMBOL_GPL sound/soc/intel/baytrail/snd-soc-sst-baytrail-pcm 0xf4650d33 sst_byt_dsp_wait_for_ready +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x06c5367e sst_module_runtime_save +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x0c3beea3 sst_memcpy_fromio_32 +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x0ca89b07 sst_dsp_inbox_read +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x1b1c6401 sst_dsp_shim_write64 +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x1b5e8b82 sst_shim32_read +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x1c07fa46 sst_dsp_shim_write64_unlocked +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x299ed4ad sst_dsp_shim_write +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x2a005078 sst_dsp_dma_copyto +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x2eb2db83 sst_dsp_sleep +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x3dc4fac8 sst_mem_block_unregister_all +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x3e6a6176 sst_module_runtime_get_from_id +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x497eb2c2 sst_module_free +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x4a045773 sst_shim32_write +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x4d821d94 sst_dsp_reset +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x57976178 sst_dsp_shim_write_unlocked +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x59a61ea4 sst_module_runtime_restore +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x63f12e12 sst_module_get_from_id +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x65ca1841 sst_fw_new +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x6c660fae sst_block_alloc_scratch +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x6dc2cd67 sst_alloc_blocks +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x7005b36d sst_dsp_dma_copyfrom +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x7477ee24 sst_dsp_shim_update_bits64 +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x74c3d67a sst_mem_block_register +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x766d2218 sst_dsp_outbox_write +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x7d9b9e41 sst_fw_free_all +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x82ce52fc sst_dsp_dump +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x88fccae9 sst_module_free_blocks +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x8dca7cb3 sst_module_alloc_blocks +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x8ed5a680 sst_dsp_inbox_write +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x9105d8a2 sst_dsp_shim_read64 +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x935a3af8 sst_module_runtime_free_blocks +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x986d67e7 sst_dsp_shim_read64_unlocked +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x9ba5d01f sst_dsp_shim_update_bits_unlocked +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xa3c8b3de sst_dsp_stall +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xa4fb33b7 sst_dsp_boot +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xa6ae9d22 sst_dsp_shim_update_bits64_unlocked +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xa94a1607 sst_dsp_ipc_msg_rx +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xa9c1bf13 sst_dsp_shim_update_bits +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xb26b143e sst_memcpy_toio_32 +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xb741ae0e sst_dsp_mailbox_init +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xb9aa3def sst_dsp_free +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xbc3c3a4d sst_dsp_new +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xbc904656 sst_dsp_ipc_msg_tx +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xbcec5387 sst_shim32_read64 +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xbd274e69 sst_free_blocks +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xc2ada8f4 sst_module_runtime_alloc_blocks +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xc516539d sst_fw_free +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xc5dd2fb9 sst_module_new +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xc88c9ff6 sst_dsp_dma_put_channel +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xd1f9967e sst_fw_reload +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xd1fc483c sst_dsp_shim_read_unlocked +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xd2301495 sst_fw_unload +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xd649186f sst_module_runtime_new +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xd6826ada sst_dsp_outbox_read +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xd9a2c94c sst_shim32_write64 +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xda32b422 sst_module_runtime_free +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xda4a463b sst_dsp_wake +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xe14b9cee sst_block_free_scratch +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xe398b208 sst_dsp_dma_get_channel +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xe96925af sst_dsp_get_offset +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xf3dd20e7 sst_dsp_shim_read +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-ipc 0x03ad73d3 sst_ipc_tx_message_wait +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-ipc 0x22a7b4eb sst_ipc_tx_message_nowait +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-ipc 0x2c827eed sst_ipc_reply_find_msg +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-ipc 0x351288e4 sst_ipc_tx_msg_reply_complete +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-ipc 0x62a6f358 sst_ipc_drop_all +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-ipc 0xe6710e0d sst_ipc_init +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-ipc 0xf1a98a92 sst_ipc_fini +EXPORT_SYMBOL_GPL sound/soc/intel/haswell/snd-soc-sst-haswell-pcm 0x380a8e3c sst_hsw_dsp_free +EXPORT_SYMBOL_GPL sound/soc/intel/haswell/snd-soc-sst-haswell-pcm 0xadcbb545 sst_hsw_dsp_init +EXPORT_SYMBOL_GPL sound/soc/intel/haswell/snd-soc-sst-haswell-pcm 0xd1f69f64 sst_hsw_device_set_config +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00f845f1 snd_soc_put_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x035123f8 dapm_kcontrol_get_value +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x06ee49fb snd_soc_write +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x07da019f snd_dmaengine_pcm_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0b722ce8 snd_soc_dpcm_fe_can_update +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0cc6fd6b devm_snd_soc_register_component +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0f0cbcb6 snd_soc_component_update_bits_async +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x14bfd9f4 snd_soc_of_parse_daifmt +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1520fa75 snd_soc_dapm_get_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1634be74 snd_soc_get_volsw_range +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x163d0df5 devm_snd_dmaengine_pcm_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x186c99f3 snd_soc_dapm_put_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x186cca7e snd_soc_resume +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x18ee9977 snd_soc_add_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1c834879 snd_soc_dpcm_be_set_state +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1d21822a snd_soc_set_ac97_ops_of_reset +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1e755681 snd_soc_dapm_sync_unlocked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2116dfef snd_soc_dapm_weak_routes +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x21a527f8 snd_soc_dapm_nc_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x23e14f93 snd_soc_jack_notifier_unregister +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2541a979 snd_soc_calc_frame_size +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x276d93ce snd_soc_dai_set_pll +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2e89a1e4 snd_soc_info_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x32cb4e82 snd_soc_dai_set_tristate +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x39232493 snd_soc_debugfs_root +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x39ef4f63 snd_soc_dapm_force_enable_pin_unlocked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3b596c04 snd_soc_jack_add_zones +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3d8c5655 snd_soc_put_strobe +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3fea7777 snd_soc_component_test_bits +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x401a6f22 snd_soc_bytes_info +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4138cbdf snd_soc_dapm_put_pin_switch +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4289a034 snd_soc_dapm_mixer_update_power +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x42da6bf9 snd_soc_get_xr_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x43d26034 snd_soc_dai_set_fmt +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x45b80665 snd_soc_dapm_kcontrol_dapm +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x47764902 snd_soc_dpcm_can_be_params +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4beab281 snd_soc_test_bits +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4cb1940e snd_soc_jack_free_gpios +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4cb866b5 snd_soc_dapm_enable_pin_unlocked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4f5d4509 snd_soc_runtime_set_dai_fmt +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x505eb301 snd_soc_limit_volume +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x53010188 snd_soc_dpcm_be_get_state +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x53ac5629 snd_soc_free_ac97_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x547d034e snd_soc_remove_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x55480f54 snd_soc_info_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x56b01d31 snd_soc_dapm_new_widgets +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5b2903d6 snd_soc_jack_get_type +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5bab3dc2 snd_soc_dapm_disable_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5e6999aa snd_soc_platform_write +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5f9f4537 snd_soc_of_get_dai_link_codecs +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x65ca7155 snd_soc_register_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6b595330 snd_soc_dapm_get_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6cb24c04 snd_soc_add_component_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6cfa0725 snd_soc_get_strobe +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6d2568af snd_soc_component_async_complete +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6e317432 snd_soc_jack_add_gpios +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6e869804 dapm_regulator_event +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6f4f44c4 snd_soc_bytes_info_ext +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6f8b4e8b snd_soc_put_volsw_range +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x745127fb snd_soc_component_update_bits +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x74a33334 snd_soc_lookup_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x74db7dfb snd_soc_of_parse_audio_simple_widgets +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x74dea743 snd_soc_bytes_put +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x76454910 snd_soc_component_write +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x784db28b snd_soc_dai_set_bclk_ratio +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x799b4367 snd_soc_codec_set_pll +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7cd81cd0 snd_soc_unregister_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7d045278 snd_soc_bytes_get +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7e0227f9 snd_soc_codec_set_sysclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7e606130 snd_soc_calc_bclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7e76b331 snd_soc_dapm_nc_pin_unlocked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7ea04dca snd_soc_unregister_component +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7ee70dcc snd_soc_dai_set_tdm_slot +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7f290fc6 snd_soc_jack_notifier_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7f7702ec snd_soc_set_ac97_ops +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8261809c snd_soc_read +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x861e68d1 snd_soc_jack_add_pins +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x87cfed7f snd_soc_info_volsw_range +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x882e96da snd_soc_platform_read +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x88aaa160 snd_soc_info_xr_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8c4842dc snd_soc_component_exit_regmap +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8c743731 soc_ac97_ops +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8e66fab0 snd_soc_dpcm_get_substream +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8f1b6cc7 snd_soc_unregister_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8f558b90 snd_soc_get_pcm_runtime +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8fecbfd7 snd_soc_put_volsw_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9025e6ab snd_soc_dapm_force_bias_level +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x95f60fb9 snd_soc_jack_add_gpiods +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x97555222 snd_soc_card_get_kcontrol +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x978596ce snd_soc_get_dai_substream +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x99c630cd snd_dmaengine_pcm_prepare_slave_config +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9a409720 snd_soc_dapm_mux_update_power +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9af06295 snd_soc_dapm_ignore_suspend +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9b906eca snd_soc_suspend +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9d5d2392 snd_soc_of_parse_audio_routing +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa1cff0af snd_soc_dai_set_clkdiv +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa22eba5a snd_soc_dai_set_sysclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa49fdf66 snd_soc_component_init_regmap +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa7696d5c snd_soc_info_volsw_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa8a90fc0 snd_soc_get_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa99ea731 snd_soc_jack_report +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xab020cdb snd_soc_component_read +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xac3ec051 snd_soc_card_jack_new +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb0bbb88f snd_soc_dapm_put_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb31f95cf snd_soc_dai_set_channel_map +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb5701682 snd_soc_register_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb595f17c snd_soc_dapm_new_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb6e3fc32 snd_soc_dai_digital_mute +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb847ab4d snd_soc_unregister_card +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb95e7960 dapm_clock_event +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xba5ac0d6 snd_soc_get_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xbbe1bc5a snd_soc_add_card_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xbcbff635 snd_soc_get_volsw_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xbdab2054 snd_soc_dapm_enable_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xbe80c198 snd_soc_add_codec_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xbf78b4dc snd_soc_dpcm_can_be_free_stop +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc1953c83 snd_soc_dpcm_be_can_update +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc3e53029 snd_soc_put_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc504c856 snd_soc_add_dai_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc6575699 snd_soc_add_platform_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc71d58d7 snd_soc_dapm_info_pin_switch +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc8269f94 snd_soc_params_to_frame_size +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc903e97a snd_soc_of_get_dai_name +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc9d6c9fc snd_soc_poweroff +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xcb7e5d4b devm_snd_soc_register_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xcbd36e1e snd_soc_dapm_force_enable_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd0cf5af8 snd_soc_dapm_get_pin_switch +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd2948164 snd_soc_dapm_disable_pin_unlocked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd3357a9f snd_soc_dapm_get_pin_status +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd5998cd8 snd_soc_pm_ops +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd8bb14d9 snd_soc_of_parse_tdm_slot +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xdb460e85 snd_soc_platform_trigger +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xde12aafb snd_soc_dapm_free +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xdfa8f81b snd_soc_update_bits +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe39bf358 snd_soc_bytes_tlv_callback +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe538fe1f snd_soc_new_ac97_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe7d07b2b snd_soc_dapm_sync +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe853973b snd_soc_dapm_del_routes +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xea0061f0 snd_soc_set_runtime_hwparams +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xea8b21c8 snd_soc_put_xr_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xeb711ae7 snd_soc_params_to_bclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xebc2ff6d snd_soc_register_component +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf22ef658 devm_snd_soc_register_card +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf2eb775d snd_soc_cnew +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf368ef50 snd_soc_of_parse_card_name +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf8d12600 dpcm_be_dai_trigger +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf94bf00b snd_soc_dapm_add_routes +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xfddff8ca snd_soc_register_card +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xfe897ad6 snd_dmaengine_pcm_unregister +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xff28b4df dapm_mark_endpoints_dirty +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x03549254 line6_init_pcm +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x18d90043 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 0x2711dd09 line6_pcm_acquire +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x3433d95a line6_read_serial_number +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x36502fe6 line6_version_request_async +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x62a53fec line6_init_midi +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x65d434ad line6_alloc_sysex_buffer +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x6a5d0028 line6_send_raw_message_async +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x80b65b22 line6_disconnect +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x8ec973cd line6_start_timer +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x91f7d077 line6_send_sysex_message +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xa3d7c11c line6_write_data +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xa702f65a line6_pcm_release +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xa9f14bae line6_suspend +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xc3deaa5d line6_resume +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xd8a4e89d line6_probe +EXPORT_SYMBOL_GPL vmlinux 0x001e64d3 fib_table_lookup +EXPORT_SYMBOL_GPL vmlinux 0x0034f3b6 xen_has_pv_nic_devices +EXPORT_SYMBOL_GPL vmlinux 0x0039c3e7 isa_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x003c9812 pwmchip_add_with_polarity +EXPORT_SYMBOL_GPL vmlinux 0x00409346 tty_buffer_set_limit +EXPORT_SYMBOL_GPL vmlinux 0x00535989 exportfs_decode_fh +EXPORT_SYMBOL_GPL vmlinux 0x00632780 work_busy +EXPORT_SYMBOL_GPL vmlinux 0x006820b4 pci_write_msi_msg +EXPORT_SYMBOL_GPL vmlinux 0x0069d2da regulator_set_voltage_sel_regmap +EXPORT_SYMBOL_GPL vmlinux 0x008f86a1 rhashtable_walk_stop +EXPORT_SYMBOL_GPL vmlinux 0x009304b6 ata_tf_from_fis +EXPORT_SYMBOL_GPL vmlinux 0x00a97652 gpiochip_set_chained_irqchip +EXPORT_SYMBOL_GPL vmlinux 0x00b4064f inet_csk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x00bdf78b xenbus_dev_fatal +EXPORT_SYMBOL_GPL vmlinux 0x00ce015f ata_sff_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x00ebcb5d ata_id_string +EXPORT_SYMBOL_GPL vmlinux 0x01010c6d klist_add_before +EXPORT_SYMBOL_GPL vmlinux 0x011cf028 regulator_suspend_finish +EXPORT_SYMBOL_GPL vmlinux 0x014ffb56 platform_bus +EXPORT_SYMBOL_GPL vmlinux 0x015eca5f cpufreq_driver_target +EXPORT_SYMBOL_GPL vmlinux 0x0170cb6c efivar_work +EXPORT_SYMBOL_GPL vmlinux 0x01778eba shash_ahash_finup +EXPORT_SYMBOL_GPL vmlinux 0x01848a8e local_apic_timer_c2_ok +EXPORT_SYMBOL_GPL vmlinux 0x01926211 bus_find_device +EXPORT_SYMBOL_GPL vmlinux 0x0195d027 ata_sg_init +EXPORT_SYMBOL_GPL vmlinux 0x01cb876b crypto_register_algs +EXPORT_SYMBOL_GPL vmlinux 0x01e1a8de kgdb_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x01e39b76 screen_glyph +EXPORT_SYMBOL_GPL vmlinux 0x01ed2a65 serial8250_rpm_put +EXPORT_SYMBOL_GPL vmlinux 0x02290d01 skb_zerocopy_headlen +EXPORT_SYMBOL_GPL vmlinux 0x023c3ef4 sysfs_create_groups +EXPORT_SYMBOL_GPL vmlinux 0x0255ecc1 unuse_mm +EXPORT_SYMBOL_GPL vmlinux 0x0270dbdb ping_seq_next +EXPORT_SYMBOL_GPL vmlinux 0x02726bcf bus_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x02734734 fuse_file_poll +EXPORT_SYMBOL_GPL vmlinux 0x02872379 __tracepoint_suspend_resume +EXPORT_SYMBOL_GPL vmlinux 0x02891442 vfs_test_lock +EXPORT_SYMBOL_GPL vmlinux 0x02b05ef4 __of_phy_provider_register +EXPORT_SYMBOL_GPL vmlinux 0x02bb769c iommu_get_domain_for_dev +EXPORT_SYMBOL_GPL vmlinux 0x02c4943b alarm_init +EXPORT_SYMBOL_GPL vmlinux 0x02ca38e4 gnttab_map_refs +EXPORT_SYMBOL_GPL vmlinux 0x02ca78ac component_master_add_with_match +EXPORT_SYMBOL_GPL vmlinux 0x02d8aaee user_update +EXPORT_SYMBOL_GPL vmlinux 0x02fea2ae rcu_note_context_switch +EXPORT_SYMBOL_GPL vmlinux 0x033832c7 usb_amd_hang_symptom_quirk +EXPORT_SYMBOL_GPL vmlinux 0x0343bdf1 __i2c_board_list +EXPORT_SYMBOL_GPL vmlinux 0x035e3f24 usb_get_status +EXPORT_SYMBOL_GPL vmlinux 0x036799cf usb_hcd_start_port_resume +EXPORT_SYMBOL_GPL vmlinux 0x036e68a1 power_supply_class +EXPORT_SYMBOL_GPL vmlinux 0x03861f2d rio_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x03872a50 key_type_asymmetric +EXPORT_SYMBOL_GPL vmlinux 0x03993180 regmap_reinit_cache +EXPORT_SYMBOL_GPL vmlinux 0x039fd867 trace_clock_global +EXPORT_SYMBOL_GPL vmlinux 0x03c1b1a8 tty_wakeup +EXPORT_SYMBOL_GPL vmlinux 0x03cfce1c debugfs_create_bool +EXPORT_SYMBOL_GPL vmlinux 0x03d8a65d pwm_config +EXPORT_SYMBOL_GPL vmlinux 0x03e3686c ata_timing_cycle2mode +EXPORT_SYMBOL_GPL vmlinux 0x03e406cf get_pid_task +EXPORT_SYMBOL_GPL vmlinux 0x0400e3af unregister_acpi_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x0401a027 shash_attr_alg +EXPORT_SYMBOL_GPL vmlinux 0x040223bb cpu_subsys +EXPORT_SYMBOL_GPL vmlinux 0x0402cbbf preempt_notifier_inc +EXPORT_SYMBOL_GPL vmlinux 0x040e3b35 pci_find_ht_capability +EXPORT_SYMBOL_GPL vmlinux 0x0419e097 nd_device_attribute_group +EXPORT_SYMBOL_GPL vmlinux 0x04238b54 fuse_direct_io +EXPORT_SYMBOL_GPL vmlinux 0x045b5e6a class_destroy +EXPORT_SYMBOL_GPL vmlinux 0x04601a95 platform_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x0465a073 regmap_reg_in_ranges +EXPORT_SYMBOL_GPL vmlinux 0x0485655f amd_get_nodes_per_socket +EXPORT_SYMBOL_GPL vmlinux 0x04869ca0 tty_port_register_device_attr +EXPORT_SYMBOL_GPL vmlinux 0x048b5f8d twl4030_audio_get_mclk +EXPORT_SYMBOL_GPL vmlinux 0x0496a942 mddev_init +EXPORT_SYMBOL_GPL vmlinux 0x0499deb0 __clk_get_rate +EXPORT_SYMBOL_GPL vmlinux 0x04bf26af ioremap_page_range +EXPORT_SYMBOL_GPL vmlinux 0x04c3f2c1 gnttab_empty_grant_references +EXPORT_SYMBOL_GPL vmlinux 0x04c4f603 mpi_get_buffer +EXPORT_SYMBOL_GPL vmlinux 0x04e91ed2 wm831x_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0x04ea3a07 blkcg_policy_unregister +EXPORT_SYMBOL_GPL vmlinux 0x04ecfb5c set_memory_wt +EXPORT_SYMBOL_GPL vmlinux 0x04f15492 xen_swiotlb_sync_single_for_device +EXPORT_SYMBOL_GPL vmlinux 0x04f4bd8d percpu_ref_exit +EXPORT_SYMBOL_GPL vmlinux 0x050ac892 __rio_local_write_config_8 +EXPORT_SYMBOL_GPL vmlinux 0x050ca869 smp_ops +EXPORT_SYMBOL_GPL vmlinux 0x050cfcf4 iommu_group_get +EXPORT_SYMBOL_GPL vmlinux 0x054e550b kernel_halt +EXPORT_SYMBOL_GPL vmlinux 0x054e5728 __rio_local_read_config_16 +EXPORT_SYMBOL_GPL vmlinux 0x056ce81c filter_check_discard +EXPORT_SYMBOL_GPL vmlinux 0x057d3faa regmap_field_write +EXPORT_SYMBOL_GPL vmlinux 0x058b582a vt_get_leds +EXPORT_SYMBOL_GPL vmlinux 0x05a05be6 iommu_detach_group +EXPORT_SYMBOL_GPL vmlinux 0x05a70a67 skb_complete_tx_timestamp +EXPORT_SYMBOL_GPL vmlinux 0x05c31694 rio_route_clr_table +EXPORT_SYMBOL_GPL vmlinux 0x05c41588 led_trigger_store +EXPORT_SYMBOL_GPL vmlinux 0x05dce527 clk_register +EXPORT_SYMBOL_GPL vmlinux 0x05e15a5c sk_detach_filter +EXPORT_SYMBOL_GPL vmlinux 0x05ed67c8 rio_dev_put +EXPORT_SYMBOL_GPL vmlinux 0x05ef23d9 usb_alloc_streams +EXPORT_SYMBOL_GPL vmlinux 0x06106a6e acpi_find_child_device +EXPORT_SYMBOL_GPL vmlinux 0x06144860 bus_sort_breadthfirst +EXPORT_SYMBOL_GPL vmlinux 0x061f4c1f agp_remove_bridge +EXPORT_SYMBOL_GPL vmlinux 0x06209fbb ping_proc_register +EXPORT_SYMBOL_GPL vmlinux 0x0626da5f od_unregister_powersave_bias_handler +EXPORT_SYMBOL_GPL vmlinux 0x0636eb52 tty_prepare_flip_string +EXPORT_SYMBOL_GPL vmlinux 0x064db9a5 mark_mounts_for_expiry +EXPORT_SYMBOL_GPL vmlinux 0x0667f493 ohci_suspend +EXPORT_SYMBOL_GPL vmlinux 0x066d56a3 aead_register_instance +EXPORT_SYMBOL_GPL vmlinux 0x06963c36 intel_msic_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0x06a71b08 vfs_truncate +EXPORT_SYMBOL_GPL vmlinux 0x06b10951 pm_generic_poweroff_noirq +EXPORT_SYMBOL_GPL vmlinux 0x06cc79e2 devfreq_event_get_event +EXPORT_SYMBOL_GPL vmlinux 0x06d549e6 pinctrl_free_gpio +EXPORT_SYMBOL_GPL vmlinux 0x06dd0aec devm_get_free_pages +EXPORT_SYMBOL_GPL vmlinux 0x06e74b9d page_mkclean +EXPORT_SYMBOL_GPL vmlinux 0x06ecbb91 free_vm_area +EXPORT_SYMBOL_GPL vmlinux 0x07032f9e trace_seq_to_user +EXPORT_SYMBOL_GPL vmlinux 0x0703aee6 irq_get_domain_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x07232b22 swiotlb_tbl_map_single +EXPORT_SYMBOL_GPL vmlinux 0x0726e3e4 irq_domain_xlate_onetwocell +EXPORT_SYMBOL_GPL vmlinux 0x072f254e usb_string +EXPORT_SYMBOL_GPL vmlinux 0x0739f429 x509_check_signature +EXPORT_SYMBOL_GPL vmlinux 0x073e5909 swiotlb_tbl_sync_single +EXPORT_SYMBOL_GPL vmlinux 0x074b3c56 sata_link_resume +EXPORT_SYMBOL_GPL vmlinux 0x074f1220 driver_find_device +EXPORT_SYMBOL_GPL vmlinux 0x07582602 regmap_attach_dev +EXPORT_SYMBOL_GPL vmlinux 0x075b0132 alarm_forward +EXPORT_SYMBOL_GPL vmlinux 0x0762403c edac_put_sysfs_subsys +EXPORT_SYMBOL_GPL vmlinux 0x07b21f85 kdb_get_kbd_char +EXPORT_SYMBOL_GPL vmlinux 0x07b52e38 rtnl_unregister +EXPORT_SYMBOL_GPL vmlinux 0x07ba2c9c virtqueue_get_buf +EXPORT_SYMBOL_GPL vmlinux 0x07d9f07c tpm2_calc_ordinal_duration +EXPORT_SYMBOL_GPL vmlinux 0x07f300c3 smp_call_function_any +EXPORT_SYMBOL_GPL vmlinux 0x0808e982 regcache_cache_bypass +EXPORT_SYMBOL_GPL vmlinux 0x08156773 name_to_dev_t +EXPORT_SYMBOL_GPL vmlinux 0x08269b9a serial8250_get_port +EXPORT_SYMBOL_GPL vmlinux 0x0830ca4a cpufreq_frequency_table_cpuinfo +EXPORT_SYMBOL_GPL vmlinux 0x083f7da1 reservation_object_get_fences_rcu +EXPORT_SYMBOL_GPL vmlinux 0x08498ab6 __platform_create_bundle +EXPORT_SYMBOL_GPL vmlinux 0x08513734 spi_add_device +EXPORT_SYMBOL_GPL vmlinux 0x08584056 phy_remove_lookup +EXPORT_SYMBOL_GPL vmlinux 0x08599a8e usb_create_shared_hcd +EXPORT_SYMBOL_GPL vmlinux 0x085d6272 da9052_disable_irq +EXPORT_SYMBOL_GPL vmlinux 0x0861f4bf fanout_mutex +EXPORT_SYMBOL_GPL vmlinux 0x086e2aa2 rtc_read_alarm +EXPORT_SYMBOL_GPL vmlinux 0x08e0e953 wait_for_stable_page +EXPORT_SYMBOL_GPL vmlinux 0x08fbba2c get_user_pages_fast +EXPORT_SYMBOL_GPL vmlinux 0x08fca42e tps6586x_read +EXPORT_SYMBOL_GPL vmlinux 0x091eb9b4 round_jiffies +EXPORT_SYMBOL_GPL vmlinux 0x09290a24 scsi_eh_ready_devs +EXPORT_SYMBOL_GPL vmlinux 0x092caf68 acpi_subsys_suspend +EXPORT_SYMBOL_GPL vmlinux 0x093802be fwnode_property_read_u16_array +EXPORT_SYMBOL_GPL vmlinux 0x09437748 ring_buffer_read_events_cpu +EXPORT_SYMBOL_GPL vmlinux 0x09469482 kfree_call_rcu +EXPORT_SYMBOL_GPL vmlinux 0x0949f33f ata_pci_bmdma_clear_simplex +EXPORT_SYMBOL_GPL vmlinux 0x0962d0e8 irq_set_affinity_notifier +EXPORT_SYMBOL_GPL vmlinux 0x097f96c5 usb_driver_release_interface +EXPORT_SYMBOL_GPL vmlinux 0x09836242 crypto_register_aeads +EXPORT_SYMBOL_GPL vmlinux 0x0983df26 irq_domain_associate +EXPORT_SYMBOL_GPL vmlinux 0x0987d68c pm_generic_resume +EXPORT_SYMBOL_GPL vmlinux 0x098dedf0 ata_sff_drain_fifo +EXPORT_SYMBOL_GPL vmlinux 0x0996cffc __devm_of_phy_provider_register +EXPORT_SYMBOL_GPL vmlinux 0x09cc0dce __sock_recv_timestamp +EXPORT_SYMBOL_GPL vmlinux 0x09e342dd vring_transport_features +EXPORT_SYMBOL_GPL vmlinux 0x09f96484 irq_domain_xlate_twocell +EXPORT_SYMBOL_GPL vmlinux 0x0a0ab09d tps6586x_get_version +EXPORT_SYMBOL_GPL vmlinux 0x0a3b6ecf xenbus_free_evtchn +EXPORT_SYMBOL_GPL vmlinux 0x0a3dcd2a xenbus_match +EXPORT_SYMBOL_GPL vmlinux 0x0a3e5f13 unregister_virtio_device +EXPORT_SYMBOL_GPL vmlinux 0x0a40873e devm_extcon_dev_allocate +EXPORT_SYMBOL_GPL vmlinux 0x0a4fde00 idr_alloc +EXPORT_SYMBOL_GPL vmlinux 0x0a572ba5 mmc_send_tuning +EXPORT_SYMBOL_GPL vmlinux 0x0a641da0 blk_mq_tags_cpumask +EXPORT_SYMBOL_GPL vmlinux 0x0a814abe pci_restore_msi_state +EXPORT_SYMBOL_GPL vmlinux 0x0a93396b apply_to_page_range +EXPORT_SYMBOL_GPL vmlinux 0x0ada17a4 regmap_update_bits +EXPORT_SYMBOL_GPL vmlinux 0x0afd4610 zs_malloc +EXPORT_SYMBOL_GPL vmlinux 0x0b07abe2 unshare_fs_struct +EXPORT_SYMBOL_GPL vmlinux 0x0b2a031c __sock_recv_wifi_status +EXPORT_SYMBOL_GPL vmlinux 0x0b3738f6 fuse_sync_release +EXPORT_SYMBOL_GPL vmlinux 0x0b44896d __ata_change_queue_depth +EXPORT_SYMBOL_GPL vmlinux 0x0b4d5e9a fuse_abort_conn +EXPORT_SYMBOL_GPL vmlinux 0x0b51a4cb rtnl_link_unregister +EXPORT_SYMBOL_GPL vmlinux 0x0b52e502 apei_resources_add +EXPORT_SYMBOL_GPL vmlinux 0x0b5538a6 generic_access_phys +EXPORT_SYMBOL_GPL vmlinux 0x0b59390b __tracepoint_rpm_suspend +EXPORT_SYMBOL_GPL vmlinux 0x0b6f83e0 trace_output_call +EXPORT_SYMBOL_GPL vmlinux 0x0b762740 acpi_get_pci_dev +EXPORT_SYMBOL_GPL vmlinux 0x0b8328a5 simple_attr_read +EXPORT_SYMBOL_GPL vmlinux 0x0b8a3d73 usb_kill_urb +EXPORT_SYMBOL_GPL vmlinux 0x0b98e8bd tty_port_install +EXPORT_SYMBOL_GPL vmlinux 0x0bd3a56d ata_dev_disable +EXPORT_SYMBOL_GPL vmlinux 0x0be80267 add_page_wait_queue +EXPORT_SYMBOL_GPL vmlinux 0x0bfa3a19 rcu_idle_exit +EXPORT_SYMBOL_GPL vmlinux 0x0c0c015e ring_buffer_swap_cpu +EXPORT_SYMBOL_GPL vmlinux 0x0c0ff218 __skb_tstamp_tx +EXPORT_SYMBOL_GPL vmlinux 0x0c1a404c extcon_get_cable_state +EXPORT_SYMBOL_GPL vmlinux 0x0c2cdbf1 synchronize_sched +EXPORT_SYMBOL_GPL vmlinux 0x0c350da5 crypto_ahash_final +EXPORT_SYMBOL_GPL vmlinux 0x0c4d08f6 crypto_mod_put +EXPORT_SYMBOL_GPL vmlinux 0x0c53d6a9 usb_hcd_platform_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x0c56e4bb pm_generic_suspend_late +EXPORT_SYMBOL_GPL vmlinux 0x0c7c1de2 spi_write_then_read +EXPORT_SYMBOL_GPL vmlinux 0x0c805f93 clflush_cache_range +EXPORT_SYMBOL_GPL vmlinux 0x0c80e3fe efivar_init +EXPORT_SYMBOL_GPL vmlinux 0x0cc1e40f crypto_it_tab +EXPORT_SYMBOL_GPL vmlinux 0x0ce4a054 ata_sff_pause +EXPORT_SYMBOL_GPL vmlinux 0x0cf472ee pci_check_and_mask_intx +EXPORT_SYMBOL_GPL vmlinux 0x0cfa452c irq_setup_alt_chip +EXPORT_SYMBOL_GPL vmlinux 0x0d2239bb dma_request_slave_channel +EXPORT_SYMBOL_GPL vmlinux 0x0d4961de nf_log_buf_open +EXPORT_SYMBOL_GPL vmlinux 0x0d51af9d tty_set_termios +EXPORT_SYMBOL_GPL vmlinux 0x0d7d4d70 rcu_batches_completed +EXPORT_SYMBOL_GPL vmlinux 0x0dcb53f5 crypto_alg_extsize +EXPORT_SYMBOL_GPL vmlinux 0x0dd3c04d bmp085_probe +EXPORT_SYMBOL_GPL vmlinux 0x0ddb1cd7 llist_reverse_order +EXPORT_SYMBOL_GPL vmlinux 0x0de8a16b devm_regulator_get_optional +EXPORT_SYMBOL_GPL vmlinux 0x0de9305c iommu_capable +EXPORT_SYMBOL_GPL vmlinux 0x0ded5f14 cpci_hp_register_bus +EXPORT_SYMBOL_GPL vmlinux 0x0df925f6 btree_init_mempool +EXPORT_SYMBOL_GPL vmlinux 0x0e007edf xen_evtchn_nr_channels +EXPORT_SYMBOL_GPL vmlinux 0x0e13cb4d apei_resources_release +EXPORT_SYMBOL_GPL vmlinux 0x0e3eb5f4 crypto_unregister_alg +EXPORT_SYMBOL_GPL vmlinux 0x0e52ccc8 transport_class_unregister +EXPORT_SYMBOL_GPL vmlinux 0x0e54957d tps65912_clear_bits +EXPORT_SYMBOL_GPL vmlinux 0x0e585d2a blk_queue_bypass_end +EXPORT_SYMBOL_GPL vmlinux 0x0e72ec37 dev_pm_domain_detach +EXPORT_SYMBOL_GPL vmlinux 0x0e79c145 reservation_object_test_signaled_rcu +EXPORT_SYMBOL_GPL vmlinux 0x0e8d98e1 devm_hwmon_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x0ea72851 __class_register +EXPORT_SYMBOL_GPL vmlinux 0x0eb0b5dd fat_detach +EXPORT_SYMBOL_GPL vmlinux 0x0eb118db regulator_can_change_voltage +EXPORT_SYMBOL_GPL vmlinux 0x0eb1d9be bmp085_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0x0eeaedd0 pinctrl_force_default +EXPORT_SYMBOL_GPL vmlinux 0x0ef20a88 kallsyms_on_each_symbol +EXPORT_SYMBOL_GPL vmlinux 0x0ef9fc5e virtqueue_enable_cb_delayed +EXPORT_SYMBOL_GPL vmlinux 0x0f0a0e85 irq_alloc_domain_generic_chips +EXPORT_SYMBOL_GPL vmlinux 0x0f0b4c52 irq_setup_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x0f0b6a8a skcipher_geniv_free +EXPORT_SYMBOL_GPL vmlinux 0x0f171606 file_ra_state_init +EXPORT_SYMBOL_GPL vmlinux 0x0f190512 wm831x_auxadc_read_uv +EXPORT_SYMBOL_GPL vmlinux 0x0f2d7d87 mce_unregister_decode_chain +EXPORT_SYMBOL_GPL vmlinux 0x0f336d7f rcutorture_get_gp_data +EXPORT_SYMBOL_GPL vmlinux 0x0f40d89c rt_mutex_timed_lock +EXPORT_SYMBOL_GPL vmlinux 0x0f4722a7 xfrm_audit_state_icvfail +EXPORT_SYMBOL_GPL vmlinux 0x0f50565a debugfs_rename +EXPORT_SYMBOL_GPL vmlinux 0x0f6a926b extcon_set_cable_state_ +EXPORT_SYMBOL_GPL vmlinux 0x0f751aea input_event_from_user +EXPORT_SYMBOL_GPL vmlinux 0x0f9576e2 xenbus_dev_groups +EXPORT_SYMBOL_GPL vmlinux 0x0fa138de xen_hvm_need_lapic +EXPORT_SYMBOL_GPL vmlinux 0x0faa0a56 ehci_adjust_port_wakeup_flags +EXPORT_SYMBOL_GPL vmlinux 0x0faba0f5 usb_hcd_pci_remove +EXPORT_SYMBOL_GPL vmlinux 0x0fc01e9f static_key_slow_inc +EXPORT_SYMBOL_GPL vmlinux 0x0fcc1969 copy_from_user_nmi +EXPORT_SYMBOL_GPL vmlinux 0x0fd6f8b7 dev_pm_qos_expose_latency_limit +EXPORT_SYMBOL_GPL vmlinux 0x0fe04e27 irq_get_irq_data +EXPORT_SYMBOL_GPL vmlinux 0x0fe2d570 xenbus_directory +EXPORT_SYMBOL_GPL vmlinux 0x10138352 tracing_on +EXPORT_SYMBOL_GPL vmlinux 0x1086bc05 ohci_init_driver +EXPORT_SYMBOL_GPL vmlinux 0x10e0ae7e thermal_zone_get_temp +EXPORT_SYMBOL_GPL vmlinux 0x10e0d389 seq_open_net +EXPORT_SYMBOL_GPL vmlinux 0x10ecc52c usb_amd_quirk_pll_enable +EXPORT_SYMBOL_GPL vmlinux 0x110106c1 cper_severity_to_aer +EXPORT_SYMBOL_GPL vmlinux 0x110551ac pci_hp_deregister +EXPORT_SYMBOL_GPL vmlinux 0x1108780d input_ff_create +EXPORT_SYMBOL_GPL vmlinux 0x11470918 gpiochip_remove_pin_ranges +EXPORT_SYMBOL_GPL vmlinux 0x1148e1f0 debugfs_create_devm_seqfile +EXPORT_SYMBOL_GPL vmlinux 0x114f1a20 balloon_stats +EXPORT_SYMBOL_GPL vmlinux 0x116b8d8a blk_queue_dma_drain +EXPORT_SYMBOL_GPL vmlinux 0x1172ce54 rtc_ktime_to_tm +EXPORT_SYMBOL_GPL vmlinux 0x11756532 __online_page_set_limits +EXPORT_SYMBOL_GPL vmlinux 0x1178a3e3 tcp_set_state +EXPORT_SYMBOL_GPL vmlinux 0x117f2210 crypto_grab_skcipher +EXPORT_SYMBOL_GPL vmlinux 0x118f66dd sprint_OID +EXPORT_SYMBOL_GPL vmlinux 0x11d7589e add_hwgenerator_randomness +EXPORT_SYMBOL_GPL vmlinux 0x11e8b71f security_inode_mkdir +EXPORT_SYMBOL_GPL vmlinux 0x11f48f14 fuse_put_request +EXPORT_SYMBOL_GPL vmlinux 0x12059b34 usb_register_device_driver +EXPORT_SYMBOL_GPL vmlinux 0x120da48e bdev_write_page +EXPORT_SYMBOL_GPL vmlinux 0x12139ddc pinctrl_utils_add_config +EXPORT_SYMBOL_GPL vmlinux 0x121d958a unregister_die_notifier +EXPORT_SYMBOL_GPL vmlinux 0x122203ac dm_disk +EXPORT_SYMBOL_GPL vmlinux 0x122d7e55 bus_get_kset +EXPORT_SYMBOL_GPL vmlinux 0x12303be7 mmc_regulator_set_ocr +EXPORT_SYMBOL_GPL vmlinux 0x12365e8c percpu_ida_free +EXPORT_SYMBOL_GPL vmlinux 0x124f2056 crypto_get_attr_type +EXPORT_SYMBOL_GPL vmlinux 0x12598988 blk_update_request +EXPORT_SYMBOL_GPL vmlinux 0x1268f357 resume_device_irqs +EXPORT_SYMBOL_GPL vmlinux 0x127a86a0 fat_getattr +EXPORT_SYMBOL_GPL vmlinux 0x1285ced0 __clk_determine_rate +EXPORT_SYMBOL_GPL vmlinux 0x1294d80a get_xsave_addr +EXPORT_SYMBOL_GPL vmlinux 0x129e3e2c get_cpu_device +EXPORT_SYMBOL_GPL vmlinux 0x12b5193c fwnode_handle_put +EXPORT_SYMBOL_GPL vmlinux 0x12b7164d phy_get +EXPORT_SYMBOL_GPL vmlinux 0x12ea3c14 btree_remove +EXPORT_SYMBOL_GPL vmlinux 0x130a1148 inet_csk_clone_lock +EXPORT_SYMBOL_GPL vmlinux 0x130bd388 check_tsc_disabled +EXPORT_SYMBOL_GPL vmlinux 0x1317e771 ata_sff_queue_pio_task +EXPORT_SYMBOL_GPL vmlinux 0x1318b6b9 spi_sync_locked +EXPORT_SYMBOL_GPL vmlinux 0x131a5ed7 regmap_del_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0x131db64a system_long_wq +EXPORT_SYMBOL_GPL vmlinux 0x131e01f3 xen_swiotlb_sync_sg_for_cpu +EXPORT_SYMBOL_GPL vmlinux 0x136209db power_supply_reg_notifier +EXPORT_SYMBOL_GPL vmlinux 0x137aeb71 ata_cable_ignore +EXPORT_SYMBOL_GPL vmlinux 0x13804eec rdev_clear_badblocks +EXPORT_SYMBOL_GPL vmlinux 0x138aff76 gnttab_init +EXPORT_SYMBOL_GPL vmlinux 0x13a75db0 event_triggers_call +EXPORT_SYMBOL_GPL vmlinux 0x13ac898c dev_pm_qos_hide_flags +EXPORT_SYMBOL_GPL vmlinux 0x13acae20 blk_add_driver_data +EXPORT_SYMBOL_GPL vmlinux 0x13ad647f scatterwalk_bytes_sglen +EXPORT_SYMBOL_GPL vmlinux 0x13b89dee pinctrl_request_gpio +EXPORT_SYMBOL_GPL vmlinux 0x13f51fc3 ms_hyperv +EXPORT_SYMBOL_GPL vmlinux 0x140cd291 gpiod_export +EXPORT_SYMBOL_GPL vmlinux 0x14116cba xen_swiotlb_free_coherent +EXPORT_SYMBOL_GPL vmlinux 0x1432b4fa vfs_setxattr +EXPORT_SYMBOL_GPL vmlinux 0x143b1dcd devm_devfreq_event_add_edev +EXPORT_SYMBOL_GPL vmlinux 0x1455fe77 usb_altnum_to_altsetting +EXPORT_SYMBOL_GPL vmlinux 0x145784d1 gdt_page +EXPORT_SYMBOL_GPL vmlinux 0x145a7865 mbox_free_channel +EXPORT_SYMBOL_GPL vmlinux 0x145c6cc9 __rtnl_register +EXPORT_SYMBOL_GPL vmlinux 0x148efce5 pci_sriov_set_totalvfs +EXPORT_SYMBOL_GPL vmlinux 0x148fc412 ata_noop_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0x149dee50 to_nd_region +EXPORT_SYMBOL_GPL vmlinux 0x14a305de mmu_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x14bce795 __pci_hp_register +EXPORT_SYMBOL_GPL vmlinux 0x14c4d789 crypto_shash_finup +EXPORT_SYMBOL_GPL vmlinux 0x14f30649 pci_hp_change_slot_info +EXPORT_SYMBOL_GPL vmlinux 0x15010e1f arbitrary_virt_to_machine +EXPORT_SYMBOL_GPL vmlinux 0x15241422 wait_for_tpm_stat +EXPORT_SYMBOL_GPL vmlinux 0x154c9fea tpm2_do_selftest +EXPORT_SYMBOL_GPL vmlinux 0x15568631 lookup_address +EXPORT_SYMBOL_GPL vmlinux 0x1557615f perf_tp_event +EXPORT_SYMBOL_GPL vmlinux 0x15892417 async_synchronize_cookie +EXPORT_SYMBOL_GPL vmlinux 0x1590bc0a nfq_ct_hook +EXPORT_SYMBOL_GPL vmlinux 0x15b0606e e820_any_mapped +EXPORT_SYMBOL_GPL vmlinux 0x15e2dc1e rhashtable_init +EXPORT_SYMBOL_GPL vmlinux 0x15efd446 rcu_batches_started +EXPORT_SYMBOL_GPL vmlinux 0x16000a3c dm_device_name +EXPORT_SYMBOL_GPL vmlinux 0x1600e717 device_create_bin_file +EXPORT_SYMBOL_GPL vmlinux 0x161758f7 inet_csk_get_port +EXPORT_SYMBOL_GPL vmlinux 0x164934f4 pgprot_writethrough +EXPORT_SYMBOL_GPL vmlinux 0x1650bf27 rcutorture_record_progress +EXPORT_SYMBOL_GPL vmlinux 0x165eeb32 __pm_runtime_disable +EXPORT_SYMBOL_GPL vmlinux 0x16a27aea acpiphp_unregister_attention +EXPORT_SYMBOL_GPL vmlinux 0x16a324ab usb_set_device_state +EXPORT_SYMBOL_GPL vmlinux 0x16a561f7 devres_add +EXPORT_SYMBOL_GPL vmlinux 0x16c626c5 hwmon_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x16cb44b0 fpstate_init +EXPORT_SYMBOL_GPL vmlinux 0x16d87b6c ata_bmdma_qc_issue +EXPORT_SYMBOL_GPL vmlinux 0x16dc07e8 arizona_clk32k_enable +EXPORT_SYMBOL_GPL vmlinux 0x16dd5ca6 fuse_dev_release +EXPORT_SYMBOL_GPL vmlinux 0x16de3b4e acpi_device_update_power +EXPORT_SYMBOL_GPL vmlinux 0x16deab39 serial8250_request_dma +EXPORT_SYMBOL_GPL vmlinux 0x1702ecf1 inet_csk_route_child_sock +EXPORT_SYMBOL_GPL vmlinux 0x17133666 srcu_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0x172817ee list_lru_walk_node +EXPORT_SYMBOL_GPL vmlinux 0x1734b2d5 xenbus_watch_pathfmt +EXPORT_SYMBOL_GPL vmlinux 0x174202c1 acpi_subsys_resume_early +EXPORT_SYMBOL_GPL vmlinux 0x1753a32f hash_digest_size +EXPORT_SYMBOL_GPL vmlinux 0x17614bf3 apei_resources_sub +EXPORT_SYMBOL_GPL vmlinux 0x177c338d twl_get_version +EXPORT_SYMBOL_GPL vmlinux 0x1789f433 sdev_evt_send +EXPORT_SYMBOL_GPL vmlinux 0x17a92f2e xen_xlate_remap_gfn_array +EXPORT_SYMBOL_GPL vmlinux 0x17bcec9c ata_sff_lost_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x17f13992 sk_clone_lock +EXPORT_SYMBOL_GPL vmlinux 0x18064ee8 ata_wait_register +EXPORT_SYMBOL_GPL vmlinux 0x1853653c btree_alloc +EXPORT_SYMBOL_GPL vmlinux 0x18582826 amd_pmu_disable_virt +EXPORT_SYMBOL_GPL vmlinux 0x1866cec2 ring_buffer_size +EXPORT_SYMBOL_GPL vmlinux 0x186d99b9 rio_release_inb_pwrite +EXPORT_SYMBOL_GPL vmlinux 0x1878f62b edac_err_assert +EXPORT_SYMBOL_GPL vmlinux 0x18a01fdc blocking_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x18be06ba isa_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0x18c343cd dma_buf_attach +EXPORT_SYMBOL_GPL vmlinux 0x18c9b5df i2c_recover_bus +EXPORT_SYMBOL_GPL vmlinux 0x18cec943 virtqueue_get_vring_size +EXPORT_SYMBOL_GPL vmlinux 0x18d39687 shash_ahash_digest +EXPORT_SYMBOL_GPL vmlinux 0x18dd1ef8 blkcg_print_blkgs +EXPORT_SYMBOL_GPL vmlinux 0x18e893b2 bitmap_resize +EXPORT_SYMBOL_GPL vmlinux 0x18f5e50e arch_apei_enable_cmcff +EXPORT_SYMBOL_GPL vmlinux 0x18f83fab gnttab_grant_foreign_access_ref +EXPORT_SYMBOL_GPL vmlinux 0x18f9b2ff kern_mount_data +EXPORT_SYMBOL_GPL vmlinux 0x18fa1d1a pci_generic_config_write32 +EXPORT_SYMBOL_GPL vmlinux 0x1926116b nvdimm_pmem_region_create +EXPORT_SYMBOL_GPL vmlinux 0x193335f3 usb_hc_died +EXPORT_SYMBOL_GPL vmlinux 0x193a575b devm_regmap_init_i2c +EXPORT_SYMBOL_GPL vmlinux 0x193d48e0 trace_current_buffer_unlock_commit +EXPORT_SYMBOL_GPL vmlinux 0x194dd5f5 pkey_algo_name +EXPORT_SYMBOL_GPL vmlinux 0x195d0ff8 ata_timing_compute +EXPORT_SYMBOL_GPL vmlinux 0x1961b3a1 ip6_dst_lookup +EXPORT_SYMBOL_GPL vmlinux 0x1962567b acpi_initialize_hp_context +EXPORT_SYMBOL_GPL vmlinux 0x19654284 sg_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x196614ce hw_breakpoint_restore +EXPORT_SYMBOL_GPL vmlinux 0x1990f8ff pm_qos_update_request +EXPORT_SYMBOL_GPL vmlinux 0x19a304ba usb_disabled +EXPORT_SYMBOL_GPL vmlinux 0x19a622c4 xfrm_output +EXPORT_SYMBOL_GPL vmlinux 0x19a98761 ata_sas_port_destroy +EXPORT_SYMBOL_GPL vmlinux 0x19b0cc1d mmc_app_cmd +EXPORT_SYMBOL_GPL vmlinux 0x19b384a5 hash_algo_name +EXPORT_SYMBOL_GPL vmlinux 0x19ba1e97 sdio_readb +EXPORT_SYMBOL_GPL vmlinux 0x19c96b7d phy_pm_runtime_forbid +EXPORT_SYMBOL_GPL vmlinux 0x19f1c270 mbox_chan_txdone +EXPORT_SYMBOL_GPL vmlinux 0x19f425e4 devm_remove_action +EXPORT_SYMBOL_GPL vmlinux 0x1a081c4d ping_seq_stop +EXPORT_SYMBOL_GPL vmlinux 0x1a1c4082 mod_delayed_work_on +EXPORT_SYMBOL_GPL vmlinux 0x1a472d47 ata_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x1a505b99 dev_pm_qos_add_ancestor_request +EXPORT_SYMBOL_GPL vmlinux 0x1a53917f devm_acpi_dma_controller_register +EXPORT_SYMBOL_GPL vmlinux 0x1a5d059e devm_kstrdup +EXPORT_SYMBOL_GPL vmlinux 0x1a967885 cpufreq_frequency_get_table +EXPORT_SYMBOL_GPL vmlinux 0x1abd8342 unregister_pernet_subsys +EXPORT_SYMBOL_GPL vmlinux 0x1acef7d2 pm_freezing +EXPORT_SYMBOL_GPL vmlinux 0x1aeafb77 clk_register_gpio_gate +EXPORT_SYMBOL_GPL vmlinux 0x1af27ec7 crypto_aead_reqsize +EXPORT_SYMBOL_GPL vmlinux 0x1af3c4b8 dma_get_any_slave_channel +EXPORT_SYMBOL_GPL vmlinux 0x1af96ece ata_pci_bmdma_prepare_host +EXPORT_SYMBOL_GPL vmlinux 0x1b1f2bda speedstep_get_freqs +EXPORT_SYMBOL_GPL vmlinux 0x1b38b3c6 klist_prev +EXPORT_SYMBOL_GPL vmlinux 0x1b4781de max8997_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0x1b52db1c probe_kernel_read +EXPORT_SYMBOL_GPL vmlinux 0x1b54e128 split_page +EXPORT_SYMBOL_GPL vmlinux 0x1b5d83d2 sdio_claim_irq +EXPORT_SYMBOL_GPL vmlinux 0x1b5fb412 blk_queue_bypass_start +EXPORT_SYMBOL_GPL vmlinux 0x1b787ca1 rtc_alarm_irq_enable +EXPORT_SYMBOL_GPL vmlinux 0x1b880b03 sock_diag_check_cookie +EXPORT_SYMBOL_GPL vmlinux 0x1b8822d8 pinctrl_gpio_direction_output +EXPORT_SYMBOL_GPL vmlinux 0x1b9aca3f jprobe_return +EXPORT_SYMBOL_GPL vmlinux 0x1bbe21f7 unregister_kretprobe +EXPORT_SYMBOL_GPL vmlinux 0x1bc5eebe pinctrl_gpio_direction_input +EXPORT_SYMBOL_GPL vmlinux 0x1bd620f7 unregister_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x1c14a241 dma_buf_fd +EXPORT_SYMBOL_GPL vmlinux 0x1c4a2b6a dev_pm_disable_wake_irq +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 0x1c6660c7 btree_merge +EXPORT_SYMBOL_GPL vmlinux 0x1c80d27d btree_geo128 +EXPORT_SYMBOL_GPL vmlinux 0x1c87a811 __round_jiffies_up +EXPORT_SYMBOL_GPL vmlinux 0x1c8cf08b device_property_read_u64_array +EXPORT_SYMBOL_GPL vmlinux 0x1c94d334 sdio_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0x1c9d8ad5 fat_remove_entries +EXPORT_SYMBOL_GPL vmlinux 0x1cae627d PageHuge +EXPORT_SYMBOL_GPL vmlinux 0x1ce7dddd unregister_ftrace_function +EXPORT_SYMBOL_GPL vmlinux 0x1cf50a54 ata_msleep +EXPORT_SYMBOL_GPL vmlinux 0x1d08ac56 usb_hcd_link_urb_to_ep +EXPORT_SYMBOL_GPL vmlinux 0x1d0aba26 ata_do_eh +EXPORT_SYMBOL_GPL vmlinux 0x1d2d6f74 anon_inode_getfile +EXPORT_SYMBOL_GPL vmlinux 0x1d3a64af pm_stay_awake +EXPORT_SYMBOL_GPL vmlinux 0x1d459685 xstate_size +EXPORT_SYMBOL_GPL vmlinux 0x1d48d375 blk_mq_unfreeze_queue +EXPORT_SYMBOL_GPL vmlinux 0x1d52ba11 acpi_dev_gpio_irq_get +EXPORT_SYMBOL_GPL vmlinux 0x1d545d44 wm8350_block_write +EXPORT_SYMBOL_GPL vmlinux 0x1d58ae14 lpddr2_jedec_timings +EXPORT_SYMBOL_GPL vmlinux 0x1d739e1c xen_set_callback_via +EXPORT_SYMBOL_GPL vmlinux 0x1d77b0f8 unix_socket_table +EXPORT_SYMBOL_GPL vmlinux 0x1d7c0168 __ftrace_vprintk +EXPORT_SYMBOL_GPL vmlinux 0x1d7cb586 clk_register_fixed_rate_with_accuracy +EXPORT_SYMBOL_GPL vmlinux 0x1d7ee15b __inet_twsk_hashdance +EXPORT_SYMBOL_GPL vmlinux 0x1d889258 ata_sff_irq_on +EXPORT_SYMBOL_GPL vmlinux 0x1d8c6435 tcp_send_ack +EXPORT_SYMBOL_GPL vmlinux 0x1dab6495 bus_for_each_drv +EXPORT_SYMBOL_GPL vmlinux 0x1dc246ef blk_queue_flush_queueable +EXPORT_SYMBOL_GPL vmlinux 0x1dcd9626 efivar_entry_add +EXPORT_SYMBOL_GPL vmlinux 0x1dd7319b device_show_ulong +EXPORT_SYMBOL_GPL vmlinux 0x1def880e bind_interdomain_evtchn_to_irq +EXPORT_SYMBOL_GPL vmlinux 0x1dff85a2 blkcipher_walk_done +EXPORT_SYMBOL_GPL vmlinux 0x1e0bb7ee bpf_prog_create +EXPORT_SYMBOL_GPL vmlinux 0x1e280201 devm_regulator_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x1e5b03dc pm_qos_add_notifier +EXPORT_SYMBOL_GPL vmlinux 0x1e5be106 wakeup_source_remove +EXPORT_SYMBOL_GPL vmlinux 0x1e62de99 netdev_rx_handler_unregister +EXPORT_SYMBOL_GPL vmlinux 0x1e6c6da1 mmput +EXPORT_SYMBOL_GPL vmlinux 0x1e6ef3b7 xfrm_audit_policy_delete +EXPORT_SYMBOL_GPL vmlinux 0x1e709c09 wm8400_block_read +EXPORT_SYMBOL_GPL vmlinux 0x1e7bbcb3 kernel_restart +EXPORT_SYMBOL_GPL vmlinux 0x1eb9516e round_jiffies_relative +EXPORT_SYMBOL_GPL vmlinux 0x1ebf6c2a pci_power_names +EXPORT_SYMBOL_GPL vmlinux 0x1efc5611 device_property_read_string_array +EXPORT_SYMBOL_GPL vmlinux 0x1f18d347 relay_close +EXPORT_SYMBOL_GPL vmlinux 0x1f2d6abe acpi_register_gsi +EXPORT_SYMBOL_GPL vmlinux 0x1f439cc0 ata_port_desc +EXPORT_SYMBOL_GPL vmlinux 0x1f471bca get_governor_parent_kobj +EXPORT_SYMBOL_GPL vmlinux 0x1f7f6fac register_jprobe +EXPORT_SYMBOL_GPL vmlinux 0x1f8544b8 panic_timeout +EXPORT_SYMBOL_GPL vmlinux 0x1f8db7f9 ring_buffer_overrun_cpu +EXPORT_SYMBOL_GPL vmlinux 0x1fa121b4 regmap_update_bits_check +EXPORT_SYMBOL_GPL vmlinux 0x1fa89ca8 ata_bmdma_irq_clear +EXPORT_SYMBOL_GPL vmlinux 0x1fba08f1 platform_driver_unregister +EXPORT_SYMBOL_GPL vmlinux 0x1fbbe6de __mmc_switch +EXPORT_SYMBOL_GPL vmlinux 0x1fcaa782 scsi_get_vpd_page +EXPORT_SYMBOL_GPL vmlinux 0x1fde16c0 rtnl_af_unregister +EXPORT_SYMBOL_GPL vmlinux 0x1fff811a fat_time_unix2fat +EXPORT_SYMBOL_GPL vmlinux 0x20191f92 transport_remove_device +EXPORT_SYMBOL_GPL vmlinux 0x201e8448 nvdimm_blk_region_create +EXPORT_SYMBOL_GPL vmlinux 0x2024b1db ata_sas_port_stop +EXPORT_SYMBOL_GPL vmlinux 0x204af089 extcon_get_extcon_dev +EXPORT_SYMBOL_GPL vmlinux 0x204e66e6 percpu_ida_free_tags +EXPORT_SYMBOL_GPL vmlinux 0x206cac9a aead_geniv_init +EXPORT_SYMBOL_GPL vmlinux 0x2071fde0 transport_add_device +EXPORT_SYMBOL_GPL vmlinux 0x2097cd47 xenbus_dev_cancel +EXPORT_SYMBOL_GPL vmlinux 0x209ec764 xen_event_channel_op_compat +EXPORT_SYMBOL_GPL vmlinux 0x20aa6f51 cpuidle_enable_device +EXPORT_SYMBOL_GPL vmlinux 0x20c0cd48 wakeup_source_add +EXPORT_SYMBOL_GPL vmlinux 0x20dd7536 fat_build_inode +EXPORT_SYMBOL_GPL vmlinux 0x20f935a0 klist_add_tail +EXPORT_SYMBOL_GPL vmlinux 0x210a388e fuse_dev_operations +EXPORT_SYMBOL_GPL vmlinux 0x211055b2 vring_del_virtqueue +EXPORT_SYMBOL_GPL vmlinux 0x21487820 pingv6_ops +EXPORT_SYMBOL_GPL vmlinux 0x21780967 devm_clk_unregister +EXPORT_SYMBOL_GPL vmlinux 0x2196a725 securityfs_create_file +EXPORT_SYMBOL_GPL vmlinux 0x21a563da clk_get_accuracy +EXPORT_SYMBOL_GPL vmlinux 0x21ac8b77 iommu_group_get_by_id +EXPORT_SYMBOL_GPL vmlinux 0x21acbee1 gpiod_set_raw_array_value +EXPORT_SYMBOL_GPL vmlinux 0x21c73621 xenbus_dev_error +EXPORT_SYMBOL_GPL vmlinux 0x21c8dac1 invalidate_inode_pages2 +EXPORT_SYMBOL_GPL vmlinux 0x21cc4acd rio_mport_read_config_8 +EXPORT_SYMBOL_GPL vmlinux 0x21ce9fa8 devm_add_action +EXPORT_SYMBOL_GPL vmlinux 0x21d1a53f pm_generic_resume_early +EXPORT_SYMBOL_GPL vmlinux 0x21d2a179 crypto_alloc_base +EXPORT_SYMBOL_GPL vmlinux 0x21d3da02 lp8788_write_byte +EXPORT_SYMBOL_GPL vmlinux 0x21db05d5 dma_request_slave_channel_reason +EXPORT_SYMBOL_GPL vmlinux 0x21edb7ca xen_swiotlb_dma_mapping_error +EXPORT_SYMBOL_GPL vmlinux 0x21f55417 rtc_update_irq_enable +EXPORT_SYMBOL_GPL vmlinux 0x221eccd4 dev_coredumpm +EXPORT_SYMBOL_GPL vmlinux 0x2220bd9c wm8350_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x222d5dea regmap_get_reg_stride +EXPORT_SYMBOL_GPL vmlinux 0x222e5336 platform_device_register_full +EXPORT_SYMBOL_GPL vmlinux 0x223df9b4 netlink_remove_tap +EXPORT_SYMBOL_GPL vmlinux 0x2242848b bdev_direct_access +EXPORT_SYMBOL_GPL vmlinux 0x225a90a2 __blkg_prfill_u64 +EXPORT_SYMBOL_GPL vmlinux 0x225d1a61 mbox_request_channel +EXPORT_SYMBOL_GPL vmlinux 0x22717079 rhashtable_walk_init +EXPORT_SYMBOL_GPL vmlinux 0x2271dc81 usb_hcd_check_unlink_urb +EXPORT_SYMBOL_GPL vmlinux 0x2285a670 regmap_exit +EXPORT_SYMBOL_GPL vmlinux 0x2296c00d crypto_attr_u32 +EXPORT_SYMBOL_GPL vmlinux 0x2299ec81 perf_assign_events +EXPORT_SYMBOL_GPL vmlinux 0x22a757bf skb_gso_transport_seglen +EXPORT_SYMBOL_GPL vmlinux 0x22c5e163 tpm_chip_unregister +EXPORT_SYMBOL_GPL vmlinux 0x22d1f4d6 pm_generic_runtime_suspend +EXPORT_SYMBOL_GPL vmlinux 0x22f1fe21 tty_get_pgrp +EXPORT_SYMBOL_GPL vmlinux 0x22f86ffd clk_gate_ops +EXPORT_SYMBOL_GPL vmlinux 0x23048011 __intel_mid_cpu_chip +EXPORT_SYMBOL_GPL vmlinux 0x230bf0bf irq_domain_associate_many +EXPORT_SYMBOL_GPL vmlinux 0x234284c8 sock_diag_unregister_inet_compat +EXPORT_SYMBOL_GPL vmlinux 0x2342ef21 tty_perform_flush +EXPORT_SYMBOL_GPL vmlinux 0x2366a2c0 errata +EXPORT_SYMBOL_GPL vmlinux 0x237dcab0 i2c_unlock_adapter +EXPORT_SYMBOL_GPL vmlinux 0x23864ce7 cpuset_mem_spread_node +EXPORT_SYMBOL_GPL vmlinux 0x2396c7f0 clk_set_parent +EXPORT_SYMBOL_GPL vmlinux 0x23d3271c regmap_field_update_bits +EXPORT_SYMBOL_GPL vmlinux 0x23f9e954 get_kernel_pages +EXPORT_SYMBOL_GPL vmlinux 0x23fcc50a dev_pm_domain_attach +EXPORT_SYMBOL_GPL vmlinux 0x23fe1dad tcp_ca_get_key_by_name +EXPORT_SYMBOL_GPL vmlinux 0x240580a9 xenbus_probe +EXPORT_SYMBOL_GPL vmlinux 0x2406b2d1 key_type_logon +EXPORT_SYMBOL_GPL vmlinux 0x24214bb5 usb_ep0_reinit +EXPORT_SYMBOL_GPL vmlinux 0x2429fefd skb_zerocopy +EXPORT_SYMBOL_GPL vmlinux 0x2445330c sock_diag_save_cookie +EXPORT_SYMBOL_GPL vmlinux 0x24457174 audit_enabled +EXPORT_SYMBOL_GPL vmlinux 0x244dd6d6 crypto_aead_setauthsize +EXPORT_SYMBOL_GPL vmlinux 0x2475f1ef pci_disable_pcie_error_reporting +EXPORT_SYMBOL_GPL vmlinux 0x24774f02 power_supply_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x247ef831 kdb_unregister +EXPORT_SYMBOL_GPL vmlinux 0x24a07b8b acpi_dev_pm_attach +EXPORT_SYMBOL_GPL vmlinux 0x24aac4d9 crypto_aes_expand_key +EXPORT_SYMBOL_GPL vmlinux 0x24c119e0 __tracepoint_attach_device_to_domain +EXPORT_SYMBOL_GPL vmlinux 0x24c7698a xenbus_write +EXPORT_SYMBOL_GPL vmlinux 0x24d81fd9 da903x_update +EXPORT_SYMBOL_GPL vmlinux 0x24eb7e32 leds_list +EXPORT_SYMBOL_GPL vmlinux 0x24f39c39 reset_control_reset +EXPORT_SYMBOL_GPL vmlinux 0x24f45195 usb_wait_anchor_empty_timeout +EXPORT_SYMBOL_GPL vmlinux 0x25304c5c acpi_bus_trim +EXPORT_SYMBOL_GPL vmlinux 0x25355be2 rio_add_device +EXPORT_SYMBOL_GPL vmlinux 0x25372575 fixed_phy_set_link_update +EXPORT_SYMBOL_GPL vmlinux 0x25379e73 clk_set_min_rate +EXPORT_SYMBOL_GPL vmlinux 0x2545c170 unregister_xenbus_watch +EXPORT_SYMBOL_GPL vmlinux 0x25483c26 rio_route_get_entry +EXPORT_SYMBOL_GPL vmlinux 0x2549a003 bd_link_disk_holder +EXPORT_SYMBOL_GPL vmlinux 0x2553c78e ata_host_alloc +EXPORT_SYMBOL_GPL vmlinux 0x25574504 clk_fixed_rate_ops +EXPORT_SYMBOL_GPL vmlinux 0x2571b528 phy_put +EXPORT_SYMBOL_GPL vmlinux 0x25886455 of_pwm_xlate_with_flags +EXPORT_SYMBOL_GPL vmlinux 0x258c65d3 xenbus_dev_suspend +EXPORT_SYMBOL_GPL vmlinux 0x25a255ab gpiod_get_value +EXPORT_SYMBOL_GPL vmlinux 0x25f02c87 xen_p2m_addr +EXPORT_SYMBOL_GPL vmlinux 0x26199a4b adp5520_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x261ba9cb security_inode_create +EXPORT_SYMBOL_GPL vmlinux 0x262f20a8 local_clock +EXPORT_SYMBOL_GPL vmlinux 0x26308a06 usb_acpi_set_power_state +EXPORT_SYMBOL_GPL vmlinux 0x264ae4c6 usb_anchor_resume_wakeups +EXPORT_SYMBOL_GPL vmlinux 0x26520970 vm_memory_committed +EXPORT_SYMBOL_GPL vmlinux 0x266b7638 interval_tree_remove +EXPORT_SYMBOL_GPL vmlinux 0x267c9581 fuse_do_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x2689f070 subsys_dev_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0x26965721 slow_virt_to_phys +EXPORT_SYMBOL_GPL vmlinux 0x269c6fa4 regmap_fields_read +EXPORT_SYMBOL_GPL vmlinux 0x26af9dcd ip_local_out_sk +EXPORT_SYMBOL_GPL vmlinux 0x26b19b14 tty_put_char +EXPORT_SYMBOL_GPL vmlinux 0x26b3c701 __wake_up_sync +EXPORT_SYMBOL_GPL vmlinux 0x26b71fb4 ring_buffer_time_stamp +EXPORT_SYMBOL_GPL vmlinux 0x26c90ea4 scsi_eh_get_sense +EXPORT_SYMBOL_GPL vmlinux 0x274c1f33 acpi_subsys_runtime_resume +EXPORT_SYMBOL_GPL vmlinux 0x274cf5e1 __clk_get_flags +EXPORT_SYMBOL_GPL vmlinux 0x275094f3 fpu__restore +EXPORT_SYMBOL_GPL vmlinux 0x27759fbf cpu_tlbstate +EXPORT_SYMBOL_GPL vmlinux 0x27765a95 ata_eh_thaw_port +EXPORT_SYMBOL_GPL vmlinux 0x27793c95 led_trigger_set_default +EXPORT_SYMBOL_GPL vmlinux 0x27871215 perf_event_release_kernel +EXPORT_SYMBOL_GPL vmlinux 0x2787db00 vbin_printf +EXPORT_SYMBOL_GPL vmlinux 0x279cb985 apei_exec_pre_map_gars +EXPORT_SYMBOL_GPL vmlinux 0x27b7625d led_classdev_resume +EXPORT_SYMBOL_GPL vmlinux 0x27bdaa79 efivars_register +EXPORT_SYMBOL_GPL vmlinux 0x27c1e63f usb_amd_find_chipset_info +EXPORT_SYMBOL_GPL vmlinux 0x27c71099 page_endio +EXPORT_SYMBOL_GPL vmlinux 0x27d5a40f blkg_lookup +EXPORT_SYMBOL_GPL vmlinux 0x27f4869d regulator_set_voltage +EXPORT_SYMBOL_GPL vmlinux 0x27f4f029 ftrace_set_global_filter +EXPORT_SYMBOL_GPL vmlinux 0x27fa66e1 nr_free_buffer_pages +EXPORT_SYMBOL_GPL vmlinux 0x27fb2029 blk_add_request_payload +EXPORT_SYMBOL_GPL vmlinux 0x28007eed devm_extcon_dev_free +EXPORT_SYMBOL_GPL vmlinux 0x280b4768 dmi_kobj +EXPORT_SYMBOL_GPL vmlinux 0x28138d24 regmap_multi_reg_write_bypassed +EXPORT_SYMBOL_GPL vmlinux 0x282cdabc usb_led_activity +EXPORT_SYMBOL_GPL vmlinux 0x283534f2 devm_phy_optional_get +EXPORT_SYMBOL_GPL vmlinux 0x2855b4d8 pci_hp_create_module_link +EXPORT_SYMBOL_GPL vmlinux 0x286c9e86 irq_find_mapping +EXPORT_SYMBOL_GPL vmlinux 0x28762f25 hvc_alloc +EXPORT_SYMBOL_GPL vmlinux 0x287ce6ad devm_spi_register_master +EXPORT_SYMBOL_GPL vmlinux 0x2883b0ea devres_destroy +EXPORT_SYMBOL_GPL vmlinux 0x28a9b7fe ftrace_set_notrace +EXPORT_SYMBOL_GPL vmlinux 0x28b4cfe4 subsys_interface_register +EXPORT_SYMBOL_GPL vmlinux 0x28d3e9e8 ata_host_detach +EXPORT_SYMBOL_GPL vmlinux 0x28e4062e register_wide_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x28e64c64 xen_has_pv_and_legacy_disk_devices +EXPORT_SYMBOL_GPL vmlinux 0x2902d90c __page_file_index +EXPORT_SYMBOL_GPL vmlinux 0x290a8d4c usb_root_hub_lost_power +EXPORT_SYMBOL_GPL vmlinux 0x29130f38 crypto_lookup_aead +EXPORT_SYMBOL_GPL vmlinux 0x29237a03 unix_outq_len +EXPORT_SYMBOL_GPL vmlinux 0x293f073e vrtc_cmos_write +EXPORT_SYMBOL_GPL vmlinux 0x294b29c1 gpiochip_add_pingroup_range +EXPORT_SYMBOL_GPL vmlinux 0x2952ff12 wm5102_spi_regmap +EXPORT_SYMBOL_GPL vmlinux 0x29547fd1 xhci_gen_setup +EXPORT_SYMBOL_GPL vmlinux 0x29914856 crypto_unregister_ahash +EXPORT_SYMBOL_GPL vmlinux 0x29b2326e irq_alloc_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x29b7fc55 ping_init_sock +EXPORT_SYMBOL_GPL vmlinux 0x29dbefdc device_del +EXPORT_SYMBOL_GPL vmlinux 0x2a0ccc07 nvdimm_attribute_group +EXPORT_SYMBOL_GPL vmlinux 0x2a1612e0 sdio_claim_host +EXPORT_SYMBOL_GPL vmlinux 0x2a1ee5e2 ata_pci_device_do_suspend +EXPORT_SYMBOL_GPL vmlinux 0x2a2df6c4 pid_vnr +EXPORT_SYMBOL_GPL vmlinux 0x2a3c8882 rtc_class_open +EXPORT_SYMBOL_GPL vmlinux 0x2a509bb3 spi_unregister_master +EXPORT_SYMBOL_GPL vmlinux 0x2a678a13 __suspend_report_result +EXPORT_SYMBOL_GPL vmlinux 0x2a842af9 rio_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0x2a96c820 sk_attach_filter +EXPORT_SYMBOL_GPL vmlinux 0x2ab088ec tcp_unregister_congestion_control +EXPORT_SYMBOL_GPL vmlinux 0x2af63321 acpi_dev_resource_address_space +EXPORT_SYMBOL_GPL vmlinux 0x2b0a2c08 usb_autopm_get_interface_async +EXPORT_SYMBOL_GPL vmlinux 0x2b165520 tps80031_ext_power_req_config +EXPORT_SYMBOL_GPL vmlinux 0x2b1cbb0e register_trace_event +EXPORT_SYMBOL_GPL vmlinux 0x2b22af82 crypto_aead_type +EXPORT_SYMBOL_GPL vmlinux 0x2b231417 pciserial_init_ports +EXPORT_SYMBOL_GPL vmlinux 0x2b53c0bd sdio_f0_readb +EXPORT_SYMBOL_GPL vmlinux 0x2b67f096 speedstep_get_frequency +EXPORT_SYMBOL_GPL vmlinux 0x2b936c96 crypto_grab_aead +EXPORT_SYMBOL_GPL vmlinux 0x2b952517 clk_has_parent +EXPORT_SYMBOL_GPL vmlinux 0x2ba6630e led_trigger_blink_oneshot +EXPORT_SYMBOL_GPL vmlinux 0x2bb9ee48 flush_kthread_worker +EXPORT_SYMBOL_GPL vmlinux 0x2bd7d629 rtc_class_close +EXPORT_SYMBOL_GPL vmlinux 0x2be3252c scsi_target_block +EXPORT_SYMBOL_GPL vmlinux 0x2bfa985e nd_cmd_dimm_desc +EXPORT_SYMBOL_GPL vmlinux 0x2c133868 bit_wait_io_timeout +EXPORT_SYMBOL_GPL vmlinux 0x2c1dfca1 usb_free_urb +EXPORT_SYMBOL_GPL vmlinux 0x2c208607 power_supply_is_system_supplied +EXPORT_SYMBOL_GPL vmlinux 0x2c3054f9 net_inc_ingress_queue +EXPORT_SYMBOL_GPL vmlinux 0x2c5cff82 ip_build_and_send_pkt +EXPORT_SYMBOL_GPL vmlinux 0x2c630bd1 usb_show_dynids +EXPORT_SYMBOL_GPL vmlinux 0x2c6a0410 xen_set_domain_pte +EXPORT_SYMBOL_GPL vmlinux 0x2c7d9c64 xen_store_interface +EXPORT_SYMBOL_GPL vmlinux 0x2c7db649 irq_dispose_mapping +EXPORT_SYMBOL_GPL vmlinux 0x2c9d2e71 pm_runtime_enable +EXPORT_SYMBOL_GPL vmlinux 0x2ca9bcd1 regmap_parse_val +EXPORT_SYMBOL_GPL vmlinux 0x2caf4d7c sdhci_pci_o2_resume +EXPORT_SYMBOL_GPL vmlinux 0x2cc27ea3 devm_hwrng_register +EXPORT_SYMBOL_GPL vmlinux 0x2cd38b3b alarm_try_to_cancel +EXPORT_SYMBOL_GPL vmlinux 0x2cdfc321 pci_reset_slot +EXPORT_SYMBOL_GPL vmlinux 0x2ce98559 kcrypto_wq +EXPORT_SYMBOL_GPL vmlinux 0x2cea32ee unregister_oldmem_pfn_is_ram +EXPORT_SYMBOL_GPL vmlinux 0x2d09d2ec ata_scsi_simulate +EXPORT_SYMBOL_GPL vmlinux 0x2d1b02d2 usermodehelper_read_lock_wait +EXPORT_SYMBOL_GPL vmlinux 0x2d2319fb regcache_sync +EXPORT_SYMBOL_GPL vmlinux 0x2d41e6f5 __trace_puts +EXPORT_SYMBOL_GPL vmlinux 0x2d52a89c blk_mq_free_hctx_request +EXPORT_SYMBOL_GPL vmlinux 0x2d59c954 edac_handlers +EXPORT_SYMBOL_GPL vmlinux 0x2d6bb35d mnt_clone_write +EXPORT_SYMBOL_GPL vmlinux 0x2d807427 __netpoll_setup +EXPORT_SYMBOL_GPL vmlinux 0x2d83e5dd tty_encode_baud_rate +EXPORT_SYMBOL_GPL vmlinux 0x2d938be3 devfreq_event_remove_edev +EXPORT_SYMBOL_GPL vmlinux 0x2d9f2ce3 sched_clock_idle_wakeup_event +EXPORT_SYMBOL_GPL vmlinux 0x2de9cf57 kobject_create_and_add +EXPORT_SYMBOL_GPL vmlinux 0x2e13df4b crypto_init_shash_spawn +EXPORT_SYMBOL_GPL vmlinux 0x2e2360b1 ftrace_set_global_notrace +EXPORT_SYMBOL_GPL vmlinux 0x2e2f1740 ring_buffer_record_disable_cpu +EXPORT_SYMBOL_GPL vmlinux 0x2e33e19d power_supply_powers +EXPORT_SYMBOL_GPL vmlinux 0x2e6678de list_lru_walk_one +EXPORT_SYMBOL_GPL vmlinux 0x2e74f902 __inet_hash_nolisten +EXPORT_SYMBOL_GPL vmlinux 0x2e8b7ed8 bio_associate_current +EXPORT_SYMBOL_GPL vmlinux 0x2eb40597 led_trigger_unregister +EXPORT_SYMBOL_GPL vmlinux 0x2eb6fda8 rio_unmap_inb_region +EXPORT_SYMBOL_GPL vmlinux 0x2ebe3135 cpu_is_hotpluggable +EXPORT_SYMBOL_GPL vmlinux 0x2eca5a14 preempt_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0x2ece75de device_set_wakeup_capable +EXPORT_SYMBOL_GPL vmlinux 0x2ed16a69 usb_hcd_pci_pm_ops +EXPORT_SYMBOL_GPL vmlinux 0x2ed7bafc rhashtable_insert_slow +EXPORT_SYMBOL_GPL vmlinux 0x2f0d9053 usb_otg_state_string +EXPORT_SYMBOL_GPL vmlinux 0x2f0dff3b ehci_resume +EXPORT_SYMBOL_GPL vmlinux 0x2f17d9c8 __netpoll_free_async +EXPORT_SYMBOL_GPL vmlinux 0x2f1a32d7 of_css +EXPORT_SYMBOL_GPL vmlinux 0x2f1af130 usb_store_new_id +EXPORT_SYMBOL_GPL vmlinux 0x2f200910 fat_attach +EXPORT_SYMBOL_GPL vmlinux 0x2f4058e4 efivar_entry_set +EXPORT_SYMBOL_GPL vmlinux 0x2f4113a2 dcookie_register +EXPORT_SYMBOL_GPL vmlinux 0x2f457406 pm_generic_thaw +EXPORT_SYMBOL_GPL vmlinux 0x2f492430 kernfs_notify +EXPORT_SYMBOL_GPL vmlinux 0x2f64415f unregister_acpi_hed_notifier +EXPORT_SYMBOL_GPL vmlinux 0x2f740bbb device_store_bool +EXPORT_SYMBOL_GPL vmlinux 0x2f7d8efc vfs_removexattr +EXPORT_SYMBOL_GPL vmlinux 0x2f8e1e62 usb_hcd_pci_probe +EXPORT_SYMBOL_GPL vmlinux 0x2f90da7e trace_seq_putmem +EXPORT_SYMBOL_GPL vmlinux 0x2f97fcfe ata_pci_device_resume +EXPORT_SYMBOL_GPL vmlinux 0x2fd8cba9 freeze_wake +EXPORT_SYMBOL_GPL vmlinux 0x301160c5 gpiod_set_raw_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x30145beb pinctrl_select_state +EXPORT_SYMBOL_GPL vmlinux 0x30400c62 register_asymmetric_key_parser +EXPORT_SYMBOL_GPL vmlinux 0x304e7da9 virtqueue_enable_cb_prepare +EXPORT_SYMBOL_GPL vmlinux 0x30635782 cpu_has_xfeatures +EXPORT_SYMBOL_GPL vmlinux 0x30a4f4ca bstr_printf +EXPORT_SYMBOL_GPL vmlinux 0x30aca79f ata_cable_40wire +EXPORT_SYMBOL_GPL vmlinux 0x30c2e486 debugfs_create_file_size +EXPORT_SYMBOL_GPL vmlinux 0x30ceade4 dm_internal_resume +EXPORT_SYMBOL_GPL vmlinux 0x30f0036a inet_hash +EXPORT_SYMBOL_GPL vmlinux 0x30f02768 usb_hub_claim_port +EXPORT_SYMBOL_GPL vmlinux 0x30fe446f vfs_listxattr +EXPORT_SYMBOL_GPL vmlinux 0x3107f690 md_allow_write +EXPORT_SYMBOL_GPL vmlinux 0x3109b751 cpu_clock +EXPORT_SYMBOL_GPL vmlinux 0x311124c8 srcu_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0x31128b8e hv_remove_kexec_handler +EXPORT_SYMBOL_GPL vmlinux 0x31266931 con_debug_leave +EXPORT_SYMBOL_GPL vmlinux 0x3130d69e gpiochip_unlock_as_irq +EXPORT_SYMBOL_GPL vmlinux 0x316cee70 subsys_dev_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x31972706 driver_remove_file +EXPORT_SYMBOL_GPL vmlinux 0x31a43232 clear_foreign_p2m_mapping +EXPORT_SYMBOL_GPL vmlinux 0x31bc68aa pm_runtime_no_callbacks +EXPORT_SYMBOL_GPL vmlinux 0x31c0c2d1 dm_put +EXPORT_SYMBOL_GPL vmlinux 0x31c6ed05 pci_check_and_unmask_intx +EXPORT_SYMBOL_GPL vmlinux 0x31c7970f pciserial_suspend_ports +EXPORT_SYMBOL_GPL vmlinux 0x31d58d73 ping_seq_start +EXPORT_SYMBOL_GPL vmlinux 0x31e6ad05 blkg_stat_recursive_sum +EXPORT_SYMBOL_GPL vmlinux 0x3201a064 iommu_domain_alloc +EXPORT_SYMBOL_GPL vmlinux 0x322f3511 __tracepoint_detach_device_from_domain +EXPORT_SYMBOL_GPL vmlinux 0x323d9050 scsi_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x32486133 crypto_ablkcipher_type +EXPORT_SYMBOL_GPL vmlinux 0x32557712 init_srcu_struct +EXPORT_SYMBOL_GPL vmlinux 0x325e677c gnttab_grant_foreign_transfer_ref +EXPORT_SYMBOL_GPL vmlinux 0x3286857c crypto_register_instance +EXPORT_SYMBOL_GPL vmlinux 0x328995b5 tracing_generic_entry_update +EXPORT_SYMBOL_GPL vmlinux 0x32924a4d scatterwalk_copychunks +EXPORT_SYMBOL_GPL vmlinux 0x32b2e626 devm_regmap_init_mmio_clk +EXPORT_SYMBOL_GPL vmlinux 0x32bc0fcf preempt_notifier_dec +EXPORT_SYMBOL_GPL vmlinux 0x32c3cb4e class_compat_register +EXPORT_SYMBOL_GPL vmlinux 0x32d49456 napi_hash_del +EXPORT_SYMBOL_GPL vmlinux 0x330877ff gpiod_get_raw_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x330aa566 ata_link_online +EXPORT_SYMBOL_GPL vmlinux 0x333228ec intel_msic_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x33352744 dev_pm_get_subsys_data +EXPORT_SYMBOL_GPL vmlinux 0x33443e76 xfrm_output_resume +EXPORT_SYMBOL_GPL vmlinux 0x335c570f enable_percpu_irq +EXPORT_SYMBOL_GPL vmlinux 0x335fc03b clk_gpio_gate_ops +EXPORT_SYMBOL_GPL vmlinux 0x335fd8b4 ipv6_opt_accepted +EXPORT_SYMBOL_GPL vmlinux 0x336154ca rcutorture_record_test_transition +EXPORT_SYMBOL_GPL vmlinux 0x3362b03c xen_p2m_size +EXPORT_SYMBOL_GPL vmlinux 0x33655159 xen_pcpu_hotplug_sync +EXPORT_SYMBOL_GPL vmlinux 0x337a1f4c xenbus_unmap_ring +EXPORT_SYMBOL_GPL vmlinux 0x337a76e4 watchdog_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0x337ce9f3 mnt_want_write +EXPORT_SYMBOL_GPL vmlinux 0x337f92d4 dma_buf_unmap_attachment +EXPORT_SYMBOL_GPL vmlinux 0x33b60e02 regulator_list_voltage +EXPORT_SYMBOL_GPL vmlinux 0x33b96e5d apei_exec_write_register +EXPORT_SYMBOL_GPL vmlinux 0x33dbb451 ata_acpi_gtm +EXPORT_SYMBOL_GPL vmlinux 0x34017a6e ata_pci_sff_prepare_host +EXPORT_SYMBOL_GPL vmlinux 0x3413a54b rdev_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x34331d5e nd_fletcher64 +EXPORT_SYMBOL_GPL vmlinux 0x343eca5a spi_master_resume +EXPORT_SYMBOL_GPL vmlinux 0x34686c8b tty_buffer_request_room +EXPORT_SYMBOL_GPL vmlinux 0x346d5ce7 __hvc_resize +EXPORT_SYMBOL_GPL vmlinux 0x346fb1c3 debugfs_create_dir +EXPORT_SYMBOL_GPL vmlinux 0x347682ce snmp_fold_field64 +EXPORT_SYMBOL_GPL vmlinux 0x347fd4b3 eventfd_ctx_get +EXPORT_SYMBOL_GPL vmlinux 0x3480ff44 pinctrl_force_sleep +EXPORT_SYMBOL_GPL vmlinux 0x34971695 crypto_register_akcipher +EXPORT_SYMBOL_GPL vmlinux 0x34ac50a4 visitorl +EXPORT_SYMBOL_GPL vmlinux 0x34e71daa dax_truncate_page +EXPORT_SYMBOL_GPL vmlinux 0x34f21d10 ata_scsi_queuecmd +EXPORT_SYMBOL_GPL vmlinux 0x35176301 rcu_batches_completed_sched +EXPORT_SYMBOL_GPL vmlinux 0x351af025 xen_unregister_device_domain_owner +EXPORT_SYMBOL_GPL vmlinux 0x352650ee gnttab_batch_map +EXPORT_SYMBOL_GPL vmlinux 0x3537deb3 inet_csk_route_req +EXPORT_SYMBOL_GPL vmlinux 0x35495625 regulator_set_bypass_regmap +EXPORT_SYMBOL_GPL vmlinux 0x355e5106 pwm_can_sleep +EXPORT_SYMBOL_GPL vmlinux 0x356b9761 dma_buf_get +EXPORT_SYMBOL_GPL vmlinux 0x356d5d56 crypto_alg_sem +EXPORT_SYMBOL_GPL vmlinux 0x3581f995 enable_kprobe +EXPORT_SYMBOL_GPL vmlinux 0x358c41ea regulator_list_voltage_table +EXPORT_SYMBOL_GPL vmlinux 0x358ff60f twl_get_hfclk_rate +EXPORT_SYMBOL_GPL vmlinux 0x35910f72 tcp_orphan_count +EXPORT_SYMBOL_GPL vmlinux 0x35dcd1f7 trace_seq_vprintf +EXPORT_SYMBOL_GPL vmlinux 0x35e2b39e register_mce_write_callback +EXPORT_SYMBOL_GPL vmlinux 0x35f10f43 nfq_ct_nat_hook +EXPORT_SYMBOL_GPL vmlinux 0x36075bb5 iommu_group_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x360afb68 shash_free_instance +EXPORT_SYMBOL_GPL vmlinux 0x361e2bcc save_stack_trace +EXPORT_SYMBOL_GPL vmlinux 0x36264ba8 __rt_mutex_init +EXPORT_SYMBOL_GPL vmlinux 0x3635f19b blk_insert_cloned_request +EXPORT_SYMBOL_GPL vmlinux 0x3658f442 gpiod_set_value +EXPORT_SYMBOL_GPL vmlinux 0x3671ec05 bus_rescan_devices +EXPORT_SYMBOL_GPL vmlinux 0x3679d902 tps6586x_writes +EXPORT_SYMBOL_GPL vmlinux 0x36909835 regmap_add_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0x36927fe7 trace_event_buffer_commit +EXPORT_SYMBOL_GPL vmlinux 0x369fcd70 tracing_snapshot +EXPORT_SYMBOL_GPL vmlinux 0x36ab712d cm_notify_event +EXPORT_SYMBOL_GPL vmlinux 0x36ad3efe param_ops_bool_enable_only +EXPORT_SYMBOL_GPL vmlinux 0x36b5497e intel_iommu_enabled +EXPORT_SYMBOL_GPL vmlinux 0x36ba2551 intel_scu_devices_destroy +EXPORT_SYMBOL_GPL vmlinux 0x36bda7b0 cpuidle_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0x36dab97f trace_clock_jiffies +EXPORT_SYMBOL_GPL vmlinux 0x36eec80a dm_get_table_device +EXPORT_SYMBOL_GPL vmlinux 0x3709a2c3 skb_complete_wifi_ack +EXPORT_SYMBOL_GPL vmlinux 0x370b188c ata_scsi_port_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x3720e629 dma_buf_end_cpu_access +EXPORT_SYMBOL_GPL vmlinux 0x373dba90 pci_stop_root_bus +EXPORT_SYMBOL_GPL vmlinux 0x3761f94e usb_hcd_poll_rh_status +EXPORT_SYMBOL_GPL vmlinux 0x377ba4c8 is_skb_forwardable +EXPORT_SYMBOL_GPL vmlinux 0x37934931 sysfs_remove_file_from_group +EXPORT_SYMBOL_GPL vmlinux 0x379a1618 thermal_zone_get_zone_by_name +EXPORT_SYMBOL_GPL vmlinux 0x379e2ef5 blkcipher_walk_phys +EXPORT_SYMBOL_GPL vmlinux 0x379e7d72 __clocksource_update_freq_scale +EXPORT_SYMBOL_GPL vmlinux 0x37afef98 module_mutex +EXPORT_SYMBOL_GPL vmlinux 0x37bb450b ata_sas_port_resume +EXPORT_SYMBOL_GPL vmlinux 0x37d00041 xenbus_unmap_ring_vfree +EXPORT_SYMBOL_GPL vmlinux 0x37d2612b hwrng_register +EXPORT_SYMBOL_GPL vmlinux 0x37de662b devm_extcon_dev_unregister +EXPORT_SYMBOL_GPL vmlinux 0x37f0a1a5 cpci_hp_unregister_controller +EXPORT_SYMBOL_GPL vmlinux 0x37fd6ee8 irq_set_default_host +EXPORT_SYMBOL_GPL vmlinux 0x380d635f perf_pmu_migrate_context +EXPORT_SYMBOL_GPL vmlinux 0x381528cb usb_submit_urb +EXPORT_SYMBOL_GPL vmlinux 0x383f9882 blk_trace_remove +EXPORT_SYMBOL_GPL vmlinux 0x3860d8ce __mmu_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x38722f80 kernel_fpu_end +EXPORT_SYMBOL_GPL vmlinux 0x387e90e4 pinctrl_pm_select_idle_state +EXPORT_SYMBOL_GPL vmlinux 0x3888f8f5 dev_pm_put_subsys_data +EXPORT_SYMBOL_GPL vmlinux 0x38a9c2c7 input_ff_effect_from_user +EXPORT_SYMBOL_GPL vmlinux 0x38aa0b25 transport_setup_device +EXPORT_SYMBOL_GPL vmlinux 0x38cd94f6 spi_get_next_queued_message +EXPORT_SYMBOL_GPL vmlinux 0x38d182f9 efivar_entry_delete +EXPORT_SYMBOL_GPL vmlinux 0x38e5bc5a clk_set_rate_range +EXPORT_SYMBOL_GPL vmlinux 0x390337ea sysfs_unmerge_group +EXPORT_SYMBOL_GPL vmlinux 0x3904444d syscon_regmap_lookup_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0x39096b0e rio_unregister_scan +EXPORT_SYMBOL_GPL vmlinux 0x39462ee3 usb_hcd_map_urb_for_dma +EXPORT_SYMBOL_GPL vmlinux 0x395e5f5f page_cache_async_readahead +EXPORT_SYMBOL_GPL vmlinux 0x397aa2d9 usb_sg_init +EXPORT_SYMBOL_GPL vmlinux 0x39ca07cc maxim_charger_calc_reg_current +EXPORT_SYMBOL_GPL vmlinux 0x39e61495 nf_logger_request_module +EXPORT_SYMBOL_GPL vmlinux 0x39f9c7a6 nd_blk_region_set_provider_data +EXPORT_SYMBOL_GPL vmlinux 0x3a013e0b iommu_unmap +EXPORT_SYMBOL_GPL vmlinux 0x3a26ed11 sched_clock +EXPORT_SYMBOL_GPL vmlinux 0x3a37ce81 hrtimer_try_to_cancel +EXPORT_SYMBOL_GPL vmlinux 0x3a3fc5e2 set_online_page_callback +EXPORT_SYMBOL_GPL vmlinux 0x3a490857 usb_hub_release_port +EXPORT_SYMBOL_GPL vmlinux 0x3a4a5847 debugfs_remove_recursive +EXPORT_SYMBOL_GPL vmlinux 0x3a4d2d5e find_module +EXPORT_SYMBOL_GPL vmlinux 0x3a4f6a32 ata_sff_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x3a536bd7 ring_buffer_read_finish +EXPORT_SYMBOL_GPL vmlinux 0x3a559a08 bus_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x3a639a66 relay_subbufs_consumed +EXPORT_SYMBOL_GPL vmlinux 0x3a7cc8d2 perf_event_create_kernel_counter +EXPORT_SYMBOL_GPL vmlinux 0x3a7d80f9 xen_max_p2m_pfn +EXPORT_SYMBOL_GPL vmlinux 0x3a82ae41 devfreq_event_get_edev_count +EXPORT_SYMBOL_GPL vmlinux 0x3a927111 hrtimer_cancel +EXPORT_SYMBOL_GPL vmlinux 0x3a9be019 asymmetric_key_id_partial +EXPORT_SYMBOL_GPL vmlinux 0x3aaed18c ata_sff_tf_read +EXPORT_SYMBOL_GPL vmlinux 0x3acdf325 twl4030_audio_enable_resource +EXPORT_SYMBOL_GPL vmlinux 0x3ad97c59 fuse_request_alloc +EXPORT_SYMBOL_GPL vmlinux 0x3b320df9 pm_generic_restore_noirq +EXPORT_SYMBOL_GPL vmlinux 0x3b40e47e virtqueue_detach_unused_buf +EXPORT_SYMBOL_GPL vmlinux 0x3b4341eb fuse_request_send +EXPORT_SYMBOL_GPL vmlinux 0x3b45b6e0 clockevent_delta2ns +EXPORT_SYMBOL_GPL vmlinux 0x3b4774a2 fib_rules_lookup +EXPORT_SYMBOL_GPL vmlinux 0x3b7145bb apei_exec_read_register_value +EXPORT_SYMBOL_GPL vmlinux 0x3bba6b42 ata_sas_port_alloc +EXPORT_SYMBOL_GPL vmlinux 0x3bd04952 power_supply_external_power_changed +EXPORT_SYMBOL_GPL vmlinux 0x3be586c8 devm_of_phy_get +EXPORT_SYMBOL_GPL vmlinux 0x3be90e03 ata_dev_pair +EXPORT_SYMBOL_GPL vmlinux 0x3c11636c class_interface_unregister +EXPORT_SYMBOL_GPL vmlinux 0x3c253ea1 sdio_readw +EXPORT_SYMBOL_GPL vmlinux 0x3c268ede print_context_stack_bp +EXPORT_SYMBOL_GPL vmlinux 0x3c3d2116 sysfs_chmod_file +EXPORT_SYMBOL_GPL vmlinux 0x3c5110f4 pci_hp_add_bridge +EXPORT_SYMBOL_GPL vmlinux 0x3c9390db pci_vpd_find_tag +EXPORT_SYMBOL_GPL vmlinux 0x3c93ea25 trace_seq_printf +EXPORT_SYMBOL_GPL vmlinux 0x3c96dc02 ata_sff_port_intr +EXPORT_SYMBOL_GPL vmlinux 0x3cad7863 tracepoint_probe_register +EXPORT_SYMBOL_GPL vmlinux 0x3cd06035 add_input_randomness +EXPORT_SYMBOL_GPL vmlinux 0x3d05dff6 spi_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x3d388324 dpm_resume_end +EXPORT_SYMBOL_GPL vmlinux 0x3d6d0d58 wm5110_revd_irq +EXPORT_SYMBOL_GPL vmlinux 0x3d7ea99a gnttab_grant_foreign_transfer +EXPORT_SYMBOL_GPL vmlinux 0x3da43d61 max8997_write_reg +EXPORT_SYMBOL_GPL vmlinux 0x3dc08541 thermal_zone_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x3dc916b6 crypto_fl_tab +EXPORT_SYMBOL_GPL vmlinux 0x3dd26b44 regulator_count_voltages +EXPORT_SYMBOL_GPL vmlinux 0x3dd4d3a7 bprintf +EXPORT_SYMBOL_GPL vmlinux 0x3dd8181e __clk_get_parent +EXPORT_SYMBOL_GPL vmlinux 0x3de9cae1 crypto_remove_final +EXPORT_SYMBOL_GPL vmlinux 0x3deda8dc class_dev_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0x3e0b6329 vfs_cancel_lock +EXPORT_SYMBOL_GPL vmlinux 0x3e134263 pci_disable_rom +EXPORT_SYMBOL_GPL vmlinux 0x3e37b656 bpf_prog_put +EXPORT_SYMBOL_GPL vmlinux 0x3e42a962 blk_rq_unprep_clone +EXPORT_SYMBOL_GPL vmlinux 0x3e54b244 btree_lookup +EXPORT_SYMBOL_GPL vmlinux 0x3e58baf1 find_symbol +EXPORT_SYMBOL_GPL vmlinux 0x3e5e1937 rcu_batches_started_sched +EXPORT_SYMBOL_GPL vmlinux 0x3e7080cb mpi_read_from_buffer +EXPORT_SYMBOL_GPL vmlinux 0x3e71de1d raw_seq_open +EXPORT_SYMBOL_GPL vmlinux 0x3e757637 cpu_bit_bitmap +EXPORT_SYMBOL_GPL vmlinux 0x3e94e57a __srcu_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x3ea5196d apei_osc_setup +EXPORT_SYMBOL_GPL vmlinux 0x3eb217b4 i2c_add_numbered_adapter +EXPORT_SYMBOL_GPL vmlinux 0x3ed42181 kernfs_put +EXPORT_SYMBOL_GPL vmlinux 0x3ede2364 class_dev_iter_next +EXPORT_SYMBOL_GPL vmlinux 0x3efb35c9 get_online_cpus +EXPORT_SYMBOL_GPL vmlinux 0x3f04f6b1 crypto_unregister_shashes +EXPORT_SYMBOL_GPL vmlinux 0x3f229c4c oops_begin +EXPORT_SYMBOL_GPL vmlinux 0x3f3168c1 shmem_add_seals +EXPORT_SYMBOL_GPL vmlinux 0x3f41f05f ata_bmdma_post_internal_cmd +EXPORT_SYMBOL_GPL vmlinux 0x3f53bbe1 sock_update_netprioidx +EXPORT_SYMBOL_GPL vmlinux 0x3f75bdde __trace_note_message +EXPORT_SYMBOL_GPL vmlinux 0x3f77c3c4 blk_trace_startstop +EXPORT_SYMBOL_GPL vmlinux 0x3f80de19 skb_to_sgvec +EXPORT_SYMBOL_GPL vmlinux 0x3f84d4c9 gnttab_release_grant_reference +EXPORT_SYMBOL_GPL vmlinux 0x3fa5af9c nd_cmd_bus_desc +EXPORT_SYMBOL_GPL vmlinux 0x3fc41569 __xenbus_register_backend +EXPORT_SYMBOL_GPL vmlinux 0x3fca492e sysfs_remove_file_ns +EXPORT_SYMBOL_GPL vmlinux 0x3fce4930 pci_enable_sriov +EXPORT_SYMBOL_GPL vmlinux 0x3fd6bc75 uprobe_unregister +EXPORT_SYMBOL_GPL vmlinux 0x3fda9c65 devm_devfreq_event_remove_edev +EXPORT_SYMBOL_GPL vmlinux 0x3fddc193 ip6_push_pending_frames +EXPORT_SYMBOL_GPL vmlinux 0x3fe721e2 devm_kmalloc +EXPORT_SYMBOL_GPL vmlinux 0x4002b936 regulator_get_voltage_sel_regmap +EXPORT_SYMBOL_GPL vmlinux 0x400a024b acpi_scan_lock_release +EXPORT_SYMBOL_GPL vmlinux 0x400e05dd anon_transport_class_unregister +EXPORT_SYMBOL_GPL vmlinux 0x4011efcd ipv4_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x403f9529 gpio_request_one +EXPORT_SYMBOL_GPL vmlinux 0x4042d9c0 crypto_dequeue_request +EXPORT_SYMBOL_GPL vmlinux 0x4045c494 filter_match_preds +EXPORT_SYMBOL_GPL vmlinux 0x4065d168 pm_print_active_wakeup_sources +EXPORT_SYMBOL_GPL vmlinux 0x406c4cb1 hrtimer_resolution +EXPORT_SYMBOL_GPL vmlinux 0x407c389b tty_register_device_attr +EXPORT_SYMBOL_GPL vmlinux 0x40a9fc4b tps65912_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x40af0dec ata_xfer_mode2mask +EXPORT_SYMBOL_GPL vmlinux 0x40d46b21 crypto_ft_tab +EXPORT_SYMBOL_GPL vmlinux 0x40ec3b88 xhci_init_driver +EXPORT_SYMBOL_GPL vmlinux 0x40eedc4b __remove_pages +EXPORT_SYMBOL_GPL vmlinux 0x40f0683e reset_control_put +EXPORT_SYMBOL_GPL vmlinux 0x40fc1c01 wm8400_reset_codec_reg_cache +EXPORT_SYMBOL_GPL vmlinux 0x41058dab rio_mport_get_feature +EXPORT_SYMBOL_GPL vmlinux 0x411cfff1 ata_eh_freeze_port +EXPORT_SYMBOL_GPL vmlinux 0x4123f83e thermal_cooling_device_register +EXPORT_SYMBOL_GPL vmlinux 0x412836f2 ohci_hub_status_data +EXPORT_SYMBOL_GPL vmlinux 0x4137ad1b usb_acpi_power_manageable +EXPORT_SYMBOL_GPL vmlinux 0x414142af usb_init_urb +EXPORT_SYMBOL_GPL vmlinux 0x414b8a39 ata_pci_bmdma_init_one +EXPORT_SYMBOL_GPL vmlinux 0x4168c737 tty_ldisc_ref +EXPORT_SYMBOL_GPL vmlinux 0x417028c7 usb_alloc_dev +EXPORT_SYMBOL_GPL vmlinux 0x41814cb8 dirty_writeback_interval +EXPORT_SYMBOL_GPL vmlinux 0x41816f97 evm_verifyxattr +EXPORT_SYMBOL_GPL vmlinux 0x419e30cd serial8250_handle_irq +EXPORT_SYMBOL_GPL vmlinux 0x41b361e1 crypto_unregister_algs +EXPORT_SYMBOL_GPL vmlinux 0x41b66323 crypto_nivaead_type +EXPORT_SYMBOL_GPL vmlinux 0x41cb39c7 regulator_list_voltage_linear_range +EXPORT_SYMBOL_GPL vmlinux 0x41f46ba9 power_supply_get_property +EXPORT_SYMBOL_GPL vmlinux 0x4205ad24 cancel_work_sync +EXPORT_SYMBOL_GPL vmlinux 0x42085d52 handle_fasteoi_irq +EXPORT_SYMBOL_GPL vmlinux 0x420f9917 __ata_ehi_push_desc +EXPORT_SYMBOL_GPL vmlinux 0x4213a51a efivar_entry_set_safe +EXPORT_SYMBOL_GPL vmlinux 0x422085fd devm_regulator_get_exclusive +EXPORT_SYMBOL_GPL vmlinux 0x4239eb97 tcp_twsk_unique +EXPORT_SYMBOL_GPL vmlinux 0x423ed03d tps6586x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x42425328 gen_pool_size +EXPORT_SYMBOL_GPL vmlinux 0x424acc6d scatterwalk_done +EXPORT_SYMBOL_GPL vmlinux 0x424e9547 pwm_get_chip_data +EXPORT_SYMBOL_GPL vmlinux 0x425679ad pinctrl_utils_reserve_map +EXPORT_SYMBOL_GPL vmlinux 0x4262ea35 bio_clone_mddev +EXPORT_SYMBOL_GPL vmlinux 0x42718cd3 trace_event_buffer_reserve +EXPORT_SYMBOL_GPL vmlinux 0x427e63b4 regmap_init_i2c +EXPORT_SYMBOL_GPL vmlinux 0x42825ce2 rcu_scheduler_active +EXPORT_SYMBOL_GPL vmlinux 0x429748ae gen_pool_get +EXPORT_SYMBOL_GPL vmlinux 0x42a039e4 irq_domain_simple_ops +EXPORT_SYMBOL_GPL vmlinux 0x42baf33e irq_gc_ack_set_bit +EXPORT_SYMBOL_GPL vmlinux 0x42c263df wakeup_source_destroy +EXPORT_SYMBOL_GPL vmlinux 0x42c989ff iomap_atomic_prot_pfn +EXPORT_SYMBOL_GPL vmlinux 0x42f854d7 dma_buf_kmap +EXPORT_SYMBOL_GPL vmlinux 0x4305d66a ata_sff_hsm_move +EXPORT_SYMBOL_GPL vmlinux 0x4312ea8c vfs_setlease +EXPORT_SYMBOL_GPL vmlinux 0x431bf93c wm5110_irq +EXPORT_SYMBOL_GPL vmlinux 0x4340f1a4 sched_setscheduler +EXPORT_SYMBOL_GPL vmlinux 0x4344abdb page_cache_sync_readahead +EXPORT_SYMBOL_GPL vmlinux 0x43619e1a scatterwalk_ffwd +EXPORT_SYMBOL_GPL vmlinux 0x4388280a acpi_dev_get_property +EXPORT_SYMBOL_GPL vmlinux 0x438d13e7 driver_create_file +EXPORT_SYMBOL_GPL vmlinux 0x4395953e usb_kill_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x4395d53d sata_async_notification +EXPORT_SYMBOL_GPL vmlinux 0x43a53735 __alloc_workqueue_key +EXPORT_SYMBOL_GPL vmlinux 0x43c2fbf0 inet6_csk_reqsk_queue_hash_add +EXPORT_SYMBOL_GPL vmlinux 0x43c52f9b spi_finalize_current_message +EXPORT_SYMBOL_GPL vmlinux 0x43f56e82 ata_xfer_mode2shift +EXPORT_SYMBOL_GPL vmlinux 0x43f81957 clk_round_rate +EXPORT_SYMBOL_GPL vmlinux 0x43fd2d73 pm_generic_poweroff +EXPORT_SYMBOL_GPL vmlinux 0x44005716 led_classdev_unregister +EXPORT_SYMBOL_GPL vmlinux 0x440fa04a regulator_bulk_force_disable +EXPORT_SYMBOL_GPL vmlinux 0x4419b0ff get_task_comm +EXPORT_SYMBOL_GPL vmlinux 0x441aa073 pci_cfg_access_lock +EXPORT_SYMBOL_GPL vmlinux 0x441fa356 irq_ts_save +EXPORT_SYMBOL_GPL vmlinux 0x442a14ed inode_sb_list_add +EXPORT_SYMBOL_GPL vmlinux 0x4448e780 dio_end_io +EXPORT_SYMBOL_GPL vmlinux 0x445ad7db smpboot_register_percpu_thread +EXPORT_SYMBOL_GPL vmlinux 0x446682f9 cpufreq_cpu_put +EXPORT_SYMBOL_GPL vmlinux 0x447109c4 usb_set_configuration +EXPORT_SYMBOL_GPL vmlinux 0x4484a5a4 wait_for_device_probe +EXPORT_SYMBOL_GPL vmlinux 0x44ac21ed regcache_mark_dirty +EXPORT_SYMBOL_GPL vmlinux 0x44c2ee99 inet_csk_reqsk_queue_hash_add +EXPORT_SYMBOL_GPL vmlinux 0x4512b086 intel_scu_devices_create +EXPORT_SYMBOL_GPL vmlinux 0x451def9f attribute_container_unregister +EXPORT_SYMBOL_GPL vmlinux 0x454059d1 usb_reset_configuration +EXPORT_SYMBOL_GPL vmlinux 0x4541fe0d mtrr_state +EXPORT_SYMBOL_GPL vmlinux 0x4566241b thermal_zone_unbind_cooling_device +EXPORT_SYMBOL_GPL vmlinux 0x457594fa crypto_alg_list +EXPORT_SYMBOL_GPL vmlinux 0x4575c478 da903x_write +EXPORT_SYMBOL_GPL vmlinux 0x4579115f platform_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x457d578c led_classdev_suspend +EXPORT_SYMBOL_GPL vmlinux 0x45a17b46 pci_generic_config_read32 +EXPORT_SYMBOL_GPL vmlinux 0x45adba90 tty_init_termios +EXPORT_SYMBOL_GPL vmlinux 0x45b7d6a0 btree_destroy +EXPORT_SYMBOL_GPL vmlinux 0x45bf1ff3 crypto_inc +EXPORT_SYMBOL_GPL vmlinux 0x45c6970e _submit_bh +EXPORT_SYMBOL_GPL vmlinux 0x45cf966e virtqueue_get_used +EXPORT_SYMBOL_GPL vmlinux 0x45d14bdf hypercall_page +EXPORT_SYMBOL_GPL vmlinux 0x45fbbe62 system_trusted_keyring +EXPORT_SYMBOL_GPL vmlinux 0x46013233 net_dec_ingress_queue +EXPORT_SYMBOL_GPL vmlinux 0x460f31aa rodata_test_data +EXPORT_SYMBOL_GPL vmlinux 0x460f7531 wait_rcu_gp +EXPORT_SYMBOL_GPL vmlinux 0x4617ad98 acpi_os_map_iomem +EXPORT_SYMBOL_GPL vmlinux 0x462e02c8 regcache_drop_region +EXPORT_SYMBOL_GPL vmlinux 0x4639ce8a debugfs_create_regset32 +EXPORT_SYMBOL_GPL vmlinux 0x463d24ea ipv6_fixup_options +EXPORT_SYMBOL_GPL vmlinux 0x463fc36e register_virtio_driver +EXPORT_SYMBOL_GPL vmlinux 0x46460f1a phy_create_lookup +EXPORT_SYMBOL_GPL vmlinux 0x4672e88b __crypto_dequeue_request +EXPORT_SYMBOL_GPL vmlinux 0x4678157d pci_bus_sem +EXPORT_SYMBOL_GPL vmlinux 0x4688d7ec pvclock_gtod_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x469143c4 x509_free_certificate +EXPORT_SYMBOL_GPL vmlinux 0x46921ffa rio_mport_get_physefb +EXPORT_SYMBOL_GPL vmlinux 0x469bbb59 pci_device_is_present +EXPORT_SYMBOL_GPL vmlinux 0x46aa830d serial8250_modem_status +EXPORT_SYMBOL_GPL vmlinux 0x46e63189 xen_swiotlb_unmap_sg_attrs +EXPORT_SYMBOL_GPL vmlinux 0x471c4810 firmware_kobj +EXPORT_SYMBOL_GPL vmlinux 0x47229b5c gpio_request +EXPORT_SYMBOL_GPL vmlinux 0x473e1d3c rio_request_outb_mbox +EXPORT_SYMBOL_GPL vmlinux 0x47410350 invalidate_inode_pages2_range +EXPORT_SYMBOL_GPL vmlinux 0x4744679b device_set_wakeup_enable +EXPORT_SYMBOL_GPL vmlinux 0x475724fd udp4_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x4761f17c register_netevent_notifier +EXPORT_SYMBOL_GPL vmlinux 0x4769705f clockevents_register_device +EXPORT_SYMBOL_GPL vmlinux 0x4773d8ad pci_try_reset_bus +EXPORT_SYMBOL_GPL vmlinux 0x47783413 regulator_set_mode +EXPORT_SYMBOL_GPL vmlinux 0x477c3f47 do_unregister_con_driver +EXPORT_SYMBOL_GPL vmlinux 0x47884890 system_power_efficient_wq +EXPORT_SYMBOL_GPL vmlinux 0x478dac16 thermal_zone_bind_cooling_device +EXPORT_SYMBOL_GPL vmlinux 0x47aad3b9 have_governor_per_policy +EXPORT_SYMBOL_GPL vmlinux 0x47d0eea2 acpi_lpat_temp_to_raw +EXPORT_SYMBOL_GPL vmlinux 0x47d8b760 acpi_kobj +EXPORT_SYMBOL_GPL vmlinux 0x47de0dc7 clk_unregister_mux +EXPORT_SYMBOL_GPL vmlinux 0x47eecca3 crypto_spawn_tfm2 +EXPORT_SYMBOL_GPL vmlinux 0x47f8b99e register_kretprobes +EXPORT_SYMBOL_GPL vmlinux 0x47fdc518 __blk_end_request_err +EXPORT_SYMBOL_GPL vmlinux 0x4828e77b acpi_scan_lock_acquire +EXPORT_SYMBOL_GPL vmlinux 0x485f7348 cpufreq_table_validate_and_show +EXPORT_SYMBOL_GPL vmlinux 0x48682db9 perf_guest_get_msrs +EXPORT_SYMBOL_GPL vmlinux 0x4868c3b4 rcu_batches_started_bh +EXPORT_SYMBOL_GPL vmlinux 0x486f9d70 rhashtable_destroy +EXPORT_SYMBOL_GPL vmlinux 0x4873b877 device_remove_bin_file +EXPORT_SYMBOL_GPL vmlinux 0x4879bb6a rio_get_device +EXPORT_SYMBOL_GPL vmlinux 0x487b1025 tcp_register_congestion_control +EXPORT_SYMBOL_GPL vmlinux 0x487c5d33 nf_log_buf_add +EXPORT_SYMBOL_GPL vmlinux 0x48ba5519 lp8788_read_byte +EXPORT_SYMBOL_GPL vmlinux 0x48c31c95 sdio_set_block_size +EXPORT_SYMBOL_GPL vmlinux 0x48e3d0da scsi_nl_sock +EXPORT_SYMBOL_GPL vmlinux 0x48f925fa ping_rcv +EXPORT_SYMBOL_GPL vmlinux 0x48fa1e6d __xenbus_register_frontend +EXPORT_SYMBOL_GPL vmlinux 0x48fc422b tcp_slow_start +EXPORT_SYMBOL_GPL vmlinux 0x4903dfb5 pci_generic_config_read +EXPORT_SYMBOL_GPL vmlinux 0x490a8df6 x86_platform +EXPORT_SYMBOL_GPL vmlinux 0x4915cbec __dma_request_channel +EXPORT_SYMBOL_GPL vmlinux 0x4952547a rio_request_inb_mbox +EXPORT_SYMBOL_GPL vmlinux 0x4974a82d rio_mport_class +EXPORT_SYMBOL_GPL vmlinux 0x497a182b unix_peer_get +EXPORT_SYMBOL_GPL vmlinux 0x4982a57f probe_kernel_write +EXPORT_SYMBOL_GPL vmlinux 0x4982f9a7 i2c_generic_scl_recovery +EXPORT_SYMBOL_GPL vmlinux 0x498a42b1 led_trigger_rename_static +EXPORT_SYMBOL_GPL vmlinux 0x498cbcf6 class_unregister +EXPORT_SYMBOL_GPL vmlinux 0x498d293a trace_buffer_unlock_commit +EXPORT_SYMBOL_GPL vmlinux 0x499043d3 crypto_init_queue +EXPORT_SYMBOL_GPL vmlinux 0x49cb110e relay_file_operations +EXPORT_SYMBOL_GPL vmlinux 0x49e96999 cond_synchronize_rcu +EXPORT_SYMBOL_GPL vmlinux 0x4a1372f9 crypto_lookup_skcipher +EXPORT_SYMBOL_GPL vmlinux 0x4a3c3cf9 microcode_sanity_check +EXPORT_SYMBOL_GPL vmlinux 0x4a420d09 acpi_bus_detach_private_data +EXPORT_SYMBOL_GPL vmlinux 0x4a673c06 devres_release +EXPORT_SYMBOL_GPL vmlinux 0x4a6f4d03 irq_create_mapping +EXPORT_SYMBOL_GPL vmlinux 0x4a93c156 relay_flush +EXPORT_SYMBOL_GPL vmlinux 0x4aa0605f phy_power_off +EXPORT_SYMBOL_GPL vmlinux 0x4aadeb9a ring_buffer_alloc_read_page +EXPORT_SYMBOL_GPL vmlinux 0x4ad52d86 usb_put_phy +EXPORT_SYMBOL_GPL vmlinux 0x4af6d8b1 ping_getfrag +EXPORT_SYMBOL_GPL vmlinux 0x4afb573b vrtc_cmos_read +EXPORT_SYMBOL_GPL vmlinux 0x4b008d12 put_pid +EXPORT_SYMBOL_GPL vmlinux 0x4b068baa wm8350_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x4b100406 mbox_client_txdone +EXPORT_SYMBOL_GPL vmlinux 0x4b278c2f ata_pci_sff_activate_host +EXPORT_SYMBOL_GPL vmlinux 0x4b2edd08 shmem_file_setup +EXPORT_SYMBOL_GPL vmlinux 0x4b3515d9 usb_find_interface +EXPORT_SYMBOL_GPL vmlinux 0x4b551291 spi_async_locked +EXPORT_SYMBOL_GPL vmlinux 0x4b69a001 debugfs_create_atomic_t +EXPORT_SYMBOL_GPL vmlinux 0x4b807a5b __put_net +EXPORT_SYMBOL_GPL vmlinux 0x4b8526a0 pinctrl_find_gpio_range_from_pin +EXPORT_SYMBOL_GPL vmlinux 0x4b8764a7 sata_lpm_ignore_phy_events +EXPORT_SYMBOL_GPL vmlinux 0x4bba7cbd devfreq_event_disable_edev +EXPORT_SYMBOL_GPL vmlinux 0x4bc83cfe gpiochip_find +EXPORT_SYMBOL_GPL vmlinux 0x4bcf6774 register_pernet_subsys +EXPORT_SYMBOL_GPL vmlinux 0x4bf552d8 scsi_target_unblock +EXPORT_SYMBOL_GPL vmlinux 0x4c005731 hypervisor_kobj +EXPORT_SYMBOL_GPL vmlinux 0x4c2a472b __static_cpu_has_safe +EXPORT_SYMBOL_GPL vmlinux 0x4c3bea58 wm831x_reg_lock +EXPORT_SYMBOL_GPL vmlinux 0x4c4b7053 fat_fill_super +EXPORT_SYMBOL_GPL vmlinux 0x4c602bf1 __blkg_release_rcu +EXPORT_SYMBOL_GPL vmlinux 0x4c65d322 devm_pinctrl_put +EXPORT_SYMBOL_GPL vmlinux 0x4c6f032b ata_bmdma_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x4c759827 byte_rev_table +EXPORT_SYMBOL_GPL vmlinux 0x4c971873 sata_scr_read +EXPORT_SYMBOL_GPL vmlinux 0x4cd1e43d da903x_read +EXPORT_SYMBOL_GPL vmlinux 0x4d0015e2 cpu_hotplug_disable +EXPORT_SYMBOL_GPL vmlinux 0x4d007164 usb_autopm_put_interface_async +EXPORT_SYMBOL_GPL vmlinux 0x4d0e2596 usb_remove_hcd +EXPORT_SYMBOL_GPL vmlinux 0x4d22371a sk_clear_memalloc +EXPORT_SYMBOL_GPL vmlinux 0x4d35bfa8 __rio_local_read_config_32 +EXPORT_SYMBOL_GPL vmlinux 0x4d465159 register_virtio_device +EXPORT_SYMBOL_GPL vmlinux 0x4d47f97f trace_seq_path +EXPORT_SYMBOL_GPL vmlinux 0x4d6dad51 ata_scsi_slave_config +EXPORT_SYMBOL_GPL vmlinux 0x4d791ae1 usb_remove_phy +EXPORT_SYMBOL_GPL vmlinux 0x4d89530a unregister_virtio_driver +EXPORT_SYMBOL_GPL vmlinux 0x4d90f4bb scsi_ioctl_block_when_processing_errors +EXPORT_SYMBOL_GPL vmlinux 0x4dbd2d6d crypto_unregister_instance +EXPORT_SYMBOL_GPL vmlinux 0x4dc5b0bc rhashtable_free_and_destroy +EXPORT_SYMBOL_GPL vmlinux 0x4de17ab3 usb_state_string +EXPORT_SYMBOL_GPL vmlinux 0x4e109192 ring_buffer_entries +EXPORT_SYMBOL_GPL vmlinux 0x4e1b2761 dma_get_slave_channel +EXPORT_SYMBOL_GPL vmlinux 0x4e1ea947 __list_lru_init +EXPORT_SYMBOL_GPL vmlinux 0x4e216ed4 wm831x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x4e242f5f pstore_cannot_block_path +EXPORT_SYMBOL_GPL vmlinux 0x4e2c2dd2 pm_qos_remove_request +EXPORT_SYMBOL_GPL vmlinux 0x4e3a1152 devm_regmap_init_spi +EXPORT_SYMBOL_GPL vmlinux 0x4e57723d apei_read +EXPORT_SYMBOL_GPL vmlinux 0x4e74e625 gnttab_batch_copy +EXPORT_SYMBOL_GPL vmlinux 0x4e7a9d4e usb_phy_set_event +EXPORT_SYMBOL_GPL vmlinux 0x4e7eafa2 tty_port_link_device +EXPORT_SYMBOL_GPL vmlinux 0x4e8a3b10 class_compat_create_link +EXPORT_SYMBOL_GPL vmlinux 0x4e8c10a0 pm_generic_freeze_noirq +EXPORT_SYMBOL_GPL vmlinux 0x4e907b07 reset_controller_register +EXPORT_SYMBOL_GPL vmlinux 0x4e97a832 tcp_death_row +EXPORT_SYMBOL_GPL vmlinux 0x4eccc24b devm_regulator_bulk_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x4ef5bcf4 perf_swevent_get_recursion_context +EXPORT_SYMBOL_GPL vmlinux 0x4f020dee public_key_verify_signature +EXPORT_SYMBOL_GPL vmlinux 0x4f12cdde pci_enable_rom +EXPORT_SYMBOL_GPL vmlinux 0x4f14778c debugfs_create_u64 +EXPORT_SYMBOL_GPL vmlinux 0x4f405386 ehci_setup +EXPORT_SYMBOL_GPL vmlinux 0x4f5b7b01 wm8997_irq +EXPORT_SYMBOL_GPL vmlinux 0x4f6a07fe show_rcu_gp_kthreads +EXPORT_SYMBOL_GPL vmlinux 0x4f9525de rio_mport_write_config_16 +EXPORT_SYMBOL_GPL vmlinux 0x4fb75dde cpufreq_register_governor +EXPORT_SYMBOL_GPL vmlinux 0x4fc52e8d __tracepoint_remove_device_from_group +EXPORT_SYMBOL_GPL vmlinux 0x4fcbd14b irq_gc_mask_set_bit +EXPORT_SYMBOL_GPL vmlinux 0x4fd25477 dma_buf_vunmap +EXPORT_SYMBOL_GPL vmlinux 0x4fd4e89d ring_buffer_empty_cpu +EXPORT_SYMBOL_GPL vmlinux 0x4fdc945d sata_deb_timing_normal +EXPORT_SYMBOL_GPL vmlinux 0x4fe1eddf unregister_netevent_notifier +EXPORT_SYMBOL_GPL vmlinux 0x4ff625e5 pci_assign_unassigned_bus_resources +EXPORT_SYMBOL_GPL vmlinux 0x50040fb2 ata_sff_softreset +EXPORT_SYMBOL_GPL vmlinux 0x5026585c xen_irq_from_gsi +EXPORT_SYMBOL_GPL vmlinux 0x5061ce46 sysfs_remove_bin_file +EXPORT_SYMBOL_GPL vmlinux 0x507de8c6 add_memory +EXPORT_SYMBOL_GPL vmlinux 0x5080c352 trace_print_bitmask_seq +EXPORT_SYMBOL_GPL vmlinux 0x5086ac3a alg_test +EXPORT_SYMBOL_GPL vmlinux 0x508a9b56 tun_get_socket +EXPORT_SYMBOL_GPL vmlinux 0x5091b823 ring_buffer_read_start +EXPORT_SYMBOL_GPL vmlinux 0x5095cf39 max8997_update_reg +EXPORT_SYMBOL_GPL vmlinux 0x50a60e4e regmap_raw_write +EXPORT_SYMBOL_GPL vmlinux 0x50ac852a cn_add_callback +EXPORT_SYMBOL_GPL vmlinux 0x50b269b2 blk_lld_busy +EXPORT_SYMBOL_GPL vmlinux 0x50c89f23 __alloc_percpu +EXPORT_SYMBOL_GPL vmlinux 0x50cee399 devm_regmap_init +EXPORT_SYMBOL_GPL vmlinux 0x50d68448 blocking_notifier_chain_cond_register +EXPORT_SYMBOL_GPL vmlinux 0x50e50a9f od_register_powersave_bias_handler +EXPORT_SYMBOL_GPL vmlinux 0x50e5e9a8 ping_queue_rcv_skb +EXPORT_SYMBOL_GPL vmlinux 0x50e7193a __i2c_first_dynamic_bus_num +EXPORT_SYMBOL_GPL vmlinux 0x50fad434 round_jiffies_up +EXPORT_SYMBOL_GPL vmlinux 0x510090a2 uart_handle_dcd_change +EXPORT_SYMBOL_GPL vmlinux 0x511c1b82 param_set_bool_enable_only +EXPORT_SYMBOL_GPL vmlinux 0x514e9875 divider_get_val +EXPORT_SYMBOL_GPL vmlinux 0x51519adb usb_free_coherent +EXPORT_SYMBOL_GPL vmlinux 0x5187ac4b xen_store_evtchn +EXPORT_SYMBOL_GPL vmlinux 0x518c2fc6 hpet_rtc_dropped_irq +EXPORT_SYMBOL_GPL vmlinux 0x5191c1da inet_csk_addr2sockaddr +EXPORT_SYMBOL_GPL vmlinux 0x5198670c rio_register_mport +EXPORT_SYMBOL_GPL vmlinux 0x51b6959b pci_destroy_slot +EXPORT_SYMBOL_GPL vmlinux 0x51e2418f print_context_stack +EXPORT_SYMBOL_GPL vmlinux 0x52006895 thermal_cooling_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x5210a5bf hsi_board_list +EXPORT_SYMBOL_GPL vmlinux 0x52212010 __tracepoint_block_bio_remap +EXPORT_SYMBOL_GPL vmlinux 0x5221ec3a fwnode_property_read_u32_array +EXPORT_SYMBOL_GPL vmlinux 0x523b11d7 regmap_async_complete +EXPORT_SYMBOL_GPL vmlinux 0x523ff1cb get_task_mm +EXPORT_SYMBOL_GPL vmlinux 0x5256c3f3 regmap_get_device +EXPORT_SYMBOL_GPL vmlinux 0x5258b3e4 xenbus_map_ring_valloc +EXPORT_SYMBOL_GPL vmlinux 0x525a6358 devfreq_event_enable_edev +EXPORT_SYMBOL_GPL vmlinux 0x526280c7 trace_seq_puts +EXPORT_SYMBOL_GPL vmlinux 0x5272d8bc __cookie_v4_check +EXPORT_SYMBOL_GPL vmlinux 0x52a41251 __cookie_v4_init_sequence +EXPORT_SYMBOL_GPL vmlinux 0x52a459aa mddev_unlock +EXPORT_SYMBOL_GPL vmlinux 0x52d8c375 clk_register_divider +EXPORT_SYMBOL_GPL vmlinux 0x52e6b125 ehci_hub_control +EXPORT_SYMBOL_GPL vmlinux 0x52f102db __percpu_ida_init +EXPORT_SYMBOL_GPL vmlinux 0x52fdd0c6 acpi_subsys_complete +EXPORT_SYMBOL_GPL vmlinux 0x532845bc fuse_dev_free +EXPORT_SYMBOL_GPL vmlinux 0x53473feb devres_find +EXPORT_SYMBOL_GPL vmlinux 0x5358fc36 ring_buffer_discard_commit +EXPORT_SYMBOL_GPL vmlinux 0x53614269 get_cpu_idle_time_us +EXPORT_SYMBOL_GPL vmlinux 0x53646438 xenbus_map_ring +EXPORT_SYMBOL_GPL vmlinux 0x536bb50a device_attach +EXPORT_SYMBOL_GPL vmlinux 0x538fadfc dm_set_target_max_io_len +EXPORT_SYMBOL_GPL vmlinux 0x539f157b pci_xen_swiotlb_init_late +EXPORT_SYMBOL_GPL vmlinux 0x539f9e6b acpi_dma_simple_xlate +EXPORT_SYMBOL_GPL vmlinux 0x53a2d227 fat_alloc_new_dir +EXPORT_SYMBOL_GPL vmlinux 0x53bf52f4 platform_get_resource_byname +EXPORT_SYMBOL_GPL vmlinux 0x53c6deda inet_ctl_sock_create +EXPORT_SYMBOL_GPL vmlinux 0x53e244b9 devres_close_group +EXPORT_SYMBOL_GPL vmlinux 0x53f644c9 devfreq_event_set_event +EXPORT_SYMBOL_GPL vmlinux 0x53fc61f9 regcache_sync_region +EXPORT_SYMBOL_GPL vmlinux 0x541167a9 tcp_peer_is_proven +EXPORT_SYMBOL_GPL vmlinux 0x541bd60a irq_work_run +EXPORT_SYMBOL_GPL vmlinux 0x541ce2bd posix_acl_default_xattr_handler +EXPORT_SYMBOL_GPL vmlinux 0x5425d145 bit_wait_timeout +EXPORT_SYMBOL_GPL vmlinux 0x543dca30 pinctrl_get_group_pins +EXPORT_SYMBOL_GPL vmlinux 0x5460c8d8 fsnotify_get_cookie +EXPORT_SYMBOL_GPL vmlinux 0x54656e9f platform_device_add_data +EXPORT_SYMBOL_GPL vmlinux 0x54740eb7 get_cpu_idle_time +EXPORT_SYMBOL_GPL vmlinux 0x549525ef handle_nested_irq +EXPORT_SYMBOL_GPL vmlinux 0x54a571cd device_remove_file_self +EXPORT_SYMBOL_GPL vmlinux 0x54bf8a5d intel_scu_notifier +EXPORT_SYMBOL_GPL vmlinux 0x54d46690 uart_parse_earlycon +EXPORT_SYMBOL_GPL vmlinux 0x54d468f1 pm_qos_request_active +EXPORT_SYMBOL_GPL vmlinux 0x54df9362 tcp_reno_ssthresh +EXPORT_SYMBOL_GPL vmlinux 0x54e35288 virtqueue_is_broken +EXPORT_SYMBOL_GPL vmlinux 0x5501dd73 alarm_expires_remaining +EXPORT_SYMBOL_GPL vmlinux 0x550ce709 pat_enabled +EXPORT_SYMBOL_GPL vmlinux 0x550d9412 da903x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x550fbf98 clk_mux_ops +EXPORT_SYMBOL_GPL vmlinux 0x5517ac26 cpuidle_get_cpu_driver +EXPORT_SYMBOL_GPL vmlinux 0x552a7c3f __fsnotify_parent +EXPORT_SYMBOL_GPL vmlinux 0x553a9a28 scsi_autopm_get_device +EXPORT_SYMBOL_GPL vmlinux 0x553b49a4 cpufreq_get_driver_data +EXPORT_SYMBOL_GPL vmlinux 0x55417264 unregister_vt_notifier +EXPORT_SYMBOL_GPL vmlinux 0x55526907 xen_features +EXPORT_SYMBOL_GPL vmlinux 0x555493a7 tty_standard_install +EXPORT_SYMBOL_GPL vmlinux 0x55595b19 irq_set_chained_handler_and_data +EXPORT_SYMBOL_GPL vmlinux 0x556e4390 clk_get_rate +EXPORT_SYMBOL_GPL vmlinux 0x55784228 regmap_irq_get_virq +EXPORT_SYMBOL_GPL vmlinux 0x5594346e __ip_route_output_key +EXPORT_SYMBOL_GPL vmlinux 0x55edd53d unregister_jprobes +EXPORT_SYMBOL_GPL vmlinux 0x55f02621 __pci_complete_power_transition +EXPORT_SYMBOL_GPL vmlinux 0x55fb501c device_property_read_u16_array +EXPORT_SYMBOL_GPL vmlinux 0x5601f0f4 regulator_is_supported_voltage +EXPORT_SYMBOL_GPL vmlinux 0x561fc1db mbox_controller_unregister +EXPORT_SYMBOL_GPL vmlinux 0x5620663e acpi_dev_suspend_late +EXPORT_SYMBOL_GPL vmlinux 0x56256e8a orderly_poweroff +EXPORT_SYMBOL_GPL vmlinux 0x5626f7ab phy_destroy +EXPORT_SYMBOL_GPL vmlinux 0x56310925 regulator_mode_to_status +EXPORT_SYMBOL_GPL vmlinux 0x5635a552 tpm2_startup +EXPORT_SYMBOL_GPL vmlinux 0x56398615 mark_tsc_unstable +EXPORT_SYMBOL_GPL vmlinux 0x5641485b tty_termios_encode_baud_rate +EXPORT_SYMBOL_GPL vmlinux 0x564acae1 security_inode_setattr +EXPORT_SYMBOL_GPL vmlinux 0x5654f836 erst_get_record_id_next +EXPORT_SYMBOL_GPL vmlinux 0x565b6892 uuid_le_gen +EXPORT_SYMBOL_GPL vmlinux 0x5664c17a xen_unmap_domain_mfn_range +EXPORT_SYMBOL_GPL vmlinux 0x566cc2b9 usb_free_streams +EXPORT_SYMBOL_GPL vmlinux 0x567a3bc9 pm_generic_poweroff_late +EXPORT_SYMBOL_GPL vmlinux 0x568396ac arizona_pm_ops +EXPORT_SYMBOL_GPL vmlinux 0x56886b19 scatterwalk_map +EXPORT_SYMBOL_GPL vmlinux 0x56947347 dmi_walk +EXPORT_SYMBOL_GPL vmlinux 0x569978d8 spi_alloc_device +EXPORT_SYMBOL_GPL vmlinux 0x569f0711 alarm_start_relative +EXPORT_SYMBOL_GPL vmlinux 0x56a0a297 regmap_fields_write +EXPORT_SYMBOL_GPL vmlinux 0x56b63670 lzo1x_1_compress +EXPORT_SYMBOL_GPL vmlinux 0x56c7228b nd_blk_region_provider_data +EXPORT_SYMBOL_GPL vmlinux 0x56d697ce cpu_up +EXPORT_SYMBOL_GPL vmlinux 0x56e75d47 klist_node_attached +EXPORT_SYMBOL_GPL vmlinux 0x56f9131f trace_event_buffer_lock_reserve +EXPORT_SYMBOL_GPL vmlinux 0x57052a33 powercap_register_control_type +EXPORT_SYMBOL_GPL vmlinux 0x570842c7 bpf_prog_select_runtime +EXPORT_SYMBOL_GPL vmlinux 0x571b248f wakeup_source_drop +EXPORT_SYMBOL_GPL vmlinux 0x571c876f fl6_sock_lookup +EXPORT_SYMBOL_GPL vmlinux 0x5720c70a pci_pasid_features +EXPORT_SYMBOL_GPL vmlinux 0x57231f45 ring_buffer_record_on +EXPORT_SYMBOL_GPL vmlinux 0x572e2909 usb_unpoison_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x5779d445 xenbus_exists +EXPORT_SYMBOL_GPL vmlinux 0x578a38df wakeup_source_register +EXPORT_SYMBOL_GPL vmlinux 0x5790e7a0 pci_unlock_rescan_remove +EXPORT_SYMBOL_GPL vmlinux 0x5791b449 kernfs_path +EXPORT_SYMBOL_GPL vmlinux 0x579e0bf5 rtnl_unregister_all +EXPORT_SYMBOL_GPL vmlinux 0x57c39727 kdb_register_flags +EXPORT_SYMBOL_GPL vmlinux 0x57caac61 map_vm_area +EXPORT_SYMBOL_GPL vmlinux 0x57f8062c acpi_dev_resource_io +EXPORT_SYMBOL_GPL vmlinux 0x580424e5 acpi_bind_one +EXPORT_SYMBOL_GPL vmlinux 0x5815e1e8 regmap_get_max_register +EXPORT_SYMBOL_GPL vmlinux 0x58178ee4 scsi_schedule_eh +EXPORT_SYMBOL_GPL vmlinux 0x581acf45 usb_get_intf +EXPORT_SYMBOL_GPL vmlinux 0x58250136 disk_part_iter_next +EXPORT_SYMBOL_GPL vmlinux 0x58292e5f clk_fixed_factor_ops +EXPORT_SYMBOL_GPL vmlinux 0x585704ab aer_recover_queue +EXPORT_SYMBOL_GPL vmlinux 0x5881ab6d perf_event_read_value +EXPORT_SYMBOL_GPL vmlinux 0x58929136 dma_buf_vmap +EXPORT_SYMBOL_GPL vmlinux 0x589e4569 syscon_regmap_lookup_by_pdevname +EXPORT_SYMBOL_GPL vmlinux 0x58aa9403 irq_set_chip_and_handler_name +EXPORT_SYMBOL_GPL vmlinux 0x58ae145c ip4_datagram_release_cb +EXPORT_SYMBOL_GPL vmlinux 0x58e1c528 pwm_disable +EXPORT_SYMBOL_GPL vmlinux 0x58f6668a ata_cable_unknown +EXPORT_SYMBOL_GPL vmlinux 0x58fe9409 rio_inb_pwrite_handler +EXPORT_SYMBOL_GPL vmlinux 0x59067b13 usb_enable_intel_xhci_ports +EXPORT_SYMBOL_GPL vmlinux 0x59077d85 sysfs_remove_groups +EXPORT_SYMBOL_GPL vmlinux 0x591119b5 mbox_controller_register +EXPORT_SYMBOL_GPL vmlinux 0x592d7f1f regulator_disable_deferred +EXPORT_SYMBOL_GPL vmlinux 0x594cde67 trace_seq_putmem_hex +EXPORT_SYMBOL_GPL vmlinux 0x5954ddd3 xenbus_watch_path +EXPORT_SYMBOL_GPL vmlinux 0x59688cf7 atomic_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0x5970fade xenbus_grant_ring +EXPORT_SYMBOL_GPL vmlinux 0x59725fbe xenbus_read_otherend_details +EXPORT_SYMBOL_GPL vmlinux 0x597c9c2a gpiod_get_direction +EXPORT_SYMBOL_GPL vmlinux 0x59826097 fat_flush_inodes +EXPORT_SYMBOL_GPL vmlinux 0x599d9bbd register_ftrace_function +EXPORT_SYMBOL_GPL vmlinux 0x59e2743e call_rcu_bh +EXPORT_SYMBOL_GPL vmlinux 0x59eae699 ring_buffer_read_prepare +EXPORT_SYMBOL_GPL vmlinux 0x5a174d81 inet_getpeer +EXPORT_SYMBOL_GPL vmlinux 0x5a1dd00c rtc_irq_register +EXPORT_SYMBOL_GPL vmlinux 0x5a24ae8d blkdev_read_iter +EXPORT_SYMBOL_GPL vmlinux 0x5a2b1b67 gnttab_free_grant_reference +EXPORT_SYMBOL_GPL vmlinux 0x5a33c08e set_pages_array_wt +EXPORT_SYMBOL_GPL vmlinux 0x5a36abef device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x5a441ebd efi_query_variable_store +EXPORT_SYMBOL_GPL vmlinux 0x5a50f9ee xen_swiotlb_map_sg_attrs +EXPORT_SYMBOL_GPL vmlinux 0x5a7bfe41 crypto_probing_notify +EXPORT_SYMBOL_GPL vmlinux 0x5a8a0919 usb_clear_halt +EXPORT_SYMBOL_GPL vmlinux 0x5ace9344 devm_hwmon_device_register_with_groups +EXPORT_SYMBOL_GPL vmlinux 0x5ade2369 power_supply_register_no_ws +EXPORT_SYMBOL_GPL vmlinux 0x5ae76cb5 ata_sff_postreset +EXPORT_SYMBOL_GPL vmlinux 0x5aedb735 perf_event_refresh +EXPORT_SYMBOL_GPL vmlinux 0x5af03a28 gnttab_claim_grant_reference +EXPORT_SYMBOL_GPL vmlinux 0x5af48163 ip6_sk_redirect +EXPORT_SYMBOL_GPL vmlinux 0x5afceb81 led_trigger_blink +EXPORT_SYMBOL_GPL vmlinux 0x5b0672db dev_set_name +EXPORT_SYMBOL_GPL vmlinux 0x5b14b354 regulator_get_init_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x5b1f193b pcc_mbox_request_channel +EXPORT_SYMBOL_GPL vmlinux 0x5b29ae12 anon_transport_class_register +EXPORT_SYMBOL_GPL vmlinux 0x5b2fc8e6 rio_request_dma +EXPORT_SYMBOL_GPL vmlinux 0x5b38d3b4 pwm_set_chip_data +EXPORT_SYMBOL_GPL vmlinux 0x5b6a57ba __mmdrop +EXPORT_SYMBOL_GPL vmlinux 0x5b701f74 device_reset +EXPORT_SYMBOL_GPL vmlinux 0x5b7aa178 __audit_inode_child +EXPORT_SYMBOL_GPL vmlinux 0x5ba136f0 wm8350_reg_unlock +EXPORT_SYMBOL_GPL vmlinux 0x5babb4ee regmap_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0x5babf842 register_jprobes +EXPORT_SYMBOL_GPL vmlinux 0x5bc7c770 ablkcipher_walk_phys +EXPORT_SYMBOL_GPL vmlinux 0x5bc8d9d8 rio_request_outb_dbell +EXPORT_SYMBOL_GPL vmlinux 0x5bc914aa ata_host_start +EXPORT_SYMBOL_GPL vmlinux 0x5bce8ca1 __atomic_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x5bd0748f crypto_del_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x5bdbac4e rcu_unexpedite_gp +EXPORT_SYMBOL_GPL vmlinux 0x5c0525d5 da9052_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0x5c49b611 __rtnl_link_unregister +EXPORT_SYMBOL_GPL vmlinux 0x5c5a1b16 tick_broadcast_control +EXPORT_SYMBOL_GPL vmlinux 0x5c65165e ata_qc_complete_multiple +EXPORT_SYMBOL_GPL vmlinux 0x5c66e90c efivar_run_worker +EXPORT_SYMBOL_GPL vmlinux 0x5c777b2e inet6_lookup +EXPORT_SYMBOL_GPL vmlinux 0x5c955b5f pci_scan_child_bus +EXPORT_SYMBOL_GPL vmlinux 0x5cabdced dev_pm_qos_remove_global_notifier +EXPORT_SYMBOL_GPL vmlinux 0x5cb525f2 cpufreq_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x5cc509a4 nsecs_to_jiffies +EXPORT_SYMBOL_GPL vmlinux 0x5d12e48f input_event_to_user +EXPORT_SYMBOL_GPL vmlinux 0x5d16d54f __clocksource_register_scale +EXPORT_SYMBOL_GPL vmlinux 0x5d1dd8a0 get_task_pid +EXPORT_SYMBOL_GPL vmlinux 0x5d366dec gnttab_cancel_free_callback +EXPORT_SYMBOL_GPL vmlinux 0x5d3726de usb_sg_wait +EXPORT_SYMBOL_GPL vmlinux 0x5d411059 ata_host_init +EXPORT_SYMBOL_GPL vmlinux 0x5d7b54d0 crypto_spawn_tfm +EXPORT_SYMBOL_GPL vmlinux 0x5d86b79b iptunnel_pull_header +EXPORT_SYMBOL_GPL vmlinux 0x5d9a2384 usb_choose_configuration +EXPORT_SYMBOL_GPL vmlinux 0x5da67adc zs_compact +EXPORT_SYMBOL_GPL vmlinux 0x5da861ef regulator_set_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x5dbcfa4f boot_cpu_physical_apicid +EXPORT_SYMBOL_GPL vmlinux 0x5ddb91be subsys_virtual_register +EXPORT_SYMBOL_GPL vmlinux 0x5e04e449 tty_port_tty_wakeup +EXPORT_SYMBOL_GPL vmlinux 0x5e1c184b spi_master_suspend +EXPORT_SYMBOL_GPL vmlinux 0x5e515be6 ktime_get_ts64 +EXPORT_SYMBOL_GPL vmlinux 0x5e51cd74 swiotlb_nr_tbl +EXPORT_SYMBOL_GPL vmlinux 0x5e547898 powercap_unregister_zone +EXPORT_SYMBOL_GPL vmlinux 0x5e6e51d7 tasklet_hrtimer_init +EXPORT_SYMBOL_GPL vmlinux 0x5e73556b pinctrl_remove_gpio_range +EXPORT_SYMBOL_GPL vmlinux 0x5e77ba35 do_machine_check +EXPORT_SYMBOL_GPL vmlinux 0x5e83c52a set_task_ioprio +EXPORT_SYMBOL_GPL vmlinux 0x5e8b10a5 ata_sff_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x5e9a52b7 pwmchip_add +EXPORT_SYMBOL_GPL vmlinux 0x5ea83b43 virtqueue_disable_cb +EXPORT_SYMBOL_GPL vmlinux 0x5ec545b4 virtio_config_changed +EXPORT_SYMBOL_GPL vmlinux 0x5eca4962 sdio_f0_writeb +EXPORT_SYMBOL_GPL vmlinux 0x5eca7ed4 crypto_hash_walk_done +EXPORT_SYMBOL_GPL vmlinux 0x5ed19183 acpi_ec_remove_query_handler +EXPORT_SYMBOL_GPL vmlinux 0x5ed9713a xen_find_device_domain_owner +EXPORT_SYMBOL_GPL vmlinux 0x5f0810f7 to_nd_blk_region +EXPORT_SYMBOL_GPL vmlinux 0x5f2da8c4 check_tsc_unstable +EXPORT_SYMBOL_GPL vmlinux 0x5f3d6e7b xfrm_local_error +EXPORT_SYMBOL_GPL vmlinux 0x5f5ba228 pcie_bus_configure_settings +EXPORT_SYMBOL_GPL vmlinux 0x5f5dcfa1 blkcipher_walk_virt_block +EXPORT_SYMBOL_GPL vmlinux 0x5f62a37e rio_register_scan +EXPORT_SYMBOL_GPL vmlinux 0x5f6323c1 devm_regulator_unregister +EXPORT_SYMBOL_GPL vmlinux 0x5f6c17e5 anon_inode_getfd +EXPORT_SYMBOL_GPL vmlinux 0x5f9c2fb5 skb_to_sgvec_nomark +EXPORT_SYMBOL_GPL vmlinux 0x5fc27be9 acpi_dev_irq_flags +EXPORT_SYMBOL_GPL vmlinux 0x5fce4586 __inet_inherit_port +EXPORT_SYMBOL_GPL vmlinux 0x5fdfa2c1 amd_pmu_enable_virt +EXPORT_SYMBOL_GPL vmlinux 0x60091316 clk_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x6034b63c rio_dma_prep_slave_sg +EXPORT_SYMBOL_GPL vmlinux 0x6044183e device_rename +EXPORT_SYMBOL_GPL vmlinux 0x604ea222 clone_private_mount +EXPORT_SYMBOL_GPL vmlinux 0x60506751 unmap_kernel_range_noflush +EXPORT_SYMBOL_GPL vmlinux 0x60527861 iommu_attach_group +EXPORT_SYMBOL_GPL vmlinux 0x60561bbd alarm_cancel +EXPORT_SYMBOL_GPL vmlinux 0x6078fdea fat_setattr +EXPORT_SYMBOL_GPL vmlinux 0x607ad4ab i2c_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0x607ecd53 eventfd_ctx_fileget +EXPORT_SYMBOL_GPL vmlinux 0x60930d37 save_mc_for_early +EXPORT_SYMBOL_GPL vmlinux 0x60a13e90 rcu_barrier +EXPORT_SYMBOL_GPL vmlinux 0x60a77df6 pinctrl_utils_dt_free_map +EXPORT_SYMBOL_GPL vmlinux 0x60b83455 ata_bmdma_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x60c41e70 cpuidle_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x60cc3cf3 da9052_request_irq +EXPORT_SYMBOL_GPL vmlinux 0x60cd73ed pv_apic_ops +EXPORT_SYMBOL_GPL vmlinux 0x60f1f931 acpi_dma_controller_free +EXPORT_SYMBOL_GPL vmlinux 0x6118ce00 handle_level_irq +EXPORT_SYMBOL_GPL vmlinux 0x61193ba6 dev_pm_qos_hide_latency_limit +EXPORT_SYMBOL_GPL vmlinux 0x6119fd7e vga_default_device +EXPORT_SYMBOL_GPL vmlinux 0x61229ed4 power_supply_put +EXPORT_SYMBOL_GPL vmlinux 0x6123e646 mbox_chan_received_data +EXPORT_SYMBOL_GPL vmlinux 0x612da12b posix_clock_unregister +EXPORT_SYMBOL_GPL vmlinux 0x614a520c arizona_dev_init +EXPORT_SYMBOL_GPL vmlinux 0x615b4c40 __wake_up_locked +EXPORT_SYMBOL_GPL vmlinux 0x615d190c i2c_new_dummy +EXPORT_SYMBOL_GPL vmlinux 0x6161c4dd extcon_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x616868ac public_key_subtype +EXPORT_SYMBOL_GPL vmlinux 0x618e403f ata_sff_check_status +EXPORT_SYMBOL_GPL vmlinux 0x61b0f0c9 synchronize_srcu +EXPORT_SYMBOL_GPL vmlinux 0x61cde409 acpi_dev_resource_memory +EXPORT_SYMBOL_GPL vmlinux 0x61cdff06 component_master_add_child +EXPORT_SYMBOL_GPL vmlinux 0x61daac2d pwm_request_from_chip +EXPORT_SYMBOL_GPL vmlinux 0x61ecfa7d uprobe_register +EXPORT_SYMBOL_GPL vmlinux 0x6210b357 usb_reset_device +EXPORT_SYMBOL_GPL vmlinux 0x62135e87 gnttab_unmap_refs +EXPORT_SYMBOL_GPL vmlinux 0x622c7922 register_oom_notifier +EXPORT_SYMBOL_GPL vmlinux 0x62322fe5 crypto_register_ahash +EXPORT_SYMBOL_GPL vmlinux 0x623803c8 hest_disable +EXPORT_SYMBOL_GPL vmlinux 0x627d2faf regmap_multi_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x62a01964 device_remove_file +EXPORT_SYMBOL_GPL vmlinux 0x62a1c981 klist_add_head +EXPORT_SYMBOL_GPL vmlinux 0x62a47860 debugfs_create_u32_array +EXPORT_SYMBOL_GPL vmlinux 0x62aa36d5 ata_pci_remove_one +EXPORT_SYMBOL_GPL vmlinux 0x62b8fe06 ipv6_find_tlv +EXPORT_SYMBOL_GPL vmlinux 0x62d01489 ata_sas_slave_configure +EXPORT_SYMBOL_GPL vmlinux 0x62e0726b power_supply_unregister +EXPORT_SYMBOL_GPL vmlinux 0x62ee66f4 exportfs_encode_inode_fh +EXPORT_SYMBOL_GPL vmlinux 0x63150e06 clk_get_parent +EXPORT_SYMBOL_GPL vmlinux 0x63237886 usb_alloc_coherent +EXPORT_SYMBOL_GPL vmlinux 0x635ec980 apei_exec_post_unmap_gars +EXPORT_SYMBOL_GPL vmlinux 0x6375b847 regulator_is_enabled_regmap +EXPORT_SYMBOL_GPL vmlinux 0x6387fb1c tcp_ca_openreq_child +EXPORT_SYMBOL_GPL vmlinux 0x6396fe13 list_lru_destroy +EXPORT_SYMBOL_GPL vmlinux 0x63ad935d x86_hyper_kvm +EXPORT_SYMBOL_GPL vmlinux 0x63c7cf11 inet_putpeer +EXPORT_SYMBOL_GPL vmlinux 0x63c817ea ata_pio_need_iordy +EXPORT_SYMBOL_GPL vmlinux 0x63caf20f verify_signature +EXPORT_SYMBOL_GPL vmlinux 0x63dc16ac pci_user_write_config_word +EXPORT_SYMBOL_GPL vmlinux 0x63ea80b3 cper_mem_err_type_str +EXPORT_SYMBOL_GPL vmlinux 0x63ed3168 bus_create_file +EXPORT_SYMBOL_GPL vmlinux 0x63efdd8d devm_pinctrl_get +EXPORT_SYMBOL_GPL vmlinux 0x63f3ab6c efivar_entry_set_get_size +EXPORT_SYMBOL_GPL vmlinux 0x640b1c40 unregister_wide_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x6410e160 ktime_mono_to_any +EXPORT_SYMBOL_GPL vmlinux 0x64256424 visitor32 +EXPORT_SYMBOL_GPL vmlinux 0x64318593 acpi_dev_filter_resource_type +EXPORT_SYMBOL_GPL vmlinux 0x645b9b3a dma_run_dependencies +EXPORT_SYMBOL_GPL vmlinux 0x646311d9 bus_get_device_klist +EXPORT_SYMBOL_GPL vmlinux 0x64844d6b ata_bmdma_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0x6485de36 usb_deregister_device_driver +EXPORT_SYMBOL_GPL vmlinux 0x64b7069e apei_mce_report_mem_error +EXPORT_SYMBOL_GPL vmlinux 0x64c37430 devm_of_pwm_get +EXPORT_SYMBOL_GPL vmlinux 0x64de06fd gpiod_to_irq +EXPORT_SYMBOL_GPL vmlinux 0x64eb596d rio_mport_write_config_8 +EXPORT_SYMBOL_GPL vmlinux 0x6516f308 sdio_writew +EXPORT_SYMBOL_GPL vmlinux 0x6527a231 dbgp_external_startup +EXPORT_SYMBOL_GPL vmlinux 0x652dd2d0 regulator_map_voltage_linear_range +EXPORT_SYMBOL_GPL vmlinux 0x6536953b btree_last +EXPORT_SYMBOL_GPL vmlinux 0x653cb02d intel_msic_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0x6567f9fc nf_queue_entry_release_refs +EXPORT_SYMBOL_GPL vmlinux 0x656acbf2 ip6_dst_lookup_flow +EXPORT_SYMBOL_GPL vmlinux 0x65774edf scsi_autopm_put_device +EXPORT_SYMBOL_GPL vmlinux 0x6583b4c7 inet_twsk_put +EXPORT_SYMBOL_GPL vmlinux 0x658b0ddf ip6_datagram_connect_v6_only +EXPORT_SYMBOL_GPL vmlinux 0x658c8186 amd_get_nb_id +EXPORT_SYMBOL_GPL vmlinux 0x65a86957 ata_port_wait_eh +EXPORT_SYMBOL_GPL vmlinux 0x65bbbc78 schedule_hrtimeout_range +EXPORT_SYMBOL_GPL vmlinux 0x65ccb6f0 call_netevent_notifiers +EXPORT_SYMBOL_GPL vmlinux 0x65d2b0cd dma_buf_export +EXPORT_SYMBOL_GPL vmlinux 0x65ec107f ip6_local_out_sk +EXPORT_SYMBOL_GPL vmlinux 0x65ee1eb2 acpi_subsys_runtime_suspend +EXPORT_SYMBOL_GPL vmlinux 0x6604f4ca __pm_runtime_set_status +EXPORT_SYMBOL_GPL vmlinux 0x661601de sprint_symbol +EXPORT_SYMBOL_GPL vmlinux 0x6636c3c9 irq_set_vcpu_affinity +EXPORT_SYMBOL_GPL vmlinux 0x663bfef0 driver_attach +EXPORT_SYMBOL_GPL vmlinux 0x6641de6a rio_release_outb_mbox +EXPORT_SYMBOL_GPL vmlinux 0x668402aa crypto_put_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x669087d5 __pneigh_lookup +EXPORT_SYMBOL_GPL vmlinux 0x66a3f71f pci_try_reset_slot +EXPORT_SYMBOL_GPL vmlinux 0x66c6b8a7 tcp_ca_get_name_by_key +EXPORT_SYMBOL_GPL vmlinux 0x66d87d38 symbol_put_addr +EXPORT_SYMBOL_GPL vmlinux 0x66de0170 ata_platform_remove_one +EXPORT_SYMBOL_GPL vmlinux 0x66eceb7d rio_lock_device +EXPORT_SYMBOL_GPL vmlinux 0x66f61c20 perf_event_disable +EXPORT_SYMBOL_GPL vmlinux 0x66f8c924 sdio_disable_func +EXPORT_SYMBOL_GPL vmlinux 0x66f952e0 fwnode_property_read_string +EXPORT_SYMBOL_GPL vmlinux 0x6700fe49 mbox_request_channel_byname +EXPORT_SYMBOL_GPL vmlinux 0x6705a431 devres_open_group +EXPORT_SYMBOL_GPL vmlinux 0x670947eb serial8250_rx_chars +EXPORT_SYMBOL_GPL vmlinux 0x671a8a94 iptunnel_xmit +EXPORT_SYMBOL_GPL vmlinux 0x6739a503 balloon_set_new_target +EXPORT_SYMBOL_GPL vmlinux 0x673b5656 bpf_prog_realloc +EXPORT_SYMBOL_GPL vmlinux 0x6741ce57 skb_splice_bits +EXPORT_SYMBOL_GPL vmlinux 0x674e13e1 public_key_destroy +EXPORT_SYMBOL_GPL vmlinux 0x675012fd ipv4_sk_redirect +EXPORT_SYMBOL_GPL vmlinux 0x6754ac18 clk_get_parent_by_index +EXPORT_SYMBOL_GPL vmlinux 0x6770cbf9 virtio_device_restore +EXPORT_SYMBOL_GPL vmlinux 0x67794726 ping_bind +EXPORT_SYMBOL_GPL vmlinux 0x6780f670 sata_link_hardreset +EXPORT_SYMBOL_GPL vmlinux 0x67955ce6 profile_hits +EXPORT_SYMBOL_GPL vmlinux 0x67990714 part_round_stats +EXPORT_SYMBOL_GPL vmlinux 0x67aeffea rio_local_get_device_id +EXPORT_SYMBOL_GPL vmlinux 0x67aff256 swiotlb_map_page +EXPORT_SYMBOL_GPL vmlinux 0x67b04585 mmc_regulator_get_supply +EXPORT_SYMBOL_GPL vmlinux 0x67c5bae6 elv_register +EXPORT_SYMBOL_GPL vmlinux 0x67f03b69 ata_wait_after_reset +EXPORT_SYMBOL_GPL vmlinux 0x67f2d9ff find_get_pid +EXPORT_SYMBOL_GPL vmlinux 0x68090b3e pci_reset_function +EXPORT_SYMBOL_GPL vmlinux 0x6812cf8d __tracepoint_rpm_idle +EXPORT_SYMBOL_GPL vmlinux 0x682ac700 mnt_drop_write +EXPORT_SYMBOL_GPL vmlinux 0x6834ac43 srcu_barrier +EXPORT_SYMBOL_GPL vmlinux 0x6838a41d pci_restore_ats_state +EXPORT_SYMBOL_GPL vmlinux 0x683c85ad __wake_up_locked_key +EXPORT_SYMBOL_GPL vmlinux 0x68665c47 rtc_irq_set_freq +EXPORT_SYMBOL_GPL vmlinux 0x6883150c gpiochip_add +EXPORT_SYMBOL_GPL vmlinux 0x68956406 static_key_slow_dec +EXPORT_SYMBOL_GPL vmlinux 0x68c4d6bf rhashtable_walk_next +EXPORT_SYMBOL_GPL vmlinux 0x68d08b91 swiotlb_unmap_page +EXPORT_SYMBOL_GPL vmlinux 0x68d7a067 to_nvdimm_bus +EXPORT_SYMBOL_GPL vmlinux 0x68e2e3ce device_show_int +EXPORT_SYMBOL_GPL vmlinux 0x68ff5b3e xhci_resume +EXPORT_SYMBOL_GPL vmlinux 0x6908712c crypto_larval_kill +EXPORT_SYMBOL_GPL vmlinux 0x690b2921 da9052_enable_irq +EXPORT_SYMBOL_GPL vmlinux 0x6923ce63 irq_work_sync +EXPORT_SYMBOL_GPL vmlinux 0x69447467 ring_buffer_write +EXPORT_SYMBOL_GPL vmlinux 0x6945725e mpi_read_raw_data +EXPORT_SYMBOL_GPL vmlinux 0x694a02c0 tpm_pm_resume +EXPORT_SYMBOL_GPL vmlinux 0x6966bd2d to_nd_desc +EXPORT_SYMBOL_GPL vmlinux 0x697c5d0d tracing_snapshot_alloc +EXPORT_SYMBOL_GPL vmlinux 0x698a899f ring_buffer_peek +EXPORT_SYMBOL_GPL vmlinux 0x698f1b66 dev_forward_skb +EXPORT_SYMBOL_GPL vmlinux 0x6995fcc8 clockevents_unbind_device +EXPORT_SYMBOL_GPL vmlinux 0x69a52760 ata_port_abort +EXPORT_SYMBOL_GPL vmlinux 0x69c22999 fl6_merge_options +EXPORT_SYMBOL_GPL vmlinux 0x6a0cc8cf pci_reset_bus +EXPORT_SYMBOL_GPL vmlinux 0x6a11fc73 trace_event_raw_init +EXPORT_SYMBOL_GPL vmlinux 0x6a1733eb iommu_group_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x6a17bd35 attribute_container_register +EXPORT_SYMBOL_GPL vmlinux 0x6a1a29bf tcp_reno_cong_avoid +EXPORT_SYMBOL_GPL vmlinux 0x6a2a6a19 disable_kprobe +EXPORT_SYMBOL_GPL vmlinux 0x6a4f623b mmu_notifier_synchronize +EXPORT_SYMBOL_GPL vmlinux 0x6a56ea6a pskb_put +EXPORT_SYMBOL_GPL vmlinux 0x6a5a37ab acpi_dev_runtime_resume +EXPORT_SYMBOL_GPL vmlinux 0x6a5a9427 skcipher_geniv_exit +EXPORT_SYMBOL_GPL vmlinux 0x6a5fb566 rcu_sched_force_quiescent_state +EXPORT_SYMBOL_GPL vmlinux 0x6a63b260 device_find_child +EXPORT_SYMBOL_GPL vmlinux 0x6a65f151 md_ack_all_badblocks +EXPORT_SYMBOL_GPL vmlinux 0x6a6a3e5e wm5102_i2c_regmap +EXPORT_SYMBOL_GPL vmlinux 0x6a725728 regulator_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x6a7faf82 init_dummy_netdev +EXPORT_SYMBOL_GPL vmlinux 0x6a8441be cpci_hp_start +EXPORT_SYMBOL_GPL vmlinux 0x6a84afd6 crypto_init_spawn2 +EXPORT_SYMBOL_GPL vmlinux 0x6ab1b8bb usb_unlink_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x6acad21f acpi_get_cpuid +EXPORT_SYMBOL_GPL vmlinux 0x6b0dc565 xen_set_irq_priority +EXPORT_SYMBOL_GPL vmlinux 0x6b18871d uhci_reset_hc +EXPORT_SYMBOL_GPL vmlinux 0x6b29a1fa ring_buffer_event_length +EXPORT_SYMBOL_GPL vmlinux 0x6b3eaad6 alarm_start +EXPORT_SYMBOL_GPL vmlinux 0x6b419b1a device_for_each_child +EXPORT_SYMBOL_GPL vmlinux 0x6b5b0481 regulator_enable +EXPORT_SYMBOL_GPL vmlinux 0x6b5ef469 relay_switch_subbuf +EXPORT_SYMBOL_GPL vmlinux 0x6b62578d pci_bus_max_busnr +EXPORT_SYMBOL_GPL vmlinux 0x6b7469c9 crypto_alg_mod_lookup +EXPORT_SYMBOL_GPL vmlinux 0x6b81c38b power_supply_unreg_notifier +EXPORT_SYMBOL_GPL vmlinux 0x6b9fdb59 vfs_lock_file +EXPORT_SYMBOL_GPL vmlinux 0x6bbfde87 blk_mq_free_request +EXPORT_SYMBOL_GPL vmlinux 0x6bf1b90d dmi_memdev_name +EXPORT_SYMBOL_GPL vmlinux 0x6bfb1930 fb_deferred_io_init +EXPORT_SYMBOL_GPL vmlinux 0x6c003cc3 devm_clk_register +EXPORT_SYMBOL_GPL vmlinux 0x6c07d933 add_uevent_var +EXPORT_SYMBOL_GPL vmlinux 0x6c1251fd apei_exec_read_register +EXPORT_SYMBOL_GPL vmlinux 0x6c14dc56 blk_queue_rq_timed_out +EXPORT_SYMBOL_GPL vmlinux 0x6c18a414 tps6586x_write +EXPORT_SYMBOL_GPL vmlinux 0x6c1d0d76 pci_create_slot +EXPORT_SYMBOL_GPL vmlinux 0x6c209eab __alloc_percpu_gfp +EXPORT_SYMBOL_GPL vmlinux 0x6c389761 acpi_bus_get_private_data +EXPORT_SYMBOL_GPL vmlinux 0x6c40a520 xenbus_switch_state +EXPORT_SYMBOL_GPL vmlinux 0x6c4b6684 reset_control_assert +EXPORT_SYMBOL_GPL vmlinux 0x6c4ecfce ata_sff_wait_after_reset +EXPORT_SYMBOL_GPL vmlinux 0x6c5c5dd9 md_new_event +EXPORT_SYMBOL_GPL vmlinux 0x6c655913 register_acpi_hed_notifier +EXPORT_SYMBOL_GPL vmlinux 0x6c749afe __tracepoint_block_unplug +EXPORT_SYMBOL_GPL vmlinux 0x6c821f46 ohci_setup +EXPORT_SYMBOL_GPL vmlinux 0x6ca4bf88 async_synchronize_full_domain +EXPORT_SYMBOL_GPL vmlinux 0x6cbd4ddd debugfs_create_u32 +EXPORT_SYMBOL_GPL vmlinux 0x6cc0fdd8 debugfs_create_x16 +EXPORT_SYMBOL_GPL vmlinux 0x6ccb740b pci_user_read_config_byte +EXPORT_SYMBOL_GPL vmlinux 0x6cd21997 ata_tf_to_fis +EXPORT_SYMBOL_GPL vmlinux 0x6d01fc4b net_ns_type_operations +EXPORT_SYMBOL_GPL vmlinux 0x6d08f011 power_supply_set_battery_charged +EXPORT_SYMBOL_GPL vmlinux 0x6d091287 dev_pm_qos_expose_latency_tolerance +EXPORT_SYMBOL_GPL vmlinux 0x6d127426 regulator_set_load +EXPORT_SYMBOL_GPL vmlinux 0x6d1c8c42 pci_enable_ats +EXPORT_SYMBOL_GPL vmlinux 0x6d2ddff8 ahash_attr_alg +EXPORT_SYMBOL_GPL vmlinux 0x6d2fc5a6 net_namespace_list +EXPORT_SYMBOL_GPL vmlinux 0x6d339861 __tracepoint_io_page_fault +EXPORT_SYMBOL_GPL vmlinux 0x6d43f585 __mmu_notifier_invalidate_range_start +EXPORT_SYMBOL_GPL vmlinux 0x6d4debbb gpiod_set_debounce +EXPORT_SYMBOL_GPL vmlinux 0x6d5e83df cpufreq_cpu_get +EXPORT_SYMBOL_GPL vmlinux 0x6d674963 devres_remove +EXPORT_SYMBOL_GPL vmlinux 0x6ddb96af da9052_adc_read_temp +EXPORT_SYMBOL_GPL vmlinux 0x6e04a077 usb_bind_phy +EXPORT_SYMBOL_GPL vmlinux 0x6e0d8794 elv_unregister +EXPORT_SYMBOL_GPL vmlinux 0x6e2ed06f xenbus_probe_devices +EXPORT_SYMBOL_GPL vmlinux 0x6e46cba7 ata_bmdma_start +EXPORT_SYMBOL_GPL vmlinux 0x6e4ef58a bd_unlink_disk_holder +EXPORT_SYMBOL_GPL vmlinux 0x6e51afc8 percpu_ref_kill_and_confirm +EXPORT_SYMBOL_GPL vmlinux 0x6e58ddf0 gnttab_end_foreign_transfer_ref +EXPORT_SYMBOL_GPL vmlinux 0x6e741855 device_create +EXPORT_SYMBOL_GPL vmlinux 0x6e782c23 iomap_create_wc +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 0x6e8bc1c9 pwm_get +EXPORT_SYMBOL_GPL vmlinux 0x6e8fcc79 platform_get_resource +EXPORT_SYMBOL_GPL vmlinux 0x6e973c80 dev_attr_unload_heads +EXPORT_SYMBOL_GPL vmlinux 0x6e9fd061 pin_is_valid +EXPORT_SYMBOL_GPL vmlinux 0x6ea465ef ata_link_offline +EXPORT_SYMBOL_GPL vmlinux 0x6eb14e9d dm_path_uevent +EXPORT_SYMBOL_GPL vmlinux 0x6eb1f9e3 virtqueue_add_outbuf +EXPORT_SYMBOL_GPL vmlinux 0x6eb57855 devm_regulator_bulk_get +EXPORT_SYMBOL_GPL vmlinux 0x6ec58d79 device_store_int +EXPORT_SYMBOL_GPL vmlinux 0x6ef56d41 dax_clear_blocks +EXPORT_SYMBOL_GPL vmlinux 0x6f02d4f5 devm_regmap_field_free +EXPORT_SYMBOL_GPL vmlinux 0x6f18050e fat_add_entries +EXPORT_SYMBOL_GPL vmlinux 0x6f1ee69e kgdb_unregister_io_module +EXPORT_SYMBOL_GPL vmlinux 0x6f241e97 rio_mport_read_config_32 +EXPORT_SYMBOL_GPL vmlinux 0x6f27767c device_property_present +EXPORT_SYMBOL_GPL vmlinux 0x6f402ba6 acpi_dev_resource_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x6f51b9cd to_nvdimm +EXPORT_SYMBOL_GPL vmlinux 0x6f55d4f6 regulator_sync_voltage +EXPORT_SYMBOL_GPL vmlinux 0x6f666b63 phy_pm_runtime_get_sync +EXPORT_SYMBOL_GPL vmlinux 0x6f724db5 debugfs_print_regs32 +EXPORT_SYMBOL_GPL vmlinux 0x6f7c1e8b sysfs_create_mount_point +EXPORT_SYMBOL_GPL vmlinux 0x6f83d49c init_user_ns +EXPORT_SYMBOL_GPL vmlinux 0x6fca55ef rt_mutex_lock_interruptible +EXPORT_SYMBOL_GPL vmlinux 0x6fe382f6 rio_mport_chk_dev_access +EXPORT_SYMBOL_GPL vmlinux 0x6fe3d8cf ktime_add_safe +EXPORT_SYMBOL_GPL vmlinux 0x6ff607b6 crypto_get_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x7010825a fb_deferred_io_open +EXPORT_SYMBOL_GPL vmlinux 0x70201233 unregister_jprobe +EXPORT_SYMBOL_GPL vmlinux 0x7023d2a9 find_extend_vma +EXPORT_SYMBOL_GPL vmlinux 0x702ddb3a usb_control_msg +EXPORT_SYMBOL_GPL vmlinux 0x702eaaa0 set_foreign_p2m_mapping +EXPORT_SYMBOL_GPL vmlinux 0x7056b6f2 __clk_get_name +EXPORT_SYMBOL_GPL vmlinux 0x707ff1bb ata_xfer_mask2mode +EXPORT_SYMBOL_GPL vmlinux 0x708ce756 wm831x_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0x709f6755 rt_mutex_lock +EXPORT_SYMBOL_GPL vmlinux 0x70bb651d __tracepoint_block_rq_remap +EXPORT_SYMBOL_GPL vmlinux 0x70cf032f usb_hcd_irq +EXPORT_SYMBOL_GPL vmlinux 0x70dd1ce3 pci_hp_remove_module_link +EXPORT_SYMBOL_GPL vmlinux 0x710c73b6 crypto_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x711c112d blkcg_deactivate_policy +EXPORT_SYMBOL_GPL vmlinux 0x711e4e6d transport_configure_device +EXPORT_SYMBOL_GPL vmlinux 0x713793cf kernfs_find_and_get_ns +EXPORT_SYMBOL_GPL vmlinux 0x715d3b5a inet_unhash +EXPORT_SYMBOL_GPL vmlinux 0x7161b628 usb_hcd_unmap_urb_for_dma +EXPORT_SYMBOL_GPL vmlinux 0x716265c7 debugfs_initialized +EXPORT_SYMBOL_GPL vmlinux 0x7189ac68 rio_request_mport_dma +EXPORT_SYMBOL_GPL vmlinux 0x719c5c7e fsnotify +EXPORT_SYMBOL_GPL vmlinux 0x719e17ff clk_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0x71a66a73 powercap_register_zone +EXPORT_SYMBOL_GPL vmlinux 0x71d4d626 need_load_eval +EXPORT_SYMBOL_GPL vmlinux 0x71d5c53e sata_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x71dc9998 crypto_il_tab +EXPORT_SYMBOL_GPL vmlinux 0x72205d4a ip_route_output_flow +EXPORT_SYMBOL_GPL vmlinux 0x722bdb9c phy_create +EXPORT_SYMBOL_GPL vmlinux 0x72515d5a snprint_stack_trace +EXPORT_SYMBOL_GPL vmlinux 0x726d7379 pm_generic_suspend +EXPORT_SYMBOL_GPL vmlinux 0x72741f25 trace_vbprintk +EXPORT_SYMBOL_GPL vmlinux 0x7278d328 all_vm_events +EXPORT_SYMBOL_GPL vmlinux 0x727c6c5b regulator_bulk_enable +EXPORT_SYMBOL_GPL vmlinux 0x7280fce1 regulator_disable_regmap +EXPORT_SYMBOL_GPL vmlinux 0x728622b3 pingv6_prot +EXPORT_SYMBOL_GPL vmlinux 0x72b87fed ata_port_freeze +EXPORT_SYMBOL_GPL vmlinux 0x72c60c96 pci_remove_root_bus +EXPORT_SYMBOL_GPL vmlinux 0x72cf714d klist_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x72d31c0c ata_dev_set_feature +EXPORT_SYMBOL_GPL vmlinux 0x72eca2eb crypto_tfm_in_queue +EXPORT_SYMBOL_GPL vmlinux 0x73013896 xenbus_printf +EXPORT_SYMBOL_GPL vmlinux 0x731dba7a xen_domain_type +EXPORT_SYMBOL_GPL vmlinux 0x7345e56f ref_module +EXPORT_SYMBOL_GPL vmlinux 0x73510609 fl6_update_dst +EXPORT_SYMBOL_GPL vmlinux 0x7372edeb crypto_enqueue_request +EXPORT_SYMBOL_GPL vmlinux 0x737a2c44 sysfs_remove_group +EXPORT_SYMBOL_GPL vmlinux 0x738fd248 intel_msic_reg_update +EXPORT_SYMBOL_GPL vmlinux 0x73a48b4a ata_sff_std_ports +EXPORT_SYMBOL_GPL vmlinux 0x73a822b9 dev_attr_em_message +EXPORT_SYMBOL_GPL vmlinux 0x73b3f0b9 led_classdev_register +EXPORT_SYMBOL_GPL vmlinux 0x73b98231 asymmetric_key_generate_id +EXPORT_SYMBOL_GPL vmlinux 0x73b9e6c2 blk_end_request_err +EXPORT_SYMBOL_GPL vmlinux 0x73c832f2 ata_dev_classify +EXPORT_SYMBOL_GPL vmlinux 0x73d69364 ring_buffer_change_overwrite +EXPORT_SYMBOL_GPL vmlinux 0x73d7e597 xen_swiotlb_map_page +EXPORT_SYMBOL_GPL vmlinux 0x73f30101 __pm_runtime_suspend +EXPORT_SYMBOL_GPL vmlinux 0x741051cc bus_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0x743a165e ata_pack_xfermask +EXPORT_SYMBOL_GPL vmlinux 0x74457e56 apei_resources_fini +EXPORT_SYMBOL_GPL vmlinux 0x744ff12c pinctrl_dev_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x7452adff user_return_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x7464ea38 dev_pm_qos_add_global_notifier +EXPORT_SYMBOL_GPL vmlinux 0x746874c1 blk_mq_freeze_queue_start +EXPORT_SYMBOL_GPL vmlinux 0x74788a7f usb_debug_root +EXPORT_SYMBOL_GPL vmlinux 0x748a23e5 __efivar_entry_delete +EXPORT_SYMBOL_GPL vmlinux 0x748d801a pcap_adc_sync +EXPORT_SYMBOL_GPL vmlinux 0x749942a8 pm_generic_thaw_early +EXPORT_SYMBOL_GPL vmlinux 0x74b5ea68 lcm_not_zero +EXPORT_SYMBOL_GPL vmlinux 0x74b80dcf root_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x74baf17a tracing_is_on +EXPORT_SYMBOL_GPL vmlinux 0x74bf4d62 regulator_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x74c08941 kvm_async_pf_task_wake +EXPORT_SYMBOL_GPL vmlinux 0x74deb10c used_vectors +EXPORT_SYMBOL_GPL vmlinux 0x74e9097b crypto_init_ahash_spawn +EXPORT_SYMBOL_GPL vmlinux 0x75022ff0 component_bind_all +EXPORT_SYMBOL_GPL vmlinux 0x7512fa30 acpi_create_platform_device +EXPORT_SYMBOL_GPL vmlinux 0x7513ac59 pci_disable_pasid +EXPORT_SYMBOL_GPL vmlinux 0x751b8a72 spi_sync +EXPORT_SYMBOL_GPL vmlinux 0x7521afb6 leave_mm +EXPORT_SYMBOL_GPL vmlinux 0x7522f3ba irq_modify_status +EXPORT_SYMBOL_GPL vmlinux 0x753ca214 ata_link_abort +EXPORT_SYMBOL_GPL vmlinux 0x7549e2ee __nvdimm_bus_register +EXPORT_SYMBOL_GPL vmlinux 0x754d31c2 virtio_device_freeze +EXPORT_SYMBOL_GPL vmlinux 0x755193f8 blkcg_root +EXPORT_SYMBOL_GPL vmlinux 0x7552eafc ata_cable_80wire +EXPORT_SYMBOL_GPL vmlinux 0x75575ac9 fat_free_clusters +EXPORT_SYMBOL_GPL vmlinux 0x75689e95 tty_port_register_device +EXPORT_SYMBOL_GPL vmlinux 0x758a782e blk_fill_rwbs +EXPORT_SYMBOL_GPL vmlinux 0x7594a1a7 cpufreq_unregister_governor +EXPORT_SYMBOL_GPL vmlinux 0x75c13673 uart_handle_cts_change +EXPORT_SYMBOL_GPL vmlinux 0x75c2b9f1 memalloc_socks +EXPORT_SYMBOL_GPL vmlinux 0x75cc5f17 da9052_free_irq +EXPORT_SYMBOL_GPL vmlinux 0x7642fdba ata_sff_dev_classify +EXPORT_SYMBOL_GPL vmlinux 0x764b102b dev_coredumpv +EXPORT_SYMBOL_GPL vmlinux 0x764ed83d wait_on_page_bit_killable_timeout +EXPORT_SYMBOL_GPL vmlinux 0x765cf5f4 gpiochip_add_pin_range +EXPORT_SYMBOL_GPL vmlinux 0x7681946c unregister_pm_notifier +EXPORT_SYMBOL_GPL vmlinux 0x76939354 blk_set_queue_dying +EXPORT_SYMBOL_GPL vmlinux 0x76b27078 blocking_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0x76b47336 ata_sas_async_probe +EXPORT_SYMBOL_GPL vmlinux 0x76bb5b9c ip6_datagram_connect +EXPORT_SYMBOL_GPL vmlinux 0x76c072ff regulator_map_voltage_ascend +EXPORT_SYMBOL_GPL vmlinux 0x76d9b876 clk_set_rate +EXPORT_SYMBOL_GPL vmlinux 0x76e11e84 securityfs_create_dir +EXPORT_SYMBOL_GPL vmlinux 0x770cf981 tpm_send +EXPORT_SYMBOL_GPL vmlinux 0x7712771a unbind_from_irqhandler +EXPORT_SYMBOL_GPL vmlinux 0x7729cbdd task_handoff_register +EXPORT_SYMBOL_GPL vmlinux 0x7754bc11 dm_hold +EXPORT_SYMBOL_GPL vmlinux 0x7757b51a clk_unregister +EXPORT_SYMBOL_GPL vmlinux 0x775a6ef5 kvm_read_and_reset_pf_reason +EXPORT_SYMBOL_GPL vmlinux 0x776eae43 do_unbind_con_driver +EXPORT_SYMBOL_GPL vmlinux 0x77899325 gpiod_export_link +EXPORT_SYMBOL_GPL vmlinux 0x779057b7 ipv4_sk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x7790adc0 aout_dump_debugregs +EXPORT_SYMBOL_GPL vmlinux 0x77a976cc wm8350_device_init +EXPORT_SYMBOL_GPL vmlinux 0x77af879b generic_fh_to_parent +EXPORT_SYMBOL_GPL vmlinux 0x782821d3 irq_create_of_mapping +EXPORT_SYMBOL_GPL vmlinux 0x782adb74 hpet_rtc_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x78361e1d serial8250_rpm_get +EXPORT_SYMBOL_GPL vmlinux 0x784d6d61 rio_mport_get_efb +EXPORT_SYMBOL_GPL vmlinux 0x78575bee atomic_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x785c3647 __add_pages +EXPORT_SYMBOL_GPL vmlinux 0x7869f7a0 ata_sff_prereset +EXPORT_SYMBOL_GPL vmlinux 0x786dfc9d debugfs_create_size_t +EXPORT_SYMBOL_GPL vmlinux 0x7874b5ec unix_table_lock +EXPORT_SYMBOL_GPL vmlinux 0x787c7b13 crypto_alloc_shash +EXPORT_SYMBOL_GPL vmlinux 0x789de01f sb800_prefetch +EXPORT_SYMBOL_GPL vmlinux 0x78a487dc __module_text_address +EXPORT_SYMBOL_GPL vmlinux 0x78ae8175 smp_call_function_single_async +EXPORT_SYMBOL_GPL vmlinux 0x78bd605e locks_release_private +EXPORT_SYMBOL_GPL vmlinux 0x78ecd58a shmem_read_mapping_page_gfp +EXPORT_SYMBOL_GPL vmlinux 0x78ecdf83 spi_setup +EXPORT_SYMBOL_GPL vmlinux 0x78f6062b call_filter_check_discard +EXPORT_SYMBOL_GPL vmlinux 0x78f96cbd sdio_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x78ff2dc3 usb_set_interface +EXPORT_SYMBOL_GPL vmlinux 0x790a25e6 sysfs_create_group +EXPORT_SYMBOL_GPL vmlinux 0x7913741d __tracepoint_mc_event +EXPORT_SYMBOL_GPL vmlinux 0x7932bb12 rio_dma_prep_xfer +EXPORT_SYMBOL_GPL vmlinux 0x7938ecd3 perf_pmu_unregister +EXPORT_SYMBOL_GPL vmlinux 0x79420621 hwmon_device_register +EXPORT_SYMBOL_GPL vmlinux 0x7944e0fc tracing_off +EXPORT_SYMBOL_GPL vmlinux 0x794b7271 orderly_reboot +EXPORT_SYMBOL_GPL vmlinux 0x795a472a inet6_destroy_sock +EXPORT_SYMBOL_GPL vmlinux 0x796c2d48 dm_get_md +EXPORT_SYMBOL_GPL vmlinux 0x79763252 trace_buffer_unlock_commit_regs +EXPORT_SYMBOL_GPL vmlinux 0x7991fd8d crash_vmclear_loaded_vmcss +EXPORT_SYMBOL_GPL vmlinux 0x79a71c48 kernel_stack_pointer +EXPORT_SYMBOL_GPL vmlinux 0x79c9a76f gpiod_set_raw_array_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x79d52d5c dev_pm_qos_add_notifier +EXPORT_SYMBOL_GPL vmlinux 0x79d65eed scsi_flush_work +EXPORT_SYMBOL_GPL vmlinux 0x79defbe1 kthread_should_park +EXPORT_SYMBOL_GPL vmlinux 0x79e69460 intel_iommu_gfx_mapped +EXPORT_SYMBOL_GPL vmlinux 0x79f41d5b try_get_online_cpus +EXPORT_SYMBOL_GPL vmlinux 0x7a093833 set_memory_array_wt +EXPORT_SYMBOL_GPL vmlinux 0x7a150063 usb_get_from_anchor +EXPORT_SYMBOL_GPL vmlinux 0x7a2e4b44 ezx_pcap_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x7a319404 clk_register_fixed_rate +EXPORT_SYMBOL_GPL vmlinux 0x7a4b79fa proc_mkdir_data +EXPORT_SYMBOL_GPL vmlinux 0x7a4c1438 pv_info +EXPORT_SYMBOL_GPL vmlinux 0x7a587ba1 blockdev_superblock +EXPORT_SYMBOL_GPL vmlinux 0x7a59bf40 save_stack_trace_tsk +EXPORT_SYMBOL_GPL vmlinux 0x7a944007 rcu_idle_enter +EXPORT_SYMBOL_GPL vmlinux 0x7ab3ca18 eventfd_ctx_read +EXPORT_SYMBOL_GPL vmlinux 0x7ac8e5b0 acpi_gsi_to_irq +EXPORT_SYMBOL_GPL vmlinux 0x7aeb961d usb_get_dev +EXPORT_SYMBOL_GPL vmlinux 0x7aeef3c6 dummy_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0x7af9214d skb_segment +EXPORT_SYMBOL_GPL vmlinux 0x7b0f1ab3 ring_buffer_free_read_page +EXPORT_SYMBOL_GPL vmlinux 0x7b1569d6 udp6_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x7b1d544d edac_handler_set +EXPORT_SYMBOL_GPL vmlinux 0x7b202401 usb_poison_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x7b309f87 __bpf_prog_free +EXPORT_SYMBOL_GPL vmlinux 0x7b3a0c20 ipv6_stub +EXPORT_SYMBOL_GPL vmlinux 0x7b40ccb4 reset_controller_unregister +EXPORT_SYMBOL_GPL vmlinux 0x7b6fa72c pci_user_write_config_byte +EXPORT_SYMBOL_GPL vmlinux 0x7b75d027 aead_geniv_alloc +EXPORT_SYMBOL_GPL vmlinux 0x7b90d1a9 bind_virq_to_irqhandler +EXPORT_SYMBOL_GPL vmlinux 0x7b9cf5c1 acpi_driver_match_device +EXPORT_SYMBOL_GPL vmlinux 0x7ba31a44 pinctrl_dev_get_name +EXPORT_SYMBOL_GPL vmlinux 0x7bc3d8b2 ip6_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x7bc4c8b5 iommu_set_fault_handler +EXPORT_SYMBOL_GPL vmlinux 0x7bcd5a64 regulator_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x7bef2f94 ata_host_resume +EXPORT_SYMBOL_GPL vmlinux 0x7bff4171 unregister_kprobes +EXPORT_SYMBOL_GPL vmlinux 0x7c111a7c gpiochip_lock_as_irq +EXPORT_SYMBOL_GPL vmlinux 0x7c346357 pkey_algo +EXPORT_SYMBOL_GPL vmlinux 0x7c445519 ata_scsi_unlock_native_capacity +EXPORT_SYMBOL_GPL vmlinux 0x7c613d83 xenbus_dev_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x7c9a7371 clk_prepare +EXPORT_SYMBOL_GPL vmlinux 0x7cd6f042 cpufreq_get_current_driver +EXPORT_SYMBOL_GPL vmlinux 0x7ceaf0d5 generic_handle_irq +EXPORT_SYMBOL_GPL vmlinux 0x7cf7815c blk_mq_cancel_requeue_work +EXPORT_SYMBOL_GPL vmlinux 0x7d00c65b nd_synchronize +EXPORT_SYMBOL_GPL vmlinux 0x7d226d30 iommu_present +EXPORT_SYMBOL_GPL vmlinux 0x7d324635 crypto_aes_set_key +EXPORT_SYMBOL_GPL vmlinux 0x7d3be80f gen_pool_avail +EXPORT_SYMBOL_GPL vmlinux 0x7d51f658 disk_part_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x7d59dd46 pm_wq +EXPORT_SYMBOL_GPL vmlinux 0x7d5aa4af pm_relax +EXPORT_SYMBOL_GPL vmlinux 0x7d927e7f crypto_alloc_pcomp +EXPORT_SYMBOL_GPL vmlinux 0x7d96b82a ip6_route_lookup +EXPORT_SYMBOL_GPL vmlinux 0x7da36638 wm8350_reg_lock +EXPORT_SYMBOL_GPL vmlinux 0x7dab26b6 wm831x_isinkv_values +EXPORT_SYMBOL_GPL vmlinux 0x7dc39c0e gpiochip_request_own_desc +EXPORT_SYMBOL_GPL vmlinux 0x7dc481d7 __rio_local_write_config_16 +EXPORT_SYMBOL_GPL vmlinux 0x7dd268ac remove_irq +EXPORT_SYMBOL_GPL vmlinux 0x7dd3786f sock_diag_unregister +EXPORT_SYMBOL_GPL vmlinux 0x7dda30af unregister_tracepoint_module_notifier +EXPORT_SYMBOL_GPL vmlinux 0x7ddfdf6c kernel_kobj +EXPORT_SYMBOL_GPL vmlinux 0x7de51482 unregister_kretprobes +EXPORT_SYMBOL_GPL vmlinux 0x7de65a03 acpi_lpat_free_conversion_table +EXPORT_SYMBOL_GPL vmlinux 0x7df05e52 extcon_unregister_interest +EXPORT_SYMBOL_GPL vmlinux 0x7e5f9e10 pci_add_dynid +EXPORT_SYMBOL_GPL vmlinux 0x7e64181d usb_calc_bus_time +EXPORT_SYMBOL_GPL vmlinux 0x7e695365 pci_load_and_free_saved_state +EXPORT_SYMBOL_GPL vmlinux 0x7e703ca8 acpi_gpiochip_free_interrupts +EXPORT_SYMBOL_GPL vmlinux 0x7e7c8e79 wm831x_device_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x7e92fb46 vma_kernel_pagesize +EXPORT_SYMBOL_GPL vmlinux 0x7ea709f0 i2c_new_probed_device +EXPORT_SYMBOL_GPL vmlinux 0x7ea96e8b component_del +EXPORT_SYMBOL_GPL vmlinux 0x7ee8dca7 blk_queue_rq_timeout +EXPORT_SYMBOL_GPL vmlinux 0x7ee9f6dd usb_add_hcd +EXPORT_SYMBOL_GPL vmlinux 0x7ef48b2f usb_bus_list_lock +EXPORT_SYMBOL_GPL vmlinux 0x7f096180 wm831x_auxadc_read +EXPORT_SYMBOL_GPL vmlinux 0x7f51cdb8 __mmu_notifier_invalidate_range_end +EXPORT_SYMBOL_GPL vmlinux 0x7f558aa3 crypto_alloc_tfm +EXPORT_SYMBOL_GPL vmlinux 0x7fb2fd9a ata_dummy_port_info +EXPORT_SYMBOL_GPL vmlinux 0x7fd342e6 gpiod_count +EXPORT_SYMBOL_GPL vmlinux 0x80166886 usb_match_id +EXPORT_SYMBOL_GPL vmlinux 0x8031fd0a desc_to_gpio +EXPORT_SYMBOL_GPL vmlinux 0x803861ed usb_deregister_dev +EXPORT_SYMBOL_GPL vmlinux 0x804a89e3 inet_hash_connect +EXPORT_SYMBOL_GPL vmlinux 0x805430b9 irq_domain_add_legacy +EXPORT_SYMBOL_GPL vmlinux 0x805bb650 ohci_restart +EXPORT_SYMBOL_GPL vmlinux 0x8065a4fc mmu_notifier_call_srcu +EXPORT_SYMBOL_GPL vmlinux 0x808d17db tty_buffer_unlock_exclusive +EXPORT_SYMBOL_GPL vmlinux 0x808ec1a3 crypto_alg_tested +EXPORT_SYMBOL_GPL vmlinux 0x8090b095 blk_rq_err_bytes +EXPORT_SYMBOL_GPL vmlinux 0x80ab852d rt_mutex_unlock +EXPORT_SYMBOL_GPL vmlinux 0x80b88469 __mnt_drop_write +EXPORT_SYMBOL_GPL vmlinux 0x80bfe791 get_dcookie +EXPORT_SYMBOL_GPL vmlinux 0x80c3d2a7 skb_partial_csum_set +EXPORT_SYMBOL_GPL vmlinux 0x80c68137 nf_log_buf_close +EXPORT_SYMBOL_GPL vmlinux 0x80d5e57a mpi_free +EXPORT_SYMBOL_GPL vmlinux 0x80f3268f __trace_printk +EXPORT_SYMBOL_GPL vmlinux 0x80f8589f trace_seq_putc +EXPORT_SYMBOL_GPL vmlinux 0x8101168a acpi_device_modalias +EXPORT_SYMBOL_GPL vmlinux 0x8114467b cn_netlink_send_mult +EXPORT_SYMBOL_GPL vmlinux 0x811dc334 usb_unregister_notify +EXPORT_SYMBOL_GPL vmlinux 0x8125bc71 phy_exit +EXPORT_SYMBOL_GPL vmlinux 0x8149ea54 ata_timing_find_mode +EXPORT_SYMBOL_GPL vmlinux 0x8153b8c9 apic +EXPORT_SYMBOL_GPL vmlinux 0x815588a6 clk_enable +EXPORT_SYMBOL_GPL vmlinux 0x816d1cbe power_supply_set_property +EXPORT_SYMBOL_GPL vmlinux 0x818bffda perf_event_enable +EXPORT_SYMBOL_GPL vmlinux 0x81bd8f7a usb_disable_ltm +EXPORT_SYMBOL_GPL vmlinux 0x81c4a51b out_of_line_wait_on_bit_timeout +EXPORT_SYMBOL_GPL vmlinux 0x81c9380e gpiod_set_array_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x81f25dc5 get_net_ns_by_fd +EXPORT_SYMBOL_GPL vmlinux 0x822ad4c7 percpu_ref_init +EXPORT_SYMBOL_GPL vmlinux 0x8238be50 usb_get_current_frame_number +EXPORT_SYMBOL_GPL vmlinux 0x8239a163 devm_led_classdev_register +EXPORT_SYMBOL_GPL vmlinux 0x8239e96c devm_kasprintf +EXPORT_SYMBOL_GPL vmlinux 0x82461948 pinctrl_add_gpio_range +EXPORT_SYMBOL_GPL vmlinux 0x82599238 usb_put_intf +EXPORT_SYMBOL_GPL vmlinux 0x825f61c2 each_symbol_section +EXPORT_SYMBOL_GPL vmlinux 0x82673a73 preempt_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x8276dd3d iommu_group_add_device +EXPORT_SYMBOL_GPL vmlinux 0x82978442 call_srcu +EXPORT_SYMBOL_GPL vmlinux 0x82991fc7 blkcg_policy_register +EXPORT_SYMBOL_GPL vmlinux 0x82a236f1 bpf_prog_get +EXPORT_SYMBOL_GPL vmlinux 0x82ad570f ata_eh_qc_retry +EXPORT_SYMBOL_GPL vmlinux 0x82b31059 pci_enable_pasid +EXPORT_SYMBOL_GPL vmlinux 0x82c6d318 acpi_dma_request_slave_chan_by_name +EXPORT_SYMBOL_GPL vmlinux 0x82d79b51 sysctl_vfs_cache_pressure +EXPORT_SYMBOL_GPL vmlinux 0x82dbec19 erst_write +EXPORT_SYMBOL_GPL vmlinux 0x82f1b15c xfrm_audit_state_notfound +EXPORT_SYMBOL_GPL vmlinux 0x82f425d9 pinctrl_register +EXPORT_SYMBOL_GPL vmlinux 0x83083b80 crypto_lookup_template +EXPORT_SYMBOL_GPL vmlinux 0x83128886 get_current_tty +EXPORT_SYMBOL_GPL vmlinux 0x831d4f76 pinctrl_find_and_add_gpio_range +EXPORT_SYMBOL_GPL vmlinux 0x83365784 handle_simple_irq +EXPORT_SYMBOL_GPL vmlinux 0x834616bb sdev_evt_alloc +EXPORT_SYMBOL_GPL vmlinux 0x834f69f4 device_for_each_child_reverse +EXPORT_SYMBOL_GPL vmlinux 0x8357920e usb_wakeup_notification +EXPORT_SYMBOL_GPL vmlinux 0x835ae30f adp5520_read +EXPORT_SYMBOL_GPL vmlinux 0x835b6b93 __inet_lookup_established +EXPORT_SYMBOL_GPL vmlinux 0x8388653d exportfs_encode_fh +EXPORT_SYMBOL_GPL vmlinux 0x838b13e7 ring_buffer_free +EXPORT_SYMBOL_GPL vmlinux 0x83932dc4 acpiphp_register_attention +EXPORT_SYMBOL_GPL vmlinux 0x839cf5d6 sdio_enable_func +EXPORT_SYMBOL_GPL vmlinux 0x83a5ae2e __tracepoint_rpm_resume +EXPORT_SYMBOL_GPL vmlinux 0x83a6f13f devm_regmap_field_alloc +EXPORT_SYMBOL_GPL vmlinux 0x83e18e3e nvdimm_create +EXPORT_SYMBOL_GPL vmlinux 0x8400f7ac platform_device_register +EXPORT_SYMBOL_GPL vmlinux 0x8401061f pinctrl_unregister +EXPORT_SYMBOL_GPL vmlinux 0x840fa8e1 regulator_get_bypass_regmap +EXPORT_SYMBOL_GPL vmlinux 0x84215d35 xenbus_alloc_evtchn +EXPORT_SYMBOL_GPL vmlinux 0x843d346a unix_inq_len +EXPORT_SYMBOL_GPL vmlinux 0x843d70ef acpi_is_root_bridge +EXPORT_SYMBOL_GPL vmlinux 0x8462bdcf btree_grim_visitor +EXPORT_SYMBOL_GPL vmlinux 0x84989f70 devm_free_pages +EXPORT_SYMBOL_GPL vmlinux 0x84ced064 regmap_register_patch +EXPORT_SYMBOL_GPL vmlinux 0x84da7fe2 xfrm_audit_state_replay_overflow +EXPORT_SYMBOL_GPL vmlinux 0x84e839a9 acpi_os_unmap_iomem +EXPORT_SYMBOL_GPL vmlinux 0x85050965 __irq_alloc_descs +EXPORT_SYMBOL_GPL vmlinux 0x8506baa8 clk_unregister_gate +EXPORT_SYMBOL_GPL vmlinux 0x85216155 ezx_pcap_read +EXPORT_SYMBOL_GPL vmlinux 0x852245f1 usb_gen_phy_init +EXPORT_SYMBOL_GPL vmlinux 0x852e19b5 pci_rescan_bus +EXPORT_SYMBOL_GPL vmlinux 0x853d92f6 xenbus_dev_probe +EXPORT_SYMBOL_GPL vmlinux 0x8560891e ipv6_proxy_select_ident +EXPORT_SYMBOL_GPL vmlinux 0x856629e7 __tracepoint_rpm_return_int +EXPORT_SYMBOL_GPL vmlinux 0x8574ca6c gpio_request_array +EXPORT_SYMBOL_GPL vmlinux 0x85c7f674 ring_buffer_normalize_time_stamp +EXPORT_SYMBOL_GPL vmlinux 0x85cb2c45 xen_has_pv_devices +EXPORT_SYMBOL_GPL vmlinux 0x85d7edfd hpet_set_periodic_freq +EXPORT_SYMBOL_GPL vmlinux 0x85ff2463 mddev_congested +EXPORT_SYMBOL_GPL vmlinux 0x8606c835 cpufreq_generic_init +EXPORT_SYMBOL_GPL vmlinux 0x861284ca crypto_alloc_aead +EXPORT_SYMBOL_GPL vmlinux 0x863ee485 ata_acpi_stm +EXPORT_SYMBOL_GPL vmlinux 0x8654be58 hv_remove_vmbus_irq +EXPORT_SYMBOL_GPL vmlinux 0x86623fd7 notify_remote_via_irq +EXPORT_SYMBOL_GPL vmlinux 0x86786286 klist_add_behind +EXPORT_SYMBOL_GPL vmlinux 0x86819bc6 irq_ts_restore +EXPORT_SYMBOL_GPL vmlinux 0x868784cb __symbol_get +EXPORT_SYMBOL_GPL vmlinux 0x86972a78 devm_regulator_get +EXPORT_SYMBOL_GPL vmlinux 0x869e7bf9 srcu_init_notifier_head +EXPORT_SYMBOL_GPL vmlinux 0x86a51007 gnttab_end_foreign_transfer +EXPORT_SYMBOL_GPL vmlinux 0x86adf909 fb_bl_default_curve +EXPORT_SYMBOL_GPL vmlinux 0x86bf23ba regmap_async_complete_cb +EXPORT_SYMBOL_GPL vmlinux 0x86e57597 __fat_fs_error +EXPORT_SYMBOL_GPL vmlinux 0x86e83939 irq_generic_chip_ops +EXPORT_SYMBOL_GPL vmlinux 0x86f0d974 get_cached_msi_msg +EXPORT_SYMBOL_GPL vmlinux 0x86f6b99d synchronize_rcu_expedited +EXPORT_SYMBOL_GPL vmlinux 0x86f8c910 pcap_set_ts_bits +EXPORT_SYMBOL_GPL vmlinux 0x86f9d0b0 nf_ipv6_ops +EXPORT_SYMBOL_GPL vmlinux 0x870e16b7 xen_test_irq_shared +EXPORT_SYMBOL_GPL vmlinux 0x870eb721 devm_phy_create +EXPORT_SYMBOL_GPL vmlinux 0x872aff14 pm_wakeup_event +EXPORT_SYMBOL_GPL vmlinux 0x873fbaea edac_atomic_assert_error +EXPORT_SYMBOL_GPL vmlinux 0x87455a9c set_primary_fwnode +EXPORT_SYMBOL_GPL vmlinux 0x875f2097 wm5110_patch +EXPORT_SYMBOL_GPL vmlinux 0x877a1924 locks_alloc_lock +EXPORT_SYMBOL_GPL vmlinux 0x87861648 usb_queue_reset_device +EXPORT_SYMBOL_GPL vmlinux 0x878e05db virtqueue_kick +EXPORT_SYMBOL_GPL vmlinux 0x87984b16 __tracepoint_cpu_idle +EXPORT_SYMBOL_GPL vmlinux 0x87d97581 ata_sff_exec_command +EXPORT_SYMBOL_GPL vmlinux 0x87fab7c0 usb_poison_urb +EXPORT_SYMBOL_GPL vmlinux 0x8810ad5e crypto_xor +EXPORT_SYMBOL_GPL vmlinux 0x88136838 wm8997_i2c_regmap +EXPORT_SYMBOL_GPL vmlinux 0x88158ddd regmap_fields_update_bits +EXPORT_SYMBOL_GPL vmlinux 0x88189ab2 crypto_drop_spawn +EXPORT_SYMBOL_GPL vmlinux 0x8831f8b1 kmap_atomic_pfn +EXPORT_SYMBOL_GPL vmlinux 0x883c2740 __cookie_v6_init_sequence +EXPORT_SYMBOL_GPL vmlinux 0x884e8622 regmap_field_alloc +EXPORT_SYMBOL_GPL vmlinux 0x885ef5a4 cpufreq_generic_attr +EXPORT_SYMBOL_GPL vmlinux 0x887bc93c pci_user_read_config_word +EXPORT_SYMBOL_GPL vmlinux 0x88927a61 regulator_get_optional +EXPORT_SYMBOL_GPL vmlinux 0x8898812b tcp_get_info +EXPORT_SYMBOL_GPL vmlinux 0x889e16a3 rtnl_register +EXPORT_SYMBOL_GPL vmlinux 0x889eecdb crypto_chain +EXPORT_SYMBOL_GPL vmlinux 0x88ab6fe3 kgdb_active +EXPORT_SYMBOL_GPL vmlinux 0x88b5647c trace_clock_local +EXPORT_SYMBOL_GPL vmlinux 0x88b7fc9a dma_buf_mmap +EXPORT_SYMBOL_GPL vmlinux 0x88e833dc serial8250_tx_chars +EXPORT_SYMBOL_GPL vmlinux 0x88e8e224 __ablkcipher_walk_complete +EXPORT_SYMBOL_GPL vmlinux 0x88eb74a3 fuse_get_req +EXPORT_SYMBOL_GPL vmlinux 0x88ffeaca get_kernel_page +EXPORT_SYMBOL_GPL vmlinux 0x89037248 scsi_mode_select +EXPORT_SYMBOL_GPL vmlinux 0x891a5a7f gnttab_max_grant_frames +EXPORT_SYMBOL_GPL vmlinux 0x891e6a40 dev_pm_clear_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0x8923ce42 napi_hash_add +EXPORT_SYMBOL_GPL vmlinux 0x8924eb1e rcu_force_quiescent_state +EXPORT_SYMBOL_GPL vmlinux 0x89485687 iommu_group_put +EXPORT_SYMBOL_GPL vmlinux 0x8956aeae apei_exec_ctx_init +EXPORT_SYMBOL_GPL vmlinux 0x8976c00f ata_sff_data_xfer32 +EXPORT_SYMBOL_GPL vmlinux 0x89978738 i2c_adapter_type +EXPORT_SYMBOL_GPL vmlinux 0x899d10aa sysfs_create_link +EXPORT_SYMBOL_GPL vmlinux 0x89a2b698 ping_unhash +EXPORT_SYMBOL_GPL vmlinux 0x89b2272e i2c_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0x89bbafc6 usb_register_notify +EXPORT_SYMBOL_GPL vmlinux 0x89dbdcc1 __tracepoint_map +EXPORT_SYMBOL_GPL vmlinux 0x89fd2894 devm_regulator_register +EXPORT_SYMBOL_GPL vmlinux 0x8a1caf67 adp5520_write +EXPORT_SYMBOL_GPL vmlinux 0x8a559846 gnttab_setup_auto_xlat_frames +EXPORT_SYMBOL_GPL vmlinux 0x8a5ea360 __blk_put_request +EXPORT_SYMBOL_GPL vmlinux 0x8a78989f irq_from_evtchn +EXPORT_SYMBOL_GPL vmlinux 0x8a7cb9c4 platform_thermal_package_rate_control +EXPORT_SYMBOL_GPL vmlinux 0x8aa08803 class_dev_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x8abacc47 get_max_files +EXPORT_SYMBOL_GPL vmlinux 0x8ae01a0d gnttab_unmap_refs_async +EXPORT_SYMBOL_GPL vmlinux 0x8af23ee8 wm8350_block_read +EXPORT_SYMBOL_GPL vmlinux 0x8b04668e bind_interdomain_evtchn_to_irqhandler +EXPORT_SYMBOL_GPL vmlinux 0x8b0909b3 rio_release_outb_dbell +EXPORT_SYMBOL_GPL vmlinux 0x8b149c36 clk_is_match +EXPORT_SYMBOL_GPL vmlinux 0x8b2430ea pci_intx_mask_supported +EXPORT_SYMBOL_GPL vmlinux 0x8b3d7ff8 __online_page_free +EXPORT_SYMBOL_GPL vmlinux 0x8b6c8de7 acpi_gpiochip_request_interrupts +EXPORT_SYMBOL_GPL vmlinux 0x8b85c4cc cpufreq_frequency_table_get_index +EXPORT_SYMBOL_GPL vmlinux 0x8b93a17a unregister_pernet_device +EXPORT_SYMBOL_GPL vmlinux 0x8b94d0c3 dma_wait_for_async_tx +EXPORT_SYMBOL_GPL vmlinux 0x8b9e7855 pci_find_ext_capability +EXPORT_SYMBOL_GPL vmlinux 0x8ba96ca8 sysfs_rename_link_ns +EXPORT_SYMBOL_GPL vmlinux 0x8babee66 ata_sff_wait_ready +EXPORT_SYMBOL_GPL vmlinux 0x8bc0f86b pci_vfs_assigned +EXPORT_SYMBOL_GPL vmlinux 0x8bebed05 usb_hcd_amd_remote_wakeup_quirk +EXPORT_SYMBOL_GPL vmlinux 0x8bf650e3 get_net_ns_by_pid +EXPORT_SYMBOL_GPL vmlinux 0x8c0215f2 pm_system_wakeup +EXPORT_SYMBOL_GPL vmlinux 0x8c03d20c destroy_workqueue +EXPORT_SYMBOL_GPL vmlinux 0x8c06a108 xenbus_transaction_start +EXPORT_SYMBOL_GPL vmlinux 0x8c0caefc da9052_adc_manual_read +EXPORT_SYMBOL_GPL vmlinux 0x8c163786 pm_runtime_barrier +EXPORT_SYMBOL_GPL vmlinux 0x8c646600 edac_report_status +EXPORT_SYMBOL_GPL vmlinux 0x8c6da367 nvdimm_provider_data +EXPORT_SYMBOL_GPL vmlinux 0x8c73fdb7 xenbus_probe_node +EXPORT_SYMBOL_GPL vmlinux 0x8c743fb6 reset_control_status +EXPORT_SYMBOL_GPL vmlinux 0x8c7b34ba power_supply_changed +EXPORT_SYMBOL_GPL vmlinux 0x8c8fd5aa x509_cert_parse +EXPORT_SYMBOL_GPL vmlinux 0x8c9d1661 arch_phys_wc_index +EXPORT_SYMBOL_GPL vmlinux 0x8cc877b2 sysfs_merge_group +EXPORT_SYMBOL_GPL vmlinux 0x8cd9f935 setup_APIC_eilvt +EXPORT_SYMBOL_GPL vmlinux 0x8cded0ff pci_load_saved_state +EXPORT_SYMBOL_GPL vmlinux 0x8cef93a2 rio_mport_write_config_32 +EXPORT_SYMBOL_GPL vmlinux 0x8d22bb58 iommu_group_alloc +EXPORT_SYMBOL_GPL vmlinux 0x8d3a4c2f pci_find_next_capability +EXPORT_SYMBOL_GPL vmlinux 0x8d5b7f2d crypto_unregister_pcomp +EXPORT_SYMBOL_GPL vmlinux 0x8deea4bb __fsnotify_inode_delete +EXPORT_SYMBOL_GPL vmlinux 0x8e097873 irq_create_strict_mappings +EXPORT_SYMBOL_GPL vmlinux 0x8e3c498d pstore_register +EXPORT_SYMBOL_GPL vmlinux 0x8e4a0c05 spi_register_master +EXPORT_SYMBOL_GPL vmlinux 0x8e60df7a __tracepoint_wbc_writepage +EXPORT_SYMBOL_GPL vmlinux 0x8e6a742d dax_zero_page_range +EXPORT_SYMBOL_GPL vmlinux 0x8e6a976d blk_queue_lld_busy +EXPORT_SYMBOL_GPL vmlinux 0x8e6e75b0 regmap_write +EXPORT_SYMBOL_GPL vmlinux 0x8e9a3afe task_cls_state +EXPORT_SYMBOL_GPL vmlinux 0x8ea10f6a acpi_processor_get_performance_info +EXPORT_SYMBOL_GPL vmlinux 0x8eb283c2 ata_port_pbar_desc +EXPORT_SYMBOL_GPL vmlinux 0x8eb777ad key_type_encrypted +EXPORT_SYMBOL_GPL vmlinux 0x8edf9b30 efivars_kobject +EXPORT_SYMBOL_GPL vmlinux 0x8edfb574 injectm +EXPORT_SYMBOL_GPL vmlinux 0x8ef6d4dd __pm_runtime_idle +EXPORT_SYMBOL_GPL vmlinux 0x8f05b93d rdev_get_id +EXPORT_SYMBOL_GPL vmlinux 0x8f0748af rcu_expedite_gp +EXPORT_SYMBOL_GPL vmlinux 0x8f460fa7 acpi_dev_resume_early +EXPORT_SYMBOL_GPL vmlinux 0x8f6cee77 __round_jiffies_relative +EXPORT_SYMBOL_GPL vmlinux 0x8fa24c73 crypto_create_tfm +EXPORT_SYMBOL_GPL vmlinux 0x8fbccc8d i2c_probe_func_quick_read +EXPORT_SYMBOL_GPL vmlinux 0x8fbd4f2c ping_seq_fops +EXPORT_SYMBOL_GPL vmlinux 0x8fc4f707 hvc_poll +EXPORT_SYMBOL_GPL vmlinux 0x9009602a acpi_bus_get_ejd +EXPORT_SYMBOL_GPL vmlinux 0x9032c4de devm_mdiobus_alloc_size +EXPORT_SYMBOL_GPL vmlinux 0x903753da pinctrl_utils_add_map_mux +EXPORT_SYMBOL_GPL vmlinux 0x903b627c list_lru_isolate_move +EXPORT_SYMBOL_GPL vmlinux 0x903bb65b acpi_dev_resource_ext_address_space +EXPORT_SYMBOL_GPL vmlinux 0x9047c11a trace_seq_bprintf +EXPORT_SYMBOL_GPL vmlinux 0x90536db9 ehci_suspend +EXPORT_SYMBOL_GPL vmlinux 0x9062c322 ring_buffer_consume +EXPORT_SYMBOL_GPL vmlinux 0x9066b0ac reset_control_get +EXPORT_SYMBOL_GPL vmlinux 0x907c1c0d put_device +EXPORT_SYMBOL_GPL vmlinux 0x908fb3ee spi_bus_lock +EXPORT_SYMBOL_GPL vmlinux 0x909908d9 blkg_prfill_stat +EXPORT_SYMBOL_GPL vmlinux 0x90a075d7 sdio_release_irq +EXPORT_SYMBOL_GPL vmlinux 0x90a1004a crypto_has_alg +EXPORT_SYMBOL_GPL vmlinux 0x90aa48f9 pwm_enable +EXPORT_SYMBOL_GPL vmlinux 0x90ae0992 init_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0x90de0452 platform_thermal_package_notify +EXPORT_SYMBOL_GPL vmlinux 0x90e0bca7 dm_suspended +EXPORT_SYMBOL_GPL vmlinux 0x911a6457 ata_bmdma_port_intr +EXPORT_SYMBOL_GPL vmlinux 0x911c7d47 ip6_sk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x911e8dd8 bsg_job_done +EXPORT_SYMBOL_GPL vmlinux 0x912adebf inet6_lookup_listener +EXPORT_SYMBOL_GPL vmlinux 0x9131f23e fsstack_copy_attr_all +EXPORT_SYMBOL_GPL vmlinux 0x916c9366 blkg_rwstat_recursive_sum +EXPORT_SYMBOL_GPL vmlinux 0x916d0986 rio_release_dma +EXPORT_SYMBOL_GPL vmlinux 0x9178f7e9 device_reprobe +EXPORT_SYMBOL_GPL vmlinux 0x9179d9c1 rio_enable_rx_tx_port +EXPORT_SYMBOL_GPL vmlinux 0x918ad429 ring_buffer_lock_reserve +EXPORT_SYMBOL_GPL vmlinux 0x918e032a acpi_dev_get_property_array +EXPORT_SYMBOL_GPL vmlinux 0x9192e802 device_add_property_set +EXPORT_SYMBOL_GPL vmlinux 0x91940e34 yield_to +EXPORT_SYMBOL_GPL vmlinux 0x91c6e5b0 pcap_to_irq +EXPORT_SYMBOL_GPL vmlinux 0x91d6b717 ehci_reset +EXPORT_SYMBOL_GPL vmlinux 0x91de4dcd cleanup_srcu_struct +EXPORT_SYMBOL_GPL vmlinux 0x92011bea kthread_unpark +EXPORT_SYMBOL_GPL vmlinux 0x92371973 nl_table +EXPORT_SYMBOL_GPL vmlinux 0x924c46f8 zs_unmap_object +EXPORT_SYMBOL_GPL vmlinux 0x924ea4dd ata_sas_queuecmd +EXPORT_SYMBOL_GPL vmlinux 0x925f18ff ping_recvmsg +EXPORT_SYMBOL_GPL vmlinux 0x92608caa irq_gc_mask_clr_bit +EXPORT_SYMBOL_GPL vmlinux 0x92665836 con_debug_enter +EXPORT_SYMBOL_GPL vmlinux 0x926e0412 xfrm_audit_policy_add +EXPORT_SYMBOL_GPL vmlinux 0x92a1db3b pci_stop_and_remove_bus_device_locked +EXPORT_SYMBOL_GPL vmlinux 0x92b1ef1a acpi_unbind_one +EXPORT_SYMBOL_GPL vmlinux 0x92b57248 flush_work +EXPORT_SYMBOL_GPL vmlinux 0x92c5cfa4 __srcu_read_unlock +EXPORT_SYMBOL_GPL vmlinux 0x92d31cfb fixed_phy_add +EXPORT_SYMBOL_GPL vmlinux 0x92db8f68 do_trace_rcu_torture_read +EXPORT_SYMBOL_GPL vmlinux 0x92e00696 br_fdb_test_addr_hook +EXPORT_SYMBOL_GPL vmlinux 0x92e1e302 find_vpid +EXPORT_SYMBOL_GPL vmlinux 0x92e5b7f9 regmap_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0x92f6e4b6 __ktime_divns +EXPORT_SYMBOL_GPL vmlinux 0x93056461 usb_unlocked_enable_lpm +EXPORT_SYMBOL_GPL vmlinux 0x9312723b subsys_find_device_by_id +EXPORT_SYMBOL_GPL vmlinux 0x93129de5 is_dock_device +EXPORT_SYMBOL_GPL vmlinux 0x9312d80e evtchn_put +EXPORT_SYMBOL_GPL vmlinux 0x931508b7 balloon_page_enqueue +EXPORT_SYMBOL_GPL vmlinux 0x931f05d3 ktime_get_raw +EXPORT_SYMBOL_GPL vmlinux 0x93235e0e sis_info133_for_sata +EXPORT_SYMBOL_GPL vmlinux 0x93788ac7 component_unbind_all +EXPORT_SYMBOL_GPL vmlinux 0x9386eafc class_compat_remove_link +EXPORT_SYMBOL_GPL vmlinux 0x938836b9 cpufreq_freq_transition_end +EXPORT_SYMBOL_GPL vmlinux 0x93ab558d usb_add_phy +EXPORT_SYMBOL_GPL vmlinux 0x93b3c49b usb_disable_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0x93b45e18 pci_enable_pcie_error_reporting +EXPORT_SYMBOL_GPL vmlinux 0x93c04917 gpiochip_irqchip_add +EXPORT_SYMBOL_GPL vmlinux 0x93c36508 digsig_verify +EXPORT_SYMBOL_GPL vmlinux 0x93ee6626 sysfs_remove_link_from_group +EXPORT_SYMBOL_GPL vmlinux 0x9404cef2 crypto_alloc_instance2 +EXPORT_SYMBOL_GPL vmlinux 0x941f2aaa eventfd_ctx_put +EXPORT_SYMBOL_GPL vmlinux 0x943fc708 xen_setup_shutdown_event +EXPORT_SYMBOL_GPL vmlinux 0x9489af76 sysfs_add_link_to_group +EXPORT_SYMBOL_GPL vmlinux 0x94abb745 sprint_oid +EXPORT_SYMBOL_GPL vmlinux 0x94c318be apei_exec_collect_resources +EXPORT_SYMBOL_GPL vmlinux 0x94ef4d05 cpci_hp_stop +EXPORT_SYMBOL_GPL vmlinux 0x950196e7 __mnt_is_readonly +EXPORT_SYMBOL_GPL vmlinux 0x9504df26 irq_wake_thread +EXPORT_SYMBOL_GPL vmlinux 0x951767bc __pm_wakeup_event +EXPORT_SYMBOL_GPL vmlinux 0x951ee0f5 blkdev_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x952664c5 do_exit +EXPORT_SYMBOL_GPL vmlinux 0x953e1b9e ktime_get_real_seconds +EXPORT_SYMBOL_GPL vmlinux 0x95427c83 fuse_request_send_background +EXPORT_SYMBOL_GPL vmlinux 0x955497c1 platform_add_devices +EXPORT_SYMBOL_GPL vmlinux 0x9556c0ad regmap_raw_read +EXPORT_SYMBOL_GPL vmlinux 0x955b0e2e kthread_worker_fn +EXPORT_SYMBOL_GPL vmlinux 0x955ef13a devm_phy_get +EXPORT_SYMBOL_GPL vmlinux 0x958df3ac zs_free +EXPORT_SYMBOL_GPL vmlinux 0x95b31d57 dev_attr_em_message_type +EXPORT_SYMBOL_GPL vmlinux 0x95bc9078 btree_free +EXPORT_SYMBOL_GPL vmlinux 0x95d4f5b5 sata_set_spd +EXPORT_SYMBOL_GPL vmlinux 0x95e7a726 ata_sas_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x95ebdc74 extcon_get_cable_state_ +EXPORT_SYMBOL_GPL vmlinux 0x960772d2 da903x_writes +EXPORT_SYMBOL_GPL vmlinux 0x9607910e ip6_datagram_send_ctl +EXPORT_SYMBOL_GPL vmlinux 0x9621849f ring_buffer_event_data +EXPORT_SYMBOL_GPL vmlinux 0x9626ffa9 ata_sas_port_suspend +EXPORT_SYMBOL_GPL vmlinux 0x9633343d driver_for_each_device +EXPORT_SYMBOL_GPL vmlinux 0x963b0382 sdhci_pci_o2_probe +EXPORT_SYMBOL_GPL vmlinux 0x964add15 xenbus_scanf +EXPORT_SYMBOL_GPL vmlinux 0x96554810 register_keyboard_notifier +EXPORT_SYMBOL_GPL vmlinux 0x96599eda crypto_blkcipher_type +EXPORT_SYMBOL_GPL vmlinux 0x96721687 balloon_page_dequeue +EXPORT_SYMBOL_GPL vmlinux 0x9674c062 debugfs_create_symlink +EXPORT_SYMBOL_GPL vmlinux 0x9684eca0 of_phy_simple_xlate +EXPORT_SYMBOL_GPL vmlinux 0x96a01ebb n_tty_inherit_ops +EXPORT_SYMBOL_GPL vmlinux 0x96e1abc5 btree_init +EXPORT_SYMBOL_GPL vmlinux 0x96e41409 pci_disable_pri +EXPORT_SYMBOL_GPL vmlinux 0x96fed4a7 uart_console_write +EXPORT_SYMBOL_GPL vmlinux 0x9710444b driver_unregister +EXPORT_SYMBOL_GPL vmlinux 0x97275471 ata_ehi_clear_desc +EXPORT_SYMBOL_GPL vmlinux 0x97396a63 wm5110_i2c_regmap +EXPORT_SYMBOL_GPL vmlinux 0x973ab8ad cper_estatus_print +EXPORT_SYMBOL_GPL vmlinux 0x97503ef8 sdhci_pci_o2_fujin2_pci_init +EXPORT_SYMBOL_GPL vmlinux 0x975519c1 asymmetric_key_id_same +EXPORT_SYMBOL_GPL vmlinux 0x977b2f8b regulator_get_linear_step +EXPORT_SYMBOL_GPL vmlinux 0x97ad79a5 iommu_detach_device +EXPORT_SYMBOL_GPL vmlinux 0x97cab063 __put_task_struct +EXPORT_SYMBOL_GPL vmlinux 0x97cb9900 gpiod_to_chip +EXPORT_SYMBOL_GPL vmlinux 0x97de2b83 debug_locks_silent +EXPORT_SYMBOL_GPL vmlinux 0x981cbede usb_lock_device_for_reset +EXPORT_SYMBOL_GPL vmlinux 0x98230758 efivar_entry_get +EXPORT_SYMBOL_GPL vmlinux 0x9833bc0c hvc_kick +EXPORT_SYMBOL_GPL vmlinux 0x98503a63 mpi_alloc +EXPORT_SYMBOL_GPL vmlinux 0x98539bb8 md_kick_rdev_from_array +EXPORT_SYMBOL_GPL vmlinux 0x985e8974 adp5520_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0x98672010 wm8350_device_exit +EXPORT_SYMBOL_GPL vmlinux 0x986dc268 virtqueue_enable_cb +EXPORT_SYMBOL_GPL vmlinux 0x986e7bf9 crypto_attr_alg2 +EXPORT_SYMBOL_GPL vmlinux 0x9874f120 seq_release_net +EXPORT_SYMBOL_GPL vmlinux 0x9879932b crypto_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x988c6e95 devm_regulator_put +EXPORT_SYMBOL_GPL vmlinux 0x989e7d03 led_stop_software_blink +EXPORT_SYMBOL_GPL vmlinux 0x98b7655a __init_kthread_worker +EXPORT_SYMBOL_GPL vmlinux 0x98d9bb74 devm_power_supply_register +EXPORT_SYMBOL_GPL vmlinux 0x98df134a sock_prot_inuse_add +EXPORT_SYMBOL_GPL vmlinux 0x98ea4cd9 pci_dev_run_wake +EXPORT_SYMBOL_GPL vmlinux 0x98f9c79f nd_region_attribute_group +EXPORT_SYMBOL_GPL vmlinux 0x98fa1e20 dm_get_reserved_rq_based_ios +EXPORT_SYMBOL_GPL vmlinux 0x98fb9fea hrtimer_start_range_ns +EXPORT_SYMBOL_GPL vmlinux 0x98fcf128 irq_work_queue_on +EXPORT_SYMBOL_GPL vmlinux 0x99003fab i2c_lock_adapter +EXPORT_SYMBOL_GPL vmlinux 0x9924c496 __usb_get_extra_descriptor +EXPORT_SYMBOL_GPL vmlinux 0x993fb138 pinctrl_pm_select_default_state +EXPORT_SYMBOL_GPL vmlinux 0x994b6612 __tracepoint_block_split +EXPORT_SYMBOL_GPL vmlinux 0x995d1071 prof_on +EXPORT_SYMBOL_GPL vmlinux 0x99691dfe wm8997_patch +EXPORT_SYMBOL_GPL vmlinux 0x9973add9 __cookie_v6_check +EXPORT_SYMBOL_GPL vmlinux 0x997c4347 unmap_kernel_range +EXPORT_SYMBOL_GPL vmlinux 0x99840d00 timecounter_init +EXPORT_SYMBOL_GPL vmlinux 0x998660dd ata_sff_dma_pause +EXPORT_SYMBOL_GPL vmlinux 0x99a4ef92 xenbus_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0x99a9ff9a cpuidle_register_device +EXPORT_SYMBOL_GPL vmlinux 0x99bb044b serial8250_do_set_mctrl +EXPORT_SYMBOL_GPL vmlinux 0x99df33d4 usb_alloc_urb +EXPORT_SYMBOL_GPL vmlinux 0x9a0a1916 da903x_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x9a10a056 platform_device_put +EXPORT_SYMBOL_GPL vmlinux 0x9a11a0fc crypto_attr_alg_name +EXPORT_SYMBOL_GPL vmlinux 0x9a1ad377 alarm_forward_now +EXPORT_SYMBOL_GPL vmlinux 0x9a58f70f uhci_check_and_reset_hc +EXPORT_SYMBOL_GPL vmlinux 0x9a7a2c5a swiotlb_tbl_unmap_single +EXPORT_SYMBOL_GPL vmlinux 0x9a84e891 ata_do_set_mode +EXPORT_SYMBOL_GPL vmlinux 0x9a89dbf7 lpddr2_jedec_min_tck +EXPORT_SYMBOL_GPL vmlinux 0x9a940877 default_iommu_map_sg +EXPORT_SYMBOL_GPL vmlinux 0x9a97863f raw_seq_next +EXPORT_SYMBOL_GPL vmlinux 0x9aa5a572 nd_numa_attribute_group +EXPORT_SYMBOL_GPL vmlinux 0x9ac11b74 suspend_set_ops +EXPORT_SYMBOL_GPL vmlinux 0x9ac77d9a attribute_container_find_class_device +EXPORT_SYMBOL_GPL vmlinux 0x9aeacb87 ring_buffer_iter_empty +EXPORT_SYMBOL_GPL vmlinux 0x9b3d0fbc subsys_interface_unregister +EXPORT_SYMBOL_GPL vmlinux 0x9b46aa0d __efivar_entry_get +EXPORT_SYMBOL_GPL vmlinux 0x9b6253dd inet_csk_listen_start +EXPORT_SYMBOL_GPL vmlinux 0x9b720312 acpi_target_system_state +EXPORT_SYMBOL_GPL vmlinux 0x9b7713ec acpi_dev_runtime_suspend +EXPORT_SYMBOL_GPL vmlinux 0x9b7a8e01 efivar_entry_size +EXPORT_SYMBOL_GPL vmlinux 0x9b92cf38 rdev_set_badblocks +EXPORT_SYMBOL_GPL vmlinux 0x9b9f3648 pcibios_scan_specific_bus +EXPORT_SYMBOL_GPL vmlinux 0x9bb8637b pci_disable_ats +EXPORT_SYMBOL_GPL vmlinux 0x9bd72b78 apei_write +EXPORT_SYMBOL_GPL vmlinux 0x9be09cc4 sdio_memcpy_fromio +EXPORT_SYMBOL_GPL vmlinux 0x9be6ea15 debugfs_create_u8 +EXPORT_SYMBOL_GPL vmlinux 0x9bece81b mpi_cmp_ui +EXPORT_SYMBOL_GPL vmlinux 0x9c2e4b66 acpi_unregister_gsi +EXPORT_SYMBOL_GPL vmlinux 0x9c3bb6af dequeue_signal +EXPORT_SYMBOL_GPL vmlinux 0x9c462261 klist_iter_init_node +EXPORT_SYMBOL_GPL vmlinux 0x9c8d48c2 pinconf_generic_dump_config +EXPORT_SYMBOL_GPL vmlinux 0x9ca4cb36 cpufreq_freq_attr_scaling_boost_freqs +EXPORT_SYMBOL_GPL vmlinux 0x9cb43811 regulator_set_voltage_time_sel +EXPORT_SYMBOL_GPL vmlinux 0x9cc4f70a register_pm_notifier +EXPORT_SYMBOL_GPL vmlinux 0x9ccdf526 list_lru_add +EXPORT_SYMBOL_GPL vmlinux 0x9cda8f01 extcon_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x9ce12655 ehci_handshake +EXPORT_SYMBOL_GPL vmlinux 0x9cee57a0 zs_create_pool +EXPORT_SYMBOL_GPL vmlinux 0x9cefe47f gpiod_set_raw_value +EXPORT_SYMBOL_GPL vmlinux 0x9d030b99 stop_machine +EXPORT_SYMBOL_GPL vmlinux 0x9d06688b register_xenbus_watch +EXPORT_SYMBOL_GPL vmlinux 0x9d0fdb0f irq_create_direct_mapping +EXPORT_SYMBOL_GPL vmlinux 0x9d21d4c7 pcie_update_link_speed +EXPORT_SYMBOL_GPL vmlinux 0x9d3850e1 gnttab_alloc_grant_references +EXPORT_SYMBOL_GPL vmlinux 0x9d3c2c48 crypto_register_template +EXPORT_SYMBOL_GPL vmlinux 0x9d62c898 unregister_kprobe +EXPORT_SYMBOL_GPL vmlinux 0x9d739664 crypto_shash_digest +EXPORT_SYMBOL_GPL vmlinux 0x9d7d1c15 x509_request_asymmetric_key +EXPORT_SYMBOL_GPL vmlinux 0x9d8331c0 ring_buffer_read_page +EXPORT_SYMBOL_GPL vmlinux 0x9dadbb88 cpufreq_boost_supported +EXPORT_SYMBOL_GPL vmlinux 0x9daf79dc usb_enable_lpm +EXPORT_SYMBOL_GPL vmlinux 0x9dce9e04 crypto_register_rngs +EXPORT_SYMBOL_GPL vmlinux 0x9df39fb2 thermal_zone_device_register +EXPORT_SYMBOL_GPL vmlinux 0x9dfdf722 gpio_free_array +EXPORT_SYMBOL_GPL vmlinux 0x9e178e7d pm_runtime_irq_safe +EXPORT_SYMBOL_GPL vmlinux 0x9e2bc302 regmap_update_bits_async +EXPORT_SYMBOL_GPL vmlinux 0x9e472f5f snmp_fold_field +EXPORT_SYMBOL_GPL vmlinux 0x9e557e3d usb_hcd_resume_root_hub +EXPORT_SYMBOL_GPL vmlinux 0x9e67fabe __class_create +EXPORT_SYMBOL_GPL vmlinux 0x9e73e0fd usb_ifnum_to_if +EXPORT_SYMBOL_GPL vmlinux 0x9e7d1cd0 fwnode_get_named_gpiod +EXPORT_SYMBOL_GPL vmlinux 0x9ebf2742 mmc_get_ext_csd +EXPORT_SYMBOL_GPL vmlinux 0x9ebff902 start_thread +EXPORT_SYMBOL_GPL vmlinux 0x9ed554b3 unregister_keyboard_notifier +EXPORT_SYMBOL_GPL vmlinux 0x9eee0589 task_cgroup_path +EXPORT_SYMBOL_GPL vmlinux 0x9f099cf6 x509_get_sig_params +EXPORT_SYMBOL_GPL vmlinux 0x9f12905e devm_kmemdup +EXPORT_SYMBOL_GPL vmlinux 0x9f5766aa kobject_rename +EXPORT_SYMBOL_GPL vmlinux 0x9f5ac246 blk_mq_register_disk +EXPORT_SYMBOL_GPL vmlinux 0x9fa60963 shmem_get_seals +EXPORT_SYMBOL_GPL vmlinux 0x9fac11d2 rio_get_asm +EXPORT_SYMBOL_GPL vmlinux 0x9faddc52 regulator_put +EXPORT_SYMBOL_GPL vmlinux 0x9fb29930 platform_get_irq +EXPORT_SYMBOL_GPL vmlinux 0x9fb9d387 usb_hcd_pci_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x9fbcf111 __clk_mux_determine_rate_closest +EXPORT_SYMBOL_GPL vmlinux 0x9fce80db fb_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x9fd73a0a __pci_reset_function +EXPORT_SYMBOL_GPL vmlinux 0x9fe939e1 mpi_powm +EXPORT_SYMBOL_GPL vmlinux 0xa00f9dfe ata_link_next +EXPORT_SYMBOL_GPL vmlinux 0xa00ff3a8 fat_get_dotdot_entry +EXPORT_SYMBOL_GPL vmlinux 0xa0152855 xfrm_audit_state_delete +EXPORT_SYMBOL_GPL vmlinux 0xa0164040 task_active_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0xa01a3110 devm_rtc_device_register +EXPORT_SYMBOL_GPL vmlinux 0xa0208e02 irq_set_affinity_hint +EXPORT_SYMBOL_GPL vmlinux 0xa020e067 tpm2_probe +EXPORT_SYMBOL_GPL vmlinux 0xa0503fc0 nvdimm_bus_check_dimm_count +EXPORT_SYMBOL_GPL vmlinux 0xa06f7132 phy_optional_get +EXPORT_SYMBOL_GPL vmlinux 0xa0792225 pinctrl_dev_get_devname +EXPORT_SYMBOL_GPL vmlinux 0xa091d10d fwnode_property_present +EXPORT_SYMBOL_GPL vmlinux 0xa0a6669c cpu_device_create +EXPORT_SYMBOL_GPL vmlinux 0xa0b58675 regulator_get +EXPORT_SYMBOL_GPL vmlinux 0xa0c39c2f tpm_do_selftest +EXPORT_SYMBOL_GPL vmlinux 0xa0c70e25 nl_table_lock +EXPORT_SYMBOL_GPL vmlinux 0xa0cd8b12 xenbus_dev_remove +EXPORT_SYMBOL_GPL vmlinux 0xa0f63bca ftrace_set_filter_ip +EXPORT_SYMBOL_GPL vmlinux 0xa0fcff4c netdev_set_default_ethtool_ops +EXPORT_SYMBOL_GPL vmlinux 0xa11216be xen_store_domain_type +EXPORT_SYMBOL_GPL vmlinux 0xa1167dc4 clk_divider_ops +EXPORT_SYMBOL_GPL vmlinux 0xa11b55b2 xen_start_info +EXPORT_SYMBOL_GPL vmlinux 0xa128596a rio_get_comptag +EXPORT_SYMBOL_GPL vmlinux 0xa14a1817 trace_seq_bitmask +EXPORT_SYMBOL_GPL vmlinux 0xa14b546c regulator_force_disable +EXPORT_SYMBOL_GPL vmlinux 0xa156a1f2 erst_get_record_id_end +EXPORT_SYMBOL_GPL vmlinux 0xa170e9d4 regmap_check_range_table +EXPORT_SYMBOL_GPL vmlinux 0xa178d71a crypto_register_rng +EXPORT_SYMBOL_GPL vmlinux 0xa18f9433 mpi_read_buffer +EXPORT_SYMBOL_GPL vmlinux 0xa1a4ef8c crypto_shash_final +EXPORT_SYMBOL_GPL vmlinux 0xa1a60dc2 crypto_hash_walk_first +EXPORT_SYMBOL_GPL vmlinux 0xa1bd7822 __tracepoint_block_bio_complete +EXPORT_SYMBOL_GPL vmlinux 0xa1f79553 xen_create_contiguous_region +EXPORT_SYMBOL_GPL vmlinux 0xa1fcdda0 da9055_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0xa2411403 extcon_dev_register +EXPORT_SYMBOL_GPL vmlinux 0xa2573887 regulator_register +EXPORT_SYMBOL_GPL vmlinux 0xa264b716 hwmon_device_register_with_groups +EXPORT_SYMBOL_GPL vmlinux 0xa26d9b4f workqueue_congested +EXPORT_SYMBOL_GPL vmlinux 0xa2701638 regulator_get_exclusive +EXPORT_SYMBOL_GPL vmlinux 0xa2894174 tps6586x_reads +EXPORT_SYMBOL_GPL vmlinux 0xa28b2dd9 simple_attr_open +EXPORT_SYMBOL_GPL vmlinux 0xa2b9c993 clk_register_fixed_factor +EXPORT_SYMBOL_GPL vmlinux 0xa2bafa40 interval_tree_insert +EXPORT_SYMBOL_GPL vmlinux 0xa2c56964 palmas_ext_control_req_config +EXPORT_SYMBOL_GPL vmlinux 0xa2e444a5 irq_domain_remove +EXPORT_SYMBOL_GPL vmlinux 0xa2fb4b92 cpufreq_frequency_table_target +EXPORT_SYMBOL_GPL vmlinux 0xa30b874d blkio_cgrp_subsys +EXPORT_SYMBOL_GPL vmlinux 0xa319ecc7 extcon_dev_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa3368332 udp4_hwcsum +EXPORT_SYMBOL_GPL vmlinux 0xa353fffc xenbus_rm +EXPORT_SYMBOL_GPL vmlinux 0xa37bdc31 dm_get_rq_mapinfo +EXPORT_SYMBOL_GPL vmlinux 0xa38602cd drain_workqueue +EXPORT_SYMBOL_GPL vmlinux 0xa389a49a profile_event_register +EXPORT_SYMBOL_GPL vmlinux 0xa38eab50 __gpiod_get_index +EXPORT_SYMBOL_GPL vmlinux 0xa3a04602 btree_geo64 +EXPORT_SYMBOL_GPL vmlinux 0xa3b1cbb0 crypto_grab_spawn +EXPORT_SYMBOL_GPL vmlinux 0xa3b6135c usb_mon_register +EXPORT_SYMBOL_GPL vmlinux 0xa3b958ce reset_hung_task_detector +EXPORT_SYMBOL_GPL vmlinux 0xa3da1f20 ata_host_suspend +EXPORT_SYMBOL_GPL vmlinux 0xa3e7c113 ring_buffer_iter_peek +EXPORT_SYMBOL_GPL vmlinux 0xa3ed8620 gpiod_direction_output +EXPORT_SYMBOL_GPL vmlinux 0xa3efeb53 __cpufreq_driver_target +EXPORT_SYMBOL_GPL vmlinux 0xa3f64f78 platform_get_irq_byname +EXPORT_SYMBOL_GPL vmlinux 0xa4089ad5 bio_alloc_mddev +EXPORT_SYMBOL_GPL vmlinux 0xa40eb4a0 usb_hcd_is_primary_hcd +EXPORT_SYMBOL_GPL vmlinux 0xa41e8b3f pm_generic_resume_noirq +EXPORT_SYMBOL_GPL vmlinux 0xa4353ed3 synchronize_srcu_expedited +EXPORT_SYMBOL_GPL vmlinux 0xa452c297 hpet_mask_rtc_irq_bit +EXPORT_SYMBOL_GPL vmlinux 0xa452f2a4 xen_pirq_from_irq +EXPORT_SYMBOL_GPL vmlinux 0xa4650d0e pci_try_reset_function +EXPORT_SYMBOL_GPL vmlinux 0xa466de38 acpi_processor_ffh_cstate_enter +EXPORT_SYMBOL_GPL vmlinux 0xa4673efc blk_execute_rq_nowait +EXPORT_SYMBOL_GPL vmlinux 0xa478c611 sata_sff_hardreset +EXPORT_SYMBOL_GPL vmlinux 0xa480514b crypto_alloc_akcipher +EXPORT_SYMBOL_GPL vmlinux 0xa4813a5f flush_kthread_work +EXPORT_SYMBOL_GPL vmlinux 0xa48196c8 kdb_poll_idx +EXPORT_SYMBOL_GPL vmlinux 0xa497a36a request_firmware_direct +EXPORT_SYMBOL_GPL vmlinux 0xa4c83dc5 led_trigger_remove +EXPORT_SYMBOL_GPL vmlinux 0xa4fd34a6 ipv4_redirect +EXPORT_SYMBOL_GPL vmlinux 0xa5018ff6 __module_address +EXPORT_SYMBOL_GPL vmlinux 0xa50323ef ata_sff_dev_select +EXPORT_SYMBOL_GPL vmlinux 0xa5044c62 wbc_account_io +EXPORT_SYMBOL_GPL vmlinux 0xa5e407e4 wm5110_aod +EXPORT_SYMBOL_GPL vmlinux 0xa5efbf4c async_synchronize_full +EXPORT_SYMBOL_GPL vmlinux 0xa611f0a8 hrtimer_forward +EXPORT_SYMBOL_GPL vmlinux 0xa625110d kmsg_dump_rewind +EXPORT_SYMBOL_GPL vmlinux 0xa627cc29 fpu__save +EXPORT_SYMBOL_GPL vmlinux 0xa62892c6 efivar_sysfs_list +EXPORT_SYMBOL_GPL vmlinux 0xa6439b62 mmc_switch +EXPORT_SYMBOL_GPL vmlinux 0xa65f9f97 ata_sas_port_start +EXPORT_SYMBOL_GPL vmlinux 0xa671feeb skb_pull_rcsum +EXPORT_SYMBOL_GPL vmlinux 0xa6b21ef2 dpm_suspend_end +EXPORT_SYMBOL_GPL vmlinux 0xa6d6c0d9 iommu_domain_free +EXPORT_SYMBOL_GPL vmlinux 0xa6e107ca nd_cmd_in_size +EXPORT_SYMBOL_GPL vmlinux 0xa6e1a69d kick_all_cpus_sync +EXPORT_SYMBOL_GPL vmlinux 0xa6ec7d74 relay_buf_full +EXPORT_SYMBOL_GPL vmlinux 0xa6f54f59 __irq_set_handler +EXPORT_SYMBOL_GPL vmlinux 0xa71a650b tpm_gen_interrupt +EXPORT_SYMBOL_GPL vmlinux 0xa71f8ce1 blocking_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa731fc56 key_set_timeout +EXPORT_SYMBOL_GPL vmlinux 0xa751bccf usb_hcd_giveback_urb +EXPORT_SYMBOL_GPL vmlinux 0xa75312bc call_rcu_sched +EXPORT_SYMBOL_GPL vmlinux 0xa780e7b4 pci_common_swizzle +EXPORT_SYMBOL_GPL vmlinux 0xa781c7ed __sock_recv_ts_and_drops +EXPORT_SYMBOL_GPL vmlinux 0xa786e7dd bsg_setup_queue +EXPORT_SYMBOL_GPL vmlinux 0xa790d811 lp8788_read_multi_bytes +EXPORT_SYMBOL_GPL vmlinux 0xa794d049 __gpiod_get_optional +EXPORT_SYMBOL_GPL vmlinux 0xa79b8acf regmap_can_raw_write +EXPORT_SYMBOL_GPL vmlinux 0xa7bad3f2 skcipher_geniv_alloc +EXPORT_SYMBOL_GPL vmlinux 0xa7c4a3cf sdio_writeb +EXPORT_SYMBOL_GPL vmlinux 0xa7c8cec4 key_type_user +EXPORT_SYMBOL_GPL vmlinux 0xa7e13a6a clk_mux_ro_ops +EXPORT_SYMBOL_GPL vmlinux 0xa7f2670d xfrm_inner_extract_output +EXPORT_SYMBOL_GPL vmlinux 0xa7f4c987 acpi_debugfs_dir +EXPORT_SYMBOL_GPL vmlinux 0xa801b359 efivar_entry_iter_begin +EXPORT_SYMBOL_GPL vmlinux 0xa8424746 sdio_run_irqs +EXPORT_SYMBOL_GPL vmlinux 0xa84c1f26 usb_find_alt_setting +EXPORT_SYMBOL_GPL vmlinux 0xa851973a raw_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xa8538b0f blkcipher_aead_walk_virt_block +EXPORT_SYMBOL_GPL vmlinux 0xa8648525 rtc_read_time +EXPORT_SYMBOL_GPL vmlinux 0xa86c7843 dma_buf_put +EXPORT_SYMBOL_GPL vmlinux 0xa8b76a68 timecounter_cyc2time +EXPORT_SYMBOL_GPL vmlinux 0xa8c8ef78 acpi_dma_request_slave_chan_by_index +EXPORT_SYMBOL_GPL vmlinux 0xa9126bff hpet_set_rtc_irq_bit +EXPORT_SYMBOL_GPL vmlinux 0xa91a193a posix_timers_register_clock +EXPORT_SYMBOL_GPL vmlinux 0xa927b923 regulator_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0xa9320d27 ktime_get_seconds +EXPORT_SYMBOL_GPL vmlinux 0xa9336dbd gpiochip_free_own_desc +EXPORT_SYMBOL_GPL vmlinux 0xa967c023 sata_scr_write +EXPORT_SYMBOL_GPL vmlinux 0xa96cc6ac usb_driver_claim_interface +EXPORT_SYMBOL_GPL vmlinux 0xa977c2ad regulator_get_current_limit +EXPORT_SYMBOL_GPL vmlinux 0xa979ec3b ata_qc_complete +EXPORT_SYMBOL_GPL vmlinux 0xa980af16 RSA_public_key_algorithm +EXPORT_SYMBOL_GPL vmlinux 0xa9a485d9 wm8997_aod +EXPORT_SYMBOL_GPL vmlinux 0xa9c66b58 devm_regulator_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xa9d41d5b __irq_domain_add +EXPORT_SYMBOL_GPL vmlinux 0xa9d8f910 acpi_is_pnp_device +EXPORT_SYMBOL_GPL vmlinux 0xa9da8e66 devm_regulator_bulk_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0xa9dfd22b ata_pci_sff_init_host +EXPORT_SYMBOL_GPL vmlinux 0xa9e0890f spi_async +EXPORT_SYMBOL_GPL vmlinux 0xa9e18049 task_handoff_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa9e5cb64 device_wakeup_disable +EXPORT_SYMBOL_GPL vmlinux 0xa9feddec device_get_child_node_count +EXPORT_SYMBOL_GPL vmlinux 0xaa0a03a0 virtio_check_driver_offered_feature +EXPORT_SYMBOL_GPL vmlinux 0xaa145d6d bus_set_iommu +EXPORT_SYMBOL_GPL vmlinux 0xaa192f56 kobj_sysfs_ops +EXPORT_SYMBOL_GPL vmlinux 0xaa2a72bf __iowrite64_copy +EXPORT_SYMBOL_GPL vmlinux 0xaa487e4f fib_rules_register +EXPORT_SYMBOL_GPL vmlinux 0xaa4c482d dm_accept_partial_bio +EXPORT_SYMBOL_GPL vmlinux 0xaa5534ae tty_ldisc_ref_wait +EXPORT_SYMBOL_GPL vmlinux 0xaa5eeeda mbox_client_peek_data +EXPORT_SYMBOL_GPL vmlinux 0xaa698e75 proc_get_parent_data +EXPORT_SYMBOL_GPL vmlinux 0xaa83eb7c pinctrl_pm_select_sleep_state +EXPORT_SYMBOL_GPL vmlinux 0xaaa918c9 ftrace_dump +EXPORT_SYMBOL_GPL vmlinux 0xaac26896 wakeup_source_prepare +EXPORT_SYMBOL_GPL vmlinux 0xaaf16ff2 iommu_map +EXPORT_SYMBOL_GPL vmlinux 0xaaf23ce2 subsys_dev_iter_next +EXPORT_SYMBOL_GPL vmlinux 0xab01acbe gnttab_request_free_callback +EXPORT_SYMBOL_GPL vmlinux 0xab1e0e93 hv_setup_kexec_handler +EXPORT_SYMBOL_GPL vmlinux 0xab29ad96 cpuidle_disable_device +EXPORT_SYMBOL_GPL vmlinux 0xab3e0698 blk_rq_prep_clone +EXPORT_SYMBOL_GPL vmlinux 0xab586b89 __netlink_alloc_skb +EXPORT_SYMBOL_GPL vmlinux 0xab5a5de4 fixed_phy_del +EXPORT_SYMBOL_GPL vmlinux 0xab5b93c1 ipv6_recv_error +EXPORT_SYMBOL_GPL vmlinux 0xab60269e component_master_del +EXPORT_SYMBOL_GPL vmlinux 0xab6babaf pm_qos_request +EXPORT_SYMBOL_GPL vmlinux 0xab945a16 __iowrite32_copy +EXPORT_SYMBOL_GPL vmlinux 0xaba52a49 rtnl_af_register +EXPORT_SYMBOL_GPL vmlinux 0xaba90706 tps6586x_irq_get_virq +EXPORT_SYMBOL_GPL vmlinux 0xabad455c fuse_conn_init +EXPORT_SYMBOL_GPL vmlinux 0xabc640f3 list_lru_isolate +EXPORT_SYMBOL_GPL vmlinux 0xabc672e6 driver_register +EXPORT_SYMBOL_GPL vmlinux 0xac09def3 inet6_hash_connect +EXPORT_SYMBOL_GPL vmlinux 0xac1ae4cd crypto_givcipher_type +EXPORT_SYMBOL_GPL vmlinux 0xac477d8a user_preparse +EXPORT_SYMBOL_GPL vmlinux 0xac688698 bus_register +EXPORT_SYMBOL_GPL vmlinux 0xac72b455 blk_abort_request +EXPORT_SYMBOL_GPL vmlinux 0xac7fd158 rio_route_add_entry +EXPORT_SYMBOL_GPL vmlinux 0xac8cc981 phy_power_on +EXPORT_SYMBOL_GPL vmlinux 0xac9ce195 kvm_async_pf_task_wait +EXPORT_SYMBOL_GPL vmlinux 0xacafa8e7 vector_used_by_percpu_irq +EXPORT_SYMBOL_GPL vmlinux 0xace1de41 ptp_classify_raw +EXPORT_SYMBOL_GPL vmlinux 0xace5c0fc usb_bus_list +EXPORT_SYMBOL_GPL vmlinux 0xad2da240 cpufreq_governor_dbs +EXPORT_SYMBOL_GPL vmlinux 0xad320504 xen_swiotlb_sync_single_for_cpu +EXPORT_SYMBOL_GPL vmlinux 0xad46f7c7 user_describe +EXPORT_SYMBOL_GPL vmlinux 0xad82bbe6 wm8350_read_auxadc +EXPORT_SYMBOL_GPL vmlinux 0xad8d8ab0 xen_physdev_op_compat +EXPORT_SYMBOL_GPL vmlinux 0xad9ba23e uart_set_options +EXPORT_SYMBOL_GPL vmlinux 0xadbfd62d ata_sff_qc_issue +EXPORT_SYMBOL_GPL vmlinux 0xadc785ec kgdb_register_io_module +EXPORT_SYMBOL_GPL vmlinux 0xadf6aa4d tpm_pcr_read +EXPORT_SYMBOL_GPL vmlinux 0xae175382 rio_release_inb_mbox +EXPORT_SYMBOL_GPL vmlinux 0xae3e0d36 sata_link_scr_lpm +EXPORT_SYMBOL_GPL vmlinux 0xae4b9839 crypto_ahash_setkey +EXPORT_SYMBOL_GPL vmlinux 0xae62e02f __blkdev_driver_ioctl +EXPORT_SYMBOL_GPL vmlinux 0xae69b1c1 usermodehelper_read_unlock +EXPORT_SYMBOL_GPL vmlinux 0xae7c231d mpi_cmp +EXPORT_SYMBOL_GPL vmlinux 0xae7f43bc blkg_prfill_rwstat +EXPORT_SYMBOL_GPL vmlinux 0xaea5a898 blk_queue_flush +EXPORT_SYMBOL_GPL vmlinux 0xaea7dacd ata_bmdma_status +EXPORT_SYMBOL_GPL vmlinux 0xaeaf2c70 kset_create_and_add +EXPORT_SYMBOL_GPL vmlinux 0xaec4563f pm_runtime_forbid +EXPORT_SYMBOL_GPL vmlinux 0xaeceaecf virtqueue_get_avail +EXPORT_SYMBOL_GPL vmlinux 0xaed8c3cd trace_define_field +EXPORT_SYMBOL_GPL vmlinux 0xaeecf73c ata_bmdma32_port_ops +EXPORT_SYMBOL_GPL vmlinux 0xaef8aab1 sync_page_io +EXPORT_SYMBOL_GPL vmlinux 0xaf0a7b84 __get_user_pages_fast +EXPORT_SYMBOL_GPL vmlinux 0xaf2fa0a4 __rio_local_write_config_32 +EXPORT_SYMBOL_GPL vmlinux 0xaf4cd6d3 acpi_os_map_memory +EXPORT_SYMBOL_GPL vmlinux 0xaf55aaf5 device_destroy +EXPORT_SYMBOL_GPL vmlinux 0xaf7f368e crypto_register_alg +EXPORT_SYMBOL_GPL vmlinux 0xaf8d561d cpuidle_register +EXPORT_SYMBOL_GPL vmlinux 0xaf9439db leds_list_lock +EXPORT_SYMBOL_GPL vmlinux 0xafa46eef xhci_run +EXPORT_SYMBOL_GPL vmlinux 0xafab2aea pci_num_vf +EXPORT_SYMBOL_GPL vmlinux 0xafc4baea led_trigger_unregister_simple +EXPORT_SYMBOL_GPL vmlinux 0xafd297ff regmap_field_free +EXPORT_SYMBOL_GPL vmlinux 0xafd63cf9 spi_bus_unlock +EXPORT_SYMBOL_GPL vmlinux 0xafd9a107 raw_seq_start +EXPORT_SYMBOL_GPL vmlinux 0xafe82698 hvc_instantiate +EXPORT_SYMBOL_GPL vmlinux 0xb017dc21 single_release_net +EXPORT_SYMBOL_GPL vmlinux 0xb01d58a6 user_destroy +EXPORT_SYMBOL_GPL vmlinux 0xb02ac411 register_xenstore_notifier +EXPORT_SYMBOL_GPL vmlinux 0xb0376319 regmap_read +EXPORT_SYMBOL_GPL vmlinux 0xb0400c6b add_timer_on +EXPORT_SYMBOL_GPL vmlinux 0xb04c77c1 kernfs_get +EXPORT_SYMBOL_GPL vmlinux 0xb058d015 crypto_register_shashes +EXPORT_SYMBOL_GPL vmlinux 0xb0625950 iommu_domain_window_disable +EXPORT_SYMBOL_GPL vmlinux 0xb06ca55b tpm_pm_suspend +EXPORT_SYMBOL_GPL vmlinux 0xb07145fc pm_generic_runtime_resume +EXPORT_SYMBOL_GPL vmlinux 0xb0715600 wm8350_gpio_config +EXPORT_SYMBOL_GPL vmlinux 0xb077e70a clk_unprepare +EXPORT_SYMBOL_GPL vmlinux 0xb08331ee ahash_register_instance +EXPORT_SYMBOL_GPL vmlinux 0xb08ccaad ehci_cf_port_reset_rwsem +EXPORT_SYMBOL_GPL vmlinux 0xb09f6d26 usb_autopm_get_interface_no_resume +EXPORT_SYMBOL_GPL vmlinux 0xb0ade2e6 ata_host_activate +EXPORT_SYMBOL_GPL vmlinux 0xb0afa13a serial8250_do_shutdown +EXPORT_SYMBOL_GPL vmlinux 0xb0b85f47 ring_buffer_iter_reset +EXPORT_SYMBOL_GPL vmlinux 0xb0b9b879 kobject_uevent_env +EXPORT_SYMBOL_GPL vmlinux 0xb0d81a3e securityfs_remove +EXPORT_SYMBOL_GPL vmlinux 0xb0f9fca4 gpiod_put +EXPORT_SYMBOL_GPL vmlinux 0xb0fd1d90 of_pwm_get +EXPORT_SYMBOL_GPL vmlinux 0xb11e1dc2 tpm2_gen_interrupt +EXPORT_SYMBOL_GPL vmlinux 0xb12ed72b arizona_request_irq +EXPORT_SYMBOL_GPL vmlinux 0xb1317029 add_disk_randomness +EXPORT_SYMBOL_GPL vmlinux 0xb140d14c ring_buffer_read +EXPORT_SYMBOL_GPL vmlinux 0xb1425b32 dm_table_add_target_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xb172ffac efivars_sysfs_init +EXPORT_SYMBOL_GPL vmlinux 0xb18429eb suspend_device_irqs +EXPORT_SYMBOL_GPL vmlinux 0xb19a9252 arizona_set_irq_wake +EXPORT_SYMBOL_GPL vmlinux 0xb1a151c0 mnt_want_write_file +EXPORT_SYMBOL_GPL vmlinux 0xb1a5f2fe usb_anchor_empty +EXPORT_SYMBOL_GPL vmlinux 0xb1a9e662 rtc_irq_unregister +EXPORT_SYMBOL_GPL vmlinux 0xb1acbcce rcu_barrier_sched +EXPORT_SYMBOL_GPL vmlinux 0xb1b48ca9 kthread_park +EXPORT_SYMBOL_GPL vmlinux 0xb1bbb55e fuse_do_open +EXPORT_SYMBOL_GPL vmlinux 0xb1bdabc2 ip6_sk_dst_lookup_flow +EXPORT_SYMBOL_GPL vmlinux 0xb1bed25d dpm_resume_start +EXPORT_SYMBOL_GPL vmlinux 0xb1c0c1c2 async_schedule_domain +EXPORT_SYMBOL_GPL vmlinux 0xb1c91e2d ata_common_sdev_attrs +EXPORT_SYMBOL_GPL vmlinux 0xb1c92da2 devfreq_event_add_edev +EXPORT_SYMBOL_GPL vmlinux 0xb1deb238 hrtimer_init +EXPORT_SYMBOL_GPL vmlinux 0xb1e25684 __trace_bputs +EXPORT_SYMBOL_GPL vmlinux 0xb1e890e6 ata_sff_tf_load +EXPORT_SYMBOL_GPL vmlinux 0xb1f3d67a crypto_init_spawn +EXPORT_SYMBOL_GPL vmlinux 0xb2210d64 reset_control_deassert +EXPORT_SYMBOL_GPL vmlinux 0xb22c5b7b usb_unanchor_urb +EXPORT_SYMBOL_GPL vmlinux 0xb22ede43 mmu_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0xb23ca660 sata_scr_write_flush +EXPORT_SYMBOL_GPL vmlinux 0xb26263fc extcon_register_interest +EXPORT_SYMBOL_GPL vmlinux 0xb26a1add elfcorehdr_addr +EXPORT_SYMBOL_GPL vmlinux 0xb285b8f8 xen_in_preemptible_hcall +EXPORT_SYMBOL_GPL vmlinux 0xb28ad23b rio_set_port_lockout +EXPORT_SYMBOL_GPL vmlinux 0xb28b2829 inet_csk_bind_conflict +EXPORT_SYMBOL_GPL vmlinux 0xb2a57154 inet_twsk_schedule +EXPORT_SYMBOL_GPL vmlinux 0xb2b42828 blkg_conf_finish +EXPORT_SYMBOL_GPL vmlinux 0xb2e764e8 suspend_valid_only_mem +EXPORT_SYMBOL_GPL vmlinux 0xb3253ed9 hpet_rtc_timer_init +EXPORT_SYMBOL_GPL vmlinux 0xb338e8e3 inet6_csk_xmit +EXPORT_SYMBOL_GPL vmlinux 0xb34eb603 crypto_mod_get +EXPORT_SYMBOL_GPL vmlinux 0xb3518871 devfreq_event_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0xb356613c xen_swiotlb_unmap_page +EXPORT_SYMBOL_GPL vmlinux 0xb386ff83 crypto_shash_setkey +EXPORT_SYMBOL_GPL vmlinux 0xb3d6cb76 ip6_append_data +EXPORT_SYMBOL_GPL vmlinux 0xb3fa1480 adp5520_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xb40c692b ipv6_dup_options +EXPORT_SYMBOL_GPL vmlinux 0xb4135caf inet6_csk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0xb4171d73 ip6_flush_pending_frames +EXPORT_SYMBOL_GPL vmlinux 0xb42dbc52 spi_finalize_current_transfer +EXPORT_SYMBOL_GPL vmlinux 0xb45044a9 unregister_trace_event +EXPORT_SYMBOL_GPL vmlinux 0xb4557e67 __wake_up_sync_key +EXPORT_SYMBOL_GPL vmlinux 0xb459beaa dma_buf_begin_cpu_access +EXPORT_SYMBOL_GPL vmlinux 0xb467224f tpm_chip_register +EXPORT_SYMBOL_GPL vmlinux 0xb46ed5ae pinctrl_put +EXPORT_SYMBOL_GPL vmlinux 0xb47951b7 thermal_zone_device_update +EXPORT_SYMBOL_GPL vmlinux 0xb47b3e6a gpiod_get_array_optional +EXPORT_SYMBOL_GPL vmlinux 0xb49d32f6 usb_register_driver +EXPORT_SYMBOL_GPL vmlinux 0xb49f1562 netlink_has_listeners +EXPORT_SYMBOL_GPL vmlinux 0xb4abaf25 posix_clock_register +EXPORT_SYMBOL_GPL vmlinux 0xb4b97c90 pvclock_gtod_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xb4be6e3a sdhci_pci_o2_probe_slot +EXPORT_SYMBOL_GPL vmlinux 0xb4e14553 gnttab_query_foreign_access +EXPORT_SYMBOL_GPL vmlinux 0xb4e93bd6 pci_set_pcie_reset_state +EXPORT_SYMBOL_GPL vmlinux 0xb4ea7cf7 kgdb_connected +EXPORT_SYMBOL_GPL vmlinux 0xb4ef2b30 pci_find_next_ht_capability +EXPORT_SYMBOL_GPL vmlinux 0xb5018a0e devm_regulator_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0xb504350c tpm_calc_ordinal_duration +EXPORT_SYMBOL_GPL vmlinux 0xb505682c apei_get_debugfs_dir +EXPORT_SYMBOL_GPL vmlinux 0xb51d9d95 tty_ldisc_flush +EXPORT_SYMBOL_GPL vmlinux 0xb51fbd64 edac_op_state +EXPORT_SYMBOL_GPL vmlinux 0xb528f501 irq_map_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0xb5342646 thermal_generate_netlink_event +EXPORT_SYMBOL_GPL vmlinux 0xb53620d1 pci_vpd_find_info_keyword +EXPORT_SYMBOL_GPL vmlinux 0xb56fbae2 cpufreq_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0xb570088f register_user_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0xb58dcfa2 synchronize_sched_expedited +EXPORT_SYMBOL_GPL vmlinux 0xb59068c6 fuse_conn_get +EXPORT_SYMBOL_GPL vmlinux 0xb5a0e11e lpddr2_jedec_addressing_table +EXPORT_SYMBOL_GPL vmlinux 0xb5bbd848 __clk_mux_determine_rate +EXPORT_SYMBOL_GPL vmlinux 0xb5e896fb tpm_get_random +EXPORT_SYMBOL_GPL vmlinux 0xb5f17edf perf_register_guest_info_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xb6230f1f gnttab_grant_foreign_access +EXPORT_SYMBOL_GPL vmlinux 0xb6261484 register_die_notifier +EXPORT_SYMBOL_GPL vmlinux 0xb629fffd handle_mm_fault +EXPORT_SYMBOL_GPL vmlinux 0xb641faf7 bitmap_copy_from_slot +EXPORT_SYMBOL_GPL vmlinux 0xb66421b2 acpi_str_to_uuid +EXPORT_SYMBOL_GPL vmlinux 0xb67c64fd __tracepoint_kfree_skb +EXPORT_SYMBOL_GPL vmlinux 0xb67df373 setup_irq +EXPORT_SYMBOL_GPL vmlinux 0xb6aeb661 ata_id_c_string +EXPORT_SYMBOL_GPL vmlinux 0xb6baa6ac usb_phy_gen_create_phy +EXPORT_SYMBOL_GPL vmlinux 0xb6bc49a9 __supported_pte_mask +EXPORT_SYMBOL_GPL vmlinux 0xb6c331ca pinctrl_utils_add_map_configs +EXPORT_SYMBOL_GPL vmlinux 0xb6da8927 __gpiod_get_index_optional +EXPORT_SYMBOL_GPL vmlinux 0xb6e6d99d clk_disable +EXPORT_SYMBOL_GPL vmlinux 0xb6eef627 gpiod_unexport +EXPORT_SYMBOL_GPL vmlinux 0xb6f21a39 crypto_larval_alloc +EXPORT_SYMBOL_GPL vmlinux 0xb6f2c578 __tracepoint_unmap +EXPORT_SYMBOL_GPL vmlinux 0xb6fe4ed4 user_free_preparse +EXPORT_SYMBOL_GPL vmlinux 0xb70147a8 vring_new_virtqueue +EXPORT_SYMBOL_GPL vmlinux 0xb701e33e scsi_internal_device_block +EXPORT_SYMBOL_GPL vmlinux 0xb709b39f usb_put_hcd +EXPORT_SYMBOL_GPL vmlinux 0xb718f2f9 sfi_table_parse +EXPORT_SYMBOL_GPL vmlinux 0xb7263e61 iptunnel_handle_offloads +EXPORT_SYMBOL_GPL vmlinux 0xb72a9617 ndo_dflt_bridge_getlink +EXPORT_SYMBOL_GPL vmlinux 0xb7329c06 clk_set_phase +EXPORT_SYMBOL_GPL vmlinux 0xb758c60c genlmsg_new_unicast +EXPORT_SYMBOL_GPL vmlinux 0xb775f38b led_trigger_register +EXPORT_SYMBOL_GPL vmlinux 0xb784b7c1 tcp_fetch_timewait_stamp +EXPORT_SYMBOL_GPL vmlinux 0xb79ea685 virtio_break_device +EXPORT_SYMBOL_GPL vmlinux 0xb7abe8ca wm831x_reg_unlock +EXPORT_SYMBOL_GPL vmlinux 0xb7d44464 rhashtable_walk_exit +EXPORT_SYMBOL_GPL vmlinux 0xb7d7c12e hpet_set_alarm_time +EXPORT_SYMBOL_GPL vmlinux 0xb7dbd8a6 nvdimm_volatile_region_create +EXPORT_SYMBOL_GPL vmlinux 0xb7e94de3 eventfd_fget +EXPORT_SYMBOL_GPL vmlinux 0xb7f77027 rtc_tm_to_ktime +EXPORT_SYMBOL_GPL vmlinux 0xb7f78ff8 sysfs_add_file_to_group +EXPORT_SYMBOL_GPL vmlinux 0xb852764d of_reset_control_get +EXPORT_SYMBOL_GPL vmlinux 0xb87059ad dma_get_required_mask +EXPORT_SYMBOL_GPL vmlinux 0xb87a2baf wm831x_reg_read +EXPORT_SYMBOL_GPL vmlinux 0xb8856a03 cpufreq_frequency_table_verify +EXPORT_SYMBOL_GPL vmlinux 0xb8b2b1f7 mce_register_decode_chain +EXPORT_SYMBOL_GPL vmlinux 0xb8b434b5 phy_pm_runtime_get +EXPORT_SYMBOL_GPL vmlinux 0xb8cd3a7f nf_logger_put +EXPORT_SYMBOL_GPL vmlinux 0xb8e0359e pm_generic_suspend_noirq +EXPORT_SYMBOL_GPL vmlinux 0xb8f40cc3 crypto_register_shash +EXPORT_SYMBOL_GPL vmlinux 0xb90062eb __pci_reset_function_locked +EXPORT_SYMBOL_GPL vmlinux 0xb903674c scatterwalk_map_and_copy +EXPORT_SYMBOL_GPL vmlinux 0xb9176155 asn1_ber_decoder +EXPORT_SYMBOL_GPL vmlinux 0xb91feda2 device_initialize +EXPORT_SYMBOL_GPL vmlinux 0xb94c01f5 dev_pm_set_dedicated_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0xb94d115a pinctrl_get +EXPORT_SYMBOL_GPL vmlinux 0xb97d300a crypto_alloc_rng +EXPORT_SYMBOL_GPL vmlinux 0xb9937698 fat_dir_empty +EXPORT_SYMBOL_GPL vmlinux 0xb99d5837 xenbus_read +EXPORT_SYMBOL_GPL vmlinux 0xb99f1ab6 xfrm_audit_state_add +EXPORT_SYMBOL_GPL vmlinux 0xb9a6fba5 relay_open +EXPORT_SYMBOL_GPL vmlinux 0xb9adb966 device_move +EXPORT_SYMBOL_GPL vmlinux 0xb9b9df41 usb_amd_dev_put +EXPORT_SYMBOL_GPL vmlinux 0xb9c425de register_syscore_ops +EXPORT_SYMBOL_GPL vmlinux 0xb9c954a6 md_find_rdev_nr_rcu +EXPORT_SYMBOL_GPL vmlinux 0xb9d025c9 llist_del_first +EXPORT_SYMBOL_GPL vmlinux 0xb9f2d62f usb_get_hcd +EXPORT_SYMBOL_GPL vmlinux 0xba0a949b class_interface_register +EXPORT_SYMBOL_GPL vmlinux 0xba16fecd component_add +EXPORT_SYMBOL_GPL vmlinux 0xba2b7f64 cpufreq_generic_get +EXPORT_SYMBOL_GPL vmlinux 0xba302a20 smpboot_update_cpumask_percpu_thread +EXPORT_SYMBOL_GPL vmlinux 0xba489401 xen_swiotlb_sync_sg_for_device +EXPORT_SYMBOL_GPL vmlinux 0xba67445a md_do_sync +EXPORT_SYMBOL_GPL vmlinux 0xba8929ea percpu_ref_reinit +EXPORT_SYMBOL_GPL vmlinux 0xba94c685 cper_estatus_check +EXPORT_SYMBOL_GPL vmlinux 0xbaa5dc8b platform_device_add +EXPORT_SYMBOL_GPL vmlinux 0xbab9a9f0 maxim_charger_currents +EXPORT_SYMBOL_GPL vmlinux 0xbaccff32 regulator_map_voltage_iterate +EXPORT_SYMBOL_GPL vmlinux 0xbaf119ad devm_of_phy_provider_unregister +EXPORT_SYMBOL_GPL vmlinux 0xbaf8f703 crypto_alloc_ablkcipher +EXPORT_SYMBOL_GPL vmlinux 0xbb038ce4 perf_unregister_guest_info_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xbb0ab47b debug_locks +EXPORT_SYMBOL_GPL vmlinux 0xbb0f9385 devres_get +EXPORT_SYMBOL_GPL vmlinux 0xbb3ebde1 rio_request_inb_dbell +EXPORT_SYMBOL_GPL vmlinux 0xbb43a076 input_class +EXPORT_SYMBOL_GPL vmlinux 0xbb441500 xhci_suspend +EXPORT_SYMBOL_GPL vmlinux 0xbb58b814 iomap_free +EXPORT_SYMBOL_GPL vmlinux 0xbb6f8cca xen_swiotlb_alloc_coherent +EXPORT_SYMBOL_GPL vmlinux 0xbb7cf9cb jump_label_rate_limit +EXPORT_SYMBOL_GPL vmlinux 0xbb829530 ohci_resume +EXPORT_SYMBOL_GPL vmlinux 0xbbaf1543 sata_pmp_qc_defer_cmd_switch +EXPORT_SYMBOL_GPL vmlinux 0xbbb98859 edid_info +EXPORT_SYMBOL_GPL vmlinux 0xbbd4f657 xen_pcpu_id +EXPORT_SYMBOL_GPL vmlinux 0xbbd7dc4c dm_get_queue_limits +EXPORT_SYMBOL_GPL vmlinux 0xbbebd967 kobject_move +EXPORT_SYMBOL_GPL vmlinux 0xbbfdc770 regmap_field_read +EXPORT_SYMBOL_GPL vmlinux 0xbc12f372 percpu_ida_for_each_free +EXPORT_SYMBOL_GPL vmlinux 0xbc19490c __rtnl_af_unregister +EXPORT_SYMBOL_GPL vmlinux 0xbc27101e platform_device_alloc +EXPORT_SYMBOL_GPL vmlinux 0xbc6824bb __clk_get_hw +EXPORT_SYMBOL_GPL vmlinux 0xbc6b921a cpufreq_generic_frequency_table_verify +EXPORT_SYMBOL_GPL vmlinux 0xbc721df0 regulator_enable_regmap +EXPORT_SYMBOL_GPL vmlinux 0xbc7354ff ata_bmdma_port_start +EXPORT_SYMBOL_GPL vmlinux 0xbc7c6c57 usb_autopm_get_interface +EXPORT_SYMBOL_GPL vmlinux 0xbca0201a sfi_mrtc_array +EXPORT_SYMBOL_GPL vmlinux 0xbcac6160 pm_qos_remove_notifier +EXPORT_SYMBOL_GPL vmlinux 0xbcb14397 acpi_dev_add_driver_gpios +EXPORT_SYMBOL_GPL vmlinux 0xbcb838a1 amd_flush_garts +EXPORT_SYMBOL_GPL vmlinux 0xbcbc57f4 sysfs_create_bin_file +EXPORT_SYMBOL_GPL vmlinux 0xbcca4f03 mddev_resume +EXPORT_SYMBOL_GPL vmlinux 0xbccfd4d8 register_oldmem_pfn_is_ram +EXPORT_SYMBOL_GPL vmlinux 0xbcdd5b99 iommu_group_set_name +EXPORT_SYMBOL_GPL vmlinux 0xbce1ea87 __i2c_board_lock +EXPORT_SYMBOL_GPL vmlinux 0xbd0be855 pci_cfg_access_unlock +EXPORT_SYMBOL_GPL vmlinux 0xbd1ed65b dm_send_uevents +EXPORT_SYMBOL_GPL vmlinux 0xbd33781b dev_pm_qos_expose_flags +EXPORT_SYMBOL_GPL vmlinux 0xbd3dde17 ping_get_port +EXPORT_SYMBOL_GPL vmlinux 0xbd3f6eef blk_mq_request_started +EXPORT_SYMBOL_GPL vmlinux 0xbd3fe1e3 disable_hardirq +EXPORT_SYMBOL_GPL vmlinux 0xbd49455e shash_ahash_update +EXPORT_SYMBOL_GPL vmlinux 0xbd5cb8b9 ring_buffer_resize +EXPORT_SYMBOL_GPL vmlinux 0xbd6f51fd acpi_match_device +EXPORT_SYMBOL_GPL vmlinux 0xbd85daee fat_sync_inode +EXPORT_SYMBOL_GPL vmlinux 0xbd86b127 usb_scuttle_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0xbda5999d led_sysfs_disable +EXPORT_SYMBOL_GPL vmlinux 0xbda5c03c devres_release_group +EXPORT_SYMBOL_GPL vmlinux 0xbda5f6f7 usb_add_phy_dev +EXPORT_SYMBOL_GPL vmlinux 0xbdd295f0 trace_vprintk +EXPORT_SYMBOL_GPL vmlinux 0xbdd2f42a rcu_bh_force_quiescent_state +EXPORT_SYMBOL_GPL vmlinux 0xbdd5f10f apei_hest_parse +EXPORT_SYMBOL_GPL vmlinux 0xbdfb69a3 md_is_badblock +EXPORT_SYMBOL_GPL vmlinux 0xbe175035 __tracepoint_extlog_mem_event +EXPORT_SYMBOL_GPL vmlinux 0xbe1887e4 ata_unpack_xfermask +EXPORT_SYMBOL_GPL vmlinux 0xbe1c9d1e cpuidle_get_driver +EXPORT_SYMBOL_GPL vmlinux 0xbe21bdae pm_runtime_force_resume +EXPORT_SYMBOL_GPL vmlinux 0xbe290ba7 set_cpus_allowed_ptr +EXPORT_SYMBOL_GPL vmlinux 0xbe44f080 transport_destroy_device +EXPORT_SYMBOL_GPL vmlinux 0xbe687e88 wake_up_all_idle_cpus +EXPORT_SYMBOL_GPL vmlinux 0xbe7b717f fixed_phy_register +EXPORT_SYMBOL_GPL vmlinux 0xbe80951c devfreq_event_reset_event +EXPORT_SYMBOL_GPL vmlinux 0xbe826d10 xen_swiotlb_dma_supported +EXPORT_SYMBOL_GPL vmlinux 0xbe8838c4 dax_pfn_mkwrite +EXPORT_SYMBOL_GPL vmlinux 0xbe973b2b kill_pid_info_as_cred +EXPORT_SYMBOL_GPL vmlinux 0xbe9ef202 rtc_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xbea5ff1e static_key_initialized +EXPORT_SYMBOL_GPL vmlinux 0xbeb82333 da903x_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0xbee21107 dm_internal_suspend_noflush +EXPORT_SYMBOL_GPL vmlinux 0xbefd23f9 pm_generic_restore_early +EXPORT_SYMBOL_GPL vmlinux 0xbf041102 register_vt_notifier +EXPORT_SYMBOL_GPL vmlinux 0xbf35ae39 sata_pmp_port_ops +EXPORT_SYMBOL_GPL vmlinux 0xbf489ede sysfs_create_file_ns +EXPORT_SYMBOL_GPL vmlinux 0xbf4bdddb perf_trace_buf_prepare +EXPORT_SYMBOL_GPL vmlinux 0xbf808153 crypto_ahash_type +EXPORT_SYMBOL_GPL vmlinux 0xbf8869f4 rio_map_inb_region +EXPORT_SYMBOL_GPL vmlinux 0xbfb1be70 hv_setup_vmbus_irq +EXPORT_SYMBOL_GPL vmlinux 0xbfbc5434 pciserial_resume_ports +EXPORT_SYMBOL_GPL vmlinux 0xbfd10bb7 clk_register_mux_table +EXPORT_SYMBOL_GPL vmlinux 0xbfe19491 crypto_unregister_template +EXPORT_SYMBOL_GPL vmlinux 0xbfe5616d tick_broadcast_oneshot_control +EXPORT_SYMBOL_GPL vmlinux 0xbfe69f49 sdio_readsb +EXPORT_SYMBOL_GPL vmlinux 0xc00131cf visitor64 +EXPORT_SYMBOL_GPL vmlinux 0xc00fdf54 regulator_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0xc0321d39 phy_pm_runtime_put +EXPORT_SYMBOL_GPL vmlinux 0xc056a3ef modify_user_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0xc072bed2 inode_congested +EXPORT_SYMBOL_GPL vmlinux 0xc08647ff ring_buffer_bytes_cpu +EXPORT_SYMBOL_GPL vmlinux 0xc0878f35 bsg_unregister_queue +EXPORT_SYMBOL_GPL vmlinux 0xc0900fcf acpi_os_get_iomem +EXPORT_SYMBOL_GPL vmlinux 0xc0a96e14 rcu_gp_is_expedited +EXPORT_SYMBOL_GPL vmlinux 0xc0a9bf30 posix_timer_event +EXPORT_SYMBOL_GPL vmlinux 0xc0c9178d uart_insert_char +EXPORT_SYMBOL_GPL vmlinux 0xc0d26387 kmsg_dump_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc0de617a inet6_csk_bind_conflict +EXPORT_SYMBOL_GPL vmlinux 0xc0df8865 timerqueue_add +EXPORT_SYMBOL_GPL vmlinux 0xc0e75cec visitor128 +EXPORT_SYMBOL_GPL vmlinux 0xc0ebf024 dev_get_regmap +EXPORT_SYMBOL_GPL vmlinux 0xc0eff2c3 usb_hcd_end_port_resume +EXPORT_SYMBOL_GPL vmlinux 0xc11ce3eb blkcipher_walk_virt +EXPORT_SYMBOL_GPL vmlinux 0xc1297555 blkg_conf_prep +EXPORT_SYMBOL_GPL vmlinux 0xc12e0ada srcu_batches_completed +EXPORT_SYMBOL_GPL vmlinux 0xc13b23a3 rhashtable_walk_start +EXPORT_SYMBOL_GPL vmlinux 0xc162829f ata_pci_device_do_resume +EXPORT_SYMBOL_GPL vmlinux 0xc163efa5 bus_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc164642e xenbus_otherend_changed +EXPORT_SYMBOL_GPL vmlinux 0xc17515d7 usb_hcds_loaded +EXPORT_SYMBOL_GPL vmlinux 0xc18578ed process_srcu +EXPORT_SYMBOL_GPL vmlinux 0xc18bcd09 ata_bmdma_setup +EXPORT_SYMBOL_GPL vmlinux 0xc18c3633 iommu_group_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0xc19a6744 mddev_suspend +EXPORT_SYMBOL_GPL vmlinux 0xc1ab2ff4 skb_append_pagefrags +EXPORT_SYMBOL_GPL vmlinux 0xc1caca1d led_trigger_event +EXPORT_SYMBOL_GPL vmlinux 0xc1d5e439 xenbus_dev_resume +EXPORT_SYMBOL_GPL vmlinux 0xc1f5f47c power_supply_am_i_supplied +EXPORT_SYMBOL_GPL vmlinux 0xc1fbc366 dma_buf_kunmap_atomic +EXPORT_SYMBOL_GPL vmlinux 0xc216191e devfreq_event_get_edev_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0xc22a3091 vm_unmap_aliases +EXPORT_SYMBOL_GPL vmlinux 0xc239c4c5 xen_xlate_unmap_gfn_range +EXPORT_SYMBOL_GPL vmlinux 0xc23c134f ata_bmdma_dumb_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0xc25b8971 hv_remove_crash_handler +EXPORT_SYMBOL_GPL vmlinux 0xc25d4a0a __mmu_notifier_invalidate_range +EXPORT_SYMBOL_GPL vmlinux 0xc26351f8 bind_evtchn_to_irq +EXPORT_SYMBOL_GPL vmlinux 0xc2808621 acpi_subsys_prepare +EXPORT_SYMBOL_GPL vmlinux 0xc280fb46 kdb_register +EXPORT_SYMBOL_GPL vmlinux 0xc287d96a kvm_set_posted_intr_wakeup_handler +EXPORT_SYMBOL_GPL vmlinux 0xc2889a67 regmap_irq_get_domain +EXPORT_SYMBOL_GPL vmlinux 0xc2a17d08 fib_rules_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc2aefef0 regulator_set_voltage_time +EXPORT_SYMBOL_GPL vmlinux 0xc2bd1b47 tty_buffer_space_avail +EXPORT_SYMBOL_GPL vmlinux 0xc2c2ae63 blk_mq_freeze_queue +EXPORT_SYMBOL_GPL vmlinux 0xc2e728dc ata_sff_queue_delayed_work +EXPORT_SYMBOL_GPL vmlinux 0xc30cfff1 power_supply_register +EXPORT_SYMBOL_GPL vmlinux 0xc341ae6d zs_map_object +EXPORT_SYMBOL_GPL vmlinux 0xc37226a5 tpm_pcr_extend +EXPORT_SYMBOL_GPL vmlinux 0xc37e3f60 pci_user_read_config_dword +EXPORT_SYMBOL_GPL vmlinux 0xc387f36c usb_create_hcd +EXPORT_SYMBOL_GPL vmlinux 0xc3a443a5 scsi_queue_work +EXPORT_SYMBOL_GPL vmlinux 0xc3c4b03c pci_reset_bridge_secondary_bus +EXPORT_SYMBOL_GPL vmlinux 0xc3e2edbf __fib_lookup +EXPORT_SYMBOL_GPL vmlinux 0xc3e7c9d6 ata_std_sched_eh +EXPORT_SYMBOL_GPL vmlinux 0xc4116bd2 crypto_shoot_alg +EXPORT_SYMBOL_GPL vmlinux 0xc4144288 phy_pm_runtime_put_sync +EXPORT_SYMBOL_GPL vmlinux 0xc428068d sata_deb_timing_long +EXPORT_SYMBOL_GPL vmlinux 0xc4458ea7 usb_enable_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0xc45052f8 __udp6_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0xc454fc7b twl_get_type +EXPORT_SYMBOL_GPL vmlinux 0xc471c67a twl4030_audio_disable_resource +EXPORT_SYMBOL_GPL vmlinux 0xc474d957 wm8350_clear_bits +EXPORT_SYMBOL_GPL vmlinux 0xc48b7ccf ata_mode_string +EXPORT_SYMBOL_GPL vmlinux 0xc4a301e1 gpiod_put_array +EXPORT_SYMBOL_GPL vmlinux 0xc4b2d200 ata_std_error_handler +EXPORT_SYMBOL_GPL vmlinux 0xc4c88415 __pm_runtime_use_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0xc4e70170 cgroup_attach_task_all +EXPORT_SYMBOL_GPL vmlinux 0xc5090dd8 input_ff_upload +EXPORT_SYMBOL_GPL vmlinux 0xc50b9084 napi_by_id +EXPORT_SYMBOL_GPL vmlinux 0xc5305438 crypto_destroy_tfm +EXPORT_SYMBOL_GPL vmlinux 0xc5397da6 xenbus_mkdir +EXPORT_SYMBOL_GPL vmlinux 0xc542933a timecounter_read +EXPORT_SYMBOL_GPL vmlinux 0xc5577f86 power_supply_get_by_name +EXPORT_SYMBOL_GPL vmlinux 0xc56488a7 __blk_run_queue_uncond +EXPORT_SYMBOL_GPL vmlinux 0xc575c737 debug_locks_off +EXPORT_SYMBOL_GPL vmlinux 0xc586f5d7 wakeup_source_create +EXPORT_SYMBOL_GPL vmlinux 0xc5bcbd13 ata_dev_next +EXPORT_SYMBOL_GPL vmlinux 0xc5ee5c43 fat_scan +EXPORT_SYMBOL_GPL vmlinux 0xc5f31fab subsys_system_register +EXPORT_SYMBOL_GPL vmlinux 0xc60a4069 bus_find_device_by_name +EXPORT_SYMBOL_GPL vmlinux 0xc60ba14f regulator_map_voltage_linear +EXPORT_SYMBOL_GPL vmlinux 0xc617f82c unregister_oom_notifier +EXPORT_SYMBOL_GPL vmlinux 0xc61921d2 pci_walk_bus +EXPORT_SYMBOL_GPL vmlinux 0xc62966dc regmap_get_val_endian +EXPORT_SYMBOL_GPL vmlinux 0xc63407de acpi_ec_add_query_handler +EXPORT_SYMBOL_GPL vmlinux 0xc63552a9 usb_get_phy_dev +EXPORT_SYMBOL_GPL vmlinux 0xc639c29f clockevents_config_and_register +EXPORT_SYMBOL_GPL vmlinux 0xc63d847d ktime_get_mono_fast_ns +EXPORT_SYMBOL_GPL vmlinux 0xc642d7f5 xen_xenbus_fops +EXPORT_SYMBOL_GPL vmlinux 0xc65d3eed ring_buffer_entries_cpu +EXPORT_SYMBOL_GPL vmlinux 0xc65fd508 pci_get_hp_params +EXPORT_SYMBOL_GPL vmlinux 0xc66019cc xen_resume_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc665cf9b ip_tunnel_get_stats64 +EXPORT_SYMBOL_GPL vmlinux 0xc66a1dbc acpi_dma_controller_register +EXPORT_SYMBOL_GPL vmlinux 0xc66b77b1 iommu_group_set_iommudata +EXPORT_SYMBOL_GPL vmlinux 0xc66cc832 ata_bmdma_stop +EXPORT_SYMBOL_GPL vmlinux 0xc66e11fd zap_vma_ptes +EXPORT_SYMBOL_GPL vmlinux 0xc6712bb2 dev_pm_qos_hide_latency_tolerance +EXPORT_SYMBOL_GPL vmlinux 0xc69b7ee5 zs_destroy_pool +EXPORT_SYMBOL_GPL vmlinux 0xc6a4a872 __clk_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0xc6bb54a9 ping_close +EXPORT_SYMBOL_GPL vmlinux 0xc6bca132 transport_class_register +EXPORT_SYMBOL_GPL vmlinux 0xc6c0aba3 clk_fractional_divider_ops +EXPORT_SYMBOL_GPL vmlinux 0xc6d4690d hrtimer_get_remaining +EXPORT_SYMBOL_GPL vmlinux 0xc6d5f463 blk_unprep_request +EXPORT_SYMBOL_GPL vmlinux 0xc7002ac4 evtchn_make_refcounted +EXPORT_SYMBOL_GPL vmlinux 0xc7064001 kobject_get_path +EXPORT_SYMBOL_GPL vmlinux 0xc7121c92 device_get_next_child_node +EXPORT_SYMBOL_GPL vmlinux 0xc72e1233 __trace_bprintk +EXPORT_SYMBOL_GPL vmlinux 0xc73adfec tracepoint_probe_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc748e3d7 pcie_port_bus_type +EXPORT_SYMBOL_GPL vmlinux 0xc7583ff9 security_kernel_fw_from_file +EXPORT_SYMBOL_GPL vmlinux 0xc7681b3e regmap_write_async +EXPORT_SYMBOL_GPL vmlinux 0xc76a20b1 pwm_put +EXPORT_SYMBOL_GPL vmlinux 0xc7a1840e llist_add_batch +EXPORT_SYMBOL_GPL vmlinux 0xc7c6391c mpi_set_buffer +EXPORT_SYMBOL_GPL vmlinux 0xc7c9e53e gpiod_get_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0xc7d1f554 xenbus_register_driver_common +EXPORT_SYMBOL_GPL vmlinux 0xc7e39bca ring_buffer_dropped_events_cpu +EXPORT_SYMBOL_GPL vmlinux 0xc8066cc1 bio_associate_blkcg +EXPORT_SYMBOL_GPL vmlinux 0xc823bea2 debugfs_create_blob +EXPORT_SYMBOL_GPL vmlinux 0xc83cd785 tps65912_reg_read +EXPORT_SYMBOL_GPL vmlinux 0xc850b923 gpiod_get_array +EXPORT_SYMBOL_GPL vmlinux 0xc852d569 rio_bus_type +EXPORT_SYMBOL_GPL vmlinux 0xc85f9077 devm_usb_get_phy_by_node +EXPORT_SYMBOL_GPL vmlinux 0xc86b4dab ata_sff_busy_sleep +EXPORT_SYMBOL_GPL vmlinux 0xc87c1f84 ktime_get +EXPORT_SYMBOL_GPL vmlinux 0xc87e487a sched_clock_idle_sleep_event +EXPORT_SYMBOL_GPL vmlinux 0xc8872cfe event_triggers_post_call +EXPORT_SYMBOL_GPL vmlinux 0xc8970088 skb_cow_data +EXPORT_SYMBOL_GPL vmlinux 0xc899694b crypto_register_pcomp +EXPORT_SYMBOL_GPL vmlinux 0xc8add232 ring_buffer_record_disable +EXPORT_SYMBOL_GPL vmlinux 0xc8b3d071 devm_power_supply_register_no_ws +EXPORT_SYMBOL_GPL vmlinux 0xc8de50d9 class_for_each_device +EXPORT_SYMBOL_GPL vmlinux 0xc8de802f cn_netlink_send +EXPORT_SYMBOL_GPL vmlinux 0xc8f0c46f arizona_dev_exit +EXPORT_SYMBOL_GPL vmlinux 0xc9049c48 class_find_device +EXPORT_SYMBOL_GPL vmlinux 0xc91277a1 kgdb_schedule_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0xc9139770 usb_disable_xhci_ports +EXPORT_SYMBOL_GPL vmlinux 0xc914292a raw_hash_sk +EXPORT_SYMBOL_GPL vmlinux 0xc9188a77 gpiod_is_active_low +EXPORT_SYMBOL_GPL vmlinux 0xc9297307 pm_runtime_force_suspend +EXPORT_SYMBOL_GPL vmlinux 0xc953ba7b __crypto_alloc_tfm +EXPORT_SYMBOL_GPL vmlinux 0xc955b19a agp_add_bridge +EXPORT_SYMBOL_GPL vmlinux 0xc9561772 fb_destroy_modelist +EXPORT_SYMBOL_GPL vmlinux 0xc95e6f56 netdev_rx_handler_register +EXPORT_SYMBOL_GPL vmlinux 0xc96439f0 pci_user_write_config_dword +EXPORT_SYMBOL_GPL vmlinux 0xc9705eeb has_newer_microcode +EXPORT_SYMBOL_GPL vmlinux 0xc9ae4db5 bdev_read_page +EXPORT_SYMBOL_GPL vmlinux 0xc9c3f176 hpet_register_irq_handler +EXPORT_SYMBOL_GPL vmlinux 0xc9dbd275 gpio_to_desc +EXPORT_SYMBOL_GPL vmlinux 0xc9e76721 __gpiod_get +EXPORT_SYMBOL_GPL vmlinux 0xc9ec4e21 free_percpu +EXPORT_SYMBOL_GPL vmlinux 0xca0721c3 wakeup_source_unregister +EXPORT_SYMBOL_GPL vmlinux 0xca2afc9b alloc_vm_area +EXPORT_SYMBOL_GPL vmlinux 0xca39c027 ata_sff_data_xfer_noirq +EXPORT_SYMBOL_GPL vmlinux 0xca4a0144 powercap_unregister_control_type +EXPORT_SYMBOL_GPL vmlinux 0xca75fa58 iommu_domain_window_enable +EXPORT_SYMBOL_GPL vmlinux 0xca7d8764 kthread_freezable_should_stop +EXPORT_SYMBOL_GPL vmlinux 0xca81ea9a xenbus_transaction_end +EXPORT_SYMBOL_GPL vmlinux 0xca8b50f2 fwnode_property_read_u64_array +EXPORT_SYMBOL_GPL vmlinux 0xca9fb452 dmaengine_unmap_put +EXPORT_SYMBOL_GPL vmlinux 0xcaadc696 ata_bmdma_port_start32 +EXPORT_SYMBOL_GPL vmlinux 0xcab031e6 ata_acpi_gtm_xfermask +EXPORT_SYMBOL_GPL vmlinux 0xcabe04de cpuidle_resume_and_unlock +EXPORT_SYMBOL_GPL vmlinux 0xcac07808 skcipher_geniv_init +EXPORT_SYMBOL_GPL vmlinux 0xcb15eee9 sdhci_pci_get_data +EXPORT_SYMBOL_GPL vmlinux 0xcb469d2b ddebug_add_module +EXPORT_SYMBOL_GPL vmlinux 0xcb4ef1c3 device_add +EXPORT_SYMBOL_GPL vmlinux 0xcb543ce2 virtqueue_kick_prepare +EXPORT_SYMBOL_GPL vmlinux 0xcb87014a ioremap_uc +EXPORT_SYMBOL_GPL vmlinux 0xcb9c6dac fs_kobj +EXPORT_SYMBOL_GPL vmlinux 0xcbb10b4a device_create_with_groups +EXPORT_SYMBOL_GPL vmlinux 0xcbd48c3f hv_setup_crash_handler +EXPORT_SYMBOL_GPL vmlinux 0xcbe56bc2 zs_get_total_pages +EXPORT_SYMBOL_GPL vmlinux 0xcbee20b2 get_cpu_iowait_time_us +EXPORT_SYMBOL_GPL vmlinux 0xcc1ed824 tcp_cong_avoid_ai +EXPORT_SYMBOL_GPL vmlinux 0xcc41133b irq_find_host +EXPORT_SYMBOL_GPL vmlinux 0xcc4a822c pci_ignore_hotplug +EXPORT_SYMBOL_GPL vmlinux 0xcc5e10d7 gpiod_cansleep +EXPORT_SYMBOL_GPL vmlinux 0xcc76a977 rio_request_inb_pwrite +EXPORT_SYMBOL_GPL vmlinux 0xcc85c97e pwm_set_polarity +EXPORT_SYMBOL_GPL vmlinux 0xcc85fcb6 async_schedule +EXPORT_SYMBOL_GPL vmlinux 0xcc913503 md_run +EXPORT_SYMBOL_GPL vmlinux 0xcc94510e dev_pm_enable_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0xcccfb2fa sata_deb_timing_hotplug +EXPORT_SYMBOL_GPL vmlinux 0xccea4e34 perf_get_x86_pmu_capability +EXPORT_SYMBOL_GPL vmlinux 0xccf8567d pid_nr_ns +EXPORT_SYMBOL_GPL vmlinux 0xcd1516df register_kprobe +EXPORT_SYMBOL_GPL vmlinux 0xcd15e3ef sdio_memcpy_toio +EXPORT_SYMBOL_GPL vmlinux 0xcd1d3091 crypto_ahash_finup +EXPORT_SYMBOL_GPL vmlinux 0xcd2a6c31 __get_vm_area +EXPORT_SYMBOL_GPL vmlinux 0xcd3ea692 __rio_local_read_config_8 +EXPORT_SYMBOL_GPL vmlinux 0xcd4036c5 of_phy_provider_unregister +EXPORT_SYMBOL_GPL vmlinux 0xcd4a46b9 dma_buf_kunmap +EXPORT_SYMBOL_GPL vmlinux 0xcd5ab927 __blocking_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xcd5d4ef9 btree_update +EXPORT_SYMBOL_GPL vmlinux 0xcd63b8f7 sdio_align_size +EXPORT_SYMBOL_GPL vmlinux 0xcd700567 rio_dev_get +EXPORT_SYMBOL_GPL vmlinux 0xcd91b127 system_highpri_wq +EXPORT_SYMBOL_GPL vmlinux 0xcd974f00 rcu_all_qs +EXPORT_SYMBOL_GPL vmlinux 0xcdb127a3 ata_dummy_port_ops +EXPORT_SYMBOL_GPL vmlinux 0xcdb6adcc ras_userspace_consumers +EXPORT_SYMBOL_GPL vmlinux 0xcdc38e3f usb_driver_set_configuration +EXPORT_SYMBOL_GPL vmlinux 0xcdca3691 nr_irqs +EXPORT_SYMBOL_GPL vmlinux 0xcddefb98 pci_max_pasids +EXPORT_SYMBOL_GPL vmlinux 0xcdea50f3 wm8400_reg_read +EXPORT_SYMBOL_GPL vmlinux 0xce12d037 btree_insert +EXPORT_SYMBOL_GPL vmlinux 0xce246b58 acpi_subsys_suspend_late +EXPORT_SYMBOL_GPL vmlinux 0xce6a9d9a trace_current_buffer_discard_commit +EXPORT_SYMBOL_GPL vmlinux 0xce6c9ca9 vfs_fallocate +EXPORT_SYMBOL_GPL vmlinux 0xce6db656 rcu_is_watching +EXPORT_SYMBOL_GPL vmlinux 0xce790392 use_mm +EXPORT_SYMBOL_GPL vmlinux 0xce8135cd gpiod_set_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0xceacfdae rio_mport_read_config_16 +EXPORT_SYMBOL_GPL vmlinux 0xceb32f50 evm_inode_init_security +EXPORT_SYMBOL_GPL vmlinux 0xcebac9d7 devm_acpi_dma_controller_free +EXPORT_SYMBOL_GPL vmlinux 0xcec45a94 irq_domain_xlate_onecell +EXPORT_SYMBOL_GPL vmlinux 0xcecf614e sock_diag_register_inet_compat +EXPORT_SYMBOL_GPL vmlinux 0xced1c1a0 iommu_iova_to_phys +EXPORT_SYMBOL_GPL vmlinux 0xcee1641c kgdb_unregister_nmi_console +EXPORT_SYMBOL_GPL vmlinux 0xcee1e740 ata_eh_qc_complete +EXPORT_SYMBOL_GPL vmlinux 0xcee98251 rtc_update_irq +EXPORT_SYMBOL_GPL vmlinux 0xcef1dd0e perf_check_microcode +EXPORT_SYMBOL_GPL vmlinux 0xcf007638 blkg_lookup_create +EXPORT_SYMBOL_GPL vmlinux 0xcf06771c device_create_file +EXPORT_SYMBOL_GPL vmlinux 0xcf1ebbc5 add_to_page_cache_lru +EXPORT_SYMBOL_GPL vmlinux 0xcf54ea93 async_unregister_domain +EXPORT_SYMBOL_GPL vmlinux 0xcf64c07d register_kretprobe +EXPORT_SYMBOL_GPL vmlinux 0xcf7dc1e4 dev_pm_qos_remove_notifier +EXPORT_SYMBOL_GPL vmlinux 0xcfb5871c irq_work_queue +EXPORT_SYMBOL_GPL vmlinux 0xcfbc7b9a list_lru_del +EXPORT_SYMBOL_GPL vmlinux 0xcfc68341 synchronize_rcu_bh +EXPORT_SYMBOL_GPL vmlinux 0xcfd514ec hwrng_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd00a0e9b max8997_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0xd0234971 unregister_net_sysctl_table +EXPORT_SYMBOL_GPL vmlinux 0xd03c7700 secure_ipv4_port_ephemeral +EXPORT_SYMBOL_GPL vmlinux 0xd0458ccb xenbus_strstate +EXPORT_SYMBOL_GPL vmlinux 0xd06524ba raw_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd067d3c5 system_freezable_power_efficient_wq +EXPORT_SYMBOL_GPL vmlinux 0xd07deb86 devm_extcon_dev_register +EXPORT_SYMBOL_GPL vmlinux 0xd08a0d05 skb_scrub_packet +EXPORT_SYMBOL_GPL vmlinux 0xd0bf393b pm_runtime_autosuspend_expiration +EXPORT_SYMBOL_GPL vmlinux 0xd0c05159 emergency_restart +EXPORT_SYMBOL_GPL vmlinux 0xd0f9eea5 klist_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0xd0fb5718 crypto_unregister_aeads +EXPORT_SYMBOL_GPL vmlinux 0xd121dd87 rtc_set_alarm +EXPORT_SYMBOL_GPL vmlinux 0xd13e87bd serial8250_clear_and_reinit_fifos +EXPORT_SYMBOL_GPL vmlinux 0xd145ad07 blkcg_activate_policy +EXPORT_SYMBOL_GPL vmlinux 0xd1507e59 erst_clear +EXPORT_SYMBOL_GPL vmlinux 0xd1605518 ablkcipher_walk_done +EXPORT_SYMBOL_GPL vmlinux 0xd16712f3 crypto_check_attr_type +EXPORT_SYMBOL_GPL vmlinux 0xd1ba87fd regulator_set_current_limit +EXPORT_SYMBOL_GPL vmlinux 0xd1c11a30 __platform_driver_probe +EXPORT_SYMBOL_GPL vmlinux 0xd1ca0bb6 kobject_uevent +EXPORT_SYMBOL_GPL vmlinux 0xd1df598c devm_phy_destroy +EXPORT_SYMBOL_GPL vmlinux 0xd1f2eee2 nf_logger_find_get +EXPORT_SYMBOL_GPL vmlinux 0xd1f3eb43 rtc_set_time +EXPORT_SYMBOL_GPL vmlinux 0xd20bf6ba dcookie_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd217e9e6 trace_set_clr_event +EXPORT_SYMBOL_GPL vmlinux 0xd22d7d87 ohci_hub_control +EXPORT_SYMBOL_GPL vmlinux 0xd234791a ima_file_check +EXPORT_SYMBOL_GPL vmlinux 0xd235b5df dev_change_net_namespace +EXPORT_SYMBOL_GPL vmlinux 0xd24c197c usb_hcd_unlink_urb_from_ep +EXPORT_SYMBOL_GPL vmlinux 0xd2568626 rtc_device_register +EXPORT_SYMBOL_GPL vmlinux 0xd25f3334 crypto_find_alg +EXPORT_SYMBOL_GPL vmlinux 0xd271c0c3 key_type_trusted +EXPORT_SYMBOL_GPL vmlinux 0xd273b1b1 __round_jiffies_up_relative +EXPORT_SYMBOL_GPL vmlinux 0xd28285ef power_supply_notifier +EXPORT_SYMBOL_GPL vmlinux 0xd2a24e9f ata_slave_link_init +EXPORT_SYMBOL_GPL vmlinux 0xd2a956aa sysfs_remove_link +EXPORT_SYMBOL_GPL vmlinux 0xd2aaeb4e kmsg_dump_get_buffer +EXPORT_SYMBOL_GPL vmlinux 0xd2b3803a splice_to_pipe +EXPORT_SYMBOL_GPL vmlinux 0xd2b7ce66 crypto_remove_spawns +EXPORT_SYMBOL_GPL vmlinux 0xd2c05524 skb_tstamp_tx +EXPORT_SYMBOL_GPL vmlinux 0xd2c58ab2 apei_exec_noop +EXPORT_SYMBOL_GPL vmlinux 0xd2e02833 crypto_unregister_shash +EXPORT_SYMBOL_GPL vmlinux 0xd2e88de5 clk_register_gate +EXPORT_SYMBOL_GPL vmlinux 0xd2edf4b7 ata_get_cmd_descript +EXPORT_SYMBOL_GPL vmlinux 0xd2fb9050 platform_device_add_resources +EXPORT_SYMBOL_GPL vmlinux 0xd308998e ata_scsi_change_queue_depth +EXPORT_SYMBOL_GPL vmlinux 0xd30dee25 tpm_get_timeouts +EXPORT_SYMBOL_GPL vmlinux 0xd3234fa6 pci_ats_queue_depth +EXPORT_SYMBOL_GPL vmlinux 0xd36eaaa7 led_sysfs_enable +EXPORT_SYMBOL_GPL vmlinux 0xd3758fbb pci_find_next_ext_capability +EXPORT_SYMBOL_GPL vmlinux 0xd382c6d7 alarmtimer_get_rtcdev +EXPORT_SYMBOL_GPL vmlinux 0xd3886a33 wb_writeout_inc +EXPORT_SYMBOL_GPL vmlinux 0xd38c6282 __pm_stay_awake +EXPORT_SYMBOL_GPL vmlinux 0xd397f50c debugfs_create_u16 +EXPORT_SYMBOL_GPL vmlinux 0xd3b0bbbc dma_buf_map_attachment +EXPORT_SYMBOL_GPL vmlinux 0xd3cc68d9 led_trigger_show +EXPORT_SYMBOL_GPL vmlinux 0xd3cfac58 blk_trace_setup +EXPORT_SYMBOL_GPL vmlinux 0xd3db1ae6 posix_acl_create +EXPORT_SYMBOL_GPL vmlinux 0xd3e1671a tpmm_chip_alloc +EXPORT_SYMBOL_GPL vmlinux 0xd3e9802b i2c_generic_gpio_recovery +EXPORT_SYMBOL_GPL vmlinux 0xd3ea4509 debugfs_create_x32 +EXPORT_SYMBOL_GPL vmlinux 0xd3f3b14b efivar_entry_iter +EXPORT_SYMBOL_GPL vmlinux 0xd3fde6c4 __platform_driver_register +EXPORT_SYMBOL_GPL vmlinux 0xd401ab2f wm5110_spi_regmap +EXPORT_SYMBOL_GPL vmlinux 0xd4034828 system_freezable_wq +EXPORT_SYMBOL_GPL vmlinux 0xd409b35b ata_do_dev_read_id +EXPORT_SYMBOL_GPL vmlinux 0xd41fffab interval_tree_iter_first +EXPORT_SYMBOL_GPL vmlinux 0xd43558cc srcu_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xd44a5eac kgdb_register_nmi_console +EXPORT_SYMBOL_GPL vmlinux 0xd467be39 crypto_aead_setkey +EXPORT_SYMBOL_GPL vmlinux 0xd4711ece show_class_attr_string +EXPORT_SYMBOL_GPL vmlinux 0xd47a5ed1 usb_bulk_msg +EXPORT_SYMBOL_GPL vmlinux 0xd4869502 init_uts_ns +EXPORT_SYMBOL_GPL vmlinux 0xd4c14632 system_unbound_wq +EXPORT_SYMBOL_GPL vmlinux 0xd4ceacc7 device_init_wakeup +EXPORT_SYMBOL_GPL vmlinux 0xd4db879b usb_anchor_urb +EXPORT_SYMBOL_GPL vmlinux 0xd4e3d7c8 ping_hash +EXPORT_SYMBOL_GPL vmlinux 0xd4f0c7da gpiod_direction_output_raw +EXPORT_SYMBOL_GPL vmlinux 0xd508a7ce simple_attr_write +EXPORT_SYMBOL_GPL vmlinux 0xd50bb3e2 inet_csk_search_req +EXPORT_SYMBOL_GPL vmlinux 0xd50fdeed spi_bus_type +EXPORT_SYMBOL_GPL vmlinux 0xd5156d1d bmp085_remove +EXPORT_SYMBOL_GPL vmlinux 0xd5242c04 efivar_entry_remove +EXPORT_SYMBOL_GPL vmlinux 0xd5345fb7 sock_diag_put_meminfo +EXPORT_SYMBOL_GPL vmlinux 0xd53b1f29 tps65912_reg_write +EXPORT_SYMBOL_GPL vmlinux 0xd544e902 pgprot_writecombine +EXPORT_SYMBOL_GPL vmlinux 0xd54ed564 crypto_default_rng +EXPORT_SYMBOL_GPL vmlinux 0xd55ad93b iommu_group_get_iommudata +EXPORT_SYMBOL_GPL vmlinux 0xd572cc42 sata_link_debounce +EXPORT_SYMBOL_GPL vmlinux 0xd58e722b usb_unlink_urb +EXPORT_SYMBOL_GPL vmlinux 0xd5ac80fd crypto_rng_reset +EXPORT_SYMBOL_GPL vmlinux 0xd5bd7dac ring_buffer_record_enable_cpu +EXPORT_SYMBOL_GPL vmlinux 0xd5bf5d49 attribute_container_classdev_to_container +EXPORT_SYMBOL_GPL vmlinux 0xd5e3e239 acpi_subsys_freeze +EXPORT_SYMBOL_GPL vmlinux 0xd5eb0157 ata_std_qc_defer +EXPORT_SYMBOL_GPL vmlinux 0xd60c99b5 rcu_batches_completed_bh +EXPORT_SYMBOL_GPL vmlinux 0xd6708956 dpm_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0xd672dea1 sata_std_hardreset +EXPORT_SYMBOL_GPL vmlinux 0xd67364f7 eventfd_ctx_fdget +EXPORT_SYMBOL_GPL vmlinux 0xd68c7c81 arizona_free_irq +EXPORT_SYMBOL_GPL vmlinux 0xd68cc2a1 rt_mutex_trylock +EXPORT_SYMBOL_GPL vmlinux 0xd6905074 __pm_runtime_resume +EXPORT_SYMBOL_GPL vmlinux 0xd6ac53f5 __pm_relax +EXPORT_SYMBOL_GPL vmlinux 0xd6c0e994 da903x_reads +EXPORT_SYMBOL_GPL vmlinux 0xd6c2e04b __tracepoint_napi_poll +EXPORT_SYMBOL_GPL vmlinux 0xd6d8e8e3 dma_buf_kmap_atomic +EXPORT_SYMBOL_GPL vmlinux 0xd6e042c3 crypto_ahash_digest +EXPORT_SYMBOL_GPL vmlinux 0xd6ed3a8e cper_next_record_id +EXPORT_SYMBOL_GPL vmlinux 0xd6feefa5 agp_num_entries +EXPORT_SYMBOL_GPL vmlinux 0xd705b4c7 schedule_hrtimeout +EXPORT_SYMBOL_GPL vmlinux 0xd72feba2 xenbus_read_driver_state +EXPORT_SYMBOL_GPL vmlinux 0xd7399d2a efivar_entry_iter_end +EXPORT_SYMBOL_GPL vmlinux 0xd73f6614 simple_attr_release +EXPORT_SYMBOL_GPL vmlinux 0xd74068b0 ata_pci_sff_init_one +EXPORT_SYMBOL_GPL vmlinux 0xd764d265 inet_hashinfo_init +EXPORT_SYMBOL_GPL vmlinux 0xd768e985 regulator_has_full_constraints +EXPORT_SYMBOL_GPL vmlinux 0xd77c0bc8 klist_remove +EXPORT_SYMBOL_GPL vmlinux 0xd7a85c5a list_lru_count_one +EXPORT_SYMBOL_GPL vmlinux 0xd7ab2c0c speedstep_detect_processor +EXPORT_SYMBOL_GPL vmlinux 0xd7c9ffa2 generic_fh_to_dentry +EXPORT_SYMBOL_GPL vmlinux 0xd7d79132 put_online_cpus +EXPORT_SYMBOL_GPL vmlinux 0xd81de62c ring_buffer_record_enable +EXPORT_SYMBOL_GPL vmlinux 0xd820c283 eventfd_ctx_remove_wait_queue +EXPORT_SYMBOL_GPL vmlinux 0xd8250a5c iounmap_atomic +EXPORT_SYMBOL_GPL vmlinux 0xd83e543f devm_of_phy_get_by_index +EXPORT_SYMBOL_GPL vmlinux 0xd84a3ed0 pci_ioremap_bar +EXPORT_SYMBOL_GPL vmlinux 0xd85b27d3 tty_port_tty_hangup +EXPORT_SYMBOL_GPL vmlinux 0xd87601cc ring_buffer_unlock_commit +EXPORT_SYMBOL_GPL vmlinux 0xd87b101b pwm_request +EXPORT_SYMBOL_GPL vmlinux 0xd87fc0a0 usb_amd_prefetch_quirk +EXPORT_SYMBOL_GPL vmlinux 0xd8c648ae __inet_lookup_listener +EXPORT_SYMBOL_GPL vmlinux 0xd8d55cab blk_rq_check_limits +EXPORT_SYMBOL_GPL vmlinux 0xd8e262a0 rtnl_put_cacheinfo +EXPORT_SYMBOL_GPL vmlinux 0xd90ed49c pm_schedule_suspend +EXPORT_SYMBOL_GPL vmlinux 0xd919806a amd_cache_northbridges +EXPORT_SYMBOL_GPL vmlinux 0xd91a6bd5 serial8250_release_dma +EXPORT_SYMBOL_GPL vmlinux 0xd942d353 ring_buffer_record_off +EXPORT_SYMBOL_GPL vmlinux 0xd94b737e erst_read +EXPORT_SYMBOL_GPL vmlinux 0xd955816e pm_generic_freeze_late +EXPORT_SYMBOL_GPL vmlinux 0xd96babb4 interval_tree_iter_next +EXPORT_SYMBOL_GPL vmlinux 0xd9712b56 pwm_free +EXPORT_SYMBOL_GPL vmlinux 0xd97c8500 sock_prot_inuse_get +EXPORT_SYMBOL_GPL vmlinux 0xd9856a48 class_create_file_ns +EXPORT_SYMBOL_GPL vmlinux 0xd986dad1 kernel_fpu_begin +EXPORT_SYMBOL_GPL vmlinux 0xd9881fc6 pm_generic_restore +EXPORT_SYMBOL_GPL vmlinux 0xd99afd17 spi_get_device_id +EXPORT_SYMBOL_GPL vmlinux 0xd9a5aab0 xattr_getsecurity +EXPORT_SYMBOL_GPL vmlinux 0xd9d89d29 edac_subsys +EXPORT_SYMBOL_GPL vmlinux 0xd9de6d22 iommu_domain_set_attr +EXPORT_SYMBOL_GPL vmlinux 0xd9e510eb sk_setup_caps +EXPORT_SYMBOL_GPL vmlinux 0xd9ecb670 ring_buffer_overruns +EXPORT_SYMBOL_GPL vmlinux 0xda04306d pinctrl_lookup_state +EXPORT_SYMBOL_GPL vmlinux 0xda3052bf devm_usb_put_phy +EXPORT_SYMBOL_GPL vmlinux 0xda4df459 ahash_free_instance +EXPORT_SYMBOL_GPL vmlinux 0xda5285e2 regmap_init_spi +EXPORT_SYMBOL_GPL vmlinux 0xda6dda32 regulator_get_voltage +EXPORT_SYMBOL_GPL vmlinux 0xda7d7b21 led_trigger_set +EXPORT_SYMBOL_GPL vmlinux 0xda867b9c dma_release_channel +EXPORT_SYMBOL_GPL vmlinux 0xda8d25d3 inet_peer_base_init +EXPORT_SYMBOL_GPL vmlinux 0xdaa06dc1 acpi_lpat_raw_to_temp +EXPORT_SYMBOL_GPL vmlinux 0xdaa6d01d usb_hcd_unmap_urb_setup_for_dma +EXPORT_SYMBOL_GPL vmlinux 0xdab78780 nd_cmd_out_size +EXPORT_SYMBOL_GPL vmlinux 0xdad381fe serial8250_do_startup +EXPORT_SYMBOL_GPL vmlinux 0xdadcb195 usb_block_urb +EXPORT_SYMBOL_GPL vmlinux 0xdae1454c register_pernet_device +EXPORT_SYMBOL_GPL vmlinux 0xdaed3073 timerqueue_del +EXPORT_SYMBOL_GPL vmlinux 0xdaf4dfb3 fb_mode_option +EXPORT_SYMBOL_GPL vmlinux 0xdaf9d69a wm8350_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xdb083836 __netpoll_cleanup +EXPORT_SYMBOL_GPL vmlinux 0xdb088cb1 pm_qos_add_request +EXPORT_SYMBOL_GPL vmlinux 0xdb397701 efivar_entry_find +EXPORT_SYMBOL_GPL vmlinux 0xdb63a944 acpi_lpat_get_conversion_table +EXPORT_SYMBOL_GPL vmlinux 0xdb731bf9 crypto_unregister_akcipher +EXPORT_SYMBOL_GPL vmlinux 0xdb74c282 gpiod_direction_input +EXPORT_SYMBOL_GPL vmlinux 0xdb8a1b3f usermodehelper_read_trylock +EXPORT_SYMBOL_GPL vmlinux 0xdbb08ccd ata_std_postreset +EXPORT_SYMBOL_GPL vmlinux 0xdbdbe0e7 xen_swiotlb_set_dma_mask +EXPORT_SYMBOL_GPL vmlinux 0xdbf7cb70 mpi_get_nbits +EXPORT_SYMBOL_GPL vmlinux 0xdc145698 bpf_prog_alloc +EXPORT_SYMBOL_GPL vmlinux 0xdc14a211 xen_hvm_evtchn_do_upcall +EXPORT_SYMBOL_GPL vmlinux 0xdc2c2991 clk_debugfs_add_file +EXPORT_SYMBOL_GPL vmlinux 0xdc2d5744 sdio_set_host_pm_flags +EXPORT_SYMBOL_GPL vmlinux 0xdc6699cb acpi_dev_free_resource_list +EXPORT_SYMBOL_GPL vmlinux 0xdc825d6c usb_amd_quirk_pll_disable +EXPORT_SYMBOL_GPL vmlinux 0xdc97af2e syscore_suspend +EXPORT_SYMBOL_GPL vmlinux 0xdc9fa232 raw_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0xdcd2226b of_phy_get +EXPORT_SYMBOL_GPL vmlinux 0xdce7b510 for_each_kernel_tracepoint +EXPORT_SYMBOL_GPL vmlinux 0xdd001256 inet6_csk_search_req +EXPORT_SYMBOL_GPL vmlinux 0xdd17ffec trace_clock +EXPORT_SYMBOL_GPL vmlinux 0xdd2efc0f ring_buffer_reset_cpu +EXPORT_SYMBOL_GPL vmlinux 0xdd391eff profile_event_unregister +EXPORT_SYMBOL_GPL vmlinux 0xdd3b1f02 rio_attach_device +EXPORT_SYMBOL_GPL vmlinux 0xdd5b17e5 acpi_device_uevent_modalias +EXPORT_SYMBOL_GPL vmlinux 0xdd711a46 bmp085_detect +EXPORT_SYMBOL_GPL vmlinux 0xdd7e1b45 regulator_bulk_disable +EXPORT_SYMBOL_GPL vmlinux 0xdd832cff nf_register_afinfo +EXPORT_SYMBOL_GPL vmlinux 0xddba2c5a tcp_twsk_destructor +EXPORT_SYMBOL_GPL vmlinux 0xddbeeecc pci_lock_rescan_remove +EXPORT_SYMBOL_GPL vmlinux 0xddd58dc0 ring_buffer_reset +EXPORT_SYMBOL_GPL vmlinux 0xdde58324 ata_std_prereset +EXPORT_SYMBOL_GPL vmlinux 0xddeac810 regmap_raw_write_async +EXPORT_SYMBOL_GPL vmlinux 0xddf51dc8 ata_sff_thaw +EXPORT_SYMBOL_GPL vmlinux 0xde018ed4 wm831x_reg_write +EXPORT_SYMBOL_GPL vmlinux 0xde0b3102 regmap_init_mmio_clk +EXPORT_SYMBOL_GPL vmlinux 0xde17de30 get_device +EXPORT_SYMBOL_GPL vmlinux 0xde1a5eaf crypto_ahash_walk_first +EXPORT_SYMBOL_GPL vmlinux 0xde2df82b md_stop +EXPORT_SYMBOL_GPL vmlinux 0xde3bef2c syscon_node_to_regmap +EXPORT_SYMBOL_GPL vmlinux 0xde4bb58b pci_bus_resource_n +EXPORT_SYMBOL_GPL vmlinux 0xde58e576 da9052_disable_irq_nosync +EXPORT_SYMBOL_GPL vmlinux 0xde58f5a8 reservation_object_wait_timeout_rcu +EXPORT_SYMBOL_GPL vmlinux 0xde619dd0 input_ff_erase +EXPORT_SYMBOL_GPL vmlinux 0xde747356 intel_msic_reg_write +EXPORT_SYMBOL_GPL vmlinux 0xde7ad366 xen_remap_domain_mfn_range +EXPORT_SYMBOL_GPL vmlinux 0xde836c66 tty_find_polling_driver +EXPORT_SYMBOL_GPL vmlinux 0xde838398 pcc_mbox_free_channel +EXPORT_SYMBOL_GPL vmlinux 0xde8dd926 klist_next +EXPORT_SYMBOL_GPL vmlinux 0xde9f541c ping_common_sendmsg +EXPORT_SYMBOL_GPL vmlinux 0xdef07399 gpiod_get_raw_value +EXPORT_SYMBOL_GPL vmlinux 0xdef813be hrtimer_init_sleeper +EXPORT_SYMBOL_GPL vmlinux 0xdf099108 acpi_pci_check_ejectable +EXPORT_SYMBOL_GPL vmlinux 0xdf0f75c6 eventfd_signal +EXPORT_SYMBOL_GPL vmlinux 0xdf1882af dbgp_reset_prep +EXPORT_SYMBOL_GPL vmlinux 0xdf1fa3c2 devm_pwm_put +EXPORT_SYMBOL_GPL vmlinux 0xdf39df41 sk_set_memalloc +EXPORT_SYMBOL_GPL vmlinux 0xdf622181 clk_register_divider_table +EXPORT_SYMBOL_GPL vmlinux 0xdf66ca81 ucode_cpu_info +EXPORT_SYMBOL_GPL vmlinux 0xdf75282c inet_twsk_purge +EXPORT_SYMBOL_GPL vmlinux 0xdf7acfc0 rtc_initialize_alarm +EXPORT_SYMBOL_GPL vmlinux 0xdf9fe775 register_acpi_bus_type +EXPORT_SYMBOL_GPL vmlinux 0xdfbd2c06 acpi_dev_get_resources +EXPORT_SYMBOL_GPL vmlinux 0xdfcb598e crypto_alloc_ahash +EXPORT_SYMBOL_GPL vmlinux 0xe003e044 __tracepoint_add_device_to_group +EXPORT_SYMBOL_GPL vmlinux 0xe007de41 kallsyms_lookup_name +EXPORT_SYMBOL_GPL vmlinux 0xe0176c9f regmap_get_val_bytes +EXPORT_SYMBOL_GPL vmlinux 0xe02eb6d0 ring_buffer_commit_overrun_cpu +EXPORT_SYMBOL_GPL vmlinux 0xe04b7dfc clk_register_mux +EXPORT_SYMBOL_GPL vmlinux 0xe05a91a3 device_create_vargs +EXPORT_SYMBOL_GPL vmlinux 0xe064cdfb mbox_send_message +EXPORT_SYMBOL_GPL vmlinux 0xe0723038 gpiochip_remove +EXPORT_SYMBOL_GPL vmlinux 0xe089cfcc agp_memory_reserved +EXPORT_SYMBOL_GPL vmlinux 0xe093cd7c sysfs_notify +EXPORT_SYMBOL_GPL vmlinux 0xe0a38b60 acpi_dev_get_property_reference +EXPORT_SYMBOL_GPL vmlinux 0xe0b1c103 clk_set_max_rate +EXPORT_SYMBOL_GPL vmlinux 0xe0c0b512 usb_enable_ltm +EXPORT_SYMBOL_GPL vmlinux 0xe0c77bb5 mce_notify_irq +EXPORT_SYMBOL_GPL vmlinux 0xe0ec3bf4 edac_get_sysfs_subsys +EXPORT_SYMBOL_GPL vmlinux 0xe0fc3034 ata_base_port_ops +EXPORT_SYMBOL_GPL vmlinux 0xe100cc28 devm_usb_get_phy_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0xe10cd6ad erst_get_record_id_begin +EXPORT_SYMBOL_GPL vmlinux 0xe121cbb6 static_key_slow_dec_deferred +EXPORT_SYMBOL_GPL vmlinux 0xe12c0c67 usb_phy_generic_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe13d1aa2 fuse_dev_alloc +EXPORT_SYMBOL_GPL vmlinux 0xe1775ee7 dm_get_reserved_bio_based_ios +EXPORT_SYMBOL_GPL vmlinux 0xe1b194e8 usb_get_phy +EXPORT_SYMBOL_GPL vmlinux 0xe1bd6c99 rio_init_mports +EXPORT_SYMBOL_GPL vmlinux 0xe1e0bdf7 sock_diag_register +EXPORT_SYMBOL_GPL vmlinux 0xe20286aa watchdog_register_device +EXPORT_SYMBOL_GPL vmlinux 0xe2134239 __dev_forward_skb +EXPORT_SYMBOL_GPL vmlinux 0xe2169bb3 nf_queue_entry_get_refs +EXPORT_SYMBOL_GPL vmlinux 0xe221c85b extcon_set_cable_state +EXPORT_SYMBOL_GPL vmlinux 0xe225056b register_net_sysctl +EXPORT_SYMBOL_GPL vmlinux 0xe22fce86 blkdev_write_iter +EXPORT_SYMBOL_GPL vmlinux 0xe243ebcb cpci_hp_register_controller +EXPORT_SYMBOL_GPL vmlinux 0xe25a6558 sdev_evt_send_simple +EXPORT_SYMBOL_GPL vmlinux 0xe28a1d1a sdhci_pci_spt_drive_strength +EXPORT_SYMBOL_GPL vmlinux 0xe295c0ff is_hpet_enabled +EXPORT_SYMBOL_GPL vmlinux 0xe2a9e90e regmap_init +EXPORT_SYMBOL_GPL vmlinux 0xe2afb007 nd_mapping_attribute_group +EXPORT_SYMBOL_GPL vmlinux 0xe2b4898f xhci_dbg_trace +EXPORT_SYMBOL_GPL vmlinux 0xe2b70e6c ata_std_bios_param +EXPORT_SYMBOL_GPL vmlinux 0xe2bf71a2 __tracepoint_xhci_dbg_quirks +EXPORT_SYMBOL_GPL vmlinux 0xe2c6d0a4 replace_page_cache_page +EXPORT_SYMBOL_GPL vmlinux 0xe2ef20d6 __page_file_mapping +EXPORT_SYMBOL_GPL vmlinux 0xe2f087a9 pci_probe_reset_bus +EXPORT_SYMBOL_GPL vmlinux 0xe2f33b80 usb_interrupt_msg +EXPORT_SYMBOL_GPL vmlinux 0xe3043ff9 request_any_context_irq +EXPORT_SYMBOL_GPL vmlinux 0xe30b0946 regulator_bulk_get +EXPORT_SYMBOL_GPL vmlinux 0xe3781628 __srcu_read_lock +EXPORT_SYMBOL_GPL vmlinux 0xe384a102 usb_speed_string +EXPORT_SYMBOL_GPL vmlinux 0xe3856e19 crypto_unregister_aead +EXPORT_SYMBOL_GPL vmlinux 0xe3948ff4 acpi_walk_dep_device_list +EXPORT_SYMBOL_GPL vmlinux 0xe3bc7fd4 hpet_unregister_irq_handler +EXPORT_SYMBOL_GPL vmlinux 0xe3bda663 inet_ehash_locks_alloc +EXPORT_SYMBOL_GPL vmlinux 0xe3d8c0ae ip6_datagram_recv_ctl +EXPORT_SYMBOL_GPL vmlinux 0xe3eff165 pci_enable_pri +EXPORT_SYMBOL_GPL vmlinux 0xe3f3b549 sysfs_create_files +EXPORT_SYMBOL_GPL vmlinux 0xe3f61d5e raw_seq_stop +EXPORT_SYMBOL_GPL vmlinux 0xe4006068 regulator_get_hardware_vsel_register +EXPORT_SYMBOL_GPL vmlinux 0xe411c16d alarm_restart +EXPORT_SYMBOL_GPL vmlinux 0xe414760d dm_noflush_suspending +EXPORT_SYMBOL_GPL vmlinux 0xe41534ce bind_evtchn_to_irqhandler +EXPORT_SYMBOL_GPL vmlinux 0xe4309905 syscore_resume +EXPORT_SYMBOL_GPL vmlinux 0xe436ab5d regulator_get_mode +EXPORT_SYMBOL_GPL vmlinux 0xe439815c erst_get_record_count +EXPORT_SYMBOL_GPL vmlinux 0xe43dca55 bitmap_load +EXPORT_SYMBOL_GPL vmlinux 0xe460e01b rtc_irq_set_state +EXPORT_SYMBOL_GPL vmlinux 0xe4689576 ktime_get_with_offset +EXPORT_SYMBOL_GPL vmlinux 0xe46ee3a0 sdio_writel +EXPORT_SYMBOL_GPL vmlinux 0xe490900d bio_trim +EXPORT_SYMBOL_GPL vmlinux 0xe4971ade tracing_alloc_snapshot +EXPORT_SYMBOL_GPL vmlinux 0xe4a501b5 pinctrl_add_gpio_ranges +EXPORT_SYMBOL_GPL vmlinux 0xe4af0ad6 usb_get_descriptor +EXPORT_SYMBOL_GPL vmlinux 0xe4c331b6 acpi_os_unmap_memory +EXPORT_SYMBOL_GPL vmlinux 0xe4c6a4cb usb_unlocked_disable_lpm +EXPORT_SYMBOL_GPL vmlinux 0xe4e400d8 tps6586x_update +EXPORT_SYMBOL_GPL vmlinux 0xe4e68bc8 apei_map_generic_address +EXPORT_SYMBOL_GPL vmlinux 0xe4f2b917 ata_sff_data_xfer +EXPORT_SYMBOL_GPL vmlinux 0xe4ffa1ac percpu_ida_alloc +EXPORT_SYMBOL_GPL vmlinux 0xe514d401 usb_anchor_suspend_wakeups +EXPORT_SYMBOL_GPL vmlinux 0xe52b0542 arizona_clk32k_disable +EXPORT_SYMBOL_GPL vmlinux 0xe52d9179 device_wakeup_enable +EXPORT_SYMBOL_GPL vmlinux 0xe578a7bf hvc_remove +EXPORT_SYMBOL_GPL vmlinux 0xe5811190 watchdog_init_timeout +EXPORT_SYMBOL_GPL vmlinux 0xe5883bd9 class_compat_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe58f7fe3 i2c_bus_type +EXPORT_SYMBOL_GPL vmlinux 0xe58fb452 aer_irq +EXPORT_SYMBOL_GPL vmlinux 0xe59e1efb unregister_asymmetric_key_parser +EXPORT_SYMBOL_GPL vmlinux 0xe5a3bc60 crypto_shash_update +EXPORT_SYMBOL_GPL vmlinux 0xe5b8082b cper_estatus_check_header +EXPORT_SYMBOL_GPL vmlinux 0xe5d2515d platform_device_del +EXPORT_SYMBOL_GPL vmlinux 0xe5d6aafe dax_do_io +EXPORT_SYMBOL_GPL vmlinux 0xe5eed11c pci_create_root_bus +EXPORT_SYMBOL_GPL vmlinux 0xe5ff5d77 phy_pm_runtime_allow +EXPORT_SYMBOL_GPL vmlinux 0xe607793e pm_generic_freeze +EXPORT_SYMBOL_GPL vmlinux 0xe60c2f7b cpufreq_freq_transition_begin +EXPORT_SYMBOL_GPL vmlinux 0xe622dd57 dev_attr_link_power_management_policy +EXPORT_SYMBOL_GPL vmlinux 0xe6328853 regulator_allow_bypass +EXPORT_SYMBOL_GPL vmlinux 0xe63314a2 fb_deferred_io_fsync +EXPORT_SYMBOL_GPL vmlinux 0xe63683eb thermal_notify_framework +EXPORT_SYMBOL_GPL vmlinux 0xe64ad8ea unregister_nmi_handler +EXPORT_SYMBOL_GPL vmlinux 0xe64df759 extcon_dev_free +EXPORT_SYMBOL_GPL vmlinux 0xe651f76e selinux_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0xe6a1cf97 thermal_of_cooling_device_register +EXPORT_SYMBOL_GPL vmlinux 0xe6b1094c xen_register_device_domain_owner +EXPORT_SYMBOL_GPL vmlinux 0xe6c68334 ddebug_remove_module +EXPORT_SYMBOL_GPL vmlinux 0xe6e1c5fe uuid_be_gen +EXPORT_SYMBOL_GPL vmlinux 0xe6ec81b8 dev_pm_set_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0xe6ef4abf dm_internal_resume_fast +EXPORT_SYMBOL_GPL vmlinux 0xe6f83837 acpi_bus_attach_private_data +EXPORT_SYMBOL_GPL vmlinux 0xe6ff7c60 __clk_round_rate +EXPORT_SYMBOL_GPL vmlinux 0xe700c392 md_stop_writes +EXPORT_SYMBOL_GPL vmlinux 0xe7084bef rhashtable_insert_rehash +EXPORT_SYMBOL_GPL vmlinux 0xe70cc8b9 pci_intx +EXPORT_SYMBOL_GPL vmlinux 0xe7125be2 adp5520_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0xe7232e0f user_return_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe743828e cpci_hp_unregister_bus +EXPORT_SYMBOL_GPL vmlinux 0xe76446d1 queue_kthread_work +EXPORT_SYMBOL_GPL vmlinux 0xe769232e sprint_symbol_no_offset +EXPORT_SYMBOL_GPL vmlinux 0xe77b5e78 console_drivers +EXPORT_SYMBOL_GPL vmlinux 0xe7b46bc3 device_dma_is_coherent +EXPORT_SYMBOL_GPL vmlinux 0xe7c1b7c0 regulator_list_hardware_vsel +EXPORT_SYMBOL_GPL vmlinux 0xe7c608b0 aead_geniv_free +EXPORT_SYMBOL_GPL vmlinux 0xe7c917f5 virtqueue_add_sgs +EXPORT_SYMBOL_GPL vmlinux 0xe7cb82ea divider_round_rate +EXPORT_SYMBOL_GPL vmlinux 0xe7cfdb90 sysfs_update_group +EXPORT_SYMBOL_GPL vmlinux 0xe7e5c30a pci_cleanup_aer_uncorrect_error_status +EXPORT_SYMBOL_GPL vmlinux 0xe7e9cbbf iommu_domain_get_attr +EXPORT_SYMBOL_GPL vmlinux 0xe7f0aaad skb_morph +EXPORT_SYMBOL_GPL vmlinux 0xe7ffe877 pcpu_base_addr +EXPORT_SYMBOL_GPL vmlinux 0xe818b32b ata_bmdma_interrupt +EXPORT_SYMBOL_GPL vmlinux 0xe84f6e5c pciserial_remove_ports +EXPORT_SYMBOL_GPL vmlinux 0xe85f03d0 pwmchip_remove +EXPORT_SYMBOL_GPL vmlinux 0xe862c4b7 dpm_suspend_start +EXPORT_SYMBOL_GPL vmlinux 0xe872f358 __lock_page_killable +EXPORT_SYMBOL_GPL vmlinux 0xe87e4cab __udp4_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0xe8947d34 netlink_add_tap +EXPORT_SYMBOL_GPL vmlinux 0xe8c9dac0 raw_unhash_sk +EXPORT_SYMBOL_GPL vmlinux 0xe904d2b4 crypto_larval_lookup +EXPORT_SYMBOL_GPL vmlinux 0xe913a87a pci_test_config_bits +EXPORT_SYMBOL_GPL vmlinux 0xe91d5102 max8997_read_reg +EXPORT_SYMBOL_GPL vmlinux 0xe92ba717 fsstack_copy_inode_size +EXPORT_SYMBOL_GPL vmlinux 0xe93e49c3 devres_free +EXPORT_SYMBOL_GPL vmlinux 0xe9475d0e md_rdev_clear +EXPORT_SYMBOL_GPL vmlinux 0xe9514368 dbs_check_cpu +EXPORT_SYMBOL_GPL vmlinux 0xe95ce59d mmu_notifier_unregister_no_release +EXPORT_SYMBOL_GPL vmlinux 0xe96d51a9 put_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0xe97d3e82 devm_hwrng_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe9a654d2 gpiochip_is_requested +EXPORT_SYMBOL_GPL vmlinux 0xe9ce931a kvm_para_available +EXPORT_SYMBOL_GPL vmlinux 0xe9d1b7cf irq_to_pcap +EXPORT_SYMBOL_GPL vmlinux 0xe9ecbffa devm_reset_control_get +EXPORT_SYMBOL_GPL vmlinux 0xea124bd1 gcd +EXPORT_SYMBOL_GPL vmlinux 0xea18fdba gpiod_set_array_value +EXPORT_SYMBOL_GPL vmlinux 0xea1a95c7 aead_geniv_exit +EXPORT_SYMBOL_GPL vmlinux 0xea201835 device_release_driver +EXPORT_SYMBOL_GPL vmlinux 0xea358df8 inet6_sk_rebuild_header +EXPORT_SYMBOL_GPL vmlinux 0xea418e0f atapi_cmd_type +EXPORT_SYMBOL_GPL vmlinux 0xea50cc39 usb_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0xea6d1eed crypto_unregister_rng +EXPORT_SYMBOL_GPL vmlinux 0xea9d1b29 sata_scr_valid +EXPORT_SYMBOL_GPL vmlinux 0xea9ddc2f xenbus_frontend_closed +EXPORT_SYMBOL_GPL vmlinux 0xeab31add __ip6_local_out +EXPORT_SYMBOL_GPL vmlinux 0xeaba8b35 irq_remove_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0xeb06683f devm_usb_get_phy +EXPORT_SYMBOL_GPL vmlinux 0xeb2798f7 xen_destroy_contiguous_region +EXPORT_SYMBOL_GPL vmlinux 0xeb367042 virtqueue_add_inbuf +EXPORT_SYMBOL_GPL vmlinux 0xeb370805 __apei_exec_run +EXPORT_SYMBOL_GPL vmlinux 0xeb402694 relay_reset +EXPORT_SYMBOL_GPL vmlinux 0xeb4a872d da903x_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0xeb5a09bd nd_blk_region_to_dimm +EXPORT_SYMBOL_GPL vmlinux 0xeb5eb964 dummy_con +EXPORT_SYMBOL_GPL vmlinux 0xeb75b33e nvdimm_bus_unregister +EXPORT_SYMBOL_GPL vmlinux 0xeb833c22 xen_has_pv_disk_devices +EXPORT_SYMBOL_GPL vmlinux 0xeb9abbee ata_sff_queue_work +EXPORT_SYMBOL_GPL vmlinux 0xeb9cc43b bus_remove_file +EXPORT_SYMBOL_GPL vmlinux 0xeb9fb2e3 dev_pm_qos_update_request +EXPORT_SYMBOL_GPL vmlinux 0xebb28905 sdio_release_host +EXPORT_SYMBOL_GPL vmlinux 0xebcbcce6 led_trigger_register_simple +EXPORT_SYMBOL_GPL vmlinux 0xebec57c4 ring_buffer_oldest_event_ts +EXPORT_SYMBOL_GPL vmlinux 0xec062a08 usb_put_dev +EXPORT_SYMBOL_GPL vmlinux 0xec1b043e regulator_suspend_prepare +EXPORT_SYMBOL_GPL vmlinux 0xec25f967 klist_del +EXPORT_SYMBOL_GPL vmlinux 0xec3325e2 __clk_get_num_parents +EXPORT_SYMBOL_GPL vmlinux 0xec35738a hrtimer_active +EXPORT_SYMBOL_GPL vmlinux 0xec3d1da3 smpboot_unregister_percpu_thread +EXPORT_SYMBOL_GPL vmlinux 0xec527d04 lp8788_update_bits +EXPORT_SYMBOL_GPL vmlinux 0xec631f34 remove_memory +EXPORT_SYMBOL_GPL vmlinux 0xec7d1c80 xenbus_dev_changed +EXPORT_SYMBOL_GPL vmlinux 0xec813e66 disk_get_part +EXPORT_SYMBOL_GPL vmlinux 0xec8e0d80 md_rdev_init +EXPORT_SYMBOL_GPL vmlinux 0xecac966a inet_csk_listen_stop +EXPORT_SYMBOL_GPL vmlinux 0xecb0974d device_property_read_u8_array +EXPORT_SYMBOL_GPL vmlinux 0xecceea6c xfrm_audit_state_notfound_simple +EXPORT_SYMBOL_GPL vmlinux 0xecf6ef08 ata_host_register +EXPORT_SYMBOL_GPL vmlinux 0xed2a0295 extcon_get_edev_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0xed316f37 regulator_disable +EXPORT_SYMBOL_GPL vmlinux 0xed35e07e bsg_register_queue +EXPORT_SYMBOL_GPL vmlinux 0xed39eb4d rdev_get_dev +EXPORT_SYMBOL_GPL vmlinux 0xed5df863 gnttab_unmap_refs_sync +EXPORT_SYMBOL_GPL vmlinux 0xed6bb6e3 acpi_pci_find_root +EXPORT_SYMBOL_GPL vmlinux 0xed77a654 regmap_update_bits_check_async +EXPORT_SYMBOL_GPL vmlinux 0xed7ca313 gov_queue_work +EXPORT_SYMBOL_GPL vmlinux 0xed8b3f93 inet6_csk_addr2sockaddr +EXPORT_SYMBOL_GPL vmlinux 0xed9711a8 list_lru_count_node +EXPORT_SYMBOL_GPL vmlinux 0xeda04580 ata_ehi_push_desc +EXPORT_SYMBOL_GPL vmlinux 0xeda1fc16 sdio_get_host_pm_caps +EXPORT_SYMBOL_GPL vmlinux 0xeda8dca5 nvdimm_bus_attribute_group +EXPORT_SYMBOL_GPL vmlinux 0xedbc6f67 gnttab_end_foreign_access +EXPORT_SYMBOL_GPL vmlinux 0xedea6f15 btree_visitor +EXPORT_SYMBOL_GPL vmlinux 0xee13c87d usb_phy_generic_register +EXPORT_SYMBOL_GPL vmlinux 0xee1a69fd regcache_cache_only +EXPORT_SYMBOL_GPL vmlinux 0xee1ea6ba dma_buf_detach +EXPORT_SYMBOL_GPL vmlinux 0xee6b71c4 syscon_regmap_lookup_by_compatible +EXPORT_SYMBOL_GPL vmlinux 0xee6f99dd dev_pm_qos_add_request +EXPORT_SYMBOL_GPL vmlinux 0xee8588d2 sock_gen_put +EXPORT_SYMBOL_GPL vmlinux 0xeec7fc00 sdio_writeb_readb +EXPORT_SYMBOL_GPL vmlinux 0xeedf2546 pm_runtime_allow +EXPORT_SYMBOL_GPL vmlinux 0xeee512e1 crypto_unregister_rngs +EXPORT_SYMBOL_GPL vmlinux 0xeefe738c regulator_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0xef10aba2 devm_rtc_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xef1a6b99 ata_pci_device_suspend +EXPORT_SYMBOL_GPL vmlinux 0xef1ab7c0 look_up_OID +EXPORT_SYMBOL_GPL vmlinux 0xef1f6e23 apei_resources_request +EXPORT_SYMBOL_GPL vmlinux 0xef409b74 kmsg_dump_get_line +EXPORT_SYMBOL_GPL vmlinux 0xef464c28 getboottime64 +EXPORT_SYMBOL_GPL vmlinux 0xef6c3f70 round_jiffies_up_relative +EXPORT_SYMBOL_GPL vmlinux 0xef71d070 noop_backing_dev_info +EXPORT_SYMBOL_GPL vmlinux 0xef7907ce dax_fault +EXPORT_SYMBOL_GPL vmlinux 0xef8c7850 pcap_adc_async +EXPORT_SYMBOL_GPL vmlinux 0xefa2c27d register_tracepoint_module_notifier +EXPORT_SYMBOL_GPL vmlinux 0xefef07ea rt_mutex_destroy +EXPORT_SYMBOL_GPL vmlinux 0xeff5f575 devm_pwm_get +EXPORT_SYMBOL_GPL vmlinux 0xf03c072f __ftrace_vbprintk +EXPORT_SYMBOL_GPL vmlinux 0xf042e665 ftrace_set_filter +EXPORT_SYMBOL_GPL vmlinux 0xf0437f58 debugfs_create_x64 +EXPORT_SYMBOL_GPL vmlinux 0xf054ac97 intel_msic_irq_read +EXPORT_SYMBOL_GPL vmlinux 0xf0696401 acpi_pci_detect_ejectable +EXPORT_SYMBOL_GPL vmlinux 0xf0727f12 ktime_get_raw_fast_ns +EXPORT_SYMBOL_GPL vmlinux 0xf087bfdc xfrm_audit_state_replay +EXPORT_SYMBOL_GPL vmlinux 0xf0b9087a tty_buffer_lock_exclusive +EXPORT_SYMBOL_GPL vmlinux 0xf0bf8c73 __efivar_entry_iter +EXPORT_SYMBOL_GPL vmlinux 0xf0d7a00d user_read +EXPORT_SYMBOL_GPL vmlinux 0xf0e8e058 device_property_read_string +EXPORT_SYMBOL_GPL vmlinux 0xf0ef6e5c disk_part_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0xf0f5dbc2 timerqueue_iterate_next +EXPORT_SYMBOL_GPL vmlinux 0xf11d6907 virtqueue_notify +EXPORT_SYMBOL_GPL vmlinux 0xf1221655 nf_unregister_afinfo +EXPORT_SYMBOL_GPL vmlinux 0xf12b8e84 cpufreq_freq_attr_scaling_available_freqs +EXPORT_SYMBOL_GPL vmlinux 0xf1566ca8 pm_generic_thaw_noirq +EXPORT_SYMBOL_GPL vmlinux 0xf1796f07 devm_kfree +EXPORT_SYMBOL_GPL vmlinux 0xf17ac28d sdio_writesb +EXPORT_SYMBOL_GPL vmlinux 0xf184d189 kernel_power_off +EXPORT_SYMBOL_GPL vmlinux 0xf197b8b8 xenbus_dev_is_online +EXPORT_SYMBOL_GPL vmlinux 0xf1b31314 delayacct_on +EXPORT_SYMBOL_GPL vmlinux 0xf1b551d9 ibft_addr +EXPORT_SYMBOL_GPL vmlinux 0xf1c4fca1 tpm2_shutdown +EXPORT_SYMBOL_GPL vmlinux 0xf1c9c5d9 rio_release_inb_dbell +EXPORT_SYMBOL_GPL vmlinux 0xf1cd9a85 ata_eh_analyze_ncq_error +EXPORT_SYMBOL_GPL vmlinux 0xf1fc1548 pci_disable_sriov +EXPORT_SYMBOL_GPL vmlinux 0xf2003cd8 phy_init +EXPORT_SYMBOL_GPL vmlinux 0xf21e1f9b disable_percpu_irq +EXPORT_SYMBOL_GPL vmlinux 0xf27977e2 async_synchronize_cookie_domain +EXPORT_SYMBOL_GPL vmlinux 0xf2918c5d clk_register_fractional_divider +EXPORT_SYMBOL_GPL vmlinux 0xf29ce9d3 task_user_regset_view +EXPORT_SYMBOL_GPL vmlinux 0xf2a07edf usb_get_urb +EXPORT_SYMBOL_GPL vmlinux 0xf2d660de mm_kobj +EXPORT_SYMBOL_GPL vmlinux 0xf2e031e8 posix_acl_access_xattr_handler +EXPORT_SYMBOL_GPL vmlinux 0xf2eb8f69 efivar_validate +EXPORT_SYMBOL_GPL vmlinux 0xf2f077cc pkey_id_type_name +EXPORT_SYMBOL_GPL vmlinux 0xf2f4b435 ata_scsi_slave_destroy +EXPORT_SYMBOL_GPL vmlinux 0xf2fbb4b6 ata_port_schedule_eh +EXPORT_SYMBOL_GPL vmlinux 0xf2fca922 uart_parse_options +EXPORT_SYMBOL_GPL vmlinux 0xf2fcb270 sched_setattr +EXPORT_SYMBOL_GPL vmlinux 0xf30e105d ezx_pcap_write +EXPORT_SYMBOL_GPL vmlinux 0xf30f8fab extcon_set_state +EXPORT_SYMBOL_GPL vmlinux 0xf30fda27 lzo1x_decompress_safe +EXPORT_SYMBOL_GPL vmlinux 0xf31b3fd1 workqueue_set_max_active +EXPORT_SYMBOL_GPL vmlinux 0xf32b7c00 dev_pm_qos_remove_request +EXPORT_SYMBOL_GPL vmlinux 0xf32bdc5d unregister_xenstore_notifier +EXPORT_SYMBOL_GPL vmlinux 0xf331236f btree_geo32 +EXPORT_SYMBOL_GPL vmlinux 0xf34092b5 usb_hub_find_child +EXPORT_SYMBOL_GPL vmlinux 0xf36a0c16 extcon_update_state +EXPORT_SYMBOL_GPL vmlinux 0xf37e6e07 usb_unpoison_urb +EXPORT_SYMBOL_GPL vmlinux 0xf3808cb1 get_state_synchronize_rcu +EXPORT_SYMBOL_GPL vmlinux 0xf385e716 bpf_prog_destroy +EXPORT_SYMBOL_GPL vmlinux 0xf38c6446 rio_unlock_device +EXPORT_SYMBOL_GPL vmlinux 0xf3b451ca kdb_poll_funcs +EXPORT_SYMBOL_GPL vmlinux 0xf3bcc9ea dm_internal_suspend_fast +EXPORT_SYMBOL_GPL vmlinux 0xf3dd3ec1 atomic_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0xf3ebf4eb arch_apei_report_mem_error +EXPORT_SYMBOL_GPL vmlinux 0xf3f0675c devm_mdiobus_free +EXPORT_SYMBOL_GPL vmlinux 0xf3f18238 ktime_get_resolution_ns +EXPORT_SYMBOL_GPL vmlinux 0xf3fe3dc5 ata_sas_sync_probe +EXPORT_SYMBOL_GPL vmlinux 0xf46bb7f8 devm_phy_put +EXPORT_SYMBOL_GPL vmlinux 0xf494f618 mmc_regulator_get_ocrmask +EXPORT_SYMBOL_GPL vmlinux 0xf499fdb2 rcu_barrier_bh +EXPORT_SYMBOL_GPL vmlinux 0xf4e0cef0 inet_twsk_alloc +EXPORT_SYMBOL_GPL vmlinux 0xf4eb8f6b pci_assign_unassigned_bridge_resources +EXPORT_SYMBOL_GPL vmlinux 0xf4fc2d6c __ring_buffer_alloc +EXPORT_SYMBOL_GPL vmlinux 0xf4fd617f cpuidle_unregister +EXPORT_SYMBOL_GPL vmlinux 0xf507c3af power_supply_property_is_writeable +EXPORT_SYMBOL_GPL vmlinux 0xf5185e9d kick_process +EXPORT_SYMBOL_GPL vmlinux 0xf543e13d fuse_conn_put +EXPORT_SYMBOL_GPL vmlinux 0xf54bd49b lcm +EXPORT_SYMBOL_GPL vmlinux 0xf553318d cpuidle_pause_and_lock +EXPORT_SYMBOL_GPL vmlinux 0xf557b9f3 ping_proc_unregister +EXPORT_SYMBOL_GPL vmlinux 0xf5630940 device_bind_driver +EXPORT_SYMBOL_GPL vmlinux 0xf5785b42 evtchn_get +EXPORT_SYMBOL_GPL vmlinux 0xf57c1739 usb_register_dev +EXPORT_SYMBOL_GPL vmlinux 0xf5945bac gnttab_free_grant_references +EXPORT_SYMBOL_GPL vmlinux 0xf5a691cd invalidate_bh_lrus +EXPORT_SYMBOL_GPL vmlinux 0xf5c0c43c ip6_redirect +EXPORT_SYMBOL_GPL vmlinux 0xf5fdef5d crypto_register_aead +EXPORT_SYMBOL_GPL vmlinux 0xf604b8ea cpuidle_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0xf612555b devm_regulator_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0xf615386f percpu_ida_destroy +EXPORT_SYMBOL_GPL vmlinux 0xf61554f4 efivars_unregister +EXPORT_SYMBOL_GPL vmlinux 0xf63dd091 usb_match_one_id +EXPORT_SYMBOL_GPL vmlinux 0xf64047b8 nvdimm_name +EXPORT_SYMBOL_GPL vmlinux 0xf65a876e bsg_request_fn +EXPORT_SYMBOL_GPL vmlinux 0xf66807cc devm_led_classdev_unregister +EXPORT_SYMBOL_GPL vmlinux 0xf6a39fcb usb_autopm_put_interface +EXPORT_SYMBOL_GPL vmlinux 0xf6c71a25 cper_severity_str +EXPORT_SYMBOL_GPL vmlinux 0xf6c8dc62 cpu_hotplug_enable +EXPORT_SYMBOL_GPL vmlinux 0xf6d2b2a6 pm_runtime_set_autosuspend_delay +EXPORT_SYMBOL_GPL vmlinux 0xf6d3754a __root_device_register +EXPORT_SYMBOL_GPL vmlinux 0xf6e874f5 ata_timing_merge +EXPORT_SYMBOL_GPL vmlinux 0xf6e8c486 class_remove_file_ns +EXPORT_SYMBOL_GPL vmlinux 0xf7016530 xenbus_gather +EXPORT_SYMBOL_GPL vmlinux 0xf72f3bea __online_page_increment_counters +EXPORT_SYMBOL_GPL vmlinux 0xf7322bc8 pv_time_ops +EXPORT_SYMBOL_GPL vmlinux 0xf734d1aa pci_generic_config_write +EXPORT_SYMBOL_GPL vmlinux 0xf7445147 ata_pci_bmdma_init +EXPORT_SYMBOL_GPL vmlinux 0xf753555f __rtnl_link_register +EXPORT_SYMBOL_GPL vmlinux 0xf76e3f47 rio_mport_send_doorbell +EXPORT_SYMBOL_GPL vmlinux 0xf771febc scsi_internal_device_unblock +EXPORT_SYMBOL_GPL vmlinux 0xf78d51d3 pci_cfg_access_trylock +EXPORT_SYMBOL_GPL vmlinux 0xf79cb4a1 regulator_list_voltage_linear +EXPORT_SYMBOL_GPL vmlinux 0xf7c3f273 xen_resume_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0xf7ccce59 ata_sff_qc_fill_rtf +EXPORT_SYMBOL_GPL vmlinux 0xf7da29b2 do_take_over_console +EXPORT_SYMBOL_GPL vmlinux 0xf7daadc3 register_kprobes +EXPORT_SYMBOL_GPL vmlinux 0xf7ed4e07 dev_attr_sw_activity +EXPORT_SYMBOL_GPL vmlinux 0xf7ef0009 skb_copy_ubufs +EXPORT_SYMBOL_GPL vmlinux 0xf7f33c0a usb_gen_phy_shutdown +EXPORT_SYMBOL_GPL vmlinux 0xf815c271 component_master_add +EXPORT_SYMBOL_GPL vmlinux 0xf825b41d usb_sg_cancel +EXPORT_SYMBOL_GPL vmlinux 0xf82e85e6 ata_cable_sata +EXPORT_SYMBOL_GPL vmlinux 0xf82f16b3 execute_in_process_context +EXPORT_SYMBOL_GPL vmlinux 0xf82f3657 work_on_cpu +EXPORT_SYMBOL_GPL vmlinux 0xf8564622 dev_pm_qos_flags +EXPORT_SYMBOL_GPL vmlinux 0xf8802492 print_stack_trace +EXPORT_SYMBOL_GPL vmlinux 0xf8921e3c device_property_read_u32_array +EXPORT_SYMBOL_GPL vmlinux 0xf8c79747 pci_slots_kset +EXPORT_SYMBOL_GPL vmlinux 0xf8d71150 fat_search_long +EXPORT_SYMBOL_GPL vmlinux 0xf8e53112 device_show_bool +EXPORT_SYMBOL_GPL vmlinux 0xf8e6b564 hibernation_set_ops +EXPORT_SYMBOL_GPL vmlinux 0xf8e91525 spi_new_device +EXPORT_SYMBOL_GPL vmlinux 0xf8f3a0fb ata_ratelimit +EXPORT_SYMBOL_GPL vmlinux 0xf8fa45cd devres_for_each_res +EXPORT_SYMBOL_GPL vmlinux 0xf8fe3d0b kmsg_dump_register +EXPORT_SYMBOL_GPL vmlinux 0xf9088aa8 restore_online_page_callback +EXPORT_SYMBOL_GPL vmlinux 0xf9112b11 pci_store_saved_state +EXPORT_SYMBOL_GPL vmlinux 0xf91bdbfd pci_probe_reset_slot +EXPORT_SYMBOL_GPL vmlinux 0xf92c3e64 single_open_net +EXPORT_SYMBOL_GPL vmlinux 0xf92ce956 kdb_printf +EXPORT_SYMBOL_GPL vmlinux 0xf932015f __raw_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xf95322f4 kthread_parkme +EXPORT_SYMBOL_GPL vmlinux 0xf9547a17 divider_recalc_rate +EXPORT_SYMBOL_GPL vmlinux 0xf9765833 dmi_match +EXPORT_SYMBOL_GPL vmlinux 0xf9783f31 tty_ldisc_deref +EXPORT_SYMBOL_GPL vmlinux 0xf991c09f rcu_qs_ctr +EXPORT_SYMBOL_GPL vmlinux 0xf9a054b5 __round_jiffies +EXPORT_SYMBOL_GPL vmlinux 0xf9c2da57 clkdev_create +EXPORT_SYMBOL_GPL vmlinux 0xf9ca3160 ata_id_xfermask +EXPORT_SYMBOL_GPL vmlinux 0xf9d9264e xen_have_vector_callback +EXPORT_SYMBOL_GPL vmlinux 0xf9da1636 usb_deregister +EXPORT_SYMBOL_GPL vmlinux 0xfa03596a crypto_alg_lookup +EXPORT_SYMBOL_GPL vmlinux 0xfa0a2b9d vfs_getxattr +EXPORT_SYMBOL_GPL vmlinux 0xfa1472e9 fwnode_property_read_u8_array +EXPORT_SYMBOL_GPL vmlinux 0xfa1eb910 unregister_syscore_ops +EXPORT_SYMBOL_GPL vmlinux 0xfa1f4662 scatterwalk_start +EXPORT_SYMBOL_GPL vmlinux 0xfa35044a alternatives_patched +EXPORT_SYMBOL_GPL vmlinux 0xfa3aed51 xen_remap_domain_mfn_array +EXPORT_SYMBOL_GPL vmlinux 0xfa4717fa pm_runtime_set_memalloc_noio +EXPORT_SYMBOL_GPL vmlinux 0xfa576b06 sysfs_remove_mount_point +EXPORT_SYMBOL_GPL vmlinux 0xfa832bd1 devres_remove_group +EXPORT_SYMBOL_GPL vmlinux 0xfa83fd4b ata_sff_freeze +EXPORT_SYMBOL_GPL vmlinux 0xfa870b84 debugfs_create_x8 +EXPORT_SYMBOL_GPL vmlinux 0xfa9e33f7 klist_init +EXPORT_SYMBOL_GPL vmlinux 0xfaa78efa pci_reset_pri +EXPORT_SYMBOL_GPL vmlinux 0xfabe2df4 regulator_bulk_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0xfacce829 find_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0xfadf63ba fb_deferred_io_cleanup +EXPORT_SYMBOL_GPL vmlinux 0xfae0a0cd regulator_bulk_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0xfafa20d0 __blkg_prfill_rwstat +EXPORT_SYMBOL_GPL vmlinux 0xfb1c5079 driver_find +EXPORT_SYMBOL_GPL vmlinux 0xfb25ce06 btree_get_prev +EXPORT_SYMBOL_GPL vmlinux 0xfb260ce1 regulator_bulk_free +EXPORT_SYMBOL_GPL vmlinux 0xfb31f2fe i2c_new_device +EXPORT_SYMBOL_GPL vmlinux 0xfb32b30f ring_buffer_read_prepare_sync +EXPORT_SYMBOL_GPL vmlinux 0xfb4ab1e9 nd_region_provider_data +EXPORT_SYMBOL_GPL vmlinux 0xfb51056a disk_map_sector_rcu +EXPORT_SYMBOL_GPL vmlinux 0xfb64b230 acpi_processor_ffh_cstate_probe +EXPORT_SYMBOL_GPL vmlinux 0xfb6ed35d usb_autopm_put_interface_no_suspend +EXPORT_SYMBOL_GPL vmlinux 0xfb6eedf9 power_group_name +EXPORT_SYMBOL_GPL vmlinux 0xfb7c33f0 perf_pmu_register +EXPORT_SYMBOL_GPL vmlinux 0xfb83db03 cpufreq_show_cpus +EXPORT_SYMBOL_GPL vmlinux 0xfbb55aaa input_ff_destroy +EXPORT_SYMBOL_GPL vmlinux 0xfbbd41ca no_action +EXPORT_SYMBOL_GPL vmlinux 0xfbcfdcfa bpf_prog_free +EXPORT_SYMBOL_GPL vmlinux 0xfbed5fef dma_get_slave_caps +EXPORT_SYMBOL_GPL vmlinux 0xfc03d97a page_is_ram +EXPORT_SYMBOL_GPL vmlinux 0xfc1e73f5 pci_sriov_get_totalvfs +EXPORT_SYMBOL_GPL vmlinux 0xfc1eb88a fuse_get_req_for_background +EXPORT_SYMBOL_GPL vmlinux 0xfc214820 device_pm_wait_for_dev +EXPORT_SYMBOL_GPL vmlinux 0xfc21af27 rtnl_link_register +EXPORT_SYMBOL_GPL vmlinux 0xfc254d15 gnttab_free_auto_xlat_frames +EXPORT_SYMBOL_GPL vmlinux 0xfc3b4246 acpi_bus_update_power +EXPORT_SYMBOL_GPL vmlinux 0xfc79c302 tps6586x_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0xfc8e165e ata_sas_port_init +EXPORT_SYMBOL_GPL vmlinux 0xfc968c8b apei_exec_write_register_value +EXPORT_SYMBOL_GPL vmlinux 0xfcb3d07f shash_register_instance +EXPORT_SYMBOL_GPL vmlinux 0xfcb8d480 usb_reset_endpoint +EXPORT_SYMBOL_GPL vmlinux 0xfcc885ec debugfs_remove +EXPORT_SYMBOL_GPL vmlinux 0xfcd243b4 usb_disable_lpm +EXPORT_SYMBOL_GPL vmlinux 0xfcd5df90 input_ff_event +EXPORT_SYMBOL_GPL vmlinux 0xfcd7bc0b ring_buffer_empty +EXPORT_SYMBOL_GPL vmlinux 0xfd16669f vfs_kern_mount +EXPORT_SYMBOL_GPL vmlinux 0xfd2293d3 iommu_group_remove_device +EXPORT_SYMBOL_GPL vmlinux 0xfd3a9bb7 trace_event_reg +EXPORT_SYMBOL_GPL vmlinux 0xfd4d224d irq_domain_add_simple +EXPORT_SYMBOL_GPL vmlinux 0xfd4ef2c6 device_register +EXPORT_SYMBOL_GPL vmlinux 0xfd51b281 gnttab_end_foreign_access_ref +EXPORT_SYMBOL_GPL vmlinux 0xfd68a0ad regulator_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0xfd69c35f tcp_done +EXPORT_SYMBOL_GPL vmlinux 0xfd69e65a spi_alloc_master +EXPORT_SYMBOL_GPL vmlinux 0xfd7243c7 erst_disable +EXPORT_SYMBOL_GPL vmlinux 0xfd7a50ea set_timer_slack +EXPORT_SYMBOL_GPL vmlinux 0xfd810b47 ehci_init_driver +EXPORT_SYMBOL_GPL vmlinux 0xfdac7e18 sata_pmp_error_handler +EXPORT_SYMBOL_GPL vmlinux 0xfdf53b82 trace_call_bpf +EXPORT_SYMBOL_GPL vmlinux 0xfdfcebf6 ata_acpi_cbl_80wire +EXPORT_SYMBOL_GPL vmlinux 0xfdfd4831 ata_host_alloc_pinfo +EXPORT_SYMBOL_GPL vmlinux 0xfdffbf85 regulator_unregister +EXPORT_SYMBOL_GPL vmlinux 0xfe505889 fpu__activate_curr +EXPORT_SYMBOL_GPL vmlinux 0xfe5aea65 spi_busnum_to_master +EXPORT_SYMBOL_GPL vmlinux 0xfe672d5f usb_hub_clear_tt_buffer +EXPORT_SYMBOL_GPL vmlinux 0xfe6a2b61 ping_err +EXPORT_SYMBOL_GPL vmlinux 0xfe727411 get_phys_to_machine +EXPORT_SYMBOL_GPL vmlinux 0xfe76c46a sdio_readl +EXPORT_SYMBOL_GPL vmlinux 0xfe990052 gpio_free +EXPORT_SYMBOL_GPL vmlinux 0xfe9e2af5 iommu_attach_device +EXPORT_SYMBOL_GPL vmlinux 0xfeb7d2d2 alloc_page_buffers +EXPORT_SYMBOL_GPL vmlinux 0xfebe72f2 devres_alloc +EXPORT_SYMBOL_GPL vmlinux 0xfed11ed1 usb_mon_deregister +EXPORT_SYMBOL_GPL vmlinux 0xfed5c600 debugfs_create_file +EXPORT_SYMBOL_GPL vmlinux 0xfef8a166 trace_current_buffer_lock_reserve +EXPORT_SYMBOL_GPL vmlinux 0xff05fa13 vring_interrupt +EXPORT_SYMBOL_GPL vmlinux 0xff07a8a4 device_store_ulong +EXPORT_SYMBOL_GPL vmlinux 0xff0a7ed9 ip6_local_out +EXPORT_SYMBOL_GPL vmlinux 0xff291ecf clk_unregister_divider +EXPORT_SYMBOL_GPL vmlinux 0xff2ce747 machine_check_poll +EXPORT_SYMBOL_GPL vmlinux 0xff48b255 tty_mode_ioctl +EXPORT_SYMBOL_GPL vmlinux 0xff5a8cfe cn_del_callback +EXPORT_SYMBOL_GPL vmlinux 0xff633558 vprintk_default +EXPORT_SYMBOL_GPL vmlinux 0xff6c2564 pci_bus_add_device +EXPORT_SYMBOL_GPL vmlinux 0xff6ea564 devm_usb_get_phy_dev +EXPORT_SYMBOL_GPL vmlinux 0xff7901af virtqueue_poll +EXPORT_SYMBOL_GPL vmlinux 0xff8189b2 pci_set_cacheline_size +EXPORT_SYMBOL_GPL vmlinux 0xff8da0f0 inverse_translate +EXPORT_SYMBOL_GPL vmlinux 0xff9a48f3 fwnode_property_read_string_array +EXPORT_SYMBOL_GPL vmlinux 0xff9bfd81 crypto_alloc_instance +EXPORT_SYMBOL_GPL vmlinux 0xffc436bf shmem_truncate_range +EXPORT_SYMBOL_GPL vmlinux 0xffdfa1a8 kobject_init_and_add +EXPORT_SYMBOL_GPL vmlinux 0xfffde111 xen_pci_frontend +EXPORT_SYMBOL_GPL vmlinux 0xffff25d4 sysfs_remove_files --- linux-raspi2-4.2.0.orig/debian.master/abi/4.2.0-26.31/i386/generic.compiler +++ linux-raspi2-4.2.0/debian.master/abi/4.2.0-26.31/i386/generic.compiler @@ -0,0 +1 @@ +GCC: (Ubuntu 5.2.1-22ubuntu2) 5.2.1 20151010 --- linux-raspi2-4.2.0.orig/debian.master/abi/4.2.0-26.31/i386/generic.modules +++ linux-raspi2-4.2.0/debian.master/abi/4.2.0-26.31/i386/generic.modules @@ -0,0 +1,4633 @@ +3c509 +3c515 +3c574_cs +3c589_cs +3c59x +3w-9xxx +3w-sas +3w-xxxx +53c700 +6lowpan +6pack +8021q +8139cp +8139too +8250_accent +8250_boca +8250_dw +8250_exar_st16c554 +8250_fintek +8250_fourport +8250_hub6 +8255 +8255_pci +8390 +8390p +842 +842_compress +842_decompress +88pm800 +88pm805 +88pm80x +88pm80x_onkey +88pm8607 +88pm860x_battery +88pm860x_bl +88pm860x_charger +88pm860x_onkey +88pm860x-ts +9p +9pnet +9pnet_rdma +9pnet_virtio +a100u2w +a3d +a8293 +aacraid +aat2870_bl +aat2870-regulator +ab3100 +ab3100-otp +abituguru +abituguru3 +ablk_helper +ac97_bus +acard-ahci +acecad +acenic +acerhdf +acer-wmi +acpi-als +acpi_extlog +acpi_ipmi +acpi_pad +acpiphp_ibm +acpi_power_meter +acpi_thermal_rel +acquirewdt +act2000 +act200l-sir +act8865-regulator +act_bpf +act_connmark +act_csum +act_gact +act_ipt +actisys-sir +act_mirred +act_nat +act_pedit +act_police +act_simple +act_skbedit +act_vlan +ad2s1200 +ad2s1210 +ad2s90 +ad5064 +ad525x_dpot +ad525x_dpot-i2c +ad525x_dpot-spi +ad5360 +ad5380 +ad5398 +ad5421 +ad5446 +ad5449 +ad5504 +ad5624r_spi +ad5686 +ad5755 +ad5764 +ad5791 +ad5933 +ad714x +ad714x-i2c +ad714x-spi +ad7150 +ad7152 +ad7192 +ad7266 +ad7280a +ad7291 +ad7298 +ad7303 +ad7314 +ad7414 +ad7418 +ad7476 +ad7606 +ad7746 +ad7780 +ad7791 +ad7793 +ad7816 +ad7877 +ad7879 +ad7879-i2c +ad7879-spi +ad7887 +ad7923 +ad799x +ad8366 +ad9523 +ad9832 +ad9834 +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 +ade7753 +ade7754 +ade7758 +ade7759 +ade7854 +ade7854-i2c +ade7854-spi +adf4350 +adfs +adi +adis16060 +adis16080 +adis16130 +adis16136 +adis16201 +adis16203 +adis16204 +adis16209 +adis16220 +adis16240 +adis16260 +adis16400 +adis16480 +adis_lib +adjd_s311 +adl_pci6208 +adl_pci7x3x +adl_pci8164 +adl_pci9111 +adl_pci9118 +adm1021 +adm1025 +adm1026 +adm1029 +adm1031 +adm1275 +adm8211 +adm9240 +adp5520_bl +adp5520-keys +adp5588-keys +adp5589-keys +adp8860_bl +adp8870_bl +adq12b +ads1015 +ads7828 +ads7846 +ads7871 +ad_sigma_delta +adt7310 +adt7316 +adt7316-i2c +adt7316-spi +adt7410 +adt7411 +adt7462 +adt7470 +adt7475 +adt7x10 +adummy +adutux +adv7170 +adv7175 +adv7180 +adv7511 +adv7604 +adv7842 +advansys +advantechwdt +adv_pci1710 +adv_pci1723 +adv_pci1724 +adv_pci_dio +adxl34x +adxl34x-i2c +adxl34x-spi +adxrs450 +aes-i586 +aesni-intel +af9013 +af9033 +af_alg +affs +af_key +af_packet_diag +af-rxrpc +ah4 +ah6 +aha152x +aha152x_cs +aha1542 +aha1740 +ahci +ahci_platform +aic79xx +aic7xxx +aic94xx +aio_aio12_8 +aio_iiro_16 +aiptek +aircable +airo +airo_cs +airspy +ak8975 +al3320a +algif_aead +algif_hash +algif_rng +algif_skcipher +ali-agp +alienware-wmi +ali-ircc +alim1535_wdt +alim7101_wdt +altera-ci +altera_jtaguart +altera_ps2 +altera-stapl +altera_tse +altera_uart +alx +am53c974 +ambassador +amc6821 +amd +amd5536udc +amd64_edac_mod +amd76x_edac +amd76xrom +amd8111e +amd_freq_sensitivity +amdgpu +amd-rng +amilo-rfkill +amplc_dio200 +amplc_dio200_common +amplc_dio200_pci +amplc_pc236 +amplc_pc236_common +amplc_pc263 +amplc_pci224 +amplc_pci230 +amplc_pci236 +amplc_pci263 +ams369fg06 +analog +anatop-regulator +ansi_cprng +anubis +aoe +apanel +apds9300 +apds9802als +apds990x +apm +apple_bl +appledisplay +apple-gmux +applesmc +appletalk +appletouch +applicom +ar5523 +ar7part +arc4 +arcfb +arcmsr +arcnet +arc_ps2 +arc-rawmode +arc-rimi +arc_uart +arizona-haptics +arizona-i2c +arizona-ldo1 +arizona-micsupp +arizona-spi +ark3116 +arkfb +arptable_filter +arp_tables +arpt_mangle +as102_fe +as3711_bl +as3711-regulator +as3935 +as5011 +asb100 +asc7621 +asix +ast +asus_atk0110 +asus-laptop +asus-nb-wmi +asus-wmi +async_memcpy +async_pq +async_raid6_recov +async_tx +async_xor +at24 +at25 +at76c50x-usb +at803x +at86rf230 +atbm8830 +aten +ath +ath10k_core +ath10k_pci +ath3k +ath5k +ath6kl_core +ath6kl_sdio +ath6kl_usb +ath9k +ath9k_common +ath9k_htc +ath9k_hw +ati-agp +ati_remote +ati_remote2 +atl1 +atl1c +atl1e +atl2 +atlas_btns +atm +atmel +atmel_cs +atmel_mxt_ts +atmel_pci +atmtcp +atp +atp870u +atusb +atxp1 +aty128fb +atyfb +au0828 +au8522_common +au8522_decoder +au8522_dig +aufs +auo_k1900fb +auo_k1901fb +auo_k190x +auo-pixcir-ts +authenc +authencesn +auth_rpcgss +autofs4 +avma1_cs +avm_cs +avmfritz +ax25 +ax88179_178a +axnet_cs +axp20x-pek +axp20x-regulator +axp288_adc +axp288_charger +axp288_fuel_gauge +b1 +b1dma +b1isa +b1pci +b1pcmcia +b2c2-flexcop +b2c2-flexcop-pci +b2c2-flexcop-usb +b43 +b43legacy +b44 +bas_gigaset +batman-adv +baycom_epp +baycom_par +baycom_ser_fdx +baycom_ser_hdx +bcache +bch +bcm203x +bcm3510 +bcm590xx +bcm590xx-regulator +bcm5974 +bcm7xxx +bcm87xx +bcma +bcma-hcd +bd6107 +bdc +bdc_pci +be2iscsi +be2net +befs +belkin_sa +bfa +bfs +bfusb +bh1750 +bh1770glc +bh1780gli +binfmt_aout +binfmt_misc +block2mtd +blocklayoutdriver +blowfish_common +blowfish_generic +bluecard_cs +bluetooth +bluetooth_6lowpan +bma150 +bma180 +bmc150-accel +bmc150_magn +bmg160 +bmp085-i2c +bmp085-spi +bmp280 +bna +bnep +bnx2 +bnx2fc +bnx2i +bnx2x +bonding +bpa10x +bpck +bpck6 +bpqether +bq2415x_charger +bq24190_charger +bq24257_charger +bq24735-charger +bq25890_charger +bq27x00_battery +br2684 +brcmfmac +brcmsmac +brcmutil +bridge +br_netfilter +broadcom +broadsheetfb +bsd_comp +bt3c_cs +bt819 +bt856 +bt866 +bt878 +btbcm +btcoexist +btintel +btmrvl +btmrvl_sdio +btrfs +btrtl +btsdio +bttv +btuart_cs +btusb +btwilink +bu21013_ts +budget +budget-av +budget-ci +budget-core +budget-patch +BusLogic +c101 +c2port-duramar2150 +c4 +c67x00 +c6xdigio +cachefiles +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-raw +capi +capidrv +capmode +carl9170 +carminefb +cassini +cast5_generic +cast6_generic +cast_common +catc +cb710 +cb710-mmc +cb_das16_cs +cb_pcidas +cb_pcidas64 +cb_pcidda +cb_pcimdas +cb_pcimdda +cc10001_adc +cc2520 +cc770 +cc770_isa +cc770_platform +c_can +c_can_pci +c_can_platform +cciss +ccm +ccp +ccp-crypto +cdc-acm +cdc_eem +cdc_ether +cdc_mbim +cdc_ncm +cdc-phonet +cdc_subset +cdc-wdm +ceph +cfag12864b +cfag12864bfb +cfg80211 +cfi_cmdset_0001 +cfi_cmdset_0002 +cfi_cmdset_0020 +cfi_probe +cfi_util +cfspi_slave +ch +ch341 +ch7006 +chacha20_generic +chacha20poly1305 +chaoskey +chipreg +chnl_net +chromeos_laptop +chromeos_pstore +cicada +cifs +ci_hdrc +ci_hdrc_msm +ci_hdrc_pci +ci_hdrc_usb2 +ci_hdrc_zevio +cirrus +cirrusfb +ck804xrom +classmate-laptop +clip +clk-cdce706 +clk-palmas +clk-pwm +clk-s2mps11 +clk-si5351 +clk-twl6040 +clk-wm831x +cls_basic +cls_bpf +cls_cgroup +cls_flow +cls_flower +cls_fw +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_cs +com20020-isa +com20020-pci +com90io +com90xx +comedi +comedi_8254 +comedi_8255 +comedi_bond +comedi_isadma +comedi_parport +comedi_pci +comedi_pcmcia +comedi_test +comedi_usb +comm +compal-laptop +configfs +contec_pci_dio +cops +cordic +core +coretemp +cosa +cp210x +cpcihp_generic +cpcihp_zt5550 +cpia2 +cpqphp +cpsw_ale +cpu5wdt +cpuid +cpu-notifier-error-inject +cramfs +cr_bllcd +crc32 +crc32-pclmul +crc7 +crc8 +crc-ccitt +crc-itu-t +cros_ec +cros_ec_devs +cros_ec_i2c +cros_ec_keyb +cros_ec_lpc +cros_ec_spi +crvml +cryptd +cryptoloop +crypto_null +crypto_user +cs5345 +cs53l32a +cs5535-mfd +cs553x_nand +cs89x0 +csiostor +ct82c710 +ctr +cts +cuse +cw1200_core +cw1200_wlan_sdio +cw1200_wlan_spi +cx18 +cx18-alsa +cx22700 +cx22702 +cx231xx +cx231xx-alsa +cx231xx-dvb +cx2341x +cx23885 +cx24110 +cx24113 +cx24116 +cx24117 +cx24120 +cx24123 +cx25821 +cx25821-alsa +cx25840 +cx82310_eth +cx8800 +cx8802 +cx88-alsa +cx88-blackbird +cx88-dvb +cx88-vp3054-i2c +cx88xx +cxacru +cxd2099 +cxd2820r +cxgb +cxgb3 +cxgb3i +cxgb4 +cxgb4i +cxgb4vf +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 +da9030_battery +da9034-ts +da903x +da903x_bl +da9052-battery +da9052_bl +da9052-hwmon +da9052_onkey +da9052-regulator +da9052_tsi +da9052_wdt +da9055-hwmon +da9055_onkey +da9055-regulator +da9055_wdt +da9063_onkey +da9063-regulator +da9063_wdt +da9150-charger +da9150-core +da9150-gpadc +da9210-regulator +da9211-regulator +dac02 +DAC960 +daqboard2000 +das08 +das08_cs +das08_isa +das08_pci +das16 +das16m1 +das1800 +das6402 +das800 +davicom +db9 +dc395x +dca +dccp +dccp_diag +dccp_ipv4 +dccp_ipv6 +dccp_probe +dcdbas +ddbridge +de2104x +de4x5 +decnet +deflate +defxx +dell-laptop +dell-led +dell-rbtn +dell_rbu +dell-smm-hwmon +dell-smo8800 +dell-wmi +dell-wmi-aio +denali +denali_dt +denali_pci +des_generic +designware_i2s +dgap +dgnc +dht11 +dib0070 +dib0090 +dib3000mb +dib3000mc +dib7000m +dib7000p +dib8000 +dibx000_common +digi_acceleport +diskonchip +divacapi +divadidd +diva_idi +diva_mnt +divas +dl2k +dlci +dlm +dln2 +dm1105 +dm9601 +dm-bio-prison +dm-bufio +dm-cache +dm-cache-cleaner +dm-cache-mq +dm-cache-smq +dm-crypt +dm-delay +dme1737 +dm-era +dmfe +dm-flakey +dmi-sysfs +dm-log +dm-log-userspace +dm-log-writes +dmm32at +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-verity +dmx3191d +dm-zero +dnet +dn_rtmsg +docg3 +docg4 +donauboe +dp83867 +dpt_i2o +drbd +drbg +drm +drm_kms_helper +drv260x +drv2665 +drv2667 +drx39xyj +drxd +drxk +ds1621 +ds1682 +ds1wm +ds2482 +ds2490 +ds2760_battery +ds2780_battery +ds2781_battery +ds2782_battery +ds3000 +ds620 +dsbr100 +dscc4 +dss1_divert +dst +dst_ca +dstr +dt2801 +dt2811 +dt2814 +dt2815 +dt2817 +dt282x +dt3000 +dt3155 +dt9812 +dtc +dtl1_cs +dtlk +dummy +dummy-irq +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-digitv +dvb-usb-dtt200u +dvb-usb-dtv5100 +dvb-usb-dvbsky +dvb-usb-dw2102 +dvb-usb-ec168 +dvb-usb-friio +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_v2 +dvb-usb-vp702x +dvb-usb-vp7045 +dwc3 +dwc3-pci +dw_dmac +dw_dmac_core +dw_dmac_pci +dwmac-generic +dw_wdt +dyna_pci10xx +dynapro +e100 +e1000 +e1000e +e3x0-button +e4000 +e752x_edac +e7xxx_edac +earth-pt1 +earth-pt3 +eata +ebt_802_3 +ebtable_broute +ebtable_filter +ebtable_nat +ebtables +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 +ec100 +ec_bhf +echainiv +echo +ec_sys +edac_core +edac_mce_amd +edt-ft5x06 +eeepc-laptop +eeepc-wmi +eeprom +eeprom_93cx6 +eeprom_93xx46 +eeti_ts +efficeon-agp +efi-pstore +efs +ehset +einj +elan_i2c +elants_i2c +elo +elsa_cs +em28xx +em28xx-alsa +em28xx-dvb +em28xx-rc +em28xx-v4l +emc1403 +emc2103 +emc6w201 +em_canid +em_cmp +emi26 +emi62 +em_ipset +em_meta +em_nbyte +empeg +ems_pci +ems_pcmcia +ems_usb +em_text +emu10k1-gp +em_u32 +enc28j60 +enclosure +ene_ir +eni +enic +epat +epia +epic100 +eql +esas2r +esb2rom +esd_usb2 +esi-sir +esp4 +esp6 +esp_scsi +et1011c +et131x +ethoc +eurotechwdt +evbug +exofs +extcon-adc-jack +extcon-arizona +extcon-axp288 +extcon-gpio +extcon-max14577 +extcon-max77693 +extcon-max77843 +extcon-max8997 +extcon-palmas +extcon-rt8973a +extcon-sm5502 +extcon-usb-gpio +ezusb +f2fs +f71805f +f71808e_wdt +f71882fg +f75375s +f81232 +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_ssd1289 +fb_ssd1306 +fb_ssd1331 +fb_ssd1351 +fb_st7735r +fb_sys_fops +fbtft +fbtft_device +fb_tinylcd +fb_tls8204 +fb_uc1701 +fb_upd161704 +fb_watterott +fc0011 +fc0012 +fc0013 +fc2580 +fcoe +fcrypt +fdomain +fdomain_cs +fealnx +ff-memless +fid +fintek-cir +firedtv +firestream +firewire-core +firewire-net +firewire-ohci +firewire-sbp2 +firewire-serial +fit2 +fit3 +fixed +fl512 +fld +flexfb +floppy +fm10k +fm801-gp +fmc +fmc-chardev +fmc-fakedev +fmc-trivial +fmc-write-eeprom +fm_drv +fmvj18x_cs +fnic +forcedeth +fore_200e +fotg210-hcd +fotg210-udc +fou +freevxfs +friq +frpw +fsa9480 +fscache +fschmd +fsl_lpuart +ft1000 +ft1000_pcmcia +ftdi-elan +ftdi_sio +ftl +fujitsu-laptop +fujitsu-tablet +fujitsu_ts +fusbh200-hcd +g450_pll +g760a +g762 +g_acm_ms +gadgetfs +gamecon +gameport +garmin_gps +garp +g_audio +g_cdc +gcm +g_dbgp +gdmtty +gdmulte +gdmwm +gdth +generic +generic-adc-battery +generic_bl +genet +geneve +geneve_core +gen_probe +geode-aes +geode-rng +g_ether +gf128mul +gf2k +g_ffs +gfs2 +ghash-generic +g_hid +gigaset +girbil-sir +gl518sm +gl520sm +gl620a +gluebi +glue_helper +gma500_gfx +g_mass_storage +g_midi +g_ncm +g_NCR5380 +g_NCR5380_mmio +g_nokia +go7007 +go7007-loader +go7007-usb +goku_udc +goodix +gp2ap002a00f +gp2ap020a00f +gpio +gpio-addr-flash +gpio-adp5520 +gpio-adp5588 +gpio-amd8111 +gpio-arizona +gpio_backlight +gpio-beeper +gpio-charger +gpio-crystalcove +gpio-cs5535 +gpio-da9052 +gpio-da9055 +gpio-dln2 +gpio-dwapb +gpio-f7188x +gpio-fan +gpio-generic +gpio-ich +gpio-ir-recv +gpio-it8761e +gpio-janz-ttl +gpio-kempld +gpio_keys +gpio_keys_polled +gpio-lp3943 +gpio-max7300 +gpio-max7301 +gpio-max730x +gpio-max732x +gpio-mc33880 +gpio-mcp23s08 +gpio-ml-ioh +gpio_mouse +gpio-pca953x +gpio-pcf857x +gpio-pch +gpio-rdc321x +gpio-regulator +gpio-sch +gpio-sch311x +gpio_tilt_polled +gpio-tps65912 +gpio-twl4030 +gpio-twl6040 +gpio-ucb1400 +gpio-viperboard +gpio-vx855 +gpio-wm831x +gpio-wm8350 +gpio-wm8994 +g_printer +grace +gre +grip +grip_mp +gr_udc +gsc_hpdi +g_serial +gs_fpga +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 +gs_usb +gtco +guillemot +gunze +g_webcam +gx1fb +gxfb +gx-suspmod +g_zero +hackrf +hamachi +hampshire +hangcheck-timer +hanwang +hci +hci_uart +hci_vhci +hdaps +hdlc +hdlc_cisco +hdlcdrv +hdlc_fr +hdlc_ppp +hdlc_raw +hdlc_raw_eth +hdlc_x25 +hdpvr +he +hecubafb +hexium_gemini +hexium_orion +hfc4s8s_l1 +hfcmulti +hfcpci +hfcsusb +hfc_usb +hfs +hfsplus +hgafb +hid +hid-a4tech +hid-apple +hid-appleir +hid-aureal +hid-axff +hid-belkin +hid-betopff +hid-cherry +hid-chicony +hid-cp2112 +hid-cypress +hid-dr +hid-elecom +hid-elo +hid-emsff +hid-ezkey +hid-gaff +hid-generic +hid-gt683r +hid-gyration +hid-holtekff +hid-holtek-kbd +hid-holtek-mouse +hid-hyperv +hid-icade +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 +hidp +hid-penmount +hid-petalynx +hid-picolcd +hid-pl +hid-plantronics +hid-primax +hid-prodikeys +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-iio-common +hid-sensor-incl-3d +hid-sensor-magn-3d +hid-sensor-press +hid-sensor-prox +hid-sensor-rotation +hid-sensor-trigger +hid-sjoy +hid-sony +hid-speedlink +hid-steelseries +hid-sunplus +hid-thingm +hid-tivo +hid-tmff +hid-topseed +hid-twinhan +hid-uclogic +hid-waltop +hid-wiimote +hid-xinmo +hid-zpff +hid-zydacron +hih6130 +hisax +hisax_fcpcipnp +hisax_isac +hisax_st5481 +hisi504_nand +hmc5843_core +hmc5843_i2c +hmc5843_spi +hmc6352 +hopper +horizon +hostap +hostap_cs +hostap_pci +hostap_plx +hostess_sv11 +hp100 +hp_accel +hpfs +hpilo +hpsa +hptiop +hpwdt +hp-wireless +hp-wmi +hsi +hsi_char +hso +hsr +hsu_dma +hsu_dma_pci +htc-pasic3 +htcpen +htu21 +huawei_cdc_ncm +hv_balloon +hv_netvsc +hv_storvsc +hv_utils +hv_vmbus +hwa-hc +hwa-rc +hwmon-vid +hx8357 +hyperv_fb +hyperv-keyboard +hysdn +i1480-dfu-usb +i1480-est +i2400m +i2400m-usb +i2c-algo-bit +i2c-algo-pca +i2c-ali1535 +i2c-ali1563 +i2c-ali15x3 +i2c-amd756 +i2c-amd756-s4882 +i2c-amd8111 +i2c-cbus-gpio +i2c-cros-ec-tunnel +i2c-designware-core +i2c-designware-pci +i2c-designware-platform +i2c-diolan-u2c +i2c-dln2 +i2c-eg20t +i2c-gpio +i2c-hid +i2c-i801 +i2c-isch +i2c-ismt +i2c-kempld +i2c-matroxfb +i2c-mux +i2c-mux-gpio +i2c-mux-pca9541 +i2c-mux-pca954x +i2c-mux-pinctrl +i2c-nforce2 +i2c-nforce2-s4985 +i2c-ocores +i2c-parport +i2c-parport-light +i2c-pca-isa +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 +i40e +i40evf +i5000_edac +i5100_edac +i5400_edac +i5500_temp +i5k_amb +i6300esb +i7300_edac +i740fb +i7core_edac +i810 +i810fb +i82092 +i82365 +i82860_edac +i82875p_edac +i82975x_edac +i915 +ib700wdt +ib_addr +ib_cm +ib_core +ib_ipoib +ib_iser +ib_isert +ib_mad +ibmaem +ibmasm +ibmasr +ibmpex +ibmphp +ibm_rtl +ib_mthca +ib_sa +ib_srp +ib_srpt +ib_ucm +ib_umad +ib_uverbs +ichxrom +icn +icplus +icp_multi +ics932s401 +ideapad-laptop +ideapad_slidebar +idma64 +idmouse +idt77252 +idtcps +idt_gen2 +ie31200_edac +ie6xx_wdt +ieee802154 +ieee802154_6lowpan +ieee802154_socket +ifb +iforce +igb +igbvf +igorplugusb +iguanair +iio_dummy +iio_hwmon +iio-trig-interrupt +iio-trig-periodic-rtc +iio-trig-sysfs +ii_pci20kc +ili210x +ili922x +ili9320 +imm +imon +ims-pcu +imx074 +in2000 +ina209 +ina2xx +industrialio +industrialio-triggered-buffer +inet_diag +inexio +inftl +initio +input-leds +input-polldev +int3400_thermal +int3402_thermal +int3403_thermal +int340x_thermal_zone +int51x1 +intelfb +intel_ips +intel-lpss +intel-lpss-acpi +intel-lpss-pci +intel_menlow +intel_mid_battery +intel_mid_powerbtn +intel_mid_thermal +intel-mid-touch +intel-mid_wdt +intel_oaktrail +intel_pmc_ipc +intel_powerclamp +intel_qat +intel_quark_i2c_gpio +intel_rapl +intel-rng +intel-rst +intel_scu_ipcutil +intel-smartconnect +intel_soc_dts_iosf +intel_soc_dts_thermal +intel_vr_nor +interact +interval_tree_test +inv-mpu6050 +ioatdma +ioc4 +io_edgeport +io_ti +iowarrior +ip6_gre +ip6table_filter +ip6table_mangle +ip6table_nat +ip6table_raw +ip6_tables +ip6table_security +ip6t_ah +ip6t_eui64 +ip6t_frag +ip6t_hbh +ip6t_ipv6header +ip6t_MASQUERADE +ip6t_mh +ip6t_NPT +ip6t_REJECT +ip6t_rpfilter +ip6t_rt +ip6t_SYNPROXY +ip6_tunnel +ip6_udp_tunnel +ip6_vti +ipack +ipaq +ipcomp +ipcomp6 +ipddp +ipg +ip_gre +iphase +ipheth +ipip +ipmi_devintf +ipmi_msghandler +ipmi_poweroff +ipmi_si +ipmi_ssif +ipmi_watchdog +ipoctal +ipr +ips +ip_set +ip_set_bitmap_ip +ip_set_bitmap_ipmac +ip_set_bitmap_port +ip_set_hash_ip +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 +iptable_filter +iptable_mangle +iptable_nat +iptable_raw +ip_tables +iptable_security +ipt_ah +ipt_CLUSTERIP +ipt_ECN +ipt_MASQUERADE +ipt_REJECT +ipt_rpfilter +ipt_SYNPROXY +ip_tunnel +ipvlan +ip_vs +ip_vs_dh +ip_vs_fo +ip_vs_ftp +ip_vs_lblc +ip_vs_lblcr +ip_vs_lc +ip_vs_nq +ip_vs_pe_sip +ip_vs_rr +ip_vs_sed +ip_vs_sh +ip_vs_wlc +ip_vs_wrr +ip_vti +ipw +ipw2100 +ipw2200 +ipwireless +ipx +ircomm +ircomm-tty +irda +irda-usb +ir-hix5hd2 +iris +ir-jvc-decoder +ir-kbd-i2c +irlan +ir-lirc-codec +ir-mce_kbd-decoder +ir-nec-decoder +irnet +ir-rc5-decoder +ir-rc6-decoder +ir-sanyo-decoder +ir-sharp-decoder +ir-sony-decoder +irtty-sir +ir-usb +ir-xmp-decoder +isci +iscsi_boot_sysfs +iscsi_ibft +iscsi_target_mod +iscsi_tcp +isdn +isdn_bsdcomp +isdnhdlc +isicom +isight_firmware +isl29003 +isl29018 +isl29020 +isl29028 +isl29125 +isl6271a-regulator +isl6405 +isl6421 +isl6423 +isl9305 +isofs +isp116x-hcd +isp1362-hcd +isp1704_charger +isp1760 +it87 +it8712f_wdt +it87_wdt +it913x +iTCO_vendor_support +iTCO_wdt +itd1000 +ite-cir +itg3200 +iuu_phoenix +ivtv +ivtv-alsa +ivtvfb +iw_c2 +iw_cm +iw_cxgb3 +iw_cxgb4 +iwl3945 +iwl4965 +iwldvm +iwlegacy +iwlmvm +iwlwifi +iw_nes +ix2505v +ixgb +ixgbe +ixgbevf +janz-cmodio +janz-ican3 +jc42 +jedec_probe +jffs2 +jfs +jitterentropy_rng +jmb38x_ms +jme +joydev +joydump +jr3_pci +jsa1212 +jsm +k10temp +k8temp +kafs +kalmia +kaweth +kb3886_bl +kbic +kbtab +kcomedilib +ke_counter +kempld-core +kempld_wdt +kernelcapi +keyspan +keyspan_pda +keyspan_remote +kfifo_buf +khazad +kingsun-sir +kl5kusb105 +kmx61 +ko2iblnd +kobil_sct +ks0108 +ks0127 +ks8842 +ks8851 +ks8851_mll +ks959-sir +ksdazzle-sir +ksocklnd +ksz884x +ktti +kvaser_pci +kvaser_usb +kvm +kvm-amd +kvm-intel +kxcjk-1013 +kxsd9 +kxtj9 +kyrofb +l1oip +l2tp_core +l2tp_debugfs +l2tp_eth +l2tp_ip +l2tp_ip6 +l2tp_netlink +l2tp_ppp +l440gx +l4f00242t03 +l64781 +lanai +lance +lapb +lapbether +latch-addr-flash +lattice-ecp3-config +lcd +ld9040 +ldusb +lec +led-class-flash +leds-88pm860x +leds-adp5520 +leds-bd2802 +leds-blinkm +leds-clevo-mail +leds-da903x +leds-da9052 +leds-dac124s085 +leds-gpio +leds-lm3530 +leds-lm3533 +leds-lm355x +leds-lm3642 +leds-lp3944 +leds-lp8788 +leds-lp8860 +leds-lt3593 +leds-max8997 +leds-mc13783 +leds-menf21bmc +leds-net48xx +leds-ot200 +leds-pca9532 +leds-pca955x +leds-pca963x +leds-pm8941-wled +leds-pwm +leds-regulator +leds-ss4200 +leds-tca6507 +leds-tlc591xx +leds-wm831x-status +leds-wm8350 +leds-wrap +ledtrig-backlight +ledtrig-camera +ledtrig-default-on +ledtrig-gpio +ledtrig-heartbeat +ledtrig-oneshot +ledtrig-timer +ledtrig-transient +legousbtower +lg2160 +lgdt3305 +lgdt3306a +lgdt330x +lgs8gxx +lg-vl600 +lib80211 +lib80211_crypt_ccmp +lib80211_crypt_tkip +lib80211_crypt_wep +libahci +libahci_platform +libceph +libcfs +libcomposite +libcrc32c +libcxgbi +libertas +libertas_cs +libertas_sdio +libertas_spi +libertas_tf +libertas_tf_usb +libfc +libfcoe +libipw +libiscsi +libiscsi_tcp +libore +libosd +libsas +lightning +lineage-pem +linear +lirc_bt829 +lirc_dev +lirc_imon +lirc_parallel +lirc_sasem +lirc_serial +lirc_sir +lirc_zilog +lis3l02dq +lis3lv02d +lis3lv02d_i2c +litelink-sir +lkkbd +llc +llc2 +llite_lloop +lm25066 +lm3533-als +lm3533_bl +lm3533-core +lm3533-ctrlbank +lm3630a_bl +lm3639_bl +lm63 +lm70 +lm73 +lm75 +lm77 +lm78 +lm80 +lm83 +lm8323 +lm8333 +lm85 +lm87 +lm90 +lm92 +lm93 +lm95234 +lm95241 +lm95245 +lmc +lms283gf05 +lms501kf03 +lmv +lnbp21 +lnbp22 +lnet +lnet_selftest +lockd +locktorture +logibm +longhaul +longrun +lov +lp +lp3943 +lp3971 +lp3972 +lp855x_bl +lp8727_charger +lp872x +lp8755 +lp8788_adc +lp8788_bl +lp8788-buck +lp8788-charger +lp8788-ldo +lpc_ich +lpc_sch +lpddr_cmds +lpfc +lru_cache +lrw +ltc2941-battery-gauge +ltc2945 +ltc2978 +ltc3589 +ltc4151 +ltc4215 +ltc4222 +ltc4245 +ltc4260 +ltc4261 +ltpc +ltr501 +ltv350qv +lustre +lv5207lp +lvstest +lxfb +lxt +lz4 +lz4_compress +lz4hc +lz4hc_compress +m25p80 +m2m-deinterlace +m52790 +m62332 +m88ds3103 +m88rs2000 +m88rs6000t +ma600-sir +mac80211 +mac80211_hwsim +mac802154 +macb +mac-celtic +mac-centeuro +mac-croatian +mac-cyrillic +mac-gaelic +mac-greek +mac_hid +machzwd +mac-iceland +mac-inuit +macmodes +mac-roman +mac-romanian +mac-turkish +macvlan +macvtap +mag3110 +magellan +mailbox-altera +mantis +mantis_core +map_absent +map_funcs +map_ram +map_rom +marvell +matrix-keymap +matrix_keypad +matroxfb_accel +matroxfb_base +matroxfb_crtc2 +matroxfb_DAC1064 +matroxfb_g450 +matroxfb_maven +matroxfb_misc +matroxfb_Ti3026 +matrox_w1 +max1027 +max1111 +max11801_ts +max1363 +max14577 +max14577_charger +max1586 +max16064 +max16065 +max1619 +max1668 +max17040_battery +max17042_battery +max197 +max2165 +max3100 +max3421-hcd +max34440 +max517 +max63xx_wdt +max6639 +max6642 +max6650 +max6697 +max6875 +max7359_keypad +max77693 +max77693_charger +max77693-haptic +max77843 +max77843-haptic +max8649 +max8660 +max8688 +max8903_charger +max8907 +max8907-regulator +max8925_bl +max8925_onkey +max8925_power +max8925-regulator +max8952 +max8973-regulator +max8997 +max8997_charger +max8997_haptic +max8998 +max8998_charger +mb862xxfb +mb86a16 +mb86a20s +mc13783-adc +mc13783-pwrbutton +mc13783-regulator +mc13783_ts +mc13892-regulator +mc13xxx-core +mc13xxx-i2c +mc13xxx-regulator-core +mc13xxx-spi +mc44s803 +m_can +mcb +mcb-pci +mce_amd_inj +mce-inject +mceusb +mcp2120-sir +mcp251x +mcp3021 +mcp320x +mcp3422 +mcp4725 +mcp4922 +mcryptd +mcs5000_ts +mcs7780 +mcs7830 +mcs_touchkey +mct_u232 +md4 +mdacon +mdc +mdc800 +md-cluster +mdio +mdio-bcm-unimac +mdio-bitbang +mdio-gpio +me4000 +me_daq +media +megaraid +megaraid_mbox +megaraid_mm +megaraid_sas +mei +mei-me +mei_phy +mei-txe +memory-notifier-error-inject +memstick +mena21_wdt +menf21bmc +menf21bmc_hwmon +menf21bmc_wdt +men_z135_uart +men_z188_adc +metronomefb +metro-usb +meye +mf6x4 +mga +mgc +michael_mic +micrel +microread +microread_i2c +microread_mei +microtek +mii +minix +mip6 +mISDN_core +mISDN_dsp +mISDNinfineon +mISDNipac +mISDNisar +mite +mixcomwd +mk712 +mkiss +mlx4_core +mlx4_en +mlx4_ib +mlx5_core +mlx5_ib +mlx90614 +mma8450 +mma8452 +mma9551 +mma9551_core +mma9553 +mmc35240 +mmc_block +mms114 +mn88472 +mn88473 +mos7720 +mos7840 +moxa +mpc624 +mpl115 +mpl3115 +mpls_gso +mpls_router +mpoa +mpr121_touchkey +mpt2sas +mpt3sas +mptbase +mptctl +mptfc +mptlan +mptsas +mptscsih +mptspi +mpu3050 +mrf24j40 +mrp +ms5611_core +ms5611_i2c +ms5611_spi +ms_block +msdos +msi001 +msi2500 +msi-laptop +msi-wmi +msp3400 +mspro_block +msr +mt2060 +mt2063 +mt20xx +mt2131 +mt2266 +mt29f_spinand +mt312 +mt352 +mt6397-core +mt6397-regulator +mt7601u +mt9m001 +mt9m111 +mt9t031 +mt9t112 +mt9v011 +mt9v022 +mtd +mtd_blkdevs +mtdblock +mtdblock_ro +mtd_dataflash +mtdoops +mtdram +mtdswap +mtip32xx +mtk-sd +mtouch +multipath +multiq3 +musb_hdrc +mvmdio +mvsas +mv_u3d_core +mv_udc +mvumi +mwave +mwifiex +mwifiex_pcie +mwifiex_sdio +mwifiex_usb +mwl8k +mxb +mxl111sf-demod +mxl111sf-tuner +mxl301rf +mxl5005s +mxl5007t +mxm-wmi +mxser +mxuport +myri10ge +n2 +n411 +nand +nand_bch +nand_ecc +nand_ids +nandsim +national +natsemi +nau7802 +navman +nbd +nci +nci_uart +ncpfs +NCR53c406a +nct6683 +nct6775 +nct7802 +nct7904 +nd_blk +nd_btt +nd_pmem +ne +ne2k-pci +neofb +net1080 +net2272 +net2280 +netconsole +netjet +netlink_diag +netrom +nettel +netxen_nic +newtonkbd +nfc +nfc_digital +nfcmrvl +nfcmrvl_uart +nfcmrvl_usb +nf_conntrack +nf_conntrack_amanda +nf_conntrack_broadcast +nf_conntrack_ftp +nf_conntrack_h323 +nf_conntrack_ipv4 +nf_conntrack_ipv6 +nf_conntrack_irc +nf_conntrack_netbios_ns +nf_conntrack_netlink +nf_conntrack_pptp +nf_conntrack_proto_dccp +nf_conntrack_proto_gre +nf_conntrack_proto_sctp +nf_conntrack_proto_udplite +nf_conntrack_sane +nf_conntrack_sip +nf_conntrack_snmp +nf_conntrack_tftp +nfcsim +nfcwilink +nf_defrag_ipv4 +nf_defrag_ipv6 +nfit +nf_log_arp +nf_log_bridge +nf_log_common +nf_log_ipv4 +nf_log_ipv6 +nf_nat +nf_nat_amanda +nf_nat_ftp +nf_nat_h323 +nf_nat_ipv4 +nf_nat_ipv6 +nf_nat_irc +nf_nat_masquerade_ipv4 +nf_nat_masquerade_ipv6 +nf_nat_pptp +nf_nat_proto_dccp +nf_nat_proto_gre +nf_nat_proto_sctp +nf_nat_proto_udplite +nf_nat_redirect +nf_nat_sip +nf_nat_snmp_basic +nf_nat_tftp +nfnetlink +nfnetlink_acct +nfnetlink_cthelper +nfnetlink_cttimeout +nfnetlink_log +nfnetlink_queue +nf_reject_ipv4 +nf_reject_ipv6 +nfs +nfs_acl +nfsd +nfs_layout_flexfiles +nfs_layout_nfsv41_files +nfsv2 +nfsv3 +nfsv4 +nf_synproxy_core +nf_tables +nf_tables_arp +nf_tables_bridge +nf_tables_inet +nf_tables_ipv4 +nf_tables_ipv6 +nf_tables_netdev +nft_chain_nat_ipv4 +nft_chain_nat_ipv6 +nft_chain_route_ipv4 +nft_chain_route_ipv6 +nft_compat +nft_counter +nft_ct +nft_exthdr +nft_hash +nftl +nft_limit +nft_log +nft_masq +nft_masq_ipv4 +nft_masq_ipv6 +nft_meta +nft_meta_bridge +nft_nat +nft_queue +nft_rbtree +nft_redir +nft_redir_ipv4 +nft_redir_ipv6 +nft_reject +nft_reject_bridge +nft_reject_inet +nft_reject_ipv4 +nft_reject_ipv6 +ngene +n_gsm +nhc_dest +nhc_fragment +nhc_hop +nhc_ipv6 +nhc_mobility +nhc_routing +nhc_udp +n_hdlc +ni65 +ni_6527 +ni_65xx +ni_660x +ni_670x +ni_at_a2150 +ni_at_ao +ni_atmio +ni_atmio16d +nicstar +ni_daq_700 +ni_daq_dio24 +ni_labpc +ni_labpc_common +ni_labpc_cs +ni_labpc_isadma +ni_labpc_pci +nilfs2 +ni_mio_cs +ni_pcidio +ni_pcimio +ni_tio +ni_tiocmd +niu +ni_usb6501 +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 +nosy +notifier-error-inject +nouveau +nozomi +n_r3964 +ns558 +ns83820 +nsc_gpio +nsc-ircc +nsp32 +nsp_cs +ntb +ntb_netdev +ntb_pingpong +ntb_tool +ntb_transport +ntc_thermistor +ntfs +n_tracerouter +n_tracesink +null_blk +nuvoton-cir +nvidiafb +nvme +nvram +nv_tco +nxp-nci +nxp-nci_i2c +nxt200x +nxt6000 +obdclass +obdecho +objlayoutdriver +ocfb +ocfs2 +ocfs2_dlm +ocfs2_dlmfs +ocfs2_nodemanager +ocfs2_stackglue +ocfs2_stack_o2cb +ocfs2_stack_user +ocrdma +of_xilinx_wdt +old_belkin-sir +omfs +omninet +on20 +on26 +onenand +opencores-kbd +openvswitch +oprofile +opticon +option +or51132 +or51211 +orinoco +orinoco_cs +orinoco_nortel +orinoco_plx +orinoco_tmd +orinoco_usb +osc +osd +osdblk +osst +oti6858 +ov2640 +ov5642 +ov6650 +ov7640 +ov7670 +ov772x +ov9640 +ov9740 +overlay +oxu210hp-hcd +ozwpan +p4-clockmod +p54common +p54pci +p54spi +p54usb +p8022 +p8023 +padlock-aes +padlock-sha +palmas-pwrbutton +palmas-regulator +panasonic-laptop +pandora_bl +panel +paride +parkbd +parport +parport_ax88796 +parport_cs +parport_pc +parport_serial +pas16 +pata_acpi +pata_ali +pata_amd +pata_artop +pata_atiixp +pata_atp867x +pata_cmd640 +pata_cmd64x +pata_cs5520 +pata_cs5530 +pata_cs5535 +pata_cs5536 +pata_cypress +pata_efar +pata_hpt366 +pata_hpt37x +pata_hpt3x2n +pata_hpt3x3 +pata_isapnp +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_sc1200 +pata_sch +pata_serverworks +pata_sil680 +pata_sl82c105 +pata_triflex +pata_via +pc110pad +pc300too +pc87360 +pc8736x_gpio +pc87413_wdt +pc87427 +pcap_keys +pcap-regulator +pcap_ts +pcbc +pcbit +pcd +pcf50633 +pcf50633-adc +pcf50633-backlight +pcf50633-charger +pcf50633-gpio +pcf50633-input +pcf50633-regulator +pcf8574_keypad +pcf8591 +pch_can +pch_dma +pch_gbe +pch_phub +pch_uart +pch_udc +pci +pci200syn +pcips2 +pci-stub +pcl711 +pcl724 +pcl726 +pcl730 +pcl812 +pcl816 +pcl818 +pcm3724 +pcmad +pcmcia +pcmcia_core +pcmciamtd +pcmcia_rsrc +pcmda12 +pcmmio +pcmuio +pcnet32 +pcnet_cs +pcrypt +pcspkr +pcwd +pcwd_pci +pcwd_usb +pd +pd6729 +pda_power +pdc_adma +peak_pci +peak_pcmcia +peak_usb +pegasus +penmount +percpu_test +pf +pfuze100-regulator +pg +phantom +phonet +phram +phy-bcm-kona-usb2 +phy-exynos-usb2 +phy-gpio-vbus-usb +phy-isp1301 +phy-pxa-28nm-hsic +phy-pxa-28nm-usb2 +physmap +phy-tahvo +phy-tusb1210 +pinctrl-cherryview +pinctrl-intel +pinctrl-sunrisepoint +pixcir_i2c_ts +pkcs7_message +pkcs7_test_key +pktcdvd +pktgen +pl2303 +platform_lcd +plat_nand +plat-ram +plip +plusb +pluto2 +plx_pci +pm2fb +pm3fb +pm80xx +pmbus +pmbus_core +pmc551 +pmcraid +pm-notifier-error-inject +pn533 +pn544 +pn544_i2c +pn544_mei +pn_pep +poly1305_generic +port100 +powermate +powernow-k6 +powernow-k7 +powr1220 +ppa +ppdev +ppp_async +ppp_deflate +ppp_mppe +pppoatm +pppoe +pppox +ppp_synctty +pps_core +pps-gpio +pps-ldisc +pps_parport +pptp +prism2_usb +processor_thermal_device +ps2mult +psmouse +psnap +pt +pti +ptlrpc +ptp +ptp_pch +punit_atom_debug +pvpanic +pvrusb2 +pwc +pwm-beeper +pwm_bl +pwm-lp3943 +pwm-lpss +pwm-lpss-pci +pwm-lpss-platform +pwm-regulator +pwm-twl +pwm-twl-led +pxa27x_udc +qat_dh895xcc +qcaux +qcom-spmi-iadc +qcom_spmi-regulator +qcom-spmi-vadc +qcserial +qinfo_probe +qla1280 +qla2xxx +qla3xxx +qla4xxx +qlcnic +qlge +qlogic_cs +qlogicfas +qlogicfas408 +qm1d1c0042 +qmi_wwan +qnx4 +qnx6 +qsemi +qt1010 +qt1070 +qt2160 +quatech2 +quatech_daqp_cs +quota_tree +quota_v1 +quota_v2 +qxl +r128 +r592 +r6040 +r8152 +r8169 +r8188eu +r8192e_pci +r8192u_usb +r820t +r82600_edac +r852 +r8712u +r8723au +r8a66597-hcd +r8a66597-udc +radeon +radeonfb +radio-aimslab +radio-aztech +radio-bcm2048 +radio-cadet +radio-gemtek +radio-i2c-si470x +radio-isa +radio-keene +radio-ma901 +radio-maxiradio +radio-miropcm20 +radio-mr800 +radio-platform-si4713 +radio-raremono +radio-rtrack2 +radio-sf16fmi +radio-sf16fmr2 +radio-shark +radio-si476x +radio-tea5764 +radio-terratec +radio-timb +radio-trust +radio-typhoon +radio-usb-si470x +radio-usb-si4713 +radio-wl1273 +radio-zoltrix +raid0 +raid1 +raid10 +raid456 +raid6_pq +raid6test +raid_class +ramoops +raw +ray_cs +rbd +rbtree_test +rc5t583-regulator +rc-adstech-dvb-t-pci +rc-alink-dtu-m +rc-anysee +rc-apac-viewcomp +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-behold +rc-behold-columbus +rc-budget-ci-old +rc-cinergy +rc-cinergy-1400 +rc-core +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-dvbsky +rc-em-terratec +rc-encore-enltv +rc-encore-enltv2 +rc-encore-enltv-fm53 +rc-evga-indtube +rc-eztv +rc-flydvb +rc-flyvideo +rc-fusionhdtv-mce +rc-gadmei-rm008z +rc-genius-tvgo-a11mce +rc-gotview7135 +rc-hauppauge +rc-imon-mce +rc-imon-pad +rc-iodata-bctv7e +rc-it913x-v1 +rc-it913x-v2 +rc-kaiomy +rc-kworld-315u +rc-kworld-pc150u +rc-kworld-plus-tv-analog +rc-leadtek-y04g0051 +rc-lirc +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-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-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-twinhan1027 +rc-twinhan-dtv-cab-ci +rc-videomate-m1f +rc-videomate-s350 +rc-videomate-tv-pvr +rc-winfast +rc-winfast-usbii-deluxe +rdc321x-southbridge +rdma_cm +rdma_ucm +rds +rds_rdma +rds_tcp +realtek +redboot +redrat3 +reed_solomon +regmap-spmi +regulator-haptic +reiserfs +remoteproc +retu-mfd +retu-pwrbutton +retu_wdt +rfc1051 +rfc1201 +rfcomm +rfd_ftl +rfkill-gpio +rfkill-regulator +rio500 +rionet +rio-scan +rivafb +rj54n1cb0c +rmd128 +rmd160 +rmd256 +rmd320 +rn5t618 +rn5t618-regulator +rn5t618_wdt +rndis_host +rndis_wlan +rocket +romfs +rose +rotary_encoder +rp2 +rpcrdma +rpcsec_gss_krb5 +rsa_generic +rsi_91x +rsi_sdio +rsi_usb +rsxx +rt2400pci +rt2500pci +rt2500usb +rt2800lib +rt2800mmio +rt2800pci +rt2800usb +rt2x00lib +rt2x00mmio +rt2x00pci +rt2x00usb +rt5033 +rt5033_battery +rt5033-regulator +rt61pci +rt73usb +rt9455_charger +rtc-88pm80x +rtc-88pm860x +rtc-ab3100 +rtc-ab-b5ze-s3 +rtc-abx80x +rtc-bq32k +rtc-bq4802 +rtc-da9052 +rtc-da9055 +rtc-da9063 +rtc-ds1286 +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-ds3234 +rtc-em3027 +rtc-fm3130 +rtc-hid-sensor-time +rtc-isl12022 +rtc-isl12057 +rtc-isl1208 +rtc-lp8788 +rtc-m41t80 +rtc-m41t93 +rtc-m41t94 +rtc-m48t35 +rtc-m48t59 +rtc-m48t86 +rtc-max6900 +rtc-max6902 +rtc-max8907 +rtc-max8925 +rtc-max8997 +rtc-max8998 +rtc-mc13xxx +rtc-mcp795 +rtc-mrst +rtc-msm6242 +rtc-mt6397 +rtc-palmas +rtc-pcap +rtc-pcf2123 +rtc-pcf2127 +rtc-pcf50633 +rtc-pcf85063 +rtc-pcf8523 +rtc-pcf8563 +rtc-pcf8583 +rtc-r9701 +rtc-rc5t583 +rtc-rp5c01 +rtc-rs5c348 +rtc-rs5c372 +rtc-rv3029c2 +rtc-rx4581 +rtc-rx8025 +rtc-rx8581 +rtc-s35390a +rtc-s5m +rtc-stk17ta8 +rtc-tps6586x +rtc-tps65910 +rtc-tps80031 +rtc-twl +rtc-v3020 +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 +rtl8723ae +rtl8723be +rtl8723-common +rtl8821ae +rtllib +rtllib_crypt_ccmp +rtllib_crypt_tkip +rtllib_crypt_wep +rtl_pci +rtl_usb +rtlwifi +rts5208 +rtsx_pci +rtsx_pci_ms +rtsx_pci_sdmmc +rtsx_usb +rtsx_usb_ms +rtsx_usb_sdmmc +rx51_battery +rxkad +s1d13xxxfb +s2250 +s2255drv +s2io +s2mpa01 +s2mps11 +s3fb +s526 +s5h1409 +s5h1411 +s5h1420 +s5m8767 +s626 +s6e63m0 +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 +salsa20-i586 +samsung-keypad +samsung-laptop +samsung-q10 +samsung-sxgbe +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 +savage +savagefb +sb1000 +sbc60xxwdt +sbc7240_wdt +sbc8360 +sbc_epx_c3 +sbc_fitpc2_wdt +sbc_gxx +sbni +sbp_target +sbs +sbs-battery +sbshc +sc +sc1200wdt +sc16is7xx +sc92031 +sca3000 +scb2_flash +scc +sch311x_wdt +sch5627 +sch5636 +sch56xx-common +sch_atm +sch_cbq +sch_choke +sch_codel +sch_drr +sch_dsmark +sch_fq +sch_fq_codel +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_tbf +sch_teql +scsi_debug +scsi_dh +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_probe +scx200 +scx200_acb +scx200_docflash +scx200_gpio +scx200_hrt +scx200_wdt +sdhci +sdhci-acpi +sdhci-pci +sdhci-pltfm +sdio_uart +sdla +sdricoh_cs +sealevel +sedlbauer_cs +seed +sensorhub +seqiv +ser_gigaset +serial2002 +serial_cs +serio_raw +sermouse +serpent_generic +serpent-sse2-i586 +serport +ses +sfc +sfi-cpufreq +shark2 +shpchp +sht15 +sht21 +shtc1 +sh_veu +si2157 +si2165 +si2168 +si21xx +si4713 +si476x-core +si7005 +si7020 +sidewinder +sierra +sierra_net +sil164 +sim710 +sir-dev +sis +sis190 +sis5595 +sis900 +sis-agp +sisfb +sisusbvga +sit +sja1000 +sja1000_isa +sja1000_platform +skfp +skge +sky2 +sky81452 +sky81452-backlight +sky81452-regulator +sl811_cs +sl811-hcd +slcan +slicoss +slip +slram +sm501 +sm501fb +sm750fb +sm7xxfb +smb347-charger +smc9194 +smc91c92_cs +sm_common +smc-ultra +sm_ftl +smipcie +smm665 +smsc +smsc37b787_wdt +smsc47b397 +smsc47m1 +smsc47m192 +smsc75xx +smsc911x +smsc9420 +smsc95xx +smsc-ircc2 +smscufx +smsdvb +smsmdtv +smssdio +smsusb +snd +snd-ac97-codec +snd-ad1816a +snd-ad1848 +snd-ad1889 +snd-adlib +snd-ak4113 +snd-ak4114 +snd-ak4117 +snd-ak4xxx-adda +snd-ali5451 +snd-aloop +snd-als100 +snd-als300 +snd-als4000 +snd-asihpi +snd-atiixp +snd-atiixp-modem +snd-au8810 +snd-au8820 +snd-au8830 +snd-aw2 +snd-azt1605 +snd-azt2316 +snd-azt2320 +snd-azt3328 +snd-bcd2000 +snd-bebob +snd-bt87x +snd-ca0106 +snd-cmi8328 +snd-cmi8330 +snd-cmipci +snd-compress +snd-cs4231 +snd-cs4236 +snd-cs4281 +snd-cs46xx +snd-cs5530 +snd-cs5535audio +snd-cs8427 +snd-ctxfi +snd-darla20 +snd-darla24 +snd-dice +snd-dummy +snd-echo3g +snd-emu10k1 +snd-emu10k1-synth +snd-emu10k1x +snd-emu8000-synth +snd-emux-synth +snd-ens1370 +snd-ens1371 +snd-es1688 +snd-es1688-lib +snd-es18xx +snd-es1938 +snd-es1968 +snd-firewire-lib +snd-fireworks +snd-fm801 +snd-gina20 +snd-gina24 +snd-gusclassic +snd-gusextreme +snd-gus-lib +snd-gusmax +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-intel8x0 +snd-intel8x0m +snd-intel-sst-acpi +snd-intel-sst-core +snd-intel-sst-pci +snd-interwave +snd-interwave-stb +snd-isight +snd-jazz16 +snd-korg1212 +snd-layla20 +snd-layla24 +snd-lola +snd-lx6464es +snd-maestro3 +snd-mia +snd-miro +snd-mixart +snd-mixer-oss +snd-mona +snd-mpu401 +snd-mpu401-uart +snd-msnd-classic +snd-msnd-lib +snd-msnd-pinnacle +snd-mtpav +snd-mts64 +snd-nm256 +snd-opl3-lib +snd-opl3sa2 +snd-opl3-synth +snd-opl4-lib +snd-opl4-synth +snd-opti92x-ad1848 +snd-opti92x-cs4231 +snd-opti93x +snd-oxfw +snd-oxygen +snd-oxygen-lib +snd-pcm +snd-pcm-dmaengine +snd-pcm-oss +snd-pcsp +snd-pcxhr +snd-pdaudiocf +snd-portman2x4 +snd-pt2258 +snd-rawmidi +snd-riptide +snd-rme32 +snd-rme96 +snd-rme9652 +snd-sb16 +snd-sb16-csp +snd-sb16-dsp +snd-sb8 +snd-sb8-dsp +snd-sbawe +snd-sb-common +snd-sc6000 +snd-scs1x +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-sis7019 +snd-soc-ac97 +snd-soc-adau1701 +snd-soc-ak4104 +snd-soc-ak4554 +snd-soc-ak4642 +snd-soc-ak5386 +snd-soc-alc5623 +snd-soc-core +snd-soc-cs35l32 +snd-soc-cs4265 +snd-soc-cs4270 +snd-soc-cs4271 +snd-soc-cs4271-i2c +snd-soc-cs4271-spi +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-es8328 +snd-soc-fsl-asrc +snd-soc-fsl-esai +snd-soc-fsl-sai +snd-soc-fsl-spdif +snd-soc-fsl-ssi +snd-soc-hdmi-codec +snd-soc-imx-audmux +snd-soc-max98090 +snd-soc-pcm1681 +snd-soc-pcm1792a-codec +snd-soc-pcm512x +snd-soc-pcm512x-i2c +snd-soc-pcm512x-spi +snd-soc-rl6231 +snd-soc-rl6347a +snd-soc-rt286 +snd-soc-rt5631 +snd-soc-rt5640 +snd-soc-rt5645 +snd-soc-rt5670 +snd-soc-sgtl5000 +snd-soc-si476x +snd-soc-sigmadsp +snd-soc-sigmadsp-i2c +snd-soc-simple-card +snd-soc-sn95031 +snd-soc-spdif-rx +snd-soc-spdif-tx +snd-soc-ssm2602 +snd-soc-ssm2602-i2c +snd-soc-ssm2602-spi +snd-soc-ssm4567 +snd-soc-sst-acpi +snd-soc-sst-baytrail-pcm +snd-soc-sst-broadwell +snd-soc-sst-bytcr-rt5640 +snd-soc-sst-byt-max98090-mach +snd-soc-sst-byt-rt5640-mach +snd-soc-sst-cht-bsw-max98090_ti +snd-soc-sst-cht-bsw-rt5645 +snd-soc-sst-cht-bsw-rt5672 +snd-soc-sst-dsp +snd-soc-sst-haswell +snd-soc-sst-haswell-pcm +snd-soc-sst-ipc +snd-soc-sst-mfld-platform +snd-soc-sta32x +snd-soc-sta350 +snd-soc-tas2552 +snd-soc-tas5086 +snd-soc-tas571x +snd-soc-tfa9879 +snd-soc-tlv320aic23 +snd-soc-tlv320aic23-i2c +snd-soc-tlv320aic23-spi +snd-soc-tlv320aic31xx +snd-soc-tlv320aic3x +snd-soc-tpa6130a2 +snd-soc-ts3a227e +snd-soc-wm8510 +snd-soc-wm8523 +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-wm8804 +snd-soc-wm8804-i2c +snd-soc-wm8804-spi +snd-soc-wm8903 +snd-soc-wm8962 +snd-soc-wm8978 +snd-soc-xtfpga-i2s +snd-sonicvibes +snd-sscape +snd-tea6330t +snd-timer +snd-trident +snd-ua101 +snd-usb-6fire +snd-usb-audio +snd-usb-caiaq +snd-usb-hiface +snd-usb-line6 +snd-usbmidi-lib +snd-usb-pod +snd-usb-podhd +snd-usb-toneport +snd-usb-us122l +snd-usb-usx2y +snd-usb-variax +snd-util-mem +snd-via82xx +snd-via82xx-modem +snd-virmidi +snd-virtuoso +snd-vx222 +snd-vx-lib +snd-vxpocket +snd-wavefront +snd-wss-lib +snd-ymfpci +snic +soc_button_array +soc_camera +soc_camera_platform +soc_mediabus +softdog +softing +softing_cs +solo6x10 +solos-pci +sony-btf-mpx +sony-laptop +sonypi +soundcore +sp2 +sp5100_tco +sp8870 +sp887x +spaceball +spaceorb +sparse-keymap +spcp8x5 +speakup +speakup_acntpc +speakup_acntsa +speakup_apollo +speakup_audptr +speakup_bns +speakup_decext +speakup_decpc +speakup_dectlk +speakup_dtlk +speakup_dummy +speakup_keypc +speakup_ltlk +speakup_soft +speakup_spkout +speakup_txprt +spectrum_cs +speedfax +speedtch +spi-altera +spi-bitbang +spi-butterfly +spi-cadence +spidev +spi-dln2 +spi-dw +spi-dw-midpci +spi-dw-mmio +spi-gpio +spi_ks8995 +spi-lm70llp +spi-nor +spi-oc-tiny +spi-pxa2xx-pci +spi-pxa2xx-platform +spi-sc18is602 +spi-tle62x0 +spi-topcliff-pch +spi-xcomm +spi-zynqmp-gqspi +spmi +squashfs +sr9700 +sr9800 +ssb +ssb-hcd +ssfdc +ssp_accel_sensor +ssp_gyro_sensor +ssp_iio +sst25l +sstfb +ssu100 +ssv_dnp +st +st1232 +st21nfca_hci +st21nfca_i2c +st_accel +st_accel_i2c +st_accel_spi +starfire +stb0899 +stb6000 +stb6100 +st_drv +ste10Xp +ste_modem_rproc +stex +st_gyro +st_gyro_i2c +st_gyro_spi +stinger +stir4200 +stk1160 +stk3310 +stk8312 +stk8ba50 +stkwebcam +st_magn +st_magn_i2c +st_magn_spi +stmmac +stmmac-platform +st-nci +st-nci_i2c +stowaway +stp +st_pressure +st_pressure_i2c +st_pressure_spi +streamzap +st_sensors +st_sensors_i2c +st_sensors_spi +stv0288 +stv0297 +stv0299 +stv0367 +stv0900 +stv090x +stv6110 +stv6110x +sundance +sungem +sungem_phy +sunhme +suni +sunkbd +sunrpc +sur40 +svgalib +sworks-agp +sx8 +sx8654 +sx9500 +sym53c416 +sym53c500_cs +sym53c8xx +symbolserial +synaptics_i2c +synaptics_i2c_rmi4 +synaptics_usb +synclink +synclink_cs +synclink_gt +synclinkmp +syscopyarea +sysfillrect +sysimgblt +sysv +t128 +t1isa +t1pci +t5403 +target_core_file +target_core_iblock +target_core_mod +target_core_pscsi +target_core_user +tc1100-wmi +tc74 +tc90522 +tca6416-keypad +tca8418_keypad +tcic +tcm_fc +tcm_loop +tcm_qla2xxx +tcm_usb_gadget +tcp_bic +tcp_cdg +tcp_dctcp +tcp_diag +tcp_highspeed +tcp_htcp +tcp_hybla +tcp_illinois +tcp_lp +tcp_probe +tcp_scalable +tcp_vegas +tcp_veno +tcp_westwood +tcp_yeah +tcrypt +tcs3414 +tcs3472 +tda10021 +tda10023 +tda10048 +tda1004x +tda10071 +tda10086 +tda18212 +tda18218 +tda18271 +tda18271c2dd +tda665x +tda7432 +tda8083 +tda8261 +tda826x +tda827x +tda8290 +tda9840 +tda9887 +tda998x +tdfx +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 +tekram-sir +teles_cs +test_bpf +test_firmware +test-hexdump +test-kstrtox +test_module +test_power +test-string_helpers +test_udelay +test_user_copy +tg3 +tgr192 +thinkpad_acpi +thmc50 +thunderbolt +ti-adc081c +ti-adc128s052 +ti_am335x_adc +ti_am335x_tsc +ti_am335x_tscadc +ti_dac7512 +tifm_7xx1 +tifm_core +tifm_ms +tifm_sd +timb_dma +timberdale +timblogiw +timbuart +timeriomem-rng +tipc +ti_usb_3410_5052 +tlan +tlclk +tm6000 +tm6000-alsa +tm6000-dvb +tmdc +tmem +tmp006 +tmp102 +tmp103 +tmp401 +tmp421 +toim3232-sir +topstar-laptop +torture +toshiba_acpi +toshiba_bluetooth +toshiba_haps +toshsd +touchit213 +touchright +touchwin +tpci200 +tpm_atmel +tpm_crb +tpm_i2c_atmel +tpm_i2c_infineon +tpm_i2c_nuvoton +tpm_infineon +tpm_nsc +tpm-rng +tpm_st33zp24 +tpm_st33zp24_i2c +tpm_st33zp24_spi +tps40422 +tps51632-regulator +tps6105x +tps6105x-regulator +tps62360-regulator +tps65010 +tps65023-regulator +tps6507x +tps6507x-regulator +tps6507x-ts +tps65090-charger +tps65090-regulator +tps65217 +tps65217_bl +tps65217-regulator +tps65218 +tps65218-pwrbutton +tps6524x-regulator +tps6586x-regulator +tps65910-regulator +tps65912-regulator +tps80031-regulator +trancevibrator +trf7970a +tridentfb +ts2020 +ts_bm +tsc2005 +tsc2007 +tsc40 +tscan1 +ts_fsm +tsi568 +tsi57x +tsi721_mport +ts_kmp +tsl2550 +tsl2563 +tsl2583 +tsl2x7x_core +tsl4531 +ttm +ttpci-eeprom +ttusb_dec +ttusbdecfe +ttusbir +tua6100 +tua9001 +tulip +tuner +tuner-simple +tuner-types +tuner-xc2028 +tunnel4 +tunnel6 +turbografx +tvaudio +tveeprom +tvp5150 +tw2804 +tw68 +tw9903 +tw9906 +tw9910 +twidjoy +twl4030_charger +twl4030_keypad +twl4030-madc +twl4030_madc_battery +twl4030-madc-hwmon +twl4030-pwrbutton +twl4030-vibra +twl4030_wdt +twl6030-gpadc +twl6040-vibra +twl-regulator +twofish_common +twofish_generic +twofish-i586 +typhoon +u132-hcd +u14-34f +uartlite +uas +ubi +ubifs +ucb1400_core +ucb1400_ts +ucd9000 +ucd9200 +uda1342 +udc-core +udf +udl +udlfb +udp_diag +udp_tunnel +ueagle-atm +u_ether +ufs +ufshcd +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 +uli526x +ulpi +ultrastor +umc +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 +unioxx5 +unix_diag +upd64031a +upd64083 +uPD98402 +usb3503 +usb_8dev +usb8xxx +usbatm +usb_debug +usbdux +usbduxfast +usbduxsigma +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_uac1 +usb_f_uac2 +usb_f_uvc +usb_gigaset +usbhid +usbip-core +usbip-host +usbkbd +usblcd +usbled +usblp +usbmon +usbmouse +usbnet +usbserial +usb-serial-simple +usbsevseg +usb-storage +usbtest +usbtmc +usbtouchscreen +usbtv +usbvision +usb_wwan +usdhi6rol0 +u_serial +userspace-consumer +ushc +usnic_verbs +uss720 +uvcvideo +uvesafb +uwb +v4l2-common +v4l2-dv-timings +v4l2-flash-led-class +v4l2-mem2mem +vboxguest +vboxsf +vboxvideo +vcan +vcnl4000 +ves1820 +ves1x93 +veth +vfio +vfio_iommu_type1 +vfio-pci +vfio_virqfd +vga16fb +vgastate +vgem +vgg2432a4 +vhci-hcd +vhost +vhost_net +vhost_scsi +via +via686a +via-camera +via-cputemp +viafb +via-ircc +via-rhine +via-rng +via-sdmmc +via-velocity +via_wdt +video +videobuf2-core +videobuf2-dma-contig +videobuf2-dma-sg +videobuf2-dvb +videobuf2-memops +videobuf2-vmalloc +videobuf-core +videobuf-dma-contig +videobuf-dma-sg +videobuf-dvb +videobuf-vmalloc +videocodec +videodev +vim2m +viperboard +viperboard_adc +virt-dma +virtio-gpu +virtio_input +virtio-rng +virtio_scsi +virtual +visor +vitesse +vivid +vlsi_ir +vmac +vme_ca91cx42 +vme_pio2 +vme_tsi148 +vme_user +vme_vmivme7805 +vmk80xx +vmlfb +vmw_balloon +vmwgfx +vmw_pvscsi +vmw_vmci +vmw_vsock_vmci_transport +vmxnet3 +vp27smpx +vport-geneve +vport-gre +vport-vxlan +vpx3220 +vringh +vsock +vsxxxaa +vt1211 +vt6655_stage +vt6656_stage +vt8231 +vt8623fb +vub300 +vx855 +vxge +vxlan +w1_bq27000 +w1_ds2406 +w1_ds2408 +w1_ds2413 +w1_ds2423 +w1_ds2431 +w1_ds2433 +w1_ds2760 +w1_ds2780 +w1_ds2781 +w1_ds28e04 +w1-gpio +w1_smem +w1_therm +w5100 +w5300 +w6692 +w83627ehf +w83627hf +w83627hf_wdt +w83781d +w83791d +w83792d +w83793 +w83795 +w83877f_wdt +w83977af_ir +w83977f_wdt +w83l785ts +w83l786ng +wacom +wacom_i2c +wacom_serial4 +wacom_w8001 +wafer5823wdt +walkera0701 +wanxl +warrior +wbsd +wcn36xx +wd +wd7000 +wd719x +wdt +wdt87xx_i2c +wdt_pci +whci +whci-hcd +whc-rc +whiteheat +wil6210 +wimax +winbond-840 +winbond-cir +wire +wishbone-serial +wistron_btns +wl1251 +wl1251_sdio +wl1251_spi +wl1273-core +wl12xx +wl18xx +wl3501_cs +wlcore +wlcore_sdio +wlcore_spi +wm831x_backup +wm831x_bl +wm831x-dcdc +wm831x-hwmon +wm831x-isink +wm831x-ldo +wm831x-on +wm831x_power +wm831x-ts +wm831x_wdt +wm8350-hwmon +wm8350_power +wm8350-regulator +wm8350_wdt +wm8400-regulator +wm8739 +wm8775 +wm8994-core +wm8994-irq +wm8994-regmap +wm8994-regulator +wm97xx-ts +wmi +wp512 +wusb-cbaf +wusbcore +wusb-wa +x25 +x25_asy +x38_edac +x86_pkg_temp_thermal +xc4000 +xc5000 +xcbc +xen-blkback +xen-evtchn +xen-fbfront +xenfs +xen-gntalloc +xen-gntdev +xen-kbdfront +xen-netback +xen-pciback +xen-pcifront +xen-privcmd +xen-scsiback +xen-scsifront +xen-tpmfront +xen_wdt +xfrm4_mode_beet +xfrm4_mode_transport +xfrm4_mode_tunnel +xfrm4_tunnel +xfrm6_mode_beet +xfrm6_mode_ro +xfrm6_mode_transport +xfrm6_mode_tunnel +xfrm6_tunnel +xfrm_algo +xfrm_ipcomp +xfrm_user +xfs +xgifb +xhci-plat-hcd +xillybus_core +xillybus_pcie +xirc2ps_cs +xircom_cb +xor +xpad +xsens_mt +x_tables +xt_addrtype +xt_AUDIT +xt_bpf +xt_cgroup +xt_CHECKSUM +xt_CLASSIFY +xt_cluster +xt_comment +xt_connbytes +xt_connlabel +xt_connlimit +xt_connmark +xt_CONNSECMARK +xt_conntrack +xt_cpu +xt_CT +xt_dccp +xt_devgroup +xt_dscp +xt_DSCP +xt_ecn +xt_esp +xt_hashlimit +xt_helper +xt_hl +xt_HL +xt_HMARK +xt_IDLETIMER +xt_ipcomp +xt_iprange +xt_ipvs +xtkbd +xt_l2tp +xt_LED +xt_length +xt_limit +xt_LOG +xt_mac +xt_mark +xt_multiport +xt_nat +xt_NETMAP +xt_nfacct +xt_NFLOG +xt_NFQUEUE +xt_osf +xt_owner +xt_physdev +xt_pkttype +xt_policy +xt_quota +xt_rateest +xt_RATEEST +xt_realm +xt_recent +xt_REDIRECT +xts +xt_sctp +xt_SECMARK +xt_set +xt_socket +xt_state +xt_statistic +xt_string +xt_tcpmss +xt_TCPMSS +xt_TCPOPTSTRIP +xt_tcpudp +xt_TEE +xt_time +xt_TPROXY +xt_TRACE +xt_u32 +xusbatm +xz_dec_test +yam +yealink +yellowfin +yenta_socket +yurex +z85230 +zatm +zaurus +zd1201 +zd1211rw +zforce_ts +zhenhua +zl10036 +zl10039 +zl10353 +zl6100 +zlib +zr36016 +zr36050 +zr36060 +zr36067 +zr364xx +zram --- linux-raspi2-4.2.0.orig/debian.master/abi/4.2.0-26.31/i386/lowlatency +++ linux-raspi2-4.2.0/debian.master/abi/4.2.0-26.31/i386/lowlatency @@ -0,0 +1,19527 @@ +EXPORT_SYMBOL arch/x86/kvm/kvm 0x8ea4d16e kvm_cpu_has_pending_timer +EXPORT_SYMBOL arch/x86/platform/scx200/scx200 0x254e5667 scx200_gpio_base +EXPORT_SYMBOL arch/x86/platform/scx200/scx200 0x35a3c008 scx200_gpio_configure +EXPORT_SYMBOL arch/x86/platform/scx200/scx200 0x8cfa375c scx200_gpio_shadow +EXPORT_SYMBOL arch/x86/platform/scx200/scx200 0x907665bd scx200_cb_base +EXPORT_SYMBOL crypto/gf128mul 0x0c2f123f gf128mul_4k_bbe +EXPORT_SYMBOL crypto/gf128mul 0x1068004b gf128mul_bbe +EXPORT_SYMBOL crypto/gf128mul 0x2f2889a0 gf128mul_init_64k_lle +EXPORT_SYMBOL crypto/gf128mul 0x3755f990 gf128mul_init_64k_bbe +EXPORT_SYMBOL crypto/gf128mul 0x384ef9ce gf128mul_64k_bbe +EXPORT_SYMBOL crypto/gf128mul 0x56af0dbd gf128mul_x_ble +EXPORT_SYMBOL crypto/gf128mul 0x83581089 gf128mul_init_4k_lle +EXPORT_SYMBOL crypto/gf128mul 0x9b2560b9 gf128mul_init_4k_bbe +EXPORT_SYMBOL crypto/gf128mul 0x9e13f6f6 gf128mul_lle +EXPORT_SYMBOL crypto/gf128mul 0xbd17a0df gf128mul_4k_lle +EXPORT_SYMBOL crypto/gf128mul 0xc0890413 gf128mul_64k_lle +EXPORT_SYMBOL crypto/gf128mul 0xd60736ec gf128mul_free_64k +EXPORT_SYMBOL crypto/mcryptd 0x2d7e229d mcryptd_arm_flusher +EXPORT_SYMBOL crypto/xor 0x5b6c00e6 xor_blocks +EXPORT_SYMBOL drivers/acpi/nfit 0xa7e9a159 to_nfit_uuid +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 0x8826c13b acpi_video_register +EXPORT_SYMBOL drivers/acpi/video 0xe92ca535 acpi_video_set_dmi_backlight_type +EXPORT_SYMBOL drivers/acpi/video 0xf7984c23 acpi_video_get_edid +EXPORT_SYMBOL drivers/atm/suni 0x12c2f217 suni_init +EXPORT_SYMBOL drivers/atm/uPD98402 0xe49a2535 uPD98402_init +EXPORT_SYMBOL drivers/bcma/bcma 0x400b6799 bcma_core_irq +EXPORT_SYMBOL drivers/bcma/bcma 0xc8c566f8 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 0x0751dbd1 pi_write_regr +EXPORT_SYMBOL drivers/block/paride/paride 0x34af2665 pi_disconnect +EXPORT_SYMBOL drivers/block/paride/paride 0x3d5124ad pi_schedule_claimed +EXPORT_SYMBOL drivers/block/paride/paride 0x4267110a pi_register_driver +EXPORT_SYMBOL drivers/block/paride/paride 0x47f1264a pi_read_regr +EXPORT_SYMBOL drivers/block/paride/paride 0x5616d1fe pi_write_block +EXPORT_SYMBOL drivers/block/paride/paride 0x688e9d91 paride_unregister +EXPORT_SYMBOL drivers/block/paride/paride 0x773e5f86 pi_do_claimed +EXPORT_SYMBOL drivers/block/paride/paride 0x8223c2c1 paride_register +EXPORT_SYMBOL drivers/block/paride/paride 0x90f7d076 pi_read_block +EXPORT_SYMBOL drivers/block/paride/paride 0x9e73ca61 pi_connect +EXPORT_SYMBOL drivers/block/paride/paride 0xb21ba07d pi_unregister_driver +EXPORT_SYMBOL drivers/block/paride/paride 0xed7d6218 pi_release +EXPORT_SYMBOL drivers/block/paride/paride 0xf4376ceb pi_init +EXPORT_SYMBOL drivers/bluetooth/btbcm 0xbcf97ec5 btbcm_patchram +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x1348760d ipmi_request_settime +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x16dcec76 ipmi_set_my_address +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x1a10c898 ipmi_set_maintenance_mode +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x1aba5db8 ipmi_unregister_smi +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x1fae3bac ipmi_addr_src_to_str +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x25375cf1 ipmi_register_smi +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x40f2b10c ipmi_alloc_smi_msg +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x423b776a ipmi_create_user +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x4c971bec ipmi_smi_msg_received +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x524f6f51 ipmi_get_my_address +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x5e80f37c ipmi_unregister_for_cmd +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x5fcdcc05 ipmi_get_my_LUN +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x67cb9784 ipmi_poll_interface +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x78fd36e7 ipmi_request_supply_msgs +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x804f922a ipmi_addr_length +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x86fa8f91 ipmi_smi_add_proc_entry +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x8c8ee770 ipmi_destroy_user +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x96cbcc81 ipmi_get_version +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x991743c9 ipmi_smi_watcher_unregister +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xa2a98b91 ipmi_get_maintenance_mode +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xc0c284b2 ipmi_get_smi_info +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xd69f8567 ipmi_set_gets_events +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xe0fa83f2 ipmi_register_for_cmd +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xe4f4665b ipmi_validate_addr +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xe6ab72a6 ipmi_set_my_LUN +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xeb54aca8 ipmi_smi_watcher_register +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xf2576cb9 ipmi_smi_watchdog_pretimeout +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xfcb77cfd ipmi_free_recv_msg +EXPORT_SYMBOL drivers/char/nsc_gpio 0x3f0eb54a nsc_gpio_write +EXPORT_SYMBOL drivers/char/nsc_gpio 0x4fc8bbe1 nsc_gpio_dump +EXPORT_SYMBOL drivers/char/nsc_gpio 0x5f4ed478 nsc_gpio_read +EXPORT_SYMBOL drivers/char/nvram 0x0f28cb91 nvram_read_byte +EXPORT_SYMBOL drivers/char/nvram 0x17ff2c1d __nvram_read_byte +EXPORT_SYMBOL drivers/char/nvram 0x2adec1e0 __nvram_check_checksum +EXPORT_SYMBOL drivers/char/nvram 0x7da28f12 nvram_check_checksum +EXPORT_SYMBOL drivers/char/nvram 0x9ce3f83f nvram_write_byte +EXPORT_SYMBOL drivers/char/nvram 0xa8813189 __nvram_write_byte +EXPORT_SYMBOL drivers/char/tpm/st33zp24/tpm_st33zp24 0x4f07fd95 st33zp24_remove +EXPORT_SYMBOL drivers/char/tpm/st33zp24/tpm_st33zp24 0x6b8686d6 st33zp24_pm_resume +EXPORT_SYMBOL drivers/char/tpm/st33zp24/tpm_st33zp24 0xa2b5d2a4 st33zp24_probe +EXPORT_SYMBOL drivers/char/tpm/st33zp24/tpm_st33zp24 0xf284e5f0 st33zp24_pm_suspend +EXPORT_SYMBOL drivers/char/xillybus/xillybus_core 0x19daa391 xillybus_endpoint_remove +EXPORT_SYMBOL drivers/char/xillybus/xillybus_core 0x25978d50 xillybus_isr +EXPORT_SYMBOL drivers/char/xillybus/xillybus_core 0x26e3d72f xillybus_endpoint_discovery +EXPORT_SYMBOL drivers/char/xillybus/xillybus_core 0xef357368 xillybus_init_endpoint +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0x1cce3a19 dw_dma_get_src_addr +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0x41756c07 dw_dma_cyclic_prep +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0x7d0327e1 dw_dma_get_dst_addr +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0xa1307cdc dw_dma_cyclic_free +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0xdd9850c1 dw_dma_cyclic_stop +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0xea42ea9a dw_dma_cyclic_start +EXPORT_SYMBOL drivers/dma/ioat/ioatdma 0x771774a9 ioat_dma_setup_interrupts +EXPORT_SYMBOL drivers/edac/edac_core 0x84e42a0d edac_mc_find +EXPORT_SYMBOL drivers/firewire/firewire-core 0x01b76eb1 fw_core_add_address_handler +EXPORT_SYMBOL drivers/firewire/firewire-core 0x04dd92ce fw_core_add_descriptor +EXPORT_SYMBOL drivers/firewire/firewire-core 0x04f1a0d3 fw_iso_context_flush_completions +EXPORT_SYMBOL drivers/firewire/firewire-core 0x05c6e259 fw_card_add +EXPORT_SYMBOL drivers/firewire/firewire-core 0x078593dc fw_cancel_transaction +EXPORT_SYMBOL drivers/firewire/firewire-core 0x0eab5d4b fw_iso_context_stop +EXPORT_SYMBOL drivers/firewire/firewire-core 0x13cd6fb2 fw_device_enable_phys_dma +EXPORT_SYMBOL drivers/firewire/firewire-core 0x16e91e21 fw_csr_iterator_next +EXPORT_SYMBOL drivers/firewire/firewire-core 0x178ee9d2 fw_run_transaction +EXPORT_SYMBOL drivers/firewire/firewire-core 0x1c9d2fa3 fw_card_initialize +EXPORT_SYMBOL drivers/firewire/firewire-core 0x1f02775c fw_schedule_bus_reset +EXPORT_SYMBOL drivers/firewire/firewire-core 0x1f65807b fw_iso_context_queue_flush +EXPORT_SYMBOL drivers/firewire/firewire-core 0x2885fec5 fw_get_request_speed +EXPORT_SYMBOL drivers/firewire/firewire-core 0x3c56ef91 fw_workqueue +EXPORT_SYMBOL drivers/firewire/firewire-core 0x4d5d4eca fw_core_remove_descriptor +EXPORT_SYMBOL drivers/firewire/firewire-core 0x4f298b5c fw_iso_context_start +EXPORT_SYMBOL drivers/firewire/firewire-core 0x600b693c fw_core_handle_bus_reset +EXPORT_SYMBOL drivers/firewire/firewire-core 0x65c9438b fw_csr_iterator_init +EXPORT_SYMBOL drivers/firewire/firewire-core 0x6ba9b726 fw_iso_context_destroy +EXPORT_SYMBOL drivers/firewire/firewire-core 0x7e0a8ee1 fw_iso_context_queue +EXPORT_SYMBOL drivers/firewire/firewire-core 0x7e431b14 fw_csr_string +EXPORT_SYMBOL drivers/firewire/firewire-core 0x839b8a6a fw_iso_context_create +EXPORT_SYMBOL drivers/firewire/firewire-core 0x86468d44 fw_rcode_string +EXPORT_SYMBOL drivers/firewire/firewire-core 0x891afb76 fw_send_request +EXPORT_SYMBOL drivers/firewire/firewire-core 0x90863005 fw_high_memory_region +EXPORT_SYMBOL drivers/firewire/firewire-core 0x911bbf7f fw_iso_resource_manage +EXPORT_SYMBOL drivers/firewire/firewire-core 0x923d7f81 fw_iso_buffer_init +EXPORT_SYMBOL drivers/firewire/firewire-core 0x9b758475 fw_send_response +EXPORT_SYMBOL drivers/firewire/firewire-core 0x9ba59446 fw_bus_type +EXPORT_SYMBOL drivers/firewire/firewire-core 0xa965075f fw_iso_buffer_destroy +EXPORT_SYMBOL drivers/firewire/firewire-core 0xb5976743 fw_core_handle_request +EXPORT_SYMBOL drivers/firewire/firewire-core 0xc37bf39e fw_fill_response +EXPORT_SYMBOL drivers/firewire/firewire-core 0xc88674f0 fw_core_handle_response +EXPORT_SYMBOL drivers/firewire/firewire-core 0xe2ecfe08 fw_core_remove_address_handler +EXPORT_SYMBOL drivers/firewire/firewire-core 0xf3e19ac6 fw_core_remove_card +EXPORT_SYMBOL drivers/firmware/dcdbas 0xa75079d6 dcdbas_smi_request +EXPORT_SYMBOL drivers/fmc/fmc 0x20146ba5 fmc_device_unregister_n +EXPORT_SYMBOL drivers/fmc/fmc 0x3454e241 fmc_show_sdb_tree +EXPORT_SYMBOL drivers/fmc/fmc 0x35adcaf7 fmc_find_sdb_device +EXPORT_SYMBOL drivers/fmc/fmc 0x58d8b085 fmc_driver_register +EXPORT_SYMBOL drivers/fmc/fmc 0x5e67c62b fmc_reprogram +EXPORT_SYMBOL drivers/fmc/fmc 0x977e75e3 fmc_free_sdb_tree +EXPORT_SYMBOL drivers/fmc/fmc 0x99594d9b fmc_scan_sdb_tree +EXPORT_SYMBOL drivers/fmc/fmc 0xdd639d86 fmc_device_register +EXPORT_SYMBOL drivers/fmc/fmc 0xdefc1681 fmc_device_register_n +EXPORT_SYMBOL drivers/fmc/fmc 0xfa7b7326 fmc_device_unregister +EXPORT_SYMBOL drivers/fmc/fmc 0xffe58cf4 fmc_driver_unregister +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00b055b4 drm_property_create_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00c75411 drm_property_unreference_blob +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0123327f drm_mode_create_from_cmdline_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x013ed741 drm_modeset_lock +EXPORT_SYMBOL drivers/gpu/drm/drm 0x02376f1a drm_mode_create_tv_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0300283e drm_edid_to_eld +EXPORT_SYMBOL drivers/gpu/drm/drm 0x034e7714 drm_atomic_set_mode_prop_for_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x050f66d2 drm_mode_connector_list_update +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0516f270 drm_gem_create_mmap_offset_size +EXPORT_SYMBOL drivers/gpu/drm/drm 0x06cec968 drm_put_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0x07972893 drm_mode_parse_command_line_for_connector +EXPORT_SYMBOL drivers/gpu/drm/drm 0x07a42cec drm_probe_ddc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0801b5e5 drm_encoder_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0a609ee1 drm_legacy_mmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0a72f765 drm_clflush_virt_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0a81d949 drm_connector_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0ae4b94c drm_ht_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0b8f5ce7 drm_mode_create_dirty_info_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0bed81ba drm_mode_config_reset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0c21acfc drm_handle_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0c8f775b drm_agp_acquire +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0cc9ee62 drm_agp_bind +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0d55b76e drm_agp_info +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0e2a54fc drm_mode_group_init_legacy_group +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0fb41cde drm_gtf_mode_complex +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0fccafb1 drm_global_item_unref +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 0x10816d00 drm_prime_gem_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x10f8031b drm_hdmi_vendor_infoframe_from_display_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x115ad7ec drm_bridge_post_disable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x11b56424 drm_mode_validate_basic +EXPORT_SYMBOL drivers/gpu/drm/drm 0x11fd21dc drm_bridge_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0x12f6547d drm_atomic_state_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1363f4b6 drm_hdmi_avi_infoframe_from_display_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x13c02b16 drm_legacy_getsarea +EXPORT_SYMBOL drivers/gpu/drm/drm 0x14a9020d drm_gtf_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x14a9a178 drm_get_format_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x161763fd drm_vblank_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0x182f619a drm_modeset_lock_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x190156c4 drm_reinit_primary_mode_group +EXPORT_SYMBOL drivers/gpu/drm/drm 0x194eadaa drm_edid_header_is_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x199f512b drm_atomic_state_default_clear +EXPORT_SYMBOL drivers/gpu/drm/drm 0x19ff0dbe drm_i2c_encoder_save +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1a22d3f7 drm_vma_offset_lookup_locked +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1a2afeb9 drm_mode_copy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1a509c95 drm_mode_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1a546ddd drm_mm_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1a770ac3 drm_detect_hdmi_monitor +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1a80f83d drm_gem_vm_close +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1b242cf7 drm_vma_offset_lookup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1cf039f1 drm_bridge_attach +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1dbbab51 drm_vma_node_is_allowed +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1dd71f7a drm_err +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1ed5fdc6 drm_mode_hsync +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1fc3ee10 drm_atomic_get_plane_state +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1ff19b1c drm_crtc_vblank_off +EXPORT_SYMBOL drivers/gpu/drm/drm 0x20645642 drm_debug +EXPORT_SYMBOL drivers/gpu/drm/drm 0x21386e57 drm_mode_find_dmt +EXPORT_SYMBOL drivers/gpu/drm/drm 0x219d2cc1 drm_ati_pcigart_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x21f97f37 drm_mode_connector_set_tile_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x221c3a68 drm_atomic_set_mode_for_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x228fc509 drm_framebuffer_unreference +EXPORT_SYMBOL drivers/gpu/drm/drm 0x22acaf62 drm_get_cea_aspect_ratio +EXPORT_SYMBOL drivers/gpu/drm/drm 0x22f5de28 drm_gem_handle_delete +EXPORT_SYMBOL drivers/gpu/drm/drm 0x23fd9baf drm_connector_unplug_all +EXPORT_SYMBOL drivers/gpu/drm/drm 0x241f93ba drm_i2c_encoder_dpms +EXPORT_SYMBOL drivers/gpu/drm/drm 0x24d82c29 drm_add_edid_modes +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2563d3c1 drm_irq_uninstall +EXPORT_SYMBOL drivers/gpu/drm/drm 0x274a03cd drm_platform_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x27ede835 drm_mode_validate_size +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2857abeb drm_debugfs_remove_files +EXPORT_SYMBOL drivers/gpu/drm/drm 0x292cb273 drm_dev_unref +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2979fe20 drm_mm_dump_table +EXPORT_SYMBOL drivers/gpu/drm/drm 0x29a010e6 drm_mm_insert_node_in_range_generic +EXPORT_SYMBOL drivers/gpu/drm/drm 0x29ceee1b drm_gem_get_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2ab6b77e drm_bridge_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2c82faab drm_crtc_vblank_on +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2d50570f drm_rect_calc_hscale +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2e7a4300 drm_rgb_quant_range_selectable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2ea54036 drm_property_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x301409d0 drm_atomic_connector_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x30418311 drm_debugfs_create_files +EXPORT_SYMBOL drivers/gpu/drm/drm 0x32ac4ca1 drm_property_create_object +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3406fa91 drm_flip_work_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x346127a7 drm_global_item_ref +EXPORT_SYMBOL drivers/gpu/drm/drm 0x37117ca0 drm_connector_register +EXPORT_SYMBOL drivers/gpu/drm/drm 0x37b8cff7 drm_vblank_on +EXPORT_SYMBOL drivers/gpu/drm/drm 0x37ebe743 drm_mm_replace_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0x38a4f7ae drm_format_num_planes +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3a29e197 drm_gem_mmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3ac1fef9 drm_mode_legacy_fb_format +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3b97ec8e drm_legacy_addmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3b9d009a drm_format_plane_cpp +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3c0bb702 drm_atomic_legacy_backoff +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3e973ab6 drm_bridge_mode_fixup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3eb37b9d drm_ht_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3eda944f drm_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3fe64808 drm_vblank_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0x41c0ff29 drm_mode_connector_attach_encoder +EXPORT_SYMBOL drivers/gpu/drm/drm 0x421724aa drm_atomic_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x44ce2725 drm_sysfs_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0x44d29bcb drm_cvt_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x456e597a drm_unplug_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4571b5bd drm_modeset_backoff +EXPORT_SYMBOL drivers/gpu/drm/drm 0x457bfe2a drm_av_sync_delay +EXPORT_SYMBOL drivers/gpu/drm/drm 0x468ed0f7 drm_dev_register +EXPORT_SYMBOL drivers/gpu/drm/drm 0x46f9edb3 drm_vma_node_revoke +EXPORT_SYMBOL drivers/gpu/drm/drm 0x47543f41 drm_mode_duplicate +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4807e07e drm_set_preferred_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x490cfb78 drm_mm_reserve_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0x49d0ff0f drm_send_vblank_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4a00e4e8 drm_i2c_encoder_restore +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4af1496c drm_framebuffer_lookup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4ba4df3e drm_vma_offset_manager_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4c511235 drm_edid_is_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4d47ae85 drm_atomic_async_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4d95d96f drm_pci_exit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4ea1f5a2 drm_gem_object_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4efdf951 drm_gem_handle_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4f359d46 drm_atomic_set_fb_for_plane +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4fb4ada6 drm_bridge_pre_enable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x50e28c07 drm_edid_to_sad +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5155c8d2 drm_gem_vm_open +EXPORT_SYMBOL drivers/gpu/drm/drm 0x524529ac drm_framebuffer_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x526f6f71 drm_rect_calc_hscale_relaxed +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5531e99a drm_pci_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x561e6280 drm_agp_bind_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0x56a901f4 drm_i2c_encoder_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x578b0d31 drm_dev_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x57b6efe3 drm_ioctl_flags +EXPORT_SYMBOL drivers/gpu/drm/drm 0x58acf66d drm_mode_config_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x59ef50f0 drm_edid_block_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5a78772c drm_mode_create_suggested_offset_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5b01888f drm_legacy_rmmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5b47fa89 drm_panel_attach +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5b718c28 drm_pci_set_busid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5d02bf1d drm_gem_object_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5e863cbd drm_bridge_disable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5ff4d25d drm_agp_enable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6005412c drm_legacy_ioremapfree +EXPORT_SYMBOL drivers/gpu/drm/drm 0x62089513 drm_vblank_off +EXPORT_SYMBOL drivers/gpu/drm/drm 0x629c05e1 drm_clflush_sg +EXPORT_SYMBOL drivers/gpu/drm/drm 0x63d738e4 drm_object_property_set_value +EXPORT_SYMBOL drivers/gpu/drm/drm 0x64b8e878 drm_plane_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x64e4bc47 drm_flip_work_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x65393de0 drm_property_create_signed_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0x66a913c3 drm_agp_unbind +EXPORT_SYMBOL drivers/gpu/drm/drm 0x66aae30d drm_mode_get_tile_group +EXPORT_SYMBOL drivers/gpu/drm/drm 0x66b2e3bc drm_vblank_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x67633846 drm_mm_insert_node_generic +EXPORT_SYMBOL drivers/gpu/drm/drm 0x68196ae1 drm_modeset_backoff_interruptible +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6900d335 drm_rect_clip_scaled +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6907a32e drm_atomic_check_only +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6a241aa8 drm_mode_set_config_internal +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6a87cca0 drm_mode_plane_set_obj_prop +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6b194521 drm_panel_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6b97e16a drm_agp_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6bdf155c drm_vma_offset_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6e30ba8e drm_rect_rotate_inv +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6e4cfb56 drm_modeset_unlock_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6ef18657 drm_warn_on_modeset_not_all_locked +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6fdde20b drm_vma_node_allow +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6fef5d29 drm_mode_config_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x70626b5d drm_atomic_state_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x706d3106 drm_vma_offset_manager_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x712fe3ef drm_mode_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7197c9d3 drm_object_property_get_value +EXPORT_SYMBOL drivers/gpu/drm/drm 0x72c97128 drm_gem_put_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7325db10 drm_property_lookup_blob +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7399a75d drm_noop +EXPORT_SYMBOL drivers/gpu/drm/drm 0x744ad773 drm_panel_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x745705c9 drm_gem_create_mmap_offset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x768054f2 drm_irq_install +EXPORT_SYMBOL drivers/gpu/drm/drm 0x784c62a9 drm_crtc_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x78fb39f5 drm_open +EXPORT_SYMBOL drivers/gpu/drm/drm 0x79f08d1f drm_pci_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7bcf2f07 drm_gem_free_mmap_offset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7d89a39b __drm_modeset_lock_all +EXPORT_SYMBOL drivers/gpu/drm/drm 0x80476bb2 drm_atomic_connectors_for_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x81519c1a drm_mode_connector_set_path_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x829ac422 drm_mode_vrefresh +EXPORT_SYMBOL drivers/gpu/drm/drm 0x82c2998f drm_flip_work_allocate_task +EXPORT_SYMBOL drivers/gpu/drm/drm 0x830f8128 drm_get_pci_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8494fd49 drm_atomic_state_default_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x84d24d50 drm_pci_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x85199017 drm_gem_private_object_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x871ab41a drm_rect_intersect +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8732f043 drm_gem_prime_handle_to_fd +EXPORT_SYMBOL drivers/gpu/drm/drm 0x879c7463 drm_framebuffer_unregister_private +EXPORT_SYMBOL drivers/gpu/drm/drm 0x883d5c1a drm_agp_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x89c5b49d drm_gem_mmap_obj +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8bb7d085 drm_legacy_rmmap_locked +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8be23011 drm_vblank_count +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8ca1ac8b drm_atomic_plane_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8dda1e78 drm_mode_create_scaling_mode_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8de13715 drm_format_vert_chroma_subsampling +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8e27c980 drm_crtc_get_hv_timing +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8e5ac93a drm_mode_set_crtcinfo +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8eff9111 drm_ht_find_item +EXPORT_SYMBOL drivers/gpu/drm/drm 0x908b5e0c drm_property_create_blob +EXPORT_SYMBOL drivers/gpu/drm/drm 0x90fa1337 drm_gem_dmabuf_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x91fec1cc drm_rect_calc_vscale +EXPORT_SYMBOL drivers/gpu/drm/drm 0x92408488 drm_mm_scan_add_block +EXPORT_SYMBOL drivers/gpu/drm/drm 0x925b74ef drm_connector_unregister +EXPORT_SYMBOL drivers/gpu/drm/drm 0x926a3b84 drm_vblank_pre_modeset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x926e786b drm_legacy_ioremap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9329b202 drm_vblank_count_and_time +EXPORT_SYMBOL drivers/gpu/drm/drm 0x93d22c06 drm_prime_pages_to_sg +EXPORT_SYMBOL drivers/gpu/drm/drm 0x94441c56 drm_add_modes_noedid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x971aa505 drm_crtc_init_with_planes +EXPORT_SYMBOL drivers/gpu/drm/drm 0x97323f86 drm_legacy_ioremap_wc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x979bce65 drm_gem_prime_fd_to_handle +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9972db48 drm_rect_calc_vscale_relaxed +EXPORT_SYMBOL drivers/gpu/drm/drm 0x99ba6ce5 drm_legacy_addbufs_agp +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9a3b4bac drm_i2c_encoder_mode_set +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9a497665 drm_atomic_add_affected_planes +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9a6adf58 drm_legacy_idlelock_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9d0fdc71 drm_flip_work_queue_task +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9d62ce3b drm_universal_plane_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9e300b6b drm_modeset_lock_interruptible +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9eafb687 drm_i2c_encoder_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa0b33904 drm_modeset_lock_all_crtcs +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa11f7c0b drm_dev_ref +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa1bc2813 drm_modeset_acquire_fini +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa1c9c5da drm_display_info_set_bus_formats +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa2048668 drm_vblank_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa28078b2 drm_edid_duplicate +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa291adae drm_poll +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa2bc2fe2 drm_mode_equal_no_clocks_no_stereo +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa375d6ca drm_framebuffer_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa4466414 drm_mm_remove_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa4b73de0 drm_match_cea_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa4de7adb drm_plane_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa59c0ba3 drm_property_reference_blob +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa95d6e95 drm_plane_force_disable +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa96acfcb drm_rect_debug_print +EXPORT_SYMBOL drivers/gpu/drm/drm 0xaac1a79b drm_legacy_addbufs_pci +EXPORT_SYMBOL drivers/gpu/drm/drm 0xabc1671b drm_atomic_get_connector_state +EXPORT_SYMBOL drivers/gpu/drm/drm 0xacb1ec99 drm_panel_detach +EXPORT_SYMBOL drivers/gpu/drm/drm 0xaed0eb69 drm_clflush_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0xaf651754 drm_object_attach_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb0296734 drm_encoder_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb053adda drm_rect_rotate +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb097e5b8 drm_modeset_unlock +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb13ab6f7 drm_modeset_unlock_all +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb16e6798 drm_atomic_crtc_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb5dd0648 drm_flip_work_queue +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb7414ded drm_gem_prime_import +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb86e15e1 drm_mode_equal +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbb917206 drm_select_eld +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbbe633d9 drm_plane_from_index +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbbf31616 drm_connector_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbf26f9a0 drm_modeset_acquire_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbfb09169 drm_bridge_mode_set +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc1b32e8b drm_atomic_add_affected_connectors +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc256d52d drm_dev_unregister +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc29c6b26 drm_mode_debug_printmodeline +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc360e7e2 drm_ut_debug_printk +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc3eb0489 drm_modeset_legacy_acquire_ctx +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc460b5fe drm_agp_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc494f69a drm_i2c_encoder_prepare +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc4f16b1c drm_mode_set_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc4f398cb drm_gem_dumb_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc5f02a0b drm_property_create_bitmask +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc6f104ee drm_master_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc825656b drm_crtc_index +EXPORT_SYMBOL drivers/gpu/drm/drm 0xca38c2c1 drm_i2c_encoder_mode_fixup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xca45efbc drm_format_horz_chroma_subsampling +EXPORT_SYMBOL drivers/gpu/drm/drm 0xca5c7790 drm_mm_init_scan_with_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcbd8e9ee drm_dev_set_unique +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcc744586 drm_read +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcd0fc417 drm_ht_just_insert_please +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcd642968 drm_connector_index +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcf760d2d drm_property_create_bool +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd15162f2 drm_crtc_check_viewport +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd18f53d3 drm_vma_offset_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd196ad19 drm_framebuffer_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd1d88088 drm_gem_object_lookup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd2335101 drm_fb_get_bpp_depth +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd42b4b63 drm_property_create_enum +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd46f8f98 drm_crtc_send_vblank_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd477d597 drm_get_edid +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd4a0c48d drm_calc_vbltimestamp_from_scanoutpos +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd4c20777 drm_pcie_get_speed_cap_mask +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd52b1d11 drm_mm_init_scan +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd555f81a drm_panel_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd70c8470 drm_mm_debug_table +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd98c3ff3 drm_platform_set_busid +EXPORT_SYMBOL drivers/gpu/drm/drm 0xda03f254 drm_i2c_encoder_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0xda596a5e drm_atomic_set_crtc_for_connector +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdb9ada9f drm_gem_prime_export +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdbb4ef9c drm_atomic_state_clear +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdbb5a9f5 drm_ht_remove_item +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdc566443 drm_vblank_post_modeset +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdc65c166 drm_mode_connector_update_edid_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdc6cdf7d drm_atomic_get_crtc_state +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdd150721 drm_mm_takedown +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdd45e08f drm_crtc_vblank_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0xde3a7810 drm_plane_index +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdf666902 drm_rotation_simplify +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdf759617 drm_ioctl +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe038d5cf drm_property_add_enum +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe0b1d271 drm_master_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe20ed948 drm_gem_object_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe2e83300 drm_bridge_enable +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe396be37 drm_mode_crtc_set_gamma_size +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe5081a23 drm_mode_object_find +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe51d89b5 drm_mm_clean +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe7197773 drm_ht_insert_item +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe7c25ab8 drm_mode_create_dvi_i_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe7de3084 drm_calc_timestamping_constants +EXPORT_SYMBOL drivers/gpu/drm/drm 0xec4d8f4c drm_crtc_vblank_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0xeddb448a drm_modeset_lock_all +EXPORT_SYMBOL drivers/gpu/drm/drm 0xee10c66b drm_mode_create_rotation_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xefe3137f drm_i2c_encoder_detect +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf0207aad drm_mode_create_aspect_ratio_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf0c187e1 drm_property_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf1421d13 drm_mode_sort +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf1f4e7e2 drm_flip_work_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf3d4a3d8 drm_mode_probed_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf40649ab drm_framebuffer_reference +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf65d23da drm_crtc_handle_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf660e150 drm_mode_prune_invalid +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf6b8eade drm_crtc_wait_one_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf79b486a drm_prime_sg_to_page_addr_arrays +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf7ec65bf drm_atomic_set_crtc_for_plane +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf8beba50 drm_crtc_vblank_count +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf9c75570 drm_mode_create_tile_group +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf9d24a7f drm_atomic_state_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfa734d1b drm_ati_pcigart_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfbb2b03c drm_modeset_drop_locks +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfcf54a4f drm_mm_scan_remove_block +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfd063935 drm_edid_to_speaker_allocation +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfd0b85e2 drm_wait_one_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfd0f031b drm_legacy_idlelock_take +EXPORT_SYMBOL drivers/gpu/drm/drm 0xff026b33 drm_crtc_vblank_reset +EXPORT_SYMBOL drivers/gpu/drm/drm 0xffc6c87a drm_detect_monitor_audio +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x098e47d2 drm_dp_link_train_clock_recovery_delay +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x09ad608a drm_atomic_helper_connector_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0b21f08b drm_atomic_helper_crtc_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0b8da91b drm_atomic_helper_plane_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0bb6ae81 drm_kms_helper_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0f96ec70 drm_dp_clock_recovery_ok +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x13520cd9 drm_atomic_helper_commit +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x13bcfa1b drm_dp_mst_topology_mgr_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x13fae1c0 drm_atomic_helper_plane_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x15da335b drm_fb_helper_fill_var +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x163251c8 drm_dp_link_train_channel_eq_delay +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x16ef8e50 drm_kms_helper_poll_disable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x19fe8184 drm_atomic_helper_crtc_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x1b0f45e9 drm_plane_helper_update +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x1b581acd drm_plane_helper_disable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x25876d47 drm_atomic_helper_disable_plane +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x278e2c57 drm_fb_helper_fill_fix +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2bc37fa4 drm_atomic_helper_cleanup_planes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x31ec6c2e drm_atomic_helper_connector_dpms +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x32402bd0 drm_atomic_helper_crtc_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x34871adf drm_dp_channel_eq_ok +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x370c6346 drm_dp_mst_deallocate_vcpi +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x38757226 drm_dp_check_act_status +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3956a600 drm_fb_helper_blank +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3963d639 drm_kms_helper_poll_enable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3e343a56 __drm_atomic_helper_connector_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3fea4dfa drm_helper_encoder_in_use +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x40b5bea2 drm_atomic_helper_update_legacy_modeset_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x40d6feb1 drm_fb_helper_check_var +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x416ecd72 drm_atomic_helper_update_plane +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4203124a drm_fb_helper_setcmap +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x44bb4af5 drm_atomic_helper_connector_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x47e24b3e drm_crtc_helper_set_config +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4bdf3fc4 drm_dp_link_configure +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4c246474 drm_dp_mst_topology_mgr_suspend +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4d76032c __drm_atomic_helper_crtc_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4d99aa2d drm_dp_mst_get_vcpi_slots +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4fee02a9 drm_dp_link_power_down +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x50f596c5 drm_atomic_helper_plane_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x51a968b3 drm_has_preferred_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x53a65edf drm_atomic_helper_wait_for_vblanks +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5671e704 drm_dp_link_power_up +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x572e1197 __drm_atomic_helper_crtc_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x579082ca drm_helper_crtc_in_use +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x59f9f010 drm_primary_helper_funcs +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5a9223e0 drm_dp_link_probe +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5b24524e drm_atomic_helper_page_flip +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x66d01d54 drm_dp_mst_get_edid +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6a2c3abe drm_primary_helper_disable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6ad9e71e drm_dp_mst_reset_vcpi_slots +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6befe0b9 drm_helper_probe_single_connector_modes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6d32ad6b drm_dp_mst_detect_port +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x70e8c1ee drm_fb_helper_set_par +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x711a004a drm_dp_link_rate_to_bw_code +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7206c6ca drm_atomic_helper_commit_planes_on_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x72591a22 drm_helper_hpd_irq_event +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7c2a0ca0 drm_dp_dpcd_write +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7cea7019 drm_atomic_helper_commit_modeset_enables +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x80c42c46 drm_dp_mst_topology_mgr_resume +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x816068cc drm_primary_helper_update +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8175bdc2 drm_primary_helper_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8282043f drm_atomic_helper_prepare_planes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x84e924ba drm_dp_get_adjust_request_pre_emphasis +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8538c4c2 __drm_atomic_helper_connector_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8bf9f162 drm_atomic_helper_swap_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x921934ee drm_dp_update_payload_part2 +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x929b720e drm_dp_mst_dump_topology +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9467a9cf drm_fb_helper_initial_config +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x99d0e0b2 drm_atomic_helper_commit_planes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9b13d2c5 drm_fb_helper_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9e091b18 drm_dp_dpcd_read +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9eba16f3 drm_dp_mst_topology_mgr_set_mst +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9f122e4b drm_dp_aux_unregister +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa0f3d845 drm_dp_aux_register +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa44b5bb8 drm_atomic_helper_check +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa47826e4 drm_dp_calc_pbn_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa485aa27 drm_dp_mst_topology_mgr_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa77858bb drm_dp_get_adjust_request_voltage +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa792a5be drm_dp_find_vcpi_slots +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa7bdf511 drm_fb_helper_prepare +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa800def2 drm_helper_connector_dpms +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa8d6809d drm_dp_bw_code_to_link_rate +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xab1f0a09 drm_atomic_helper_plane_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xab2bd5e3 drm_fb_helper_debug_leave +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xab5958b1 drm_fb_helper_restore_fbdev_mode_unlocked +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb2cc1dcc drm_crtc_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb3034ff8 drm_atomic_helper_connector_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb3ab66b5 drm_helper_mode_fill_fb_struct +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb8b2ea14 drm_dp_mst_hpd_irq +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb9a29c22 drm_dp_update_payload_part1 +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xba800469 drm_atomic_helper_commit_modeset_disables +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xbba0389d __drm_atomic_helper_plane_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xbbdcd7c9 drm_atomic_helper_check_planes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc1c5fee8 drm_fb_helper_fini +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc2ba6323 drm_atomic_helper_crtc_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc78eae6e drm_fb_helper_debug_enter +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc8b09af1 drm_crtc_helper_set_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd11c64b4 __drm_atomic_helper_plane_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd1213dfd drm_plane_helper_check_update +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd32e442d drm_helper_resume_force_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd44a25f9 drm_dp_mst_allocate_vcpi +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd46709a1 drm_helper_move_panel_connectors_to_head +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd552eca3 drm_fb_helper_remove_one_connector +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd7fea299 drm_fb_helper_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd89a53e5 drm_helper_disable_unused_functions +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xdb22fc86 drm_fb_helper_pan_display +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xdbb66355 drm_atomic_helper_check_modeset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe85e8f62 drm_dp_dpcd_read_link_status +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe9d66bcd drm_atomic_helper_set_config +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xeae6ee62 drm_fb_helper_single_add_all_connectors +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xeb39deaa drm_helper_crtc_mode_set +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xec37d65f drm_kms_helper_poll_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xefd442bd drm_helper_crtc_mode_set_base +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf14c9017 drm_kms_helper_poll_fini +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf195e061 drm_fb_helper_add_one_connector +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf8081c77 drm_pick_cmdline_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xfd2f4f9b drm_helper_probe_single_connector_modes_nomerge +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xfed77625 drm_atomic_helper_connector_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x013e2079 ttm_bo_swapout_all +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x0576c45f ttm_mem_io_free +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x0728e9ed ttm_object_device_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x094b4330 ttm_bo_mmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x0a076856 ttm_mem_global_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x0bab7f47 ttm_read_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x0f4d8d97 ttm_bo_del_sub_from_lru +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x132b05be ttm_round_pot +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x1713481d ttm_bo_lock_delayed_workqueue +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x1940e4cd ttm_write_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x1c86239c ttm_bo_mem_put +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x200e40fa ttm_bo_move_accel_cleanup +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x21dc6cfe ttm_bo_unlock_delayed_workqueue +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x22ec80fe ttm_vt_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x24765c33 ttm_read_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x266d8a60 ttm_io_prot +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x2b54aa9a ttm_object_file_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x2b9ad620 ttm_agp_tt_create +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x30026cd0 ttm_bo_mem_space +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x324f6677 ttm_agp_tt_unpopulate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x33a21ea0 ttm_bo_synccpu_write_grab +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x33a92db6 ttm_bo_kmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x34b71843 ttm_bo_validate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x353e7d89 ttm_mem_io_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x3d43e521 ttm_pool_unpopulate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x42acd434 ttm_agp_tt_populate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x44f25f00 ttm_dma_tt_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x485a5bc0 ttm_ref_object_add +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x4b3c1fa0 ttm_dma_tt_fini +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x4cf3075f ttm_bo_clean_mm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x4e50eecd ttm_tt_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x4e7ef858 ttm_pool_populate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x50d141bc ttm_bo_wait +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x5c6b66f9 ttm_fbdev_mmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x5cf59609 ttm_bo_global_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x5d33f7d0 ttm_bo_move_ttm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x67b1d568 ttm_bo_global_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x6c484424 ttm_tt_bind +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x6c8dc6bf ttm_vt_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x6e875de9 ttm_lock_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x7776ec96 ttm_bo_evict_mm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x7bc3d413 ttm_bo_init_mm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x80c1965a ttm_eu_fence_buffer_objects +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x80d86f0e ttm_object_device_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x82fd5064 ttm_bo_synccpu_write_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x836d8fd0 ttm_suspend_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x880a15ad ttm_base_object_lookup +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x8cd808fc ttm_eu_reserve_buffers +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x946d9ea3 ttm_write_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x94894449 ttm_base_object_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x96c54405 ttm_page_alloc_debugfs +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x998e45c0 ttm_ref_object_base_unref +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x9b3af79c ttm_mem_global_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x9d2173d7 ttm_mem_global_alloc +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x9f2736cb ttm_bo_kunmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xa8cbb185 ttm_bo_acc_size +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xabedefc2 ttm_tt_set_placement_caching +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xad33fe35 ttm_bo_unmap_virtual +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xae87b60e ttm_bo_move_memcpy +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xb58484f4 ttm_mem_io_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xb5be7eb2 ttm_bo_device_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xb65b0424 ttm_mem_io_reserve +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xc9ba551a ttm_tt_fini +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xccb87283 ttm_prime_object_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xce6e43a8 ttm_base_object_lookup_for_ref +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xcf49f835 ttm_suspend_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xcf67c299 ttm_ref_object_exists +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xd11a11ec ttm_bo_add_to_lru +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xd3d56cef ttm_bo_manager_func +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xd5c35186 ttm_bo_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xd8edb115 ttm_base_object_unref +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xd9b3e857 ttm_eu_backoff_reservation +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xe1f3469e ttm_mem_global_free +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xe70bf336 ttm_bo_create +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xeb95b93f ttm_bo_device_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xf38d55dd ttm_bo_dma_acc_size +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xf4c9c3d0 ttm_bo_unref +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xfbc2c5ec ttm_object_file_release +EXPORT_SYMBOL drivers/hv/hv_vmbus 0x3fc43db3 vmbus_sendpacket +EXPORT_SYMBOL drivers/hv/hv_vmbus 0x6134c815 vmbus_sendpacket_ctl +EXPORT_SYMBOL drivers/hv/hv_vmbus 0x95c79275 vmbus_recvpacket +EXPORT_SYMBOL drivers/hwmon/hwmon-vid 0x0903c239 vid_from_reg +EXPORT_SYMBOL drivers/hwmon/hwmon-vid 0xef1c781c vid_which_vrm +EXPORT_SYMBOL drivers/hwmon/sch56xx-common 0x0e2a6864 sch56xx_read_virtual_reg +EXPORT_SYMBOL drivers/hwmon/sch56xx-common 0x0f5877d4 sch56xx_read_virtual_reg16 +EXPORT_SYMBOL drivers/hwmon/sch56xx-common 0x34257f35 sch56xx_watchdog_unregister +EXPORT_SYMBOL drivers/hwmon/sch56xx-common 0xd62deb2d sch56xx_watchdog_register +EXPORT_SYMBOL drivers/hwmon/sch56xx-common 0xe5022f95 sch56xx_read_virtual_reg12 +EXPORT_SYMBOL drivers/hwmon/sch56xx-common 0xed1d2a08 sch56xx_write_virtual_reg +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-bit 0x8b7f9c67 i2c_bit_add_bus +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-bit 0xd2013d52 i2c_bit_add_numbered_bus +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-bit 0xeef8d834 i2c_bit_algo +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-pca 0x089e9afd i2c_pca_add_numbered_bus +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-pca 0x50eedeeb i2c_pca_add_bus +EXPORT_SYMBOL drivers/i2c/busses/i2c-amd756 0x63866d95 amd756_smbus +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x14d0c984 mma9551_read_config_words +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x17b01277 mma9551_read_status_word +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x17eeb761 mma9551_read_status_words +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x3af330ef mma9551_read_config_byte +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x3f2a0d09 mma9551_set_power_state +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x41ef446c mma9551_read_accel_scale +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x45209dc4 mma9551_read_version +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x519be550 mma9551_write_config_word +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x5f8fa623 mma9551_gpio_config +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x710479f2 mma9551_write_config_byte +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x7fcd4a30 mma9551_write_config_words +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x86c7f84a mma9551_set_device_state +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x8925c047 mma9551_update_config_bits +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xbcd7fe96 mma9551_sleep +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xc15cb9b8 mma9551_app_reset +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xd21d7ea0 mma9551_read_status_byte +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xe50a845c mma9551_read_accel_chan +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xf13ba038 mma9551_read_config_word +EXPORT_SYMBOL drivers/iio/accel/st_accel 0x6b4ca8d2 st_accel_common_probe +EXPORT_SYMBOL drivers/iio/accel/st_accel 0x93b3e25b st_accel_common_remove +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x0e74d635 hid_sensor_read_raw_hyst_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x999204c5 hid_sensor_parse_common_attributes +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0xa75d15a8 hid_sensor_write_samp_freq_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0xaf26eaf6 hid_sensor_write_raw_hyst_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0xba63fbcb hid_sensor_read_samp_freq_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0xbf35d02d hid_sensor_read_poll_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0xc83a92bf hid_sensor_format_scale +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-trigger 0x485a66cd hid_sensor_remove_trigger +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-trigger 0x81aadfef hid_sensor_power_state +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-trigger 0xa0c9ae36 hid_sensor_setup_trigger +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-trigger 0xaa1cedca hid_sensor_pm_ops +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0x74007163 ssp_enable_sensor +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0x7b3ee398 ssp_disable_sensor +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0xb86a5b85 ssp_change_delay +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0xc5f84aac ssp_register_consumer +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0xe8ecb89d ssp_get_sensor_delay +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/ssp_iio 0x75451131 ssp_common_buffer_postenable +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/ssp_iio 0xe3f4b9d2 ssp_common_process_data +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/ssp_iio 0xf85e2c38 ssp_common_buffer_postdisable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x044612d6 st_sensors_check_device_support +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x074d7047 st_sensors_trigger_handler +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x1dbf583a st_sensors_set_dataready_irq +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x28767eaf st_sensors_sysfs_scale_avail +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x2ea858e9 st_sensors_init_sensor +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x32abef71 st_sensors_set_enable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x33665c3c st_sensors_set_odr +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x34c76603 st_sensors_set_axis_enable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x4c734d65 st_sensors_read_info_raw +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x6656f25c st_sensors_set_fullscale_by_gain +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x740e0d48 st_sensors_get_buffer_element +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x94d37e22 st_sensors_power_disable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xd633d112 st_sensors_sysfs_sampling_frequency_avail +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xe8ab968e st_sensors_deallocate_trigger +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xef468e2d st_sensors_allocate_trigger +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xf7da0388 st_sensors_power_enable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors_i2c 0x4def8e8f st_sensors_i2c_configure +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors_spi 0xa0b2fcf9 st_sensors_spi_configure +EXPORT_SYMBOL drivers/iio/gyro/st_gyro 0x2ca3e0d7 st_gyro_common_remove +EXPORT_SYMBOL drivers/iio/gyro/st_gyro 0x39afc267 st_gyro_common_probe +EXPORT_SYMBOL drivers/iio/imu/adis_lib 0x8b17f470 adis_enable_irq +EXPORT_SYMBOL drivers/iio/imu/adis_lib 0x8ce15682 adis_debugfs_reg_access +EXPORT_SYMBOL drivers/iio/industrialio 0x14d16aa9 iio_read_const_attr +EXPORT_SYMBOL drivers/iio/industrialio 0x263d6c2a iio_trigger_register +EXPORT_SYMBOL drivers/iio/industrialio 0x2d6bcdcb iio_trigger_generic_data_rdy_poll +EXPORT_SYMBOL drivers/iio/industrialio 0x4ea766c6 iio_trigger_free +EXPORT_SYMBOL drivers/iio/industrialio 0x4f015f5e iio_trigger_poll +EXPORT_SYMBOL drivers/iio/industrialio 0x640cdb9b iio_device_unregister +EXPORT_SYMBOL drivers/iio/industrialio 0x775a1ea4 iio_buffer_init +EXPORT_SYMBOL drivers/iio/industrialio 0x829a1cbd iio_trigger_notify_done +EXPORT_SYMBOL drivers/iio/industrialio 0x8d149aa4 iio_trigger_poll_chained +EXPORT_SYMBOL drivers/iio/industrialio 0x9a2b77be iio_device_alloc +EXPORT_SYMBOL drivers/iio/industrialio 0xa2b09c2a iio_device_free +EXPORT_SYMBOL drivers/iio/industrialio 0xa705c57e iio_trigger_alloc +EXPORT_SYMBOL drivers/iio/industrialio 0xa82ca811 iio_triggered_buffer_predisable +EXPORT_SYMBOL drivers/iio/industrialio 0xba26ccd6 iio_push_event +EXPORT_SYMBOL drivers/iio/industrialio 0xc742f9bd iio_bus_type +EXPORT_SYMBOL drivers/iio/industrialio 0xdd4751d6 iio_device_register +EXPORT_SYMBOL drivers/iio/industrialio 0xdf76bbeb iio_pollfunc_store_time +EXPORT_SYMBOL drivers/iio/industrialio 0xe052e292 iio_triggered_buffer_postenable +EXPORT_SYMBOL drivers/iio/industrialio 0xf8383e5e iio_trigger_unregister +EXPORT_SYMBOL drivers/iio/industrialio-triggered-buffer 0x7b0cb506 iio_triggered_buffer_cleanup +EXPORT_SYMBOL drivers/iio/industrialio-triggered-buffer 0xe5c5275d iio_triggered_buffer_setup +EXPORT_SYMBOL drivers/iio/kfifo_buf 0x65d13988 devm_iio_kfifo_free +EXPORT_SYMBOL drivers/iio/kfifo_buf 0x9187a079 devm_iio_kfifo_allocate +EXPORT_SYMBOL drivers/iio/kfifo_buf 0x99854c48 iio_kfifo_free +EXPORT_SYMBOL drivers/iio/kfifo_buf 0xdcfa3d40 iio_kfifo_allocate +EXPORT_SYMBOL drivers/iio/magnetometer/st_magn 0x505665cc st_magn_common_probe +EXPORT_SYMBOL drivers/iio/magnetometer/st_magn 0x6dce6310 st_magn_common_remove +EXPORT_SYMBOL drivers/iio/pressure/ms5611_core 0x7e2f81a7 ms5611_probe +EXPORT_SYMBOL drivers/iio/pressure/st_pressure 0x8c801061 st_press_common_probe +EXPORT_SYMBOL drivers/iio/pressure/st_pressure 0xc13cccd5 st_press_common_remove +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x049ace30 rdma_addr_find_smac_by_sgid +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x04b8b6d7 rdma_translate_ip +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x084d09d7 rdma_copy_addr +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x1c3c0ad3 rdma_addr_size +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x1edc4064 rdma_addr_unregister_client +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x273f4cca rdma_addr_cancel +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x9846b88f rdma_resolve_ip +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x9d9cabc5 rdma_addr_register_client +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0xf029eb25 rdma_addr_find_dmac_by_grh +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x052791bf ib_send_cm_drep +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x061952b5 ib_send_cm_sidr_rep +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x2ef3937c ib_send_cm_req +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x36fb9ad6 ib_send_cm_rep +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x575ec3ea cm_class +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x5cd27d96 ib_cm_listen +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x62999fe2 ib_send_cm_rej +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x65ff6804 ib_destroy_cm_id +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x6d54384d ib_send_cm_dreq +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x807a8318 ib_send_cm_mra +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x83c27118 ib_cm_init_qp_attr +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x8609903a ib_send_cm_lap +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x9fca4afb ib_send_cm_sidr_req +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xb4b3ec03 ib_send_cm_apr +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xced9ac11 ib_send_cm_rtu +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xd6597d71 ib_create_cm_id +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xd9f3e177 ib_cm_notify +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x016682fb ib_reg_phys_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x06539c7f ib_create_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0997fc28 ib_detach_mcast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0c1b9ac1 ib_ud_header_unpack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0f51828c ib_alloc_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x107c6923 ibnl_unicast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x12bd1fb6 ib_unregister_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x18e51d8d ib_register_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1b3ce342 ib_find_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1b42ab96 ib_get_client_data +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1e491a04 ib_unmap_fmr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1e4fb737 ib_umem_release +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2351651d ibnl_multicast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x245eb41c ib_get_cached_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2479f6b5 ib_alloc_mw +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x253d74b2 ib_query_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x264107b3 ib_fmr_pool_unmap +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2e6eeb7b ib_destroy_flow +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2ed6e386 ib_ud_header_pack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2f64ba19 ib_unregister_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x33652dcf ib_create_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x346cd362 ib_create_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x346ee8c2 ib_destroy_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x3738f710 ib_alloc_pd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x3c99c7a3 ib_dealloc_pd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x3da6cd9c ib_umem_page_count +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x3e970180 ib_create_flow +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x40874e1a ib_dealloc_mw +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x41e9c60b ib_create_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x425b7012 ib_umem_copy_from +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x4883a7ca ib_query_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x4933141c ib_set_client_data +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x4a3dd16e ib_open_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x50dbc447 ib_flush_fmr_pool +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x520b2638 ib_pack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x54c9213b ib_dispatch_event +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x54fe93ab ib_query_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x552dcbb1 ib_create_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5611cdea rdma_node_get_transport +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5e4ba1c6 ib_unregister_event_handler +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6b3739cb ib_alloc_fast_reg_page_list +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6b7a484c ib_register_event_handler +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6ba62860 ib_modify_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6e030e26 ib_modify_qp_is_ok +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6f757ad7 ib_free_fast_reg_page_list +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x70f76f8d ib_query_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7672c887 ib_find_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x76c1e86b ib_create_fmr_pool +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x76f3c7f2 ib_destroy_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7db87101 ib_find_cached_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x83bc1cb6 ib_dereg_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x86df98cf ib_register_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x87d58d5d ib_dealloc_xrcd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x8ad8825d ibnl_put_attr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x91f5b2e4 ib_rereg_phys_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x93e4f2f5 ib_modify_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x959dccf8 ib_query_port +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x970c487e ib_init_ah_from_wc +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x98b460b8 ib_create_ah_from_wc +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x9b5abd18 ib_dealloc_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x9c927ec8 ib_query_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x9f53acf1 ib_find_exact_cached_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x9fece18e ib_alloc_fast_reg_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa1170a59 ib_modify_port +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa1bd24af ib_umem_odp_map_dma_pages +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa3100471 ib_modify_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xab0a3467 mult_to_ib_rate +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xabca0ff1 ib_destroy_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xac9777e7 ib_modify_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xae1d5478 ib_alloc_xrcd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb1a312e1 ib_unpack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb26bbaef ib_modify_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb3994efa ib_umem_odp_unmap_dma_pages +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb63fe331 ibnl_put_msg +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb93a52b0 ib_rate_to_mbps +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xbadd8259 ib_rate_to_mult +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xbeae38fa ib_attach_mcast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc0ab3430 ib_find_cached_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc2d93cce ib_dealloc_fmr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc32b59ff ib_destroy_fmr_pool +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc67f14a5 ibnl_remove_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc68c1885 ib_get_cached_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc6cb2a8e ib_destroy_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc9d325f3 rdma_port_get_link_layer +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xcc1073e5 ib_umem_get +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xcf24bda8 ib_alloc_fmr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xcfa2a09f ib_event_msg +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd75067eb ib_fmr_pool_map_phys +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xdafd4254 ibnl_add_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe0f24c55 ib_get_dma_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe44e7e29 ib_check_mr_status +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe4648fc8 ib_destroy_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe5840ec6 ib_wc_status_msg +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe68edfd5 ib_resolve_eth_l2_attrs +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xea1f3a88 ib_get_cached_lmc +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xeb37fba8 ib_query_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf039dfa7 ib_query_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf897db35 ib_close_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xfc150956 ib_ud_header_init +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xfe6b2814 ib_resize_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x1dfbee51 ib_register_mad_agent +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x297c754b ib_create_send_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x2df92e75 ib_get_rmpp_segment +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x2f0ea69e ib_response_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x4cf1fdc6 ib_process_mad_wc +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x4d6d3fbf ib_post_send_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x4fdb4bb1 ib_free_recv_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x6f077fcf ib_get_mad_data_offset +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x7b5d4b7a ib_is_mad_class_rmpp +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x7c04a7fc ib_free_send_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xa16f9cb5 ib_unregister_mad_agent +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xa32bdb70 ib_redirect_mad_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xda3b571c ib_cancel_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xdce4ea59 ib_modify_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xe88f61cb ib_register_mad_snoop +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xf0a17d24 ib_mad_kernel_rmpp_agent +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x05f51c4a ib_sa_register_client +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x22f07253 ib_sa_unpack_path +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x287d1e73 ib_sa_unregister_client +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x576fdbac ib_sa_free_multicast +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x98d8b414 ib_sa_path_rec_get +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x9d11bcf5 ib_sa_get_mcmember_rec +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xb5a16662 ib_sa_join_multicast +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xb6e136a1 ib_init_ah_from_mcmember +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xd0dc92f9 ib_init_ah_from_path +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xd2b3a9b8 ib_sa_guid_info_rec_query +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xda0d50ec ib_sa_cancel_query +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xddc330e7 ib_sa_pack_path +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xe117bfe0 ib_sa_service_rec_query +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x2569d757 ib_copy_path_rec_to_user +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x52a6ce77 ib_copy_ah_attr_to_user +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x7971c00e ib_copy_qp_attr_to_user +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0xe350f2aa ib_copy_path_rec_from_user +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x0ff9f042 iwpm_remove_mapinfo +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x4c29cbf1 iwpm_register_pid_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x5da59312 iwpm_register_pid +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x6968573d iwpm_add_mapping +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x6c74c344 iwpm_get_remote_info +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x70c2244f iw_cm_accept +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x76ef27fd iwpm_mapping_info_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x7a1749fc iwpm_remote_info_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x7b47a9fd iw_cm_init_qp_attr +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x807c6f7a iw_cm_listen +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x8c20b62f iwpm_add_and_query_mapping_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x904609a0 iwpm_remove_mapping +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x91a914d6 iwpm_init +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x91d8e0f8 iw_cm_reject +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x9327be67 iwpm_exit +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x99edf901 iwpm_valid_pid +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xa87ac66f iw_cm_disconnect +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xa8d6b290 iwpm_ack_mapping_info_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xae18f452 iwpm_add_mapping_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xae90e323 iwpm_mapping_error_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xcb8a8d68 iw_cm_connect +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xd447b24a iwpm_create_mapinfo +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xdb5e1d92 iw_create_cm_id +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xe24035f5 iw_destroy_cm_id +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xf380aa0f iwpm_add_and_query_mapping +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x18a5d14f rdma_destroy_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x254b1c59 rdma_notify +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x2e99dc2d rdma_resolve_route +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x3e5f0981 rdma_connect +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x53a19ecb rdma_bind_addr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x65f325ef rdma_join_multicast +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x6c313120 rdma_disconnect +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x72f1ba2d rdma_resolve_addr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x75bcfa31 rdma_reject +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x75de14bb rdma_get_service_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x907df803 rdma_event_msg +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x92bed5c4 rdma_destroy_qp +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x9c6b1300 rdma_create_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xbc46abe4 rdma_set_afonly +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xc9c3c0c1 rdma_set_reuseaddr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xcb67af33 rdma_init_qp_attr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xcf130699 rdma_set_ib_paths +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xd8f3afd7 rdma_listen +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xeb1c3036 rdma_accept +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xed6ab0ed rdma_set_service_type +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xf73b8fd2 rdma_leave_multicast +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xf7ba7d1a rdma_create_qp +EXPORT_SYMBOL drivers/input/gameport/gameport 0x216ab3c9 gameport_unregister_port +EXPORT_SYMBOL drivers/input/gameport/gameport 0x33312952 __gameport_register_driver +EXPORT_SYMBOL drivers/input/gameport/gameport 0x43b15350 gameport_unregister_driver +EXPORT_SYMBOL drivers/input/gameport/gameport 0x517ad65c gameport_close +EXPORT_SYMBOL drivers/input/gameport/gameport 0x5bbf3eac gameport_start_polling +EXPORT_SYMBOL drivers/input/gameport/gameport 0xcf6d7fd0 gameport_open +EXPORT_SYMBOL drivers/input/gameport/gameport 0xd47068dd __gameport_register_port +EXPORT_SYMBOL drivers/input/gameport/gameport 0xf7b34c5b gameport_set_phys +EXPORT_SYMBOL drivers/input/gameport/gameport 0xf8cdc0a8 gameport_stop_polling +EXPORT_SYMBOL drivers/input/input-polldev 0x1f1aa389 devm_input_allocate_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0x2cba8a54 input_allocate_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0xa806d784 input_unregister_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0xd346db43 input_free_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0xe4c51067 input_register_polled_device +EXPORT_SYMBOL drivers/input/matrix-keymap 0x50b74f4b matrix_keypad_build_keymap +EXPORT_SYMBOL drivers/input/misc/ad714x 0x14dc6a05 ad714x_enable +EXPORT_SYMBOL drivers/input/misc/ad714x 0x7216ac98 ad714x_disable +EXPORT_SYMBOL drivers/input/misc/ad714x 0xee6d0270 ad714x_remove +EXPORT_SYMBOL drivers/input/misc/ad714x 0xef805e5f ad714x_probe +EXPORT_SYMBOL drivers/input/misc/cma3000_d0x 0x17084641 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/sparse-keymap 0x179874a0 sparse_keymap_report_entry +EXPORT_SYMBOL drivers/input/sparse-keymap 0x4dfaaf14 sparse_keymap_free +EXPORT_SYMBOL drivers/input/sparse-keymap 0x6c2d7dca sparse_keymap_entry_from_scancode +EXPORT_SYMBOL drivers/input/sparse-keymap 0x76fd5271 sparse_keymap_entry_from_keycode +EXPORT_SYMBOL drivers/input/sparse-keymap 0xb730cef5 sparse_keymap_report_event +EXPORT_SYMBOL drivers/input/sparse-keymap 0xcaff0c28 sparse_keymap_setup +EXPORT_SYMBOL drivers/input/touchscreen/ad7879 0x61b3cc68 ad7879_probe +EXPORT_SYMBOL drivers/input/touchscreen/ad7879 0x8d9d38dd ad7879_pm_ops +EXPORT_SYMBOL drivers/input/touchscreen/ad7879 0x97f83edf ad7879_remove +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x04403fcf unregister_capi_driver +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x14f2aa5a capi20_get_version +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x1d1ed1de capi_ctr_handle_message +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x226307eb capi_ctr_suspend_output +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x2b8eab1f capilib_free_ncci +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x2baa6586 capilib_new_ncci +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x31c24aa4 capi20_isinstalled +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x409a95cb capi20_release +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x50b33ca4 capi_cmsg2message +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x5692895d capi20_put_message +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x6057c6f3 capi_message2cmsg +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x62e32d43 capilib_data_b3_conf +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x71e8d5ba capilib_data_b3_req +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x7a33596c capi20_get_serial +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x7b93f33a attach_capi_ctr +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x7e6f1307 capi20_get_manufacturer +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x8f699913 capilib_release +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x9f823278 register_capi_driver +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xa5b3e685 capi20_register +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xa7c4fd6c capi_message2str +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xaa165d27 capilib_release_appl +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xb19fda8d capi_cmd2str +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xb44fd0c2 capi_ctr_down +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xb60e5e5f capi_cmsg_header +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xc10fe128 cdebbuf_free +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xc42d9ec1 capi20_manufacturer +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xc47bb782 detach_capi_ctr +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xcd8ac0fc capi_ctr_resume_output +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xdaa2bbd6 capi_ctr_ready +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xe19a11ac capi20_get_profile +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xe8ad9bd1 capi_cmsg2str +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x04293721 b1_getrevision +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x188d5167 b1_free_card +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x1bab0397 b1_loaded +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x249fe4f3 avmcard_dma_free +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x2aabf5fa b1ctl_proc_fops +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x4f4ca527 b1_register_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x53668c18 avmcard_dma_alloc +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x7196bbfb b1_send_message +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x7825814e b1_load_config +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x8459330e b1_reset_ctr +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x85f09690 b1_irq_table +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xa497f3cc b1_load_t4file +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xb47f2252 b1_alloc_card +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xdfd28376 b1_detect +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xe1f95137 b1_release_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xe76d7952 b1_parse_version +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xf1496c2c b1_load_firmware +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xfa10fee4 b1_interrupt +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x0142c305 b1dma_release_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x485135f6 b1dma_reset +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x5076f372 b1dma_register_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x71f6a4f6 b1dma_load_firmware +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x950c1fc7 b1dmactl_proc_fops +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xa79daca0 b1dma_send_message +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xad4e8151 t1pci_detect +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xb6da76a4 b1dma_reset_ctr +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xd6f9f1ea b1dma_interrupt +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xefa59b69 b1pciv4_detect +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1pcmcia 0x29562993 b1pcmcia_delcard +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1pcmcia 0xaec3240e b1pcmcia_addcard_m1 +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1pcmcia 0xea620116 b1pcmcia_addcard_m2 +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1pcmcia 0xf14bf8b1 b1pcmcia_addcard_b1 +EXPORT_SYMBOL drivers/isdn/hardware/eicon/divadidd 0x2974ead1 DIVA_DIDD_Read +EXPORT_SYMBOL drivers/isdn/hardware/eicon/divadidd 0x7ab59853 proc_net_eicon +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0x67b6f4be mISDNipac_init +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0x7f86a27e mISDNisac_init +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0xc5e51db3 mISDNisac_irq +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0xce41537b mISDNipac_irq +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNisar 0x2770cb6e mISDNisar_irq +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNisar 0xa696dea2 mISDNisar_init +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x07f4f2ce hisax_unregister +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x148f0c99 FsmFree +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x6fe1ca04 FsmDelTimer +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x904a7e2e hisax_init_pcmcia +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x93a64734 FsmChangeState +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x9df0cd27 FsmEvent +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x9f987c85 FsmRestartTimer +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0xa1bc94b9 FsmInitTimer +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0xee93522c hisax_register +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0xf0a16657 FsmNew +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0xfc27303b HiSax_closecard +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x3f3b323a isac_d_l2l1 +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x8c7ca55f isacsx_irq +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0xbe49352c isac_init +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0xcaa35cf9 isac_irq +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0xdfaf778a isac_setup +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0xe3936082 isacsx_setup +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0x4d1c8dec register_isdn +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0x68f0ddb3 isdn_ppp_register_compressor +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0xc854acc9 isdn_ppp_unregister_compressor +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0xfa06820f isdn_register_divert +EXPORT_SYMBOL drivers/isdn/i4l/isdnhdlc 0x3b71e4fc isdnhdlc_decode +EXPORT_SYMBOL drivers/isdn/i4l/isdnhdlc 0x59cc8a7e isdnhdlc_out_init +EXPORT_SYMBOL drivers/isdn/i4l/isdnhdlc 0x8ee38862 isdnhdlc_rcv_init +EXPORT_SYMBOL drivers/isdn/i4l/isdnhdlc 0xfd9d4c09 isdnhdlc_encode +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x056851c7 mISDN_unregister_device +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x06fcebef mISDN_FsmDelTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x078eb105 recv_Echannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x184eab87 mISDN_initbchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x1c59d748 get_next_dframe +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x1cf196fb mISDN_FsmAddTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x1f0c4ab6 recv_Dchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x2348cc3c mISDN_FsmFree +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x2580f36f recv_Bchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x29fa5b43 mISDN_FsmRestartTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x36ec1940 mISDN_FsmInitTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x4288b716 mISDN_unregister_Bprotocol +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x4ad87a51 create_l1 +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 0x79d756a4 recv_Dchannel_skb +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x80c2b90b mISDN_register_Bprotocol +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x866a688b dchannel_senddata +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x8a4e99fb mISDN_clock_update +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x8c763bf0 mISDN_initdchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x93c4a283 queue_ch_frame +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xa633a02b mISDNDevName4ch +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xa70c28bf bchannel_senddata +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xc3401729 mISDN_register_clock +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xc90ff1cc mISDN_ctrl_bchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xcaff0ec8 mISDN_freebchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xd19c810c mISDN_register_device +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xd285995f mISDN_clock_get +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xd491e9d3 mISDN_clear_bchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xd5145151 mISDN_FsmEvent +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xd6ddcc39 recv_Bchannel_skb +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xe536c712 bchannel_get_rxbuf +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xe8f617eb mISDN_unregister_clock +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xf28fad95 get_next_bframe +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xf969a5a8 mISDN_freedchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xf9e7832f mISDN_FsmNew +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_dsp 0x01087af0 mISDN_dsp_element_unregister +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_dsp 0x60721da7 dsp_audio_law_to_s32 +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_dsp 0xa215f1b2 dsp_audio_s16_to_law +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_dsp 0xb98308d8 mISDN_dsp_element_register +EXPORT_SYMBOL drivers/md/bcache/bcache 0x10dc0d06 bch_bset_insert +EXPORT_SYMBOL drivers/md/bcache/bcache 0x5a5ec98f closure_sync +EXPORT_SYMBOL drivers/md/bcache/bcache 0x66d28e22 bch_btree_iter_init +EXPORT_SYMBOL drivers/md/bcache/bcache 0x6969b5d8 bch_bset_init_next +EXPORT_SYMBOL drivers/md/bcache/bcache 0x74ea3252 closure_put +EXPORT_SYMBOL drivers/md/bcache/bcache 0x7b55ca4f bch_bset_fix_invalidated_key +EXPORT_SYMBOL drivers/md/bcache/bcache 0x7f2a56c0 bch_bset_sort_state_init +EXPORT_SYMBOL drivers/md/bcache/bcache 0x9e8b3cee bch_btree_keys_alloc +EXPORT_SYMBOL drivers/md/bcache/bcache 0xab2d2b84 bch_btree_insert_key +EXPORT_SYMBOL drivers/md/bcache/bcache 0xad29a6f5 bch_bset_build_written_tree +EXPORT_SYMBOL drivers/md/bcache/bcache 0xad33cee8 closure_sub +EXPORT_SYMBOL drivers/md/bcache/bcache 0xaec09a2b bch_bkey_try_merge +EXPORT_SYMBOL drivers/md/bcache/bcache 0xaf77343c bch_btree_keys_free +EXPORT_SYMBOL drivers/md/bcache/bcache 0xc04554f7 bch_btree_iter_next +EXPORT_SYMBOL drivers/md/bcache/bcache 0xca580595 bch_btree_keys_init +EXPORT_SYMBOL drivers/md/bcache/bcache 0xdf3d5279 closure_wait +EXPORT_SYMBOL drivers/md/bcache/bcache 0xe3c17af1 __closure_wake_up +EXPORT_SYMBOL drivers/md/bcache/bcache 0xe47e0829 __bch_bset_search +EXPORT_SYMBOL drivers/md/bcache/bcache 0xecf7cef9 bch_btree_sort_lazy +EXPORT_SYMBOL drivers/md/bcache/bcache 0xfbf30701 bch_btree_sort_partial +EXPORT_SYMBOL drivers/md/dm-bufio 0x72f07bf4 dm_bufio_set_minimum_buffers +EXPORT_SYMBOL drivers/md/dm-bufio 0xa7978f56 dm_bufio_forget +EXPORT_SYMBOL drivers/md/dm-log 0x2918142e dm_dirty_log_type_register +EXPORT_SYMBOL drivers/md/dm-log 0x86f6cd76 dm_dirty_log_create +EXPORT_SYMBOL drivers/md/dm-log 0x90bf712a dm_dirty_log_type_unregister +EXPORT_SYMBOL drivers/md/dm-log 0xd04df533 dm_dirty_log_destroy +EXPORT_SYMBOL drivers/md/dm-snapshot 0x213c9c87 dm_exception_store_type_unregister +EXPORT_SYMBOL drivers/md/dm-snapshot 0x24dae643 dm_exception_store_destroy +EXPORT_SYMBOL drivers/md/dm-snapshot 0x520c2128 dm_exception_store_type_register +EXPORT_SYMBOL drivers/md/dm-snapshot 0x913101fd dm_exception_store_create +EXPORT_SYMBOL drivers/md/dm-snapshot 0xa3a2b1fb dm_snap_origin +EXPORT_SYMBOL drivers/md/dm-snapshot 0xa6ca0d50 dm_snap_cow +EXPORT_SYMBOL drivers/md/raid456 0x0b6fb782 raid5_set_cache_size +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x11d28df1 flexcop_sram_set_dest +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x2f7f8c77 flexcop_i2c_request +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x3703730a flexcop_pid_feed_control +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x5602ba73 flexcop_device_initialize +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x64bfb26e flexcop_dump_reg +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x6bce3a39 flexcop_device_exit +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x71499626 flexcop_wan_set_speed +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x7293dfcc flexcop_eeprom_check_mac_addr +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x77cb57ee flexcop_device_kmalloc +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x7ee0d8ff flexcop_sram_ctrl +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x8cd3ed2c flexcop_pass_dmx_data +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xa90d4b59 flexcop_device_kfree +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xd4e14463 flexcop_pass_dmx_packets +EXPORT_SYMBOL drivers/media/common/cx2341x 0x03ff276b cx2341x_handler_init +EXPORT_SYMBOL drivers/media/common/cx2341x 0x1ca0c084 cx2341x_log_status +EXPORT_SYMBOL drivers/media/common/cx2341x 0x2f25eee2 cx2341x_update +EXPORT_SYMBOL drivers/media/common/cx2341x 0x30cb4cd7 cx2341x_ext_ctrls +EXPORT_SYMBOL drivers/media/common/cx2341x 0x3db8be82 cx2341x_ctrl_query +EXPORT_SYMBOL drivers/media/common/cx2341x 0x462d38ef cx2341x_handler_set_busy +EXPORT_SYMBOL drivers/media/common/cx2341x 0x60f281d3 cx2341x_handler_setup +EXPORT_SYMBOL drivers/media/common/cx2341x 0x84ef4ea7 cx2341x_handler_set_50hz +EXPORT_SYMBOL drivers/media/common/cx2341x 0xc184ec1e cx2341x_ctrl_get_menu +EXPORT_SYMBOL drivers/media/common/cx2341x 0xcf76ce95 cx2341x_fill_defaults +EXPORT_SYMBOL drivers/media/common/cx2341x 0xcf8b77a4 cx2341x_mpeg_ctrls +EXPORT_SYMBOL drivers/media/common/cypress_firmware 0xd8502f40 cypress_load_firmware +EXPORT_SYMBOL drivers/media/common/tveeprom 0x767a1bca tveeprom_read +EXPORT_SYMBOL drivers/media/common/tveeprom 0xddf0dab8 tveeprom_hauppauge_analog +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x05a5b6d4 dvb_net_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x09689ec9 dvb_dmxdev_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x1d189380 dvb_register_frontend +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x1e5f0bdd dvb_ringbuffer_write +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x271ab618 dvb_ca_en50221_frda_irq +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x2907e8ed dvb_ringbuffer_avail +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x2cf288a0 dvb_ringbuffer_flush_spinlock_wakeup +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x362dcccf dvb_generic_ioctl +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x3ee8cfed dvb_ringbuffer_free +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x4e886e04 dvb_dmx_swfilter_204 +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x4fcee9c0 dvb_frontend_resume +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x58c0b3ca dvb_ringbuffer_read_user +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x5a6f883d dvb_ringbuffer_write_user +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x5d2c970d dvb_dmx_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x6e3a8f43 dvb_frontend_detach +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x70de704a dvb_ringbuffer_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x74a5a698 dvb_filter_pes2ts_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x80dbce68 dvb_dmx_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x80e3832d dvb_filter_get_ac3info +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x868aedaa dvb_register_adapter +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x962af2e7 dvb_dmxdev_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x9698e81c dvb_dmx_swfilter_packets +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x9ab4d06a dvb_ringbuffer_empty +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xa8bf5524 dvb_dmx_swfilter +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xac4ca1b0 intlog2 +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xae2a1768 dvb_ca_en50221_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xae757986 dvb_ca_en50221_camchange_irq +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xb11601d2 dvb_generic_open +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xbd172b53 dvb_frontend_suspend +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xc4d48864 dvb_ca_en50221_camready_irq +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xc645fbc3 dvb_ringbuffer_read +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xd226d3e6 dvb_unregister_device +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xd71583e9 dvb_generic_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xd9f73490 dvb_dmx_swfilter_raw +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xe1c2289f dvb_unregister_adapter +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xe5ae8707 intlog10 +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xe773a66b dvb_register_device +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xebd38af9 dvb_ringbuffer_flush +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xeca7dbc4 dvb_ca_en50221_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xecda9245 dvb_unregister_frontend +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xf0387c08 dvb_net_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xf146c8b1 dvb_frontend_reinitialise +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xf821d629 dvb_frontend_sleep_until +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xf826deb0 dvb_filter_pes2ts +EXPORT_SYMBOL drivers/media/dvb-frontends/a8293 0xbd850c24 a8293_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/af9013 0x6e96ec6c af9013_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/atbm8830 0x1bf39939 atbm8830_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x03d4e84a au8522_readreg +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x124941b4 au8522_get_state +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x3014934d au8522_release_state +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x4ad7d6f8 au8522_led_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0xb44f8e3d au8522_sleep +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0xc53e564c au8522_init +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0xce45dbd3 au8522_i2c_gate_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0xd8deb965 au8522_analog_i2c_gate_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0xe61cbab2 au8522_writereg +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_dig 0x994dccaa au8522_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/bcm3510 0xfd49f77b bcm3510_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx22700 0x95496748 cx22700_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx22702 0xce0591c3 cx22702_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24110 0x5ad0ab94 cx24110_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24113 0x017a4a53 cx24113_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24113 0xd3060eb3 cx24113_agc_callback +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24116 0x478e4cdd cx24116_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24120 0xd2a500a1 cx24120_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24123 0xed0dd2a8 cx24123_get_tuner_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24123 0xf3701ad0 cx24123_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cxd2820r 0x529f5304 cxd2820r_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0x00b1755d dib0070_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0x4f5cef53 dib0070_get_rf_output +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0x67c17350 dib0070_set_rf_output +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0x7533f1af dib0070_wbd_offset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0x912f713d dib0070_ctrl_agc_filter +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x014cd2a8 dib0090_set_tune_state +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x338e110f dib0090_get_wbd_offset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x4d815df3 dib0090_set_vga +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x5a5001bc dib0090_fw_register +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x68f49d6d dib0090_pwm_gain_reset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x6b23e297 dib0090_set_dc_servo +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x7bdadbde dib0090_get_wbd_target +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x7fc66c47 dib0090_set_switch +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x846278cf dib0090_update_tuning_table_7090 +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xa0499467 dib0090_dcc_freq +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xb7413c89 dib0090_get_tune_state +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xc74d0982 dib0090_register +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xcdaa458e dib0090_gain_control +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xd2eab8e4 dib0090_update_rframp_7090 +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xf5a136f1 dib0090_get_current_gain +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mb 0xc6a0eab8 dib3000mb_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x0326ff8d dib3000mc_pid_control +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x2253d392 dib3000mc_set_config +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x2af18544 dib3000mc_get_tuner_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x5aede980 dib3000mc_pid_parse +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0xc2e1cd11 dib3000mc_i2c_enumeration +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0xe0613879 dib3000mc_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0x2c686c47 dib7000m_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0x2eaf5935 dib7000m_pid_filter +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0x4e6f4f0e dib7000m_get_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0x9ce730e0 dib7000m_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0xd63acdce dib7000p_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x61258837 dib8000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0x00b9aa77 dibx000_reset_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0x2fa21735 dibx000_i2c_set_speed +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0x316e662b dibx000_init_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0x31cf5f59 dibx000_exit_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0xad3ad91c systime +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0xe363d17a dibx000_get_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/drx39xyj/drx39xyj 0xe96aadd6 drx39xxj_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/drxd 0x638105f1 drxd_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/drxk 0x84bb5ee4 drxk_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ds3000 0x34f87069 ds3000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dvb-pll 0xc82557ae dvb_pll_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ec100 0x7f2320f2 ec100_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/isl6405 0xb8657353 isl6405_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/isl6421 0xc9ffcc7f isl6421_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/isl6423 0x2b1dc79e isl6423_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/itd1000 0x14f26c25 itd1000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ix2505v 0xdb03417b ix2505v_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/l64781 0x4ffa1774 l64781_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lg2160 0xe37d4f63 lg2160_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgdt3305 0x503cf23a lgdt3305_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgdt3306a 0x1668e79f lgdt3306a_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgdt330x 0xb7cb58aa lgdt330x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgs8gxx 0xc4703744 lgs8gxx_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lnbp21 0x24622e61 lnbp21_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lnbp21 0xaf4957f4 lnbh24_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lnbp22 0x96bee495 lnbp22_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/m88ds3103 0x4596b17f m88ds3103_get_agc_pwm +EXPORT_SYMBOL drivers/media/dvb-frontends/m88ds3103 0xca4cf0e6 m88ds3103_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/m88rs2000 0x128d1540 m88rs2000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mb86a16 0xdbd498c8 mb86a16_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mb86a20s 0x01746993 mb86a20s_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mt312 0xd5231b7b mt312_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mt352 0x7d7d6e4a mt352_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/nxt200x 0xddbab99e nxt200x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/nxt6000 0xf6e76d31 nxt6000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/or51132 0x666449ab or51132_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/or51211 0xf0ac120c or51211_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1409 0xd6faa27e s5h1409_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1411 0xcd857b4b s5h1411_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1420 0xc8020b9f s5h1420_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1420 0xf64e2204 s5h1420_get_tuner_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/s921 0x56653546 s921_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/si2165 0x8d38e396 si2165_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/si21xx 0x7152f31c si21xx_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/sp8870 0x63a4d288 sp8870_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/sp887x 0x30111049 sp887x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stb0899 0x3a2b6e3b stb0899_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stb6000 0x85be0ea9 stb6000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stb6100 0xad945838 stb6100_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0288 0xa8600537 stv0288_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0297 0x0cc37d22 stv0297_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0299 0x00b44c49 stv0299_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0367 0xb83e406a stv0367ter_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0367 0xbb677870 stv0367cab_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0900 0x08746436 stv0900_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv090x 0x9617cf6f stv090x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv6110 0x2319f640 stv6110_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv6110x 0x0e64e310 stv6110x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10021 0x98f002e2 tda10021_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10023 0x38ed32c7 tda10023_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10048 0x8d38c5b1 tda10048_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda1004x 0xd7f4382f tda10046_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda1004x 0xe3e19047 tda10045_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10071 0xb567ab72 tda10071_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10086 0x55e32be8 tda10086_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda665x 0x6b338944 tda665x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda8083 0xf8f36714 tda8083_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda8261 0x138fe267 tda8261_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda826x 0x89bd9024 tda826x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ts2020 0x87400aa7 ts2020_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tua6100 0x4e749368 tua6100_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ves1820 0x56b5334f ves1820_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ves1x93 0x008da964 ves1x93_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/zl10036 0x870c692a zl10036_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/zl10039 0xf0aff5ff zl10039_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/zl10353 0x2577dac0 zl10353_attach +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x017ca23f flexcop_dma_free +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x212cfbe6 flexcop_dma_control_size_irq +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x6b0e746f flexcop_dma_control_timer_irq +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x77203bbb flexcop_dma_allocate +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x8543044e flexcop_dma_xfer_control +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0xaef6a8b9 flexcop_dma_config_timer +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0xb9a848f4 flexcop_dma_config +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0x338dfb91 bt878_stop +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0x5b626efa bt878_device_control +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0xd5d0bdef bt878_num +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0xeddc7a95 bt878_start +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0xf14a901e bt878 +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0x11dc4b6d bttv_gpio_enable +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0x3db55f8d bttv_sub_unregister +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0x4a0e9ad7 bttv_get_pcidev +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0x51449c19 bttv_sub_register +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 0x09a01d53 read_dst +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x126c1dea dst_attach +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x2dceee59 rdc_reset_state +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x59be8914 dst_error_recovery +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x7ff440b0 dst_wait_dst_ready +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xc44a98e7 dst_pio_disable +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xe044c5a7 dst_error_bailout +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xe69033d0 dst_comm_init +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xe94b8c9c dst_check_sum +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xf0e393aa write_dst +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst_ca 0x0eb71d67 dst_ca_attach +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x2cdea06d cx18_reset_ir_gpio +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x2e752696 cx18_ext_init +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x524c925d cx18_start_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x65bf9455 cx18_release_stream +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x6ad9cb38 cx18_stop_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x75726f4d cx18_claim_stream +EXPORT_SYMBOL drivers/media/pci/cx23885/altera-ci 0x1846d74c 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 0x1dea7a15 cx25821_sram_channel_setup_audio +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x1eddb56e cx25821_dev_unregister +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x34aa0e96 cx25821_set_gpiopin_direction +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x40c523fa cx25821_risc_databuffer_audio +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x784853c3 cx25821_print_irqbits +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xc26317c7 cx25821_riscmem_alloc +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xc5d38741 cx25821_sram_channels +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xd2ad6c72 cx25821_dev_get +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xd5ac95bd cx25821_sram_channel_dump_audio +EXPORT_SYMBOL drivers/media/pci/cx88/cx88-vp3054-i2c 0x676e7f8c vp3054_i2c_probe +EXPORT_SYMBOL drivers/media/pci/cx88/cx88-vp3054-i2c 0x8d1b2fde vp3054_i2c_remove +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0x27cd8b58 cx88_set_freq +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0x9e9126dc cx88_querycap +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0xfa64d84d cx88_video_mux +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0xfd40bb4c cx88_enum_input +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x213579b1 cx8802_register_driver +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x44db4cfd cx8802_get_driver +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x4f128efc cx8802_start_dma +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x684b53ba cx8802_cancel_buffers +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x7df2d1b1 cx8802_buf_prepare +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x93e8af36 cx8802_buf_queue +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0xbe7333e7 cx8802_unregister_driver +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x0fd5c944 cx88_dsp_detect_stereo_sap +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x20fbb133 cx88_set_tvnorm +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x2dfd19d1 cx88_risc_buffer +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x371b31ce cx88_shutdown +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x4216fc84 cx88_sram_channels +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x485834d4 cx88_sram_channel_setup +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x4b3e3f99 cx88_get_stereo +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x4bf61982 cx88_core_irq +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x57b314ab cx88_ir_stop +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x6141c8c5 cx88_tuner_callback +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x6538a2cc cx88_ir_start +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x7243b081 cx88_risc_databuffer +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x7642ed3c cx88_print_irqbits +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x81b5a701 cx88_core_put +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x904b8696 cx88_audio_thread +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x9a9639d7 cx88_core_get +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x9c690350 cx88_reset +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x9e24791e cx88_set_tvaudio +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xc67b8790 cx88_vdev_init +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xeb292cf7 cx88_set_stereo +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xf884b43a cx88_sram_channel_dump +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xf9615c92 cx88_wakeup +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xfa2b916d cx88_set_scale +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xff18a3b2 cx88_newstation +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x01794f4d ivtv_udma_prepare +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x14aecc3e ivtv_init_on_first_open +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x14bc7829 ivtv_clear_irq_mask +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x14f67530 ivtv_debug +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x368ab304 ivtv_vapi_result +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x446e2836 ivtv_api +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x4bfb4c57 ivtv_vapi +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x4c60f2ac ivtv_stop_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x4debead9 ivtv_udma_setup +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x7278f8bc ivtv_firmware_check +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x803fa1ef ivtv_reset_ir_gpio +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x850605df ivtv_udma_unmap +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x9a7a0bc2 ivtv_start_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xbb730f1e ivtv_udma_alloc +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xd3be9cce ivtv_release_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xeade69a4 ivtv_claim_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xf2cf8e34 ivtv_ext_init +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xfc85285e ivtv_set_irq_mask +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 0x2044409d saa7134_dmasound_init +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x37d378f2 saa_dsp_writel +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x3f97f5c3 saa7134_pgtable_build +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x57728aec saa7134_dmasound_exit +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x62f6466c saa7134_ts_register +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x75c66969 saa7134_boards +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x84aa4722 saa7134_pgtable_free +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xc0063b85 saa7134_devlist_lock +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xcaf83d87 saa7134_set_dmabits +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xcd5c721c saa7134_ts_unregister +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xd4d703ae saa7134_pgtable_alloc +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xd99730e2 saa7134_tvaudio_setmute +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xf78c3c9e saa7134_set_gpio +EXPORT_SYMBOL drivers/media/pci/ttpci/ttpci-eeprom 0xc3e4c127 ttpci_eeprom_decode_mac +EXPORT_SYMBOL drivers/media/pci/ttpci/ttpci-eeprom 0xc7243f47 ttpci_eeprom_parse_mac +EXPORT_SYMBOL drivers/media/pci/zoran/videocodec 0x0266fa4a videocodec_register +EXPORT_SYMBOL drivers/media/pci/zoran/videocodec 0x250a9467 videocodec_attach +EXPORT_SYMBOL drivers/media/pci/zoran/videocodec 0x84a9e27c videocodec_unregister +EXPORT_SYMBOL drivers/media/pci/zoran/videocodec 0xcf775301 videocodec_detach +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x1739b3ad soc_camera_apply_board_flags +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x2edcc9a5 soc_camera_host_unregister +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x38fd04a3 soc_camera_host_register +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x4dc54175 soc_camera_power_init +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x716d1da5 soc_camera_power_off +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x73327d3d soc_camera_xlate_by_fourcc +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0xd8438d12 soc_camera_power_on +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0x25c52d97 soc_mbus_samples_per_pixel +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0x2863728e soc_mbus_image_size +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0x29f5a98b soc_mbus_get_fmtdesc +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0x5f3e3558 soc_mbus_bytes_per_line +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0xc8b28da5 soc_mbus_config_compatible +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0xdc5dafe2 soc_mbus_find_fmtdesc +EXPORT_SYMBOL drivers/media/radio/tea575x 0x2b9d34bf snd_tea575x_s_hw_freq_seek +EXPORT_SYMBOL drivers/media/radio/tea575x 0x308160d9 snd_tea575x_enum_freq_bands +EXPORT_SYMBOL drivers/media/radio/tea575x 0x399b07b1 snd_tea575x_exit +EXPORT_SYMBOL drivers/media/radio/tea575x 0x70bae6dd snd_tea575x_set_freq +EXPORT_SYMBOL drivers/media/radio/tea575x 0x7ff32d5b snd_tea575x_hw_init +EXPORT_SYMBOL drivers/media/radio/tea575x 0x9c6a9394 snd_tea575x_init +EXPORT_SYMBOL drivers/media/radio/tea575x 0xb8c8135d snd_tea575x_g_tuner +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x03ce5226 lirc_dev_fop_ioctl +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x04dca738 lirc_unregister_driver +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x1824a181 lirc_get_pdata +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x44af3f6a lirc_dev_fop_close +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x8b9d8d9a lirc_dev_fop_open +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x94ae75a9 lirc_dev_fop_read +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x969504e1 lirc_dev_fop_poll +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0xc37f3ea0 lirc_register_driver +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0xc54297d9 lirc_dev_fop_write +EXPORT_SYMBOL drivers/media/rc/rc-core 0x019dc712 ir_raw_handler_unregister +EXPORT_SYMBOL drivers/media/rc/rc-core 0x8f90aa24 ir_raw_handler_register +EXPORT_SYMBOL drivers/media/tuners/fc0011 0xc6271ec5 fc0011_attach +EXPORT_SYMBOL drivers/media/tuners/fc0012 0x72465ddd fc0012_attach +EXPORT_SYMBOL drivers/media/tuners/fc0013 0x208b982e fc0013_rc_cal_reset +EXPORT_SYMBOL drivers/media/tuners/fc0013 0x65788f79 fc0013_rc_cal_add +EXPORT_SYMBOL drivers/media/tuners/fc0013 0xd8a7d8d4 fc0013_attach +EXPORT_SYMBOL drivers/media/tuners/max2165 0xd65f1419 max2165_attach +EXPORT_SYMBOL drivers/media/tuners/mc44s803 0x271df9fa mc44s803_attach +EXPORT_SYMBOL drivers/media/tuners/mt2060 0xd2c38e26 mt2060_attach +EXPORT_SYMBOL drivers/media/tuners/mt2131 0xea8b3903 mt2131_attach +EXPORT_SYMBOL drivers/media/tuners/mt2266 0xe0ef160b mt2266_attach +EXPORT_SYMBOL drivers/media/tuners/mxl5005s 0xb746e74c mxl5005s_attach +EXPORT_SYMBOL drivers/media/tuners/qt1010 0x99401521 qt1010_attach +EXPORT_SYMBOL drivers/media/tuners/tda18218 0xb23ceed9 tda18218_attach +EXPORT_SYMBOL drivers/media/tuners/tuner-types 0x0cb4b189 tuners +EXPORT_SYMBOL drivers/media/tuners/tuner-types 0xc2821775 tuner_count +EXPORT_SYMBOL drivers/media/tuners/tuner-xc2028 0x8665d6a4 xc2028_attach +EXPORT_SYMBOL drivers/media/tuners/xc4000 0xf13f2565 xc4000_attach +EXPORT_SYMBOL drivers/media/tuners/xc5000 0x60e4d146 xc5000_attach +EXPORT_SYMBOL drivers/media/usb/cx231xx/cx231xx 0x20168780 cx231xx_register_extension +EXPORT_SYMBOL drivers/media/usb/cx231xx/cx231xx 0x67ac419a cx231xx_unregister_extension +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x0a8f74ba dvb_usbv2_generic_write_locked +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x2f64925e dvb_usbv2_generic_rw_locked +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x3da86bf9 dvb_usbv2_generic_write +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x78c3c6e5 dvb_usbv2_probe +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x790ee838 dvb_usbv2_disconnect +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x8e9c0bbf dvb_usbv2_resume +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0xe7e0a8a5 dvb_usbv2_reset_resume +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0xf5ac000f dvb_usbv2_generic_rw +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0xfdd9c128 dvb_usbv2_suspend +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x394a6abe dvb_usb_device_exit +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x906ea815 dvb_usb_generic_rw +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x97369a29 dvb_usb_get_hexline +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x9c75aa4d usb_cypress_load_firmware +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0xad31de38 dvb_usb_device_init +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0xb25c5372 dvb_usb_generic_write +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0xc8e3e928 dvb_usb_nec_rc_key_to_event +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-af9005-remote 0x13e247e0 rc_map_af9005_table +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-af9005-remote 0xd3f6fe36 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 0x385a22a4 dibusb_read_eeprom_byte +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x64e5f299 dibusb2_0_streaming_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x6ac5ef18 dibusb_dib3000mc_frontend_attach +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x7086e40d dibusb_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x751fbe06 dibusb_power_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x83607242 dibusb_pid_filter +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x88688e00 dibusb_dib3000mc_tuner_attach +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xa8ed86dc dibusb_streaming_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xb47559e0 rc_map_dibusb_table +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xbb2bef7e dibusb2_0_power_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xbf2a929f dibusb_rc_query +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xcd7683e5 dibusb_i2c_algo +EXPORT_SYMBOL drivers/media/usb/em28xx/em28xx 0x5fefaf87 em28xx_register_extension +EXPORT_SYMBOL drivers/media/usb/em28xx/em28xx 0x86556ce6 em28xx_unregister_extension +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x080618aa go7007_alloc +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x1b861552 go7007_update_board +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x44843528 go7007_parse_video_stream +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x4c91f46f go7007_read_addr +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x8c660663 go7007_snd_remove +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0xc4026b4f go7007_read_interrupt +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0xe8b6b15d go7007_boot_encoder +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0xf240ad0d go7007_register_encoder +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0xf2985ab7 go7007_snd_init +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x1ec755d8 gspca_dev_probe2 +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x22a32420 gspca_frame_add +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x2c4e6e42 gspca_dev_probe +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x3c8baec0 gspca_resume +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x449afe39 gspca_suspend +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x6fc92128 gspca_expo_autogain +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x751d6b88 gspca_disconnect +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x9670af2c gspca_debug +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0xc55ca3f7 gspca_coarse_grained_expo_autogain +EXPORT_SYMBOL drivers/media/usb/tm6000/tm6000 0x3524c6bd tm6000_init_digital_mode +EXPORT_SYMBOL drivers/media/usb/tm6000/tm6000 0x3cb19120 tm6000_unregister_extension +EXPORT_SYMBOL drivers/media/usb/tm6000/tm6000 0xf940b25b tm6000_register_extension +EXPORT_SYMBOL drivers/media/usb/ttusb-dec/ttusbdecfe 0xcaa814c2 ttusbdecfe_dvbt_attach +EXPORT_SYMBOL drivers/media/usb/ttusb-dec/ttusbdecfe 0xe16f1508 ttusbdecfe_dvbs_attach +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-common 0xabe27502 v4l2_ctrl_query_fill +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-mem2mem 0x459e133f v4l2_m2m_get_curr_priv +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-mem2mem 0x5711a90c v4l2_m2m_job_finish +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-mem2mem 0x7176a129 v4l2_m2m_get_vq +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-mem2mem 0x95eddcbf v4l2_m2m_mmap +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0x1aeed8d3 videobuf_dvb_get_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0x33cded72 videobuf_dvb_alloc_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0x40611592 videobuf_dvb_dealloc_frontends +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0xcda2821c videobuf_dvb_register_bus +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0xe53a14e4 videobuf_dvb_find_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0xfde26915 videobuf_dvb_unregister_bus +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-core 0xabde66b2 vb2_querybuf +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0x83abde95 vb2_dvb_alloc_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0x90cd636e vb2_dvb_register_bus +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0x9278f67e vb2_dvb_dealloc_frontends +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0x928fb57a vb2_dvb_find_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0xba5e0e5c vb2_dvb_unregister_bus +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0xecd7b986 vb2_dvb_get_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x0086e464 v4l2_clk_set_rate +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x016bac1a v4l2_subdev_g_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x02175036 __v4l2_ctrl_s_ctrl_int64 +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x02363982 v4l2_ctrl_subdev_log_status +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x02484ddf v4l2_async_unregister_subdev +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x06056a4b v4l2_ctrl_new_std +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x0614dd5a v4l2_video_std_frame_period +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x0a860eca v4l2_clk_unregister_fixed +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x0abbd98d v4l2_ctrl_subscribe_event +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x0bb2a65f __v4l2_ctrl_modify_range +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x0f8d41b3 v4l2_subdev_s_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x1032466e v4l2_ctrl_g_ctrl_int64 +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x10d391e1 video_ioctl2 +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x11339525 video_device_release_empty +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x123959a1 v4l2_type_names +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x1510094c v4l2_ctrl_g_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x16244fe5 v4l2_prio_check +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x18745faa v4l2_ctrl_new_int_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x1b5c0864 v4l2_ctrl_merge +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x225c3ab7 v4l2_clk_unregister +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x2342f1ae v4l2_prio_open +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x2cc5a88e v4l2_subdev_init +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x2ea083e9 v4l2_ctrl_poll +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x36847d11 v4l2_ctrl_get_int_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x381e4306 video_unregister_device +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 0x418bf76b v4l2_g_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x42bded8a v4l2_ctrl_cluster +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x45a44c24 v4l2_ctrl_fill +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x473e843d v4l2_try_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x491dc75e video_devdata +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x495426ee v4l2_ctrl_get_name +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x4b77c88d v4l2_ctrl_replace +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x54f08f39 v4l2_s_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x573b1547 __v4l2_clk_register_fixed +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x5a04f926 v4l2_subdev_querymenu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x6065b1da v4l2_ctrl_handler_log_status +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x64c0f05e __video_register_device +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x6527deaa video_device_release +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x6d27ea7b v4l2_queryctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x7689bc2b v4l2_ctrl_add_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x77fb9b73 v4l2_subdev_queryctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x79462451 v4l2_ctrl_notify +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x7a3cd015 v4l2_ctrl_get_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x7cb46116 v4l2_querymenu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x7e6f105e v4l2_ctrl_radio_filter +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x8106095a v4l2_prio_max +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x82d18d15 v4l2_clk_register +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x851b4065 v4l2_clk_disable +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x8e13702b v4l2_ctrl_handler_free +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x991787c0 video_usercopy +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xa099259a v4l2_ctrl_new_std_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xa19f75a5 v4l2_ctrl_handler_init_class +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xa9a365e9 v4l2_clk_get +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xac08661e v4l2_subdev_s_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb00a400d v4l2_clk_enable +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb0541d55 v4l2_query_ext_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb60dd9aa v4l2_g_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb77b0159 v4l2_prio_init +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb7ab590e v4l2_ctrl_new_custom +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb9da8976 v4l2_async_notifier_register +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xbc5671dc v4l_printk_ioctl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xbde1d57d v4l2_ctrl_sub_ev_ops +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xbe40c24f __v4l2_ctrl_s_ctrl_string +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xc5466922 v4l2_ctrl_handler_setup +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xc8b3ef90 v4l2_ctrl_add_handler +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xc8fa832a v4l2_s_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xcb35324d v4l2_async_register_subdev +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xcbcb49ed v4l2_async_notifier_unregister +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xcda04a5b v4l2_prio_close +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xd5714e3e v4l2_ctrl_find +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xda537fb1 v4l2_clk_put +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xdacc1821 v4l2_ctrl_activate +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xde2af484 v4l2_ctrl_log_status +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe1e1f4a5 video_device_alloc +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe2b92059 v4l2_video_std_construct +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe4992a3f v4l2_ctrl_subdev_subscribe_event +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xea65236f v4l2_ctrl_grab +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xec7db33f v4l2_ctrl_auto_cluster +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf1df27fd v4l2_clk_get_rate +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf3251e7b v4l2_norm_to_name +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf5418b72 v4l2_ctrl_new_std_menu_items +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf96957d8 __v4l2_ctrl_s_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xfb2cc42e v4l2_subdev_try_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xfdf537ac v4l2_subdev_g_ctrl +EXPORT_SYMBOL drivers/memstick/core/memstick 0x06e48993 memstick_new_req +EXPORT_SYMBOL drivers/memstick/core/memstick 0x18b6341c memstick_next_req +EXPORT_SYMBOL drivers/memstick/core/memstick 0x28689e3f memstick_alloc_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x34893549 memstick_register_driver +EXPORT_SYMBOL drivers/memstick/core/memstick 0x34a19ec3 memstick_resume_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x35eaf936 memstick_set_rw_addr +EXPORT_SYMBOL drivers/memstick/core/memstick 0x57d08ef5 memstick_add_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x5d820a02 memstick_init_req_sg +EXPORT_SYMBOL drivers/memstick/core/memstick 0x624a96b2 memstick_free_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x8c7fce6c memstick_remove_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0xa43d2106 memstick_suspend_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0xa5987a36 memstick_init_req +EXPORT_SYMBOL drivers/memstick/core/memstick 0xe698265f memstick_unregister_driver +EXPORT_SYMBOL drivers/memstick/core/memstick 0xf2492090 memstick_detect_change +EXPORT_SYMBOL drivers/memstick/host/r592 0x52f1b23b memstick_debug_get_tpc_name +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x047c482f mpt_config +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x1434c816 mpt_send_handshake_request +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x17653710 mpt_suspend +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x2cef9e1a mpt_event_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x4526289b mpt_event_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x502108d0 mpt_fwfault_debug +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x58925c81 mpt_findImVolumes +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x783dd025 mpt_GetIocState +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x78b98814 mpt_verify_adapter +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x813a1f8a mpt_resume +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x83ef3599 mpt_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x8950bcb8 mpt_alloc_fw_memory +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x8beebcbf mpt_attach +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x9043221b mpt_halt_firmware +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xa3980ff3 mpt_put_msg_frame_hi_pri +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xa6da1e5c mpt_free_msg_frame +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xafa62e5a mptbase_sas_persist_operation +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xb22f3801 mpt_raid_phys_disk_pg0 +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xc0e69f82 mpt_device_driver_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xc41a5a4f mpt_raid_phys_disk_get_num_paths +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xc47c22e8 mpt_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xc820e7d6 mpt_HardResetHandler +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xd113ea0a mpt_device_driver_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xd16baff6 mpt_raid_phys_disk_pg1 +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xd9a92a75 mpt_reset_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xda0056e9 mpt_print_ioc_summary +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xdd805159 ioc_list +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xdec8cfd7 mpt_set_taskmgmt_in_progress_flag +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xdf81d3c2 mpt_clear_taskmgmt_in_progress_flag +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xe6880de3 mpt_free_fw_memory +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xf2633989 mpt_reset_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xf5352ad7 mpt_get_msg_frame +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xf7e05273 mpt_put_msg_frame +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xfa4083ab mpt_detach +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xfccdb792 mpt_Soft_Hard_ResetHandler +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x05bef4f6 mptscsih_abort +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x08ed99e9 mptscsih_ioc_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x0d25adb3 mptscsih_get_scsi_lookup +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x0dcbb2fe mptscsih_slave_configure +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x1f6582da mptscsih_bus_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x2d3ebce4 mptscsih_io_done +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x46fbe670 mptscsih_is_phys_disk +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x5869d7b7 mptscsih_bios_param +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x5c58e137 mptscsih_show_info +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x5f21aa4c mptscsih_change_queue_depth +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x606646a0 mptscsih_info +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x68e5b6c9 mptscsih_slave_destroy +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x723749c7 mptscsih_flush_running_cmds +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x7df465d8 mptscsih_resume +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x8c403869 mptscsih_qcmd +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x8eaaea1d mptscsih_taskmgmt_response_code +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x8ff1ec90 mptscsih_host_attrs +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x93329b21 mptscsih_remove +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xa29b239f mptscsih_event_process +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xb0bad056 mptscsih_suspend +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xb2ae8439 mptscsih_dev_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xb976b9f7 mptscsih_raid_id_to_num +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xc1ec2f7d mptscsih_scandv_complete +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xc717de1c mptscsih_taskmgmt_complete +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xd1a37e1d mptscsih_shutdown +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xe22dac92 mptscsih_host_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xed14ecb5 mptscsih_IssueTaskMgmt +EXPORT_SYMBOL drivers/mfd/cros_ec 0x16306646 cros_ec_register +EXPORT_SYMBOL drivers/mfd/cros_ec 0x41248544 cros_ec_resume +EXPORT_SYMBOL drivers/mfd/cros_ec 0x56460c11 cros_ec_remove +EXPORT_SYMBOL drivers/mfd/cros_ec 0x7db4f9bd cros_ec_suspend +EXPORT_SYMBOL drivers/mfd/dln2 0x8786a43f dln2_register_event_cb +EXPORT_SYMBOL drivers/mfd/dln2 0xc609e97a dln2_transfer +EXPORT_SYMBOL drivers/mfd/dln2 0xcba8745e dln2_unregister_event_cb +EXPORT_SYMBOL drivers/mfd/htc-pasic3 0x8508fe4f pasic3_write_register +EXPORT_SYMBOL drivers/mfd/htc-pasic3 0xb07adf07 pasic3_read_register +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x21f1f75f mc13xxx_reg_write +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x2da9f635 mc13xxx_irq_mask +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x46be8116 mc13xxx_lock +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x46ea6be0 mc13xxx_irq_free +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x55a85a77 mc13xxx_irq_unmask +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x8de5b8bd mc13xxx_irq_status +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x9c066bae mc13xxx_get_flags +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x9fa2388e mc13xxx_unlock +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xc271fad4 mc13xxx_reg_read +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xc415d90f mc13xxx_reg_rmw +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xc4ab131b mc13xxx_irq_request +EXPORT_SYMBOL drivers/mfd/tps6105x 0x0a52d3e4 tps6105x_get +EXPORT_SYMBOL drivers/mfd/tps6105x 0xa1ade373 tps6105x_mask_and_set +EXPORT_SYMBOL drivers/mfd/tps6105x 0xd7bf7630 tps6105x_set +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-irq 0x430b9bbd wm8994_irq_exit +EXPORT_SYMBOL drivers/mfd/wm8994-irq 0x7ca6f35d wm8994_irq_init +EXPORT_SYMBOL drivers/mfd/wm8994-regmap 0x21f205db wm1811_regmap_config +EXPORT_SYMBOL drivers/mfd/wm8994-regmap 0x69c2bacf wm8994_base_regmap_config +EXPORT_SYMBOL drivers/mfd/wm8994-regmap 0x8caabc6f wm8994_regmap_config +EXPORT_SYMBOL drivers/mfd/wm8994-regmap 0xbe9007f6 wm8958_regmap_config +EXPORT_SYMBOL drivers/misc/ad525x_dpot 0x2199a243 ad_dpot_probe +EXPORT_SYMBOL drivers/misc/ad525x_dpot 0xa831fa43 ad_dpot_remove +EXPORT_SYMBOL drivers/misc/altera-stapl/altera-stapl 0xad231c72 altera_init +EXPORT_SYMBOL drivers/misc/c2port/core 0x5b57152d c2port_device_register +EXPORT_SYMBOL drivers/misc/c2port/core 0xa0cd3473 c2port_device_unregister +EXPORT_SYMBOL drivers/misc/ioc4 0x933d5bdb ioc4_unregister_submodule +EXPORT_SYMBOL drivers/misc/ioc4 0xfe626bf3 ioc4_register_submodule +EXPORT_SYMBOL drivers/misc/mei/mei 0x50147b5a __tracepoint_mei_reg_read +EXPORT_SYMBOL drivers/misc/mei/mei 0xb413892a __tracepoint_mei_reg_write +EXPORT_SYMBOL drivers/misc/tifm_core 0x056acb3a tifm_free_device +EXPORT_SYMBOL drivers/misc/tifm_core 0x0f42a275 tifm_add_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0x3261bfa2 tifm_unregister_driver +EXPORT_SYMBOL drivers/misc/tifm_core 0x39f86aa1 tifm_queue_work +EXPORT_SYMBOL drivers/misc/tifm_core 0x5b3adfb8 tifm_remove_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0x62516ba1 tifm_has_ms_pif +EXPORT_SYMBOL drivers/misc/tifm_core 0xa930ff95 tifm_alloc_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0xaab96199 tifm_alloc_device +EXPORT_SYMBOL drivers/misc/tifm_core 0xafaa5bf6 tifm_register_driver +EXPORT_SYMBOL drivers/misc/tifm_core 0xafc84276 tifm_map_sg +EXPORT_SYMBOL drivers/misc/tifm_core 0xb0683d47 tifm_unmap_sg +EXPORT_SYMBOL drivers/misc/tifm_core 0xda16f513 tifm_eject +EXPORT_SYMBOL drivers/misc/tifm_core 0xf2b8b9a2 tifm_free_adapter +EXPORT_SYMBOL drivers/mmc/card/mmc_block 0x9f4f865d mmc_cleanup_queue +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x062ec3d8 cfi_send_gen_cmd +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x591f990b cfi_build_cmd +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x5b51acba cfi_varsize_frob +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x9864766b cfi_build_cmd_addr +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0xae092e50 cfi_read_pri +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0xaff1c1e7 cfi_fixup +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0xe17f1ca1 cfi_merge_status +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0xff9fa623 cfi_udelay +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0x1ce186eb unregister_mtd_chip_driver +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0x23f322ab do_map_probe +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0x861cbdcf map_destroy +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0xd915e957 register_mtd_chip_driver +EXPORT_SYMBOL drivers/mtd/chips/gen_probe 0x608565fe mtd_do_chip_probe +EXPORT_SYMBOL drivers/mtd/lpddr/lpddr_cmds 0x4ced3e56 lpddr_cmdset +EXPORT_SYMBOL drivers/mtd/maps/map_funcs 0x6430b375 simple_map_init +EXPORT_SYMBOL drivers/mtd/mtd 0x079cc9d2 mtd_concat_create +EXPORT_SYMBOL drivers/mtd/mtd 0xf0c9e721 mtd_concat_destroy +EXPORT_SYMBOL drivers/mtd/nand/denali 0xbf4f302f denali_remove +EXPORT_SYMBOL drivers/mtd/nand/denali 0xd3266795 denali_init +EXPORT_SYMBOL drivers/mtd/nand/nand 0x063f28cf nand_scan_bbt +EXPORT_SYMBOL drivers/mtd/nand/nand 0x333ae2c1 nand_scan_ident +EXPORT_SYMBOL drivers/mtd/nand/nand 0x650e7e43 nand_scan +EXPORT_SYMBOL drivers/mtd/nand/nand 0xaf8769ca nand_scan_tail +EXPORT_SYMBOL drivers/mtd/nand/nand 0xef44bae3 nand_unlock +EXPORT_SYMBOL drivers/mtd/nand/nand 0xef859391 onfi_async_timing_mode_to_sdr_timings +EXPORT_SYMBOL drivers/mtd/nand/nand 0xfc379abe nand_lock +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0x45d35025 nand_bch_calculate_ecc +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0x4bc0407c nand_bch_init +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0x70097aa0 nand_bch_free +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0x779e6d23 nand_bch_correct_data +EXPORT_SYMBOL drivers/mtd/nand/nand_ecc 0x296e9e6d nand_calculate_ecc +EXPORT_SYMBOL drivers/mtd/nand/nand_ecc 0x3132ee65 __nand_calculate_ecc +EXPORT_SYMBOL drivers/mtd/nand/nand_ecc 0xa7605b3d nand_correct_data +EXPORT_SYMBOL drivers/mtd/nand/nand_ecc 0xb4b94377 __nand_correct_data +EXPORT_SYMBOL drivers/mtd/nand/nand_ids 0x8cfcf75c nand_flash_ids +EXPORT_SYMBOL drivers/mtd/nand/nand_ids 0xa336feb7 nand_manuf_ids +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0x521610d0 onenand_scan_bbt +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0xe4412539 onenand_default_bbt +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0xe8715bc5 flexonenand_region +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0xf7934d66 onenand_addr +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x5301d7ba alloc_arcdev +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x6534792a arcnet_debug +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x7085a849 arcnet_open +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x7aac8b21 arc_proto_map +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x7d0bdc30 arc_raw_proto +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xa04290d0 arcnet_unregister_proto +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xb25c3508 arcnet_timeout +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xb7b0a79c arcnet_close +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xc9e348d7 arc_proto_default +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xcd61da95 arcnet_send_packet +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xecb730b0 arcnet_interrupt +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xeea5d159 arc_bcast_proto +EXPORT_SYMBOL drivers/net/arcnet/com20020 0x1aed3ff9 com20020_netdev_ops +EXPORT_SYMBOL drivers/net/arcnet/com20020 0x453ff3c8 com20020_found +EXPORT_SYMBOL drivers/net/arcnet/com20020 0x8aa9bc03 com20020_check +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x119721ac ei_interrupt +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x14988c09 ei_start_xmit +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x227115ab ei_tx_timeout +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x3808fb02 ei_poll +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x5f527e90 ei_set_multicast_list +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x99ac46f2 ei_close +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x9f754540 ei_open +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xb963635e ei_netdev_ops +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xcec7e035 __alloc_ei_netdev +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xdfe8631d ei_get_stats +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xfa54b11b NS8390_init +EXPORT_SYMBOL drivers/net/ethernet/8390/8390p 0x0bb83922 eip_set_multicast_list +EXPORT_SYMBOL drivers/net/ethernet/8390/8390p 0x22dfc273 NS8390p_init +EXPORT_SYMBOL drivers/net/ethernet/8390/8390p 0x6bc8dd80 eip_close +EXPORT_SYMBOL drivers/net/ethernet/8390/8390p 0x9532f2e0 __alloc_eip_netdev +EXPORT_SYMBOL drivers/net/ethernet/8390/8390p 0x99c03fd7 eip_interrupt +EXPORT_SYMBOL drivers/net/ethernet/8390/8390p 0x99ee7913 eip_open +EXPORT_SYMBOL drivers/net/ethernet/8390/8390p 0xb9b8b6e6 eip_tx_timeout +EXPORT_SYMBOL drivers/net/ethernet/8390/8390p 0xb9bd862f eip_netdev_ops +EXPORT_SYMBOL drivers/net/ethernet/8390/8390p 0xbfd87083 eip_get_stats +EXPORT_SYMBOL drivers/net/ethernet/8390/8390p 0xdeab09e0 eip_poll +EXPORT_SYMBOL drivers/net/ethernet/8390/8390p 0xf5e823da eip_start_xmit +EXPORT_SYMBOL drivers/net/ethernet/broadcom/bnx2x/bnx2x 0x0e8aef72 bnx2x_schedule_sp_rtnl +EXPORT_SYMBOL drivers/net/ethernet/broadcom/cnic 0x636af174 cnic_unregister_driver +EXPORT_SYMBOL drivers/net/ethernet/broadcom/cnic 0x65fb4388 cnic_register_driver +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x004730a2 cxgb3_remove_tid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x39651b4b cxgb3_unregister_client +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x47a10841 cxgb3_register_client +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x57145e28 t3_l2t_send_event +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x59d30545 cxgb3_queue_tid_release +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x64451698 cxgb3_alloc_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x68b1d81e cxgb3_free_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x7c940a8d cxgb3_ofld_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x8479012b t3_register_cpl_handler +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x85025349 dev2t3cdev +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x8ccdfa40 cxgb3_free_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x9dc6cb48 cxgb3_insert_tid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xb83dfb4b t3_l2t_get +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xc5d4e176 t3_l2e_free +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xd5ac69aa cxgb3_alloc_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xf6b38798 t3_l2t_send_slow +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x0a7451b0 cxgb4_dcb_enabled +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x0bb50a7f cxgb4_read_sge_timestamp +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x12cc0d1a cxgb4_free_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x2160b36e cxgb4_ofld_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x26e05a11 cxgb4_select_ntuple +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x28fc61d8 cxgb4_flush_eq_cache +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x2d9c44a3 cxgb4_pktgl_to_skb +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x312a3625 cxgb4_clip_release +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x3426919f cxgb4_sync_txq_pidx +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x3487b86d cxgb4_create_server6 +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x3a8133c5 cxgb4_bar2_sge_qregs +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x3dfdb2ad cxgb4_alloc_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x45cdf96a cxgb4_port_chan +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x48e845bc cxgb4_get_tcp_stats +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x4acee252 cxgb4_register_uld +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x50ee5c07 cxgb4_best_aligned_mtu +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x522427af cxgb4_create_server +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x5b2f4559 cxgb4_iscsi_init +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x7f90343a cxgb4_update_root_dev_clip +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x92fdce2d cxgb4_remove_server_filter +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x9b629913 cxgb4_l2t_release +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xa5a372c5 cxgb4_clip_get +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xadbcf224 cxgb4_l2t_get +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xbfcd92e4 cxgb4_remove_server +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xc0809716 cxgb4_create_server_filter +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xc6f2224d cxgb4_alloc_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xcbf2b07d cxgb4_port_viid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xd00e5a36 cxgb4_unregister_uld +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xd69a0294 cxgb4_best_mtu +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xd74a302a cxgb4_remove_tid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xdc0ea5a9 cxgb4_read_tpte +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xde2450b9 cxgb4_dbfifo_count +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xe6a9bb39 cxgb4_l2t_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xec185ec3 cxgb4_alloc_sftid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xf22dea54 t4_cleanup_clip_tbl +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xf7b173c3 cxgb4_port_idx +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xfa970f85 cxgb4_free_atid +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0x0e712340 vnic_dev_get_res +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0x37084a9f vnic_dev_get_pdev +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0x4f650da7 vnic_dev_get_res_count +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0x57e97126 vnic_dev_register +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0x9196d804 vnic_dev_unregister +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0xfb817b88 enic_api_devcmd_proxy_by_index +EXPORT_SYMBOL drivers/net/ethernet/emulex/benet/be2net 0x78338996 be_roce_register_driver +EXPORT_SYMBOL drivers/net/ethernet/emulex/benet/be2net 0xbab62e22 be_roce_mcc_cmd +EXPORT_SYMBOL drivers/net/ethernet/emulex/benet/be2net 0xbae56f5c be_roce_unregister_driver +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x028d4cc3 mlx4_get_eqs_per_port +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x04ff6cdb mlx4_get_roce_gid_from_slave +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1454e3e1 mlx4_test_interrupts +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x238f3cb1 mlx4_is_eq_vector_valid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x27318770 mlx4_gen_pkey_eqe +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x28119841 mlx4_release_eq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2ef6c750 mlx4_gen_guid_change_eqe +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x34507438 mlx4_ALLOCATE_VPP_get +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3823ca65 mlx4_SET_VPORT_QOS_set +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4e765021 mlx4_SET_PORT_general +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4f5aea30 mlx4_gen_port_state_change_eqe +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x61e7d35c mlx4_SET_VPORT_QOS_get +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x67210cce mlx4_get_slave_pkey_gid_tbl_len +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x78132712 mlx4_SET_PORT_SCHEDULER +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x846481a5 mlx4_SET_MCAST_FLTR +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x88a774bb mlx4_get_cpu_rmap +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9273e4f9 mlx4_eq_get_irq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x99daa7dd mlx4_get_slave_from_roce_gid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9dc5ed16 mlx4_get_slave_port_state +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9dea0744 mlx4_get_slave_node_guid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa7d3e06c mlx4_sync_pkey_table +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc2bb046c mlx4_SET_PORT_BEACON +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xcd05f6a8 mlx4_ALLOCATE_VPP_set +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xce452f66 set_and_calc_slave_port_state +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd03ba0ec mlx4_SET_PORT_PRIO2TC +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd7e06e50 mlx4_is_eq_shared +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xda2b16f4 mlx4_SET_PORT_qpn_calc +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xdba3d375 mlx4_is_slave_active +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe4af7ac3 mlx4_put_slave_node_guid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe7b461c3 mlx4_assign_eq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe9a6054b mlx4_gen_slaves_port_mgt_ev +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe9cbe9da mlx4_get_parav_qkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xed373c44 mlx4_get_module_info +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf596a9ea mlx4_SET_PORT_VXLAN +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf8b6a7ec mlx4_SET_PORT_fcs_check +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xfbff19c9 mlx4_tunnel_steer_add +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x0223d5fb mlx5_register_interface +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x0450786b mlx5_vector2eqn +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x0857aabd mlx5_get_flow_table_id +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x0eb7287e mlx5_del_flow_table_entry +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x111d228a mlx5_cmd_alloc_uar +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x167e08c8 mlx5_alloc_map_uar +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x27a580b6 mlx5_cmd_init +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x2edf78ca mlx5_debugfs_root +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x336c043e mlx5_get_protocol_dev +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x45e852a5 mlx5_core_query_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x48455ce2 mlx5_core_get_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x48c930ef mlx5_core_create_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x4fca2865 mlx5_core_query_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x51a1ce87 mlx5_create_flow_table +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x51e0511b mlx5_core_create_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x75bfa4fc mlx5_core_query_vendor_id +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x7ba8a0aa mlx5_core_arm_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x8c3fae3b mlx5_core_create_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x8c7f70d7 mlx5_core_destroy_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x8c81fa1a mlx5_core_dealloc_pd +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x8dea4e2c mlx5_cmd_cleanup +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x91734351 mlx5_core_modify_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x946215a8 mlx5_cmd_exec_cb +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x988f9919 mlx5_core_create_psv +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x9d8bcdd8 mlx5_cmd_exec +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa1391a25 mlx5_cmd_comp_handler +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xaa5c49d0 mlx5_core_query_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xc52fb3bd mlx5_unmap_free_uar +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xc7605b16 mlx5_core_alloc_pd +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xca828480 mlx5_query_nic_vport_mac_address +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xcd91f6e8 mlx5_core_dump_fill_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xdcf50068 mlx5_core_destroy_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xde3a55dc mlx5_core_detach_mcg +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xdfef5add mlx5_cmd_free_uar +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe1081300 mlx5_unregister_interface +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe6af33e4 mlx5_destroy_flow_table +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf00eaef1 mlx5_query_vport_state +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf0286009 mlx5_core_destroy_psv +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf7258a5e mlx5_core_destroy_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xfbe341ee mlx5_core_attach_mcg +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xfc728a49 mlx5_add_flow_table_entry +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x4a424d23 hdlcdrv_register +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x812ce68c hdlcdrv_transmitter +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0xaa0ce6be hdlcdrv_receiver +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0xc6d1120a hdlcdrv_arbitrate +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0xe3acf344 hdlcdrv_unregister +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x16b9a1ba irda_unregister_dongle +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x1842ca87 sirdev_write_complete +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x27255d70 sirdev_receive +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x4e927367 irda_register_dongle +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xb2db3723 sirdev_get_instance +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xc2a622cd sirdev_set_dongle +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xd5e3cd2d sirdev_raw_write +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xf78c2414 sirdev_set_dtr_rts +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xf9815dad sirdev_raw_read +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xff94a055 sirdev_put_instance +EXPORT_SYMBOL drivers/net/mdio 0x22bce513 mdio_mii_ioctl +EXPORT_SYMBOL drivers/net/mdio 0x43e4defc mdio45_nway_restart +EXPORT_SYMBOL drivers/net/mdio 0x7577f992 mdio_set_flag +EXPORT_SYMBOL drivers/net/mdio 0xa1a29548 mdio45_probe +EXPORT_SYMBOL drivers/net/mdio 0xc6b1163f mdio45_links_ok +EXPORT_SYMBOL drivers/net/mdio 0xddc98749 mdio45_ethtool_gset_npage +EXPORT_SYMBOL drivers/net/mii 0x1311cadd mii_check_media +EXPORT_SYMBOL drivers/net/mii 0x461e6cd0 mii_ethtool_gset +EXPORT_SYMBOL drivers/net/mii 0x482a13d4 mii_nway_restart +EXPORT_SYMBOL drivers/net/mii 0x511c59d2 generic_mii_ioctl +EXPORT_SYMBOL drivers/net/mii 0x7d364dec mii_check_gmii_support +EXPORT_SYMBOL drivers/net/mii 0xa54a4752 mii_ethtool_sset +EXPORT_SYMBOL drivers/net/mii 0xcf1a580c mii_check_link +EXPORT_SYMBOL drivers/net/mii 0xd1f36f65 mii_link_ok +EXPORT_SYMBOL drivers/net/phy/mdio-bitbang 0x67767963 free_mdio_bitbang +EXPORT_SYMBOL drivers/net/phy/mdio-bitbang 0xfcb9a22d alloc_mdio_bitbang +EXPORT_SYMBOL drivers/net/phy/vitesse 0x15118a39 vsc824x_add_skew +EXPORT_SYMBOL drivers/net/ppp/pppox 0x6847f496 register_pppox_proto +EXPORT_SYMBOL drivers/net/ppp/pppox 0x689d1efe pppox_unbind_sock +EXPORT_SYMBOL drivers/net/ppp/pppox 0xa5f4e486 pppox_ioctl +EXPORT_SYMBOL drivers/net/ppp/pppox 0xe0ff7a18 unregister_pppox_proto +EXPORT_SYMBOL drivers/net/sungem_phy 0x4239f749 sungem_phy_probe +EXPORT_SYMBOL drivers/net/team/team 0x6e18c6b3 team_options_register +EXPORT_SYMBOL drivers/net/team/team 0x7f6c0a52 team_modeop_port_enter +EXPORT_SYMBOL drivers/net/team/team 0x99cab7a4 team_options_change_check +EXPORT_SYMBOL drivers/net/team/team 0xad52f3dc team_modeop_port_change_dev_addr +EXPORT_SYMBOL drivers/net/team/team 0xcd8c867c team_mode_register +EXPORT_SYMBOL drivers/net/team/team 0xcdfa493a team_options_unregister +EXPORT_SYMBOL drivers/net/team/team 0xdce4967f team_option_inst_set_change +EXPORT_SYMBOL drivers/net/team/team 0xdd45c3e1 team_mode_unregister +EXPORT_SYMBOL drivers/net/usb/usbnet 0x9912d435 usbnet_manage_power +EXPORT_SYMBOL drivers/net/usb/usbnet 0x9c456707 usbnet_link_change +EXPORT_SYMBOL drivers/net/usb/usbnet 0xf21250a1 usbnet_device_suggests_idle +EXPORT_SYMBOL drivers/net/wan/hdlc 0x1d517cfe hdlc_change_mtu +EXPORT_SYMBOL drivers/net/wan/hdlc 0x4311b76b unregister_hdlc_device +EXPORT_SYMBOL drivers/net/wan/hdlc 0x4827e507 alloc_hdlcdev +EXPORT_SYMBOL drivers/net/wan/hdlc 0x6d2c0331 hdlc_close +EXPORT_SYMBOL drivers/net/wan/hdlc 0x70bf4fa6 detach_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0x9272be27 attach_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0xb9e2ccca register_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0xcc2f7837 hdlc_ioctl +EXPORT_SYMBOL drivers/net/wan/hdlc 0xe1f7b702 unregister_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0xfa6b322f hdlc_start_xmit +EXPORT_SYMBOL drivers/net/wan/hdlc 0xfd14a0c7 hdlc_open +EXPORT_SYMBOL drivers/net/wan/z85230 0x05a1a014 z8530_describe +EXPORT_SYMBOL drivers/net/wan/z85230 0x08575bea z8530_sync_open +EXPORT_SYMBOL drivers/net/wan/z85230 0x10c78988 z8530_dead_port +EXPORT_SYMBOL drivers/net/wan/z85230 0x15010aa6 z8530_sync +EXPORT_SYMBOL drivers/net/wan/z85230 0x35cd83e9 z8530_sync_txdma_close +EXPORT_SYMBOL drivers/net/wan/z85230 0x40e37f6d z8530_init +EXPORT_SYMBOL drivers/net/wan/z85230 0x5501e02e z8530_nop +EXPORT_SYMBOL drivers/net/wan/z85230 0x59347a5a z8530_queue_xmit +EXPORT_SYMBOL drivers/net/wan/z85230 0x5cd24d29 z8530_hdlc_kilostream +EXPORT_SYMBOL drivers/net/wan/z85230 0x5e4ebdb6 z8530_sync_close +EXPORT_SYMBOL drivers/net/wan/z85230 0x5ec94e98 z8530_sync_dma_close +EXPORT_SYMBOL drivers/net/wan/z85230 0x8fa475ea z8530_sync_dma_open +EXPORT_SYMBOL drivers/net/wan/z85230 0xb3a31501 z8530_null_rx +EXPORT_SYMBOL drivers/net/wan/z85230 0xd4ffebf0 z8530_interrupt +EXPORT_SYMBOL drivers/net/wan/z85230 0xde9b4a28 z8530_channel_load +EXPORT_SYMBOL drivers/net/wan/z85230 0xe038f0ba z8530_sync_txdma_open +EXPORT_SYMBOL drivers/net/wan/z85230 0xe3d80064 z8530_hdlc_kilostream_85230 +EXPORT_SYMBOL drivers/net/wan/z85230 0xf96f8e71 z8530_shutdown +EXPORT_SYMBOL drivers/net/wimax/i2400m/i2400m 0xf1960105 i2400m_unknown_barker +EXPORT_SYMBOL drivers/net/wireless/airo 0x3b885841 stop_airo_card +EXPORT_SYMBOL drivers/net/wireless/airo 0x9d673389 reset_airo_card +EXPORT_SYMBOL drivers/net/wireless/airo 0xab3a26c5 init_airo_card +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x03d16ffd ath_printk +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x0b8c5d2e ath_hw_keyreset +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x0cabc29e dfs_pattern_detector_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x319c6026 ath_is_49ghz_allowed +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x382f1a7b ath_is_mybeacon +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x5a5ed3e9 ath_hw_cycle_counters_update +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x63632357 ath_key_config +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x6f0f6daf ath_rxbuf_alloc +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x80911ea9 ath_hw_get_listen_time +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x90747029 ath_key_delete +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xaafdb617 ath_is_world_regd +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xdf9c8c6e ath_hw_setbssidmask +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xea7e5e45 ath_regd_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xf1446c78 ath_reg_notifier_apply +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xfb4de67a ath_regd_get_band_ctl +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x084b8197 ath10k_core_destroy +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x1cae1628 ath10k_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x1d182bd4 ath10k_core_stop +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x242bbecc ath10k_err +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x47e184b6 ath10k_core_unregister +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x505dbf83 ath10k_print_driver_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x84a6d723 ath10k_debug_get_new_fw_crash_data +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x895bee98 ath10k_core_create +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xd19e4437 ath10k_warn +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xe21d54f1 ath10k_core_start +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xf6dcf75b ath10k_core_register +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x0546234e ath6kl_core_cleanup +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x3b1322d1 ath6kl_core_rx_complete +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x40b794ca ath6kl_cfg80211_suspend +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x5b7c7adc ath6kl_core_destroy +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x74a6fb7a ath6kl_core_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x7b317424 ath6kl_printk +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x80a09613 ath6kl_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x8f81fd20 ath6kl_core_create +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x91cfb84a ath6kl_hif_rw_comp_handler +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xa699e10c ath6kl_cfg80211_resume +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xa6f66cc1 ath6kl_warn +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xcb014460 ath6kl_err +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xd2d3254e ath6kl_stop_txrx +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xfa70ec30 ath6kl_hif_intr_bh_handler +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xfad5211d ath6kl_core_tx_complete +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x15c21006 ath9k_cmn_get_hw_crypto_keytype +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x19012043 ath9k_cmn_get_channel +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x1d029713 ath9k_cmn_debug_base_eeprom +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x2086a645 ath9k_cmn_spectral_scan_config +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x2a5d34c0 ath9k_cmn_spectral_deinit_debug +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x2d15177d ath9k_cmn_debug_stat_rx +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x31e53762 ath9k_cmn_beacon_config_ap +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x3a7b1ff1 ath9k_cmn_debug_recv +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x43b9ef5e ath9k_cmn_spectral_scan_trigger +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x480cb6f7 ath9k_cmn_setup_ht_cap +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x4dc935a5 ath9k_cmn_debug_phy_err +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x5b914ee3 ath9k_cmn_reload_chainmask +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x7786f728 ath_cmn_process_fft +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x7cde39fc ath9k_cmn_process_rate +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x84d97394 ath9k_cmn_init_channels_rates +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x8e9f6671 ath9k_cmn_beacon_config_adhoc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xbeabb052 ath9k_cmn_debug_modal_eeprom +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xc1070d86 ath9k_cmn_init_crypto +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xc9455741 ath9k_cmn_update_txpow +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xd2981357 ath9k_cmn_count_streams +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xdb0f444f ath9k_cmn_rx_accept +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xe3c7089e ath9k_cmn_rx_skb_postprocess +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xefbbdbf2 ath9k_cmn_process_rssi +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xfc3f4197 ath9k_cmn_spectral_init_debug +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xfeffb3fb ath9k_cmn_beacon_config_sta +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x080bebfe ar9003_mci_state +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0bf4db76 ath9k_hw_setpower +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x11087bb6 ath9k_hw_reset +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1126845c ath9k_hw_setrxfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x12bdfa53 ath9k_hw_btcoex_init_scheme +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x131f0464 ath9k_hw_set_sta_beacon_timers +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x142d3a49 ar9003_paprd_is_done +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x14eb54f4 ath9k_hw_set_txpowerlimit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1548c40e ath9k_hw_gettxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x17ee685c ar9003_hw_bb_watchdog_check +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x183217fd ath9k_hw_btcoex_set_concur_txprio +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x18ac03ed ar9003_hw_bb_watchdog_dbg_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x20544b7e ath9k_hw_reset_tsf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x20c56fa6 ath9k_hw_startpcureceive +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x22b35563 ath9k_hw_puttxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x271d0991 ar9003_mci_get_interrupt +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x296c19f9 ath9k_hw_set_txq_props +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2a092873 ath9k_hw_setopmode +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2f38f2d8 ath9k_hw_computetxtime +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x309e782f ath9k_hw_disable_mib_counters +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x3166a724 ath_gen_timer_isr +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x33fa895b ath9k_hw_gettsf64 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x3441cedc ath9k_hw_setmcastfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x375cd811 ath9k_hw_stop_dma_queue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x3970ccce ath9k_hw_btcoex_init_2wire +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x3a85a211 ath9k_hw_set_rx_bufsize +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x3bdd1d96 ath9k_hw_setup_statusring +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x3da287c9 ath_gen_timer_alloc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4071a678 ar9003_mci_setup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x42cce684 ath9k_hw_init_btcoex_hw +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4626d4b5 ath9k_hw_process_rxdesc_edma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4e3e7907 ath9k_hw_abortpcurecv +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4e965ac0 ath9k_hw_getchan_noise +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x50f1af0b ath_gen_timer_free +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x512d9ebd ath9k_hw_putrxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x56811f6b ath9k_hw_getnf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x56e877e2 ath9k_hw_init_global_settings +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x584893c4 ath9k_hw_wait +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x5870380a ath9k_hw_name +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x5d1e5c88 ath9k_hw_set_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x5d8ba434 ath9k_hw_request_gpio +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x5ec3681f ath9k_hw_gen_timer_start +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x60b2374f ath9k_hw_wow_enable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x626a3bac ar9003_paprd_setup_gain_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x65d4c968 ath9k_hw_wow_apply_pattern +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6659d387 ath9k_hw_btcoex_init_mci +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7535d921 ath9k_hw_setrxabort +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x77a80fd6 ar9003_paprd_init_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7814646e ath9k_hw_stopdmarecv +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x785fa688 ath9k_hw_bstuck_nfcal +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x79705e8d ath9k_hw_numtxpending +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7c684e86 ath9k_hw_setuptxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7f222351 ath9k_hw_enable_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7fd52873 ath9k_hw_gen_timer_stop +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8403facb ar9003_paprd_populate_single_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x85a21132 ar9003_mci_set_bt_version +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8daf5b78 ath9k_hw_btcoex_init_3wire +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8fb83185 ath9k_hw_write_associd +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x93a67838 ar9003_mci_send_message +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x95948e89 ath9k_hw_btcoex_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x95e665a9 ar9003_mci_cleanup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x970e9a28 ar9003_is_paprd_enabled +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9a038e01 ath9k_hw_get_txq_props +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9b14b682 ar9003_mci_get_next_gpm_offset +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9b32a334 ath9k_hw_gpio_get +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9b3b1a8b ar9003_get_pll_sqsum_dvc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa0500c16 ath9k_hw_resettxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa49201df ath9k_hw_abort_tx_dma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa547ba8b ath9k_hw_txstart +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa5f20ded ath9k_hw_wow_wakeup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa6c91ff4 ath9k_hw_addrxbuf_edma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa7caaaa9 ath9k_hw_rxprocdesc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa86a2656 ath9k_hw_btcoex_bt_stomp +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xaaf2bb6e ath9k_hw_phy_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xad8d9bc6 ath9k_hw_deinit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xaf3dde82 ath9k_hw_check_nav +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xaf7591bf ath9k_hw_cfg_output +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb1fbe112 ath9k_hw_set_tsfadjust +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb745f640 ath9k_hw_set_tx_filter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb89690c2 ath9k_hw_btcoex_enable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb8bfb338 ath9k_hw_settsf64 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb9c90fc6 ath9k_hw_beaconq_setup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xba70a047 ar9003_paprd_create_curve +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xbbb2634e ath9k_hw_updatetxtriglevel +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xbd9a4a6b ath9k_hw_kill_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xbdd021cd ath9k_hw_gettsf32 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc040cdde ath9k_hw_reset_calvalid +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc17a368d ath9k_hw_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc4dfb8d6 ar9003_hw_disable_phy_restart +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc9987193 ar9003_mci_send_wlan_channels +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xcff21dca ath9k_hw_btcoex_set_weight +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd033b185 ath9k_hw_releasetxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd09deb79 ath9k_hw_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd4199fdd ath9k_hw_setantenna +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd4f31681 ath9k_hw_cfg_gpio_input +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd7837e70 ath9k_hw_setuprxdesc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd7fffa85 ath9k_hw_getrxfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xdc711c91 ar9003_paprd_enable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xdd352f03 ath9k_hw_beaconinit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xed29f4fc ath9k_hw_ani_monitor +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf61ae0f5 ath9k_hw_check_alive +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xfe98c25e ath9k_hw_set_gpio +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xff12af9b ath9k_hw_intrpend +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xffd02408 ath9k_hw_get_tsf_offset +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xfff98595 ath9k_hw_disable_interrupts +EXPORT_SYMBOL drivers/net/wireless/atmel 0x206b3c9c init_atmel_card +EXPORT_SYMBOL drivers/net/wireless/atmel 0x63b389c8 stop_atmel_card +EXPORT_SYMBOL drivers/net/wireless/atmel 0x83361fcb atmel_open +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x01ce5879 brcmu_pktq_mdeq +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x0b7aa53b brcmu_pkt_buf_get_skb +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x10e6e991 brcmu_pktq_pflush +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x149a0423 brcmu_pktq_penq_head +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x3f2988a1 brcmu_dotrev_str +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x3f8b2550 brcmu_pktq_pdeq_match +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x420773f3 brcmu_pktq_init +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x48098a94 brcmu_pktq_mlen +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x84f4e5e9 brcmu_pktq_penq +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x9f4b5dcf brcmu_d11_attach +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xb97246d1 brcmu_pktq_flush +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xcfcec6df brcmu_pkt_buf_free_skb +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xd261b8a6 brcmu_boardrev_str +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xe4e697d1 brcmu_pktq_pdeq +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xf4448713 brcmu_pktq_peek_tail +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xf5a0e2c8 brcmu_pktq_pdeq_tail +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x0840c7ef hostap_80211_rx +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x0ad69602 hostap_set_multicast_list_queue +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x25cfd98e hostap_set_antsel +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x2655eeda hostap_set_word +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x3cd6315c hostap_init_ap_proc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x67dad6d3 hostap_info_init +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x73415e44 hostap_set_string +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x738dd390 hostap_init_proc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x74cff98f prism2_update_comms_qual +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x836cfb6d hostap_80211_ops +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x89f84e9e hostap_info_process +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x89fd625f hostap_set_roaming +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x91bbcd04 hostap_set_encryption +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x99809652 hostap_master_start_xmit +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x9d86a182 hostap_set_auth_algs +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x9e9a431c hostap_add_interface +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xa12ad27f hostap_dump_tx_header +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xa583ca8d hostap_check_sta_fw_version +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xb16252cc hostap_remove_interface +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xb2a945e0 hostap_dump_rx_header +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xb4b77c8b hostap_80211_get_hdrlen +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xca6fc4ef hostap_get_porttype +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xca703df7 hostap_init_data +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xcbf6f900 hostap_handle_sta_tx_exc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xd846eb9d hostap_set_hostapd +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xe30e1576 hostap_set_hostapd_sta +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xebd9285d hostap_remove_proc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xf4da55b3 hostap_free_data +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xf6f8b461 hostap_setup_dev +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x01f9420c libipw_channel_to_freq +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x147f68a6 libipw_rx_mgt +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x268313be libipw_txb_free +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x48d43e38 alloc_libipw +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x4b61579b libipw_channel_to_index +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x4bbc60ad libipw_wx_get_scan +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x4f8dad5c libipw_wx_set_encode +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x620867c8 libipw_rx +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x63507a3d libipw_get_geo +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x74c85ab4 libipw_is_valid_channel +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x87357d87 libipw_get_channel_flags +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x974789a8 libipw_wx_get_encode +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x99453f14 libipw_set_geo +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x9c4e684f free_libipw +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xae7a058a libipw_get_channel +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xb4fce1cb libipw_xmit +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xd9ac195a libipw_freq_to_channel +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xd9c93418 libipw_wx_set_encodeext +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xdc5126f2 libipw_change_mtu +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xe15d25c4 libipw_wx_get_encodeext +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xf1608673 libipw_networks_age +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x00f7ea53 il_power_initialize +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x048a8c17 il_init_geos +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x09300fe6 il_mac_flush +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x09840274 il_cmd_queue_free +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x0b4ed3dc _il_poll_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x0bf80eea il_rx_queue_space +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x0c9ec3e4 il_mac_add_interface +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x0e481eec il_hdl_pm_sleep +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x0f67b184 il_send_stats_request +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x101a8703 il_add_beacon_time +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x1291b29e il_eeprom_query16 +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x12b4c7cc il_tx_queue_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x12f62119 il_clear_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x15c6fc40 il_setup_scan_deferred_work +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x1707a4d4 il_check_rxon_cmd +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x17cbcb93 il_connection_init_rx_config +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x1e5e5a87 il_fill_probe_req +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x22804a6c il_is_ht40_tx_allowed +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x2314686a il_tx_queue_free +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x23d784a2 il_rd_prph +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x24bc7460 il_read_targ_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x2d415249 il_dbgfs_register +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x31f39025 il_init_scan_params +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x33da57a5 il_hdl_pm_debug_stats +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x33e71451 il_scan_cancel +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x35edfe83 il_restore_stations +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x37a21c79 il_clear_ucode_stations +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x382eb90f il_init_channel_map +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x3e97fe5c il_tx_queue_unmap +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x3ef15c5a il_hdl_csa +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x412787ac il_rx_queue_update_write_ptr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x41addafd il_eeprom_free +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x43891721 il_eeprom_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x45f0e684 il_get_free_ucode_key_idx +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4778b34d il_free_geos +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4aa39103 il_get_cmd_string +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4d8b24c8 il_cmd_queue_unmap +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4e63f847 il_leds_exit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x52b287d4 il_mac_remove_interface +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x564c6740 il_debug_level +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x603f94b6 il_setup_watchdog +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x61926fdb il_setup_rx_scan_handlers +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x63cab1c2 il_tx_cmd_complete +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x737e3a30 il_mac_hw_scan +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x76a0901a il_scan_cancel_timeout +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x78a4cbdc _il_apm_stop +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x7d34fb7c il_mac_sta_remove +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x7d8e9838 il_power_update_mode +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x7ddf540e il_rx_queue_alloc +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x7e91cc6a il_send_add_sta +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x7f93bedb il_irq_handle_error +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x82684ace il_write_targ_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x8361b21c il_set_rate +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x84fa47e9 il_get_passive_dwell_time +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x865445c9 il_pm_ops +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x8da3b0b5 il_send_cmd_pdu_async +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x8de0d045 il_dbgfs_unregister +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x8e08ea1d il_send_rxon_timing +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x9398080e il_send_cmd_sync +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x941d81c6 il_alloc_txq_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x9504d783 il_get_single_channel_number +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x974e3402 il_send_lq_cmd +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x984d789a il_hdl_error +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x99ae4638 il_send_bt_config +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x9ad82c63 il_set_decrypted_flag +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x9fbab4f0 il_chswitch_done +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa2432a84 il_send_cmd_pdu +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa2a33a7e il_force_reset +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa4e567e5 il_get_lowest_plcp +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xae36d2b8 il_usecs_to_beacons +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xaf8d730a il_set_rxon_ht +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb011f2de il_apm_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb2c13794 il_mac_conf_tx +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb3dbcacd il_mac_change_interface +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb427ef4c il_set_rxon_hwcrypto +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb46cf360 il_poll_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb7bd33ff il_isr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb89e3a97 il_full_rxon_required +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xba5889d2 il_mac_config +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xbabf8dac il_mac_reset_tsf +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xbf966cb7 il_set_rxon_channel +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc39cf12c il_bg_watchdog +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc581fc1e il_set_flags_for_band +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xcbe6f6b9 il_free_txq_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd5eaa79d il_txq_update_write_ptr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd793ad40 il_mac_bss_info_changed +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd8d4c26a il_eeprom_query_addr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xdb9c36f9 il_set_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe2f24211 il_update_stats +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe305a8a5 il_leds_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe435493a il_queue_space +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe4fa6c7b il_add_station_common +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe6826bfb il_cancel_scan_deferred_work +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe8823982 il_wr_prph +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe9b5b5ff il_apm_stop +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xecf9edcf il_set_tx_power +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf1f24e60 il_free_channel_map +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf3470552 il_hdl_spectrum_measurement +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf501278b il_bcast_addr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf6177968 il_get_active_dwell_time +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf84face9 il_get_channel_info +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf8d01d4f il_send_cmd +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xfb021c27 il_tx_queue_reset +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xff6c6e9b il_tx_cmd_protection +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x08ee1e7d __tracepoint_iwlwifi_dev_ucode_event +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x0d9eb5ff __tracepoint_iwlwifi_dev_ucode_wrap_event +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x36dcef55 __tracepoint_iwlwifi_dev_iowrite32 +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x67381a2a __tracepoint_iwlwifi_dev_ucode_error +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x7edec07d __tracepoint_iwlwifi_dev_ioread32 +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x9a12c9c5 __tracepoint_iwlwifi_dev_ucode_cont_event +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0xc0827b2f __tracepoint_iwlwifi_dev_iowrite8 +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x01fb6127 orinoco_init +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x02cf7fcf hermes_struct_init +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x2493b028 orinoco_down +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x2ad504d4 orinoco_get_stats +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x40e10d47 orinoco_set_multicast_list +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x474436e9 alloc_orinocodev +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x553cb75e __orinoco_ev_rx +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x6d2ced0d orinoco_tx_timeout +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x6fea8618 orinoco_if_del +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x749102ff orinoco_change_mtu +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x83544494 orinoco_stop +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x90d61528 orinoco_up +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x996710b3 orinoco_process_xmit_skb +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x9d74c97e orinoco_if_add +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xa4c34e67 orinoco_open +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xac19b1db __orinoco_ev_info +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xcac733f3 free_orinocodev +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xffe27bca orinoco_interrupt +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/btcoexist/btcoexist 0xad4f934a rtl_btc_get_ops_pointer +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x01cb1c33 rtl92c_phy_query_bb_reg +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x0504654a rtl92c_phy_update_txpower_dbm +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x09214ac8 rtl92c_dm_rf_saving +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x09a007c3 _rtl92c_phy_bb8192c_config_parafile +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x0b2934e1 rtl92c_dm_check_txpower_tracking +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x1c8165e4 rtl92c_dm_write_dig +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x27cff5a9 rtl92c_phy_set_txpower_level +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x2806ab62 rtl92c_phy_set_io_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x3276e6fe _rtl92c_phy_set_rf_sleep +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x38f8d8f3 _rtl92c_phy_fw_rf_serial_write +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x4199254d rtl92c_phy_set_io +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x432447a9 rtl92ce_phy_set_rf_on +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x57d80384 rtl92c_phy_set_rfpath_switch +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x58b3141b _rtl92c_phy_txpwr_idx_to_dbm +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x5e37aff5 rtl92c_phy_rf_config +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x5ee935fa _rtl92c_phy_rf_serial_write +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x641c07f0 rtl92c_download_fw +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x66ebee0e rtl8192_phy_check_is_legal_rfpath +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x6fe16ba9 rtl92c_set_fw_joinbss_report_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x75af950a _rtl92c_store_pwrIndex_diffrate_offset +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x78663408 rtl92c_phy_set_bw_mode +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x7a68e51d rtl92c_dm_init_rate_adaptive_mask +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x7abd3ce8 rtl92c_dm_init_edca_turbo +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x8644f24e rtl92c_dm_init +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x943ba125 rtl92c_fill_h2c_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x990872d7 rtl92c_dm_watchdog +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x99cae24a rtl92c_set_fw_pwrmode_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xb082fae6 _rtl92c_phy_dbm_to_txpwr_idx +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xb0dbc76a rtl92c_bt_rssi_state_change +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xb3314d48 _rtl92c_phy_calculate_bit_shift +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xb63587b7 rtl92c_phy_sw_chnl_callback +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xb7a6acb8 rtl92c_phy_sw_chnl +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xb8ea9750 rtl92c_phy_set_bb_reg +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xc505f645 rtl92c_phy_iq_calibrate +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xcd1b2e72 rtl92c_firmware_selfreset +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xcf9bdc09 rtl92c_dm_bt_coexist +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xe4a9dfd5 _rtl92c_phy_fw_rf_serial_read +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xe4db0751 rtl92c_phy_ap_calibrate +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xecd2c15f rtl92c_phy_lc_calibrate +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xf8ae574a _rtl92c_phy_init_bb_rf_register_definition +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xfd6517ec rtl92c_set_fw_rsvdpagepkt +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xff242fc9 _rtl92c_phy_rf_serial_read +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x6fb9f06f rtl8723_fill_dummy +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_pci 0x10edaedc rtl_pci_probe +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_pci 0x35a6ab48 rtl_pci_disconnect +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_pci 0x4f7c7164 rtl_pci_suspend +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_pci 0x74ae38d4 rtl_pci_resume +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_usb 0x14daf79a rtl_usb_disconnect +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_usb 0x18c79fff rtl_usb_probe +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_usb 0x9d1c1b20 rtl_usb_suspend +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_usb 0xc0671c44 rtl_usb_resume +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x09753b3a rtl_init_rfkill +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x109d087d rtl_ps_enable_nic +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x207fbb70 rtl_evm_db_to_percentage +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x26ea47cf rtl_cam_delete_one_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x45c78688 efuse_read_1byte +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x48f63af8 rtl_lps_leave +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x4f24fc2e rtl_ps_set_rf_state +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x513e1fb0 rtlwifi_rate_mapping +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x57f32d4e rtl_get_tcb_desc +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x59a68690 rtl_cam_add_one_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x613b1459 rtl_send_smps_action +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x61c8d399 rtl_wowlan_fw_cb +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x6ae0a02f rtl_cam_get_free_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x6faa6bbb rtl_cam_empty_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x72cc7ab3 rtl_cam_mark_invalid +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x75f34323 rtl_rfreg_delay +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x79188a02 rtl_query_rxpwrpercentage +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x85f8677c rtl_process_phyinfo +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x94eeb9f4 rtl_cmd_send_packet +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x980848e2 rtl_addr_delay +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xab392283 rtl_ps_disable_nic +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xadffb8dd rtl_hal_pwrseqcmdparsing +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xb10202cf efuse_one_byte_read +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xb7a78297 efuse_shadow_read +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xc56e40f6 rtl_bb_delay +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xccf29e12 rtl_fw_cb +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xd438adfc rtl_phy_scan_operation_backup +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xdc90f383 rtl_cam_reset_all_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xe4285dc5 rtl_dm_diginit +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xe80c7fd2 rtl_signal_scale_mapping +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xf5057ba3 rtl_cam_del_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xfa558c8c rtl_lps_enter +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xfb8d863e rtl_efuse_shadow_map_update +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0x0aa41960 wl1271_free_tx_id +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0x390d13da wlcore_tx_complete +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0x5c0567cf wl12xx_is_dummy_packet +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0xcb4c5642 wlcore_calc_packet_alignment +EXPORT_SYMBOL drivers/nfc/microread/microread 0x38f5f843 microread_remove +EXPORT_SYMBOL drivers/nfc/microread/microread 0x560bc31e microread_probe +EXPORT_SYMBOL drivers/nfc/nxp-nci/nxp-nci 0x05ef3eac nxp_nci_fw_recv_frame +EXPORT_SYMBOL drivers/nfc/nxp-nci/nxp-nci 0x3262e774 nxp_nci_probe +EXPORT_SYMBOL drivers/nfc/nxp-nci/nxp-nci 0xb60e5c4b nxp_nci_remove +EXPORT_SYMBOL drivers/nfc/pn544/pn544 0x605c08ea pn544_hci_remove +EXPORT_SYMBOL drivers/nfc/pn544/pn544 0x9219ff1c pn544_hci_probe +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x563b41d9 ndlc_send +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x5955347a ndlc_close +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x61debca1 ndlc_remove +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x78efffb7 st_nci_se_init +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0xb549c364 st_nci_se_io +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0xb960e635 st_nci_se_deinit +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0xcc696e25 ndlc_recv +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0xe04bb965 ndlc_open +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0xe5beaaef ndlc_probe +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x0c8a42a9 st21nfca_hci_se_io +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x3146c4a1 st21nfca_im_send_dep_req +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x397d02e3 st21nfca_tm_send_dep_res +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x56a96876 st21nfca_hci_probe +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x57cb87d4 st21nfca_se_init +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x7adea859 st21nfca_dep_init +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x7c2f93e9 st21nfca_connectivity_event_received +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x85a2785c st21nfca_se_deinit +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x891079c3 st21nfca_hci_enable_se +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x90b92c7c st21nfca_dep_event_received +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x9b1d0f2c st21nfca_apdu_reader_event_received +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xa05e8e16 st21nfca_dep_deinit +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xb4b402ca st21nfca_hci_discover_se +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xd5135eef st21nfca_hci_disable_se +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xf2649978 st21nfca_im_send_atr_req +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xf810d9cf st21nfca_hci_remove +EXPORT_SYMBOL drivers/ntb/ntb 0x1cd12c15 ntb_register_device +EXPORT_SYMBOL drivers/ntb/ntb 0x467122d6 ntb_link_event +EXPORT_SYMBOL drivers/ntb/ntb 0xb4b58727 ntb_unregister_client +EXPORT_SYMBOL drivers/ntb/ntb 0xb5dc0935 ntb_clear_ctx +EXPORT_SYMBOL drivers/ntb/ntb 0xc15cb763 ntb_db_event +EXPORT_SYMBOL drivers/ntb/ntb 0xc507b4ae ntb_unregister_device +EXPORT_SYMBOL drivers/ntb/ntb 0xd65785ed ntb_set_ctx +EXPORT_SYMBOL drivers/ntb/ntb 0xdd6c5f1b __ntb_register_client +EXPORT_SYMBOL drivers/nvdimm/nd_btt 0x217634d1 nvdimm_namespace_detach_btt +EXPORT_SYMBOL drivers/nvdimm/nd_btt 0x772396b4 nvdimm_namespace_attach_btt +EXPORT_SYMBOL drivers/parport/parport 0x0f3cbd77 parport_release +EXPORT_SYMBOL drivers/parport/parport 0x17a4c571 parport_register_device +EXPORT_SYMBOL drivers/parport/parport 0x42ba2b3d parport_register_port +EXPORT_SYMBOL drivers/parport/parport 0x43c62605 parport_unregister_device +EXPORT_SYMBOL drivers/parport/parport 0x4d2a941b parport_ieee1284_interrupt +EXPORT_SYMBOL drivers/parport/parport 0x5e3a3912 parport_irq_handler +EXPORT_SYMBOL drivers/parport/parport 0x5ec76cf6 parport_find_number +EXPORT_SYMBOL drivers/parport/parport 0x62ed249b parport_put_port +EXPORT_SYMBOL drivers/parport/parport 0x6823774a parport_ieee1284_ecp_read_data +EXPORT_SYMBOL drivers/parport/parport 0x6c028672 parport_write +EXPORT_SYMBOL drivers/parport/parport 0x741be620 parport_ieee1284_read_nibble +EXPORT_SYMBOL drivers/parport/parport 0x838ee1c3 parport_ieee1284_epp_write_addr +EXPORT_SYMBOL drivers/parport/parport 0x983f63ed parport_unregister_driver +EXPORT_SYMBOL drivers/parport/parport 0x9c541f8b parport_announce_port +EXPORT_SYMBOL drivers/parport/parport 0x9cd6af3d parport_set_timeout +EXPORT_SYMBOL drivers/parport/parport 0x9f5fa691 parport_ieee1284_epp_read_addr +EXPORT_SYMBOL drivers/parport/parport 0xaa152ae2 parport_ieee1284_write_compat +EXPORT_SYMBOL drivers/parport/parport 0xad983a45 __parport_register_driver +EXPORT_SYMBOL drivers/parport/parport 0xbe72078a parport_find_base +EXPORT_SYMBOL drivers/parport/parport 0xbf901614 parport_ieee1284_epp_write_data +EXPORT_SYMBOL drivers/parport/parport 0xc897f7c5 parport_wait_peripheral +EXPORT_SYMBOL drivers/parport/parport 0xc97b6b4a parport_del_port +EXPORT_SYMBOL drivers/parport/parport 0xcc3003a6 parport_ieee1284_ecp_write_addr +EXPORT_SYMBOL drivers/parport/parport 0xd09196a2 parport_ieee1284_read_byte +EXPORT_SYMBOL drivers/parport/parport 0xd3ed8ac3 parport_register_dev_model +EXPORT_SYMBOL drivers/parport/parport 0xd82f9e4b parport_ieee1284_epp_read_data +EXPORT_SYMBOL drivers/parport/parport 0xd897f249 parport_wait_event +EXPORT_SYMBOL drivers/parport/parport 0xe2e442a4 parport_negotiate +EXPORT_SYMBOL drivers/parport/parport 0xe55efb95 parport_claim_or_block +EXPORT_SYMBOL drivers/parport/parport 0xe63e1de5 parport_remove_port +EXPORT_SYMBOL drivers/parport/parport 0xe64ae3d5 parport_get_port +EXPORT_SYMBOL drivers/parport/parport 0xe8565c5e parport_read +EXPORT_SYMBOL drivers/parport/parport 0xf02ef471 parport_ieee1284_ecp_write_data +EXPORT_SYMBOL drivers/parport/parport 0xf673a358 parport_claim +EXPORT_SYMBOL drivers/parport/parport_pc 0x678de40d parport_pc_unregister_port +EXPORT_SYMBOL drivers/parport/parport_pc 0xebdf36de parport_pc_probe_port +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x1529efcf pcmcia_get_mac_from_cis +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x2244627d pcmcia_loop_config +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x311f7d1e pcmcia_loop_tuple +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x3b899bb5 pcmcia_release_window +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x3df699a7 pcmcia_request_irq +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x3eaec9fb pcmcia_fixup_vpp +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x405db516 pcmcia_write_config_byte +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x45946be4 pcmcia_request_io +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x45ea48a0 pcmcia_unregister_driver +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x49480cce pcmcia_enable_device +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x5c32d829 pcmcia_dev_present +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x5c35810e pcmcia_disable_device +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x61847e7c pcmcia_register_driver +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x742f5665 pcmcia_parse_tuple +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x75defd66 pcmcia_read_config_byte +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x918130b5 __pcmcia_request_exclusive_irq +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xa0cd6931 pcmcia_get_tuple +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xdb320198 pcmcia_fixup_iowidth +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xdfdddc47 pcmcia_map_mem_page +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xe4bf2704 pcmcia_request_window +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x1ccef328 pcmcia_put_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x212db8d2 pcmcia_socket_list +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x24560b34 pcmcia_parse_uevents +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x3965ff02 pcmcia_unregister_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x4e836067 pcmcia_socket_list_rwsem +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x5d6053f3 pcmcia_parse_events +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x659c8662 pcmcia_register_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x6d68703e pcmcia_get_socket_by_nr +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x87cbd815 pccard_register_pcmcia +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x9133b836 pcmcia_get_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xcf97f3bd dead_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xd458416b pcmcia_reset_card +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xe9982b07 pcmcia_socket_class +EXPORT_SYMBOL drivers/pcmcia/pcmcia_rsrc 0xa9bdfd3a pccard_nonstatic_ops +EXPORT_SYMBOL drivers/pcmcia/pcmcia_rsrc 0xf50220fc pccard_static_ops +EXPORT_SYMBOL drivers/platform/x86/sony-laptop 0x5bb1e117 sony_pic_camera_command +EXPORT_SYMBOL drivers/pps/pps_core 0x5eb1a4ea pps_register_source +EXPORT_SYMBOL drivers/pps/pps_core 0xca437dcd pps_lookup_dev +EXPORT_SYMBOL drivers/pps/pps_core 0xcf37be62 pps_event +EXPORT_SYMBOL drivers/pps/pps_core 0xfef9b2ff pps_unregister_source +EXPORT_SYMBOL drivers/ptp/ptp 0x766892c5 ptp_find_pin +EXPORT_SYMBOL drivers/ptp/ptp 0x78960df6 ptp_clock_event +EXPORT_SYMBOL drivers/ptp/ptp 0x7dd6ca51 ptp_clock_register +EXPORT_SYMBOL drivers/ptp/ptp 0x80a40a33 ptp_clock_index +EXPORT_SYMBOL drivers/ptp/ptp 0x93e11194 ptp_clock_unregister +EXPORT_SYMBOL drivers/ptp/ptp_pch 0x08d6c1a4 pch_tx_snap_read +EXPORT_SYMBOL drivers/ptp/ptp_pch 0x1b5b499d pch_src_uuid_lo_read +EXPORT_SYMBOL drivers/ptp/ptp_pch 0x2f24538a pch_ch_event_write +EXPORT_SYMBOL drivers/ptp/ptp_pch 0x6d9d25f1 pch_rx_snap_read +EXPORT_SYMBOL drivers/ptp/ptp_pch 0x7e4f4a54 pch_ch_control_write +EXPORT_SYMBOL drivers/ptp/ptp_pch 0x9d76dc9e pch_ch_control_read +EXPORT_SYMBOL drivers/ptp/ptp_pch 0xd0bd488c pch_ch_event_read +EXPORT_SYMBOL drivers/ptp/ptp_pch 0xda871b1d pch_src_uuid_hi_read +EXPORT_SYMBOL drivers/ptp/ptp_pch 0xe0d37ff2 pch_set_station_address +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x0257fd33 rproc_alloc +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x197161d0 rproc_put +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x58604d2e rproc_da_to_va +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x7762597b rproc_get_by_phandle +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x980f29bc rproc_shutdown +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x9c80c015 rproc_add +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x9e58e034 rproc_del +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0xbb2b1a0d rproc_vq_interrupt +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0xbcad8d1a rproc_report_crash +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0xc04851b1 rproc_boot +EXPORT_SYMBOL drivers/rtc/rtc-ds1685 0x4931e98a ds1685_rtc_poweroff +EXPORT_SYMBOL drivers/scsi/53c700 0x302514c4 NCR_700_release +EXPORT_SYMBOL drivers/scsi/53c700 0x3d9cece0 NCR_700_intr +EXPORT_SYMBOL drivers/scsi/53c700 0xe3bb3a8f NCR_700_detect +EXPORT_SYMBOL drivers/scsi/esp_scsi 0x1fb43f4a scsi_esp_unregister +EXPORT_SYMBOL drivers/scsi/esp_scsi 0x4a29ab38 scsi_esp_intr +EXPORT_SYMBOL drivers/scsi/esp_scsi 0x6eb9be7a scsi_esp_register +EXPORT_SYMBOL drivers/scsi/esp_scsi 0x939712ee scsi_esp_template +EXPORT_SYMBOL drivers/scsi/esp_scsi 0xef3d650d scsi_esp_cmd +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x36cfa7cf fcoe_ctlr_recv +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x6a2e2bf2 fcoe_ctlr_recv_flogi +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x6b7f6bf4 fcoe_transport_attach +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xb1552f0d fcoe_ctlr_els_send +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xbcdd57a0 fcoe_fcf_get_selected +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xc01cae6f fcoe_ctlr_link_up +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xc0cef826 fcoe_ctlr_set_fip_mode +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xca9e8584 fcoe_ctlr_init +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xd641178f fcoe_transport_detach +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xe5b57b48 fcoe_ctlr_destroy +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xe70ee489 fcoe_ctlr_link_down +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xf383ef4c fcoe_ctlr_destroy_store +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x018b0b7e fc_eh_host_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x06262ce3 libfc_vport_create +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x0db6922a fc_lport_bsg_request +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x107a89a1 fc_get_host_speed +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x1b920011 fc_lport_iterate +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x1e7b7a40 fc_lport_set_local_id +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x22b90986 fc_exch_mgr_del +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x2856af74 fc_exch_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x2c4ed1a1 fc_lport_flogi_resp +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x310c16a6 fc_exch_update_stats +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x3406179e fc_eh_abort +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x36e5fbaf fc_cpu_mask +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x37aaf11a fc_get_host_port_state +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x3ceb7955 fc_exch_mgr_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x4684f1bb fc_lport_logo_resp +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x55193629 fc_exch_mgr_list_clone +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x56da6e2b fc_eh_device_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x5768edc2 fc_frame_alloc_fill +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x59e67fd3 fc_fc4_register_provider +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x5eaa1a6f fc_linkup +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x61ccd45c fc_exch_recv +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x6a6a36e4 fc_fill_hdr +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x72a720f7 fc_fc4_deregister_provider +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x7a3e175e fc_disc_config +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x7abc6593 fc_vport_id_lookup +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x81153510 fc_lport_destroy +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x82ef392b fc_frame_crc_check +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x873a32b2 fc_exch_mgr_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x8a39bee7 fc_vport_setlink +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x8a666bd9 fc_slave_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x96516705 fc_exch_mgr_add +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x96eef1e7 fc_set_rport_loss_tmo +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x972277e9 fc_rport_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x9dafa6ae fc_fabric_logoff +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xa356db99 fc_rport_terminate_io +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xab12e9ad fc_fcp_destroy +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xac815548 fc_fabric_login +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xaefa1bdc fc_lport_notifier_head +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xafdd3c77 fc_elsct_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xb8184148 fc_fill_reply_hdr +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xbd16b38b fc_queuecommand +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xbe873245 fc_lport_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xc267bc64 fc_lport_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xc2960d1c fc_get_host_stats +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xce947341 fc_exch_mgr_free +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xd02d28ad fc_fcp_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xd4b05114 fc_linkdown +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xd51622fd fc_lport_config +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xd5e56986 fc_elsct_send +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xe258975d _fc_frame_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xe6c9b496 fc_disc_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xea829e06 fc_set_mfs +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x2903a1a0 sas_prep_resume_ha +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x38e4f3b1 sas_suspend_ha +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x8a87e724 try_test_sas_gpio_gp_bit +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0xcedd9c9c sas_wait_eh +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0xe8273d6a sas_resume_ha +EXPORT_SYMBOL drivers/scsi/megaraid/megaraid_mm 0x2250c66e mraid_mm_adapter_app_handle +EXPORT_SYMBOL drivers/scsi/megaraid/megaraid_mm 0x512c956d mraid_mm_unregister_adp +EXPORT_SYMBOL drivers/scsi/megaraid/megaraid_mm 0x6d5c9835 mraid_mm_register_adp +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x0219aa16 osd_req_list_partition_collections +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x0c17edb1 osd_sec_init_nosec_doall_caps +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x0cc0aca5 osd_req_list_dev_partitions +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x17f17c73 osd_execute_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x197447f9 osd_req_remove_object +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x198c9eb6 osd_req_list_partition_objects +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x1d4e076c osd_end_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x30c1ac5a osd_req_read_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x33685a24 osd_req_write_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x3531c519 osd_req_list_collection_objects +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x3e6e24d3 osd_req_flush_object +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x431d3a01 osd_req_add_get_attr_page +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x53ba4b63 osd_req_create_partition +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x63972120 osd_req_decode_sense_full +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x6524a806 osd_req_read_sg_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x6b1f95d8 osd_req_remove_partition +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x706e07e5 osd_req_flush_collection +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x7e60895f osd_req_decode_get_attr_list +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x80de7388 osd_dev_init +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x83ea5208 osd_req_format +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x866abf3d osd_execute_request_async +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x8de799ce osd_req_get_attributes +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x959e7e0a osd_req_read_sg +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x97c1bc1f osd_req_write +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x9b650961 osd_req_set_attributes +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x9eca9676 osd_finalize_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xb118e67b osd_dev_fini +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xb21bf62d osd_req_add_get_attr_list +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xb9adc13c osd_start_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xc6db3364 osd_req_write_sg_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xc820a957 osd_req_flush_obsd +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xd09a5862 osd_req_read +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xd2bd98b6 osd_auto_detect_ver +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xd6056868 osd_req_write_sg +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xf7c5e332 osd_req_flush_partition +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xfb6a9a8c osd_req_create_object +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xff05b497 osd_req_add_set_attr_list +EXPORT_SYMBOL drivers/scsi/osd/osd 0x1b53a307 osduld_put_device +EXPORT_SYMBOL drivers/scsi/osd/osd 0x5fc48609 osduld_unregister_test +EXPORT_SYMBOL drivers/scsi/osd/osd 0x694fd9cc osduld_info_lookup +EXPORT_SYMBOL drivers/scsi/osd/osd 0xb4e15ba9 osduld_register_test +EXPORT_SYMBOL drivers/scsi/osd/osd 0xc889a1c3 osduld_device_same +EXPORT_SYMBOL drivers/scsi/osd/osd 0xedf21bbe osduld_path_lookup +EXPORT_SYMBOL drivers/scsi/osd/osd 0xf5d92c28 osduld_device_info +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x09ff301e qlt_lport_deregister +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x296ebe1e qlt_unreg_sess +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x361779c0 qlt_lport_register +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x5239b9a2 qlt_enable_vha +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x65fd92f8 qlt_rdy_to_xfer +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x6b2376af qlt_xmit_tm_rsp +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x820f2930 qlt_free_cmd +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x893491e5 qlt_xmit_response +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xbd3cc8fe qlt_free_mcmd +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xcf24a46b qlt_stop_phase2 +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xebcaa0c9 qlt_stop_phase1 +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xedf78bd0 qlt_abort_cmd +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x1f55cd70 qlogicfas408_ihandl +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x2bd9443e qlogicfas408_disable_ints +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x3fd8cd71 qlogicfas408_detect +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x73a12e4f qlogicfas408_queuecommand +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x8bb6c141 qlogicfas408_biosparam +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x9a3c4d04 qlogicfas408_abort +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x9f262ccd qlogicfas408_bus_reset +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0xa98c2e82 qlogicfas408_info +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0xe76b3b20 qlogicfas408_get_chip_type +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0xf2b95199 qlogicfas408_setup +EXPORT_SYMBOL drivers/scsi/raid_class 0x88651011 raid_class_release +EXPORT_SYMBOL drivers/scsi/raid_class 0xb62d7f2f raid_component_add +EXPORT_SYMBOL drivers/scsi/raid_class 0xfd7117ff raid_class_attach +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x3d5953df fc_host_post_vendor_event +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x45893b65 fc_block_scsi_eh +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x46e3afea scsi_is_fc_rport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x4a7e7073 fc_remote_port_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x541c24aa scsi_is_fc_vport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x6673ff53 fc_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x77f843ad fc_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x7954b1ea fc_get_event_number +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x9351b8d4 fc_remote_port_rolechg +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xb42d4f0a fc_vport_create +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xb4ff9cfa fc_vport_terminate +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xb621dfaf fc_host_post_event +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xcb018827 fc_remove_host +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xe7f20468 fc_remote_port_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x112747e2 scsi_is_sas_rphy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x17138ab0 sas_port_mark_backlink +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x1bf5b07c sas_port_get_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x3751506e sas_read_port_mode_page +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x38570edc sas_rphy_remove +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x3bc26c12 sas_phy_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x46ddf06c sas_expander_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x4fc31c38 sas_rphy_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x536f6a63 sas_rphy_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x59c78058 sas_phy_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x6d08d7d1 sas_remove_host +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x7c7f35df sas_rphy_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x87703f74 sas_port_add_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x88426d29 sas_phy_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x97c555e7 scsi_is_sas_port +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xa014dbc0 sas_phy_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xa254162f sas_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xa440e04d sas_port_alloc_num +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xb1cab2ca sas_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xbfdfa418 sas_port_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xc832b7b5 sas_port_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xcf3617ac sas_port_delete_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xdf4104cc sas_port_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xed248de8 sas_remove_children +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xed8d7b60 sas_end_device_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xf52f33c2 sas_rphy_unlink +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xf567d84b scsi_is_sas_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xf91ddd91 sas_port_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x0355056c spi_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x33958a3c spi_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x3686ea09 spi_print_msg +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x47ba6056 spi_display_xfer_agreement +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x5a6f9381 spi_schedule_dv_device +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0xa99ed203 spi_dv_device +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0x405b6e05 srp_parse_tmo +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0x56b68ddb srp_reconnect_rport +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0x576c4d9e srp_rport_put +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0x74327f39 srp_start_tl_fail_timers +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0xa0980c97 srp_rport_get +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0x131e343c ufshcd_runtime_resume +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0x8ca210ce ufshcd_alloc_host +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0x98cd7b11 ufshcd_runtime_suspend +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0xab4c787c ufshcd_shutdown +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0xae18300c ufshcd_system_suspend +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0xb559dc11 ufshcd_runtime_idle +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0xc51fdf96 ufshcd_system_resume +EXPORT_SYMBOL drivers/ssb/ssb 0x19d5c889 ssb_pmu_set_ldo_paref +EXPORT_SYMBOL drivers/ssb/ssb 0x1c4f8adc ssb_pcihost_register +EXPORT_SYMBOL drivers/ssb/ssb 0x32668d4b ssb_device_is_enabled +EXPORT_SYMBOL drivers/ssb/ssb 0x40762b71 ssb_pmu_set_ldo_voltage +EXPORT_SYMBOL drivers/ssb/ssb 0x53850f3b ssb_bus_suspend +EXPORT_SYMBOL drivers/ssb/ssb 0x53a0478f ssb_bus_may_powerdown +EXPORT_SYMBOL drivers/ssb/ssb 0x593a30df ssb_device_disable +EXPORT_SYMBOL drivers/ssb/ssb 0x68fd2660 ssb_bus_powerup +EXPORT_SYMBOL drivers/ssb/ssb 0x784e56d0 ssb_dma_translation +EXPORT_SYMBOL drivers/ssb/ssb 0x7e26f7a8 ssb_clockspeed +EXPORT_SYMBOL drivers/ssb/ssb 0x96b541e6 ssb_commit_settings +EXPORT_SYMBOL drivers/ssb/ssb 0xac928b08 __ssb_driver_register +EXPORT_SYMBOL drivers/ssb/ssb 0xacce256c ssb_bus_pcibus_register +EXPORT_SYMBOL drivers/ssb/ssb 0xae336ba6 ssb_set_devtypedata +EXPORT_SYMBOL drivers/ssb/ssb 0xb9dc14f6 ssb_chipco_gpio_control +EXPORT_SYMBOL drivers/ssb/ssb 0xc0512e0f ssb_admatch_base +EXPORT_SYMBOL drivers/ssb/ssb 0xd481192b ssb_admatch_size +EXPORT_SYMBOL drivers/ssb/ssb 0xd84bfcf7 ssb_device_enable +EXPORT_SYMBOL drivers/ssb/ssb 0xe0612d76 ssb_bus_unregister +EXPORT_SYMBOL drivers/ssb/ssb 0xe3469ca3 ssb_driver_unregister +EXPORT_SYMBOL drivers/ssb/ssb 0xe61886a0 ssb_bus_sdiobus_register +EXPORT_SYMBOL drivers/ssb/ssb 0xed08a6f2 ssb_bus_resume +EXPORT_SYMBOL drivers/ssb/ssb 0xf769a60a ssb_pcicore_dev_irqvecs_enable +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x01a37635 fbtft_write_gpio16_wr_latched +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x0a2ecdb5 fbtft_write_gpio8_wr +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x111fa64b fbtft_write_spi +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x31ae56b1 fbtft_register_backlight +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x33ae253b fbtft_probe_common +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x3b20a07e fbtft_unregister_backlight +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x4fd7f3fe fbtft_write_reg16_bus16 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x5d68320e fbtft_write_reg8_bus8 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x5f963ab5 fbtft_write_vmem16_bus16 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x7514427e fbtft_write_vmem8_bus8 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x75ed2208 fbtft_write_reg16_bus8 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x7bf3e70e fbtft_unregister_framebuffer +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x7dbe2be0 fbtft_dbg_hex +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x98fbaadc fbtft_framebuffer_release +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x9fb7bad6 fbtft_remove_common +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xa08c2174 fbtft_write_gpio16_wr +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xb9966afa fbtft_write_spi_emulate_9 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xb9fb1b47 fbtft_framebuffer_alloc +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xcf815752 fbtft_init_display +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xd829933c fbtft_write_vmem16_bus9 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xe5d9687a fbtft_write_vmem16_bus8 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xf2378790 fbtft_register_framebuffer +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xf7965bc6 fbtft_read_spi +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xf835f6c8 fbtft_write_reg8_bus9 +EXPORT_SYMBOL drivers/staging/fwserial/firewire-serial 0x09e0047f fwtty_port_put +EXPORT_SYMBOL drivers/staging/fwserial/firewire-serial 0xc2e68edd fwtty_port_get +EXPORT_SYMBOL drivers/staging/iio/addac/adt7316 0xde24d0b2 adt7316_probe +EXPORT_SYMBOL drivers/staging/iio/magnetometer/hmc5843_core 0x471b4cef hmc5843_common_remove +EXPORT_SYMBOL drivers/staging/iio/magnetometer/hmc5843_core 0x4cce32e0 hmc5843_common_resume +EXPORT_SYMBOL drivers/staging/iio/magnetometer/hmc5843_core 0xe55259e4 hmc5843_common_suspend +EXPORT_SYMBOL drivers/staging/iio/magnetometer/hmc5843_core 0xe9bb7356 hmc5843_common_probe +EXPORT_SYMBOL drivers/staging/iio/meter/ade7854 0x6e3e8ce4 ade7854_remove +EXPORT_SYMBOL drivers/staging/iio/meter/ade7854 0xab43fd28 ade7854_probe +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x1366b7ac LNetSetLazyPortal +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x19670622 LNetNIInit +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x19b32c76 lnet_parse +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x1b191752 lnet_msgtyp2str +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x1ee5f15e lnet_ipif_query +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x1fe16fd5 LNetGet +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x204b8151 lnet_counters_reset +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x238e0a70 lnet_set_reply_msg_len +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x29e1b5b4 lnet_finalize +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x2aa9953d lnet_cpt_of_nid +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x2ac93e90 lnet_connect_console_error +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x2f3cc089 lnet_sock_listen +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x32b00590 lnet_copy_kiov2iov +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x33202a6c LNetGetId +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x3c779ee0 LNetPut +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x3ef83a29 lnet_unregister_lnd +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x3f4f5b46 LNetNIFini +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x473ad33b LNetDist +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x4d030296 lnet_copy_kiov2kiov +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x53f1bd68 lnet_copy_iov2kiov +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x55db5324 lnet_iov_nob +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x58487d9b lnet_sock_write +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x58a1ca89 LNetMDUnlink +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x5e91cfec lnet_copy_iov2iov +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x5fee352c lnet_acceptor_timeout +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x61f784b2 LNetClearLazyPortal +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x6400a1e5 the_lnet +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x64cdea3a LNetCtl +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x66d449b1 lnet_ipif_enumerate +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x6cd7b14f lnet_kiov_nob +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x6f7be171 LNetEQGet +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x722c76e5 LNetMDAttach +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x7c586b1e lnet_sock_read +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x7d59a7fe LNetMEInsert +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x854ab844 LNetEQWait +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x85b00f33 lnet_connect +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x9de986d3 LNetEQAlloc +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xa56de08d lnet_ipif_free_enumeration +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xaa414970 LNetMEUnlink +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xaa9b477e LNetMDBind +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xb5d9c83a lnet_sock_accept +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xb75f7953 LNetEQFree +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xba5566d2 lnet_acceptor_port +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xbb8eb5e3 lnet_sock_getbuf +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xbf0760a2 LNetMEAttach +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xc5f329e3 lnet_notify +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xd1c2f3e4 lnet_extract_iov +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xd4129f5c lnet_create_reply_msg +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xd7c50cb9 lnet_init +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xe32b6096 lnet_net2ni +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xe3733ba8 lnet_sock_getaddr +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xe8124744 lnet_fini +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xedc7c522 lnet_extract_kiov +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xedf791ea lnet_register_lnd +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xf05a5db8 lnet_sock_connect +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xf1b316bf LNetSnprintHandle +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xf7cacc24 lnet_sock_setbuf +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xfa106804 lnet_counters_get +EXPORT_SYMBOL drivers/staging/lustre/lnet/selftest/lnet_selftest 0x078db139 lstcon_ioctl_entry +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0x1c4bb5f9 LU_OBF_FID +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0x2b4e81aa seq_client_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0x37553c70 seq_client_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0x375e6f8d LUSTRE_BFL_FID +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0x79689bc9 seq_client_get_seq +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0x92cae0db client_fid_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0xae61cff5 LU_DOT_LUSTRE_FID +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0xc997a02f LUSTRE_SEQ_SPACE_RANGE +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0xd5a3cf30 seq_client_flush +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0xdbf5b334 seq_client_alloc_fid +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0xecee2727 LUSTRE_SEQ_ZERO_RANGE +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0xfcee86c2 client_fid_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0x0a85dbe9 fld_client_flush +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0x3ddf4c5a fld_client_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0x74aed746 fld_client_debugfs_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0x7e0167d4 fld_client_lookup +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0xda04c072 fld_client_del_target +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0xf38cf262 fld_client_add_target +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0xfa708fd5 fld_client_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x000c507f libcfs_debug_dumplog +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x01db5172 cfs_percpt_atomic_summary +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x03ae0009 cfs_hash_lookup +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x069f9bb2 cfs_wi_schedule +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x08ada613 libcfs_console_backoff +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x0aa98a7a cfs_hash_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x0b4b1546 libcfs_lnd2modname +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x0de6c369 cfs_cap_lower +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x0e4820ab cfs_percpt_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x0f5eff79 cfs_percpt_number +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x117c8a95 cfs_cpt_nodemask +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x13550229 lbug_with_loc +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x15565c7f cfs_cpt_set_node +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x17ac7833 libcfs_deregister_ioctl +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x1a60d439 cfs_parse_nidlist +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x21a44499 cfs_percpt_lock_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x23f6f445 cfs_restore_sigs +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x247da28c libcfs_kvzalloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x2663147a __cfs_fail_timeout_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x27b6d3ba cfs_ip_addr_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x297fac97 cfs_hash_bd_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x2a4ed56a cfs_hash_rehash_key +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x2adae33e cfs_init_timer +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x2c4efe0b cfs_hash_dual_bd_lookup_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x2dbe54b2 cfs_trimwhite +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x2ea81d9a libcfs_kkuc_group_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x2ef02848 cfs_hash_del_key +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x2efcc0e6 cfs_block_sigs +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x31fc5082 cfs_crypto_hash_update +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x36b60398 cfs_race_waitq +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x377f93fb cfs_srand +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x38828b92 cfs_cpt_unset_nodemask +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x389ca502 libcfs_debug_mb +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x39fdcd2b libcfs_debug_set_level +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x3a62a183 cfs_cpt_set_cpu +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x3c1285bd libcfs_subsystem_debug +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x3c4937a9 cfs_hash_for_each_empty +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x3d5e6098 cfs_race_state +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x3ef0d90c libcfs_kkuc_group_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x3f0d9281 cfs_wi_sched_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x4062f92b libcfs_run_lbug_upcall +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x411db754 cfs_crypto_hash_final +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x413056d8 cfs_cpt_weight +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x413c5299 cfs_hash_bd_move_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x42393d2a cfs_hash_bd_lookup_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x42e22feb cfs_cpt_table +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x44688a0a cfs_block_allsigs +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x44839bbb cfs_rand +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x463e853d cfs_hash_rehash_cancel_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x475f4d26 cfs_hash_getref +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x48f163c6 libcfs_str2anynid +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x4a95faa2 cfs_timer_deadline +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x4a99af72 cfs_clear_sigpending +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x4d89e988 cfs_block_sigsinv +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x4f1f2fa5 cfs_crypto_hash_digest +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x50345570 libcfs_str2net +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x5051b6d2 portal_enter_debugger +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x509d38b0 libcfs_net2str +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x52e9cfc1 cfs_cpt_current +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x53134f6c cfs_percpt_lock_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x53b383e4 cfs_cpt_unset_cpumask +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x54fd9a71 cfs_percpt_index +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x58a7ee00 libcfs_catastrophe +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x5946ec2b cfs_percpt_current +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x5b2451b1 cfs_percpt_unlock +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x5c013b81 cfs_expr_list_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x5ce62c0e cfs_cpt_table_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x5dce9e80 libcfs_lnd2str +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x600fae9b cfs_hash_for_each_key +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x61d6e1e0 cfs_hash_add_unique +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x62289d65 cfs_array_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x64685fef libcfs_console_min_delay +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x6564c55b libcfs_console_max_delay +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x65dd9f0c libcfs_run_upcall +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x67398404 cfs_wi_sched_destroy +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x675e1725 cfs_hash_bd_add_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x68497dbf cfs_cpt_number +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x6aa9d0e6 cfs_hash_size_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x6b18b7fc cfs_hash_for_each_safe +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x6c147ea0 libcfs_kvzalloc_cpt +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x6c605eaa cfs_cpt_unset_node +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x6c905b5f libcfs_watchdog_ratelimit +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x71c4cca8 cfs_percpt_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x71f662a3 libcfs_debug +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x752858fb cfs_cpt_table_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x77ef5792 cfs_hash_dual_bd_unlock +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x79c5d21f cfs_hash_debug_str +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x7a63872e cfs_timer_disarm +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x7b0b748a cfs_ip_addr_parse +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x7d93cded cfs_cpt_of_cpu +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x7e6f6485 cfs_ip_addr_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x7f04ceef cfs_hash_bd_peek_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x7fab218c cfs_hash_dual_bd_findadd_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x7fda989d cfs_fail_loc +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x8151c3aa cfs_cap_raised +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x83d795e4 cfs_match_nid +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x85406379 cfs_hash_debug_header +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x857aaea7 libcfs_register_ioctl +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x8c85e4e6 cfs_crypto_hash_speed +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x8e61d47b cfs_cpt_cpumask +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x8f5f81ec cfs_hash_dual_bd_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x91504e8b libcfs_kmemory +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x924ef5a8 cfs_hash_is_empty +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x940ed192 libcfs_stack +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x94c8f789 cfs_hash_cond_del +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x95620e8c cfs_wi_deschedule +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x97b0b9bc cfs_enter_debugger +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x9879b229 cfs_get_random_bytes +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x9bd94a35 cfs_hash_bd_del_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x9d7193e4 cfs_hash_rehash_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x9f82f712 cfs_trace_copyout_string +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xa2b68b2a cfs_array_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xa6b9dee6 libcfs_kkuc_group_rem +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xa6be5411 add_wait_queue_exclusive_head +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xa711aec5 cfs_cpt_table_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xa9088531 cfs_expr_list_values +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xa9c0ca61 cfs_timer_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xa9dc74e2 cfs_trace_copyin_string +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xaaf59b75 cfs_cpt_set_nodemask +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xae1545e4 cfs_hash_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xb18cbfd1 cfs_hash_del +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xb289de95 cfs_hash_bd_finddel_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xb53b5569 cfs_cpt_spread_node +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xb883b006 cfs_percpt_atomic_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xb8c52b1b cfs_timer_done +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xbab4f34e cfs_timer_arm +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xbada117b cfs_cpt_clear +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xbb18b4f1 cfs_hash_for_each +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xbf7a37f1 cfs_signal_pending +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xc05afcd7 cfs_hash_rehash +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xc0ea7fc0 cfs_expr_list_parse +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xc2dfd791 libcfs_console_ratelimit +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xc39fd2f9 libcfs_panic_on_lbug +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xc3ab0e9f cfs_hash_findadd_unique +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xc49b1c62 cfs_percpt_atomic_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xc77a24c3 cfs_cpt_set_cpumask +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xcb385db9 libcfs_debug_binary +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xcc001df7 cfs_hash_bd_findadd_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xcc20e694 libcfs_nid2str +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xccc45639 cfs_free_nidlist +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xcd38904c cfs_wi_exit +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xce1a88f2 libcfs_arch_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xcf61bacb __cfs_fail_check_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xd0d8d08a cfs_cpt_unset_cpu +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xd6a52be3 libcfs_printk +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xd8983000 cfs_crypto_hash_update_page +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xd96f406d cfs_cap_raise +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xda3a5d85 cfs_hash_for_each_nolock +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xde17bb8d libcfs_isknown_lnd +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xdf2789c0 cfs_curproc_cap_pack +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xdfca7737 cfs_hash_putref +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xe012b076 cfs_hash_dual_bd_finddel_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xe262a6e2 cfs_timer_is_armed +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xe2f91ce3 libcfs_debug_msg +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xe3bf6897 cfs_percpt_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xe7b54314 libcfs_arch_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xeae95911 libcfs_kkuc_msg_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xeaf51f70 cfs_hash_hlist_for_each +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xec1f56d5 libcfs_str2nid +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xeccafa5c cfs_cpt_online +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xeceac781 cfs_fail_val +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xf2c02048 cfs_cpt_bind +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xf3565b71 libcfs_debug_vmsg2 +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xf372d1c2 cfs_firststr +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xf440bb38 libcfs_kkuc_group_foreach +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xf8a8644b libcfs_id2str +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xf94025d1 libcfs_str2lnd +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xf9701ad1 cfs_hash_dual_bd_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xfe565fa9 cfs_crypto_hash_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/llite/lustre 0x455a7ac4 ll_direct_rw_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/llite/lustre 0x60551a18 ll_osscapa_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/llite/lustre 0x9d6ba618 ll_iocontrol_register +EXPORT_SYMBOL drivers/staging/lustre/lustre/llite/lustre 0xcd3cde92 ll_iocontrol_unregister +EXPORT_SYMBOL drivers/staging/lustre/lustre/llite/lustre 0xfd90f29a ll_stats_ops_tally +EXPORT_SYMBOL drivers/staging/lustre/lustre/lov/lov 0x207c6a69 lov_stripe_unlock +EXPORT_SYMBOL drivers/staging/lustre/lustre/lov/lov 0x23e937ab lov_stripe_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/lov/lov 0x4f07caa7 lov_read_and_clear_async_rc +EXPORT_SYMBOL drivers/staging/lustre/lustre/lov/lov 0x87ff83d7 lov_lsm_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/lov/lov 0xae2f988a lov_device_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/lov/lov 0xf0c95f46 lov_lsm_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/mdc/mdc 0x0df21540 it_set_disposition +EXPORT_SYMBOL drivers/staging/lustre/lustre/mdc/mdc 0x5919b6d6 it_clear_disposition +EXPORT_SYMBOL drivers/staging/lustre/lustre/mdc/mdc 0x5ef8417d it_disposition +EXPORT_SYMBOL drivers/staging/lustre/lustre/mdc/mdc 0xfe26c5a6 it_open_error +EXPORT_SYMBOL drivers/staging/lustre/lustre/mgc/mgc 0xdc287f95 mgc_fsname2resid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x01665e34 class_parse_net +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x016c9b5b llog_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x017e1da3 cl_lock_nr_mutexed +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x02495b0e ldebugfs_obd_seq_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x032f7525 cl_2queue_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x03508fbb llog_cat_cancel_records +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x035852d0 lustre_swab_llog_rec +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0566a8d4 cl_io_iter_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x057f6d4b class_find_old_param +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x05af1920 dt_quota_glb_features +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x05d5f85e dump_lniobuf +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x05ec5ba5 llog_process_or_fork +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x05f84e88 LU_BUF_NULL +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x06607c9b ldebugfs_register +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x06d82d96 class_handle_unhash +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x071989d3 lprocfs_rd_server_uuid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x075438f4 llog_declare_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x07682fe0 cl_sync_io_note +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0787983a cl_io_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0793bc9a class_destroy_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x07aa68bb lustre_swab_lustre_cfg +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x07d45876 obdo_set_parent_fid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x081d793b lu_context_key_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x083942ff class_del_profile +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x088dccc2 lprocfs_oh_tally +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x092d6be6 lu_object_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0960e3e2 cl_page_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x098660dd cl_use_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x09cf3022 llog_declare_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0a14cee6 cl_env_peek +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0a939cca llog_init_handle +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0ab898b5 obdo_cpu_to_le +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0acaab71 dt_object_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0b113131 llog_reverse_process +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0b513ee7 obd_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0c378d79 lustre_swab_llog_hdr +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0cf99bff dt_acct_features +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0d73bb73 dt_locate_at +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0df36fe8 cl_stack_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0df669a4 cl_object_attr_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0df71fad lu_object_unhash +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0e9ce1ee class_disconnect_exports +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0ed16066 obd_export_evict_by_nid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0f5bec80 cl_lock_mutex_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0f815e61 lu_site_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x101a63b8 class_export_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x10421866 llog_exist +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x111b8eb4 cl_lock_enclosure +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x111c66bb llog_backup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x11495519 lprocfs_write_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x11bb384c lprocfs_free_obd_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1227b896 cl_2queue_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1240830e cl_object_prune +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x12c6932a cl_io_iter_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1327ca63 cl_object_has_locks +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x133b4189 cl_lock_closure_build +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1491dc30 lu_context_tags_clear +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x14c75215 obdo_from_iattr +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x15cb8435 llog_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x161fe0a3 lu_site_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x177dcd53 lprocfs_seq_read_frac_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x17cc0dd3 cl_io_commit_write +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x19cb92f8 cl_wait_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x19e9a1fb cl_wait +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1b2ae57c cl_object_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1b74fd91 ldebugfs_add_symlink +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1bbb73db lu_device_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1bddbcd0 cl_page_list_unmap +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1c4bb2d9 cl_page_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1c63f96c obd_export_nid2str +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1e14128d cl_io_submit_rw +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1f8f2e04 cl_lock_extransit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1f9ddcff cl_locks_prune +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x20e3180d class_conn2cliimp +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x21307495 lu_buf_check_and_grow +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x21ed4996 cl_io_top +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x221826f1 class_parse_nid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2301fda2 class_unlink_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x237cdff4 cl_lock_weigh +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x24c38505 cl_lock_mutex_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x252407df lu_kmem_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2547efae lustre_uuid_to_peer +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x25671046 cl_page_top +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x256afd00 lu_object_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x259ebac6 obd_alloc_fail +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x25d05c0a lu_context_key_register_many +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x26bf5b4b lustre_end_log +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x27305b04 cl_unuse +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x275cdc7a cl_env_reexit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2855ef6b class_new_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x286860f5 class_handle_free_cb +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x297cf5e0 class_handle2object +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2a12b390 dt_txn_hook_start +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2a279f5a llog_write +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2ac70d98 cl_page_find_sub +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2ae1cd79 kuc_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2b4c48e9 server_name2svname +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2b4d4b9a dt_declare_version_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2c2c0411 llog_process +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2cceb7a3 class_handle_hash +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2d482787 cl_2queue_disown +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2d75e2a6 lu_context_key_degister_many +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2f161e27 lu_cdebug_printer +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2fcf6238 lu_context_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x305e2e6a lu_object_find_at +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x307f4564 cl_site_stats_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x30cbd36a cl_page_list_del +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x316d9b5a capa_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3242ed35 obdo_cachep +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x32530304 llog_declare_write_rec +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x32870461 cl_page_unmap +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x32c88e8e llog_cancel_rec +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x33d5e6e1 llog_cat_close +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x342bfcfb cl_lock_disclosure +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x345b0d3b cl_object_header_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3480969a lu_object_add_top +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x34e892c8 cl_lock_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x353aaf87 cl_lock_descr_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x369be015 obdo_le_to_cpu +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x369dbc19 iattr_from_obdo +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x36a9decb cl_io_end +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x36aad8dd dt_key +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x377998f1 class_incref +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x37ed6e4b at_early_margin +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x38211709 cl_io_sub_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x38fb0c90 class_match_param +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3a005065 dt_otable_features +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3a9b9259 dt_read +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3afcfac4 llog_copy_handler +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3b031946 ldebugfs_add_simple +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3bb3d6b4 cl_req_slice_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3c320125 class_get_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3f0e7bad dt_try_as_dir +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3f25c782 obd_max_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x40d4ec12 cl_object_attr_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4223eb14 lprocfs_wr_atomic +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4238ba32 lprocfs_rd_u64 +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4316fcc4 ldebugfs_register_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4357b315 lprocfs_counter_sub +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4406f4cb lu_env_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x44ad695f cl_site_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x452651c7 lprocfs_alloc_obd_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x45f09392 lustre_process_log +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x46f1d846 cl_type_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4741a9f5 cl_lock_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x474ed5bd lustre_swab_ll_fid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x47b35f7d statfs_unpack +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x482d3cb5 capa_cachep +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x494cfb52 lustre_acl_xattr_merge2ext +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x498d9f07 cl_vmpage_page +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x49a0f6ea lustre_posix_acl_xattr_2ext +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x49a29223 lprocfs_find_named_value +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x49b766a7 cl_io_rw_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4a58e4e4 obdo_from_la +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4abd07de lustre_posix_acl_xattr_filter +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4ac58713 obd_connect_flags2str +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4b9a81b3 class_detach +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4bcf81d6 lu_site_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4c28dfd7 cl_page_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4c9eeb81 cl_page_gang_lookup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4d0b4957 cl_lock_get_trust +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4d13458b kuc_len +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4fba4346 dt_directory_features +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x50c7fc36 ptlrpc_put_connection_superhack +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x50caff51 cl_io_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x51b9227f cl_io_lock_alloc_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5218f64f class_import_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x544a5167 la_from_obdo +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x54885f87 ldlm_timeout +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x54be267f class_connect +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x558bec27 obd_ioctl_getdata +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x564e9d44 init_capa_hash +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x570d09ae lustre_swab_lu_fid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x57be881a cl_lock_at +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5835630d cl_page_prep +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x583eb4c5 lprocfs_rd_atomic +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5847930e obd_memory +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x584cea5d cl_io_slice_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x59090b7e cl_site_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5a20d896 obd_memory_max +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5b1baeed cl_lock_intransit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5b1d2895 class_decref +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5bc022c5 lprocfs_dt_rd_filestotal +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5c2f87f6 cl_page_header_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5d34ae0d cl_lock_mode_name +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5d956bf8 dt_txn_hook_stop +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5e088681 cl_io_prepare_write +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5e49e197 cl_lock_slice_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5f46735e cl_page_lookup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5fa5959d class_conn2obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5fe97b73 block_debug_check +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6033b908 obdo_cmp_md +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x60f34538 cl_io_unlock +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x610a843e lustre_common_put_super +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6129a243 cl_page_list_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x612d8cb9 lu_context_key_register +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x619213a7 cl_conf_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x61df52c3 md_from_obdo +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6277178d lu_dev_del_linkage +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x631fd7b9 lustre_ext_acl_xattr_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x634058f2 cl_page_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x634a6aee ldebugfs_seq_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6440aec2 class_config_dump_llog +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x65557006 capa_cpy +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6589a881 cl_io_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x65ff8996 cl_enqueue_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6734adbd lprocfs_read_frac_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x67516022 cl_queue_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6890d175 lustre_get_jobid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x68b1cfe6 class_config_llog_handler +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x68bcbd92 llog_erase +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x68bd49da lprocfs_oh_clear +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6978d5e5 lu_context_refill +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x698b61fc cl_lvb2attr +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x69c42114 at_min +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6aab5bcd lu_env_refill +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6ab57f2b lprocfs_obd_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6ba3353b cl_lock_is_intransit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6bb6d421 lu_buf_realloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6cc8bd67 cl_lock_descr_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6cd65a0a lprocfs_init_ldlm_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6d31b96a cl_page_own_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6e8cf1c4 cl_env_nested_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6f3e6225 dt_quota_slv_features +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6fcb7042 lprocfs_counter_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x70169d2f cl_page_list_splice +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x70e6922a cl_io_lock_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x711bf87a lprocfs_rd_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x71eaed7f lu_site_purge +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x72253a58 dt_version_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x727ad77d lu_object_assign_fid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x73ddde52 cl_object_kill +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x742559b1 class_unregister_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x74700bbe llog_thread_key +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x749d3bfc cl_io_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x752f71a8 class_get_profile +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x756a77f3 class_parse_nid_quiet +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x75729853 cl_lock_unhold +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x75af83cb cl_page_list_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x75b22de6 lu_object_put_nocache +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x760840ac cl_lock_is_mutexed +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7683b204 cl_page_flush +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x76e2d2f6 cl_lock_modify +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x778220cb class_num2obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x77d2089a class_name2dev +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7802fcd7 lustre_swab_llogd_conn_body +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x789796a1 obd_zombie_barrier +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x78d45389 lprocfs_single_release +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x78fa56c3 lu_object_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x794c42f7 lprocfs_obd_rd_max_pages_per_rpc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x79b3f757 lustre_register_kill_super_cb +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7acf5376 cl_lock_peek +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7ad3e909 class_exp2cliimp +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7ae31ad1 lprocfs_rd_state +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7af88493 lu_context_key_degister +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7b15ea1a cl_lock_enqueue_wait +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7b4fc57b at_max +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7b7a43f8 cl_lock_discard_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7c4cc856 lu_site_init_finish +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7d53ceec capa_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7df5a297 llog_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7e434871 cl_object_attr_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7edcafa0 cl_env_reenter +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7f1e5fd3 lprocfs_init_ops_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7f483379 cl_2queue_discard +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7fe5561a obd_dirty_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8016dd00 class_new_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8031efb8 lprocfs_dt_rd_kbytestotal +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x806cc497 class_add_uuid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x80fc0ab6 lu_object_header_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x81209919 obdo_from_inode +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x81742d89 obd_ioctl_popdata +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x818e5861 dt_object_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x81eb3905 lprocfs_free_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x831f656c class_process_config +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x84313311 cl_env_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8446b9a8 obdo_to_ioobj +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x846a2914 capa_lookup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8489f086 obd_alloc_fail_rate +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x849e5385 obd_update_maxusage +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x85898443 lprocfs_clear_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x85c64d32 class_uuid2obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x864401b7 lu_env_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x86ee1fce cl_req_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x871e6476 cl_page_delete +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x87a20f4e cl_object_find +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x888af88f cl_page_list_own +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8930ab7d class_connected_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x89a3de56 llog_open_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x89db730b dt_store_open +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x89dc4e0a cl_env_implant +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8a2e8288 cl_object_top +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8aa2c358 lprocfs_dt_rd_blksize +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8b5f4057 lu_context_tags_update +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8ba6e479 lustre_swab_lu_seq_range +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8c35b7eb class_disconnect +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8cc66c1c class_manual_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8d19c69a cl_io_is_going +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8d7554b6 lu_device_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8debec21 dt_store_resolve +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8df06e04 cl_page_find +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8e7dca3f cl_page_disown +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8ef300c0 class_config_parse_llog +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8f67314c obd_dump_on_eviction +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9098a4fd lprocfs_rd_connect_flags +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x91cce0ac ldebugfs_add_vars +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9221d024 lprocfs_init_mps_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x92e58479 obd_dump_on_timeout +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x933f5a3c llog_cat_process_or_fork +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9352b594 cl_lock_user_del +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x93b46468 lu_session_tags_clear +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x93ca6c31 cl_page_unassume +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9482c99e class_name2obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x94961979 cl_object_glimpse +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x94c88ec9 class_fail_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9512d507 lustre_acl_xattr_merge2posix +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9552ac1d lu_device_type_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x955f5220 ldlm_timeout_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x95735c6c at_extra +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9588721f lu_context_key_quiesce +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x96d89044 class_find_client_obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x975b0d88 dt_version_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9767adce class_uuid2dev +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x97d03783 at_history +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x98ecddbc lu_object_anon +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9963e77d cl_page_own +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x99b35f27 _debug_capa +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9a408b6b dt_record_read +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9a88a29f cl_lock_hold +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9b1ed9d8 obd_jobid_var +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9b410cdd lprocfs_rd_timeouts +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9b650f82 ldebugfs_remove +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9c8e69fe cl_object_header_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9dbb17b6 lprocfs_dt_rd_kbytesfree +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9f6bc28b obd_max_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa04fe9c3 cl_lock_at_pgoff +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa160da4a lu_object_header_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa19174ea dt_txn_callback_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa40ea091 cl_page_list_discard +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa44b5ce4 dt_txn_hook_commit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa529707a llog_cat_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa56a38e5 llog_open +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa5fb234f lprocfs_write_frac_u64_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa674c241 kuc_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa6800c01 cl_io_submit_sync +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa6fac089 obd_export_evict_by_uuid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa758d373 cl_lock_release +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa7c774a2 cl_index +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa81ae991 cl_enqueue +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa875ef1a class_search_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa9dd1f78 class_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xaa21b7a0 lustre_register_quota_process_config +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xab1f3bee obd_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xabf45922 capa_decrypt_id +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xac7f1596 kuc_ptr +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xad7eee5a dt_lookup_dir +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xae5ef54a dt_find_or_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xae83987b cl_lock_hold_release +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb01963a6 class_uuid_unparse +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb03665f7 obd_exports_barrier +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb08b7eaf lu_object_find +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb1b89b6d class_attach +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb2f1b5e7 lu_object_locate +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb332801a cl_lock_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb34f7692 cl_page_make_ready +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb35519ed lustre_swab_cfg_marker +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb3b4aeba llog_cat_reverse_process +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb41998cd lustre_cfg_rename +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb4f8ee63 lprocfs_read_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb5571f26 obd_devs +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb6ba5dd5 kuc_ispayload +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb6ce245a class_exp2obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb6fced1c dt_index_read +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb743ec6a dt_mode_to_dft +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb75b59c7 lu_context_exit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb78aece0 cl_2queue_assume +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb80ba94e dump_exports +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb8c62bd0 lprocfs_oh_tally_log2 +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb9140ade cl_page_slice_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb92d0b22 cl_env_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb9537dc3 cl_lock_delete +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb9548f3b cl_req_attr_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb9dc3798 cl_lock_closure_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xba985283 lustre_register_client_process_config +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbacac922 lprocfs_write_frac_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbb03040d llog_sync +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbb23c796 class_process_proc_param +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbb4a54f0 lu_context_key_revive_many +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbc436a0d obdo_cpy_md +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbe13ce14 lu_object_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbe929bbb cl_env_nested_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbebf5ba0 class_add_conn +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbf0b9b7f cl_req_page_done +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbf1063e9 cl_lock_state_wait +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbfd40c81 cl_lock_user_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc0bf7ef2 obd_debug_peer_on_timeout +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc10c5ca4 dt_device_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc37d4ddb lu_site_stats_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc404837c lprocfs_stats_alloc_one +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc44e229a lprocfs_seq_release +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc4645656 cl_io_rw_advance +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc575c896 cl_lock_closure_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc6199e09 llog_cat_process +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc70cc26e cl_lock_ext_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc70d49dc lu_context_enter +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc7749889 obdo_refresh_inode +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc77e687e cl_sync_io_wait +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc913ecbe llog_write_rec +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc9b3c667 dt_lfsck_features +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc9c2c222 lprocfs_alloc_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc9e3d3c0 class_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xca542379 cl_env_unplant +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcb0ab67f obd_max_dirty_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcd1421be cl_page_is_vmlocked +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcd7537ee get_devices_count +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcd8a604e lu_buf_check_and_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcdd6b127 lu_device_type_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xce843785 cl_io_start +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcee0d0a8 dt_txn_callback_del +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcf9e85b7 llog_cat_add_rec +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd00bdef8 obdo_from_md +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd0101fc1 lprocfs_counter_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd08827c0 server_name2fsname +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd0b6995d lu_buf_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd10aa042 lustre_swab_llog_id +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd1336265 lu_context_key_revive +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd142134a llog_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd14a8ff6 cl_2queue_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd17d5115 lu_env_refill_by_tags +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd19ccc43 __llog_ctxt_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd1c5e414 cl_page_completion +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd1d6b383 llog_is_empty +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd2017930 lprocfs_oh_sum +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd21e133d cl_page_is_under_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd24d6d7e cl_page_discard +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd28f4f19 lu_device_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd45bf892 dt_device_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd477100d class_export_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd4ad5a30 cl_page_size +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd6f13c06 llog_cat_declare_add_rec +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd6ffc0dd cl_page_list_move +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd70fe669 lustre_swab_llogd_body +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd77290d8 cl_page_is_owned +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd7bc8654 obd_timeout +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd7bfbc9c lprocfs_dt_rd_filesfree +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd7e318a0 lprocfs_exp_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd7f7b340 cl_lock_mode_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd8e5d5c1 cl_io_loop +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xda2d7956 lu_context_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xda5999ae class_devices_in_group +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xda5b1ced class_find_param +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdac644c8 lustre_posix_acl_xattr_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdb13dce1 capa_list +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdcc40af0 class_check_uuid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdccb52dc dt_record_write +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xde7d985b obd_dirty_transit_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdf325737 lu_dev_add_linkage +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdfcade13 lprocfs_rd_uint +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe028cf84 capa_encrypt_id +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe04170ee cl_lock_mutex_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe1187c80 lu_object_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe146cccb cl_sync_io_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe1579bfb lprocfs_stats_collect +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe186dd22 cl_req_completion +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe1f4a0ad cl_lock_hold_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe21542f2 lprocfs_rd_conn_uuid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe29a7df4 cl_attr2lvb +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe29b91f6 class_import_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe2eb4470 class_get_next_param +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe3f4cea3 cl_page_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe48fbbbd cl_page_list_disown +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe5018c80 cl_page_at +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe583b23b lu_kmem_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe67470cf lprocfs_free_md_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe7705e65 class_disconnect_stale_exports +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe78f4d38 lu_context_key_quiesce_many +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe7d83236 cleanup_capa_hash +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe8bdf4cf lprocfs_obd_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe8e84c32 class_match_nid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe9d16300 lu_device_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xea39942c cl_lock_state_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xeb4e5372 lprocfs_at_hist_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xebcb2e63 cl_lock_signal +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xec7d6b85 obd_timeout_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xec887d2a obdo_to_inode +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xee68bc29 lu_session_tags_update +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xeeeb79fa do_lcfg +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xef739c61 lu_object_find_slice +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xef76f858 block_debug_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xef892dd5 cl_io_read_page +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xef938fe5 lu_stack_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf01e2527 server_name2index +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf09f5dd1 cl_2queue_init_page +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf132fab0 cl_page_assume +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf1df1b5f lprocfs_wr_uint +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf23436a2 cl_page_vmpage +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf234b5c0 cl_env_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf270b001 class_put_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf27e33ab llog_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf2b93e6f cl_lock_request +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf2fd6695 statfs_pack +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf36b5b16 lprocfs_rd_name +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf473cb9b cl_page_list_assume +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf4818df1 lustre_register_client_fill_super +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf490d5f9 class_del_profiles +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf4da786e llog_cat_init_and_process +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf4e56714 cl_page_clip +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf4f1b0d2 cl_lock_error +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf60d4659 capa_count +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf675a427 cl_req_prep +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf6cedc2d dt_index_walk +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf7020831 lprocfs_dt_rd_kbytesavail +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf7d69a96 cl_page_list_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf7fada6e cl_object_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf89af1af cl_page_cache_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf8fb0a7e class_register_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf9008428 cl_object_attr_unlock +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfa1788ad lu_object_header_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfa1e4308 class_handle_hash_back +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfa41a65e lprocfs_alloc_md_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfa5cf2cf cl_lock_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfa813d06 capa_hmac +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfabebf19 class_conn2export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfafd999c cl_req_page_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfbea0098 lu_types_stop +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfc0997e6 cl_offset +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfc09e47d llog_close +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfc7f18d0 obd_pages_max +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfd68d17a class_notify_sptlrpc_conf +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfd8f5cf4 lu_buf_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfdbe1557 lprocfs_write_u64_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfea2c588 lu_object_invariant +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xff57e92d class_match_net +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xff581db5 cl_pages_prune +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xff9e1bb7 cl_unuse_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfffc1f11 lustre_swab_ost_id +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x00cb99c1 RQF_LDLM_INTENT_GETXATTR +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x00d95039 ptlrpcd_decref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x01d6ef7f ldlm_pools_recalc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x025d26f6 sptlrpc_cli_wrap_bulk +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x048b59d5 lustre_msg_set_handle +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x04b01d01 req_capsule_client_swab_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x04c9d663 ptlrpc_prep_bulk_imp +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0515f93b RQF_FLD_QUERY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x052df8f0 sec2target_str +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x05573f53 sptlrpc_target_export_check +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x065c15a1 ldlm_pool_get_clv +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x069bf8fe req_capsule_server_pack +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x06b3942b lustre_swab_lov_user_md_objects +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x071fc74a RQF_LDLM_ENQUEUE_LVB +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x07605c7d interval_find +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x08bb2d27 lustre_swab_obd_ioobj +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x095587d0 lustre_msg_buflen +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x09cf6645 ptlrpc_nrs_policy_register +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0a3130b0 RMF_MDT_EPOCH +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0a90f9aa req_capsule_other_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0ac252b2 lustre_msg_set_jobid +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0b174c28 ptlrpc_set_destroy +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0bcacb5d RMF_MDS_HSM_USER_ITEM +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0c2d9c43 lustre_swab_lip_header +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0cf343dd RQF_LDLM_INTENT_BASIC +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0e23f5f1 ldlm_prep_enqueue_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0f21157d ptlrpcd_wake +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0ff96a65 ldlm_prep_elc_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x10f18f20 interval_iterate_reverse +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x115017f6 req_layout_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x11ba484a ptlrpc_prep_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x12987b7f ldlm_lock_change_resource +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x12b6f5a3 ptlrpc_connection_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x12b9ab1c ldlm_namespace_foreach +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x13835f5f sptlrpc_cli_enlarge_reqbuf +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x13d1d566 ldlm_namespace_dump +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x14708afc lustre_swab_mdt_rec_reint +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1483eca4 ldlm_lock_addref_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x14d192db lustre_msg_size +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x15564aef ptlrpc_request_bufs_pack +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x15a3e4db RMF_GETINFO_VAL +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x16622a48 llog_initiator_connect +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x16903365 ldlm_blocking_ast_nocheck +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x16d9b306 ldlm_init_flock_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x172fb86d lustre_msg_hdr_size +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1747d8b3 ldlm_lockname +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x17950f60 RQF_SEC_CTX +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x18c8344b ptlrpc_start_threads +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x19108a0f RQF_OST_DISCONNECT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x192ba560 req_capsule_server_grow +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x19c08934 RQF_LDLM_INTENT_CREATE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1a01cc27 ptlrpc_nrs_policy_unregister +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1a295741 lustre_free_reply_state +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1a6a3ce9 RQF_OST_GET_INFO_LAST_ID +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1a9b76aa RMF_OBD_QUOTACTL +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1abd3258 RMF_SETINFO_VAL +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1ace4b5f RQF_LDLM_BL_CALLBACK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1ad6c330 RMF_EAVALS +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1bae0270 interval_iterate +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1be21715 lustre_msg_size_v2 +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1be825a9 req_capsule_server_sized_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1c300d8e lustre_msg_get_slv +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1c588bc1 ptlrpc_set_add_cb +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1cd49755 ptlrpc_deactivate_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1d043548 lustre_msg_set_op_flags +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1d0bfe6f req_capsule_shrink +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1d4ae941 ptlrpc_request_alloc_pool +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1d4e5236 ptlrpc_unpack_rep_msg +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1dc2051d RMF_SEQ_OPC +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1de9c288 lustre_swab_layout_intent +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1e44d4fa sptlrpc_import_flush_my_ctx +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1e8e48a4 sptlrpc_flavor_has_bulk +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1eb2a65f RQF_OST_GETATTR +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1ee46b51 lustre_init_msg_v2 +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1ee9eb3c RQF_MDS_QUOTACTL +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2096f5b5 RQF_OST_SET_GRANT_INFO +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x20d6b82c RQF_LDLM_INTENT_QUOTA +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x218a36ce ldlm_cli_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x219391ec RMF_EAVALS_LENS +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x226a1bcf ptlrpcd_alloc_work +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x233790b5 RMF_OST_BODY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x23baae2d ldlm_cli_cancel_list +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x244e5558 lustre_msg_get_version +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x24aafdba RMF_MGS_TARGET_INFO +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2585a629 RMF_SEQ_RANGE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2587513c RQF_LDLM_CP_CALLBACK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x25a9f299 ptlrpc_request_alloc_pack +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x269554ce RQF_LDLM_INTENT_GETATTR +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x26f99d16 RQF_MGS_CONFIG_READ +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x285e5b99 lustre_msg_set_conn_cnt +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x29a76284 ldlm_pool_set_clv +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x29e0869a sptlrpc_get_hash_name +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2a2da845 ptlrpc_cleanup_imp +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2a63a472 lustre_swab_ptlrpc_body +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2b2ae94e ldlm_pool_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2c00c60d ptlrpc_sample_next_xid +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2c3cab07 ptlrpc_unregister_service +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2ca92fa8 ldlm_lock_decref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2ccd5b87 ldlm_cli_cancel_list_local +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2d56f168 ptlrpc_pinger_ir_up +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2d58a5ba req_capsule_filled_sizes +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2d71116b ptlrpc_cleanup_client +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2d798316 RMF_MGS_CONFIG_RES +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2e4562fe RQF_LLOG_ORIGIN_HANDLE_CREATE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2e4ca396 RQF_LDLM_INTENT_UNLINK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2ecd7515 lustre_msg_check_version +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2f0e4f87 RQF_OST_QUOTACTL +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2f111686 ptlrpc_wake_delayed +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2f793215 lustre_swab_ost_body +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2fab3539 lustre_swab_ost_lvb_v1 +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2fd2f737 lustre_msg_set_limit +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x301d4fcd RQF_MDS_READPAGE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x302937e0 RQF_MDS_CONNECT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3060b9c6 sptlrpc_rule_set_expand +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x315c0324 ptlrpc_set_add_new_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3162c077 ptlrpc_register_bulk +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x31838cb4 RMF_IDX_INFO +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3261b862 RQF_OST_SYNC +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x32779135 ptlrpc_pinger_add_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x328d1ad8 ptlrpcd_add_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x32a7b8fe sptlrpc_gc_del_sec +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x33bb7761 ldlm_typename +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x343cd69e ptlrpc_prep_fcset +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x34a8a26b req_capsule_init_area +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x35939a3d lustre_swab_fiemap +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3835ab4b RQF_LLOG_ORIGIN_CONNECT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3858fb94 RMF_OBD_STATFS +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x38b2a30c ptlrpc_request_addref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x38c01799 RQF_LDLM_CALLBACK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x38fce533 lustre_msg_set_versions +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x39215e17 sptlrpc_cli_ctx_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x39b932df sptlrpc_cli_unwrap_bulk_read +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x39f60a5f RMF_OST_ID +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3a1e4bcb __lustre_unpack_msg +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3ab90f6e lustre_msg_bufcount +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3ac00716 lustre_swab_hsm_user_state +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3b6b7cba dump_ioo +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3bb6f8d4 do_set_info_async +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3bedb0c7 RMF_LLOGD_CONN_BODY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3c63e62b RQF_MDS_REINT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3c8b16ab lustre_swab_ost_lvb +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3ca50f33 RQF_MDS_HSM_CT_REGISTER +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3d21c574 req_capsule_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3d29366e ldlm_namespace_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3d7dc5f9 ldlm_pools_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3dc47695 lustre_msg_get_magic +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3f034caf lustre_msg_get_status +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3f3db35e ptlrpc_set_import_active +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3f752e78 RQF_MDS_STATFS +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3fafba57 sptlrpc_enc_pool_get_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x41008cef RQF_LDLM_CANCEL +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x41b70630 ldlm_resource_iterate +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x43168488 RQF_MDS_RELEASE_CLOSE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x43705ee4 RQF_LOG_CANCEL +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x43d7efc8 lustre_msg_set_transno +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x44036eda RQF_MDS_GET_INFO +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x440c2a71 RMF_FIEMAP_VAL +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4481591d RQF_OST_SET_INFO_LAST_FID +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x45d05893 lustre_swab_lustre_capa +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x45e30cea lustre_swab_ldlm_intent +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x461b5837 ldlm_replay_locks +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x470a98ab ptlrpc_activate_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x47f5e903 RMF_MDS_HSM_REQUEST +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x486b6074 req_capsule_client_dump +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x48a2f003 lprocfs_wr_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x498c03c5 lustre_msg_set_last_xid +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4a5a2416 RMF_DLM_REQ +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4ae7d438 sptlrpc_register_policy +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4bc6daa2 ptlrpc_init_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4d10a061 ptlrpc_replay_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4d1463e4 ptlrpc_add_rqs_to_pool +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4d14d1b5 ldlm_lock_allow_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4d57a8c6 ptlrpc_lprocfs_brw +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4d7580d0 lustre_swab_hsm_user_item +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4da78af7 ldlm_lock_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4e1706e5 lustre_msg_buf +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4e696b96 ptlrpcd_queue_work +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4eb03a6f ptlrpcd_destroy_work +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4f766c3b lustre_swab_generic_32s +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5007a09c ptlrpc_check_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x50443f6a ptlrpc_init_client +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x50dd74f8 RMF_STRING +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x51758a1e ptlrpc_fail_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x51e23e44 sptlrpc_unregister_policy +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x52c62150 RMF_RCS +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x53411557 RMF_DLM_REP +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5342fa9d client_destroy_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x53a4a004 bulk_sec_desc_unpack +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x54ae5021 ldlm_lock_addref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x54deea03 ptlrpc_schedule_difficult_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5521da12 unlock_res_and_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x555eb7fe RQF_MDS_HSM_STATE_SET +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x565daa5d lprocfs_rd_pinger_recov +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5660366a ldlm_get_enq_timeout +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x56fc426b __ptlrpc_free_bulk +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x588035b4 RMF_UPDATE_REPLY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x595ab175 lustre_swab_obd_quotactl +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x596582bf RMF_GETINFO_VALLEN +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x59a1db5a req_capsule_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5a057439 interval_search +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5a0d1e9d client_connect_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5af0d02a ldlm_lock_dump_handle +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5b6ba895 lustre_packed_msg_size +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5c6a3a83 RQF_SEQ_QUERY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5ca1b491 lustre_swab_close_data +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5caae213 ptlrpc_next_xid +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5cf8f21a ptlrpc_buf_set_swabbed +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5e0b19b1 RMF_CLUUID +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5e2b7558 lustre_msghdr_get_flags +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5e6f435d RQF_OST_BRW_READ +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5e80f899 RQF_LLOG_ORIGIN_HANDLE_READ_HEADER +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5ebce80f __ptlrpc_prep_bulk_page +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5ec3284d RQF_MDS_HSM_CT_UNREGISTER +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5ef831ee lustre_msg_get_handle +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5f96ccdd ptlrpc_connection_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5fc9a455 RMF_CLOSE_DATA +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6042bc15 RQF_MDS_REINT_RENAME +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x604e2505 RMF_SWAP_LAYOUTS +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x607ec932 lustre_msg_set_buflen +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x60cd26ad RQF_MDS_REINT_CREATE_SYM +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x61646e1b RQF_MDS_SWAP_LAYOUTS +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x618ad203 RQF_OST_GET_INFO_LAST_FID +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x62aaae3f RQF_MDS_HSM_REQUEST +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6315dd4c RMF_LLOGD_BODY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6352a62d ldlm_get_ref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6395d4c1 target_pack_pool_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x63d974d3 ptlrpc_reconnect_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x647b6e48 lustre_swab_ldlm_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x649490d8 req_capsule_server_dump +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x64ef561c ldlm_namespace_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x653723dc RMF_LOGCOOKIES +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x685eeaba RMF_DLM_GL_DESC +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x68cb2541 interval_is_overlapped +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x68f49e5e ptlrpc_expired_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6912990a RQF_OST_QUOTACHECK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x696ba811 lustre_msg_get_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x69c9f04d RQF_MDS_REINT_LINK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6a3785c9 RMF_EADATA +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6c312478 target_print_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6c57bbf6 dump_obdo +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6d690aaf sptlrpc_req_replace_dead_ctx +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6d72828c sptlrpc_conf_log_update_end +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6d7931cc RQF_UPDATE_OBJ +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6dbe7004 sptlrpc_cli_ctx_wakeup +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6ea6cdf5 ldlm_lock_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6ed20499 ldlm_revalidate_lock_handle +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6efa82b0 RQF_MGS_TARGET_REG +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6efb32a2 ptlrpc_set_wait +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6f6dc736 lustre_swab_mdt_remote_perm +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6f8c9785 req_capsule_server_sized_swab_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6fb92092 sptlrpc_flavor2name_bulk +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x703538e4 lustre_swab_hsm_current_action +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7057aed6 ptlrpc_request_committed +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7064e49d sptlrpc_sec_destroy +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x71baa92d ldlm_pool_set_limit +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x723d43b6 sptlrpc_rule_set_dump +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x725a892c RQF_MDS_REINT_OPEN +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x73ba66b3 ldlm_lock_downgrade +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x741e7498 ldlm_lock_convert +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7426bff3 ldlm_blocking_ast +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x74840056 lustre_msg_set_status +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x748cb93d ptlrpc_lprocfs_unregister_obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x74e48f35 ptlrpc_request_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7550f418 ldlm_pool_shrink +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x75a2c40d ldlm_put_ref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x76b728e5 lustre_swab_update_buf +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x77840c82 sptlrpc_rule_set_choose +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x77997d0d client_import_del_conn +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x780aab41 req_capsule_field_present +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x788607ad ldlm_glimpse_ast +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x78bf9136 lustre_swab_ldlm_lock_desc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x78cbd68a sptlrpc_cli_unwrap_bulk_write +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x794e9089 lprocfs_wr_evict_client +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x79c02b75 _ldlm_lock_debug +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x79f3e2ef ptlrpc_disconnect_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7a832f10 RMF_CONN +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7a9a6ae0 ptlrpc_invalidate_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7aab345b ldlm_cancel_resource_local +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7ada52cf ptlrpc_lprocfs_register_obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7b158da4 lustre_swab_ldlm_request +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7bbf8001 RMF_MDT_BODY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7bfccf01 sptlrpc_import_flush_all_ctx +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7c4c6107 RQF_LDLM_CONVERT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7c7f20a3 ldlm_enqueue_pack +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7c8bb77d ptlrpc_connect_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7cc7558f ptlrpc_request_pack +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7d1ecd7f RQF_LDLM_INTENT_LAYOUT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7d41a8b9 RQF_QUOTA_DQACQ +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7d8b8666 ldlm_resource_foreach +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7dac5903 ldlm_resource_unlink_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7dc0e7cd RMF_QUOTA_BODY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7dfb3c18 lustre_msg_clear_flags +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7f0b27d6 ldlm_pool_get_limit +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7f4925d8 interval_expand +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7f4c99b1 ldlm_expired_completion_wait +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7f5a1cc7 lustre_msg_set_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7f5fbeff ldlm_pool_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7f6d2357 lustre_msg_is_v1 +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x803cac4b llog_client_ops +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x80a9e8c3 lustre_msg_get_last_xid +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x80ecb4e3 RMF_MDS_HSM_CURRENT_ACTION +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x810981cf ldlm_init_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x817d7f1f lustre_msg_add_flags +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x826d3c4f RQF_LDLM_GL_CALLBACK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x82b31aa5 ptlrpc_at_set_req_timeout +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8313abd8 ptlrpc_unpack_req_msg +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x837efb00 RMF_NAME +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x840b95f9 ldlm_reprocess_all_ns +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x85135801 RMF_DLM_LVB +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x85229b67 sptlrpc_conf_client_adapt +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x85a9e0d8 RMF_FID +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x85eecf67 sptlrpc_get_hash_alg +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x863db6eb RMF_HSM_USER_STATE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x86fa8c3b ldlm_cli_convert +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x87469389 ldlm_completion_ast +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8760beaf lustre_swab_ldlm_policy_data +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x876c2551 RMF_GETINFO_KEY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x87bf7b3c sptlrpc_get_next_secid +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8822a3f1 ptlrpc_hpreq_handler +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x886e9eb3 ldlm_lock_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8872f3d2 RMF_SETINFO_KEY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x88fff52d RMF_CAPA2 +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x89f9edf7 RQF_MDS_REINT_SETXATTR +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8a1ea476 lustre_swab_hsm_state_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8a257736 RQF_MDS_HSM_STATE_GET +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8ac440fa ptlrpc_uuid_to_connection +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8b2ed99d ldlm_resource_putref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8b854254 lustre_swab_mgs_config_res +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8c6fe0c7 ldlm_namespace_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8cb71d4b RQF_MDS_REINT_CREATE_SLAVE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8d741f50 ldlm_pool_del +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8d77ea75 lustre_msg_set_flags +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8d868c43 ldlm_lock2handle +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8d92819a req_capsule_client_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8da3fca7 lustre_msg_add_version +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8dad46d5 ptlrpc_retain_replayable_request +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8e9abe4d RMF_GENERIC_DATA +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8ed0e4d2 lustre_pack_reply_flags +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8f0aceac RQF_MDS_HSM_ACTION +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8f9bcdf8 client_disconnect_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8fec0451 lustre_msg_get_limit +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x90497158 req_capsule_get_size +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x905b7891 sptlrpc_lprocfs_cliobd_attach +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x90d87441 sptlrpc_import_sec_ref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x919c4ce3 RMF_OBD_ID +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x91cf58d3 RQF_MDS_PIN +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x91d3d6d8 lustre_pack_reply_v2 +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9228392f lustre_swab_mdt_body +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x937b1ee0 lustre_swab_mdt_ioepoch +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9461b01f req_capsule_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9553c633 RQF_LDLM_INTENT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x959c3f4b ptlrpcd_add_rqset +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x95bdf654 sptlrpc_sec_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x95d08f0c lustre_swab_mgs_target_info +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9660ace0 RMF_FLD_MDFLD +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x967bfd52 RQF_OBD_PING +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9798f2f1 RQF_MDS_GETATTR +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x980fcfdc ptlrpc_connection_addref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x998b17e5 ldlm_namespace_new +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9999cf7a dump_ost_body +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9a258886 RQF_MDS_GETSTATUS +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9a6f2f6d lustre_msg_set_opc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9a6fb636 sptlrpc_get_bulk_checksum +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9b88f6ce RMF_NIOBUF_REMOTE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9b9acbd9 ldlm_cli_cancel_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9bb5198b RQF_MDS_CLOSE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9ce55467 ldlm_register_intent +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9d055608 ldlm_lock_allow_match_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9d7ea314 sptlrpc_pack_user_desc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9defd67e ldlm_cli_cancel_unused +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9fb088f1 lustre_swab_lov_mds_md +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa0812572 ptlrpc_prep_req_pool +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa10f0d3d RMF_UPDATE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa163f4c3 dump_rniobuf +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa2244636 RQF_MDS_GETATTR_NAME +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa22c0086 ldlm_error2errno +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa3d2a6ee RMF_CAPA1 +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa44e1896 ptlrpc_req_finished +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa4704558 ptlrpc_unregister_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa47787ef RMF_PTLRPC_BODY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa4a2d089 RQF_OST_PUNCH +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa4bea5ef lustre_swab_lmv_user_md +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa4fc65d5 sptlrpc_enc_pool_put_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa5458dad ldlm_lock_decref_and_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa5880075 ldlm_errno2error +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa5bcd415 ptlrpc_register_service +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa5bf1811 ptlrpc_queue_wait +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa6c436ca RQF_MDS_WRITEPAGE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa7d55cc3 RQF_MDS_REINT_CREATE_RMT_ACL +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa7e360b1 RMF_OBD_IOOBJ +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa7ec567d RMF_CONNECT_DATA +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa8942a51 ptlrpc_resend_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa9704f80 lustre_msg_get_last_committed +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa9c4658e lustre_swab_lov_user_md_v3 +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa9edf09d RQF_OBD_IDX_READ +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xab3d8369 ldlm_pool_get_lvf +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xab47ad08 ptlrpc_error +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xabb2a78a req_capsule_server_swab_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xabd66049 ptlrpc_pinger_del_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xacd6a7d7 lustre_swab_ost_last_id +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xad7c7557 ptlrpc_mark_interrupted +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xadbd35c3 ldlm_pool_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xaddc3979 lustre_swab_lustre_capa_key +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xae9de7f4 ptlrpc_add_timeout_client +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xaee9bacc ldlm_cli_enqueue +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xaeeeefbc ptlrpc_recover_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xaf4e9658 RQF_MDS_SYNC +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xaf50a0d6 RMF_HSM_STATE_SET +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb0751fa4 RQF_LLOG_ORIGIN_HANDLE_DESTROY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb1b43d8a dump_rcs +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb27c2374 lustre_msg_get_jobid +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb291473d lustre_msg_early_size +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb45c58bd ptlrpc_save_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb4a7ecf3 lustre_msg_add_op_flags +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb512ebc2 sptlrpc_parse_flavor +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb588ae98 sptlrpc_cli_ctx_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb61cb95a RQF_MDS_GETXATTR +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb68476df interval_erase +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb69e8aea lustre_pack_request +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb6aafd03 RQF_MDS_DONE_WRITING +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb75d8e18 ldlm_pool_set_slv +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb7b38189 RMF_MDT_MD +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb7fa3cc8 RMF_LLOG_LOG_HDR +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb903634e RQF_OST_CONNECT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb9b631cf lustre_swab_mgs_config_body +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb9f6df57 client_obd_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xba2e647c ldlm_cli_enqueue_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbaa76097 lustre_msg_string +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbc1370dc lustre_shrink_msg +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbc6d3c8e ptlrpc_stop_all_threads +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbd83bc44 RQF_OBD_SET_INFO +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbe1948e7 req_capsule_set_size +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbe47bc7e ping_evictor_start +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbe6092f6 ldlm_lock_fail_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbef769cc RQF_CONNECT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbf7e556d sptlrpc_gc_add_ctx +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbf98b86f RQF_MDS_QUOTACHECK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbffd4313 RQF_OST_BRW_WRITE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc06c4670 lustre_msg_get_versions +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc0867da7 RMF_REC_REINT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc0cdf55e RMF_MGS_SEND_PARAM +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc108c388 ptlrpc_service_health_check +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc2986d28 lustre_swab_ldlm_res_id +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc2b1af57 RQF_MGS_SET_INFO +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc2b5282f req_capsule_extend +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc2be922a RMF_SYMTGT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc33956ae ptlrpc_commit_replies +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc34e7f60 ldlm_lock2desc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc5182555 lprocfs_wr_ping +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc559a634 RMF_LAYOUT_INTENT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc5c5301e sptlrpc_svc_ctx_invalidate +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc60a60e1 RQF_OST_STATFS +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc694be4b RQF_LLOG_ORIGIN_HANDLE_PREV_BLOCK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc763fabc sptlrpc_process_config +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc79b9c67 ldlm_pools_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc7ca8257 RQF_MDS_REINT_SETATTR +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc7e47564 ptlrpc_interrupted_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc7e82f35 ldlm_cli_update_pool +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc8f586a9 ptlrpc_connection_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc9a439c4 sptlrpc_target_sec_part +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xca5a81ec ptlrpc_pinger_ir_down +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xcac9ca90 client_obd_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xcb2cc0cf lustre_swab_lquota_lvb +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xcb2ceaff sptlrpc_secflags2str +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xcb62a94e __ldlm_handle2lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xcd1575ec sptlrpc_target_update_exp_flavor +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xcdad1d0b ldlm_destroy_flock_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xce1a689b sptlrpc_enc_pool_add_user +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xce52ca0a lprocfs_wr_pinger_recov +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xce86066d lustre_msg_set_slv +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xcec513c9 RQF_MDS_UNPIN +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xcecca6d0 sptlrpc_cli_ctx_expire +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xced015be sptlrpc_rule_set_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xcf9963db lustre_msg_get_op_flags +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xcf9aab6a RQF_MDS_DISCONNECT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd16f1b1f client_import_find_conn +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd2983334 lustre_swab_swap_layouts +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd2e0d4eb lustre_msg_get_opc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd2e42ec2 ldlm_namespace_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd32a1e74 req_capsule_server_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd3dae408 ldlm_it2str +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd3f7237c ptlrpc_send_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd4ca3c39 ptlrpc_request_set_replen +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd56bfb3f target_send_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd58aa1da ptlrpc_buf_need_swab +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd65d3a9c ldlm_extent_shift_kms +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd67a5d7b lustre_swab_update_reply_buf +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd684ac40 ldlm_pool_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd69e0a27 RQF_MDS_IS_SUBDIR +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd6c3ebfb RMF_FIEMAP_KEY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd712a1e4 req_capsule_client_sized_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd7910326 lustre_swab_obd_statfs +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd8b91b3e lustre_swab_lov_desc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd8f06300 RQF_MDS_HSM_PROGRESS +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd92744fc ldlm_flock_completion_ast +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd94a7ba1 ldlm_destroy_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd9561861 RQF_LDLM_INTENT_OPEN +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd9a13bb2 ldlm_cli_cancel_unused_resource +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xdb1fb0a2 RQF_MDS_REINT_CREATE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xdb9d5a6a lustre_swab_niobuf_remote +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xdbb74173 ptlrpc_send_error +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xdcf7225e ptlrpc_request_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xdd0ffb04 sptlrpc_flavor2name +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xdd30d7bf RMF_ACL +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xddc40a85 lustre_msg_get_flags +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xdde09012 ldlm_cli_enqueue_local +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xde12d36b RMF_MDS_HSM_ARCHIVE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xde555d70 sptlrpc_enc_pool_del_user +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xdee87192 sptlrpc_conf_log_update_begin +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xdf701ae7 lustre_swab_fid2path +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe07cafee req_capsule_has_field +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe0cc694c RQF_LLOG_ORIGIN_HANDLE_NEXT_BLOCK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe261ceeb ptlrpc_pinger_sending_on_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe3220c0a ptlrpc_unregister_bulk +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe3738053 ptlrpc_set_next_timeout +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe3f446ad ptlrpc_req_finished_with_imp_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe40e0a50 lustre_msg_get_transno +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe441c18a ldlm_lock_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe4e0411a ptlrpc_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe57bd972 sptlrpc_current_user_desc_size +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe624de52 ptlrpc_free_rq_pool +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe63c3102 client_import_add_conn +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe643998e RQF_OST_SETATTR +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe6f0dc96 RQF_OST_CREATE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe7012253 ptl_send_rpc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe7062b5f RMF_U32 +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe7267611 _debug_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe7415d6f ptlrpc_init_rq_pool +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe7512278 ptlrpcd_addref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe85b6da3 lustre_swab_obdo +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe9d2e1fd ptlrpc_abort_inflight +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xeabac4fc sptlrpc_rule_set_merge +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xeb7dc388 ldlm_completion_ast_async +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xebb64e68 req_layout_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xec226f66 ping_evictor_stop +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xec939a00 RQF_MDS_REINT_UNLINK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xecace5c1 RQF_OST_GET_INFO_GENERIC +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xecd0a5ef ptlrpc_req_xid +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xed1c10d6 ptlrpc_connection_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xedcb740d sptlrpc_name2flavor_base +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xeecb5bd2 lustre_pack_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xef1aeca9 RMF_FLD_OPC +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf0241d6e lustre_swab_hsm_progress_kernel +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf082fd13 ptlrpc_req_set_repsize +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf0cc0646 lock_res_and_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf0d52b5f ptlrpc_pinger_suppress_pings +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf1300275 _sptlrpc_enlarge_msg_inplace +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf277c125 RQF_OST_GET_INFO_FIEMAP +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf27d49dc sptlrpc_target_choose_flavor +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf35f132b lustre_swab_ldlm_resource_desc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf3d44370 RQF_OST_DESTROY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf43540b9 lustre_swab_mgs_nidtbl_entry +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf45085e1 sptlrpc_conf_log_stop +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf47c1329 ldlm_pool_get_slv +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf55c033b RMF_MGS_CONFIG_BODY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf584a16b sptlrpc_part2name +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf596e9ae sptlrpc_conf_log_start +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf607fc23 sptlrpc_flavor2name_base +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf617ab8a lustre_msg_get_conn_cnt +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf697b756 ldlm_dump_all_namespaces +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf7408f84 lustre_swab_hsm_request +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf7ba40c0 RMF_MDS_HSM_PROGRESS +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf82281e3 sptlrpc_sec_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf85cb27e sptlrpc_parse_rule +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf870fed9 RQF_LDLM_GL_DESC_CALLBACK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf9051bd6 RQF_QC_CALLBACK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf94e41e0 deuuidify +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf973aa93 lustre_swab_lov_user_md_v1 +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf99914f4 ptlrpc_restart_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf9abbe68 ldlm_lock_fail_match_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf9ee11e2 lustre_msg_set_last_committed +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf9f72dfc RMF_TGTUUID +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xfa091398 ptlrpc_resend +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xfa51688d interval_insert +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xfb73bfbb ldlm_resource_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xfc2fa83f ptlrpc_del_timeout_client +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xfc59a185 sptlrpc_gc_add_sec +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xfd148bf8 RMF_LDLM_INTENT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xfd53181a ptlrpc_obd_ping +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xfdab18a0 ptlrpc_prep_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xfe7cefec ptlrpc_set_add_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xff02a0e9 ldlm_lock_set_data +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xffc807e8 sptlrpc_unpack_user_desc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xffe29c3f RQF_LDLM_ENQUEUE +EXPORT_SYMBOL drivers/staging/media/cxd2099/cxd2099 0xa60353cc cxd2099_attach +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x03299fa8 free_rtllib +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x04bba7c8 notify_wx_assoc_event +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x0857ac28 rtllib_wx_set_encode_ext +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x0c2735f8 rtllib_wx_set_mlme +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x0c8b7572 dot11d_init +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x15975e4f rtllib_ps_tx_ack +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x18504aef rtllib_softmac_stop_protocol +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x19d7e79f rtllib_act_scanning +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x1f33261d rtllib_wx_set_gen_ie +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x28c8b758 rtllib_stop_send_beacons +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x2e468cbd rtllib_DisableIntelPromiscuousMode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x2e517dab rtllib_stop_scan_syncro +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x31b8ed5b rtllib_wx_set_rts +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x33d90b7a rtllib_wx_get_power +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x3479fd24 alloc_rtllib +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x383122a2 rtllib_wx_set_power +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x43f347c1 rtllib_wx_set_essid +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x481b6e19 rtllib_wx_get_essid +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x4b776da6 Dot11d_Channelmap +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x52ab286c rtllib_sta_ps_send_null_frame +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x569463bb rtllib_wx_set_encode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x5cf420f0 rtllib_EnableIntelPromiscuousMode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x653c43c0 HT_update_self_and_peer_setting +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x70a13533 rtllib_MgntDisconnect +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x753fbf5b rtllib_wx_get_wap +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x80db9536 rtllib_wx_set_wap +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x86493b89 rtllib_get_beacon +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x8bf8e05e rtllib_reset_queue +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x91694a6f rtllib_wpa_supplicant_ioctl +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x93f2b325 rtllib_wx_set_rawtx +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x99911030 rtllib_legal_channel +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x9a817bf6 rtllib_wx_get_scan +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xa6df1853 rtllib_xmit +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xa9778239 rtllib_wx_set_scan +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xaed0cf22 RemovePeerTS +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xb0f12416 rtllib_stop_scan +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xb86fbde2 rtllib_softmac_start_protocol +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xbe1420f2 rt_global_debug_component +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xc45cc736 rtllib_wx_get_rts +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xca936adf rtllib_wx_get_mode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xcb1dca33 rtllib_wx_set_rate +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xcb6b90d1 rtllib_wx_set_freq +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xd8fce3d6 rtllib_wx_set_auth +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xde97d174 rtllib_wx_get_encode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xdf78f620 rtllib_wlan_frequencies +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xeafdc332 rtllib_rx +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xedc5de53 rtllib_wx_get_name +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xf89d691e rtllib_wx_get_freq +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xf8eb33fc rtllib_wx_get_rate +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xf925c5ce rtllib_start_send_beacons +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xf9659310 rtllib_wx_set_mode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xfa536840 rtllib_start_scan_syncro +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x0064d7c0 ieee80211_wx_get_encode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x029207e0 ieee80211_send_probe_requests_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x041ee992 ieee80211_is_shortslot_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x0702b26e ieee80211_start_scan_syncro_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x08d6f6e2 HTUpdateSelfAndPeerSetting +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x0b62f58b ieee80211_softmac_scan_syncro_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x16ede3fb ieee80211_wx_get_mode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x27d920f9 ieee80211_wx_set_freq_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x2a3cde64 ieee80211_reset_queue_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x36b767f8 ieee80211_ps_tx_ack_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x3f4a0c93 ieee80211_rx_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x4175428c ieee80211_wx_get_encode_ext_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x50944bce ieee80211_softmac_start_protocol_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x52fd9fee DOT11D_GetMaxTxPwrInDbm +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x532dfdea Dot11d_UpdateCountryIe +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x595f99bc Dot11d_Init +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x5b27d15e ieee80211_wx_get_name_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x5ca24288 ieee80211_wx_get_freq_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x6d96818a ieee80211_wx_set_mode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x79fa0e7f ieee80211_wx_get_wap_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x7ad24e02 IsLegalChannel +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x7c57c0f1 notify_wx_assoc_event_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x7ea074cb ieee80211_wx_get_rts_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x83e5d44b ieee80211_wx_set_mlme_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x866318e9 ieee80211_wx_set_encode_ext_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x86dd5b01 ieee80211_wx_set_rawtx_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x8b6c6e2f ToLegalChannel +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x95fce478 ieee80211_wx_set_encode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x9794c0a9 ieee80211_stop_queue_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x9c7c3a7f ieee80211_softmac_xmit_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xa73d3e92 ieee80211_wx_set_auth_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xaa22ec9b ieee80211_wx_set_rate_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xb3b3d1b5 ieee80211_wx_set_wap_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xb4e9ab01 ieee80211_wx_set_rts_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xb9604d05 ieee80211_wx_get_scan_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xc21b2f74 ieee80211_wx_set_scan_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xc370a43e ieee80211_wlan_frequencies_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xc49b33fe ieee80211_start_send_beacons_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xc66dfd8b ieee80211_disassociate_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xc738a203 ieee80211_wx_set_gen_ie_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xc9e17426 ieee80211_txb_free_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xcccea2cd SendDisassociation_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xceee860b ieee80211_stop_send_beacons_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xcf4c2491 ieee80211_is_54g_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xd104d90e Dot11d_Reset +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xd1598eea ieee80211_wx_get_rate_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xd1c62dda ieee80211_wx_set_power_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xd782b5de ieee80211_get_beacon_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xdbaea119 ieee80211_wake_queue_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xdca058ce ieee80211_wx_get_essid_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xe51437fe ieee80211_wpa_supplicant_ioctl_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xf22a36b3 ieee80211_softmac_stop_protocol_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xf6bf1712 ieee80211_wx_get_power_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xf731862f DOT11D_ScanComplete +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xfa086be5 ieee80211_stop_scan_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xfbd96206 ieee80211_wx_set_essid_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xfe14714a ieee80211_rx_mgt_rsl +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x0cfcc1ad iscsit_setup_scsi_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x0e4471f1 iscsit_check_dataout_hdr +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x0f4ea525 iscsit_stop_dataout_timer +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x1390a00a iscsit_build_rsp_pdu +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x201e665b iscsit_setup_text_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x2eff9a60 iscsit_process_scsi_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x385aba60 iscsit_process_nop_out +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x3f3b71b0 iscsit_unregister_transport +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x4256c0d5 iscsit_build_text_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x47854654 iscsit_sequence_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x48ded068 iscsit_increment_maxcmdsn +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x4d383d92 iscsit_handle_logout_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x5587c168 iscsit_release_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x58be3061 iscsit_set_unsoliticed_dataout +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x601a5797 iscsit_logout_post_handler +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x69cdef4c iscsit_build_reject +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x79d5b74c iscsit_find_cmd_from_itt +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x851e28cd iscsit_handle_task_mgt_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x86ed4678 iscsit_cause_connection_reinstatement +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x90d8c753 iscsit_setup_nop_out +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x9daa2f14 iscsit_register_transport +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xc0c53328 iscsit_build_nopin_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xe39b4683 iscsit_build_logout_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xe52270fb iscsit_tmr_post_handler +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xec2275a7 iscsit_process_text_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xecbc8741 iscsit_build_task_mgt_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xf2164c61 iscsit_allocate_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xfc514454 iscsit_check_dataout_payload +EXPORT_SYMBOL drivers/target/target_core_mod 0x02de3b18 transport_set_vpd_ident +EXPORT_SYMBOL drivers/target/target_core_mod 0x0441f01e sbc_get_write_same_sectors +EXPORT_SYMBOL drivers/target/target_core_mod 0x05c6d2e6 transport_generic_handle_tmr +EXPORT_SYMBOL drivers/target/target_core_mod 0x0769b35c transport_generic_request_failure +EXPORT_SYMBOL drivers/target/target_core_mod 0x09e0a5d5 target_wait_for_sess_cmds +EXPORT_SYMBOL drivers/target/target_core_mod 0x15182d95 core_tmr_alloc_req +EXPORT_SYMBOL drivers/target/target_core_mod 0x1669b588 target_register_template +EXPORT_SYMBOL drivers/target/target_core_mod 0x1ae186ad passthrough_parse_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0x2416a34b transport_free_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x295289d2 target_get_sess_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x2a0897fe target_submit_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x2ae91826 transport_alloc_session_tags +EXPORT_SYMBOL drivers/target/target_core_mod 0x2d21a085 transport_kunmap_data_sg +EXPORT_SYMBOL drivers/target/target_core_mod 0x2e3372e8 core_tpg_set_initiator_node_tag +EXPORT_SYMBOL drivers/target/target_core_mod 0x2f138122 target_put_sess_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x32041a08 sbc_dif_copy_prot +EXPORT_SYMBOL drivers/target/target_core_mod 0x32ca2962 target_depend_item +EXPORT_SYMBOL drivers/target/target_core_mod 0x35e713c9 core_alua_check_nonop_delay +EXPORT_SYMBOL drivers/target/target_core_mod 0x3f510975 transport_init_se_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x41ed8964 transport_register_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x4be7dadd transport_init_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x521b7289 target_put_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x52bff181 transport_kmap_data_sg +EXPORT_SYMBOL drivers/target/target_core_mod 0x597d1d94 transport_deregister_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x5bde9ead spc_emulate_evpd_83 +EXPORT_SYMBOL drivers/target/target_core_mod 0x69fc499f target_show_dynamic_sessions +EXPORT_SYMBOL drivers/target/target_core_mod 0x6cdbd955 target_sess_cmd_list_set_waiting +EXPORT_SYMBOL drivers/target/target_core_mod 0x6d3b2423 transport_generic_new_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x6ff7f8e3 core_tpg_check_initiator_node_acl +EXPORT_SYMBOL drivers/target/target_core_mod 0x763a6311 transport_send_check_condition_and_sense +EXPORT_SYMBOL drivers/target/target_core_mod 0x76fcaf66 spc_emulate_report_luns +EXPORT_SYMBOL drivers/target/target_core_mod 0x7dbada9d transport_set_vpd_ident_type +EXPORT_SYMBOL drivers/target/target_core_mod 0x7ed877ae core_tpg_set_initiator_node_queue_depth +EXPORT_SYMBOL drivers/target/target_core_mod 0x85aa880c transport_set_vpd_assoc +EXPORT_SYMBOL drivers/target/target_core_mod 0x8624b3b9 sbc_dif_verify +EXPORT_SYMBOL drivers/target/target_core_mod 0x8f536ff3 transport_backend_register +EXPORT_SYMBOL drivers/target/target_core_mod 0x908254b0 target_get_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x91ab0d70 core_tpg_register +EXPORT_SYMBOL drivers/target/target_core_mod 0x9377322b target_backend_unregister +EXPORT_SYMBOL drivers/target/target_core_mod 0x941315fc transport_wait_for_tasks +EXPORT_SYMBOL drivers/target/target_core_mod 0x94578ca4 sbc_get_device_type +EXPORT_SYMBOL drivers/target/target_core_mod 0x97f33248 core_tpg_get_initiator_node_acl +EXPORT_SYMBOL drivers/target/target_core_mod 0x99342deb target_submit_cmd_map_sgls +EXPORT_SYMBOL drivers/target/target_core_mod 0x9dfae136 target_lun_is_rdonly +EXPORT_SYMBOL drivers/target/target_core_mod 0x9f4ab4da transport_generic_free_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xa78785bc transport_deregister_session_configfs +EXPORT_SYMBOL drivers/target/target_core_mod 0xa9d531a6 __transport_register_session +EXPORT_SYMBOL drivers/target/target_core_mod 0xb1633d6d passthrough_attrib_attrs +EXPORT_SYMBOL drivers/target/target_core_mod 0xb40882cf target_complete_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xb6f2bd85 transport_check_aborted_status +EXPORT_SYMBOL drivers/target/target_core_mod 0xba759dd9 spc_parse_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0xbed6caea sbc_parse_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0xbfb53834 transport_lookup_cmd_lun +EXPORT_SYMBOL drivers/target/target_core_mod 0xc1aa5749 target_complete_cmd_with_length +EXPORT_SYMBOL drivers/target/target_core_mod 0xd05523f1 transport_handle_cdb_direct +EXPORT_SYMBOL drivers/target/target_core_mod 0xd15f9af6 sbc_attrib_attrs +EXPORT_SYMBOL drivers/target/target_core_mod 0xd2841c1a spc_emulate_inquiry_std +EXPORT_SYMBOL drivers/target/target_core_mod 0xd46f2e79 target_unregister_template +EXPORT_SYMBOL drivers/target/target_core_mod 0xdb3540e7 target_nacl_find_deve +EXPORT_SYMBOL drivers/target/target_core_mod 0xf01621c7 transport_set_vpd_proto_id +EXPORT_SYMBOL drivers/target/target_core_mod 0xf1d21f9e target_execute_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xf65bf01d transport_lookup_tmr_lun +EXPORT_SYMBOL drivers/target/target_core_mod 0xf7ecac18 target_undepend_item +EXPORT_SYMBOL drivers/target/target_core_mod 0xfb9938be core_tpg_deregister +EXPORT_SYMBOL drivers/target/target_core_mod 0xfbb26067 target_submit_tmr +EXPORT_SYMBOL drivers/target/target_core_mod 0xfbfe25a4 transport_init_session_tags +EXPORT_SYMBOL drivers/target/target_core_mod 0xfc9edbc2 target_setup_cmd_from_cdb +EXPORT_SYMBOL drivers/thermal/int340x_thermal/acpi_thermal_rel 0x1887763e acpi_thermal_rel_misc_device_add +EXPORT_SYMBOL drivers/thermal/int340x_thermal/acpi_thermal_rel 0x5007fc2c acpi_parse_art +EXPORT_SYMBOL drivers/thermal/int340x_thermal/acpi_thermal_rel 0x86c998e6 acpi_thermal_rel_misc_device_remove +EXPORT_SYMBOL drivers/thermal/int340x_thermal/acpi_thermal_rel 0xdf707fab acpi_parse_trt +EXPORT_SYMBOL drivers/usb/class/cdc-wdm 0x3e722380 usb_cdc_wdm_register +EXPORT_SYMBOL drivers/usb/gadget/function/usb_f_uvc 0x92e9ebac uvc_set_trace_param +EXPORT_SYMBOL drivers/usb/gadget/libcomposite 0x52444e9d usb_os_desc_prepare_interf_dir +EXPORT_SYMBOL drivers/usb/host/sl811-hcd 0xc8d5d10b sl811h_driver +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x0376793e usb_wwan_write +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x094b5a49 usb_wwan_tiocmget +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x1d7935d5 usb_wwan_tiocmset +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x6b17e709 usb_wwan_open +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x72966a37 usb_wwan_dtr_rts +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x7eb9d6a1 usb_wwan_port_remove +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x85e989b9 usb_wwan_resume +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x8753fa15 usb_wwan_close +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x8926350d usb_wwan_write_room +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xb689ac2e usb_wwan_chars_in_buffer +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xef251970 usb_wwan_ioctl +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xf3907b5d usb_wwan_suspend +EXPORT_SYMBOL drivers/usb/serial/usbserial 0x1871ba03 usb_serial_resume +EXPORT_SYMBOL drivers/usb/serial/usbserial 0x57509be1 usb_serial_suspend +EXPORT_SYMBOL drivers/vhost/vringh 0x0fd987f7 vringh_abandon_user +EXPORT_SYMBOL drivers/vhost/vringh 0x14397bb5 vringh_notify_disable_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x2e91ca97 vringh_iov_pull_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x32da6f89 vringh_notify_enable_user +EXPORT_SYMBOL drivers/vhost/vringh 0x367ce26a vringh_iov_push_user +EXPORT_SYMBOL drivers/vhost/vringh 0x39c9d7a5 vringh_complete_multi_user +EXPORT_SYMBOL drivers/vhost/vringh 0x4f384f8b vringh_need_notify_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x58abf4ed vringh_init_user +EXPORT_SYMBOL drivers/vhost/vringh 0x59f824d9 vringh_getdesc_user +EXPORT_SYMBOL drivers/vhost/vringh 0x6432894b vringh_init_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x7bda5e6d vringh_iov_push_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x821e9390 vringh_iov_pull_user +EXPORT_SYMBOL drivers/vhost/vringh 0x8d080d03 vringh_need_notify_user +EXPORT_SYMBOL drivers/vhost/vringh 0x937e412c vringh_getdesc_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x95e62337 vringh_abandon_kern +EXPORT_SYMBOL drivers/vhost/vringh 0xb4b63575 vringh_notify_enable_kern +EXPORT_SYMBOL drivers/vhost/vringh 0xc578f0f7 vringh_complete_user +EXPORT_SYMBOL drivers/vhost/vringh 0xd355e031 vringh_complete_kern +EXPORT_SYMBOL drivers/vhost/vringh 0xd609393d vringh_notify_disable_user +EXPORT_SYMBOL drivers/video/backlight/lcd 0x16caf921 devm_lcd_device_register +EXPORT_SYMBOL drivers/video/backlight/lcd 0x3c47f0a6 devm_lcd_device_unregister +EXPORT_SYMBOL drivers/video/backlight/lcd 0x450070cf lcd_device_register +EXPORT_SYMBOL drivers/video/backlight/lcd 0x62b00466 lcd_device_unregister +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x0b2a7957 svga_get_caps +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 0x272fa249 svga_tilecopy +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x29604946 svga_tilecursor +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x4ab38ef2 svga_set_default_crt_regs +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x689ea70d svga_tileblit +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x6e4adb1e svga_check_timings +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x80f24d95 svga_wcrt_multi +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x8d76f838 svga_get_tilemax +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x8de63fb4 svga_set_timings +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xd1429fca svga_wseq_multi +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xd22ca511 svga_set_default_atc_regs +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xe28d2a49 svga_set_default_gfx_regs +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xef774f5d svga_compute_pll +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xf2db5956 svga_match_format +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xf5a03585 svga_settile +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xfa382152 svga_tilefill +EXPORT_SYMBOL drivers/video/fbdev/core/syscopyarea 0x090a8dfa sys_copyarea +EXPORT_SYMBOL drivers/video/fbdev/core/sysfillrect 0xb116fb0e sys_fillrect +EXPORT_SYMBOL drivers/video/fbdev/core/sysimgblt 0xba10f59c 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 0xb39f68d1 cyber2000fb_enable_extregs +EXPORT_SYMBOL drivers/video/fbdev/cyber2000fb 0xfde38894 cyber2000fb_attach +EXPORT_SYMBOL drivers/video/fbdev/macmodes 0x233917d1 mac_vmode_to_var +EXPORT_SYMBOL drivers/video/fbdev/macmodes 0xc3ada675 mac_find_mode +EXPORT_SYMBOL drivers/video/fbdev/macmodes 0xe2304303 mac_map_monitor_sense +EXPORT_SYMBOL drivers/video/fbdev/matrox/g450_pll 0x139aa1e1 matroxfb_g450_setpll_cond +EXPORT_SYMBOL drivers/video/fbdev/matrox/g450_pll 0xa2d3daf2 matroxfb_g450_setclk +EXPORT_SYMBOL drivers/video/fbdev/matrox/g450_pll 0xcfaa06be g450_mnp2f +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_DAC1064 0x3fa89723 DAC1064_global_restore +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_DAC1064 0x62c6e1f0 DAC1064_global_init +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_DAC1064 0x868a11b4 matrox_mystique +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_DAC1064 0x9a6c8ddc matrox_G100 +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_Ti3026 0xb9c5e385 matrox_millennium +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_accel 0x455db5b0 matrox_cfbX_init +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_base 0x1965eda5 matroxfb_unregister_driver +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_base 0x1e603d6b matroxfb_register_driver +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_base 0x5fbae0af matroxfb_wait_for_sync +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_base 0x96ad5e93 matroxfb_enable_irq +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_g450 0x178b50ea matroxfb_g450_shutdown +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_g450 0x847b2548 matroxfb_g450_connect +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0x25cf8049 matroxfb_PLL_calcclock +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0x52810ffa matroxfb_DAC_out +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0x5339e304 matroxfb_DAC_in +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0x632f2d10 matroxfb_vgaHWinit +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0xbe4f8b26 matroxfb_read_pins +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0xc6b5e600 matroxfb_vgaHWrestore +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0xcdc90c64 matroxfb_var2my +EXPORT_SYMBOL drivers/video/fbdev/mb862xx/mb862xxfb 0x1cd59715 mb862xxfb_init_accel +EXPORT_SYMBOL drivers/video/fbdev/sis/sisfb 0x3037658e sis_malloc +EXPORT_SYMBOL drivers/video/fbdev/sis/sisfb 0x454a3cf0 sis_free +EXPORT_SYMBOL drivers/video/vgastate 0x686de290 restore_vga +EXPORT_SYMBOL drivers/video/vgastate 0xe7a2620e save_vga +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0x707e750a w1_ds2760_read +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0x7841ce7c w1_ds2760_recall_eeprom +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0xa13e6a4c w1_ds2760_write +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0xc352ef25 w1_ds2760_store_eeprom +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2780 0x4454ec4b w1_ds2780_io +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2780 0xa7fded79 w1_ds2780_eeprom_cmd +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2781 0x8226d678 w1_ds2781_eeprom_cmd +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2781 0xc100a50b w1_ds2781_io +EXPORT_SYMBOL drivers/w1/wire 0x11cf33a4 w1_remove_master_device +EXPORT_SYMBOL drivers/w1/wire 0x1cb64478 w1_unregister_family +EXPORT_SYMBOL drivers/w1/wire 0xea5398b2 w1_add_master_device +EXPORT_SYMBOL drivers/w1/wire 0xf3c1234a w1_register_family +EXPORT_SYMBOL drivers/watchdog/iTCO_vendor_support 0x04e133fc iTCO_vendor_check_noreboot_on +EXPORT_SYMBOL drivers/watchdog/iTCO_vendor_support 0xa78bd894 iTCO_vendor_pre_set_heartbeat +EXPORT_SYMBOL drivers/watchdog/iTCO_vendor_support 0xb5f20875 iTCO_vendor_pre_keepalive +EXPORT_SYMBOL drivers/watchdog/iTCO_vendor_support 0xc4f657bf iTCO_vendor_pre_stop +EXPORT_SYMBOL drivers/watchdog/iTCO_vendor_support 0xdc6effc9 iTCO_vendor_pre_start +EXPORT_SYMBOL fs/configfs/configfs 0x1d18a611 config_item_set_name +EXPORT_SYMBOL fs/configfs/configfs 0x457c541c configfs_undepend_item +EXPORT_SYMBOL fs/configfs/configfs 0x5b0d0d18 config_item_get +EXPORT_SYMBOL fs/configfs/configfs 0x7091756e config_group_init +EXPORT_SYMBOL fs/configfs/configfs 0x78710868 config_item_put +EXPORT_SYMBOL fs/configfs/configfs 0xa4af7e3d configfs_depend_item +EXPORT_SYMBOL fs/configfs/configfs 0xcf1584bc config_group_find_item +EXPORT_SYMBOL fs/configfs/configfs 0xd4f75fd6 config_group_init_type_name +EXPORT_SYMBOL fs/configfs/configfs 0xe495083a configfs_unregister_subsystem +EXPORT_SYMBOL fs/configfs/configfs 0xef1724eb config_item_init_type_name +EXPORT_SYMBOL fs/configfs/configfs 0xfebbb36d configfs_register_subsystem +EXPORT_SYMBOL fs/exofs/libore 0x28806871 ore_verify_layout +EXPORT_SYMBOL fs/exofs/libore 0x2d7d9385 ore_get_io_state +EXPORT_SYMBOL fs/exofs/libore 0x4527e170 ore_calc_stripe_info +EXPORT_SYMBOL fs/exofs/libore 0x52735a4e ore_truncate +EXPORT_SYMBOL fs/exofs/libore 0x52c1c6f5 ore_read +EXPORT_SYMBOL fs/exofs/libore 0x6b403ca6 extract_attr_from_ios +EXPORT_SYMBOL fs/exofs/libore 0x8acdbd0f ore_create +EXPORT_SYMBOL fs/exofs/libore 0xa3d2a634 g_attr_logical_length +EXPORT_SYMBOL fs/exofs/libore 0xa9f1f9a3 ore_get_rw_state +EXPORT_SYMBOL fs/exofs/libore 0xabf34210 ore_check_io +EXPORT_SYMBOL fs/exofs/libore 0xe73e1e27 ore_put_io_state +EXPORT_SYMBOL fs/exofs/libore 0xecf670e7 ore_remove +EXPORT_SYMBOL fs/exofs/libore 0xfc6887b3 ore_write +EXPORT_SYMBOL fs/fscache/fscache 0x04d0a536 __fscache_check_page_write +EXPORT_SYMBOL fs/fscache/fscache 0x0533df40 fscache_io_error +EXPORT_SYMBOL fs/fscache/fscache 0x060a8bf2 __fscache_write_page +EXPORT_SYMBOL fs/fscache/fscache 0x0a9aa11b __fscache_attr_changed +EXPORT_SYMBOL fs/fscache/fscache 0x1109f58e __fscache_uncache_page +EXPORT_SYMBOL fs/fscache/fscache 0x12dfaf34 __fscache_maybe_release_page +EXPORT_SYMBOL fs/fscache/fscache 0x15de9aff fscache_check_aux +EXPORT_SYMBOL fs/fscache/fscache 0x1752ffd4 fscache_mark_page_cached +EXPORT_SYMBOL fs/fscache/fscache 0x18291c4a fscache_put_operation +EXPORT_SYMBOL fs/fscache/fscache 0x20c16ab1 __fscache_alloc_page +EXPORT_SYMBOL fs/fscache/fscache 0x25215e9d fscache_operation_init +EXPORT_SYMBOL fs/fscache/fscache 0x2733c5ba __fscache_update_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x285ff684 fscache_add_cache +EXPORT_SYMBOL fs/fscache/fscache 0x355110b1 fscache_object_init +EXPORT_SYMBOL fs/fscache/fscache 0x355a17ea fscache_op_complete +EXPORT_SYMBOL fs/fscache/fscache 0x390fcdd9 __fscache_wait_on_page_write +EXPORT_SYMBOL fs/fscache/fscache 0x395a653e fscache_object_lookup_negative +EXPORT_SYMBOL fs/fscache/fscache 0x3c0c1dd3 fscache_fsdef_index +EXPORT_SYMBOL fs/fscache/fscache 0x4845fd5e __fscache_disable_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x6a9b44e5 __fscache_register_netfs +EXPORT_SYMBOL fs/fscache/fscache 0x74530ecd fscache_op_debug_id +EXPORT_SYMBOL fs/fscache/fscache 0x7ded1d76 __fscache_relinquish_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x89ff49a2 fscache_init_cache +EXPORT_SYMBOL fs/fscache/fscache 0x8bc1d020 __fscache_uncache_all_inode_pages +EXPORT_SYMBOL fs/fscache/fscache 0x9bdf323e fscache_cache_cleared_wq +EXPORT_SYMBOL fs/fscache/fscache 0xa023091c fscache_obtained_object +EXPORT_SYMBOL fs/fscache/fscache 0xa401fa82 __fscache_wait_on_invalidate +EXPORT_SYMBOL fs/fscache/fscache 0xa47047ad __fscache_acquire_cookie +EXPORT_SYMBOL fs/fscache/fscache 0xa8aa0940 __fscache_read_or_alloc_page +EXPORT_SYMBOL fs/fscache/fscache 0xb014f925 __fscache_unregister_netfs +EXPORT_SYMBOL fs/fscache/fscache 0xbc5d1f75 fscache_object_mark_killed +EXPORT_SYMBOL fs/fscache/fscache 0xc447af8c fscache_mark_pages_cached +EXPORT_SYMBOL fs/fscache/fscache 0xc7edeab5 __fscache_readpages_cancel +EXPORT_SYMBOL fs/fscache/fscache 0xd323e43f __fscache_check_consistency +EXPORT_SYMBOL fs/fscache/fscache 0xd9d519ec fscache_object_destroy +EXPORT_SYMBOL fs/fscache/fscache 0xe4b28c59 __fscache_read_or_alloc_pages +EXPORT_SYMBOL fs/fscache/fscache 0xed7ce52d __fscache_invalidate +EXPORT_SYMBOL fs/fscache/fscache 0xee83d2e0 __fscache_enable_cookie +EXPORT_SYMBOL fs/fscache/fscache 0xf035a067 fscache_enqueue_operation +EXPORT_SYMBOL fs/fscache/fscache 0xf39c14cb fscache_object_retrying_stale +EXPORT_SYMBOL fs/fscache/fscache 0xf56fd904 fscache_withdraw_cache +EXPORT_SYMBOL fs/ocfs2/cluster/ocfs2_nodemanager 0xbfd7d7a2 o2hb_global_heartbeat_active +EXPORT_SYMBOL fs/quota/quota_tree 0x056b4268 qtree_write_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0x6248811b qtree_read_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0xb63db56e qtree_entry_unused +EXPORT_SYMBOL fs/quota/quota_tree 0xc01bafba qtree_release_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0xf7a848d3 qtree_delete_dquot +EXPORT_SYMBOL lib/cordic 0x434bfd07 cordic_calc_iq +EXPORT_SYMBOL lib/crc-ccitt 0x3771b461 crc_ccitt +EXPORT_SYMBOL lib/crc-ccitt 0x75811312 crc_ccitt_table +EXPORT_SYMBOL lib/crc-itu-t 0xd29b009f crc_itu_t_table +EXPORT_SYMBOL lib/crc-itu-t 0xf5b4a948 crc_itu_t +EXPORT_SYMBOL lib/crc7 0x66213969 crc7_be +EXPORT_SYMBOL lib/crc7 0x7a222007 crc7_be_syndrome_table +EXPORT_SYMBOL lib/crc8 0x41248eaf crc8 +EXPORT_SYMBOL lib/crc8 0xab9ad613 crc8_populate_lsb +EXPORT_SYMBOL lib/crc8 0xd4534d80 crc8_populate_msb +EXPORT_SYMBOL lib/libcrc32c 0x27000b29 crc32c +EXPORT_SYMBOL lib/lru_cache 0x03f599c7 lc_get_cumulative +EXPORT_SYMBOL lib/lru_cache 0x4feade4b lc_create +EXPORT_SYMBOL lib/lru_cache 0x56930467 lc_seq_printf_stats +EXPORT_SYMBOL lib/lru_cache 0x56fc3ea0 lc_put +EXPORT_SYMBOL lib/lru_cache 0x619ed575 lc_try_get +EXPORT_SYMBOL lib/lru_cache 0x6a059eb3 lc_seq_dump_details +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/lz4_compress 0xcbc5d521 lz4_compress +EXPORT_SYMBOL lib/lz4/lz4hc_compress 0x26c3aa22 lz4hc_compress +EXPORT_SYMBOL lib/raid6/raid6_pq 0x0bd662f6 raid6_gfmul +EXPORT_SYMBOL lib/raid6/raid6_pq 0x15fe0cd3 raid6_gfexp +EXPORT_SYMBOL lib/raid6/raid6_pq 0x5ba93f9d raid6_gfinv +EXPORT_SYMBOL lib/raid6/raid6_pq 0xb0d904b7 raid6_empty_zero_page +EXPORT_SYMBOL lib/raid6/raid6_pq 0xce45a6f1 raid6_gfexi +EXPORT_SYMBOL lib/raid6/raid6_pq 0xd9e91f83 raid6_vgfmul +EXPORT_SYMBOL net/6lowpan/6lowpan 0x8d5ac1a8 lowpan_nhc_del +EXPORT_SYMBOL net/6lowpan/6lowpan 0x9d7e5ed1 lowpan_nhc_add +EXPORT_SYMBOL net/802/p8022 0xb9be434e register_8022_client +EXPORT_SYMBOL net/802/p8022 0xc01b4a88 unregister_8022_client +EXPORT_SYMBOL net/802/p8023 0x43aee9bb make_8023_client +EXPORT_SYMBOL net/802/p8023 0xd31b68b1 destroy_8023_client +EXPORT_SYMBOL net/802/psnap 0x12d0c75c unregister_snap_client +EXPORT_SYMBOL net/802/psnap 0xb69dfab2 register_snap_client +EXPORT_SYMBOL net/9p/9pnet 0x044d2e97 p9_client_remove +EXPORT_SYMBOL net/9p/9pnet 0x06082666 p9_client_link +EXPORT_SYMBOL net/9p/9pnet 0x08323cff p9_client_symlink +EXPORT_SYMBOL net/9p/9pnet 0x0a9ada47 v9fs_get_trans_by_name +EXPORT_SYMBOL net/9p/9pnet 0x1080c05d p9_client_rename +EXPORT_SYMBOL net/9p/9pnet 0x14d0e2c4 p9_client_readlink +EXPORT_SYMBOL net/9p/9pnet 0x153ab8dd p9_client_setattr +EXPORT_SYMBOL net/9p/9pnet 0x1a37c7e9 p9_parse_header +EXPORT_SYMBOL net/9p/9pnet 0x1bd46cb1 p9_tag_lookup +EXPORT_SYMBOL net/9p/9pnet 0x2d025ac2 p9_client_mknod_dotl +EXPORT_SYMBOL net/9p/9pnet 0x35d1e27e p9_idpool_get +EXPORT_SYMBOL net/9p/9pnet 0x37841a50 p9_client_unlinkat +EXPORT_SYMBOL net/9p/9pnet 0x3a6cbf94 p9_client_destroy +EXPORT_SYMBOL net/9p/9pnet 0x3bfaf00d p9_client_mkdir_dotl +EXPORT_SYMBOL net/9p/9pnet 0x3d6a96e5 p9_client_wstat +EXPORT_SYMBOL net/9p/9pnet 0x3d73a797 p9_errstr2errno +EXPORT_SYMBOL net/9p/9pnet 0x3e9eaeba p9_client_fcreate +EXPORT_SYMBOL net/9p/9pnet 0x44d2c2c0 p9stat_free +EXPORT_SYMBOL net/9p/9pnet 0x46e7f06d p9_client_create_dotl +EXPORT_SYMBOL net/9p/9pnet 0x489696da p9_client_readdir +EXPORT_SYMBOL net/9p/9pnet 0x4de5afda v9fs_unregister_trans +EXPORT_SYMBOL net/9p/9pnet 0x5c41726d p9_client_fsync +EXPORT_SYMBOL net/9p/9pnet 0x664c72c2 p9_is_proto_dotl +EXPORT_SYMBOL net/9p/9pnet 0x6cb375ea p9dirent_read +EXPORT_SYMBOL net/9p/9pnet 0x6cd5326e p9_client_disconnect +EXPORT_SYMBOL net/9p/9pnet 0x772d17ad p9_client_getattr_dotl +EXPORT_SYMBOL net/9p/9pnet 0x82eeb798 p9_client_cb +EXPORT_SYMBOL net/9p/9pnet 0x86ed5e67 p9_client_begin_disconnect +EXPORT_SYMBOL net/9p/9pnet 0x8bd4946c p9_client_stat +EXPORT_SYMBOL net/9p/9pnet 0x92143c3c p9_client_open +EXPORT_SYMBOL net/9p/9pnet 0x9273f02f p9_client_attach +EXPORT_SYMBOL net/9p/9pnet 0x9783d3c5 v9fs_register_trans +EXPORT_SYMBOL net/9p/9pnet 0xa98cda70 p9_client_write +EXPORT_SYMBOL net/9p/9pnet 0xaa9245ae p9stat_read +EXPORT_SYMBOL net/9p/9pnet 0xbfbf2090 p9_is_proto_dotu +EXPORT_SYMBOL net/9p/9pnet 0xc5db54a9 p9_idpool_destroy +EXPORT_SYMBOL net/9p/9pnet 0xc9a19951 p9_client_clunk +EXPORT_SYMBOL net/9p/9pnet 0xdc0f99c6 p9_client_read +EXPORT_SYMBOL net/9p/9pnet 0xdd30755c p9_client_getlock_dotl +EXPORT_SYMBOL net/9p/9pnet 0xe1a27c42 p9_client_create +EXPORT_SYMBOL net/9p/9pnet 0xe49ff096 p9_release_pages +EXPORT_SYMBOL net/9p/9pnet 0xe58a3360 p9_error_init +EXPORT_SYMBOL net/9p/9pnet 0xe5fce4bf p9_client_statfs +EXPORT_SYMBOL net/9p/9pnet 0xeb070a8f v9fs_get_default_trans +EXPORT_SYMBOL net/9p/9pnet 0xecb9014e p9_client_renameat +EXPORT_SYMBOL net/9p/9pnet 0xf4a111d8 p9_idpool_create +EXPORT_SYMBOL net/9p/9pnet 0xf84f2022 p9_idpool_put +EXPORT_SYMBOL net/9p/9pnet 0xf852259e p9_client_lock_dotl +EXPORT_SYMBOL net/9p/9pnet 0xfd40c79d p9_idpool_check +EXPORT_SYMBOL net/9p/9pnet 0xfd8abda2 p9_client_walk +EXPORT_SYMBOL net/appletalk/appletalk 0x17143fc0 alloc_ltalkdev +EXPORT_SYMBOL net/appletalk/appletalk 0x46be25f1 atalk_find_dev_addr +EXPORT_SYMBOL net/appletalk/appletalk 0x4ca4eced atrtr_get_dev +EXPORT_SYMBOL net/appletalk/appletalk 0x92044f8c aarp_send_ddp +EXPORT_SYMBOL net/atm/atm 0x02adfc15 vcc_release_async +EXPORT_SYMBOL net/atm/atm 0x04101833 atm_dev_lookup +EXPORT_SYMBOL net/atm/atm 0x1bfbb10f vcc_sklist_lock +EXPORT_SYMBOL net/atm/atm 0x27488bb5 atm_dev_deregister +EXPORT_SYMBOL net/atm/atm 0x2cc2d52d vcc_hash +EXPORT_SYMBOL net/atm/atm 0x3e550a28 atm_init_aal5 +EXPORT_SYMBOL net/atm/atm 0x41fb9882 atm_alloc_charge +EXPORT_SYMBOL net/atm/atm 0x4443d399 atm_proc_root +EXPORT_SYMBOL net/atm/atm 0x6a4cf5a1 register_atm_ioctl +EXPORT_SYMBOL net/atm/atm 0x6be2a2a9 atm_dev_signal_change +EXPORT_SYMBOL net/atm/atm 0x77abe788 vcc_process_recv_queue +EXPORT_SYMBOL net/atm/atm 0x98abef09 atm_dev_release_vccs +EXPORT_SYMBOL net/atm/atm 0x9a955e6e atm_charge +EXPORT_SYMBOL net/atm/atm 0x9feaf287 sonet_subtract_stats +EXPORT_SYMBOL net/atm/atm 0xa27baf25 vcc_insert_socket +EXPORT_SYMBOL net/atm/atm 0xaa024146 sonet_copy_stats +EXPORT_SYMBOL net/atm/atm 0xb770fee0 deregister_atm_ioctl +EXPORT_SYMBOL net/atm/atm 0xd018565b atm_dev_register +EXPORT_SYMBOL net/atm/atm 0xf49bc67a atm_pcr_goal +EXPORT_SYMBOL net/ax25/ax25 0x01f0610e ax25_ip_xmit +EXPORT_SYMBOL net/ax25/ax25 0x100220d9 ax25_linkfail_register +EXPORT_SYMBOL net/ax25/ax25 0x242852b9 ax25_uid_policy +EXPORT_SYMBOL net/ax25/ax25 0x3afee63e ax25_findbyuid +EXPORT_SYMBOL net/ax25/ax25 0x4502c65a asc2ax +EXPORT_SYMBOL net/ax25/ax25 0x53dea1ff ax2asc +EXPORT_SYMBOL net/ax25/ax25 0x8e1f5d8d ax25_listen_release +EXPORT_SYMBOL net/ax25/ax25 0x8ede9e26 ax25_protocol_release +EXPORT_SYMBOL net/ax25/ax25 0xa797b0a3 ax25_header_ops +EXPORT_SYMBOL net/ax25/ax25 0xa7f3015b ax25_display_timer +EXPORT_SYMBOL net/ax25/ax25 0xc1444946 ax25cmp +EXPORT_SYMBOL net/ax25/ax25 0xd34a4b17 ax25_linkfail_release +EXPORT_SYMBOL net/ax25/ax25 0xd43ecbf1 null_ax25_address +EXPORT_SYMBOL net/ax25/ax25 0xda33cf9b ax25_listen_register +EXPORT_SYMBOL net/ax25/ax25 0xfac6e19a ax25_send_frame +EXPORT_SYMBOL net/ax25/ax25 0xffc799ea ax25_find_cb +EXPORT_SYMBOL net/bluetooth/bluetooth 0x046f7026 bt_sock_register +EXPORT_SYMBOL net/bluetooth/bluetooth 0x09e557de hci_conn_check_secure +EXPORT_SYMBOL net/bluetooth/bluetooth 0x0c2ce506 hci_free_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x0c96a73f hci_unregister_cb +EXPORT_SYMBOL net/bluetooth/bluetooth 0x0f33f325 hci_resume_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x1a179aa0 bt_sock_wait_state +EXPORT_SYMBOL net/bluetooth/bluetooth 0x1bb3fc35 hci_reset_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x1d5a96c8 l2cap_is_socket +EXPORT_SYMBOL net/bluetooth/bluetooth 0x210f7534 bt_procfs_cleanup +EXPORT_SYMBOL net/bluetooth/bluetooth 0x238716f0 bt_sock_poll +EXPORT_SYMBOL net/bluetooth/bluetooth 0x30fd9e11 bt_sock_reclassify_lock +EXPORT_SYMBOL net/bluetooth/bluetooth 0x47022514 bt_err +EXPORT_SYMBOL net/bluetooth/bluetooth 0x4dcf5072 hci_suspend_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x5c489fc4 hci_register_cb +EXPORT_SYMBOL net/bluetooth/bluetooth 0x60370690 hci_mgmt_chan_unregister +EXPORT_SYMBOL net/bluetooth/bluetooth 0x6e059294 l2cap_conn_get +EXPORT_SYMBOL net/bluetooth/bluetooth 0x7077ae1d hci_register_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x72644cd2 hci_conn_security +EXPORT_SYMBOL net/bluetooth/bluetooth 0x84f643d1 __hci_cmd_sync_ev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x8b17b37d bt_accept_unlink +EXPORT_SYMBOL net/bluetooth/bluetooth 0x8fea24bd bt_sock_unregister +EXPORT_SYMBOL net/bluetooth/bluetooth 0x91c9a325 bt_to_errno +EXPORT_SYMBOL net/bluetooth/bluetooth 0x934dafa4 hci_unregister_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x9823fd98 bt_procfs_init +EXPORT_SYMBOL net/bluetooth/bluetooth 0x9a1719c8 l2cap_chan_close +EXPORT_SYMBOL net/bluetooth/bluetooth 0x9e48442b bt_sock_unlink +EXPORT_SYMBOL net/bluetooth/bluetooth 0xabdf18ee l2cap_conn_put +EXPORT_SYMBOL net/bluetooth/bluetooth 0xac9cfeae bt_accept_enqueue +EXPORT_SYMBOL net/bluetooth/bluetooth 0xaf83e095 bt_accept_dequeue +EXPORT_SYMBOL net/bluetooth/bluetooth 0xb237a331 bt_sock_wait_ready +EXPORT_SYMBOL net/bluetooth/bluetooth 0xb8ae18a2 hci_conn_switch_role +EXPORT_SYMBOL net/bluetooth/bluetooth 0xbb37282c __hci_cmd_sync +EXPORT_SYMBOL net/bluetooth/bluetooth 0xcc1fb551 baswap +EXPORT_SYMBOL net/bluetooth/bluetooth 0xd06b5a50 bt_sock_link +EXPORT_SYMBOL net/bluetooth/bluetooth 0xd5dc4eb0 hci_alloc_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xd7442057 bt_info +EXPORT_SYMBOL net/bluetooth/bluetooth 0xd88b9954 l2cap_register_user +EXPORT_SYMBOL net/bluetooth/bluetooth 0xd8f9f58f hci_recv_frame +EXPORT_SYMBOL net/bluetooth/bluetooth 0xe02d9412 bt_sock_stream_recvmsg +EXPORT_SYMBOL net/bluetooth/bluetooth 0xee670588 bt_sock_ioctl +EXPORT_SYMBOL net/bluetooth/bluetooth 0xf163f1b6 hci_mgmt_chan_register +EXPORT_SYMBOL net/bluetooth/bluetooth 0xf2cc3dc0 l2cap_unregister_user +EXPORT_SYMBOL net/bluetooth/bluetooth 0xf4074b17 hci_get_route +EXPORT_SYMBOL net/bluetooth/bluetooth 0xf527e7fe bt_sock_recvmsg +EXPORT_SYMBOL net/bridge/bridge 0x90712cc8 br_should_route_hook +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0x21ca7e24 ebt_unregister_table +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0x32bbfb08 ebt_do_table +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0xbf9f9e9c ebt_register_table +EXPORT_SYMBOL net/caif/caif 0x081a4447 caif_enroll_dev +EXPORT_SYMBOL net/caif/caif 0x0c46f994 cfcnfg_add_phy_layer +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 0x4a237e57 cfpkt_tonative +EXPORT_SYMBOL net/caif/caif 0x6a44fc70 cfpkt_extr_head +EXPORT_SYMBOL net/caif/caif 0x7d3c1123 caif_disconnect_client +EXPORT_SYMBOL net/caif/caif 0x839ddb7b cfcnfg_set_phy_state +EXPORT_SYMBOL net/caif/caif 0x966d7de2 cfpkt_add_head +EXPORT_SYMBOL net/caif/caif 0x9e3e305d cfpkt_set_prio +EXPORT_SYMBOL net/caif/caif 0xb7b6874e caif_free_client +EXPORT_SYMBOL net/caif/caif 0xcf310fc7 caif_connect_client +EXPORT_SYMBOL net/caif/caif 0xe7f85d5c get_cfcnfg +EXPORT_SYMBOL net/can/can 0x0dded4dd can_rx_register +EXPORT_SYMBOL net/can/can 0x4678d0cb can_send +EXPORT_SYMBOL net/can/can 0x820f0d0c can_rx_unregister +EXPORT_SYMBOL net/can/can 0x8be08967 can_proto_unregister +EXPORT_SYMBOL net/can/can 0xb7293f20 can_ioctl +EXPORT_SYMBOL net/can/can 0xd0f74d68 can_proto_register +EXPORT_SYMBOL net/ceph/libceph 0x00973ba9 osd_req_op_extent_init +EXPORT_SYMBOL net/ceph/libceph 0x0596a69e ceph_copy_from_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x06ef86a6 ceph_auth_destroy_authorizer +EXPORT_SYMBOL net/ceph/libceph 0x07856d1b ceph_auth_verify_authorizer_reply +EXPORT_SYMBOL net/ceph/libceph 0x09290ab3 ceph_debugfs_init +EXPORT_SYMBOL net/ceph/libceph 0x0b0664ee osd_req_op_extent_osd_data_pagelist +EXPORT_SYMBOL net/ceph/libceph 0x0e6d1cab osd_req_op_watch_init +EXPORT_SYMBOL net/ceph/libceph 0x10164650 osd_req_op_extent_osd_data_bio +EXPORT_SYMBOL net/ceph/libceph 0x111704ef ceph_calc_pg_primary +EXPORT_SYMBOL net/ceph/libceph 0x12413808 ceph_zero_page_vector_range +EXPORT_SYMBOL net/ceph/libceph 0x13f1ee87 ceph_release_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x1596a57f ceph_monc_do_statfs +EXPORT_SYMBOL net/ceph/libceph 0x1744a5a0 ceph_con_send +EXPORT_SYMBOL net/ceph/libceph 0x1f343e03 ceph_pg_poolid_by_name +EXPORT_SYMBOL net/ceph/libceph 0x20cf7d11 ceph_oloc_oid_to_pg +EXPORT_SYMBOL net/ceph/libceph 0x20d151cb ceph_osdc_setup +EXPORT_SYMBOL net/ceph/libceph 0x23038927 ceph_osdc_writepages +EXPORT_SYMBOL net/ceph/libceph 0x25c5ea3e osd_req_op_alloc_hint_init +EXPORT_SYMBOL net/ceph/libceph 0x2a9e87d8 ceph_auth_invalidate_authorizer +EXPORT_SYMBOL net/ceph/libceph 0x2b807746 ceph_client_id +EXPORT_SYMBOL net/ceph/libceph 0x2db717f3 ceph_destroy_options +EXPORT_SYMBOL net/ceph/libceph 0x34f9e57f ceph_msg_put +EXPORT_SYMBOL net/ceph/libceph 0x350aa27b ceph_auth_create_authorizer +EXPORT_SYMBOL net/ceph/libceph 0x3abec91f ceph_pr_addr +EXPORT_SYMBOL net/ceph/libceph 0x3cfdaeac ceph_alloc_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x3f688151 ceph_put_snap_context +EXPORT_SYMBOL net/ceph/libceph 0x40d9a06a ceph_con_init +EXPORT_SYMBOL net/ceph/libceph 0x43e458f6 ceph_file_part +EXPORT_SYMBOL net/ceph/libceph 0x43efd647 ceph_calc_file_object_mapping +EXPORT_SYMBOL net/ceph/libceph 0x466b85b8 libceph_compatible +EXPORT_SYMBOL net/ceph/libceph 0x46daef02 ceph_monc_got_mdsmap +EXPORT_SYMBOL net/ceph/libceph 0x47a9920e ceph_pagelist_release +EXPORT_SYMBOL net/ceph/libceph 0x491cdeaa ceph_msg_data_add_pages +EXPORT_SYMBOL net/ceph/libceph 0x4ae0ea5a ceph_con_keepalive +EXPORT_SYMBOL net/ceph/libceph 0x4b48a3e8 ceph_monc_init +EXPORT_SYMBOL net/ceph/libceph 0x4dba2eba ceph_monc_request_next_osdmap +EXPORT_SYMBOL net/ceph/libceph 0x4ddd40d2 ceph_osdc_get_request +EXPORT_SYMBOL net/ceph/libceph 0x52420b44 ceph_compare_options +EXPORT_SYMBOL net/ceph/libceph 0x5379cea3 ceph_caps_for_mode +EXPORT_SYMBOL net/ceph/libceph 0x54cb1892 ceph_destroy_client +EXPORT_SYMBOL net/ceph/libceph 0x55b380e0 ceph_msg_new +EXPORT_SYMBOL net/ceph/libceph 0x5775f162 ceph_osdc_put_request +EXPORT_SYMBOL net/ceph/libceph 0x57baf885 ceph_str_hash +EXPORT_SYMBOL net/ceph/libceph 0x5baa00fb ceph_con_open +EXPORT_SYMBOL net/ceph/libceph 0x5ebc1f53 ceph_copy_user_to_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x5f0df5c3 ceph_monc_do_get_version +EXPORT_SYMBOL net/ceph/libceph 0x5f640f46 ceph_check_fsid +EXPORT_SYMBOL net/ceph/libceph 0x61209274 ceph_monc_wait_osdmap +EXPORT_SYMBOL net/ceph/libceph 0x63758856 ceph_str_hash_name +EXPORT_SYMBOL net/ceph/libceph 0x66fcea13 ceph_msg_data_add_bio +EXPORT_SYMBOL net/ceph/libceph 0x691a4e1b ceph_osdc_put_event +EXPORT_SYMBOL net/ceph/libceph 0x6b1ff8be ceph_monc_validate_auth +EXPORT_SYMBOL net/ceph/libceph 0x6b2e3bcd ceph_get_snap_context +EXPORT_SYMBOL net/ceph/libceph 0x6ea29988 ceph_osdc_cancel_event +EXPORT_SYMBOL net/ceph/libceph 0x72ce41dc osd_req_op_cls_request_data_pages +EXPORT_SYMBOL net/ceph/libceph 0x74b1b882 osd_req_op_extent_update +EXPORT_SYMBOL net/ceph/libceph 0x759e48f3 ceph_osdc_flush_notifies +EXPORT_SYMBOL net/ceph/libceph 0x76b98063 ceph_osdc_new_request +EXPORT_SYMBOL net/ceph/libceph 0x7716a02a ceph_osdc_build_request +EXPORT_SYMBOL net/ceph/libceph 0x78e072c9 ceph_auth_is_authenticated +EXPORT_SYMBOL net/ceph/libceph 0x7be02130 ceph_open_session +EXPORT_SYMBOL net/ceph/libceph 0x91abc448 ceph_put_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x9273f180 ceph_con_close +EXPORT_SYMBOL net/ceph/libceph 0x944f66fd ceph_auth_update_authorizer +EXPORT_SYMBOL net/ceph/libceph 0x977ad303 ceph_osdc_alloc_request +EXPORT_SYMBOL net/ceph/libceph 0x99e36571 ceph_osdc_cleanup +EXPORT_SYMBOL net/ceph/libceph 0x9a48f603 ceph_osdc_wait_request +EXPORT_SYMBOL net/ceph/libceph 0x9c225df8 osd_req_op_extent_osd_data +EXPORT_SYMBOL net/ceph/libceph 0x9f534f4d ceph_buffer_release +EXPORT_SYMBOL net/ceph/libceph 0xa1ebde8f ceph_pagelist_truncate +EXPORT_SYMBOL net/ceph/libceph 0xa208913e osd_req_op_cls_init +EXPORT_SYMBOL net/ceph/libceph 0xa373d633 ceph_create_client +EXPORT_SYMBOL net/ceph/libceph 0xade0d49e ceph_osdc_start_request +EXPORT_SYMBOL net/ceph/libceph 0xae3515ba ceph_create_snap_context +EXPORT_SYMBOL net/ceph/libceph 0xafb8a407 ceph_msgr_flush +EXPORT_SYMBOL net/ceph/libceph 0xb0f7444b osd_req_op_cls_response_data_pages +EXPORT_SYMBOL net/ceph/libceph 0xb19dc152 ceph_pagelist_reserve +EXPORT_SYMBOL net/ceph/libceph 0xb54676fa ceph_msg_type_name +EXPORT_SYMBOL net/ceph/libceph 0xb6081d6d ceph_msgr_exit +EXPORT_SYMBOL net/ceph/libceph 0xb7274c3d osd_req_op_xattr_init +EXPORT_SYMBOL net/ceph/libceph 0xba9cefca osd_req_op_cls_response_data +EXPORT_SYMBOL net/ceph/libceph 0xbd7ce392 __ceph_open_session +EXPORT_SYMBOL net/ceph/libceph 0xbe214e31 ceph_osdc_sync +EXPORT_SYMBOL net/ceph/libceph 0xbec9f52b ceph_monc_open_session +EXPORT_SYMBOL net/ceph/libceph 0xbeff89d8 ceph_monc_stop +EXPORT_SYMBOL net/ceph/libceph 0xbfe8ecb7 ceph_msg_get +EXPORT_SYMBOL net/ceph/libceph 0xc4a80955 ceph_debugfs_cleanup +EXPORT_SYMBOL net/ceph/libceph 0xc8299a76 ceph_pg_pool_name_by_id +EXPORT_SYMBOL net/ceph/libceph 0xc9f82b38 ceph_msgr_init +EXPORT_SYMBOL net/ceph/libceph 0xcb50a624 ceph_parse_ips +EXPORT_SYMBOL net/ceph/libceph 0xccbce807 ceph_osdc_readpages +EXPORT_SYMBOL net/ceph/libceph 0xce24c666 ceph_messenger_fini +EXPORT_SYMBOL net/ceph/libceph 0xd149479f ceph_osdc_set_request_linger +EXPORT_SYMBOL net/ceph/libceph 0xd23f9df5 ceph_osdc_cancel_request +EXPORT_SYMBOL net/ceph/libceph 0xd2c107bb ceph_flags_to_mode +EXPORT_SYMBOL net/ceph/libceph 0xd42756de ceph_osdc_create_event +EXPORT_SYMBOL net/ceph/libceph 0xd5383217 ceph_pagelist_set_cursor +EXPORT_SYMBOL net/ceph/libceph 0xd813625e ceph_pagelist_append +EXPORT_SYMBOL net/ceph/libceph 0xd89a7b96 ceph_get_direct_page_vector +EXPORT_SYMBOL net/ceph/libceph 0xdd8e7550 ceph_parse_options +EXPORT_SYMBOL net/ceph/libceph 0xde0eb6ba ceph_pagelist_free_reserve +EXPORT_SYMBOL net/ceph/libceph 0xe0bea0b0 ceph_msg_dump +EXPORT_SYMBOL net/ceph/libceph 0xe2097dd8 ceph_copy_to_page_vector +EXPORT_SYMBOL net/ceph/libceph 0xe4176aa6 ceph_msg_data_add_pagelist +EXPORT_SYMBOL net/ceph/libceph 0xe55d9bcd ceph_buffer_new +EXPORT_SYMBOL net/ceph/libceph 0xeb362c29 osd_req_op_extent_osd_data_pages +EXPORT_SYMBOL net/ceph/libceph 0xee96426b ceph_messenger_init +EXPORT_SYMBOL net/ceph/libceph 0xf4828ce9 osd_req_op_cls_request_data_pagelist +EXPORT_SYMBOL net/ceph/libceph 0xf79b1acb osd_req_op_raw_data_in_pages +EXPORT_SYMBOL net/ceph/libceph 0xf83c889e osd_req_op_init +EXPORT_SYMBOL net/ceph/libceph 0xfd8d75e1 ceph_print_client_options +EXPORT_SYMBOL net/dccp/dccp_ipv4 0x051ffcea dccp_syn_ack_timeout +EXPORT_SYMBOL net/dccp/dccp_ipv4 0x3b311749 dccp_req_err +EXPORT_SYMBOL net/ieee802154/6lowpan/ieee802154_6lowpan 0xe5957176 lowpan_frag_rcv +EXPORT_SYMBOL net/ieee802154/ieee802154 0x3cb504ed wpan_phy_unregister +EXPORT_SYMBOL net/ieee802154/ieee802154 0x5f4ef350 wpan_phy_free +EXPORT_SYMBOL net/ieee802154/ieee802154 0xcb5653de wpan_phy_register +EXPORT_SYMBOL net/ieee802154/ieee802154 0xee4ce12b wpan_phy_for_each +EXPORT_SYMBOL net/ieee802154/ieee802154 0xf5aabc5f wpan_phy_new +EXPORT_SYMBOL net/ieee802154/ieee802154 0xf82770b9 wpan_phy_find +EXPORT_SYMBOL net/ipv4/fou 0x60159761 gue_build_header +EXPORT_SYMBOL net/ipv4/fou 0x87596169 fou_encap_hlen +EXPORT_SYMBOL net/ipv4/fou 0xdb2842c8 fou_build_header +EXPORT_SYMBOL net/ipv4/fou 0xfe4c1f2f gue_encap_hlen +EXPORT_SYMBOL net/ipv4/ip_tunnel 0x4c0d53e6 ip_tunnel_dst_reset_all +EXPORT_SYMBOL net/ipv4/ip_tunnel 0x6ac019ee ip_tunnel_encap_del_ops +EXPORT_SYMBOL net/ipv4/ip_tunnel 0x8cab0cac ip_tunnel_encap_add_ops +EXPORT_SYMBOL net/ipv4/ip_tunnel 0x8ee8481b ip_tunnel_get_iflink +EXPORT_SYMBOL net/ipv4/ip_tunnel 0xd7311f08 ip_tunnel_get_link_net +EXPORT_SYMBOL net/ipv4/ip_tunnel 0xddcf37ff ip_tunnel_encap +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0x1e0a2c7f arpt_register_table +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0x30e6cbd7 arpt_unregister_table +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0x9025ab7e arpt_do_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0x0f0a5970 ipt_register_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0x28b2107a ipt_unregister_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0xb2d29f17 ipt_do_table +EXPORT_SYMBOL net/ipv4/tunnel4 0x835fc5ef xfrm4_tunnel_register +EXPORT_SYMBOL net/ipv4/tunnel4 0xfbe64833 xfrm4_tunnel_deregister +EXPORT_SYMBOL net/ipv4/udp_tunnel 0x583a3252 udp_sock_create4 +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0x157d449f ip6_tnl_parse_tlv_enc_lim +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0x815b7ca0 ip6_tnl_get_cap +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0x920903e6 ip6_tnl_get_iflink +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0xee436e28 ip6_tnl_get_link_net +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0x5ffeb40e ip6t_unregister_table +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0xa1743330 ip6t_do_table +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0xfecd7975 ip6t_register_table +EXPORT_SYMBOL net/ipv6/tunnel6 0x0a885b79 xfrm6_tunnel_register +EXPORT_SYMBOL net/ipv6/tunnel6 0xa5fa9b37 xfrm6_tunnel_deregister +EXPORT_SYMBOL net/ipv6/xfrm6_tunnel 0x3ce11456 xfrm6_tunnel_spi_lookup +EXPORT_SYMBOL net/ipv6/xfrm6_tunnel 0xf71665b7 xfrm6_tunnel_alloc_spi +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x4665e7a3 ircomm_flow_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x4dac8b81 ircomm_connect_response +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x4f824b16 ircomm_disconnect_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x5442d153 ircomm_data_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x8b48e2f1 ircomm_control_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x8c4cc6df ircomm_close +EXPORT_SYMBOL net/irda/ircomm/ircomm 0xcd773cc6 ircomm_connect_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0xf6ebe3f9 ircomm_open +EXPORT_SYMBOL net/irda/irda 0x06a3ee58 irias_new_integer_value +EXPORT_SYMBOL net/irda/irda 0x07d3647c irlmp_register_service +EXPORT_SYMBOL net/irda/irda 0x0963c24b irias_add_string_attrib +EXPORT_SYMBOL net/irda/irda 0x09939c11 irias_add_integer_attrib +EXPORT_SYMBOL net/irda/irda 0x12bc2fca irlmp_disconnect_request +EXPORT_SYMBOL net/irda/irda 0x167ca9b3 irlmp_open_lsap +EXPORT_SYMBOL net/irda/irda 0x2134f553 iriap_close +EXPORT_SYMBOL net/irda/irda 0x21ac12f7 irttp_udata_request +EXPORT_SYMBOL net/irda/irda 0x229dfe71 irttp_flow_request +EXPORT_SYMBOL net/irda/irda 0x23bbc2ce irias_find_object +EXPORT_SYMBOL net/irda/irda 0x25b8b47f irttp_connect_request +EXPORT_SYMBOL net/irda/irda 0x286d21a3 irttp_connect_response +EXPORT_SYMBOL net/irda/irda 0x2b432980 hashbin_get_next +EXPORT_SYMBOL net/irda/irda 0x2ce26c6f iriap_open +EXPORT_SYMBOL net/irda/irda 0x3372b4c2 irda_device_set_media_busy +EXPORT_SYMBOL net/irda/irda 0x33cbe2c6 proc_irda +EXPORT_SYMBOL net/irda/irda 0x385847aa irias_delete_object +EXPORT_SYMBOL net/irda/irda 0x4153a561 iriap_getvaluebyclass_request +EXPORT_SYMBOL net/irda/irda 0x448b8aaa irda_qos_bits_to_value +EXPORT_SYMBOL net/irda/irda 0x46b00fdf irias_insert_object +EXPORT_SYMBOL net/irda/irda 0x46c1c4a2 irlmp_unregister_service +EXPORT_SYMBOL net/irda/irda 0x4c666e9a irttp_dup +EXPORT_SYMBOL net/irda/irda 0x519f4068 irttp_close_tsap +EXPORT_SYMBOL net/irda/irda 0x540e095f irlap_close +EXPORT_SYMBOL net/irda/irda 0x582350aa alloc_irdadev +EXPORT_SYMBOL net/irda/irda 0x637db2be irttp_open_tsap +EXPORT_SYMBOL net/irda/irda 0x66991bc3 irda_notify_init +EXPORT_SYMBOL net/irda/irda 0x69edb502 async_unwrap_char +EXPORT_SYMBOL net/irda/irda 0x6b043eba irda_init_max_qos_capabilies +EXPORT_SYMBOL net/irda/irda 0x7042bc54 irlmp_register_client +EXPORT_SYMBOL net/irda/irda 0x706b98a7 irlmp_connect_response +EXPORT_SYMBOL net/irda/irda 0x70a3f20f hashbin_lock_find +EXPORT_SYMBOL net/irda/irda 0x763e54a4 irlmp_unregister_client +EXPORT_SYMBOL net/irda/irda 0x7957f728 irlmp_update_client +EXPORT_SYMBOL net/irda/irda 0x7f52a8bf irda_param_insert +EXPORT_SYMBOL net/irda/irda 0x91815586 irda_param_pack +EXPORT_SYMBOL net/irda/irda 0x94a824db irda_param_extract_all +EXPORT_SYMBOL net/irda/irda 0x98a8b3b4 hashbin_delete +EXPORT_SYMBOL net/irda/irda 0x9ccbdfca hashbin_insert +EXPORT_SYMBOL net/irda/irda 0xa1129a8f irlmp_close_lsap +EXPORT_SYMBOL net/irda/irda 0xac3dc858 irias_add_octseq_attrib +EXPORT_SYMBOL net/irda/irda 0xaeeff2b5 hashbin_find +EXPORT_SYMBOL net/irda/irda 0xb22d2502 irttp_data_request +EXPORT_SYMBOL net/irda/irda 0xb6eef15b irttp_disconnect_request +EXPORT_SYMBOL net/irda/irda 0xb9394173 irias_delete_value +EXPORT_SYMBOL net/irda/irda 0xbcd3ef13 irias_object_change_attribute +EXPORT_SYMBOL net/irda/irda 0xbe40ace9 irlmp_discovery_request +EXPORT_SYMBOL net/irda/irda 0xcd0084e6 irlmp_data_request +EXPORT_SYMBOL net/irda/irda 0xcde56f8d irlmp_connect_request +EXPORT_SYMBOL net/irda/irda 0xd28fa79c irlap_open +EXPORT_SYMBOL net/irda/irda 0xd6deeaae irda_setup_dma +EXPORT_SYMBOL net/irda/irda 0xdc0196c2 hashbin_remove +EXPORT_SYMBOL net/irda/irda 0xde4c6b3c irlmp_service_to_hint +EXPORT_SYMBOL net/irda/irda 0xe1ba6308 irias_new_object +EXPORT_SYMBOL net/irda/irda 0xe329462a hashbin_get_first +EXPORT_SYMBOL net/irda/irda 0xeb78333e hashbin_remove_this +EXPORT_SYMBOL net/irda/irda 0xec242b93 hashbin_new +EXPORT_SYMBOL net/irda/irda 0xedd521c2 irlmp_get_discoveries +EXPORT_SYMBOL net/irda/irda 0xf2a9bf55 async_wrap_skb +EXPORT_SYMBOL net/l2tp/l2tp_core 0x778bc9f1 l2tp_recv_common +EXPORT_SYMBOL net/lapb/lapb 0x050cc43c lapb_setparms +EXPORT_SYMBOL net/lapb/lapb 0x209daada lapb_data_request +EXPORT_SYMBOL net/lapb/lapb 0x74c9b3a1 lapb_unregister +EXPORT_SYMBOL net/lapb/lapb 0x865aa7e1 lapb_connect_request +EXPORT_SYMBOL net/lapb/lapb 0x96ceb64b lapb_data_received +EXPORT_SYMBOL net/lapb/lapb 0xa89a38f8 lapb_register +EXPORT_SYMBOL net/lapb/lapb 0xafe9e8d6 lapb_disconnect_request +EXPORT_SYMBOL net/lapb/lapb 0xbdefc7a8 lapb_getparms +EXPORT_SYMBOL net/llc/llc 0x038907cd llc_sap_open +EXPORT_SYMBOL net/llc/llc 0x0c2f2e4a llc_mac_hdr_init +EXPORT_SYMBOL net/llc/llc 0x2f9a2297 llc_sap_find +EXPORT_SYMBOL net/llc/llc 0x38b92846 llc_remove_pack +EXPORT_SYMBOL net/llc/llc 0x4a3ec20f llc_sap_close +EXPORT_SYMBOL net/llc/llc 0x52d7b2fd llc_sap_list +EXPORT_SYMBOL net/llc/llc 0x58e384e2 llc_set_station_handler +EXPORT_SYMBOL net/llc/llc 0x5c64b4a1 llc_add_pack +EXPORT_SYMBOL net/llc/llc 0xaca44606 llc_build_and_send_ui_pkt +EXPORT_SYMBOL net/mac80211/mac80211 0x01ff3b36 ieee80211_get_buffered_bc +EXPORT_SYMBOL net/mac80211/mac80211 0x025f6d93 __ieee80211_create_tpt_led_trigger +EXPORT_SYMBOL net/mac80211/mac80211 0x02dae7f1 ieee80211_pspoll_get +EXPORT_SYMBOL net/mac80211/mac80211 0x072edb69 ieee80211_free_txskb +EXPORT_SYMBOL net/mac80211/mac80211 0x106446ba ieee80211_get_tkip_p2k +EXPORT_SYMBOL net/mac80211/mac80211 0x10721d30 __ieee80211_get_tx_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0x108427c2 ieee80211_scan_completed +EXPORT_SYMBOL net/mac80211/mac80211 0x10fd30ce ieee80211_get_tkip_p1k_iv +EXPORT_SYMBOL net/mac80211/mac80211 0x1252bbf7 ieee80211_sched_scan_results +EXPORT_SYMBOL net/mac80211/mac80211 0x163dfb6b ieee80211_rx +EXPORT_SYMBOL net/mac80211/mac80211 0x1794f977 ieee80211_radar_detected +EXPORT_SYMBOL net/mac80211/mac80211 0x191c84f9 ieee80211_cqm_rssi_notify +EXPORT_SYMBOL net/mac80211/mac80211 0x1c89173f ieee80211_ap_probereq_get +EXPORT_SYMBOL net/mac80211/mac80211 0x21bdaaf8 ieee80211_sta_ps_transition +EXPORT_SYMBOL net/mac80211/mac80211 0x22c45ffd ieee80211_sched_scan_stopped +EXPORT_SYMBOL net/mac80211/mac80211 0x2977778f ieee80211_tdls_oper_request +EXPORT_SYMBOL net/mac80211/mac80211 0x2ab45826 ieee80211_beacon_loss +EXPORT_SYMBOL net/mac80211/mac80211 0x2ae1379b ieee80211_restart_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x2c1a84a8 ieee80211_connection_loss +EXPORT_SYMBOL net/mac80211/mac80211 0x301075fb ieee80211_get_key_tx_seq +EXPORT_SYMBOL net/mac80211/mac80211 0x3563f2bc ieee80211_register_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x3611509f ieee80211_alloc_hw_nm +EXPORT_SYMBOL net/mac80211/mac80211 0x376bc11d ieee80211_reserve_tid +EXPORT_SYMBOL net/mac80211/mac80211 0x3803e864 ieee80211_generic_frame_duration +EXPORT_SYMBOL net/mac80211/mac80211 0x3b9df266 ieee80211_unregister_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x40497baf ieee80211_queue_stopped +EXPORT_SYMBOL net/mac80211/mac80211 0x42d1da12 __ieee80211_get_rx_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0x4a1eac45 ieee80211_rts_duration +EXPORT_SYMBOL net/mac80211/mac80211 0x4ee7874d ieee80211_chswitch_done +EXPORT_SYMBOL net/mac80211/mac80211 0x53bfe7ac ieee80211_stop_tx_ba_cb_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0x55e28e1b ieee80211_report_wowlan_wakeup +EXPORT_SYMBOL net/mac80211/mac80211 0x562d2b66 ieee80211_send_bar +EXPORT_SYMBOL net/mac80211/mac80211 0x5a310deb __ieee80211_get_assoc_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0x5e6f9fd8 ieee80211_nullfunc_get +EXPORT_SYMBOL net/mac80211/mac80211 0x6026b7b1 ieee80211_rate_control_unregister +EXPORT_SYMBOL net/mac80211/mac80211 0x6171948c ieee80211_get_key_rx_seq +EXPORT_SYMBOL net/mac80211/mac80211 0x6201d2e8 ieee80211_csa_finish +EXPORT_SYMBOL net/mac80211/mac80211 0x6394fb6f ieee80211_stop_rx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0x6cb3c98d ieee80211_csa_is_complete +EXPORT_SYMBOL net/mac80211/mac80211 0x7038ba37 ieee80211_get_tx_rates +EXPORT_SYMBOL net/mac80211/mac80211 0x70ba866a wiphy_to_ieee80211_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x75255175 ieee80211_free_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x761ca921 ieee80211_probereq_get +EXPORT_SYMBOL net/mac80211/mac80211 0x761d33ed ieee80211_wake_queues +EXPORT_SYMBOL net/mac80211/mac80211 0x77ea65c4 ieee80211_update_p2p_noa +EXPORT_SYMBOL net/mac80211/mac80211 0x7d82c8a3 ieee80211_queue_delayed_work +EXPORT_SYMBOL net/mac80211/mac80211 0x7dc963ae ieee80211_rx_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0x7e28631b ieee80211_rate_control_register +EXPORT_SYMBOL net/mac80211/mac80211 0x85e318c7 ieee80211_cqm_beacon_loss_notify +EXPORT_SYMBOL net/mac80211/mac80211 0x8af4adb1 ieee80211_stop_queue +EXPORT_SYMBOL net/mac80211/mac80211 0x9396d800 ieee80211_tx_status_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0x9998343e ieee80211_csa_update_counter +EXPORT_SYMBOL net/mac80211/mac80211 0x9e8e5ce0 ieee80211_iter_keys +EXPORT_SYMBOL net/mac80211/mac80211 0x9eb6655f ieee80211_disable_rssi_reports +EXPORT_SYMBOL net/mac80211/mac80211 0xa039645a ieee80211_sta_set_buffered +EXPORT_SYMBOL net/mac80211/mac80211 0xa31b8c46 ieee80211_report_low_ack +EXPORT_SYMBOL net/mac80211/mac80211 0xa371027e ieee80211_start_tx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0xa4465e60 ieee80211_wake_queue +EXPORT_SYMBOL net/mac80211/mac80211 0xaa8088a3 ieee80211_aes_cmac_calculate_k1_k2 +EXPORT_SYMBOL net/mac80211/mac80211 0xaa91e35f ieee80211_tx_status +EXPORT_SYMBOL net/mac80211/mac80211 0xad5ec9dd ieee80211_stop_rx_ba_session_offl +EXPORT_SYMBOL net/mac80211/mac80211 0xb1bd4f4d ieee80211_queue_work +EXPORT_SYMBOL net/mac80211/mac80211 0xbb3735a6 rate_control_set_rates +EXPORT_SYMBOL net/mac80211/mac80211 0xbcc2643a ieee80211_sta_block_awake +EXPORT_SYMBOL net/mac80211/mac80211 0xc80e5026 ieee80211_ctstoself_get +EXPORT_SYMBOL net/mac80211/mac80211 0xca88eba3 ieee80211_tx_dequeue +EXPORT_SYMBOL net/mac80211/mac80211 0xce7b96c9 ieee80211_stop_queues +EXPORT_SYMBOL net/mac80211/mac80211 0xd2e3fcf9 rate_control_send_low +EXPORT_SYMBOL net/mac80211/mac80211 0xd57ba75a ieee80211_start_rx_ba_session_offl +EXPORT_SYMBOL net/mac80211/mac80211 0xd72625cb ieee80211_parse_p2p_noa +EXPORT_SYMBOL net/mac80211/mac80211 0xd7ef41e3 ieee80211_tx_status_noskb +EXPORT_SYMBOL net/mac80211/mac80211 0xdba1d0d9 ieee80211_ctstoself_duration +EXPORT_SYMBOL net/mac80211/mac80211 0xe396a7ae ieee80211_stop_tx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0xe3df8404 ieee80211_beacon_get_tim +EXPORT_SYMBOL net/mac80211/mac80211 0xe5e82c16 ieee80211_beacon_get_template +EXPORT_SYMBOL net/mac80211/mac80211 0xe759d272 ieee80211_get_tkip_rx_p1k +EXPORT_SYMBOL net/mac80211/mac80211 0xe7655ccd ieee80211_proberesp_get +EXPORT_SYMBOL net/mac80211/mac80211 0xf112892c __ieee80211_get_radio_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0xf2f62665 ieee80211_tx_prepare_skb +EXPORT_SYMBOL net/mac80211/mac80211 0xf3400f54 ieee80211_rts_get +EXPORT_SYMBOL net/mac80211/mac80211 0xf35c04d7 ieee80211_find_sta +EXPORT_SYMBOL net/mac80211/mac80211 0xf68c161a ieee80211_start_tx_ba_cb_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0xf7b3654a ieee80211_enable_rssi_reports +EXPORT_SYMBOL net/mac80211/mac80211 0xf8770289 ieee80211_sta_eosp +EXPORT_SYMBOL net/mac80211/mac80211 0xfbd01892 ieee80211_unreserve_tid +EXPORT_SYMBOL net/mac802154/mac802154 0x0898b518 ieee802154_register_hw +EXPORT_SYMBOL net/mac802154/mac802154 0x0b586dde ieee802154_xmit_complete +EXPORT_SYMBOL net/mac802154/mac802154 0x0b70ddf2 ieee802154_rx_irqsafe +EXPORT_SYMBOL net/mac802154/mac802154 0x1786b15a ieee802154_wake_queue +EXPORT_SYMBOL net/mac802154/mac802154 0xbd89102b ieee802154_rx +EXPORT_SYMBOL net/mac802154/mac802154 0xc54a612e ieee802154_free_hw +EXPORT_SYMBOL net/mac802154/mac802154 0xd9bd2480 ieee802154_unregister_hw +EXPORT_SYMBOL net/mac802154/mac802154 0xe9207859 ieee802154_stop_queue +EXPORT_SYMBOL net/mac802154/mac802154 0xf3ceaeb3 ieee802154_alloc_hw +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x17b0d29c ip_vs_tcp_conn_listen +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x184a2e05 register_ip_vs_app +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x43b2ea6d ip_vs_proto_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x4c9a3a68 ip_vs_proto_data_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x65a81f81 unregister_ip_vs_scheduler +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x690e3c13 ip_vs_conn_new +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x6cf86768 ip_vs_conn_put +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x77758198 ip_vs_conn_out_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x84013ede ip_vs_nfct_expect_related +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xa24f807d unregister_ip_vs_app +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xadb23144 register_ip_vs_app_inc +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xbbf87774 ip_vs_conn_in_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xcc9e405c ip_vs_scheduler_err +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xd831a1a2 ip_vs_proto_name +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xe41eefb5 register_ip_vs_scheduler +EXPORT_SYMBOL net/netfilter/nf_conntrack 0x26ca8453 __nf_ct_ext_add_length +EXPORT_SYMBOL net/netfilter/nf_conntrack 0x6858ede0 __nf_ct_ext_destroy +EXPORT_SYMBOL net/netfilter/nf_conntrack 0xd411b377 nf_conntrack_untracked +EXPORT_SYMBOL net/netfilter/nf_conntrack_pptp 0x827cc6a1 pptp_msg_name +EXPORT_SYMBOL net/netfilter/nf_nat 0x2e0ccfa5 __nf_nat_mangle_tcp_packet +EXPORT_SYMBOL net/netfilter/nf_nat 0x34828287 nf_nat_used_tuple +EXPORT_SYMBOL net/netfilter/nf_nat 0x4e5df6cb nf_nat_mangle_udp_packet +EXPORT_SYMBOL net/netfilter/nf_nat 0x82f72c2f nf_xfrm_me_harder +EXPORT_SYMBOL net/netfilter/nf_nat 0x9bfc6153 nf_nat_follow_master +EXPORT_SYMBOL net/netfilter/nf_nat 0xef157843 nf_nat_setup_info +EXPORT_SYMBOL net/netfilter/x_tables 0x2a99cb6b xt_register_match +EXPORT_SYMBOL net/netfilter/x_tables 0x3de49836 xt_unregister_target +EXPORT_SYMBOL net/netfilter/x_tables 0x482d26fd xt_alloc_table_info +EXPORT_SYMBOL net/netfilter/x_tables 0x60d61e46 xt_find_match +EXPORT_SYMBOL net/netfilter/x_tables 0x66057df2 xt_unregister_matches +EXPORT_SYMBOL net/netfilter/x_tables 0x6e86ca00 xt_register_matches +EXPORT_SYMBOL net/netfilter/x_tables 0x7bd7e47c xt_register_target +EXPORT_SYMBOL net/netfilter/x_tables 0x99f76308 xt_register_targets +EXPORT_SYMBOL net/netfilter/x_tables 0xca4c738f xt_unregister_targets +EXPORT_SYMBOL net/netfilter/x_tables 0xd1a21986 xt_free_table_info +EXPORT_SYMBOL net/netfilter/x_tables 0xe4f768f9 xt_find_target +EXPORT_SYMBOL net/netfilter/x_tables 0xed757f95 xt_unregister_match +EXPORT_SYMBOL net/nfc/hci/hci 0x17ed8d31 nfc_hci_driver_failure +EXPORT_SYMBOL net/nfc/hci/hci 0x2cd427a8 nfc_hci_reset_pipes +EXPORT_SYMBOL net/nfc/hci/hci 0x33dc582e nfc_hci_recv_frame +EXPORT_SYMBOL net/nfc/hci/hci 0x3936ccc4 nfc_hci_register_device +EXPORT_SYMBOL net/nfc/hci/hci 0x3c58b8a7 nfc_hci_free_device +EXPORT_SYMBOL net/nfc/hci/hci 0x43028a27 nfc_hci_result_to_errno +EXPORT_SYMBOL net/nfc/hci/hci 0x4460bf95 nfc_hci_reset_pipes_per_host +EXPORT_SYMBOL net/nfc/hci/hci 0x5071f064 nfc_hci_allocate_device +EXPORT_SYMBOL net/nfc/hci/hci 0x5a5c698d nfc_hci_disconnect_all_gates +EXPORT_SYMBOL net/nfc/hci/hci 0x5b6302f6 nfc_hci_target_discovered +EXPORT_SYMBOL net/nfc/hci/hci 0x62da4df3 nfc_hci_set_clientdata +EXPORT_SYMBOL net/nfc/hci/hci 0x66bec7ad nfc_hci_get_param +EXPORT_SYMBOL net/nfc/hci/hci 0x7788dc94 nfc_hci_send_event +EXPORT_SYMBOL net/nfc/hci/hci 0x79e9852a nfc_hci_disconnect_gate +EXPORT_SYMBOL net/nfc/hci/hci 0x908fc339 nfc_hci_connect_gate +EXPORT_SYMBOL net/nfc/hci/hci 0x9b289f6f nfc_hci_unregister_device +EXPORT_SYMBOL net/nfc/hci/hci 0xa39fbb6c nfc_hci_send_cmd_async +EXPORT_SYMBOL net/nfc/hci/hci 0xbca0b4fd nfc_hci_sak_to_protocol +EXPORT_SYMBOL net/nfc/hci/hci 0xe0e57ab8 nfc_hci_get_clientdata +EXPORT_SYMBOL net/nfc/hci/hci 0xef4c5296 nfc_hci_set_param +EXPORT_SYMBOL net/nfc/hci/hci 0xfd99f883 nfc_hci_send_cmd +EXPORT_SYMBOL net/nfc/nci/nci 0x0912f1b8 nci_set_config +EXPORT_SYMBOL net/nfc/nci/nci 0x31f2e2c9 nci_unregister_device +EXPORT_SYMBOL net/nfc/nci/nci 0x3f681ef7 nci_hci_set_param +EXPORT_SYMBOL net/nfc/nci/nci 0x5c1d12ef nci_hci_send_event +EXPORT_SYMBOL net/nfc/nci/nci 0x5e805de3 nci_hci_send_cmd +EXPORT_SYMBOL net/nfc/nci/nci 0x66ca6ccb nci_core_conn_close +EXPORT_SYMBOL net/nfc/nci/nci 0x70f50aeb nci_hci_dev_session_init +EXPORT_SYMBOL net/nfc/nci/nci 0x7211f888 nci_free_device +EXPORT_SYMBOL net/nfc/nci/nci 0x793779f9 nci_recv_frame +EXPORT_SYMBOL net/nfc/nci/nci 0x90827e60 nci_nfcee_mode_set +EXPORT_SYMBOL net/nfc/nci/nci 0x90b9e2f4 nci_req_complete +EXPORT_SYMBOL net/nfc/nci/nci 0x9380b7f4 nci_nfcee_discover +EXPORT_SYMBOL net/nfc/nci/nci 0xa5a48891 nci_allocate_device +EXPORT_SYMBOL net/nfc/nci/nci 0xab94e0e9 nci_core_conn_create +EXPORT_SYMBOL net/nfc/nci/nci 0xba490602 nci_to_errno +EXPORT_SYMBOL net/nfc/nci/nci 0xc9600329 nci_hci_open_pipe +EXPORT_SYMBOL net/nfc/nci/nci 0xe929abfe nci_register_device +EXPORT_SYMBOL net/nfc/nci/nci 0xf61653a6 nci_hci_get_param +EXPORT_SYMBOL net/nfc/nci/nci 0xfa4292aa nci_prop_cmd +EXPORT_SYMBOL net/nfc/nci/nci 0xfea58420 nci_hci_connect_gate +EXPORT_SYMBOL net/nfc/nfc 0x063587ba nfc_allocate_device +EXPORT_SYMBOL net/nfc/nfc 0x0973db22 nfc_register_device +EXPORT_SYMBOL net/nfc/nfc 0x0d8dd4fe nfc_tm_deactivated +EXPORT_SYMBOL net/nfc/nfc 0x268c7841 nfc_tm_activated +EXPORT_SYMBOL net/nfc/nfc 0x29b9cb4b nfc_dep_link_is_up +EXPORT_SYMBOL net/nfc/nfc 0x2d324b6c nfc_proto_unregister +EXPORT_SYMBOL net/nfc/nfc 0x376395d5 nfc_tm_data_received +EXPORT_SYMBOL net/nfc/nfc 0x3838c2ee nfc_get_local_general_bytes +EXPORT_SYMBOL net/nfc/nfc 0x6564aced nfc_se_transaction +EXPORT_SYMBOL net/nfc/nfc 0x6679915d nfc_add_se +EXPORT_SYMBOL net/nfc/nfc 0x79508ec4 nfc_send_to_raw_sock +EXPORT_SYMBOL net/nfc/nfc 0x8d240e99 nfc_alloc_recv_skb +EXPORT_SYMBOL net/nfc/nfc 0x92063215 nfc_set_remote_general_bytes +EXPORT_SYMBOL net/nfc/nfc 0x9613e20d nfc_remove_se +EXPORT_SYMBOL net/nfc/nfc 0xa908be42 nfc_fw_download_done +EXPORT_SYMBOL net/nfc/nfc 0xac729a2f nfc_targets_found +EXPORT_SYMBOL net/nfc/nfc 0xc601657c nfc_driver_failure +EXPORT_SYMBOL net/nfc/nfc 0xd78538d0 nfc_find_se +EXPORT_SYMBOL net/nfc/nfc 0xe2a67aa0 nfc_unregister_device +EXPORT_SYMBOL net/nfc/nfc 0xeebce2de nfc_class +EXPORT_SYMBOL net/nfc/nfc 0xeefb0712 nfc_proto_register +EXPORT_SYMBOL net/nfc/nfc 0xf6a1a519 nfc_target_lost +EXPORT_SYMBOL net/nfc/nfc_digital 0x078070ba nfc_digital_register_device +EXPORT_SYMBOL net/nfc/nfc_digital 0x4d7b0483 nfc_digital_allocate_device +EXPORT_SYMBOL net/nfc/nfc_digital 0x585ab4f4 nfc_digital_free_device +EXPORT_SYMBOL net/nfc/nfc_digital 0x952acd2d nfc_digital_unregister_device +EXPORT_SYMBOL net/phonet/phonet 0x6bfc7f00 pn_sock_hash +EXPORT_SYMBOL net/phonet/phonet 0x8675b0d4 phonet_stream_ops +EXPORT_SYMBOL net/phonet/phonet 0xaf5d4c7f phonet_proto_register +EXPORT_SYMBOL net/phonet/phonet 0xb9d4b307 phonet_header_ops +EXPORT_SYMBOL net/phonet/phonet 0xd3cd0fc8 pn_sock_get_port +EXPORT_SYMBOL net/phonet/phonet 0xe1fec461 pn_sock_unhash +EXPORT_SYMBOL net/phonet/phonet 0xe6258601 phonet_proto_unregister +EXPORT_SYMBOL net/phonet/phonet 0xed255586 pn_skb_send +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x0bb13fd4 rxrpc_kernel_reject_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x12205dfb rxrpc_kernel_accept_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x3baf8f71 rxrpc_kernel_is_data_last +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x4d3e53e6 rxrpc_kernel_free_skb +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x4e9b2e2d rxrpc_get_null_key +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x507ba57a rxrpc_kernel_send_data +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x7afc00c5 key_type_rxrpc +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x7b6b88ee rxrpc_kernel_data_delivered +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x7bba283e rxrpc_kernel_intercept_rx_messages +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x8d05751d rxrpc_kernel_end_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xa3d7d974 rxrpc_kernel_abort_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xa6a57e0d rxrpc_kernel_begin_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xc6147c1c rxrpc_get_server_data_key +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xf2cab3c3 rxrpc_kernel_get_error_number +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xf783a421 rxrpc_kernel_get_abort_code +EXPORT_SYMBOL net/sctp/sctp 0x01eee1ca sctp_do_peeloff +EXPORT_SYMBOL net/sunrpc/auth_gss/auth_rpcgss 0x601c55a1 gss_mech_put +EXPORT_SYMBOL net/sunrpc/auth_gss/auth_rpcgss 0xa684d390 gss_mech_get +EXPORT_SYMBOL net/sunrpc/auth_gss/auth_rpcgss 0xf1877919 gss_pseudoflavor_to_service +EXPORT_SYMBOL net/sunrpc/sunrpc 0x1dc46d0c xdr_restrict_buflen +EXPORT_SYMBOL net/sunrpc/sunrpc 0xc4a03272 xdr_truncate_encode +EXPORT_SYMBOL net/sunrpc/sunrpc 0xe949f12e svc_pool_stats_open +EXPORT_SYMBOL net/wimax/wimax 0x95982a7c wimax_rfkill +EXPORT_SYMBOL net/wimax/wimax 0xe23192e6 wimax_reset +EXPORT_SYMBOL net/wireless/cfg80211 0x005b4f96 ieee80211_get_hdrlen_from_skb +EXPORT_SYMBOL net/wireless/cfg80211 0x04003130 wiphy_free +EXPORT_SYMBOL net/wireless/cfg80211 0x082fc009 cfg80211_ibss_joined +EXPORT_SYMBOL net/wireless/cfg80211 0x09c64fbd ieee80211_frequency_to_channel +EXPORT_SYMBOL net/wireless/cfg80211 0x0b2735ba cfg80211_rx_mlme_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0x15292791 __cfg80211_alloc_event_skb +EXPORT_SYMBOL net/wireless/cfg80211 0x159102f4 cfg80211_get_station +EXPORT_SYMBOL net/wireless/cfg80211 0x1821d316 cfg80211_cqm_pktloss_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x1879fcbd bridge_tunnel_header +EXPORT_SYMBOL net/wireless/cfg80211 0x19e03378 cfg80211_get_p2p_attr +EXPORT_SYMBOL net/wireless/cfg80211 0x1a5ada19 freq_reg_info +EXPORT_SYMBOL net/wireless/cfg80211 0x1b757c1c cfg80211_chandef_dfs_required +EXPORT_SYMBOL net/wireless/cfg80211 0x25c608d8 cfg80211_classify8021d +EXPORT_SYMBOL net/wireless/cfg80211 0x26070b08 cfg80211_del_sta_sinfo +EXPORT_SYMBOL net/wireless/cfg80211 0x276e2ae6 cfg80211_pmksa_candidate_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x282e15c9 wiphy_new_nm +EXPORT_SYMBOL net/wireless/cfg80211 0x28e6feeb cfg80211_auth_timeout +EXPORT_SYMBOL net/wireless/cfg80211 0x291c61f6 cfg80211_cqm_beacon_loss_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x2b6934fa cfg80211_chandef_usable +EXPORT_SYMBOL net/wireless/cfg80211 0x31533eff cfg80211_inform_bss_width_frame +EXPORT_SYMBOL net/wireless/cfg80211 0x323fc6ab ieee80211_get_num_supported_channels +EXPORT_SYMBOL net/wireless/cfg80211 0x328f8050 ieee80211_amsdu_to_8023s +EXPORT_SYMBOL net/wireless/cfg80211 0x33d627e6 cfg80211_ft_event +EXPORT_SYMBOL net/wireless/cfg80211 0x3a10038e cfg80211_ch_switch_started_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x3d470c4d cfg80211_chandef_compatible +EXPORT_SYMBOL net/wireless/cfg80211 0x3d714a66 cfg80211_rx_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0x3e285fec cfg80211_chandef_valid +EXPORT_SYMBOL net/wireless/cfg80211 0x495457ff cfg80211_calculate_bitrate +EXPORT_SYMBOL net/wireless/cfg80211 0x50214c28 ieee80211_bss_get_ie +EXPORT_SYMBOL net/wireless/cfg80211 0x52f65fdf wiphy_unregister +EXPORT_SYMBOL net/wireless/cfg80211 0x54f4fb34 cfg80211_unlink_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x57a1a117 cfg80211_sched_scan_results +EXPORT_SYMBOL net/wireless/cfg80211 0x5a69d08a wiphy_apply_custom_regulatory +EXPORT_SYMBOL net/wireless/cfg80211 0x5d84004c cfg80211_probe_status +EXPORT_SYMBOL net/wireless/cfg80211 0x5e9525e6 cfg80211_crit_proto_stopped +EXPORT_SYMBOL net/wireless/cfg80211 0x602abcb2 cfg80211_check_combinations +EXPORT_SYMBOL net/wireless/cfg80211 0x665e77ed __cfg80211_send_event_skb +EXPORT_SYMBOL net/wireless/cfg80211 0x67968482 cfg80211_inform_bss_width +EXPORT_SYMBOL net/wireless/cfg80211 0x6880cd81 cfg80211_cac_event +EXPORT_SYMBOL net/wireless/cfg80211 0x69b18f43 rfc1042_header +EXPORT_SYMBOL net/wireless/cfg80211 0x69feb164 cfg80211_get_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x6d6cb9ad ieee80211_operating_class_to_band +EXPORT_SYMBOL net/wireless/cfg80211 0x768559d5 cfg80211_tdls_oper_request +EXPORT_SYMBOL net/wireless/cfg80211 0x7b531204 regulatory_hint +EXPORT_SYMBOL net/wireless/cfg80211 0x7d16dcf7 cfg80211_tx_mlme_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0x7d21bb04 cfg80211_michael_mic_failure +EXPORT_SYMBOL net/wireless/cfg80211 0x7ef39823 ieee80211_hdrlen +EXPORT_SYMBOL net/wireless/cfg80211 0x7f1daa3e cfg80211_new_sta +EXPORT_SYMBOL net/wireless/cfg80211 0x7fe1a403 cfg80211_find_ie +EXPORT_SYMBOL net/wireless/cfg80211 0x801e4c0b cfg80211_stop_iface +EXPORT_SYMBOL net/wireless/cfg80211 0x807ff882 cfg80211_disconnected +EXPORT_SYMBOL net/wireless/cfg80211 0x83dcd0e1 cfg80211_cqm_txe_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x8492a430 ieee80211_get_response_rate +EXPORT_SYMBOL net/wireless/cfg80211 0x85e5120a wiphy_rfkill_stop_polling +EXPORT_SYMBOL net/wireless/cfg80211 0x86868b89 cfg80211_rx_unexpected_4addr_frame +EXPORT_SYMBOL net/wireless/cfg80211 0x87f78f43 cfg80211_reg_can_beacon +EXPORT_SYMBOL net/wireless/cfg80211 0x8a7062a5 ieee80211_mandatory_rates +EXPORT_SYMBOL net/wireless/cfg80211 0x905d05f1 __ieee80211_get_channel +EXPORT_SYMBOL net/wireless/cfg80211 0x90711a90 cfg80211_conn_failed +EXPORT_SYMBOL net/wireless/cfg80211 0x90a38b92 cfg80211_iter_combinations +EXPORT_SYMBOL net/wireless/cfg80211 0x913a628d cfg80211_report_wowlan_wakeup +EXPORT_SYMBOL net/wireless/cfg80211 0x9159bbba wiphy_rfkill_set_hw_state +EXPORT_SYMBOL net/wireless/cfg80211 0x93142eb5 wiphy_rfkill_start_polling +EXPORT_SYMBOL net/wireless/cfg80211 0x9325650a cfg80211_rx_spurious_frame +EXPORT_SYMBOL net/wireless/cfg80211 0x966ff54d ieee80211_ie_split_ric +EXPORT_SYMBOL net/wireless/cfg80211 0x982e6b6d ieee80211_radiotap_iterator_init +EXPORT_SYMBOL net/wireless/cfg80211 0x9c1bc52a regulatory_set_wiphy_regd +EXPORT_SYMBOL net/wireless/cfg80211 0x9e3cbb47 cfg80211_cqm_rssi_notify +EXPORT_SYMBOL net/wireless/cfg80211 0xa1425906 ieee80211_channel_to_frequency +EXPORT_SYMBOL net/wireless/cfg80211 0xa197b1ff ieee80211_get_mesh_hdrlen +EXPORT_SYMBOL net/wireless/cfg80211 0xa5088971 cfg80211_ch_switch_notify +EXPORT_SYMBOL net/wireless/cfg80211 0xa56c0688 cfg80211_rx_unprot_mlme_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0xa74d321c cfg80211_connect_result +EXPORT_SYMBOL net/wireless/cfg80211 0xaa1a9d87 cfg80211_put_bss +EXPORT_SYMBOL net/wireless/cfg80211 0xaccd8128 cfg80211_ref_bss +EXPORT_SYMBOL net/wireless/cfg80211 0xb08f811d cfg80211_roamed +EXPORT_SYMBOL net/wireless/cfg80211 0xb15db0b7 cfg80211_gtk_rekey_notify +EXPORT_SYMBOL net/wireless/cfg80211 0xb6ec8087 cfg80211_report_obss_beacon +EXPORT_SYMBOL net/wireless/cfg80211 0xbacd3779 __cfg80211_alloc_reply_skb +EXPORT_SYMBOL net/wireless/cfg80211 0xbb390aa7 cfg80211_unregister_wdev +EXPORT_SYMBOL net/wireless/cfg80211 0xbd644f4d cfg80211_remain_on_channel_expired +EXPORT_SYMBOL net/wireless/cfg80211 0xbd8d5401 wiphy_register +EXPORT_SYMBOL net/wireless/cfg80211 0xc13dbbd7 ieee80211_data_to_8023 +EXPORT_SYMBOL net/wireless/cfg80211 0xc22358c8 cfg80211_reg_can_beacon_relax +EXPORT_SYMBOL net/wireless/cfg80211 0xc63f1b81 ieee80211_radiotap_iterator_next +EXPORT_SYMBOL net/wireless/cfg80211 0xc90fde22 ieee80211_chandef_to_operating_class +EXPORT_SYMBOL net/wireless/cfg80211 0xd1ec60f5 regulatory_set_wiphy_regd_sync_rtnl +EXPORT_SYMBOL net/wireless/cfg80211 0xd6b9d340 cfg80211_rx_assoc_resp +EXPORT_SYMBOL net/wireless/cfg80211 0xd777f89f cfg80211_sched_scan_stopped_rtnl +EXPORT_SYMBOL net/wireless/cfg80211 0xdba126c1 reg_initiator_name +EXPORT_SYMBOL net/wireless/cfg80211 0xe3d9cf1d cfg80211_radar_event +EXPORT_SYMBOL net/wireless/cfg80211 0xe47fe1df cfg80211_roamed_bss +EXPORT_SYMBOL net/wireless/cfg80211 0xea8f6c50 cfg80211_assoc_timeout +EXPORT_SYMBOL net/wireless/cfg80211 0xeb6d7c6c ieee80211_ie_split +EXPORT_SYMBOL net/wireless/cfg80211 0xeb8196f1 cfg80211_sched_scan_stopped +EXPORT_SYMBOL net/wireless/cfg80211 0xefc56354 cfg80211_chandef_create +EXPORT_SYMBOL net/wireless/cfg80211 0xf026c6d4 cfg80211_mgmt_tx_status +EXPORT_SYMBOL net/wireless/cfg80211 0xf0caa3ce cfg80211_get_drvinfo +EXPORT_SYMBOL net/wireless/cfg80211 0xf3e454e4 cfg80211_ready_on_channel +EXPORT_SYMBOL net/wireless/cfg80211 0xf5ab1ab3 cfg80211_notify_new_peer_candidate +EXPORT_SYMBOL net/wireless/cfg80211 0xf8bcad68 ieee80211_data_from_8023 +EXPORT_SYMBOL net/wireless/cfg80211 0xfab34591 cfg80211_check_station_change +EXPORT_SYMBOL net/wireless/cfg80211 0xfed4d591 cfg80211_find_vendor_ie +EXPORT_SYMBOL net/wireless/cfg80211 0xff35171b cfg80211_scan_done +EXPORT_SYMBOL net/wireless/lib80211 0x05fc42db lib80211_crypt_info_init +EXPORT_SYMBOL net/wireless/lib80211 0x307b98a2 lib80211_register_crypto_ops +EXPORT_SYMBOL net/wireless/lib80211 0x4c7d1c16 lib80211_get_crypto_ops +EXPORT_SYMBOL net/wireless/lib80211 0x57b5d0da lib80211_crypt_info_free +EXPORT_SYMBOL net/wireless/lib80211 0x664071e0 lib80211_crypt_delayed_deinit +EXPORT_SYMBOL net/wireless/lib80211 0xac954598 lib80211_unregister_crypto_ops +EXPORT_SYMBOL sound/ac97_bus 0x5c4d6478 ac97_bus_type +EXPORT_SYMBOL sound/core/oss/snd-mixer-oss 0x5372572d 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 0x705ac2e5 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 0x827b13fb snd_seq_kernel_client_write_poll +EXPORT_SYMBOL sound/core/seq/snd-seq 0xb8e448a0 snd_seq_set_queue_tempo +EXPORT_SYMBOL sound/core/seq/snd-seq 0xbbb71ee6 snd_seq_create_kernel_client +EXPORT_SYMBOL sound/core/seq/snd-seq 0xbc33152f snd_seq_kernel_client_enqueue_blocking +EXPORT_SYMBOL sound/core/seq/snd-seq 0xcac0a3be snd_seq_kernel_client_enqueue +EXPORT_SYMBOL sound/core/seq/snd-seq 0xe934da1d snd_seq_dump_var_event +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0x091def1c snd_seq_autoload_exit +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0x370a0736 snd_seq_autoload_init +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0x40f76af5 snd_seq_device_new +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0x6339b6d0 snd_seq_device_load_drivers +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 0xf0a1fdb3 snd_midi_process_event +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x205395a0 snd_midi_event_encode_byte +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x614705ff snd_midi_event_no_status +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x7746bb9b snd_midi_event_decode +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x79794472 snd_midi_event_new +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x991c0f60 snd_midi_event_reset_encode +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0xef8fa3d2 snd_midi_event_free +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0xf3f0324e snd_midi_event_reset_decode +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0xf6fdda44 snd_midi_event_encode +EXPORT_SYMBOL sound/core/seq/snd-seq-virmidi 0xe3fa2524 snd_virmidi_new +EXPORT_SYMBOL sound/core/snd 0x03952e95 snd_ctl_unregister_ioctl +EXPORT_SYMBOL sound/core/snd 0x0f3f78f0 snd_ctl_add +EXPORT_SYMBOL sound/core/snd 0x0fe12ace snd_card_file_add +EXPORT_SYMBOL sound/core/snd 0x10fe3648 snd_info_create_card_entry +EXPORT_SYMBOL sound/core/snd 0x12f469de snd_register_device +EXPORT_SYMBOL sound/core/snd 0x13ca660b snd_ctl_remove +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 0x26c4ee4c snd_power_wait +EXPORT_SYMBOL sound/core/snd 0x2831c446 snd_cards +EXPORT_SYMBOL sound/core/snd 0x2ae3deaa release_and_free_resource +EXPORT_SYMBOL sound/core/snd 0x2aedaf20 snd_component_add +EXPORT_SYMBOL sound/core/snd 0x3127b53b snd_ctl_register_ioctl +EXPORT_SYMBOL sound/core/snd 0x33ebd4c7 _snd_ctl_add_slave +EXPORT_SYMBOL sound/core/snd 0x352a11dc snd_card_free_when_closed +EXPORT_SYMBOL sound/core/snd 0x3971b4df snd_ecards_limit +EXPORT_SYMBOL sound/core/snd 0x39a5e24e snd_info_create_module_entry +EXPORT_SYMBOL sound/core/snd 0x3bbf7e4d snd_ctl_replace +EXPORT_SYMBOL sound/core/snd 0x3fe0456a snd_jack_report +EXPORT_SYMBOL sound/core/snd 0x414ee3a4 snd_ctl_find_numid +EXPORT_SYMBOL sound/core/snd 0x418fcc8d snd_mixer_oss_notify_callback +EXPORT_SYMBOL sound/core/snd 0x46c287f2 snd_card_register +EXPORT_SYMBOL sound/core/snd 0x4a3ea5c0 snd_request_card +EXPORT_SYMBOL sound/core/snd 0x4c93169b snd_device_register +EXPORT_SYMBOL sound/core/snd 0x50e707d9 snd_unregister_device +EXPORT_SYMBOL sound/core/snd 0x56e3dc66 snd_ctl_make_virtual_master +EXPORT_SYMBOL sound/core/snd 0x59af28aa snd_card_new +EXPORT_SYMBOL sound/core/snd 0x602c96f0 copy_to_user_fromio +EXPORT_SYMBOL sound/core/snd 0x60ba6650 snd_jack_add_new_kctl +EXPORT_SYMBOL sound/core/snd 0x639d14cf snd_info_free_entry +EXPORT_SYMBOL sound/core/snd 0x65e8fadc snd_ctl_new1 +EXPORT_SYMBOL sound/core/snd 0x6feaeca8 snd_jack_set_parent +EXPORT_SYMBOL sound/core/snd 0x70a12f6c snd_device_free +EXPORT_SYMBOL sound/core/snd 0x70c15ac1 snd_dma_disable +EXPORT_SYMBOL sound/core/snd 0x7adaa9cc snd_card_set_id +EXPORT_SYMBOL sound/core/snd 0x81b69e41 snd_ctl_enum_info +EXPORT_SYMBOL sound/core/snd 0x82c2f819 snd_device_new +EXPORT_SYMBOL sound/core/snd 0x8575f1a1 snd_unregister_oss_device +EXPORT_SYMBOL sound/core/snd 0x8c15e05a snd_ctl_rename_id +EXPORT_SYMBOL sound/core/snd 0x8df3789f snd_oss_info_register +EXPORT_SYMBOL sound/core/snd 0x8f595b11 snd_major +EXPORT_SYMBOL sound/core/snd 0x94f6fdec snd_jack_new +EXPORT_SYMBOL sound/core/snd 0x9e6d79f8 snd_info_get_str +EXPORT_SYMBOL sound/core/snd 0x9fe83875 snd_ctl_remove_id +EXPORT_SYMBOL sound/core/snd 0xa0fd2427 snd_pci_quirk_lookup_id +EXPORT_SYMBOL sound/core/snd 0xa167f73d snd_ctl_notify +EXPORT_SYMBOL sound/core/snd 0xa28c0c17 snd_card_free +EXPORT_SYMBOL sound/core/snd 0xac33e179 snd_jack_set_key +EXPORT_SYMBOL sound/core/snd 0xac972674 snd_ctl_find_id +EXPORT_SYMBOL sound/core/snd 0xad984cb0 snd_ctl_boolean_stereo_info +EXPORT_SYMBOL sound/core/snd 0xb0afafea snd_card_disconnect +EXPORT_SYMBOL sound/core/snd 0xb2d75f38 snd_card_file_remove +EXPORT_SYMBOL sound/core/snd 0xb2e5ae4a snd_lookup_minor_data +EXPORT_SYMBOL sound/core/snd 0xb9d7fb70 snd_ctl_free_one +EXPORT_SYMBOL sound/core/snd 0xc799b2a6 snd_seq_root +EXPORT_SYMBOL sound/core/snd 0xce3ca308 copy_from_user_toio +EXPORT_SYMBOL sound/core/snd 0xceade831 snd_info_register +EXPORT_SYMBOL sound/core/snd 0xece00ff8 snd_register_oss_device +EXPORT_SYMBOL sound/core/snd 0xf79f09b3 snd_pci_quirk_lookup +EXPORT_SYMBOL sound/core/snd 0xf9f70483 snd_ctl_boolean_mono_info +EXPORT_SYMBOL sound/core/snd-hwdep 0x2f3d61e6 snd_hwdep_new +EXPORT_SYMBOL sound/core/snd-pcm 0x013e49ca snd_pcm_lib_free_vmalloc_buffer +EXPORT_SYMBOL sound/core/snd-pcm 0x0283dfe3 _snd_pcm_hw_params_any +EXPORT_SYMBOL sound/core/snd-pcm 0x031d84e2 snd_pcm_lib_readv +EXPORT_SYMBOL sound/core/snd-pcm 0x04cda566 snd_interval_refine +EXPORT_SYMBOL sound/core/snd-pcm 0x0a84fb05 snd_pcm_sgbuf_ops_page +EXPORT_SYMBOL sound/core/snd-pcm 0x10060d1a snd_pcm_lib_preallocate_pages +EXPORT_SYMBOL sound/core/snd-pcm 0x1d027e4b snd_pcm_format_signed +EXPORT_SYMBOL sound/core/snd-pcm 0x20424e2a snd_sgbuf_get_chunk_size +EXPORT_SYMBOL sound/core/snd-pcm 0x2182c881 snd_pcm_release_substream +EXPORT_SYMBOL sound/core/snd-pcm 0x21b5dd76 snd_pcm_hw_constraint_step +EXPORT_SYMBOL sound/core/snd-pcm 0x2443fa07 snd_pcm_hw_constraint_pow2 +EXPORT_SYMBOL sound/core/snd-pcm 0x26951315 snd_pcm_new +EXPORT_SYMBOL sound/core/snd-pcm 0x2e6d4746 snd_pcm_hw_constraint_integer +EXPORT_SYMBOL sound/core/snd-pcm 0x2ee7dab3 snd_pcm_lib_free_pages +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 0x39cac670 snd_pcm_set_sync +EXPORT_SYMBOL sound/core/snd-pcm 0x3afa823c snd_pcm_hw_param_first +EXPORT_SYMBOL sound/core/snd-pcm 0x3b91f3af snd_free_pages +EXPORT_SYMBOL sound/core/snd-pcm 0x3dfcf231 snd_pcm_stop +EXPORT_SYMBOL sound/core/snd-pcm 0x42a36c2f snd_pcm_hw_param_last +EXPORT_SYMBOL sound/core/snd-pcm 0x46325ae6 snd_pcm_hw_constraint_minmax +EXPORT_SYMBOL sound/core/snd-pcm 0x4d9b6d35 snd_pcm_format_size +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 0x52a19f1c snd_pcm_notify +EXPORT_SYMBOL sound/core/snd-pcm 0x52e3e4a5 snd_pcm_hw_param_value +EXPORT_SYMBOL sound/core/snd-pcm 0x56cc79ab snd_dma_alloc_pages_fallback +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 0x661cb691 snd_pcm_hw_constraint_mask64 +EXPORT_SYMBOL sound/core/snd-pcm 0x68a24153 snd_pcm_format_physical_width +EXPORT_SYMBOL sound/core/snd-pcm 0x6ef8fcd8 snd_pcm_format_linear +EXPORT_SYMBOL sound/core/snd-pcm 0x725f7b8c snd_pcm_lib_preallocate_pages_for_all +EXPORT_SYMBOL sound/core/snd-pcm 0x7cd84745 snd_pcm_suspend_all +EXPORT_SYMBOL sound/core/snd-pcm 0x8178c308 snd_pcm_limit_hw_rates +EXPORT_SYMBOL sound/core/snd-pcm 0x869c4934 snd_pcm_open_substream +EXPORT_SYMBOL sound/core/snd-pcm 0x8ec5c107 snd_pcm_lib_malloc_pages +EXPORT_SYMBOL sound/core/snd-pcm 0x94098ff8 snd_interval_list +EXPORT_SYMBOL sound/core/snd-pcm 0x9848f83e snd_pcm_lib_preallocate_free_for_all +EXPORT_SYMBOL sound/core/snd-pcm 0x9fd33dbb snd_pcm_lib_writev +EXPORT_SYMBOL sound/core/snd-pcm 0xa11f0f7c snd_pcm_lib_write +EXPORT_SYMBOL sound/core/snd-pcm 0xa514c744 snd_pcm_hw_refine +EXPORT_SYMBOL sound/core/snd-pcm 0xa61aa028 snd_pcm_format_unsigned +EXPORT_SYMBOL sound/core/snd-pcm 0xaa5b2438 snd_pcm_new_internal +EXPORT_SYMBOL sound/core/snd-pcm 0xade88e76 snd_malloc_pages +EXPORT_SYMBOL sound/core/snd-pcm 0xb938d621 snd_pcm_lib_ioctl +EXPORT_SYMBOL sound/core/snd-pcm 0xb9638db4 snd_pcm_rate_to_rate_bit +EXPORT_SYMBOL sound/core/snd-pcm 0xbcd1c8a6 _snd_pcm_lib_alloc_vmalloc_buffer +EXPORT_SYMBOL sound/core/snd-pcm 0xc006e824 snd_pcm_set_ops +EXPORT_SYMBOL sound/core/snd-pcm 0xcaec67a4 snd_pcm_hw_rule_add +EXPORT_SYMBOL sound/core/snd-pcm 0xcb528f5e snd_pcm_lib_read +EXPORT_SYMBOL sound/core/snd-pcm 0xcbf08c7e snd_pcm_lib_mmap_iomem +EXPORT_SYMBOL sound/core/snd-pcm 0xd68c7b57 snd_pcm_hw_constraint_list +EXPORT_SYMBOL sound/core/snd-pcm 0xd6f765e0 snd_pcm_hw_constraint_ratnums +EXPORT_SYMBOL sound/core/snd-pcm 0xdb9e46b5 snd_dma_free_pages +EXPORT_SYMBOL sound/core/snd-pcm 0xdc2b9044 snd_pcm_kernel_ioctl +EXPORT_SYMBOL sound/core/snd-pcm 0xddfb46fd snd_pcm_hw_constraint_msbits +EXPORT_SYMBOL sound/core/snd-pcm 0xe56a9336 snd_pcm_format_width +EXPORT_SYMBOL sound/core/snd-pcm 0xe8b8cf21 snd_pcm_new_stream +EXPORT_SYMBOL sound/core/snd-pcm 0xe97d1f05 snd_pcm_hw_rule_noresample +EXPORT_SYMBOL sound/core/snd-pcm 0xec36795f snd_pcm_period_elapsed +EXPORT_SYMBOL sound/core/snd-pcm 0xef1dff04 snd_pcm_mmap_data +EXPORT_SYMBOL sound/core/snd-pcm 0xefc0b9dd snd_pcm_hw_constraint_ratdens +EXPORT_SYMBOL sound/core/snd-pcm 0xf3797152 snd_interval_ratnum +EXPORT_SYMBOL sound/core/snd-pcm 0xf7014040 snd_pcm_lib_get_vmalloc_page +EXPORT_SYMBOL sound/core/snd-pcm 0xf9052e2b snd_dma_alloc_pages +EXPORT_SYMBOL sound/core/snd-pcm 0xfbd55a4d snd_pcm_hw_constraint_ranges +EXPORT_SYMBOL sound/core/snd-pcm 0xfe620025 snd_pcm_suspend +EXPORT_SYMBOL sound/core/snd-pcm 0xff6104d0 snd_pcm_rate_bit_to_rate +EXPORT_SYMBOL sound/core/snd-rawmidi 0x091eaa79 snd_rawmidi_kernel_write +EXPORT_SYMBOL sound/core/snd-rawmidi 0x212dfb7e snd_rawmidi_kernel_release +EXPORT_SYMBOL sound/core/snd-rawmidi 0x3f81874c snd_rawmidi_input_params +EXPORT_SYMBOL sound/core/snd-rawmidi 0x48a201d1 snd_rawmidi_transmit_ack +EXPORT_SYMBOL sound/core/snd-rawmidi 0x4c085788 snd_rawmidi_drain_input +EXPORT_SYMBOL sound/core/snd-rawmidi 0x521e9a24 snd_rawmidi_transmit +EXPORT_SYMBOL sound/core/snd-rawmidi 0x8ca32a21 snd_rawmidi_drop_output +EXPORT_SYMBOL sound/core/snd-rawmidi 0xb534ffe8 snd_rawmidi_transmit_empty +EXPORT_SYMBOL sound/core/snd-rawmidi 0xb91a2df8 snd_rawmidi_drain_output +EXPORT_SYMBOL sound/core/snd-rawmidi 0xccd9297c snd_rawmidi_info_select +EXPORT_SYMBOL sound/core/snd-rawmidi 0xcdc592e1 snd_rawmidi_kernel_open +EXPORT_SYMBOL sound/core/snd-rawmidi 0xe195b644 snd_rawmidi_transmit_peek +EXPORT_SYMBOL sound/core/snd-rawmidi 0xe48dc08b snd_rawmidi_receive +EXPORT_SYMBOL sound/core/snd-rawmidi 0xeb46a25f snd_rawmidi_kernel_read +EXPORT_SYMBOL sound/core/snd-rawmidi 0xec6fed22 snd_rawmidi_output_params +EXPORT_SYMBOL sound/core/snd-rawmidi 0xf5ec7f7a snd_rawmidi_new +EXPORT_SYMBOL sound/core/snd-rawmidi 0xfbd7c29b snd_rawmidi_set_ops +EXPORT_SYMBOL sound/core/snd-timer 0x125ecc03 snd_timer_open +EXPORT_SYMBOL sound/core/snd-timer 0x27178b4f snd_timer_global_new +EXPORT_SYMBOL sound/core/snd-timer 0x35ffed57 snd_timer_resolution +EXPORT_SYMBOL sound/core/snd-timer 0x36b926d6 snd_timer_stop +EXPORT_SYMBOL sound/core/snd-timer 0x43673154 snd_timer_start +EXPORT_SYMBOL sound/core/snd-timer 0x45b70d32 snd_timer_notify +EXPORT_SYMBOL sound/core/snd-timer 0x5d40edc5 snd_timer_continue +EXPORT_SYMBOL sound/core/snd-timer 0x6ea0202a snd_timer_pause +EXPORT_SYMBOL sound/core/snd-timer 0x72d8cfc4 snd_timer_interrupt +EXPORT_SYMBOL sound/core/snd-timer 0xcb5349be snd_timer_global_register +EXPORT_SYMBOL sound/core/snd-timer 0xdc087f4d snd_timer_close +EXPORT_SYMBOL sound/core/snd-timer 0xecb75ccf snd_timer_global_free +EXPORT_SYMBOL sound/core/snd-timer 0xf24b8369 snd_timer_new +EXPORT_SYMBOL sound/drivers/mpu401/snd-mpu401-uart 0x0153b222 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 0x1719e8c6 snd_opl3_create +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x314d025c snd_opl3_load_patch +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x44ada48e snd_opl3_new +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x494ae5f6 snd_opl3_interrupt +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x591a4119 snd_opl3_init +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x6c9a49e5 snd_opl3_hwdep_new +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x875e546a snd_opl3_timer_new +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x9f8c8d4a snd_opl3_find_patch +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xa7a9796a snd_opl3_reset +EXPORT_SYMBOL sound/drivers/opl4/snd-opl4-lib 0x35488f03 snd_opl4_write_memory +EXPORT_SYMBOL sound/drivers/opl4/snd-opl4-lib 0x99385c0c snd_opl4_create +EXPORT_SYMBOL sound/drivers/opl4/snd-opl4-lib 0xb07b1260 snd_opl4_read +EXPORT_SYMBOL sound/drivers/opl4/snd-opl4-lib 0xb1497e39 snd_opl4_read_memory +EXPORT_SYMBOL sound/drivers/opl4/snd-opl4-lib 0xdea98b2a snd_opl4_write +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x226138b0 snd_vx_threaded_irq_handler +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x37525c17 snd_vx_resume +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x4fa85616 snd_vx_suspend +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x5b98f8d1 snd_vx_load_boot_image +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x8a41fbc0 snd_vx_create +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x8b43abf1 snd_vx_dsp_boot +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xc4b287bf snd_vx_free_firmware +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xd874a721 snd_vx_check_reg_bit +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xdaa8ba12 snd_vx_setup_firmware +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xe20de620 snd_vx_dsp_load +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xf1f04d23 snd_vx_irq_handler +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x0279df51 avc_general_set_sig_fmt +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x0508a860 amdtp_stream_start +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x173e4f65 amdtp_stream_pcm_abort +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x20254e45 amdtp_syt_intervals +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x20af1ee3 fw_iso_resources_free +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x234ccba4 amdtp_stream_pcm_prepare +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x237d5d75 amdtp_stream_set_parameters +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x43b3b9da amdtp_stream_update +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x504715cf cmp_connection_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x53ca18e8 amdtp_rate_table +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x5e34078f fw_iso_resources_allocate +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x6205d19e fw_iso_resources_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x6984aa6f amdtp_stream_set_pcm_format +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x73e68640 amdtp_stream_add_pcm_hw_constraints +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x78928d19 amdtp_stream_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x79df79fe avc_general_get_plug_info +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x7a95c093 iso_packets_buffer_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x850a9cd8 amdtp_stream_stop +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x87df0776 avc_general_get_sig_fmt +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xa1acbe03 amdtp_stream_get_max_payload +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xaac2b2e9 fcp_bus_reset +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xabb20abc fw_iso_resources_update +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xb07b663e amdtp_stream_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xb24999ce cmp_connection_update +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xb377c10f cmp_connection_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xb3e18713 fcp_avc_transaction +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xb7c2bfed snd_fw_transaction +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xdc6568c3 fw_iso_resources_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xe478bc51 cmp_connection_break +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xe74d92ba cmp_connection_check_used +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xea99f605 cmp_connection_establish +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xf692db47 iso_packets_buffer_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xf792fab2 amdtp_stream_pcm_pointer +EXPORT_SYMBOL sound/i2c/other/snd-ak4113 0x457a5bf6 snd_ak4113_suspend +EXPORT_SYMBOL sound/i2c/other/snd-ak4113 0x5c9ff71b snd_ak4113_resume +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x0b8868ee snd_ak4114_suspend +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x2593d8db snd_ak4114_reg_write +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x58988a39 snd_ak4114_create +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x72838956 snd_ak4114_resume +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x81d1015f snd_ak4114_build +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x8743ea09 snd_ak4114_reinit +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0xb9fb3a3c snd_ak4114_check_rate_and_errors +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0xbbdf07de snd_ak4114_external_rate +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0x0c8d4b83 snd_ak4117_reinit +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0x17fc6e41 snd_ak4117_build +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0x84d03f18 snd_ak4117_check_rate_and_errors +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0x9f24b142 snd_ak4117_reg_write +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0xd5ce5ef9 snd_ak4117_external_rate +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0xd7030056 snd_ak4117_create +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0x29746998 snd_akm4xxx_build_controls +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0x338785cd snd_akm4xxx_write +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0x592f5694 snd_akm4xxx_reset +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0x817c7730 snd_akm4xxx_init +EXPORT_SYMBOL sound/i2c/other/snd-pt2258 0x18e915ce snd_pt2258_build_controls +EXPORT_SYMBOL sound/i2c/other/snd-pt2258 0xce81c81c snd_pt2258_reset +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x0e419b4e snd_cs8427_iec958_build +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x1bbe641f snd_cs8427_create +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x1bfba4c7 snd_cs8427_iec958_active +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x554f1e6c snd_cs8427_reg_write +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x80fbb70c snd_cs8427_iec958_pcm +EXPORT_SYMBOL sound/i2c/snd-cs8427 0xec4e3c54 snd_cs8427_init +EXPORT_SYMBOL sound/i2c/snd-i2c 0x05875c7f snd_i2c_device_free +EXPORT_SYMBOL sound/i2c/snd-i2c 0x2b356664 snd_i2c_sendbytes +EXPORT_SYMBOL sound/i2c/snd-i2c 0x3b2795a9 snd_i2c_probeaddr +EXPORT_SYMBOL sound/i2c/snd-i2c 0xca90c859 snd_i2c_bus_create +EXPORT_SYMBOL sound/i2c/snd-i2c 0xdfc9d2c6 snd_i2c_readbytes +EXPORT_SYMBOL sound/i2c/snd-i2c 0xfb56a225 snd_i2c_device_create +EXPORT_SYMBOL sound/i2c/snd-tea6330t 0x0ca4ce05 snd_tea6330t_update_mixer +EXPORT_SYMBOL sound/i2c/snd-tea6330t 0xf7159028 snd_tea6330t_detect +EXPORT_SYMBOL sound/isa/es1688/snd-es1688-lib 0x236acdf1 snd_es1688_create +EXPORT_SYMBOL sound/isa/es1688/snd-es1688-lib 0x70bf7243 snd_es1688_mixer_write +EXPORT_SYMBOL sound/isa/es1688/snd-es1688-lib 0x7cf43f34 snd_es1688_pcm +EXPORT_SYMBOL sound/isa/es1688/snd-es1688-lib 0xa64f9b4a snd_es1688_mixer +EXPORT_SYMBOL sound/isa/es1688/snd-es1688-lib 0xe45360ae snd_es1688_reset +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0x056b082a snd_gf1_ctrl_stop +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0x0c67728e snd_gf1_dram_addr +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0x1b2768e8 snd_gf1_poke +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0x1c1ce117 snd_gus_interrupt +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0x1daa6285 snd_gf1_write8 +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0x31c4605b snd_gus_use_inc +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0x32da5c64 snd_gf1_free_voice +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0x3f970a68 snd_gus_use_dec +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0x46db8d67 snd_gf1_lvol_to_gvol_raw +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0x4b6dec29 snd_gus_create +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0x4c81a2cc snd_gf1_write16 +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0x4da22a89 snd_gf1_new_mixer +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0x54b01b4e snd_gf1_delay +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0x58857c08 snd_gf1_stop_voice +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0x627ffda0 snd_gf1_mem_xfree +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0x70ddb6c2 snd_gf1_i_look16 +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0x805289fd snd_gf1_write_addr +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0x8b819f1e snd_gf1_alloc_voice +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0x8be375b0 snd_gf1_translate_freq +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0x9d4ce5e9 snd_gf1_rawmidi_new +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0xa9d8153c snd_gf1_mem_alloc +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0xac413e60 snd_gf1_mem_lock +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0xadbfa73d snd_gf1_pcm_new +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0xc0ecb3fd snd_gf1_look16 +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0xc43a5527 snd_gf1_atten_table +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0xd56e8ea2 snd_gf1_peek +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0xd93d149b snd_gf1_look8 +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0xe15b16db snd_gf1_mem_free +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0xe1bc518c snd_gf1_i_write8 +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0xedd0ed21 snd_gus_dram_read +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0xee5af3e2 snd_gus_dram_write +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0xf2f6d828 snd_gus_initialize +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0xf8dfd1e7 snd_gf1_i_look8 +EXPORT_SYMBOL sound/isa/msnd/snd-msnd-lib 0x0e096be3 snd_msnd_init_queue +EXPORT_SYMBOL sound/isa/msnd/snd-msnd-lib 0x1a6cb3ec snd_msnd_enable_irq +EXPORT_SYMBOL sound/isa/msnd/snd-msnd-lib 0x1ebf0b53 snd_msnd_upload_host +EXPORT_SYMBOL sound/isa/msnd/snd-msnd-lib 0x26406b63 snd_msnd_pcm +EXPORT_SYMBOL sound/isa/msnd/snd-msnd-lib 0x3993cb55 snd_msndmix_force_recsrc +EXPORT_SYMBOL sound/isa/msnd/snd-msnd-lib 0x4b0634e8 snd_msnd_dsp_halt +EXPORT_SYMBOL sound/isa/msnd/snd-msnd-lib 0x649d2a5e snd_msndmix_new +EXPORT_SYMBOL sound/isa/msnd/snd-msnd-lib 0x70f832d7 snd_msnd_DAPQ +EXPORT_SYMBOL sound/isa/msnd/snd-msnd-lib 0x75026b24 snd_msndmidi_input_read +EXPORT_SYMBOL sound/isa/msnd/snd-msnd-lib 0x8f7e5155 snd_msnd_send_word +EXPORT_SYMBOL sound/isa/msnd/snd-msnd-lib 0x9e1b5147 snd_msnd_disable_irq +EXPORT_SYMBOL sound/isa/msnd/snd-msnd-lib 0xe7214764 snd_msnd_send_dsp_cmd +EXPORT_SYMBOL sound/isa/msnd/snd-msnd-lib 0xfbffc2dc snd_msnd_DARQ +EXPORT_SYMBOL sound/isa/msnd/snd-msnd-lib 0xff0ef8e1 snd_msndmix_setup +EXPORT_SYMBOL sound/isa/opti9xx/snd-miro 0x1e8356ee snd_aci_get_aci +EXPORT_SYMBOL sound/isa/opti9xx/snd-miro 0x30723a0e snd_aci_cmd +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x09112cd6 snd_sbdsp_create +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x21ae64ae snd_sbmixer_new +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x26197979 snd_sbmixer_suspend +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x2bc066c6 snd_sbdsp_get_byte +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x5bda78a4 snd_sbmixer_write +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x75177ada snd_sbdsp_reset +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x7a704f9d snd_sbmixer_resume +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x933fbcf8 snd_sbdsp_command +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x9f15f516 snd_sbmixer_add_ctl +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0xa7926702 snd_sbmixer_read +EXPORT_SYMBOL sound/isa/sb/snd-sb16-csp 0x3db857e9 snd_sb_csp_new +EXPORT_SYMBOL sound/isa/sb/snd-sb16-dsp 0x32ed6ab8 snd_sb16dsp_pcm +EXPORT_SYMBOL sound/isa/sb/snd-sb16-dsp 0x614e87d7 snd_sb16dsp_configure +EXPORT_SYMBOL sound/isa/sb/snd-sb16-dsp 0x99fc0b51 snd_sb16dsp_get_pcm_ops +EXPORT_SYMBOL sound/isa/sb/snd-sb16-dsp 0xe0b3f690 snd_sb16dsp_interrupt +EXPORT_SYMBOL sound/isa/sb/snd-sb8-dsp 0xb1bffca6 snd_sb8dsp_midi +EXPORT_SYMBOL sound/isa/sb/snd-sb8-dsp 0xe3cd365a snd_sb8dsp_pcm +EXPORT_SYMBOL sound/isa/sb/snd-sb8-dsp 0xe41e263c snd_sb8dsp_midi_interrupt +EXPORT_SYMBOL sound/isa/sb/snd-sb8-dsp 0xe48d1d10 snd_sb8dsp_interrupt +EXPORT_SYMBOL sound/isa/sb/snd-sbawe 0x012cf509 snd_emu8000_update_chorus_mode +EXPORT_SYMBOL sound/isa/sb/snd-sbawe 0x13323641 snd_emu8000_load_reverb_fx +EXPORT_SYMBOL sound/isa/sb/snd-sbawe 0x15503ecc snd_emu8000_update_reverb_mode +EXPORT_SYMBOL sound/isa/sb/snd-sbawe 0x38c30343 snd_emu8000_peek +EXPORT_SYMBOL sound/isa/sb/snd-sbawe 0x4728e501 snd_emu8000_peek_dw +EXPORT_SYMBOL sound/isa/sb/snd-sbawe 0x4b0fef37 snd_emu8000_init_fm +EXPORT_SYMBOL sound/isa/sb/snd-sbawe 0x5a01d84e snd_emu8000_load_chorus_fx +EXPORT_SYMBOL sound/isa/sb/snd-sbawe 0x5a080c72 snd_emu8000_poke_dw +EXPORT_SYMBOL sound/isa/sb/snd-sbawe 0xb5a0fe5a snd_emu8000_dma_chan +EXPORT_SYMBOL sound/isa/sb/snd-sbawe 0xbe1098f1 snd_emu8000_update_equalizer +EXPORT_SYMBOL sound/isa/sb/snd-sbawe 0xc7d4fd4e snd_emu8000_poke +EXPORT_SYMBOL sound/isa/wss/snd-wss-lib 0x0c4d2f11 snd_wss_pcm +EXPORT_SYMBOL sound/isa/wss/snd-wss-lib 0x0e5a8986 snd_wss_mce_up +EXPORT_SYMBOL sound/isa/wss/snd-wss-lib 0x23806ffc snd_wss_create +EXPORT_SYMBOL sound/isa/wss/snd-wss-lib 0x2605a766 snd_wss_get_single +EXPORT_SYMBOL sound/isa/wss/snd-wss-lib 0x2636c95d snd_wss_get_double +EXPORT_SYMBOL sound/isa/wss/snd-wss-lib 0x3c68b455 snd_wss_chip_id +EXPORT_SYMBOL sound/isa/wss/snd-wss-lib 0x3e03d1ab snd_cs4236_ext_out +EXPORT_SYMBOL sound/isa/wss/snd-wss-lib 0x51419bd9 snd_cs4236_ext_in +EXPORT_SYMBOL sound/isa/wss/snd-wss-lib 0x550f4cba snd_wss_timer +EXPORT_SYMBOL sound/isa/wss/snd-wss-lib 0x5742b10c snd_wss_in +EXPORT_SYMBOL sound/isa/wss/snd-wss-lib 0x5cc28e54 snd_wss_mixer +EXPORT_SYMBOL sound/isa/wss/snd-wss-lib 0x7b202637 snd_wss_interrupt +EXPORT_SYMBOL sound/isa/wss/snd-wss-lib 0x7e5807d2 snd_wss_put_double +EXPORT_SYMBOL sound/isa/wss/snd-wss-lib 0x7e6b69e9 snd_wss_put_single +EXPORT_SYMBOL sound/isa/wss/snd-wss-lib 0x8f87bf3f snd_wss_overrange +EXPORT_SYMBOL sound/isa/wss/snd-wss-lib 0xd2e3fc13 snd_wss_get_pcm_ops +EXPORT_SYMBOL sound/isa/wss/snd-wss-lib 0xd681b2bb snd_wss_info_double +EXPORT_SYMBOL sound/isa/wss/snd-wss-lib 0xe5312135 snd_wss_out +EXPORT_SYMBOL sound/isa/wss/snd-wss-lib 0xe5ef89bb snd_wss_info_single +EXPORT_SYMBOL sound/isa/wss/snd-wss-lib 0xed790970 snd_wss_mce_down +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x177d744b snd_ac97_pcm_close +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x378ef926 snd_ac97_write_cache +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x46cd2ce1 snd_ac97_update +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x48445ff8 snd_ac97_get_short_name +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x4901b703 snd_ac97_tune_hardware +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x4e57dadc snd_ac97_set_rate +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x5b22f585 snd_ac97_suspend +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x6c287971 snd_ac97_read +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x7ca9926a snd_ac97_update_bits +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x919644c8 snd_ac97_pcm_assign +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x9306c13c snd_ac97_resume +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xac48bec9 snd_ac97_write +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xc104cc86 snd_ac97_update_power +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xcc61505e snd_ac97_pcm_double_rate_rules +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xdc1004f0 snd_ac97_bus +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xe4c6eb7e snd_ac97_pcm_open +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xf4451772 snd_ac97_mixer +EXPORT_SYMBOL sound/pci/asihpi/snd-asihpi 0xdddc7b40 hpi_send_recv +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x07c8e7d0 snd_emu10k1_synth_free +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x0802181e snd_emu10k1_voice_alloc +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x4788fb7a snd_emu10k1_ptr_read +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x81d76844 snd_emu10k1_voice_free +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x9020f733 snd_emu10k1_synth_bzero +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x990f98bb snd_emu10k1_ptr_write +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xd0c66b70 snd_emu10k1_memblk_map +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xdbeb36e2 snd_emu10k1_synth_copy_from_user +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xe63cf281 snd_emu10k1_synth_alloc +EXPORT_SYMBOL sound/pci/ice1712/snd-ice17xx-ak4xxx 0x8a98e95d snd_ice1712_akm4xxx_init +EXPORT_SYMBOL sound/pci/ice1712/snd-ice17xx-ak4xxx 0x948f3868 snd_ice1712_akm4xxx_free +EXPORT_SYMBOL sound/pci/ice1712/snd-ice17xx-ak4xxx 0x9c26e7d1 snd_ice1712_akm4xxx_build_controls +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x185a8b79 oxygen_write32_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x1adf5833 oxygen_write8 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x1b5ab42c oxygen_write8_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x25c1581f oxygen_write32 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x2ba5b85e oxygen_reset_uart +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x53f66219 oxygen_write_ac97 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x5affb7ec oxygen_read8 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x5c751551 oxygen_write_uart +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x6064df19 oxygen_write_spi +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x6cb6b405 oxygen_write16_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x7f16eac1 oxygen_write_ac97_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x854fe7f4 oxygen_read_ac97 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x95f195be oxygen_write16 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xaec8bd54 oxygen_read16 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xb2601b17 oxygen_write_i2c +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xb95eecca oxygen_update_dac_routing +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xdeb18ca2 oxygen_read32 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xee862273 oxygen_pci_probe +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xf2b7edcc oxygen_pci_remove +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xf69a55e9 oxygen_pci_shutdown +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xf6e25314 oxygen_pci_pm +EXPORT_SYMBOL sound/pci/trident/snd-trident 0x56c6024e snd_trident_start_voice +EXPORT_SYMBOL sound/pci/trident/snd-trident 0x65943640 snd_trident_free_voice +EXPORT_SYMBOL sound/pci/trident/snd-trident 0x8ce98232 snd_trident_stop_voice +EXPORT_SYMBOL sound/pci/trident/snd-trident 0xefb98980 snd_trident_write_voice_regs +EXPORT_SYMBOL sound/pci/trident/snd-trident 0xfbe0d2dc snd_trident_alloc_voice +EXPORT_SYMBOL sound/soc/codecs/snd-soc-tlv320aic23 0x6043e4bd tlv320aic23_regmap +EXPORT_SYMBOL sound/soc/codecs/snd-soc-tlv320aic23 0xdb604f49 tlv320aic23_probe +EXPORT_SYMBOL sound/soc/intel/common/snd-soc-sst-dsp 0xa97ea28c sst_dma_new +EXPORT_SYMBOL sound/soc/intel/common/snd-soc-sst-dsp 0xdc045797 sst_dma_free +EXPORT_SYMBOL sound/soc/snd-soc-core 0x4d17cfbb snd_soc_alloc_ac97_codec +EXPORT_SYMBOL sound/soundcore 0x2abdec87 register_sound_special +EXPORT_SYMBOL sound/soundcore 0x319c93b2 sound_class +EXPORT_SYMBOL sound/soundcore 0x7afc9d8a unregister_sound_mixer +EXPORT_SYMBOL sound/soundcore 0x99c95fa5 unregister_sound_special +EXPORT_SYMBOL sound/soundcore 0xb9c61025 register_sound_special_device +EXPORT_SYMBOL sound/soundcore 0xcd083b10 unregister_sound_dsp +EXPORT_SYMBOL sound/soundcore 0xcf74d894 register_sound_midi +EXPORT_SYMBOL sound/soundcore 0xd20d9d99 register_sound_mixer +EXPORT_SYMBOL sound/soundcore 0xf70d26f9 register_sound_dsp +EXPORT_SYMBOL sound/soundcore 0xfdab6de3 unregister_sound_midi +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x655cb202 snd_sf_linear_to_log +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x95e5e196 snd_emux_register +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0xb3db34bf snd_emux_new +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0xdbd0dd28 snd_emux_terminate_all +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0xe0025186 snd_emux_lock_voice +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0xe09085aa snd_emux_unlock_voice +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0xf69a662a snd_emux_free +EXPORT_SYMBOL sound/synth/snd-util-mem 0x0aaf8cdc __snd_util_mem_alloc +EXPORT_SYMBOL sound/synth/snd-util-mem 0x17a6e959 snd_util_mem_alloc +EXPORT_SYMBOL sound/synth/snd-util-mem 0x392f9021 __snd_util_memblk_new +EXPORT_SYMBOL sound/synth/snd-util-mem 0x3af62811 snd_util_mem_avail +EXPORT_SYMBOL sound/synth/snd-util-mem 0x427ae309 snd_util_memhdr_new +EXPORT_SYMBOL sound/synth/snd-util-mem 0x45adf9f0 __snd_util_mem_free +EXPORT_SYMBOL sound/synth/snd-util-mem 0x6bb159dd snd_util_memhdr_free +EXPORT_SYMBOL sound/synth/snd-util-mem 0x8f4dc38a snd_util_mem_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 0xf3cbea71 snd_usbmidi_create +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x002d778d VBoxGuest_RTMpNotificationDeregister +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x0064d4f7 VBoxGuest_RTSemFastMutexCreate +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x00712528 VBoxGuest_RTAssertMsg2Weak +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x01795170 VBoxGuest_RTMpGetCoreCount +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x0276540a VBoxGuest_RTLogPrintfV +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x03d8513f VBoxGuest_RTThreadSetName +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x05626dc7 VBoxGuest_RTR0MemObjReserveKernelTag +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x0665bcaa VBoxGuest_RTAssertSetMayPanic +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x0823cb2f VBoxGuest_RTMemAllocTag +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x08b98b3c VBoxGuest_RTMpCpuIdFromSetIndex +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x08d7a261 VBoxGuest_RTThreadSelfName +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x09458185 VBoxGuest_RTR0MemAreKrnlAndUsrDifferent +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x0b14ec2c VBoxGuest_RTThreadCreateF +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x0b628628 VBoxGuest_RTSemEventMultiDestroy +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x0b94344b VBoxGuest_g_pszRTAssertExpr +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x0d1abebe VBoxGuest_RTLogFlush +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x0dfb68c6 VBoxGuest_RTSemEventWait +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x0e1a390f VBoxGuest_RTStrToInt8Full +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x104391d1 VBoxGuest_RTSemMutexDestroy +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x113a02d9 VBoxGuest_RTMpOnPair +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x127e9d01 VBoxGuest_RTTimerRequestSystemGranularity +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x143fba5b VBoxGuest_RTThreadPreemptDisable +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x14835127 VBoxGuest_RTAssertMsg2AddWeak +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x16d72922 VBoxGuest_RTR0MemObjIsMapping +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x17d84704 VBoxGuest_RTSpinlockCreate +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x187c16e2 VBoxGuest_RTLogCreate +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x19087f6f VBoxGuest_RTSemEventMultiWaitEx +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x1a79fedb VBoxGuest_RTSemMutexRequestNoResumeDebug +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x1abe7e93 VBoxGuest_RTThreadGetNative +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x1ad481e4 VBoxGuest_RTLogLogger +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x1d042132 VBoxGuest_RTMemContFree +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x1e7216d7 VBoxGuest_RTThreadFromNative +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x1efa8169 VBoxGuest_RTThreadUserSignal +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x1f152547 VBoxGuest_RTMpGetMaxCpuId +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x1fc40aab VBoxGuest_RTR0MemObjReserveUserTag +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x21b1ee43 VBoxGuest_RTThreadSleepNoLog +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x221205d1 VBoxGuest_RTThreadSetType +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x2280771d VBoxGuestIDCCall +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x22bd51c7 VBoxGuest_RTErrConvertToErrno +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x23a552fd VBoxGuest_RTMpIsCpuOnline +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x246391eb VBoxGuest_RTStrToUInt16Full +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x25938e5f VBoxGuest_RTLogWriteDebugger +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x267da4c4 VBoxGuest_RTThreadIsMain +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x27740cb3 VBoxGuest_RTStrToUInt8Ex +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x2902013c VBoxGuest_RTTimerGetSystemGranularity +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x29066860 VBoxGuest_RTStrConvertHexBytes +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x2972116c VBoxGuest_RTThreadPreemptIsEnabled +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x29bf3685 VBoxGuest_RTThreadGetName +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x2b015c38 VBoxGuest_RTMpOnAll +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x2b5f52a8 VBoxGuest_RTMpCurSetIndexAndId +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x2bad2a8e VBoxGuest_RTStrToInt16 +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x2c5b3002 VBoxGuest_RTErrConvertFromErrno +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x2d27c026 VBoxGuest_RTSemEventWaitExDebug +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x2e136d3c VBoxGuest_RTR0MemObjAllocPhysExTag +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x309de102 VBoxGuest_RTMpCpuId +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x3519743a VBoxGuest_RTMpCurSetIndex +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x3534ed69 VBoxGuest_RTMemAllocVarTag +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x353b64a3 VBoxGuest_RTSemMutexRelease +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x353e5a81 VBoxGuest_RTSemEventMultiReset +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x365d44f1 VBoxGuest_RTR0MemObjMapKernelExTag +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x36e780e0 VBoxGuest_RTStrToUInt8Full +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x37b2d47a VBoxGuest_RTStrPrintf +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x39df70a0 VBoxGuest_RTStrPrintfV +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x3a29bcdb VBoxGuest_RTThreadIsInitialized +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x3a77155a VBoxGuest_RTMpOnPairIsConcurrentExecSupported +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x3b0a3d87 VBoxGuest_RTMemAllocZVarTag +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x3d00f113 VBoxGuest_g_u32RTAssertLine +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x3ed3a918 VBoxGuest_RTAssertMsg1 +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x3f452f12 VBoxGuest_RTR0MemObjAllocPageTag +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x3f8d56e7 VBoxGuest_RTMemDupTag +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x4002b8b4 VBoxGuest_RTTimeSpecToString +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x405901ff VBoxGuest_RTStrFormatTypeRegister +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x428e3456 VBoxGuest_RTR0Term +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x428eb5ba VBoxGuest_RTMemTmpAllocZTag +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x42c5bff2 VBoxGuest_RTLogRelLogger +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x432b6724 VBoxGuest_RTR0MemObjAllocPhysNCTag +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x433ceadb VBoxGuest_RTLogWriteStdOut +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x4453e900 VBoxGuest_RTR0MemObjProtect +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x4484f9ee VBoxGuest_RTTimerStart +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x44ce618e VBoxGuest_RTMemAllocExTag +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x453e64fb VBoxGuest_RTSemEventMultiSignal +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x45933412 VBoxGuest_RTStrToInt8Ex +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x4597652f VBoxGuest_RTStrFormat +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x45d332ae VBoxGuest_RTMemReallocTag +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x46b36f60 VBoxGuest_RTTimeSpecFromString +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x4819f15e VBoxGuest_RTThreadWait +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x48487b79 VBoxGuest_RTLogDefaultInstanceEx +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x4983ea42 VBoxGuest_RTAssertShouldPanic +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x4aca506e VBoxGuest_RTStrToUInt32Ex +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x4d0161ca VBoxGuest_RTLogBackdoorPrintf +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x4d47859f VBoxGuest_RTR0MemKernelCopyTo +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x4e6d6986 VBoxGuest_RTStrToUInt16 +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x4e7faa59 VBoxGuest_RTStrToInt64 +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x503f488a VBoxGuest_RTLogRelSetDefaultInstance +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x5045b702 VBoxGuest_RTLogGetDestinations +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x5118e8ae VBoxGuest_RTStrToUInt64 +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x52041f46 VBoxGuest_RTThreadPreemptIsPossible +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x53602f45 VBoxGuest_RTMemTmpFree +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x539dd662 VBoxGuest_RTTimeSystemMilliTS +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x53b772da VBoxGuest_RTAssertSetQuiet +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x543527dc VBoxGuest_RTLogWriteStdErr +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x5460fc01 VBoxGuest_RTTimeImplode +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x54abe5d4 VBoxGuest_RTSemMutexRequestNoResume +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x54e45046 VBoxGuest_RTR0MemObjAllocLowTag +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x55c48692 VBoxGuest_RTMpIsCpuWorkPending +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x57280c42 VBoxGuest_RTR0MemExecDonate +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x57406d20 VBoxGuest_RTR0ProcHandleSelf +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x5929b954 VBoxGuest_RTPowerSignalEvent +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x5936a317 VBoxGuest_RTR0MemObjAddress +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x59390acb VBoxGuest_RTTimeIsLeapYear +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x5ad3216a VBoxGuest_RTR0MemKernelIsValidAddr +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x5b0eaa4d VBoxGuest_RTThreadWaitNoResume +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x5c15981f VBoxGuest_RTMemContAlloc +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x5ca67994 VBoxGuest_RTLogDestinations +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x613042f7 VBoxGuest_RTR0MemObjMapUserTag +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x622a261f VBoxGuest_RTPowerNotificationRegister +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x622bf330 VBoxGuest_RTMemAllocZTag +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x62fd45a8 VBoxGuest_RTTimeNanoTS +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x63ba9fd2 VBoxGuest_RTLogGetDefaultInstance +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x64655cd4 VBoxGuest_RTSemEventMultiWaitExDebug +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x64af2463 VBoxGuest_RTStrToInt32 +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x650e77e8 VBoxGuest_RTMpGetCount +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x651c778b VBoxGuest_RTSemEventMultiCreate +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x6549a3e0 VBoxGuest_RTTimeFromString +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x65b04e5d VBoxGuest_RTStrToUInt64Full +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x687ae6ac VBoxGuest_RTStrToUInt64Ex +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x6a930d21 VBoxGuest_RTTimerCanDoHighResolution +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x6bcedab4 VBoxGuest_RTThreadPreemptIsPending +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x6c17021e VBoxGuest_RTThreadUserReset +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x6c2df755 VBoxGuest_RTAssertMsg1Weak +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x6ca5b4ec VBoxGuest_RTSemEventMultiGetResolution +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x6f8ed216 VBoxGuest_RTStrToUInt16Ex +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x6fd2e761 VBoxGuest_RTTimeNormalize +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x713f25d5 VBoxGuestIDCClose +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x715699a0 VBoxGuest_RTSpinlockDestroy +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x72d1c8f4 VBoxGuestIDCOpen +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x73a23c8b VBoxGuest_RTLogRelPrintf +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x73f65247 VBoxGuest_RTStrToInt32Full +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x744623d2 VBoxGuest_RTSemMutexCreate +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x753d3a3a VBoxGuest_RTLogFormatV +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x755479c2 VBoxGuest_RTR0MemObjLockKernelTag +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x75bee68e VBoxGuest_RTThreadIsSelfKnown +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x76608be1 VBoxGuest_RTSemSpinMutexCreate +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x766a8684 VBoxGuest_RTThreadCreateV +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x76b885fb VBoxGuest_RTLogGetDefaultInstanceEx +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x76bb35b9 VBoxGuest_RTLogLoggerEx +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x76dbecb7 VBoxGuest_RTProcSelf +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x77248ef3 VBoxGuest_RTR0MemObjLockUserTag +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x7841b10d VBoxGuest_RTMpIsCpuPossible +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x78ad2401 VBoxGuest_RTStrToInt8 +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x797e701f VBoxGuest_RTLogCreateEx +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x79aefc0b VBoxGuest_RTTimeNow +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x7ac53b51 VBoxGuest_RTR0MemUserCopyFrom +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x7ae3b63b VBoxGuest_RTStrToUInt32 +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x7b423f4c VBoxGuest_RTLogGetFlags +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x7cef940f VBoxGuest_RTStrToUInt8 +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x80162938 VBoxGuest_RTStrFormatV +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x8229caac VBoxGuest_RTThreadUserWait +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x847577ac VBoxGuest_RTMpGetOnlineCount +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x84e86094 VBoxGuest_RTStrPrintfExV +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x854806f2 VBoxGuest_RTSpinlockAcquire +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x8587f091 VBoxGuest_RTR0MemUserCopyTo +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x85afce7f VBoxGuest_RTMpNotificationRegister +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x867199c4 VBoxGuest_RTMpPokeCpu +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x86f9f023 VBoxGuest_RTSemFastMutexRequest +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x87abe8dd VBoxGuest_RTR0MemObjSize +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x8ab21a95 VBoxGuest_RTSemSpinMutexDestroy +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x8b4fd3ef VBoxGuest_RTTimeSystemNanoTS +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x8ff5c8e5 VBoxGuest_RTSemEventMultiWaitNoResume +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x937cd6a2 VBoxGuest_RTLogComPrintf +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x9474d99a VBoxGuest_RTSemFastMutexDestroy +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x951fbe81 VBoxGuest_RTLogLoggerV +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x953b2ba4 VBoxGuest_RTLogSetDefaultInstance +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x983f332c VBoxGuest_RTSemSpinMutexRequest +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x9853901a VBoxGuest_RTAssertMsg2Add +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x98a8f55f VBoxGuest_RTMpGetPresentCoreCount +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x9909ff3d VBoxGuest_g_pszRTAssertFunction +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x993cc778 VBoxGuest_RTLogRelSetBuffering +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x99ee476f VBoxGuest_RTThreadYield +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x9b02b021 VBoxGuest_RTThreadSleep +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x9be73ec4 VBoxGuest_RTMpCpuIdToSetIndex +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x9dc75797 VBoxGuest_RTLogBackdoorPrintfV +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x9e97ef59 VBoxGuest_RTSemEventWaitNoResume +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0x9eb3db26 VBoxGuest_RTR0MemObjAllocPhysTag +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xa21775d1 VBoxGuest_RTSemFastMutexRelease +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xa2c23601 VBoxGuest_RTR0MemObjAllocContTag +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xa3ff74bf VBoxGuest_RTStrToInt16Full +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xa52847a2 VBoxGuest_RTR0MemUserIsValidAddr +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xa5655a80 VBoxGuest_RTTimerReleaseSystemGranularity +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xa582aeba VBoxGuest_RTMemExecFree +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xa5f0f1ad VBoxGuest_RTAssertMsg2 +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xa61aa915 VBoxGuest_RTR0MemObjFree +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xa6209fc7 VBoxGuest_RTLogPrintf +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xa74258ab VBoxGuest_RTTimeExplode +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xa8a47d40 VBoxGuest_RTLogLoggerExV +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xaaab8c57 VBoxGuest_RTLogRelGetDefaultInstanceEx +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xaadc0b5d VBoxGuest_RTTimerChangeInterval +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xab5ee692 VBoxGuest_RTLogWriteUser +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xab871924 VBoxGuest_RTThreadPreemptIsPendingTrusty +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xacaac41d VBoxGuest_g_szRTAssertMsg1 +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xadb5cc54 VBoxGuest_RTStrFormatTypeSetUser +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xae21ae1f VBoxGuest_RTThreadCreate +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xb2f248c6 VBoxGuest_RTStrCopyP +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xb33ca348 VBoxGuest_RTLogRelPrintfV +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xb3f592b9 VBoxGuest_RTThreadNativeSelf +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xb4227efb VBoxGuest_RTTimeToString +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xb42ea0e3 VBoxGuest_g_pszRTAssertFile +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xb5676d46 VBoxGuest_RTLogSetCustomPrefixCallback +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xb5ec2977 VBoxGuest_RTStrToInt16Ex +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xb6fc848a VBoxGuest_RTStrToUInt32Full +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xb9a86152 VBoxGuest_RTStrFormatNumber +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xb9e03c35 VBoxGuest_RTTimerStop +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xba349142 VBoxGuest_RTR0MemObjEnterPhysTag +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xbaa97421 VBoxGuest_g_szRTAssertMsg2 +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xbaf6967f VBoxGuest_RTR0MemObjGetPagePhysAddr +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xbba29a48 VBoxGuest_RTR0MemObjAddressR3 +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xbbbc6e84 VBoxGuest_RTSemMutexRequest +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xbbccb0c7 VBoxGuest_RTTimeMilliTS +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xbc7fbd2a VBoxGuest_RTLogFlushRC +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xbcd1b6de VBoxGuest_RTSemSpinMutexRelease +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xbd0aa67d VBoxGuest_RTLogFlags +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xbeed82c5 VBoxGuest_RTSemEventDestroy +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xbf5b421e VBoxGuest_RTLogComPrintfV +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xc272f283 VBoxGuest_RTLogGroupSettings +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xc2e0f25a VBoxGuest_RTMemTmpAllocTag +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xc312f533 VBoxGuest_RTMpIsCpuPresent +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xc4b8857d VBoxGuest_RTThreadPreemptRestore +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xc4c265c6 VBoxGuest_RTMpGetPresentCount +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xc5151dcf VBoxGuest_RTLogDestroy +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xc56f27ff VBoxGuest_RTR0Init +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xc57a9c9b VBoxGuest_RTStrToInt32Ex +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xc636859e VBoxGuest_RTThreadUserWaitNoResume +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xc6b243bf VBoxGuest_RTTimerDestroy +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xc7601bb1 VBoxGuest_RTSemEventMultiWait +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xc9978a5f VBoxGuest_RTAssertMsg2V +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xcb6463c6 VBoxGuest_RTStrFormatTypeDeregister +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xcdbc5e5d VBoxGuest_RTSemEventCreate +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xcdd40e5b VBoxGuest_RTMpOnOthers +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xceb98390 VBoxGuest_RTMpOnSpecific +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xd032523c VBoxGuest_RTThreadGetType +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xd1c8b171 VBoxGuest_RTStrCopyEx +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xd2ebb507 VBoxGuest_RTMpGetPresentSet +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xd38c5d55 VBoxGuest_RTLogCloneRC +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xd4f35c7d VBoxGuest_RTSemSpinMutexTryRequest +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xd63c8527 VBoxGuest_RTMemFreeEx +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xd76ab832 VBoxGuest_RTMemDupExTag +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xd8730925 VBoxGuest_RTLogRelLoggerV +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xdd31359f VBoxGuest_RTLogSetDefaultInstanceThread +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xdd699fb2 VBoxGuest_RTSemMutexIsOwned +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xde296aea VBoxGuest_RTAssertAreQuiet +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xdead7a1c VBoxGuest_RTLogSetBuffering +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xdfaa7e65 VBoxGuest_RTSemEventSignal +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xe0453bfd VBoxGuest_RTTimerCreateEx +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xe0afcea8 VBoxGuest_RTR0AssertPanicSystem +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xe0ebf12c VBoxGuest_RTAssertMsg2WeakV +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xe16047ab VBoxGuest_RTLogDefaultInstance +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xe19acf09 VBoxGuest_RTStrCopy +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xe208c712 VBoxGuest_RTLogGetGroupSettings +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xe2aa3ed6 VBoxGuest_RTR0MemKernelCopyFrom +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xe4104f8b VBoxGuest_RTLogFlushToLogger +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xe46f3670 VBoxGuest_RTLogRelGetDefaultInstance +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xe47b5364 VBoxGuest_RTSemEventGetResolution +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xe5908cc3 VBoxGuest_RTStrToInt64Full +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xe59fc65c VBoxGuest_RTLogWriteCom +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xe6a00917 VBoxGuest_RTThreadIsInInterrupt +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xebbe4bc3 VBoxGuest_RTThreadIsSelfAlive +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xecd69ee8 VBoxGuest_RTAssertMsg2AddWeakV +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xed0424f7 VBoxGuest_RTMemFree +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xed92363f VBoxGuest_RTR0MemObjMapKernelTag +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xf244ec46 VBoxGuest_RTSemMutexRequestDebug +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xf2e6e2c5 VBoxGuest_RTStrPrintfEx +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xf3cd37e7 VBoxGuest_RTSemEventWaitEx +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xf450a3d4 VBoxGuest_RTLogCreateExV +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xf722f7d1 VBoxGuest_RTMemExecAllocTag +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xf7c384ae VBoxGuest_RTStrToInt64Ex +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xf81b13f5 VBoxGuest_RTPowerNotificationDeregister +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xfb5ca767 VBoxGuest_RTSpinlockRelease +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xfcfe8381 VBoxGuest_RTMpGetOnlineSet +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xfe4fce41 VBoxGuest_RTAssertMayPanic +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xfe5c0dc7 VBoxGuest_RTAssertMsg2AddV +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xfec59082 VBoxGuest_RTLogDumpPrintfV +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xfec8da5c VBoxGuest_RTMpOnAllIsConcurrentSafe +EXPORT_SYMBOL ubuntu/vbox/vboxguest/vboxguest 0xffc16d99 VBoxGuest_RTMpGetSet +EXPORT_SYMBOL vmlinux 0x0039dbe1 scsi_device_put +EXPORT_SYMBOL vmlinux 0x004ec071 tc_classify +EXPORT_SYMBOL vmlinux 0x0053cd7a sync_inode_metadata +EXPORT_SYMBOL vmlinux 0x0064b664 pci_remove_bus +EXPORT_SYMBOL vmlinux 0x006714b9 vme_irq_handler +EXPORT_SYMBOL vmlinux 0x0067acc2 truncate_inode_pages +EXPORT_SYMBOL vmlinux 0x007d56c5 dquot_quota_sync +EXPORT_SYMBOL vmlinux 0x008fda81 i2c_smbus_write_byte +EXPORT_SYMBOL vmlinux 0x00a74a8b force_sig +EXPORT_SYMBOL vmlinux 0x00a7d898 skb_unlink +EXPORT_SYMBOL vmlinux 0x00a90038 mmc_read_bkops_status +EXPORT_SYMBOL vmlinux 0x00b8c3a7 mempool_alloc +EXPORT_SYMBOL vmlinux 0x00c60273 mipi_dsi_dcs_set_display_on +EXPORT_SYMBOL vmlinux 0x00d7e722 vme_lm_count +EXPORT_SYMBOL vmlinux 0x00e2cd83 __vfs_write +EXPORT_SYMBOL vmlinux 0x00e9ae2b security_task_getsecid +EXPORT_SYMBOL vmlinux 0x00f94e14 scsi_register_interface +EXPORT_SYMBOL vmlinux 0x0101d5b1 ip_idents_reserve +EXPORT_SYMBOL vmlinux 0x0101e34d sk_stream_kill_queues +EXPORT_SYMBOL vmlinux 0x01038a58 d_move +EXPORT_SYMBOL vmlinux 0x01118c54 blk_queue_bounce_limit +EXPORT_SYMBOL vmlinux 0x01139ffc max_mapnr +EXPORT_SYMBOL vmlinux 0x0139b504 cpu_current_top_of_stack +EXPORT_SYMBOL vmlinux 0x013b555d drop_nlink +EXPORT_SYMBOL vmlinux 0x0149dc9e pnp_release_card_device +EXPORT_SYMBOL vmlinux 0x01509d4b elv_register_queue +EXPORT_SYMBOL vmlinux 0x016377b8 dqget +EXPORT_SYMBOL vmlinux 0x016d6c8c __sb_end_write +EXPORT_SYMBOL vmlinux 0x016e5c2a mod_timer +EXPORT_SYMBOL vmlinux 0x019428e8 vmap +EXPORT_SYMBOL vmlinux 0x01a4079c dquot_drop +EXPORT_SYMBOL vmlinux 0x01a7f084 pci_stop_and_remove_bus_device +EXPORT_SYMBOL vmlinux 0x01cbb42c md_check_no_bitmap +EXPORT_SYMBOL vmlinux 0x01d46f65 devfreq_add_governor +EXPORT_SYMBOL vmlinux 0x01d7b5e1 pci_get_subsys +EXPORT_SYMBOL vmlinux 0x0211d9d9 __bio_clone_fast +EXPORT_SYMBOL vmlinux 0x02124474 ip_send_check +EXPORT_SYMBOL vmlinux 0x021b1b81 abx500_get_chip_id +EXPORT_SYMBOL vmlinux 0x0237b57a arch_unregister_cpu +EXPORT_SYMBOL vmlinux 0x0241527e __test_set_page_writeback +EXPORT_SYMBOL vmlinux 0x02517c68 tty_port_open +EXPORT_SYMBOL vmlinux 0x02649054 security_sock_rcv_skb +EXPORT_SYMBOL vmlinux 0x0274dc2b netif_get_num_default_rss_queues +EXPORT_SYMBOL vmlinux 0x0283b8a0 phy_register_fixup +EXPORT_SYMBOL vmlinux 0x029444f0 native_read_tsc +EXPORT_SYMBOL vmlinux 0x02a18c74 nf_conntrack_destroy +EXPORT_SYMBOL vmlinux 0x02a6ce5a crc16_table +EXPORT_SYMBOL vmlinux 0x02ab277b __dev_get_by_flags +EXPORT_SYMBOL vmlinux 0x02da82b8 devm_gpiod_put_array +EXPORT_SYMBOL vmlinux 0x02dfd374 tcf_exts_validate +EXPORT_SYMBOL vmlinux 0x02e8d834 __devm_gpiod_get_index_optional +EXPORT_SYMBOL vmlinux 0x02ea111e scsi_driverbyte_string +EXPORT_SYMBOL vmlinux 0x02ee26c1 free_pages_exact +EXPORT_SYMBOL vmlinux 0x02f57984 __pskb_pull_tail +EXPORT_SYMBOL vmlinux 0x0334da4e scsi_command_size_tbl +EXPORT_SYMBOL vmlinux 0x0342181b mapping_tagged +EXPORT_SYMBOL vmlinux 0x03592ea0 security_unix_stream_connect +EXPORT_SYMBOL vmlinux 0x0362d812 tcp_v4_destroy_sock +EXPORT_SYMBOL vmlinux 0x0366307a console_suspend_enabled +EXPORT_SYMBOL vmlinux 0x0367f83c skb_make_writable +EXPORT_SYMBOL vmlinux 0x037a0cba kfree +EXPORT_SYMBOL vmlinux 0x03a7c9ab bd_set_size +EXPORT_SYMBOL vmlinux 0x03c5f305 mmc_can_trim +EXPORT_SYMBOL vmlinux 0x03dd01f2 sock_dequeue_err_skb +EXPORT_SYMBOL vmlinux 0x03f7590e __inet_hash +EXPORT_SYMBOL vmlinux 0x03fd2571 vm_unmap_ram +EXPORT_SYMBOL vmlinux 0x0401291f alloc_fddidev +EXPORT_SYMBOL vmlinux 0x0413bb6b uart_remove_one_port +EXPORT_SYMBOL vmlinux 0x04150b2d cpufreq_global_kobject +EXPORT_SYMBOL vmlinux 0x0422fe4a inet_csk_timer_bug_msg +EXPORT_SYMBOL vmlinux 0x0426ba24 idr_for_each +EXPORT_SYMBOL vmlinux 0x0434ffe0 ip_check_defrag +EXPORT_SYMBOL vmlinux 0x04482cdb __refrigerator +EXPORT_SYMBOL vmlinux 0x04578710 __brelse +EXPORT_SYMBOL vmlinux 0x0463f403 pagecache_get_page +EXPORT_SYMBOL vmlinux 0x04828310 xfrm_policy_delete +EXPORT_SYMBOL vmlinux 0x0487f831 fb_find_best_display +EXPORT_SYMBOL vmlinux 0x049147e7 path_put +EXPORT_SYMBOL vmlinux 0x049f2fbe sync_blockdev +EXPORT_SYMBOL vmlinux 0x04b5281c sock_no_sendpage +EXPORT_SYMBOL vmlinux 0x04ca1c46 mb_cache_shrink +EXPORT_SYMBOL vmlinux 0x04d8c750 release_perfctr_nmi +EXPORT_SYMBOL vmlinux 0x04ea56f9 _kstrtol +EXPORT_SYMBOL vmlinux 0x04f75747 find_get_pages_contig +EXPORT_SYMBOL vmlinux 0x04f9e3e8 tty_unthrottle +EXPORT_SYMBOL vmlinux 0x04ff64bb dev_mc_add_excl +EXPORT_SYMBOL vmlinux 0x05036baa inode_add_rsv_space +EXPORT_SYMBOL vmlinux 0x050877b9 dmi_first_match +EXPORT_SYMBOL vmlinux 0x05240ee7 percpu_counter_batch +EXPORT_SYMBOL vmlinux 0x05251eaf devfreq_remove_governor +EXPORT_SYMBOL vmlinux 0x0528ca5e icmp_send +EXPORT_SYMBOL vmlinux 0x052d8bca bio_integrity_alloc +EXPORT_SYMBOL vmlinux 0x05385f88 crypto_sha1_update +EXPORT_SYMBOL vmlinux 0x0542ec05 audit_log_start +EXPORT_SYMBOL vmlinux 0x055b967a d_obtain_alias +EXPORT_SYMBOL vmlinux 0x057adc0a pci_select_bars +EXPORT_SYMBOL vmlinux 0x058212a6 netif_wake_subqueue +EXPORT_SYMBOL vmlinux 0x0590d838 dev_get_nest_level +EXPORT_SYMBOL vmlinux 0x05b3067b scsi_print_result +EXPORT_SYMBOL vmlinux 0x05b45ca6 pm860x_set_bits +EXPORT_SYMBOL vmlinux 0x05dd0c6e clkdev_drop +EXPORT_SYMBOL vmlinux 0x05f432ce kunmap_high +EXPORT_SYMBOL vmlinux 0x05f59997 devfreq_monitor_stop +EXPORT_SYMBOL vmlinux 0x061651be strcat +EXPORT_SYMBOL vmlinux 0x06177a3b skb_coalesce_rx_frag +EXPORT_SYMBOL vmlinux 0x062ce059 gen_pool_add_virt +EXPORT_SYMBOL vmlinux 0x0632dea9 blkdev_get_by_path +EXPORT_SYMBOL vmlinux 0x0634100a bitmap_parselist_user +EXPORT_SYMBOL vmlinux 0x0639add8 sock_recvmsg +EXPORT_SYMBOL vmlinux 0x0645d219 blk_rq_map_kern +EXPORT_SYMBOL vmlinux 0x064c70a0 neigh_xmit +EXPORT_SYMBOL vmlinux 0x064f0533 eth_header_cache_update +EXPORT_SYMBOL vmlinux 0x065e379f clear_wb_congested +EXPORT_SYMBOL vmlinux 0x0661a4ea netdev_master_upper_dev_link_private +EXPORT_SYMBOL vmlinux 0x067d8d35 security_release_secctx +EXPORT_SYMBOL vmlinux 0x067d9c6a ip6_find_1stfragopt +EXPORT_SYMBOL vmlinux 0x068c7263 ioremap_cache +EXPORT_SYMBOL vmlinux 0x0695d10c mmc_can_erase +EXPORT_SYMBOL vmlinux 0x06c0dae5 __kernel_fpu_end +EXPORT_SYMBOL vmlinux 0x06ec5cf6 arp_tbl +EXPORT_SYMBOL vmlinux 0x06fe3b14 default_grn +EXPORT_SYMBOL vmlinux 0x070bcd60 padata_alloc +EXPORT_SYMBOL vmlinux 0x0727c4f3 iowrite8 +EXPORT_SYMBOL vmlinux 0x072f901c vme_master_rmw +EXPORT_SYMBOL vmlinux 0x073158f6 devm_input_allocate_device +EXPORT_SYMBOL vmlinux 0x07608604 acpi_get_vendor_resource +EXPORT_SYMBOL vmlinux 0x0782191e fb_firmware_edid +EXPORT_SYMBOL vmlinux 0x07a011f2 always_delete_dentry +EXPORT_SYMBOL vmlinux 0x07a4b576 flex_array_free +EXPORT_SYMBOL vmlinux 0x07a890c8 fb_alloc_cmap +EXPORT_SYMBOL vmlinux 0x07b0f353 ata_scsi_cmd_error_handler +EXPORT_SYMBOL vmlinux 0x07bc5770 bio_integrity_free +EXPORT_SYMBOL vmlinux 0x07c145ce blk_cleanup_queue +EXPORT_SYMBOL vmlinux 0x07cc4a5d printk_timed_ratelimit +EXPORT_SYMBOL vmlinux 0x07d50a24 csum_partial +EXPORT_SYMBOL vmlinux 0x07f0009d tcp_md5_hash_key +EXPORT_SYMBOL vmlinux 0x07f30946 blk_rq_map_sg +EXPORT_SYMBOL vmlinux 0x082c3213 pci_root_buses +EXPORT_SYMBOL vmlinux 0x083eb21c rfkill_unregister +EXPORT_SYMBOL vmlinux 0x08928b90 __nla_put +EXPORT_SYMBOL vmlinux 0x0897287b acpi_disable_all_gpes +EXPORT_SYMBOL vmlinux 0x08a290c8 nf_log_unbind_pf +EXPORT_SYMBOL vmlinux 0x08a611af netlink_ns_capable +EXPORT_SYMBOL vmlinux 0x08b13928 blk_mq_start_request +EXPORT_SYMBOL vmlinux 0x08ba59cf qdisc_warn_nonwc +EXPORT_SYMBOL vmlinux 0x08ea69e7 mipi_dsi_packet_format_is_long +EXPORT_SYMBOL vmlinux 0x090b3bf8 scsi_track_queue_full +EXPORT_SYMBOL vmlinux 0x0912413c dump_trace +EXPORT_SYMBOL vmlinux 0x09321c82 key_task_permission +EXPORT_SYMBOL vmlinux 0x09580deb init_timer_key +EXPORT_SYMBOL vmlinux 0x096564e9 kernel_write +EXPORT_SYMBOL vmlinux 0x098b71c6 fb_dealloc_cmap +EXPORT_SYMBOL vmlinux 0x09926b5e ppp_output_wakeup +EXPORT_SYMBOL vmlinux 0x09bdb87b pci_scan_slot +EXPORT_SYMBOL vmlinux 0x09c55cec schedule_timeout_interruptible +EXPORT_SYMBOL vmlinux 0x09c8eb55 font_vga_8x16 +EXPORT_SYMBOL vmlinux 0x09c97fe0 copy_strings_kernel +EXPORT_SYMBOL vmlinux 0x09d44df9 in_lock_functions +EXPORT_SYMBOL vmlinux 0x09e816a8 seq_printf +EXPORT_SYMBOL vmlinux 0x09e88526 __init_waitqueue_head +EXPORT_SYMBOL vmlinux 0x0a203ce5 mipi_dsi_driver_register_full +EXPORT_SYMBOL vmlinux 0x0a2487e0 unblock_all_signals +EXPORT_SYMBOL vmlinux 0x0a292872 reservation_seqcount_class +EXPORT_SYMBOL vmlinux 0x0a3131f6 strnchr +EXPORT_SYMBOL vmlinux 0x0a373226 crc32_le_shift +EXPORT_SYMBOL vmlinux 0x0a469d23 mfd_clone_cell +EXPORT_SYMBOL vmlinux 0x0a661faa lg_local_unlock +EXPORT_SYMBOL vmlinux 0x0a71a580 scsi_print_sense_hdr +EXPORT_SYMBOL vmlinux 0x0a770832 register_memory_notifier +EXPORT_SYMBOL vmlinux 0x0a962676 dev_get_phys_port_id +EXPORT_SYMBOL vmlinux 0x0a974876 blk_pre_runtime_suspend +EXPORT_SYMBOL vmlinux 0x0aa0b944 pci_release_regions +EXPORT_SYMBOL vmlinux 0x0aa309cf synchronize_hardirq +EXPORT_SYMBOL vmlinux 0x0aa4be99 tcp_sendmsg +EXPORT_SYMBOL vmlinux 0x0acd733d dump_page +EXPORT_SYMBOL vmlinux 0x0acf7679 dma_issue_pending_all +EXPORT_SYMBOL vmlinux 0x0add7265 set_blocksize +EXPORT_SYMBOL vmlinux 0x0b024b40 inet_csk_reset_keepalive_timer +EXPORT_SYMBOL vmlinux 0x0b0d888b icmpv6_err_convert +EXPORT_SYMBOL vmlinux 0x0b1beb31 vmalloc_32_user +EXPORT_SYMBOL vmlinux 0x0b26165d nobh_truncate_page +EXPORT_SYMBOL vmlinux 0x0b48677a __kfifo_init +EXPORT_SYMBOL vmlinux 0x0b4f67f8 audit_log +EXPORT_SYMBOL vmlinux 0x0b648946 account_page_dirtied +EXPORT_SYMBOL vmlinux 0x0b742fd7 simple_strtol +EXPORT_SYMBOL vmlinux 0x0b89f007 inet_addr_type +EXPORT_SYMBOL vmlinux 0x0b905c66 __percpu_counter_init +EXPORT_SYMBOL vmlinux 0x0b91bf08 __cleancache_put_page +EXPORT_SYMBOL vmlinux 0x0b91f9d4 __napi_complete +EXPORT_SYMBOL vmlinux 0x0ba0f219 iov_iter_advance +EXPORT_SYMBOL vmlinux 0x0baff6c1 elv_rq_merge_ok +EXPORT_SYMBOL vmlinux 0x0bb70839 sk_stop_timer +EXPORT_SYMBOL vmlinux 0x0bbc5908 gen_estimator_active +EXPORT_SYMBOL vmlinux 0x0bc477a2 irq_set_irq_type +EXPORT_SYMBOL vmlinux 0x0bc969da get_gendisk +EXPORT_SYMBOL vmlinux 0x0bd704ba cfb_copyarea +EXPORT_SYMBOL vmlinux 0x0bf7de7d x86_hyper +EXPORT_SYMBOL vmlinux 0x0c0b2810 mmc_free_host +EXPORT_SYMBOL vmlinux 0x0c1ad29a devfreq_register_opp_notifier +EXPORT_SYMBOL vmlinux 0x0c45fc96 vfs_lstat +EXPORT_SYMBOL vmlinux 0x0c58a8cd netdev_increment_features +EXPORT_SYMBOL vmlinux 0x0c76d7d2 param_set_byte +EXPORT_SYMBOL vmlinux 0x0c7d55f8 tcp_try_fastopen +EXPORT_SYMBOL vmlinux 0x0ca0c882 twl6030_interrupt_mask +EXPORT_SYMBOL vmlinux 0x0ca7b7a8 acpi_check_region +EXPORT_SYMBOL vmlinux 0x0ca7fb55 skb_store_bits +EXPORT_SYMBOL vmlinux 0x0cae232b utf16s_to_utf8s +EXPORT_SYMBOL vmlinux 0x0cb0f5e4 netdev_lower_get_next_private_rcu +EXPORT_SYMBOL vmlinux 0x0cbc5d85 blk_finish_request +EXPORT_SYMBOL vmlinux 0x0cdb7d12 __kernel_fpu_begin +EXPORT_SYMBOL vmlinux 0x0cf7210a dquot_claim_space_nodirty +EXPORT_SYMBOL vmlinux 0x0cfbcf0a skb_queue_tail +EXPORT_SYMBOL vmlinux 0x0cfefff6 scsi_test_unit_ready +EXPORT_SYMBOL vmlinux 0x0d041a98 lockref_get_or_lock +EXPORT_SYMBOL vmlinux 0x0d1e2012 __d_drop +EXPORT_SYMBOL vmlinux 0x0d1f3341 skb_checksum_setup +EXPORT_SYMBOL vmlinux 0x0d302a67 vga_tryget +EXPORT_SYMBOL vmlinux 0x0d38ae62 pci_map_rom +EXPORT_SYMBOL vmlinux 0x0d3dda14 acpi_get_type +EXPORT_SYMBOL vmlinux 0x0d468961 kobject_put +EXPORT_SYMBOL vmlinux 0x0d542439 __ipv6_addr_type +EXPORT_SYMBOL vmlinux 0x0d57fe20 vme_master_request +EXPORT_SYMBOL vmlinux 0x0d61eeee __bitmap_subset +EXPORT_SYMBOL vmlinux 0x0d6d25b0 input_event +EXPORT_SYMBOL vmlinux 0x0d93d9f7 skb_kill_datagram +EXPORT_SYMBOL vmlinux 0x0d9951a9 simple_lookup +EXPORT_SYMBOL vmlinux 0x0da10ec3 security_sock_graft +EXPORT_SYMBOL vmlinux 0x0dc1a78c bin2hex +EXPORT_SYMBOL vmlinux 0x0de33c2e init_buffer +EXPORT_SYMBOL vmlinux 0x0df3e897 sock_no_listen +EXPORT_SYMBOL vmlinux 0x0dfe92e0 vfs_path_lookup +EXPORT_SYMBOL vmlinux 0x0e21522f max8925_reg_write +EXPORT_SYMBOL vmlinux 0x0e2267d5 tty_unlock +EXPORT_SYMBOL vmlinux 0x0e296a35 kill_block_super +EXPORT_SYMBOL vmlinux 0x0e2ea1e6 ip_route_me_harder +EXPORT_SYMBOL vmlinux 0x0e35842b __alloc_pages_nodemask +EXPORT_SYMBOL vmlinux 0x0e405845 mark_buffer_dirty_inode +EXPORT_SYMBOL vmlinux 0x0e62e296 sock_no_getsockopt +EXPORT_SYMBOL vmlinux 0x0e6da44a set_normalized_timespec +EXPORT_SYMBOL vmlinux 0x0e907b52 dst_destroy +EXPORT_SYMBOL vmlinux 0x0e9774f8 path_is_under +EXPORT_SYMBOL vmlinux 0x0e99a6ff lockref_put_or_lock +EXPORT_SYMBOL vmlinux 0x0ea47efa call_usermodehelper_exec +EXPORT_SYMBOL vmlinux 0x0eaf451e hdmi_vendor_infoframe_pack +EXPORT_SYMBOL vmlinux 0x0ebbe0c2 scsi_scan_host +EXPORT_SYMBOL vmlinux 0x0ec04443 inet6_del_protocol +EXPORT_SYMBOL vmlinux 0x0ec08f00 __dquot_alloc_space +EXPORT_SYMBOL vmlinux 0x0ec5babe vme_dma_free +EXPORT_SYMBOL vmlinux 0x0ef9e160 ppp_channel_index +EXPORT_SYMBOL vmlinux 0x0efcbb1b set_current_groups +EXPORT_SYMBOL vmlinux 0x0efeec4b pci_request_regions_exclusive +EXPORT_SYMBOL vmlinux 0x0f18994d init_task +EXPORT_SYMBOL vmlinux 0x0f18cb9c napi_get_frags +EXPORT_SYMBOL vmlinux 0x0f213272 sk_dst_check +EXPORT_SYMBOL vmlinux 0x0f401397 generic_permission +EXPORT_SYMBOL vmlinux 0x0f42389e input_flush_device +EXPORT_SYMBOL vmlinux 0x0f4c91ed ns_to_timespec +EXPORT_SYMBOL vmlinux 0x0f5040c8 tcp_make_synack +EXPORT_SYMBOL vmlinux 0x0f6a3b5c string_get_size +EXPORT_SYMBOL vmlinux 0x0f7359c4 set_pages_array_wc +EXPORT_SYMBOL vmlinux 0x0f84382f copy_page_to_iter +EXPORT_SYMBOL vmlinux 0x0fa3c23e dma_common_get_sgtable +EXPORT_SYMBOL vmlinux 0x0faef0ed __tasklet_schedule +EXPORT_SYMBOL vmlinux 0x0fb2f8a4 mktime64 +EXPORT_SYMBOL vmlinux 0x0fbf1ff3 inet_listen +EXPORT_SYMBOL vmlinux 0x0fcf98f1 blk_mq_alloc_request +EXPORT_SYMBOL vmlinux 0x0fd00a68 acpi_clear_event +EXPORT_SYMBOL vmlinux 0x0fd474cd genphy_update_link +EXPORT_SYMBOL vmlinux 0x0ff2b602 slhc_compress +EXPORT_SYMBOL vmlinux 0x10059908 rwsem_down_write_failed +EXPORT_SYMBOL vmlinux 0x102c56de irq_regs +EXPORT_SYMBOL vmlinux 0x103759c5 dev_mc_unsync +EXPORT_SYMBOL vmlinux 0x1037e971 nosteal_pipe_buf_ops +EXPORT_SYMBOL vmlinux 0x10498c61 scsi_is_host_device +EXPORT_SYMBOL vmlinux 0x104e82ea dev_queue_xmit_sk +EXPORT_SYMBOL vmlinux 0x10530cf3 blk_free_tags +EXPORT_SYMBOL vmlinux 0x10688438 current_fs_time +EXPORT_SYMBOL vmlinux 0x10693df0 mmc_gpiod_request_cd_irq +EXPORT_SYMBOL vmlinux 0x106f13ab crc_t10dif_generic +EXPORT_SYMBOL vmlinux 0x1071f08a vfs_writev +EXPORT_SYMBOL vmlinux 0x107e5878 zlib_inflateEnd +EXPORT_SYMBOL vmlinux 0x10813a35 xfrm_dst_ifdown +EXPORT_SYMBOL vmlinux 0x10beec46 pci_disable_msix +EXPORT_SYMBOL vmlinux 0x10c2f187 gen_pool_virt_to_phys +EXPORT_SYMBOL vmlinux 0x10dc1862 udp_lib_get_port +EXPORT_SYMBOL vmlinux 0x10e4e882 gen_pool_free +EXPORT_SYMBOL vmlinux 0x10e74221 pci_set_power_state +EXPORT_SYMBOL vmlinux 0x10ee20bb default_blu +EXPORT_SYMBOL vmlinux 0x11089ac7 _ctype +EXPORT_SYMBOL vmlinux 0x1113adcf security_file_permission +EXPORT_SYMBOL vmlinux 0x11151904 ipv4_specific +EXPORT_SYMBOL vmlinux 0x11275b1c may_umount_tree +EXPORT_SYMBOL vmlinux 0x1163f0a7 blk_max_low_pfn +EXPORT_SYMBOL vmlinux 0x117093be qdisc_class_hash_init +EXPORT_SYMBOL vmlinux 0x117c9bf7 dquot_mark_dquot_dirty +EXPORT_SYMBOL vmlinux 0x118a5e56 blk_limits_io_min +EXPORT_SYMBOL vmlinux 0x1191abe5 noop_fsync +EXPORT_SYMBOL vmlinux 0x11931238 netpoll_setup +EXPORT_SYMBOL vmlinux 0x11a044f6 mod_timer_pinned +EXPORT_SYMBOL vmlinux 0x11b6d0a1 rwsem_wake +EXPORT_SYMBOL vmlinux 0x11bdc475 sock_from_file +EXPORT_SYMBOL vmlinux 0x11dc6efe nvdimm_namespace_capacity +EXPORT_SYMBOL vmlinux 0x11dd01ad intel_scu_ipc_command +EXPORT_SYMBOL vmlinux 0x11e91b2e __block_write_begin +EXPORT_SYMBOL vmlinux 0x11f7ed4c hex_to_bin +EXPORT_SYMBOL vmlinux 0x1208d807 cdrom_get_media_event +EXPORT_SYMBOL vmlinux 0x120b336a __rb_insert_augmented +EXPORT_SYMBOL vmlinux 0x120d67d4 unregister_memory_isolate_notifier +EXPORT_SYMBOL vmlinux 0x120fc6b1 kstrdup_const +EXPORT_SYMBOL vmlinux 0x123ad2a9 nd_device_register +EXPORT_SYMBOL vmlinux 0x123f1e58 tty_port_raise_dtr_rts +EXPORT_SYMBOL vmlinux 0x1250c7e1 _raw_spin_trylock +EXPORT_SYMBOL vmlinux 0x1250f19f ipv6_mc_check_mld +EXPORT_SYMBOL vmlinux 0x12654449 bio_chain +EXPORT_SYMBOL vmlinux 0x1269adc9 eth_commit_mac_addr_change +EXPORT_SYMBOL vmlinux 0x1288f10b alloc_etherdev_mqs +EXPORT_SYMBOL vmlinux 0x1296185c kill_pid +EXPORT_SYMBOL vmlinux 0x129909e5 dentry_needs_remove_privs +EXPORT_SYMBOL vmlinux 0x129fa090 phy_ethtool_gset +EXPORT_SYMBOL vmlinux 0x12a38747 usleep_range +EXPORT_SYMBOL vmlinux 0x12da5bb2 __kmalloc +EXPORT_SYMBOL vmlinux 0x12defc3a sdev_prefix_printk +EXPORT_SYMBOL vmlinux 0x12e8934d mipi_dsi_dcs_get_pixel_format +EXPORT_SYMBOL vmlinux 0x12fc7d22 ps2_end_command +EXPORT_SYMBOL vmlinux 0x132040fd sock_alloc_file +EXPORT_SYMBOL vmlinux 0x13243d4b wl1251_get_platform_data +EXPORT_SYMBOL vmlinux 0x132a374d bioset_free +EXPORT_SYMBOL vmlinux 0x13307fde vsscanf +EXPORT_SYMBOL vmlinux 0x13315729 flex_array_alloc +EXPORT_SYMBOL vmlinux 0x1342d215 uart_update_timeout +EXPORT_SYMBOL vmlinux 0x1357eb01 netdev_err +EXPORT_SYMBOL vmlinux 0x137e0d0f inet_get_local_port_range +EXPORT_SYMBOL vmlinux 0x13808628 nf_log_unset +EXPORT_SYMBOL vmlinux 0x13a2b453 acpi_bus_unregister_driver +EXPORT_SYMBOL vmlinux 0x13c0f056 cdrom_number_of_slots +EXPORT_SYMBOL vmlinux 0x13c5e6de scsi_register +EXPORT_SYMBOL vmlinux 0x13d0adf7 __kfifo_out +EXPORT_SYMBOL vmlinux 0x13f42152 system_entering_hibernation +EXPORT_SYMBOL vmlinux 0x1408ff3d eth_mac_addr +EXPORT_SYMBOL vmlinux 0x1420b379 kstrtou16_from_user +EXPORT_SYMBOL vmlinux 0x144c25c6 x86_hyper_xen +EXPORT_SYMBOL vmlinux 0x144ffda3 tty_port_close_end +EXPORT_SYMBOL vmlinux 0x145096c1 vlan_dev_real_dev +EXPORT_SYMBOL vmlinux 0x145ed741 pcix_get_max_mmrbc +EXPORT_SYMBOL vmlinux 0x146fec03 module_put +EXPORT_SYMBOL vmlinux 0x14ae6731 phy_drivers_unregister +EXPORT_SYMBOL vmlinux 0x14f6c3d1 mb_cache_entry_alloc +EXPORT_SYMBOL vmlinux 0x150389d6 acpi_processor_power_init_bm_check +EXPORT_SYMBOL vmlinux 0x15239176 param_set_int +EXPORT_SYMBOL vmlinux 0x1545e231 ps2_drain +EXPORT_SYMBOL vmlinux 0x154bd468 do_splice_from +EXPORT_SYMBOL vmlinux 0x154c6338 dm_kcopyd_client_destroy +EXPORT_SYMBOL vmlinux 0x154d2a62 kiocb_set_cancel_fn +EXPORT_SYMBOL vmlinux 0x1562ee98 prepare_kernel_cred +EXPORT_SYMBOL vmlinux 0x15690a31 i2c_register_driver +EXPORT_SYMBOL vmlinux 0x156a8a59 down_trylock +EXPORT_SYMBOL vmlinux 0x1570a047 param_get_uint +EXPORT_SYMBOL vmlinux 0x159e8efa scsi_device_lookup +EXPORT_SYMBOL vmlinux 0x15b8f0d7 intel_gmch_probe +EXPORT_SYMBOL vmlinux 0x15bafe29 unregister_md_cluster_operations +EXPORT_SYMBOL vmlinux 0x160ea4c8 sfi_disabled +EXPORT_SYMBOL vmlinux 0x160fd277 vfs_iter_read +EXPORT_SYMBOL vmlinux 0x1616cb30 acpi_evaluate_dsm +EXPORT_SYMBOL vmlinux 0x1621e80c empty_aops +EXPORT_SYMBOL vmlinux 0x16305289 warn_slowpath_null +EXPORT_SYMBOL vmlinux 0x163258eb eth_gro_complete +EXPORT_SYMBOL vmlinux 0x1653b895 __sk_dst_check +EXPORT_SYMBOL vmlinux 0x166b52d0 tty_insert_flip_string_flags +EXPORT_SYMBOL vmlinux 0x166e1232 vme_bus_type +EXPORT_SYMBOL vmlinux 0x167e7f9d __get_user_1 +EXPORT_SYMBOL vmlinux 0x1683a50b radix_tree_delete +EXPORT_SYMBOL vmlinux 0x169e55a2 dev_set_allmulti +EXPORT_SYMBOL vmlinux 0x16a9a5c1 clear_inode +EXPORT_SYMBOL vmlinux 0x16b549e3 pm860x_reg_write +EXPORT_SYMBOL vmlinux 0x16b9e627 vfs_writef +EXPORT_SYMBOL vmlinux 0x16d9bd1b i2c_smbus_read_word_data +EXPORT_SYMBOL vmlinux 0x16dad49b dev_set_mtu +EXPORT_SYMBOL vmlinux 0x16dc4d1f fence_init +EXPORT_SYMBOL vmlinux 0x16ec4338 netlink_broadcast +EXPORT_SYMBOL vmlinux 0x16f46700 consume_skb +EXPORT_SYMBOL vmlinux 0x170c25ee acpi_get_next_object +EXPORT_SYMBOL vmlinux 0x1719d744 i2c_master_recv +EXPORT_SYMBOL vmlinux 0x17270644 sock_kmalloc +EXPORT_SYMBOL vmlinux 0x172f9fc7 twl6040_reg_read +EXPORT_SYMBOL vmlinux 0x173a3c82 agp_put_bridge +EXPORT_SYMBOL vmlinux 0x178b417a pci_disable_msi +EXPORT_SYMBOL vmlinux 0x179570cc input_mt_report_pointer_emulation +EXPORT_SYMBOL vmlinux 0x1797be78 bio_alloc_pages +EXPORT_SYMBOL vmlinux 0x17ad2a23 alloc_disk +EXPORT_SYMBOL vmlinux 0x17b1125d gen_kill_estimator +EXPORT_SYMBOL vmlinux 0x17d37b06 generic_setxattr +EXPORT_SYMBOL vmlinux 0x17dd23d7 reservation_object_reserve_shared +EXPORT_SYMBOL vmlinux 0x17f341a0 i8042_lock_chip +EXPORT_SYMBOL vmlinux 0x180c1ace __get_user_pages_unlocked +EXPORT_SYMBOL vmlinux 0x181102c2 __nd_driver_register +EXPORT_SYMBOL vmlinux 0x1823ac9c skb_copy_datagram_iter +EXPORT_SYMBOL vmlinux 0x1826f089 __tracepoint_kmem_cache_alloc_node +EXPORT_SYMBOL vmlinux 0x1829d188 wait_woken +EXPORT_SYMBOL vmlinux 0x183fa88b mempool_alloc_slab +EXPORT_SYMBOL vmlinux 0x1845cda2 __mmc_claim_host +EXPORT_SYMBOL vmlinux 0x184b82fb mmc_vddrange_to_ocrmask +EXPORT_SYMBOL vmlinux 0x188a3dfb timespec_trunc +EXPORT_SYMBOL vmlinux 0x189868d7 get_random_bytes_arch +EXPORT_SYMBOL vmlinux 0x18a82c02 write_cache_pages +EXPORT_SYMBOL vmlinux 0x18c05c5c inet6_getname +EXPORT_SYMBOL vmlinux 0x18c70eba rwsem_downgrade_wake +EXPORT_SYMBOL vmlinux 0x18d6becc blkdev_reread_part +EXPORT_SYMBOL vmlinux 0x18d96501 atomic64_dec_if_positive_cx8 +EXPORT_SYMBOL vmlinux 0x18f21b82 flow_cache_lookup +EXPORT_SYMBOL vmlinux 0x18f2f4ef set_binfmt +EXPORT_SYMBOL vmlinux 0x1916e38c _raw_spin_unlock_irqrestore +EXPORT_SYMBOL vmlinux 0x19170268 devm_kvasprintf +EXPORT_SYMBOL vmlinux 0x192392a5 simple_release_fs +EXPORT_SYMBOL vmlinux 0x19428171 pci_scan_root_bus +EXPORT_SYMBOL vmlinux 0x194a44ec kernel_getpeername +EXPORT_SYMBOL vmlinux 0x194e0aa6 submit_bh +EXPORT_SYMBOL vmlinux 0x1960315a dget_parent +EXPORT_SYMBOL vmlinux 0x199847bb redirty_page_for_writepage +EXPORT_SYMBOL vmlinux 0x199cdf1b mmc_wait_for_req +EXPORT_SYMBOL vmlinux 0x199ed0cd net_disable_timestamp +EXPORT_SYMBOL vmlinux 0x19b37b92 blk_mq_map_queue +EXPORT_SYMBOL vmlinux 0x19b67649 d_prune_aliases +EXPORT_SYMBOL vmlinux 0x19bd383b security_secmark_refcount_dec +EXPORT_SYMBOL vmlinux 0x1a0e7d9c get_io_context +EXPORT_SYMBOL vmlinux 0x1a19a17d blk_mq_tag_to_rq +EXPORT_SYMBOL vmlinux 0x1a45cb6c acpi_disabled +EXPORT_SYMBOL vmlinux 0x1a555549 unregister_shrinker +EXPORT_SYMBOL vmlinux 0x1a63af34 vga_switcheroo_process_delayed_switch +EXPORT_SYMBOL vmlinux 0x1a8ae721 elv_dispatch_add_tail +EXPORT_SYMBOL vmlinux 0x1a96ad7a __tty_alloc_driver +EXPORT_SYMBOL vmlinux 0x1aae4161 inet6_add_protocol +EXPORT_SYMBOL vmlinux 0x1ab4d157 tty_schedule_flip +EXPORT_SYMBOL vmlinux 0x1ac36e4b dcb_ieee_getapp_mask +EXPORT_SYMBOL vmlinux 0x1ad9ed8e ns_capable +EXPORT_SYMBOL vmlinux 0x1ae06e12 __tracepoint_fence_annotate_wait_on +EXPORT_SYMBOL vmlinux 0x1afb1aaa acpi_mark_gpe_for_wake +EXPORT_SYMBOL vmlinux 0x1afd9cf6 fget +EXPORT_SYMBOL vmlinux 0x1afe2829 sg_miter_next +EXPORT_SYMBOL vmlinux 0x1b015d25 bitmap_parselist +EXPORT_SYMBOL vmlinux 0x1b06a209 blk_set_default_limits +EXPORT_SYMBOL vmlinux 0x1b0ac272 __tracepoint_kmalloc_node +EXPORT_SYMBOL vmlinux 0x1b0f1d94 agp_find_bridge +EXPORT_SYMBOL vmlinux 0x1b1e1088 sg_nents +EXPORT_SYMBOL vmlinux 0x1b201f0e tcp_rtx_synack +EXPORT_SYMBOL vmlinux 0x1b2996e0 max8998_bulk_read +EXPORT_SYMBOL vmlinux 0x1b328f2b ip6_route_me_harder +EXPORT_SYMBOL vmlinux 0x1b4e4b10 pci_scan_bus +EXPORT_SYMBOL vmlinux 0x1b548ee4 sock_no_mmap +EXPORT_SYMBOL vmlinux 0x1b570d23 acpi_warning +EXPORT_SYMBOL vmlinux 0x1b5bcfce ip_getsockopt +EXPORT_SYMBOL vmlinux 0x1b61e095 user_path_create +EXPORT_SYMBOL vmlinux 0x1b6314fd in_aton +EXPORT_SYMBOL vmlinux 0x1b774d24 bdi_register_dev +EXPORT_SYMBOL vmlinux 0x1b796ded kmalloc_caches +EXPORT_SYMBOL vmlinux 0x1b7b9c8f phy_ethtool_get_wol +EXPORT_SYMBOL vmlinux 0x1b82fefa md_unplug +EXPORT_SYMBOL vmlinux 0x1b8b95ad i8042_unlock_chip +EXPORT_SYMBOL vmlinux 0x1b9f1dd4 jbd2_journal_start_commit +EXPORT_SYMBOL vmlinux 0x1bb31047 add_timer +EXPORT_SYMBOL vmlinux 0x1bd997c8 __set_page_dirty_buffers +EXPORT_SYMBOL vmlinux 0x1bda29b7 __scsi_iterate_devices +EXPORT_SYMBOL vmlinux 0x1bdecd18 netdev_class_remove_file_ns +EXPORT_SYMBOL vmlinux 0x1be1dd26 lg_global_lock +EXPORT_SYMBOL vmlinux 0x1bfeddc4 get_user_pages_unlocked +EXPORT_SYMBOL vmlinux 0x1c0a1e37 mipi_dsi_dcs_set_page_address +EXPORT_SYMBOL vmlinux 0x1c114a6a vm_event_states +EXPORT_SYMBOL vmlinux 0x1c166721 sync_inodes_sb +EXPORT_SYMBOL vmlinux 0x1c16af3a security_inode_notifysecctx +EXPORT_SYMBOL vmlinux 0x1c2a2164 blk_queue_chunk_sectors +EXPORT_SYMBOL vmlinux 0x1c4639a2 __dax_fault +EXPORT_SYMBOL vmlinux 0x1c4b30b6 __skb_checksum_complete +EXPORT_SYMBOL vmlinux 0x1c8a04b0 acpi_reset +EXPORT_SYMBOL vmlinux 0x1c9b9b33 dquot_reclaim_space_nodirty +EXPORT_SYMBOL vmlinux 0x1ca30e72 sock_get_timestampns +EXPORT_SYMBOL vmlinux 0x1ca9a5da phy_device_register +EXPORT_SYMBOL vmlinux 0x1cd0868a netdev_features_change +EXPORT_SYMBOL vmlinux 0x1ce44fcd posix_test_lock +EXPORT_SYMBOL vmlinux 0x1ce53e0a key_put +EXPORT_SYMBOL vmlinux 0x1cee487b __generic_file_fsync +EXPORT_SYMBOL vmlinux 0x1d091ad8 pci_request_region_exclusive +EXPORT_SYMBOL vmlinux 0x1d1bc8e7 jbd2_journal_file_inode +EXPORT_SYMBOL vmlinux 0x1d23fafe misc_register +EXPORT_SYMBOL vmlinux 0x1d2cd65c nf_log_register +EXPORT_SYMBOL vmlinux 0x1d33e4c9 param_set_bool +EXPORT_SYMBOL vmlinux 0x1d555f20 __nla_put_nohdr +EXPORT_SYMBOL vmlinux 0x1d6578b2 skb_free_datagram +EXPORT_SYMBOL vmlinux 0x1dba44a4 swiotlb_dma_mapping_error +EXPORT_SYMBOL vmlinux 0x1dc36131 fb_destroy_modedb +EXPORT_SYMBOL vmlinux 0x1dd0bc5d __blockdev_direct_IO +EXPORT_SYMBOL vmlinux 0x1dd571e6 fb_copy_cmap +EXPORT_SYMBOL vmlinux 0x1de74f72 acpi_execute_simple_method +EXPORT_SYMBOL vmlinux 0x1e036c98 acpi_set_gpe +EXPORT_SYMBOL vmlinux 0x1e047854 warn_slowpath_fmt +EXPORT_SYMBOL vmlinux 0x1e0c2be4 ioremap_wc +EXPORT_SYMBOL vmlinux 0x1e0e3713 install_exec_creds +EXPORT_SYMBOL vmlinux 0x1e1a2c70 tty_devnum +EXPORT_SYMBOL vmlinux 0x1e26be3b get_anon_bdev +EXPORT_SYMBOL vmlinux 0x1e431063 ndo_dflt_fdb_dump +EXPORT_SYMBOL vmlinux 0x1e6d26a8 strstr +EXPORT_SYMBOL vmlinux 0x1e743611 follow_down_one +EXPORT_SYMBOL vmlinux 0x1e7ac96d pci_bus_size_bridges +EXPORT_SYMBOL vmlinux 0x1e8d5f9c inet6_offloads +EXPORT_SYMBOL vmlinux 0x1e9e9c61 find_inode_nowait +EXPORT_SYMBOL vmlinux 0x1e9edfb7 seq_hlist_start_head_rcu +EXPORT_SYMBOL vmlinux 0x1ea03357 copy_to_iter +EXPORT_SYMBOL vmlinux 0x1eaf2069 block_write_end +EXPORT_SYMBOL vmlinux 0x1eb922a3 IO_APIC_get_PCI_irq_vector +EXPORT_SYMBOL vmlinux 0x1ebf4072 csum_and_copy_from_iter +EXPORT_SYMBOL vmlinux 0x1ec990c8 efi +EXPORT_SYMBOL vmlinux 0x1ecedbf4 unregister_binfmt +EXPORT_SYMBOL vmlinux 0x1edca132 gen_replace_estimator +EXPORT_SYMBOL vmlinux 0x1ee3c685 bh_uptodate_or_lock +EXPORT_SYMBOL vmlinux 0x1ef13ed2 ppp_dev_name +EXPORT_SYMBOL vmlinux 0x1ef1e0b6 netdev_lower_get_first_private_rcu +EXPORT_SYMBOL vmlinux 0x1efafd1b tso_start +EXPORT_SYMBOL vmlinux 0x1f10cc6f posix_lock_file +EXPORT_SYMBOL vmlinux 0x1f253530 blk_queue_invalidate_tags +EXPORT_SYMBOL vmlinux 0x1f4004f1 __quota_error +EXPORT_SYMBOL vmlinux 0x1f460689 input_register_handler +EXPORT_SYMBOL vmlinux 0x1f61e047 vfs_readv +EXPORT_SYMBOL vmlinux 0x1f6c63df kfree_skb_partial +EXPORT_SYMBOL vmlinux 0x1f7b0397 get_unmapped_area +EXPORT_SYMBOL vmlinux 0x1f7e807f kstrtoint_from_user +EXPORT_SYMBOL vmlinux 0x1fbd16da ip_tos2prio +EXPORT_SYMBOL vmlinux 0x1fc29e07 frontswap_register_ops +EXPORT_SYMBOL vmlinux 0x1fc9f190 console_stop +EXPORT_SYMBOL vmlinux 0x1fd07fff kdb_grepping_flag +EXPORT_SYMBOL vmlinux 0x1fd7caa9 md_reload_sb +EXPORT_SYMBOL vmlinux 0x1fdd9754 blk_end_request +EXPORT_SYMBOL vmlinux 0x1fe912f1 netdev_alloc_frag +EXPORT_SYMBOL vmlinux 0x1fe9f800 unregister_cpu_notifier +EXPORT_SYMBOL vmlinux 0x1fedf0f4 __request_region +EXPORT_SYMBOL vmlinux 0x1ff2123e dev_getbyhwaddr_rcu +EXPORT_SYMBOL vmlinux 0x1ff75093 sock_release +EXPORT_SYMBOL vmlinux 0x20000329 simple_strtoul +EXPORT_SYMBOL vmlinux 0x2005e68a acpi_remove_fixed_event_handler +EXPORT_SYMBOL vmlinux 0x20092385 acpi_enter_sleep_state_s4bios +EXPORT_SYMBOL vmlinux 0x200b2041 in6addr_any +EXPORT_SYMBOL vmlinux 0x201b0ac0 lg_global_unlock +EXPORT_SYMBOL vmlinux 0x201f456e tcp_initialize_rcv_mss +EXPORT_SYMBOL vmlinux 0x20205f64 trace_print_array_seq +EXPORT_SYMBOL vmlinux 0x202f4e92 acpi_extract_package +EXPORT_SYMBOL vmlinux 0x2030824f down_read +EXPORT_SYMBOL vmlinux 0x2030c8de nvdimm_namespace_common_probe +EXPORT_SYMBOL vmlinux 0x204c19f5 tcp_alloc_md5sig_pool +EXPORT_SYMBOL vmlinux 0x204d955a dump_skip +EXPORT_SYMBOL vmlinux 0x2050cc25 mmc_gpiod_request_cd +EXPORT_SYMBOL vmlinux 0x20679a9b neigh_update +EXPORT_SYMBOL vmlinux 0x2072ee9b request_threaded_irq +EXPORT_SYMBOL vmlinux 0x208739f6 acpi_load_table +EXPORT_SYMBOL vmlinux 0x209306db xfrm_input_register_afinfo +EXPORT_SYMBOL vmlinux 0x20a789ac irq_set_chip_data +EXPORT_SYMBOL vmlinux 0x20b79c03 ip6_frag_match +EXPORT_SYMBOL vmlinux 0x20c4d5e9 mmc_detect_card_removed +EXPORT_SYMBOL vmlinux 0x20c55ae0 sscanf +EXPORT_SYMBOL vmlinux 0x20c6192f intel_scu_ipc_ioread32 +EXPORT_SYMBOL vmlinux 0x20d04d6c set_pages_array_uc +EXPORT_SYMBOL vmlinux 0x20df5a3d vme_dma_pci_attribute +EXPORT_SYMBOL vmlinux 0x20e76a0f phy_init_hw +EXPORT_SYMBOL vmlinux 0x20f3726c mmc_gpio_get_ro +EXPORT_SYMBOL vmlinux 0x2126531f __skb_tx_hash +EXPORT_SYMBOL vmlinux 0x2167105f netdev_refcnt_read +EXPORT_SYMBOL vmlinux 0x2167ea9f rtnetlink_put_metrics +EXPORT_SYMBOL vmlinux 0x217c02a8 phy_device_create +EXPORT_SYMBOL vmlinux 0x218c2dda elevator_exit +EXPORT_SYMBOL vmlinux 0x218f482a key_revoke +EXPORT_SYMBOL vmlinux 0x2199a16a input_mt_report_finger_count +EXPORT_SYMBOL vmlinux 0x21a10c00 starget_for_each_device +EXPORT_SYMBOL vmlinux 0x21a6f99c scsi_remove_target +EXPORT_SYMBOL vmlinux 0x21a701fe fence_signal +EXPORT_SYMBOL vmlinux 0x21b2514c set_security_override_from_ctx +EXPORT_SYMBOL vmlinux 0x21bda38a param_ops_ushort +EXPORT_SYMBOL vmlinux 0x21c088bf textsearch_register +EXPORT_SYMBOL vmlinux 0x21df74d9 bitmap_set +EXPORT_SYMBOL vmlinux 0x21e992a5 ida_simple_get +EXPORT_SYMBOL vmlinux 0x2202c31e led_update_brightness +EXPORT_SYMBOL vmlinux 0x2207a57f prepare_to_wait_event +EXPORT_SYMBOL vmlinux 0x221fcf6d vlan_uses_dev +EXPORT_SYMBOL vmlinux 0x222e7ce2 sysfs_streq +EXPORT_SYMBOL vmlinux 0x2242f199 flush_signals +EXPORT_SYMBOL vmlinux 0x22537eff bio_uncopy_user +EXPORT_SYMBOL vmlinux 0x2256fafa div64_u64_rem +EXPORT_SYMBOL vmlinux 0x2261c691 phy_start_interrupts +EXPORT_SYMBOL vmlinux 0x22692141 security_path_symlink +EXPORT_SYMBOL vmlinux 0x22716465 vme_dma_list_exec +EXPORT_SYMBOL vmlinux 0x2276db98 kstrtoint +EXPORT_SYMBOL vmlinux 0x22918a88 phy_mii_ioctl +EXPORT_SYMBOL vmlinux 0x22942f59 fsnotify_init_mark +EXPORT_SYMBOL vmlinux 0x22ac88bb skb_abort_seq_read +EXPORT_SYMBOL vmlinux 0x22b325d5 kd_mksound +EXPORT_SYMBOL vmlinux 0x22c830af blk_init_allocated_queue +EXPORT_SYMBOL vmlinux 0x22dfdd06 radix_tree_tag_set +EXPORT_SYMBOL vmlinux 0x22e0c6f0 __sk_mem_schedule +EXPORT_SYMBOL vmlinux 0x22fc4f3a trace_print_flags_seq +EXPORT_SYMBOL vmlinux 0x2311815f max8925_bulk_read +EXPORT_SYMBOL vmlinux 0x231d4001 fb_edid_add_monspecs +EXPORT_SYMBOL vmlinux 0x232b6e16 param_ops_ulong +EXPORT_SYMBOL vmlinux 0x232d18ec rps_sock_flow_table +EXPORT_SYMBOL vmlinux 0x233395bf simple_link +EXPORT_SYMBOL vmlinux 0x2338d5b0 agp_generic_free_gatt_table +EXPORT_SYMBOL vmlinux 0x233c21ae jbd2_journal_errno +EXPORT_SYMBOL vmlinux 0x23511f59 input_alloc_absinfo +EXPORT_SYMBOL vmlinux 0x2356a3f3 scsi_print_sense +EXPORT_SYMBOL vmlinux 0x238f5c1a _raw_write_unlock_irqrestore +EXPORT_SYMBOL vmlinux 0x23a574fd security_secmark_relabel_packet +EXPORT_SYMBOL vmlinux 0x23a873ab devm_ioremap_nocache +EXPORT_SYMBOL vmlinux 0x23b9d6e2 mangle_path +EXPORT_SYMBOL vmlinux 0x23c8f257 slhc_uncompress +EXPORT_SYMBOL vmlinux 0x23cc977b __check_sticky +EXPORT_SYMBOL vmlinux 0x23d5ed00 inet_csk_delete_keepalive_timer +EXPORT_SYMBOL vmlinux 0x23dd1ff1 __netlink_ns_capable +EXPORT_SYMBOL vmlinux 0x23dd2c33 ioc_lookup_icq +EXPORT_SYMBOL vmlinux 0x23f035d9 dmaengine_get_unmap_data +EXPORT_SYMBOL vmlinux 0x23fd3028 vmalloc_node +EXPORT_SYMBOL vmlinux 0x24094515 pcim_iomap +EXPORT_SYMBOL vmlinux 0x24097a03 pci_unmap_rom +EXPORT_SYMBOL vmlinux 0x240f7042 pcibios_bus_to_resource +EXPORT_SYMBOL vmlinux 0x24212d86 __frontswap_invalidate_page +EXPORT_SYMBOL vmlinux 0x242beb24 tcp_getsockopt +EXPORT_SYMBOL vmlinux 0x24428be5 strncpy_from_user +EXPORT_SYMBOL vmlinux 0x2445ed0c dmam_free_noncoherent +EXPORT_SYMBOL vmlinux 0x24537bb7 cpu_tss +EXPORT_SYMBOL vmlinux 0x2454f48f eisa_bus_type +EXPORT_SYMBOL vmlinux 0x2456e994 xfrm_register_type +EXPORT_SYMBOL vmlinux 0x2459bbcc console_set_on_cmdline +EXPORT_SYMBOL vmlinux 0x246a414e dev_mc_sync +EXPORT_SYMBOL vmlinux 0x2478bcaa locks_copy_conflock +EXPORT_SYMBOL vmlinux 0x24806d71 param_ops_string +EXPORT_SYMBOL vmlinux 0x2482e688 vsprintf +EXPORT_SYMBOL vmlinux 0x24936c02 __hw_addr_sync_dev +EXPORT_SYMBOL vmlinux 0x24b8ec74 mfd_add_devices +EXPORT_SYMBOL vmlinux 0x24e58efe ip_generic_getfrag +EXPORT_SYMBOL vmlinux 0x24f605fb dev_addr_init +EXPORT_SYMBOL vmlinux 0x24fdac79 wake_bit_function +EXPORT_SYMBOL vmlinux 0x250113b4 memory_read_from_buffer +EXPORT_SYMBOL vmlinux 0x25277497 rfkill_register +EXPORT_SYMBOL vmlinux 0x25483743 genphy_read_status +EXPORT_SYMBOL vmlinux 0x2549f5cf ip_options_rcv_srr +EXPORT_SYMBOL vmlinux 0x254ce71e tcp_poll +EXPORT_SYMBOL vmlinux 0x254fad32 dev_printk +EXPORT_SYMBOL vmlinux 0x255b7023 input_grab_device +EXPORT_SYMBOL vmlinux 0x2566ef05 mmc_gpio_request_ro +EXPORT_SYMBOL vmlinux 0x2569048f genphy_setup_forced +EXPORT_SYMBOL vmlinux 0x2570a138 reservation_seqcount_string +EXPORT_SYMBOL vmlinux 0x25820c64 fs_overflowuid +EXPORT_SYMBOL vmlinux 0x258b3faf set_bh_page +EXPORT_SYMBOL vmlinux 0x258c910f netif_device_attach +EXPORT_SYMBOL vmlinux 0x25acefdb vlan_vid_del +EXPORT_SYMBOL vmlinux 0x25b72754 qdisc_tree_decrease_qlen +EXPORT_SYMBOL vmlinux 0x25c28861 mmc_put_card +EXPORT_SYMBOL vmlinux 0x25e8ed29 sg_nents_for_len +EXPORT_SYMBOL vmlinux 0x25e9d4bd resource_list_free +EXPORT_SYMBOL vmlinux 0x25f6a187 tso_count_descs +EXPORT_SYMBOL vmlinux 0x260c301a padata_start +EXPORT_SYMBOL vmlinux 0x263beb75 ecryptfs_get_versions +EXPORT_SYMBOL vmlinux 0x263fbeb7 dm_unregister_target +EXPORT_SYMBOL vmlinux 0x2643c090 netdev_boot_setup_check +EXPORT_SYMBOL vmlinux 0x264972ad ndo_dflt_fdb_del +EXPORT_SYMBOL vmlinux 0x2649a07f scsi_ioctl +EXPORT_SYMBOL vmlinux 0x2650d835 sysctl_ip_early_demux +EXPORT_SYMBOL vmlinux 0x267080ec dev_remove_offload +EXPORT_SYMBOL vmlinux 0x267cf6bc twl6040_get_vibralr_status +EXPORT_SYMBOL vmlinux 0x26806e1a phy_write_mmd_indirect +EXPORT_SYMBOL vmlinux 0x26884625 cdrom_ioctl +EXPORT_SYMBOL vmlinux 0x268cc6a2 sys_close +EXPORT_SYMBOL vmlinux 0x268e0d1e i2c_get_adapter +EXPORT_SYMBOL vmlinux 0x268fecfb rt6_lookup +EXPORT_SYMBOL vmlinux 0x269202b9 simple_rmdir +EXPORT_SYMBOL vmlinux 0x269a9fca vc_cons +EXPORT_SYMBOL vmlinux 0x26af70ff iget_locked +EXPORT_SYMBOL vmlinux 0x26bb950b __kfifo_from_user_r +EXPORT_SYMBOL vmlinux 0x26bcfa9c acpi_evaluate_ost +EXPORT_SYMBOL vmlinux 0x26cb34a2 mempool_create +EXPORT_SYMBOL vmlinux 0x26d347ea vlan_vids_del_by_dev +EXPORT_SYMBOL vmlinux 0x26d83799 qdisc_watchdog_cancel +EXPORT_SYMBOL vmlinux 0x26e298e0 unregister_memory_notifier +EXPORT_SYMBOL vmlinux 0x26e7260d fget_raw +EXPORT_SYMBOL vmlinux 0x26e76fb8 sysctl_udp_wmem_min +EXPORT_SYMBOL vmlinux 0x26ea08e3 tcf_action_dump_1 +EXPORT_SYMBOL vmlinux 0x26ed68c9 arp_xmit +EXPORT_SYMBOL vmlinux 0x270f1388 fb_find_mode +EXPORT_SYMBOL vmlinux 0x27124e2b param_get_long +EXPORT_SYMBOL vmlinux 0x271cba95 acpi_bus_private_data_handler +EXPORT_SYMBOL vmlinux 0x27221611 jbd2_journal_flush +EXPORT_SYMBOL vmlinux 0x2726ccfa netdev_master_upper_dev_get_rcu +EXPORT_SYMBOL vmlinux 0x2729953f agp_enable +EXPORT_SYMBOL vmlinux 0x272d394e mtrr_del +EXPORT_SYMBOL vmlinux 0x2737b9d4 mount_single +EXPORT_SYMBOL vmlinux 0x274d08dc __kfifo_dma_out_prepare +EXPORT_SYMBOL vmlinux 0x2774ef29 sock_no_poll +EXPORT_SYMBOL vmlinux 0x27864d57 memparse +EXPORT_SYMBOL vmlinux 0x27866435 security_xfrm_state_alloc +EXPORT_SYMBOL vmlinux 0x27882b9b ida_simple_remove +EXPORT_SYMBOL vmlinux 0x279bae0f flow_get_u32_dst +EXPORT_SYMBOL vmlinux 0x27ae7d0c ec_transaction +EXPORT_SYMBOL vmlinux 0x27bbf221 disable_irq_nosync +EXPORT_SYMBOL vmlinux 0x27d1dab5 gnet_stats_copy_basic +EXPORT_SYMBOL vmlinux 0x27ebae3c bfifo_qdisc_ops +EXPORT_SYMBOL vmlinux 0x27f138f7 __serio_register_driver +EXPORT_SYMBOL vmlinux 0x281823c5 __kfifo_out_peek +EXPORT_SYMBOL vmlinux 0x2820186f devm_devfreq_remove_device +EXPORT_SYMBOL vmlinux 0x282e58d8 scsicam_bios_param +EXPORT_SYMBOL vmlinux 0x283801a9 scsi_is_sdev_device +EXPORT_SYMBOL vmlinux 0x283e1552 tty_register_driver +EXPORT_SYMBOL vmlinux 0x2871522c bdi_register +EXPORT_SYMBOL vmlinux 0x28940818 seq_put_decimal_ull +EXPORT_SYMBOL vmlinux 0x28a2ed02 scsi_build_sense_buffer +EXPORT_SYMBOL vmlinux 0x28a327d1 blk_mq_alloc_tag_set +EXPORT_SYMBOL vmlinux 0x28b616e2 key_unlink +EXPORT_SYMBOL vmlinux 0x28b715a6 isapnp_cfg_end +EXPORT_SYMBOL vmlinux 0x28bd32a2 nf_unregister_hooks +EXPORT_SYMBOL vmlinux 0x28e09af1 iosf_mbi_available +EXPORT_SYMBOL vmlinux 0x28e28627 d_add_ci +EXPORT_SYMBOL vmlinux 0x28eb0ef4 unmap_underlying_metadata +EXPORT_SYMBOL vmlinux 0x28f5da9b vfs_readf +EXPORT_SYMBOL vmlinux 0x29144fb5 tcf_register_action +EXPORT_SYMBOL vmlinux 0x29537c9e alloc_chrdev_region +EXPORT_SYMBOL vmlinux 0x295cd9c0 pnp_register_card_driver +EXPORT_SYMBOL vmlinux 0x295f0f64 vga_set_legacy_decoding +EXPORT_SYMBOL vmlinux 0x2961f232 pci_fixup_device +EXPORT_SYMBOL vmlinux 0x29737656 pci_set_mwi +EXPORT_SYMBOL vmlinux 0x29bf72a9 free_inode_nonrcu +EXPORT_SYMBOL vmlinux 0x29c7ba92 touch_buffer +EXPORT_SYMBOL vmlinux 0x29c9182a sock_no_sendmsg +EXPORT_SYMBOL vmlinux 0x29e4e5aa blk_post_runtime_suspend +EXPORT_SYMBOL vmlinux 0x29fdda53 kstrtos8_from_user +EXPORT_SYMBOL vmlinux 0x2a203d12 vfs_symlink +EXPORT_SYMBOL vmlinux 0x2a303d4d check_signature +EXPORT_SYMBOL vmlinux 0x2a37d074 dma_pool_free +EXPORT_SYMBOL vmlinux 0x2a420a3e blk_queue_max_hw_sectors +EXPORT_SYMBOL vmlinux 0x2a565a25 wait_for_completion_timeout +EXPORT_SYMBOL vmlinux 0x2a5795fe pm_vt_switch_required +EXPORT_SYMBOL vmlinux 0x2a5def2f intel_scu_ipc_iowrite32 +EXPORT_SYMBOL vmlinux 0x2a85f767 file_ns_capable +EXPORT_SYMBOL vmlinux 0x2a96d66b agp_create_memory +EXPORT_SYMBOL vmlinux 0x2aa0e4fc strncasecmp +EXPORT_SYMBOL vmlinux 0x2aad35de mb_cache_destroy +EXPORT_SYMBOL vmlinux 0x2ac13d1b skb_copy_datagram_from_iter +EXPORT_SYMBOL vmlinux 0x2ac55b3c __put_cred +EXPORT_SYMBOL vmlinux 0x2aca9755 bitmap_startwrite +EXPORT_SYMBOL vmlinux 0x2acf0feb vfs_fstat +EXPORT_SYMBOL vmlinux 0x2ad4512f mipi_dsi_attach +EXPORT_SYMBOL vmlinux 0x2ad94044 __neigh_create +EXPORT_SYMBOL vmlinux 0x2af3fce2 pci_clear_mwi +EXPORT_SYMBOL vmlinux 0x2b0ba2b0 scsi_sense_desc_find +EXPORT_SYMBOL vmlinux 0x2b2c7d3f mipi_dsi_dcs_write +EXPORT_SYMBOL vmlinux 0x2b2ce78b kstrtos8 +EXPORT_SYMBOL vmlinux 0x2b357e90 pv_cpu_ops +EXPORT_SYMBOL vmlinux 0x2b5a5fc9 pnp_start_dev +EXPORT_SYMBOL vmlinux 0x2b60410f tcf_em_tree_validate +EXPORT_SYMBOL vmlinux 0x2b67b65b input_get_keycode +EXPORT_SYMBOL vmlinux 0x2b9da7a4 genl_lock +EXPORT_SYMBOL vmlinux 0x2ba707a8 sysctl_tcp_low_latency +EXPORT_SYMBOL vmlinux 0x2ba70ac3 fddi_change_mtu +EXPORT_SYMBOL vmlinux 0x2bace1ba agp_generic_mask_memory +EXPORT_SYMBOL vmlinux 0x2bb55d6e acpi_remove_notify_handler +EXPORT_SYMBOL vmlinux 0x2bca656c acpi_get_hp_hw_control_from_firmware +EXPORT_SYMBOL vmlinux 0x2bd6a1b5 remap_pfn_range +EXPORT_SYMBOL vmlinux 0x2bfeb410 acpi_get_handle +EXPORT_SYMBOL vmlinux 0x2c14323a kstrtol_from_user +EXPORT_SYMBOL vmlinux 0x2c18043e ethtool_op_get_link +EXPORT_SYMBOL vmlinux 0x2c20b2bb scsi_execute +EXPORT_SYMBOL vmlinux 0x2c256e1f input_scancode_to_scalar +EXPORT_SYMBOL vmlinux 0x2c57536b security_path_rename +EXPORT_SYMBOL vmlinux 0x2c59f877 tcp_init_xmit_timers +EXPORT_SYMBOL vmlinux 0x2c761026 scsi_target_resume +EXPORT_SYMBOL vmlinux 0x2c8534fd security_path_chmod +EXPORT_SYMBOL vmlinux 0x2c893ec0 zerocopy_sg_from_iter +EXPORT_SYMBOL vmlinux 0x2c900d91 cpufreq_put_global_kobject +EXPORT_SYMBOL vmlinux 0x2ca319a6 wrmsrl_safe_on_cpu +EXPORT_SYMBOL vmlinux 0x2cb69714 jbd2_journal_release_jbd_inode +EXPORT_SYMBOL vmlinux 0x2cc40ecf fence_remove_callback +EXPORT_SYMBOL vmlinux 0x2cc4701a tcp_prequeue +EXPORT_SYMBOL vmlinux 0x2ccbcafb mipi_dsi_dcs_set_tear_on +EXPORT_SYMBOL vmlinux 0x2ccded74 wireless_send_event +EXPORT_SYMBOL vmlinux 0x2cda2808 __init_rwsem +EXPORT_SYMBOL vmlinux 0x2d112579 xfrm_policy_walk +EXPORT_SYMBOL vmlinux 0x2d140a58 genl_unlock +EXPORT_SYMBOL vmlinux 0x2d144e21 rdmsrl_on_cpu +EXPORT_SYMBOL vmlinux 0x2d29c437 vga_switcheroo_register_client +EXPORT_SYMBOL vmlinux 0x2d30596c from_kqid_munged +EXPORT_SYMBOL vmlinux 0x2d3385d3 system_wq +EXPORT_SYMBOL vmlinux 0x2d37342e cpu_online_mask +EXPORT_SYMBOL vmlinux 0x2d3d2a97 agp_generic_insert_memory +EXPORT_SYMBOL vmlinux 0x2d5c652b xen_biovec_phys_mergeable +EXPORT_SYMBOL vmlinux 0x2d623f06 dev_get_flags +EXPORT_SYMBOL vmlinux 0x2d6d33d9 pcie_capability_clear_and_set_word +EXPORT_SYMBOL vmlinux 0x2d6e488b pci_unregister_driver +EXPORT_SYMBOL vmlinux 0x2d8a0d7c rwsem_down_read_failed +EXPORT_SYMBOL vmlinux 0x2d97baa0 inode_change_ok +EXPORT_SYMBOL vmlinux 0x2db128fe fib_default_rule_add +EXPORT_SYMBOL vmlinux 0x2dd16564 arch_register_cpu +EXPORT_SYMBOL vmlinux 0x2dd9a36b flex_array_shrink +EXPORT_SYMBOL vmlinux 0x2dddb6ae _raw_write_lock_irqsave +EXPORT_SYMBOL vmlinux 0x2deda4a1 security_sk_classify_flow +EXPORT_SYMBOL vmlinux 0x2dedc4c2 acpi_format_exception +EXPORT_SYMBOL vmlinux 0x2def7f76 rtc_cmos_write +EXPORT_SYMBOL vmlinux 0x2df198b6 __pagevec_lru_add +EXPORT_SYMBOL vmlinux 0x2e010ffa phy_connect +EXPORT_SYMBOL vmlinux 0x2e052ed5 mmc_can_reset +EXPORT_SYMBOL vmlinux 0x2e0a100d revert_creds +EXPORT_SYMBOL vmlinux 0x2e1ca751 clk_put +EXPORT_SYMBOL vmlinux 0x2e21c8ca seq_write +EXPORT_SYMBOL vmlinux 0x2e2b7590 scsi_set_medium_removal +EXPORT_SYMBOL vmlinux 0x2e2ce9e0 sysctl_tcp_syncookies +EXPORT_SYMBOL vmlinux 0x2e318f73 dev_printk_emit +EXPORT_SYMBOL vmlinux 0x2e5202f6 _raw_read_unlock +EXPORT_SYMBOL vmlinux 0x2e62af7e inode_init_always +EXPORT_SYMBOL vmlinux 0x2e668491 textsearch_find_continuous +EXPORT_SYMBOL vmlinux 0x2e9f4508 blk_queue_make_request +EXPORT_SYMBOL vmlinux 0x2ea6dbb4 __dynamic_dev_dbg +EXPORT_SYMBOL vmlinux 0x2ec524ad __kfifo_in_r +EXPORT_SYMBOL vmlinux 0x2eefcada kern_path_mountpoint +EXPORT_SYMBOL vmlinux 0x2ef63ad6 scsi_dev_info_list_del_keyed +EXPORT_SYMBOL vmlinux 0x2f03fc4b security_secmark_refcount_inc +EXPORT_SYMBOL vmlinux 0x2f064b55 allocate_resource +EXPORT_SYMBOL vmlinux 0x2f067ee1 pneigh_enqueue +EXPORT_SYMBOL vmlinux 0x2f1f2014 skb_trim +EXPORT_SYMBOL vmlinux 0x2f2135f2 vfs_getattr_nosec +EXPORT_SYMBOL vmlinux 0x2f261306 __ip_dev_find +EXPORT_SYMBOL vmlinux 0x2f384db3 acpi_is_video_device +EXPORT_SYMBOL vmlinux 0x2f3cbc1e dev_emerg +EXPORT_SYMBOL vmlinux 0x2f463da1 __alloc_page_frag +EXPORT_SYMBOL vmlinux 0x2f53601f param_ops_int +EXPORT_SYMBOL vmlinux 0x2f56c7a3 tty_port_destroy +EXPORT_SYMBOL vmlinux 0x2f61b1b3 kmap_to_page +EXPORT_SYMBOL vmlinux 0x2f6b2578 lock_sock_nested +EXPORT_SYMBOL vmlinux 0x2f82b59e i2c_smbus_read_byte +EXPORT_SYMBOL vmlinux 0x2f99a793 gen_pool_create +EXPORT_SYMBOL vmlinux 0x2fa9f0b5 fb_set_suspend +EXPORT_SYMBOL vmlinux 0x2fae4a8e dev_set_group +EXPORT_SYMBOL vmlinux 0x2fb6de5d add_device_randomness +EXPORT_SYMBOL vmlinux 0x2fd6989f skb_try_coalesce +EXPORT_SYMBOL vmlinux 0x2fe252cc unregister_inet6addr_notifier +EXPORT_SYMBOL vmlinux 0x300c7902 pci_wake_from_d3 +EXPORT_SYMBOL vmlinux 0x30226ddf agp_device_command +EXPORT_SYMBOL vmlinux 0x303041c6 udp_flow_hashrnd +EXPORT_SYMBOL vmlinux 0x30543758 sock_no_accept +EXPORT_SYMBOL vmlinux 0x305ed015 add_disk +EXPORT_SYMBOL vmlinux 0x3076e3d8 tcp_openreq_init_rwin +EXPORT_SYMBOL vmlinux 0x307c2fd0 generic_check_addressable +EXPORT_SYMBOL vmlinux 0x308aa6b2 forget_all_cached_acls +EXPORT_SYMBOL vmlinux 0x3096be16 names_cachep +EXPORT_SYMBOL vmlinux 0x30a80826 __kfifo_from_user +EXPORT_SYMBOL vmlinux 0x30b04526 ida_init +EXPORT_SYMBOL vmlinux 0x30c3d516 lockref_put_return +EXPORT_SYMBOL vmlinux 0x30cb6b4f iput +EXPORT_SYMBOL vmlinux 0x30cfe086 mmc_power_save_host +EXPORT_SYMBOL vmlinux 0x30e74134 tty_termios_copy_hw +EXPORT_SYMBOL vmlinux 0x30f688a7 neigh_proc_dointvec +EXPORT_SYMBOL vmlinux 0x30f8a89c __devm_gpiod_get +EXPORT_SYMBOL vmlinux 0x30fb7152 set_disk_ro +EXPORT_SYMBOL vmlinux 0x3102d70b frontswap_curr_pages +EXPORT_SYMBOL vmlinux 0x310917fe sort +EXPORT_SYMBOL vmlinux 0x31099cc5 blk_rq_unmap_user +EXPORT_SYMBOL vmlinux 0x3134aea1 inode_sub_bytes +EXPORT_SYMBOL vmlinux 0x31380354 getrawmonotonic64 +EXPORT_SYMBOL vmlinux 0x3145216f pci_dev_present +EXPORT_SYMBOL vmlinux 0x3147180e wireless_spy_update +EXPORT_SYMBOL vmlinux 0x3147857d default_red +EXPORT_SYMBOL vmlinux 0x315ef4ca __inet_stream_connect +EXPORT_SYMBOL vmlinux 0x31713681 jbd2_journal_load +EXPORT_SYMBOL vmlinux 0x3174bd79 bitmap_clear +EXPORT_SYMBOL vmlinux 0x3180a8b8 sock_rfree +EXPORT_SYMBOL vmlinux 0x3187a983 fd_install +EXPORT_SYMBOL vmlinux 0x318ca657 fb_prepare_logo +EXPORT_SYMBOL vmlinux 0x3191f109 __krealloc +EXPORT_SYMBOL vmlinux 0x31af46dd netlink_net_capable +EXPORT_SYMBOL vmlinux 0x31b387f9 mark_info_dirty +EXPORT_SYMBOL vmlinux 0x31bce790 tty_throttle +EXPORT_SYMBOL vmlinux 0x31db3198 out_of_line_wait_on_bit +EXPORT_SYMBOL vmlinux 0x31e76b57 recalibrate_cpu_khz +EXPORT_SYMBOL vmlinux 0x31f0bb78 __kmap_atomic_idx +EXPORT_SYMBOL vmlinux 0x31f1a6a5 twl6040_clear_bits +EXPORT_SYMBOL vmlinux 0x31f5533d agp_collect_device_status +EXPORT_SYMBOL vmlinux 0x31f92a91 acpi_device_set_power +EXPORT_SYMBOL vmlinux 0x3202435a wrmsr_safe_regs +EXPORT_SYMBOL vmlinux 0x3233544b netdev_state_change +EXPORT_SYMBOL vmlinux 0x323d103f serio_unregister_driver +EXPORT_SYMBOL vmlinux 0x326425ca pci_unmap_biosrom +EXPORT_SYMBOL vmlinux 0x329bc7e0 bdi_init +EXPORT_SYMBOL vmlinux 0x32cd82da blk_alloc_queue_node +EXPORT_SYMBOL vmlinux 0x32d384fd xfrm6_input_addr +EXPORT_SYMBOL vmlinux 0x32e6f1a0 acpi_video_backlight_string +EXPORT_SYMBOL vmlinux 0x330de9af posix_acl_chmod +EXPORT_SYMBOL vmlinux 0x33112eee framebuffer_alloc +EXPORT_SYMBOL vmlinux 0x33120810 swiotlb_sync_sg_for_cpu +EXPORT_SYMBOL vmlinux 0x332896a6 scm_detach_fds +EXPORT_SYMBOL vmlinux 0x333a5038 pci_msi_vec_count +EXPORT_SYMBOL vmlinux 0x3371240e netif_set_real_num_rx_queues +EXPORT_SYMBOL vmlinux 0x337493a2 arp_create +EXPORT_SYMBOL vmlinux 0x337650d1 tcp_connect +EXPORT_SYMBOL vmlinux 0x33770b5c max8925_set_bits +EXPORT_SYMBOL vmlinux 0x3385b021 jbd2_journal_check_used_features +EXPORT_SYMBOL vmlinux 0x3387ca77 put_disk +EXPORT_SYMBOL vmlinux 0x33a44686 writeback_inodes_sb +EXPORT_SYMBOL vmlinux 0x33c7435c prandom_u32_state +EXPORT_SYMBOL vmlinux 0x33dbfd93 tcp_memory_allocated +EXPORT_SYMBOL vmlinux 0x33f0768c cpufreq_quick_get_max +EXPORT_SYMBOL vmlinux 0x33f4bcdf udp_sendmsg +EXPORT_SYMBOL vmlinux 0x34184afe current_kernel_time +EXPORT_SYMBOL vmlinux 0x342f60fe apm_info +EXPORT_SYMBOL vmlinux 0x3451fc12 uart_get_divisor +EXPORT_SYMBOL vmlinux 0x3461de8c alloc_xenballooned_pages +EXPORT_SYMBOL vmlinux 0x3465caa3 cpu_maps_update_begin +EXPORT_SYMBOL vmlinux 0x3469138e km_report +EXPORT_SYMBOL vmlinux 0x347013de nla_validate +EXPORT_SYMBOL vmlinux 0x348569a2 led_blink_set_oneshot +EXPORT_SYMBOL vmlinux 0x34859f13 unregister_console +EXPORT_SYMBOL vmlinux 0x348c478a sock_get_timestamp +EXPORT_SYMBOL vmlinux 0x3493e61e blk_mq_kick_requeue_list +EXPORT_SYMBOL vmlinux 0x349587ff vga_put +EXPORT_SYMBOL vmlinux 0x349cba85 strchr +EXPORT_SYMBOL vmlinux 0x34bf1763 bdgrab +EXPORT_SYMBOL vmlinux 0x34f0e046 gro_find_receive_by_type +EXPORT_SYMBOL vmlinux 0x34f3484e security_tun_dev_attach_queue +EXPORT_SYMBOL vmlinux 0x34f9bff3 pci_iomap +EXPORT_SYMBOL vmlinux 0x3517383e register_reboot_notifier +EXPORT_SYMBOL vmlinux 0x3517e9a3 i2c_release_client +EXPORT_SYMBOL vmlinux 0x352891e7 tty_kref_put +EXPORT_SYMBOL vmlinux 0x353de98f cmdline_parts_parse +EXPORT_SYMBOL vmlinux 0x353e21e3 acpi_bios_warning +EXPORT_SYMBOL vmlinux 0x356461c8 rtc_time64_to_tm +EXPORT_SYMBOL vmlinux 0x3587dfda freeze_super +EXPORT_SYMBOL vmlinux 0x358e791a lock_sock_fast +EXPORT_SYMBOL vmlinux 0x35a703b1 tty_unregister_driver +EXPORT_SYMBOL vmlinux 0x35a88f28 zlib_inflateInit2 +EXPORT_SYMBOL vmlinux 0x35ad5a41 fbcon_set_bitops +EXPORT_SYMBOL vmlinux 0x35e087d4 no_llseek +EXPORT_SYMBOL vmlinux 0x35e9038d register_xen_selfballooning +EXPORT_SYMBOL vmlinux 0x35ef59d7 end_buffer_write_sync +EXPORT_SYMBOL vmlinux 0x35f273ed dev_get_by_index_rcu +EXPORT_SYMBOL vmlinux 0x35fc188c kmem_cache_free +EXPORT_SYMBOL vmlinux 0x36089b90 seq_release +EXPORT_SYMBOL vmlinux 0x360a6615 bio_alloc_bioset +EXPORT_SYMBOL vmlinux 0x360b1afe probe_irq_mask +EXPORT_SYMBOL vmlinux 0x3615a1d4 qdisc_watchdog_schedule_ns +EXPORT_SYMBOL vmlinux 0x3615f9dd t10_pi_type1_crc +EXPORT_SYMBOL vmlinux 0x36226c3f netdev_update_features +EXPORT_SYMBOL vmlinux 0x3638797b kernel_getsockopt +EXPORT_SYMBOL vmlinux 0x363e00b8 skb_copy_and_csum_datagram_msg +EXPORT_SYMBOL vmlinux 0x3644dd61 mnt_drop_write_file +EXPORT_SYMBOL vmlinux 0x367ba856 __crc32c_le_shift +EXPORT_SYMBOL vmlinux 0x3680ae12 set_pages_uc +EXPORT_SYMBOL vmlinux 0x36875bb7 __task_pid_nr_ns +EXPORT_SYMBOL vmlinux 0x36a15af4 netdev_lower_dev_get_private +EXPORT_SYMBOL vmlinux 0x36a2aafb generic_writepages +EXPORT_SYMBOL vmlinux 0x36bd681b groups_alloc +EXPORT_SYMBOL vmlinux 0x36c6af51 intel_scu_ipc_iowrite8 +EXPORT_SYMBOL vmlinux 0x36fdda67 hdmi_infoframe_pack +EXPORT_SYMBOL vmlinux 0x3722da9c tcp_get_md5sig_pool +EXPORT_SYMBOL vmlinux 0x3739528c eth_header_parse +EXPORT_SYMBOL vmlinux 0x373a1f44 phy_ethtool_sset +EXPORT_SYMBOL vmlinux 0x37407079 __secpath_destroy +EXPORT_SYMBOL vmlinux 0x3744cf36 vmalloc_to_pfn +EXPORT_SYMBOL vmlinux 0x37584cfc kobject_get +EXPORT_SYMBOL vmlinux 0x375fb856 devfreq_monitor_start +EXPORT_SYMBOL vmlinux 0x3789a766 nf_unregister_hook +EXPORT_SYMBOL vmlinux 0x379b6a51 end_buffer_read_sync +EXPORT_SYMBOL vmlinux 0x379dee5f trace_print_symbols_seq_u64 +EXPORT_SYMBOL vmlinux 0x37ae5b6a __bread_gfp +EXPORT_SYMBOL vmlinux 0x37af3190 dm_table_run_md_queue_async +EXPORT_SYMBOL vmlinux 0x37befc70 jiffies_to_msecs +EXPORT_SYMBOL vmlinux 0x37d63632 blk_queue_physical_block_size +EXPORT_SYMBOL vmlinux 0x37db8f19 dmi_get_date +EXPORT_SYMBOL vmlinux 0x37df1d54 dmam_free_coherent +EXPORT_SYMBOL vmlinux 0x37e74642 get_jiffies_64 +EXPORT_SYMBOL vmlinux 0x37f610df __cleancache_init_shared_fs +EXPORT_SYMBOL vmlinux 0x37f614b7 __kfifo_len_r +EXPORT_SYMBOL vmlinux 0x37f6b5fd key_link +EXPORT_SYMBOL vmlinux 0x37fd5082 xfrm6_rcv +EXPORT_SYMBOL vmlinux 0x38099e13 wrmsrl_on_cpu +EXPORT_SYMBOL vmlinux 0x381144a9 __tracepoint_module_get +EXPORT_SYMBOL vmlinux 0x381a798a setup_max_cpus +EXPORT_SYMBOL vmlinux 0x381ccc13 __kfifo_dma_in_prepare_r +EXPORT_SYMBOL vmlinux 0x3838aa0b iterate_supers_type +EXPORT_SYMBOL vmlinux 0x3859bf97 inet6_register_icmp_sender +EXPORT_SYMBOL vmlinux 0x38626e0e phy_drivers_register +EXPORT_SYMBOL vmlinux 0x386fe8be phy_ethtool_get_eee +EXPORT_SYMBOL vmlinux 0x387303ad simple_setattr +EXPORT_SYMBOL vmlinux 0x38869d88 kstat +EXPORT_SYMBOL vmlinux 0x388799f6 unregister_kmmio_probe +EXPORT_SYMBOL vmlinux 0x388a3b62 ipv6_chk_addr +EXPORT_SYMBOL vmlinux 0x389dcb88 __frontswap_load +EXPORT_SYMBOL vmlinux 0x389ddbce do_splice_to +EXPORT_SYMBOL vmlinux 0x38a3dd2d kobject_set_name +EXPORT_SYMBOL vmlinux 0x38a6b815 generic_write_end +EXPORT_SYMBOL vmlinux 0x38a71b7e pci_free_resource_list +EXPORT_SYMBOL vmlinux 0x38a9f7c5 in6addr_loopback +EXPORT_SYMBOL vmlinux 0x38aa442d kmalloc_dma_caches +EXPORT_SYMBOL vmlinux 0x38aab844 devm_gpio_request +EXPORT_SYMBOL vmlinux 0x38af23d7 blk_limits_max_hw_sectors +EXPORT_SYMBOL vmlinux 0x38c4f9e8 tcp_sendpage +EXPORT_SYMBOL vmlinux 0x38d872d7 keyring_clear +EXPORT_SYMBOL vmlinux 0x38e0ade7 end_page_writeback +EXPORT_SYMBOL vmlinux 0x392b2e5a posix_lock_inode_wait +EXPORT_SYMBOL vmlinux 0x3939f8f0 rfkill_pause_polling +EXPORT_SYMBOL vmlinux 0x39461d6a in_egroup_p +EXPORT_SYMBOL vmlinux 0x39552b06 n_tty_ioctl_helper +EXPORT_SYMBOL vmlinux 0x39733d79 simple_transaction_read +EXPORT_SYMBOL vmlinux 0x397c4565 kernel_sock_ioctl +EXPORT_SYMBOL vmlinux 0x39820677 padata_register_cpumask_notifier +EXPORT_SYMBOL vmlinux 0x39991865 icmp_global_allow +EXPORT_SYMBOL vmlinux 0x399e074f i2c_transfer +EXPORT_SYMBOL vmlinux 0x39a055f3 acpi_remove_gpe_handler +EXPORT_SYMBOL vmlinux 0x39b52d19 __bitmap_and +EXPORT_SYMBOL vmlinux 0x39cd8c66 flush_old_exec +EXPORT_SYMBOL vmlinux 0x39e18984 poll_freewait +EXPORT_SYMBOL vmlinux 0x39eaa7a9 acpi_bus_get_device +EXPORT_SYMBOL vmlinux 0x39f1c2f4 ida_get_new_above +EXPORT_SYMBOL vmlinux 0x39f5d394 phy_attach_direct +EXPORT_SYMBOL vmlinux 0x3a0154af iov_iter_get_pages +EXPORT_SYMBOL vmlinux 0x3a08475f platform_thermal_notify +EXPORT_SYMBOL vmlinux 0x3a0b39e5 make_kgid +EXPORT_SYMBOL vmlinux 0x3a1ac054 set_normalized_timespec64 +EXPORT_SYMBOL vmlinux 0x3a1f5456 tty_free_termios +EXPORT_SYMBOL vmlinux 0x3a2a8a87 setattr_copy +EXPORT_SYMBOL vmlinux 0x3a327a36 buffer_check_dirty_writeback +EXPORT_SYMBOL vmlinux 0x3a32839e intel_gtt_chipset_flush +EXPORT_SYMBOL vmlinux 0x3a3a9743 bioset_integrity_free +EXPORT_SYMBOL vmlinux 0x3a416dd7 param_get_ushort +EXPORT_SYMBOL vmlinux 0x3a4f8b26 dma_common_mmap +EXPORT_SYMBOL vmlinux 0x3a5eefd2 request_key_async_with_auxdata +EXPORT_SYMBOL vmlinux 0x3a748227 d_alloc +EXPORT_SYMBOL vmlinux 0x3a7cd5b1 mmc_set_blocklen +EXPORT_SYMBOL vmlinux 0x3a9b6fb9 blk_unregister_region +EXPORT_SYMBOL vmlinux 0x3abac858 qdisc_destroy +EXPORT_SYMBOL vmlinux 0x3ac4b406 tcp_shutdown +EXPORT_SYMBOL vmlinux 0x3ad4e11e xfrm_state_update +EXPORT_SYMBOL vmlinux 0x3ae45420 tcp_close +EXPORT_SYMBOL vmlinux 0x3af452da ps2_handle_response +EXPORT_SYMBOL vmlinux 0x3b201620 machine_real_restart +EXPORT_SYMBOL vmlinux 0x3b3fb3b1 alloc_anon_inode +EXPORT_SYMBOL vmlinux 0x3b3fc2f6 inetdev_by_index +EXPORT_SYMBOL vmlinux 0x3b4a5f82 is_nvdimm_bus_locked +EXPORT_SYMBOL vmlinux 0x3b4a9c96 __nd_iostat_start +EXPORT_SYMBOL vmlinux 0x3b4abbe0 param_get_charp +EXPORT_SYMBOL vmlinux 0x3b5780c0 iov_iter_bvec +EXPORT_SYMBOL vmlinux 0x3b5e367f atomic_dec_and_mutex_lock +EXPORT_SYMBOL vmlinux 0x3b644591 __bitmap_shift_left +EXPORT_SYMBOL vmlinux 0x3b6e4742 scsi_cmd_ioctl +EXPORT_SYMBOL vmlinux 0x3b6f6cd2 udp_table +EXPORT_SYMBOL vmlinux 0x3b76120f bdi_set_max_ratio +EXPORT_SYMBOL vmlinux 0x3b8dd62a tty_flip_buffer_push +EXPORT_SYMBOL vmlinux 0x3ba765c4 fput +EXPORT_SYMBOL vmlinux 0x3bb5114a prepare_to_wait +EXPORT_SYMBOL vmlinux 0x3bd6bce4 seq_escape +EXPORT_SYMBOL vmlinux 0x3c048923 sock_no_bind +EXPORT_SYMBOL vmlinux 0x3c143e36 scsi_execute_req_flags +EXPORT_SYMBOL vmlinux 0x3c1b6213 vga_switcheroo_client_fb_set +EXPORT_SYMBOL vmlinux 0x3c2c15d3 try_module_get +EXPORT_SYMBOL vmlinux 0x3c375c7e i2c_clients_command +EXPORT_SYMBOL vmlinux 0x3c38288c blk_stop_queue +EXPORT_SYMBOL vmlinux 0x3c3fce39 __local_bh_enable_ip +EXPORT_SYMBOL vmlinux 0x3c70d973 blk_get_queue +EXPORT_SYMBOL vmlinux 0x3c80c06c kstrtoull +EXPORT_SYMBOL vmlinux 0x3cb3931b sg_copy_to_buffer +EXPORT_SYMBOL vmlinux 0x3cbd74dd inet_ioctl +EXPORT_SYMBOL vmlinux 0x3ce4ca6f disable_irq +EXPORT_SYMBOL vmlinux 0x3cfd3225 kernel_getsockname +EXPORT_SYMBOL vmlinux 0x3d1d10f0 led_blink_set +EXPORT_SYMBOL vmlinux 0x3d2160ce blk_end_request_cur +EXPORT_SYMBOL vmlinux 0x3d2d32f9 netif_set_xps_queue +EXPORT_SYMBOL vmlinux 0x3d313805 generic_file_splice_read +EXPORT_SYMBOL vmlinux 0x3d318b07 dev_uc_add +EXPORT_SYMBOL vmlinux 0x3d3de705 skb_clone +EXPORT_SYMBOL vmlinux 0x3d42261f xfrm_state_delete +EXPORT_SYMBOL vmlinux 0x3d4903b4 __scm_send +EXPORT_SYMBOL vmlinux 0x3d4ecc94 acpi_pm_device_run_wake +EXPORT_SYMBOL vmlinux 0x3d69d532 forget_cached_acl +EXPORT_SYMBOL vmlinux 0x3d7c1ed7 msrs_alloc +EXPORT_SYMBOL vmlinux 0x3d812080 reservation_object_add_shared_fence +EXPORT_SYMBOL vmlinux 0x3d8531c7 generic_update_time +EXPORT_SYMBOL vmlinux 0x3d9d912f security_inode_init_security +EXPORT_SYMBOL vmlinux 0x3da171f9 pci_mem_start +EXPORT_SYMBOL vmlinux 0x3da19c2c neigh_proc_dointvec_jiffies +EXPORT_SYMBOL vmlinux 0x3db6147d xfrm4_protocol_register +EXPORT_SYMBOL vmlinux 0x3dbbf2f9 jbd2_journal_blocks_per_page +EXPORT_SYMBOL vmlinux 0x3dcb88a0 irq_set_handler_data +EXPORT_SYMBOL vmlinux 0x3ddb90aa scsi_is_target_device +EXPORT_SYMBOL vmlinux 0x3deb9645 scsi_cmd_blk_ioctl +EXPORT_SYMBOL vmlinux 0x3dfc897c seq_hlist_start_head +EXPORT_SYMBOL vmlinux 0x3dfe7a8f filemap_write_and_wait_range +EXPORT_SYMBOL vmlinux 0x3e2ae3a8 acpi_release_global_lock +EXPORT_SYMBOL vmlinux 0x3e2da96d sk_ns_capable +EXPORT_SYMBOL vmlinux 0x3e3de22f param_set_invbool +EXPORT_SYMBOL vmlinux 0x3e583505 devm_clk_get +EXPORT_SYMBOL vmlinux 0x3e654f49 acpi_decode_pld_buffer +EXPORT_SYMBOL vmlinux 0x3e6bfedc proc_set_size +EXPORT_SYMBOL vmlinux 0x3e882943 pcibios_align_resource +EXPORT_SYMBOL vmlinux 0x3e9110fa __hw_addr_unsync +EXPORT_SYMBOL vmlinux 0x3e95083c vme_slave_get +EXPORT_SYMBOL vmlinux 0x3ea9039c netpoll_cleanup +EXPORT_SYMBOL vmlinux 0x3eaa260b read_cache_page +EXPORT_SYMBOL vmlinux 0x3eba1c7f ata_print_version +EXPORT_SYMBOL vmlinux 0x3ed0ec41 backlight_force_update +EXPORT_SYMBOL vmlinux 0x3ef30480 inode_set_flags +EXPORT_SYMBOL vmlinux 0x3ef78d80 vm_get_page_prot +EXPORT_SYMBOL vmlinux 0x3eff5ac2 intel_scu_ipc_writev +EXPORT_SYMBOL vmlinux 0x3f0546a8 ioread32_rep +EXPORT_SYMBOL vmlinux 0x3f0d9f32 _raw_read_trylock +EXPORT_SYMBOL vmlinux 0x3f0f6cd6 dcb_ieee_delapp +EXPORT_SYMBOL vmlinux 0x3f1ac182 blk_get_request +EXPORT_SYMBOL vmlinux 0x3f20ca97 rtc_lock +EXPORT_SYMBOL vmlinux 0x3f42da5d _raw_write_unlock_irq +EXPORT_SYMBOL vmlinux 0x3f4547a7 put_unused_fd +EXPORT_SYMBOL vmlinux 0x3f5efb87 neigh_sysctl_unregister +EXPORT_SYMBOL vmlinux 0x3f616ce2 queue_delayed_work_on +EXPORT_SYMBOL vmlinux 0x3f72e989 nobh_write_end +EXPORT_SYMBOL vmlinux 0x3fabeb40 simple_statfs +EXPORT_SYMBOL vmlinux 0x3fc53ac4 write_one_page +EXPORT_SYMBOL vmlinux 0x3fd36e38 dev_get_by_index +EXPORT_SYMBOL vmlinux 0x3fec048f sg_next +EXPORT_SYMBOL vmlinux 0x3ffaa271 wait_iff_congested +EXPORT_SYMBOL vmlinux 0x3ffc7a93 input_reset_device +EXPORT_SYMBOL vmlinux 0x40181e70 dentry_path_raw +EXPORT_SYMBOL vmlinux 0x4024e8a4 posix_acl_from_xattr +EXPORT_SYMBOL vmlinux 0x402b8281 __request_module +EXPORT_SYMBOL vmlinux 0x4039918a clk_register_clkdev +EXPORT_SYMBOL vmlinux 0x403dbfc1 mntget +EXPORT_SYMBOL vmlinux 0x4059792f print_hex_dump +EXPORT_SYMBOL vmlinux 0x405c1144 get_seconds +EXPORT_SYMBOL vmlinux 0x406ba2be noop_llseek +EXPORT_SYMBOL vmlinux 0x40711ee5 dquot_writeback_dquots +EXPORT_SYMBOL vmlinux 0x407bf258 blk_queue_logical_block_size +EXPORT_SYMBOL vmlinux 0x40973662 sysctl_udp_mem +EXPORT_SYMBOL vmlinux 0x4097fa45 acpi_read_bit_register +EXPORT_SYMBOL vmlinux 0x409873e3 tty_termios_baud_rate +EXPORT_SYMBOL vmlinux 0x409c2164 dmam_pool_create +EXPORT_SYMBOL vmlinux 0x40a27c37 scsi_dev_info_remove_list +EXPORT_SYMBOL vmlinux 0x40a2d1dd dm_table_get_size +EXPORT_SYMBOL vmlinux 0x40a9b349 vzalloc +EXPORT_SYMBOL vmlinux 0x40c01859 gen_pool_best_fit +EXPORT_SYMBOL vmlinux 0x40c7247c si_meminfo +EXPORT_SYMBOL vmlinux 0x40c89d46 acpi_get_table_by_index +EXPORT_SYMBOL vmlinux 0x40c9225d __devm_gpiod_get_index +EXPORT_SYMBOL vmlinux 0x40d04664 console_trylock +EXPORT_SYMBOL vmlinux 0x40d59096 unregister_restart_handler +EXPORT_SYMBOL vmlinux 0x40f7e24a tty_driver_kref_put +EXPORT_SYMBOL vmlinux 0x410d3336 netlink_capable +EXPORT_SYMBOL vmlinux 0x411448df netlink_set_err +EXPORT_SYMBOL vmlinux 0x412a268e param_ops_bint +EXPORT_SYMBOL vmlinux 0x412fa3a4 elevator_change +EXPORT_SYMBOL vmlinux 0x413150a3 devm_ioport_unmap +EXPORT_SYMBOL vmlinux 0x41482d8b strndup_user +EXPORT_SYMBOL vmlinux 0x4155c771 import_iovec +EXPORT_SYMBOL vmlinux 0x416bde26 register_framebuffer +EXPORT_SYMBOL vmlinux 0x416fdc9d pci_request_selected_regions +EXPORT_SYMBOL vmlinux 0x41862ad4 vme_alloc_consistent +EXPORT_SYMBOL vmlinux 0x4188d439 neigh_rand_reach_time +EXPORT_SYMBOL vmlinux 0x418a5367 __scsi_format_command +EXPORT_SYMBOL vmlinux 0x418b6631 pci_set_dma_seg_boundary +EXPORT_SYMBOL vmlinux 0x41b680b7 tcp_prot +EXPORT_SYMBOL vmlinux 0x41d0adf9 blk_rq_set_block_pc +EXPORT_SYMBOL vmlinux 0x41d860c1 xfrm_find_acq_byseq +EXPORT_SYMBOL vmlinux 0x41f014f3 ip6_expire_frag_queue +EXPORT_SYMBOL vmlinux 0x41fe5890 __dynamic_netdev_dbg +EXPORT_SYMBOL vmlinux 0x42104ba4 mmc_release_host +EXPORT_SYMBOL vmlinux 0x42160169 flush_workqueue +EXPORT_SYMBOL vmlinux 0x42350e8d ucs2_strlen +EXPORT_SYMBOL vmlinux 0x4248ae3c single_task_running +EXPORT_SYMBOL vmlinux 0x424d3620 zlib_inflateIncomp +EXPORT_SYMBOL vmlinux 0x4256cf9c current_task +EXPORT_SYMBOL vmlinux 0x42595e58 vgacon_text_force +EXPORT_SYMBOL vmlinux 0x427ed458 ipv6_chk_prefix +EXPORT_SYMBOL vmlinux 0x428e4b7a da903x_query_status +EXPORT_SYMBOL vmlinux 0x4292364c schedule +EXPORT_SYMBOL vmlinux 0x4292ba3b dev_mc_del_global +EXPORT_SYMBOL vmlinux 0x42a1b208 gen_pool_first_fit +EXPORT_SYMBOL vmlinux 0x42a8ef57 seq_path +EXPORT_SYMBOL vmlinux 0x42b942b1 sync_dirty_buffer +EXPORT_SYMBOL vmlinux 0x42c8de35 ioremap_nocache +EXPORT_SYMBOL vmlinux 0x42d01861 phy_detach +EXPORT_SYMBOL vmlinux 0x42eacc41 sget +EXPORT_SYMBOL vmlinux 0x42f90ffc blk_put_queue +EXPORT_SYMBOL vmlinux 0x4302d0eb free_pages +EXPORT_SYMBOL vmlinux 0x431893b9 generic_pipe_buf_release +EXPORT_SYMBOL vmlinux 0x433f5af8 xfrm_state_lookup_byaddr +EXPORT_SYMBOL vmlinux 0x4351577a fb_parse_edid +EXPORT_SYMBOL vmlinux 0x435d9002 try_to_writeback_inodes_sb +EXPORT_SYMBOL vmlinux 0x435efabe tty_insert_flip_string_fixed_flag +EXPORT_SYMBOL vmlinux 0x43633720 generic_pipe_buf_steal +EXPORT_SYMBOL vmlinux 0x4365864f sock_create +EXPORT_SYMBOL vmlinux 0x436c2179 iowrite32 +EXPORT_SYMBOL vmlinux 0x4381103a blk_queue_init_tags +EXPORT_SYMBOL vmlinux 0x438610bd security_tun_dev_alloc_security +EXPORT_SYMBOL vmlinux 0x4399c24c mmc_wait_for_app_cmd +EXPORT_SYMBOL vmlinux 0x43af0b37 sock_no_shutdown +EXPORT_SYMBOL vmlinux 0x43cc34f5 pcim_iomap_regions_request_all +EXPORT_SYMBOL vmlinux 0x43f23311 dm_table_get_md +EXPORT_SYMBOL vmlinux 0x440597c4 d_splice_alias +EXPORT_SYMBOL vmlinux 0x4410f8bf kobject_init +EXPORT_SYMBOL vmlinux 0x4411c503 prandom_seed +EXPORT_SYMBOL vmlinux 0x441d021f blkdev_issue_write_same +EXPORT_SYMBOL vmlinux 0x4423c90f neigh_seq_stop +EXPORT_SYMBOL vmlinux 0x442fdc60 do_splice_direct +EXPORT_SYMBOL vmlinux 0x44366cfc simple_write_to_buffer +EXPORT_SYMBOL vmlinux 0x44438b96 hex2bin +EXPORT_SYMBOL vmlinux 0x444591f6 proc_mkdir_mode +EXPORT_SYMBOL vmlinux 0x4478d4d5 elevator_init +EXPORT_SYMBOL vmlinux 0x448e085f prepare_to_wait_exclusive +EXPORT_SYMBOL vmlinux 0x449fe84b acpi_set_firmware_waking_vectors +EXPORT_SYMBOL vmlinux 0x44aaf30f tsc_khz +EXPORT_SYMBOL vmlinux 0x44b1d426 __dynamic_pr_debug +EXPORT_SYMBOL vmlinux 0x44e1064f fb_class +EXPORT_SYMBOL vmlinux 0x44e178ee neigh_table_clear +EXPORT_SYMBOL vmlinux 0x44e9a829 match_token +EXPORT_SYMBOL vmlinux 0x44f69964 _raw_read_unlock_bh +EXPORT_SYMBOL vmlinux 0x44f69b12 request_key_async +EXPORT_SYMBOL vmlinux 0x44fe963a netdev_emerg +EXPORT_SYMBOL vmlinux 0x45081703 ec_get_handle +EXPORT_SYMBOL vmlinux 0x4518a870 generic_file_read_iter +EXPORT_SYMBOL vmlinux 0x4527ae87 passthru_features_check +EXPORT_SYMBOL vmlinux 0x453c8403 pci_msi_enabled +EXPORT_SYMBOL vmlinux 0x4540ccc5 dcbnl_ieee_notify +EXPORT_SYMBOL vmlinux 0x456fd63b i2c_master_send +EXPORT_SYMBOL vmlinux 0x4578f528 __kfifo_to_user +EXPORT_SYMBOL vmlinux 0x458b0612 d_instantiate +EXPORT_SYMBOL vmlinux 0x45947b5a backlight_device_register +EXPORT_SYMBOL vmlinux 0x45a6be13 cpufreq_sysfs_remove_file +EXPORT_SYMBOL vmlinux 0x45a765cf pci_add_resource +EXPORT_SYMBOL vmlinux 0x45a797b0 netdev_all_upper_get_next_dev_rcu +EXPORT_SYMBOL vmlinux 0x45c55079 input_release_device +EXPORT_SYMBOL vmlinux 0x45c7057f __dquot_free_space +EXPORT_SYMBOL vmlinux 0x45ced340 netdev_alert +EXPORT_SYMBOL vmlinux 0x45d58b30 agp_generic_destroy_page +EXPORT_SYMBOL vmlinux 0x460eedb1 md_finish_reshape +EXPORT_SYMBOL vmlinux 0x4629334c __preempt_count +EXPORT_SYMBOL vmlinux 0x462a2e75 match_strlcpy +EXPORT_SYMBOL vmlinux 0x464438e2 tcp_get_cookie_sock +EXPORT_SYMBOL vmlinux 0x46507c87 elv_add_request +EXPORT_SYMBOL vmlinux 0x4657a933 con_set_default_unimap +EXPORT_SYMBOL vmlinux 0x465cab34 secure_ipv6_port_ephemeral +EXPORT_SYMBOL vmlinux 0x46649cd1 vme_lm_set +EXPORT_SYMBOL vmlinux 0x466c14a7 __delay +EXPORT_SYMBOL vmlinux 0x466cb5c1 pfifo_qdisc_ops +EXPORT_SYMBOL vmlinux 0x4675439f d_set_d_op +EXPORT_SYMBOL vmlinux 0x467d57e0 vlan_vid_add +EXPORT_SYMBOL vmlinux 0x46ac0ce1 tty_port_tty_set +EXPORT_SYMBOL vmlinux 0x46d166a4 dcb_ieee_setapp +EXPORT_SYMBOL vmlinux 0x46dbeda5 ethtool_op_get_ts_info +EXPORT_SYMBOL vmlinux 0x46ee915e blk_dump_rq_flags +EXPORT_SYMBOL vmlinux 0x46feb099 dm_read_arg +EXPORT_SYMBOL vmlinux 0x47416e14 cpu_rmap_add +EXPORT_SYMBOL vmlinux 0x475f010b acpi_purge_cached_objects +EXPORT_SYMBOL vmlinux 0x4761dafd elv_rb_find +EXPORT_SYMBOL vmlinux 0x47638a4b param_set_copystring +EXPORT_SYMBOL vmlinux 0x476aa852 remove_proc_subtree +EXPORT_SYMBOL vmlinux 0x476b4d64 __skb_get_hash_flowi4 +EXPORT_SYMBOL vmlinux 0x47752015 jbd2_journal_free_reserved +EXPORT_SYMBOL vmlinux 0x477a9687 dev_uc_flush +EXPORT_SYMBOL vmlinux 0x478d10b2 ht_destroy_irq +EXPORT_SYMBOL vmlinux 0x47939e0d __tasklet_hi_schedule +EXPORT_SYMBOL vmlinux 0x479c3c86 find_next_zero_bit +EXPORT_SYMBOL vmlinux 0x47b79f7b generic_file_direct_write +EXPORT_SYMBOL vmlinux 0x47c6ead7 blk_queue_max_segment_size +EXPORT_SYMBOL vmlinux 0x47ca2e9a pci_bus_write_config_dword +EXPORT_SYMBOL vmlinux 0x47db0e59 complete_request_key +EXPORT_SYMBOL vmlinux 0x47e18412 generic_shutdown_super +EXPORT_SYMBOL vmlinux 0x47e1d8b5 dmam_alloc_noncoherent +EXPORT_SYMBOL vmlinux 0x47ecc53b jbd2_journal_set_triggers +EXPORT_SYMBOL vmlinux 0x47ee0551 ata_link_printk +EXPORT_SYMBOL vmlinux 0x480e2987 clkdev_add +EXPORT_SYMBOL vmlinux 0x48193639 acpi_lid_open +EXPORT_SYMBOL vmlinux 0x481cb9ab acpi_enter_sleep_state_prep +EXPORT_SYMBOL vmlinux 0x4842ad39 blk_integrity_merge_rq +EXPORT_SYMBOL vmlinux 0x4859b8bb rtc_year_days +EXPORT_SYMBOL vmlinux 0x486eeada free_task +EXPORT_SYMBOL vmlinux 0x488ebaec iw_handler_set_thrspy +EXPORT_SYMBOL vmlinux 0x4891f1a7 bmap +EXPORT_SYMBOL vmlinux 0x4896e125 genl_unregister_family +EXPORT_SYMBOL vmlinux 0x489c9c58 ip6_route_output +EXPORT_SYMBOL vmlinux 0x48af24a6 kernel_sendpage +EXPORT_SYMBOL vmlinux 0x48b99a13 vme_lm_free +EXPORT_SYMBOL vmlinux 0x48cfd665 netif_skb_features +EXPORT_SYMBOL vmlinux 0x49009b0a phy_stop_interrupts +EXPORT_SYMBOL vmlinux 0x49045426 icmp_err_convert +EXPORT_SYMBOL vmlinux 0x49066ed5 dev_mc_add +EXPORT_SYMBOL vmlinux 0x490c68af security_sb_clone_mnt_opts +EXPORT_SYMBOL vmlinux 0x495c7845 scsi_add_host_with_dma +EXPORT_SYMBOL vmlinux 0x495c96f8 posix_acl_init +EXPORT_SYMBOL vmlinux 0x49603fb8 security_sb_copy_data +EXPORT_SYMBOL vmlinux 0x49701619 mfd_remove_devices +EXPORT_SYMBOL vmlinux 0x49a11eba blk_queue_io_opt +EXPORT_SYMBOL vmlinux 0x49af7a90 acpi_bus_register_driver +EXPORT_SYMBOL vmlinux 0x49b07aec tcp_select_initial_window +EXPORT_SYMBOL vmlinux 0x49b163b8 acpi_bus_scan +EXPORT_SYMBOL vmlinux 0x49dfac0a dev_vprintk_emit +EXPORT_SYMBOL vmlinux 0x49e115c2 swiotlb_sync_sg_for_device +EXPORT_SYMBOL vmlinux 0x49e3c09c d_instantiate_unique +EXPORT_SYMBOL vmlinux 0x49f28080 pci_find_bus +EXPORT_SYMBOL vmlinux 0x49f71442 dev_close_many +EXPORT_SYMBOL vmlinux 0x4a11dd31 inc_nlink +EXPORT_SYMBOL vmlinux 0x4a13ae59 vga_switcheroo_get_client_state +EXPORT_SYMBOL vmlinux 0x4a16c6f4 scsi_host_lookup +EXPORT_SYMBOL vmlinux 0x4a2c9c3c scsi_device_lookup_by_target +EXPORT_SYMBOL vmlinux 0x4a3b8157 fs_bio_set +EXPORT_SYMBOL vmlinux 0x4a43ca2a vme_slot_num +EXPORT_SYMBOL vmlinux 0x4a619f83 memcpy +EXPORT_SYMBOL vmlinux 0x4a650636 fb_set_var +EXPORT_SYMBOL vmlinux 0x4a669091 input_mt_assign_slots +EXPORT_SYMBOL vmlinux 0x4a680334 inode_add_bytes +EXPORT_SYMBOL vmlinux 0x4a756c41 dma_pool_create +EXPORT_SYMBOL vmlinux 0x4a84fa43 wait_for_key_construction +EXPORT_SYMBOL vmlinux 0x4a8b1cf1 down_write +EXPORT_SYMBOL vmlinux 0x4a909ddb ihold +EXPORT_SYMBOL vmlinux 0x4a956a3e thermal_cdev_update +EXPORT_SYMBOL vmlinux 0x4aad9a51 pci_bus_add_devices +EXPORT_SYMBOL vmlinux 0x4ab674d5 jbd2_journal_start +EXPORT_SYMBOL vmlinux 0x4abbe3c2 vm_brk +EXPORT_SYMBOL vmlinux 0x4ac5c167 simple_dname +EXPORT_SYMBOL vmlinux 0x4acd93d3 release_resource +EXPORT_SYMBOL vmlinux 0x4acdf55a inet_csk_prepare_forced_close +EXPORT_SYMBOL vmlinux 0x4ae467b4 generic_file_mmap +EXPORT_SYMBOL vmlinux 0x4af95d5a nvdimm_namespace_disk_name +EXPORT_SYMBOL vmlinux 0x4afe9a77 scsi_partsize +EXPORT_SYMBOL vmlinux 0x4b085dbf agp3_generic_configure +EXPORT_SYMBOL vmlinux 0x4b164591 dev_err +EXPORT_SYMBOL vmlinux 0x4b16d476 vga_switcheroo_init_domain_pm_ops +EXPORT_SYMBOL vmlinux 0x4b1eb2ac rawv6_mh_filter_unregister +EXPORT_SYMBOL vmlinux 0x4b1ec3e2 kstrtoul_from_user +EXPORT_SYMBOL vmlinux 0x4b2abe09 ip_defrag +EXPORT_SYMBOL vmlinux 0x4b32dda3 pid_task +EXPORT_SYMBOL vmlinux 0x4b34fbf5 block_all_signals +EXPORT_SYMBOL vmlinux 0x4b3bff05 qdisc_list_del +EXPORT_SYMBOL vmlinux 0x4b482bba sk_prot_clear_portaddr_nulls +EXPORT_SYMBOL vmlinux 0x4b5fd49e dm_kcopyd_do_callback +EXPORT_SYMBOL vmlinux 0x4b60ae61 dma_release_declared_memory +EXPORT_SYMBOL vmlinux 0x4b667176 lg_local_lock_cpu +EXPORT_SYMBOL vmlinux 0x4b96bf12 tty_port_hangup +EXPORT_SYMBOL vmlinux 0x4b9dfb04 _raw_spin_trylock_bh +EXPORT_SYMBOL vmlinux 0x4ba4f688 release_pages +EXPORT_SYMBOL vmlinux 0x4baf35a7 vme_master_get +EXPORT_SYMBOL vmlinux 0x4bb0778e vm_stat +EXPORT_SYMBOL vmlinux 0x4bcf03a4 radix_tree_tag_clear +EXPORT_SYMBOL vmlinux 0x4bd15a72 vme_master_mmap +EXPORT_SYMBOL vmlinux 0x4be85a03 memweight +EXPORT_SYMBOL vmlinux 0x4be88926 ip_mc_dec_group +EXPORT_SYMBOL vmlinux 0x4bec90ff ip_do_fragment +EXPORT_SYMBOL vmlinux 0x4c0e44db __block_page_mkwrite +EXPORT_SYMBOL vmlinux 0x4c125dff make_kprojid +EXPORT_SYMBOL vmlinux 0x4c169a65 add_to_page_cache_locked +EXPORT_SYMBOL vmlinux 0x4c287932 pci_iounmap +EXPORT_SYMBOL vmlinux 0x4c29dcbf cancel_delayed_work_sync +EXPORT_SYMBOL vmlinux 0x4c2ae700 strnstr +EXPORT_SYMBOL vmlinux 0x4c2fdd72 contig_page_data +EXPORT_SYMBOL vmlinux 0x4c346a53 kvasprintf +EXPORT_SYMBOL vmlinux 0x4c6791f9 page_cache_prev_hole +EXPORT_SYMBOL vmlinux 0x4c7607e3 inet_rtx_syn_ack +EXPORT_SYMBOL vmlinux 0x4c816b53 scsi_change_queue_depth +EXPORT_SYMBOL vmlinux 0x4c878322 iosf_mbi_modify +EXPORT_SYMBOL vmlinux 0x4c889ce2 napi_complete_done +EXPORT_SYMBOL vmlinux 0x4cb6e133 __kernel_write +EXPORT_SYMBOL vmlinux 0x4cbbfc10 i2c_put_adapter +EXPORT_SYMBOL vmlinux 0x4cc7aba1 dev_uc_init +EXPORT_SYMBOL vmlinux 0x4cdb3178 ns_to_timeval +EXPORT_SYMBOL vmlinux 0x4ce09781 generic_make_request +EXPORT_SYMBOL vmlinux 0x4cea8302 ___preempt_schedule_notrace +EXPORT_SYMBOL vmlinux 0x4d294bb4 bit_wait_io +EXPORT_SYMBOL vmlinux 0x4d34cb0d sk_wait_data +EXPORT_SYMBOL vmlinux 0x4d3c153f sigprocmask +EXPORT_SYMBOL vmlinux 0x4d45d89e udp_memory_allocated +EXPORT_SYMBOL vmlinux 0x4d4bc2c3 free_user_ns +EXPORT_SYMBOL vmlinux 0x4d974b9c register_sysrq_key +EXPORT_SYMBOL vmlinux 0x4d9b652b rb_erase +EXPORT_SYMBOL vmlinux 0x4da34b67 kthread_create_on_node +EXPORT_SYMBOL vmlinux 0x4da875f8 sock_edemux +EXPORT_SYMBOL vmlinux 0x4db6818b dquot_quota_on_mount +EXPORT_SYMBOL vmlinux 0x4dcccae2 blk_mq_abort_requeue_list +EXPORT_SYMBOL vmlinux 0x4de34a07 cpu_rmap_put +EXPORT_SYMBOL vmlinux 0x4df119fa __bitmap_parse +EXPORT_SYMBOL vmlinux 0x4dfd8313 uart_register_driver +EXPORT_SYMBOL vmlinux 0x4e12e9bb __register_chrdev +EXPORT_SYMBOL vmlinux 0x4e342036 blk_queue_update_dma_alignment +EXPORT_SYMBOL vmlinux 0x4e3567f7 match_int +EXPORT_SYMBOL vmlinux 0x4e4b2958 notify_change +EXPORT_SYMBOL vmlinux 0x4e4c944a tty_vhangup +EXPORT_SYMBOL vmlinux 0x4e66eca4 locks_free_lock +EXPORT_SYMBOL vmlinux 0x4e68e9be rb_next_postorder +EXPORT_SYMBOL vmlinux 0x4e6e8ea7 fg_console +EXPORT_SYMBOL vmlinux 0x4e985e24 i2c_smbus_write_i2c_block_data +EXPORT_SYMBOL vmlinux 0x4ea25709 dql_reset +EXPORT_SYMBOL vmlinux 0x4ef799d7 vlan_dev_vlan_proto +EXPORT_SYMBOL vmlinux 0x4f1cd128 security_tun_dev_create +EXPORT_SYMBOL vmlinux 0x4f2250ba rtc_tm_to_time64 +EXPORT_SYMBOL vmlinux 0x4f2aebd5 i8042_check_port_owner +EXPORT_SYMBOL vmlinux 0x4f30b927 jbd2_complete_transaction +EXPORT_SYMBOL vmlinux 0x4f391d0e nla_parse +EXPORT_SYMBOL vmlinux 0x4f476e96 init_cdrom_command +EXPORT_SYMBOL vmlinux 0x4f519422 fifo_create_dflt +EXPORT_SYMBOL vmlinux 0x4f5faed1 cdrom_open +EXPORT_SYMBOL vmlinux 0x4f68e5c9 do_gettimeofday +EXPORT_SYMBOL vmlinux 0x4f6b400b _copy_from_user +EXPORT_SYMBOL vmlinux 0x4f783f30 acpi_read +EXPORT_SYMBOL vmlinux 0x4f8b5ddb _copy_to_user +EXPORT_SYMBOL vmlinux 0x4f8d837c generic_file_readonly_mmap +EXPORT_SYMBOL vmlinux 0x4faebf31 dma_async_tx_descriptor_init +EXPORT_SYMBOL vmlinux 0x4fdee897 i8042_command +EXPORT_SYMBOL vmlinux 0x4ff215fd request_firmware +EXPORT_SYMBOL vmlinux 0x4ffc4ee2 tcp_md5_do_add +EXPORT_SYMBOL vmlinux 0x500098e0 serio_open +EXPORT_SYMBOL vmlinux 0x50097088 security_tun_dev_free_security +EXPORT_SYMBOL vmlinux 0x501c38b6 crypto_sha1_finup +EXPORT_SYMBOL vmlinux 0x501dad5e skb_put +EXPORT_SYMBOL vmlinux 0x50529870 acpi_get_gpe_status +EXPORT_SYMBOL vmlinux 0x5053f901 seq_release_private +EXPORT_SYMBOL vmlinux 0x5063df40 __posix_acl_create +EXPORT_SYMBOL vmlinux 0x5079d1d4 trace_print_hex_seq +EXPORT_SYMBOL vmlinux 0x50972e46 led_set_brightness +EXPORT_SYMBOL vmlinux 0x509b64ea acpi_has_method +EXPORT_SYMBOL vmlinux 0x50a54cde netif_rx +EXPORT_SYMBOL vmlinux 0x50b66bcb radix_tree_next_chunk +EXPORT_SYMBOL vmlinux 0x50b89218 pm860x_bulk_write +EXPORT_SYMBOL vmlinux 0x50c1f0ce __skb_warn_lro_forwarding +EXPORT_SYMBOL vmlinux 0x50d68377 arch_phys_wc_del +EXPORT_SYMBOL vmlinux 0x50ded37c __posix_acl_chmod +EXPORT_SYMBOL vmlinux 0x50e0f424 dm_put_device +EXPORT_SYMBOL vmlinux 0x50eedeb8 printk +EXPORT_SYMBOL vmlinux 0x510c046c blk_pre_runtime_resume +EXPORT_SYMBOL vmlinux 0x5118c382 secure_dccp_sequence_number +EXPORT_SYMBOL vmlinux 0x5137ed24 jbd2_journal_lock_updates +EXPORT_SYMBOL vmlinux 0x51550225 mpage_readpage +EXPORT_SYMBOL vmlinux 0x51719973 dq_data_lock +EXPORT_SYMBOL vmlinux 0x51803f44 mmc_gpio_set_cd_isr +EXPORT_SYMBOL vmlinux 0x5186518f profile_pc +EXPORT_SYMBOL vmlinux 0x51d12d4e acpi_pci_disabled +EXPORT_SYMBOL vmlinux 0x51ef33b8 kstrndup +EXPORT_SYMBOL vmlinux 0x51fc1e13 irq_set_chip +EXPORT_SYMBOL vmlinux 0x52026cdf security_sb_parse_opts_str +EXPORT_SYMBOL vmlinux 0x5206002d __ethtool_get_settings +EXPORT_SYMBOL vmlinux 0x52095e19 acpi_get_data +EXPORT_SYMBOL vmlinux 0x520a4248 tcf_em_register +EXPORT_SYMBOL vmlinux 0x521b36b5 qdisc_put_rtab +EXPORT_SYMBOL vmlinux 0x522e438f kernel_connect +EXPORT_SYMBOL vmlinux 0x522f0dde padata_set_cpumask +EXPORT_SYMBOL vmlinux 0x523ab062 __skb_flow_dissect +EXPORT_SYMBOL vmlinux 0x5242735e scsi_ioctl_reset +EXPORT_SYMBOL vmlinux 0x52428cc8 parent_mem_cgroup +EXPORT_SYMBOL vmlinux 0x52511323 blk_mq_stop_hw_queues +EXPORT_SYMBOL vmlinux 0x525e026f acpi_os_unmap_generic_address +EXPORT_SYMBOL vmlinux 0x525fc8b5 bioset_create_nobvec +EXPORT_SYMBOL vmlinux 0x526eae82 param_ops_ullong +EXPORT_SYMBOL vmlinux 0x52736547 vfs_whiteout +EXPORT_SYMBOL vmlinux 0x5280769c xfrm_state_lookup_byspi +EXPORT_SYMBOL vmlinux 0x52871cba devm_devfreq_add_device +EXPORT_SYMBOL vmlinux 0x528c709d simple_read_from_buffer +EXPORT_SYMBOL vmlinux 0x5291626c find_get_pages_tag +EXPORT_SYMBOL vmlinux 0x52abe9c9 simple_readpage +EXPORT_SYMBOL vmlinux 0x52af562a __crc32c_le +EXPORT_SYMBOL vmlinux 0x52cf823d pm8606_osc_disable +EXPORT_SYMBOL vmlinux 0x52d04c5d tty_do_resize +EXPORT_SYMBOL vmlinux 0x52dfb402 bio_split +EXPORT_SYMBOL vmlinux 0x530b1e4c rdmsr_on_cpus +EXPORT_SYMBOL vmlinux 0x530b1e98 pm_suspend +EXPORT_SYMBOL vmlinux 0x531b604e __virt_addr_valid +EXPORT_SYMBOL vmlinux 0x53209a20 udp_del_offload +EXPORT_SYMBOL vmlinux 0x53326531 mempool_alloc_pages +EXPORT_SYMBOL vmlinux 0x53569707 this_cpu_off +EXPORT_SYMBOL vmlinux 0x535b74a7 param_ops_byte +EXPORT_SYMBOL vmlinux 0x535c8308 vme_dma_pattern_attribute +EXPORT_SYMBOL vmlinux 0x5367c0c4 generic_block_fiemap +EXPORT_SYMBOL vmlinux 0x5393256f nf_register_hooks +EXPORT_SYMBOL vmlinux 0x539aa54a bdev_read_only +EXPORT_SYMBOL vmlinux 0x539af73c __sg_alloc_table +EXPORT_SYMBOL vmlinux 0x539cd453 dev_deactivate +EXPORT_SYMBOL vmlinux 0x53dd1c02 _raw_read_lock_irqsave +EXPORT_SYMBOL vmlinux 0x53f6069f sock_wake_async +EXPORT_SYMBOL vmlinux 0x5409775b free_irq_cpu_rmap +EXPORT_SYMBOL vmlinux 0x5423c684 d_alloc_name +EXPORT_SYMBOL vmlinux 0x543ef284 seq_hlist_start +EXPORT_SYMBOL vmlinux 0x544b0c11 acpi_lid_notifier_register +EXPORT_SYMBOL vmlinux 0x5459c2a5 __xfrm_policy_check +EXPORT_SYMBOL vmlinux 0x5464d3f6 acpi_remove_sci_handler +EXPORT_SYMBOL vmlinux 0x546dd528 dcache_dir_open +EXPORT_SYMBOL vmlinux 0x548dc8fb pm860x_page_reg_write +EXPORT_SYMBOL vmlinux 0x54a9db5f _kstrtoul +EXPORT_SYMBOL vmlinux 0x54c256e0 vme_check_window +EXPORT_SYMBOL vmlinux 0x54da34ad pcie_port_service_register +EXPORT_SYMBOL vmlinux 0x54dab7cb tcp_proto_cgroup +EXPORT_SYMBOL vmlinux 0x54e6c863 __skb_gro_checksum_complete +EXPORT_SYMBOL vmlinux 0x54e6fcdd net_enable_timestamp +EXPORT_SYMBOL vmlinux 0x54f24d1a fence_default_wait +EXPORT_SYMBOL vmlinux 0x54f831ab ipv6_dev_get_saddr +EXPORT_SYMBOL vmlinux 0x551bd071 __rb_erase_color +EXPORT_SYMBOL vmlinux 0x551bedc7 fence_enable_sw_signaling +EXPORT_SYMBOL vmlinux 0x5525e288 i2c_verify_adapter +EXPORT_SYMBOL vmlinux 0x55403756 remap_vmalloc_range +EXPORT_SYMBOL vmlinux 0x5541d4bd commit_creds +EXPORT_SYMBOL vmlinux 0x5541ea93 on_each_cpu +EXPORT_SYMBOL vmlinux 0x554934e4 tcp_md5_hash_skb_data +EXPORT_SYMBOL vmlinux 0x55546cfd __pagevec_release +EXPORT_SYMBOL vmlinux 0x555bf162 tty_name +EXPORT_SYMBOL vmlinux 0x55671530 mmc_start_req +EXPORT_SYMBOL vmlinux 0x5567c227 kernel_cpustat +EXPORT_SYMBOL vmlinux 0x5571aac2 rtmsg_ifinfo +EXPORT_SYMBOL vmlinux 0x559ec485 tty_write_room +EXPORT_SYMBOL vmlinux 0x55a00173 sk_filter +EXPORT_SYMBOL vmlinux 0x55c10848 __sync_dirty_buffer +EXPORT_SYMBOL vmlinux 0x55c77267 fddi_type_trans +EXPORT_SYMBOL vmlinux 0x55d481c9 hdmi_infoframe_unpack +EXPORT_SYMBOL vmlinux 0x55e08fb2 dm_io +EXPORT_SYMBOL vmlinux 0x561ce1dd input_close_device +EXPORT_SYMBOL vmlinux 0x5635a60a vmalloc_user +EXPORT_SYMBOL vmlinux 0x563952a3 kblockd_schedule_work +EXPORT_SYMBOL vmlinux 0x5641419b wait_for_completion_killable_timeout +EXPORT_SYMBOL vmlinux 0x5665d130 tty_port_carrier_raised +EXPORT_SYMBOL vmlinux 0x5676a3e5 intel_scu_ipc_ioread8 +EXPORT_SYMBOL vmlinux 0x5682bd30 mmc_can_secure_erase_trim +EXPORT_SYMBOL vmlinux 0x569bdfee registered_fb +EXPORT_SYMBOL vmlinux 0x56a9b12c dup_iter +EXPORT_SYMBOL vmlinux 0x56aee168 jbd2_journal_extend +EXPORT_SYMBOL vmlinux 0x56b88401 napi_gro_receive +EXPORT_SYMBOL vmlinux 0x56c58106 acpi_notifier_call_chain +EXPORT_SYMBOL vmlinux 0x56c63431 to_ndd +EXPORT_SYMBOL vmlinux 0x56c8799d scsi_kunmap_atomic_sg +EXPORT_SYMBOL vmlinux 0x56e42ecb wake_up_process +EXPORT_SYMBOL vmlinux 0x56ed732b scsi_eh_finish_cmd +EXPORT_SYMBOL vmlinux 0x5703fd45 md_check_recovery +EXPORT_SYMBOL vmlinux 0x5705088a __vmalloc +EXPORT_SYMBOL vmlinux 0x572e85d4 blk_lookup_devt +EXPORT_SYMBOL vmlinux 0x5742f785 ipv6_select_ident +EXPORT_SYMBOL vmlinux 0x574c2e74 bitmap_release_region +EXPORT_SYMBOL vmlinux 0x57534a82 pcim_iomap_table +EXPORT_SYMBOL vmlinux 0x57575f08 dmaengine_put +EXPORT_SYMBOL vmlinux 0x575af70c on_each_cpu_mask +EXPORT_SYMBOL vmlinux 0x57674fd7 __sw_hweight16 +EXPORT_SYMBOL vmlinux 0x5770096d dma_free_attrs +EXPORT_SYMBOL vmlinux 0x5779c3f5 sock_sendmsg +EXPORT_SYMBOL vmlinux 0x577ba703 have_submounts +EXPORT_SYMBOL vmlinux 0x579d8ce8 swiotlb_alloc_coherent +EXPORT_SYMBOL vmlinux 0x579fbcd2 cpu_possible_mask +EXPORT_SYMBOL vmlinux 0x57ba72ab fence_wait_timeout +EXPORT_SYMBOL vmlinux 0x57c92438 elv_rb_del +EXPORT_SYMBOL vmlinux 0x57e4e496 pci_bus_read_config_word +EXPORT_SYMBOL vmlinux 0x57e9c154 dev_get_by_name +EXPORT_SYMBOL vmlinux 0x57fbb8ac scsi_report_device_reset +EXPORT_SYMBOL vmlinux 0x57fe3934 dquot_set_dqblk +EXPORT_SYMBOL vmlinux 0x5804258f __inc_zone_page_state +EXPORT_SYMBOL vmlinux 0x581f98da zlib_inflate +EXPORT_SYMBOL vmlinux 0x5838f6c9 rtc_valid_tm +EXPORT_SYMBOL vmlinux 0x584738f9 rdmsr_safe_on_cpu +EXPORT_SYMBOL vmlinux 0x5857b225 ioread16_rep +EXPORT_SYMBOL vmlinux 0x586103be acpi_setup_gpe_for_wake +EXPORT_SYMBOL vmlinux 0x58693f10 seq_open +EXPORT_SYMBOL vmlinux 0x587616f1 vfs_fstatat +EXPORT_SYMBOL vmlinux 0x588ca20e __scsi_print_sense +EXPORT_SYMBOL vmlinux 0x589d453e qdisc_create_dflt +EXPORT_SYMBOL vmlinux 0x58b32ecf generic_getxattr +EXPORT_SYMBOL vmlinux 0x58b73bc7 match_wildcard +EXPORT_SYMBOL vmlinux 0x58c56aeb vga_client_register +EXPORT_SYMBOL vmlinux 0x58d8806c mb_cache_entry_get +EXPORT_SYMBOL vmlinux 0x58dfec0d ata_dev_printk +EXPORT_SYMBOL vmlinux 0x58e1bee6 jbd2_journal_clear_err +EXPORT_SYMBOL vmlinux 0x58e4b10b __skb_flow_get_ports +EXPORT_SYMBOL vmlinux 0x58f61e61 dma_async_device_unregister +EXPORT_SYMBOL vmlinux 0x58fcd6cc skb_split +EXPORT_SYMBOL vmlinux 0x58fef6f8 ist_info +EXPORT_SYMBOL vmlinux 0x590ccdbf ilookup5 +EXPORT_SYMBOL vmlinux 0x5916fbeb param_get_int +EXPORT_SYMBOL vmlinux 0x5918f08c x86_hyper_ms_hyperv +EXPORT_SYMBOL vmlinux 0x591bfe82 blk_queue_io_min +EXPORT_SYMBOL vmlinux 0x591fefbe sg_alloc_table_from_pages +EXPORT_SYMBOL vmlinux 0x592a7969 xfrm4_rcv +EXPORT_SYMBOL vmlinux 0x592ab919 blk_execute_rq +EXPORT_SYMBOL vmlinux 0x59344fcc vfs_link +EXPORT_SYMBOL vmlinux 0x5944d015 __cachemode2pte_tbl +EXPORT_SYMBOL vmlinux 0x5944f8fb set_device_ro +EXPORT_SYMBOL vmlinux 0x594bf15b ioport_map +EXPORT_SYMBOL vmlinux 0x59784ce7 set_cached_acl +EXPORT_SYMBOL vmlinux 0x597c8967 inode_init_owner +EXPORT_SYMBOL vmlinux 0x598e4904 mod_timer_pending +EXPORT_SYMBOL vmlinux 0x59aa14cf fence_release +EXPORT_SYMBOL vmlinux 0x59bc9609 acpi_write_bit_register +EXPORT_SYMBOL vmlinux 0x59c79b0a agp_free_memory +EXPORT_SYMBOL vmlinux 0x59fcaadf nd_region_release_lane +EXPORT_SYMBOL vmlinux 0x5a0b73d0 zlib_deflateInit2 +EXPORT_SYMBOL vmlinux 0x5a261903 __blk_run_queue +EXPORT_SYMBOL vmlinux 0x5a2bacdf cpu_info +EXPORT_SYMBOL vmlinux 0x5a3760c6 softnet_data +EXPORT_SYMBOL vmlinux 0x5a395dca skb_dequeue +EXPORT_SYMBOL vmlinux 0x5a4896a8 __put_user_2 +EXPORT_SYMBOL vmlinux 0x5a5cd14f tty_set_operations +EXPORT_SYMBOL vmlinux 0x5a69ab5a ppp_register_channel +EXPORT_SYMBOL vmlinux 0x5a82c44a complete_and_exit +EXPORT_SYMBOL vmlinux 0x5a830fa0 vme_irq_generate +EXPORT_SYMBOL vmlinux 0x5ac376a5 acpi_install_fixed_event_handler +EXPORT_SYMBOL vmlinux 0x5ae46f24 pnp_unregister_driver +EXPORT_SYMBOL vmlinux 0x5aff4177 vme_lm_get +EXPORT_SYMBOL vmlinux 0x5b189f60 __lock_buffer +EXPORT_SYMBOL vmlinux 0x5b19634d div_s64_rem +EXPORT_SYMBOL vmlinux 0x5b1d181b input_unregister_handle +EXPORT_SYMBOL vmlinux 0x5b7bd933 bio_copy_data +EXPORT_SYMBOL vmlinux 0x5bc8d583 copy_from_user_overflow +EXPORT_SYMBOL vmlinux 0x5bf44ea7 page_readlink +EXPORT_SYMBOL vmlinux 0x5c0442fd acpi_gbl_FADT +EXPORT_SYMBOL vmlinux 0x5c08e3d1 sock_no_setsockopt +EXPORT_SYMBOL vmlinux 0x5c3e581c simple_fill_super +EXPORT_SYMBOL vmlinux 0x5c53c85d remap_vmalloc_range_partial +EXPORT_SYMBOL vmlinux 0x5c545234 ucs2_strncmp +EXPORT_SYMBOL vmlinux 0x5c5b8570 vc_resize +EXPORT_SYMBOL vmlinux 0x5c5fbe4e mipi_dsi_host_register +EXPORT_SYMBOL vmlinux 0x5c763a1d input_inject_event +EXPORT_SYMBOL vmlinux 0x5c867045 unregister_nls +EXPORT_SYMBOL vmlinux 0x5c8795ab inet_frags_exit_net +EXPORT_SYMBOL vmlinux 0x5c937772 tcf_unregister_action +EXPORT_SYMBOL vmlinux 0x5c9b026a inode_sb_list_lock +EXPORT_SYMBOL vmlinux 0x5c9c235c tty_hangup +EXPORT_SYMBOL vmlinux 0x5ca79f68 sg_miter_stop +EXPORT_SYMBOL vmlinux 0x5cd53a27 netif_carrier_off +EXPORT_SYMBOL vmlinux 0x5ce0d3da inet_offloads +EXPORT_SYMBOL vmlinux 0x5cf2dbbe security_inode_setsecctx +EXPORT_SYMBOL vmlinux 0x5cf53ce2 input_free_minor +EXPORT_SYMBOL vmlinux 0x5cf787c6 mmc_align_data_size +EXPORT_SYMBOL vmlinux 0x5d0f8203 __netdev_alloc_skb +EXPORT_SYMBOL vmlinux 0x5d4c1b97 dev_alert +EXPORT_SYMBOL vmlinux 0x5d4cca22 agp_generic_free_by_type +EXPORT_SYMBOL vmlinux 0x5d4ee263 sock_update_memcg +EXPORT_SYMBOL vmlinux 0x5d550c4d scsi_sd_probe_domain +EXPORT_SYMBOL vmlinux 0x5d565a80 generic_delete_inode +EXPORT_SYMBOL vmlinux 0x5d580d3c inet_dgram_connect +EXPORT_SYMBOL vmlinux 0x5d5b5e10 sock_kzfree_s +EXPORT_SYMBOL vmlinux 0x5d6404d6 write_dirty_buffer +EXPORT_SYMBOL vmlinux 0x5d6d5bc4 blk_queue_merge_bvec +EXPORT_SYMBOL vmlinux 0x5d74dbcf pnp_range_reserved +EXPORT_SYMBOL vmlinux 0x5d76096a kthread_stop +EXPORT_SYMBOL vmlinux 0x5d8475e0 completion_done +EXPORT_SYMBOL vmlinux 0x5dacc19a max8998_update_reg +EXPORT_SYMBOL vmlinux 0x5dbb2050 release_firmware +EXPORT_SYMBOL vmlinux 0x5dce5197 del_gendisk +EXPORT_SYMBOL vmlinux 0x5dd98a02 xfrm_register_km +EXPORT_SYMBOL vmlinux 0x5e103bf6 jbd2_journal_dirty_metadata +EXPORT_SYMBOL vmlinux 0x5e2c57ec tcp_v4_md5_lookup +EXPORT_SYMBOL vmlinux 0x5e337c02 jbd2__journal_restart +EXPORT_SYMBOL vmlinux 0x5e52ae7c mipi_dsi_dcs_write_buffer +EXPORT_SYMBOL vmlinux 0x5e688e81 tty_mutex +EXPORT_SYMBOL vmlinux 0x5e69c290 unregister_netdev +EXPORT_SYMBOL vmlinux 0x5e84076d get_cached_acl +EXPORT_SYMBOL vmlinux 0x5e866d85 prandom_bytes +EXPORT_SYMBOL vmlinux 0x5e95b1cd current_umask +EXPORT_SYMBOL vmlinux 0x5ea405e9 netlink_broadcast_filtered +EXPORT_SYMBOL vmlinux 0x5eb24829 dm_shift_arg +EXPORT_SYMBOL vmlinux 0x5ebcd0fe fb_set_cmap +EXPORT_SYMBOL vmlinux 0x5ec7ac84 reqsk_queue_hash_req +EXPORT_SYMBOL vmlinux 0x5ecd4241 tcf_hash_create +EXPORT_SYMBOL vmlinux 0x5ed040b0 pm_set_vt_switch +EXPORT_SYMBOL vmlinux 0x5ed42e8a nf_log_trace +EXPORT_SYMBOL vmlinux 0x5ee3f63d soft_cursor +EXPORT_SYMBOL vmlinux 0x5efb48d2 xfrm6_find_1stfragopt +EXPORT_SYMBOL vmlinux 0x5f005368 kstrtou8 +EXPORT_SYMBOL vmlinux 0x5f098b2a in6addr_interfacelocal_allrouters +EXPORT_SYMBOL vmlinux 0x5f0f3c6b eth_change_mtu +EXPORT_SYMBOL vmlinux 0x5f1621ef check_disk_change +EXPORT_SYMBOL vmlinux 0x5f1a4ccf intel_scu_ipc_update_register +EXPORT_SYMBOL vmlinux 0x5f228c6a lock_rename +EXPORT_SYMBOL vmlinux 0x5f463b76 mipi_dsi_dcs_set_column_address +EXPORT_SYMBOL vmlinux 0x5f4801bb sock_common_getsockopt +EXPORT_SYMBOL vmlinux 0x5f4b9d83 mipi_dsi_generic_write +EXPORT_SYMBOL vmlinux 0x5f6326db filemap_map_pages +EXPORT_SYMBOL vmlinux 0x5f765928 rtnl_notify +EXPORT_SYMBOL vmlinux 0x5fa5a85a skb_copy_bits +EXPORT_SYMBOL vmlinux 0x5fb2e8ef idr_init +EXPORT_SYMBOL vmlinux 0x5fd268cb radix_tree_gang_lookup +EXPORT_SYMBOL vmlinux 0x5fd2c1d6 param_set_ulong +EXPORT_SYMBOL vmlinux 0x5fda0227 vfs_stat +EXPORT_SYMBOL vmlinux 0x5fda42c1 set_wb_congested +EXPORT_SYMBOL vmlinux 0x5fdb0abd iterate_fd +EXPORT_SYMBOL vmlinux 0x5fe5589f register_shrinker +EXPORT_SYMBOL vmlinux 0x5ff50f1c poll_schedule_timeout +EXPORT_SYMBOL vmlinux 0x5ff9409e genlmsg_put +EXPORT_SYMBOL vmlinux 0x600683d3 do_unblank_screen +EXPORT_SYMBOL vmlinux 0x601f665f dm_io_client_create +EXPORT_SYMBOL vmlinux 0x6029095f nd_device_unregister +EXPORT_SYMBOL vmlinux 0x602d1736 cros_ec_prepare_tx +EXPORT_SYMBOL vmlinux 0x602ed00d acpi_current_gpe_count +EXPORT_SYMBOL vmlinux 0x60341039 register_md_cluster_operations +EXPORT_SYMBOL vmlinux 0x60352082 register_inet6addr_notifier +EXPORT_SYMBOL vmlinux 0x604316d8 acpi_finish_gpe +EXPORT_SYMBOL vmlinux 0x606d0b09 secure_tcpv6_sequence_number +EXPORT_SYMBOL vmlinux 0x606d7c18 create_empty_buffers +EXPORT_SYMBOL vmlinux 0x6086cf7d nf_unregister_sockopt +EXPORT_SYMBOL vmlinux 0x608ff326 pci_bus_read_dev_vendor_id +EXPORT_SYMBOL vmlinux 0x6091644e flow_keys_dissector +EXPORT_SYMBOL vmlinux 0x60942944 cdrom_mode_select +EXPORT_SYMBOL vmlinux 0x609f1c7e synchronize_net +EXPORT_SYMBOL vmlinux 0x60a32ea9 pm_power_off +EXPORT_SYMBOL vmlinux 0x60b86f61 sg_pcopy_to_buffer +EXPORT_SYMBOL vmlinux 0x60c5c29d dentry_open +EXPORT_SYMBOL vmlinux 0x60c7db97 pci_scan_bridge +EXPORT_SYMBOL vmlinux 0x60cf85d2 _raw_read_lock_bh +EXPORT_SYMBOL vmlinux 0x60cfab71 ip_mc_check_igmp +EXPORT_SYMBOL vmlinux 0x60d43aa5 tty_check_change +EXPORT_SYMBOL vmlinux 0x60dd2172 key_instantiate_and_link +EXPORT_SYMBOL vmlinux 0x60df1e3b posix_acl_equiv_mode +EXPORT_SYMBOL vmlinux 0x610aaa40 mempool_destroy +EXPORT_SYMBOL vmlinux 0x61192bbc __qdisc_calculate_pkt_len +EXPORT_SYMBOL vmlinux 0x6128b5fc __printk_ratelimit +EXPORT_SYMBOL vmlinux 0x6146f9af agp_generic_enable +EXPORT_SYMBOL vmlinux 0x6161e822 crypto_sha512_finup +EXPORT_SYMBOL vmlinux 0x61af8f53 __skb_gso_segment +EXPORT_SYMBOL vmlinux 0x61b3560c cmdline_parts_set +EXPORT_SYMBOL vmlinux 0x61b7b126 simple_strtoull +EXPORT_SYMBOL vmlinux 0x61ccfbd1 ipv6_skip_exthdr +EXPORT_SYMBOL vmlinux 0x61d31bda dquot_resume +EXPORT_SYMBOL vmlinux 0x61ea00f3 neigh_lookup_nodev +EXPORT_SYMBOL vmlinux 0x61ed54da inode_owner_or_capable +EXPORT_SYMBOL vmlinux 0x62049256 acpi_disable +EXPORT_SYMBOL vmlinux 0x6214aef2 cpufreq_unregister_notifier +EXPORT_SYMBOL vmlinux 0x6220b4a2 crc32_le +EXPORT_SYMBOL vmlinux 0x6225637e md5_transform +EXPORT_SYMBOL vmlinux 0x6226b9fa machine_to_phys_mapping +EXPORT_SYMBOL vmlinux 0x6228c21f smp_call_function_single +EXPORT_SYMBOL vmlinux 0x62310168 ppp_register_compressor +EXPORT_SYMBOL vmlinux 0x6237f6b5 acpi_enable_event +EXPORT_SYMBOL vmlinux 0x6241a2ab __copy_from_user_ll_nocache +EXPORT_SYMBOL vmlinux 0x624acade locks_copy_lock +EXPORT_SYMBOL vmlinux 0x6258ca66 inet_frag_find +EXPORT_SYMBOL vmlinux 0x62621d1c rtnl_configure_link +EXPORT_SYMBOL vmlinux 0x626559e8 __register_nls +EXPORT_SYMBOL vmlinux 0x6266187a param_set_ushort +EXPORT_SYMBOL vmlinux 0x62737e1d sock_unregister +EXPORT_SYMBOL vmlinux 0x62827bec security_secctx_to_secid +EXPORT_SYMBOL vmlinux 0x62849ac7 dev_valid_name +EXPORT_SYMBOL vmlinux 0x628c7385 prepare_creds +EXPORT_SYMBOL vmlinux 0x629fe59d generic_file_write_iter +EXPORT_SYMBOL vmlinux 0x62a55c92 dma_supported +EXPORT_SYMBOL vmlinux 0x62a6cc40 fb_show_logo +EXPORT_SYMBOL vmlinux 0x62b05a38 blk_init_tags +EXPORT_SYMBOL vmlinux 0x630413cf unload_nls +EXPORT_SYMBOL vmlinux 0x630d9704 tcp_check_req +EXPORT_SYMBOL vmlinux 0x63187451 pcie_aspm_support_enabled +EXPORT_SYMBOL vmlinux 0x631c2e24 find_get_entry +EXPORT_SYMBOL vmlinux 0x631cfd88 kernel_param_lock +EXPORT_SYMBOL vmlinux 0x633ed774 vme_new_dma_list +EXPORT_SYMBOL vmlinux 0x633eeb15 vmalloc_to_page +EXPORT_SYMBOL vmlinux 0x634dc02c pci_enable_msi_range +EXPORT_SYMBOL vmlinux 0x636a5691 acpi_register_ioapic +EXPORT_SYMBOL vmlinux 0x636fc9f6 mmc_request_done +EXPORT_SYMBOL vmlinux 0x6388591c down_timeout +EXPORT_SYMBOL vmlinux 0x638c1388 neigh_connected_output +EXPORT_SYMBOL vmlinux 0x6393b704 tcf_exts_change +EXPORT_SYMBOL vmlinux 0x63a01291 acpi_leave_sleep_state_prep +EXPORT_SYMBOL vmlinux 0x63a7c28c bitmap_find_free_region +EXPORT_SYMBOL vmlinux 0x63ad074c pci_set_dma_max_seg_size +EXPORT_SYMBOL vmlinux 0x63ae0138 intel_gtt_get +EXPORT_SYMBOL vmlinux 0x63b59e4c iterate_mounts +EXPORT_SYMBOL vmlinux 0x63c13e70 _raw_write_unlock +EXPORT_SYMBOL vmlinux 0x63c4d61f __bitmap_weight +EXPORT_SYMBOL vmlinux 0x63d2825d devm_release_resource +EXPORT_SYMBOL vmlinux 0x63eb9355 panic_blink +EXPORT_SYMBOL vmlinux 0x63f6142d jbd2_journal_get_undo_access +EXPORT_SYMBOL vmlinux 0x63fb75ea ip_route_input_noref +EXPORT_SYMBOL vmlinux 0x63fc232f strlen_user +EXPORT_SYMBOL vmlinux 0x6403e338 tcp_memory_pressure +EXPORT_SYMBOL vmlinux 0x640fe8db sock_alloc_send_pskb +EXPORT_SYMBOL vmlinux 0x64127b67 bitmap_find_next_zero_area_off +EXPORT_SYMBOL vmlinux 0x641a76db request_key +EXPORT_SYMBOL vmlinux 0x643c124e gnet_stats_start_copy_compat +EXPORT_SYMBOL vmlinux 0x6449fd41 acpi_install_address_space_handler +EXPORT_SYMBOL vmlinux 0x645930fb _raw_write_lock_bh +EXPORT_SYMBOL vmlinux 0x645d2259 blkdev_put +EXPORT_SYMBOL vmlinux 0x64886d16 netif_receive_skb_sk +EXPORT_SYMBOL vmlinux 0x64999478 congestion_wait +EXPORT_SYMBOL vmlinux 0x64a4b84d cpu_rmap_update +EXPORT_SYMBOL vmlinux 0x64a97383 deactivate_super +EXPORT_SYMBOL vmlinux 0x64ab0e98 wait_for_completion +EXPORT_SYMBOL vmlinux 0x64c073d7 seq_dentry +EXPORT_SYMBOL vmlinux 0x64e439c3 __dev_kfree_skb_any +EXPORT_SYMBOL vmlinux 0x64eae7ad set_memory_array_wb +EXPORT_SYMBOL vmlinux 0x64fa7693 __acpi_handle_debug +EXPORT_SYMBOL vmlinux 0x6503f912 mount_subtree +EXPORT_SYMBOL vmlinux 0x650ceb62 give_up_console +EXPORT_SYMBOL vmlinux 0x6513a3fa fb_get_color_depth +EXPORT_SYMBOL vmlinux 0x65145584 xfrm_state_flush +EXPORT_SYMBOL vmlinux 0x651a4139 test_taint +EXPORT_SYMBOL vmlinux 0x651fc314 posix_acl_to_xattr +EXPORT_SYMBOL vmlinux 0x6527817f __xfrm_decode_session +EXPORT_SYMBOL vmlinux 0x6531c3f5 rawv6_mh_filter_register +EXPORT_SYMBOL vmlinux 0x65408378 zlib_inflate_blob +EXPORT_SYMBOL vmlinux 0x655f1ab0 set_memory_array_wc +EXPORT_SYMBOL vmlinux 0x655f5785 skb_get_hash_perturb +EXPORT_SYMBOL vmlinux 0x6565d33f scsi_kmap_atomic_sg +EXPORT_SYMBOL vmlinux 0x656ebac4 nf_nat_decode_session_hook +EXPORT_SYMBOL vmlinux 0x658cb85e __breadahead +EXPORT_SYMBOL vmlinux 0x658f1158 pcie_capability_read_dword +EXPORT_SYMBOL vmlinux 0x65954eed pci_reenable_device +EXPORT_SYMBOL vmlinux 0x65a295bb atomic64_xchg_cx8 +EXPORT_SYMBOL vmlinux 0x65a6c126 bio_integrity_endio +EXPORT_SYMBOL vmlinux 0x65bf10d4 vfs_mkdir +EXPORT_SYMBOL vmlinux 0x65d95c6e task_tgid_nr_ns +EXPORT_SYMBOL vmlinux 0x65d9e877 cpufreq_register_notifier +EXPORT_SYMBOL vmlinux 0x65dccf13 xz_dec_end +EXPORT_SYMBOL vmlinux 0x65e4222a blk_mq_all_tag_busy_iter +EXPORT_SYMBOL vmlinux 0x65ee505f skb_pad +EXPORT_SYMBOL vmlinux 0x65effcc2 bio_add_page +EXPORT_SYMBOL vmlinux 0x65f3ad9a fb_videomode_to_var +EXPORT_SYMBOL vmlinux 0x6614c5b3 md_done_sync +EXPORT_SYMBOL vmlinux 0x662e9098 sock_no_socketpair +EXPORT_SYMBOL vmlinux 0x66355efc vprintk +EXPORT_SYMBOL vmlinux 0x663f7cd0 acpi_install_table_handler +EXPORT_SYMBOL vmlinux 0x666a83da dev_loopback_xmit +EXPORT_SYMBOL vmlinux 0x667e4e80 proc_dointvec_ms_jiffies +EXPORT_SYMBOL vmlinux 0x669bf80b proc_dointvec_jiffies +EXPORT_SYMBOL vmlinux 0x669cccf8 __napi_schedule +EXPORT_SYMBOL vmlinux 0x66aa6d58 gnet_stats_finish_copy +EXPORT_SYMBOL vmlinux 0x66bdc3d4 tcp_seq_open +EXPORT_SYMBOL vmlinux 0x66c6a48c blk_mq_requeue_request +EXPORT_SYMBOL vmlinux 0x66d804b1 percpu_counter_destroy +EXPORT_SYMBOL vmlinux 0x66ddd888 pci_alloc_dev +EXPORT_SYMBOL vmlinux 0x66ee8ffd mipi_dsi_dcs_enter_sleep_mode +EXPORT_SYMBOL vmlinux 0x6713bc82 file_update_time +EXPORT_SYMBOL vmlinux 0x67195ba1 iov_iter_copy_from_user_atomic +EXPORT_SYMBOL vmlinux 0x6721d254 nf_log_packet +EXPORT_SYMBOL vmlinux 0x6722f3bc _raw_write_lock +EXPORT_SYMBOL vmlinux 0x67292af2 proc_remove +EXPORT_SYMBOL vmlinux 0x6729d3df __get_user_4 +EXPORT_SYMBOL vmlinux 0x673398e6 vga_switcheroo_register_handler +EXPORT_SYMBOL vmlinux 0x673f815e agp_bridges +EXPORT_SYMBOL vmlinux 0x674ba3eb crypto_sha512_update +EXPORT_SYMBOL vmlinux 0x67509797 max8925_reg_read +EXPORT_SYMBOL vmlinux 0x676da1c7 fb_pan_display +EXPORT_SYMBOL vmlinux 0x67733cf4 mb_cache_create +EXPORT_SYMBOL vmlinux 0x67852994 scsi_print_command +EXPORT_SYMBOL vmlinux 0x67b27ec1 tty_std_termios +EXPORT_SYMBOL vmlinux 0x67b48dbc netdev_master_upper_dev_link +EXPORT_SYMBOL vmlinux 0x67b78eb3 seq_hlist_next_rcu +EXPORT_SYMBOL vmlinux 0x67c16674 neigh_event_ns +EXPORT_SYMBOL vmlinux 0x67e283a0 devfreq_resume_device +EXPORT_SYMBOL vmlinux 0x67f98a1f single_release +EXPORT_SYMBOL vmlinux 0x6808b453 __unregister_cpu_notifier +EXPORT_SYMBOL vmlinux 0x680ec266 _raw_spin_lock_irqsave +EXPORT_SYMBOL vmlinux 0x68153cb2 from_kuid_munged +EXPORT_SYMBOL vmlinux 0x683b25cf phy_resume +EXPORT_SYMBOL vmlinux 0x683cdd25 blk_sync_queue +EXPORT_SYMBOL vmlinux 0x685dd66a elv_unregister_queue +EXPORT_SYMBOL vmlinux 0x686029a2 inet_stream_ops +EXPORT_SYMBOL vmlinux 0x687a1a13 skb_append_datato_frags +EXPORT_SYMBOL vmlinux 0x687b6a16 kdbgetsymval +EXPORT_SYMBOL vmlinux 0x6882005e kernel_listen +EXPORT_SYMBOL vmlinux 0x68a25c44 crypto_sha256_update +EXPORT_SYMBOL vmlinux 0x68b83ac6 posix_acl_alloc +EXPORT_SYMBOL vmlinux 0x68d637b6 netdev_lower_get_next_private +EXPORT_SYMBOL vmlinux 0x68e4a1bc account_page_redirty +EXPORT_SYMBOL vmlinux 0x690e2382 blk_queue_dma_alignment +EXPORT_SYMBOL vmlinux 0x691001b5 acpi_evaluate_integer +EXPORT_SYMBOL vmlinux 0x691180ef get_user_pages +EXPORT_SYMBOL vmlinux 0x69375019 pci_biosrom_size +EXPORT_SYMBOL vmlinux 0x693f66dd send_sig +EXPORT_SYMBOL vmlinux 0x6944d1aa d_find_any_alias +EXPORT_SYMBOL vmlinux 0x69474e5a set_pages_array_wb +EXPORT_SYMBOL vmlinux 0x694ab004 amd_northbridges +EXPORT_SYMBOL vmlinux 0x695a7568 dquot_operations +EXPORT_SYMBOL vmlinux 0x695caf75 tty_port_tty_get +EXPORT_SYMBOL vmlinux 0x695e6bbe file_remove_privs +EXPORT_SYMBOL vmlinux 0x695f84dc scsi_mode_sense +EXPORT_SYMBOL vmlinux 0x69693e4b mmc_unregister_driver +EXPORT_SYMBOL vmlinux 0x6971447a rtc_month_days +EXPORT_SYMBOL vmlinux 0x6984979f i8042_remove_filter +EXPORT_SYMBOL vmlinux 0x698523ad __f_setown +EXPORT_SYMBOL vmlinux 0x6988d0ca cpu_dr7 +EXPORT_SYMBOL vmlinux 0x69a0ca7d iowrite16be +EXPORT_SYMBOL vmlinux 0x69a358a6 iomem_resource +EXPORT_SYMBOL vmlinux 0x69a8ba1a gen_pool_for_each_chunk +EXPORT_SYMBOL vmlinux 0x69ad2f20 kstrtouint +EXPORT_SYMBOL vmlinux 0x69c6612c simple_transaction_release +EXPORT_SYMBOL vmlinux 0x6a037cf1 mempool_kfree +EXPORT_SYMBOL vmlinux 0x6a04d048 vfs_llseek +EXPORT_SYMBOL vmlinux 0x6a17a1d2 xfrm_user_policy +EXPORT_SYMBOL vmlinux 0x6a27bfce csum_partial_copy_generic +EXPORT_SYMBOL vmlinux 0x6a3a1cae csum_and_copy_to_iter +EXPORT_SYMBOL vmlinux 0x6a47cd6d pnp_is_active +EXPORT_SYMBOL vmlinux 0x6a52b123 sock_alloc_send_skb +EXPORT_SYMBOL vmlinux 0x6a5ecb18 unregister_module_notifier +EXPORT_SYMBOL vmlinux 0x6a60277d acpi_buffer_to_resource +EXPORT_SYMBOL vmlinux 0x6a76f3ac blk_iopoll_enable +EXPORT_SYMBOL vmlinux 0x6a8a51bc migrate_page +EXPORT_SYMBOL vmlinux 0x6a8f8ce3 inet_confirm_addr +EXPORT_SYMBOL vmlinux 0x6a98ac1e xfrm_alloc_spi +EXPORT_SYMBOL vmlinux 0x6abbce0b phy_device_free +EXPORT_SYMBOL vmlinux 0x6acafd5b cookie_timestamp_decode +EXPORT_SYMBOL vmlinux 0x6acb973d iowrite32be +EXPORT_SYMBOL vmlinux 0x6ace456b truncate_inode_pages_range +EXPORT_SYMBOL vmlinux 0x6ad85887 acpi_enable_gpe +EXPORT_SYMBOL vmlinux 0x6add5c9a dmi_find_device +EXPORT_SYMBOL vmlinux 0x6aeefac4 zlib_deflateReset +EXPORT_SYMBOL vmlinux 0x6b06fdce delayed_work_timer_fn +EXPORT_SYMBOL vmlinux 0x6b081fd6 tso_build_hdr +EXPORT_SYMBOL vmlinux 0x6b1b67d3 __bdevname +EXPORT_SYMBOL vmlinux 0x6b25a27c dev_mc_init +EXPORT_SYMBOL vmlinux 0x6b320173 tty_port_block_til_ready +EXPORT_SYMBOL vmlinux 0x6b4fa569 filemap_page_mkwrite +EXPORT_SYMBOL vmlinux 0x6b671536 generic_splice_sendpage +EXPORT_SYMBOL vmlinux 0x6b74b9be bit_waitqueue +EXPORT_SYMBOL vmlinux 0x6b8599a6 netif_set_real_num_tx_queues +EXPORT_SYMBOL vmlinux 0x6b8704a0 inet_proto_csum_replace4 +EXPORT_SYMBOL vmlinux 0x6b8cbe6a security_mmap_file +EXPORT_SYMBOL vmlinux 0x6bc3fbc0 __unregister_chrdev +EXPORT_SYMBOL vmlinux 0x6bdcfd99 qdisc_class_hash_remove +EXPORT_SYMBOL vmlinux 0x6be7a8a3 bio_reset +EXPORT_SYMBOL vmlinux 0x6bea2f0f skb_checksum +EXPORT_SYMBOL vmlinux 0x6bee4690 vm_insert_mixed +EXPORT_SYMBOL vmlinux 0x6bf0c8ee udp_proc_register +EXPORT_SYMBOL vmlinux 0x6bf1c17f pv_lock_ops +EXPORT_SYMBOL vmlinux 0x6c09c2a4 del_timer +EXPORT_SYMBOL vmlinux 0x6c1ce5ce strcspn +EXPORT_SYMBOL vmlinux 0x6c1eac6c pci_restore_state +EXPORT_SYMBOL vmlinux 0x6c2a464e mdiobus_write +EXPORT_SYMBOL vmlinux 0x6c2b13b0 clocksource_unregister +EXPORT_SYMBOL vmlinux 0x6c2e3320 strncmp +EXPORT_SYMBOL vmlinux 0x6c51a836 sysctl_tcp_notsent_lowat +EXPORT_SYMBOL vmlinux 0x6c52bd8c scsi_free_host_dev +EXPORT_SYMBOL vmlinux 0x6c61ce70 num_registered_fb +EXPORT_SYMBOL vmlinux 0x6c702af7 sysctl_udp_rmem_min +EXPORT_SYMBOL vmlinux 0x6c95cd10 get_mm_exe_file +EXPORT_SYMBOL vmlinux 0x6ca5b0f8 __net_get_random_once +EXPORT_SYMBOL vmlinux 0x6cb4b348 security_d_instantiate +EXPORT_SYMBOL vmlinux 0x6cc4e566 devfreq_unregister_opp_notifier +EXPORT_SYMBOL vmlinux 0x6cc7847c netdev_notice +EXPORT_SYMBOL vmlinux 0x6ccddfe5 netpoll_poll_enable +EXPORT_SYMBOL vmlinux 0x6cdc5c6b nla_strlcpy +EXPORT_SYMBOL vmlinux 0x6d06798c agp_backend_release +EXPORT_SYMBOL vmlinux 0x6d09c098 xfrm_policy_destroy +EXPORT_SYMBOL vmlinux 0x6d0f1f89 dm_table_get_mode +EXPORT_SYMBOL vmlinux 0x6d1d5d9b iosf_mbi_write +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 0x6d359430 dev_mc_sync_multiple +EXPORT_SYMBOL vmlinux 0x6d64eb37 scsi_block_requests +EXPORT_SYMBOL vmlinux 0x6d678f9d mmc_can_sanitize +EXPORT_SYMBOL vmlinux 0x6d6f6eb7 generic_block_bmap +EXPORT_SYMBOL vmlinux 0x6d76c169 dev_get_by_name_rcu +EXPORT_SYMBOL vmlinux 0x6d92fc80 d_path +EXPORT_SYMBOL vmlinux 0x6db75e42 from_kgid +EXPORT_SYMBOL vmlinux 0x6db81dfb dev_uc_sync_multiple +EXPORT_SYMBOL vmlinux 0x6dc0c9dc down_interruptible +EXPORT_SYMBOL vmlinux 0x6dc50edc kobject_add +EXPORT_SYMBOL vmlinux 0x6dc6dd56 down +EXPORT_SYMBOL vmlinux 0x6dd60d58 abx500_event_registers_startup_state_get +EXPORT_SYMBOL vmlinux 0x6ddf7ffd mipi_dsi_dcs_set_display_off +EXPORT_SYMBOL vmlinux 0x6def2db2 half_md4_transform +EXPORT_SYMBOL vmlinux 0x6df1aaf1 kernel_sigaction +EXPORT_SYMBOL vmlinux 0x6df6adcd blk_integrity_register +EXPORT_SYMBOL vmlinux 0x6e0205f7 deactivate_locked_super +EXPORT_SYMBOL vmlinux 0x6e2c53b5 inet_reqsk_alloc +EXPORT_SYMBOL vmlinux 0x6e4cdb13 twl6040_get_pll +EXPORT_SYMBOL vmlinux 0x6e6514ed radix_tree_insert +EXPORT_SYMBOL vmlinux 0x6e720ff2 rtnl_unlock +EXPORT_SYMBOL vmlinux 0x6e758a74 mmc_flush_cache +EXPORT_SYMBOL vmlinux 0x6e87d7ec pci_pme_active +EXPORT_SYMBOL vmlinux 0x6e9dd606 __symbol_put +EXPORT_SYMBOL vmlinux 0x6edab14b dm_kcopyd_zero +EXPORT_SYMBOL vmlinux 0x6edcda99 agp3_generic_tlbflush +EXPORT_SYMBOL vmlinux 0x6f20960a full_name_hash +EXPORT_SYMBOL vmlinux 0x6f2e4f46 __cond_resched_lock +EXPORT_SYMBOL vmlinux 0x6f426c8e bdi_setup_and_register +EXPORT_SYMBOL vmlinux 0x6f556bdb acpi_get_gpe_device +EXPORT_SYMBOL vmlinux 0x6f5643c8 from_kprojid_munged +EXPORT_SYMBOL vmlinux 0x6f5f8901 hdmi_infoframe_log +EXPORT_SYMBOL vmlinux 0x6f677ecd ppp_unregister_channel +EXPORT_SYMBOL vmlinux 0x6f7a12b7 pnp_activate_dev +EXPORT_SYMBOL vmlinux 0x6f88effb hdmi_avi_infoframe_init +EXPORT_SYMBOL vmlinux 0x6f9b641e udp_ioctl +EXPORT_SYMBOL vmlinux 0x6fa377c2 dmam_release_declared_memory +EXPORT_SYMBOL vmlinux 0x6fbf07cd __free_page_frag +EXPORT_SYMBOL vmlinux 0x6fcb87a1 touch_softlockup_watchdog +EXPORT_SYMBOL vmlinux 0x6feb2039 acpi_write +EXPORT_SYMBOL vmlinux 0x7022aaa2 dump_align +EXPORT_SYMBOL vmlinux 0x7023bea8 unregister_acpi_notifier +EXPORT_SYMBOL vmlinux 0x7029f11b iommu_tbl_pool_init +EXPORT_SYMBOL vmlinux 0x7039a04a twl6040_get_sysclk +EXPORT_SYMBOL vmlinux 0x70523a7a __cond_resched_softirq +EXPORT_SYMBOL vmlinux 0x7054a3e4 request_dma +EXPORT_SYMBOL vmlinux 0x705e72fd ip6_frag_init +EXPORT_SYMBOL vmlinux 0x7062b4cd cmdline_parts_free +EXPORT_SYMBOL vmlinux 0x7068856f dev_graft_qdisc +EXPORT_SYMBOL vmlinux 0x706d051c del_timer_sync +EXPORT_SYMBOL vmlinux 0x707f43f6 __ctzdi2 +EXPORT_SYMBOL vmlinux 0x707f93dd preempt_schedule +EXPORT_SYMBOL vmlinux 0x7088ce72 printk_emit +EXPORT_SYMBOL vmlinux 0x708a79f7 __percpu_counter_compare +EXPORT_SYMBOL vmlinux 0x70a73f80 tty_register_device +EXPORT_SYMBOL vmlinux 0x70b27d19 neigh_resolve_output +EXPORT_SYMBOL vmlinux 0x70c214e6 cfb_imageblit +EXPORT_SYMBOL vmlinux 0x70c40a88 blk_mq_unique_tag +EXPORT_SYMBOL vmlinux 0x70d1f8f3 strncat +EXPORT_SYMBOL vmlinux 0x70d8ab82 acpi_acquire_global_lock +EXPORT_SYMBOL vmlinux 0x70df6c5b param_set_ullong +EXPORT_SYMBOL vmlinux 0x70f96f88 glob_match +EXPORT_SYMBOL vmlinux 0x7104e9fb pci_disable_link_state +EXPORT_SYMBOL vmlinux 0x7110566d ip_mc_join_group +EXPORT_SYMBOL vmlinux 0x7126d434 audit_log_task_info +EXPORT_SYMBOL vmlinux 0x7129e5f8 hex_asc +EXPORT_SYMBOL vmlinux 0x712ed37b radix_tree_gang_lookup_tag_slot +EXPORT_SYMBOL vmlinux 0x71493220 cdrom_mode_sense +EXPORT_SYMBOL vmlinux 0x7171121c overflowgid +EXPORT_SYMBOL vmlinux 0x717f5368 vme_bus_num +EXPORT_SYMBOL vmlinux 0x7185233f clear_nlink +EXPORT_SYMBOL vmlinux 0x71a50dbc register_blkdev +EXPORT_SYMBOL vmlinux 0x71a672ef dmam_pool_destroy +EXPORT_SYMBOL vmlinux 0x71b3353a inet6_release +EXPORT_SYMBOL vmlinux 0x71c055ac new_inode +EXPORT_SYMBOL vmlinux 0x71c5ab51 __pci_enable_wake +EXPORT_SYMBOL vmlinux 0x71dc7e7b generic_perform_write +EXPORT_SYMBOL vmlinux 0x71dca010 param_set_bint +EXPORT_SYMBOL vmlinux 0x71dd9102 inode_sub_rsv_space +EXPORT_SYMBOL vmlinux 0x71f65175 hdmi_spd_infoframe_pack +EXPORT_SYMBOL vmlinux 0x721cc977 ip_queue_xmit +EXPORT_SYMBOL vmlinux 0x72274012 del_random_ready_callback +EXPORT_SYMBOL vmlinux 0x7227adfd __ip4_datagram_connect +EXPORT_SYMBOL vmlinux 0x723dd799 acpi_match_device_ids +EXPORT_SYMBOL vmlinux 0x724be0ee update_devfreq +EXPORT_SYMBOL vmlinux 0x725444dc swiotlb_unmap_sg_attrs +EXPORT_SYMBOL vmlinux 0x72618070 pci_get_class +EXPORT_SYMBOL vmlinux 0x7272b88f skb_checksum_help +EXPORT_SYMBOL vmlinux 0x727cb064 icmpv6_send +EXPORT_SYMBOL vmlinux 0x728ffe1f pcim_iounmap_regions +EXPORT_SYMBOL vmlinux 0x72aa5227 km_state_expired +EXPORT_SYMBOL vmlinux 0x72ae1706 follow_up +EXPORT_SYMBOL vmlinux 0x72b243d4 free_dma +EXPORT_SYMBOL vmlinux 0x72b9323c serio_reconnect +EXPORT_SYMBOL vmlinux 0x72bf2140 mtrr_add +EXPORT_SYMBOL vmlinux 0x72d58de9 kstrtou8_from_user +EXPORT_SYMBOL vmlinux 0x72ea7b2d scsi_device_type +EXPORT_SYMBOL vmlinux 0x72f8fa15 filemap_write_and_wait +EXPORT_SYMBOL vmlinux 0x7308d14f jbd2_journal_init_dev +EXPORT_SYMBOL vmlinux 0x730b039c bprm_change_interp +EXPORT_SYMBOL vmlinux 0x7310517a write_inode_now +EXPORT_SYMBOL vmlinux 0x7315a4e9 twl6030_mmc_card_detect_config +EXPORT_SYMBOL vmlinux 0x73178139 set_security_override +EXPORT_SYMBOL vmlinux 0x731ede64 padata_set_cpumasks +EXPORT_SYMBOL vmlinux 0x733c3b54 kasprintf +EXPORT_SYMBOL vmlinux 0x7349deee skb_push +EXPORT_SYMBOL vmlinux 0x734a41e0 dma_set_mask +EXPORT_SYMBOL vmlinux 0x734faba1 blk_mq_start_hw_queue +EXPORT_SYMBOL vmlinux 0x7350a5e9 pagecache_isize_extended +EXPORT_SYMBOL vmlinux 0x73591690 up_write +EXPORT_SYMBOL vmlinux 0x735a0bd5 native_io_delay +EXPORT_SYMBOL vmlinux 0x73659612 unregister_qdisc +EXPORT_SYMBOL vmlinux 0x738714db ida_pre_get +EXPORT_SYMBOL vmlinux 0x738803e6 strnlen +EXPORT_SYMBOL vmlinux 0x73941dd7 skb_queue_purge +EXPORT_SYMBOL vmlinux 0x73cf1906 pci_bus_write_config_byte +EXPORT_SYMBOL vmlinux 0x73dd54eb irq_fpu_usable +EXPORT_SYMBOL vmlinux 0x73e20c1c strlcpy +EXPORT_SYMBOL vmlinux 0x73e47fef inc_zone_page_state +EXPORT_SYMBOL vmlinux 0x740a1b95 reserve_evntsel_nmi +EXPORT_SYMBOL vmlinux 0x7410aba2 strreplace +EXPORT_SYMBOL vmlinux 0x7413793a EISA_bus +EXPORT_SYMBOL vmlinux 0x7421304d param_ops_short +EXPORT_SYMBOL vmlinux 0x7421743a bdget_disk +EXPORT_SYMBOL vmlinux 0x7438adb4 phy_ethtool_set_wol +EXPORT_SYMBOL vmlinux 0x743a0e71 xfrm_policy_register_afinfo +EXPORT_SYMBOL vmlinux 0x743b4ae3 atomic64_inc_not_zero_cx8 +EXPORT_SYMBOL vmlinux 0x745f20a3 idr_is_empty +EXPORT_SYMBOL vmlinux 0x746781c6 scsi_eh_prep_cmnd +EXPORT_SYMBOL vmlinux 0x747195f0 hdmi_vendor_infoframe_init +EXPORT_SYMBOL vmlinux 0x7485e15e unregister_chrdev_region +EXPORT_SYMBOL vmlinux 0x7497f325 pskb_expand_head +EXPORT_SYMBOL vmlinux 0x74a436c4 mem_section +EXPORT_SYMBOL vmlinux 0x74c134b9 __sw_hweight32 +EXPORT_SYMBOL vmlinux 0x74d5c7cc dquot_enable +EXPORT_SYMBOL vmlinux 0x74e33541 devm_ioremap_resource +EXPORT_SYMBOL vmlinux 0x74e5c98f ucs2_strnlen +EXPORT_SYMBOL vmlinux 0x74e5ff1a udpv6_encap_enable +EXPORT_SYMBOL vmlinux 0x7505bdef memchr_inv +EXPORT_SYMBOL vmlinux 0x750c960f find_lock_entry +EXPORT_SYMBOL vmlinux 0x75183ae4 gnttab_alloc_pages +EXPORT_SYMBOL vmlinux 0x75271716 save_processor_state +EXPORT_SYMBOL vmlinux 0x7531e3dc acpi_get_event_resources +EXPORT_SYMBOL vmlinux 0x7538b132 agp_off +EXPORT_SYMBOL vmlinux 0x753bac58 padata_remove_cpu +EXPORT_SYMBOL vmlinux 0x75408716 elv_rb_add +EXPORT_SYMBOL vmlinux 0x7546e35c tcp_v4_md5_hash_skb +EXPORT_SYMBOL vmlinux 0x754d0b15 xfrm_policy_byid +EXPORT_SYMBOL vmlinux 0x754f5de2 dquot_alloc +EXPORT_SYMBOL vmlinux 0x7557053c mipi_dsi_set_maximum_return_packet_size +EXPORT_SYMBOL vmlinux 0x7571a11d I_BDEV +EXPORT_SYMBOL vmlinux 0x758a2b6c default_file_splice_read +EXPORT_SYMBOL vmlinux 0x758ea000 jbd2_journal_abort +EXPORT_SYMBOL vmlinux 0x7593d385 div64_s64 +EXPORT_SYMBOL vmlinux 0x75946af0 cdev_del +EXPORT_SYMBOL vmlinux 0x759e09ee page_cache_next_hole +EXPORT_SYMBOL vmlinux 0x75bc549a x86_cpu_to_apicid +EXPORT_SYMBOL vmlinux 0x75bda77a seq_hlist_next +EXPORT_SYMBOL vmlinux 0x75bdea12 iommu_area_alloc +EXPORT_SYMBOL vmlinux 0x75bf942f sk_stream_write_space +EXPORT_SYMBOL vmlinux 0x75d21809 vprintk_emit +EXPORT_SYMBOL vmlinux 0x75d9be50 mmc_calc_max_discard +EXPORT_SYMBOL vmlinux 0x75e0afc0 agp_generic_alloc_pages +EXPORT_SYMBOL vmlinux 0x75e5bea9 dev_trans_start +EXPORT_SYMBOL vmlinux 0x75f132e0 udp_lib_getsockopt +EXPORT_SYMBOL vmlinux 0x75f78795 vfs_mknod +EXPORT_SYMBOL vmlinux 0x75f8f416 proc_set_user +EXPORT_SYMBOL vmlinux 0x75fbdefd acpi_remove_address_space_handler +EXPORT_SYMBOL vmlinux 0x760a0f4f yield +EXPORT_SYMBOL vmlinux 0x76140a98 serio_unregister_child_port +EXPORT_SYMBOL vmlinux 0x762add85 atomic64_inc_return_cx8 +EXPORT_SYMBOL vmlinux 0x7647726c handle_sysrq +EXPORT_SYMBOL vmlinux 0x764bd77c request_resource +EXPORT_SYMBOL vmlinux 0x76581bb6 blk_rq_count_integrity_sg +EXPORT_SYMBOL vmlinux 0x766cf99d filemap_fdatawait +EXPORT_SYMBOL vmlinux 0x767989ca qdisc_class_hash_grow +EXPORT_SYMBOL vmlinux 0x767ddb02 set_memory_wc +EXPORT_SYMBOL vmlinux 0x768a1b08 register_qdisc +EXPORT_SYMBOL vmlinux 0x768f6eb4 blk_complete_request +EXPORT_SYMBOL vmlinux 0x768f8326 tty_hung_up_p +EXPORT_SYMBOL vmlinux 0x769e06d7 smp_call_function_many +EXPORT_SYMBOL vmlinux 0x76b2dbaf con_is_bound +EXPORT_SYMBOL vmlinux 0x76b6fb42 __page_symlink +EXPORT_SYMBOL vmlinux 0x76d3cd60 laptop_mode +EXPORT_SYMBOL vmlinux 0x76d451c4 add_taint +EXPORT_SYMBOL vmlinux 0x76d9bf11 crc32_be +EXPORT_SYMBOL vmlinux 0x76f6c5ef kmalloc_order +EXPORT_SYMBOL vmlinux 0x770a0036 isapnp_cfg_begin +EXPORT_SYMBOL vmlinux 0x770e9067 phy_ethtool_set_eee +EXPORT_SYMBOL vmlinux 0x771b8ec4 queue_write_lock_slowpath +EXPORT_SYMBOL vmlinux 0x771cf835 dma_pool_alloc +EXPORT_SYMBOL vmlinux 0x7731f8c1 splice_direct_to_actor +EXPORT_SYMBOL vmlinux 0x7733db1a simple_rename +EXPORT_SYMBOL vmlinux 0x7744a905 pnp_get_resource +EXPORT_SYMBOL vmlinux 0x77456e0a acpi_root_dir +EXPORT_SYMBOL vmlinux 0x7772639c shrink_dcache_parent +EXPORT_SYMBOL vmlinux 0x77850405 vm_insert_pfn +EXPORT_SYMBOL vmlinux 0x779a18af kstrtoll +EXPORT_SYMBOL vmlinux 0x77a439bd invalidate_mapping_pages +EXPORT_SYMBOL vmlinux 0x77a6386d __alloc_skb +EXPORT_SYMBOL vmlinux 0x77bbb67b ps2_sendbyte +EXPORT_SYMBOL vmlinux 0x77bc13a0 strim +EXPORT_SYMBOL vmlinux 0x77bf0786 agp_bind_memory +EXPORT_SYMBOL vmlinux 0x77c088e9 rtnl_unicast +EXPORT_SYMBOL vmlinux 0x77f82443 kmem_cache_shrink +EXPORT_SYMBOL vmlinux 0x77fab470 put_tty_driver +EXPORT_SYMBOL vmlinux 0x780fdfd1 intel_enable_gtt +EXPORT_SYMBOL vmlinux 0x7814bf97 bitmap_start_sync +EXPORT_SYMBOL vmlinux 0x782567ec memcg_kmem_enabled_key +EXPORT_SYMBOL vmlinux 0x783b3563 wake_up_atomic_t +EXPORT_SYMBOL vmlinux 0x7850ed6b file_open_root +EXPORT_SYMBOL vmlinux 0x78690dea pci_back_from_sleep +EXPORT_SYMBOL vmlinux 0x7880c781 dm_kcopyd_prepare_callback +EXPORT_SYMBOL vmlinux 0x789affb1 frontswap_tmem_exclusive_gets +EXPORT_SYMBOL vmlinux 0x789b7898 kthread_bind +EXPORT_SYMBOL vmlinux 0x789bc708 tcp_v4_do_rcv +EXPORT_SYMBOL vmlinux 0x789eddd8 dev_uc_unsync +EXPORT_SYMBOL vmlinux 0x78a5ff8a fence_add_callback +EXPORT_SYMBOL vmlinux 0x78aa8943 bio_integrity_add_page +EXPORT_SYMBOL vmlinux 0x78be98f4 dcache_dir_lseek +EXPORT_SYMBOL vmlinux 0x78d55521 netif_carrier_on +EXPORT_SYMBOL vmlinux 0x78df6bd7 no_pci_devices +EXPORT_SYMBOL vmlinux 0x78e739aa up +EXPORT_SYMBOL vmlinux 0x78ec58d6 xfrm_unregister_type +EXPORT_SYMBOL vmlinux 0x78faf58e skb_prepare_seq_read +EXPORT_SYMBOL vmlinux 0x79068fda acpi_install_method +EXPORT_SYMBOL vmlinux 0x791ed1c9 rename_lock +EXPORT_SYMBOL vmlinux 0x792bb77f __cleancache_invalidate_page +EXPORT_SYMBOL vmlinux 0x7946b933 __bforget +EXPORT_SYMBOL vmlinux 0x794fe821 phy_init_eee +EXPORT_SYMBOL vmlinux 0x795be798 jbd2_journal_begin_ordered_truncate +EXPORT_SYMBOL vmlinux 0x796254d0 down_read_trylock +EXPORT_SYMBOL vmlinux 0x796c72d7 padata_unregister_cpumask_notifier +EXPORT_SYMBOL vmlinux 0x796fc5ce scsi_get_sense_info_fld +EXPORT_SYMBOL vmlinux 0x797e06dc md_error +EXPORT_SYMBOL vmlinux 0x798365f3 xfrm4_rcv_encap +EXPORT_SYMBOL vmlinux 0x799571bd devm_devfreq_register_opp_notifier +EXPORT_SYMBOL vmlinux 0x79968b4a bitmap_endwrite +EXPORT_SYMBOL vmlinux 0x79a3ad4e generic_file_llseek_size +EXPORT_SYMBOL vmlinux 0x79aa04a2 get_random_bytes +EXPORT_SYMBOL vmlinux 0x79d6524b netdev_upper_get_next_dev_rcu +EXPORT_SYMBOL vmlinux 0x7a27c184 ewma_init +EXPORT_SYMBOL vmlinux 0x7a2af7b4 cpu_number +EXPORT_SYMBOL vmlinux 0x7a3a4979 mutex_unlock +EXPORT_SYMBOL vmlinux 0x7a3ae32e _raw_write_trylock +EXPORT_SYMBOL vmlinux 0x7a411994 ip4_datagram_connect +EXPORT_SYMBOL vmlinux 0x7a4497db kzfree +EXPORT_SYMBOL vmlinux 0x7a45821a jbd2_journal_forget +EXPORT_SYMBOL vmlinux 0x7a4c2692 devm_gpio_request_one +EXPORT_SYMBOL vmlinux 0x7a52d4b5 register_filesystem +EXPORT_SYMBOL vmlinux 0x7a82cb47 rdmsrl_safe_on_cpu +EXPORT_SYMBOL vmlinux 0x7a925833 cpufreq_get_global_kobject +EXPORT_SYMBOL vmlinux 0x7a95e5ae do_settimeofday64 +EXPORT_SYMBOL vmlinux 0x7aa1756e kvfree +EXPORT_SYMBOL vmlinux 0x7aa82187 mipi_dsi_generic_read +EXPORT_SYMBOL vmlinux 0x7ab88a45 system_freezing_cnt +EXPORT_SYMBOL vmlinux 0x7ad050b9 qid_lt +EXPORT_SYMBOL vmlinux 0x7ad4d1bc scsi_host_alloc +EXPORT_SYMBOL vmlinux 0x7add44b5 posix_acl_valid +EXPORT_SYMBOL vmlinux 0x7aec7057 __neigh_for_each_release +EXPORT_SYMBOL vmlinux 0x7aec9089 clear_user +EXPORT_SYMBOL vmlinux 0x7afa89fc vsnprintf +EXPORT_SYMBOL vmlinux 0x7b00bc8f cad_pid +EXPORT_SYMBOL vmlinux 0x7b134ddf acpi_get_name +EXPORT_SYMBOL vmlinux 0x7b14a05e ppp_input +EXPORT_SYMBOL vmlinux 0x7b1ade38 lz4_decompress +EXPORT_SYMBOL vmlinux 0x7b1e3bfe delete_from_page_cache +EXPORT_SYMBOL vmlinux 0x7b27bc8f __destroy_inode +EXPORT_SYMBOL vmlinux 0x7b283ce3 prandom_bytes_state +EXPORT_SYMBOL vmlinux 0x7b3acc2a ip6_xmit +EXPORT_SYMBOL vmlinux 0x7b49b822 ab3100_event_unregister +EXPORT_SYMBOL vmlinux 0x7b52a859 wrmsr_safe_on_cpu +EXPORT_SYMBOL vmlinux 0x7b5c8440 vm_munmap +EXPORT_SYMBOL vmlinux 0x7b5fde27 x86_hyper_vmware +EXPORT_SYMBOL vmlinux 0x7b63f85d flock_lock_inode_wait +EXPORT_SYMBOL vmlinux 0x7b6ccf91 __skb_checksum +EXPORT_SYMBOL vmlinux 0x7b7ef19f acl_by_type +EXPORT_SYMBOL vmlinux 0x7b8412f9 __skb_checksum_complete_head +EXPORT_SYMBOL vmlinux 0x7b94788a setup_arg_pages +EXPORT_SYMBOL vmlinux 0x7bad7a1a acpi_walk_resources +EXPORT_SYMBOL vmlinux 0x7bb2a0aa dev_get_iflink +EXPORT_SYMBOL vmlinux 0x7bdd58d6 t10_pi_type3_crc +EXPORT_SYMBOL vmlinux 0x7bf13a53 tcf_exts_dump_stats +EXPORT_SYMBOL vmlinux 0x7c1372e8 panic +EXPORT_SYMBOL vmlinux 0x7c167b41 user_path_at_empty +EXPORT_SYMBOL vmlinux 0x7c173634 __bitmap_complement +EXPORT_SYMBOL vmlinux 0x7c1cb66f dev_uc_add_excl +EXPORT_SYMBOL vmlinux 0x7c2f79a9 simple_transaction_set +EXPORT_SYMBOL vmlinux 0x7c46233a cpufreq_quick_get +EXPORT_SYMBOL vmlinux 0x7c5ab60b eth_header_cache +EXPORT_SYMBOL vmlinux 0x7c61340c __release_region +EXPORT_SYMBOL vmlinux 0x7c7b376c i2c_del_adapter +EXPORT_SYMBOL vmlinux 0x7c8b5f38 km_query +EXPORT_SYMBOL vmlinux 0x7c8eee7b sock_i_ino +EXPORT_SYMBOL vmlinux 0x7c98845d twl_i2c_read +EXPORT_SYMBOL vmlinux 0x7ca9bc94 security_inode_listsecurity +EXPORT_SYMBOL vmlinux 0x7cb1ae69 cpu_down +EXPORT_SYMBOL vmlinux 0x7cc07bd2 xfrm_sad_getinfo +EXPORT_SYMBOL vmlinux 0x7cddb152 pci_platform_rom +EXPORT_SYMBOL vmlinux 0x7ce18c9f from_kqid +EXPORT_SYMBOL vmlinux 0x7ce83365 acpi_remove_table_handler +EXPORT_SYMBOL vmlinux 0x7ced1653 filemap_fdatawait_range +EXPORT_SYMBOL vmlinux 0x7cf35220 vme_master_free +EXPORT_SYMBOL vmlinux 0x7cf86c4c nla_reserve_nohdr +EXPORT_SYMBOL vmlinux 0x7cfc0775 mmc_add_host +EXPORT_SYMBOL vmlinux 0x7d0db45c jiffies_to_clock_t +EXPORT_SYMBOL vmlinux 0x7d11c268 jiffies +EXPORT_SYMBOL vmlinux 0x7d3ba6ee mmc_remove_host +EXPORT_SYMBOL vmlinux 0x7d4a80e6 dquot_destroy +EXPORT_SYMBOL vmlinux 0x7d530419 tty_wait_until_sent +EXPORT_SYMBOL vmlinux 0x7d6cd0fe cdrom_media_changed +EXPORT_SYMBOL vmlinux 0x7d705738 blk_start_plug +EXPORT_SYMBOL vmlinux 0x7d849781 dev_load +EXPORT_SYMBOL vmlinux 0x7d94f746 acpi_os_write_port +EXPORT_SYMBOL vmlinux 0x7d96cea3 wait_for_completion_interruptible +EXPORT_SYMBOL vmlinux 0x7dbc2e57 mmiotrace_printk +EXPORT_SYMBOL vmlinux 0x7dea0228 mmc_fixup_device +EXPORT_SYMBOL vmlinux 0x7deff673 dm_consume_args +EXPORT_SYMBOL vmlinux 0x7e5e30fc __ww_mutex_lock_interruptible +EXPORT_SYMBOL vmlinux 0x7e675dba key_validate +EXPORT_SYMBOL vmlinux 0x7e6bf13c mount_pseudo +EXPORT_SYMBOL vmlinux 0x7e759d9f kill_anon_super +EXPORT_SYMBOL vmlinux 0x7e7647d4 netif_device_detach +EXPORT_SYMBOL vmlinux 0x7e7fc3fb __wake_up_bit +EXPORT_SYMBOL vmlinux 0x7e82473a inet_sock_destruct +EXPORT_SYMBOL vmlinux 0x7e88fa95 udp6_csum_init +EXPORT_SYMBOL vmlinux 0x7e90459d ll_rw_block +EXPORT_SYMBOL vmlinux 0x7eafc500 page_symlink_inode_operations +EXPORT_SYMBOL vmlinux 0x7eb47e0b tty_port_put +EXPORT_SYMBOL vmlinux 0x7ebf2e5e input_handler_for_each_handle +EXPORT_SYMBOL vmlinux 0x7ecb001b __per_cpu_offset +EXPORT_SYMBOL vmlinux 0x7ee6d93a nsecs_to_jiffies64 +EXPORT_SYMBOL vmlinux 0x7ee73c0c memcg_socket_limit_enabled +EXPORT_SYMBOL vmlinux 0x7f02188f __msecs_to_jiffies +EXPORT_SYMBOL vmlinux 0x7f0b13fa con_copy_unimap +EXPORT_SYMBOL vmlinux 0x7f16af9f put_io_context +EXPORT_SYMBOL vmlinux 0x7f24de73 jiffies_to_usecs +EXPORT_SYMBOL vmlinux 0x7f47e3bf blk_rq_map_user +EXPORT_SYMBOL vmlinux 0x7f4ab10f kmem_cache_size +EXPORT_SYMBOL vmlinux 0x7f4b51a7 dst_alloc +EXPORT_SYMBOL vmlinux 0x7f62a045 cpu_maps_update_done +EXPORT_SYMBOL vmlinux 0x7f66b50c pcie_get_mps +EXPORT_SYMBOL vmlinux 0x7f6ac450 tcp_recvmsg +EXPORT_SYMBOL vmlinux 0x7f94701e pm860x_reg_read +EXPORT_SYMBOL vmlinux 0x7f9d9749 dma_mark_declared_memory_occupied +EXPORT_SYMBOL vmlinux 0x7fcde38d dquot_quotactl_sysfile_ops +EXPORT_SYMBOL vmlinux 0x7fde2edb vme_master_read +EXPORT_SYMBOL vmlinux 0x7fe32873 rb_replace_node +EXPORT_SYMBOL vmlinux 0x7febbf64 __splice_from_pipe +EXPORT_SYMBOL vmlinux 0x8019f07d blk_queue_resize_tags +EXPORT_SYMBOL vmlinux 0x803e3966 filemap_fdatawrite_range +EXPORT_SYMBOL vmlinux 0x804014fe scsi_device_set_state +EXPORT_SYMBOL vmlinux 0x8043faf5 blk_rq_map_integrity_sg +EXPORT_SYMBOL vmlinux 0x8049c1ab kernel_read +EXPORT_SYMBOL vmlinux 0x804fdfdc __blk_end_request +EXPORT_SYMBOL vmlinux 0x809388ca idr_destroy +EXPORT_SYMBOL vmlinux 0x809608f6 read_code +EXPORT_SYMBOL vmlinux 0x80a80e22 bitmap_close_sync +EXPORT_SYMBOL vmlinux 0x80bf1fa3 unregister_tcf_proto_ops +EXPORT_SYMBOL vmlinux 0x80ca5026 _bin2bcd +EXPORT_SYMBOL vmlinux 0x80d68d3e fb_register_client +EXPORT_SYMBOL vmlinux 0x80d9ca85 paravirt_ticketlocks_enabled +EXPORT_SYMBOL vmlinux 0x80eb423b acpi_get_object_info +EXPORT_SYMBOL vmlinux 0x80eeb019 filp_open +EXPORT_SYMBOL vmlinux 0x80fd82ca tcp_splice_read +EXPORT_SYMBOL vmlinux 0x81144f9d idr_find_slowpath +EXPORT_SYMBOL vmlinux 0x81154e23 kunmap +EXPORT_SYMBOL vmlinux 0x8115eef3 __invalidate_device +EXPORT_SYMBOL vmlinux 0x81472677 acpi_get_table +EXPORT_SYMBOL vmlinux 0x814d0fe6 inet6_unregister_icmp_sender +EXPORT_SYMBOL vmlinux 0x814e7730 nf_ct_destroy +EXPORT_SYMBOL vmlinux 0x815b5dd4 match_octal +EXPORT_SYMBOL vmlinux 0x815c56d0 cpu_present_mask +EXPORT_SYMBOL vmlinux 0x815f2897 empty_zero_page +EXPORT_SYMBOL vmlinux 0x817411bf user_revoke +EXPORT_SYMBOL vmlinux 0x81838454 tty_driver_flush_buffer +EXPORT_SYMBOL vmlinux 0x81abe38d fifo_set_limit +EXPORT_SYMBOL vmlinux 0x81b3ef64 from_kgid_munged +EXPORT_SYMBOL vmlinux 0x81ba138d alloc_disk_node +EXPORT_SYMBOL vmlinux 0x81c1fd34 bio_integrity_advance +EXPORT_SYMBOL vmlinux 0x81d2658c __scsi_device_lookup +EXPORT_SYMBOL vmlinux 0x81db6ebb xz_dec_reset +EXPORT_SYMBOL vmlinux 0x81e6b37f dmi_get_system_info +EXPORT_SYMBOL vmlinux 0x81f2d92b inet_sendmsg +EXPORT_SYMBOL vmlinux 0x82072614 tasklet_kill +EXPORT_SYMBOL vmlinux 0x820d8071 __wait_on_buffer +EXPORT_SYMBOL vmlinux 0x8212721d xenbus_dev_request_and_reply +EXPORT_SYMBOL vmlinux 0x822de37d netpoll_print_options +EXPORT_SYMBOL vmlinux 0x8235805b memmove +EXPORT_SYMBOL vmlinux 0x8252d0ea agp_generic_create_gatt_table +EXPORT_SYMBOL vmlinux 0x82692891 __ip_select_ident +EXPORT_SYMBOL vmlinux 0x82701365 int_to_scsilun +EXPORT_SYMBOL vmlinux 0x8270eed6 security_path_mkdir +EXPORT_SYMBOL vmlinux 0x828062b1 __frontswap_init +EXPORT_SYMBOL vmlinux 0x82871b60 dmt_modes +EXPORT_SYMBOL vmlinux 0x829534b3 fence_free +EXPORT_SYMBOL vmlinux 0x829576e0 pipe_unlock +EXPORT_SYMBOL vmlinux 0x82a853fd seq_vprintf +EXPORT_SYMBOL vmlinux 0x82acfb70 blk_iopoll_sched +EXPORT_SYMBOL vmlinux 0x82adcb8a path_get +EXPORT_SYMBOL vmlinux 0x8304733a blk_set_stacking_limits +EXPORT_SYMBOL vmlinux 0x830e547b ioremap_prot +EXPORT_SYMBOL vmlinux 0x8312eb61 mutex_lock_killable +EXPORT_SYMBOL vmlinux 0x8329e6f0 memset +EXPORT_SYMBOL vmlinux 0x833c03aa acpi_enable_all_runtime_gpes +EXPORT_SYMBOL vmlinux 0x8360a5db mmc_power_restore_host +EXPORT_SYMBOL vmlinux 0x836e960a page_symlink +EXPORT_SYMBOL vmlinux 0x8372cd2f __gnet_stats_copy_basic +EXPORT_SYMBOL vmlinux 0x8382e59a acpi_walk_resource_buffer +EXPORT_SYMBOL vmlinux 0x83888ced inode_reclaim_rsv_space +EXPORT_SYMBOL vmlinux 0x839430b2 __register_cpu_notifier +EXPORT_SYMBOL vmlinux 0x83b009ea xfrm_state_walk_init +EXPORT_SYMBOL vmlinux 0x83c52fba xfrm4_protocol_init +EXPORT_SYMBOL vmlinux 0x83cf956d ps2_init +EXPORT_SYMBOL vmlinux 0x83d62993 xfrm_state_delete_tunnel +EXPORT_SYMBOL vmlinux 0x83f6f944 zpool_register_driver +EXPORT_SYMBOL vmlinux 0x83fe7d0c __sk_mem_reclaim +EXPORT_SYMBOL vmlinux 0x84028baf scsi_rescan_device +EXPORT_SYMBOL vmlinux 0x8404b527 ht_create_irq +EXPORT_SYMBOL vmlinux 0x84060081 xen_poll_irq_timeout +EXPORT_SYMBOL vmlinux 0x84093774 md_update_sb +EXPORT_SYMBOL vmlinux 0x8417f512 acpi_update_all_gpes +EXPORT_SYMBOL vmlinux 0x8417f6de tcp_setsockopt +EXPORT_SYMBOL vmlinux 0x843b8237 netdev_master_upper_dev_get +EXPORT_SYMBOL vmlinux 0x8444107a padata_stop +EXPORT_SYMBOL vmlinux 0x8445b22d textsearch_prepare +EXPORT_SYMBOL vmlinux 0x845d0f06 sock_setsockopt +EXPORT_SYMBOL vmlinux 0x8471abc3 pci_dev_put +EXPORT_SYMBOL vmlinux 0x84bd8e1e inet_dgram_ops +EXPORT_SYMBOL vmlinux 0x84c3809c ipv6_sock_mc_join +EXPORT_SYMBOL vmlinux 0x84ca2382 redraw_screen +EXPORT_SYMBOL vmlinux 0x84d1397e xfrm_policy_flush +EXPORT_SYMBOL vmlinux 0x84dc4080 inet_unregister_protosw +EXPORT_SYMBOL vmlinux 0x84ffea8b idr_preload +EXPORT_SYMBOL vmlinux 0x8526c35a remove_wait_queue +EXPORT_SYMBOL vmlinux 0x85274a16 sync_mapping_buffers +EXPORT_SYMBOL vmlinux 0x853cca5f save_mount_options +EXPORT_SYMBOL vmlinux 0x853defa6 xfrm_policy_unregister_afinfo +EXPORT_SYMBOL vmlinux 0x854686ed fixed_size_llseek +EXPORT_SYMBOL vmlinux 0x85588c24 __module_get +EXPORT_SYMBOL vmlinux 0x855d7a4d eth_gro_receive +EXPORT_SYMBOL vmlinux 0x855debe9 inet_bind +EXPORT_SYMBOL vmlinux 0x8560f3d5 vm_iomap_memory +EXPORT_SYMBOL vmlinux 0x85670f1d rtnl_is_locked +EXPORT_SYMBOL vmlinux 0x857582f7 acpi_enable_all_wakeup_gpes +EXPORT_SYMBOL vmlinux 0x85b5e625 rfkill_set_states +EXPORT_SYMBOL vmlinux 0x85d085d6 jbd2_journal_update_sb_errno +EXPORT_SYMBOL vmlinux 0x85d4518b swiotlb_map_sg_attrs +EXPORT_SYMBOL vmlinux 0x85df9b6c strsep +EXPORT_SYMBOL vmlinux 0x85efc7e0 zero_pfn +EXPORT_SYMBOL vmlinux 0x860fd4ab make_kuid +EXPORT_SYMBOL vmlinux 0x861e22a4 acpi_map_cpu +EXPORT_SYMBOL vmlinux 0x8638f59c blk_queue_alignment_offset +EXPORT_SYMBOL vmlinux 0x864d79cb done_path_create +EXPORT_SYMBOL vmlinux 0x865029ac __hw_addr_sync +EXPORT_SYMBOL vmlinux 0x8653d51a bio_get_nr_vecs +EXPORT_SYMBOL vmlinux 0x86588053 gen_pool_destroy +EXPORT_SYMBOL vmlinux 0x865cbbf6 __skb_get_hash +EXPORT_SYMBOL vmlinux 0x865d263c tcp_sockets_allocated +EXPORT_SYMBOL vmlinux 0x8664f62e cpufreq_update_policy +EXPORT_SYMBOL vmlinux 0x8684ab9e security_inode_readlink +EXPORT_SYMBOL vmlinux 0x868acba5 get_options +EXPORT_SYMBOL vmlinux 0x868f4dc8 mb_cache_entry_release +EXPORT_SYMBOL vmlinux 0x86991285 twl6040_set_pll +EXPORT_SYMBOL vmlinux 0x86a41b2e padata_free +EXPORT_SYMBOL vmlinux 0x86a4889a kmalloc_order_trace +EXPORT_SYMBOL vmlinux 0x86fb9b05 bitmap_parse_user +EXPORT_SYMBOL vmlinux 0x8703f834 generic_end_io_acct +EXPORT_SYMBOL vmlinux 0x8707d5b7 xfrm_state_lookup +EXPORT_SYMBOL vmlinux 0x871c0a7e fiemap_check_flags +EXPORT_SYMBOL vmlinux 0x871d8fce fsnotify_put_group +EXPORT_SYMBOL vmlinux 0x875285ac neigh_seq_next +EXPORT_SYMBOL vmlinux 0x876dafc3 ec_write +EXPORT_SYMBOL vmlinux 0x87829172 sock_queue_err_skb +EXPORT_SYMBOL vmlinux 0x878ab3ce sysctl_tcp_adv_win_scale +EXPORT_SYMBOL vmlinux 0x878cd015 wait_for_completion_interruptible_timeout +EXPORT_SYMBOL vmlinux 0x87963c5b pci_bus_alloc_resource +EXPORT_SYMBOL vmlinux 0x8798e453 __tracepoint_kfree +EXPORT_SYMBOL vmlinux 0x87aaddf8 wrmsr_safe_regs_on_cpu +EXPORT_SYMBOL vmlinux 0x87c47b6a nf_register_queue_handler +EXPORT_SYMBOL vmlinux 0x87f89ce0 _raw_read_unlock_irqrestore +EXPORT_SYMBOL vmlinux 0x87f8f45b __blk_end_request_cur +EXPORT_SYMBOL vmlinux 0x87fea105 is_nd_btt +EXPORT_SYMBOL vmlinux 0x8800a1ba vme_register_driver +EXPORT_SYMBOL vmlinux 0x8800cbba _raw_read_unlock_irq +EXPORT_SYMBOL vmlinux 0x882ba254 pci_iomap_range +EXPORT_SYMBOL vmlinux 0x889ccd70 cdrom_release +EXPORT_SYMBOL vmlinux 0x88a652a9 udp_disconnect +EXPORT_SYMBOL vmlinux 0x88ad02f4 scsi_command_normalize_sense +EXPORT_SYMBOL vmlinux 0x88c05cd9 build_skb +EXPORT_SYMBOL vmlinux 0x88c96f7d dquot_set_dqinfo +EXPORT_SYMBOL vmlinux 0x88cf756a blk_queue_find_tag +EXPORT_SYMBOL vmlinux 0x88e7d252 fsnotify_get_group +EXPORT_SYMBOL vmlinux 0x890c9773 neigh_parms_release +EXPORT_SYMBOL vmlinux 0x8926206b phy_mac_interrupt +EXPORT_SYMBOL vmlinux 0x892b26a0 set_memory_nx +EXPORT_SYMBOL vmlinux 0x894c3e8f mpage_readpages +EXPORT_SYMBOL vmlinux 0x895377d7 blk_mq_init_allocated_queue +EXPORT_SYMBOL vmlinux 0x8953f8ff __tracepoint_kmem_cache_alloc +EXPORT_SYMBOL vmlinux 0x89afe34e __kfifo_dma_in_prepare +EXPORT_SYMBOL vmlinux 0x89d5538d fb_pad_aligned_buffer +EXPORT_SYMBOL vmlinux 0x8a0b12c6 complete_all +EXPORT_SYMBOL vmlinux 0x8a141e19 module_refcount +EXPORT_SYMBOL vmlinux 0x8a156f21 flow_cache_fini +EXPORT_SYMBOL vmlinux 0x8a19a12f __genl_register_family +EXPORT_SYMBOL vmlinux 0x8a1ab4ee timeval_to_jiffies +EXPORT_SYMBOL vmlinux 0x8a1c5455 blk_stack_limits +EXPORT_SYMBOL vmlinux 0x8a1c87ac uart_write_wakeup +EXPORT_SYMBOL vmlinux 0x8a1e1fc3 nd_integrity_init +EXPORT_SYMBOL vmlinux 0x8a41e4e4 unregister_framebuffer +EXPORT_SYMBOL vmlinux 0x8a490c90 rfkill_set_sw_state +EXPORT_SYMBOL vmlinux 0x8a501b70 load_nls_default +EXPORT_SYMBOL vmlinux 0x8a51d565 quota_send_warning +EXPORT_SYMBOL vmlinux 0x8a5c759a bio_integrity_enabled +EXPORT_SYMBOL vmlinux 0x8a6944f9 percpu_counter_set +EXPORT_SYMBOL vmlinux 0x8a7d1c31 high_memory +EXPORT_SYMBOL vmlinux 0x8a80d7a5 acpi_error +EXPORT_SYMBOL vmlinux 0x8a99a016 mempool_free_slab +EXPORT_SYMBOL vmlinux 0x8ad3d97d inet_shutdown +EXPORT_SYMBOL vmlinux 0x8adfbc8c pci_bus_type +EXPORT_SYMBOL vmlinux 0x8b001dac eth_header +EXPORT_SYMBOL vmlinux 0x8b060a9e inet_add_offload +EXPORT_SYMBOL vmlinux 0x8b06b557 nf_register_sockopt +EXPORT_SYMBOL vmlinux 0x8b18496f __copy_to_user_ll +EXPORT_SYMBOL vmlinux 0x8b2c07c9 netlink_rcv_skb +EXPORT_SYMBOL vmlinux 0x8b34494c d_obtain_root +EXPORT_SYMBOL vmlinux 0x8b35e873 sg_last +EXPORT_SYMBOL vmlinux 0x8b43159b register_cpu_notifier +EXPORT_SYMBOL vmlinux 0x8b57c33f ab3100_event_register +EXPORT_SYMBOL vmlinux 0x8b618d08 overflowuid +EXPORT_SYMBOL vmlinux 0x8b6d1b3f x86_dma_fallback_dev +EXPORT_SYMBOL vmlinux 0x8b6d4dae key_reject_and_link +EXPORT_SYMBOL vmlinux 0x8b8059bd in_group_p +EXPORT_SYMBOL vmlinux 0x8b989cf9 acpi_bus_can_wakeup +EXPORT_SYMBOL vmlinux 0x8b99f11d genphy_aneg_done +EXPORT_SYMBOL vmlinux 0x8ba1cac5 blk_mq_end_request +EXPORT_SYMBOL vmlinux 0x8ba4489b insert_inode_locked4 +EXPORT_SYMBOL vmlinux 0x8bb140bb xfrm_policy_alloc +EXPORT_SYMBOL vmlinux 0x8bb299ac pnp_device_detach +EXPORT_SYMBOL vmlinux 0x8bbe831d textsearch_destroy +EXPORT_SYMBOL vmlinux 0x8c183cbe iowrite16 +EXPORT_SYMBOL vmlinux 0x8c1f83c8 tcp_gro_complete +EXPORT_SYMBOL vmlinux 0x8c413ee0 PDE_DATA +EXPORT_SYMBOL vmlinux 0x8c4a7ca1 blkdev_issue_discard +EXPORT_SYMBOL vmlinux 0x8c523c94 lro_flush_all +EXPORT_SYMBOL vmlinux 0x8c637d43 irq_cpu_rmap_add +EXPORT_SYMBOL vmlinux 0x8c74608e pnp_disable_dev +EXPORT_SYMBOL vmlinux 0x8c8e5e64 pci_msix_vec_count +EXPORT_SYMBOL vmlinux 0x8c9054d1 mutex_lock +EXPORT_SYMBOL vmlinux 0x8ca4ce52 zero_fill_bio +EXPORT_SYMBOL vmlinux 0x8cc79cab iowrite16_rep +EXPORT_SYMBOL vmlinux 0x8cda8029 xen_clear_irq_pending +EXPORT_SYMBOL vmlinux 0x8ce845e8 pci_save_state +EXPORT_SYMBOL vmlinux 0x8d0cbf35 __xfrm_route_forward +EXPORT_SYMBOL vmlinux 0x8d1a18ea bio_map_kern +EXPORT_SYMBOL vmlinux 0x8d1b1a27 bio_add_pc_page +EXPORT_SYMBOL vmlinux 0x8d22b816 md_wakeup_thread +EXPORT_SYMBOL vmlinux 0x8d4c6b84 __scsi_add_device +EXPORT_SYMBOL vmlinux 0x8d551bef sysctl_tcp_rmem +EXPORT_SYMBOL vmlinux 0x8d55bb8a qid_eq +EXPORT_SYMBOL vmlinux 0x8d6b2ce1 radix_tree_delete_item +EXPORT_SYMBOL vmlinux 0x8d6f81b4 __div64_32 +EXPORT_SYMBOL vmlinux 0x8d72495b __getnstimeofday64 +EXPORT_SYMBOL vmlinux 0x8d73278e hex_asc_upper +EXPORT_SYMBOL vmlinux 0x8d838d91 ida_remove +EXPORT_SYMBOL vmlinux 0x8d8d96c6 acpi_get_sleep_type_data +EXPORT_SYMBOL vmlinux 0x8da1a3cb acpi_remove_interface +EXPORT_SYMBOL vmlinux 0x8da84e44 __mutex_init +EXPORT_SYMBOL vmlinux 0x8daf8c42 dql_init +EXPORT_SYMBOL vmlinux 0x8dc6e564 restore_processor_state +EXPORT_SYMBOL vmlinux 0x8ddb1ac3 pcie_get_readrq +EXPORT_SYMBOL vmlinux 0x8deadf19 tcf_hash_destroy +EXPORT_SYMBOL vmlinux 0x8e002cda acpi_remove_gpe_block +EXPORT_SYMBOL vmlinux 0x8e082688 _raw_read_lock +EXPORT_SYMBOL vmlinux 0x8e0d66f4 __tracepoint_kmalloc +EXPORT_SYMBOL vmlinux 0x8e14f868 dquot_release +EXPORT_SYMBOL vmlinux 0x8e2551be md_flush_request +EXPORT_SYMBOL vmlinux 0x8e2a9bf9 phy_register_fixup_for_id +EXPORT_SYMBOL vmlinux 0x8e30fdcb pipe_lock +EXPORT_SYMBOL vmlinux 0x8e670134 inet_frags_init +EXPORT_SYMBOL vmlinux 0x8e86d9db key_alloc +EXPORT_SYMBOL vmlinux 0x8e888ec3 cpumask_next_and +EXPORT_SYMBOL vmlinux 0x8e8914f6 scsi_cmd_get_serial +EXPORT_SYMBOL vmlinux 0x8e9653de d_invalidate +EXPORT_SYMBOL vmlinux 0x8eaf2a5f vga_switcheroo_unregister_handler +EXPORT_SYMBOL vmlinux 0x8eb7545a serial8250_set_isa_configurator +EXPORT_SYMBOL vmlinux 0x8eb7f3b0 param_array_ops +EXPORT_SYMBOL vmlinux 0x8ec32e55 mmc_gpio_get_cd +EXPORT_SYMBOL vmlinux 0x8ec6b8d1 bh_submit_read +EXPORT_SYMBOL vmlinux 0x8ed469a1 dma_release_from_coherent +EXPORT_SYMBOL vmlinux 0x8ef6f4f8 cookie_ecn_ok +EXPORT_SYMBOL vmlinux 0x8f043c20 scsi_report_opcode +EXPORT_SYMBOL vmlinux 0x8f113fc0 tty_chars_in_buffer +EXPORT_SYMBOL vmlinux 0x8f2703b7 wbinvd_on_all_cpus +EXPORT_SYMBOL vmlinux 0x8f289fdd __ht_create_irq +EXPORT_SYMBOL vmlinux 0x8f305da5 mdiobus_free +EXPORT_SYMBOL vmlinux 0x8f3429f0 max8998_bulk_write +EXPORT_SYMBOL vmlinux 0x8f42447c tcp_init_cgroup +EXPORT_SYMBOL vmlinux 0x8f649f74 gen_new_estimator +EXPORT_SYMBOL vmlinux 0x8f70ff91 kernel_accept +EXPORT_SYMBOL vmlinux 0x8f9c199c __get_user_2 +EXPORT_SYMBOL vmlinux 0x8fa354f7 make_bad_inode +EXPORT_SYMBOL vmlinux 0x8fb5466d console_start +EXPORT_SYMBOL vmlinux 0x8fd01cb8 sdev_disable_disk_events +EXPORT_SYMBOL vmlinux 0x8fedc460 skb_page_frag_refill +EXPORT_SYMBOL vmlinux 0x8ff4079b pv_irq_ops +EXPORT_SYMBOL vmlinux 0x8ffdb3b8 crc16 +EXPORT_SYMBOL vmlinux 0x9015b3ac key_type_keyring +EXPORT_SYMBOL vmlinux 0x9018e503 __neigh_event_send +EXPORT_SYMBOL vmlinux 0x901bd7fe iterate_dir +EXPORT_SYMBOL vmlinux 0x901f9f54 udp6_set_csum +EXPORT_SYMBOL vmlinux 0x902ba5b5 generic_file_fsync +EXPORT_SYMBOL vmlinux 0x904409c6 acpi_set_firmware_waking_vector +EXPORT_SYMBOL vmlinux 0x904c72f8 mipi_dsi_driver_unregister +EXPORT_SYMBOL vmlinux 0x905ee29b inet_put_port +EXPORT_SYMBOL vmlinux 0x90695906 vme_free_consistent +EXPORT_SYMBOL vmlinux 0x908e553f security_dentry_init_security +EXPORT_SYMBOL vmlinux 0x90a7230c __seq_open_private +EXPORT_SYMBOL vmlinux 0x90bece09 rc5t583_ext_power_req_config +EXPORT_SYMBOL vmlinux 0x90c1d44a pci_setup_cardbus +EXPORT_SYMBOL vmlinux 0x90c5e819 kstrtoll_from_user +EXPORT_SYMBOL vmlinux 0x90e412ab seq_file_path +EXPORT_SYMBOL vmlinux 0x90fedee7 tty_port_init +EXPORT_SYMBOL vmlinux 0x91051371 __devm_release_region +EXPORT_SYMBOL vmlinux 0x91463b1d kstrtos16 +EXPORT_SYMBOL vmlinux 0x914add49 netdev_change_features +EXPORT_SYMBOL vmlinux 0x91500677 block_truncate_page +EXPORT_SYMBOL vmlinux 0x9152da7e kfree_skb +EXPORT_SYMBOL vmlinux 0x9159d1d2 ipv6_chk_addr_and_flags +EXPORT_SYMBOL vmlinux 0x91607d95 set_memory_wb +EXPORT_SYMBOL vmlinux 0x91715312 sprintf +EXPORT_SYMBOL vmlinux 0x9186c8b8 iommu_tbl_range_alloc +EXPORT_SYMBOL vmlinux 0x91950da6 dquot_quotactl_ops +EXPORT_SYMBOL vmlinux 0x91967e8e xen_selfballoon_init +EXPORT_SYMBOL vmlinux 0x91a83504 phy_stop +EXPORT_SYMBOL vmlinux 0x91c663f2 __netlink_dump_start +EXPORT_SYMBOL vmlinux 0x91ce46b4 sock_i_uid +EXPORT_SYMBOL vmlinux 0x91d218a1 dquot_free_inode +EXPORT_SYMBOL vmlinux 0x921a42a7 mntput +EXPORT_SYMBOL vmlinux 0x923b1276 dmaengine_get +EXPORT_SYMBOL vmlinux 0x92536b76 simple_getattr +EXPORT_SYMBOL vmlinux 0x925c2d75 __blk_end_request_all +EXPORT_SYMBOL vmlinux 0x925e0924 __wait_on_bit +EXPORT_SYMBOL vmlinux 0x92897e3d default_idle +EXPORT_SYMBOL vmlinux 0x92931a5c vfs_unlink +EXPORT_SYMBOL vmlinux 0x92a9c60c time_to_tm +EXPORT_SYMBOL vmlinux 0x92b8c897 pcim_iounmap +EXPORT_SYMBOL vmlinux 0x92be3646 generic_cont_expand_simple +EXPORT_SYMBOL vmlinux 0x92c84f77 inet_twsk_deschedule +EXPORT_SYMBOL vmlinux 0x92cfff7c neigh_changeaddr +EXPORT_SYMBOL vmlinux 0x92d3e308 vme_slave_request +EXPORT_SYMBOL vmlinux 0x92de7076 locks_init_lock +EXPORT_SYMBOL vmlinux 0x92e4d2fe flow_hash_from_keys +EXPORT_SYMBOL vmlinux 0x92ec0cac napi_disable +EXPORT_SYMBOL vmlinux 0x92f6767f lg_local_lock +EXPORT_SYMBOL vmlinux 0x92fa5abb vme_lm_detach +EXPORT_SYMBOL vmlinux 0x92fbdb97 ip_options_compile +EXPORT_SYMBOL vmlinux 0x9305f8e6 cpufreq_get +EXPORT_SYMBOL vmlinux 0x930dc1f5 blk_mq_complete_request +EXPORT_SYMBOL vmlinux 0x9312314d netdev_warn +EXPORT_SYMBOL vmlinux 0x93215e1d __kfifo_skip_r +EXPORT_SYMBOL vmlinux 0x93227867 mmc_detect_change +EXPORT_SYMBOL vmlinux 0x932493a8 iosf_mbi_read +EXPORT_SYMBOL vmlinux 0x93448c57 screen_info +EXPORT_SYMBOL vmlinux 0x934681c4 mpage_writepage +EXPORT_SYMBOL vmlinux 0x934dc06e ip_ct_attach +EXPORT_SYMBOL vmlinux 0x9372a44b dquot_commit +EXPORT_SYMBOL vmlinux 0x937733e3 qid_valid +EXPORT_SYMBOL vmlinux 0x9378f68a scsi_eh_restore_cmnd +EXPORT_SYMBOL vmlinux 0x939d5b52 iter_file_splice_write +EXPORT_SYMBOL vmlinux 0x939fa1b7 scsi_host_put +EXPORT_SYMBOL vmlinux 0x93a62843 blk_put_request +EXPORT_SYMBOL vmlinux 0x93b3fc74 register_dcbevent_notifier +EXPORT_SYMBOL vmlinux 0x93e10e8b input_free_device +EXPORT_SYMBOL vmlinux 0x93e23859 get_acl +EXPORT_SYMBOL vmlinux 0x93e6293e blk_mq_start_hw_queues +EXPORT_SYMBOL vmlinux 0x93ea6d1c param_ops_uint +EXPORT_SYMBOL vmlinux 0x93efb711 generic_file_open +EXPORT_SYMBOL vmlinux 0x93fca811 __get_free_pages +EXPORT_SYMBOL vmlinux 0x9402a6a5 scsilun_to_int +EXPORT_SYMBOL vmlinux 0x940f9cf6 kblockd_schedule_delayed_work +EXPORT_SYMBOL vmlinux 0x941cf350 d_make_root +EXPORT_SYMBOL vmlinux 0x9424fab1 input_open_device +EXPORT_SYMBOL vmlinux 0x9443d5a7 tcp_simple_retransmit +EXPORT_SYMBOL vmlinux 0x946d2d6b tcp_proc_register +EXPORT_SYMBOL vmlinux 0x947d0919 devm_iounmap +EXPORT_SYMBOL vmlinux 0x9484bce5 do_SAK +EXPORT_SYMBOL vmlinux 0x94961283 vunmap +EXPORT_SYMBOL vmlinux 0x94b541b5 cpu_active_mask +EXPORT_SYMBOL vmlinux 0x94c99449 jbd2_journal_start_reserved +EXPORT_SYMBOL vmlinux 0x94d2a61e mmc_alloc_host +EXPORT_SYMBOL vmlinux 0x94e40ea8 would_dump +EXPORT_SYMBOL vmlinux 0x94ed196e __dst_free +EXPORT_SYMBOL vmlinux 0x94eea794 getnstimeofday64 +EXPORT_SYMBOL vmlinux 0x94ff8b06 genlmsg_multicast_allns +EXPORT_SYMBOL vmlinux 0x952aa72c __scsi_device_lookup_by_target +EXPORT_SYMBOL vmlinux 0x95395301 acpi_exception +EXPORT_SYMBOL vmlinux 0x9545af6d tasklet_init +EXPORT_SYMBOL vmlinux 0x954d6dda __module_put_and_exit +EXPORT_SYMBOL vmlinux 0x95517ff8 dev_change_carrier +EXPORT_SYMBOL vmlinux 0x95b5118a iov_iter_fault_in_readable +EXPORT_SYMBOL vmlinux 0x95bd6e26 acpi_install_sci_handler +EXPORT_SYMBOL vmlinux 0x95c84141 pci_disable_link_state_locked +EXPORT_SYMBOL vmlinux 0x95ca1853 md_integrity_add_rdev +EXPORT_SYMBOL vmlinux 0x95fdad17 skb_vlan_untag +EXPORT_SYMBOL vmlinux 0x95ffed3c kill_bdev +EXPORT_SYMBOL vmlinux 0x96058a86 ip_mc_inc_group +EXPORT_SYMBOL vmlinux 0x960dfaf5 radix_tree_tag_get +EXPORT_SYMBOL vmlinux 0x962eb227 dst_discard_sk +EXPORT_SYMBOL vmlinux 0x96573b80 __kfifo_dma_in_finish_r +EXPORT_SYMBOL vmlinux 0x9672376c copy_page_from_iter +EXPORT_SYMBOL vmlinux 0x9681dd7a dump_emit +EXPORT_SYMBOL vmlinux 0x96898769 sysfs_format_mac +EXPORT_SYMBOL vmlinux 0x96a3d28e pcibios_resource_to_bus +EXPORT_SYMBOL vmlinux 0x96b0ce99 i8042_install_filter +EXPORT_SYMBOL vmlinux 0x96cd2b04 scsi_sense_key_string +EXPORT_SYMBOL vmlinux 0x96d28d6e gen_pool_alloc +EXPORT_SYMBOL vmlinux 0x96d2f8bc pci_add_new_bus +EXPORT_SYMBOL vmlinux 0x96db9703 eisa_driver_register +EXPORT_SYMBOL vmlinux 0x970a8022 dquot_disable +EXPORT_SYMBOL vmlinux 0x9719bbe5 cdev_init +EXPORT_SYMBOL vmlinux 0x97268124 tc_classify_compat +EXPORT_SYMBOL vmlinux 0x973fa82e register_acpi_notifier +EXPORT_SYMBOL vmlinux 0x9754ec10 radix_tree_preload +EXPORT_SYMBOL vmlinux 0x978a46f4 fb_get_mode +EXPORT_SYMBOL vmlinux 0x97999817 rfkill_set_hw_state +EXPORT_SYMBOL vmlinux 0x97a146e6 inet_accept +EXPORT_SYMBOL vmlinux 0x97a48d90 devm_backlight_device_unregister +EXPORT_SYMBOL vmlinux 0x97b4500c __tracepoint_kmem_cache_free +EXPORT_SYMBOL vmlinux 0x97ba10ad phy_find_first +EXPORT_SYMBOL vmlinux 0x97bf5ad4 sock_no_getname +EXPORT_SYMBOL vmlinux 0x97c4d991 from_kuid +EXPORT_SYMBOL vmlinux 0x97c5bd0a acpi_unload_parent_table +EXPORT_SYMBOL vmlinux 0x97d48c95 dst_cow_metrics_generic +EXPORT_SYMBOL vmlinux 0x97d6fdfc inet6_del_offload +EXPORT_SYMBOL vmlinux 0x97dcef29 acpi_processor_unregister_performance +EXPORT_SYMBOL vmlinux 0x97de0ddd acpi_install_gpe_block +EXPORT_SYMBOL vmlinux 0x97f49d5b __vfs_read +EXPORT_SYMBOL vmlinux 0x97f5b6a1 seq_putc +EXPORT_SYMBOL vmlinux 0x981a6969 __devm_request_region +EXPORT_SYMBOL vmlinux 0x9820b644 warn_slowpath_fmt_taint +EXPORT_SYMBOL vmlinux 0x98263ebc sk_stream_error +EXPORT_SYMBOL vmlinux 0x984dcbd9 drop_super +EXPORT_SYMBOL vmlinux 0x986e6135 fb_pad_unaligned_buffer +EXPORT_SYMBOL vmlinux 0x986fdfaf nvdimm_bus_lock +EXPORT_SYMBOL vmlinux 0x9878745c _atomic_dec_and_lock +EXPORT_SYMBOL vmlinux 0x9889f027 load_nls +EXPORT_SYMBOL vmlinux 0x988ed85d set_memory_x +EXPORT_SYMBOL vmlinux 0x989fd277 register_tcf_proto_ops +EXPORT_SYMBOL vmlinux 0x98a02474 udp_set_csum +EXPORT_SYMBOL vmlinux 0x98a68b83 pci_enable_device_io +EXPORT_SYMBOL vmlinux 0x98a7a2c4 unregister_filesystem +EXPORT_SYMBOL vmlinux 0x98cc77df netpoll_send_skb_on_dev +EXPORT_SYMBOL vmlinux 0x98e44c2a tcp_enter_memory_pressure +EXPORT_SYMBOL vmlinux 0x98e68eca cancel_delayed_work +EXPORT_SYMBOL vmlinux 0x9905cede __netlink_kernel_create +EXPORT_SYMBOL vmlinux 0x991249a8 kmem_cache_create +EXPORT_SYMBOL vmlinux 0x99233c32 cpu_core_map +EXPORT_SYMBOL vmlinux 0x9939eba0 backlight_unregister_notifier +EXPORT_SYMBOL vmlinux 0x99517682 udp_encap_enable +EXPORT_SYMBOL vmlinux 0x99591a7a ipv6_ext_hdr +EXPORT_SYMBOL vmlinux 0x995bf28c __nla_reserve_nohdr +EXPORT_SYMBOL vmlinux 0x997bdd7e mdiobus_alloc_size +EXPORT_SYMBOL vmlinux 0x9984f53b copy_from_iter_nocache +EXPORT_SYMBOL vmlinux 0x9987b696 mdiobus_read +EXPORT_SYMBOL vmlinux 0x9990324f tty_port_lower_dtr_rts +EXPORT_SYMBOL vmlinux 0x9994c0ca ps2_is_keyboard_id +EXPORT_SYMBOL vmlinux 0x999e8297 vfree +EXPORT_SYMBOL vmlinux 0x99a333de pci_write_vpd +EXPORT_SYMBOL vmlinux 0x99ae603d blk_queue_unprep_rq +EXPORT_SYMBOL vmlinux 0x99cdc86b sysctl_tcp_reordering +EXPORT_SYMBOL vmlinux 0x99daa9bf try_offline_node +EXPORT_SYMBOL vmlinux 0x99e909b2 thaw_super +EXPORT_SYMBOL vmlinux 0x99f0d06d blk_start_request +EXPORT_SYMBOL vmlinux 0x99fed827 __register_binfmt +EXPORT_SYMBOL vmlinux 0x9a0c250e xfrm_init_replay +EXPORT_SYMBOL vmlinux 0x9a1dfd65 strpbrk +EXPORT_SYMBOL vmlinux 0x9a1fc4b4 jiffies_to_timeval +EXPORT_SYMBOL vmlinux 0x9a23cf23 pcie_capability_write_word +EXPORT_SYMBOL vmlinux 0x9a3d4d7a dm_ratelimit_state +EXPORT_SYMBOL vmlinux 0x9a435f55 __scm_destroy +EXPORT_SYMBOL vmlinux 0x9a6a83f9 cmos_lock +EXPORT_SYMBOL vmlinux 0x9a728dc3 sock_common_setsockopt +EXPORT_SYMBOL vmlinux 0x9aad7ab2 gnet_stats_copy_app +EXPORT_SYMBOL vmlinux 0x9ab3d11a simple_write_begin +EXPORT_SYMBOL vmlinux 0x9aeb07e8 vme_lm_attach +EXPORT_SYMBOL vmlinux 0x9b0039a3 inet_stream_connect +EXPORT_SYMBOL vmlinux 0x9b169d5f arch_debugfs_dir +EXPORT_SYMBOL vmlinux 0x9b1f72ac input_set_keycode +EXPORT_SYMBOL vmlinux 0x9b26e767 skb_orphan_partial +EXPORT_SYMBOL vmlinux 0x9b33e0d7 unregister_dcbevent_notifier +EXPORT_SYMBOL vmlinux 0x9b3611a1 inet_getname +EXPORT_SYMBOL vmlinux 0x9b388444 get_zeroed_page +EXPORT_SYMBOL vmlinux 0x9b4a15f4 mem_map +EXPORT_SYMBOL vmlinux 0x9b4afd7d tcp_mtup_init +EXPORT_SYMBOL vmlinux 0x9b6e3613 phy_start +EXPORT_SYMBOL vmlinux 0x9b6eb137 ksize +EXPORT_SYMBOL vmlinux 0x9b8ef463 free_xenballooned_pages +EXPORT_SYMBOL vmlinux 0x9b9e05f9 alloc_cpu_rmap +EXPORT_SYMBOL vmlinux 0x9ba146bf wait_for_completion_io_timeout +EXPORT_SYMBOL vmlinux 0x9ba7089d argv_split +EXPORT_SYMBOL vmlinux 0x9bbe88b3 flex_array_put +EXPORT_SYMBOL vmlinux 0x9bc1ce61 generic_pipe_buf_confirm +EXPORT_SYMBOL vmlinux 0x9be7bde4 security_tun_dev_attach +EXPORT_SYMBOL vmlinux 0x9befa13e cros_ec_check_result +EXPORT_SYMBOL vmlinux 0x9bf0c5fd acpi_device_hid +EXPORT_SYMBOL vmlinux 0x9c19a0b3 dma_declare_coherent_memory +EXPORT_SYMBOL vmlinux 0x9c2b37d8 open_check_o_direct +EXPORT_SYMBOL vmlinux 0x9c2c944a __copy_from_user_ll_nocache_nozero +EXPORT_SYMBOL vmlinux 0x9c491f60 sg_alloc_table +EXPORT_SYMBOL vmlinux 0x9c77fd44 cleancache_register_ops +EXPORT_SYMBOL vmlinux 0x9c812756 get_super_thawed +EXPORT_SYMBOL vmlinux 0x9c83433d phy_disconnect +EXPORT_SYMBOL vmlinux 0x9c89cc0f qdisc_reset +EXPORT_SYMBOL vmlinux 0x9cab34a6 rfkill_set_led_trigger_name +EXPORT_SYMBOL vmlinux 0x9cb59bc4 pnpbios_protocol +EXPORT_SYMBOL vmlinux 0x9cc96523 cros_ec_cmd_xfer +EXPORT_SYMBOL vmlinux 0x9ce169af neigh_proc_dointvec_ms_jiffies +EXPORT_SYMBOL vmlinux 0x9ce42141 pci_match_id +EXPORT_SYMBOL vmlinux 0x9cf0d097 ipv6_find_hdr +EXPORT_SYMBOL vmlinux 0x9cf18a4f xfrm6_rcv_cb +EXPORT_SYMBOL vmlinux 0x9d0d6206 unregister_netdevice_notifier +EXPORT_SYMBOL vmlinux 0x9d33ef5e acpi_enable +EXPORT_SYMBOL vmlinux 0x9d38bcdc bio_integrity_prep +EXPORT_SYMBOL vmlinux 0x9d38fcc8 xfrm_lookup_route +EXPORT_SYMBOL vmlinux 0x9d3aa376 blk_iopoll_init +EXPORT_SYMBOL vmlinux 0x9d3af0bb mmc_can_discard +EXPORT_SYMBOL vmlinux 0x9d66b841 neigh_parms_alloc +EXPORT_SYMBOL vmlinux 0x9db836b4 km_policy_notify +EXPORT_SYMBOL vmlinux 0x9db8b461 page_follow_link_light +EXPORT_SYMBOL vmlinux 0x9dc9d9ac devm_ioport_map +EXPORT_SYMBOL vmlinux 0x9dfe7307 lz4_decompress_unknownoutputsize +EXPORT_SYMBOL vmlinux 0x9e0c711d vzalloc_node +EXPORT_SYMBOL vmlinux 0x9e151ff4 sk_stream_wait_close +EXPORT_SYMBOL vmlinux 0x9e24fa4a elevator_alloc +EXPORT_SYMBOL vmlinux 0x9e28f55e finish_open +EXPORT_SYMBOL vmlinux 0x9e2f103b __pci_register_driver +EXPORT_SYMBOL vmlinux 0x9e363b6b acpi_disable_gpe +EXPORT_SYMBOL vmlinux 0x9e3c64b8 __scsi_alloc_queue +EXPORT_SYMBOL vmlinux 0x9e3db8ac param_get_byte +EXPORT_SYMBOL vmlinux 0x9e4d5768 xfrm4_prepare_output +EXPORT_SYMBOL vmlinux 0x9e4faeef dm_io_client_destroy +EXPORT_SYMBOL vmlinux 0x9e58308a address_space_init_once +EXPORT_SYMBOL vmlinux 0x9e5bfef4 sdev_enable_disk_events +EXPORT_SYMBOL vmlinux 0x9e5ea993 param_set_charp +EXPORT_SYMBOL vmlinux 0x9e61bb05 set_freezable +EXPORT_SYMBOL vmlinux 0x9e64fbfe rtc_cmos_read +EXPORT_SYMBOL vmlinux 0x9e7219b7 jbd2_journal_get_write_access +EXPORT_SYMBOL vmlinux 0x9e75a59c dquot_get_dqblk +EXPORT_SYMBOL vmlinux 0x9e763530 reciprocal_value +EXPORT_SYMBOL vmlinux 0x9e7d6bd0 __udelay +EXPORT_SYMBOL vmlinux 0x9e96525f dquot_alloc_inode +EXPORT_SYMBOL vmlinux 0x9ea0c91f proc_doulongvec_minmax +EXPORT_SYMBOL vmlinux 0x9ea1048e blk_integrity_merge_bio +EXPORT_SYMBOL vmlinux 0x9ea73929 __tracepoint_fence_emit +EXPORT_SYMBOL vmlinux 0x9eaf1c99 pnp_possible_config +EXPORT_SYMBOL vmlinux 0x9ebd4c04 adjust_resource +EXPORT_SYMBOL vmlinux 0x9ee6aff8 devm_devfreq_unregister_opp_notifier +EXPORT_SYMBOL vmlinux 0x9efd9d21 kernel_param_unlock +EXPORT_SYMBOL vmlinux 0x9f0b5168 read_cache_pages +EXPORT_SYMBOL vmlinux 0x9f0c4858 __generic_block_fiemap +EXPORT_SYMBOL vmlinux 0x9f3da77e dcache_dir_close +EXPORT_SYMBOL vmlinux 0x9f46ced8 __sw_hweight64 +EXPORT_SYMBOL vmlinux 0x9f4fab80 jbd2_journal_wipe +EXPORT_SYMBOL vmlinux 0x9f6f4610 block_invalidatepage +EXPORT_SYMBOL vmlinux 0x9f924717 pci_read_vpd +EXPORT_SYMBOL vmlinux 0x9f94302e neigh_for_each +EXPORT_SYMBOL vmlinux 0x9f984513 strrchr +EXPORT_SYMBOL vmlinux 0x9fbdb9ba proc_create_data +EXPORT_SYMBOL vmlinux 0x9fc12829 mdiobus_scan +EXPORT_SYMBOL vmlinux 0x9fd7cda1 flex_array_prealloc +EXPORT_SYMBOL vmlinux 0x9fdecc31 unregister_netdevice_many +EXPORT_SYMBOL vmlinux 0x9ffa3a75 netdev_max_backlog +EXPORT_SYMBOL vmlinux 0xa005ce8a pci_map_biosrom +EXPORT_SYMBOL vmlinux 0xa0095fc6 devm_gpio_free +EXPORT_SYMBOL vmlinux 0xa00aca2a dql_completed +EXPORT_SYMBOL vmlinux 0xa0107213 tcp_enter_cwr +EXPORT_SYMBOL vmlinux 0xa0167698 dev_disable_lro +EXPORT_SYMBOL vmlinux 0xa022e7bc downgrade_write +EXPORT_SYMBOL vmlinux 0xa025d9b8 sk_send_sigurg +EXPORT_SYMBOL vmlinux 0xa032a5df kmap_atomic +EXPORT_SYMBOL vmlinux 0xa0436e98 in6addr_linklocal_allnodes +EXPORT_SYMBOL vmlinux 0xa04a01bd qdisc_class_hash_insert +EXPORT_SYMBOL vmlinux 0xa04afabe devm_get_gpiod_from_child +EXPORT_SYMBOL vmlinux 0xa05c03df mempool_kmalloc +EXPORT_SYMBOL vmlinux 0xa0642c73 inet_release +EXPORT_SYMBOL vmlinux 0xa06df9e1 __kfifo_dma_out_finish_r +EXPORT_SYMBOL vmlinux 0xa06effce netdev_class_create_file_ns +EXPORT_SYMBOL vmlinux 0xa07ed110 xz_dec_init +EXPORT_SYMBOL vmlinux 0xa084749a __bitmap_or +EXPORT_SYMBOL vmlinux 0xa0a10f54 skb_recv_datagram +EXPORT_SYMBOL vmlinux 0xa0b04675 vmalloc_32 +EXPORT_SYMBOL vmlinux 0xa0ce27f7 __break_lease +EXPORT_SYMBOL vmlinux 0xa0dad88e netdev_adjacent_get_private +EXPORT_SYMBOL vmlinux 0xa0ebd14c sysctl_tcp_mem +EXPORT_SYMBOL vmlinux 0xa0fbac79 wake_up_bit +EXPORT_SYMBOL vmlinux 0xa0fed5a3 framebuffer_release +EXPORT_SYMBOL vmlinux 0xa108eb4d sysctl_optmem_max +EXPORT_SYMBOL vmlinux 0xa115dad2 prepare_binprm +EXPORT_SYMBOL vmlinux 0xa120d33c tty_unregister_ldisc +EXPORT_SYMBOL vmlinux 0xa12a51e7 twl6030_mmc_card_detect +EXPORT_SYMBOL vmlinux 0xa1361eeb kmap +EXPORT_SYMBOL vmlinux 0xa1406a68 register_console +EXPORT_SYMBOL vmlinux 0xa1415618 twl6030_interrupt_unmask +EXPORT_SYMBOL vmlinux 0xa144cb18 security_inode_permission +EXPORT_SYMBOL vmlinux 0xa14b3f5d flex_array_free_parts +EXPORT_SYMBOL vmlinux 0xa14f3d8c ewma_add +EXPORT_SYMBOL vmlinux 0xa1552b6f inode_set_bytes +EXPORT_SYMBOL vmlinux 0xa16cce10 sb_set_blocksize +EXPORT_SYMBOL vmlinux 0xa18030e5 mmc_interrupt_hpi +EXPORT_SYMBOL vmlinux 0xa18293c5 sock_no_connect +EXPORT_SYMBOL vmlinux 0xa197c34e inet_recvmsg +EXPORT_SYMBOL vmlinux 0xa19fa51d register_md_personality +EXPORT_SYMBOL vmlinux 0xa1a100f4 blk_integrity_compare +EXPORT_SYMBOL vmlinux 0xa1b759ce fb_add_videomode +EXPORT_SYMBOL vmlinux 0xa1c76e0a _cond_resched +EXPORT_SYMBOL vmlinux 0xa1ce46a1 netdev_notify_peers +EXPORT_SYMBOL vmlinux 0xa1d319c7 invalidate_partition +EXPORT_SYMBOL vmlinux 0xa1f96187 iget5_locked +EXPORT_SYMBOL vmlinux 0xa1fbf57d get_cached_acl_rcu +EXPORT_SYMBOL vmlinux 0xa209451c bitmap_fold +EXPORT_SYMBOL vmlinux 0xa2178619 scsi_host_set_state +EXPORT_SYMBOL vmlinux 0xa217f4fb down_write_trylock +EXPORT_SYMBOL vmlinux 0xa21847a7 alloc_file +EXPORT_SYMBOL vmlinux 0xa2228419 unregister_netdevice_queue +EXPORT_SYMBOL vmlinux 0xa24121f7 generic_pipe_buf_get +EXPORT_SYMBOL vmlinux 0xa259150c capable_wrt_inode_uidgid +EXPORT_SYMBOL vmlinux 0xa25d09cd dev_uc_sync +EXPORT_SYMBOL vmlinux 0xa2609f9a blk_queue_bounce +EXPORT_SYMBOL vmlinux 0xa26193ed dev_base_lock +EXPORT_SYMBOL vmlinux 0xa262213d scm_fp_dup +EXPORT_SYMBOL vmlinux 0xa269985b __sk_backlog_rcv +EXPORT_SYMBOL vmlinux 0xa27aa000 mipi_dsi_dcs_set_tear_off +EXPORT_SYMBOL vmlinux 0xa2848c50 ecryptfs_get_auth_tok_key +EXPORT_SYMBOL vmlinux 0xa28b2f0e loop_register_transfer +EXPORT_SYMBOL vmlinux 0xa28dedea xfrm_state_check_expire +EXPORT_SYMBOL vmlinux 0xa2a1b141 security_old_inode_init_security +EXPORT_SYMBOL vmlinux 0xa2a6ad75 uart_resume_port +EXPORT_SYMBOL vmlinux 0xa2ad3091 abx500_remove_ops +EXPORT_SYMBOL vmlinux 0xa2ae67e5 vme_unregister_driver +EXPORT_SYMBOL vmlinux 0xa2b5b452 dma_find_channel +EXPORT_SYMBOL vmlinux 0xa2e2a65f genphy_suspend +EXPORT_SYMBOL vmlinux 0xa2f07508 inet_register_protosw +EXPORT_SYMBOL vmlinux 0xa2f2bf41 pagecache_write_begin +EXPORT_SYMBOL vmlinux 0xa2fc9714 tty_lock +EXPORT_SYMBOL vmlinux 0xa307c1e0 pcie_capability_read_word +EXPORT_SYMBOL vmlinux 0xa3090bdb bitmap_cond_end_sync +EXPORT_SYMBOL vmlinux 0xa312d727 napi_gro_frags +EXPORT_SYMBOL vmlinux 0xa31bdf07 vme_master_set +EXPORT_SYMBOL vmlinux 0xa32e0679 truncate_setsize +EXPORT_SYMBOL vmlinux 0xa340e53c sync_inode +EXPORT_SYMBOL vmlinux 0xa34fcb2d mempool_create_node +EXPORT_SYMBOL vmlinux 0xa350a8f8 set_memory_array_uc +EXPORT_SYMBOL vmlinux 0xa35d0ae0 put_cmsg +EXPORT_SYMBOL vmlinux 0xa37e78b6 flex_array_get +EXPORT_SYMBOL vmlinux 0xa3b77d3c generic_removexattr +EXPORT_SYMBOL vmlinux 0xa3db0fd1 kmap_atomic_prot +EXPORT_SYMBOL vmlinux 0xa3dcbfd3 register_sysctl_paths +EXPORT_SYMBOL vmlinux 0xa3dda8c6 alloc_fcdev +EXPORT_SYMBOL vmlinux 0xa3f1cac6 i2c_smbus_read_byte_data +EXPORT_SYMBOL vmlinux 0xa3f22115 cpufreq_get_policy +EXPORT_SYMBOL vmlinux 0xa3f85634 nf_hook_slow +EXPORT_SYMBOL vmlinux 0xa3ffd0ed mb_cache_entry_find_first +EXPORT_SYMBOL vmlinux 0xa40cc47b xfrm_unregister_km +EXPORT_SYMBOL vmlinux 0xa411a245 key_invalidate +EXPORT_SYMBOL vmlinux 0xa43b1297 vscnprintf +EXPORT_SYMBOL vmlinux 0xa4411c5a tcp_md5_do_lookup +EXPORT_SYMBOL vmlinux 0xa44caaf1 udp_lib_rehash +EXPORT_SYMBOL vmlinux 0xa46d6482 bdev_stack_limits +EXPORT_SYMBOL vmlinux 0xa4701e9e timekeeping_inject_offset +EXPORT_SYMBOL vmlinux 0xa47b9451 param_set_uint +EXPORT_SYMBOL vmlinux 0xa482d95f block_commit_write +EXPORT_SYMBOL vmlinux 0xa4af4657 __dev_get_by_name +EXPORT_SYMBOL vmlinux 0xa4b45ea5 out_of_line_wait_on_bit_lock +EXPORT_SYMBOL vmlinux 0xa4b94fea iowrite8_rep +EXPORT_SYMBOL vmlinux 0xa4c1afc6 neigh_ifdown +EXPORT_SYMBOL vmlinux 0xa4d4f0e6 global_cache_flush +EXPORT_SYMBOL vmlinux 0xa4f8243a vme_dma_list_add +EXPORT_SYMBOL vmlinux 0xa5076feb mmc_erase +EXPORT_SYMBOL vmlinux 0xa5137c3c put_filp +EXPORT_SYMBOL vmlinux 0xa51cdfe8 __FIXADDR_TOP +EXPORT_SYMBOL vmlinux 0xa527c6a4 sk_common_release +EXPORT_SYMBOL vmlinux 0xa52cc880 inet6_add_offload +EXPORT_SYMBOL vmlinux 0xa535fe1f abx500_startup_irq_enabled +EXPORT_SYMBOL vmlinux 0xa5384c2d __getblk_slow +EXPORT_SYMBOL vmlinux 0xa540aea1 elv_dispatch_sort +EXPORT_SYMBOL vmlinux 0xa5451d4c lock_fb_info +EXPORT_SYMBOL vmlinux 0xa5526619 rb_insert_color +EXPORT_SYMBOL vmlinux 0xa5681d9f blk_mq_stop_hw_queue +EXPORT_SYMBOL vmlinux 0xa568ab0b scsi_bios_ptable +EXPORT_SYMBOL vmlinux 0xa571ad17 vga_con +EXPORT_SYMBOL vmlinux 0xa58da811 follow_pfn +EXPORT_SYMBOL vmlinux 0xa596088d pagecache_write_end +EXPORT_SYMBOL vmlinux 0xa598e29c vesa_modes +EXPORT_SYMBOL vmlinux 0xa5ae4c57 try_to_writeback_inodes_sb_nr +EXPORT_SYMBOL vmlinux 0xa5bb6002 set_page_dirty +EXPORT_SYMBOL vmlinux 0xa5d24278 skb_tx_error +EXPORT_SYMBOL vmlinux 0xa608a0e9 cdrom_check_events +EXPORT_SYMBOL vmlinux 0xa6091452 vfs_write +EXPORT_SYMBOL vmlinux 0xa62e6e4f acpi_get_table_with_size +EXPORT_SYMBOL vmlinux 0xa62fce2b rtnl_set_sk_err +EXPORT_SYMBOL vmlinux 0xa637c485 neigh_app_ns +EXPORT_SYMBOL vmlinux 0xa63d238d mmc_retune_timer_stop +EXPORT_SYMBOL vmlinux 0xa63d85ab slhc_remember +EXPORT_SYMBOL vmlinux 0xa675804c utf8s_to_utf16s +EXPORT_SYMBOL vmlinux 0xa681fe88 generate_random_uuid +EXPORT_SYMBOL vmlinux 0xa6878673 pci_enable_device_mem +EXPORT_SYMBOL vmlinux 0xa6944a85 __lock_page +EXPORT_SYMBOL vmlinux 0xa6970398 __kfifo_to_user_r +EXPORT_SYMBOL vmlinux 0xa6ae69d7 security_path_truncate +EXPORT_SYMBOL vmlinux 0xa6b10997 pci_bus_put +EXPORT_SYMBOL vmlinux 0xa6bbd805 __wake_up +EXPORT_SYMBOL vmlinux 0xa6bd63ca acpi_bios_error +EXPORT_SYMBOL vmlinux 0xa6c6f527 __serio_register_port +EXPORT_SYMBOL vmlinux 0xa6d3b405 ip6_dst_hoplimit +EXPORT_SYMBOL vmlinux 0xa6d751f2 d_drop +EXPORT_SYMBOL vmlinux 0xa6e03e8a set_pages_wb +EXPORT_SYMBOL vmlinux 0xa6ffec60 woken_wake_function +EXPORT_SYMBOL vmlinux 0xa70fabbe release_evntsel_nmi +EXPORT_SYMBOL vmlinux 0xa710489c alloc_skb_with_frags +EXPORT_SYMBOL vmlinux 0xa7297b21 max8998_read_reg +EXPORT_SYMBOL vmlinux 0xa735db59 prandom_u32 +EXPORT_SYMBOL vmlinux 0xa74881b9 vme_unregister_bridge +EXPORT_SYMBOL vmlinux 0xa774bf2e i2c_smbus_write_byte_data +EXPORT_SYMBOL vmlinux 0xa7818a4d setup_new_exec +EXPORT_SYMBOL vmlinux 0xa782b918 nd_region_acquire_lane +EXPORT_SYMBOL vmlinux 0xa788f1a0 i8253_lock +EXPORT_SYMBOL vmlinux 0xa7956ebc nf_ip6_checksum +EXPORT_SYMBOL vmlinux 0xa7ad0948 in6_dev_finish_destroy +EXPORT_SYMBOL vmlinux 0xa7cd197f gnet_stats_copy_rate_est +EXPORT_SYMBOL vmlinux 0xa7cf6c2f atomic64_dec_return_cx8 +EXPORT_SYMBOL vmlinux 0xa7d0b15b pci_pme_capable +EXPORT_SYMBOL vmlinux 0xa7f96abb dquot_acquire +EXPORT_SYMBOL vmlinux 0xa801da74 agp_generic_destroy_pages +EXPORT_SYMBOL vmlinux 0xa81f1122 f_setown +EXPORT_SYMBOL vmlinux 0xa8232c78 strtobool +EXPORT_SYMBOL vmlinux 0xa83bd870 mark_buffer_dirty +EXPORT_SYMBOL vmlinux 0xa843805a get_unused_fd_flags +EXPORT_SYMBOL vmlinux 0xa8721b97 system_state +EXPORT_SYMBOL vmlinux 0xa88186b1 backlight_device_unregister +EXPORT_SYMBOL vmlinux 0xa883c19d loop_backing_file +EXPORT_SYMBOL vmlinux 0xa8882a95 jbd2_journal_revoke +EXPORT_SYMBOL vmlinux 0xa89baaeb nf_setsockopt +EXPORT_SYMBOL vmlinux 0xa8ae1cf2 blk_recount_segments +EXPORT_SYMBOL vmlinux 0xa8c350e2 d_alloc_pseudo +EXPORT_SYMBOL vmlinux 0xa8c9c864 sock_no_recvmsg +EXPORT_SYMBOL vmlinux 0xa8d613a3 free_buffer_head +EXPORT_SYMBOL vmlinux 0xa8f57ec7 __dev_get_by_index +EXPORT_SYMBOL vmlinux 0xa8fef7bb security_unix_may_send +EXPORT_SYMBOL vmlinux 0xa9168676 xmit_recursion +EXPORT_SYMBOL vmlinux 0xa9578135 sockfd_lookup +EXPORT_SYMBOL vmlinux 0xa95ba0d6 jbd2_journal_ack_err +EXPORT_SYMBOL vmlinux 0xa976957d bitmap_remap +EXPORT_SYMBOL vmlinux 0xa97d0bf3 skb_copy +EXPORT_SYMBOL vmlinux 0xa98c3066 kmem_cache_destroy +EXPORT_SYMBOL vmlinux 0xa9960ea6 sk_reset_timer +EXPORT_SYMBOL vmlinux 0xa99ac2f3 agp_backend_acquire +EXPORT_SYMBOL vmlinux 0xa9a8e17f arch_phys_wc_add +EXPORT_SYMBOL vmlinux 0xa9b6f7dd tcp_create_openreq_child +EXPORT_SYMBOL vmlinux 0xa9bc215d pcim_enable_device +EXPORT_SYMBOL vmlinux 0xa9c63b69 security_xfrm_policy_free +EXPORT_SYMBOL vmlinux 0xa9d536bc bio_unmap_user +EXPORT_SYMBOL vmlinux 0xa9ee32fc sk_stream_wait_memory +EXPORT_SYMBOL vmlinux 0xaa047a36 pv_mmu_ops +EXPORT_SYMBOL vmlinux 0xaa18d15b dev_mc_add_global +EXPORT_SYMBOL vmlinux 0xaa1c2e34 scsi_block_when_processing_errors +EXPORT_SYMBOL vmlinux 0xaa26e41f _raw_read_lock_irq +EXPORT_SYMBOL vmlinux 0xaa33e00b vga_switcheroo_set_dynamic_switch +EXPORT_SYMBOL vmlinux 0xaa37edd9 dm_kobject_release +EXPORT_SYMBOL vmlinux 0xaa44df63 mfd_cell_enable +EXPORT_SYMBOL vmlinux 0xaa5554b1 inet_proto_csum_replace16 +EXPORT_SYMBOL vmlinux 0xaa5ba54a neigh_seq_start +EXPORT_SYMBOL vmlinux 0xaa5bd08d __pv_queued_spin_lock_slowpath +EXPORT_SYMBOL vmlinux 0xaa6671a0 vfs_fsync_range +EXPORT_SYMBOL vmlinux 0xaa688b32 brioctl_set +EXPORT_SYMBOL vmlinux 0xaa6901ac __kfifo_out_r +EXPORT_SYMBOL vmlinux 0xaa6f23ad rfkill_get_led_trigger_name +EXPORT_SYMBOL vmlinux 0xaa80ead1 phy_attach +EXPORT_SYMBOL vmlinux 0xaa8fea18 acpi_processor_register_performance +EXPORT_SYMBOL vmlinux 0xaaa00e1c d_find_alias +EXPORT_SYMBOL vmlinux 0xaaa89cd1 max8998_write_reg +EXPORT_SYMBOL vmlinux 0xaab691b7 input_mt_drop_unused +EXPORT_SYMBOL vmlinux 0xaad082eb mount_ns +EXPORT_SYMBOL vmlinux 0xaad0ae78 __bitmap_shift_right +EXPORT_SYMBOL vmlinux 0xaad6d92f rfkill_init_sw_state +EXPORT_SYMBOL vmlinux 0xaae8ab0e acpi_bus_power_manageable +EXPORT_SYMBOL vmlinux 0xaaed9611 jbd2_journal_stop +EXPORT_SYMBOL vmlinux 0xaaf1e176 devm_free_irq +EXPORT_SYMBOL vmlinux 0xaafdc258 strcasecmp +EXPORT_SYMBOL vmlinux 0xab18f12b lro_receive_skb +EXPORT_SYMBOL vmlinux 0xab3bd193 tty_port_close +EXPORT_SYMBOL vmlinux 0xab5311a3 __dev_getfirstbyhwtype +EXPORT_SYMBOL vmlinux 0xab551fad acpi_get_data_full +EXPORT_SYMBOL vmlinux 0xab5589e1 swiotlb_unmap_sg +EXPORT_SYMBOL vmlinux 0xab600421 probe_irq_off +EXPORT_SYMBOL vmlinux 0xab65ed80 set_memory_uc +EXPORT_SYMBOL vmlinux 0xab694444 bsearch +EXPORT_SYMBOL vmlinux 0xab6bde28 sysctl_max_syn_backlog +EXPORT_SYMBOL vmlinux 0xab770678 rdmsr_safe_regs_on_cpu +EXPORT_SYMBOL vmlinux 0xab781570 fb_get_options +EXPORT_SYMBOL vmlinux 0xab8a8fc5 blk_pm_runtime_init +EXPORT_SYMBOL vmlinux 0xaba3ad0c radix_tree_gang_lookup_tag +EXPORT_SYMBOL vmlinux 0xabb67b8c pagevec_lookup +EXPORT_SYMBOL vmlinux 0xabc6dd63 cpufreq_sysfs_create_file +EXPORT_SYMBOL vmlinux 0xabcaa577 free_anon_bdev +EXPORT_SYMBOL vmlinux 0xabfcb4c3 flush_delayed_work +EXPORT_SYMBOL vmlinux 0xac0ba8c1 blk_iopoll_disable +EXPORT_SYMBOL vmlinux 0xac1a55be unregister_reboot_notifier +EXPORT_SYMBOL vmlinux 0xac2db6e9 isapnp_protocol +EXPORT_SYMBOL vmlinux 0xac2ed64b processors +EXPORT_SYMBOL vmlinux 0xac398912 flex_array_clear +EXPORT_SYMBOL vmlinux 0xac3c18e3 kernel_sendmsg +EXPORT_SYMBOL vmlinux 0xac5aec05 blk_mq_start_stopped_hw_queues +EXPORT_SYMBOL vmlinux 0xac8ab702 tcp_read_sock +EXPORT_SYMBOL vmlinux 0xac8bfc0b input_register_handle +EXPORT_SYMBOL vmlinux 0xac9dc350 simple_empty +EXPORT_SYMBOL vmlinux 0xaca92182 blk_integrity_unregister +EXPORT_SYMBOL vmlinux 0xacab29b7 seq_hlist_start_percpu +EXPORT_SYMBOL vmlinux 0xacb99769 ida_destroy +EXPORT_SYMBOL vmlinux 0xacc5c57c uart_suspend_port +EXPORT_SYMBOL vmlinux 0xaccabc6a in4_pton +EXPORT_SYMBOL vmlinux 0xacd81eb3 jbd2_inode_cache +EXPORT_SYMBOL vmlinux 0xacddb22d dm_register_target +EXPORT_SYMBOL vmlinux 0xaceb8192 generic_file_llseek +EXPORT_SYMBOL vmlinux 0xacf2bfc8 sock_efree +EXPORT_SYMBOL vmlinux 0xacf4d843 match_strdup +EXPORT_SYMBOL vmlinux 0xad0413d4 match_hex +EXPORT_SYMBOL vmlinux 0xad13c689 acpi_os_execute +EXPORT_SYMBOL vmlinux 0xad1c9479 grab_cache_page_write_begin +EXPORT_SYMBOL vmlinux 0xad311f5a neigh_sysctl_register +EXPORT_SYMBOL vmlinux 0xad3ac089 mmc_of_parse +EXPORT_SYMBOL vmlinux 0xad427f0b nlmsg_notify +EXPORT_SYMBOL vmlinux 0xad5e5bec dma_ops +EXPORT_SYMBOL vmlinux 0xad698f77 dqstats +EXPORT_SYMBOL vmlinux 0xad6e4bb6 mempool_free +EXPORT_SYMBOL vmlinux 0xad84bef8 dm_table_event +EXPORT_SYMBOL vmlinux 0xade674c5 blk_rq_init +EXPORT_SYMBOL vmlinux 0xadeafb15 vfs_fsync +EXPORT_SYMBOL vmlinux 0xadfdfcef __bitmap_andnot +EXPORT_SYMBOL vmlinux 0xae044bc7 panic_notifier_list +EXPORT_SYMBOL vmlinux 0xae19bffc kfree_put_link +EXPORT_SYMBOL vmlinux 0xae3fbf76 kfree_skb_list +EXPORT_SYMBOL vmlinux 0xae5b497f mmc_hw_reset +EXPORT_SYMBOL vmlinux 0xae5bc830 pci_release_region +EXPORT_SYMBOL vmlinux 0xae638edb inet6_register_protosw +EXPORT_SYMBOL vmlinux 0xae691aa8 i2c_smbus_write_block_data +EXPORT_SYMBOL vmlinux 0xae6d326f tcf_em_tree_dump +EXPORT_SYMBOL vmlinux 0xae729e59 security_req_classify_flow +EXPORT_SYMBOL vmlinux 0xae77a595 radix_tree_gang_lookup_slot +EXPORT_SYMBOL vmlinux 0xae85a27e radix_tree_lookup +EXPORT_SYMBOL vmlinux 0xae979c43 sync_filesystem +EXPORT_SYMBOL vmlinux 0xae995067 netdev_upper_dev_unlink +EXPORT_SYMBOL vmlinux 0xaea976a8 acpi_check_resource_conflict +EXPORT_SYMBOL vmlinux 0xaeb6cb7f bio_advance +EXPORT_SYMBOL vmlinux 0xaebe807c input_mt_sync_frame +EXPORT_SYMBOL vmlinux 0xaec655c7 alloc_pages_exact +EXPORT_SYMBOL vmlinux 0xaecb7e5c simple_dir_inode_operations +EXPORT_SYMBOL vmlinux 0xaedc3d0d set_nlink +EXPORT_SYMBOL vmlinux 0xaee2cb0c kill_fasync +EXPORT_SYMBOL vmlinux 0xaef5898e devm_backlight_device_register +EXPORT_SYMBOL vmlinux 0xaf18adaf blk_queue_softirq_done +EXPORT_SYMBOL vmlinux 0xaf293ac6 skb_insert +EXPORT_SYMBOL vmlinux 0xaf2d21de lease_get_mtime +EXPORT_SYMBOL vmlinux 0xaf3b751b __dquot_transfer +EXPORT_SYMBOL vmlinux 0xaf3dd7dc scsi_logging_level +EXPORT_SYMBOL vmlinux 0xaf4b1540 acpi_get_irq_routing_table +EXPORT_SYMBOL vmlinux 0xaf549514 inode_dio_wait +EXPORT_SYMBOL vmlinux 0xaf5b6ebc pcie_get_minimum_link +EXPORT_SYMBOL vmlinux 0xaf611eac amd_nb_misc_ids +EXPORT_SYMBOL vmlinux 0xaf7648b2 uart_add_one_port +EXPORT_SYMBOL vmlinux 0xaf99240d pci_find_next_bus +EXPORT_SYMBOL vmlinux 0xafb32902 __wait_on_bit_lock +EXPORT_SYMBOL vmlinux 0xafc242b5 fsnotify_alloc_group +EXPORT_SYMBOL vmlinux 0xafe1fe06 unregister_key_type +EXPORT_SYMBOL vmlinux 0xaff9c6d2 agp_generic_alloc_by_type +EXPORT_SYMBOL vmlinux 0xb0031025 seq_put_decimal_ll +EXPORT_SYMBOL vmlinux 0xb01b1db8 intel_gtt_insert_sg_entries +EXPORT_SYMBOL vmlinux 0xb01b6254 pnp_device_attach +EXPORT_SYMBOL vmlinux 0xb01fda6d iov_iter_alignment +EXPORT_SYMBOL vmlinux 0xb0279da0 bio_integrity_clone +EXPORT_SYMBOL vmlinux 0xb0349415 dm_put_table_device +EXPORT_SYMBOL vmlinux 0xb0409a71 __ps2_command +EXPORT_SYMBOL vmlinux 0xb0445900 zpool_unregister_driver +EXPORT_SYMBOL vmlinux 0xb0454308 keyring_alloc +EXPORT_SYMBOL vmlinux 0xb053b73b mmc_start_bkops +EXPORT_SYMBOL vmlinux 0xb05fc310 sysctl_rmem_max +EXPORT_SYMBOL vmlinux 0xb070e2bd fixed_phy_update_state +EXPORT_SYMBOL vmlinux 0xb083e974 ndisc_mc_map +EXPORT_SYMBOL vmlinux 0xb08df5f6 input_mt_destroy_slots +EXPORT_SYMBOL vmlinux 0xb09b4ee1 jbd2_journal_unlock_updates +EXPORT_SYMBOL vmlinux 0xb0a0da0c rational_best_approximation +EXPORT_SYMBOL vmlinux 0xb0e10781 get_option +EXPORT_SYMBOL vmlinux 0xb0eb41ff iommu_tbl_range_free +EXPORT_SYMBOL vmlinux 0xb109e188 i2c_verify_client +EXPORT_SYMBOL vmlinux 0xb121390a probe_irq_on +EXPORT_SYMBOL vmlinux 0xb12cbacb fb_unregister_client +EXPORT_SYMBOL vmlinux 0xb12d3935 nobh_write_begin +EXPORT_SYMBOL vmlinux 0xb1567360 mmc_erase_group_aligned +EXPORT_SYMBOL vmlinux 0xb15cb614 security_xfrm_policy_alloc +EXPORT_SYMBOL vmlinux 0xb1645a2e sg_free_table +EXPORT_SYMBOL vmlinux 0xb16c810f devfreq_monitor_suspend +EXPORT_SYMBOL vmlinux 0xb171dcae dev_close +EXPORT_SYMBOL vmlinux 0xb18437f7 unlock_rename +EXPORT_SYMBOL vmlinux 0xb187b3a8 lg_lock_init +EXPORT_SYMBOL vmlinux 0xb1a93f73 pci_lost_interrupt +EXPORT_SYMBOL vmlinux 0xb1b8c91a uart_match_port +EXPORT_SYMBOL vmlinux 0xb1bb2ee9 abx500_get_register_page_interruptible +EXPORT_SYMBOL vmlinux 0xb1c3a01a oops_in_progress +EXPORT_SYMBOL vmlinux 0xb1ce0c56 skb_append +EXPORT_SYMBOL vmlinux 0xb1ce95f4 sk_net_capable +EXPORT_SYMBOL vmlinux 0xb1cf44df fb_find_best_mode +EXPORT_SYMBOL vmlinux 0xb1cfad22 rdmsr_on_cpu +EXPORT_SYMBOL vmlinux 0xb1e3d7c9 pci_bus_write_config_word +EXPORT_SYMBOL vmlinux 0xb219d56c wbinvd_on_cpu +EXPORT_SYMBOL vmlinux 0xb22f9e5b xfrm_state_add +EXPORT_SYMBOL vmlinux 0xb257372f pcim_pin_device +EXPORT_SYMBOL vmlinux 0xb258f86c udp_lib_setsockopt +EXPORT_SYMBOL vmlinux 0xb2682405 utf8_to_utf32 +EXPORT_SYMBOL vmlinux 0xb29955e9 dquot_quota_off +EXPORT_SYMBOL vmlinux 0xb2a1f906 tty_port_close_start +EXPORT_SYMBOL vmlinux 0xb2aa8a98 __getblk_gfp +EXPORT_SYMBOL vmlinux 0xb2aa9c62 bdput +EXPORT_SYMBOL vmlinux 0xb2b52261 __inode_permission +EXPORT_SYMBOL vmlinux 0xb2be6e92 netdev_stats_to_stats64 +EXPORT_SYMBOL vmlinux 0xb2d1a37c bio_copy_kern +EXPORT_SYMBOL vmlinux 0xb2d48a2e queue_work_on +EXPORT_SYMBOL vmlinux 0xb2d5a552 complete +EXPORT_SYMBOL vmlinux 0xb2f74fb6 intel_gmch_remove +EXPORT_SYMBOL vmlinux 0xb2f8ec1a phy_register_fixup_for_uid +EXPORT_SYMBOL vmlinux 0xb2fd5ceb __put_user_4 +EXPORT_SYMBOL vmlinux 0xb3068ad0 mod_zone_page_state +EXPORT_SYMBOL vmlinux 0xb31255f3 __blkdev_reread_part +EXPORT_SYMBOL vmlinux 0xb3176087 bitmap_end_sync +EXPORT_SYMBOL vmlinux 0xb3284531 acpi_dbg_layer +EXPORT_SYMBOL vmlinux 0xb32d7b7e radix_tree_tagged +EXPORT_SYMBOL vmlinux 0xb336585d blk_get_backing_dev_info +EXPORT_SYMBOL vmlinux 0xb3399af0 input_mt_init_slots +EXPORT_SYMBOL vmlinux 0xb33d255c __frontswap_test +EXPORT_SYMBOL vmlinux 0xb352177e find_first_bit +EXPORT_SYMBOL vmlinux 0xb36dffb2 t10_pi_type3_ip +EXPORT_SYMBOL vmlinux 0xb37b9a10 ip_cmsg_recv_offset +EXPORT_SYMBOL vmlinux 0xb380a114 blkdev_get_by_dev +EXPORT_SYMBOL vmlinux 0xb3a1e699 serio_interrupt +EXPORT_SYMBOL vmlinux 0xb3cb724e cfb_fillrect +EXPORT_SYMBOL vmlinux 0xb3d2c76d scsi_hostbyte_string +EXPORT_SYMBOL vmlinux 0xb3e0590d acpi_set_current_resources +EXPORT_SYMBOL vmlinux 0xb3e53899 pci_prepare_to_sleep +EXPORT_SYMBOL vmlinux 0xb3f7646e kthread_should_stop +EXPORT_SYMBOL vmlinux 0xb401f858 __insert_inode_hash +EXPORT_SYMBOL vmlinux 0xb410ce76 pci_disable_device +EXPORT_SYMBOL vmlinux 0xb423dba1 console_blanked +EXPORT_SYMBOL vmlinux 0xb4390f9a mcount +EXPORT_SYMBOL vmlinux 0xb448c5ee pci_request_region +EXPORT_SYMBOL vmlinux 0xb4519a8f string_escape_mem +EXPORT_SYMBOL vmlinux 0xb45578b8 memscan +EXPORT_SYMBOL vmlinux 0xb4691412 __blk_mq_end_request +EXPORT_SYMBOL vmlinux 0xb4709322 scsi_dev_info_add_list +EXPORT_SYMBOL vmlinux 0xb4759f51 blk_run_queue_async +EXPORT_SYMBOL vmlinux 0xb485bc53 dev_open +EXPORT_SYMBOL vmlinux 0xb48e65f6 jbd2_journal_set_features +EXPORT_SYMBOL vmlinux 0xb495f858 sk_stream_wait_connect +EXPORT_SYMBOL vmlinux 0xb49bb318 devm_clk_put +EXPORT_SYMBOL vmlinux 0xb4c3c7ff inet_frag_destroy +EXPORT_SYMBOL vmlinux 0xb4ef4f3b scsi_device_get +EXPORT_SYMBOL vmlinux 0xb50681ee of_find_mipi_dsi_device_by_node +EXPORT_SYMBOL vmlinux 0xb5229392 cpu_sibling_map +EXPORT_SYMBOL vmlinux 0xb52a90dd handle_edge_irq +EXPORT_SYMBOL vmlinux 0xb52ee8be intel_gtt_clear_range +EXPORT_SYMBOL vmlinux 0xb538bbe8 from_kprojid +EXPORT_SYMBOL vmlinux 0xb56ecbb3 __pskb_copy_fclone +EXPORT_SYMBOL vmlinux 0xb57343c2 frontswap_shrink +EXPORT_SYMBOL vmlinux 0xb578882b iov_iter_fault_in_multipages_readable +EXPORT_SYMBOL vmlinux 0xb58d7db1 skb_queue_head +EXPORT_SYMBOL vmlinux 0xb594a9a9 swiotlb_dma_supported +EXPORT_SYMBOL vmlinux 0xb5a069a0 __hw_addr_unsync_dev +EXPORT_SYMBOL vmlinux 0xb5a459dc unregister_blkdev +EXPORT_SYMBOL vmlinux 0xb5a60338 sk_free +EXPORT_SYMBOL vmlinux 0xb5a830cb tcp_v4_syn_recv_sock +EXPORT_SYMBOL vmlinux 0xb5aa7165 dma_pool_destroy +EXPORT_SYMBOL vmlinux 0xb5b3016a scsi_dma_unmap +EXPORT_SYMBOL vmlinux 0xb5ca1c46 slhc_free +EXPORT_SYMBOL vmlinux 0xb5dbd16a __percpu_counter_sum +EXPORT_SYMBOL vmlinux 0xb5f7e655 blk_start_queue +EXPORT_SYMBOL vmlinux 0xb623dfc8 jbd2_log_wait_commit +EXPORT_SYMBOL vmlinux 0xb6244511 sg_init_one +EXPORT_SYMBOL vmlinux 0xb666998a skb_copy_and_csum_bits +EXPORT_SYMBOL vmlinux 0xb674a534 acpi_unmap_cpu +EXPORT_SYMBOL vmlinux 0xb678366f int_sqrt +EXPORT_SYMBOL vmlinux 0xb680f2e2 mpage_writepages +EXPORT_SYMBOL vmlinux 0xb681ad83 dev_notice +EXPORT_SYMBOL vmlinux 0xb6896671 crc_t10dif +EXPORT_SYMBOL vmlinux 0xb6936ffe _bcd2bin +EXPORT_SYMBOL vmlinux 0xb6a68816 find_last_bit +EXPORT_SYMBOL vmlinux 0xb6b50299 sg_miter_start +EXPORT_SYMBOL vmlinux 0xb6caaa95 kernel_recvmsg +EXPORT_SYMBOL vmlinux 0xb6d61384 fasync_helper +EXPORT_SYMBOL vmlinux 0xb6d65b87 md_unregister_thread +EXPORT_SYMBOL vmlinux 0xb6dc134b filemap_flush +EXPORT_SYMBOL vmlinux 0xb6e1e98f in_dev_finish_destroy +EXPORT_SYMBOL vmlinux 0xb6e41883 memcmp +EXPORT_SYMBOL vmlinux 0xb6e50241 simple_dir_operations +EXPORT_SYMBOL vmlinux 0xb6e9fdd4 serial8250_register_8250_port +EXPORT_SYMBOL vmlinux 0xb6ed1e53 strncpy +EXPORT_SYMBOL vmlinux 0xb6fc0869 kmap_high +EXPORT_SYMBOL vmlinux 0xb74256ea bdget +EXPORT_SYMBOL vmlinux 0xb7477df6 agp_generic_alloc_page +EXPORT_SYMBOL vmlinux 0xb7488905 scsi_normalize_sense +EXPORT_SYMBOL vmlinux 0xb751cb45 tcp_v4_connect +EXPORT_SYMBOL vmlinux 0xb758b225 acpi_disable_event +EXPORT_SYMBOL vmlinux 0xb75cdee7 scsi_register_driver +EXPORT_SYMBOL vmlinux 0xb7626e7d tcp_ioctl +EXPORT_SYMBOL vmlinux 0xb77131b1 psched_ratecfg_precompute +EXPORT_SYMBOL vmlinux 0xb789c6b1 km_new_mapping +EXPORT_SYMBOL vmlinux 0xb79ec15d mipi_dsi_create_packet +EXPORT_SYMBOL vmlinux 0xb7adcb63 iov_iter_init +EXPORT_SYMBOL vmlinux 0xb7e6454d eth_type_trans +EXPORT_SYMBOL vmlinux 0xb7e86e45 md_write_start +EXPORT_SYMBOL vmlinux 0xb7f55ecc atomic64_add_return_cx8 +EXPORT_SYMBOL vmlinux 0xb7f6eb42 pcie_capability_write_dword +EXPORT_SYMBOL vmlinux 0xb818db12 vme_dma_list_free +EXPORT_SYMBOL vmlinux 0xb81960ca snprintf +EXPORT_SYMBOL vmlinux 0xb8258c19 dev_mc_del +EXPORT_SYMBOL vmlinux 0xb82c0923 alloc_buffer_head +EXPORT_SYMBOL vmlinux 0xb831771d jbd2_journal_restart +EXPORT_SYMBOL vmlinux 0xb8370414 sg_pcopy_from_buffer +EXPORT_SYMBOL vmlinux 0xb8454d3e input_set_abs_params +EXPORT_SYMBOL vmlinux 0xb849d4c3 dev_queue_xmit_accel +EXPORT_SYMBOL vmlinux 0xb8619e89 memory_cgrp_subsys +EXPORT_SYMBOL vmlinux 0xb869bf9c phy_driver_register +EXPORT_SYMBOL vmlinux 0xb874b87a __clzsi2 +EXPORT_SYMBOL vmlinux 0xb879232c inet_csk_init_xmit_timers +EXPORT_SYMBOL vmlinux 0xb8854ac8 sg_copy_from_buffer +EXPORT_SYMBOL vmlinux 0xb88d9725 __cleancache_invalidate_fs +EXPORT_SYMBOL vmlinux 0xb88da0d0 udp_prot +EXPORT_SYMBOL vmlinux 0xb8b6a76c __percpu_counter_add +EXPORT_SYMBOL vmlinux 0xb8d2bb0b first_ec +EXPORT_SYMBOL vmlinux 0xb8d4efb8 single_open +EXPORT_SYMBOL vmlinux 0xb8e36e94 shrink_dcache_sb +EXPORT_SYMBOL vmlinux 0xb8e7ce2c __put_user_8 +EXPORT_SYMBOL vmlinux 0xb8e877e7 kstrtouint_from_user +EXPORT_SYMBOL vmlinux 0xb8fdcd10 mempool_resize +EXPORT_SYMBOL vmlinux 0xb914006d nf_ip_checksum +EXPORT_SYMBOL vmlinux 0xb92a55be skb_copy_and_csum_dev +EXPORT_SYMBOL vmlinux 0xb937d06c writeback_inodes_sb_nr +EXPORT_SYMBOL vmlinux 0xb94386d7 fb_validate_mode +EXPORT_SYMBOL vmlinux 0xb9606526 vme_irq_request +EXPORT_SYMBOL vmlinux 0xb974ca13 scsi_get_host_dev +EXPORT_SYMBOL vmlinux 0xb9aa70b2 security_path_rmdir +EXPORT_SYMBOL vmlinux 0xb9b6496c swiotlb_map_sg +EXPORT_SYMBOL vmlinux 0xb9d56663 d_delete +EXPORT_SYMBOL vmlinux 0xb9daaa64 ipv6_push_nfrag_opts +EXPORT_SYMBOL vmlinux 0xb9e8e2cc in6addr_sitelocal_allrouters +EXPORT_SYMBOL vmlinux 0xb9f11b66 neigh_lookup +EXPORT_SYMBOL vmlinux 0xb9f1e44c abx500_get_register_interruptible +EXPORT_SYMBOL vmlinux 0xb9fc3fe2 inet_del_offload +EXPORT_SYMBOL vmlinux 0xba2d8594 ec_read +EXPORT_SYMBOL vmlinux 0xba37feb6 blk_queue_free_tags +EXPORT_SYMBOL vmlinux 0xba497f13 loops_per_jiffy +EXPORT_SYMBOL vmlinux 0xba572589 param_get_string +EXPORT_SYMBOL vmlinux 0xba9e86a1 param_ops_long +EXPORT_SYMBOL vmlinux 0xbaa65a50 mb_cache_entry_free +EXPORT_SYMBOL vmlinux 0xbab319c8 bio_put +EXPORT_SYMBOL vmlinux 0xbab53d8c xfrm6_rcv_spi +EXPORT_SYMBOL vmlinux 0xbac3cbf2 ns_to_timespec64 +EXPORT_SYMBOL vmlinux 0xbafef707 skb_find_text +EXPORT_SYMBOL vmlinux 0xbb0540aa zlib_inflateReset +EXPORT_SYMBOL vmlinux 0xbb13a1a3 override_creds +EXPORT_SYMBOL vmlinux 0xbb1b8e38 clocksource_change_rating +EXPORT_SYMBOL vmlinux 0xbb2eea08 sock_register +EXPORT_SYMBOL vmlinux 0xbb35675b __bitmap_intersects +EXPORT_SYMBOL vmlinux 0xbb5d343d xfrm_get_acqseq +EXPORT_SYMBOL vmlinux 0xbb99125c get_default_font +EXPORT_SYMBOL vmlinux 0xbb997e79 mipi_dsi_dcs_nop +EXPORT_SYMBOL vmlinux 0xbba70a2d _raw_spin_unlock_bh +EXPORT_SYMBOL vmlinux 0xbbac3160 lru_cache_add_file +EXPORT_SYMBOL vmlinux 0xbbaeaa16 pnpacpi_protocol +EXPORT_SYMBOL vmlinux 0xbbbb451a _raw_write_unlock_bh +EXPORT_SYMBOL vmlinux 0xbbd043d3 dev_addr_add +EXPORT_SYMBOL vmlinux 0xbbd76e57 bit_wait +EXPORT_SYMBOL vmlinux 0xbbdbf1bd d_set_fallthru +EXPORT_SYMBOL vmlinux 0xbbeb1ec6 ioremap_wt +EXPORT_SYMBOL vmlinux 0xbc1297a3 pnp_unregister_card_driver +EXPORT_SYMBOL vmlinux 0xbc2031de acpi_processor_get_bios_limit +EXPORT_SYMBOL vmlinux 0xbc29a721 dentry_unhash +EXPORT_SYMBOL vmlinux 0xbc4352c9 dev_addr_del +EXPORT_SYMBOL vmlinux 0xbc435770 dump_stack +EXPORT_SYMBOL vmlinux 0xbcc308bb strnlen_user +EXPORT_SYMBOL vmlinux 0xbce23a54 truncate_pagecache +EXPORT_SYMBOL vmlinux 0xbce84fc6 agp_allocate_memory +EXPORT_SYMBOL vmlinux 0xbcfa93f8 get_agp_version +EXPORT_SYMBOL vmlinux 0xbcfd80ee pci_scan_single_device +EXPORT_SYMBOL vmlinux 0xbd11eded remove_arg_zero +EXPORT_SYMBOL vmlinux 0xbd146408 blkdev_get +EXPORT_SYMBOL vmlinux 0xbd19b126 md_cluster_ops +EXPORT_SYMBOL vmlinux 0xbd2f5362 simple_dentry_operations +EXPORT_SYMBOL vmlinux 0xbd333bf7 seq_read +EXPORT_SYMBOL vmlinux 0xbd71ced0 netdev_upper_dev_link +EXPORT_SYMBOL vmlinux 0xbd72ac38 tcp_md5_hash_header +EXPORT_SYMBOL vmlinux 0xbd7b3b0a devfreq_suspend_device +EXPORT_SYMBOL vmlinux 0xbd9074b1 blk_finish_plug +EXPORT_SYMBOL vmlinux 0xbd9c8eb9 tag_pages_for_writeback +EXPORT_SYMBOL vmlinux 0xbda69305 pm860x_bulk_read +EXPORT_SYMBOL vmlinux 0xbda6b63e set_user_nice +EXPORT_SYMBOL vmlinux 0xbdaf5b07 acpi_os_read_port +EXPORT_SYMBOL vmlinux 0xbdd9617d __nla_reserve +EXPORT_SYMBOL vmlinux 0xbdd97548 fbcon_set_rotate +EXPORT_SYMBOL vmlinux 0xbddd8191 jbd2_journal_force_commit +EXPORT_SYMBOL vmlinux 0xbde49d46 page_waitqueue +EXPORT_SYMBOL vmlinux 0xbde7b2a5 generic_ro_fops +EXPORT_SYMBOL vmlinux 0xbdf7ebe6 default_llseek +EXPORT_SYMBOL vmlinux 0xbe05d308 alloc_netdev_mqs +EXPORT_SYMBOL vmlinux 0xbe08c3f0 udp_add_offload +EXPORT_SYMBOL vmlinux 0xbe0e5118 nla_memcmp +EXPORT_SYMBOL vmlinux 0xbe17d769 scsi_host_get +EXPORT_SYMBOL vmlinux 0xbe1bb112 bitmap_onto +EXPORT_SYMBOL vmlinux 0xbe1bb9f0 xfrm_unregister_mode +EXPORT_SYMBOL vmlinux 0xbe1dc79a ipv6_chk_custom_prefix +EXPORT_SYMBOL vmlinux 0xbe20c293 dmam_alloc_coherent +EXPORT_SYMBOL vmlinux 0xbe4b11f2 ip_mc_leave_group +EXPORT_SYMBOL vmlinux 0xbe5d5a23 gnet_stats_copy_queue +EXPORT_SYMBOL vmlinux 0xbe8c37d9 intel_scu_ipc_simple_command +EXPORT_SYMBOL vmlinux 0xbe8cf4eb dquot_get_state +EXPORT_SYMBOL vmlinux 0xbeb43d85 devm_gpiod_get_array_optional +EXPORT_SYMBOL vmlinux 0xbeb7959c sock_wfree +EXPORT_SYMBOL vmlinux 0xbec30d05 x86_match_cpu +EXPORT_SYMBOL vmlinux 0xbee39223 inet6_ioctl +EXPORT_SYMBOL vmlinux 0xbee90f2f __kfifo_out_peek_r +EXPORT_SYMBOL vmlinux 0xbef43296 console_conditional_schedule +EXPORT_SYMBOL vmlinux 0xbf270045 boot_cpu_data +EXPORT_SYMBOL vmlinux 0xbf297e2f replace_mount_options +EXPORT_SYMBOL vmlinux 0xbf3fdae7 dev_mc_flush +EXPORT_SYMBOL vmlinux 0xbf7fd2f5 schedule_timeout_killable +EXPORT_SYMBOL vmlinux 0xbf8b39e9 isapnp_present +EXPORT_SYMBOL vmlinux 0xbf9bcc8d __cap_empty_set +EXPORT_SYMBOL vmlinux 0xbf9fd619 stop_tty +EXPORT_SYMBOL vmlinux 0xbfa09607 nf_register_hook +EXPORT_SYMBOL vmlinux 0xbfa67bd4 iov_iter_npages +EXPORT_SYMBOL vmlinux 0xbfb19dc8 agp_generic_remove_memory +EXPORT_SYMBOL vmlinux 0xbfc177bc iowrite32_rep +EXPORT_SYMBOL vmlinux 0xbfd4bdcc agp_generic_alloc_user +EXPORT_SYMBOL vmlinux 0xbfe1a417 tty_unregister_device +EXPORT_SYMBOL vmlinux 0xbfe6f427 _raw_spin_unlock_irq +EXPORT_SYMBOL vmlinux 0xbfee3ad5 loop_unregister_transfer +EXPORT_SYMBOL vmlinux 0xc00aafa5 truncate_inode_pages_final +EXPORT_SYMBOL vmlinux 0xc00fa6b0 mnt_set_expiry +EXPORT_SYMBOL vmlinux 0xc01eed33 __copy_from_user_ll_nozero +EXPORT_SYMBOL vmlinux 0xc05e355f idr_alloc_cyclic +EXPORT_SYMBOL vmlinux 0xc060c030 reservation_object_add_excl_fence +EXPORT_SYMBOL vmlinux 0xc068440e __kfifo_alloc +EXPORT_SYMBOL vmlinux 0xc0763484 rfkill_blocked +EXPORT_SYMBOL vmlinux 0xc0823e4c twl_i2c_write +EXPORT_SYMBOL vmlinux 0xc08545ab add_random_ready_callback +EXPORT_SYMBOL vmlinux 0xc0a3d105 find_next_bit +EXPORT_SYMBOL vmlinux 0xc0b2fc2e ___pskb_trim +EXPORT_SYMBOL vmlinux 0xc0bfe68f sg_miter_skip +EXPORT_SYMBOL vmlinux 0xc0cd3b13 ___ratelimit +EXPORT_SYMBOL vmlinux 0xc0d4cf4b proto_register +EXPORT_SYMBOL vmlinux 0xc0e7b6de iov_iter_zero +EXPORT_SYMBOL vmlinux 0xc0eef4c0 iov_iter_get_pages_alloc +EXPORT_SYMBOL vmlinux 0xc11d8093 iov_shorten +EXPORT_SYMBOL vmlinux 0xc12ec3a6 dns_query +EXPORT_SYMBOL vmlinux 0xc132ed2c tcp_syn_ack_timeout +EXPORT_SYMBOL vmlinux 0xc137d300 blk_mq_can_queue +EXPORT_SYMBOL vmlinux 0xc13e6c4e vfs_read +EXPORT_SYMBOL vmlinux 0xc1523352 xfrm_policy_insert +EXPORT_SYMBOL vmlinux 0xc15a9db7 sock_create_kern +EXPORT_SYMBOL vmlinux 0xc1788599 genphy_config_init +EXPORT_SYMBOL vmlinux 0xc185c612 __cleancache_invalidate_inode +EXPORT_SYMBOL vmlinux 0xc1a19d6c twl6040_reg_write +EXPORT_SYMBOL vmlinux 0xc1a5e0ac cdrom_get_last_written +EXPORT_SYMBOL vmlinux 0xc1a75996 __sock_tx_timestamp +EXPORT_SYMBOL vmlinux 0xc1c9b390 netlink_ack +EXPORT_SYMBOL vmlinux 0xc1d4e9f6 agp_alloc_page_array +EXPORT_SYMBOL vmlinux 0xc1d8cfaf __fdget +EXPORT_SYMBOL vmlinux 0xc1e50c0b rtnl_nla_parse_ifla +EXPORT_SYMBOL vmlinux 0xc2197e96 kernel_sock_shutdown +EXPORT_SYMBOL vmlinux 0xc22c05f0 d_lookup +EXPORT_SYMBOL vmlinux 0xc2424641 agp3_generic_cleanup +EXPORT_SYMBOL vmlinux 0xc247a0a2 km_state_notify +EXPORT_SYMBOL vmlinux 0xc257b794 nf_log_set +EXPORT_SYMBOL vmlinux 0xc2582a47 ps2_handle_ack +EXPORT_SYMBOL vmlinux 0xc2692b43 tcf_em_tree_destroy +EXPORT_SYMBOL vmlinux 0xc26fc1cb tcf_hash_check +EXPORT_SYMBOL vmlinux 0xc280a525 __copy_from_user_ll +EXPORT_SYMBOL vmlinux 0xc280c683 __kfree_skb +EXPORT_SYMBOL vmlinux 0xc28325d5 input_mt_report_slot_state +EXPORT_SYMBOL vmlinux 0xc28f1f7f mipi_dsi_dcs_get_power_mode +EXPORT_SYMBOL vmlinux 0xc29baee1 dev_activate +EXPORT_SYMBOL vmlinux 0xc29da50b unlink_framebuffer +EXPORT_SYMBOL vmlinux 0xc2a92963 mipi_dsi_host_unregister +EXPORT_SYMBOL vmlinux 0xc2acc033 hex_dump_to_buffer +EXPORT_SYMBOL vmlinux 0xc2bd5cad __netif_schedule +EXPORT_SYMBOL vmlinux 0xc2d5773d pci_enable_msix +EXPORT_SYMBOL vmlinux 0xc2d711e1 krealloc +EXPORT_SYMBOL vmlinux 0xc2d722a7 input_register_device +EXPORT_SYMBOL vmlinux 0xc2e488f6 cancel_dirty_page +EXPORT_SYMBOL vmlinux 0xc2e587d1 reset_devices +EXPORT_SYMBOL vmlinux 0xc2f9c045 timespec_to_jiffies +EXPORT_SYMBOL vmlinux 0xc32013bf inet_frags_fini +EXPORT_SYMBOL vmlinux 0xc340812b __xfrm_state_delete +EXPORT_SYMBOL vmlinux 0xc35064b5 bio_integrity_trim +EXPORT_SYMBOL vmlinux 0xc35f758b blk_delay_queue +EXPORT_SYMBOL vmlinux 0xc363f53f xfrm_state_insert +EXPORT_SYMBOL vmlinux 0xc365c9b3 tcf_action_exec +EXPORT_SYMBOL vmlinux 0xc389483e skb_vlan_pop +EXPORT_SYMBOL vmlinux 0xc3917814 agp_generic_type_to_mask_type +EXPORT_SYMBOL vmlinux 0xc3a8f1ad inet_select_addr +EXPORT_SYMBOL vmlinux 0xc3aaf0a9 __put_user_1 +EXPORT_SYMBOL vmlinux 0xc3c2be91 mipi_dsi_packet_format_is_short +EXPORT_SYMBOL vmlinux 0xc3ca6db2 mb_cache_entry_find_next +EXPORT_SYMBOL vmlinux 0xc3cae235 swiotlb_sync_single_for_device +EXPORT_SYMBOL vmlinux 0xc3d17627 inet_sk_rx_dst_set +EXPORT_SYMBOL vmlinux 0xc3f8a0d4 pci_bus_read_config_dword +EXPORT_SYMBOL vmlinux 0xc3fa6a59 memchr +EXPORT_SYMBOL vmlinux 0xc3fd29aa blk_requeue_request +EXPORT_SYMBOL vmlinux 0xc40761c5 set_trace_device +EXPORT_SYMBOL vmlinux 0xc41f0516 node_states +EXPORT_SYMBOL vmlinux 0xc435ed50 proc_dointvec_minmax +EXPORT_SYMBOL vmlinux 0xc44a3ce3 sock_kfree_s +EXPORT_SYMBOL vmlinux 0xc44a5a28 param_get_short +EXPORT_SYMBOL vmlinux 0xc4844e84 xfrm4_protocol_deregister +EXPORT_SYMBOL vmlinux 0xc4872ec1 pcibios_set_irq_routing +EXPORT_SYMBOL vmlinux 0xc499ae1e kstrdup +EXPORT_SYMBOL vmlinux 0xc4a2e5f4 mipi_dsi_dcs_set_pixel_format +EXPORT_SYMBOL vmlinux 0xc4cd8c36 get_thermal_instance +EXPORT_SYMBOL vmlinux 0xc4d3c054 xfrm_init_state +EXPORT_SYMBOL vmlinux 0xc4de64a6 generic_fillattr +EXPORT_SYMBOL vmlinux 0xc4eed9ff tcp_child_process +EXPORT_SYMBOL vmlinux 0xc4f1db1d blk_init_queue +EXPORT_SYMBOL vmlinux 0xc4f460f2 swiotlb_free_coherent +EXPORT_SYMBOL vmlinux 0xc50054e5 genl_notify +EXPORT_SYMBOL vmlinux 0xc50b0b24 sk_capable +EXPORT_SYMBOL vmlinux 0xc50d70a0 dev_add_offload +EXPORT_SYMBOL vmlinux 0xc5137552 x86_bios_cpu_apicid +EXPORT_SYMBOL vmlinux 0xc5462085 proc_doulongvec_ms_jiffies_minmax +EXPORT_SYMBOL vmlinux 0xc548847d netdev_rx_csum_fault +EXPORT_SYMBOL vmlinux 0xc5534d64 ioread16 +EXPORT_SYMBOL vmlinux 0xc585b830 __dev_kfree_skb_irq +EXPORT_SYMBOL vmlinux 0xc599a772 security_xfrm_state_delete +EXPORT_SYMBOL vmlinux 0xc59f97e7 serio_unregister_port +EXPORT_SYMBOL vmlinux 0xc59ff464 mount_nodev +EXPORT_SYMBOL vmlinux 0xc5b8c0f4 vme_lm_request +EXPORT_SYMBOL vmlinux 0xc5bcd716 pcie_port_service_unregister +EXPORT_SYMBOL vmlinux 0xc5d9c46c agp_try_unsupported_boot +EXPORT_SYMBOL vmlinux 0xc5e08f72 locks_remove_posix +EXPORT_SYMBOL vmlinux 0xc5e1ae58 pci_request_selected_regions_exclusive +EXPORT_SYMBOL vmlinux 0xc5fdef94 call_usermodehelper +EXPORT_SYMBOL vmlinux 0xc6069f11 simple_write_end +EXPORT_SYMBOL vmlinux 0xc60bab1d inet6_unregister_protosw +EXPORT_SYMBOL vmlinux 0xc6229f46 seq_pad +EXPORT_SYMBOL vmlinux 0xc631580a console_unlock +EXPORT_SYMBOL vmlinux 0xc63f7e58 register_netdevice +EXPORT_SYMBOL vmlinux 0xc6438201 pnp_find_card +EXPORT_SYMBOL vmlinux 0xc64ad189 dev_get_phys_port_name +EXPORT_SYMBOL vmlinux 0xc6522c12 devfreq_add_device +EXPORT_SYMBOL vmlinux 0xc65abeb7 agp3_generic_sizes +EXPORT_SYMBOL vmlinux 0xc6607f1e try_to_release_page +EXPORT_SYMBOL vmlinux 0xc66fa965 __generic_file_write_iter +EXPORT_SYMBOL vmlinux 0xc68751d2 ping_prot +EXPORT_SYMBOL vmlinux 0xc695d536 scsi_unregister +EXPORT_SYMBOL vmlinux 0xc6965cd5 sb_min_blocksize +EXPORT_SYMBOL vmlinux 0xc6b23120 intel_scu_ipc_iowrite16 +EXPORT_SYMBOL vmlinux 0xc6b368d3 acpi_gpe_count +EXPORT_SYMBOL vmlinux 0xc6cbbc89 capable +EXPORT_SYMBOL vmlinux 0xc6ce24d4 xfrm6_protocol_deregister +EXPORT_SYMBOL vmlinux 0xc6d2a207 padata_add_cpu +EXPORT_SYMBOL vmlinux 0xc709d9a0 skb_add_rx_frag +EXPORT_SYMBOL vmlinux 0xc70a52b5 ata_port_printk +EXPORT_SYMBOL vmlinux 0xc711bab6 jbd2_trans_will_send_data_barrier +EXPORT_SYMBOL vmlinux 0xc7208c3a serial8250_resume_port +EXPORT_SYMBOL vmlinux 0xc721c822 vga_switcheroo_init_domain_pm_optimus_hdmi_audio +EXPORT_SYMBOL vmlinux 0xc723b286 buffer_migrate_page +EXPORT_SYMBOL vmlinux 0xc72f0b34 nd_btt_sb_checksum +EXPORT_SYMBOL vmlinux 0xc7563db8 twl_set_regcache_bypass +EXPORT_SYMBOL vmlinux 0xc75cbaaf netpoll_poll_disable +EXPORT_SYMBOL vmlinux 0xc75e09e4 inet_csk_accept +EXPORT_SYMBOL vmlinux 0xc7647ef9 get_task_io_context +EXPORT_SYMBOL vmlinux 0xc768de19 cpu_all_bits +EXPORT_SYMBOL vmlinux 0xc776ddc3 __skb_get_hash_flowi6 +EXPORT_SYMBOL vmlinux 0xc781bd9f rfkill_resume_polling +EXPORT_SYMBOL vmlinux 0xc7856a3d inet6addr_notifier_call_chain +EXPORT_SYMBOL vmlinux 0xc7910c45 inet_peer_xrlim_allow +EXPORT_SYMBOL vmlinux 0xc79ade0f nla_put_nohdr +EXPORT_SYMBOL vmlinux 0xc79bcd36 dm_vcalloc +EXPORT_SYMBOL vmlinux 0xc7a4fbed rtnl_lock +EXPORT_SYMBOL vmlinux 0xc7a6d05a input_mt_get_slot_by_key +EXPORT_SYMBOL vmlinux 0xc7c597ae pci_clear_master +EXPORT_SYMBOL vmlinux 0xc7c6d987 netif_stacked_transfer_operstate +EXPORT_SYMBOL vmlinux 0xc7db7a76 tcp_v4_send_check +EXPORT_SYMBOL vmlinux 0xc7e03b89 vme_irq_free +EXPORT_SYMBOL vmlinux 0xc7ec6c27 strspn +EXPORT_SYMBOL vmlinux 0xc7fcc5bf acpi_resource_to_address64 +EXPORT_SYMBOL vmlinux 0xc8276a79 nf_hooks_needed +EXPORT_SYMBOL vmlinux 0xc8339e24 string_unescape +EXPORT_SYMBOL vmlinux 0xc83b4d5b posix_acl_from_mode +EXPORT_SYMBOL vmlinux 0xc843a79f __sock_create +EXPORT_SYMBOL vmlinux 0xc847b150 ata_std_end_eh +EXPORT_SYMBOL vmlinux 0xc84a0a7e seq_hlist_start_rcu +EXPORT_SYMBOL vmlinux 0xc86d6799 ___preempt_schedule +EXPORT_SYMBOL vmlinux 0xc871937a sock_queue_rcv_skb +EXPORT_SYMBOL vmlinux 0xc872fd85 in6addr_interfacelocal_allnodes +EXPORT_SYMBOL vmlinux 0xc878a67e acpi_processor_notify_smm +EXPORT_SYMBOL vmlinux 0xc890c008 zlib_deflateEnd +EXPORT_SYMBOL vmlinux 0xc89660fd generic_show_options +EXPORT_SYMBOL vmlinux 0xc897c382 sg_init_table +EXPORT_SYMBOL vmlinux 0xc89cd576 truncate_pagecache_range +EXPORT_SYMBOL vmlinux 0xc8a370d2 abx500_register_ops +EXPORT_SYMBOL vmlinux 0xc8a5d27d proc_symlink +EXPORT_SYMBOL vmlinux 0xc8a91f5b cpumask_local_spread +EXPORT_SYMBOL vmlinux 0xc8aecb45 devm_gpiod_get_array +EXPORT_SYMBOL vmlinux 0xc8b57c27 autoremove_wake_function +EXPORT_SYMBOL vmlinux 0xc8c2d55d vfs_statfs +EXPORT_SYMBOL vmlinux 0xc8c9efc8 param_set_short +EXPORT_SYMBOL vmlinux 0xc911b9d5 eth_get_headlen +EXPORT_SYMBOL vmlinux 0xc9136510 __napi_schedule_irqoff +EXPORT_SYMBOL vmlinux 0xc924038a sock_wmalloc +EXPORT_SYMBOL vmlinux 0xc9582c6d __cleancache_init_fs +EXPORT_SYMBOL vmlinux 0xc9634df9 in6addr_linklocal_allrouters +EXPORT_SYMBOL vmlinux 0xc97bb147 dquot_file_open +EXPORT_SYMBOL vmlinux 0xc98717ee d_hash_and_lookup +EXPORT_SYMBOL vmlinux 0xc9906808 __nlmsg_put +EXPORT_SYMBOL vmlinux 0xc99e2a55 twl_rev +EXPORT_SYMBOL vmlinux 0xc99f6aae dma_spin_lock +EXPORT_SYMBOL vmlinux 0xc9ac8fe8 devm_gpiod_put +EXPORT_SYMBOL vmlinux 0xc9adacd2 t10_pi_type1_ip +EXPORT_SYMBOL vmlinux 0xc9fcb56d nd_btt_probe +EXPORT_SYMBOL vmlinux 0xc9fef317 add_wait_queue +EXPORT_SYMBOL vmlinux 0xca0da226 tcp_req_err +EXPORT_SYMBOL vmlinux 0xca0f4667 readlink_copy +EXPORT_SYMBOL vmlinux 0xca12f150 vga_switcheroo_register_audio_client +EXPORT_SYMBOL vmlinux 0xca12fd97 pcie_capability_clear_and_set_dword +EXPORT_SYMBOL vmlinux 0xca2577b0 filemap_fault +EXPORT_SYMBOL vmlinux 0xca2d5b2c scsi_report_bus_reset +EXPORT_SYMBOL vmlinux 0xca43f454 invalidate_inode_buffers +EXPORT_SYMBOL vmlinux 0xca46c68d bio_endio +EXPORT_SYMBOL vmlinux 0xca4b3fda abx500_set_register_interruptible +EXPORT_SYMBOL vmlinux 0xca6d9312 inode_permission +EXPORT_SYMBOL vmlinux 0xca7a3af4 bioset_integrity_create +EXPORT_SYMBOL vmlinux 0xca7c0e5b devm_ioremap_wc +EXPORT_SYMBOL vmlinux 0xca87a343 locks_mandatory_area +EXPORT_SYMBOL vmlinux 0xca88c5bc bio_init +EXPORT_SYMBOL vmlinux 0xca8acc78 acpi_dbg_level +EXPORT_SYMBOL vmlinux 0xca8b9d72 kmem_cache_alloc_trace +EXPORT_SYMBOL vmlinux 0xca9253f0 netdev_has_upper_dev +EXPORT_SYMBOL vmlinux 0xca9360b5 rb_next +EXPORT_SYMBOL vmlinux 0xcada516e ppp_unregister_compressor +EXPORT_SYMBOL vmlinux 0xcaf2c603 scsi_sd_pm_domain +EXPORT_SYMBOL vmlinux 0xcafd75df datagram_poll +EXPORT_SYMBOL vmlinux 0xcb0288ea ledtrig_cpu +EXPORT_SYMBOL vmlinux 0xcb1a0a98 cap_mmap_file +EXPORT_SYMBOL vmlinux 0xcb283046 simple_nosetlease +EXPORT_SYMBOL vmlinux 0xcb4414f4 nf_log_unregister +EXPORT_SYMBOL vmlinux 0xcb5c2fbc scsi_device_resume +EXPORT_SYMBOL vmlinux 0xcb733bf2 acpi_bus_set_power +EXPORT_SYMBOL vmlinux 0xcb749149 release_sock +EXPORT_SYMBOL vmlinux 0xcb89552d submit_bio_wait +EXPORT_SYMBOL vmlinux 0xcb96b074 tso_build_data +EXPORT_SYMBOL vmlinux 0xcba0db9a generic_start_io_acct +EXPORT_SYMBOL vmlinux 0xcbae6c7a acpi_lid_notifier_unregister +EXPORT_SYMBOL vmlinux 0xcbb1ff60 vlan_dev_vlan_id +EXPORT_SYMBOL vmlinux 0xcbb4d4c5 cros_ec_query_all +EXPORT_SYMBOL vmlinux 0xcbb59c79 inet_del_protocol +EXPORT_SYMBOL vmlinux 0xcbb93cae kill_pgrp +EXPORT_SYMBOL vmlinux 0xcbbb3493 dquot_transfer +EXPORT_SYMBOL vmlinux 0xcbbc4b9e scsi_verify_blk_ioctl +EXPORT_SYMBOL vmlinux 0xcbbf0a6f audit_log_task_context +EXPORT_SYMBOL vmlinux 0xcbc9557f unregister_sysrq_key +EXPORT_SYMBOL vmlinux 0xcbddf9d7 fbcon_rotate_ud +EXPORT_SYMBOL vmlinux 0xcbeac4be hdmi_avi_infoframe_pack +EXPORT_SYMBOL vmlinux 0xcc07149e vfs_iter_write +EXPORT_SYMBOL vmlinux 0xcc1269cb dev_uc_del +EXPORT_SYMBOL vmlinux 0xcc248d26 serial8250_suspend_port +EXPORT_SYMBOL vmlinux 0xcc455f76 pagevec_lookup_tag +EXPORT_SYMBOL vmlinux 0xcc4d1bfb atomic64_read_cx8 +EXPORT_SYMBOL vmlinux 0xcc4fda86 xfrm_stateonly_find +EXPORT_SYMBOL vmlinux 0xcc5005fe msleep_interruptible +EXPORT_SYMBOL vmlinux 0xcc764fd7 kmem_cache_alloc +EXPORT_SYMBOL vmlinux 0xcc838223 __pte2cachemode_tbl +EXPORT_SYMBOL vmlinux 0xccb1d2c2 simple_open +EXPORT_SYMBOL vmlinux 0xccc21f5e input_get_new_minor +EXPORT_SYMBOL vmlinux 0xccdf492b netdev_crit +EXPORT_SYMBOL vmlinux 0xcce5c360 try_to_free_buffers +EXPORT_SYMBOL vmlinux 0xcce826cc i2c_smbus_xfer +EXPORT_SYMBOL vmlinux 0xccf044a4 blkdev_issue_flush +EXPORT_SYMBOL vmlinux 0xccfef64f skb_flow_dissector_init +EXPORT_SYMBOL vmlinux 0xcd02175d proc_mkdir +EXPORT_SYMBOL vmlinux 0xcd1aa377 param_get_invbool +EXPORT_SYMBOL vmlinux 0xcd279169 nla_find +EXPORT_SYMBOL vmlinux 0xcd48cb3d genphy_resume +EXPORT_SYMBOL vmlinux 0xcd62e080 lockref_get_not_zero +EXPORT_SYMBOL vmlinux 0xcd8d36f4 flow_get_u32_src +EXPORT_SYMBOL vmlinux 0xcda4b5bf generic_write_checks +EXPORT_SYMBOL vmlinux 0xcdb495a6 mem_cgroup_begin_page_stat +EXPORT_SYMBOL vmlinux 0xcdc39c9e security_ismaclabel +EXPORT_SYMBOL vmlinux 0xcdca3a63 gro_find_complete_by_type +EXPORT_SYMBOL vmlinux 0xcdcfc4de dev_crit +EXPORT_SYMBOL vmlinux 0xcdd96cbc tcf_em_unregister +EXPORT_SYMBOL vmlinux 0xcddee788 page_put_link +EXPORT_SYMBOL vmlinux 0xcdfaf0fd i2c_smbus_read_block_data +EXPORT_SYMBOL vmlinux 0xce03324d vfs_rename +EXPORT_SYMBOL vmlinux 0xce164e2e finish_no_open +EXPORT_SYMBOL vmlinux 0xce1d1b24 d_genocide +EXPORT_SYMBOL vmlinux 0xce2840e7 irq_set_irq_wake +EXPORT_SYMBOL vmlinux 0xce2c45cc wait_for_completion_io +EXPORT_SYMBOL vmlinux 0xce3689a1 kobject_del +EXPORT_SYMBOL vmlinux 0xce3ec4ba ip_setsockopt +EXPORT_SYMBOL vmlinux 0xce437271 set_page_dirty_lock +EXPORT_SYMBOL vmlinux 0xce46ae30 blk_queue_max_segments +EXPORT_SYMBOL vmlinux 0xce4904a4 acpi_leave_sleep_state +EXPORT_SYMBOL vmlinux 0xce5ac24f zlib_inflate_workspacesize +EXPORT_SYMBOL vmlinux 0xce5e0088 scsi_init_io +EXPORT_SYMBOL vmlinux 0xce6b3fd0 set_groups +EXPORT_SYMBOL vmlinux 0xce9d11e1 default_qdisc_ops +EXPORT_SYMBOL vmlinux 0xce9e41e9 lockref_get +EXPORT_SYMBOL vmlinux 0xce9ea111 vfs_create +EXPORT_SYMBOL vmlinux 0xceab0311 strchrnul +EXPORT_SYMBOL vmlinux 0xcec051db unlock_buffer +EXPORT_SYMBOL vmlinux 0xcec82f89 xfrm_input_resume +EXPORT_SYMBOL vmlinux 0xcecabc62 blk_end_request_all +EXPORT_SYMBOL vmlinux 0xcedfc84d lockref_mark_dead +EXPORT_SYMBOL vmlinux 0xcef45c09 block_read_full_page +EXPORT_SYMBOL vmlinux 0xcef51982 kstrtou16 +EXPORT_SYMBOL vmlinux 0xcefcd99a serial8250_unregister_port +EXPORT_SYMBOL vmlinux 0xcf6cfe1f msrs_free +EXPORT_SYMBOL vmlinux 0xcf73f873 register_gifconf +EXPORT_SYMBOL vmlinux 0xcf788e26 arp_send +EXPORT_SYMBOL vmlinux 0xcf934893 d_rehash +EXPORT_SYMBOL vmlinux 0xcfa4ae74 sched_autogroup_create_attach +EXPORT_SYMBOL vmlinux 0xcfa54454 simple_symlink_inode_operations +EXPORT_SYMBOL vmlinux 0xcfd2fa16 vm_insert_page +EXPORT_SYMBOL vmlinux 0xcfd389e7 blk_mq_delay_queue +EXPORT_SYMBOL vmlinux 0xcfdd6f33 netpoll_send_udp +EXPORT_SYMBOL vmlinux 0xcfe05d4d register_kmmio_probe +EXPORT_SYMBOL vmlinux 0xcff7ed0b dquot_initialize +EXPORT_SYMBOL vmlinux 0xd0109881 genphy_restart_aneg +EXPORT_SYMBOL vmlinux 0xd02dd4c5 i2c_smbus_write_word_data +EXPORT_SYMBOL vmlinux 0xd05dfbbe generic_key_instantiate +EXPORT_SYMBOL vmlinux 0xd063d577 phy_read_mmd_indirect +EXPORT_SYMBOL vmlinux 0xd06576f2 proto_unregister +EXPORT_SYMBOL vmlinux 0xd0720a17 on_each_cpu_cond +EXPORT_SYMBOL vmlinux 0xd073785b mmc_stop_bkops +EXPORT_SYMBOL vmlinux 0xd0783653 bitmap_unplug +EXPORT_SYMBOL vmlinux 0xd09b0199 fence_context_alloc +EXPORT_SYMBOL vmlinux 0xd0a2847c sha_init +EXPORT_SYMBOL vmlinux 0xd0a91bab skip_spaces +EXPORT_SYMBOL vmlinux 0xd0baf16b __mark_inode_dirty +EXPORT_SYMBOL vmlinux 0xd0d8621b strlen +EXPORT_SYMBOL vmlinux 0xd0dcdde5 km_is_alive +EXPORT_SYMBOL vmlinux 0xd0e00c74 pm8606_osc_enable +EXPORT_SYMBOL vmlinux 0xd0ee38b8 schedule_timeout_uninterruptible +EXPORT_SYMBOL vmlinux 0xd0f36f0d audit_log_format +EXPORT_SYMBOL vmlinux 0xd0f49c3e jbd2_journal_init_jbd_inode +EXPORT_SYMBOL vmlinux 0xd0f49d52 sk_receive_skb +EXPORT_SYMBOL vmlinux 0xd0fa087e bdi_destroy +EXPORT_SYMBOL vmlinux 0xd0fb7b42 __mod_zone_page_state +EXPORT_SYMBOL vmlinux 0xd0fb7cd4 __tasklet_hi_schedule_first +EXPORT_SYMBOL vmlinux 0xd0fef3b2 agp_free_key +EXPORT_SYMBOL vmlinux 0xd11e0e92 pcie_set_readrq +EXPORT_SYMBOL vmlinux 0xd14420cb pci_get_domain_bus_and_slot +EXPORT_SYMBOL vmlinux 0xd15f0fbf __tcf_em_tree_match +EXPORT_SYMBOL vmlinux 0xd1652a93 acpi_info +EXPORT_SYMBOL vmlinux 0xd1816f32 frontswap_writethrough +EXPORT_SYMBOL vmlinux 0xd196c9be kstrtos16_from_user +EXPORT_SYMBOL vmlinux 0xd1b438fd xfrm_state_alloc +EXPORT_SYMBOL vmlinux 0xd1bbacd8 md_register_thread +EXPORT_SYMBOL vmlinux 0xd1c84dfb hdmi_audio_infoframe_pack +EXPORT_SYMBOL vmlinux 0xd1d002d3 get_super +EXPORT_SYMBOL vmlinux 0xd1d30682 netif_rx_ni +EXPORT_SYMBOL vmlinux 0xd1d87e92 scsi_mlreturn_string +EXPORT_SYMBOL vmlinux 0xd1e95ff3 sched_autogroup_detach +EXPORT_SYMBOL vmlinux 0xd1f6c5f3 smp_num_siblings +EXPORT_SYMBOL vmlinux 0xd2064e2f idr_replace +EXPORT_SYMBOL vmlinux 0xd220cf8a jiffies_to_timespec +EXPORT_SYMBOL vmlinux 0xd221460e d_walk +EXPORT_SYMBOL vmlinux 0xd23fcb3f tcf_exts_dump +EXPORT_SYMBOL vmlinux 0xd24e5f36 phy_start_aneg +EXPORT_SYMBOL vmlinux 0xd24ea7f6 pci_enable_msix_range +EXPORT_SYMBOL vmlinux 0xd251d7b0 security_socket_getpeersec_dgram +EXPORT_SYMBOL vmlinux 0xd254a4a0 clkdev_alloc +EXPORT_SYMBOL vmlinux 0xd2555f19 jiffies_64_to_clock_t +EXPORT_SYMBOL vmlinux 0xd25a563f nonseekable_open +EXPORT_SYMBOL vmlinux 0xd25d0abf nla_put +EXPORT_SYMBOL vmlinux 0xd25d4f74 console_blank_hook +EXPORT_SYMBOL vmlinux 0xd2712130 vga_switcheroo_unregister_client +EXPORT_SYMBOL vmlinux 0xd27b25dd blk_check_plugged +EXPORT_SYMBOL vmlinux 0xd28459eb dst_release +EXPORT_SYMBOL vmlinux 0xd2a0c465 simple_follow_link +EXPORT_SYMBOL vmlinux 0xd2af138b reservation_ww_class +EXPORT_SYMBOL vmlinux 0xd2bd1b15 nf_afinfo +EXPORT_SYMBOL vmlinux 0xd2da1048 register_netdevice_notifier +EXPORT_SYMBOL vmlinux 0xd2e4005b posix_unblock_lock +EXPORT_SYMBOL vmlinux 0xd2e6a582 acpi_processor_preregister_performance +EXPORT_SYMBOL vmlinux 0xd30d3eed bio_clone_bioset +EXPORT_SYMBOL vmlinux 0xd32ac508 inet_csk_clear_xmit_timers +EXPORT_SYMBOL vmlinux 0xd3696399 __neigh_set_probe_once +EXPORT_SYMBOL vmlinux 0xd378eaee dcb_setapp +EXPORT_SYMBOL vmlinux 0xd3913ae8 iw_handler_get_thrspy +EXPORT_SYMBOL vmlinux 0xd3a35503 udp_flush_pending_frames +EXPORT_SYMBOL vmlinux 0xd3a5629a phy_driver_unregister +EXPORT_SYMBOL vmlinux 0xd3c2a36c netpoll_parse_options +EXPORT_SYMBOL vmlinux 0xd3e5957a inode_newsize_ok +EXPORT_SYMBOL vmlinux 0xd3e8cb85 remove_proc_entry +EXPORT_SYMBOL vmlinux 0xd3efbb20 jbd2__journal_start +EXPORT_SYMBOL vmlinux 0xd3fdb1d7 dev_set_promiscuity +EXPORT_SYMBOL vmlinux 0xd427a49f xfrm_policy_bysel_ctx +EXPORT_SYMBOL vmlinux 0xd448991f md_write_end +EXPORT_SYMBOL vmlinux 0xd44ef265 kern_path +EXPORT_SYMBOL vmlinux 0xd47d46d1 i2c_add_adapter +EXPORT_SYMBOL vmlinux 0xd4835ef8 dmi_check_system +EXPORT_SYMBOL vmlinux 0xd484dae2 dcbnl_cee_notify +EXPORT_SYMBOL vmlinux 0xd4930b91 vm_map_ram +EXPORT_SYMBOL vmlinux 0xd4a2ce52 netdev_bonding_info_change +EXPORT_SYMBOL vmlinux 0xd4a53d0c jbd2_journal_force_commit_nested +EXPORT_SYMBOL vmlinux 0xd4b29dbb unlock_two_nondirectories +EXPORT_SYMBOL vmlinux 0xd4b3138a scsi_remove_device +EXPORT_SYMBOL vmlinux 0xd4e1cfc9 end_buffer_async_write +EXPORT_SYMBOL vmlinux 0xd4f15a1e blkdev_fsync +EXPORT_SYMBOL vmlinux 0xd4fde525 blk_queue_update_dma_pad +EXPORT_SYMBOL vmlinux 0xd500e108 skb_clone_sk +EXPORT_SYMBOL vmlinux 0xd50fef48 acpi_detach_data +EXPORT_SYMBOL vmlinux 0xd54f41ce try_to_del_timer_sync +EXPORT_SYMBOL vmlinux 0xd55ad2e2 nf_ct_attach +EXPORT_SYMBOL vmlinux 0xd56d11cf tcp_proc_unregister +EXPORT_SYMBOL vmlinux 0xd57705b1 freeze_bdev +EXPORT_SYMBOL vmlinux 0xd5a1327c iov_iter_single_seg_count +EXPORT_SYMBOL vmlinux 0xd5b54a60 dqput +EXPORT_SYMBOL vmlinux 0xd5dd7855 unregister_md_personality +EXPORT_SYMBOL vmlinux 0xd5ed8f45 mipi_dsi_dcs_read +EXPORT_SYMBOL vmlinux 0xd5f52d4f netdev_rss_key_fill +EXPORT_SYMBOL vmlinux 0xd5f7b7e9 flow_cache_init +EXPORT_SYMBOL vmlinux 0xd616683a ecryptfs_fill_auth_tok +EXPORT_SYMBOL vmlinux 0xd6295b93 pneigh_lookup +EXPORT_SYMBOL vmlinux 0xd6299733 dma_mmap_from_coherent +EXPORT_SYMBOL vmlinux 0xd62c833f schedule_timeout +EXPORT_SYMBOL vmlinux 0xd6390ab0 mfd_cell_disable +EXPORT_SYMBOL vmlinux 0xd63c3448 mmc_get_card +EXPORT_SYMBOL vmlinux 0xd643ee78 __find_get_block +EXPORT_SYMBOL vmlinux 0xd648e564 fb_match_mode +EXPORT_SYMBOL vmlinux 0xd6635507 nd_iostat_end +EXPORT_SYMBOL vmlinux 0xd6861e6e seq_puts +EXPORT_SYMBOL vmlinux 0xd688716b dm_kcopyd_client_create +EXPORT_SYMBOL vmlinux 0xd6a8aed0 pci_enable_device +EXPORT_SYMBOL vmlinux 0xd6b2ed5f generate_pm_trace +EXPORT_SYMBOL vmlinux 0xd6b33026 cpu_khz +EXPORT_SYMBOL vmlinux 0xd6b85822 __ww_mutex_lock +EXPORT_SYMBOL vmlinux 0xd6d2c027 insert_inode_locked +EXPORT_SYMBOL vmlinux 0xd6ee688f vmalloc +EXPORT_SYMBOL vmlinux 0xd730959d seqno_fence_ops +EXPORT_SYMBOL vmlinux 0xd7471418 set_anon_super +EXPORT_SYMBOL vmlinux 0xd75c79df smp_call_function +EXPORT_SYMBOL vmlinux 0xd75f42b2 blk_limits_io_opt +EXPORT_SYMBOL vmlinux 0xd774b104 vme_dma_request +EXPORT_SYMBOL vmlinux 0xd78e6f89 security_skb_classify_flow +EXPORT_SYMBOL vmlinux 0xd797b9a5 vme_master_write +EXPORT_SYMBOL vmlinux 0xd7aaa6a6 kern_path_create +EXPORT_SYMBOL vmlinux 0xd7c2fb4c wait_on_page_bit +EXPORT_SYMBOL vmlinux 0xd7dd777b reserve_perfctr_nmi +EXPORT_SYMBOL vmlinux 0xd7e56a4e simple_strtoll +EXPORT_SYMBOL vmlinux 0xd7ea7094 nf_unregister_queue_handler +EXPORT_SYMBOL vmlinux 0xd80eca7d netdev_info +EXPORT_SYMBOL vmlinux 0xd81637fd napi_gro_flush +EXPORT_SYMBOL vmlinux 0xd81ff4d6 poll_initwait +EXPORT_SYMBOL vmlinux 0xd8202158 iw_handler_get_spy +EXPORT_SYMBOL vmlinux 0xd8374fa3 genphy_soft_reset +EXPORT_SYMBOL vmlinux 0xd84edcd4 pci_bus_get +EXPORT_SYMBOL vmlinux 0xd85833cb __kfifo_dma_out_prepare_r +EXPORT_SYMBOL vmlinux 0xd861f161 netlink_unicast +EXPORT_SYMBOL vmlinux 0xd86aa4b9 lookup_one_len +EXPORT_SYMBOL vmlinux 0xd87ee543 ipv6_getsockopt +EXPORT_SYMBOL vmlinux 0xd8878bf5 should_remove_suid +EXPORT_SYMBOL vmlinux 0xd89da37f movable_zone +EXPORT_SYMBOL vmlinux 0xd8a994eb scsi_extd_sense_format +EXPORT_SYMBOL vmlinux 0xd8ded085 radix_tree_maybe_preload +EXPORT_SYMBOL vmlinux 0xd8e484f0 register_chrdev_region +EXPORT_SYMBOL vmlinux 0xd8e96ed3 secpath_dup +EXPORT_SYMBOL vmlinux 0xd8fa1d2d jbd2_journal_init_inode +EXPORT_SYMBOL vmlinux 0xd9091363 acpi_install_notify_handler +EXPORT_SYMBOL vmlinux 0xd911a9f2 rtnl_create_link +EXPORT_SYMBOL vmlinux 0xd9253af1 __devcgroup_inode_permission +EXPORT_SYMBOL vmlinux 0xd92e2dca tcp_hashinfo +EXPORT_SYMBOL vmlinux 0xd93ee8f4 dev_set_mac_address +EXPORT_SYMBOL vmlinux 0xd94322e7 acpi_evaluate_reference +EXPORT_SYMBOL vmlinux 0xd9485ae1 igrab +EXPORT_SYMBOL vmlinux 0xd96734cc tcp_v4_mtu_reduced +EXPORT_SYMBOL vmlinux 0xd969b2c7 amd_e400_c1e_detected +EXPORT_SYMBOL vmlinux 0xd9705b5f dma_async_device_register +EXPORT_SYMBOL vmlinux 0xd9710fb5 agp_alloc_bridge +EXPORT_SYMBOL vmlinux 0xd97cb221 blk_init_queue_node +EXPORT_SYMBOL vmlinux 0xd985dc99 mempool_free_pages +EXPORT_SYMBOL vmlinux 0xd9a2a408 pci_find_capability +EXPORT_SYMBOL vmlinux 0xd9ac5265 xfrm_spd_getinfo +EXPORT_SYMBOL vmlinux 0xd9afe540 call_netdevice_notifiers +EXPORT_SYMBOL vmlinux 0xd9b20495 peernet2id_alloc +EXPORT_SYMBOL vmlinux 0xd9b808a2 inode_init_once +EXPORT_SYMBOL vmlinux 0xd9d3bcd3 _raw_spin_lock_bh +EXPORT_SYMBOL vmlinux 0xd9d8fd16 register_restart_handler +EXPORT_SYMBOL vmlinux 0xd9f4eb2d blk_queue_stack_limits +EXPORT_SYMBOL vmlinux 0xda08c0d7 pcibios_get_irq_routing_table +EXPORT_SYMBOL vmlinux 0xda3d10a8 security_tun_dev_open +EXPORT_SYMBOL vmlinux 0xda4d8494 md_reap_sync_thread +EXPORT_SYMBOL vmlinux 0xda6e3bfe dev_getfirstbyhwtype +EXPORT_SYMBOL vmlinux 0xda78c1d8 sock_create_lite +EXPORT_SYMBOL vmlinux 0xda7ca6cb fb_mode_is_equal +EXPORT_SYMBOL vmlinux 0xda7cf6ad dput +EXPORT_SYMBOL vmlinux 0xda8af7ad fb_find_nearest_mode +EXPORT_SYMBOL vmlinux 0xda8fd495 isapnp_write_byte +EXPORT_SYMBOL vmlinux 0xda8fe136 nvdimm_bus_unlock +EXPORT_SYMBOL vmlinux 0xda9f3561 get_user_pages_locked +EXPORT_SYMBOL vmlinux 0xdaa50d06 is_bad_inode +EXPORT_SYMBOL vmlinux 0xdaa57ec3 totalhigh_pages +EXPORT_SYMBOL vmlinux 0xdac4913a bitmap_allocate_region +EXPORT_SYMBOL vmlinux 0xdae80100 _raw_spin_unlock +EXPORT_SYMBOL vmlinux 0xdb0c2742 __frontswap_store +EXPORT_SYMBOL vmlinux 0xdb13dbee unregister_quota_format +EXPORT_SYMBOL vmlinux 0xdb1e060a dquot_commit_info +EXPORT_SYMBOL vmlinux 0xdb3a9460 fbcon_set_tileops +EXPORT_SYMBOL vmlinux 0xdb5c03f2 do_truncate +EXPORT_SYMBOL vmlinux 0xdb63de14 blkdev_issue_zeroout +EXPORT_SYMBOL vmlinux 0xdb68bbad rfkill_destroy +EXPORT_SYMBOL vmlinux 0xdb7305a1 __stack_chk_fail +EXPORT_SYMBOL vmlinux 0xdb760f52 __kfifo_free +EXPORT_SYMBOL vmlinux 0xdb82c334 uart_unregister_driver +EXPORT_SYMBOL vmlinux 0xdb8e5ee8 phy_connect_direct +EXPORT_SYMBOL vmlinux 0xdb91286f __inode_sub_bytes +EXPORT_SYMBOL vmlinux 0xdb989de0 max8925_bulk_write +EXPORT_SYMBOL vmlinux 0xdba034c8 elv_rb_latter_request +EXPORT_SYMBOL vmlinux 0xdbc486b9 mipi_dsi_dcs_exit_sleep_mode +EXPORT_SYMBOL vmlinux 0xdbe27e9e balance_dirty_pages_ratelimited +EXPORT_SYMBOL vmlinux 0xdbf93b41 mmc_gpio_request_cd +EXPORT_SYMBOL vmlinux 0xdc047fc4 scsi_dev_info_list_add_keyed +EXPORT_SYMBOL vmlinux 0xdc14eda7 pci_pci_problems +EXPORT_SYMBOL vmlinux 0xdc3fcbc9 __sw_hweight8 +EXPORT_SYMBOL vmlinux 0xdc48a93b register_sysctl_table +EXPORT_SYMBOL vmlinux 0xdc512134 backlight_register_notifier +EXPORT_SYMBOL vmlinux 0xdc57f532 acpi_install_gpe_handler +EXPORT_SYMBOL vmlinux 0xdc5b4f7b clk_get +EXPORT_SYMBOL vmlinux 0xdca5f021 devfreq_interval_update +EXPORT_SYMBOL vmlinux 0xdd0a2ba2 strlcat +EXPORT_SYMBOL vmlinux 0xdd35d5de clk_register_clkdevs +EXPORT_SYMBOL vmlinux 0xdd3a512c md_set_array_sectors +EXPORT_SYMBOL vmlinux 0xdd3dc1f5 block_write_full_page +EXPORT_SYMBOL vmlinux 0xdd4b6e45 agp_bridge +EXPORT_SYMBOL vmlinux 0xdd51f8e9 mdiobus_register +EXPORT_SYMBOL vmlinux 0xdd5351b8 mmc_gpiod_request_ro +EXPORT_SYMBOL vmlinux 0xdd61e761 ps2_cmd_aborted +EXPORT_SYMBOL vmlinux 0xdd6532ea lease_modify +EXPORT_SYMBOL vmlinux 0xdd90a787 i2c_use_client +EXPORT_SYMBOL vmlinux 0xdd98e7c8 md_wait_for_blocked_rdev +EXPORT_SYMBOL vmlinux 0xdd999727 check_disk_size_change +EXPORT_SYMBOL vmlinux 0xdd9d45b1 skb_checksum_trimmed +EXPORT_SYMBOL vmlinux 0xdda00a7a __starget_for_each_device +EXPORT_SYMBOL vmlinux 0xddb37d02 proc_dointvec +EXPORT_SYMBOL vmlinux 0xddb8356f follow_down +EXPORT_SYMBOL vmlinux 0xddb9495a pnp_find_dev +EXPORT_SYMBOL vmlinux 0xddca5bd3 xfrm_policy_hash_rebuild +EXPORT_SYMBOL vmlinux 0xdde52d16 __xfrm_state_destroy +EXPORT_SYMBOL vmlinux 0xde064921 ps2_command +EXPORT_SYMBOL vmlinux 0xde072f94 __get_user_pages +EXPORT_SYMBOL vmlinux 0xde16dc16 tboot +EXPORT_SYMBOL vmlinux 0xde18ff22 nvdimm_revalidate_disk +EXPORT_SYMBOL vmlinux 0xde1c763f scsi_scan_target +EXPORT_SYMBOL vmlinux 0xde1dfa36 skb_vlan_push +EXPORT_SYMBOL vmlinux 0xde40dc30 gnttab_free_pages +EXPORT_SYMBOL vmlinux 0xde496fc7 linkwatch_fire_event +EXPORT_SYMBOL vmlinux 0xde4b2dfe devfreq_remove_device +EXPORT_SYMBOL vmlinux 0xde4f721f set_pages_x +EXPORT_SYMBOL vmlinux 0xde51cbc4 unregister_sysctl_table +EXPORT_SYMBOL vmlinux 0xde6e8a8a get_tz_trend +EXPORT_SYMBOL vmlinux 0xde7eff90 mmc_wait_for_cmd +EXPORT_SYMBOL vmlinux 0xde81c94f genphy_config_aneg +EXPORT_SYMBOL vmlinux 0xde9360ba totalram_pages +EXPORT_SYMBOL vmlinux 0xde9b17ed agp3_generic_fetch_size +EXPORT_SYMBOL vmlinux 0xde9e7dea __free_pages +EXPORT_SYMBOL vmlinux 0xde9eb869 register_cdrom +EXPORT_SYMBOL vmlinux 0xdeab231e tcp_timewait_state_process +EXPORT_SYMBOL vmlinux 0xdec57f8a security_sb_set_mnt_opts +EXPORT_SYMBOL vmlinux 0xdec71674 dec_zone_page_state +EXPORT_SYMBOL vmlinux 0xded931f3 resource_list_create_entry +EXPORT_SYMBOL vmlinux 0xdedb6611 try_wait_for_completion +EXPORT_SYMBOL vmlinux 0xdf0da3cc acpi_get_devices +EXPORT_SYMBOL vmlinux 0xdf12068b md_cluster_mod +EXPORT_SYMBOL vmlinux 0xdf12a927 acpi_check_dsm +EXPORT_SYMBOL vmlinux 0xdf1427e5 idr_remove +EXPORT_SYMBOL vmlinux 0xdf2c2742 rb_last +EXPORT_SYMBOL vmlinux 0xdf3a693d crc_t10dif_update +EXPORT_SYMBOL vmlinux 0xdf4fc797 __register_nmi_handler +EXPORT_SYMBOL vmlinux 0xdf54a8f7 netlink_unregister_notifier +EXPORT_SYMBOL vmlinux 0xdf60cc27 __print_symbol +EXPORT_SYMBOL vmlinux 0xdf622faf generic_listxattr +EXPORT_SYMBOL vmlinux 0xdf8c695a __ndelay +EXPORT_SYMBOL vmlinux 0xdf929370 fs_overflowgid +EXPORT_SYMBOL vmlinux 0xdf9a873c udp_poll +EXPORT_SYMBOL vmlinux 0xdfc0b44d pcie_set_mps +EXPORT_SYMBOL vmlinux 0xdfc4a2fd nobh_writepage +EXPORT_SYMBOL vmlinux 0xdfc5169b slhc_init +EXPORT_SYMBOL vmlinux 0xdfc9dc6c devfreq_recommended_opp +EXPORT_SYMBOL vmlinux 0xdfcb0e2f xfrm6_prepare_output +EXPORT_SYMBOL vmlinux 0xdfcfc2e6 scsi_add_device +EXPORT_SYMBOL vmlinux 0xdfd3a075 wait_for_completion_killable +EXPORT_SYMBOL vmlinux 0xdfd3f039 xfrm_input_unregister_afinfo +EXPORT_SYMBOL vmlinux 0xdfd9c63d fbcon_rotate_ccw +EXPORT_SYMBOL vmlinux 0xdfe6a232 neigh_direct_output +EXPORT_SYMBOL vmlinux 0xdff905e5 vme_slave_free +EXPORT_SYMBOL vmlinux 0xe002cb3f i2c_del_driver +EXPORT_SYMBOL vmlinux 0xe00553c8 input_allocate_device +EXPORT_SYMBOL vmlinux 0xe006f4fd scsi_unblock_requests +EXPORT_SYMBOL vmlinux 0xe01db477 free_netdev +EXPORT_SYMBOL vmlinux 0xe03cc618 __mem_cgroup_count_vm_event +EXPORT_SYMBOL vmlinux 0xe03df979 devm_gen_pool_create +EXPORT_SYMBOL vmlinux 0xe0494104 generic_setlease +EXPORT_SYMBOL vmlinux 0xe04f7caa dm_read_arg_group +EXPORT_SYMBOL vmlinux 0xe06141e9 security_sk_clone +EXPORT_SYMBOL vmlinux 0xe062c29d netif_tx_wake_queue +EXPORT_SYMBOL vmlinux 0xe0653843 neigh_table_init +EXPORT_SYMBOL vmlinux 0xe06bebf3 devm_request_threaded_irq +EXPORT_SYMBOL vmlinux 0xe075d6eb iter_div_u64_rem +EXPORT_SYMBOL vmlinux 0xe07cd345 ether_setup +EXPORT_SYMBOL vmlinux 0xe083e246 gen_pool_first_fit_order_align +EXPORT_SYMBOL vmlinux 0xe0a16a20 intel_scu_ipc_i2c_cntrl +EXPORT_SYMBOL vmlinux 0xe0ac8bd2 acpi_bus_generate_netlink_event +EXPORT_SYMBOL vmlinux 0xe0b13336 argv_free +EXPORT_SYMBOL vmlinux 0xe0bc8cfc textsearch_unregister +EXPORT_SYMBOL vmlinux 0xe0faef36 request_key_with_auxdata +EXPORT_SYMBOL vmlinux 0xe0fbe94d xfrm_input +EXPORT_SYMBOL vmlinux 0xe1020209 elv_rb_former_request +EXPORT_SYMBOL vmlinux 0xe13cd8a7 dmi_name_in_vendors +EXPORT_SYMBOL vmlinux 0xe146f4ed __remove_inode_hash +EXPORT_SYMBOL vmlinux 0xe15dd596 security_path_link +EXPORT_SYMBOL vmlinux 0xe15ffcb7 blk_post_runtime_resume +EXPORT_SYMBOL vmlinux 0xe1644e7a fbcon_rotate_cw +EXPORT_SYMBOL vmlinux 0xe16ccef4 pci_dev_get +EXPORT_SYMBOL vmlinux 0xe1761617 security_inet_conn_request +EXPORT_SYMBOL vmlinux 0xe1786c32 make_flow_keys_digest +EXPORT_SYMBOL vmlinux 0xe1b02a46 __devm_gpiod_get_optional +EXPORT_SYMBOL vmlinux 0xe1c6f7f7 tcp_init_sock +EXPORT_SYMBOL vmlinux 0xe1db1840 security_path_mknod +EXPORT_SYMBOL vmlinux 0xe1f1e9e5 pci_get_slot +EXPORT_SYMBOL vmlinux 0xe200f872 secure_dccpv6_sequence_number +EXPORT_SYMBOL vmlinux 0xe20391cb proc_dointvec_userhz_jiffies +EXPORT_SYMBOL vmlinux 0xe222bc31 filemap_fdatawrite +EXPORT_SYMBOL vmlinux 0xe23ae481 blk_iopoll_complete +EXPORT_SYMBOL vmlinux 0xe249b3c7 dquot_quota_on +EXPORT_SYMBOL vmlinux 0xe24d3a97 jiffies_64 +EXPORT_SYMBOL vmlinux 0xe259ae9e _raw_spin_lock +EXPORT_SYMBOL vmlinux 0xe29a0fc0 __sb_start_write +EXPORT_SYMBOL vmlinux 0xe29e1d0e out_of_line_wait_on_atomic_t +EXPORT_SYMBOL vmlinux 0xe2a26d4f tcf_hash_search +EXPORT_SYMBOL vmlinux 0xe2aa90e3 dev_get_stats +EXPORT_SYMBOL vmlinux 0xe2c30a21 lookup_bdev +EXPORT_SYMBOL vmlinux 0xe2cccffb ioctl_by_bdev +EXPORT_SYMBOL vmlinux 0xe2d2c0a9 pci_wait_for_pending_transaction +EXPORT_SYMBOL vmlinux 0xe2d5255a strcmp +EXPORT_SYMBOL vmlinux 0xe2d72a33 touch_atime +EXPORT_SYMBOL vmlinux 0xe2e594e3 kernel_bind +EXPORT_SYMBOL vmlinux 0xe2e8065e memdup_user +EXPORT_SYMBOL vmlinux 0xe2edfb47 security_inode_getsecctx +EXPORT_SYMBOL vmlinux 0xe2eecbed register_netdev +EXPORT_SYMBOL vmlinux 0xe2f425e7 rps_cpu_mask +EXPORT_SYMBOL vmlinux 0xe2f4d140 abx500_mask_and_set_register_interruptible +EXPORT_SYMBOL vmlinux 0xe2fa2889 scmd_printk +EXPORT_SYMBOL vmlinux 0xe2fae716 kmemdup +EXPORT_SYMBOL vmlinux 0xe3197208 proc_dostring +EXPORT_SYMBOL vmlinux 0xe319eb24 acpi_pci_osc_control_set +EXPORT_SYMBOL vmlinux 0xe32536de xfrm6_protocol_register +EXPORT_SYMBOL vmlinux 0xe329a3f9 __xfrm_init_state +EXPORT_SYMBOL vmlinux 0xe3399a75 native_queued_spin_lock_slowpath +EXPORT_SYMBOL vmlinux 0xe33a2ca3 swiotlb_sync_single_for_cpu +EXPORT_SYMBOL vmlinux 0xe3410945 pnp_register_driver +EXPORT_SYMBOL vmlinux 0xe3484aa8 tcp_conn_request +EXPORT_SYMBOL vmlinux 0xe35d8360 free_page_put_link +EXPORT_SYMBOL vmlinux 0xe364c51a crypto_sha256_finup +EXPORT_SYMBOL vmlinux 0xe36bf736 blk_mq_add_to_requeue_list +EXPORT_SYMBOL vmlinux 0xe39af19a jbd2_journal_destroy +EXPORT_SYMBOL vmlinux 0xe3b0723b pci_fixup_cardbus +EXPORT_SYMBOL vmlinux 0xe3d6f284 fb_find_mode_cvt +EXPORT_SYMBOL vmlinux 0xe3d88e37 read_cache_page_gfp +EXPORT_SYMBOL vmlinux 0xe3e04800 udp_seq_open +EXPORT_SYMBOL vmlinux 0xe3f32946 ipv6_setsockopt +EXPORT_SYMBOL vmlinux 0xe41bfd54 ppp_input_error +EXPORT_SYMBOL vmlinux 0xe43ea5f2 rps_may_expire_flow +EXPORT_SYMBOL vmlinux 0xe445db4a acpi_check_address_range +EXPORT_SYMBOL vmlinux 0xe45d2d2b seq_open_private +EXPORT_SYMBOL vmlinux 0xe46281c4 inet6_bind +EXPORT_SYMBOL vmlinux 0xe4655197 iget_failed +EXPORT_SYMBOL vmlinux 0xe484e35f ioread32 +EXPORT_SYMBOL vmlinux 0xe4854c71 dev_add_pack +EXPORT_SYMBOL vmlinux 0xe49c47b3 kern_unmount +EXPORT_SYMBOL vmlinux 0xe4be8f6b dev_remove_pack +EXPORT_SYMBOL vmlinux 0xe4c1da5f __napi_alloc_skb +EXPORT_SYMBOL vmlinux 0xe4d11896 inode_claim_rsv_space +EXPORT_SYMBOL vmlinux 0xe4eeb3c6 inet_sendpage +EXPORT_SYMBOL vmlinux 0xe4ef5600 __fib6_flush_trees +EXPORT_SYMBOL vmlinux 0xe4efe9bc jbd2_journal_clear_features +EXPORT_SYMBOL vmlinux 0xe50f904f intel_scu_ipc_ioread16 +EXPORT_SYMBOL vmlinux 0xe51f1ced xfrm_state_walk +EXPORT_SYMBOL vmlinux 0xe523ad75 synchronize_irq +EXPORT_SYMBOL vmlinux 0xe530d757 acpi_clear_gpe +EXPORT_SYMBOL vmlinux 0xe556c3ff pci_get_device +EXPORT_SYMBOL vmlinux 0xe56413aa pnp_stop_dev +EXPORT_SYMBOL vmlinux 0xe5644dc6 may_umount +EXPORT_SYMBOL vmlinux 0xe572f67f lock_two_nondirectories +EXPORT_SYMBOL vmlinux 0xe57878a1 in6_pton +EXPORT_SYMBOL vmlinux 0xe5815f8a _raw_spin_lock_irq +EXPORT_SYMBOL vmlinux 0xe58572d4 inode_get_bytes +EXPORT_SYMBOL vmlinux 0xe5867808 dlci_ioctl_set +EXPORT_SYMBOL vmlinux 0xe58c4919 thaw_bdev +EXPORT_SYMBOL vmlinux 0xe5942a65 rtnl_link_get_net +EXPORT_SYMBOL vmlinux 0xe59d4fd1 udp_proc_unregister +EXPORT_SYMBOL vmlinux 0xe5aa9c3f _dev_info +EXPORT_SYMBOL vmlinux 0xe5c78a99 do_blank_screen +EXPORT_SYMBOL vmlinux 0xe5c9a5e1 skb_ensure_writable +EXPORT_SYMBOL vmlinux 0xe5d01c29 vga_get +EXPORT_SYMBOL vmlinux 0xe5da3f15 pci_claim_resource +EXPORT_SYMBOL vmlinux 0xe5ed5467 xfrm_policy_walk_init +EXPORT_SYMBOL vmlinux 0xe5f70607 devm_ioremap +EXPORT_SYMBOL vmlinux 0xe5f80001 page_zero_new_buffers +EXPORT_SYMBOL vmlinux 0xe60c0a0e blk_mq_init_queue +EXPORT_SYMBOL vmlinux 0xe6162877 down_killable +EXPORT_SYMBOL vmlinux 0xe61c761d dcache_readdir +EXPORT_SYMBOL vmlinux 0xe62d77aa uart_get_baud_rate +EXPORT_SYMBOL vmlinux 0xe6380953 agp_unbind_memory +EXPORT_SYMBOL vmlinux 0xe64d98fe rdmsr_safe_regs +EXPORT_SYMBOL vmlinux 0xe65566e6 agp_copy_info +EXPORT_SYMBOL vmlinux 0xe666e4b3 pcim_iomap_regions +EXPORT_SYMBOL vmlinux 0xe674cbd5 simple_unlink +EXPORT_SYMBOL vmlinux 0xe67804d7 sk_alloc +EXPORT_SYMBOL vmlinux 0xe6831933 skb_pull +EXPORT_SYMBOL vmlinux 0xe68705dc tcp_rcv_established +EXPORT_SYMBOL vmlinux 0xe693a6ce vme_get_size +EXPORT_SYMBOL vmlinux 0xe697d108 __blk_iopoll_complete +EXPORT_SYMBOL vmlinux 0xe69aa9fe freezing_slow_path +EXPORT_SYMBOL vmlinux 0xe69b293f kset_unregister +EXPORT_SYMBOL vmlinux 0xe69cf549 pci_release_selected_regions +EXPORT_SYMBOL vmlinux 0xe69e8bf6 dentry_update_name_case +EXPORT_SYMBOL vmlinux 0xe6bda532 param_ops_invbool +EXPORT_SYMBOL vmlinux 0xe6e72986 send_sig_info +EXPORT_SYMBOL vmlinux 0xe6ebc016 key_create_or_update +EXPORT_SYMBOL vmlinux 0xe6fbe430 can_do_mlock +EXPORT_SYMBOL vmlinux 0xe70ccfb5 phy_print_status +EXPORT_SYMBOL vmlinux 0xe716baed acpi_unregister_ioapic +EXPORT_SYMBOL vmlinux 0xe71ca5d3 mmc_set_blockcount +EXPORT_SYMBOL vmlinux 0xe722a1bf bio_phys_segments +EXPORT_SYMBOL vmlinux 0xe7305761 __set_page_dirty_nobuffers +EXPORT_SYMBOL vmlinux 0xe73f29cd skb_dequeue_tail +EXPORT_SYMBOL vmlinux 0xe7448373 fsnotify_put_mark +EXPORT_SYMBOL vmlinux 0xe758f83c input_unregister_device +EXPORT_SYMBOL vmlinux 0xe779177a blk_register_region +EXPORT_SYMBOL vmlinux 0xe77d389a gen_pool_dma_alloc +EXPORT_SYMBOL vmlinux 0xe781b5f6 intel_scu_ipc_readv +EXPORT_SYMBOL vmlinux 0xe78fce0a debugfs_create_automount +EXPORT_SYMBOL vmlinux 0xe7988b3c param_ops_bool +EXPORT_SYMBOL vmlinux 0xe7a120ff netif_napi_del +EXPORT_SYMBOL vmlinux 0xe7a63604 mount_bdev +EXPORT_SYMBOL vmlinux 0xe7a664c4 nf_hooks +EXPORT_SYMBOL vmlinux 0xe7a81967 audit_log_secctx +EXPORT_SYMBOL vmlinux 0xe7b6315e kblockd_schedule_delayed_work_on +EXPORT_SYMBOL vmlinux 0xe7d4daac seq_list_next +EXPORT_SYMBOL vmlinux 0xe7f51af7 dmam_declare_coherent_memory +EXPORT_SYMBOL vmlinux 0xe7f5c8dd skb_free_datagram_locked +EXPORT_SYMBOL vmlinux 0xe80dbdb5 sk_page_frag_refill +EXPORT_SYMBOL vmlinux 0xe81ef1dd remove_conflicting_framebuffers +EXPORT_SYMBOL vmlinux 0xe8214184 tcf_exts_destroy +EXPORT_SYMBOL vmlinux 0xe830c1a2 fib_default_rule_pref +EXPORT_SYMBOL vmlinux 0xe83f6508 dm_kcopyd_copy +EXPORT_SYMBOL vmlinux 0xe87025f0 acpi_evaluate_object_typed +EXPORT_SYMBOL vmlinux 0xe8794ce1 slhc_toss +EXPORT_SYMBOL vmlinux 0xe87b2edd sg_copy_buffer +EXPORT_SYMBOL vmlinux 0xe890eac6 _raw_write_lock_irq +EXPORT_SYMBOL vmlinux 0xe893fee7 mem_cgroup_end_page_stat +EXPORT_SYMBOL vmlinux 0xe8b68849 wrmsr_on_cpus +EXPORT_SYMBOL vmlinux 0xe8bea3bc qdisc_put_stab +EXPORT_SYMBOL vmlinux 0xe8f11a8d inet_dev_addr_type +EXPORT_SYMBOL vmlinux 0xe914e41e strcpy +EXPORT_SYMBOL vmlinux 0xe9295385 find_vma +EXPORT_SYMBOL vmlinux 0xe934786e d_instantiate_no_diralias +EXPORT_SYMBOL vmlinux 0xe9369bb9 fb_get_buffer_offset +EXPORT_SYMBOL vmlinux 0xe93cf442 ipv6_sock_mc_drop +EXPORT_SYMBOL vmlinux 0xe93f6042 trace_print_symbols_seq +EXPORT_SYMBOL vmlinux 0xe9446348 fb_is_primary_device +EXPORT_SYMBOL vmlinux 0xe953b21f get_next_ino +EXPORT_SYMBOL vmlinux 0xe95e00cf flex_array_get_ptr +EXPORT_SYMBOL vmlinux 0xe9606c9b disk_stack_limits +EXPORT_SYMBOL vmlinux 0xe9677324 dev_alloc_name +EXPORT_SYMBOL vmlinux 0xe98319e4 serial8250_do_set_termios +EXPORT_SYMBOL vmlinux 0xe989951e blk_mq_run_hw_queues +EXPORT_SYMBOL vmlinux 0xe997667b wrmsr_on_cpu +EXPORT_SYMBOL vmlinux 0xe9acfac4 tcf_hash_new_index +EXPORT_SYMBOL vmlinux 0xe9d432f3 sock_recv_errqueue +EXPORT_SYMBOL vmlinux 0xe9f35e38 sk_mc_loop +EXPORT_SYMBOL vmlinux 0xe9f7149c zlib_deflate_workspacesize +EXPORT_SYMBOL vmlinux 0xea054b22 nla_policy_len +EXPORT_SYMBOL vmlinux 0xea16dd4c tcp_destroy_cgroup +EXPORT_SYMBOL vmlinux 0xea5c5788 dma_alloc_attrs +EXPORT_SYMBOL vmlinux 0xea7987f1 key_update +EXPORT_SYMBOL vmlinux 0xea7a42f9 __sg_free_table +EXPORT_SYMBOL vmlinux 0xea7b8a44 acpi_install_interface +EXPORT_SYMBOL vmlinux 0xea864d34 init_net +EXPORT_SYMBOL vmlinux 0xea90bdd3 acpi_attach_data +EXPORT_SYMBOL vmlinux 0xea9b15a8 xfrm4_rcv_cb +EXPORT_SYMBOL vmlinux 0xeaa527e9 scsi_target_quiesce +EXPORT_SYMBOL vmlinux 0xeab7fd38 netlink_kernel_release +EXPORT_SYMBOL vmlinux 0xead992d8 start_tty +EXPORT_SYMBOL vmlinux 0xeae198fb blk_fetch_request +EXPORT_SYMBOL vmlinux 0xeae3dfd6 __const_udelay +EXPORT_SYMBOL vmlinux 0xeaeb198c tcf_destroy_chain +EXPORT_SYMBOL vmlinux 0xeaf38b7b to_nd_btt +EXPORT_SYMBOL vmlinux 0xeaf5cc50 tcf_hash_insert +EXPORT_SYMBOL vmlinux 0xeaf6756c xfrm_state_unregister_afinfo +EXPORT_SYMBOL vmlinux 0xeb097126 ppp_register_net_channel +EXPORT_SYMBOL vmlinux 0xeb0be7ee dev_driver_string +EXPORT_SYMBOL vmlinux 0xeb0da44c param_get_bool +EXPORT_SYMBOL vmlinux 0xeb14db94 nd_region_to_nstype +EXPORT_SYMBOL vmlinux 0xeb1d53e9 security_path_unlink +EXPORT_SYMBOL vmlinux 0xeb356095 dev_change_flags +EXPORT_SYMBOL vmlinux 0xeb37101c audit_log_end +EXPORT_SYMBOL vmlinux 0xeb38d29a __cleancache_get_page +EXPORT_SYMBOL vmlinux 0xeb39d6b1 padata_do_serial +EXPORT_SYMBOL vmlinux 0xeb40bc55 nf_getsockopt +EXPORT_SYMBOL vmlinux 0xeb465de9 blk_queue_segment_boundary +EXPORT_SYMBOL vmlinux 0xeb55a931 __kfifo_max_r +EXPORT_SYMBOL vmlinux 0xeb5c7be7 register_quota_format +EXPORT_SYMBOL vmlinux 0xeb73c999 d_tmpfile +EXPORT_SYMBOL vmlinux 0xebaa8f4c tty_register_ldisc +EXPORT_SYMBOL vmlinux 0xebaddcd1 file_path +EXPORT_SYMBOL vmlinux 0xebc4e064 scsi_get_device_flags_keyed +EXPORT_SYMBOL vmlinux 0xebca93e7 __elv_add_request +EXPORT_SYMBOL vmlinux 0xebdb7a50 phy_get_eee_err +EXPORT_SYMBOL vmlinux 0xebde0fc1 simple_transaction_get +EXPORT_SYMBOL vmlinux 0xebe67456 kdb_current_task +EXPORT_SYMBOL vmlinux 0xebece803 vm_mmap +EXPORT_SYMBOL vmlinux 0xebff5cf5 fence_signal_locked +EXPORT_SYMBOL vmlinux 0xec1aa6ef memzero_explicit +EXPORT_SYMBOL vmlinux 0xec1ff5aa netdev_printk +EXPORT_SYMBOL vmlinux 0xec28832d get_empty_filp +EXPORT_SYMBOL vmlinux 0xec4d9e3a clk_get_sys +EXPORT_SYMBOL vmlinux 0xec64a4f5 mdiobus_unregister +EXPORT_SYMBOL vmlinux 0xec88c5ed __skb_recv_datagram +EXPORT_SYMBOL vmlinux 0xecb06d8a copy_from_iter +EXPORT_SYMBOL vmlinux 0xecbcb8bb radix_tree_lookup_slot +EXPORT_SYMBOL vmlinux 0xeccd3e0c acpi_handle_printk +EXPORT_SYMBOL vmlinux 0xecd1b7f9 serio_close +EXPORT_SYMBOL vmlinux 0xecde22ad jbd2_journal_get_create_access +EXPORT_SYMBOL vmlinux 0xece784c2 rb_first +EXPORT_SYMBOL vmlinux 0xed0caee2 xfrm_register_mode +EXPORT_SYMBOL vmlinux 0xed0d09dd pci_find_parent_resource +EXPORT_SYMBOL vmlinux 0xed177658 tty_port_free_xmit_buf +EXPORT_SYMBOL vmlinux 0xed1ec797 bio_clone_fast +EXPORT_SYMBOL vmlinux 0xed43aebe xfrm_lookup +EXPORT_SYMBOL vmlinux 0xed47bef2 sock_common_recvmsg +EXPORT_SYMBOL vmlinux 0xed4cbaba udp_push_pending_frames +EXPORT_SYMBOL vmlinux 0xed597524 qdisc_get_rtab +EXPORT_SYMBOL vmlinux 0xed7dadc7 tcp_sync_mss +EXPORT_SYMBOL vmlinux 0xed93f29e __kunmap_atomic +EXPORT_SYMBOL vmlinux 0xed9f9a20 __ctzsi2 +EXPORT_SYMBOL vmlinux 0xedac9e34 blk_queue_end_tag +EXPORT_SYMBOL vmlinux 0xedb1edb2 pci_bus_read_config_byte +EXPORT_SYMBOL vmlinux 0xedbaee5e nla_strcmp +EXPORT_SYMBOL vmlinux 0xedbd968b component_match_add +EXPORT_SYMBOL vmlinux 0xedc03953 iounmap +EXPORT_SYMBOL vmlinux 0xee05ec26 inet6_protos +EXPORT_SYMBOL vmlinux 0xee22c25b inetpeer_invalidate_tree +EXPORT_SYMBOL vmlinux 0xee275fb9 mark_buffer_async_write +EXPORT_SYMBOL vmlinux 0xee2d0fc7 _local_bh_enable +EXPORT_SYMBOL vmlinux 0xee456d27 jbd2_log_start_commit +EXPORT_SYMBOL vmlinux 0xee7eb9e1 pnp_platform_devices +EXPORT_SYMBOL vmlinux 0xee8751a1 vlan_vids_add_by_dev +EXPORT_SYMBOL vmlinux 0xee91879b rb_first_postorder +EXPORT_SYMBOL vmlinux 0xeea9dbaf bitmap_bitremap +EXPORT_SYMBOL vmlinux 0xeebc6350 blk_queue_start_tag +EXPORT_SYMBOL vmlinux 0xeebcf797 xfrm_state_register_afinfo +EXPORT_SYMBOL vmlinux 0xeecc00ff get_fs_type +EXPORT_SYMBOL vmlinux 0xeede0f5e eth_validate_addr +EXPORT_SYMBOL vmlinux 0xeee41531 pci_bus_assign_resources +EXPORT_SYMBOL vmlinux 0xeeee7d23 md_integrity_register +EXPORT_SYMBOL vmlinux 0xeef161aa groups_free +EXPORT_SYMBOL vmlinux 0xef0453f9 mdio_bus_type +EXPORT_SYMBOL vmlinux 0xef2f6b13 netdev_lower_get_next +EXPORT_SYMBOL vmlinux 0xef40a632 adjust_managed_page_count +EXPORT_SYMBOL vmlinux 0xef4997c6 noop_qdisc +EXPORT_SYMBOL vmlinux 0xef5d29c7 pci_try_set_mwi +EXPORT_SYMBOL vmlinux 0xef726b74 devm_request_resource +EXPORT_SYMBOL vmlinux 0xef9aedfc boot_option_idle_override +EXPORT_SYMBOL vmlinux 0xefaa5ed5 blk_queue_max_discard_sectors +EXPORT_SYMBOL vmlinux 0xefb68944 sock_diag_put_filterinfo +EXPORT_SYMBOL vmlinux 0xefd1624a vme_dma_free_attribute +EXPORT_SYMBOL vmlinux 0xefda8d99 abort_exclusive_wait +EXPORT_SYMBOL vmlinux 0xefdaa590 mutex_trylock +EXPORT_SYMBOL vmlinux 0xefdd70ce security_secid_to_secctx +EXPORT_SYMBOL vmlinux 0xefe099c3 acpi_get_event_status +EXPORT_SYMBOL vmlinux 0xf0009fee put_pages_list +EXPORT_SYMBOL vmlinux 0xf00da9a6 scsi_device_quiesce +EXPORT_SYMBOL vmlinux 0xf0187927 __sg_page_iter_next +EXPORT_SYMBOL vmlinux 0xf023f38d inode_needs_sync +EXPORT_SYMBOL vmlinux 0xf02d0915 ilookup +EXPORT_SYMBOL vmlinux 0xf05ffa15 fb_var_to_videomode +EXPORT_SYMBOL vmlinux 0xf065f629 ioread16be +EXPORT_SYMBOL vmlinux 0xf067257c register_memory_isolate_notifier +EXPORT_SYMBOL vmlinux 0xf067c4c2 blk_run_queue +EXPORT_SYMBOL vmlinux 0xf077aba0 vfs_getattr +EXPORT_SYMBOL vmlinux 0xf07e3cdf unlock_new_inode +EXPORT_SYMBOL vmlinux 0xf08242c2 finish_wait +EXPORT_SYMBOL vmlinux 0xf08c67de napi_alloc_frag +EXPORT_SYMBOL vmlinux 0xf08ed4d3 block_is_partially_uptodate +EXPORT_SYMBOL vmlinux 0xf09d7296 ww_mutex_unlock +EXPORT_SYMBOL vmlinux 0xf09de776 get_random_int +EXPORT_SYMBOL vmlinux 0xf0a99f55 input_set_capability +EXPORT_SYMBOL vmlinux 0xf0ae70ac __dst_destroy_metrics_generic +EXPORT_SYMBOL vmlinux 0xf0b22fd1 vga_switcheroo_fini_domain_pm_ops +EXPORT_SYMBOL vmlinux 0xf0ef15b4 list_sort +EXPORT_SYMBOL vmlinux 0xf10526ac verify_spi_info +EXPORT_SYMBOL vmlinux 0xf1079b31 jbd2_journal_check_available_features +EXPORT_SYMBOL vmlinux 0xf10c70d0 ndo_dflt_fdb_add +EXPORT_SYMBOL vmlinux 0xf10de535 ioread8 +EXPORT_SYMBOL vmlinux 0xf11543ff find_first_zero_bit +EXPORT_SYMBOL vmlinux 0xf11f369e mipi_dsi_dcs_soft_reset +EXPORT_SYMBOL vmlinux 0xf12a5afa revalidate_disk +EXPORT_SYMBOL vmlinux 0xf1398e2e lg_local_unlock_cpu +EXPORT_SYMBOL vmlinux 0xf147dcb2 hdmi_spd_infoframe_init +EXPORT_SYMBOL vmlinux 0xf156ed11 netif_tx_stop_all_queues +EXPORT_SYMBOL vmlinux 0xf18242e1 atomic64_set_cx8 +EXPORT_SYMBOL vmlinux 0xf18921ac up_read +EXPORT_SYMBOL vmlinux 0xf195c682 fb_invert_cmaps +EXPORT_SYMBOL vmlinux 0xf1969a8e __usecs_to_jiffies +EXPORT_SYMBOL vmlinux 0xf1cc4ec7 page_address +EXPORT_SYMBOL vmlinux 0xf1d3502d update_region +EXPORT_SYMBOL vmlinux 0xf1db1704 nla_memcpy +EXPORT_SYMBOL vmlinux 0xf1deabf2 div64_u64 +EXPORT_SYMBOL vmlinux 0xf1df27ac mmc_register_driver +EXPORT_SYMBOL vmlinux 0xf1e7a600 cdev_alloc +EXPORT_SYMBOL vmlinux 0xf1e96dd9 pci_dev_driver +EXPORT_SYMBOL vmlinux 0xf1e98c74 avenrun +EXPORT_SYMBOL vmlinux 0xf1f44681 phy_suspend +EXPORT_SYMBOL vmlinux 0xf20dabd8 free_irq +EXPORT_SYMBOL vmlinux 0xf22d16db __inet6_lookup_established +EXPORT_SYMBOL vmlinux 0xf23fcb99 __kfifo_in +EXPORT_SYMBOL vmlinux 0xf2408ac9 netif_schedule_queue +EXPORT_SYMBOL vmlinux 0xf252030e iunique +EXPORT_SYMBOL vmlinux 0xf25e7de8 dev_warn +EXPORT_SYMBOL vmlinux 0xf267b92c mipi_dsi_detach +EXPORT_SYMBOL vmlinux 0xf28ed6e2 machine_to_phys_nr +EXPORT_SYMBOL vmlinux 0xf2997713 tty_termios_hw_change +EXPORT_SYMBOL vmlinux 0xf29e2948 fb_blank +EXPORT_SYMBOL vmlinux 0xf2a0af8f backlight_device_registered +EXPORT_SYMBOL vmlinux 0xf2b1b3f9 param_get_ullong +EXPORT_SYMBOL vmlinux 0xf2b8ca1b __get_page_tail +EXPORT_SYMBOL vmlinux 0xf2c43f3f zlib_deflate +EXPORT_SYMBOL vmlinux 0xf2de7aa5 irq_to_desc +EXPORT_SYMBOL vmlinux 0xf2e3c52f input_unregister_handler +EXPORT_SYMBOL vmlinux 0xf3080b04 pnp_request_card_device +EXPORT_SYMBOL vmlinux 0xf312cb9d ucs2_strsize +EXPORT_SYMBOL vmlinux 0xf313da4e sha_transform +EXPORT_SYMBOL vmlinux 0xf32cc607 fsync_bdev +EXPORT_SYMBOL vmlinux 0xf3341268 __clear_user +EXPORT_SYMBOL vmlinux 0xf33ecd17 blk_queue_max_write_same_sectors +EXPORT_SYMBOL vmlinux 0xf342287b misc_deregister +EXPORT_SYMBOL vmlinux 0xf34480e1 param_ops_charp +EXPORT_SYMBOL vmlinux 0xf346231f seq_list_start_head +EXPORT_SYMBOL vmlinux 0xf353a698 register_module_notifier +EXPORT_SYMBOL vmlinux 0xf389fe60 __hw_addr_init +EXPORT_SYMBOL vmlinux 0xf3916987 global_cursor_default +EXPORT_SYMBOL vmlinux 0xf396cd21 tcp_parse_md5sig_option +EXPORT_SYMBOL vmlinux 0xf3986b06 acpi_os_map_generic_address +EXPORT_SYMBOL vmlinux 0xf39dfdf1 nd_namespace_blk_validate +EXPORT_SYMBOL vmlinux 0xf3b3d1a5 vme_register_bridge +EXPORT_SYMBOL vmlinux 0xf3bff403 clk_add_alias +EXPORT_SYMBOL vmlinux 0xf3df65cb unmap_mapping_range +EXPORT_SYMBOL vmlinux 0xf3e6402e __bitmap_equal +EXPORT_SYMBOL vmlinux 0xf3e7c548 skb_copy_expand +EXPORT_SYMBOL vmlinux 0xf3ee2caf generic_read_dir +EXPORT_SYMBOL vmlinux 0xf3fdef1d eisa_driver_unregister +EXPORT_SYMBOL vmlinux 0xf3ffabeb netif_napi_add +EXPORT_SYMBOL vmlinux 0xf4036624 pci_request_regions +EXPORT_SYMBOL vmlinux 0xf40b2297 __crypto_memneq +EXPORT_SYMBOL vmlinux 0xf416c363 cpufreq_generic_suspend +EXPORT_SYMBOL vmlinux 0xf437def2 blk_peek_request +EXPORT_SYMBOL vmlinux 0xf43aded8 key_payload_reserve +EXPORT_SYMBOL vmlinux 0xf4407616 twl6040_set_bits +EXPORT_SYMBOL vmlinux 0xf441ac43 ioread8_rep +EXPORT_SYMBOL vmlinux 0xf45a7c1f inet_csk_destroy_sock +EXPORT_SYMBOL vmlinux 0xf4694871 twl6040_power +EXPORT_SYMBOL vmlinux 0xf474c21c bitmap_print_to_pagebuf +EXPORT_SYMBOL vmlinux 0xf474fdcb kfree_const +EXPORT_SYMBOL vmlinux 0xf4762afa __tcf_hash_release +EXPORT_SYMBOL vmlinux 0xf48ac387 inet_frag_kill +EXPORT_SYMBOL vmlinux 0xf4a5c213 avail_to_resrv_perfctr_nmi_bit +EXPORT_SYMBOL vmlinux 0xf4a88fca jbd2_journal_try_to_free_buffers +EXPORT_SYMBOL vmlinux 0xf4af02af devm_request_any_context_irq +EXPORT_SYMBOL vmlinux 0xf4b754fd acpi_resources_are_enforced +EXPORT_SYMBOL vmlinux 0xf4bdbeb9 __frontswap_invalidate_area +EXPORT_SYMBOL vmlinux 0xf4ca3f57 padata_alloc_possible +EXPORT_SYMBOL vmlinux 0xf4d03fa0 qdisc_list_add +EXPORT_SYMBOL vmlinux 0xf4e8dce7 module_layout +EXPORT_SYMBOL vmlinux 0xf4f14de6 rtnl_trylock +EXPORT_SYMBOL vmlinux 0xf502d273 acpi_get_current_resources +EXPORT_SYMBOL vmlinux 0xf505da15 ppp_unit_number +EXPORT_SYMBOL vmlinux 0xf5075771 read_dev_sector +EXPORT_SYMBOL vmlinux 0xf5076937 submit_bio +EXPORT_SYMBOL vmlinux 0xf517a2f1 mb_cache_entry_insert +EXPORT_SYMBOL vmlinux 0xf51ae235 touch_nmi_watchdog +EXPORT_SYMBOL vmlinux 0xf5274c14 __dec_zone_page_state +EXPORT_SYMBOL vmlinux 0xf536d22e acpi_set_gpe_wake_mask +EXPORT_SYMBOL vmlinux 0xf53d4c26 qdisc_class_hash_destroy +EXPORT_SYMBOL vmlinux 0xf54bb7b3 bioset_create +EXPORT_SYMBOL vmlinux 0xf5614066 fsnotify_add_mark +EXPORT_SYMBOL vmlinux 0xf564dc08 tcp_parse_options +EXPORT_SYMBOL vmlinux 0xf572702d vlan_ioctl_set +EXPORT_SYMBOL vmlinux 0xf579e750 mutex_lock_interruptible +EXPORT_SYMBOL vmlinux 0xf5806d51 xfrm_policy_walk_done +EXPORT_SYMBOL vmlinux 0xf59101b3 invalidate_bdev +EXPORT_SYMBOL vmlinux 0xf592e826 dev_addr_flush +EXPORT_SYMBOL vmlinux 0xf5a10e25 vme_slave_set +EXPORT_SYMBOL vmlinux 0xf5ae2055 fsnotify_destroy_mark +EXPORT_SYMBOL vmlinux 0xf5b10e67 acpi_install_global_event_handler +EXPORT_SYMBOL vmlinux 0xf5c2d34d hdmi_audio_infoframe_init +EXPORT_SYMBOL vmlinux 0xf5e736ab get_phy_device +EXPORT_SYMBOL vmlinux 0xf5eb86ea blk_verify_command +EXPORT_SYMBOL vmlinux 0xf5f5eb6f generic_readlink +EXPORT_SYMBOL vmlinux 0xf603744f blk_queue_prep_rq +EXPORT_SYMBOL vmlinux 0xf621bb7d queue_read_lock_slowpath +EXPORT_SYMBOL vmlinux 0xf62fa8c8 pci_assign_resource +EXPORT_SYMBOL vmlinux 0xf6309969 pm_vt_switch_unregister +EXPORT_SYMBOL vmlinux 0xf6388c56 sysctl_ip_default_ttl +EXPORT_SYMBOL vmlinux 0xf6770391 mac_pton +EXPORT_SYMBOL vmlinux 0xf68285c0 register_inetaddr_notifier +EXPORT_SYMBOL vmlinux 0xf683d634 pm860x_page_bulk_read +EXPORT_SYMBOL vmlinux 0xf68687be __sg_page_iter_start +EXPORT_SYMBOL vmlinux 0xf6868917 set_pages_nx +EXPORT_SYMBOL vmlinux 0xf693a145 irq_stat +EXPORT_SYMBOL vmlinux 0xf6979874 register_key_type +EXPORT_SYMBOL vmlinux 0xf6ada069 tcp_md5_do_del +EXPORT_SYMBOL vmlinux 0xf6bb4729 color_table +EXPORT_SYMBOL vmlinux 0xf6d69c73 devfreq_monitor_resume +EXPORT_SYMBOL vmlinux 0xf6ebc03b net_ratelimit +EXPORT_SYMBOL vmlinux 0xf6fc8791 __bitmap_xor +EXPORT_SYMBOL vmlinux 0xf6fd0b6a inet_sk_rebuild_header +EXPORT_SYMBOL vmlinux 0xf7071fdc get_disk +EXPORT_SYMBOL vmlinux 0xf7086a37 neigh_destroy +EXPORT_SYMBOL vmlinux 0xf710bfc8 kmap_atomic_to_page +EXPORT_SYMBOL vmlinux 0xf714f5b7 keyring_search +EXPORT_SYMBOL vmlinux 0xf726d02f atomic64_add_unless_cx8 +EXPORT_SYMBOL vmlinux 0xf745cb16 atomic64_sub_return_cx8 +EXPORT_SYMBOL vmlinux 0xf7490c92 pcix_get_mmrbc +EXPORT_SYMBOL vmlinux 0xf74d01aa sock_init_data +EXPORT_SYMBOL vmlinux 0xf7584a9c find_font +EXPORT_SYMBOL vmlinux 0xf75ce24e tty_port_alloc_xmit_buf +EXPORT_SYMBOL vmlinux 0xf764868a udplite_table +EXPORT_SYMBOL vmlinux 0xf776d1d3 trace_raw_output_prep +EXPORT_SYMBOL vmlinux 0xf777d9f4 nf_log_bind_pf +EXPORT_SYMBOL vmlinux 0xf788424d register_sysctl +EXPORT_SYMBOL vmlinux 0xf7991807 block_write_begin +EXPORT_SYMBOL vmlinux 0xf79bed24 acpi_bus_get_status +EXPORT_SYMBOL vmlinux 0xf79e97cd acpi_get_physical_device_location +EXPORT_SYMBOL vmlinux 0xf7d79066 gnet_stats_start_copy +EXPORT_SYMBOL vmlinux 0xf8050fac acpi_evaluate_object +EXPORT_SYMBOL vmlinux 0xf811e69d scsi_eh_flush_done_q +EXPORT_SYMBOL vmlinux 0xf827cb83 free_reserved_area +EXPORT_SYMBOL vmlinux 0xf82abc1d isa_dma_bridge_buggy +EXPORT_SYMBOL vmlinux 0xf82ec573 rb_prev +EXPORT_SYMBOL vmlinux 0xf83ec7b3 param_get_ulong +EXPORT_SYMBOL vmlinux 0xf874da36 init_special_inode +EXPORT_SYMBOL vmlinux 0xf887b351 rfkill_alloc +EXPORT_SYMBOL vmlinux 0xf88e0ee2 acpi_get_table_header +EXPORT_SYMBOL vmlinux 0xf897ee98 simple_pin_fs +EXPORT_SYMBOL vmlinux 0xf8af3805 jbd2_journal_invalidatepage +EXPORT_SYMBOL vmlinux 0xf8b660db i2c_smbus_read_i2c_block_data +EXPORT_SYMBOL vmlinux 0xf8dc8c32 mark_page_accessed +EXPORT_SYMBOL vmlinux 0xf8f5b495 blk_alloc_queue +EXPORT_SYMBOL vmlinux 0xf9348cbc xz_dec_run +EXPORT_SYMBOL vmlinux 0xf943284d tcp_disconnect +EXPORT_SYMBOL vmlinux 0xf9528418 cdev_add +EXPORT_SYMBOL vmlinux 0xf97e0cd3 single_open_size +EXPORT_SYMBOL vmlinux 0xf9a35bc5 tcp_release_cb +EXPORT_SYMBOL vmlinux 0xf9a3bb66 vfs_setpos +EXPORT_SYMBOL vmlinux 0xf9a482f9 msleep +EXPORT_SYMBOL vmlinux 0xf9a7ab34 blk_rq_map_user_iov +EXPORT_SYMBOL vmlinux 0xf9b36872 xfrm_state_walk_done +EXPORT_SYMBOL vmlinux 0xf9b78713 set_create_files_as +EXPORT_SYMBOL vmlinux 0xf9c62d63 scsi_dma_map +EXPORT_SYMBOL vmlinux 0xf9df2d58 blk_mq_tag_busy_iter +EXPORT_SYMBOL vmlinux 0xf9e73082 scnprintf +EXPORT_SYMBOL vmlinux 0xf9eb6416 pci_bus_set_ops +EXPORT_SYMBOL vmlinux 0xf9f7a4a1 nla_append +EXPORT_SYMBOL vmlinux 0xf9fc6583 km_policy_expired +EXPORT_SYMBOL vmlinux 0xfa4748d5 iov_iter_kvec +EXPORT_SYMBOL vmlinux 0xfa599bb2 netlink_register_notifier +EXPORT_SYMBOL vmlinux 0xfa692cb8 param_set_long +EXPORT_SYMBOL vmlinux 0xfa74881e generic_error_remove_page +EXPORT_SYMBOL vmlinux 0xfa90640b dma_alloc_from_coherent +EXPORT_SYMBOL vmlinux 0xfac8865f sysctl_wmem_max +EXPORT_SYMBOL vmlinux 0xfacd8e72 vme_dma_vme_attribute +EXPORT_SYMBOL vmlinux 0xfaced743 gen_pool_set_algo +EXPORT_SYMBOL vmlinux 0xfae67b1f cap_mmap_addr +EXPORT_SYMBOL vmlinux 0xfb0443fb acpi_get_parent +EXPORT_SYMBOL vmlinux 0xfb316859 qdisc_watchdog_init +EXPORT_SYMBOL vmlinux 0xfb3cb712 inet_csk_reqsk_queue_drop +EXPORT_SYMBOL vmlinux 0xfb672c2e xfrm_prepare_input +EXPORT_SYMBOL vmlinux 0xfb6af58d recalc_sigpending +EXPORT_SYMBOL vmlinux 0xfb80c7a0 acpi_walk_namespace +EXPORT_SYMBOL vmlinux 0xfb8b39bf blk_queue_dma_pad +EXPORT_SYMBOL vmlinux 0xfb94103e __clzdi2 +EXPORT_SYMBOL vmlinux 0xfb9d6c9a filp_close +EXPORT_SYMBOL vmlinux 0xfba0a81f inet_add_protocol +EXPORT_SYMBOL vmlinux 0xfbaaf01e console_lock +EXPORT_SYMBOL vmlinux 0xfbbde81f vfs_rmdir +EXPORT_SYMBOL vmlinux 0xfbc3dc1a unlock_page +EXPORT_SYMBOL vmlinux 0xfbc4f89e io_schedule_timeout +EXPORT_SYMBOL vmlinux 0xfbc6ada4 search_binary_handler +EXPORT_SYMBOL vmlinux 0xfbc6e5ab pcix_set_mmrbc +EXPORT_SYMBOL vmlinux 0xfbca8ff6 mmc_set_data_timeout +EXPORT_SYMBOL vmlinux 0xfbd71298 lockref_get_not_dead +EXPORT_SYMBOL vmlinux 0xfbee1faf skb_realloc_headroom +EXPORT_SYMBOL vmlinux 0xfbf97794 tcp_v4_conn_request +EXPORT_SYMBOL vmlinux 0xfbf9e5f0 __vlan_find_dev_deep_rcu +EXPORT_SYMBOL vmlinux 0xfc02b7ad sysctl_tcp_wmem +EXPORT_SYMBOL vmlinux 0xfc1b7332 dcb_getapp +EXPORT_SYMBOL vmlinux 0xfc23c060 abort_creds +EXPORT_SYMBOL vmlinux 0xfc34fc66 skb_seq_read +EXPORT_SYMBOL vmlinux 0xfc39e32f ioport_unmap +EXPORT_SYMBOL vmlinux 0xfc562165 acpi_run_osc +EXPORT_SYMBOL vmlinux 0xfc65459a kstrtoull_from_user +EXPORT_SYMBOL vmlinux 0xfc872fd1 get_ibs_caps +EXPORT_SYMBOL vmlinux 0xfc9752b1 __i2c_transfer +EXPORT_SYMBOL vmlinux 0xfcac0d40 acpi_install_interface_handler +EXPORT_SYMBOL vmlinux 0xfcbea1e7 pci_choose_state +EXPORT_SYMBOL vmlinux 0xfcc2a43c utf32_to_utf8 +EXPORT_SYMBOL vmlinux 0xfce3ffe6 blk_make_request +EXPORT_SYMBOL vmlinux 0xfcec0987 enable_irq +EXPORT_SYMBOL vmlinux 0xfcecea15 scsi_remove_host +EXPORT_SYMBOL vmlinux 0xfcfa03ff fb_videomode_to_modelist +EXPORT_SYMBOL vmlinux 0xfd0433f2 kset_register +EXPORT_SYMBOL vmlinux 0xfd0b44ae request_firmware_nowait +EXPORT_SYMBOL vmlinux 0xfd0cc67f call_usermodehelper_setup +EXPORT_SYMBOL vmlinux 0xfd13e05d ilookup5_nowait +EXPORT_SYMBOL vmlinux 0xfd28b3d3 xfrm_garbage_collect +EXPORT_SYMBOL vmlinux 0xfd33b5fa cmdline_parts_find +EXPORT_SYMBOL vmlinux 0xfd42a16a serio_rescan +EXPORT_SYMBOL vmlinux 0xfd4f3bef unregister_cdrom +EXPORT_SYMBOL vmlinux 0xfd571734 pci_bus_find_capability +EXPORT_SYMBOL vmlinux 0xfd6aadb1 dma_sync_wait +EXPORT_SYMBOL vmlinux 0xfd6e0aa9 clear_page_dirty_for_io +EXPORT_SYMBOL vmlinux 0xfd99623a ip_frag_ecn_table +EXPORT_SYMBOL vmlinux 0xfd9c646e put_page +EXPORT_SYMBOL vmlinux 0xfdb9b629 ioread32be +EXPORT_SYMBOL vmlinux 0xfdbbbc05 kernel_setsockopt +EXPORT_SYMBOL vmlinux 0xfdbe0288 pci_add_resource_offset +EXPORT_SYMBOL vmlinux 0xfdc26106 acpi_pm_device_sleep_state +EXPORT_SYMBOL vmlinux 0xfde1777a block_page_mkwrite +EXPORT_SYMBOL vmlinux 0xfde225f2 sock_no_ioctl +EXPORT_SYMBOL vmlinux 0xfdfc0b3b fiemap_fill_next_extent +EXPORT_SYMBOL vmlinux 0xfdfd6c90 add_wait_queue_exclusive +EXPORT_SYMBOL vmlinux 0xfdff526d dquot_scan_active +EXPORT_SYMBOL vmlinux 0xfe029963 unregister_inetaddr_notifier +EXPORT_SYMBOL vmlinux 0xfe047ce6 acpi_enter_sleep_state +EXPORT_SYMBOL vmlinux 0xfe0bfebe blk_mq_free_tag_set +EXPORT_SYMBOL vmlinux 0xfe0c03c0 security_path_chown +EXPORT_SYMBOL vmlinux 0xfe13c522 acpi_install_gpe_raw_handler +EXPORT_SYMBOL vmlinux 0xfe2aac98 cont_write_begin +EXPORT_SYMBOL vmlinux 0xfe2db722 bdevname +EXPORT_SYMBOL vmlinux 0xfe3fa34a iw_handler_set_spy +EXPORT_SYMBOL vmlinux 0xfe443a7d serial8250_do_pm +EXPORT_SYMBOL vmlinux 0xfe56bec6 nf_reinject +EXPORT_SYMBOL vmlinux 0xfe5d4bb2 sys_tz +EXPORT_SYMBOL vmlinux 0xfe64f039 eth_prepare_mac_addr_change +EXPORT_SYMBOL vmlinux 0xfe7c4287 nr_cpu_ids +EXPORT_SYMBOL vmlinux 0xfe80875a udplite_prot +EXPORT_SYMBOL vmlinux 0xfe9ebbbb acpi_osi_is_win8 +EXPORT_SYMBOL vmlinux 0xfec64561 xfrm_find_acq +EXPORT_SYMBOL vmlinux 0xfeca7590 radix_tree_range_tag_if_tagged +EXPORT_SYMBOL vmlinux 0xfedcdb60 seq_hlist_next_percpu +EXPORT_SYMBOL vmlinux 0xfee11052 inet_frag_maybe_warn_overflow +EXPORT_SYMBOL vmlinux 0xfef2c78f idr_get_next +EXPORT_SYMBOL vmlinux 0xfef37dd5 pci_set_master +EXPORT_SYMBOL vmlinux 0xfef40af7 __dev_remove_pack +EXPORT_SYMBOL vmlinux 0xff0fab71 tcf_hash_cleanup +EXPORT_SYMBOL vmlinux 0xff1e9dd8 seq_list_start +EXPORT_SYMBOL vmlinux 0xff39b800 kill_litter_super +EXPORT_SYMBOL vmlinux 0xff3c1a25 padata_do_parallel +EXPORT_SYMBOL vmlinux 0xff433e06 blk_integrity_is_initialized +EXPORT_SYMBOL vmlinux 0xff447220 nla_reserve +EXPORT_SYMBOL vmlinux 0xff4787dc udp_lib_unhash +EXPORT_SYMBOL vmlinux 0xff480992 dump_fpu +EXPORT_SYMBOL vmlinux 0xff577e9e seq_lseek +EXPORT_SYMBOL vmlinux 0xff5ee131 skb_mac_gso_segment +EXPORT_SYMBOL vmlinux 0xff6774ac ps2_begin_command +EXPORT_SYMBOL vmlinux 0xff6878cf fb_default_cmap +EXPORT_SYMBOL vmlinux 0xff7559e4 ioport_resource +EXPORT_SYMBOL vmlinux 0xff805027 open_exec +EXPORT_SYMBOL vmlinux 0xff9ca065 fb_edid_to_monspecs +EXPORT_SYMBOL vmlinux 0xffc3af0e dm_get_device +EXPORT_SYMBOL vmlinux 0xffd07348 tcp_rcv_state_process +EXPORT_SYMBOL vmlinux 0xffd5a395 default_wake_function +EXPORT_SYMBOL vmlinux 0xffffd96d vfs_getxattr_alloc +EXPORT_SYMBOL_GPL arch/x86/crypto/aes-i586 0x7060bf0a crypto_aes_encrypt_x86 +EXPORT_SYMBOL_GPL arch/x86/crypto/aes-i586 0xe409b491 crypto_aes_decrypt_x86 +EXPORT_SYMBOL_GPL arch/x86/crypto/glue_helper 0x2193178b glue_ecb_crypt_128bit +EXPORT_SYMBOL_GPL arch/x86/crypto/glue_helper 0x40d5c54e glue_ctr_crypt_128bit +EXPORT_SYMBOL_GPL arch/x86/crypto/glue_helper 0x6d236c5c glue_xts_crypt_128bit +EXPORT_SYMBOL_GPL arch/x86/crypto/glue_helper 0x8f02ac4d glue_xts_crypt_128bit_one +EXPORT_SYMBOL_GPL arch/x86/crypto/glue_helper 0xc87fe7a7 glue_cbc_encrypt_128bit +EXPORT_SYMBOL_GPL arch/x86/crypto/glue_helper 0xd2c7081c glue_cbc_decrypt_128bit +EXPORT_SYMBOL_GPL arch/x86/crypto/twofish-i586 0x28afd262 twofish_enc_blk +EXPORT_SYMBOL_GPL arch/x86/crypto/twofish-i586 0x6f068d90 twofish_dec_blk +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x008d1c4a kvm_emulate_hypercall +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x00aaf935 kvm_disable_tdp +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x012373a5 kvm_cpuid +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x0315c3c3 kvm_mmu_unprotect_page +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x05247c9c kvm_is_linear_rip +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x090890c5 kvm_set_cr4 +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x0c485643 kvm_gfn_to_hva_cache_init +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x0cd68406 kvm_read_guest_page_mmu +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x0d389398 kvm_set_xcr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x0d98a174 kvm_vcpu_write_guest_page +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x0f8cafe9 kvm_mmu_load +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x143ed66e kvm_mtrr_get_guest_memory_type +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x14df990a kvm_emulate_wbinvd +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x18e257ab __tracepoint_kvm_nested_vmexit +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x1a4342a5 __tracepoint_kvm_invlpga +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x1af75462 kvm_valid_efer +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x1bccc3a0 kvm_rdpmc +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x1bdbabc6 kvm_set_dr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x1d0f5f8c kvm_release_page_dirty +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x1d190423 kvm_mmu_slot_leaf_clear_dirty +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x1e888342 kvm_mmu_reset_context +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x1f050891 kvm_vcpu_read_guest +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x20de5193 kvm_disable_largepages +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x20f5658c kvm_get_linear_rip +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x2385dc0f kvm_vcpu_reload_apic_access_page +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x23922996 kvm_vcpu_read_guest_page +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x2433d6fd __tracepoint_kvm_exit +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x245fb2c7 kvm_requeue_exception_e +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x246000ff kvm_mmu_sync_roots +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x249e5328 handle_mmio_page_fault_common +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x253a85b7 kvm_queue_exception_e +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x27046576 kvm_exit +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x2966497d kvm_before_handle_nmi +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x2a221048 kvm_set_cr0 +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x2aa3763d kvm_queue_exception +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x2c78b8d4 __gfn_to_pfn_memslot +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x2f636c31 kvm_spurious_fault +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x30880574 load_pdptrs +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x3157eb6c kvm_require_cpl +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x317f9e6b kvm_enable_efer_bits +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x33393fd6 __tracepoint_kvm_ple_window +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x34920482 kvm_mmu_get_spte_hierarchy +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x359c9cab kvm_mmu_unprotect_page_virt +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x35a7bf71 __kvm_set_memory_region +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x37a11af2 kvm_read_guest_atomic +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x3bd1ec1b kvm_write_guest_virt_system +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x3cb3a761 kvm_vcpu_yield_to +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x3e1f72e0 kvm_vcpu_cache +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x3ee59a92 __tracepoint_kvm_skinit +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x4213d955 kvm_requeue_exception +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x421ece42 kvm_set_msr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x4229cb60 gfn_to_page_many_atomic +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x42aec6a7 kvm_vcpu_uninit +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x43238ae0 kvm_get_dirty_log +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x45512ee1 kvm_init +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x460a4b49 kvm_arch_start_assignment +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x482f8881 kvm_cpu_get_interrupt +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x485cd7f6 kvm_rebooting +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x4de3b53a kvm_require_dr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x4fec007d kvm_inject_realmode_interrupt +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x4feede60 kvm_inject_nmi +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x518ec962 kvm_vcpu_gfn_to_pfn_atomic +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x5198fb92 kvm_lapic_set_eoi +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x51ec281a kvm_vcpu_on_spin +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x5206aa99 kvm_clear_guest +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x54449541 kvm_vcpu_init +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x561bd505 kvm_init_shadow_mmu +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x56ac04c5 kvm_clear_guest_page +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x57597bcb kvm_vcpu_write_guest +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x5b069282 kvm_debugfs_dir +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x5f75e726 kvm_inject_pending_timer_irqs +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x6268fb23 kvm_x86_ops +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x64020e10 kvm_set_shared_msr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x669da1fd kvm_set_pfn_dirty +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x66cd5935 kvm_arch_has_assigned_device +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x6861ffe2 kvm_mmu_clear_dirty_pt_masked +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x6c771152 kvm_set_cr8 +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x6cad8165 kvm_irq_has_notifier +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x6f5b3bf8 __x86_set_memory_region +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x723d6430 kvm_vcpu_read_guest_atomic +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x7328442d kvm_get_dr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x748ca3f2 kvm_arch_has_noncoherent_dma +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x74cd1851 gfn_to_pfn_prot +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x751acee8 kvm_mmu_invlpg +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x75b692a3 kvm_put_kvm +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x792b1e42 mark_page_dirty +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x7a763fd3 reprogram_fixed_counter +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x7aa64803 kvm_release_pfn_clean +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x7d82ad76 cpuid_query_maxphyaddr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x7fa89be8 kvm_vcpu_block +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x8069bba9 kvm_after_handle_nmi +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x81fe41e6 kvm_fast_pio_out +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x831327da kvm_max_guest_tsc_khz +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x835656bb x86_set_memory_region +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x8428367f kvm_mmu_unload +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x84ceb28c __tracepoint_kvm_msr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x85794d9b gfn_to_memslot +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x85d190fa kvm_flush_remote_tlbs +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x87ad5299 kvm_emulate_cpuid +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x8bb03e6e __tracepoint_kvm_write_tsc_offset +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x8c986539 kvm_write_guest +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x8ce4f3ab kvm_enable_tdp +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x8da01274 kvm_get_pfn +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x8e0aa29f kvm_apic_update_irr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x8e1cd06f kvm_set_pfn_accessed +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x8f4d5365 kvm_read_guest_cached +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x91030019 kvm_init_shadow_ept_mmu +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x92efc5cc kvm_arch_unregister_noncoherent_dma +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x96c47344 kvm_get_apic_base +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x9a216313 kvm_define_shared_msr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x9a4ec94f kvm_get_msr_common +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x9b1b8bad kvm_mtrr_valid +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x9cc2780f kvm_apic_set_eoi_accelerated +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x9d47715e kvm_read_guest_page +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xa0ddc91d kvm_is_visible_gfn +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xa0ec3a0a gfn_to_hva_memslot +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xa17f9e2f kvm_task_switch +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xa819329d kvm_set_cr3 +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xaa3f1a07 kvm_get_msr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xaac7c868 __tracepoint_kvm_nested_intr_vmexit +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xacb2a99e kvm_vcpu_halt +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xacf7f97c gfn_to_pfn_memslot_atomic +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xad13efb0 kvm_mmu_slot_set_dirty +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xaf335591 kvm_set_rflags +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xb284eed4 __tracepoint_kvm_nested_vmexit_inject +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xb2a65cca __tracepoint_kvm_page_fault +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xb45902bb kvm_arch_register_noncoherent_dma +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xb4d609d5 kvm_write_tsc +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xb5b48ed7 gfn_to_pfn_atomic +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xb7f70efe kvm_get_cs_db_l_bits +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xba9ed435 kvm_mmu_set_mmio_spte_mask +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xbc2b538e __tracepoint_kvm_nested_vmrun +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xbda90838 kvm_read_guest +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xbef2c793 kvm_get_cr8 +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xbf05ab76 __tracepoint_kvm_inj_virq +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xc0e945e0 reprogram_counter +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xc1c2f046 __tracepoint_kvm_pml_full +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xc262a2e1 kvm_set_memory_region +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xc4d849ce kvm_arch_end_assignment +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xc56d75ce __kvm_apic_update_irr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xc9cc4efa kvm_vcpu_gfn_to_pfn +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xcb67ce10 __tracepoint_kvm_nested_intercepts +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xcf1da298 x86_emulate_instruction +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xd0459e67 kvm_has_tsc_control +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xd0b2727a kvm_mmu_set_mask_ptes +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xd239ff79 kvm_release_page_clean +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xd2c20e3e kvm_cpu_has_interrupt +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xd35a73e4 kvm_get_dirty_log_protect +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xd443ec0b kvm_set_apic_base +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xd6f2d511 kvm_vcpu_gfn_to_page +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xd797e3c7 gfn_to_pfn +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xd8389a51 kvm_lmsw +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xd920e0fa kvm_read_guest_virt +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xd939b9e6 kvm_emulate_halt +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xd93bbd46 gfn_to_pfn_memslot +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xdb35f2fc kvm_write_guest_cached +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xde0b04fb kvm_mmu_page_fault +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xe457434e gfn_to_page +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xe92dddd6 kvm_find_cpuid_entry +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xe9318ed5 kvm_apic_write_nodecode +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xe9790e86 __tracepoint_kvm_cr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xe9796da2 kvm_get_rflags +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xeab8a2cb kvm_set_msr_common +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xebf1ea22 reprogram_gp_counter +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xeeea55d3 kvm_io_bus_write +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xef41d4da kvm_vcpu_gfn_to_hva +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xefd355b5 kvm_get_kvm +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xf08b9095 kvm_vcpu_mark_page_dirty +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xf474ff69 kvm_inject_page_fault +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xf5e4449c kvm_write_guest_page +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xf8243342 kvm_mmu_slot_largepage_remove_write_access +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xfab27085 kvm_vcpu_kick +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xfc812e59 gfn_to_hva +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xff31f5f0 kvm_complete_insn_gp +EXPORT_SYMBOL_GPL crypto/ablk_helper 0x30d1185c ablk_exit +EXPORT_SYMBOL_GPL crypto/ablk_helper 0x5b405907 ablk_decrypt +EXPORT_SYMBOL_GPL crypto/ablk_helper 0x934513ad ablk_init +EXPORT_SYMBOL_GPL crypto/ablk_helper 0x9473a5c9 ablk_init_common +EXPORT_SYMBOL_GPL crypto/ablk_helper 0x9a23abe5 __ablk_encrypt +EXPORT_SYMBOL_GPL crypto/ablk_helper 0x9fd2b8b2 ablk_set_key +EXPORT_SYMBOL_GPL crypto/ablk_helper 0xef32ffcc ablk_encrypt +EXPORT_SYMBOL_GPL crypto/af_alg 0x09bd63c8 af_alg_make_sg +EXPORT_SYMBOL_GPL crypto/af_alg 0x11badcb8 af_alg_wait_for_completion +EXPORT_SYMBOL_GPL crypto/af_alg 0x2d36c743 af_alg_unregister_type +EXPORT_SYMBOL_GPL crypto/af_alg 0x2fc7aea7 af_alg_register_type +EXPORT_SYMBOL_GPL crypto/af_alg 0x38d48545 af_alg_link_sg +EXPORT_SYMBOL_GPL crypto/af_alg 0x429940c6 af_alg_accept +EXPORT_SYMBOL_GPL crypto/af_alg 0x912b6a2e af_alg_release +EXPORT_SYMBOL_GPL crypto/af_alg 0xa0dc621b af_alg_complete +EXPORT_SYMBOL_GPL crypto/af_alg 0xbcae824c af_alg_cmsg_send +EXPORT_SYMBOL_GPL crypto/af_alg 0xd3c980e4 af_alg_free_sg +EXPORT_SYMBOL_GPL crypto/asymmetric_keys/pkcs7_message 0x0c495886 pkcs7_get_content_data +EXPORT_SYMBOL_GPL crypto/asymmetric_keys/pkcs7_message 0x44e8d9ac pkcs7_free_message +EXPORT_SYMBOL_GPL crypto/asymmetric_keys/pkcs7_message 0x4cc33646 pkcs7_parse_message +EXPORT_SYMBOL_GPL crypto/asymmetric_keys/pkcs7_message 0x883bd89d pkcs7_verify +EXPORT_SYMBOL_GPL crypto/asymmetric_keys/pkcs7_message 0xe580c159 pkcs7_validate_trust +EXPORT_SYMBOL_GPL crypto/async_tx/async_memcpy 0x2ff08d28 async_memcpy +EXPORT_SYMBOL_GPL crypto/async_tx/async_pq 0x24e41bc8 async_gen_syndrome +EXPORT_SYMBOL_GPL crypto/async_tx/async_pq 0xca21052b async_syndrome_val +EXPORT_SYMBOL_GPL crypto/async_tx/async_raid6_recov 0x02b3c3ef async_raid6_datap_recov +EXPORT_SYMBOL_GPL crypto/async_tx/async_raid6_recov 0x8f262896 async_raid6_2data_recov +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0x26dbe1f1 async_trigger_callback +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0xaec2675f async_tx_quiesce +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0xe292eba3 async_tx_submit +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0xed3be70a __async_tx_find_channel +EXPORT_SYMBOL_GPL crypto/async_tx/async_xor 0x02081f66 async_xor +EXPORT_SYMBOL_GPL crypto/async_tx/async_xor 0xc543f336 async_xor_val +EXPORT_SYMBOL_GPL crypto/authenc 0x587ef278 crypto_authenc_extractkeys +EXPORT_SYMBOL_GPL crypto/blowfish_common 0x9a2b5812 blowfish_setkey +EXPORT_SYMBOL_GPL crypto/cast5_generic 0x1324ff55 cast5_setkey +EXPORT_SYMBOL_GPL crypto/cast5_generic 0x27278ca9 __cast5_encrypt +EXPORT_SYMBOL_GPL crypto/cast5_generic 0x4a2a3ca6 __cast5_decrypt +EXPORT_SYMBOL_GPL crypto/cast6_generic 0x1291971c __cast6_setkey +EXPORT_SYMBOL_GPL crypto/cast6_generic 0x1e2c961f __cast6_decrypt +EXPORT_SYMBOL_GPL crypto/cast6_generic 0x8f04034a __cast6_encrypt +EXPORT_SYMBOL_GPL crypto/cast6_generic 0x8fd58dcf cast6_setkey +EXPORT_SYMBOL_GPL crypto/cast_common 0x08aa6fb7 cast_s1 +EXPORT_SYMBOL_GPL crypto/cast_common 0x0c5fbf8a cast_s3 +EXPORT_SYMBOL_GPL crypto/cast_common 0xe39dd4b4 cast_s2 +EXPORT_SYMBOL_GPL crypto/cast_common 0xee83a4f3 cast_s4 +EXPORT_SYMBOL_GPL crypto/cryptd 0x03dbee1a cryptd_alloc_aead +EXPORT_SYMBOL_GPL crypto/cryptd 0x2fcd0e06 cryptd_free_aead +EXPORT_SYMBOL_GPL crypto/cryptd 0x4be3615f cryptd_free_ablkcipher +EXPORT_SYMBOL_GPL crypto/cryptd 0x4d521d49 cryptd_ahash_child +EXPORT_SYMBOL_GPL crypto/cryptd 0x78074073 cryptd_alloc_ahash +EXPORT_SYMBOL_GPL crypto/cryptd 0x8436b8a7 cryptd_shash_desc +EXPORT_SYMBOL_GPL crypto/cryptd 0xa416093b cryptd_alloc_ablkcipher +EXPORT_SYMBOL_GPL crypto/cryptd 0xa9ca6348 cryptd_free_ahash +EXPORT_SYMBOL_GPL crypto/cryptd 0xb92a02bc cryptd_ablkcipher_child +EXPORT_SYMBOL_GPL crypto/cryptd 0xeee09cb1 cryptd_aead_child +EXPORT_SYMBOL_GPL crypto/crypto_null 0x21cd536a crypto_put_default_null_skcipher +EXPORT_SYMBOL_GPL crypto/crypto_null 0xcb145953 crypto_get_default_null_skcipher +EXPORT_SYMBOL_GPL crypto/des_generic 0xcfd9a2c0 des_ekey +EXPORT_SYMBOL_GPL crypto/des_generic 0xf8c78d49 __des3_ede_setkey +EXPORT_SYMBOL_GPL crypto/lrw 0x3864eb66 lrw_free_table +EXPORT_SYMBOL_GPL crypto/lrw 0xad041cc7 lrw_crypt +EXPORT_SYMBOL_GPL crypto/lrw 0xcd074900 lrw_init_table +EXPORT_SYMBOL_GPL crypto/mcryptd 0x096f3ec8 mcryptd_free_ahash +EXPORT_SYMBOL_GPL crypto/mcryptd 0x14bdd4d3 mcryptd_flusher +EXPORT_SYMBOL_GPL crypto/mcryptd 0x4587d86d mcryptd_shash_desc +EXPORT_SYMBOL_GPL crypto/mcryptd 0x5de46550 mcryptd_alloc_ahash +EXPORT_SYMBOL_GPL crypto/mcryptd 0x71037100 shash_ahash_mcryptd_finup +EXPORT_SYMBOL_GPL crypto/mcryptd 0x7777f9fc shash_ahash_mcryptd_digest +EXPORT_SYMBOL_GPL crypto/mcryptd 0x9d74e403 mcryptd_ahash_child +EXPORT_SYMBOL_GPL crypto/mcryptd 0xa7b69250 shash_ahash_mcryptd_final +EXPORT_SYMBOL_GPL crypto/mcryptd 0xe5622455 shash_ahash_mcryptd_update +EXPORT_SYMBOL_GPL crypto/rsa_generic 0xadc25bd8 rsa_parse_key +EXPORT_SYMBOL_GPL crypto/rsa_generic 0xf1b141d1 rsa_free_key +EXPORT_SYMBOL_GPL crypto/serpent_generic 0x5ddb33e9 __serpent_encrypt +EXPORT_SYMBOL_GPL crypto/serpent_generic 0x77b39cb4 __serpent_setkey +EXPORT_SYMBOL_GPL crypto/serpent_generic 0x8a1a99ad __serpent_decrypt +EXPORT_SYMBOL_GPL crypto/serpent_generic 0xbc357ecd serpent_setkey +EXPORT_SYMBOL_GPL crypto/twofish_common 0x6c3229bb __twofish_setkey +EXPORT_SYMBOL_GPL crypto/twofish_common 0x8bcc18ec twofish_setkey +EXPORT_SYMBOL_GPL crypto/xts 0x1a854c7a xts_crypt +EXPORT_SYMBOL_GPL drivers/acpi/nfit 0x62741a00 acpi_nfit_attribute_groups +EXPORT_SYMBOL_GPL drivers/acpi/nfit 0xa069ff5f acpi_nfit_init +EXPORT_SYMBOL_GPL drivers/acpi/sbshc 0x1c8984c7 acpi_smbus_unregister_callback +EXPORT_SYMBOL_GPL drivers/acpi/sbshc 0x87bd07bd acpi_smbus_register_callback +EXPORT_SYMBOL_GPL drivers/acpi/sbshc 0xb9a141b0 acpi_smbus_read +EXPORT_SYMBOL_GPL drivers/acpi/sbshc 0xe1372311 acpi_smbus_write +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x0cf63cdf ahci_check_ready +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x0e1e1385 ahci_sdev_attrs +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x0e38a2ee ahci_start_fis_rx +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x16c36fed ahci_dev_classify +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x1c0beb67 ahci_start_engine +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x2468639c ahci_reset_controller +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x30d78ebe ahci_fill_cmd_slot +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x32e34144 ahci_shost_attrs +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x3fc0a330 ahci_error_handler +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x402929f8 ahci_do_softreset +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x650208e9 ahci_ops +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x67c712b3 ahci_set_em_messages +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x8a6e78ab ahci_stop_engine +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x8ba854ac ahci_em_messages +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x9804673b ahci_port_resume +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x9d1f6186 ahci_init_controller +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x9f7b54cd ahci_save_initial_config +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xa2661878 ahci_host_activate +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xc024a3e8 ahci_pmp_retry_srst_ops +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xc4ff6e16 ahci_print_info +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xcfd4c8a9 ahci_qc_issue +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xe276d179 ahci_kick_engine +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xe7ff45d0 ahci_reset_em +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xea50dad3 ahci_ignore_sss +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x067ea84a ahci_platform_ops +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x10a4c9cd ahci_platform_enable_clks +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x1174bedf ahci_platform_disable_regulators +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x329a74c2 ahci_platform_get_resources +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x369ee860 ahci_platform_init_host +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x50dcbf66 ahci_platform_resume_host +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x7b12f887 ahci_platform_resume +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x84049b76 ahci_platform_suspend_host +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x918e3d0e ahci_platform_enable_resources +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x9a1a6d9c ahci_platform_suspend +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0xae862a6a ahci_platform_disable_clks +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0xbfe29629 ahci_platform_enable_regulators +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0xd6cc81e6 ahci_platform_disable_resources +EXPORT_SYMBOL_GPL drivers/ata/pata_platform 0x328098e3 __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/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-spmi 0x0f04160d devm_regmap_init_spmi_ext +EXPORT_SYMBOL_GPL drivers/base/regmap/regmap-spmi 0x21e34e77 devm_regmap_init_spmi_base +EXPORT_SYMBOL_GPL drivers/base/regmap/regmap-spmi 0x6ce1dd14 regmap_init_spmi_base +EXPORT_SYMBOL_GPL drivers/base/regmap/regmap-spmi 0xbff62d6d regmap_init_spmi_ext +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x00ce9298 bcma_chipco_gpio_out +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x00df3cf4 bcma_core_set_clockmode +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x2096c2a3 bcma_core_pll_ctl +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x258e6c06 bcma_chipco_pll_read +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x308c7987 bcma_chipco_gpio_outen +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x349befff bcma_chipco_regctl_maskset +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x5225589d bcma_find_core_unit +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x5ec42268 bcma_core_pci_power_save +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x63be5f5d bcma_core_is_enabled +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x82355d31 bcma_chipco_gpio_control +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x87e34b4b bcma_chipco_pll_write +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x88fc96dc bcma_chipco_chipctl_maskset +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x936544bf bcma_host_pci_down +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x937fb1da bcma_pmu_spuravoid_pllupdate +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xa8e1ebca bcma_chipco_b_mii_write +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xa8ea0022 bcma_chipco_get_alp_clock +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xb6275495 bcma_host_pci_irq_ctl +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xcb7e1150 bcma_core_disable +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xda6c086b bcma_host_pci_up +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xdcf0e2bd __bcma_driver_register +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xe9d3e20b bcma_core_enable +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xf014d446 bcma_chipco_pll_maskset +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xfb03206a bcma_pmu_get_bus_clock +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xfdf9e99b bcma_driver_unregister +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0x1d6feae3 btbcm_setup_patchram +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0x231488e6 btbcm_set_bdaddr +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0x2c16a3da btbcm_initialize +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0x85bdfc59 btbcm_finalize +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0x8717528c btbcm_setup_apple +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0xa249a3c5 btbcm_check_bdaddr +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0x6c5a6b48 btintel_check_bdaddr +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0xd6f8dcf8 btintel_set_bdaddr +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x0e00f5eb btmrvl_enable_hs +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x6010a772 btmrvl_pscan_window_reporting +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x651649ec btmrvl_send_hscfg_cmd +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x6eefdcc0 btmrvl_register_hdev +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x80305a9e btmrvl_send_module_cfg_cmd +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x835ed29f btmrvl_enable_ps +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x8d38f1e2 btmrvl_remove_card +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xc6842614 btmrvl_check_evtpkt +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xd3474885 btmrvl_process_event +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xe6ea8217 btmrvl_interrupt +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xed48240f btmrvl_add_card +EXPORT_SYMBOL_GPL drivers/bluetooth/btrtl 0x48dbaf8e btrtl_setup_realtek +EXPORT_SYMBOL_GPL drivers/char/scx200_gpio 0xf87dafaa scx200_gpio_ops +EXPORT_SYMBOL_GPL drivers/crypto/ccp/ccp 0x04773b60 ccp_present +EXPORT_SYMBOL_GPL drivers/crypto/ccp/ccp 0xdfb59861 ccp_enqueue_cmd +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0x04cbcb48 adf_service_register +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0x0bb6ff46 adf_dev_init +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0x28c1fbe1 adf_dev_shutdown +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0x3bc6d230 adf_devmgr_add_dev +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0x4c12ea06 adf_response_handler +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0x70ace672 adf_devmgr_rm_dev +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0x749349d0 adf_cfg_dev_add +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0x74ad36fd adf_dev_stop +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0x964498ec adf_init_etr_data +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0xa2ccaa1b adf_cfg_dev_remove +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0xaed75f0e adf_cleanup_etr_data +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0xb1d445ef adf_service_unregister +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0xc283c798 adf_cfg_section_add +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0xd5713f81 adf_dev_start +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0xe095597c adf_cfg_add_key_value_param +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0xe10b6c43 adf_disable_aer +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0xeec0d89f adf_devmgr_pci_to_accel_dev +EXPORT_SYMBOL_GPL drivers/crypto/qat/qat_common/intel_qat 0xf9aeaae9 adf_enable_aer +EXPORT_SYMBOL_GPL drivers/dca/dca 0x00211873 register_dca_provider +EXPORT_SYMBOL_GPL drivers/dca/dca 0x01a33ab9 dca_unregister_notify +EXPORT_SYMBOL_GPL drivers/dca/dca 0x0e2d423b dca3_get_tag +EXPORT_SYMBOL_GPL drivers/dca/dca 0x2248ec7b free_dca_provider +EXPORT_SYMBOL_GPL drivers/dca/dca 0x31a2c8df dca_get_tag +EXPORT_SYMBOL_GPL drivers/dca/dca 0x32fe7abd dca_add_requester +EXPORT_SYMBOL_GPL drivers/dca/dca 0xac34ecec dca_register_notify +EXPORT_SYMBOL_GPL drivers/dca/dca 0xb92aa862 unregister_dca_provider +EXPORT_SYMBOL_GPL drivers/dca/dca 0xc16d4e49 dca_remove_requester +EXPORT_SYMBOL_GPL drivers/dca/dca 0xd2549cd7 alloc_dca_provider +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0x15302352 dw_dma_disable +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0x6c68327d dw_dma_filter +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0x761508b6 dw_dma_enable +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0xce9f0bf3 dw_dma_remove +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0xd094c0f5 dw_dma_probe +EXPORT_SYMBOL_GPL drivers/dma/hsu/hsu_dma 0x1fa195af hsu_dma_remove +EXPORT_SYMBOL_GPL drivers/dma/hsu/hsu_dma 0x5e7a18f0 hsu_dma_probe +EXPORT_SYMBOL_GPL drivers/dma/hsu/hsu_dma 0x698dea07 hsu_dma_irq +EXPORT_SYMBOL_GPL drivers/dma/virt-dma 0x1bb27253 vchan_dma_desc_free_list +EXPORT_SYMBOL_GPL drivers/dma/virt-dma 0xa90d8009 vchan_init +EXPORT_SYMBOL_GPL drivers/dma/virt-dma 0xee6758ad vchan_tx_submit +EXPORT_SYMBOL_GPL drivers/dma/virt-dma 0xf7cf63b0 vchan_find_desc +EXPORT_SYMBOL_GPL drivers/edac/amd64_edac_mod 0x5747a525 amd64_get_dram_hole_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x09f6f956 edac_pci_del_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x0aac1065 edac_device_alloc_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x0c32ff8a edac_pci_alloc_index +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x1835f5dd edac_raw_mc_handle_error +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x1b7b2bc0 edac_pci_add_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x2c8dd6b8 edac_mem_types +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x2d3cfa65 edac_mc_handle_error +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x349bab93 find_mci_by_dev +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x45444d70 edac_mc_alloc +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x4b5d0b3d edac_pci_reset_delay_period +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x529a4886 edac_mc_del_mc +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x537a1c90 edac_pci_create_generic_ctl +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x5a625f0c edac_device_del_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x6304d57c edac_pci_alloc_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x643d2bc6 edac_device_handle_ce +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x6e3ff83a edac_device_alloc_index +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x7700dbfb edac_mc_free +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x810078c6 edac_pci_handle_npe +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x8426af5e edac_device_handle_ue +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x9168696a edac_mc_find_csrow_by_page +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x91a12a66 edac_mc_add_mc_with_groups +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xc0dcb59e edac_layer_name +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xcbd9bd80 edac_pci_free_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xe2f941df edac_device_add_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xe3812f39 edac_pci_release_generic_ctl +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xf75c3902 edac_device_free_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xfa2b9758 edac_pci_handle_pe +EXPORT_SYMBOL_GPL drivers/edac/edac_mce_amd 0x14878009 amd_report_gart_errors +EXPORT_SYMBOL_GPL drivers/edac/edac_mce_amd 0x1d34e996 pp_msgs +EXPORT_SYMBOL_GPL drivers/edac/edac_mce_amd 0x21626132 amd_register_ecc_decoder +EXPORT_SYMBOL_GPL drivers/edac/edac_mce_amd 0x737912b3 amd_unregister_ecc_decoder +EXPORT_SYMBOL_GPL drivers/edac/edac_mce_amd 0xb30b7e56 amd_decode_mce +EXPORT_SYMBOL_GPL drivers/firewire/firewire-core 0xf4ade51f fw_card_release +EXPORT_SYMBOL_GPL drivers/gpio/gpio-cs5535 0x013fbdac cs5535_gpio_set +EXPORT_SYMBOL_GPL drivers/gpio/gpio-cs5535 0x93f8fe67 cs5535_gpio_set_irq +EXPORT_SYMBOL_GPL drivers/gpio/gpio-cs5535 0xc0bb404a cs5535_gpio_setup_event +EXPORT_SYMBOL_GPL drivers/gpio/gpio-cs5535 0xd3bd9300 cs5535_gpio_isset +EXPORT_SYMBOL_GPL drivers/gpio/gpio-cs5535 0xe07c0954 cs5535_gpio_clear +EXPORT_SYMBOL_GPL drivers/gpio/gpio-generic 0x447b0f36 bgpio_remove +EXPORT_SYMBOL_GPL drivers/gpio/gpio-generic 0x99cd3706 bgpio_init +EXPORT_SYMBOL_GPL drivers/gpio/gpio-max730x 0x34a6680e __max730x_remove +EXPORT_SYMBOL_GPL drivers/gpio/gpio-max730x 0xbbf74d5c __max730x_probe +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x242d5c3d drm_class_device_unregister +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xd92b7fb4 drm_do_get_edid +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xed1ed3fc drm_class_device_register +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 0xe7237b0b i915_gpu_turbo_disable +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0x62e610c7 ttm_dma_unpopulate +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0x6adf436b ttm_prime_fd_to_handle +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0x8cf61324 ttm_dma_populate +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0xce36343e ttm_prime_handle_to_fd +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0xdace1770 ttm_dma_page_alloc_debugfs +EXPORT_SYMBOL_GPL drivers/hid/hid 0x04d75e8a hid_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x05495392 hid_debug +EXPORT_SYMBOL_GPL drivers/hid/hid 0x09667d77 hid_resolv_usage +EXPORT_SYMBOL_GPL drivers/hid/hid 0x09a67889 hidinput_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x1bdc50ee hidinput_get_led_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0x28d36868 hid_alloc_report_buf +EXPORT_SYMBOL_GPL drivers/hid/hid 0x30157cc9 hidinput_count_leds +EXPORT_SYMBOL_GPL drivers/hid/hid 0x31e476f8 hid_validate_values +EXPORT_SYMBOL_GPL drivers/hid/hid 0x35291c01 hid_parse_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x3c9d7670 __hid_register_driver +EXPORT_SYMBOL_GPL drivers/hid/hid 0x42e45500 hid_register_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x43aa8c51 hidinput_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x4906a967 hid_snto32 +EXPORT_SYMBOL_GPL drivers/hid/hid 0x4b234ae0 hid_allocate_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0x521529e6 hid_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x5b646a12 hidinput_calc_abs_res +EXPORT_SYMBOL_GPL drivers/hid/hid 0x5f2d1e70 hid_dump_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x629128a8 hid_debug_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0x6bd41386 hidraw_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x74ce1b5a hid_output_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x770067a2 hid_ignore +EXPORT_SYMBOL_GPL drivers/hid/hid 0x7bbe4468 hidraw_report_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0x7f5559a0 hid_dump_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0x8ea3649f hid_destroy_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0x966f8b82 __hid_request +EXPORT_SYMBOL_GPL drivers/hid/hid 0x977c1274 hid_unregister_driver +EXPORT_SYMBOL_GPL drivers/hid/hid 0xa1e0c4f3 hid_set_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0xa44b064f hid_input_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0xbce857ec hid_add_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0xc4efd3a1 hid_check_keys_pressed +EXPORT_SYMBOL_GPL drivers/hid/hid 0xd0f9a8d2 hid_dump_input +EXPORT_SYMBOL_GPL drivers/hid/hid 0xd2151a6d hidinput_find_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0xd4d1e19a hid_open_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0xe041ae9d hid_report_raw_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0xe472d445 hidraw_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0xeebbd7be hid_dump_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0xf24148ec hidinput_report_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0xfca9f275 hid_field_extract +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat 0x2f622ea1 roccat_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat 0x8c4181ec roccat_report_event +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat 0xbd04f365 roccat_connect +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x11ed94f4 roccat_common2_send_with_status +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x798cedfb roccat_common2_sysfs_write +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0xacdbce66 roccat_common2_receive +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0xca03bd5c roccat_common2_device_init_struct +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0xedea0c7e roccat_common2_sysfs_read +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0xf00524da roccat_common2_send +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x03785104 sensor_hub_device_open +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x447309f0 sensor_hub_input_attr_get_raw_value +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x5a967cd4 sensor_hub_get_feature +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x5cb987d6 sensor_hub_input_get_attribute_info +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x8c0d3991 sensor_hub_remove_callback +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x960e9318 hid_sensor_get_usage_index +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0xc833fcf7 sensor_hub_register_callback +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0xe14f1a09 sensor_hub_device_close +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0xf5b430a2 sensor_hub_set_feature +EXPORT_SYMBOL_GPL drivers/hid/usbhid/usbhid 0x01fd453e usbhid_lookup_quirk +EXPORT_SYMBOL_GPL drivers/hid/usbhid/usbhid 0x6a3a5319 hiddev_hid_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x31966aca hsi_async +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x3f069926 hsi_put_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x5a32b88d hsi_get_channel_id_by_name +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x5cb7df39 hsi_unregister_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x65eceb60 hsi_unregister_port_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x6d2852da hsi_port_unregister_clients +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x7285d678 hsi_alloc_msg +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x868b5a49 hsi_register_port_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xa895af2d hsi_remove_client +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xae0404d3 hsi_free_msg +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xb5c5a26d hsi_new_client +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xd29d7371 hsi_release_port +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xdb6e4a86 hsi_register_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xdbe5aab5 hsi_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xe0c19d98 hsi_register_client_driver +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xe389cff1 hsi_claim_port +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xfbb9a2f4 hsi_alloc_controller +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x1ab4b164 vmbus_establish_gpadl +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x2420d238 vmbus_driver_unregister +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x25693d97 vmbus_open +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x358fafa5 vmbus_prep_negotiate_resp +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x4342aa7e vmbus_sendpacket_mpb_desc +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x4390aa01 __vmbus_driver_register +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x46a417ca vmbus_proto_version +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x56f352f5 vmbus_are_subchannels_present +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x6b4be5f8 vmbus_teardown_gpadl +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x79b131ce vmbus_set_sc_create_callback +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x83a6e619 vmbus_close +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x8723b7a0 vmbus_recvpacket_raw +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x8d97f873 vmbus_sendpacket_pagebuffer_ctl +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0xa50d7a63 vmbus_allocate_mmio +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0xd02e1c32 vmbus_get_outgoing_channel +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0xd09ee2eb vmbus_sendpacket_pagebuffer +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0xe43e9984 vmbus_sendpacket_multipagebuffer +EXPORT_SYMBOL_GPL drivers/hwmon/adt7x10 0x664a7ceb adt7x10_dev_pm_ops +EXPORT_SYMBOL_GPL drivers/hwmon/adt7x10 0x9f83a1f5 adt7x10_probe +EXPORT_SYMBOL_GPL drivers/hwmon/adt7x10 0xf1bba58c adt7x10_remove +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x08103c78 pmbus_get_driver_info +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x0aa909ef pmbus_do_remove +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x0cdd396d pmbus_do_probe +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x4382492c pmbus_clear_cache +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x48763000 pmbus_regulator_ops +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x567ac575 pmbus_check_word_register +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x77dd3b9e pmbus_read_byte_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x7f1a145f pmbus_clear_faults +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x8f22e4e8 pmbus_read_word_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xbfd7f206 pmbus_set_page +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xc6ece446 pmbus_write_byte +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xcd753ca1 pmbus_check_byte_register +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xe1a03ec9 pmbus_write_byte_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xe8d926d5 pmbus_update_byte_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xf1f93007 pmbus_write_word_data +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x024e72f8 i2c_dw_disable_int +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x02f6ce19 i2c_dw_enable +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x0b1f6232 i2c_dw_func +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x34f15538 i2c_dw_clear_int +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x366843c0 i2c_dw_disable +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x42fc32e4 i2c_dw_init +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x55be74b0 i2c_dw_read_comp_param +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x5bb1170b i2c_dw_isr +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x82fd1d75 i2c_dw_xfer +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x90266ae4 i2c_dw_is_enabled +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-nforce2 0x99c22e77 nforce2_smbus +EXPORT_SYMBOL_GPL drivers/i2c/i2c-mux 0x57d987c8 i2c_del_mux_adapter +EXPORT_SYMBOL_GPL drivers/i2c/i2c-mux 0xda2fe841 i2c_add_mux_adapter +EXPORT_SYMBOL_GPL drivers/i2c/i2c-smbus 0x35298eec i2c_handle_smbus_alert +EXPORT_SYMBOL_GPL drivers/i2c/i2c-smbus 0xf4ccc09a i2c_setup_smbus_alert +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x3548dbbe ad_sd_setup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x636d6e0b ad_sd_calibrate_all +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x654ad3fa ad_sd_read_reg +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x7e4a22ee ad_sigma_delta_single_conversion +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x8be86439 ad_sd_set_comm +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x9b5c1f9e ad_sd_init +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xa7e3474d ad_sd_cleanup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xc3409af9 ad_sd_write_reg +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xca41e389 ad_sd_validate_trigger +EXPORT_SYMBOL_GPL drivers/iio/adc/twl4030-madc 0x4362dc66 twl4030_get_madc_conversion +EXPORT_SYMBOL_GPL drivers/iio/adc/twl4030-madc 0xb1be4a75 twl4030_madc_conversion +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x34edd6ef adis_single_conversion +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x3d5c581d adis_probe_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x64427ee7 adis_check_status +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x82f66ad3 adis_init +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x982975b0 adis_setup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xa195208e adis_cleanup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xa66cbaf7 adis_write_reg +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xa70df5a7 adis_update_scan_mode +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xae8568bf adis_remove_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xc7af53f2 adis_reset +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xcca1d40d adis_read_reg +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xce6887ac adis_initial_startup +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x059fb5fe iio_update_demux +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x0ba3f7b2 iio_channel_get_all +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x0f200dbc iio_scan_mask_query +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x13d8d13c iio_enum_available_read +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x1466c731 iio_validate_scan_mask_onehot +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x175c8617 iio_read_channel_average_raw +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x18a5e79e iio_write_channel_raw +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x267c0508 iio_channel_release_all_cb +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x26f6b499 iio_str_to_fixpoint +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x2a1fab3c iio_channel_stop_all_cb +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x31023686 devm_iio_trigger_free +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x3595f8d3 iio_read_channel_processed +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x3729c665 iio_convert_raw_to_processed +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x4294c27b iio_enum_read +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x47938d2e devm_iio_trigger_alloc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x553afb34 iio_map_array_register +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x569e3a42 iio_channel_release_all +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x74041e65 devm_iio_device_free +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x7a711aef iio_channel_start_all_cb +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x7e12acf9 iio_buffer_put +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x82e27213 iio_read_channel_scale +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x8b437144 devm_iio_device_register +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x8ce04dbe iio_map_array_unregister +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x9aa8dbb2 iio_alloc_pollfunc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x9e26af1d iio_update_buffers +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xab903e80 devm_iio_device_alloc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xb269bb40 iio_channel_cb_get_channels +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xb3abd6a8 iio_channel_get_all_cb +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xba5b2362 iio_buffer_get +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xbd2efc99 iio_channel_release +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xcf1bdb5c devm_iio_device_unregister +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xd2c1174c iio_dealloc_pollfunc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xddb33a53 iio_get_channel_type +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xe7e10a97 iio_enum_write +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xeb774623 iio_push_to_buffers +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xf42a7ef7 iio_channel_get +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xfe26c871 iio_read_channel_raw +EXPORT_SYMBOL_GPL drivers/infiniband/core/ib_core 0xdbd019c4 ib_wq +EXPORT_SYMBOL_GPL drivers/input/ff-memless 0xff6cedd8 input_ff_create_memless +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 0x721672ae adxl34x_probe +EXPORT_SYMBOL_GPL drivers/input/misc/adxl34x 0xe4586827 adxl34x_resume +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp4_core 0x328e903d cyttsp4_pm_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp4_core 0x99eacedb cyttsp4_remove +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp4_core 0xace1dbb8 cyttsp4_probe +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_core 0x7611d312 cyttsp_probe +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_core 0xa3f52074 cyttsp_remove +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_core 0xaddfe191 cyttsp_pm_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_i2c_common 0x3a73e77c cyttsp_i2c_write_block_data +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_i2c_common 0x6aec3a04 cyttsp_i2c_read_block_data +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x1bbf198f wm97xx_reg_write +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x227267f9 wm9712_codec +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x3fcc7aa3 wm9705_codec +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x7365103c wm97xx_reg_read +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x7a488496 wm97xx_set_gpio +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x7fce3561 wm97xx_get_gpio +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x8c5c346f wm97xx_read_aux_adc +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x8ca4f91c wm97xx_set_suspend_mode +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x9e3a7447 wm97xx_config_gpio +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x9fde41d9 wm97xx_register_mach_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xad4c01fe wm97xx_unregister_mach_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xeed86767 wm9713_codec +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x1ee30c6b ipack_device_init +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x7b2c3051 ipack_put_device +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x7f01f51c ipack_driver_unregister +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x83d7bf3f ipack_get_device +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0xac1ee46c ipack_device_add +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0xbced73da ipack_driver_register +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0xcf8f46f9 ipack_bus_unregister +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0xdb764fff ipack_device_del +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0xf2257ad1 ipack_bus_register +EXPORT_SYMBOL_GPL drivers/isdn/capi/kernelcapi 0x23359aff unregister_capictr_notifier +EXPORT_SYMBOL_GPL drivers/isdn/capi/kernelcapi 0xce1414b2 register_capictr_notifier +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x01ad809b gigaset_m10x_send_skb +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x0987ba8c gigaset_add_event +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x27ab0ae2 gigaset_initdriver +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x2f06dbd4 gigaset_initcs +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x37f25823 gigaset_skb_sent +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x454aa44f gigaset_debuglevel +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x4f476977 gigaset_fill_inbuf +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x8642f005 gigaset_skb_rcvd +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x8eff32df gigaset_dbg_buffer +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xa7e8f6e1 gigaset_isdn_rcv_err +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xaf1cf801 gigaset_handle_modem_response +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xb0310fc6 gigaset_freedriver +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xb8fb3dbb gigaset_blockdriver +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xcca992ec gigaset_shutdown +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xd6c40b0e gigaset_m10x_input +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xe2cd1679 gigaset_start +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xe4946978 gigaset_freecs +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xfab84371 gigaset_if_receive +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xff9ae8eb gigaset_stop +EXPORT_SYMBOL_GPL drivers/leds/dell-led 0x86fd1ffb dell_app_wmi_led_set +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0x0bac2cbc led_set_flash_timeout +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0x11b3fa80 led_classdev_flash_register +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0x27a354bc led_set_flash_brightness +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0x3682b7ee led_classdev_flash_unregister +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0x562fc43f led_get_flash_fault +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0xd8436b02 led_update_flash_brightness +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/mcb/mcb 0x23570da9 mcb_get_irq +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x3e991eb4 mcb_free_dev +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x4c700ff2 mcb_bus_get +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x52bf8109 chameleon_parse_cells +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x6b9e21be mcb_request_mem +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x732424dd __mcb_register_driver +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x8656360c mcb_alloc_bus +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x89a81549 mcb_device_register +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x8bf52ac0 mcb_release_mem +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x94fd240a mcb_release_bus +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0xb19bc361 mcb_alloc_dev +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0xb9e4b468 mcb_bus_add_devices +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0xc15bfa3d mcb_bus_put +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0xc76ee636 mcb_unregister_driver +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x10e06e97 __tracepoint_bcache_btree_set_root +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x155ea9c7 __tracepoint_bcache_bypass_sequential +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x1822fd23 __tracepoint_bcache_btree_gc_coalesce +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x1f2ba9ac __tracepoint_bcache_journal_entry_full +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x260d47cf __tracepoint_bcache_btree_cache_cannibalize +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x27831e89 __tracepoint_bcache_journal_full +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x2dec45e0 __tracepoint_bcache_btree_write +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x347aebe1 __tracepoint_bcache_btree_node_free +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x41c861f0 __tracepoint_bcache_alloc_fail +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x480dc606 __tracepoint_bcache_invalidate +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x49856e5a __tracepoint_bcache_btree_node_compact +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x50e8c39f __tracepoint_bcache_write +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x574ba881 __tracepoint_bcache_btree_node_alloc +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x628eb712 __tracepoint_bcache_btree_insert_key +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x6770a402 __tracepoint_bcache_gc_copy_collision +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x785cfc9f __tracepoint_bcache_gc_end +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x91f2af34 __tracepoint_bcache_btree_node_alloc_fail +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xa09069a3 __tracepoint_bcache_writeback_collision +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xa591c5d6 __tracepoint_bcache_read +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xa6890b59 __tracepoint_bcache_btree_read +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xaf60c34b __tracepoint_bcache_journal_write +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xb950d2ae __tracepoint_bcache_request_start +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xbd4b89b6 __tracepoint_bcache_btree_node_split +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xce0e6218 __tracepoint_bcache_gc_copy +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xd40fba32 __tracepoint_bcache_gc_start +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xdc5ea5a5 __tracepoint_bcache_cache_insert +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xf58ce244 __tracepoint_bcache_journal_replay_key +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xf5bcbdc7 __tracepoint_bcache_read_retry +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xfc1d5275 __tracepoint_bcache_writeback +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xfcdf28c9 __tracepoint_bcache_request_end +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xffc308e4 __tracepoint_bcache_bypass_congested +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x0ac4d5f0 dm_cell_release_no_holder +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x12d66f99 dm_cell_release +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x17dd39d6 dm_deferred_set_create +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x181c29e7 dm_bio_prison_free_cell +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x2eb01e04 dm_deferred_set_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x37a0c2c9 dm_cell_promote_or_release +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x6791a44e dm_deferred_entry_dec +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x68eb64a3 dm_bio_prison_alloc_cell +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x753e20b2 dm_bio_prison_create +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x92c5beb4 dm_cell_visit_release +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xa57655d8 dm_cell_error +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 0xcc0ea994 dm_bio_detain +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xcf1fffd1 dm_get_cell +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x0ad0dc4f dm_bufio_mark_buffer_dirty +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x22163b69 dm_bufio_release_move +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x3909d3a8 dm_bufio_prefetch +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x594952bd dm_bufio_read +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x62a23587 dm_bufio_get_device_size +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x65c9a78e dm_bufio_client_create +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x6d3f57bd dm_bufio_get_client +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 0x9b2b253a dm_bufio_get +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xa82b2066 dm_bufio_write_dirty_buffers +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xc9a3422d dm_bufio_write_dirty_buffers_async +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xd4bddf5c dm_bufio_issue_flush +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xdc69e37a dm_bufio_get_block_number +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xe004ee92 dm_bufio_new +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-cache 0x1b60133b dm_cache_policy_get_hint_size +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x26c26ef0 dm_cache_policy_register +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x8d62c02b dm_cache_policy_unregister +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xa59061f6 dm_cache_policy_get_name +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xe79ec2cc dm_cache_policy_get_version +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xef17c9ee dm_cache_policy_create +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xf70de645 dm_cache_policy_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-multipath 0x70a2b522 dm_register_path_selector +EXPORT_SYMBOL_GPL drivers/md/dm-multipath 0xf564d14f 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 0x09472122 dm_rh_dec +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 0x4fc0bc4a 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 0x7d9df5c5 dm_rh_bio_to_region +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x8c54c9b9 dm_region_hash_create +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xa1712c1c 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 0xa8813ad6 dm_rh_region_to_sector +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xb1e5987c dm_rh_dirty_log +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xbe38a431 dm_rh_recovery_prepare +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xbf29803f dm_rh_inc_pending +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xc66ce277 dm_rh_get_region_size +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xcab63c3d dm_rh_get_state +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xd8aa4284 dm_rh_region_context +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xf37a3cfe dm_rh_get_region_key +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 0x01445176 dm_btree_find_highest_key +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x0604db1b dm_btree_remove_leaves +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x11eab9fe dm_bm_read_lock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x150c85ce dm_tm_open_with_sm +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x1e3f728d dm_block_data +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x2025e954 dm_array_info_init +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x24fa6664 dm_bitset_set_bit +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x2c112836 dm_block_location +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x2e730a21 dm_bm_checksum +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 0x32b5f546 dm_array_empty +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x33c03da6 dm_sm_disk_open +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 0x3ad0f55b dm_bm_flush +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x40f7bd91 dm_tm_inc +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x4360913e dm_btree_find_lowest_key +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x5aed1dd7 dm_bitset_flush +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x5e6aea80 dm_btree_walk +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x619701dc dm_sm_disk_create +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x62c1b9ee dm_array_walk +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 0x72289260 dm_block_manager_destroy +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x7657e859 dm_bitset_clear_bit +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 0x80c89b3d dm_tm_unlock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x832bf228 dm_array_del +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x858c8d94 dm_array_set_value +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x89f1e1cc dm_btree_insert_notify +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x937b5c31 dm_block_manager_create +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 0x966a8838 dm_btree_lookup +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x9b4b5b29 dm_bm_write_lock +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 0xa2507774 dm_tm_shadow_block +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xa87c5b4d dm_array_resize +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xab96bd2d dm_bitset_test_bit +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xaee02382 dm_btree_empty +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xb7bad799 dm_bm_unlock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xb9a6ecf8 dm_tm_dec +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xba47c03a dm_bitset_del +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xbcfdc290 dm_tm_read_lock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xbd50ebbb dm_btree_del +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xbe0497aa dm_tm_create_with_sm +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xca40abd5 dm_btree_insert +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xd041d62b dm_array_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 0xead1e727 dm_bm_write_lock_zero +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xed1e1f96 dm_btree_remove +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xed58cfa1 dm_bitset_empty +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xf12ec3cd dm_disk_bitset_init +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xffff2ac3 dm_bitset_resize +EXPORT_SYMBOL_GPL drivers/media/common/b2c2/b2c2-flexcop 0x66c0289a b2c2_flexcop_debug +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x21c5bfee saa7146_setgpio +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x30cf895d saa7146_wait_for_debi_done +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x44e9b820 saa7146_vfree_destroy_pgtable +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x4edefd42 saa7146_vmalloc_build_pgtable +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x70fcb01e saa7146_i2c_adapter_prepare +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x8360326b saa7146_pgtable_free +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x87d38d45 saa7146_pgtable_alloc +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xb9a47be2 saa7146_register_extension +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xc97f82b2 saa7146_pgtable_build_single +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xe3cd9b5c saa7146_debug +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xfb5f05eb saa7146_unregister_extension +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x071ad7c8 saa7146_set_hps_source_and_sync +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x08aa7c6d saa7146_vv_release +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x8b0d97f8 saa7146_unregister_device +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x99dfd249 saa7146_vv_init +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0xa4545946 saa7146_start_preview +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0xbd515b7d saa7146_register_device +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0xfa258470 saa7146_stop_preview +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x147c8353 smscore_register_client +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x21e36bf2 smscore_registry_getmode +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x29cc2ebe smscore_getbuffer +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 0x4cdfe1fa smscore_get_board_id +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x51eda12b smscore_register_device +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 0x7835865e smscore_start_device +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x7c576277 smsendian_handle_message_header +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x80759df0 smscore_onresponse +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x844539ae sms_get_board +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x907abf13 smscore_putbuffer +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x946f9d94 sms_board_event +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x97cdbe66 smscore_set_board_id +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x9c2225ed smscore_translate_msg +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xa38556ef smscore_unregister_device +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xb2dc8d71 smscore_register_hotplug +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xbbdb5c42 smscore_unregister_client +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xbdb3716e sms_board_lna_control +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xbdd94f7e sms_board_power +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xe498b1ec smscore_unregister_hotplug +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xe6db8706 sms_board_setup +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xeb1fb23c sms_board_led_feedback +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xf30b9f64 smscore_get_device_mode +EXPORT_SYMBOL_GPL drivers/media/dvb-frontends/as102_fe 0xa1c84223 as102_attach +EXPORT_SYMBOL_GPL drivers/media/dvb-frontends/cx24117 0x9e9b8baa cx24117_attach +EXPORT_SYMBOL_GPL drivers/media/dvb-frontends/tda18271c2dd 0x38450504 tda18271c2dd_attach +EXPORT_SYMBOL_GPL drivers/media/media 0x015e00bd media_entity_put +EXPORT_SYMBOL_GPL drivers/media/media 0x0bbb7d6f media_entity_pipeline_start +EXPORT_SYMBOL_GPL drivers/media/media 0x11290d3a media_device_unregister +EXPORT_SYMBOL_GPL drivers/media/media 0x21615b2c media_entity_pipeline_stop +EXPORT_SYMBOL_GPL drivers/media/media 0x27d5a020 media_entity_create_link +EXPORT_SYMBOL_GPL drivers/media/media 0x2ceb5d6b media_entity_init +EXPORT_SYMBOL_GPL drivers/media/media 0x2ddd0971 media_device_unregister_entity +EXPORT_SYMBOL_GPL drivers/media/media 0x316a7f86 media_entity_cleanup +EXPORT_SYMBOL_GPL drivers/media/media 0x50983261 media_entity_find_link +EXPORT_SYMBOL_GPL drivers/media/media 0x66937e33 media_device_register_entity +EXPORT_SYMBOL_GPL drivers/media/media 0x73a13142 media_entity_remote_pad +EXPORT_SYMBOL_GPL drivers/media/media 0x907d4723 media_entity_setup_link +EXPORT_SYMBOL_GPL drivers/media/media 0x9e3d2eca media_entity_graph_walk_start +EXPORT_SYMBOL_GPL drivers/media/media 0xa55f2b61 media_entity_graph_walk_next +EXPORT_SYMBOL_GPL drivers/media/media 0xacaeeef8 __media_entity_remove_links +EXPORT_SYMBOL_GPL drivers/media/media 0xb0620847 media_entity_get +EXPORT_SYMBOL_GPL drivers/media/media 0xecfcb4d2 media_entity_remove_links +EXPORT_SYMBOL_GPL drivers/media/media 0xf513ac84 __media_device_register +EXPORT_SYMBOL_GPL drivers/media/pci/cx88/cx88xx 0x9d258505 cx88_setup_xc3028 +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x220eb3c2 mantis_frontend_power +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x4a2ef137 mantis_input_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x4ce0f9d3 mantis_uart_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x4d01f649 mantis_get_mac +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x6a792608 mantis_ca_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x82b36862 mantis_input_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x837ab10c mantis_gpio_set_bits +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x8795b397 mantis_frontend_soft_reset +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x89a404ea mantis_dma_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x8b6865fe mantis_pci_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x8f15debe mantis_dvb_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x98e17fb6 mantis_uart_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xb2af40e6 mantis_i2c_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xbb6fbe49 mantis_ca_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xcccefc10 mantis_pci_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xd65d0a72 mantis_i2c_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xebe7942a mantis_dvb_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xec5b256d mantis_stream_control +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xed564e7e mantis_dma_exit +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x043d56b3 saa7134_s_input +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x0ae69fb4 saa7134_ts_stop_streaming +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x0f825ef3 saa7134_g_std +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x1cbbbd0e saa7134_ts_buffer_init +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x21d07c0c saa7134_stop_streaming +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x294c6b8f saa7134_ts_start_streaming +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x309b0eaf saa7134_g_tuner +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x5ad8017e saa7134_vb2_buffer_queue +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x63cf5417 saa7134_g_input +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x83194627 saa7134_s_frequency +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x851ef568 saa7134_querycap +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x8a7173e9 saa7134_g_frequency +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xba673a47 saa7134_querystd +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xc1ff4ae9 saa7134_ts_queue_setup +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xc2e45be0 saa7134_ts_qops +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xca92f337 saa7134_enum_input +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xde0ea2d8 saa7134_ts_buffer_prepare +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xe79a653d saa7134_s_std +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xf2037597 saa7134_s_tuner +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x0390f64a ttpci_budget_deinit +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x1465dc81 ttpci_budget_init_hooks +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x3c126461 ttpci_budget_debiwrite +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x7948c222 budget_debug +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0xc656ef70 ttpci_budget_irq10_handler +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0xc79f4af4 ttpci_budget_init +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0xdc24912d ttpci_budget_debiread +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0xe1e03050 ttpci_budget_set_video_port +EXPORT_SYMBOL_GPL drivers/media/radio/radio-isa 0x04143e4a radio_isa_match +EXPORT_SYMBOL_GPL drivers/media/radio/radio-isa 0x4677d591 radio_isa_remove +EXPORT_SYMBOL_GPL drivers/media/radio/radio-isa 0x59a2b066 radio_isa_probe +EXPORT_SYMBOL_GPL drivers/media/radio/radio-isa 0x7fee5e40 radio_isa_pnp_probe +EXPORT_SYMBOL_GPL drivers/media/radio/radio-isa 0xe2a2dad1 radio_isa_pnp_remove +EXPORT_SYMBOL_GPL drivers/media/radio/shark2 0x4769928e radio_tea5777_init +EXPORT_SYMBOL_GPL drivers/media/radio/shark2 0xb3eef07d radio_tea5777_exit +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x1360bf1b rc_free_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x149ed03f rc_open +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x154b5ac6 ir_raw_event_set_idle +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x313439ac rc_g_keycode_from_table +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x3b71274f rc_keydown_notimeout +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x5306ed4f rc_keyup +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x553efb91 rc_core_debug +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x6ae781c8 ir_raw_event_store_with_filter +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x796702ca ir_raw_event_handle +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x7d6427c8 rc_allocate_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x832a803f rc_map_unregister +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x93c4cf5e rc_close +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x98de735f rc_repeat +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xa3527498 rc_unregister_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xaa8c17cf rc_register_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xaf23c6cd rc_map_get +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xb47ea103 ir_raw_event_store_edge +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xd2715bc8 rc_keydown +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xf27c1ca7 rc_map_register +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xfd6faf8c ir_raw_event_store +EXPORT_SYMBOL_GPL drivers/media/tuners/mt2063 0x9d6f16d2 mt2063_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/mt20xx 0x9d917bce microtune_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/mxl5007t 0xef68be62 mxl5007t_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/r820t 0x3ebf058e r820t_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda18271 0x4f54e7a1 tda18271_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda827x 0xebbd6d06 tda827x_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda8290 0x5a0870a9 tda829x_probe +EXPORT_SYMBOL_GPL drivers/media/tuners/tda8290 0x822324b0 tda829x_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda9887 0xda07c46d tda9887_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5761 0x5f74fbb9 tea5761_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5761 0x930e8dee tea5761_autodetection +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5767 0x033bb60c tea5767_autodetection +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5767 0xb6fa51e7 tea5767_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tuner-simple 0x09cae209 simple_tuner_attach +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x017ea7c7 cx231xx_tuner_callback +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x0ab56aac cx231xx_unmute_audio +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x1b03aa9d cx231xx_init_vbi_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x2a9d6463 cx231xx_uninit_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x385d9b7d cx231xx_enable_i2c_port_3 +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x60c389ce cx231xx_capture_start +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x662be424 cx231xx_init_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x68c4ead0 cx231xx_get_i2c_adap +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x7120145d cx231xx_enable656 +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x71d4bad4 cx231xx_demod_reset +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x7b088151 cx231xx_send_usb_command +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x7dba163c cx231xx_set_alt_setting +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x8f22f8ac cx231xx_dev_init +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x91f36686 is_fw_load +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xa6b34214 cx231xx_dev_uninit +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xbcfa924e cx231xx_disable656 +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xbd4667bd cx231xx_init_bulk +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xd44aa6c0 cx231xx_uninit_vbi_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xe402b360 cx231xx_uninit_bulk +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xf8a37384 cx231xx_set_mode +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xfe05ea74 cx231xx_send_gpio_cmd +EXPORT_SYMBOL_GPL drivers/media/usb/dvb-usb-v2/mxl111sf-demod 0x48208fdf mxl111sf_demod_attach +EXPORT_SYMBOL_GPL drivers/media/usb/dvb-usb-v2/mxl111sf-tuner 0x8dd5615d mxl111sf_tuner_attach +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x08063e06 em28xx_init_camera +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x0bd1576a em28xx_write_reg +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x0f433191 em28xx_write_ac97 +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x1cf01b3e em28xx_read_reg +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x37b244fc em28xx_init_usb_xfer +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x3e90e32b em28xx_gpio_set +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x53d62801 em28xx_read_ac97 +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x5f33ef7e em28xx_alloc_urbs +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x6d578f78 em28xx_boards +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x6dde5ed1 em28xx_setup_xc3028 +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x7fc8652c em28xx_tuner_callback +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x826b3b28 em28xx_stop_urbs +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x85697cbb em28xx_write_reg_bits +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x923c325c em28xx_set_mode +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x995fcba4 em28xx_uninit_usb_xfer +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xa2b55b38 em28xx_find_led +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xa765cee8 em28xx_audio_setup +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xb0353ee8 em28xx_write_regs +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xbf160784 em28xx_toggle_reg_bits +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xcd75ef7f em28xx_free_device +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xeb11ad0e em28xx_audio_analog_set +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x166e1bbd tm6000_set_reg_mask +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x1c70dd70 tm6000_set_reg +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x2309a6d6 tm6000_xc5000_callback +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x60d2ebd6 tm6000_set_audio_bitrate +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x89b611dd tm6000_debug +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0xda2e9ff8 tm6000_get_reg +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0xdff8e89d tm6000_tuner_callback +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x01c483a9 v4l2_get_timestamp +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x65d38de3 v4l2_i2c_new_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x813f3de4 v4l2_find_nearest_format +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x9f7b8ab6 v4l2_i2c_new_subdev_board +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0xaf222385 v4l2_spi_new_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0xaf56cc8b v4l2_i2c_subdev_addr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0xe5f4dcfb v4l2_i2c_subdev_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0xefaa56bb v4l2_spi_subdev_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0xf2a353ac v4l2_i2c_tuner_addrs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0xf5ef842e v4l_bound_align_image +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x08982d59 v4l2_match_dv_timings +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x4103badb v4l2_print_dv_timings +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x5491c182 v4l2_enum_dv_timings_cap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x67b8205b v4l2_detect_cvt +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x6f344bb9 v4l2_calc_aspect_ratio +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0xb0891da2 v4l2_dv_timings_presets +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0xdfa5a008 v4l2_valid_dv_timings +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0xf0e1988c v4l2_find_dv_timings_cap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0xf98d0f9d v4l2_detect_gtf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-flash-led-class 0x43d3df86 v4l2_flash_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-flash-led-class 0xe3209c49 v4l2_flash_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x08cd2562 v4l2_m2m_fop_mmap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x15555d09 v4l2_m2m_ioctl_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x17eb0eee v4l2_m2m_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x18a72a34 v4l2_m2m_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x1a2e8b18 v4l2_m2m_buf_queue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x1f634fe1 v4l2_m2m_try_schedule +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x29135502 v4l2_m2m_ioctl_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x3b590086 v4l2_m2m_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x442e33ad v4l2_m2m_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x4889b181 v4l2_m2m_ctx_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x5ae18a95 v4l2_m2m_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x67ef8e15 v4l2_m2m_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x7300d5dc v4l2_m2m_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x7bae1883 v4l2_m2m_ioctl_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x89448041 v4l2_m2m_fop_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x8d10d9e1 v4l2_m2m_buf_remove +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x9c259df2 v4l2_m2m_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xa41bc6f9 v4l2_m2m_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xa472b28f v4l2_m2m_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xbd015e30 v4l2_m2m_ioctl_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xbd42bf14 v4l2_m2m_ioctl_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xc5c53df8 v4l2_m2m_ioctl_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xc6fca5ad v4l2_m2m_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xd4a9890d v4l2_m2m_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xd6929073 v4l2_m2m_ioctl_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xde7ccec4 v4l2_m2m_ioctl_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xf7cf0749 v4l2_m2m_ctx_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xfc4e7cec v4l2_m2m_ioctl_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xfe72748d v4l2_m2m_next_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x033dea98 videobuf_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x069380fa videobuf_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x39839ec7 videobuf_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x3c560d0c videobuf_queue_is_busy +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x47f67e54 videobuf_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x5e09deb3 __videobuf_mmap_setup +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x60c4e13c videobuf_mmap_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x66ccbd3b videobuf_queue_core_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x696ba2aa videobuf_waiton +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x89636d0b videobuf_queue_cancel +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x9031ff05 videobuf_alloc_vb +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x937692f6 videobuf_read_stop +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x9f91f5b7 videobuf_stop +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xa16f07d5 videobuf_read_start +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xadbcd203 videobuf_poll_stream +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xc3157437 videobuf_mmap_setup +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xc3bfc5bf videobuf_read_one +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xcef2ec79 videobuf_read_stream +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xe1d85da4 videobuf_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xe6d69fab videobuf_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xec349b69 videobuf_next_field +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xed954494 videobuf_iolock +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xf199e1d7 videobuf_queue_to_vaddr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xfd35ac98 videobuf_mmap_mapper +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-contig 0x3b86f172 videobuf_dma_contig_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-contig 0x8a44c694 videobuf_queue_dma_contig_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-contig 0xfffc51a0 videobuf_to_dma_contig +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x10a22ae1 videobuf_queue_sg_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x19ad1f09 videobuf_to_dma +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x8c848491 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 0xbc2189b4 videobuf_dma_unmap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-vmalloc 0x52f5a03c videobuf_vmalloc_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-vmalloc 0xb80e57e4 videobuf_queue_vmalloc_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-vmalloc 0xbc9b324e videobuf_to_vmalloc +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x10379baa vb2_discard_done +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x11b89f6a vb2_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x13ae46d9 vb2_ioctl_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x17c06bbb vb2_fop_mmap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x19855237 vb2_plane_vaddr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x1d8c4ad9 _vb2_fop_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x1e5a9334 vb2_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x1e6e387c vb2_mmap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x212ae455 vb2_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x2aa7b085 vb2_ioctl_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x2d53a8e6 vb2_read +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x2fb99e42 vb2_ioctl_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x3c61721d vb2_queue_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x44c5306d vb2_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x45e5d821 vb2_fop_write +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x4c4be238 vb2_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x4e13854c vb2_ioctl_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x5652eeaa vb2_ioctl_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x647c7b0b vb2_ops_wait_prepare +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x66a05590 vb2_ioctl_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x76b28db2 vb2_thread_start +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x790fa7ac vb2_fop_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x7db579fa vb2_ioctl_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x85297093 vb2_write +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x8ad7473b vb2_ioctl_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x971c8249 vb2_thread_stop +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x9abc4cb8 vb2_plane_cookie +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x9e481fe2 vb2_queue_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x9fc11d99 vb2_fop_read +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xa0aa7795 vb2_wait_for_all_buffers +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xab2df0d8 vb2_ops_wait_finish +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xb16aa9a5 vb2_queue_error +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xdbfdac6b vb2_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xe3d652c1 vb2_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xe8cd673e vb2_ioctl_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xee7b5c86 vb2_buffer_done +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xf04bd8d1 vb2_fop_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xf29c51fd vb2_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xf9f813f9 vb2_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-contig 0x49c0bf33 vb2_dma_contig_init_ctx +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-contig 0x5dfe514b vb2_dma_contig_memops +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-contig 0xe57f0426 vb2_dma_contig_cleanup_ctx +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-sg 0x32d5c586 vb2_dma_sg_memops +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-sg 0x7bbaff78 vb2_dma_sg_init_ctx +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-sg 0xd30ec30f vb2_dma_sg_cleanup_ctx +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-memops 0xa2082505 vb2_common_vm_ops +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-memops 0xa9a14157 vb2_get_vma +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-memops 0xca5a3a48 vb2_put_vma +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-memops 0xf9d83cc0 vb2_get_contig_userptr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-vmalloc 0x7d3489ed vb2_vmalloc_memops +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x0586b911 v4l2_device_register_subdev_nodes +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x14461ea6 v4l2_event_subscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x169ec4f4 v4l2_device_put +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x23395d7e v4l2_event_pending +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x336c336d v4l2_fh_del +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x33fd8211 v4l2_fh_open +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x34b42880 v4l2_device_unregister +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x48c8b774 v4l2_event_queue_fh +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x4e273ba2 v4l2_device_register_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x5e7bb6e3 v4l2_event_subdev_unsubscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x6001fd12 v4l2_fh_is_singular +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x6906b1a6 v4l2_device_disconnect +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x867b88b9 v4l2_subdev_link_validate +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x904499bd v4l2_device_unregister_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x98123c22 v4l2_subdev_link_validate_default +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x9c2191de v4l2_fh_exit +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x9df62e2b v4l2_event_unsubscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xab38a7ef v4l2_device_register +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xac2ba2c0 v4l2_device_set_name +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xb46db3fd v4l2_fh_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xb8fb9ccb v4l2_src_change_event_subscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xbfddb919 v4l2_fh_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xc0b572c8 v4l2_event_dequeue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xc8ae59e6 v4l2_src_change_event_subdev_subscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xd57fd30b v4l2_event_unsubscribe_all +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xd828c867 v4l2_event_queue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xe50670ef v4l2_fh_add +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0x6f83c826 pm80x_init +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0x8ef6d570 pm80x_pm_ops +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0xd99fd720 pm80x_deinit +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0xe003c0ce pm80x_regmap_config +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0x0baed70b da9150_bulk_read +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0x2282eb61 da9150_bulk_write +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0x2fa45a02 da9150_set_bits +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0x6476551e da9150_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0x7027e208 da9150_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/intel-lpss 0x2c9e2c87 intel_lpss_probe +EXPORT_SYMBOL_GPL drivers/mfd/intel-lpss 0x476dfeb2 intel_lpss_remove +EXPORT_SYMBOL_GPL drivers/mfd/intel-lpss 0x729c134e intel_lpss_prepare +EXPORT_SYMBOL_GPL drivers/mfd/intel-lpss 0xa0a84877 intel_lpss_resume +EXPORT_SYMBOL_GPL drivers/mfd/intel-lpss 0xade909a6 intel_lpss_suspend +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x107951fa kempld_get_mutex +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x31b0294b kempld_write8 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x5c18aba3 kempld_write32 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0xab0e0281 kempld_release_mutex +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0xaeae5fda kempld_read32 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0xb115a723 kempld_write16 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0xc2fbb021 kempld_read16 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0xfb952a5b kempld_read8 +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0x36171f7f lm3533_read +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0x9c54db24 lm3533_write +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0x9de7889d lm3533_update +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x136ef021 lm3533_ctrlbank_set_brightness +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x4c3f7c4c lm3533_ctrlbank_set_max_current +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x586aae7b lm3533_ctrlbank_enable +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x74a2153d lm3533_ctrlbank_set_pwm +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0xbc9f5c3a lm3533_ctrlbank_get_pwm +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0xbd2173d6 lm3533_ctrlbank_disable +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0xf0caebf5 lm3533_ctrlbank_get_brightness +EXPORT_SYMBOL_GPL drivers/mfd/lp3943 0x14cd8a50 lp3943_update_bits +EXPORT_SYMBOL_GPL drivers/mfd/lp3943 0x164a12f0 lp3943_write_byte +EXPORT_SYMBOL_GPL drivers/mfd/lp3943 0x5f6fd0a2 lp3943_read_byte +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x2f12cafc mc13xxx_variant_mc34708 +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x3d1d3f94 mc13xxx_variant_mc13783 +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x733ef641 mc13xxx_common_exit +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x7da774b4 mc13xxx_variant_mc13892 +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0xc698c8a6 mc13xxx_common_init +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0xc86caaa3 mc13xxx_adc_do_conversion +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x0dfa8e76 pcf50633_irq_mask_get +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x4a2fb9f2 pcf50633_reg_clear_bits +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x604f4d56 pcf50633_reg_set_bit_mask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x76a2a1ea pcf50633_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x829fed52 pcf50633_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xa34ab54f pcf50633_write_block +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xb05ae284 pcf50633_read_block +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xb1975f2c pcf50633_free_irq +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xb430be7e pcf50633_register_irq +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xf98771b2 pcf50633_irq_unmask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xff08f3c9 pcf50633_irq_mask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-adc 0x2b913d84 pcf50633_adc_sync_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-adc 0xa6e47d98 pcf50633_adc_async_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x2ed08b07 pcf50633_gpio_set +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x36988c6e pcf50633_gpio_invert_set +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x9fd2c90e pcf50633_gpio_power_supply_set +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0xc316192a pcf50633_gpio_invert_get +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0xe48c6a29 pcf50633_gpio_get +EXPORT_SYMBOL_GPL drivers/mfd/retu-mfd 0x01a33234 retu_write +EXPORT_SYMBOL_GPL drivers/mfd/retu-mfd 0x4fca3918 retu_read +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x01266966 rtsx_pci_add_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x01d2fd6e rtsx_pci_read_phy_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x13d1f675 rtsx_pci_card_power_off +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x14cc1f8f rtsx_pci_card_power_on +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x1de56b25 rtsx_pci_read_ppbuf +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x2a54061d rtsx_pci_dma_transfer +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x398a032b rtsx_pci_write_phy_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x3e80bc88 rtsx_pci_start_run +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x5f8e28a1 rtsx_pci_write_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x60dba67c rtsx_pci_stop_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x62b0e920 rtsx_pci_write_ppbuf +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x78a68a38 rtsx_pci_read_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x8107ba0c rtsx_pci_dma_map_sg +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x89d0ea61 rtsx_pci_complete_unfinished_transfer +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x91a8ee64 rtsx_pci_transfer_data +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x9432ffeb rtsx_pci_card_exist +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xb224c913 rtsx_pci_switch_clock +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xb2a17f07 rtsx_pci_dma_unmap_sg +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xc1787496 rtsx_pci_send_cmd_no_wait +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xc1bd047d rtsx_pci_switch_output_voltage +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xdfe34a2f rtsx_pci_card_pull_ctl_enable +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xf435bd54 rtsx_pci_card_exclusive_check +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xf65c07d7 rtsx_pci_card_pull_ctl_disable +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xf6feaf53 rtsx_pci_send_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x0616a005 rtsx_usb_card_exclusive_check +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x23ee282f rtsx_usb_add_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x43a2fa70 rtsx_usb_ep0_write_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x7a2fc988 rtsx_usb_write_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x7a64688c rtsx_usb_write_ppbuf +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x8ee8a93c rtsx_usb_read_ppbuf +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x9aa7814d rtsx_usb_read_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0xab21afd6 rtsx_usb_send_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0xb42d8b11 rtsx_usb_transfer_data +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0xbbbb7b5f rtsx_usb_get_rsp +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0xc57b1464 rtsx_usb_get_card_status +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0xdf1625d8 rtsx_usb_switch_clock +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0xfca665f8 rtsx_usb_ep0_read_register +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x07f9a1dc si476x_core_is_a_primary_tuner +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x0b2a242a si476x_core_cmd_fm_phase_div_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x1bc3d22b si476x_core_set_power_state +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x2f0a8b81 si476x_core_cmd_zif_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x4071bdf9 si476x_core_is_in_am_receiver_mode +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x467c45bd si476x_core_cmd_am_acf_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x492d2db0 si476x_core_cmd_dig_audio_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x4d3884c1 si476x_core_cmd_fm_tune_freq +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x4e69e26e si476x_core_cmd_ana_audio_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x58abe381 si476x_core_cmd_power_up +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x67793a7d si476x_core_is_a_secondary_tuner +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x68ce8c68 si476x_core_cmd_get_property +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x6a71bb32 si476x_core_cmd_set_property +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x80d59bde si476x_core_cmd_func_info +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x8b3c03f1 si476x_core_cmd_fm_rsq_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x8f4f522b si476x_core_cmd_fm_rds_blockcount +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x93ef9e1f si476x_core_start +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x9a19fb64 si476x_core_cmd_fm_acf_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x9c8d57e1 si476x_core_cmd_intb_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x9ddea64f devm_regmap_init_si476x +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xa22ae8ca si476x_core_cmd_agc_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xa9c9b0d1 si476x_core_cmd_power_down +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xb01c8469 si476x_core_is_powered_up +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xb7df68ce si476x_core_has_diversity +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xc236d62f si476x_core_cmd_am_tune_freq +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xc80b9ac9 si476x_core_i2c_xfer +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xca090af3 si476x_core_cmd_fm_rds_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xca8360df si476x_core_cmd_am_rsq_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xce82517f si476x_core_cmd_am_seek_start +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xd4964121 si476x_core_has_am +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xdd0e4c58 si476x_core_cmd_fm_phase_diversity +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xe0e5d6d2 si476x_core_stop +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xecd59582 si476x_core_cmd_fm_seek_start +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xf6ac1466 si476x_core_cmd_ic_link_gpo_ctl_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x0626ee24 sm501_misc_control +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x16afe58e sm501_find_clock +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x5a59f542 sm501_unit_power +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x6efc75b7 sm501_modify_reg +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0xbbbaaddc sm501_set_clock +EXPORT_SYMBOL_GPL drivers/mfd/ti_am335x_tscadc 0x0206ee35 am335x_tsc_se_clr +EXPORT_SYMBOL_GPL drivers/mfd/ti_am335x_tscadc 0x596689d9 am335x_tsc_se_set_once +EXPORT_SYMBOL_GPL drivers/mfd/ti_am335x_tscadc 0x8d31f0ab am335x_tsc_se_adc_done +EXPORT_SYMBOL_GPL drivers/mfd/ti_am335x_tscadc 0xc3673f97 am335x_tsc_se_set_cache +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0x198423fb tps65217_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0x215afe75 tps65217_clear_bits +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0xa269a647 tps65217_set_bits +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0xf5ba2135 tps65217_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/tps65218 0x526020f8 tps65218_set_bits +EXPORT_SYMBOL_GPL drivers/mfd/tps65218 0x891341ad tps65218_clear_bits +EXPORT_SYMBOL_GPL drivers/mfd/tps65218 0x9b1be430 tps65218_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/tps65218 0xeecc5cd0 tps65218_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/ucb1400_core 0x384b9839 ucb1400_adc_read +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0x2c84978b cb710_sg_dwiter_read_next_block +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0x6d0fb068 cb710_sg_dwiter_write_next_block +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0x76466809 cb710_set_irq_handler +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0xca4cac34 cb710_pci_update_config_reg +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0x1a1b5249 oslec_flush +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0x2feda75b oslec_hpf_tx +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0x3227a28e oslec_snapshot +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0x7dc9dddd oslec_adaption_mode +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0xb2c66001 oslec_create +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0xc8b5a524 oslec_free +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0xd370f679 oslec_update +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0x27cb133b eeprom_93cx6_multiread +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0x63d2ff63 eeprom_93cx6_wren +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0x793fc8de eeprom_93cx6_multireadb +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0x822222db eeprom_93cx6_write +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0x98bb5a22 eeprom_93cx6_read +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0xdb9ca14b eeprom_93cx6_readb +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x2906a723 enclosure_register +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x5270bc68 enclosure_component_register +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x6c78ac01 enclosure_find +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x73b70aa8 enclosure_unregister +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x977ea511 enclosure_for_each_device +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0xa9e64d83 enclosure_remove_device +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0xb045254d enclosure_add_device +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0xc5ff104d enclosure_component_alloc +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x1fa26af7 lis3lv02d_init_dt +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x41003322 lis3lv02d_joystick_disable +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x59f82251 lis3lv02d_poweroff +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x73b87990 lis3lv02d_joystick_enable +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x9280c878 lis3lv02d_poweron +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xa73a53ba lis3_dev +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xcce2a968 lis3lv02d_init_device +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xf104dca3 lis3lv02d_remove_fs +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x0ad97842 mei_cl_enable_device +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x0bb83258 mei_cl_get_drvdata +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x254cfab4 mei_irq_write_handler +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x351f5007 mei_device_init +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x365995f1 mei_reset +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x4dbe61d3 mei_irq_read_handler +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x58f6ec04 mei_cl_set_drvdata +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x654e6d68 mei_deregister +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x6bfa144c mei_register +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x7039a038 mei_irq_compl_handler +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x71d89270 mei_cl_register_event_cb +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x7b53a374 mei_cl_send +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x7bf7865b mei_restart +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x7d667404 mei_cl_disable_device +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0x8353520c mei_write_is_idle +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0xa2e9b4bc __mei_cl_driver_register +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0xa4e261f8 mei_hbm_pg +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0xa6b177f3 mei_stop +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0xc94df679 mei_cl_recv +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0xd3bc236d mei_hbm_pg_resume +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0xda27124f mei_fw_status2str +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0xdb571052 mei_start +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0xebc8ec41 mei_cl_driver_unregister +EXPORT_SYMBOL_GPL drivers/misc/mei/mei 0xebe74c0d mei_cancel_work +EXPORT_SYMBOL_GPL drivers/misc/pti 0x19f09b98 pti_release_masterchannel +EXPORT_SYMBOL_GPL drivers/misc/pti 0x23bde487 pti_request_masterchannel +EXPORT_SYMBOL_GPL drivers/misc/pti 0x52a78e81 pti_writedata +EXPORT_SYMBOL_GPL drivers/misc/ti-st/st_drv 0x55c61ed4 st_register +EXPORT_SYMBOL_GPL drivers/misc/ti-st/st_drv 0x77138830 st_unregister +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x05c726bf vmci_qpair_dequev +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x0f6680ea vmci_qpair_produce_buf_ready +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x1152e318 vmci_qpair_get_produce_indexes +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x13aa5a5d vmci_datagram_create_handle +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x1872c7af vmci_qpair_produce_free_space +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x1a195863 vmci_context_get_priv_flags +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x2e30d970 vmci_qpair_dequeue +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x3ef56cd5 vmci_qpair_alloc +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x4b630dac vmci_get_context_id +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x4ea2ccbc vmci_qpair_peek +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x50a255c9 vmci_doorbell_create +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x612df9ae vmci_qpair_detach +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x677c36d0 vmci_is_context_owner +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x69ef87ff vmci_datagram_destroy_handle +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x6cc1a5f7 vmci_datagram_create_handle_priv +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x722d488a vmci_event_unsubscribe +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x7d540b50 vmci_qpair_consume_free_space +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x8b8ad67a vmci_qpair_enqueue +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x9624c58c vmci_datagram_send +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x971cfe6e vmci_qpair_peekv +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x9973b9b2 vmci_qpair_consume_buf_ready +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0x9d16164a vmci_send_datagram +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0xb4e287fd vmci_qpair_enquev +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0xccbb53d1 vmci_doorbell_notify +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0xcf5ed7ef vmci_event_subscribe +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0xdac94780 vmci_qpair_get_consume_indexes +EXPORT_SYMBOL_GPL drivers/misc/vmw_vmci/vmw_vmci 0xe7e7c107 vmci_doorbell_destroy +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x06005808 sdhci_set_clock +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x0a857d11 sdhci_send_command +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x1bdca48b sdhci_enable_irq_wakeups +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x40b237cc sdhci_set_uhs_signaling +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x41dd7afc sdhci_set_bus_width +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x4cc564c7 sdhci_add_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x69f7b8f7 sdhci_free_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x6dcd72c0 sdhci_alloc_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x9cb5abc3 sdhci_suspend_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xa180ff60 sdhci_runtime_resume_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xb9a25d75 sdhci_resume_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xd3259639 sdhci_remove_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xe8d539ea sdhci_reset +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xf1706d8a sdhci_runtime_suspend_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x0e7e5fb7 sdhci_pltfm_suspend +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x190d5c3a sdhci_pltfm_resume +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x19e56686 sdhci_pltfm_unregister +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x4764a145 sdhci_pltfm_init +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x4c962e26 sdhci_pltfm_register +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x80d26c8a sdhci_pltfm_pmops +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x825b688e sdhci_pltfm_free +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0xda94b395 sdhci_pltfm_clk_get_max_clock +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0xf73aae2a sdhci_get_of_property +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0x1b2732db cfi_cmdset_0200 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0xd91032a5 cfi_cmdset_0001 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0xe639174d cfi_cmdset_0003 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0x2c6eb441 cfi_cmdset_0006 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0x523cff91 cfi_cmdset_0002 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0xa1c53017 cfi_cmdset_0701 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0020 0x686ae33e cfi_cmdset_0020 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0x6cdca739 cfi_qry_present +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0x8e49fb53 cfi_qry_mode_off +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0x97cf92d7 cfi_qry_mode_on +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x00696df3 mtd_device_parse_register +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x1cbc9591 mtd_point +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x25f614ca mtd_unpoint +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x47312250 mtd_unlock +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x490563b4 register_mtd_user +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x4c3ade96 put_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x4cee1b02 mtd_lock_user_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x4e9cb0f5 mtd_table_mutex +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x4f2f860c mtd_is_partition +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x5076c6b1 mount_mtd +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x5133d13c mtd_writev +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x5b296227 get_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x5cac5c80 mtd_read_fact_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x5cc2de76 unregister_mtd_user +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x5e3161b2 mtd_block_isbad +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x5faf0b01 mtd_block_markbad +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x69602cbc __get_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x70097aa6 mtd_get_unmapped_area +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x7583ce77 mtd_read_oob +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x7c1db7e6 register_mtd_parser +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x80cecbc4 mtd_kmalloc_up_to +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x823ab0ac mtd_get_device_size +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x836166b1 deregister_mtd_parser +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x853d2619 mtd_device_unregister +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x867bc9e0 __put_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x893ce381 mtd_get_user_prot_info +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x97e51f61 mtd_erase_callback +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xab811651 mtd_del_partition +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xb12659ae mtd_write_user_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xb43b4126 mtd_read +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xb6fd9dcb mtd_write +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xb904db03 mtd_get_fact_prot_info +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xbff4bf5e mtd_is_locked +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xc2da3a02 __mtd_next_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xc9d3bce1 mtd_lock +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xd16b376f mtd_read_user_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xd8175fe6 mtd_erase +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xe2791e79 get_mtd_device_nm +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xe4a39636 mtd_panic_write +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xe96e3083 kill_mtd_super +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xf04c4d9a mtd_add_partition +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xf61b959b mtd_block_isreserved +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0x2fc289ff mtd_blktrans_cease_background +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0x5a2f3f61 deregister_mtd_blktrans +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0x8ec0602e register_mtd_blktrans +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0xa9ba1dd6 del_mtd_blktrans_dev +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0xb5b5df00 add_mtd_blktrans_dev +EXPORT_SYMBOL_GPL drivers/mtd/nand/nand 0x237510e2 nand_release +EXPORT_SYMBOL_GPL drivers/mtd/nand/nand 0x446d473e nand_wait_ready +EXPORT_SYMBOL_GPL drivers/mtd/nand/sm_common 0xdb699a00 sm_register_device +EXPORT_SYMBOL_GPL drivers/mtd/onenand/onenand 0x1b7cb992 onenand_release +EXPORT_SYMBOL_GPL drivers/mtd/onenand/onenand 0x6aed57ab onenand_scan +EXPORT_SYMBOL_GPL drivers/mtd/spi-nor/spi-nor 0x76b23aae spi_nor_scan +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x0581e3af ubi_leb_read +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x25eb7f92 ubi_open_volume_path +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x2e883647 ubi_leb_change +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x38e10c1d ubi_flush +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x3e32c044 ubi_leb_unmap +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x42801d20 ubi_sync +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x4b02da42 ubi_open_volume_nm +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x5cfdd22d ubi_get_device_info +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x62ce6440 ubi_close_volume +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x69de0456 ubi_open_volume +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x7763a7ff ubi_leb_erase +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x85a8ee76 ubi_unregister_volume_notifier +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xb21b04df ubi_leb_read_sg +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xb55622eb ubi_get_volume_info +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xbe693ad7 ubi_leb_write +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xc561096d ubi_do_get_device_info +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xd9e83ee9 ubi_leb_map +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xf5ee9ba8 ubi_register_volume_notifier +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xfa96a5a9 ubi_is_mapped +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x03075e8a alloc_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x60631478 free_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x91b3955d c_can_power_up +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0xa85787e8 unregister_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0xc7b155e2 register_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0xd74c1a83 c_can_power_down +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x036a8c82 alloc_canfd_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x05e06012 alloc_can_err_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x222c295a can_len2dlc +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x471ffae2 free_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x59db0402 devm_can_led_init +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x64e0f113 can_change_state +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x6e6bd1db alloc_can_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x73f53360 can_put_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x8a303c0f can_get_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x8f85d411 can_free_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x9a936559 safe_candev_priv +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xb346573b can_dlc2len +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xb4ee9f0b can_bus_off +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xb76167bd close_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xc5ada855 can_led_event +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xce17e846 can_change_mtu +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xd1d6cd46 alloc_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xef55ac6b open_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xfd66f378 register_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xff9cdae5 unregister_candev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0x1bbca226 alloc_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0x3b2693b1 free_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0x76709902 unregister_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0xedecb23f register_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x49ebd0d2 sja1000_interrupt +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x565e4ed5 free_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x796317e6 unregister_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0xbf373d84 register_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0xca08aa96 alloc_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0101a162 mlx4_config_vxlan_port +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x01b9fec6 mlx4_mr_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x032a60b9 __mlx4_replace_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x03db2708 mlx4_vf_get_enable_smi_admin +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x06dd9d54 mlx4_register_interface +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x08b2260f mlx4_free_hwq_res +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x090ac58d mlx4_buf_write_mtt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0be0ea54 mlx4_get_slave_default_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x10240300 mlx4_mr_hw_put_mpt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1261a645 mlx4_qp_release_range +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1440e647 mlx4_uar_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1b27f89b mlx4_map_sw_to_hw_steering_mode +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x21a39014 mlx4_db_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2205cfa0 __mlx4_unregister_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x23357b72 mlx4_mw_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x25cdd376 mlx4_unicast_promisc_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x29af3bf6 mlx4_vf_set_enable_smi_admin +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2de3581a mlx4_fmr_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2ed33ee9 mlx4_multicast_attach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2f46ae3c mlx4_write_mtt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2fae1864 mlx4_qp_modify +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x320a49ab mlx4_cq_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x33f1d010 mlx4_unregister_interface +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x35320f65 mlx4_map_sw_to_hw_steering_id +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x35c11ae9 mlx4_flow_attach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x383f103a mlx4_config_dev_retrieval +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3acdd6fa mlx4_srq_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3e5d167a mlx4_xrcd_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x40a749ba mlx4_get_counter_stats +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x416816f9 mlx4_mw_enable +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x431227f9 mlx4_alloc_cmd_mailbox +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x46d034fb mlx4_read_clock +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x47143df6 mlx4_port_map_set +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4a20d8ff mlx4_qp_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4d69c4ad mlx4_mw_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4e979a5c __mlx4_cmd +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x50055766 mlx4_SYNC_TPT +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x50d95606 mlx4_mtt_addr +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x52b1b2ae mlx4_find_cached_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x555fa013 mlx4_get_protocol_dev +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x56fa8ba1 mlx4_update_qp +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x570e821f mlx4_mtt_init +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5877e801 mlx4_get_default_counter_index +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5c7956cd mlx4_hw_rule_sz +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5cbaa86f mlx4_get_active_ports +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5f11c000 mlx4_set_vf_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x68078570 mlx4_wol_write +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x69ebc0be mlx4_get_base_qpn +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6be91e50 mlx4_fmr_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6c38e4ae mlx4_phys_to_slaves_pport +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6e22c177 mlx4_multicast_promisc_add +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6ffc26c0 mlx4_cq_modify +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x717bb20c mlx4_srq_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x741d348a mlx4_qp_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7a74ecf9 mlx4_mr_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7d47fb9b mlx4_phys_to_slaves_pport_actv +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7f7a0c94 mlx4_set_vf_link_state +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8052b5b5 mlx4_srq_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x829ab27b mlx4_qp_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x842ae0f7 mlx4_qp_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x84f55a58 mlx4_counter_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x89a8a7f4 mlx4_counter_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x89b0b93b mlx4_unbond +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8ec91b34 mlx4_bf_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8f4f9dde mlx4_mr_enable +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x966cb26e mlx4_fmr_unmap +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x967ea247 mlx4_buf_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x96f298d4 mlx4_mr_rereg_mem_write +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9afa38ff mlx4_qp_to_ready +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9b3fff9f mlx4_INIT_PORT +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9baeee4f mlx4_mr_hw_change_pd +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9c88ee39 mlx4_find_cached_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9ec7cdad mlx4_phys_to_slave_port +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9fe19021 mlx4_get_base_gid_ix +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa20e7004 mlx4_mr_hw_change_access +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa292069d mlx4_multicast_promisc_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa44933e8 mlx4_FLOW_STEERING_IB_UC_QP_RANGE +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa6b27a96 __mlx4_register_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa7621f0c mlx4_flow_steer_promisc_add +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa91c5b5c mlx4_flow_detach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xaa26f5fb mlx4_free_cmd_mailbox +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xac0e3915 mlx4_CLOSE_PORT +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xac3d813b mlx4_slave_convert_port +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xafa13028 mlx4_cq_resize +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb463d50c mlx4_alloc_hwq_res +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb4b6ebe0 mlx4_mr_hw_get_mpt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbdff0040 mlx4_multicast_detach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc10858eb mlx4_get_vf_stats +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc2a78464 mlx4_srq_lookup +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc408dd2b mlx4_mtt_cleanup +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc466244b mlx4_fmr_enable +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc658fb77 mlx4_buf_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc74e9e4d mlx4_unicast_attach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc7512d67 mlx4_set_vf_rate +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc7fee353 mlx4_register_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc9104960 mlx4_get_internal_clock_params +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xcae7275f mlx4_unregister_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xcc0336b1 mlx4_bf_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xcddbc75b mlx4_xrcd_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xcedcc442 mlx4_uar_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd0e5e568 mlx4_wol_read +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd27d018e mlx4_get_admin_guid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd78c6763 mlx4_cq_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xdcbbc466 mlx4_qp_reserve_range +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe0f126a4 mlx4_mr_rereg_mem_cleanup +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe175a219 mlx4_unregister_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe1a83d08 mlx4_db_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe1ad66f2 mlx4_unicast_detach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe364dde5 mlx4_unicast_promisc_add +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe5e8d5e2 mlx4_register_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe6c64456 mlx4_set_admin_guid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe6ee4f01 mlx4_set_vf_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe76faf2e mlx4_srq_arm +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe881a975 mlx4_bond +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xedbcd370 mlx4_map_phys_fmr +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xeff856a7 mlx4_pd_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf0359854 mlx4_pd_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf05d1c82 mlx4_set_vf_spoofchk +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf2f4f456 mlx4_get_vf_config +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf3576617 mlx4_mr_hw_write_mpt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf5cdfcae mlx4_ACCESS_PTYS_REG +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf6a8733e mlx4_flow_steer_promisc_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xff5831aa mlx4_vf_smi_enabled +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x0047179a mlx5_core_qp_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x01b07a99 mlx5_core_page_fault_resume +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x09543b3d mlx5_fill_page_array +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x0be2ebb3 mlx5_set_port_caps +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x0cd44d87 mlx5_query_port_oper_mtu +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x0d9ce0f7 mlx5_core_eq_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x1783c834 mlx5_query_hca_vport_system_image_guid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x24bc87bd mlx5_db_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x2a079e91 mlx5_query_port_max_mtu +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x304dcd62 mlx5_core_destroy_qp +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x343f1fde mlx5_query_port_proto_cap +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x3a2ad94c mlx5_query_hca_vport_pkey +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x3fd29536 mlx5_buf_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x45139305 mlx5_set_port_proto +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x5067f71e mlx5_set_port_admin_status +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x68471c26 mlx5_query_port_proto_admin +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x7001f5bd mlx5_destroy_unmap_eq +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x917ef782 mlx5_set_port_mtu +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa512b40a mlx5_query_port_vl_hw_cap +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa60dedac mlx5_db_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xafddba4c mlx5_core_access_reg +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xb269bd80 mlx5_db_alloc_node +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xb64ec71c mlx5_core_create_qp +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xbd6d2e36 mlx5_query_hca_vport_node_guid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xbdbfe666 mlx5_create_map_eq +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xc111f278 mlx5_query_hca_vport_context +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xc422e317 mlx5_buf_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xc97a183c mlx5_core_xrcd_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xcbed2a89 mlx5_query_port_proto_oper +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xced60fcb mlx5_core_mad_ifc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xcfeb09fc mlx5_query_port_ptys +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xda786f34 mlx5_core_qp_modify +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe2290cab mlx5_query_hca_vport_gid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe5d1e0a6 mlx5_query_port_link_width_oper +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe6594522 mlx5_query_port_admin_status +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xed052d58 mlx5_core_xrcd_dealloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac 0x06a7cb0d stmmac_suspend +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac 0x6080b4d2 stmmac_dvr_probe +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac 0xc9620e63 stmmac_dvr_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac 0xd6ab255a stmmac_resume +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac-platform 0x00bab48c stmmac_pltfr_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac-platform 0x3dde124b stmmac_pltfr_probe +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac-platform 0xc8c13d85 stmmac_pltfr_pm_ops +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x02c853d3 cpsw_ale_flush_multicast +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x08bc302f cpsw_ale_add_mcast +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x1ced4b6d cpsw_ale_control_get +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x2a0a9ec8 cpsw_ale_add_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x4a10cdad cpsw_ale_set_allmulti +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x50c114c0 cpsw_ale_start +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x557a83fd cpsw_ale_add_ucast +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x65ff0b25 cpsw_ale_del_mcast +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x7918b3f1 cpsw_ale_stop +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x7fa8a9bb cpsw_ale_del_ucast +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x822be5ce cpsw_ale_dump +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x97bff21c cpsw_ale_control_set +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0xab7a977a cpsw_ale_destroy +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0xbd90cfa5 cpsw_ale_create +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0xe6d7adef cpsw_ale_del_vlan +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x04fc9f74 macvlan_common_newlink +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x2e57253a macvlan_common_setup +EXPORT_SYMBOL_GPL drivers/net/macvlan 0xc63035a9 macvlan_dellink +EXPORT_SYMBOL_GPL drivers/net/macvlan 0xd14e0fe8 macvlan_link_register +EXPORT_SYMBOL_GPL drivers/net/macvtap 0x303e716d macvtap_get_socket +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0x3ea106da usbnet_cdc_status +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0x5fb02869 usbnet_cdc_bind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0x6294e791 usbnet_generic_cdc_bind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0xe133f768 usbnet_cdc_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x2c5a01d7 cdc_ncm_fill_tx_frame +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x32229fe9 cdc_ncm_rx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x3c31cc33 cdc_ncm_rx_verify_ndp16 +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x5599c08a cdc_ncm_bind_common +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x5c766fa9 cdc_ncm_select_altsetting +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x79a5f3da cdc_ncm_rx_verify_nth16 +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x7d1b4f3a cdc_ncm_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x8698b7d4 cdc_ncm_tx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x3ec82ff9 rndis_tx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x518b0389 rndis_rx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x92508147 rndis_command +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0xb80035ed generic_rndis_bind +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0xc42d258e rndis_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0xfcdedff3 rndis_status +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x25ed0a30 usbnet_skb_return +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x29ab2133 usbnet_get_ethernet_addr +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x2e74fa95 usbnet_write_cmd_nopm +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x3141841f usbnet_disconnect +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x321fbb63 usbnet_probe +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x39b5edb6 usbnet_status_stop +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x42081954 usbnet_suspend +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x44abe024 usbnet_defer_kevent +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x5661faa9 usbnet_unlink_rx_urbs +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x5a61fe9f usbnet_change_mtu +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x64ae754c usbnet_stop +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x73dc1b76 usbnet_start_xmit +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x78f8e7bb usbnet_resume +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x7a9970b5 usbnet_pause_rx +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x86283b9f usbnet_get_link +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x8739d416 usbnet_update_max_qlen +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x8c971a34 usbnet_read_cmd +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x8e816693 usbnet_get_settings +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x8f91d9c2 usbnet_get_endpoints +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x9a001f82 usbnet_set_msglevel +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x9a1b0115 usbnet_set_settings +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xa3419b7b usbnet_resume_rx +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xa7206783 usbnet_open +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xc38e93ca usbnet_status_start +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xc6215dfa usbnet_nway_reset +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xcc2812aa usbnet_get_drvinfo +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xd11155e8 usbnet_write_cmd_async +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xd2df50da usbnet_tx_timeout +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xe0393dba usbnet_purge_paused_rxq +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xed436fea usbnet_get_msglevel +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xf39f4897 usbnet_read_cmd_nopm +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xfc4d18ac usbnet_write_cmd +EXPORT_SYMBOL_GPL drivers/net/vxlan 0x86cce085 vxlan_sock_add +EXPORT_SYMBOL_GPL drivers/net/vxlan 0xaea8aad2 vxlan_get_rx_port +EXPORT_SYMBOL_GPL drivers/net/vxlan 0xe20d195d vxlan_xmit_skb +EXPORT_SYMBOL_GPL drivers/net/vxlan 0xf37065da vxlan_sock_release +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x100ee940 i2400m_post_reset +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x10cad35e i2400m_tx_msg_get +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x24e6b309 i2400m_reset +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x2a658c28 i2400m_cmd_enter_powersave +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x3bf3800e i2400m_setup +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x67224522 i2400m_init +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x817a76ee i2400m_pre_reset +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x91b3d946 i2400m_netdev_setup +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x97b88af0 i2400m_release +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xa10430b6 i2400m_rx +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xb00b793c i2400m_bm_cmd_prepare +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xc4ae86bb i2400m_tx +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xc727f660 i2400m_tx_msg_sent +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xd561141a i2400m_dev_bootstrap +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xd7da471a i2400m_dev_reset_handle +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xd83086df i2400m_error_recovery +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xd996b969 i2400m_is_boot_barker +EXPORT_SYMBOL_GPL drivers/net/wireless/cw1200/cw1200_core 0x028be25d cw1200_core_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/cw1200/cw1200_core 0x6561f338 cw1200_irq_handler +EXPORT_SYMBOL_GPL drivers/net/wireless/cw1200/cw1200_core 0x95c6f829 cw1200_can_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/cw1200/cw1200_core 0xc7f24c92 cw1200_core_release +EXPORT_SYMBOL_GPL drivers/net/wireless/ipw2x00/libipw 0x5baa423a libipw_rx_any +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0x26c602c5 _il_grab_nic_access +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0x6d9bac0b il_mac_tx_last_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0x8260ce76 il_dealloc_bcast_stations +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0x9ecee4dd il_remove_station +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0xd40d7d22 il_prep_station +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x0b76959e iwl_write_direct32 +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x1b074767 iwl_abort_notification_waits +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x27422495 iwl_set_bits_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x29f65e38 __iwl_info +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x2d245fee iwl_init_notification_wait +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x3359854d iwl_clear_bits_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x35033c81 iwl_phy_db_free +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x46b3d293 iwl_write_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x46f9cefd iwl_remove_notification +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x48fa9534 iwl_opmode_register +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x4bd79085 __iwl_crit +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x4ff1ad43 iwl_poll_direct_bit +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x51b657cd iwlwifi_mod_params +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x5c52e109 iwl_opmode_deregister +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x6287978b __iwl_err +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x6f7a94e5 __iwl_dbg +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x776221bf iwl_send_phy_db_data +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x77b0fd58 iwl_poll_bit +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x80c4fe0c iwl_parse_eeprom_data +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x822e27f5 iwl_set_bits_mask_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x82a7af8b iwl_force_nmi +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x8c5d5ab3 iwl_phy_db_set_section +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x8d9fe2fc iwl_read_direct32 +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x951dba68 iwl_parse_nvm_data +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x9c8e3fa2 iwl_wait_notification +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x9f9a1256 iwl_nvm_check_version +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xab4a9c3f iwl_notification_wait_notify +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xb111612c iwl_read_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xb8979af3 iwl_notification_wait_init +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xc14125fa iwl_parse_nvm_mcc_info +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xccc117ed iwl_read_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xf8f5fef5 __iwl_warn +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xff636762 iwl_phy_db_init +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x090eb5b4 lbs_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x0febfdbe lbs_queue_event +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x3249c281 lbs_get_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x4bfd403a lbs_get_firmware_async +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x4ee805ac lbs_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x5fdf38b8 lbs_disablemesh +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x675b2acc lbs_process_rxed_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x7f649f94 lbs_send_tx_feedback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x82bda2f0 lbs_cmd_copyback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x89cd6755 lbs_start_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x8f70ed50 lbs_stop_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xa7f986bd __lbs_cmd +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xb48c15b4 lbs_host_sleep_cfg +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xbe269936 lbs_notify_command_response +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xc60a1c68 lbs_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xdefcab30 lbs_host_to_card_done +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xf64277de lbs_debug +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xfe8c80f2 lbs_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x17eb3d1a lbtf_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x2312b5fe lbtf_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x4eae1ed0 lbtf_send_tx_feedback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x67ce50d4 lbtf_bcn_sent +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x844bd853 lbtf_cmd_response_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xb00e8f84 __lbtf_cmd +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xc85e6899 lbtf_debug +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xd43676e0 lbtf_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xe6a57d71 lbtf_cmd_copyback +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x02ff7b54 mwifiex_process_sleep_confirm_resp +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x063893b9 mwifiex_drv_info_dump +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x1a2f36df mwifiex_process_hs_config +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x2a918125 mwifiex_main_process +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x2b7808a1 mwifiex_write_data_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x31bd9748 mwifiex_alloc_dma_align_buf +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x33ddadf8 mwifiex_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x621e4db9 mwifiex_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x6637a975 mwifiex_deauthenticate_all +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x6bb06ca6 mwifiex_disable_auto_ds +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x73cd6a78 mwifiex_add_virtual_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x864185d2 mwifiex_cancel_hs +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x93d29ef1 mwifiex_handle_rx_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xa03e61b3 mwifiex_enable_hs +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xbeb539ef mwifiex_init_shutdown_fw +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xccfbeabd mwifiex_upload_device_dump +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xd350484a mwifiex_queue_main_work +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xfaaf68b7 mwifiex_del_virtual_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x27ceea1b p54_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x4661d9a5 p54_free_skb +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x55684f35 p54_read_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x57357bd6 p54_unregister_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x6bc42cd5 p54_parse_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x6bdd1100 p54_free_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x7f57d8c4 p54_register_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xd4621cf0 p54_parse_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xf11ce9b7 p54_init_common +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0x26725c7d rsi_mac80211_detach +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0x6e9c8935 rsi_read_pkt +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0x7201b98a rsi_dbg +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0x8363a226 rsi_91x_init +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0xbec88dc3 rsi_91x_deinit +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0xdb3ca0e5 rsi_zone_enabled +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x08c7145b rt2800_vco_calibration +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x0cf06860 rt2800_read_eeprom_efuse +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x0cfb3783 rt2800_conf_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x168a3225 rt2800_process_rxwi +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x2e0cf8b5 rt2800_write_tx_data +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x2ff75c1f rt2800_wait_wpdma_ready +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x342303c1 rt2800_get_txwi_rxwi_size +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x3a8c660f rt2800_write_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x40a0bcea rt2800_wait_csr_ready +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x445f50f8 rt2800_rfkill_poll +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x47019545 rt2800_disable_wpdma +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x556ce7d9 rt2800_link_tuner +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x5fd03de1 rt2800_txdone_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x6f624afb rt2800_config_ant +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x73f2dc36 rt2800_config_filter +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x76cc9991 rt2800_config +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x7d1d1499 rt2800_get_tsf +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x830c7fc1 rt2800_efuse_detect +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x85673f1e rt2800_mcu_request +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x883cb4d5 rt2800_get_key_seq +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x8d23903d rt2800_enable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x8fec4102 rt2800_link_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x90cbf5c6 rt2800_check_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x93b8c0b4 rt2800_gain_calibration +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x94e7da18 rt2800_config_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xa4dfb418 rt2800_config_erp +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xb3cad46b rt2800_disable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xb62b876c rt2800_sta_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xc7e5e4f1 rt2800_load_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xd28be707 rt2800_probe_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xd3997a8d rt2800_set_rts_threshold +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xd4bd4f68 rt2800_sta_add +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xe1dc974d rt2800_reset_tuner +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xe617d362 rt2800_config_shared_key +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xec7d7296 rt2800_clear_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xf767949e rt2800_get_survey +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xfcad307e rt2800_config_pairwise_key +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xfdb249c6 rt2800_ampdu_action +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x06763bd1 rt2800mmio_enable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x0fad1430 rt2800mmio_pretbtt_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x137450b4 rt2800mmio_toggle_irq +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x2505789d rt2800mmio_tbtt_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x2e36e9f8 rt2800mmio_fill_rxdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x3029e439 rt2800mmio_stop_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x30af1d89 rt2800mmio_init_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x409042f2 rt2800mmio_start_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x458e0d8a rt2800mmio_kick_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x5688497e rt2800mmio_init_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x5fa4db64 rt2800mmio_interrupt +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x7d31d2d4 rt2800mmio_clear_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x92c0bcd1 rt2800mmio_rxdone_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x9d756ff4 rt2800mmio_queue_init +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xc6a1455e rt2800mmio_autowake_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xc87e8190 rt2800mmio_get_txwi +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xd008126c rt2800mmio_get_entry_state +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xe28f94c7 rt2800mmio_txstatus_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xf69296b1 rt2800mmio_write_tx_desc +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x096e9f8e rt2x00lib_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x0a5d9f80 rt2x00queue_for_each_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x19a7e159 rt2x00queue_stop_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x1c7fb660 rt2x00lib_txdone_noinfo +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x22618449 rt2x00queue_unpause_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x24540f7a rt2x00mac_get_ringparam +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x34b8fc1d rt2x00mac_bss_info_changed +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x37852484 rt2x00lib_pretbtt +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x396b5dee rt2x00mac_set_antenna +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x3e76b712 rt2x00mac_sta_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x428335a1 rt2x00mac_rfkill_poll +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x44e23095 rt2x00queue_flush_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x495fe802 rt2x00mac_flush +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x49bf48e3 rt2x00queue_unmap_skb +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x4e38836b rt2x00lib_dmadone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x53af9bf9 rt2x00mac_add_interface +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x53bb7c79 rt2x00lib_probe_dev +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x5d9134aa rt2x00mac_get_antenna +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x60547619 rt2x00mac_set_key +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x63208ac4 rt2x00queue_pause_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x6a0702c8 rt2x00mac_config +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x6ea84fae rt2x00mac_remove_interface +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x708fad55 rt2x00lib_txdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x70f7d7cc rt2x00mac_sw_scan_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x76e4f626 rt2x00mac_sw_scan_start +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x80fec235 rt2x00mac_tx_frames_pending +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x829fa52b rt2x00lib_beacondone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x82d5e044 rt2x00lib_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x8cc626e5 rt2x00lib_dmastart +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x92c013f2 rt2x00mac_set_tim +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x9457a279 rt2x00mac_get_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x96001b08 rt2x00mac_sta_add +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x96951295 rt2x00lib_remove_dev +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xa4e8f7db rt2x00mac_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xb27099e2 rt2x00queue_start_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xb2c6d5a0 rt2x00mac_conf_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xbd91e7c9 rt2x00queue_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xcc4600f3 rt2x00lib_get_bssidx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xd3894af1 rt2x00queue_stop_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xd5cca8de rt2x00queue_start_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xd9febb43 rt2x00queue_get_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xe135e35c rt2x00mac_start +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xe6cf9cef rt2x00mac_configure_filter +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xe8a27c76 rt2x00lib_rxdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xecbb05a8 rt2x00mac_stop +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xfe8766d9 rt2x00queue_map_txskb +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0x2280cd71 rt2x00mmio_initialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0x4709ed1d rt2x00mmio_uninitialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0x4ea279d9 rt2x00mmio_rxdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0x932bd387 rt2x00mmio_regbusy_read +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0xba70eaba rt2x00mmio_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0x3b7d5584 rt2x00pci_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0x9cf8c607 rt2x00pci_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0xcf74d221 rt2x00pci_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0xeb4d2910 rt2x00pci_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x188ecb0f rt2x00usb_register_read_async +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x1ae42c10 rt2x00usb_uninitialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x2f6afb81 rt2x00usb_regbusy_read +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x3043f326 rt2x00usb_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x3b914052 rt2x00usb_vendor_request +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x47dbdbf1 rt2x00usb_disconnect +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x79fef584 rt2x00usb_vendor_req_buff_lock +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x8182d7f0 rt2x00usb_clear_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x92ea1c09 rt2x00usb_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x9ec38c5c rt2x00usb_watchdog +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xa2b0e374 rt2x00usb_disable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xa5ec0a8c rt2x00usb_initialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xb59a6b51 rt2x00usb_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xc8787104 rt2x00usb_kick_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xdfcdfee3 rt2x00usb_vendor_request_buff +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xef9a006c rt2x00usb_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x0714cd69 dm_restorepowerindex +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xa686e638 rtl92c_set_p2p_ps_offload_cmd +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xa986d582 dm_writepowerindex +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xcb874f93 dm_savepowerindex +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x13a041ba rtl8723_fw_free_to_go +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x25247569 rtl8723_enable_fw_download +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x26595cbc rtl8723_phy_path_a_standby +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x27d4e28f rtl8723_cmd_send_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x3a6bc3dd rtl8723_phy_save_mac_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x4824d479 rtl8723_phy_path_adda_on +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x4961ddc3 rtl8723be_firmware_selfreset +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x49b1328f rtl8723_write_fw +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x4c0c31d2 rtl8723_phy_set_bb_reg +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x5353567f rtl8723ae_firmware_selfreset +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x6fee3a6c rtl8723_phy_set_sw_chnl_cmdarray +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x7643e5fa rtl8723_phy_rf_serial_write +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x7b9192ac rtl8723_phy_txpwr_idx_to_dbm +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x7df7142e rtl8723_phy_init_bb_rf_reg_def +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x7f472942 rtl8723_dm_init_dynamic_bb_powersaving +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x8b6ff555 rtl8723_fw_block_write +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x92769660 rtl8723_download_fw +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x9781faf6 rtl8723_phy_reload_adda_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x9ca88e74 rtl8723_save_adda_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xa9cfe733 rtl8723_phy_rf_serial_read +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xaf4d6d94 rtl8723_phy_calculate_bit_shift +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xbc4dbb69 rtl8723_phy_pi_mode_switch +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xbe22cec3 rtl8723_fw_page_write +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xc79c90aa rtl8723_phy_query_bb_reg +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xc8bef637 rtl8723_dm_init_dynamic_txpower +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xcc73acd4 rtl8723_dm_init_edca_turbo +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xd741f2df rtl8723_phy_path_a_fill_iqk_matrix +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xd7e4f1f5 rtl8723_phy_mac_setting_calibration +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xdcd85905 rtl8723_phy_reload_mac_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x10a9759f rtl_init_core +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x221fec39 rtl_tx_mgmt_proc +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x241dedc1 rtl_tid_to_ac +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x2921a4d4 rtl_btc_status_false +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x3032f607 rtl_ips_nic_on +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x36d220f0 rtl_action_proc +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x36d36a83 rtl_recognize_peer +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x4067d1ff read_efuse_byte +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x680a5791 rtl_beacon_statistic +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x6b0dc9af rtl_attribute_group +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xafcdc668 rtl_global_var +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xb021a60a rtl_deinit_rfkill +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xb8113d08 rtl_swlps_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xbf48768b rtl_ops +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xcad10fa3 rtl_p2p_info +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xcfdbc2dd rtl_init_rx_config +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xd73e1f5d rtl_deinit_core +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xf49ac00c rtl_is_special_data +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xf699f4a9 rtl_deinit_deferred_work +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xf8ff6add rtl_lps_change_work_callback +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xf9f38248 rtl_dbgp_flag_init +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0x71fa2fa4 wl1251_init_ieee80211 +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0x79537fd2 wl1251_free_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0xb76a899b wl1251_alloc_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x0351decb wlcore_boot_run_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x06fe2fd3 wl1271_cmd_data_path +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x0cec4e6e wlcore_event_roc_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x10d9abfe wlcore_event_soft_gemini_sense +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x1175557e wl1271_tx_min_rate_get +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x1417f838 wlcore_event_max_tx_failure +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x14a25078 wlcore_event_sched_scan_completed +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x2cb1716d wlcore_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x3704d26b wl1271_acx_sleep_auth +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x379ae8fb wl1271_acx_set_ht_capabilities +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x491c2691 wlcore_event_ba_rx_constraint +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x4ea4847c wlcore_event_rssi_trigger +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x50e61c96 wl1271_acx_init_mem_config +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x53dff67d wl12xx_debug_level +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x55cc3f6c wlcore_synchronize_interrupts +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x5ebda8cb wlcore_free_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x5fecf6a9 wlcore_enable_interrupts +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x69944fc0 wlcore_scan_sched_scan_ssid_list +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x69ed714e wl1271_ps_elp_wakeup +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x6a473e52 wl1271_tx_flush +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x6c3aeabf wl1271_debugfs_update_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x77092dcc wlcore_get_native_channel_type +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x81fe8de9 wlcore_boot_upload_nvs +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x8982dcd8 wlcore_alloc_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x911863ca wl12xx_acx_mem_cfg +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x91da5146 wl1271_format_buffer +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x9d521a86 wlcore_event_channel_switch +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x9fa98caf wl12xx_cmd_build_probe_req +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xa41c3827 wlcore_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xa5d4025d wl1271_cmd_send +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xadd1ff5e wlcore_event_beacon_loss +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xb72427bc wlcore_translate_addr +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xbe81aa5a wlcore_boot_upload_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xc943f9df wlcore_set_partition +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xca5bff4d wl1271_cmd_configure +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xd3725e72 wlcore_set_key +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xd4799df3 wl1271_cmd_test +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xd7a83e1c wlcore_disable_interrupts +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xdb9df02c wlcore_event_inactive_sta +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xe55798c6 wlcore_cmd_wait_for_event_or_timeout +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xe5b37e9b wl1271_acx_pm_config +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xe61abac9 wlcore_event_dummy_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xea6aa1e7 wl1271_ps_elp_sleep +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xf0f11626 wlcore_disable_interrupts_nosync +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xf5ce8aa5 wlcore_scan_sched_scan_results +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xfdfc4cf7 wlcore_set_scan_chan_params +EXPORT_SYMBOL_GPL drivers/nfc/mei_phy 0x4f22ec7e nfc_mei_phy_free +EXPORT_SYMBOL_GPL drivers/nfc/mei_phy 0x9231ee80 mei_phy_ops +EXPORT_SYMBOL_GPL drivers/nfc/mei_phy 0xd7265f4d nfc_mei_phy_alloc +EXPORT_SYMBOL_GPL drivers/nfc/nfcmrvl/nfcmrvl 0x0bda35b4 nfcmrvl_nci_recv_frame +EXPORT_SYMBOL_GPL drivers/nfc/nfcmrvl/nfcmrvl 0x3137f1c3 nfcmrvl_parse_dt +EXPORT_SYMBOL_GPL drivers/nfc/nfcmrvl/nfcmrvl 0x4acd5fcc nfcmrvl_nci_unregister_dev +EXPORT_SYMBOL_GPL drivers/nfc/nfcmrvl/nfcmrvl 0x9a383933 nfcmrvl_nci_register_dev +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x32d121f3 st_nci_remove +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x920f59dc st_nci_hci_event_received +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x95557220 st_nci_discover_se +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0xcdbd05ee st_nci_hci_load_session +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0xd69f00aa st_nci_hci_cmd_received +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0xe7fc414c st_nci_enable_se +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0xefe536dc st_nci_disable_se +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0xf75a9eff st_nci_probe +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x2f837866 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 0x82e6c13d ntb_transport_qp_num +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x947a5e18 ntb_transport_create_queue +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x9c992c8f ntb_transport_link_up +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0xad3d62d5 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/pinctrl/intel/pinctrl-intel 0x1e8c4ca2 intel_pinctrl_remove +EXPORT_SYMBOL_GPL drivers/pinctrl/intel/pinctrl-intel 0x515a732a intel_pinctrl_resume +EXPORT_SYMBOL_GPL drivers/pinctrl/intel/pinctrl-intel 0x919d31e2 intel_pinctrl_suspend +EXPORT_SYMBOL_GPL drivers/pinctrl/intel/pinctrl-intel 0xc20054d0 intel_pinctrl_probe +EXPORT_SYMBOL_GPL drivers/platform/x86/asus-wmi 0x1f278d67 asus_wmi_register_driver +EXPORT_SYMBOL_GPL drivers/platform/x86/asus-wmi 0x707e45ed 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/intel_ips 0x46809fa9 ips_link_to_i915_driver +EXPORT_SYMBOL_GPL drivers/platform/x86/intel_pmc_ipc 0x56235c72 intel_pmc_ipc_command +EXPORT_SYMBOL_GPL drivers/platform/x86/intel_pmc_ipc 0x75068282 intel_pmc_ipc_raw_cmd +EXPORT_SYMBOL_GPL drivers/platform/x86/intel_pmc_ipc 0xdea07053 intel_pmc_ipc_simple_command +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/thinkpad_acpi 0x706cdcef tpacpi_led_set +EXPORT_SYMBOL_GPL drivers/platform/x86/wmi 0x3ecf6cfc wmi_install_notify_handler +EXPORT_SYMBOL_GPL drivers/platform/x86/wmi 0x64ebe677 wmi_query_block +EXPORT_SYMBOL_GPL drivers/platform/x86/wmi 0xa9b7afd8 wmi_set_block +EXPORT_SYMBOL_GPL drivers/platform/x86/wmi 0xb5a6ebe2 wmi_remove_notify_handler +EXPORT_SYMBOL_GPL drivers/platform/x86/wmi 0xc5e3dddf wmi_get_event_data +EXPORT_SYMBOL_GPL drivers/platform/x86/wmi 0xc9d4d6d1 wmi_has_guid +EXPORT_SYMBOL_GPL drivers/platform/x86/wmi 0xe2426710 wmi_evaluate_method +EXPORT_SYMBOL_GPL drivers/power/pcf50633-charger 0x077f4fc7 pcf50633_mbc_get_status +EXPORT_SYMBOL_GPL drivers/power/pcf50633-charger 0x20e9d8f6 pcf50633_mbc_get_usb_online_status +EXPORT_SYMBOL_GPL drivers/power/pcf50633-charger 0x91e2bddd pcf50633_mbc_usb_curlim_set +EXPORT_SYMBOL_GPL drivers/pwm/pwm-lpss 0x21e22848 pwm_lpss_byt_info +EXPORT_SYMBOL_GPL drivers/pwm/pwm-lpss 0x81ca2e1d pwm_lpss_bsw_info +EXPORT_SYMBOL_GPL drivers/pwm/pwm-lpss 0xa9bce8f8 pwm_lpss_probe +EXPORT_SYMBOL_GPL drivers/pwm/pwm-lpss 0xb563cdb0 pwm_lpss_remove +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x3144a6ff mc13xxx_fixed_regulator_ops +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0xf0bca7b4 mc13xxx_fixed_regulator_set_voltage +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0xf78633df mc13xxx_regulator_ops +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x1428ec75 wm8350_ldo_set_slot +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x5fa99b06 wm8350_dcdc25_set_mode +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0xb15b849e wm8350_dcdc_set_slot +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0xd1fcab6c wm8350_register_regulator +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0xd9077a3c wm8350_register_led +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0xf6b2f6b3 wm8350_isink_set_flash +EXPORT_SYMBOL_GPL drivers/regulator/wm8400-regulator 0xad3055d7 wm8400_register_regulator +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x031d4964 cxgbi_ep_poll +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x03d2cb92 cxgbi_conn_pdu_ready +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x1538ed7f cxgbi_sock_rcv_abort_rpl +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x1984869a cxgbi_sock_closed +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x216ece05 cxgbi_hbas_remove +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x25cea012 cxgbi_get_host_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x271cd9d7 cxgbi_set_conn_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x2db336aa cxgbi_create_session +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x34917d15 cxgbi_conn_init_pdu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x3640c5ac cxgbi_bind_conn +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x37d49fc4 cxgbi_hbas_add +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x3a2c4588 cxgbi_sock_purge_wr_queue +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x3a5c4389 cxgbi_ddp_page_size_factor +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x3dcc68db cxgbi_sock_check_wr_invariants +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x425672a7 cxgbi_sock_fail_act_open +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x481e1186 cxgbi_ep_connect +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x4be0877e cxgbi_sock_established +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x5a32c92d cxgbi_get_ep_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x61711f7d cxgbi_device_find_by_netdev +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x65abbf8a cxgbi_device_portmap_create +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x6942d9d6 cxgbi_device_register +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x6c91c8d1 cxgbi_sock_act_open_req_arp_failure +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x766fb352 cxgbi_set_host_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x78229d02 cxgbi_sock_rcv_wr_ack +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x78db80c0 cxgbi_create_conn +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x7fdb6004 cxgbi_device_unregister_all +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x8c2ba369 cxgbi_ddp_ppod_clear +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x9143b972 cxgbi_sock_skb_entail +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xa13d70bd cxgbi_ddp_cleanup +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xa184e28c cxgbi_get_conn_stats +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xa7627e2e cxgbi_device_unregister +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xabc3199b cxgbi_conn_tx_open +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xbd0ff67e cxgbi_parse_pdu_itt +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xbdc55f21 cxgbi_device_find_by_netdev_rcu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xc050bf83 cxgbi_sock_rcv_close_conn_rpl +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xcc016236 cxgbi_ddp_init +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xcedfcc87 cxgbi_device_find_by_lldev +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xd2e5fb16 cxgbi_ep_disconnect +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xd769dbd2 cxgbi_destroy_session +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xd76a7181 cxgbi_conn_alloc_pdu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xe11c4d3e cxgbi_ddp_ppod_set +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xe4d77724 cxgbi_sock_free_cpl_skbs +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xe9ef7b97 cxgbi_sock_rcv_peer_close +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xef346615 cxgbi_attr_is_visible +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xef9b912a cxgbi_conn_xmit_pdu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xf0f24a8c cxgbi_sock_select_mss +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xf2b1b7f9 cxgbi_iscsi_init +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xf358b2de cxgbi_cleanup_task +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xf3c6b226 cxgbi_device_portmap_cleanup +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xf8de42b5 cxgbi_iscsi_cleanup +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x39d65eb6 scsi_dh_attached_handler_name +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x593a36c2 scsi_dh_handler_exist +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x7c7ce30f scsi_register_device_handler +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x96033ac6 scsi_unregister_device_handler +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0xb244338d scsi_dh_detach +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0xb2d0c61f scsi_dh_attach +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0xd0a352af scsi_dh_activate +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0xdb9ca90f scsi_dh_set_params +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x08662ec4 fcoe_validate_vport_create +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x0fb51275 fcoe_queue_timer +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x1b76eb7d fcoe_get_paged_crc_eof +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x2012e916 fcoe_get_lesb +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x2dca62b9 fcoe_ctlr_get_lesb +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x374c1e1c fcoe_wwn_from_mac +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x4096f891 fcoe_fc_crc +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x53a6d20e fcoe_start_io +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x5b15d8f5 fcoe_fcf_device_add +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x64eb1f16 fcoe_get_wwn +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x660644df fcoe_ctlr_device_add +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x6ec74fac __fcoe_get_lesb +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x7e3e439c fcoe_ctlr_device_delete +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x81c9d1fe fcoe_link_speed_update +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x84b3d915 fcoe_wwn_to_str +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x9c58e5b2 fcoe_libfc_config +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x9c88b852 fcoe_check_wait_queue +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xa054652b fcoe_fcf_device_delete +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xf94c3d93 fcoe_clean_pending_queue +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x1220a3b2 iscsi_boot_create_target +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x20ba7bba iscsi_boot_create_ethernet +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x9e6f04e1 iscsi_boot_create_initiator +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0xad82ccce iscsi_boot_create_kset +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0xae7d5050 iscsi_boot_create_host_kset +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0xe1fae296 iscsi_boot_destroy_kset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x0e1385b8 __iscsi_put_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x12b2ad06 iscsi_switch_str_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x173b932e iscsi_target_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x196d73f9 iscsi_put_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x23279fdb iscsi_conn_queue_work +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x2420ef39 iscsi_itt_to_ctask +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x291a6350 iscsi_prep_data_out_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x2f17dbac iscsi_update_cmdsn +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x3357d14d iscsi_itt_to_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x381aed64 iscsi_complete_scsi_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x3bef2f73 iscsi_pool_init +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x4abdc5e7 iscsi_eh_abort +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x4cfef488 iscsi_conn_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x4ebe7262 iscsi_eh_session_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x527281b8 iscsi_host_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x52bf117d iscsi_session_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x55bd48be iscsi_conn_bind +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x626d98de iscsi_verify_itt +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x648becd1 iscsi_session_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x6e052a31 iscsi_requeue_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x6f76e536 iscsi_session_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x7033a29f iscsi_complete_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x722421ca iscsi_host_remove +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x755fdf8d iscsi_host_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x791f5be7 iscsi_queuecommand +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x84faf308 iscsi_host_add +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x86f6d5de iscsi_suspend_queue +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x89ca115f iscsi_conn_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x8c608a3c iscsi_suspend_tx +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x8d303b1b iscsi_pool_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x94b1e477 iscsi_conn_failure +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x98ec1678 iscsi_session_recovery_timedout +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xac20d15e iscsi_eh_device_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xb54ad754 __iscsi_complete_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xbf8c9136 iscsi_conn_get_addr_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xd69e1523 iscsi_set_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xd6c39514 iscsi_host_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xdd195bc8 iscsi_conn_stop +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xdd3eb7f5 iscsi_session_failure +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xe1c66c0e iscsi_conn_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xe22b13fa iscsi_eh_target_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xe4884623 iscsi_host_set_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xe7b6a959 iscsi_conn_start +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xf184cc36 __iscsi_get_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xf24d7a85 iscsi_eh_recover_target +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xf60338be iscsi_conn_send_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x02461153 iscsi_tcp_recv_skb +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x0d2ce4f8 iscsi_tcp_segment_unmap +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x0e943291 iscsi_tcp_segment_done +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x14e436ee iscsi_tcp_dgst_header +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x24182739 iscsi_segment_init_linear +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x48489120 iscsi_tcp_recv_segment_is_hdr +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x49dfd4aa iscsi_segment_seek_sg +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x53d6982b iscsi_tcp_conn_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x750799e6 iscsi_tcp_cleanup_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x8180d498 iscsi_tcp_task_init +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xaacb2c58 iscsi_tcp_task_xmit +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xb4ebe6c2 iscsi_tcp_conn_get_stats +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xb543a0a1 iscsi_tcp_r2tpool_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xbf9c1dd5 iscsi_tcp_r2tpool_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xdb0b3a7b iscsi_tcp_set_max_r2t +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xdb923e83 iscsi_tcp_hdr_recv_prep +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xecc70e63 iscsi_tcp_conn_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x14f86978 sas_eh_bus_reset_handler +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x1588dd8c sas_ata_schedule_reset +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x1b21af21 sas_slave_configure +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x216de974 sas_target_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x37eec8f1 sas_phy_reset +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x43392713 sas_queuecommand +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x489e900f sas_bios_param +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x4a72aa27 sas_unregister_ha +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x57b34a4a sas_get_local_phy +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x58bd34a4 sas_alloc_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x6eccced6 sas_ssp_task_response +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x79d956cc sas_eh_abort_handler +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x7efb0219 sas_eh_device_reset_handler +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x86d87237 sas_target_destroy +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x885a29ab sas_register_ha +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x8d239381 sas_domain_attach_transport +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x8e68b8de sas_alloc_slow_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x907e1a75 sas_drain_work +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x92dac61e sas_change_queue_depth +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x9a610abd sas_free_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xa09e0e9d sas_domain_release_transport +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xc26f7f03 sas_ioctl +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xcd2ca7de sas_request_addr +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xe3938967 sas_task_abort +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x034c151d iscsi_conn_login_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x0c24b897 iscsi_unblock_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x0eec2b44 iscsi_session_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x11d8a697 iscsi_remove_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x1de03848 iscsi_create_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x2fc73677 iscsi_destroy_flashnode_sess +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x377185a5 iscsi_conn_error_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x3a374f9d iscsi_lookup_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x3acba205 iscsi_is_session_online +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x3dc7838c iscsi_create_iface +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x44667fbb iscsi_get_port_speed_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x514f5aa0 iscsi_is_session_dev +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x5cbe5400 iscsi_recv_pdu +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x5e33b8ea iscsi_add_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x5ea4bedd iscsi_host_for_each_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x699fe53e iscsi_get_discovery_parent_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x6ef5213b iscsi_block_scsi_eh +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x763c46d0 iscsi_block_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x7c604fac iscsi_scan_finished +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x7ffb6933 iscsi_destroy_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x84a005f1 iscsi_get_router_state_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x883eebf5 iscsi_alloc_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x8aef8f15 iscsi_find_flashnode_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x8d550730 iscsi_destroy_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x93c4bc55 iscsi_destroy_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x9ac1b91b iscsi_is_flashnode_conn_dev +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x9c5c8871 iscsi_create_flashnode_sess +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x9dd9d651 iscsi_session_chkready +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xa024515b iscsi_offload_mesg +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xa26c09c1 iscsi_create_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xaf9eed4f iscsi_get_port_state_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xafca250f iscsi_flashnode_bus_match +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xb54e3f7c iscsi_find_flashnode_sess +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xb68e4483 iscsi_create_flashnode_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xba2fbed3 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 0xbd7c79a8 iscsi_register_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xc34646d7 iscsi_destroy_iface +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xd7bdf34d iscsi_free_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xe613640a iscsi_ping_comp_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xefc9e9c4 iscsi_post_host_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xfbac61c4 iscsi_unregister_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xfc81554c iscsi_destroy_all_flashnode +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0x217ab442 sas_disable_tlr +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0x3302655a sas_is_tlr_enabled +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0x8c753fbb sas_enable_tlr +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0xdd10d217 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 0xcffa2aff spi_populate_width_msg +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_spi 0xfdabece0 spi_populate_tag_msg +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x3dc68bde srp_attach_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x9b16f5f9 srp_stop_rport_timers +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x9f6a6d08 srp_rport_add +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0xaef6fe7b srp_release_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0xee891cc0 srp_tmo_valid +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0xfa6358fb srp_rport_del +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0xfeb126bc srp_remove_host +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0x8b9c8c20 ufshcd_dme_set_attr +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0xa0739ded ufshcd_init +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0xae183514 ufshcd_remove +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0xc00bb1fa ufshcd_dme_get_attr +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x6774d374 spi_bitbang_setup +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0xac6d76bb spi_bitbang_cleanup +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0xb2e3396d spi_bitbang_setup_transfer +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0xd4563051 spi_bitbang_start +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0xef24da9e spi_bitbang_stop +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0x11022dc0 dw_spi_resume_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0x1a549f67 dw_spi_suspend_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0x345eee58 dw_spi_remove_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0xb554c18a dw_spi_add_host +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x1187af84 spmi_controller_alloc +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x1dfee68e spmi_device_add +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x3263c14d spmi_command_shutdown +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x390d9acd spmi_controller_remove +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x3e58cd49 spmi_register_zero_write +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x55a5c32a spmi_register_write +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x5d7dca72 spmi_device_alloc +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x716bd3bc spmi_command_sleep +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x74ecbf4e spmi_driver_register +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xa01f0067 spmi_device_remove +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xa02ea28a spmi_register_read +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xad8a5f69 spmi_ext_register_read +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xcd50b18c spmi_ext_register_write +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xd1ba0a81 spmi_controller_add +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xd685823a spmi_ext_register_writel +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xda375a65 spmi_command_reset +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xe6fab6c1 spmi_command_wakeup +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xe7306a52 spmi_ext_register_readl +EXPORT_SYMBOL_GPL drivers/ssb/ssb 0x67b01fb4 ssb_pmu_spuravoid_pllupdate +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x06f767eb comedi_legacy_detach +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x070f37df comedi_request_region +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x0cd330f4 range_unknown +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x1279926f comedi_buf_write_alloc +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x1ab6316f __comedi_request_region +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x1e558956 comedi_set_spriv_auto_free +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x1fbd73a2 comedi_timeout +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x21102f87 range_0_32mA +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x24eac147 comedi_event +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x26fbda86 comedi_driver_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x27779c08 comedi_bytes_per_scan +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x2f0ad9d3 range_bipolar5 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x3096f4f3 comedi_dio_insn_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x3466b778 comedi_dio_update_state +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x3db49b7f comedi_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x4236eaaf range_4_20mA +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x47213339 comedi_inc_scan_progress +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x4f0c6947 comedi_load_firmware +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x4fe634f3 range_bipolar2_5 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x54125274 comedi_dev_get_from_minor +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x5a29ee4b comedi_is_subdevice_running +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x5cfcc960 comedi_alloc_subdev_readback +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x5df8173a comedi_buf_read_n_available +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x619c1352 comedi_auto_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x69896b06 comedi_set_hw_dev +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x6b1f1af7 comedi_buf_read_samples +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x7b060605 comedi_readback_insn_read +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x8113872c range_unipolar10 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x8858f9af comedi_dev_put +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x9078f38e comedi_buf_read_free +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xa531163b comedi_buf_write_free +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xa9479c89 comedi_buf_read_alloc +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xab5b285b comedi_nscans_left +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xb304f5b7 comedi_alloc_devpriv +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xb679cebc range_0_20mA +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xb771c284 comedi_nsamples_left +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 0xc5f79479 comedi_auto_unconfig +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xdb2044b2 range_unipolar5 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xdd3c84a7 comedi_buf_write_samples +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xe101f853 comedi_check_chanlist +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xe16e751e comedi_alloc_subdevices +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xedb5cfea comedi_handle_events +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xf3228617 comedi_alloc_spriv +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0x07ca1de0 comedi_pci_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0x163903c6 comedi_pci_auto_unconfig +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0x3bc489ff comedi_to_pci_dev +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0x774f4953 comedi_pci_driver_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0x8e12d6f1 comedi_pci_auto_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0xc3ce288d comedi_pci_enable +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0xd7ddb218 comedi_pci_detach +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0xe2103dd9 comedi_pci_disable +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pcmcia 0x22b40fe4 comedi_pcmcia_driver_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pcmcia 0x3ad36ed7 comedi_pcmcia_enable +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pcmcia 0x544fb5e3 comedi_pcmcia_auto_unconfig +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pcmcia 0xaa17d3f8 comedi_pcmcia_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pcmcia 0xcd9809c0 comedi_pcmcia_disable +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pcmcia 0xcf68eb0a comedi_pcmcia_auto_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pcmcia 0xdb63e1f0 comedi_to_pcmcia_dev +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0x3251ac3f comedi_to_usb_dev +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0x4893eeff comedi_usb_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0x9d3c4c4e comedi_usb_driver_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0xbecc49e8 comedi_usb_auto_unconfig +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0xf4eb7738 comedi_to_usb_interface +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0xf8fe2a5d comedi_usb_auto_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/addi_watchdog 0x57ff3427 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 0x3c72cf86 amplc_dio200_common_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/amplc_dio200_common 0x4997d55d amplc_dio200_set_enhance +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/amplc_pc236_common 0x9045ba64 amplc_pc236_common_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x0166308a comedi_8254_update_divisors +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x1cb25060 comedi_8254_write +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x6ff97916 comedi_8254_set_mode +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x7e424a4d comedi_8254_status +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x92b4b75a comedi_8254_cascade_ns_to_timer +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x950df5a9 comedi_8254_read +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0xa3a83669 comedi_8254_subdevice_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0xbe41c80e comedi_8254_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0xca3bc36a comedi_8254_mm_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0xcd8ba7ae comedi_8254_pacer_enable +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0xd4035f31 comedi_8254_ns_to_timer +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0xe38589cd comedi_8254_set_busy +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0xeb9b4331 comedi_8254_load +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8255 0x0aaa3117 subdev_8255_regbase +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8255 0x89169bf5 subdev_8255_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8255 0xa4c42762 subdev_8255_mm_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_isadma 0x0d68fcd9 comedi_isadma_poll +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 0x6815a033 comedi_isadma_free +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_isadma 0xa3d01a85 comedi_isadma_program +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_isadma 0xa7ebb8a3 comedi_isadma_set_mode +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_isadma 0xa8244237 comedi_isadma_alloc +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/das08 0x95b4f572 das08_common_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x061dd043 mite_alloc_ring +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x06801401 mite_detach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x0b064b14 mite_dma_arm +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x125bf0b0 mite_sync_input_dma +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x1b43899d mite_free_ring +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x257a514c mite_request_channel_in_range +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x2885b9cd mite_bytes_written_to_memory_ub +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x370694dd mite_bytes_read_from_memory_ub +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x4a488292 mite_prep_dma +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x4cc8f5e5 mite_buf_change +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x4df6ba1a mite_sync_output_dma +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x56168f15 mite_alloc +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x8c44cb27 mite_dma_tcr +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x8dbba662 mite_bytes_written_to_memory_lb +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x92388b72 mite_bytes_read_from_memory_lb +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x96f0a548 mite_setup2 +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xac99e47d mite_get_status +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xbd39e55d mite_release_channel +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xc782d144 mite_bytes_in_transit +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xd53f2641 mite_dma_disarm +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xe80fd413 mite_done +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_common 0x7d100482 labpc_common_detach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_common 0xa98bea38 labpc_common_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_isadma 0x756a88a3 labpc_init_dma_chan +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_isadma 0x97181421 labpc_drain_dma +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_isadma 0xb16cc6bd labpc_handle_dma_status +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_isadma 0xc33b102f labpc_free_dma_chan +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_isadma 0xf862832a labpc_setup_dma +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x13f987ad ni_tio_set_gate_src +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x44e3c6d5 ni_gpct_device_construct +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x490d8cfb ni_gpct_device_destroy +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x7355dc1d ni_tio_insn_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x8557502f ni_tio_init_counter +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0xabfb4df8 ni_tio_arm +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0xd16eba8f ni_tio_insn_read +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0xdbe58b54 ni_tio_insn_write +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0x42ee16b7 ni_tio_handle_interrupt +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0x4f190f2b ni_tio_cmd +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0x5c1ae1df ni_tio_set_mite_channel +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0x91f15484 ni_tio_cmdtest +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0x99139403 ni_tio_acknowledge +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0xd14a585b ni_tio_cancel +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x0928b447 comedi_get_n_channels +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x745bf171 comedi_open +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x7a0e9a3e comedi_dio_bitfield2 +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x9c73fa4e comedi_dio_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0xcbc288d7 comedi_close +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0xcbc61fb3 comedi_dio_get_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0xd90f60db comedi_find_subdevice_by_type +EXPORT_SYMBOL_GPL drivers/staging/iio/addac/adt7316 0xbe7d8431 adt7316_pm_ops +EXPORT_SYMBOL_GPL drivers/staging/lustre/lustre/obdclass/obdclass 0x15b753a1 lustre_sysfs_ops +EXPORT_SYMBOL_GPL drivers/staging/lustre/lustre/obdclass/obdclass 0x31ddc1fa lustre_kobj +EXPORT_SYMBOL_GPL drivers/staging/lustre/lustre/obdclass/obdclass 0x62b36cf2 lustre_attr_store +EXPORT_SYMBOL_GPL drivers/staging/lustre/lustre/obdclass/obdclass 0xaf4ee27e debugfs_lustre_root +EXPORT_SYMBOL_GPL drivers/staging/lustre/lustre/obdclass/obdclass 0xe1255c2a lustre_attr_show +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x0e81c76d spk_serial_out +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x14f06fe7 spk_serial_in_nowait +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x24465eaf spk_var_store +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x291066ce spk_serial_synth_probe +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x2ab8daa7 speakup_info +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x3bc6405d spk_do_catch_up +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 0x475e158a synth_request_region +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x4ee966d6 spk_synth_immediate +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x71bbdd60 synth_add +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x8b3aeb81 speakup_event +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x8e146195 synth_release_region +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x9a343e6a synth_remove +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x9a888082 synth_buffer_getc +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xa7bde215 spk_synth_is_alive_nop +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xabf8f738 spk_var_show +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xb48956f8 synth_buffer_peek +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xbbd15a51 speakup_start_ttys +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xc766ae09 synth_printf +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xd1b551a2 spk_get_var +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xd1ba1335 spk_synth_is_alive_restart +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xe7cd4558 spk_serial_release +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xe7e810f8 spk_serial_in +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xf498954e spk_synth_flush +EXPORT_SYMBOL_GPL drivers/thermal/int340x_thermal/int340x_thermal_zone 0x0671ddac int340x_thermal_zone_remove +EXPORT_SYMBOL_GPL drivers/thermal/int340x_thermal/int340x_thermal_zone 0x1a5f6515 int340x_thermal_zone_add +EXPORT_SYMBOL_GPL drivers/thermal/intel_soc_dts_iosf 0x08626815 intel_soc_dts_iosf_add_read_only_critical_trip +EXPORT_SYMBOL_GPL drivers/thermal/intel_soc_dts_iosf 0x33f90317 intel_soc_dts_iosf_interrupt_handler +EXPORT_SYMBOL_GPL drivers/thermal/intel_soc_dts_iosf 0x48e4dd6d intel_soc_dts_iosf_init +EXPORT_SYMBOL_GPL drivers/thermal/intel_soc_dts_iosf 0x6bb8e4c8 intel_soc_dts_iosf_exit +EXPORT_SYMBOL_GPL drivers/tty/n_tracesink 0x585ebaac n_tracesink_datadrain +EXPORT_SYMBOL_GPL drivers/uio/uio 0x42617c7f __uio_register_device +EXPORT_SYMBOL_GPL drivers/uio/uio 0x8b286d1b uio_event_notify +EXPORT_SYMBOL_GPL drivers/uio/uio 0xd339e95f uio_unregister_device +EXPORT_SYMBOL_GPL drivers/usb/atm/usbatm 0x4b948536 usbatm_usb_probe +EXPORT_SYMBOL_GPL drivers/usb/atm/usbatm 0x96ce499a usbatm_usb_disconnect +EXPORT_SYMBOL_GPL drivers/usb/chipidea/ci_hdrc 0x4243d7c8 ci_hdrc_add_device +EXPORT_SYMBOL_GPL drivers/usb/chipidea/ci_hdrc 0x8df24813 ci_hdrc_remove_device +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0x4be2ce5d ulpi_register_driver +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0x527e10c9 ulpi_unregister_interface +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0x5eb567bb ulpi_register_interface +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0x92454ef0 ulpi_read +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0xbbc585e6 ulpi_write +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0xbd61c55f ulpi_unregister_driver +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x059ff563 gether_setup_name_default +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x09933bae gether_disconnect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x0d2d9e77 gether_get_host_addr_cdc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x1837ad96 gether_set_host_addr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x4687d5d0 gether_get_ifname +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x4eb65cea gether_register_netdev +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x6d3f4bce gether_setup_name +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x6f3bd4eb gether_get_host_addr_u8 +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x8878cfa6 gether_cleanup +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x8af7f18f gether_connect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x8ced83c9 gether_set_qmult +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x9245f2e8 gether_get_host_addr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xbfff08f7 gether_get_qmult +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xc9f3808e gether_set_dev_addr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xe7bfd356 gether_get_dev_addr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xe9681552 gether_set_gadget +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0x33bfdca2 gserial_alloc_line +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0x89263781 gs_free_req +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0xb6652875 gserial_free_line +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0xc4fcdec4 gserial_disconnect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0xcac6b615 gserial_connect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0xf9e5ceeb gs_alloc_req +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_fs 0x4ea88a69 ffs_name_dev +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_fs 0xa3e77478 ffs_lock +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_fs 0xcc543c97 ffs_single_dev +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x06b0e0db fsg_lun_open +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x07abe2be fsg_common_remove_lun +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x0a5230df fsg_common_set_nluns +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x0bb0c24f 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 0x1b1cc3af store_cdrom_address +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 0x2d10b6a7 fsg_common_create_lun +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x2dd24a40 fsg_lun_close +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x3121c8a2 fsg_show_removable +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 0x423845e4 fsg_ss_bulk_in_comp_desc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x51707c29 fsg_common_run_thread +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 0x6792be56 fsg_store_file +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 0x8c5c7c22 fsg_store_ro +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x8f048aab fsg_show_file +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x90cf8557 fsg_store_removable +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x93268ccd fsg_lun_fsync_sub +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 0x99023bfc fsg_common_put +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 0x9dc025a5 fsg_common_free_luns +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xa46e6443 fsg_common_get +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 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 0xc7832d66 fsg_show_ro +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xd0fffa13 fsg_show_nofua +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xd3ae3b65 fsg_common_create_luns +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xd3b76707 fsg_show_cdrom +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xd468f882 fsg_common_set_ops +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xe4d1591e fsg_config_from_params +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 0xfee1a563 fsg_store_nofua +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xff0cafd5 fsg_common_set_cdev +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x0ad824b6 rndis_set_param_vendor +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x3035ca62 rndis_deregister +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x3794952b rndis_signal_disconnect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x40648d03 rndis_set_host_mac +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x4bc9857c rndis_msg_parser +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x4cbf2ca0 rndis_borrow_net +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x4e072fd9 rndis_add_hdr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x58e3b3c3 rndis_get_next_response +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x8e661ee2 rndis_rm_hdr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x91606bfe rndis_set_param_dev +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xa04c4bc8 rndis_uninit +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xc8d660c6 rndis_free_response +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xca802c78 rndis_signal_connect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xcc09abf7 rndis_register +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xfdfb1302 rndis_set_param_medium +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x03300a64 usb_function_deactivate +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x0c41bc78 usb_composite_probe +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x0e6d870e usb_function_unregister +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x147dc5a1 usb_ep_autoconfig_ss +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x17debfab usb_interface_id +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x18a0ab11 usb_string_id +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x19a2dc61 usb_function_register +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x1beba5e2 usb_get_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x1d378443 usb_string_ids_tab +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x269916ac usb_add_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x2e09263f usb_copy_descriptors +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x5a170351 usb_put_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x5d6826ce usb_free_all_descriptors +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x5f9dfc92 usb_composite_overwrite_options +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x6d4ad37e usb_assign_descriptors +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x794b09ef usb_composite_setup_continue +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x7da56ddd usb_ep_autoconfig_reset +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x7f159651 usb_composite_unregister +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x94d7075a usb_gadget_get_string +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xa073382d alloc_ep_req +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xa758129b usb_put_function_instance +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xaa15823a usb_function_activate +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xafcdf013 usb_string_ids_n +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xb230d3e2 usb_ep_autoconfig +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xb4d58666 usb_add_config_only +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xbba0f7c6 usb_get_function_instance +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xd2ea2134 usb_descriptor_fillbuf +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xd9402b59 usb_remove_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xe066480b usb_gstrings_attach +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xf08f1598 usb_add_config +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xf45c31b6 unregister_gadget_item +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xf474a207 usb_gadget_config_buf +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xf96c6c72 config_ep_by_speed +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x21e29091 usb_gadget_probe_driver +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x252f9f5b usb_gadget_map_request +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x2d6a78f0 usb_gadget_udc_reset +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x352cf494 usb_gadget_giveback_request +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x3c97ddd2 usb_gadget_set_state +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x6d3eaf8e usb_del_gadget_udc +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x74d90a35 usb_add_gadget_udc_release +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x97f64d9c usb_gadget_unmap_request +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0xa2f45a39 usb_gadget_unregister_driver +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0xdb910c23 usb_udc_vbus_handler +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0xdfc7aed9 usb_add_gadget_udc +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0xe2745699 usb_udc_attach_driver +EXPORT_SYMBOL_GPL drivers/usb/misc/ezusb 0x362b5498 ezusb_fx1_ihex_firmware_download +EXPORT_SYMBOL_GPL drivers/usb/misc/ezusb 0xbd6b9323 ezusb_fx1_set_reset +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x11acc4d6 usb_ftdi_elan_edset_single +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x17b9f474 usb_ftdi_elan_edset_setup +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x2f020d2f usb_ftdi_elan_read_pcimem +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x312476b8 usb_ftdi_elan_edset_empty +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x4ccf279c usb_ftdi_elan_edset_flush +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x78aa5ec6 usb_ftdi_elan_write_pcimem +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xbc68b687 usb_ftdi_elan_edset_output +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xbc7beeac usb_ftdi_elan_edset_input +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xbd4f2408 ftdi_elan_gone_away +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0x0892ae1a musb_writew +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0x56d31820 musb_writel +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0x72234dd6 musb_readw +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0x95b54ca9 musb_interrupt +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0x96919667 musb_readl +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0xac5f3d70 musb_readb +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0xcb32cb36 musb_writeb +EXPORT_SYMBOL_GPL drivers/usb/phy/phy-isp1301 0xaa212027 isp1301_get_client +EXPORT_SYMBOL_GPL drivers/usb/serial/usb_wwan 0xc1ddbb37 usb_wwan_port_probe +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x0d3b5e50 usb_serial_generic_tiocmiwait +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x1526f69f usb_serial_generic_chars_in_buffer +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x233cbfa6 usb_serial_handle_break +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x2a5f85ae usb_serial_handle_sysrq_char +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x34505f6e usb_serial_generic_write +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x4e75fc0b usb_serial_generic_unthrottle +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x4fa3df9f usb_serial_generic_submit_read_urbs +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x6962ae8b usb_serial_generic_write_bulk_callback +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x736be637 usb_serial_deregister_drivers +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x75420a7d usb_serial_generic_open +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x91f9bc38 usb_serial_generic_read_bulk_callback +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x9ba864db usb_serial_generic_process_read_urb +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xa91f9816 usb_serial_generic_wait_until_sent +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xacf9769e usb_serial_generic_throttle +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xbaa78285 usb_serial_generic_get_icount +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xc0253b7a usb_serial_register_drivers +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xc40fcf3f usb_serial_handle_dcd_change +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xcaa74db6 usb_serial_generic_resume +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xdf3edd98 usb_serial_generic_close +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xfb847b9e usb_serial_generic_write_start +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xfc2756b9 usb_serial_port_softint +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x0553213d fill_inquiry_response +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x05c7f328 usb_stor_disconnect +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x0936c08e usb_stor_bulk_transfer_sg +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x1bc3edc2 usb_stor_sense_invalidCDB +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x1f259c0a usb_stor_adjust_quirks +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x28669454 usb_stor_suspend +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x6acefb79 usb_stor_post_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x6c951033 usb_stor_access_xfer_buf +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x7a29d502 usb_stor_bulk_transfer_buf +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x7d10f45b usb_stor_probe1 +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x7e365e99 usb_stor_CB_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x8500702c usb_stor_probe2 +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x8a8589e5 usb_stor_CB_transport +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x8dd00564 usb_stor_reset_resume +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x966c71e5 usb_stor_bulk_srb +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xa1822235 usb_stor_control_msg +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xa3e491c1 usb_stor_Bulk_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xaecd3252 usb_stor_transparent_scsi_command +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xc626dd1c usb_stor_resume +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xd02e235f usb_stor_clear_halt +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xd1d9c2c3 usb_stor_pre_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xd6148b46 usb_stor_set_xfer_buf +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xd9c36d71 usb_stor_ctrl_transfer +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xf1e025af usb_stor_Bulk_transport +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xff109bc6 usb_stor_host_template_init +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x056f21b1 usbip_pad_iso +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x12186227 usbip_recv +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x3ca8827a dev_attr_usbip_debug +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x401eb9b1 usbip_event_add +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x4c8be7fe usbip_event_happened +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x78b72f44 usbip_debug_flag +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x91e79c6f usbip_recv_iso +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xc5f39f1d usbip_dump_urb +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xd02753dc usbip_header_correct_endian +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xe195b3bb usbip_recv_xbuff +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xe1ea0586 usbip_dump_header +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xe9a60883 usbip_stop_eh +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xedc0c96e usbip_start_eh +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xee3b4ff4 usbip_pack_pdu +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xff1f09ea usbip_alloc_iso_desc_pdu +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x5c68a484 wa_dti_start +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x709700a9 rpipe_ep_disable +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x866171db rpipe_clear_feature_stalled +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x873ad2a9 wa_urb_enqueue +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xc543b60e wa_process_errored_transfers_run +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xcb55ad58 rpipe_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xe76657b6 __wa_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xed9e03be wa_create +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xf4654c3f wa_urb_enqueue_run +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xfe43c48f wa_urb_dequeue +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x0bb6bf5e wusb_cluster_id_get +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x19ed6ca9 wusbhc_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x1ed1ed12 wusbhc_giveback_urb +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x1fdbf202 wusbhc_rh_status_data +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x2a07f423 wusbhc_mmcie_set +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x37de453e wusbhc_chid_set +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x3c0c8352 wusbhc_create +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x495f62e7 wusbhc_handle_dn +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x5389f7bc wusbhc_mmcie_rm +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x6c74b4c2 wusbhc_rh_control +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x7a92cf6d wusbhc_b_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x7c0eecc6 wusbhc_reset_all +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x7f0b7631 wusb_dev_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x859faa4e wusbhc_b_create +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x8964381f wusbhc_rh_start_port_reset +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xb5b3898e __wusb_dev_get_by_usb_dev +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xb725d128 wusb_cluster_id_put +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xf770a6b4 wusbd +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xfe2e17d7 wusb_et_name +EXPORT_SYMBOL_GPL drivers/uwb/i1480/dfu/i1480-dfu-usb 0x4e477990 i1480_rceb_check +EXPORT_SYMBOL_GPL drivers/uwb/i1480/dfu/i1480-dfu-usb 0x8d8aed39 i1480_fw_upload +EXPORT_SYMBOL_GPL drivers/uwb/i1480/dfu/i1480-dfu-usb 0xd797a8e1 i1480_cmd +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x0242f094 __umc_driver_register +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x4440f639 umc_device_unregister +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x56764fde umc_match_pci_id +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x587a8aaa umc_driver_unregister +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x7444779a umc_device_create +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x9144218b umc_device_register +EXPORT_SYMBOL_GPL drivers/uwb/umc 0xbc3d7a89 umc_bus_type +EXPORT_SYMBOL_GPL drivers/uwb/umc 0xeec0e331 umc_controller_reset +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x03508efd uwb_pal_unregister +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x04fe2e94 uwb_rc_neh_error +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x0583b95d uwb_rc_get_by_grandpa +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x0b5ca1df uwb_rsv_modify +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x0b8aad57 uwb_est_unregister +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x0df8e740 uwb_rc_get_by_dev +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x172c7cfa uwb_radio_stop +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x2683023c uwb_rc_ie_rm +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x2c31ad8d uwb_rc_add +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x3e3058ec uwb_notifs_deregister +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x42d38a24 uwb_rc_cmd +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x4c4677e6 uwb_rc_cmd_async +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x4d57ae3c uwb_rsv_type_str +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x4e3b925e uwb_pal_register +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x4e4a6227 uwb_rc_pre_reset +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x560c1d8b uwb_dev_try_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x5e4bc088 __uwb_addr_print +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x78ef9106 uwb_radio_start +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x7dcfcd23 uwb_ie_next +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x82b526f8 uwb_rsv_establish +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x8bd00cdb uwb_rsv_get_usable_mas +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x90ab5172 uwb_est_find_size +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x92c56ba3 __uwb_rc_try_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x98413234 uwb_rsv_state_str +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xa133e434 uwb_rc_post_reset +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xa6ca3424 uwb_rc_init +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xa8fba331 uwb_rc_reset_all +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xb4092019 uwb_rsv_terminate +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xbcffb808 uwb_notifs_register +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xc358de11 uwb_rc_neh_grok +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xc47e5b3c uwb_rc_put +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xc55cfb79 uwb_rc_mac_addr_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xc921ccb8 uwb_rc_dev_addr_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xcad72ef4 uwb_rc_rm +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xcc2a1200 uwb_rsv_destroy +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xce134ea6 uwb_dev_for_each +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xd7757c43 uwb_rsv_accept +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xe1716f06 uwb_est_register +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xe2f68f17 uwb_rc_ie_add +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xe69774a1 uwb_rc_alloc +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xf4be7221 uwb_rsv_create +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xfbdabc2a uwb_rc_vcmd +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xfffd9c37 uwb_pal_init +EXPORT_SYMBOL_GPL drivers/uwb/whci 0xf91e3993 whci_wait_for +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x03bfe3aa vfio_unregister_iommu_driver +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x3567743b vfio_external_user_iommu_id +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x50c51aed vfio_add_group_dev +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x9236ce59 vfio_group_get_external_user +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 0xa3306267 vfio_device_get_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 0xe742c038 vfio_del_group_dev +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0xe8094f5a vfio_register_iommu_driver +EXPORT_SYMBOL_GPL drivers/vfio/vfio_virqfd 0x2e3fa764 vfio_virqfd_disable +EXPORT_SYMBOL_GPL drivers/vfio/vfio_virqfd 0xb692b43d vfio_virqfd_enable +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x0440e2b6 vhost_log_access_ok +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x18c48bd1 vhost_discard_vq_desc +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x1f3ae3bb vhost_dev_cleanup +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x241e8caf vhost_add_used +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x269f7a09 vhost_dev_reset_owner_prepare +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x2755c1b5 vhost_poll_start +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x28cc6945 vhost_dev_ioctl +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x3eb3f725 vhost_poll_stop +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x40ade524 vhost_poll_queue +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x45173267 vhost_poll_init +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x4cb96f77 vhost_work_init +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x4fa046c8 vhost_dev_has_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x5697acac vhost_dev_check_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x634647fb vhost_add_used_n +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x6f63ca4e vhost_add_used_and_signal_n +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x8a67e0ef vhost_dev_set_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x8a7bed04 vhost_init_used +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x941bd7d4 vhost_signal +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x949a286b vhost_poll_flush +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xa04bcdff vhost_disable_notify +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xa61a65e6 vhost_log_write +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xa66b8485 vhost_get_vq_desc +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xa8aebb66 vhost_enable_notify +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xaf393b57 vhost_work_flush +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xb180c4b5 vhost_work_queue +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xb2c3d146 vhost_vq_access_ok +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xbee71697 vhost_dev_reset_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xc9553e20 vhost_dev_stop +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xe46187ba vhost_vring_ioctl +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xf7378e6a vhost_dev_init +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xf8d12cfb vhost_add_used_and_signal +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 0x1f58e575 ili9320_resume +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x2346df19 ili9320_suspend +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x99f1cda3 ili9320_write_regs +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0xa376a793 ili9320_write +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0xb6211926 ili9320_probe_spi +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0xc10782db ili9320_remove +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0xce04e674 ili9320_shutdown +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x39e6c11d auok190x_read_cmdargs +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x5bcacf4b auok190x_common_remove +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x628cf20f auok190x_send_cmdargs_pixels_nowait +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x661f4753 auok190x_common_probe +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x66fdf549 auok190x_pm +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x85fb4155 auok190x_send_cmdargs +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x88006db7 auok190x_send_command +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x9128183c auok190x_send_cmdargs_nowait +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0xc2d7565e auok190x_send_command_nowait +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0xeefdd6ad auok190x_send_cmdargs_pixels +EXPORT_SYMBOL_GPL drivers/video/fbdev/core/fb_ddc 0x99c061de fb_ddc_read +EXPORT_SYMBOL_GPL drivers/video/fbdev/core/fb_sys_fops 0x51847092 fb_sys_write +EXPORT_SYMBOL_GPL drivers/video/fbdev/core/fb_sys_fops 0x88da339e fb_sys_read +EXPORT_SYMBOL_GPL drivers/video/fbdev/sis/sisfb 0x87d9d65d sis_malloc_new +EXPORT_SYMBOL_GPL drivers/video/fbdev/sis/sisfb 0xeb68480b 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 0x22a7af24 viafb_dma_copy_out_sg +EXPORT_SYMBOL_GPL drivers/video/fbdev/via/viafb 0x292da7a2 viafb_irq_enable +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 0x79e6190a 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 0xef8c80aa viafb_find_i2c_adapter +EXPORT_SYMBOL_GPL drivers/video/fbdev/via/viafb 0xfff2dfd2 viafb_gpio_lookup +EXPORT_SYMBOL_GPL drivers/w1/wire 0x2ec94e48 w1_reset_select_slave +EXPORT_SYMBOL_GPL drivers/w1/wire 0x3926016e w1_read_block +EXPORT_SYMBOL_GPL drivers/w1/wire 0x55526c28 w1_reset_resume_command +EXPORT_SYMBOL_GPL drivers/w1/wire 0x712dad19 w1_read_8 +EXPORT_SYMBOL_GPL drivers/w1/wire 0x739933a7 w1_next_pullup +EXPORT_SYMBOL_GPL drivers/w1/wire 0x7c2f2afb w1_calc_crc8 +EXPORT_SYMBOL_GPL drivers/w1/wire 0x80b368d6 w1_write_block +EXPORT_SYMBOL_GPL drivers/w1/wire 0xa186f5db w1_write_8 +EXPORT_SYMBOL_GPL drivers/w1/wire 0xa46074e1 w1_reset_bus +EXPORT_SYMBOL_GPL drivers/w1/wire 0xf042adff w1_touch_block +EXPORT_SYMBOL_GPL drivers/xen/xen-privcmd 0x57f85bc3 xen_privcmd_fops +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x6eadd6f1 dlm_posix_get +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x9321df95 dlm_lock +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x977991e9 dlm_posix_lock +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x9c4d7868 dlm_posix_unlock +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xc6dc8c2f dlm_new_lockspace +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xcf9f3328 dlm_release_lockspace +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xdc583c08 dlm_unlock +EXPORT_SYMBOL_GPL fs/fscache/fscache 0x092cf98e fscache_object_sleep_till_congested +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x1a161e67 lockd_down +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x4fdad491 nlmclnt_done +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x5b81db21 nlmsvc_unlock_all_by_sb +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x725b94e3 nlmsvc_ops +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x77e35ccc nlmsvc_unlock_all_by_ip +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x84515062 nlmclnt_proc +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x9696b34f lockd_up +EXPORT_SYMBOL_GPL fs/lockd/lockd 0xf62aa255 nlmclnt_init +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x03e69723 nfs_init_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x051337f7 nfs_file_fsync_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x088675a2 nfs_pgio_current_mirror +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0d4e9aca nfs_remount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0e51cd62 nfs_pgio_data_destroy +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x11a8ebd7 nfs_clone_sb_security +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1404c97e nfs_free_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x150defe0 nfs_rmdir +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1703b873 nfs_generic_pgio +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x18721982 nfs_refresh_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x195c27d6 nfs_zap_acl_cache +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1ba5a7f0 nfs_fhget +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1e4adb04 nfs_alloc_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1efcfe27 nfs_flock +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x237f232a nfs_sb_active +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x23eed3b9 nfs_mark_client_ready +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x26884ff7 nfs_alloc_fhandle +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x27b158cc nfs_do_submount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x28d998a7 nfs_access_set_mask +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x296cbe80 alloc_nfs_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2bfbcdf5 nfs_file_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2e2f1ba5 nfs_pageio_reset_read_mds +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2fab74ed nfs_drop_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x304f9c26 nfs_mkdir +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x37e4a45c nfs_sops +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x39e05ac3 nfs_idmap_cache_timeout +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3b2adbd6 nfs_inode_attach_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3ba955d4 nfs_server_remove_lists +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3bc84739 nfs_fs_mount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3bcb1876 nfs_link +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3bed6875 nfs_set_sb_security +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3ca31f35 nfs_net_id +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3d992290 nfs_alloc_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3f2690f2 nfs_check_flags +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x42f2c81f nfs4_client_id_uniquifier +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x43d64526 register_nfs_version +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x44368e83 nfs_server_copy_userdata +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4496f88e nfs_alloc_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x45211eb1 nfs_server_insert_lists +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4602f1d9 nfs_request_add_commit_list +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4cb9e001 recover_lost_locks +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4d56aaeb nfs_access_zap_cache +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4ee69cea nfs_init_server_rpcclient +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x51892d61 nfs_callback_set_tcpport +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x524f8ae0 nfs_clone_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x54b20c65 nfs_get_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x578925b2 nfs_put_lock_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x584b8482 nfs_inc_attr_generation_counter +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5e1d863a nfs_sockaddr_match_ipaddr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x60d5d3b7 nfs_show_path +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6165aa57 nfs_file_set_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x61c5cd05 nfs_file_llseek +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x625ce828 nfs_setattr_update_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x69814f91 nfs_sb_deactive +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6a0e413b nfs_path +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6bfc22e0 nfs_pgio_header_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6c26bf93 nfs_setattr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6da88e25 nfs_writeback_update_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6def4ddf put_nfs_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6ee18fa2 nfs_getattr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6fe70ec5 nfs_statfs +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x74b6c15e nfs_invalidate_atime +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7595da5a nfs_retry_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7c1bdd58 nfs_commitdata_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7e80dc3c nfs_create_rpc_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7f4a5f2f nfs_umount_begin +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x84551479 nfs_symlink +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x848255a0 nfs_write_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x86740684 nfs_may_open +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x87df6c41 nfs_fscache_open_file +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x898742f8 get_nfs_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8ae70b55 nfs_atomic_open +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8d132661 nfs4_dentry_operations +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8d62c0df nfs_commitdata_release +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8f0f6516 nfs_mknod +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 0x97034b61 nfs_dentry_operations +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x97f04b83 nfs_pgheader_init +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x991a631e nfs_submount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x999d1d97 nfs_create +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x99f757df nfs_get_lock_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9a5f3479 nfs_pageio_resend +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9db8b79a nfs_file_operations +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9f31c8a0 nfs_file_write +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa17d2632 nfs_destroy_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa39f0064 nfs_generic_pg_test +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa6c865ee nfs_wait_bit_killable +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa8d2d1ce nfs_callback_tcpport +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa8e9e1ae send_implementation_id +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa91a2895 nfs_setsecurity +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa9f301bb nfs_commit_free +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xaaa14361 nfs_dreq_bytes_left +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xadeef5ad nfs_pageio_init_write +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb1ee3991 nfs_initiate_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb221ff57 nfs_file_mmap +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb606e716 nfs_fattr_init +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb8958b1a __tracepoint_nfs_fsync_exit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb9c8dfd8 nfs_create_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb9d0ab52 nfs_pgio_header_free +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbc9e8798 nfs_permission +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbd353e87 nfs_pageio_reset_write_mds +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc03c964e nfs_instantiate +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc221b26b nfs_fs_type +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc40058dc nfs_free_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc40e67b5 nfs_try_mount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc4ff1e9f nfs_auth_info_match +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc5ef47d5 nfs_init_timeout_values +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xcb467de9 nfs_sync_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xcc0cb845 __tracepoint_nfs_fsync_enter +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xcd03d43b nfs_rename +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xcf6b6a72 nfs_put_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd2108510 nfs_lookup +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd218cb54 nfs_force_lookup_revalidate +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd2513081 _nfs_display_fhandle_hash +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd3d94ea5 nfs_access_add_cache +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xda7fa161 nfs_file_release +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdae9b5d7 nfs4_disable_idmapping +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdb0d179b nfs4_fs_type +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdba562f1 nfs_close_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdc6b0efb nfs_show_stats +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdc882c0a nfs_request_remove_commit_list +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xddf43fc2 nfs_post_op_update_inode_force_wcc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe1652484 nfs_wb_all +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe31c46a6 nfs_pageio_init_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe3a535db nfs_show_options +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe5208284 nfs_show_devname +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe61e1113 nfs_initiate_pgio +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe92c510d nfs_direct_set_resched_writes +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xea1068b4 nfs_fs_mount_common +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xed620591 nfs_request_add_commit_list_locked +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xee3070a7 nfs_clear_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xee400985 nfs_unlink +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xee49906b unregister_nfs_version +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf0e149c6 nfs_fill_super +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf2633ca0 nfs_init_cinfo +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf2db4e16 nfs_post_op_update_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf2fbfff1 nfs4_label_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf32acc23 nfs_probe_fsinfo +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf3a5e160 nfs_revalidate_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf57ef2b6 nfs_wait_client_init_complete +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf6f8409c nfs_pageio_init +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf700c05b nfs_kill_super +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfb7142ab nfs_init_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfb794fa5 nfs_file_flush +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfb7ee006 nfs_alloc_fattr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfc619abd _nfs_display_fhandle +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfdb28519 nfs_lock +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfdd2e8d6 nfs_file_splice_read +EXPORT_SYMBOL_GPL fs/nfs/nfsv3 0x0fcf3b70 nfs3_set_ds_client +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x00b212c2 pnfs_read_resend_pnfs +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x01753a5a pnfs_generic_recover_commit_reqs +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x0610afe8 nfs4_test_deviceid_unavailable +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x0a52bd54 nfs4_init_ds_session +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x0a5dd6ef nfs_remove_bad_delegation +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x0c8d14a7 pnfs_update_layout +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x11bda27c __tracepoint_nfs4_pnfs_read +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x15b5eeaa pnfs_error_mark_layout_for_return +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x170f3ed6 nfs41_maxgetdevinfo_overhead +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x301bfc17 nfs4_schedule_session_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x34165a08 nfs4_find_or_create_ds_client +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x393bc2e1 pnfs_nfs_generic_sync +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x3c9db51e nfs4_decode_mp_ds_addr +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x3d3ba28e nfs4_proc_getdeviceinfo +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x3e418204 nfs4_put_deviceid_node +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x3efe8723 pnfs_generic_write_commit_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x414845fe pnfs_report_layoutstat +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x45390e95 pnfs_write_done_resend_to_mds +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x477a4ab0 nfs4_pnfs_ds_connect +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x4890dd43 nfs4_mark_deviceid_unavailable +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x4af47661 pnfs_put_lseg_locked +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x52aff5ed pnfs_generic_clear_request_commit +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x54883922 nfs41_setup_sequence +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x57f15a31 pnfs_ld_read_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x5d790602 nfs4_schedule_migration_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x5e359c19 pnfs_generic_sync +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x601f0ade pnfs_generic_pg_readpages +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x61053d31 pnfs_generic_prepare_to_resend_writes +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x650f79d5 pnfs_ld_write_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x665fa50e __tracepoint_nfs4_pnfs_write +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x67598bdc pnfs_read_done_resend_to_mds +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x69d3558d pnfs_generic_rw_release +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x6b36744c nfs40_setup_sequence +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x723a8971 nfs4_schedule_lease_moved_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x78facff2 nfs4_pnfs_ds_add +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x7e1b5565 pnfs_generic_commit_pagelist +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x7ece43ce pnfs_generic_pg_writepages +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x7ee70881 pnfs_put_lseg +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x8363d723 _pnfs_return_layout +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x83ae6aaa nfs4_pnfs_v3_ds_connect_unload +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x8578dba1 nfs4_find_get_deviceid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x877b7ffb pnfs_register_layoutdriver +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x8fd39276 pnfs_generic_scan_commit_lists +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x91a84c89 pnfs_generic_pg_test +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x92a70f20 nfs4_schedule_lease_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x95b58b10 pnfs_unregister_layoutdriver +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x9b6127a0 pnfs_generic_pg_cleanup +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x9fa01ca3 nfs4_set_rw_stateid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xa02df320 nfs_map_string_to_numeric +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xa435282d nfs41_sequence_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xae099aae pnfs_destroy_layout +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xb00b117e nfs4_set_ds_client +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xb6ebeb33 nfs4_sequence_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xbe393e8d pnfs_layoutcommit_inode +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xd26ba912 nfs4_delete_deviceid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xd2be619c nfs4_schedule_stateid_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xdb813e84 __tracepoint_nfs4_pnfs_commit_ds +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xde1cef4c pnfs_set_lo_fail +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xe21a77c9 pnfs_layout_mark_request_commit +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xe629c9c4 pnfs_generic_pg_init_write +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xed15fb41 nfs4_print_deviceid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xef19a537 nfs4_init_deviceid_node +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xef9a46d9 pnfs_set_layoutcommit +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xf999267e pnfs_generic_commit_release +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xfa877e5f nfs4_pnfs_ds_put +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xff159ff9 pnfs_generic_pg_init_read +EXPORT_SYMBOL_GPL fs/nfs_common/grace 0x17ce645d locks_end_grace +EXPORT_SYMBOL_GPL fs/nfs_common/grace 0x7eb8c445 locks_start_grace +EXPORT_SYMBOL_GPL fs/nfs_common/grace 0xaae70065 locks_in_grace +EXPORT_SYMBOL_GPL fs/nfs_common/nfs_acl 0x300e760f nfsacl_decode +EXPORT_SYMBOL_GPL fs/nfs_common/nfs_acl 0x8e596cbe nfsacl_encode +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x11736b03 __mlog_printk +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x15f7719b o2nm_get_node_by_ip +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 0x1d747ce3 o2hb_check_node_heartbeating +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x1e38784b o2hb_setup_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x2a487232 o2hb_unregister_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x36418553 o2net_send_message +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x4900035b o2hb_stop_all_regions +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x5f6dcdac o2nm_get_node_by_num +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x687f6251 mlog_and_bits +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x713530ef o2nm_node_put +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xa1ae48e1 o2hb_check_node_heartbeating_no_sem +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xa35da3d5 o2hb_register_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xa82a8645 o2nm_this_node +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xa87bc9e7 o2nm_configured_node_map +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xa9f5379a o2net_send_message_vec +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xae808bac o2net_register_handler +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xbaeb4700 o2hb_check_node_heartbeating_from_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xc3679d7b o2hb_get_all_regions +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xd60f2c6c o2hb_check_local_node_heartbeating +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 0xf517561e o2nm_node_get +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x07517252 dlmunlock +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x30b9db33 dlmlock +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x4162a6f9 dlm_print_one_lock +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x6fafaf15 dlm_register_domain +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x7a1211f8 dlm_setup_eviction_cb +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x817b83b2 dlm_unregister_domain +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x9a85bd5f dlm_register_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 0xfb86b96f dlm_errname +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x1f5b573d ocfs2_stack_glue_register +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x269d63fd ocfs2_cluster_disconnect +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x316904e1 ocfs2_dlm_unlock +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x3bcef5f3 ocfs2_dlm_lock_status +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x40718c92 ocfs2_dlm_lock +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x4226705d ocfs2_dlm_dump_lksb +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x424241c9 ocfs2_dlm_lvb +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x4d3af7fa ocfs2_cluster_hangup +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x4fdb11bc ocfs2_stack_glue_unregister +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x60f4bcef ocfs2_dlm_lvb_valid +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x9ccafa05 ocfs2_cluster_this_node +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xa06fbc10 ocfs2_cluster_connect_agnostic +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xb19d2e0f ocfs2_plock +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xbbc4ef97 ocfs2_stack_supports_plocks +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xbf9068ab ocfs2_cluster_connect +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xe40cffce ocfs2_stack_glue_set_max_proto_version +EXPORT_SYMBOL_GPL kernel/torture 0x156449ed _torture_stop_kthread +EXPORT_SYMBOL_GPL kernel/torture 0x17c793f0 torture_shuffle_task_register +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 0x4c7529bd torture_shutdown_absorb +EXPORT_SYMBOL_GPL kernel/torture 0x52665f8b torture_random +EXPORT_SYMBOL_GPL kernel/torture 0x5346b23b torture_shuffle_cleanup +EXPORT_SYMBOL_GPL kernel/torture 0x5a266ba3 _torture_create_kthread +EXPORT_SYMBOL_GPL kernel/torture 0x6364b2f0 stutter_wait +EXPORT_SYMBOL_GPL kernel/torture 0x679d9e50 torture_must_stop +EXPORT_SYMBOL_GPL kernel/torture 0x688e6a64 torture_cleanup_end +EXPORT_SYMBOL_GPL kernel/torture 0x6bdeda8f torture_onoff_init +EXPORT_SYMBOL_GPL kernel/torture 0x8b0e1d2f torture_shuffle_init +EXPORT_SYMBOL_GPL kernel/torture 0xc1361afc torture_onoff_cleanup +EXPORT_SYMBOL_GPL kernel/torture 0xc6527045 torture_init_begin +EXPORT_SYMBOL_GPL kernel/torture 0xc67a49d4 torture_cleanup_begin +EXPORT_SYMBOL_GPL kernel/torture 0xdbc5277a torture_shutdown_init +EXPORT_SYMBOL_GPL kernel/torture 0xe6989fd3 torture_init_end +EXPORT_SYMBOL_GPL kernel/torture 0xe9ff1468 torture_stutter_init +EXPORT_SYMBOL_GPL kernel/torture 0xf6d34fb5 torture_kthread_stopping +EXPORT_SYMBOL_GPL lib/842/842_compress 0x1ce013cf sw842_compress +EXPORT_SYMBOL_GPL lib/842/842_decompress 0x0d22f116 sw842_decompress +EXPORT_SYMBOL_GPL lib/bch 0x231d70fc encode_bch +EXPORT_SYMBOL_GPL lib/bch 0x6b770f49 decode_bch +EXPORT_SYMBOL_GPL lib/bch 0x9463ff71 init_bch +EXPORT_SYMBOL_GPL lib/bch 0xbdf512de free_bch +EXPORT_SYMBOL_GPL lib/notifier-error-inject 0x21c75b3d notifier_err_inject_init +EXPORT_SYMBOL_GPL lib/notifier-error-inject 0xe56816b8 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 lib/reed_solomon/reed_solomon 0x201d8ea3 encode_rs8 +EXPORT_SYMBOL_GPL lib/reed_solomon/reed_solomon 0x29fa419f decode_rs8 +EXPORT_SYMBOL_GPL lib/reed_solomon/reed_solomon 0x300d7e57 free_rs +EXPORT_SYMBOL_GPL lib/reed_solomon/reed_solomon 0x6fbb3bd9 init_rs_non_canonical +EXPORT_SYMBOL_GPL lib/reed_solomon/reed_solomon 0xabda1e2e decode_rs16 +EXPORT_SYMBOL_GPL lib/reed_solomon/reed_solomon 0xb050f329 init_rs +EXPORT_SYMBOL_GPL net/6lowpan/6lowpan 0x4cc24313 lowpan_header_decompress +EXPORT_SYMBOL_GPL net/6lowpan/6lowpan 0x9c0361c2 lowpan_header_compress +EXPORT_SYMBOL_GPL net/802/garp 0x12df9584 garp_register_application +EXPORT_SYMBOL_GPL net/802/garp 0x18a1383e garp_request_leave +EXPORT_SYMBOL_GPL net/802/garp 0x2f8a5bd8 garp_request_join +EXPORT_SYMBOL_GPL net/802/garp 0x36d1fdb1 garp_uninit_applicant +EXPORT_SYMBOL_GPL net/802/garp 0xad37b7dd garp_unregister_application +EXPORT_SYMBOL_GPL net/802/garp 0xbf24d7f4 garp_init_applicant +EXPORT_SYMBOL_GPL net/802/mrp 0x0029fc81 mrp_request_leave +EXPORT_SYMBOL_GPL net/802/mrp 0x04b14887 mrp_register_application +EXPORT_SYMBOL_GPL net/802/mrp 0x31a55228 mrp_init_applicant +EXPORT_SYMBOL_GPL net/802/mrp 0x52c318b2 mrp_request_join +EXPORT_SYMBOL_GPL net/802/mrp 0x9805edb4 mrp_unregister_application +EXPORT_SYMBOL_GPL net/802/mrp 0xa36ecdec mrp_uninit_applicant +EXPORT_SYMBOL_GPL net/802/stp 0x5f257077 stp_proto_register +EXPORT_SYMBOL_GPL net/802/stp 0xe0160518 stp_proto_unregister +EXPORT_SYMBOL_GPL net/9p/9pnet 0x6031cccd p9_client_xattrwalk +EXPORT_SYMBOL_GPL net/9p/9pnet 0x68332995 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 0x8f370af5 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 0x1579a9fd l2cap_chan_create +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x2d589df3 l2cap_add_psm +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x4310bf42 l2cap_chan_del +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x79c1dce0 l2cap_chan_send +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x82f25153 l2cap_chan_put +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0xcc46a1ed l2cap_chan_connect +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0xd08d411e bt_debugfs +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0xf1cd29a3 l2cap_chan_set_defaults +EXPORT_SYMBOL_GPL net/bridge/br_netfilter 0x0cb0f8b7 br_netfilter_enable +EXPORT_SYMBOL_GPL net/bridge/bridge 0x22e78189 br_forward_finish +EXPORT_SYMBOL_GPL net/bridge/bridge 0x292e60fc br_dev_queue_push_xmit +EXPORT_SYMBOL_GPL net/bridge/bridge 0x60fc085a nf_br_ops +EXPORT_SYMBOL_GPL net/bridge/bridge 0x89ebaffc br_multicast_list_adjacent +EXPORT_SYMBOL_GPL net/bridge/bridge 0xb509f129 br_handle_frame_finish +EXPORT_SYMBOL_GPL net/bridge/bridge 0xb932a567 br_multicast_has_querier_anywhere +EXPORT_SYMBOL_GPL net/bridge/bridge 0xc56cfbe1 br_multicast_has_querier_adjacent +EXPORT_SYMBOL_GPL net/bridge/bridge 0xf3365f8f br_deliver +EXPORT_SYMBOL_GPL net/bridge/netfilter/nf_tables_bridge 0x1cb582a7 nft_bridge_iphdr_validate +EXPORT_SYMBOL_GPL net/bridge/netfilter/nf_tables_bridge 0xfa28d0c6 nft_bridge_ip6hdr_validate +EXPORT_SYMBOL_GPL net/dccp/dccp 0x09561e6e dccp_feat_nn_get +EXPORT_SYMBOL_GPL net/dccp/dccp 0x0b773718 dccp_done +EXPORT_SYMBOL_GPL net/dccp/dccp 0x0ef91328 dccp_feat_signal_nn_change +EXPORT_SYMBOL_GPL net/dccp/dccp 0x110a9fc6 dccp_poll +EXPORT_SYMBOL_GPL net/dccp/dccp 0x13857984 dccp_send_sync +EXPORT_SYMBOL_GPL net/dccp/dccp 0x1b166192 dccp_reqsk_init +EXPORT_SYMBOL_GPL net/dccp/dccp 0x1d99d49a dccp_timestamp +EXPORT_SYMBOL_GPL net/dccp/dccp 0x201fef9a dccp_init_sock +EXPORT_SYMBOL_GPL net/dccp/dccp 0x212f1ecc dccp_parse_options +EXPORT_SYMBOL_GPL net/dccp/dccp 0x21fe8e86 dccp_disconnect +EXPORT_SYMBOL_GPL net/dccp/dccp 0x23672cd0 dccp_hashinfo +EXPORT_SYMBOL_GPL net/dccp/dccp 0x2619a563 dccp_recvmsg +EXPORT_SYMBOL_GPL net/dccp/dccp 0x29836530 dccp_rcv_state_process +EXPORT_SYMBOL_GPL net/dccp/dccp 0x3350fe48 dccp_child_process +EXPORT_SYMBOL_GPL net/dccp/dccp 0x381ea894 dccp_close +EXPORT_SYMBOL_GPL net/dccp/dccp 0x410798d2 dccp_setsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0x4258f921 dccp_ioctl +EXPORT_SYMBOL_GPL net/dccp/dccp 0x4cdd391d dccp_feat_list_purge +EXPORT_SYMBOL_GPL net/dccp/dccp 0x4e2d4d99 dccp_death_row +EXPORT_SYMBOL_GPL net/dccp/dccp 0x4ec35231 dccp_ackvec_parsed_add +EXPORT_SYMBOL_GPL net/dccp/dccp 0x59814a84 dccp_statistics +EXPORT_SYMBOL_GPL net/dccp/dccp 0x6d00c58a dccp_rcv_established +EXPORT_SYMBOL_GPL net/dccp/dccp 0x7b1f0ecf dccp_create_openreq_child +EXPORT_SYMBOL_GPL net/dccp/dccp 0x7fc83f19 dccp_send_ack +EXPORT_SYMBOL_GPL net/dccp/dccp 0x86be7924 dccp_packet_name +EXPORT_SYMBOL_GPL net/dccp/dccp 0x94ebedf8 dccp_destroy_sock +EXPORT_SYMBOL_GPL net/dccp/dccp 0x9598d24d dccp_ackvec_parsed_cleanup +EXPORT_SYMBOL_GPL net/dccp/dccp 0x9c076968 inet_dccp_listen +EXPORT_SYMBOL_GPL net/dccp/dccp 0xa55a6e15 dccp_insert_option +EXPORT_SYMBOL_GPL net/dccp/dccp 0xa5b6b633 dccp_sync_mss +EXPORT_SYMBOL_GPL net/dccp/dccp 0xa8cb407c dccp_reqsk_send_ack +EXPORT_SYMBOL_GPL net/dccp/dccp 0xb71b0884 dccp_connect +EXPORT_SYMBOL_GPL net/dccp/dccp 0xc797b7e8 dccp_check_req +EXPORT_SYMBOL_GPL net/dccp/dccp 0xccbb2914 dccp_ctl_make_reset +EXPORT_SYMBOL_GPL net/dccp/dccp 0xd1be7f98 dccp_sendmsg +EXPORT_SYMBOL_GPL net/dccp/dccp 0xd1f6e093 dccp_make_response +EXPORT_SYMBOL_GPL net/dccp/dccp 0xd752af5d dccp_shutdown +EXPORT_SYMBOL_GPL net/dccp/dccp 0xda4405c2 dccp_orphan_count +EXPORT_SYMBOL_GPL net/dccp/dccp 0xdfb21aad dccp_set_state +EXPORT_SYMBOL_GPL net/dccp/dccp 0xfc9cde74 dccp_getsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x448d7233 dccp_v4_request_recv_sock +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x4ba7ad76 dccp_v4_conn_request +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x524c9062 dccp_v4_send_check +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x53f46a55 dccp_invalid_packet +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x8a78a2fb dccp_v4_do_rcv +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0xbd1fd1bf dccp_v4_connect +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0x3b536fd8 ieee802154_hdr_peek +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0x4d7aef69 ieee802154_max_payload +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0x6758cccc ieee802154_hdr_push +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0x95f8ca54 ieee802154_hdr_peek_addrs +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0xead6efbc ieee802154_hdr_pull +EXPORT_SYMBOL_GPL net/ipv4/geneve_core 0x18ad499d geneve_sock_release +EXPORT_SYMBOL_GPL net/ipv4/geneve_core 0x7975dd55 geneve_xmit_skb +EXPORT_SYMBOL_GPL net/ipv4/geneve_core 0x8dd41d02 geneve_sock_add +EXPORT_SYMBOL_GPL net/ipv4/gre 0x1ff2a8a3 gre_del_protocol +EXPORT_SYMBOL_GPL net/ipv4/gre 0x3b3e4c13 gre_cisco_unregister +EXPORT_SYMBOL_GPL net/ipv4/gre 0x9b71b6ed gre_add_protocol +EXPORT_SYMBOL_GPL net/ipv4/gre 0xc8455bcd gre_cisco_register +EXPORT_SYMBOL_GPL net/ipv4/gre 0xd88fb367 gre_build_header +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x2da004de inet_sk_diag_fill +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x2f57b89c inet_diag_bc_sk +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x56a7e623 inet_diag_unregister +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x80a9914f inet_diag_dump_icsk +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x8a74300e inet_diag_dump_one_icsk +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0xdf01c0f6 inet_diag_register +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x25eb84ca ip_tunnel_rcv +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x2a5bd3a8 ip_tunnel_delete_net +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x2c62f286 ip_tunnel_change_mtu +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x3059ae97 ip_tunnel_dellink +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x34d85805 ip_tunnel_uninit +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x668d0418 ip_tunnel_changelink +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x719661e0 ip_tunnel_init_net +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x8778a9ea ip_tunnel_lookup +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xb4765845 ip_tunnel_setup +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xd6e8e62b ip_tunnel_newlink +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xe0a62966 ip_tunnel_xmit +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xe217a222 ip_tunnel_ioctl +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xf057a16c ip_tunnel_init +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xf36b94ec ip_tunnel_encap_setup +EXPORT_SYMBOL_GPL net/ipv4/netfilter/arp_tables 0x10e5346c arpt_alloc_initial_table +EXPORT_SYMBOL_GPL net/ipv4/netfilter/ip_tables 0x1d92fe32 ipt_alloc_initial_table +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_defrag_ipv4 0x6b6c3d10 nf_defrag_ipv4_enable +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_ipv4 0x3aa5f76d nf_nat_ipv4_local_fn +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_ipv4 0x95ff9bfb nf_nat_ipv4_fn +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_ipv4 0xa071f422 nf_nat_icmp_reply_translation +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_ipv4 0xc956cc3b nf_nat_ipv4_in +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_ipv4 0xefdcca9e nf_nat_ipv4_out +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_masquerade_ipv4 0x3f5c468e nf_nat_masquerade_ipv4_unregister_notifier +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_masquerade_ipv4 0xe90f6c00 nf_nat_masquerade_ipv4 +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_masquerade_ipv4 0xfedbf252 nf_nat_masquerade_ipv4_register_notifier +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_proto_gre 0x636b12c8 nf_nat_need_gre +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0x39e6f7da nf_send_unreach +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0x3e1a70ab nf_reject_ip_tcphdr_get +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0x87417c87 nf_send_reset +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0x88b6bf76 nf_reject_ip_tcphdr_put +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0xa596956f nf_reject_iphdr_put +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_tables_ipv4 0x4704007b nft_af_ipv4 +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x59804417 tcp_vegas_init +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x6524fdb7 tcp_vegas_get_info +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x8a282f10 tcp_vegas_state +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0xa9f09533 tcp_vegas_pkts_acked +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0xbb0ca125 tcp_vegas_cwnd_event +EXPORT_SYMBOL_GPL net/ipv4/udp_tunnel 0x62bf313e udp_tunnel_sock_release +EXPORT_SYMBOL_GPL net/ipv4/udp_tunnel 0x8441d0bc setup_udp_tunnel_sock +EXPORT_SYMBOL_GPL net/ipv4/udp_tunnel 0xea68fb1c udp_tunnel_xmit_skb +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x582f81bb ip6_tnl_dst_reset +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x66b8fdf0 ip6_tnl_dst_store +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x8deaafa5 ip6_tnl_xmit_ctl +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0xf133ef0b ip6_tnl_rcv_ctl +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0xf6c23acd ip6_tnl_dst_check +EXPORT_SYMBOL_GPL net/ipv6/ip6_udp_tunnel 0x8f1fbbe8 udp_tunnel6_xmit_skb +EXPORT_SYMBOL_GPL net/ipv6/ip6_udp_tunnel 0xff50f25c udp_sock_create6 +EXPORT_SYMBOL_GPL net/ipv6/netfilter/ip6_tables 0x025c96d5 ip6t_alloc_initial_table +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_defrag_ipv6 0x6eb85693 nf_defrag_ipv6_enable +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_ipv6 0x32ee97dc nf_nat_ipv6_out +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_ipv6 0x357f2702 nf_nat_ipv6_local_fn +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_ipv6 0x35bfc000 nf_nat_icmpv6_reply_translation +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_ipv6 0x6ceb46ff nf_nat_ipv6_in +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_ipv6 0x76ac2d92 nf_nat_ipv6_fn +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_masquerade_ipv6 0x2293972c nf_nat_masquerade_ipv6_unregister_notifier +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_masquerade_ipv6 0x30a427ff nf_nat_masquerade_ipv6 +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_masquerade_ipv6 0x38d4401a nf_nat_masquerade_ipv6_register_notifier +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0x0bb15ab7 nf_reject_ip6hdr_put +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0x45067a83 nf_send_reset6 +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0x55095f89 nf_reject_ip6_tcphdr_get +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0x8716766f nf_reject_ip6_tcphdr_put +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0xba25c9fe nf_send_unreach6 +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_tables_ipv6 0x252f9197 nft_af_ipv6 +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x01d90653 l2tp_tunnel_find_nth +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x0a2af157 l2tp_xmit_skb +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x1ef832d0 l2tp_session_free +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x3ff9562f l2tp_session_create +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x58844dd7 l2tp_session_find_by_ifname +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x5edba003 __l2tp_session_unhash +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x8fcfe16e l2tp_tunnel_delete +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x928de6ea l2tp_tunnel_create +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x97565636 l2tp_session_set_header_len +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xc6e60cb8 l2tp_tunnel_find +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xd6f90d14 l2tp_session_queue_purge +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xe12b0256 l2tp_session_find +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xe92436e5 l2tp_udp_encap_recv +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xea1ee849 l2tp_tunnel_closeall +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xf24313bf l2tp_session_delete +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xf2babc96 l2tp_session_find_nth +EXPORT_SYMBOL_GPL net/l2tp/l2tp_netlink 0x04453613 l2tp_nl_register_ops +EXPORT_SYMBOL_GPL net/l2tp/l2tp_netlink 0x337f2432 l2tp_nl_unregister_ops +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x00bd573a ieee80211_ready_on_channel +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x13ea906c ieee80211_ave_rssi +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x19ce984b ieee80211_napi_add +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x2b9f9aff wdev_to_ieee80211_vif +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x33afd28d ieee80211_remove_key +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x550e5aeb ieee80211_request_smps +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x5bae99bf ieee80211_iterate_stations_atomic +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x716161d4 ieee80211_vif_to_wdev +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x79275929 ieee80211_iterate_active_interfaces_rtnl +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x7f9a998f ieee80211_gtk_rekey_notify +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x8bc1e2c5 ieee80211_iterate_active_interfaces_atomic +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x8ea67951 ieee80211_set_key_tx_seq +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x9f05dc82 ieee80211_find_sta_by_ifaddr +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xbd1a63db ieee80211_remain_on_channel_expired +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xbf778e6a ieee80211_iter_chan_contexts_atomic +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xcd3c8e9d ieee80211_iterate_interfaces +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xd59b0d83 ieee80211_gtk_rekey_add +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xebdf8959 ieee80211_set_key_rx_seq +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xf9013674 ieee80211_resume_disconnect +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x0cf8a633 ip_set_get_ip4_port +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x23f16d6a ip_set_get_ip_port +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x333ffbc5 ip_set_name_byindex +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x38c3176c ip_set_put_byindex +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x397f6231 ip_set_free +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x3f2ba8f0 ip_set_get_extensions +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x509f2c07 ip_set_elem_len +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x6344eaf6 ip_set_alloc +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x7924b6de ip_set_hostmask_map +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x7af6cd0d 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 0x9522f47f ip_set_type_register +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x9a5d653c ip_set_del +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 0xa2d623f3 ip_set_range_to_cidr +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xcc001bd9 ip_set_extensions +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xcc8b473e ip_set_nfnl_get_byindex +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xce2e43b7 ip_set_nfnl_put +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xd9e466a1 ip_set_test +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xdad1681d ip_set_get_ip6_port +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xdb8d3b60 ip_set_type_unregister +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xe7900ac0 ip_set_put_extensions +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xe7a0cdc0 ip_set_add +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0x1893ef76 register_ip_vs_pe +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0x5af063a5 unregister_ip_vs_pe +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0x75e827ce ip_vs_conn_in_get_proto +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0x9b783f43 ip_vs_conn_out_get_proto +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x045072cd nf_ct_port_nla_policy +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x065a1d60 nf_conntrack_l4proto_udp6 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x0b1def3d nf_ct_remove_expectations +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x0b7f0bcb nf_ct_l3proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x0d91ec64 nf_ct_helper_expectfn_find_by_symbol +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x11dd8aff nf_ct_invert_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x1497885b nf_conntrack_locks +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x15df80f7 nfnetlink_parse_nat_setup_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x1b1c0ef3 nf_ct_unlink_expect_report +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x1fc19662 __nf_ct_expect_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x223ac169 nf_ct_helper_ext_add +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x223d654d seq_print_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x24671976 nf_ct_timeout_put_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x26d0959b __nf_ct_kill_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x289c3714 nf_ct_alloc_hashtable +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x2cab6d11 nf_ct_port_tuple_to_nlattr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x346c7fe2 nf_conntrack_l4proto_udp4 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x37386cac nf_conntrack_hash_rnd +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3a53dc7f nf_ct_expect_related_report +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3e13d5ed nf_ct_helper_expectfn_find_by_name +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3f5b1415 nf_ct_port_nlattr_to_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x438e01ea nf_ct_tmpl_free +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x45e53372 nf_conntrack_free +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x467d3938 nf_conntrack_hash_check_insert +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x4ab96441 nf_ct_seq_adjust +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x4ac21a2b nf_ct_get_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x55c96727 __nf_conntrack_helper_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x58aedf7d nf_ct_l3proto_pernet_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x62813e5c nf_ct_port_nlattr_tuple_size +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6437d484 nf_ct_unexpect_related +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x675a8a79 nf_conntrack_unregister_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x693c3961 nf_ct_helper_hash +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6a18dc58 nf_conntrack_expect_lock +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6e224a7a need_conntrack +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6e8d893e nf_ct_helper_log +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6f63d2f2 nf_ct_l4proto_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x78f9b710 nf_ct_l3proto_try_module_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x7b97b569 nf_ct_expect_unregister_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x7f66e300 nf_conntrack_in +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x80eb3a5e nf_ct_l4proto_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x87450a2a nf_ct_tcp_seqadj_set +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8e35500f nf_connlabels_replace +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8ff6e57f nf_ct_seqadj_set +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8ffe7e89 nf_conntrack_htable_size +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x90ff6c9f nf_ct_invert_tuplepr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x9375b1ee nf_ct_expect_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x93893d7f nf_ct_seqadj_init +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x95220703 nf_conntrack_helper_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x9632eba5 __nf_conntrack_confirm +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x9671e388 nf_ct_l3proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x96e9bba6 nf_ct_l3proto_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x9d255534 nf_ct_seq_offset +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x9e4596c5 nf_ct_get_tuplepr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x9ede5e2c nf_conntrack_helper_try_module_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa0fe184f nf_conntrack_set_hashsize +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa7a3c6bc nf_ct_tmpl_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xab3d1f95 nf_ct_untracked_status_or +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xabe5e77d __nf_ct_l4proto_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xad1bb027 nf_ct_free_hashtable +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xad4f2d6a nf_conntrack_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb5b1b5e7 nf_ct_expect_register_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb5c1b66c nf_ct_l4proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb602c57e nf_ct_l3proto_module_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb8ba95a7 nf_ct_delete +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xbb9781a5 nf_conntrack_alter_reply +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xbd142028 nf_ct_expect_init +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xbd1cbf40 nf_conntrack_helper_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc0221623 nf_conntrack_register_notifier +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 0xc655f828 nf_ct_timeout_find_get_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc8bab063 nf_ct_iterate_cleanup +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc959bad9 __nf_ct_try_assign_helper +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xca22930b nf_ct_extend_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xcb27b6f3 nf_connlabel_set +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xcdd90c35 nf_ct_l4proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xcf37fcf5 nf_conntrack_l4proto_tcp6 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xcf73a2ad nf_ct_l3protos +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd20ab654 nf_ct_extend_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xdbeecc24 nf_connlabel_match +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xdc39d37b nf_conntrack_l3proto_generic +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xe4ee230c nf_ct_expect_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xea0f2c32 nf_ct_l4proto_pernet_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xea8a1ad8 nf_ct_helper_expectfn_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xebf5b541 nf_ct_expect_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xec7b06fa nf_conntrack_tuple_taken +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xee1a6157 nf_ct_helper_expectfn_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xeeab3b56 nf_ct_l3proto_pernet_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf38bcdf3 nf_conntrack_max +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf68ef238 nf_ct_l4proto_pernet_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf93f204d nf_conntrack_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xfb9ea6c8 nf_ct_deliver_cached_events +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xfd019e77 nf_conntrack_l4proto_tcp4 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xffb4ff54 __nf_ct_refresh_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_amanda 0xda4f6bec nf_nat_amanda_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_broadcast 0x289d5593 nf_conntrack_broadcast_help +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_ftp 0x282da27c nf_nat_ftp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x1ca15c01 nat_h245_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x20bcc175 nat_rtp_rtcp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x5788c43b get_h225_addr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x7041f770 nat_t120_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x7dab57c6 set_ras_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x8f7e45a9 set_h225_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xbb5313a0 set_h245_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xcb142179 nat_callforwarding_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xecd1cb45 set_sig_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xffa3c25d nat_q931_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_irc 0x406a896f nf_nat_irc_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0xb3b9cf50 nf_nat_pptp_hook_expectfn +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0xc9fb00f4 nf_nat_pptp_hook_inbound +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0xde7182dc nf_nat_pptp_hook_outbound +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0xeeb32c25 nf_nat_pptp_hook_exp_gre +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_proto_gre 0x0a01d58d nf_ct_gre_keymap_destroy +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_proto_gre 0x67ff5788 nf_ct_gre_keymap_add +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x0468b682 ct_sip_parse_address_param +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x3516ce7a nf_nat_sip_hooks +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x38b5718d ct_sip_parse_header_uri +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x3fdbf0dc ct_sip_parse_numerical_param +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x7519692f ct_sip_get_header +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xd0dedf37 ct_sip_parse_request +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xdbb71f05 ct_sip_get_sdp_header +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_snmp 0xc356e181 nf_nat_snmp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_tftp 0xd267f8c3 nf_nat_tftp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_log_common 0x23cdb03e nf_log_dump_udp_header +EXPORT_SYMBOL_GPL net/netfilter/nf_log_common 0x54c93289 nf_log_dump_packet_common +EXPORT_SYMBOL_GPL net/netfilter/nf_log_common 0x57a12837 nf_log_dump_tcp_header +EXPORT_SYMBOL_GPL net/netfilter/nf_log_common 0x9879f7e2 nf_log_dump_sk_uid_gid +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x04015e3a __nf_nat_l4proto_find +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x07e4d068 nf_nat_l4proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x0d9bae4b nf_nat_l4proto_nlattr_to_range +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x131f636c nf_nat_l4proto_in_range +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x1968dfdc nf_nat_l3proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x2f01d014 nf_nat_packet +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x457a98c8 nf_nat_l4proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x93f2703b nf_nat_alloc_null_binding +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x96f50841 nf_ct_nat_ext_add +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xde9dc6d2 nf_nat_l3proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xe59b11a4 nf_nat_l4proto_unique_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_nat_redirect 0x7fb1333b nf_nat_redirect_ipv6 +EXPORT_SYMBOL_GPL net/netfilter/nf_nat_redirect 0xd2d0c619 nf_nat_redirect_ipv4 +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x11a006b5 synproxy_check_timestamp_cookie +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x1a7027f6 synproxy_tstamp_adjust +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x4fb4596e synproxy_parse_options +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x8841d39b synproxy_build_options +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x90298227 synproxy_init_timestamp_cookie +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0xb42e336a synproxy_options_size +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0xef7db50c synproxy_net_id +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x020f07e0 nft_set_elem_destroy +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x04c2ebd9 nft_unregister_set +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x1e6b75a3 nft_parse_register +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x4e24480f nft_set_gc_batch_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x5778f241 nft_chain_validate_hooks +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x5a26149d nft_register_expr +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x68088bee nft_data_uninit +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x7b02b1cb nft_unregister_basechain +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x9b79b5df nft_unregister_afinfo +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xa304d8b4 nft_dump_register +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xb3ec540d nft_data_init +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xb8277e0c nft_register_afinfo +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xbf63bb61 nft_set_gc_batch_release +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xcf03e214 nft_chain_validate_dependency +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xd1c37e6a nft_validate_register_store +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xd5eaaf3f nft_data_dump +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xd6304726 nft_unregister_chain_type +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xda86d298 nft_register_set +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xe09dada2 nft_set_ext_types +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xe93ce5a7 nft_register_basechain +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xed33c632 nft_validate_register_load +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xf17626e7 nft_unregister_expr +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xfa1969f9 nft_do_chain +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xfebf2a7b nft_register_chain_type +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x343a8aa8 nfnetlink_has_listeners +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x35bf8aa1 nfnetlink_subsys_unregister +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x4012a813 nfnetlink_alloc_skb +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x5ce3b588 nfnl_lock +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x6a72d78f nfnetlink_unicast +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x8a2ea016 nfnetlink_send +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xced7e0b5 nfnetlink_set_err +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xdb065657 nfnl_unlock +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xf4155ba2 nfnetlink_subsys_register +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0x21f6bba6 nfnl_acct_find_get +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0x460bd622 nfnl_acct_update +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0xbecf5d14 nfnl_acct_put +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0xe1ad7931 nfnl_acct_overquota +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_log 0x01487e22 nfulnl_log_packet +EXPORT_SYMBOL_GPL net/netfilter/nft_masq 0x1b7ade7d nft_masq_dump +EXPORT_SYMBOL_GPL net/netfilter/nft_masq 0x2200bc74 nft_masq_validate +EXPORT_SYMBOL_GPL net/netfilter/nft_masq 0x88959374 nft_masq_init +EXPORT_SYMBOL_GPL net/netfilter/nft_masq 0xe3b8ea21 nft_masq_policy +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0x42adf0df nft_meta_get_eval +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0x6f8ec6ad nft_meta_set_eval +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0x908eb5ee nft_meta_get_init +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0xa402474e nft_meta_get_dump +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0xb80e8358 nft_meta_policy +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0xdcea8bde nft_meta_set_dump +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0xe68a64fa nft_meta_set_init +EXPORT_SYMBOL_GPL net/netfilter/nft_redir 0x17c289fc nft_redir_validate +EXPORT_SYMBOL_GPL net/netfilter/nft_redir 0x2d7c70d6 nft_redir_init +EXPORT_SYMBOL_GPL net/netfilter/nft_redir 0xa5be1e1e nft_redir_policy +EXPORT_SYMBOL_GPL net/netfilter/nft_redir 0xf1936c72 nft_redir_dump +EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0x4a76a6b0 nft_reject_init +EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0xa2db3c7f nft_reject_policy +EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0xca28c04d nft_reject_dump +EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0xddf15889 nft_reject_icmp_code +EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0xe8cdab4e nft_reject_icmpv6_code +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x3e168dfe xt_proto_fini +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x40728a63 xt_find_revision +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x489c140c xt_replace_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x6eb8ae1c xt_unregister_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x703a4d66 xt_proto_init +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x807d2b2c xt_recseq +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x849946bd xt_find_table_lock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x8afd32f7 xt_table_unlock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x8c241e00 xt_check_target +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x933ece9f xt_hook_link +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xbc61b3c2 xt_hook_unlink +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xbce0a939 xt_request_find_target +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xc9265f70 xt_register_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xcbe0785e xt_request_find_match +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xdb61765f xt_check_match +EXPORT_SYMBOL_GPL net/netfilter/xt_RATEEST 0x4c32c169 xt_rateest_lookup +EXPORT_SYMBOL_GPL net/netfilter/xt_RATEEST 0xb7459345 xt_rateest_put +EXPORT_SYMBOL_GPL net/nfc/nci/nci 0x244481ef nci_spi_allocate_spi +EXPORT_SYMBOL_GPL net/nfc/nci/nci 0x9f9bf915 nci_spi_send +EXPORT_SYMBOL_GPL net/nfc/nci/nci 0xc286cb04 nci_spi_read +EXPORT_SYMBOL_GPL net/nfc/nci/nci_uart 0x6f03eb9a nci_uart_unregister +EXPORT_SYMBOL_GPL net/nfc/nci/nci_uart 0xfa2c6827 nci_uart_set_config +EXPORT_SYMBOL_GPL net/nfc/nci/nci_uart 0xfd44b750 nci_uart_register +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x28185afd ovs_vport_alloc +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x2db1ba95 ovs_vport_receive +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x75cdc325 ovs_vport_free +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x990e5c11 ovs_vport_ops_register +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0xaf379e6d ovs_vport_deferred_free +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0xda83411d ovs_net_id +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0xdbc66107 ovs_tunnel_get_egress_info +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0xe8a3326a ovs_vport_ops_unregister +EXPORT_SYMBOL_GPL net/rds/rds 0x00a467af rds_wq +EXPORT_SYMBOL_GPL net/rds/rds 0x0601c898 rds_message_put +EXPORT_SYMBOL_GPL net/rds/rds 0x0ae215fb rds_page_copy_user +EXPORT_SYMBOL_GPL net/rds/rds 0x0ba32f9b rds_conn_destroy +EXPORT_SYMBOL_GPL net/rds/rds 0x0ed77d5b rds_trans_unregister +EXPORT_SYMBOL_GPL net/rds/rds 0x1e08065c rds_conn_connect_if_down +EXPORT_SYMBOL_GPL net/rds/rds 0x2c5c5514 rds_message_add_rdma_dest_extension +EXPORT_SYMBOL_GPL net/rds/rds 0x3101936e rds_message_add_extension +EXPORT_SYMBOL_GPL net/rds/rds 0x3b4fc0fc rds_page_remainder_alloc +EXPORT_SYMBOL_GPL net/rds/rds 0x4129d5aa rds_recv_incoming +EXPORT_SYMBOL_GPL net/rds/rds 0x4223abf5 rds_send_get_message +EXPORT_SYMBOL_GPL net/rds/rds 0x4bfdf6c8 rds_inc_init +EXPORT_SYMBOL_GPL net/rds/rds 0x50cbe7b3 rds_stats +EXPORT_SYMBOL_GPL net/rds/rds 0x5b7c9496 rds_conn_create +EXPORT_SYMBOL_GPL net/rds/rds 0x5bd35cf0 rds_conn_drop +EXPORT_SYMBOL_GPL net/rds/rds 0x6a7e22e1 rds_rdma_send_complete +EXPORT_SYMBOL_GPL net/rds/rds 0x73aac73d rds_message_populate_header +EXPORT_SYMBOL_GPL net/rds/rds 0x73e85237 rds_message_unmapped +EXPORT_SYMBOL_GPL net/rds/rds 0x776542a9 rds_conn_create_outgoing +EXPORT_SYMBOL_GPL net/rds/rds 0x83b66bab rds_for_each_conn_info +EXPORT_SYMBOL_GPL net/rds/rds 0x88d8c650 rds_info_register_func +EXPORT_SYMBOL_GPL net/rds/rds 0x8af906ee rds_trans_register +EXPORT_SYMBOL_GPL net/rds/rds 0x8c6b50b4 rds_send_drop_acked +EXPORT_SYMBOL_GPL net/rds/rds 0x96fafe85 rds_stats_info_copy +EXPORT_SYMBOL_GPL net/rds/rds 0xa2c657ae rds_info_deregister_func +EXPORT_SYMBOL_GPL net/rds/rds 0xa8c676d0 rds_inc_put +EXPORT_SYMBOL_GPL net/rds/rds 0xc2dab779 rds_info_copy +EXPORT_SYMBOL_GPL net/rds/rds 0xc312ca9d rds_atomic_send_complete +EXPORT_SYMBOL_GPL net/rds/rds 0xd3110ba4 rds_connect_complete +EXPORT_SYMBOL_GPL net/rds/rds 0xdbe16d99 rds_message_addref +EXPORT_SYMBOL_GPL net/rds/rds 0xde673448 rds_cong_map_updated +EXPORT_SYMBOL_GPL net/rxrpc/af-rxrpc 0x564ad713 rxrpc_unregister_security +EXPORT_SYMBOL_GPL net/rxrpc/af-rxrpc 0xa54039a0 rxrpc_register_security +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x00c52ef5 g_make_token_header +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x18a5aa2b gss_mech_unregister +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x6aaca929 svcauth_gss_flavor +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x7d1c4258 gss_mech_register +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x8d1a827e svcauth_gss_register_pseudoflavor +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xb5dea7ef g_token_size +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xf8b2ff6e g_verify_token_header +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x016ccc14 rpc_protocol +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x045834e9 rpcauth_get_pseudoflavor +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x05e807a9 xdr_encode_string +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x05f8fac1 xdr_buf_trim +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x065994f1 xdr_encode_opaque_fixed +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0745b44a svc_find_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x09b5fddd auth_domain_lookup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0a337ebe rpc_mkpipe_dentry +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0ad40b29 rpc_restart_call_prepare +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0bd2d995 rpc_alloc_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0bfa2267 rpc_init_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0f668ba9 svc_auth_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0f95055a xdr_init_decode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1254d267 rpc_wake_up_queued_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1313f07b rpc_clone_client_set_auth +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x142a095c rpc_add_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x18301773 rpcauth_init_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x186ac791 xdr_enter_page +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x191a367b xdr_buf_read_netobj +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x192284bf rpc_pton +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1bbb318f xdr_partial_copy_from_skb +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1e40f2b9 rpc_count_iostats_metrics +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1e7eefb7 rpc_put_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1e875b52 xprt_release_rqst_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1e8be0d1 rpc_localaddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1f42128a xdr_init_encode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2281cf16 csum_partial_copy_to_xdr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2393c0f7 svc_create_pooled +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2414abe3 xprt_disconnect_done +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x251d9b2a rpc_clnt_swap_deactivate +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x27b50526 svcauth_unix_set_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x284f4039 rpcauth_lookup_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x28756ced rpc_put_task_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2900df29 svc_authenticate +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2919b156 xdr_decode_string_inplace +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2b48e056 __rpc_wait_for_completion_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2eec63c9 xdr_encode_netobj +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2f1e6556 rpc_destroy_pipe_data +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2f8ebbe0 rpc_ntop +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3041dee7 rpc_net_ns +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x31a89d59 rpc_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x337fc3a3 svc_max_payload +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x36c75fa6 rpcb_getport_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3761812c svc_set_num_threads +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x38058710 svc_close_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x387e1639 rpc_pipefs_notifier_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x396a8e2f svc_sock_update_bufs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3c43f4b4 svc_proc_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3c46572e rpc_destroy_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3f540588 rpc_sleep_on +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x437ed143 rpc_get_sb_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x44fcc416 rpc_switch_client_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4593149a unix_domain_find +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x45ae96cf rpc_proc_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x460623df xdr_decode_array2 +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x485382a4 rpc_put_sb_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x486ffdce xdr_init_decode_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x48deb952 svc_drop +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x49278dd7 rpc_rmdir +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x49f46ab1 svc_process +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4d950463 xdr_encode_word +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4f2ac67f write_bytes_to_xdr_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4f40d62e xprt_set_retrans_timeout_rtt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x500e04f8 rpcauth_lookupcred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x50e7fba2 rpc_shutdown_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x521ecf85 svc_xprt_init +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x53223bc9 xdr_terminate_string +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x53445f68 nlm_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x53eab260 rpc_queue_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x53f5de54 rpc_proc_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x553c9a60 cache_register_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5a23b98d auth_domain_find +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5d5f7f60 svc_bind +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5e3bbd67 rpc_peeraddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x646a8b6a xdr_buf_subsegment +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x664d43e2 rpcauth_destroy_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x688e8091 svc_proc_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6cad5051 rpc_lookup_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6cd737e9 xprt_lookup_rqst +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6dd4baed cache_check +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6de6b963 rpc_setbufsize +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6e91f720 rpc_clnt_swap_activate +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6ecfe650 rpc_create_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6eebd60c xdr_commit_encode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6f14a90c rpc_max_payload +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7040cbde rpc_release_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x716c868d rpc_restart_call +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x71fa908a cache_flush +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x732a44e8 xprt_complete_rqst +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x744cfc92 xprt_free +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7557cd36 svc_print_addr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x75950496 svc_wake_up +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x765bb53a svc_xprt_enqueue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x775570c7 xdr_shift_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7a753cb2 xdr_reserve_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7bfe0f65 xdr_encode_array2 +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7c44a08f rpc_malloc +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7de53067 rpc_init_rtt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x80951b28 rpcauth_get_gssinfo +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x842a84a4 rpc_call_sync +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x848576a8 rpcauth_stringify_acceptor +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x86348f92 rpc_delay +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x89acda81 xprt_release_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x89e7330b rpc_lookup_cred_nonblock +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8a879ab4 rpc_count_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8c35855e rpc_call_start +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8d7b66a7 xprt_lock_and_alloc_slot +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8e381ca3 rpc_init_priority_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8fcf0892 rpc_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9062ecbd rpc_uaddr2sockaddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x92053c90 xdr_inline_decode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x950fee25 rpc_init_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x95677bef rpc_sleep_on_priority +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x95f03293 cache_create_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x982ba791 sunrpc_cache_register_pipefs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x986fe4d2 xprt_alloc +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x98b75d64 rpcauth_list_flavors +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x99784cd7 xprt_wake_pending_tasks +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9978ac65 sunrpc_cache_unregister_pipefs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9a024221 rpc_peeraddr2str +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9adfea0d _copy_from_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9b0316b0 svc_destroy +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9da07baa rpc_mkpipe_data +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9f20b86b svc_alien_sock +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa061de22 svc_xprt_names +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa17cdf01 rpc_call_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa2010638 svc_rpcb_setup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa3af8b2a svc_addsock +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa8aadfd2 svc_xprt_put +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa8ab714b auth_domain_put +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xaa282d11 svc_rpcb_cleanup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xab53b824 svc_prepare_thread +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xad9d34ce read_bytes_from_xdr_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xae65c42c rpc_task_reset_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xae6f9ddb rpc_clone_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xaebdf8da svc_seq_show +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xaf5bf6ef nfs_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xaff7bfbe svc_recv +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb0748701 gssd_running +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb0c5dd58 svc_set_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb1463498 rpcauth_key_timeout_notify +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb2c1aaac svc_auth_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb3a10922 rpc_print_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb51a3724 rpc_pipefs_notifier_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb54b5838 put_rpccred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb6b46979 sunrpc_cache_pipe_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb7694648 xprt_alloc_slot +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb79f30c3 svc_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb8b7da60 bc_svc_process +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb9903823 rpc_force_rebind +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb995b1f2 xdr_stream_pos +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb9ff9cb3 rpc_wake_up_status +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xba104d11 rpcauth_generic_bind_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbbda11f1 svc_reg_xprt_class +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbc3a6cf7 xdr_inline_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbca26c55 svc_shutdown_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbcec902d svcauth_unix_purge +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbf1e6037 xprt_write_space +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 0xc38304aa xdr_buf_from_iov +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc3880471 xdr_decode_netobj +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc60b7e69 sunrpc_destroy_cache_detail +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc64d56a1 xdr_process_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc7156dbc xprt_setup_backchannel +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc7c0e73f rpc_run_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc87fd7e1 rpc_call_null +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc8e96dea qword_addhex +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc922f8dc xdr_set_scratch_buffer +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc9766f29 xprt_wait_for_buffer_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc9b6216f svc_unreg_xprt_class +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xca250eab rpcauth_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xccb3e57c rpc_killall_tasks +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcd220ddb sunrpc_cache_update +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcdd457da rpcauth_init_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcee467f3 xprt_load_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd14c8eb9 rpc_wake_up +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd1dbd0b7 xdr_skb_read_bits +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd66a1dc4 rpc_bind_new_program +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd692b3c1 xprt_release_xprt_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd7c40ef2 cache_unregister_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd870f0ec rpc_d_lookup_sb +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdaca6ae1 xdr_write_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdb379f01 rpc_init_pipe_dir_head +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdc2958a8 rpc_unlink +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdc65a193 xprt_set_retrans_timeout_def +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdcda48ce xdr_decode_word +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdd281624 rpc_get_timeout +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdd7a2c6d rpc_wake_up_next +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdddc6084 xdr_read_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdde0ee2a svc_exit_thread +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdf833c8e rpc_remove_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe02020d4 sunrpc_cache_lookup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe14791b6 xprt_register_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe1ac2bb8 sunrpc_net_id +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe2413952 xprt_adjust_cwnd +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe412204a rpc_pipe_generic_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe461d36f rpc_exit +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe5919cb1 xdr_encode_opaque +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe6f52f9d rpcauth_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe884eb57 rpc_wake_up_first +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe956ff80 rpcauth_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe97f4ce5 qword_get +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xeaf93ca1 svc_xprt_copy_addrs +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 0xefa71443 xprt_reserve_xprt_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf1145ab6 cache_purge +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf13a886a sunrpc_init_cache_detail +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf2a5a2df rpcauth_cred_key_to_expire +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf80d4c02 rpc_free_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf870b795 svc_create_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf907ecab rpc_find_or_alloc_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf9d1164c rpc_free +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfa4e5b91 xprt_unregister_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfc6c5061 svc_reserve +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfe8aa211 xprt_destroy_backchannel +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfee16f5e xprt_reserve_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xff1a1ef7 cache_destroy_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xffb8d1e3 rpc_lookup_machine_cred +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x0c79d5ef vm_sockets_get_local_cid +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x12dbd844 __vsock_core_init +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x15c0c57c vsock_addr_init +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x16565ecd vsock_remove_bound +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x2663cb64 vsock_addr_equals_addr +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x2fadc717 vsock_stream_has_data +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x354044b2 vsock_remove_connected +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x35a31b33 vsock_enqueue_accept +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x3cf9ccc7 vsock_insert_connected +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x61261566 vsock_remove_pending +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x714003fc vsock_stream_has_space +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 0x7f730c80 vsock_core_exit +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x87374f00 __vsock_create +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x9f3e8b74 vsock_find_bound_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 0xdb4b488e vsock_find_connected_socket +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xf0070a9d vsock_for_each_connected_socket +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xf593c40a vsock_pending_work +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xff99b0f9 vsock_add_pending +EXPORT_SYMBOL_GPL net/wimax/wimax 0x05ae5ba4 wimax_msg_send +EXPORT_SYMBOL_GPL net/wimax/wimax 0x0ad79124 wimax_msg_len +EXPORT_SYMBOL_GPL net/wimax/wimax 0x163f9436 wimax_report_rfkill_hw +EXPORT_SYMBOL_GPL net/wimax/wimax 0x3c4d69dd wimax_report_rfkill_sw +EXPORT_SYMBOL_GPL net/wimax/wimax 0x690c5b1b wimax_msg_data +EXPORT_SYMBOL_GPL net/wimax/wimax 0x7b253d44 wimax_dev_init +EXPORT_SYMBOL_GPL net/wimax/wimax 0x8a53c089 wimax_msg +EXPORT_SYMBOL_GPL net/wimax/wimax 0x8ab04cd3 wimax_dev_rm +EXPORT_SYMBOL_GPL net/wimax/wimax 0x93d20878 wimax_msg_data_len +EXPORT_SYMBOL_GPL net/wimax/wimax 0x9c53f4d6 wimax_state_change +EXPORT_SYMBOL_GPL net/wimax/wimax 0xbe34fdbe wimax_dev_add +EXPORT_SYMBOL_GPL net/wimax/wimax 0xe81acc40 wimax_state_get +EXPORT_SYMBOL_GPL net/wimax/wimax 0xf35c69ad wimax_msg_alloc +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x0ed89fe5 cfg80211_wext_giwscan +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x1bc2f791 cfg80211_wext_siwmode +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x2dc0daf8 cfg80211_wext_giwretry +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x3143296d cfg80211_wext_giwrange +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x35a1ebce cfg80211_shutdown_all_interfaces +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x3b383b61 cfg80211_vendor_cmd_reply +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x455d78f1 cfg80211_wext_siwscan +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x62571f1a cfg80211_wext_giwmode +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x69fa5997 cfg80211_wext_giwfrag +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x9edbe6b8 cfg80211_wext_siwfrag +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x9eef3f03 cfg80211_wext_giwrts +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xdd074d97 cfg80211_wext_siwrts +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xfc09c7ee cfg80211_wext_giwname +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 0x3bf471d7 xfrm_calg_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x47b34e60 xfrm_ealg_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x60b73277 xfrm_aead_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x7a8ca627 xfrm_count_pfkey_enc_supported +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x834ba96d xfrm_aalg_get_byid +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xa6e66685 xfrm_aalg_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xaa762fe2 xfrm_aalg_get_byidx +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xad1b60ed xfrm_calg_get_byid +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xdbfc35c8 xfrm_ealg_get_byidx +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xdfea3a6d xfrm_ealg_get_byid +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0x08d59f42 ipcomp_destroy +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0x511393f1 ipcomp_output +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0x62e28615 ipcomp_init_state +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0xad36e9d2 ipcomp_input +EXPORT_SYMBOL_GPL sound/core/seq/snd-seq-device 0x4368f7e3 snd_seq_driver_unregister +EXPORT_SYMBOL_GPL sound/core/seq/snd-seq-device 0xaced51d3 __snd_seq_driver_register +EXPORT_SYMBOL_GPL sound/core/snd 0x9097f56a snd_ctl_get_preferred_subdevice +EXPORT_SYMBOL_GPL sound/core/snd 0xa3cdaad6 snd_ctl_activate_id +EXPORT_SYMBOL_GPL sound/core/snd 0xb6b4690c snd_device_disconnect +EXPORT_SYMBOL_GPL sound/core/snd 0xc50fbb25 snd_ctl_add_vmaster_hook +EXPORT_SYMBOL_GPL sound/core/snd 0xde9eff85 snd_ctl_sync_vmaster +EXPORT_SYMBOL_GPL sound/core/snd 0xdf55ea22 snd_card_add_dev_attr +EXPORT_SYMBOL_GPL sound/core/snd 0xfad45eb1 snd_device_initialize +EXPORT_SYMBOL_GPL sound/core/snd-compress 0x921ea8e0 snd_compress_deregister +EXPORT_SYMBOL_GPL sound/core/snd-compress 0xa78a97d5 snd_compress_register +EXPORT_SYMBOL_GPL sound/core/snd-compress 0xde64e329 snd_compress_new +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x03fb5d9e snd_pcm_stop_xrun +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 0x2715a844 snd_pcm_lib_default_mmap +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x51e11b8b _snd_pcm_stream_lock_irqsave +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x57f62e45 snd_pcm_stream_unlock +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x8c0bd51c snd_pcm_stream_unlock_irq +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x9bf88c1c snd_pcm_stream_unlock_irqrestore +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 0xc80a94dd snd_pcm_stream_lock +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0xe48f47f5 snd_pcm_stream_lock_irq +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0xe573801c snd_pcm_add_chmap_ctls +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x1c04efac snd_dmaengine_pcm_pointer_no_residue +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x3aa64320 snd_dmaengine_pcm_set_config_from_dai_data +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x5c06803b snd_hwparams_to_dma_slave_config +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x742f51b6 snd_dmaengine_pcm_close_release_chan +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x891ff447 snd_dmaengine_pcm_close +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x979e030d snd_dmaengine_pcm_pointer +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0xc228e409 snd_dmaengine_pcm_request_channel +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0xc42e6b13 snd_dmaengine_pcm_open_request_chan +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0xd6fba1bb snd_dmaengine_pcm_open +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0xe558caa7 snd_dmaengine_pcm_get_chan +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0xf241fd1b snd_dmaengine_pcm_trigger +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x0a397286 snd_hdac_regmap_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x0b024b66 snd_hdac_device_unregister +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x0d2e30c0 snd_hdac_power_up +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x10578932 snd_hdac_bus_exit_link_reset +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x1252d495 snd_hdac_bus_alloc_stream_pages +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x164faa68 snd_hdac_get_display_clk +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x196dc062 snd_hdac_bus_enter_link_reset +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x278a8367 snd_hdac_stream_setup_periods +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x2b5a753e snd_hdac_display_power +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x2b84416b snd_hdac_stream_sync +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x31edb808 snd_hdac_regmap_exit +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x34c67181 snd_hdac_regmap_write_raw +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x39593bad snd_hdac_bus_get_response +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x3ad0316b snd_hdac_stream_sync_trigger +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x3c02c847 snd_hdac_device_exit +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x3c7273db snd_hdac_device_register +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x49e9844b snd_hdac_power_down_pm +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x4a2e461e snd_hdac_bus_init_cmd_io +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x4b23e56a snd_hdac_stream_reset +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x50addad9 snd_hdac_stream_assign +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x58b2b0ac snd_hdac_bus_exec_verb_unlocked +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x5e4a379c snd_hdac_bus_add_device +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x61077e1c snd_hdac_stream_timecounter_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x65756368 snd_hdac_bus_send_cmd +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x6af1d240 snd_hdac_bus_exec_verb +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x7039548d snd_hdac_override_parm +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x7236365c snd_hdac_regmap_add_vendor_verb +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x738ad654 snd_hdac_link_power +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x7515547b snd_hdac_get_connections +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x75e1997d snd_hdac_dsp_cleanup +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x762eec35 snd_hdac_bus_free_stream_pages +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x7fe25ece snd_hdac_i915_register_notifier +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x84140331 snd_hdac_dsp_prepare +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x8516ddd7 snd_hdac_get_sub_nodes +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x87459a99 snd_hdac_stream_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x8cde18e5 snd_hdac_stream_release +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x8dcf032f hdac_get_device_id +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x8e4304f8 snd_hdac_i915_exit +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x900009c7 snd_hdac_bus_exit +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x905705bf snd_hdac_stream_set_params +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x92950342 snd_hdac_refresh_widgets +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x938847ef snd_hdac_stream_stop +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x9394da22 snd_hdac_bus_stop_cmd_io +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x9a8e1877 snd_array_free +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xa1f6c072 snd_hdac_i915_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xa2a591fb snd_hdac_bus_update_rirb +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xa4d72e31 snd_hdac_is_supported_format +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xa5b3386c snd_hdac_make_cmd +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xabd51b68 snd_hdac_stream_clear +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xac91bf68 snd_hdac_device_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xad78ed29 snd_hdac_stream_start +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xb481018a snd_hdac_regmap_read_raw +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xb4955dae snd_hdac_read +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xb9771cf3 snd_hdac_read_parm_uncached +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xba413cec snd_hdac_bus_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xbb872d3e snd_hdac_power_up_pm +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xbe7dd7dc snd_array_new +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xc0326409 snd_hdac_dsp_trigger +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xc2529535 snd_hdac_query_supported_pcm +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xc6d2e3ab snd_hdac_exec_verb +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xcd9ccbb4 snd_hdac_stream_cleanup +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xd0a916d6 snd_hdac_bus_init_chip +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xd2c254bd snd_hdac_bus_queue_event +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xd8e886d7 _snd_hdac_read_parm +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xdb8120ce snd_hda_bus_type +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xdd9a804a snd_hdac_calc_stream_format +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xe045abc2 snd_hdac_bus_remove_device +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xe41852d0 snd_hdac_set_codec_wakeup +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xe7b929b1 snd_hdac_regmap_update_raw +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xec25a6e3 snd_hdac_stream_setup +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xefcec7a1 snd_hdac_bus_stop_chip +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xf7c69513 snd_hdac_power_down +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xfff5b97b snd_hdac_bus_handle_stream_irq +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x113f650e snd_ak4113_reg_write +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x932335e4 snd_ak4113_create +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x98690f99 snd_ak4113_reinit +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0xc2d004bd snd_ak4113_check_rate_and_errors +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0xd753b2f4 snd_ak4113_build +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0xe81710b9 snd_ak4113_external_rate +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x003f6756 snd_hda_codec_get_pin_target +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x04364c94 azx_stop_chip +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 0x0a91f7ad _snd_hda_set_pin_ctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0c4b89c1 snd_hda_sequence_write +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0ee95c1f snd_hda_bind_vol +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x101e78a0 snd_hda_load_patch +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x10212b9a snd_hda_get_default_vref +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x104cf7ed snd_hda_mixer_bind_switch_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x116e05a8 snd_hda_codec_setup_stream +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x17ff7562 snd_hda_codec_amp_stereo +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1ac33530 snd_hda_jack_detect_enable_callback +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x25101105 snd_hda_codec_write +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x26f19947 snd_hda_mixer_amp_switch_put_beep +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x27e9daae snd_hda_get_int_hint +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x29c9dfd6 azx_get_pos_lpib +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2c212c59 snd_hda_enum_helper_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2cb1b0f4 snd_hda_multi_out_dig_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2d298d02 snd_hda_add_verbs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2e500432 snd_hda_get_pin_label +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x32b07fd1 snd_hda_mixer_amp_switch_get_beep +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x352e7d8c azx_probe_codecs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x35681c66 snd_hda_mixer_bind_ctls_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x375cacd5 snd_hda_input_mux_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x38ce402b azx_interrupt +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x397a8d50 azx_get_pos_posbuf +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3aa2982e snd_hda_jack_detect_state +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3b4e2672 snd_hda_attach_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3d2b26b0 snd_hda_multi_out_analog_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3d445d10 snd_hda_codec_pcm_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4161d7f5 snd_hda_spdif_out_of_nid +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x452d14cf snd_hda_ctl_add +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x47a63ef7 snd_hda_apply_fixup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4a888c36 snd_hda_get_connections +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4ccd145f snd_hda_codec_update_widgets +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4f38f1a2 snd_hda_jack_add_kctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5257bc14 snd_hda_detach_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x558f4585 snd_hda_mixer_bind_ctls_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5646d924 snd_hda_apply_verbs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x57c356b9 snd_hda_mixer_amp_tlv +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x58579b19 snd_hda_pin_sense +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5951b963 snd_hda_codec_pcm_new +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x596273e5 snd_hda_find_mixer_ctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5b7e5b3c snd_hda_mixer_amp_switch_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x606c95a1 snd_hda_codec_configure +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x61983103 snd_hda_add_imux_item +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x61eb3f37 snd_hda_codec_set_pin_target +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x621c856d snd_hda_parse_pin_defcfg +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x627a5a9c snd_hda_codec_set_power_to_all +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x63b10b12 snd_hda_codec_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x642c93bd snd_hda_jack_report_sync +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6534c104 snd_hda_multi_out_analog_open +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6846c5a9 snd_hda_apply_pincfgs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6b6800ee azx_init_streams +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6ee07d89 snd_hda_add_new_ctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6f40af76 snd_hda_mixer_amp_volume_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x732513ab snd_hda_multi_out_analog_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7661d530 snd_hda_multi_out_dig_close +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x768fb750 snd_hda_create_spdif_share_sw +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7905b394 snd_hda_jack_detect_enable +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x790de88f snd_hda_register_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x79303cba snd_hda_check_amp_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7d15b748 snd_hda_add_nid +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x808b5298 azx_get_position +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x85c42cf7 snd_hda_spdif_ctls_assign +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x87ba4396 snd_hda_get_hint +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x89f6024c __snd_hda_add_vmaster +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8d60bac2 azx_stop_all_streams +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8ddedc1a snd_hda_codec_load_dsp_trigger +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x916c0335 __hda_codec_driver_register +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9228d3e1 snd_hda_mixer_amp_volume_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x93ac5c2a snd_hda_codec_eapd_power_filter +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x93accc15 snd_hda_jack_unsol_event +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9615ad90 azx_codec_configure +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x96d55fe2 snd_hda_codec_amp_update +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x97eb92f9 hda_codec_driver_unregister +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9800fb8d snd_hda_get_conn_index +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa2827d76 snd_hda_get_jack_location +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa61627ab snd_hda_mixer_amp_switch_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa65c8657 snd_hda_mixer_bind_tlv +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa83b83f8 snd_hda_create_dig_out_ctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa886e0ed snd_hda_jack_poll_all +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xad7e0f23 snd_hda_sync_vmaster_hook +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xae30ad23 snd_hda_jack_set_gating_jack +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xaf71cf66 snd_hda_enable_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb3c5ce38 azx_init_chip +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb6dc0953 snd_hda_codec_amp_init_stereo +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb911acd4 snd_hda_correct_pin_ctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb9f825b0 query_amp_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xbacb3478 hda_get_autocfg_input_label +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xbcbd4b77 snd_hda_codec_read +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xbd7a12ed snd_hda_codec_get_pincfg +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xbe04f844 snd_hda_get_conn_list +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xbe4c337f snd_hda_override_conn_list +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc2c2990a snd_hda_jack_add_kctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc399744f is_jack_detectable +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc6040a07 snd_hda_bind_sw +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc652fd69 snd_hda_get_jack_connectivity +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc6f17e48 snd_hda_mixer_amp_switch_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc80060f1 snd_hda_mixer_bind_ctls_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xcb301b6e snd_hda_get_jack_type +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xcbbdf46d snd_hda_jack_tbl_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xcdd05861 snd_hda_codec_load_dsp_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xce29e78a snd_hda_set_vmaster_tlv +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xcef66da5 snd_hda_codec_amp_init +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xcf6893a2 snd_hda_jack_tbl_get_from_tag +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xcfe8d458 snd_hda_set_power_save +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd22a29ba __snd_hda_codec_cleanup_stream +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd4442b5b snd_hda_input_mux_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd493e826 snd_hda_codec_new +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd6068b70 snd_hda_multi_out_dig_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd9ff837f snd_hda_pick_fixup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xde1090d8 azx_bus_init +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe118de5d snd_pcm_2_1_chmaps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe1608a14 snd_hda_unlock_devices +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe1eaad4b snd_hda_get_bool_hint +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe45b59ee snd_hda_add_vmaster_hook +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe839a181 snd_hda_create_spdif_in_ctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe94f914b snd_hda_shutup_pins +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe9a91a5b snd_hda_check_amp_list_power +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xec266e13 snd_hda_spdif_ctls_unassign +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xed248b7a snd_hda_mixer_bind_switch_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xed5b3f9f snd_hda_multi_out_dig_open +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xed992684 snd_hda_codec_load_dsp_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xeda3a721 snd_print_pcm_bits +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf08037f2 azx_free_streams +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf1b2df08 snd_hda_codec_set_pincfg +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf20ced21 snd_hda_pick_pin_fixup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf225d384 snd_hda_jack_set_dirty_all +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf2cf8a02 snd_hda_mixer_amp_volume_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf2d831f9 snd_hda_override_amp_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xfa4c51a7 snd_hda_lock_devices +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xfe31b82d snd_hda_codec_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x069e5711 snd_hda_gen_free +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x0ad3fcba snd_hda_gen_path_power_filter +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x0d5f0479 snd_hda_get_nid_path +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x36cb5254 snd_hda_gen_fix_pin_power +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x61bda94c snd_hda_gen_line_automute +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x69f5615c snd_hda_gen_update_outputs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x6b7d2a56 snd_hda_get_path_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 0x7b3532fe snd_hda_gen_add_kctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x7f30db59 snd_hda_gen_parse_auto_config +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 0x8c3f12f3 snd_hda_gen_init +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x93cfd680 snd_hda_add_new_path +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x9539d703 snd_hda_gen_mic_autoswitch +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x96924d9e snd_hda_activate_path +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x9becac69 snd_hda_gen_build_pcms +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xb40fc4f3 snd_hda_gen_hp_automute +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xb8a0768b snd_hda_gen_spec_init +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xc4533f78 snd_hda_parse_nid_path +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xc7ff04dd snd_hda_gen_check_power_status +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xd754821a snd_hda_gen_stream_pm +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xf68175af snd_hda_get_path_from_idx +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xf72efca9 snd_hda_gen_build_controls +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs4271 0xb451be9f cs4271_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs4271 0xcff1f4ae cs4271_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42l51 0x060b1a76 cs42l51_regmap +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42l51 0x375ad98c cs42l51_of_match +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42l51 0x824ba2ef cs42l51_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0x0245c4f2 cs42xx8_of_match +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0x03827f82 cs42xx8_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0x0dbd1246 cs42xx8_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0x3a6f8ced 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-es8328 0x1f82b5bc es8328_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-es8328 0xe7940b6a es8328_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-max98090 0x08ef6737 max98090_mic_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm512x 0x89785669 pcm512x_pm_ops +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm512x 0xc7d8136a pcm512x_remove +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm512x 0xe5e547f1 pcm512x_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm512x 0xece6393c pcm512x_regmap +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rl6231 0x70617a04 rl6231_get_clk_info +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rl6231 0x7f68b24d rl6231_pll_calc +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 0x78973a9a rt286_mic_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5640 0x83492cd8 rt5640_dmic_enable +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5645 0x302919db rt5645_set_jack_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5645 0xd801fae4 rt5645_sel_asrc_clk_src +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5670 0x01d8a799 rt5670_sel_asrc_clk_src +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5670 0xabc6a0fa rt5670_jack_suspend +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5670 0xc7301abf rt5670_jack_resume +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-rt5670 0xf24ee466 rt5670_set_jack_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0x3131e7f3 sigmadsp_setup +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0x34b667db sigmadsp_attach +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0x6aca3de5 devm_sigmadsp_init +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0xa149445f sigmadsp_restrict_params +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0xf1d5216a sigmadsp_reset +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp-i2c 0x613477a2 devm_sigmadsp_init_i2c +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sn95031 0x4c4d8668 sn95031_jack_detection +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-ssm2602 0x658d4c6f ssm2602_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-ssm2602 0xb51d1b8f ssm2602_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-tpa6130a2 0x6dc5dc94 tpa6130a2_stereo_enable +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-tpa6130a2 0x79c3be48 tpa6130a2_add_controls +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-ts3a227e 0x621eb2a8 ts3a227e_enable_jack_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8804 0x1c868d1e wm8804_remove +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8804 0x23201d1e wm8804_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8804 0x70c60308 wm8804_pm +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8804 0xc755760e wm8804_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8903 0xd2365da0 wm8903_mic_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8962 0x74c48f95 wm8962_mic_detect +EXPORT_SYMBOL_GPL sound/soc/fsl/snd-soc-fsl-asrc 0x7c26cae8 fsl_asrc_get_dma_channel +EXPORT_SYMBOL_GPL sound/soc/fsl/snd-soc-fsl-asrc 0xd13ccba9 fsl_asrc_platform +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/intel/atom/snd-soc-sst-mfld-platform 0x944fecf1 sst_unregister_dsp +EXPORT_SYMBOL_GPL sound/soc/intel/atom/snd-soc-sst-mfld-platform 0xba54469d sst_register_dsp +EXPORT_SYMBOL_GPL sound/soc/intel/atom/sst/snd-intel-sst-core 0x529e3da1 sst_configure_runtime_pm +EXPORT_SYMBOL_GPL sound/soc/intel/atom/sst/snd-intel-sst-core 0x541b2cbe sst_alloc_drv_context +EXPORT_SYMBOL_GPL sound/soc/intel/atom/sst/snd-intel-sst-core 0x77b17554 intel_sst_pm +EXPORT_SYMBOL_GPL sound/soc/intel/atom/sst/snd-intel-sst-core 0x9e6c638d sst_context_cleanup +EXPORT_SYMBOL_GPL sound/soc/intel/atom/sst/snd-intel-sst-core 0xab14edd5 relocate_imr_addr_mrfld +EXPORT_SYMBOL_GPL sound/soc/intel/atom/sst/snd-intel-sst-core 0xed821939 sst_context_init +EXPORT_SYMBOL_GPL sound/soc/intel/baytrail/snd-soc-sst-baytrail-pcm 0x050f7ab5 sst_byt_dsp_boot +EXPORT_SYMBOL_GPL sound/soc/intel/baytrail/snd-soc-sst-baytrail-pcm 0x240f5a91 sst_byt_dsp_suspend_late +EXPORT_SYMBOL_GPL sound/soc/intel/baytrail/snd-soc-sst-baytrail-pcm 0x28a548f5 sst_byt_dsp_free +EXPORT_SYMBOL_GPL sound/soc/intel/baytrail/snd-soc-sst-baytrail-pcm 0x47f60c0b sst_byt_dsp_wait_for_ready +EXPORT_SYMBOL_GPL sound/soc/intel/baytrail/snd-soc-sst-baytrail-pcm 0x90e77c55 sst_byt_dsp_init +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x0afae8c0 sst_block_alloc_scratch +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x0bd76c95 sst_memcpy_fromio_32 +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x0c9fb54f sst_mem_block_unregister_all +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x0d0ea201 sst_module_free_blocks +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x0e47823f sst_module_runtime_new +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x10a0fda0 sst_dsp_wake +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x16b9cb36 sst_module_free +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x175300af sst_dsp_get_offset +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x195fcfb7 sst_dsp_shim_update_bits +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x198f7a79 sst_dsp_boot +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x1b5e8b82 sst_shim32_read +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x1eefa15c sst_fw_free +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x2bbec0aa sst_dsp_dma_copyto +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x38fd370f sst_module_new +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x39dc6810 sst_dsp_dma_put_channel +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x3ddbebde sst_module_runtime_get_from_id +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x45523017 sst_mem_block_register +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x46222d40 sst_dsp_ipc_msg_rx +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x4a045773 sst_shim32_write +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x4f26821d sst_dsp_shim_write64_unlocked +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x51d8e788 sst_dsp_shim_read64 +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x520caf9e sst_dsp_outbox_write +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x538f2c3e sst_dsp_inbox_read +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x53a3dcf8 sst_fw_unload +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x572d024b sst_dsp_shim_read_unlocked +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x646db5d6 sst_fw_new +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x689f26ae sst_dsp_shim_write_unlocked +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x68a20728 sst_dsp_shim_update_bits_unlocked +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x6a9815ed sst_dsp_shim_read +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x73cd2fee sst_dsp_dma_get_channel +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x75b1bfd6 sst_dsp_free +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x7856487c sst_dsp_sleep +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x797d1bb8 sst_dsp_shim_update_bits64_unlocked +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x7c42ce9b sst_dsp_shim_read64_unlocked +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x7ec5b6ed sst_dsp_reset +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x7f13945e sst_alloc_blocks +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x836a4bd8 sst_dsp_shim_update_bits64 +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x879739ca sst_module_runtime_free_blocks +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x899cda3a sst_fw_free_all +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x8b677867 sst_dsp_inbox_write +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x8f04733e sst_dsp_dma_copyfrom +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x91e6eca6 sst_module_runtime_save +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x934bf675 sst_dsp_shim_write64 +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x9388895d sst_module_runtime_free +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0x9ae6dba8 sst_dsp_stall +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xa14a8697 sst_block_free_scratch +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xafc8b4cd sst_module_runtime_restore +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xaff61656 sst_dsp_mailbox_init +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xb5d7ce73 sst_dsp_ipc_msg_tx +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xbcec5387 sst_shim32_read64 +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xc9956436 sst_module_runtime_alloc_blocks +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xcf933cec sst_module_get_from_id +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xd349db97 sst_dsp_shim_write +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xd9a2c94c sst_shim32_write64 +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xdc93196a sst_dsp_dump +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xde756c0b sst_free_blocks +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xe1013ccb sst_dsp_new +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xe4cfca64 sst_fw_reload +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xee0209d7 sst_dsp_outbox_read +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xf0371cc8 sst_module_alloc_blocks +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-dsp 0xf84102cd sst_memcpy_toio_32 +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-ipc 0x0b8006a3 sst_ipc_drop_all +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-ipc 0x171fb9fb sst_ipc_tx_msg_reply_complete +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-ipc 0x5b9be77c sst_ipc_init +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-ipc 0x665d38fa sst_ipc_reply_find_msg +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-ipc 0x6ccac9d5 sst_ipc_tx_message_wait +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-ipc 0xc6f01b8e sst_ipc_tx_message_nowait +EXPORT_SYMBOL_GPL sound/soc/intel/common/snd-soc-sst-ipc 0xd3480b41 sst_ipc_fini +EXPORT_SYMBOL_GPL sound/soc/intel/haswell/snd-soc-sst-haswell-pcm 0x80490888 sst_hsw_dsp_init +EXPORT_SYMBOL_GPL sound/soc/intel/haswell/snd-soc-sst-haswell-pcm 0xd1f69f64 sst_hsw_device_set_config +EXPORT_SYMBOL_GPL sound/soc/intel/haswell/snd-soc-sst-haswell-pcm 0xeae54fec sst_hsw_dsp_free +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x035015a0 snd_soc_dai_set_fmt +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0365db06 snd_soc_component_write +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0508a31d snd_soc_dapm_new_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x05b048cd snd_soc_component_test_bits +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0672339c snd_soc_of_parse_audio_routing +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0688166a snd_soc_dai_set_pll +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x091fa1b3 snd_soc_jack_report +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x093921a0 snd_soc_remove_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0bc74b38 snd_soc_info_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0c916268 snd_soc_component_update_bits +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1099896f snd_soc_dai_set_tdm_slot +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x14a3edb1 snd_soc_dpcm_can_be_params +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1825ac81 snd_soc_dai_set_bclk_ratio +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x18f922c7 snd_soc_unregister_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1a4c7d05 snd_soc_set_ac97_ops +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1c00058f snd_soc_dpcm_be_get_state +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1cd3aa5f snd_soc_put_volsw_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1fa6cd61 snd_soc_add_component_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x20a49e8d snd_dmaengine_pcm_unregister +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x22132c4a snd_soc_dapm_mux_update_power +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2348d413 snd_soc_dapm_del_routes +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2541a979 snd_soc_calc_frame_size +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x261b3266 snd_soc_dapm_get_pin_switch +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x267e19b1 snd_soc_of_get_dai_link_codecs +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x269967ee snd_soc_put_volsw_range +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x29468347 snd_soc_dapm_sync_unlocked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2a1e86b0 snd_soc_component_read +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2d472f98 snd_soc_dapm_nc_pin_unlocked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x368c56d2 snd_soc_info_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x38febd0a snd_soc_add_card_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x39a99d92 snd_soc_dpcm_be_can_update +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3bfe2937 snd_soc_jack_notifier_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3d321570 snd_soc_get_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3eec96c1 snd_soc_component_async_complete +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x41cbdbb9 snd_soc_bytes_put +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x426651e5 snd_soc_dpcm_can_be_free_stop +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x42ef8edc snd_soc_dapm_force_enable_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x438b5604 snd_soc_read +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x445b49ba snd_soc_bytes_info +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x45b70c30 dapm_clock_event +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x467c2000 snd_soc_add_codec_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x476e1ea1 snd_soc_dpcm_fe_can_update +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x48004746 snd_soc_get_volsw_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x493689b5 snd_soc_dapm_nc_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4b7860f7 snd_soc_debugfs_root +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4c543f7f snd_soc_dai_set_sysclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4d01f390 snd_soc_of_parse_tdm_slot +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x577a886a snd_soc_limit_volume +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5852c306 snd_soc_register_card +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x599adc06 snd_soc_dapm_put_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x59fd8718 snd_soc_set_ac97_ops_of_reset +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5cec7766 snd_soc_dapm_put_pin_switch +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5e6b3a5b snd_soc_jack_add_zones +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x62872cdd snd_soc_dapm_enable_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x683de57a snd_soc_jack_add_gpiods +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x68b0ba67 snd_soc_unregister_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6a949fb0 snd_soc_update_bits +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6bc743f4 devm_snd_dmaengine_pcm_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6d49236b snd_soc_platform_trigger +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x70033dfa soc_ac97_ops +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7318b022 snd_soc_register_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x740d3278 snd_soc_dapm_disable_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7512e402 snd_soc_dai_set_tristate +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x764421d9 snd_soc_dapm_info_pin_switch +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x77f16e90 snd_soc_get_strobe +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7869d6fd snd_soc_jack_free_gpios +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x79d00a80 snd_soc_lookup_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7e606130 snd_soc_calc_bclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7eeb1d9a snd_soc_jack_get_type +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x80c96bcb snd_soc_codec_set_pll +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x83dea72b snd_soc_dapm_force_enable_pin_unlocked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x83f0c3ed snd_soc_of_parse_audio_simple_widgets +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x855e468b snd_soc_register_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x87628ff0 snd_soc_add_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8a2b31d8 snd_soc_test_bits +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8b40e9cd snd_soc_free_ac97_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8c48c682 snd_soc_info_volsw_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8e3f6d90 devm_snd_soc_register_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9058ab35 snd_soc_dapm_sync +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x934ba92d dapm_kcontrol_get_value +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x95e1bac0 snd_soc_dapm_free +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9607dd84 snd_soc_dapm_add_routes +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x99b01e35 snd_soc_put_xr_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa0aba61a snd_soc_put_strobe +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa0dd2f2d snd_soc_register_component +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa0e994c0 snd_soc_unregister_card +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa50bf3f9 dapm_mark_endpoints_dirty +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa6600aa6 snd_soc_unregister_component +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa8c7a45b snd_dmaengine_pcm_prepare_slave_config +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa9b6c6fb snd_soc_get_pcm_runtime +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xab781f25 snd_soc_new_ac97_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xad52ba91 snd_soc_dapm_get_pin_status +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xadb0c3a5 snd_soc_dapm_get_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xaea7edba snd_soc_card_get_kcontrol +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xaf1cb93e snd_soc_bytes_tlv_callback +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb0439421 snd_soc_info_xr_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb22f1668 snd_soc_component_init_regmap +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb33710b2 snd_soc_platform_write +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb4f645f2 snd_soc_jack_add_pins +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb71e2076 snd_soc_dapm_get_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb764d733 snd_soc_dapm_put_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb8670dcb snd_soc_resume +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xbaeb560e snd_soc_bytes_get +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xbc1f2a3c snd_soc_dapm_ignore_suspend +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xbc6bef14 snd_soc_dai_digital_mute +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xbccbe049 snd_soc_dapm_kcontrol_dapm +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xbd827251 snd_soc_put_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc0f3f438 snd_soc_add_dai_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc1580960 snd_soc_dai_set_channel_map +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc164f18a snd_soc_get_volsw_range +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc338542d snd_soc_dapm_enable_pin_unlocked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc436cee1 snd_soc_set_runtime_hwparams +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc6be853a snd_soc_of_parse_card_name +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc7bc0ec4 snd_dmaengine_pcm_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc7e93374 dpcm_be_dai_trigger +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc8269f94 snd_soc_params_to_frame_size +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xcb0789ba snd_soc_suspend +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xcbd75c78 snd_soc_dapm_new_widgets +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xcc49baf3 snd_soc_jack_add_gpios +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xcde3ae81 devm_snd_soc_register_card +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xceaa7ad4 snd_soc_get_xr_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd2900fb7 snd_soc_of_get_dai_name +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd6a98657 snd_soc_cnew +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd6fc3aec snd_soc_dapm_weak_routes +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd72d1931 snd_soc_dpcm_be_set_state +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xdacf8314 snd_soc_put_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xdaf8b1f8 snd_soc_platform_read +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xdb09db3c snd_soc_add_platform_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe0980b86 snd_soc_codec_set_sysclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe3818fa2 snd_soc_poweroff +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe4abcd63 snd_soc_info_volsw_range +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe5bc1b33 snd_soc_dapm_mixer_update_power +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe864d297 snd_soc_bytes_info_ext +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe87d3e40 snd_soc_component_update_bits_async +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xea9816b0 snd_soc_get_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xeaed3df4 snd_soc_dai_set_clkdiv +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xeb681880 snd_soc_of_parse_daifmt +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xeb711ae7 snd_soc_params_to_bclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xed8fc6e1 snd_soc_dapm_force_bias_level +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf0541aa1 dapm_regulator_event +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf1836868 snd_soc_component_exit_regmap +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf2f07a6b snd_soc_jack_notifier_unregister +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf37bf9e7 snd_soc_runtime_set_dai_fmt +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf429437e snd_soc_write +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf71bc060 snd_soc_dpcm_get_substream +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf897dda8 snd_soc_pm_ops +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xfd0cab19 devm_snd_soc_register_component +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xfd31d49d snd_soc_get_dai_substream +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xfdd3e4ad snd_soc_dapm_disable_pin_unlocked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xfec6eb65 snd_soc_card_jack_new +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x083ad200 line6_send_raw_message_async +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x202a1b1b line6_midi_id +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x2b07e293 line6_read_data +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x39b42721 line6_resume +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x4a321f78 line6_probe +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x4b6dfe90 line6_alloc_sysex_buffer +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x5a3f9533 line6_pcm_release +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x727a6cce line6_pcm_acquire +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x7ba45882 line6_disconnect +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x8e90018a line6_write_data +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x8ec973cd line6_start_timer +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x9db777d6 line6_read_serial_number +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xb46efd59 line6_init_midi +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xd77403c0 line6_version_request_async +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xe2092443 line6_send_sysex_message +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xe405cda1 line6_suspend +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xf111eca9 line6_init_pcm +EXPORT_SYMBOL_GPL vmlinux 0x0003e911 rhashtable_init +EXPORT_SYMBOL_GPL vmlinux 0x0034f3b6 xen_has_pv_nic_devices +EXPORT_SYMBOL_GPL vmlinux 0x0039c3e7 isa_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x003be6a1 dma_buf_kunmap_atomic +EXPORT_SYMBOL_GPL vmlinux 0x003c9812 pwmchip_add_with_polarity +EXPORT_SYMBOL_GPL vmlinux 0x005b3201 blk_rq_prep_clone +EXPORT_SYMBOL_GPL vmlinux 0x00632780 work_busy +EXPORT_SYMBOL_GPL vmlinux 0x006820b4 pci_write_msi_msg +EXPORT_SYMBOL_GPL vmlinux 0x0069d2da regulator_set_voltage_sel_regmap +EXPORT_SYMBOL_GPL vmlinux 0x006a02c9 netdev_set_default_ethtool_ops +EXPORT_SYMBOL_GPL vmlinux 0x006b4b74 fib_rules_unregister +EXPORT_SYMBOL_GPL vmlinux 0x008b6e78 regulator_bulk_disable +EXPORT_SYMBOL_GPL vmlinux 0x009304b6 ata_tf_from_fis +EXPORT_SYMBOL_GPL vmlinux 0x00bdf78b xenbus_dev_fatal +EXPORT_SYMBOL_GPL vmlinux 0x00cad805 inet6_csk_bind_conflict +EXPORT_SYMBOL_GPL vmlinux 0x00ebcb5d ata_id_string +EXPORT_SYMBOL_GPL vmlinux 0x00f04d06 blk_update_request +EXPORT_SYMBOL_GPL vmlinux 0x01010c6d klist_add_before +EXPORT_SYMBOL_GPL vmlinux 0x0102ea66 trace_event_buffer_commit +EXPORT_SYMBOL_GPL vmlinux 0x01086d58 __clocksource_update_freq_scale +EXPORT_SYMBOL_GPL vmlinux 0x010a8d4c to_nd_desc +EXPORT_SYMBOL_GPL vmlinux 0x011cf028 regulator_suspend_finish +EXPORT_SYMBOL_GPL vmlinux 0x012d8d2e nd_blk_region_provider_data +EXPORT_SYMBOL_GPL vmlinux 0x015e8448 ata_wait_register +EXPORT_SYMBOL_GPL vmlinux 0x0167e786 gpiochip_request_own_desc +EXPORT_SYMBOL_GPL vmlinux 0x0170cb6c efivar_work +EXPORT_SYMBOL_GPL vmlinux 0x017b3140 perf_event_refresh +EXPORT_SYMBOL_GPL vmlinux 0x01848a8e local_apic_timer_c2_ok +EXPORT_SYMBOL_GPL vmlinux 0x01926211 bus_find_device +EXPORT_SYMBOL_GPL vmlinux 0x0192aa74 pci_cfg_access_trylock +EXPORT_SYMBOL_GPL vmlinux 0x01e1a8de kgdb_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x020ec43d blkcipher_walk_done +EXPORT_SYMBOL_GPL vmlinux 0x0220f66b pci_reset_bus +EXPORT_SYMBOL_GPL vmlinux 0x023bf755 pci_reset_slot +EXPORT_SYMBOL_GPL vmlinux 0x023c3ef4 sysfs_create_groups +EXPORT_SYMBOL_GPL vmlinux 0x02726bcf bus_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x027f4b35 ata_acpi_gtm_xfermask +EXPORT_SYMBOL_GPL vmlinux 0x02872379 __tracepoint_suspend_resume +EXPORT_SYMBOL_GPL vmlinux 0x029f6dae usb_phy_generic_unregister +EXPORT_SYMBOL_GPL vmlinux 0x02abe6fe sock_diag_check_cookie +EXPORT_SYMBOL_GPL vmlinux 0x02b05ef4 __of_phy_provider_register +EXPORT_SYMBOL_GPL vmlinux 0x02bb769c iommu_get_domain_for_dev +EXPORT_SYMBOL_GPL vmlinux 0x02c4943b alarm_init +EXPORT_SYMBOL_GPL vmlinux 0x02ca38e4 gnttab_map_refs +EXPORT_SYMBOL_GPL vmlinux 0x02ca78ac component_master_add_with_match +EXPORT_SYMBOL_GPL vmlinux 0x02d72ecb tcp_get_info +EXPORT_SYMBOL_GPL vmlinux 0x02de4c8d net_ns_type_operations +EXPORT_SYMBOL_GPL vmlinux 0x02e4c3a6 inet_csk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x02fa447f sata_link_hardreset +EXPORT_SYMBOL_GPL vmlinux 0x02fea2ae rcu_note_context_switch +EXPORT_SYMBOL_GPL vmlinux 0x030849e8 kernfs_notify +EXPORT_SYMBOL_GPL vmlinux 0x0323484b regulator_bulk_get +EXPORT_SYMBOL_GPL vmlinux 0x033832c7 usb_amd_hang_symptom_quirk +EXPORT_SYMBOL_GPL vmlinux 0x0343bdf1 __i2c_board_list +EXPORT_SYMBOL_GPL vmlinux 0x036e68a1 power_supply_class +EXPORT_SYMBOL_GPL vmlinux 0x03861f2d rio_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x03872a50 key_type_asymmetric +EXPORT_SYMBOL_GPL vmlinux 0x03952f27 regmap_update_bits_check_async +EXPORT_SYMBOL_GPL vmlinux 0x03988124 cpuidle_get_driver +EXPORT_SYMBOL_GPL vmlinux 0x039fd867 trace_clock_global +EXPORT_SYMBOL_GPL vmlinux 0x03a996be ata_pci_bmdma_init_one +EXPORT_SYMBOL_GPL vmlinux 0x03c81f3a hvc_instantiate +EXPORT_SYMBOL_GPL vmlinux 0x03d8a65d pwm_config +EXPORT_SYMBOL_GPL vmlinux 0x03e3686c ata_timing_cycle2mode +EXPORT_SYMBOL_GPL vmlinux 0x03eb77f6 i2c_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0x0402cbbf preempt_notifier_inc +EXPORT_SYMBOL_GPL vmlinux 0x041c608e vfs_truncate +EXPORT_SYMBOL_GPL vmlinux 0x0444fff9 ping_err +EXPORT_SYMBOL_GPL vmlinux 0x044c837a gpiochip_find +EXPORT_SYMBOL_GPL vmlinux 0x045b5e6a class_destroy +EXPORT_SYMBOL_GPL vmlinux 0x0465a073 regmap_reg_in_ranges +EXPORT_SYMBOL_GPL vmlinux 0x0485655f amd_get_nodes_per_socket +EXPORT_SYMBOL_GPL vmlinux 0x048b5f8d twl4030_audio_get_mclk +EXPORT_SYMBOL_GPL vmlinux 0x0499deb0 __clk_get_rate +EXPORT_SYMBOL_GPL vmlinux 0x04bf26af ioremap_page_range +EXPORT_SYMBOL_GPL vmlinux 0x04c3f2c1 gnttab_empty_grant_references +EXPORT_SYMBOL_GPL vmlinux 0x04c4f603 mpi_get_buffer +EXPORT_SYMBOL_GPL vmlinux 0x04e4e4d6 simple_attr_release +EXPORT_SYMBOL_GPL vmlinux 0x04e91ed2 wm831x_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0x04eacd53 tty_put_char +EXPORT_SYMBOL_GPL vmlinux 0x04ecfb5c set_memory_wt +EXPORT_SYMBOL_GPL vmlinux 0x04f15492 xen_swiotlb_sync_single_for_device +EXPORT_SYMBOL_GPL vmlinux 0x04f4bd8d percpu_ref_exit +EXPORT_SYMBOL_GPL vmlinux 0x050ac892 __rio_local_write_config_8 +EXPORT_SYMBOL_GPL vmlinux 0x050cfcf4 iommu_group_get +EXPORT_SYMBOL_GPL vmlinux 0x050e466f task_cgroup_path +EXPORT_SYMBOL_GPL vmlinux 0x054e550b kernel_halt +EXPORT_SYMBOL_GPL vmlinux 0x054e5728 __rio_local_read_config_16 +EXPORT_SYMBOL_GPL vmlinux 0x058b582a vt_get_leds +EXPORT_SYMBOL_GPL vmlinux 0x05a05be6 iommu_detach_group +EXPORT_SYMBOL_GPL vmlinux 0x05b76651 debugfs_create_x16 +EXPORT_SYMBOL_GPL vmlinux 0x05c31694 rio_route_clr_table +EXPORT_SYMBOL_GPL vmlinux 0x05c41588 led_trigger_store +EXPORT_SYMBOL_GPL vmlinux 0x05cad654 debugfs_create_u32 +EXPORT_SYMBOL_GPL vmlinux 0x05d792e2 ata_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x05ed67c8 rio_dev_put +EXPORT_SYMBOL_GPL vmlinux 0x05f4a39c ref_module +EXPORT_SYMBOL_GPL vmlinux 0x05fe9cc2 mmc_regulator_set_ocr +EXPORT_SYMBOL_GPL vmlinux 0x06144860 bus_sort_breadthfirst +EXPORT_SYMBOL_GPL vmlinux 0x06213346 ehci_suspend +EXPORT_SYMBOL_GPL vmlinux 0x0626da5f od_unregister_powersave_bias_handler +EXPORT_SYMBOL_GPL vmlinux 0x064db9a5 mark_mounts_for_expiry +EXPORT_SYMBOL_GPL vmlinux 0x06963c36 intel_msic_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0x06b10951 pm_generic_poweroff_noirq +EXPORT_SYMBOL_GPL vmlinux 0x06c82d16 locks_alloc_lock +EXPORT_SYMBOL_GPL vmlinux 0x06cc79e2 devfreq_event_get_event +EXPORT_SYMBOL_GPL vmlinux 0x06d549e6 pinctrl_free_gpio +EXPORT_SYMBOL_GPL vmlinux 0x06dd0aec devm_get_free_pages +EXPORT_SYMBOL_GPL vmlinux 0x06e81d29 wbc_account_io +EXPORT_SYMBOL_GPL vmlinux 0x07032f9e trace_seq_to_user +EXPORT_SYMBOL_GPL vmlinux 0x070bd63a ata_sff_softreset +EXPORT_SYMBOL_GPL vmlinux 0x0726e3e4 irq_domain_xlate_onetwocell +EXPORT_SYMBOL_GPL vmlinux 0x0739f429 x509_check_signature +EXPORT_SYMBOL_GPL vmlinux 0x074f1220 driver_find_device +EXPORT_SYMBOL_GPL vmlinux 0x075b0132 alarm_forward +EXPORT_SYMBOL_GPL vmlinux 0x0762403c edac_put_sysfs_subsys +EXPORT_SYMBOL_GPL vmlinux 0x076ad3d1 fuse_put_request +EXPORT_SYMBOL_GPL vmlinux 0x078ae9fc fanout_mutex +EXPORT_SYMBOL_GPL vmlinux 0x07a77a57 ehci_adjust_port_wakeup_flags +EXPORT_SYMBOL_GPL vmlinux 0x07b21f85 kdb_get_kbd_char +EXPORT_SYMBOL_GPL vmlinux 0x07b52e38 rtnl_unregister +EXPORT_SYMBOL_GPL vmlinux 0x07ba2c9c virtqueue_get_buf +EXPORT_SYMBOL_GPL vmlinux 0x07e0e1ca gpiod_set_raw_array_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x07ef3400 usb_autopm_get_interface +EXPORT_SYMBOL_GPL vmlinux 0x07f300c3 smp_call_function_any +EXPORT_SYMBOL_GPL vmlinux 0x08088506 ata_pci_sff_activate_host +EXPORT_SYMBOL_GPL vmlinux 0x0808e982 regcache_cache_bypass +EXPORT_SYMBOL_GPL vmlinux 0x08156773 name_to_dev_t +EXPORT_SYMBOL_GPL vmlinux 0x082d5fe5 ata_link_abort +EXPORT_SYMBOL_GPL vmlinux 0x0830ca4a cpufreq_frequency_table_cpuinfo +EXPORT_SYMBOL_GPL vmlinux 0x08584056 phy_remove_lookup +EXPORT_SYMBOL_GPL vmlinux 0x085d6272 da9052_disable_irq +EXPORT_SYMBOL_GPL vmlinux 0x086b7d2e devm_usb_get_phy +EXPORT_SYMBOL_GPL vmlinux 0x08982f99 ata_host_resume +EXPORT_SYMBOL_GPL vmlinux 0x08ab3294 vfs_setxattr +EXPORT_SYMBOL_GPL vmlinux 0x08f14a2e pci_user_write_config_dword +EXPORT_SYMBOL_GPL vmlinux 0x09050171 pci_probe_reset_slot +EXPORT_SYMBOL_GPL vmlinux 0x09067982 blocking_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0x091eb9b4 round_jiffies +EXPORT_SYMBOL_GPL vmlinux 0x0923a4b2 arizona_dev_exit +EXPORT_SYMBOL_GPL vmlinux 0x092f5af1 crypto_lookup_template +EXPORT_SYMBOL_GPL vmlinux 0x093802be fwnode_property_read_u16_array +EXPORT_SYMBOL_GPL vmlinux 0x0938c0cb unix_inq_len +EXPORT_SYMBOL_GPL vmlinux 0x09437748 ring_buffer_read_events_cpu +EXPORT_SYMBOL_GPL vmlinux 0x09469482 kfree_call_rcu +EXPORT_SYMBOL_GPL vmlinux 0x0962d0e8 irq_set_affinity_notifier +EXPORT_SYMBOL_GPL vmlinux 0x096a6809 regmap_write_async +EXPORT_SYMBOL_GPL vmlinux 0x0983df26 irq_domain_associate +EXPORT_SYMBOL_GPL vmlinux 0x0987d68c pm_generic_resume +EXPORT_SYMBOL_GPL vmlinux 0x0996cffc __devm_of_phy_provider_register +EXPORT_SYMBOL_GPL vmlinux 0x09baa331 sdio_claim_irq +EXPORT_SYMBOL_GPL vmlinux 0x09bc7e40 dev_set_name +EXPORT_SYMBOL_GPL vmlinux 0x09d12865 ata_port_freeze +EXPORT_SYMBOL_GPL vmlinux 0x09d6f91c pstore_register +EXPORT_SYMBOL_GPL vmlinux 0x09e342dd vring_transport_features +EXPORT_SYMBOL_GPL vmlinux 0x09f96484 irq_domain_xlate_twocell +EXPORT_SYMBOL_GPL vmlinux 0x09fbbd99 gpiod_set_array_value +EXPORT_SYMBOL_GPL vmlinux 0x0a0d8ecc usb_hcd_poll_rh_status +EXPORT_SYMBOL_GPL vmlinux 0x0a3b4a8b __fib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x0a3b6ecf xenbus_free_evtchn +EXPORT_SYMBOL_GPL vmlinux 0x0a3e5f13 unregister_virtio_device +EXPORT_SYMBOL_GPL vmlinux 0x0a40873e devm_extcon_dev_allocate +EXPORT_SYMBOL_GPL vmlinux 0x0a4fde00 idr_alloc +EXPORT_SYMBOL_GPL vmlinux 0x0a814abe pci_restore_msi_state +EXPORT_SYMBOL_GPL vmlinux 0x0aa4280b ata_pci_sff_prepare_host +EXPORT_SYMBOL_GPL vmlinux 0x0ac1593a input_ff_event +EXPORT_SYMBOL_GPL vmlinux 0x0acc4924 dma_buf_kmap +EXPORT_SYMBOL_GPL vmlinux 0x0ad3d1a7 balloon_page_enqueue +EXPORT_SYMBOL_GPL vmlinux 0x0ad41939 regulator_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x0af133e0 acpi_bind_one +EXPORT_SYMBOL_GPL vmlinux 0x0afd4610 zs_malloc +EXPORT_SYMBOL_GPL vmlinux 0x0b07abe2 unshare_fs_struct +EXPORT_SYMBOL_GPL vmlinux 0x0b0d9aac perf_event_release_kernel +EXPORT_SYMBOL_GPL vmlinux 0x0b23a7c8 spi_setup +EXPORT_SYMBOL_GPL vmlinux 0x0b2cd280 regmap_init_spi +EXPORT_SYMBOL_GPL vmlinux 0x0b52e502 apei_resources_add +EXPORT_SYMBOL_GPL vmlinux 0x0b543bc0 ata_host_alloc_pinfo +EXPORT_SYMBOL_GPL vmlinux 0x0b59390b __tracepoint_rpm_suspend +EXPORT_SYMBOL_GPL vmlinux 0x0b73a304 PageHuge +EXPORT_SYMBOL_GPL vmlinux 0x0b988674 crypto_alloc_aead +EXPORT_SYMBOL_GPL vmlinux 0x0b99b989 nvdimm_bus_attribute_group +EXPORT_SYMBOL_GPL vmlinux 0x0bc128ea acpi_register_gsi +EXPORT_SYMBOL_GPL vmlinux 0x0bce5616 add_to_page_cache_lru +EXPORT_SYMBOL_GPL vmlinux 0x0bf2b3a4 regulator_force_disable +EXPORT_SYMBOL_GPL vmlinux 0x0bfa3a19 rcu_idle_exit +EXPORT_SYMBOL_GPL vmlinux 0x0c0c015e ring_buffer_swap_cpu +EXPORT_SYMBOL_GPL vmlinux 0x0c1a404c extcon_get_cable_state +EXPORT_SYMBOL_GPL vmlinux 0x0c2c6af4 sdio_memcpy_toio +EXPORT_SYMBOL_GPL vmlinux 0x0c2c8b6e add_page_wait_queue +EXPORT_SYMBOL_GPL vmlinux 0x0c2cdbf1 synchronize_sched +EXPORT_SYMBOL_GPL vmlinux 0x0c3bacc1 lp8788_update_bits +EXPORT_SYMBOL_GPL vmlinux 0x0c417a57 usb_enable_ltm +EXPORT_SYMBOL_GPL vmlinux 0x0c48b4d9 call_filter_check_discard +EXPORT_SYMBOL_GPL vmlinux 0x0c56e4bb pm_generic_suspend_late +EXPORT_SYMBOL_GPL vmlinux 0x0c617a87 blkio_cgrp_subsys +EXPORT_SYMBOL_GPL vmlinux 0x0c805f93 clflush_cache_range +EXPORT_SYMBOL_GPL vmlinux 0x0c80e3fe efivar_init +EXPORT_SYMBOL_GPL vmlinux 0x0ca07b4a acpi_subsys_freeze +EXPORT_SYMBOL_GPL vmlinux 0x0ca2e813 usb_alloc_urb +EXPORT_SYMBOL_GPL vmlinux 0x0cc1e40f crypto_it_tab +EXPORT_SYMBOL_GPL vmlinux 0x0cd8d468 rdev_get_id +EXPORT_SYMBOL_GPL vmlinux 0x0ce66124 __module_address +EXPORT_SYMBOL_GPL vmlinux 0x0d24908a device_get_child_node_count +EXPORT_SYMBOL_GPL vmlinux 0x0d264d81 wm8350_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x0d4961de nf_log_buf_open +EXPORT_SYMBOL_GPL vmlinux 0x0d59b24b inet_csk_bind_conflict +EXPORT_SYMBOL_GPL vmlinux 0x0d741cf0 spi_add_device +EXPORT_SYMBOL_GPL vmlinux 0x0d7664d3 __pm_runtime_use_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0x0d7d4d70 rcu_batches_completed +EXPORT_SYMBOL_GPL vmlinux 0x0d913eaf wm8400_reset_codec_reg_cache +EXPORT_SYMBOL_GPL vmlinux 0x0da432ef ata_sas_port_stop +EXPORT_SYMBOL_GPL vmlinux 0x0da4534c unregister_pernet_subsys +EXPORT_SYMBOL_GPL vmlinux 0x0dbcbaa8 device_init_wakeup +EXPORT_SYMBOL_GPL vmlinux 0x0dd3c04d bmp085_probe +EXPORT_SYMBOL_GPL vmlinux 0x0ddb1cd7 llist_reverse_order +EXPORT_SYMBOL_GPL vmlinux 0x0de8a16b devm_regulator_get_optional +EXPORT_SYMBOL_GPL vmlinux 0x0de9305c iommu_capable +EXPORT_SYMBOL_GPL vmlinux 0x0df925f6 btree_init_mempool +EXPORT_SYMBOL_GPL vmlinux 0x0e007edf xen_evtchn_nr_channels +EXPORT_SYMBOL_GPL vmlinux 0x0e06957d crypto_lookup_skcipher +EXPORT_SYMBOL_GPL vmlinux 0x0e0bf765 pm_runtime_barrier +EXPORT_SYMBOL_GPL vmlinux 0x0e13cb4d apei_resources_release +EXPORT_SYMBOL_GPL vmlinux 0x0e4ff046 crypto_unregister_algs +EXPORT_SYMBOL_GPL vmlinux 0x0e52ccc8 transport_class_unregister +EXPORT_SYMBOL_GPL vmlinux 0x0e54957d tps65912_clear_bits +EXPORT_SYMBOL_GPL vmlinux 0x0e6dbf52 tpmm_chip_alloc +EXPORT_SYMBOL_GPL vmlinux 0x0e78eb92 gpiod_set_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x0e8d98e1 devm_hwmon_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x0ea72851 __class_register +EXPORT_SYMBOL_GPL vmlinux 0x0eb1d9be bmp085_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0x0eeaedd0 pinctrl_force_default +EXPORT_SYMBOL_GPL vmlinux 0x0ef9fc5e virtqueue_enable_cb_delayed +EXPORT_SYMBOL_GPL vmlinux 0x0f0713a4 wb_writeout_inc +EXPORT_SYMBOL_GPL vmlinux 0x0f190512 wm831x_auxadc_read_uv +EXPORT_SYMBOL_GPL vmlinux 0x0f2d7d87 mce_unregister_decode_chain +EXPORT_SYMBOL_GPL vmlinux 0x0f336d7f rcutorture_get_gp_data +EXPORT_SYMBOL_GPL vmlinux 0x0f651f62 ip6_sk_dst_lookup_flow +EXPORT_SYMBOL_GPL vmlinux 0x0f6a926b extcon_set_cable_state_ +EXPORT_SYMBOL_GPL vmlinux 0x0f751aea input_event_from_user +EXPORT_SYMBOL_GPL vmlinux 0x0f89a421 device_property_present +EXPORT_SYMBOL_GPL vmlinux 0x0f8d80ad xenbus_dev_suspend +EXPORT_SYMBOL_GPL vmlinux 0x0fa138de xen_hvm_need_lapic +EXPORT_SYMBOL_GPL vmlinux 0x0fb4cf97 balloon_page_dequeue +EXPORT_SYMBOL_GPL vmlinux 0x0fc01e9f static_key_slow_inc +EXPORT_SYMBOL_GPL vmlinux 0x0fc24bb3 mmc_regulator_get_supply +EXPORT_SYMBOL_GPL vmlinux 0x0fcc1969 copy_from_user_nmi +EXPORT_SYMBOL_GPL vmlinux 0x0fe2d570 xenbus_directory +EXPORT_SYMBOL_GPL vmlinux 0x100bd9e8 ata_base_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x10138352 tracing_on +EXPORT_SYMBOL_GPL vmlinux 0x103a8fd7 gpiod_set_raw_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x105d3ebe inet6_csk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x10a5849b xfrm_audit_state_replay_overflow +EXPORT_SYMBOL_GPL vmlinux 0x10a5ba83 unregister_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x10c9e665 usb_reset_device +EXPORT_SYMBOL_GPL vmlinux 0x10d08eee crypto_ahash_setkey +EXPORT_SYMBOL_GPL vmlinux 0x10e83a8c tty_mode_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x10ecc52c usb_amd_quirk_pll_enable +EXPORT_SYMBOL_GPL vmlinux 0x110106c1 cper_severity_to_aer +EXPORT_SYMBOL_GPL vmlinux 0x114f1a20 balloon_stats +EXPORT_SYMBOL_GPL vmlinux 0x11611f6c sock_diag_register +EXPORT_SYMBOL_GPL vmlinux 0x1172ce54 rtc_ktime_to_tm +EXPORT_SYMBOL_GPL vmlinux 0x11762bdd key_set_timeout +EXPORT_SYMBOL_GPL vmlinux 0x118f66dd sprint_OID +EXPORT_SYMBOL_GPL vmlinux 0x11b80371 sdio_enable_func +EXPORT_SYMBOL_GPL vmlinux 0x11ca15d2 crypto_alloc_tfm +EXPORT_SYMBOL_GPL vmlinux 0x11d7589e add_hwgenerator_randomness +EXPORT_SYMBOL_GPL vmlinux 0x1204370d tps80031_ext_power_req_config +EXPORT_SYMBOL_GPL vmlinux 0x12139ddc pinctrl_utils_add_config +EXPORT_SYMBOL_GPL vmlinux 0x12140054 gpiod_to_irq +EXPORT_SYMBOL_GPL vmlinux 0x121d958a unregister_die_notifier +EXPORT_SYMBOL_GPL vmlinux 0x122574f6 is_skb_forwardable +EXPORT_SYMBOL_GPL vmlinux 0x122d7e55 bus_get_kset +EXPORT_SYMBOL_GPL vmlinux 0x12365e8c percpu_ida_free +EXPORT_SYMBOL_GPL vmlinux 0x123c8f09 sdio_readw +EXPORT_SYMBOL_GPL vmlinux 0x124f2056 crypto_get_attr_type +EXPORT_SYMBOL_GPL vmlinux 0x12641e6d spi_sync +EXPORT_SYMBOL_GPL vmlinux 0x1268f357 resume_device_irqs +EXPORT_SYMBOL_GPL vmlinux 0x127511c0 debugfs_create_x8 +EXPORT_SYMBOL_GPL vmlinux 0x1294d80a get_xsave_addr +EXPORT_SYMBOL_GPL vmlinux 0x129f149d pci_intx_mask_supported +EXPORT_SYMBOL_GPL vmlinux 0x12affa40 dm_send_uevents +EXPORT_SYMBOL_GPL vmlinux 0x12b5193c fwnode_handle_put +EXPORT_SYMBOL_GPL vmlinux 0x12b7164d phy_get +EXPORT_SYMBOL_GPL vmlinux 0x12c1d411 arizona_dev_init +EXPORT_SYMBOL_GPL vmlinux 0x12d5128a md_find_rdev_nr_rcu +EXPORT_SYMBOL_GPL vmlinux 0x12d59af3 ip6_redirect +EXPORT_SYMBOL_GPL vmlinux 0x12d7f811 regmap_fields_read +EXPORT_SYMBOL_GPL vmlinux 0x12ea3c14 btree_remove +EXPORT_SYMBOL_GPL vmlinux 0x1302026a thermal_zone_get_temp +EXPORT_SYMBOL_GPL vmlinux 0x130bd388 check_tsc_disabled +EXPORT_SYMBOL_GPL vmlinux 0x131a5ed7 regmap_del_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0x131c8ff0 wm8350_reg_lock +EXPORT_SYMBOL_GPL vmlinux 0x131db64a system_long_wq +EXPORT_SYMBOL_GPL vmlinux 0x131e01f3 xen_swiotlb_sync_sg_for_cpu +EXPORT_SYMBOL_GPL vmlinux 0x13277336 ata_bmdma32_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x1327fbea get_task_mm +EXPORT_SYMBOL_GPL vmlinux 0x1330dcb4 relay_buf_full +EXPORT_SYMBOL_GPL vmlinux 0x133145b2 relay_close +EXPORT_SYMBOL_GPL vmlinux 0x133d6aff wm8350_clear_bits +EXPORT_SYMBOL_GPL vmlinux 0x136209db power_supply_reg_notifier +EXPORT_SYMBOL_GPL vmlinux 0x136a618d regulator_bulk_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x136f8b36 blk_mq_free_hctx_request +EXPORT_SYMBOL_GPL vmlinux 0x138aff76 gnttab_init +EXPORT_SYMBOL_GPL vmlinux 0x1396ccb0 __clk_determine_rate +EXPORT_SYMBOL_GPL vmlinux 0x13ad647f scatterwalk_bytes_sglen +EXPORT_SYMBOL_GPL vmlinux 0x13b89dee pinctrl_request_gpio +EXPORT_SYMBOL_GPL vmlinux 0x13c0a394 xfrm_audit_policy_add +EXPORT_SYMBOL_GPL vmlinux 0x13db04d7 tpm2_do_selftest +EXPORT_SYMBOL_GPL vmlinux 0x13f0ee8d crypto_init_ahash_spawn +EXPORT_SYMBOL_GPL vmlinux 0x13f51fc3 ms_hyperv +EXPORT_SYMBOL_GPL vmlinux 0x140c7e2a crypto_alloc_instance2 +EXPORT_SYMBOL_GPL vmlinux 0x140ca5cf set_online_page_callback +EXPORT_SYMBOL_GPL vmlinux 0x140cd291 gpiod_export +EXPORT_SYMBOL_GPL vmlinux 0x14116cba xen_swiotlb_free_coherent +EXPORT_SYMBOL_GPL vmlinux 0x141faf81 device_property_read_string_array +EXPORT_SYMBOL_GPL vmlinux 0x143b1dcd devm_devfreq_event_add_edev +EXPORT_SYMBOL_GPL vmlinux 0x145784d1 gdt_page +EXPORT_SYMBOL_GPL vmlinux 0x145a7865 mbox_free_channel +EXPORT_SYMBOL_GPL vmlinux 0x145e9986 xenbus_dev_resume +EXPORT_SYMBOL_GPL vmlinux 0x146f3c9f tpm_gen_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x148efce5 pci_sriov_set_totalvfs +EXPORT_SYMBOL_GPL vmlinux 0x148fc543 pci_user_read_config_byte +EXPORT_SYMBOL_GPL vmlinux 0x14bc9782 ata_acpi_gtm +EXPORT_SYMBOL_GPL vmlinux 0x14d59ee1 irq_map_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x14d92fc6 dev_pm_qos_add_notifier +EXPORT_SYMBOL_GPL vmlinux 0x14dd69ca xfrm_audit_state_add +EXPORT_SYMBOL_GPL vmlinux 0x14f262c6 irq_gc_ack_set_bit +EXPORT_SYMBOL_GPL vmlinux 0x15010e1f arbitrary_virt_to_machine +EXPORT_SYMBOL_GPL vmlinux 0x150c959a pci_intx +EXPORT_SYMBOL_GPL vmlinux 0x153b3c8d spi_alloc_master +EXPORT_SYMBOL_GPL vmlinux 0x1547d2f9 trace_output_call +EXPORT_SYMBOL_GPL vmlinux 0x15568631 lookup_address +EXPORT_SYMBOL_GPL vmlinux 0x157963c0 usb_hub_clear_tt_buffer +EXPORT_SYMBOL_GPL vmlinux 0x15892417 async_synchronize_cookie +EXPORT_SYMBOL_GPL vmlinux 0x15a78544 debugfs_create_file +EXPORT_SYMBOL_GPL vmlinux 0x15b0606e e820_any_mapped +EXPORT_SYMBOL_GPL vmlinux 0x15bae042 fat_time_unix2fat +EXPORT_SYMBOL_GPL vmlinux 0x15cd247d ata_cable_unknown +EXPORT_SYMBOL_GPL vmlinux 0x15dcfe99 rtc_read_time +EXPORT_SYMBOL_GPL vmlinux 0x15efd446 rcu_batches_started +EXPORT_SYMBOL_GPL vmlinux 0x16000a3c dm_device_name +EXPORT_SYMBOL_GPL vmlinux 0x162f01b8 md_kick_rdev_from_array +EXPORT_SYMBOL_GPL vmlinux 0x164934f4 pgprot_writethrough +EXPORT_SYMBOL_GPL vmlinux 0x1650bf27 rcutorture_record_progress +EXPORT_SYMBOL_GPL vmlinux 0x167807ae acpi_subsys_resume_early +EXPORT_SYMBOL_GPL vmlinux 0x16831e51 inet_csk_addr2sockaddr +EXPORT_SYMBOL_GPL vmlinux 0x16a31d6d wakeup_source_register +EXPORT_SYMBOL_GPL vmlinux 0x16a561f7 devres_add +EXPORT_SYMBOL_GPL vmlinux 0x16b25806 arizona_clk32k_disable +EXPORT_SYMBOL_GPL vmlinux 0x16c626c5 hwmon_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x16cb44b0 fpstate_init +EXPORT_SYMBOL_GPL vmlinux 0x16d6edee acpi_gpiochip_free_interrupts +EXPORT_SYMBOL_GPL vmlinux 0x16d717e5 tty_prepare_flip_string +EXPORT_SYMBOL_GPL vmlinux 0x16d8cac5 pci_check_and_mask_intx +EXPORT_SYMBOL_GPL vmlinux 0x16f28ed9 pm_stay_awake +EXPORT_SYMBOL_GPL vmlinux 0x17140a66 crypto_drop_spawn +EXPORT_SYMBOL_GPL vmlinux 0x172817ee list_lru_walk_node +EXPORT_SYMBOL_GPL vmlinux 0x172ece75 pm_runtime_irq_safe +EXPORT_SYMBOL_GPL vmlinux 0x1734b2d5 xenbus_watch_pathfmt +EXPORT_SYMBOL_GPL vmlinux 0x1753a32f hash_digest_size +EXPORT_SYMBOL_GPL vmlinux 0x17614bf3 apei_resources_sub +EXPORT_SYMBOL_GPL vmlinux 0x1778d704 ata_sff_wait_after_reset +EXPORT_SYMBOL_GPL vmlinux 0x177c338d twl_get_version +EXPORT_SYMBOL_GPL vmlinux 0x17910190 relay_open +EXPORT_SYMBOL_GPL vmlinux 0x1791722f dma_buf_put +EXPORT_SYMBOL_GPL vmlinux 0x17a92f2e xen_xlate_remap_gfn_array +EXPORT_SYMBOL_GPL vmlinux 0x17c3affa ata_ehi_clear_desc +EXPORT_SYMBOL_GPL vmlinux 0x17c5c52b crypto_unregister_rng +EXPORT_SYMBOL_GPL vmlinux 0x1808bf8e pci_enable_pcie_error_reporting +EXPORT_SYMBOL_GPL vmlinux 0x1853653c btree_alloc +EXPORT_SYMBOL_GPL vmlinux 0x18582826 amd_pmu_disable_virt +EXPORT_SYMBOL_GPL vmlinux 0x185e5ce6 palmas_ext_control_req_config +EXPORT_SYMBOL_GPL vmlinux 0x1866cec2 ring_buffer_size +EXPORT_SYMBOL_GPL vmlinux 0x1868f3c0 regmap_update_bits_async +EXPORT_SYMBOL_GPL vmlinux 0x186d99b9 rio_release_inb_pwrite +EXPORT_SYMBOL_GPL vmlinux 0x1878f62b edac_err_assert +EXPORT_SYMBOL_GPL vmlinux 0x18be06ba isa_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0x18cec943 virtqueue_get_vring_size +EXPORT_SYMBOL_GPL vmlinux 0x18f5e50e arch_apei_enable_cmcff +EXPORT_SYMBOL_GPL vmlinux 0x18f83fab gnttab_grant_foreign_access_ref +EXPORT_SYMBOL_GPL vmlinux 0x191ce4e1 ablkcipher_walk_done +EXPORT_SYMBOL_GPL vmlinux 0x19263a5a bpf_prog_create +EXPORT_SYMBOL_GPL vmlinux 0x192776b0 pci_try_reset_slot +EXPORT_SYMBOL_GPL vmlinux 0x19394b86 inet_csk_route_child_sock +EXPORT_SYMBOL_GPL vmlinux 0x193d48e0 trace_current_buffer_unlock_commit +EXPORT_SYMBOL_GPL vmlinux 0x194dd5f5 pkey_algo_name +EXPORT_SYMBOL_GPL vmlinux 0x19549107 crypto_chain +EXPORT_SYMBOL_GPL vmlinux 0x1955d26a wm8350_read_auxadc +EXPORT_SYMBOL_GPL vmlinux 0x196614ce hw_breakpoint_restore +EXPORT_SYMBOL_GPL vmlinux 0x19690f3a scsi_nl_sock +EXPORT_SYMBOL_GPL vmlinux 0x1969c030 ata_scsi_unlock_native_capacity +EXPORT_SYMBOL_GPL vmlinux 0x196c4b67 __remove_pages +EXPORT_SYMBOL_GPL vmlinux 0x197a85c8 pm_runtime_enable +EXPORT_SYMBOL_GPL vmlinux 0x1990f8ff pm_qos_update_request +EXPORT_SYMBOL_GPL vmlinux 0x19a304ba usb_disabled +EXPORT_SYMBOL_GPL vmlinux 0x19b05ae8 nf_queue_entry_release_refs +EXPORT_SYMBOL_GPL vmlinux 0x19b384a5 hash_algo_name +EXPORT_SYMBOL_GPL vmlinux 0x19c96b7d phy_pm_runtime_forbid +EXPORT_SYMBOL_GPL vmlinux 0x19de7b29 blkcg_print_blkgs +EXPORT_SYMBOL_GPL vmlinux 0x19e4b1a1 register_kretprobe +EXPORT_SYMBOL_GPL vmlinux 0x19e7359e blkcipher_walk_phys +EXPORT_SYMBOL_GPL vmlinux 0x19eaf7ba crypto_ahash_digest +EXPORT_SYMBOL_GPL vmlinux 0x19f1c270 mbox_chan_txdone +EXPORT_SYMBOL_GPL vmlinux 0x19f425e4 devm_remove_action +EXPORT_SYMBOL_GPL vmlinux 0x1a1c4082 mod_delayed_work_on +EXPORT_SYMBOL_GPL vmlinux 0x1a379276 skcipher_geniv_init +EXPORT_SYMBOL_GPL vmlinux 0x1a4f0f44 handle_fasteoi_irq +EXPORT_SYMBOL_GPL vmlinux 0x1a5d059e devm_kstrdup +EXPORT_SYMBOL_GPL vmlinux 0x1a6808f7 rtc_initialize_alarm +EXPORT_SYMBOL_GPL vmlinux 0x1a8f7c5f ata_sff_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x1a967885 cpufreq_frequency_get_table +EXPORT_SYMBOL_GPL vmlinux 0x1aa37b1f scsi_get_vpd_page +EXPORT_SYMBOL_GPL vmlinux 0x1aa390be sdio_set_block_size +EXPORT_SYMBOL_GPL vmlinux 0x1aa68d89 usb_free_streams +EXPORT_SYMBOL_GPL vmlinux 0x1acef7d2 pm_freezing +EXPORT_SYMBOL_GPL vmlinux 0x1acf4cdd cpufreq_generic_init +EXPORT_SYMBOL_GPL vmlinux 0x1ad1ddfd device_create_vargs +EXPORT_SYMBOL_GPL vmlinux 0x1aeafb77 clk_register_gpio_gate +EXPORT_SYMBOL_GPL vmlinux 0x1afff5d2 replace_page_cache_page +EXPORT_SYMBOL_GPL vmlinux 0x1b1757c9 __gpiod_get_index +EXPORT_SYMBOL_GPL vmlinux 0x1b1f2bda speedstep_get_freqs +EXPORT_SYMBOL_GPL vmlinux 0x1b316698 pci_set_pcie_reset_state +EXPORT_SYMBOL_GPL vmlinux 0x1b35ed89 register_user_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x1b38b3c6 klist_prev +EXPORT_SYMBOL_GPL vmlinux 0x1b4d3b41 device_create_with_groups +EXPORT_SYMBOL_GPL vmlinux 0x1b52db1c probe_kernel_read +EXPORT_SYMBOL_GPL vmlinux 0x1b5511e5 crypto_nivaead_type +EXPORT_SYMBOL_GPL vmlinux 0x1b8822d8 pinctrl_gpio_direction_output +EXPORT_SYMBOL_GPL vmlinux 0x1b8e25d9 device_release_driver +EXPORT_SYMBOL_GPL vmlinux 0x1b9014ca uart_console_write +EXPORT_SYMBOL_GPL vmlinux 0x1b955855 usb_get_phy_dev +EXPORT_SYMBOL_GPL vmlinux 0x1b9aca3f jprobe_return +EXPORT_SYMBOL_GPL vmlinux 0x1baf0e86 netlink_has_listeners +EXPORT_SYMBOL_GPL vmlinux 0x1bc5eebe pinctrl_gpio_direction_input +EXPORT_SYMBOL_GPL vmlinux 0x1bf479a8 to_nd_region +EXPORT_SYMBOL_GPL vmlinux 0x1c05d842 user_read +EXPORT_SYMBOL_GPL vmlinux 0x1c2eec27 get_net_ns_by_pid +EXPORT_SYMBOL_GPL vmlinux 0x1c480535 platform_device_register +EXPORT_SYMBOL_GPL vmlinux 0x1c4a2b6a dev_pm_disable_wake_irq +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 0x1c6660c7 btree_merge +EXPORT_SYMBOL_GPL vmlinux 0x1c80d27d btree_geo128 +EXPORT_SYMBOL_GPL vmlinux 0x1c87a811 __round_jiffies_up +EXPORT_SYMBOL_GPL vmlinux 0x1c9b27c7 fat_get_dotdot_entry +EXPORT_SYMBOL_GPL vmlinux 0x1cc983d5 pci_set_cacheline_size +EXPORT_SYMBOL_GPL vmlinux 0x1cd1f578 pci_hp_deregister +EXPORT_SYMBOL_GPL vmlinux 0x1cd3f005 dma_get_slave_caps +EXPORT_SYMBOL_GPL vmlinux 0x1ce38d50 pm_runtime_set_autosuspend_delay +EXPORT_SYMBOL_GPL vmlinux 0x1ce7a0c5 scsi_target_block +EXPORT_SYMBOL_GPL vmlinux 0x1d0c096e regulator_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0x1d0d727d __rtnl_link_unregister +EXPORT_SYMBOL_GPL vmlinux 0x1d0e83cc xenbus_probe_node +EXPORT_SYMBOL_GPL vmlinux 0x1d1d3271 acpi_dev_gpio_irq_get +EXPORT_SYMBOL_GPL vmlinux 0x1d459685 xstate_size +EXPORT_SYMBOL_GPL vmlinux 0x1d4f856c usb_set_device_state +EXPORT_SYMBOL_GPL vmlinux 0x1d58ae14 lpddr2_jedec_timings +EXPORT_SYMBOL_GPL vmlinux 0x1d739e1c xen_set_callback_via +EXPORT_SYMBOL_GPL vmlinux 0x1d77b0f8 unix_socket_table +EXPORT_SYMBOL_GPL vmlinux 0x1d7c0168 __ftrace_vprintk +EXPORT_SYMBOL_GPL vmlinux 0x1d7cb586 clk_register_fixed_rate_with_accuracy +EXPORT_SYMBOL_GPL vmlinux 0x1d9dcb2d device_property_read_u32_array +EXPORT_SYMBOL_GPL vmlinux 0x1dab6495 bus_for_each_drv +EXPORT_SYMBOL_GPL vmlinux 0x1dbc9785 inet_csk_clone_lock +EXPORT_SYMBOL_GPL vmlinux 0x1dcd9626 efivar_entry_add +EXPORT_SYMBOL_GPL vmlinux 0x1dd7d339 regulator_set_current_limit +EXPORT_SYMBOL_GPL vmlinux 0x1ddaed62 skcipher_geniv_exit +EXPORT_SYMBOL_GPL vmlinux 0x1def880e bind_interdomain_evtchn_to_irq +EXPORT_SYMBOL_GPL vmlinux 0x1e0c556c rt_mutex_trylock +EXPORT_SYMBOL_GPL vmlinux 0x1e1d9704 proc_mkdir_data +EXPORT_SYMBOL_GPL vmlinux 0x1e26cb60 wm8350_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x1e280201 devm_regulator_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x1e3558d6 __skb_tstamp_tx +EXPORT_SYMBOL_GPL vmlinux 0x1e3e747e fuse_conn_get +EXPORT_SYMBOL_GPL vmlinux 0x1e4632a3 ping_common_sendmsg +EXPORT_SYMBOL_GPL vmlinux 0x1e47be58 ata_common_sdev_attrs +EXPORT_SYMBOL_GPL vmlinux 0x1e4cb339 init_dummy_netdev +EXPORT_SYMBOL_GPL vmlinux 0x1e5b03dc pm_qos_add_notifier +EXPORT_SYMBOL_GPL vmlinux 0x1e5f82c7 dma_wait_for_async_tx +EXPORT_SYMBOL_GPL vmlinux 0x1e7bbcb3 kernel_restart +EXPORT_SYMBOL_GPL vmlinux 0x1e8d9fb0 ata_pci_bmdma_clear_simplex +EXPORT_SYMBOL_GPL vmlinux 0x1eb9516e round_jiffies_relative +EXPORT_SYMBOL_GPL vmlinux 0x1ebf6c2a pci_power_names +EXPORT_SYMBOL_GPL vmlinux 0x1f0aa96c crypto_tfm_in_queue +EXPORT_SYMBOL_GPL vmlinux 0x1f7f6fac register_jprobe +EXPORT_SYMBOL_GPL vmlinux 0x1f8544b8 panic_timeout +EXPORT_SYMBOL_GPL vmlinux 0x1f8db7f9 ring_buffer_overrun_cpu +EXPORT_SYMBOL_GPL vmlinux 0x1fa5b19a preempt_schedule_notrace +EXPORT_SYMBOL_GPL vmlinux 0x1fb71aa7 gpiochip_free_own_desc +EXPORT_SYMBOL_GPL vmlinux 0x1fc91172 usb_disable_lpm +EXPORT_SYMBOL_GPL vmlinux 0x1ff41c7f vfs_lock_file +EXPORT_SYMBOL_GPL vmlinux 0x1ffdcd1a sdio_disable_func +EXPORT_SYMBOL_GPL vmlinux 0x20191f92 transport_remove_device +EXPORT_SYMBOL_GPL vmlinux 0x202c9798 reservation_object_test_signaled_rcu +EXPORT_SYMBOL_GPL vmlinux 0x20342a9d put_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0x204af089 extcon_get_extcon_dev +EXPORT_SYMBOL_GPL vmlinux 0x204e66e6 percpu_ida_free_tags +EXPORT_SYMBOL_GPL vmlinux 0x20632339 fib_rules_lookup +EXPORT_SYMBOL_GPL vmlinux 0x2071fde0 transport_add_device +EXPORT_SYMBOL_GPL vmlinux 0x209ec764 xen_event_channel_op_compat +EXPORT_SYMBOL_GPL vmlinux 0x20aa6f51 cpuidle_enable_device +EXPORT_SYMBOL_GPL vmlinux 0x20bb6ea4 sata_link_scr_lpm +EXPORT_SYMBOL_GPL vmlinux 0x20d3734a ata_pio_need_iordy +EXPORT_SYMBOL_GPL vmlinux 0x20d8c302 cpufreq_freq_transition_begin +EXPORT_SYMBOL_GPL vmlinux 0x20de6ad7 map_vm_area +EXPORT_SYMBOL_GPL vmlinux 0x20f935a0 klist_add_tail +EXPORT_SYMBOL_GPL vmlinux 0x211055b2 vring_del_virtqueue +EXPORT_SYMBOL_GPL vmlinux 0x214e3967 dev_pm_qos_remove_notifier +EXPORT_SYMBOL_GPL vmlinux 0x2166909e crypto_unregister_akcipher +EXPORT_SYMBOL_GPL vmlinux 0x2186e224 rtnl_link_register +EXPORT_SYMBOL_GPL vmlinux 0x21a563da clk_get_accuracy +EXPORT_SYMBOL_GPL vmlinux 0x21ac03db preempt_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x21ac8b77 iommu_group_get_by_id +EXPORT_SYMBOL_GPL vmlinux 0x21b82548 regulator_set_voltage_time_sel +EXPORT_SYMBOL_GPL vmlinux 0x21c73621 xenbus_dev_error +EXPORT_SYMBOL_GPL vmlinux 0x21cc4acd rio_mport_read_config_8 +EXPORT_SYMBOL_GPL vmlinux 0x21ce9fa8 devm_add_action +EXPORT_SYMBOL_GPL vmlinux 0x21d1a53f pm_generic_resume_early +EXPORT_SYMBOL_GPL vmlinux 0x21edb7ca xen_swiotlb_dma_mapping_error +EXPORT_SYMBOL_GPL vmlinux 0x21f839a4 bio_alloc_mddev +EXPORT_SYMBOL_GPL vmlinux 0x21fadc69 ata_sas_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x2217631f ohci_resume +EXPORT_SYMBOL_GPL vmlinux 0x221cfeec pci_generic_config_read +EXPORT_SYMBOL_GPL vmlinux 0x221eccd4 dev_coredumpm +EXPORT_SYMBOL_GPL vmlinux 0x2247c12a xhci_suspend +EXPORT_SYMBOL_GPL vmlinux 0x22575004 rt_mutex_destroy +EXPORT_SYMBOL_GPL vmlinux 0x225d1a61 mbox_request_channel +EXPORT_SYMBOL_GPL vmlinux 0x229224de vma_kernel_pagesize +EXPORT_SYMBOL_GPL vmlinux 0x2296c00d crypto_attr_u32 +EXPORT_SYMBOL_GPL vmlinux 0x22985dc0 regmap_fields_write +EXPORT_SYMBOL_GPL vmlinux 0x2299ec81 perf_assign_events +EXPORT_SYMBOL_GPL vmlinux 0x22ac9645 tps6586x_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0x22b2cfef dax_fault +EXPORT_SYMBOL_GPL vmlinux 0x22c4b6b7 gpiod_direction_output_raw +EXPORT_SYMBOL_GPL vmlinux 0x22cf4aa5 irq_get_irq_data +EXPORT_SYMBOL_GPL vmlinux 0x22d1f4d6 pm_generic_runtime_suspend +EXPORT_SYMBOL_GPL vmlinux 0x22f86ffd clk_gate_ops +EXPORT_SYMBOL_GPL vmlinux 0x23048011 __intel_mid_cpu_chip +EXPORT_SYMBOL_GPL vmlinux 0x230bf0bf irq_domain_associate_many +EXPORT_SYMBOL_GPL vmlinux 0x231790b4 get_task_pid +EXPORT_SYMBOL_GPL vmlinux 0x23185a10 da903x_update +EXPORT_SYMBOL_GPL vmlinux 0x233119f2 usb_autopm_put_interface +EXPORT_SYMBOL_GPL vmlinux 0x2366a2c0 errata +EXPORT_SYMBOL_GPL vmlinux 0x23732c9d ehci_resume +EXPORT_SYMBOL_GPL vmlinux 0x23864ce7 cpuset_mem_spread_node +EXPORT_SYMBOL_GPL vmlinux 0x23892ef0 xenbus_register_driver_common +EXPORT_SYMBOL_GPL vmlinux 0x23946a5a gpiod_put_array +EXPORT_SYMBOL_GPL vmlinux 0x2396c7f0 clk_set_parent +EXPORT_SYMBOL_GPL vmlinux 0x23a0caf9 nvdimm_provider_data +EXPORT_SYMBOL_GPL vmlinux 0x23b2122d serial8250_do_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x23ef6eb7 bitmap_load +EXPORT_SYMBOL_GPL vmlinux 0x23f483ba shash_ahash_update +EXPORT_SYMBOL_GPL vmlinux 0x23fe1dad tcp_ca_get_key_by_name +EXPORT_SYMBOL_GPL vmlinux 0x240580a9 xenbus_probe +EXPORT_SYMBOL_GPL vmlinux 0x241739d3 ata_qc_complete_multiple +EXPORT_SYMBOL_GPL vmlinux 0x24318cc1 skb_zerocopy_headlen +EXPORT_SYMBOL_GPL vmlinux 0x243738df regulator_bulk_force_disable +EXPORT_SYMBOL_GPL vmlinux 0x24457174 audit_enabled +EXPORT_SYMBOL_GPL vmlinux 0x2469810f __rcu_read_unlock +EXPORT_SYMBOL_GPL vmlinux 0x24774f02 power_supply_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x247ef831 kdb_unregister +EXPORT_SYMBOL_GPL vmlinux 0x24aac4d9 crypto_aes_expand_key +EXPORT_SYMBOL_GPL vmlinux 0x24c119e0 __tracepoint_attach_device_to_domain +EXPORT_SYMBOL_GPL vmlinux 0x24c4c232 n_tty_inherit_ops +EXPORT_SYMBOL_GPL vmlinux 0x24c7698a xenbus_write +EXPORT_SYMBOL_GPL vmlinux 0x24ce66fb disk_part_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x24da5194 ata_std_postreset +EXPORT_SYMBOL_GPL vmlinux 0x24eb7e32 leds_list +EXPORT_SYMBOL_GPL vmlinux 0x24f39c39 reset_control_reset +EXPORT_SYMBOL_GPL vmlinux 0x24f3f2db elv_unregister +EXPORT_SYMBOL_GPL vmlinux 0x24f45195 usb_wait_anchor_empty_timeout +EXPORT_SYMBOL_GPL vmlinux 0x24f4a84d spi_alloc_device +EXPORT_SYMBOL_GPL vmlinux 0x25099d8a __nvdimm_bus_register +EXPORT_SYMBOL_GPL vmlinux 0x25355be2 rio_add_device +EXPORT_SYMBOL_GPL vmlinux 0x25379e73 clk_set_min_rate +EXPORT_SYMBOL_GPL vmlinux 0x2545c170 unregister_xenbus_watch +EXPORT_SYMBOL_GPL vmlinux 0x25483c26 rio_route_get_entry +EXPORT_SYMBOL_GPL vmlinux 0x25574504 clk_fixed_rate_ops +EXPORT_SYMBOL_GPL vmlinux 0x2571b528 phy_put +EXPORT_SYMBOL_GPL vmlinux 0x25822201 task_active_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0x25886455 of_pwm_xlate_with_flags +EXPORT_SYMBOL_GPL vmlinux 0x259098f3 spi_sync_locked +EXPORT_SYMBOL_GPL vmlinux 0x25a658e8 wait_for_stable_page +EXPORT_SYMBOL_GPL vmlinux 0x25ad72bd acpi_ec_remove_query_handler +EXPORT_SYMBOL_GPL vmlinux 0x25e5e5dc dma_buf_attach +EXPORT_SYMBOL_GPL vmlinux 0x25f02c87 xen_p2m_addr +EXPORT_SYMBOL_GPL vmlinux 0x25f63832 swiotlb_tbl_unmap_single +EXPORT_SYMBOL_GPL vmlinux 0x25fb3b3d gpiod_set_value +EXPORT_SYMBOL_GPL vmlinux 0x262f20a8 local_clock +EXPORT_SYMBOL_GPL vmlinux 0x264ae4c6 usb_anchor_resume_wakeups +EXPORT_SYMBOL_GPL vmlinux 0x26520970 vm_memory_committed +EXPORT_SYMBOL_GPL vmlinux 0x2663ec05 debugfs_create_u64 +EXPORT_SYMBOL_GPL vmlinux 0x266b7638 interval_tree_remove +EXPORT_SYMBOL_GPL vmlinux 0x26842934 ip6_dst_lookup_flow +EXPORT_SYMBOL_GPL vmlinux 0x2689f070 subsys_dev_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0x26965721 slow_virt_to_phys +EXPORT_SYMBOL_GPL vmlinux 0x26b3c701 __wake_up_sync +EXPORT_SYMBOL_GPL vmlinux 0x26b71fb4 ring_buffer_time_stamp +EXPORT_SYMBOL_GPL vmlinux 0x26c8ad2e ip6_datagram_recv_ctl +EXPORT_SYMBOL_GPL vmlinux 0x26c90ea4 scsi_eh_get_sense +EXPORT_SYMBOL_GPL vmlinux 0x26f2653d fb_deferred_io_fsync +EXPORT_SYMBOL_GPL vmlinux 0x26f981df page_mkclean +EXPORT_SYMBOL_GPL vmlinux 0x2723916e acpi_get_pci_dev +EXPORT_SYMBOL_GPL vmlinux 0x274cf5e1 __clk_get_flags +EXPORT_SYMBOL_GPL vmlinux 0x275094f3 fpu__restore +EXPORT_SYMBOL_GPL vmlinux 0x27793c95 led_trigger_set_default +EXPORT_SYMBOL_GPL vmlinux 0x2787db00 vbin_printf +EXPORT_SYMBOL_GPL vmlinux 0x27976d19 blk_queue_bypass_end +EXPORT_SYMBOL_GPL vmlinux 0x279cb985 apei_exec_pre_map_gars +EXPORT_SYMBOL_GPL vmlinux 0x27a1ac0d nd_cmd_in_size +EXPORT_SYMBOL_GPL vmlinux 0x27a367ab perf_event_disable +EXPORT_SYMBOL_GPL vmlinux 0x27b7625d led_classdev_resume +EXPORT_SYMBOL_GPL vmlinux 0x27bdaa79 efivars_register +EXPORT_SYMBOL_GPL vmlinux 0x27bf8424 driver_attach +EXPORT_SYMBOL_GPL vmlinux 0x27c1e63f usb_amd_find_chipset_info +EXPORT_SYMBOL_GPL vmlinux 0x27cc318e save_stack_trace_tsk +EXPORT_SYMBOL_GPL vmlinux 0x27f4f029 ftrace_set_global_filter +EXPORT_SYMBOL_GPL vmlinux 0x27fa66e1 nr_free_buffer_pages +EXPORT_SYMBOL_GPL vmlinux 0x28007eed devm_extcon_dev_free +EXPORT_SYMBOL_GPL vmlinux 0x280b4768 dmi_kobj +EXPORT_SYMBOL_GPL vmlinux 0x280d3fe5 ata_std_bios_param +EXPORT_SYMBOL_GPL vmlinux 0x282cdabc usb_led_activity +EXPORT_SYMBOL_GPL vmlinux 0x283534f2 devm_phy_optional_get +EXPORT_SYMBOL_GPL vmlinux 0x2849ff79 regulator_register +EXPORT_SYMBOL_GPL vmlinux 0x2855b4d8 pci_hp_create_module_link +EXPORT_SYMBOL_GPL vmlinux 0x286c9e86 irq_find_mapping +EXPORT_SYMBOL_GPL vmlinux 0x2872e551 __mmu_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x2883b0ea devres_destroy +EXPORT_SYMBOL_GPL vmlinux 0x28866c14 fwnode_get_named_gpiod +EXPORT_SYMBOL_GPL vmlinux 0x2888f018 crypto_aes_set_key +EXPORT_SYMBOL_GPL vmlinux 0x28b4cfe4 subsys_interface_register +EXPORT_SYMBOL_GPL vmlinux 0x28d364df spi_unregister_master +EXPORT_SYMBOL_GPL vmlinux 0x28d52fd4 i2c_unlock_adapter +EXPORT_SYMBOL_GPL vmlinux 0x28dd3188 kick_process +EXPORT_SYMBOL_GPL vmlinux 0x28e64c64 xen_has_pv_and_legacy_disk_devices +EXPORT_SYMBOL_GPL vmlinux 0x28e7cc4b __pm_stay_awake +EXPORT_SYMBOL_GPL vmlinux 0x2900fd3a cpuidle_unregister +EXPORT_SYMBOL_GPL vmlinux 0x2912e639 nf_queue_entry_get_refs +EXPORT_SYMBOL_GPL vmlinux 0x2919ea53 pingv6_prot +EXPORT_SYMBOL_GPL vmlinux 0x292adcd8 sdio_writew +EXPORT_SYMBOL_GPL vmlinux 0x293f073e vrtc_cmos_write +EXPORT_SYMBOL_GPL vmlinux 0x2952ff12 wm5102_spi_regmap +EXPORT_SYMBOL_GPL vmlinux 0x29638cb5 pci_create_root_bus +EXPORT_SYMBOL_GPL vmlinux 0x298018e3 irq_set_chained_handler_and_data +EXPORT_SYMBOL_GPL vmlinux 0x29c07eb0 dma_buf_fd +EXPORT_SYMBOL_GPL vmlinux 0x2a0907b9 simple_attr_open +EXPORT_SYMBOL_GPL vmlinux 0x2a112024 spi_master_resume +EXPORT_SYMBOL_GPL vmlinux 0x2a29a47c br_fdb_test_addr_hook +EXPORT_SYMBOL_GPL vmlinux 0x2a453004 crypto_alg_sem +EXPORT_SYMBOL_GPL vmlinux 0x2a5f05ff device_property_read_u64_array +EXPORT_SYMBOL_GPL vmlinux 0x2a678a13 __suspend_report_result +EXPORT_SYMBOL_GPL vmlinux 0x2a842af9 rio_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0x2a9676a6 inet_twsk_put +EXPORT_SYMBOL_GPL vmlinux 0x2aa67f01 ata_msleep +EXPORT_SYMBOL_GPL vmlinux 0x2af63321 acpi_dev_resource_address_space +EXPORT_SYMBOL_GPL vmlinux 0x2b013eeb ata_sff_tf_read +EXPORT_SYMBOL_GPL vmlinux 0x2b0960fb crypto_rng_reset +EXPORT_SYMBOL_GPL vmlinux 0x2b67f096 speedstep_get_frequency +EXPORT_SYMBOL_GPL vmlinux 0x2b952517 clk_has_parent +EXPORT_SYMBOL_GPL vmlinux 0x2ba6630e led_trigger_blink_oneshot +EXPORT_SYMBOL_GPL vmlinux 0x2bb558b8 ata_sas_slave_configure +EXPORT_SYMBOL_GPL vmlinux 0x2bb67339 dev_pm_qos_add_request +EXPORT_SYMBOL_GPL vmlinux 0x2bc6c130 dev_attr_unload_heads +EXPORT_SYMBOL_GPL vmlinux 0x2bd39238 set_foreign_p2m_mapping +EXPORT_SYMBOL_GPL vmlinux 0x2bd4d277 pci_ignore_hotplug +EXPORT_SYMBOL_GPL vmlinux 0x2be63b98 rt_mutex_lock_interruptible +EXPORT_SYMBOL_GPL vmlinux 0x2bfa985e nd_cmd_dimm_desc +EXPORT_SYMBOL_GPL vmlinux 0x2c016f1c crypto_shash_setkey +EXPORT_SYMBOL_GPL vmlinux 0x2c133868 bit_wait_io_timeout +EXPORT_SYMBOL_GPL vmlinux 0x2c208607 power_supply_is_system_supplied +EXPORT_SYMBOL_GPL vmlinux 0x2c3054f9 net_inc_ingress_queue +EXPORT_SYMBOL_GPL vmlinux 0x2c3a1a02 usb_register_dev +EXPORT_SYMBOL_GPL vmlinux 0x2c630bd1 usb_show_dynids +EXPORT_SYMBOL_GPL vmlinux 0x2c68d37c dbs_check_cpu +EXPORT_SYMBOL_GPL vmlinux 0x2c6a0410 xen_set_domain_pte +EXPORT_SYMBOL_GPL vmlinux 0x2c7d9c64 xen_store_interface +EXPORT_SYMBOL_GPL vmlinux 0x2c7db649 irq_dispose_mapping +EXPORT_SYMBOL_GPL vmlinux 0x2ca60b8c skb_tstamp_tx +EXPORT_SYMBOL_GPL vmlinux 0x2ca83ccf mddev_congested +EXPORT_SYMBOL_GPL vmlinux 0x2cb45e82 mddev_suspend +EXPORT_SYMBOL_GPL vmlinux 0x2cbad037 apply_to_page_range +EXPORT_SYMBOL_GPL vmlinux 0x2cc3426b regmap_field_update_bits +EXPORT_SYMBOL_GPL vmlinux 0x2cc35ab9 iptunnel_handle_offloads +EXPORT_SYMBOL_GPL vmlinux 0x2cd38b3b alarm_try_to_cancel +EXPORT_SYMBOL_GPL vmlinux 0x2ce98559 kcrypto_wq +EXPORT_SYMBOL_GPL vmlinux 0x2cea32ee unregister_oldmem_pfn_is_ram +EXPORT_SYMBOL_GPL vmlinux 0x2d0ee581 vfs_test_lock +EXPORT_SYMBOL_GPL vmlinux 0x2d1b02d2 usermodehelper_read_lock_wait +EXPORT_SYMBOL_GPL vmlinux 0x2d1ce457 ata_bmdma_status +EXPORT_SYMBOL_GPL vmlinux 0x2d2319fb regcache_sync +EXPORT_SYMBOL_GPL vmlinux 0x2d41e6f5 __trace_puts +EXPORT_SYMBOL_GPL vmlinux 0x2d44ec15 blk_add_driver_data +EXPORT_SYMBOL_GPL vmlinux 0x2d59c954 edac_handlers +EXPORT_SYMBOL_GPL vmlinux 0x2d8a8ff7 platform_driver_unregister +EXPORT_SYMBOL_GPL vmlinux 0x2d938be3 devfreq_event_remove_edev +EXPORT_SYMBOL_GPL vmlinux 0x2d9f2ce3 sched_clock_idle_wakeup_event +EXPORT_SYMBOL_GPL vmlinux 0x2dadeb7e ohci_hub_status_data +EXPORT_SYMBOL_GPL vmlinux 0x2dbe20fe xhci_resume +EXPORT_SYMBOL_GPL vmlinux 0x2de9cf57 kobject_create_and_add +EXPORT_SYMBOL_GPL vmlinux 0x2dedb0b0 each_symbol_section +EXPORT_SYMBOL_GPL vmlinux 0x2df109db mmu_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0x2e02ed56 wm8400_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x2e2360b1 ftrace_set_global_notrace +EXPORT_SYMBOL_GPL vmlinux 0x2e2f1740 ring_buffer_record_disable_cpu +EXPORT_SYMBOL_GPL vmlinux 0x2e33e19d power_supply_powers +EXPORT_SYMBOL_GPL vmlinux 0x2e5f4e57 usb_anchor_urb +EXPORT_SYMBOL_GPL vmlinux 0x2e6678de list_lru_walk_one +EXPORT_SYMBOL_GPL vmlinux 0x2e7e8b9a regulator_enable +EXPORT_SYMBOL_GPL vmlinux 0x2e842ada inet_twsk_schedule +EXPORT_SYMBOL_GPL vmlinux 0x2ea362c4 setup_irq +EXPORT_SYMBOL_GPL vmlinux 0x2ea98b60 xenbus_dev_cancel +EXPORT_SYMBOL_GPL vmlinux 0x2eb40597 led_trigger_unregister +EXPORT_SYMBOL_GPL vmlinux 0x2eb6fda8 rio_unmap_inb_region +EXPORT_SYMBOL_GPL vmlinux 0x2ebe3135 cpu_is_hotpluggable +EXPORT_SYMBOL_GPL vmlinux 0x2f00a720 __rtnl_link_register +EXPORT_SYMBOL_GPL vmlinux 0x2f0d9053 usb_otg_state_string +EXPORT_SYMBOL_GPL vmlinux 0x2f2d14c4 crypto_alloc_instance +EXPORT_SYMBOL_GPL vmlinux 0x2f4058e4 efivar_entry_set +EXPORT_SYMBOL_GPL vmlinux 0x2f4113a2 dcookie_register +EXPORT_SYMBOL_GPL vmlinux 0x2f457406 pm_generic_thaw +EXPORT_SYMBOL_GPL vmlinux 0x2f4832ee nf_ipv6_ops +EXPORT_SYMBOL_GPL vmlinux 0x2f64415f unregister_acpi_hed_notifier +EXPORT_SYMBOL_GPL vmlinux 0x2f90da7e trace_seq_putmem +EXPORT_SYMBOL_GPL vmlinux 0x2f987578 acpi_dev_get_property +EXPORT_SYMBOL_GPL vmlinux 0x2fcf8ef2 trace_event_buffer_reserve +EXPORT_SYMBOL_GPL vmlinux 0x2fd8cba9 freeze_wake +EXPORT_SYMBOL_GPL vmlinux 0x2ff17b07 usb_find_interface +EXPORT_SYMBOL_GPL vmlinux 0x30128207 ata_bmdma_start +EXPORT_SYMBOL_GPL vmlinux 0x30145beb pinctrl_select_state +EXPORT_SYMBOL_GPL vmlinux 0x30313b17 usb_get_urb +EXPORT_SYMBOL_GPL vmlinux 0x30370191 __netpoll_cleanup +EXPORT_SYMBOL_GPL vmlinux 0x30400c62 register_asymmetric_key_parser +EXPORT_SYMBOL_GPL vmlinux 0x304e7da9 virtqueue_enable_cb_prepare +EXPORT_SYMBOL_GPL vmlinux 0x30635782 cpu_has_xfeatures +EXPORT_SYMBOL_GPL vmlinux 0x3075d92d ata_cable_ignore +EXPORT_SYMBOL_GPL vmlinux 0x30a4f4ca bstr_printf +EXPORT_SYMBOL_GPL vmlinux 0x30ac1bc6 netlink_add_tap +EXPORT_SYMBOL_GPL vmlinux 0x30af36df yield_to +EXPORT_SYMBOL_GPL vmlinux 0x30b625fd gpiochip_add_pingroup_range +EXPORT_SYMBOL_GPL vmlinux 0x30ceade4 dm_internal_resume +EXPORT_SYMBOL_GPL vmlinux 0x30d1e5a4 shmem_file_setup +EXPORT_SYMBOL_GPL vmlinux 0x3109b751 cpu_clock +EXPORT_SYMBOL_GPL vmlinux 0x31128b8e hv_remove_kexec_handler +EXPORT_SYMBOL_GPL vmlinux 0x31266931 con_debug_leave +EXPORT_SYMBOL_GPL vmlinux 0x3144e93d pci_hp_change_slot_info +EXPORT_SYMBOL_GPL vmlinux 0x3158bf88 rtc_irq_set_freq +EXPORT_SYMBOL_GPL vmlinux 0x316a8c5c mmc_switch +EXPORT_SYMBOL_GPL vmlinux 0x316cee70 subsys_dev_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x317c0eab crypto_init_shash_spawn +EXPORT_SYMBOL_GPL vmlinux 0x31972706 driver_remove_file +EXPORT_SYMBOL_GPL vmlinux 0x31b472c0 crypto_unregister_aeads +EXPORT_SYMBOL_GPL vmlinux 0x31c0c2d1 dm_put +EXPORT_SYMBOL_GPL vmlinux 0x31c7970f pciserial_suspend_ports +EXPORT_SYMBOL_GPL vmlinux 0x31e02263 unregister_ftrace_function +EXPORT_SYMBOL_GPL vmlinux 0x31e99e27 thermal_notify_framework +EXPORT_SYMBOL_GPL vmlinux 0x31f9d55d tpm_do_selftest +EXPORT_SYMBOL_GPL vmlinux 0x3201a064 iommu_domain_alloc +EXPORT_SYMBOL_GPL vmlinux 0x320c5a7e spi_new_device +EXPORT_SYMBOL_GPL vmlinux 0x321a7fee acpi_find_child_device +EXPORT_SYMBOL_GPL vmlinux 0x322f3511 __tracepoint_detach_device_from_domain +EXPORT_SYMBOL_GPL vmlinux 0x32557712 init_srcu_struct +EXPORT_SYMBOL_GPL vmlinux 0x325e677c gnttab_grant_foreign_transfer_ref +EXPORT_SYMBOL_GPL vmlinux 0x326a1141 file_ra_state_init +EXPORT_SYMBOL_GPL vmlinux 0x32787295 smpboot_update_cpumask_percpu_thread +EXPORT_SYMBOL_GPL vmlinux 0x327e3de1 get_dcookie +EXPORT_SYMBOL_GPL vmlinux 0x3281b9ff perf_pmu_register +EXPORT_SYMBOL_GPL vmlinux 0x3287afd9 blk_queue_rq_timeout +EXPORT_SYMBOL_GPL vmlinux 0x328995b5 tracing_generic_entry_update +EXPORT_SYMBOL_GPL vmlinux 0x32924a4d scatterwalk_copychunks +EXPORT_SYMBOL_GPL vmlinux 0x32b2e626 devm_regmap_init_mmio_clk +EXPORT_SYMBOL_GPL vmlinux 0x32bc0fcf preempt_notifier_dec +EXPORT_SYMBOL_GPL vmlinux 0x32c3cb4e class_compat_register +EXPORT_SYMBOL_GPL vmlinux 0x32ddd5b6 call_rcu +EXPORT_SYMBOL_GPL vmlinux 0x32fab413 rtc_irq_unregister +EXPORT_SYMBOL_GPL vmlinux 0x330f94b0 crypto_mod_get +EXPORT_SYMBOL_GPL vmlinux 0x333228ec intel_msic_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x33594b47 __sock_recv_wifi_status +EXPORT_SYMBOL_GPL vmlinux 0x335c570f enable_percpu_irq +EXPORT_SYMBOL_GPL vmlinux 0x335fc03b clk_gpio_gate_ops +EXPORT_SYMBOL_GPL vmlinux 0x336154ca rcutorture_record_test_transition +EXPORT_SYMBOL_GPL vmlinux 0x3362b03c xen_p2m_size +EXPORT_SYMBOL_GPL vmlinux 0x33655159 xen_pcpu_hotplug_sync +EXPORT_SYMBOL_GPL vmlinux 0x336e6e40 thermal_cooling_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x337a1f4c xenbus_unmap_ring +EXPORT_SYMBOL_GPL vmlinux 0x337a5ffa set_pages_array_wt +EXPORT_SYMBOL_GPL vmlinux 0x337a76e4 watchdog_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0x33b96e5d apei_exec_write_register +EXPORT_SYMBOL_GPL vmlinux 0x3405c827 cpci_hp_unregister_controller +EXPORT_SYMBOL_GPL vmlinux 0x341ea2cc ata_host_register +EXPORT_SYMBOL_GPL vmlinux 0x34331d5e nd_fletcher64 +EXPORT_SYMBOL_GPL vmlinux 0x344d09dc wm8350_block_read +EXPORT_SYMBOL_GPL vmlinux 0x34553c71 regulator_list_hardware_vsel +EXPORT_SYMBOL_GPL vmlinux 0x347682ce snmp_fold_field64 +EXPORT_SYMBOL_GPL vmlinux 0x347fd4b3 eventfd_ctx_get +EXPORT_SYMBOL_GPL vmlinux 0x3480ff44 pinctrl_force_sleep +EXPORT_SYMBOL_GPL vmlinux 0x348210cd usb_find_alt_setting +EXPORT_SYMBOL_GPL vmlinux 0x34ac50a4 visitorl +EXPORT_SYMBOL_GPL vmlinux 0x35047b27 nf_unregister_afinfo +EXPORT_SYMBOL_GPL vmlinux 0x3515d34e nd_region_provider_data +EXPORT_SYMBOL_GPL vmlinux 0x35176301 rcu_batches_completed_sched +EXPORT_SYMBOL_GPL vmlinux 0x352650ee gnttab_batch_map +EXPORT_SYMBOL_GPL vmlinux 0x35495625 regulator_set_bypass_regmap +EXPORT_SYMBOL_GPL vmlinux 0x355e5106 pwm_can_sleep +EXPORT_SYMBOL_GPL vmlinux 0x3581f995 enable_kprobe +EXPORT_SYMBOL_GPL vmlinux 0x358c41ea regulator_list_voltage_table +EXPORT_SYMBOL_GPL vmlinux 0x358f4edb crypto_unregister_aead +EXPORT_SYMBOL_GPL vmlinux 0x358ff60f twl_get_hfclk_rate +EXPORT_SYMBOL_GPL vmlinux 0x35910f72 tcp_orphan_count +EXPORT_SYMBOL_GPL vmlinux 0x35dcd1f7 trace_seq_vprintf +EXPORT_SYMBOL_GPL vmlinux 0x35e7f3ab dev_pm_qos_add_ancestor_request +EXPORT_SYMBOL_GPL vmlinux 0x35f10f43 nfq_ct_nat_hook +EXPORT_SYMBOL_GPL vmlinux 0x36075bb5 iommu_group_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x361e2bcc save_stack_trace +EXPORT_SYMBOL_GPL vmlinux 0x362625f1 pci_cleanup_aer_uncorrect_error_status +EXPORT_SYMBOL_GPL vmlinux 0x3671ec05 bus_rescan_devices +EXPORT_SYMBOL_GPL vmlinux 0x36909835 regmap_add_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0x369fcd70 tracing_snapshot +EXPORT_SYMBOL_GPL vmlinux 0x36a72ae9 regulator_get +EXPORT_SYMBOL_GPL vmlinux 0x36ab712d cm_notify_event +EXPORT_SYMBOL_GPL vmlinux 0x36ad3efe param_ops_bool_enable_only +EXPORT_SYMBOL_GPL vmlinux 0x36b5497e intel_iommu_enabled +EXPORT_SYMBOL_GPL vmlinux 0x36ba2551 intel_scu_devices_destroy +EXPORT_SYMBOL_GPL vmlinux 0x36bda7b0 cpuidle_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0x36dab97f trace_clock_jiffies +EXPORT_SYMBOL_GPL vmlinux 0x36e78a23 sdhci_pci_o2_fujin2_pci_init +EXPORT_SYMBOL_GPL vmlinux 0x36f40313 blkg_conf_prep +EXPORT_SYMBOL_GPL vmlinux 0x36f5db7d sdio_writeb_readb +EXPORT_SYMBOL_GPL vmlinux 0x373dba90 pci_stop_root_bus +EXPORT_SYMBOL_GPL vmlinux 0x373e1c7c dax_pfn_mkwrite +EXPORT_SYMBOL_GPL vmlinux 0x3753d6a6 raw_seq_next +EXPORT_SYMBOL_GPL vmlinux 0x3770af52 md_stop_writes +EXPORT_SYMBOL_GPL vmlinux 0x37934931 sysfs_remove_file_from_group +EXPORT_SYMBOL_GPL vmlinux 0x37b0988f ata_sff_dev_select +EXPORT_SYMBOL_GPL vmlinux 0x37d00041 xenbus_unmap_ring_vfree +EXPORT_SYMBOL_GPL vmlinux 0x37d2612b hwrng_register +EXPORT_SYMBOL_GPL vmlinux 0x37de662b devm_extcon_dev_unregister +EXPORT_SYMBOL_GPL vmlinux 0x37ebde0f uprobe_register +EXPORT_SYMBOL_GPL vmlinux 0x37fd6ee8 irq_set_default_host +EXPORT_SYMBOL_GPL vmlinux 0x38349348 xhci_dbg_trace +EXPORT_SYMBOL_GPL vmlinux 0x384222ef unix_peer_get +EXPORT_SYMBOL_GPL vmlinux 0x3860f5d1 inet_twsk_alloc +EXPORT_SYMBOL_GPL vmlinux 0x386c91f7 kthread_park +EXPORT_SYMBOL_GPL vmlinux 0x387034e6 tty_wakeup +EXPORT_SYMBOL_GPL vmlinux 0x38722f80 kernel_fpu_end +EXPORT_SYMBOL_GPL vmlinux 0x387e90e4 pinctrl_pm_select_idle_state +EXPORT_SYMBOL_GPL vmlinux 0x38a9c2c7 input_ff_effect_from_user +EXPORT_SYMBOL_GPL vmlinux 0x38aa0b25 transport_setup_device +EXPORT_SYMBOL_GPL vmlinux 0x38d182f9 efivar_entry_delete +EXPORT_SYMBOL_GPL vmlinux 0x38dbc8c4 ata_port_schedule_eh +EXPORT_SYMBOL_GPL vmlinux 0x38e5bc5a clk_set_rate_range +EXPORT_SYMBOL_GPL vmlinux 0x38fe4f06 od_register_powersave_bias_handler +EXPORT_SYMBOL_GPL vmlinux 0x3902fe03 uprobe_unregister +EXPORT_SYMBOL_GPL vmlinux 0x390337ea sysfs_unmerge_group +EXPORT_SYMBOL_GPL vmlinux 0x3904444d syscon_regmap_lookup_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0x39096b0e rio_unregister_scan +EXPORT_SYMBOL_GPL vmlinux 0x390c30f4 dio_end_io +EXPORT_SYMBOL_GPL vmlinux 0x392b5d47 gpiod_set_debounce +EXPORT_SYMBOL_GPL vmlinux 0x39331c67 ata_std_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x397e31d4 vfs_getxattr +EXPORT_SYMBOL_GPL vmlinux 0x39c7995b dma_release_channel +EXPORT_SYMBOL_GPL vmlinux 0x39ca07cc maxim_charger_calc_reg_current +EXPORT_SYMBOL_GPL vmlinux 0x39e61495 nf_logger_request_module +EXPORT_SYMBOL_GPL vmlinux 0x3a013e0b iommu_unmap +EXPORT_SYMBOL_GPL vmlinux 0x3a26ed11 sched_clock +EXPORT_SYMBOL_GPL vmlinux 0x3a2af407 tty_buffer_unlock_exclusive +EXPORT_SYMBOL_GPL vmlinux 0x3a37ce81 hrtimer_try_to_cancel +EXPORT_SYMBOL_GPL vmlinux 0x3a4f6a32 ata_sff_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x3a536bd7 ring_buffer_read_finish +EXPORT_SYMBOL_GPL vmlinux 0x3a559a08 bus_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x3a7d80f9 xen_max_p2m_pfn +EXPORT_SYMBOL_GPL vmlinux 0x3a82ae41 devfreq_event_get_edev_count +EXPORT_SYMBOL_GPL vmlinux 0x3a90368a usb_hcd_pci_probe +EXPORT_SYMBOL_GPL vmlinux 0x3a927111 hrtimer_cancel +EXPORT_SYMBOL_GPL vmlinux 0x3a9be019 asymmetric_key_id_partial +EXPORT_SYMBOL_GPL vmlinux 0x3aaa6b5c usb_hcd_resume_root_hub +EXPORT_SYMBOL_GPL vmlinux 0x3aae12c8 rdev_get_dev +EXPORT_SYMBOL_GPL vmlinux 0x3acdf325 twl4030_audio_enable_resource +EXPORT_SYMBOL_GPL vmlinux 0x3adffc08 regmap_multi_reg_write_bypassed +EXPORT_SYMBOL_GPL vmlinux 0x3af62c64 gpiod_get_raw_value +EXPORT_SYMBOL_GPL vmlinux 0x3b21b5fc devm_mdiobus_alloc_size +EXPORT_SYMBOL_GPL vmlinux 0x3b320df9 pm_generic_restore_noirq +EXPORT_SYMBOL_GPL vmlinux 0x3b3b9584 unregister_pernet_device +EXPORT_SYMBOL_GPL vmlinux 0x3b40e47e virtqueue_detach_unused_buf +EXPORT_SYMBOL_GPL vmlinux 0x3b6a7ce4 iptunnel_xmit +EXPORT_SYMBOL_GPL vmlinux 0x3b7145bb apei_exec_read_register_value +EXPORT_SYMBOL_GPL vmlinux 0x3bd04952 power_supply_external_power_changed +EXPORT_SYMBOL_GPL vmlinux 0x3be412cb spi_bus_lock +EXPORT_SYMBOL_GPL vmlinux 0x3be586c8 devm_of_phy_get +EXPORT_SYMBOL_GPL vmlinux 0x3be835fc perf_event_create_kernel_counter +EXPORT_SYMBOL_GPL vmlinux 0x3c11636c class_interface_unregister +EXPORT_SYMBOL_GPL vmlinux 0x3c318375 gpiod_get_direction +EXPORT_SYMBOL_GPL vmlinux 0x3c3604de alarmtimer_get_rtcdev +EXPORT_SYMBOL_GPL vmlinux 0x3c3d2116 sysfs_chmod_file +EXPORT_SYMBOL_GPL vmlinux 0x3c428104 rt_mutex_unlock +EXPORT_SYMBOL_GPL vmlinux 0x3c5110f4 pci_hp_add_bridge +EXPORT_SYMBOL_GPL vmlinux 0x3c9390db pci_vpd_find_tag +EXPORT_SYMBOL_GPL vmlinux 0x3c93ea25 trace_seq_printf +EXPORT_SYMBOL_GPL vmlinux 0x3ca3bb1d ata_bmdma_post_internal_cmd +EXPORT_SYMBOL_GPL vmlinux 0x3ca6dfa1 cn_add_callback +EXPORT_SYMBOL_GPL vmlinux 0x3cad7863 tracepoint_probe_register +EXPORT_SYMBOL_GPL vmlinux 0x3cbfaf98 inet_csk_get_port +EXPORT_SYMBOL_GPL vmlinux 0x3cd06035 add_input_randomness +EXPORT_SYMBOL_GPL vmlinux 0x3ceda223 blk_trace_setup +EXPORT_SYMBOL_GPL vmlinux 0x3d057807 user_update +EXPORT_SYMBOL_GPL vmlinux 0x3d1370ed dev_pm_qos_update_request +EXPORT_SYMBOL_GPL vmlinux 0x3d28e59e i2c_add_numbered_adapter +EXPORT_SYMBOL_GPL vmlinux 0x3d2cec36 ata_sff_qc_issue +EXPORT_SYMBOL_GPL vmlinux 0x3d388324 dpm_resume_end +EXPORT_SYMBOL_GPL vmlinux 0x3d5b09db tty_buffer_set_limit +EXPORT_SYMBOL_GPL vmlinux 0x3d5eb360 devm_regmap_init_spi +EXPORT_SYMBOL_GPL vmlinux 0x3d6d0d58 wm5110_revd_irq +EXPORT_SYMBOL_GPL vmlinux 0x3d7815f3 ata_platform_remove_one +EXPORT_SYMBOL_GPL vmlinux 0x3d7ea99a gnttab_grant_foreign_transfer +EXPORT_SYMBOL_GPL vmlinux 0x3dc916b6 crypto_fl_tab +EXPORT_SYMBOL_GPL vmlinux 0x3dd4d3a7 bprintf +EXPORT_SYMBOL_GPL vmlinux 0x3dd8181e __clk_get_parent +EXPORT_SYMBOL_GPL vmlinux 0x3ddd1086 __dma_request_channel +EXPORT_SYMBOL_GPL vmlinux 0x3de9cae1 crypto_remove_final +EXPORT_SYMBOL_GPL vmlinux 0x3deda8dc class_dev_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0x3e040fc9 find_get_pid +EXPORT_SYMBOL_GPL vmlinux 0x3e134263 pci_disable_rom +EXPORT_SYMBOL_GPL vmlinux 0x3e37b656 bpf_prog_put +EXPORT_SYMBOL_GPL vmlinux 0x3e54b244 btree_lookup +EXPORT_SYMBOL_GPL vmlinux 0x3e5e1937 rcu_batches_started_sched +EXPORT_SYMBOL_GPL vmlinux 0x3e7080cb mpi_read_from_buffer +EXPORT_SYMBOL_GPL vmlinux 0x3e757637 cpu_bit_bitmap +EXPORT_SYMBOL_GPL vmlinux 0x3e7d6764 devm_regmap_init_i2c +EXPORT_SYMBOL_GPL vmlinux 0x3e971fce __pm_wakeup_event +EXPORT_SYMBOL_GPL vmlinux 0x3e982833 acpi_dev_get_resources +EXPORT_SYMBOL_GPL vmlinux 0x3ea27469 platform_get_irq_byname +EXPORT_SYMBOL_GPL vmlinux 0x3ea5196d apei_osc_setup +EXPORT_SYMBOL_GPL vmlinux 0x3ea5f56f usb_choose_configuration +EXPORT_SYMBOL_GPL vmlinux 0x3eca5a3f thermal_zone_bind_cooling_device +EXPORT_SYMBOL_GPL vmlinux 0x3ede2364 class_dev_iter_next +EXPORT_SYMBOL_GPL vmlinux 0x3efb35c9 get_online_cpus +EXPORT_SYMBOL_GPL vmlinux 0x3f229c4c oops_begin +EXPORT_SYMBOL_GPL vmlinux 0x3f328714 posix_acl_create +EXPORT_SYMBOL_GPL vmlinux 0x3f39c27f gpiod_count +EXPORT_SYMBOL_GPL vmlinux 0x3f73ae72 ipv4_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x3f84d4c9 gnttab_release_grant_reference +EXPORT_SYMBOL_GPL vmlinux 0x3fa5af9c nd_cmd_bus_desc +EXPORT_SYMBOL_GPL vmlinux 0x3fab9171 mmu_notifier_unregister_no_release +EXPORT_SYMBOL_GPL vmlinux 0x3fc41569 __xenbus_register_backend +EXPORT_SYMBOL_GPL vmlinux 0x3fca492e sysfs_remove_file_ns +EXPORT_SYMBOL_GPL vmlinux 0x3fce4930 pci_enable_sriov +EXPORT_SYMBOL_GPL vmlinux 0x3fda9c65 devm_devfreq_event_remove_edev +EXPORT_SYMBOL_GPL vmlinux 0x3fe721e2 devm_kmalloc +EXPORT_SYMBOL_GPL vmlinux 0x3febaa6d ndo_dflt_bridge_getlink +EXPORT_SYMBOL_GPL vmlinux 0x3ff3a2b6 usb_hcd_pci_remove +EXPORT_SYMBOL_GPL vmlinux 0x4002b936 regulator_get_voltage_sel_regmap +EXPORT_SYMBOL_GPL vmlinux 0x400a024b acpi_scan_lock_release +EXPORT_SYMBOL_GPL vmlinux 0x400e05dd anon_transport_class_unregister +EXPORT_SYMBOL_GPL vmlinux 0x403f9529 gpio_request_one +EXPORT_SYMBOL_GPL vmlinux 0x4045c494 filter_match_preds +EXPORT_SYMBOL_GPL vmlinux 0x4053ec40 pci_user_write_config_byte +EXPORT_SYMBOL_GPL vmlinux 0x40596671 kobject_uevent +EXPORT_SYMBOL_GPL vmlinux 0x4065d168 pm_print_active_wakeup_sources +EXPORT_SYMBOL_GPL vmlinux 0x406c4cb1 hrtimer_resolution +EXPORT_SYMBOL_GPL vmlinux 0x40a9fc4b tps65912_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x40ab4d2f __trace_note_message +EXPORT_SYMBOL_GPL vmlinux 0x40af0dec ata_xfer_mode2mask +EXPORT_SYMBOL_GPL vmlinux 0x40c968cf nvdimm_bus_unregister +EXPORT_SYMBOL_GPL vmlinux 0x40d46b21 crypto_ft_tab +EXPORT_SYMBOL_GPL vmlinux 0x40f0683e reset_control_put +EXPORT_SYMBOL_GPL vmlinux 0x41058dab rio_mport_get_feature +EXPORT_SYMBOL_GPL vmlinux 0x411e395c acpi_subsys_runtime_resume +EXPORT_SYMBOL_GPL vmlinux 0x41547138 task_user_regset_view +EXPORT_SYMBOL_GPL vmlinux 0x4166852d exportfs_encode_fh +EXPORT_SYMBOL_GPL vmlinux 0x41814cb8 dirty_writeback_interval +EXPORT_SYMBOL_GPL vmlinux 0x41b364dd rtnl_af_unregister +EXPORT_SYMBOL_GPL vmlinux 0x41c2c527 regulator_get_current_limit +EXPORT_SYMBOL_GPL vmlinux 0x41cb39c7 regulator_list_voltage_linear_range +EXPORT_SYMBOL_GPL vmlinux 0x41ea501c mddev_unlock +EXPORT_SYMBOL_GPL vmlinux 0x41ec82bf udp4_hwcsum +EXPORT_SYMBOL_GPL vmlinux 0x41f46ba9 power_supply_get_property +EXPORT_SYMBOL_GPL vmlinux 0x41f5e590 skb_complete_wifi_ack +EXPORT_SYMBOL_GPL vmlinux 0x4205ad24 cancel_work_sync +EXPORT_SYMBOL_GPL vmlinux 0x4213a51a efivar_entry_set_safe +EXPORT_SYMBOL_GPL vmlinux 0x42201a0f xenbus_probe_devices +EXPORT_SYMBOL_GPL vmlinux 0x422085fd devm_regulator_get_exclusive +EXPORT_SYMBOL_GPL vmlinux 0x422ff3fa wm8400_block_read +EXPORT_SYMBOL_GPL vmlinux 0x4240ae80 ohci_init_driver +EXPORT_SYMBOL_GPL vmlinux 0x42425328 gen_pool_size +EXPORT_SYMBOL_GPL vmlinux 0x424acc6d scatterwalk_done +EXPORT_SYMBOL_GPL vmlinux 0x424e9547 pwm_get_chip_data +EXPORT_SYMBOL_GPL vmlinux 0x4250c378 fixed_phy_register +EXPORT_SYMBOL_GPL vmlinux 0x42528477 exportfs_encode_inode_fh +EXPORT_SYMBOL_GPL vmlinux 0x425679ad pinctrl_utils_reserve_map +EXPORT_SYMBOL_GPL vmlinux 0x426ff60c dm_path_uevent +EXPORT_SYMBOL_GPL vmlinux 0x42742905 ping_proc_unregister +EXPORT_SYMBOL_GPL vmlinux 0x42825ce2 rcu_scheduler_active +EXPORT_SYMBOL_GPL vmlinux 0x429748ae gen_pool_get +EXPORT_SYMBOL_GPL vmlinux 0x42a039e4 irq_domain_simple_ops +EXPORT_SYMBOL_GPL vmlinux 0x42a2df7e sata_sff_hardreset +EXPORT_SYMBOL_GPL vmlinux 0x42acfa2e gpiochip_irqchip_add +EXPORT_SYMBOL_GPL vmlinux 0x42c0841b register_mce_write_callback +EXPORT_SYMBOL_GPL vmlinux 0x42c92d2c __blk_end_request_err +EXPORT_SYMBOL_GPL vmlinux 0x42c989ff iomap_atomic_prot_pfn +EXPORT_SYMBOL_GPL vmlinux 0x42e6554d sock_diag_save_cookie +EXPORT_SYMBOL_GPL vmlinux 0x42e84f6d rdev_set_badblocks +EXPORT_SYMBOL_GPL vmlinux 0x42fd4057 spi_write_then_read +EXPORT_SYMBOL_GPL vmlinux 0x431a7e64 security_kernel_fw_from_file +EXPORT_SYMBOL_GPL vmlinux 0x431bf93c wm5110_irq +EXPORT_SYMBOL_GPL vmlinux 0x435c4532 disk_get_part +EXPORT_SYMBOL_GPL vmlinux 0x43619e1a scatterwalk_ffwd +EXPORT_SYMBOL_GPL vmlinux 0x436f4b41 of_css +EXPORT_SYMBOL_GPL vmlinux 0x438d13e7 driver_create_file +EXPORT_SYMBOL_GPL vmlinux 0x4395953e usb_kill_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x43a033fd uart_handle_dcd_change +EXPORT_SYMBOL_GPL vmlinux 0x43a53735 __alloc_workqueue_key +EXPORT_SYMBOL_GPL vmlinux 0x43ab01d3 blkg_conf_finish +EXPORT_SYMBOL_GPL vmlinux 0x43b0b6cc crypto_alg_extsize +EXPORT_SYMBOL_GPL vmlinux 0x43b31af7 __blkg_prfill_rwstat +EXPORT_SYMBOL_GPL vmlinux 0x43f56e82 ata_xfer_mode2shift +EXPORT_SYMBOL_GPL vmlinux 0x43f81957 clk_round_rate +EXPORT_SYMBOL_GPL vmlinux 0x43fd2d73 pm_generic_poweroff +EXPORT_SYMBOL_GPL vmlinux 0x44005716 led_classdev_unregister +EXPORT_SYMBOL_GPL vmlinux 0x441fa356 irq_ts_save +EXPORT_SYMBOL_GPL vmlinux 0x443939d4 wm8350_device_exit +EXPORT_SYMBOL_GPL vmlinux 0x4481e615 wm8350_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x4484a5a4 wait_for_device_probe +EXPORT_SYMBOL_GPL vmlinux 0x449fb238 ata_sff_lost_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x44a31f8f acpi_device_uevent_modalias +EXPORT_SYMBOL_GPL vmlinux 0x44ac21ed regcache_mark_dirty +EXPORT_SYMBOL_GPL vmlinux 0x44b45931 regmap_reinit_cache +EXPORT_SYMBOL_GPL vmlinux 0x44c290f6 crypto_register_shash +EXPORT_SYMBOL_GPL vmlinux 0x44ca3e9d devm_hwrng_unregister +EXPORT_SYMBOL_GPL vmlinux 0x4512b086 intel_scu_devices_create +EXPORT_SYMBOL_GPL vmlinux 0x451def9f attribute_container_unregister +EXPORT_SYMBOL_GPL vmlinux 0x4541fe0d mtrr_state +EXPORT_SYMBOL_GPL vmlinux 0x45676b74 rhashtable_insert_slow +EXPORT_SYMBOL_GPL vmlinux 0x457594fa crypto_alg_list +EXPORT_SYMBOL_GPL vmlinux 0x457d578c led_classdev_suspend +EXPORT_SYMBOL_GPL vmlinux 0x45851272 acpi_gpiochip_request_interrupts +EXPORT_SYMBOL_GPL vmlinux 0x4587bad7 event_triggers_post_call +EXPORT_SYMBOL_GPL vmlinux 0x45b7d6a0 btree_destroy +EXPORT_SYMBOL_GPL vmlinux 0x45bf1ff3 crypto_inc +EXPORT_SYMBOL_GPL vmlinux 0x45cf966e virtqueue_get_used +EXPORT_SYMBOL_GPL vmlinux 0x45d14bdf hypercall_page +EXPORT_SYMBOL_GPL vmlinux 0x45e689ba usb_deregister_device_driver +EXPORT_SYMBOL_GPL vmlinux 0x45f74fa4 i2c_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0x46013233 net_dec_ingress_queue +EXPORT_SYMBOL_GPL vmlinux 0x460f31aa rodata_test_data +EXPORT_SYMBOL_GPL vmlinux 0x460f7531 wait_rcu_gp +EXPORT_SYMBOL_GPL vmlinux 0x4617ad98 acpi_os_map_iomem +EXPORT_SYMBOL_GPL vmlinux 0x462e02c8 regcache_drop_region +EXPORT_SYMBOL_GPL vmlinux 0x463d24ea ipv6_fixup_options +EXPORT_SYMBOL_GPL vmlinux 0x463e23c2 relay_subbufs_consumed +EXPORT_SYMBOL_GPL vmlinux 0x463fc36e register_virtio_driver +EXPORT_SYMBOL_GPL vmlinux 0x4645be9c platform_device_add_resources +EXPORT_SYMBOL_GPL vmlinux 0x46460f1a phy_create_lookup +EXPORT_SYMBOL_GPL vmlinux 0x4653ca42 ipv4_redirect +EXPORT_SYMBOL_GPL vmlinux 0x4672e88b __crypto_dequeue_request +EXPORT_SYMBOL_GPL vmlinux 0x4678157d pci_bus_sem +EXPORT_SYMBOL_GPL vmlinux 0x4688d7ec pvclock_gtod_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x469143c4 x509_free_certificate +EXPORT_SYMBOL_GPL vmlinux 0x46921ffa rio_mport_get_physefb +EXPORT_SYMBOL_GPL vmlinux 0x4695cbfe max8997_read_reg +EXPORT_SYMBOL_GPL vmlinux 0x46b1075a ip6_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x46c958e9 device_show_ulong +EXPORT_SYMBOL_GPL vmlinux 0x46e63189 xen_swiotlb_unmap_sg_attrs +EXPORT_SYMBOL_GPL vmlinux 0x471c4810 firmware_kobj +EXPORT_SYMBOL_GPL vmlinux 0x47229b5c gpio_request +EXPORT_SYMBOL_GPL vmlinux 0x473e1d3c rio_request_outb_mbox +EXPORT_SYMBOL_GPL vmlinux 0x4745cd93 regulator_sync_voltage +EXPORT_SYMBOL_GPL vmlinux 0x47538d70 __pm_relax +EXPORT_SYMBOL_GPL vmlinux 0x47574c7f hvc_remove +EXPORT_SYMBOL_GPL vmlinux 0x4759e61c posix_clock_register +EXPORT_SYMBOL_GPL vmlinux 0x4761f17c register_netevent_notifier +EXPORT_SYMBOL_GPL vmlinux 0x476d2fb8 crypto_ahash_finup +EXPORT_SYMBOL_GPL vmlinux 0x47884890 system_power_efficient_wq +EXPORT_SYMBOL_GPL vmlinux 0x47aad3b9 have_governor_per_policy +EXPORT_SYMBOL_GPL vmlinux 0x47b101fb page_cache_sync_readahead +EXPORT_SYMBOL_GPL vmlinux 0x47d0eea2 acpi_lpat_temp_to_raw +EXPORT_SYMBOL_GPL vmlinux 0x47dd30b9 pci_find_next_ext_capability +EXPORT_SYMBOL_GPL vmlinux 0x47de0dc7 clk_unregister_mux +EXPORT_SYMBOL_GPL vmlinux 0x47e6543c input_class +EXPORT_SYMBOL_GPL vmlinux 0x47ff0431 xenbus_dev_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x481d1b90 do_unbind_con_driver +EXPORT_SYMBOL_GPL vmlinux 0x4828e77b acpi_scan_lock_acquire +EXPORT_SYMBOL_GPL vmlinux 0x483086e8 trace_define_field +EXPORT_SYMBOL_GPL vmlinux 0x48501534 pcc_mbox_request_channel +EXPORT_SYMBOL_GPL vmlinux 0x4856d60e ata_sff_prereset +EXPORT_SYMBOL_GPL vmlinux 0x485f7348 cpufreq_table_validate_and_show +EXPORT_SYMBOL_GPL vmlinux 0x48682db9 perf_guest_get_msrs +EXPORT_SYMBOL_GPL vmlinux 0x4868c3b4 rcu_batches_started_bh +EXPORT_SYMBOL_GPL vmlinux 0x4873ae67 tty_encode_baud_rate +EXPORT_SYMBOL_GPL vmlinux 0x4879bb6a rio_get_device +EXPORT_SYMBOL_GPL vmlinux 0x487c5d33 nf_log_buf_add +EXPORT_SYMBOL_GPL vmlinux 0x48add2c0 shmem_get_seals +EXPORT_SYMBOL_GPL vmlinux 0x48bdfde8 modify_user_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x48d5612f relay_switch_subbuf +EXPORT_SYMBOL_GPL vmlinux 0x48df4527 gpiod_get_value +EXPORT_SYMBOL_GPL vmlinux 0x48dfb667 inet_ctl_sock_create +EXPORT_SYMBOL_GPL vmlinux 0x490a8df6 x86_platform +EXPORT_SYMBOL_GPL vmlinux 0x490e8867 aead_geniv_exit +EXPORT_SYMBOL_GPL vmlinux 0x493a073c tcp_ca_openreq_child +EXPORT_SYMBOL_GPL vmlinux 0x4952547a rio_request_inb_mbox +EXPORT_SYMBOL_GPL vmlinux 0x496155cd ipv6_recv_error +EXPORT_SYMBOL_GPL vmlinux 0x4974a82d rio_mport_class +EXPORT_SYMBOL_GPL vmlinux 0x4982a57f probe_kernel_write +EXPORT_SYMBOL_GPL vmlinux 0x498a42b1 led_trigger_rename_static +EXPORT_SYMBOL_GPL vmlinux 0x498cbcf6 class_unregister +EXPORT_SYMBOL_GPL vmlinux 0x498d293a trace_buffer_unlock_commit +EXPORT_SYMBOL_GPL vmlinux 0x499043d3 crypto_init_queue +EXPORT_SYMBOL_GPL vmlinux 0x49e112ca ip6_route_lookup +EXPORT_SYMBOL_GPL vmlinux 0x49e96999 cond_synchronize_rcu +EXPORT_SYMBOL_GPL vmlinux 0x4a061b20 usb_control_msg +EXPORT_SYMBOL_GPL vmlinux 0x4a3c3cf9 microcode_sanity_check +EXPORT_SYMBOL_GPL vmlinux 0x4a420d09 acpi_bus_detach_private_data +EXPORT_SYMBOL_GPL vmlinux 0x4a52333e __mmdrop +EXPORT_SYMBOL_GPL vmlinux 0x4a673c06 devres_release +EXPORT_SYMBOL_GPL vmlinux 0x4a6f4d03 irq_create_mapping +EXPORT_SYMBOL_GPL vmlinux 0x4a7e45ef crypto_unregister_ahash +EXPORT_SYMBOL_GPL vmlinux 0x4a88fbfe posix_acl_default_xattr_handler +EXPORT_SYMBOL_GPL vmlinux 0x4aa0605f phy_power_off +EXPORT_SYMBOL_GPL vmlinux 0x4aadeb9a ring_buffer_alloc_read_page +EXPORT_SYMBOL_GPL vmlinux 0x4ad80b89 regulator_is_supported_voltage +EXPORT_SYMBOL_GPL vmlinux 0x4ae468e6 split_page +EXPORT_SYMBOL_GPL vmlinux 0x4afb573b vrtc_cmos_read +EXPORT_SYMBOL_GPL vmlinux 0x4b100406 mbox_client_txdone +EXPORT_SYMBOL_GPL vmlinux 0x4b4d2bc9 fuse_sync_release +EXPORT_SYMBOL_GPL vmlinux 0x4b8526a0 pinctrl_find_gpio_range_from_pin +EXPORT_SYMBOL_GPL vmlinux 0x4bba7cbd devfreq_event_disable_edev +EXPORT_SYMBOL_GPL vmlinux 0x4c005731 hypervisor_kobj +EXPORT_SYMBOL_GPL vmlinux 0x4c2a472b __static_cpu_has_safe +EXPORT_SYMBOL_GPL vmlinux 0x4c3bea58 wm831x_reg_lock +EXPORT_SYMBOL_GPL vmlinux 0x4c602bf1 __blkg_release_rcu +EXPORT_SYMBOL_GPL vmlinux 0x4c65d322 devm_pinctrl_put +EXPORT_SYMBOL_GPL vmlinux 0x4c672001 ahash_register_instance +EXPORT_SYMBOL_GPL vmlinux 0x4c6db8e8 regmap_register_patch +EXPORT_SYMBOL_GPL vmlinux 0x4c759827 byte_rev_table +EXPORT_SYMBOL_GPL vmlinux 0x4cd58eda crypto_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x4cf9e1f8 scsi_ioctl_block_when_processing_errors +EXPORT_SYMBOL_GPL vmlinux 0x4d0015e2 cpu_hotplug_disable +EXPORT_SYMBOL_GPL vmlinux 0x4d17c59e register_kretprobes +EXPORT_SYMBOL_GPL vmlinux 0x4d1b19aa ata_scsi_queuecmd +EXPORT_SYMBOL_GPL vmlinux 0x4d35bfa8 __rio_local_read_config_32 +EXPORT_SYMBOL_GPL vmlinux 0x4d465159 register_virtio_device +EXPORT_SYMBOL_GPL vmlinux 0x4d56a9e0 blk_queue_flush +EXPORT_SYMBOL_GPL vmlinux 0x4d76ec1b dm_noflush_suspending +EXPORT_SYMBOL_GPL vmlinux 0x4d89530a unregister_virtio_driver +EXPORT_SYMBOL_GPL vmlinux 0x4dc28258 pskb_put +EXPORT_SYMBOL_GPL vmlinux 0x4ddf20e6 spi_async_locked +EXPORT_SYMBOL_GPL vmlinux 0x4de17ab3 usb_state_string +EXPORT_SYMBOL_GPL vmlinux 0x4de3b510 pci_user_write_config_word +EXPORT_SYMBOL_GPL vmlinux 0x4df49bff ata_host_start +EXPORT_SYMBOL_GPL vmlinux 0x4df4cbfb usb_autopm_put_interface_async +EXPORT_SYMBOL_GPL vmlinux 0x4e0d59cb __cpufreq_driver_target +EXPORT_SYMBOL_GPL vmlinux 0x4e109192 ring_buffer_entries +EXPORT_SYMBOL_GPL vmlinux 0x4e1ea947 __list_lru_init +EXPORT_SYMBOL_GPL vmlinux 0x4e216ed4 wm831x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x4e242f5f pstore_cannot_block_path +EXPORT_SYMBOL_GPL vmlinux 0x4e2c2dd2 pm_qos_remove_request +EXPORT_SYMBOL_GPL vmlinux 0x4e57723d apei_read +EXPORT_SYMBOL_GPL vmlinux 0x4e718dc7 input_ff_destroy +EXPORT_SYMBOL_GPL vmlinux 0x4e74e625 gnttab_batch_copy +EXPORT_SYMBOL_GPL vmlinux 0x4e8a3b10 class_compat_create_link +EXPORT_SYMBOL_GPL vmlinux 0x4e8c10a0 pm_generic_freeze_noirq +EXPORT_SYMBOL_GPL vmlinux 0x4e907b07 reset_controller_register +EXPORT_SYMBOL_GPL vmlinux 0x4e97a832 tcp_death_row +EXPORT_SYMBOL_GPL vmlinux 0x4eccc24b devm_regulator_bulk_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x4ef5bcf4 perf_swevent_get_recursion_context +EXPORT_SYMBOL_GPL vmlinux 0x4ef7a1fc __put_task_struct +EXPORT_SYMBOL_GPL vmlinux 0x4f020dee public_key_verify_signature +EXPORT_SYMBOL_GPL vmlinux 0x4f12cdde pci_enable_rom +EXPORT_SYMBOL_GPL vmlinux 0x4f28bc81 device_remove_bin_file +EXPORT_SYMBOL_GPL vmlinux 0x4f42c618 tcp_cong_avoid_ai +EXPORT_SYMBOL_GPL vmlinux 0x4f5b7b01 wm8997_irq +EXPORT_SYMBOL_GPL vmlinux 0x4f5f53c1 ata_bmdma_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x4f6a07fe show_rcu_gp_kthreads +EXPORT_SYMBOL_GPL vmlinux 0x4f6ae194 usb_altnum_to_altsetting +EXPORT_SYMBOL_GPL vmlinux 0x4f8f8bd0 ata_bmdma_dumb_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0x4f9525de rio_mport_write_config_16 +EXPORT_SYMBOL_GPL vmlinux 0x4fc52e8d __tracepoint_remove_device_from_group +EXPORT_SYMBOL_GPL vmlinux 0x4fd4e89d ring_buffer_empty_cpu +EXPORT_SYMBOL_GPL vmlinux 0x4fdc945d sata_deb_timing_normal +EXPORT_SYMBOL_GPL vmlinux 0x4fe1eddf unregister_netevent_notifier +EXPORT_SYMBOL_GPL vmlinux 0x4ff625e5 pci_assign_unassigned_bus_resources +EXPORT_SYMBOL_GPL vmlinux 0x5026585c xen_irq_from_gsi +EXPORT_SYMBOL_GPL vmlinux 0x50295d53 __pci_reset_function_locked +EXPORT_SYMBOL_GPL vmlinux 0x5029dbe0 rt_mutex_timed_lock +EXPORT_SYMBOL_GPL vmlinux 0x503771f0 pm_runtime_force_resume +EXPORT_SYMBOL_GPL vmlinux 0x504d156f thermal_zone_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x5061ce46 sysfs_remove_bin_file +EXPORT_SYMBOL_GPL vmlinux 0x507de8c6 add_memory +EXPORT_SYMBOL_GPL vmlinux 0x5080c352 trace_print_bitmask_seq +EXPORT_SYMBOL_GPL vmlinux 0x5086ac3a alg_test +EXPORT_SYMBOL_GPL vmlinux 0x5091b823 ring_buffer_read_start +EXPORT_SYMBOL_GPL vmlinux 0x5095dd1d cpufreq_unregister_governor +EXPORT_SYMBOL_GPL vmlinux 0x50abe93c exportfs_decode_fh +EXPORT_SYMBOL_GPL vmlinux 0x50c7b076 __udp4_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x50c89f23 __alloc_percpu +EXPORT_SYMBOL_GPL vmlinux 0x50e7193a __i2c_first_dynamic_bus_num +EXPORT_SYMBOL_GPL vmlinux 0x50f57f50 blkg_lookup +EXPORT_SYMBOL_GPL vmlinux 0x50fad434 round_jiffies_up +EXPORT_SYMBOL_GPL vmlinux 0x511c1b82 param_set_bool_enable_only +EXPORT_SYMBOL_GPL vmlinux 0x514e9875 divider_get_val +EXPORT_SYMBOL_GPL vmlinux 0x514f9c8c __crypto_alloc_tfm +EXPORT_SYMBOL_GPL vmlinux 0x51537c21 dev_pm_domain_detach +EXPORT_SYMBOL_GPL vmlinux 0x515e8df0 serial8250_do_startup +EXPORT_SYMBOL_GPL vmlinux 0x5187ac4b xen_store_evtchn +EXPORT_SYMBOL_GPL vmlinux 0x518c2fc6 hpet_rtc_dropped_irq +EXPORT_SYMBOL_GPL vmlinux 0x5198670c rio_register_mport +EXPORT_SYMBOL_GPL vmlinux 0x5199e855 __inet_lookup_listener +EXPORT_SYMBOL_GPL vmlinux 0x51adfba6 get_task_comm +EXPORT_SYMBOL_GPL vmlinux 0x51b6959b pci_destroy_slot +EXPORT_SYMBOL_GPL vmlinux 0x5210a5bf hsi_board_list +EXPORT_SYMBOL_GPL vmlinux 0x521c35f5 bio_associate_blkcg +EXPORT_SYMBOL_GPL vmlinux 0x521fc1ec mmc_send_tuning +EXPORT_SYMBOL_GPL vmlinux 0x52212010 __tracepoint_block_bio_remap +EXPORT_SYMBOL_GPL vmlinux 0x5221ec3a fwnode_property_read_u32_array +EXPORT_SYMBOL_GPL vmlinux 0x522646c6 unregister_trace_event +EXPORT_SYMBOL_GPL vmlinux 0x524fca61 pcie_update_link_speed +EXPORT_SYMBOL_GPL vmlinux 0x5258b3e4 xenbus_map_ring_valloc +EXPORT_SYMBOL_GPL vmlinux 0x525a6358 devfreq_event_enable_edev +EXPORT_SYMBOL_GPL vmlinux 0x526280c7 trace_seq_puts +EXPORT_SYMBOL_GPL vmlinux 0x526ac60b inet_csk_search_req +EXPORT_SYMBOL_GPL vmlinux 0x526bc1ee xfrm_output +EXPORT_SYMBOL_GPL vmlinux 0x5272d8bc __cookie_v4_check +EXPORT_SYMBOL_GPL vmlinux 0x52a41251 __cookie_v4_init_sequence +EXPORT_SYMBOL_GPL vmlinux 0x52bca146 ata_bmdma_stop +EXPORT_SYMBOL_GPL vmlinux 0x52c6aadd blk_rq_unprep_clone +EXPORT_SYMBOL_GPL vmlinux 0x52d8c375 clk_register_divider +EXPORT_SYMBOL_GPL vmlinux 0x52f102db __percpu_ida_init +EXPORT_SYMBOL_GPL vmlinux 0x52f23876 tty_port_register_device +EXPORT_SYMBOL_GPL vmlinux 0x53087492 crypto_givcipher_type +EXPORT_SYMBOL_GPL vmlinux 0x531f5f3e regulator_set_load +EXPORT_SYMBOL_GPL vmlinux 0x53473feb devres_find +EXPORT_SYMBOL_GPL vmlinux 0x534786b9 input_ff_erase +EXPORT_SYMBOL_GPL vmlinux 0x5358fc36 ring_buffer_discard_commit +EXPORT_SYMBOL_GPL vmlinux 0x535ea490 sdio_readl +EXPORT_SYMBOL_GPL vmlinux 0x53614269 get_cpu_idle_time_us +EXPORT_SYMBOL_GPL vmlinux 0x53646438 xenbus_map_ring +EXPORT_SYMBOL_GPL vmlinux 0x539f157b pci_xen_swiotlb_init_late +EXPORT_SYMBOL_GPL vmlinux 0x53aaea07 blk_mq_free_request +EXPORT_SYMBOL_GPL vmlinux 0x53de32f0 anon_inode_getfd +EXPORT_SYMBOL_GPL vmlinux 0x53df34c9 wait_for_tpm_stat +EXPORT_SYMBOL_GPL vmlinux 0x53e244b9 devres_close_group +EXPORT_SYMBOL_GPL vmlinux 0x53ea548d ip4_datagram_release_cb +EXPORT_SYMBOL_GPL vmlinux 0x53f644c9 devfreq_event_set_event +EXPORT_SYMBOL_GPL vmlinux 0x53fc61f9 regcache_sync_region +EXPORT_SYMBOL_GPL vmlinux 0x541bd60a irq_work_run +EXPORT_SYMBOL_GPL vmlinux 0x541dc665 kthread_unpark +EXPORT_SYMBOL_GPL vmlinux 0x5425d145 bit_wait_timeout +EXPORT_SYMBOL_GPL vmlinux 0x54397a02 unregister_net_sysctl_table +EXPORT_SYMBOL_GPL vmlinux 0x543dca30 pinctrl_get_group_pins +EXPORT_SYMBOL_GPL vmlinux 0x5460c8d8 fsnotify_get_cookie +EXPORT_SYMBOL_GPL vmlinux 0x5468150f ipv6_dup_options +EXPORT_SYMBOL_GPL vmlinux 0x54740eb7 get_cpu_idle_time +EXPORT_SYMBOL_GPL vmlinux 0x5479cded tcp_set_state +EXPORT_SYMBOL_GPL vmlinux 0x547a6999 usb_hcd_platform_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x549525ef handle_nested_irq +EXPORT_SYMBOL_GPL vmlinux 0x54add106 ip6_dst_lookup +EXPORT_SYMBOL_GPL vmlinux 0x54d46690 uart_parse_earlycon +EXPORT_SYMBOL_GPL vmlinux 0x54d468f1 pm_qos_request_active +EXPORT_SYMBOL_GPL vmlinux 0x54e35288 virtqueue_is_broken +EXPORT_SYMBOL_GPL vmlinux 0x5501dd73 alarm_expires_remaining +EXPORT_SYMBOL_GPL vmlinux 0x550ce709 pat_enabled +EXPORT_SYMBOL_GPL vmlinux 0x550fbf98 clk_mux_ops +EXPORT_SYMBOL_GPL vmlinux 0x553b49a4 cpufreq_get_driver_data +EXPORT_SYMBOL_GPL vmlinux 0x55417264 unregister_vt_notifier +EXPORT_SYMBOL_GPL vmlinux 0x554db4ab blkg_lookup_create +EXPORT_SYMBOL_GPL vmlinux 0x55526907 xen_features +EXPORT_SYMBOL_GPL vmlinux 0x5567426a regulator_count_voltages +EXPORT_SYMBOL_GPL vmlinux 0x556e4390 clk_get_rate +EXPORT_SYMBOL_GPL vmlinux 0x556ebdfc ping_get_port +EXPORT_SYMBOL_GPL vmlinux 0x55784228 regmap_irq_get_virq +EXPORT_SYMBOL_GPL vmlinux 0x55b6fafd i2c_generic_scl_recovery +EXPORT_SYMBOL_GPL vmlinux 0x55c8cc31 dma_buf_export +EXPORT_SYMBOL_GPL vmlinux 0x55dc9cd6 acpi_subsys_suspend +EXPORT_SYMBOL_GPL vmlinux 0x55edd53d unregister_jprobes +EXPORT_SYMBOL_GPL vmlinux 0x5617ecd8 usb_set_configuration +EXPORT_SYMBOL_GPL vmlinux 0x561fc1db mbox_controller_unregister +EXPORT_SYMBOL_GPL vmlinux 0x5620cdd8 nd_device_attribute_group +EXPORT_SYMBOL_GPL vmlinux 0x56256e8a orderly_poweroff +EXPORT_SYMBOL_GPL vmlinux 0x5626f7ab phy_destroy +EXPORT_SYMBOL_GPL vmlinux 0x56297911 blk_rq_err_bytes +EXPORT_SYMBOL_GPL vmlinux 0x562a09ba ping_getfrag +EXPORT_SYMBOL_GPL vmlinux 0x56310925 regulator_mode_to_status +EXPORT_SYMBOL_GPL vmlinux 0x56345b15 tpm_get_timeouts +EXPORT_SYMBOL_GPL vmlinux 0x56366352 dev_pm_qos_hide_latency_tolerance +EXPORT_SYMBOL_GPL vmlinux 0x56398615 mark_tsc_unstable +EXPORT_SYMBOL_GPL vmlinux 0x563c7689 spi_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x5641485b tty_termios_encode_baud_rate +EXPORT_SYMBOL_GPL vmlinux 0x56470625 alloc_vm_area +EXPORT_SYMBOL_GPL vmlinux 0x5654f836 erst_get_record_id_next +EXPORT_SYMBOL_GPL vmlinux 0x565af9ba platform_device_add +EXPORT_SYMBOL_GPL vmlinux 0x565b6892 uuid_le_gen +EXPORT_SYMBOL_GPL vmlinux 0x567a3bc9 pm_generic_poweroff_late +EXPORT_SYMBOL_GPL vmlinux 0x56886b19 scatterwalk_map +EXPORT_SYMBOL_GPL vmlinux 0x56947347 dmi_walk +EXPORT_SYMBOL_GPL vmlinux 0x569f0711 alarm_start_relative +EXPORT_SYMBOL_GPL vmlinux 0x56a7903f ata_scsi_change_queue_depth +EXPORT_SYMBOL_GPL vmlinux 0x56ad3ae3 ping_proc_register +EXPORT_SYMBOL_GPL vmlinux 0x56b15d6e gpiochip_add_pin_range +EXPORT_SYMBOL_GPL vmlinux 0x56b63670 lzo1x_1_compress +EXPORT_SYMBOL_GPL vmlinux 0x56b7c4a7 regulator_get_voltage +EXPORT_SYMBOL_GPL vmlinux 0x56bd427c get_kernel_pages +EXPORT_SYMBOL_GPL vmlinux 0x56c755b7 raw_unhash_sk +EXPORT_SYMBOL_GPL vmlinux 0x56d697ce cpu_up +EXPORT_SYMBOL_GPL vmlinux 0x56e75d47 klist_node_attached +EXPORT_SYMBOL_GPL vmlinux 0x56eac706 debugfs_create_size_t +EXPORT_SYMBOL_GPL vmlinux 0x57052a33 powercap_register_control_type +EXPORT_SYMBOL_GPL vmlinux 0x570842c7 bpf_prog_select_runtime +EXPORT_SYMBOL_GPL vmlinux 0x571e6116 platform_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x57203bfd usb_hcd_amd_remote_wakeup_quirk +EXPORT_SYMBOL_GPL vmlinux 0x5720c70a pci_pasid_features +EXPORT_SYMBOL_GPL vmlinux 0x57231f45 ring_buffer_record_on +EXPORT_SYMBOL_GPL vmlinux 0x57237978 __page_file_index +EXPORT_SYMBOL_GPL vmlinux 0x572e2909 usb_unpoison_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x573a3f69 __clk_mux_determine_rate +EXPORT_SYMBOL_GPL vmlinux 0x573c89e0 debugfs_create_devm_seqfile +EXPORT_SYMBOL_GPL vmlinux 0x5779d445 xenbus_exists +EXPORT_SYMBOL_GPL vmlinux 0x5784b0b8 blkg_prfill_stat +EXPORT_SYMBOL_GPL vmlinux 0x5790e7a0 pci_unlock_rescan_remove +EXPORT_SYMBOL_GPL vmlinux 0x57973c75 da903x_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x579e0bf5 rtnl_unregister_all +EXPORT_SYMBOL_GPL vmlinux 0x57aaa3bb register_net_sysctl +EXPORT_SYMBOL_GPL vmlinux 0x57c39727 kdb_register_flags +EXPORT_SYMBOL_GPL vmlinux 0x57f02c02 dm_get_table_device +EXPORT_SYMBOL_GPL vmlinux 0x57f8062c acpi_dev_resource_io +EXPORT_SYMBOL_GPL vmlinux 0x580b0c68 wm8350_device_init +EXPORT_SYMBOL_GPL vmlinux 0x58292e5f clk_fixed_factor_ops +EXPORT_SYMBOL_GPL vmlinux 0x5830e8fe tps6586x_writes +EXPORT_SYMBOL_GPL vmlinux 0x584a84c4 ata_scsi_simulate +EXPORT_SYMBOL_GPL vmlinux 0x584bb909 serial8250_tx_chars +EXPORT_SYMBOL_GPL vmlinux 0x585704ab aer_recover_queue +EXPORT_SYMBOL_GPL vmlinux 0x586aa922 crypto_larval_kill +EXPORT_SYMBOL_GPL vmlinux 0x589e4569 syscon_regmap_lookup_by_pdevname +EXPORT_SYMBOL_GPL vmlinux 0x58a4b5ac device_attach +EXPORT_SYMBOL_GPL vmlinux 0x58ac79a9 xen_pci_frontend +EXPORT_SYMBOL_GPL vmlinux 0x58beec72 crypto_unregister_pcomp +EXPORT_SYMBOL_GPL vmlinux 0x58e1c528 pwm_disable +EXPORT_SYMBOL_GPL vmlinux 0x58fe9409 rio_inb_pwrite_handler +EXPORT_SYMBOL_GPL vmlinux 0x59077d85 sysfs_remove_groups +EXPORT_SYMBOL_GPL vmlinux 0x591119b5 mbox_controller_register +EXPORT_SYMBOL_GPL vmlinux 0x591f1683 i2c_lock_adapter +EXPORT_SYMBOL_GPL vmlinux 0x5922fe8c ata_sff_tf_load +EXPORT_SYMBOL_GPL vmlinux 0x594cde67 trace_seq_putmem_hex +EXPORT_SYMBOL_GPL vmlinux 0x5954ddd3 xenbus_watch_path +EXPORT_SYMBOL_GPL vmlinux 0x59688cf7 atomic_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0x5970fade xenbus_grant_ring +EXPORT_SYMBOL_GPL vmlinux 0x59762a15 fuse_do_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x59944076 blk_mq_cancel_requeue_work +EXPORT_SYMBOL_GPL vmlinux 0x59ac4ec5 dev_pm_qos_expose_flags +EXPORT_SYMBOL_GPL vmlinux 0x59d44c9a scsi_autopm_put_device +EXPORT_SYMBOL_GPL vmlinux 0x59e2743e call_rcu_bh +EXPORT_SYMBOL_GPL vmlinux 0x59eae699 ring_buffer_read_prepare +EXPORT_SYMBOL_GPL vmlinux 0x5a174d81 inet_getpeer +EXPORT_SYMBOL_GPL vmlinux 0x5a29a846 pci_try_reset_function +EXPORT_SYMBOL_GPL vmlinux 0x5a2b1b67 gnttab_free_grant_reference +EXPORT_SYMBOL_GPL vmlinux 0x5a3c1507 bdev_read_page +EXPORT_SYMBOL_GPL vmlinux 0x5a441ebd efi_query_variable_store +EXPORT_SYMBOL_GPL vmlinux 0x5a50f9ee xen_swiotlb_map_sg_attrs +EXPORT_SYMBOL_GPL vmlinux 0x5a537202 digsig_verify +EXPORT_SYMBOL_GPL vmlinux 0x5a65a5cc console_drivers +EXPORT_SYMBOL_GPL vmlinux 0x5a7bfe41 crypto_probing_notify +EXPORT_SYMBOL_GPL vmlinux 0x5a99d43a register_wide_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x5a9b5bd8 acpi_match_device +EXPORT_SYMBOL_GPL vmlinux 0x5aa96251 ata_pci_bmdma_init +EXPORT_SYMBOL_GPL vmlinux 0x5acbff30 kernel_kobj +EXPORT_SYMBOL_GPL vmlinux 0x5ace9344 devm_hwmon_device_register_with_groups +EXPORT_SYMBOL_GPL vmlinux 0x5ade2369 power_supply_register_no_ws +EXPORT_SYMBOL_GPL vmlinux 0x5ae3baf5 ata_pci_device_do_suspend +EXPORT_SYMBOL_GPL vmlinux 0x5af03a28 gnttab_claim_grant_reference +EXPORT_SYMBOL_GPL vmlinux 0x5afceb81 led_trigger_blink +EXPORT_SYMBOL_GPL vmlinux 0x5b1290e7 rtc_irq_set_state +EXPORT_SYMBOL_GPL vmlinux 0x5b14b354 regulator_get_init_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x5b196dea debugfs_remove +EXPORT_SYMBOL_GPL vmlinux 0x5b265396 ata_sff_pause +EXPORT_SYMBOL_GPL vmlinux 0x5b269bbe skb_complete_tx_timestamp +EXPORT_SYMBOL_GPL vmlinux 0x5b29ae12 anon_transport_class_register +EXPORT_SYMBOL_GPL vmlinux 0x5b2f5d86 xfrm_inner_extract_output +EXPORT_SYMBOL_GPL vmlinux 0x5b2fc8e6 rio_request_dma +EXPORT_SYMBOL_GPL vmlinux 0x5b38d3b4 pwm_set_chip_data +EXPORT_SYMBOL_GPL vmlinux 0x5b469ad8 cpufreq_cpu_get +EXPORT_SYMBOL_GPL vmlinux 0x5b5d7ae1 sata_set_spd +EXPORT_SYMBOL_GPL vmlinux 0x5b5e7248 fuse_dev_free +EXPORT_SYMBOL_GPL vmlinux 0x5b701f74 device_reset +EXPORT_SYMBOL_GPL vmlinux 0x5bab17a4 pci_find_next_capability +EXPORT_SYMBOL_GPL vmlinux 0x5babf842 register_jprobes +EXPORT_SYMBOL_GPL vmlinux 0x5bc8d9d8 rio_request_outb_dbell +EXPORT_SYMBOL_GPL vmlinux 0x5bce8ca1 __atomic_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x5bd0748f crypto_del_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x5bd91427 sk_detach_filter +EXPORT_SYMBOL_GPL vmlinux 0x5bdbac4e rcu_unexpedite_gp +EXPORT_SYMBOL_GPL vmlinux 0x5be135f1 __blocking_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x5be92966 ping_close +EXPORT_SYMBOL_GPL vmlinux 0x5c0525d5 da9052_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0x5c31fde6 security_inode_setattr +EXPORT_SYMBOL_GPL vmlinux 0x5c517bcd clockevents_config_and_register +EXPORT_SYMBOL_GPL vmlinux 0x5c5a1b16 tick_broadcast_control +EXPORT_SYMBOL_GPL vmlinux 0x5c66e90c efivar_run_worker +EXPORT_SYMBOL_GPL vmlinux 0x5c807741 con_debug_enter +EXPORT_SYMBOL_GPL vmlinux 0x5c92ddcb kernfs_get +EXPORT_SYMBOL_GPL vmlinux 0x5c9c7d0f nf_register_afinfo +EXPORT_SYMBOL_GPL vmlinux 0x5cabdced dev_pm_qos_remove_global_notifier +EXPORT_SYMBOL_GPL vmlinux 0x5cb96088 crypto_aead_setkey +EXPORT_SYMBOL_GPL vmlinux 0x5cc509a4 nsecs_to_jiffies +EXPORT_SYMBOL_GPL vmlinux 0x5cf1ecae ata_acpi_stm +EXPORT_SYMBOL_GPL vmlinux 0x5d01117f acpi_device_modalias +EXPORT_SYMBOL_GPL vmlinux 0x5d0b8d67 crypto_init_spawn +EXPORT_SYMBOL_GPL vmlinux 0x5d12e48f input_event_to_user +EXPORT_SYMBOL_GPL vmlinux 0x5d259b3b ata_std_qc_defer +EXPORT_SYMBOL_GPL vmlinux 0x5d2be85a sata_async_notification +EXPORT_SYMBOL_GPL vmlinux 0x5d315945 pci_load_saved_state +EXPORT_SYMBOL_GPL vmlinux 0x5d366dec gnttab_cancel_free_callback +EXPORT_SYMBOL_GPL vmlinux 0x5d512a10 platform_get_irq +EXPORT_SYMBOL_GPL vmlinux 0x5d652883 sata_pmp_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x5d833e7d acpi_pci_check_ejectable +EXPORT_SYMBOL_GPL vmlinux 0x5da4571d usb_hcd_pci_pm_ops +EXPORT_SYMBOL_GPL vmlinux 0x5da67adc zs_compact +EXPORT_SYMBOL_GPL vmlinux 0x5dbcfa4f boot_cpu_physical_apicid +EXPORT_SYMBOL_GPL vmlinux 0x5dca2acc rtc_class_close +EXPORT_SYMBOL_GPL vmlinux 0x5dd4d008 screen_glyph +EXPORT_SYMBOL_GPL vmlinux 0x5ddb91be subsys_virtual_register +EXPORT_SYMBOL_GPL vmlinux 0x5ddf2bd2 ping_init_sock +EXPORT_SYMBOL_GPL vmlinux 0x5dfd013d regulator_get_linear_step +EXPORT_SYMBOL_GPL vmlinux 0x5e2a669e blkg_rwstat_recursive_sum +EXPORT_SYMBOL_GPL vmlinux 0x5e4bed29 init_uts_ns +EXPORT_SYMBOL_GPL vmlinux 0x5e515be6 ktime_get_ts64 +EXPORT_SYMBOL_GPL vmlinux 0x5e51cd74 swiotlb_nr_tbl +EXPORT_SYMBOL_GPL vmlinux 0x5e547898 powercap_unregister_zone +EXPORT_SYMBOL_GPL vmlinux 0x5e6e51d7 tasklet_hrtimer_init +EXPORT_SYMBOL_GPL vmlinux 0x5e73556b pinctrl_remove_gpio_range +EXPORT_SYMBOL_GPL vmlinux 0x5e77ba35 do_machine_check +EXPORT_SYMBOL_GPL vmlinux 0x5e9a52b7 pwmchip_add +EXPORT_SYMBOL_GPL vmlinux 0x5ea83b43 virtqueue_disable_cb +EXPORT_SYMBOL_GPL vmlinux 0x5ec4acd7 get_device +EXPORT_SYMBOL_GPL vmlinux 0x5ec545b4 virtio_config_changed +EXPORT_SYMBOL_GPL vmlinux 0x5ec8b2f0 pci_user_read_config_dword +EXPORT_SYMBOL_GPL vmlinux 0x5ee924fe sdev_evt_send +EXPORT_SYMBOL_GPL vmlinux 0x5f0980af regmap_async_complete +EXPORT_SYMBOL_GPL vmlinux 0x5f2da8c4 check_tsc_unstable +EXPORT_SYMBOL_GPL vmlinux 0x5f2fbb4b dma_buf_vunmap +EXPORT_SYMBOL_GPL vmlinux 0x5f62a37e rio_register_scan +EXPORT_SYMBOL_GPL vmlinux 0x5f6323c1 devm_regulator_unregister +EXPORT_SYMBOL_GPL vmlinux 0x5f64a62a generic_access_phys +EXPORT_SYMBOL_GPL vmlinux 0x5f8eae2c tpm_calc_ordinal_duration +EXPORT_SYMBOL_GPL vmlinux 0x5fc27be9 acpi_dev_irq_flags +EXPORT_SYMBOL_GPL vmlinux 0x5fc32942 blk_trace_remove +EXPORT_SYMBOL_GPL vmlinux 0x5fdfa2c1 amd_pmu_enable_virt +EXPORT_SYMBOL_GPL vmlinux 0x5fe7dce5 xfrm_audit_state_replay +EXPORT_SYMBOL_GPL vmlinux 0x60091316 clk_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x600b1f66 pci_bus_max_busnr +EXPORT_SYMBOL_GPL vmlinux 0x601a2494 usb_set_interface +EXPORT_SYMBOL_GPL vmlinux 0x603223d9 usb_register_device_driver +EXPORT_SYMBOL_GPL vmlinux 0x6034b63c rio_dma_prep_slave_sg +EXPORT_SYMBOL_GPL vmlinux 0x603b544a device_add +EXPORT_SYMBOL_GPL vmlinux 0x60506751 unmap_kernel_range_noflush +EXPORT_SYMBOL_GPL vmlinux 0x60527861 iommu_attach_group +EXPORT_SYMBOL_GPL vmlinux 0x6053daad adp5520_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x60561bbd alarm_cancel +EXPORT_SYMBOL_GPL vmlinux 0x607d2680 sched_setattr +EXPORT_SYMBOL_GPL vmlinux 0x6082a835 xattr_getsecurity +EXPORT_SYMBOL_GPL vmlinux 0x6091797f synchronize_rcu +EXPORT_SYMBOL_GPL vmlinux 0x60930d37 save_mc_for_early +EXPORT_SYMBOL_GPL vmlinux 0x60a13e90 rcu_barrier +EXPORT_SYMBOL_GPL vmlinux 0x60a77df6 pinctrl_utils_dt_free_map +EXPORT_SYMBOL_GPL vmlinux 0x60cc3cf3 da9052_request_irq +EXPORT_SYMBOL_GPL vmlinux 0x60cd73ed pv_apic_ops +EXPORT_SYMBOL_GPL vmlinux 0x60ef093e sata_scr_write +EXPORT_SYMBOL_GPL vmlinux 0x60fd8e4e bd_unlink_disk_holder +EXPORT_SYMBOL_GPL vmlinux 0x611c8741 ata_sg_init +EXPORT_SYMBOL_GPL vmlinux 0x61229ed4 power_supply_put +EXPORT_SYMBOL_GPL vmlinux 0x6123e646 mbox_chan_received_data +EXPORT_SYMBOL_GPL vmlinux 0x615599a2 acpi_initialize_hp_context +EXPORT_SYMBOL_GPL vmlinux 0x615b4c40 __wake_up_locked +EXPORT_SYMBOL_GPL vmlinux 0x6161c4dd extcon_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x616868ac public_key_subtype +EXPORT_SYMBOL_GPL vmlinux 0x616b9ad6 bpf_prog_destroy +EXPORT_SYMBOL_GPL vmlinux 0x61b0f0c9 synchronize_srcu +EXPORT_SYMBOL_GPL vmlinux 0x61cde409 acpi_dev_resource_memory +EXPORT_SYMBOL_GPL vmlinux 0x61cdff06 component_master_add_child +EXPORT_SYMBOL_GPL vmlinux 0x61d51214 ehci_reset +EXPORT_SYMBOL_GPL vmlinux 0x61daac2d pwm_request_from_chip +EXPORT_SYMBOL_GPL vmlinux 0x61e70414 acpi_dev_get_property_array +EXPORT_SYMBOL_GPL vmlinux 0x6202f95a tps6586x_irq_get_virq +EXPORT_SYMBOL_GPL vmlinux 0x62135e87 gnttab_unmap_refs +EXPORT_SYMBOL_GPL vmlinux 0x62140d9e acpi_ec_add_query_handler +EXPORT_SYMBOL_GPL vmlinux 0x621789db ata_sff_irq_on +EXPORT_SYMBOL_GPL vmlinux 0x621f3859 rtnl_put_cacheinfo +EXPORT_SYMBOL_GPL vmlinux 0x622b4c6a find_extend_vma +EXPORT_SYMBOL_GPL vmlinux 0x622c7922 register_oom_notifier +EXPORT_SYMBOL_GPL vmlinux 0x623803c8 hest_disable +EXPORT_SYMBOL_GPL vmlinux 0x6247c08f agp_add_bridge +EXPORT_SYMBOL_GPL vmlinux 0x62509bc5 usb_deregister +EXPORT_SYMBOL_GPL vmlinux 0x625738af scsi_internal_device_unblock +EXPORT_SYMBOL_GPL vmlinux 0x62a1c981 klist_add_head +EXPORT_SYMBOL_GPL vmlinux 0x62af4131 regulator_get_optional +EXPORT_SYMBOL_GPL vmlinux 0x62e0726b power_supply_unregister +EXPORT_SYMBOL_GPL vmlinux 0x63150e06 clk_get_parent +EXPORT_SYMBOL_GPL vmlinux 0x6331a0c9 dev_pm_put_subsys_data +EXPORT_SYMBOL_GPL vmlinux 0x633e6eb9 fat_fill_super +EXPORT_SYMBOL_GPL vmlinux 0x63544ced dev_change_net_namespace +EXPORT_SYMBOL_GPL vmlinux 0x635ec980 apei_exec_post_unmap_gars +EXPORT_SYMBOL_GPL vmlinux 0x6375b847 regulator_is_enabled_regmap +EXPORT_SYMBOL_GPL vmlinux 0x63803939 blk_mq_freeze_queue +EXPORT_SYMBOL_GPL vmlinux 0x6396fe13 list_lru_destroy +EXPORT_SYMBOL_GPL vmlinux 0x63ad935d x86_hyper_kvm +EXPORT_SYMBOL_GPL vmlinux 0x63b86a26 __pm_runtime_idle +EXPORT_SYMBOL_GPL vmlinux 0x63c7cf11 inet_putpeer +EXPORT_SYMBOL_GPL vmlinux 0x63caf20f verify_signature +EXPORT_SYMBOL_GPL vmlinux 0x63ea80b3 cper_mem_err_type_str +EXPORT_SYMBOL_GPL vmlinux 0x63ed3168 bus_create_file +EXPORT_SYMBOL_GPL vmlinux 0x63efdd8d devm_pinctrl_get +EXPORT_SYMBOL_GPL vmlinux 0x63f3ab6c efivar_entry_set_get_size +EXPORT_SYMBOL_GPL vmlinux 0x63fbf143 blk_insert_cloned_request +EXPORT_SYMBOL_GPL vmlinux 0x6410e160 ktime_mono_to_any +EXPORT_SYMBOL_GPL vmlinux 0x64256424 visitor32 +EXPORT_SYMBOL_GPL vmlinux 0x64318593 acpi_dev_filter_resource_type +EXPORT_SYMBOL_GPL vmlinux 0x6440fb6a i2c_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x646311d9 bus_get_device_klist +EXPORT_SYMBOL_GPL vmlinux 0x6482b077 fib_table_lookup +EXPORT_SYMBOL_GPL vmlinux 0x64a9fe47 usb_unlocked_disable_lpm +EXPORT_SYMBOL_GPL vmlinux 0x64b7069e apei_mce_report_mem_error +EXPORT_SYMBOL_GPL vmlinux 0x64c37430 devm_of_pwm_get +EXPORT_SYMBOL_GPL vmlinux 0x64df630e anon_inode_getfile +EXPORT_SYMBOL_GPL vmlinux 0x64eb596d rio_mport_write_config_8 +EXPORT_SYMBOL_GPL vmlinux 0x64faf428 __netpoll_setup +EXPORT_SYMBOL_GPL vmlinux 0x6527a231 dbgp_external_startup +EXPORT_SYMBOL_GPL vmlinux 0x652dd2d0 regulator_map_voltage_linear_range +EXPORT_SYMBOL_GPL vmlinux 0x652e82b2 register_acpi_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x652f382f sata_std_hardreset +EXPORT_SYMBOL_GPL vmlinux 0x6536953b btree_last +EXPORT_SYMBOL_GPL vmlinux 0x653cb02d intel_msic_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0x658c8186 amd_get_nb_id +EXPORT_SYMBOL_GPL vmlinux 0x658d5865 spi_busnum_to_master +EXPORT_SYMBOL_GPL vmlinux 0x659e70d2 nvdimm_create +EXPORT_SYMBOL_GPL vmlinux 0x65abe196 usb_autopm_put_interface_no_suspend +EXPORT_SYMBOL_GPL vmlinux 0x65ae5679 tps6586x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x65bbbc78 schedule_hrtimeout_range +EXPORT_SYMBOL_GPL vmlinux 0x65ccb6f0 call_netevent_notifiers +EXPORT_SYMBOL_GPL vmlinux 0x661508e7 regmap_read +EXPORT_SYMBOL_GPL vmlinux 0x661601de sprint_symbol +EXPORT_SYMBOL_GPL vmlinux 0x66299780 __root_device_register +EXPORT_SYMBOL_GPL vmlinux 0x6636c3c9 irq_set_vcpu_affinity +EXPORT_SYMBOL_GPL vmlinux 0x6641de6a rio_release_outb_mbox +EXPORT_SYMBOL_GPL vmlinux 0x664ff02f sata_pmp_qc_defer_cmd_switch +EXPORT_SYMBOL_GPL vmlinux 0x66786dbf device_store_ulong +EXPORT_SYMBOL_GPL vmlinux 0x668402aa crypto_put_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x66c6b8a7 tcp_ca_get_name_by_key +EXPORT_SYMBOL_GPL vmlinux 0x66d8624b xen_unregister_device_domain_owner +EXPORT_SYMBOL_GPL vmlinux 0x66d87d38 symbol_put_addr +EXPORT_SYMBOL_GPL vmlinux 0x66eceb7d rio_lock_device +EXPORT_SYMBOL_GPL vmlinux 0x66f952e0 fwnode_property_read_string +EXPORT_SYMBOL_GPL vmlinux 0x66fc33eb skb_segment +EXPORT_SYMBOL_GPL vmlinux 0x6700fe49 mbox_request_channel_byname +EXPORT_SYMBOL_GPL vmlinux 0x6705a431 devres_open_group +EXPORT_SYMBOL_GPL vmlinux 0x670b1a7a posix_acl_access_xattr_handler +EXPORT_SYMBOL_GPL vmlinux 0x6739a503 balloon_set_new_target +EXPORT_SYMBOL_GPL vmlinux 0x673ab608 invalidate_inode_pages2_range +EXPORT_SYMBOL_GPL vmlinux 0x673b5656 bpf_prog_realloc +EXPORT_SYMBOL_GPL vmlinux 0x67490b6f ping_bind +EXPORT_SYMBOL_GPL vmlinux 0x674e13e1 public_key_destroy +EXPORT_SYMBOL_GPL vmlinux 0x6754ac18 clk_get_parent_by_index +EXPORT_SYMBOL_GPL vmlinux 0x6770cbf9 virtio_device_restore +EXPORT_SYMBOL_GPL vmlinux 0x67815d76 usb_put_hcd +EXPORT_SYMBOL_GPL vmlinux 0x678bf1f0 blkdev_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x67955ce6 profile_hits +EXPORT_SYMBOL_GPL vmlinux 0x67abba31 fat_remove_entries +EXPORT_SYMBOL_GPL vmlinux 0x67aeffea rio_local_get_device_id +EXPORT_SYMBOL_GPL vmlinux 0x67eb2aa5 usb_hcd_unlink_urb_from_ep +EXPORT_SYMBOL_GPL vmlinux 0x67f6516f __ablkcipher_walk_complete +EXPORT_SYMBOL_GPL vmlinux 0x68065e02 __mnt_is_readonly +EXPORT_SYMBOL_GPL vmlinux 0x6812cf8d __tracepoint_rpm_idle +EXPORT_SYMBOL_GPL vmlinux 0x681736ee blk_mq_request_started +EXPORT_SYMBOL_GPL vmlinux 0x683321bc __gpiod_get_optional +EXPORT_SYMBOL_GPL vmlinux 0x6834ac43 srcu_barrier +EXPORT_SYMBOL_GPL vmlinux 0x6838a41d pci_restore_ats_state +EXPORT_SYMBOL_GPL vmlinux 0x683c85ad __wake_up_locked_key +EXPORT_SYMBOL_GPL vmlinux 0x685ed12e platform_get_resource_byname +EXPORT_SYMBOL_GPL vmlinux 0x68654f49 usb_wakeup_notification +EXPORT_SYMBOL_GPL vmlinux 0x6885d480 __pci_hp_register +EXPORT_SYMBOL_GPL vmlinux 0x6886c8e4 pm_relax +EXPORT_SYMBOL_GPL vmlinux 0x68956406 static_key_slow_dec +EXPORT_SYMBOL_GPL vmlinux 0x68a00538 ata_scsi_slave_config +EXPORT_SYMBOL_GPL vmlinux 0x68a40787 xenbus_match +EXPORT_SYMBOL_GPL vmlinux 0x68db1810 usb_hcd_giveback_urb +EXPORT_SYMBOL_GPL vmlinux 0x68f58262 print_context_stack +EXPORT_SYMBOL_GPL vmlinux 0x690b2921 da9052_enable_irq +EXPORT_SYMBOL_GPL vmlinux 0x691f6929 generic_fh_to_dentry +EXPORT_SYMBOL_GPL vmlinux 0x6923ce63 irq_work_sync +EXPORT_SYMBOL_GPL vmlinux 0x69447467 ring_buffer_write +EXPORT_SYMBOL_GPL vmlinux 0x6945725e mpi_read_raw_data +EXPORT_SYMBOL_GPL vmlinux 0x69492b56 devm_clk_register +EXPORT_SYMBOL_GPL vmlinux 0x694e5121 pci_cfg_access_lock +EXPORT_SYMBOL_GPL vmlinux 0x696ddbc7 ip_local_out_sk +EXPORT_SYMBOL_GPL vmlinux 0x697c5d0d tracing_snapshot_alloc +EXPORT_SYMBOL_GPL vmlinux 0x698a899f ring_buffer_peek +EXPORT_SYMBOL_GPL vmlinux 0x69907093 mddev_init +EXPORT_SYMBOL_GPL vmlinux 0x69e2b34d usb_hcd_map_urb_for_dma +EXPORT_SYMBOL_GPL vmlinux 0x6a0d6fa9 regulator_set_voltage_time +EXPORT_SYMBOL_GPL vmlinux 0x6a1733eb iommu_group_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x6a17bd35 attribute_container_register +EXPORT_SYMBOL_GPL vmlinux 0x6a2a6a19 disable_kprobe +EXPORT_SYMBOL_GPL vmlinux 0x6a405531 usb_hcd_start_port_resume +EXPORT_SYMBOL_GPL vmlinux 0x6a4671f2 nvdimm_attribute_group +EXPORT_SYMBOL_GPL vmlinux 0x6a4f623b mmu_notifier_synchronize +EXPORT_SYMBOL_GPL vmlinux 0x6a53bcd8 vfs_setlease +EXPORT_SYMBOL_GPL vmlinux 0x6a5637b1 wm8350_block_write +EXPORT_SYMBOL_GPL vmlinux 0x6a5fb566 rcu_sched_force_quiescent_state +EXPORT_SYMBOL_GPL vmlinux 0x6a64eefa do_unregister_con_driver +EXPORT_SYMBOL_GPL vmlinux 0x6a65f151 md_ack_all_badblocks +EXPORT_SYMBOL_GPL vmlinux 0x6a6a3e5e wm5102_i2c_regmap +EXPORT_SYMBOL_GPL vmlinux 0x6a750b71 inet_hash +EXPORT_SYMBOL_GPL vmlinux 0x6a78cb9f user_describe +EXPORT_SYMBOL_GPL vmlinux 0x6a7bc6e4 tcp_fetch_timewait_stamp +EXPORT_SYMBOL_GPL vmlinux 0x6a8441be cpci_hp_start +EXPORT_SYMBOL_GPL vmlinux 0x6a8fbd9f bsg_job_done +EXPORT_SYMBOL_GPL vmlinux 0x6a952a6c perf_event_enable +EXPORT_SYMBOL_GPL vmlinux 0x6ab1b8bb usb_unlink_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x6ab3deee locks_release_private +EXPORT_SYMBOL_GPL vmlinux 0x6acad21f acpi_get_cpuid +EXPORT_SYMBOL_GPL vmlinux 0x6ad41ae4 wait_on_page_bit_killable_timeout +EXPORT_SYMBOL_GPL vmlinux 0x6ae6bd0f gpiod_put +EXPORT_SYMBOL_GPL vmlinux 0x6af1261b __online_page_set_limits +EXPORT_SYMBOL_GPL vmlinux 0x6afdadfa acpi_dev_pm_attach +EXPORT_SYMBOL_GPL vmlinux 0x6b0dc565 xen_set_irq_priority +EXPORT_SYMBOL_GPL vmlinux 0x6b29a1fa ring_buffer_event_length +EXPORT_SYMBOL_GPL vmlinux 0x6b3eaad6 alarm_start +EXPORT_SYMBOL_GPL vmlinux 0x6b5250d7 pci_check_and_unmask_intx +EXPORT_SYMBOL_GPL vmlinux 0x6b52e5b0 ip6_datagram_connect_v6_only +EXPORT_SYMBOL_GPL vmlinux 0x6b81c38b power_supply_unreg_notifier +EXPORT_SYMBOL_GPL vmlinux 0x6ba9817a proc_get_parent_data +EXPORT_SYMBOL_GPL vmlinux 0x6bc52800 perf_tp_event +EXPORT_SYMBOL_GPL vmlinux 0x6bc78922 device_for_each_child_reverse +EXPORT_SYMBOL_GPL vmlinux 0x6bf1b90d dmi_memdev_name +EXPORT_SYMBOL_GPL vmlinux 0x6c07d933 add_uevent_var +EXPORT_SYMBOL_GPL vmlinux 0x6c1251fd apei_exec_read_register +EXPORT_SYMBOL_GPL vmlinux 0x6c1d0d76 pci_create_slot +EXPORT_SYMBOL_GPL vmlinux 0x6c209eab __alloc_percpu_gfp +EXPORT_SYMBOL_GPL vmlinux 0x6c2f95d3 __page_file_mapping +EXPORT_SYMBOL_GPL vmlinux 0x6c389761 acpi_bus_get_private_data +EXPORT_SYMBOL_GPL vmlinux 0x6c3be41a crypto_unregister_alg +EXPORT_SYMBOL_GPL vmlinux 0x6c40a520 xenbus_switch_state +EXPORT_SYMBOL_GPL vmlinux 0x6c4b6684 reset_control_assert +EXPORT_SYMBOL_GPL vmlinux 0x6c531e78 platform_device_put +EXPORT_SYMBOL_GPL vmlinux 0x6c655913 register_acpi_hed_notifier +EXPORT_SYMBOL_GPL vmlinux 0x6c749afe __tracepoint_block_unplug +EXPORT_SYMBOL_GPL vmlinux 0x6c7b0a2e wakeup_source_remove +EXPORT_SYMBOL_GPL vmlinux 0x6c81eb7d fat_setattr +EXPORT_SYMBOL_GPL vmlinux 0x6c82f624 dev_attr_em_message +EXPORT_SYMBOL_GPL vmlinux 0x6c844267 ehci_cf_port_reset_rwsem +EXPORT_SYMBOL_GPL vmlinux 0x6ca4bf88 async_synchronize_full_domain +EXPORT_SYMBOL_GPL vmlinux 0x6ca8f40f __blkdev_driver_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x6cc5422c sata_scr_valid +EXPORT_SYMBOL_GPL vmlinux 0x6cd21997 ata_tf_to_fis +EXPORT_SYMBOL_GPL vmlinux 0x6cdf3369 irq_alloc_domain_generic_chips +EXPORT_SYMBOL_GPL vmlinux 0x6d08f011 power_supply_set_battery_charged +EXPORT_SYMBOL_GPL vmlinux 0x6d10273b system_trusted_keyring +EXPORT_SYMBOL_GPL vmlinux 0x6d11d8a9 devm_mdiobus_free +EXPORT_SYMBOL_GPL vmlinux 0x6d1c3904 ping_hash +EXPORT_SYMBOL_GPL vmlinux 0x6d1c8c42 pci_enable_ats +EXPORT_SYMBOL_GPL vmlinux 0x6d228c8c crypto_mod_put +EXPORT_SYMBOL_GPL vmlinux 0x6d2fc5a6 net_namespace_list +EXPORT_SYMBOL_GPL vmlinux 0x6d339861 __tracepoint_io_page_fault +EXPORT_SYMBOL_GPL vmlinux 0x6d65e247 usb_add_phy_dev +EXPORT_SYMBOL_GPL vmlinux 0x6d674963 devres_remove +EXPORT_SYMBOL_GPL vmlinux 0x6d68c69b blk_queue_dma_drain +EXPORT_SYMBOL_GPL vmlinux 0x6d736404 crypto_alloc_akcipher +EXPORT_SYMBOL_GPL vmlinux 0x6dc0d984 raw_seq_stop +EXPORT_SYMBOL_GPL vmlinux 0x6dc7303c bdev_write_page +EXPORT_SYMBOL_GPL vmlinux 0x6ddb96af da9052_adc_read_temp +EXPORT_SYMBOL_GPL vmlinux 0x6deb3c38 usb_sg_init +EXPORT_SYMBOL_GPL vmlinux 0x6e04a077 usb_bind_phy +EXPORT_SYMBOL_GPL vmlinux 0x6e05ea6e sched_setscheduler +EXPORT_SYMBOL_GPL vmlinux 0x6e325ee3 ata_pci_bmdma_prepare_host +EXPORT_SYMBOL_GPL vmlinux 0x6e3491a8 usb_get_descriptor +EXPORT_SYMBOL_GPL vmlinux 0x6e51afc8 percpu_ref_kill_and_confirm +EXPORT_SYMBOL_GPL vmlinux 0x6e58ddf0 gnttab_end_foreign_transfer_ref +EXPORT_SYMBOL_GPL vmlinux 0x6e595c6b __module_text_address +EXPORT_SYMBOL_GPL vmlinux 0x6e5acc2a to_nvdimm_bus +EXPORT_SYMBOL_GPL vmlinux 0x6e782c23 iomap_create_wc +EXPORT_SYMBOL_GPL vmlinux 0x6e7943ec iommu_group_id +EXPORT_SYMBOL_GPL vmlinux 0x6e7cd1c1 ata_do_dev_read_id +EXPORT_SYMBOL_GPL vmlinux 0x6e7f2367 genlmsg_new_unicast +EXPORT_SYMBOL_GPL vmlinux 0x6e85b00b local_touch_nmi +EXPORT_SYMBOL_GPL vmlinux 0x6e89a560 regmap_irq_chip_get_base +EXPORT_SYMBOL_GPL vmlinux 0x6e8bc1c9 pwm_get +EXPORT_SYMBOL_GPL vmlinux 0x6e9fd061 pin_is_valid +EXPORT_SYMBOL_GPL vmlinux 0x6eae8b2d usb_alloc_streams +EXPORT_SYMBOL_GPL vmlinux 0x6eb1f9e3 virtqueue_add_outbuf +EXPORT_SYMBOL_GPL vmlinux 0x6eb57855 devm_regulator_bulk_get +EXPORT_SYMBOL_GPL vmlinux 0x6f1ee69e kgdb_unregister_io_module +EXPORT_SYMBOL_GPL vmlinux 0x6f241e97 rio_mport_read_config_32 +EXPORT_SYMBOL_GPL vmlinux 0x6f3634f8 vga_default_device +EXPORT_SYMBOL_GPL vmlinux 0x6f402ba6 acpi_dev_resource_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x6f633dfb regmap_field_free +EXPORT_SYMBOL_GPL vmlinux 0x6f666b63 phy_pm_runtime_get_sync +EXPORT_SYMBOL_GPL vmlinux 0x6f7c1e8b sysfs_create_mount_point +EXPORT_SYMBOL_GPL vmlinux 0x6f882c1d shash_register_instance +EXPORT_SYMBOL_GPL vmlinux 0x6fda16ec ata_std_prereset +EXPORT_SYMBOL_GPL vmlinux 0x6fe382f6 rio_mport_chk_dev_access +EXPORT_SYMBOL_GPL vmlinux 0x6fe3d8cf ktime_add_safe +EXPORT_SYMBOL_GPL vmlinux 0x6ff607b6 crypto_get_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x6ffd24c9 ata_acpi_cbl_80wire +EXPORT_SYMBOL_GPL vmlinux 0x70201233 unregister_jprobe +EXPORT_SYMBOL_GPL vmlinux 0x70503af4 tpm_pm_resume +EXPORT_SYMBOL_GPL vmlinux 0x7056b6f2 __clk_get_name +EXPORT_SYMBOL_GPL vmlinux 0x7058883c intel_scu_notifier +EXPORT_SYMBOL_GPL vmlinux 0x707ff1bb ata_xfer_mask2mode +EXPORT_SYMBOL_GPL vmlinux 0x708ce756 wm831x_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0x70924d92 devm_regmap_init +EXPORT_SYMBOL_GPL vmlinux 0x70bb651d __tracepoint_block_rq_remap +EXPORT_SYMBOL_GPL vmlinux 0x70c3809d set_primary_fwnode +EXPORT_SYMBOL_GPL vmlinux 0x70cf032f usb_hcd_irq +EXPORT_SYMBOL_GPL vmlinux 0x70dd1ce3 pci_hp_remove_module_link +EXPORT_SYMBOL_GPL vmlinux 0x70e4acab tcp_twsk_unique +EXPORT_SYMBOL_GPL vmlinux 0x710c73b6 crypto_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x711e4e6d transport_configure_device +EXPORT_SYMBOL_GPL vmlinux 0x7132f9d4 dma_buf_get +EXPORT_SYMBOL_GPL vmlinux 0x716265c7 debugfs_initialized +EXPORT_SYMBOL_GPL vmlinux 0x7169dfea sata_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x7189ac68 rio_request_mport_dma +EXPORT_SYMBOL_GPL vmlinux 0x719e17ff clk_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0x71a66a73 powercap_register_zone +EXPORT_SYMBOL_GPL vmlinux 0x71c08904 regmap_raw_write_async +EXPORT_SYMBOL_GPL vmlinux 0x71d53221 platform_device_del +EXPORT_SYMBOL_GPL vmlinux 0x71dc9998 crypto_il_tab +EXPORT_SYMBOL_GPL vmlinux 0x71de5036 ata_sff_wait_ready +EXPORT_SYMBOL_GPL vmlinux 0x71e1013c thermal_zone_get_zone_by_name +EXPORT_SYMBOL_GPL vmlinux 0x7203ba52 usb_driver_release_interface +EXPORT_SYMBOL_GPL vmlinux 0x7221b9d1 seq_release_net +EXPORT_SYMBOL_GPL vmlinux 0x722bdb9c phy_create +EXPORT_SYMBOL_GPL vmlinux 0x724597cd regmap_multi_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x72515d5a snprint_stack_trace +EXPORT_SYMBOL_GPL vmlinux 0x7264dc17 crypto_register_alg +EXPORT_SYMBOL_GPL vmlinux 0x726d7379 pm_generic_suspend +EXPORT_SYMBOL_GPL vmlinux 0x72741f25 trace_vbprintk +EXPORT_SYMBOL_GPL vmlinux 0x7278d328 all_vm_events +EXPORT_SYMBOL_GPL vmlinux 0x7280fce1 regulator_disable_regmap +EXPORT_SYMBOL_GPL vmlinux 0x728ab9f6 regmap_fields_update_bits +EXPORT_SYMBOL_GPL vmlinux 0x728f9ce7 gpiochip_remove +EXPORT_SYMBOL_GPL vmlinux 0x7296745e blkcg_root +EXPORT_SYMBOL_GPL vmlinux 0x72bce9a0 ata_bmdma_port_intr +EXPORT_SYMBOL_GPL vmlinux 0x72c60c96 pci_remove_root_bus +EXPORT_SYMBOL_GPL vmlinux 0x72cf714d klist_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x72d4a8e6 usb_get_phy +EXPORT_SYMBOL_GPL vmlinux 0x72f9a0ee wm8350_gpio_config +EXPORT_SYMBOL_GPL vmlinux 0x73013896 xenbus_printf +EXPORT_SYMBOL_GPL vmlinux 0x7314f051 debugfs_create_u8 +EXPORT_SYMBOL_GPL vmlinux 0x73177536 inet_csk_listen_start +EXPORT_SYMBOL_GPL vmlinux 0x731dba7a xen_domain_type +EXPORT_SYMBOL_GPL vmlinux 0x7320176a tty_buffer_lock_exclusive +EXPORT_SYMBOL_GPL vmlinux 0x732f41ca flush_kthread_worker +EXPORT_SYMBOL_GPL vmlinux 0x73510609 fl6_update_dst +EXPORT_SYMBOL_GPL vmlinux 0x737a2c44 sysfs_remove_group +EXPORT_SYMBOL_GPL vmlinux 0x738685da serial8250_rx_chars +EXPORT_SYMBOL_GPL vmlinux 0x738fd248 intel_msic_reg_update +EXPORT_SYMBOL_GPL vmlinux 0x73a48b4a ata_sff_std_ports +EXPORT_SYMBOL_GPL vmlinux 0x73b3f0b9 led_classdev_register +EXPORT_SYMBOL_GPL vmlinux 0x73b98231 asymmetric_key_generate_id +EXPORT_SYMBOL_GPL vmlinux 0x73c832f2 ata_dev_classify +EXPORT_SYMBOL_GPL vmlinux 0x73cf1a6e ping_seq_stop +EXPORT_SYMBOL_GPL vmlinux 0x73d69364 ring_buffer_change_overwrite +EXPORT_SYMBOL_GPL vmlinux 0x73d7e597 xen_swiotlb_map_page +EXPORT_SYMBOL_GPL vmlinux 0x741051cc bus_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0x741dfc4b crypto_init_spawn2 +EXPORT_SYMBOL_GPL vmlinux 0x74324da1 xfrm_local_error +EXPORT_SYMBOL_GPL vmlinux 0x74369ecf usb_match_id +EXPORT_SYMBOL_GPL vmlinux 0x743a165e ata_pack_xfermask +EXPORT_SYMBOL_GPL vmlinux 0x74457e56 apei_resources_fini +EXPORT_SYMBOL_GPL vmlinux 0x744ff12c pinctrl_dev_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x7452adff user_return_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x74566ef5 ata_link_next +EXPORT_SYMBOL_GPL vmlinux 0x7464ea38 dev_pm_qos_add_global_notifier +EXPORT_SYMBOL_GPL vmlinux 0x746664f2 ata_bmdma_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0x748a23e5 __efivar_entry_delete +EXPORT_SYMBOL_GPL vmlinux 0x748d801a pcap_adc_sync +EXPORT_SYMBOL_GPL vmlinux 0x749942a8 pm_generic_thaw_early +EXPORT_SYMBOL_GPL vmlinux 0x749976ad devm_hwrng_register +EXPORT_SYMBOL_GPL vmlinux 0x74b3ceb3 xfrm_audit_state_icvfail +EXPORT_SYMBOL_GPL vmlinux 0x74b5ea68 lcm_not_zero +EXPORT_SYMBOL_GPL vmlinux 0x74baf17a tracing_is_on +EXPORT_SYMBOL_GPL vmlinux 0x74bbf732 dev_pm_qos_remove_request +EXPORT_SYMBOL_GPL vmlinux 0x74c08941 kvm_async_pf_task_wake +EXPORT_SYMBOL_GPL vmlinux 0x74deb10c used_vectors +EXPORT_SYMBOL_GPL vmlinux 0x74ec3d1e nvdimm_volatile_region_create +EXPORT_SYMBOL_GPL vmlinux 0x75022ff0 component_bind_all +EXPORT_SYMBOL_GPL vmlinux 0x750d7181 device_show_int +EXPORT_SYMBOL_GPL vmlinux 0x7513ac59 pci_disable_pasid +EXPORT_SYMBOL_GPL vmlinux 0x75185825 clockevents_register_device +EXPORT_SYMBOL_GPL vmlinux 0x7521afb6 leave_mm +EXPORT_SYMBOL_GPL vmlinux 0x7522f3ba irq_modify_status +EXPORT_SYMBOL_GPL vmlinux 0x752b30cd ata_link_online +EXPORT_SYMBOL_GPL vmlinux 0x752e9d2b skb_cow_data +EXPORT_SYMBOL_GPL vmlinux 0x7542ab7c fat_flush_inodes +EXPORT_SYMBOL_GPL vmlinux 0x754d31c2 virtio_device_freeze +EXPORT_SYMBOL_GPL vmlinux 0x756885fa usb_get_status +EXPORT_SYMBOL_GPL vmlinux 0x756e0cdf free_vm_area +EXPORT_SYMBOL_GPL vmlinux 0x75807ab0 device_store_int +EXPORT_SYMBOL_GPL vmlinux 0x758163e0 cgroup_attach_task_all +EXPORT_SYMBOL_GPL vmlinux 0x758a782e blk_fill_rwbs +EXPORT_SYMBOL_GPL vmlinux 0x75c2b9f1 memalloc_socks +EXPORT_SYMBOL_GPL vmlinux 0x75cc5f17 da9052_free_irq +EXPORT_SYMBOL_GPL vmlinux 0x75cc828d rtc_set_alarm +EXPORT_SYMBOL_GPL vmlinux 0x75ee0a7a crypto_alloc_ahash +EXPORT_SYMBOL_GPL vmlinux 0x764b102b dev_coredumpv +EXPORT_SYMBOL_GPL vmlinux 0x7676e716 skb_gso_transport_seglen +EXPORT_SYMBOL_GPL vmlinux 0x7681946c unregister_pm_notifier +EXPORT_SYMBOL_GPL vmlinux 0x76ad8198 usb_hcd_pci_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x76b2f3c7 acpi_dev_suspend_late +EXPORT_SYMBOL_GPL vmlinux 0x76c072ff regulator_map_voltage_ascend +EXPORT_SYMBOL_GPL vmlinux 0x76d4dcbe inet6_csk_addr2sockaddr +EXPORT_SYMBOL_GPL vmlinux 0x76d9b876 clk_set_rate +EXPORT_SYMBOL_GPL vmlinux 0x770c76b3 wakeup_source_prepare +EXPORT_SYMBOL_GPL vmlinux 0x770cf981 tpm_send +EXPORT_SYMBOL_GPL vmlinux 0x7712771a unbind_from_irqhandler +EXPORT_SYMBOL_GPL vmlinux 0x7714318f device_rename +EXPORT_SYMBOL_GPL vmlinux 0x7729cbdd task_handoff_register +EXPORT_SYMBOL_GPL vmlinux 0x774c732e regulator_disable +EXPORT_SYMBOL_GPL vmlinux 0x7754bc11 dm_hold +EXPORT_SYMBOL_GPL vmlinux 0x7757b51a clk_unregister +EXPORT_SYMBOL_GPL vmlinux 0x775a6ef5 kvm_read_and_reset_pf_reason +EXPORT_SYMBOL_GPL vmlinux 0x7771f6f3 disk_part_iter_next +EXPORT_SYMBOL_GPL vmlinux 0x77899325 gpiod_export_link +EXPORT_SYMBOL_GPL vmlinux 0x7790adc0 aout_dump_debugregs +EXPORT_SYMBOL_GPL vmlinux 0x77aa7f3b regulator_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x77d76cdb napi_by_id +EXPORT_SYMBOL_GPL vmlinux 0x77de7aec adp5520_write +EXPORT_SYMBOL_GPL vmlinux 0x77e26606 platform_bus +EXPORT_SYMBOL_GPL vmlinux 0x77f605b3 ahash_free_instance +EXPORT_SYMBOL_GPL vmlinux 0x781fd8ec ftrace_set_notrace +EXPORT_SYMBOL_GPL vmlinux 0x782821d3 irq_create_of_mapping +EXPORT_SYMBOL_GPL vmlinux 0x782adb74 hpet_rtc_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x782b81c5 cpci_hp_register_bus +EXPORT_SYMBOL_GPL vmlinux 0x78328d65 uart_handle_cts_change +EXPORT_SYMBOL_GPL vmlinux 0x783b39fb filter_check_discard +EXPORT_SYMBOL_GPL vmlinux 0x784d6d61 rio_mport_get_efb +EXPORT_SYMBOL_GPL vmlinux 0x78575bee atomic_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x7874b5ec unix_table_lock +EXPORT_SYMBOL_GPL vmlinux 0x78a61488 nvdimm_pmem_region_create +EXPORT_SYMBOL_GPL vmlinux 0x78a84c49 md_stop +EXPORT_SYMBOL_GPL vmlinux 0x78ae8175 smp_call_function_single_async +EXPORT_SYMBOL_GPL vmlinux 0x78cadc0c pm_runtime_set_memalloc_noio +EXPORT_SYMBOL_GPL vmlinux 0x790a25e6 sysfs_create_group +EXPORT_SYMBOL_GPL vmlinux 0x7913741d __tracepoint_mc_event +EXPORT_SYMBOL_GPL vmlinux 0x7918d98c relay_file_operations +EXPORT_SYMBOL_GPL vmlinux 0x792832f6 rhashtable_walk_next +EXPORT_SYMBOL_GPL vmlinux 0x7932bb12 rio_dma_prep_xfer +EXPORT_SYMBOL_GPL vmlinux 0x79420621 hwmon_device_register +EXPORT_SYMBOL_GPL vmlinux 0x7944e0fc tracing_off +EXPORT_SYMBOL_GPL vmlinux 0x794b7271 orderly_reboot +EXPORT_SYMBOL_GPL vmlinux 0x794c8b2a dev_attr_sw_activity +EXPORT_SYMBOL_GPL vmlinux 0x794efe6f ata_eh_thaw_port +EXPORT_SYMBOL_GPL vmlinux 0x79526d77 clk_debugfs_add_file +EXPORT_SYMBOL_GPL vmlinux 0x79659f5c get_governor_parent_kobj +EXPORT_SYMBOL_GPL vmlinux 0x7968b743 devm_clk_unregister +EXPORT_SYMBOL_GPL vmlinux 0x796c2d48 dm_get_md +EXPORT_SYMBOL_GPL vmlinux 0x79763252 trace_buffer_unlock_commit_regs +EXPORT_SYMBOL_GPL vmlinux 0x7991fd8d crash_vmclear_loaded_vmcss +EXPORT_SYMBOL_GPL vmlinux 0x7998a27f ehci_handshake +EXPORT_SYMBOL_GPL vmlinux 0x799c1ef5 crypto_register_akcipher +EXPORT_SYMBOL_GPL vmlinux 0x79a71c48 kernel_stack_pointer +EXPORT_SYMBOL_GPL vmlinux 0x79a83d4c xen_find_device_domain_owner +EXPORT_SYMBOL_GPL vmlinux 0x79b56e2a max8997_write_reg +EXPORT_SYMBOL_GPL vmlinux 0x79bf6f11 cpufreq_governor_dbs +EXPORT_SYMBOL_GPL vmlinux 0x79defbe1 kthread_should_park +EXPORT_SYMBOL_GPL vmlinux 0x79e69460 intel_iommu_gfx_mapped +EXPORT_SYMBOL_GPL vmlinux 0x79ea7c05 blkcg_activate_policy +EXPORT_SYMBOL_GPL vmlinux 0x79f41d5b try_get_online_cpus +EXPORT_SYMBOL_GPL vmlinux 0x79f99f92 gpiod_direction_input +EXPORT_SYMBOL_GPL vmlinux 0x7a093833 set_memory_array_wt +EXPORT_SYMBOL_GPL vmlinux 0x7a2e4b44 ezx_pcap_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x7a319404 clk_register_fixed_rate +EXPORT_SYMBOL_GPL vmlinux 0x7a323d9d regulator_get_hardware_vsel_register +EXPORT_SYMBOL_GPL vmlinux 0x7a4c1438 pv_info +EXPORT_SYMBOL_GPL vmlinux 0x7a604a87 srcu_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x7a7acc09 serial8250_modem_status +EXPORT_SYMBOL_GPL vmlinux 0x7a944007 rcu_idle_enter +EXPORT_SYMBOL_GPL vmlinux 0x7a9b07eb ping_unhash +EXPORT_SYMBOL_GPL vmlinux 0x7ab3ca18 eventfd_ctx_read +EXPORT_SYMBOL_GPL vmlinux 0x7ac8e5b0 acpi_gsi_to_irq +EXPORT_SYMBOL_GPL vmlinux 0x7adc7b57 input_ff_create +EXPORT_SYMBOL_GPL vmlinux 0x7aeef3c6 dummy_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0x7b0f1ab3 ring_buffer_free_read_page +EXPORT_SYMBOL_GPL vmlinux 0x7b1d544d edac_handler_set +EXPORT_SYMBOL_GPL vmlinux 0x7b202401 usb_poison_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x7b309f87 __bpf_prog_free +EXPORT_SYMBOL_GPL vmlinux 0x7b40ccb4 reset_controller_unregister +EXPORT_SYMBOL_GPL vmlinux 0x7b6a063b ping_seq_start +EXPORT_SYMBOL_GPL vmlinux 0x7b90d1a9 bind_virq_to_irqhandler +EXPORT_SYMBOL_GPL vmlinux 0x7ba31a44 pinctrl_dev_get_name +EXPORT_SYMBOL_GPL vmlinux 0x7ba82fc3 gpiod_set_raw_array_value +EXPORT_SYMBOL_GPL vmlinux 0x7bbe04e5 tps6586x_write +EXPORT_SYMBOL_GPL vmlinux 0x7bbe61c6 regulator_set_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x7bc4c8b5 iommu_set_fault_handler +EXPORT_SYMBOL_GPL vmlinux 0x7bc69e28 crypto_register_rng +EXPORT_SYMBOL_GPL vmlinux 0x7bff4171 unregister_kprobes +EXPORT_SYMBOL_GPL vmlinux 0x7c346357 pkey_algo +EXPORT_SYMBOL_GPL vmlinux 0x7c5575bf cpuidle_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0x7c60ad43 usb_ep0_reinit +EXPORT_SYMBOL_GPL vmlinux 0x7c69546c thermal_cooling_device_register +EXPORT_SYMBOL_GPL vmlinux 0x7c9a7371 clk_prepare +EXPORT_SYMBOL_GPL vmlinux 0x7ca35142 crypto_unregister_template +EXPORT_SYMBOL_GPL vmlinux 0x7cb8d2d4 usb_deregister_dev +EXPORT_SYMBOL_GPL vmlinux 0x7cbfee18 regmap_update_bits_check +EXPORT_SYMBOL_GPL vmlinux 0x7cd6f042 cpufreq_get_current_driver +EXPORT_SYMBOL_GPL vmlinux 0x7ceaf0d5 generic_handle_irq +EXPORT_SYMBOL_GPL vmlinux 0x7cf7f5c3 posix_clock_unregister +EXPORT_SYMBOL_GPL vmlinux 0x7d00c65b nd_synchronize +EXPORT_SYMBOL_GPL vmlinux 0x7d179238 __inet_lookup_established +EXPORT_SYMBOL_GPL vmlinux 0x7d1c907f nd_cmd_out_size +EXPORT_SYMBOL_GPL vmlinux 0x7d226d30 iommu_present +EXPORT_SYMBOL_GPL vmlinux 0x7d2fcdf7 inet6_lookup +EXPORT_SYMBOL_GPL vmlinux 0x7d3be80f gen_pool_avail +EXPORT_SYMBOL_GPL vmlinux 0x7d59dd46 pm_wq +EXPORT_SYMBOL_GPL vmlinux 0x7d722140 serial8250_handle_irq +EXPORT_SYMBOL_GPL vmlinux 0x7d965933 regulator_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x7d97800d sock_diag_register_inet_compat +EXPORT_SYMBOL_GPL vmlinux 0x7d99cd4f securityfs_remove +EXPORT_SYMBOL_GPL vmlinux 0x7dab26b6 wm831x_isinkv_values +EXPORT_SYMBOL_GPL vmlinux 0x7db7beea xhci_run +EXPORT_SYMBOL_GPL vmlinux 0x7dc481d7 __rio_local_write_config_16 +EXPORT_SYMBOL_GPL vmlinux 0x7dcc910a dma_buf_begin_cpu_access +EXPORT_SYMBOL_GPL vmlinux 0x7dda30af unregister_tracepoint_module_notifier +EXPORT_SYMBOL_GPL vmlinux 0x7de65a03 acpi_lpat_free_conversion_table +EXPORT_SYMBOL_GPL vmlinux 0x7dec12fd perf_pmu_unregister +EXPORT_SYMBOL_GPL vmlinux 0x7df05e52 extcon_unregister_interest +EXPORT_SYMBOL_GPL vmlinux 0x7df11da7 acpi_create_platform_device +EXPORT_SYMBOL_GPL vmlinux 0x7dfcdbd3 rtc_update_irq +EXPORT_SYMBOL_GPL vmlinux 0x7e47d8ec sock_prot_inuse_get +EXPORT_SYMBOL_GPL vmlinux 0x7e64181d usb_calc_bus_time +EXPORT_SYMBOL_GPL vmlinux 0x7e7c8e79 wm831x_device_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x7e7eadf1 inet_unhash +EXPORT_SYMBOL_GPL vmlinux 0x7ea057e8 acpi_dev_runtime_suspend +EXPORT_SYMBOL_GPL vmlinux 0x7ea96e8b component_del +EXPORT_SYMBOL_GPL vmlinux 0x7edb2a49 get_current_tty +EXPORT_SYMBOL_GPL vmlinux 0x7ef6248f regmap_get_reg_stride +EXPORT_SYMBOL_GPL vmlinux 0x7efa9849 usb_add_hcd +EXPORT_SYMBOL_GPL vmlinux 0x7f096180 wm831x_auxadc_read +EXPORT_SYMBOL_GPL vmlinux 0x7f2cc9d8 tpm_pm_suspend +EXPORT_SYMBOL_GPL vmlinux 0x7f434d13 blkcg_policy_register +EXPORT_SYMBOL_GPL vmlinux 0x805430b9 irq_domain_add_legacy +EXPORT_SYMBOL_GPL vmlinux 0x80591a01 tty_standard_install +EXPORT_SYMBOL_GPL vmlinux 0x80591f6c dm_set_target_max_io_len +EXPORT_SYMBOL_GPL vmlinux 0x8065a4fc mmu_notifier_call_srcu +EXPORT_SYMBOL_GPL vmlinux 0x806fa311 serial8250_rpm_put +EXPORT_SYMBOL_GPL vmlinux 0x8076d403 sdio_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x808ec1a3 crypto_alg_tested +EXPORT_SYMBOL_GPL vmlinux 0x80a499ee ipv6_stub +EXPORT_SYMBOL_GPL vmlinux 0x80c68137 nf_log_buf_close +EXPORT_SYMBOL_GPL vmlinux 0x80d5e57a mpi_free +EXPORT_SYMBOL_GPL vmlinux 0x80db21db pm_runtime_forbid +EXPORT_SYMBOL_GPL vmlinux 0x80e46bf3 usb_hcd_check_unlink_urb +EXPORT_SYMBOL_GPL vmlinux 0x80f3268f __trace_printk +EXPORT_SYMBOL_GPL vmlinux 0x80f8589f trace_seq_putc +EXPORT_SYMBOL_GPL vmlinux 0x8111223b mmput +EXPORT_SYMBOL_GPL vmlinux 0x8114467b cn_netlink_send_mult +EXPORT_SYMBOL_GPL vmlinux 0x811cc9c4 usb_enable_lpm +EXPORT_SYMBOL_GPL vmlinux 0x811d852a sdio_run_irqs +EXPORT_SYMBOL_GPL vmlinux 0x811dc334 usb_unregister_notify +EXPORT_SYMBOL_GPL vmlinux 0x8125bc71 phy_exit +EXPORT_SYMBOL_GPL vmlinux 0x812f9f81 blkg_prfill_rwstat +EXPORT_SYMBOL_GPL vmlinux 0x8131326b find_vpid +EXPORT_SYMBOL_GPL vmlinux 0x8149ea54 ata_timing_find_mode +EXPORT_SYMBOL_GPL vmlinux 0x8153b8c9 apic +EXPORT_SYMBOL_GPL vmlinux 0x815588a6 clk_enable +EXPORT_SYMBOL_GPL vmlinux 0x816d1cbe power_supply_set_property +EXPORT_SYMBOL_GPL vmlinux 0x817b8f29 cpci_hp_unregister_bus +EXPORT_SYMBOL_GPL vmlinux 0x819ec279 usb_get_from_anchor +EXPORT_SYMBOL_GPL vmlinux 0x81a9f21f debugfs_create_u32_array +EXPORT_SYMBOL_GPL vmlinux 0x81c4a51b out_of_line_wait_on_bit_timeout +EXPORT_SYMBOL_GPL vmlinux 0x822ad4c7 percpu_ref_init +EXPORT_SYMBOL_GPL vmlinux 0x8236e4b8 ata_host_detach +EXPORT_SYMBOL_GPL vmlinux 0x8239a163 devm_led_classdev_register +EXPORT_SYMBOL_GPL vmlinux 0x8239e96c devm_kasprintf +EXPORT_SYMBOL_GPL vmlinux 0x82461948 pinctrl_add_gpio_range +EXPORT_SYMBOL_GPL vmlinux 0x82660f91 regmap_get_val_bytes +EXPORT_SYMBOL_GPL vmlinux 0x8276dd3d iommu_group_add_device +EXPORT_SYMBOL_GPL vmlinux 0x8277e1ac usb_hcd_is_primary_hcd +EXPORT_SYMBOL_GPL vmlinux 0x8281f09a rtc_irq_register +EXPORT_SYMBOL_GPL vmlinux 0x82978442 call_srcu +EXPORT_SYMBOL_GPL vmlinux 0x82a236f1 bpf_prog_get +EXPORT_SYMBOL_GPL vmlinux 0x82a3ae3b crypto_spawn_tfm +EXPORT_SYMBOL_GPL vmlinux 0x82b13fc9 usb_queue_reset_device +EXPORT_SYMBOL_GPL vmlinux 0x82b31059 pci_enable_pasid +EXPORT_SYMBOL_GPL vmlinux 0x82d79b51 sysctl_vfs_cache_pressure +EXPORT_SYMBOL_GPL vmlinux 0x82dbec19 erst_write +EXPORT_SYMBOL_GPL vmlinux 0x82f425d9 pinctrl_register +EXPORT_SYMBOL_GPL vmlinux 0x831d4f76 pinctrl_find_and_add_gpio_range +EXPORT_SYMBOL_GPL vmlinux 0x834616bb sdev_evt_alloc +EXPORT_SYMBOL_GPL vmlinux 0x835de2f1 regmap_exit +EXPORT_SYMBOL_GPL vmlinux 0x836f042d thermal_generate_netlink_event +EXPORT_SYMBOL_GPL vmlinux 0x838b13e7 ring_buffer_free +EXPORT_SYMBOL_GPL vmlinux 0x838c2624 __pneigh_lookup +EXPORT_SYMBOL_GPL vmlinux 0x83a5ae2e __tracepoint_rpm_resume +EXPORT_SYMBOL_GPL vmlinux 0x83e15a52 pci_generic_config_write +EXPORT_SYMBOL_GPL vmlinux 0x8401061f pinctrl_unregister +EXPORT_SYMBOL_GPL vmlinux 0x840b4bd3 key_type_logon +EXPORT_SYMBOL_GPL vmlinux 0x840fa8e1 regulator_get_bypass_regmap +EXPORT_SYMBOL_GPL vmlinux 0x84215d35 xenbus_alloc_evtchn +EXPORT_SYMBOL_GPL vmlinux 0x843d70ef acpi_is_root_bridge +EXPORT_SYMBOL_GPL vmlinux 0x8457c88f raw_hash_sk +EXPORT_SYMBOL_GPL vmlinux 0x8462bdcf btree_grim_visitor +EXPORT_SYMBOL_GPL vmlinux 0x846d0a5e ata_bmdma_port_start +EXPORT_SYMBOL_GPL vmlinux 0x847debed nvdimm_name +EXPORT_SYMBOL_GPL vmlinux 0x848bed88 acpi_dma_request_slave_chan_by_name +EXPORT_SYMBOL_GPL vmlinux 0x849036ae securityfs_create_dir +EXPORT_SYMBOL_GPL vmlinux 0x84989f70 devm_free_pages +EXPORT_SYMBOL_GPL vmlinux 0x84e839a9 acpi_os_unmap_iomem +EXPORT_SYMBOL_GPL vmlinux 0x85050965 __irq_alloc_descs +EXPORT_SYMBOL_GPL vmlinux 0x8506baa8 clk_unregister_gate +EXPORT_SYMBOL_GPL vmlinux 0x85216155 ezx_pcap_read +EXPORT_SYMBOL_GPL vmlinux 0x8532f79f regulator_set_mode +EXPORT_SYMBOL_GPL vmlinux 0x855461a5 ima_file_check +EXPORT_SYMBOL_GPL vmlinux 0x856629e7 __tracepoint_rpm_return_int +EXPORT_SYMBOL_GPL vmlinux 0x8574ca6c gpio_request_array +EXPORT_SYMBOL_GPL vmlinux 0x85c7f674 ring_buffer_normalize_time_stamp +EXPORT_SYMBOL_GPL vmlinux 0x85cb2c45 xen_has_pv_devices +EXPORT_SYMBOL_GPL vmlinux 0x85ce899c spi_bus_unlock +EXPORT_SYMBOL_GPL vmlinux 0x85d7edfd hpet_set_periodic_freq +EXPORT_SYMBOL_GPL vmlinux 0x85ed0059 crypto_register_rngs +EXPORT_SYMBOL_GPL vmlinux 0x860c7eed usb_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x8611576c pm_runtime_no_callbacks +EXPORT_SYMBOL_GPL vmlinux 0x861535c8 xfrm_output_resume +EXPORT_SYMBOL_GPL vmlinux 0x86194e98 usb_sg_cancel +EXPORT_SYMBOL_GPL vmlinux 0x8654be58 hv_remove_vmbus_irq +EXPORT_SYMBOL_GPL vmlinux 0x8658b0bd use_mm +EXPORT_SYMBOL_GPL vmlinux 0x86623fd7 notify_remote_via_irq +EXPORT_SYMBOL_GPL vmlinux 0x86786286 klist_add_behind +EXPORT_SYMBOL_GPL vmlinux 0x86819bc6 irq_ts_restore +EXPORT_SYMBOL_GPL vmlinux 0x86822201 fat_build_inode +EXPORT_SYMBOL_GPL vmlinux 0x868784cb __symbol_get +EXPORT_SYMBOL_GPL vmlinux 0x86972a78 devm_regulator_get +EXPORT_SYMBOL_GPL vmlinux 0x86a51007 gnttab_end_foreign_transfer +EXPORT_SYMBOL_GPL vmlinux 0x86a9267c ata_ehi_push_desc +EXPORT_SYMBOL_GPL vmlinux 0x86b0e4fe __fat_fs_error +EXPORT_SYMBOL_GPL vmlinux 0x86d732c6 ehci_setup +EXPORT_SYMBOL_GPL vmlinux 0x86f0d974 get_cached_msi_msg +EXPORT_SYMBOL_GPL vmlinux 0x86f12d25 xenbus_dev_groups +EXPORT_SYMBOL_GPL vmlinux 0x86f6b99d synchronize_rcu_expedited +EXPORT_SYMBOL_GPL vmlinux 0x86f8c910 pcap_set_ts_bits +EXPORT_SYMBOL_GPL vmlinux 0x870e16b7 xen_test_irq_shared +EXPORT_SYMBOL_GPL vmlinux 0x870eb721 devm_phy_create +EXPORT_SYMBOL_GPL vmlinux 0x873fbaea edac_atomic_assert_error +EXPORT_SYMBOL_GPL vmlinux 0x87428707 ata_do_set_mode +EXPORT_SYMBOL_GPL vmlinux 0x875f2097 wm5110_patch +EXPORT_SYMBOL_GPL vmlinux 0x878513a6 crypto_shash_update +EXPORT_SYMBOL_GPL vmlinux 0x8786f21a cpu_subsys +EXPORT_SYMBOL_GPL vmlinux 0x878e05db virtqueue_kick +EXPORT_SYMBOL_GPL vmlinux 0x87984b16 __tracepoint_cpu_idle +EXPORT_SYMBOL_GPL vmlinux 0x87c7a98b get_user_pages_fast +EXPORT_SYMBOL_GPL vmlinux 0x87ce9415 crypto_register_aead +EXPORT_SYMBOL_GPL vmlinux 0x87d16579 ipv6_proxy_select_ident +EXPORT_SYMBOL_GPL vmlinux 0x87fd5089 gpiod_to_chip +EXPORT_SYMBOL_GPL vmlinux 0x87fdfcc3 sg_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x8810ad5e crypto_xor +EXPORT_SYMBOL_GPL vmlinux 0x88136838 wm8997_i2c_regmap +EXPORT_SYMBOL_GPL vmlinux 0x882d64de adp5520_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x8831f8b1 kmap_atomic_pfn +EXPORT_SYMBOL_GPL vmlinux 0x883c2740 __cookie_v6_init_sequence +EXPORT_SYMBOL_GPL vmlinux 0x885ef5a4 cpufreq_generic_attr +EXPORT_SYMBOL_GPL vmlinux 0x88ab6fe3 kgdb_active +EXPORT_SYMBOL_GPL vmlinux 0x88b5647c trace_clock_local +EXPORT_SYMBOL_GPL vmlinux 0x88fe7e73 ata_sff_dma_pause +EXPORT_SYMBOL_GPL vmlinux 0x8915f75f xfrm_audit_state_notfound +EXPORT_SYMBOL_GPL vmlinux 0x891a5a7f gnttab_max_grant_frames +EXPORT_SYMBOL_GPL vmlinux 0x891e6a40 dev_pm_clear_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0x8924eb1e rcu_force_quiescent_state +EXPORT_SYMBOL_GPL vmlinux 0x892ad49c bitmap_copy_from_slot +EXPORT_SYMBOL_GPL vmlinux 0x893179a3 skb_to_sgvec +EXPORT_SYMBOL_GPL vmlinux 0x8934182f user_destroy +EXPORT_SYMBOL_GPL vmlinux 0x893986b1 devm_acpi_dma_controller_free +EXPORT_SYMBOL_GPL vmlinux 0x89485687 iommu_group_put +EXPORT_SYMBOL_GPL vmlinux 0x894b4213 ata_pci_device_do_resume +EXPORT_SYMBOL_GPL vmlinux 0x8956aeae apei_exec_ctx_init +EXPORT_SYMBOL_GPL vmlinux 0x899d10aa sysfs_create_link +EXPORT_SYMBOL_GPL vmlinux 0x89bbafc6 usb_register_notify +EXPORT_SYMBOL_GPL vmlinux 0x89d008fd do_take_over_console +EXPORT_SYMBOL_GPL vmlinux 0x89d871a5 skb_pull_rcsum +EXPORT_SYMBOL_GPL vmlinux 0x89dbdcc1 __tracepoint_map +EXPORT_SYMBOL_GPL vmlinux 0x89ea2ae1 vfs_listxattr +EXPORT_SYMBOL_GPL vmlinux 0x89eeba55 dev_pm_qos_expose_latency_limit +EXPORT_SYMBOL_GPL vmlinux 0x89f635f2 ata_sff_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x89fd2894 devm_regulator_register +EXPORT_SYMBOL_GPL vmlinux 0x8a2fd9fc blkdev_read_iter +EXPORT_SYMBOL_GPL vmlinux 0x8a559846 gnttab_setup_auto_xlat_frames +EXPORT_SYMBOL_GPL vmlinux 0x8a78989f irq_from_evtchn +EXPORT_SYMBOL_GPL vmlinux 0x8a7cb9c4 platform_thermal_package_rate_control +EXPORT_SYMBOL_GPL vmlinux 0x8a84a1c0 pci_user_read_config_word +EXPORT_SYMBOL_GPL vmlinux 0x8a95975a zap_vma_ptes +EXPORT_SYMBOL_GPL vmlinux 0x8aa08803 class_dev_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x8ab2e910 fat_getattr +EXPORT_SYMBOL_GPL vmlinux 0x8ab6bd19 platform_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x8abacc47 get_max_files +EXPORT_SYMBOL_GPL vmlinux 0x8ac7b92e mnt_want_write +EXPORT_SYMBOL_GPL vmlinux 0x8ae01a0d gnttab_unmap_refs_async +EXPORT_SYMBOL_GPL vmlinux 0x8b0236e6 crypto_blkcipher_type +EXPORT_SYMBOL_GPL vmlinux 0x8b04668e bind_interdomain_evtchn_to_irqhandler +EXPORT_SYMBOL_GPL vmlinux 0x8b0909b3 rio_release_outb_dbell +EXPORT_SYMBOL_GPL vmlinux 0x8b149c36 clk_is_match +EXPORT_SYMBOL_GPL vmlinux 0x8b2d796f ata_port_desc +EXPORT_SYMBOL_GPL vmlinux 0x8b2fda5e ata_bmdma_setup +EXPORT_SYMBOL_GPL vmlinux 0x8b48fcaf device_del +EXPORT_SYMBOL_GPL vmlinux 0x8b531323 clear_foreign_p2m_mapping +EXPORT_SYMBOL_GPL vmlinux 0x8b6cb539 dequeue_signal +EXPORT_SYMBOL_GPL vmlinux 0x8b85bd0c cpufreq_freq_transition_end +EXPORT_SYMBOL_GPL vmlinux 0x8b85c4cc cpufreq_frequency_table_get_index +EXPORT_SYMBOL_GPL vmlinux 0x8b8f33b0 wakeup_source_drop +EXPORT_SYMBOL_GPL vmlinux 0x8ba96ca8 sysfs_rename_link_ns +EXPORT_SYMBOL_GPL vmlinux 0x8bb69860 ata_sas_port_init +EXPORT_SYMBOL_GPL vmlinux 0x8bc0f86b pci_vfs_assigned +EXPORT_SYMBOL_GPL vmlinux 0x8bca2dc7 dma_get_slave_channel +EXPORT_SYMBOL_GPL vmlinux 0x8bdc2c43 nd_numa_attribute_group +EXPORT_SYMBOL_GPL vmlinux 0x8bfca56f skb_morph +EXPORT_SYMBOL_GPL vmlinux 0x8c0215f2 pm_system_wakeup +EXPORT_SYMBOL_GPL vmlinux 0x8c03d20c destroy_workqueue +EXPORT_SYMBOL_GPL vmlinux 0x8c06a108 xenbus_transaction_start +EXPORT_SYMBOL_GPL vmlinux 0x8c0caefc da9052_adc_manual_read +EXPORT_SYMBOL_GPL vmlinux 0x8c4b0fae blocking_notifier_chain_cond_register +EXPORT_SYMBOL_GPL vmlinux 0x8c4d3b5a inet_hash_connect +EXPORT_SYMBOL_GPL vmlinux 0x8c646600 edac_report_status +EXPORT_SYMBOL_GPL vmlinux 0x8c743fb6 reset_control_status +EXPORT_SYMBOL_GPL vmlinux 0x8c7b34ba power_supply_changed +EXPORT_SYMBOL_GPL vmlinux 0x8c7e9970 sata_link_debounce +EXPORT_SYMBOL_GPL vmlinux 0x8c812256 irq_set_chip_and_handler_name +EXPORT_SYMBOL_GPL vmlinux 0x8c894f97 tpm_chip_register +EXPORT_SYMBOL_GPL vmlinux 0x8c8fd5aa x509_cert_parse +EXPORT_SYMBOL_GPL vmlinux 0x8c9d1661 arch_phys_wc_index +EXPORT_SYMBOL_GPL vmlinux 0x8cc3688b dev_get_regmap +EXPORT_SYMBOL_GPL vmlinux 0x8cc877b2 sysfs_merge_group +EXPORT_SYMBOL_GPL vmlinux 0x8cd9e9fb cpu_device_create +EXPORT_SYMBOL_GPL vmlinux 0x8cd9f935 setup_APIC_eilvt +EXPORT_SYMBOL_GPL vmlinux 0x8ce04a46 tty_find_polling_driver +EXPORT_SYMBOL_GPL vmlinux 0x8cef93a2 rio_mport_write_config_32 +EXPORT_SYMBOL_GPL vmlinux 0x8d22bb58 iommu_group_alloc +EXPORT_SYMBOL_GPL vmlinux 0x8d2ae4e9 handle_level_irq +EXPORT_SYMBOL_GPL vmlinux 0x8d346cf0 crypto_register_algs +EXPORT_SYMBOL_GPL vmlinux 0x8d522714 __rcu_read_lock +EXPORT_SYMBOL_GPL vmlinux 0x8d60a15f shmem_truncate_range +EXPORT_SYMBOL_GPL vmlinux 0x8d73b250 clk_register +EXPORT_SYMBOL_GPL vmlinux 0x8d7558da usb_free_urb +EXPORT_SYMBOL_GPL vmlinux 0x8dadcba4 crypto_create_tfm +EXPORT_SYMBOL_GPL vmlinux 0x8dcf4cc6 security_inode_mkdir +EXPORT_SYMBOL_GPL vmlinux 0x8dd6fe49 ata_eh_qc_retry +EXPORT_SYMBOL_GPL vmlinux 0x8de8c71b __clk_get_hw +EXPORT_SYMBOL_GPL vmlinux 0x8e097873 irq_create_strict_mappings +EXPORT_SYMBOL_GPL vmlinux 0x8e18ae4b sdev_evt_send_simple +EXPORT_SYMBOL_GPL vmlinux 0x8e60df7a __tracepoint_wbc_writepage +EXPORT_SYMBOL_GPL vmlinux 0x8e78ab42 device_store_bool +EXPORT_SYMBOL_GPL vmlinux 0x8e840034 cpu_tlbstate +EXPORT_SYMBOL_GPL vmlinux 0x8e8434b8 inet_csk_route_req +EXPORT_SYMBOL_GPL vmlinux 0x8e9ab878 acpi_dev_resume_early +EXPORT_SYMBOL_GPL vmlinux 0x8eab563c usb_remove_hcd +EXPORT_SYMBOL_GPL vmlinux 0x8eb80896 ata_sff_exec_command +EXPORT_SYMBOL_GPL vmlinux 0x8edf9b30 efivars_kobject +EXPORT_SYMBOL_GPL vmlinux 0x8edfb574 injectm +EXPORT_SYMBOL_GPL vmlinux 0x8ee73232 ohci_restart +EXPORT_SYMBOL_GPL vmlinux 0x8eedc44c device_create +EXPORT_SYMBOL_GPL vmlinux 0x8eef4524 regmap_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0x8ef4d8b9 irq_gc_mask_set_bit +EXPORT_SYMBOL_GPL vmlinux 0x8f0748af rcu_expedite_gp +EXPORT_SYMBOL_GPL vmlinux 0x8f0a532a gpiod_get_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x8f2c20b5 inet6_csk_reqsk_queue_hash_add +EXPORT_SYMBOL_GPL vmlinux 0x8f388090 device_property_read_string +EXPORT_SYMBOL_GPL vmlinux 0x8f4bcce9 ata_sff_hsm_move +EXPORT_SYMBOL_GPL vmlinux 0x8f4c7ed8 uart_insert_char +EXPORT_SYMBOL_GPL vmlinux 0x8f6cee77 __round_jiffies_relative +EXPORT_SYMBOL_GPL vmlinux 0x8fb1c1ef scsi_internal_device_block +EXPORT_SYMBOL_GPL vmlinux 0x8fbac9c0 crypto_alg_lookup +EXPORT_SYMBOL_GPL vmlinux 0x8fce7dea serial8250_release_dma +EXPORT_SYMBOL_GPL vmlinux 0x8fefffb3 arizona_pm_ops +EXPORT_SYMBOL_GPL vmlinux 0x8ff89577 smpboot_unregister_percpu_thread +EXPORT_SYMBOL_GPL vmlinux 0x900549c8 gpiochip_unlock_as_irq +EXPORT_SYMBOL_GPL vmlinux 0x9009602a acpi_bus_get_ejd +EXPORT_SYMBOL_GPL vmlinux 0x903753da pinctrl_utils_add_map_mux +EXPORT_SYMBOL_GPL vmlinux 0x903b627c list_lru_isolate_move +EXPORT_SYMBOL_GPL vmlinux 0x903bb65b acpi_dev_resource_ext_address_space +EXPORT_SYMBOL_GPL vmlinux 0x9047c11a trace_seq_bprintf +EXPORT_SYMBOL_GPL vmlinux 0x9047f2b9 device_bind_driver +EXPORT_SYMBOL_GPL vmlinux 0x9048d48f device_dma_is_coherent +EXPORT_SYMBOL_GPL vmlinux 0x9062c322 ring_buffer_consume +EXPORT_SYMBOL_GPL vmlinux 0x9066b0ac reset_control_get +EXPORT_SYMBOL_GPL vmlinux 0x9067e3ba usb_get_current_frame_number +EXPORT_SYMBOL_GPL vmlinux 0x909d2cf5 __platform_create_bundle +EXPORT_SYMBOL_GPL vmlinux 0x909f941d serial8250_do_set_mctrl +EXPORT_SYMBOL_GPL vmlinux 0x90a1004a crypto_has_alg +EXPORT_SYMBOL_GPL vmlinux 0x90aa48f9 pwm_enable +EXPORT_SYMBOL_GPL vmlinux 0x90de0452 platform_thermal_package_notify +EXPORT_SYMBOL_GPL vmlinux 0x90eda75c acpi_device_update_power +EXPORT_SYMBOL_GPL vmlinux 0x91012c53 unregister_wide_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x9101ea79 device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x911a55fd trace_event_raw_init +EXPORT_SYMBOL_GPL vmlinux 0x9131f23e fsstack_copy_attr_all +EXPORT_SYMBOL_GPL vmlinux 0x9165db17 lp8788_read_multi_bytes +EXPORT_SYMBOL_GPL vmlinux 0x916d0986 rio_release_dma +EXPORT_SYMBOL_GPL vmlinux 0x9178f7e9 device_reprobe +EXPORT_SYMBOL_GPL vmlinux 0x9179d9c1 rio_enable_rx_tx_port +EXPORT_SYMBOL_GPL vmlinux 0x918ad429 ring_buffer_lock_reserve +EXPORT_SYMBOL_GPL vmlinux 0x91aec77b pci_try_reset_bus +EXPORT_SYMBOL_GPL vmlinux 0x91ba4bff key_type_trusted +EXPORT_SYMBOL_GPL vmlinux 0x91c6e5b0 pcap_to_irq +EXPORT_SYMBOL_GPL vmlinux 0x91de4dcd cleanup_srcu_struct +EXPORT_SYMBOL_GPL vmlinux 0x91ec0fe9 apei_get_debugfs_dir +EXPORT_SYMBOL_GPL vmlinux 0x91ec92fb usb_hc_died +EXPORT_SYMBOL_GPL vmlinux 0x924c46f8 zs_unmap_object +EXPORT_SYMBOL_GPL vmlinux 0x92700590 pm_wakeup_event +EXPORT_SYMBOL_GPL vmlinux 0x92760565 tty_port_install +EXPORT_SYMBOL_GPL vmlinux 0x92847f40 fb_deferred_io_init +EXPORT_SYMBOL_GPL vmlinux 0x9292b5f1 device_get_next_child_node +EXPORT_SYMBOL_GPL vmlinux 0x9294a2e1 usb_disable_ltm +EXPORT_SYMBOL_GPL vmlinux 0x92a1db3b pci_stop_and_remove_bus_device_locked +EXPORT_SYMBOL_GPL vmlinux 0x92b57248 flush_work +EXPORT_SYMBOL_GPL vmlinux 0x92c5cfa4 __srcu_read_unlock +EXPORT_SYMBOL_GPL vmlinux 0x92cc7b3e usb_create_shared_hcd +EXPORT_SYMBOL_GPL vmlinux 0x92d31cfb fixed_phy_add +EXPORT_SYMBOL_GPL vmlinux 0x92db8f68 do_trace_rcu_torture_read +EXPORT_SYMBOL_GPL vmlinux 0x92dd9337 ipv4_sk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x92f6e4b6 __ktime_divns +EXPORT_SYMBOL_GPL vmlinux 0x92fea02d event_triggers_call +EXPORT_SYMBOL_GPL vmlinux 0x930f3794 ata_port_pbar_desc +EXPORT_SYMBOL_GPL vmlinux 0x9312723b subsys_find_device_by_id +EXPORT_SYMBOL_GPL vmlinux 0x9312d80e evtchn_put +EXPORT_SYMBOL_GPL vmlinux 0x931f05d3 ktime_get_raw +EXPORT_SYMBOL_GPL vmlinux 0x9327c69b ata_sff_busy_sleep +EXPORT_SYMBOL_GPL vmlinux 0x9360ac24 crypto_register_shashes +EXPORT_SYMBOL_GPL vmlinux 0x93788ac7 component_unbind_all +EXPORT_SYMBOL_GPL vmlinux 0x9386eafc class_compat_remove_link +EXPORT_SYMBOL_GPL vmlinux 0x938cec74 module_mutex +EXPORT_SYMBOL_GPL vmlinux 0x93988be1 scsi_schedule_eh +EXPORT_SYMBOL_GPL vmlinux 0x93a23cca set_cpus_allowed_ptr +EXPORT_SYMBOL_GPL vmlinux 0x93b30961 dev_pm_domain_attach +EXPORT_SYMBOL_GPL vmlinux 0x93c1fc8b sdio_memcpy_fromio +EXPORT_SYMBOL_GPL vmlinux 0x93e03890 gpiochip_lock_as_irq +EXPORT_SYMBOL_GPL vmlinux 0x93e4ad48 init_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0x93ee6626 sysfs_remove_link_from_group +EXPORT_SYMBOL_GPL vmlinux 0x93ff9956 fsnotify +EXPORT_SYMBOL_GPL vmlinux 0x94087cab noop_backing_dev_info +EXPORT_SYMBOL_GPL vmlinux 0x941f2aaa eventfd_ctx_put +EXPORT_SYMBOL_GPL vmlinux 0x9421f2eb eventfd_fget +EXPORT_SYMBOL_GPL vmlinux 0x943fc708 xen_setup_shutdown_event +EXPORT_SYMBOL_GPL vmlinux 0x945c9db0 crypto_find_alg +EXPORT_SYMBOL_GPL vmlinux 0x946319e0 pci_reset_bridge_secondary_bus +EXPORT_SYMBOL_GPL vmlinux 0x946b80cc raw_seq_start +EXPORT_SYMBOL_GPL vmlinux 0x946bce00 __clocksource_register_scale +EXPORT_SYMBOL_GPL vmlinux 0x9489af76 sysfs_add_link_to_group +EXPORT_SYMBOL_GPL vmlinux 0x94907e78 acpi_subsys_prepare +EXPORT_SYMBOL_GPL vmlinux 0x949d4520 handle_mm_fault +EXPORT_SYMBOL_GPL vmlinux 0x94abb745 sprint_oid +EXPORT_SYMBOL_GPL vmlinux 0x94c318be apei_exec_collect_resources +EXPORT_SYMBOL_GPL vmlinux 0x94d039cd debugfs_create_blob +EXPORT_SYMBOL_GPL vmlinux 0x94d475c7 iptunnel_pull_header +EXPORT_SYMBOL_GPL vmlinux 0x94ed4080 ata_sff_data_xfer32 +EXPORT_SYMBOL_GPL vmlinux 0x94ef4d05 cpci_hp_stop +EXPORT_SYMBOL_GPL vmlinux 0x9504df26 irq_wake_thread +EXPORT_SYMBOL_GPL vmlinux 0x951dd2cf fb_bl_default_curve +EXPORT_SYMBOL_GPL vmlinux 0x952664c5 do_exit +EXPORT_SYMBOL_GPL vmlinux 0x953e1b9e ktime_get_real_seconds +EXPORT_SYMBOL_GPL vmlinux 0x9558e121 xenbus_dev_probe +EXPORT_SYMBOL_GPL vmlinux 0x955b0e2e kthread_worker_fn +EXPORT_SYMBOL_GPL vmlinux 0x955ef13a devm_phy_get +EXPORT_SYMBOL_GPL vmlinux 0x9569c2c6 scsi_target_unblock +EXPORT_SYMBOL_GPL vmlinux 0x957796f9 register_trace_event +EXPORT_SYMBOL_GPL vmlinux 0x958df3ac zs_free +EXPORT_SYMBOL_GPL vmlinux 0x95b023e7 shash_attr_alg +EXPORT_SYMBOL_GPL vmlinux 0x95bc9078 btree_free +EXPORT_SYMBOL_GPL vmlinux 0x95c4a356 dax_do_io +EXPORT_SYMBOL_GPL vmlinux 0x95df29c2 ata_host_alloc +EXPORT_SYMBOL_GPL vmlinux 0x95ebdc74 extcon_get_cable_state_ +EXPORT_SYMBOL_GPL vmlinux 0x95f8c786 xfrm_audit_policy_delete +EXPORT_SYMBOL_GPL vmlinux 0x9621849f ring_buffer_event_data +EXPORT_SYMBOL_GPL vmlinux 0x9633343d driver_for_each_device +EXPORT_SYMBOL_GPL vmlinux 0x9635345e thermal_zone_device_register +EXPORT_SYMBOL_GPL vmlinux 0x963dd6dd __get_vm_area +EXPORT_SYMBOL_GPL vmlinux 0x964add15 xenbus_scanf +EXPORT_SYMBOL_GPL vmlinux 0x96554810 register_keyboard_notifier +EXPORT_SYMBOL_GPL vmlinux 0x9665783b xhci_gen_setup +EXPORT_SYMBOL_GPL vmlinux 0x9684eca0 of_phy_simple_xlate +EXPORT_SYMBOL_GPL vmlinux 0x968aa4bd dma_get_any_slave_channel +EXPORT_SYMBOL_GPL vmlinux 0x96bd6934 ata_eh_qc_complete +EXPORT_SYMBOL_GPL vmlinux 0x96e1abc5 btree_init +EXPORT_SYMBOL_GPL vmlinux 0x96e41409 pci_disable_pri +EXPORT_SYMBOL_GPL vmlinux 0x970463c3 ata_host_activate +EXPORT_SYMBOL_GPL vmlinux 0x97046ef5 ata_sff_thaw +EXPORT_SYMBOL_GPL vmlinux 0x9710444b driver_unregister +EXPORT_SYMBOL_GPL vmlinux 0x97396a63 wm5110_i2c_regmap +EXPORT_SYMBOL_GPL vmlinux 0x973ab8ad cper_estatus_print +EXPORT_SYMBOL_GPL vmlinux 0x973de4d8 mmc_get_ext_csd +EXPORT_SYMBOL_GPL vmlinux 0x975519c1 asymmetric_key_id_same +EXPORT_SYMBOL_GPL vmlinux 0x976db378 gpiod_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x978f8cf4 unregister_kretprobe +EXPORT_SYMBOL_GPL vmlinux 0x97aa3c3d aead_register_instance +EXPORT_SYMBOL_GPL vmlinux 0x97ad79a5 iommu_detach_device +EXPORT_SYMBOL_GPL vmlinux 0x97bd728d pci_find_ext_capability +EXPORT_SYMBOL_GPL vmlinux 0x97c252fd part_round_stats +EXPORT_SYMBOL_GPL vmlinux 0x97c28203 debugfs_create_bool +EXPORT_SYMBOL_GPL vmlinux 0x97de2b83 debug_locks_silent +EXPORT_SYMBOL_GPL vmlinux 0x9811ae25 kallsyms_on_each_symbol +EXPORT_SYMBOL_GPL vmlinux 0x98230758 efivar_entry_get +EXPORT_SYMBOL_GPL vmlinux 0x98279760 blk_mq_freeze_queue_start +EXPORT_SYMBOL_GPL vmlinux 0x9833bc0c hvc_kick +EXPORT_SYMBOL_GPL vmlinux 0x98503a63 mpi_alloc +EXPORT_SYMBOL_GPL vmlinux 0x986dc268 virtqueue_enable_cb +EXPORT_SYMBOL_GPL vmlinux 0x9879932b crypto_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x988c6e95 devm_regulator_put +EXPORT_SYMBOL_GPL vmlinux 0x989234ec gpiod_get_array_optional +EXPORT_SYMBOL_GPL vmlinux 0x989e7d03 led_stop_software_blink +EXPORT_SYMBOL_GPL vmlinux 0x98a30c8c skb_partial_csum_set +EXPORT_SYMBOL_GPL vmlinux 0x98bbd328 wakeup_source_create +EXPORT_SYMBOL_GPL vmlinux 0x98d9bb74 devm_power_supply_register +EXPORT_SYMBOL_GPL vmlinux 0x98fa1e20 dm_get_reserved_rq_based_ios +EXPORT_SYMBOL_GPL vmlinux 0x98fb9fea hrtimer_start_range_ns +EXPORT_SYMBOL_GPL vmlinux 0x98fcf128 irq_work_queue_on +EXPORT_SYMBOL_GPL vmlinux 0x9924c496 __usb_get_extra_descriptor +EXPORT_SYMBOL_GPL vmlinux 0x9934e4d1 debugfs_create_x64 +EXPORT_SYMBOL_GPL vmlinux 0x993fb138 pinctrl_pm_select_default_state +EXPORT_SYMBOL_GPL vmlinux 0x994b6612 __tracepoint_block_split +EXPORT_SYMBOL_GPL vmlinux 0x99525bc1 __netlink_alloc_skb +EXPORT_SYMBOL_GPL vmlinux 0x995d1071 prof_on +EXPORT_SYMBOL_GPL vmlinux 0x99691dfe wm8997_patch +EXPORT_SYMBOL_GPL vmlinux 0x9973add9 __cookie_v6_check +EXPORT_SYMBOL_GPL vmlinux 0x997c4347 unmap_kernel_range +EXPORT_SYMBOL_GPL vmlinux 0x99840d00 timecounter_init +EXPORT_SYMBOL_GPL vmlinux 0x99a9ff9a cpuidle_register_device +EXPORT_SYMBOL_GPL vmlinux 0x99c865d3 crypto_unregister_shashes +EXPORT_SYMBOL_GPL vmlinux 0x99d16211 inet6_sk_rebuild_header +EXPORT_SYMBOL_GPL vmlinux 0x99e42867 device_property_read_u16_array +EXPORT_SYMBOL_GPL vmlinux 0x9a11a0fc crypto_attr_alg_name +EXPORT_SYMBOL_GPL vmlinux 0x9a1ad377 alarm_forward_now +EXPORT_SYMBOL_GPL vmlinux 0x9a33af6f udp6_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x9a3accd2 i2c_new_probed_device +EXPORT_SYMBOL_GPL vmlinux 0x9a3b4c3a fuse_request_alloc +EXPORT_SYMBOL_GPL vmlinux 0x9a7ba30a tty_perform_flush +EXPORT_SYMBOL_GPL vmlinux 0x9a89dbf7 lpddr2_jedec_min_tck +EXPORT_SYMBOL_GPL vmlinux 0x9a90e090 usb_alloc_dev +EXPORT_SYMBOL_GPL vmlinux 0x9a940877 default_iommu_map_sg +EXPORT_SYMBOL_GPL vmlinux 0x9a9e27ec tps6586x_get_version +EXPORT_SYMBOL_GPL vmlinux 0x9a9e9c51 dax_clear_blocks +EXPORT_SYMBOL_GPL vmlinux 0x9aaddf2f pci_add_dynid +EXPORT_SYMBOL_GPL vmlinux 0x9ac11b74 suspend_set_ops +EXPORT_SYMBOL_GPL vmlinux 0x9ac77d9a attribute_container_find_class_device +EXPORT_SYMBOL_GPL vmlinux 0x9ae6cec6 da903x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x9aeacb87 ring_buffer_iter_empty +EXPORT_SYMBOL_GPL vmlinux 0x9aeeac06 debugfs_create_dir +EXPORT_SYMBOL_GPL vmlinux 0x9affbb9c da903x_read +EXPORT_SYMBOL_GPL vmlinux 0x9b237c32 clockevents_unbind_device +EXPORT_SYMBOL_GPL vmlinux 0x9b2c2922 raw_seq_open +EXPORT_SYMBOL_GPL vmlinux 0x9b3d0fbc subsys_interface_unregister +EXPORT_SYMBOL_GPL vmlinux 0x9b3f1925 disk_part_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0x9b46aa0d __efivar_entry_get +EXPORT_SYMBOL_GPL vmlinux 0x9b63d232 tty_port_tty_hangup +EXPORT_SYMBOL_GPL vmlinux 0x9b720312 acpi_target_system_state +EXPORT_SYMBOL_GPL vmlinux 0x9b7a8e01 efivar_entry_size +EXPORT_SYMBOL_GPL vmlinux 0x9b89cbe7 gpiochip_is_requested +EXPORT_SYMBOL_GPL vmlinux 0x9b89fce6 tty_ldisc_flush +EXPORT_SYMBOL_GPL vmlinux 0x9b8bad3d trace_event_buffer_lock_reserve +EXPORT_SYMBOL_GPL vmlinux 0x9b9f3648 pcibios_scan_specific_bus +EXPORT_SYMBOL_GPL vmlinux 0x9bb8637b pci_disable_ats +EXPORT_SYMBOL_GPL vmlinux 0x9bd72b78 apei_write +EXPORT_SYMBOL_GPL vmlinux 0x9bece81b mpi_cmp_ui +EXPORT_SYMBOL_GPL vmlinux 0x9bf64e60 i2c_new_device +EXPORT_SYMBOL_GPL vmlinux 0x9c2e4b66 acpi_unregister_gsi +EXPORT_SYMBOL_GPL vmlinux 0x9c462261 klist_iter_init_node +EXPORT_SYMBOL_GPL vmlinux 0x9c565380 tcp_reno_ssthresh +EXPORT_SYMBOL_GPL vmlinux 0x9c5d21cc md_allow_write +EXPORT_SYMBOL_GPL vmlinux 0x9c6e2f32 sata_scr_write_flush +EXPORT_SYMBOL_GPL vmlinux 0x9c7a9619 nd_blk_region_to_dimm +EXPORT_SYMBOL_GPL vmlinux 0x9c8d48c2 pinconf_generic_dump_config +EXPORT_SYMBOL_GPL vmlinux 0x9ca4cb36 cpufreq_freq_attr_scaling_boost_freqs +EXPORT_SYMBOL_GPL vmlinux 0x9cacb03f rhashtable_walk_stop +EXPORT_SYMBOL_GPL vmlinux 0x9cc4f70a register_pm_notifier +EXPORT_SYMBOL_GPL vmlinux 0x9ccdf526 list_lru_add +EXPORT_SYMBOL_GPL vmlinux 0x9cda8f01 extcon_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x9cee57a0 zs_create_pool +EXPORT_SYMBOL_GPL vmlinux 0x9d030b99 stop_machine +EXPORT_SYMBOL_GPL vmlinux 0x9d06688b register_xenbus_watch +EXPORT_SYMBOL_GPL vmlinux 0x9d068829 smpboot_register_percpu_thread +EXPORT_SYMBOL_GPL vmlinux 0x9d0fdb0f irq_create_direct_mapping +EXPORT_SYMBOL_GPL vmlinux 0x9d122843 acpi_unbind_one +EXPORT_SYMBOL_GPL vmlinux 0x9d137697 spi_finalize_current_transfer +EXPORT_SYMBOL_GPL vmlinux 0x9d2842ba gpiochip_remove_pin_ranges +EXPORT_SYMBOL_GPL vmlinux 0x9d32daa2 vfs_kern_mount +EXPORT_SYMBOL_GPL vmlinux 0x9d3850e1 gnttab_alloc_grant_references +EXPORT_SYMBOL_GPL vmlinux 0x9d508de2 remove_irq +EXPORT_SYMBOL_GPL vmlinux 0x9d583c01 pm_schedule_suspend +EXPORT_SYMBOL_GPL vmlinux 0x9d62c898 unregister_kprobe +EXPORT_SYMBOL_GPL vmlinux 0x9d8331c0 ring_buffer_read_page +EXPORT_SYMBOL_GPL vmlinux 0x9d8ef2eb crypto_register_template +EXPORT_SYMBOL_GPL vmlinux 0x9dadbb88 cpufreq_boost_supported +EXPORT_SYMBOL_GPL vmlinux 0x9dd6a0c5 relay_flush +EXPORT_SYMBOL_GPL vmlinux 0x9df9cb5d usb_reset_endpoint +EXPORT_SYMBOL_GPL vmlinux 0x9dfdf722 gpio_free_array +EXPORT_SYMBOL_GPL vmlinux 0x9e472f5f snmp_fold_field +EXPORT_SYMBOL_GPL vmlinux 0x9e5038f9 device_wakeup_disable +EXPORT_SYMBOL_GPL vmlinux 0x9e5cb9ff fat_scan +EXPORT_SYMBOL_GPL vmlinux 0x9e5fe8b9 xen_register_device_domain_owner +EXPORT_SYMBOL_GPL vmlinux 0x9e61baa2 dm_disk +EXPORT_SYMBOL_GPL vmlinux 0x9e67fabe __class_create +EXPORT_SYMBOL_GPL vmlinux 0x9e6c66ed pm_runtime_autosuspend_expiration +EXPORT_SYMBOL_GPL vmlinux 0x9eac291c crypto_ahash_type +EXPORT_SYMBOL_GPL vmlinux 0x9ebff902 start_thread +EXPORT_SYMBOL_GPL vmlinux 0x9ecdce45 rhashtable_insert_rehash +EXPORT_SYMBOL_GPL vmlinux 0x9ed554b3 unregister_keyboard_notifier +EXPORT_SYMBOL_GPL vmlinux 0x9ef082ea ip6_local_out +EXPORT_SYMBOL_GPL vmlinux 0x9f05b2f8 spi_async +EXPORT_SYMBOL_GPL vmlinux 0x9f099cf6 x509_get_sig_params +EXPORT_SYMBOL_GPL vmlinux 0x9f09eeed crypto_lookup_aead +EXPORT_SYMBOL_GPL vmlinux 0x9f12905e devm_kmemdup +EXPORT_SYMBOL_GPL vmlinux 0x9f1b8cf6 crypto_ahash_walk_first +EXPORT_SYMBOL_GPL vmlinux 0x9f394fcb device_remove_file +EXPORT_SYMBOL_GPL vmlinux 0x9f419aca dev_pm_qos_hide_latency_limit +EXPORT_SYMBOL_GPL vmlinux 0x9f5766aa kobject_rename +EXPORT_SYMBOL_GPL vmlinux 0x9f800126 regmap_update_bits +EXPORT_SYMBOL_GPL vmlinux 0x9f9d69b5 clockevent_delta2ns +EXPORT_SYMBOL_GPL vmlinux 0x9fac11d2 rio_get_asm +EXPORT_SYMBOL_GPL vmlinux 0x9fce80db fb_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x9fd146db seq_open_net +EXPORT_SYMBOL_GPL vmlinux 0x9fe939e1 mpi_powm +EXPORT_SYMBOL_GPL vmlinux 0x9ffe7586 dma_buf_unmap_attachment +EXPORT_SYMBOL_GPL vmlinux 0xa01a3110 devm_rtc_device_register +EXPORT_SYMBOL_GPL vmlinux 0xa0208e02 irq_set_affinity_hint +EXPORT_SYMBOL_GPL vmlinux 0xa043103c ip6_local_out_sk +EXPORT_SYMBOL_GPL vmlinux 0xa064de15 inet6_destroy_sock +EXPORT_SYMBOL_GPL vmlinux 0xa06f7132 phy_optional_get +EXPORT_SYMBOL_GPL vmlinux 0xa0731019 serial8250_request_dma +EXPORT_SYMBOL_GPL vmlinux 0xa0792225 pinctrl_dev_get_devname +EXPORT_SYMBOL_GPL vmlinux 0xa0879414 dma_buf_map_attachment +EXPORT_SYMBOL_GPL vmlinux 0xa091d10d fwnode_property_present +EXPORT_SYMBOL_GPL vmlinux 0xa096b662 crypto_unregister_instance +EXPORT_SYMBOL_GPL vmlinux 0xa0abdebd usb_match_one_id +EXPORT_SYMBOL_GPL vmlinux 0xa0c70e25 nl_table_lock +EXPORT_SYMBOL_GPL vmlinux 0xa0d3b424 key_type_user +EXPORT_SYMBOL_GPL vmlinux 0xa0d5eca3 tty_buffer_request_room +EXPORT_SYMBOL_GPL vmlinux 0xa0df29e0 sata_pmp_error_handler +EXPORT_SYMBOL_GPL vmlinux 0xa102cf96 debugfs_create_atomic_t +EXPORT_SYMBOL_GPL vmlinux 0xa11216be xen_store_domain_type +EXPORT_SYMBOL_GPL vmlinux 0xa1167dc4 clk_divider_ops +EXPORT_SYMBOL_GPL vmlinux 0xa11b55b2 xen_start_info +EXPORT_SYMBOL_GPL vmlinux 0xa128596a rio_get_comptag +EXPORT_SYMBOL_GPL vmlinux 0xa14a1817 trace_seq_bitmask +EXPORT_SYMBOL_GPL vmlinux 0xa156a1f2 erst_get_record_id_end +EXPORT_SYMBOL_GPL vmlinux 0xa15be34a usb_mon_register +EXPORT_SYMBOL_GPL vmlinux 0xa1782bb4 splice_to_pipe +EXPORT_SYMBOL_GPL vmlinux 0xa18d58c0 regmap_write +EXPORT_SYMBOL_GPL vmlinux 0xa18f9433 mpi_read_buffer +EXPORT_SYMBOL_GPL vmlinux 0xa195e32e skb_splice_bits +EXPORT_SYMBOL_GPL vmlinux 0xa1bd7822 __tracepoint_block_bio_complete +EXPORT_SYMBOL_GPL vmlinux 0xa1ce97cf __online_page_increment_counters +EXPORT_SYMBOL_GPL vmlinux 0xa1d9b81a crypto_alg_mod_lookup +EXPORT_SYMBOL_GPL vmlinux 0xa1db43d3 queue_kthread_work +EXPORT_SYMBOL_GPL vmlinux 0xa1ed9c32 sock_gen_put +EXPORT_SYMBOL_GPL vmlinux 0xa1f7392b root_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa1f79553 xen_create_contiguous_region +EXPORT_SYMBOL_GPL vmlinux 0xa1fb3ba4 udp4_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0xa1fcdda0 da9055_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0xa21a3910 vfs_removexattr +EXPORT_SYMBOL_GPL vmlinux 0xa22a29f1 regmap_get_max_register +EXPORT_SYMBOL_GPL vmlinux 0xa2411403 extcon_dev_register +EXPORT_SYMBOL_GPL vmlinux 0xa24277e1 xfrm_audit_state_notfound_simple +EXPORT_SYMBOL_GPL vmlinux 0xa264b716 hwmon_device_register_with_groups +EXPORT_SYMBOL_GPL vmlinux 0xa26d9b4f workqueue_congested +EXPORT_SYMBOL_GPL vmlinux 0xa2859277 bd_link_disk_holder +EXPORT_SYMBOL_GPL vmlinux 0xa2a0b03b devm_acpi_dma_controller_register +EXPORT_SYMBOL_GPL vmlinux 0xa2b9c993 clk_register_fixed_factor +EXPORT_SYMBOL_GPL vmlinux 0xa2bafa40 interval_tree_insert +EXPORT_SYMBOL_GPL vmlinux 0xa2e444a5 irq_domain_remove +EXPORT_SYMBOL_GPL vmlinux 0xa2fb4b92 cpufreq_frequency_table_target +EXPORT_SYMBOL_GPL vmlinux 0xa319ecc7 extcon_dev_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa32f77d9 gov_queue_work +EXPORT_SYMBOL_GPL vmlinux 0xa3337a8d pcc_mbox_free_channel +EXPORT_SYMBOL_GPL vmlinux 0xa353fffc xenbus_rm +EXPORT_SYMBOL_GPL vmlinux 0xa373755c rhashtable_walk_exit +EXPORT_SYMBOL_GPL vmlinux 0xa38602cd drain_workqueue +EXPORT_SYMBOL_GPL vmlinux 0xa389a49a profile_event_register +EXPORT_SYMBOL_GPL vmlinux 0xa399f38a shash_ahash_digest +EXPORT_SYMBOL_GPL vmlinux 0xa3a04602 btree_geo64 +EXPORT_SYMBOL_GPL vmlinux 0xa3b958ce reset_hung_task_detector +EXPORT_SYMBOL_GPL vmlinux 0xa3e7c113 ring_buffer_iter_peek +EXPORT_SYMBOL_GPL vmlinux 0xa40c7738 single_release_net +EXPORT_SYMBOL_GPL vmlinux 0xa41065f7 ata_port_wait_eh +EXPORT_SYMBOL_GPL vmlinux 0xa4138c0f da903x_write +EXPORT_SYMBOL_GPL vmlinux 0xa4158787 agp_remove_bridge +EXPORT_SYMBOL_GPL vmlinux 0xa41e8b3f pm_generic_resume_noirq +EXPORT_SYMBOL_GPL vmlinux 0xa424bff2 netdev_rx_handler_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa42c67ca kobject_uevent_env +EXPORT_SYMBOL_GPL vmlinux 0xa4353ed3 synchronize_srcu_expedited +EXPORT_SYMBOL_GPL vmlinux 0xa452c297 hpet_mask_rtc_irq_bit +EXPORT_SYMBOL_GPL vmlinux 0xa452f2a4 xen_pirq_from_irq +EXPORT_SYMBOL_GPL vmlinux 0xa454c948 platform_add_devices +EXPORT_SYMBOL_GPL vmlinux 0xa466de38 acpi_processor_ffh_cstate_enter +EXPORT_SYMBOL_GPL vmlinux 0xa48196c8 kdb_poll_idx +EXPORT_SYMBOL_GPL vmlinux 0xa4972d3b platform_device_register_full +EXPORT_SYMBOL_GPL vmlinux 0xa4a20985 sdio_claim_host +EXPORT_SYMBOL_GPL vmlinux 0xa4c83dc5 led_trigger_remove +EXPORT_SYMBOL_GPL vmlinux 0xa4d3d0bb wakeup_source_destroy +EXPORT_SYMBOL_GPL vmlinux 0xa4db630f sdhci_pci_o2_probe_slot +EXPORT_SYMBOL_GPL vmlinux 0xa4f55a81 debugfs_create_file_size +EXPORT_SYMBOL_GPL vmlinux 0xa5001957 rtnl_register +EXPORT_SYMBOL_GPL vmlinux 0xa50f7b4c regmap_attach_dev +EXPORT_SYMBOL_GPL vmlinux 0xa52e33d1 md_new_event +EXPORT_SYMBOL_GPL vmlinux 0xa59dc9af usb_driver_set_configuration +EXPORT_SYMBOL_GPL vmlinux 0xa5c6a26f dax_truncate_page +EXPORT_SYMBOL_GPL vmlinux 0xa5c9705f __online_page_free +EXPORT_SYMBOL_GPL vmlinux 0xa5e29762 flush_kthread_work +EXPORT_SYMBOL_GPL vmlinux 0xa5e407e4 wm5110_aod +EXPORT_SYMBOL_GPL vmlinux 0xa5efbf4c async_synchronize_full +EXPORT_SYMBOL_GPL vmlinux 0xa611f0a8 hrtimer_forward +EXPORT_SYMBOL_GPL vmlinux 0xa625110d kmsg_dump_rewind +EXPORT_SYMBOL_GPL vmlinux 0xa62701f8 __get_user_pages_fast +EXPORT_SYMBOL_GPL vmlinux 0xa627cc29 fpu__save +EXPORT_SYMBOL_GPL vmlinux 0xa62892c6 efivar_sysfs_list +EXPORT_SYMBOL_GPL vmlinux 0xa6661f36 regmap_check_range_table +EXPORT_SYMBOL_GPL vmlinux 0xa66cb9f0 dma_buf_end_cpu_access +EXPORT_SYMBOL_GPL vmlinux 0xa6afcbb3 gpiod_set_raw_value +EXPORT_SYMBOL_GPL vmlinux 0xa6b21ef2 dpm_suspend_end +EXPORT_SYMBOL_GPL vmlinux 0xa6d6c0d9 iommu_domain_free +EXPORT_SYMBOL_GPL vmlinux 0xa6e1a69d kick_all_cpus_sync +EXPORT_SYMBOL_GPL vmlinux 0xa6f39e4c pciserial_init_ports +EXPORT_SYMBOL_GPL vmlinux 0xa71e1784 tty_port_register_device_attr +EXPORT_SYMBOL_GPL vmlinux 0xa7314efb __fsnotify_inode_delete +EXPORT_SYMBOL_GPL vmlinux 0xa75312bc call_rcu_sched +EXPORT_SYMBOL_GPL vmlinux 0xa7699476 sdio_writel +EXPORT_SYMBOL_GPL vmlinux 0xa76a26a8 device_destroy +EXPORT_SYMBOL_GPL vmlinux 0xa78e4eed fat_free_clusters +EXPORT_SYMBOL_GPL vmlinux 0xa7a0124c pci_common_swizzle +EXPORT_SYMBOL_GPL vmlinux 0xa7c4b366 regulator_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xa7e13a6a clk_mux_ro_ops +EXPORT_SYMBOL_GPL vmlinux 0xa801b359 efivar_entry_iter_begin +EXPORT_SYMBOL_GPL vmlinux 0xa829aec6 i2c_new_dummy +EXPORT_SYMBOL_GPL vmlinux 0xa83b5034 __clk_mux_determine_rate_closest +EXPORT_SYMBOL_GPL vmlinux 0xa851973a raw_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xa86694e3 hvc_alloc +EXPORT_SYMBOL_GPL vmlinux 0xa884e511 tty_buffer_space_avail +EXPORT_SYMBOL_GPL vmlinux 0xa8b76a68 timecounter_cyc2time +EXPORT_SYMBOL_GPL vmlinux 0xa9126bff hpet_set_rtc_irq_bit +EXPORT_SYMBOL_GPL vmlinux 0xa929250a ata_pci_device_resume +EXPORT_SYMBOL_GPL vmlinux 0xa9320d27 ktime_get_seconds +EXPORT_SYMBOL_GPL vmlinux 0xa980af16 RSA_public_key_algorithm +EXPORT_SYMBOL_GPL vmlinux 0xa9872d11 cpufreq_register_driver +EXPORT_SYMBOL_GPL vmlinux 0xa9a2cfa6 sdio_get_host_pm_caps +EXPORT_SYMBOL_GPL vmlinux 0xa9a485d9 wm8997_aod +EXPORT_SYMBOL_GPL vmlinux 0xa9c66b58 devm_regulator_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xa9d41d5b __irq_domain_add +EXPORT_SYMBOL_GPL vmlinux 0xa9da8e66 devm_regulator_bulk_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0xa9e18049 task_handoff_unregister +EXPORT_SYMBOL_GPL vmlinux 0xaa06f3c6 fat_dir_empty +EXPORT_SYMBOL_GPL vmlinux 0xaa0a03a0 virtio_check_driver_offered_feature +EXPORT_SYMBOL_GPL vmlinux 0xaa145d6d bus_set_iommu +EXPORT_SYMBOL_GPL vmlinux 0xaa192f56 kobj_sysfs_ops +EXPORT_SYMBOL_GPL vmlinux 0xaa2a72bf __iowrite64_copy +EXPORT_SYMBOL_GPL vmlinux 0xaa3ef751 rdev_clear_badblocks +EXPORT_SYMBOL_GPL vmlinux 0xaa413042 max8997_update_reg +EXPORT_SYMBOL_GPL vmlinux 0xaa52d46e dma_buf_detach +EXPORT_SYMBOL_GPL vmlinux 0xaa5d9490 usb_submit_urb +EXPORT_SYMBOL_GPL vmlinux 0xaa5eeeda mbox_client_peek_data +EXPORT_SYMBOL_GPL vmlinux 0xaa6a0c6c fixed_phy_set_link_update +EXPORT_SYMBOL_GPL vmlinux 0xaa6f7863 dm_accept_partial_bio +EXPORT_SYMBOL_GPL vmlinux 0xaa74309e rtc_read_alarm +EXPORT_SYMBOL_GPL vmlinux 0xaa744cfd kernfs_find_and_get_ns +EXPORT_SYMBOL_GPL vmlinux 0xaa81eb5c aead_geniv_init +EXPORT_SYMBOL_GPL vmlinux 0xaa83eb7c pinctrl_pm_select_sleep_state +EXPORT_SYMBOL_GPL vmlinux 0xaaa918c9 ftrace_dump +EXPORT_SYMBOL_GPL vmlinux 0xaaf16ff2 iommu_map +EXPORT_SYMBOL_GPL vmlinux 0xaaf23ce2 subsys_dev_iter_next +EXPORT_SYMBOL_GPL vmlinux 0xab01acbe gnttab_request_free_callback +EXPORT_SYMBOL_GPL vmlinux 0xab1e0e93 hv_setup_kexec_handler +EXPORT_SYMBOL_GPL vmlinux 0xab29ad96 cpuidle_disable_device +EXPORT_SYMBOL_GPL vmlinux 0xab2d5f94 rdev_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0xab4aae63 crypto_remove_spawns +EXPORT_SYMBOL_GPL vmlinux 0xab5a5de4 fixed_phy_del +EXPORT_SYMBOL_GPL vmlinux 0xab60269e component_master_del +EXPORT_SYMBOL_GPL vmlinux 0xab620f7e i2c_adapter_type +EXPORT_SYMBOL_GPL vmlinux 0xab6babaf pm_qos_request +EXPORT_SYMBOL_GPL vmlinux 0xab7b627e bio_clone_mddev +EXPORT_SYMBOL_GPL vmlinux 0xab8221e8 regmap_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0xab8a0f39 usb_get_hcd +EXPORT_SYMBOL_GPL vmlinux 0xab945a16 __iowrite32_copy +EXPORT_SYMBOL_GPL vmlinux 0xaba6c6fe blk_queue_flush_queueable +EXPORT_SYMBOL_GPL vmlinux 0xabba86ed disk_map_sector_rcu +EXPORT_SYMBOL_GPL vmlinux 0xabbebb54 ohci_setup +EXPORT_SYMBOL_GPL vmlinux 0xabc640f3 list_lru_isolate +EXPORT_SYMBOL_GPL vmlinux 0xabc672e6 driver_register +EXPORT_SYMBOL_GPL vmlinux 0xabc7a535 ata_sff_queue_pio_task +EXPORT_SYMBOL_GPL vmlinux 0xabd595c4 regulator_bulk_enable +EXPORT_SYMBOL_GPL vmlinux 0xabe6a6f7 blk_execute_rq_nowait +EXPORT_SYMBOL_GPL vmlinux 0xac18ef63 wakeup_source_add +EXPORT_SYMBOL_GPL vmlinux 0xac477d8a user_preparse +EXPORT_SYMBOL_GPL vmlinux 0xac688698 bus_register +EXPORT_SYMBOL_GPL vmlinux 0xac7fd158 rio_route_add_entry +EXPORT_SYMBOL_GPL vmlinux 0xac80fba4 spi_get_next_queued_message +EXPORT_SYMBOL_GPL vmlinux 0xac8cc981 phy_power_on +EXPORT_SYMBOL_GPL vmlinux 0xac9ce195 kvm_async_pf_task_wait +EXPORT_SYMBOL_GPL vmlinux 0xacafa8e7 vector_used_by_percpu_irq +EXPORT_SYMBOL_GPL vmlinux 0xacbdd1fc devm_regmap_field_alloc +EXPORT_SYMBOL_GPL vmlinux 0xace1de41 ptp_classify_raw +EXPORT_SYMBOL_GPL vmlinux 0xace5c0fc usb_bus_list +EXPORT_SYMBOL_GPL vmlinux 0xacf881e7 register_ftrace_function +EXPORT_SYMBOL_GPL vmlinux 0xad0978b3 blkcg_policy_unregister +EXPORT_SYMBOL_GPL vmlinux 0xad1c4f25 ata_sas_sync_probe +EXPORT_SYMBOL_GPL vmlinux 0xad207d6a adp5520_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0xad320504 xen_swiotlb_sync_single_for_cpu +EXPORT_SYMBOL_GPL vmlinux 0xad54fc2b nd_blk_region_set_provider_data +EXPORT_SYMBOL_GPL vmlinux 0xad620ea2 fat_detach +EXPORT_SYMBOL_GPL vmlinux 0xad8d8ab0 xen_physdev_op_compat +EXPORT_SYMBOL_GPL vmlinux 0xad980e75 ip_tunnel_get_stats64 +EXPORT_SYMBOL_GPL vmlinux 0xadc785ec kgdb_register_io_module +EXPORT_SYMBOL_GPL vmlinux 0xade0959f acpi_dev_get_property_reference +EXPORT_SYMBOL_GPL vmlinux 0xadf6aa4d tpm_pcr_read +EXPORT_SYMBOL_GPL vmlinux 0xae0825a2 rhashtable_free_and_destroy +EXPORT_SYMBOL_GPL vmlinux 0xae175382 rio_release_inb_mbox +EXPORT_SYMBOL_GPL vmlinux 0xae1f5898 blk_set_queue_dying +EXPORT_SYMBOL_GPL vmlinux 0xae28a844 __lock_page_killable +EXPORT_SYMBOL_GPL vmlinux 0xae3979dd i2c_probe_func_quick_read +EXPORT_SYMBOL_GPL vmlinux 0xae5087e8 ata_sas_port_resume +EXPORT_SYMBOL_GPL vmlinux 0xae69b1c1 usermodehelper_read_unlock +EXPORT_SYMBOL_GPL vmlinux 0xae7193f4 need_load_eval +EXPORT_SYMBOL_GPL vmlinux 0xae7c231d mpi_cmp +EXPORT_SYMBOL_GPL vmlinux 0xaeaf2c70 kset_create_and_add +EXPORT_SYMBOL_GPL vmlinux 0xaeceaecf virtqueue_get_avail +EXPORT_SYMBOL_GPL vmlinux 0xaed302a5 device_initialize +EXPORT_SYMBOL_GPL vmlinux 0xaee481a8 regmap_raw_write +EXPORT_SYMBOL_GPL vmlinux 0xaf0490e7 arizona_clk32k_enable +EXPORT_SYMBOL_GPL vmlinux 0xaf20cc68 ata_dummy_port_ops +EXPORT_SYMBOL_GPL vmlinux 0xaf2fa0a4 __rio_local_write_config_32 +EXPORT_SYMBOL_GPL vmlinux 0xaf2fb83d xen_remap_domain_mfn_range +EXPORT_SYMBOL_GPL vmlinux 0xaf4cd6d3 acpi_os_map_memory +EXPORT_SYMBOL_GPL vmlinux 0xaf51f17f tpm2_calc_ordinal_duration +EXPORT_SYMBOL_GPL vmlinux 0xaf595e31 spi_get_device_id +EXPORT_SYMBOL_GPL vmlinux 0xaf6cc7c3 page_cache_async_readahead +EXPORT_SYMBOL_GPL vmlinux 0xaf9439db leds_list_lock +EXPORT_SYMBOL_GPL vmlinux 0xafa8b476 pci_store_saved_state +EXPORT_SYMBOL_GPL vmlinux 0xafab2aea pci_num_vf +EXPORT_SYMBOL_GPL vmlinux 0xafb4e056 md_rdev_init +EXPORT_SYMBOL_GPL vmlinux 0xafc4baea led_trigger_unregister_simple +EXPORT_SYMBOL_GPL vmlinux 0xafd57222 dm_get_rq_mapinfo +EXPORT_SYMBOL_GPL vmlinux 0xafedb170 ata_dev_next +EXPORT_SYMBOL_GPL vmlinux 0xb0184b53 ata_sff_drain_fifo +EXPORT_SYMBOL_GPL vmlinux 0xb02ac411 register_xenstore_notifier +EXPORT_SYMBOL_GPL vmlinux 0xb0307101 usb_acpi_power_manageable +EXPORT_SYMBOL_GPL vmlinux 0xb0400c6b add_timer_on +EXPORT_SYMBOL_GPL vmlinux 0xb045fb2c acpi_is_pnp_device +EXPORT_SYMBOL_GPL vmlinux 0xb04d6a90 blk_queue_rq_timed_out +EXPORT_SYMBOL_GPL vmlinux 0xb0625950 iommu_domain_window_disable +EXPORT_SYMBOL_GPL vmlinux 0xb07145fc pm_generic_runtime_resume +EXPORT_SYMBOL_GPL vmlinux 0xb077e70a clk_unprepare +EXPORT_SYMBOL_GPL vmlinux 0xb094a0e6 fat_alloc_new_dir +EXPORT_SYMBOL_GPL vmlinux 0xb0a0c343 blkcipher_walk_virt +EXPORT_SYMBOL_GPL vmlinux 0xb0ae07eb uhci_check_and_reset_hc +EXPORT_SYMBOL_GPL vmlinux 0xb0b85f47 ring_buffer_iter_reset +EXPORT_SYMBOL_GPL vmlinux 0xb0cb8832 preempt_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0xb0dfca7a clone_private_mount +EXPORT_SYMBOL_GPL vmlinux 0xb0f234e4 ata_eh_freeze_port +EXPORT_SYMBOL_GPL vmlinux 0xb0fd1d90 of_pwm_get +EXPORT_SYMBOL_GPL vmlinux 0xb104140a fuse_get_req_for_background +EXPORT_SYMBOL_GPL vmlinux 0xb12ed72b arizona_request_irq +EXPORT_SYMBOL_GPL vmlinux 0xb13451b6 xfrm_audit_state_delete +EXPORT_SYMBOL_GPL vmlinux 0xb137df11 irq_generic_chip_ops +EXPORT_SYMBOL_GPL vmlinux 0xb140d14c ring_buffer_read +EXPORT_SYMBOL_GPL vmlinux 0xb1425b32 dm_table_add_target_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xb1503600 ata_sas_async_probe +EXPORT_SYMBOL_GPL vmlinux 0xb15b32ac gpiod_direction_output +EXPORT_SYMBOL_GPL vmlinux 0xb172ffac efivars_sysfs_init +EXPORT_SYMBOL_GPL vmlinux 0xb17b1fb6 crypto_alloc_shash +EXPORT_SYMBOL_GPL vmlinux 0xb18429eb suspend_device_irqs +EXPORT_SYMBOL_GPL vmlinux 0xb19a9252 arizona_set_irq_wake +EXPORT_SYMBOL_GPL vmlinux 0xb1a5f2fe usb_anchor_empty +EXPORT_SYMBOL_GPL vmlinux 0xb1acbcce rcu_barrier_sched +EXPORT_SYMBOL_GPL vmlinux 0xb1bed25d dpm_resume_start +EXPORT_SYMBOL_GPL vmlinux 0xb1c0c1c2 async_schedule_domain +EXPORT_SYMBOL_GPL vmlinux 0xb1c92da2 devfreq_event_add_edev +EXPORT_SYMBOL_GPL vmlinux 0xb1deb238 hrtimer_init +EXPORT_SYMBOL_GPL vmlinux 0xb1e25684 __trace_bputs +EXPORT_SYMBOL_GPL vmlinux 0xb1eaf8c3 ata_cable_sata +EXPORT_SYMBOL_GPL vmlinux 0xb2210d64 reset_control_deassert +EXPORT_SYMBOL_GPL vmlinux 0xb23d6627 acpiphp_unregister_attention +EXPORT_SYMBOL_GPL vmlinux 0xb26263fc extcon_register_interest +EXPORT_SYMBOL_GPL vmlinux 0xb26a1add elfcorehdr_addr +EXPORT_SYMBOL_GPL vmlinux 0xb28ad23b rio_set_port_lockout +EXPORT_SYMBOL_GPL vmlinux 0xb2997a45 fb_deferred_io_open +EXPORT_SYMBOL_GPL vmlinux 0xb2cc9f4d ipv6_opt_accepted +EXPORT_SYMBOL_GPL vmlinux 0xb2e261b0 da903x_writes +EXPORT_SYMBOL_GPL vmlinux 0xb2e764e8 suspend_valid_only_mem +EXPORT_SYMBOL_GPL vmlinux 0xb2eb63e4 fuse_conn_init +EXPORT_SYMBOL_GPL vmlinux 0xb304d737 handle_simple_irq +EXPORT_SYMBOL_GPL vmlinux 0xb314627a scsi_autopm_get_device +EXPORT_SYMBOL_GPL vmlinux 0xb3253ed9 hpet_rtc_timer_init +EXPORT_SYMBOL_GPL vmlinux 0xb337e3be skb_zerocopy +EXPORT_SYMBOL_GPL vmlinux 0xb3518871 devfreq_event_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0xb356613c xen_swiotlb_unmap_page +EXPORT_SYMBOL_GPL vmlinux 0xb35684ff platform_device_add_data +EXPORT_SYMBOL_GPL vmlinux 0xb3592f12 skcipher_geniv_free +EXPORT_SYMBOL_GPL vmlinux 0xb3727e56 rtc_alarm_irq_enable +EXPORT_SYMBOL_GPL vmlinux 0xb382dd69 sdio_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0xb39f6648 ata_sff_freeze +EXPORT_SYMBOL_GPL vmlinux 0xb3a5a5c5 blk_abort_request +EXPORT_SYMBOL_GPL vmlinux 0xb3dacbcf regmap_raw_read +EXPORT_SYMBOL_GPL vmlinux 0xb4557e67 __wake_up_sync_key +EXPORT_SYMBOL_GPL vmlinux 0xb45cf6e7 spi_register_master +EXPORT_SYMBOL_GPL vmlinux 0xb46ed5ae pinctrl_put +EXPORT_SYMBOL_GPL vmlinux 0xb491fe40 __mmc_switch +EXPORT_SYMBOL_GPL vmlinux 0xb499d49f rtc_class_open +EXPORT_SYMBOL_GPL vmlinux 0xb4b97c90 pvclock_gtod_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xb4bb685d regmap_init_i2c +EXPORT_SYMBOL_GPL vmlinux 0xb4bd18c0 ehci_hub_control +EXPORT_SYMBOL_GPL vmlinux 0xb4e14553 gnttab_query_foreign_access +EXPORT_SYMBOL_GPL vmlinux 0xb4e16963 crypto_aead_reqsize +EXPORT_SYMBOL_GPL vmlinux 0xb4ea7cf7 kgdb_connected +EXPORT_SYMBOL_GPL vmlinux 0xb4ec439b fat_add_entries +EXPORT_SYMBOL_GPL vmlinux 0xb4f222fa sock_update_netprioidx +EXPORT_SYMBOL_GPL vmlinux 0xb5018a0e devm_regulator_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0xb50a2acf rhashtable_walk_init +EXPORT_SYMBOL_GPL vmlinux 0xb51fbd64 edac_op_state +EXPORT_SYMBOL_GPL vmlinux 0xb53620d1 pci_vpd_find_info_keyword +EXPORT_SYMBOL_GPL vmlinux 0xb53ce2d3 ata_dev_set_feature +EXPORT_SYMBOL_GPL vmlinux 0xb5492d4c ata_cable_80wire +EXPORT_SYMBOL_GPL vmlinux 0xb54b7e7f debugfs_rename +EXPORT_SYMBOL_GPL vmlinux 0xb5717acd __ip_route_output_key +EXPORT_SYMBOL_GPL vmlinux 0xb58dcfa2 synchronize_sched_expedited +EXPORT_SYMBOL_GPL vmlinux 0xb5a0e11e lpddr2_jedec_addressing_table +EXPORT_SYMBOL_GPL vmlinux 0xb5e896fb tpm_get_random +EXPORT_SYMBOL_GPL vmlinux 0xb5f17edf perf_register_guest_info_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xb612260d blkcg_deactivate_policy +EXPORT_SYMBOL_GPL vmlinux 0xb6142d0e hrtimer_init_sleeper +EXPORT_SYMBOL_GPL vmlinux 0xb6230f1f gnttab_grant_foreign_access +EXPORT_SYMBOL_GPL vmlinux 0xb6258296 device_move +EXPORT_SYMBOL_GPL vmlinux 0xb625fc61 ftrace_set_filter_ip +EXPORT_SYMBOL_GPL vmlinux 0xb6261484 register_die_notifier +EXPORT_SYMBOL_GPL vmlinux 0xb62980a7 swiotlb_unmap_page +EXPORT_SYMBOL_GPL vmlinux 0xb66421b2 acpi_str_to_uuid +EXPORT_SYMBOL_GPL vmlinux 0xb67bd830 ata_bmdma_irq_clear +EXPORT_SYMBOL_GPL vmlinux 0xb67c64fd __tracepoint_kfree_skb +EXPORT_SYMBOL_GPL vmlinux 0xb688402a shash_free_instance +EXPORT_SYMBOL_GPL vmlinux 0xb6aeb661 ata_id_c_string +EXPORT_SYMBOL_GPL vmlinux 0xb6bc49a9 __supported_pte_mask +EXPORT_SYMBOL_GPL vmlinux 0xb6c331ca pinctrl_utils_add_map_configs +EXPORT_SYMBOL_GPL vmlinux 0xb6e6d99d clk_disable +EXPORT_SYMBOL_GPL vmlinux 0xb6eef627 gpiod_unexport +EXPORT_SYMBOL_GPL vmlinux 0xb6f2c578 __tracepoint_unmap +EXPORT_SYMBOL_GPL vmlinux 0xb6f44ffa regmap_field_write +EXPORT_SYMBOL_GPL vmlinux 0xb6fe4ed4 user_free_preparse +EXPORT_SYMBOL_GPL vmlinux 0xb70147a8 vring_new_virtqueue +EXPORT_SYMBOL_GPL vmlinux 0xb718f2f9 sfi_table_parse +EXPORT_SYMBOL_GPL vmlinux 0xb71a3065 xen_unmap_domain_mfn_range +EXPORT_SYMBOL_GPL vmlinux 0xb7301567 unix_outq_len +EXPORT_SYMBOL_GPL vmlinux 0xb7307af7 ata_link_offline +EXPORT_SYMBOL_GPL vmlinux 0xb7329c06 clk_set_phase +EXPORT_SYMBOL_GPL vmlinux 0xb73be0ab tty_port_tty_wakeup +EXPORT_SYMBOL_GPL vmlinux 0xb775f38b led_trigger_register +EXPORT_SYMBOL_GPL vmlinux 0xb783a6c6 da903x_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xb791b126 rtnl_link_unregister +EXPORT_SYMBOL_GPL vmlinux 0xb79ea685 virtio_break_device +EXPORT_SYMBOL_GPL vmlinux 0xb79f11ba usb_unlink_urb +EXPORT_SYMBOL_GPL vmlinux 0xb7abe8ca wm831x_reg_unlock +EXPORT_SYMBOL_GPL vmlinux 0xb7b5ae56 mmu_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0xb7b8e1c8 crypto_enqueue_request +EXPORT_SYMBOL_GPL vmlinux 0xb7ce3f30 usb_disable_xhci_ports +EXPORT_SYMBOL_GPL vmlinux 0xb7cf2eb0 thermal_zone_unbind_cooling_device +EXPORT_SYMBOL_GPL vmlinux 0xb7d7c12e hpet_set_alarm_time +EXPORT_SYMBOL_GPL vmlinux 0xb7e401c4 ata_host_suspend +EXPORT_SYMBOL_GPL vmlinux 0xb7f77027 rtc_tm_to_ktime +EXPORT_SYMBOL_GPL vmlinux 0xb7f78ff8 sysfs_add_file_to_group +EXPORT_SYMBOL_GPL vmlinux 0xb80de2cb ata_sas_port_destroy +EXPORT_SYMBOL_GPL vmlinux 0xb812352f crypto_shash_final +EXPORT_SYMBOL_GPL vmlinux 0xb852764d of_reset_control_get +EXPORT_SYMBOL_GPL vmlinux 0xb8540c86 fuse_dev_alloc +EXPORT_SYMBOL_GPL vmlinux 0xb87a2baf wm831x_reg_read +EXPORT_SYMBOL_GPL vmlinux 0xb8856a03 cpufreq_frequency_table_verify +EXPORT_SYMBOL_GPL vmlinux 0xb895df16 bio_associate_current +EXPORT_SYMBOL_GPL vmlinux 0xb8b2b1f7 mce_register_decode_chain +EXPORT_SYMBOL_GPL vmlinux 0xb8b434b5 phy_pm_runtime_get +EXPORT_SYMBOL_GPL vmlinux 0xb8c9ad8d xhci_init_driver +EXPORT_SYMBOL_GPL vmlinux 0xb8cd3a7f nf_logger_put +EXPORT_SYMBOL_GPL vmlinux 0xb8cdb02d ata_sas_queuecmd +EXPORT_SYMBOL_GPL vmlinux 0xb8d05535 device_for_each_child +EXPORT_SYMBOL_GPL vmlinux 0xb8de7931 __blk_put_request +EXPORT_SYMBOL_GPL vmlinux 0xb8e0359e pm_generic_suspend_noirq +EXPORT_SYMBOL_GPL vmlinux 0xb8e44dbe pci_generic_config_write32 +EXPORT_SYMBOL_GPL vmlinux 0xb903674c scatterwalk_map_and_copy +EXPORT_SYMBOL_GPL vmlinux 0xb90d76f6 crypto_alloc_ablkcipher +EXPORT_SYMBOL_GPL vmlinux 0xb9176155 asn1_ber_decoder +EXPORT_SYMBOL_GPL vmlinux 0xb92ddb18 sock_diag_unregister_inet_compat +EXPORT_SYMBOL_GPL vmlinux 0xb94c01f5 dev_pm_set_dedicated_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0xb94d115a pinctrl_get +EXPORT_SYMBOL_GPL vmlinux 0xb97b969c input_ff_upload +EXPORT_SYMBOL_GPL vmlinux 0xb99d5837 xenbus_read +EXPORT_SYMBOL_GPL vmlinux 0xb9b70f96 relay_reset +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 0xb9db3ffc blk_trace_startstop +EXPORT_SYMBOL_GPL vmlinux 0xb9f910c1 __blk_run_queue_uncond +EXPORT_SYMBOL_GPL vmlinux 0xba0a949b class_interface_register +EXPORT_SYMBOL_GPL vmlinux 0xba16fecd component_add +EXPORT_SYMBOL_GPL vmlinux 0xba19aa79 usb_phy_generic_register +EXPORT_SYMBOL_GPL vmlinux 0xba2389c3 ata_sff_data_xfer +EXPORT_SYMBOL_GPL vmlinux 0xba29bf56 gpiod_is_active_low +EXPORT_SYMBOL_GPL vmlinux 0xba2b7f64 cpufreq_generic_get +EXPORT_SYMBOL_GPL vmlinux 0xba3ce262 serial8250_get_port +EXPORT_SYMBOL_GPL vmlinux 0xba489401 xen_swiotlb_sync_sg_for_device +EXPORT_SYMBOL_GPL vmlinux 0xba73b934 tty_get_pgrp +EXPORT_SYMBOL_GPL vmlinux 0xba8929ea percpu_ref_reinit +EXPORT_SYMBOL_GPL vmlinux 0xba94c685 cper_estatus_check +EXPORT_SYMBOL_GPL vmlinux 0xba9dde80 debugfs_create_x32 +EXPORT_SYMBOL_GPL vmlinux 0xba9ec4ae ohci_suspend +EXPORT_SYMBOL_GPL vmlinux 0xbab9a9f0 maxim_charger_currents +EXPORT_SYMBOL_GPL vmlinux 0xbac2dd44 blocking_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0xbac339df md_do_sync +EXPORT_SYMBOL_GPL vmlinux 0xbaccff32 regulator_map_voltage_iterate +EXPORT_SYMBOL_GPL vmlinux 0xbae06e85 debugfs_create_u16 +EXPORT_SYMBOL_GPL vmlinux 0xbaf119ad devm_of_phy_provider_unregister +EXPORT_SYMBOL_GPL vmlinux 0xbaf6dd11 __pm_runtime_disable +EXPORT_SYMBOL_GPL vmlinux 0xbb038ce4 perf_unregister_guest_info_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xbb0ab47b debug_locks +EXPORT_SYMBOL_GPL vmlinux 0xbb0f9385 devres_get +EXPORT_SYMBOL_GPL vmlinux 0xbb12454b put_device +EXPORT_SYMBOL_GPL vmlinux 0xbb2b9a9b ata_std_sched_eh +EXPORT_SYMBOL_GPL vmlinux 0xbb315558 fat_search_long +EXPORT_SYMBOL_GPL vmlinux 0xbb3ebde1 rio_request_inb_dbell +EXPORT_SYMBOL_GPL vmlinux 0xbb44af4a __pm_runtime_resume +EXPORT_SYMBOL_GPL vmlinux 0xbb58b814 iomap_free +EXPORT_SYMBOL_GPL vmlinux 0xbb6f8cca xen_swiotlb_alloc_coherent +EXPORT_SYMBOL_GPL vmlinux 0xbb70a8e8 to_nd_blk_region +EXPORT_SYMBOL_GPL vmlinux 0xbb79da40 fib_rules_register +EXPORT_SYMBOL_GPL vmlinux 0xbb7cf9cb jump_label_rate_limit +EXPORT_SYMBOL_GPL vmlinux 0xbb7e07fd gpiod_get_raw_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0xbb8270f9 fat_attach +EXPORT_SYMBOL_GPL vmlinux 0xbb9e8805 pci_find_next_ht_capability +EXPORT_SYMBOL_GPL vmlinux 0xbbb98859 edid_info +EXPORT_SYMBOL_GPL vmlinux 0xbbb99c6b scsi_bus_type +EXPORT_SYMBOL_GPL vmlinux 0xbbc095e5 crypto_alloc_pcomp +EXPORT_SYMBOL_GPL vmlinux 0xbbd4f657 xen_pcpu_id +EXPORT_SYMBOL_GPL vmlinux 0xbbd5f6e7 rhashtable_destroy +EXPORT_SYMBOL_GPL vmlinux 0xbbd7dc4c dm_get_queue_limits +EXPORT_SYMBOL_GPL vmlinux 0xbbd81179 sdio_release_irq +EXPORT_SYMBOL_GPL vmlinux 0xbbe03898 fl6_merge_options +EXPORT_SYMBOL_GPL vmlinux 0xbbeb1386 simple_attr_read +EXPORT_SYMBOL_GPL vmlinux 0xbbebd967 kobject_move +EXPORT_SYMBOL_GPL vmlinux 0xbc12f372 percpu_ida_for_each_free +EXPORT_SYMBOL_GPL vmlinux 0xbc2a3415 bsg_request_fn +EXPORT_SYMBOL_GPL vmlinux 0xbc480fa7 perf_pmu_migrate_context +EXPORT_SYMBOL_GPL vmlinux 0xbc57263d sis_info133_for_sata +EXPORT_SYMBOL_GPL vmlinux 0xbc6b921a cpufreq_generic_frequency_table_verify +EXPORT_SYMBOL_GPL vmlinux 0xbc721df0 regulator_enable_regmap +EXPORT_SYMBOL_GPL vmlinux 0xbc9b87d5 trace_event_reg +EXPORT_SYMBOL_GPL vmlinux 0xbc9e1fcf security_inode_create +EXPORT_SYMBOL_GPL vmlinux 0xbca0201a sfi_mrtc_array +EXPORT_SYMBOL_GPL vmlinux 0xbcac6160 pm_qos_remove_notifier +EXPORT_SYMBOL_GPL vmlinux 0xbcb838a1 amd_flush_garts +EXPORT_SYMBOL_GPL vmlinux 0xbcbc57f4 sysfs_create_bin_file +EXPORT_SYMBOL_GPL vmlinux 0xbcbeb830 ping_seq_next +EXPORT_SYMBOL_GPL vmlinux 0xbccfd4d8 register_oldmem_pfn_is_ram +EXPORT_SYMBOL_GPL vmlinux 0xbcdd5b99 iommu_group_set_name +EXPORT_SYMBOL_GPL vmlinux 0xbd04e60b crypto_grab_aead +EXPORT_SYMBOL_GPL vmlinux 0xbd3da75f ata_bmdma_qc_issue +EXPORT_SYMBOL_GPL vmlinux 0xbd3fe1e3 disable_hardirq +EXPORT_SYMBOL_GPL vmlinux 0xbd4dfb8b nl_table +EXPORT_SYMBOL_GPL vmlinux 0xbd5cb8b9 ring_buffer_resize +EXPORT_SYMBOL_GPL vmlinux 0xbd673f72 usb_bus_list_lock +EXPORT_SYMBOL_GPL vmlinux 0xbd69ff38 kill_pid_info_as_cred +EXPORT_SYMBOL_GPL vmlinux 0xbd75de9e ata_do_eh +EXPORT_SYMBOL_GPL vmlinux 0xbd7b6485 blkcipher_aead_walk_virt_block +EXPORT_SYMBOL_GPL vmlinux 0xbd7e4aa8 usb_add_phy +EXPORT_SYMBOL_GPL vmlinux 0xbd86b127 usb_scuttle_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0xbd8f97d4 dpm_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0xbda5999d led_sysfs_disable +EXPORT_SYMBOL_GPL vmlinux 0xbda5c03c devres_release_group +EXPORT_SYMBOL_GPL vmlinux 0xbdac064f acpi_dma_simple_xlate +EXPORT_SYMBOL_GPL vmlinux 0xbdc702fe regulator_can_change_voltage +EXPORT_SYMBOL_GPL vmlinux 0xbdd295f0 trace_vprintk +EXPORT_SYMBOL_GPL vmlinux 0xbdd2f42a rcu_bh_force_quiescent_state +EXPORT_SYMBOL_GPL vmlinux 0xbdd5f10f apei_hest_parse +EXPORT_SYMBOL_GPL vmlinux 0xbdfb69a3 md_is_badblock +EXPORT_SYMBOL_GPL vmlinux 0xbe0a510e __inet_twsk_hashdance +EXPORT_SYMBOL_GPL vmlinux 0xbe15a7fa pci_get_hp_params +EXPORT_SYMBOL_GPL vmlinux 0xbe175035 __tracepoint_extlog_mem_event +EXPORT_SYMBOL_GPL vmlinux 0xbe1887e4 ata_unpack_xfermask +EXPORT_SYMBOL_GPL vmlinux 0xbe279c5c tty_init_termios +EXPORT_SYMBOL_GPL vmlinux 0xbe44f080 transport_destroy_device +EXPORT_SYMBOL_GPL vmlinux 0xbe4a206f __fsnotify_parent +EXPORT_SYMBOL_GPL vmlinux 0xbe687e88 wake_up_all_idle_cpus +EXPORT_SYMBOL_GPL vmlinux 0xbe6e9321 cpufreq_register_governor +EXPORT_SYMBOL_GPL vmlinux 0xbe80951c devfreq_event_reset_event +EXPORT_SYMBOL_GPL vmlinux 0xbe826d10 xen_swiotlb_dma_supported +EXPORT_SYMBOL_GPL vmlinux 0xbe8e2842 cpufreq_driver_target +EXPORT_SYMBOL_GPL vmlinux 0xbe9ef202 rtc_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xbea5ff1e static_key_initialized +EXPORT_SYMBOL_GPL vmlinux 0xbedb9734 crypto_grab_skcipher +EXPORT_SYMBOL_GPL vmlinux 0xbee21107 dm_internal_suspend_noflush +EXPORT_SYMBOL_GPL vmlinux 0xbefd23f9 pm_generic_restore_early +EXPORT_SYMBOL_GPL vmlinux 0xbeff795c ata_cable_40wire +EXPORT_SYMBOL_GPL vmlinux 0xbf041102 register_vt_notifier +EXPORT_SYMBOL_GPL vmlinux 0xbf0f42c6 tpm2_startup +EXPORT_SYMBOL_GPL vmlinux 0xbf1796fe cpuidle_register_driver +EXPORT_SYMBOL_GPL vmlinux 0xbf1c85ab sdio_readsb +EXPORT_SYMBOL_GPL vmlinux 0xbf44ccc2 __sock_recv_ts_and_drops +EXPORT_SYMBOL_GPL vmlinux 0xbf489ede sysfs_create_file_ns +EXPORT_SYMBOL_GPL vmlinux 0xbf4bdddb perf_trace_buf_prepare +EXPORT_SYMBOL_GPL vmlinux 0xbf61486c fuse_request_send_background +EXPORT_SYMBOL_GPL vmlinux 0xbf735a42 device_create_file +EXPORT_SYMBOL_GPL vmlinux 0xbf8869f4 rio_map_inb_region +EXPORT_SYMBOL_GPL vmlinux 0xbfabd7a4 dma_request_slave_channel_reason +EXPORT_SYMBOL_GPL vmlinux 0xbfb1be70 hv_setup_vmbus_irq +EXPORT_SYMBOL_GPL vmlinux 0xbfbc5434 pciserial_resume_ports +EXPORT_SYMBOL_GPL vmlinux 0xbfd10bb7 clk_register_mux_table +EXPORT_SYMBOL_GPL vmlinux 0xbfe3c6cc tcp_send_ack +EXPORT_SYMBOL_GPL vmlinux 0xbfe5616d tick_broadcast_oneshot_control +EXPORT_SYMBOL_GPL vmlinux 0xc00131cf visitor64 +EXPORT_SYMBOL_GPL vmlinux 0xc01e62f7 usb_unpoison_urb +EXPORT_SYMBOL_GPL vmlinux 0xc0279126 tcp_slow_start +EXPORT_SYMBOL_GPL vmlinux 0xc0321d39 phy_pm_runtime_put +EXPORT_SYMBOL_GPL vmlinux 0xc045c80c bio_trim +EXPORT_SYMBOL_GPL vmlinux 0xc08647ff ring_buffer_bytes_cpu +EXPORT_SYMBOL_GPL vmlinux 0xc0900fcf acpi_os_get_iomem +EXPORT_SYMBOL_GPL vmlinux 0xc0994d50 regulator_list_voltage +EXPORT_SYMBOL_GPL vmlinux 0xc0a79272 usb_put_phy +EXPORT_SYMBOL_GPL vmlinux 0xc0a96e14 rcu_gp_is_expedited +EXPORT_SYMBOL_GPL vmlinux 0xc0c2a10b crypto_register_ahash +EXPORT_SYMBOL_GPL vmlinux 0xc0d26387 kmsg_dump_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc0df8865 timerqueue_add +EXPORT_SYMBOL_GPL vmlinux 0xc0e75cec visitor128 +EXPORT_SYMBOL_GPL vmlinux 0xc101ddc4 irq_setup_alt_chip +EXPORT_SYMBOL_GPL vmlinux 0xc1096edd ping_seq_fops +EXPORT_SYMBOL_GPL vmlinux 0xc12e0ada srcu_batches_completed +EXPORT_SYMBOL_GPL vmlinux 0xc1367a99 usb_get_dev +EXPORT_SYMBOL_GPL vmlinux 0xc145630a crypto_shash_finup +EXPORT_SYMBOL_GPL vmlinux 0xc1527a3e __audit_inode_child +EXPORT_SYMBOL_GPL vmlinux 0xc163efa5 bus_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc164642e xenbus_otherend_changed +EXPORT_SYMBOL_GPL vmlinux 0xc169dfbb crypto_shash_digest +EXPORT_SYMBOL_GPL vmlinux 0xc16cb9e1 usb_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0xc16e2651 usb_gen_phy_init +EXPORT_SYMBOL_GPL vmlinux 0xc17515d7 usb_hcds_loaded +EXPORT_SYMBOL_GPL vmlinux 0xc18578ed process_srcu +EXPORT_SYMBOL_GPL vmlinux 0xc1866c81 blk_rq_check_limits +EXPORT_SYMBOL_GPL vmlinux 0xc18c3633 iommu_group_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0xc1a0d3a3 ip_build_and_send_pkt +EXPORT_SYMBOL_GPL vmlinux 0xc1aa0f7e shash_ahash_finup +EXPORT_SYMBOL_GPL vmlinux 0xc1ba07e8 scsi_eh_ready_devs +EXPORT_SYMBOL_GPL vmlinux 0xc1caca1d led_trigger_event +EXPORT_SYMBOL_GPL vmlinux 0xc1f5f47c power_supply_am_i_supplied +EXPORT_SYMBOL_GPL vmlinux 0xc216191e devfreq_event_get_edev_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0xc22a3091 vm_unmap_aliases +EXPORT_SYMBOL_GPL vmlinux 0xc239c4c5 xen_xlate_unmap_gfn_range +EXPORT_SYMBOL_GPL vmlinux 0xc2441b39 blk_queue_lld_busy +EXPORT_SYMBOL_GPL vmlinux 0xc247e8f6 ohci_hub_control +EXPORT_SYMBOL_GPL vmlinux 0xc25b8971 hv_remove_crash_handler +EXPORT_SYMBOL_GPL vmlinux 0xc26345d4 ip6_sk_redirect +EXPORT_SYMBOL_GPL vmlinux 0xc26351f8 bind_evtchn_to_irq +EXPORT_SYMBOL_GPL vmlinux 0xc280fb46 kdb_register +EXPORT_SYMBOL_GPL vmlinux 0xc287d96a kvm_set_posted_intr_wakeup_handler +EXPORT_SYMBOL_GPL vmlinux 0xc2889a67 regmap_irq_get_domain +EXPORT_SYMBOL_GPL vmlinux 0xc2b8b89e init_user_ns +EXPORT_SYMBOL_GPL vmlinux 0xc2e728dc ata_sff_queue_delayed_work +EXPORT_SYMBOL_GPL vmlinux 0xc2eca2fb ata_pci_remove_one +EXPORT_SYMBOL_GPL vmlinux 0xc2f6106b regulator_bulk_free +EXPORT_SYMBOL_GPL vmlinux 0xc30cfff1 power_supply_register +EXPORT_SYMBOL_GPL vmlinux 0xc341ae6d zs_map_object +EXPORT_SYMBOL_GPL vmlinux 0xc34cc1fb device_add_property_set +EXPORT_SYMBOL_GPL vmlinux 0xc371287c __mnt_drop_write +EXPORT_SYMBOL_GPL vmlinux 0xc37138d3 __mmu_notifier_invalidate_range_end +EXPORT_SYMBOL_GPL vmlinux 0xc37226a5 tpm_pcr_extend +EXPORT_SYMBOL_GPL vmlinux 0xc3994f53 pci_reset_function +EXPORT_SYMBOL_GPL vmlinux 0xc39d8230 pingv6_ops +EXPORT_SYMBOL_GPL vmlinux 0xc3d2140c ata_bmdma_port_start32 +EXPORT_SYMBOL_GPL vmlinux 0xc3d3cda6 pid_vnr +EXPORT_SYMBOL_GPL vmlinux 0xc3fd1141 sync_page_io +EXPORT_SYMBOL_GPL vmlinux 0xc4144288 phy_pm_runtime_put_sync +EXPORT_SYMBOL_GPL vmlinux 0xc428068d sata_deb_timing_long +EXPORT_SYMBOL_GPL vmlinux 0xc4449993 restore_online_page_callback +EXPORT_SYMBOL_GPL vmlinux 0xc454fc7b twl_get_type +EXPORT_SYMBOL_GPL vmlinux 0xc471c67a twl4030_audio_disable_resource +EXPORT_SYMBOL_GPL vmlinux 0xc47495a5 x509_request_asymmetric_key +EXPORT_SYMBOL_GPL vmlinux 0xc489ba6a sock_diag_put_meminfo +EXPORT_SYMBOL_GPL vmlinux 0xc48b7ccf ata_mode_string +EXPORT_SYMBOL_GPL vmlinux 0xc49af0b1 ata_noop_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0xc5397da6 xenbus_mkdir +EXPORT_SYMBOL_GPL vmlinux 0xc5428387 evm_inode_init_security +EXPORT_SYMBOL_GPL vmlinux 0xc542933a timecounter_read +EXPORT_SYMBOL_GPL vmlinux 0xc5527630 __dev_forward_skb +EXPORT_SYMBOL_GPL vmlinux 0xc5577f86 power_supply_get_by_name +EXPORT_SYMBOL_GPL vmlinux 0xc575c737 debug_locks_off +EXPORT_SYMBOL_GPL vmlinux 0xc5a06be6 usb_put_intf +EXPORT_SYMBOL_GPL vmlinux 0xc5c2f61f sk_clone_lock +EXPORT_SYMBOL_GPL vmlinux 0xc5c33824 usb_sg_wait +EXPORT_SYMBOL_GPL vmlinux 0xc5f31fab subsys_system_register +EXPORT_SYMBOL_GPL vmlinux 0xc60a4069 bus_find_device_by_name +EXPORT_SYMBOL_GPL vmlinux 0xc60ba14f regulator_map_voltage_linear +EXPORT_SYMBOL_GPL vmlinux 0xc611eabc unregister_kretprobes +EXPORT_SYMBOL_GPL vmlinux 0xc617f82c unregister_oom_notifier +EXPORT_SYMBOL_GPL vmlinux 0xc61921d2 pci_walk_bus +EXPORT_SYMBOL_GPL vmlinux 0xc624204b pci_generic_config_read32 +EXPORT_SYMBOL_GPL vmlinux 0xc62aec09 ipv4_sk_redirect +EXPORT_SYMBOL_GPL vmlinux 0xc63d847d ktime_get_mono_fast_ns +EXPORT_SYMBOL_GPL vmlinux 0xc64de197 fuse_get_req +EXPORT_SYMBOL_GPL vmlinux 0xc65b2e27 md_run +EXPORT_SYMBOL_GPL vmlinux 0xc65d3eed ring_buffer_entries_cpu +EXPORT_SYMBOL_GPL vmlinux 0xc66019cc xen_resume_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc66b77b1 iommu_group_set_iommudata +EXPORT_SYMBOL_GPL vmlinux 0xc69b7ee5 zs_destroy_pool +EXPORT_SYMBOL_GPL vmlinux 0xc6a4a872 __clk_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0xc6bca132 transport_class_register +EXPORT_SYMBOL_GPL vmlinux 0xc6c0aba3 clk_fractional_divider_ops +EXPORT_SYMBOL_GPL vmlinux 0xc6d4690d hrtimer_get_remaining +EXPORT_SYMBOL_GPL vmlinux 0xc6f0153c usb_driver_claim_interface +EXPORT_SYMBOL_GPL vmlinux 0xc6fc6ddc ata_sff_port_intr +EXPORT_SYMBOL_GPL vmlinux 0xc7002ac4 evtchn_make_refcounted +EXPORT_SYMBOL_GPL vmlinux 0xc7064001 kobject_get_path +EXPORT_SYMBOL_GPL vmlinux 0xc72e1233 __trace_bprintk +EXPORT_SYMBOL_GPL vmlinux 0xc73adfec tracepoint_probe_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc73d9656 usb_poison_urb +EXPORT_SYMBOL_GPL vmlinux 0xc748e3d7 pcie_port_bus_type +EXPORT_SYMBOL_GPL vmlinux 0xc76a20b1 pwm_put +EXPORT_SYMBOL_GPL vmlinux 0xc7a1840e llist_add_batch +EXPORT_SYMBOL_GPL vmlinux 0xc7a1c5a4 crypto_destroy_tfm +EXPORT_SYMBOL_GPL vmlinux 0xc7b51cae blk_unprep_request +EXPORT_SYMBOL_GPL vmlinux 0xc7c2c43c sdio_release_host +EXPORT_SYMBOL_GPL vmlinux 0xc7c6391c mpi_set_buffer +EXPORT_SYMBOL_GPL vmlinux 0xc7e39bca ring_buffer_dropped_events_cpu +EXPORT_SYMBOL_GPL vmlinux 0xc7f0446c fuse_do_open +EXPORT_SYMBOL_GPL vmlinux 0xc7f7cb78 irq_remove_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0xc80639fe swiotlb_tbl_sync_single +EXPORT_SYMBOL_GPL vmlinux 0xc80eea2e device_pm_wait_for_dev +EXPORT_SYMBOL_GPL vmlinux 0xc8146627 acpi_dma_controller_free +EXPORT_SYMBOL_GPL vmlinux 0xc826e80d mm_kobj +EXPORT_SYMBOL_GPL vmlinux 0xc82b2992 da903x_reads +EXPORT_SYMBOL_GPL vmlinux 0xc832ed63 fs_kobj +EXPORT_SYMBOL_GPL vmlinux 0xc8331287 request_firmware_direct +EXPORT_SYMBOL_GPL vmlinux 0xc83cd785 tps65912_reg_read +EXPORT_SYMBOL_GPL vmlinux 0xc852d569 rio_bus_type +EXPORT_SYMBOL_GPL vmlinux 0xc8580bbc aead_geniv_alloc +EXPORT_SYMBOL_GPL vmlinux 0xc85b8f0b fuse_conn_put +EXPORT_SYMBOL_GPL vmlinux 0xc85d35df __rtnl_af_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc87c1f84 ktime_get +EXPORT_SYMBOL_GPL vmlinux 0xc87e487a sched_clock_idle_sleep_event +EXPORT_SYMBOL_GPL vmlinux 0xc8add232 ring_buffer_record_disable +EXPORT_SYMBOL_GPL vmlinux 0xc8b3d071 devm_power_supply_register_no_ws +EXPORT_SYMBOL_GPL vmlinux 0xc8c81a54 usb_lock_device_for_reset +EXPORT_SYMBOL_GPL vmlinux 0xc8c82bae regulator_disable_deferred +EXPORT_SYMBOL_GPL vmlinux 0xc8de50d9 class_for_each_device +EXPORT_SYMBOL_GPL vmlinux 0xc8de802f cn_netlink_send +EXPORT_SYMBOL_GPL vmlinux 0xc9049c48 class_find_device +EXPORT_SYMBOL_GPL vmlinux 0xc90a6ee6 inet6_csk_xmit +EXPORT_SYMBOL_GPL vmlinux 0xc91277a1 kgdb_schedule_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0xc9174d43 pci_load_and_free_saved_state +EXPORT_SYMBOL_GPL vmlinux 0xc9561772 fb_destroy_modelist +EXPORT_SYMBOL_GPL vmlinux 0xc9633fc6 crypto_ablkcipher_type +EXPORT_SYMBOL_GPL vmlinux 0xc9705eeb has_newer_microcode +EXPORT_SYMBOL_GPL vmlinux 0xc9791110 generic_fh_to_parent +EXPORT_SYMBOL_GPL vmlinux 0xc97ae19e pcie_bus_configure_settings +EXPORT_SYMBOL_GPL vmlinux 0xc9a298db regmap_get_val_endian +EXPORT_SYMBOL_GPL vmlinux 0xc9c3f176 hpet_register_irq_handler +EXPORT_SYMBOL_GPL vmlinux 0xc9dbf378 usb_kill_urb +EXPORT_SYMBOL_GPL vmlinux 0xc9ec4e21 free_percpu +EXPORT_SYMBOL_GPL vmlinux 0xc9f17af7 regulator_get_exclusive +EXPORT_SYMBOL_GPL vmlinux 0xc9f825a8 inet6_hash_connect +EXPORT_SYMBOL_GPL vmlinux 0xca0221fc shmem_add_seals +EXPORT_SYMBOL_GPL vmlinux 0xca1f295b __rt_mutex_init +EXPORT_SYMBOL_GPL vmlinux 0xca3394b7 xenbus_read_otherend_details +EXPORT_SYMBOL_GPL vmlinux 0xca4a0144 powercap_unregister_control_type +EXPORT_SYMBOL_GPL vmlinux 0xca4f5cc8 napi_hash_del +EXPORT_SYMBOL_GPL vmlinux 0xca7467da device_set_wakeup_enable +EXPORT_SYMBOL_GPL vmlinux 0xca748453 blk_mq_unfreeze_queue +EXPORT_SYMBOL_GPL vmlinux 0xca75fa58 iommu_domain_window_enable +EXPORT_SYMBOL_GPL vmlinux 0xca7d8764 kthread_freezable_should_stop +EXPORT_SYMBOL_GPL vmlinux 0xca81ea9a xenbus_transaction_end +EXPORT_SYMBOL_GPL vmlinux 0xca8472ab tty_ldisc_ref_wait +EXPORT_SYMBOL_GPL vmlinux 0xca8b50f2 fwnode_property_read_u64_array +EXPORT_SYMBOL_GPL vmlinux 0xcaa8ba78 usb_hcd_link_urb_to_ep +EXPORT_SYMBOL_GPL vmlinux 0xcabe04de cpuidle_resume_and_unlock +EXPORT_SYMBOL_GPL vmlinux 0xcaef5415 ata_bmdma_port_ops +EXPORT_SYMBOL_GPL vmlinux 0xcb15eee9 sdhci_pci_get_data +EXPORT_SYMBOL_GPL vmlinux 0xcb241bfa regulator_bulk_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0xcb397ff5 crypto_aead_type +EXPORT_SYMBOL_GPL vmlinux 0xcb469d2b ddebug_add_module +EXPORT_SYMBOL_GPL vmlinux 0xcb543ce2 virtqueue_kick_prepare +EXPORT_SYMBOL_GPL vmlinux 0xcb65313d spi_master_suspend +EXPORT_SYMBOL_GPL vmlinux 0xcb7227ef netdev_rx_handler_register +EXPORT_SYMBOL_GPL vmlinux 0xcb87014a ioremap_uc +EXPORT_SYMBOL_GPL vmlinux 0xcb897384 serial8250_rpm_get +EXPORT_SYMBOL_GPL vmlinux 0xcb9cfec8 register_pernet_subsys +EXPORT_SYMBOL_GPL vmlinux 0xcbaa23eb debugfs_create_regset32 +EXPORT_SYMBOL_GPL vmlinux 0xcbcb3f1a tty_ldisc_ref +EXPORT_SYMBOL_GPL vmlinux 0xcbd48c3f hv_setup_crash_handler +EXPORT_SYMBOL_GPL vmlinux 0xcbddcc52 sock_prot_inuse_add +EXPORT_SYMBOL_GPL vmlinux 0xcbe4b496 nvdimm_blk_region_create +EXPORT_SYMBOL_GPL vmlinux 0xcbe56bc2 zs_get_total_pages +EXPORT_SYMBOL_GPL vmlinux 0xcbe5e1ef gpiod_get_array +EXPORT_SYMBOL_GPL vmlinux 0xcbe671ca ata_pci_sff_init_host +EXPORT_SYMBOL_GPL vmlinux 0xcbee20b2 get_cpu_iowait_time_us +EXPORT_SYMBOL_GPL vmlinux 0xcbfcc2c3 sdio_set_host_pm_flags +EXPORT_SYMBOL_GPL vmlinux 0xcc11acac acpi_dma_controller_register +EXPORT_SYMBOL_GPL vmlinux 0xcc1ab429 swiotlb_map_page +EXPORT_SYMBOL_GPL vmlinux 0xcc41133b irq_find_host +EXPORT_SYMBOL_GPL vmlinux 0xcc76a977 rio_request_inb_pwrite +EXPORT_SYMBOL_GPL vmlinux 0xcc85c97e pwm_set_polarity +EXPORT_SYMBOL_GPL vmlinux 0xcc85fcb6 async_schedule +EXPORT_SYMBOL_GPL vmlinux 0xcc8af474 adp5520_read +EXPORT_SYMBOL_GPL vmlinux 0xcc94510e dev_pm_enable_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0xcc9f0361 dma_buf_mmap +EXPORT_SYMBOL_GPL vmlinux 0xcca7bda8 fuse_dev_operations +EXPORT_SYMBOL_GPL vmlinux 0xccc58ada mddev_resume +EXPORT_SYMBOL_GPL vmlinux 0xcccfb2fa sata_deb_timing_hotplug +EXPORT_SYMBOL_GPL vmlinux 0xccdb5eb7 crypto_register_aeads +EXPORT_SYMBOL_GPL vmlinux 0xccea4e34 perf_get_x86_pmu_capability +EXPORT_SYMBOL_GPL vmlinux 0xcd1516df register_kprobe +EXPORT_SYMBOL_GPL vmlinux 0xcd365301 dma_get_required_mask +EXPORT_SYMBOL_GPL vmlinux 0xcd3ea692 __rio_local_read_config_8 +EXPORT_SYMBOL_GPL vmlinux 0xcd4036c5 of_phy_provider_unregister +EXPORT_SYMBOL_GPL vmlinux 0xcd4e3a67 blk_lld_busy +EXPORT_SYMBOL_GPL vmlinux 0xcd5b8c9a tty_set_termios +EXPORT_SYMBOL_GPL vmlinux 0xcd5d4ef9 btree_update +EXPORT_SYMBOL_GPL vmlinux 0xcd700567 rio_dev_get +EXPORT_SYMBOL_GPL vmlinux 0xcd91b127 system_highpri_wq +EXPORT_SYMBOL_GPL vmlinux 0xcd974f00 rcu_all_qs +EXPORT_SYMBOL_GPL vmlinux 0xcda26d3a acpi_dev_runtime_resume +EXPORT_SYMBOL_GPL vmlinux 0xcdb6adcc ras_userspace_consumers +EXPORT_SYMBOL_GPL vmlinux 0xcdc48f54 inet_csk_reqsk_queue_hash_add +EXPORT_SYMBOL_GPL vmlinux 0xcdc4ed4c usb_unanchor_urb +EXPORT_SYMBOL_GPL vmlinux 0xcdca3691 nr_irqs +EXPORT_SYMBOL_GPL vmlinux 0xcddefb98 pci_max_pasids +EXPORT_SYMBOL_GPL vmlinux 0xcde56fec vfs_fallocate +EXPORT_SYMBOL_GPL vmlinux 0xce12d037 btree_insert +EXPORT_SYMBOL_GPL vmlinux 0xce1aed2f xenbus_dev_remove +EXPORT_SYMBOL_GPL vmlinux 0xce23c33e dev_forward_skb +EXPORT_SYMBOL_GPL vmlinux 0xce3423a7 ip6_datagram_send_ctl +EXPORT_SYMBOL_GPL vmlinux 0xce3bd939 fuse_abort_conn +EXPORT_SYMBOL_GPL vmlinux 0xce6a9d9a trace_current_buffer_discard_commit +EXPORT_SYMBOL_GPL vmlinux 0xce6db656 rcu_is_watching +EXPORT_SYMBOL_GPL vmlinux 0xceacfdae rio_mport_read_config_16 +EXPORT_SYMBOL_GPL vmlinux 0xcec45a94 irq_domain_xlate_onecell +EXPORT_SYMBOL_GPL vmlinux 0xced1c1a0 iommu_iova_to_phys +EXPORT_SYMBOL_GPL vmlinux 0xced4dd32 crypto_larval_alloc +EXPORT_SYMBOL_GPL vmlinux 0xcee1641c kgdb_unregister_nmi_console +EXPORT_SYMBOL_GPL vmlinux 0xcee689fa reservation_object_get_fences_rcu +EXPORT_SYMBOL_GPL vmlinux 0xcef1dd0e perf_check_microcode +EXPORT_SYMBOL_GPL vmlinux 0xcefcae59 crypto_alloc_base +EXPORT_SYMBOL_GPL vmlinux 0xcf2d644a ata_port_abort +EXPORT_SYMBOL_GPL vmlinux 0xcf3b7b9f sk_set_memalloc +EXPORT_SYMBOL_GPL vmlinux 0xcf410d8b ip6_datagram_connect +EXPORT_SYMBOL_GPL vmlinux 0xcf54ea93 async_unregister_domain +EXPORT_SYMBOL_GPL vmlinux 0xcf5d5496 spi_bus_type +EXPORT_SYMBOL_GPL vmlinux 0xcf81c40b ata_dev_pair +EXPORT_SYMBOL_GPL vmlinux 0xcfb267ac sdhci_pci_o2_resume +EXPORT_SYMBOL_GPL vmlinux 0xcfb57ad0 acpi_pci_find_root +EXPORT_SYMBOL_GPL vmlinux 0xcfb5871c irq_work_queue +EXPORT_SYMBOL_GPL vmlinux 0xcfbc7b9a list_lru_del +EXPORT_SYMBOL_GPL vmlinux 0xcfc68341 synchronize_rcu_bh +EXPORT_SYMBOL_GPL vmlinux 0xcfd514ec hwrng_unregister +EXPORT_SYMBOL_GPL vmlinux 0xcfda725b simple_attr_write +EXPORT_SYMBOL_GPL vmlinux 0xcfe55e16 tps6586x_reads +EXPORT_SYMBOL_GPL vmlinux 0xcff179b0 gpiochip_add +EXPORT_SYMBOL_GPL vmlinux 0xd03c7700 secure_ipv4_port_ephemeral +EXPORT_SYMBOL_GPL vmlinux 0xd0458ccb xenbus_strstate +EXPORT_SYMBOL_GPL vmlinux 0xd04c81f2 elv_register +EXPORT_SYMBOL_GPL vmlinux 0xd06446bd perf_event_read_value +EXPORT_SYMBOL_GPL vmlinux 0xd06524ba raw_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd067d3c5 system_freezable_power_efficient_wq +EXPORT_SYMBOL_GPL vmlinux 0xd07c6e21 bdev_direct_access +EXPORT_SYMBOL_GPL vmlinux 0xd07deb86 devm_extcon_dev_register +EXPORT_SYMBOL_GPL vmlinux 0xd0a7e94c usb_acpi_set_power_state +EXPORT_SYMBOL_GPL vmlinux 0xd0b51789 device_wakeup_enable +EXPORT_SYMBOL_GPL vmlinux 0xd0ba2c6b ipv6_find_tlv +EXPORT_SYMBOL_GPL vmlinux 0xd0c05159 emergency_restart +EXPORT_SYMBOL_GPL vmlinux 0xd0ca698d inode_congested +EXPORT_SYMBOL_GPL vmlinux 0xd0f9eea5 klist_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0xd141b3ec tcp_twsk_destructor +EXPORT_SYMBOL_GPL vmlinux 0xd1507e59 erst_clear +EXPORT_SYMBOL_GPL vmlinux 0xd1557f1a usb_get_intf +EXPORT_SYMBOL_GPL vmlinux 0xd16712f3 crypto_check_attr_type +EXPORT_SYMBOL_GPL vmlinux 0xd16fcf7d dma_run_dependencies +EXPORT_SYMBOL_GPL vmlinux 0xd170b323 i2c_recover_bus +EXPORT_SYMBOL_GPL vmlinux 0xd17b31f1 dev_pm_get_subsys_data +EXPORT_SYMBOL_GPL vmlinux 0xd1af7404 posix_timer_event +EXPORT_SYMBOL_GPL vmlinux 0xd1df598c devm_phy_destroy +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 0xd24ffedd sdio_writeb +EXPORT_SYMBOL_GPL vmlinux 0xd2568626 rtc_device_register +EXPORT_SYMBOL_GPL vmlinux 0xd25faa18 ata_sas_port_suspend +EXPORT_SYMBOL_GPL vmlinux 0xd263c3cf __pci_complete_power_transition +EXPORT_SYMBOL_GPL vmlinux 0xd273b1b1 __round_jiffies_up_relative +EXPORT_SYMBOL_GPL vmlinux 0xd28285ef power_supply_notifier +EXPORT_SYMBOL_GPL vmlinux 0xd29a33fb ata_sff_postreset +EXPORT_SYMBOL_GPL vmlinux 0xd2a956aa sysfs_remove_link +EXPORT_SYMBOL_GPL vmlinux 0xd2aaeb4e kmsg_dump_get_buffer +EXPORT_SYMBOL_GPL vmlinux 0xd2b16705 dma_buf_vmap +EXPORT_SYMBOL_GPL vmlinux 0xd2c58ab2 apei_exec_noop +EXPORT_SYMBOL_GPL vmlinux 0xd2de4c69 tun_get_socket +EXPORT_SYMBOL_GPL vmlinux 0xd2e88de5 clk_register_gate +EXPORT_SYMBOL_GPL vmlinux 0xd2edf4b7 ata_get_cmd_descript +EXPORT_SYMBOL_GPL vmlinux 0xd307159d get_net_ns_by_fd +EXPORT_SYMBOL_GPL vmlinux 0xd3234fa6 pci_ats_queue_depth +EXPORT_SYMBOL_GPL vmlinux 0xd350f9e6 acpi_driver_match_device +EXPORT_SYMBOL_GPL vmlinux 0xd3681be7 __blkg_prfill_u64 +EXPORT_SYMBOL_GPL vmlinux 0xd36eaaa7 led_sysfs_enable +EXPORT_SYMBOL_GPL vmlinux 0xd3a537a5 usb_debug_root +EXPORT_SYMBOL_GPL vmlinux 0xd3c9f08a md_rdev_clear +EXPORT_SYMBOL_GPL vmlinux 0xd3cc0819 crypto_attr_alg2 +EXPORT_SYMBOL_GPL vmlinux 0xd3cc68d9 led_trigger_show +EXPORT_SYMBOL_GPL vmlinux 0xd3da118a tty_port_link_device +EXPORT_SYMBOL_GPL vmlinux 0xd3dacb17 pci_test_config_bits +EXPORT_SYMBOL_GPL vmlinux 0xd3ef3989 ip6_append_data +EXPORT_SYMBOL_GPL vmlinux 0xd3f3b14b efivar_entry_iter +EXPORT_SYMBOL_GPL vmlinux 0xd401ab2f wm5110_spi_regmap +EXPORT_SYMBOL_GPL vmlinux 0xd4034828 system_freezable_wq +EXPORT_SYMBOL_GPL vmlinux 0xd41e14d5 ip_route_output_flow +EXPORT_SYMBOL_GPL vmlinux 0xd41fffab interval_tree_iter_first +EXPORT_SYMBOL_GPL vmlinux 0xd43d51f4 __platform_driver_register +EXPORT_SYMBOL_GPL vmlinux 0xd44a5eac kgdb_register_nmi_console +EXPORT_SYMBOL_GPL vmlinux 0xd4711ece show_class_attr_string +EXPORT_SYMBOL_GPL vmlinux 0xd47e7108 gpiochip_set_chained_irqchip +EXPORT_SYMBOL_GPL vmlinux 0xd493849a regulator_allow_bypass +EXPORT_SYMBOL_GPL vmlinux 0xd49a0f0b scsi_mode_select +EXPORT_SYMBOL_GPL vmlinux 0xd4c14632 system_unbound_wq +EXPORT_SYMBOL_GPL vmlinux 0xd4d51f7c reservation_object_wait_timeout_rcu +EXPORT_SYMBOL_GPL vmlinux 0xd4ffe1b9 blkcipher_walk_virt_block +EXPORT_SYMBOL_GPL vmlinux 0xd506c2af usb_string +EXPORT_SYMBOL_GPL vmlinux 0xd50ea0c9 dax_zero_page_range +EXPORT_SYMBOL_GPL vmlinux 0xd5156d1d bmp085_remove +EXPORT_SYMBOL_GPL vmlinux 0xd5242c04 efivar_entry_remove +EXPORT_SYMBOL_GPL vmlinux 0xd530b8ca usb_autopm_get_interface_async +EXPORT_SYMBOL_GPL vmlinux 0xd53b1f29 tps65912_reg_write +EXPORT_SYMBOL_GPL vmlinux 0xd544e902 pgprot_writecombine +EXPORT_SYMBOL_GPL vmlinux 0xd55ad93b iommu_group_get_iommudata +EXPORT_SYMBOL_GPL vmlinux 0xd5659234 spi_finalize_current_message +EXPORT_SYMBOL_GPL vmlinux 0xd57b819b usb_interrupt_msg +EXPORT_SYMBOL_GPL vmlinux 0xd5bd7dac ring_buffer_record_enable_cpu +EXPORT_SYMBOL_GPL vmlinux 0xd5bf5d49 attribute_container_classdev_to_container +EXPORT_SYMBOL_GPL vmlinux 0xd5d49532 __ata_ehi_push_desc +EXPORT_SYMBOL_GPL vmlinux 0xd5ec75b7 skb_copy_ubufs +EXPORT_SYMBOL_GPL vmlinux 0xd5f03574 dm_suspended +EXPORT_SYMBOL_GPL vmlinux 0xd5f44b7e to_nvdimm +EXPORT_SYMBOL_GPL vmlinux 0xd60c99b5 rcu_batches_completed_bh +EXPORT_SYMBOL_GPL vmlinux 0xd60d1dd5 get_kernel_page +EXPORT_SYMBOL_GPL vmlinux 0xd627947a sata_link_resume +EXPORT_SYMBOL_GPL vmlinux 0xd6287f0e __pm_runtime_suspend +EXPORT_SYMBOL_GPL vmlinux 0xd62c22d6 devm_usb_get_phy_by_node +EXPORT_SYMBOL_GPL vmlinux 0xd64b14f8 cpuidle_register +EXPORT_SYMBOL_GPL vmlinux 0xd67364f7 eventfd_ctx_fdget +EXPORT_SYMBOL_GPL vmlinux 0xd677ca1e unregister_acpi_bus_type +EXPORT_SYMBOL_GPL vmlinux 0xd68c7c81 arizona_free_irq +EXPORT_SYMBOL_GPL vmlinux 0xd68c8afc uart_set_options +EXPORT_SYMBOL_GPL vmlinux 0xd69f0738 ata_sff_data_xfer_noirq +EXPORT_SYMBOL_GPL vmlinux 0xd6c2e04b __tracepoint_napi_poll +EXPORT_SYMBOL_GPL vmlinux 0xd6ed3a8e cper_next_record_id +EXPORT_SYMBOL_GPL vmlinux 0xd6feefa5 agp_num_entries +EXPORT_SYMBOL_GPL vmlinux 0xd705b4c7 schedule_hrtimeout +EXPORT_SYMBOL_GPL vmlinux 0xd72b1874 mnt_clone_write +EXPORT_SYMBOL_GPL vmlinux 0xd72feba2 xenbus_read_driver_state +EXPORT_SYMBOL_GPL vmlinux 0xd7399d2a efivar_entry_iter_end +EXPORT_SYMBOL_GPL vmlinux 0xd74a5bc6 dev_pm_qos_hide_flags +EXPORT_SYMBOL_GPL vmlinux 0xd764d265 inet_hashinfo_init +EXPORT_SYMBOL_GPL vmlinux 0xd768e985 regulator_has_full_constraints +EXPORT_SYMBOL_GPL vmlinux 0xd77c0bc8 klist_remove +EXPORT_SYMBOL_GPL vmlinux 0xd795ff92 __gpiod_get +EXPORT_SYMBOL_GPL vmlinux 0xd79efe76 napi_hash_add +EXPORT_SYMBOL_GPL vmlinux 0xd7a4714b rt_mutex_lock +EXPORT_SYMBOL_GPL vmlinux 0xd7a85c5a list_lru_count_one +EXPORT_SYMBOL_GPL vmlinux 0xd7ab2c0c speedstep_detect_processor +EXPORT_SYMBOL_GPL vmlinux 0xd7cf64dc ehci_init_driver +EXPORT_SYMBOL_GPL vmlinux 0xd7d79132 put_online_cpus +EXPORT_SYMBOL_GPL vmlinux 0xd7e57111 is_dock_device +EXPORT_SYMBOL_GPL vmlinux 0xd7ee6aa6 tpm2_gen_interrupt +EXPORT_SYMBOL_GPL vmlinux 0xd81de62c ring_buffer_record_enable +EXPORT_SYMBOL_GPL vmlinux 0xd820c283 eventfd_ctx_remove_wait_queue +EXPORT_SYMBOL_GPL vmlinux 0xd8250a5c iounmap_atomic +EXPORT_SYMBOL_GPL vmlinux 0xd82ca81e acpi_subsys_complete +EXPORT_SYMBOL_GPL vmlinux 0xd83d54c3 usb_gen_phy_shutdown +EXPORT_SYMBOL_GPL vmlinux 0xd83e543f devm_of_phy_get_by_index +EXPORT_SYMBOL_GPL vmlinux 0xd87601cc ring_buffer_unlock_commit +EXPORT_SYMBOL_GPL vmlinux 0xd87b101b pwm_request +EXPORT_SYMBOL_GPL vmlinux 0xd87fc0a0 usb_amd_prefetch_quirk +EXPORT_SYMBOL_GPL vmlinux 0xd8e6f430 fuse_request_send +EXPORT_SYMBOL_GPL vmlinux 0xd919806a amd_cache_northbridges +EXPORT_SYMBOL_GPL vmlinux 0xd942d353 ring_buffer_record_off +EXPORT_SYMBOL_GPL vmlinux 0xd94b737e erst_read +EXPORT_SYMBOL_GPL vmlinux 0xd955816e pm_generic_freeze_late +EXPORT_SYMBOL_GPL vmlinux 0xd96babb4 interval_tree_iter_next +EXPORT_SYMBOL_GPL vmlinux 0xd96e8b85 usb_root_hub_lost_power +EXPORT_SYMBOL_GPL vmlinux 0xd9712b56 pwm_free +EXPORT_SYMBOL_GPL vmlinux 0xd9856a48 class_create_file_ns +EXPORT_SYMBOL_GPL vmlinux 0xd986dad1 kernel_fpu_begin +EXPORT_SYMBOL_GPL vmlinux 0xd986e9cd tps6586x_update +EXPORT_SYMBOL_GPL vmlinux 0xd9881fc6 pm_generic_restore +EXPORT_SYMBOL_GPL vmlinux 0xd9bbbe0d blkdev_write_iter +EXPORT_SYMBOL_GPL vmlinux 0xd9c0c3f6 __platform_driver_probe +EXPORT_SYMBOL_GPL vmlinux 0xd9d6e17c pci_device_is_present +EXPORT_SYMBOL_GPL vmlinux 0xd9d89d29 edac_subsys +EXPORT_SYMBOL_GPL vmlinux 0xd9de6d22 iommu_domain_set_attr +EXPORT_SYMBOL_GPL vmlinux 0xd9ecb670 ring_buffer_overruns +EXPORT_SYMBOL_GPL vmlinux 0xd9eec64e gpiod_set_array_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0xd9fa52e4 blk_queue_bypass_start +EXPORT_SYMBOL_GPL vmlinux 0xda04306d pinctrl_lookup_state +EXPORT_SYMBOL_GPL vmlinux 0xda0dc021 irq_setup_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0xda56fbee pci_disable_pcie_error_reporting +EXPORT_SYMBOL_GPL vmlinux 0xda7d7b21 led_trigger_set +EXPORT_SYMBOL_GPL vmlinux 0xda88cc28 skb_to_sgvec_nomark +EXPORT_SYMBOL_GPL vmlinux 0xda8c561b scsi_flush_work +EXPORT_SYMBOL_GPL vmlinux 0xda8d25d3 inet_peer_base_init +EXPORT_SYMBOL_GPL vmlinux 0xdaa06dc1 acpi_lpat_raw_to_temp +EXPORT_SYMBOL_GPL vmlinux 0xdaa301e4 regmap_field_alloc +EXPORT_SYMBOL_GPL vmlinux 0xdad919f2 find_symbol +EXPORT_SYMBOL_GPL vmlinux 0xdaed3073 timerqueue_del +EXPORT_SYMBOL_GPL vmlinux 0xdaf4dfb3 fb_mode_option +EXPORT_SYMBOL_GPL vmlinux 0xdafd2fd1 acpi_subsys_runtime_suspend +EXPORT_SYMBOL_GPL vmlinux 0xdaff1d72 tps6586x_read +EXPORT_SYMBOL_GPL vmlinux 0xdb088cb1 pm_qos_add_request +EXPORT_SYMBOL_GPL vmlinux 0xdb18c507 ata_pci_sff_init_one +EXPORT_SYMBOL_GPL vmlinux 0xdb397701 efivar_entry_find +EXPORT_SYMBOL_GPL vmlinux 0xdb4ff7d8 dmaengine_unmap_put +EXPORT_SYMBOL_GPL vmlinux 0xdb63a944 acpi_lpat_get_conversion_table +EXPORT_SYMBOL_GPL vmlinux 0xdb6ccd10 device_create_bin_file +EXPORT_SYMBOL_GPL vmlinux 0xdb8a1b3f usermodehelper_read_trylock +EXPORT_SYMBOL_GPL vmlinux 0xdb92e196 fat_sync_inode +EXPORT_SYMBOL_GPL vmlinux 0xdbc70816 __pm_runtime_set_status +EXPORT_SYMBOL_GPL vmlinux 0xdbdbe0e7 xen_swiotlb_set_dma_mask +EXPORT_SYMBOL_GPL vmlinux 0xdbf7cb70 mpi_get_nbits +EXPORT_SYMBOL_GPL vmlinux 0xdc145698 bpf_prog_alloc +EXPORT_SYMBOL_GPL vmlinux 0xdc14a211 xen_hvm_evtchn_do_upcall +EXPORT_SYMBOL_GPL vmlinux 0xdc301993 fuse_dev_release +EXPORT_SYMBOL_GPL vmlinux 0xdc4dcf8c device_find_child +EXPORT_SYMBOL_GPL vmlinux 0xdc65b301 crypto_grab_spawn +EXPORT_SYMBOL_GPL vmlinux 0xdc6699cb acpi_dev_free_resource_list +EXPORT_SYMBOL_GPL vmlinux 0xdc825d6c usb_amd_quirk_pll_disable +EXPORT_SYMBOL_GPL vmlinux 0xdc97af2e syscore_suspend +EXPORT_SYMBOL_GPL vmlinux 0xdc9fa232 raw_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0xdcc87861 acpi_kobj +EXPORT_SYMBOL_GPL vmlinux 0xdcd2226b of_phy_get +EXPORT_SYMBOL_GPL vmlinux 0xdce7b510 for_each_kernel_tracepoint +EXPORT_SYMBOL_GPL vmlinux 0xdd17ffec trace_clock +EXPORT_SYMBOL_GPL vmlinux 0xdd2efc0f ring_buffer_reset_cpu +EXPORT_SYMBOL_GPL vmlinux 0xdd391eff profile_event_unregister +EXPORT_SYMBOL_GPL vmlinux 0xdd3b1f02 rio_attach_device +EXPORT_SYMBOL_GPL vmlinux 0xdd711a46 bmp085_detect +EXPORT_SYMBOL_GPL vmlinux 0xdd881cec eventfd_ctx_fileget +EXPORT_SYMBOL_GPL vmlinux 0xddbeeecc pci_lock_rescan_remove +EXPORT_SYMBOL_GPL vmlinux 0xddca7301 ata_sas_port_start +EXPORT_SYMBOL_GPL vmlinux 0xddd58dc0 ring_buffer_reset +EXPORT_SYMBOL_GPL vmlinux 0xdde40efa da903x_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0xddf04d38 sdio_f0_readb +EXPORT_SYMBOL_GPL vmlinux 0xddf05382 ping_rcv +EXPORT_SYMBOL_GPL vmlinux 0xddf7f3c9 sb800_prefetch +EXPORT_SYMBOL_GPL vmlinux 0xde018ed4 wm831x_reg_write +EXPORT_SYMBOL_GPL vmlinux 0xde0b3102 regmap_init_mmio_clk +EXPORT_SYMBOL_GPL vmlinux 0xde0dd8f4 usb_enable_intel_xhci_ports +EXPORT_SYMBOL_GPL vmlinux 0xde3bef2c syscon_node_to_regmap +EXPORT_SYMBOL_GPL vmlinux 0xde3c2b41 single_open_net +EXPORT_SYMBOL_GPL vmlinux 0xde4bb58b pci_bus_resource_n +EXPORT_SYMBOL_GPL vmlinux 0xde58e576 da9052_disable_irq_nosync +EXPORT_SYMBOL_GPL vmlinux 0xde63b59d ata_host_init +EXPORT_SYMBOL_GPL vmlinux 0xde744819 ata_scsi_port_error_handler +EXPORT_SYMBOL_GPL vmlinux 0xde747356 intel_msic_reg_write +EXPORT_SYMBOL_GPL vmlinux 0xde7f723c xen_remap_domain_mfn_array +EXPORT_SYMBOL_GPL vmlinux 0xde8dd926 klist_next +EXPORT_SYMBOL_GPL vmlinux 0xde8ecc46 sdio_align_size +EXPORT_SYMBOL_GPL vmlinux 0xdf0c289b crypto_ahash_final +EXPORT_SYMBOL_GPL vmlinux 0xdf0f75c6 eventfd_signal +EXPORT_SYMBOL_GPL vmlinux 0xdf13e4e8 sdio_writesb +EXPORT_SYMBOL_GPL vmlinux 0xdf1882af dbgp_reset_prep +EXPORT_SYMBOL_GPL vmlinux 0xdf1a05cc page_endio +EXPORT_SYMBOL_GPL vmlinux 0xdf1fa3c2 devm_pwm_put +EXPORT_SYMBOL_GPL vmlinux 0xdf4412f2 inode_sb_list_add +EXPORT_SYMBOL_GPL vmlinux 0xdf622181 clk_register_divider_table +EXPORT_SYMBOL_GPL vmlinux 0xdf66ca81 ucode_cpu_info +EXPORT_SYMBOL_GPL vmlinux 0xdf75282c inet_twsk_purge +EXPORT_SYMBOL_GPL vmlinux 0xdf8be7d0 __mmu_notifier_invalidate_range +EXPORT_SYMBOL_GPL vmlinux 0xdf9edc93 usb_hub_find_child +EXPORT_SYMBOL_GPL vmlinux 0xe003e044 __tracepoint_add_device_to_group +EXPORT_SYMBOL_GPL vmlinux 0xe007de41 kallsyms_lookup_name +EXPORT_SYMBOL_GPL vmlinux 0xe00dec52 ip6_push_pending_frames +EXPORT_SYMBOL_GPL vmlinux 0xe02eb6d0 ring_buffer_commit_overrun_cpu +EXPORT_SYMBOL_GPL vmlinux 0xe04b7dfc clk_register_mux +EXPORT_SYMBOL_GPL vmlinux 0xe04c3386 usb_bulk_msg +EXPORT_SYMBOL_GPL vmlinux 0xe064cdfb mbox_send_message +EXPORT_SYMBOL_GPL vmlinux 0xe0808f0e __mmu_notifier_invalidate_range_start +EXPORT_SYMBOL_GPL vmlinux 0xe089cfcc agp_memory_reserved +EXPORT_SYMBOL_GPL vmlinux 0xe08fdd33 kernfs_path +EXPORT_SYMBOL_GPL vmlinux 0xe093cd7c sysfs_notify +EXPORT_SYMBOL_GPL vmlinux 0xe09ef849 usb_store_new_id +EXPORT_SYMBOL_GPL vmlinux 0xe0acd05f __udp6_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0xe0b1c103 clk_set_max_rate +EXPORT_SYMBOL_GPL vmlinux 0xe0c77bb5 mce_notify_irq +EXPORT_SYMBOL_GPL vmlinux 0xe0d40c74 usb_free_coherent +EXPORT_SYMBOL_GPL vmlinux 0xe0e10760 usb_hcd_end_port_resume +EXPORT_SYMBOL_GPL vmlinux 0xe0e3065e blk_mq_tags_cpumask +EXPORT_SYMBOL_GPL vmlinux 0xe0ec3bf4 edac_get_sysfs_subsys +EXPORT_SYMBOL_GPL vmlinux 0xe0f2d662 blockdev_superblock +EXPORT_SYMBOL_GPL vmlinux 0xe10cd6ad erst_get_record_id_begin +EXPORT_SYMBOL_GPL vmlinux 0xe121cbb6 static_key_slow_dec_deferred +EXPORT_SYMBOL_GPL vmlinux 0xe13e0608 acpiphp_register_attention +EXPORT_SYMBOL_GPL vmlinux 0xe1775ee7 dm_get_reserved_bio_based_ios +EXPORT_SYMBOL_GPL vmlinux 0xe1bd6c99 rio_init_mports +EXPORT_SYMBOL_GPL vmlinux 0xe1c7869b nvdimm_bus_check_dimm_count +EXPORT_SYMBOL_GPL vmlinux 0xe1cfad84 bsg_register_queue +EXPORT_SYMBOL_GPL vmlinux 0xe20286aa watchdog_register_device +EXPORT_SYMBOL_GPL vmlinux 0xe208e0a8 get_cpu_device +EXPORT_SYMBOL_GPL vmlinux 0xe221c85b extcon_set_cable_state +EXPORT_SYMBOL_GPL vmlinux 0xe22af389 dma_buf_kmap_atomic +EXPORT_SYMBOL_GPL vmlinux 0xe23a9631 thermal_of_cooling_device_register +EXPORT_SYMBOL_GPL vmlinux 0xe24404a4 regmap_async_complete_cb +EXPORT_SYMBOL_GPL vmlinux 0xe24917e3 skb_append_pagefrags +EXPORT_SYMBOL_GPL vmlinux 0xe25456d3 usb_remove_phy +EXPORT_SYMBOL_GPL vmlinux 0xe263c209 dev_pm_qos_expose_latency_tolerance +EXPORT_SYMBOL_GPL vmlinux 0xe2641810 mnt_drop_write +EXPORT_SYMBOL_GPL vmlinux 0xe28a1d1a sdhci_pci_spt_drive_strength +EXPORT_SYMBOL_GPL vmlinux 0xe28d4fcf tcp_peer_is_proven +EXPORT_SYMBOL_GPL vmlinux 0xe2921c42 ping_recvmsg +EXPORT_SYMBOL_GPL vmlinux 0xe295c0ff is_hpet_enabled +EXPORT_SYMBOL_GPL vmlinux 0xe2bf71a2 __tracepoint_xhci_dbg_quirks +EXPORT_SYMBOL_GPL vmlinux 0xe2dbddce nd_mapping_attribute_group +EXPORT_SYMBOL_GPL vmlinux 0xe2e1c363 ata_sff_qc_fill_rtf +EXPORT_SYMBOL_GPL vmlinux 0xe2f3fbfd tcp_unregister_congestion_control +EXPORT_SYMBOL_GPL vmlinux 0xe3043ff9 request_any_context_irq +EXPORT_SYMBOL_GPL vmlinux 0xe3781628 __srcu_read_lock +EXPORT_SYMBOL_GPL vmlinux 0xe384a102 usb_speed_string +EXPORT_SYMBOL_GPL vmlinux 0xe3948ff4 acpi_walk_dep_device_list +EXPORT_SYMBOL_GPL vmlinux 0xe3a749de __ip6_local_out +EXPORT_SYMBOL_GPL vmlinux 0xe3b3498e crypto_hash_walk_first +EXPORT_SYMBOL_GPL vmlinux 0xe3bc7fd4 hpet_unregister_irq_handler +EXPORT_SYMBOL_GPL vmlinux 0xe3bda663 inet_ehash_locks_alloc +EXPORT_SYMBOL_GPL vmlinux 0xe3eff165 pci_enable_pri +EXPORT_SYMBOL_GPL vmlinux 0xe3f3b549 sysfs_create_files +EXPORT_SYMBOL_GPL vmlinux 0xe411c16d alarm_restart +EXPORT_SYMBOL_GPL vmlinux 0xe41534ce bind_evtchn_to_irqhandler +EXPORT_SYMBOL_GPL vmlinux 0xe41cd09b crypto_unregister_rngs +EXPORT_SYMBOL_GPL vmlinux 0xe4309905 syscore_resume +EXPORT_SYMBOL_GPL vmlinux 0xe439815c erst_get_record_count +EXPORT_SYMBOL_GPL vmlinux 0xe4468341 ata_sff_check_status +EXPORT_SYMBOL_GPL vmlinux 0xe4689576 ktime_get_with_offset +EXPORT_SYMBOL_GPL vmlinux 0xe4971ade tracing_alloc_snapshot +EXPORT_SYMBOL_GPL vmlinux 0xe4a501b5 pinctrl_add_gpio_ranges +EXPORT_SYMBOL_GPL vmlinux 0xe4b8a112 __hvc_resize +EXPORT_SYMBOL_GPL vmlinux 0xe4c331b6 acpi_os_unmap_memory +EXPORT_SYMBOL_GPL vmlinux 0xe4c433d7 usb_disable_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0xe4e68bc8 apei_map_generic_address +EXPORT_SYMBOL_GPL vmlinux 0xe4ebeb13 __inet_inherit_port +EXPORT_SYMBOL_GPL vmlinux 0xe4ffa1ac percpu_ida_alloc +EXPORT_SYMBOL_GPL vmlinux 0xe513a007 sk_setup_caps +EXPORT_SYMBOL_GPL vmlinux 0xe514d401 usb_anchor_suspend_wakeups +EXPORT_SYMBOL_GPL vmlinux 0xe5388369 srcu_init_notifier_head +EXPORT_SYMBOL_GPL vmlinux 0xe549cac5 device_set_wakeup_capable +EXPORT_SYMBOL_GPL vmlinux 0xe5811190 watchdog_init_timeout +EXPORT_SYMBOL_GPL vmlinux 0xe5883bd9 class_compat_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe58fb452 aer_irq +EXPORT_SYMBOL_GPL vmlinux 0xe59e1efb unregister_asymmetric_key_parser +EXPORT_SYMBOL_GPL vmlinux 0xe5b42508 dev_attr_link_power_management_policy +EXPORT_SYMBOL_GPL vmlinux 0xe5b8082b cper_estatus_check_header +EXPORT_SYMBOL_GPL vmlinux 0xe5deba94 acpi_dev_add_driver_gpios +EXPORT_SYMBOL_GPL vmlinux 0xe5e57a7e fuse_direct_io +EXPORT_SYMBOL_GPL vmlinux 0xe5ec02e3 kernfs_put +EXPORT_SYMBOL_GPL vmlinux 0xe5ecbe9a serial8250_clear_and_reinit_fifos +EXPORT_SYMBOL_GPL vmlinux 0xe5ed6469 invalidate_inode_pages2 +EXPORT_SYMBOL_GPL vmlinux 0xe5ff5d77 phy_pm_runtime_allow +EXPORT_SYMBOL_GPL vmlinux 0xe607793e pm_generic_freeze +EXPORT_SYMBOL_GPL vmlinux 0xe61046ea __add_pages +EXPORT_SYMBOL_GPL vmlinux 0xe623d543 sdio_readb +EXPORT_SYMBOL_GPL vmlinux 0xe642c4b3 swiotlb_tbl_map_single +EXPORT_SYMBOL_GPL vmlinux 0xe64ad8ea unregister_nmi_handler +EXPORT_SYMBOL_GPL vmlinux 0xe64df759 extcon_dev_free +EXPORT_SYMBOL_GPL vmlinux 0xe651f76e selinux_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0xe6c68334 ddebug_remove_module +EXPORT_SYMBOL_GPL vmlinux 0xe6e1c5fe uuid_be_gen +EXPORT_SYMBOL_GPL vmlinux 0xe6ebc795 sk_attach_filter +EXPORT_SYMBOL_GPL vmlinux 0xe6ec81b8 dev_pm_set_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0xe6ef4abf dm_internal_resume_fast +EXPORT_SYMBOL_GPL vmlinux 0xe6f83837 acpi_bus_attach_private_data +EXPORT_SYMBOL_GPL vmlinux 0xe6ff7c60 __clk_round_rate +EXPORT_SYMBOL_GPL vmlinux 0xe7232e0f user_return_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe7525180 cpufreq_cpu_put +EXPORT_SYMBOL_GPL vmlinux 0xe765e021 ata_sas_port_alloc +EXPORT_SYMBOL_GPL vmlinux 0xe769232e sprint_symbol_no_offset +EXPORT_SYMBOL_GPL vmlinux 0xe7c8e99b skcipher_geniv_alloc +EXPORT_SYMBOL_GPL vmlinux 0xe7c917f5 virtqueue_add_sgs +EXPORT_SYMBOL_GPL vmlinux 0xe7cb82ea divider_round_rate +EXPORT_SYMBOL_GPL vmlinux 0xe7cfdb90 sysfs_update_group +EXPORT_SYMBOL_GPL vmlinux 0xe7e20424 rhashtable_walk_start +EXPORT_SYMBOL_GPL vmlinux 0xe7e9cbbf iommu_domain_get_attr +EXPORT_SYMBOL_GPL vmlinux 0xe7ffe877 pcpu_base_addr +EXPORT_SYMBOL_GPL vmlinux 0xe8025fad regmap_init +EXPORT_SYMBOL_GPL vmlinux 0xe80ced83 wakeup_source_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe818b32b ata_bmdma_interrupt +EXPORT_SYMBOL_GPL vmlinux 0xe827356b srcu_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0xe83ccce5 usb_ifnum_to_if +EXPORT_SYMBOL_GPL vmlinux 0xe8473ffa task_cls_state +EXPORT_SYMBOL_GPL vmlinux 0xe84b186a skb_scrub_packet +EXPORT_SYMBOL_GPL vmlinux 0xe84f6e5c pciserial_remove_ports +EXPORT_SYMBOL_GPL vmlinux 0xe85f03d0 pwmchip_remove +EXPORT_SYMBOL_GPL vmlinux 0xe862c4b7 dpm_suspend_start +EXPORT_SYMBOL_GPL vmlinux 0xe877d5d5 inet6_csk_search_req +EXPORT_SYMBOL_GPL vmlinux 0xe8847445 pid_nr_ns +EXPORT_SYMBOL_GPL vmlinux 0xe8a6bcfd __xenbus_register_frontend +EXPORT_SYMBOL_GPL vmlinux 0xe8bbe9cf ata_slave_link_init +EXPORT_SYMBOL_GPL vmlinux 0xe8c3e8d2 usb_enable_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0xe8d3b632 srcu_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe90af8ea unuse_mm +EXPORT_SYMBOL_GPL vmlinux 0xe90eaac0 usb_reset_configuration +EXPORT_SYMBOL_GPL vmlinux 0xe922e62c evm_verifyxattr +EXPORT_SYMBOL_GPL vmlinux 0xe92ba717 fsstack_copy_inode_size +EXPORT_SYMBOL_GPL vmlinux 0xe93349dc dev_pm_qos_flags +EXPORT_SYMBOL_GPL vmlinux 0xe936da35 crypto_aead_setauthsize +EXPORT_SYMBOL_GPL vmlinux 0xe93e49c3 devres_free +EXPORT_SYMBOL_GPL vmlinux 0xe96db586 add_disk_randomness +EXPORT_SYMBOL_GPL vmlinux 0xe97559b3 irq_alloc_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0xe9908c06 ata_sff_dev_classify +EXPORT_SYMBOL_GPL vmlinux 0xe9ca8343 kern_mount_data +EXPORT_SYMBOL_GPL vmlinux 0xe9ce931a kvm_para_available +EXPORT_SYMBOL_GPL vmlinux 0xe9d1b7cf irq_to_pcap +EXPORT_SYMBOL_GPL vmlinux 0xe9ecbffa devm_reset_control_get +EXPORT_SYMBOL_GPL vmlinux 0xe9ffe411 trace_seq_path +EXPORT_SYMBOL_GPL vmlinux 0xea124bd1 gcd +EXPORT_SYMBOL_GPL vmlinux 0xea22bd56 adp5520_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xea418e0f atapi_cmd_type +EXPORT_SYMBOL_GPL vmlinux 0xea60d4f3 debugfs_print_regs32 +EXPORT_SYMBOL_GPL vmlinux 0xea7df2de netlink_remove_tap +EXPORT_SYMBOL_GPL vmlinux 0xea8a0920 bitmap_resize +EXPORT_SYMBOL_GPL vmlinux 0xea9ddc2f xenbus_frontend_closed +EXPORT_SYMBOL_GPL vmlinux 0xeab0ab3d crypto_shoot_alg +EXPORT_SYMBOL_GPL vmlinux 0xeb2798f7 xen_destroy_contiguous_region +EXPORT_SYMBOL_GPL vmlinux 0xeb33965a xenbus_dev_changed +EXPORT_SYMBOL_GPL vmlinux 0xeb367042 virtqueue_add_inbuf +EXPORT_SYMBOL_GPL vmlinux 0xeb370805 __apei_exec_run +EXPORT_SYMBOL_GPL vmlinux 0xeb580954 rtnl_af_register +EXPORT_SYMBOL_GPL vmlinux 0xeb5eb964 dummy_con +EXPORT_SYMBOL_GPL vmlinux 0xeb753fd6 __sock_recv_timestamp +EXPORT_SYMBOL_GPL vmlinux 0xeb833c22 xen_has_pv_disk_devices +EXPORT_SYMBOL_GPL vmlinux 0xeb866c9e __ata_change_queue_depth +EXPORT_SYMBOL_GPL vmlinux 0xeb9abbee ata_sff_queue_work +EXPORT_SYMBOL_GPL vmlinux 0xeb9cc43b bus_remove_file +EXPORT_SYMBOL_GPL vmlinux 0xebb6e53c smp_ops +EXPORT_SYMBOL_GPL vmlinux 0xebba9816 crypto_spawn_tfm2 +EXPORT_SYMBOL_GPL vmlinux 0xebbc3093 blkg_stat_recursive_sum +EXPORT_SYMBOL_GPL vmlinux 0xebc3dae8 __srcu_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xebcbcce6 led_trigger_register_simple +EXPORT_SYMBOL_GPL vmlinux 0xebd96f4e pci_scan_child_bus +EXPORT_SYMBOL_GPL vmlinux 0xebdb6ae9 rtc_set_time +EXPORT_SYMBOL_GPL vmlinux 0xebec57c4 ring_buffer_oldest_event_ts +EXPORT_SYMBOL_GPL vmlinux 0xec08d1dd set_task_ioprio +EXPORT_SYMBOL_GPL vmlinux 0xec18e59f usb_put_dev +EXPORT_SYMBOL_GPL vmlinux 0xec1b043e regulator_suspend_prepare +EXPORT_SYMBOL_GPL vmlinux 0xec1b48d9 key_type_encrypted +EXPORT_SYMBOL_GPL vmlinux 0xec25f967 klist_del +EXPORT_SYMBOL_GPL vmlinux 0xec3325e2 __clk_get_num_parents +EXPORT_SYMBOL_GPL vmlinux 0xec35738a hrtimer_active +EXPORT_SYMBOL_GPL vmlinux 0xec3f5e8c thermal_zone_device_update +EXPORT_SYMBOL_GPL vmlinux 0xec453b57 sdio_f0_writeb +EXPORT_SYMBOL_GPL vmlinux 0xec631f34 remove_memory +EXPORT_SYMBOL_GPL vmlinux 0xec694395 device_show_bool +EXPORT_SYMBOL_GPL vmlinux 0xec940e9f nd_region_attribute_group +EXPORT_SYMBOL_GPL vmlinux 0xecb07962 shmem_read_mapping_page_gfp +EXPORT_SYMBOL_GPL vmlinux 0xed2a0295 extcon_get_edev_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0xed3d4380 nfq_ct_hook +EXPORT_SYMBOL_GPL vmlinux 0xed418d6e device_remove_file_self +EXPORT_SYMBOL_GPL vmlinux 0xed5df863 gnttab_unmap_refs_sync +EXPORT_SYMBOL_GPL vmlinux 0xed690235 blk_add_request_payload +EXPORT_SYMBOL_GPL vmlinux 0xed931d90 dev_attr_em_message_type +EXPORT_SYMBOL_GPL vmlinux 0xed9711a8 list_lru_count_node +EXPORT_SYMBOL_GPL vmlinux 0xeda57367 tcp_done +EXPORT_SYMBOL_GPL vmlinux 0xeda8f3ec usb_autopm_get_interface_no_resume +EXPORT_SYMBOL_GPL vmlinux 0xedad0d3a i2c_generic_gpio_recovery +EXPORT_SYMBOL_GPL vmlinux 0xedbc36d2 irq_gc_mask_clr_bit +EXPORT_SYMBOL_GPL vmlinux 0xedbc6f67 gnttab_end_foreign_access +EXPORT_SYMBOL_GPL vmlinux 0xedcf0508 blk_mq_register_disk +EXPORT_SYMBOL_GPL vmlinux 0xedea6f15 btree_visitor +EXPORT_SYMBOL_GPL vmlinux 0xedfab8d7 usb_init_urb +EXPORT_SYMBOL_GPL vmlinux 0xee144a27 regulator_set_voltage +EXPORT_SYMBOL_GPL vmlinux 0xee1a69fd regcache_cache_only +EXPORT_SYMBOL_GPL vmlinux 0xee428ac8 fl6_sock_lookup +EXPORT_SYMBOL_GPL vmlinux 0xee504c11 acpi_subsys_suspend_late +EXPORT_SYMBOL_GPL vmlinux 0xee69d18a acpi_processor_get_performance_info +EXPORT_SYMBOL_GPL vmlinux 0xee6b71c4 syscon_regmap_lookup_by_compatible +EXPORT_SYMBOL_GPL vmlinux 0xee74efc2 regmap_can_raw_write +EXPORT_SYMBOL_GPL vmlinux 0xeee9463b crypto_register_pcomp +EXPORT_SYMBOL_GPL vmlinux 0xeefdbdf3 pci_find_ht_capability +EXPORT_SYMBOL_GPL vmlinux 0xef081deb inet6_lookup_listener +EXPORT_SYMBOL_GPL vmlinux 0xef10aba2 devm_rtc_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xef1ab7c0 look_up_OID +EXPORT_SYMBOL_GPL vmlinux 0xef1f6e23 apei_resources_request +EXPORT_SYMBOL_GPL vmlinux 0xef409b74 kmsg_dump_get_line +EXPORT_SYMBOL_GPL vmlinux 0xef464c28 getboottime64 +EXPORT_SYMBOL_GPL vmlinux 0xef6c3f70 round_jiffies_up_relative +EXPORT_SYMBOL_GPL vmlinux 0xef6ca802 bsg_unregister_queue +EXPORT_SYMBOL_GPL vmlinux 0xef6fbfa8 usb_hcd_unmap_urb_setup_for_dma +EXPORT_SYMBOL_GPL vmlinux 0xef725e1a ata_dev_disable +EXPORT_SYMBOL_GPL vmlinux 0xef8c7850 pcap_adc_async +EXPORT_SYMBOL_GPL vmlinux 0xef8cd9fe devm_usb_get_phy_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0xef94da14 usb_clear_halt +EXPORT_SYMBOL_GPL vmlinux 0xefa2c27d register_tracepoint_module_notifier +EXPORT_SYMBOL_GPL vmlinux 0xeff4a0ad usb_hub_claim_port +EXPORT_SYMBOL_GPL vmlinux 0xeff5f575 devm_pwm_get +EXPORT_SYMBOL_GPL vmlinux 0xf018ba2a usb_block_urb +EXPORT_SYMBOL_GPL vmlinux 0xf03c072f __ftrace_vbprintk +EXPORT_SYMBOL_GPL vmlinux 0xf054ac97 intel_msic_irq_read +EXPORT_SYMBOL_GPL vmlinux 0xf0696401 acpi_pci_detect_ejectable +EXPORT_SYMBOL_GPL vmlinux 0xf06a6dcb cpuidle_get_cpu_driver +EXPORT_SYMBOL_GPL vmlinux 0xf0727f12 ktime_get_raw_fast_ns +EXPORT_SYMBOL_GPL vmlinux 0xf079f7f0 sata_scr_read +EXPORT_SYMBOL_GPL vmlinux 0xf0a9caab xen_xenbus_fops +EXPORT_SYMBOL_GPL vmlinux 0xf0bf8c73 __efivar_entry_iter +EXPORT_SYMBOL_GPL vmlinux 0xf0caf38a vfs_cancel_lock +EXPORT_SYMBOL_GPL vmlinux 0xf0d9b3bb ip6_sk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0xf0f5dbc2 timerqueue_iterate_next +EXPORT_SYMBOL_GPL vmlinux 0xf0f91e6e devm_usb_get_phy_dev +EXPORT_SYMBOL_GPL vmlinux 0xf11d6907 virtqueue_notify +EXPORT_SYMBOL_GPL vmlinux 0xf12b8e84 cpufreq_freq_attr_scaling_available_freqs +EXPORT_SYMBOL_GPL vmlinux 0xf1338257 sdhci_pci_o2_probe +EXPORT_SYMBOL_GPL vmlinux 0xf1566ca8 pm_generic_thaw_noirq +EXPORT_SYMBOL_GPL vmlinux 0xf162046f device_property_read_u8_array +EXPORT_SYMBOL_GPL vmlinux 0xf16ab521 __rtnl_register +EXPORT_SYMBOL_GPL vmlinux 0xf1755507 __init_kthread_worker +EXPORT_SYMBOL_GPL vmlinux 0xf1796f07 devm_kfree +EXPORT_SYMBOL_GPL vmlinux 0xf184d189 kernel_power_off +EXPORT_SYMBOL_GPL vmlinux 0xf194ef86 pci_cfg_access_unlock +EXPORT_SYMBOL_GPL vmlinux 0xf197b8b8 xenbus_dev_is_online +EXPORT_SYMBOL_GPL vmlinux 0xf1b31314 delayacct_on +EXPORT_SYMBOL_GPL vmlinux 0xf1b551d9 ibft_addr +EXPORT_SYMBOL_GPL vmlinux 0xf1c9c5d9 rio_release_inb_dbell +EXPORT_SYMBOL_GPL vmlinux 0xf1d024a1 ip6_flush_pending_frames +EXPORT_SYMBOL_GPL vmlinux 0xf1d61a8e regmap_field_read +EXPORT_SYMBOL_GPL vmlinux 0xf1f27eff usb_unlocked_enable_lpm +EXPORT_SYMBOL_GPL vmlinux 0xf1fc1548 pci_disable_sriov +EXPORT_SYMBOL_GPL vmlinux 0xf2003cd8 phy_init +EXPORT_SYMBOL_GPL vmlinux 0xf21e1f9b disable_percpu_irq +EXPORT_SYMBOL_GPL vmlinux 0xf23fafd5 crypto_hash_walk_done +EXPORT_SYMBOL_GPL vmlinux 0xf27977e2 async_synchronize_cookie_domain +EXPORT_SYMBOL_GPL vmlinux 0xf2918c5d clk_register_fractional_divider +EXPORT_SYMBOL_GPL vmlinux 0xf2cf3ba1 ablkcipher_walk_phys +EXPORT_SYMBOL_GPL vmlinux 0xf2ddc265 tcp_reno_cong_avoid +EXPORT_SYMBOL_GPL vmlinux 0xf2eb8f69 efivar_validate +EXPORT_SYMBOL_GPL vmlinux 0xf2f077cc pkey_id_type_name +EXPORT_SYMBOL_GPL vmlinux 0xf2fca922 uart_parse_options +EXPORT_SYMBOL_GPL vmlinux 0xf30e105d ezx_pcap_write +EXPORT_SYMBOL_GPL vmlinux 0xf30f8fab extcon_set_state +EXPORT_SYMBOL_GPL vmlinux 0xf30fda27 lzo1x_decompress_safe +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 0xf36a0c16 extcon_update_state +EXPORT_SYMBOL_GPL vmlinux 0xf3741016 find_module +EXPORT_SYMBOL_GPL vmlinux 0xf3808cb1 get_state_synchronize_rcu +EXPORT_SYMBOL_GPL vmlinux 0xf38c6446 rio_unlock_device +EXPORT_SYMBOL_GPL vmlinux 0xf3a5a3b3 scsi_queue_work +EXPORT_SYMBOL_GPL vmlinux 0xf3b451ca kdb_poll_funcs +EXPORT_SYMBOL_GPL vmlinux 0xf3bcc9ea dm_internal_suspend_fast +EXPORT_SYMBOL_GPL vmlinux 0xf3d8d23a desc_to_gpio +EXPORT_SYMBOL_GPL vmlinux 0xf3dd3ec1 atomic_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0xf3e1fb20 __pci_reset_function +EXPORT_SYMBOL_GPL vmlinux 0xf3ebf4eb arch_apei_report_mem_error +EXPORT_SYMBOL_GPL vmlinux 0xf3f18238 ktime_get_resolution_ns +EXPORT_SYMBOL_GPL vmlinux 0xf40258e4 mmc_app_cmd +EXPORT_SYMBOL_GPL vmlinux 0xf4077bec tty_ldisc_deref +EXPORT_SYMBOL_GPL vmlinux 0xf40f6c10 blocking_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xf4125de9 crypto_unregister_shash +EXPORT_SYMBOL_GPL vmlinux 0xf44fc498 ata_dummy_port_info +EXPORT_SYMBOL_GPL vmlinux 0xf46bb7f8 devm_phy_put +EXPORT_SYMBOL_GPL vmlinux 0xf4719cc9 ata_wait_after_reset +EXPORT_SYMBOL_GPL vmlinux 0xf4858ada debugfs_create_symlink +EXPORT_SYMBOL_GPL vmlinux 0xf494f618 mmc_regulator_get_ocrmask +EXPORT_SYMBOL_GPL vmlinux 0xf499fdb2 rcu_barrier_bh +EXPORT_SYMBOL_GPL vmlinux 0xf4d22ddb ata_pci_device_suspend +EXPORT_SYMBOL_GPL vmlinux 0xf4e1deb0 __gpiod_get_index_optional +EXPORT_SYMBOL_GPL vmlinux 0xf4eb8f6b pci_assign_unassigned_bridge_resources +EXPORT_SYMBOL_GPL vmlinux 0xf4fc2d6c __ring_buffer_alloc +EXPORT_SYMBOL_GPL vmlinux 0xf5067492 dma_request_slave_channel +EXPORT_SYMBOL_GPL vmlinux 0xf507c3af power_supply_property_is_writeable +EXPORT_SYMBOL_GPL vmlinux 0xf5245230 crypto_register_instance +EXPORT_SYMBOL_GPL vmlinux 0xf5260138 sk_clear_memalloc +EXPORT_SYMBOL_GPL vmlinux 0xf52c8f09 devm_spi_register_master +EXPORT_SYMBOL_GPL vmlinux 0xf52d1247 acpi_bus_trim +EXPORT_SYMBOL_GPL vmlinux 0xf54bd49b lcm +EXPORT_SYMBOL_GPL vmlinux 0xf553318d cpuidle_pause_and_lock +EXPORT_SYMBOL_GPL vmlinux 0xf553be3c sock_diag_unregister +EXPORT_SYMBOL_GPL vmlinux 0xf563acbc platform_get_resource +EXPORT_SYMBOL_GPL vmlinux 0xf573541b __i2c_board_lock +EXPORT_SYMBOL_GPL vmlinux 0xf5785b42 evtchn_get +EXPORT_SYMBOL_GPL vmlinux 0xf5945bac gnttab_free_grant_references +EXPORT_SYMBOL_GPL vmlinux 0xf59b922e aead_geniv_free +EXPORT_SYMBOL_GPL vmlinux 0xf5a691cd invalidate_bh_lrus +EXPORT_SYMBOL_GPL vmlinux 0xf5b8084c regmap_get_device +EXPORT_SYMBOL_GPL vmlinux 0xf5bcc632 usb_hcd_unmap_urb_for_dma +EXPORT_SYMBOL_GPL vmlinux 0xf5e87ec3 lp8788_read_byte +EXPORT_SYMBOL_GPL vmlinux 0xf5f065e3 tpm2_probe +EXPORT_SYMBOL_GPL vmlinux 0xf612555b devm_regulator_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0xf615386f percpu_ida_destroy +EXPORT_SYMBOL_GPL vmlinux 0xf61554f4 efivars_unregister +EXPORT_SYMBOL_GPL vmlinux 0xf623e8e0 __irq_set_handler +EXPORT_SYMBOL_GPL vmlinux 0xf650533f inet_csk_listen_stop +EXPORT_SYMBOL_GPL vmlinux 0xf66807cc devm_led_classdev_unregister +EXPORT_SYMBOL_GPL vmlinux 0xf6917295 tpm2_shutdown +EXPORT_SYMBOL_GPL vmlinux 0xf6c71a25 cper_severity_str +EXPORT_SYMBOL_GPL vmlinux 0xf6c8dc62 cpu_hotplug_enable +EXPORT_SYMBOL_GPL vmlinux 0xf6e824d9 ata_eh_analyze_ncq_error +EXPORT_SYMBOL_GPL vmlinux 0xf6e874f5 ata_timing_merge +EXPORT_SYMBOL_GPL vmlinux 0xf6e8c486 class_remove_file_ns +EXPORT_SYMBOL_GPL vmlinux 0xf7016530 xenbus_gather +EXPORT_SYMBOL_GPL vmlinux 0xf7253219 usb_phy_set_event +EXPORT_SYMBOL_GPL vmlinux 0xf7322bc8 pv_time_ops +EXPORT_SYMBOL_GPL vmlinux 0xf74d636b mnt_want_write_file +EXPORT_SYMBOL_GPL vmlinux 0xf75eb694 regmap_parse_val +EXPORT_SYMBOL_GPL vmlinux 0xf76e3f47 rio_mport_send_doorbell +EXPORT_SYMBOL_GPL vmlinux 0xf77175e8 ata_scsi_slave_destroy +EXPORT_SYMBOL_GPL vmlinux 0xf787b81e acpi_dma_request_slave_chan_by_index +EXPORT_SYMBOL_GPL vmlinux 0xf7915342 rtc_update_irq_enable +EXPORT_SYMBOL_GPL vmlinux 0xf79cb4a1 regulator_list_voltage_linear +EXPORT_SYMBOL_GPL vmlinux 0xf7a2dd08 tty_register_device_attr +EXPORT_SYMBOL_GPL vmlinux 0xf7c3f273 xen_resume_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0xf7daadc3 register_kprobes +EXPORT_SYMBOL_GPL vmlinux 0xf7e4e926 bsg_setup_queue +EXPORT_SYMBOL_GPL vmlinux 0xf810b9b9 blk_end_request_err +EXPORT_SYMBOL_GPL vmlinux 0xf815c271 component_master_add +EXPORT_SYMBOL_GPL vmlinux 0xf8170322 __put_net +EXPORT_SYMBOL_GPL vmlinux 0xf8242d65 _submit_bh +EXPORT_SYMBOL_GPL vmlinux 0xf82f16b3 execute_in_process_context +EXPORT_SYMBOL_GPL vmlinux 0xf82f3657 work_on_cpu +EXPORT_SYMBOL_GPL vmlinux 0xf83a39d3 put_pid +EXPORT_SYMBOL_GPL vmlinux 0xf8499be0 cpci_hp_register_controller +EXPORT_SYMBOL_GPL vmlinux 0xf861161c ata_qc_complete +EXPORT_SYMBOL_GPL vmlinux 0xf874073a acpi_debugfs_dir +EXPORT_SYMBOL_GPL vmlinux 0xf8802492 print_stack_trace +EXPORT_SYMBOL_GPL vmlinux 0xf8a0f9d6 pm_runtime_allow +EXPORT_SYMBOL_GPL vmlinux 0xf8a57590 devm_regmap_field_free +EXPORT_SYMBOL_GPL vmlinux 0xf8c79747 pci_slots_kset +EXPORT_SYMBOL_GPL vmlinux 0xf8e5fac6 get_pid_task +EXPORT_SYMBOL_GPL vmlinux 0xf8e6b564 hibernation_set_ops +EXPORT_SYMBOL_GPL vmlinux 0xf8f3a0fb ata_ratelimit +EXPORT_SYMBOL_GPL vmlinux 0xf8fa45cd devres_for_each_res +EXPORT_SYMBOL_GPL vmlinux 0xf8fe3d0b kmsg_dump_register +EXPORT_SYMBOL_GPL vmlinux 0xf92ce956 kdb_printf +EXPORT_SYMBOL_GPL vmlinux 0xf932015f __raw_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xf93baf9e pm_runtime_force_suspend +EXPORT_SYMBOL_GPL vmlinux 0xf95322f4 kthread_parkme +EXPORT_SYMBOL_GPL vmlinux 0xf9547a17 divider_recalc_rate +EXPORT_SYMBOL_GPL vmlinux 0xf95d865b cpufreq_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0xf9608bc5 pci_rescan_bus +EXPORT_SYMBOL_GPL vmlinux 0xf9765833 dmi_match +EXPORT_SYMBOL_GPL vmlinux 0xf991c09f rcu_qs_ctr +EXPORT_SYMBOL_GPL vmlinux 0xf996d75f devm_usb_put_phy +EXPORT_SYMBOL_GPL vmlinux 0xf9a054b5 __round_jiffies +EXPORT_SYMBOL_GPL vmlinux 0xf9c0e842 max8997_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0xf9c2da57 clkdev_create +EXPORT_SYMBOL_GPL vmlinux 0xf9ca3160 ata_id_xfermask +EXPORT_SYMBOL_GPL vmlinux 0xf9d9264e xen_have_vector_callback +EXPORT_SYMBOL_GPL vmlinux 0xfa1472e9 fwnode_property_read_u8_array +EXPORT_SYMBOL_GPL vmlinux 0xfa1d283c pci_ioremap_bar +EXPORT_SYMBOL_GPL vmlinux 0xfa1eb910 unregister_syscore_ops +EXPORT_SYMBOL_GPL vmlinux 0xfa1f4662 scatterwalk_start +EXPORT_SYMBOL_GPL vmlinux 0xfa2818d7 ahash_attr_alg +EXPORT_SYMBOL_GPL vmlinux 0xfa34d9fe usb_phy_gen_create_phy +EXPORT_SYMBOL_GPL vmlinux 0xfa35044a alternatives_patched +EXPORT_SYMBOL_GPL vmlinux 0xfa3cfe8f irq_get_domain_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0xfa576b06 sysfs_remove_mount_point +EXPORT_SYMBOL_GPL vmlinux 0xfa5f1cce pci_dev_run_wake +EXPORT_SYMBOL_GPL vmlinux 0xfa832bd1 devres_remove_group +EXPORT_SYMBOL_GPL vmlinux 0xfa9e33f7 klist_init +EXPORT_SYMBOL_GPL vmlinux 0xfaa78efa pci_reset_pri +EXPORT_SYMBOL_GPL vmlinux 0xfabdd1a7 find_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0xfad20415 tpm_chip_unregister +EXPORT_SYMBOL_GPL vmlinux 0xfad4e9c1 regulator_get_mode +EXPORT_SYMBOL_GPL vmlinux 0xfb0d1229 fb_deferred_io_cleanup +EXPORT_SYMBOL_GPL vmlinux 0xfb1c00a5 usb_hub_release_port +EXPORT_SYMBOL_GPL vmlinux 0xfb1c5079 driver_find +EXPORT_SYMBOL_GPL vmlinux 0xfb25ce06 btree_get_prev +EXPORT_SYMBOL_GPL vmlinux 0xfb32b30f ring_buffer_read_prepare_sync +EXPORT_SYMBOL_GPL vmlinux 0xfb57aa9b lp8788_write_byte +EXPORT_SYMBOL_GPL vmlinux 0xfb5c8933 print_context_stack_bp +EXPORT_SYMBOL_GPL vmlinux 0xfb647e62 regulator_put +EXPORT_SYMBOL_GPL vmlinux 0xfb64b230 acpi_processor_ffh_cstate_probe +EXPORT_SYMBOL_GPL vmlinux 0xfb6eedf9 power_group_name +EXPORT_SYMBOL_GPL vmlinux 0xfb83db03 cpufreq_show_cpus +EXPORT_SYMBOL_GPL vmlinux 0xfb924c83 max8997_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0xfb9df568 device_register +EXPORT_SYMBOL_GPL vmlinux 0xfbad6e6f securityfs_create_file +EXPORT_SYMBOL_GPL vmlinux 0xfbbd41ca no_action +EXPORT_SYMBOL_GPL vmlinux 0xfbcfdcfa bpf_prog_free +EXPORT_SYMBOL_GPL vmlinux 0xfbde29ea __inet_hash_nolisten +EXPORT_SYMBOL_GPL vmlinux 0xfbdf8585 ftrace_set_filter +EXPORT_SYMBOL_GPL vmlinux 0xfbf8f12c alloc_page_buffers +EXPORT_SYMBOL_GPL vmlinux 0xfc03d97a page_is_ram +EXPORT_SYMBOL_GPL vmlinux 0xfc093101 xenbus_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0xfc0c0879 regulator_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0xfc1e73f5 pci_sriov_get_totalvfs +EXPORT_SYMBOL_GPL vmlinux 0xfc254d15 gnttab_free_auto_xlat_frames +EXPORT_SYMBOL_GPL vmlinux 0xfc3b4246 acpi_bus_update_power +EXPORT_SYMBOL_GPL vmlinux 0xfc3c3d97 uhci_reset_hc +EXPORT_SYMBOL_GPL vmlinux 0xfc77dbf6 dma_buf_kunmap +EXPORT_SYMBOL_GPL vmlinux 0xfc968c8b apei_exec_write_register_value +EXPORT_SYMBOL_GPL vmlinux 0xfcbccadf usb_create_hcd +EXPORT_SYMBOL_GPL vmlinux 0xfcd7bc0b ring_buffer_empty +EXPORT_SYMBOL_GPL vmlinux 0xfd033800 register_pernet_device +EXPORT_SYMBOL_GPL vmlinux 0xfd2293d3 iommu_group_remove_device +EXPORT_SYMBOL_GPL vmlinux 0xfd2ad059 usb_alloc_coherent +EXPORT_SYMBOL_GPL vmlinux 0xfd328898 fuse_file_poll +EXPORT_SYMBOL_GPL vmlinux 0xfd4109b7 __netpoll_free_async +EXPORT_SYMBOL_GPL vmlinux 0xfd4d224d irq_domain_add_simple +EXPORT_SYMBOL_GPL vmlinux 0xfd51b281 gnttab_end_foreign_access_ref +EXPORT_SYMBOL_GPL vmlinux 0xfd70365c ata_timing_compute +EXPORT_SYMBOL_GPL vmlinux 0xfd7243c7 erst_disable +EXPORT_SYMBOL_GPL vmlinux 0xfd7a50ea set_timer_slack +EXPORT_SYMBOL_GPL vmlinux 0xfda0d56a wm8350_reg_unlock +EXPORT_SYMBOL_GPL vmlinux 0xfda75e7f regulator_unregister +EXPORT_SYMBOL_GPL vmlinux 0xfdb4e0bb ping_queue_rcv_skb +EXPORT_SYMBOL_GPL vmlinux 0xfdb9bbda platform_device_alloc +EXPORT_SYMBOL_GPL vmlinux 0xfdbd10d3 posix_timers_register_clock +EXPORT_SYMBOL_GPL vmlinux 0xfdf53b82 trace_call_bpf +EXPORT_SYMBOL_GPL vmlinux 0xfe085393 sata_lpm_ignore_phy_events +EXPORT_SYMBOL_GPL vmlinux 0xfe178b45 crypto_larval_lookup +EXPORT_SYMBOL_GPL vmlinux 0xfe2dd3f7 debugfs_remove_recursive +EXPORT_SYMBOL_GPL vmlinux 0xfe35be4f tcp_register_congestion_control +EXPORT_SYMBOL_GPL vmlinux 0xfe505889 fpu__activate_curr +EXPORT_SYMBOL_GPL vmlinux 0xfe727411 get_phys_to_machine +EXPORT_SYMBOL_GPL vmlinux 0xfe8a9a5b regulator_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xfe990052 gpio_free +EXPORT_SYMBOL_GPL vmlinux 0xfe9b34a6 pci_probe_reset_bus +EXPORT_SYMBOL_GPL vmlinux 0xfe9e2af5 iommu_attach_device +EXPORT_SYMBOL_GPL vmlinux 0xfeb50cd6 crypto_dequeue_request +EXPORT_SYMBOL_GPL vmlinux 0xfebe72f2 devres_alloc +EXPORT_SYMBOL_GPL vmlinux 0xfed11ed1 usb_mon_deregister +EXPORT_SYMBOL_GPL vmlinux 0xfef8a166 trace_current_buffer_lock_reserve +EXPORT_SYMBOL_GPL vmlinux 0xff05fa13 vring_interrupt +EXPORT_SYMBOL_GPL vmlinux 0xff20a999 gpio_to_desc +EXPORT_SYMBOL_GPL vmlinux 0xff291ecf clk_unregister_divider +EXPORT_SYMBOL_GPL vmlinux 0xff2ce747 machine_check_poll +EXPORT_SYMBOL_GPL vmlinux 0xff5a8cfe cn_del_callback +EXPORT_SYMBOL_GPL vmlinux 0xff633558 vprintk_default +EXPORT_SYMBOL_GPL vmlinux 0xff6c2564 pci_bus_add_device +EXPORT_SYMBOL_GPL vmlinux 0xff7901af virtqueue_poll +EXPORT_SYMBOL_GPL vmlinux 0xff79f276 hvc_poll +EXPORT_SYMBOL_GPL vmlinux 0xff8da0f0 inverse_translate +EXPORT_SYMBOL_GPL vmlinux 0xff9a48f3 fwnode_property_read_string_array +EXPORT_SYMBOL_GPL vmlinux 0xffda0a3b crypto_alloc_rng +EXPORT_SYMBOL_GPL vmlinux 0xffdfa1a8 kobject_init_and_add +EXPORT_SYMBOL_GPL vmlinux 0xffff25d4 sysfs_remove_files --- linux-raspi2-4.2.0.orig/debian.master/abi/4.2.0-26.31/i386/lowlatency.compiler +++ linux-raspi2-4.2.0/debian.master/abi/4.2.0-26.31/i386/lowlatency.compiler @@ -0,0 +1 @@ +GCC: (Ubuntu 5.2.1-22ubuntu2) 5.2.1 20151010 --- linux-raspi2-4.2.0.orig/debian.master/abi/4.2.0-26.31/i386/lowlatency.modules +++ linux-raspi2-4.2.0/debian.master/abi/4.2.0-26.31/i386/lowlatency.modules @@ -0,0 +1,4632 @@ +3c509 +3c515 +3c574_cs +3c589_cs +3c59x +3w-9xxx +3w-sas +3w-xxxx +53c700 +6lowpan +6pack +8021q +8139cp +8139too +8250_accent +8250_boca +8250_dw +8250_exar_st16c554 +8250_fintek +8250_fourport +8250_hub6 +8255 +8255_pci +8390 +8390p +842 +842_compress +842_decompress +88pm800 +88pm805 +88pm80x +88pm80x_onkey +88pm8607 +88pm860x_battery +88pm860x_bl +88pm860x_charger +88pm860x_onkey +88pm860x-ts +9p +9pnet +9pnet_rdma +9pnet_virtio +a100u2w +a3d +a8293 +aacraid +aat2870_bl +aat2870-regulator +ab3100 +ab3100-otp +abituguru +abituguru3 +ablk_helper +ac97_bus +acard-ahci +acecad +acenic +acerhdf +acer-wmi +acpi-als +acpi_extlog +acpi_ipmi +acpi_pad +acpiphp_ibm +acpi_power_meter +acpi_thermal_rel +acquirewdt +act2000 +act200l-sir +act8865-regulator +act_bpf +act_connmark +act_csum +act_gact +act_ipt +actisys-sir +act_mirred +act_nat +act_pedit +act_police +act_simple +act_skbedit +act_vlan +ad2s1200 +ad2s1210 +ad2s90 +ad5064 +ad525x_dpot +ad525x_dpot-i2c +ad525x_dpot-spi +ad5360 +ad5380 +ad5398 +ad5421 +ad5446 +ad5449 +ad5504 +ad5624r_spi +ad5686 +ad5755 +ad5764 +ad5791 +ad5933 +ad714x +ad714x-i2c +ad714x-spi +ad7150 +ad7152 +ad7192 +ad7266 +ad7280a +ad7291 +ad7298 +ad7303 +ad7314 +ad7414 +ad7418 +ad7476 +ad7606 +ad7746 +ad7780 +ad7791 +ad7793 +ad7816 +ad7877 +ad7879 +ad7879-i2c +ad7879-spi +ad7887 +ad7923 +ad799x +ad8366 +ad9523 +ad9832 +ad9834 +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 +ade7753 +ade7754 +ade7758 +ade7759 +ade7854 +ade7854-i2c +ade7854-spi +adf4350 +adfs +adi +adis16060 +adis16080 +adis16130 +adis16136 +adis16201 +adis16203 +adis16204 +adis16209 +adis16220 +adis16240 +adis16260 +adis16400 +adis16480 +adis_lib +adjd_s311 +adl_pci6208 +adl_pci7x3x +adl_pci8164 +adl_pci9111 +adl_pci9118 +adm1021 +adm1025 +adm1026 +adm1029 +adm1031 +adm1275 +adm8211 +adm9240 +adp5520_bl +adp5520-keys +adp5588-keys +adp5589-keys +adp8860_bl +adp8870_bl +adq12b +ads1015 +ads7828 +ads7846 +ads7871 +ad_sigma_delta +adt7310 +adt7316 +adt7316-i2c +adt7316-spi +adt7410 +adt7411 +adt7462 +adt7470 +adt7475 +adt7x10 +adummy +adutux +adv7170 +adv7175 +adv7180 +adv7511 +adv7604 +adv7842 +advansys +advantechwdt +adv_pci1710 +adv_pci1723 +adv_pci1724 +adv_pci_dio +adxl34x +adxl34x-i2c +adxl34x-spi +adxrs450 +aes-i586 +aesni-intel +af9013 +af9033 +af_alg +affs +af_key +af_packet_diag +af-rxrpc +ah4 +ah6 +aha152x +aha152x_cs +aha1542 +aha1740 +ahci +ahci_platform +aic79xx +aic7xxx +aic94xx +aio_aio12_8 +aio_iiro_16 +aiptek +aircable +airo +airo_cs +airspy +ak8975 +al3320a +algif_aead +algif_hash +algif_rng +algif_skcipher +ali-agp +alienware-wmi +ali-ircc +alim1535_wdt +alim7101_wdt +altera-ci +altera_jtaguart +altera_ps2 +altera-stapl +altera_tse +altera_uart +alx +am53c974 +ambassador +amc6821 +amd +amd5536udc +amd64_edac_mod +amd76x_edac +amd76xrom +amd8111e +amd_freq_sensitivity +amdgpu +amd-rng +amilo-rfkill +amplc_dio200 +amplc_dio200_common +amplc_dio200_pci +amplc_pc236 +amplc_pc236_common +amplc_pc263 +amplc_pci224 +amplc_pci230 +amplc_pci236 +amplc_pci263 +ams369fg06 +analog +anatop-regulator +ansi_cprng +anubis +aoe +apanel +apds9300 +apds9802als +apds990x +apm +apple_bl +appledisplay +apple-gmux +applesmc +appletalk +appletouch +applicom +ar5523 +ar7part +arc4 +arcfb +arcmsr +arcnet +arc_ps2 +arc-rawmode +arc-rimi +arc_uart +arizona-haptics +arizona-i2c +arizona-ldo1 +arizona-micsupp +arizona-spi +ark3116 +arkfb +arptable_filter +arp_tables +arpt_mangle +as102_fe +as3711_bl +as3711-regulator +as3935 +as5011 +asb100 +asc7621 +asix +ast +asus_atk0110 +asus-laptop +asus-nb-wmi +asus-wmi +async_memcpy +async_pq +async_raid6_recov +async_tx +async_xor +at24 +at25 +at76c50x-usb +at803x +at86rf230 +atbm8830 +aten +ath +ath10k_core +ath10k_pci +ath3k +ath5k +ath6kl_core +ath6kl_sdio +ath6kl_usb +ath9k +ath9k_common +ath9k_htc +ath9k_hw +ati-agp +ati_remote +ati_remote2 +atl1 +atl1c +atl1e +atl2 +atlas_btns +atm +atmel +atmel_cs +atmel_mxt_ts +atmel_pci +atmtcp +atp +atp870u +atusb +atxp1 +aty128fb +atyfb +au0828 +au8522_common +au8522_decoder +au8522_dig +aufs +auo_k1900fb +auo_k1901fb +auo_k190x +auo-pixcir-ts +authenc +authencesn +auth_rpcgss +autofs4 +avma1_cs +avm_cs +avmfritz +ax25 +ax88179_178a +axnet_cs +axp20x-pek +axp20x-regulator +axp288_adc +axp288_charger +axp288_fuel_gauge +b1 +b1dma +b1isa +b1pci +b1pcmcia +b2c2-flexcop +b2c2-flexcop-pci +b2c2-flexcop-usb +b43 +b43legacy +b44 +bas_gigaset +batman-adv +baycom_epp +baycom_par +baycom_ser_fdx +baycom_ser_hdx +bcache +bch +bcm203x +bcm3510 +bcm590xx +bcm590xx-regulator +bcm5974 +bcm7xxx +bcm87xx +bcma +bcma-hcd +bd6107 +bdc +bdc_pci +be2iscsi +be2net +befs +belkin_sa +bfa +bfs +bfusb +bh1750 +bh1770glc +bh1780gli +binfmt_aout +binfmt_misc +block2mtd +blocklayoutdriver +blowfish_common +blowfish_generic +bluecard_cs +bluetooth +bluetooth_6lowpan +bma150 +bma180 +bmc150-accel +bmc150_magn +bmg160 +bmp085-i2c +bmp085-spi +bmp280 +bna +bnep +bnx2 +bnx2fc +bnx2i +bnx2x +bonding +bpa10x +bpck +bpck6 +bpqether +bq2415x_charger +bq24190_charger +bq24257_charger +bq24735-charger +bq25890_charger +bq27x00_battery +br2684 +brcmfmac +brcmsmac +brcmutil +bridge +br_netfilter +broadcom +broadsheetfb +bsd_comp +bt3c_cs +bt819 +bt856 +bt866 +bt878 +btbcm +btcoexist +btintel +btmrvl +btmrvl_sdio +btrfs +btrtl +btsdio +bttv +btuart_cs +btusb +btwilink +bu21013_ts +budget +budget-av +budget-ci +budget-core +budget-patch +BusLogic +c101 +c2port-duramar2150 +c4 +c67x00 +c6xdigio +cachefiles +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-raw +capi +capidrv +capmode +carl9170 +carminefb +cassini +cast5_generic +cast6_generic +cast_common +catc +cb710 +cb710-mmc +cb_das16_cs +cb_pcidas +cb_pcidas64 +cb_pcidda +cb_pcimdas +cb_pcimdda +cc10001_adc +cc2520 +cc770 +cc770_isa +cc770_platform +c_can +c_can_pci +c_can_platform +cciss +ccm +ccp +ccp-crypto +cdc-acm +cdc_eem +cdc_ether +cdc_mbim +cdc_ncm +cdc-phonet +cdc_subset +cdc-wdm +ceph +cfag12864b +cfag12864bfb +cfg80211 +cfi_cmdset_0001 +cfi_cmdset_0002 +cfi_cmdset_0020 +cfi_probe +cfi_util +cfspi_slave +ch +ch341 +ch7006 +chacha20_generic +chacha20poly1305 +chaoskey +chipreg +chnl_net +chromeos_laptop +chromeos_pstore +cicada +cifs +ci_hdrc +ci_hdrc_msm +ci_hdrc_pci +ci_hdrc_usb2 +ci_hdrc_zevio +cirrus +cirrusfb +ck804xrom +classmate-laptop +clip +clk-cdce706 +clk-palmas +clk-pwm +clk-s2mps11 +clk-si5351 +clk-twl6040 +clk-wm831x +cls_basic +cls_bpf +cls_cgroup +cls_flow +cls_flower +cls_fw +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_cs +com20020-isa +com20020-pci +com90io +com90xx +comedi +comedi_8254 +comedi_8255 +comedi_bond +comedi_isadma +comedi_parport +comedi_pci +comedi_pcmcia +comedi_test +comedi_usb +comm +compal-laptop +configfs +contec_pci_dio +cops +cordic +core +coretemp +cosa +cp210x +cpcihp_generic +cpcihp_zt5550 +cpia2 +cpqphp +cpsw_ale +cpu5wdt +cpuid +cpu-notifier-error-inject +cramfs +cr_bllcd +crc32 +crc32-pclmul +crc7 +crc8 +crc-ccitt +crc-itu-t +cros_ec +cros_ec_devs +cros_ec_i2c +cros_ec_keyb +cros_ec_lpc +cros_ec_spi +crvml +cryptd +cryptoloop +crypto_null +crypto_user +cs5345 +cs53l32a +cs5535-mfd +cs553x_nand +cs89x0 +csiostor +ct82c710 +ctr +cts +cuse +cw1200_core +cw1200_wlan_sdio +cw1200_wlan_spi +cx18 +cx18-alsa +cx22700 +cx22702 +cx231xx +cx231xx-alsa +cx231xx-dvb +cx2341x +cx23885 +cx24110 +cx24113 +cx24116 +cx24117 +cx24120 +cx24123 +cx25821 +cx25821-alsa +cx25840 +cx82310_eth +cx8800 +cx8802 +cx88-alsa +cx88-blackbird +cx88-dvb +cx88-vp3054-i2c +cx88xx +cxacru +cxd2099 +cxd2820r +cxgb +cxgb3 +cxgb3i +cxgb4 +cxgb4i +cxgb4vf +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 +da9030_battery +da9034-ts +da903x +da903x_bl +da9052-battery +da9052_bl +da9052-hwmon +da9052_onkey +da9052-regulator +da9052_tsi +da9052_wdt +da9055-hwmon +da9055_onkey +da9055-regulator +da9055_wdt +da9063_onkey +da9063-regulator +da9063_wdt +da9150-charger +da9150-core +da9150-gpadc +da9210-regulator +da9211-regulator +dac02 +DAC960 +daqboard2000 +das08 +das08_cs +das08_isa +das08_pci +das16 +das16m1 +das1800 +das6402 +das800 +davicom +db9 +dc395x +dca +dccp +dccp_diag +dccp_ipv4 +dccp_ipv6 +dccp_probe +dcdbas +ddbridge +de2104x +de4x5 +decnet +deflate +defxx +dell-laptop +dell-led +dell-rbtn +dell_rbu +dell-smm-hwmon +dell-smo8800 +dell-wmi +dell-wmi-aio +denali +denali_dt +denali_pci +des_generic +designware_i2s +dgap +dgnc +dht11 +dib0070 +dib0090 +dib3000mb +dib3000mc +dib7000m +dib7000p +dib8000 +dibx000_common +digi_acceleport +diskonchip +divacapi +divadidd +diva_idi +diva_mnt +divas +dl2k +dlci +dlm +dln2 +dm1105 +dm9601 +dm-bio-prison +dm-bufio +dm-cache +dm-cache-cleaner +dm-cache-mq +dm-cache-smq +dm-crypt +dm-delay +dme1737 +dm-era +dmfe +dm-flakey +dmi-sysfs +dm-log +dm-log-userspace +dm-log-writes +dmm32at +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-verity +dmx3191d +dm-zero +dnet +dn_rtmsg +docg3 +docg4 +donauboe +dp83867 +dpt_i2o +drbd +drbg +drm +drm_kms_helper +drv260x +drv2665 +drv2667 +drx39xyj +drxd +drxk +ds1621 +ds1682 +ds1wm +ds2482 +ds2490 +ds2760_battery +ds2780_battery +ds2781_battery +ds2782_battery +ds3000 +ds620 +dsbr100 +dscc4 +dss1_divert +dst +dst_ca +dstr +dt2801 +dt2811 +dt2814 +dt2815 +dt2817 +dt282x +dt3000 +dt3155 +dt9812 +dtc +dtl1_cs +dtlk +dummy +dummy-irq +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-digitv +dvb-usb-dtt200u +dvb-usb-dtv5100 +dvb-usb-dvbsky +dvb-usb-dw2102 +dvb-usb-ec168 +dvb-usb-friio +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_v2 +dvb-usb-vp702x +dvb-usb-vp7045 +dwc3 +dwc3-pci +dw_dmac +dw_dmac_core +dw_dmac_pci +dwmac-generic +dw_wdt +dyna_pci10xx +dynapro +e100 +e1000 +e1000e +e3x0-button +e4000 +e752x_edac +e7xxx_edac +earth-pt1 +earth-pt3 +eata +ebt_802_3 +ebtable_broute +ebtable_filter +ebtable_nat +ebtables +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 +ec100 +ec_bhf +echainiv +echo +ec_sys +edac_core +edac_mce_amd +edt-ft5x06 +eeepc-laptop +eeepc-wmi +eeprom +eeprom_93cx6 +eeprom_93xx46 +eeti_ts +efficeon-agp +efi-pstore +efs +ehset +einj +elan_i2c +elants_i2c +elo +elsa_cs +em28xx +em28xx-alsa +em28xx-dvb +em28xx-rc +em28xx-v4l +emc1403 +emc2103 +emc6w201 +em_canid +em_cmp +emi26 +emi62 +em_ipset +em_meta +em_nbyte +empeg +ems_pci +ems_pcmcia +ems_usb +em_text +emu10k1-gp +em_u32 +enc28j60 +enclosure +ene_ir +eni +enic +epat +epia +epic100 +eql +esas2r +esb2rom +esd_usb2 +esi-sir +esp4 +esp6 +esp_scsi +et1011c +et131x +ethoc +eurotechwdt +evbug +exofs +extcon-adc-jack +extcon-arizona +extcon-axp288 +extcon-gpio +extcon-max14577 +extcon-max77693 +extcon-max77843 +extcon-max8997 +extcon-palmas +extcon-rt8973a +extcon-sm5502 +extcon-usb-gpio +ezusb +f2fs +f71805f +f71808e_wdt +f71882fg +f75375s +f81232 +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_ssd1289 +fb_ssd1306 +fb_ssd1331 +fb_ssd1351 +fb_st7735r +fb_sys_fops +fbtft +fbtft_device +fb_tinylcd +fb_tls8204 +fb_uc1701 +fb_upd161704 +fb_watterott +fc0011 +fc0012 +fc0013 +fc2580 +fcoe +fcrypt +fdomain +fdomain_cs +fealnx +ff-memless +fid +fintek-cir +firedtv +firestream +firewire-core +firewire-net +firewire-ohci +firewire-sbp2 +firewire-serial +fit2 +fit3 +fixed +fl512 +fld +flexfb +floppy +fm10k +fm801-gp +fmc +fmc-chardev +fmc-fakedev +fmc-trivial +fmc-write-eeprom +fm_drv +fmvj18x_cs +fnic +forcedeth +fore_200e +fotg210-hcd +fotg210-udc +fou +freevxfs +friq +frpw +fsa9480 +fscache +fschmd +fsl_lpuart +ft1000 +ft1000_pcmcia +ftdi-elan +ftdi_sio +ftl +fujitsu-laptop +fujitsu-tablet +fujitsu_ts +fusbh200-hcd +g450_pll +g760a +g762 +g_acm_ms +gadgetfs +gamecon +gameport +garmin_gps +garp +g_audio +g_cdc +gcm +g_dbgp +gdmtty +gdmulte +gdmwm +gdth +generic +generic-adc-battery +generic_bl +genet +geneve +geneve_core +gen_probe +geode-aes +geode-rng +g_ether +gf128mul +gf2k +g_ffs +gfs2 +ghash-generic +g_hid +gigaset +girbil-sir +gl518sm +gl520sm +gl620a +gluebi +glue_helper +gma500_gfx +g_mass_storage +g_midi +g_ncm +g_NCR5380 +g_NCR5380_mmio +g_nokia +go7007 +go7007-loader +go7007-usb +goku_udc +goodix +gp2ap002a00f +gp2ap020a00f +gpio +gpio-addr-flash +gpio-adp5520 +gpio-adp5588 +gpio-amd8111 +gpio-arizona +gpio_backlight +gpio-beeper +gpio-charger +gpio-crystalcove +gpio-cs5535 +gpio-da9052 +gpio-da9055 +gpio-dln2 +gpio-dwapb +gpio-f7188x +gpio-fan +gpio-generic +gpio-ich +gpio-ir-recv +gpio-it8761e +gpio-janz-ttl +gpio-kempld +gpio_keys +gpio_keys_polled +gpio-lp3943 +gpio-max7300 +gpio-max7301 +gpio-max730x +gpio-max732x +gpio-mc33880 +gpio-mcp23s08 +gpio-ml-ioh +gpio_mouse +gpio-pca953x +gpio-pcf857x +gpio-pch +gpio-rdc321x +gpio-regulator +gpio-sch +gpio-sch311x +gpio_tilt_polled +gpio-tps65912 +gpio-twl4030 +gpio-twl6040 +gpio-ucb1400 +gpio-viperboard +gpio-vx855 +gpio-wm831x +gpio-wm8350 +gpio-wm8994 +g_printer +grace +gre +grip +grip_mp +gr_udc +gsc_hpdi +g_serial +gs_fpga +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 +gs_usb +gtco +guillemot +gunze +g_webcam +gx1fb +gxfb +gx-suspmod +g_zero +hackrf +hamachi +hampshire +hangcheck-timer +hanwang +hci +hci_uart +hci_vhci +hdaps +hdlc +hdlc_cisco +hdlcdrv +hdlc_fr +hdlc_ppp +hdlc_raw +hdlc_raw_eth +hdlc_x25 +hdpvr +he +hecubafb +hexium_gemini +hexium_orion +hfc4s8s_l1 +hfcmulti +hfcpci +hfcsusb +hfc_usb +hfs +hfsplus +hgafb +hid +hid-a4tech +hid-apple +hid-appleir +hid-aureal +hid-axff +hid-belkin +hid-betopff +hid-cherry +hid-chicony +hid-cp2112 +hid-cypress +hid-dr +hid-elecom +hid-elo +hid-emsff +hid-ezkey +hid-gaff +hid-generic +hid-gt683r +hid-gyration +hid-holtekff +hid-holtek-kbd +hid-holtek-mouse +hid-hyperv +hid-icade +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 +hidp +hid-penmount +hid-petalynx +hid-picolcd +hid-pl +hid-plantronics +hid-primax +hid-prodikeys +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-iio-common +hid-sensor-incl-3d +hid-sensor-magn-3d +hid-sensor-press +hid-sensor-prox +hid-sensor-rotation +hid-sensor-trigger +hid-sjoy +hid-sony +hid-speedlink +hid-steelseries +hid-sunplus +hid-thingm +hid-tivo +hid-tmff +hid-topseed +hid-twinhan +hid-uclogic +hid-waltop +hid-wiimote +hid-xinmo +hid-zpff +hid-zydacron +hih6130 +hisax +hisax_fcpcipnp +hisax_isac +hisax_st5481 +hisi504_nand +hmc5843_core +hmc5843_i2c +hmc5843_spi +hmc6352 +hopper +horizon +hostap +hostap_cs +hostap_pci +hostap_plx +hostess_sv11 +hp100 +hp_accel +hpfs +hpilo +hpsa +hptiop +hpwdt +hp-wireless +hp-wmi +hsi +hsi_char +hso +hsr +hsu_dma +hsu_dma_pci +htc-pasic3 +htcpen +htu21 +huawei_cdc_ncm +hv_balloon +hv_netvsc +hv_storvsc +hv_utils +hv_vmbus +hwa-hc +hwa-rc +hwmon-vid +hx8357 +hyperv_fb +hyperv-keyboard +hysdn +i1480-dfu-usb +i1480-est +i2400m +i2400m-usb +i2c-algo-bit +i2c-algo-pca +i2c-ali1535 +i2c-ali1563 +i2c-ali15x3 +i2c-amd756 +i2c-amd756-s4882 +i2c-amd8111 +i2c-cbus-gpio +i2c-cros-ec-tunnel +i2c-designware-core +i2c-designware-pci +i2c-designware-platform +i2c-diolan-u2c +i2c-dln2 +i2c-eg20t +i2c-gpio +i2c-hid +i2c-i801 +i2c-isch +i2c-ismt +i2c-kempld +i2c-matroxfb +i2c-mux +i2c-mux-gpio +i2c-mux-pca9541 +i2c-mux-pca954x +i2c-mux-pinctrl +i2c-nforce2 +i2c-nforce2-s4985 +i2c-ocores +i2c-parport +i2c-parport-light +i2c-pca-isa +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 +i40e +i40evf +i5000_edac +i5100_edac +i5400_edac +i5500_temp +i5k_amb +i6300esb +i7300_edac +i740fb +i7core_edac +i810fb +i82092 +i82365 +i82860_edac +i82875p_edac +i82975x_edac +i915 +ib700wdt +ib_addr +ib_cm +ib_core +ib_ipoib +ib_iser +ib_isert +ib_mad +ibmaem +ibmasm +ibmasr +ibmpex +ibmphp +ibm_rtl +ib_mthca +ib_sa +ib_srp +ib_srpt +ib_ucm +ib_umad +ib_uverbs +ichxrom +icn +icplus +icp_multi +ics932s401 +ideapad-laptop +ideapad_slidebar +idma64 +idmouse +idt77252 +idtcps +idt_gen2 +ie31200_edac +ie6xx_wdt +ieee802154 +ieee802154_6lowpan +ieee802154_socket +ifb +iforce +igb +igbvf +igorplugusb +iguanair +iio_dummy +iio_hwmon +iio-trig-interrupt +iio-trig-periodic-rtc +iio-trig-sysfs +ii_pci20kc +ili210x +ili922x +ili9320 +imm +imon +ims-pcu +imx074 +in2000 +ina209 +ina2xx +industrialio +industrialio-triggered-buffer +inet_diag +inexio +inftl +initio +input-leds +input-polldev +int3400_thermal +int3402_thermal +int3403_thermal +int340x_thermal_zone +int51x1 +intelfb +intel_ips +intel-lpss +intel-lpss-acpi +intel-lpss-pci +intel_menlow +intel_mid_battery +intel_mid_powerbtn +intel_mid_thermal +intel-mid-touch +intel-mid_wdt +intel_oaktrail +intel_pmc_ipc +intel_powerclamp +intel_qat +intel_quark_i2c_gpio +intel_rapl +intel-rng +intel-rst +intel_scu_ipcutil +intel-smartconnect +intel_soc_dts_iosf +intel_soc_dts_thermal +intel_vr_nor +interact +interval_tree_test +inv-mpu6050 +ioatdma +ioc4 +io_edgeport +io_ti +iowarrior +ip6_gre +ip6table_filter +ip6table_mangle +ip6table_nat +ip6table_raw +ip6_tables +ip6table_security +ip6t_ah +ip6t_eui64 +ip6t_frag +ip6t_hbh +ip6t_ipv6header +ip6t_MASQUERADE +ip6t_mh +ip6t_NPT +ip6t_REJECT +ip6t_rpfilter +ip6t_rt +ip6t_SYNPROXY +ip6_tunnel +ip6_udp_tunnel +ip6_vti +ipack +ipaq +ipcomp +ipcomp6 +ipddp +ipg +ip_gre +iphase +ipheth +ipip +ipmi_devintf +ipmi_msghandler +ipmi_poweroff +ipmi_si +ipmi_ssif +ipmi_watchdog +ipoctal +ipr +ips +ip_set +ip_set_bitmap_ip +ip_set_bitmap_ipmac +ip_set_bitmap_port +ip_set_hash_ip +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 +iptable_filter +iptable_mangle +iptable_nat +iptable_raw +ip_tables +iptable_security +ipt_ah +ipt_CLUSTERIP +ipt_ECN +ipt_MASQUERADE +ipt_REJECT +ipt_rpfilter +ipt_SYNPROXY +ip_tunnel +ipvlan +ip_vs +ip_vs_dh +ip_vs_fo +ip_vs_ftp +ip_vs_lblc +ip_vs_lblcr +ip_vs_lc +ip_vs_nq +ip_vs_pe_sip +ip_vs_rr +ip_vs_sed +ip_vs_sh +ip_vs_wlc +ip_vs_wrr +ip_vti +ipw +ipw2100 +ipw2200 +ipwireless +ipx +ircomm +ircomm-tty +irda +irda-usb +ir-hix5hd2 +iris +ir-jvc-decoder +ir-kbd-i2c +irlan +ir-lirc-codec +ir-mce_kbd-decoder +ir-nec-decoder +irnet +ir-rc5-decoder +ir-rc6-decoder +ir-sanyo-decoder +ir-sharp-decoder +ir-sony-decoder +irtty-sir +ir-usb +ir-xmp-decoder +isci +iscsi_boot_sysfs +iscsi_ibft +iscsi_target_mod +iscsi_tcp +isdn +isdn_bsdcomp +isdnhdlc +isicom +isight_firmware +isl29003 +isl29018 +isl29020 +isl29028 +isl29125 +isl6271a-regulator +isl6405 +isl6421 +isl6423 +isl9305 +isofs +isp116x-hcd +isp1362-hcd +isp1704_charger +isp1760 +it87 +it8712f_wdt +it87_wdt +it913x +iTCO_vendor_support +iTCO_wdt +itd1000 +ite-cir +itg3200 +iuu_phoenix +ivtv +ivtv-alsa +ivtvfb +iw_c2 +iw_cm +iw_cxgb3 +iw_cxgb4 +iwl3945 +iwl4965 +iwldvm +iwlegacy +iwlmvm +iwlwifi +iw_nes +ix2505v +ixgb +ixgbe +ixgbevf +janz-cmodio +janz-ican3 +jc42 +jedec_probe +jffs2 +jfs +jitterentropy_rng +jmb38x_ms +jme +joydev +joydump +jr3_pci +jsa1212 +jsm +k10temp +k8temp +kafs +kalmia +kaweth +kb3886_bl +kbic +kbtab +kcomedilib +ke_counter +kempld-core +kempld_wdt +kernelcapi +keyspan +keyspan_pda +keyspan_remote +kfifo_buf +khazad +kingsun-sir +kl5kusb105 +kmx61 +ko2iblnd +kobil_sct +ks0108 +ks0127 +ks8842 +ks8851 +ks8851_mll +ks959-sir +ksdazzle-sir +ksocklnd +ksz884x +ktti +kvaser_pci +kvaser_usb +kvm +kvm-amd +kvm-intel +kxcjk-1013 +kxsd9 +kxtj9 +kyrofb +l1oip +l2tp_core +l2tp_debugfs +l2tp_eth +l2tp_ip +l2tp_ip6 +l2tp_netlink +l2tp_ppp +l440gx +l4f00242t03 +l64781 +lanai +lance +lapb +lapbether +latch-addr-flash +lattice-ecp3-config +lcd +ld9040 +ldusb +lec +led-class-flash +leds-88pm860x +leds-adp5520 +leds-bd2802 +leds-blinkm +leds-clevo-mail +leds-da903x +leds-da9052 +leds-dac124s085 +leds-gpio +leds-lm3530 +leds-lm3533 +leds-lm355x +leds-lm3642 +leds-lp3944 +leds-lp8788 +leds-lp8860 +leds-lt3593 +leds-max8997 +leds-mc13783 +leds-menf21bmc +leds-net48xx +leds-ot200 +leds-pca9532 +leds-pca955x +leds-pca963x +leds-pm8941-wled +leds-pwm +leds-regulator +leds-ss4200 +leds-tca6507 +leds-tlc591xx +leds-wm831x-status +leds-wm8350 +leds-wrap +ledtrig-backlight +ledtrig-camera +ledtrig-default-on +ledtrig-gpio +ledtrig-heartbeat +ledtrig-oneshot +ledtrig-timer +ledtrig-transient +legousbtower +lg2160 +lgdt3305 +lgdt3306a +lgdt330x +lgs8gxx +lg-vl600 +lib80211 +lib80211_crypt_ccmp +lib80211_crypt_tkip +lib80211_crypt_wep +libahci +libahci_platform +libceph +libcfs +libcomposite +libcrc32c +libcxgbi +libertas +libertas_cs +libertas_sdio +libertas_spi +libertas_tf +libertas_tf_usb +libfc +libfcoe +libipw +libiscsi +libiscsi_tcp +libore +libosd +libsas +lightning +lineage-pem +linear +lirc_bt829 +lirc_dev +lirc_imon +lirc_parallel +lirc_sasem +lirc_serial +lirc_sir +lirc_zilog +lis3l02dq +lis3lv02d +lis3lv02d_i2c +litelink-sir +lkkbd +llc +llc2 +llite_lloop +lm25066 +lm3533-als +lm3533_bl +lm3533-core +lm3533-ctrlbank +lm3630a_bl +lm3639_bl +lm63 +lm70 +lm73 +lm75 +lm77 +lm78 +lm80 +lm83 +lm8323 +lm8333 +lm85 +lm87 +lm90 +lm92 +lm93 +lm95234 +lm95241 +lm95245 +lmc +lms283gf05 +lms501kf03 +lmv +lnbp21 +lnbp22 +lnet +lnet_selftest +lockd +locktorture +logibm +longhaul +longrun +lov +lp +lp3943 +lp3971 +lp3972 +lp855x_bl +lp8727_charger +lp872x +lp8755 +lp8788_adc +lp8788_bl +lp8788-buck +lp8788-charger +lp8788-ldo +lpc_ich +lpc_sch +lpddr_cmds +lpfc +lru_cache +lrw +ltc2941-battery-gauge +ltc2945 +ltc2978 +ltc3589 +ltc4151 +ltc4215 +ltc4222 +ltc4245 +ltc4260 +ltc4261 +ltpc +ltr501 +ltv350qv +lustre +lv5207lp +lvstest +lxfb +lxt +lz4 +lz4_compress +lz4hc +lz4hc_compress +m25p80 +m2m-deinterlace +m52790 +m62332 +m88ds3103 +m88rs2000 +m88rs6000t +ma600-sir +mac80211 +mac80211_hwsim +mac802154 +macb +mac-celtic +mac-centeuro +mac-croatian +mac-cyrillic +mac-gaelic +mac-greek +mac_hid +machzwd +mac-iceland +mac-inuit +macmodes +mac-roman +mac-romanian +mac-turkish +macvlan +macvtap +mag3110 +magellan +mailbox-altera +mantis +mantis_core +map_absent +map_funcs +map_ram +map_rom +marvell +matrix-keymap +matrix_keypad +matroxfb_accel +matroxfb_base +matroxfb_crtc2 +matroxfb_DAC1064 +matroxfb_g450 +matroxfb_maven +matroxfb_misc +matroxfb_Ti3026 +matrox_w1 +max1027 +max1111 +max11801_ts +max1363 +max14577 +max14577_charger +max1586 +max16064 +max16065 +max1619 +max1668 +max17040_battery +max17042_battery +max197 +max2165 +max3100 +max3421-hcd +max34440 +max517 +max63xx_wdt +max6639 +max6642 +max6650 +max6697 +max6875 +max7359_keypad +max77693 +max77693_charger +max77693-haptic +max77843 +max77843-haptic +max8649 +max8660 +max8688 +max8903_charger +max8907 +max8907-regulator +max8925_bl +max8925_onkey +max8925_power +max8925-regulator +max8952 +max8973-regulator +max8997 +max8997_charger +max8997_haptic +max8998 +max8998_charger +mb862xxfb +mb86a16 +mb86a20s +mc13783-adc +mc13783-pwrbutton +mc13783-regulator +mc13783_ts +mc13892-regulator +mc13xxx-core +mc13xxx-i2c +mc13xxx-regulator-core +mc13xxx-spi +mc44s803 +m_can +mcb +mcb-pci +mce_amd_inj +mce-inject +mceusb +mcp2120-sir +mcp251x +mcp3021 +mcp320x +mcp3422 +mcp4725 +mcp4922 +mcryptd +mcs5000_ts +mcs7780 +mcs7830 +mcs_touchkey +mct_u232 +md4 +mdacon +mdc +mdc800 +md-cluster +mdio +mdio-bcm-unimac +mdio-bitbang +mdio-gpio +me4000 +me_daq +media +megaraid +megaraid_mbox +megaraid_mm +megaraid_sas +mei +mei-me +mei_phy +mei-txe +memory-notifier-error-inject +memstick +mena21_wdt +menf21bmc +menf21bmc_hwmon +menf21bmc_wdt +men_z135_uart +men_z188_adc +metronomefb +metro-usb +meye +mf6x4 +mga +mgc +michael_mic +micrel +microread +microread_i2c +microread_mei +microtek +mii +minix +mip6 +mISDN_core +mISDN_dsp +mISDNinfineon +mISDNipac +mISDNisar +mite +mixcomwd +mk712 +mkiss +mlx4_core +mlx4_en +mlx4_ib +mlx5_core +mlx5_ib +mlx90614 +mma8450 +mma8452 +mma9551 +mma9551_core +mma9553 +mmc35240 +mmc_block +mms114 +mn88472 +mn88473 +mos7720 +mos7840 +moxa +mpc624 +mpl115 +mpl3115 +mpls_gso +mpls_router +mpoa +mpr121_touchkey +mpt2sas +mpt3sas +mptbase +mptctl +mptfc +mptlan +mptsas +mptscsih +mptspi +mpu3050 +mrf24j40 +mrp +ms5611_core +ms5611_i2c +ms5611_spi +ms_block +msdos +msi001 +msi2500 +msi-laptop +msi-wmi +msp3400 +mspro_block +msr +mt2060 +mt2063 +mt20xx +mt2131 +mt2266 +mt29f_spinand +mt312 +mt352 +mt6397-core +mt6397-regulator +mt7601u +mt9m001 +mt9m111 +mt9t031 +mt9t112 +mt9v011 +mt9v022 +mtd +mtd_blkdevs +mtdblock +mtdblock_ro +mtd_dataflash +mtdoops +mtdram +mtdswap +mtip32xx +mtk-sd +mtouch +multipath +multiq3 +musb_hdrc +mvmdio +mvsas +mv_u3d_core +mv_udc +mvumi +mwave +mwifiex +mwifiex_pcie +mwifiex_sdio +mwifiex_usb +mwl8k +mxb +mxl111sf-demod +mxl111sf-tuner +mxl301rf +mxl5005s +mxl5007t +mxm-wmi +mxser +mxuport +myri10ge +n2 +n411 +nand +nand_bch +nand_ecc +nand_ids +nandsim +national +natsemi +nau7802 +navman +nbd +nci +nci_uart +ncpfs +NCR53c406a +nct6683 +nct6775 +nct7802 +nct7904 +nd_blk +nd_btt +nd_pmem +ne +ne2k-pci +neofb +net1080 +net2272 +net2280 +netconsole +netjet +netlink_diag +netrom +nettel +netxen_nic +newtonkbd +nfc +nfc_digital +nfcmrvl +nfcmrvl_uart +nfcmrvl_usb +nf_conntrack +nf_conntrack_amanda +nf_conntrack_broadcast +nf_conntrack_ftp +nf_conntrack_h323 +nf_conntrack_ipv4 +nf_conntrack_ipv6 +nf_conntrack_irc +nf_conntrack_netbios_ns +nf_conntrack_netlink +nf_conntrack_pptp +nf_conntrack_proto_dccp +nf_conntrack_proto_gre +nf_conntrack_proto_sctp +nf_conntrack_proto_udplite +nf_conntrack_sane +nf_conntrack_sip +nf_conntrack_snmp +nf_conntrack_tftp +nfcsim +nfcwilink +nf_defrag_ipv4 +nf_defrag_ipv6 +nfit +nf_log_arp +nf_log_bridge +nf_log_common +nf_log_ipv4 +nf_log_ipv6 +nf_nat +nf_nat_amanda +nf_nat_ftp +nf_nat_h323 +nf_nat_ipv4 +nf_nat_ipv6 +nf_nat_irc +nf_nat_masquerade_ipv4 +nf_nat_masquerade_ipv6 +nf_nat_pptp +nf_nat_proto_dccp +nf_nat_proto_gre +nf_nat_proto_sctp +nf_nat_proto_udplite +nf_nat_redirect +nf_nat_sip +nf_nat_snmp_basic +nf_nat_tftp +nfnetlink +nfnetlink_acct +nfnetlink_cthelper +nfnetlink_cttimeout +nfnetlink_log +nfnetlink_queue +nf_reject_ipv4 +nf_reject_ipv6 +nfs +nfs_acl +nfsd +nfs_layout_flexfiles +nfs_layout_nfsv41_files +nfsv2 +nfsv3 +nfsv4 +nf_synproxy_core +nf_tables +nf_tables_arp +nf_tables_bridge +nf_tables_inet +nf_tables_ipv4 +nf_tables_ipv6 +nf_tables_netdev +nft_chain_nat_ipv4 +nft_chain_nat_ipv6 +nft_chain_route_ipv4 +nft_chain_route_ipv6 +nft_compat +nft_counter +nft_ct +nft_exthdr +nft_hash +nftl +nft_limit +nft_log +nft_masq +nft_masq_ipv4 +nft_masq_ipv6 +nft_meta +nft_meta_bridge +nft_nat +nft_queue +nft_rbtree +nft_redir +nft_redir_ipv4 +nft_redir_ipv6 +nft_reject +nft_reject_bridge +nft_reject_inet +nft_reject_ipv4 +nft_reject_ipv6 +ngene +n_gsm +nhc_dest +nhc_fragment +nhc_hop +nhc_ipv6 +nhc_mobility +nhc_routing +nhc_udp +n_hdlc +ni65 +ni_6527 +ni_65xx +ni_660x +ni_670x +ni_at_a2150 +ni_at_ao +ni_atmio +ni_atmio16d +nicstar +ni_daq_700 +ni_daq_dio24 +ni_labpc +ni_labpc_common +ni_labpc_cs +ni_labpc_isadma +ni_labpc_pci +nilfs2 +ni_mio_cs +ni_pcidio +ni_pcimio +ni_tio +ni_tiocmd +niu +ni_usb6501 +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 +nosy +notifier-error-inject +nouveau +nozomi +n_r3964 +ns558 +ns83820 +nsc_gpio +nsc-ircc +nsp32 +nsp_cs +ntb +ntb_netdev +ntb_pingpong +ntb_tool +ntb_transport +ntc_thermistor +ntfs +n_tracerouter +n_tracesink +null_blk +nuvoton-cir +nvidiafb +nvme +nvram +nv_tco +nxp-nci +nxp-nci_i2c +nxt200x +nxt6000 +obdclass +obdecho +objlayoutdriver +ocfb +ocfs2 +ocfs2_dlm +ocfs2_dlmfs +ocfs2_nodemanager +ocfs2_stackglue +ocfs2_stack_o2cb +ocfs2_stack_user +ocrdma +of_xilinx_wdt +old_belkin-sir +omfs +omninet +on20 +on26 +onenand +opencores-kbd +openvswitch +oprofile +opticon +option +or51132 +or51211 +orinoco +orinoco_cs +orinoco_nortel +orinoco_plx +orinoco_tmd +orinoco_usb +osc +osd +osdblk +osst +oti6858 +ov2640 +ov5642 +ov6650 +ov7640 +ov7670 +ov772x +ov9640 +ov9740 +overlay +oxu210hp-hcd +ozwpan +p4-clockmod +p54common +p54pci +p54spi +p54usb +p8022 +p8023 +padlock-aes +padlock-sha +palmas-pwrbutton +palmas-regulator +panasonic-laptop +pandora_bl +panel +paride +parkbd +parport +parport_ax88796 +parport_cs +parport_pc +parport_serial +pas16 +pata_acpi +pata_ali +pata_amd +pata_artop +pata_atiixp +pata_atp867x +pata_cmd640 +pata_cmd64x +pata_cs5520 +pata_cs5530 +pata_cs5535 +pata_cs5536 +pata_cypress +pata_efar +pata_hpt366 +pata_hpt37x +pata_hpt3x2n +pata_hpt3x3 +pata_isapnp +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_sc1200 +pata_sch +pata_serverworks +pata_sil680 +pata_sl82c105 +pata_triflex +pata_via +pc110pad +pc300too +pc87360 +pc8736x_gpio +pc87413_wdt +pc87427 +pcap_keys +pcap-regulator +pcap_ts +pcbc +pcbit +pcd +pcf50633 +pcf50633-adc +pcf50633-backlight +pcf50633-charger +pcf50633-gpio +pcf50633-input +pcf50633-regulator +pcf8574_keypad +pcf8591 +pch_can +pch_dma +pch_gbe +pch_phub +pch_uart +pch_udc +pci +pci200syn +pcips2 +pci-stub +pcl711 +pcl724 +pcl726 +pcl730 +pcl812 +pcl816 +pcl818 +pcm3724 +pcmad +pcmcia +pcmcia_core +pcmciamtd +pcmcia_rsrc +pcmda12 +pcmmio +pcmuio +pcnet32 +pcnet_cs +pcrypt +pcspkr +pcwd +pcwd_pci +pcwd_usb +pd +pd6729 +pda_power +pdc_adma +peak_pci +peak_pcmcia +peak_usb +pegasus +penmount +percpu_test +pf +pfuze100-regulator +pg +phantom +phonet +phram +phy-bcm-kona-usb2 +phy-exynos-usb2 +phy-gpio-vbus-usb +phy-isp1301 +phy-pxa-28nm-hsic +phy-pxa-28nm-usb2 +physmap +phy-tahvo +phy-tusb1210 +pinctrl-cherryview +pinctrl-intel +pinctrl-sunrisepoint +pixcir_i2c_ts +pkcs7_message +pkcs7_test_key +pktcdvd +pktgen +pl2303 +platform_lcd +plat_nand +plat-ram +plip +plusb +pluto2 +plx_pci +pm2fb +pm3fb +pm80xx +pmbus +pmbus_core +pmc551 +pmcraid +pm-notifier-error-inject +pn533 +pn544 +pn544_i2c +pn544_mei +pn_pep +poly1305_generic +port100 +powermate +powernow-k6 +powernow-k7 +powr1220 +ppa +ppdev +ppp_async +ppp_deflate +ppp_mppe +pppoatm +pppoe +pppox +ppp_synctty +pps_core +pps-gpio +pps-ldisc +pps_parport +pptp +prism2_usb +processor_thermal_device +ps2mult +psmouse +psnap +pt +pti +ptlrpc +ptp +ptp_pch +punit_atom_debug +pvpanic +pvrusb2 +pwc +pwm-beeper +pwm_bl +pwm-lp3943 +pwm-lpss +pwm-lpss-pci +pwm-lpss-platform +pwm-regulator +pwm-twl +pwm-twl-led +pxa27x_udc +qat_dh895xcc +qcaux +qcom-spmi-iadc +qcom_spmi-regulator +qcom-spmi-vadc +qcserial +qinfo_probe +qla1280 +qla2xxx +qla3xxx +qla4xxx +qlcnic +qlge +qlogic_cs +qlogicfas +qlogicfas408 +qm1d1c0042 +qmi_wwan +qnx4 +qnx6 +qsemi +qt1010 +qt1070 +qt2160 +quatech2 +quatech_daqp_cs +quota_tree +quota_v1 +quota_v2 +qxl +r128 +r592 +r6040 +r8152 +r8169 +r8188eu +r8192e_pci +r8192u_usb +r820t +r82600_edac +r852 +r8712u +r8723au +r8a66597-hcd +r8a66597-udc +radeon +radeonfb +radio-aimslab +radio-aztech +radio-bcm2048 +radio-cadet +radio-gemtek +radio-i2c-si470x +radio-isa +radio-keene +radio-ma901 +radio-maxiradio +radio-miropcm20 +radio-mr800 +radio-platform-si4713 +radio-raremono +radio-rtrack2 +radio-sf16fmi +radio-sf16fmr2 +radio-shark +radio-si476x +radio-tea5764 +radio-terratec +radio-timb +radio-trust +radio-typhoon +radio-usb-si470x +radio-usb-si4713 +radio-wl1273 +radio-zoltrix +raid0 +raid1 +raid10 +raid456 +raid6_pq +raid6test +raid_class +ramoops +raw +ray_cs +rbd +rbtree_test +rc5t583-regulator +rc-adstech-dvb-t-pci +rc-alink-dtu-m +rc-anysee +rc-apac-viewcomp +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-behold +rc-behold-columbus +rc-budget-ci-old +rc-cinergy +rc-cinergy-1400 +rc-core +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-dvbsky +rc-em-terratec +rc-encore-enltv +rc-encore-enltv2 +rc-encore-enltv-fm53 +rc-evga-indtube +rc-eztv +rc-flydvb +rc-flyvideo +rc-fusionhdtv-mce +rc-gadmei-rm008z +rc-genius-tvgo-a11mce +rc-gotview7135 +rc-hauppauge +rc-imon-mce +rc-imon-pad +rc-iodata-bctv7e +rc-it913x-v1 +rc-it913x-v2 +rc-kaiomy +rc-kworld-315u +rc-kworld-pc150u +rc-kworld-plus-tv-analog +rc-leadtek-y04g0051 +rc-lirc +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-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-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-twinhan1027 +rc-twinhan-dtv-cab-ci +rc-videomate-m1f +rc-videomate-s350 +rc-videomate-tv-pvr +rc-winfast +rc-winfast-usbii-deluxe +rdc321x-southbridge +rdma_cm +rdma_ucm +rds +rds_rdma +rds_tcp +realtek +redboot +redrat3 +reed_solomon +regmap-spmi +regulator-haptic +reiserfs +remoteproc +retu-mfd +retu-pwrbutton +retu_wdt +rfc1051 +rfc1201 +rfcomm +rfd_ftl +rfkill-gpio +rfkill-regulator +rio500 +rionet +rio-scan +rivafb +rj54n1cb0c +rmd128 +rmd160 +rmd256 +rmd320 +rn5t618 +rn5t618-regulator +rn5t618_wdt +rndis_host +rndis_wlan +rocket +romfs +rose +rotary_encoder +rp2 +rpcrdma +rpcsec_gss_krb5 +rsa_generic +rsi_91x +rsi_sdio +rsi_usb +rsxx +rt2400pci +rt2500pci +rt2500usb +rt2800lib +rt2800mmio +rt2800pci +rt2800usb +rt2x00lib +rt2x00mmio +rt2x00pci +rt2x00usb +rt5033 +rt5033_battery +rt5033-regulator +rt61pci +rt73usb +rt9455_charger +rtc-88pm80x +rtc-88pm860x +rtc-ab3100 +rtc-ab-b5ze-s3 +rtc-abx80x +rtc-bq32k +rtc-bq4802 +rtc-da9052 +rtc-da9055 +rtc-da9063 +rtc-ds1286 +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-ds3234 +rtc-em3027 +rtc-fm3130 +rtc-hid-sensor-time +rtc-isl12022 +rtc-isl12057 +rtc-isl1208 +rtc-lp8788 +rtc-m41t80 +rtc-m41t93 +rtc-m41t94 +rtc-m48t35 +rtc-m48t59 +rtc-m48t86 +rtc-max6900 +rtc-max6902 +rtc-max8907 +rtc-max8925 +rtc-max8997 +rtc-max8998 +rtc-mc13xxx +rtc-mcp795 +rtc-mrst +rtc-msm6242 +rtc-mt6397 +rtc-palmas +rtc-pcap +rtc-pcf2123 +rtc-pcf2127 +rtc-pcf50633 +rtc-pcf85063 +rtc-pcf8523 +rtc-pcf8563 +rtc-pcf8583 +rtc-r9701 +rtc-rc5t583 +rtc-rp5c01 +rtc-rs5c348 +rtc-rs5c372 +rtc-rv3029c2 +rtc-rx4581 +rtc-rx8025 +rtc-rx8581 +rtc-s35390a +rtc-s5m +rtc-stk17ta8 +rtc-tps6586x +rtc-tps65910 +rtc-tps80031 +rtc-twl +rtc-v3020 +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 +rtl8723ae +rtl8723be +rtl8723-common +rtl8821ae +rtllib +rtllib_crypt_ccmp +rtllib_crypt_tkip +rtllib_crypt_wep +rtl_pci +rtl_usb +rtlwifi +rts5208 +rtsx_pci +rtsx_pci_ms +rtsx_pci_sdmmc +rtsx_usb +rtsx_usb_ms +rtsx_usb_sdmmc +rx51_battery +rxkad +s1d13xxxfb +s2250 +s2255drv +s2io +s2mpa01 +s2mps11 +s3fb +s526 +s5h1409 +s5h1411 +s5h1420 +s5m8767 +s626 +s6e63m0 +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 +salsa20-i586 +samsung-keypad +samsung-laptop +samsung-q10 +samsung-sxgbe +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 +savage +savagefb +sb1000 +sbc60xxwdt +sbc7240_wdt +sbc8360 +sbc_epx_c3 +sbc_fitpc2_wdt +sbc_gxx +sbni +sbp_target +sbs +sbs-battery +sbshc +sc +sc1200wdt +sc16is7xx +sc92031 +sca3000 +scb2_flash +scc +sch311x_wdt +sch5627 +sch5636 +sch56xx-common +sch_atm +sch_cbq +sch_choke +sch_codel +sch_drr +sch_dsmark +sch_fq +sch_fq_codel +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_tbf +sch_teql +scsi_debug +scsi_dh +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_probe +scx200 +scx200_acb +scx200_docflash +scx200_gpio +scx200_hrt +scx200_wdt +sdhci +sdhci-acpi +sdhci-pci +sdhci-pltfm +sdio_uart +sdla +sdricoh_cs +sealevel +sedlbauer_cs +seed +sensorhub +seqiv +ser_gigaset +serial2002 +serial_cs +serio_raw +sermouse +serpent_generic +serpent-sse2-i586 +serport +ses +sfc +sfi-cpufreq +shark2 +shpchp +sht15 +sht21 +shtc1 +sh_veu +si2157 +si2165 +si2168 +si21xx +si4713 +si476x-core +si7005 +si7020 +sidewinder +sierra +sierra_net +sil164 +sim710 +sir-dev +sis +sis190 +sis5595 +sis900 +sis-agp +sisfb +sisusbvga +sit +sja1000 +sja1000_isa +sja1000_platform +skfp +skge +sky2 +sky81452 +sky81452-backlight +sky81452-regulator +sl811_cs +sl811-hcd +slcan +slicoss +slip +slram +sm501 +sm501fb +sm750fb +sm7xxfb +smb347-charger +smc9194 +smc91c92_cs +sm_common +smc-ultra +sm_ftl +smipcie +smm665 +smsc +smsc37b787_wdt +smsc47b397 +smsc47m1 +smsc47m192 +smsc75xx +smsc911x +smsc9420 +smsc95xx +smsc-ircc2 +smscufx +smsdvb +smsmdtv +smssdio +smsusb +snd +snd-ac97-codec +snd-ad1816a +snd-ad1848 +snd-ad1889 +snd-adlib +snd-ak4113 +snd-ak4114 +snd-ak4117 +snd-ak4xxx-adda +snd-ali5451 +snd-aloop +snd-als100 +snd-als300 +snd-als4000 +snd-asihpi +snd-atiixp +snd-atiixp-modem +snd-au8810 +snd-au8820 +snd-au8830 +snd-aw2 +snd-azt1605 +snd-azt2316 +snd-azt2320 +snd-azt3328 +snd-bcd2000 +snd-bebob +snd-bt87x +snd-ca0106 +snd-cmi8328 +snd-cmi8330 +snd-cmipci +snd-compress +snd-cs4231 +snd-cs4236 +snd-cs4281 +snd-cs46xx +snd-cs5530 +snd-cs5535audio +snd-cs8427 +snd-ctxfi +snd-darla20 +snd-darla24 +snd-dice +snd-dummy +snd-echo3g +snd-emu10k1 +snd-emu10k1-synth +snd-emu10k1x +snd-emu8000-synth +snd-emux-synth +snd-ens1370 +snd-ens1371 +snd-es1688 +snd-es1688-lib +snd-es18xx +snd-es1938 +snd-es1968 +snd-firewire-lib +snd-fireworks +snd-fm801 +snd-gina20 +snd-gina24 +snd-gusclassic +snd-gusextreme +snd-gus-lib +snd-gusmax +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-intel8x0 +snd-intel8x0m +snd-intel-sst-acpi +snd-intel-sst-core +snd-intel-sst-pci +snd-interwave +snd-interwave-stb +snd-isight +snd-jazz16 +snd-korg1212 +snd-layla20 +snd-layla24 +snd-lola +snd-lx6464es +snd-maestro3 +snd-mia +snd-miro +snd-mixart +snd-mixer-oss +snd-mona +snd-mpu401 +snd-mpu401-uart +snd-msnd-classic +snd-msnd-lib +snd-msnd-pinnacle +snd-mtpav +snd-mts64 +snd-nm256 +snd-opl3-lib +snd-opl3sa2 +snd-opl3-synth +snd-opl4-lib +snd-opl4-synth +snd-opti92x-ad1848 +snd-opti92x-cs4231 +snd-opti93x +snd-oxfw +snd-oxygen +snd-oxygen-lib +snd-pcm +snd-pcm-dmaengine +snd-pcm-oss +snd-pcsp +snd-pcxhr +snd-pdaudiocf +snd-portman2x4 +snd-pt2258 +snd-rawmidi +snd-riptide +snd-rme32 +snd-rme96 +snd-rme9652 +snd-sb16 +snd-sb16-csp +snd-sb16-dsp +snd-sb8 +snd-sb8-dsp +snd-sbawe +snd-sb-common +snd-sc6000 +snd-scs1x +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-sis7019 +snd-soc-ac97 +snd-soc-adau1701 +snd-soc-ak4104 +snd-soc-ak4554 +snd-soc-ak4642 +snd-soc-ak5386 +snd-soc-alc5623 +snd-soc-core +snd-soc-cs35l32 +snd-soc-cs4265 +snd-soc-cs4270 +snd-soc-cs4271 +snd-soc-cs4271-i2c +snd-soc-cs4271-spi +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-es8328 +snd-soc-fsl-asrc +snd-soc-fsl-esai +snd-soc-fsl-sai +snd-soc-fsl-spdif +snd-soc-fsl-ssi +snd-soc-hdmi-codec +snd-soc-imx-audmux +snd-soc-max98090 +snd-soc-pcm1681 +snd-soc-pcm1792a-codec +snd-soc-pcm512x +snd-soc-pcm512x-i2c +snd-soc-pcm512x-spi +snd-soc-rl6231 +snd-soc-rl6347a +snd-soc-rt286 +snd-soc-rt5631 +snd-soc-rt5640 +snd-soc-rt5645 +snd-soc-rt5670 +snd-soc-sgtl5000 +snd-soc-si476x +snd-soc-sigmadsp +snd-soc-sigmadsp-i2c +snd-soc-simple-card +snd-soc-sn95031 +snd-soc-spdif-rx +snd-soc-spdif-tx +snd-soc-ssm2602 +snd-soc-ssm2602-i2c +snd-soc-ssm2602-spi +snd-soc-ssm4567 +snd-soc-sst-acpi +snd-soc-sst-baytrail-pcm +snd-soc-sst-broadwell +snd-soc-sst-bytcr-rt5640 +snd-soc-sst-byt-max98090-mach +snd-soc-sst-byt-rt5640-mach +snd-soc-sst-cht-bsw-max98090_ti +snd-soc-sst-cht-bsw-rt5645 +snd-soc-sst-cht-bsw-rt5672 +snd-soc-sst-dsp +snd-soc-sst-haswell +snd-soc-sst-haswell-pcm +snd-soc-sst-ipc +snd-soc-sst-mfld-platform +snd-soc-sta32x +snd-soc-sta350 +snd-soc-tas2552 +snd-soc-tas5086 +snd-soc-tas571x +snd-soc-tfa9879 +snd-soc-tlv320aic23 +snd-soc-tlv320aic23-i2c +snd-soc-tlv320aic23-spi +snd-soc-tlv320aic31xx +snd-soc-tlv320aic3x +snd-soc-tpa6130a2 +snd-soc-ts3a227e +snd-soc-wm8510 +snd-soc-wm8523 +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-wm8804 +snd-soc-wm8804-i2c +snd-soc-wm8804-spi +snd-soc-wm8903 +snd-soc-wm8962 +snd-soc-wm8978 +snd-soc-xtfpga-i2s +snd-sonicvibes +snd-sscape +snd-tea6330t +snd-timer +snd-trident +snd-ua101 +snd-usb-6fire +snd-usb-audio +snd-usb-caiaq +snd-usb-hiface +snd-usb-line6 +snd-usbmidi-lib +snd-usb-pod +snd-usb-podhd +snd-usb-toneport +snd-usb-us122l +snd-usb-usx2y +snd-usb-variax +snd-util-mem +snd-via82xx +snd-via82xx-modem +snd-virmidi +snd-virtuoso +snd-vx222 +snd-vx-lib +snd-vxpocket +snd-wavefront +snd-wss-lib +snd-ymfpci +snic +soc_button_array +soc_camera +soc_camera_platform +soc_mediabus +softdog +softing +softing_cs +solo6x10 +solos-pci +sony-btf-mpx +sony-laptop +sonypi +soundcore +sp2 +sp5100_tco +sp8870 +sp887x +spaceball +spaceorb +sparse-keymap +spcp8x5 +speakup +speakup_acntpc +speakup_acntsa +speakup_apollo +speakup_audptr +speakup_bns +speakup_decext +speakup_decpc +speakup_dectlk +speakup_dtlk +speakup_dummy +speakup_keypc +speakup_ltlk +speakup_soft +speakup_spkout +speakup_txprt +spectrum_cs +speedfax +speedtch +spi-altera +spi-bitbang +spi-butterfly +spi-cadence +spidev +spi-dln2 +spi-dw +spi-dw-midpci +spi-dw-mmio +spi-gpio +spi_ks8995 +spi-lm70llp +spi-nor +spi-oc-tiny +spi-pxa2xx-pci +spi-pxa2xx-platform +spi-sc18is602 +spi-tle62x0 +spi-topcliff-pch +spi-xcomm +spi-zynqmp-gqspi +spmi +squashfs +sr9700 +sr9800 +ssb +ssb-hcd +ssfdc +ssp_accel_sensor +ssp_gyro_sensor +ssp_iio +sst25l +sstfb +ssu100 +ssv_dnp +st +st1232 +st21nfca_hci +st21nfca_i2c +st_accel +st_accel_i2c +st_accel_spi +starfire +stb0899 +stb6000 +stb6100 +st_drv +ste10Xp +ste_modem_rproc +stex +st_gyro +st_gyro_i2c +st_gyro_spi +stinger +stir4200 +stk1160 +stk3310 +stk8312 +stk8ba50 +stkwebcam +st_magn +st_magn_i2c +st_magn_spi +stmmac +stmmac-platform +st-nci +st-nci_i2c +stowaway +stp +st_pressure +st_pressure_i2c +st_pressure_spi +streamzap +st_sensors +st_sensors_i2c +st_sensors_spi +stv0288 +stv0297 +stv0299 +stv0367 +stv0900 +stv090x +stv6110 +stv6110x +sundance +sungem +sungem_phy +sunhme +suni +sunkbd +sunrpc +sur40 +svgalib +sworks-agp +sx8 +sx8654 +sx9500 +sym53c416 +sym53c500_cs +sym53c8xx +symbolserial +synaptics_i2c +synaptics_i2c_rmi4 +synaptics_usb +synclink +synclink_cs +synclink_gt +synclinkmp +syscopyarea +sysfillrect +sysimgblt +sysv +t128 +t1isa +t1pci +t5403 +target_core_file +target_core_iblock +target_core_mod +target_core_pscsi +target_core_user +tc1100-wmi +tc74 +tc90522 +tca6416-keypad +tca8418_keypad +tcic +tcm_fc +tcm_loop +tcm_qla2xxx +tcm_usb_gadget +tcp_bic +tcp_cdg +tcp_dctcp +tcp_diag +tcp_highspeed +tcp_htcp +tcp_hybla +tcp_illinois +tcp_lp +tcp_probe +tcp_scalable +tcp_vegas +tcp_veno +tcp_westwood +tcp_yeah +tcrypt +tcs3414 +tcs3472 +tda10021 +tda10023 +tda10048 +tda1004x +tda10071 +tda10086 +tda18212 +tda18218 +tda18271 +tda18271c2dd +tda665x +tda7432 +tda8083 +tda8261 +tda826x +tda827x +tda8290 +tda9840 +tda9887 +tda998x +tdfx +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 +tekram-sir +teles_cs +test_bpf +test_firmware +test-hexdump +test-kstrtox +test_module +test_power +test-string_helpers +test_udelay +test_user_copy +tg3 +tgr192 +thinkpad_acpi +thmc50 +thunderbolt +ti-adc081c +ti-adc128s052 +ti_am335x_adc +ti_am335x_tsc +ti_am335x_tscadc +ti_dac7512 +tifm_7xx1 +tifm_core +tifm_ms +tifm_sd +timb_dma +timberdale +timblogiw +timbuart +timeriomem-rng +tipc +ti_usb_3410_5052 +tlan +tlclk +tm6000 +tm6000-alsa +tm6000-dvb +tmdc +tmem +tmp006 +tmp102 +tmp103 +tmp401 +tmp421 +toim3232-sir +topstar-laptop +torture +toshiba_acpi +toshiba_bluetooth +toshiba_haps +toshsd +touchit213 +touchright +touchwin +tpci200 +tpm_atmel +tpm_crb +tpm_i2c_atmel +tpm_i2c_infineon +tpm_i2c_nuvoton +tpm_infineon +tpm_nsc +tpm-rng +tpm_st33zp24 +tpm_st33zp24_i2c +tpm_st33zp24_spi +tps40422 +tps51632-regulator +tps6105x +tps6105x-regulator +tps62360-regulator +tps65010 +tps65023-regulator +tps6507x +tps6507x-regulator +tps6507x-ts +tps65090-charger +tps65090-regulator +tps65217 +tps65217_bl +tps65217-regulator +tps65218 +tps65218-pwrbutton +tps6524x-regulator +tps6586x-regulator +tps65910-regulator +tps65912-regulator +tps80031-regulator +trancevibrator +trf7970a +tridentfb +ts2020 +ts_bm +tsc2005 +tsc2007 +tsc40 +tscan1 +ts_fsm +tsi568 +tsi57x +tsi721_mport +ts_kmp +tsl2550 +tsl2563 +tsl2583 +tsl2x7x_core +tsl4531 +ttm +ttpci-eeprom +ttusb_dec +ttusbdecfe +ttusbir +tua6100 +tua9001 +tulip +tuner +tuner-simple +tuner-types +tuner-xc2028 +tunnel4 +tunnel6 +turbografx +tvaudio +tveeprom +tvp5150 +tw2804 +tw68 +tw9903 +tw9906 +tw9910 +twidjoy +twl4030_charger +twl4030_keypad +twl4030-madc +twl4030_madc_battery +twl4030-madc-hwmon +twl4030-pwrbutton +twl4030-vibra +twl4030_wdt +twl6030-gpadc +twl6040-vibra +twl-regulator +twofish_common +twofish_generic +twofish-i586 +typhoon +u132-hcd +u14-34f +uartlite +uas +ubi +ubifs +ucb1400_core +ucb1400_ts +ucd9000 +ucd9200 +uda1342 +udc-core +udf +udl +udlfb +udp_diag +udp_tunnel +ueagle-atm +u_ether +ufs +ufshcd +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 +uli526x +ulpi +ultrastor +umc +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 +unioxx5 +unix_diag +upd64031a +upd64083 +uPD98402 +usb3503 +usb_8dev +usb8xxx +usbatm +usb_debug +usbdux +usbduxfast +usbduxsigma +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_uac1 +usb_f_uac2 +usb_f_uvc +usb_gigaset +usbhid +usbip-core +usbip-host +usbkbd +usblcd +usbled +usblp +usbmon +usbmouse +usbnet +usbserial +usb-serial-simple +usbsevseg +usb-storage +usbtest +usbtmc +usbtouchscreen +usbtv +usbvision +usb_wwan +usdhi6rol0 +u_serial +userspace-consumer +ushc +usnic_verbs +uss720 +uvcvideo +uvesafb +uwb +v4l2-common +v4l2-dv-timings +v4l2-flash-led-class +v4l2-mem2mem +vboxguest +vboxsf +vboxvideo +vcan +vcnl4000 +ves1820 +ves1x93 +veth +vfio +vfio_iommu_type1 +vfio-pci +vfio_virqfd +vga16fb +vgastate +vgem +vgg2432a4 +vhci-hcd +vhost +vhost_net +vhost_scsi +via +via686a +via-camera +via-cputemp +viafb +via-ircc +via-rhine +via-rng +via-sdmmc +via-velocity +via_wdt +video +videobuf2-core +videobuf2-dma-contig +videobuf2-dma-sg +videobuf2-dvb +videobuf2-memops +videobuf2-vmalloc +videobuf-core +videobuf-dma-contig +videobuf-dma-sg +videobuf-dvb +videobuf-vmalloc +videocodec +videodev +vim2m +viperboard +viperboard_adc +virt-dma +virtio-gpu +virtio_input +virtio-rng +virtio_scsi +virtual +visor +vitesse +vivid +vlsi_ir +vmac +vme_ca91cx42 +vme_pio2 +vme_tsi148 +vme_user +vme_vmivme7805 +vmk80xx +vmlfb +vmw_balloon +vmwgfx +vmw_pvscsi +vmw_vmci +vmw_vsock_vmci_transport +vmxnet3 +vp27smpx +vport-geneve +vport-gre +vport-vxlan +vpx3220 +vringh +vsock +vsxxxaa +vt1211 +vt6655_stage +vt6656_stage +vt8231 +vt8623fb +vub300 +vx855 +vxge +vxlan +w1_bq27000 +w1_ds2406 +w1_ds2408 +w1_ds2413 +w1_ds2423 +w1_ds2431 +w1_ds2433 +w1_ds2760 +w1_ds2780 +w1_ds2781 +w1_ds28e04 +w1-gpio +w1_smem +w1_therm +w5100 +w5300 +w6692 +w83627ehf +w83627hf +w83627hf_wdt +w83781d +w83791d +w83792d +w83793 +w83795 +w83877f_wdt +w83977af_ir +w83977f_wdt +w83l785ts +w83l786ng +wacom +wacom_i2c +wacom_serial4 +wacom_w8001 +wafer5823wdt +walkera0701 +wanxl +warrior +wbsd +wcn36xx +wd +wd7000 +wd719x +wdt +wdt87xx_i2c +wdt_pci +whci +whci-hcd +whc-rc +whiteheat +wil6210 +wimax +winbond-840 +winbond-cir +wire +wishbone-serial +wistron_btns +wl1251 +wl1251_sdio +wl1251_spi +wl1273-core +wl12xx +wl18xx +wl3501_cs +wlcore +wlcore_sdio +wlcore_spi +wm831x_backup +wm831x_bl +wm831x-dcdc +wm831x-hwmon +wm831x-isink +wm831x-ldo +wm831x-on +wm831x_power +wm831x-ts +wm831x_wdt +wm8350-hwmon +wm8350_power +wm8350-regulator +wm8350_wdt +wm8400-regulator +wm8739 +wm8775 +wm8994-core +wm8994-irq +wm8994-regmap +wm8994-regulator +wm97xx-ts +wmi +wp512 +wusb-cbaf +wusbcore +wusb-wa +x25 +x25_asy +x38_edac +x86_pkg_temp_thermal +xc4000 +xc5000 +xcbc +xen-blkback +xen-evtchn +xen-fbfront +xenfs +xen-gntalloc +xen-gntdev +xen-kbdfront +xen-netback +xen-pciback +xen-pcifront +xen-privcmd +xen-scsiback +xen-scsifront +xen-tpmfront +xen_wdt +xfrm4_mode_beet +xfrm4_mode_transport +xfrm4_mode_tunnel +xfrm4_tunnel +xfrm6_mode_beet +xfrm6_mode_ro +xfrm6_mode_transport +xfrm6_mode_tunnel +xfrm6_tunnel +xfrm_algo +xfrm_ipcomp +xfrm_user +xfs +xgifb +xhci-plat-hcd +xillybus_core +xillybus_pcie +xirc2ps_cs +xircom_cb +xor +xpad +xsens_mt +x_tables +xt_addrtype +xt_AUDIT +xt_bpf +xt_cgroup +xt_CHECKSUM +xt_CLASSIFY +xt_cluster +xt_comment +xt_connbytes +xt_connlabel +xt_connlimit +xt_connmark +xt_CONNSECMARK +xt_conntrack +xt_cpu +xt_CT +xt_dccp +xt_devgroup +xt_dscp +xt_DSCP +xt_ecn +xt_esp +xt_hashlimit +xt_helper +xt_hl +xt_HL +xt_HMARK +xt_IDLETIMER +xt_ipcomp +xt_iprange +xt_ipvs +xtkbd +xt_l2tp +xt_LED +xt_length +xt_limit +xt_LOG +xt_mac +xt_mark +xt_multiport +xt_nat +xt_NETMAP +xt_nfacct +xt_NFLOG +xt_NFQUEUE +xt_osf +xt_owner +xt_physdev +xt_pkttype +xt_policy +xt_quota +xt_rateest +xt_RATEEST +xt_realm +xt_recent +xt_REDIRECT +xts +xt_sctp +xt_SECMARK +xt_set +xt_socket +xt_state +xt_statistic +xt_string +xt_tcpmss +xt_TCPMSS +xt_TCPOPTSTRIP +xt_tcpudp +xt_TEE +xt_time +xt_TPROXY +xt_TRACE +xt_u32 +xusbatm +xz_dec_test +yam +yealink +yellowfin +yenta_socket +yurex +z85230 +zatm +zaurus +zd1201 +zd1211rw +zforce_ts +zhenhua +zl10036 +zl10039 +zl10353 +zl6100 +zlib +zr36016 +zr36050 +zr36060 +zr36067 +zr364xx +zram --- linux-raspi2-4.2.0.orig/debian.master/abi/4.2.0-26.31/powerpc/powerpc-e500mc +++ linux-raspi2-4.2.0/debian.master/abi/4.2.0-26.31/powerpc/powerpc-e500mc @@ -0,0 +1,18115 @@ +EXPORT_SYMBOL crypto/gf128mul 0x0c2f123f gf128mul_4k_bbe +EXPORT_SYMBOL crypto/gf128mul 0x1068004b gf128mul_bbe +EXPORT_SYMBOL crypto/gf128mul 0x2f2889a0 gf128mul_init_64k_lle +EXPORT_SYMBOL crypto/gf128mul 0x3755f990 gf128mul_init_64k_bbe +EXPORT_SYMBOL crypto/gf128mul 0x384ef9ce gf128mul_64k_bbe +EXPORT_SYMBOL crypto/gf128mul 0x56af0dbd gf128mul_x_ble +EXPORT_SYMBOL crypto/gf128mul 0x83581089 gf128mul_init_4k_lle +EXPORT_SYMBOL crypto/gf128mul 0x9b2560b9 gf128mul_init_4k_bbe +EXPORT_SYMBOL crypto/gf128mul 0x9e13f6f6 gf128mul_lle +EXPORT_SYMBOL crypto/gf128mul 0xbd17a0df gf128mul_4k_lle +EXPORT_SYMBOL crypto/gf128mul 0xc0890413 gf128mul_64k_lle +EXPORT_SYMBOL crypto/gf128mul 0xd60736ec gf128mul_free_64k +EXPORT_SYMBOL crypto/mcryptd 0xa8cfd13e mcryptd_arm_flusher +EXPORT_SYMBOL crypto/xor 0x5b6c00e6 xor_blocks +EXPORT_SYMBOL drivers/atm/suni 0x2a738292 suni_init +EXPORT_SYMBOL drivers/atm/uPD98402 0x7d0e4e10 uPD98402_init +EXPORT_SYMBOL drivers/bcma/bcma 0xc6f10997 bcma_core_dma_translation +EXPORT_SYMBOL drivers/bcma/bcma 0xe7d76486 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 0x1bfe94b3 pi_schedule_claimed +EXPORT_SYMBOL drivers/block/paride/paride 0x27a38423 pi_release +EXPORT_SYMBOL drivers/block/paride/paride 0x308808e7 pi_read_block +EXPORT_SYMBOL drivers/block/paride/paride 0x3b7fa3a4 pi_connect +EXPORT_SYMBOL drivers/block/paride/paride 0x4267110a pi_register_driver +EXPORT_SYMBOL drivers/block/paride/paride 0x61df834e pi_disconnect +EXPORT_SYMBOL drivers/block/paride/paride 0x813974e3 pi_write_regr +EXPORT_SYMBOL drivers/block/paride/paride 0x912090dc paride_unregister +EXPORT_SYMBOL drivers/block/paride/paride 0x9dbf5eef pi_write_block +EXPORT_SYMBOL drivers/block/paride/paride 0xb21ba07d pi_unregister_driver +EXPORT_SYMBOL drivers/block/paride/paride 0xbe198e54 pi_init +EXPORT_SYMBOL drivers/block/paride/paride 0xd84921e7 paride_register +EXPORT_SYMBOL drivers/block/paride/paride 0xdd032a30 pi_do_claimed +EXPORT_SYMBOL drivers/block/paride/paride 0xf76773ac pi_read_regr +EXPORT_SYMBOL drivers/bluetooth/btbcm 0x41c22a3f btbcm_patchram +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x1348760d ipmi_request_settime +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x16dcec76 ipmi_set_my_address +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x1a10c898 ipmi_set_maintenance_mode +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x1aba5db8 ipmi_unregister_smi +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x1fae3bac ipmi_addr_src_to_str +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x40f2b10c ipmi_alloc_smi_msg +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x423b776a ipmi_create_user +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x4c971bec ipmi_smi_msg_received +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x524f6f51 ipmi_get_my_address +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x5e80f37c ipmi_unregister_for_cmd +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x5fcdcc05 ipmi_get_my_LUN +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x67cb9784 ipmi_poll_interface +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x78fd36e7 ipmi_request_supply_msgs +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x804f922a ipmi_addr_length +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x8c8ee770 ipmi_destroy_user +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x96cbcc81 ipmi_get_version +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x984377ea ipmi_register_smi +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xa2a98b91 ipmi_get_maintenance_mode +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xa32f520a ipmi_smi_watcher_register +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xb3305560 ipmi_smi_watcher_unregister +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xbf39c1a5 ipmi_get_smi_info +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xd69f8567 ipmi_set_gets_events +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xe0fa83f2 ipmi_register_for_cmd +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xe4f4665b ipmi_validate_addr +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xe6ab72a6 ipmi_set_my_LUN +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xf2576cb9 ipmi_smi_watchdog_pretimeout +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xf8318758 ipmi_smi_add_proc_entry +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xfcb77cfd ipmi_free_recv_msg +EXPORT_SYMBOL drivers/char/tpm/st33zp24/tpm_st33zp24 0x6720d2a0 st33zp24_probe +EXPORT_SYMBOL drivers/char/tpm/st33zp24/tpm_st33zp24 0x7b29cae2 st33zp24_pm_resume +EXPORT_SYMBOL drivers/char/tpm/st33zp24/tpm_st33zp24 0x9f69ef08 st33zp24_pm_suspend +EXPORT_SYMBOL drivers/char/tpm/st33zp24/tpm_st33zp24 0xf7c71c14 st33zp24_remove +EXPORT_SYMBOL drivers/char/xillybus/xillybus_core 0x25978d50 xillybus_isr +EXPORT_SYMBOL drivers/char/xillybus/xillybus_core 0x3786d598 xillybus_endpoint_discovery +EXPORT_SYMBOL drivers/char/xillybus/xillybus_core 0x69eac46a xillybus_endpoint_remove +EXPORT_SYMBOL drivers/char/xillybus/xillybus_core 0xb71bd23a xillybus_init_endpoint +EXPORT_SYMBOL drivers/crypto/caam/caam 0x1c758e97 caam_get_era +EXPORT_SYMBOL drivers/crypto/caam/caam_jr 0x35ae62f4 caam_jr_strstatus +EXPORT_SYMBOL drivers/crypto/caam/caam_jr 0x4a4bfedd split_key_done +EXPORT_SYMBOL drivers/crypto/caam/caam_jr 0x82a8646c caam_jr_free +EXPORT_SYMBOL drivers/crypto/caam/caam_jr 0xacf11a74 caam_jr_enqueue +EXPORT_SYMBOL drivers/crypto/caam/caam_jr 0xd52e8179 gen_split_key +EXPORT_SYMBOL drivers/crypto/caam/caam_jr 0xe5082558 caam_jr_alloc +EXPORT_SYMBOL drivers/crypto/talitos 0x2c4c3536 talitos_submit +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0x362e25fb dw_dma_cyclic_start +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0x47181bf5 dw_dma_cyclic_prep +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0xabcecaf5 dw_dma_get_dst_addr +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0xcb000c45 dw_dma_get_src_addr +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0xf2316f2c dw_dma_cyclic_free +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0xf9054e47 dw_dma_cyclic_stop +EXPORT_SYMBOL drivers/edac/edac_core 0x61c382c6 edac_mc_find +EXPORT_SYMBOL drivers/edac/mpc85xx_edac 0x04100428 mpc85xx_pci_err_probe +EXPORT_SYMBOL drivers/firewire/firewire-core 0x01de8599 fw_iso_context_flush_completions +EXPORT_SYMBOL drivers/firewire/firewire-core 0x0210de3c fw_cancel_transaction +EXPORT_SYMBOL drivers/firewire/firewire-core 0x04dd92ce fw_core_add_descriptor +EXPORT_SYMBOL drivers/firewire/firewire-core 0x064b5843 fw_core_handle_request +EXPORT_SYMBOL drivers/firewire/firewire-core 0x0ebb7a91 fw_core_handle_bus_reset +EXPORT_SYMBOL drivers/firewire/firewire-core 0x1278e35f fw_run_transaction +EXPORT_SYMBOL drivers/firewire/firewire-core 0x16e91e21 fw_csr_iterator_next +EXPORT_SYMBOL drivers/firewire/firewire-core 0x1db51388 fw_fill_response +EXPORT_SYMBOL drivers/firewire/firewire-core 0x25f8927f fw_card_initialize +EXPORT_SYMBOL drivers/firewire/firewire-core 0x2885fec5 fw_get_request_speed +EXPORT_SYMBOL drivers/firewire/firewire-core 0x31b2802a fw_core_add_address_handler +EXPORT_SYMBOL drivers/firewire/firewire-core 0x31cfe84a fw_bus_type +EXPORT_SYMBOL drivers/firewire/firewire-core 0x388b4c98 fw_iso_buffer_init +EXPORT_SYMBOL drivers/firewire/firewire-core 0x3c56ef91 fw_workqueue +EXPORT_SYMBOL drivers/firewire/firewire-core 0x4d038d78 fw_iso_context_stop +EXPORT_SYMBOL drivers/firewire/firewire-core 0x4d5d4eca fw_core_remove_descriptor +EXPORT_SYMBOL drivers/firewire/firewire-core 0x591042de fw_core_handle_response +EXPORT_SYMBOL drivers/firewire/firewire-core 0x65c9438b fw_csr_iterator_init +EXPORT_SYMBOL drivers/firewire/firewire-core 0x7e431b14 fw_csr_string +EXPORT_SYMBOL drivers/firewire/firewire-core 0x86468d44 fw_rcode_string +EXPORT_SYMBOL drivers/firewire/firewire-core 0x8900e0f4 fw_iso_context_queue +EXPORT_SYMBOL drivers/firewire/firewire-core 0x89ed1c1c fw_card_add +EXPORT_SYMBOL drivers/firewire/firewire-core 0x90863005 fw_high_memory_region +EXPORT_SYMBOL drivers/firewire/firewire-core 0x9c157ea7 fw_iso_context_create +EXPORT_SYMBOL drivers/firewire/firewire-core 0xa2427cc8 fw_iso_context_start +EXPORT_SYMBOL drivers/firewire/firewire-core 0xb8238108 fw_send_response +EXPORT_SYMBOL drivers/firewire/firewire-core 0xb907c9d0 fw_core_remove_address_handler +EXPORT_SYMBOL drivers/firewire/firewire-core 0xbeff34a0 fw_device_enable_phys_dma +EXPORT_SYMBOL drivers/firewire/firewire-core 0xc676b98e fw_schedule_bus_reset +EXPORT_SYMBOL drivers/firewire/firewire-core 0xce3038db fw_iso_resource_manage +EXPORT_SYMBOL drivers/firewire/firewire-core 0xd59a6d4b fw_iso_context_queue_flush +EXPORT_SYMBOL drivers/firewire/firewire-core 0xdc9772f8 fw_iso_buffer_destroy +EXPORT_SYMBOL drivers/firewire/firewire-core 0xdffbaaaf fw_iso_context_destroy +EXPORT_SYMBOL drivers/firewire/firewire-core 0xfd955d09 fw_send_request +EXPORT_SYMBOL drivers/firewire/firewire-core 0xff3681c8 fw_core_remove_card +EXPORT_SYMBOL drivers/fmc/fmc 0x04517dbc fmc_driver_unregister +EXPORT_SYMBOL drivers/fmc/fmc 0x270e594d fmc_device_unregister_n +EXPORT_SYMBOL drivers/fmc/fmc 0x323b5090 fmc_reprogram +EXPORT_SYMBOL drivers/fmc/fmc 0x410d4c08 fmc_find_sdb_device +EXPORT_SYMBOL drivers/fmc/fmc 0x4f05eaf1 fmc_device_register +EXPORT_SYMBOL drivers/fmc/fmc 0x66f96c2c fmc_scan_sdb_tree +EXPORT_SYMBOL drivers/fmc/fmc 0x6c2ef779 fmc_driver_register +EXPORT_SYMBOL drivers/fmc/fmc 0x8bb6d183 fmc_free_sdb_tree +EXPORT_SYMBOL drivers/fmc/fmc 0xd44b7558 fmc_device_register_n +EXPORT_SYMBOL drivers/fmc/fmc 0xe0b413b8 fmc_device_unregister +EXPORT_SYMBOL drivers/fmc/fmc 0xf92d956a fmc_show_sdb_tree +EXPORT_SYMBOL drivers/gpu/drm/drm 0x003e5161 drm_pcie_get_speed_cap_mask +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0080c63f drm_mode_group_init_legacy_group +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0158db18 drm_mode_connector_set_path_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x01804ed0 drm_set_preferred_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x02795832 drm_gem_put_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0x035b607f drm_mode_connector_update_edid_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x03a2b7a2 drm_plane_force_disable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x03c1fa11 drm_unplug_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0x04461a61 drm_panel_detach +EXPORT_SYMBOL drivers/gpu/drm/drm 0x04fd98fb drm_agp_info +EXPORT_SYMBOL drivers/gpu/drm/drm 0x05e8a16d drm_framebuffer_reference +EXPORT_SYMBOL drivers/gpu/drm/drm 0x07dcfc28 drm_vma_node_revoke +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0807f8d1 drm_prime_pages_to_sg +EXPORT_SYMBOL drivers/gpu/drm/drm 0x08a93cf3 drm_connector_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x08df078c drm_crtc_vblank_count +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0900baa3 drm_agp_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x095cc0da drm_bridge_enable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0a5ff845 drm_i2c_encoder_prepare +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0a72f765 drm_clflush_virt_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0aa5f7d3 drm_object_property_get_value +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0ae4b94c drm_ht_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0b280989 drm_framebuffer_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0bbf7e1c drm_gem_prime_handle_to_fd +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0e450c93 of_drm_find_panel +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0fccafb1 drm_global_item_unref +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 0x11110466 drm_mode_prune_invalid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x12117ad0 drm_mode_set_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x14a9a178 drm_get_format_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1536b22e drm_gem_vm_close +EXPORT_SYMBOL drivers/gpu/drm/drm 0x15dea571 drm_vma_node_is_allowed +EXPORT_SYMBOL drivers/gpu/drm/drm 0x172d55a1 drm_i2c_encoder_dpms +EXPORT_SYMBOL drivers/gpu/drm/drm 0x17dd0764 drm_i2c_encoder_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x194eadaa drm_edid_header_is_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1a546ddd drm_mm_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1a770ac3 drm_detect_hdmi_monitor +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1af85dca drm_open +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1b2aa1f5 drm_vblank_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1b4fcca0 drm_gem_prime_export +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1bf5338d drm_hdmi_vendor_infoframe_from_display_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1c413829 drm_property_reference_blob +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1d823350 drm_gem_vm_open +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1dd71f7a drm_err +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1e02e165 drm_property_create_bitmask +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1f07f8d8 drm_agp_acquire +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1f4e1906 drm_sysfs_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1f61a2ee drm_agp_enable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1f675a88 drm_crtc_wait_one_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0x20645642 drm_debug +EXPORT_SYMBOL drivers/gpu/drm/drm 0x213377bd drm_crtc_vblank_reset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x224350a5 drm_flip_work_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x228293f6 drm_atomic_get_plane_state +EXPORT_SYMBOL drivers/gpu/drm/drm 0x22acaf62 drm_get_cea_aspect_ratio +EXPORT_SYMBOL drivers/gpu/drm/drm 0x24a799da drm_mode_create_scaling_mode_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x259e8ba6 drm_clflush_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0x26238f7d drm_crtc_vblank_on +EXPORT_SYMBOL drivers/gpu/drm/drm 0x262dd4b8 drm_add_modes_noedid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x26527261 drm_poll +EXPORT_SYMBOL drivers/gpu/drm/drm 0x28019ba7 drm_bridge_mode_set +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2993ca4f drm_atomic_plane_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x29a010e6 drm_mm_insert_node_in_range_generic +EXPORT_SYMBOL drivers/gpu/drm/drm 0x29d50b6f drm_prime_gem_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x29f1de05 drm_legacy_rmmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2a24ca06 drm_legacy_getsarea +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2a457c21 drm_legacy_addmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2b5e4dea drm_framebuffer_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2bde42f9 drm_vblank_post_modeset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2d03dcc9 drm_atomic_state_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2d50570f drm_rect_calc_hscale +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2e7a4300 drm_rgb_quant_range_selectable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2f54af39 drm_mode_connector_list_update +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2fdea28b drm_mode_create_dirty_info_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x30af76fb drm_gem_object_lookup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x30b05bd9 drm_atomic_add_affected_planes +EXPORT_SYMBOL drivers/gpu/drm/drm 0x30f3a343 drm_mode_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3233af2f drm_dev_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x32d6b961 drm_property_create_object +EXPORT_SYMBOL drivers/gpu/drm/drm 0x34485227 drm_atomic_set_crtc_for_plane +EXPORT_SYMBOL drivers/gpu/drm/drm 0x346127a7 drm_global_item_ref +EXPORT_SYMBOL drivers/gpu/drm/drm 0x347c2e0d drm_bridge_post_disable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x34c7cd8b drm_mode_set_config_internal +EXPORT_SYMBOL drivers/gpu/drm/drm 0x37ebe743 drm_mm_replace_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0x37f5e6a3 drm_atomic_state_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x389c015f drm_flip_work_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x38a4f7ae drm_format_num_planes +EXPORT_SYMBOL drivers/gpu/drm/drm 0x398c1e7f drm_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3ac1fef9 drm_mode_legacy_fb_format +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3b9d009a drm_format_plane_cpp +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3cbbe4eb drm_mode_probed_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3d0497f5 drm_reinit_primary_mode_group +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3d8283c8 drm_flip_work_queue_task +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3db228c1 drm_i2c_encoder_restore +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3e41d610 drm_mode_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3eb37b9d drm_ht_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x412bf42b drm_framebuffer_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x43469f41 drm_mode_create_tile_group +EXPORT_SYMBOL drivers/gpu/drm/drm 0x439f2724 drm_dev_unregister +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4608c30c drm_atomic_set_crtc_for_connector +EXPORT_SYMBOL drivers/gpu/drm/drm 0x490cfb78 drm_mm_reserve_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4aafea66 drm_master_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4c511235 drm_edid_is_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4d49e976 drm_crtc_vblank_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4e9e4767 drm_bridge_pre_enable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4ea1f5a2 drm_gem_object_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4ebb482c drm_crtc_get_hv_timing +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4fcda644 drm_mode_config_reset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x503db509 drm_legacy_addbufs_pci +EXPORT_SYMBOL drivers/gpu/drm/drm 0x50726bbb drm_mode_get_tile_group +EXPORT_SYMBOL drivers/gpu/drm/drm 0x50af4a47 drm_wait_one_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0x50e28c07 drm_edid_to_sad +EXPORT_SYMBOL drivers/gpu/drm/drm 0x51849257 drm_modeset_unlock +EXPORT_SYMBOL drivers/gpu/drm/drm 0x51db353a drm_vma_offset_manager_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x51f8ccc0 drm_platform_set_busid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x525e2b7c drm_mode_hsync +EXPORT_SYMBOL drivers/gpu/drm/drm 0x526f6f71 drm_rect_calc_hscale_relaxed +EXPORT_SYMBOL drivers/gpu/drm/drm 0x534ec64c drm_i2c_encoder_detect +EXPORT_SYMBOL drivers/gpu/drm/drm 0x53570518 drm_plane_index +EXPORT_SYMBOL drivers/gpu/drm/drm 0x537845c4 drm_bridge_mode_fixup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5621da11 drm_mode_config_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x566cfbf9 drm_agp_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x56b489e8 drm_cvt_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x57b6efe3 drm_ioctl_flags +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5809414c drm_mode_connector_set_tile_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x58a2800b drm_atomic_connectors_for_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x58becafd drm_atomic_set_mode_prop_for_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x59ef50f0 drm_edid_block_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5a3e1c25 drm_modeset_legacy_acquire_ctx +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5b1f1049 drm_bridge_attach +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5d27b93c drm_atomic_check_only +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5d455aa0 drm_calc_vbltimestamp_from_scanoutpos +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5e36988d drm_mode_find_dmt +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5f1f4317 drm_agp_bind_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5f8c2213 drm_vblank_count_and_time +EXPORT_SYMBOL drivers/gpu/drm/drm 0x626c96a3 drm_platform_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x629c05e1 drm_clflush_sg +EXPORT_SYMBOL drivers/gpu/drm/drm 0x63247c58 drm_legacy_idlelock_take +EXPORT_SYMBOL drivers/gpu/drm/drm 0x647e7387 drm_dev_set_unique +EXPORT_SYMBOL drivers/gpu/drm/drm 0x64e00247 drm_legacy_addbufs_agp +EXPORT_SYMBOL drivers/gpu/drm/drm 0x65269c51 drm_atomic_state_clear +EXPORT_SYMBOL drivers/gpu/drm/drm 0x65eb1e0e drm_select_eld +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6683c79d drm_agp_unbind +EXPORT_SYMBOL drivers/gpu/drm/drm 0x67633846 drm_mm_insert_node_generic +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6807ff63 drm_vblank_off +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6900d335 drm_rect_clip_scaled +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6ab4d230 drm_connector_register +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6d7311ff drm_debugfs_remove_files +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6e30ba8e drm_rect_rotate_inv +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6e80f4db drm_irq_uninstall +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6f815f85 drm_read +EXPORT_SYMBOL drivers/gpu/drm/drm 0x70ad7e68 drm_vblank_on +EXPORT_SYMBOL drivers/gpu/drm/drm 0x71a3ba4b drm_gem_free_mmap_offset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x72834c27 drm_probe_ddc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x72d03731 drm_gtf_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x72dc5d8b drm_property_add_enum +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7318315e drm_vma_offset_lookup_locked +EXPORT_SYMBOL drivers/gpu/drm/drm 0x73fc0ddd drm_mode_config_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x749b865e drm_dev_register +EXPORT_SYMBOL drivers/gpu/drm/drm 0x75050867 drm_connector_unplug_all +EXPORT_SYMBOL drivers/gpu/drm/drm 0x758f44b0 drm_connector_unregister +EXPORT_SYMBOL drivers/gpu/drm/drm 0x774021d9 drm_ioctl +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7b6d8df8 drm_gem_create_mmap_offset_size +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7c2548ef drm_pci_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7e22a053 drm_object_attach_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7ef16c1d drm_property_lookup_blob +EXPORT_SYMBOL drivers/gpu/drm/drm 0x81177246 drm_atomic_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x812d8ecf drm_gem_private_object_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x81a5e65a drm_modeset_lock_all +EXPORT_SYMBOL drivers/gpu/drm/drm 0x822b610a drm_mode_equal +EXPORT_SYMBOL drivers/gpu/drm/drm 0x82c2998f drm_flip_work_allocate_task +EXPORT_SYMBOL drivers/gpu/drm/drm 0x837c85bb drm_vma_offset_manager_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x837dfaee drm_dev_unref +EXPORT_SYMBOL drivers/gpu/drm/drm 0x848345fa drm_get_pci_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0x848b1516 drm_atomic_add_affected_connectors +EXPORT_SYMBOL drivers/gpu/drm/drm 0x84cca8dc drm_framebuffer_lookup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x85295445 drm_mode_copy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8666a2cf drm_mode_validate_size +EXPORT_SYMBOL drivers/gpu/drm/drm 0x867afc14 drm_i2c_encoder_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x871ab41a drm_rect_intersect +EXPORT_SYMBOL drivers/gpu/drm/drm 0x872645fa drm_i2c_encoder_mode_fixup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x88147235 drm_mode_validate_basic +EXPORT_SYMBOL drivers/gpu/drm/drm 0x886d77c3 drm_vma_node_allow +EXPORT_SYMBOL drivers/gpu/drm/drm 0x89bddc9d drm_object_property_set_value +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8c6a9344 drm_mode_equal_no_clocks_no_stereo +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8da05bcd drm_property_create_bool +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8de13715 drm_format_vert_chroma_subsampling +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8eed7418 drm_property_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8eff9111 drm_ht_find_item +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8f6d5d67 drm_handle_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8f8ef135 drm_modeset_unlock_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8fc1fe1f drm_edid_to_eld +EXPORT_SYMBOL drivers/gpu/drm/drm 0x90e80d29 drm_plane_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x91fec1cc drm_rect_calc_vscale +EXPORT_SYMBOL drivers/gpu/drm/drm 0x92408488 drm_mm_scan_add_block +EXPORT_SYMBOL drivers/gpu/drm/drm 0x92d26b36 drm_panel_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9408e39f drm_ati_pcigart_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x950e2e65 drm_panel_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9514e878 drm_noop +EXPORT_SYMBOL drivers/gpu/drm/drm 0x966995e6 drm_modeset_acquire_fini +EXPORT_SYMBOL drivers/gpu/drm/drm 0x96b506a2 drm_modeset_lock_interruptible +EXPORT_SYMBOL drivers/gpu/drm/drm 0x99337d95 drm_send_vblank_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9972db48 drm_rect_calc_vscale_relaxed +EXPORT_SYMBOL drivers/gpu/drm/drm 0x99fe5098 drm_property_create_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9c815318 drm_pci_exit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9da19a1f drm_pci_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9da99e90 drm_property_create_blob +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9ebae205 drm_crtc_check_viewport +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9fb5a91a drm_crtc_init_with_planes +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa1bf0a2b drm_i2c_encoder_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa1c9c5da drm_display_info_set_bus_formats +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa213c57b drm_mode_create_tv_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa239d142 drm_mode_connector_attach_encoder +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa27ae4c5 drm_mm_dump_table +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa28078b2 drm_edid_duplicate +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa335d2d8 drm_flip_work_queue +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa3c5d4ad drm_crtc_send_vblank_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa4466414 drm_mm_remove_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa49ce762 drm_legacy_idlelock_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa535a882 drm_legacy_rmmap_locked +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa57e4214 drm_atomic_state_default_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa66a65c5 drm_gem_get_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa793d281 drm_connector_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa9570a28 drm_mode_create_suggested_offset_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa96acfcb drm_rect_debug_print +EXPORT_SYMBOL drivers/gpu/drm/drm 0xabfff9fc of_drm_find_bridge +EXPORT_SYMBOL drivers/gpu/drm/drm 0xacb9d9a7 drm_av_sync_delay +EXPORT_SYMBOL drivers/gpu/drm/drm 0xacc105a8 drm_agp_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0xad5701a4 drm_mode_vrefresh +EXPORT_SYMBOL drivers/gpu/drm/drm 0xae0b39d1 drm_ati_pcigart_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xae143714 drm_encoder_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xaeec9d6c drm_warn_on_modeset_not_all_locked +EXPORT_SYMBOL drivers/gpu/drm/drm 0xaf6d69b2 drm_connector_index +EXPORT_SYMBOL drivers/gpu/drm/drm 0xaf7ce54b drm_modeset_drop_locks +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb053adda drm_rect_rotate +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb25727cd drm_universal_plane_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb257f4ca drm_get_edid +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb30a2ab2 drm_modeset_lock_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb479d068 drm_mode_plane_set_obj_prop +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb53ab236 drm_modeset_unlock_all +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb69cdba6 drm_crtc_vblank_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb82023e0 drm_atomic_legacy_backoff +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb94b6c3d drm_mode_parse_command_line_for_connector +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb9618f21 drm_i2c_encoder_mode_set +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb981c58d drm_legacy_ioremapfree +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb9f6f6b6 drm_atomic_connector_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xba58b631 drm_vblank_pre_modeset +EXPORT_SYMBOL drivers/gpu/drm/drm 0xba9d788a drm_bridge_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbbb74da4 drm_atomic_crtc_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbc3b8677 drm_mode_crtc_set_gamma_size +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbcc590a8 drm_crtc_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbecbf68e drm_property_create_signed_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbfba2db7 drm_plane_from_index +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc09c163b drm_atomic_set_fb_for_plane +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc1bac480 drm_mode_create_from_cmdline_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc1fa757f drm_atomic_get_connector_state +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc1ffa63a drm_bridge_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc2b9a420 drm_vblank_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc2bac7fa drm_legacy_mmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc360e7e2 drm_ut_debug_printk +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc413efe8 drm_bridge_disable +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc43dd0a0 drm_panel_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc4a39bba drm_mode_create_rotation_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc593be4e drm_legacy_ioremap_wc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc8a72035 drm_master_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0xca45efbc drm_format_horz_chroma_subsampling +EXPORT_SYMBOL drivers/gpu/drm/drm 0xca5c7790 drm_mm_init_scan_with_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcac22e7e drm_vma_offset_lookup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcd0fc417 drm_ht_just_insert_please +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcd3ecada drm_gem_handle_delete +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcfac1954 drm_crtc_index +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd0234357 drm_property_unreference_blob +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd084b40a drm_add_edid_modes +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd1cd6d3f drm_atomic_state_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd2335101 drm_fb_get_bpp_depth +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd25b7a07 drm_debugfs_create_files +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd30fa478 drm_plane_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd3b0ed27 drm_modeset_backoff_interruptible +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd52b1d11 drm_mm_init_scan +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd573e26b drm_modeset_backoff +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd5e9ae5b drm_gem_prime_fd_to_handle +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd70c8470 drm_mm_debug_table +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd965f547 drm_mode_debug_printmodeline +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd9b990e0 drm_gem_mmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0xda4d0d33 drm_panel_attach +EXPORT_SYMBOL drivers/gpu/drm/drm 0xda98e63c drm_gtf_mode_complex +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdb29211c drm_crtc_handle_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdb5b7689 drm_encoder_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdbb5a9f5 drm_ht_remove_item +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdbb6ea8e drm_irq_install +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdca0c1c5 drm_framebuffer_unreference +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdd150721 drm_mm_takedown +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdd48b474 drm_mode_create_aspect_ratio_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdf666902 drm_rotation_simplify +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe0f1dfba drm_match_cea_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe0fee769 drm_i2c_encoder_save +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe2135ae4 drm_atomic_state_default_clear +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe274dcbc drm_gem_prime_import +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe2ffd7a5 drm_vma_offset_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe316262d drm_of_find_possible_crtcs +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe51d89b5 drm_mm_clean +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe5212821 drm_mode_duplicate +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe577ee1d drm_calc_timestamping_constants +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe5edcd8d drm_vblank_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe65d980a drm_hdmi_avi_infoframe_from_display_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe6bfd9ef drm_gem_dmabuf_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe7197773 drm_ht_insert_item +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe74bc887 drm_gem_object_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe806a64b drm_modeset_lock_all_crtcs +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe853f485 drm_prime_sg_to_page_addr_arrays +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe97b8187 drm_mode_set_crtcinfo +EXPORT_SYMBOL drivers/gpu/drm/drm 0xea2ed919 drm_atomic_get_crtc_state +EXPORT_SYMBOL drivers/gpu/drm/drm 0xea560608 drm_legacy_ioremap +EXPORT_SYMBOL drivers/gpu/drm/drm 0xeb87c5ef drm_flip_work_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xec66ba79 drm_mode_object_find +EXPORT_SYMBOL drivers/gpu/drm/drm 0xecb7fae9 drm_atomic_async_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0xee7f9208 drm_gem_object_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xeedfcdcf drm_dev_ref +EXPORT_SYMBOL drivers/gpu/drm/drm 0xef04abb5 drm_pci_set_busid +EXPORT_SYMBOL drivers/gpu/drm/drm 0xef3ea112 drm_pci_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0xef87f79a drm_framebuffer_unregister_private +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf002aae3 drm_mode_create_dvi_i_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf020f930 drm_property_create_enum +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf068f7c1 drm_vblank_count +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf1087e14 drm_gem_create_mmap_offset +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf1421d13 drm_mode_sort +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf1b098be drm_vma_offset_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf42b75b5 drm_gem_dumb_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf4d7fe2d drm_crtc_vblank_off +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf60cc872 drm_modeset_acquire_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf6c38343 drm_agp_bind +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf70d3e37 __drm_modeset_lock_all +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf889afe5 drm_vblank_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf8b0d919 drm_gem_handle_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf8f51dac drm_atomic_set_mode_for_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfbe4bf1e drm_property_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfcf54a4f drm_mm_scan_remove_block +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfd063935 drm_edid_to_speaker_allocation +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfd69c59b drm_modeset_lock +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfde950f7 drm_put_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0xff3de126 drm_gem_mmap_obj +EXPORT_SYMBOL drivers/gpu/drm/drm 0xffc6c87a drm_detect_monitor_audio +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x003ed362 drm_dp_mst_get_edid +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x024f8f22 drm_dp_update_payload_part1 +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x036a9f7c drm_primary_helper_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x03a6674a drm_has_preferred_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x04b9b636 drm_dp_link_power_up +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x05c8f372 drm_atomic_helper_check_planes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x085ea1ee drm_plane_helper_disable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x098e47d2 drm_dp_link_train_clock_recovery_delay +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0b95d5ab drm_helper_move_panel_connectors_to_head +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0f96ec70 drm_dp_clock_recovery_ok +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x11f413ac __drm_atomic_helper_crtc_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x128494cf drm_atomic_helper_connector_dpms +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x1581ff7f drm_kms_helper_poll_disable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x163251c8 drm_dp_link_train_channel_eq_delay +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x195f52d6 drm_dp_dpcd_read_link_status +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x1a2b27a7 drm_fb_helper_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x229bef30 drm_crtc_helper_set_config +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x284a9376 drm_atomic_helper_swap_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x292568ec drm_crtc_helper_set_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2ec32804 drm_helper_probe_single_connector_modes_nomerge +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2f0a325b drm_atomic_helper_page_flip +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x339cf739 drm_helper_crtc_in_use +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x34871adf drm_dp_channel_eq_ok +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x353e9321 drm_atomic_helper_crtc_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3ddd72dc drm_atomic_helper_check_modeset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3e5d6bc0 __drm_atomic_helper_connector_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x41d77cf1 drm_atomic_helper_commit_planes_on_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x44a51993 drm_helper_probe_single_connector_modes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4737b22b drm_dp_mst_topology_mgr_suspend +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4976acae drm_dp_mst_allocate_vcpi +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4c05f634 drm_dp_check_act_status +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4eecc85b drm_atomic_helper_commit_planes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5140a3d4 drm_helper_resume_force_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5adf3efe drm_atomic_helper_commit_modeset_enables +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5ba6bead drm_atomic_helper_check +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5bc45b1e drm_dp_aux_register +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x600f3463 drm_helper_encoder_in_use +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x60d24f13 drm_dp_mst_topology_mgr_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6a672126 drm_atomic_helper_set_config +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6acd1372 drm_atomic_helper_plane_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6d44860f drm_atomic_helper_crtc_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6e28d0f2 drm_atomic_helper_commit +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x711a004a drm_dp_link_rate_to_bw_code +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x72057fdc drm_dp_mst_topology_mgr_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x73319f15 drm_fb_helper_blank +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x75bd0a62 drm_helper_hpd_irq_event +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7969b1ca drm_fb_helper_debug_leave +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7abcf197 drm_fb_helper_remove_one_connector +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x815acd89 drm_atomic_helper_prepare_planes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x81d7a29a drm_plane_helper_update +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x84e924ba drm_dp_get_adjust_request_pre_emphasis +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x859e8120 drm_dp_mst_reset_vcpi_slots +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8659e5ef drm_fb_helper_debug_enter +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x866487d7 drm_dp_mst_detect_port +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x86cc399c drm_dp_mst_get_vcpi_slots +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8bb6c91b drm_atomic_helper_update_plane +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8e1df4b4 drm_crtc_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8e857ff1 drm_fb_helper_set_par +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8fd51a8a __drm_atomic_helper_plane_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8ff58919 drm_fb_helper_pan_display +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x90159871 drm_atomic_helper_crtc_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x90c8f744 drm_dp_link_configure +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x966d59a8 drm_fb_helper_fini +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x970995d3 drm_fb_helper_initial_config +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9dcd0c2e drm_dp_mst_topology_mgr_set_mst +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9e93743c drm_atomic_helper_connector_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9fe5d3c4 drm_pick_cmdline_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa04803ce drm_fb_helper_setcmap +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa0c502e7 drm_dp_update_payload_part2 +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa1ed63f2 drm_primary_helper_update +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa3c72841 drm_helper_crtc_mode_set +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa45f1f1b drm_fb_helper_fill_fix +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa47826e4 drm_dp_calc_pbn_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa4b9b730 drm_atomic_helper_commit_modeset_disables +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa6846848 drm_atomic_helper_wait_for_vblanks +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa77858bb drm_dp_get_adjust_request_voltage +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa8d2f56f drm_atomic_helper_disable_plane +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa8d6809d drm_dp_bw_code_to_link_rate +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xab7894c4 drm_primary_helper_disable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xab8b68f6 drm_dp_dpcd_read +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xace6203f drm_kms_helper_poll_fini +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xae6140cf drm_dp_aux_unregister +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb056fe5c drm_atomic_helper_plane_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb0c69d67 drm_atomic_helper_cleanup_planes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb1e96797 drm_kms_helper_poll_enable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb255ab3f drm_atomic_helper_connector_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb5a1686d drm_fb_helper_single_add_all_connectors +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb8b9efa6 drm_fb_helper_fill_var +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb9913899 __drm_atomic_helper_crtc_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc1696479 drm_fb_helper_add_one_connector +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc1c2e939 drm_atomic_helper_connector_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc3122860 __drm_atomic_helper_plane_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd0481ad9 drm_dp_mst_topology_mgr_resume +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd0de58b1 drm_plane_helper_check_update +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd3f2c01a drm_helper_disable_unused_functions +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd4cb5bc6 drm_kms_helper_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd613593f __drm_atomic_helper_connector_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd787a4e3 drm_dp_find_vcpi_slots +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd88afe63 drm_atomic_helper_plane_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xdaf1eb3a drm_primary_helper_funcs +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xdb660677 drm_atomic_helper_connector_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xdd7c770e drm_dp_mst_hpd_irq +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xdf040f68 drm_atomic_helper_update_legacy_modeset_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xdffec87e drm_dp_link_power_down +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe6d82fba drm_fb_helper_prepare +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe8d626a8 drm_fb_helper_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe8e48765 drm_helper_mode_fill_fb_struct +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe93686a1 drm_dp_mst_dump_topology +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xea8427f6 drm_dp_mst_deallocate_vcpi +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xeaf6159e drm_dp_dpcd_write +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xed480cf5 drm_dp_link_probe +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf09427b6 drm_helper_connector_dpms +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf1ba31ac drm_kms_helper_poll_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf3b8d894 drm_atomic_helper_crtc_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf40170d6 drm_fb_helper_check_var +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf81f7697 drm_fb_helper_restore_fbdev_mode_unlocked +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xfc06c338 drm_helper_crtc_mode_set_base +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xffd3db02 drm_atomic_helper_plane_reset +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x0321d391 ttm_mem_io_free +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x0d07cf64 ttm_bo_unref +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x0e53fb1d ttm_bo_move_accel_cleanup +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x0ee41e1d ttm_bo_wait +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x132b05be ttm_round_pot +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x15d07708 ttm_bo_synccpu_write_grab +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x168f7637 ttm_mem_global_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x1b2566f4 ttm_bo_lock_delayed_workqueue +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x1b5baa41 ttm_object_device_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x1b67b7f7 ttm_bo_device_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x1c24eef8 ttm_mem_io_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x1cd4f818 ttm_mem_global_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x224cf7a0 ttm_bo_mem_put +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x2b4e6938 ttm_bo_evict_mm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x2b54aa9a ttm_object_file_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x30b7507a ttm_bo_manager_func +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x32bdbe2b ttm_bo_kmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x36fe3f0b ttm_dma_tt_fini +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x3b466afd ttm_fbdev_mmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x3d54015d ttm_bo_unmap_virtual +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x3d58e0c3 ttm_tt_set_placement_caching +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x418d0dff ttm_tt_bind +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x4631d5ec ttm_pool_unpopulate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x485a5bc0 ttm_ref_object_add +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x4c27fd2a ttm_dma_tt_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x533717af ttm_bo_acc_size +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x59a27985 ttm_bo_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x5a8fdfea ttm_vt_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x5ae1ce85 ttm_tt_fini +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x5cf59609 ttm_bo_global_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x631e79dc ttm_bo_clean_mm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x67b1d568 ttm_bo_global_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x70b0a3a5 ttm_pool_populate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x75dfd40b ttm_mem_io_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x7d55da85 ttm_read_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x7e65cd27 ttm_bo_add_to_lru +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x80c66128 ttm_bo_mem_space +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x80d86f0e ttm_object_device_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x84a13931 ttm_write_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x87f129a6 ttm_bo_dma_acc_size +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x880a15ad ttm_base_object_lookup +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x88d7d6d1 ttm_eu_backoff_reservation +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x89a443de ttm_write_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x8c60c693 ttm_bo_synccpu_write_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x8d14adbf ttm_io_prot +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x938dfffb ttm_bo_move_memcpy +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x93db74e9 ttm_bo_mmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x94894449 ttm_base_object_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x9497a50a ttm_mem_global_free +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x998e45c0 ttm_ref_object_base_unref +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x9d31317b ttm_bo_swapout_all +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xa06d6944 ttm_bo_kunmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xa2a129fd ttm_suspend_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xa50b5c7d ttm_bo_create +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xa677bfb0 ttm_tt_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xa6abfe62 ttm_bo_move_ttm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xa73de2a9 ttm_vt_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xa8e0429c ttm_bo_validate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xaac00655 ttm_mem_global_alloc +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xb0c960ca ttm_bo_device_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xb2a7ad3f ttm_eu_fence_buffer_objects +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xb774e8d6 ttm_agp_tt_populate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xb83c6470 ttm_lock_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xba0aed2c ttm_prime_object_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xc5f0c2da ttm_read_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xca707f6e ttm_bo_del_sub_from_lru +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xce6e43a8 ttm_base_object_lookup_for_ref +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xcf67c299 ttm_ref_object_exists +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xd16afa76 ttm_agp_tt_create +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xd7f51742 ttm_suspend_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xd8edb115 ttm_base_object_unref +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xe2f55899 ttm_agp_tt_unpopulate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xe96ab904 ttm_bo_unlock_delayed_workqueue +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xebc91ff3 ttm_mem_io_reserve +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xee50a04b ttm_page_alloc_debugfs +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xee667001 ttm_eu_reserve_buffers +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xf80b6e7a ttm_bo_init_mm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xfbc2c5ec ttm_object_file_release +EXPORT_SYMBOL drivers/hwmon/hwmon-vid 0x0903c239 vid_from_reg +EXPORT_SYMBOL drivers/hwmon/hwmon-vid 0xef1c781c vid_which_vrm +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-bit 0x3f513064 i2c_bit_add_bus +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-bit 0x6ad0f017 i2c_bit_add_numbered_bus +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-bit 0xf8a8ccf7 i2c_bit_algo +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-pca 0xaf8dd5e2 i2c_pca_add_bus +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-pca 0xc5aadda5 i2c_pca_add_numbered_bus +EXPORT_SYMBOL drivers/i2c/busses/i2c-amd756 0xa2333a50 amd756_smbus +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x05e1cf8f mma9551_read_status_byte +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x41ef446c mma9551_read_accel_scale +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x4bafc81f mma9551_read_config_byte +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x528f4df3 mma9551_set_power_state +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x5f1308d9 mma9551_gpio_config +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x6cc1eca7 mma9551_read_status_word +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x811cea8d mma9551_read_accel_chan +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x822e15a8 mma9551_read_config_words +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x9a31b100 mma9551_write_config_byte +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x9a937ef2 mma9551_set_device_state +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x9c8031e4 mma9551_read_config_word +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x9cb2e536 mma9551_write_config_word +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xadc1ac1e mma9551_update_config_bits +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xbcd7fe96 mma9551_sleep +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xcd7704a8 mma9551_write_config_words +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xd3d9957b mma9551_app_reset +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xeceb9a0a mma9551_read_status_words +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xf3258f87 mma9551_read_version +EXPORT_SYMBOL drivers/iio/accel/st_accel 0x974cbaa9 st_accel_common_remove +EXPORT_SYMBOL drivers/iio/accel/st_accel 0xf62965cb st_accel_common_probe +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x1fbd370b hid_sensor_read_raw_hyst_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x2d93cb65 hid_sensor_read_samp_freq_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x43e9d771 hid_sensor_write_raw_hyst_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0xb2885735 hid_sensor_read_poll_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0xc07d6a2a hid_sensor_parse_common_attributes +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0xc83a92bf hid_sensor_format_scale +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0xd55d3794 hid_sensor_write_samp_freq_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-trigger 0x3799ec7f hid_sensor_setup_trigger +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-trigger 0x507eff50 hid_sensor_power_state +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-trigger 0xc943dffc hid_sensor_remove_trigger +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-trigger 0xd049220b hid_sensor_pm_ops +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0x5ed0707a ssp_register_consumer +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0x6aea9320 ssp_get_sensor_delay +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0xaaa29945 ssp_disable_sensor +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0xc89ff38c ssp_change_delay +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0xd89276ed ssp_enable_sensor +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/ssp_iio 0x0b5724f6 ssp_common_process_data +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/ssp_iio 0x22279de9 ssp_common_buffer_postdisable +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/ssp_iio 0xf2933dd9 ssp_common_buffer_postenable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x0273fca2 st_sensors_get_buffer_element +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x074d7047 st_sensors_trigger_handler +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x1b916a19 st_sensors_power_enable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x20e880fa st_sensors_sysfs_scale_avail +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x43ab5a17 st_sensors_check_device_support +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x5e087b6f st_sensors_set_enable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x82889008 st_sensors_set_fullscale_by_gain +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x937b2c92 st_sensors_init_sensor +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x9c6ef785 st_sensors_set_dataready_irq +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xa5074c24 st_sensors_set_axis_enable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xab4fe620 st_sensors_sysfs_sampling_frequency_avail +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xc960a560 st_sensors_deallocate_trigger +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xce9b1caa st_sensors_read_info_raw +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xef748ae2 st_sensors_power_disable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xf3cefb91 st_sensors_set_odr +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xf7d455c3 st_sensors_allocate_trigger +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors_i2c 0x41e4275c st_sensors_of_i2c_probe +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors_i2c 0xb78d9ac7 st_sensors_i2c_configure +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors_spi 0x811962bc st_sensors_spi_configure +EXPORT_SYMBOL drivers/iio/gyro/st_gyro 0xdd302b78 st_gyro_common_remove +EXPORT_SYMBOL drivers/iio/gyro/st_gyro 0xe5700dd5 st_gyro_common_probe +EXPORT_SYMBOL drivers/iio/imu/adis_lib 0x2a94f0a6 adis_enable_irq +EXPORT_SYMBOL drivers/iio/imu/adis_lib 0x48a7abdb adis_debugfs_reg_access +EXPORT_SYMBOL drivers/iio/industrialio 0x03c540d4 iio_trigger_notify_done +EXPORT_SYMBOL drivers/iio/industrialio 0x08325a74 iio_trigger_poll +EXPORT_SYMBOL drivers/iio/industrialio 0x083fe218 iio_device_unregister +EXPORT_SYMBOL drivers/iio/industrialio 0x0f6c2ab6 iio_trigger_alloc +EXPORT_SYMBOL drivers/iio/industrialio 0x2d6bcdcb iio_trigger_generic_data_rdy_poll +EXPORT_SYMBOL drivers/iio/industrialio 0x2e6fe9d4 iio_trigger_poll_chained +EXPORT_SYMBOL drivers/iio/industrialio 0x3158e9c4 iio_read_const_attr +EXPORT_SYMBOL drivers/iio/industrialio 0x38fbe96c iio_trigger_free +EXPORT_SYMBOL drivers/iio/industrialio 0x837f1657 iio_triggered_buffer_postenable +EXPORT_SYMBOL drivers/iio/industrialio 0x8e6c8f7d iio_push_event +EXPORT_SYMBOL drivers/iio/industrialio 0xb1253c1e iio_bus_type +EXPORT_SYMBOL drivers/iio/industrialio 0xb32f6738 iio_trigger_register +EXPORT_SYMBOL drivers/iio/industrialio 0xb7719e97 iio_device_free +EXPORT_SYMBOL drivers/iio/industrialio 0xbe07cafd iio_triggered_buffer_predisable +EXPORT_SYMBOL drivers/iio/industrialio 0xc09810a7 iio_device_register +EXPORT_SYMBOL drivers/iio/industrialio 0xc35e242a iio_trigger_unregister +EXPORT_SYMBOL drivers/iio/industrialio 0xdf76bbeb iio_pollfunc_store_time +EXPORT_SYMBOL drivers/iio/industrialio 0xe71774d4 iio_buffer_init +EXPORT_SYMBOL drivers/iio/industrialio 0xe9c5ce5e iio_device_alloc +EXPORT_SYMBOL drivers/iio/industrialio-triggered-buffer 0x00acf874 iio_triggered_buffer_cleanup +EXPORT_SYMBOL drivers/iio/industrialio-triggered-buffer 0x92439f18 iio_triggered_buffer_setup +EXPORT_SYMBOL drivers/iio/kfifo_buf 0x509cb859 iio_kfifo_allocate +EXPORT_SYMBOL drivers/iio/kfifo_buf 0x75c19f25 devm_iio_kfifo_free +EXPORT_SYMBOL drivers/iio/kfifo_buf 0xa6835cd7 iio_kfifo_free +EXPORT_SYMBOL drivers/iio/kfifo_buf 0xb4526104 devm_iio_kfifo_allocate +EXPORT_SYMBOL drivers/iio/magnetometer/st_magn 0x2874cce1 st_magn_common_remove +EXPORT_SYMBOL drivers/iio/magnetometer/st_magn 0xae53c382 st_magn_common_probe +EXPORT_SYMBOL drivers/iio/pressure/ms5611_core 0xb74bcdad ms5611_probe +EXPORT_SYMBOL drivers/iio/pressure/st_pressure 0x199c0372 st_press_common_remove +EXPORT_SYMBOL drivers/iio/pressure/st_pressure 0x987f4756 st_press_common_probe +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x049ace30 rdma_addr_find_smac_by_sgid +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x04b8b6d7 rdma_translate_ip +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x1c3c0ad3 rdma_addr_size +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x1ea5767b rdma_addr_register_client +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x273f4cca rdma_addr_cancel +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x30af89c0 rdma_copy_addr +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x32a8402c rdma_addr_unregister_client +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x59252c9d rdma_resolve_ip +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0xf029eb25 rdma_addr_find_dmac_by_grh +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x07d22ac0 ib_send_cm_apr +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x0d034411 ib_send_cm_dreq +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x1957a225 ib_cm_listen +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x1a0af903 ib_send_cm_sidr_req +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x2818bd04 ib_send_cm_rtu +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x3a03cabf ib_send_cm_drep +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x66b46a79 ib_cm_notify +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x7b5c51b0 ib_send_cm_mra +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x94a80a10 ib_send_cm_rep +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xa54064a5 ib_send_cm_sidr_rep +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xaeaecdd7 ib_cm_init_qp_attr +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xca578f56 cm_class +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xcca6d7fd ib_send_cm_lap +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xe05d5a32 ib_send_cm_req +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xe9c0b019 ib_create_cm_id +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xf10a7bec ib_send_cm_rej +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xf57d6385 ib_destroy_cm_id +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0483eadf ib_find_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x07f5a2c4 ib_umem_get +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x08da3dee ibnl_add_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0a26f75f ib_resolve_eth_l2_attrs +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0c1b9ac1 ib_ud_header_unpack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x11bad491 ib_umem_odp_unmap_dma_pages +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1668ae9e ib_umem_release +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x16e15278 ib_fmr_pool_map_phys +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1be80d92 ib_create_fmr_pool +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1e491a04 ib_unmap_fmr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x212b7bc4 ib_reg_phys_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x21915cf2 ib_dealloc_pd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x247296d1 ib_resize_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x252fa979 rdma_port_get_link_layer +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x254fbb8b ib_create_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2613acc2 ibnl_multicast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x26d2afba ib_umem_copy_from +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2d7476d2 ib_modify_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2e015a1e ib_modify_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2e7f4c29 ib_init_ah_from_wc +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2ed6e386 ib_ud_header_pack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x3130fc09 ib_create_ah_from_wc +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x335a4308 ib_get_cached_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x34cb7be6 ib_dealloc_mw +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x382510a8 ib_register_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x449cdcfa ib_unregister_event_handler +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x49ab92ce ib_modify_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x50160b18 ib_query_port +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x50dbc447 ib_flush_fmr_pool +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x520b2638 ib_pack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5611cdea rdma_node_get_transport +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5f03ced2 ib_query_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x61805d75 ib_create_flow +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x624304f7 ib_dealloc_xrcd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x64267a4f ib_rereg_phys_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x651d8b65 ib_open_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x65e525f0 ib_query_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x65f6579a ib_find_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x68d05c9e ib_detach_mcast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6cb7aa4b ib_attach_mcast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6cd25455 ib_query_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6e030e26 ib_modify_qp_is_ok +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x70cba09f ib_find_exact_cached_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x710201d6 ib_destroy_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x71539f6b ib_unregister_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7469efcf ib_modify_port +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7c752b97 ib_destroy_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x88f04716 ib_find_cached_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x897d4776 ib_alloc_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x89c12089 ib_fmr_pool_unmap +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x8eef7c70 ib_destroy_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x91b356fb ib_alloc_xrcd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x933a8b8a ib_create_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x949910ba ibnl_put_attr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x94bf0993 ib_alloc_pd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x94cf6486 ib_find_cached_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x96f8b418 ib_umem_page_count +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x9889ba79 ib_alloc_mw +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x9b211c94 ib_destroy_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x9f3472c2 ib_unregister_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa2f4c52f ib_get_cached_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa34498dd ib_create_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa573e05f ib_query_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa77a3abe ib_create_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa95f6e53 ib_set_client_data +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa9d04934 ib_dispatch_event +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xaac4b48f ib_alloc_fmr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xab0a3467 mult_to_ib_rate +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xab0adfc5 ib_destroy_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xaf36af7b ib_umem_odp_map_dma_pages +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb1a312e1 ib_unpack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb93a52b0 ib_rate_to_mbps +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb94c3a5c ib_modify_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xbaa70fec ib_alloc_fast_reg_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xbadd8259 ib_rate_to_mult +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xbb3288b7 ib_alloc_fast_reg_page_list +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc32b59ff ib_destroy_fmr_pool +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc3f6e131 ib_dealloc_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc67f14a5 ibnl_remove_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc6c245cc ib_get_client_data +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xcaaa069d ib_dereg_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xcfa2a09f ib_event_msg +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xcfe26e20 ib_query_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd240a185 ib_register_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd80aa8c9 ibnl_put_msg +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xdc35b8aa ib_register_event_handler +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xdc9f5665 ib_dealloc_fmr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xdce6e0f5 ib_modify_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xdedbcf20 ib_query_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xdf1f8e28 ib_check_mr_status +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe17a6892 ib_query_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe5840ec6 ib_wc_status_msg +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe85af105 ibnl_unicast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xea20757b ib_free_fast_reg_page_list +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xeb716cb5 ib_get_dma_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xef5e5472 ib_create_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf7723b4b ib_destroy_flow +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xfab8887d ib_close_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xfc150956 ib_ud_header_init +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xfc5112d9 ib_get_cached_lmc +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x047e2150 ib_unregister_mad_agent +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x06908d47 ib_register_mad_snoop +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x2f0ea69e ib_response_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x33b6dc79 ib_register_mad_agent +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x3dea8271 ib_post_send_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x4c130aaa ib_modify_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x544bf065 ib_get_rmpp_segment +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x575aa63e ib_create_send_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x64d3ccda ib_mad_kernel_rmpp_agent +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x6f077fcf ib_get_mad_data_offset +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x7b5d4b7a ib_is_mad_class_rmpp +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xc12793fa ib_free_send_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xc4f66f69 ib_cancel_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xd02a2045 ib_free_recv_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xe24e158e ib_process_mad_wc +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xfbbec915 ib_redirect_mad_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x0448d518 ib_sa_path_rec_get +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x1e49fee8 ib_sa_get_mcmember_rec +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x22f07253 ib_sa_unpack_path +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x42b67cbd ib_init_ah_from_mcmember +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x485d7795 ib_sa_guid_info_rec_query +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x5328d7a6 ib_sa_register_client +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x576fdbac ib_sa_free_multicast +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x6a8afb03 ib_init_ah_from_path +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x8cf57794 ib_sa_join_multicast +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x9a1cd50d ib_sa_unregister_client +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xc3967fe3 ib_sa_service_rec_query +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xda0d50ec ib_sa_cancel_query +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xddc330e7 ib_sa_pack_path +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x2569d757 ib_copy_path_rec_to_user +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x52a6ce77 ib_copy_ah_attr_to_user +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x7971c00e ib_copy_qp_attr_to_user +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0xe350f2aa ib_copy_path_rec_from_user +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x01792aae iwpm_add_mapping_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x0ff9f042 iwpm_remove_mapinfo +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x104ec8a1 iwpm_register_pid_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x1f907fe1 iwpm_mapping_info_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x24f6cd0d iw_destroy_cm_id +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x2824310b iw_cm_init_qp_attr +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x28739ffb iw_cm_disconnect +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x5581b775 iwpm_mapping_error_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x5bbce2a1 iwpm_ack_mapping_info_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x5da59312 iwpm_register_pid +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x60087e7a iw_create_cm_id +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x62d4838a iwpm_remote_info_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x6968573d iwpm_add_mapping +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x6c74c344 iwpm_get_remote_info +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x7bd69671 iwpm_add_and_query_mapping_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x904609a0 iwpm_remove_mapping +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x91a914d6 iwpm_init +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x9327be67 iwpm_exit +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x99edf901 iwpm_valid_pid +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xb4299c7a iw_cm_connect +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xc3d84f27 iw_cm_reject +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xd447b24a iwpm_create_mapinfo +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xed1adbe5 iw_cm_accept +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xf380aa0f iwpm_add_and_query_mapping +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xf47fad4d iw_cm_listen +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x007c193b rdma_create_qp +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x03a583dd rdma_create_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x24e93e12 rdma_set_ib_paths +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x2c61a8bf rdma_bind_addr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x48c18527 rdma_get_service_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x4a47b66a rdma_join_multicast +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x64562126 rdma_leave_multicast +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x675e2eb9 rdma_accept +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x82fd4c9d rdma_resolve_route +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x8d254062 rdma_set_service_type +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x907df803 rdma_event_msg +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xbcfa3bde rdma_connect +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xc02866df rdma_disconnect +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xc3a6dffe rdma_set_afonly +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xe0734c21 rdma_reject +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xe4810d9d rdma_listen +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xef8191ac rdma_resolve_addr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xf1752604 rdma_notify +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xf2a7f4d8 rdma_destroy_qp +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xf52618cd rdma_destroy_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xfc016781 rdma_set_reuseaddr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xfd58a9b2 rdma_init_qp_attr +EXPORT_SYMBOL drivers/input/gameport/gameport 0x1ae2104e gameport_set_phys +EXPORT_SYMBOL drivers/input/gameport/gameport 0x65c7ccfd gameport_stop_polling +EXPORT_SYMBOL drivers/input/gameport/gameport 0x6a0042e8 gameport_unregister_port +EXPORT_SYMBOL drivers/input/gameport/gameport 0x77c3f93e __gameport_register_driver +EXPORT_SYMBOL drivers/input/gameport/gameport 0x7f10f8b2 __gameport_register_port +EXPORT_SYMBOL drivers/input/gameport/gameport 0x994a40a9 gameport_start_polling +EXPORT_SYMBOL drivers/input/gameport/gameport 0x9b432dd5 gameport_open +EXPORT_SYMBOL drivers/input/gameport/gameport 0xaf9b0537 gameport_unregister_driver +EXPORT_SYMBOL drivers/input/gameport/gameport 0xe1427b0a gameport_close +EXPORT_SYMBOL drivers/input/input-polldev 0x08c141f6 input_unregister_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0x70bbcd5b input_register_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0x9a681792 devm_input_allocate_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0xe642d0ff input_allocate_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0xfdc7312a input_free_polled_device +EXPORT_SYMBOL drivers/input/matrix-keymap 0x6dd713da matrix_keypad_build_keymap +EXPORT_SYMBOL drivers/input/misc/ad714x 0x020e1426 ad714x_disable +EXPORT_SYMBOL drivers/input/misc/ad714x 0x1f270f4d ad714x_probe +EXPORT_SYMBOL drivers/input/misc/ad714x 0x203d8f96 ad714x_remove +EXPORT_SYMBOL drivers/input/misc/ad714x 0x990d804a 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 0xa54b597c cma3000_init +EXPORT_SYMBOL drivers/input/misc/cma3000_d0x 0xca3f100a cma3000_suspend +EXPORT_SYMBOL drivers/input/sparse-keymap 0x3dae1cd3 sparse_keymap_entry_from_scancode +EXPORT_SYMBOL drivers/input/sparse-keymap 0x53311cfb sparse_keymap_setup +EXPORT_SYMBOL drivers/input/sparse-keymap 0x5789e510 sparse_keymap_entry_from_keycode +EXPORT_SYMBOL drivers/input/sparse-keymap 0x66e452ba sparse_keymap_report_event +EXPORT_SYMBOL drivers/input/sparse-keymap 0xd6a7fe90 sparse_keymap_report_entry +EXPORT_SYMBOL drivers/input/sparse-keymap 0xf8276c3a sparse_keymap_free +EXPORT_SYMBOL drivers/input/touchscreen/ad7879 0x388d60ac ad7879_pm_ops +EXPORT_SYMBOL drivers/input/touchscreen/ad7879 0x97f83edf ad7879_remove +EXPORT_SYMBOL drivers/input/touchscreen/ad7879 0xff519ae8 ad7879_probe +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x04403fcf unregister_capi_driver +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x0adc8bd5 capi20_register +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x14f2aa5a capi20_get_version +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x2b8eab1f capilib_free_ncci +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x2baa6586 capilib_new_ncci +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x31c24aa4 capi20_isinstalled +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x47a2eab3 capi_ctr_down +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x50b33ca4 capi_cmsg2message +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x5ab0306e capi_ctr_handle_message +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x5ad104ac attach_capi_ctr +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x6057c6f3 capi_message2cmsg +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x62e32d43 capilib_data_b3_conf +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x71e8d5ba capilib_data_b3_req +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x7a33596c capi20_get_serial +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x7e6f1307 capi20_get_manufacturer +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x8f21e49b capi_ctr_suspend_output +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x8f699913 capilib_release +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x9b9e0381 capi_ctr_resume_output +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x9f823278 register_capi_driver +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xa7c4fd6c capi_message2str +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xaa165d27 capilib_release_appl +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xaa8e8147 capi20_release +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xaca241fa capi20_put_message +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xb19fda8d capi_cmd2str +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xb60e5e5f capi_cmsg_header +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xc10fe128 cdebbuf_free +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xc42d9ec1 capi20_manufacturer +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xd4faa69c detach_capi_ctr +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xe19a11ac capi20_get_profile +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xe8ad9bd1 capi_cmsg2str +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xfe24235a capi_ctr_ready +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x15b76fe0 b1_send_message +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x1aa66766 b1_load_t4file +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x3328464e b1_loaded +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x3dda9bf1 b1_free_card +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x625c757f b1_load_firmware +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x66e61153 b1_release_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x7a43fc93 b1_load_config +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x7a8f4331 b1_register_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x7d02aa8f avmcard_dma_free +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x80620818 b1_reset_ctr +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x85b327c2 b1_getrevision +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x85f09690 b1_irq_table +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x97c0e21f b1_parse_version +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xa39f4a6c b1_alloc_card +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xaaf0b0ef avmcard_dma_alloc +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xc747c391 b1ctl_proc_fops +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xdfd28376 b1_detect +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xfa10fee4 b1_interrupt +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x192e3547 b1dma_reset +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x3cef8b15 b1dma_send_message +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x41a3a8d1 b1dma_reset_ctr +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x671281fa b1dma_load_firmware +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x68111ae2 b1dma_release_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x6898623f b1pciv4_detect +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x972af5a9 t1pci_detect +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xc5856b3f b1dma_register_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xd6f9f1ea b1dma_interrupt +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xf12e04cd b1dmactl_proc_fops +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1pcmcia 0x29562993 b1pcmcia_delcard +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1pcmcia 0xaec3240e b1pcmcia_addcard_m1 +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1pcmcia 0xea620116 b1pcmcia_addcard_m2 +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1pcmcia 0xf14bf8b1 b1pcmcia_addcard_b1 +EXPORT_SYMBOL drivers/isdn/hardware/eicon/divadidd 0x2974ead1 DIVA_DIDD_Read +EXPORT_SYMBOL drivers/isdn/hardware/eicon/divadidd 0x7ab59853 proc_net_eicon +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0x051e0d6b mISDNisac_init +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0x1d5c4004 mISDNisac_irq +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0x37646c65 mISDNipac_init +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0x7d215e31 mISDNipac_irq +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNisar 0xa1f78ac6 mISDNisar_irq +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNisar 0xcc73af2b mISDNisar_init +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x07f4f2ce hisax_unregister +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x148f0c99 FsmFree +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x6fe1ca04 FsmDelTimer +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x8d31a442 hisax_init_pcmcia +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x93a64734 FsmChangeState +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x9df0cd27 FsmEvent +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x9f987c85 FsmRestartTimer +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0xa1bc94b9 FsmInitTimer +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0xee93522c hisax_register +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0xf0a16657 FsmNew +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0xfc27303b HiSax_closecard +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x1fe6af6c isac_init +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x3f3b323a isac_d_l2l1 +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x75938173 isacsx_irq +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0xade4df21 isac_irq +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0xc863cd06 isac_setup +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0xcc3d5654 isacsx_setup +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0x0a632f74 register_isdn +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0x0c90bce9 isdn_ppp_register_compressor +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0x1fc2766c isdn_ppp_unregister_compressor +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0xfa06820f isdn_register_divert +EXPORT_SYMBOL drivers/isdn/i4l/isdnhdlc 0x3b71e4fc isdnhdlc_decode +EXPORT_SYMBOL drivers/isdn/i4l/isdnhdlc 0x59cc8a7e isdnhdlc_out_init +EXPORT_SYMBOL drivers/isdn/i4l/isdnhdlc 0x8ee38862 isdnhdlc_rcv_init +EXPORT_SYMBOL drivers/isdn/i4l/isdnhdlc 0xfd9d4c09 isdnhdlc_encode +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x029eeaf4 queue_ch_frame +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x06fcebef mISDN_FsmDelTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x1cf196fb mISDN_FsmAddTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x226c9d05 mISDN_unregister_device +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x2348cc3c mISDN_FsmFree +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x29fa5b43 mISDN_FsmRestartTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x2c982763 recv_Echannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x2ec7b233 mISDN_ctrl_bchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x3246ea6c recv_Dchannel_skb +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x36ec1940 mISDN_FsmInitTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x3718c500 dchannel_senddata +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x3b1c187b create_l1 +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x43d9e91c mISDN_register_Bprotocol +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x4fa739c8 mISDN_unregister_Bprotocol +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 0x6153ac30 get_next_bframe +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x77ad60d8 mISDN_register_device +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x7f32af7c bchannel_senddata +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x816fdeff mISDN_freedchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x8609e12d mISDN_initbchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x8a4e99fb mISDN_clock_update +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x95b6972c mISDN_freebchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x96d9b791 recv_Bchannel_skb +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x9a134ca6 mISDN_clear_bchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x9ee92840 get_next_dframe +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xab1393ce mISDN_initdchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xbdde26fd recv_Bchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xbf360335 mISDNDevName4ch +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xc3401729 mISDN_register_clock +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xc9905669 recv_Dchannel +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 0xf57e21cb bchannel_get_rxbuf +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xf9e7832f mISDN_FsmNew +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_dsp 0x01087af0 mISDN_dsp_element_unregister +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_dsp 0x60721da7 dsp_audio_law_to_s32 +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_dsp 0xa215f1b2 dsp_audio_s16_to_law +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_dsp 0xb98308d8 mISDN_dsp_element_register +EXPORT_SYMBOL drivers/md/bcache/bcache 0x0c4d0956 bch_btree_sort_lazy +EXPORT_SYMBOL drivers/md/bcache/bcache 0x10dc0d06 bch_bset_insert +EXPORT_SYMBOL drivers/md/bcache/bcache 0x5f6647d6 closure_wait +EXPORT_SYMBOL drivers/md/bcache/bcache 0x66d28e22 bch_btree_iter_init +EXPORT_SYMBOL drivers/md/bcache/bcache 0x6969b5d8 bch_bset_init_next +EXPORT_SYMBOL drivers/md/bcache/bcache 0x7b55ca4f bch_bset_fix_invalidated_key +EXPORT_SYMBOL drivers/md/bcache/bcache 0x9a1acfa2 closure_sub +EXPORT_SYMBOL drivers/md/bcache/bcache 0x9e8b3cee bch_btree_keys_alloc +EXPORT_SYMBOL drivers/md/bcache/bcache 0xab2d2b84 bch_btree_insert_key +EXPORT_SYMBOL drivers/md/bcache/bcache 0xad29a6f5 bch_bset_build_written_tree +EXPORT_SYMBOL drivers/md/bcache/bcache 0xaec09a2b bch_bkey_try_merge +EXPORT_SYMBOL drivers/md/bcache/bcache 0xaf1265cc closure_put +EXPORT_SYMBOL drivers/md/bcache/bcache 0xaf77343c bch_btree_keys_free +EXPORT_SYMBOL drivers/md/bcache/bcache 0xc04554f7 bch_btree_iter_next +EXPORT_SYMBOL drivers/md/bcache/bcache 0xc0b9ef00 bch_btree_sort_partial +EXPORT_SYMBOL drivers/md/bcache/bcache 0xca580595 bch_btree_keys_init +EXPORT_SYMBOL drivers/md/bcache/bcache 0xdaba675e closure_sync +EXPORT_SYMBOL drivers/md/bcache/bcache 0xe3c17af1 __closure_wake_up +EXPORT_SYMBOL drivers/md/bcache/bcache 0xe47e0829 __bch_bset_search +EXPORT_SYMBOL drivers/md/bcache/bcache 0xe67c2d16 bch_bset_sort_state_init +EXPORT_SYMBOL drivers/md/dm-bufio 0x72f07bf4 dm_bufio_set_minimum_buffers +EXPORT_SYMBOL drivers/md/dm-bufio 0xa7978f56 dm_bufio_forget +EXPORT_SYMBOL drivers/md/dm-log 0x40b069f5 dm_dirty_log_create +EXPORT_SYMBOL drivers/md/dm-log 0x485e74b3 dm_dirty_log_destroy +EXPORT_SYMBOL drivers/md/dm-log 0xb086b83d dm_dirty_log_type_register +EXPORT_SYMBOL drivers/md/dm-log 0xbcdaca0a dm_dirty_log_type_unregister +EXPORT_SYMBOL drivers/md/dm-snapshot 0x13b3fae6 dm_snap_origin +EXPORT_SYMBOL drivers/md/dm-snapshot 0x39101be9 dm_snap_cow +EXPORT_SYMBOL drivers/md/dm-snapshot 0xa25d6628 dm_exception_store_destroy +EXPORT_SYMBOL drivers/md/dm-snapshot 0xb2a231b1 dm_exception_store_type_unregister +EXPORT_SYMBOL drivers/md/dm-snapshot 0xc372e174 dm_exception_store_type_register +EXPORT_SYMBOL drivers/md/dm-snapshot 0xd159dbbf dm_exception_store_create +EXPORT_SYMBOL drivers/md/raid456 0xe5653ec6 raid5_set_cache_size +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x024d6148 flexcop_dump_reg +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x04aaabc8 flexcop_sram_ctrl +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x0836918c flexcop_device_initialize +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x395832ef flexcop_pid_feed_control +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x39eec0b0 flexcop_sram_set_dest +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x47a5837f flexcop_device_exit +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x5e183ee8 flexcop_pass_dmx_data +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x8673525f flexcop_device_kmalloc +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xa8e76559 flexcop_device_kfree +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xe5535a51 flexcop_wan_set_speed +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xec627e13 flexcop_pass_dmx_packets +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xfcb25430 flexcop_eeprom_check_mac_addr +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xfcec3ee0 flexcop_i2c_request +EXPORT_SYMBOL drivers/media/common/cx2341x 0x1b91d8d4 cx2341x_handler_init +EXPORT_SYMBOL drivers/media/common/cx2341x 0x1ca0c084 cx2341x_log_status +EXPORT_SYMBOL drivers/media/common/cx2341x 0x2d5259b3 cx2341x_handler_set_50hz +EXPORT_SYMBOL drivers/media/common/cx2341x 0x2f25eee2 cx2341x_update +EXPORT_SYMBOL drivers/media/common/cx2341x 0x30cb4cd7 cx2341x_ext_ctrls +EXPORT_SYMBOL drivers/media/common/cx2341x 0x3db8be82 cx2341x_ctrl_query +EXPORT_SYMBOL drivers/media/common/cx2341x 0x77f21926 cx2341x_handler_set_busy +EXPORT_SYMBOL drivers/media/common/cx2341x 0xc184ec1e cx2341x_ctrl_get_menu +EXPORT_SYMBOL drivers/media/common/cx2341x 0xcf76ce95 cx2341x_fill_defaults +EXPORT_SYMBOL drivers/media/common/cx2341x 0xcf8b77a4 cx2341x_mpeg_ctrls +EXPORT_SYMBOL drivers/media/common/cx2341x 0xf413c576 cx2341x_handler_setup +EXPORT_SYMBOL drivers/media/common/cypress_firmware 0x9ebb4ea1 cypress_load_firmware +EXPORT_SYMBOL drivers/media/common/tveeprom 0x5b153542 tveeprom_read +EXPORT_SYMBOL drivers/media/common/tveeprom 0x92a2bbce tveeprom_hauppauge_analog +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x15b6304a dvb_register_adapter +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x17342ea8 dvb_frontend_reinitialise +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x17f6edb8 dvb_ca_en50221_camchange_irq +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x19591134 dvb_ringbuffer_read +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x22d6ce4a dvb_ringbuffer_avail +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x247bf94b dvb_dmx_swfilter_204 +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x28ee2ae8 dvb_ringbuffer_flush +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x2d579de4 dvb_net_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x341249c7 dvb_unregister_frontend +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x3cf44093 dvb_ca_en50221_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x3f7224d5 dvb_ringbuffer_read_user +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x4298b8cd dvb_generic_ioctl +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x45942f1f dvb_generic_open +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x4827f676 dvb_ca_en50221_frda_irq +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x4d3b9a9c dvb_ringbuffer_write +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x514c7d04 dvb_dmxdev_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x5248b4ce dvb_register_frontend +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x65886421 dvb_ringbuffer_write_user +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x6d93a139 dvb_generic_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x74a5a698 dvb_filter_pes2ts_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x78d62338 dvb_ringbuffer_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x7ba5d8bd dvb_ringbuffer_flush_spinlock_wakeup +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x80e3832d dvb_filter_get_ac3info +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x8d6e0128 dvb_dmxdev_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x8e47dce5 dvb_ringbuffer_empty +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x95172f8d dvb_dmx_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xa42a519d dvb_net_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xa4988b0b dvb_frontend_resume +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xaa6dd95c dvb_dmx_swfilter_raw +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xac4ca1b0 intlog2 +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xb829f8c7 dvb_dmx_swfilter_packets +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xbfe25075 dvb_frontend_detach +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xc4acd95d dvb_unregister_adapter +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xc8376a23 dvb_frontend_suspend +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xc9c6fda3 dvb_unregister_device +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xd7bbbf20 dvb_register_device +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xdb576668 dvb_ringbuffer_free +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xdfbfeb52 dvb_dmx_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xe5ae8707 intlog10 +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xec5a9ca7 dvb_dmx_swfilter +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xf1e60413 dvb_ca_en50221_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xf70c286e dvb_ca_en50221_camready_irq +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xf821d629 dvb_frontend_sleep_until +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xf826deb0 dvb_filter_pes2ts +EXPORT_SYMBOL drivers/media/dvb-frontends/a8293 0x339635c0 a8293_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/af9013 0x414bfb14 af9013_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/atbm8830 0xb4a1a31f atbm8830_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x014a2a01 au8522_sleep +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x3fb14690 au8522_get_state +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x5530e734 au8522_readreg +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x79048a84 au8522_analog_i2c_gate_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x846177c5 au8522_led_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0xa48a5f85 au8522_writereg +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0xd7932204 au8522_init +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0xd98826f7 au8522_release_state +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0xe6953124 au8522_i2c_gate_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_dig 0x32a6b666 au8522_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/bcm3510 0x9f08e670 bcm3510_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx22700 0x8abf00c6 cx22700_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx22702 0xab12a130 cx22702_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24110 0x4526cc1a cx24110_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24113 0x0f36fc0d cx24113_agc_callback +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24113 0xaadd20be cx24113_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24116 0xe6e5b337 cx24116_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24120 0x8c4f95aa cx24120_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24123 0x6cd40d22 cx24123_get_tuner_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24123 0xc5c23a4f cx24123_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cxd2820r 0xcb053cfe cxd2820r_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0x7d96f97e dib0070_ctrl_agc_filter +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0xaee2c677 dib0070_wbd_offset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0xbc3aaf30 dib0070_set_rf_output +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0xc0a551f9 dib0070_get_rf_output +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0xc475850e dib0070_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x22958b82 dib0090_get_current_gain +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x2bb4b3a7 dib0090_set_switch +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x3647ffe3 dib0090_register +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x39364791 dib0090_set_dc_servo +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x4e315ee1 dib0090_get_wbd_offset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x6444ab34 dib0090_update_rframp_7090 +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x71515764 dib0090_get_tune_state +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x729313d7 dib0090_gain_control +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x8ef082c1 dib0090_update_tuning_table_7090 +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xb1760f7f dib0090_fw_register +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xb8cd635c dib0090_dcc_freq +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xbc5eafe0 dib0090_set_vga +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xbfaa243d dib0090_set_tune_state +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xc0f288be dib0090_pwm_gain_reset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xce464a66 dib0090_get_wbd_target +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mb 0x164ea875 dib3000mb_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x34ff5274 dib3000mc_get_tuner_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x3f08444e dib3000mc_pid_parse +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x45a8d089 dib3000mc_set_config +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0xc0c3785d dib3000mc_i2c_enumeration +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0xc6019539 dib3000mc_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0xc7e28c72 dib3000mc_pid_control +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0x65be069c dib7000m_get_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0x73ddcb15 dib7000m_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0x9081acbe dib7000m_pid_filter +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0xdafff078 dib7000m_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0xa8ba341b dib7000p_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0xfedfa21c dib8000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0x189ae53b dibx000_reset_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0x380767fc dibx000_i2c_set_speed +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0x453fe7e0 dibx000_get_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0xad3ad91c systime +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0xe50f114b dibx000_exit_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0xe7455d75 dibx000_init_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/drx39xyj/drx39xyj 0xed95b08e drx39xxj_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/drxd 0x0df8cdfd drxd_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/drxk 0x9e173cbd drxk_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ds3000 0x1e52499f ds3000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dvb-pll 0x56c470aa dvb_pll_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ec100 0x0e1d2257 ec100_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/isl6405 0x59c7e2ea isl6405_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/isl6421 0xce0ce941 isl6421_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/isl6423 0xefee32bc isl6423_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/itd1000 0xb31b597d itd1000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ix2505v 0x6e4458cd ix2505v_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/l64781 0x72844fca l64781_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lg2160 0xd7114a1b lg2160_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgdt3305 0xaa5c7b9a lgdt3305_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgdt3306a 0x577f5908 lgdt3306a_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgdt330x 0x942b357e lgdt330x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgs8gxx 0xdfd22aeb lgs8gxx_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lnbp21 0x0340f6bf lnbh24_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lnbp21 0x613fc440 lnbp21_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lnbp22 0x9eb5517b lnbp22_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/m88ds3103 0x321e43bc m88ds3103_get_agc_pwm +EXPORT_SYMBOL drivers/media/dvb-frontends/m88ds3103 0x402b7e77 m88ds3103_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/m88rs2000 0x6e8cd37f m88rs2000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mb86a16 0x6361501f mb86a16_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mb86a20s 0x020a74b6 mb86a20s_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mt312 0x5ed6a43b mt312_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mt352 0xf2293616 mt352_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/nxt200x 0xc11bd438 nxt200x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/nxt6000 0x606111d4 nxt6000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/or51132 0x7ac5240d or51132_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/or51211 0x43e48aa1 or51211_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1409 0xf927b506 s5h1409_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1411 0x65a848e5 s5h1411_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1420 0x0d92e910 s5h1420_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1420 0x7797fd8e s5h1420_get_tuner_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/s921 0xb4d78e9a s921_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/si2165 0xf6bd3594 si2165_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/si21xx 0x1445c3ef si21xx_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/sp8870 0x6676274c sp8870_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/sp887x 0x35c3e58d sp887x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stb0899 0x6977fe26 stb0899_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stb6000 0x2e4248db stb6000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stb6100 0xb88f62f6 stb6100_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0288 0x75498df9 stv0288_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0297 0xc1cfb973 stv0297_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0299 0x1c3eab72 stv0299_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0367 0x008b88bd stv0367ter_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0367 0x03d2b0a7 stv0367cab_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0900 0x433f2f84 stv0900_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv090x 0x5dea5531 stv090x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv6110 0xf8db34b5 stv6110_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv6110x 0xf539efc6 stv6110x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10021 0x81b8e527 tda10021_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10023 0x44ecf4f8 tda10023_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10048 0x45fd3974 tda10048_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda1004x 0xc060741b tda10046_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda1004x 0xf475dc73 tda10045_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10071 0x3074b5f4 tda10071_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10086 0xe0a4325e tda10086_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda665x 0x51b1d172 tda665x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda8083 0xe705009a tda8083_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda8261 0x7309de92 tda8261_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda826x 0x01798a99 tda826x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ts2020 0x9dec68fe ts2020_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tua6100 0xe588d51a tua6100_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ves1820 0xf49b76fc ves1820_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ves1x93 0x03f3b441 ves1x93_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/zl10036 0xda8a07cc zl10036_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/zl10039 0xddd4ded0 zl10039_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/zl10353 0x61fa2573 zl10353_attach +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x222cb267 flexcop_dma_control_timer_irq +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x4b8d74ba flexcop_dma_control_size_irq +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x7ca0f26f flexcop_dma_allocate +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x99f714e8 flexcop_dma_free +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0xc3d6cd86 flexcop_dma_config +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0xe8ac8487 flexcop_dma_config_timer +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0xf4152220 flexcop_dma_xfer_control +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0x81236c2b bt878_stop +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0x9c17e583 bt878 +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0xa51451a1 bt878_device_control +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0xc8da485d 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 0x1e207585 bttv_sub_register +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0x8ecf4acc bttv_write_gpio +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0xa8cdff7c bttv_sub_unregister +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0xbcf2d2fb bttv_read_gpio +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0xf5984243 bttv_get_pcidev +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x0b474ab7 dst_comm_init +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x0e891f1d rdc_reset_state +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x1ac6a799 dst_wait_dst_ready +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x2993227a write_dst +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x5ae39892 dst_error_bailout +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x6be759ec read_dst +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xce50a81d dst_error_recovery +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xdae50b5b dst_attach +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xe94b8c9c dst_check_sum +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xfbd342ab dst_pio_disable +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst_ca 0xd5737158 dst_ca_attach +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x1581da95 cx18_ext_init +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x2cdea06d cx18_reset_ir_gpio +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x632d432e cx18_start_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x655c1bbb cx18_release_stream +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x749be62b cx18_stop_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0xecb6299d cx18_claim_stream +EXPORT_SYMBOL drivers/media/pci/cx23885/altera-ci 0x6ff7510d altera_ci_tuner_reset +EXPORT_SYMBOL drivers/media/pci/cx23885/altera-ci 0xb31dba35 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 0x1b963cae cx25821_risc_databuffer_audio +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x5c0661c1 cx25821_set_gpiopin_direction +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x691fe67c cx25821_sram_channel_setup_audio +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x784853c3 cx25821_print_irqbits +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x904b0326 cx25821_riscmem_alloc +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x9785887a cx25821_dev_unregister +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xa8ce952d cx25821_dev_get +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xc5d38741 cx25821_sram_channels +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xf7c57c07 cx25821_sram_channel_dump_audio +EXPORT_SYMBOL drivers/media/pci/cx88/cx88-vp3054-i2c 0x5022f0c6 vp3054_i2c_remove +EXPORT_SYMBOL drivers/media/pci/cx88/cx88-vp3054-i2c 0x6b48bdb4 vp3054_i2c_probe +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0x1f9aaaaf cx88_set_freq +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0x34bd2a2e cx88_enum_input +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0x8b6c45ac cx88_querycap +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0xf56e37d2 cx88_video_mux +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x0d51b210 cx8802_cancel_buffers +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x1f670b9a cx8802_unregister_driver +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x2036b725 cx8802_get_driver +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x491e26d5 cx8802_start_dma +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x79227bfa cx8802_buf_prepare +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0xa33d46ce cx8802_register_driver +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0xb59d500d cx8802_buf_queue +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x050ecd82 cx88_set_stereo +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x19713df6 cx88_vdev_init +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x3017e65f cx88_wakeup +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x4216fc84 cx88_sram_channels +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x6141c8c5 cx88_tuner_callback +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x7642ed3c cx88_print_irqbits +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x77c5680e cx88_core_irq +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x7a1b5181 cx88_ir_stop +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x7e01c4e1 cx88_risc_databuffer +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x904b8696 cx88_audio_thread +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x90f5970e cx88_sram_channel_setup +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x99a82f0a cx88_sram_channel_dump +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xa222eca3 cx88_set_tvaudio +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xab5528ff cx88_risc_buffer +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xb5172d80 cx88_ir_start +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xbb95163f cx88_newstation +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xc198ec49 cx88_dsp_detect_stereo_sap +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xd0d3cb1d cx88_core_get +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xdc73b7d7 cx88_get_stereo +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xdd55895e cx88_set_scale +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xf059417f cx88_reset +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xf1fcd257 cx88_shutdown +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xf603a332 cx88_set_tvnorm +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xfa4d94b1 cx88_core_put +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x07f298a5 ivtv_release_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x0b4c124c ivtv_clear_irq_mask +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x0feb61c8 ivtv_vapi_result +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x14f67530 ivtv_debug +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x16f7bdec ivtv_set_irq_mask +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x1b115c68 ivtv_udma_setup +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x2b9559e9 ivtv_reset_ir_gpio +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x3cf892df ivtv_udma_alloc +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x61c07198 ivtv_udma_unmap +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x8369789f ivtv_udma_prepare +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x89026e0b ivtv_api +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x89bc528f ivtv_claim_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x8a17f534 ivtv_firmware_check +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xa34cae92 ivtv_start_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xbaf4ca6f ivtv_ext_init +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xce80c9c7 ivtv_init_on_first_open +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xe1d98624 ivtv_stop_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xfe4b48e0 ivtv_vapi +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x04e83446 saa7134_tuner_callback +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x06609a36 saa7134_pgtable_build +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x1211df5d saa7134_devlist +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x299b5ec1 saa7134_tvaudio_setmute +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x3b590291 saa7134_dmasound_init +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x3db7a317 saa7134_dmasound_exit +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x45098d97 saa7134_set_dmabits +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x6c139636 saa7134_devlist_lock +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x75c66969 saa7134_boards +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x88c9c26a saa7134_set_gpio +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xa6555a7d saa7134_pgtable_free +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xd58a5327 saa7134_ts_register +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xdaa7945b saa_dsp_writel +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xe473d2fa saa7134_ts_unregister +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xf724e69a saa7134_pgtable_alloc +EXPORT_SYMBOL drivers/media/pci/ttpci/ttpci-eeprom 0xa5c8a398 ttpci_eeprom_parse_mac +EXPORT_SYMBOL drivers/media/pci/ttpci/ttpci-eeprom 0xc3e4c127 ttpci_eeprom_decode_mac +EXPORT_SYMBOL drivers/media/pci/zoran/videocodec 0x01869665 videocodec_register +EXPORT_SYMBOL drivers/media/pci/zoran/videocodec 0x4707e69b videocodec_attach +EXPORT_SYMBOL drivers/media/pci/zoran/videocodec 0x55f67791 videocodec_unregister +EXPORT_SYMBOL drivers/media/pci/zoran/videocodec 0xbd56a432 videocodec_detach +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x0729e532 soc_camera_power_on +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x46092ce4 soc_camera_apply_board_flags +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x4fc0e107 soc_camera_power_init +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x89336740 soc_camera_host_unregister +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0xcbedfccc soc_camera_host_register +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0xdc299d3a soc_camera_power_off +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0xe4c334a4 soc_camera_xlate_by_fourcc +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0x25c52d97 soc_mbus_samples_per_pixel +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0x2863728e soc_mbus_image_size +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0x29f5a98b soc_mbus_get_fmtdesc +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0x5f3e3558 soc_mbus_bytes_per_line +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0xc8b28da5 soc_mbus_config_compatible +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0xdc5dafe2 soc_mbus_find_fmtdesc +EXPORT_SYMBOL drivers/media/radio/tea575x 0x02bce521 snd_tea575x_hw_init +EXPORT_SYMBOL drivers/media/radio/tea575x 0x23505227 snd_tea575x_set_freq +EXPORT_SYMBOL drivers/media/radio/tea575x 0x38cfc76b snd_tea575x_s_hw_freq_seek +EXPORT_SYMBOL drivers/media/radio/tea575x 0x4e9b3516 snd_tea575x_enum_freq_bands +EXPORT_SYMBOL drivers/media/radio/tea575x 0x77b2278c snd_tea575x_exit +EXPORT_SYMBOL drivers/media/radio/tea575x 0x94ee34cb snd_tea575x_g_tuner +EXPORT_SYMBOL drivers/media/radio/tea575x 0xd7e1b4c5 snd_tea575x_init +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x04981555 lirc_dev_fop_close +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x04dca738 lirc_unregister_driver +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x1420ac98 lirc_dev_fop_write +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x32955845 lirc_dev_fop_poll +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x3e0f9ed6 lirc_register_driver +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x5ab4c500 lirc_get_pdata +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x64664213 lirc_dev_fop_open +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0xd4f17e2e lirc_dev_fop_read +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0xe359872b lirc_dev_fop_ioctl +EXPORT_SYMBOL drivers/media/rc/rc-core 0x290ffa40 ir_raw_handler_unregister +EXPORT_SYMBOL drivers/media/rc/rc-core 0x408f39ab ir_raw_handler_register +EXPORT_SYMBOL drivers/media/tuners/fc0011 0x2d30601d fc0011_attach +EXPORT_SYMBOL drivers/media/tuners/fc0012 0xe5f6c544 fc0012_attach +EXPORT_SYMBOL drivers/media/tuners/fc0013 0x13f9c2ff fc0013_attach +EXPORT_SYMBOL drivers/media/tuners/fc0013 0x2b4bb50e fc0013_rc_cal_add +EXPORT_SYMBOL drivers/media/tuners/fc0013 0x46053f1d fc0013_rc_cal_reset +EXPORT_SYMBOL drivers/media/tuners/max2165 0x1ea03d9b max2165_attach +EXPORT_SYMBOL drivers/media/tuners/mc44s803 0x6c1a53a0 mc44s803_attach +EXPORT_SYMBOL drivers/media/tuners/mt2060 0x0cd3b789 mt2060_attach +EXPORT_SYMBOL drivers/media/tuners/mt2131 0x349b00ac mt2131_attach +EXPORT_SYMBOL drivers/media/tuners/mt2266 0x4d390b96 mt2266_attach +EXPORT_SYMBOL drivers/media/tuners/mxl5005s 0xadea8515 mxl5005s_attach +EXPORT_SYMBOL drivers/media/tuners/qt1010 0x349608bc qt1010_attach +EXPORT_SYMBOL drivers/media/tuners/tda18218 0x69fe2c2c tda18218_attach +EXPORT_SYMBOL drivers/media/tuners/tuner-types 0x0cb4b189 tuners +EXPORT_SYMBOL drivers/media/tuners/tuner-types 0xc2821775 tuner_count +EXPORT_SYMBOL drivers/media/tuners/tuner-xc2028 0x17151235 xc2028_attach +EXPORT_SYMBOL drivers/media/tuners/xc4000 0x591216cb xc4000_attach +EXPORT_SYMBOL drivers/media/tuners/xc5000 0xa57433c9 xc5000_attach +EXPORT_SYMBOL drivers/media/usb/cx231xx/cx231xx 0x160380e0 cx231xx_register_extension +EXPORT_SYMBOL drivers/media/usb/cx231xx/cx231xx 0x37cf555c cx231xx_unregister_extension +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x06893593 dvb_usbv2_generic_rw_locked +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x30316c0c dvb_usbv2_generic_write_locked +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x542844e1 dvb_usbv2_resume +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x76236869 dvb_usbv2_generic_write +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x787d2520 dvb_usbv2_generic_rw +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x985b1137 dvb_usbv2_suspend +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0xa3e35204 dvb_usbv2_reset_resume +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0xd11f0bf4 dvb_usbv2_disconnect +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0xf0f653b7 dvb_usbv2_probe +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x4981dd01 dvb_usb_device_init +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x6760171d usb_cypress_load_firmware +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x7ed03520 dvb_usb_generic_write +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0xa72198e7 dvb_usb_nec_rc_key_to_event +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0xa86b3000 dvb_usb_get_hexline +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0xda8ea6c3 dvb_usb_generic_rw +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0xe5269f20 dvb_usb_device_exit +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-af9005-remote 0x13e247e0 rc_map_af9005_table +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-af9005-remote 0xb83df0ec 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 0x08c0a7b1 dibusb_rc_query +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x16bbb348 dibusb_streaming_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x3812c76e dibusb_power_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x398e6cfb dibusb_dib3000mc_frontend_attach +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x75a808f7 dibusb_i2c_algo +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x76d8daf9 dibusb_dib3000mc_tuner_attach +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x7dc3dcd8 dibusb_pid_filter +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x8c3cfbad dibusb2_0_power_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xab333f03 dibusb_read_eeprom_byte +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xb089660c dibusb2_0_streaming_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xb47559e0 rc_map_dibusb_table +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xc1af11ae dibusb_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/usb/em28xx/em28xx 0x6c60709d em28xx_register_extension +EXPORT_SYMBOL drivers/media/usb/em28xx/em28xx 0xaa8d3cca em28xx_unregister_extension +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x1208b13a go7007_snd_remove +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x18586144 go7007_register_encoder +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x1ff90fd2 go7007_parse_video_stream +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x27524037 go7007_read_addr +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x3a58e1b1 go7007_update_board +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x4b99079a go7007_alloc +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x5366d001 go7007_snd_init +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x8fad8007 go7007_read_interrupt +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0xe4d6f06a go7007_boot_encoder +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x1e05d023 gspca_expo_autogain +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x4b49537a gspca_frame_add +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x4c0026a9 gspca_suspend +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x5df750bf gspca_resume +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x5fe5cee4 gspca_coarse_grained_expo_autogain +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x9670af2c gspca_debug +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0xbe109ecf gspca_dev_probe2 +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0xed414918 gspca_disconnect +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0xf894efc6 gspca_dev_probe +EXPORT_SYMBOL drivers/media/usb/tm6000/tm6000 0x572db750 tm6000_init_digital_mode +EXPORT_SYMBOL drivers/media/usb/tm6000/tm6000 0x67987df1 tm6000_unregister_extension +EXPORT_SYMBOL drivers/media/usb/tm6000/tm6000 0x7f4f5668 tm6000_register_extension +EXPORT_SYMBOL drivers/media/usb/ttusb-dec/ttusbdecfe 0x9e522b28 ttusbdecfe_dvbt_attach +EXPORT_SYMBOL drivers/media/usb/ttusb-dec/ttusbdecfe 0xb5952ae2 ttusbdecfe_dvbs_attach +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-common 0xabe27502 v4l2_ctrl_query_fill +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-mem2mem 0x459e133f v4l2_m2m_get_curr_priv +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-mem2mem 0x7bd5d4fa v4l2_m2m_get_vq +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-mem2mem 0xc70b1e13 v4l2_m2m_job_finish +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-mem2mem 0xd47f3fab v4l2_m2m_mmap +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0x1d828736 videobuf_dvb_get_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0x25f73208 videobuf_dvb_dealloc_frontends +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0x470f5b0a videobuf_dvb_find_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0x6689a410 videobuf_dvb_unregister_bus +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0x69d4be43 videobuf_dvb_register_bus +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0xeb10a1d2 videobuf_dvb_alloc_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-core 0xc76e581c vb2_querybuf +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0x23a127f1 vb2_dvb_alloc_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0x4f32c31b vb2_dvb_unregister_bus +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0x80fa8348 vb2_dvb_register_bus +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0x957dc5ea vb2_dvb_dealloc_frontends +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0xa8919e4a vb2_dvb_find_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0xf7cb5986 vb2_dvb_get_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x054575e7 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 0x06890610 v4l2_ctrl_subdev_subscribe_event +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x07eca78f v4l2_ctrl_new_int_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x0f9d053b v4l2_ctrl_handler_log_status +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x123959a1 v4l2_type_names +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x13db8658 v4l2_of_free_endpoint +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x16244fe5 v4l2_prio_check +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x1a590541 video_device_release +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x1b5c0864 v4l2_ctrl_merge +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x1f6895ca v4l2_of_put_link +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x2342f1ae v4l2_prio_open +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x28cab958 __v4l2_ctrl_s_ctrl_int64 +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x28e2705d v4l2_clk_unregister +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x2e7563e7 video_device_alloc +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x2f552d0f v4l2_ctrl_new_custom +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x30f02d37 video_unregister_device +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x31d69096 v4l2_ctrl_log_status +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x357a83d6 v4l2_clk_get +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x36847d11 v4l2_ctrl_get_int_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x3ac6a4ac v4l2_g_ctrl +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 0x3d797dfd v4l2_clk_set_rate +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x45a44c24 v4l2_ctrl_fill +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x47f1d424 v4l2_queryctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x486d6138 v4l2_subdev_s_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x495426ee v4l2_ctrl_get_name +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x49dfb692 v4l2_ctrl_new_std +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x4b77c88d v4l2_ctrl_replace +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x4d2c7cfe v4l2_ctrl_notify +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x4e8f0596 v4l2_clk_register +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x4ea9f457 video_device_release_empty +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x54425432 video_ioctl2 +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x54a5ee5a v4l2_of_parse_endpoint +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x5896ce98 v4l2_ctrl_grab +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x5b9b3155 v4l2_ctrl_add_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x5bb9fd5c v4l2_clk_put +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x5ce0431d v4l2_ctrl_auto_cluster +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x5ceefaa7 v4l2_query_ext_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x5d2f46ea v4l2_ctrl_subdev_log_status +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x65ad7e85 v4l2_ctrl_poll +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x6a8aae4c v4l2_ctrl_radio_filter +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x6e6a05c4 v4l2_g_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x716c154a v4l2_s_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x730854c1 __v4l2_ctrl_s_ctrl_string +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x7527b15c v4l2_ctrl_handler_setup +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x76a8b2d5 v4l2_subdev_g_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x78e5fe17 v4l2_ctrl_add_handler +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x792e9873 v4l2_ctrl_g_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x799c85af v4l2_ctrl_g_ctrl_int64 +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x7a3cd015 v4l2_ctrl_get_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x7beab43e v4l2_clk_disable +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x7e5a753e __video_register_device +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x80bfd75f v4l2_of_alloc_parse_endpoint +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x8106095a v4l2_prio_max +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x8126dd75 v4l2_ctrl_cluster +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x84c220e7 v4l2_s_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x8a2c3368 v4l2_ctrl_sub_ev_ops +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x8e6ce286 v4l2_ctrl_new_std_menu_items +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x90342ff1 __v4l2_ctrl_modify_range +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x92ccef03 v4l2_of_parse_link +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x9658abc8 v4l2_ctrl_handler_free +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x9e19a58f v4l2_ctrl_find +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x9eaa69a2 video_devdata +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xa79cf3fc v4l2_subdev_queryctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xaa7b3aae v4l2_ctrl_subscribe_event +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb319fd20 v4l2_clk_enable +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb31ef8cf v4l2_subdev_s_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb69a4fbd v4l2_clk_get_rate +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb77b0159 v4l2_prio_init +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xbb4051ef v4l2_subdev_querymenu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xbc5671dc v4l_printk_ioctl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xbde1968c v4l2_subdev_g_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xbfa1a9fd v4l2_async_unregister_subdev +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xc82463e7 v4l2_ctrl_new_std_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xcbc1dee2 __v4l2_clk_register_fixed +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xcda04a5b v4l2_prio_close +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xd10b0536 __v4l2_ctrl_s_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xd414efea v4l2_async_notifier_unregister +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xd6c55f28 v4l2_async_notifier_register +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xd7cd33cf v4l2_clk_unregister_fixed +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xdb3c18a6 video_usercopy +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe2b92059 v4l2_video_std_construct +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe6078a6a v4l2_subdev_init +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xed5a2b18 v4l2_querymenu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xee311c33 v4l2_try_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf239e096 v4l2_ctrl_activate +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf3251e7b v4l2_norm_to_name +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xfaff96be v4l2_async_register_subdev +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xff9ecea7 v4l2_subdev_try_ext_ctrls +EXPORT_SYMBOL drivers/memstick/core/memstick 0x0dc4824d memstick_register_driver +EXPORT_SYMBOL drivers/memstick/core/memstick 0x10ec7fea memstick_add_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x365ffe94 memstick_next_req +EXPORT_SYMBOL drivers/memstick/core/memstick 0x5d820a02 memstick_init_req_sg +EXPORT_SYMBOL drivers/memstick/core/memstick 0x75c7a119 memstick_resume_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x7c883c08 memstick_new_req +EXPORT_SYMBOL drivers/memstick/core/memstick 0x9dd979ec memstick_remove_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0xa5987a36 memstick_init_req +EXPORT_SYMBOL drivers/memstick/core/memstick 0xaa9dc86e memstick_suspend_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0xad75f5e1 memstick_detect_change +EXPORT_SYMBOL drivers/memstick/core/memstick 0xc7ea7555 memstick_set_rw_addr +EXPORT_SYMBOL drivers/memstick/core/memstick 0xd177f8e4 memstick_alloc_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0xdeb26fc1 memstick_free_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0xef7e1e41 memstick_unregister_driver +EXPORT_SYMBOL drivers/memstick/host/r592 0x52f1b23b memstick_debug_get_tpc_name +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x0e62d9c8 mpt_config +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x17b04da0 mpt_GetIocState +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x2fa6edc7 mpt_put_msg_frame +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x4526289b mpt_event_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x4909d529 mpt_free_msg_frame +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x4a3cbf7c mpt_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x4bf8bf3a mpt_set_taskmgmt_in_progress_flag +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x502108d0 mpt_fwfault_debug +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x71931c82 mpt_findImVolumes +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x73bea8c4 mpt_event_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x79de9c6c mpt_raid_phys_disk_get_num_paths +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x7c6fc089 mpt_suspend +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x80af5b80 mpt_raid_phys_disk_pg0 +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x8d0e5c0f mpt_device_driver_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x90fd2a37 mpt_clear_taskmgmt_in_progress_flag +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xab0a4cdf mpt_get_msg_frame +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xadd3c4e2 mpt_attach +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xb1c8c346 mpt_HardResetHandler +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xb762743b mpt_put_msg_frame_hi_pri +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xb886e7bb mpt_halt_firmware +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xba318cab mptbase_sas_persist_operation +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xc05b57e9 mpt_resume +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xc0e69f82 mpt_device_driver_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xc47c22e8 mpt_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xc86b5271 mpt_verify_adapter +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xc941290b mpt_detach +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xc9428906 mpt_reset_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xd9a92a75 mpt_reset_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xdd805159 ioc_list +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xe06e056b mpt_send_handshake_request +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xe56f428b mpt_free_fw_memory +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xea63d7ae mpt_print_ioc_summary +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xfa93697b mpt_alloc_fw_memory +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xfdc793ee mpt_raid_phys_disk_pg1 +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xfeca93ac mpt_Soft_Hard_ResetHandler +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x029097b9 mptscsih_qcmd +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x08863263 mptscsih_dev_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x108bd638 mptscsih_ioc_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x1e938cb2 mptscsih_suspend +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x25f1c7a5 mptscsih_is_phys_disk +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x2a5e36a5 mptscsih_resume +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x2d72976d mptscsih_slave_configure +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x2eaa83d8 mptscsih_host_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x30f7aa4a mptscsih_bus_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x362c6645 mptscsih_abort +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x39e240ab mptscsih_taskmgmt_complete +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x3c008afb mptscsih_info +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x51e10896 mptscsih_event_process +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x72dc2036 mptscsih_slave_destroy +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x7b3cba76 mptscsih_show_info +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x8f2cf681 mptscsih_host_attrs +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xa0c84d34 mptscsih_taskmgmt_response_code +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xa8cf6681 mptscsih_bios_param +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xaca9d671 mptscsih_change_queue_depth +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xaee12ffa mptscsih_shutdown +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xbb316124 mptscsih_IssueTaskMgmt +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xc60d0559 mptscsih_raid_id_to_num +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xca7f70c0 mptscsih_io_done +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xcee687de mptscsih_get_scsi_lookup +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xd426935a mptscsih_flush_running_cmds +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xe2ccd022 mptscsih_scandv_complete +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xef32eae8 mptscsih_remove +EXPORT_SYMBOL drivers/mfd/cros_ec 0x65a7dde6 cros_ec_suspend +EXPORT_SYMBOL drivers/mfd/cros_ec 0x77476a36 cros_ec_register +EXPORT_SYMBOL drivers/mfd/cros_ec 0xe6f7212e cros_ec_resume +EXPORT_SYMBOL drivers/mfd/cros_ec 0xffb245d8 cros_ec_remove +EXPORT_SYMBOL drivers/mfd/dln2 0x3524a08f dln2_register_event_cb +EXPORT_SYMBOL drivers/mfd/dln2 0xd07ba418 dln2_transfer +EXPORT_SYMBOL drivers/mfd/dln2 0xd32a9f71 dln2_unregister_event_cb +EXPORT_SYMBOL drivers/mfd/htc-pasic3 0x0aa396bd pasic3_read_register +EXPORT_SYMBOL drivers/mfd/htc-pasic3 0xe9987bbc pasic3_write_register +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x0129cd20 mc13xxx_irq_request +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x1402452d mc13xxx_irq_unmask +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x4eaa1bcb mc13xxx_irq_free +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x6662cd01 mc13xxx_get_flags +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x819709fb mc13xxx_reg_read +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xa1f93d8c mc13xxx_reg_rmw +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xa9cc1139 mc13xxx_irq_mask +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xb7efa947 mc13xxx_unlock +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xc2db3e9d mc13xxx_irq_status +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xe22bd55b mc13xxx_reg_write +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xf138247e mc13xxx_lock +EXPORT_SYMBOL drivers/mfd/tps6105x 0x7477e495 tps6105x_get +EXPORT_SYMBOL drivers/mfd/tps6105x 0xbc82859f tps6105x_set +EXPORT_SYMBOL drivers/mfd/tps6105x 0xd1d8b05f tps6105x_mask_and_set +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-irq 0x1acf945a wm8994_irq_exit +EXPORT_SYMBOL drivers/mfd/wm8994-irq 0x9f6b224e wm8994_irq_init +EXPORT_SYMBOL drivers/mfd/wm8994-regmap 0x10908401 wm8994_base_regmap_config +EXPORT_SYMBOL drivers/mfd/wm8994-regmap 0x668de425 wm1811_regmap_config +EXPORT_SYMBOL drivers/mfd/wm8994-regmap 0xcbd55d91 wm8994_regmap_config +EXPORT_SYMBOL drivers/mfd/wm8994-regmap 0xf9efe608 wm8958_regmap_config +EXPORT_SYMBOL drivers/misc/ad525x_dpot 0x68ac64fe ad_dpot_probe +EXPORT_SYMBOL drivers/misc/ad525x_dpot 0x9b4aace8 ad_dpot_remove +EXPORT_SYMBOL drivers/misc/altera-stapl/altera-stapl 0xd19d0b4d altera_init +EXPORT_SYMBOL drivers/misc/c2port/core 0x88fc4b9c c2port_device_register +EXPORT_SYMBOL drivers/misc/c2port/core 0x975954e2 c2port_device_unregister +EXPORT_SYMBOL drivers/misc/ioc4 0x6be52266 ioc4_unregister_submodule +EXPORT_SYMBOL drivers/misc/ioc4 0xcf278d6e ioc4_register_submodule +EXPORT_SYMBOL drivers/misc/tifm_core 0x041e8f5e tifm_unmap_sg +EXPORT_SYMBOL drivers/misc/tifm_core 0x0e430cde tifm_unregister_driver +EXPORT_SYMBOL drivers/misc/tifm_core 0x1c362ebb tifm_free_device +EXPORT_SYMBOL drivers/misc/tifm_core 0x22b88b0a tifm_remove_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0x39f86aa1 tifm_queue_work +EXPORT_SYMBOL drivers/misc/tifm_core 0x4563c411 tifm_free_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0x53464ce7 tifm_add_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0x754c0e01 tifm_map_sg +EXPORT_SYMBOL drivers/misc/tifm_core 0xb273a7c4 tifm_register_driver +EXPORT_SYMBOL drivers/misc/tifm_core 0xd71cfc58 tifm_alloc_device +EXPORT_SYMBOL drivers/misc/tifm_core 0xe40c17e4 tifm_alloc_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0xeaefc92a tifm_has_ms_pif +EXPORT_SYMBOL drivers/misc/tifm_core 0xfb9daa7f tifm_eject +EXPORT_SYMBOL drivers/mmc/card/mmc_block 0xba1903b9 mmc_cleanup_queue +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x07aa62a9 cfi_build_cmd +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x4997e791 cfi_fixup +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x5cce6710 cfi_send_gen_cmd +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x83c97b69 cfi_build_cmd_addr +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x9f758e8c cfi_varsize_frob +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0xe0f5ef9d cfi_merge_status +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0xf7d6f849 cfi_read_pri +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0xff9fa623 cfi_udelay +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0x42c3c8bf register_mtd_chip_driver +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0x6fc2bf6d map_destroy +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0x8c7f6b4a unregister_mtd_chip_driver +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0xf03c6d2a do_map_probe +EXPORT_SYMBOL drivers/mtd/chips/gen_probe 0x274ef731 mtd_do_chip_probe +EXPORT_SYMBOL drivers/mtd/lpddr/lpddr_cmds 0x00a3d416 lpddr_cmdset +EXPORT_SYMBOL drivers/mtd/maps/map_funcs 0xdab2f38e simple_map_init +EXPORT_SYMBOL drivers/mtd/mtd 0x62a4c7d9 mtd_concat_destroy +EXPORT_SYMBOL drivers/mtd/mtd 0xc0009ab1 mtd_concat_create +EXPORT_SYMBOL drivers/mtd/nand/denali 0x1d95b91f denali_init +EXPORT_SYMBOL drivers/mtd/nand/denali 0xa4c16c09 denali_remove +EXPORT_SYMBOL drivers/mtd/nand/nand 0x0f47dbda nand_scan_bbt +EXPORT_SYMBOL drivers/mtd/nand/nand 0x134d9323 nand_scan_ident +EXPORT_SYMBOL drivers/mtd/nand/nand 0x28d26ff8 nand_scan +EXPORT_SYMBOL drivers/mtd/nand/nand 0x827d63ee nand_lock +EXPORT_SYMBOL drivers/mtd/nand/nand 0x970f2aa7 nand_unlock +EXPORT_SYMBOL drivers/mtd/nand/nand 0xeb7357e7 nand_scan_tail +EXPORT_SYMBOL drivers/mtd/nand/nand 0xef859391 onfi_async_timing_mode_to_sdr_timings +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0x3ab6d3dd nand_bch_correct_data +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0x4c927f0e nand_bch_calculate_ecc +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0x58c16a3e nand_bch_init +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0x70097aa0 nand_bch_free +EXPORT_SYMBOL drivers/mtd/nand/nand_ecc 0x3132ee65 __nand_calculate_ecc +EXPORT_SYMBOL drivers/mtd/nand/nand_ecc 0xb4b94377 __nand_correct_data +EXPORT_SYMBOL drivers/mtd/nand/nand_ecc 0xd03e42ba nand_correct_data +EXPORT_SYMBOL drivers/mtd/nand/nand_ecc 0xdefb59ec nand_calculate_ecc +EXPORT_SYMBOL drivers/mtd/nand/nand_ids 0x8cfcf75c nand_flash_ids +EXPORT_SYMBOL drivers/mtd/nand/nand_ids 0xa336feb7 nand_manuf_ids +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0x487f657d flexonenand_region +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0x9d08dbde onenand_scan_bbt +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0xeb2a96cf onenand_addr +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0xfa0d1fc6 onenand_default_bbt +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x02711c48 arcnet_unregister_proto +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x29d49037 arcnet_timeout +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x6534792a arcnet_debug +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x900cd40c arc_proto_default +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xa357ced4 arcnet_send_packet +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xb4a1f25e arc_proto_map +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xbc66e415 alloc_arcdev +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xd4f3db1c arcnet_open +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xe7789310 arcnet_close +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xecb730b0 arcnet_interrupt +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xedebd9eb arc_raw_proto +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xfc03a9e2 arc_bcast_proto +EXPORT_SYMBOL drivers/net/arcnet/com20020 0x042b7b63 com20020_check +EXPORT_SYMBOL drivers/net/arcnet/com20020 0x3abf7762 com20020_found +EXPORT_SYMBOL drivers/net/arcnet/com20020 0xfce1974f com20020_netdev_ops +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x095111b0 ei_close +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x119721ac ei_interrupt +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x5b9dd429 ei_open +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x7f3b8f2a ei_netdev_ops +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x97eb7a10 ei_start_xmit +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x995084f6 ei_tx_timeout +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xaaf9c2e6 __alloc_ei_netdev +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xc76bd560 ei_poll +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xd338ae0b ei_set_multicast_list +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xd796042e ei_get_stats +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xee45296b NS8390_init +EXPORT_SYMBOL drivers/net/ethernet/broadcom/bnx2x/bnx2x 0xe70b7c55 bnx2x_schedule_sp_rtnl +EXPORT_SYMBOL drivers/net/ethernet/broadcom/cnic 0x636af174 cnic_unregister_driver +EXPORT_SYMBOL drivers/net/ethernet/broadcom/cnic 0xb3f3dd64 cnic_register_driver +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x04aa9e0b t3_l2t_send_slow +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x127e0cde cxgb3_register_client +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x1c848e17 cxgb3_remove_tid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x25601d48 cxgb3_alloc_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x28c48509 t3_l2t_get +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x2d66d6b0 cxgb3_free_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x64f562fa t3_l2e_free +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x786ea79c dev2t3cdev +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x8d22d446 t3_register_cpl_handler +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x97c57020 cxgb3_free_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x9d9ff0ad cxgb3_alloc_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x9f2b5c00 cxgb3_unregister_client +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xa87dc4dc cxgb3_queue_tid_release +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xbeac6923 cxgb3_ofld_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xbf0714f9 t3_l2t_send_event +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xc63d8c39 cxgb3_insert_tid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x1f1431ac cxgb4_select_ntuple +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x2a3f54c3 cxgb4_l2t_get +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x2f358e54 cxgb4_alloc_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x36b6ea34 cxgb4_create_server6 +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x3b9ce23a cxgb4_clip_get +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x434b9989 cxgb4_remove_tid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x4424f594 cxgb4_dcb_enabled +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x4c2e3573 cxgb4_free_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x50ee5c07 cxgb4_best_aligned_mtu +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x6e2f6ec6 cxgb4_alloc_sftid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x70c54b28 cxgb4_pktgl_to_skb +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x70dd7160 cxgb4_remove_server_filter +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x7126341b cxgb4_get_tcp_stats +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x7361b327 cxgb4_port_chan +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x7782902f cxgb4_dbfifo_count +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x7cda611e cxgb4_create_server_filter +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x857f9ff0 cxgb4_bar2_sge_qregs +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x8980c2d3 cxgb4_l2t_release +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x8d291b8d cxgb4_create_server +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xa61c32c5 cxgb4_read_tpte +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xa9594214 cxgb4_port_idx +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xb06d70b5 cxgb4_remove_server +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xb20c0e24 cxgb4_register_uld +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xb694afe9 cxgb4_clip_release +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xb9ac08ec t4_cleanup_clip_tbl +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xbd3f958a cxgb4_sync_txq_pidx +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xc4f4c775 cxgb4_alloc_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xc5eed8b1 cxgb4_flush_eq_cache +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xcda3979d cxgb4_iscsi_init +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xcffee1a8 cxgb4_update_root_dev_clip +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xd00e5a36 cxgb4_unregister_uld +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xd69a0294 cxgb4_best_mtu +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xd9b93779 cxgb4_l2t_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xdbfd59cd cxgb4_ofld_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xe69ed32f cxgb4_port_viid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xf55dff29 cxgb4_free_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xf7a34c75 cxgb4_read_sge_timestamp +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0x0dcf8e77 enic_api_devcmd_proxy_by_index +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0x0e712340 vnic_dev_get_res +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0x4f650da7 vnic_dev_get_res_count +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0x709d4f8b vnic_dev_register +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0x9196d804 vnic_dev_unregister +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0xe4801f30 vnic_dev_get_pdev +EXPORT_SYMBOL drivers/net/ethernet/emulex/benet/be2net 0xbab62e22 be_roce_mcc_cmd +EXPORT_SYMBOL drivers/net/ethernet/emulex/benet/be2net 0xf14049fe be_roce_unregister_driver +EXPORT_SYMBOL drivers/net/ethernet/emulex/benet/be2net 0xff4aaba5 be_roce_register_driver +EXPORT_SYMBOL drivers/net/ethernet/freescale/gianfar_driver 0x79f28897 gfar_phc_index +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x06783ca5 mlx4_tunnel_steer_add +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x06aeb141 mlx4_get_slave_port_state +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x11a83ec9 mlx4_SET_PORT_SCHEDULER +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x167d3e54 set_and_calc_slave_port_state +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1f6e7f61 mlx4_SET_PORT_VXLAN +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2a268086 mlx4_SET_VPORT_QOS_set +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x34912562 mlx4_get_module_info +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x35a33d8c mlx4_gen_guid_change_eqe +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x487e03af mlx4_get_slave_node_guid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4a45ebe9 mlx4_get_slave_from_roce_gid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4b751515 mlx4_is_eq_vector_valid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5227aa32 mlx4_eq_get_irq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x53c4482e mlx4_sync_pkey_table +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x56c40704 mlx4_is_slave_active +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x608ffcc2 mlx4_release_eq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x64590276 mlx4_test_interrupts +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x69debaad mlx4_SET_VPORT_QOS_get +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6cce89ea mlx4_SET_PORT_fcs_check +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6faa9abe mlx4_SET_MCAST_FLTR +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x72b28cb9 mlx4_get_roce_gid_from_slave +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7c6bce55 mlx4_SET_PORT_general +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7ff0aac6 mlx4_get_eqs_per_port +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x87243475 mlx4_get_cpu_rmap +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x89a6c6e0 mlx4_assign_eq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9801ee40 mlx4_gen_pkey_eqe +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xaaf2f408 mlx4_SET_PORT_PRIO2TC +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb600c5c5 mlx4_gen_port_state_change_eqe +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd0c10747 mlx4_ALLOCATE_VPP_set +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd3d9121a mlx4_is_eq_shared +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xdefbcea6 mlx4_SET_PORT_qpn_calc +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xdfe6e998 mlx4_get_slave_pkey_gid_tbl_len +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe7500516 mlx4_put_slave_node_guid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xec80981c mlx4_ALLOCATE_VPP_get +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf0014288 mlx4_SET_PORT_BEACON +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf249b41b mlx4_gen_slaves_port_mgt_ev +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf9c33e81 mlx4_get_parav_qkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x00168031 mlx5_register_interface +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x002e8b4f mlx5_core_destroy_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x0409eab3 mlx5_cmd_exec_cb +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x04d83f8f mlx5_core_modify_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x073a6b1f mlx5_vector2eqn +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x0857aabd mlx5_get_flow_table_id +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x0eb7287e mlx5_del_flow_table_entry +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x1b960d96 mlx5_core_create_psv +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x1d872644 mlx5_core_query_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x2964b9c5 mlx5_core_create_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x29e7c219 mlx5_core_arm_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x2fda3a60 mlx5_query_vport_state +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x428816d2 mlx5_core_query_vendor_id +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x4aa5c2a9 mlx5_debugfs_root +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x575b845d mlx5_cmd_alloc_uar +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x5c8f7cbf mlx5_unmap_free_uar +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x5d825d67 mlx5_core_dump_fill_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x67b9b974 mlx5_core_attach_mcg +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x808e4ee7 mlx5_cmd_free_uar +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x81037195 mlx5_alloc_map_uar +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x8135e18d mlx5_core_destroy_psv +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x8ddbf25d mlx5_cmd_comp_handler +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa3a2c6c6 mlx5_core_create_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa4f22cfc mlx5_core_query_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa56b3814 mlx5_core_detach_mcg +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xb6720770 mlx5_cmd_cleanup +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xb67a2616 mlx5_core_destroy_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xb7dea28c mlx5_get_protocol_dev +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xbeb121ef mlx5_core_dealloc_pd +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xc3e7a938 mlx5_query_nic_vport_mac_address +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xc4fec793 mlx5_core_get_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xc72da797 mlx5_cmd_init +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xd2f84061 mlx5_unregister_interface +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xd34ab29e mlx5_create_flow_table +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xd80ce1d4 mlx5_core_query_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe6af33e4 mlx5_destroy_flow_table +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe8c047ed mlx5_core_destroy_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xed75296c mlx5_core_create_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf44509da mlx5_core_alloc_pd +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf83ef5e2 mlx5_cmd_exec +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xfc728a49 mlx5_add_flow_table_entry +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x7cbbb1a7 hdlcdrv_unregister +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x98b32507 hdlcdrv_transmitter +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x99f68ff9 hdlcdrv_arbitrate +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0xb4c3c2ac hdlcdrv_receiver +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0xe1edb6c2 hdlcdrv_register +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x23d607d3 sirdev_put_instance +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x2c3b484e sirdev_set_dtr_rts +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x551f11a5 sirdev_write_complete +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x71c1ea7e sirdev_raw_read +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x8d2503d8 sirdev_set_dongle +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xa0803e2d sirdev_raw_write +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xb0bbc48f irda_unregister_dongle +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xb1dbcd13 irda_register_dongle +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xe270121d sirdev_get_instance +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xfa9a2873 sirdev_receive +EXPORT_SYMBOL drivers/net/mdio 0x22bce513 mdio_mii_ioctl +EXPORT_SYMBOL drivers/net/mdio 0x43e4defc mdio45_nway_restart +EXPORT_SYMBOL drivers/net/mdio 0x7577f992 mdio_set_flag +EXPORT_SYMBOL drivers/net/mdio 0xa1a29548 mdio45_probe +EXPORT_SYMBOL drivers/net/mdio 0xc6b1163f mdio45_links_ok +EXPORT_SYMBOL drivers/net/mdio 0xddc98749 mdio45_ethtool_gset_npage +EXPORT_SYMBOL drivers/net/mii 0x13d310f1 mii_check_link +EXPORT_SYMBOL drivers/net/mii 0x1965a5b9 mii_check_gmii_support +EXPORT_SYMBOL drivers/net/mii 0x2a87ebda mii_nway_restart +EXPORT_SYMBOL drivers/net/mii 0x30622aab mii_ethtool_sset +EXPORT_SYMBOL drivers/net/mii 0x375ba5ab mii_link_ok +EXPORT_SYMBOL drivers/net/mii 0x5a49da1d mii_ethtool_gset +EXPORT_SYMBOL drivers/net/mii 0xb9dae5fd mii_check_media +EXPORT_SYMBOL drivers/net/mii 0xc41b1547 generic_mii_ioctl +EXPORT_SYMBOL drivers/net/phy/mdio-bitbang 0x4352ec85 free_mdio_bitbang +EXPORT_SYMBOL drivers/net/phy/mdio-bitbang 0x7bec8580 alloc_mdio_bitbang +EXPORT_SYMBOL drivers/net/phy/vitesse 0xbd799902 vsc824x_add_skew +EXPORT_SYMBOL drivers/net/ppp/pppox 0x65e399a5 pppox_unbind_sock +EXPORT_SYMBOL drivers/net/ppp/pppox 0x7652fd34 pppox_ioctl +EXPORT_SYMBOL drivers/net/ppp/pppox 0xbbb9b95c register_pppox_proto +EXPORT_SYMBOL drivers/net/ppp/pppox 0xe0ff7a18 unregister_pppox_proto +EXPORT_SYMBOL drivers/net/sungem_phy 0x81911a02 sungem_phy_probe +EXPORT_SYMBOL drivers/net/team/team 0x01212801 team_modeop_port_change_dev_addr +EXPORT_SYMBOL drivers/net/team/team 0x25444ccb team_mode_unregister +EXPORT_SYMBOL drivers/net/team/team 0x37d367f5 team_options_change_check +EXPORT_SYMBOL drivers/net/team/team 0x38ede552 team_modeop_port_enter +EXPORT_SYMBOL drivers/net/team/team 0xc0351605 team_mode_register +EXPORT_SYMBOL drivers/net/team/team 0xcaaff156 team_option_inst_set_change +EXPORT_SYMBOL drivers/net/team/team 0xd5a72f3e team_options_register +EXPORT_SYMBOL drivers/net/team/team 0xddb59a77 team_options_unregister +EXPORT_SYMBOL drivers/net/usb/usbnet 0x2d3e3036 usbnet_link_change +EXPORT_SYMBOL drivers/net/usb/usbnet 0x4aa4ddca usbnet_device_suggests_idle +EXPORT_SYMBOL drivers/net/usb/usbnet 0x725bea8e usbnet_manage_power +EXPORT_SYMBOL drivers/net/wan/hdlc 0x0288fd53 alloc_hdlcdev +EXPORT_SYMBOL drivers/net/wan/hdlc 0x290611ac hdlc_open +EXPORT_SYMBOL drivers/net/wan/hdlc 0x3b2abe00 hdlc_start_xmit +EXPORT_SYMBOL drivers/net/wan/hdlc 0x3cbee68e hdlc_ioctl +EXPORT_SYMBOL drivers/net/wan/hdlc 0x8369043c attach_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0x93d3b73d hdlc_close +EXPORT_SYMBOL drivers/net/wan/hdlc 0x958a3583 hdlc_change_mtu +EXPORT_SYMBOL drivers/net/wan/hdlc 0xa085d908 detach_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0xbbfd212a unregister_hdlc_device +EXPORT_SYMBOL drivers/net/wan/hdlc 0xbca254dc register_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0xdba2f7eb unregister_hdlc_protocol +EXPORT_SYMBOL drivers/net/wimax/i2400m/i2400m 0xd4189a9b i2400m_unknown_barker +EXPORT_SYMBOL drivers/net/wireless/airo 0x7923ffec init_airo_card +EXPORT_SYMBOL drivers/net/wireless/airo 0x98481ab9 stop_airo_card +EXPORT_SYMBOL drivers/net/wireless/airo 0xca52bce4 reset_airo_card +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x1002d397 ath_hw_setbssidmask +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x104f1ff9 ath_printk +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x16fb0a3d ath_key_delete +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x1d297bf4 ath_hw_keyreset +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x319c6026 ath_is_49ghz_allowed +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x5ae0f620 ath_hw_cycle_counters_update +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x6f6fcfe5 ath_hw_get_listen_time +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x87d2ada6 ath_rxbuf_alloc +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xaafdb617 ath_is_world_regd +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xb18e8843 ath_regd_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xc01492b1 dfs_pattern_detector_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xc509d888 ath_is_mybeacon +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xcb096c2c ath_key_config +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xf89fa25b ath_reg_notifier_apply +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xfb4de67a ath_regd_get_band_ctl +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x05b57470 ath10k_debug_get_new_fw_crash_data +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x1382d6ff ath10k_core_register +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x171dd6fb ath10k_core_create +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x57f27eef ath10k_warn +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x6b4110fb ath10k_core_start +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x9a7d8ebb ath10k_core_stop +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xa70dfe1d ath10k_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xaeec3c87 ath10k_core_unregister +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xaf34f1ea ath10k_print_driver_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xd4f8c80e ath10k_core_destroy +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xfde0edb2 ath10k_err +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x09409cd7 ath6kl_core_destroy +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x26ea902f ath6kl_cfg80211_resume +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x297db200 ath6kl_core_cleanup +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x5ceaf141 ath6kl_core_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x72136d73 ath6kl_hif_intr_bh_handler +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x7b317424 ath6kl_printk +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x80a09613 ath6kl_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x91cfb84a ath6kl_hif_rw_comp_handler +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x95123764 ath6kl_stop_txrx +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xa6f66cc1 ath6kl_warn +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xb9412ea8 ath6kl_core_create +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xcb014460 ath6kl_err +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xe51fe9f7 ath6kl_core_rx_complete +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xf0c9e860 ath6kl_cfg80211_suspend +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xf8cde723 ath6kl_core_tx_complete +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x08fe2ddf ath9k_cmn_reload_chainmask +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x0e6ca307 ath9k_cmn_get_channel +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x124de971 ath9k_cmn_init_crypto +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x13b3bcd2 ath9k_cmn_update_txpow +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x1c137c51 ath9k_cmn_process_rssi +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x2d15177d ath9k_cmn_debug_stat_rx +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x3495e499 ath9k_cmn_process_rate +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x4d664fdc ath9k_cmn_spectral_scan_config +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x52884c5e ath9k_cmn_debug_base_eeprom +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x5884c079 ath9k_cmn_debug_recv +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x5c1955f0 ath9k_cmn_beacon_config_adhoc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x605d9237 ath9k_cmn_init_channels_rates +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x8bdb234e ath9k_cmn_spectral_scan_trigger +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x8bfab4fe ath9k_cmn_rx_accept +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x93f60669 ath9k_cmn_spectral_deinit_debug +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x9462faff ath_cmn_process_fft +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xaeee02c4 ath9k_cmn_get_hw_crypto_keytype +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xd28be55a 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 0xe121d127 ath9k_cmn_spectral_init_debug +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xe2ea65f4 ath9k_cmn_setup_ht_cap +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xea8fc99d ath9k_cmn_beacon_config_sta +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xf5cf2cae ath9k_cmn_rx_skb_postprocess +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xf6ecd38c ath9k_cmn_debug_phy_err +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xfd2035be ath9k_cmn_debug_modal_eeprom +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x019eb9de ath9k_hw_btcoex_init_mci +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x032aebf4 ath9k_hw_setrxabort +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x09836615 ar9003_get_pll_sqsum_dvc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x09cca1b7 ath9k_hw_bstuck_nfcal +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0a8cfdd9 ath9k_hw_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0b89c484 ath9k_hw_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0c34b828 ath9k_hw_cfg_gpio_input +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0f19f1f8 ath9k_hw_set_gpio +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1348e11e ath9k_hw_btcoex_set_concur_txprio +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1432e753 ath9k_hw_set_txpowerlimit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x16c127a7 ath9k_hw_name +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x19dd3172 ath_gen_timer_free +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1a59863a ath9k_hw_init_global_settings +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1e110e19 ath9k_hw_wow_apply_pattern +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1f6a4fc4 ath9k_hw_disable_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2015115e ar9003_mci_get_interrupt +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x203c036a ath9k_hw_stopdmarecv +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x20c860a5 ath9k_hw_check_alive +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x23f3f79f ath9k_hw_btcoex_init_scheme +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x25f64019 ath9k_hw_gettxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x26eb3ffa ath9k_hw_set_tsfadjust +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x27600e0e ath9k_hw_gen_timer_start +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x28155f63 ath9k_hw_stop_dma_queue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2916046f ath9k_hw_settsf64 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2ca598b1 ath9k_hw_wow_wakeup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2cc62095 ath9k_hw_txstart +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x3294ee5c ath9k_hw_btcoex_bt_stomp +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x33fa6b6f ath9k_hw_process_rxdesc_edma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x34488085 ar9003_mci_get_next_gpm_offset +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x3467b18a ath9k_hw_getchan_noise +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x37be8a78 ath9k_hw_releasetxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x390f98ef ath9k_hw_setuprxdesc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x3c59e7d2 ath9k_hw_enable_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x3c96fd0c ath9k_hw_abort_tx_dma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x3cf94bf2 ath9k_hw_setmcastfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x3e936838 ath9k_hw_reset_calvalid +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x40a0c78d ath9k_hw_setuptxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x40adcbea ath9k_hw_setrxfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4382693c ath9k_hw_beaconq_setup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4c024b73 ath9k_hw_setopmode +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4d5fe107 ath9k_hw_btcoex_init_2wire +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4d8dfb10 ath9k_hw_setantenna +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4e797972 ath9k_hw_set_tx_filter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4f64c4ae ar9003_mci_setup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x5081d234 ath9k_hw_btcoex_enable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x51b0ef6b ath9k_hw_gettsf32 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x55793930 ar9003_paprd_init_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x56af1fa8 ath9k_hw_intrpend +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x5ce429a8 ath9k_hw_deinit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x5db7d5c2 ar9003_mci_state +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x5e2e6c84 ath9k_hw_btcoex_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x618b3745 ar9003_paprd_populate_single_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x651e0162 ath9k_hw_startpcureceive +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6cd50e28 ar9003_mci_send_wlan_channels +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x70cc8a43 ar9003_hw_bb_watchdog_dbg_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x70f3f99a ath9k_hw_setup_statusring +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x722d0f45 ath9k_hw_puttxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x73f4ae84 ath9k_hw_set_rx_bufsize +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x748174c7 ath9k_hw_reset +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x76024baa ar9003_paprd_create_curve +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x76568460 ar9003_mci_send_message +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x77cf14b3 ar9003_mci_set_bt_version +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x78cbf440 ath9k_hw_set_txq_props +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x79d4dcf9 ath9k_hw_putrxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7c101e3c ath9k_hw_wait +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7e5bf985 ar9003_paprd_enable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x837eea99 ar9003_is_paprd_enabled +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x89d271e5 ath9k_hw_disable_mib_counters +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8b426966 ath9k_hw_numtxpending +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8cd85a63 ath9k_hw_get_txq_props +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x91ced403 ath9k_hw_check_nav +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x925ef0b6 ath_gen_timer_alloc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x93fb5645 ath9k_hw_gpio_get +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x95cbafd9 ath9k_hw_set_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x981dfe0c ath9k_hw_gen_timer_stop +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9ac7daaf ath9k_hw_kill_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9da1b5bb ath9k_hw_set_sta_beacon_timers +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa1df1d3c ar9003_paprd_is_done +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa28e148c ath9k_hw_getnf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa728dbf9 ath9k_hw_btcoex_init_3wire +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa7dd8cc4 ath9k_hw_btcoex_set_weight +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xae7b0533 ath9k_hw_request_gpio +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xae80ac8c ath9k_hw_cfg_output +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb251df8f ath9k_hw_rxprocdesc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb32542ba ath9k_hw_phy_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb6d88ac5 ath9k_hw_write_associd +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb822eace ath9k_hw_setpower +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xbf6a0c9f ath9k_hw_ani_monitor +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xbfc4020a ath9k_hw_abortpcurecv +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc0657ee6 ar9003_paprd_setup_gain_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc0bf7d56 ath9k_hw_init_btcoex_hw +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc1c2fd3b ath_gen_timer_isr +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd4d20fbb ath9k_hw_addrxbuf_edma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd768f34e ath9k_hw_beaconinit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd9448193 ath9k_hw_resettxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xde0711cb ar9003_mci_cleanup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xdeb8ad9a ath9k_hw_getrxfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe2d59aac ath9k_hw_updatetxtriglevel +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe3ad68ba ath9k_hw_reset_tsf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe854fd73 ar9003_hw_disable_phy_restart +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xee390cf3 ath9k_hw_wow_enable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf3cd271f ath9k_hw_computetxtime +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf63b1220 ar9003_hw_bb_watchdog_check +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf8bb22ec ath9k_hw_gettsf64 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xffd02408 ath9k_hw_get_tsf_offset +EXPORT_SYMBOL drivers/net/wireless/atmel 0x102a41f8 atmel_open +EXPORT_SYMBOL drivers/net/wireless/atmel 0x51d90970 init_atmel_card +EXPORT_SYMBOL drivers/net/wireless/atmel 0x521bd8a2 stop_atmel_card +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x0d47a0ed brcmu_pktq_pflush +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x1112cada brcmu_pkt_buf_get_skb +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x3e630c24 brcmu_pktq_penq +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x3f2988a1 brcmu_dotrev_str +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x481ecebc brcmu_pktq_penq_head +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x49c6fa2d brcmu_pktq_mdeq +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x72b45205 brcmu_pktq_pdeq_match +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x7ae9e7f9 brcmu_pktq_pdeq +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x8bb0c638 brcmu_pktq_pdeq_tail +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x9f4b5dcf brcmu_d11_attach +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xb2e1d5a3 brcmu_pkt_buf_free_skb +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xb6e2f656 brcmu_pktq_init +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xd261b8a6 brcmu_boardrev_str +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xdcfbfc6f brcmu_pktq_peek_tail +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xf34cf916 brcmu_pktq_mlen +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xfdab5e8a brcmu_pktq_flush +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x007cdf2b hostap_setup_dev +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x0ad69602 hostap_set_multicast_list_queue +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x1af1aaa5 hostap_set_hostapd +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x240e461e hostap_add_interface +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x2e0b1847 hostap_info_process +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x309e048e hostap_set_string +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x3f555f36 hostap_set_roaming +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x4c9fc8fe hostap_80211_rx +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x57559430 hostap_remove_proc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x5f19f316 hostap_master_start_xmit +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x7c46f780 hostap_set_encryption +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x8331d52f hostap_80211_ops +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x85297117 hostap_get_porttype +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x89bd6fbd hostap_free_data +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x956fa3ff hostap_check_sta_fw_version +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xa12ad27f hostap_dump_tx_header +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xb2a945e0 hostap_dump_rx_header +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xb4b77c8b hostap_80211_get_hdrlen +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xbcdaef24 hostap_init_ap_proc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xd0d4d409 hostap_init_proc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xdb1fb282 hostap_info_init +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xdf9c3452 hostap_handle_sta_tx_exc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xe665d487 hostap_set_antsel +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xe791e2e6 hostap_set_auth_algs +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xf0033244 prism2_update_comms_qual +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xf18f9372 hostap_remove_interface +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xf1d973e0 hostap_init_data +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xf5647fb8 hostap_set_hostapd_sta +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xf822c4e3 hostap_set_word +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x151a2dc0 libipw_is_valid_channel +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x1be02284 libipw_channel_to_freq +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x303dc423 libipw_get_geo +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x3d8be834 alloc_libipw +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x56de24f0 libipw_freq_to_channel +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x5f01c547 libipw_xmit +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x60cb7d8e libipw_change_mtu +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x6e21dfd1 libipw_wx_get_encodeext +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x70e22028 libipw_wx_get_encode +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x7f43c2be libipw_set_geo +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x7f47ae96 libipw_channel_to_index +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x8a7e29ab libipw_wx_set_encode +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x8b68ec3e libipw_wx_get_scan +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x953bf90c libipw_rx +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xa5291ed4 libipw_wx_set_encodeext +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xb36b006b libipw_rx_mgt +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xb3852505 libipw_get_channel_flags +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xc752271c libipw_txb_free +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xcb51dba4 libipw_networks_age +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xcca64de2 libipw_get_channel +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xe571355c free_libipw +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x008000da il_restore_stations +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x05cc013e il_apm_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x0e24bcb7 il_full_rxon_required +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x0e74d381 il_force_reset +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x0f1db44b il_power_update_mode +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x0fc36cf1 il_set_flags_for_band +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x1480d5b2 il_setup_scan_deferred_work +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x19c82a2a il_fill_probe_req +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x1a9454cc il_clear_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x1a9e79ea il_check_rxon_cmd +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x1bf6f7e1 il_free_geos +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x1dcc405a il_get_channel_info +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x1e2c70c6 il_get_lowest_plcp +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x20a8df26 il_get_active_dwell_time +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x2258353e il_usecs_to_beacons +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x246d108b il_add_station_common +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x256fa809 il_connection_init_rx_config +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x26292ae8 il_power_initialize +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x277cac45 il_apm_stop +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x27b5664b il_wr_prph +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x27ec039b il_read_targ_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x2a076f2e il_dbgfs_unregister +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x2f4da28e il_init_geos +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x345cc30b il_eeprom_free +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x36909a7c il_tx_queue_reset +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x3847f310 il_txq_update_write_ptr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x3dcb21ca il_send_cmd_pdu +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4196ef43 il_mac_sta_remove +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x44ab7b8d il_tx_queue_unmap +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x498ddcab il_leds_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4aa39103 il_get_cmd_string +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x52a07f37 il_irq_handle_error +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x530443a5 il_set_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x560107f1 il_rd_prph +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x564c6740 il_debug_level +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x57ae08b5 il_get_passive_dwell_time +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x59ebf90a il_mac_hw_scan +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x5b6f66a3 il_scan_cancel +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x63cec7bb il_init_scan_params +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x651decf9 il_hdl_csa +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x71cd6eed il_cmd_queue_unmap +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x73ee7965 _il_apm_stop +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x752f14da il_cancel_scan_deferred_work +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x78173783 il_get_single_channel_number +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x7db86d84 il_rx_queue_update_write_ptr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x7f9b739d il_mac_conf_tx +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x800b3efa il_mac_flush +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x8014235a il_set_rxon_channel +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x804f5a6f _il_poll_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x816a083d il_hdl_pm_debug_stats +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x81883b45 il_tx_cmd_complete +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x852754c2 il_eeprom_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x86a7a4a4 il_leds_exit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x88d0921f il_init_channel_map +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x8a08de95 il_send_stats_request +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x8b58461c il_mac_config +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x8cf42006 il_tx_cmd_protection +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x8e29f205 il_add_beacon_time +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x8f1445da il_set_rxon_ht +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x8fdc232e il_setup_watchdog +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x945bfdbf il_pm_ops +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x95f12148 il_mac_remove_interface +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x992b77b1 il_setup_rx_scan_handlers +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x9bd22e16 il_scan_cancel_timeout +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x9fd53c5f il_eeprom_query16 +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa268df9c il_send_lq_cmd +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa29f8041 il_clear_ucode_stations +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa364de49 il_send_cmd +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa54ece09 il_set_tx_power +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa8f2590c il_poll_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa9e3b6d1 il_set_decrypted_flag +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xafaac5c1 il_send_add_sta +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb13361a4 il_free_channel_map +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb6d25e47 il_set_rate +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb7bd33ff il_isr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb8e66c0e il_mac_add_interface +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xba1a540a il_dbgfs_register +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xbc3f426a il_eeprom_query_addr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xbe6c2bc4 il_mac_bss_info_changed +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xbfd91789 il_write_targ_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc39cf12c il_bg_watchdog +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc5fe6a83 il_send_cmd_sync +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc693ad7a il_send_cmd_pdu_async +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xcf030192 il_get_free_ucode_key_idx +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd0c9dc4f il_update_stats +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd12a894f il_set_rxon_hwcrypto +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd13b8ce0 il_hdl_pm_sleep +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd86cfe4b il_alloc_txq_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd92c638b il_mac_reset_tsf +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xde84994f il_hdl_spectrum_measurement +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe0015625 il_free_txq_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe4129b7d il_is_ht40_tx_allowed +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe435493a il_queue_space +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe43f7e0d il_cmd_queue_free +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xeadb1315 il_mac_change_interface +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xed0272d2 il_rx_queue_alloc +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xed3c8876 il_tx_queue_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf0ce116b il_send_rxon_timing +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf29cd148 il_chswitch_done +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf4e15aee il_tx_queue_free +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf501278b il_bcast_addr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf8e8d6b4 il_rx_queue_space +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf8fa91da il_send_bt_config +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xfd90a0d4 il_hdl_error +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x08ee1e7d __tracepoint_iwlwifi_dev_ucode_event +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x0d9eb5ff __tracepoint_iwlwifi_dev_ucode_wrap_event +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x36dcef55 __tracepoint_iwlwifi_dev_iowrite32 +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x67381a2a __tracepoint_iwlwifi_dev_ucode_error +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x7edec07d __tracepoint_iwlwifi_dev_ioread32 +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x9a12c9c5 __tracepoint_iwlwifi_dev_ucode_cont_event +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0xc0827b2f __tracepoint_iwlwifi_dev_iowrite8 +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x0516602c orinoco_get_stats +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x0ff14110 orinoco_stop +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x1c504cd0 orinoco_if_add +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x47c2eaa4 orinoco_tx_timeout +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x57777681 alloc_orinocodev +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x5dea5bf1 hermes_struct_init +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x65ac84c5 orinoco_init +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x7897e53e orinoco_change_mtu +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x9d3ac41a orinoco_process_xmit_skb +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x9f8ea30f free_orinocodev +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xa9d25837 orinoco_open +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xc6504b52 orinoco_down +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xcf0c7400 __orinoco_ev_rx +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xdd040185 orinoco_up +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xdd59d8e9 __orinoco_ev_info +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xebaa276f orinoco_if_del +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xf65fb280 orinoco_set_multicast_list +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xffe27bca orinoco_interrupt +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/btcoexist/btcoexist 0xbee4a874 rtl_btc_get_ops_pointer +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x0cc3a56a _rtl92c_phy_fw_rf_serial_write +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x14cbab01 _rtl92c_phy_rf_serial_write +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x15cf16f6 rtl92c_phy_set_bw_mode +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x1609399c rtl92c_phy_set_bb_reg +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x2b068e73 rtl92c_download_fw +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x2d55d411 rtl92c_set_fw_joinbss_report_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x2f396952 _rtl92c_phy_set_rf_sleep +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x4695457d rtl92c_dm_check_txpower_tracking +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x4f87e687 rtl92c_dm_init_rate_adaptive_mask +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x53e6abac rtl92c_phy_rf_config +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x574bfd40 rtl92c_phy_sw_chnl +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x5ae5ea4a rtl92c_phy_sw_chnl_callback +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x5e6f530d rtl92c_set_fw_pwrmode_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x64830cc8 rtl92c_set_fw_rsvdpagepkt +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x679cf722 _rtl92c_store_pwrIndex_diffrate_offset +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x6963758c _rtl92c_phy_rf_serial_read +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x75b56f2f _rtl92c_phy_fw_rf_serial_read +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x78996253 rtl92c_phy_set_rfpath_switch +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x80a3c361 rtl92c_dm_bt_coexist +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x88d306f6 rtl92c_phy_iq_calibrate +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x8a806f6b _rtl92c_phy_bb8192c_config_parafile +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x930dea2b rtl8192_phy_check_is_legal_rfpath +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x945ac62e rtl92c_dm_watchdog +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x9d215f9a rtl92c_dm_write_dig +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xa89268db rtl92c_phy_set_io_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xabf4f507 _rtl92c_phy_dbm_to_txpwr_idx +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xb3314d48 _rtl92c_phy_calculate_bit_shift +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xbcec46f8 rtl92c_phy_set_io +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xc529b61e rtl92c_phy_set_txpower_level +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xc67c1858 rtl92c_phy_query_bb_reg +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xc9ba94d5 rtl92c_phy_lc_calibrate +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xcb54732d rtl92c_bt_rssi_state_change +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xcc1d8965 rtl92c_firmware_selfreset +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xd3cd29c4 _rtl92c_phy_init_bb_rf_register_definition +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xd8e07bb8 _rtl92c_phy_txpwr_idx_to_dbm +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xdaa3e567 rtl92c_fill_h2c_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xe3e566a1 rtl92c_phy_update_txpower_dbm +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xe7107f67 rtl92c_dm_init_edca_turbo +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xe8350fc0 rtl92c_dm_init +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xebae3a2e rtl92c_dm_rf_saving +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xf00ed7c5 rtl92ce_phy_set_rf_on +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xfd5b29e5 rtl92c_phy_ap_calibrate +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x6fb9f06f rtl8723_fill_dummy +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_pci 0x5be119e9 rtl_pci_disconnect +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_pci 0x75869fcf rtl_pci_probe +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_pci 0x923613bf rtl_pci_resume +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_pci 0x9fcad842 rtl_pci_suspend +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_usb 0x578277e6 rtl_usb_probe +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_usb 0x98091810 rtl_usb_resume +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_usb 0xcbb616aa rtl_usb_disconnect +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_usb 0xf3f9a33f rtl_usb_suspend +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x207fbb70 rtl_evm_db_to_percentage +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x21ad9ddc rtl_lps_enter +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x45c28d39 rtl_bb_delay +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x574026ff rtl_dm_diginit +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x58a8da1e rtl_hal_pwrseqcmdparsing +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x6a9e1e67 rtl_cmd_send_packet +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x712231dd rtl_process_phyinfo +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x79188a02 rtl_query_rxpwrpercentage +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x7bd751b4 rtl_cam_get_free_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x8becf072 efuse_read_1byte +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x962af857 rtl_get_tcb_desc +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x980848e2 rtl_addr_delay +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x995b064d efuse_one_byte_read +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x9e713cfe rtl_send_smps_action +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xa54e2b67 rtl_rfreg_delay +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xabd90d1e rtl_lps_leave +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xb3104db7 rtl_fw_cb +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xb441b4e8 rtl_cam_reset_all_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xb9dbb060 rtl_ps_disable_nic +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xc25851d0 efuse_shadow_read +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xc3916fab rtl_ps_enable_nic +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xc913abd1 rtl_signal_scale_mapping +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xc9f18de0 rtl_phy_scan_operation_backup +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xcb82983f rtlwifi_rate_mapping +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xcc600fe7 rtl_cam_delete_one_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xd0215845 rtl_cam_mark_invalid +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xd8c784d5 rtl_init_rfkill +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xe32e25cf rtl_cam_del_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xe90f5f34 rtl_wowlan_fw_cb +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xeaa365da rtl_ps_set_rf_state +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xefa0ec4d rtl_cam_add_one_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xf4e56835 rtl_cam_empty_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xf546cdae rtl_efuse_shadow_map_update +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0x4121a9c5 wlcore_tx_complete +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0x7c61d4ea wl1271_free_tx_id +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0xcc7cbb1e wlcore_calc_packet_alignment +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0xd2d5ca84 wl12xx_is_dummy_packet +EXPORT_SYMBOL drivers/nfc/microread/microread 0x9b153f4e microread_remove +EXPORT_SYMBOL drivers/nfc/microread/microread 0xa12c3f3d microread_probe +EXPORT_SYMBOL drivers/nfc/nxp-nci/nxp-nci 0x04055f06 nxp_nci_remove +EXPORT_SYMBOL drivers/nfc/nxp-nci/nxp-nci 0x9376769d nxp_nci_fw_recv_frame +EXPORT_SYMBOL drivers/nfc/nxp-nci/nxp-nci 0xc3758dc3 nxp_nci_probe +EXPORT_SYMBOL drivers/nfc/pn544/pn544 0x682d1260 pn544_hci_probe +EXPORT_SYMBOL drivers/nfc/pn544/pn544 0xe471a8bd pn544_hci_remove +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x3938c186 ndlc_close +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x76614ad0 ndlc_recv +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x8acf2c48 ndlc_send +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0xaba15c18 st_nci_se_deinit +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0xb0c5c8c3 st_nci_se_init +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0xb9b8f209 ndlc_probe +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0xc283d3a2 ndlc_remove +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0xcf6d7204 st_nci_se_io +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0xf6b7cf53 ndlc_open +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x1de982c1 st21nfca_hci_se_io +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x1e954675 st21nfca_hci_probe +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x267cf88d st21nfca_dep_init +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x429175eb st21nfca_hci_enable_se +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x48547b02 st21nfca_im_send_dep_req +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x537924b9 st21nfca_dep_event_received +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x55f85eed st21nfca_hci_remove +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x681f61cc st21nfca_se_init +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x6c74cf91 st21nfca_connectivity_event_received +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x722b53bc st21nfca_tm_send_dep_res +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x8cb95aa0 st21nfca_hci_discover_se +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xa7903216 st21nfca_apdu_reader_event_received +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xb851ccfc st21nfca_se_deinit +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xd8e0d73b st21nfca_dep_deinit +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xd926f54c st21nfca_im_send_atr_req +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xec38ff36 st21nfca_hci_disable_se +EXPORT_SYMBOL drivers/ntb/ntb 0x16bc1880 ntb_unregister_client +EXPORT_SYMBOL drivers/ntb/ntb 0x2632d280 ntb_register_device +EXPORT_SYMBOL drivers/ntb/ntb 0x3b24405f ntb_clear_ctx +EXPORT_SYMBOL drivers/ntb/ntb 0x6acdf708 ntb_db_event +EXPORT_SYMBOL drivers/ntb/ntb 0xa46306c1 ntb_link_event +EXPORT_SYMBOL drivers/ntb/ntb 0xae702226 ntb_set_ctx +EXPORT_SYMBOL drivers/ntb/ntb 0xdb95cd32 ntb_unregister_device +EXPORT_SYMBOL drivers/ntb/ntb 0xf4a783ab __ntb_register_client +EXPORT_SYMBOL drivers/nvdimm/nd_btt 0x995089c4 nvdimm_namespace_attach_btt +EXPORT_SYMBOL drivers/nvdimm/nd_btt 0xdb730634 nvdimm_namespace_detach_btt +EXPORT_SYMBOL drivers/parport/parport 0x0eb37c14 parport_remove_port +EXPORT_SYMBOL drivers/parport/parport 0x12a61398 parport_ieee1284_read_nibble +EXPORT_SYMBOL drivers/parport/parport 0x130c36e3 parport_ieee1284_epp_read_data +EXPORT_SYMBOL drivers/parport/parport 0x1d214f04 parport_announce_port +EXPORT_SYMBOL drivers/parport/parport 0x22a6a04a parport_unregister_driver +EXPORT_SYMBOL drivers/parport/parport 0x28d978c8 parport_write +EXPORT_SYMBOL drivers/parport/parport 0x3278edd1 parport_read +EXPORT_SYMBOL drivers/parport/parport 0x34f2a94a parport_put_port +EXPORT_SYMBOL drivers/parport/parport 0x36aa12ed parport_find_number +EXPORT_SYMBOL drivers/parport/parport 0x3a7ecd8f parport_wait_event +EXPORT_SYMBOL drivers/parport/parport 0x3edca189 parport_find_base +EXPORT_SYMBOL drivers/parport/parport 0x48ddfecd parport_release +EXPORT_SYMBOL drivers/parport/parport 0x4d2a941b parport_ieee1284_interrupt +EXPORT_SYMBOL drivers/parport/parport 0x5e3a3912 parport_irq_handler +EXPORT_SYMBOL drivers/parport/parport 0x76c6d1bf parport_register_port +EXPORT_SYMBOL drivers/parport/parport 0x7741b6da __parport_register_driver +EXPORT_SYMBOL drivers/parport/parport 0x836c8c89 parport_ieee1284_ecp_write_addr +EXPORT_SYMBOL drivers/parport/parport 0x8a5235b9 parport_register_dev_model +EXPORT_SYMBOL drivers/parport/parport 0x8c75427d parport_ieee1284_write_compat +EXPORT_SYMBOL drivers/parport/parport 0x8d4dda50 parport_set_timeout +EXPORT_SYMBOL drivers/parport/parport 0x96779114 parport_del_port +EXPORT_SYMBOL drivers/parport/parport 0x9a97ed99 parport_claim_or_block +EXPORT_SYMBOL drivers/parport/parport 0xa09ebef7 parport_claim +EXPORT_SYMBOL drivers/parport/parport 0xa3f813ce parport_ieee1284_epp_write_addr +EXPORT_SYMBOL drivers/parport/parport 0xabb9e11e parport_ieee1284_epp_read_addr +EXPORT_SYMBOL drivers/parport/parport 0xabe9ede8 parport_ieee1284_read_byte +EXPORT_SYMBOL drivers/parport/parport 0xbc18dab5 parport_negotiate +EXPORT_SYMBOL drivers/parport/parport 0xcb4648e1 parport_register_device +EXPORT_SYMBOL drivers/parport/parport 0xd0c0ab40 parport_ieee1284_epp_write_data +EXPORT_SYMBOL drivers/parport/parport 0xd122de5d parport_wait_peripheral +EXPORT_SYMBOL drivers/parport/parport 0xd3719535 parport_ieee1284_ecp_read_data +EXPORT_SYMBOL drivers/parport/parport 0xe3b3322b parport_unregister_device +EXPORT_SYMBOL drivers/parport/parport 0xf0543407 parport_ieee1284_ecp_write_data +EXPORT_SYMBOL drivers/parport/parport 0xf2d23665 parport_get_port +EXPORT_SYMBOL drivers/parport/parport_pc 0x2423b96e parport_pc_probe_port +EXPORT_SYMBOL drivers/parport/parport_pc 0xe1e536b1 parport_pc_unregister_port +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x157923a0 __pcmcia_request_exclusive_irq +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x21cadeaf pcmcia_get_tuple +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x296fb6c2 pcmcia_get_mac_from_cis +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x4d36c6ba pcmcia_loop_tuple +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x536ce0e4 pcmcia_read_config_byte +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x6537211f pcmcia_register_driver +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x742f5665 pcmcia_parse_tuple +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x75ed0cd8 pcmcia_write_config_byte +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x774b5de9 pcmcia_dev_present +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x8ad75400 pcmcia_release_window +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x8b9aa805 pcmcia_disable_device +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xa5243c6e pcmcia_map_mem_page +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xa68b11e2 pcmcia_fixup_iowidth +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xbdff6983 pcmcia_enable_device +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xc496e350 pcmcia_request_window +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xd0c8f9ea pcmcia_request_io +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xd9f26bfd pcmcia_unregister_driver +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xe52ea17f pcmcia_fixup_vpp +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xec8e500e pcmcia_request_irq +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xfc0f7e8c pcmcia_loop_config +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x05fe375a pcmcia_unregister_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x08cd51b9 pccard_register_pcmcia +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x10a8531f pcmcia_get_socket_by_nr +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x1a395510 pcmcia_socket_class +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x1ff8f6c7 pcmcia_parse_events +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x212db8d2 pcmcia_socket_list +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x56f8521b pcmcia_get_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x63dbff8a pcmcia_register_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x6f2a1342 pcmcia_reset_card +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xa3fb6335 pcmcia_parse_uevents +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xc2891f8b pcmcia_socket_list_rwsem +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xcf97f3bd dead_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xdd2bdcde pcmcia_put_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_rsrc 0x55efbddc pccard_static_ops +EXPORT_SYMBOL drivers/pcmcia/pcmcia_rsrc 0xd1c614a1 pccard_nonstatic_ops +EXPORT_SYMBOL drivers/pps/pps_core 0x122dc693 pps_lookup_dev +EXPORT_SYMBOL drivers/pps/pps_core 0x5658bab6 pps_unregister_source +EXPORT_SYMBOL drivers/pps/pps_core 0x7b34214c pps_event +EXPORT_SYMBOL drivers/pps/pps_core 0x9faa674d pps_register_source +EXPORT_SYMBOL drivers/ptp/ptp 0x22d92afb ptp_find_pin +EXPORT_SYMBOL drivers/ptp/ptp 0x70d016ce ptp_clock_register +EXPORT_SYMBOL drivers/ptp/ptp 0x8526fbfc ptp_clock_unregister +EXPORT_SYMBOL drivers/ptp/ptp 0xa63616aa ptp_clock_event +EXPORT_SYMBOL drivers/ptp/ptp 0xb75dffae ptp_clock_index +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x18cbb449 rproc_alloc +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x2623c538 rproc_get_by_phandle +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x53e68ecf rproc_put +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x5df55614 rproc_vq_interrupt +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x91394704 rproc_boot +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0xa4fa3c48 rproc_add +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0xab23bcde rproc_shutdown +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0xd48c9029 rproc_del +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0xd68119fa rproc_report_crash +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0xfbbfe0f8 rproc_da_to_va +EXPORT_SYMBOL drivers/rtc/rtc-ds1685 0x19e48679 ds1685_rtc_poweroff +EXPORT_SYMBOL drivers/scsi/esp_scsi 0x3fa37b25 scsi_esp_cmd +EXPORT_SYMBOL drivers/scsi/esp_scsi 0x4a29ab38 scsi_esp_intr +EXPORT_SYMBOL drivers/scsi/esp_scsi 0x7596417e scsi_esp_register +EXPORT_SYMBOL drivers/scsi/esp_scsi 0x7b51ebe4 scsi_esp_template +EXPORT_SYMBOL drivers/scsi/esp_scsi 0xf61ad480 scsi_esp_unregister +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x056e6d4e fcoe_ctlr_els_send +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x2058c96c fcoe_ctlr_destroy_store +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x25699f12 fcoe_ctlr_link_down +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x566f44b8 fcoe_ctlr_set_fip_mode +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x6ff12aa9 fcoe_ctlr_init +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x73edc6ce fcoe_ctlr_link_up +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x9270a350 fcoe_transport_detach +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xa642098e fcoe_transport_attach +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xb6ee7014 fcoe_ctlr_recv +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xeba696d4 fcoe_ctlr_recv_flogi +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xef8e4b6d fcoe_fcf_get_selected +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xfc6756b7 fcoe_ctlr_destroy +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x138d19f8 fc_get_host_stats +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x1674ff6e fc_linkdown +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x1a77472a fc_eh_host_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x1d13d008 fc_rport_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x1dac256a fc_lport_set_local_id +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x22b90986 fc_exch_mgr_del +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x2be274fd fc_lport_notifier_head +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x2c486ca0 fc_set_mfs +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x2c4ed1a1 fc_lport_flogi_resp +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x306fc0ec fc_exch_mgr_list_clone +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x34a986cc fc_fc4_deregister_provider +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x367063e7 fc_lport_iterate +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x36e5fbaf fc_cpu_mask +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x38ea8f9d fc_fc4_register_provider +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x435453ba fc_exch_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x4684f1bb fc_lport_logo_resp +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x47b22f53 fc_lport_bsg_request +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x4c019205 fc_rport_terminate_io +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x4edb1434 fc_exch_update_stats +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x57379696 fc_elsct_send +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x5768edc2 fc_frame_alloc_fill +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x57aa70a2 fc_exch_mgr_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x57f5b39d fc_slave_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x6a6a36e4 fc_fill_hdr +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x6d21251d fc_disc_config +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x6d2cc139 fc_exch_mgr_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x6e7a48ec fc_lport_config +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x78ba8a11 fc_lport_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x7bba2b9d fc_exch_mgr_add +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x82ef392b fc_frame_crc_check +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x8783d158 fc_get_host_port_state +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x8c55f5d4 fc_get_host_speed +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x8d5d913a fc_lport_destroy +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x963ae936 fc_fabric_logoff +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x96912440 fc_vport_id_lookup +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x99a571fd fc_eh_device_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x9bde9d9e fc_fcp_destroy +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xae73ab19 fc_vport_setlink +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xb0146274 fc_linkup +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xb53cce61 fc_fcp_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xb8184148 fc_fill_reply_hdr +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xba2460bd fc_queuecommand +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xbde289c8 fc_eh_abort +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xbe6d9277 fc_exch_recv +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xc403e0b1 fc_exch_mgr_free +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xdfcfc5bf fc_elsct_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xe258975d _fc_frame_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xea0b6d30 libfc_vport_create +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xeb3c7db6 fc_lport_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xf2586a2c fc_fabric_login +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xf9261f7e fc_set_rport_loss_tmo +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xfe79959b fc_disc_init +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x3f4a97d2 sas_suspend_ha +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x64231e7e sas_prep_resume_ha +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x8a87e724 try_test_sas_gpio_gp_bit +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x9d6eb0b2 sas_wait_eh +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0xaa5e9972 sas_resume_ha +EXPORT_SYMBOL drivers/scsi/megaraid/megaraid_mm 0x173b9ab1 mraid_mm_register_adp +EXPORT_SYMBOL drivers/scsi/megaraid/megaraid_mm 0x2250c66e mraid_mm_adapter_app_handle +EXPORT_SYMBOL drivers/scsi/megaraid/megaraid_mm 0x512c956d mraid_mm_unregister_adp +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x00224f4b osd_req_add_set_attr_list +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x01106df4 osd_req_read_sg +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x0c17edb1 osd_sec_init_nosec_doall_caps +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x17255b85 osd_execute_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x1c492325 osd_req_write +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x2191addf osd_req_decode_sense_full +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x21fd5af2 osd_req_decode_get_attr_list +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x25851337 osd_req_create_partition +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x26e54b32 osd_auto_detect_ver +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x2dfd0c0a osd_req_create_object +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x33452eb9 osd_req_add_get_attr_page +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x374ba48d osd_req_read_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x4656580b osd_execute_request_async +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x4bfa02ce osd_req_list_dev_partitions +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x4f058901 osd_req_write_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x53836874 osd_req_format +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x6b2a0613 osd_req_flush_partition +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x83a842fe osd_dev_fini +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x83ac2dc7 osd_req_flush_obsd +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x84499641 osd_req_list_collection_objects +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x86ba44c3 osd_end_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x8764f259 osd_start_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x911e7812 osd_req_write_sg_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x91e6d7e9 osd_req_read_sg_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x97184fff osd_req_flush_collection +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x981a34f0 osd_req_get_attributes +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xa0886f05 osd_req_remove_partition +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xb74b1af0 osd_dev_init +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xd68c96b8 osd_req_list_partition_objects +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xd93f8bce osd_req_add_get_attr_list +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xdd5b771a osd_req_remove_object +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xde38aac6 osd_finalize_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xe0799b83 osd_req_flush_object +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xe91c722f osd_req_set_attributes +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xf15de10f osd_req_read +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xf9bf96f4 osd_req_write_sg +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xfeb0561b osd_req_list_partition_collections +EXPORT_SYMBOL drivers/scsi/osd/osd 0x2a049cfe osduld_put_device +EXPORT_SYMBOL drivers/scsi/osd/osd 0x5e888db8 osduld_register_test +EXPORT_SYMBOL drivers/scsi/osd/osd 0x5fc48609 osduld_unregister_test +EXPORT_SYMBOL drivers/scsi/osd/osd 0x6d0e183f osduld_device_same +EXPORT_SYMBOL drivers/scsi/osd/osd 0xc55b49cd osduld_path_lookup +EXPORT_SYMBOL drivers/scsi/osd/osd 0xc86ea119 osduld_device_info +EXPORT_SYMBOL drivers/scsi/osd/osd 0xef7a8248 osduld_info_lookup +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x2faa1070 qlt_unreg_sess +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x34e213b7 qlt_abort_cmd +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x37bd43e3 qlt_free_mcmd +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x44840deb qlt_xmit_response +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x4c9fc88d qlt_stop_phase1 +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x5b1ab157 qlt_free_cmd +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x6871cc2f qlt_stop_phase2 +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xbce80a9f qlt_rdy_to_xfer +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xbf452aac qlt_enable_vha +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xe1a2fdb2 qlt_xmit_tm_rsp +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xe483a310 qlt_lport_deregister +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xfce60ddf qlt_lport_register +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x1f55cd70 qlogicfas408_ihandl +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x3eccf288 qlogicfas408_bus_reset +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x3fd8cd71 qlogicfas408_detect +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x594b2848 qlogicfas408_biosparam +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x5b283d7e qlogicfas408_info +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x97a7945a qlogicfas408_queuecommand +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0xb1ed9c0e qlogicfas408_abort +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0xdf7639a4 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/raid_class 0x0e0508c1 raid_class_attach +EXPORT_SYMBOL drivers/scsi/raid_class 0x7e6cb83d raid_class_release +EXPORT_SYMBOL drivers/scsi/raid_class 0xa128d96d raid_component_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x01975360 fc_remote_port_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x042ad9cf fc_vport_create +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x235a0e3b scsi_is_fc_vport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x360c4fd6 fc_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x38b16462 fc_host_post_event +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x3e9ef85e fc_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x40297a6f fc_remove_host +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x4f7d5224 fc_host_post_vendor_event +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x58c3fef5 fc_remote_port_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x5c76aa27 scsi_is_fc_rport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x7954b1ea fc_get_event_number +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xc938f36e fc_remote_port_rolechg +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xefbbfc98 fc_block_scsi_eh +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xf3c2f33a fc_vport_terminate +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x16a873b7 sas_rphy_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x1dd2758f scsi_is_sas_port +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x2debee1b sas_port_alloc_num +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x2f7a9090 sas_remove_children +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x32cf1752 sas_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x3b681542 sas_port_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x3ff4347f sas_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x464815a4 sas_phy_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x4adbebf6 sas_phy_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x6124d121 sas_rphy_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x67b5fb6d sas_remove_host +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x6b827148 sas_rphy_unlink +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x6dad5622 sas_read_port_mode_page +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x74d96cd1 sas_port_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x7ece67c0 sas_port_mark_backlink +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x8023a869 scsi_is_sas_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x8f6586be sas_port_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x92e715b8 sas_expander_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xa4fa04c6 sas_rphy_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xaa164744 sas_end_device_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xb00c0740 sas_port_delete_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xb228fe17 sas_rphy_remove +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xc1b96560 scsi_is_sas_rphy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xd3e44826 sas_phy_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xd993cf95 sas_phy_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xe84ba9a8 sas_port_get_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xee8c4b44 sas_port_add_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xf24483ef sas_port_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x2418f262 spi_display_xfer_agreement +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x3686ea09 spi_print_msg +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x5699fe11 spi_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0xd2286077 spi_schedule_dv_device +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0xd63c1d3c spi_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0xeb3cceb7 spi_dv_device +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0x15abef6c srp_rport_put +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0x27520f3e srp_rport_get +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0x405b6e05 srp_parse_tmo +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0x638a5ca9 srp_reconnect_rport +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0x80d5a158 srp_start_tl_fail_timers +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0x02156c35 ufshcd_system_resume +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0x38a5c641 ufshcd_alloc_host +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0x39cbea05 ufshcd_runtime_suspend +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0x79dde027 ufshcd_system_suspend +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0xcb1428df ufshcd_runtime_resume +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0xf479237b ufshcd_runtime_idle +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0xfeb36b6c ufshcd_shutdown +EXPORT_SYMBOL drivers/ssb/ssb 0x1450a8b4 ssb_chipco_gpio_control +EXPORT_SYMBOL drivers/ssb/ssb 0x2f15c498 ssb_bus_unregister +EXPORT_SYMBOL drivers/ssb/ssb 0x325f1adc ssb_device_is_enabled +EXPORT_SYMBOL drivers/ssb/ssb 0x385e794d ssb_device_enable +EXPORT_SYMBOL drivers/ssb/ssb 0x3984aa3b ssb_pmu_set_ldo_paref +EXPORT_SYMBOL drivers/ssb/ssb 0x514cf1da ssb_pcicore_dev_irqvecs_enable +EXPORT_SYMBOL drivers/ssb/ssb 0x6b1f3a6b __ssb_driver_register +EXPORT_SYMBOL drivers/ssb/ssb 0x70c57e5d ssb_pmu_set_ldo_voltage +EXPORT_SYMBOL drivers/ssb/ssb 0x73f888e3 ssb_bus_powerup +EXPORT_SYMBOL drivers/ssb/ssb 0x778add3f ssb_pcihost_register +EXPORT_SYMBOL drivers/ssb/ssb 0x79b906f2 ssb_device_disable +EXPORT_SYMBOL drivers/ssb/ssb 0x85177142 ssb_bus_sdiobus_register +EXPORT_SYMBOL drivers/ssb/ssb 0x8d4a721f ssb_bus_may_powerdown +EXPORT_SYMBOL drivers/ssb/ssb 0xaf034f48 ssb_bus_resume +EXPORT_SYMBOL drivers/ssb/ssb 0xc0512e0f ssb_admatch_base +EXPORT_SYMBOL drivers/ssb/ssb 0xc73b2188 ssb_bus_pcibus_register +EXPORT_SYMBOL drivers/ssb/ssb 0xcf14199e ssb_driver_unregister +EXPORT_SYMBOL drivers/ssb/ssb 0xd481192b ssb_admatch_size +EXPORT_SYMBOL drivers/ssb/ssb 0xee91ab3b ssb_clockspeed +EXPORT_SYMBOL drivers/ssb/ssb 0xf3002701 ssb_bus_suspend +EXPORT_SYMBOL drivers/ssb/ssb 0xf996b366 ssb_dma_translation +EXPORT_SYMBOL drivers/ssb/ssb 0xf9d9a8a7 ssb_set_devtypedata +EXPORT_SYMBOL drivers/ssb/ssb 0xfc8cebdb ssb_commit_settings +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x017dce75 fbtft_write_spi_emulate_9 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x03431226 fbtft_unregister_framebuffer +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x03a45e8f fbtft_framebuffer_alloc +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x05155ebf fbtft_probe_common +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x0aa6a906 fbtft_framebuffer_release +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x0f23d2f8 fbtft_register_backlight +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x12152df7 fbtft_remove_common +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x3584dbb7 fbtft_write_reg16_bus8 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x59963bb4 fbtft_read_spi +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x6683e97b fbtft_unregister_backlight +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x6f5633e0 fbtft_write_vmem16_bus9 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x6fbf553f fbtft_write_gpio8_wr +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x7076a10f fbtft_write_gpio16_wr_latched +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x7b844a69 fbtft_write_reg16_bus16 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x861cfd32 fbtft_write_vmem16_bus16 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x987a3951 fbtft_write_reg8_bus8 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x99266d48 fbtft_dbg_hex +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x9ba9dc23 fbtft_init_display +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xae23040e fbtft_register_framebuffer +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xe66309e9 fbtft_write_vmem8_bus8 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xee520087 fbtft_write_gpio16_wr +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xf3a460af fbtft_write_reg8_bus9 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xf7c40c58 fbtft_write_vmem16_bus8 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xf8b7e342 fbtft_write_spi +EXPORT_SYMBOL drivers/staging/fwserial/firewire-serial 0x7fd4c1b7 fwtty_port_get +EXPORT_SYMBOL drivers/staging/fwserial/firewire-serial 0x85b7c635 fwtty_port_put +EXPORT_SYMBOL drivers/staging/iio/addac/adt7316 0xbdb3f696 adt7316_probe +EXPORT_SYMBOL drivers/staging/iio/magnetometer/hmc5843_core 0x3636d040 hmc5843_common_probe +EXPORT_SYMBOL drivers/staging/iio/magnetometer/hmc5843_core 0x74af62b5 hmc5843_common_suspend +EXPORT_SYMBOL drivers/staging/iio/magnetometer/hmc5843_core 0x9f801a31 hmc5843_common_remove +EXPORT_SYMBOL drivers/staging/iio/magnetometer/hmc5843_core 0xe5a8c6a8 hmc5843_common_resume +EXPORT_SYMBOL drivers/staging/iio/meter/ade7854 0x7f4e6e30 ade7854_probe +EXPORT_SYMBOL drivers/staging/iio/meter/ade7854 0xf2b9895b ade7854_remove +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x05e2956a lnet_finalize +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x1366b7ac LNetSetLazyPortal +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x19670622 LNetNIInit +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x1b191752 lnet_msgtyp2str +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x1ee5f15e lnet_ipif_query +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x1fe16fd5 LNetGet +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x204b8151 lnet_counters_reset +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x2aa9953d lnet_cpt_of_nid +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x2ac93e90 lnet_connect_console_error +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x2ea10a42 lnet_sock_listen +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x33202a6c LNetGetId +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x3c779ee0 LNetPut +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x3f4f5b46 LNetNIFini +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x473ad33b LNetDist +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x51b5e4d2 lnet_net2ni +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x52c55143 lnet_sock_getaddr +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x55db5324 lnet_iov_nob +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x565051d6 lnet_sock_write +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x58a1ca89 LNetMDUnlink +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x58b43f35 lnet_sock_read +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x5e91cfec lnet_copy_iov2iov +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x5fee352c lnet_acceptor_timeout +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x607e28e0 lnet_unregister_lnd +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x61f784b2 LNetClearLazyPortal +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x64cdea3a LNetCtl +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x66d449b1 lnet_ipif_enumerate +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x68d54980 lnet_parse +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x6f7be171 LNetEQGet +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x722c76e5 LNetMDAttach +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x73a03f89 lnet_register_lnd +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x7d59a7fe LNetMEInsert +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x854ab844 LNetEQWait +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x8907c9ed lnet_kiov_nob +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x8e83ba65 lnet_create_reply_msg +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x99592944 lnet_extract_kiov +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x9de986d3 LNetEQAlloc +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xa1d9fda6 lnet_sock_accept +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xa56de08d lnet_ipif_free_enumeration +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xa5a96576 lnet_set_reply_msg_len +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xaa414970 LNetMEUnlink +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xaa9b477e LNetMDBind +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xacafad7c lnet_sock_getbuf +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xb33b5874 lnet_sock_connect +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xb75f7953 LNetEQFree +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xba5566d2 lnet_acceptor_port +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xbf0760a2 LNetMEAttach +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xc595fe9f lnet_copy_iov2kiov +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xcf869170 lnet_connect +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xd1c2f3e4 lnet_extract_iov +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xd461b29f lnet_sock_setbuf +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xd7c50cb9 lnet_init +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xe8124744 lnet_fini +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xee3256b6 lnet_copy_kiov2kiov +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xf0ccce19 lnet_copy_kiov2iov +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xf1b316bf LNetSnprintHandle +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xf34d6d62 the_lnet +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xfa106804 lnet_counters_get +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xfea90e4a lnet_notify +EXPORT_SYMBOL drivers/staging/lustre/lnet/selftest/lnet_selftest 0x078db139 lstcon_ioctl_entry +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0x0bbe1abd seq_client_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0x0cb763fd seq_client_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0x1c4bb5f9 LU_OBF_FID +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0x375e6f8d LUSTRE_BFL_FID +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0x5131ae7b seq_client_flush +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0x59e76928 client_fid_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0x73054dce seq_client_alloc_fid +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0xae61cff5 LU_DOT_LUSTRE_FID +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0xc997a02f LUSTRE_SEQ_SPACE_RANGE +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0xdedef146 seq_client_get_seq +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0xea73def8 client_fid_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0xecee2727 LUSTRE_SEQ_ZERO_RANGE +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0x0e1a38b5 fld_client_debugfs_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0x184834e6 fld_client_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0x3a291530 fld_client_add_target +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0x6017d786 fld_client_del_target +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0x9984c014 fld_client_flush +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0xedf97d8d fld_client_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0xfa6c2b12 fld_client_lookup +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x000c507f libcfs_debug_dumplog +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x01db5172 cfs_percpt_atomic_summary +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x06401e01 cfs_hash_is_empty +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x069f9bb2 cfs_wi_schedule +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x08917712 cfs_hash_for_each_key +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x08ada613 libcfs_console_backoff +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x0b4b1546 libcfs_lnd2modname +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x0d1b8a30 cfs_percpt_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x0de6c369 cfs_cap_lower +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x0e4820ab cfs_percpt_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x0f5eff79 cfs_percpt_number +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x117c8a95 cfs_cpt_nodemask +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x123b6908 cfs_hash_bd_findadd_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x12c54b77 cfs_hash_findadd_unique +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x13550229 lbug_with_loc +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x15565c7f cfs_cpt_set_node +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x17ac7833 libcfs_deregister_ioctl +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x18c503cd cfs_percpt_lock_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x1a60d439 cfs_parse_nidlist +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x1d41c4c0 cfs_hash_bd_lookup_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x1e8cdb47 cfs_race_waitq +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x23f6f445 cfs_restore_sigs +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x247da28c libcfs_kvzalloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x2663147a __cfs_fail_timeout_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x277e62bd cfs_hash_for_each_empty +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x27b6d3ba cfs_ip_addr_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x29aafd0c cfs_hash_hlist_for_each +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x2a641ef9 cfs_hash_dual_bd_unlock +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x2adae33e cfs_init_timer +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x2dbe54b2 cfs_trimwhite +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x2efcc0e6 cfs_block_sigs +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x2fb7eae8 cfs_hash_bd_finddel_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x31fc5082 cfs_crypto_hash_update +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x377f93fb cfs_srand +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x38828b92 cfs_cpt_unset_nodemask +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x389ca502 libcfs_debug_mb +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x39fdcd2b libcfs_debug_set_level +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x3a62a183 cfs_cpt_set_cpu +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x3c1285bd libcfs_subsystem_debug +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x3d5e6098 cfs_race_state +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x3e5e7727 cfs_hash_rehash_cancel_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x3ef0d90c libcfs_kkuc_group_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x3f0d9281 cfs_wi_sched_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x4062f92b libcfs_run_lbug_upcall +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x4087e2b4 cfs_hash_putref +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x411db754 cfs_crypto_hash_final +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x413056d8 cfs_cpt_weight +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x42e22feb cfs_cpt_table +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x44688a0a cfs_block_allsigs +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x44839bbb cfs_rand +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x468bace1 cfs_hash_rehash_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x48f163c6 libcfs_str2anynid +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x4a95faa2 cfs_timer_deadline +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x4a99af72 cfs_clear_sigpending +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x4b982291 cfs_hash_bd_peek_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x4d89e988 cfs_block_sigsinv +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x4f1f2fa5 cfs_crypto_hash_digest +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x50345570 libcfs_str2net +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x5051b6d2 portal_enter_debugger +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x509d38b0 libcfs_net2str +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x52e9cfc1 cfs_cpt_current +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x53b383e4 cfs_cpt_unset_cpumask +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x54fd9a71 cfs_percpt_index +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x58a7ee00 libcfs_catastrophe +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x5946ec2b cfs_percpt_current +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x5b20921a cfs_hash_for_each_nolock +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x5c013b81 cfs_expr_list_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x5ce62c0e cfs_cpt_table_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x5dce9e80 libcfs_lnd2str +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x62289d65 cfs_array_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x63b4967a cfs_hash_lookup +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x64685fef libcfs_console_min_delay +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x6564c55b libcfs_console_max_delay +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x65dd9f0c libcfs_run_upcall +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x67398404 cfs_wi_sched_destroy +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x68497dbf cfs_cpt_number +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x6c147ea0 libcfs_kvzalloc_cpt +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x6c4cadc8 cfs_hash_for_each +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x6c605eaa cfs_cpt_unset_node +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x6c905b5f libcfs_watchdog_ratelimit +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x71f662a3 libcfs_debug +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x72f4e5f9 cfs_hash_bd_move_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x752858fb cfs_cpt_table_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x7562cd14 cfs_hash_del_key +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x771695b1 cfs_hash_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x785b7372 cfs_hash_dual_bd_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x7a47b94d cfs_hash_size_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x7a63872e cfs_timer_disarm +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x7b0b748a cfs_ip_addr_parse +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x7c73bc4b cfs_hash_rehash +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x7d93cded cfs_cpt_of_cpu +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x7e6f6485 cfs_ip_addr_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x7fda989d cfs_fail_loc +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x8151c3aa cfs_cap_raised +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x83d795e4 cfs_match_nid +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x857aaea7 libcfs_register_ioctl +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x87f3bb87 cfs_hash_del +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x8c6be9ab cfs_percpt_lock_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x8c85e4e6 cfs_crypto_hash_speed +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x8e61d47b cfs_cpt_cpumask +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x91504e8b libcfs_kmemory +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x940ed192 libcfs_stack +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x949221dc cfs_hash_cond_del +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x95620e8c cfs_wi_deschedule +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x97b0b9bc cfs_enter_debugger +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x9879b229 cfs_get_random_bytes +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x9f82f712 cfs_trace_copyout_string +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xa2b68b2a cfs_array_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xa6b9dee6 libcfs_kkuc_group_rem +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xa711aec5 cfs_cpt_table_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xa9088531 cfs_expr_list_values +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xa9c0ca61 cfs_timer_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xa9dc74e2 cfs_trace_copyin_string +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xaaf59b75 cfs_cpt_set_nodemask +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xab02e921 cfs_crypto_hash_update_page +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xaf74a82a libcfs_kkuc_msg_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xb00dfd91 cfs_hash_dual_bd_findadd_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xb53b5569 cfs_cpt_spread_node +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xb883b006 cfs_percpt_atomic_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xb8c52b1b cfs_timer_done +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xbab4f34e cfs_timer_arm +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xbab577e8 cfs_hash_for_each_safe +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xbada117b cfs_cpt_clear +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xbf7a37f1 cfs_signal_pending +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xc0ea7fc0 cfs_expr_list_parse +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xc1708189 cfs_hash_dual_bd_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xc1b20836 cfs_hash_add_unique +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xc2dfd791 libcfs_console_ratelimit +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xc39fd2f9 libcfs_panic_on_lbug +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xc49b1c62 cfs_percpt_atomic_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xc77a24c3 cfs_cpt_set_cpumask +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xcb385db9 libcfs_debug_binary +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xcc20e694 libcfs_nid2str +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xccc45639 cfs_free_nidlist +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xcd38904c cfs_wi_exit +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xce1a88f2 libcfs_arch_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xcf61bacb __cfs_fail_check_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xcf678304 cfs_hash_bd_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xd0aa642a cfs_hash_rehash_key +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xd0d8d08a cfs_cpt_unset_cpu +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xd2965f33 cfs_hash_bd_del_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xd3de1362 libcfs_kkuc_group_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xd46225d8 cfs_percpt_unlock +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xd48d8f72 cfs_hash_dual_bd_lookup_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xd6a52be3 libcfs_printk +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xd7bbf963 cfs_hash_dual_bd_finddel_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xd7c4f765 add_wait_queue_exclusive_head +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xd96f406d cfs_cap_raise +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xde17bb8d libcfs_isknown_lnd +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xdf2789c0 cfs_curproc_cap_pack +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xe262a6e2 cfs_timer_is_armed +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xe2f91ce3 libcfs_debug_msg +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xe3bf6897 cfs_percpt_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xe6f24f3e cfs_hash_debug_header +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xe7b54314 libcfs_arch_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xe7bf1334 cfs_hash_debug_str +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xec1f56d5 libcfs_str2nid +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xeccafa5c cfs_cpt_online +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xeceac781 cfs_fail_val +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xeed48ba7 cfs_hash_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xf2c02048 cfs_cpt_bind +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xf3565b71 libcfs_debug_vmsg2 +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xf372d1c2 cfs_firststr +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xf440bb38 libcfs_kkuc_group_foreach +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xf5e4a175 cfs_hash_bd_add_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xf8a8644b libcfs_id2str +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xf94025d1 libcfs_str2lnd +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xfacb8667 cfs_hash_getref +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xfe565fa9 cfs_crypto_hash_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/llite/lustre 0x4ef3bd34 ll_direct_rw_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/llite/lustre 0x79733835 ll_iocontrol_register +EXPORT_SYMBOL drivers/staging/lustre/lustre/llite/lustre 0xa468266e ll_stats_ops_tally +EXPORT_SYMBOL drivers/staging/lustre/lustre/llite/lustre 0xa6c761c8 ll_osscapa_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/llite/lustre 0xcd3cde92 ll_iocontrol_unregister +EXPORT_SYMBOL drivers/staging/lustre/lustre/lov/lov 0x0750b605 lov_stripe_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/lov/lov 0x1a81184c lov_read_and_clear_async_rc +EXPORT_SYMBOL drivers/staging/lustre/lustre/lov/lov 0x424fec44 lov_device_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/lov/lov 0x7d17f319 lov_stripe_unlock +EXPORT_SYMBOL drivers/staging/lustre/lustre/lov/lov 0xa3b08881 lov_lsm_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/lov/lov 0xe05bf5ca lov_lsm_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/mdc/mdc 0x0df21540 it_set_disposition +EXPORT_SYMBOL drivers/staging/lustre/lustre/mdc/mdc 0x5919b6d6 it_clear_disposition +EXPORT_SYMBOL drivers/staging/lustre/lustre/mdc/mdc 0x5ef8417d it_disposition +EXPORT_SYMBOL drivers/staging/lustre/lustre/mdc/mdc 0xfe26c5a6 it_open_error +EXPORT_SYMBOL drivers/staging/lustre/lustre/mgc/mgc 0xdc287f95 mgc_fsname2resid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x01665e34 class_parse_net +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x01c17252 llog_cat_process_or_fork +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0237fe20 llog_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0246d24a lu_env_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0338d27c lu_object_find +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x035852d0 lustre_swab_llog_rec +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x039c0b79 cl_page_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x03ada4f8 lu_context_key_register +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x03e58cf7 cl_lock_unhold +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0481ff82 cl_lock_nr_mutexed +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0499bbcf cl_index +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x05021c45 lustre_register_kill_super_cb +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x05415cb5 lprocfs_obd_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x057f6d4b class_find_old_param +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x05af1920 dt_quota_glb_features +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x05f84e88 LU_BUF_NULL +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x06d1214a lu_object_find_slice +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x078ac648 cl_lock_hold_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x07aa68bb lustre_swab_lustre_cfg +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x07d45876 obdo_set_parent_fid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x07ddb8d3 cl_page_list_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x083942ff class_del_profile +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x088318fd cl_page_own +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0ab898b5 obdo_cpu_to_le +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0b513ee7 obd_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0c201654 class_import_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0c378d79 lustre_swab_llog_hdr +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0c8b8815 cl_page_unmap +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0cf99bff dt_acct_features +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0d1441cc lprocfs_rd_state +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0dee6cab lu_object_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0ea4ece9 cl_offset +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x11495519 lprocfs_write_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x117f74a8 cl_sync_io_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x121417ab cl_io_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1219b4b9 cl_enqueue +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1221189e obd_export_evict_by_uuid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x122853ab cl_type_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1491dc30 lu_context_tags_clear +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x16529541 iattr_from_obdo +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x16d623c4 lprocfs_rd_conn_uuid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1772ab64 ldebugfs_register_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x17c9702f lprocfs_free_obd_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1aaa03c6 md_from_obdo +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1c812ca5 cl_page_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1d44ed0f lu_site_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1d4c4cf6 dt_index_read +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1d683e5b cl_env_peek +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1dce9e0a cl_lock_ext_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1eca0daa cl_lock_closure_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1f14f52c lu_context_key_degister_many +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1f2bc3ac cl_lock_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1ff596db llog_cat_add_rec +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x21307495 lu_buf_check_and_grow +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x221826f1 class_parse_nid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x23316020 cl_lock_error +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x23e0e253 class_disconnect_exports +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x24509f52 cl_object_prune +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2460f30f class_detach +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x246f4c2f llog_copy_handler +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x24e1671d lprocfs_counter_sub +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x252407df lu_kmem_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2547efae lustre_uuid_to_peer +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2560c493 class_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x25662c0d llog_write +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2579b96f cl_object_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2584ac63 cl_lock_modify +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x259ebac6 obd_alloc_fail +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2694527c dt_find_or_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x275cdc7a cl_env_reexit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x286860f5 class_handle_free_cb +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x28bd8d28 llog_process +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x297cf5e0 class_handle2object +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x298ad8a3 lu_site_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2a3bc307 cl_lock_hold_release +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2a9a2884 cl_sync_io_wait +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2ae1cd79 kuc_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2b400735 lu_site_stats_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2b4c48e9 server_name2svname +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2b526eb5 cl_lock_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2b7339dd llog_declare_write_rec +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2bc28422 dt_declare_version_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2d57231f ldebugfs_add_simple +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2d899a11 llog_backup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2e544c3f lu_context_key_register_many +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2ee2087c cl_queue_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2fd34aa9 cl_page_list_splice +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x30e09b97 dt_object_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x30e2f13f class_import_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x31396151 cl_2queue_discard +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3242ed35 obdo_cachep +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x32b6712a lu_object_assign_fid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x334ba2a7 capa_cpy +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x340e3433 llog_cancel_rec +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x341b99ac cl_lock_slice_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x369be015 obdo_le_to_cpu +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x370fd741 lu_object_invariant +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x37c1c4a2 dt_txn_hook_start +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x37ed6e4b at_early_margin +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x381d5bee cl_object_has_locks +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x382ee847 llog_sync +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x38ab1cd1 cl_page_find +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x38f7e660 cl_object_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x38fb0c90 class_match_param +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3946e69f dt_locate_at +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x395db0f0 lu_object_put_nocache +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x39630994 lu_env_refill_by_tags +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3978d81c lu_object_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x39e5552f cl_lock_at +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3a005065 dt_otable_features +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3a298d1a lu_device_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3b2e2f1f cl_page_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3bcbdc4b lprocfs_stats_alloc_one +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3c339b40 cl_page_is_vmlocked +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3cc4b791 cl_lock_descr_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3da2aa39 lprocfs_alloc_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3f25c782 obd_max_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3f9e4b90 llog_cat_declare_add_rec +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x403569fe cl_page_find_sub +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x411baae5 llog_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x431f9dc3 llog_cat_reverse_process +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x43affb71 cl_lock_state_wait +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x43b48908 obdo_refresh_inode +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x44ed3694 dt_lookup_dir +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x45a25705 lprocfs_exp_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x45fd661d lu_object_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x462f2a19 class_destroy_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4727acb9 cl_page_is_under_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x474ed5bd lustre_swab_ll_fid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x47b35f7d statfs_unpack +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x482d3cb5 capa_cachep +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x494cfb52 lustre_acl_xattr_merge2ext +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x49a0f6ea lustre_posix_acl_xattr_2ext +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x49a29223 lprocfs_find_named_value +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4a58e4e4 obdo_from_la +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4a9d2fb9 cl_lock_get_trust +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4abd07de lustre_posix_acl_xattr_filter +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4ac58713 obd_connect_flags2str +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4af5fdd8 cl_lock_delete +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4b0263e3 class_decref +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4b375904 cl_lock_at_pgoff +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4bb3b3ab cl_page_clip +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4bd8a3e9 cl_lock_enqueue_wait +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4c501fd4 cl_lock_mutex_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4d13458b kuc_len +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4d645589 cl_io_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4d8d6dfa lprocfs_counter_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4e16442f lu_object_anon +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4f53d705 lustre_common_put_super +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4f7fcd8f cl_env_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4fba4346 dt_directory_features +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x50c7fc36 ptlrpc_put_connection_superhack +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x511ad6e0 class_register_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x51b7bb0b cl_pages_prune +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5385b573 cl_lock_user_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5399529d cl_io_iter_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x53e7d299 cl_req_slice_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x54268bbd cl_page_header_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x544a5167 la_from_obdo +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x54885f87 ldlm_timeout +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x558bec27 obd_ioctl_getdata +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x563b9d46 cl_page_prep +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x564e9d44 init_capa_hash +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x56613da1 class_name2obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x56d98419 class_find_client_obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x570d09ae lustre_swab_lu_fid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x572f527b cl_lock_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x57d3345a lu_context_key_quiesce_many +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x58bfadc3 llog_close +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x58d008d0 cl_env_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5953bbeb cl_sync_io_note +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x59e5c5c7 cl_page_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5a20d896 obd_memory_max +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5a4603b2 lprocfs_rd_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5b17014a cl_lock_release +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5b8e8e80 ldebugfs_remove +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5b9a729e class_conn2obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5bc022c5 lprocfs_dt_rd_filestotal +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5bedf344 cl_lock_request +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5c22fc7d lprocfs_seq_release +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5c499c1b cl_io_submit_rw +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5c5dcd5f llog_declare_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5c85c630 cl_lock_peek +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5cb57a88 cl_wait_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5ce4d47d cl_lock_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5d34ae0d cl_lock_mode_name +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5d631ba5 cl_page_list_discard +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5dcfaf6e dt_version_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5e93341f lprocfs_oh_sum +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5f516b66 llog_init_handle +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5f5317e4 class_num2obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5fe97b73 block_debug_check +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6033b908 obdo_cmp_md +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6123db01 cl_2queue_disown +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x61374d62 cl_io_end +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x624ffe24 lprocfs_counter_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x62511b77 ldebugfs_obd_seq_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x62849e41 cl_lock_weigh +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x63162fdb class_put_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x631fd7b9 lustre_ext_acl_xattr_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x63787c8a class_conn2cliimp +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x64595011 lprocfs_rd_timeouts +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x648a7f66 lprocfs_free_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6490d4b8 llog_cat_close +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6551ff6c class_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6578b82b lprocfs_rd_connect_flags +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x65cf367a cl_io_rw_advance +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6734adbd lprocfs_read_frac_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x677ba497 lprocfs_rd_server_uuid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x67a298e8 ldebugfs_register +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x67ba636d lprocfs_alloc_md_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6890d175 lustre_get_jobid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x691d66a0 lprocfs_free_md_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x698b61fc cl_lvb2attr +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x69c018e7 llog_write_rec +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x69c42114 at_min +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x69c7d39e cl_object_attr_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x69e32b7c class_config_llog_handler +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x69e3c657 dt_read +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6a9362a8 lprocfs_init_mps_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6aa13d2e obdo_from_inode +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6ad3202d cl_page_list_move +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6bb6d421 lu_buf_realloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6c858f3e cl_object_attr_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6c8635fa lprocfs_single_release +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6dc4a170 cl_lock_descr_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6ebc9a7c lprocfs_obd_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6f02413d cl_page_list_disown +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6f3e6225 dt_quota_slv_features +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6f9483c2 cl_lock_extransit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6fe145a4 llog_cat_init_and_process +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x70c5f1d9 llog_cat_process +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x70ffcda9 lu_context_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7307641c cl_io_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x742559b1 class_unregister_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x742893ec class_connected_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7467579b llog_reverse_process +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x74adf703 cl_page_delete +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7519f618 lprocfs_init_ldlm_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x752f71a8 class_get_profile +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x756a77f3 class_parse_nid_quiet +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x75d84d3c llog_is_empty +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7656182c cl_io_sub_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x77d2089a class_name2dev +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7802fcd7 lustre_swab_llogd_conn_body +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x780f2d6b lprocfs_at_hist_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x789796a1 obd_zombie_barrier +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7a584cbc cl_io_start +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7a703a1b lu_object_unhash +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7b4fc57b at_max +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7bc12d2a lprocfs_init_ops_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7be79bb3 cl_io_submit_sync +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7d71058a cl_req_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7de708b6 cl_io_loop +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7e0486dc cl_object_attr_unlock +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7ea1ff00 cl_req_attr_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7edcafa0 cl_env_reenter +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7fe5561a obd_dirty_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8031178a lu_context_key_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8031efb8 lprocfs_dt_rd_kbytestotal +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x806cc497 class_add_uuid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x80fc0ab6 lu_object_header_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8134e8fd lu_object_add_top +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x81742d89 obd_ioctl_popdata +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8194519c cl_io_iter_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x82c976a3 cl_page_list_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x82db33d4 cl_2queue_init_page +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x830311e8 cl_locks_prune +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x831807bf dt_version_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x831f656c class_process_config +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x836549c2 cl_page_list_unmap +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x83e8e990 cl_page_discard +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8423509a class_config_dump_llog +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8446b9a8 obdo_to_ioobj +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8489f086 obd_alloc_fail_rate +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x849e5385 obd_update_maxusage +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x85251299 cl_lock_state_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x85331b94 obd_exports_barrier +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8553b369 obd_memory +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x85670e72 cl_object_find +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x86450ac6 cl_vmpage_page +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x88b87068 lprocfs_stats_collect +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x891054f1 lprocfs_clear_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x899be895 cl_io_prepare_write +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8aa2c358 lprocfs_dt_rd_blksize +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8ac64673 capa_lookup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8b5f4057 lu_context_tags_update +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8ba6e479 lustre_swab_lu_seq_range +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8bc48d48 cl_lock_user_del +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8c0526ef cl_lock_enclosure +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8cfbe098 cl_lock_closure_build +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8d658ed0 capa_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8e27ced8 cl_page_list_own +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8e4a544c cl_unuse_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8f67314c obd_dump_on_eviction +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8f7978b0 lprocfs_rd_uint +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x90113a5e lprocfs_obd_rd_max_pages_per_rpc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x904cfc0d llog_open_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x90fe1898 ldebugfs_add_vars +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x91a1d9a4 class_handle_hash +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x920ec171 cl_object_attr_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x92e58479 obd_dump_on_timeout +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x92ede484 cl_env_unplant +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x93854b79 llog_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x93859814 lprocfs_oh_tally +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9387412d dt_object_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x93b46468 lu_session_tags_clear +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x94686eab class_exp2cliimp +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9512d507 lustre_acl_xattr_merge2posix +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x95359c0b cl_req_page_done +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x953f0f72 cl_io_rw_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x955f5220 ldlm_timeout_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x95735c6c at_extra +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x965e806b lprocfs_seq_read_frac_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x970e0817 cl_lock_is_mutexed +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9762afbc cl_page_vmpage +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9767adce class_uuid2dev +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x976e4c06 dt_key +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x97d03783 at_history +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9974c4eb lu_device_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x99a5f5d4 obd_export_nid2str +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x99b35f27 _debug_capa +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9a1d195a cl_io_lock_alloc_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9ab107cc cl_unuse +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9ade5960 llog_cat_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9aff402d lprocfs_alloc_obd_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9b1ed9d8 obd_jobid_var +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9bbd2f37 lu_site_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9c704034 cl_site_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9dbb17b6 lprocfs_dt_rd_kbytesfree +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9e27d47d class_search_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9f382cd7 class_add_conn +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9f6bc28b obd_max_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa08bf478 cl_page_disown +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa137b4c7 dt_try_as_dir +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa14da154 obd_devs +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa159d77b cl_page_top +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa160da4a lu_object_header_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa1cb53c5 cl_2queue_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa257a9df cl_2queue_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa261ed59 cl_lock_disclosure +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa5fb234f lprocfs_write_frac_u64_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa674c241 kuc_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa67706e7 cl_page_flush +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa67b65fd lu_device_type_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa6f96d81 cl_page_list_del +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa740b8bb class_unlink_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa772346e cl_env_nested_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa7b97c8c class_get_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa82a3dd1 class_handle_unhash +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa8b7cb47 class_exp2obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa96be898 dt_device_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa9eabdca cl_page_cache_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xaa21b7a0 lustre_register_quota_process_config +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xaa2d6c87 cl_env_implant +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xab1f3bee obd_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xabbaeaaa cl_page_at +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xabf45922 capa_decrypt_id +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xac025e7c lu_object_locate +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xac52f7c7 lustre_process_log +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xac7f1596 kuc_ptr +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xad46891d lu_device_type_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xad530395 cl_object_glimpse +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xadf59693 obdo_from_md +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xae1ce78d cl_lock_signal +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xaeb032d2 dt_txn_hook_stop +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xaef26842 lprocfs_wr_uint +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xaef692ad cl_io_top +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xafe28ba0 llog_declare_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb01963a6 class_uuid_unparse +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb03d3dd0 cl_lock_discard_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb04435f6 cl_2queue_assume +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb1b80de6 lu_object_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb1b89b6d class_attach +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb1d040d7 lu_context_enter +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb1f46a92 class_conn2export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb2a33cdd cl_page_is_owned +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb35519ed lustre_swab_cfg_marker +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb41998cd lustre_cfg_rename +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb4cb60e4 lprocfs_rd_name +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb4f8ee63 lprocfs_read_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb516b30b dt_device_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb62f0de9 cl_object_header_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb65d8787 lu_context_refill +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb6ba5dd5 kuc_ispayload +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb743ec6a dt_mode_to_dft +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb8681800 llog_process_or_fork +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb8e28362 cl_lock_intransit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb9ab3664 lu_context_key_revive_many +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xba809838 lu_object_header_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xba985283 lustre_register_client_process_config +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbacac922 lprocfs_write_frac_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbaf8a6fd cl_lock_mutex_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbb266aa7 lprocfs_wr_atomic +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbbeac12a cl_conf_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbc436a0d obdo_cpy_md +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbc4fe439 cl_env_nested_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbc63b229 class_new_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbcb492fc obdo_to_inode +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbcc237d9 cl_lock_hold +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbce415dd dt_store_resolve +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbcf2363e dt_index_walk +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbd7b7d7b class_export_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbdcae813 obdo_from_iattr +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbe0444fb cl_page_size +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbe67dcac llog_erase +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc004ca3b cl_page_completion +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc0954007 lprocfs_oh_clear +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc0bf7ef2 obd_debug_peer_on_timeout +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc102186f lu_cdebug_printer +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc2653e14 cl_req_completion +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc26fd006 lu_device_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc30fcd11 cl_io_read_page +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc33cbeff class_disconnect_stale_exports +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc468ea00 lu_context_key_degister +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc4814563 cl_io_is_going +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc49dd85d lprocfs_rd_u64 +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc4d4f391 dt_txn_callback_del +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc4eb998f lu_context_key_revive +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc61d6ed5 cl_lock_mutex_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc6a7e84c lu_stack_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc6ee68c9 class_new_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc75239fc dump_exports +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc7e66e72 lu_site_init_finish +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc88ee89c cl_page_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc9681dff cl_page_gang_lookup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc9b3c667 dt_lfsck_features +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xca76b0de cl_env_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcabafc73 cl_io_lock_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcb0ab67f obd_max_dirty_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcb162ecb lu_site_purge +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcbebef7a llog_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcca20e20 cl_page_list_assume +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcd7537ee get_devices_count +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcd8a604e lu_buf_check_and_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcda5af7c dt_txn_callback_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xce02cb2c cl_object_header_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcf505a5f cl_lock_is_intransit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcf6746ce cl_req_page_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd08827c0 server_name2fsname +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd0b6995d lu_buf_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd0feb1f1 lu_context_key_quiesce +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd10aa042 lustre_swab_llog_id +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd1525673 llog_cat_cancel_records +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd35ce45a cl_io_unlock +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd4a73370 cl_page_own_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd57f6da7 dt_record_read +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd5d44b69 lprocfs_rd_atomic +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd70fe669 lustre_swab_llogd_body +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd7a73508 class_connect +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd7bc8654 obd_timeout +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd7bfbc9c lprocfs_dt_rd_filesfree +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd7f7b340 cl_lock_mode_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd8a0ec27 cl_page_list_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd93ef1df dump_lniobuf +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd97b941f lu_env_refill +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd9e7e77e cl_object_kill +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xda5b1ced class_find_param +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdac644c8 lustre_posix_acl_xattr_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdb13dce1 capa_list +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdb5cea68 class_process_proc_param +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdbc82da6 lustre_end_log +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdc4485ed llog_exist +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdc8c5bc2 cl_page_lookup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdcc40af0 class_check_uuid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xde7d985b obd_dirty_transit_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdead36fe class_handle_hash_back +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdf27ab1a cl_object_top +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdfc4e312 lu_context_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdffbf11d lu_dev_del_linkage +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe009bd13 llog_open +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe028cf84 capa_encrypt_id +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe0c9b616 class_incref +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe14c7855 cl_page_unassume +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe1741b2b cl_io_slice_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe29a7df4 cl_attr2lvb +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe2eb4470 class_get_next_param +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe347e85e class_devices_in_group +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe3811ad7 cl_enqueue_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe3976f29 lu_dev_add_linkage +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe3eb3312 capa_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe4396d38 lu_object_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe583b23b lu_kmem_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe5e25f7a cl_site_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe7276953 lustre_register_client_fill_super +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe7a136ae lu_env_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe7a8f4ce cl_io_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe7d83236 cleanup_capa_hash +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe867b55b ldebugfs_add_symlink +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe8e84c32 class_match_nid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe8efdad4 lu_context_exit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe919f61b class_export_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe9d900ec cl_page_make_ready +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xea084241 cl_wait +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xeacec47c lprocfs_oh_tally_log2 +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xec03da73 cl_site_stats_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xec7d6b85 obd_timeout_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xed0d16e3 cl_req_prep +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xed34e1c4 class_disconnect +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xedfb7409 dt_txn_hook_commit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xee68bc29 lu_session_tags_update +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xeeeb79fa do_lcfg +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xef4bb463 lu_object_find_at +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xef76f858 block_debug_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xef92b62a class_fail_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf01e2527 server_name2index +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf293066b dt_store_open +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf2bfdcb4 cl_stack_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf2e48f22 cl_io_commit_write +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf2fd6695 statfs_pack +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf47eb3db dt_record_write +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf490d5f9 class_del_profiles +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf5c11a63 ldebugfs_seq_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf60d4659 capa_count +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf64ec200 obd_export_evict_by_nid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf7020831 lprocfs_dt_rd_kbytesavail +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf9d92c96 lu_device_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf9f541ea llog_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfa813d06 capa_hmac +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfaa02af0 class_config_parse_llog +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfafc5413 cl_use_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfaffd7c0 cl_2queue_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfbea0098 lu_types_stop +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfbf92858 llog_thread_key +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfc7f18d0 obd_pages_max +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfd68d17a class_notify_sptlrpc_conf +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfd8f5cf4 lu_buf_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfda6a87f __llog_ctxt_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfdbbce91 cl_page_slice_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfdbe1557 lprocfs_write_u64_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfddb38a0 class_uuid2obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfe2b7617 class_manual_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfe50d27f cl_lock_closure_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xff57e92d class_match_net +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xff809f56 cl_page_assume +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfffc1f11 lustre_swab_ost_id +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x007cd74e ldlm_cli_enqueue_local +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x00cb99c1 RQF_LDLM_INTENT_GETXATTR +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x00d95039 ptlrpcd_decref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x01875d8d client_disconnect_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x01d6ef7f ldlm_pools_recalc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0356aea5 ptlrpc_unpack_rep_msg +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x03d2d9c7 ptlrpc_set_destroy +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x048b59d5 lustre_msg_set_handle +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x048f0d14 ptlrpc_request_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0515f93b RQF_FLD_QUERY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x06a9a855 ldlm_replay_locks +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x06b3942b lustre_swab_lov_user_md_objects +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x071fc74a RQF_LDLM_ENQUEUE_LVB +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x07605c7d interval_find +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x08bb2d27 lustre_swab_obd_ioobj +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x090a5d40 sptlrpc_enc_pool_put_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x095587d0 lustre_msg_buflen +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0a3130b0 RMF_MDT_EPOCH +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0ac252b2 lustre_msg_set_jobid +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0ac54708 lustre_errno_hton +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0bcacb5d RMF_MDS_HSM_USER_ITEM +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0c2d9c43 lustre_swab_lip_header +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0cb5c146 ptlrpc_register_bulk +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0ce359cd ldlm_flock_completion_ast +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0cf343dd RQF_LDLM_INTENT_BASIC +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0e7a8cc1 lprocfs_wr_pinger_recov +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x10d21f77 ptlrpc_resend_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x10f18f20 interval_iterate_reverse +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x113576b8 sptlrpc_gc_del_sec +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x115017f6 req_layout_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x12b6f5a3 ptlrpc_connection_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x14708afc lustre_swab_mdt_rec_reint +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1483eca4 ldlm_lock_addref_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x14d192db lustre_msg_size +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x15a3e4db RMF_GETINFO_VAL +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x16f556a7 ptlrpc_pinger_sending_on_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x172fb86d lustre_msg_hdr_size +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1747d8b3 ldlm_lockname +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x17950f60 RQF_SEC_CTX +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1823c9ce ptlrpc_req_xid +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x183f2439 ldlm_cli_cancel_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x184cfe20 ptlrpc_error +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x18be3ae3 ptlrpc_stop_all_threads +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x19108a0f RQF_OST_DISCONNECT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x19c08934 RQF_LDLM_INTENT_CREATE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1a6a3ce9 RQF_OST_GET_INFO_LAST_ID +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1a9b76aa RMF_OBD_QUOTACTL +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1ab5f4c4 ldlm_pool_del +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1abd3258 RMF_SETINFO_VAL +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1ace4b5f RQF_LDLM_BL_CALLBACK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1ad6c330 RMF_EAVALS +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1b0f7a05 ldlm_cli_cancel_unused_resource +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1bae0270 interval_iterate +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1be21715 lustre_msg_size_v2 +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1c300d8e lustre_msg_get_slv +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1c8a867f ptlrpc_replay_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1d043548 lustre_msg_set_op_flags +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1dc2051d RMF_SEQ_OPC +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1de9c288 lustre_swab_layout_intent +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1e2045dd req_capsule_client_swab_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1e8e48a4 sptlrpc_flavor_has_bulk +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1e92cfc1 ptlrpc_request_pack +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1eb2a65f RQF_OST_GETATTR +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1ee46b51 lustre_init_msg_v2 +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1ee9eb3c RQF_MDS_QUOTACTL +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x20583cd5 ldlm_init_flock_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2096f5b5 RQF_OST_SET_GRANT_INFO +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x20d6b82c RQF_LDLM_INTENT_QUOTA +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2185ddc0 sptlrpc_sec_destroy +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x218a36ce ldlm_cli_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x219391ec RMF_EAVALS_LENS +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x233790b5 RMF_OST_BODY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x244e5558 lustre_msg_get_version +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x24aafdba RMF_MGS_TARGET_INFO +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x255f0ff4 lprocfs_wr_evict_client +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2585a629 RMF_SEQ_RANGE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2587513c RQF_LDLM_CP_CALLBACK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x264bff24 ldlm_prep_elc_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x269554ce RQF_LDLM_INTENT_GETATTR +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x26ac1277 ptlrpc_disconnect_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x26f99d16 RQF_MGS_CONFIG_READ +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2717ad44 lustre_pack_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x285e5b99 lustre_msg_set_conn_cnt +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2900106c sptlrpc_lprocfs_cliobd_attach +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x296796f9 ptlrpc_request_bufs_pack +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x29e0869a sptlrpc_get_hash_name +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x29f7990e sec2target_str +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2a63a472 lustre_swab_ptlrpc_body +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2c00c60d ptlrpc_sample_next_xid +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2c7c19c7 ldlm_namespace_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2ca92fa8 ldlm_lock_decref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2ccd5b87 ldlm_cli_cancel_list_local +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2d56f168 ptlrpc_pinger_ir_up +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2d798316 RMF_MGS_CONFIG_RES +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2e4562fe RQF_LLOG_ORIGIN_HANDLE_CREATE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2e4ca396 RQF_LDLM_INTENT_UNLINK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2ecd7515 lustre_msg_check_version +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2f0e4f87 RQF_OST_QUOTACTL +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2f3585e3 ldlm_resource_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2f793215 lustre_swab_ost_body +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2fab3539 lustre_swab_ost_lvb_v1 +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2fd2f737 lustre_msg_set_limit +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x301d4fcd RQF_MDS_READPAGE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x302937e0 RQF_MDS_CONNECT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3057e3d6 ptlrpc_nrs_policy_register +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3060b9c6 sptlrpc_rule_set_expand +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3112ca8a ptlrpc_mark_interrupted +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x31838cb4 RMF_IDX_INFO +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3261b862 RQF_OST_SYNC +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3289442d ptlrpc_cleanup_client +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x33759969 ptlrpc_prep_req_pool +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x33bb7761 ldlm_typename +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x340bacc3 lustre_free_reply_state +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x350724a0 ptlrpc_buf_set_swabbed +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x35939a3d lustre_swab_fiemap +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x36d3dc09 ldlm_enqueue_pack +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3835ab4b RQF_LLOG_ORIGIN_CONNECT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3835bdc7 ldlm_lock_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3858fb94 RMF_OBD_STATFS +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x38c01799 RQF_LDLM_CALLBACK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x38fce533 lustre_msg_set_versions +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x39f60a5f RMF_OST_ID +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3a1e4bcb __lustre_unpack_msg +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3a3b894e sptlrpc_cli_ctx_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3ab90f6e lustre_msg_bufcount +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3ac00716 lustre_swab_hsm_user_state +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3b6b7cba dump_ioo +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3ba9fd4f client_destroy_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3bedb0c7 RMF_LLOGD_CONN_BODY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3c3f26bc sptlrpc_sec_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3c63e62b RQF_MDS_REINT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3c8b16ab lustre_swab_ost_lvb +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3ca50f33 RQF_MDS_HSM_CT_REGISTER +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3ce64373 ptlrpc_hpreq_handler +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3d2afa62 ptlrpc_send_error +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3d7dc5f9 ldlm_pools_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3dc47695 lustre_msg_get_magic +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3ef04da0 ldlm_pool_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3f034caf lustre_msg_get_status +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3f752e78 RQF_MDS_STATFS +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x40a4d7a9 target_pack_pool_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x41008cef RQF_LDLM_CANCEL +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4128ca8e ptlrpc_wake_delayed +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x414eb9a4 ptlrpc_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x42434104 llog_client_ops +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x42771722 sptlrpc_get_bulk_checksum +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x43168488 RQF_MDS_RELEASE_CLOSE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x43705ee4 RQF_LOG_CANCEL +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x43a1cf3c ptlrpc_unpack_req_msg +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x43d7efc8 lustre_msg_set_transno +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x44036eda RQF_MDS_GET_INFO +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x440c2a71 RMF_FIEMAP_VAL +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4481591d RQF_OST_SET_INFO_LAST_FID +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4518a7a2 ldlm_cli_enqueue_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x45721a92 ptlrpc_recover_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x45d05893 lustre_swab_lustre_capa +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x45e30cea lustre_swab_ldlm_intent +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x46489bb2 ldlm_prep_enqueue_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x46b574f8 ptlrpc_at_set_req_timeout +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x47f5e903 RMF_MDS_HSM_REQUEST +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x498c03c5 lustre_msg_set_last_xid +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x499394aa sptlrpc_import_flush_all_ctx +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x49bb4040 sptlrpc_svc_ctx_invalidate +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4a5a2416 RMF_DLM_REQ +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4b32dcbf ptlrpc_retain_replayable_request +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4c33f4de req_capsule_set_size +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4c384df6 ptlrpc_queue_wait +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4c7f4112 ptlrpc_request_committed +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4d39fa7b ptlrpc_save_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4d7580d0 lustre_swab_hsm_user_item +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4dd9f983 req_capsule_get_size +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4e1706e5 lustre_msg_buf +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4e696b96 ptlrpcd_queue_work +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4eb03a6f ptlrpcd_destroy_work +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4f766c3b lustre_swab_generic_32s +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x50443f6a ptlrpc_init_client +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x50dd74f8 RMF_STRING +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5180e805 ldlm_cli_update_pool +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x52c62150 RMF_RCS +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x53411557 RMF_DLM_REP +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x53a4a004 bulk_sec_desc_unpack +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x545157a8 ptlrpc_prep_bulk_imp +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x54ae5021 ldlm_lock_addref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x555eb7fe RQF_MDS_HSM_STATE_SET +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x55f2e3c9 ldlm_lock_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x588035b4 RMF_UPDATE_REPLY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x58c932d7 lustre_pack_reply_v2 +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x58e762f8 ptlrpc_unregister_service +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5915ed32 ptlrpc_invalidate_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x595ab175 lustre_swab_obd_quotactl +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x596582bf RMF_GETINFO_VALLEN +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x59a0519e ldlm_pool_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5a057439 interval_search +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5af0d02a ldlm_lock_dump_handle +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5b6ba895 lustre_packed_msg_size +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5bbd7a74 ptlrpc_deactivate_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5c6a3a83 RQF_SEQ_QUERY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5c92ebea ptlrpc_nrs_policy_unregister +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5ca1b491 lustre_swab_close_data +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5caae213 ptlrpc_next_xid +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5e0b19b1 RMF_CLUUID +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5e2b7558 lustre_msghdr_get_flags +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5e6f435d RQF_OST_BRW_READ +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5e80f899 RQF_LLOG_ORIGIN_HANDLE_READ_HEADER +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5ec3284d RQF_MDS_HSM_CT_UNREGISTER +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5ef831ee lustre_msg_get_handle +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5f397ad1 req_capsule_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5f96ccdd ptlrpc_connection_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5fc9a455 RMF_CLOSE_DATA +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6042bc15 RQF_MDS_REINT_RENAME +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x604e2505 RMF_SWAP_LAYOUTS +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x607ec932 lustre_msg_set_buflen +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6089ca68 req_capsule_shrink +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x60cd26ad RQF_MDS_REINT_CREATE_SYM +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x60ea8fe7 ptlrpc_lprocfs_unregister_obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x61646e1b RQF_MDS_SWAP_LAYOUTS +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x618ad203 RQF_OST_GET_INFO_LAST_FID +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x624dfc46 ptlrpcd_alloc_work +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x628198b7 client_import_add_conn +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x62aaae3f RQF_MDS_HSM_REQUEST +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6315dd4c RMF_LLOGD_BODY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x634092fc ptlrpc_buf_need_swab +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6352a62d ldlm_get_ref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6413cfea ptlrpc_resend +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x647b6e48 lustre_swab_ldlm_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x64b8dfc4 ldlm_cli_cancel_unused +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6531891b ldlm_reprocess_all_ns +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x653723dc RMF_LOGCOOKIES +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x657b00b7 ptlrpc_init_rq_pool +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x683243bf ptlrpc_set_next_timeout +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x685eeaba RMF_DLM_GL_DESC +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x68872184 ldlm_pool_get_limit +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x68c4399e ptlrpc_start_threads +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x68cb2541 interval_is_overlapped +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x68f49e5e ptlrpc_expired_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6912990a RQF_OST_QUOTACHECK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x695dc5cd ldlm_cancel_resource_local +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x696ba811 lustre_msg_get_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x69c9f04d RQF_MDS_REINT_LINK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6a152fc3 client_connect_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6a3785c9 RMF_EADATA +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6c57bbf6 dump_obdo +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6d72828c sptlrpc_conf_log_update_end +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6d7931cc RQF_UPDATE_OBJ +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6e86eb36 req_capsule_extend +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6ed20499 ldlm_revalidate_lock_handle +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6efa82b0 RQF_MGS_TARGET_REG +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6f6dc736 lustre_swab_mdt_remote_perm +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6fb92092 sptlrpc_flavor2name_bulk +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6fd040eb __ptlrpc_free_bulk +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6ff0a6af ptlrpc_lprocfs_register_obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x703538e4 lustre_swab_hsm_current_action +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x723d43b6 sptlrpc_rule_set_dump +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x725a892c RQF_MDS_REINT_OPEN +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7271d945 ldlm_pool_set_limit +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7305e4e3 lustre_pack_request +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7380b5ba sptlrpc_conf_client_adapt +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x73e24d31 ldlm_lock_change_resource +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x73e4e5c9 ptlrpc_add_rqs_to_pool +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x74840056 lustre_msg_set_status +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x75a2c40d ldlm_put_ref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x75dc8488 client_obd_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x76b728e5 lustre_swab_update_buf +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x77840c82 sptlrpc_rule_set_choose +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x77c8cca2 sptlrpc_cli_ctx_wakeup +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x78bf9136 lustre_swab_ldlm_lock_desc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7994991e ptlrpc_lprocfs_brw +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x79ee9754 req_capsule_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7a832f10 RMF_CONN +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7b158da4 lustre_swab_ldlm_request +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7b170ee4 sptlrpc_gc_add_sec +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7bbf8001 RMF_MDT_BODY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7c4c6107 RQF_LDLM_CONVERT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7cf6a9ad ldlm_namespace_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7d182d56 sptlrpc_target_update_exp_flavor +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7d1ecd7f RQF_LDLM_INTENT_LAYOUT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7d41a8b9 RQF_QUOTA_DQACQ +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7dc0e7cd RMF_QUOTA_BODY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7dfb3c18 lustre_msg_clear_flags +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7ede90a2 sptlrpc_gc_add_ctx +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7f4925d8 interval_expand +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7f4c99b1 ldlm_expired_completion_wait +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7f5a1cc7 lustre_msg_set_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7f6d2357 lustre_msg_is_v1 +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8011f7df ptlrpc_req_finished_with_imp_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x804763cf req_capsule_field_present +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x80a9e8c3 lustre_msg_get_last_xid +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x80e815d6 req_capsule_server_swab_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x80ecb4e3 RMF_MDS_HSM_CURRENT_ACTION +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x810227a7 sptlrpc_cli_unwrap_bulk_read +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x817d7f1f lustre_msg_add_flags +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x826d3c4f RQF_LDLM_GL_CALLBACK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x833ab7b2 req_capsule_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x837efb00 RMF_NAME +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x83899a7a req_capsule_client_sized_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x84ee0123 ldlm_lock_fail_match_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x85135801 RMF_DLM_LVB +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x85a9e0d8 RMF_FID +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x85eecf67 sptlrpc_get_hash_alg +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x863db6eb RMF_HSM_USER_STATE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x86fa8c3b ldlm_cli_convert +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8760beaf lustre_swab_ldlm_policy_data +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x876c2551 RMF_GETINFO_KEY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x87b37666 ptlrpc_restart_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x87bf7b3c sptlrpc_get_next_secid +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x884e5e8d ptlrpc_set_add_new_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8872f3d2 RMF_SETINFO_KEY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x88fff52d RMF_CAPA2 +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8941fd17 ldlm_init_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x897778bf ptlrpc_commit_replies +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x89f9edf7 RQF_MDS_REINT_SETXATTR +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8a1ea476 lustre_swab_hsm_state_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8a257736 RQF_MDS_HSM_STATE_GET +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8a4345b1 ptlrpc_set_add_cb +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8ac440fa ptlrpc_uuid_to_connection +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8b854254 lustre_swab_mgs_config_res +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8c2f9e7a ldlm_destroy_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8c9b2051 ldlm_lock_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8cb71d4b RQF_MDS_REINT_CREATE_SLAVE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8d77ea75 lustre_msg_set_flags +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8da3fca7 lustre_msg_add_version +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8dc0458c req_capsule_init_area +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8e9abe4d RMF_GENERIC_DATA +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8f0aceac RQF_MDS_HSM_ACTION +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8fec0451 lustre_msg_get_limit +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x919c4ce3 RMF_OBD_ID +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x91cf58d3 RQF_MDS_PIN +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9228392f lustre_swab_mdt_body +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x933efa29 ptlrpc_check_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x936c33eb ptlrpc_unregister_bulk +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x937b1ee0 lustre_swab_mdt_ioepoch +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9435eec9 ptlrpcd_wake +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9553c633 RQF_LDLM_INTENT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x95d08f0c lustre_swab_mgs_target_info +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9660ace0 RMF_FLD_MDFLD +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x96730837 ldlm_pool_shrink +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x967bfd52 RQF_OBD_PING +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x96b2eb62 ldlm_cli_enqueue +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x97926f17 ldlm_destroy_flock_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9798f2f1 RQF_MDS_GETATTR +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x980fcfdc ptlrpc_connection_addref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9999cf7a dump_ost_body +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9a258886 RQF_MDS_GETSTATUS +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9a6f2f6d lustre_msg_set_opc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9b080159 ptlrpc_request_alloc_pack +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9b3cd6df ldlm_resource_putref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9b88f6ce RMF_NIOBUF_REMOTE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9bb5198b RQF_MDS_CLOSE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9bbcf541 ptlrpc_send_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9c9809fd __ptlrpc_prep_bulk_page +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9ca074b7 ptlrpc_fail_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9d7ea314 sptlrpc_pack_user_desc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9ef58f21 sptlrpc_enc_pool_get_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9f7bc74a do_set_info_async +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9fb088f1 lustre_swab_lov_mds_md +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9fe9f916 req_capsule_other_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa007a931 lprocfs_wr_ping +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa10f0d3d RMF_UPDATE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa163f4c3 dump_rniobuf +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa2244636 RQF_MDS_GETATTR_NAME +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa22c0086 ldlm_error2errno +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa39378f1 ldlm_pool_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa3d2a6ee RMF_CAPA1 +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa3e4c8d4 ldlm_namespace_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa47787ef RMF_PTLRPC_BODY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa4a2d089 RQF_OST_PUNCH +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa4bdf94e ldlm_pool_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa4bea5ef lustre_swab_lmv_user_md +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa5458dad ldlm_lock_decref_and_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa5880075 ldlm_errno2error +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa5eccce5 client_import_del_conn +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa6149078 ptlrpc_pinger_del_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa66888dd ptlrpcd_add_rqset +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa6816b33 ldlm_get_enq_timeout +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa6c436ca RQF_MDS_WRITEPAGE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa6c4b642 ptlrpc_service_health_check +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa6cbe2e4 target_print_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa7d55cc3 RQF_MDS_REINT_CREATE_RMT_ACL +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa7e360b1 RMF_OBD_IOOBJ +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa7ec567d RMF_CONNECT_DATA +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa9704f80 lustre_msg_get_last_committed +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa9bd2a12 ldlm_namespace_new +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa9c4658e lustre_swab_lov_user_md_v3 +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa9edf09d RQF_OBD_IDX_READ +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xaa8da15b lprocfs_wr_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xab2039b4 target_send_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xab280b3a req_capsule_server_dump +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xabcfe02d ptlrpc_req_finished +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xabeeb81e ptlrpc_unregister_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xac3456db ldlm_pool_set_clv +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xaca7d72d ldlm_lock_fail_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xacd6a7d7 lustre_swab_ost_last_id +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xacdb48a1 ldlm_namespace_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xacfa0c19 sptlrpc_cli_ctx_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xadbdbc61 sptlrpc_target_export_check +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xaddc3979 lustre_swab_lustre_capa_key +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xae7fd775 client_import_find_conn +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xae9de7f4 ptlrpc_add_timeout_client +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xaf4e9658 RQF_MDS_SYNC +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xaf50a0d6 RMF_HSM_STATE_SET +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb0751fa4 RQF_LLOG_ORIGIN_HANDLE_DESTROY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb118a4a2 sptlrpc_register_policy +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb1b43d8a dump_rcs +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb27c2374 lustre_msg_get_jobid +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb291473d lustre_msg_early_size +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb33c090c sptlrpc_cli_ctx_expire +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb3974cc8 ldlm_blocking_ast_nocheck +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb4a7ecf3 lustre_msg_add_op_flags +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb512ebc2 sptlrpc_parse_flavor +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb515cc0d ldlm_pool_get_clv +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb61cb95a RQF_MDS_GETXATTR +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb6684429 _ldlm_lock_debug +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb68476df interval_erase +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb6aafd03 RQF_MDS_DONE_WRITING +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb708b025 ptl_send_rpc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb70db613 ldlm_namespace_foreach +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb7b38189 RMF_MDT_MD +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb7fa3cc8 RMF_LLOG_LOG_HDR +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb8c6cf99 ptlrpc_set_add_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb903634e RQF_OST_CONNECT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb9b631cf lustre_swab_mgs_config_body +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbaa76097 lustre_msg_string +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbb6e6ad7 sptlrpc_sec_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbb8f4c20 ptlrpc_set_import_active +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbc1370dc lustre_shrink_msg +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbd83bc44 RQF_OBD_SET_INFO +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbdd9ae53 ldlm_blocking_ast +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbe47bc7e ping_evictor_start +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbebf89ea sptlrpc_cli_enlarge_reqbuf +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbef769cc RQF_CONNECT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbf98b86f RQF_MDS_QUOTACHECK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbffd4313 RQF_OST_BRW_WRITE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc053b304 ldlm_pool_get_slv +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc06c4670 lustre_msg_get_versions +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc0867da7 RMF_REC_REINT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc0cdf55e RMF_MGS_SEND_PARAM +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc2986d28 lustre_swab_ldlm_res_id +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc2b1af57 RQF_MGS_SET_INFO +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc2be922a RMF_SYMTGT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc2bee58f req_capsule_server_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc2f29736 ptlrpc_obd_ping +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc3db9d31 req_capsule_server_sized_swab_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc4232a28 ldlm_lock2desc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc559a634 RMF_LAYOUT_INTENT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc5bfe354 ptlrpc_init_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc60a60e1 RQF_OST_STATFS +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc694be4b RQF_LLOG_ORIGIN_HANDLE_PREV_BLOCK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc763fabc sptlrpc_process_config +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc78a5464 ptlrpc_free_rq_pool +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc7921743 ptlrpcd_add_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc79b9c67 ldlm_pools_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc7ca8257 RQF_MDS_REINT_SETATTR +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc7e47564 ptlrpc_interrupted_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc7f1f3e3 req_capsule_client_dump +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc8b56188 ldlm_lock_convert +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc8f586a9 ptlrpc_connection_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xca5a81ec ptlrpc_pinger_ir_down +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xcb017706 ldlm_resource_iterate +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xcb104cb7 ptlrpc_prep_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xcb1580d4 req_capsule_server_pack +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xcb16107d ptlrpc_set_wait +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xcb2cc0cf lustre_swab_lquota_lvb +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xcb2ceaff sptlrpc_secflags2str +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xcbb5d0a1 sptlrpc_import_flush_my_ctx +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xcbdf5e9e client_obd_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xcc544659 ptlrpc_request_alloc_pool +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xcd118775 sptlrpc_req_replace_dead_ctx +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xcd3a8f92 sptlrpc_import_sec_ref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xce1a689b sptlrpc_enc_pool_add_user +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xce86066d lustre_msg_set_slv +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xcec513c9 RQF_MDS_UNPIN +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xced015be sptlrpc_rule_set_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xcf9963db lustre_msg_get_op_flags +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xcf9aab6a RQF_MDS_DISCONNECT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd09779c3 ptlrpc_request_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd1dfcb4a ldlm_lock_allow_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd2983334 lustre_swab_swap_layouts +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd29eb2a7 ldlm_completion_ast +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd2e0d4eb lustre_msg_get_opc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd3011fa6 ldlm_lock_downgrade +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd32a1a74 lock_res_and_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd3dae408 ldlm_it2str +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd4433b39 ldlm_cli_cancel_list +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd67a5d7b lustre_swab_update_reply_buf +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd69e0a27 RQF_MDS_IS_SUBDIR +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd6c3ebfb RMF_FIEMAP_KEY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd7910326 lustre_swab_obd_statfs +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd85103f4 ptlrpc_request_addref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd8b91b3e lustre_swab_lov_desc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd8f06300 RQF_MDS_HSM_PROGRESS +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd9561861 RQF_LDLM_INTENT_OPEN +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd9e3853b sptlrpc_cli_wrap_bulk +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xdb1fb0a2 RQF_MDS_REINT_CREATE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xdb52d59e _debug_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xdb9d5a6a lustre_swab_niobuf_remote +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xdba53ab7 ldlm_resource_unlink_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xdd0ffb04 sptlrpc_flavor2name +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xdd30d7bf RMF_ACL +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xddc40a85 lustre_msg_get_flags +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xde12d36b RMF_MDS_HSM_ARCHIVE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xde555d70 sptlrpc_enc_pool_del_user +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xdee87192 sptlrpc_conf_log_update_begin +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xdf701ae7 lustre_swab_fid2path +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe0cc694c RQF_LLOG_ORIGIN_HANDLE_NEXT_BLOCK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe171c120 ptlrpc_reconnect_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe24d9694 ptlrpc_schedule_difficult_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe28c5b6b ptlrpc_connect_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe3332aed ldlm_glimpse_ast +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe35306b9 ptlrpc_cleanup_imp +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe40e0a50 lustre_msg_get_transno +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe44135a4 lprocfs_rd_pinger_recov +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe57bd972 sptlrpc_current_user_desc_size +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe5b0d507 sptlrpc_unregister_policy +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe5e8169b lustre_errno_ntoh +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe643998e RQF_OST_SETATTR +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe6f0dc96 RQF_OST_CREATE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe7062b5f RMF_U32 +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe7512278 ptlrpcd_addref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe76c645f req_capsule_client_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe85b6da3 lustre_swab_obdo +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe966ccd1 req_capsule_filled_sizes +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xea0cd350 ldlm_completion_ast_async +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xea1cea4f llog_initiator_connect +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xeabac40a req_capsule_server_grow +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xeabac4fc sptlrpc_rule_set_merge +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xeaf5d00e ldlm_pool_get_lvf +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xeb82d0a9 ptlrpc_abort_inflight +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xebb64e68 req_layout_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xec226f66 ping_evictor_stop +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xec939a00 RQF_MDS_REINT_UNLINK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xecace5c1 RQF_OST_GET_INFO_GENERIC +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xed1c10d6 ptlrpc_connection_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xedc6e419 ptlrpc_activate_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xedcb740d sptlrpc_name2flavor_base +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xedf63a91 ldlm_namespace_dump +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xedfab437 ldlm_pool_set_slv +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xee1c62e7 ldlm_lock_allow_match_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xee89149c __ldlm_handle2lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xef1aeca9 RMF_FLD_OPC +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xef411da4 sptlrpc_cli_unwrap_bulk_write +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf0241d6e lustre_swab_hsm_progress_kernel +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf0d52b5f ptlrpc_pinger_suppress_pings +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf1300275 _sptlrpc_enlarge_msg_inplace +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf134f5dc ptlrpc_pinger_add_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf277c125 RQF_OST_GET_INFO_FIEMAP +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf27d49dc sptlrpc_target_choose_flavor +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf35be3c0 ptlrpc_request_set_replen +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf35f132b lustre_swab_ldlm_resource_desc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf3d44370 RQF_OST_DESTROY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf43540b9 lustre_swab_mgs_nidtbl_entry +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf45085e1 sptlrpc_conf_log_stop +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf4f632d8 req_capsule_has_field +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf540f92c ldlm_lock_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf55c033b RMF_MGS_CONFIG_BODY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf584a16b sptlrpc_part2name +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf588aec7 ptlrpc_register_service +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf596e9ae sptlrpc_conf_log_start +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf607fc23 sptlrpc_flavor2name_base +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf617ab8a lustre_msg_get_conn_cnt +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf696fe4e ldlm_lock2handle +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf697b756 ldlm_dump_all_namespaces +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf7408f84 lustre_swab_hsm_request +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf7ba40c0 RMF_MDS_HSM_PROGRESS +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf8222057 unlock_res_and_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf85cb27e sptlrpc_parse_rule +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf86dab04 sptlrpc_target_sec_part +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf870fed9 RQF_LDLM_GL_DESC_CALLBACK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf9051bd6 RQF_QC_CALLBACK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf94e41e0 deuuidify +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf973aa93 lustre_swab_lov_user_md_v1 +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf9ee11e2 lustre_msg_set_last_committed +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf9f72dfc RMF_TGTUUID +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xfa51688d interval_insert +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xfab96ed9 ldlm_register_intent +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xfad8dd51 req_capsule_server_sized_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xfb444a98 ptlrpc_prep_fcset +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xfc2fa83f ptlrpc_del_timeout_client +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xfd070eeb ptlrpc_req_set_repsize +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xfd148bf8 RMF_LDLM_INTENT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xfe00fc68 ldlm_resource_foreach +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xff02a0e9 ldlm_lock_set_data +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xff2b31c1 ldlm_extent_shift_kms +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xff2b5341 ptlrpc_prep_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xff66a7e1 lustre_pack_reply_flags +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xffc807e8 sptlrpc_unpack_user_desc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xffe29c3f RQF_LDLM_ENQUEUE +EXPORT_SYMBOL drivers/staging/media/cxd2099/cxd2099 0x70dc1b14 cxd2099_attach +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x0000a242 rtllib_act_scanning +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x0847bc96 rtllib_wx_set_power +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x0b61f314 rtllib_stop_scan_syncro +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x2a35a5ad rtllib_stop_send_beacons +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x345dd733 rtllib_wx_get_mode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x3dcb9b59 rtllib_wx_get_scan +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x45ef075c rtllib_wpa_supplicant_ioctl +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x4a8c9392 rtllib_wx_get_wap +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x4b99ddd5 rtllib_wx_get_freq +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x4bfa92f7 RemovePeerTS +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x569a2fe7 rtllib_wx_set_encode_ext +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x5840c007 dot11d_init +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x634464dd rtllib_EnableIntelPromiscuousMode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x64b844e4 rtllib_wx_get_rate +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x6a6a4001 rtllib_legal_channel +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x6a89129e rtllib_wx_set_essid +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x6af69281 rtllib_wx_set_rts +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x7186210b rtllib_sta_ps_send_null_frame +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x76b4589d rtllib_softmac_stop_protocol +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x7a64e466 HT_update_self_and_peer_setting +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x81cc3d6a rtllib_reset_queue +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x82d29e4d rtllib_MgntDisconnect +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x8348a3c0 rtllib_wx_set_wap +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x83d0d1de notify_wx_assoc_event +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x8ea20abf rtllib_wx_set_mlme +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xa332a2d3 rtllib_wx_get_rts +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xa6137a28 rtllib_wx_get_power +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xab7020bd rtllib_get_beacon +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xaeceef41 free_rtllib +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xb0bfd600 rtllib_rx +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xb14bcf7b rtllib_ps_tx_ack +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xb1f123db rtllib_wx_set_mode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xb62e3867 Dot11d_Channelmap +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xb8676fb1 rtllib_wx_set_scan +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xbc354d8a alloc_rtllib +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xbe1420f2 rt_global_debug_component +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xbe6df70e rtllib_start_send_beacons +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xc11b6341 rtllib_softmac_start_protocol +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xc2a7312a rtllib_wx_set_auth +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xc4ddd420 rtllib_wx_get_essid +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xc7560f1e rtllib_xmit +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xc966a26b rtllib_start_scan_syncro +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xce35293d rtllib_wx_set_freq +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xd6eb63f5 rtllib_wx_set_rawtx +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xd96cadc7 rtllib_wx_set_encode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xdf78f620 rtllib_wlan_frequencies +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xe114b00c rtllib_wx_set_rate +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xe6a4d26c rtllib_wx_set_gen_ie +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xeb1c4ccc rtllib_stop_scan +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xf51b678a rtllib_wx_get_encode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xf697e438 rtllib_DisableIntelPromiscuousMode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xf820498f rtllib_wx_get_name +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x01ccf7cd ieee80211_wpa_supplicant_ioctl_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x03326b02 ieee80211_softmac_stop_protocol_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x041ee992 ieee80211_is_shortslot_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x049f62c4 ieee80211_wx_set_encode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x06977f49 notify_wx_assoc_event_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x11a28f12 ieee80211_wx_get_power_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x1a68d9d4 ieee80211_wx_get_encode_ext_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x1a731cde ieee80211_reset_queue_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x20934435 ieee80211_wx_get_scan_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x38f7c100 ieee80211_softmac_xmit_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x3edc3b6d ieee80211_wx_get_mode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x42bde12e ieee80211_rx_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x43c4e8e5 ieee80211_wx_set_freq_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x4a908f9a HTUpdateSelfAndPeerSetting +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x4b9b75c9 Dot11d_Reset +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x502d87a0 ieee80211_get_beacon_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x502f0a72 IsLegalChannel +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x54145882 ieee80211_wx_get_rate_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x54f38a92 ToLegalChannel +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x55bc6ecd ieee80211_wx_get_wap_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x563bca92 ieee80211_rx_mgt_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x57b6888b DOT11D_GetMaxTxPwrInDbm +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x59347310 ieee80211_wx_set_auth_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x5d679d79 ieee80211_wx_set_wap_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x60131112 SendDisassociation_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x60cb1786 ieee80211_wx_set_mlme_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x6299111a ieee80211_start_scan_syncro_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x66c5bf77 ieee80211_wx_set_encode_ext_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x6776c053 DOT11D_ScanComplete +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x69799264 Dot11d_UpdateCountryIe +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x6e0859ea ieee80211_disassociate_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x6ef6d2fb ieee80211_wake_queue_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x7226e101 ieee80211_stop_scan_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x7796becb ieee80211_wx_get_rts_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x7e14ada0 ieee80211_wx_get_essid_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x7e9c1ab6 ieee80211_start_send_beacons_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x7f4d4d7f ieee80211_wx_set_rts_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x8e68fab8 ieee80211_send_probe_requests_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x8ec42b5b ieee80211_softmac_scan_syncro_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x8fc04483 ieee80211_wx_get_freq_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x90e999b3 ieee80211_stop_queue_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x9810f4e4 ieee80211_wx_set_rate_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xa3e31f8a Dot11d_Init +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xa6581bda ieee80211_softmac_start_protocol_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xa6951425 ieee80211_wx_set_rawtx_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xb5bf4fd3 ieee80211_wx_set_power_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xc01e3795 ieee80211_ps_tx_ack_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xc370a43e ieee80211_wlan_frequencies_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xcf4c2491 ieee80211_is_54g_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xda096d61 ieee80211_wx_set_essid_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xe8588d22 ieee80211_wx_get_encode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xeb948c38 ieee80211_wx_set_gen_ie_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xec76d59d ieee80211_txb_free_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xec97e853 ieee80211_wx_set_scan_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xf2d8970b ieee80211_wx_set_mode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xf6835c77 ieee80211_stop_send_beacons_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xfc4d109c ieee80211_wx_get_name_rsl +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x06b5fc2c iscsit_setup_nop_out +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x09a353f8 iscsit_build_task_mgt_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x118506b0 iscsit_build_logout_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x1f8f9e8b iscsit_stop_dataout_timer +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x36b4b439 iscsit_build_reject +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x41ab2468 iscsit_release_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x4264255d iscsit_logout_post_handler +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x4918f8b5 iscsit_tmr_post_handler +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x56a312e2 iscsit_build_text_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x6944dd16 iscsit_process_nop_out +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x6e034e82 iscsit_set_unsoliticed_dataout +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x733cf469 iscsit_handle_logout_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x7abe3060 iscsit_increment_maxcmdsn +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x7f4772b7 iscsit_process_scsi_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x9b72981d iscsit_unregister_transport +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xa9c4e1ea iscsit_build_rsp_pdu +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xadf8f0ea iscsit_register_transport +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xb23ece76 iscsit_check_dataout_hdr +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xb89a17ab iscsit_allocate_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xba9503d6 iscsit_setup_scsi_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xbd750935 iscsit_build_nopin_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xc3877ac6 iscsit_setup_text_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xc47a515c iscsit_handle_task_mgt_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xd5488a76 iscsit_cause_connection_reinstatement +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xec5ae02f iscsit_process_text_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xf22dfbb4 iscsit_check_dataout_payload +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xf74e6a77 iscsit_find_cmd_from_itt +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xfa99434a iscsit_sequence_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x02cd5036 passthrough_attrib_attrs +EXPORT_SYMBOL drivers/target/target_core_mod 0x02de3b18 transport_set_vpd_ident +EXPORT_SYMBOL drivers/target/target_core_mod 0x040c5a99 transport_generic_request_failure +EXPORT_SYMBOL drivers/target/target_core_mod 0x08e72572 target_register_template +EXPORT_SYMBOL drivers/target/target_core_mod 0x1757993e target_sess_cmd_list_set_waiting +EXPORT_SYMBOL drivers/target/target_core_mod 0x1fd841cf target_get_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x218a58d9 transport_check_aborted_status +EXPORT_SYMBOL drivers/target/target_core_mod 0x21d2be8d target_execute_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x23a2e912 spc_emulate_report_luns +EXPORT_SYMBOL drivers/target/target_core_mod 0x268b9c1a sbc_get_device_type +EXPORT_SYMBOL drivers/target/target_core_mod 0x26e0a765 target_put_sess_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x27c87629 target_submit_cmd_map_sgls +EXPORT_SYMBOL drivers/target/target_core_mod 0x28da6cb7 transport_init_se_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x2b18a557 target_depend_item +EXPORT_SYMBOL drivers/target/target_core_mod 0x346d656b transport_alloc_session_tags +EXPORT_SYMBOL drivers/target/target_core_mod 0x352d8e49 transport_generic_new_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x36b065d0 core_tpg_set_initiator_node_queue_depth +EXPORT_SYMBOL drivers/target/target_core_mod 0x3adfe999 spc_emulate_evpd_83 +EXPORT_SYMBOL drivers/target/target_core_mod 0x3b0a2fc6 target_undepend_item +EXPORT_SYMBOL drivers/target/target_core_mod 0x3d15d6e6 target_complete_cmd_with_length +EXPORT_SYMBOL drivers/target/target_core_mod 0x3ed64092 target_complete_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x3f024508 target_setup_cmd_from_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0x41155304 target_lun_is_rdonly +EXPORT_SYMBOL drivers/target/target_core_mod 0x45ef6146 transport_deregister_session_configfs +EXPORT_SYMBOL drivers/target/target_core_mod 0x47cdab83 transport_kmap_data_sg +EXPORT_SYMBOL drivers/target/target_core_mod 0x4808fcc5 target_put_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x497dcb27 target_backend_unregister +EXPORT_SYMBOL drivers/target/target_core_mod 0x4b2a415c target_wait_for_sess_cmds +EXPORT_SYMBOL drivers/target/target_core_mod 0x4b79b9eb target_submit_tmr +EXPORT_SYMBOL drivers/target/target_core_mod 0x5e4eeb8f sbc_dif_copy_prot +EXPORT_SYMBOL drivers/target/target_core_mod 0x61963f13 core_tpg_register +EXPORT_SYMBOL drivers/target/target_core_mod 0x65f0c621 core_tmr_alloc_req +EXPORT_SYMBOL drivers/target/target_core_mod 0x6ed9917b sbc_parse_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0x77c9894b sbc_dif_verify +EXPORT_SYMBOL drivers/target/target_core_mod 0x7a72d688 transport_lookup_cmd_lun +EXPORT_SYMBOL drivers/target/target_core_mod 0x7dbada9d transport_set_vpd_ident_type +EXPORT_SYMBOL drivers/target/target_core_mod 0x7e1a0a07 transport_init_session_tags +EXPORT_SYMBOL drivers/target/target_core_mod 0x852a074f transport_lookup_tmr_lun +EXPORT_SYMBOL drivers/target/target_core_mod 0x85aa880c transport_set_vpd_assoc +EXPORT_SYMBOL drivers/target/target_core_mod 0x8d95ea3d transport_send_check_condition_and_sense +EXPORT_SYMBOL drivers/target/target_core_mod 0x911c0766 transport_wait_for_tasks +EXPORT_SYMBOL drivers/target/target_core_mod 0x9a4c3a95 sbc_attrib_attrs +EXPORT_SYMBOL drivers/target/target_core_mod 0xa4f6f144 target_submit_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xa59dd9b6 transport_register_session +EXPORT_SYMBOL drivers/target/target_core_mod 0xa9378a21 __transport_register_session +EXPORT_SYMBOL drivers/target/target_core_mod 0xa99603c5 core_tpg_deregister +EXPORT_SYMBOL drivers/target/target_core_mod 0xacb27a8a transport_generic_handle_tmr +EXPORT_SYMBOL drivers/target/target_core_mod 0xafebeae8 transport_deregister_session +EXPORT_SYMBOL drivers/target/target_core_mod 0xb18910bf target_show_dynamic_sessions +EXPORT_SYMBOL drivers/target/target_core_mod 0xb4e168f5 transport_generic_free_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xb61f677e core_tpg_set_initiator_node_tag +EXPORT_SYMBOL drivers/target/target_core_mod 0xb64c962e core_alua_check_nonop_delay +EXPORT_SYMBOL drivers/target/target_core_mod 0xb991d2d0 target_get_sess_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xbd0f7127 target_nacl_find_deve +EXPORT_SYMBOL drivers/target/target_core_mod 0xc4c82653 core_tpg_get_initiator_node_acl +EXPORT_SYMBOL drivers/target/target_core_mod 0xd2384ceb sbc_get_write_same_sectors +EXPORT_SYMBOL drivers/target/target_core_mod 0xdc1bb43f core_tpg_check_initiator_node_acl +EXPORT_SYMBOL drivers/target/target_core_mod 0xdf6a9e52 transport_handle_cdb_direct +EXPORT_SYMBOL drivers/target/target_core_mod 0xe18919c4 passthrough_parse_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0xe1aff59d spc_parse_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0xe4873f86 spc_emulate_inquiry_std +EXPORT_SYMBOL drivers/target/target_core_mod 0xefe8b529 transport_backend_register +EXPORT_SYMBOL drivers/target/target_core_mod 0xf01621c7 transport_set_vpd_proto_id +EXPORT_SYMBOL drivers/target/target_core_mod 0xf48e6862 target_unregister_template +EXPORT_SYMBOL drivers/target/target_core_mod 0xf671667f transport_init_session +EXPORT_SYMBOL drivers/target/target_core_mod 0xfb9f4ca2 transport_free_session +EXPORT_SYMBOL drivers/target/target_core_mod 0xfbbfd785 transport_kunmap_data_sg +EXPORT_SYMBOL drivers/usb/class/cdc-wdm 0x62fcc075 usb_cdc_wdm_register +EXPORT_SYMBOL drivers/usb/gadget/function/usb_f_uvc 0x92e9ebac uvc_set_trace_param +EXPORT_SYMBOL drivers/usb/gadget/libcomposite 0x486fd014 usb_os_desc_prepare_interf_dir +EXPORT_SYMBOL drivers/usb/host/sl811-hcd 0xbef23b1e sl811h_driver +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x02971510 usb_wwan_chars_in_buffer +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x6edc2d46 usb_wwan_dtr_rts +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x751653f0 usb_wwan_ioctl +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x8324c8dd usb_wwan_close +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x8668cd62 usb_wwan_open +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x996f6727 usb_wwan_tiocmset +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x9c9e347b usb_wwan_write_room +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xbd3a1ecf usb_wwan_write +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xe9ea717c usb_wwan_tiocmget +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xea3fd362 usb_wwan_resume +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xf5622312 usb_wwan_port_remove +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xf5cadca7 usb_wwan_suspend +EXPORT_SYMBOL drivers/usb/serial/usbserial 0x916f7627 usb_serial_resume +EXPORT_SYMBOL drivers/usb/serial/usbserial 0xf354b2cb usb_serial_suspend +EXPORT_SYMBOL drivers/vhost/vringh 0x0fd987f7 vringh_abandon_user +EXPORT_SYMBOL drivers/vhost/vringh 0x14397bb5 vringh_notify_disable_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x2e91ca97 vringh_iov_pull_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x32da6f89 vringh_notify_enable_user +EXPORT_SYMBOL drivers/vhost/vringh 0x367ce26a vringh_iov_push_user +EXPORT_SYMBOL drivers/vhost/vringh 0x39c9d7a5 vringh_complete_multi_user +EXPORT_SYMBOL drivers/vhost/vringh 0x4f384f8b vringh_need_notify_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x58abf4ed vringh_init_user +EXPORT_SYMBOL drivers/vhost/vringh 0x59f824d9 vringh_getdesc_user +EXPORT_SYMBOL drivers/vhost/vringh 0x6432894b vringh_init_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x7bda5e6d vringh_iov_push_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x821e9390 vringh_iov_pull_user +EXPORT_SYMBOL drivers/vhost/vringh 0x8d080d03 vringh_need_notify_user +EXPORT_SYMBOL drivers/vhost/vringh 0x937e412c vringh_getdesc_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x95e62337 vringh_abandon_kern +EXPORT_SYMBOL drivers/vhost/vringh 0xb4b63575 vringh_notify_enable_kern +EXPORT_SYMBOL drivers/vhost/vringh 0xc578f0f7 vringh_complete_user +EXPORT_SYMBOL drivers/vhost/vringh 0xd355e031 vringh_complete_kern +EXPORT_SYMBOL drivers/vhost/vringh 0xd609393d vringh_notify_disable_user +EXPORT_SYMBOL drivers/video/backlight/lcd 0x3a68e77e devm_lcd_device_register +EXPORT_SYMBOL drivers/video/backlight/lcd 0x4a567c69 lcd_device_unregister +EXPORT_SYMBOL drivers/video/backlight/lcd 0xa773ae8d devm_lcd_device_unregister +EXPORT_SYMBOL drivers/video/backlight/lcd 0xcfd8e4eb lcd_device_register +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x0ee8ae3d svga_get_caps +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 0x23ff7d9a svga_tilefill +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x4ab38ef2 svga_set_default_crt_regs +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x60490038 svga_tilecopy +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x6e4adb1e svga_check_timings +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x80f24d95 svga_wcrt_multi +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x83f5e57d svga_tileblit +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x8de63fb4 svga_set_timings +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x9712316c svga_tilecursor +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xa8591e67 svga_get_tilemax +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xce7d00c4 svga_settile +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xd1429fca svga_wseq_multi +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xd22ca511 svga_set_default_atc_regs +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xe28d2a49 svga_set_default_gfx_regs +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xef774f5d svga_compute_pll +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xf2db5956 svga_match_format +EXPORT_SYMBOL drivers/video/fbdev/cyber2000fb 0x0cc3ede5 cyber2000fb_detach +EXPORT_SYMBOL drivers/video/fbdev/cyber2000fb 0x21a16c34 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/matrox/g450_pll 0x1ebde496 g450_mnp2f +EXPORT_SYMBOL drivers/video/fbdev/matrox/g450_pll 0x8c3f5293 matroxfb_g450_setpll_cond +EXPORT_SYMBOL drivers/video/fbdev/matrox/g450_pll 0xb3818cec matroxfb_g450_setclk +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_DAC1064 0x2831d1c7 DAC1064_global_init +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_DAC1064 0x6cbe0b29 matrox_mystique +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_DAC1064 0x93b56041 DAC1064_global_restore +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_DAC1064 0xf0898000 matrox_G100 +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_Ti3026 0x8048049c matrox_millennium +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_accel 0x39858dd5 matrox_cfbX_init +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_base 0x10f06715 matroxfb_unregister_driver +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_base 0x1a16d7fb matroxfb_enable_irq +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_base 0x20cdeb54 matroxfb_wait_for_sync +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_base 0xe0e0b2a4 matroxfb_register_driver +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_g450 0x94dee28b matroxfb_g450_connect +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_g450 0xe4727137 matroxfb_g450_shutdown +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0x25cf8049 matroxfb_PLL_calcclock +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0x4ec41898 matroxfb_DAC_out +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0x7f7c952e matroxfb_DAC_in +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0xb63efc46 matroxfb_vgaHWrestore +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0xc0d6533c matroxfb_vgaHWinit +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0xcdc90c64 matroxfb_var2my +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0xd69fdb8d matroxfb_read_pins +EXPORT_SYMBOL drivers/video/fbdev/mb862xx/mb862xxfb 0x9da20b70 mb862xxfb_init_accel +EXPORT_SYMBOL drivers/video/fbdev/sis/sisfb 0x3037658e sis_malloc +EXPORT_SYMBOL drivers/video/fbdev/sis/sisfb 0x454a3cf0 sis_free +EXPORT_SYMBOL drivers/video/vgastate 0x686de290 restore_vga +EXPORT_SYMBOL drivers/video/vgastate 0xe7a2620e save_vga +EXPORT_SYMBOL drivers/virt/fsl_hypervisor 0x45fd1882 fsl_hv_failover_unregister +EXPORT_SYMBOL drivers/virt/fsl_hypervisor 0x77c9b191 fsl_hv_failover_register +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0x01816566 w1_ds2760_read +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0x01cadc58 w1_ds2760_recall_eeprom +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0x63f23dc8 w1_ds2760_store_eeprom +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0x71c67b93 w1_ds2760_write +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2780 0x0802949f w1_ds2780_io +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2780 0xe9d59c64 w1_ds2780_eeprom_cmd +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2781 0x7b886c34 w1_ds2781_eeprom_cmd +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2781 0x9194504f w1_ds2781_io +EXPORT_SYMBOL drivers/w1/wire 0x0f1c447c w1_remove_master_device +EXPORT_SYMBOL drivers/w1/wire 0x80404b3c w1_register_family +EXPORT_SYMBOL drivers/w1/wire 0x85e25e7e w1_add_master_device +EXPORT_SYMBOL drivers/w1/wire 0xebebf671 w1_unregister_family +EXPORT_SYMBOL fs/configfs/configfs 0x00b7cde3 config_group_init +EXPORT_SYMBOL fs/configfs/configfs 0x0e6b3e60 configfs_undepend_item +EXPORT_SYMBOL fs/configfs/configfs 0x1c52d20c config_group_find_item +EXPORT_SYMBOL fs/configfs/configfs 0x3c9466ad config_item_set_name +EXPORT_SYMBOL fs/configfs/configfs 0x5ea7ba21 config_item_init_type_name +EXPORT_SYMBOL fs/configfs/configfs 0x856e13dc config_item_get +EXPORT_SYMBOL fs/configfs/configfs 0x8cef9d6e config_item_put +EXPORT_SYMBOL fs/configfs/configfs 0x99925067 configfs_depend_item +EXPORT_SYMBOL fs/configfs/configfs 0xa762f1d8 config_group_init_type_name +EXPORT_SYMBOL fs/configfs/configfs 0xcf85a337 configfs_register_subsystem +EXPORT_SYMBOL fs/configfs/configfs 0xf610bd47 configfs_unregister_subsystem +EXPORT_SYMBOL fs/exofs/libore 0x2127c7bb ore_write +EXPORT_SYMBOL fs/exofs/libore 0x22219f56 ore_get_io_state +EXPORT_SYMBOL fs/exofs/libore 0x25668b6d ore_remove +EXPORT_SYMBOL fs/exofs/libore 0x28806871 ore_verify_layout +EXPORT_SYMBOL fs/exofs/libore 0x4527e170 ore_calc_stripe_info +EXPORT_SYMBOL fs/exofs/libore 0x95632fdd ore_create +EXPORT_SYMBOL fs/exofs/libore 0xa3d2a634 g_attr_logical_length +EXPORT_SYMBOL fs/exofs/libore 0xd5729338 extract_attr_from_ios +EXPORT_SYMBOL fs/exofs/libore 0xda14911d ore_check_io +EXPORT_SYMBOL fs/exofs/libore 0xde5526df ore_truncate +EXPORT_SYMBOL fs/exofs/libore 0xefadd2cf ore_put_io_state +EXPORT_SYMBOL fs/exofs/libore 0xf0deea4b ore_get_rw_state +EXPORT_SYMBOL fs/exofs/libore 0xfd89879e ore_read +EXPORT_SYMBOL fs/fscache/fscache 0x00c1ff0b __fscache_check_consistency +EXPORT_SYMBOL fs/fscache/fscache 0x039047cb __fscache_wait_on_page_write +EXPORT_SYMBOL fs/fscache/fscache 0x050adb26 fscache_enqueue_operation +EXPORT_SYMBOL fs/fscache/fscache 0x06dfeae4 fscache_operation_init +EXPORT_SYMBOL fs/fscache/fscache 0x0ac9a4b7 __fscache_alloc_page +EXPORT_SYMBOL fs/fscache/fscache 0x0b0b67aa __fscache_wait_on_invalidate +EXPORT_SYMBOL fs/fscache/fscache 0x0b979cca __fscache_disable_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x12119afe __fscache_uncache_all_inode_pages +EXPORT_SYMBOL fs/fscache/fscache 0x13d7ab80 fscache_object_mark_killed +EXPORT_SYMBOL fs/fscache/fscache 0x1720620a fscache_obtained_object +EXPORT_SYMBOL fs/fscache/fscache 0x1938b167 fscache_object_init +EXPORT_SYMBOL fs/fscache/fscache 0x1ceaa87d fscache_fsdef_index +EXPORT_SYMBOL fs/fscache/fscache 0x28477770 fscache_io_error +EXPORT_SYMBOL fs/fscache/fscache 0x33029ed2 fscache_op_complete +EXPORT_SYMBOL fs/fscache/fscache 0x36799e3b __fscache_update_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x42aafabd fscache_mark_pages_cached +EXPORT_SYMBOL fs/fscache/fscache 0x514a5e62 fscache_add_cache +EXPORT_SYMBOL fs/fscache/fscache 0x5639d17d fscache_put_operation +EXPORT_SYMBOL fs/fscache/fscache 0x5855b590 __fscache_check_page_write +EXPORT_SYMBOL fs/fscache/fscache 0x58cd17e8 __fscache_read_or_alloc_page +EXPORT_SYMBOL fs/fscache/fscache 0x6662d6b1 fscache_mark_page_cached +EXPORT_SYMBOL fs/fscache/fscache 0x72453d95 fscache_cache_cleared_wq +EXPORT_SYMBOL fs/fscache/fscache 0x74530ecd fscache_op_debug_id +EXPORT_SYMBOL fs/fscache/fscache 0x7756cb0b __fscache_write_page +EXPORT_SYMBOL fs/fscache/fscache 0x784ab14f __fscache_unregister_netfs +EXPORT_SYMBOL fs/fscache/fscache 0x79a46023 __fscache_attr_changed +EXPORT_SYMBOL fs/fscache/fscache 0x86586b28 fscache_init_cache +EXPORT_SYMBOL fs/fscache/fscache 0x8f3fbefd fscache_withdraw_cache +EXPORT_SYMBOL fs/fscache/fscache 0x9809d5ca __fscache_read_or_alloc_pages +EXPORT_SYMBOL fs/fscache/fscache 0xafd47a81 __fscache_acquire_cookie +EXPORT_SYMBOL fs/fscache/fscache 0xb488e2a9 __fscache_invalidate +EXPORT_SYMBOL fs/fscache/fscache 0xb8bf7002 fscache_object_retrying_stale +EXPORT_SYMBOL fs/fscache/fscache 0xd29ec364 fscache_object_lookup_negative +EXPORT_SYMBOL fs/fscache/fscache 0xd596045f __fscache_uncache_page +EXPORT_SYMBOL fs/fscache/fscache 0xe33814a2 __fscache_register_netfs +EXPORT_SYMBOL fs/fscache/fscache 0xe545d5a9 __fscache_maybe_release_page +EXPORT_SYMBOL fs/fscache/fscache 0xed87386c __fscache_enable_cookie +EXPORT_SYMBOL fs/fscache/fscache 0xf4ff42c8 __fscache_relinquish_cookie +EXPORT_SYMBOL fs/fscache/fscache 0xf5fba0ff fscache_object_destroy +EXPORT_SYMBOL fs/fscache/fscache 0xf703d85b __fscache_readpages_cancel +EXPORT_SYMBOL fs/fscache/fscache 0xf7d7f197 fscache_check_aux +EXPORT_SYMBOL fs/ocfs2/cluster/ocfs2_nodemanager 0xbfd7d7a2 o2hb_global_heartbeat_active +EXPORT_SYMBOL fs/quota/quota_tree 0x0424fd4f qtree_read_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0x747d6e6e qtree_entry_unused +EXPORT_SYMBOL fs/quota/quota_tree 0x75da88a8 qtree_write_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0x96c8c6f5 qtree_delete_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0xeedad6ba qtree_release_dquot +EXPORT_SYMBOL lib/cordic 0x434bfd07 cordic_calc_iq +EXPORT_SYMBOL lib/crc-ccitt 0x3771b461 crc_ccitt +EXPORT_SYMBOL lib/crc-ccitt 0x75811312 crc_ccitt_table +EXPORT_SYMBOL lib/crc-itu-t 0xd29b009f crc_itu_t_table +EXPORT_SYMBOL lib/crc-itu-t 0xf5b4a948 crc_itu_t +EXPORT_SYMBOL lib/crc7 0x66213969 crc7_be +EXPORT_SYMBOL lib/crc7 0x7a222007 crc7_be_syndrome_table +EXPORT_SYMBOL lib/crc8 0x41248eaf crc8 +EXPORT_SYMBOL lib/crc8 0xab9ad613 crc8_populate_lsb +EXPORT_SYMBOL lib/crc8 0xd4534d80 crc8_populate_msb +EXPORT_SYMBOL lib/libcrc32c 0x27000b29 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 0x779e838e lc_seq_dump_details +EXPORT_SYMBOL lib/lru_cache 0x84e0214b lc_committed +EXPORT_SYMBOL lib/lru_cache 0x85a2184c lc_seq_printf_stats +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/lz4_compress 0xcbc5d521 lz4_compress +EXPORT_SYMBOL lib/lz4/lz4hc_compress 0x26c3aa22 lz4hc_compress +EXPORT_SYMBOL lib/raid6/raid6_pq 0x0bd662f6 raid6_gfmul +EXPORT_SYMBOL lib/raid6/raid6_pq 0x15fe0cd3 raid6_gfexp +EXPORT_SYMBOL lib/raid6/raid6_pq 0x5ba93f9d raid6_gfinv +EXPORT_SYMBOL lib/raid6/raid6_pq 0x7456cc61 raid6_empty_zero_page +EXPORT_SYMBOL lib/raid6/raid6_pq 0xce45a6f1 raid6_gfexi +EXPORT_SYMBOL lib/raid6/raid6_pq 0xd9e91f83 raid6_vgfmul +EXPORT_SYMBOL net/6lowpan/6lowpan 0x80967f5e lowpan_nhc_add +EXPORT_SYMBOL net/6lowpan/6lowpan 0xb6ee1252 lowpan_nhc_del +EXPORT_SYMBOL net/802/p8022 0x95e9ceae register_8022_client +EXPORT_SYMBOL net/802/p8022 0x9d709629 unregister_8022_client +EXPORT_SYMBOL net/802/p8023 0x7304b400 make_8023_client +EXPORT_SYMBOL net/802/p8023 0xde95c1a4 destroy_8023_client +EXPORT_SYMBOL net/802/psnap 0x773e25d3 unregister_snap_client +EXPORT_SYMBOL net/802/psnap 0xc936aeab register_snap_client +EXPORT_SYMBOL net/9p/9pnet 0x041aacb5 p9dirent_read +EXPORT_SYMBOL net/9p/9pnet 0x04e75cd8 p9_client_symlink +EXPORT_SYMBOL net/9p/9pnet 0x058fb172 p9_client_fsync +EXPORT_SYMBOL net/9p/9pnet 0x06f58c1e p9_client_getattr_dotl +EXPORT_SYMBOL net/9p/9pnet 0x079e9bca p9_client_readlink +EXPORT_SYMBOL net/9p/9pnet 0x09e66d1a p9_is_proto_dotu +EXPORT_SYMBOL net/9p/9pnet 0x0f630f6f p9stat_read +EXPORT_SYMBOL net/9p/9pnet 0x138c5ec0 p9_client_attach +EXPORT_SYMBOL net/9p/9pnet 0x1a293424 v9fs_get_trans_by_name +EXPORT_SYMBOL net/9p/9pnet 0x1a37c7e9 p9_parse_header +EXPORT_SYMBOL net/9p/9pnet 0x2060b0b3 p9_client_unlinkat +EXPORT_SYMBOL net/9p/9pnet 0x2335a4a0 p9_client_renameat +EXPORT_SYMBOL net/9p/9pnet 0x3271a763 p9_client_getlock_dotl +EXPORT_SYMBOL net/9p/9pnet 0x34ccd6b3 p9_client_setattr +EXPORT_SYMBOL net/9p/9pnet 0x35d1e27e p9_idpool_get +EXPORT_SYMBOL net/9p/9pnet 0x362732f8 p9_client_walk +EXPORT_SYMBOL net/9p/9pnet 0x390a9376 p9_client_statfs +EXPORT_SYMBOL net/9p/9pnet 0x39a97c5e p9_tag_lookup +EXPORT_SYMBOL net/9p/9pnet 0x3d73a797 p9_errstr2errno +EXPORT_SYMBOL net/9p/9pnet 0x44d2c2c0 p9stat_free +EXPORT_SYMBOL net/9p/9pnet 0x472e2406 p9_client_wstat +EXPORT_SYMBOL net/9p/9pnet 0x53a688d5 p9_client_create_dotl +EXPORT_SYMBOL net/9p/9pnet 0x574f9f56 p9_client_readdir +EXPORT_SYMBOL net/9p/9pnet 0x5cad0fe0 p9_client_cb +EXPORT_SYMBOL net/9p/9pnet 0x6d85dd85 p9_release_pages +EXPORT_SYMBOL net/9p/9pnet 0x6de95939 p9_client_lock_dotl +EXPORT_SYMBOL net/9p/9pnet 0x79fc6e1c v9fs_get_default_trans +EXPORT_SYMBOL net/9p/9pnet 0x7c1ec6cb p9_client_open +EXPORT_SYMBOL net/9p/9pnet 0x7dd2fd25 p9_client_destroy +EXPORT_SYMBOL net/9p/9pnet 0x877f9b0a p9_client_mkdir_dotl +EXPORT_SYMBOL net/9p/9pnet 0x8db2e751 p9_client_rename +EXPORT_SYMBOL net/9p/9pnet 0x8ff62e0a p9_client_remove +EXPORT_SYMBOL net/9p/9pnet 0xa5437c0c v9fs_register_trans +EXPORT_SYMBOL net/9p/9pnet 0xc237912a p9_client_clunk +EXPORT_SYMBOL net/9p/9pnet 0xc5db54a9 p9_idpool_destroy +EXPORT_SYMBOL net/9p/9pnet 0xc621e37c p9_client_link +EXPORT_SYMBOL net/9p/9pnet 0xd1b741f3 p9_client_create +EXPORT_SYMBOL net/9p/9pnet 0xd3c36a09 p9_client_read +EXPORT_SYMBOL net/9p/9pnet 0xd5bf4901 p9_is_proto_dotl +EXPORT_SYMBOL net/9p/9pnet 0xd81b6d67 v9fs_unregister_trans +EXPORT_SYMBOL net/9p/9pnet 0xda876647 p9_client_fcreate +EXPORT_SYMBOL net/9p/9pnet 0xe0e7201c p9_client_write +EXPORT_SYMBOL net/9p/9pnet 0xe58a3360 p9_error_init +EXPORT_SYMBOL net/9p/9pnet 0xed0eeafa p9_client_mknod_dotl +EXPORT_SYMBOL net/9p/9pnet 0xeec6fdf1 p9_client_disconnect +EXPORT_SYMBOL net/9p/9pnet 0xf1095072 p9_client_stat +EXPORT_SYMBOL net/9p/9pnet 0xf4a111d8 p9_idpool_create +EXPORT_SYMBOL net/9p/9pnet 0xf55bc443 p9_client_begin_disconnect +EXPORT_SYMBOL net/9p/9pnet 0xf84f2022 p9_idpool_put +EXPORT_SYMBOL net/9p/9pnet 0xfd40c79d p9_idpool_check +EXPORT_SYMBOL net/appletalk/appletalk 0x092f09c3 atalk_find_dev_addr +EXPORT_SYMBOL net/appletalk/appletalk 0x220e2319 aarp_send_ddp +EXPORT_SYMBOL net/appletalk/appletalk 0x47bc771c alloc_ltalkdev +EXPORT_SYMBOL net/appletalk/appletalk 0x941ed088 atrtr_get_dev +EXPORT_SYMBOL net/atm/atm 0x028e173e vcc_release_async +EXPORT_SYMBOL net/atm/atm 0x19102774 atm_init_aal5 +EXPORT_SYMBOL net/atm/atm 0x1e605924 deregister_atm_ioctl +EXPORT_SYMBOL net/atm/atm 0x2cc2d52d vcc_hash +EXPORT_SYMBOL net/atm/atm 0x39c8330d vcc_insert_socket +EXPORT_SYMBOL net/atm/atm 0x4443d399 atm_proc_root +EXPORT_SYMBOL net/atm/atm 0x565b2c13 atm_alloc_charge +EXPORT_SYMBOL net/atm/atm 0x7eaae806 register_atm_ioctl +EXPORT_SYMBOL net/atm/atm 0x8130f115 atm_dev_signal_change +EXPORT_SYMBOL net/atm/atm 0x81f36d3a vcc_process_recv_queue +EXPORT_SYMBOL net/atm/atm 0x9feaf287 sonet_subtract_stats +EXPORT_SYMBOL net/atm/atm 0xa0f22d8b atm_dev_lookup +EXPORT_SYMBOL net/atm/atm 0xa38db863 atm_dev_deregister +EXPORT_SYMBOL net/atm/atm 0xaa024146 sonet_copy_stats +EXPORT_SYMBOL net/atm/atm 0xca87b453 vcc_sklist_lock +EXPORT_SYMBOL net/atm/atm 0xd4aaf07c atm_charge +EXPORT_SYMBOL net/atm/atm 0xd931f5cb atm_dev_register +EXPORT_SYMBOL net/atm/atm 0xeb83a0d5 atm_dev_release_vccs +EXPORT_SYMBOL net/atm/atm 0xf49bc67a atm_pcr_goal +EXPORT_SYMBOL net/ax25/ax25 0x242852b9 ax25_uid_policy +EXPORT_SYMBOL net/ax25/ax25 0x3afee63e ax25_findbyuid +EXPORT_SYMBOL net/ax25/ax25 0x4502c65a asc2ax +EXPORT_SYMBOL net/ax25/ax25 0x4776fb24 ax25_send_frame +EXPORT_SYMBOL net/ax25/ax25 0x53dea1ff ax2asc +EXPORT_SYMBOL net/ax25/ax25 0x859e52f5 ax25_find_cb +EXPORT_SYMBOL net/ax25/ax25 0x8ede9e26 ax25_protocol_release +EXPORT_SYMBOL net/ax25/ax25 0xa1cbd1e9 ax25_linkfail_release +EXPORT_SYMBOL net/ax25/ax25 0xa7c813fb ax25_listen_release +EXPORT_SYMBOL net/ax25/ax25 0xa7f3015b ax25_display_timer +EXPORT_SYMBOL net/ax25/ax25 0xafecc21d ax25_listen_register +EXPORT_SYMBOL net/ax25/ax25 0xb0bed996 ax25_header_ops +EXPORT_SYMBOL net/ax25/ax25 0xc1444946 ax25cmp +EXPORT_SYMBOL net/ax25/ax25 0xd43ecbf1 null_ax25_address +EXPORT_SYMBOL net/ax25/ax25 0xf0cbd928 ax25_ip_xmit +EXPORT_SYMBOL net/ax25/ax25 0xf8164fbc ax25_linkfail_register +EXPORT_SYMBOL net/bluetooth/bluetooth 0x13cde715 bt_sock_unlink +EXPORT_SYMBOL net/bluetooth/bluetooth 0x18f3a319 bt_procfs_init +EXPORT_SYMBOL net/bluetooth/bluetooth 0x19ed1b86 bt_sock_wait_state +EXPORT_SYMBOL net/bluetooth/bluetooth 0x19f56653 l2cap_conn_put +EXPORT_SYMBOL net/bluetooth/bluetooth 0x2033e24c hci_mgmt_chan_register +EXPORT_SYMBOL net/bluetooth/bluetooth 0x23cd91e5 bt_sock_recvmsg +EXPORT_SYMBOL net/bluetooth/bluetooth 0x2a0095cd hci_reset_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x40ccb11d bt_sock_reclassify_lock +EXPORT_SYMBOL net/bluetooth/bluetooth 0x4545771f hci_get_route +EXPORT_SYMBOL net/bluetooth/bluetooth 0x47022514 bt_err +EXPORT_SYMBOL net/bluetooth/bluetooth 0x485b55c2 l2cap_register_user +EXPORT_SYMBOL net/bluetooth/bluetooth 0x48736096 hci_mgmt_chan_unregister +EXPORT_SYMBOL net/bluetooth/bluetooth 0x4b40846c l2cap_conn_get +EXPORT_SYMBOL net/bluetooth/bluetooth 0x4da28286 l2cap_unregister_user +EXPORT_SYMBOL net/bluetooth/bluetooth 0x4e3bf6e8 hci_register_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x573ad653 bt_accept_enqueue +EXPORT_SYMBOL net/bluetooth/bluetooth 0x673612a3 hci_conn_check_secure +EXPORT_SYMBOL net/bluetooth/bluetooth 0x7589c217 hci_alloc_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x80bdba98 bt_sock_stream_recvmsg +EXPORT_SYMBOL net/bluetooth/bluetooth 0x83c74353 hci_conn_switch_role +EXPORT_SYMBOL net/bluetooth/bluetooth 0x8a1986d2 bt_sock_link +EXPORT_SYMBOL net/bluetooth/bluetooth 0x8fea24bd bt_sock_unregister +EXPORT_SYMBOL net/bluetooth/bluetooth 0x91c9a325 bt_to_errno +EXPORT_SYMBOL net/bluetooth/bluetooth 0xa3deb4e4 hci_unregister_cb +EXPORT_SYMBOL net/bluetooth/bluetooth 0xab746ac6 hci_conn_security +EXPORT_SYMBOL net/bluetooth/bluetooth 0xb386af5e bt_sock_ioctl +EXPORT_SYMBOL net/bluetooth/bluetooth 0xb93a9845 bt_procfs_cleanup +EXPORT_SYMBOL net/bluetooth/bluetooth 0xc08291b9 hci_resume_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xc3ec0548 hci_unregister_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xca5bbe19 bt_sock_register +EXPORT_SYMBOL net/bluetooth/bluetooth 0xcc1fb551 baswap +EXPORT_SYMBOL net/bluetooth/bluetooth 0xcd4cbb7f hci_register_cb +EXPORT_SYMBOL net/bluetooth/bluetooth 0xcdcee664 l2cap_chan_close +EXPORT_SYMBOL net/bluetooth/bluetooth 0xcdf867cf hci_suspend_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xce26f9c2 __hci_cmd_sync_ev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xd22a7f28 bt_sock_poll +EXPORT_SYMBOL net/bluetooth/bluetooth 0xd7442057 bt_info +EXPORT_SYMBOL net/bluetooth/bluetooth 0xd7cd53a5 __hci_cmd_sync +EXPORT_SYMBOL net/bluetooth/bluetooth 0xe06934d9 bt_accept_dequeue +EXPORT_SYMBOL net/bluetooth/bluetooth 0xe434a48c hci_recv_frame +EXPORT_SYMBOL net/bluetooth/bluetooth 0xe44100c3 bt_accept_unlink +EXPORT_SYMBOL net/bluetooth/bluetooth 0xe45dcc37 l2cap_is_socket +EXPORT_SYMBOL net/bluetooth/bluetooth 0xe5c069dd hci_free_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xe8089df0 bt_sock_wait_ready +EXPORT_SYMBOL net/bridge/bridge 0x38fffe26 br_should_route_hook +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0x09ec8fc0 ebt_unregister_table +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0x8053a6a9 ebt_do_table +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0xd0e158b4 ebt_register_table +EXPORT_SYMBOL net/caif/caif 0x1446b60a caif_client_register_refcnt +EXPORT_SYMBOL net/caif/caif 0x1f6c9f7c caif_enroll_dev +EXPORT_SYMBOL net/caif/caif 0x2a09f713 cfpkt_fromnative +EXPORT_SYMBOL net/caif/caif 0x329dbd06 cfpkt_info +EXPORT_SYMBOL net/caif/caif 0x36e3ec0b caif_connect_client +EXPORT_SYMBOL net/caif/caif 0x38701a7c cfcnfg_del_phy_layer +EXPORT_SYMBOL net/caif/caif 0x4a237e57 cfpkt_tonative +EXPORT_SYMBOL net/caif/caif 0x6a44fc70 cfpkt_extr_head +EXPORT_SYMBOL net/caif/caif 0x839ddb7b cfcnfg_set_phy_state +EXPORT_SYMBOL net/caif/caif 0x966d7de2 cfpkt_add_head +EXPORT_SYMBOL net/caif/caif 0x9e3e305d cfpkt_set_prio +EXPORT_SYMBOL net/caif/caif 0xa1da2c52 caif_disconnect_client +EXPORT_SYMBOL net/caif/caif 0xa4426787 get_cfcnfg +EXPORT_SYMBOL net/caif/caif 0xb7b6874e caif_free_client +EXPORT_SYMBOL net/caif/caif 0xe08b428a cfcnfg_add_phy_layer +EXPORT_SYMBOL net/can/can 0x0b836a25 can_send +EXPORT_SYMBOL net/can/can 0x17b3f863 can_ioctl +EXPORT_SYMBOL net/can/can 0x685cbcf7 can_proto_unregister +EXPORT_SYMBOL net/can/can 0x8d06a57b can_rx_register +EXPORT_SYMBOL net/can/can 0xb99d68cc can_rx_unregister +EXPORT_SYMBOL net/can/can 0xca8e68ae can_proto_register +EXPORT_SYMBOL net/ceph/libceph 0x0385af54 ceph_auth_destroy_authorizer +EXPORT_SYMBOL net/ceph/libceph 0x09290ab3 ceph_debugfs_init +EXPORT_SYMBOL net/ceph/libceph 0x0d1db2ff ceph_copy_from_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x0d85aaa8 ceph_release_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x0d867bcc ceph_messenger_fini +EXPORT_SYMBOL net/ceph/libceph 0x0da21dff ceph_destroy_client +EXPORT_SYMBOL net/ceph/libceph 0x0dd193d8 ceph_alloc_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x0f9b47db ceph_osdc_wait_request +EXPORT_SYMBOL net/ceph/libceph 0x1469188f ceph_auth_invalidate_authorizer +EXPORT_SYMBOL net/ceph/libceph 0x180d30c7 ceph_osdc_put_request +EXPORT_SYMBOL net/ceph/libceph 0x1e123f63 ceph_osdc_new_request +EXPORT_SYMBOL net/ceph/libceph 0x20d151cb ceph_osdc_setup +EXPORT_SYMBOL net/ceph/libceph 0x22581fe3 osd_req_op_extent_osd_data_pages +EXPORT_SYMBOL net/ceph/libceph 0x237ca381 ceph_monc_init +EXPORT_SYMBOL net/ceph/libceph 0x246d3f72 ceph_con_keepalive +EXPORT_SYMBOL net/ceph/libceph 0x2bad712b ceph_compare_options +EXPORT_SYMBOL net/ceph/libceph 0x2db717f3 ceph_destroy_options +EXPORT_SYMBOL net/ceph/libceph 0x2db97258 ceph_get_direct_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x2df6c1d2 ceph_osdc_flush_notifies +EXPORT_SYMBOL net/ceph/libceph 0x2e463b98 osd_req_op_extent_osd_data_pagelist +EXPORT_SYMBOL net/ceph/libceph 0x34a7cfbb ceph_msg_dump +EXPORT_SYMBOL net/ceph/libceph 0x3abec91f ceph_pr_addr +EXPORT_SYMBOL net/ceph/libceph 0x3f688151 ceph_put_snap_context +EXPORT_SYMBOL net/ceph/libceph 0x43e458f6 ceph_file_part +EXPORT_SYMBOL net/ceph/libceph 0x43efd647 ceph_calc_file_object_mapping +EXPORT_SYMBOL net/ceph/libceph 0x466b85b8 libceph_compatible +EXPORT_SYMBOL net/ceph/libceph 0x47a9920e ceph_pagelist_release +EXPORT_SYMBOL net/ceph/libceph 0x47cafe28 ceph_auth_update_authorizer +EXPORT_SYMBOL net/ceph/libceph 0x481f78f5 ceph_monc_do_statfs +EXPORT_SYMBOL net/ceph/libceph 0x4ea99e21 ceph_osdc_get_request +EXPORT_SYMBOL net/ceph/libceph 0x5139a10a osd_req_op_cls_request_data_pages +EXPORT_SYMBOL net/ceph/libceph 0x5379cea3 ceph_caps_for_mode +EXPORT_SYMBOL net/ceph/libceph 0x54cb7d0b ceph_con_send +EXPORT_SYMBOL net/ceph/libceph 0x57baf885 ceph_str_hash +EXPORT_SYMBOL net/ceph/libceph 0x58ec5c57 ceph_msg_data_add_pages +EXPORT_SYMBOL net/ceph/libceph 0x5a720474 ceph_pg_pool_name_by_id +EXPORT_SYMBOL net/ceph/libceph 0x5d1b0874 ceph_osdc_alloc_request +EXPORT_SYMBOL net/ceph/libceph 0x5fc92d98 osd_req_op_init +EXPORT_SYMBOL net/ceph/libceph 0x6225b687 osd_req_op_cls_response_data_pages +EXPORT_SYMBOL net/ceph/libceph 0x63758856 ceph_str_hash_name +EXPORT_SYMBOL net/ceph/libceph 0x6690cbe0 ceph_con_init +EXPORT_SYMBOL net/ceph/libceph 0x669e33da osd_req_op_watch_init +EXPORT_SYMBOL net/ceph/libceph 0x6b2e3bcd ceph_get_snap_context +EXPORT_SYMBOL net/ceph/libceph 0x6ebb2fa6 ceph_auth_verify_authorizer_reply +EXPORT_SYMBOL net/ceph/libceph 0x7174a2fc osd_req_op_raw_data_in_pages +EXPORT_SYMBOL net/ceph/libceph 0x721586d7 ceph_msg_new +EXPORT_SYMBOL net/ceph/libceph 0x76370747 ceph_auth_is_authenticated +EXPORT_SYMBOL net/ceph/libceph 0x767717e1 ceph_msg_put +EXPORT_SYMBOL net/ceph/libceph 0x79cfcda6 ceph_con_open +EXPORT_SYMBOL net/ceph/libceph 0x7ce73082 osd_req_op_alloc_hint_init +EXPORT_SYMBOL net/ceph/libceph 0x7e27a984 ceph_osdc_put_event +EXPORT_SYMBOL net/ceph/libceph 0x7ec27dff ceph_zero_page_vector_range +EXPORT_SYMBOL net/ceph/libceph 0x817973d6 ceph_auth_create_authorizer +EXPORT_SYMBOL net/ceph/libceph 0x8226137f ceph_calc_pg_primary +EXPORT_SYMBOL net/ceph/libceph 0x832f69a8 ceph_osdc_start_request +EXPORT_SYMBOL net/ceph/libceph 0x8a805076 ceph_create_client +EXPORT_SYMBOL net/ceph/libceph 0x8ad56169 ceph_monc_request_next_osdmap +EXPORT_SYMBOL net/ceph/libceph 0x8c09a708 osd_req_op_extent_osd_data +EXPORT_SYMBOL net/ceph/libceph 0x8cd3d566 ceph_print_client_options +EXPORT_SYMBOL net/ceph/libceph 0x8e36b1a8 osd_req_op_xattr_init +EXPORT_SYMBOL net/ceph/libceph 0x8fb7e566 ceph_osdc_set_request_linger +EXPORT_SYMBOL net/ceph/libceph 0x969c19ff ceph_copy_user_to_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x97e93dc0 ceph_open_session +EXPORT_SYMBOL net/ceph/libceph 0x99e36571 ceph_osdc_cleanup +EXPORT_SYMBOL net/ceph/libceph 0x9d91a790 ceph_msg_data_add_bio +EXPORT_SYMBOL net/ceph/libceph 0x9f534f4d ceph_buffer_release +EXPORT_SYMBOL net/ceph/libceph 0xa1ebde8f ceph_pagelist_truncate +EXPORT_SYMBOL net/ceph/libceph 0xa4dd6c90 ceph_pg_poolid_by_name +EXPORT_SYMBOL net/ceph/libceph 0xa71264f1 ceph_client_id +EXPORT_SYMBOL net/ceph/libceph 0xae3515ba ceph_create_snap_context +EXPORT_SYMBOL net/ceph/libceph 0xafb8a407 ceph_msgr_flush +EXPORT_SYMBOL net/ceph/libceph 0xb0f6e8b0 osd_req_op_cls_request_data_pagelist +EXPORT_SYMBOL net/ceph/libceph 0xb19dc152 ceph_pagelist_reserve +EXPORT_SYMBOL net/ceph/libceph 0xb54676fa ceph_msg_type_name +EXPORT_SYMBOL net/ceph/libceph 0xb5933cd0 ceph_copy_to_page_vector +EXPORT_SYMBOL net/ceph/libceph 0xb6081d6d ceph_msgr_exit +EXPORT_SYMBOL net/ceph/libceph 0xb7f94bb9 ceph_con_close +EXPORT_SYMBOL net/ceph/libceph 0xb9b224bb osd_req_op_extent_init +EXPORT_SYMBOL net/ceph/libceph 0xbe3d8624 osd_req_op_extent_update +EXPORT_SYMBOL net/ceph/libceph 0xbe9b56da ceph_osdc_readpages +EXPORT_SYMBOL net/ceph/libceph 0xc20d965c ceph_osdc_cancel_request +EXPORT_SYMBOL net/ceph/libceph 0xc28f6dd3 ceph_osdc_sync +EXPORT_SYMBOL net/ceph/libceph 0xc4a80955 ceph_debugfs_cleanup +EXPORT_SYMBOL net/ceph/libceph 0xc76e12af ceph_put_page_vector +EXPORT_SYMBOL net/ceph/libceph 0xc9f82b38 ceph_msgr_init +EXPORT_SYMBOL net/ceph/libceph 0xcb44e4f2 ceph_messenger_init +EXPORT_SYMBOL net/ceph/libceph 0xcb50a624 ceph_parse_ips +EXPORT_SYMBOL net/ceph/libceph 0xcd469c6a ceph_monc_do_get_version +EXPORT_SYMBOL net/ceph/libceph 0xcd956a33 osd_req_op_extent_osd_data_bio +EXPORT_SYMBOL net/ceph/libceph 0xd2c107bb ceph_flags_to_mode +EXPORT_SYMBOL net/ceph/libceph 0xd4c99402 osd_req_op_cls_response_data +EXPORT_SYMBOL net/ceph/libceph 0xd5383217 ceph_pagelist_set_cursor +EXPORT_SYMBOL net/ceph/libceph 0xd5472129 __ceph_open_session +EXPORT_SYMBOL net/ceph/libceph 0xd72978d7 ceph_msg_get +EXPORT_SYMBOL net/ceph/libceph 0xd813625e ceph_pagelist_append +EXPORT_SYMBOL net/ceph/libceph 0xd8e46eb0 osd_req_op_cls_init +EXPORT_SYMBOL net/ceph/libceph 0xdb04d656 ceph_msg_data_add_pagelist +EXPORT_SYMBOL net/ceph/libceph 0xdc834361 ceph_check_fsid +EXPORT_SYMBOL net/ceph/libceph 0xdd8e7550 ceph_parse_options +EXPORT_SYMBOL net/ceph/libceph 0xde0eb6ba ceph_pagelist_free_reserve +EXPORT_SYMBOL net/ceph/libceph 0xdfc7f068 ceph_monc_validate_auth +EXPORT_SYMBOL net/ceph/libceph 0xe0375620 ceph_osdc_build_request +EXPORT_SYMBOL net/ceph/libceph 0xe3535fff ceph_monc_got_mdsmap +EXPORT_SYMBOL net/ceph/libceph 0xe55d9bcd ceph_buffer_new +EXPORT_SYMBOL net/ceph/libceph 0xe57627fc ceph_monc_wait_osdmap +EXPORT_SYMBOL net/ceph/libceph 0xe9b30ee7 ceph_osdc_writepages +EXPORT_SYMBOL net/ceph/libceph 0xf3363426 ceph_oloc_oid_to_pg +EXPORT_SYMBOL net/ceph/libceph 0xf5e1e7dd ceph_osdc_cancel_event +EXPORT_SYMBOL net/ceph/libceph 0xf97485e2 ceph_monc_stop +EXPORT_SYMBOL net/ceph/libceph 0xfcaed55e ceph_osdc_create_event +EXPORT_SYMBOL net/ceph/libceph 0xfdc017c3 ceph_monc_open_session +EXPORT_SYMBOL net/dccp/dccp_ipv4 0x6a376918 dccp_syn_ack_timeout +EXPORT_SYMBOL net/dccp/dccp_ipv4 0x7cbe564d dccp_req_err +EXPORT_SYMBOL net/ieee802154/6lowpan/ieee802154_6lowpan 0x35e8bfa9 lowpan_frag_rcv +EXPORT_SYMBOL net/ieee802154/ieee802154 0x07b1ef54 wpan_phy_new +EXPORT_SYMBOL net/ieee802154/ieee802154 0x1709b020 wpan_phy_unregister +EXPORT_SYMBOL net/ieee802154/ieee802154 0x49aa752c wpan_phy_find +EXPORT_SYMBOL net/ieee802154/ieee802154 0x574d2b61 wpan_phy_register +EXPORT_SYMBOL net/ieee802154/ieee802154 0x7aaff784 wpan_phy_for_each +EXPORT_SYMBOL net/ieee802154/ieee802154 0xb1da552f wpan_phy_free +EXPORT_SYMBOL net/ipv4/fou 0x87596169 fou_encap_hlen +EXPORT_SYMBOL net/ipv4/fou 0xcad310b6 gue_build_header +EXPORT_SYMBOL net/ipv4/fou 0xf4d91f27 fou_build_header +EXPORT_SYMBOL net/ipv4/fou 0xfe4c1f2f gue_encap_hlen +EXPORT_SYMBOL net/ipv4/ip_tunnel 0x0bfec34a ip_tunnel_encap_del_ops +EXPORT_SYMBOL net/ipv4/ip_tunnel 0x11ec8e8c ip_tunnel_dst_reset_all +EXPORT_SYMBOL net/ipv4/ip_tunnel 0x3ea06043 ip_tunnel_get_iflink +EXPORT_SYMBOL net/ipv4/ip_tunnel 0x75c1415c ip_tunnel_encap +EXPORT_SYMBOL net/ipv4/ip_tunnel 0x7b15242f ip_tunnel_get_link_net +EXPORT_SYMBOL net/ipv4/ip_tunnel 0xfe5f6b0d ip_tunnel_encap_add_ops +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0x0746a6c0 arpt_unregister_table +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0x1599bb5e arpt_do_table +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0x86558d54 arpt_register_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0x210477ad ipt_unregister_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0x6a42c029 ipt_register_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0xe74aedfc ipt_do_table +EXPORT_SYMBOL net/ipv4/tunnel4 0x0372b271 xfrm4_tunnel_deregister +EXPORT_SYMBOL net/ipv4/tunnel4 0x372a7e45 xfrm4_tunnel_register +EXPORT_SYMBOL net/ipv4/udp_tunnel 0x425ea276 udp_sock_create4 +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0x2d770c3f ip6_tnl_get_link_net +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0x39972778 ip6_tnl_get_iflink +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0x5f828ede ip6_tnl_parse_tlv_enc_lim +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0xc427472e ip6_tnl_get_cap +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0x29661556 ip6t_do_table +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0xa6b9fadf ip6t_register_table +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0xbc699eb8 ip6t_unregister_table +EXPORT_SYMBOL net/ipv6/tunnel6 0x18b4aa07 xfrm6_tunnel_deregister +EXPORT_SYMBOL net/ipv6/tunnel6 0xefe233cd xfrm6_tunnel_register +EXPORT_SYMBOL net/ipv6/xfrm6_tunnel 0xc72edb28 xfrm6_tunnel_spi_lookup +EXPORT_SYMBOL net/ipv6/xfrm6_tunnel 0xe761f902 xfrm6_tunnel_alloc_spi +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x0251af34 ircomm_connect_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x10a0c1c3 ircomm_flow_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x28395177 ircomm_disconnect_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x578e39e0 ircomm_data_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x6618b443 ircomm_close +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x6d7b70db ircomm_open +EXPORT_SYMBOL net/irda/ircomm/ircomm 0xdf36ff47 ircomm_control_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0xfe77fe96 ircomm_connect_response +EXPORT_SYMBOL net/irda/irda 0x0064e0ea hashbin_get_first +EXPORT_SYMBOL net/irda/irda 0x06a3ee58 irias_new_integer_value +EXPORT_SYMBOL net/irda/irda 0x072a0417 async_unwrap_char +EXPORT_SYMBOL net/irda/irda 0x07d3647c irlmp_register_service +EXPORT_SYMBOL net/irda/irda 0x0a93a996 irlap_close +EXPORT_SYMBOL net/irda/irda 0x0b034c8f irda_notify_init +EXPORT_SYMBOL net/irda/irda 0x0b2334b1 irttp_data_request +EXPORT_SYMBOL net/irda/irda 0x154a6dfe irttp_close_tsap +EXPORT_SYMBOL net/irda/irda 0x1e6cade0 irias_add_integer_attrib +EXPORT_SYMBOL net/irda/irda 0x3269d4c2 irttp_disconnect_request +EXPORT_SYMBOL net/irda/irda 0x33cbe2c6 proc_irda +EXPORT_SYMBOL net/irda/irda 0x354be669 irlmp_data_request +EXPORT_SYMBOL net/irda/irda 0x3e56064f hashbin_new +EXPORT_SYMBOL net/irda/irda 0x3eda88a1 irttp_udata_request +EXPORT_SYMBOL net/irda/irda 0x448b8aaa irda_qos_bits_to_value +EXPORT_SYMBOL net/irda/irda 0x46c1c4a2 irlmp_unregister_service +EXPORT_SYMBOL net/irda/irda 0x4bbf1861 irttp_flow_request +EXPORT_SYMBOL net/irda/irda 0x601bda46 hashbin_remove +EXPORT_SYMBOL net/irda/irda 0x67947fe3 irda_device_set_media_busy +EXPORT_SYMBOL net/irda/irda 0x6b043eba irda_init_max_qos_capabilies +EXPORT_SYMBOL net/irda/irda 0x6b5fbcef hashbin_get_next +EXPORT_SYMBOL net/irda/irda 0x6d298440 irlmp_connect_response +EXPORT_SYMBOL net/irda/irda 0x6e0ab3c7 irias_add_string_attrib +EXPORT_SYMBOL net/irda/irda 0x6e505bff alloc_irdadev +EXPORT_SYMBOL net/irda/irda 0x7042bc54 irlmp_register_client +EXPORT_SYMBOL net/irda/irda 0x741d51cc irlmp_open_lsap +EXPORT_SYMBOL net/irda/irda 0x763e54a4 irlmp_unregister_client +EXPORT_SYMBOL net/irda/irda 0x7957f728 irlmp_update_client +EXPORT_SYMBOL net/irda/irda 0x7f52a8bf irda_param_insert +EXPORT_SYMBOL net/irda/irda 0x85d88217 irias_delete_object +EXPORT_SYMBOL net/irda/irda 0x91815586 irda_param_pack +EXPORT_SYMBOL net/irda/irda 0x94a824db irda_param_extract_all +EXPORT_SYMBOL net/irda/irda 0xa1d41e58 hashbin_delete +EXPORT_SYMBOL net/irda/irda 0xaa557515 irias_new_object +EXPORT_SYMBOL net/irda/irda 0xaf615c8e irttp_connect_request +EXPORT_SYMBOL net/irda/irda 0xb9394173 irias_delete_value +EXPORT_SYMBOL net/irda/irda 0xbcd3ef13 irias_object_change_attribute +EXPORT_SYMBOL net/irda/irda 0xbe40ace9 irlmp_discovery_request +EXPORT_SYMBOL net/irda/irda 0xc67c5dac irttp_connect_response +EXPORT_SYMBOL net/irda/irda 0xc68e43be irias_add_octseq_attrib +EXPORT_SYMBOL net/irda/irda 0xc8c2cacd irttp_dup +EXPORT_SYMBOL net/irda/irda 0xcb684ecd irttp_open_tsap +EXPORT_SYMBOL net/irda/irda 0xcead7dbb hashbin_find +EXPORT_SYMBOL net/irda/irda 0xd2108314 hashbin_insert +EXPORT_SYMBOL net/irda/irda 0xd48eb00a iriap_open +EXPORT_SYMBOL net/irda/irda 0xd5ddd2eb irlmp_close_lsap +EXPORT_SYMBOL net/irda/irda 0xd6deeaae irda_setup_dma +EXPORT_SYMBOL net/irda/irda 0xd71b5ee7 irlmp_disconnect_request +EXPORT_SYMBOL net/irda/irda 0xdbcba005 async_wrap_skb +EXPORT_SYMBOL net/irda/irda 0xdcdb0364 irlmp_connect_request +EXPORT_SYMBOL net/irda/irda 0xde4c6b3c irlmp_service_to_hint +EXPORT_SYMBOL net/irda/irda 0xe3463529 hashbin_lock_find +EXPORT_SYMBOL net/irda/irda 0xe3bde43e irias_insert_object +EXPORT_SYMBOL net/irda/irda 0xedd521c2 irlmp_get_discoveries +EXPORT_SYMBOL net/irda/irda 0xf0a694a1 irias_find_object +EXPORT_SYMBOL net/irda/irda 0xf17a8b28 iriap_getvaluebyclass_request +EXPORT_SYMBOL net/irda/irda 0xf2fabcad irlap_open +EXPORT_SYMBOL net/irda/irda 0xf5876b95 hashbin_remove_this +EXPORT_SYMBOL net/irda/irda 0xfb54e1f1 iriap_close +EXPORT_SYMBOL net/l2tp/l2tp_core 0x04da8861 l2tp_recv_common +EXPORT_SYMBOL net/lapb/lapb 0x1e02f436 lapb_unregister +EXPORT_SYMBOL net/lapb/lapb 0x33c9c28d lapb_data_received +EXPORT_SYMBOL net/lapb/lapb 0x55a0be3a lapb_register +EXPORT_SYMBOL net/lapb/lapb 0x741fe1c7 lapb_getparms +EXPORT_SYMBOL net/lapb/lapb 0x81e037d2 lapb_connect_request +EXPORT_SYMBOL net/lapb/lapb 0x9345103c lapb_disconnect_request +EXPORT_SYMBOL net/lapb/lapb 0xce51777a lapb_setparms +EXPORT_SYMBOL net/lapb/lapb 0xd8fd8986 lapb_data_request +EXPORT_SYMBOL net/llc/llc 0x2607ac0e llc_sap_find +EXPORT_SYMBOL net/llc/llc 0x3763a329 llc_sap_open +EXPORT_SYMBOL net/llc/llc 0x38b92846 llc_remove_pack +EXPORT_SYMBOL net/llc/llc 0x52d7b2fd llc_sap_list +EXPORT_SYMBOL net/llc/llc 0x57fe7cd9 llc_build_and_send_ui_pkt +EXPORT_SYMBOL net/llc/llc 0x96889f40 llc_sap_close +EXPORT_SYMBOL net/llc/llc 0x9afdd7c2 llc_mac_hdr_init +EXPORT_SYMBOL net/llc/llc 0xc255bb27 llc_add_pack +EXPORT_SYMBOL net/llc/llc 0xc5a6c94c llc_set_station_handler +EXPORT_SYMBOL net/mac80211/mac80211 0x02166686 ieee80211_get_tkip_p1k_iv +EXPORT_SYMBOL net/mac80211/mac80211 0x0702be70 ieee80211_free_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x0750f071 ieee80211_sta_set_buffered +EXPORT_SYMBOL net/mac80211/mac80211 0x0c343e2e ieee80211_get_tx_rates +EXPORT_SYMBOL net/mac80211/mac80211 0x10d68bb7 ieee80211_chswitch_done +EXPORT_SYMBOL net/mac80211/mac80211 0x10f8cef4 ieee80211_beacon_get_tim +EXPORT_SYMBOL net/mac80211/mac80211 0x124dc079 ieee80211_find_sta +EXPORT_SYMBOL net/mac80211/mac80211 0x15dd3432 ieee80211_rts_get +EXPORT_SYMBOL net/mac80211/mac80211 0x19050ed5 ieee80211_tx_status_noskb +EXPORT_SYMBOL net/mac80211/mac80211 0x19d4f3aa ieee80211_start_tx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0x1aa91f33 __ieee80211_get_assoc_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0x22b3aab0 ieee80211_ctstoself_get +EXPORT_SYMBOL net/mac80211/mac80211 0x23bbbfae ieee80211_reserve_tid +EXPORT_SYMBOL net/mac80211/mac80211 0x23c4eb5e ieee80211_stop_rx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0x243f0bac ieee80211_report_low_ack +EXPORT_SYMBOL net/mac80211/mac80211 0x25862027 ieee80211_stop_tx_ba_cb_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0x265b0063 __ieee80211_get_rx_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0x26f773de ieee80211_free_txskb +EXPORT_SYMBOL net/mac80211/mac80211 0x2a9394c7 ieee80211_rate_control_register +EXPORT_SYMBOL net/mac80211/mac80211 0x2fe1b379 ieee80211_pspoll_get +EXPORT_SYMBOL net/mac80211/mac80211 0x3458b83f ieee80211_rts_duration +EXPORT_SYMBOL net/mac80211/mac80211 0x35646580 ieee80211_cqm_beacon_loss_notify +EXPORT_SYMBOL net/mac80211/mac80211 0x37ca9c9a ieee80211_tx_status +EXPORT_SYMBOL net/mac80211/mac80211 0x3869f08e ieee80211_aes_cmac_calculate_k1_k2 +EXPORT_SYMBOL net/mac80211/mac80211 0x3dc79250 rate_control_set_rates +EXPORT_SYMBOL net/mac80211/mac80211 0x41d4c376 ieee80211_stop_queues +EXPORT_SYMBOL net/mac80211/mac80211 0x453d74c1 ieee80211_enable_rssi_reports +EXPORT_SYMBOL net/mac80211/mac80211 0x47d951c8 ieee80211_sched_scan_results +EXPORT_SYMBOL net/mac80211/mac80211 0x4a6a6697 ieee80211_sta_block_awake +EXPORT_SYMBOL net/mac80211/mac80211 0x537adcdc ieee80211_ap_probereq_get +EXPORT_SYMBOL net/mac80211/mac80211 0x5762c35e ieee80211_stop_tx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0x5b4cc9a7 ieee80211_register_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x5bf38662 ieee80211_send_bar +EXPORT_SYMBOL net/mac80211/mac80211 0x5d2e637f __ieee80211_get_tx_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0x5fd5e625 ieee80211_queue_stopped +EXPORT_SYMBOL net/mac80211/mac80211 0x63edbceb ieee80211_radar_detected +EXPORT_SYMBOL net/mac80211/mac80211 0x679f67ac ieee80211_proberesp_get +EXPORT_SYMBOL net/mac80211/mac80211 0x69de096c ieee80211_get_tkip_rx_p1k +EXPORT_SYMBOL net/mac80211/mac80211 0x6bef2ea4 ieee80211_connection_loss +EXPORT_SYMBOL net/mac80211/mac80211 0x6e0dcd14 ieee80211_tdls_oper_request +EXPORT_SYMBOL net/mac80211/mac80211 0x7642eeae ieee80211_start_rx_ba_session_offl +EXPORT_SYMBOL net/mac80211/mac80211 0x76b9ef28 ieee80211_get_key_rx_seq +EXPORT_SYMBOL net/mac80211/mac80211 0x77ea65c4 ieee80211_update_p2p_noa +EXPORT_SYMBOL net/mac80211/mac80211 0x80c5925d ieee80211_rate_control_unregister +EXPORT_SYMBOL net/mac80211/mac80211 0x810ea862 ieee80211_stop_queue +EXPORT_SYMBOL net/mac80211/mac80211 0x816f5886 ieee80211_generic_frame_duration +EXPORT_SYMBOL net/mac80211/mac80211 0x8205d66e ieee80211_queue_delayed_work +EXPORT_SYMBOL net/mac80211/mac80211 0x82ccdcd2 ieee80211_sta_ps_transition +EXPORT_SYMBOL net/mac80211/mac80211 0x8328624e ieee80211_scan_completed +EXPORT_SYMBOL net/mac80211/mac80211 0x88024233 ieee80211_sched_scan_stopped +EXPORT_SYMBOL net/mac80211/mac80211 0x8875819a ieee80211_beacon_get_template +EXPORT_SYMBOL net/mac80211/mac80211 0x8a70d0c1 ieee80211_get_tkip_p2k +EXPORT_SYMBOL net/mac80211/mac80211 0x904c22f7 ieee80211_report_wowlan_wakeup +EXPORT_SYMBOL net/mac80211/mac80211 0x94f7c6ed ieee80211_disable_rssi_reports +EXPORT_SYMBOL net/mac80211/mac80211 0x95ba3d78 ieee80211_rx +EXPORT_SYMBOL net/mac80211/mac80211 0x9f267642 ieee80211_beacon_loss +EXPORT_SYMBOL net/mac80211/mac80211 0x9f5eb5c0 ieee80211_unregister_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x9fb31434 ieee80211_alloc_hw_nm +EXPORT_SYMBOL net/mac80211/mac80211 0xa1342c73 ieee80211_sta_eosp +EXPORT_SYMBOL net/mac80211/mac80211 0xac143ff0 ieee80211_unreserve_tid +EXPORT_SYMBOL net/mac80211/mac80211 0xb15d1191 ieee80211_restart_hw +EXPORT_SYMBOL net/mac80211/mac80211 0xb1aaef91 ieee80211_get_key_tx_seq +EXPORT_SYMBOL net/mac80211/mac80211 0xb1beb0ca ieee80211_iter_keys +EXPORT_SYMBOL net/mac80211/mac80211 0xb644c10e ieee80211_cqm_rssi_notify +EXPORT_SYMBOL net/mac80211/mac80211 0xb7b510da ieee80211_wake_queue +EXPORT_SYMBOL net/mac80211/mac80211 0xb97e1849 ieee80211_csa_finish +EXPORT_SYMBOL net/mac80211/mac80211 0xba14ca0a ieee80211_queue_work +EXPORT_SYMBOL net/mac80211/mac80211 0xba6c1e30 rate_control_send_low +EXPORT_SYMBOL net/mac80211/mac80211 0xbe2978d0 ieee80211_csa_update_counter +EXPORT_SYMBOL net/mac80211/mac80211 0xc133354d ieee80211_nullfunc_get +EXPORT_SYMBOL net/mac80211/mac80211 0xc1584708 ieee80211_tx_status_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0xc228e2d2 ieee80211_probereq_get +EXPORT_SYMBOL net/mac80211/mac80211 0xc6ec8110 __ieee80211_get_radio_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0xcc12080e ieee80211_get_buffered_bc +EXPORT_SYMBOL net/mac80211/mac80211 0xd4c767fd __ieee80211_create_tpt_led_trigger +EXPORT_SYMBOL net/mac80211/mac80211 0xd6c3475e ieee80211_ctstoself_duration +EXPORT_SYMBOL net/mac80211/mac80211 0xd72625cb ieee80211_parse_p2p_noa +EXPORT_SYMBOL net/mac80211/mac80211 0xd81e2180 ieee80211_start_tx_ba_cb_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0xda84b99f wiphy_to_ieee80211_hw +EXPORT_SYMBOL net/mac80211/mac80211 0xdead8d93 ieee80211_csa_is_complete +EXPORT_SYMBOL net/mac80211/mac80211 0xe003098e ieee80211_stop_rx_ba_session_offl +EXPORT_SYMBOL net/mac80211/mac80211 0xe0b47cf9 ieee80211_rx_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0xe7b3bf2b ieee80211_tx_dequeue +EXPORT_SYMBOL net/mac80211/mac80211 0xe9b4ef3a ieee80211_tx_prepare_skb +EXPORT_SYMBOL net/mac80211/mac80211 0xfe386895 ieee80211_wake_queues +EXPORT_SYMBOL net/mac802154/mac802154 0x0d824e77 ieee802154_register_hw +EXPORT_SYMBOL net/mac802154/mac802154 0x18ccf70f ieee802154_wake_queue +EXPORT_SYMBOL net/mac802154/mac802154 0x565d4227 ieee802154_rx +EXPORT_SYMBOL net/mac802154/mac802154 0x67defbc2 ieee802154_free_hw +EXPORT_SYMBOL net/mac802154/mac802154 0x6d7e7aea ieee802154_alloc_hw +EXPORT_SYMBOL net/mac802154/mac802154 0xa7fff989 ieee802154_stop_queue +EXPORT_SYMBOL net/mac802154/mac802154 0xbce48e66 ieee802154_rx_irqsafe +EXPORT_SYMBOL net/mac802154/mac802154 0xc3d5e936 ieee802154_xmit_complete +EXPORT_SYMBOL net/mac802154/mac802154 0xc77eff25 ieee802154_unregister_hw +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x06b1f710 register_ip_vs_app +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x18eda35d ip_vs_proto_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x4249717e ip_vs_tcp_conn_listen +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x4dd8fa2c ip_vs_conn_out_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x4fa4b933 register_ip_vs_app_inc +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x557d3d21 register_ip_vs_scheduler +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x64de6461 ip_vs_proto_data_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x7a794c8f ip_vs_scheduler_err +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x9c02477e ip_vs_conn_put +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xa3d20d15 ip_vs_conn_in_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xa62903c8 ip_vs_nfct_expect_related +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xae079773 ip_vs_conn_new +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xcb02061f unregister_ip_vs_app +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xd831a1a2 ip_vs_proto_name +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xe9a8ec6a unregister_ip_vs_scheduler +EXPORT_SYMBOL net/netfilter/nf_conntrack 0x001906ba __nf_ct_ext_add_length +EXPORT_SYMBOL net/netfilter/nf_conntrack 0x505bb156 __nf_ct_ext_destroy +EXPORT_SYMBOL net/netfilter/nf_conntrack 0x534302c4 nf_conntrack_untracked +EXPORT_SYMBOL net/netfilter/nf_conntrack_pptp 0x827cc6a1 pptp_msg_name +EXPORT_SYMBOL net/netfilter/nf_nat 0x19942bd6 nf_nat_follow_master +EXPORT_SYMBOL net/netfilter/nf_nat 0x2395b892 nf_nat_setup_info +EXPORT_SYMBOL net/netfilter/nf_nat 0x7e962d05 nf_nat_mangle_udp_packet +EXPORT_SYMBOL net/netfilter/nf_nat 0xb25cdab3 nf_xfrm_me_harder +EXPORT_SYMBOL net/netfilter/nf_nat 0xfa27ad85 nf_nat_used_tuple +EXPORT_SYMBOL net/netfilter/nf_nat 0xfbb19180 __nf_nat_mangle_tcp_packet +EXPORT_SYMBOL net/netfilter/x_tables 0x092d0854 xt_unregister_targets +EXPORT_SYMBOL net/netfilter/x_tables 0x0e0b1b31 xt_register_matches +EXPORT_SYMBOL net/netfilter/x_tables 0x1d03745f xt_find_target +EXPORT_SYMBOL net/netfilter/x_tables 0x221679b9 xt_unregister_matches +EXPORT_SYMBOL net/netfilter/x_tables 0x28b6c30a xt_register_target +EXPORT_SYMBOL net/netfilter/x_tables 0x482d26fd xt_alloc_table_info +EXPORT_SYMBOL net/netfilter/x_tables 0x5121ddbe xt_register_match +EXPORT_SYMBOL net/netfilter/x_tables 0x54e8a479 xt_unregister_target +EXPORT_SYMBOL net/netfilter/x_tables 0xd111d2e8 xt_unregister_match +EXPORT_SYMBOL net/netfilter/x_tables 0xd1a21986 xt_free_table_info +EXPORT_SYMBOL net/netfilter/x_tables 0xea621e24 xt_register_targets +EXPORT_SYMBOL net/netfilter/x_tables 0xf2ee53d6 xt_find_match +EXPORT_SYMBOL net/nfc/hci/hci 0x0f857418 nfc_hci_unregister_device +EXPORT_SYMBOL net/nfc/hci/hci 0x12b9abc0 nfc_hci_set_param +EXPORT_SYMBOL net/nfc/hci/hci 0x287f1471 nfc_hci_allocate_device +EXPORT_SYMBOL net/nfc/hci/hci 0x2b9927b1 nfc_hci_driver_failure +EXPORT_SYMBOL net/nfc/hci/hci 0x3e30c095 nfc_hci_disconnect_all_gates +EXPORT_SYMBOL net/nfc/hci/hci 0x3f6176f9 nfc_hci_reset_pipes +EXPORT_SYMBOL net/nfc/hci/hci 0x43028a27 nfc_hci_result_to_errno +EXPORT_SYMBOL net/nfc/hci/hci 0x47357950 nfc_hci_register_device +EXPORT_SYMBOL net/nfc/hci/hci 0x4c8ebe8f nfc_hci_send_cmd_async +EXPORT_SYMBOL net/nfc/hci/hci 0x58703005 nfc_hci_reset_pipes_per_host +EXPORT_SYMBOL net/nfc/hci/hci 0x5cad9ac3 nfc_hci_recv_frame +EXPORT_SYMBOL net/nfc/hci/hci 0x6b2709ae nfc_hci_connect_gate +EXPORT_SYMBOL net/nfc/hci/hci 0x8902070f nfc_hci_send_event +EXPORT_SYMBOL net/nfc/hci/hci 0xb0eb1298 nfc_hci_free_device +EXPORT_SYMBOL net/nfc/hci/hci 0xb7fa3b98 nfc_hci_target_discovered +EXPORT_SYMBOL net/nfc/hci/hci 0xbca0b4fd nfc_hci_sak_to_protocol +EXPORT_SYMBOL net/nfc/hci/hci 0xc75cf283 nfc_hci_get_clientdata +EXPORT_SYMBOL net/nfc/hci/hci 0xdaa2f6c2 nfc_hci_get_param +EXPORT_SYMBOL net/nfc/hci/hci 0xdfd8ced9 nfc_hci_disconnect_gate +EXPORT_SYMBOL net/nfc/hci/hci 0xed767cb8 nfc_hci_send_cmd +EXPORT_SYMBOL net/nfc/hci/hci 0xf447f2e2 nfc_hci_set_clientdata +EXPORT_SYMBOL net/nfc/nci/nci 0x08ed8d71 nci_hci_send_event +EXPORT_SYMBOL net/nfc/nci/nci 0x25d65c9d nci_prop_cmd +EXPORT_SYMBOL net/nfc/nci/nci 0x2f94ea29 nci_hci_dev_session_init +EXPORT_SYMBOL net/nfc/nci/nci 0x33f07d26 nci_hci_connect_gate +EXPORT_SYMBOL net/nfc/nci/nci 0x609ca14b nci_nfcee_discover +EXPORT_SYMBOL net/nfc/nci/nci 0x62747c44 nci_hci_send_cmd +EXPORT_SYMBOL net/nfc/nci/nci 0x63e075fd nci_core_conn_create +EXPORT_SYMBOL net/nfc/nci/nci 0x6c39d1c6 nci_recv_frame +EXPORT_SYMBOL net/nfc/nci/nci 0x6f9c459a nci_free_device +EXPORT_SYMBOL net/nfc/nci/nci 0x88ff3cb2 nci_hci_get_param +EXPORT_SYMBOL net/nfc/nci/nci 0x90a351f9 nci_allocate_device +EXPORT_SYMBOL net/nfc/nci/nci 0x90c9ad54 nci_set_config +EXPORT_SYMBOL net/nfc/nci/nci 0x98211c63 nci_core_conn_close +EXPORT_SYMBOL net/nfc/nci/nci 0xb85cbcce nci_register_device +EXPORT_SYMBOL net/nfc/nci/nci 0xb9066258 nci_req_complete +EXPORT_SYMBOL net/nfc/nci/nci 0xba490602 nci_to_errno +EXPORT_SYMBOL net/nfc/nci/nci 0xc9d49cae nci_unregister_device +EXPORT_SYMBOL net/nfc/nci/nci 0xd1424b09 nci_hci_set_param +EXPORT_SYMBOL net/nfc/nci/nci 0xd6259151 nci_hci_open_pipe +EXPORT_SYMBOL net/nfc/nci/nci 0xe3e8c2da nci_nfcee_mode_set +EXPORT_SYMBOL net/nfc/nfc 0x0d3e349a nfc_tm_activated +EXPORT_SYMBOL net/nfc/nfc 0x1081264d nfc_tm_data_received +EXPORT_SYMBOL net/nfc/nfc 0x35c052e5 nfc_fw_download_done +EXPORT_SYMBOL net/nfc/nfc 0x3d13e736 nfc_alloc_recv_skb +EXPORT_SYMBOL net/nfc/nfc 0x405d5b5c nfc_class +EXPORT_SYMBOL net/nfc/nfc 0x6b48bc3c nfc_proto_register +EXPORT_SYMBOL net/nfc/nfc 0x82735629 nfc_register_device +EXPORT_SYMBOL net/nfc/nfc 0x8df994a4 nfc_remove_se +EXPORT_SYMBOL net/nfc/nfc 0x8e1e90b9 nfc_target_lost +EXPORT_SYMBOL net/nfc/nfc 0x99281b32 nfc_send_to_raw_sock +EXPORT_SYMBOL net/nfc/nfc 0xa1d00377 nfc_unregister_device +EXPORT_SYMBOL net/nfc/nfc 0xa33e8696 nfc_proto_unregister +EXPORT_SYMBOL net/nfc/nfc 0xbae2e0f4 nfc_se_transaction +EXPORT_SYMBOL net/nfc/nfc 0xc53d72bb nfc_find_se +EXPORT_SYMBOL net/nfc/nfc 0xd44c28ed nfc_tm_deactivated +EXPORT_SYMBOL net/nfc/nfc 0xd6a68166 nfc_set_remote_general_bytes +EXPORT_SYMBOL net/nfc/nfc 0xdddac960 nfc_driver_failure +EXPORT_SYMBOL net/nfc/nfc 0xe3a0082a nfc_dep_link_is_up +EXPORT_SYMBOL net/nfc/nfc 0xec5dab83 nfc_add_se +EXPORT_SYMBOL net/nfc/nfc 0xeeafad04 nfc_allocate_device +EXPORT_SYMBOL net/nfc/nfc 0xf242c7e6 nfc_get_local_general_bytes +EXPORT_SYMBOL net/nfc/nfc 0xf97de64b nfc_targets_found +EXPORT_SYMBOL net/nfc/nfc_digital 0x1076ecb3 nfc_digital_free_device +EXPORT_SYMBOL net/nfc/nfc_digital 0x2bac357d nfc_digital_register_device +EXPORT_SYMBOL net/nfc/nfc_digital 0x8ce27c3e nfc_digital_allocate_device +EXPORT_SYMBOL net/nfc/nfc_digital 0xa9b572ac nfc_digital_unregister_device +EXPORT_SYMBOL net/phonet/phonet 0x338b14f3 pn_sock_hash +EXPORT_SYMBOL net/phonet/phonet 0x5d296781 phonet_stream_ops +EXPORT_SYMBOL net/phonet/phonet 0x64ff5f16 pn_skb_send +EXPORT_SYMBOL net/phonet/phonet 0xa9d3f569 phonet_proto_register +EXPORT_SYMBOL net/phonet/phonet 0xbf558eb9 pn_sock_unhash +EXPORT_SYMBOL net/phonet/phonet 0xd5f4edae pn_sock_get_port +EXPORT_SYMBOL net/phonet/phonet 0xe8331d31 phonet_header_ops +EXPORT_SYMBOL net/phonet/phonet 0xffe87853 phonet_proto_unregister +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x00358f81 rxrpc_kernel_end_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x0987ec32 rxrpc_kernel_data_delivered +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x159fbd18 rxrpc_kernel_reject_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x3d9b1b20 rxrpc_kernel_abort_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x430a2480 rxrpc_kernel_begin_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x453a8a6e rxrpc_kernel_free_skb +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x51648dfe rxrpc_get_null_key +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x7c20477d rxrpc_get_server_data_key +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x80f922bc rxrpc_kernel_intercept_rx_messages +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x82d5c9d1 rxrpc_kernel_get_error_number +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x9de0dd7a rxrpc_kernel_is_data_last +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xc8cfa90f rxrpc_kernel_send_data +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xdd19896b key_type_rxrpc +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xe43bc657 rxrpc_kernel_accept_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xf4310ff5 rxrpc_kernel_get_abort_code +EXPORT_SYMBOL net/sctp/sctp 0x59144c0d sctp_do_peeloff +EXPORT_SYMBOL net/sunrpc/auth_gss/auth_rpcgss 0x6932ae61 gss_mech_put +EXPORT_SYMBOL net/sunrpc/auth_gss/auth_rpcgss 0xb641dc8a gss_pseudoflavor_to_service +EXPORT_SYMBOL net/sunrpc/auth_gss/auth_rpcgss 0xbc618e8e gss_mech_get +EXPORT_SYMBOL net/sunrpc/sunrpc 0x6d98e1d0 xdr_truncate_encode +EXPORT_SYMBOL net/sunrpc/sunrpc 0xe6677b04 svc_pool_stats_open +EXPORT_SYMBOL net/sunrpc/sunrpc 0xfac562b0 xdr_restrict_buflen +EXPORT_SYMBOL net/wimax/wimax 0xb514915c wimax_rfkill +EXPORT_SYMBOL net/wimax/wimax 0xf0b75438 wimax_reset +EXPORT_SYMBOL net/wireless/cfg80211 0x00a35ff0 cfg80211_ref_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x01fffd78 regulatory_hint +EXPORT_SYMBOL net/wireless/cfg80211 0x09c64fbd ieee80211_frequency_to_channel +EXPORT_SYMBOL net/wireless/cfg80211 0x0c4bf721 cfg80211_put_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x0dfb3992 cfg80211_rx_spurious_frame +EXPORT_SYMBOL net/wireless/cfg80211 0x1121dd8a cfg80211_rx_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0x13525b8b cfg80211_tx_mlme_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0x144282ff __cfg80211_send_event_skb +EXPORT_SYMBOL net/wireless/cfg80211 0x14d25276 cfg80211_disconnected +EXPORT_SYMBOL net/wireless/cfg80211 0x1879fcbd bridge_tunnel_header +EXPORT_SYMBOL net/wireless/cfg80211 0x19531ea0 cfg80211_probe_status +EXPORT_SYMBOL net/wireless/cfg80211 0x19e03378 cfg80211_get_p2p_attr +EXPORT_SYMBOL net/wireless/cfg80211 0x1b8b8e39 cfg80211_get_station +EXPORT_SYMBOL net/wireless/cfg80211 0x1ed48d9b cfg80211_get_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x1ffd3612 cfg80211_reg_can_beacon_relax +EXPORT_SYMBOL net/wireless/cfg80211 0x2037bdc6 wiphy_rfkill_stop_polling +EXPORT_SYMBOL net/wireless/cfg80211 0x221f5f8a cfg80211_chandef_usable +EXPORT_SYMBOL net/wireless/cfg80211 0x22fdc117 cfg80211_crit_proto_stopped +EXPORT_SYMBOL net/wireless/cfg80211 0x257945f1 __cfg80211_alloc_event_skb +EXPORT_SYMBOL net/wireless/cfg80211 0x27a3f1e9 cfg80211_connect_result +EXPORT_SYMBOL net/wireless/cfg80211 0x2805f780 wiphy_rfkill_set_hw_state +EXPORT_SYMBOL net/wireless/cfg80211 0x2a1c1736 cfg80211_unlink_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x2bcadf4c cfg80211_ch_switch_started_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x32e15f5b wiphy_unregister +EXPORT_SYMBOL net/wireless/cfg80211 0x3d470c4d cfg80211_chandef_compatible +EXPORT_SYMBOL net/wireless/cfg80211 0x3d5d2600 __ieee80211_get_channel +EXPORT_SYMBOL net/wireless/cfg80211 0x3e285fec cfg80211_chandef_valid +EXPORT_SYMBOL net/wireless/cfg80211 0x41c47014 cfg80211_stop_iface +EXPORT_SYMBOL net/wireless/cfg80211 0x41e7bb3f cfg80211_michael_mic_failure +EXPORT_SYMBOL net/wireless/cfg80211 0x420d72b6 cfg80211_gtk_rekey_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x4225393d cfg80211_sched_scan_results +EXPORT_SYMBOL net/wireless/cfg80211 0x4602ad10 cfg80211_del_sta_sinfo +EXPORT_SYMBOL net/wireless/cfg80211 0x495457ff cfg80211_calculate_bitrate +EXPORT_SYMBOL net/wireless/cfg80211 0x50214c28 ieee80211_bss_get_ie +EXPORT_SYMBOL net/wireless/cfg80211 0x525a5443 cfg80211_rx_unprot_mlme_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0x539c97bd cfg80211_check_station_change +EXPORT_SYMBOL net/wireless/cfg80211 0x57d55165 cfg80211_notify_new_peer_candidate +EXPORT_SYMBOL net/wireless/cfg80211 0x585932b4 cfg80211_ft_event +EXPORT_SYMBOL net/wireless/cfg80211 0x58636fc1 cfg80211_auth_timeout +EXPORT_SYMBOL net/wireless/cfg80211 0x593ac954 regulatory_set_wiphy_regd +EXPORT_SYMBOL net/wireless/cfg80211 0x5c0568f1 wiphy_apply_custom_regulatory +EXPORT_SYMBOL net/wireless/cfg80211 0x5c28a4d9 cfg80211_sched_scan_stopped +EXPORT_SYMBOL net/wireless/cfg80211 0x5d4f582a freq_reg_info +EXPORT_SYMBOL net/wireless/cfg80211 0x618b079f cfg80211_report_wowlan_wakeup +EXPORT_SYMBOL net/wireless/cfg80211 0x653733d8 ieee80211_get_hdrlen_from_skb +EXPORT_SYMBOL net/wireless/cfg80211 0x67597d3e cfg80211_unregister_wdev +EXPORT_SYMBOL net/wireless/cfg80211 0x69b18f43 rfc1042_header +EXPORT_SYMBOL net/wireless/cfg80211 0x6d6cb9ad ieee80211_operating_class_to_band +EXPORT_SYMBOL net/wireless/cfg80211 0x73674664 cfg80211_cqm_pktloss_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x765b4dda cfg80211_radar_event +EXPORT_SYMBOL net/wireless/cfg80211 0x77c79c59 cfg80211_cqm_beacon_loss_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x7b15512a cfg80211_cqm_txe_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x7b8c87af wiphy_register +EXPORT_SYMBOL net/wireless/cfg80211 0x7c1aa660 cfg80211_iter_combinations +EXPORT_SYMBOL net/wireless/cfg80211 0x7c582485 cfg80211_check_combinations +EXPORT_SYMBOL net/wireless/cfg80211 0x7ef39823 ieee80211_hdrlen +EXPORT_SYMBOL net/wireless/cfg80211 0x7fe1a403 cfg80211_find_ie +EXPORT_SYMBOL net/wireless/cfg80211 0x80162207 ieee80211_data_to_8023 +EXPORT_SYMBOL net/wireless/cfg80211 0x81bf9ea9 ieee80211_amsdu_to_8023s +EXPORT_SYMBOL net/wireless/cfg80211 0x81cba609 cfg80211_get_drvinfo +EXPORT_SYMBOL net/wireless/cfg80211 0x8492a430 ieee80211_get_response_rate +EXPORT_SYMBOL net/wireless/cfg80211 0x896aa182 cfg80211_ch_switch_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x89db88d4 wiphy_free +EXPORT_SYMBOL net/wireless/cfg80211 0x8a7062a5 ieee80211_mandatory_rates +EXPORT_SYMBOL net/wireless/cfg80211 0x966ff54d ieee80211_ie_split_ric +EXPORT_SYMBOL net/wireless/cfg80211 0x982e6b6d ieee80211_radiotap_iterator_init +EXPORT_SYMBOL net/wireless/cfg80211 0x98731350 cfg80211_inform_bss_width_frame +EXPORT_SYMBOL net/wireless/cfg80211 0x9d6cc691 cfg80211_chandef_dfs_required +EXPORT_SYMBOL net/wireless/cfg80211 0x9f6c2216 cfg80211_ibss_joined +EXPORT_SYMBOL net/wireless/cfg80211 0xa1425906 ieee80211_channel_to_frequency +EXPORT_SYMBOL net/wireless/cfg80211 0xa197b1ff ieee80211_get_mesh_hdrlen +EXPORT_SYMBOL net/wireless/cfg80211 0xa6d1f1ee cfg80211_inform_bss_width +EXPORT_SYMBOL net/wireless/cfg80211 0xac8526e0 cfg80211_scan_done +EXPORT_SYMBOL net/wireless/cfg80211 0xb5534a25 regulatory_set_wiphy_regd_sync_rtnl +EXPORT_SYMBOL net/wireless/cfg80211 0xb6f3b64f cfg80211_classify8021d +EXPORT_SYMBOL net/wireless/cfg80211 0xb835e832 wiphy_rfkill_start_polling +EXPORT_SYMBOL net/wireless/cfg80211 0xb887ebbc cfg80211_report_obss_beacon +EXPORT_SYMBOL net/wireless/cfg80211 0xc06a80bc cfg80211_roamed +EXPORT_SYMBOL net/wireless/cfg80211 0xc3b12a40 ieee80211_data_from_8023 +EXPORT_SYMBOL net/wireless/cfg80211 0xc63f1b81 ieee80211_radiotap_iterator_next +EXPORT_SYMBOL net/wireless/cfg80211 0xc76bcb50 cfg80211_ready_on_channel +EXPORT_SYMBOL net/wireless/cfg80211 0xc90fde22 ieee80211_chandef_to_operating_class +EXPORT_SYMBOL net/wireless/cfg80211 0xcdf25737 cfg80211_tdls_oper_request +EXPORT_SYMBOL net/wireless/cfg80211 0xd1b7352f cfg80211_roamed_bss +EXPORT_SYMBOL net/wireless/cfg80211 0xd2fd96f1 cfg80211_rx_assoc_resp +EXPORT_SYMBOL net/wireless/cfg80211 0xd7648bcc cfg80211_rx_unexpected_4addr_frame +EXPORT_SYMBOL net/wireless/cfg80211 0xda11bf86 cfg80211_cac_event +EXPORT_SYMBOL net/wireless/cfg80211 0xdb52bc44 cfg80211_rx_mlme_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0xdb8b3de3 cfg80211_remain_on_channel_expired +EXPORT_SYMBOL net/wireless/cfg80211 0xdba126c1 reg_initiator_name +EXPORT_SYMBOL net/wireless/cfg80211 0xe3d13e3e cfg80211_cqm_rssi_notify +EXPORT_SYMBOL net/wireless/cfg80211 0xe5043d9f cfg80211_new_sta +EXPORT_SYMBOL net/wireless/cfg80211 0xeb6d7c6c ieee80211_ie_split +EXPORT_SYMBOL net/wireless/cfg80211 0xeb874924 cfg80211_conn_failed +EXPORT_SYMBOL net/wireless/cfg80211 0xefc56354 cfg80211_chandef_create +EXPORT_SYMBOL net/wireless/cfg80211 0xf0fe4062 cfg80211_mgmt_tx_status +EXPORT_SYMBOL net/wireless/cfg80211 0xf1684608 __cfg80211_alloc_reply_skb +EXPORT_SYMBOL net/wireless/cfg80211 0xf41f5c9d cfg80211_sched_scan_stopped_rtnl +EXPORT_SYMBOL net/wireless/cfg80211 0xf778e68f cfg80211_pmksa_candidate_notify +EXPORT_SYMBOL net/wireless/cfg80211 0xf7beabe4 cfg80211_assoc_timeout +EXPORT_SYMBOL net/wireless/cfg80211 0xf973f46c wiphy_new_nm +EXPORT_SYMBOL net/wireless/cfg80211 0xfc9b7166 ieee80211_get_num_supported_channels +EXPORT_SYMBOL net/wireless/cfg80211 0xfed4d591 cfg80211_find_vendor_ie +EXPORT_SYMBOL net/wireless/cfg80211 0xffccca28 cfg80211_reg_can_beacon +EXPORT_SYMBOL net/wireless/lib80211 0x21c746e8 lib80211_get_crypto_ops +EXPORT_SYMBOL net/wireless/lib80211 0x2959d216 lib80211_unregister_crypto_ops +EXPORT_SYMBOL net/wireless/lib80211 0x8133e7f5 lib80211_register_crypto_ops +EXPORT_SYMBOL net/wireless/lib80211 0xad7018ab lib80211_crypt_info_free +EXPORT_SYMBOL net/wireless/lib80211 0xb5ab1209 lib80211_crypt_delayed_deinit +EXPORT_SYMBOL net/wireless/lib80211 0xb8d17263 lib80211_crypt_info_init +EXPORT_SYMBOL sound/ac97_bus 0xa334ee99 ac97_bus_type +EXPORT_SYMBOL sound/core/oss/snd-mixer-oss 0xe8ade8a5 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 0x23e660af snd_seq_create_kernel_client +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 0x6be3f97b snd_seq_kernel_client_write_poll +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 0x81dac6e8 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 0xcac0a3be snd_seq_kernel_client_enqueue +EXPORT_SYMBOL sound/core/seq/snd-seq 0xcc8d30de snd_seq_kernel_client_enqueue_blocking +EXPORT_SYMBOL sound/core/seq/snd-seq 0xe934da1d snd_seq_dump_var_event +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0x091def1c snd_seq_autoload_exit +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0x370a0736 snd_seq_autoload_init +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0x6339b6d0 snd_seq_device_load_drivers +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0xbb45c7b7 snd_seq_device_new +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 0xf0a1fdb3 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 0xd7c7afcc snd_midi_event_encode +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0xe60fb228 snd_midi_event_reset_decode +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0xecbde43c snd_midi_event_encode_byte +EXPORT_SYMBOL sound/core/seq/snd-seq-virmidi 0xaeb3200f snd_virmidi_new +EXPORT_SYMBOL sound/core/snd 0x00b7f5d0 snd_ctl_new1 +EXPORT_SYMBOL sound/core/snd 0x0a0382a9 snd_jack_new +EXPORT_SYMBOL sound/core/snd 0x0c0f00e7 snd_unregister_device +EXPORT_SYMBOL sound/core/snd 0x0d1f88c2 snd_seq_root +EXPORT_SYMBOL sound/core/snd 0x12a1ccc1 snd_unregister_oss_device +EXPORT_SYMBOL sound/core/snd 0x13d66801 snd_device_free +EXPORT_SYMBOL sound/core/snd 0x1477db7a snd_component_add +EXPORT_SYMBOL sound/core/snd 0x16031d30 snd_pci_quirk_lookup +EXPORT_SYMBOL sound/core/snd 0x1803ef20 snd_register_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 0x1e50df90 snd_ctl_boolean_stereo_info +EXPORT_SYMBOL sound/core/snd 0x24a94b26 snd_info_get_line +EXPORT_SYMBOL sound/core/snd 0x29efa63e snd_card_free +EXPORT_SYMBOL sound/core/snd 0x2ae3deaa release_and_free_resource +EXPORT_SYMBOL sound/core/snd 0x2b07403c snd_info_free_entry +EXPORT_SYMBOL sound/core/snd 0x354b957f snd_ctl_free_one +EXPORT_SYMBOL sound/core/snd 0x3971b4df snd_ecards_limit +EXPORT_SYMBOL sound/core/snd 0x3a21736a snd_ctl_register_ioctl +EXPORT_SYMBOL sound/core/snd 0x3b4a39f8 snd_card_register +EXPORT_SYMBOL sound/core/snd 0x3d3a2afe snd_ctl_find_numid +EXPORT_SYMBOL sound/core/snd 0x40160ffa snd_ctl_add +EXPORT_SYMBOL sound/core/snd 0x4a3ea5c0 snd_request_card +EXPORT_SYMBOL sound/core/snd 0x4ac58802 snd_ctl_find_id +EXPORT_SYMBOL sound/core/snd 0x4b618de9 snd_ctl_boolean_mono_info +EXPORT_SYMBOL sound/core/snd 0x5ced6594 snd_card_file_remove +EXPORT_SYMBOL sound/core/snd 0x602c96f0 copy_to_user_fromio +EXPORT_SYMBOL sound/core/snd 0x6de76f09 snd_info_register +EXPORT_SYMBOL sound/core/snd 0x709a140d snd_jack_add_new_kctl +EXPORT_SYMBOL sound/core/snd 0x70c15ac1 snd_dma_disable +EXPORT_SYMBOL sound/core/snd 0x74cc06ad snd_power_wait +EXPORT_SYMBOL sound/core/snd 0x7b7163d5 _snd_ctl_add_slave +EXPORT_SYMBOL sound/core/snd 0x7bbda879 snd_ctl_remove_id +EXPORT_SYMBOL sound/core/snd 0x81b69e41 snd_ctl_enum_info +EXPORT_SYMBOL sound/core/snd 0x81df4b4b snd_device_register +EXPORT_SYMBOL sound/core/snd 0x84feac73 snd_device_new +EXPORT_SYMBOL sound/core/snd 0x8df3789f snd_oss_info_register +EXPORT_SYMBOL sound/core/snd 0x8f595b11 snd_major +EXPORT_SYMBOL sound/core/snd 0x90963afe snd_ctl_unregister_ioctl +EXPORT_SYMBOL sound/core/snd 0x91041d2f snd_card_new +EXPORT_SYMBOL sound/core/snd 0x9294ebf9 snd_ctl_rename_id +EXPORT_SYMBOL sound/core/snd 0x92983e79 snd_ctl_make_virtual_master +EXPORT_SYMBOL sound/core/snd 0x996a0f12 snd_card_set_id +EXPORT_SYMBOL sound/core/snd 0x9e1071e9 snd_cards +EXPORT_SYMBOL sound/core/snd 0x9e6d79f8 snd_info_get_str +EXPORT_SYMBOL sound/core/snd 0xa0fd2427 snd_pci_quirk_lookup_id +EXPORT_SYMBOL sound/core/snd 0xa778dc19 snd_ctl_notify +EXPORT_SYMBOL sound/core/snd 0xb2e5ae4a snd_lookup_minor_data +EXPORT_SYMBOL sound/core/snd 0xb6aed389 snd_card_disconnect +EXPORT_SYMBOL sound/core/snd 0xc3acc6d7 snd_jack_set_parent +EXPORT_SYMBOL sound/core/snd 0xc7771348 snd_card_file_add +EXPORT_SYMBOL sound/core/snd 0xce3ca308 copy_from_user_toio +EXPORT_SYMBOL sound/core/snd 0xd3a10374 snd_jack_report +EXPORT_SYMBOL sound/core/snd 0xd6bd003a snd_ctl_remove +EXPORT_SYMBOL sound/core/snd 0xd81bc5a8 snd_info_create_card_entry +EXPORT_SYMBOL sound/core/snd 0xdba423e9 snd_ctl_replace +EXPORT_SYMBOL sound/core/snd 0xdf80333a snd_jack_set_key +EXPORT_SYMBOL sound/core/snd 0xea0ba426 snd_mixer_oss_notify_callback +EXPORT_SYMBOL sound/core/snd 0xf14011ae snd_info_create_module_entry +EXPORT_SYMBOL sound/core/snd 0xfecfdf53 snd_card_free_when_closed +EXPORT_SYMBOL sound/core/snd 0xff504b42 snd_register_oss_device +EXPORT_SYMBOL sound/core/snd-hwdep 0xe2f21b3d snd_hwdep_new +EXPORT_SYMBOL sound/core/snd-pcm 0x00debe7a snd_pcm_hw_constraint_ratnums +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 0x0a1c3690 snd_pcm_hw_constraint_msbits +EXPORT_SYMBOL sound/core/snd-pcm 0x155e143c snd_pcm_hw_constraint_ranges +EXPORT_SYMBOL sound/core/snd-pcm 0x19c8824f snd_pcm_stop +EXPORT_SYMBOL sound/core/snd-pcm 0x1d027e4b snd_pcm_format_signed +EXPORT_SYMBOL sound/core/snd-pcm 0x2352c1b6 snd_pcm_lib_write +EXPORT_SYMBOL sound/core/snd-pcm 0x26873410 snd_pcm_notify +EXPORT_SYMBOL sound/core/snd-pcm 0x303b3247 snd_pcm_hw_param_last +EXPORT_SYMBOL sound/core/snd-pcm 0x3122b6d8 snd_pcm_suspend +EXPORT_SYMBOL sound/core/snd-pcm 0x3258a515 snd_pcm_hw_constraint_integer +EXPORT_SYMBOL sound/core/snd-pcm 0x34488c35 snd_pcm_lib_get_vmalloc_page +EXPORT_SYMBOL sound/core/snd-pcm 0x3796bdcc snd_pcm_format_little_endian +EXPORT_SYMBOL sound/core/snd-pcm 0x391218d6 snd_pcm_set_sync +EXPORT_SYMBOL sound/core/snd-pcm 0x39bf9301 _snd_pcm_hw_param_setempty +EXPORT_SYMBOL sound/core/snd-pcm 0x3b91f3af snd_free_pages +EXPORT_SYMBOL sound/core/snd-pcm 0x43a8a8c2 snd_pcm_hw_param_first +EXPORT_SYMBOL sound/core/snd-pcm 0x4c5ec1d5 snd_pcm_lib_read +EXPORT_SYMBOL sound/core/snd-pcm 0x4d9b6d35 snd_pcm_format_size +EXPORT_SYMBOL sound/core/snd-pcm 0x4de931ec snd_pcm_hw_constraint_step +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 0x57b37735 snd_pcm_lib_readv +EXPORT_SYMBOL sound/core/snd-pcm 0x5e7f4920 snd_pcm_format_set_silence +EXPORT_SYMBOL sound/core/snd-pcm 0x6105b046 snd_pcm_hw_refine +EXPORT_SYMBOL sound/core/snd-pcm 0x61da1d38 snd_pcm_lib_preallocate_free_for_all +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 0x69d294f4 snd_pcm_release_substream +EXPORT_SYMBOL sound/core/snd-pcm 0x6ef8fcd8 snd_pcm_format_linear +EXPORT_SYMBOL sound/core/snd-pcm 0x73c4d330 snd_dma_free_pages +EXPORT_SYMBOL sound/core/snd-pcm 0x74327b6b snd_pcm_new +EXPORT_SYMBOL sound/core/snd-pcm 0x82de08f6 snd_dma_alloc_pages_fallback +EXPORT_SYMBOL sound/core/snd-pcm 0x874c3e26 snd_pcm_lib_free_pages +EXPORT_SYMBOL sound/core/snd-pcm 0x87b36d02 snd_pcm_set_ops +EXPORT_SYMBOL sound/core/snd-pcm 0x8f7f5ade snd_pcm_hw_constraint_mask64 +EXPORT_SYMBOL sound/core/snd-pcm 0x8fd19042 snd_pcm_lib_malloc_pages +EXPORT_SYMBOL sound/core/snd-pcm 0x91362cb6 snd_pcm_lib_ioctl +EXPORT_SYMBOL sound/core/snd-pcm 0x94098ff8 snd_interval_list +EXPORT_SYMBOL sound/core/snd-pcm 0x9ede40a9 snd_pcm_open_substream +EXPORT_SYMBOL sound/core/snd-pcm 0x9fd8a781 snd_pcm_lib_preallocate_pages_for_all +EXPORT_SYMBOL sound/core/snd-pcm 0xa025094a snd_pcm_lib_preallocate_pages +EXPORT_SYMBOL sound/core/snd-pcm 0xa51e890c snd_pcm_hw_constraint_ratdens +EXPORT_SYMBOL sound/core/snd-pcm 0xa61aa028 snd_pcm_format_unsigned +EXPORT_SYMBOL sound/core/snd-pcm 0xaace5d60 snd_pcm_period_elapsed +EXPORT_SYMBOL sound/core/snd-pcm 0xac834e50 snd_pcm_lib_free_vmalloc_buffer +EXPORT_SYMBOL sound/core/snd-pcm 0xade88e76 snd_malloc_pages +EXPORT_SYMBOL sound/core/snd-pcm 0xaf44a44d snd_pcm_hw_constraint_list +EXPORT_SYMBOL sound/core/snd-pcm 0xb9638db4 snd_pcm_rate_to_rate_bit +EXPORT_SYMBOL sound/core/snd-pcm 0xbd437e7e snd_pcm_lib_mmap_iomem +EXPORT_SYMBOL sound/core/snd-pcm 0xbfc9d682 snd_pcm_hw_constraint_minmax +EXPORT_SYMBOL sound/core/snd-pcm 0xc3cc34e7 snd_pcm_lib_writev +EXPORT_SYMBOL sound/core/snd-pcm 0xc7598b05 snd_dma_alloc_pages +EXPORT_SYMBOL sound/core/snd-pcm 0xcfb0acb2 snd_pcm_limit_hw_rates +EXPORT_SYMBOL sound/core/snd-pcm 0xd429729c snd_pcm_new_internal +EXPORT_SYMBOL sound/core/snd-pcm 0xd4e471e4 snd_pcm_mmap_data +EXPORT_SYMBOL sound/core/snd-pcm 0xdd625794 snd_pcm_kernel_ioctl +EXPORT_SYMBOL sound/core/snd-pcm 0xe56a9336 snd_pcm_format_width +EXPORT_SYMBOL sound/core/snd-pcm 0xe6d92855 snd_pcm_new_stream +EXPORT_SYMBOL sound/core/snd-pcm 0xe8cf97e6 _snd_pcm_lib_alloc_vmalloc_buffer +EXPORT_SYMBOL sound/core/snd-pcm 0xe993278a snd_pcm_suspend_all +EXPORT_SYMBOL sound/core/snd-pcm 0xec9161aa snd_pcm_hw_rule_noresample +EXPORT_SYMBOL sound/core/snd-pcm 0xf3797152 snd_interval_ratnum +EXPORT_SYMBOL sound/core/snd-pcm 0xf3ffc005 snd_pcm_hw_rule_add +EXPORT_SYMBOL sound/core/snd-pcm 0xf7d99dfa snd_pcm_hw_constraint_pow2 +EXPORT_SYMBOL sound/core/snd-pcm 0xff6104d0 snd_pcm_rate_bit_to_rate +EXPORT_SYMBOL sound/core/snd-rawmidi 0x0f10cb7f snd_rawmidi_drop_output +EXPORT_SYMBOL sound/core/snd-rawmidi 0x1452ebcc snd_rawmidi_transmit_peek +EXPORT_SYMBOL sound/core/snd-rawmidi 0x189e73e6 snd_rawmidi_input_params +EXPORT_SYMBOL sound/core/snd-rawmidi 0x495b6a47 snd_rawmidi_kernel_release +EXPORT_SYMBOL sound/core/snd-rawmidi 0x56725e86 snd_rawmidi_receive +EXPORT_SYMBOL sound/core/snd-rawmidi 0x7d530e16 snd_rawmidi_kernel_write +EXPORT_SYMBOL sound/core/snd-rawmidi 0x80d12ab2 snd_rawmidi_kernel_read +EXPORT_SYMBOL sound/core/snd-rawmidi 0x8c6d7bcd snd_rawmidi_info_select +EXPORT_SYMBOL sound/core/snd-rawmidi 0x96aebd2f snd_rawmidi_set_ops +EXPORT_SYMBOL sound/core/snd-rawmidi 0x9a648051 snd_rawmidi_new +EXPORT_SYMBOL sound/core/snd-rawmidi 0x9a6f7180 snd_rawmidi_transmit_empty +EXPORT_SYMBOL sound/core/snd-rawmidi 0xa7311e1f snd_rawmidi_output_params +EXPORT_SYMBOL sound/core/snd-rawmidi 0xc1ded120 snd_rawmidi_transmit_ack +EXPORT_SYMBOL sound/core/snd-rawmidi 0xc96685d3 snd_rawmidi_drain_input +EXPORT_SYMBOL sound/core/snd-rawmidi 0xdaf1dbbf snd_rawmidi_drain_output +EXPORT_SYMBOL sound/core/snd-rawmidi 0xf5460e2b snd_rawmidi_kernel_open +EXPORT_SYMBOL sound/core/snd-rawmidi 0xfd2fa9b7 snd_rawmidi_transmit +EXPORT_SYMBOL sound/core/snd-timer 0x0cf44187 snd_timer_start +EXPORT_SYMBOL sound/core/snd-timer 0x2ab6bc65 snd_timer_resolution +EXPORT_SYMBOL sound/core/snd-timer 0x4c8d8670 snd_timer_open +EXPORT_SYMBOL sound/core/snd-timer 0x580d413f snd_timer_global_new +EXPORT_SYMBOL sound/core/snd-timer 0x5c72bd4b snd_timer_pause +EXPORT_SYMBOL sound/core/snd-timer 0x695a328d snd_timer_global_free +EXPORT_SYMBOL sound/core/snd-timer 0xada1ede9 snd_timer_new +EXPORT_SYMBOL sound/core/snd-timer 0xb10a222e snd_timer_interrupt +EXPORT_SYMBOL sound/core/snd-timer 0xb6f3a890 snd_timer_stop +EXPORT_SYMBOL sound/core/snd-timer 0xbc3e5d75 snd_timer_continue +EXPORT_SYMBOL sound/core/snd-timer 0xc7ddd38a snd_timer_notify +EXPORT_SYMBOL sound/core/snd-timer 0xe6f7d2cc snd_timer_close +EXPORT_SYMBOL sound/core/snd-timer 0xf8e7eaf8 snd_timer_global_register +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 0xc9b547b1 snd_mpu401_uart_new +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x05060a19 snd_opl3_regmap +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x145c215e snd_opl3_find_patch +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x337c65ab snd_opl3_reset +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x346b5cc7 snd_opl3_load_patch +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x6d2a094a snd_opl3_interrupt +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x728d19ca snd_opl3_create +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x98ff3ce8 snd_opl3_timer_new +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xe0707915 snd_opl3_init +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xf7318b82 snd_opl3_hwdep_new +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xfc964c01 snd_opl3_new +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x089398ee snd_vx_setup_firmware +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x21b13243 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 0x2511caa1 snd_vx_dsp_boot +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x4e885dd3 snd_vx_check_reg_bit +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x93b3b2cb snd_vx_dsp_load +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xa95c32b2 snd_vx_load_boot_image +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xb12105ca snd_vx_create +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xec7fd19a snd_vx_suspend +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xf1f04d23 snd_vx_irq_handler +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xf80361a5 snd_vx_resume +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x0168d1da amdtp_stream_pcm_abort +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x20254e45 amdtp_syt_intervals +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x298fea68 amdtp_stream_update +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x33de6825 fw_iso_resources_update +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x346347b8 amdtp_stream_set_parameters +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x4d93d09f amdtp_stream_pcm_pointer +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x4d9f151c cmp_connection_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x4e017396 amdtp_stream_pcm_prepare +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x53ca18e8 amdtp_rate_table +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x566038a7 avc_general_get_plug_info +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x5b243cdc cmp_connection_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x5b6e1572 amdtp_stream_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x65838f8e iso_packets_buffer_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x68a032c5 amdtp_stream_add_pcm_hw_constraints +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x7cd2e8c3 fw_iso_resources_free +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x82de87f1 iso_packets_buffer_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x873e857e cmp_connection_update +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x88534a9c amdtp_stream_start +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x89f2391d fw_iso_resources_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x9a21e39e amdtp_stream_get_max_payload +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xa3f22650 fcp_bus_reset +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xa81fb0fd cmp_connection_establish +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xaa38f035 cmp_connection_check_used +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xac76084d amdtp_stream_stop +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xb1b10af0 amdtp_stream_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xb4777094 fw_iso_resources_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xb4e1142a avc_general_get_sig_fmt +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xbc6542f1 amdtp_stream_set_pcm_format +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xca340ab4 fw_iso_resources_allocate +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xcd0eacec fcp_avc_transaction +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xe3643bb6 avc_general_set_sig_fmt +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xea14311e snd_fw_transaction +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xf3be5a99 cmp_connection_break +EXPORT_SYMBOL sound/i2c/other/snd-ak4113 0x1264f624 snd_ak4113_suspend +EXPORT_SYMBOL sound/i2c/other/snd-ak4113 0xbe28073f snd_ak4113_resume +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x05c3416e snd_ak4114_build +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x41bf34fa snd_ak4114_check_rate_and_errors +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x6449e89c snd_ak4114_external_rate +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x67cff123 snd_ak4114_reinit +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x694842fc snd_ak4114_create +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x6ac3e725 snd_ak4114_reg_write +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0xae1dc975 snd_ak4114_suspend +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0xfdd6e480 snd_ak4114_resume +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0x48b5af1d snd_ak4117_check_rate_and_errors +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0xbadab7f8 snd_ak4117_reg_write +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0xc89c6234 snd_ak4117_reinit +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0xca9678f5 snd_ak4117_create +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0xd61862fe snd_ak4117_build +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0xe2b9d0ce snd_ak4117_external_rate +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0x5e1b394a snd_akm4xxx_build_controls +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0xbc68c9fe snd_akm4xxx_reset +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0xc8e4c351 snd_akm4xxx_init +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0xfe2c6d64 snd_akm4xxx_write +EXPORT_SYMBOL sound/i2c/other/snd-pt2258 0x4d1afce9 snd_pt2258_reset +EXPORT_SYMBOL sound/i2c/other/snd-pt2258 0xa2d4476b snd_pt2258_build_controls +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x0a1fd813 snd_cs8427_create +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x4b64ec6b snd_cs8427_iec958_build +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x5a138fcc snd_cs8427_iec958_pcm +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x9506f91b snd_cs8427_reg_write +EXPORT_SYMBOL sound/i2c/snd-cs8427 0xbada54a7 snd_cs8427_iec958_active +EXPORT_SYMBOL sound/i2c/snd-cs8427 0xc07bbcb3 snd_cs8427_init +EXPORT_SYMBOL sound/i2c/snd-i2c 0x3c003a38 snd_i2c_bus_create +EXPORT_SYMBOL sound/i2c/snd-i2c 0x53b5b671 snd_i2c_probeaddr +EXPORT_SYMBOL sound/i2c/snd-i2c 0x83a2b66d snd_i2c_readbytes +EXPORT_SYMBOL sound/i2c/snd-i2c 0x8b3c87e0 snd_i2c_device_free +EXPORT_SYMBOL sound/i2c/snd-i2c 0x949bece0 snd_i2c_sendbytes +EXPORT_SYMBOL sound/i2c/snd-i2c 0xbec41e51 snd_i2c_device_create +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x2fe936de snd_sbmixer_suspend +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x31e2336b snd_sbdsp_create +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x3a60255d snd_sbmixer_new +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x7eafd56d snd_sbdsp_command +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x98330398 snd_sbmixer_add_ctl +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0xabc8bf70 snd_sbmixer_read +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0xc15fbe6b snd_sbmixer_write +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0xd9bbfcce snd_sbdsp_get_byte +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0xdfbc5c43 snd_sbdsp_reset +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0xfe3dd7ae snd_sbmixer_resume +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x30cd6eb9 snd_ac97_get_short_name +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x3ad41dbd snd_ac97_update +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x4ac77b61 snd_ac97_pcm_double_rate_rules +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x4e10badf snd_ac97_update_bits +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x6fad5645 snd_ac97_write +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x772d8a76 snd_ac97_tune_hardware +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x7b4482b2 snd_ac97_resume +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x7b9d4880 snd_ac97_read +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x839718fb snd_ac97_mixer +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x8470e703 snd_ac97_set_rate +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x943a9e93 snd_ac97_update_power +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x958c4c13 snd_ac97_write_cache +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xa264fef7 snd_ac97_bus +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xbbcece47 snd_ac97_suspend +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xeb61d51e snd_ac97_pcm_close +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xec1e0ecc snd_ac97_pcm_open +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xf2d42001 snd_ac97_pcm_assign +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x08cf1917 snd_emu10k1_synth_bzero +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x195f5196 snd_emu10k1_synth_alloc +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x1e5434c0 snd_emu10k1_synth_free +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x1fb5664a snd_emu10k1_ptr_read +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x509f4316 snd_emu10k1_synth_copy_from_user +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x56ef9f93 snd_emu10k1_voice_free +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x8b789de1 snd_emu10k1_memblk_map +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xa786fa51 snd_emu10k1_voice_alloc +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xfec45ed9 snd_emu10k1_ptr_write +EXPORT_SYMBOL sound/pci/ice1712/snd-ice17xx-ak4xxx 0xa00d371e snd_ice1712_akm4xxx_init +EXPORT_SYMBOL sound/pci/ice1712/snd-ice17xx-ak4xxx 0xd0e40a91 snd_ice1712_akm4xxx_free +EXPORT_SYMBOL sound/pci/ice1712/snd-ice17xx-ak4xxx 0xd566bfe1 snd_ice1712_akm4xxx_build_controls +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x1883ee21 oxygen_write_ac97_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x1bba188e oxygen_write_ac97 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x2f06dc74 oxygen_write_i2c +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x3cf19fbb oxygen_write_uart +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x3dd23845 oxygen_reset_uart +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x80930912 oxygen_pci_shutdown +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x82093b6c oxygen_update_dac_routing +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x8c1e73b9 oxygen_pci_pm +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x8ddea45d oxygen_pci_probe +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x91bde7f7 oxygen_read16 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xb09a5f78 oxygen_read8 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xb0a07bcf oxygen_write16_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xbf0d5bd7 oxygen_write8_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xc1faa1b3 oxygen_write8 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xc373973a oxygen_write32 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xc95fc648 oxygen_read_ac97 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xd1d2862c oxygen_read32 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xdc4992cc oxygen_write32_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xe2c26094 oxygen_write_spi +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xe57c7ddb oxygen_pci_remove +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xe5ed6e5c oxygen_write16 +EXPORT_SYMBOL sound/pci/trident/snd-trident 0x30e7798d snd_trident_start_voice +EXPORT_SYMBOL sound/pci/trident/snd-trident 0x46e783b9 snd_trident_write_voice_regs +EXPORT_SYMBOL sound/pci/trident/snd-trident 0x47385df0 snd_trident_free_voice +EXPORT_SYMBOL sound/pci/trident/snd-trident 0x48dc1e1f snd_trident_stop_voice +EXPORT_SYMBOL sound/pci/trident/snd-trident 0xfc2a79e6 snd_trident_alloc_voice +EXPORT_SYMBOL sound/soc/codecs/snd-soc-tlv320aic23 0x72fa0ba5 tlv320aic23_regmap +EXPORT_SYMBOL sound/soc/codecs/snd-soc-tlv320aic23 0xef2ba3ed tlv320aic23_probe +EXPORT_SYMBOL sound/soc/snd-soc-core 0x362eff08 snd_soc_alloc_ac97_codec +EXPORT_SYMBOL sound/soundcore 0x0079f6dc register_sound_dsp +EXPORT_SYMBOL sound/soundcore 0x023f7583 sound_class +EXPORT_SYMBOL sound/soundcore 0x37818a0c register_sound_midi +EXPORT_SYMBOL sound/soundcore 0x7afc9d8a unregister_sound_mixer +EXPORT_SYMBOL sound/soundcore 0x99c95fa5 unregister_sound_special +EXPORT_SYMBOL sound/soundcore 0xbbf315fc register_sound_mixer +EXPORT_SYMBOL sound/soundcore 0xc71e7c2d register_sound_special_device +EXPORT_SYMBOL sound/soundcore 0xcd083b10 unregister_sound_dsp +EXPORT_SYMBOL sound/soundcore 0xddc307bc register_sound_special +EXPORT_SYMBOL sound/soundcore 0xfdab6de3 unregister_sound_midi +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x26b7b2a1 snd_emux_register +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x296c2295 snd_emux_new +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x3863d363 snd_emux_free +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x5a918329 snd_emux_lock_voice +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x606beadb 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 0xb0184a50 snd_emux_terminate_all +EXPORT_SYMBOL sound/synth/snd-util-mem 0x04c4fd84 snd_util_mem_avail +EXPORT_SYMBOL sound/synth/snd-util-mem 0x0c5ba5ed snd_util_mem_alloc +EXPORT_SYMBOL sound/synth/snd-util-mem 0x1f27826c __snd_util_memblk_new +EXPORT_SYMBOL sound/synth/snd-util-mem 0x7c9e4443 __snd_util_mem_free +EXPORT_SYMBOL sound/synth/snd-util-mem 0xb67acbec snd_util_mem_free +EXPORT_SYMBOL sound/synth/snd-util-mem 0xd1340fb3 snd_util_memhdr_new +EXPORT_SYMBOL sound/synth/snd-util-mem 0xd6983e93 snd_util_memhdr_free +EXPORT_SYMBOL sound/synth/snd-util-mem 0xf7465837 __snd_util_mem_alloc +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 0xbdf95e30 snd_usbmidi_create +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 0x00036b74 jbd2_journal_free_reserved +EXPORT_SYMBOL vmlinux 0x00075290 sync_dirty_buffer +EXPORT_SYMBOL vmlinux 0x004165cc iov_iter_kvec +EXPORT_SYMBOL vmlinux 0x005ba5b0 vfs_iter_read +EXPORT_SYMBOL vmlinux 0x006740e8 ppp_register_channel +EXPORT_SYMBOL vmlinux 0x007a2db5 read_cache_page +EXPORT_SYMBOL vmlinux 0x00912d1f tcp_enter_cwr +EXPORT_SYMBOL vmlinux 0x00984a52 invalidate_inode_buffers +EXPORT_SYMBOL vmlinux 0x00bd621d vme_dma_request +EXPORT_SYMBOL vmlinux 0x00d7e722 vme_lm_count +EXPORT_SYMBOL vmlinux 0x00f26c26 agp_bind_memory +EXPORT_SYMBOL vmlinux 0x01000e51 schedule +EXPORT_SYMBOL vmlinux 0x0101d5b1 ip_idents_reserve +EXPORT_SYMBOL vmlinux 0x0112ee55 __splice_from_pipe +EXPORT_SYMBOL vmlinux 0x01139ffc max_mapnr +EXPORT_SYMBOL vmlinux 0x0163b3f2 __skb_recv_datagram +EXPORT_SYMBOL vmlinux 0x0168f024 of_get_property +EXPORT_SYMBOL vmlinux 0x016e5c2a mod_timer +EXPORT_SYMBOL vmlinux 0x01700cc2 agp_generic_remove_memory +EXPORT_SYMBOL vmlinux 0x0186ab04 blk_init_tags +EXPORT_SYMBOL vmlinux 0x019ef1ca __getblk_slow +EXPORT_SYMBOL vmlinux 0x01ab3960 blkdev_issue_write_same +EXPORT_SYMBOL vmlinux 0x01ae7129 netdev_master_upper_dev_link_private +EXPORT_SYMBOL vmlinux 0x01d2055d ip_generic_getfrag +EXPORT_SYMBOL vmlinux 0x01e0a02b pm860x_bulk_write +EXPORT_SYMBOL vmlinux 0x01febba1 rfkill_alloc +EXPORT_SYMBOL vmlinux 0x021353b4 buffer_check_dirty_writeback +EXPORT_SYMBOL vmlinux 0x021959b6 bio_add_page +EXPORT_SYMBOL vmlinux 0x023004fa netdev_upper_get_next_dev_rcu +EXPORT_SYMBOL vmlinux 0x02649054 security_sock_rcv_skb +EXPORT_SYMBOL vmlinux 0x0274dc2b netif_get_num_default_rss_queues +EXPORT_SYMBOL vmlinux 0x02a18c74 nf_conntrack_destroy +EXPORT_SYMBOL vmlinux 0x02a6ce5a crc16_table +EXPORT_SYMBOL vmlinux 0x02ea111e scsi_driverbyte_string +EXPORT_SYMBOL vmlinux 0x02ee26c1 free_pages_exact +EXPORT_SYMBOL vmlinux 0x03218c7c of_platform_device_create +EXPORT_SYMBOL vmlinux 0x032d16c9 xfrm_state_insert +EXPORT_SYMBOL vmlinux 0x03321a9e netif_rx_ni +EXPORT_SYMBOL vmlinux 0x0332e5bb max8998_read_reg +EXPORT_SYMBOL vmlinux 0x0334da4e scsi_command_size_tbl +EXPORT_SYMBOL vmlinux 0x034bf28f scsi_remove_target +EXPORT_SYMBOL vmlinux 0x03592ea0 security_unix_stream_connect +EXPORT_SYMBOL vmlinux 0x0366307a console_suspend_enabled +EXPORT_SYMBOL vmlinux 0x037a0cba kfree +EXPORT_SYMBOL vmlinux 0x0380fac0 of_platform_bus_probe +EXPORT_SYMBOL vmlinux 0x039f4d5d netpoll_poll_enable +EXPORT_SYMBOL vmlinux 0x03b82a24 mach_bsc9132_qds +EXPORT_SYMBOL vmlinux 0x03befad7 xfrm_policy_hash_rebuild +EXPORT_SYMBOL vmlinux 0x03efa9fd input_grab_device +EXPORT_SYMBOL vmlinux 0x03fd2571 vm_unmap_ram +EXPORT_SYMBOL vmlinux 0x04055c16 inet_getname +EXPORT_SYMBOL vmlinux 0x04074f48 ioremap +EXPORT_SYMBOL vmlinux 0x0422fe4a inet_csk_timer_bug_msg +EXPORT_SYMBOL vmlinux 0x04482cdb __refrigerator +EXPORT_SYMBOL vmlinux 0x04651b45 ___pskb_trim +EXPORT_SYMBOL vmlinux 0x04695dc3 devm_ioport_unmap +EXPORT_SYMBOL vmlinux 0x0473951a unregister_qdisc +EXPORT_SYMBOL vmlinux 0x0480eedd blk_execute_rq +EXPORT_SYMBOL vmlinux 0x04854b73 mb_cache_entry_get +EXPORT_SYMBOL vmlinux 0x0487f831 fb_find_best_display +EXPORT_SYMBOL vmlinux 0x04ea56f9 _kstrtol +EXPORT_SYMBOL vmlinux 0x04f1041d lockref_get +EXPORT_SYMBOL vmlinux 0x0509cc8a generic_file_readonly_mmap +EXPORT_SYMBOL vmlinux 0x05186ca4 flush_icache_range +EXPORT_SYMBOL vmlinux 0x0523e14c mipi_dsi_dcs_get_pixel_format +EXPORT_SYMBOL vmlinux 0x05240ee7 percpu_counter_batch +EXPORT_SYMBOL vmlinux 0x0530dede _raw_write_trylock +EXPORT_SYMBOL vmlinux 0x055fbc18 forget_all_cached_acls +EXPORT_SYMBOL vmlinux 0x0569557a mark_info_dirty +EXPORT_SYMBOL vmlinux 0x058bbf91 input_set_abs_params +EXPORT_SYMBOL vmlinux 0x05a32cec vme_unregister_driver +EXPORT_SYMBOL vmlinux 0x05a459b4 inode_owner_or_capable +EXPORT_SYMBOL vmlinux 0x05a514a1 _insl_ns +EXPORT_SYMBOL vmlinux 0x05ab8af3 ip6_dst_hoplimit +EXPORT_SYMBOL vmlinux 0x05af9c5d uart_remove_one_port +EXPORT_SYMBOL vmlinux 0x05dd0c6e clkdev_drop +EXPORT_SYMBOL vmlinux 0x05f2fe93 tty_port_tty_set +EXPORT_SYMBOL vmlinux 0x061651be strcat +EXPORT_SYMBOL vmlinux 0x061b84e9 devfreq_remove_device +EXPORT_SYMBOL vmlinux 0x062a2356 scsi_init_io +EXPORT_SYMBOL vmlinux 0x0634100a bitmap_parselist_user +EXPORT_SYMBOL vmlinux 0x06583423 simple_statfs +EXPORT_SYMBOL vmlinux 0x065ce0c2 new_inode +EXPORT_SYMBOL vmlinux 0x06624f4b eth_type_trans +EXPORT_SYMBOL vmlinux 0x066913b8 writeback_inodes_sb +EXPORT_SYMBOL vmlinux 0x06717f91 eth_gro_complete +EXPORT_SYMBOL vmlinux 0x0672296f down_read +EXPORT_SYMBOL vmlinux 0x0675c7eb atomic64_cmpxchg +EXPORT_SYMBOL vmlinux 0x067d8d35 security_release_secctx +EXPORT_SYMBOL vmlinux 0x067fd3a2 bioset_create_nobvec +EXPORT_SYMBOL vmlinux 0x0681d6bb devfreq_interval_update +EXPORT_SYMBOL vmlinux 0x0685d007 dquot_release +EXPORT_SYMBOL vmlinux 0x06a45066 do_splice_direct +EXPORT_SYMBOL vmlinux 0x06fe3b14 default_grn +EXPORT_SYMBOL vmlinux 0x0727c4f3 iowrite8 +EXPORT_SYMBOL vmlinux 0x072f901c vme_master_rmw +EXPORT_SYMBOL vmlinux 0x07397fc3 pci_lost_interrupt +EXPORT_SYMBOL vmlinux 0x074cd436 __page_symlink +EXPORT_SYMBOL vmlinux 0x074e9213 down_killable +EXPORT_SYMBOL vmlinux 0x078ab7c8 mmc_gpio_get_ro +EXPORT_SYMBOL vmlinux 0x07a7f5a7 devfreq_resume_device +EXPORT_SYMBOL vmlinux 0x07a890c8 fb_alloc_cmap +EXPORT_SYMBOL vmlinux 0x07c6aeea of_find_property +EXPORT_SYMBOL vmlinux 0x07c75e85 init_net +EXPORT_SYMBOL vmlinux 0x07cc4a5d printk_timed_ratelimit +EXPORT_SYMBOL vmlinux 0x082c3213 pci_root_buses +EXPORT_SYMBOL vmlinux 0x083eb21c rfkill_unregister +EXPORT_SYMBOL vmlinux 0x0840fbba jbd2_journal_extend +EXPORT_SYMBOL vmlinux 0x086075dc freezing_slow_path +EXPORT_SYMBOL vmlinux 0x086d8cdd irq_stat +EXPORT_SYMBOL vmlinux 0x08928b90 __nla_put +EXPORT_SYMBOL vmlinux 0x089e56f2 arp_xmit +EXPORT_SYMBOL vmlinux 0x08a3a613 sget +EXPORT_SYMBOL vmlinux 0x08df9457 neigh_proc_dointvec_ms_jiffies +EXPORT_SYMBOL vmlinux 0x08ea69e7 mipi_dsi_packet_format_is_long +EXPORT_SYMBOL vmlinux 0x08ebc3f0 __dst_destroy_metrics_generic +EXPORT_SYMBOL vmlinux 0x08f9e7c3 complete_request_key +EXPORT_SYMBOL vmlinux 0x091fb804 d_prune_aliases +EXPORT_SYMBOL vmlinux 0x0922ab0a d_tmpfile +EXPORT_SYMBOL vmlinux 0x092be03d phy_mii_ioctl +EXPORT_SYMBOL vmlinux 0x09399ccd xfrm_register_km +EXPORT_SYMBOL vmlinux 0x09580deb init_timer_key +EXPORT_SYMBOL vmlinux 0x098b71c6 fb_dealloc_cmap +EXPORT_SYMBOL vmlinux 0x09bbbb91 trace_print_symbols_seq_u64 +EXPORT_SYMBOL vmlinux 0x09c166ac inode_reclaim_rsv_space +EXPORT_SYMBOL vmlinux 0x09c55cec schedule_timeout_interruptible +EXPORT_SYMBOL vmlinux 0x09c5a486 tty_driver_flush_buffer +EXPORT_SYMBOL vmlinux 0x09c67afb flex_array_get +EXPORT_SYMBOL vmlinux 0x09c8eb55 font_vga_8x16 +EXPORT_SYMBOL vmlinux 0x09d44df9 in_lock_functions +EXPORT_SYMBOL vmlinux 0x09e52f69 scsi_execute +EXPORT_SYMBOL vmlinux 0x09ea2b50 skb_clone +EXPORT_SYMBOL vmlinux 0x09ed147f dquot_transfer +EXPORT_SYMBOL vmlinux 0x0a2487e0 unblock_all_signals +EXPORT_SYMBOL vmlinux 0x0a292872 reservation_seqcount_class +EXPORT_SYMBOL vmlinux 0x0a3131f6 strnchr +EXPORT_SYMBOL vmlinux 0x0a373226 crc32_le_shift +EXPORT_SYMBOL vmlinux 0x0a3b4966 sock_alloc_file +EXPORT_SYMBOL vmlinux 0x0a469d23 mfd_clone_cell +EXPORT_SYMBOL vmlinux 0x0a62addb pci_save_state +EXPORT_SYMBOL vmlinux 0x0a7c48c9 scsi_add_host_with_dma +EXPORT_SYMBOL vmlinux 0x0a7d23a5 blk_mq_map_queue +EXPORT_SYMBOL vmlinux 0x0a828970 mipi_dsi_dcs_set_tear_on +EXPORT_SYMBOL vmlinux 0x0aa309cf synchronize_hardirq +EXPORT_SYMBOL vmlinux 0x0acf7679 dma_issue_pending_all +EXPORT_SYMBOL vmlinux 0x0acf81ab tty_port_carrier_raised +EXPORT_SYMBOL vmlinux 0x0ad4e913 jbd2_journal_invalidatepage +EXPORT_SYMBOL vmlinux 0x0b0c23bc input_mt_assign_slots +EXPORT_SYMBOL vmlinux 0x0b0d888b icmpv6_err_convert +EXPORT_SYMBOL vmlinux 0x0b1731cb __netif_schedule +EXPORT_SYMBOL vmlinux 0x0b1beb31 vmalloc_32_user +EXPORT_SYMBOL vmlinux 0x0b4042f8 clocksource_unregister +EXPORT_SYMBOL vmlinux 0x0b48677a __kfifo_init +EXPORT_SYMBOL vmlinux 0x0b586b91 kmem_cache_free +EXPORT_SYMBOL vmlinux 0x0b6a7ea2 invalidate_bdev +EXPORT_SYMBOL vmlinux 0x0b742fd7 simple_strtol +EXPORT_SYMBOL vmlinux 0x0ba8d6c1 inode_init_once +EXPORT_SYMBOL vmlinux 0x0ba98f62 rtnl_configure_link +EXPORT_SYMBOL vmlinux 0x0bab30e0 mmc_can_reset +EXPORT_SYMBOL vmlinux 0x0bbc5908 gen_estimator_active +EXPORT_SYMBOL vmlinux 0x0bc477a2 irq_set_irq_type +EXPORT_SYMBOL vmlinux 0x0c0170bf scsi_scan_target +EXPORT_SYMBOL vmlinux 0x0c12e626 __debugger_bpt +EXPORT_SYMBOL vmlinux 0x0c2fe3a6 call_netdevice_notifiers +EXPORT_SYMBOL vmlinux 0x0c45fc96 vfs_lstat +EXPORT_SYMBOL vmlinux 0x0c52bc4d dev_mc_del +EXPORT_SYMBOL vmlinux 0x0c58a8cd netdev_increment_features +EXPORT_SYMBOL vmlinux 0x0c978895 pci_try_set_mwi +EXPORT_SYMBOL vmlinux 0x0c9b6089 nvram_get_size +EXPORT_SYMBOL vmlinux 0x0ca0c882 twl6030_interrupt_mask +EXPORT_SYMBOL vmlinux 0x0ca7588f fsl_ifc_ctrl_dev +EXPORT_SYMBOL vmlinux 0x0ca9ed06 mipi_dsi_generic_read +EXPORT_SYMBOL vmlinux 0x0cae232b utf16s_to_utf8s +EXPORT_SYMBOL vmlinux 0x0cb9848b md_finish_reshape +EXPORT_SYMBOL vmlinux 0x0ccc5cd2 jbd2_journal_abort +EXPORT_SYMBOL vmlinux 0x0cd3edb6 pm8606_osc_enable +EXPORT_SYMBOL vmlinux 0x0ce7a71c inode_get_bytes +EXPORT_SYMBOL vmlinux 0x0ce801ef md_write_end +EXPORT_SYMBOL vmlinux 0x0ce91bec fb_set_suspend +EXPORT_SYMBOL vmlinux 0x0cf21d23 tty_flip_buffer_push +EXPORT_SYMBOL vmlinux 0x0cfc1427 tcp_sync_mss +EXPORT_SYMBOL vmlinux 0x0d298e28 module_refcount +EXPORT_SYMBOL vmlinux 0x0d2d96d7 __dec_zone_page_state +EXPORT_SYMBOL vmlinux 0x0d3c10c1 iter_file_splice_write +EXPORT_SYMBOL vmlinux 0x0d403d45 agp_put_bridge +EXPORT_SYMBOL vmlinux 0x0d542439 __ipv6_addr_type +EXPORT_SYMBOL vmlinux 0x0d61eeee __bitmap_subset +EXPORT_SYMBOL vmlinux 0x0d66633a netlink_broadcast +EXPORT_SYMBOL vmlinux 0x0d6f35db dev_set_group +EXPORT_SYMBOL vmlinux 0x0d70bf2e simple_lookup +EXPORT_SYMBOL vmlinux 0x0d8003e8 twl6040_reg_write +EXPORT_SYMBOL vmlinux 0x0d9d69f1 tc_classify +EXPORT_SYMBOL vmlinux 0x0da01fa5 __blk_mq_end_request +EXPORT_SYMBOL vmlinux 0x0da10ec3 security_sock_graft +EXPORT_SYMBOL vmlinux 0x0dbf8846 blk_end_request +EXPORT_SYMBOL vmlinux 0x0dc0ace0 idr_find_slowpath +EXPORT_SYMBOL vmlinux 0x0dc1a78c bin2hex +EXPORT_SYMBOL vmlinux 0x0dc532ca vme_dma_list_exec +EXPORT_SYMBOL vmlinux 0x0dc66093 phy_driver_unregister +EXPORT_SYMBOL vmlinux 0x0dc926dc bio_phys_segments +EXPORT_SYMBOL vmlinux 0x0dce1dfa blkdev_issue_flush +EXPORT_SYMBOL vmlinux 0x0de9251f copy_page_from_iter +EXPORT_SYMBOL vmlinux 0x0deb383b param_set_long +EXPORT_SYMBOL vmlinux 0x0e1656df xfrm_policy_bysel_ctx +EXPORT_SYMBOL vmlinux 0x0e32a214 contig_page_data +EXPORT_SYMBOL vmlinux 0x0e6da44a set_normalized_timespec +EXPORT_SYMBOL vmlinux 0x0e7b3a8a blk_recount_segments +EXPORT_SYMBOL vmlinux 0x0e89f03f inet_frag_find +EXPORT_SYMBOL vmlinux 0x0e8f30f6 _raw_write_lock_irq +EXPORT_SYMBOL vmlinux 0x0eaf451e hdmi_vendor_infoframe_pack +EXPORT_SYMBOL vmlinux 0x0ec18efe up_read +EXPORT_SYMBOL vmlinux 0x0ec5babe vme_dma_free +EXPORT_SYMBOL vmlinux 0x0ee83c4c simple_empty +EXPORT_SYMBOL vmlinux 0x0efcbb1b set_current_groups +EXPORT_SYMBOL vmlinux 0x0f185b50 nf_register_queue_handler +EXPORT_SYMBOL vmlinux 0x0f1b3113 cdrom_open +EXPORT_SYMBOL vmlinux 0x0f1ebe0d flock_lock_inode_wait +EXPORT_SYMBOL vmlinux 0x0f28cb91 nvram_read_byte +EXPORT_SYMBOL vmlinux 0x0f41ce53 default_file_splice_read +EXPORT_SYMBOL vmlinux 0x0f4c91ed ns_to_timespec +EXPORT_SYMBOL vmlinux 0x0f5faa7e wait_for_completion_io_timeout +EXPORT_SYMBOL vmlinux 0x0f6a3b5c string_get_size +EXPORT_SYMBOL vmlinux 0x0f6e5a6c skb_seq_read +EXPORT_SYMBOL vmlinux 0x0f75658f pcie_get_minimum_link +EXPORT_SYMBOL vmlinux 0x0f86a854 inet_select_addr +EXPORT_SYMBOL vmlinux 0x0f8735ad pagecache_isize_extended +EXPORT_SYMBOL vmlinux 0x0fa2998c inet_addr_type +EXPORT_SYMBOL vmlinux 0x0faef0ed __tasklet_schedule +EXPORT_SYMBOL vmlinux 0x0fb2f8a4 mktime64 +EXPORT_SYMBOL vmlinux 0x0fb65e99 sock_no_accept +EXPORT_SYMBOL vmlinux 0x0fc5bc1f dma_sync_wait +EXPORT_SYMBOL vmlinux 0x100ac608 sock_no_getsockopt +EXPORT_SYMBOL vmlinux 0x10166131 padata_free +EXPORT_SYMBOL vmlinux 0x101683c9 netif_set_real_num_rx_queues +EXPORT_SYMBOL vmlinux 0x1023b33c dev_open +EXPORT_SYMBOL vmlinux 0x10317536 dev_mc_sync +EXPORT_SYMBOL vmlinux 0x103c3c56 pci_claim_resource +EXPORT_SYMBOL vmlinux 0x1065867a tty_register_device +EXPORT_SYMBOL vmlinux 0x106f13ab crc_t10dif_generic +EXPORT_SYMBOL vmlinux 0x1073eada mmc_erase_group_aligned +EXPORT_SYMBOL vmlinux 0x107adfa5 inet_frags_exit_net +EXPORT_SYMBOL vmlinux 0x107e5878 zlib_inflateEnd +EXPORT_SYMBOL vmlinux 0x107f29f2 param_get_ullong +EXPORT_SYMBOL vmlinux 0x1082ee4b scsi_print_command +EXPORT_SYMBOL vmlinux 0x108dfb03 unregister_md_personality +EXPORT_SYMBOL vmlinux 0x10a6f846 alloc_etherdev_mqs +EXPORT_SYMBOL vmlinux 0x10d25c70 __ip_dev_find +EXPORT_SYMBOL vmlinux 0x10dfdd2a mmc_set_data_timeout +EXPORT_SYMBOL vmlinux 0x10eac5d5 fasync_helper +EXPORT_SYMBOL vmlinux 0x10ee20bb default_blu +EXPORT_SYMBOL vmlinux 0x10ef7eb2 set_page_dirty_lock +EXPORT_SYMBOL vmlinux 0x10f21f61 nvdimm_namespace_capacity +EXPORT_SYMBOL vmlinux 0x11089ac7 _ctype +EXPORT_SYMBOL vmlinux 0x11338716 dquot_disable +EXPORT_SYMBOL vmlinux 0x114f3a07 mmc_detect_change +EXPORT_SYMBOL vmlinux 0x1163f0a7 blk_max_low_pfn +EXPORT_SYMBOL vmlinux 0x116dd13b dev_add_pack +EXPORT_SYMBOL vmlinux 0x117093be qdisc_class_hash_init +EXPORT_SYMBOL vmlinux 0x1182d83a cpuidle_disable +EXPORT_SYMBOL vmlinux 0x118a5e56 blk_limits_io_min +EXPORT_SYMBOL vmlinux 0x119d779a sk_mc_loop +EXPORT_SYMBOL vmlinux 0x11a044f6 mod_timer_pinned +EXPORT_SYMBOL vmlinux 0x11b7ff3f pci_pme_capable +EXPORT_SYMBOL vmlinux 0x11db6e84 __ip_select_ident +EXPORT_SYMBOL vmlinux 0x11ead6fc console_stop +EXPORT_SYMBOL vmlinux 0x11f7ed4c hex_to_bin +EXPORT_SYMBOL vmlinux 0x120b336a __rb_insert_augmented +EXPORT_SYMBOL vmlinux 0x120fc6b1 kstrdup_const +EXPORT_SYMBOL vmlinux 0x12308bb3 blk_queue_invalidate_tags +EXPORT_SYMBOL vmlinux 0x12317ee4 neigh_sysctl_register +EXPORT_SYMBOL vmlinux 0x1242db10 nf_log_set +EXPORT_SYMBOL vmlinux 0x12486ab7 tcf_hash_search +EXPORT_SYMBOL vmlinux 0x127b460d jbd2_log_start_commit +EXPORT_SYMBOL vmlinux 0x12843651 devm_ioremap_nocache +EXPORT_SYMBOL vmlinux 0x128d4fdd netif_set_real_num_tx_queues +EXPORT_SYMBOL vmlinux 0x12961927 udp_sendmsg +EXPORT_SYMBOL vmlinux 0x1298582d switch_mmu_context +EXPORT_SYMBOL vmlinux 0x12a38747 usleep_range +EXPORT_SYMBOL vmlinux 0x12cd85f2 have_submounts +EXPORT_SYMBOL vmlinux 0x12da5bb2 __kmalloc +EXPORT_SYMBOL vmlinux 0x12e451c8 devm_request_threaded_irq +EXPORT_SYMBOL vmlinux 0x12e48766 dcache_dir_lseek +EXPORT_SYMBOL vmlinux 0x12f512e9 kthread_stop +EXPORT_SYMBOL vmlinux 0x13002183 dentry_path_raw +EXPORT_SYMBOL vmlinux 0x130e5fdd blk_post_runtime_suspend +EXPORT_SYMBOL vmlinux 0x131f7c6d vfs_iter_write +EXPORT_SYMBOL vmlinux 0x13243d4b wl1251_get_platform_data +EXPORT_SYMBOL vmlinux 0x13307fde vsscanf +EXPORT_SYMBOL vmlinux 0x1348e490 dev_printk +EXPORT_SYMBOL vmlinux 0x13542cf1 unregister_framebuffer +EXPORT_SYMBOL vmlinux 0x1357caf6 seq_read +EXPORT_SYMBOL vmlinux 0x1370c675 blk_mq_add_to_requeue_list +EXPORT_SYMBOL vmlinux 0x139a7bc9 vfs_readf +EXPORT_SYMBOL vmlinux 0x13b17213 dev_printk_emit +EXPORT_SYMBOL vmlinux 0x13b27f67 of_n_size_cells +EXPORT_SYMBOL vmlinux 0x13bff990 ip_mc_dec_group +EXPORT_SYMBOL vmlinux 0x13d0adf7 __kfifo_out +EXPORT_SYMBOL vmlinux 0x13d5cbe6 path_is_under +EXPORT_SYMBOL vmlinux 0x13df4093 i2c_register_driver +EXPORT_SYMBOL vmlinux 0x13e5a882 swiotlb_unmap_sg_attrs +EXPORT_SYMBOL vmlinux 0x13f42152 system_entering_hibernation +EXPORT_SYMBOL vmlinux 0x13f560a6 simple_open +EXPORT_SYMBOL vmlinux 0x13f7da65 iterate_dir +EXPORT_SYMBOL vmlinux 0x13fe13ff file_open_root +EXPORT_SYMBOL vmlinux 0x1407c6e7 kmap_prot +EXPORT_SYMBOL vmlinux 0x1420b379 kstrtou16_from_user +EXPORT_SYMBOL vmlinux 0x1435e8e2 blk_queue_chunk_sectors +EXPORT_SYMBOL vmlinux 0x145499f6 bh_submit_read +EXPORT_SYMBOL vmlinux 0x146e85d4 key_put +EXPORT_SYMBOL vmlinux 0x1479259e tso_build_data +EXPORT_SYMBOL vmlinux 0x147b0d7c dquot_commit_info +EXPORT_SYMBOL vmlinux 0x1499fe33 submit_bh +EXPORT_SYMBOL vmlinux 0x14a65b73 tcp_recvmsg +EXPORT_SYMBOL vmlinux 0x14ea6050 blk_rq_map_sg +EXPORT_SYMBOL vmlinux 0x1508a959 pci_choose_state +EXPORT_SYMBOL vmlinux 0x1516c4c7 xfrm_input_unregister_afinfo +EXPORT_SYMBOL vmlinux 0x154c6338 dm_kcopyd_client_destroy +EXPORT_SYMBOL vmlinux 0x15514736 scsi_block_requests +EXPORT_SYMBOL vmlinux 0x155f271a devm_gpiod_put_array +EXPORT_SYMBOL vmlinux 0x156106e7 agp_allocate_memory +EXPORT_SYMBOL vmlinux 0x157720c4 __netlink_dump_start +EXPORT_SYMBOL vmlinux 0x157d52ba release_firmware +EXPORT_SYMBOL vmlinux 0x15af86ab __scsi_add_device +EXPORT_SYMBOL vmlinux 0x15b70116 dma_direct_ops +EXPORT_SYMBOL vmlinux 0x15bafe29 unregister_md_cluster_operations +EXPORT_SYMBOL vmlinux 0x15ca463a generic_writepages +EXPORT_SYMBOL vmlinux 0x15d31cf2 dev_set_allmulti +EXPORT_SYMBOL vmlinux 0x15d3fd60 prepare_to_wait_event +EXPORT_SYMBOL vmlinux 0x15efd4bd __cleancache_invalidate_fs +EXPORT_SYMBOL vmlinux 0x161afc2a fbcon_set_bitops +EXPORT_SYMBOL vmlinux 0x161d0033 proc_doulongvec_minmax +EXPORT_SYMBOL vmlinux 0x164ebd94 nf_afinfo +EXPORT_SYMBOL vmlinux 0x16540bbc __cmpdi2 +EXPORT_SYMBOL vmlinux 0x165c9d0b dev_trans_start +EXPORT_SYMBOL vmlinux 0x16619531 __ww_mutex_lock +EXPORT_SYMBOL vmlinux 0x16791ead blk_mq_start_request +EXPORT_SYMBOL vmlinux 0x1683a50b radix_tree_delete +EXPORT_SYMBOL vmlinux 0x168f2463 vme_unregister_bridge +EXPORT_SYMBOL vmlinux 0x16922aa3 tcp_init_xmit_timers +EXPORT_SYMBOL vmlinux 0x16c27bb4 of_phy_is_fixed_link +EXPORT_SYMBOL vmlinux 0x16c551cc rtnl_create_link +EXPORT_SYMBOL vmlinux 0x16cfcf32 neigh_table_init +EXPORT_SYMBOL vmlinux 0x16d03ec8 param_get_uint +EXPORT_SYMBOL vmlinux 0x16de7762 tcp_mtup_init +EXPORT_SYMBOL vmlinux 0x16e3889c sk_free +EXPORT_SYMBOL vmlinux 0x17119bfc devm_ioport_map +EXPORT_SYMBOL vmlinux 0x172158b7 pci_device_from_OF_node +EXPORT_SYMBOL vmlinux 0x173cb6d4 neigh_lookup +EXPORT_SYMBOL vmlinux 0x17456f4b dev_get_by_name +EXPORT_SYMBOL vmlinux 0x17634823 param_ops_uint +EXPORT_SYMBOL vmlinux 0x17641d30 key_type_keyring +EXPORT_SYMBOL vmlinux 0x17648396 dev_base_lock +EXPORT_SYMBOL vmlinux 0x1766ef3f kernel_connect +EXPORT_SYMBOL vmlinux 0x17741833 flush_tlb_range +EXPORT_SYMBOL vmlinux 0x178879db blk_integrity_merge_bio +EXPORT_SYMBOL vmlinux 0x179c64cc kmem_cache_alloc +EXPORT_SYMBOL vmlinux 0x179dada4 filp_close +EXPORT_SYMBOL vmlinux 0x17a0fd60 read_cache_page_gfp +EXPORT_SYMBOL vmlinux 0x17aa156a __ucmpdi2 +EXPORT_SYMBOL vmlinux 0x17b1125d gen_kill_estimator +EXPORT_SYMBOL vmlinux 0x17b6fa11 kfree_skb +EXPORT_SYMBOL vmlinux 0x17c6735e __quota_error +EXPORT_SYMBOL vmlinux 0x17c7c3c5 block_commit_write +EXPORT_SYMBOL vmlinux 0x17dbf589 unlock_two_nondirectories +EXPORT_SYMBOL vmlinux 0x17e28473 fsl_upm_run_pattern +EXPORT_SYMBOL vmlinux 0x17eaa9fd blk_pre_runtime_resume +EXPORT_SYMBOL vmlinux 0x17f341a0 i8042_lock_chip +EXPORT_SYMBOL vmlinux 0x180ecb8a max8925_bulk_read +EXPORT_SYMBOL vmlinux 0x180f36c2 generic_file_splice_read +EXPORT_SYMBOL vmlinux 0x1813b948 dquot_quota_on_mount +EXPORT_SYMBOL vmlinux 0x1815f759 genphy_aneg_done +EXPORT_SYMBOL vmlinux 0x18205e5c abx500_set_register_interruptible +EXPORT_SYMBOL vmlinux 0x1826f089 __tracepoint_kmem_cache_alloc_node +EXPORT_SYMBOL vmlinux 0x1829d188 wait_woken +EXPORT_SYMBOL vmlinux 0x1833f33a of_find_node_opts_by_path +EXPORT_SYMBOL vmlinux 0x18354911 eth_validate_addr +EXPORT_SYMBOL vmlinux 0x1837810c param_ops_int +EXPORT_SYMBOL vmlinux 0x183e29c1 netif_carrier_off +EXPORT_SYMBOL vmlinux 0x183fa88b mempool_alloc_slab +EXPORT_SYMBOL vmlinux 0x18479375 con_set_default_unimap +EXPORT_SYMBOL vmlinux 0x184b82fb mmc_vddrange_to_ocrmask +EXPORT_SYMBOL vmlinux 0x1877c7ab mutex_lock_interruptible +EXPORT_SYMBOL vmlinux 0x188a3dfb timespec_trunc +EXPORT_SYMBOL vmlinux 0x189868d7 get_random_bytes_arch +EXPORT_SYMBOL vmlinux 0x18ab63b7 truncate_inode_pages_range +EXPORT_SYMBOL vmlinux 0x18dcf37e simple_fill_super +EXPORT_SYMBOL vmlinux 0x19163b0b bioset_free +EXPORT_SYMBOL vmlinux 0x192fc039 scsi_register_driver +EXPORT_SYMBOL vmlinux 0x1932d80c scsi_command_normalize_sense +EXPORT_SYMBOL vmlinux 0x19378037 mipi_dsi_dcs_get_power_mode +EXPORT_SYMBOL vmlinux 0x194b6f31 invalidate_mapping_pages +EXPORT_SYMBOL vmlinux 0x19544061 mmc_gpiod_request_cd +EXPORT_SYMBOL vmlinux 0x195691c0 sched_autogroup_create_attach +EXPORT_SYMBOL vmlinux 0x196481e3 blk_alloc_queue_node +EXPORT_SYMBOL vmlinux 0x197ce735 abort_creds +EXPORT_SYMBOL vmlinux 0x1998b3b2 sock_init_data +EXPORT_SYMBOL vmlinux 0x199ed0cd net_disable_timestamp +EXPORT_SYMBOL vmlinux 0x19ade858 scsi_ioctl_reset +EXPORT_SYMBOL vmlinux 0x19b679d2 gnet_stats_copy_queue +EXPORT_SYMBOL vmlinux 0x19ba1dc7 fence_enable_sw_signaling +EXPORT_SYMBOL vmlinux 0x19bb217b inet_sendpage +EXPORT_SYMBOL vmlinux 0x19bd383b security_secmark_refcount_dec +EXPORT_SYMBOL vmlinux 0x19c18beb unregister_tcf_proto_ops +EXPORT_SYMBOL vmlinux 0x19c2f129 insert_inode_locked +EXPORT_SYMBOL vmlinux 0x19d6798e fb_firmware_edid +EXPORT_SYMBOL vmlinux 0x19dbb88a __frontswap_test +EXPORT_SYMBOL vmlinux 0x19e651f5 max8925_reg_write +EXPORT_SYMBOL vmlinux 0x19f63a56 tty_port_close_start +EXPORT_SYMBOL vmlinux 0x19fe04db __inet6_lookup_established +EXPORT_SYMBOL vmlinux 0x1a01c329 phy_device_register +EXPORT_SYMBOL vmlinux 0x1a184cf5 of_find_node_by_type +EXPORT_SYMBOL vmlinux 0x1a1b0cf9 scsi_set_medium_removal +EXPORT_SYMBOL vmlinux 0x1a41d7a9 truncate_inode_pages_final +EXPORT_SYMBOL vmlinux 0x1a555549 unregister_shrinker +EXPORT_SYMBOL vmlinux 0x1a5dc5f3 max8998_bulk_read +EXPORT_SYMBOL vmlinux 0x1a766eba of_match_node +EXPORT_SYMBOL vmlinux 0x1a867efd mb_cache_entry_alloc +EXPORT_SYMBOL vmlinux 0x1a97d96f fs_bio_set +EXPORT_SYMBOL vmlinux 0x1aa21f5c register_key_type +EXPORT_SYMBOL vmlinux 0x1abda5c7 genphy_soft_reset +EXPORT_SYMBOL vmlinux 0x1acbb2b3 unlink_framebuffer +EXPORT_SYMBOL vmlinux 0x1adb3dc4 phys_mem_access_prot +EXPORT_SYMBOL vmlinux 0x1ae06e12 __tracepoint_fence_annotate_wait_on +EXPORT_SYMBOL vmlinux 0x1aeccdc7 tty_port_close_end +EXPORT_SYMBOL vmlinux 0x1af42fbd generic_key_instantiate +EXPORT_SYMBOL vmlinux 0x1af62a99 panic_notifier_list +EXPORT_SYMBOL vmlinux 0x1af706c6 bio_unmap_user +EXPORT_SYMBOL vmlinux 0x1b015d25 bitmap_parselist +EXPORT_SYMBOL vmlinux 0x1b06a209 blk_set_default_limits +EXPORT_SYMBOL vmlinux 0x1b0ac272 __tracepoint_kmalloc_node +EXPORT_SYMBOL vmlinux 0x1b1035ee alloc_fcdev +EXPORT_SYMBOL vmlinux 0x1b132009 rename_lock +EXPORT_SYMBOL vmlinux 0x1b1e1088 sg_nents +EXPORT_SYMBOL vmlinux 0x1b24a48b pcie_get_readrq +EXPORT_SYMBOL vmlinux 0x1b3c1054 lro_receive_skb +EXPORT_SYMBOL vmlinux 0x1b6314fd in_aton +EXPORT_SYMBOL vmlinux 0x1b82fefa md_unplug +EXPORT_SYMBOL vmlinux 0x1b8b95ad i8042_unlock_chip +EXPORT_SYMBOL vmlinux 0x1b94a0ef kthread_bind +EXPORT_SYMBOL vmlinux 0x1bb31047 add_timer +EXPORT_SYMBOL vmlinux 0x1bb70131 del_random_ready_callback +EXPORT_SYMBOL vmlinux 0x1bbb72b0 tc_classify_compat +EXPORT_SYMBOL vmlinux 0x1bbbb56a input_close_device +EXPORT_SYMBOL vmlinux 0x1bc4ff03 tty_termios_hw_change +EXPORT_SYMBOL vmlinux 0x1bca2b59 load_fp_state +EXPORT_SYMBOL vmlinux 0x1bccd800 sk_reset_timer +EXPORT_SYMBOL vmlinux 0x1bd07045 rtnl_set_sk_err +EXPORT_SYMBOL vmlinux 0x1bf59ccd wireless_send_event +EXPORT_SYMBOL vmlinux 0x1c003728 bio_init +EXPORT_SYMBOL vmlinux 0x1c220ed0 pci_stop_and_remove_bus_device +EXPORT_SYMBOL vmlinux 0x1c267621 pagecache_write_begin +EXPORT_SYMBOL vmlinux 0x1c2ca3d3 udp_proc_register +EXPORT_SYMBOL vmlinux 0x1c311d79 jbd2_journal_clear_err +EXPORT_SYMBOL vmlinux 0x1c33ef42 bdev_read_only +EXPORT_SYMBOL vmlinux 0x1c4bf386 crypto_sha1_update +EXPORT_SYMBOL vmlinux 0x1c60503f agp_generic_type_to_mask_type +EXPORT_SYMBOL vmlinux 0x1c7308dc netif_set_xps_queue +EXPORT_SYMBOL vmlinux 0x1c80de9c ip_send_check +EXPORT_SYMBOL vmlinux 0x1c81434d simple_unlink +EXPORT_SYMBOL vmlinux 0x1ca40c45 ndo_dflt_fdb_del +EXPORT_SYMBOL vmlinux 0x1cb13f60 nobh_truncate_page +EXPORT_SYMBOL vmlinux 0x1cb81766 dev_activate +EXPORT_SYMBOL vmlinux 0x1cc32189 mipi_dsi_detach +EXPORT_SYMBOL vmlinux 0x1cce6cf8 xfrm_alloc_spi +EXPORT_SYMBOL vmlinux 0x1cd29ff1 uart_resume_port +EXPORT_SYMBOL vmlinux 0x1d159adc mipi_dsi_host_register +EXPORT_SYMBOL vmlinux 0x1d2e99ad t10_pi_type3_ip +EXPORT_SYMBOL vmlinux 0x1d329dbb udp_lib_setsockopt +EXPORT_SYMBOL vmlinux 0x1d41c055 default_qdisc_ops +EXPORT_SYMBOL vmlinux 0x1d555f20 __nla_put_nohdr +EXPORT_SYMBOL vmlinux 0x1d716e99 d_drop +EXPORT_SYMBOL vmlinux 0x1d7e437d give_up_console +EXPORT_SYMBOL vmlinux 0x1d816cab inet_sendmsg +EXPORT_SYMBOL vmlinux 0x1daee28a percpu_counter_destroy +EXPORT_SYMBOL vmlinux 0x1dbeb0cf page_symlink_inode_operations +EXPORT_SYMBOL vmlinux 0x1dc36131 fb_destroy_modedb +EXPORT_SYMBOL vmlinux 0x1dd571e6 fb_copy_cmap +EXPORT_SYMBOL vmlinux 0x1dd5f12e inet_offloads +EXPORT_SYMBOL vmlinux 0x1dd8efe5 arp_tbl +EXPORT_SYMBOL vmlinux 0x1e090edc vme_bus_num +EXPORT_SYMBOL vmlinux 0x1e1474dd xfrm_policy_flush +EXPORT_SYMBOL vmlinux 0x1e237cd6 key_instantiate_and_link +EXPORT_SYMBOL vmlinux 0x1e239e53 nd_region_to_nstype +EXPORT_SYMBOL vmlinux 0x1e26be3b get_anon_bdev +EXPORT_SYMBOL vmlinux 0x1e28d088 revert_creds +EXPORT_SYMBOL vmlinux 0x1e3e6626 cpufreq_power_cooling_register +EXPORT_SYMBOL vmlinux 0x1e6d26a8 strstr +EXPORT_SYMBOL vmlinux 0x1e9c588d xfrm6_protocol_deregister +EXPORT_SYMBOL vmlinux 0x1e9edfb7 seq_hlist_start_head_rcu +EXPORT_SYMBOL vmlinux 0x1ebdbbd7 nf_unregister_sockopt +EXPORT_SYMBOL vmlinux 0x1ec89dd8 flush_dcache_icache_page +EXPORT_SYMBOL vmlinux 0x1ee2f09e unregister_filesystem +EXPORT_SYMBOL vmlinux 0x1f2866bc sock_kmalloc +EXPORT_SYMBOL vmlinux 0x1f368799 eth_gro_receive +EXPORT_SYMBOL vmlinux 0x1f3aa3ab phy_disconnect +EXPORT_SYMBOL vmlinux 0x1f576470 of_translate_address +EXPORT_SYMBOL vmlinux 0x1f699a6b sock_no_poll +EXPORT_SYMBOL vmlinux 0x1f6c1d06 agp_generic_free_by_type +EXPORT_SYMBOL vmlinux 0x1f7e807f kstrtoint_from_user +EXPORT_SYMBOL vmlinux 0x1f887908 dev_get_nest_level +EXPORT_SYMBOL vmlinux 0x1f900f84 inet_frag_maybe_warn_overflow +EXPORT_SYMBOL vmlinux 0x1f949fc2 cros_ec_cmd_xfer +EXPORT_SYMBOL vmlinux 0x1fb06405 of_get_ibm_chip_id +EXPORT_SYMBOL vmlinux 0x1fbd16da ip_tos2prio +EXPORT_SYMBOL vmlinux 0x1fd07fff kdb_grepping_flag +EXPORT_SYMBOL vmlinux 0x1fdad60e of_io_request_and_map +EXPORT_SYMBOL vmlinux 0x1fe5aab6 generic_pipe_buf_steal +EXPORT_SYMBOL vmlinux 0x1fe912f1 netdev_alloc_frag +EXPORT_SYMBOL vmlinux 0x1fe9f800 unregister_cpu_notifier +EXPORT_SYMBOL vmlinux 0x1fedf0f4 __request_region +EXPORT_SYMBOL vmlinux 0x1ffb31ed keyring_clear +EXPORT_SYMBOL vmlinux 0x20000329 simple_strtoul +EXPORT_SYMBOL vmlinux 0x20014637 generic_removexattr +EXPORT_SYMBOL vmlinux 0x200b2041 in6addr_any +EXPORT_SYMBOL vmlinux 0x2019f28e ip6_xmit +EXPORT_SYMBOL vmlinux 0x203a3658 d_walk +EXPORT_SYMBOL vmlinux 0x204c19f5 tcp_alloc_md5sig_pool +EXPORT_SYMBOL vmlinux 0x205adb8a tty_port_tty_get +EXPORT_SYMBOL vmlinux 0x206687ad cpm_muram_alloc_fixed +EXPORT_SYMBOL vmlinux 0x2072ee9b request_threaded_irq +EXPORT_SYMBOL vmlinux 0x20746fc8 udp_push_pending_frames +EXPORT_SYMBOL vmlinux 0x20846a1b dentry_open +EXPORT_SYMBOL vmlinux 0x208c049f posix_lock_inode_wait +EXPORT_SYMBOL vmlinux 0x2099eb58 security_inode_listsecurity +EXPORT_SYMBOL vmlinux 0x20a789ac irq_set_chip_data +EXPORT_SYMBOL vmlinux 0x20b38bfd bio_copy_kern +EXPORT_SYMBOL vmlinux 0x20c55ae0 sscanf +EXPORT_SYMBOL vmlinux 0x20df5a3d vme_dma_pci_attribute +EXPORT_SYMBOL vmlinux 0x20e9f9d0 __cleancache_get_page +EXPORT_SYMBOL vmlinux 0x20f33f9c bio_endio +EXPORT_SYMBOL vmlinux 0x2141cd72 i2c_smbus_read_block_data +EXPORT_SYMBOL vmlinux 0x2147fb0c i2c_clients_command +EXPORT_SYMBOL vmlinux 0x2161f5fc km_is_alive +EXPORT_SYMBOL vmlinux 0x217c7ae7 pcim_pin_device +EXPORT_SYMBOL vmlinux 0x219e22b4 generic_cont_expand_simple +EXPORT_SYMBOL vmlinux 0x21ad041c blk_rq_map_user +EXPORT_SYMBOL vmlinux 0x21cc9579 pm860x_bulk_read +EXPORT_SYMBOL vmlinux 0x21df74d9 bitmap_set +EXPORT_SYMBOL vmlinux 0x21e24a14 i2c_verify_adapter +EXPORT_SYMBOL vmlinux 0x21f19335 fence_remove_callback +EXPORT_SYMBOL vmlinux 0x21f3dc15 cpm_command +EXPORT_SYMBOL vmlinux 0x2207b7da blk_get_request +EXPORT_SYMBOL vmlinux 0x2229b1e0 atomic_dec_and_mutex_lock +EXPORT_SYMBOL vmlinux 0x222e7ce2 sysfs_streq +EXPORT_SYMBOL vmlinux 0x2235d832 __napi_schedule +EXPORT_SYMBOL vmlinux 0x2256fafa div64_u64_rem +EXPORT_SYMBOL vmlinux 0x2259b1f1 posix_lock_file +EXPORT_SYMBOL vmlinux 0x226ef615 udp_proc_unregister +EXPORT_SYMBOL vmlinux 0x2276db98 kstrtoint +EXPORT_SYMBOL vmlinux 0x2278e94b slhc_remember +EXPORT_SYMBOL vmlinux 0x22870981 linkwatch_fire_event +EXPORT_SYMBOL vmlinux 0x2287bae4 pci_scan_single_device +EXPORT_SYMBOL vmlinux 0x22b0701a save_mount_options +EXPORT_SYMBOL vmlinux 0x22b325d5 kd_mksound +EXPORT_SYMBOL vmlinux 0x22c32b2f iput +EXPORT_SYMBOL vmlinux 0x22dfdd06 radix_tree_tag_set +EXPORT_SYMBOL vmlinux 0x22f76534 mmc_get_card +EXPORT_SYMBOL vmlinux 0x231b258e __skb_gso_segment +EXPORT_SYMBOL vmlinux 0x231d4001 fb_edid_add_monspecs +EXPORT_SYMBOL vmlinux 0x23234556 pci_enable_msix +EXPORT_SYMBOL vmlinux 0x233917d1 mac_vmode_to_var +EXPORT_SYMBOL vmlinux 0x2355a1a3 scsi_is_sdev_device +EXPORT_SYMBOL vmlinux 0x235e90f3 __wake_up_bit +EXPORT_SYMBOL vmlinux 0x23718609 posix_acl_from_xattr +EXPORT_SYMBOL vmlinux 0x2378a94c fib_default_rule_add +EXPORT_SYMBOL vmlinux 0x238a3882 __xfrm_state_destroy +EXPORT_SYMBOL vmlinux 0x23a574fd security_secmark_relabel_packet +EXPORT_SYMBOL vmlinux 0x23b42c88 clear_wb_congested +EXPORT_SYMBOL vmlinux 0x23b9d6e2 mangle_path +EXPORT_SYMBOL vmlinux 0x23cb1a9b xfrm_state_unregister_afinfo +EXPORT_SYMBOL vmlinux 0x23d4ae82 pcie_port_service_unregister +EXPORT_SYMBOL vmlinux 0x23d74335 __get_page_tail +EXPORT_SYMBOL vmlinux 0x23f2243d mempool_free +EXPORT_SYMBOL vmlinux 0x23faa651 napi_complete_done +EXPORT_SYMBOL vmlinux 0x23fd3028 vmalloc_node +EXPORT_SYMBOL vmlinux 0x241e3975 tcp_shutdown +EXPORT_SYMBOL vmlinux 0x24212d86 __frontswap_invalidate_page +EXPORT_SYMBOL vmlinux 0x24428be5 strncpy_from_user +EXPORT_SYMBOL vmlinux 0x24503413 proc_create_data +EXPORT_SYMBOL vmlinux 0x2459bbcc console_set_on_cmdline +EXPORT_SYMBOL vmlinux 0x2481b631 ipv6_mc_check_mld +EXPORT_SYMBOL vmlinux 0x2482e688 vsprintf +EXPORT_SYMBOL vmlinux 0x24855cba __percpu_counter_compare +EXPORT_SYMBOL vmlinux 0x24b83018 locks_init_lock +EXPORT_SYMBOL vmlinux 0x24bd7952 tty_throttle +EXPORT_SYMBOL vmlinux 0x24be790d __cleancache_invalidate_inode +EXPORT_SYMBOL vmlinux 0x24bec674 param_set_invbool +EXPORT_SYMBOL vmlinux 0x24c1e6b9 drop_nlink +EXPORT_SYMBOL vmlinux 0x24e66cfb dcb_getapp +EXPORT_SYMBOL vmlinux 0x24f00380 ida_init +EXPORT_SYMBOL vmlinux 0x24fba8ed scsi_device_resume +EXPORT_SYMBOL vmlinux 0x24fdac79 wake_bit_function +EXPORT_SYMBOL vmlinux 0x250113b4 memory_read_from_buffer +EXPORT_SYMBOL vmlinux 0x25041cbe dquot_commit +EXPORT_SYMBOL vmlinux 0x25277497 rfkill_register +EXPORT_SYMBOL vmlinux 0x2541ec40 i2c_del_driver +EXPORT_SYMBOL vmlinux 0x254c89a4 gro_find_receive_by_type +EXPORT_SYMBOL vmlinux 0x2559bd15 import_iovec +EXPORT_SYMBOL vmlinux 0x2565d2d7 fput +EXPORT_SYMBOL vmlinux 0x256dc1d3 max8925_bulk_write +EXPORT_SYMBOL vmlinux 0x2570a138 reservation_seqcount_string +EXPORT_SYMBOL vmlinux 0x25820c64 fs_overflowuid +EXPORT_SYMBOL vmlinux 0x258d5f32 vfs_symlink +EXPORT_SYMBOL vmlinux 0x2597241c file_update_time +EXPORT_SYMBOL vmlinux 0x2597a05b alloc_fddidev +EXPORT_SYMBOL vmlinux 0x25ae101b write_cache_pages +EXPORT_SYMBOL vmlinux 0x25be8d42 mmc_power_restore_host +EXPORT_SYMBOL vmlinux 0x25e8bcbf inode_dio_wait +EXPORT_SYMBOL vmlinux 0x25e8ed29 sg_nents_for_len +EXPORT_SYMBOL vmlinux 0x25e9d4bd resource_list_free +EXPORT_SYMBOL vmlinux 0x25f296b8 sg_miter_skip +EXPORT_SYMBOL vmlinux 0x25f3bd2e atomic64_xchg +EXPORT_SYMBOL vmlinux 0x26142be0 icmpv6_send +EXPORT_SYMBOL vmlinux 0x263beb75 ecryptfs_get_versions +EXPORT_SYMBOL vmlinux 0x263fb08a pm860x_reg_read +EXPORT_SYMBOL vmlinux 0x26477c07 __vmalloc +EXPORT_SYMBOL vmlinux 0x2650d835 sysctl_ip_early_demux +EXPORT_SYMBOL vmlinux 0x266060c2 nf_register_hook +EXPORT_SYMBOL vmlinux 0x2663b2e4 kernel_param_unlock +EXPORT_SYMBOL vmlinux 0x2695c94a of_device_get_match_data +EXPORT_SYMBOL vmlinux 0x269c6a3c scsi_print_sense +EXPORT_SYMBOL vmlinux 0x269c7b79 __alloc_skb +EXPORT_SYMBOL vmlinux 0x26a07699 fbcon_set_rotate +EXPORT_SYMBOL vmlinux 0x26a172a2 generic_readlink +EXPORT_SYMBOL vmlinux 0x26a6b6f7 bfifo_qdisc_ops +EXPORT_SYMBOL vmlinux 0x26b760c4 slhc_init +EXPORT_SYMBOL vmlinux 0x26bb950b __kfifo_from_user_r +EXPORT_SYMBOL vmlinux 0x26cb5420 vfs_getattr +EXPORT_SYMBOL vmlinux 0x26e4baf3 ether_setup +EXPORT_SYMBOL vmlinux 0x26e76fb8 sysctl_udp_wmem_min +EXPORT_SYMBOL vmlinux 0x26f26068 acl_by_type +EXPORT_SYMBOL vmlinux 0x274d08dc __kfifo_dma_out_prepare +EXPORT_SYMBOL vmlinux 0x274d6126 locks_mandatory_area +EXPORT_SYMBOL vmlinux 0x27603397 skb_put +EXPORT_SYMBOL vmlinux 0x2761e099 try_to_writeback_inodes_sb +EXPORT_SYMBOL vmlinux 0x276abe99 i2c_get_adapter +EXPORT_SYMBOL vmlinux 0x2771d7ff ida_get_new_above +EXPORT_SYMBOL vmlinux 0x27864d57 memparse +EXPORT_SYMBOL vmlinux 0x27866435 security_xfrm_state_alloc +EXPORT_SYMBOL vmlinux 0x2791f606 inc_zone_page_state +EXPORT_SYMBOL vmlinux 0x2793aae5 load_nls +EXPORT_SYMBOL vmlinux 0x279bae0f flow_get_u32_dst +EXPORT_SYMBOL vmlinux 0x27a6a017 dquot_enable +EXPORT_SYMBOL vmlinux 0x27ab16f3 dev_queue_xmit_accel +EXPORT_SYMBOL vmlinux 0x27ad2d7c machine_id +EXPORT_SYMBOL vmlinux 0x27bbf221 disable_irq_nosync +EXPORT_SYMBOL vmlinux 0x27d14d49 is_nvdimm_bus_locked +EXPORT_SYMBOL vmlinux 0x27e1a049 printk +EXPORT_SYMBOL vmlinux 0x27ee5d41 ip_options_rcv_srr +EXPORT_SYMBOL vmlinux 0x27ff6d60 blk_queue_dma_pad +EXPORT_SYMBOL vmlinux 0x280c531e vfs_readv +EXPORT_SYMBOL vmlinux 0x281324df dev_get_phys_port_name +EXPORT_SYMBOL vmlinux 0x281823c5 __kfifo_out_peek +EXPORT_SYMBOL vmlinux 0x2825c8d1 xfrm_state_delete +EXPORT_SYMBOL vmlinux 0x2829c540 mb_cache_entry_release +EXPORT_SYMBOL vmlinux 0x2842dcbc blk_queue_make_request +EXPORT_SYMBOL vmlinux 0x2861fd37 tcp_md5_do_del +EXPORT_SYMBOL vmlinux 0x286664ad fb_blank +EXPORT_SYMBOL vmlinux 0x286d75c6 skb_make_writable +EXPORT_SYMBOL vmlinux 0x28757eca tcf_hash_insert +EXPORT_SYMBOL vmlinux 0x287cde8c netdev_rx_csum_fault +EXPORT_SYMBOL vmlinux 0x289db3ee idr_remove +EXPORT_SYMBOL vmlinux 0x28a2ed02 scsi_build_sense_buffer +EXPORT_SYMBOL vmlinux 0x28a6e2fd vfs_create +EXPORT_SYMBOL vmlinux 0x28a7beba __percpu_counter_init +EXPORT_SYMBOL vmlinux 0x28b18195 pci_write_vpd +EXPORT_SYMBOL vmlinux 0x28bf0049 handle_edge_irq +EXPORT_SYMBOL vmlinux 0x28c2985f key_alloc +EXPORT_SYMBOL vmlinux 0x28d46493 mmc_gpio_request_cd +EXPORT_SYMBOL vmlinux 0x28e42d21 iw_handler_get_thrspy +EXPORT_SYMBOL vmlinux 0x28ed6aa1 set_security_override +EXPORT_SYMBOL vmlinux 0x28f784f5 __debugger_break_match +EXPORT_SYMBOL vmlinux 0x29145a94 neigh_ifdown +EXPORT_SYMBOL vmlinux 0x293268d5 inet6_unregister_icmp_sender +EXPORT_SYMBOL vmlinux 0x29537c9e alloc_chrdev_region +EXPORT_SYMBOL vmlinux 0x29832d6e d_find_any_alias +EXPORT_SYMBOL vmlinux 0x29b6a95e build_skb +EXPORT_SYMBOL vmlinux 0x29fdda53 kstrtos8_from_user +EXPORT_SYMBOL vmlinux 0x2a1945f3 xfrm_lookup +EXPORT_SYMBOL vmlinux 0x2a279ae9 sk_common_release +EXPORT_SYMBOL vmlinux 0x2a303d4d check_signature +EXPORT_SYMBOL vmlinux 0x2a37d074 dma_pool_free +EXPORT_SYMBOL vmlinux 0x2a3fc4c9 mipi_dsi_dcs_nop +EXPORT_SYMBOL vmlinux 0x2a453ca5 devm_ioremap_resource +EXPORT_SYMBOL vmlinux 0x2a46175e xfrm_unregister_mode +EXPORT_SYMBOL vmlinux 0x2a510504 skb_prepare_seq_read +EXPORT_SYMBOL vmlinux 0x2a6e5917 local_flush_tlb_page +EXPORT_SYMBOL vmlinux 0x2a719780 __serio_register_driver +EXPORT_SYMBOL vmlinux 0x2a7ef33f dev_mc_add +EXPORT_SYMBOL vmlinux 0x2a80db74 xfrm4_rcv +EXPORT_SYMBOL vmlinux 0x2a843655 scsicam_bios_param +EXPORT_SYMBOL vmlinux 0x2aa0e4fc strncasecmp +EXPORT_SYMBOL vmlinux 0x2aa7c0a8 blk_queue_start_tag +EXPORT_SYMBOL vmlinux 0x2aad35de mb_cache_destroy +EXPORT_SYMBOL vmlinux 0x2ab89b20 pci_restore_state +EXPORT_SYMBOL vmlinux 0x2ac09531 inet_register_protosw +EXPORT_SYMBOL vmlinux 0x2acf0feb vfs_fstat +EXPORT_SYMBOL vmlinux 0x2af23f1b xfrm_init_replay +EXPORT_SYMBOL vmlinux 0x2b0ba2b0 scsi_sense_desc_find +EXPORT_SYMBOL vmlinux 0x2b209948 mapping_tagged +EXPORT_SYMBOL vmlinux 0x2b2ce78b kstrtos8 +EXPORT_SYMBOL vmlinux 0x2b2e927d netif_stacked_transfer_operstate +EXPORT_SYMBOL vmlinux 0x2b48d61a nobh_write_begin +EXPORT_SYMBOL vmlinux 0x2b5a85bf simple_transaction_set +EXPORT_SYMBOL vmlinux 0x2b667242 mmc_wait_for_req +EXPORT_SYMBOL vmlinux 0x2b996b0a dmam_pool_create +EXPORT_SYMBOL vmlinux 0x2b9da7a4 genl_lock +EXPORT_SYMBOL vmlinux 0x2ba707a8 sysctl_tcp_low_latency +EXPORT_SYMBOL vmlinux 0x2baffafb bio_add_pc_page +EXPORT_SYMBOL vmlinux 0x2bbfe1dc bdi_register +EXPORT_SYMBOL vmlinux 0x2bc57be0 check_disk_change +EXPORT_SYMBOL vmlinux 0x2bc907e1 netdev_master_upper_dev_get +EXPORT_SYMBOL vmlinux 0x2bcd4fdb fb_class +EXPORT_SYMBOL vmlinux 0x2be0f12d dql_completed +EXPORT_SYMBOL vmlinux 0x2beaee62 pci_find_bus +EXPORT_SYMBOL vmlinux 0x2bf3ee45 pagevec_lookup +EXPORT_SYMBOL vmlinux 0x2bf6e6b8 of_find_all_nodes +EXPORT_SYMBOL vmlinux 0x2c03600c __mark_inode_dirty +EXPORT_SYMBOL vmlinux 0x2c14323a kstrtol_from_user +EXPORT_SYMBOL vmlinux 0x2c256e1f input_scancode_to_scalar +EXPORT_SYMBOL vmlinux 0x2c5639af override_creds +EXPORT_SYMBOL vmlinux 0x2c7b1fca down_timeout +EXPORT_SYMBOL vmlinux 0x2c874762 from_kprojid_munged +EXPORT_SYMBOL vmlinux 0x2c8aa64f kill_pid +EXPORT_SYMBOL vmlinux 0x2c900d91 cpufreq_put_global_kobject +EXPORT_SYMBOL vmlinux 0x2ca1bb7b kmem_cache_size +EXPORT_SYMBOL vmlinux 0x2ca47775 flush_icache_user_range +EXPORT_SYMBOL vmlinux 0x2cad1d30 tcp_v4_conn_request +EXPORT_SYMBOL vmlinux 0x2cb8afd1 tty_check_change +EXPORT_SYMBOL vmlinux 0x2ce57760 should_remove_suid +EXPORT_SYMBOL vmlinux 0x2d140a58 genl_unlock +EXPORT_SYMBOL vmlinux 0x2d14c3db __tty_alloc_driver +EXPORT_SYMBOL vmlinux 0x2d1c7f93 nvdimm_bus_unlock +EXPORT_SYMBOL vmlinux 0x2d30596c from_kqid_munged +EXPORT_SYMBOL vmlinux 0x2d3385d3 system_wq +EXPORT_SYMBOL vmlinux 0x2d37342e cpu_online_mask +EXPORT_SYMBOL vmlinux 0x2d398eee kiocb_set_cancel_fn +EXPORT_SYMBOL vmlinux 0x2d3dcb19 thaw_super +EXPORT_SYMBOL vmlinux 0x2d5a78ca blkdev_get_by_path +EXPORT_SYMBOL vmlinux 0x2d6326bc tty_port_put +EXPORT_SYMBOL vmlinux 0x2d6e1069 __sync_dirty_buffer +EXPORT_SYMBOL vmlinux 0x2d72c0f3 ipv6_getsockopt +EXPORT_SYMBOL vmlinux 0x2d7fbd52 nf_hook_slow +EXPORT_SYMBOL vmlinux 0x2d95a943 audit_log +EXPORT_SYMBOL vmlinux 0x2da8bb6f __skb_warn_lro_forwarding +EXPORT_SYMBOL vmlinux 0x2deda4a1 security_sk_classify_flow +EXPORT_SYMBOL vmlinux 0x2e0329ff pci_set_dma_max_seg_size +EXPORT_SYMBOL vmlinux 0x2e1905b8 scsi_verify_blk_ioctl +EXPORT_SYMBOL vmlinux 0x2e1a58c3 mmc_free_host +EXPORT_SYMBOL vmlinux 0x2e1ca751 clk_put +EXPORT_SYMBOL vmlinux 0x2e1d3022 iov_iter_fault_in_multipages_readable +EXPORT_SYMBOL vmlinux 0x2e213511 devfreq_unregister_opp_notifier +EXPORT_SYMBOL vmlinux 0x2e214107 pci_bus_read_config_word +EXPORT_SYMBOL vmlinux 0x2e2ce9e0 sysctl_tcp_syncookies +EXPORT_SYMBOL vmlinux 0x2e34cf48 __xfrm_state_delete +EXPORT_SYMBOL vmlinux 0x2e3df251 jbd2_journal_file_inode +EXPORT_SYMBOL vmlinux 0x2e5514cd md_check_no_bitmap +EXPORT_SYMBOL vmlinux 0x2e79cbf0 tty_unlock +EXPORT_SYMBOL vmlinux 0x2eba5558 blk_requeue_request +EXPORT_SYMBOL vmlinux 0x2ec2de57 inode_needs_sync +EXPORT_SYMBOL vmlinux 0x2ec524ad __kfifo_in_r +EXPORT_SYMBOL vmlinux 0x2ee54848 jbd2__journal_start +EXPORT_SYMBOL vmlinux 0x2ee6be06 blk_mq_end_request +EXPORT_SYMBOL vmlinux 0x2eea123c truncate_setsize +EXPORT_SYMBOL vmlinux 0x2ef63ad6 scsi_dev_info_list_del_keyed +EXPORT_SYMBOL vmlinux 0x2f03fc4b security_secmark_refcount_inc +EXPORT_SYMBOL vmlinux 0x2f064b55 allocate_resource +EXPORT_SYMBOL vmlinux 0x2f13eb61 genphy_setup_forced +EXPORT_SYMBOL vmlinux 0x2f19ed13 update_region +EXPORT_SYMBOL vmlinux 0x2f20896a uart_match_port +EXPORT_SYMBOL vmlinux 0x2f3433fc ps2_handle_ack +EXPORT_SYMBOL vmlinux 0x2f3cf3d1 iget_locked +EXPORT_SYMBOL vmlinux 0x2f45e376 zerocopy_sg_from_iter +EXPORT_SYMBOL vmlinux 0x2f463da1 __alloc_page_frag +EXPORT_SYMBOL vmlinux 0x2f4c8895 __netdev_alloc_skb +EXPORT_SYMBOL vmlinux 0x2f589d59 jbd2_complete_transaction +EXPORT_SYMBOL vmlinux 0x2f5f2a57 rps_sock_flow_table +EXPORT_SYMBOL vmlinux 0x2f95d695 register_netdevice +EXPORT_SYMBOL vmlinux 0x2fb25868 generic_block_fiemap +EXPORT_SYMBOL vmlinux 0x2fb6de5d add_device_randomness +EXPORT_SYMBOL vmlinux 0x2fdc2ad1 finish_no_open +EXPORT_SYMBOL vmlinux 0x2fe252cc unregister_inet6addr_notifier +EXPORT_SYMBOL vmlinux 0x2fee6dd9 dma_async_device_unregister +EXPORT_SYMBOL vmlinux 0x2fefe105 decrementer_clockevent +EXPORT_SYMBOL vmlinux 0x30226ddf agp_device_command +EXPORT_SYMBOL vmlinux 0x303041c6 udp_flow_hashrnd +EXPORT_SYMBOL vmlinux 0x30328356 lease_get_mtime +EXPORT_SYMBOL vmlinux 0x30335a7b input_mt_report_slot_state +EXPORT_SYMBOL vmlinux 0x303bd063 padata_start +EXPORT_SYMBOL vmlinux 0x30424aa2 tcf_unregister_action +EXPORT_SYMBOL vmlinux 0x304458e4 create_empty_buffers +EXPORT_SYMBOL vmlinux 0x30467be1 phy_connect +EXPORT_SYMBOL vmlinux 0x3062a58f skb_find_text +EXPORT_SYMBOL vmlinux 0x3063ea8a ip_ct_attach +EXPORT_SYMBOL vmlinux 0x307c2fd0 generic_check_addressable +EXPORT_SYMBOL vmlinux 0x3083cd79 starget_for_each_device +EXPORT_SYMBOL vmlinux 0x308997cc uart_get_baud_rate +EXPORT_SYMBOL vmlinux 0x308c5def blk_end_request_all +EXPORT_SYMBOL vmlinux 0x3096be16 names_cachep +EXPORT_SYMBOL vmlinux 0x309c117f phy_ethtool_get_eee +EXPORT_SYMBOL vmlinux 0x30a36f7e tcp_seq_open +EXPORT_SYMBOL vmlinux 0x30a80826 __kfifo_from_user +EXPORT_SYMBOL vmlinux 0x30b5b4a5 of_graph_parse_endpoint +EXPORT_SYMBOL vmlinux 0x30b8b35c cpu_to_chip_id +EXPORT_SYMBOL vmlinux 0x30bb96c3 kern_path +EXPORT_SYMBOL vmlinux 0x30c9fc66 md_integrity_register +EXPORT_SYMBOL vmlinux 0x30e5a372 consume_skb +EXPORT_SYMBOL vmlinux 0x30e68fab buffer_migrate_page +EXPORT_SYMBOL vmlinux 0x30fd2453 of_get_min_tck +EXPORT_SYMBOL vmlinux 0x3102d4f1 inet_recvmsg +EXPORT_SYMBOL vmlinux 0x3102d70b frontswap_curr_pages +EXPORT_SYMBOL vmlinux 0x31035868 __cleancache_invalidate_page +EXPORT_SYMBOL vmlinux 0x310750f1 padata_unregister_cpumask_notifier +EXPORT_SYMBOL vmlinux 0x310917fe sort +EXPORT_SYMBOL vmlinux 0x312919db soft_cursor +EXPORT_SYMBOL vmlinux 0x31380354 getrawmonotonic64 +EXPORT_SYMBOL vmlinux 0x3145216f pci_dev_present +EXPORT_SYMBOL vmlinux 0x31466c4a __sb_start_write +EXPORT_SYMBOL vmlinux 0x3147857d default_red +EXPORT_SYMBOL vmlinux 0x31574c95 tcp_timewait_state_process +EXPORT_SYMBOL vmlinux 0x3174bd79 bitmap_clear +EXPORT_SYMBOL vmlinux 0x3178439c clear_nlink +EXPORT_SYMBOL vmlinux 0x317f070b mipi_dsi_dcs_set_tear_off +EXPORT_SYMBOL vmlinux 0x3191f109 __krealloc +EXPORT_SYMBOL vmlinux 0x31950f9c inet6_add_offload +EXPORT_SYMBOL vmlinux 0x31c1c8e4 dquot_quotactl_sysfile_ops +EXPORT_SYMBOL vmlinux 0x31d55103 dma_common_mmap +EXPORT_SYMBOL vmlinux 0x31db3198 out_of_line_wait_on_bit +EXPORT_SYMBOL vmlinux 0x31e2ad84 iov_iter_get_pages +EXPORT_SYMBOL vmlinux 0x31f0bb78 __kmap_atomic_idx +EXPORT_SYMBOL vmlinux 0x323e344b proto_register +EXPORT_SYMBOL vmlinux 0x324f0909 neigh_destroy +EXPORT_SYMBOL vmlinux 0x3267d978 param_ops_ushort +EXPORT_SYMBOL vmlinux 0x328a05f1 strncpy +EXPORT_SYMBOL vmlinux 0x32b1b517 dquot_reclaim_space_nodirty +EXPORT_SYMBOL vmlinux 0x32b9d08a lookup_bdev +EXPORT_SYMBOL vmlinux 0x32c56b88 skb_append +EXPORT_SYMBOL vmlinux 0x32da00be input_register_device +EXPORT_SYMBOL vmlinux 0x32f0ce0a blk_queue_max_hw_sectors +EXPORT_SYMBOL vmlinux 0x32f1e185 open_exec +EXPORT_SYMBOL vmlinux 0x330a6d32 of_gpio_simple_xlate +EXPORT_SYMBOL vmlinux 0x3331e7dc scsi_report_device_reset +EXPORT_SYMBOL vmlinux 0x33470434 mmc_can_discard +EXPORT_SYMBOL vmlinux 0x334b7341 blk_rq_map_integrity_sg +EXPORT_SYMBOL vmlinux 0x335c6d44 dev_get_stats +EXPORT_SYMBOL vmlinux 0x33659b4c netdev_state_change +EXPORT_SYMBOL vmlinux 0x33b84f74 copy_page +EXPORT_SYMBOL vmlinux 0x33bb74c4 bitmap_cond_end_sync +EXPORT_SYMBOL vmlinux 0x33c7435c prandom_u32_state +EXPORT_SYMBOL vmlinux 0x33dbfd93 tcp_memory_allocated +EXPORT_SYMBOL vmlinux 0x33f0768c cpufreq_quick_get_max +EXPORT_SYMBOL vmlinux 0x33f12cec try_to_release_page +EXPORT_SYMBOL vmlinux 0x340f32d7 blk_free_tags +EXPORT_SYMBOL vmlinux 0x34184afe current_kernel_time +EXPORT_SYMBOL vmlinux 0x341a77ef cleancache_register_ops +EXPORT_SYMBOL vmlinux 0x342e5af1 blk_make_request +EXPORT_SYMBOL vmlinux 0x3430ca9e ip_queue_xmit +EXPORT_SYMBOL vmlinux 0x3434fe82 pci_setup_cardbus +EXPORT_SYMBOL vmlinux 0x344adbd5 init_cdrom_command +EXPORT_SYMBOL vmlinux 0x3461575c inet_add_protocol +EXPORT_SYMBOL vmlinux 0x3465caa3 cpu_maps_update_begin +EXPORT_SYMBOL vmlinux 0x347013de nla_validate +EXPORT_SYMBOL vmlinux 0x3481f51b of_get_next_parent +EXPORT_SYMBOL vmlinux 0x348b5890 skb_vlan_untag +EXPORT_SYMBOL vmlinux 0x348c6931 devfreq_add_device +EXPORT_SYMBOL vmlinux 0x349cba85 strchr +EXPORT_SYMBOL vmlinux 0x34a63f7a bdput +EXPORT_SYMBOL vmlinux 0x34c73bbc input_register_handler +EXPORT_SYMBOL vmlinux 0x34f3484e security_tun_dev_attach_queue +EXPORT_SYMBOL vmlinux 0x3502ffe5 bdi_set_max_ratio +EXPORT_SYMBOL vmlinux 0x350743df stop_tty +EXPORT_SYMBOL vmlinux 0x3517383e register_reboot_notifier +EXPORT_SYMBOL vmlinux 0x3523546c dev_addr_init +EXPORT_SYMBOL vmlinux 0x3531fdf5 bio_integrity_endio +EXPORT_SYMBOL vmlinux 0x353de98f cmdline_parts_parse +EXPORT_SYMBOL vmlinux 0x353fd960 genl_notify +EXPORT_SYMBOL vmlinux 0x35426049 pci_bus_write_config_word +EXPORT_SYMBOL vmlinux 0x354e8a95 nd_device_register +EXPORT_SYMBOL vmlinux 0x356461c8 rtc_time64_to_tm +EXPORT_SYMBOL vmlinux 0x356e74d5 skb_mac_gso_segment +EXPORT_SYMBOL vmlinux 0x3591b879 migrate_page +EXPORT_SYMBOL vmlinux 0x359bb1a5 genlmsg_multicast_allns +EXPORT_SYMBOL vmlinux 0x35a88f28 zlib_inflateInit2 +EXPORT_SYMBOL vmlinux 0x35b733b8 set_anon_super +EXPORT_SYMBOL vmlinux 0x35c624e7 dmam_free_coherent +EXPORT_SYMBOL vmlinux 0x35d3801c ata_dev_printk +EXPORT_SYMBOL vmlinux 0x35dcdfe1 nf_log_trace +EXPORT_SYMBOL vmlinux 0x35e60e34 pm8606_osc_disable +EXPORT_SYMBOL vmlinux 0x3603188e kill_pgrp +EXPORT_SYMBOL vmlinux 0x360f9c72 dcb_ieee_setapp +EXPORT_SYMBOL vmlinux 0x36147626 blk_register_region +EXPORT_SYMBOL vmlinux 0x3618cb2d ida_destroy +EXPORT_SYMBOL vmlinux 0x362464bb tty_port_lower_dtr_rts +EXPORT_SYMBOL vmlinux 0x3634c01a seq_release +EXPORT_SYMBOL vmlinux 0x3658efcb blk_integrity_compare +EXPORT_SYMBOL vmlinux 0x365b5dd3 __invalidate_device +EXPORT_SYMBOL vmlinux 0x366f6d27 idr_destroy +EXPORT_SYMBOL vmlinux 0x3670e62f __ip4_datagram_connect +EXPORT_SYMBOL vmlinux 0x367ba856 __crc32c_le_shift +EXPORT_SYMBOL vmlinux 0x36815df7 gen_pool_add_virt +EXPORT_SYMBOL vmlinux 0x368646fe rtnl_link_get_net +EXPORT_SYMBOL vmlinux 0x369ed9aa tcp_get_cookie_sock +EXPORT_SYMBOL vmlinux 0x36b0e732 try_wait_for_completion +EXPORT_SYMBOL vmlinux 0x36b6d644 phy_device_free +EXPORT_SYMBOL vmlinux 0x36bd681b groups_alloc +EXPORT_SYMBOL vmlinux 0x36cf1bd0 jbd2_journal_flush +EXPORT_SYMBOL vmlinux 0x36d57710 ipv6_chk_custom_prefix +EXPORT_SYMBOL vmlinux 0x36f1766f twl6040_get_sysclk +EXPORT_SYMBOL vmlinux 0x36fdda67 hdmi_infoframe_pack +EXPORT_SYMBOL vmlinux 0x370acda7 sock_dequeue_err_skb +EXPORT_SYMBOL vmlinux 0x371d2130 check_legacy_ioport +EXPORT_SYMBOL vmlinux 0x3744cf36 vmalloc_to_pfn +EXPORT_SYMBOL vmlinux 0x375a1783 param_ops_string +EXPORT_SYMBOL vmlinux 0x37650b67 i2c_smbus_read_word_data +EXPORT_SYMBOL vmlinux 0x3769d9ae __mutex_init +EXPORT_SYMBOL vmlinux 0x3773d8d5 scsi_eh_finish_cmd +EXPORT_SYMBOL vmlinux 0x377606a7 pci_msi_vec_count +EXPORT_SYMBOL vmlinux 0x377badbc ll_rw_block +EXPORT_SYMBOL vmlinux 0x37950ba0 dmam_alloc_coherent +EXPORT_SYMBOL vmlinux 0x37af3190 dm_table_run_md_queue_async +EXPORT_SYMBOL vmlinux 0x37b72cb2 abx500_startup_irq_enabled +EXPORT_SYMBOL vmlinux 0x37befc70 jiffies_to_msecs +EXPORT_SYMBOL vmlinux 0x37c8a6af xfrm_policy_destroy +EXPORT_SYMBOL vmlinux 0x37c91c8a __xfrm_policy_check +EXPORT_SYMBOL vmlinux 0x37e0153d flex_array_prealloc +EXPORT_SYMBOL vmlinux 0x37e27802 netdev_has_upper_dev +EXPORT_SYMBOL vmlinux 0x37e52664 of_get_child_by_name +EXPORT_SYMBOL vmlinux 0x37e74642 get_jiffies_64 +EXPORT_SYMBOL vmlinux 0x37f614b7 __kfifo_len_r +EXPORT_SYMBOL vmlinux 0x37f9040e vfs_writev +EXPORT_SYMBOL vmlinux 0x381144a9 __tracepoint_module_get +EXPORT_SYMBOL vmlinux 0x3819c34c generic_file_mmap +EXPORT_SYMBOL vmlinux 0x381a798a setup_max_cpus +EXPORT_SYMBOL vmlinux 0x381ccc13 __kfifo_dma_in_prepare_r +EXPORT_SYMBOL vmlinux 0x383e472b tcp_conn_request +EXPORT_SYMBOL vmlinux 0x385557a8 param_array_ops +EXPORT_SYMBOL vmlinux 0x38869d88 kstat +EXPORT_SYMBOL vmlinux 0x38a71b7e pci_free_resource_list +EXPORT_SYMBOL vmlinux 0x38a9f7c5 in6addr_loopback +EXPORT_SYMBOL vmlinux 0x38af23d7 blk_limits_max_hw_sectors +EXPORT_SYMBOL vmlinux 0x38b825d1 idr_replace +EXPORT_SYMBOL vmlinux 0x38bdd289 phy_stop +EXPORT_SYMBOL vmlinux 0x38fb9933 tty_std_termios +EXPORT_SYMBOL vmlinux 0x38fcf76f agp_enable +EXPORT_SYMBOL vmlinux 0x391b8e42 sock_create_lite +EXPORT_SYMBOL vmlinux 0x392d98f7 sock_register +EXPORT_SYMBOL vmlinux 0x3934edca blk_queue_bounce_limit +EXPORT_SYMBOL vmlinux 0x3939f8f0 rfkill_pause_polling +EXPORT_SYMBOL vmlinux 0x394039e7 sock_wake_async +EXPORT_SYMBOL vmlinux 0x39461d6a in_egroup_p +EXPORT_SYMBOL vmlinux 0x395a33e1 unmap_underlying_metadata +EXPORT_SYMBOL vmlinux 0x398f85b1 nd_device_unregister +EXPORT_SYMBOL vmlinux 0x39991865 icmp_global_allow +EXPORT_SYMBOL vmlinux 0x39aa7a13 fsync_bdev +EXPORT_SYMBOL vmlinux 0x39ac718d scsi_dma_unmap +EXPORT_SYMBOL vmlinux 0x39b52d19 __bitmap_and +EXPORT_SYMBOL vmlinux 0x39b7caa1 of_find_mipi_dsi_device_by_node +EXPORT_SYMBOL vmlinux 0x39b8b879 pci_msix_vec_count +EXPORT_SYMBOL vmlinux 0x39ba76b1 softnet_data +EXPORT_SYMBOL vmlinux 0x39c7cc4c iget_failed +EXPORT_SYMBOL vmlinux 0x39cb830f xfrm_sad_getinfo +EXPORT_SYMBOL vmlinux 0x39cdf63c wait_for_completion_interruptible +EXPORT_SYMBOL vmlinux 0x39e48b40 fsnotify_put_group +EXPORT_SYMBOL vmlinux 0x39e9c50e filemap_fdatawrite +EXPORT_SYMBOL vmlinux 0x39f783f1 pci_unregister_driver +EXPORT_SYMBOL vmlinux 0x39f80ece __check_sticky +EXPORT_SYMBOL vmlinux 0x3a13a8fa tcf_exts_dump +EXPORT_SYMBOL vmlinux 0x3a1ac054 set_normalized_timespec64 +EXPORT_SYMBOL vmlinux 0x3a472489 __napi_complete +EXPORT_SYMBOL vmlinux 0x3a602e0a bdi_destroy +EXPORT_SYMBOL vmlinux 0x3a62fe12 do_truncate +EXPORT_SYMBOL vmlinux 0x3a6c134a of_phy_connect +EXPORT_SYMBOL vmlinux 0x3a80153b dget_parent +EXPORT_SYMBOL vmlinux 0x3a84fd16 blk_run_queue +EXPORT_SYMBOL vmlinux 0x3a9b6fb9 blk_unregister_region +EXPORT_SYMBOL vmlinux 0x3adcb3c7 dm_kcopyd_copy +EXPORT_SYMBOL vmlinux 0x3af830a9 jbd2_journal_start_reserved +EXPORT_SYMBOL vmlinux 0x3b0a9ebf __pagevec_lru_add +EXPORT_SYMBOL vmlinux 0x3b0b4fb1 __sock_create +EXPORT_SYMBOL vmlinux 0x3b27b6a4 ppp_register_compressor +EXPORT_SYMBOL vmlinux 0x3b2c9dfc page_symlink +EXPORT_SYMBOL vmlinux 0x3b45ce1a netif_receive_skb_sk +EXPORT_SYMBOL vmlinux 0x3b5cb350 agp_generic_enable +EXPORT_SYMBOL vmlinux 0x3b615a21 wait_for_completion_killable +EXPORT_SYMBOL vmlinux 0x3b644591 __bitmap_shift_left +EXPORT_SYMBOL vmlinux 0x3b688b05 netif_wake_subqueue +EXPORT_SYMBOL vmlinux 0x3b8f7ebd giveup_fpu +EXPORT_SYMBOL vmlinux 0x3b9d2366 posix_test_lock +EXPORT_SYMBOL vmlinux 0x3ba41b4e napi_gro_receive +EXPORT_SYMBOL vmlinux 0x3bea96fa mipi_dsi_dcs_set_column_address +EXPORT_SYMBOL vmlinux 0x3bef7902 agp_backend_acquire +EXPORT_SYMBOL vmlinux 0x3bfe452b inet_bind +EXPORT_SYMBOL vmlinux 0x3c1986bc nvdimm_namespace_disk_name +EXPORT_SYMBOL vmlinux 0x3c2a75dc phy_suspend +EXPORT_SYMBOL vmlinux 0x3c2f8418 get_mm_exe_file +EXPORT_SYMBOL vmlinux 0x3c3fce39 __local_bh_enable_ip +EXPORT_SYMBOL vmlinux 0x3c490494 __lock_buffer +EXPORT_SYMBOL vmlinux 0x3c652b24 proc_dointvec_userhz_jiffies +EXPORT_SYMBOL vmlinux 0x3c80c06c kstrtoull +EXPORT_SYMBOL vmlinux 0x3c900cc1 unregister_binfmt +EXPORT_SYMBOL vmlinux 0x3c99e334 __blk_end_request_cur +EXPORT_SYMBOL vmlinux 0x3cab215b __dquot_alloc_space +EXPORT_SYMBOL vmlinux 0x3cb3931b sg_copy_to_buffer +EXPORT_SYMBOL vmlinux 0x3cbcedc4 __breadahead +EXPORT_SYMBOL vmlinux 0x3cc4b0dc lg_lock_init +EXPORT_SYMBOL vmlinux 0x3ce4ca6f disable_irq +EXPORT_SYMBOL vmlinux 0x3ce5c7f5 pci_bus_write_config_dword +EXPORT_SYMBOL vmlinux 0x3cea4d63 reqsk_queue_hash_req +EXPORT_SYMBOL vmlinux 0x3cfcf0c3 neigh_direct_output +EXPORT_SYMBOL vmlinux 0x3d2e7057 netif_carrier_on +EXPORT_SYMBOL vmlinux 0x3d465bae udp_del_offload +EXPORT_SYMBOL vmlinux 0x3d5a4e57 __dynamic_netdev_dbg +EXPORT_SYMBOL vmlinux 0x3d7f9fe0 devfreq_add_governor +EXPORT_SYMBOL vmlinux 0x3d90d440 devm_request_resource +EXPORT_SYMBOL vmlinux 0x3dc02a4e flex_array_free_parts +EXPORT_SYMBOL vmlinux 0x3dc31a27 alloc_buffer_head +EXPORT_SYMBOL vmlinux 0x3dcb88a0 irq_set_handler_data +EXPORT_SYMBOL vmlinux 0x3dfc897c seq_hlist_start_head +EXPORT_SYMBOL vmlinux 0x3dfec50e scsi_host_get +EXPORT_SYMBOL vmlinux 0x3e017b6b copy_to_iter +EXPORT_SYMBOL vmlinux 0x3e028cf1 agp_generic_alloc_by_type +EXPORT_SYMBOL vmlinux 0x3e148f0e pci_bus_assign_resources +EXPORT_SYMBOL vmlinux 0x3e17a39e param_ops_long +EXPORT_SYMBOL vmlinux 0x3e3e2ede security_path_mknod +EXPORT_SYMBOL vmlinux 0x3e473421 kmap_to_page +EXPORT_SYMBOL vmlinux 0x3e4f458f napi_get_frags +EXPORT_SYMBOL vmlinux 0x3e5c366b pci_alloc_dev +EXPORT_SYMBOL vmlinux 0x3e6a2ae0 __neigh_for_each_release +EXPORT_SYMBOL vmlinux 0x3e882943 pcibios_align_resource +EXPORT_SYMBOL vmlinux 0x3e9110fa __hw_addr_unsync +EXPORT_SYMBOL vmlinux 0x3e92a692 call_usermodehelper_setup +EXPORT_SYMBOL vmlinux 0x3e95083c vme_slave_get +EXPORT_SYMBOL vmlinux 0x3e9a9818 simple_write_end +EXPORT_SYMBOL vmlinux 0x3e9eeb50 thaw_bdev +EXPORT_SYMBOL vmlinux 0x3ed32be7 of_node_get +EXPORT_SYMBOL vmlinux 0x3ed9793b pcim_iomap_table +EXPORT_SYMBOL vmlinux 0x3ed98db9 tcp_release_cb +EXPORT_SYMBOL vmlinux 0x3efd8404 __serio_register_port +EXPORT_SYMBOL vmlinux 0x3f0546a8 ioread32_rep +EXPORT_SYMBOL vmlinux 0x3f234ab4 netdev_notice +EXPORT_SYMBOL vmlinux 0x3f33a1e9 page_put_link +EXPORT_SYMBOL vmlinux 0x3f429ac3 scsi_remove_host +EXPORT_SYMBOL vmlinux 0x3f4547a7 put_unused_fd +EXPORT_SYMBOL vmlinux 0x3f6131b5 i2c_smbus_read_i2c_block_data +EXPORT_SYMBOL vmlinux 0x3f616ce2 queue_delayed_work_on +EXPORT_SYMBOL vmlinux 0x3f700f48 sock_create_kern +EXPORT_SYMBOL vmlinux 0x3f8cefe9 pci_scan_bus +EXPORT_SYMBOL vmlinux 0x3f9f30ca tcp_md5_hash_key +EXPORT_SYMBOL vmlinux 0x3fa364f1 mipi_dsi_dcs_write +EXPORT_SYMBOL vmlinux 0x3fb1cf71 proc_dointvec_jiffies +EXPORT_SYMBOL vmlinux 0x3fb5e48b __devm_gpiod_get_optional +EXPORT_SYMBOL vmlinux 0x3fe0d1c0 slhc_free +EXPORT_SYMBOL vmlinux 0x3fe54ff0 kernel_bind +EXPORT_SYMBOL vmlinux 0x3fea2987 put_io_context +EXPORT_SYMBOL vmlinux 0x3fec048f sg_next +EXPORT_SYMBOL vmlinux 0x3ff5912a get_unmapped_area +EXPORT_SYMBOL vmlinux 0x3ff6b027 pcie_set_readrq +EXPORT_SYMBOL vmlinux 0x3ff8e495 lg_local_unlock_cpu +EXPORT_SYMBOL vmlinux 0x4002d2d8 km_report +EXPORT_SYMBOL vmlinux 0x400ac2bf i8042_check_port_owner +EXPORT_SYMBOL vmlinux 0x400f8e31 drop_super +EXPORT_SYMBOL vmlinux 0x40147cb6 try_to_writeback_inodes_sb_nr +EXPORT_SYMBOL vmlinux 0x402b8281 __request_module +EXPORT_SYMBOL vmlinux 0x403545b2 ns_capable +EXPORT_SYMBOL vmlinux 0x4039918a clk_register_clkdev +EXPORT_SYMBOL vmlinux 0x4059792f print_hex_dump +EXPORT_SYMBOL vmlinux 0x405c1144 get_seconds +EXPORT_SYMBOL vmlinux 0x40973662 sysctl_udp_mem +EXPORT_SYMBOL vmlinux 0x409759cd pci_set_master +EXPORT_SYMBOL vmlinux 0x4099c4fe nd_region_acquire_lane +EXPORT_SYMBOL vmlinux 0x4099ccd0 set_disk_ro +EXPORT_SYMBOL vmlinux 0x409eaf1c d_invalidate +EXPORT_SYMBOL vmlinux 0x40a27c37 scsi_dev_info_remove_list +EXPORT_SYMBOL vmlinux 0x40a2d1dd dm_table_get_size +EXPORT_SYMBOL vmlinux 0x40a3fa6f tcp_md5_hash_header +EXPORT_SYMBOL vmlinux 0x40a9b349 vzalloc +EXPORT_SYMBOL vmlinux 0x40beb95b gen_pool_free +EXPORT_SYMBOL vmlinux 0x40c01859 gen_pool_best_fit +EXPORT_SYMBOL vmlinux 0x40c1508e mmc_start_req +EXPORT_SYMBOL vmlinux 0x40c7247c si_meminfo +EXPORT_SYMBOL vmlinux 0x40c987a2 i2c_smbus_read_byte +EXPORT_SYMBOL vmlinux 0x40cdc993 ipv6_chk_addr_and_flags +EXPORT_SYMBOL vmlinux 0x40d04664 console_trylock +EXPORT_SYMBOL vmlinux 0x40d59096 unregister_restart_handler +EXPORT_SYMBOL vmlinux 0x40da6a82 seq_putc +EXPORT_SYMBOL vmlinux 0x40e1d4ec flow_cache_lookup +EXPORT_SYMBOL vmlinux 0x40e9b700 swiotlb_alloc_coherent +EXPORT_SYMBOL vmlinux 0x40f1ad10 tb_ticks_per_jiffy +EXPORT_SYMBOL vmlinux 0x4113c4e0 pci_bus_alloc_resource +EXPORT_SYMBOL vmlinux 0x413326d5 pcix_get_mmrbc +EXPORT_SYMBOL vmlinux 0x4147937f iterate_fd +EXPORT_SYMBOL vmlinux 0x41482d8b strndup_user +EXPORT_SYMBOL vmlinux 0x4159c38f ioremap_wc +EXPORT_SYMBOL vmlinux 0x415d26ae tcf_action_exec +EXPORT_SYMBOL vmlinux 0x41661544 neigh_table_clear +EXPORT_SYMBOL vmlinux 0x41862ad4 vme_alloc_consistent +EXPORT_SYMBOL vmlinux 0x4188d439 neigh_rand_reach_time +EXPORT_SYMBOL vmlinux 0x418a5367 __scsi_format_command +EXPORT_SYMBOL vmlinux 0x418bbd42 blk_alloc_queue +EXPORT_SYMBOL vmlinux 0x4195e9fa netdev_upper_dev_unlink +EXPORT_SYMBOL vmlinux 0x41aa7cb7 xfrm_lookup_route +EXPORT_SYMBOL vmlinux 0x41b28d71 dump_page +EXPORT_SYMBOL vmlinux 0x41b4d470 param_ops_ullong +EXPORT_SYMBOL vmlinux 0x41bc4e89 fb_prepare_logo +EXPORT_SYMBOL vmlinux 0x41d6f70c netpoll_send_skb_on_dev +EXPORT_SYMBOL vmlinux 0x41ed9159 scsi_get_device_flags_keyed +EXPORT_SYMBOL vmlinux 0x41fd87c6 bio_split +EXPORT_SYMBOL vmlinux 0x420dc158 tty_unregister_driver +EXPORT_SYMBOL vmlinux 0x42160169 flush_workqueue +EXPORT_SYMBOL vmlinux 0x4233612f generic_pipe_buf_confirm +EXPORT_SYMBOL vmlinux 0x4245009a nf_log_packet +EXPORT_SYMBOL vmlinux 0x4248ae3c single_task_running +EXPORT_SYMBOL vmlinux 0x424d3620 zlib_inflateIncomp +EXPORT_SYMBOL vmlinux 0x4257ead0 of_phy_register_fixed_link +EXPORT_SYMBOL vmlinux 0x42595e58 vgacon_text_force +EXPORT_SYMBOL vmlinux 0x425ecbd6 blk_queue_io_opt +EXPORT_SYMBOL vmlinux 0x42671754 scsi_free_host_dev +EXPORT_SYMBOL vmlinux 0x427d7a5d ppp_unregister_compressor +EXPORT_SYMBOL vmlinux 0x4293d13e seq_escape +EXPORT_SYMBOL vmlinux 0x42a1b208 gen_pool_first_fit +EXPORT_SYMBOL vmlinux 0x42bf1e0d scmd_printk +EXPORT_SYMBOL vmlinux 0x42e478cd d_set_fallthru +EXPORT_SYMBOL vmlinux 0x42f2eee9 i2c_use_client +EXPORT_SYMBOL vmlinux 0x4302d0eb free_pages +EXPORT_SYMBOL vmlinux 0x43072951 sync_inode +EXPORT_SYMBOL vmlinux 0x4313eca7 dqput +EXPORT_SYMBOL vmlinux 0x4319405a udp6_csum_init +EXPORT_SYMBOL vmlinux 0x431a1145 delete_from_page_cache +EXPORT_SYMBOL vmlinux 0x4320dc2d blkdev_get +EXPORT_SYMBOL vmlinux 0x432436ba iov_iter_alignment +EXPORT_SYMBOL vmlinux 0x433d8ad7 cdrom_mode_sense +EXPORT_SYMBOL vmlinux 0x433e21bd netif_skb_features +EXPORT_SYMBOL vmlinux 0x4343fa46 pci_release_regions +EXPORT_SYMBOL vmlinux 0x434e897c reservation_object_reserve_shared +EXPORT_SYMBOL vmlinux 0x4351577a fb_parse_edid +EXPORT_SYMBOL vmlinux 0x436116f0 scsi_target_resume +EXPORT_SYMBOL vmlinux 0x4367deae vlan_dev_vlan_id +EXPORT_SYMBOL vmlinux 0x436c2179 iowrite32 +EXPORT_SYMBOL vmlinux 0x436cbb92 ip_mc_join_group +EXPORT_SYMBOL vmlinux 0x438610bd security_tun_dev_alloc_security +EXPORT_SYMBOL vmlinux 0x4396d3f7 vfs_read +EXPORT_SYMBOL vmlinux 0x43a01f90 complete_all +EXPORT_SYMBOL vmlinux 0x43a6bb90 cros_ec_query_all +EXPORT_SYMBOL vmlinux 0x43b83b2e blk_complete_request +EXPORT_SYMBOL vmlinux 0x43ba1501 neigh_seq_stop +EXPORT_SYMBOL vmlinux 0x43c7abb9 __get_user_pages_unlocked +EXPORT_SYMBOL vmlinux 0x43d611aa simple_rename +EXPORT_SYMBOL vmlinux 0x43e27298 dev_mc_sync_multiple +EXPORT_SYMBOL vmlinux 0x43efea8f kern_path_mountpoint +EXPORT_SYMBOL vmlinux 0x43f23311 dm_table_get_md +EXPORT_SYMBOL vmlinux 0x43f87134 of_find_compatible_node +EXPORT_SYMBOL vmlinux 0x4411c503 prandom_seed +EXPORT_SYMBOL vmlinux 0x44130855 mmc_start_bkops +EXPORT_SYMBOL vmlinux 0x44366cfc simple_write_to_buffer +EXPORT_SYMBOL vmlinux 0x44438b96 hex2bin +EXPORT_SYMBOL vmlinux 0x44537e1e __f_setown +EXPORT_SYMBOL vmlinux 0x4464bea6 i2c_transfer +EXPORT_SYMBOL vmlinux 0x447a8196 cad_pid +EXPORT_SYMBOL vmlinux 0x44b1d426 __dynamic_pr_debug +EXPORT_SYMBOL vmlinux 0x44bc945d twl6030_mmc_card_detect +EXPORT_SYMBOL vmlinux 0x44e9a829 match_token +EXPORT_SYMBOL vmlinux 0x44eb192e wait_for_completion +EXPORT_SYMBOL vmlinux 0x44f29c06 agp_generic_insert_memory +EXPORT_SYMBOL vmlinux 0x45289680 __skb_flow_dissect +EXPORT_SYMBOL vmlinux 0x453a3a6c task_tgid_nr_ns +EXPORT_SYMBOL vmlinux 0x453c8403 pci_msi_enabled +EXPORT_SYMBOL vmlinux 0x456fd8ca __qdisc_calculate_pkt_len +EXPORT_SYMBOL vmlinux 0x4578f528 __kfifo_to_user +EXPORT_SYMBOL vmlinux 0x45806413 bioset_integrity_create +EXPORT_SYMBOL vmlinux 0x45896816 end_buffer_read_sync +EXPORT_SYMBOL vmlinux 0x45a2e94b pcim_iomap +EXPORT_SYMBOL vmlinux 0x45a3eb8a flush_tlb_page +EXPORT_SYMBOL vmlinux 0x45a3fa4b xfrm_policy_walk +EXPORT_SYMBOL vmlinux 0x45a624f9 param_ops_charp +EXPORT_SYMBOL vmlinux 0x45a6be13 cpufreq_sysfs_remove_file +EXPORT_SYMBOL vmlinux 0x45a765cf pci_add_resource +EXPORT_SYMBOL vmlinux 0x45ad6da0 iterate_supers_type +EXPORT_SYMBOL vmlinux 0x45b33aa8 __nlmsg_put +EXPORT_SYMBOL vmlinux 0x45be0bad d_obtain_alias +EXPORT_SYMBOL vmlinux 0x45ceaf61 inet_get_local_port_range +EXPORT_SYMBOL vmlinux 0x45dfed78 lease_modify +EXPORT_SYMBOL vmlinux 0x460621b5 blk_run_queue_async +EXPORT_SYMBOL vmlinux 0x4612c59d down_trylock +EXPORT_SYMBOL vmlinux 0x461ebfa0 __copy_tofrom_user +EXPORT_SYMBOL vmlinux 0x462345e1 xmon +EXPORT_SYMBOL vmlinux 0x4624141f jbd2_journal_unlock_updates +EXPORT_SYMBOL vmlinux 0x462838b5 d_lookup +EXPORT_SYMBOL vmlinux 0x462a2e75 match_strlcpy +EXPORT_SYMBOL vmlinux 0x462d8ded dev_getfirstbyhwtype +EXPORT_SYMBOL vmlinux 0x462eca43 pci_read_vpd +EXPORT_SYMBOL vmlinux 0x46479697 netdev_lower_get_first_private_rcu +EXPORT_SYMBOL vmlinux 0x464d83d3 touch_atime +EXPORT_SYMBOL vmlinux 0x465cab34 secure_ipv6_port_ephemeral +EXPORT_SYMBOL vmlinux 0x46649cd1 vme_lm_set +EXPORT_SYMBOL vmlinux 0x46657bf7 tcp_v4_md5_hash_skb +EXPORT_SYMBOL vmlinux 0x466c14a7 __delay +EXPORT_SYMBOL vmlinux 0x469a9384 eth_header +EXPORT_SYMBOL vmlinux 0x469be60c tty_register_driver +EXPORT_SYMBOL vmlinux 0x46a7157f local_flush_tlb_mm +EXPORT_SYMBOL vmlinux 0x46a865e9 scsi_dma_map +EXPORT_SYMBOL vmlinux 0x46a8cc07 mfd_cell_disable +EXPORT_SYMBOL vmlinux 0x46ad8ab9 bdi_setup_and_register +EXPORT_SYMBOL vmlinux 0x46b22896 simple_setattr +EXPORT_SYMBOL vmlinux 0x46b84e63 file_ns_capable +EXPORT_SYMBOL vmlinux 0x46b896b4 __put_cred +EXPORT_SYMBOL vmlinux 0x46d12956 wait_for_completion_interruptible_timeout +EXPORT_SYMBOL vmlinux 0x46d7db10 ip6_expire_frag_queue +EXPORT_SYMBOL vmlinux 0x46f72a89 blk_queue_prep_rq +EXPORT_SYMBOL vmlinux 0x46f83d7e scm_detach_fds +EXPORT_SYMBOL vmlinux 0x46feb099 dm_read_arg +EXPORT_SYMBOL vmlinux 0x4721ad0a pfifo_qdisc_ops +EXPORT_SYMBOL vmlinux 0x47416e14 cpu_rmap_add +EXPORT_SYMBOL vmlinux 0x474d030b napi_gro_flush +EXPORT_SYMBOL vmlinux 0x47509d99 ip_getsockopt +EXPORT_SYMBOL vmlinux 0x47608718 fence_init +EXPORT_SYMBOL vmlinux 0x4780b7ec sk_stop_timer +EXPORT_SYMBOL vmlinux 0x4787306c balance_dirty_pages_ratelimited +EXPORT_SYMBOL vmlinux 0x47905536 dcbnl_ieee_notify +EXPORT_SYMBOL vmlinux 0x47939e0d __tasklet_hi_schedule +EXPORT_SYMBOL vmlinux 0x47991e62 dev_err +EXPORT_SYMBOL vmlinux 0x479c3c86 find_next_zero_bit +EXPORT_SYMBOL vmlinux 0x479d3daa netif_tx_wake_queue +EXPORT_SYMBOL vmlinux 0x47ab1093 netdev_all_upper_get_next_dev_rcu +EXPORT_SYMBOL vmlinux 0x47d9c6f7 bio_advance +EXPORT_SYMBOL vmlinux 0x47e2a532 filemap_write_and_wait +EXPORT_SYMBOL vmlinux 0x47ed773b param_set_short +EXPORT_SYMBOL vmlinux 0x4803da82 bio_alloc_pages +EXPORT_SYMBOL vmlinux 0x480e2987 clkdev_add +EXPORT_SYMBOL vmlinux 0x4823fcaa devm_clk_put +EXPORT_SYMBOL vmlinux 0x482df4d8 bio_integrity_trim +EXPORT_SYMBOL vmlinux 0x48404b9a remove_wait_queue +EXPORT_SYMBOL vmlinux 0x484282cb crypto_sha1_finup +EXPORT_SYMBOL vmlinux 0x484b3441 dev_crit +EXPORT_SYMBOL vmlinux 0x4859b8bb rtc_year_days +EXPORT_SYMBOL vmlinux 0x4869a2e2 i2c_put_adapter +EXPORT_SYMBOL vmlinux 0x48933e3b elevator_alloc +EXPORT_SYMBOL vmlinux 0x48a771c5 cpu_core_map +EXPORT_SYMBOL vmlinux 0x48b2ee4e irq_to_desc +EXPORT_SYMBOL vmlinux 0x48b99a13 vme_lm_free +EXPORT_SYMBOL vmlinux 0x48c89a56 kernel_read +EXPORT_SYMBOL vmlinux 0x48d4d54c mntget +EXPORT_SYMBOL vmlinux 0x49045426 icmp_err_convert +EXPORT_SYMBOL vmlinux 0x4907bd81 generic_end_io_acct +EXPORT_SYMBOL vmlinux 0x4914ab6b __bread_gfp +EXPORT_SYMBOL vmlinux 0x493c5d35 proto_unregister +EXPORT_SYMBOL vmlinux 0x495406ea block_page_mkwrite +EXPORT_SYMBOL vmlinux 0x495c96f8 posix_acl_init +EXPORT_SYMBOL vmlinux 0x49603fb8 security_sb_copy_data +EXPORT_SYMBOL vmlinux 0x496df1aa nf_register_hooks +EXPORT_SYMBOL vmlinux 0x4984d8a4 tcf_hash_create +EXPORT_SYMBOL vmlinux 0x49857a7f inet_accept +EXPORT_SYMBOL vmlinux 0x4996c086 unregister_quota_format +EXPORT_SYMBOL vmlinux 0x49982384 skb_checksum_trimmed +EXPORT_SYMBOL vmlinux 0x49a5d0ee of_find_i2c_adapter_by_node +EXPORT_SYMBOL vmlinux 0x49a68db0 tcp_v4_connect +EXPORT_SYMBOL vmlinux 0x49b07aec tcp_select_initial_window +EXPORT_SYMBOL vmlinux 0x49c628e8 insert_inode_locked4 +EXPORT_SYMBOL vmlinux 0x49c9917d generic_write_checks +EXPORT_SYMBOL vmlinux 0x49dbf702 kernel_getsockname +EXPORT_SYMBOL vmlinux 0x49e78e42 blk_rq_count_integrity_sg +EXPORT_SYMBOL vmlinux 0x49f2cfcd sock_no_mmap +EXPORT_SYMBOL vmlinux 0x49f71442 dev_close_many +EXPORT_SYMBOL vmlinux 0x49f7bd99 zero_fill_bio +EXPORT_SYMBOL vmlinux 0x4a052c0b nf_setsockopt +EXPORT_SYMBOL vmlinux 0x4a1b3519 agp_find_bridge +EXPORT_SYMBOL vmlinux 0x4a1b5bdb scsi_is_target_device +EXPORT_SYMBOL vmlinux 0x4a40f200 agp_generic_create_gatt_table +EXPORT_SYMBOL vmlinux 0x4a63e577 inet_add_offload +EXPORT_SYMBOL vmlinux 0x4a642d3d submit_bio +EXPORT_SYMBOL vmlinux 0x4aa1ee7c neigh_changeaddr +EXPORT_SYMBOL vmlinux 0x4aa51a46 __sk_mem_schedule +EXPORT_SYMBOL vmlinux 0x4abbe3c2 vm_brk +EXPORT_SYMBOL vmlinux 0x4abfc4a5 md_wakeup_thread +EXPORT_SYMBOL vmlinux 0x4acd93d3 release_resource +EXPORT_SYMBOL vmlinux 0x4acf6cdd napi_gro_frags +EXPORT_SYMBOL vmlinux 0x4ade5c86 devm_gpio_free +EXPORT_SYMBOL vmlinux 0x4afe9a77 scsi_partsize +EXPORT_SYMBOL vmlinux 0x4b056680 vfs_whiteout +EXPORT_SYMBOL vmlinux 0x4b07138e dev_loopback_xmit +EXPORT_SYMBOL vmlinux 0x4b085dbf agp3_generic_configure +EXPORT_SYMBOL vmlinux 0x4b1ec3e2 kstrtoul_from_user +EXPORT_SYMBOL vmlinux 0x4b34fbf5 block_all_signals +EXPORT_SYMBOL vmlinux 0x4b35218a inode_add_bytes +EXPORT_SYMBOL vmlinux 0x4b35498e skb_pad +EXPORT_SYMBOL vmlinux 0x4b5fd49e dm_kcopyd_do_callback +EXPORT_SYMBOL vmlinux 0x4b764a66 elv_add_request +EXPORT_SYMBOL vmlinux 0x4b8326ff ida_remove +EXPORT_SYMBOL vmlinux 0x4b8988d0 __pskb_pull_tail +EXPORT_SYMBOL vmlinux 0x4b9a5090 bdget +EXPORT_SYMBOL vmlinux 0x4ba239d8 skb_insert +EXPORT_SYMBOL vmlinux 0x4baaab24 __ps2_command +EXPORT_SYMBOL vmlinux 0x4baf35a7 vme_master_get +EXPORT_SYMBOL vmlinux 0x4bb0778e vm_stat +EXPORT_SYMBOL vmlinux 0x4bbc407e fixed_size_llseek +EXPORT_SYMBOL vmlinux 0x4bc2ddbe pcim_iomap_regions +EXPORT_SYMBOL vmlinux 0x4bcf03a4 radix_tree_tag_clear +EXPORT_SYMBOL vmlinux 0x4bdf9a1a ethtool_op_get_ts_info +EXPORT_SYMBOL vmlinux 0x4be5452c __nd_iostat_start +EXPORT_SYMBOL vmlinux 0x4be85a03 memweight +EXPORT_SYMBOL vmlinux 0x4bed99b3 __percpu_counter_add +EXPORT_SYMBOL vmlinux 0x4c11435a _raw_read_lock_bh +EXPORT_SYMBOL vmlinux 0x4c11df52 skb_checksum_help +EXPORT_SYMBOL vmlinux 0x4c29dcbf cancel_delayed_work_sync +EXPORT_SYMBOL vmlinux 0x4c2ae700 strnstr +EXPORT_SYMBOL vmlinux 0x4c346a53 kvasprintf +EXPORT_SYMBOL vmlinux 0x4c387e06 mmc_request_done +EXPORT_SYMBOL vmlinux 0x4c445a80 uart_get_divisor +EXPORT_SYMBOL vmlinux 0x4c6988e2 md_wait_for_blocked_rdev +EXPORT_SYMBOL vmlinux 0x4c83bcc1 dev_get_flags +EXPORT_SYMBOL vmlinux 0x4cdb3178 ns_to_timeval +EXPORT_SYMBOL vmlinux 0x4d1b67c0 padata_do_parallel +EXPORT_SYMBOL vmlinux 0x4d294bb4 bit_wait_io +EXPORT_SYMBOL vmlinux 0x4d2bb658 vm_insert_page +EXPORT_SYMBOL vmlinux 0x4d2c78b3 nf_register_sockopt +EXPORT_SYMBOL vmlinux 0x4d3c153f sigprocmask +EXPORT_SYMBOL vmlinux 0x4d45d89e udp_memory_allocated +EXPORT_SYMBOL vmlinux 0x4d71004a __cpm2_setbrg +EXPORT_SYMBOL vmlinux 0x4d791953 mempool_resize +EXPORT_SYMBOL vmlinux 0x4d92a159 of_match_device +EXPORT_SYMBOL vmlinux 0x4d94d736 blkdev_issue_discard +EXPORT_SYMBOL vmlinux 0x4d974b9c register_sysrq_key +EXPORT_SYMBOL vmlinux 0x4d989a2f md_register_thread +EXPORT_SYMBOL vmlinux 0x4d9b652b rb_erase +EXPORT_SYMBOL vmlinux 0x4db7bfdb neigh_proc_dointvec +EXPORT_SYMBOL vmlinux 0x4dc980d2 pcix_set_mmrbc +EXPORT_SYMBOL vmlinux 0x4de24e37 skb_store_bits +EXPORT_SYMBOL vmlinux 0x4de34a07 cpu_rmap_put +EXPORT_SYMBOL vmlinux 0x4de698b1 security_inode_getsecctx +EXPORT_SYMBOL vmlinux 0x4dec6038 memscan +EXPORT_SYMBOL vmlinux 0x4df119fa __bitmap_parse +EXPORT_SYMBOL vmlinux 0x4e0bcfa6 bio_integrity_free +EXPORT_SYMBOL vmlinux 0x4e0fed98 nvdimm_revalidate_disk +EXPORT_SYMBOL vmlinux 0x4e3567f7 match_int +EXPORT_SYMBOL vmlinux 0x4e47a724 of_find_matching_node_and_match +EXPORT_SYMBOL vmlinux 0x4e492c5a of_phy_find_device +EXPORT_SYMBOL vmlinux 0x4e4f0eb2 pci_iomap_range +EXPORT_SYMBOL vmlinux 0x4e68e9be rb_next_postorder +EXPORT_SYMBOL vmlinux 0x4e6d20f4 jbd2_journal_restart +EXPORT_SYMBOL vmlinux 0x4e6e72dc dquot_drop +EXPORT_SYMBOL vmlinux 0x4e6e8ea7 fg_console +EXPORT_SYMBOL vmlinux 0x4e7493b0 dm_kobject_release +EXPORT_SYMBOL vmlinux 0x4e9dffb5 ip_fast_csum +EXPORT_SYMBOL vmlinux 0x4eafe226 qdisc_warn_nonwc +EXPORT_SYMBOL vmlinux 0x4ec34042 pcim_iomap_regions_request_all +EXPORT_SYMBOL vmlinux 0x4ecbc341 kern_unmount +EXPORT_SYMBOL vmlinux 0x4eeb9e5d genphy_resume +EXPORT_SYMBOL vmlinux 0x4f0002e4 of_device_unregister +EXPORT_SYMBOL vmlinux 0x4f0698fd inet_unregister_protosw +EXPORT_SYMBOL vmlinux 0x4f171a77 bio_clone_bioset +EXPORT_SYMBOL vmlinux 0x4f1cd128 security_tun_dev_create +EXPORT_SYMBOL vmlinux 0x4f1cefa4 vfs_link +EXPORT_SYMBOL vmlinux 0x4f1e47ab __bforget +EXPORT_SYMBOL vmlinux 0x4f2250ba rtc_tm_to_time64 +EXPORT_SYMBOL vmlinux 0x4f391d0e nla_parse +EXPORT_SYMBOL vmlinux 0x4f44aea7 phy_register_fixup_for_uid +EXPORT_SYMBOL vmlinux 0x4f68e5c9 do_gettimeofday +EXPORT_SYMBOL vmlinux 0x4f6e023e of_get_next_available_child +EXPORT_SYMBOL vmlinux 0x4f8260e0 ip_check_defrag +EXPORT_SYMBOL vmlinux 0x4f924978 mmc_gpiod_request_cd_irq +EXPORT_SYMBOL vmlinux 0x4f9e91f1 sock_no_ioctl +EXPORT_SYMBOL vmlinux 0x4fa18b4a scsi_bios_ptable +EXPORT_SYMBOL vmlinux 0x4fa640fc sdev_enable_disk_events +EXPORT_SYMBOL vmlinux 0x4fac4587 tty_port_destroy +EXPORT_SYMBOL vmlinux 0x4fac6d8c fbcon_rotate_ccw +EXPORT_SYMBOL vmlinux 0x4fb236a3 generic_file_fsync +EXPORT_SYMBOL vmlinux 0x4fb770c6 tty_port_close +EXPORT_SYMBOL vmlinux 0x4fbccb96 dev_mc_unsync +EXPORT_SYMBOL vmlinux 0x4fc7a260 bmap +EXPORT_SYMBOL vmlinux 0x4fd171be d_instantiate_unique +EXPORT_SYMBOL vmlinux 0x4fdee897 i8042_command +EXPORT_SYMBOL vmlinux 0x4fe99583 atomic64_dec_if_positive +EXPORT_SYMBOL vmlinux 0x4ff37ab7 agp_generic_destroy_page +EXPORT_SYMBOL vmlinux 0x4ff93f7f __module_get +EXPORT_SYMBOL vmlinux 0x5007cab0 inet_reqsk_alloc +EXPORT_SYMBOL vmlinux 0x50097088 security_tun_dev_free_security +EXPORT_SYMBOL vmlinux 0x502a6b6a __hw_addr_sync_dev +EXPORT_SYMBOL vmlinux 0x50441d8d tcf_hash_check +EXPORT_SYMBOL vmlinux 0x5046d79a qdisc_tree_decrease_qlen +EXPORT_SYMBOL vmlinux 0x5051a800 kobject_init +EXPORT_SYMBOL vmlinux 0x5057961e scsi_cmd_blk_ioctl +EXPORT_SYMBOL vmlinux 0x506124d4 component_match_add +EXPORT_SYMBOL vmlinux 0x5063df40 __posix_acl_create +EXPORT_SYMBOL vmlinux 0x5094c594 param_set_bool +EXPORT_SYMBOL vmlinux 0x509817cf vprintk_emit +EXPORT_SYMBOL vmlinux 0x509da346 serio_unregister_driver +EXPORT_SYMBOL vmlinux 0x50b66bcb radix_tree_next_chunk +EXPORT_SYMBOL vmlinux 0x50dd8744 fib_default_rule_pref +EXPORT_SYMBOL vmlinux 0x50ded37c __posix_acl_chmod +EXPORT_SYMBOL vmlinux 0x50f01c49 d_set_d_op +EXPORT_SYMBOL vmlinux 0x5118c382 secure_dccp_sequence_number +EXPORT_SYMBOL vmlinux 0x5123cf77 jbd2_journal_get_write_access +EXPORT_SYMBOL vmlinux 0x512c7572 blk_queue_max_discard_sectors +EXPORT_SYMBOL vmlinux 0x512e2dc9 inet6_add_protocol +EXPORT_SYMBOL vmlinux 0x5157cfc1 sb_set_blocksize +EXPORT_SYMBOL vmlinux 0x515e24a7 flush_instruction_cache +EXPORT_SYMBOL vmlinux 0x519b0da3 finish_wait +EXPORT_SYMBOL vmlinux 0x51aef7e6 dev_mc_flush +EXPORT_SYMBOL vmlinux 0x51ef33b8 kstrndup +EXPORT_SYMBOL vmlinux 0x51f1a3a6 sk_send_sigurg +EXPORT_SYMBOL vmlinux 0x52026cdf security_sb_parse_opts_str +EXPORT_SYMBOL vmlinux 0x520d03bc skb_checksum +EXPORT_SYMBOL vmlinux 0x520d0b02 param_get_invbool +EXPORT_SYMBOL vmlinux 0x520f10ef flush_tlb_mm +EXPORT_SYMBOL vmlinux 0x521b36b5 qdisc_put_rtab +EXPORT_SYMBOL vmlinux 0x522e2130 blk_put_queue +EXPORT_SYMBOL vmlinux 0x5231e8cb nvdimm_namespace_common_probe +EXPORT_SYMBOL vmlinux 0x52428cc8 parent_mem_cgroup +EXPORT_SYMBOL vmlinux 0x5256d5f4 pci_clear_master +EXPORT_SYMBOL vmlinux 0x528ba7b2 generic_show_options +EXPORT_SYMBOL vmlinux 0x528c709d simple_read_from_buffer +EXPORT_SYMBOL vmlinux 0x52a5c03e iommu_tbl_range_alloc +EXPORT_SYMBOL vmlinux 0x52af562a __crc32c_le +EXPORT_SYMBOL vmlinux 0x52afe6e5 downgrade_write +EXPORT_SYMBOL vmlinux 0x52b127f8 devm_release_resource +EXPORT_SYMBOL vmlinux 0x52bbb311 __scsi_device_lookup +EXPORT_SYMBOL vmlinux 0x52f2e285 kernel_setsockopt +EXPORT_SYMBOL vmlinux 0x53158ff7 fsnotify_put_mark +EXPORT_SYMBOL vmlinux 0x531995f7 security_inode_readlink +EXPORT_SYMBOL vmlinux 0x5327a172 pci_find_capability +EXPORT_SYMBOL vmlinux 0x53326531 mempool_alloc_pages +EXPORT_SYMBOL vmlinux 0x53380d39 vlan_vids_del_by_dev +EXPORT_SYMBOL vmlinux 0x534dceae blk_queue_unprep_rq +EXPORT_SYMBOL vmlinux 0x535b4ba9 key_payload_reserve +EXPORT_SYMBOL vmlinux 0x535c8308 vme_dma_pattern_attribute +EXPORT_SYMBOL vmlinux 0x537ae3d7 inode_add_rsv_space +EXPORT_SYMBOL vmlinux 0x537d4a85 twl6040_get_vibralr_status +EXPORT_SYMBOL vmlinux 0x53876482 __sk_mem_reclaim +EXPORT_SYMBOL vmlinux 0x539af73c __sg_alloc_table +EXPORT_SYMBOL vmlinux 0x53c43d28 of_find_net_device_by_node +EXPORT_SYMBOL vmlinux 0x53ebab1b _outsl_ns +EXPORT_SYMBOL vmlinux 0x53f9ac63 scsi_print_sense_hdr +EXPORT_SYMBOL vmlinux 0x5409775b free_irq_cpu_rmap +EXPORT_SYMBOL vmlinux 0x5412c7c7 up +EXPORT_SYMBOL vmlinux 0x543ef284 seq_hlist_start +EXPORT_SYMBOL vmlinux 0x54461a69 dev_change_flags +EXPORT_SYMBOL vmlinux 0x545cf3ac sk_stream_error +EXPORT_SYMBOL vmlinux 0x549a2feb blk_integrity_is_initialized +EXPORT_SYMBOL vmlinux 0x54a80aa8 __scsi_device_lookup_by_target +EXPORT_SYMBOL vmlinux 0x54a87102 init_special_inode +EXPORT_SYMBOL vmlinux 0x54a9db5f _kstrtoul +EXPORT_SYMBOL vmlinux 0x54a9e32a pipe_unlock +EXPORT_SYMBOL vmlinux 0x54c256e0 vme_check_window +EXPORT_SYMBOL vmlinux 0x54c4cbc4 set_device_ro +EXPORT_SYMBOL vmlinux 0x54d00a96 pneigh_enqueue +EXPORT_SYMBOL vmlinux 0x54dc0177 __mem_cgroup_count_vm_event +EXPORT_SYMBOL vmlinux 0x54de5d7b sock_edemux +EXPORT_SYMBOL vmlinux 0x54e6fcdd net_enable_timestamp +EXPORT_SYMBOL vmlinux 0x54f6a0e5 kernel_sock_shutdown +EXPORT_SYMBOL vmlinux 0x5502ffee tcp_parse_options +EXPORT_SYMBOL vmlinux 0x551bd071 __rb_erase_color +EXPORT_SYMBOL vmlinux 0x55287d75 cdrom_number_of_slots +EXPORT_SYMBOL vmlinux 0x552b1d50 scsi_target_quiesce +EXPORT_SYMBOL vmlinux 0x55386a1d netdev_master_upper_dev_link +EXPORT_SYMBOL vmlinux 0x553a931e posix_acl_to_xattr +EXPORT_SYMBOL vmlinux 0x5541ea93 on_each_cpu +EXPORT_SYMBOL vmlinux 0x5555190a mpage_writepage +EXPORT_SYMBOL vmlinux 0x5567c227 kernel_cpustat +EXPORT_SYMBOL vmlinux 0x5568c553 complete +EXPORT_SYMBOL vmlinux 0x55739a9f seq_pad +EXPORT_SYMBOL vmlinux 0x55757d73 load_nls_default +EXPORT_SYMBOL vmlinux 0x5577ef9e udp_table +EXPORT_SYMBOL vmlinux 0x557a32dd __elv_add_request +EXPORT_SYMBOL vmlinux 0x557a661b seq_vprintf +EXPORT_SYMBOL vmlinux 0x55acb562 netdev_emerg +EXPORT_SYMBOL vmlinux 0x55b9e5b4 vm_iomap_memory +EXPORT_SYMBOL vmlinux 0x55c2565c nonseekable_open +EXPORT_SYMBOL vmlinux 0x55c48544 write_one_page +EXPORT_SYMBOL vmlinux 0x55d481c9 hdmi_infoframe_unpack +EXPORT_SYMBOL vmlinux 0x55d6c684 __devm_release_region +EXPORT_SYMBOL vmlinux 0x55dd3d8c elv_rb_del +EXPORT_SYMBOL vmlinux 0x55e18198 tcp_md5_do_add +EXPORT_SYMBOL vmlinux 0x55e4587f arp_send +EXPORT_SYMBOL vmlinux 0x55e58c98 seq_path +EXPORT_SYMBOL vmlinux 0x55f7e895 nd_btt_probe +EXPORT_SYMBOL vmlinux 0x561d0ec1 sock_no_socketpair +EXPORT_SYMBOL vmlinux 0x562595bb __devcgroup_inode_permission +EXPORT_SYMBOL vmlinux 0x562b25f1 netdev_lower_dev_get_private +EXPORT_SYMBOL vmlinux 0x5635a60a vmalloc_user +EXPORT_SYMBOL vmlinux 0x563952a3 kblockd_schedule_work +EXPORT_SYMBOL vmlinux 0x56617841 vm_map_ram +EXPORT_SYMBOL vmlinux 0x5676fd93 seq_write +EXPORT_SYMBOL vmlinux 0x56a10763 csum_tcpudp_magic +EXPORT_SYMBOL vmlinux 0x56b60f31 set_nlink +EXPORT_SYMBOL vmlinux 0x56c2d78d blk_pm_runtime_init +EXPORT_SYMBOL vmlinux 0x56c8799d scsi_kunmap_atomic_sg +EXPORT_SYMBOL vmlinux 0x56c8e25d phy_find_first +EXPORT_SYMBOL vmlinux 0x56cdf2ff blk_start_request +EXPORT_SYMBOL vmlinux 0x56dee4d0 of_create_pci_dev +EXPORT_SYMBOL vmlinux 0x56f9cab4 skb_copy +EXPORT_SYMBOL vmlinux 0x5708e297 cdrom_check_events +EXPORT_SYMBOL vmlinux 0x572e85d4 blk_lookup_devt +EXPORT_SYMBOL vmlinux 0x57428e2b security_sb_clone_mnt_opts +EXPORT_SYMBOL vmlinux 0x574c2e74 bitmap_release_region +EXPORT_SYMBOL vmlinux 0x574ca034 scsi_cmd_get_serial +EXPORT_SYMBOL vmlinux 0x57575f08 dmaengine_put +EXPORT_SYMBOL vmlinux 0x575af70c on_each_cpu_mask +EXPORT_SYMBOL vmlinux 0x57674fd7 __sw_hweight16 +EXPORT_SYMBOL vmlinux 0x577984b0 kobject_add +EXPORT_SYMBOL vmlinux 0x577d0dc5 i2c_smbus_write_word_data +EXPORT_SYMBOL vmlinux 0x578bd06c security_inode_init_security +EXPORT_SYMBOL vmlinux 0x579fbcd2 cpu_possible_mask +EXPORT_SYMBOL vmlinux 0x57cdf784 pci_request_selected_regions +EXPORT_SYMBOL vmlinux 0x57ced2d9 elv_unregister_queue +EXPORT_SYMBOL vmlinux 0x57daf376 in_dev_finish_destroy +EXPORT_SYMBOL vmlinux 0x57dd926b udp_ioctl +EXPORT_SYMBOL vmlinux 0x580c160e filemap_fdatawait +EXPORT_SYMBOL vmlinux 0x581f98da zlib_inflate +EXPORT_SYMBOL vmlinux 0x5834c317 gnet_stats_start_copy_compat +EXPORT_SYMBOL vmlinux 0x58371719 dev_remove_pack +EXPORT_SYMBOL vmlinux 0x5838f6c9 rtc_valid_tm +EXPORT_SYMBOL vmlinux 0x583d881b dm_put_device +EXPORT_SYMBOL vmlinux 0x585220a7 bdev_stack_limits +EXPORT_SYMBOL vmlinux 0x5857b225 ioread16_rep +EXPORT_SYMBOL vmlinux 0x58623807 proc_dointvec_minmax +EXPORT_SYMBOL vmlinux 0x587616f1 vfs_fstatat +EXPORT_SYMBOL vmlinux 0x589b868a __dev_get_by_name +EXPORT_SYMBOL vmlinux 0x58aae480 nlmsg_notify +EXPORT_SYMBOL vmlinux 0x58b73bc7 match_wildcard +EXPORT_SYMBOL vmlinux 0x58bf4d2f dev_alert +EXPORT_SYMBOL vmlinux 0x58d87970 page_follow_link_light +EXPORT_SYMBOL vmlinux 0x58f1f946 mpage_writepages +EXPORT_SYMBOL vmlinux 0x590af361 fget +EXPORT_SYMBOL vmlinux 0x590ef2c1 kernel_sock_ioctl +EXPORT_SYMBOL vmlinux 0x591241d0 register_sysctl_table +EXPORT_SYMBOL vmlinux 0x5938e13b ip_do_fragment +EXPORT_SYMBOL vmlinux 0x5949bfc8 scsi_eh_prep_cmnd +EXPORT_SYMBOL vmlinux 0x594bf15b ioport_map +EXPORT_SYMBOL vmlinux 0x5955e40a netif_tx_stop_all_queues +EXPORT_SYMBOL vmlinux 0x595d0946 empty_zero_page +EXPORT_SYMBOL vmlinux 0x5964e6c3 abx500_register_ops +EXPORT_SYMBOL vmlinux 0x598e4904 mod_timer_pending +EXPORT_SYMBOL vmlinux 0x599d2b8a prepare_binprm +EXPORT_SYMBOL vmlinux 0x599d920f vlan_ioctl_set +EXPORT_SYMBOL vmlinux 0x59aa14cf fence_release +EXPORT_SYMBOL vmlinux 0x59b3378a completion_done +EXPORT_SYMBOL vmlinux 0x59d7e4ae bio_integrity_clone +EXPORT_SYMBOL vmlinux 0x59fe6c7a bitmap_endwrite +EXPORT_SYMBOL vmlinux 0x5a0b73d0 zlib_deflateInit2 +EXPORT_SYMBOL vmlinux 0x5a243a25 xfrm_state_add +EXPORT_SYMBOL vmlinux 0x5a3d6e77 find_get_pages_contig +EXPORT_SYMBOL vmlinux 0x5a5096da iov_iter_copy_from_user_atomic +EXPORT_SYMBOL vmlinux 0x5a73c185 mmc_stop_bkops +EXPORT_SYMBOL vmlinux 0x5a75eb67 audit_log_start +EXPORT_SYMBOL vmlinux 0x5a8e729c remove_arg_zero +EXPORT_SYMBOL vmlinux 0x5a94890e sk_stream_kill_queues +EXPORT_SYMBOL vmlinux 0x5ab52eb5 __set_page_dirty_buffers +EXPORT_SYMBOL vmlinux 0x5adb9178 netlink_kernel_release +EXPORT_SYMBOL vmlinux 0x5ae09c4b frontswap_register_ops +EXPORT_SYMBOL vmlinux 0x5ae9dec5 inet_release +EXPORT_SYMBOL vmlinux 0x5aeca56e skb_append_datato_frags +EXPORT_SYMBOL vmlinux 0x5aff4177 vme_lm_get +EXPORT_SYMBOL vmlinux 0x5b096459 register_md_personality +EXPORT_SYMBOL vmlinux 0x5b137821 is_nd_btt +EXPORT_SYMBOL vmlinux 0x5b19634d div_s64_rem +EXPORT_SYMBOL vmlinux 0x5b1b06dd xfrm_state_register_afinfo +EXPORT_SYMBOL vmlinux 0x5b1f7dac iov_iter_fault_in_readable +EXPORT_SYMBOL vmlinux 0x5b31fdcd end_buffer_async_write +EXPORT_SYMBOL vmlinux 0x5b3de43f ip6_route_output +EXPORT_SYMBOL vmlinux 0x5b76944d phy_write_mmd_indirect +EXPORT_SYMBOL vmlinux 0x5b9828c5 dma_spin_lock +EXPORT_SYMBOL vmlinux 0x5bc5c0f6 tag_pages_for_writeback +EXPORT_SYMBOL vmlinux 0x5bd56490 tcf_destroy_chain +EXPORT_SYMBOL vmlinux 0x5be73e8d vga_set_legacy_decoding +EXPORT_SYMBOL vmlinux 0x5c0e07df elv_register_queue +EXPORT_SYMBOL vmlinux 0x5c17eb82 pci_request_region_exclusive +EXPORT_SYMBOL vmlinux 0x5c20922a fb_validate_mode +EXPORT_SYMBOL vmlinux 0x5c216f40 mmc_unregister_driver +EXPORT_SYMBOL vmlinux 0x5c37f319 _raw_spin_unlock_irqrestore +EXPORT_SYMBOL vmlinux 0x5c7639fc jbd2_journal_init_inode +EXPORT_SYMBOL vmlinux 0x5c780333 noop_llseek +EXPORT_SYMBOL vmlinux 0x5cb252d3 xfrm_state_walk +EXPORT_SYMBOL vmlinux 0x5cc32bdc bitmap_copy_le +EXPORT_SYMBOL vmlinux 0x5ccaa582 simple_transaction_release +EXPORT_SYMBOL vmlinux 0x5cddda8f ping_prot +EXPORT_SYMBOL vmlinux 0x5cf53ce2 input_free_minor +EXPORT_SYMBOL vmlinux 0x5cf743d6 bio_alloc_bioset +EXPORT_SYMBOL vmlinux 0x5cf8fd8a sk_alloc +EXPORT_SYMBOL vmlinux 0x5cfbafb0 locks_free_lock +EXPORT_SYMBOL vmlinux 0x5d13b62c register_framebuffer +EXPORT_SYMBOL vmlinux 0x5d550c4d scsi_sd_probe_domain +EXPORT_SYMBOL vmlinux 0x5d58efa0 convert_ifc_address +EXPORT_SYMBOL vmlinux 0x5d5a4229 swiotlb_sync_single_for_device +EXPORT_SYMBOL vmlinux 0x5d5ba650 unregister_netdevice_queue +EXPORT_SYMBOL vmlinux 0x5d5ec2e9 cdrom_get_last_written +EXPORT_SYMBOL vmlinux 0x5d60de39 simple_rmdir +EXPORT_SYMBOL vmlinux 0x5d6bc7e2 blk_rq_set_block_pc +EXPORT_SYMBOL vmlinux 0x5d99650a nf_log_unbind_pf +EXPORT_SYMBOL vmlinux 0x5dc409a2 seq_printf +EXPORT_SYMBOL vmlinux 0x5dc93e6d i2c_add_adapter +EXPORT_SYMBOL vmlinux 0x5dd008ba elv_rq_merge_ok +EXPORT_SYMBOL vmlinux 0x5dd56cc4 tty_devnum +EXPORT_SYMBOL vmlinux 0x5df2bd57 jbd2_trans_will_send_data_barrier +EXPORT_SYMBOL vmlinux 0x5e030eec tcp_setsockopt +EXPORT_SYMBOL vmlinux 0x5e25e080 vme_new_dma_list +EXPORT_SYMBOL vmlinux 0x5e27321b register_sysctl_paths +EXPORT_SYMBOL vmlinux 0x5e33d1bb pci_get_device +EXPORT_SYMBOL vmlinux 0x5e3a8a9c __wake_up +EXPORT_SYMBOL vmlinux 0x5e3f927f udp_lib_rehash +EXPORT_SYMBOL vmlinux 0x5e51a6a7 proc_symlink +EXPORT_SYMBOL vmlinux 0x5e866d85 prandom_bytes +EXPORT_SYMBOL vmlinux 0x5e8d7062 mdiobus_scan +EXPORT_SYMBOL vmlinux 0x5e95b1cd current_umask +EXPORT_SYMBOL vmlinux 0x5e9e8a2d phy_ethtool_set_wol +EXPORT_SYMBOL vmlinux 0x5ea013cd no_llseek +EXPORT_SYMBOL vmlinux 0x5ea30db9 blk_mq_stop_hw_queue +EXPORT_SYMBOL vmlinux 0x5eb0401e proc_dostring +EXPORT_SYMBOL vmlinux 0x5eb24829 dm_shift_arg +EXPORT_SYMBOL vmlinux 0x5eba0a2f find_inode_nowait +EXPORT_SYMBOL vmlinux 0x5eba682d vga_client_register +EXPORT_SYMBOL vmlinux 0x5ecf00fd i8042_install_filter +EXPORT_SYMBOL vmlinux 0x5ed040b0 pm_set_vt_switch +EXPORT_SYMBOL vmlinux 0x5edefa1b bio_chain +EXPORT_SYMBOL vmlinux 0x5eef67a5 devm_ioremap_wc +EXPORT_SYMBOL vmlinux 0x5ef513fc neigh_app_ns +EXPORT_SYMBOL vmlinux 0x5f005368 kstrtou8 +EXPORT_SYMBOL vmlinux 0x5f098b2a in6addr_interfacelocal_allrouters +EXPORT_SYMBOL vmlinux 0x5f160e4d rt6_lookup +EXPORT_SYMBOL vmlinux 0x5f25930d dcache_readdir +EXPORT_SYMBOL vmlinux 0x5f327be1 dev_addr_flush +EXPORT_SYMBOL vmlinux 0x5f3e8cc6 down_write +EXPORT_SYMBOL vmlinux 0x5f55d4ba xfrm_find_acq_byseq +EXPORT_SYMBOL vmlinux 0x5f67300d neigh_event_ns +EXPORT_SYMBOL vmlinux 0x5f754e5a memset +EXPORT_SYMBOL vmlinux 0x5f772550 devm_clk_get +EXPORT_SYMBOL vmlinux 0x5f7a577f jbd2_journal_set_triggers +EXPORT_SYMBOL vmlinux 0x5f816dfa mipi_dsi_dcs_set_display_on +EXPORT_SYMBOL vmlinux 0x5f8a2728 isa_io_base +EXPORT_SYMBOL vmlinux 0x5f8d6bda tcp_make_synack +EXPORT_SYMBOL vmlinux 0x5fc1d1a6 blk_end_request_cur +EXPORT_SYMBOL vmlinux 0x5fc2ef1b padata_add_cpu +EXPORT_SYMBOL vmlinux 0x5fd268cb radix_tree_gang_lookup +EXPORT_SYMBOL vmlinux 0x5fd322f9 crypto_sha512_finup +EXPORT_SYMBOL vmlinux 0x5fda0227 vfs_stat +EXPORT_SYMBOL vmlinux 0x5fe5589f register_shrinker +EXPORT_SYMBOL vmlinux 0x5ffd3746 validate_sp +EXPORT_SYMBOL vmlinux 0x600683d3 do_unblank_screen +EXPORT_SYMBOL vmlinux 0x601f665f dm_io_client_create +EXPORT_SYMBOL vmlinux 0x60226e36 do_splice_to +EXPORT_SYMBOL vmlinux 0x602e2f05 serial8250_do_set_termios +EXPORT_SYMBOL vmlinux 0x60352082 register_inet6addr_notifier +EXPORT_SYMBOL vmlinux 0x603bd08a devm_get_gpiod_from_child +EXPORT_SYMBOL vmlinux 0x6041bfe9 netlink_broadcast_filtered +EXPORT_SYMBOL vmlinux 0x60666bb0 passthru_features_check +EXPORT_SYMBOL vmlinux 0x606ced0a dquot_quota_off +EXPORT_SYMBOL vmlinux 0x606d0b09 secure_tcpv6_sequence_number +EXPORT_SYMBOL vmlinux 0x6073732c cur_cpu_spec +EXPORT_SYMBOL vmlinux 0x60763ad7 uart_suspend_port +EXPORT_SYMBOL vmlinux 0x6077ea44 pid_task +EXPORT_SYMBOL vmlinux 0x607f5836 kmalloc_dma_caches +EXPORT_SYMBOL vmlinux 0x60827c4b cdev_add +EXPORT_SYMBOL vmlinux 0x6085360c sync_inode_metadata +EXPORT_SYMBOL vmlinux 0x6091644e flow_keys_dissector +EXPORT_SYMBOL vmlinux 0x609f1c7e synchronize_net +EXPORT_SYMBOL vmlinux 0x60b5d8e2 scsi_add_device +EXPORT_SYMBOL vmlinux 0x60b86f61 sg_pcopy_to_buffer +EXPORT_SYMBOL vmlinux 0x60dca1fb pci_scan_slot +EXPORT_SYMBOL vmlinux 0x60df1e3b posix_acl_equiv_mode +EXPORT_SYMBOL vmlinux 0x60f4be1f dev_get_iflink +EXPORT_SYMBOL vmlinux 0x6102cdb7 deactivate_locked_super +EXPORT_SYMBOL vmlinux 0x61042295 lock_fb_info +EXPORT_SYMBOL vmlinux 0x6128b5fc __printk_ratelimit +EXPORT_SYMBOL vmlinux 0x6148eac3 __xfrm_decode_session +EXPORT_SYMBOL vmlinux 0x614faf17 skb_queue_head +EXPORT_SYMBOL vmlinux 0x615746cd elevator_change +EXPORT_SYMBOL vmlinux 0x617c34d0 sync_mapping_buffers +EXPORT_SYMBOL vmlinux 0x617e42a6 blk_get_queue +EXPORT_SYMBOL vmlinux 0x61978859 blk_mq_delay_queue +EXPORT_SYMBOL vmlinux 0x619964f8 sock_recvmsg +EXPORT_SYMBOL vmlinux 0x61b3560c cmdline_parts_set +EXPORT_SYMBOL vmlinux 0x61b7b126 simple_strtoull +EXPORT_SYMBOL vmlinux 0x61bf554c page_readlink +EXPORT_SYMBOL vmlinux 0x61c90898 devfreq_suspend_device +EXPORT_SYMBOL vmlinux 0x61cbffa4 simple_transaction_read +EXPORT_SYMBOL vmlinux 0x61ce517d lock_sock_fast +EXPORT_SYMBOL vmlinux 0x61d876b7 tcf_exts_change +EXPORT_SYMBOL vmlinux 0x61e46740 igrab +EXPORT_SYMBOL vmlinux 0x61eef2c9 _insb +EXPORT_SYMBOL vmlinux 0x61f67713 agp_alloc_bridge +EXPORT_SYMBOL vmlinux 0x6214aef2 cpufreq_unregister_notifier +EXPORT_SYMBOL vmlinux 0x6214f7c8 irq_set_chip +EXPORT_SYMBOL vmlinux 0x6220b4a2 crc32_le +EXPORT_SYMBOL vmlinux 0x6225637e md5_transform +EXPORT_SYMBOL vmlinux 0x6228c21f smp_call_function_single +EXPORT_SYMBOL vmlinux 0x622e724a phy_connect_direct +EXPORT_SYMBOL vmlinux 0x623fb5b6 generic_read_dir +EXPORT_SYMBOL vmlinux 0x624ff24f ppp_channel_index +EXPORT_SYMBOL vmlinux 0x62538167 slhc_toss +EXPORT_SYMBOL vmlinux 0x6258234a adjust_managed_page_count +EXPORT_SYMBOL vmlinux 0x6266ff75 sb_min_blocksize +EXPORT_SYMBOL vmlinux 0x62737e1d sock_unregister +EXPORT_SYMBOL vmlinux 0x62775234 d_alloc_pseudo +EXPORT_SYMBOL vmlinux 0x62827bec security_secctx_to_secid +EXPORT_SYMBOL vmlinux 0x628368e3 netpoll_poll_disable +EXPORT_SYMBOL vmlinux 0x62849ac7 dev_valid_name +EXPORT_SYMBOL vmlinux 0x62881006 mmc_of_parse +EXPORT_SYMBOL vmlinux 0x62984a11 dquot_alloc_inode +EXPORT_SYMBOL vmlinux 0x62d95242 loop_backing_file +EXPORT_SYMBOL vmlinux 0x62da2439 cap_mmap_file +EXPORT_SYMBOL vmlinux 0x6311ae03 param_ops_bool +EXPORT_SYMBOL vmlinux 0x63187451 pcie_aspm_support_enabled +EXPORT_SYMBOL vmlinux 0x6319e589 xfrm6_protocol_register +EXPORT_SYMBOL vmlinux 0x63231951 gen_pool_create +EXPORT_SYMBOL vmlinux 0x6331b862 eth_mac_addr +EXPORT_SYMBOL vmlinux 0x6336cd36 skb_orphan_partial +EXPORT_SYMBOL vmlinux 0x633e0681 wake_up_process +EXPORT_SYMBOL vmlinux 0x635129af input_unregister_handle +EXPORT_SYMBOL vmlinux 0x636e230d tcp_initialize_rcv_mss +EXPORT_SYMBOL vmlinux 0x6381c383 lockref_get_not_zero +EXPORT_SYMBOL vmlinux 0x6382e590 blk_queue_update_dma_alignment +EXPORT_SYMBOL vmlinux 0x63a7c28c bitmap_find_free_region +EXPORT_SYMBOL vmlinux 0x63af67f5 kernel_getpeername +EXPORT_SYMBOL vmlinux 0x63b018ef devfreq_monitor_suspend +EXPORT_SYMBOL vmlinux 0x63c4d61f __bitmap_weight +EXPORT_SYMBOL vmlinux 0x63c83430 xfrm6_rcv_spi +EXPORT_SYMBOL vmlinux 0x63d95aa8 __vlan_find_dev_deep_rcu +EXPORT_SYMBOL vmlinux 0x63e18718 mmc_wait_for_cmd +EXPORT_SYMBOL vmlinux 0x63e31b7a agp_free_memory +EXPORT_SYMBOL vmlinux 0x63e7c705 bioset_integrity_free +EXPORT_SYMBOL vmlinux 0x63eb9355 panic_blink +EXPORT_SYMBOL vmlinux 0x63effefe vfs_write +EXPORT_SYMBOL vmlinux 0x63fbc4d7 __insert_inode_hash +EXPORT_SYMBOL vmlinux 0x63fc232f strlen_user +EXPORT_SYMBOL vmlinux 0x6403e338 tcp_memory_pressure +EXPORT_SYMBOL vmlinux 0x64127b67 bitmap_find_next_zero_area_off +EXPORT_SYMBOL vmlinux 0x64191e07 from_kprojid +EXPORT_SYMBOL vmlinux 0x641b74b5 __alloc_pages_nodemask +EXPORT_SYMBOL vmlinux 0x64565307 lockref_get_not_dead +EXPORT_SYMBOL vmlinux 0x646ce9cd skb_copy_bits +EXPORT_SYMBOL vmlinux 0x64711c8f set_bh_page +EXPORT_SYMBOL vmlinux 0x64800996 pm_vt_switch_unregister +EXPORT_SYMBOL vmlinux 0x64999478 congestion_wait +EXPORT_SYMBOL vmlinux 0x649a6c07 __register_chrdev +EXPORT_SYMBOL vmlinux 0x64a4b84d cpu_rmap_update +EXPORT_SYMBOL vmlinux 0x64ba21b2 pci_set_mwi +EXPORT_SYMBOL vmlinux 0x64c5a0f7 skb_tx_error +EXPORT_SYMBOL vmlinux 0x64c723a5 of_get_named_gpio_flags +EXPORT_SYMBOL vmlinux 0x64f03f9f dev_remove_offload +EXPORT_SYMBOL vmlinux 0x64f34309 security_path_rename +EXPORT_SYMBOL vmlinux 0x65083cd3 dev_notice +EXPORT_SYMBOL vmlinux 0x6513a3fa fb_get_color_depth +EXPORT_SYMBOL vmlinux 0x651a4139 test_taint +EXPORT_SYMBOL vmlinux 0x651df7d2 read_code +EXPORT_SYMBOL vmlinux 0x65400222 __irq_offset_value +EXPORT_SYMBOL vmlinux 0x65408378 zlib_inflate_blob +EXPORT_SYMBOL vmlinux 0x654bd5a7 md_unregister_thread +EXPORT_SYMBOL vmlinux 0x65531815 tty_schedule_flip +EXPORT_SYMBOL vmlinux 0x655e244d free_user_ns +EXPORT_SYMBOL vmlinux 0x65618999 mutex_trylock +EXPORT_SYMBOL vmlinux 0x6565d33f scsi_kmap_atomic_sg +EXPORT_SYMBOL vmlinux 0x6587fc1f param_set_ulong +EXPORT_SYMBOL vmlinux 0x6588c38d vga_con +EXPORT_SYMBOL vmlinux 0x65a2c176 inet_dev_addr_type +EXPORT_SYMBOL vmlinux 0x65a3436f iov_iter_init +EXPORT_SYMBOL vmlinux 0x65b589b9 pcie_capability_read_word +EXPORT_SYMBOL vmlinux 0x65b7c941 cdev_init +EXPORT_SYMBOL vmlinux 0x65bb58a2 _raw_read_trylock +EXPORT_SYMBOL vmlinux 0x65d9e877 cpufreq_register_notifier +EXPORT_SYMBOL vmlinux 0x65dccf13 xz_dec_end +EXPORT_SYMBOL vmlinux 0x65efe26e bio_reset +EXPORT_SYMBOL vmlinux 0x65f3ad9a fb_videomode_to_var +EXPORT_SYMBOL vmlinux 0x65fd0bf0 blk_queue_segment_boundary +EXPORT_SYMBOL vmlinux 0x660efb02 udp6_set_csum +EXPORT_SYMBOL vmlinux 0x661b6bbe get_task_io_context +EXPORT_SYMBOL vmlinux 0x66361f59 filemap_fdatawait_range +EXPORT_SYMBOL vmlinux 0x663744b3 serial8250_set_isa_configurator +EXPORT_SYMBOL vmlinux 0x663c2837 page_cache_next_hole +EXPORT_SYMBOL vmlinux 0x664079b0 sock_no_recvmsg +EXPORT_SYMBOL vmlinux 0x664b4dc6 netlink_net_capable +EXPORT_SYMBOL vmlinux 0x665c5c59 tcp_init_cgroup +EXPORT_SYMBOL vmlinux 0x6676744c km_state_expired +EXPORT_SYMBOL vmlinux 0x667a9b7f __sock_tx_timestamp +EXPORT_SYMBOL vmlinux 0x66a28b07 kmalloc_caches +EXPORT_SYMBOL vmlinux 0x66c22eb1 sk_ns_capable +EXPORT_SYMBOL vmlinux 0x67055859 tcf_action_dump_1 +EXPORT_SYMBOL vmlinux 0x67297577 iterate_mounts +EXPORT_SYMBOL vmlinux 0x673f815e agp_bridges +EXPORT_SYMBOL vmlinux 0x6749070e nf_log_unregister +EXPORT_SYMBOL vmlinux 0x6749b8e8 tcp_md5_do_lookup +EXPORT_SYMBOL vmlinux 0x67598756 blk_get_backing_dev_info +EXPORT_SYMBOL vmlinux 0x6762913c inet_csk_delete_keepalive_timer +EXPORT_SYMBOL vmlinux 0x676e87e5 clear_page_dirty_for_io +EXPORT_SYMBOL vmlinux 0x67733cf4 mb_cache_create +EXPORT_SYMBOL vmlinux 0x679f3688 nd_iostat_end +EXPORT_SYMBOL vmlinux 0x67a28d5c __devm_gpiod_get +EXPORT_SYMBOL vmlinux 0x67b78eb3 seq_hlist_next_rcu +EXPORT_SYMBOL vmlinux 0x67bb6dea blk_queue_logical_block_size +EXPORT_SYMBOL vmlinux 0x67e02063 framebuffer_alloc +EXPORT_SYMBOL vmlinux 0x67eecacd t10_pi_type1_ip +EXPORT_SYMBOL vmlinux 0x67f12747 swiotlb_sync_single_for_cpu +EXPORT_SYMBOL vmlinux 0x6802f813 msi_bitmap_free_hwirqs +EXPORT_SYMBOL vmlinux 0x6808b453 __unregister_cpu_notifier +EXPORT_SYMBOL vmlinux 0x68609857 complete_and_exit +EXPORT_SYMBOL vmlinux 0x687b6a16 kdbgetsymval +EXPORT_SYMBOL vmlinux 0x68b83ac6 posix_acl_alloc +EXPORT_SYMBOL vmlinux 0x68c315d3 dump_align +EXPORT_SYMBOL vmlinux 0x6913caa3 security_path_link +EXPORT_SYMBOL vmlinux 0x69143ff2 tcp_gro_complete +EXPORT_SYMBOL vmlinux 0x69284195 blk_queue_find_tag +EXPORT_SYMBOL vmlinux 0x6947c8e2 del_gendisk +EXPORT_SYMBOL vmlinux 0x694862f2 bprm_change_interp +EXPORT_SYMBOL vmlinux 0x695e1eef sk_stream_wait_memory +EXPORT_SYMBOL vmlinux 0x6971447a rtc_month_days +EXPORT_SYMBOL vmlinux 0x69a07e41 ndisc_mc_map +EXPORT_SYMBOL vmlinux 0x69a0ca7d iowrite16be +EXPORT_SYMBOL vmlinux 0x69a358a6 iomem_resource +EXPORT_SYMBOL vmlinux 0x69a65cae follow_down +EXPORT_SYMBOL vmlinux 0x69ad2f20 kstrtouint +EXPORT_SYMBOL vmlinux 0x69b2b049 blk_integrity_merge_rq +EXPORT_SYMBOL vmlinux 0x69bd1cd5 __neigh_set_probe_once +EXPORT_SYMBOL vmlinux 0x69bea5fe path_get +EXPORT_SYMBOL vmlinux 0x69c394a1 of_find_backlight_by_node +EXPORT_SYMBOL vmlinux 0x69c61745 blk_queue_softirq_done +EXPORT_SYMBOL vmlinux 0x69d7e5b8 __debugger_ipi +EXPORT_SYMBOL vmlinux 0x69e34287 blk_init_allocated_queue +EXPORT_SYMBOL vmlinux 0x69e92492 noop_qdisc +EXPORT_SYMBOL vmlinux 0x69fe04e3 bitmap_close_sync +EXPORT_SYMBOL vmlinux 0x6a037cf1 mempool_kfree +EXPORT_SYMBOL vmlinux 0x6a21328f pci_get_domain_bus_and_slot +EXPORT_SYMBOL vmlinux 0x6a27ac81 input_release_device +EXPORT_SYMBOL vmlinux 0x6a399110 netif_schedule_queue +EXPORT_SYMBOL vmlinux 0x6a5a64e1 dquot_acquire +EXPORT_SYMBOL vmlinux 0x6a5ecb18 unregister_module_notifier +EXPORT_SYMBOL vmlinux 0x6a675a98 generic_file_llseek +EXPORT_SYMBOL vmlinux 0x6a6e8006 neigh_seq_start +EXPORT_SYMBOL vmlinux 0x6a740c54 gen_pool_for_each_chunk +EXPORT_SYMBOL vmlinux 0x6a76f3ac blk_iopoll_enable +EXPORT_SYMBOL vmlinux 0x6a80a3f5 cpm_muram_free +EXPORT_SYMBOL vmlinux 0x6a89222b get_thermal_instance +EXPORT_SYMBOL vmlinux 0x6a96146f blk_queue_init_tags +EXPORT_SYMBOL vmlinux 0x6aae915d pagecache_write_end +EXPORT_SYMBOL vmlinux 0x6ac26b1a __sk_dst_check +EXPORT_SYMBOL vmlinux 0x6acafd5b cookie_timestamp_decode +EXPORT_SYMBOL vmlinux 0x6acb973d iowrite32be +EXPORT_SYMBOL vmlinux 0x6ad04659 key_revoke +EXPORT_SYMBOL vmlinux 0x6adf856a ata_scsi_cmd_error_handler +EXPORT_SYMBOL vmlinux 0x6aeefac4 zlib_deflateReset +EXPORT_SYMBOL vmlinux 0x6aeffe8d xfrm_state_lookup_byspi +EXPORT_SYMBOL vmlinux 0x6b013b6a nf_log_bind_pf +EXPORT_SYMBOL vmlinux 0x6b06fdce delayed_work_timer_fn +EXPORT_SYMBOL vmlinux 0x6b125ed5 pcibios_fixup_bus +EXPORT_SYMBOL vmlinux 0x6b166447 kill_block_super +EXPORT_SYMBOL vmlinux 0x6b1b67d3 __bdevname +EXPORT_SYMBOL vmlinux 0x6b1becf2 md_error +EXPORT_SYMBOL vmlinux 0x6b222e24 of_mm_gpiochip_remove +EXPORT_SYMBOL vmlinux 0x6b2dc060 dump_stack +EXPORT_SYMBOL vmlinux 0x6b60e0b9 proc_set_size +EXPORT_SYMBOL vmlinux 0x6b6123fa mutex_unlock +EXPORT_SYMBOL vmlinux 0x6b66c889 fence_free +EXPORT_SYMBOL vmlinux 0x6b6e1adb iov_iter_bvec +EXPORT_SYMBOL vmlinux 0x6bbc217e account_page_dirtied +EXPORT_SYMBOL vmlinux 0x6bc1c0b5 generic_setxattr +EXPORT_SYMBOL vmlinux 0x6bc3fbc0 __unregister_chrdev +EXPORT_SYMBOL vmlinux 0x6bdcfd99 qdisc_class_hash_remove +EXPORT_SYMBOL vmlinux 0x6bdfdbce tty_hung_up_p +EXPORT_SYMBOL vmlinux 0x6c09c2a4 del_timer +EXPORT_SYMBOL vmlinux 0x6c108e31 dev_add_offload +EXPORT_SYMBOL vmlinux 0x6c143e1d bioset_create +EXPORT_SYMBOL vmlinux 0x6c1ce5ce strcspn +EXPORT_SYMBOL vmlinux 0x6c3c8848 __free_pages +EXPORT_SYMBOL vmlinux 0x6c403c82 blk_rq_map_user_iov +EXPORT_SYMBOL vmlinux 0x6c467ff7 reservation_object_add_shared_fence +EXPORT_SYMBOL vmlinux 0x6c51a836 sysctl_tcp_notsent_lowat +EXPORT_SYMBOL vmlinux 0x6c5d3f22 memory_cgrp_subsys +EXPORT_SYMBOL vmlinux 0x6c61ce70 num_registered_fb +EXPORT_SYMBOL vmlinux 0x6c639ebf dm_unregister_target +EXPORT_SYMBOL vmlinux 0x6c702af7 sysctl_udp_rmem_min +EXPORT_SYMBOL vmlinux 0x6c8dee7a security_d_instantiate +EXPORT_SYMBOL vmlinux 0x6c941e14 skb_dequeue_tail +EXPORT_SYMBOL vmlinux 0x6c967221 csum_and_copy_from_iter +EXPORT_SYMBOL vmlinux 0x6ca1b922 fsnotify_init_mark +EXPORT_SYMBOL vmlinux 0x6ca1d1a4 atomic64_read +EXPORT_SYMBOL vmlinux 0x6ca42ace i2c_verify_client +EXPORT_SYMBOL vmlinux 0x6ca5b0f8 __net_get_random_once +EXPORT_SYMBOL vmlinux 0x6caefa9d sk_page_frag_refill +EXPORT_SYMBOL vmlinux 0x6cb37127 flex_array_clear +EXPORT_SYMBOL vmlinux 0x6cb490e8 sdev_disable_disk_events +EXPORT_SYMBOL vmlinux 0x6cdc5c6b nla_strlcpy +EXPORT_SYMBOL vmlinux 0x6d03be9f of_find_node_with_property +EXPORT_SYMBOL vmlinux 0x6d07ba56 swiotlb_sync_sg_for_device +EXPORT_SYMBOL vmlinux 0x6d08ef13 unregister_console +EXPORT_SYMBOL vmlinux 0x6d0f1f89 dm_table_get_mode +EXPORT_SYMBOL vmlinux 0x6d107ac2 __dquot_transfer +EXPORT_SYMBOL vmlinux 0x6d294e43 clock_t_to_jiffies +EXPORT_SYMBOL vmlinux 0x6d37a15d phy_drivers_register +EXPORT_SYMBOL vmlinux 0x6d3d3ba6 tcp_proc_unregister +EXPORT_SYMBOL vmlinux 0x6d4b3f6a xfrm4_protocol_register +EXPORT_SYMBOL vmlinux 0x6d59fe92 pci_dev_driver +EXPORT_SYMBOL vmlinux 0x6d740223 flex_array_put +EXPORT_SYMBOL vmlinux 0x6d9b604c __dquot_free_space +EXPORT_SYMBOL vmlinux 0x6da928f4 _insw_ns +EXPORT_SYMBOL vmlinux 0x6db8f569 mdio_bus_type +EXPORT_SYMBOL vmlinux 0x6dd4cbee try_module_get +EXPORT_SYMBOL vmlinux 0x6dda95ec of_mdiobus_register +EXPORT_SYMBOL vmlinux 0x6de24edf generic_write_end +EXPORT_SYMBOL vmlinux 0x6def2db2 half_md4_transform +EXPORT_SYMBOL vmlinux 0x6df1aaf1 kernel_sigaction +EXPORT_SYMBOL vmlinux 0x6df60b90 register_tcf_proto_ops +EXPORT_SYMBOL vmlinux 0x6e13029a d_instantiate +EXPORT_SYMBOL vmlinux 0x6e379526 kernstart_addr +EXPORT_SYMBOL vmlinux 0x6e3cfd65 inode_change_ok +EXPORT_SYMBOL vmlinux 0x6e6514ed radix_tree_insert +EXPORT_SYMBOL vmlinux 0x6e6fe2f1 from_kuid_munged +EXPORT_SYMBOL vmlinux 0x6e720ff2 rtnl_unlock +EXPORT_SYMBOL vmlinux 0x6e725259 scsi_execute_req_flags +EXPORT_SYMBOL vmlinux 0x6e7ba123 padata_stop +EXPORT_SYMBOL vmlinux 0x6e823947 sock_update_memcg +EXPORT_SYMBOL vmlinux 0x6e9dd606 __symbol_put +EXPORT_SYMBOL vmlinux 0x6eaa3f26 alloc_disk_node +EXPORT_SYMBOL vmlinux 0x6eb74dff proc_dointvec_ms_jiffies +EXPORT_SYMBOL vmlinux 0x6ec06560 ps2_begin_command +EXPORT_SYMBOL vmlinux 0x6effcf1f request_key_async +EXPORT_SYMBOL vmlinux 0x6f0166cf input_mt_destroy_slots +EXPORT_SYMBOL vmlinux 0x6f053cb3 sock_no_bind +EXPORT_SYMBOL vmlinux 0x6f1612d4 phy_get_eee_err +EXPORT_SYMBOL vmlinux 0x6f1e8ad0 rtnl_notify +EXPORT_SYMBOL vmlinux 0x6f20960a full_name_hash +EXPORT_SYMBOL vmlinux 0x6f28a871 setattr_copy +EXPORT_SYMBOL vmlinux 0x6f3671f6 textsearch_unregister +EXPORT_SYMBOL vmlinux 0x6f5166f4 xfrm_find_acq +EXPORT_SYMBOL vmlinux 0x6f5212fd param_set_charp +EXPORT_SYMBOL vmlinux 0x6f6085f0 get_cached_acl +EXPORT_SYMBOL vmlinux 0x6f88effb hdmi_avi_infoframe_init +EXPORT_SYMBOL vmlinux 0x6f9aa6e5 scsi_unregister +EXPORT_SYMBOL vmlinux 0x6fbf07cd __free_page_frag +EXPORT_SYMBOL vmlinux 0x6fcb87a1 touch_softlockup_watchdog +EXPORT_SYMBOL vmlinux 0x6fcdead2 jbd2_journal_revoke +EXPORT_SYMBOL vmlinux 0x6ff6de99 xfrm_state_delete_tunnel +EXPORT_SYMBOL vmlinux 0x70523a7a __cond_resched_softirq +EXPORT_SYMBOL vmlinux 0x7054a3e4 request_dma +EXPORT_SYMBOL vmlinux 0x7062b4cd cmdline_parts_free +EXPORT_SYMBOL vmlinux 0x7064db93 cpufreq_global_kobject +EXPORT_SYMBOL vmlinux 0x706d051c del_timer_sync +EXPORT_SYMBOL vmlinux 0x7073f859 eth_header_parse +EXPORT_SYMBOL vmlinux 0x70745435 cros_ec_prepare_tx +EXPORT_SYMBOL vmlinux 0x707f43f6 __ctzdi2 +EXPORT_SYMBOL vmlinux 0x708166e3 scsi_host_lookup +EXPORT_SYMBOL vmlinux 0x708254cf jbd2__journal_restart +EXPORT_SYMBOL vmlinux 0x7098fca3 __skb_tx_hash +EXPORT_SYMBOL vmlinux 0x7099c610 __ww_mutex_lock_interruptible +EXPORT_SYMBOL vmlinux 0x70b2f4c5 vlan_uses_dev +EXPORT_SYMBOL vmlinux 0x70bd1289 kern_path_create +EXPORT_SYMBOL vmlinux 0x70d888b7 __debugger_fault_handler +EXPORT_SYMBOL vmlinux 0x70e1b076 __skb_checksum_complete_head +EXPORT_SYMBOL vmlinux 0x70e7858e phy_device_create +EXPORT_SYMBOL vmlinux 0x70f10b10 blk_rq_init +EXPORT_SYMBOL vmlinux 0x70f4e51c sock_common_recvmsg +EXPORT_SYMBOL vmlinux 0x70f96f88 glob_match +EXPORT_SYMBOL vmlinux 0x70ffaf90 bio_copy_data +EXPORT_SYMBOL vmlinux 0x7117e078 ipv6_skip_exthdr +EXPORT_SYMBOL vmlinux 0x7129e5f8 hex_asc +EXPORT_SYMBOL vmlinux 0x712ed37b radix_tree_gang_lookup_tag_slot +EXPORT_SYMBOL vmlinux 0x71431f09 get_empty_filp +EXPORT_SYMBOL vmlinux 0x714f8533 send_sig_info +EXPORT_SYMBOL vmlinux 0x7166a143 mmc_remove_host +EXPORT_SYMBOL vmlinux 0x7166f492 dev_driver_string +EXPORT_SYMBOL vmlinux 0x7171121c overflowgid +EXPORT_SYMBOL vmlinux 0x7171d15f devm_gpio_request +EXPORT_SYMBOL vmlinux 0x7176e32e __set_page_dirty_nobuffers +EXPORT_SYMBOL vmlinux 0x718e969b tcp_connect +EXPORT_SYMBOL vmlinux 0x71a50dbc register_blkdev +EXPORT_SYMBOL vmlinux 0x71a672ef dmam_pool_destroy +EXPORT_SYMBOL vmlinux 0x71c90087 memcmp +EXPORT_SYMBOL vmlinux 0x71e63b3d sock_alloc_send_skb +EXPORT_SYMBOL vmlinux 0x71f65175 hdmi_spd_infoframe_pack +EXPORT_SYMBOL vmlinux 0x720b5f09 poll_schedule_timeout +EXPORT_SYMBOL vmlinux 0x720ca942 dst_release +EXPORT_SYMBOL vmlinux 0x7229234d i2c_master_send +EXPORT_SYMBOL vmlinux 0x726c3ad7 sock_no_setsockopt +EXPORT_SYMBOL vmlinux 0x726e8c49 sched_autogroup_detach +EXPORT_SYMBOL vmlinux 0x72902920 mac_find_mode +EXPORT_SYMBOL vmlinux 0x72927c43 pci_release_region +EXPORT_SYMBOL vmlinux 0x72a06056 gnet_stats_start_copy +EXPORT_SYMBOL vmlinux 0x72b243d4 free_dma +EXPORT_SYMBOL vmlinux 0x72b6fa56 fence_wait_timeout +EXPORT_SYMBOL vmlinux 0x72d4c23c fsl_get_sys_freq +EXPORT_SYMBOL vmlinux 0x72d58de9 kstrtou8_from_user +EXPORT_SYMBOL vmlinux 0x72df9979 kfree_put_link +EXPORT_SYMBOL vmlinux 0x72ea7b2d scsi_device_type +EXPORT_SYMBOL vmlinux 0x73044211 blk_mq_alloc_request +EXPORT_SYMBOL vmlinux 0x7315a4e9 twl6030_mmc_card_detect_config +EXPORT_SYMBOL vmlinux 0x733b2383 next_tlbcam_idx +EXPORT_SYMBOL vmlinux 0x733c3b54 kasprintf +EXPORT_SYMBOL vmlinux 0x73412203 param_get_bool +EXPORT_SYMBOL vmlinux 0x7343ce50 registered_fb +EXPORT_SYMBOL vmlinux 0x735d8503 add_wait_queue +EXPORT_SYMBOL vmlinux 0x736b3d93 kernel_listen +EXPORT_SYMBOL vmlinux 0x73710a3e dqstats +EXPORT_SYMBOL vmlinux 0x73731c57 scsi_register +EXPORT_SYMBOL vmlinux 0x737cc24e ata_std_end_eh +EXPORT_SYMBOL vmlinux 0x73a7bdf7 mipi_dsi_host_unregister +EXPORT_SYMBOL vmlinux 0x73bec418 set_groups +EXPORT_SYMBOL vmlinux 0x73d4391d udp_lib_getsockopt +EXPORT_SYMBOL vmlinux 0x73e20c1c strlcpy +EXPORT_SYMBOL vmlinux 0x73fd8754 mmc_gpio_request_ro +EXPORT_SYMBOL vmlinux 0x7410aba2 strreplace +EXPORT_SYMBOL vmlinux 0x741e5dd8 elv_dispatch_add_tail +EXPORT_SYMBOL vmlinux 0x74285361 pci_unmap_rom +EXPORT_SYMBOL vmlinux 0x7433f1b9 mmc_read_bkops_status +EXPORT_SYMBOL vmlinux 0x743591fb ilookup5 +EXPORT_SYMBOL vmlinux 0x743c02b8 param_set_int +EXPORT_SYMBOL vmlinux 0x746c0438 __task_pid_nr_ns +EXPORT_SYMBOL vmlinux 0x747195f0 hdmi_vendor_infoframe_init +EXPORT_SYMBOL vmlinux 0x7481d253 generic_pipe_buf_get +EXPORT_SYMBOL vmlinux 0x7485e15e unregister_chrdev_region +EXPORT_SYMBOL vmlinux 0x74922631 generic_update_time +EXPORT_SYMBOL vmlinux 0x749cd7d9 blk_stop_queue +EXPORT_SYMBOL vmlinux 0x74aea966 devfreq_recommended_opp +EXPORT_SYMBOL vmlinux 0x74b0927e jbd2_journal_get_create_access +EXPORT_SYMBOL vmlinux 0x74c134b9 __sw_hweight32 +EXPORT_SYMBOL vmlinux 0x74c97bd8 shrink_dcache_parent +EXPORT_SYMBOL vmlinux 0x74cb9bbb cfb_imageblit +EXPORT_SYMBOL vmlinux 0x74d73f86 module_put +EXPORT_SYMBOL vmlinux 0x74e5ff1a udpv6_encap_enable +EXPORT_SYMBOL vmlinux 0x74f0c9f7 blk_mq_tag_busy_iter +EXPORT_SYMBOL vmlinux 0x750267ab of_translate_dma_address +EXPORT_SYMBOL vmlinux 0x7505bdef memchr_inv +EXPORT_SYMBOL vmlinux 0x7534440d km_state_notify +EXPORT_SYMBOL vmlinux 0x7538b132 agp_off +EXPORT_SYMBOL vmlinux 0x755b8a59 inet_shutdown +EXPORT_SYMBOL vmlinux 0x755bab1b remap_pfn_range +EXPORT_SYMBOL vmlinux 0x756dd160 start_thread +EXPORT_SYMBOL vmlinux 0x757daf84 serial8250_register_8250_port +EXPORT_SYMBOL vmlinux 0x757f088f cpm_muram_offset +EXPORT_SYMBOL vmlinux 0x7589af7a rc5t583_ext_power_req_config +EXPORT_SYMBOL vmlinux 0x7593d385 div64_s64 +EXPORT_SYMBOL vmlinux 0x75994700 add_wait_queue_exclusive +EXPORT_SYMBOL vmlinux 0x759aeac5 cdrom_mode_select +EXPORT_SYMBOL vmlinux 0x75a30ba4 __blk_run_queue +EXPORT_SYMBOL vmlinux 0x75a6f1fc blk_mq_free_tag_set +EXPORT_SYMBOL vmlinux 0x75bda77a seq_hlist_next +EXPORT_SYMBOL vmlinux 0x75bdea12 iommu_area_alloc +EXPORT_SYMBOL vmlinux 0x75cd8f5b mark_buffer_async_write +EXPORT_SYMBOL vmlinux 0x75fbe049 eth_header_cache +EXPORT_SYMBOL vmlinux 0x760a0f4f yield +EXPORT_SYMBOL vmlinux 0x762155cd uart_unregister_driver +EXPORT_SYMBOL vmlinux 0x762a53af fsnotify_destroy_mark +EXPORT_SYMBOL vmlinux 0x76383e88 kernel_sendpage +EXPORT_SYMBOL vmlinux 0x7647726c handle_sysrq +EXPORT_SYMBOL vmlinux 0x7649719d jbd2_journal_blocks_per_page +EXPORT_SYMBOL vmlinux 0x764bd77c request_resource +EXPORT_SYMBOL vmlinux 0x766fcb4e iov_iter_advance +EXPORT_SYMBOL vmlinux 0x769e06d7 smp_call_function_many +EXPORT_SYMBOL vmlinux 0x76a9300b jbd2_journal_check_used_features +EXPORT_SYMBOL vmlinux 0x76b0a6bb pci_bus_read_config_byte +EXPORT_SYMBOL vmlinux 0x76d3b6d1 install_exec_creds +EXPORT_SYMBOL vmlinux 0x76d3cd60 laptop_mode +EXPORT_SYMBOL vmlinux 0x76d451c4 add_taint +EXPORT_SYMBOL vmlinux 0x76d9bf11 crc32_be +EXPORT_SYMBOL vmlinux 0x76dacd39 ppp_output_wakeup +EXPORT_SYMBOL vmlinux 0x76dd08e2 param_get_byte +EXPORT_SYMBOL vmlinux 0x76e095df input_allocate_device +EXPORT_SYMBOL vmlinux 0x76f6c5ef kmalloc_order +EXPORT_SYMBOL vmlinux 0x76fc911e get_phy_device +EXPORT_SYMBOL vmlinux 0x771acf67 i2c_del_adapter +EXPORT_SYMBOL vmlinux 0x771cf835 dma_pool_alloc +EXPORT_SYMBOL vmlinux 0x772139c4 sg_miter_start +EXPORT_SYMBOL vmlinux 0x77257d6f pci_enable_device +EXPORT_SYMBOL vmlinux 0x772cd6e0 __blk_end_request +EXPORT_SYMBOL vmlinux 0x773a21d5 skb_copy_and_csum_datagram_msg +EXPORT_SYMBOL vmlinux 0x773bfacf netif_rx +EXPORT_SYMBOL vmlinux 0x779a18af kstrtoll +EXPORT_SYMBOL vmlinux 0x77a72dfd do_SAK +EXPORT_SYMBOL vmlinux 0x77bc13a0 strim +EXPORT_SYMBOL vmlinux 0x77c11849 block_truncate_page +EXPORT_SYMBOL vmlinux 0x77c6c7ce fd_install +EXPORT_SYMBOL vmlinux 0x77fda418 security_old_inode_init_security +EXPORT_SYMBOL vmlinux 0x780645ed unregister_netdev +EXPORT_SYMBOL vmlinux 0x782567ec memcg_kmem_enabled_key +EXPORT_SYMBOL vmlinux 0x783b3563 wake_up_atomic_t +EXPORT_SYMBOL vmlinux 0x783c515a fbcon_set_tileops +EXPORT_SYMBOL vmlinux 0x78441145 jbd2_journal_try_to_free_buffers +EXPORT_SYMBOL vmlinux 0x7852ed1c kmem_cache_create +EXPORT_SYMBOL vmlinux 0x785db203 phy_resume +EXPORT_SYMBOL vmlinux 0x786d82f8 blkdev_fsync +EXPORT_SYMBOL vmlinux 0x786feb10 file_remove_privs +EXPORT_SYMBOL vmlinux 0x7871c484 agp_generic_mask_memory +EXPORT_SYMBOL vmlinux 0x7880c781 dm_kcopyd_prepare_callback +EXPORT_SYMBOL vmlinux 0x789affb1 frontswap_tmem_exclusive_gets +EXPORT_SYMBOL vmlinux 0x78c27674 __kernel_write +EXPORT_SYMBOL vmlinux 0x78df6bd7 no_pci_devices +EXPORT_SYMBOL vmlinux 0x78f34194 tcf_exts_dump_stats +EXPORT_SYMBOL vmlinux 0x78f93220 pci_set_dma_seg_boundary +EXPORT_SYMBOL vmlinux 0x790e4676 dcb_ieee_getapp_mask +EXPORT_SYMBOL vmlinux 0x794ede34 crypto_sha512_update +EXPORT_SYMBOL vmlinux 0x796fc5ce scsi_get_sense_info_fld +EXPORT_SYMBOL vmlinux 0x79746565 freeze_super +EXPORT_SYMBOL vmlinux 0x79794fd7 read_cache_pages +EXPORT_SYMBOL vmlinux 0x799adbac agp_copy_info +EXPORT_SYMBOL vmlinux 0x79aa04a2 get_random_bytes +EXPORT_SYMBOL vmlinux 0x79b1cc46 cpufreq_get_policy +EXPORT_SYMBOL vmlinux 0x7a27c184 ewma_init +EXPORT_SYMBOL vmlinux 0x7a330799 of_mdio_find_bus +EXPORT_SYMBOL vmlinux 0x7a4497db kzfree +EXPORT_SYMBOL vmlinux 0x7a46ac54 netdev_bonding_info_change +EXPORT_SYMBOL vmlinux 0x7a4cbe55 phy_print_status +EXPORT_SYMBOL vmlinux 0x7a69c9b7 mmc_wait_for_app_cmd +EXPORT_SYMBOL vmlinux 0x7a925833 cpufreq_get_global_kobject +EXPORT_SYMBOL vmlinux 0x7a95e5ae do_settimeofday64 +EXPORT_SYMBOL vmlinux 0x7aa1756e kvfree +EXPORT_SYMBOL vmlinux 0x7ab2963c phy_ethtool_gset +EXPORT_SYMBOL vmlinux 0x7ab88a45 system_freezing_cnt +EXPORT_SYMBOL vmlinux 0x7abf264e jbd2_journal_ack_err +EXPORT_SYMBOL vmlinux 0x7acbc016 netdev_update_features +EXPORT_SYMBOL vmlinux 0x7ad050b9 qid_lt +EXPORT_SYMBOL vmlinux 0x7add44b5 posix_acl_valid +EXPORT_SYMBOL vmlinux 0x7aed9a41 swiotlb_dma_supported +EXPORT_SYMBOL vmlinux 0x7af0fafb __tcf_em_tree_match +EXPORT_SYMBOL vmlinux 0x7afa89fc vsnprintf +EXPORT_SYMBOL vmlinux 0x7afea6e6 input_flush_device +EXPORT_SYMBOL vmlinux 0x7b0648b6 scsi_report_opcode +EXPORT_SYMBOL vmlinux 0x7b1ade38 lz4_decompress +EXPORT_SYMBOL vmlinux 0x7b1dcb62 __xfrm_route_forward +EXPORT_SYMBOL vmlinux 0x7b283ce3 prandom_bytes_state +EXPORT_SYMBOL vmlinux 0x7b3a939c register_console +EXPORT_SYMBOL vmlinux 0x7b3eb72f copy_from_iter_nocache +EXPORT_SYMBOL vmlinux 0x7b5c8440 vm_munmap +EXPORT_SYMBOL vmlinux 0x7b671b33 ip_mc_check_igmp +EXPORT_SYMBOL vmlinux 0x7b77fb52 xfrm_state_alloc +EXPORT_SYMBOL vmlinux 0x7b7c06ab pci_bus_size_bridges +EXPORT_SYMBOL vmlinux 0x7b86ff2e param_set_ushort +EXPORT_SYMBOL vmlinux 0x7bb58263 mipi_dsi_dcs_set_pixel_format +EXPORT_SYMBOL vmlinux 0x7bc76422 blk_rq_unmap_user +EXPORT_SYMBOL vmlinux 0x7bc98f8c genphy_read_status +EXPORT_SYMBOL vmlinux 0x7be4827c pci_dram_offset +EXPORT_SYMBOL vmlinux 0x7bf497de PDE_DATA +EXPORT_SYMBOL vmlinux 0x7bf9273e get_cached_acl_rcu +EXPORT_SYMBOL vmlinux 0x7bfab38b netlink_rcv_skb +EXPORT_SYMBOL vmlinux 0x7bfcbcd2 input_mt_get_slot_by_key +EXPORT_SYMBOL vmlinux 0x7c003aef _raw_read_lock_irq +EXPORT_SYMBOL vmlinux 0x7c018475 mmc_align_data_size +EXPORT_SYMBOL vmlinux 0x7c1372e8 panic +EXPORT_SYMBOL vmlinux 0x7c173634 __bitmap_complement +EXPORT_SYMBOL vmlinux 0x7c46233a cpufreq_quick_get +EXPORT_SYMBOL vmlinux 0x7c4f1bcf ipv6_setsockopt +EXPORT_SYMBOL vmlinux 0x7c55c5fc mmc_can_erase +EXPORT_SYMBOL vmlinux 0x7c61340c __release_region +EXPORT_SYMBOL vmlinux 0x7c772351 locks_remove_posix +EXPORT_SYMBOL vmlinux 0x7c9291d1 csum_partial_copy_generic +EXPORT_SYMBOL vmlinux 0x7c98845d twl_i2c_read +EXPORT_SYMBOL vmlinux 0x7cb1ae69 cpu_down +EXPORT_SYMBOL vmlinux 0x7cb80e1d unlock_new_inode +EXPORT_SYMBOL vmlinux 0x7cce4d5f pci_disable_link_state +EXPORT_SYMBOL vmlinux 0x7cce6606 __tcf_hash_release +EXPORT_SYMBOL vmlinux 0x7ce18c9f from_kqid +EXPORT_SYMBOL vmlinux 0x7ce84d97 dev_uc_sync +EXPORT_SYMBOL vmlinux 0x7cf35220 vme_master_free +EXPORT_SYMBOL vmlinux 0x7cf86c4c nla_reserve_nohdr +EXPORT_SYMBOL vmlinux 0x7d0db45c jiffies_to_clock_t +EXPORT_SYMBOL vmlinux 0x7d11c268 jiffies +EXPORT_SYMBOL vmlinux 0x7d2df81b neigh_lookup_nodev +EXPORT_SYMBOL vmlinux 0x7d49bb76 tcp_v4_send_check +EXPORT_SYMBOL vmlinux 0x7d4a74e4 dquot_set_dqinfo +EXPORT_SYMBOL vmlinux 0x7d705738 blk_start_plug +EXPORT_SYMBOL vmlinux 0x7d7e85ed mach_ppa8548 +EXPORT_SYMBOL vmlinux 0x7d920b12 blk_mq_requeue_request +EXPORT_SYMBOL vmlinux 0x7da6b209 bio_integrity_enabled +EXPORT_SYMBOL vmlinux 0x7dc2635c mmc_hw_reset +EXPORT_SYMBOL vmlinux 0x7dc87a29 bdgrab +EXPORT_SYMBOL vmlinux 0x7dea368f generic_setlease +EXPORT_SYMBOL vmlinux 0x7deff673 dm_consume_args +EXPORT_SYMBOL vmlinux 0x7e11e51e inet6_protos +EXPORT_SYMBOL vmlinux 0x7e2158a9 pci_scan_bridge +EXPORT_SYMBOL vmlinux 0x7e226ff5 sock_alloc_send_pskb +EXPORT_SYMBOL vmlinux 0x7e49d6a1 jbd2_journal_get_undo_access +EXPORT_SYMBOL vmlinux 0x7e53fa7b netdev_crit +EXPORT_SYMBOL vmlinux 0x7e66be3b dst_destroy +EXPORT_SYMBOL vmlinux 0x7e697edf follow_pfn +EXPORT_SYMBOL vmlinux 0x7e87227e slhc_compress +EXPORT_SYMBOL vmlinux 0x7e96230f xfrm6_input_addr +EXPORT_SYMBOL vmlinux 0x7eb0210b mount_nodev +EXPORT_SYMBOL vmlinux 0x7ebb1e1a devm_free_irq +EXPORT_SYMBOL vmlinux 0x7ebf71a6 from_kgid_munged +EXPORT_SYMBOL vmlinux 0x7ecb001b __per_cpu_offset +EXPORT_SYMBOL vmlinux 0x7ecc2ab3 register_netdev +EXPORT_SYMBOL vmlinux 0x7ee68b81 pci_enable_device_mem +EXPORT_SYMBOL vmlinux 0x7ee6d93a nsecs_to_jiffies64 +EXPORT_SYMBOL vmlinux 0x7ee73c0c memcg_socket_limit_enabled +EXPORT_SYMBOL vmlinux 0x7efbc08c add_disk +EXPORT_SYMBOL vmlinux 0x7f02188f __msecs_to_jiffies +EXPORT_SYMBOL vmlinux 0x7f102a65 vfs_path_lookup +EXPORT_SYMBOL vmlinux 0x7f117cd9 bio_integrity_alloc +EXPORT_SYMBOL vmlinux 0x7f246ac0 sock_setsockopt +EXPORT_SYMBOL vmlinux 0x7f24de73 jiffies_to_usecs +EXPORT_SYMBOL vmlinux 0x7f38e22a napi_disable +EXPORT_SYMBOL vmlinux 0x7f50f820 dquot_initialize +EXPORT_SYMBOL vmlinux 0x7f62a045 cpu_maps_update_done +EXPORT_SYMBOL vmlinux 0x7f80f740 skb_free_datagram_locked +EXPORT_SYMBOL vmlinux 0x7f8c19e9 dev_set_mac_address +EXPORT_SYMBOL vmlinux 0x7fa96a5b __neigh_event_send +EXPORT_SYMBOL vmlinux 0x7fc48b30 cdrom_media_changed +EXPORT_SYMBOL vmlinux 0x7fde2edb vme_master_read +EXPORT_SYMBOL vmlinux 0x7fe32873 rb_replace_node +EXPORT_SYMBOL vmlinux 0x7fe3ae71 of_dev_put +EXPORT_SYMBOL vmlinux 0x7fea1183 dev_set_promiscuity +EXPORT_SYMBOL vmlinux 0x7ff70963 devm_gpiod_put +EXPORT_SYMBOL vmlinux 0x7ff72a94 invalidate_partition +EXPORT_SYMBOL vmlinux 0x800460b4 mmc_set_blockcount +EXPORT_SYMBOL vmlinux 0x800ae940 scsi_cmd_ioctl +EXPORT_SYMBOL vmlinux 0x805586b7 vme_dma_list_free +EXPORT_SYMBOL vmlinux 0x805c9ae1 pci_scan_root_bus +EXPORT_SYMBOL vmlinux 0x80710f19 blk_post_runtime_resume +EXPORT_SYMBOL vmlinux 0x808d0a2c peernet2id_alloc +EXPORT_SYMBOL vmlinux 0x80ae8dcb gnet_stats_finish_copy +EXPORT_SYMBOL vmlinux 0x80c1c8f4 of_get_pci_address +EXPORT_SYMBOL vmlinux 0x80ca5026 _bin2bcd +EXPORT_SYMBOL vmlinux 0x80d68d3e fb_register_client +EXPORT_SYMBOL vmlinux 0x81132f9c jbd2_journal_force_commit +EXPORT_SYMBOL vmlinux 0x811cd551 security_dentry_init_security +EXPORT_SYMBOL vmlinux 0x8121ee0e brioctl_set +EXPORT_SYMBOL vmlinux 0x81232b71 skb_queue_tail +EXPORT_SYMBOL vmlinux 0x812c0b50 of_parse_phandle_with_args +EXPORT_SYMBOL vmlinux 0x81488bc2 xfrm_input_register_afinfo +EXPORT_SYMBOL vmlinux 0x814e7730 nf_ct_destroy +EXPORT_SYMBOL vmlinux 0x815b5465 ipv6_sock_mc_join +EXPORT_SYMBOL vmlinux 0x815b5dd4 match_octal +EXPORT_SYMBOL vmlinux 0x815c56d0 cpu_present_mask +EXPORT_SYMBOL vmlinux 0x8178a412 sk_dst_check +EXPORT_SYMBOL vmlinux 0x81a07f4e _atomic_dec_and_lock +EXPORT_SYMBOL vmlinux 0x81b73d6d blk_queue_dma_alignment +EXPORT_SYMBOL vmlinux 0x81bb9b6a mnt_set_expiry +EXPORT_SYMBOL vmlinux 0x81db6ebb xz_dec_reset +EXPORT_SYMBOL vmlinux 0x81e6cd9a pci_select_bars +EXPORT_SYMBOL vmlinux 0x81ff5c5e icmp_send +EXPORT_SYMBOL vmlinux 0x82059d94 blk_sync_queue +EXPORT_SYMBOL vmlinux 0x82072614 tasklet_kill +EXPORT_SYMBOL vmlinux 0x8228742f inode_set_flags +EXPORT_SYMBOL vmlinux 0x822c5a8c fence_add_callback +EXPORT_SYMBOL vmlinux 0x823f1e6f dev_mc_add_global +EXPORT_SYMBOL vmlinux 0x82701365 int_to_scsilun +EXPORT_SYMBOL vmlinux 0x827cceac blk_put_request +EXPORT_SYMBOL vmlinux 0x828062b1 __frontswap_init +EXPORT_SYMBOL vmlinux 0x82847ca4 textsearch_register +EXPORT_SYMBOL vmlinux 0x82871b60 dmt_modes +EXPORT_SYMBOL vmlinux 0x82ab5415 dev_get_by_index_rcu +EXPORT_SYMBOL vmlinux 0x82acfb70 blk_iopoll_sched +EXPORT_SYMBOL vmlinux 0x82b00b35 tcp_syn_ack_timeout +EXPORT_SYMBOL vmlinux 0x82e5a238 vm_get_page_prot +EXPORT_SYMBOL vmlinux 0x82fb71b8 mmc_of_parse_voltage +EXPORT_SYMBOL vmlinux 0x82ff275c sock_common_setsockopt +EXPORT_SYMBOL vmlinux 0x8304733a blk_set_stacking_limits +EXPORT_SYMBOL vmlinux 0x83054896 fbcon_rotate_cw +EXPORT_SYMBOL vmlinux 0x83256b19 jbd2_journal_errno +EXPORT_SYMBOL vmlinux 0x832c0cfc unload_nls +EXPORT_SYMBOL vmlinux 0x834f0da6 mb_cache_shrink +EXPORT_SYMBOL vmlinux 0x83695fd7 pci_get_slot +EXPORT_SYMBOL vmlinux 0x8372cd2f __gnet_stats_copy_basic +EXPORT_SYMBOL vmlinux 0x839430b2 __register_cpu_notifier +EXPORT_SYMBOL vmlinux 0x83a9107b __frontswap_store +EXPORT_SYMBOL vmlinux 0x83b009ea xfrm_state_walk_init +EXPORT_SYMBOL vmlinux 0x83c33306 pci_iounmap +EXPORT_SYMBOL vmlinux 0x83c49028 dst_cow_metrics_generic +EXPORT_SYMBOL vmlinux 0x83c52fba xfrm4_protocol_init +EXPORT_SYMBOL vmlinux 0x83df055e gro_find_complete_by_type +EXPORT_SYMBOL vmlinux 0x83eac551 of_parse_phandle_with_fixed_args +EXPORT_SYMBOL vmlinux 0x841f7f46 sock_rfree +EXPORT_SYMBOL vmlinux 0x84293f57 phy_attach_direct +EXPORT_SYMBOL vmlinux 0x8437fb27 udp_seq_open +EXPORT_SYMBOL vmlinux 0x844404cf ISA_DMA_THRESHOLD +EXPORT_SYMBOL vmlinux 0x84449585 netpoll_send_udp +EXPORT_SYMBOL vmlinux 0x845e3424 dentry_unhash +EXPORT_SYMBOL vmlinux 0x846c6c86 pci_fixup_cardbus +EXPORT_SYMBOL vmlinux 0x846dee99 xfrm_state_check_expire +EXPORT_SYMBOL vmlinux 0x84a20bbd twl6040_set_bits +EXPORT_SYMBOL vmlinux 0x84a95755 cdrom_get_media_event +EXPORT_SYMBOL vmlinux 0x84b183ae strncmp +EXPORT_SYMBOL vmlinux 0x84bd69bf dq_data_lock +EXPORT_SYMBOL vmlinux 0x84c88e18 input_inject_event +EXPORT_SYMBOL vmlinux 0x84e2fe7a blk_queue_max_segments +EXPORT_SYMBOL vmlinux 0x84f88c77 pci_bus_add_devices +EXPORT_SYMBOL vmlinux 0x84ffea8b idr_preload +EXPORT_SYMBOL vmlinux 0x850ae7d3 blk_peek_request +EXPORT_SYMBOL vmlinux 0x85454ba2 sock_kfree_s +EXPORT_SYMBOL vmlinux 0x85537c6f generic_shutdown_super +EXPORT_SYMBOL vmlinux 0x85670f1d rtnl_is_locked +EXPORT_SYMBOL vmlinux 0x85aa20b2 blk_mq_start_hw_queues +EXPORT_SYMBOL vmlinux 0x85b10635 blk_queue_update_dma_pad +EXPORT_SYMBOL vmlinux 0x85b5e625 rfkill_set_states +EXPORT_SYMBOL vmlinux 0x85b9c613 max8998_bulk_write +EXPORT_SYMBOL vmlinux 0x85d1a98d inet_frags_fini +EXPORT_SYMBOL vmlinux 0x85dab5d3 add_random_ready_callback +EXPORT_SYMBOL vmlinux 0x85df9b6c strsep +EXPORT_SYMBOL vmlinux 0x85ec939f devm_input_allocate_device +EXPORT_SYMBOL vmlinux 0x85ed7eea iget5_locked +EXPORT_SYMBOL vmlinux 0x85efc7e0 zero_pfn +EXPORT_SYMBOL vmlinux 0x8610e43c vfs_rmdir +EXPORT_SYMBOL vmlinux 0x86360003 scsi_is_host_device +EXPORT_SYMBOL vmlinux 0x863f13ec security_inode_notifysecctx +EXPORT_SYMBOL vmlinux 0x864b7733 reservation_object_add_excl_fence +EXPORT_SYMBOL vmlinux 0x865029ac __hw_addr_sync +EXPORT_SYMBOL vmlinux 0x8656f9d6 sk_stream_wait_close +EXPORT_SYMBOL vmlinux 0x8664f62e cpufreq_update_policy +EXPORT_SYMBOL vmlinux 0x868acba5 get_options +EXPORT_SYMBOL vmlinux 0x8692c872 scsi_scan_host +EXPORT_SYMBOL vmlinux 0x869d9ddb devm_gpiod_get_array +EXPORT_SYMBOL vmlinux 0x86a4889a kmalloc_order_trace +EXPORT_SYMBOL vmlinux 0x86aae60a inet_csk_destroy_sock +EXPORT_SYMBOL vmlinux 0x86ae5533 dev_mc_del_global +EXPORT_SYMBOL vmlinux 0x86e0fc36 scsi_device_put +EXPORT_SYMBOL vmlinux 0x86fb9b05 bitmap_parse_user +EXPORT_SYMBOL vmlinux 0x870478ad __brelse +EXPORT_SYMBOL vmlinux 0x871c0a7e fiemap_check_flags +EXPORT_SYMBOL vmlinux 0x873df247 uart_add_one_port +EXPORT_SYMBOL vmlinux 0x8758fe2b netlink_set_err +EXPORT_SYMBOL vmlinux 0x87613374 tcp_poll +EXPORT_SYMBOL vmlinux 0x87692113 inode_sub_rsv_space +EXPORT_SYMBOL vmlinux 0x87842a81 netdev_boot_setup_check +EXPORT_SYMBOL vmlinux 0x878ab3ce sysctl_tcp_adv_win_scale +EXPORT_SYMBOL vmlinux 0x8798e453 __tracepoint_kfree +EXPORT_SYMBOL vmlinux 0x87caf649 of_dev_get +EXPORT_SYMBOL vmlinux 0x87d30815 mmc_alloc_host +EXPORT_SYMBOL vmlinux 0x87e4a48d ps2_handle_response +EXPORT_SYMBOL vmlinux 0x87ec3b76 blk_mq_all_tag_busy_iter +EXPORT_SYMBOL vmlinux 0x88058b36 seq_put_decimal_ull +EXPORT_SYMBOL vmlinux 0x8811090d of_count_phandle_with_args +EXPORT_SYMBOL vmlinux 0x88279f25 cpm_muram_alloc +EXPORT_SYMBOL vmlinux 0x8827aa2a devm_gen_pool_create +EXPORT_SYMBOL vmlinux 0x8851d024 netpoll_print_options +EXPORT_SYMBOL vmlinux 0x88682fe7 jbd2_journal_load +EXPORT_SYMBOL vmlinux 0x8895aca0 bio_put +EXPORT_SYMBOL vmlinux 0x88a7b8e8 neigh_proc_dointvec_jiffies +EXPORT_SYMBOL vmlinux 0x88af7f95 xfrm_init_state +EXPORT_SYMBOL vmlinux 0x88ba8be9 trace_raw_output_prep +EXPORT_SYMBOL vmlinux 0x88bbabac xfrm4_prepare_output +EXPORT_SYMBOL vmlinux 0x88c8b2e0 tcp_close +EXPORT_SYMBOL vmlinux 0x88db652f may_umount +EXPORT_SYMBOL vmlinux 0x88e64893 __xfrm_init_state +EXPORT_SYMBOL vmlinux 0x88eb83e0 xfrm6_rcv +EXPORT_SYMBOL vmlinux 0x88fa4a6d alloc_skb_with_frags +EXPORT_SYMBOL vmlinux 0x88feb873 get_super +EXPORT_SYMBOL vmlinux 0x890f7af3 set_create_files_as +EXPORT_SYMBOL vmlinux 0x89104eb7 inet6_getname +EXPORT_SYMBOL vmlinux 0x891d5ca4 pci_disable_device +EXPORT_SYMBOL vmlinux 0x891fbb10 mempool_destroy +EXPORT_SYMBOL vmlinux 0x892c1289 iov_iter_single_seg_count +EXPORT_SYMBOL vmlinux 0x893fecff i2c_smbus_write_byte_data +EXPORT_SYMBOL vmlinux 0x89402a7d d_find_alias +EXPORT_SYMBOL vmlinux 0x894ba72a release_pages +EXPORT_SYMBOL vmlinux 0x89534245 iunique +EXPORT_SYMBOL vmlinux 0x8953f8ff __tracepoint_kmem_cache_alloc +EXPORT_SYMBOL vmlinux 0x89618ad8 input_event +EXPORT_SYMBOL vmlinux 0x8972d596 key_invalidate +EXPORT_SYMBOL vmlinux 0x897472d8 pci_fixup_device +EXPORT_SYMBOL vmlinux 0x89797060 _raw_read_lock +EXPORT_SYMBOL vmlinux 0x89a12834 iw_handler_get_spy +EXPORT_SYMBOL vmlinux 0x89a6ded8 xfrm_input_resume +EXPORT_SYMBOL vmlinux 0x89aae881 agp_create_memory +EXPORT_SYMBOL vmlinux 0x89afe34e __kfifo_dma_in_prepare +EXPORT_SYMBOL vmlinux 0x89b4d330 dev_uc_flush +EXPORT_SYMBOL vmlinux 0x89d5538d fb_pad_aligned_buffer +EXPORT_SYMBOL vmlinux 0x89d56970 keyring_search +EXPORT_SYMBOL vmlinux 0x89fe41bb clk_get +EXPORT_SYMBOL vmlinux 0x8a062bdd scsi_register_interface +EXPORT_SYMBOL vmlinux 0x8a0f3737 phy_start_aneg +EXPORT_SYMBOL vmlinux 0x8a105e0c vme_slot_num +EXPORT_SYMBOL vmlinux 0x8a1ab4ee timeval_to_jiffies +EXPORT_SYMBOL vmlinux 0x8a1c5455 blk_stack_limits +EXPORT_SYMBOL vmlinux 0x8a2b1d7c generic_file_write_iter +EXPORT_SYMBOL vmlinux 0x8a2b3db2 i2c_smbus_write_byte +EXPORT_SYMBOL vmlinux 0x8a305617 param_get_int +EXPORT_SYMBOL vmlinux 0x8a48bc91 mutex_lock +EXPORT_SYMBOL vmlinux 0x8a490c90 rfkill_set_sw_state +EXPORT_SYMBOL vmlinux 0x8a51d565 quota_send_warning +EXPORT_SYMBOL vmlinux 0x8a7d1c31 high_memory +EXPORT_SYMBOL vmlinux 0x8a8d8591 of_node_put +EXPORT_SYMBOL vmlinux 0x8a99a016 mempool_free_slab +EXPORT_SYMBOL vmlinux 0x8ab4079e atomic64_add +EXPORT_SYMBOL vmlinux 0x8ad742f3 pci_dev_put +EXPORT_SYMBOL vmlinux 0x8af7e06c __inode_sub_bytes +EXPORT_SYMBOL vmlinux 0x8af80363 qdisc_watchdog_init +EXPORT_SYMBOL vmlinux 0x8b271471 remove_proc_subtree +EXPORT_SYMBOL vmlinux 0x8b2b53e5 of_graph_get_remote_port_parent +EXPORT_SYMBOL vmlinux 0x8b2d8e8a skb_copy_and_csum_bits +EXPORT_SYMBOL vmlinux 0x8b35e873 sg_last +EXPORT_SYMBOL vmlinux 0x8b43159b register_cpu_notifier +EXPORT_SYMBOL vmlinux 0x8b52a89e mem_cgroup_begin_page_stat +EXPORT_SYMBOL vmlinux 0x8b5a2c49 nf_ct_attach +EXPORT_SYMBOL vmlinux 0x8b618d08 overflowuid +EXPORT_SYMBOL vmlinux 0x8b622422 netdev_upper_dev_link +EXPORT_SYMBOL vmlinux 0x8b8059bd in_group_p +EXPORT_SYMBOL vmlinux 0x8b83cbba kernel_sendmsg +EXPORT_SYMBOL vmlinux 0x8bb96f60 xfrm_garbage_collect +EXPORT_SYMBOL vmlinux 0x8bbbd3a0 pm_vt_switch_required +EXPORT_SYMBOL vmlinux 0x8bc3b979 dev_uc_add +EXPORT_SYMBOL vmlinux 0x8be40928 backlight_device_register +EXPORT_SYMBOL vmlinux 0x8bf2ae1f fsl_lbc_addr +EXPORT_SYMBOL vmlinux 0x8c183cbe iowrite16 +EXPORT_SYMBOL vmlinux 0x8c321899 from_kgid +EXPORT_SYMBOL vmlinux 0x8c3258e0 qdisc_class_hash_grow +EXPORT_SYMBOL vmlinux 0x8c519305 tty_lock +EXPORT_SYMBOL vmlinux 0x8c5b0a08 register_cdrom +EXPORT_SYMBOL vmlinux 0x8c637d43 irq_cpu_rmap_add +EXPORT_SYMBOL vmlinux 0x8c9be803 release_sock +EXPORT_SYMBOL vmlinux 0x8ca4594d sdev_prefix_printk +EXPORT_SYMBOL vmlinux 0x8cb8ab68 inet_csk_reqsk_queue_drop +EXPORT_SYMBOL vmlinux 0x8cc5d462 ipv4_specific +EXPORT_SYMBOL vmlinux 0x8cc79cab iowrite16_rep +EXPORT_SYMBOL vmlinux 0x8cd22af6 bio_integrity_advance +EXPORT_SYMBOL vmlinux 0x8cdb919a netif_napi_add +EXPORT_SYMBOL vmlinux 0x8cf22fd6 touchscreen_parse_of_params +EXPORT_SYMBOL vmlinux 0x8cfefd28 flush_old_exec +EXPORT_SYMBOL vmlinux 0x8d015dd4 __bswapdi2 +EXPORT_SYMBOL vmlinux 0x8d551bef sysctl_tcp_rmem +EXPORT_SYMBOL vmlinux 0x8d55bb8a qid_eq +EXPORT_SYMBOL vmlinux 0x8d6b2ce1 radix_tree_delete_item +EXPORT_SYMBOL vmlinux 0x8d72495b __getnstimeofday64 +EXPORT_SYMBOL vmlinux 0x8d73278e hex_asc_upper +EXPORT_SYMBOL vmlinux 0x8d75cfbb qdisc_list_del +EXPORT_SYMBOL vmlinux 0x8d97ff50 qdisc_destroy +EXPORT_SYMBOL vmlinux 0x8d9858ee kobject_set_name +EXPORT_SYMBOL vmlinux 0x8dd83e51 make_kuid +EXPORT_SYMBOL vmlinux 0x8de0b5ac mempool_create +EXPORT_SYMBOL vmlinux 0x8deb1885 of_graph_get_port_by_id +EXPORT_SYMBOL vmlinux 0x8dfbfa41 seq_file_path +EXPORT_SYMBOL vmlinux 0x8dfe39a2 framebuffer_release +EXPORT_SYMBOL vmlinux 0x8e036365 iov_iter_npages +EXPORT_SYMBOL vmlinux 0x8e08be76 keyring_alloc +EXPORT_SYMBOL vmlinux 0x8e0d66f4 __tracepoint_kmalloc +EXPORT_SYMBOL vmlinux 0x8e18eacc pneigh_lookup +EXPORT_SYMBOL vmlinux 0x8e2b24f9 of_device_is_compatible +EXPORT_SYMBOL vmlinux 0x8e3c45f3 tcp_v4_syn_recv_sock +EXPORT_SYMBOL vmlinux 0x8e83bae5 get_disk +EXPORT_SYMBOL vmlinux 0x8e888ec3 cpumask_next_and +EXPORT_SYMBOL vmlinux 0x8e899d85 dev_addr_add +EXPORT_SYMBOL vmlinux 0x8e8d58da diu_ops +EXPORT_SYMBOL vmlinux 0x8ec04552 _raw_spin_trylock_bh +EXPORT_SYMBOL vmlinux 0x8ed64c27 pci_match_id +EXPORT_SYMBOL vmlinux 0x8ee502fc swiotlb_dma_mapping_error +EXPORT_SYMBOL vmlinux 0x8eed6f9c mnt_drop_write_file +EXPORT_SYMBOL vmlinux 0x8f38b6a5 pci_back_from_sleep +EXPORT_SYMBOL vmlinux 0x8f5965e7 d_rehash +EXPORT_SYMBOL vmlinux 0x8f76772d inet_csk_reset_keepalive_timer +EXPORT_SYMBOL vmlinux 0x8f76b889 xfrm_policy_walk_done +EXPORT_SYMBOL vmlinux 0x8f771c8c dm_put_table_device +EXPORT_SYMBOL vmlinux 0x8f794b73 udp_add_offload +EXPORT_SYMBOL vmlinux 0x8f85f835 prepare_to_wait_exclusive +EXPORT_SYMBOL vmlinux 0x8fbf37e0 profile_pc +EXPORT_SYMBOL vmlinux 0x8fc15bf6 iommu_tbl_range_free +EXPORT_SYMBOL vmlinux 0x8fd473c6 swiotlb_map_sg_attrs +EXPORT_SYMBOL vmlinux 0x8fe560d4 tcp_md5_hash_skb_data +EXPORT_SYMBOL vmlinux 0x8fe77067 dcache_dir_close +EXPORT_SYMBOL vmlinux 0x8ffdb3b8 crc16 +EXPORT_SYMBOL vmlinux 0x9001ebfa agp_generic_destroy_pages +EXPORT_SYMBOL vmlinux 0x90170370 __sb_end_write +EXPORT_SYMBOL vmlinux 0x902cf34d elevator_init +EXPORT_SYMBOL vmlinux 0x90695906 vme_free_consistent +EXPORT_SYMBOL vmlinux 0x906e0021 xfrm_policy_delete +EXPORT_SYMBOL vmlinux 0x90859199 i2c_smbus_write_block_data +EXPORT_SYMBOL vmlinux 0x90894b3c phy_read_mmd_indirect +EXPORT_SYMBOL vmlinux 0x90b6034f dev_mc_add_excl +EXPORT_SYMBOL vmlinux 0x90b75e95 jbd2_log_wait_commit +EXPORT_SYMBOL vmlinux 0x90c5e819 kstrtoll_from_user +EXPORT_SYMBOL vmlinux 0x90cfca5a rps_may_expire_flow +EXPORT_SYMBOL vmlinux 0x90d17256 pipe_lock +EXPORT_SYMBOL vmlinux 0x90d30684 inet_sk_rebuild_header +EXPORT_SYMBOL vmlinux 0x90f63c8d cdev_alloc +EXPORT_SYMBOL vmlinux 0x9102a8a2 netdev_notify_peers +EXPORT_SYMBOL vmlinux 0x9126f0c2 I_BDEV +EXPORT_SYMBOL vmlinux 0x912d9ccd file_path +EXPORT_SYMBOL vmlinux 0x91463b1d kstrtos16 +EXPORT_SYMBOL vmlinux 0x9159d524 security_path_rmdir +EXPORT_SYMBOL vmlinux 0x915e1208 tb_ticks_per_usec +EXPORT_SYMBOL vmlinux 0x91715312 sprintf +EXPORT_SYMBOL vmlinux 0x917c5137 qdisc_create_dflt +EXPORT_SYMBOL vmlinux 0x918a1675 nf_log_register +EXPORT_SYMBOL vmlinux 0x919d1163 tty_termios_baud_rate +EXPORT_SYMBOL vmlinux 0x91ccb569 devm_devfreq_unregister_opp_notifier +EXPORT_SYMBOL vmlinux 0x91e4fad7 n_tty_ioctl_helper +EXPORT_SYMBOL vmlinux 0x91f94689 blk_queue_max_write_same_sectors +EXPORT_SYMBOL vmlinux 0x9205f34b pci_map_rom +EXPORT_SYMBOL vmlinux 0x921462e1 agp_generic_alloc_pages +EXPORT_SYMBOL vmlinux 0x922eb6d5 zpool_unregister_driver +EXPORT_SYMBOL vmlinux 0x923b1276 dmaengine_get +EXPORT_SYMBOL vmlinux 0x9247e0c5 lock_rename +EXPORT_SYMBOL vmlinux 0x925ebc7a i2c_release_client +EXPORT_SYMBOL vmlinux 0x92a4531f pci_disable_msi +EXPORT_SYMBOL vmlinux 0x92a9c60c time_to_tm +EXPORT_SYMBOL vmlinux 0x92b5fb43 mmc_fixup_device +EXPORT_SYMBOL vmlinux 0x92ca14d9 serio_interrupt +EXPORT_SYMBOL vmlinux 0x92e4d2fe flow_hash_from_keys +EXPORT_SYMBOL vmlinux 0x92fa5abb vme_lm_detach +EXPORT_SYMBOL vmlinux 0x9305f8e6 cpufreq_get +EXPORT_SYMBOL vmlinux 0x9310a509 __register_nls +EXPORT_SYMBOL vmlinux 0x93212da5 __dev_remove_pack +EXPORT_SYMBOL vmlinux 0x93215e1d __kfifo_skip_r +EXPORT_SYMBOL vmlinux 0x932d98c1 cpm_muram_dma +EXPORT_SYMBOL vmlinux 0x93360b16 agp_backend_release +EXPORT_SYMBOL vmlinux 0x9342dd37 d_alloc +EXPORT_SYMBOL vmlinux 0x93448c57 screen_info +EXPORT_SYMBOL vmlinux 0x936a10da unregister_key_type +EXPORT_SYMBOL vmlinux 0x936d3e02 netdev_alert +EXPORT_SYMBOL vmlinux 0x936d9407 xfrm_policy_byid +EXPORT_SYMBOL vmlinux 0x937733e3 qid_valid +EXPORT_SYMBOL vmlinux 0x93b3fc74 register_dcbevent_notifier +EXPORT_SYMBOL vmlinux 0x93c9ca51 datagram_poll +EXPORT_SYMBOL vmlinux 0x93cee197 ata_link_printk +EXPORT_SYMBOL vmlinux 0x93d91ef0 simple_pin_fs +EXPORT_SYMBOL vmlinux 0x93f5acd0 vc_resize +EXPORT_SYMBOL vmlinux 0x93fca811 __get_free_pages +EXPORT_SYMBOL vmlinux 0x9402a6a5 scsilun_to_int +EXPORT_SYMBOL vmlinux 0x9406794f blkdev_get_by_dev +EXPORT_SYMBOL vmlinux 0x940a1998 msi_bitmap_alloc_hwirqs +EXPORT_SYMBOL vmlinux 0x940f9cf6 kblockd_schedule_delayed_work +EXPORT_SYMBOL vmlinux 0x94137ae2 dquot_scan_active +EXPORT_SYMBOL vmlinux 0x9427830c ip6_frag_match +EXPORT_SYMBOL vmlinux 0x9443be1c udp_set_csum +EXPORT_SYMBOL vmlinux 0x9449cbe1 single_release +EXPORT_SYMBOL vmlinux 0x945a203d pci_bus_read_config_dword +EXPORT_SYMBOL vmlinux 0x94601d2b param_get_ushort +EXPORT_SYMBOL vmlinux 0x9465633b agp_bridge +EXPORT_SYMBOL vmlinux 0x9466c166 __mod_zone_page_state +EXPORT_SYMBOL vmlinux 0x9469cacb neigh_update +EXPORT_SYMBOL vmlinux 0x948b9633 vme_irq_generate +EXPORT_SYMBOL vmlinux 0x948bec6f udp_poll +EXPORT_SYMBOL vmlinux 0x948f7405 dump_emit +EXPORT_SYMBOL vmlinux 0x94917a75 __pagevec_release +EXPORT_SYMBOL vmlinux 0x94961283 vunmap +EXPORT_SYMBOL vmlinux 0x94a553ec inet_sk_rx_dst_set +EXPORT_SYMBOL vmlinux 0x94b541b5 cpu_active_mask +EXPORT_SYMBOL vmlinux 0x94e047b1 send_sig +EXPORT_SYMBOL vmlinux 0x94eea794 getnstimeofday64 +EXPORT_SYMBOL vmlinux 0x94ef469f sock_efree +EXPORT_SYMBOL vmlinux 0x95042d11 abx500_get_register_page_interruptible +EXPORT_SYMBOL vmlinux 0x9514151a _mcount +EXPORT_SYMBOL vmlinux 0x951bad52 tcf_em_tree_dump +EXPORT_SYMBOL vmlinux 0x9524b0ae _outsb +EXPORT_SYMBOL vmlinux 0x952a9af2 gnet_stats_copy_app +EXPORT_SYMBOL vmlinux 0x9545af6d tasklet_init +EXPORT_SYMBOL vmlinux 0x9550b041 bdi_register_dev +EXPORT_SYMBOL vmlinux 0x9550c991 blk_mq_tag_to_rq +EXPORT_SYMBOL vmlinux 0x9567999c vme_master_request +EXPORT_SYMBOL vmlinux 0x95980dc5 jbd2_journal_release_jbd_inode +EXPORT_SYMBOL vmlinux 0x95c2c6ff block_write_end +EXPORT_SYMBOL vmlinux 0x95c9ca0e param_ops_ulong +EXPORT_SYMBOL vmlinux 0x95d90bf6 md_update_sb +EXPORT_SYMBOL vmlinux 0x95e1a975 ihold +EXPORT_SYMBOL vmlinux 0x95e9ab44 dquot_alloc +EXPORT_SYMBOL vmlinux 0x95f5dc1c skb_copy_datagram_from_iter +EXPORT_SYMBOL vmlinux 0x960dfaf5 radix_tree_tag_get +EXPORT_SYMBOL vmlinux 0x96161d9f vfs_writef +EXPORT_SYMBOL vmlinux 0x962533a3 ndo_dflt_fdb_add +EXPORT_SYMBOL vmlinux 0x96271aff dev_getbyhwaddr_rcu +EXPORT_SYMBOL vmlinux 0x96333e2d skb_get_hash_perturb +EXPORT_SYMBOL vmlinux 0x96573b80 __kfifo_dma_in_finish_r +EXPORT_SYMBOL vmlinux 0x96583022 alloc_file +EXPORT_SYMBOL vmlinux 0x967223bc padata_alloc +EXPORT_SYMBOL vmlinux 0x96770e61 kset_register +EXPORT_SYMBOL vmlinux 0x96898769 sysfs_format_mac +EXPORT_SYMBOL vmlinux 0x9692bf14 set_security_override_from_ctx +EXPORT_SYMBOL vmlinux 0x9698ce42 remove_proc_entry +EXPORT_SYMBOL vmlinux 0x96cb9175 serio_unregister_child_port +EXPORT_SYMBOL vmlinux 0x96cd2b04 scsi_sense_key_string +EXPORT_SYMBOL vmlinux 0x96ce525e unregister_nls +EXPORT_SYMBOL vmlinux 0x96da9176 elevator_exit +EXPORT_SYMBOL vmlinux 0x970b7542 devfreq_monitor_resume +EXPORT_SYMBOL vmlinux 0x97222b05 serio_close +EXPORT_SYMBOL vmlinux 0x97255bdf strlen +EXPORT_SYMBOL vmlinux 0x9748927f _outsw_ns +EXPORT_SYMBOL vmlinux 0x97540a2b inetpeer_invalidate_tree +EXPORT_SYMBOL vmlinux 0x9754ec10 radix_tree_preload +EXPORT_SYMBOL vmlinux 0x9754f298 md_integrity_add_rdev +EXPORT_SYMBOL vmlinux 0x978e97d4 tcp_create_openreq_child +EXPORT_SYMBOL vmlinux 0x97999817 rfkill_set_hw_state +EXPORT_SYMBOL vmlinux 0x97b4500c __tracepoint_kmem_cache_free +EXPORT_SYMBOL vmlinux 0x97d229e7 tcf_em_register +EXPORT_SYMBOL vmlinux 0x97db06db __scm_destroy +EXPORT_SYMBOL vmlinux 0x97e4abc1 copy_page_to_iter +EXPORT_SYMBOL vmlinux 0x9802b669 scsi_ioctl +EXPORT_SYMBOL vmlinux 0x98086d65 mmc_gpio_set_cd_isr +EXPORT_SYMBOL vmlinux 0x980b326c tcp_proc_register +EXPORT_SYMBOL vmlinux 0x98429e0d of_find_node_by_phandle +EXPORT_SYMBOL vmlinux 0x984de3bd tty_insert_flip_string_flags +EXPORT_SYMBOL vmlinux 0x986e6135 fb_pad_unaligned_buffer +EXPORT_SYMBOL vmlinux 0x9881e6fd serio_unregister_port +EXPORT_SYMBOL vmlinux 0x98978e8c padata_alloc_possible +EXPORT_SYMBOL vmlinux 0x98a3481e ipv6_dev_get_saddr +EXPORT_SYMBOL vmlinux 0x98be8d60 __register_binfmt +EXPORT_SYMBOL vmlinux 0x98e42a9e xfrm_register_type +EXPORT_SYMBOL vmlinux 0x98e68eca cancel_delayed_work +EXPORT_SYMBOL vmlinux 0x98fe7882 DMA_MODE_READ +EXPORT_SYMBOL vmlinux 0x9908b0b4 scsi_device_lookup_by_target +EXPORT_SYMBOL vmlinux 0x991654af simple_symlink_inode_operations +EXPORT_SYMBOL vmlinux 0x9920df27 md_write_start +EXPORT_SYMBOL vmlinux 0x9926f521 down_write_trylock +EXPORT_SYMBOL vmlinux 0x9939eba0 backlight_unregister_notifier +EXPORT_SYMBOL vmlinux 0x99517682 udp_encap_enable +EXPORT_SYMBOL vmlinux 0x99591a7a ipv6_ext_hdr +EXPORT_SYMBOL vmlinux 0x995bf28c __nla_reserve_nohdr +EXPORT_SYMBOL vmlinux 0x995c917f tcp_sendpage +EXPORT_SYMBOL vmlinux 0x9963cd54 clk_add_alias +EXPORT_SYMBOL vmlinux 0x996f896e agp_alloc_page_array +EXPORT_SYMBOL vmlinux 0x997469bb __devm_request_region +EXPORT_SYMBOL vmlinux 0x99774d0c of_find_node_by_name +EXPORT_SYMBOL vmlinux 0x9994c0ca ps2_is_keyboard_id +EXPORT_SYMBOL vmlinux 0x999e8297 vfree +EXPORT_SYMBOL vmlinux 0x99afe916 _raw_write_unlock_bh +EXPORT_SYMBOL vmlinux 0x99b8dc11 security_path_chown +EXPORT_SYMBOL vmlinux 0x99bb8806 memmove +EXPORT_SYMBOL vmlinux 0x99cdc86b sysctl_tcp_reordering +EXPORT_SYMBOL vmlinux 0x99d8e7c9 padata_set_cpumasks +EXPORT_SYMBOL vmlinux 0x99ed06a8 scsi_unblock_requests +EXPORT_SYMBOL vmlinux 0x99f5d1b3 setup_new_exec +EXPORT_SYMBOL vmlinux 0x9a192720 pci_assign_resource +EXPORT_SYMBOL vmlinux 0x9a1dfd65 strpbrk +EXPORT_SYMBOL vmlinux 0x9a1fc4b4 jiffies_to_timeval +EXPORT_SYMBOL vmlinux 0x9a320844 inet_stream_ops +EXPORT_SYMBOL vmlinux 0x9a33c970 twl6040_reg_read +EXPORT_SYMBOL vmlinux 0x9a505424 tty_chars_in_buffer +EXPORT_SYMBOL vmlinux 0x9a86cec0 blk_rq_map_kern +EXPORT_SYMBOL vmlinux 0x9ad0e07e __generic_file_fsync +EXPORT_SYMBOL vmlinux 0x9aeb07e8 vme_lm_attach +EXPORT_SYMBOL vmlinux 0x9b073e6b netlink_ns_capable +EXPORT_SYMBOL vmlinux 0x9b1dd045 fddi_change_mtu +EXPORT_SYMBOL vmlinux 0x9b245cd4 f_setown +EXPORT_SYMBOL vmlinux 0x9b314ffd scsi_get_host_dev +EXPORT_SYMBOL vmlinux 0x9b33e0d7 unregister_dcbevent_notifier +EXPORT_SYMBOL vmlinux 0x9b388444 get_zeroed_page +EXPORT_SYMBOL vmlinux 0x9b52e20d ppc_md +EXPORT_SYMBOL vmlinux 0x9b6eb137 ksize +EXPORT_SYMBOL vmlinux 0x9b70ce5f clocksource_change_rating +EXPORT_SYMBOL vmlinux 0x9b9e05f9 alloc_cpu_rmap +EXPORT_SYMBOL vmlinux 0x9ba7089d argv_split +EXPORT_SYMBOL vmlinux 0x9bb03b1a netpoll_setup +EXPORT_SYMBOL vmlinux 0x9be38b52 inet_del_offload +EXPORT_SYMBOL vmlinux 0x9be7bde4 security_tun_dev_attach +EXPORT_SYMBOL vmlinux 0x9c491f60 sg_alloc_table +EXPORT_SYMBOL vmlinux 0x9ca557c0 __inet_stream_connect +EXPORT_SYMBOL vmlinux 0x9cab34a6 rfkill_set_led_trigger_name +EXPORT_SYMBOL vmlinux 0x9caff08a nobh_write_end +EXPORT_SYMBOL vmlinux 0x9caff5df netlink_capable +EXPORT_SYMBOL vmlinux 0x9cb49e7f __dev_kfree_skb_any +EXPORT_SYMBOL vmlinux 0x9cc522fb xfrm_register_mode +EXPORT_SYMBOL vmlinux 0x9ce3f83f nvram_write_byte +EXPORT_SYMBOL vmlinux 0x9d006cb7 uart_register_driver +EXPORT_SYMBOL vmlinux 0x9d053e03 blk_mq_abort_requeue_list +EXPORT_SYMBOL vmlinux 0x9d0d6206 unregister_netdevice_notifier +EXPORT_SYMBOL vmlinux 0x9d14983a ppc_enable_pmcs +EXPORT_SYMBOL vmlinux 0x9d3aa376 blk_iopoll_init +EXPORT_SYMBOL vmlinux 0x9d3c5804 cpufreq_generic_suspend +EXPORT_SYMBOL vmlinux 0x9d3e3a18 __module_put_and_exit +EXPORT_SYMBOL vmlinux 0x9d425776 find_get_entry +EXPORT_SYMBOL vmlinux 0x9d59837c nosteal_pipe_buf_ops +EXPORT_SYMBOL vmlinux 0x9d64042a mmc_can_sanitize +EXPORT_SYMBOL vmlinux 0x9d669763 memcpy +EXPORT_SYMBOL vmlinux 0x9d6a54c2 flex_array_get_ptr +EXPORT_SYMBOL vmlinux 0x9d72229b fsl_ifc_find +EXPORT_SYMBOL vmlinux 0x9d7ce8dd _raw_spin_trylock +EXPORT_SYMBOL vmlinux 0x9dc81179 blk_queue_physical_block_size +EXPORT_SYMBOL vmlinux 0x9de15a04 phy_mac_interrupt +EXPORT_SYMBOL vmlinux 0x9dee9a84 cpm2_immr +EXPORT_SYMBOL vmlinux 0x9dfe7307 lz4_decompress_unknownoutputsize +EXPORT_SYMBOL vmlinux 0x9e0c711d vzalloc_node +EXPORT_SYMBOL vmlinux 0x9e1252a2 __cleancache_init_fs +EXPORT_SYMBOL vmlinux 0x9e2ce3e2 pci_request_regions +EXPORT_SYMBOL vmlinux 0x9e37da54 mipi_dsi_generic_write +EXPORT_SYMBOL vmlinux 0x9e413775 phy_init_hw +EXPORT_SYMBOL vmlinux 0x9e431a53 blk_queue_bounce +EXPORT_SYMBOL vmlinux 0x9e4faeef dm_io_client_destroy +EXPORT_SYMBOL vmlinux 0x9e5a4f75 inet_twsk_deschedule +EXPORT_SYMBOL vmlinux 0x9e61bb05 set_freezable +EXPORT_SYMBOL vmlinux 0x9e6a9a92 pci_domain_nr +EXPORT_SYMBOL vmlinux 0x9e763530 reciprocal_value +EXPORT_SYMBOL vmlinux 0x9ea449cc netif_device_attach +EXPORT_SYMBOL vmlinux 0x9ea73929 __tracepoint_fence_emit +EXPORT_SYMBOL vmlinux 0x9ebd4c04 adjust_resource +EXPORT_SYMBOL vmlinux 0x9ebeadde mmc_release_host +EXPORT_SYMBOL vmlinux 0x9edc4574 sys_imageblit +EXPORT_SYMBOL vmlinux 0x9ef78afe kernel_write +EXPORT_SYMBOL vmlinux 0x9f21774c dcb_setapp +EXPORT_SYMBOL vmlinux 0x9f22a341 __pci_enable_wake +EXPORT_SYMBOL vmlinux 0x9f2cbc0a inet_csk_accept +EXPORT_SYMBOL vmlinux 0x9f2f11e0 mount_bdev +EXPORT_SYMBOL vmlinux 0x9f3171aa scsi_device_set_state +EXPORT_SYMBOL vmlinux 0x9f330b94 of_n_addr_cells +EXPORT_SYMBOL vmlinux 0x9f3a551e mb_cache_entry_find_first +EXPORT_SYMBOL vmlinux 0x9f430031 neigh_xmit +EXPORT_SYMBOL vmlinux 0x9f46ced8 __sw_hweight64 +EXPORT_SYMBOL vmlinux 0x9f4adf33 lro_flush_all +EXPORT_SYMBOL vmlinux 0x9f7cf182 security_path_truncate +EXPORT_SYMBOL vmlinux 0x9f911629 idr_alloc_cyclic +EXPORT_SYMBOL vmlinux 0x9f984513 strrchr +EXPORT_SYMBOL vmlinux 0x9fa235b2 __generic_file_write_iter +EXPORT_SYMBOL vmlinux 0x9fce82f2 inode_init_owner +EXPORT_SYMBOL vmlinux 0x9fd0d5f0 ppp_register_net_channel +EXPORT_SYMBOL vmlinux 0x9fd48a89 rwsem_wake +EXPORT_SYMBOL vmlinux 0x9fd7aae7 udp_disconnect +EXPORT_SYMBOL vmlinux 0x9fdecc31 unregister_netdevice_many +EXPORT_SYMBOL vmlinux 0x9feac253 tcp_simple_retransmit +EXPORT_SYMBOL vmlinux 0x9ff5964e pm860x_reg_write +EXPORT_SYMBOL vmlinux 0x9ff81140 vme_irq_free +EXPORT_SYMBOL vmlinux 0x9ffa3a75 netdev_max_backlog +EXPORT_SYMBOL vmlinux 0x9ffde8a2 netdev_err +EXPORT_SYMBOL vmlinux 0x9fff5a81 jbd2_journal_force_commit_nested +EXPORT_SYMBOL vmlinux 0xa0436e98 in6addr_linklocal_allnodes +EXPORT_SYMBOL vmlinux 0xa04a01bd qdisc_class_hash_insert +EXPORT_SYMBOL vmlinux 0xa05c03df mempool_kmalloc +EXPORT_SYMBOL vmlinux 0xa06df9e1 __kfifo_dma_out_finish_r +EXPORT_SYMBOL vmlinux 0xa0745ca1 md_flush_request +EXPORT_SYMBOL vmlinux 0xa07ed110 xz_dec_init +EXPORT_SYMBOL vmlinux 0xa084749a __bitmap_or +EXPORT_SYMBOL vmlinux 0xa09839ab ipv6_sock_mc_drop +EXPORT_SYMBOL vmlinux 0xa0acc999 __napi_alloc_skb +EXPORT_SYMBOL vmlinux 0xa0b04675 vmalloc_32 +EXPORT_SYMBOL vmlinux 0xa0b61aa6 tcp_child_process +EXPORT_SYMBOL vmlinux 0xa0be3178 kernel_accept +EXPORT_SYMBOL vmlinux 0xa0c73638 put_filp +EXPORT_SYMBOL vmlinux 0xa0c79c76 deactivate_super +EXPORT_SYMBOL vmlinux 0xa0cc4e81 tty_port_hangup +EXPORT_SYMBOL vmlinux 0xa0dad88e netdev_adjacent_get_private +EXPORT_SYMBOL vmlinux 0xa0ebd14c sysctl_tcp_mem +EXPORT_SYMBOL vmlinux 0xa0eead88 pcie_capability_clear_and_set_word +EXPORT_SYMBOL vmlinux 0xa0fbac79 wake_up_bit +EXPORT_SYMBOL vmlinux 0xa0fc8f04 tcp_splice_read +EXPORT_SYMBOL vmlinux 0xa108eb4d sysctl_optmem_max +EXPORT_SYMBOL vmlinux 0xa120d33c tty_unregister_ldisc +EXPORT_SYMBOL vmlinux 0xa1415618 twl6030_interrupt_unmask +EXPORT_SYMBOL vmlinux 0xa1449b40 sock_no_shutdown +EXPORT_SYMBOL vmlinux 0xa14f3d8c ewma_add +EXPORT_SYMBOL vmlinux 0xa150e513 of_find_device_by_node +EXPORT_SYMBOL vmlinux 0xa16e00fa tty_port_alloc_xmit_buf +EXPORT_SYMBOL vmlinux 0xa16ebde4 fsl_lbc_ctrl_dev +EXPORT_SYMBOL vmlinux 0xa18b1a5b always_delete_dentry +EXPORT_SYMBOL vmlinux 0xa18bb428 mount_pseudo +EXPORT_SYMBOL vmlinux 0xa1b759ce fb_add_videomode +EXPORT_SYMBOL vmlinux 0xa1c76e0a _cond_resched +EXPORT_SYMBOL vmlinux 0xa1c99385 __init_waitqueue_head +EXPORT_SYMBOL vmlinux 0xa1cac239 inc_nlink +EXPORT_SYMBOL vmlinux 0xa1d1f9aa posix_unblock_lock +EXPORT_SYMBOL vmlinux 0xa1d2bf6a __skb_get_hash_flowi6 +EXPORT_SYMBOL vmlinux 0xa1ecc6e2 get_io_context +EXPORT_SYMBOL vmlinux 0xa1f25526 dev_mc_init +EXPORT_SYMBOL vmlinux 0xa1f8fe75 wait_for_completion_killable_timeout +EXPORT_SYMBOL vmlinux 0xa209451c bitmap_fold +EXPORT_SYMBOL vmlinux 0xa20b521a blk_mq_complete_request +EXPORT_SYMBOL vmlinux 0xa21dc6cd page_cache_prev_hole +EXPORT_SYMBOL vmlinux 0xa271900d __wait_on_buffer +EXPORT_SYMBOL vmlinux 0xa278f155 agp_collect_device_status +EXPORT_SYMBOL vmlinux 0xa2848c50 ecryptfs_get_auth_tok_key +EXPORT_SYMBOL vmlinux 0xa2af945c lock_sock_nested +EXPORT_SYMBOL vmlinux 0xa2bbed37 crash_shutdown_register +EXPORT_SYMBOL vmlinux 0xa2c318dc ps2_cmd_aborted +EXPORT_SYMBOL vmlinux 0xa2cad1d3 neigh_sysctl_unregister +EXPORT_SYMBOL vmlinux 0xa2e253c9 max8925_set_bits +EXPORT_SYMBOL vmlinux 0xa2fdbcbe fence_default_wait +EXPORT_SYMBOL vmlinux 0xa303d1ff dm_ratelimit_state +EXPORT_SYMBOL vmlinux 0xa304ce92 netdev_master_upper_dev_get_rcu +EXPORT_SYMBOL vmlinux 0xa3055e3c __i2c_transfer +EXPORT_SYMBOL vmlinux 0xa31bdf07 vme_master_set +EXPORT_SYMBOL vmlinux 0xa3279e86 request_key +EXPORT_SYMBOL vmlinux 0xa34255dd inode_claim_rsv_space +EXPORT_SYMBOL vmlinux 0xa381944f dql_reset +EXPORT_SYMBOL vmlinux 0xa38e691a ioremap_bot +EXPORT_SYMBOL vmlinux 0xa39b4cf2 udelay +EXPORT_SYMBOL vmlinux 0xa3abc422 abort_exclusive_wait +EXPORT_SYMBOL vmlinux 0xa3b5558f bio_clone_fast +EXPORT_SYMBOL vmlinux 0xa3ba3e1c tty_kref_put +EXPORT_SYMBOL vmlinux 0xa3d10ce4 inet_listen +EXPORT_SYMBOL vmlinux 0xa3d45708 dev_queue_xmit_sk +EXPORT_SYMBOL vmlinux 0xa3e75545 flush_tlb_kernel_range +EXPORT_SYMBOL vmlinux 0xa3ee438d tcp_rcv_established +EXPORT_SYMBOL vmlinux 0xa3f004b1 param_get_charp +EXPORT_SYMBOL vmlinux 0xa3f45769 ip6_frag_init +EXPORT_SYMBOL vmlinux 0xa3fd82da cookie_ecn_ok +EXPORT_SYMBOL vmlinux 0xa41c5cbb inet6_offloads +EXPORT_SYMBOL vmlinux 0xa423d88c vfs_fsync +EXPORT_SYMBOL vmlinux 0xa43b1297 vscnprintf +EXPORT_SYMBOL vmlinux 0xa44ce30e fsnotify_alloc_group +EXPORT_SYMBOL vmlinux 0xa45856ce ip_setsockopt +EXPORT_SYMBOL vmlinux 0xa46142ba __lock_page +EXPORT_SYMBOL vmlinux 0xa4701e9e timekeeping_inject_offset +EXPORT_SYMBOL vmlinux 0xa479d375 tcf_register_action +EXPORT_SYMBOL vmlinux 0xa497f175 scsi_remove_device +EXPORT_SYMBOL vmlinux 0xa4a94d26 find_next_bit_le +EXPORT_SYMBOL vmlinux 0xa4b45ea5 out_of_line_wait_on_bit_lock +EXPORT_SYMBOL vmlinux 0xa4b94fea iowrite8_rep +EXPORT_SYMBOL vmlinux 0xa4b9d808 seq_puts +EXPORT_SYMBOL vmlinux 0xa4c4755b unlock_rename +EXPORT_SYMBOL vmlinux 0xa4d4f0e6 global_cache_flush +EXPORT_SYMBOL vmlinux 0xa4df775e get_tz_trend +EXPORT_SYMBOL vmlinux 0xa5138dab lru_cache_add_file +EXPORT_SYMBOL vmlinux 0xa518355a ipv6_chk_addr +EXPORT_SYMBOL vmlinux 0xa5271808 vfs_unlink +EXPORT_SYMBOL vmlinux 0xa5472da9 led_update_brightness +EXPORT_SYMBOL vmlinux 0xa5526619 rb_insert_color +EXPORT_SYMBOL vmlinux 0xa56b8ab2 flex_array_free +EXPORT_SYMBOL vmlinux 0xa57c03c7 tcf_exts_validate +EXPORT_SYMBOL vmlinux 0xa598e29c vesa_modes +EXPORT_SYMBOL vmlinux 0xa5b967c4 filemap_fdatawrite_range +EXPORT_SYMBOL vmlinux 0xa5e3615e __remove_inode_hash +EXPORT_SYMBOL vmlinux 0xa60268ad ps2_drain +EXPORT_SYMBOL vmlinux 0xa606b9fb of_graph_get_endpoint_by_regs +EXPORT_SYMBOL vmlinux 0xa61f8ea5 uart_update_timeout +EXPORT_SYMBOL vmlinux 0xa6220572 __dynamic_dev_dbg +EXPORT_SYMBOL vmlinux 0xa62d64bb sg_alloc_table_from_pages +EXPORT_SYMBOL vmlinux 0xa62f9bda bh_uptodate_or_lock +EXPORT_SYMBOL vmlinux 0xa64e9e8f __destroy_inode +EXPORT_SYMBOL vmlinux 0xa64fa0c1 of_get_parent +EXPORT_SYMBOL vmlinux 0xa65972b8 _memcpy_toio +EXPORT_SYMBOL vmlinux 0xa67372af __skb_get_hash +EXPORT_SYMBOL vmlinux 0xa675804c utf8s_to_utf16s +EXPORT_SYMBOL vmlinux 0xa67c635e clear_user_page +EXPORT_SYMBOL vmlinux 0xa681fe88 generate_random_uuid +EXPORT_SYMBOL vmlinux 0xa6856ac1 ipv6_push_nfrag_opts +EXPORT_SYMBOL vmlinux 0xa685a6f2 block_write_full_page +EXPORT_SYMBOL vmlinux 0xa6970398 __kfifo_to_user_r +EXPORT_SYMBOL vmlinux 0xa6b191f4 key_unlink +EXPORT_SYMBOL vmlinux 0xa6c2d4f4 mntput +EXPORT_SYMBOL vmlinux 0xa6cb029c input_set_keycode +EXPORT_SYMBOL vmlinux 0xa6dee727 fb_find_mode +EXPORT_SYMBOL vmlinux 0xa6ee5ca2 fb_pan_display +EXPORT_SYMBOL vmlinux 0xa6eeef9c genl_unregister_family +EXPORT_SYMBOL vmlinux 0xa6efcc64 simple_dname +EXPORT_SYMBOL vmlinux 0xa6f9b59c blk_fetch_request +EXPORT_SYMBOL vmlinux 0xa6ff829c md_done_sync +EXPORT_SYMBOL vmlinux 0xa6ffec60 woken_wake_function +EXPORT_SYMBOL vmlinux 0xa70e5469 eth_commit_mac_addr_change +EXPORT_SYMBOL vmlinux 0xa710ff22 xfrm4_rcv_encap +EXPORT_SYMBOL vmlinux 0xa71b7793 netpoll_parse_options +EXPORT_SYMBOL vmlinux 0xa720678c lg_global_lock +EXPORT_SYMBOL vmlinux 0xa72990a8 vlan_dev_real_dev +EXPORT_SYMBOL vmlinux 0xa72c84b3 swiotlb_free_coherent +EXPORT_SYMBOL vmlinux 0xa735db59 prandom_u32 +EXPORT_SYMBOL vmlinux 0xa74d0e63 bitmap_start_sync +EXPORT_SYMBOL vmlinux 0xa74f4e9b ida_simple_get +EXPORT_SYMBOL vmlinux 0xa7782548 dev_uc_sync_multiple +EXPORT_SYMBOL vmlinux 0xa786a422 alloc_disk +EXPORT_SYMBOL vmlinux 0xa78acdef phy_stop_interrupts +EXPORT_SYMBOL vmlinux 0xa78d9eb7 slhc_uncompress +EXPORT_SYMBOL vmlinux 0xa7c0a1af tcp_enter_memory_pressure +EXPORT_SYMBOL vmlinux 0xa7d45cfa con_copy_unimap +EXPORT_SYMBOL vmlinux 0xa7dd59a4 dquot_file_open +EXPORT_SYMBOL vmlinux 0xa7e94902 kmap_pte +EXPORT_SYMBOL vmlinux 0xa81dd3da simple_dentry_operations +EXPORT_SYMBOL vmlinux 0xa8232c78 strtobool +EXPORT_SYMBOL vmlinux 0xa839f330 unlock_page +EXPORT_SYMBOL vmlinux 0xa83d6e3a tcp_sendmsg +EXPORT_SYMBOL vmlinux 0xa843805a get_unused_fd_flags +EXPORT_SYMBOL vmlinux 0xa84853c5 sk_stream_wait_connect +EXPORT_SYMBOL vmlinux 0xa857431b agp_generic_free_gatt_table +EXPORT_SYMBOL vmlinux 0xa867b0b5 tty_unregister_device +EXPORT_SYMBOL vmlinux 0xa8721b97 system_state +EXPORT_SYMBOL vmlinux 0xa880eb8b redraw_screen +EXPORT_SYMBOL vmlinux 0xa88c6950 put_cmsg +EXPORT_SYMBOL vmlinux 0xa88f1566 get_super_thawed +EXPORT_SYMBOL vmlinux 0xa893dda7 tcp_ioctl +EXPORT_SYMBOL vmlinux 0xa89464b7 __ashldi3 +EXPORT_SYMBOL vmlinux 0xa89f1762 dev_warn +EXPORT_SYMBOL vmlinux 0xa8a9da04 nf_log_unset +EXPORT_SYMBOL vmlinux 0xa8ebd1aa mdiobus_free +EXPORT_SYMBOL vmlinux 0xa8fef7bb security_unix_may_send +EXPORT_SYMBOL vmlinux 0xa90a4000 xfrm_input +EXPORT_SYMBOL vmlinux 0xa9168676 xmit_recursion +EXPORT_SYMBOL vmlinux 0xa9218e08 __scm_send +EXPORT_SYMBOL vmlinux 0xa9273e1a epapr_hypercall_start +EXPORT_SYMBOL vmlinux 0xa92a4a42 mipi_dsi_driver_unregister +EXPORT_SYMBOL vmlinux 0xa9571d6d DMA_MODE_WRITE +EXPORT_SYMBOL vmlinux 0xa976957d bitmap_remap +EXPORT_SYMBOL vmlinux 0xa97b5379 nf_unregister_hook +EXPORT_SYMBOL vmlinux 0xa9824c1d vfs_statfs +EXPORT_SYMBOL vmlinux 0xa98464ff xfrm_user_policy +EXPORT_SYMBOL vmlinux 0xa98c2354 kill_anon_super +EXPORT_SYMBOL vmlinux 0xa98d19c7 mmc_put_card +EXPORT_SYMBOL vmlinux 0xa9c63b69 security_xfrm_policy_free +EXPORT_SYMBOL vmlinux 0xa9c7f8ff sock_i_ino +EXPORT_SYMBOL vmlinux 0xaa46e87e lg_local_unlock +EXPORT_SYMBOL vmlinux 0xaa4fc296 fddi_type_trans +EXPORT_SYMBOL vmlinux 0xaa6901ac __kfifo_out_r +EXPORT_SYMBOL vmlinux 0xaa6e4df5 _raw_write_lock_irqsave +EXPORT_SYMBOL vmlinux 0xaa6f23ad rfkill_get_led_trigger_name +EXPORT_SYMBOL vmlinux 0xaa773ea2 neigh_seq_next +EXPORT_SYMBOL vmlinux 0xaa86c04d pcibios_resource_to_bus +EXPORT_SYMBOL vmlinux 0xaa8b9716 empty_aops +EXPORT_SYMBOL vmlinux 0xaa8f17d6 revalidate_disk +EXPORT_SYMBOL vmlinux 0xaa9830f3 security_inode_setsecctx +EXPORT_SYMBOL vmlinux 0xaaa0351f crypto_sha256_update +EXPORT_SYMBOL vmlinux 0xaaab8067 cpu_sibling_map +EXPORT_SYMBOL vmlinux 0xaad0ae78 __bitmap_shift_right +EXPORT_SYMBOL vmlinux 0xaad5f782 sk_wait_data +EXPORT_SYMBOL vmlinux 0xaad6d92f rfkill_init_sw_state +EXPORT_SYMBOL vmlinux 0xaadaa3c7 trace_print_flags_seq +EXPORT_SYMBOL vmlinux 0xaadecb16 block_invalidatepage +EXPORT_SYMBOL vmlinux 0xaafdc258 strcasecmp +EXPORT_SYMBOL vmlinux 0xaafe9179 mmc_gpiod_request_ro +EXPORT_SYMBOL vmlinux 0xab183d37 __dst_free +EXPORT_SYMBOL vmlinux 0xab694444 bsearch +EXPORT_SYMBOL vmlinux 0xab6bde28 sysctl_max_syn_backlog +EXPORT_SYMBOL vmlinux 0xab781570 fb_get_options +EXPORT_SYMBOL vmlinux 0xab81f559 tty_hangup +EXPORT_SYMBOL vmlinux 0xab83a5f9 of_cpufreq_power_cooling_register +EXPORT_SYMBOL vmlinux 0xaba3ad0c radix_tree_gang_lookup_tag +EXPORT_SYMBOL vmlinux 0xabae2fc6 __wait_on_bit +EXPORT_SYMBOL vmlinux 0xabc62036 dst_alloc +EXPORT_SYMBOL vmlinux 0xabc6dd63 cpufreq_sysfs_create_file +EXPORT_SYMBOL vmlinux 0xabcaa577 free_anon_bdev +EXPORT_SYMBOL vmlinux 0xabe38107 blk_finish_request +EXPORT_SYMBOL vmlinux 0xabfcb4c3 flush_delayed_work +EXPORT_SYMBOL vmlinux 0xac0ba8c1 blk_iopoll_disable +EXPORT_SYMBOL vmlinux 0xac1a55be unregister_reboot_notifier +EXPORT_SYMBOL vmlinux 0xac26b820 _raw_write_lock +EXPORT_SYMBOL vmlinux 0xac339d87 generic_splice_sendpage +EXPORT_SYMBOL vmlinux 0xac4917eb nf_reinject +EXPORT_SYMBOL vmlinux 0xac4cc1bc lockref_mark_dead +EXPORT_SYMBOL vmlinux 0xac5cc395 __block_page_mkwrite +EXPORT_SYMBOL vmlinux 0xac5ce254 mipi_dsi_dcs_exit_sleep_mode +EXPORT_SYMBOL vmlinux 0xac921049 tcf_em_tree_validate +EXPORT_SYMBOL vmlinux 0xacab29b7 seq_hlist_start_percpu +EXPORT_SYMBOL vmlinux 0xacc5b5d2 csum_ipv6_magic +EXPORT_SYMBOL vmlinux 0xacca7266 devm_kvasprintf +EXPORT_SYMBOL vmlinux 0xaccabc6a in4_pton +EXPORT_SYMBOL vmlinux 0xaccc20de write_inode_now +EXPORT_SYMBOL vmlinux 0xacd75288 pci_bus_set_ops +EXPORT_SYMBOL vmlinux 0xacd81eb3 jbd2_inode_cache +EXPORT_SYMBOL vmlinux 0xacdb0528 mmc_power_save_host +EXPORT_SYMBOL vmlinux 0xacee9d39 ipv6_select_ident +EXPORT_SYMBOL vmlinux 0xacf4d843 match_strdup +EXPORT_SYMBOL vmlinux 0xad0413d4 match_hex +EXPORT_SYMBOL vmlinux 0xad14fb48 blk_mq_init_allocated_queue +EXPORT_SYMBOL vmlinux 0xad221950 inet_dgram_connect +EXPORT_SYMBOL vmlinux 0xad265c78 devm_devfreq_register_opp_notifier +EXPORT_SYMBOL vmlinux 0xad375e3e ppp_input +EXPORT_SYMBOL vmlinux 0xad45c441 simple_dir_inode_operations +EXPORT_SYMBOL vmlinux 0xad564d20 genphy_config_aneg +EXPORT_SYMBOL vmlinux 0xad5f2da7 d_make_root +EXPORT_SYMBOL vmlinux 0xad67cea9 tcp_req_err +EXPORT_SYMBOL vmlinux 0xad840dfc fb_get_mode +EXPORT_SYMBOL vmlinux 0xad84bef8 dm_table_event +EXPORT_SYMBOL vmlinux 0xadadba90 neigh_for_each +EXPORT_SYMBOL vmlinux 0xadbd2df8 generic_delete_inode +EXPORT_SYMBOL vmlinux 0xadd7f09e of_clk_get +EXPORT_SYMBOL vmlinux 0xaddd4770 __debugger_iabr_match +EXPORT_SYMBOL vmlinux 0xadde7b61 input_register_handle +EXPORT_SYMBOL vmlinux 0xade0db58 dqget +EXPORT_SYMBOL vmlinux 0xadef29c9 blk_delay_queue +EXPORT_SYMBOL vmlinux 0xadeff60b dev_uc_del +EXPORT_SYMBOL vmlinux 0xadf0811d get_baudrate +EXPORT_SYMBOL vmlinux 0xadfdfcef __bitmap_andnot +EXPORT_SYMBOL vmlinux 0xae164bd5 blk_integrity_unregister +EXPORT_SYMBOL vmlinux 0xae1e116f pcie_capability_read_dword +EXPORT_SYMBOL vmlinux 0xae358236 fence_signal +EXPORT_SYMBOL vmlinux 0xae545f06 _raw_write_unlock_irqrestore +EXPORT_SYMBOL vmlinux 0xae5ff51a pci_bus_type +EXPORT_SYMBOL vmlinux 0xae729e59 security_req_classify_flow +EXPORT_SYMBOL vmlinux 0xae77a595 radix_tree_gang_lookup_slot +EXPORT_SYMBOL vmlinux 0xae7aa3a1 kobject_put +EXPORT_SYMBOL vmlinux 0xae85a27e radix_tree_lookup +EXPORT_SYMBOL vmlinux 0xaea09b64 pci_find_next_bus +EXPORT_SYMBOL vmlinux 0xaeb9b5d0 blk_mq_stop_hw_queues +EXPORT_SYMBOL vmlinux 0xaec655c7 alloc_pages_exact +EXPORT_SYMBOL vmlinux 0xaed52502 __blkdev_reread_part +EXPORT_SYMBOL vmlinux 0xaedbdb89 pci_find_parent_resource +EXPORT_SYMBOL vmlinux 0xaefb7851 of_device_is_big_endian +EXPORT_SYMBOL vmlinux 0xaf063510 _raw_spin_lock_bh +EXPORT_SYMBOL vmlinux 0xaf0b81c2 lockref_get_or_lock +EXPORT_SYMBOL vmlinux 0xaf2d872c prepare_to_wait +EXPORT_SYMBOL vmlinux 0xaf2ecb93 jbd2_journal_init_dev +EXPORT_SYMBOL vmlinux 0xaf3dd7dc scsi_logging_level +EXPORT_SYMBOL vmlinux 0xaf5327d3 backlight_force_update +EXPORT_SYMBOL vmlinux 0xaf91be2f d_genocide +EXPORT_SYMBOL vmlinux 0xaf9331da locks_copy_conflock +EXPORT_SYMBOL vmlinux 0xaf9340a7 tcf_hash_new_index +EXPORT_SYMBOL vmlinux 0xaf9c340d secpath_dup +EXPORT_SYMBOL vmlinux 0xafa71bcc ppp_input_error +EXPORT_SYMBOL vmlinux 0xafb86d57 generic_file_open +EXPORT_SYMBOL vmlinux 0xafbec2b1 dm_get_device +EXPORT_SYMBOL vmlinux 0xafcb4fa2 __cleancache_put_page +EXPORT_SYMBOL vmlinux 0xafff3d1d mempool_alloc +EXPORT_SYMBOL vmlinux 0xb014024c pagevec_lookup_tag +EXPORT_SYMBOL vmlinux 0xb0201ace pci_bus_read_dev_vendor_id +EXPORT_SYMBOL vmlinux 0xb04241b4 ida_simple_remove +EXPORT_SYMBOL vmlinux 0xb050e531 devfreq_monitor_start +EXPORT_SYMBOL vmlinux 0xb05fc310 sysctl_rmem_max +EXPORT_SYMBOL vmlinux 0xb0654a4a inet6_register_icmp_sender +EXPORT_SYMBOL vmlinux 0xb07f9bd5 sock_no_sendpage +EXPORT_SYMBOL vmlinux 0xb084ac35 pci_prepare_to_sleep +EXPORT_SYMBOL vmlinux 0xb094c842 single_open +EXPORT_SYMBOL vmlinux 0xb0a0c02e simple_follow_link +EXPORT_SYMBOL vmlinux 0xb0a0da0c rational_best_approximation +EXPORT_SYMBOL vmlinux 0xb0cfbf03 genphy_suspend +EXPORT_SYMBOL vmlinux 0xb0e10781 get_option +EXPORT_SYMBOL vmlinux 0xb0ee988e __scsi_print_sense +EXPORT_SYMBOL vmlinux 0xb0f41fed xfrm_dst_ifdown +EXPORT_SYMBOL vmlinux 0xb1295300 path_put +EXPORT_SYMBOL vmlinux 0xb12a2d18 vme_lm_request +EXPORT_SYMBOL vmlinux 0xb12cbacb fb_unregister_client +EXPORT_SYMBOL vmlinux 0xb13d9cc7 dcache_dir_open +EXPORT_SYMBOL vmlinux 0xb15bd8fa tb_ticks_per_sec +EXPORT_SYMBOL vmlinux 0xb15cb614 security_xfrm_policy_alloc +EXPORT_SYMBOL vmlinux 0xb15e7a93 inet_stream_connect +EXPORT_SYMBOL vmlinux 0xb1645a2e sg_free_table +EXPORT_SYMBOL vmlinux 0xb16d6139 con_is_bound +EXPORT_SYMBOL vmlinux 0xb1a2f8a6 d_obtain_root +EXPORT_SYMBOL vmlinux 0xb1a8aef8 set_blocksize +EXPORT_SYMBOL vmlinux 0xb1c3a01a oops_in_progress +EXPORT_SYMBOL vmlinux 0xb1c599c9 phy_detach +EXPORT_SYMBOL vmlinux 0xb1c6e787 wait_for_completion_timeout +EXPORT_SYMBOL vmlinux 0xb1cb883c scsi_report_bus_reset +EXPORT_SYMBOL vmlinux 0xb1cf44df fb_find_best_mode +EXPORT_SYMBOL vmlinux 0xb1d57bc1 bio_map_kern +EXPORT_SYMBOL vmlinux 0xb233762c atomic64_set +EXPORT_SYMBOL vmlinux 0xb2682405 utf8_to_utf32 +EXPORT_SYMBOL vmlinux 0xb271c290 tty_mutex +EXPORT_SYMBOL vmlinux 0xb2928da6 mb_cache_entry_insert +EXPORT_SYMBOL vmlinux 0xb2b13d6a sg_miter_next +EXPORT_SYMBOL vmlinux 0xb2b3fa90 netlink_ack +EXPORT_SYMBOL vmlinux 0xb2b9e67a iov_iter_zero +EXPORT_SYMBOL vmlinux 0xb2be6e92 netdev_stats_to_stats64 +EXPORT_SYMBOL vmlinux 0xb2d1b186 free_page_put_link +EXPORT_SYMBOL vmlinux 0xb2d2e0b3 security_path_chmod +EXPORT_SYMBOL vmlinux 0xb2d48a2e queue_work_on +EXPORT_SYMBOL vmlinux 0xb2f60058 register_qdisc +EXPORT_SYMBOL vmlinux 0xb2f6cd6b scsi_change_queue_depth +EXPORT_SYMBOL vmlinux 0xb310d864 end_buffer_write_sync +EXPORT_SYMBOL vmlinux 0xb31c93ab key_reject_and_link +EXPORT_SYMBOL vmlinux 0xb32d7b7e radix_tree_tagged +EXPORT_SYMBOL vmlinux 0xb32e1539 fsnotify_get_group +EXPORT_SYMBOL vmlinux 0xb3382494 fence_signal_locked +EXPORT_SYMBOL vmlinux 0xb35645e6 cdrom_ioctl +EXPORT_SYMBOL vmlinux 0xb37151d2 kmem_cache_destroy +EXPORT_SYMBOL vmlinux 0xb371e1fd __block_write_begin +EXPORT_SYMBOL vmlinux 0xb37b0c59 sock_create +EXPORT_SYMBOL vmlinux 0xb391ee56 sync_filesystem +EXPORT_SYMBOL vmlinux 0xb39b207a ilookup +EXPORT_SYMBOL vmlinux 0xb3aac184 _dev_info +EXPORT_SYMBOL vmlinux 0xb3c03d3d pcix_get_max_mmrbc +EXPORT_SYMBOL vmlinux 0xb3d2c76d scsi_hostbyte_string +EXPORT_SYMBOL vmlinux 0xb3f7646e kthread_should_stop +EXPORT_SYMBOL vmlinux 0xb4068f5f capable_wrt_inode_uidgid +EXPORT_SYMBOL vmlinux 0xb423dba1 console_blanked +EXPORT_SYMBOL vmlinux 0xb42ced46 pm860x_page_bulk_read +EXPORT_SYMBOL vmlinux 0xb43557b2 mmc_set_blocklen +EXPORT_SYMBOL vmlinux 0xb4519a8f string_escape_mem +EXPORT_SYMBOL vmlinux 0xb4597522 kfree_skb_list +EXPORT_SYMBOL vmlinux 0xb4709322 scsi_dev_info_add_list +EXPORT_SYMBOL vmlinux 0xb47c59d2 devm_iounmap +EXPORT_SYMBOL vmlinux 0xb48a0efc free_netdev +EXPORT_SYMBOL vmlinux 0xb4901cfd sk_stream_write_space +EXPORT_SYMBOL vmlinux 0xb49c264d inet_dgram_ops +EXPORT_SYMBOL vmlinux 0xb4bacca3 scsi_test_unit_ready +EXPORT_SYMBOL vmlinux 0xb4d0a388 sk_filter +EXPORT_SYMBOL vmlinux 0xb4fd457f tcp_check_req +EXPORT_SYMBOL vmlinux 0xb51dec78 param_ops_invbool +EXPORT_SYMBOL vmlinux 0xb530b906 inode_sub_bytes +EXPORT_SYMBOL vmlinux 0xb5371ce0 scsi_device_quiesce +EXPORT_SYMBOL vmlinux 0xb53afb4f get_user_pages_unlocked +EXPORT_SYMBOL vmlinux 0xb53eb1a9 blk_dump_rq_flags +EXPORT_SYMBOL vmlinux 0xb55c1e65 tso_count_descs +EXPORT_SYMBOL vmlinux 0xb57343c2 frontswap_shrink +EXPORT_SYMBOL vmlinux 0xb57bf379 ipv6_chk_prefix +EXPORT_SYMBOL vmlinux 0xb57cf91f skb_unlink +EXPORT_SYMBOL vmlinux 0xb59d1661 fifo_set_limit +EXPORT_SYMBOL vmlinux 0xb5a459dc unregister_blkdev +EXPORT_SYMBOL vmlinux 0xb5a95e86 generic_ro_fops +EXPORT_SYMBOL vmlinux 0xb5aa7165 dma_pool_destroy +EXPORT_SYMBOL vmlinux 0xb5c37d98 simple_getattr +EXPORT_SYMBOL vmlinux 0xb5cc0a30 of_scan_pci_bridge +EXPORT_SYMBOL vmlinux 0xb5d9454c printk_emit +EXPORT_SYMBOL vmlinux 0xb6244511 sg_init_one +EXPORT_SYMBOL vmlinux 0xb633d615 mfd_cell_enable +EXPORT_SYMBOL vmlinux 0xb63a7240 qdisc_reset +EXPORT_SYMBOL vmlinux 0xb643d289 default_llseek +EXPORT_SYMBOL vmlinux 0xb6480d9c blk_queue_merge_bvec +EXPORT_SYMBOL vmlinux 0xb64976b8 ww_mutex_unlock +EXPORT_SYMBOL vmlinux 0xb64ca64e gnet_stats_copy_basic +EXPORT_SYMBOL vmlinux 0xb6779719 input_mt_sync_frame +EXPORT_SYMBOL vmlinux 0xb678366f int_sqrt +EXPORT_SYMBOL vmlinux 0xb6896671 crc_t10dif +EXPORT_SYMBOL vmlinux 0xb68a7e0b vlan_dev_vlan_proto +EXPORT_SYMBOL vmlinux 0xb68eb445 dma_async_device_register +EXPORT_SYMBOL vmlinux 0xb6936ffe _bcd2bin +EXPORT_SYMBOL vmlinux 0xb6a68816 find_last_bit +EXPORT_SYMBOL vmlinux 0xb6b10afa sock_no_getname +EXPORT_SYMBOL vmlinux 0xb6dce6e7 skb_split +EXPORT_SYMBOL vmlinux 0xb6dfb331 pcim_iounmap_regions +EXPORT_SYMBOL vmlinux 0xb6e50007 __dax_fault +EXPORT_SYMBOL vmlinux 0xb6fd598e dev_uc_init +EXPORT_SYMBOL vmlinux 0xb71f38b7 current_fs_time +EXPORT_SYMBOL vmlinux 0xb72956cd prepare_creds +EXPORT_SYMBOL vmlinux 0xb736730d kernel_getsockopt +EXPORT_SYMBOL vmlinux 0xb7488905 scsi_normalize_sense +EXPORT_SYMBOL vmlinux 0xb753bcc8 __ashrdi3 +EXPORT_SYMBOL vmlinux 0xb7563709 pci_iomap +EXPORT_SYMBOL vmlinux 0xb758897e vmalloc_to_page +EXPORT_SYMBOL vmlinux 0xb75ade32 pm860x_page_reg_write +EXPORT_SYMBOL vmlinux 0xb75cfd14 write_dirty_buffer +EXPORT_SYMBOL vmlinux 0xb77131b1 psched_ratecfg_precompute +EXPORT_SYMBOL vmlinux 0xb77a6cc5 clear_inode +EXPORT_SYMBOL vmlinux 0xb77c4d63 generic_make_request +EXPORT_SYMBOL vmlinux 0xb798d5c1 tty_write_room +EXPORT_SYMBOL vmlinux 0xb79a4e1a store_fp_state +EXPORT_SYMBOL vmlinux 0xb79ec15d mipi_dsi_create_packet +EXPORT_SYMBOL vmlinux 0xb7a99781 __irq_regs +EXPORT_SYMBOL vmlinux 0xb7ae5b26 i2c_master_recv +EXPORT_SYMBOL vmlinux 0xb7ddc3de vlan_vid_add +EXPORT_SYMBOL vmlinux 0xb7fd7fd2 dmaengine_get_unmap_data +EXPORT_SYMBOL vmlinux 0xb80f5ce7 __dev_kfree_skb_irq +EXPORT_SYMBOL vmlinux 0xb81960ca snprintf +EXPORT_SYMBOL vmlinux 0xb82dfa62 generic_getxattr +EXPORT_SYMBOL vmlinux 0xb82fa6fb mmc_flush_cache +EXPORT_SYMBOL vmlinux 0xb8370414 sg_pcopy_from_buffer +EXPORT_SYMBOL vmlinux 0xb8480256 filemap_map_pages +EXPORT_SYMBOL vmlinux 0xb85d3901 __skb_checksum +EXPORT_SYMBOL vmlinux 0xb85f000d search_binary_handler +EXPORT_SYMBOL vmlinux 0xb874b87a __clzsi2 +EXPORT_SYMBOL vmlinux 0xb8767fac vfs_fsync_range +EXPORT_SYMBOL vmlinux 0xb8854ac8 sg_copy_from_buffer +EXPORT_SYMBOL vmlinux 0xb887edf4 to_nd_btt +EXPORT_SYMBOL vmlinux 0xb891acb4 jbd2_journal_clear_features +EXPORT_SYMBOL vmlinux 0xb8adaa83 inode_init_always +EXPORT_SYMBOL vmlinux 0xb8ba4a4d gen_new_estimator +EXPORT_SYMBOL vmlinux 0xb8e877e7 kstrtouint_from_user +EXPORT_SYMBOL vmlinux 0xb90c29c3 ipv6_find_hdr +EXPORT_SYMBOL vmlinux 0xb92be152 kfree_skb_partial +EXPORT_SYMBOL vmlinux 0xb9486066 inet6_bind +EXPORT_SYMBOL vmlinux 0xb9491db8 of_phy_attach +EXPORT_SYMBOL vmlinux 0xb97f2d64 down_read_trylock +EXPORT_SYMBOL vmlinux 0xb988a820 flow_cache_init +EXPORT_SYMBOL vmlinux 0xb9e8e2cc in6addr_sitelocal_allrouters +EXPORT_SYMBOL vmlinux 0xb9eb3d40 cont_write_begin +EXPORT_SYMBOL vmlinux 0xba167f67 wireless_spy_update +EXPORT_SYMBOL vmlinux 0xba2048e2 nf_nat_decode_session_hook +EXPORT_SYMBOL vmlinux 0xba2c3037 vme_master_mmap +EXPORT_SYMBOL vmlinux 0xba497f13 loops_per_jiffy +EXPORT_SYMBOL vmlinux 0xba4f01e6 __fib6_flush_trees +EXPORT_SYMBOL vmlinux 0xba64ce32 kmap_atomic_prot +EXPORT_SYMBOL vmlinux 0xba73cfbe tcp_v4_do_rcv +EXPORT_SYMBOL vmlinux 0xba9384b9 simple_dir_operations +EXPORT_SYMBOL vmlinux 0xbac3cbf2 ns_to_timespec64 +EXPORT_SYMBOL vmlinux 0xbac4db65 generic_file_direct_write +EXPORT_SYMBOL vmlinux 0xbace8f80 mmc_can_trim +EXPORT_SYMBOL vmlinux 0xbad44946 pci_get_class +EXPORT_SYMBOL vmlinux 0xbad4d75b inet6_register_protosw +EXPORT_SYMBOL vmlinux 0xbada7e5b netdev_warn +EXPORT_SYMBOL vmlinux 0xbaec1614 pci_wake_from_d3 +EXPORT_SYMBOL vmlinux 0xbaf198e2 xfrm_state_flush +EXPORT_SYMBOL vmlinux 0xbafcf757 inet_frags_init +EXPORT_SYMBOL vmlinux 0xbb023386 blk_mq_start_stopped_hw_queues +EXPORT_SYMBOL vmlinux 0xbb0540aa zlib_inflateReset +EXPORT_SYMBOL vmlinux 0xbb081543 mmc_gpio_get_cd +EXPORT_SYMBOL vmlinux 0xbb12d714 request_firmware +EXPORT_SYMBOL vmlinux 0xbb147f9b fixed_phy_update_state +EXPORT_SYMBOL vmlinux 0xbb35675b __bitmap_intersects +EXPORT_SYMBOL vmlinux 0xbb4f0fc1 mfd_remove_devices +EXPORT_SYMBOL vmlinux 0xbb5d343d xfrm_get_acqseq +EXPORT_SYMBOL vmlinux 0xbb64f8f4 netpoll_cleanup +EXPORT_SYMBOL vmlinux 0xbb8e4fc1 replace_mount_options +EXPORT_SYMBOL vmlinux 0xbb90a530 register_quota_format +EXPORT_SYMBOL vmlinux 0xbb99125c get_default_font +EXPORT_SYMBOL vmlinux 0xbba14fbd devfreq_monitor_stop +EXPORT_SYMBOL vmlinux 0xbbb3b74e t10_pi_type1_crc +EXPORT_SYMBOL vmlinux 0xbbcb8af2 generic_error_remove_page +EXPORT_SYMBOL vmlinux 0xbbd30f4a put_tty_driver +EXPORT_SYMBOL vmlinux 0xbbd76e57 bit_wait +EXPORT_SYMBOL vmlinux 0xbbdb3654 of_graph_get_remote_port +EXPORT_SYMBOL vmlinux 0xbbe61019 pcie_get_mps +EXPORT_SYMBOL vmlinux 0xbbef9158 nd_region_release_lane +EXPORT_SYMBOL vmlinux 0xbbf3e023 get_pci_dma_ops +EXPORT_SYMBOL vmlinux 0xbbf79835 lockref_put_or_lock +EXPORT_SYMBOL vmlinux 0xbc1905c0 scsi_mode_sense +EXPORT_SYMBOL vmlinux 0xbc1abdfb scsi_device_get +EXPORT_SYMBOL vmlinux 0xbc316de4 tty_termios_input_baud_rate +EXPORT_SYMBOL vmlinux 0xbc31f9ed jbd2_journal_set_features +EXPORT_SYMBOL vmlinux 0xbc36cec2 dev_addr_del +EXPORT_SYMBOL vmlinux 0xbc7654ba user_path_create +EXPORT_SYMBOL vmlinux 0xbc991841 udp_flush_pending_frames +EXPORT_SYMBOL vmlinux 0xbcaef955 vga_put +EXPORT_SYMBOL vmlinux 0xbcb08014 free_inode_nonrcu +EXPORT_SYMBOL vmlinux 0xbcbf5367 devfreq_remove_governor +EXPORT_SYMBOL vmlinux 0xbcc308bb strnlen_user +EXPORT_SYMBOL vmlinux 0xbcf3dddb mount_ns +EXPORT_SYMBOL vmlinux 0xbd096a3d genphy_update_link +EXPORT_SYMBOL vmlinux 0xbd36b229 kmem_cache_alloc_trace +EXPORT_SYMBOL vmlinux 0xbd4c90eb devm_devfreq_remove_device +EXPORT_SYMBOL vmlinux 0xbd4d1524 sock_release +EXPORT_SYMBOL vmlinux 0xbd5fd8be vme_irq_request +EXPORT_SYMBOL vmlinux 0xbd6601c0 xfrm6_prepare_output +EXPORT_SYMBOL vmlinux 0xbd803510 tcp_parse_md5sig_option +EXPORT_SYMBOL vmlinux 0xbd8f4666 __netlink_kernel_create +EXPORT_SYMBOL vmlinux 0xbd9074b1 blk_finish_plug +EXPORT_SYMBOL vmlinux 0xbd99f9e8 phy_drivers_unregister +EXPORT_SYMBOL vmlinux 0xbd9e5d49 __lshrdi3 +EXPORT_SYMBOL vmlinux 0xbdd9617d __nla_reserve +EXPORT_SYMBOL vmlinux 0xbdddb14c wait_on_page_bit +EXPORT_SYMBOL vmlinux 0xbdeb5443 blk_pre_runtime_suspend +EXPORT_SYMBOL vmlinux 0xbdf2b68a backlight_device_unregister +EXPORT_SYMBOL vmlinux 0xbe0e5118 nla_memcmp +EXPORT_SYMBOL vmlinux 0xbe1bb112 bitmap_onto +EXPORT_SYMBOL vmlinux 0xbe264655 get_user_pages_locked +EXPORT_SYMBOL vmlinux 0xbe5f9e15 skb_page_frag_refill +EXPORT_SYMBOL vmlinux 0xbe7c4207 cdrom_release +EXPORT_SYMBOL vmlinux 0xbe91f2c8 pcim_enable_device +EXPORT_SYMBOL vmlinux 0xbee90f2f __kfifo_out_peek_r +EXPORT_SYMBOL vmlinux 0xbeec605b tcp_get_md5sig_pool +EXPORT_SYMBOL vmlinux 0xbef2193b security_task_getsecid +EXPORT_SYMBOL vmlinux 0xbef43296 console_conditional_schedule +EXPORT_SYMBOL vmlinux 0xbef63932 blk_queue_resize_tags +EXPORT_SYMBOL vmlinux 0xbf146162 vm_event_states +EXPORT_SYMBOL vmlinux 0xbf240d89 input_unregister_device +EXPORT_SYMBOL vmlinux 0xbf25d076 seq_open_private +EXPORT_SYMBOL vmlinux 0xbf63c6e3 sk_capable +EXPORT_SYMBOL vmlinux 0xbf6a5d24 dquot_set_dqblk +EXPORT_SYMBOL vmlinux 0xbf6c45bd vm_mmap +EXPORT_SYMBOL vmlinux 0xbf7f45c1 make_kgid +EXPORT_SYMBOL vmlinux 0xbf7fd2f5 schedule_timeout_killable +EXPORT_SYMBOL vmlinux 0xbf8ba54a vprintk +EXPORT_SYMBOL vmlinux 0xbf925c42 idr_init +EXPORT_SYMBOL vmlinux 0xbf9bcc8d __cap_empty_set +EXPORT_SYMBOL vmlinux 0xbfac422f mipi_dsi_dcs_enter_sleep_mode +EXPORT_SYMBOL vmlinux 0xbfae9180 mark_page_accessed +EXPORT_SYMBOL vmlinux 0xbfb8b0b7 _raw_read_lock_irqsave +EXPORT_SYMBOL vmlinux 0xbfc177bc iowrite32_rep +EXPORT_SYMBOL vmlinux 0xbfca1f40 sock_no_listen +EXPORT_SYMBOL vmlinux 0xbfee3ad5 loop_unregister_transfer +EXPORT_SYMBOL vmlinux 0xbff32144 mutex_lock_killable +EXPORT_SYMBOL vmlinux 0xbffd3e58 md_reap_sync_thread +EXPORT_SYMBOL vmlinux 0xc00c86fd sk_receive_skb +EXPORT_SYMBOL vmlinux 0xc0127174 get_fs_type +EXPORT_SYMBOL vmlinux 0xc0136d2a xfrm_prepare_input +EXPORT_SYMBOL vmlinux 0xc01e2304 dquot_free_inode +EXPORT_SYMBOL vmlinux 0xc068440e __kfifo_alloc +EXPORT_SYMBOL vmlinux 0xc0763484 rfkill_blocked +EXPORT_SYMBOL vmlinux 0xc0823e4c twl_i2c_write +EXPORT_SYMBOL vmlinux 0xc09c4f4b ip4_datagram_connect +EXPORT_SYMBOL vmlinux 0xc0a3d105 find_next_bit +EXPORT_SYMBOL vmlinux 0xc0a99f4e skb_add_rx_frag +EXPORT_SYMBOL vmlinux 0xc0a9c69f d_alloc_name +EXPORT_SYMBOL vmlinux 0xc0ab7130 dquot_quota_on +EXPORT_SYMBOL vmlinux 0xc11d8093 iov_shorten +EXPORT_SYMBOL vmlinux 0xc12ec3a6 dns_query +EXPORT_SYMBOL vmlinux 0xc13a10dc flex_array_alloc +EXPORT_SYMBOL vmlinux 0xc142de9c xfrm_unregister_km +EXPORT_SYMBOL vmlinux 0xc16f3464 get_acl +EXPORT_SYMBOL vmlinux 0xc1797689 tty_vhangup +EXPORT_SYMBOL vmlinux 0xc17993ce fb_set_var +EXPORT_SYMBOL vmlinux 0xc17e044d swiotlb_map_sg +EXPORT_SYMBOL vmlinux 0xc1840901 follow_down_one +EXPORT_SYMBOL vmlinux 0xc197877d dev_graft_qdisc +EXPORT_SYMBOL vmlinux 0xc1a24643 pci_wait_for_pending_transaction +EXPORT_SYMBOL vmlinux 0xc1ce8513 mark_buffer_dirty_inode +EXPORT_SYMBOL vmlinux 0xc1d8cfaf __fdget +EXPORT_SYMBOL vmlinux 0xc1e50c0b rtnl_nla_parse_ifla +EXPORT_SYMBOL vmlinux 0xc1f000a5 cros_ec_check_result +EXPORT_SYMBOL vmlinux 0xc1f45a9d pcim_iounmap +EXPORT_SYMBOL vmlinux 0xc209a5ba devm_gpiod_get_array_optional +EXPORT_SYMBOL vmlinux 0xc2127331 vfs_mknod +EXPORT_SYMBOL vmlinux 0xc21779c1 would_dump +EXPORT_SYMBOL vmlinux 0xc228b740 udp_prot +EXPORT_SYMBOL vmlinux 0xc239fb6c padata_set_cpumask +EXPORT_SYMBOL vmlinux 0xc2424641 agp3_generic_cleanup +EXPORT_SYMBOL vmlinux 0xc24d8cf4 __devm_gpiod_get_index +EXPORT_SYMBOL vmlinux 0xc25c79ea blk_cleanup_queue +EXPORT_SYMBOL vmlinux 0xc26fd8b8 tty_set_operations +EXPORT_SYMBOL vmlinux 0xc28444bf dev_get_by_name_rcu +EXPORT_SYMBOL vmlinux 0xc28d573f tcp_try_fastopen +EXPORT_SYMBOL vmlinux 0xc2acc033 hex_dump_to_buffer +EXPORT_SYMBOL vmlinux 0xc2be6e22 devm_request_any_context_irq +EXPORT_SYMBOL vmlinux 0xc2c39455 param_ops_short +EXPORT_SYMBOL vmlinux 0xc2d711e1 krealloc +EXPORT_SYMBOL vmlinux 0xc2e587d1 reset_devices +EXPORT_SYMBOL vmlinux 0xc2f3c7ad scsi_host_set_state +EXPORT_SYMBOL vmlinux 0xc2f9c045 timespec_to_jiffies +EXPORT_SYMBOL vmlinux 0xc3186518 remap_vmalloc_range +EXPORT_SYMBOL vmlinux 0xc32344c0 xfrm_policy_insert +EXPORT_SYMBOL vmlinux 0xc368849f nvram_sync +EXPORT_SYMBOL vmlinux 0xc37285bc security_mmap_file +EXPORT_SYMBOL vmlinux 0xc3735e5a netif_napi_del +EXPORT_SYMBOL vmlinux 0xc388d3c6 sock_get_timestampns +EXPORT_SYMBOL vmlinux 0xc3bb4b62 inet_del_protocol +EXPORT_SYMBOL vmlinux 0xc3c2be91 mipi_dsi_packet_format_is_short +EXPORT_SYMBOL vmlinux 0xc3cc715d loop_register_transfer +EXPORT_SYMBOL vmlinux 0xc3ea3c73 __genl_register_family +EXPORT_SYMBOL vmlinux 0xc41f0516 node_states +EXPORT_SYMBOL vmlinux 0xc44590da vlan_vid_del +EXPORT_SYMBOL vmlinux 0xc44cc2e0 of_get_cpu_node +EXPORT_SYMBOL vmlinux 0xc452ec90 xfrm_spd_getinfo +EXPORT_SYMBOL vmlinux 0xc45755de find_next_zero_bit_le +EXPORT_SYMBOL vmlinux 0xc4708199 cpm_muram_addr +EXPORT_SYMBOL vmlinux 0xc47cdf9c _raw_write_lock_bh +EXPORT_SYMBOL vmlinux 0xc48ade13 abx500_remove_ops +EXPORT_SYMBOL vmlinux 0xc498a660 blk_mq_kick_requeue_list +EXPORT_SYMBOL vmlinux 0xc499ae1e kstrdup +EXPORT_SYMBOL vmlinux 0xc49f756e mach_corenet_generic +EXPORT_SYMBOL vmlinux 0xc4a2f5aa vfs_setpos +EXPORT_SYMBOL vmlinux 0xc4bae593 neigh_parms_alloc +EXPORT_SYMBOL vmlinux 0xc4f16e5b __generic_block_fiemap +EXPORT_SYMBOL vmlinux 0xc500baba xfrm_state_lookup_byaddr +EXPORT_SYMBOL vmlinux 0xc5095a93 d_move +EXPORT_SYMBOL vmlinux 0xc52c32f1 skb_try_coalesce +EXPORT_SYMBOL vmlinux 0xc54bde6a param_set_uint +EXPORT_SYMBOL vmlinux 0xc5534d64 ioread16 +EXPORT_SYMBOL vmlinux 0xc55c2a9d inode_sb_list_lock +EXPORT_SYMBOL vmlinux 0xc55de23c percpu_counter_set +EXPORT_SYMBOL vmlinux 0xc55f2737 dev_deactivate +EXPORT_SYMBOL vmlinux 0xc5611dee truncate_pagecache_range +EXPORT_SYMBOL vmlinux 0xc5612457 ip_route_me_harder +EXPORT_SYMBOL vmlinux 0xc599a772 security_xfrm_state_delete +EXPORT_SYMBOL vmlinux 0xc5a303b1 param_ops_bint +EXPORT_SYMBOL vmlinux 0xc5a56db5 csum_and_copy_to_iter +EXPORT_SYMBOL vmlinux 0xc5a6e3c5 done_path_create +EXPORT_SYMBOL vmlinux 0xc5a92aad find_vma +EXPORT_SYMBOL vmlinux 0xc5ae5ac0 pcie_set_mps +EXPORT_SYMBOL vmlinux 0xc5d300fe __getblk_gfp +EXPORT_SYMBOL vmlinux 0xc5d7b1fb km_policy_notify +EXPORT_SYMBOL vmlinux 0xc5d9c46c agp_try_unsupported_boot +EXPORT_SYMBOL vmlinux 0xc5e32220 fsnotify_add_mark +EXPORT_SYMBOL vmlinux 0xc5fdef94 call_usermodehelper +EXPORT_SYMBOL vmlinux 0xc631580a console_unlock +EXPORT_SYMBOL vmlinux 0xc640705b dma_set_mask +EXPORT_SYMBOL vmlinux 0xc64571ac pcie_port_service_register +EXPORT_SYMBOL vmlinux 0xc645e520 request_key_async_with_auxdata +EXPORT_SYMBOL vmlinux 0xc645fea3 finish_open +EXPORT_SYMBOL vmlinux 0xc65abeb7 agp3_generic_sizes +EXPORT_SYMBOL vmlinux 0xc663b075 __ioremap +EXPORT_SYMBOL vmlinux 0xc6695021 pci_set_power_state +EXPORT_SYMBOL vmlinux 0xc66f3580 km_query +EXPORT_SYMBOL vmlinux 0xc6988a9f genphy_config_init +EXPORT_SYMBOL vmlinux 0xc69fed22 blk_queue_end_tag +EXPORT_SYMBOL vmlinux 0xc6b22c71 __percpu_counter_sum +EXPORT_SYMBOL vmlinux 0xc6cbbc89 capable +EXPORT_SYMBOL vmlinux 0xc6dac111 blk_mq_can_queue +EXPORT_SYMBOL vmlinux 0xc6fcf0c6 input_mt_report_finger_count +EXPORT_SYMBOL vmlinux 0xc7208c3a serial8250_resume_port +EXPORT_SYMBOL vmlinux 0xc722264d scm_fp_dup +EXPORT_SYMBOL vmlinux 0xc72f0b34 nd_btt_sb_checksum +EXPORT_SYMBOL vmlinux 0xc7320d92 sockfd_lookup +EXPORT_SYMBOL vmlinux 0xc7563db8 twl_set_regcache_bypass +EXPORT_SYMBOL vmlinux 0xc768de19 cpu_all_bits +EXPORT_SYMBOL vmlinux 0xc77713c0 thermal_cdev_update +EXPORT_SYMBOL vmlinux 0xc7794c0a generic_permission +EXPORT_SYMBOL vmlinux 0xc781bd9f rfkill_resume_polling +EXPORT_SYMBOL vmlinux 0xc7856a3d inet6addr_notifier_call_chain +EXPORT_SYMBOL vmlinux 0xc785b988 xfrm4_rcv_cb +EXPORT_SYMBOL vmlinux 0xc7898275 flex_array_shrink +EXPORT_SYMBOL vmlinux 0xc7910c45 inet_peer_xrlim_allow +EXPORT_SYMBOL vmlinux 0xc79ade0f nla_put_nohdr +EXPORT_SYMBOL vmlinux 0xc79bcd36 dm_vcalloc +EXPORT_SYMBOL vmlinux 0xc7a4fbed rtnl_lock +EXPORT_SYMBOL vmlinux 0xc7a8d429 bd_set_size +EXPORT_SYMBOL vmlinux 0xc7c7cdde d_instantiate_no_diralias +EXPORT_SYMBOL vmlinux 0xc7d68ff7 __scsi_iterate_devices +EXPORT_SYMBOL vmlinux 0xc7ec6c27 strspn +EXPORT_SYMBOL vmlinux 0xc8276a79 nf_hooks_needed +EXPORT_SYMBOL vmlinux 0xc8339e24 string_unescape +EXPORT_SYMBOL vmlinux 0xc83b4d5b posix_acl_from_mode +EXPORT_SYMBOL vmlinux 0xc83bc449 pci_clear_mwi +EXPORT_SYMBOL vmlinux 0xc84a0a7e seq_hlist_start_rcu +EXPORT_SYMBOL vmlinux 0xc8555be9 tty_port_init +EXPORT_SYMBOL vmlinux 0xc8571bcb idr_for_each +EXPORT_SYMBOL vmlinux 0xc8592fd7 sock_common_getsockopt +EXPORT_SYMBOL vmlinux 0xc862bb95 pcibios_bus_to_resource +EXPORT_SYMBOL vmlinux 0xc872d4af ilookup5_nowait +EXPORT_SYMBOL vmlinux 0xc872fd85 in6addr_interfacelocal_allnodes +EXPORT_SYMBOL vmlinux 0xc8755f75 qdisc_list_add +EXPORT_SYMBOL vmlinux 0xc87b2908 inode_newsize_ok +EXPORT_SYMBOL vmlinux 0xc884c591 ab3100_event_unregister +EXPORT_SYMBOL vmlinux 0xc890c008 zlib_deflateEnd +EXPORT_SYMBOL vmlinux 0xc897c382 sg_init_table +EXPORT_SYMBOL vmlinux 0xc8a91f5b cpumask_local_spread +EXPORT_SYMBOL vmlinux 0xc8b22048 led_blink_set_oneshot +EXPORT_SYMBOL vmlinux 0xc8b57c27 autoremove_wake_function +EXPORT_SYMBOL vmlinux 0xc8c5b056 gen_pool_alloc +EXPORT_SYMBOL vmlinux 0xc8d6e9b2 pci_find_hose_for_OF_device +EXPORT_SYMBOL vmlinux 0xc8e0a723 of_get_next_child +EXPORT_SYMBOL vmlinux 0xc9055315 start_tty +EXPORT_SYMBOL vmlinux 0xc911b9d5 eth_get_headlen +EXPORT_SYMBOL vmlinux 0xc929bf34 to_ndd +EXPORT_SYMBOL vmlinux 0xc92dc349 udplite_prot +EXPORT_SYMBOL vmlinux 0xc936f614 dev_uc_add_excl +EXPORT_SYMBOL vmlinux 0xc93fbc54 wait_for_completion_io +EXPORT_SYMBOL vmlinux 0xc94ba59a xfrm_stateonly_find +EXPORT_SYMBOL vmlinux 0xc955b832 tcp_rtx_synack +EXPORT_SYMBOL vmlinux 0xc962d464 eth_header_cache_update +EXPORT_SYMBOL vmlinux 0xc9634df9 in6addr_linklocal_allrouters +EXPORT_SYMBOL vmlinux 0xc98f5c23 abx500_event_registers_startup_state_get +EXPORT_SYMBOL vmlinux 0xc99e2a55 twl_rev +EXPORT_SYMBOL vmlinux 0xc9a88b11 pci_request_regions_exclusive +EXPORT_SYMBOL vmlinux 0xc9d176bc nvdimm_bus_lock +EXPORT_SYMBOL vmlinux 0xc9e3e678 tty_port_raise_dtr_rts +EXPORT_SYMBOL vmlinux 0xc9ebfd23 tty_port_free_xmit_buf +EXPORT_SYMBOL vmlinux 0xca0f4667 readlink_copy +EXPORT_SYMBOL vmlinux 0xca223f82 generic_perform_write +EXPORT_SYMBOL vmlinux 0xca22fead request_key_with_auxdata +EXPORT_SYMBOL vmlinux 0xca2b1cd6 ida_pre_get +EXPORT_SYMBOL vmlinux 0xca317ff9 vga_get +EXPORT_SYMBOL vmlinux 0xca38b254 netdev_lower_get_next +EXPORT_SYMBOL vmlinux 0xca4124f1 __get_user_pages +EXPORT_SYMBOL vmlinux 0xca4440e6 scsi_block_when_processing_errors +EXPORT_SYMBOL vmlinux 0xca5e50ee vc_cons +EXPORT_SYMBOL vmlinux 0xca6ba874 tty_insert_flip_string_fixed_flag +EXPORT_SYMBOL vmlinux 0xca75870b inet_frag_destroy +EXPORT_SYMBOL vmlinux 0xca81b146 sock_no_connect +EXPORT_SYMBOL vmlinux 0xca9360b5 rb_next +EXPORT_SYMBOL vmlinux 0xcac26d7b skb_copy_datagram_iter +EXPORT_SYMBOL vmlinux 0xcacd272d atomic64_sub_return +EXPORT_SYMBOL vmlinux 0xcace6297 idr_is_empty +EXPORT_SYMBOL vmlinux 0xcaf2c603 scsi_sd_pm_domain +EXPORT_SYMBOL vmlinux 0xcb0288ea ledtrig_cpu +EXPORT_SYMBOL vmlinux 0xcb0faa5d vme_register_bridge +EXPORT_SYMBOL vmlinux 0xcb334b47 ps2_sendbyte +EXPORT_SYMBOL vmlinux 0xcb3d03e9 nf_ip6_checksum +EXPORT_SYMBOL vmlinux 0xcb4d2345 i2c_smbus_write_i2c_block_data +EXPORT_SYMBOL vmlinux 0xcb4e2aab tty_port_open +EXPORT_SYMBOL vmlinux 0xcb5d6b1f mach_c293_pcie +EXPORT_SYMBOL vmlinux 0xcb769db2 page_zero_new_buffers +EXPORT_SYMBOL vmlinux 0xcb7bdc20 nf_ip_checksum +EXPORT_SYMBOL vmlinux 0xcb850cf3 vme_irq_handler +EXPORT_SYMBOL vmlinux 0xcb9057db skb_copy_expand +EXPORT_SYMBOL vmlinux 0xcbabcd8c block_read_full_page +EXPORT_SYMBOL vmlinux 0xcbb68600 da903x_query_status +EXPORT_SYMBOL vmlinux 0xcbbdce02 vme_slave_request +EXPORT_SYMBOL vmlinux 0xcbbf0a6f audit_log_task_context +EXPORT_SYMBOL vmlinux 0xcbc9557f unregister_sysrq_key +EXPORT_SYMBOL vmlinux 0xcbd6c956 find_get_pages_tag +EXPORT_SYMBOL vmlinux 0xcbeac4be hdmi_avi_infoframe_pack +EXPORT_SYMBOL vmlinux 0xcc17504d _raw_read_unlock_irqrestore +EXPORT_SYMBOL vmlinux 0xcc1beaf8 kernel_recvmsg +EXPORT_SYMBOL vmlinux 0xcc248d26 serial8250_suspend_port +EXPORT_SYMBOL vmlinux 0xcc319812 dma_find_channel +EXPORT_SYMBOL vmlinux 0xcc33d5ca dm_kcopyd_zero +EXPORT_SYMBOL vmlinux 0xcc3a3e97 tcp_v4_md5_lookup +EXPORT_SYMBOL vmlinux 0xcc5005fe msleep_interruptible +EXPORT_SYMBOL vmlinux 0xcc779c7e __sk_backlog_rcv +EXPORT_SYMBOL vmlinux 0xcc8e13e9 blkdev_issue_zeroout +EXPORT_SYMBOL vmlinux 0xccc21f5e input_get_new_minor +EXPORT_SYMBOL vmlinux 0xccc7daa8 bitmap_unplug +EXPORT_SYMBOL vmlinux 0xccfef64f skb_flow_dissector_init +EXPORT_SYMBOL vmlinux 0xcd02fec1 seq_put_decimal_ll +EXPORT_SYMBOL vmlinux 0xcd0529c7 _raw_spin_lock_irq +EXPORT_SYMBOL vmlinux 0xcd0a8c2c scsi_print_result +EXPORT_SYMBOL vmlinux 0xcd18890b tcp_v4_destroy_sock +EXPORT_SYMBOL vmlinux 0xcd194e0b nf_unregister_hooks +EXPORT_SYMBOL vmlinux 0xcd279169 nla_find +EXPORT_SYMBOL vmlinux 0xcd43821f register_md_cluster_operations +EXPORT_SYMBOL vmlinux 0xcd6d8eda dev_alloc_name +EXPORT_SYMBOL vmlinux 0xcd7ede2a seqno_fence_ops +EXPORT_SYMBOL vmlinux 0xcd7f68de sk_net_capable +EXPORT_SYMBOL vmlinux 0xcd831c5d param_get_ulong +EXPORT_SYMBOL vmlinux 0xcd86c87f __cond_resched_lock +EXPORT_SYMBOL vmlinux 0xcd8d36f4 flow_get_u32_src +EXPORT_SYMBOL vmlinux 0xcdc39c9e security_ismaclabel +EXPORT_SYMBOL vmlinux 0xcdfd890a scsi_host_alloc +EXPORT_SYMBOL vmlinux 0xce2840e7 irq_set_irq_wake +EXPORT_SYMBOL vmlinux 0xce298a20 __starget_for_each_device +EXPORT_SYMBOL vmlinux 0xce3b101d filemap_flush +EXPORT_SYMBOL vmlinux 0xce5ac24f zlib_inflate_workspacesize +EXPORT_SYMBOL vmlinux 0xce68f794 jbd2_journal_update_sb_errno +EXPORT_SYMBOL vmlinux 0xce830f40 mdiobus_alloc_size +EXPORT_SYMBOL vmlinux 0xce85baba update_devfreq +EXPORT_SYMBOL vmlinux 0xceab0311 strchrnul +EXPORT_SYMBOL vmlinux 0xcef51982 kstrtou16 +EXPORT_SYMBOL vmlinux 0xcefcd99a serial8250_unregister_port +EXPORT_SYMBOL vmlinux 0xcf10c124 sock_sendmsg +EXPORT_SYMBOL vmlinux 0xcf1b5ff3 sys_copyarea +EXPORT_SYMBOL vmlinux 0xcf1d7646 isa_mem_base +EXPORT_SYMBOL vmlinux 0xcf399527 try_to_free_buffers +EXPORT_SYMBOL vmlinux 0xcf4075f1 dump_skip +EXPORT_SYMBOL vmlinux 0xcf562f02 dup_iter +EXPORT_SYMBOL vmlinux 0xcf5a12bb pci_add_new_bus +EXPORT_SYMBOL vmlinux 0xcf609831 __init_rwsem +EXPORT_SYMBOL vmlinux 0xcf901a5a __inode_permission +EXPORT_SYMBOL vmlinux 0xd00bbb17 md_check_recovery +EXPORT_SYMBOL vmlinux 0xd0152df6 jbd2_journal_start_commit +EXPORT_SYMBOL vmlinux 0xd023cfa8 __bio_clone_fast +EXPORT_SYMBOL vmlinux 0xd025b231 kthread_create_on_node +EXPORT_SYMBOL vmlinux 0xd02b149a single_open_size +EXPORT_SYMBOL vmlinux 0xd033cabc inet_proto_csum_replace16 +EXPORT_SYMBOL vmlinux 0xd0709029 ioctl_by_bdev +EXPORT_SYMBOL vmlinux 0xd0720a17 on_each_cpu_cond +EXPORT_SYMBOL vmlinux 0xd08c1c15 gnet_stats_copy_rate_est +EXPORT_SYMBOL vmlinux 0xd09b0199 fence_context_alloc +EXPORT_SYMBOL vmlinux 0xd09b73de netdev_change_features +EXPORT_SYMBOL vmlinux 0xd0a07d65 dcb_ieee_delapp +EXPORT_SYMBOL vmlinux 0xd0a2847c sha_init +EXPORT_SYMBOL vmlinux 0xd0a29279 dev_uc_unsync +EXPORT_SYMBOL vmlinux 0xd0a91bab skip_spaces +EXPORT_SYMBOL vmlinux 0xd0d2ff14 simple_nosetlease +EXPORT_SYMBOL vmlinux 0xd0d77c0a from_kuid +EXPORT_SYMBOL vmlinux 0xd0ee38b8 schedule_timeout_uninterruptible +EXPORT_SYMBOL vmlinux 0xd0f36f0d audit_log_format +EXPORT_SYMBOL vmlinux 0xd0fb7cd4 __tasklet_hi_schedule_first +EXPORT_SYMBOL vmlinux 0xd0fef3b2 agp_free_key +EXPORT_SYMBOL vmlinux 0xd105d2c6 input_reset_device +EXPORT_SYMBOL vmlinux 0xd12aa163 xfrm6_rcv_cb +EXPORT_SYMBOL vmlinux 0xd1450fa0 sg_miter_stop +EXPORT_SYMBOL vmlinux 0xd1816f32 frontswap_writethrough +EXPORT_SYMBOL vmlinux 0xd188eac1 inet_rtx_syn_ack +EXPORT_SYMBOL vmlinux 0xd18bde2b md_set_array_sectors +EXPORT_SYMBOL vmlinux 0xd196c9be kstrtos16_from_user +EXPORT_SYMBOL vmlinux 0xd1a6522e elv_dispatch_sort +EXPORT_SYMBOL vmlinux 0xd1a9b171 param_get_short +EXPORT_SYMBOL vmlinux 0xd1ae2f22 xfrm_state_walk_done +EXPORT_SYMBOL vmlinux 0xd1bd1938 grab_cache_page_write_begin +EXPORT_SYMBOL vmlinux 0xd1c84dfb hdmi_audio_infoframe_pack +EXPORT_SYMBOL vmlinux 0xd1cbadeb genphy_restart_aneg +EXPORT_SYMBOL vmlinux 0xd1cc54be kmem_cache_shrink +EXPORT_SYMBOL vmlinux 0xd1d3d43a padata_register_cpumask_notifier +EXPORT_SYMBOL vmlinux 0xd1d87e92 scsi_mlreturn_string +EXPORT_SYMBOL vmlinux 0xd1ded712 copy_strings_kernel +EXPORT_SYMBOL vmlinux 0xd1e3f3c4 unregister_sysctl_table +EXPORT_SYMBOL vmlinux 0xd1ecf2cb vfs_mkdir +EXPORT_SYMBOL vmlinux 0xd1edc69c udp_lib_unhash +EXPORT_SYMBOL vmlinux 0xd1f0fb27 dev_emerg +EXPORT_SYMBOL vmlinux 0xd2019033 elv_rb_latter_request +EXPORT_SYMBOL vmlinux 0xd2059d5a input_set_capability +EXPORT_SYMBOL vmlinux 0xd20f591c cfb_fillrect +EXPORT_SYMBOL vmlinux 0xd220cf8a jiffies_to_timespec +EXPORT_SYMBOL vmlinux 0xd2232a4a rwsem_down_read_failed +EXPORT_SYMBOL vmlinux 0xd22dfa61 lock_two_nondirectories +EXPORT_SYMBOL vmlinux 0xd231610c dma_async_tx_descriptor_init +EXPORT_SYMBOL vmlinux 0xd2401095 rtmsg_ifinfo +EXPORT_SYMBOL vmlinux 0xd251d7b0 security_socket_getpeersec_dgram +EXPORT_SYMBOL vmlinux 0xd254a4a0 clkdev_alloc +EXPORT_SYMBOL vmlinux 0xd2555f19 jiffies_64_to_clock_t +EXPORT_SYMBOL vmlinux 0xd25d0abf nla_put +EXPORT_SYMBOL vmlinux 0xd25d4f74 console_blank_hook +EXPORT_SYMBOL vmlinux 0xd27b25dd blk_check_plugged +EXPORT_SYMBOL vmlinux 0xd2ab90f8 xfrm4_protocol_deregister +EXPORT_SYMBOL vmlinux 0xd2af138b reservation_ww_class +EXPORT_SYMBOL vmlinux 0xd2b18634 tty_wait_until_sent +EXPORT_SYMBOL vmlinux 0xd2c6b745 param_set_copystring +EXPORT_SYMBOL vmlinux 0xd2d82711 __skb_gro_checksum_complete +EXPORT_SYMBOL vmlinux 0xd2da1048 register_netdevice_notifier +EXPORT_SYMBOL vmlinux 0xd2e19399 tcf_em_unregister +EXPORT_SYMBOL vmlinux 0xd2fc19bd proc_doulongvec_ms_jiffies_minmax +EXPORT_SYMBOL vmlinux 0xd3044a6c d_path +EXPORT_SYMBOL vmlinux 0xd31ccb06 of_machine_is_compatible +EXPORT_SYMBOL vmlinux 0xd345cabf __cleancache_init_shared_fs +EXPORT_SYMBOL vmlinux 0xd34ad3ca mipi_dsi_dcs_set_display_off +EXPORT_SYMBOL vmlinux 0xd358fe18 seq_release_private +EXPORT_SYMBOL vmlinux 0xd35b8b9f vme_dma_list_add +EXPORT_SYMBOL vmlinux 0xd36f94f4 __devm_gpiod_get_index_optional +EXPORT_SYMBOL vmlinux 0xd36fcf6c rawv6_mh_filter_unregister +EXPORT_SYMBOL vmlinux 0xd37d633a set_binfmt +EXPORT_SYMBOL vmlinux 0xd37e1b98 call_usermodehelper_exec +EXPORT_SYMBOL vmlinux 0xd3801eaa vga_tryget +EXPORT_SYMBOL vmlinux 0xd3b47903 make_kprojid +EXPORT_SYMBOL vmlinux 0xd3f3b8cf cancel_dirty_page +EXPORT_SYMBOL vmlinux 0xd3fa77b9 kdb_current_task +EXPORT_SYMBOL vmlinux 0xd44af469 netdev_class_create_file_ns +EXPORT_SYMBOL vmlinux 0xd44b7e21 to_tm +EXPORT_SYMBOL vmlinux 0xd47d956a __kfree_skb +EXPORT_SYMBOL vmlinux 0xd4940862 padata_do_serial +EXPORT_SYMBOL vmlinux 0xd4ab3ea7 mipi_dsi_dcs_read +EXPORT_SYMBOL vmlinux 0xd4b8c457 rtnetlink_put_metrics +EXPORT_SYMBOL vmlinux 0xd4d39ca0 crypto_sha256_finup +EXPORT_SYMBOL vmlinux 0xd4df21ec skb_clone_sk +EXPORT_SYMBOL vmlinux 0xd5100398 register_gifconf +EXPORT_SYMBOL vmlinux 0xd52248d5 seq_dentry +EXPORT_SYMBOL vmlinux 0xd53d1b62 input_mt_drop_unused +EXPORT_SYMBOL vmlinux 0xd5407792 __skb_get_hash_flowi4 +EXPORT_SYMBOL vmlinux 0xd54f41ce try_to_del_timer_sync +EXPORT_SYMBOL vmlinux 0xd571ac36 wait_for_key_construction +EXPORT_SYMBOL vmlinux 0xd584510a rtnl_unicast +EXPORT_SYMBOL vmlinux 0xd5871f90 __skb_flow_get_ports +EXPORT_SYMBOL vmlinux 0xd5958f5f of_root +EXPORT_SYMBOL vmlinux 0xd597604a dev_load +EXPORT_SYMBOL vmlinux 0xd5a83185 ip6_find_1stfragopt +EXPORT_SYMBOL vmlinux 0xd5bc1704 dma_pool_create +EXPORT_SYMBOL vmlinux 0xd5e8444a __div64_32 +EXPORT_SYMBOL vmlinux 0xd5f1309e kill_fasync +EXPORT_SYMBOL vmlinux 0xd5f52d4f netdev_rss_key_fill +EXPORT_SYMBOL vmlinux 0xd5ffcd76 skb_ensure_writable +EXPORT_SYMBOL vmlinux 0xd606503d register_sysctl +EXPORT_SYMBOL vmlinux 0xd616683a ecryptfs_fill_auth_tok +EXPORT_SYMBOL vmlinux 0xd61b7cae netdev_printk +EXPORT_SYMBOL vmlinux 0xd627480b strncat +EXPORT_SYMBOL vmlinux 0xd62c833f schedule_timeout +EXPORT_SYMBOL vmlinux 0xd648e564 fb_match_mode +EXPORT_SYMBOL vmlinux 0xd66e8d2a skb_realloc_headroom +EXPORT_SYMBOL vmlinux 0xd688716b dm_kcopyd_client_create +EXPORT_SYMBOL vmlinux 0xd69b30e0 atomic64_add_unless +EXPORT_SYMBOL vmlinux 0xd6b1b253 page_waitqueue +EXPORT_SYMBOL vmlinux 0xd6cdeb01 generic_pipe_buf_release +EXPORT_SYMBOL vmlinux 0xd6d0f568 wait_iff_congested +EXPORT_SYMBOL vmlinux 0xd6d63e9d lg_local_lock_cpu +EXPORT_SYMBOL vmlinux 0xd6e6125d inet_ioctl +EXPORT_SYMBOL vmlinux 0xd6ee688f vmalloc +EXPORT_SYMBOL vmlinux 0xd6f2469b inet6_ioctl +EXPORT_SYMBOL vmlinux 0xd75c79df smp_call_function +EXPORT_SYMBOL vmlinux 0xd75f42b2 blk_limits_io_opt +EXPORT_SYMBOL vmlinux 0xd760c775 skb_coalesce_rx_frag +EXPORT_SYMBOL vmlinux 0xd7618282 bio_integrity_prep +EXPORT_SYMBOL vmlinux 0xd761a383 ioremap_prot +EXPORT_SYMBOL vmlinux 0xd7690717 mipi_dsi_attach +EXPORT_SYMBOL vmlinux 0xd77fed53 of_mm_gpiochip_add +EXPORT_SYMBOL vmlinux 0xd78e6f89 security_skb_classify_flow +EXPORT_SYMBOL vmlinux 0xd797b9a5 vme_master_write +EXPORT_SYMBOL vmlinux 0xd7b6b5a2 trace_print_array_seq +EXPORT_SYMBOL vmlinux 0xd7bc1a8d input_handler_for_each_handle +EXPORT_SYMBOL vmlinux 0xd7d25198 param_ops_byte +EXPORT_SYMBOL vmlinux 0xd7e3d663 skb_abort_seq_read +EXPORT_SYMBOL vmlinux 0xd7e56a4e simple_strtoll +EXPORT_SYMBOL vmlinux 0xd7ea7094 nf_unregister_queue_handler +EXPORT_SYMBOL vmlinux 0xd820fca0 security_file_permission +EXPORT_SYMBOL vmlinux 0xd82b8f99 seq_open +EXPORT_SYMBOL vmlinux 0xd83e9cb3 up_write +EXPORT_SYMBOL vmlinux 0xd84c43a6 lockref_put_return +EXPORT_SYMBOL vmlinux 0xd85833cb __kfifo_dma_out_prepare_r +EXPORT_SYMBOL vmlinux 0xd85d6c72 alloc_netdev_mqs +EXPORT_SYMBOL vmlinux 0xd8631b87 elv_rb_add +EXPORT_SYMBOL vmlinux 0xd868a3c5 d_hash_and_lookup +EXPORT_SYMBOL vmlinux 0xd8754a66 __nd_driver_register +EXPORT_SYMBOL vmlinux 0xd88e4afb splice_direct_to_actor +EXPORT_SYMBOL vmlinux 0xd892b4c3 dquot_writeback_dquots +EXPORT_SYMBOL vmlinux 0xd89da37f movable_zone +EXPORT_SYMBOL vmlinux 0xd8a994eb scsi_extd_sense_format +EXPORT_SYMBOL vmlinux 0xd8aa0344 ip_options_compile +EXPORT_SYMBOL vmlinux 0xd8bf17fa open_check_o_direct +EXPORT_SYMBOL vmlinux 0xd8bf7e7e serial8250_do_pm +EXPORT_SYMBOL vmlinux 0xd8c111a1 user_path_at_empty +EXPORT_SYMBOL vmlinux 0xd8c2d625 ip_mc_leave_group +EXPORT_SYMBOL vmlinux 0xd8d16998 kmap_high +EXPORT_SYMBOL vmlinux 0xd8ded085 radix_tree_maybe_preload +EXPORT_SYMBOL vmlinux 0xd8dfe4ba sock_kzfree_s +EXPORT_SYMBOL vmlinux 0xd8e484f0 register_chrdev_region +EXPORT_SYMBOL vmlinux 0xd8f492c0 sock_queue_err_skb +EXPORT_SYMBOL vmlinux 0xd8f6b6cf filemap_fault +EXPORT_SYMBOL vmlinux 0xd8fe589c swiotlb_unmap_sg +EXPORT_SYMBOL vmlinux 0xd904b754 jbd2_journal_destroy +EXPORT_SYMBOL vmlinux 0xd91d4a02 phy_register_fixup_for_id +EXPORT_SYMBOL vmlinux 0xd9483e15 mfd_add_devices +EXPORT_SYMBOL vmlinux 0xd9498b22 proc_dointvec +EXPORT_SYMBOL vmlinux 0xd95d9480 uart_write_wakeup +EXPORT_SYMBOL vmlinux 0xd9666137 vlan_vids_add_by_dev +EXPORT_SYMBOL vmlinux 0xd970900d disk_stack_limits +EXPORT_SYMBOL vmlinux 0xd975d020 dm_io +EXPORT_SYMBOL vmlinux 0xd97d80f3 sock_queue_rcv_skb +EXPORT_SYMBOL vmlinux 0xd985dc99 mempool_free_pages +EXPORT_SYMBOL vmlinux 0xd9971cf4 blk_mq_run_hw_queues +EXPORT_SYMBOL vmlinux 0xd99ef9cb blkdev_reread_part +EXPORT_SYMBOL vmlinux 0xd9b17a64 devm_devfreq_add_device +EXPORT_SYMBOL vmlinux 0xd9bac924 tty_termios_copy_hw +EXPORT_SYMBOL vmlinux 0xd9ce8f0c strnlen +EXPORT_SYMBOL vmlinux 0xd9d35ab9 dquot_claim_space_nodirty +EXPORT_SYMBOL vmlinux 0xd9d8fd16 register_restart_handler +EXPORT_SYMBOL vmlinux 0xd9f844ae abx500_get_chip_id +EXPORT_SYMBOL vmlinux 0xda2c4663 jbd2_journal_forget +EXPORT_SYMBOL vmlinux 0xda35033b ip_defrag +EXPORT_SYMBOL vmlinux 0xda35875e inet6_del_protocol +EXPORT_SYMBOL vmlinux 0xda3b0cd4 inet_put_port +EXPORT_SYMBOL vmlinux 0xda3d10a8 security_tun_dev_open +EXPORT_SYMBOL vmlinux 0xda46a832 pci_enable_msi_range +EXPORT_SYMBOL vmlinux 0xda4a77f8 dst_discard_sk +EXPORT_SYMBOL vmlinux 0xda510a2f unregister_cdrom +EXPORT_SYMBOL vmlinux 0xda61ba95 tcp_prequeue +EXPORT_SYMBOL vmlinux 0xda7ca6cb fb_mode_is_equal +EXPORT_SYMBOL vmlinux 0xda8714bc blk_start_queue +EXPORT_SYMBOL vmlinux 0xda8af7ad fb_find_nearest_mode +EXPORT_SYMBOL vmlinux 0xdaa13748 ip_cmsg_recv_offset +EXPORT_SYMBOL vmlinux 0xdaa57ec3 totalhigh_pages +EXPORT_SYMBOL vmlinux 0xdabc1ea8 fsl_lbc_find +EXPORT_SYMBOL vmlinux 0xdac4913a bitmap_allocate_region +EXPORT_SYMBOL vmlinux 0xdac600b7 bio_integrity_add_page +EXPORT_SYMBOL vmlinux 0xdac61ad9 mmc_add_host +EXPORT_SYMBOL vmlinux 0xdb01198e fsl_upm_find +EXPORT_SYMBOL vmlinux 0xdb0d99c4 end_page_writeback +EXPORT_SYMBOL vmlinux 0xdb31fccc fifo_create_dflt +EXPORT_SYMBOL vmlinux 0xdb36dd7f force_sig +EXPORT_SYMBOL vmlinux 0xdb500e3a xfrm_policy_unregister_afinfo +EXPORT_SYMBOL vmlinux 0xdb68bbad rfkill_destroy +EXPORT_SYMBOL vmlinux 0xdb71a32b __secpath_destroy +EXPORT_SYMBOL vmlinux 0xdb733370 param_get_long +EXPORT_SYMBOL vmlinux 0xdb760f52 __kfifo_free +EXPORT_SYMBOL vmlinux 0xdb907926 vm_insert_mixed +EXPORT_SYMBOL vmlinux 0xdb9fe73c phy_driver_register +EXPORT_SYMBOL vmlinux 0xdba694ae neigh_connected_output +EXPORT_SYMBOL vmlinux 0xdbc585c2 scsi_track_queue_full +EXPORT_SYMBOL vmlinux 0xdbe431b9 blkdev_put +EXPORT_SYMBOL vmlinux 0xdbe45357 sock_recv_errqueue +EXPORT_SYMBOL vmlinux 0xdbe97464 jbd2_journal_dirty_metadata +EXPORT_SYMBOL vmlinux 0xdbf79f90 simple_transaction_get +EXPORT_SYMBOL vmlinux 0xdbfd06ed twl6040_clear_bits +EXPORT_SYMBOL vmlinux 0xdc047fc4 scsi_dev_info_list_add_keyed +EXPORT_SYMBOL vmlinux 0xdc0c00b5 __seq_open_private +EXPORT_SYMBOL vmlinux 0xdc14eda7 pci_pci_problems +EXPORT_SYMBOL vmlinux 0xdc24eef6 tcp_proto_cgroup +EXPORT_SYMBOL vmlinux 0xdc3fcbc9 __sw_hweight8 +EXPORT_SYMBOL vmlinux 0xdc449c59 sock_diag_put_filterinfo +EXPORT_SYMBOL vmlinux 0xdc512134 backlight_register_notifier +EXPORT_SYMBOL vmlinux 0xdc5cef43 security_path_symlink +EXPORT_SYMBOL vmlinux 0xdc63806f do_splice_from +EXPORT_SYMBOL vmlinux 0xdc67f460 simple_release_fs +EXPORT_SYMBOL vmlinux 0xdc6ef426 tcf_hash_cleanup +EXPORT_SYMBOL vmlinux 0xdc823f28 key_link +EXPORT_SYMBOL vmlinux 0xdc9498dd down +EXPORT_SYMBOL vmlinux 0xdc95d192 fbcon_rotate_ud +EXPORT_SYMBOL vmlinux 0xdcb0349b sys_close +EXPORT_SYMBOL vmlinux 0xdcbdabd4 __break_lease +EXPORT_SYMBOL vmlinux 0xdcc67a0d flush_dcache_page +EXPORT_SYMBOL vmlinux 0xdccc4c1c fb_get_buffer_offset +EXPORT_SYMBOL vmlinux 0xdcd20b52 prepare_kernel_cred +EXPORT_SYMBOL vmlinux 0xdcf68219 console_start +EXPORT_SYMBOL vmlinux 0xdcfa06cb may_umount_tree +EXPORT_SYMBOL vmlinux 0xdd0a2ba2 strlcat +EXPORT_SYMBOL vmlinux 0xdd27fa87 memchr +EXPORT_SYMBOL vmlinux 0xdd35d5de clk_register_clkdevs +EXPORT_SYMBOL vmlinux 0xdd668777 vme_register_driver +EXPORT_SYMBOL vmlinux 0xdd7f78f8 pci_bus_get +EXPORT_SYMBOL vmlinux 0xdd898b54 generic_file_llseek_size +EXPORT_SYMBOL vmlinux 0xdd8cab82 phy_start_interrupts +EXPORT_SYMBOL vmlinux 0xdd9030af current_stack_pointer +EXPORT_SYMBOL vmlinux 0xdd922e6b __mmc_claim_host +EXPORT_SYMBOL vmlinux 0xdda8ea93 jbd2_journal_stop +EXPORT_SYMBOL vmlinux 0xddab722e __inc_zone_page_state +EXPORT_SYMBOL vmlinux 0xddda040c __find_get_block +EXPORT_SYMBOL vmlinux 0xdddfeadb mmc_detect_card_removed +EXPORT_SYMBOL vmlinux 0xdde8f5fb pagecache_get_page +EXPORT_SYMBOL vmlinux 0xddf0cd60 skb_checksum_setup +EXPORT_SYMBOL vmlinux 0xddf90b4b __dev_get_by_index +EXPORT_SYMBOL vmlinux 0xde0838d1 __blockdev_direct_IO +EXPORT_SYMBOL vmlinux 0xde096404 __d_drop +EXPORT_SYMBOL vmlinux 0xde112c4b read_dev_sector +EXPORT_SYMBOL vmlinux 0xde2a3251 audit_log_task_info +EXPORT_SYMBOL vmlinux 0xde41138e gen_replace_estimator +EXPORT_SYMBOL vmlinux 0xde48e9ca _raw_spin_lock +EXPORT_SYMBOL vmlinux 0xde4b39a6 setup_arg_pages +EXPORT_SYMBOL vmlinux 0xde636eb6 pci_disable_msix +EXPORT_SYMBOL vmlinux 0xde7388b0 of_get_mac_address +EXPORT_SYMBOL vmlinux 0xde7ef899 ata_print_version +EXPORT_SYMBOL vmlinux 0xde7f4ebd module_layout +EXPORT_SYMBOL vmlinux 0xde84f178 dev_get_phys_port_id +EXPORT_SYMBOL vmlinux 0xde9360ba totalram_pages +EXPORT_SYMBOL vmlinux 0xde9b17ed agp3_generic_fetch_size +EXPORT_SYMBOL vmlinux 0xdeb31c29 textsearch_find_continuous +EXPORT_SYMBOL vmlinux 0xdec0641d dquot_quota_sync +EXPORT_SYMBOL vmlinux 0xdecf5056 skb_queue_purge +EXPORT_SYMBOL vmlinux 0xded00990 jbd2_journal_init_jbd_inode +EXPORT_SYMBOL vmlinux 0xded931f3 resource_list_create_entry +EXPORT_SYMBOL vmlinux 0xdede0000 cdev_del +EXPORT_SYMBOL vmlinux 0xdee6c0dc eth_prepare_mac_addr_change +EXPORT_SYMBOL vmlinux 0xdf0413c9 fb_show_logo +EXPORT_SYMBOL vmlinux 0xdf06169a pm860x_set_bits +EXPORT_SYMBOL vmlinux 0xdf0be21a tty_do_resize +EXPORT_SYMBOL vmlinux 0xdf1b4c8c mmc_erase +EXPORT_SYMBOL vmlinux 0xdf1b8f13 bitmap_startwrite +EXPORT_SYMBOL vmlinux 0xdf1d4e17 nd_integrity_init +EXPORT_SYMBOL vmlinux 0xdf214ee2 dmam_free_noncoherent +EXPORT_SYMBOL vmlinux 0xdf2c2742 rb_last +EXPORT_SYMBOL vmlinux 0xdf3a693d crc_t10dif_update +EXPORT_SYMBOL vmlinux 0xdf3e1c08 tcp_openreq_init_rwin +EXPORT_SYMBOL vmlinux 0xdf40a5b6 rwsem_down_write_failed +EXPORT_SYMBOL vmlinux 0xdf54a8f7 netlink_unregister_notifier +EXPORT_SYMBOL vmlinux 0xdf60cc27 __print_symbol +EXPORT_SYMBOL vmlinux 0xdf69cdc3 led_set_brightness +EXPORT_SYMBOL vmlinux 0xdf73cbf8 tcp_v4_mtu_reduced +EXPORT_SYMBOL vmlinux 0xdf876af9 mmc_can_secure_erase_trim +EXPORT_SYMBOL vmlinux 0xdf929370 fs_overflowgid +EXPORT_SYMBOL vmlinux 0xdfd948b6 blk_mq_alloc_tag_set +EXPORT_SYMBOL vmlinux 0xdff23762 fb_set_cmap +EXPORT_SYMBOL vmlinux 0xdff43ed4 __debugger +EXPORT_SYMBOL vmlinux 0xdff905e5 vme_slave_free +EXPORT_SYMBOL vmlinux 0xdffe744b dmam_alloc_noncoherent +EXPORT_SYMBOL vmlinux 0xe0022913 inode_permission +EXPORT_SYMBOL vmlinux 0xe002f619 mdiobus_write +EXPORT_SYMBOL vmlinux 0xe01561b9 inet6_del_offload +EXPORT_SYMBOL vmlinux 0xe02ef238 textsearch_destroy +EXPORT_SYMBOL vmlinux 0xe033b1f3 pcie_capability_write_dword +EXPORT_SYMBOL vmlinux 0xe04f7caa dm_read_arg_group +EXPORT_SYMBOL vmlinux 0xe04fdea0 blk_mq_unique_tag +EXPORT_SYMBOL vmlinux 0xe06141e9 security_sk_clone +EXPORT_SYMBOL vmlinux 0xe06ac3cd inet_proto_csum_replace4 +EXPORT_SYMBOL vmlinux 0xe075d6eb iter_div_u64_rem +EXPORT_SYMBOL vmlinux 0xe083e246 gen_pool_first_fit_order_align +EXPORT_SYMBOL vmlinux 0xe084ad53 tcp_getsockopt +EXPORT_SYMBOL vmlinux 0xe0871005 phy_init_eee +EXPORT_SYMBOL vmlinux 0xe088db25 vfs_llseek +EXPORT_SYMBOL vmlinux 0xe09d92e7 pci_platform_rom +EXPORT_SYMBOL vmlinux 0xe0a02891 mipi_dsi_dcs_write_buffer +EXPORT_SYMBOL vmlinux 0xe0ab78fe user_revoke +EXPORT_SYMBOL vmlinux 0xe0ac26ee rawv6_mh_filter_register +EXPORT_SYMBOL vmlinux 0xe0b13336 argv_free +EXPORT_SYMBOL vmlinux 0xe0c8432e dev_vprintk_emit +EXPORT_SYMBOL vmlinux 0xe0dec7e6 skb_push +EXPORT_SYMBOL vmlinux 0xe0e610e2 agp_generic_alloc_page +EXPORT_SYMBOL vmlinux 0xe113bbbc csum_partial +EXPORT_SYMBOL vmlinux 0xe1353c8e unmap_mapping_range +EXPORT_SYMBOL vmlinux 0xe16388eb misc_register +EXPORT_SYMBOL vmlinux 0xe1761617 security_inet_conn_request +EXPORT_SYMBOL vmlinux 0xe1786c32 make_flow_keys_digest +EXPORT_SYMBOL vmlinux 0xe18e2262 inetdev_by_index +EXPORT_SYMBOL vmlinux 0xe1976b18 abx500_mask_and_set_register_interruptible +EXPORT_SYMBOL vmlinux 0xe1a0dca1 alloc_anon_inode +EXPORT_SYMBOL vmlinux 0xe1ad3517 bio_uncopy_user +EXPORT_SYMBOL vmlinux 0xe200f872 secure_dccpv6_sequence_number +EXPORT_SYMBOL vmlinux 0xe21281b6 cfb_copyarea +EXPORT_SYMBOL vmlinux 0xe2304303 mac_map_monitor_sense +EXPORT_SYMBOL vmlinux 0xe23ae481 blk_iopoll_complete +EXPORT_SYMBOL vmlinux 0xe23e0990 posix_acl_chmod +EXPORT_SYMBOL vmlinux 0xe24d3a97 jiffies_64 +EXPORT_SYMBOL vmlinux 0xe253d959 mpage_readpages +EXPORT_SYMBOL vmlinux 0xe2558ad8 tty_port_block_til_ready +EXPORT_SYMBOL vmlinux 0xe25684f1 d_add_ci +EXPORT_SYMBOL vmlinux 0xe263f99b __vfs_read +EXPORT_SYMBOL vmlinux 0xe29e1d0e out_of_line_wait_on_atomic_t +EXPORT_SYMBOL vmlinux 0xe2a1abe7 nf_getsockopt +EXPORT_SYMBOL vmlinux 0xe2ae04a9 ip6_route_me_harder +EXPORT_SYMBOL vmlinux 0xe2be5498 lg_global_unlock +EXPORT_SYMBOL vmlinux 0xe2d5255a strcmp +EXPORT_SYMBOL vmlinux 0xe2e36442 neigh_parms_release +EXPORT_SYMBOL vmlinux 0xe2e8065e memdup_user +EXPORT_SYMBOL vmlinux 0xe2f425e7 rps_cpu_mask +EXPORT_SYMBOL vmlinux 0xe2fae716 kmemdup +EXPORT_SYMBOL vmlinux 0xe2fd8fdc scsi_rescan_device +EXPORT_SYMBOL vmlinux 0xe312c478 kill_bdev +EXPORT_SYMBOL vmlinux 0xe319acff filemap_write_and_wait_range +EXPORT_SYMBOL vmlinux 0xe32cf4a3 skb_dequeue +EXPORT_SYMBOL vmlinux 0xe32fe425 mdiobus_register +EXPORT_SYMBOL vmlinux 0xe340fb94 pcie_capability_write_word +EXPORT_SYMBOL vmlinux 0xe3996edc poll_initwait +EXPORT_SYMBOL vmlinux 0xe3b1fafc blk_queue_alignment_offset +EXPORT_SYMBOL vmlinux 0xe3b72033 mount_subtree +EXPORT_SYMBOL vmlinux 0xe3c87eaa input_mt_report_pointer_emulation +EXPORT_SYMBOL vmlinux 0xe3d48907 phy_start +EXPORT_SYMBOL vmlinux 0xe3d6f284 fb_find_mode_cvt +EXPORT_SYMBOL vmlinux 0xe40dfd61 shrink_dcache_sb +EXPORT_SYMBOL vmlinux 0xe442387e key_validate +EXPORT_SYMBOL vmlinux 0xe450a186 agp_unbind_memory +EXPORT_SYMBOL vmlinux 0xe46b2801 sock_get_timestamp +EXPORT_SYMBOL vmlinux 0xe46c1806 km_policy_expired +EXPORT_SYMBOL vmlinux 0xe4801615 netdev_class_remove_file_ns +EXPORT_SYMBOL vmlinux 0xe481e02c filp_open +EXPORT_SYMBOL vmlinux 0xe484e35f ioread32 +EXPORT_SYMBOL vmlinux 0xe4a902a0 generic_fillattr +EXPORT_SYMBOL vmlinux 0xe4b919c1 udp_lib_get_port +EXPORT_SYMBOL vmlinux 0xe4d94571 get_gendisk +EXPORT_SYMBOL vmlinux 0xe4db3f2b input_unregister_handler +EXPORT_SYMBOL vmlinux 0xe4db5ac2 remap_vmalloc_range_partial +EXPORT_SYMBOL vmlinux 0xe4df8a5b debugfs_create_automount +EXPORT_SYMBOL vmlinux 0xe4e854b3 of_device_is_available +EXPORT_SYMBOL vmlinux 0xe4fe8ca1 _raw_spin_unlock_bh +EXPORT_SYMBOL vmlinux 0xe50615a3 mipi_dsi_set_maximum_return_packet_size +EXPORT_SYMBOL vmlinux 0xe50d8423 jbd2_journal_lock_updates +EXPORT_SYMBOL vmlinux 0xe523ad75 synchronize_irq +EXPORT_SYMBOL vmlinux 0xe5734810 __wait_on_bit_lock +EXPORT_SYMBOL vmlinux 0xe57878a1 in6_pton +EXPORT_SYMBOL vmlinux 0xe57e7e6f add_to_page_cache_locked +EXPORT_SYMBOL vmlinux 0xe5867808 dlci_ioctl_set +EXPORT_SYMBOL vmlinux 0xe5959d95 mipi_dsi_driver_register_full +EXPORT_SYMBOL vmlinux 0xe596a3d4 mmc_retune_timer_stop +EXPORT_SYMBOL vmlinux 0xe59c6c43 tcp_read_sock +EXPORT_SYMBOL vmlinux 0xe5c78a99 do_blank_screen +EXPORT_SYMBOL vmlinux 0xe5e14d93 ps2_init +EXPORT_SYMBOL vmlinux 0xe5ed5467 xfrm_policy_walk_init +EXPORT_SYMBOL vmlinux 0xe5eebcb1 skb_recv_datagram +EXPORT_SYMBOL vmlinux 0xe5f16f35 tcp_init_sock +EXPORT_SYMBOL vmlinux 0xe60eb997 free_buffer_head +EXPORT_SYMBOL vmlinux 0xe60f9291 sync_blockdev +EXPORT_SYMBOL vmlinux 0xe62c5b6f param_set_bint +EXPORT_SYMBOL vmlinux 0xe641a357 phy_ethtool_sset +EXPORT_SYMBOL vmlinux 0xe64741fd touch_buffer +EXPORT_SYMBOL vmlinux 0xe657f453 sock_from_file +EXPORT_SYMBOL vmlinux 0xe65a9042 nd_namespace_blk_validate +EXPORT_SYMBOL vmlinux 0xe66452ab dql_init +EXPORT_SYMBOL vmlinux 0xe66e41cf agp_generic_alloc_user +EXPORT_SYMBOL vmlinux 0xe689217b devm_backlight_device_unregister +EXPORT_SYMBOL vmlinux 0xe693a6ce vme_get_size +EXPORT_SYMBOL vmlinux 0xe697d108 __blk_iopoll_complete +EXPORT_SYMBOL vmlinux 0xe69fa32a serio_rescan +EXPORT_SYMBOL vmlinux 0xe6ac1d5f generic_file_read_iter +EXPORT_SYMBOL vmlinux 0xe6b654be twl6040_get_pll +EXPORT_SYMBOL vmlinux 0xe6d91716 __blk_end_request_all +EXPORT_SYMBOL vmlinux 0xe6dd236d clear_pages +EXPORT_SYMBOL vmlinux 0xe6ebc016 key_create_or_update +EXPORT_SYMBOL vmlinux 0xe6edd26c ioc_lookup_icq +EXPORT_SYMBOL vmlinux 0xe6fbe430 can_do_mlock +EXPORT_SYMBOL vmlinux 0xe71ec60b input_alloc_absinfo +EXPORT_SYMBOL vmlinux 0xe72a18e7 set_user_nice +EXPORT_SYMBOL vmlinux 0xe72fa1a7 kset_unregister +EXPORT_SYMBOL vmlinux 0xe7529b8e skb_vlan_pop +EXPORT_SYMBOL vmlinux 0xe758811f proc_mkdir +EXPORT_SYMBOL vmlinux 0xe768bb34 input_mt_init_slots +EXPORT_SYMBOL vmlinux 0xe7981b3a vme_bus_type +EXPORT_SYMBOL vmlinux 0xe799ffc9 scsi_device_lookup +EXPORT_SYMBOL vmlinux 0xe7a45e09 pci_bus_write_config_byte +EXPORT_SYMBOL vmlinux 0xe7a664c4 nf_hooks +EXPORT_SYMBOL vmlinux 0xe7a81967 audit_log_secctx +EXPORT_SYMBOL vmlinux 0xe7b6315e kblockd_schedule_delayed_work_on +EXPORT_SYMBOL vmlinux 0xe7caffee ip_mc_inc_group +EXPORT_SYMBOL vmlinux 0xe7ce7439 _memcpy_fromio +EXPORT_SYMBOL vmlinux 0xe7d4daac seq_list_next +EXPORT_SYMBOL vmlinux 0xe7e7925a iw_handler_set_spy +EXPORT_SYMBOL vmlinux 0xe7eaddbc tcp_prot +EXPORT_SYMBOL vmlinux 0xe802448c notify_change +EXPORT_SYMBOL vmlinux 0xe805d38d truncate_pagecache +EXPORT_SYMBOL vmlinux 0xe80e0f04 mach_twr_p1025 +EXPORT_SYMBOL vmlinux 0xe80e950c dquot_destroy +EXPORT_SYMBOL vmlinux 0xe81d84de scsi_host_put +EXPORT_SYMBOL vmlinux 0xe81ef1dd remove_conflicting_framebuffers +EXPORT_SYMBOL vmlinux 0xe8214184 tcf_exts_destroy +EXPORT_SYMBOL vmlinux 0xe825f75c pci_reenable_device +EXPORT_SYMBOL vmlinux 0xe82cc752 tcp_sockets_allocated +EXPORT_SYMBOL vmlinux 0xe833fa77 gen_pool_virt_to_phys +EXPORT_SYMBOL vmlinux 0xe841a7c8 genlmsg_put +EXPORT_SYMBOL vmlinux 0xe8432e0b jbd2_journal_wipe +EXPORT_SYMBOL vmlinux 0xe8525ddd of_iomap +EXPORT_SYMBOL vmlinux 0xe8616979 address_space_init_once +EXPORT_SYMBOL vmlinux 0xe86c6105 max8998_write_reg +EXPORT_SYMBOL vmlinux 0xe8798a02 set_cached_acl +EXPORT_SYMBOL vmlinux 0xe87b2edd sg_copy_buffer +EXPORT_SYMBOL vmlinux 0xe880c762 jbd2_journal_check_available_features +EXPORT_SYMBOL vmlinux 0xe893fee7 mem_cgroup_end_page_stat +EXPORT_SYMBOL vmlinux 0xe8a3a6f2 elv_rb_former_request +EXPORT_SYMBOL vmlinux 0xe8bea3bc qdisc_put_stab +EXPORT_SYMBOL vmlinux 0xe8bedacb __dev_getfirstbyhwtype +EXPORT_SYMBOL vmlinux 0xe8cb6745 inet_csk_init_xmit_timers +EXPORT_SYMBOL vmlinux 0xe8e80529 proc_set_user +EXPORT_SYMBOL vmlinux 0xe8f4fb50 of_get_address +EXPORT_SYMBOL vmlinux 0xe914e41e strcpy +EXPORT_SYMBOL vmlinux 0xe92f9c54 hdmi_infoframe_log +EXPORT_SYMBOL vmlinux 0xe9378d58 idr_get_next +EXPORT_SYMBOL vmlinux 0xe94b0ed1 mipi_dsi_dcs_soft_reset +EXPORT_SYMBOL vmlinux 0xe9519904 dquot_resume +EXPORT_SYMBOL vmlinux 0xe953b21f get_next_ino +EXPORT_SYMBOL vmlinux 0xe9664638 pci_enable_device_io +EXPORT_SYMBOL vmlinux 0xe974d11a swiotlb_sync_sg_for_cpu +EXPORT_SYMBOL vmlinux 0xe97b61f7 twl6040_set_pll +EXPORT_SYMBOL vmlinux 0xe98475e1 vfs_getxattr_alloc +EXPORT_SYMBOL vmlinux 0xe998848c scsi_eh_restore_cmnd +EXPORT_SYMBOL vmlinux 0xe99f3694 get_agp_version +EXPORT_SYMBOL vmlinux 0xe9bb4723 is_bad_inode +EXPORT_SYMBOL vmlinux 0xe9d6b01f rwsem_downgrade_wake +EXPORT_SYMBOL vmlinux 0xe9ec1be5 put_page +EXPORT_SYMBOL vmlinux 0xe9f7149c zlib_deflate_workspacesize +EXPORT_SYMBOL vmlinux 0xe9fc2913 security_inode_permission +EXPORT_SYMBOL vmlinux 0xea054b22 nla_policy_len +EXPORT_SYMBOL vmlinux 0xea12b50d dentry_update_name_case +EXPORT_SYMBOL vmlinux 0xea16dd4c tcp_destroy_cgroup +EXPORT_SYMBOL vmlinux 0xea455fa8 mach_qemu_e500 +EXPORT_SYMBOL vmlinux 0xea7987f1 key_update +EXPORT_SYMBOL vmlinux 0xea7a42f9 __sg_free_table +EXPORT_SYMBOL vmlinux 0xea968c96 ___ratelimit +EXPORT_SYMBOL vmlinux 0xeaa6197b km_new_mapping +EXPORT_SYMBOL vmlinux 0xeab28f45 ps2_command +EXPORT_SYMBOL vmlinux 0xeac7ec17 jbd2_journal_start +EXPORT_SYMBOL vmlinux 0xeb097c2c vfs_getattr_nosec +EXPORT_SYMBOL vmlinux 0xeb37101c audit_log_end +EXPORT_SYMBOL vmlinux 0xeb3869f2 iw_handler_set_thrspy +EXPORT_SYMBOL vmlinux 0xeb528487 led_blink_set +EXPORT_SYMBOL vmlinux 0xeb55267f bdget_disk +EXPORT_SYMBOL vmlinux 0xeb55a931 __kfifo_max_r +EXPORT_SYMBOL vmlinux 0xeb7160d9 tcp_disconnect +EXPORT_SYMBOL vmlinux 0xeb74199b dm_register_target +EXPORT_SYMBOL vmlinux 0xeb7fa4d7 mmc_interrupt_hpi +EXPORT_SYMBOL vmlinux 0xeb88072d netdev_info +EXPORT_SYMBOL vmlinux 0xeb8d93b5 trace_print_symbols_seq +EXPORT_SYMBOL vmlinux 0xeb8fe08d vfs_rename +EXPORT_SYMBOL vmlinux 0xeb97cd70 inet6_release +EXPORT_SYMBOL vmlinux 0xebb46840 mach_p1023_rdb +EXPORT_SYMBOL vmlinux 0xebd63dcb mb_cache_entry_free +EXPORT_SYMBOL vmlinux 0xebdce8b1 xfrm6_find_1stfragopt +EXPORT_SYMBOL vmlinux 0xebe434a6 input_free_device +EXPORT_SYMBOL vmlinux 0xec1aa6ef memzero_explicit +EXPORT_SYMBOL vmlinux 0xec4d9e3a clk_get_sys +EXPORT_SYMBOL vmlinux 0xec6712d0 forget_cached_acl +EXPORT_SYMBOL vmlinux 0xec7a8986 blk_integrity_register +EXPORT_SYMBOL vmlinux 0xec8ad421 gen_pool_dma_alloc +EXPORT_SYMBOL vmlinux 0xeca3f1c6 md_cluster_mod +EXPORT_SYMBOL vmlinux 0xeca9fa42 max8998_update_reg +EXPORT_SYMBOL vmlinux 0xecabbcc8 qdisc_watchdog_schedule_ns +EXPORT_SYMBOL vmlinux 0xecbcb8bb radix_tree_lookup_slot +EXPORT_SYMBOL vmlinux 0xeccd8690 netdev_lower_get_next_private_rcu +EXPORT_SYMBOL vmlinux 0xecd07a9c kernel_param_lock +EXPORT_SYMBOL vmlinux 0xecda0bfa locks_copy_lock +EXPORT_SYMBOL vmlinux 0xece784c2 rb_first +EXPORT_SYMBOL vmlinux 0xecfc4e3d __pci_register_driver +EXPORT_SYMBOL vmlinux 0xed24fa80 submit_bio_wait +EXPORT_SYMBOL vmlinux 0xed28e3a3 vmap +EXPORT_SYMBOL vmlinux 0xed3b687c tcp_rcv_state_process +EXPORT_SYMBOL vmlinux 0xed597524 qdisc_get_rtab +EXPORT_SYMBOL vmlinux 0xed75b495 filemap_page_mkwrite +EXPORT_SYMBOL vmlinux 0xed93f29e __kunmap_atomic +EXPORT_SYMBOL vmlinux 0xed9f9a20 __ctzsi2 +EXPORT_SYMBOL vmlinux 0xedbaee5e nla_strcmp +EXPORT_SYMBOL vmlinux 0xedc03953 iounmap +EXPORT_SYMBOL vmlinux 0xedc410d0 udplite_table +EXPORT_SYMBOL vmlinux 0xedc905c5 of_parse_phandle +EXPORT_SYMBOL vmlinux 0xee2d0fc7 _local_bh_enable +EXPORT_SYMBOL vmlinux 0xee410055 __dev_get_by_flags +EXPORT_SYMBOL vmlinux 0xee586181 unlock_buffer +EXPORT_SYMBOL vmlinux 0xee76de99 proc_remove +EXPORT_SYMBOL vmlinux 0xee91879b rb_first_postorder +EXPORT_SYMBOL vmlinux 0xee923341 sk_prot_clear_portaddr_nulls +EXPORT_SYMBOL vmlinux 0xeea9dbaf bitmap_bitremap +EXPORT_SYMBOL vmlinux 0xeed92b42 bdevname +EXPORT_SYMBOL vmlinux 0xeef161aa groups_free +EXPORT_SYMBOL vmlinux 0xeefc00f6 mark_buffer_dirty +EXPORT_SYMBOL vmlinux 0xeefdfe8b bdi_init +EXPORT_SYMBOL vmlinux 0xef0c9fed inet_csk_prepare_forced_close +EXPORT_SYMBOL vmlinux 0xef22251a __pskb_copy_fclone +EXPORT_SYMBOL vmlinux 0xef368564 blk_queue_max_segment_size +EXPORT_SYMBOL vmlinux 0xef3af8ce pcie_capability_clear_and_set_dword +EXPORT_SYMBOL vmlinux 0xef602073 generic_start_io_acct +EXPORT_SYMBOL vmlinux 0xef742ade devm_backlight_device_register +EXPORT_SYMBOL vmlinux 0xefc11c5e generic_listxattr +EXPORT_SYMBOL vmlinux 0xefd1624a vme_dma_free_attribute +EXPORT_SYMBOL vmlinux 0xefdc409a blk_init_queue_node +EXPORT_SYMBOL vmlinux 0xefdd70ce security_secid_to_secctx +EXPORT_SYMBOL vmlinux 0xefde1bbe flush_dcache_range +EXPORT_SYMBOL vmlinux 0xeff866e2 dev_get_by_index +EXPORT_SYMBOL vmlinux 0xf0009fee put_pages_list +EXPORT_SYMBOL vmlinux 0xf00c3d54 xfrm_state_update +EXPORT_SYMBOL vmlinux 0xf0175b30 dquot_mark_dquot_dirty +EXPORT_SYMBOL vmlinux 0xf017dc18 tty_register_ldisc +EXPORT_SYMBOL vmlinux 0xf0187927 __sg_page_iter_next +EXPORT_SYMBOL vmlinux 0xf01c1cbb i2c_smbus_read_byte_data +EXPORT_SYMBOL vmlinux 0xf049c381 abx500_get_register_interruptible +EXPORT_SYMBOL vmlinux 0xf0541e88 simple_readpage +EXPORT_SYMBOL vmlinux 0xf05ffa15 fb_var_to_videomode +EXPORT_SYMBOL vmlinux 0xf0605044 __test_set_page_writeback +EXPORT_SYMBOL vmlinux 0xf065f629 ioread16be +EXPORT_SYMBOL vmlinux 0xf069842e security_path_mkdir +EXPORT_SYMBOL vmlinux 0xf08b6e9d dev_disable_lro +EXPORT_SYMBOL vmlinux 0xf08c67de napi_alloc_frag +EXPORT_SYMBOL vmlinux 0xf08df4a2 xfrm_policy_register_afinfo +EXPORT_SYMBOL vmlinux 0xf097f8ae find_lock_entry +EXPORT_SYMBOL vmlinux 0xf09de776 get_random_int +EXPORT_SYMBOL vmlinux 0xf0ad2ab2 tty_driver_kref_put +EXPORT_SYMBOL vmlinux 0xf0edf0b8 i8042_remove_filter +EXPORT_SYMBOL vmlinux 0xf0ef15b4 list_sort +EXPORT_SYMBOL vmlinux 0xf10526ac verify_spi_info +EXPORT_SYMBOL vmlinux 0xf10de535 ioread8 +EXPORT_SYMBOL vmlinux 0xf118996c page_address +EXPORT_SYMBOL vmlinux 0xf11cd6ce down_interruptible +EXPORT_SYMBOL vmlinux 0xf12cadbc writeback_inodes_sb_nr +EXPORT_SYMBOL vmlinux 0xf147dcb2 hdmi_spd_infoframe_init +EXPORT_SYMBOL vmlinux 0xf14c3db0 inode_set_bytes +EXPORT_SYMBOL vmlinux 0xf15f797b __inet_hash +EXPORT_SYMBOL vmlinux 0xf1601fa3 zpool_register_driver +EXPORT_SYMBOL vmlinux 0xf18f7cbb of_device_alloc +EXPORT_SYMBOL vmlinux 0xf195c682 fb_invert_cmaps +EXPORT_SYMBOL vmlinux 0xf1969a8e __usecs_to_jiffies +EXPORT_SYMBOL vmlinux 0xf196c7f1 sock_no_sendmsg +EXPORT_SYMBOL vmlinux 0xf1aadd6b max8925_reg_read +EXPORT_SYMBOL vmlinux 0xf1d3145d fget_raw +EXPORT_SYMBOL vmlinux 0xf1d610bd ppp_unit_number +EXPORT_SYMBOL vmlinux 0xf1db1704 nla_memcpy +EXPORT_SYMBOL vmlinux 0xf1deabf2 div64_u64 +EXPORT_SYMBOL vmlinux 0xf1e06df1 gen_pool_set_algo +EXPORT_SYMBOL vmlinux 0xf1e5b731 of_clk_get_by_name +EXPORT_SYMBOL vmlinux 0xf1e7f65d sock_i_uid +EXPORT_SYMBOL vmlinux 0xf1e98c74 avenrun +EXPORT_SYMBOL vmlinux 0xf1ee74a7 of_mdio_parse_addr +EXPORT_SYMBOL vmlinux 0xf20dabd8 free_irq +EXPORT_SYMBOL vmlinux 0xf21b09a2 ndo_dflt_fdb_dump +EXPORT_SYMBOL vmlinux 0xf22881e8 lg_local_lock +EXPORT_SYMBOL vmlinux 0xf23fcb99 __kfifo_in +EXPORT_SYMBOL vmlinux 0xf2402ad1 pskb_expand_head +EXPORT_SYMBOL vmlinux 0xf2403e75 tty_name +EXPORT_SYMBOL vmlinux 0xf24e2c62 mb_cache_entry_find_next +EXPORT_SYMBOL vmlinux 0xf25cd468 kunmap_high +EXPORT_SYMBOL vmlinux 0xf2619518 dev_set_mtu +EXPORT_SYMBOL vmlinux 0xf29b5432 phy_ethtool_set_eee +EXPORT_SYMBOL vmlinux 0xf2a0af8f backlight_device_registered +EXPORT_SYMBOL vmlinux 0xf2a0b939 devfreq_register_opp_notifier +EXPORT_SYMBOL vmlinux 0xf2bc35f6 free_task +EXPORT_SYMBOL vmlinux 0xf2c2f309 follow_up +EXPORT_SYMBOL vmlinux 0xf2c43f3f zlib_deflate +EXPORT_SYMBOL vmlinux 0xf2c638e4 pci_enable_msix_range +EXPORT_SYMBOL vmlinux 0xf312f3d9 netif_device_detach +EXPORT_SYMBOL vmlinux 0xf313da4e sha_transform +EXPORT_SYMBOL vmlinux 0xf322a206 bit_waitqueue +EXPORT_SYMBOL vmlinux 0xf32f8d94 dma_common_get_sgtable +EXPORT_SYMBOL vmlinux 0xf3341268 __clear_user +EXPORT_SYMBOL vmlinux 0xf346231f seq_list_start_head +EXPORT_SYMBOL vmlinux 0xf3478425 pci_dev_get +EXPORT_SYMBOL vmlinux 0xf349a7a7 kobject_del +EXPORT_SYMBOL vmlinux 0xf34b0eb7 bitmap_end_sync +EXPORT_SYMBOL vmlinux 0xf353a698 register_module_notifier +EXPORT_SYMBOL vmlinux 0xf389fe60 __hw_addr_init +EXPORT_SYMBOL vmlinux 0xf3916987 global_cursor_default +EXPORT_SYMBOL vmlinux 0xf3ddc932 qdisc_watchdog_cancel +EXPORT_SYMBOL vmlinux 0xf3dfd4d7 __neigh_create +EXPORT_SYMBOL vmlinux 0xf3e6402e __bitmap_equal +EXPORT_SYMBOL vmlinux 0xf3fc7eb8 skb_pull +EXPORT_SYMBOL vmlinux 0xf40b2297 __crypto_memneq +EXPORT_SYMBOL vmlinux 0xf4136f5a mmc_calc_max_discard +EXPORT_SYMBOL vmlinux 0xf42ecf05 __scsi_alloc_queue +EXPORT_SYMBOL vmlinux 0xf43ebd01 tso_start +EXPORT_SYMBOL vmlinux 0xf4414389 jbd2_journal_begin_ordered_truncate +EXPORT_SYMBOL vmlinux 0xf441ac43 ioread8_rep +EXPORT_SYMBOL vmlinux 0xf4449388 timer_interrupt +EXPORT_SYMBOL vmlinux 0xf448cb6d blk_queue_free_tags +EXPORT_SYMBOL vmlinux 0xf450581a param_set_ullong +EXPORT_SYMBOL vmlinux 0xf451cfe1 skb_copy_and_csum_dev +EXPORT_SYMBOL vmlinux 0xf457af0c bio_flush_dcache_pages +EXPORT_SYMBOL vmlinux 0xf474c21c bitmap_print_to_pagebuf +EXPORT_SYMBOL vmlinux 0xf474fdcb kfree_const +EXPORT_SYMBOL vmlinux 0xf498a1b2 of_get_ddr_timings +EXPORT_SYMBOL vmlinux 0xf4acc909 ps2_end_command +EXPORT_SYMBOL vmlinux 0xf4b53e0e redirty_page_for_writepage +EXPORT_SYMBOL vmlinux 0xf4bdbeb9 __frontswap_invalidate_area +EXPORT_SYMBOL vmlinux 0xf4c4a45c of_graph_get_next_endpoint +EXPORT_SYMBOL vmlinux 0xf4cf0ceb poll_freewait +EXPORT_SYMBOL vmlinux 0xf4db5eb3 of_device_register +EXPORT_SYMBOL vmlinux 0xf4eb6a23 neigh_resolve_output +EXPORT_SYMBOL vmlinux 0xf4f14de6 rtnl_trylock +EXPORT_SYMBOL vmlinux 0xf51360c6 d_splice_alias +EXPORT_SYMBOL vmlinux 0xf51cf254 dentry_needs_remove_privs +EXPORT_SYMBOL vmlinux 0xf521ec26 account_page_redirty +EXPORT_SYMBOL vmlinux 0xf5222143 _raw_spin_lock_irqsave +EXPORT_SYMBOL vmlinux 0xf52321e0 atomic64_sub +EXPORT_SYMBOL vmlinux 0xf53d4c26 qdisc_class_hash_destroy +EXPORT_SYMBOL vmlinux 0xf54c926d netlink_unicast +EXPORT_SYMBOL vmlinux 0xf553db1b pci_disable_link_state_locked +EXPORT_SYMBOL vmlinux 0xf5788de1 tcf_em_tree_destroy +EXPORT_SYMBOL vmlinux 0xf5a085c4 gen_pool_destroy +EXPORT_SYMBOL vmlinux 0xf5a10e25 vme_slave_set +EXPORT_SYMBOL vmlinux 0xf5a50053 mmc_register_driver +EXPORT_SYMBOL vmlinux 0xf5a62ecc _memset_io +EXPORT_SYMBOL vmlinux 0xf5c2d34d hdmi_audio_infoframe_init +EXPORT_SYMBOL vmlinux 0xf5e1558d crash_shutdown_unregister +EXPORT_SYMBOL vmlinux 0xf5e2de74 param_get_string +EXPORT_SYMBOL vmlinux 0xf5eb86ea blk_verify_command +EXPORT_SYMBOL vmlinux 0xf600b7a2 sync_inodes_sb +EXPORT_SYMBOL vmlinux 0xf606ecad agp3_generic_tlbflush +EXPORT_SYMBOL vmlinux 0xf6388c56 sysctl_ip_default_ttl +EXPORT_SYMBOL vmlinux 0xf66c124e misc_deregister +EXPORT_SYMBOL vmlinux 0xf6770391 mac_pton +EXPORT_SYMBOL vmlinux 0xf67895f4 inet_confirm_addr +EXPORT_SYMBOL vmlinux 0xf6789a40 trace_print_hex_seq +EXPORT_SYMBOL vmlinux 0xf67b1645 t10_pi_type3_crc +EXPORT_SYMBOL vmlinux 0xf68285c0 register_inetaddr_notifier +EXPORT_SYMBOL vmlinux 0xf68687be __sg_page_iter_start +EXPORT_SYMBOL vmlinux 0xf6b7705c serio_open +EXPORT_SYMBOL vmlinux 0xf6bb4729 color_table +EXPORT_SYMBOL vmlinux 0xf6cc04df pci_bus_put +EXPORT_SYMBOL vmlinux 0xf6ebc03b net_ratelimit +EXPORT_SYMBOL vmlinux 0xf6fc8791 __bitmap_xor +EXPORT_SYMBOL vmlinux 0xf70384d7 __debugger_sstep +EXPORT_SYMBOL vmlinux 0xf7124806 twl6040_power +EXPORT_SYMBOL vmlinux 0xf71521ba atomic64_add_return +EXPORT_SYMBOL vmlinux 0xf715dacf blk_queue_stack_limits +EXPORT_SYMBOL vmlinux 0xf71712ff dec_zone_page_state +EXPORT_SYMBOL vmlinux 0xf7584a9c find_font +EXPORT_SYMBOL vmlinux 0xf793164d simple_write_begin +EXPORT_SYMBOL vmlinux 0xf7a0a6e1 param_set_byte +EXPORT_SYMBOL vmlinux 0xf7ab9d52 mdiobus_read +EXPORT_SYMBOL vmlinux 0xf7cc3696 key_task_permission +EXPORT_SYMBOL vmlinux 0xf7db70f1 __frontswap_load +EXPORT_SYMBOL vmlinux 0xf7eb0639 ppp_dev_name +EXPORT_SYMBOL vmlinux 0xf7f4b9ae dquot_operations +EXPORT_SYMBOL vmlinux 0xf7f507c0 dcbnl_cee_notify +EXPORT_SYMBOL vmlinux 0xf811e69d scsi_eh_flush_done_q +EXPORT_SYMBOL vmlinux 0xf82101a7 tso_build_hdr +EXPORT_SYMBOL vmlinux 0xf827cb83 free_reserved_area +EXPORT_SYMBOL vmlinux 0xf82abc1d isa_dma_bridge_buggy +EXPORT_SYMBOL vmlinux 0xf82ec573 rb_prev +EXPORT_SYMBOL vmlinux 0xf82f1163 set_wb_congested +EXPORT_SYMBOL vmlinux 0xf8500cd4 inet_sock_destruct +EXPORT_SYMBOL vmlinux 0xf85ae81f inet_csk_clear_xmit_timers +EXPORT_SYMBOL vmlinux 0xf862cb09 ata_port_printk +EXPORT_SYMBOL vmlinux 0xf882aa74 phy_ethtool_get_wol +EXPORT_SYMBOL vmlinux 0xf88f117e elv_rb_find +EXPORT_SYMBOL vmlinux 0xf8d1fefa dev_close +EXPORT_SYMBOL vmlinux 0xf8e398fc memstart_addr +EXPORT_SYMBOL vmlinux 0xf8eaf847 ab3100_event_register +EXPORT_SYMBOL vmlinux 0xf8f2d972 mem_map +EXPORT_SYMBOL vmlinux 0xf8f9f398 vm_insert_pfn +EXPORT_SYMBOL vmlinux 0xf90d8f05 devm_gpio_request_one +EXPORT_SYMBOL vmlinux 0xf916a5a4 nobh_writepage +EXPORT_SYMBOL vmlinux 0xf9228003 get_immrbase +EXPORT_SYMBOL vmlinux 0xf9348cbc xz_dec_run +EXPORT_SYMBOL vmlinux 0xf93601b1 tcp_hashinfo +EXPORT_SYMBOL vmlinux 0xf94d4b91 pci_get_subsys +EXPORT_SYMBOL vmlinux 0xf94fc588 check_disk_size_change +EXPORT_SYMBOL vmlinux 0xf95e2ebb of_find_i2c_device_by_node +EXPORT_SYMBOL vmlinux 0xf966b966 blk_queue_io_min +EXPORT_SYMBOL vmlinux 0xf96cfd03 blk_mq_start_hw_queue +EXPORT_SYMBOL vmlinux 0xf96d9fec lookup_one_len +EXPORT_SYMBOL vmlinux 0xf96effb2 sock_wmalloc +EXPORT_SYMBOL vmlinux 0xf98ddda9 commit_creds +EXPORT_SYMBOL vmlinux 0xf9930f74 ip_route_input_noref +EXPORT_SYMBOL vmlinux 0xf993c736 d_delete +EXPORT_SYMBOL vmlinux 0xf99482b0 skb_vlan_push +EXPORT_SYMBOL vmlinux 0xf99e43b2 noop_fsync +EXPORT_SYMBOL vmlinux 0xf9a482f9 msleep +EXPORT_SYMBOL vmlinux 0xf9dfd2fa iov_iter_get_pages_alloc +EXPORT_SYMBOL vmlinux 0xf9e73082 scnprintf +EXPORT_SYMBOL vmlinux 0xf9f05003 tcf_hash_destroy +EXPORT_SYMBOL vmlinux 0xf9f16ff1 tty_unthrottle +EXPORT_SYMBOL vmlinux 0xf9f7a4a1 nla_append +EXPORT_SYMBOL vmlinux 0xf9f9f729 iommu_tbl_pool_init +EXPORT_SYMBOL vmlinux 0xfa00a07d pci_remove_bus +EXPORT_SYMBOL vmlinux 0xfa33405a pci_request_region +EXPORT_SYMBOL vmlinux 0xfa4c669f xfrm_state_lookup +EXPORT_SYMBOL vmlinux 0xfa599bb2 netlink_register_notifier +EXPORT_SYMBOL vmlinux 0xfa741e06 dput +EXPORT_SYMBOL vmlinux 0xfa81eac8 mount_single +EXPORT_SYMBOL vmlinux 0xfa9d3ce1 mod_zone_page_state +EXPORT_SYMBOL vmlinux 0xfaa37c97 __napi_schedule_irqoff +EXPORT_SYMBOL vmlinux 0xfabe6256 request_firmware_nowait +EXPORT_SYMBOL vmlinux 0xfac8865f sysctl_wmem_max +EXPORT_SYMBOL vmlinux 0xfacc975a kobject_get +EXPORT_SYMBOL vmlinux 0xfacd8e72 vme_dma_vme_attribute +EXPORT_SYMBOL vmlinux 0xfad0cba2 __skb_checksum_complete +EXPORT_SYMBOL vmlinux 0xfadf722e tty_free_termios +EXPORT_SYMBOL vmlinux 0xfae67b1f cap_mmap_addr +EXPORT_SYMBOL vmlinux 0xfae8a1ec proc_mkdir_mode +EXPORT_SYMBOL vmlinux 0xfaf3c0dc dquot_get_dqblk +EXPORT_SYMBOL vmlinux 0xfb0125f3 input_get_keycode +EXPORT_SYMBOL vmlinux 0xfb02b67c bio_get_nr_vecs +EXPORT_SYMBOL vmlinux 0xfb2979e3 skb_trim +EXPORT_SYMBOL vmlinux 0xfb3158f6 make_bad_inode +EXPORT_SYMBOL vmlinux 0xfb4acf2f pci_pme_active +EXPORT_SYMBOL vmlinux 0xfb6101c0 blk_mq_init_queue +EXPORT_SYMBOL vmlinux 0xfb6af58d recalc_sigpending +EXPORT_SYMBOL vmlinux 0xfb72be50 __netlink_ns_capable +EXPORT_SYMBOL vmlinux 0xfb8bfd7b arp_create +EXPORT_SYMBOL vmlinux 0xfb94103e __clzdi2 +EXPORT_SYMBOL vmlinux 0xfb984c42 inet_frag_kill +EXPORT_SYMBOL vmlinux 0xfba9f77f skb_free_datagram +EXPORT_SYMBOL vmlinux 0xfbaaf01e console_lock +EXPORT_SYMBOL vmlinux 0xfbb3dfe7 md_cluster_ops +EXPORT_SYMBOL vmlinux 0xfbbf8a87 block_write_begin +EXPORT_SYMBOL vmlinux 0xfbc4f89e io_schedule_timeout +EXPORT_SYMBOL vmlinux 0xfbce30ff put_disk +EXPORT_SYMBOL vmlinux 0xfbd1dc81 netdev_lower_get_next_private +EXPORT_SYMBOL vmlinux 0xfbd9ff07 pci_release_selected_regions +EXPORT_SYMBOL vmlinux 0xfbfa2449 block_is_partially_uptodate +EXPORT_SYMBOL vmlinux 0xfc00bf2d textsearch_prepare +EXPORT_SYMBOL vmlinux 0xfc02b7ad sysctl_tcp_wmem +EXPORT_SYMBOL vmlinux 0xfc36ae28 init_task +EXPORT_SYMBOL vmlinux 0xfc39e32f ioport_unmap +EXPORT_SYMBOL vmlinux 0xfc3b160f mempool_create_node +EXPORT_SYMBOL vmlinux 0xfc545794 netdev_refcnt_read +EXPORT_SYMBOL vmlinux 0xfc556ebc serio_reconnect +EXPORT_SYMBOL vmlinux 0xfc65459a kstrtoull_from_user +EXPORT_SYMBOL vmlinux 0xfc68accc truncate_inode_pages +EXPORT_SYMBOL vmlinux 0xfc770457 kill_litter_super +EXPORT_SYMBOL vmlinux 0xfc847a56 pci_bus_find_capability +EXPORT_SYMBOL vmlinux 0xfc8836f4 __hw_addr_unsync_dev +EXPORT_SYMBOL vmlinux 0xfca79aa9 mdiobus_unregister +EXPORT_SYMBOL vmlinux 0xfcae53df get_user_pages +EXPORT_SYMBOL vmlinux 0xfcb9ddd7 xfrm_unregister_type +EXPORT_SYMBOL vmlinux 0xfcc2a43c utf32_to_utf8 +EXPORT_SYMBOL vmlinux 0xfccd5f72 __vfs_write +EXPORT_SYMBOL vmlinux 0xfcdb0a9e mipi_dsi_dcs_set_page_address +EXPORT_SYMBOL vmlinux 0xfcebd68e sock_wfree +EXPORT_SYMBOL vmlinux 0xfcec0987 enable_irq +EXPORT_SYMBOL vmlinux 0xfcf0cbf5 input_open_device +EXPORT_SYMBOL vmlinux 0xfcf677f4 generic_block_bmap +EXPORT_SYMBOL vmlinux 0xfcfa03ff fb_videomode_to_modelist +EXPORT_SYMBOL vmlinux 0xfcfc704d inet6_unregister_protosw +EXPORT_SYMBOL vmlinux 0xfd33b5fa cmdline_parts_find +EXPORT_SYMBOL vmlinux 0xfd4a7a0a powerpc_debugfs_root +EXPORT_SYMBOL vmlinux 0xfd574dfa pci_request_selected_regions_exclusive +EXPORT_SYMBOL vmlinux 0xfd810b3f devm_ioremap +EXPORT_SYMBOL vmlinux 0xfd99623a ip_frag_ecn_table +EXPORT_SYMBOL vmlinux 0xfdb6cedc _raw_read_unlock_bh +EXPORT_SYMBOL vmlinux 0xfdb9b629 ioread32be +EXPORT_SYMBOL vmlinux 0xfdbe0288 pci_add_resource_offset +EXPORT_SYMBOL vmlinux 0xfdd49a95 __ethtool_get_settings +EXPORT_SYMBOL vmlinux 0xfdd86d5f ppp_unregister_channel +EXPORT_SYMBOL vmlinux 0xfdd8e245 md_reload_sb +EXPORT_SYMBOL vmlinux 0xfde16dc9 dquot_quotactl_ops +EXPORT_SYMBOL vmlinux 0xfded48ed enable_kernel_fp +EXPORT_SYMBOL vmlinux 0xfdf23f17 init_buffer +EXPORT_SYMBOL vmlinux 0xfdfb726c ethtool_op_get_link +EXPORT_SYMBOL vmlinux 0xfdfc0b3b fiemap_fill_next_extent +EXPORT_SYMBOL vmlinux 0xfe029963 unregister_inetaddr_notifier +EXPORT_SYMBOL vmlinux 0xfe117013 set_page_dirty +EXPORT_SYMBOL vmlinux 0xfe244fbe netdev_features_change +EXPORT_SYMBOL vmlinux 0xfe307291 phy_attach +EXPORT_SYMBOL vmlinux 0xfe424ff7 padata_remove_cpu +EXPORT_SYMBOL vmlinux 0xfe5d4bb2 sys_tz +EXPORT_SYMBOL vmlinux 0xfe5fd953 security_path_unlink +EXPORT_SYMBOL vmlinux 0xfe76ee01 xfrm_policy_alloc +EXPORT_SYMBOL vmlinux 0xfe7c4287 nr_cpu_ids +EXPORT_SYMBOL vmlinux 0xfe822d55 get_brgfreq +EXPORT_SYMBOL vmlinux 0xfe9228bc seq_lseek +EXPORT_SYMBOL vmlinux 0xfea0336d in6_dev_finish_destroy +EXPORT_SYMBOL vmlinux 0xfeb148ce register_filesystem +EXPORT_SYMBOL vmlinux 0xfeca7590 radix_tree_range_tag_if_tagged +EXPORT_SYMBOL vmlinux 0xfeca9c15 freeze_bdev +EXPORT_SYMBOL vmlinux 0xfedb4c00 eth_change_mtu +EXPORT_SYMBOL vmlinux 0xfedcdb60 seq_hlist_next_percpu +EXPORT_SYMBOL vmlinux 0xfede7b20 simple_link +EXPORT_SYMBOL vmlinux 0xfee2c4ad phy_register_fixup +EXPORT_SYMBOL vmlinux 0xff068759 sys_fillrect +EXPORT_SYMBOL vmlinux 0xff1ad2f7 flow_cache_fini +EXPORT_SYMBOL vmlinux 0xff1e9dd8 seq_list_start +EXPORT_SYMBOL vmlinux 0xff1fb6ee mpage_readpage +EXPORT_SYMBOL vmlinux 0xff447220 nla_reserve +EXPORT_SYMBOL vmlinux 0xff6724c2 dquot_get_state +EXPORT_SYMBOL vmlinux 0xff675384 blk_init_queue +EXPORT_SYMBOL vmlinux 0xff6878cf fb_default_cmap +EXPORT_SYMBOL vmlinux 0xff6dea25 smp_hw_index +EXPORT_SYMBOL vmlinux 0xff71e54d flush_signals +EXPORT_SYMBOL vmlinux 0xff7559e4 ioport_resource +EXPORT_SYMBOL vmlinux 0xff7b4d9e skb_kill_datagram +EXPORT_SYMBOL vmlinux 0xff9ca065 fb_edid_to_monspecs +EXPORT_SYMBOL vmlinux 0xffa24f27 copy_from_iter +EXPORT_SYMBOL vmlinux 0xffb2ef5f security_sb_set_mnt_opts +EXPORT_SYMBOL vmlinux 0xffbeff57 i2c_smbus_xfer +EXPORT_SYMBOL vmlinux 0xffd5a395 default_wake_function +EXPORT_SYMBOL vmlinux 0xfffc70e7 dev_change_carrier +EXPORT_SYMBOL_GPL crypto/af_alg 0x1c0fbbc2 af_alg_accept +EXPORT_SYMBOL_GPL crypto/af_alg 0x50428b8d af_alg_release +EXPORT_SYMBOL_GPL crypto/af_alg 0x58716898 af_alg_wait_for_completion +EXPORT_SYMBOL_GPL crypto/af_alg 0x63e3d659 af_alg_make_sg +EXPORT_SYMBOL_GPL crypto/af_alg 0x64d29db1 af_alg_free_sg +EXPORT_SYMBOL_GPL crypto/af_alg 0x6b6c4030 af_alg_cmsg_send +EXPORT_SYMBOL_GPL crypto/af_alg 0x86d151d5 af_alg_register_type +EXPORT_SYMBOL_GPL crypto/af_alg 0xa45ef0fb af_alg_complete +EXPORT_SYMBOL_GPL crypto/af_alg 0xbbc614b4 af_alg_link_sg +EXPORT_SYMBOL_GPL crypto/af_alg 0xd40d423e af_alg_unregister_type +EXPORT_SYMBOL_GPL crypto/asymmetric_keys/pkcs7_message 0x0c495886 pkcs7_get_content_data +EXPORT_SYMBOL_GPL crypto/asymmetric_keys/pkcs7_message 0x44e8d9ac pkcs7_free_message +EXPORT_SYMBOL_GPL crypto/asymmetric_keys/pkcs7_message 0x4cc33646 pkcs7_parse_message +EXPORT_SYMBOL_GPL crypto/asymmetric_keys/pkcs7_message 0x883bd89d pkcs7_verify +EXPORT_SYMBOL_GPL crypto/asymmetric_keys/pkcs7_message 0xa2ca085f pkcs7_validate_trust +EXPORT_SYMBOL_GPL crypto/async_tx/async_memcpy 0xd6924673 async_memcpy +EXPORT_SYMBOL_GPL crypto/async_tx/async_pq 0x8bdfbf55 async_gen_syndrome +EXPORT_SYMBOL_GPL crypto/async_tx/async_pq 0xf3ad24c9 async_syndrome_val +EXPORT_SYMBOL_GPL crypto/async_tx/async_raid6_recov 0x2d236c63 async_raid6_datap_recov +EXPORT_SYMBOL_GPL crypto/async_tx/async_raid6_recov 0x9a72140b async_raid6_2data_recov +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0x08ca8946 async_tx_quiesce +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0x40c0bbd2 async_tx_submit +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0xac046beb __async_tx_find_channel +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0xf70feda6 async_trigger_callback +EXPORT_SYMBOL_GPL crypto/async_tx/async_xor 0x3edb435c async_xor_val +EXPORT_SYMBOL_GPL crypto/async_tx/async_xor 0x6a8a90bc async_xor +EXPORT_SYMBOL_GPL crypto/authenc 0x587ef278 crypto_authenc_extractkeys +EXPORT_SYMBOL_GPL crypto/blowfish_common 0x7ef9e3ef blowfish_setkey +EXPORT_SYMBOL_GPL crypto/cast5_generic 0x27278ca9 __cast5_encrypt +EXPORT_SYMBOL_GPL crypto/cast5_generic 0x4a2a3ca6 __cast5_decrypt +EXPORT_SYMBOL_GPL crypto/cast5_generic 0x6331234e cast5_setkey +EXPORT_SYMBOL_GPL crypto/cast6_generic 0x05197d9d cast6_setkey +EXPORT_SYMBOL_GPL crypto/cast6_generic 0x1291971c __cast6_setkey +EXPORT_SYMBOL_GPL crypto/cast6_generic 0x1e2c961f __cast6_decrypt +EXPORT_SYMBOL_GPL crypto/cast6_generic 0x8f04034a __cast6_encrypt +EXPORT_SYMBOL_GPL crypto/cast_common 0x08aa6fb7 cast_s1 +EXPORT_SYMBOL_GPL crypto/cast_common 0x0c5fbf8a cast_s3 +EXPORT_SYMBOL_GPL crypto/cast_common 0xe39dd4b4 cast_s2 +EXPORT_SYMBOL_GPL crypto/cast_common 0xee83a4f3 cast_s4 +EXPORT_SYMBOL_GPL crypto/cryptd 0x0ef14ee6 cryptd_free_ablkcipher +EXPORT_SYMBOL_GPL crypto/cryptd 0x1dca9964 cryptd_alloc_ahash +EXPORT_SYMBOL_GPL crypto/cryptd 0x3e181732 cryptd_alloc_aead +EXPORT_SYMBOL_GPL crypto/cryptd 0x83f3ed20 cryptd_shash_desc +EXPORT_SYMBOL_GPL crypto/cryptd 0x941621e7 cryptd_aead_child +EXPORT_SYMBOL_GPL crypto/cryptd 0x9719461a cryptd_ablkcipher_child +EXPORT_SYMBOL_GPL crypto/cryptd 0xc4b2c153 cryptd_alloc_ablkcipher +EXPORT_SYMBOL_GPL crypto/cryptd 0xe39e3acb cryptd_free_aead +EXPORT_SYMBOL_GPL crypto/cryptd 0xe634fe78 cryptd_free_ahash +EXPORT_SYMBOL_GPL crypto/cryptd 0xf805deb2 cryptd_ahash_child +EXPORT_SYMBOL_GPL crypto/crypto_null 0x21cd536a crypto_put_default_null_skcipher +EXPORT_SYMBOL_GPL crypto/crypto_null 0xc82343c4 crypto_get_default_null_skcipher +EXPORT_SYMBOL_GPL crypto/des_generic 0xcfd9a2c0 des_ekey +EXPORT_SYMBOL_GPL crypto/des_generic 0xf8c78d49 __des3_ede_setkey +EXPORT_SYMBOL_GPL crypto/lrw 0x3864eb66 lrw_free_table +EXPORT_SYMBOL_GPL crypto/lrw 0x7a2f9c5b lrw_crypt +EXPORT_SYMBOL_GPL crypto/lrw 0xcd074900 lrw_init_table +EXPORT_SYMBOL_GPL crypto/mcryptd 0x14bdd4d3 mcryptd_flusher +EXPORT_SYMBOL_GPL crypto/mcryptd 0x2c931609 shash_ahash_mcryptd_update +EXPORT_SYMBOL_GPL crypto/mcryptd 0x365c0bbb mcryptd_shash_desc +EXPORT_SYMBOL_GPL crypto/mcryptd 0x3fb513c3 mcryptd_alloc_ahash +EXPORT_SYMBOL_GPL crypto/mcryptd 0x6851fa28 mcryptd_ahash_child +EXPORT_SYMBOL_GPL crypto/mcryptd 0x6b35e267 mcryptd_free_ahash +EXPORT_SYMBOL_GPL crypto/mcryptd 0x6e92c12d shash_ahash_mcryptd_final +EXPORT_SYMBOL_GPL crypto/mcryptd 0x8b2d13e0 shash_ahash_mcryptd_finup +EXPORT_SYMBOL_GPL crypto/mcryptd 0xbc526e86 shash_ahash_mcryptd_digest +EXPORT_SYMBOL_GPL crypto/rsa_generic 0xadc25bd8 rsa_parse_key +EXPORT_SYMBOL_GPL crypto/rsa_generic 0xf1b141d1 rsa_free_key +EXPORT_SYMBOL_GPL crypto/serpent_generic 0x5ddb33e9 __serpent_encrypt +EXPORT_SYMBOL_GPL crypto/serpent_generic 0x77b39cb4 __serpent_setkey +EXPORT_SYMBOL_GPL crypto/serpent_generic 0x8a1a99ad __serpent_decrypt +EXPORT_SYMBOL_GPL crypto/serpent_generic 0xf12d7ca7 serpent_setkey +EXPORT_SYMBOL_GPL crypto/twofish_common 0x324a4eb7 twofish_setkey +EXPORT_SYMBOL_GPL crypto/twofish_common 0x6c3229bb __twofish_setkey +EXPORT_SYMBOL_GPL crypto/xts 0xadf8f398 xts_crypt +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x02da4aee ahci_port_resume +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x065cb965 ahci_shost_attrs +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x0afb661e ahci_pmp_retry_srst_ops +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x17e3a569 ahci_do_softreset +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x1e1f7ef7 ahci_error_handler +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x224faa1b ahci_check_ready +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x2644e8ba ahci_ops +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x368d704b ahci_start_fis_rx +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x4ad61985 ahci_dev_classify +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x543d277f ahci_stop_engine +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x8ba854ac ahci_em_messages +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x903f6c39 ahci_host_activate +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xa89c1bd0 ahci_fill_cmd_slot +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xb6775838 ahci_print_info +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xcda51c07 ahci_set_em_messages +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xd2b02f1e ahci_kick_engine +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xda174753 ahci_save_initial_config +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xdd1e292f ahci_reset_em +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xdf3fceec ahci_sdev_attrs +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xe700294a ahci_init_controller +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xea50dad3 ahci_ignore_sss +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xee976149 ahci_reset_controller +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xf3bf90a6 ahci_qc_issue +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xf80ca74b ahci_start_engine +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x0899b447 ahci_platform_get_resources +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x329125ef ahci_platform_disable_resources +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x39770e81 ahci_platform_enable_regulators +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x5c3104bd ahci_platform_enable_resources +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x6b9ba21a ahci_platform_init_host +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x97eec71a ahci_platform_suspend +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x97fa9aef ahci_platform_disable_clks +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0xbc7c9e78 ahci_platform_disable_regulators +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0xca6eb3db ahci_platform_resume_host +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0xcdff1fe6 ahci_platform_suspend_host +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0xd5349aba ahci_platform_ops +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0xe4d60cb7 ahci_platform_resume +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0xf39905b2 ahci_platform_enable_clks +EXPORT_SYMBOL_GPL drivers/ata/pata_platform 0x22ddeed3 __pata_platform_probe +EXPORT_SYMBOL_GPL drivers/ata/pata_sis 0xb51eba72 sis_info133_for_sata +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-spmi 0x3ea5ac75 regmap_init_spmi_ext +EXPORT_SYMBOL_GPL drivers/base/regmap/regmap-spmi 0xa78d784c devm_regmap_init_spmi_base +EXPORT_SYMBOL_GPL drivers/base/regmap/regmap-spmi 0xa79c91e3 devm_regmap_init_spmi_ext +EXPORT_SYMBOL_GPL drivers/base/regmap/regmap-spmi 0xbe787700 regmap_init_spmi_base +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x03441cb3 bcma_pmu_get_bus_clock +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x0c19053d bcma_chipco_pll_write +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x1d3ca3f1 bcma_core_pci_power_save +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x202b9eaa bcma_chipco_b_mii_write +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x2b968306 __bcma_driver_register +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x31f36f1b bcma_core_is_enabled +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x5c3c3cbe bcma_chipco_get_alp_clock +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x65fe2e32 bcma_pmu_spuravoid_pllupdate +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x67445167 bcma_chipco_chipctl_maskset +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x6f566f74 bcma_chipco_regctl_maskset +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x703ccb4d bcma_host_pci_irq_ctl +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x71b73573 bcma_host_pci_down +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x8ab0e22f bcma_host_pci_up +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xa2037ad2 bcma_core_set_clockmode +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xa8c6312b bcma_find_core_unit +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xc4804ab6 bcma_driver_unregister +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xcdbb68df bcma_chipco_pll_maskset +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xdd5e9915 bcma_chipco_pll_read +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xde38b6c5 bcma_chipco_gpio_outen +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xe36c2fc8 bcma_core_pll_ctl +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xeb0246e5 bcma_chipco_gpio_control +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xee00972e bcma_core_disable +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xf2473027 bcma_core_enable +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xfd162e40 bcma_chipco_gpio_out +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0x281c30e6 btbcm_check_bdaddr +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0x3fc3b221 btbcm_set_bdaddr +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0x73e6bcaf btbcm_setup_apple +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0x865322df btbcm_initialize +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0xc12d1bf7 btbcm_setup_patchram +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0xd1e90316 btbcm_finalize +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0x6cc61afe btintel_set_bdaddr +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0xde804049 btintel_check_bdaddr +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x1207f337 btmrvl_enable_hs +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x4f6a4191 btmrvl_interrupt +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x5478974c btmrvl_process_event +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x7b4edb98 btmrvl_register_hdev +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x88c58537 btmrvl_send_module_cfg_cmd +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xaa411cfb btmrvl_enable_ps +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xbb2c9709 btmrvl_check_evtpkt +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xc2b67ded btmrvl_pscan_window_reporting +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xe4104ba0 btmrvl_send_hscfg_cmd +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xf9c4f9d1 btmrvl_add_card +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xfa29a06a btmrvl_remove_card +EXPORT_SYMBOL_GPL drivers/bluetooth/btrtl 0x93f33886 btrtl_setup_realtek +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0x016fd23a dw_dma_probe +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0x44f9f321 dw_dma_disable +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0x7c9318ab dw_dma_filter +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0xa895f508 dw_dma_enable +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0xbc1811f7 dw_dma_remove +EXPORT_SYMBOL_GPL drivers/dma/fsldma 0x2c403e28 fsl_dma_external_start +EXPORT_SYMBOL_GPL drivers/dma/hsu/hsu_dma 0x1f21f8c4 hsu_dma_probe +EXPORT_SYMBOL_GPL drivers/dma/hsu/hsu_dma 0x8b4d290c hsu_dma_irq +EXPORT_SYMBOL_GPL drivers/dma/hsu/hsu_dma 0xa0b9d93b hsu_dma_remove +EXPORT_SYMBOL_GPL drivers/dma/virt-dma 0x1c76aa7f vchan_find_desc +EXPORT_SYMBOL_GPL drivers/dma/virt-dma 0x343824b3 vchan_dma_desc_free_list +EXPORT_SYMBOL_GPL drivers/dma/virt-dma 0x920911a8 vchan_init +EXPORT_SYMBOL_GPL drivers/dma/virt-dma 0xd9366975 vchan_tx_submit +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x0102187b edac_pci_handle_npe +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x0406dc90 edac_pci_create_generic_ctl +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x0c1e4eea edac_mc_add_mc_with_groups +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x0c32ff8a edac_pci_alloc_index +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x0d6636f2 find_mci_by_dev +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x1e575049 edac_pci_release_generic_ctl +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x2ae1b1a2 edac_device_handle_ue +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x2c8dd6b8 edac_mem_types +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x319964da edac_pci_del_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x3485dcff edac_pci_free_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x3850bbe5 edac_device_alloc_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x455c951d edac_mc_find_csrow_by_page +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x508db7d1 edac_pci_reset_delay_period +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x6227f13a edac_device_add_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x67bcd45b edac_raw_mc_handle_error +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x6e3ff83a edac_device_alloc_index +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x7ac7c5ea edac_device_handle_ce +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x9076a7f8 edac_mc_alloc +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xacb4eb65 edac_mc_del_mc +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xc0dcb59e edac_layer_name +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xc25d742c edac_mc_free +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xce39e720 edac_device_del_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xd37030aa edac_mc_handle_error +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xd92d5910 edac_device_free_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xe903f325 edac_pci_alloc_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xf16158ec edac_pci_add_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xff84e00a edac_pci_handle_pe +EXPORT_SYMBOL_GPL drivers/firewire/firewire-core 0xf4ade51f fw_card_release +EXPORT_SYMBOL_GPL drivers/gpio/gpio-generic 0x4d9d030f bgpio_init +EXPORT_SYMBOL_GPL drivers/gpio/gpio-generic 0xa334dc82 bgpio_remove +EXPORT_SYMBOL_GPL drivers/gpio/gpio-max730x 0xc821d497 __max730x_remove +EXPORT_SYMBOL_GPL drivers/gpio/gpio-max730x 0xdebc59ff __max730x_probe +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x0254b91d drm_class_device_register +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x6bb2999a drm_display_mode_from_videomode +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x7a8654ee drm_do_get_edid +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x8cc03e9b of_get_drm_display_mode +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x913c49b4 drm_display_mode_to_videomode +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xe8f61c15 drm_class_device_unregister +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0x6adf436b ttm_prime_fd_to_handle +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0xc5599b6a ttm_dma_populate +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0xce36343e ttm_prime_handle_to_fd +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0xe26f93f3 ttm_dma_unpopulate +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0xfa4e9783 ttm_dma_page_alloc_debugfs +EXPORT_SYMBOL_GPL drivers/hid/hid 0x05495392 hid_debug +EXPORT_SYMBOL_GPL drivers/hid/hid 0x0cce015d hid_open_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x14e37f78 hid_alloc_report_buf +EXPORT_SYMBOL_GPL drivers/hid/hid 0x27f009ab hid_input_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x2a17bfa8 hid_allocate_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0x2cbe0365 hid_destroy_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0x373d200a hid_validate_values +EXPORT_SYMBOL_GPL drivers/hid/hid 0x4452c052 hidinput_find_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0x4906a967 hid_snto32 +EXPORT_SYMBOL_GPL drivers/hid/hid 0x5088071e hid_field_extract +EXPORT_SYMBOL_GPL drivers/hid/hid 0x573485f1 hid_dump_input +EXPORT_SYMBOL_GPL drivers/hid/hid 0x60591c0b hidraw_report_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0x60c57892 hidinput_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x67303072 hid_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x6eadf6d2 hid_parse_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x6fd38421 __hid_register_driver +EXPORT_SYMBOL_GPL drivers/hid/hid 0x7af36ec7 hidinput_count_leds +EXPORT_SYMBOL_GPL drivers/hid/hid 0x80026419 hid_report_raw_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0x84b841a9 hid_check_keys_pressed +EXPORT_SYMBOL_GPL drivers/hid/hid 0x88c493f1 hid_dump_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x8b5aeec4 hidraw_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x90f5aede hid_output_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x9cc35e8a hid_ignore +EXPORT_SYMBOL_GPL drivers/hid/hid 0xa2e348fc hid_unregister_driver +EXPORT_SYMBOL_GPL drivers/hid/hid 0xa4bc6f50 hid_dump_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0xb25b8b0c hidinput_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0xb8a2cad5 hidinput_calc_abs_res +EXPORT_SYMBOL_GPL drivers/hid/hid 0xd1789cde hidraw_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0xd51a6daf hid_resolv_usage +EXPORT_SYMBOL_GPL drivers/hid/hid 0xd9e5b562 hid_dump_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0xda9ab476 hid_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0xdb10edb5 hid_add_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0xe182d04d hidinput_get_led_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0xe422afe9 hid_set_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0xe8a8b3cc hid_register_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0xed5817bf __hid_request +EXPORT_SYMBOL_GPL drivers/hid/hid 0xee58e161 hidinput_report_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0xf53d682a hid_debug_event +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat 0x2f622ea1 roccat_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat 0x48ea191b roccat_connect +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat 0x8c4181ec roccat_report_event +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x0efc09d5 roccat_common2_sysfs_write +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x7cc44000 roccat_common2_send_with_status +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x825cb30d roccat_common2_receive +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x8cc7f46f roccat_common2_sysfs_read +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0xa089d00e roccat_common2_device_init_struct +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0xce920bbd roccat_common2_send +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x0416296f sensor_hub_input_get_attribute_info +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x2df6a0da sensor_hub_set_feature +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x3254f9e8 sensor_hub_get_feature +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x406f1341 sensor_hub_remove_callback +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x8c42d34f hid_sensor_get_usage_index +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x8fc68ade sensor_hub_device_close +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x971ed0e3 sensor_hub_register_callback +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0xb67f9ff7 sensor_hub_device_open +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0xe4406707 sensor_hub_input_attr_get_raw_value +EXPORT_SYMBOL_GPL drivers/hid/usbhid/usbhid 0x01fd453e usbhid_lookup_quirk +EXPORT_SYMBOL_GPL drivers/hid/usbhid/usbhid 0x9e616caa hiddev_hid_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x0ecfba88 hsi_async +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x10502128 hsi_free_msg +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x11c0a6fb hsi_alloc_msg +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x1b0003de hsi_add_clients_from_dt +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x2c380ee0 hsi_get_channel_id_by_name +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x2f2b03e5 hsi_register_client_driver +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x5c00625a hsi_unregister_port_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x61d1b913 hsi_port_unregister_clients +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x65416217 hsi_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x67d7c606 hsi_register_port_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x7f55deb9 hsi_release_port +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xc69ac2af hsi_alloc_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xd0b5143b hsi_new_client +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xd2797506 hsi_put_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xd542f1eb hsi_claim_port +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xe0a4e3f7 hsi_unregister_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xe0d8f3b4 hsi_register_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xf6a16f7d hsi_remove_client +EXPORT_SYMBOL_GPL drivers/hwmon/adt7x10 0x0e8c8207 adt7x10_probe +EXPORT_SYMBOL_GPL drivers/hwmon/adt7x10 0x457c41ad adt7x10_dev_pm_ops +EXPORT_SYMBOL_GPL drivers/hwmon/adt7x10 0xf9dc8d67 adt7x10_remove +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x00140a2e pmbus_do_probe +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x0e44c784 pmbus_set_page +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x0fbd79c6 pmbus_write_byte +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x1419c544 pmbus_regulator_ops +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x30352899 pmbus_write_word_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x5a9c460b pmbus_update_byte_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x5b9c0510 pmbus_check_word_register +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x65097302 pmbus_read_word_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x6c89b53d pmbus_check_byte_register +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x7be4ea8e pmbus_get_driver_info +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x961fa57d pmbus_read_byte_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xc07633e1 pmbus_write_byte_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xc67d0ad5 pmbus_do_remove +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xc92417bb pmbus_clear_cache +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xf4645132 pmbus_clear_faults +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x116a353b i2c_dw_enable +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x25c75703 i2c_dw_clear_int +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x5bb1170b i2c_dw_isr +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x8f670578 i2c_dw_func +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x90c5ea54 i2c_dw_init +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0xa92db2ca i2c_dw_disable_int +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0xd3d5a3b7 i2c_dw_read_comp_param +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0xedbb84a2 i2c_dw_is_enabled +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0xf782ddd0 i2c_dw_xfer +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0xfd24c662 i2c_dw_disable +EXPORT_SYMBOL_GPL drivers/i2c/i2c-mux 0x3d9048d3 i2c_del_mux_adapter +EXPORT_SYMBOL_GPL drivers/i2c/i2c-mux 0xd9011a97 i2c_add_mux_adapter +EXPORT_SYMBOL_GPL drivers/i2c/i2c-smbus 0x648bd054 i2c_handle_smbus_alert +EXPORT_SYMBOL_GPL drivers/i2c/i2c-smbus 0xbb50fa74 i2c_setup_smbus_alert +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x11f64412 ad_sd_set_comm +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x2b296f05 ad_sigma_delta_single_conversion +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x53c5189f ad_sd_validate_trigger +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x646ef309 ad_sd_setup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x75da2089 ad_sd_init +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x823f26f1 ad_sd_write_reg +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xc7de3118 ad_sd_read_reg +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xd996c4e7 ad_sd_calibrate_all +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xdea80f31 ad_sd_cleanup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/adc/twl4030-madc 0x4362dc66 twl4030_get_madc_conversion +EXPORT_SYMBOL_GPL drivers/iio/adc/twl4030-madc 0xb1be4a75 twl4030_madc_conversion +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x0aab5855 adis_cleanup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x19561b03 adis_update_scan_mode +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x29753b5e adis_check_status +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x310f075a adis_init +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x6e3ede7a adis_initial_startup +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x829bb06a adis_remove_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x85c366bd adis_setup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xb8e6191d adis_write_reg +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xc4b64340 adis_single_conversion +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xd1008e40 adis_read_reg +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xe69c0675 adis_probe_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xf40b39cf adis_reset +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x0dbc6e22 iio_channel_get_all +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x1603c037 devm_iio_device_unregister +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x17b63b33 iio_buffer_put +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x265d5907 devm_iio_trigger_alloc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x267c0508 iio_channel_release_all_cb +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x26f6b499 iio_str_to_fixpoint +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x2a1fab3c iio_channel_stop_all_cb +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x2b896f90 iio_channel_release +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x3e62e794 iio_enum_write +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x44aa6e0e iio_update_demux +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x55eb83bb iio_get_channel_type +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x6a6d97cf iio_map_array_register +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x6c5694de iio_enum_available_read +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x6d617790 iio_convert_raw_to_processed +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x6f7cbee6 iio_update_buffers +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x7a711aef iio_channel_start_all_cb +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x81e2e647 iio_channel_release_all +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x85fb2d0d devm_iio_device_alloc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x999d0663 devm_iio_device_free +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x99d29bd8 iio_validate_scan_mask_onehot +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x9f53a98d iio_scan_mask_query +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xa1da2f15 iio_read_channel_scale +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xa244e3b5 iio_read_channel_average_raw +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xa3030a8f iio_read_channel_processed +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xa3a98b29 devm_iio_device_register +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xa4cf5b75 iio_dealloc_pollfunc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xa595a8a7 iio_channel_get +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xb6ff7e55 iio_buffer_get +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xc0d00e54 iio_push_to_buffers +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xc61fc894 iio_enum_read +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xc9c50523 iio_channel_get_all_cb +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xdd818a81 iio_map_array_unregister +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xed42ce91 iio_write_channel_raw +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xfabf3a94 iio_read_channel_raw +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xfcc8eb3f devm_iio_trigger_free +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xfcd56afa iio_alloc_pollfunc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xfd511543 iio_channel_cb_get_channels +EXPORT_SYMBOL_GPL drivers/infiniband/core/ib_core 0xdbd019c4 ib_wq +EXPORT_SYMBOL_GPL drivers/input/ff-memless 0x8bae6f50 input_ff_create_memless +EXPORT_SYMBOL_GPL drivers/input/matrix-keymap 0x6a498ee5 matrix_keypad_parse_of_params +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 0x8cd8ee4d adxl34x_probe +EXPORT_SYMBOL_GPL drivers/input/misc/adxl34x 0xe4586827 adxl34x_resume +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp4_core 0x6035d539 cyttsp4_remove +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp4_core 0x7974d584 cyttsp4_probe +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp4_core 0xec87bced cyttsp4_pm_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_core 0x05e7fb9d cyttsp_pm_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_core 0x35c4aeac cyttsp_probe +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_core 0x8f7f5d6a cyttsp_remove +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_i2c_common 0x286234f6 cyttsp_i2c_write_block_data +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_i2c_common 0x803fb9ca cyttsp_i2c_read_block_data +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x2dfcc247 wm9705_codec +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x3042df1d wm9712_codec +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x84090fe5 wm97xx_set_gpio +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x84c74a2c wm97xx_set_suspend_mode +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x86c4ba14 wm97xx_config_gpio +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xaba6ec28 wm97xx_reg_read +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xb49b741b wm97xx_unregister_mach_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xb5473a0e wm97xx_reg_write +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xd2091983 wm97xx_get_gpio +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xdeab1845 wm97xx_read_aux_adc +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xdefcaef5 wm97xx_register_mach_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xfce8df83 wm9713_codec +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x48587728 ipack_driver_register +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x4ea818b5 ipack_device_add +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x5f3871fb ipack_bus_unregister +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x7aa6d142 ipack_device_init +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x88ffe5b5 ipack_device_del +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x97582343 ipack_put_device +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0xc649f39e ipack_driver_unregister +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0xe5929d11 ipack_get_device +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0xe7e7fddf ipack_bus_register +EXPORT_SYMBOL_GPL drivers/isdn/capi/kernelcapi 0x23359aff unregister_capictr_notifier +EXPORT_SYMBOL_GPL drivers/isdn/capi/kernelcapi 0xce1414b2 register_capictr_notifier +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x1a395987 gigaset_m10x_send_skb +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x1f72168c gigaset_fill_inbuf +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x2c745ddb gigaset_skb_rcvd +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x37eb55df gigaset_stop +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x41bc3665 gigaset_freedriver +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x454aa44f gigaset_debuglevel +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x6420b44a gigaset_handle_modem_response +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x800a8e97 gigaset_initcs +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x8eff32df gigaset_dbg_buffer +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x98913da5 gigaset_isdn_rcv_err +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xafec1ae3 gigaset_start +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xaff9eaa7 gigaset_skb_sent +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xc213ae4c gigaset_m10x_input +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xc4fe951f gigaset_blockdriver +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xc9057880 gigaset_shutdown +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xc952fa66 gigaset_add_event +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xd8970e9d gigaset_initdriver +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xe652eca8 gigaset_freecs +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xf4c373d6 gigaset_if_receive +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0x080f9e1b led_classdev_flash_register +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0x2e786a4e led_update_flash_brightness +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0x50731a68 led_set_flash_timeout +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0x8dbe79e2 led_classdev_flash_unregister +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0xa5d7b85f led_set_flash_brightness +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0xef079a85 led_get_flash_fault +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 0x0c298cf1 wf_get_control +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0x14fb5a01 wf_register_sensor +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0x40b5eeb0 wf_register_control +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0x46095c7c wf_get_sensor +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0x68fa3578 wf_unregister_sensor +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0x73ac4af3 wf_put_sensor +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0x75147afa wf_set_overtemp +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0x90ea9a12 wf_find_control +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0x94765fac wf_critical_overtemp +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0x99c8ab4d wf_put_control +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0xa2f19a49 wf_is_overtemp +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0xaf3059ec wf_unregister_control +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0xb453c198 wf_find_sensor +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0xbcace2a5 wf_unregister_client +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0xed82a14f wf_clear_overtemp +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x2938b547 mcb_device_register +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x4fed055a mcb_bus_add_devices +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x6219de3c chameleon_parse_cells +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x6eee2d75 mcb_release_bus +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x79d718fa mcb_unregister_driver +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x82e1f954 mcb_bus_get +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x8bf52ac0 mcb_release_mem +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0xa3d06c1a mcb_bus_put +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0xb7af9615 mcb_alloc_dev +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0xb92da127 mcb_alloc_bus +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0xbefc8181 __mcb_register_driver +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0xe02550aa mcb_request_mem +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0xe7a62b55 mcb_get_irq +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0xfb31c97e mcb_free_dev +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x10e06e97 __tracepoint_bcache_btree_set_root +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x155ea9c7 __tracepoint_bcache_bypass_sequential +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x1822fd23 __tracepoint_bcache_btree_gc_coalesce +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x1f2ba9ac __tracepoint_bcache_journal_entry_full +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x260d47cf __tracepoint_bcache_btree_cache_cannibalize +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x27831e89 __tracepoint_bcache_journal_full +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x2dec45e0 __tracepoint_bcache_btree_write +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x347aebe1 __tracepoint_bcache_btree_node_free +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x41c861f0 __tracepoint_bcache_alloc_fail +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x480dc606 __tracepoint_bcache_invalidate +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x49856e5a __tracepoint_bcache_btree_node_compact +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x50e8c39f __tracepoint_bcache_write +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x574ba881 __tracepoint_bcache_btree_node_alloc +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x628eb712 __tracepoint_bcache_btree_insert_key +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x6770a402 __tracepoint_bcache_gc_copy_collision +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x785cfc9f __tracepoint_bcache_gc_end +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x91f2af34 __tracepoint_bcache_btree_node_alloc_fail +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xa09069a3 __tracepoint_bcache_writeback_collision +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xa591c5d6 __tracepoint_bcache_read +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xa6890b59 __tracepoint_bcache_btree_read +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xaf60c34b __tracepoint_bcache_journal_write +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xb950d2ae __tracepoint_bcache_request_start +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xbd4b89b6 __tracepoint_bcache_btree_node_split +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xce0e6218 __tracepoint_bcache_gc_copy +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xd40fba32 __tracepoint_bcache_gc_start +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xdc5ea5a5 __tracepoint_bcache_cache_insert +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xf58ce244 __tracepoint_bcache_journal_replay_key +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xf5bcbdc7 __tracepoint_bcache_read_retry +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xfc1d5275 __tracepoint_bcache_writeback +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xfcdf28c9 __tracepoint_bcache_request_end +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xffc308e4 __tracepoint_bcache_bypass_congested +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x17dd39d6 dm_deferred_set_create +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x271f2194 dm_cell_error +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x2eb01e04 dm_deferred_set_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x5aede2fe dm_cell_release_no_holder +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x5c49f920 dm_bio_prison_alloc_cell +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x6791a44e dm_deferred_entry_dec +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x6d5734da dm_cell_release +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x71d22d3e 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 0xa9165699 dm_cell_visit_release +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 0xcbf40233 dm_get_cell +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xdba63f5c dm_bio_prison_free_cell +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xe161ab76 dm_bio_detain +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x0ad0dc4f dm_bufio_mark_buffer_dirty +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x22163b69 dm_bufio_release_move +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x3909d3a8 dm_bufio_prefetch +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x4c6ad126 dm_bufio_client_create +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x594952bd dm_bufio_read +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x62a23587 dm_bufio_get_device_size +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x6d3f57bd dm_bufio_get_client +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 0x9b2b253a dm_bufio_get +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xa82b2066 dm_bufio_write_dirty_buffers +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xc9a3422d dm_bufio_write_dirty_buffers_async +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xd4bddf5c dm_bufio_issue_flush +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xdc69e37a dm_bufio_get_block_number +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xe004ee92 dm_bufio_new +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-cache 0x2cc38885 dm_cache_policy_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x492d40b3 dm_cache_policy_create +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x52932877 dm_cache_policy_get_hint_size +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x55d91e6d dm_cache_policy_get_version +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x5994e000 dm_cache_policy_get_name +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x9f06e0e3 dm_cache_policy_register +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xd28d0c30 dm_cache_policy_unregister +EXPORT_SYMBOL_GPL drivers/md/dm-multipath 0x9fc0aa96 dm_unregister_path_selector +EXPORT_SYMBOL_GPL drivers/md/dm-multipath 0xa084e197 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 0x09472122 dm_rh_dec +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x1bcb9df6 dm_rh_mark_nosync +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x1ed6f400 dm_rh_dirty_log +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 0x3de58b66 dm_rh_bio_to_region +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 0x836edca0 dm_rh_inc_pending +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 0xa8813ad6 dm_rh_region_to_sector +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xb9fc036b 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 0xc66ce277 dm_rh_get_region_size +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xcab63c3d dm_rh_get_state +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xd8aa4284 dm_rh_region_context +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xd9923a99 dm_rh_delay +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xf37a3cfe dm_rh_get_region_key +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 0x01445176 dm_btree_find_highest_key +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x0604db1b dm_btree_remove_leaves +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x11eab9fe dm_bm_read_lock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x150c85ce dm_tm_open_with_sm +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x1e3f728d dm_block_data +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x2025e954 dm_array_info_init +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x24fa6664 dm_bitset_set_bit +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x2c112836 dm_block_location +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x2e730a21 dm_bm_checksum +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 0x32b5f546 dm_array_empty +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x33c03da6 dm_sm_disk_open +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 0x3ad0f55b dm_bm_flush +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x40f7bd91 dm_tm_inc +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x4360913e dm_btree_find_lowest_key +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x447d43d9 dm_block_manager_create +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x5aed1dd7 dm_bitset_flush +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x5e6aea80 dm_btree_walk +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x619701dc dm_sm_disk_create +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x62c1b9ee dm_array_walk +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 0x72289260 dm_block_manager_destroy +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x7657e859 dm_bitset_clear_bit +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 0x80c89b3d dm_tm_unlock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x832bf228 dm_array_del +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x858c8d94 dm_array_set_value +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x89f1e1cc dm_btree_insert_notify +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 0x966a8838 dm_btree_lookup +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x9b4b5b29 dm_bm_write_lock +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 0xa2507774 dm_tm_shadow_block +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xa87c5b4d dm_array_resize +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xab96bd2d dm_bitset_test_bit +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xaee02382 dm_btree_empty +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xb7bad799 dm_bm_unlock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xb9a6ecf8 dm_tm_dec +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xba47c03a dm_bitset_del +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xbcfdc290 dm_tm_read_lock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xbd50ebbb dm_btree_del +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xbe0497aa dm_tm_create_with_sm +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xca40abd5 dm_btree_insert +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xd041d62b dm_array_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 0xead1e727 dm_bm_write_lock_zero +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xed1e1f96 dm_btree_remove +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xed58cfa1 dm_bitset_empty +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xf12ec3cd dm_disk_bitset_init +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xffff2ac3 dm_bitset_resize +EXPORT_SYMBOL_GPL drivers/media/common/b2c2/b2c2-flexcop 0x66c0289a b2c2_flexcop_debug +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x0fd3c4a4 saa7146_setgpio +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x3f75475d saa7146_register_extension +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x627125ce saa7146_pgtable_free +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x6e65573f saa7146_vfree_destroy_pgtable +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x7463915c saa7146_pgtable_build_single +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x8e030d6a saa7146_vmalloc_build_pgtable +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xb1e11805 saa7146_unregister_extension +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xd34d3bab saa7146_wait_for_debi_done +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xe3cd9b5c saa7146_debug +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xed5066d7 saa7146_i2c_adapter_prepare +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xfa9f9f91 saa7146_pgtable_alloc +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x0967089e saa7146_start_preview +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x39cd9853 saa7146_register_device +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x4a9a25b6 saa7146_unregister_device +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0xad99191a saa7146_vv_release +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0xc7ce8467 saa7146_vv_init +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0xd6484b2f saa7146_set_hps_source_and_sync +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0xe36b89ef saa7146_stop_preview +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x03cf477f smscore_get_board_id +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x086e602a smscore_putbuffer +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x0e83bdb9 smscore_start_device +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x1407a4e6 smscore_unregister_hotplug +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x1a3de940 smscore_getbuffer +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x21e36bf2 smscore_registry_getmode +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x360e7af2 smscore_register_hotplug +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 0x4bcc2145 smscore_onresponse +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x53015a63 sms_board_lna_control +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x5eab84f5 sms_board_setup +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 0x7a7d9c3a sms_board_led_feedback +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 0x9c2225ed smscore_translate_msg +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x9d37bb1c sms_board_event +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xb594b808 smscore_unregister_device +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xbbdb5c42 smscore_unregister_client +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xbf621b56 smscore_set_board_id +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xda7d539a smscore_register_device +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xdbf9546c smscore_get_device_mode +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xe61d1b54 smscore_register_client +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xe629ac10 sms_board_power +EXPORT_SYMBOL_GPL drivers/media/dvb-frontends/as102_fe 0x9111efc5 as102_attach +EXPORT_SYMBOL_GPL drivers/media/dvb-frontends/cx24117 0x816dec24 cx24117_attach +EXPORT_SYMBOL_GPL drivers/media/dvb-frontends/tda18271c2dd 0x746948b0 tda18271c2dd_attach +EXPORT_SYMBOL_GPL drivers/media/media 0x11a2f61c media_device_unregister +EXPORT_SYMBOL_GPL drivers/media/media 0x33cb567e media_entity_create_link +EXPORT_SYMBOL_GPL drivers/media/media 0x41a85683 media_entity_remove_links +EXPORT_SYMBOL_GPL drivers/media/media 0x45b4974d media_entity_setup_link +EXPORT_SYMBOL_GPL drivers/media/media 0x4b79fddb media_entity_init +EXPORT_SYMBOL_GPL drivers/media/media 0x4f48c0e4 media_device_unregister_entity +EXPORT_SYMBOL_GPL drivers/media/media 0x5303608a media_entity_pipeline_stop +EXPORT_SYMBOL_GPL drivers/media/media 0x53b395cc media_entity_cleanup +EXPORT_SYMBOL_GPL drivers/media/media 0x8c8b907a media_entity_pipeline_start +EXPORT_SYMBOL_GPL drivers/media/media 0x8d0dcecf media_entity_get +EXPORT_SYMBOL_GPL drivers/media/media 0x8e7dce89 media_entity_put +EXPORT_SYMBOL_GPL drivers/media/media 0x9acd8b9a __media_device_register +EXPORT_SYMBOL_GPL drivers/media/media 0xa123bc22 media_entity_graph_walk_next +EXPORT_SYMBOL_GPL drivers/media/media 0xa8295acb __media_entity_remove_links +EXPORT_SYMBOL_GPL drivers/media/media 0xb625e093 media_device_register_entity +EXPORT_SYMBOL_GPL drivers/media/media 0xba2f6f18 media_entity_find_link +EXPORT_SYMBOL_GPL drivers/media/media 0xcb50a8a2 media_entity_remote_pad +EXPORT_SYMBOL_GPL drivers/media/media 0xd73922ac media_entity_graph_walk_start +EXPORT_SYMBOL_GPL drivers/media/pci/cx88/cx88xx 0x7a9662a9 cx88_setup_xc3028 +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x0828a9b5 mantis_frontend_soft_reset +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x0eccd2fb mantis_uart_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x16efe1cc mantis_dvb_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x22b94ae8 mantis_get_mac +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x2638d3b9 mantis_dma_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x33e8216f mantis_i2c_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x35c8eac1 mantis_input_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x40d692c5 mantis_pci_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x52214d25 mantis_dvb_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x62f67f50 mantis_dma_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x643d1726 mantis_frontend_power +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x73a15e5e mantis_ca_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x77268d86 mantis_i2c_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x81e2b240 mantis_uart_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x8567e09c mantis_pci_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xc66dfe1f mantis_ca_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xc799e26e mantis_stream_control +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xca7bcfd3 mantis_gpio_set_bits +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xd7a3dcc6 mantis_input_init +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x099344ab saa7134_g_input +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x0a9f63f1 saa7134_s_std +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x138bb20b saa7134_ts_queue_setup +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x2b76799e saa7134_ts_stop_streaming +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x3d8e4587 saa7134_ts_start_streaming +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x6e58dea2 saa7134_vb2_buffer_queue +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x86ace67c saa7134_s_input +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x92cc22f9 saa7134_g_std +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x9a720d5e saa7134_querycap +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x9b3f71b1 saa7134_ts_buffer_init +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x9d5da5db saa7134_ts_buffer_prepare +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xa10f1e19 saa7134_enum_input +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xa802fdd2 saa7134_s_tuner +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xb577a923 saa7134_g_tuner +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xba010b85 saa7134_g_frequency +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xe503997f saa7134_ts_qops +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xeaa26a11 saa7134_s_frequency +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xf89db3a0 saa7134_querystd +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xffbd69b2 saa7134_stop_streaming +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x0c3a7b62 ttpci_budget_irq10_handler +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x101db98f ttpci_budget_init_hooks +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x59eb8d08 ttpci_budget_deinit +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x6a79b32f ttpci_budget_set_video_port +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x7948c222 budget_debug +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x833aaf4a ttpci_budget_debiwrite +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x86f15da5 ttpci_budget_debiread +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0xee18e2b3 ttpci_budget_init +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0x0b2585ce xvip_get_format_by_fourcc +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0x3c7eb685 xvip_set_format_size +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0x490bd11c xvip_get_format_by_code +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0x59d4b04e xvip_clr_and_set +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0x5caf2ba2 xvip_enum_mbus_code +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0x5ccb24f2 xvip_of_get_format +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0x5d171984 xvip_enum_frame_size +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0x69fe7cc4 xvip_cleanup_resources +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0xb1bc60cd xvip_clr_or_set +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0xe2e7eb2d xvip_init_resources +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-vtc 0x1147ead9 xvtc_of_get +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/radio/shark2 0x895bf17f radio_tea5777_init +EXPORT_SYMBOL_GPL drivers/media/radio/shark2 0xfb65784e radio_tea5777_exit +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x004c7ac7 rc_map_register +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x140767a4 rc_keydown_notimeout +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x17e1052f rc_close +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x2b08044a rc_allocate_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x333dee6c rc_register_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x3c2ff12b rc_free_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x4b031b0c ir_raw_event_store_with_filter +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x5103ca26 rc_repeat +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x553efb91 rc_core_debug +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x607df87b ir_raw_event_handle +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x696ca990 ir_raw_event_set_idle +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x78051291 rc_open +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x7da50e47 rc_map_unregister +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x7ff02d68 rc_g_keycode_from_table +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x93e43a49 rc_map_get +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x9a4c45d2 rc_keydown +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xc9fde88f ir_raw_event_store_edge +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xdc8b3caa rc_keyup +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xdea9c8e6 rc_unregister_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xe8bf6f05 ir_raw_event_store +EXPORT_SYMBOL_GPL drivers/media/tuners/mt2063 0xd668bc88 mt2063_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/mt20xx 0x23319798 microtune_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/mxl5007t 0xe7d39812 mxl5007t_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/r820t 0xc431cbbb r820t_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda18271 0x65c6b68f tda18271_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda827x 0x19922133 tda827x_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda8290 0x76811a5c tda829x_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda8290 0x9ce32405 tda829x_probe +EXPORT_SYMBOL_GPL drivers/media/tuners/tda9887 0x308a4e8b tda9887_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5761 0x1bca5896 tea5761_autodetection +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5761 0x720fd096 tea5761_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5767 0x334314bb tea5767_autodetection +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5767 0x9b817ac8 tea5767_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tuner-simple 0x889d661c simple_tuner_attach +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x017ea7c7 cx231xx_tuner_callback +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x0af791d4 cx231xx_disable656 +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x2122988b is_fw_load +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x3e5f7af4 cx231xx_uninit_vbi_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x601f6046 cx231xx_dev_uninit +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x60e833de cx231xx_send_usb_command +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x634994e4 cx231xx_init_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x67c68bdb cx231xx_uninit_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x7ed42078 cx231xx_unmute_audio +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x7ff88c3c cx231xx_set_mode +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x83c17a2a cx231xx_enable_i2c_port_3 +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xa3076869 cx231xx_init_vbi_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xa860826f cx231xx_set_alt_setting +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xbb65c76f cx231xx_dev_init +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xbfe43649 cx231xx_enable656 +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xc49c0ef3 cx231xx_init_bulk +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xdb5a9557 cx231xx_demod_reset +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xe71ac9ac cx231xx_send_gpio_cmd +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xf1644568 cx231xx_capture_start +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xf5f10460 cx231xx_uninit_bulk +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xfb8ce7d3 cx231xx_get_i2c_adap +EXPORT_SYMBOL_GPL drivers/media/usb/dvb-usb-v2/mxl111sf-demod 0x894bdcad mxl111sf_demod_attach +EXPORT_SYMBOL_GPL drivers/media/usb/dvb-usb-v2/mxl111sf-tuner 0x5dd22ee9 mxl111sf_tuner_attach +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x011c44b4 em28xx_write_regs +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x1f6df98b em28xx_alloc_urbs +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x1fd12b74 em28xx_find_led +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x28e0241b em28xx_stop_urbs +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x30b331dd em28xx_toggle_reg_bits +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x38674fed em28xx_write_reg_bits +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x513f3453 em28xx_write_ac97 +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x6c1f0eb0 em28xx_read_reg +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x6d578f78 em28xx_boards +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x7fc8652c em28xx_tuner_callback +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x81545143 em28xx_init_camera +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x91e6df47 em28xx_init_usb_xfer +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xa433be45 em28xx_set_mode +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xa6fe88f5 em28xx_read_ac97 +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xb625e6ef em28xx_gpio_set +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xbcaaa613 em28xx_audio_setup +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xc4e4740c em28xx_audio_analog_set +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xcd75ef7f em28xx_free_device +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xd816f60e em28xx_setup_xc3028 +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xdcc5f262 em28xx_uninit_usb_xfer +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xe2f7311f em28xx_write_reg +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x2309a6d6 tm6000_xc5000_callback +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x23a94b9c tm6000_set_reg +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x551b36be tm6000_get_reg +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x71c1ce45 tm6000_set_reg_mask +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/usb/tm6000/tm6000 0xf2cb2caa tm6000_set_audio_bitrate +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x01c483a9 v4l2_get_timestamp +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x10ee38c3 v4l2_spi_new_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x266b1d24 v4l2_i2c_new_subdev_board +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x397c205f v4l2_i2c_subdev_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x517d1f49 v4l2_i2c_new_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x5fbbda36 v4l2_spi_subdev_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x813f3de4 v4l2_find_nearest_format +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0xec3e377e v4l2_i2c_subdev_addr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0xf2a353ac v4l2_i2c_tuner_addrs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0xf5ef842e v4l_bound_align_image +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x08982d59 v4l2_match_dv_timings +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x4103badb v4l2_print_dv_timings +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x5491c182 v4l2_enum_dv_timings_cap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x67b8205b v4l2_detect_cvt +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x6f344bb9 v4l2_calc_aspect_ratio +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0xb0891da2 v4l2_dv_timings_presets +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0xdfa5a008 v4l2_valid_dv_timings +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0xf0e1988c v4l2_find_dv_timings_cap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0xf98d0f9d v4l2_detect_gtf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-flash-led-class 0xb690d6c9 v4l2_flash_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-flash-led-class 0xe629b385 v4l2_flash_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x01ac1289 v4l2_m2m_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x060179ca v4l2_m2m_ioctl_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x08f683f4 v4l2_m2m_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x145b629b v4l2_m2m_ioctl_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x17eb0eee v4l2_m2m_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x1ea4928a v4l2_m2m_buf_remove +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x27a6079f v4l2_m2m_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x2b550c5c v4l2_m2m_ctx_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x3bb076a9 v4l2_m2m_ioctl_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x3beb1716 v4l2_m2m_ioctl_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x3efce5d9 v4l2_m2m_try_schedule +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x4c68c9cf v4l2_m2m_fop_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x4f941afc v4l2_m2m_ioctl_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x50a81c02 v4l2_m2m_fop_mmap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x50df7ef4 v4l2_m2m_ioctl_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x6aec50ca v4l2_m2m_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x85da1d8a v4l2_m2m_ioctl_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x8891a401 v4l2_m2m_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x98408f4c v4l2_m2m_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xa26eb8cd v4l2_m2m_buf_queue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xa43632a0 v4l2_m2m_ctx_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xaf459e90 v4l2_m2m_next_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xb2219d35 v4l2_m2m_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xc6fca5ad v4l2_m2m_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xd6ec0df6 v4l2_m2m_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xd8c52247 v4l2_m2m_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xe12568a5 v4l2_m2m_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xebf05599 v4l2_m2m_ioctl_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xf4911cb9 v4l2_m2m_ioctl_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x16c0b606 videobuf_mmap_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x18f390d3 videobuf_queue_to_vaddr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x1fce23d1 videobuf_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x20c3c599 videobuf_alloc_vb +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x2c848520 videobuf_mmap_setup +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x40ebb04b videobuf_read_start +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x4fac1afd videobuf_next_field +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x56879fa1 videobuf_stop +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x6fbae91c videobuf_read_stream +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x7c384fb1 videobuf_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x8b925e1e videobuf_queue_core_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x92df64e6 __videobuf_mmap_setup +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x94894737 videobuf_waiton +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xa6079a1d videobuf_queue_is_busy +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xb5a35010 videobuf_iolock +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xc99f02e3 videobuf_read_one +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xcef81d60 videobuf_poll_stream +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xd0118af0 videobuf_mmap_mapper +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xd0cd725a videobuf_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xd6c94503 videobuf_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xdf7e4fd0 videobuf_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xdfee5d13 videobuf_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xef105af1 videobuf_read_stop +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xf3921a84 videobuf_queue_cancel +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x6e15af54 videobuf_to_dma +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x7e98b9cf videobuf_queue_sg_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0xa4082206 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 0xdb4ab5f9 videobuf_dma_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-vmalloc 0x3d54b3d5 videobuf_queue_vmalloc_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-vmalloc 0xbe9ceb7e videobuf_vmalloc_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-vmalloc 0xe25ac3c8 videobuf_to_vmalloc +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x094bf314 vb2_ioctl_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x0a3e2f1d vb2_queue_error +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x0d27b829 vb2_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x0d8df844 vb2_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x0ec5ec16 vb2_ops_wait_prepare +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x19f16c97 vb2_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x1c397aa9 vb2_wait_for_all_buffers +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x1e3f67ca vb2_mmap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x1ffad6a4 vb2_ioctl_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x21fdc806 vb2_fop_mmap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x293a19bc vb2_ioctl_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x2c1476db vb2_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x2fcefbd1 vb2_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x31b2a2e6 vb2_read +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x3f964482 vb2_fop_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x56f0cf6f vb2_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x58599ec5 vb2_ioctl_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x5d64e13f vb2_discard_done +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x5da5671d vb2_ioctl_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x5e6b1e84 vb2_thread_stop +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x6b989590 _vb2_fop_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x81ca296c vb2_fop_read +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x89ad7f64 vb2_plane_vaddr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x8ae1fd65 vb2_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x9256d5a0 vb2_ioctl_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xa9cf2490 vb2_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xaca9dcf0 vb2_ioctl_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xb129ce6b vb2_plane_cookie +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xb843c115 vb2_ops_wait_finish +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xb87e8fc3 vb2_ioctl_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xb95b7c46 vb2_write +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xc3c5f017 vb2_queue_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xc5b8de01 vb2_buffer_done +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xca08562a vb2_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xd6f56016 vb2_queue_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xd7c5d136 vb2_thread_start +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xd81d1c60 vb2_ioctl_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xf852e49e vb2_fop_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xfc1d8680 vb2_fop_write +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-contig 0x4e720f77 vb2_dma_contig_memops +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-contig 0xe57f0426 vb2_dma_contig_cleanup_ctx +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-contig 0xf1533a30 vb2_dma_contig_init_ctx +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-sg 0x7999f7c5 vb2_dma_sg_memops +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-sg 0xd30ec30f vb2_dma_sg_cleanup_ctx +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-sg 0xeb40cb64 vb2_dma_sg_init_ctx +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-memops 0x05597d8d vb2_get_contig_userptr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-memops 0x3c00e939 vb2_get_vma +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-memops 0x9b33721c vb2_put_vma +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-memops 0xe7724032 vb2_common_vm_ops +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-vmalloc 0x92aad5f5 vb2_vmalloc_memops +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x073b6e81 v4l2_device_unregister_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x0fa1f738 v4l2_event_queue_fh +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x10f6ed5e v4l2_fh_add +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x1834e1e2 v4l2_fh_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x1abcc1e8 v4l2_device_register_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x27e0ee66 v4l2_device_disconnect +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x31f8504c v4l2_fh_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x5444a1c0 v4l2_event_unsubscribe_all +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x65e54181 v4l2_device_put +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x6641ae80 v4l2_event_subscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x6866cf66 v4l2_subdev_link_validate +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x6d1de05f v4l2_event_subdev_unsubscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x7297878d v4l2_fh_open +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x80f9525c v4l2_fh_exit +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x94c897e7 v4l2_src_change_event_subscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x95761992 v4l2_device_register +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x9b023719 v4l2_device_unregister +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x9be7077e v4l2_fh_del +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xa69c404d v4l2_subdev_link_validate_default +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xb9df6b7a v4l2_event_dequeue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xc2a719c5 v4l2_device_set_name +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xce3470de v4l2_event_queue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xd74f5e79 v4l2_device_register_subdev_nodes +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xeae849bb v4l2_event_pending +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xec300396 v4l2_fh_is_singular +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xf933fa7b v4l2_event_unsubscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xfdf3d66c v4l2_src_change_event_subdev_subscribe +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0x1d399237 pm80x_init +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0x897046fb pm80x_pm_ops +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0x8edee5f6 pm80x_regmap_config +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0xd99fd720 pm80x_deinit +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0x39edd59e da9150_bulk_write +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0x47bbee16 da9150_set_bits +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0x96fbf59d da9150_bulk_read +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0xce17c593 da9150_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0xe3b86f42 da9150_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x0f39b9a8 kempld_write32 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x43f8ac66 kempld_write8 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x4eb4668c kempld_read8 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x6976c093 kempld_get_mutex +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x70856c2e kempld_read16 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x72835648 kempld_read32 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0xa70d6dc3 kempld_release_mutex +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0xec5392d1 kempld_write16 +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0x4f73f604 lm3533_read +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0xb6487965 lm3533_write +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0xe077f917 lm3533_update +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x01075499 lm3533_ctrlbank_get_pwm +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x0c5e8993 lm3533_ctrlbank_disable +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x2bc2faa2 lm3533_ctrlbank_set_pwm +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x733663c3 lm3533_ctrlbank_set_max_current +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x7b2e4a4a lm3533_ctrlbank_set_brightness +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0xe25f8e47 lm3533_ctrlbank_enable +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0xf0bb96a6 lm3533_ctrlbank_get_brightness +EXPORT_SYMBOL_GPL drivers/mfd/lp3943 0x97f50625 lp3943_write_byte +EXPORT_SYMBOL_GPL drivers/mfd/lp3943 0xb0b916e4 lp3943_update_bits +EXPORT_SYMBOL_GPL drivers/mfd/lp3943 0xec60b9f3 lp3943_read_byte +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x29941643 mc13xxx_common_init +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x3e97008c mc13xxx_common_exit +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x4a60e9ac mc13xxx_adc_do_conversion +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x9dfeac5f mc13xxx_variant_mc13892 +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0xcf4b1217 mc13xxx_variant_mc34708 +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0xdd44e77f mc13xxx_variant_mc13783 +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x127bcaf7 pcf50633_read_block +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x3e39dc50 pcf50633_irq_mask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x75bb9f3b pcf50633_irq_mask_get +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x9a80381f pcf50633_free_irq +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x9f0eaf49 pcf50633_reg_set_bit_mask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xa69c3a18 pcf50633_reg_clear_bits +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xaa97a0c2 pcf50633_write_block +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xab7825e1 pcf50633_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xbd5e1dcb pcf50633_irq_unmask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xc0f77ffb pcf50633_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xe9312dc4 pcf50633_register_irq +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-adc 0x09d25e29 pcf50633_adc_async_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-adc 0xaaf34c6d pcf50633_adc_sync_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x1ca64c6f pcf50633_gpio_power_supply_set +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x491b4213 pcf50633_gpio_set +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x58b3b0a8 pcf50633_gpio_invert_set +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x6938e17e pcf50633_gpio_get +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x73b6bb12 pcf50633_gpio_invert_get +EXPORT_SYMBOL_GPL drivers/mfd/retu-mfd 0x01a33234 retu_write +EXPORT_SYMBOL_GPL drivers/mfd/retu-mfd 0x4fca3918 retu_read +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x0324b46d rtsx_pci_switch_clock +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x16bf3af9 rtsx_pci_card_pull_ctl_enable +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x28b5ac53 rtsx_pci_send_cmd_no_wait +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x390ea2af rtsx_pci_read_ppbuf +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x3f6896cb rtsx_pci_read_phy_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x53bba9f7 rtsx_pci_transfer_data +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x54c9383c rtsx_pci_card_power_on +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x5c9a1c3f rtsx_pci_start_run +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x68da45e1 rtsx_pci_card_exclusive_check +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x71fa5f17 rtsx_pci_dma_transfer +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x7786a42c rtsx_pci_dma_map_sg +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x85e2b863 rtsx_pci_card_power_off +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x88252078 rtsx_pci_stop_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x8b2f8c29 rtsx_pci_complete_unfinished_transfer +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x966eb772 rtsx_pci_send_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x97b61398 rtsx_pci_write_phy_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xb6537d91 rtsx_pci_card_exist +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xbfc8db95 rtsx_pci_dma_unmap_sg +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xc908cc8a rtsx_pci_add_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xc92db36d rtsx_pci_card_pull_ctl_disable +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xca3938e4 rtsx_pci_read_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xd3f33caf rtsx_pci_write_ppbuf +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xe3a6d3ed rtsx_pci_switch_output_voltage +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xeb840669 rtsx_pci_write_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x1053c376 rtsx_usb_get_card_status +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x11fcb6c1 rtsx_usb_read_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x1b65c011 rtsx_usb_write_ppbuf +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x258f2ad6 rtsx_usb_ep0_write_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x472e6017 rtsx_usb_send_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x6862ffbe rtsx_usb_add_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x8709e199 rtsx_usb_card_exclusive_check +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0xa7780fb9 rtsx_usb_write_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0xb6d22adb rtsx_usb_transfer_data +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0xc3ede08d rtsx_usb_ep0_read_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0xca2d33bc rtsx_usb_switch_clock +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0xd1c6d968 rtsx_usb_read_ppbuf +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0xdb656650 rtsx_usb_get_rsp +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x02726471 si476x_core_cmd_fm_rsq_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x0a485f54 si476x_core_has_am +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x117122f5 si476x_core_cmd_am_acf_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x1da5b761 si476x_core_cmd_agc_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x304c56e7 si476x_core_start +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x30c8a952 si476x_core_cmd_am_seek_start +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x30f051a6 si476x_core_cmd_intb_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x345b2f4f si476x_core_stop +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x36ff890d si476x_core_cmd_ic_link_gpo_ctl_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x39dbe6f0 si476x_core_cmd_fm_phase_diversity +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x44417dc3 si476x_core_cmd_fm_rds_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x46974660 si476x_core_cmd_power_down +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x50eaf3f8 si476x_core_cmd_fm_phase_div_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x57bf9967 si476x_core_has_diversity +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x5fbd3cbe si476x_core_cmd_am_rsq_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x683ea475 si476x_core_i2c_xfer +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x6fd62bf5 si476x_core_is_a_primary_tuner +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x77cbea97 si476x_core_cmd_dig_audio_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x7cae95c7 si476x_core_cmd_fm_acf_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x8a4957e4 si476x_core_cmd_fm_tune_freq +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x8bccc582 si476x_core_cmd_set_property +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x917ec3ff si476x_core_is_in_am_receiver_mode +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x98b67ceb si476x_core_cmd_func_info +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x9977a899 si476x_core_is_a_secondary_tuner +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xbd19489a si476x_core_cmd_fm_seek_start +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xc19559c9 si476x_core_cmd_am_tune_freq +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xc224fd96 si476x_core_is_powered_up +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xc903a935 si476x_core_cmd_ana_audio_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xdd66a343 si476x_core_cmd_zif_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xe90d0d43 devm_regmap_init_si476x +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xedf94f23 si476x_core_set_power_state +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xee1f8124 si476x_core_cmd_fm_rds_blockcount +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xf0d0b87a si476x_core_cmd_get_property +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xf54b5651 si476x_core_cmd_power_up +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x17f1c7e7 sm501_unit_power +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x3348eebf sm501_set_clock +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x8b8f1c16 sm501_find_clock +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0xc68ed8cd sm501_modify_reg +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0xfe36d46d sm501_misc_control +EXPORT_SYMBOL_GPL drivers/mfd/ti_am335x_tscadc 0x77121c1c am335x_tsc_se_adc_done +EXPORT_SYMBOL_GPL drivers/mfd/ti_am335x_tscadc 0x8cf2a658 am335x_tsc_se_clr +EXPORT_SYMBOL_GPL drivers/mfd/ti_am335x_tscadc 0xa9ccff23 am335x_tsc_se_set_cache +EXPORT_SYMBOL_GPL drivers/mfd/ti_am335x_tscadc 0xa9fe0217 am335x_tsc_se_set_once +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0x5b9001f8 tps65217_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0x5bb56a1d tps65217_set_bits +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0x9b137aa5 tps65217_clear_bits +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0xaf6c6ae9 tps65217_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/tps65218 0x28c0435c tps65218_set_bits +EXPORT_SYMBOL_GPL drivers/mfd/tps65218 0x5ea72315 tps65218_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/tps65218 0xbcf58343 tps65218_clear_bits +EXPORT_SYMBOL_GPL drivers/mfd/tps65218 0xe73783b4 tps65218_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/ucb1400_core 0x48c731d4 ucb1400_adc_read +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0x17bc5ddd cb710_pci_update_config_reg +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0x773e1bd6 cb710_sg_dwiter_write_next_block +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0x99f2e35a cb710_sg_dwiter_read_next_block +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0xb8e75d01 cb710_set_irq_handler +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0x1a1b5249 oslec_flush +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0x2feda75b oslec_hpf_tx +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0x3227a28e oslec_snapshot +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0x7dc9dddd oslec_adaption_mode +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0xb2c66001 oslec_create +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0xc8b5a524 oslec_free +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0xd370f679 oslec_update +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0x27cb133b eeprom_93cx6_multiread +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0x63d2ff63 eeprom_93cx6_wren +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0x793fc8de eeprom_93cx6_multireadb +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0x822222db eeprom_93cx6_write +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0x98bb5a22 eeprom_93cx6_read +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0xdb9ca14b eeprom_93cx6_readb +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x1655b0a4 enclosure_remove_device +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x3a24b8de enclosure_component_alloc +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x6277f215 enclosure_component_register +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x67bc0096 enclosure_register +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x82a19610 enclosure_add_device +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x9f216c80 enclosure_find +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0xa7c387a3 enclosure_unregister +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0xab85b0cd enclosure_for_each_device +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x2f4f035a lis3lv02d_remove_fs +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x5fe15edc lis3lv02d_poweron +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x6543ce3a lis3_dev +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x762470e8 lis3lv02d_poweroff +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xb4732032 lis3lv02d_joystick_disable +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xb8168e9f lis3lv02d_init_device +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xd42e6941 lis3lv02d_joystick_enable +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xda30bf37 lis3lv02d_init_dt +EXPORT_SYMBOL_GPL drivers/misc/ti-st/st_drv 0x55c61ed4 st_register +EXPORT_SYMBOL_GPL drivers/misc/ti-st/st_drv 0x77138830 st_unregister +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x05d9e4d5 sdhci_runtime_suspend_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x1d6f2af0 sdhci_alloc_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x20622de6 sdhci_remove_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x4c2362ec sdhci_set_bus_width +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x51555b39 sdhci_enable_irq_wakeups +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x720011e3 sdhci_set_uhs_signaling +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x926a1400 sdhci_suspend_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x96ce447c sdhci_resume_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xb06a700c sdhci_send_command +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xb63a5a2e sdhci_set_clock +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xec42e7e3 sdhci_reset +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xf7e71977 sdhci_runtime_resume_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xf89f30fd sdhci_free_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xf8e1a311 sdhci_add_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x41d3345f sdhci_pltfm_suspend +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x63e5bb15 sdhci_pltfm_register +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x63eab5d4 sdhci_pltfm_free +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x755043e1 sdhci_pltfm_init +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x78ec53aa sdhci_pltfm_resume +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x9dd30a1c sdhci_pltfm_unregister +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0xa4253657 sdhci_get_of_property +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0xb09a3b39 sdhci_pltfm_clk_get_max_clock +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0xd9b5841f sdhci_pltfm_pmops +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0x457a9f66 cfi_cmdset_0001 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0x7a53ba8e cfi_cmdset_0003 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0x874d9f18 cfi_cmdset_0200 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0x00a2d7c1 cfi_cmdset_0006 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0x7ef09c11 cfi_cmdset_0002 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0x8d095397 cfi_cmdset_0701 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0020 0xf4004efd cfi_cmdset_0020 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0x15404575 cfi_qry_present +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0xd7353093 cfi_qry_mode_on +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0xe1bdd172 cfi_qry_mode_off +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x07cf58d0 mtd_unlock +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x0af4c94e __get_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x158dfe9c mtd_write +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x18c61e04 mtd_erase_callback +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x1c35fd0f mtd_block_isreserved +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x1f5bac42 __put_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x24318f0a mtd_get_device_size +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x2659710a put_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x343e6c25 mtd_lock +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x39dbfddb mtd_block_isbad +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x3addb998 register_mtd_parser +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x3b4391bc mtd_panic_write +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x57ec1c1b mtd_point +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x626c3219 mtd_add_partition +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x6298ab3e mtd_read_oob +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x64bbc1ce mtd_is_partition +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x6bfb6d4b deregister_mtd_parser +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x70c40c05 mtd_is_locked +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x75c80b4d mtd_device_unregister +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x855c7b99 mtd_table_mutex +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x8984b81a mtd_read +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x8b31027a unregister_mtd_user +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xa0e53942 __mtd_next_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xa9736177 get_mtd_device_nm +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xac26f46b mtd_kmalloc_up_to +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xb5c2c2bf mtd_get_user_prot_info +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xbfc5e3b1 mtd_write_user_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xcc026f82 register_mtd_user +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xcc589b45 mtd_block_markbad +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xcf9ac026 mtd_unpoint +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xd28d17bc kill_mtd_super +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xd5765b60 mtd_get_fact_prot_info +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xda3b9ae9 get_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xdc88bd1e mtd_get_unmapped_area +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xdd695a68 mtd_del_partition +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xe45fc261 mount_mtd +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xe6ae5d91 mtd_lock_user_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xeecb88f7 mtd_writev +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xf7dfc8dc mtd_device_parse_register +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xfb2b85a3 mtd_read_fact_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xfc1632f0 mtd_erase +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xff3c8f3c mtd_read_user_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0x09882c7f del_mtd_blktrans_dev +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0x31a72f38 deregister_mtd_blktrans +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0x327c6369 mtd_blktrans_cease_background +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0x6d734459 add_mtd_blktrans_dev +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0x9a9803f2 register_mtd_blktrans +EXPORT_SYMBOL_GPL drivers/mtd/nand/nand 0x3838efa7 nand_wait_ready +EXPORT_SYMBOL_GPL drivers/mtd/nand/nand 0x3b3ab963 nand_release +EXPORT_SYMBOL_GPL drivers/mtd/nand/sm_common 0x95c16c38 sm_register_device +EXPORT_SYMBOL_GPL drivers/mtd/onenand/onenand 0x35943659 onenand_scan +EXPORT_SYMBOL_GPL drivers/mtd/onenand/onenand 0x58aa865a onenand_release +EXPORT_SYMBOL_GPL drivers/mtd/spi-nor/spi-nor 0xc76b98fc spi_nor_scan +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x076f1615 ubi_leb_change +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x0dd71d15 ubi_do_get_device_info +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x38e10c1d ubi_flush +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x3a645c54 ubi_leb_map +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x3c5325f0 ubi_open_volume +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x3e4fd88b ubi_is_mapped +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x42801d20 ubi_sync +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x49555c3d ubi_get_volume_info +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x5cfdd22d ubi_get_device_info +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x642813ca ubi_leb_read +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x649709a1 ubi_leb_unmap +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x72dee40c ubi_open_volume_path +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x85a8ee76 ubi_unregister_volume_notifier +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xaa904070 ubi_close_volume +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xb0e51d25 ubi_open_volume_nm +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xb30500cb ubi_leb_write +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xc627e06b ubi_leb_erase +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xf5ee9ba8 ubi_register_volume_notifier +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xfe09744a ubi_leb_read_sg +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x568d4d93 alloc_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x5efd2eb0 register_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x6d616034 c_can_power_down +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x823b37aa c_can_power_up +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0xa6dd6d5d free_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0xb9d4e973 unregister_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x0b648f8c devm_can_led_init +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x0e4c177b unregister_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x124ded4a register_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x222c295a can_len2dlc +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x2c992eb8 can_change_mtu +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x3b72f297 alloc_canfd_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x4843b233 can_put_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x48e0f5b6 can_led_event +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x6accedb8 alloc_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x6ff7c26f can_free_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x76c522c6 free_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xa7d9a1a0 can_get_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xaed70079 alloc_can_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xb346573b can_dlc2len +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xb7c19cfb close_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xb91e86a8 safe_candev_priv +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xbdddcd9f alloc_can_err_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xe6a25080 can_change_state +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xe7804756 can_bus_off +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xf3d45560 open_candev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0x783dce98 alloc_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0xb2e38300 register_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0xc557950f unregister_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0xf0b6df5f free_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x042b1ef2 unregister_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x2899dec9 free_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x49ebd0d2 sja1000_interrupt +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x7767c0d8 register_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0xf44a6752 alloc_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/ethernet/arc/arc_emac 0x15b7c697 arc_emac_probe +EXPORT_SYMBOL_GPL drivers/net/ethernet/arc/arc_emac 0x4c589dfc arc_emac_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x00180b8e mlx4_FLOW_STEERING_IB_UC_QP_RANGE +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x01f36f69 mlx4_unicast_promisc_add +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x03fed555 mlx4_uar_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0948be7c mlx4_phys_to_slave_port +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x09b4bfe2 mlx4_qp_release_range +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x09f83db6 mlx4_find_cached_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0c481554 mlx4_set_vf_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x11316d2e mlx4_multicast_detach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x12c32e0d mlx4_get_vf_stats +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x13cf84df mlx4_pd_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1496207b __mlx4_replace_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1672f1b5 mlx4_phys_to_slaves_pport_actv +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x18409335 mlx4_unregister_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1b197fea mlx4_xrcd_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1f3c1aba mlx4_mr_enable +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x23a7d9c0 mlx4_qp_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x23b8c7da mlx4_config_dev_retrieval +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x253506e0 mlx4_mr_hw_put_mpt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x292ff1c7 mlx4_unicast_promisc_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2b9933fa mlx4_SYNC_TPT +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2d23b5db mlx4_unregister_interface +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2e563ffc mlx4_get_internal_clock_params +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x30c4948d mlx4_get_counter_stats +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3802a2b8 mlx4_cq_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3981d3f0 mlx4_mr_hw_write_mpt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3bb1bf31 mlx4_multicast_promisc_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3cdfe721 mlx4_qp_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3d75e29c mlx4_buf_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3fa481bb mlx4_xrcd_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x43b8b05d mlx4_srq_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x43cbca5b mlx4_srq_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x44f0c966 mlx4_mr_hw_change_pd +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x451dd778 mlx4_cq_modify +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4600ef10 mlx4_map_sw_to_hw_steering_id +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4913e706 mlx4_qp_reserve_range +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x49897525 mlx4_set_admin_guid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x49a6ab22 mlx4_set_vf_rate +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4b2afb36 mlx4_srq_lookup +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4ccee724 mlx4_mw_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4d63f74a mlx4_fmr_unmap +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4e21942b mlx4_get_protocol_dev +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4e979125 mlx4_flow_detach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x507a523c mlx4_map_phys_fmr +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x541688b6 mlx4_hw_rule_sz +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x56188c6b mlx4_get_admin_guid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x57d594fb mlx4_INIT_PORT +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5a10f45f mlx4_mr_rereg_mem_write +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5abdf9ac mlx4_qp_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x69bc94ef mlx4_set_vf_link_state +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6adfd4a2 mlx4_register_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6bbf38aa mlx4_update_qp +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6c382667 mlx4_wol_write +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7019a452 mlx4_mr_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x70abcadd mlx4_vf_get_enable_smi_admin +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x719d704d mlx4_buf_write_mtt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x73301213 mlx4_vf_smi_enabled +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x73e8b9e7 mlx4_pd_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x757fc667 mlx4_read_clock +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x75c9263d mlx4_mr_hw_get_mpt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x775b044a mlx4_free_cmd_mailbox +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x775d3aa6 mlx4_cq_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x815834a9 mlx4_db_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x81c6b792 mlx4_uar_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x849b5483 mlx4_alloc_cmd_mailbox +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8abffe32 mlx4_write_mtt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8ef95baf mlx4_free_hwq_res +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9079fdb9 mlx4_mtt_init +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x913a62c7 mlx4_get_default_counter_index +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x94e03257 mlx4_map_sw_to_hw_steering_mode +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9ac11156 mlx4_port_map_set +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9c4a361e mlx4_srq_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa19b4d74 __mlx4_register_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa1a76257 mlx4_unicast_attach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa3318f99 mlx4_flow_attach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa51ec402 mlx4_get_active_ports +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa68bb5bf mlx4_multicast_attach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa7c34999 mlx4_bf_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa9940a80 mlx4_phys_to_slaves_pport +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa9be6538 mlx4_mw_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xab45d867 mlx4_db_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xab5bb9f2 mlx4_srq_arm +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xac6bfcad mlx4_fmr_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xad3691cd mlx4_mw_enable +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xae2dbb3d __mlx4_cmd +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xaef82d87 mlx4_register_interface +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb089d6cd mlx4_fmr_enable +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb1aa0d1a mlx4_bf_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb77f161a mlx4_CLOSE_PORT +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb7fe909a mlx4_flow_steer_promisc_add +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb89c675c mlx4_get_vf_config +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb964e558 mlx4_fmr_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbb4ca41a mlx4_register_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbcc6bad4 mlx4_buf_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc022cc47 mlx4_find_cached_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc38461c0 mlx4_get_base_gid_ix +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xcd639dc7 mlx4_unbond +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xcfe7a1f9 __mlx4_unregister_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd20e40a5 mlx4_get_slave_default_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd4185c86 mlx4_mr_rereg_mem_cleanup +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd4ba6b33 mlx4_mtt_cleanup +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd62e24e8 mlx4_config_vxlan_port +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd737d133 mlx4_counter_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd933477f mlx4_counter_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd973364b mlx4_vf_set_enable_smi_admin +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd9ba81c6 mlx4_qp_to_ready +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xdf4eab64 mlx4_multicast_promisc_add +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe15b5e99 mlx4_alloc_hwq_res +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe557570a mlx4_mr_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe5c07c43 mlx4_wol_read +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe6f88925 mlx4_flow_steer_promisc_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe7a819a2 mlx4_cq_resize +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe9a7ce60 mlx4_bond +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe9ce4415 mlx4_slave_convert_port +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xed960403 mlx4_mr_hw_change_access +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xee60039c mlx4_unregister_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xef545394 mlx4_get_base_qpn +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xeff0987f mlx4_set_vf_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf1e0195a mlx4_ACCESS_PTYS_REG +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf20ee764 mlx4_mtt_addr +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf886a687 mlx4_qp_modify +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf8e218f8 mlx4_qp_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf9052929 mlx4_unicast_detach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xff18bef3 mlx4_set_vf_spoofchk +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x09543b3d mlx5_fill_page_array +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x0be3e53c mlx5_core_eq_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x12e99fb2 mlx5_db_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x1b683921 mlx5_query_port_link_width_oper +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x2657f78c mlx5_set_port_caps +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x31f71104 mlx5_set_port_mtu +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x33cf9901 mlx5_core_access_reg +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x37922a30 mlx5_buf_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x68f497ed mlx5_core_qp_modify +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x69b323de mlx5_core_mad_ifc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x69c024b9 mlx5_query_port_max_mtu +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x70ddc229 mlx5_core_xrcd_dealloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x78c7a49e mlx5_db_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x7a371466 mlx5_core_create_qp +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x81a74a5e mlx5_buf_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x84067daa mlx5_create_map_eq +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x890be8e5 mlx5_destroy_unmap_eq +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x9ce2b2fc mlx5_query_port_vl_hw_cap +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xae263eab mlx5_query_hca_vport_system_image_guid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xae4aa554 mlx5_query_port_proto_admin +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xaf216511 mlx5_db_alloc_node +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xb5293eb3 mlx5_core_destroy_qp +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xbc3d18cc mlx5_query_hca_vport_pkey +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xbeebfbc1 mlx5_query_hca_vport_gid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xc509d0ad mlx5_query_port_proto_cap +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xc771ce97 mlx5_set_port_proto +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xcdd9fde5 mlx5_query_port_proto_oper +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe4887d34 mlx5_core_qp_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe4f64640 mlx5_query_port_oper_mtu +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xeb9e85c3 mlx5_query_port_admin_status +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf16dea08 mlx5_query_hca_vport_node_guid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf1b37a6b mlx5_set_port_admin_status +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf4d415bf mlx5_query_hca_vport_context +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf7f4af20 mlx5_core_xrcd_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xfc830550 mlx5_core_page_fault_resume +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xfd7f31a0 mlx5_query_port_ptys +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac 0x775b3b89 stmmac_dvr_probe +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac 0xd9cf2ee5 stmmac_suspend +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac 0xef20b259 stmmac_resume +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac 0xffbb804a stmmac_dvr_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac-platform 0x5a1b661d stmmac_pltfr_probe +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac-platform 0xbef5603c stmmac_pltfr_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac-platform 0xe2367d4f stmmac_pltfr_pm_ops +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x05af58e0 cpsw_ale_del_ucast +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x0d670d58 cpsw_ale_del_mcast +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x4123c8c2 cpsw_ale_stop +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x4d17e527 cpsw_ale_control_get +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x6fdb2a4c cpsw_ale_start +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x711d103f cpsw_ale_add_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x8188f926 cpsw_ale_add_ucast +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x89eda604 cpsw_ale_flush_multicast +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x929d87ac cpsw_ale_destroy +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x9dce4b20 cpsw_ale_set_allmulti +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x9ec19be8 cpsw_ale_del_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0xb4a88be7 cpsw_ale_add_mcast +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0xb4b49303 cpsw_ale_create +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0xc5ce17e0 cpsw_ale_dump +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0xd0347111 cpsw_ale_control_set +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x112bd8eb macvlan_link_register +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x44daa65f macvlan_dellink +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x6b023464 macvlan_common_setup +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x6d2075be macvlan_common_newlink +EXPORT_SYMBOL_GPL drivers/net/macvtap 0xdbe62f71 macvtap_get_socket +EXPORT_SYMBOL_GPL drivers/net/phy/mdio-mux 0x6318757f mdio_mux_uninit +EXPORT_SYMBOL_GPL drivers/net/phy/mdio-mux 0xd74d5ffa mdio_mux_init +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0x06d0035c usbnet_cdc_bind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0x165ed8d3 usbnet_generic_cdc_bind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0xbe681912 usbnet_cdc_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0xdbc08395 usbnet_cdc_status +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x0e9c70b4 cdc_ncm_rx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x225a8ddf cdc_ncm_select_altsetting +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x30767f9b cdc_ncm_tx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x35a78c0f cdc_ncm_rx_verify_ndp16 +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x493d4f71 cdc_ncm_rx_verify_nth16 +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0xb0f54e93 cdc_ncm_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0xda1f09a4 cdc_ncm_bind_common +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0xfc42aedd cdc_ncm_fill_tx_frame +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x4dd958e5 rndis_rx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x8bd9120d rndis_command +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x9b23a7db rndis_status +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0xa852aa55 rndis_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0xd3e0f621 rndis_tx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0xe02060d2 generic_rndis_bind +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x0658d776 usbnet_update_max_qlen +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x0bf3037d usbnet_disconnect +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x1469a220 usbnet_pause_rx +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x2013681a usbnet_unlink_rx_urbs +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x28599ebf usbnet_nway_reset +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x361b6961 usbnet_resume +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x39808316 usbnet_start_xmit +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x419e6870 usbnet_resume_rx +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x4201723b usbnet_get_msglevel +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x497949f0 usbnet_purge_paused_rxq +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x5c7f294b usbnet_write_cmd_async +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x601d098d usbnet_read_cmd_nopm +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x601ff818 usbnet_tx_timeout +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x618746c7 usbnet_write_cmd_nopm +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x62684390 usbnet_get_ethernet_addr +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x62696f27 usbnet_probe +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x7488388d usbnet_set_settings +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x790c4d92 usbnet_get_drvinfo +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x84a2af33 usbnet_get_settings +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x8c0b708c usbnet_defer_kevent +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x929fdb4e usbnet_suspend +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x9993aca7 usbnet_set_msglevel +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xad77230d usbnet_skb_return +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xb4aa4788 usbnet_open +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xbabf2988 usbnet_get_endpoints +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xbba8c9f4 usbnet_get_link +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xc8c659d6 usbnet_status_stop +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xd00e3806 usbnet_stop +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xd0e95192 usbnet_read_cmd +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xebfc5ab6 usbnet_status_start +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xfbe787d5 usbnet_change_mtu +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xfbe96505 usbnet_write_cmd +EXPORT_SYMBOL_GPL drivers/net/vxlan 0x3f226155 vxlan_xmit_skb +EXPORT_SYMBOL_GPL drivers/net/vxlan 0xba2e3c68 vxlan_sock_add +EXPORT_SYMBOL_GPL drivers/net/vxlan 0xd4d41339 vxlan_sock_release +EXPORT_SYMBOL_GPL drivers/net/vxlan 0xfb78140e vxlan_get_rx_port +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x04dfae8b i2400m_tx_msg_sent +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x0910ff95 i2400m_pre_reset +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x10b13ac0 i2400m_is_boot_barker +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x2632b292 i2400m_reset +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x3bffb944 i2400m_error_recovery +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x52b06fd9 i2400m_tx +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x52dc6331 i2400m_rx +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x86906be9 i2400m_dev_reset_handle +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x8ea57d61 i2400m_release +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xa0063e08 i2400m_dev_bootstrap +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xa06377fc i2400m_init +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xa379a168 i2400m_cmd_enter_powersave +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xa6c39012 i2400m_tx_msg_get +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xafe03b7a i2400m_post_reset +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xb00b793c i2400m_bm_cmd_prepare +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xc5672d03 i2400m_netdev_setup +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xdb3933b6 i2400m_setup +EXPORT_SYMBOL_GPL drivers/net/wireless/cw1200/cw1200_core 0x44113558 cw1200_can_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/cw1200/cw1200_core 0x71bac97f cw1200_irq_handler +EXPORT_SYMBOL_GPL drivers/net/wireless/cw1200/cw1200_core 0x7b7fa2e4 cw1200_core_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/cw1200/cw1200_core 0xf820b786 cw1200_core_release +EXPORT_SYMBOL_GPL drivers/net/wireless/ipw2x00/libipw 0xa3214011 libipw_rx_any +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0x0ab79c88 _il_grab_nic_access +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0x1adcf335 il_dealloc_bcast_stations +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0x453af8bb il_prep_station +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0x5077ea2a il_mac_tx_last_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0xe4978a9e il_remove_station +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x015e62ee iwl_clear_bits_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x0a370e66 iwl_nvm_check_version +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x0a5d34f1 __iwl_warn +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x0d556623 iwl_abort_notification_waits +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x1259c214 iwl_parse_nvm_mcc_info +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x1291ef1b iwl_init_notification_wait +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x1ac36ff0 iwl_notification_wait_notify +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x1b5b7c98 iwl_set_bits_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x1cfb7d67 iwl_phy_db_init +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x240740e3 iwl_read_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x34e9c2e1 iwl_parse_eeprom_data +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x35033c81 iwl_phy_db_free +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x3d548dab iwl_remove_notification +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x43760fca iwl_parse_nvm_data +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x46016b89 iwl_opmode_register +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x51b657cd iwlwifi_mod_params +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x5c52e109 iwl_opmode_deregister +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x5ce6a0f0 __iwl_crit +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x6f562748 iwl_write_direct32 +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x776221bf iwl_send_phy_db_data +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x7affa055 iwl_poll_bit +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x7d2b6e43 iwl_write_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x891ef5fd iwl_force_nmi +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x8c5d5ab3 iwl_phy_db_set_section +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x9496980f iwl_read_direct32 +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xaa6d08eb iwl_wait_notification +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xb2722afc __iwl_err +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xc63fa208 __iwl_dbg +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xc67c31ed iwl_notification_wait_init +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xcb996cbf iwl_poll_direct_bit +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xe685be8e iwl_read_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xf398bc9f __iwl_info +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xf65edbdb iwl_set_bits_mask_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x05c5b169 lbs_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x175583c7 lbs_notify_command_response +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x2253cdfa lbs_send_tx_feedback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x3bfc1f7a lbs_stop_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x4d23f471 lbs_start_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x50e33dc6 lbs_cmd_copyback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x5fdf38b8 lbs_disablemesh +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x6e8e3485 lbs_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x8066218a lbs_get_firmware_async +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x84760978 lbs_queue_event +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x875a8952 lbs_process_rxed_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xb5d97792 lbs_host_sleep_cfg +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xbf31ffa9 lbs_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xc8c6cf26 lbs_host_to_card_done +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xdcedb844 __lbs_cmd +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xddc17840 lbs_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xed78e524 lbs_get_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xf64277de lbs_debug +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x00259622 lbtf_cmd_copyback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x62ebc720 lbtf_send_tx_feedback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x8e5c43d5 __lbtf_cmd +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xb0b7ee8e lbtf_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xbc1bde29 lbtf_cmd_response_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xbf0627ba lbtf_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xc85e6899 lbtf_debug +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xe4639041 lbtf_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xfc92985c lbtf_bcn_sent +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x0fccc1c9 mwifiex_init_shutdown_fw +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x18578016 mwifiex_deauthenticate_all +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x1ec6708d mwifiex_disable_auto_ds +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x2c6976cd mwifiex_write_data_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x31bd9748 mwifiex_alloc_dma_align_buf +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x36df8ec3 mwifiex_queue_main_work +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x4020d71d mwifiex_main_process +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x45e58155 mwifiex_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x63f4c98d mwifiex_drv_info_dump +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x6c5c0586 mwifiex_handle_rx_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x9c5eebc6 mwifiex_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xc238c2a5 mwifiex_enable_hs +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xd0b76d63 mwifiex_upload_device_dump +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xd983f317 mwifiex_del_virtual_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xf99c4b6e mwifiex_add_virtual_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xfb8d1fc9 mwifiex_process_hs_config +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xfbb7502f mwifiex_cancel_hs +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xff9fae65 mwifiex_process_sleep_confirm_resp +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x1e564c4c p54_parse_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x35a11157 p54_register_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x594e1ae6 p54_read_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x94c1441a p54_parse_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x9c0796e5 p54_unregister_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xb70161f6 p54_init_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xb92ba18d p54_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xdac9670a p54_free_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xfc886f9f p54_free_skb +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0x5a5f2998 rsi_91x_deinit +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0x7201b98a rsi_dbg +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0xbd777349 rsi_read_pkt +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0xdb3ca0e5 rsi_zone_enabled +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0xf43014d0 rsi_mac80211_detach +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0xf9f8be91 rsi_91x_init +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x0177ceed rt2800_get_survey +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x22451781 rt2800_link_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x23440ca7 rt2800_config +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x2db0c17f rt2800_sta_add +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x31461e22 rt2800_write_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x31c4e01d rt2800_txdone_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x32460767 rt2800_ampdu_action +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x3d52d392 rt2800_read_eeprom_efuse +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x3d733441 rt2800_clear_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x4657a456 rt2800_probe_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x5123f5d0 rt2800_config_filter +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x57f1f289 rt2800_vco_calibration +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x5ef822e9 rt2800_process_rxwi +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x630fffa6 rt2800_sta_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x66034ed4 rt2800_disable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x67bd8a74 rt2800_disable_wpdma +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x708a4803 rt2800_get_txwi_rxwi_size +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x72d931cf rt2800_set_rts_threshold +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x765305d1 rt2800_get_key_seq +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x7655511a rt2800_rfkill_poll +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x9aa7906f rt2800_write_tx_data +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x9ba96f31 rt2800_reset_tuner +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x9d44dbf4 rt2800_mcu_request +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x9f265fad rt2800_config_erp +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xb2798c36 rt2800_config_pairwise_key +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xb27a0f65 rt2800_conf_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xbb2454fa rt2800_enable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xc4e56c87 rt2800_config_ant +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xc69a747a rt2800_get_tsf +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xcddb0792 rt2800_gain_calibration +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xd2866408 rt2800_load_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xd93f6f53 rt2800_wait_csr_ready +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xdd95ae2a rt2800_wait_wpdma_ready +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xe6344878 rt2800_check_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xe831f60c rt2800_config_shared_key +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xea8fa240 rt2800_link_tuner +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xf16a0a34 rt2800_config_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xfc8fc28a rt2800_efuse_detect +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x0fad1430 rt2800mmio_pretbtt_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x249b2da5 rt2800mmio_get_txwi +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x2505789d rt2800mmio_tbtt_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x2ddd6ca7 rt2800mmio_kick_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x3aa611d3 rt2800mmio_queue_init +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x44624acd rt2800mmio_clear_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x50605d2e rt2800mmio_toggle_irq +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x5fa4db64 rt2800mmio_interrupt +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x92c0bcd1 rt2800mmio_rxdone_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x9408c703 rt2800mmio_init_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xbcef5730 rt2800mmio_fill_rxdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xc6a1455e rt2800mmio_autowake_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xccb2f7b5 rt2800mmio_stop_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xd40392b9 rt2800mmio_init_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xdbc01956 rt2800mmio_enable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xe28f94c7 rt2800mmio_txstatus_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xe5fc9868 rt2800mmio_start_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xf11c33ed rt2800mmio_write_tx_desc +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xf180be81 rt2800mmio_get_entry_state +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x06116aa5 rt2x00lib_beacondone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x0ff4eada rt2x00mac_start +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x12a5d6b5 rt2x00mac_sta_add +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x14d1cafd rt2x00queue_unmap_skb +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x15a63105 rt2x00queue_stop_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x17ec5882 rt2x00mac_remove_interface +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x1c3a4566 rt2x00queue_flush_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x1dc131c4 rt2x00queue_pause_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x236f7665 rt2x00mac_bss_info_changed +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x2410d9b6 rt2x00lib_txdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x2cdb1857 rt2x00lib_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x2e443f22 rt2x00queue_start_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x3b481707 rt2x00queue_stop_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x3d7cc23c rt2x00lib_txdone_noinfo +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x43f07275 rt2x00lib_dmadone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x49c3aed7 rt2x00lib_rxdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x4aad36b9 rt2x00mac_set_key +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x58944825 rt2x00mac_set_antenna +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x6a41b8ca rt2x00mac_get_antenna +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x6b289339 rt2x00mac_configure_filter +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x78ae6f8b rt2x00mac_sta_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x7db08ebe rt2x00lib_pretbtt +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x7df45f55 rt2x00queue_for_each_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x7fc90cff rt2x00lib_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x8795b17c rt2x00mac_get_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x8abf9674 rt2x00lib_dmastart +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x94776265 rt2x00mac_add_interface +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x98c74abb rt2x00mac_flush +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x9e794062 rt2x00queue_start_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xa8eee0a9 rt2x00queue_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xa992428a rt2x00mac_stop +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xa9eea9c4 rt2x00lib_remove_dev +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xac52b5dc rt2x00queue_unpause_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xacf90000 rt2x00mac_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xb91a0694 rt2x00queue_map_txskb +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xc2f25c63 rt2x00lib_probe_dev +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xd5e85796 rt2x00mac_set_tim +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xdfcf695f rt2x00lib_get_bssidx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xe0a034b7 rt2x00mac_get_ringparam +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xe2358eba rt2x00mac_sw_scan_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xe26c1442 rt2x00mac_config +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xe2e7547d rt2x00mac_rfkill_poll +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xeb0c3343 rt2x00mac_tx_frames_pending +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xec030991 rt2x00queue_get_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xed2d0ccf rt2x00mac_conf_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xf3e2be56 rt2x00mac_sw_scan_start +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0x21ec00be rt2x00mmio_rxdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0x3a4ae1ae rt2x00mmio_initialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0x873e6e6c rt2x00mmio_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0xa709b5af rt2x00mmio_regbusy_read +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0xc35444a0 rt2x00mmio_uninitialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0x1b4abad4 rt2x00pci_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0x1beac257 rt2x00pci_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0xd8aadd29 rt2x00pci_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0xf4cb47a2 rt2x00pci_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x1229977f rt2x00usb_disable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x1f607c4b rt2x00usb_watchdog +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x2958882e rt2x00usb_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x660dad99 rt2x00usb_disconnect +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x679bf2b8 rt2x00usb_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x696bfe19 rt2x00usb_uninitialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x6d50ad94 rt2x00usb_initialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x763937ea rt2x00usb_kick_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x78a74d84 rt2x00usb_regbusy_read +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x8ddf420e rt2x00usb_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x9be4b281 rt2x00usb_register_read_async +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x9c2b0c25 rt2x00usb_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xb26922cc rt2x00usb_vendor_req_buff_lock +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xb3aa0317 rt2x00usb_vendor_request +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xd6c7fc47 rt2x00usb_vendor_request_buff +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xfd0ca81d rt2x00usb_clear_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x3be88701 dm_savepowerindex +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x79c1c227 dm_writepowerindex +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x9aa8930c dm_restorepowerindex +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xd617e3a1 rtl92c_set_p2p_ps_offload_cmd +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x0481c795 rtl8723_phy_set_bb_reg +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x0954d4b0 rtl8723_phy_reload_adda_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x18070724 rtl8723_phy_path_adda_on +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x18e13c02 rtl8723_phy_pi_mode_switch +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x3c23ee3a rtl8723_dm_init_edca_turbo +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x3d0fc909 rtl8723_phy_query_bb_reg +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x47578db9 rtl8723_phy_path_a_standby +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x476b57b8 rtl8723_cmd_send_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x513da261 rtl8723_phy_rf_serial_read +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x5595d49b rtl8723_save_adda_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x6fee3a6c rtl8723_phy_set_sw_chnl_cmdarray +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x84237122 rtl8723_fw_page_write +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x9092c6c3 rtl8723_download_fw +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x9530a4c1 rtl8723be_firmware_selfreset +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x973d1a7f rtl8723_phy_save_mac_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x984aa79d rtl8723_dm_init_dynamic_bb_powersaving +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x9c61019a rtl8723_phy_path_a_fill_iqk_matrix +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x9d6d2d97 rtl8723ae_firmware_selfreset +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x9f10df39 rtl8723_fw_free_to_go +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xa05f62e9 rtl8723_enable_fw_download +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xa60a612c rtl8723_dm_init_dynamic_txpower +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xae8a6798 rtl8723_phy_init_bb_rf_reg_def +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xaf4d6d94 rtl8723_phy_calculate_bit_shift +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xb14adedb rtl8723_fw_block_write +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xb894920b rtl8723_write_fw +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xd92aa72b rtl8723_phy_reload_mac_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xdc596e25 rtl8723_phy_rf_serial_write +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xe07ce997 rtl8723_phy_txpwr_idx_to_dbm +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xf423fb72 rtl8723_phy_mac_setting_calibration +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x0d0b6636 rtl_global_var +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x217ce38e rtl_deinit_core +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x241dedc1 rtl_tid_to_ac +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x2921a4d4 rtl_btc_status_false +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x3ae2cf9e rtl_tx_mgmt_proc +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x4726c8ab rtl_ips_nic_on +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x4a8b696d rtl_ops +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x4cefbd76 read_efuse_byte +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x60e81247 rtl_dbgp_flag_init +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x6f8ea8b9 rtl_swlps_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x73166651 rtl_deinit_rfkill +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x83a0dd7c rtl_deinit_deferred_work +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x83b22414 rtl_beacon_statistic +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x87dfbe3e rtl_p2p_info +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x8d25038d rtl_is_special_data +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x95e364c3 rtl_init_core +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xc4e08d54 rtl_action_proc +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xd9b84d61 rtl_attribute_group +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xf2db35da rtl_init_rx_config +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xf8ff6add rtl_lps_change_work_callback +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xfd2936cb rtl_recognize_peer +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0x20dd0d37 wl1251_free_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0x3080bc18 wl1251_alloc_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0x7641cc19 wl1251_init_ieee80211 +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x01e70e86 wlcore_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x196b9590 wl1271_ps_elp_sleep +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x1c797cb8 wlcore_free_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x22424abc wlcore_boot_run_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x224d7f64 wl1271_acx_set_ht_capabilities +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x2703a830 wl1271_debugfs_update_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x2db27e1d wlcore_event_rssi_trigger +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x388e9449 wlcore_disable_interrupts_nosync +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x3e675943 wlcore_event_dummy_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x4da1fb66 wlcore_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x4e4c0fc6 wl1271_acx_sleep_auth +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x53dff67d wl12xx_debug_level +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x572a34ae wlcore_set_partition +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x57b81f29 wlcore_enable_interrupts +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x5f404da4 wlcore_scan_sched_scan_results +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x76af8067 wlcore_disable_interrupts +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x76d7ec17 wl1271_tx_min_rate_get +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x77092dcc wlcore_get_native_channel_type +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x7865b338 wlcore_event_inactive_sta +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x7b73f9ca wlcore_event_channel_switch +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x7e02c3df wlcore_set_scan_chan_params +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x7ea0c9fb wl1271_cmd_send +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x809e2e8f wl12xx_cmd_build_probe_req +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x8871ff42 wlcore_event_max_tx_failure +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x90be8348 wlcore_alloc_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x91da5146 wl1271_format_buffer +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x9b6a7600 wlcore_boot_upload_nvs +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x9fbb58d3 wlcore_event_soft_gemini_sense +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xa3f1ba15 wlcore_event_beacon_loss +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xa9031175 wlcore_set_key +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xae93fa7e wlcore_scan_sched_scan_ssid_list +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xb268a6c6 wl1271_acx_init_mem_config +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xb4442403 wlcore_translate_addr +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xb6dc1763 wl1271_ps_elp_wakeup +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xb80b2eba wl1271_cmd_data_path +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xbef83fb8 wlcore_synchronize_interrupts +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xc22d3979 wl1271_acx_pm_config +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xc3c47e16 wl1271_cmd_test +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xccb2cef2 wlcore_event_sched_scan_completed +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xccb5d099 wlcore_event_ba_rx_constraint +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xcd4ffdea wl12xx_acx_mem_cfg +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xd035971c wlcore_cmd_wait_for_event_or_timeout +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xe0bc8f31 wlcore_event_roc_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xf0365dca wl1271_cmd_configure +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xf69b9612 wlcore_boot_upload_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xf7970f67 wl1271_tx_flush +EXPORT_SYMBOL_GPL drivers/nfc/nfcmrvl/nfcmrvl 0x135448b6 nfcmrvl_parse_dt +EXPORT_SYMBOL_GPL drivers/nfc/nfcmrvl/nfcmrvl 0x8aae7262 nfcmrvl_nci_register_dev +EXPORT_SYMBOL_GPL drivers/nfc/nfcmrvl/nfcmrvl 0xa710370f nfcmrvl_nci_unregister_dev +EXPORT_SYMBOL_GPL drivers/nfc/nfcmrvl/nfcmrvl 0xba6b1037 nfcmrvl_nci_recv_frame +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x0bb384ee st_nci_hci_cmd_received +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x22d105d1 st_nci_remove +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x53122fec st_nci_hci_event_received +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x55957f1c st_nci_discover_se +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x90740e66 st_nci_probe +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0xbd6fee70 st_nci_enable_se +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0xbe02a92f st_nci_disable_se +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0xe6a4d41d st_nci_hci_load_session +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x034e4d6e 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 0x82e6c13d ntb_transport_qp_num +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x9c992c8f ntb_transport_link_up +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0xa0e61710 ntb_transport_create_queue +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0xa155a5c7 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/power/pcf50633-charger 0x21bda6dd pcf50633_mbc_get_usb_online_status +EXPORT_SYMBOL_GPL drivers/power/pcf50633-charger 0x414a305b pcf50633_mbc_get_status +EXPORT_SYMBOL_GPL drivers/power/pcf50633-charger 0xec7e8340 pcf50633_mbc_usb_curlim_set +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x57d3e83d mc13xxx_parse_regulators_dt +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x9b00c7a1 mc13xxx_fixed_regulator_set_voltage +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0xac12c08f mc13xxx_get_num_regulators_dt +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0xae44e322 mc13xxx_regulator_ops +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0xae94e0d3 mc13xxx_fixed_regulator_ops +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x13a4eefc wm8350_ldo_set_slot +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x37829ee5 wm8350_dcdc_set_slot +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x8e35d11a wm8350_register_regulator +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x8f17896f wm8350_register_led +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0xc094ec3c wm8350_dcdc25_set_mode +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0xc90f4ad2 wm8350_isink_set_flash +EXPORT_SYMBOL_GPL drivers/regulator/wm8400-regulator 0xbbb5207e wm8400_register_regulator +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x0421003f cxgbi_ddp_ppod_set +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x100963ed cxgbi_hbas_add +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x175784ff cxgbi_ep_poll +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x1794b307 cxgbi_get_host_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x1c537cfc cxgbi_sock_fail_act_open +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x1cfe548e cxgbi_sock_purge_wr_queue +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x1dcb91c4 cxgbi_conn_pdu_ready +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x1edc4038 cxgbi_conn_init_pdu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x1ef19619 cxgbi_sock_established +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x1f78abf7 cxgbi_set_host_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x2d528935 cxgbi_device_find_by_lldev +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x35c9473e cxgbi_sock_check_wr_invariants +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x371f5ad5 cxgbi_device_find_by_netdev_rcu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x3785dc12 cxgbi_iscsi_cleanup +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x395fb021 cxgbi_cleanup_task +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x3a5c4389 cxgbi_ddp_page_size_factor +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x3db12569 cxgbi_set_conn_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x4d170565 cxgbi_get_ep_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x555b9c44 cxgbi_sock_rcv_abort_rpl +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x57f814da cxgbi_iscsi_init +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x5acd9da3 cxgbi_device_portmap_cleanup +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x5dbdc947 cxgbi_create_session +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x6312cac1 cxgbi_create_conn +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x651a37da cxgbi_conn_tx_open +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x67e54920 cxgbi_conn_alloc_pdu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x6d236099 cxgbi_sock_rcv_wr_ack +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x7fdb6004 cxgbi_device_unregister_all +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x821bddb1 cxgbi_ep_disconnect +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x8c2ba369 cxgbi_ddp_ppod_clear +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x8f5307ba cxgbi_ddp_init +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x967b437c cxgbi_device_portmap_create +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x9da19d6a cxgbi_device_register +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xa1a13668 cxgbi_device_unregister +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xa25652bf cxgbi_destroy_session +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xa40dc65a cxgbi_sock_rcv_close_conn_rpl +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xa942a8e0 cxgbi_ep_connect +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xaa8f0468 cxgbi_sock_free_cpl_skbs +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xb1bea410 cxgbi_sock_closed +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xb6b40ac8 cxgbi_sock_select_mss +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xbba2895e cxgbi_hbas_remove +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xc57cdc3e cxgbi_sock_rcv_peer_close +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xd08ab186 cxgbi_ddp_cleanup +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xd1918ebc cxgbi_parse_pdu_itt +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xd5e1affb cxgbi_bind_conn +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xd70d0720 cxgbi_device_find_by_netdev +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xef346615 cxgbi_attr_is_visible +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xf1cfbe78 cxgbi_sock_act_open_req_arp_failure +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xf979ecb0 cxgbi_sock_skb_entail +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xfabc7fa1 cxgbi_get_conn_stats +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xfe8611aa cxgbi_conn_xmit_pdu +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x0aa541ee scsi_dh_detach +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x3ee48a31 scsi_unregister_device_handler +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x593a36c2 scsi_dh_handler_exist +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x7e8ad284 scsi_dh_attach +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x9045714a scsi_dh_attached_handler_name +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x99e919b0 scsi_dh_activate +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0xa44a9257 scsi_dh_set_params +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0xe62ca96c scsi_register_device_handler +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x00a424cd fcoe_libfc_config +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x0fb51275 fcoe_queue_timer +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x1245738d fcoe_link_speed_update +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x1d360ae4 fcoe_ctlr_device_delete +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x31adcc7f __fcoe_get_lesb +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x374c1e1c fcoe_wwn_from_mac +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x46dfd31c fcoe_validate_vport_create +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x7c654682 fcoe_get_wwn +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x84b3d915 fcoe_wwn_to_str +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xab51bbd3 fcoe_fcf_device_add +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xb2ccddad fcoe_ctlr_device_add +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xbd11a659 fcoe_fcf_device_delete +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xc2c08c83 fcoe_clean_pending_queue +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xd95e4a0c fcoe_ctlr_get_lesb +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xdd3090ac fcoe_get_lesb +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xed21065c fcoe_get_paged_crc_eof +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xf8146b0c fcoe_start_io +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xf9f0aaf2 fcoe_check_wait_queue +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xfe25dd97 fcoe_fc_crc +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x0765265e iscsi_boot_create_kset +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x3efc445a iscsi_boot_create_host_kset +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x433a3c30 iscsi_boot_create_ethernet +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x87d5bba4 iscsi_boot_destroy_kset +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x9361ee98 iscsi_boot_create_initiator +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0xeaa16a62 iscsi_boot_create_target +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x00974c80 iscsi_host_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x07c120ce iscsi_host_set_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x11bb0d82 iscsi_session_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x12b2ad06 iscsi_switch_str_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x1454427e iscsi_suspend_queue +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x15728b75 iscsi_session_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x18d5969f iscsi_conn_stop +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x1d9e51be iscsi_session_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x207c7190 iscsi_session_failure +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x26ef284e iscsi_requeue_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x27e71fff iscsi_host_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x2acd3105 iscsi_itt_to_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x309e3d3e iscsi_conn_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x327f58c0 iscsi_prep_data_out_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x32f6184d iscsi_session_recovery_timedout +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x343b7de3 iscsi_queuecommand +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x35a751ec iscsi_host_add +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x3bef2f73 iscsi_pool_init +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x5442a5d9 __iscsi_complete_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x5a64f159 iscsi_update_cmdsn +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x5be559a5 iscsi_eh_session_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x5c3ebc7b iscsi_itt_to_ctask +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x6eac020e iscsi_host_remove +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x723d44d7 iscsi_eh_target_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x7641f716 iscsi_conn_bind +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x7e1aa51b iscsi_conn_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x81b314c3 iscsi_suspend_tx +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x8abc35e8 iscsi_eh_device_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x8d303b1b iscsi_pool_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x8e7709cc iscsi_conn_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x96b46940 iscsi_put_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x97c583f3 __iscsi_put_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x9ca40ad7 iscsi_complete_scsi_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x9ed06850 iscsi_conn_failure +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xa0d7c1e2 iscsi_set_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xa3b96a0c iscsi_target_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xa72eb518 iscsi_eh_recover_target +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xb39e669d iscsi_verify_itt +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xbf8c9136 iscsi_conn_get_addr_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xc0063a96 iscsi_complete_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xc57d9e58 iscsi_conn_send_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xcae0c5c6 __iscsi_get_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xd6f8775b iscsi_eh_abort +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xdd6ab941 iscsi_conn_queue_work +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xe376272d iscsi_host_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xf10da9cd iscsi_conn_start +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x1a1a364b iscsi_tcp_conn_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x1c471df6 iscsi_tcp_r2tpool_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x24e82c4d iscsi_tcp_segment_unmap +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x3beba374 iscsi_segment_init_linear +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x3f615b02 iscsi_tcp_hdr_recv_prep +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x62faec6e iscsi_tcp_dgst_header +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x641a703c iscsi_tcp_segment_done +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x6837b71a iscsi_tcp_conn_get_stats +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x78ab7e35 iscsi_tcp_task_xmit +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x8612a906 iscsi_tcp_task_init +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x8f437a63 iscsi_tcp_recv_segment_is_hdr +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xa415ece0 iscsi_tcp_cleanup_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xa6436277 iscsi_tcp_conn_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xa6fbe142 iscsi_segment_seek_sg +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xb2ded226 iscsi_tcp_recv_skb +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xdc271aa7 iscsi_tcp_r2tpool_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xeafeb36e iscsi_tcp_set_max_r2t +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x0d2ffb52 sas_slave_configure +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x0ddbeb23 sas_alloc_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x1e2b92de sas_ata_schedule_reset +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x29808744 sas_register_ha +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x2dcd5d0c sas_target_destroy +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x306beb60 sas_get_local_phy +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x3d6ad2ff sas_drain_work +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x4463f1dc sas_eh_abort_handler +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x4868f1ac sas_ioctl +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x52437457 sas_request_addr +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x550f5ba4 sas_queuecommand +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x5ce6728a sas_ssp_task_response +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x6dff162a sas_target_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x76cde9f5 sas_bios_param +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x780f6310 sas_alloc_slow_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x8fcf3ff6 sas_free_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x913ff5a6 sas_unregister_ha +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xa8422f56 sas_change_queue_depth +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xabf38d38 sas_task_abort +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xac565595 sas_eh_device_reset_handler +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xb2ca0ad4 sas_phy_reset +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xbb708d2a sas_eh_bus_reset_handler +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xd8dfd894 sas_domain_attach_transport +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xebf18570 sas_domain_release_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x00cff438 iscsi_offload_mesg +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x030c51d3 iscsi_find_flashnode_sess +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x1eeb9d0b iscsi_block_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x24c8c653 iscsi_get_port_state_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x2583186c iscsi_register_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x2b3d52e3 iscsi_create_flashnode_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x326dfb9e iscsi_is_session_online +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x34eec522 iscsi_destroy_all_flashnode +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x40882d77 iscsi_free_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x45586c83 iscsi_lookup_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x4a49b74c iscsi_create_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x52715ed0 iscsi_find_flashnode_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x55156fe3 iscsi_unblock_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x62e2b393 iscsi_host_for_each_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x699fe53e iscsi_get_discovery_parent_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x6e0edd65 iscsi_flashnode_bus_match +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x6f58f979 iscsi_destroy_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x773f128c iscsi_session_chkready +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x7bbaaddc iscsi_post_host_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x817bd64c iscsi_get_port_speed_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x84a005f1 iscsi_get_router_state_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x893cb8ae iscsi_is_session_dev +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x8a16fbcb iscsi_destroy_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x917e6e5b iscsi_conn_error_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x9431fddc iscsi_scan_finished +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x98d40221 iscsi_remove_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x98eb9e86 iscsi_alloc_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x9af52974 iscsi_create_flashnode_sess +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xb07c38f0 iscsi_recv_pdu +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xb886b98c iscsi_destroy_flashnode_sess +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xbc071179 iscsi_get_ipaddress_state_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xc5409dcd iscsi_create_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xc5b922f5 iscsi_destroy_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xc62c9f6e iscsi_create_iface +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xc6f5d904 iscsi_create_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xda3d498b iscsi_session_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xdfebe6a5 iscsi_destroy_iface +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xe1f76ae1 iscsi_unregister_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xe3faa285 iscsi_add_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xe4dec0da iscsi_block_scsi_eh +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xeaf7fe33 iscsi_is_flashnode_conn_dev +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xf139cedf iscsi_ping_comp_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xfcf6b808 iscsi_conn_login_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0x1a8bd19f sas_disable_tlr +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0x3d3b51c9 sas_is_tlr_enabled +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0xaca9180a sas_tlr_supported +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0xd44fe689 sas_enable_tlr +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_spi 0x0ef06974 spi_populate_ppr_msg +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_spi 0x14db5637 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 0x0abb787e srp_release_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x3a279279 srp_stop_rport_timers +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0xb4bddb23 srp_rport_del +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0xc273d200 srp_remove_host +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0xd658604b srp_rport_add +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0xde48413f srp_attach_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0xee891cc0 srp_tmo_valid +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0x09fc6e97 ufshcd_init +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0x4eead097 ufshcd_dme_set_attr +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0xb2e8f10f ufshcd_remove +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0xd5a47007 ufshcd_dme_get_attr +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x176db2a1 spi_bitbang_setup +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x595da72b spi_bitbang_stop +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x643dad59 spi_bitbang_start +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0xc233858a spi_bitbang_cleanup +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0xe485e70f spi_bitbang_setup_transfer +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0x3f823fdd dw_spi_add_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0x430c575d dw_spi_remove_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0xa66b0fcd dw_spi_resume_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0xe31d0189 dw_spi_suspend_host +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x39a1cb03 spmi_register_write +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x41380335 spmi_driver_register +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x52f21890 spmi_controller_add +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x55fef11a spmi_command_sleep +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x5c81a424 spmi_device_remove +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x73a02556 spmi_controller_remove +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x8ed57120 spmi_register_read +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xa0e82582 spmi_ext_register_readl +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xa1e23e9f spmi_command_shutdown +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xab350dde spmi_controller_alloc +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xb206ec0a spmi_ext_register_write +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xbde2e848 spmi_command_wakeup +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xc29b43cf spmi_ext_register_read +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xc3fa4d59 spmi_device_add +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xd444117c spmi_register_zero_write +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xd62fdc0c spmi_command_reset +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xef9a1f7f spmi_ext_register_writel +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xff31ecc6 spmi_device_alloc +EXPORT_SYMBOL_GPL drivers/ssb/ssb 0x4f405134 ssb_pmu_spuravoid_pllupdate +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x054597c9 comedi_dio_insn_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x0cd330f4 range_unknown +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x0f16440b comedi_load_firmware +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x0fda60c5 comedi_buf_write_alloc +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x1295da38 comedi_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x15bab5e3 comedi_buf_read_n_available +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x17f30ac3 comedi_alloc_devpriv +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x205328c0 comedi_buf_read_samples +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x21102f87 range_0_32mA +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x2abc4b36 comedi_is_subdevice_running +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x2f0ad9d3 range_bipolar5 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x402964d6 comedi_check_chanlist +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x40c7495e comedi_bytes_per_scan +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x41d80c6f comedi_dio_update_state +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x4236eaaf range_4_20mA +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x496512ba comedi_driver_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x4fe634f3 range_bipolar2_5 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x53119203 comedi_dev_get_from_minor +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x5981a59c comedi_alloc_subdevices +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x5e720526 comedi_request_region +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x71c4cce1 comedi_nsamples_left +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x7ec1b12d comedi_set_hw_dev +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x8113872c range_unipolar10 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x8291bad4 comedi_nscans_left +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x848d8197 comedi_inc_scan_progress +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x85ea442b comedi_timeout +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x8653b884 comedi_buf_write_free +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x870cb204 comedi_readback_insn_read +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x9388bc05 __comedi_request_region +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x9c73b72a comedi_dev_put +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xa3209f49 comedi_auto_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xa9a6d5bd comedi_alloc_subdev_readback +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xaa6fff17 comedi_set_spriv_auto_free +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xab1fdcd3 comedi_auto_unconfig +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xabb716f3 comedi_legacy_detach +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 0xd933eef8 comedi_event +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xda91d772 comedi_buf_write_samples +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xdb2044b2 range_unipolar5 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xdf8f86a2 comedi_handle_events +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xe5704108 comedi_buf_read_free +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xebb78c37 comedi_buf_read_alloc +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xf4925f82 comedi_alloc_spriv +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0x1b27b440 comedi_pci_disable +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0x2470d096 comedi_pci_enable +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0x315e878a comedi_pci_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0x63cf8f6b comedi_pci_auto_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0x8bfab612 comedi_pci_auto_unconfig +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0xd03e04a2 comedi_pci_detach +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0xd0678a44 comedi_to_pci_dev +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0xfc0ce4b1 comedi_pci_driver_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pcmcia 0x65789441 comedi_pcmcia_disable +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pcmcia 0x795bd3c8 comedi_pcmcia_enable +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pcmcia 0xa60f6f33 comedi_pcmcia_auto_unconfig +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pcmcia 0xb15ec292 comedi_pcmcia_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pcmcia 0xbb84288d comedi_to_pcmcia_dev +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pcmcia 0xc12e3d4d comedi_pcmcia_auto_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pcmcia 0xeeaa2e24 comedi_pcmcia_driver_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0x3629d870 comedi_usb_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0x525e9c0f comedi_usb_driver_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0x6cfeb329 comedi_usb_auto_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0x7329db29 comedi_usb_auto_unconfig +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0x7ce8ffb5 comedi_to_usb_interface +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0xce6dc7e2 comedi_to_usb_dev +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/addi_watchdog 0x675b9711 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 0x7bde99f2 amplc_dio200_set_enhance +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/amplc_dio200_common 0xdbbd1c06 amplc_dio200_common_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/amplc_pc236_common 0x940566d2 amplc_pc236_common_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x17fb7fb4 comedi_8254_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x31a19a05 comedi_8254_ns_to_timer +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x365f9218 comedi_8254_pacer_enable +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x3a8d5b84 comedi_8254_subdevice_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x606384de comedi_8254_update_divisors +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x63ebae62 comedi_8254_cascade_ns_to_timer +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x8cee1423 comedi_8254_set_busy +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x91f6495f comedi_8254_mm_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0xcb9bc247 comedi_8254_set_mode +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0xd66c5470 comedi_8254_read +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0xe8e8f933 comedi_8254_write +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0xf24c5ba5 comedi_8254_load +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0xf634c675 comedi_8254_status +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8255 0x0f5ae68b subdev_8255_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8255 0xaaf9acca subdev_8255_regbase +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8255 0xeadc6809 subdev_8255_mm_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_isadma 0x0d68fcd9 comedi_isadma_poll +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 0x6815a033 comedi_isadma_free +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_isadma 0xa3d01a85 comedi_isadma_program +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_isadma 0xa7ebb8a3 comedi_isadma_set_mode +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_isadma 0xb92afa58 comedi_isadma_alloc +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/das08 0x89a9aa1e das08_common_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x02fefccc mite_request_channel_in_range +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x26a6765d mite_dma_disarm +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x2d61907d mite_bytes_written_to_memory_lb +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x59bd1c25 mite_detach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x5cbe3a7c mite_setup2 +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x67d934a3 mite_bytes_read_from_memory_lb +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x6e0185d1 mite_alloc +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x7907866b mite_done +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x79aff214 mite_free_ring +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x7d4fee2e mite_dma_arm +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x7e6f8899 mite_buf_change +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x8489ca67 mite_sync_input_dma +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x8e036c2d mite_get_status +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xb93b6897 mite_bytes_written_to_memory_ub +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xc2211bc3 mite_sync_output_dma +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xc5b2ac05 mite_release_channel +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xc69e2ba7 mite_dma_tcr +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xca9a7315 mite_prep_dma +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xd763f8d6 mite_alloc_ring +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xec55061f mite_bytes_in_transit +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xf383cc49 mite_bytes_read_from_memory_ub +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_common 0x107d321b labpc_common_detach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_common 0xd69d9f70 labpc_common_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_isadma 0x8ab8c34e labpc_setup_dma +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_isadma 0xc4a03725 labpc_free_dma_chan +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_isadma 0xf4acc518 labpc_init_dma_chan +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_isadma 0xf946b10d labpc_drain_dma +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_isadma 0xfc2f064d labpc_handle_dma_status +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x01884434 ni_tio_init_counter +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x3025e791 ni_tio_arm +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x85dfabfb ni_gpct_device_construct +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x8edb5b85 ni_tio_insn_write +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0xa025e166 ni_tio_set_gate_src +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0xb92e890c ni_gpct_device_destroy +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0xd9ade4d5 ni_tio_insn_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0xedb11848 ni_tio_insn_read +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0x525f59de ni_tio_acknowledge +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0x8201df02 ni_tio_cmd +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0x84e3c3e4 ni_tio_set_mite_channel +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0xa6095737 ni_tio_handle_interrupt +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0xa72103b1 ni_tio_cmdtest +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0xc4420f2c ni_tio_cancel +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x06be1531 comedi_find_subdevice_by_type +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x148abe66 comedi_dio_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x206be5e1 comedi_open +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x8f0fda07 comedi_close +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0xd0b137df comedi_dio_get_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0xd84208df comedi_dio_bitfield2 +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0xe446dc1f comedi_get_n_channels +EXPORT_SYMBOL_GPL drivers/staging/iio/addac/adt7316 0xae617dd9 adt7316_pm_ops +EXPORT_SYMBOL_GPL drivers/staging/lustre/lustre/obdclass/obdclass 0xb0c70c81 lustre_attr_show +EXPORT_SYMBOL_GPL drivers/staging/lustre/lustre/obdclass/obdclass 0xb3dd7aaf debugfs_lustre_root +EXPORT_SYMBOL_GPL drivers/staging/lustre/lustre/obdclass/obdclass 0xb6cc4f4c lustre_sysfs_ops +EXPORT_SYMBOL_GPL drivers/staging/lustre/lustre/obdclass/obdclass 0xbfa455ad lustre_kobj +EXPORT_SYMBOL_GPL drivers/staging/lustre/lustre/obdclass/obdclass 0xe956e4ca lustre_attr_store +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x0e81c76d spk_serial_out +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x0ef1d765 speakup_info +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x14f06fe7 spk_serial_in_nowait +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x25e4304c synth_remove +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x2897babd spk_synth_flush +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x35be702a spk_serial_synth_probe +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x3ebbb973 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 0x475e158a synth_request_region +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x6561d4cf spk_do_catch_up +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x6ccd4a8a spk_synth_is_alive_restart +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x8e146195 synth_release_region +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x9a888082 synth_buffer_getc +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xaa76d991 spk_var_show +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xb35aaab9 speakup_event +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xb48956f8 synth_buffer_peek +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xbbd15a51 speakup_start_ttys +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xc766ae09 synth_printf +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xd1b551a2 spk_get_var +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xd3600e75 synth_add +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xd4757cdb spk_synth_immediate +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xe72cfe15 spk_synth_is_alive_nop +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xe7cd4558 spk_serial_release +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xe7e810f8 spk_serial_in +EXPORT_SYMBOL_GPL drivers/tty/n_tracesink 0x585ebaac n_tracesink_datadrain +EXPORT_SYMBOL_GPL drivers/uio/uio 0x4743f9e2 uio_event_notify +EXPORT_SYMBOL_GPL drivers/uio/uio 0x7aebf633 uio_unregister_device +EXPORT_SYMBOL_GPL drivers/uio/uio 0xa728cb4d __uio_register_device +EXPORT_SYMBOL_GPL drivers/usb/atm/usbatm 0xab753d13 usbatm_usb_probe +EXPORT_SYMBOL_GPL drivers/usb/atm/usbatm 0xec9ecdd0 usbatm_usb_disconnect +EXPORT_SYMBOL_GPL drivers/usb/chipidea/ci_hdrc 0x8fc5b51a ci_hdrc_remove_device +EXPORT_SYMBOL_GPL drivers/usb/chipidea/ci_hdrc 0xc9278afe ci_hdrc_add_device +EXPORT_SYMBOL_GPL drivers/usb/chipidea/usbmisc_imx 0x9b7f8da2 imx_usbmisc_init +EXPORT_SYMBOL_GPL drivers/usb/chipidea/usbmisc_imx 0xa2e31ba3 imx_usbmisc_init_post +EXPORT_SYMBOL_GPL drivers/usb/chipidea/usbmisc_imx 0xbd75e98e imx_usbmisc_set_wakeup +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0x09408a03 ulpi_register_driver +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0x5be8f039 ulpi_unregister_interface +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0x64eafb18 ulpi_register_interface +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0xa231516c ulpi_read +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0xcbfed24e ulpi_unregister_driver +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0xfebf6efb ulpi_write +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x0fe5b1f2 gether_get_host_addr_u8 +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x2afd1e46 gether_set_gadget +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x3fdee336 gether_connect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x441df740 gether_set_qmult +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x7529808b gether_get_ifname +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x75596595 gether_set_dev_addr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x78a900a8 gether_get_qmult +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x79a34015 gether_get_host_addr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x82a47e0e gether_setup_name_default +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x8878cfa6 gether_cleanup +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x8cd2c1cd gether_setup_name +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xa8b6e7fc gether_set_host_addr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xd7e97f05 gether_disconnect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xd95e6385 gether_register_netdev +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xe243bcf2 gether_get_dev_addr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xf284bae2 gether_get_host_addr_cdc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0x33bfdca2 gserial_alloc_line +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0x4bc52754 gserial_disconnect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0x89263781 gs_free_req +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0xb6652875 gserial_free_line +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0xd1a5065b gserial_connect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0xf9e5ceeb gs_alloc_req +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_fs 0x6d4c6ced ffs_name_dev +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_fs 0x8673952f ffs_single_dev +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_fs 0x924d175e ffs_lock +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x069df536 fsg_common_remove_lun +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x0a5230df fsg_common_set_nluns +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x0c8ae38d fsg_store_file +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 0x18c94134 fsg_common_set_cdev +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x1b1cc3af store_cdrom_address +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 0x2d10b6a7 fsg_common_create_lun +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x36f3c702 fsg_lun_close +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 0x416217d9 fsg_store_nofua +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 0x51707c29 fsg_common_run_thread +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 0x78a24939 fsg_lun_open +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 0x81e51522 fsg_store_ro +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 0x90c90594 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 0x99023bfc fsg_common_put +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 0x9dc025a5 fsg_common_free_luns +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xa46e6443 fsg_common_get +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 0xaf5b13cc fsg_store_removable +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 0xc219f647 fsg_show_removable +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xcb157dbf fsg_show_ro +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xcf2c2178 fsg_lun_fsync_sub +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xd3ae3b65 fsg_common_create_luns +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xd468f882 fsg_common_set_ops +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xd5f0a378 fsg_show_file +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xe4d1591e fsg_config_from_params +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xe90baa7c 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 0xf7d7114f fsg_store_cdrom +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x0fe9c166 rndis_signal_disconnect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x3c441c89 rndis_add_hdr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x3f26b7ac rndis_rm_hdr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x43b39e37 rndis_signal_connect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x4bcb2912 rndis_get_next_response +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x558c11d5 rndis_uninit +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x5fbf8d1d rndis_set_param_dev +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x89a22d92 rndis_free_response +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x9528236e rndis_set_host_mac +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x98297a52 rndis_register +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xa0bc04b8 rndis_borrow_net +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xc8a9df39 rndis_set_param_medium +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xef27ec69 rndis_msg_parser +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xf155c354 rndis_set_param_vendor +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xfd183aff rndis_deregister +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x02db3dfe usb_composite_probe +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x02ddb7eb usb_function_deactivate +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x09091514 usb_string_ids_tab +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x0bb25115 usb_function_unregister +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x19eefacb usb_composite_unregister +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x1b1bf724 usb_composite_setup_continue +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x25aad7db usb_ep_autoconfig +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x29eb02bb usb_ep_autoconfig_ss +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x2c6718c3 usb_assign_descriptors +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x2e09263f usb_copy_descriptors +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x39408864 usb_ep_autoconfig_reset +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x4a61e8d9 usb_gstrings_attach +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x5adc45f1 usb_add_config_only +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x67e2b499 usb_string_ids_n +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x6b3817dd usb_composite_overwrite_options +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x7547d05c usb_function_register +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x7abf183e usb_put_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x7acdb63e usb_get_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x82927c28 usb_put_function_instance +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x8e0a66e0 config_ep_by_speed +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x94d7075a usb_gadget_get_string +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xa073382d alloc_ep_req +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xb4ffb070 unregister_gadget_item +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xc629ea62 usb_string_id +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xc9e5b60f usb_remove_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xccedd061 usb_get_function_instance +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xd2ea2134 usb_descriptor_fillbuf +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xd3c36f50 usb_interface_id +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xd7128ec5 usb_function_activate +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xe7adff81 usb_free_all_descriptors +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xee1c596b usb_add_config +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xf1cec894 usb_add_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xf474a207 usb_gadget_config_buf +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x068bb93a usb_gadget_unregister_driver +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x1554de77 usb_gadget_udc_reset +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x20dfa658 usb_udc_attach_driver +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x352cf494 usb_gadget_giveback_request +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x3f8a75c2 usb_add_gadget_udc +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x4cf9d417 usb_gadget_set_state +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x5bc1ad5a usb_udc_vbus_handler +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x6ca0cb5f usb_add_gadget_udc_release +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x7d3f9524 usb_del_gadget_udc +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x95621448 usb_gadget_unmap_request +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0xb55eeaa1 usb_gadget_map_request +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0xfc62ebf4 usb_gadget_probe_driver +EXPORT_SYMBOL_GPL drivers/usb/misc/ezusb 0x71250581 ezusb_fx1_ihex_firmware_download +EXPORT_SYMBOL_GPL drivers/usb/misc/ezusb 0xd2f57dc7 ezusb_fx1_set_reset +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x4ca8404f usb_ftdi_elan_edset_setup +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x79074c37 ftdi_elan_gone_away +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x8765a8ab usb_ftdi_elan_edset_flush +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x90b12143 usb_ftdi_elan_write_pcimem +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xbf1d869e usb_ftdi_elan_read_pcimem +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xc1273813 usb_ftdi_elan_edset_empty +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xd07fd626 usb_ftdi_elan_edset_input +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xe4da294e usb_ftdi_elan_edset_output +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xe86fab5d usb_ftdi_elan_edset_single +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0x0892ae1a musb_writew +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0x56d31820 musb_writel +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0x72234dd6 musb_readw +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0x96919667 musb_readl +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0xac5f3d70 musb_readb +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0xace5b871 musb_interrupt +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0xcb32cb36 musb_writeb +EXPORT_SYMBOL_GPL drivers/usb/phy/phy-isp1301 0x16a1cd63 isp1301_get_client +EXPORT_SYMBOL_GPL drivers/usb/serial/usb_wwan 0xa9703ab7 usb_wwan_port_probe +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x05802955 usb_serial_generic_resume +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x0abb72fa usb_serial_handle_break +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x1561bce0 usb_serial_handle_sysrq_char +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x270ce049 usb_serial_generic_write +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x29d7c88f usb_serial_generic_close +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x3552c947 usb_serial_generic_get_icount +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x4f33c9ee usb_serial_generic_read_bulk_callback +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x57b15653 usb_serial_generic_write_start +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x637d77b5 usb_serial_register_drivers +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x65127a41 usb_serial_generic_tiocmiwait +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x7e452adf usb_serial_port_softint +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x82f9a52b usb_serial_generic_process_read_urb +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x885619ea usb_serial_generic_throttle +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x8cfd973e usb_serial_generic_wait_until_sent +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x9f2bf8c8 usb_serial_generic_submit_read_urbs +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xa725bf09 usb_serial_handle_dcd_change +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xd830055d usb_serial_generic_write_bulk_callback +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xe892a3d2 usb_serial_deregister_drivers +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xee4aade6 usb_serial_generic_open +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xf70f07ee usb_serial_generic_unthrottle +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xfcd28ea9 usb_serial_generic_chars_in_buffer +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x0264e8ec usb_stor_bulk_transfer_buf +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x029ced45 usb_stor_disconnect +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x049ed3b0 usb_stor_post_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x1301d30f usb_stor_ctrl_transfer +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x1464c1f2 usb_stor_set_xfer_buf +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x19c5deb6 usb_stor_access_xfer_buf +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x1bc3edc2 usb_stor_sense_invalidCDB +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x247a9bb0 usb_stor_transparent_scsi_command +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x31598e68 fill_inquiry_response +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x3369a480 usb_stor_adjust_quirks +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x5287850c usb_stor_resume +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x5b1da300 usb_stor_reset_resume +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x61f4d0ce usb_stor_control_msg +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x6b62dda7 usb_stor_pre_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x7b17fadf usb_stor_bulk_srb +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x7cb59c39 usb_stor_suspend +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x8219c566 usb_stor_CB_transport +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x884c6786 usb_stor_Bulk_transport +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x9c01d25e usb_stor_bulk_transfer_sg +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x9e9befc2 usb_stor_clear_halt +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xa7fc9993 usb_stor_CB_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xb2065da8 usb_stor_probe2 +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xb7fdd0f9 usb_stor_probe1 +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xbe42d3f4 usb_stor_Bulk_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xed54a20d usb_stor_host_template_init +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x0e66c1b9 usbip_recv_xbuff +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x1afb6f8a usbip_dump_urb +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x2af637b6 usbip_pack_pdu +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x2b767d59 usbip_event_add +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x31d1d39f usbip_recv +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x326fcd0c usbip_event_happened +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x6d6cd0f2 usbip_recv_iso +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x78b72f44 usbip_debug_flag +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x796b79d7 usbip_stop_eh +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x886f5391 usbip_alloc_iso_desc_pdu +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xb5373cdb usbip_start_eh +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xb9db072d dev_attr_usbip_debug +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xbfd5b41a usbip_pad_iso +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/usb/wusbcore/wusb-wa 0x32d395fd wa_dti_start +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x5614471e rpipe_ep_disable +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x6000a1ab rpipe_clear_feature_stalled +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x817d3136 __wa_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xab49662d wa_urb_enqueue +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xc543b60e wa_process_errored_transfers_run +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xcb55ad58 rpipe_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xf4654c3f wa_urb_enqueue_run +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xfa4c4e80 wa_create +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xfaacc4cd wa_urb_dequeue +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x02687ec6 wusbhc_handle_dn +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x0bb6bf5e wusb_cluster_id_get +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x10adff1d wusbhc_mmcie_set +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x1794f8b4 __wusb_dev_get_by_usb_dev +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x1b83f223 wusbhc_rh_start_port_reset +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x3c9ced27 wusbhc_reset_all +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x4657a7f3 wusbhc_giveback_urb +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x4fc6a307 wusbhc_rh_status_data +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x506b9c56 wusbhc_rh_control +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x643ee283 wusbhc_create +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x6fb95b17 wusbhc_mmcie_rm +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x7f0b7631 wusb_dev_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x9fc70fad wusbhc_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xaa4d65ff wusbhc_chid_set +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xad18be00 wusbhc_b_create +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xb725d128 wusb_cluster_id_put +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xe8d75e87 wusbhc_b_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xf770a6b4 wusbd +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xfe2e17d7 wusb_et_name +EXPORT_SYMBOL_GPL drivers/uwb/i1480/dfu/i1480-dfu-usb 0x856a871b i1480_fw_upload +EXPORT_SYMBOL_GPL drivers/uwb/i1480/dfu/i1480-dfu-usb 0xbce87f01 i1480_rceb_check +EXPORT_SYMBOL_GPL drivers/uwb/i1480/dfu/i1480-dfu-usb 0xca66713b i1480_cmd +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x1a576252 umc_controller_reset +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x496e261f __umc_driver_register +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x64e8b08b umc_device_unregister +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x6bbacfb3 umc_device_create +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x74f90375 umc_bus_type +EXPORT_SYMBOL_GPL drivers/uwb/umc 0xce4bf6aa umc_driver_unregister +EXPORT_SYMBOL_GPL drivers/uwb/umc 0xd689f605 umc_device_register +EXPORT_SYMBOL_GPL drivers/uwb/umc 0xe45ddf7d umc_match_pci_id +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x0a9a52b9 uwb_rsv_establish +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x0b8aad57 uwb_est_unregister +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x0d1db939 uwb_est_find_size +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x0e7a59d9 uwb_rc_get_by_grandpa +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x15676159 uwb_rsv_modify +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x19242405 uwb_rc_dev_addr_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x264f8a1d uwb_rc_neh_grok +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x2958b1ac uwb_rc_put +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x2b680a0d uwb_rsv_get_usable_mas +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x341cf3de uwb_rsv_accept +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x37b65a19 uwb_notifs_register +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x39ce5a47 uwb_rsv_terminate +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x4d57ae3c uwb_rsv_type_str +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x5ac00b18 uwb_pal_unregister +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x5e4bc088 __uwb_addr_print +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x5ffb6380 __uwb_rc_try_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x6b4830e9 uwb_rsv_create +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x6bc97296 uwb_dev_for_each +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x6ddfb373 uwb_rc_reset_all +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x6f8a7738 uwb_pal_register +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x72e7c5dd uwb_rc_cmd_async +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x766081c7 uwb_rc_ie_rm +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x7dcfcd23 uwb_ie_next +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x81031f45 uwb_rc_alloc +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x869254d6 uwb_pal_init +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x8bad75be uwb_rc_post_reset +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x8bb231c6 uwb_rc_init +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x8cc7f837 uwb_notifs_deregister +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x934e675d uwb_rc_neh_error +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x98413234 uwb_rsv_state_str +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x9e6448a1 uwb_rc_cmd +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xa08ca880 uwb_dev_try_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xa8661f2a uwb_rsv_destroy +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xab4389f5 uwb_rc_mac_addr_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xbd49525f uwb_radio_start +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xc570de58 uwb_radio_stop +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xd09e6955 uwb_rc_rm +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xdd635971 uwb_rc_ie_add +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xe1716f06 uwb_est_register +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xec242380 uwb_rc_pre_reset +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xf21d538e uwb_rc_get_by_dev +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xf33d2517 uwb_rc_add +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xfc1706d4 uwb_rc_vcmd +EXPORT_SYMBOL_GPL drivers/uwb/whci 0xbf9552da whci_wait_for +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x11e16f39 vhost_poll_flush +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x13670d6f vhost_dev_stop +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x1574433f vhost_dev_ioctl +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x269f7a09 vhost_dev_reset_owner_prepare +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x332b64d9 vhost_add_used_and_signal +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x49f2aea1 vhost_dev_has_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x4b72d889 vhost_init_used +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x64c5d9e7 vhost_signal +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x6ee138d1 vhost_log_access_ok +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x72f22810 vhost_add_used_and_signal_n +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x7ee42d8a vhost_add_used_n +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x848a57e1 vhost_dev_check_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x93abdf44 vhost_log_write +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x9f4c0e2d vhost_work_queue +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xabcb4990 vhost_dev_init +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xb01bc1eb vhost_poll_init +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xb0f81e37 vhost_work_init +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xb4faafe5 vhost_get_vq_desc +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xc016ae50 vhost_poll_stop +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xc26700fd vhost_poll_queue +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xc52fe0a7 vhost_enable_notify +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xc7962797 vhost_dev_reset_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xc9bca798 vhost_vq_access_ok +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xcab5261a vhost_discard_vq_desc +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xcf729e20 vhost_work_flush +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xd0375d26 vhost_add_used +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xd0f47586 vhost_disable_notify +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xda1ec760 vhost_poll_start +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xe08312da vhost_vring_ioctl +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xe11c3526 vhost_dev_cleanup +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xe4ae2da3 vhost_dev_set_owner +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x1f09a3bc ili9320_shutdown +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x372d2ef0 ili9320_write +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x5f6f2097 ili9320_write_regs +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0xd0b112cd ili9320_resume +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0xd8686029 ili9320_probe_spi +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0xe42bee23 ili9320_suspend +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0xee63d987 ili9320_remove +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x1200b8d1 auok190x_send_cmdargs_pixels_nowait +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x342e6ab0 auok190x_pm +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x3c2c8d6f auok190x_read_cmdargs +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x3ed63c45 auok190x_send_cmdargs_nowait +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x5b16dd9d auok190x_send_command +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x66ffcdfb auok190x_send_cmdargs +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x9f50e98a auok190x_common_probe +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0xa0127db4 auok190x_common_remove +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0xacebb4e6 auok190x_send_cmdargs_pixels +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0xc3ed6b70 auok190x_send_command_nowait +EXPORT_SYMBOL_GPL drivers/video/fbdev/core/fb_ddc 0x1182c518 fb_ddc_read +EXPORT_SYMBOL_GPL drivers/video/fbdev/sis/sisfb 0x58682013 sis_malloc_new +EXPORT_SYMBOL_GPL drivers/video/fbdev/sis/sisfb 0x7295144d sis_free_new +EXPORT_SYMBOL_GPL drivers/w1/wire 0x0e4cb5f0 w1_read_block +EXPORT_SYMBOL_GPL drivers/w1/wire 0x1f7a05f1 w1_read_8 +EXPORT_SYMBOL_GPL drivers/w1/wire 0x2a2a6470 w1_reset_bus +EXPORT_SYMBOL_GPL drivers/w1/wire 0x49e3d2d5 w1_write_8 +EXPORT_SYMBOL_GPL drivers/w1/wire 0x7c2f2afb w1_calc_crc8 +EXPORT_SYMBOL_GPL drivers/w1/wire 0x8f739336 w1_reset_select_slave +EXPORT_SYMBOL_GPL drivers/w1/wire 0xae5f2e77 w1_next_pullup +EXPORT_SYMBOL_GPL drivers/w1/wire 0xd1a304f0 w1_reset_resume_command +EXPORT_SYMBOL_GPL drivers/w1/wire 0xd45e5a03 w1_touch_block +EXPORT_SYMBOL_GPL drivers/w1/wire 0xdd07c992 w1_write_block +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x5688e177 dlm_posix_get +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x71cc7a57 dlm_posix_unlock +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x86b266d1 dlm_posix_lock +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x9321df95 dlm_lock +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xc6dc8c2f dlm_new_lockspace +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xcf9f3328 dlm_release_lockspace +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xdc583c08 dlm_unlock +EXPORT_SYMBOL_GPL fs/fscache/fscache 0x092cf98e fscache_object_sleep_till_congested +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x0f02b79c lockd_down +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x2634583d nlmsvc_unlock_all_by_sb +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x441d3f0a nlmsvc_ops +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x68884e92 lockd_up +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x77e35ccc nlmsvc_unlock_all_by_ip +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x7e5b248d nlmclnt_proc +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x950ad8dd nlmclnt_done +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x9fe70f27 nlmclnt_init +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x00300abc nfs_get_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x04d5f02c nfs_init_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x053fc1d8 nfs_pageio_reset_write_mds +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x07356ec8 nfs_fs_mount_common +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x07d2549e nfs_sb_active +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x08947cdc nfs_access_set_mask +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0a03e15a nfs_fs_type +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0a931bdb nfs_create_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0df1ad55 nfs_wait_client_init_complete +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x10508c26 nfs_pgio_current_mirror +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x11079d06 nfs_atomic_open +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1129289b nfs_fill_super +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1202f95a nfs_fs_mount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x127a31a8 nfs_do_submount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x128310c4 nfs_writeback_update_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x16821cee nfs_sops +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x186b8e53 nfs_statfs +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1aa8970d nfs_unlink +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1b1217c7 nfs_getattr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1d35def6 nfs_file_mmap +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1f2506df nfs_commitdata_release +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x20e79b94 nfs_post_op_update_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x22f95bee nfs_sb_deactive +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x26884ff7 nfs_alloc_fhandle +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x27da4c2b nfs_pgheader_init +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2b86557e nfs_instantiate +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2d38de3e nfs_show_path +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3072cac4 nfs_retry_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x32f3b493 nfs_invalidate_atime +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3396daaf nfs_clone_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3487b7ac nfs_path +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x34b1018c nfs_revalidate_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x35acc3f0 nfs_fhget +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x38c711b8 nfs_mark_client_ready +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x39b8ca8b unregister_nfs_version +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x39e05ac3 nfs_idmap_cache_timeout +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3ca31f35 nfs_net_id +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3d6be9b2 nfs_rmdir +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3e09686b nfs_show_devname +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3f2690f2 nfs_check_flags +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x42f2c81f nfs4_client_id_uniquifier +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x43f3388f nfs_rename +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4a453c87 nfs_pageio_init_write +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4b1fbd57 nfs_wb_all +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4cb9e001 recover_lost_locks +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4d51e627 alloc_nfs_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x51317b0d nfs_clone_sb_security +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x51527f1f nfs_symlink +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x51892d61 nfs_callback_set_tcpport +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x51f25b07 nfs_inode_attach_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x52095cda nfs_server_insert_lists +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x52ae04ca put_nfs_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x557a66e3 nfs_create_rpc_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5588c2bf nfs_init_cinfo +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x584b8482 nfs_inc_attr_generation_counter +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x594fe2d3 nfs_commitdata_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5b8992dc nfs_access_add_cache +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5c805d13 nfs_pageio_init +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5ca408d5 nfs_request_add_commit_list +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5e1d863a nfs_sockaddr_match_ipaddr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5f18df74 nfs_refresh_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5f90a4f0 nfs_file_release +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x65550971 nfs_generic_pgio +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6630709f nfs_get_lock_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6b104823 nfs_permission +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6c0ea4d7 nfs_pgio_data_destroy +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6c9b7eb9 nfs_sync_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6fd85659 nfs_file_flush +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x70899af8 nfs_pageio_resend +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x74c6c12d nfs_file_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x75682756 nfs_mknod +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x766fe8e8 nfs_free_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x773ffd78 nfs_initiate_pgio +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7dca6509 nfs_umount_begin +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7e11fa33 nfs_lock +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x83807adb nfs_server_remove_lists +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x84773101 nfs_show_options +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x85769cbe nfs_access_zap_cache +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8a1b35f2 nfs4_fs_type +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8fda9b1b nfs_server_copy_userdata +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x90a2566b nfs_alloc_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x90a5530f nfsiod_workqueue +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x915d7adf register_nfs_version +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x91d1fe52 max_session_slots +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x94c98958 nfs_alloc_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x957f1209 nfs_lookup +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x96e16bb4 nfs_init_server_rpcclient +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x990b6565 nfs_setattr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9a862b7c nfs_dentry_operations +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9caf3be8 nfs_close_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9d58deaa nfs_show_stats +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9fc2944a nfs_try_mount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa20a49c1 nfs_flock +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa6c865ee nfs_wait_bit_killable +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa8d2d1ce nfs_callback_tcpport +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa8e9e1ae send_implementation_id +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xaaa14361 nfs_dreq_bytes_left +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xabac5de5 nfs_pgio_header_free +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xacb199c9 nfs_pageio_reset_read_mds +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xacd10a7a nfs_submount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb189b2f1 nfs_free_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb214c7af nfs_put_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb2717ef9 nfs_set_sb_security +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb606e716 nfs_fattr_init +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb8737f60 nfs_file_llseek +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb8958b1a __tracepoint_nfs_fsync_exit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbcbe8f2e nfs_file_fsync_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbcd54455 nfs_file_splice_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbdef966d nfs_create +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbe41afe3 nfs_may_open +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc4ff1e9f nfs_auth_info_match +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc5594097 nfs_write_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc5ef47d5 nfs_init_timeout_values +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc6be0bb1 nfs_mkdir +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc7c8ae7c nfs_request_remove_commit_list +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc7d9c3da nfs_commit_free +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc9dd6c3c nfs_init_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xca2478cd get_nfs_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xcc0cb845 __tracepoint_nfs_fsync_enter +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xcda17f96 nfs_put_lock_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd0be322f nfs_pgio_header_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd1ec9ffd nfs_pageio_init_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd2513081 _nfs_display_fhandle_hash +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd45e3aa0 nfs_remount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd5aebe80 nfs_file_set_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd7aed9aa nfs_zap_acl_cache +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdae9b5d7 nfs4_disable_idmapping +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdb78f95c nfs_force_lookup_revalidate +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdc39e0d3 nfs_initiate_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdf50a614 nfs_kill_super +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe1b705e3 nfs_fscache_open_file +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe1e72342 nfs_setattr_update_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe2513431 nfs_probe_fsinfo +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe43ff792 nfs_file_write +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe66d5382 nfs_link +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe71940df nfs_alloc_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe7ae6af9 nfs_setsecurity +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe92c510d nfs_direct_set_resched_writes +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xecb48492 nfs_file_operations +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xee18cfd8 nfs4_dentry_operations +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xef012470 nfs_destroy_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf1ee1c89 nfs_drop_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf3aeafb3 nfs4_label_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf84ad0f4 nfs_post_op_update_inode_force_wcc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf865cbd6 nfs_clear_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfb7ee006 nfs_alloc_fattr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfc619abd _nfs_display_fhandle +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfd7518d7 nfs_generic_pg_test +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfecb4fc4 nfs_request_add_commit_list_locked +EXPORT_SYMBOL_GPL fs/nfs/nfsv3 0xc6b85e7b nfs3_set_ds_client +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x026b5844 nfs4_find_or_create_ds_client +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x03579b76 pnfs_generic_pg_test +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x0654db97 nfs4_init_ds_session +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x10b61b6e nfs4_put_deviceid_node +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x11bda27c __tracepoint_nfs4_pnfs_read +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x13e8dad7 pnfs_destroy_layout +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x170f3ed6 nfs41_maxgetdevinfo_overhead +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x1ae52742 nfs4_set_ds_client +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x1d5febbc nfs4_schedule_stateid_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x1f418534 pnfs_update_layout +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x205cd437 pnfs_set_lo_fail +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x23bdc631 nfs4_sequence_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x2b0d6c5d pnfs_register_layoutdriver +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x2c6bb252 nfs4_find_get_deviceid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x2e1481dc pnfs_generic_prepare_to_resend_writes +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x36403c4c nfs4_test_deviceid_unavailable +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x3d2bb80e nfs4_schedule_lease_moved_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x3f61b8bf pnfs_generic_commit_pagelist +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x47fb9e51 nfs_remove_bad_delegation +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x480b3cf1 nfs4_decode_mp_ds_addr +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x4893ad37 nfs41_sequence_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x49fba3ee pnfs_layoutcommit_inode +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x49fee69e pnfs_generic_pg_readpages +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x4c8af267 pnfs_layout_mark_request_commit +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x4ca57668 pnfs_write_done_resend_to_mds +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x5fb086d4 pnfs_put_lseg_locked +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x665fa50e __tracepoint_nfs4_pnfs_write +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x67a39a54 pnfs_generic_clear_request_commit +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x69d3558d pnfs_generic_rw_release +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x6f79a042 nfs4_schedule_migration_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x6ff355bf pnfs_nfs_generic_sync +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x7a15ebdf nfs4_set_rw_stateid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x7d47af03 pnfs_generic_pg_cleanup +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x83ae6aaa nfs4_pnfs_v3_ds_connect_unload +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x885eb458 nfs4_proc_getdeviceinfo +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x8cf5263e pnfs_generic_recover_commit_reqs +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x8fe2c4a6 pnfs_put_lseg +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x91255e13 nfs4_pnfs_ds_put +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x92f4154e _pnfs_return_layout +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x95441281 pnfs_generic_write_commit_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x9a750226 pnfs_read_resend_pnfs +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xa02df320 nfs_map_string_to_numeric +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xa0a662db pnfs_ld_write_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xa61d9978 pnfs_generic_sync +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xaa732dad nfs41_setup_sequence +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xac573a3b pnfs_report_layoutstat +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xb46c1e29 nfs4_pnfs_ds_add +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xba89ee29 pnfs_ld_read_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xc02df700 nfs40_setup_sequence +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xc05a9e29 pnfs_unregister_layoutdriver +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xc451a686 nfs4_init_deviceid_node +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xd7d8c54e pnfs_generic_pg_init_write +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xd98e8cb7 pnfs_read_done_resend_to_mds +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xdae4a8d8 pnfs_set_layoutcommit +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xdb813e84 __tracepoint_nfs4_pnfs_commit_ds +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xdba21177 nfs4_schedule_session_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xdc68625d pnfs_generic_pg_init_read +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xe323c019 nfs4_pnfs_ds_connect +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xe524feac nfs4_delete_deviceid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xe794096e pnfs_error_mark_layout_for_return +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xeaff15c9 pnfs_generic_pg_writepages +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xed15fb41 nfs4_print_deviceid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xf2258d5d pnfs_generic_scan_commit_lists +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xf75bdd5e nfs4_mark_deviceid_unavailable +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xf999267e pnfs_generic_commit_release +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xffbb77f6 nfs4_schedule_lease_recovery +EXPORT_SYMBOL_GPL fs/nfs_common/grace 0x0903d6fa locks_start_grace +EXPORT_SYMBOL_GPL fs/nfs_common/grace 0x17ce645d locks_end_grace +EXPORT_SYMBOL_GPL fs/nfs_common/grace 0x45de2d89 locks_in_grace +EXPORT_SYMBOL_GPL fs/nfs_common/nfs_acl 0x133f980a nfsacl_encode +EXPORT_SYMBOL_GPL fs/nfs_common/nfs_acl 0xdbfe0edd nfsacl_decode +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x11736b03 __mlog_printk +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 0x1d747ce3 o2hb_check_node_heartbeating +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x1ff0cc8c o2hb_unregister_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x36418553 o2net_send_message +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x475cf41a o2nm_get_node_by_num +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x4900035b o2hb_stop_all_regions +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x687f6251 mlog_and_bits +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x8b7e7ea1 o2nm_get_node_by_ip +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x9facd638 o2hb_register_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xa116b60a o2nm_node_put +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xa1ae48e1 o2hb_check_node_heartbeating_no_sem +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xa82a8645 o2nm_this_node +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xa87bc9e7 o2nm_configured_node_map +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xa9972b64 o2hb_setup_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xa9f5379a o2net_send_message_vec +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xae808bac o2net_register_handler +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xbaeb4700 o2hb_check_node_heartbeating_from_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xc3679d7b o2hb_get_all_regions +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xce9c4e97 o2nm_node_get +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xd60f2c6c o2hb_check_local_node_heartbeating +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/dlm/ocfs2_dlm 0x665cf9e8 dlm_unregister_domain +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x7a1211f8 dlm_setup_eviction_cb +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x8150275a dlm_register_domain +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x81b74c77 dlm_print_one_lock +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x961a8458 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 0xdebc5d25 dlm_register_eviction_cb +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xecdbc26c dlmlock +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xfb86b96f dlm_errname +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x07e9d3dd ocfs2_stack_glue_unregister +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x1163fd6e ocfs2_plock +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x269d63fd ocfs2_cluster_disconnect +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x316904e1 ocfs2_dlm_unlock +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x3bcef5f3 ocfs2_dlm_lock_status +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x40718c92 ocfs2_dlm_lock +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x4226705d ocfs2_dlm_dump_lksb +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x424241c9 ocfs2_dlm_lvb +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x4d3af7fa ocfs2_cluster_hangup +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x60f4bcef ocfs2_dlm_lvb_valid +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x7ea6774e ocfs2_stack_glue_register +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x9ccafa05 ocfs2_cluster_this_node +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xa06fbc10 ocfs2_cluster_connect_agnostic +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xbbc4ef97 ocfs2_stack_supports_plocks +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xbf9068ab ocfs2_cluster_connect +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xe40cffce ocfs2_stack_glue_set_max_proto_version +EXPORT_SYMBOL_GPL kernel/torture 0x0a0d7905 torture_shuffle_task_register +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 0x4c7529bd torture_shutdown_absorb +EXPORT_SYMBOL_GPL kernel/torture 0x52665f8b torture_random +EXPORT_SYMBOL_GPL kernel/torture 0x5346b23b torture_shuffle_cleanup +EXPORT_SYMBOL_GPL kernel/torture 0x6364b2f0 stutter_wait +EXPORT_SYMBOL_GPL kernel/torture 0x679d9e50 torture_must_stop +EXPORT_SYMBOL_GPL kernel/torture 0x688e6a64 torture_cleanup_end +EXPORT_SYMBOL_GPL kernel/torture 0x6bdeda8f torture_onoff_init +EXPORT_SYMBOL_GPL kernel/torture 0x8b0e1d2f torture_shuffle_init +EXPORT_SYMBOL_GPL kernel/torture 0xc1361afc torture_onoff_cleanup +EXPORT_SYMBOL_GPL kernel/torture 0xc6527045 torture_init_begin +EXPORT_SYMBOL_GPL kernel/torture 0xc67a49d4 torture_cleanup_begin +EXPORT_SYMBOL_GPL kernel/torture 0xdbc5277a torture_shutdown_init +EXPORT_SYMBOL_GPL kernel/torture 0xde0b8f93 _torture_stop_kthread +EXPORT_SYMBOL_GPL kernel/torture 0xe6989fd3 torture_init_end +EXPORT_SYMBOL_GPL kernel/torture 0xe9ff1468 torture_stutter_init +EXPORT_SYMBOL_GPL kernel/torture 0xec121410 _torture_create_kthread +EXPORT_SYMBOL_GPL kernel/torture 0xf6d34fb5 torture_kthread_stopping +EXPORT_SYMBOL_GPL lib/842/842_compress 0x1ce013cf sw842_compress +EXPORT_SYMBOL_GPL lib/842/842_decompress 0x0d22f116 sw842_decompress +EXPORT_SYMBOL_GPL lib/bch 0x231d70fc encode_bch +EXPORT_SYMBOL_GPL lib/bch 0x6b770f49 decode_bch +EXPORT_SYMBOL_GPL lib/bch 0x9463ff71 init_bch +EXPORT_SYMBOL_GPL lib/bch 0xbdf512de free_bch +EXPORT_SYMBOL_GPL lib/notifier-error-inject 0x02ca2e1b notifier_err_inject_init +EXPORT_SYMBOL_GPL lib/notifier-error-inject 0x9405326c 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 lib/reed_solomon/reed_solomon 0x201d8ea3 encode_rs8 +EXPORT_SYMBOL_GPL lib/reed_solomon/reed_solomon 0x29fa419f decode_rs8 +EXPORT_SYMBOL_GPL lib/reed_solomon/reed_solomon 0x300d7e57 free_rs +EXPORT_SYMBOL_GPL lib/reed_solomon/reed_solomon 0x6fbb3bd9 init_rs_non_canonical +EXPORT_SYMBOL_GPL lib/reed_solomon/reed_solomon 0xabda1e2e decode_rs16 +EXPORT_SYMBOL_GPL lib/reed_solomon/reed_solomon 0xb050f329 init_rs +EXPORT_SYMBOL_GPL net/6lowpan/6lowpan 0x2391f298 lowpan_header_decompress +EXPORT_SYMBOL_GPL net/6lowpan/6lowpan 0xbfa03ada lowpan_header_compress +EXPORT_SYMBOL_GPL net/802/garp 0x03f25a9b garp_register_application +EXPORT_SYMBOL_GPL net/802/garp 0x151baf40 garp_request_leave +EXPORT_SYMBOL_GPL net/802/garp 0x42ca695b garp_unregister_application +EXPORT_SYMBOL_GPL net/802/garp 0x9ee937b2 garp_init_applicant +EXPORT_SYMBOL_GPL net/802/garp 0xc924f5b8 garp_uninit_applicant +EXPORT_SYMBOL_GPL net/802/garp 0xe018df6b garp_request_join +EXPORT_SYMBOL_GPL net/802/mrp 0x1985789f mrp_request_leave +EXPORT_SYMBOL_GPL net/802/mrp 0x26c7eb24 mrp_request_join +EXPORT_SYMBOL_GPL net/802/mrp 0x590d8a22 mrp_unregister_application +EXPORT_SYMBOL_GPL net/802/mrp 0x945b91e8 mrp_init_applicant +EXPORT_SYMBOL_GPL net/802/mrp 0x9ab4dd2b mrp_uninit_applicant +EXPORT_SYMBOL_GPL net/802/mrp 0xbcdc84f5 mrp_register_application +EXPORT_SYMBOL_GPL net/802/stp 0x0026a81f stp_proto_register +EXPORT_SYMBOL_GPL net/802/stp 0x53096077 stp_proto_unregister +EXPORT_SYMBOL_GPL net/9p/9pnet 0x44587082 p9_client_xattrcreate +EXPORT_SYMBOL_GPL net/9p/9pnet 0x77c379a7 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 0x9642947e 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 0x0c6ec73e bt_debugfs +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x0d79b553 l2cap_chan_del +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x2a2e32b1 l2cap_chan_send +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x58363fcb l2cap_add_psm +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x66074d05 l2cap_chan_create +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0xc44a6fa9 l2cap_chan_put +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0xdc78ca6e l2cap_chan_set_defaults +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0xe016a207 l2cap_chan_connect +EXPORT_SYMBOL_GPL net/bridge/br_netfilter 0x0cb0f8b7 br_netfilter_enable +EXPORT_SYMBOL_GPL net/bridge/bridge 0x2834888e br_multicast_list_adjacent +EXPORT_SYMBOL_GPL net/bridge/bridge 0x48a08e39 br_deliver +EXPORT_SYMBOL_GPL net/bridge/bridge 0x8032513c br_handle_frame_finish +EXPORT_SYMBOL_GPL net/bridge/bridge 0xa7a8e2ec br_forward_finish +EXPORT_SYMBOL_GPL net/bridge/bridge 0xe072b7e3 br_dev_queue_push_xmit +EXPORT_SYMBOL_GPL net/bridge/bridge 0xea4d2914 br_multicast_has_querier_adjacent +EXPORT_SYMBOL_GPL net/bridge/bridge 0xf5ba327d br_multicast_has_querier_anywhere +EXPORT_SYMBOL_GPL net/bridge/bridge 0xf7147579 nf_br_ops +EXPORT_SYMBOL_GPL net/bridge/netfilter/nf_tables_bridge 0x9e09c6a7 nft_bridge_ip6hdr_validate +EXPORT_SYMBOL_GPL net/bridge/netfilter/nf_tables_bridge 0xcc22ad7a nft_bridge_iphdr_validate +EXPORT_SYMBOL_GPL net/dccp/dccp 0x04583833 dccp_send_ack +EXPORT_SYMBOL_GPL net/dccp/dccp 0x06543e9e dccp_disconnect +EXPORT_SYMBOL_GPL net/dccp/dccp 0x06fa0e1b dccp_check_req +EXPORT_SYMBOL_GPL net/dccp/dccp 0x0c9ad1b8 dccp_close +EXPORT_SYMBOL_GPL net/dccp/dccp 0x103a7288 dccp_done +EXPORT_SYMBOL_GPL net/dccp/dccp 0x1191bcf2 dccp_recvmsg +EXPORT_SYMBOL_GPL net/dccp/dccp 0x19215528 dccp_insert_option +EXPORT_SYMBOL_GPL net/dccp/dccp 0x1b9228aa dccp_sendmsg +EXPORT_SYMBOL_GPL net/dccp/dccp 0x1d99d49a dccp_timestamp +EXPORT_SYMBOL_GPL net/dccp/dccp 0x20545b7a dccp_feat_nn_get +EXPORT_SYMBOL_GPL net/dccp/dccp 0x2110ff93 inet_dccp_listen +EXPORT_SYMBOL_GPL net/dccp/dccp 0x21321fea dccp_death_row +EXPORT_SYMBOL_GPL net/dccp/dccp 0x2c78072a dccp_child_process +EXPORT_SYMBOL_GPL net/dccp/dccp 0x304b70fd dccp_create_openreq_child +EXPORT_SYMBOL_GPL net/dccp/dccp 0x3acd8441 dccp_ioctl +EXPORT_SYMBOL_GPL net/dccp/dccp 0x4316ff4a dccp_connect +EXPORT_SYMBOL_GPL net/dccp/dccp 0x4cdd391d dccp_feat_list_purge +EXPORT_SYMBOL_GPL net/dccp/dccp 0x4ec35231 dccp_ackvec_parsed_add +EXPORT_SYMBOL_GPL net/dccp/dccp 0x5118283b dccp_rcv_established +EXPORT_SYMBOL_GPL net/dccp/dccp 0x537b52fb dccp_shutdown +EXPORT_SYMBOL_GPL net/dccp/dccp 0x59814a84 dccp_statistics +EXPORT_SYMBOL_GPL net/dccp/dccp 0x5b2ddd8b dccp_send_sync +EXPORT_SYMBOL_GPL net/dccp/dccp 0x7396a8c9 dccp_set_state +EXPORT_SYMBOL_GPL net/dccp/dccp 0x7b6e71d2 dccp_poll +EXPORT_SYMBOL_GPL net/dccp/dccp 0x86be7924 dccp_packet_name +EXPORT_SYMBOL_GPL net/dccp/dccp 0x8dbfb0ad dccp_getsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0x9113513e dccp_parse_options +EXPORT_SYMBOL_GPL net/dccp/dccp 0x9598d24d dccp_ackvec_parsed_cleanup +EXPORT_SYMBOL_GPL net/dccp/dccp 0x987b19cc dccp_init_sock +EXPORT_SYMBOL_GPL net/dccp/dccp 0xa61dff08 dccp_sync_mss +EXPORT_SYMBOL_GPL net/dccp/dccp 0xaf88df9d dccp_rcv_state_process +EXPORT_SYMBOL_GPL net/dccp/dccp 0xbaba2d67 dccp_feat_signal_nn_change +EXPORT_SYMBOL_GPL net/dccp/dccp 0xc0552987 dccp_destroy_sock +EXPORT_SYMBOL_GPL net/dccp/dccp 0xc0b7b890 dccp_orphan_count +EXPORT_SYMBOL_GPL net/dccp/dccp 0xc0ef84e0 dccp_reqsk_send_ack +EXPORT_SYMBOL_GPL net/dccp/dccp 0xd2cb7e7c dccp_make_response +EXPORT_SYMBOL_GPL net/dccp/dccp 0xe424ac0f dccp_reqsk_init +EXPORT_SYMBOL_GPL net/dccp/dccp 0xe4909c48 dccp_hashinfo +EXPORT_SYMBOL_GPL net/dccp/dccp 0xef55abcd dccp_ctl_make_reset +EXPORT_SYMBOL_GPL net/dccp/dccp 0xfe7e82e2 dccp_setsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x3faae482 dccp_invalid_packet +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x4f952ece dccp_v4_request_recv_sock +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x5c2d6ed2 dccp_v4_send_check +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x895aefbf dccp_v4_do_rcv +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x8c93221a dccp_v4_connect +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0xdd275aec dccp_v4_conn_request +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0x0fcb1d80 ieee802154_hdr_push +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0x1e56a52b ieee802154_hdr_peek +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0x6a1941fb ieee802154_hdr_pull +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0x866f8f00 ieee802154_hdr_peek_addrs +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0xd58dfa29 ieee802154_max_payload +EXPORT_SYMBOL_GPL net/ipv4/geneve_core 0x92b075d3 geneve_sock_add +EXPORT_SYMBOL_GPL net/ipv4/geneve_core 0xdd2d5435 geneve_xmit_skb +EXPORT_SYMBOL_GPL net/ipv4/geneve_core 0xe24b5776 geneve_sock_release +EXPORT_SYMBOL_GPL net/ipv4/gre 0x6a8a29d6 gre_del_protocol +EXPORT_SYMBOL_GPL net/ipv4/gre 0x76d73bcc gre_cisco_unregister +EXPORT_SYMBOL_GPL net/ipv4/gre 0xa0993dcc gre_build_header +EXPORT_SYMBOL_GPL net/ipv4/gre 0xa814fb2f gre_cisco_register +EXPORT_SYMBOL_GPL net/ipv4/gre 0xd39ad527 gre_add_protocol +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x16ff084c inet_diag_dump_one_icsk +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x21f1e0bf inet_diag_bc_sk +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x284470ba inet_sk_diag_fill +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x3de48d9a inet_diag_register +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0xd5b501c5 inet_diag_unregister +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0xf58f1d06 inet_diag_dump_icsk +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x06419058 ip_tunnel_change_mtu +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x06b2ac4a ip_tunnel_init_net +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x0f08673f ip_tunnel_setup +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x40d4f70a ip_tunnel_lookup +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x49d7e12c ip_tunnel_init +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xad957258 ip_tunnel_newlink +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xc00cbd95 ip_tunnel_encap_setup +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xc6bbc407 ip_tunnel_xmit +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xcf2cc39d ip_tunnel_delete_net +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xd1a776fb ip_tunnel_uninit +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xd36b4582 ip_tunnel_rcv +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xd3ab7844 ip_tunnel_changelink +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xe6e23330 ip_tunnel_dellink +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xfeec4c50 ip_tunnel_ioctl +EXPORT_SYMBOL_GPL net/ipv4/netfilter/arp_tables 0x5c1aa99f arpt_alloc_initial_table +EXPORT_SYMBOL_GPL net/ipv4/netfilter/ip_tables 0x8a318dd9 ipt_alloc_initial_table +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_defrag_ipv4 0x6b6c3d10 nf_defrag_ipv4_enable +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_ipv4 0x0e5fcc28 nf_nat_ipv4_in +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_ipv4 0x51f425e2 nf_nat_icmp_reply_translation +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_ipv4 0x78aea500 nf_nat_ipv4_local_fn +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_ipv4 0xe2c4fae4 nf_nat_ipv4_out +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_ipv4 0xe3c9bfca nf_nat_ipv4_fn +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_masquerade_ipv4 0x3f5c468e nf_nat_masquerade_ipv4_unregister_notifier +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_masquerade_ipv4 0x98e732c2 nf_nat_masquerade_ipv4 +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_masquerade_ipv4 0xfedbf252 nf_nat_masquerade_ipv4_register_notifier +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_proto_gre 0x636b12c8 nf_nat_need_gre +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0x4e8efec0 nf_reject_iphdr_put +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0x69920de7 nf_send_reset +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0xce986b0f nf_send_unreach +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0xe1273cbe nf_reject_ip_tcphdr_put +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0xf57aa4ea nf_reject_ip_tcphdr_get +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_tables_ipv4 0x368602cd nft_af_ipv4 +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x0dcf038f tcp_vegas_cwnd_event +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x104f7e72 tcp_vegas_state +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x2fe282ca tcp_vegas_pkts_acked +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x575f3bf8 tcp_vegas_get_info +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0xa238f5f6 tcp_vegas_init +EXPORT_SYMBOL_GPL net/ipv4/udp_tunnel 0x09fd79fb setup_udp_tunnel_sock +EXPORT_SYMBOL_GPL net/ipv4/udp_tunnel 0x21cff921 udp_tunnel_xmit_skb +EXPORT_SYMBOL_GPL net/ipv4/udp_tunnel 0xff728098 udp_tunnel_sock_release +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x29a85119 ip6_tnl_xmit_ctl +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x4a36ac6c ip6_tnl_dst_reset +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x7f7d400e ip6_tnl_dst_check +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x89804a30 ip6_tnl_rcv_ctl +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0xb0aced14 ip6_tnl_dst_store +EXPORT_SYMBOL_GPL net/ipv6/ip6_udp_tunnel 0xbf217ee6 udp_tunnel6_xmit_skb +EXPORT_SYMBOL_GPL net/ipv6/ip6_udp_tunnel 0xdd52cb6d udp_sock_create6 +EXPORT_SYMBOL_GPL net/ipv6/netfilter/ip6_tables 0x1e4e3dd9 ip6t_alloc_initial_table +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_defrag_ipv6 0x6eb85693 nf_defrag_ipv6_enable +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_ipv6 0x236d71c4 nf_nat_icmpv6_reply_translation +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_ipv6 0x3ffd9daf nf_nat_ipv6_local_fn +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_ipv6 0x447bfeed nf_nat_ipv6_in +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_ipv6 0x9cbe06cf nf_nat_ipv6_out +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_ipv6 0xaf646b9f nf_nat_ipv6_fn +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_masquerade_ipv6 0x2293972c nf_nat_masquerade_ipv6_unregister_notifier +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_masquerade_ipv6 0x38d4401a nf_nat_masquerade_ipv6_register_notifier +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_masquerade_ipv6 0x9449e7ca nf_nat_masquerade_ipv6 +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0x50822d8d nf_reject_ip6hdr_put +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0x578e37e6 nf_send_reset6 +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0x72b849a5 nf_send_unreach6 +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0xb838fda1 nf_reject_ip6_tcphdr_get +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0xf708474d nf_reject_ip6_tcphdr_put +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_tables_ipv6 0x8b12f1a0 nft_af_ipv6 +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x07b6cbbf l2tp_tunnel_find_nth +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x0cfbcc3b l2tp_tunnel_create +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x0dc953e1 l2tp_session_set_header_len +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x112da0ad l2tp_session_free +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x1411a522 l2tp_xmit_skb +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x25b3dc8c l2tp_session_find_nth +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x328c46f0 l2tp_tunnel_find +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x4afe8498 l2tp_session_delete +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x4de37ed4 l2tp_session_queue_purge +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x72e03cdc l2tp_tunnel_closeall +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xa531bdcd l2tp_session_find_by_ifname +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xa73f273c __l2tp_session_unhash +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xccf56f72 l2tp_tunnel_delete +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xdcee5337 l2tp_session_find +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xe8e0f249 l2tp_session_create +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xfbb02b56 l2tp_udp_encap_recv +EXPORT_SYMBOL_GPL net/l2tp/l2tp_netlink 0x337f2432 l2tp_nl_unregister_ops +EXPORT_SYMBOL_GPL net/l2tp/l2tp_netlink 0x368aa0a9 l2tp_nl_register_ops +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x1181c1fe ieee80211_iterate_active_interfaces_atomic +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x21fa4c72 wdev_to_ieee80211_vif +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x2e58b3c6 ieee80211_gtk_rekey_notify +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x301516f5 ieee80211_remove_key +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x577cea10 ieee80211_napi_add +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x5b146568 ieee80211_iterate_active_interfaces_rtnl +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x67ce9259 ieee80211_resume_disconnect +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x776bc70e ieee80211_vif_to_wdev +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x7ea039ae ieee80211_iter_chan_contexts_atomic +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x892ea22e ieee80211_ave_rssi +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x8e056fdd ieee80211_iterate_interfaces +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x947f45ed ieee80211_gtk_rekey_add +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x985ea574 ieee80211_find_sta_by_ifaddr +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x9faef176 ieee80211_ready_on_channel +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xac5d6eeb ieee80211_request_smps +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xad0efcfd ieee80211_set_key_tx_seq +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xad2abb93 ieee80211_iterate_stations_atomic +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xe453fc99 ieee80211_remain_on_channel_expired +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xf9fa191d ieee80211_set_key_rx_seq +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x0679c2db ip_set_name_byindex +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x1ccb228d ip_set_put_extensions +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x397f6231 ip_set_free +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x3d1cf1c7 ip_set_elem_len +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x44f93b15 ip_set_nfnl_put +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x6344eaf6 ip_set_alloc +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x73181049 ip_set_put_byindex +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x7924b6de ip_set_hostmask_map +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x806a4be2 ip_set_get_extensions +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x81fff2d1 ip_set_netmask_map +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x85673c84 ip_set_type_unregister +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x9a2bb7a2 ip_set_add +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x9e98722b ip_set_get_ipaddr6 +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xa1c1454d ip_set_get_ip6_port +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xa293f8a6 ip_set_get_ipaddr4 +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xa2d623f3 ip_set_range_to_cidr +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xa6804e3f ip_set_test +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xab365e3f ip_set_del +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xb0af15e9 ip_set_get_ip4_port +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xba599237 ip_set_nfnl_get_byindex +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xcc001bd9 ip_set_extensions +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xdefd93a9 ip_set_get_byname +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xe9f7b576 ip_set_get_ip_port +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xf3bc6560 ip_set_type_register +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0x001b5d1d ip_vs_conn_out_get_proto +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0x7248c90e ip_vs_conn_in_get_proto +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0x79b89228 register_ip_vs_pe +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0x7c266392 unregister_ip_vs_pe +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x01bb052b nf_ct_l3proto_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x03a13684 nf_ct_timeout_find_get_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x045072cd nf_ct_port_nla_policy +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x0a62b0ef nf_conntrack_l3proto_generic +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x0abc98e4 nf_conntrack_register_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x0afc216b nf_ct_l4proto_pernet_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x0c2b4ba6 nf_ct_tmpl_free +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x0e806197 nf_ct_l3proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x0f57ef7f nf_ct_iterate_cleanup +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x1164d35c nf_ct_helper_expectfn_find_by_symbol +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x11f33c73 nf_ct_helper_log +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x1401ca7d nf_ct_l3proto_pernet_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x1a04de91 nf_ct_expect_init +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x1a5290fd __nf_ct_refresh_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x26a0b488 nf_ct_delete +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x270d4110 nf_conntrack_free +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x283a236f seq_print_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x289c3714 nf_ct_alloc_hashtable +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x29f52c58 nf_ct_helper_expectfn_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x2c7689b3 nf_conntrack_unregister_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x2e9e1abf nf_ct_seqadj_init +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x34ab3cab nf_ct_invert_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x36e1f794 __nf_ct_try_assign_helper +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x37386cac nf_conntrack_hash_rnd +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x37f2cdac nf_ct_l4proto_pernet_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3ca11974 nf_ct_expect_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3e78a048 nf_ct_get_tuplepr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3f5b1415 nf_ct_port_nlattr_to_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x4702fec4 __nf_conntrack_helper_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x47a0d723 nf_connlabels_replace +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x48336f0c nf_conntrack_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x4beeddca nf_ct_extend_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x4d4021f1 __nf_conntrack_confirm +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x4e1bb17f nf_ct_seq_adjust +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x55816473 nf_ct_remove_expectations +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x59830391 __nf_ct_l4proto_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x5ad07800 nf_connlabel_match +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x5c0288c6 nf_ct_timeout_put_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x60a587ea nf_ct_helper_expectfn_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x62813e5c nf_ct_port_nlattr_tuple_size +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x686958ab nf_ct_port_tuple_to_nlattr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x69183eee nf_ct_helper_expectfn_find_by_name +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x693c3961 nf_ct_helper_hash +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6b079ee7 nf_conntrack_tuple_taken +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6de8479c nf_ct_seq_offset +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6e224a7a need_conntrack +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6ea06d56 nf_ct_l4proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6ed32746 nf_ct_extend_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x782cf0ed nf_conntrack_helper_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x78f9b710 nf_ct_l3proto_try_module_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x7b763ad0 __nf_ct_expect_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x7f661fb9 nf_conntrack_hash_check_insert +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x87e039db nf_ct_expect_related_report +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x88de65d4 nf_conntrack_helper_try_module_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8a66c4fc nf_conntrack_expect_lock +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8be00c47 nf_conntrack_set_hashsize +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8ffe7e89 nf_conntrack_htable_size +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x905fc2e1 nf_ct_expect_unregister_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x90ff6c9f nf_ct_invert_tuplepr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x91d58ee7 nfnetlink_parse_nat_setup_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x9ae6f6a0 nf_ct_expect_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x9eb18a6f nf_ct_unexpect_related +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa2ecc315 nf_ct_get_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa30c88bb nf_conntrack_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa6712889 nf_ct_l3proto_pernet_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xab2754a4 nf_conntrack_helper_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xab3d1f95 nf_ct_untracked_status_or +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xad1bb027 nf_ct_free_hashtable +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb25a4984 nf_ct_expect_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb602c57e nf_ct_l3proto_module_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 0xc7c0e5dd nf_ct_helper_ext_add +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xca037a8b nf_ct_seqadj_set +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xcc3ee242 nf_conntrack_l4proto_tcp6 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xccda9cc7 nf_ct_tmpl_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd183b5ec nf_conntrack_alter_reply +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd19eb0ce __nf_ct_kill_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd4a83de2 nf_ct_unlink_expect_report +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd54752b9 nf_ct_l4proto_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd5c28665 nf_ct_expect_register_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xdab2d336 nf_ct_l4proto_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xdb3ffb4b nf_conntrack_l4proto_udp6 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xdef14d86 nf_ct_l3proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xe90999c9 nf_conntrack_l4proto_udp4 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xea6a752a nf_conntrack_in +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xea8bb15d nf_ct_l4proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf2a36bd6 nf_ct_l3protos +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf38bcdf3 nf_conntrack_max +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf5b4a4d7 nf_connlabel_set +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xfb065c8f nf_ct_deliver_cached_events +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xfc5f9c54 nf_ct_tcp_seqadj_set +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xfe0880c0 nf_conntrack_l4proto_tcp4 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xff40b965 nf_conntrack_locks +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_amanda 0x1f21d139 nf_nat_amanda_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_broadcast 0x9a5f6c7c nf_conntrack_broadcast_help +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_ftp 0xc55bc2df nf_nat_ftp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x228083f6 nat_t120_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x52ffbf82 set_sig_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x57ab4a09 set_h225_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x5c22bab0 nat_q931_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x6195d621 nat_callforwarding_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x72a401f3 nat_rtp_rtcp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x74823477 nat_h245_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xca7682a9 get_h225_addr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xfa09a96a set_h245_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xfcdfafc7 set_ras_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_irc 0xfa0b87da nf_nat_irc_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0x4e296085 nf_nat_pptp_hook_inbound +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0x946e67fc nf_nat_pptp_hook_outbound +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0x9b77e36b nf_nat_pptp_hook_expectfn +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0xf05bd5ef nf_nat_pptp_hook_exp_gre +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_proto_gre 0x51be64dc nf_ct_gre_keymap_add +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_proto_gre 0xadfe2d4b nf_ct_gre_keymap_destroy +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x23dad9bf ct_sip_parse_header_uri +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x53b0539f ct_sip_parse_numerical_param +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x5b9729fd ct_sip_get_header +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x6cca55c3 ct_sip_parse_request +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x9d9dcfa9 ct_sip_get_sdp_header +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xb467d3dc nf_nat_sip_hooks +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xc8b49a1a ct_sip_parse_address_param +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_snmp 0x324f20c9 nf_nat_snmp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_tftp 0x5ba715fd nf_nat_tftp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_log_common 0x2a5ce815 nf_log_dump_tcp_header +EXPORT_SYMBOL_GPL net/netfilter/nf_log_common 0x749f32d2 nf_log_dump_packet_common +EXPORT_SYMBOL_GPL net/netfilter/nf_log_common 0x849017cf nf_log_dump_sk_uid_gid +EXPORT_SYMBOL_GPL net/netfilter/nf_log_common 0xf7cc52f0 nf_log_dump_udp_header +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x0d9bae4b nf_nat_l4proto_nlattr_to_range +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x12d1be34 nf_nat_l4proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x131f636c nf_nat_l4proto_in_range +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x2c0f0f97 nf_nat_l4proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x49d75876 nf_nat_packet +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x5d482d32 nf_nat_l3proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x93034c42 nf_nat_l3proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xa7ad4873 nf_nat_alloc_null_binding +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xb1234be1 __nf_nat_l4proto_find +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xcf571798 nf_ct_nat_ext_add +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xfb7130bc nf_nat_l4proto_unique_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_nat_redirect 0x23aadcc7 nf_nat_redirect_ipv6 +EXPORT_SYMBOL_GPL net/netfilter/nf_nat_redirect 0x2930a6fe nf_nat_redirect_ipv4 +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x11a006b5 synproxy_check_timestamp_cookie +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x467bd25a synproxy_tstamp_adjust +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x5f339439 synproxy_build_options +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x90298227 synproxy_init_timestamp_cookie +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0xb42e336a synproxy_options_size +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0xef7db50c synproxy_net_id +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0xfb131894 synproxy_parse_options +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x0d7e3aec nft_register_afinfo +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x1e6b75a3 nft_parse_register +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x267c3b81 nft_register_expr +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x2a142d6a nft_unregister_expr +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x2e9f65d9 nft_validate_register_store +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x31278b9e nft_register_set +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x46c90bcc nft_unregister_basechain +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x47a611a5 nft_unregister_chain_type +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x53ea2f13 nft_set_gc_batch_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x5778f241 nft_chain_validate_hooks +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x68088bee nft_data_uninit +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x71d3bc15 nft_do_chain +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x9c5e31a7 nft_data_init +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xa735874e nft_data_dump +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xa738ad94 nft_unregister_set +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xb7fbdb74 nft_set_elem_destroy +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xbf63bb61 nft_set_gc_batch_release +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xcf03e214 nft_chain_validate_dependency +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xd463cff3 nft_register_basechain +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xdd586b92 nft_register_chain_type +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xdf553753 nft_unregister_afinfo +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xe09dada2 nft_set_ext_types +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xed33c632 nft_validate_register_load +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xf66af8da nft_dump_register +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x02e5539f nfnetlink_has_listeners +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x04e1d4ce nfnetlink_alloc_skb +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x08f8e8eb nfnetlink_subsys_unregister +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x2facb298 nfnetlink_set_err +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x304f0303 nfnetlink_unicast +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x5ce3b588 nfnl_lock +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x86158fe6 nfnetlink_send +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x991a5fb5 nfnetlink_subsys_register +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xdb065657 nfnl_unlock +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0x21f6bba6 nfnl_acct_find_get +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0xaf5fdd0a nfnl_acct_overquota +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0xbecf5d14 nfnl_acct_put +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0xcdba30c3 nfnl_acct_update +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_log 0xd35efe04 nfulnl_log_packet +EXPORT_SYMBOL_GPL net/netfilter/nft_masq 0x5c591c45 nft_masq_dump +EXPORT_SYMBOL_GPL net/netfilter/nft_masq 0x7941c242 nft_masq_validate +EXPORT_SYMBOL_GPL net/netfilter/nft_masq 0xe3b8ea21 nft_masq_policy +EXPORT_SYMBOL_GPL net/netfilter/nft_masq 0xe4df768e nft_masq_init +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0x28f04492 nft_meta_get_init +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0x59d51841 nft_meta_get_eval +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0x7f82a26a nft_meta_set_dump +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0x8c071dad nft_meta_set_init +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0xa840a26e nft_meta_get_dump +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0xac88b136 nft_meta_set_eval +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0xb80e8358 nft_meta_policy +EXPORT_SYMBOL_GPL net/netfilter/nft_redir 0x90110a67 nft_redir_init +EXPORT_SYMBOL_GPL net/netfilter/nft_redir 0xa5be1e1e nft_redir_policy +EXPORT_SYMBOL_GPL net/netfilter/nft_redir 0xbd3ffa0e nft_redir_validate +EXPORT_SYMBOL_GPL net/netfilter/nft_redir 0xf277e3d6 nft_redir_dump +EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0x8898f11a nft_reject_init +EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0xa2db3c7f nft_reject_policy +EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0xa8c1e91e nft_reject_dump +EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0xddf15889 nft_reject_icmp_code +EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0xe8cdab4e nft_reject_icmpv6_code +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x000ad045 xt_replace_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x0f7edab3 xt_table_unlock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x158367a6 xt_proto_init +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x2764eb79 xt_check_target +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x2b5e04bc xt_find_table_lock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x40728a63 xt_find_revision +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x4b0fe243 xt_hook_unlink +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x4d6d5b68 xt_proto_fini +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x672a965a xt_check_match +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x807d2b2c xt_recseq +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x825329a6 xt_request_find_match +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x8456bba6 xt_unregister_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x86e930f8 xt_register_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xbb9bd8ab xt_request_find_target +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xeea62af9 xt_hook_link +EXPORT_SYMBOL_GPL net/netfilter/xt_RATEEST 0x00204983 xt_rateest_put +EXPORT_SYMBOL_GPL net/netfilter/xt_RATEEST 0x482b6a12 xt_rateest_lookup +EXPORT_SYMBOL_GPL net/nfc/nci/nci 0x3e188f02 nci_spi_allocate_spi +EXPORT_SYMBOL_GPL net/nfc/nci/nci 0x9491bba5 nci_spi_send +EXPORT_SYMBOL_GPL net/nfc/nci/nci 0xbf52238d nci_spi_read +EXPORT_SYMBOL_GPL net/nfc/nci/nci_uart 0x3ebc0d82 nci_uart_register +EXPORT_SYMBOL_GPL net/nfc/nci/nci_uart 0x8ad304ac nci_uart_set_config +EXPORT_SYMBOL_GPL net/nfc/nci/nci_uart 0xa4928f25 nci_uart_unregister +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x269861bd ovs_vport_free +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x281c526e ovs_tunnel_get_egress_info +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x648fc81a ovs_vport_alloc +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0xaf9b8f2c ovs_vport_ops_register +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0xcea35766 ovs_vport_receive +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0xd59e5fd7 ovs_vport_ops_unregister +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0xd99d8489 ovs_vport_deferred_free +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0xda83411d ovs_net_id +EXPORT_SYMBOL_GPL net/rds/rds 0x00a467af rds_wq +EXPORT_SYMBOL_GPL net/rds/rds 0x052fdbcf rds_conn_drop +EXPORT_SYMBOL_GPL net/rds/rds 0x1d419afe rds_conn_destroy +EXPORT_SYMBOL_GPL net/rds/rds 0x2c5c5514 rds_message_add_rdma_dest_extension +EXPORT_SYMBOL_GPL net/rds/rds 0x2c7ad07e rds_trans_register +EXPORT_SYMBOL_GPL net/rds/rds 0x3101936e rds_message_add_extension +EXPORT_SYMBOL_GPL net/rds/rds 0x34da6930 rds_message_addref +EXPORT_SYMBOL_GPL net/rds/rds 0x3a3e3dc9 rds_message_unmapped +EXPORT_SYMBOL_GPL net/rds/rds 0x3b4fc0fc rds_page_remainder_alloc +EXPORT_SYMBOL_GPL net/rds/rds 0x4f619a96 rds_conn_create +EXPORT_SYMBOL_GPL net/rds/rds 0x505c4a7f rds_page_copy_user +EXPORT_SYMBOL_GPL net/rds/rds 0x50cbe7b3 rds_stats +EXPORT_SYMBOL_GPL net/rds/rds 0x597273ef rds_atomic_send_complete +EXPORT_SYMBOL_GPL net/rds/rds 0x6ac3863a rds_cong_map_updated +EXPORT_SYMBOL_GPL net/rds/rds 0x727f513f rds_rdma_send_complete +EXPORT_SYMBOL_GPL net/rds/rds 0x73aac73d rds_message_populate_header +EXPORT_SYMBOL_GPL net/rds/rds 0x80a2723f rds_send_get_message +EXPORT_SYMBOL_GPL net/rds/rds 0x87de2c03 rds_info_register_func +EXPORT_SYMBOL_GPL net/rds/rds 0x8cb2befc rds_connect_complete +EXPORT_SYMBOL_GPL net/rds/rds 0x91a86fdf rds_trans_unregister +EXPORT_SYMBOL_GPL net/rds/rds 0x96fafe85 rds_stats_info_copy +EXPORT_SYMBOL_GPL net/rds/rds 0xa380ecdc rds_recv_incoming +EXPORT_SYMBOL_GPL net/rds/rds 0xb055d8f0 rds_inc_put +EXPORT_SYMBOL_GPL net/rds/rds 0xc2dab779 rds_info_copy +EXPORT_SYMBOL_GPL net/rds/rds 0xc5c0e445 rds_info_deregister_func +EXPORT_SYMBOL_GPL net/rds/rds 0xc7669c30 rds_send_drop_acked +EXPORT_SYMBOL_GPL net/rds/rds 0xcd53f887 rds_inc_init +EXPORT_SYMBOL_GPL net/rds/rds 0xe8627383 rds_conn_connect_if_down +EXPORT_SYMBOL_GPL net/rds/rds 0xefca8d0f rds_for_each_conn_info +EXPORT_SYMBOL_GPL net/rds/rds 0xf49d09a6 rds_message_put +EXPORT_SYMBOL_GPL net/rds/rds 0xfca1ed18 rds_conn_create_outgoing +EXPORT_SYMBOL_GPL net/rxrpc/af-rxrpc 0x5a52b844 rxrpc_unregister_security +EXPORT_SYMBOL_GPL net/rxrpc/af-rxrpc 0x715e8cf7 rxrpc_register_security +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x00c52ef5 g_make_token_header +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x8d1a827e svcauth_gss_register_pseudoflavor +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x90c48407 gss_mech_register +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xa51a622f svcauth_gss_flavor +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xb5dea7ef g_token_size +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xf8b2ff6e g_verify_token_header +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xf8df7f47 gss_mech_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x01ca0c2d xprt_reserve_xprt_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x03359ed5 rpc_run_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x045834e9 rpcauth_get_pseudoflavor +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0563f4fa xprt_unregister_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 0x07e75630 rpc_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x081c4632 sunrpc_cache_pipe_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0894db90 xdr_init_encode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x09599e29 svc_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0bc41033 rpc_wake_up_queued_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0da06165 rpc_wake_up +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0e74a415 rpc_find_or_alloc_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0f668ba9 svc_auth_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x10bbe3cc xdr_buf_from_iov +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x10c2245b rpc_call_null +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x11dab050 bc_svc_process +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x11e18b47 xdr_process_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1451a182 rpc_setbufsize +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x14a6b563 xdr_stream_pos +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x14b22730 xdr_inline_decode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x154b41e5 rpc_alloc_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x15ad400f xdr_set_scratch_buffer +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x177c01ec rpc_wake_up_status +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x19230c5f svc_set_num_threads +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1b12d1e3 svc_addsock +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1b618401 svcauth_unix_purge +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1d3f5c53 svc_create_pooled +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1f756d4c xdr_shift_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1ffd3ba0 xdr_decode_word +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x20455cad sunrpc_destroy_cache_detail +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x20cefad1 xprt_alloc +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x21ae8cea xprt_lookup_rqst +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x224bf0c7 rpc_pipe_generic_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x22c45797 rpcauth_init_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x230539c9 svc_shutdown_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2490e7ca rpc_shutdown_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x25f3700a rpc_put_task_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x26c2ae03 svc_xprt_put +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2919b156 xdr_decode_string_inplace +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2b6399b9 svc_wake_up +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2cd87c75 rpc_create_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2dcd9199 rpc_d_lookup_sb +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2eec63c9 xdr_encode_netobj +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2f8ebbe0 rpc_ntop +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x31a89d59 rpc_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x32b9624f rpc_task_reset_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x33e9a122 xdr_buf_read_netobj +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x33f97fab svc_rpcb_cleanup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x34762974 rpc_force_rebind +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x34c2efcf rpc_exit +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x37f1e0f1 cache_destroy_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x387e1639 rpc_pipefs_notifier_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x389dcf4f rpc_put_sb_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3b4b7c5d cache_unregister_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3ca45e3f rpc_count_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3f3ccf1e rpcauth_lookupcred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x42a915f1 cache_check +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x42b23482 xprt_alloc_slot +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4461a437 rpc_release_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x47a4d908 rpc_pton +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x48519b3f svc_max_payload +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4973a472 rpc_net_ns +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x49d00512 svc_recv +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4c09c34f rpc_switch_client_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4cdf8dd2 rpc_wake_up_next +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x52c57b67 svc_create_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x53067ec9 rpc_print_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x53445f68 nlm_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x535448cd xprt_complete_rqst +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x535d82fb rpc_lookup_machine_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x54a04695 rpc_localaddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x54ee31c6 rpcb_getport_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x57f1ee36 xprt_write_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5a26f4ee rpc_mkpipe_data +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5f7b60fb _copy_from_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x60ad7f9f rpc_restart_call_prepare +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6108b034 xdr_buf_trim +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x61600d24 rpcauth_cred_key_to_expire +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x62372d8c xprt_release_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x63740a29 rpc_max_payload +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x639eadbc cache_register_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x643addee xdr_decode_array2 +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x664b9fa3 rpcauth_lookup_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x66f4ec98 svc_process +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6860e70d cache_purge +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x69e7eab9 sunrpc_cache_unregister_pipefs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6b3e0dfc svc_exit_thread +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6e2e83bd svc_proc_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6edbb165 auth_domain_lookup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7052aa2b gssd_running +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7053538d rpc_clone_client_set_auth +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x71fa908a cache_flush +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x72833b5e xdr_read_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x75336f2d rpc_killall_tasks +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7585a566 rpc_bind_new_program +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x76c524fa rpc_lookup_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7778d015 put_rpccred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7778e89a svcauth_unix_set_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x779e7dd2 xdr_reserve_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x781e5729 xdr_encode_word +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7a8a84fb xprt_release_xprt_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7b6d998b svc_set_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7b91b671 rpcauth_destroy_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7c404337 xprt_wake_pending_tasks +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7c9672b1 rpc_mkpipe_dentry +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7d5dbbb1 xprt_destroy_backchannel +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7de53067 rpc_init_rtt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7ef374fc xdr_terminate_string +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x80951b28 rpcauth_get_gssinfo +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8096c293 rpc_clnt_swap_activate +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x81602b1a svc_xprt_copy_addrs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x816b0a7b xdr_partial_copy_from_skb +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x816c6f9f svc_close_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8236346e xdr_enter_page +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x83f19273 rpc_delay +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x84076ceb __rpc_wait_for_completion_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8458502c rpc_malloc +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8721aa09 xdr_encode_array2 +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8d9097bf svc_find_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8d9affbb rpc_clone_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8dbb163a svc_reserve +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8e828f11 write_bytes_to_xdr_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x92d0003a rpc_peeraddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x933a8fdd xprt_wait_for_buffer_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9481be27 rpc_protocol +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9569c398 xprt_lock_and_alloc_slot +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x96c9afaf rpc_init_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x96da79c0 svc_xprt_enqueue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x98aaeced rpc_add_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x98b75d64 rpcauth_list_flavors +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x99dc5eab auth_domain_put +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9d8ebc5e rpcauth_key_timeout_notify +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9de170c5 rpc_rmdir +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9e1a1590 xdr_init_decode_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9e41389e rpc_count_iostats_metrics +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9ef449af rpc_init_priority_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa0638c51 svc_drop +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa0beb126 xdr_init_decode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa25852b6 rpc_get_timeout +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa64c541c rpc_peeraddr2str +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa66c0bf4 rpc_get_sb_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa8c153ba svc_reg_xprt_class +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xabb45785 xprt_register_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xabf9b076 rpc_sleep_on_priority +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xac6eb025 rpc_sleep_on +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xac866d5f xdr_inline_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xaf5bf6ef nfs_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xafb9b55a xdr_skb_read_bits +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb2d48c25 sunrpc_cache_update +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb315aa90 rpcauth_init_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb4bc11c9 rpc_destroy_pipe_data +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb51a3724 rpc_pipefs_notifier_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb53142f0 xprt_setup_backchannel +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb8cd5dff rpc_queue_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb9d25b69 unix_domain_find +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbdca387a rpc_remove_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbde7eeaf xprt_adjust_cwnd +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbe13a18c rpc_uaddr2sockaddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbf2003d4 xprt_set_retrans_timeout_rtt +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 0xc2a8e6da svc_destroy +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc3880471 xdr_decode_netobj +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc4116cdc rpcauth_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc548007a xprt_free +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc7443e65 xprt_release_rqst_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc7b72f32 sunrpc_cache_register_pipefs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc7faedb4 rpc_init_pipe_dir_head +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc807e879 rpc_call_sync +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc8e96dea qword_addhex +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc9c87a14 read_bytes_from_xdr_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcb16405c svc_bind +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcea8cb7d xprt_disconnect_done +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcee467f3 xprt_load_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcf671406 xdr_buf_subsegment +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd080a47d rpc_call_start +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd104e5fe svc_prepare_thread +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd6bc6c3f svc_alien_sock +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd72d52e8 svc_unreg_xprt_class +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd7f3c3a8 rpc_free_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd8354f40 rpc_wake_up_first +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd85ba8db cache_create_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdaf8136f rpcauth_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdd18932f rpc_lookup_cred_nonblock +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdd6b720e rpc_init_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xde54f76a xprt_set_retrans_timeout_def +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe1ac2bb8 sunrpc_net_id +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe2b95a9d xprt_reserve_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe4c96ea4 svc_sock_update_bufs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe535c4cb rpc_clnt_swap_deactivate +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe5919cb1 xdr_encode_opaque +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe62df492 svc_xprt_names +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe64e77f9 svc_print_addr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe7f1c527 svc_proc_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe81b4d7c sunrpc_cache_lookup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe8516b3f rpc_call_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe97f4ce5 qword_get +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xeb2df671 rpc_proc_unregister +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 0xef0c21e4 rpc_destroy_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xef64811d svc_authenticate +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf02bd89e xdr_commit_encode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf3dbb835 rpcauth_stringify_acceptor +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf3f8dd60 rpc_restart_call +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf414928b rpcauth_generic_bind_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf45f7cef svc_rpcb_setup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf5137058 rpc_unlink +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf6fe0604 svc_seq_show +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf80e251b auth_domain_find +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf90142b2 sunrpc_init_cache_detail +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf90665ec csum_partial_copy_to_xdr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf9a579ea svc_xprt_init +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf9d1164c rpc_free +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfb8bb856 svc_auth_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfbbdaf7d rpc_proc_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfec8570f rpc_put_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfef8e827 rpcauth_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xffce5b8e xdr_write_pages +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x0c79d5ef vm_sockets_get_local_cid +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x15c0c57c vsock_addr_init +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x2663cb64 vsock_addr_equals_addr +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x357bd22b vsock_find_bound_socket +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 0x7f730c80 vsock_core_exit +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x8381c5bf __vsock_create +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x8395ca3a vsock_for_each_connected_socket +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x9110ef9a vsock_remove_connected +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xb635d51f vsock_find_connected_socket +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xb86b06d9 vsock_remove_pending +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xbd0f699d vsock_addr_bound +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xbf4115cf vsock_remove_bound +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xc68a5569 __vsock_core_init +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xd1d632e1 vsock_stream_has_data +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xd95ac116 vsock_addr_validate +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xe7e9060d vsock_add_pending +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xf1289763 vsock_insert_connected +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xf30b63af vsock_enqueue_accept +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xf56fe5c0 vsock_stream_has_space +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xf593c40a vsock_pending_work +EXPORT_SYMBOL_GPL net/wimax/wimax 0x20b9be1f wimax_msg_alloc +EXPORT_SYMBOL_GPL net/wimax/wimax 0x2c837a83 wimax_msg_data_len +EXPORT_SYMBOL_GPL net/wimax/wimax 0x3cca60c0 wimax_dev_add +EXPORT_SYMBOL_GPL net/wimax/wimax 0x88fc6d2d wimax_msg_data +EXPORT_SYMBOL_GPL net/wimax/wimax 0x917d4797 wimax_msg +EXPORT_SYMBOL_GPL net/wimax/wimax 0x93231cf3 wimax_state_get +EXPORT_SYMBOL_GPL net/wimax/wimax 0x9718475f wimax_report_rfkill_hw +EXPORT_SYMBOL_GPL net/wimax/wimax 0xaede48fc wimax_msg_len +EXPORT_SYMBOL_GPL net/wimax/wimax 0xbaac76db wimax_report_rfkill_sw +EXPORT_SYMBOL_GPL net/wimax/wimax 0xe904c296 wimax_dev_rm +EXPORT_SYMBOL_GPL net/wimax/wimax 0xea619f19 wimax_dev_init +EXPORT_SYMBOL_GPL net/wimax/wimax 0xf7cff38a wimax_msg_send +EXPORT_SYMBOL_GPL net/wimax/wimax 0xffd6ebd4 wimax_state_change +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x0db41543 cfg80211_wext_siwrts +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x291a9013 cfg80211_wext_siwscan +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x2eb3d63b cfg80211_wext_giwrange +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x372bde0e cfg80211_vendor_cmd_reply +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x77a7da03 cfg80211_wext_giwrts +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x8a564b3f cfg80211_wext_giwmode +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x8c5d3794 cfg80211_wext_siwmode +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x93a3b082 cfg80211_wext_giwretry +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x9efcb236 cfg80211_wext_giwfrag +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xb8b90827 cfg80211_shutdown_all_interfaces +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xd2202366 cfg80211_wext_giwscan +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xdc4954d6 cfg80211_wext_giwname +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xe85ae069 cfg80211_wext_siwfrag +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 0x3bf471d7 xfrm_calg_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x47b34e60 xfrm_ealg_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x60b73277 xfrm_aead_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x7a8ca627 xfrm_count_pfkey_enc_supported +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x834ba96d xfrm_aalg_get_byid +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xa6e66685 xfrm_aalg_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xaa762fe2 xfrm_aalg_get_byidx +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xad1b60ed xfrm_calg_get_byid +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xdbfc35c8 xfrm_ealg_get_byidx +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xdfea3a6d xfrm_ealg_get_byid +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0x2174f9f8 ipcomp_destroy +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0x7e769cd8 ipcomp_init_state +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0xc562e9ee ipcomp_input +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0xd0714faa ipcomp_output +EXPORT_SYMBOL_GPL sound/core/seq/snd-seq-device 0x08752ecd snd_seq_driver_unregister +EXPORT_SYMBOL_GPL sound/core/seq/snd-seq-device 0x35888e25 __snd_seq_driver_register +EXPORT_SYMBOL_GPL sound/core/snd 0x085cd350 snd_ctl_add_vmaster_hook +EXPORT_SYMBOL_GPL sound/core/snd 0x24e573f1 snd_ctl_sync_vmaster +EXPORT_SYMBOL_GPL sound/core/snd 0x46ebb5ea snd_device_disconnect +EXPORT_SYMBOL_GPL sound/core/snd 0x8de4bdc4 snd_device_initialize +EXPORT_SYMBOL_GPL sound/core/snd 0xb7e7f20c snd_ctl_activate_id +EXPORT_SYMBOL_GPL sound/core/snd 0xd0bba6de snd_ctl_get_preferred_subdevice +EXPORT_SYMBOL_GPL sound/core/snd 0xf4904cb6 snd_card_add_dev_attr +EXPORT_SYMBOL_GPL sound/core/snd-compress 0x89fdd6af snd_compress_register +EXPORT_SYMBOL_GPL sound/core/snd-compress 0xb9589b99 snd_compress_new +EXPORT_SYMBOL_GPL sound/core/snd-compress 0xc66c27c7 snd_compress_deregister +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 0x0caf70c7 snd_pcm_add_chmap_ctls +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x2b9812e6 snd_pcm_stream_lock +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x38cbb8d3 snd_pcm_stop_xrun +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x5503032f snd_pcm_stream_unlock +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x6c38b63d snd_pcm_lib_default_mmap +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x7a8b6366 snd_pcm_stream_unlock_irqrestore +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x7c259ae0 _snd_pcm_stream_lock_irqsave +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x9647a492 snd_pcm_stream_unlock_irq +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0xa286a234 snd_pcm_format_name +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0xa5eec3b3 snd_pcm_stream_lock_irq +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0xab8bc1a2 snd_pcm_rate_mask_intersect +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x10a00316 snd_dmaengine_pcm_trigger +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x2759918c snd_dmaengine_pcm_request_channel +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x2fb27572 snd_dmaengine_pcm_pointer_no_residue +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x5e33c956 snd_dmaengine_pcm_open +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x8e9c0bff snd_hwparams_to_dma_slave_config +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x8ee420bc snd_dmaengine_pcm_close +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x9aecefbf snd_dmaengine_pcm_set_config_from_dai_data +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0xbe5041d4 snd_dmaengine_pcm_pointer +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0xca2e9880 snd_dmaengine_pcm_open_request_chan +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0xdf07e3bf snd_dmaengine_pcm_get_chan +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0xe406d01f snd_dmaengine_pcm_close_release_chan +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x06804637 snd_hdac_dsp_prepare +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x0e9b5ea1 snd_hdac_bus_enter_link_reset +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x13783127 snd_hda_bus_type +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x1e785a58 snd_hdac_regmap_read_raw +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x201663a2 snd_hdac_dsp_cleanup +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x272b0e92 hdac_get_device_id +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x2e186ae5 snd_hdac_stream_set_params +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x2e776130 snd_hdac_link_power +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x2ee48ed1 snd_hdac_stream_cleanup +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x33b60f40 snd_hdac_regmap_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x348b91c8 _snd_hdac_read_parm +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x3e5028f5 snd_hdac_device_unregister +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x41b0d9e3 snd_hdac_power_down_pm +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x42ce55d1 snd_hdac_bus_init_cmd_io +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x49a1bb1f snd_hdac_refresh_widgets +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x4dd95ce4 snd_hdac_stream_clear +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x5e061592 snd_hdac_bus_exec_verb +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x5f5bcb70 snd_hdac_regmap_exit +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x64573cd0 snd_hdac_is_supported_format +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x648214ec snd_hdac_bus_init_chip +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x6fc3d22e snd_hdac_stream_setup +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x710c1cbb snd_hdac_bus_free_stream_pages +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x749693ac snd_hdac_bus_queue_event +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x75e9b780 snd_hdac_device_register +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x7ab7b0c0 snd_hdac_bus_add_device +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x7afe2add snd_hdac_regmap_add_vendor_verb +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x7bba1a0f snd_hdac_power_up +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x849c9b77 snd_hdac_stream_start +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x8724867b snd_hdac_regmap_update_raw +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x90b629b0 snd_hdac_make_cmd +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x93755028 snd_hdac_device_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x93db0f7b snd_hdac_stream_assign +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x99be6285 snd_hdac_stream_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x9a8e1877 snd_array_free +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x9e658990 snd_hdac_stream_sync +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xa5bf898b snd_hdac_read_parm_uncached +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xa75c1c41 snd_hdac_bus_get_response +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xa85840bb snd_hdac_get_sub_nodes +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xaafc2e19 snd_hdac_bus_update_rirb +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xad8cae33 snd_hdac_stream_stop +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xae99e4e2 snd_hdac_bus_alloc_stream_pages +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xb34a95a9 snd_hdac_bus_exec_verb_unlocked +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xb382ad70 snd_hdac_dsp_trigger +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xb5dffa7f snd_hdac_stream_reset +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xb71b7268 snd_hdac_exec_verb +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xbc637898 snd_hdac_bus_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xbc802e6a snd_hdac_override_parm +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xbe7dd7dc snd_array_new +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xbf36ce8f snd_hdac_bus_handle_stream_irq +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xbfc68b71 snd_hdac_stream_timecounter_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xc2e0ca6b snd_hdac_stream_setup_periods +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xcdbdfcbc snd_hdac_bus_send_cmd +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xd1ee2658 snd_hdac_bus_stop_chip +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xd25ed11e snd_hdac_power_up_pm +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xdaf7a8f4 snd_hdac_bus_stop_cmd_io +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xdd9a804a snd_hdac_calc_stream_format +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xe2c3d86d snd_hdac_stream_release +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xe3f4701d snd_hdac_stream_sync_trigger +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xe7a62081 snd_hdac_device_exit +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xe84f0d14 snd_hdac_query_supported_pcm +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xe9c246ac snd_hdac_power_down +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xede50518 snd_hdac_bus_exit_link_reset +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xee4ebe29 snd_hdac_bus_exit +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xf165e480 snd_hdac_read +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xf2b853d7 snd_hdac_bus_remove_device +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xfc9bba66 snd_hdac_get_connections +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xfea1f262 snd_hdac_regmap_write_raw +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x191514c7 snd_ak4113_build +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x27b01ec5 snd_ak4113_reinit +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0xc0125043 snd_ak4113_create +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0xd678d617 snd_ak4113_reg_write +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0xd97d4a6f snd_ak4113_check_rate_and_errors +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0xdf236789 snd_ak4113_external_rate +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0128ad54 azx_init_streams +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0207c400 snd_hda_input_mux_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0376f06b snd_hda_pick_pin_fixup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x052abac0 snd_hda_get_int_hint +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 0x068d9e4d snd_hda_codec_load_dsp_trigger +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x08ce305b snd_hda_codec_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0dfa05e7 snd_hda_add_nid +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0f25351f snd_hda_jack_add_kctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1363ad4e snd_hda_codec_load_dsp_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x162520d1 snd_hda_jack_detect_state +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x18e0c23f snd_hda_codec_get_pin_target +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1c8c6fcf __hda_codec_driver_register +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1f25157d snd_hda_codec_get_pincfg +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1f5d7d09 snd_hda_mixer_amp_switch_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x20ed02f5 snd_hda_codec_set_pincfg +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x234872a4 azx_get_pos_lpib +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x24663e02 snd_hda_create_spdif_share_sw +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2995a704 snd_hda_check_amp_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2f71f7f2 snd_hda_ctl_add +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x315f0ebb snd_hda_codec_amp_stereo +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x334edb39 snd_hda_get_pin_label +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x36a8ea8d snd_hda_detach_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3744a002 snd_hda_spdif_out_of_nid +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x375cacd5 snd_hda_input_mux_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x38ce402b azx_interrupt +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3a78a570 snd_hda_find_mixer_ctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3b3135cb snd_hda_get_connections +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x404acd4c azx_codec_configure +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4075926c snd_hda_jack_report_sync +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x457209cf snd_hda_mixer_bind_ctls_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x480b7c26 snd_hda_codec_eapd_power_filter +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4965b4dc hda_codec_driver_unregister +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4970175f snd_hda_mixer_amp_volume_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4ceb4378 snd_hda_codec_read +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5096954e snd_hda_jack_unsol_event +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x53c2a8ae azx_get_position +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5a3b7ad7 snd_hda_multi_out_dig_close +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5bbb6d06 snd_hda_override_amp_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5d240bfd snd_hda_parse_pin_defcfg +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x60c6c5eb snd_hda_mixer_bind_switch_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x666564c6 snd_hda_mixer_amp_switch_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x66a1bf66 snd_hda_jack_detect_enable +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x66be1e07 snd_hda_multi_out_dig_open +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6b9c6ce0 snd_hda_pin_sense +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6bcc7379 snd_hda_codec_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x71cd14dd snd_hda_lock_devices +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x74cf7089 snd_hda_enum_helper_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x79c7eceb snd_hda_unlock_devices +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7a984142 __snd_hda_add_vmaster +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7c330a06 snd_hda_multi_out_analog_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7c4a2407 snd_hda_get_conn_list +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7d0cf7af snd_hda_bind_vol +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7e4a736c __snd_hda_codec_cleanup_stream +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7f256ec6 snd_hda_multi_out_dig_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7f61930f snd_hda_set_vmaster_tlv +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7fd8da1f snd_hda_register_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x802b8f27 snd_hda_mixer_amp_switch_get_beep +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x81081071 snd_hda_jack_set_dirty_all +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x817df6f7 snd_hda_create_spdif_in_ctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x85c8e11b azx_stop_all_streams +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x927c846d snd_hda_mixer_bind_ctls_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x93c7bd88 snd_hda_check_amp_list_power +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x962e7ea5 snd_hda_sequence_write +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x986a97f5 snd_hda_mixer_amp_switch_put_beep +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9ccbbc8e snd_hda_load_patch +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9e7e9afd snd_hda_mixer_amp_volume_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9fba0f33 snd_hda_create_dig_out_ctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa2827d76 snd_hda_get_jack_location +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa4fda536 snd_hda_codec_setup_stream +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa5d3e9e5 azx_init_chip +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa6a87a0c snd_hda_mixer_bind_tlv +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa6d118c4 snd_hda_codec_configure +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa6dc1edd snd_hda_jack_detect_enable_callback +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa7388f58 azx_get_pos_posbuf +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa81826c0 snd_hda_spdif_ctls_assign +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa8f1f1c8 snd_hda_override_conn_list +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa9c18528 snd_hda_set_power_save +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xae17325d snd_hda_codec_pcm_new +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xaf75037e snd_hda_correct_pin_ctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb16be964 snd_hda_mixer_amp_switch_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb6d74fa4 snd_hda_get_default_vref +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb870b3b9 snd_hda_jack_add_kctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb8bc0a49 azx_bus_init +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xbbfcd642 snd_hda_jack_tbl_get_from_tag +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc220c55b snd_hda_codec_set_pin_target +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc44da8d1 snd_hda_multi_out_analog_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc50c8361 snd_hda_add_verbs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc5c42815 snd_hda_sync_vmaster_hook +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc652fd69 snd_hda_get_jack_connectivity +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc8cce0d5 snd_hda_jack_poll_all +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc997f82e snd_hda_enable_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc9e22a18 snd_hda_add_imux_item +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xcb301b6e snd_hda_get_jack_type +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xcbf05df7 azx_free_streams +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xcce9d134 snd_hda_get_bool_hint +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xcd232cc9 snd_hda_codec_amp_update +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xce9bef5e snd_hda_add_new_ctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xcef05186 snd_hda_mixer_bind_switch_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xcef590ec is_jack_detectable +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xcf119b1f snd_hda_codec_pcm_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd037da26 snd_hda_get_hint +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd19d415f snd_hda_shutup_pins +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd2b22922 azx_stop_chip +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xdb43f674 snd_hda_apply_pincfgs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xdb51dccd snd_hda_multi_out_dig_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xdd82311e snd_hda_multi_out_analog_open +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xde8afdb0 snd_hda_spdif_ctls_unassign +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xdea1e4ad snd_hda_jack_tbl_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe118de5d snd_pcm_2_1_chmaps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe16627f9 snd_hda_apply_verbs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe27b40c5 snd_hda_apply_fixup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe4b27e74 snd_hda_codec_amp_init +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe4c7e563 snd_hda_add_vmaster_hook +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe5a2224c azx_probe_codecs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe5e53146 snd_hda_codec_write +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe6eaebd8 hda_get_autocfg_input_label +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe7468332 snd_hda_mixer_amp_volume_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe8d362e0 snd_hda_mixer_amp_tlv +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe937da58 snd_hda_codec_new +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xeaebac9a query_amp_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xeb449da2 snd_hda_mixer_bind_ctls_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xeda3a721 snd_print_pcm_bits +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf185243c snd_hda_pick_fixup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf377feb2 snd_hda_attach_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf790f4ff snd_hda_codec_set_power_to_all +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf8c519ee snd_hda_get_conn_index +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xfbb33f9b snd_hda_codec_load_dsp_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xfcb07595 snd_hda_codec_amp_init_stereo +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xfda4e1d7 snd_hda_codec_update_widgets +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xff8b61ca _snd_hda_set_pin_ctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xffb19e17 snd_hda_jack_set_gating_jack +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xffb93980 snd_hda_bind_sw +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x28cac3b6 snd_hda_gen_fix_pin_power +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x295673cb snd_hda_gen_build_pcms +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x2ab34363 snd_hda_gen_parse_auto_config +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x2ff8125b snd_hda_gen_path_power_filter +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x32be5303 snd_hda_activate_path +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x499e24c6 snd_hda_gen_hp_automute +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x4f795293 snd_hda_get_path_idx +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x5412757b snd_hda_gen_add_kctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x587bad86 snd_hda_gen_spec_init +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x65531036 snd_hda_gen_stream_pm +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x69aff06d snd_hda_gen_check_power_status +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x6a64a3da snd_hda_gen_update_outputs +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 0x7d070ad7 snd_hda_gen_build_controls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x7dd870f9 snd_hda_gen_init +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 0x968cbaaf snd_hda_gen_line_automute +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xaf26da98 snd_hda_get_path_from_idx +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xb8c619ca snd_hda_gen_mic_autoswitch +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xc5038997 snd_hda_parse_nid_path +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xcae23d9a snd_hda_add_new_path +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xd8d8e001 snd_hda_gen_free +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xe1d66228 snd_hda_get_nid_path +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs4271 0x7d05786f cs4271_dt_ids +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs4271 0x7d5f81a7 cs4271_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs4271 0xb8178531 cs4271_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42l51 0x375ad98c cs42l51_of_match +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42l51 0xc6cce683 cs42l51_regmap +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42l51 0xf8a6d7ee cs42l51_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0x0245c4f2 cs42xx8_of_match +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0x26e3ebe7 cs42xx8_pm +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0x74d30497 cs42xx8_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0x7cac7292 cs42888_data +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0xbce5f0cf cs42xx8_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0xcd3794c9 cs42448_data +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-es8328 0x3853a207 es8328_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-es8328 0xad2cc0b5 es8328_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm512x 0x285698e2 pcm512x_remove +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm512x 0x286ae0a0 pcm512x_pm_ops +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm512x 0x2c21c5c9 pcm512x_regmap +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm512x 0x90f29046 pcm512x_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0x3cddd2b5 sigmadsp_attach +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0x3cde0c11 sigmadsp_restrict_params +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0x9cd9ea9b sigmadsp_reset +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0xcabe8737 devm_sigmadsp_init +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0xd4d6956d sigmadsp_setup +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp-i2c 0xce4bfb3f devm_sigmadsp_init_i2c +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-ssm2602 0x1ce35abe ssm2602_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-ssm2602 0x213af01c ssm2602_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-tpa6130a2 0x140c46b5 tpa6130a2_stereo_enable +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-tpa6130a2 0x410ea160 tpa6130a2_add_controls +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-ts3a227e 0xd61d312b ts3a227e_enable_jack_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8804 0x75fb0307 wm8804_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8804 0x90c06b59 wm8804_pm +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8804 0xd90b288a wm8804_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8804 0xf4f778d5 wm8804_remove +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8903 0x2309a65d wm8903_mic_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8962 0xe58df3a0 wm8962_mic_detect +EXPORT_SYMBOL_GPL sound/soc/fsl/snd-soc-fsl-asrc 0x4ad38809 fsl_asrc_platform +EXPORT_SYMBOL_GPL sound/soc/fsl/snd-soc-fsl-asrc 0x51c2a48d fsl_asrc_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/snd-soc-core 0x00c3a127 snd_soc_unregister_component +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x01914c29 dapm_regulator_event +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x027f574a snd_soc_bytes_get +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x089c78b0 snd_soc_set_ac97_ops_of_reset +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0bc78fdd dapm_mark_endpoints_dirty +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0d79dc60 snd_soc_dapm_put_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0dd1550d snd_soc_jack_report +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0e1dccc9 snd_dmaengine_pcm_unregister +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0eaf507e snd_soc_dapm_new_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0f59c229 snd_soc_update_bits +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0fd99e80 snd_soc_platform_read +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x12748947 snd_soc_of_parse_tdm_slot +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x128c8f00 snd_soc_put_xr_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1304bff9 snd_soc_add_card_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x156f376c snd_soc_of_parse_card_name +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x15dbcf40 snd_soc_of_parse_audio_routing +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x15ec9a31 snd_soc_component_async_complete +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x16afbe5f snd_soc_dapm_disable_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x16b6bfa8 snd_soc_of_parse_daifmt +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x176b1496 snd_soc_register_card +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x17d4228a snd_soc_bytes_tlv_callback +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x198df1b4 snd_soc_dai_set_pll +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1ad66d7b snd_soc_component_init_regmap +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1d5bbf98 snd_soc_lookup_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1de4bf50 snd_soc_dapm_disable_pin_unlocked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2285c48f snd_soc_put_volsw_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2541a979 snd_soc_calc_frame_size +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2726b593 snd_soc_dai_set_bclk_ratio +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2a86c306 snd_soc_component_exit_regmap +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2c9cbf48 snd_soc_write +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2d137d9d snd_soc_info_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x31da417a snd_soc_dapm_sync +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x326226fc snd_soc_dpcm_be_get_state +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x359ef624 snd_soc_dapm_get_pin_status +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3771897b snd_soc_remove_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x378b3135 snd_soc_dapm_free +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x38cdc9e3 snd_dmaengine_pcm_prepare_slave_config +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3d076ed6 snd_soc_jack_add_pins +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3f37dd27 snd_soc_suspend +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x43686264 snd_soc_card_jack_new +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4434de8f snd_soc_dapm_get_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x44fbe999 snd_soc_get_dai_substream +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x46d296bc snd_soc_platform_write +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4ca44846 snd_soc_add_codec_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4e378565 snd_soc_add_component_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4e4e5ef8 snd_soc_dapm_put_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4fcf8747 snd_soc_dapm_force_bias_level +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x53073358 devm_snd_soc_register_component +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x53808a04 snd_soc_dai_set_sysclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x53eea819 snd_soc_jack_add_zones +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x595d68e1 snd_soc_dpcm_can_be_params +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x599c0109 snd_soc_component_read +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5aac3015 snd_soc_codec_set_sysclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5e9bacc6 snd_soc_bytes_put +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5f6f01de snd_soc_dapm_kcontrol_dapm +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x61a79614 snd_soc_jack_add_gpiods +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6267ead3 snd_soc_of_get_dai_link_codecs +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x643bab75 snd_soc_dapm_force_enable_pin_unlocked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x65136bd2 soc_ac97_ops +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x670fca67 snd_soc_add_dai_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x67817bce snd_soc_runtime_set_dai_fmt +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x68179d3c snd_soc_platform_trigger +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x68b09817 snd_soc_of_get_dai_name +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x68e4ec55 snd_soc_dpcm_can_be_free_stop +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x69b559e3 snd_soc_jack_notifier_unregister +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6a8ae2ed snd_soc_dapm_mixer_update_power +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x713c7d6d snd_soc_component_write +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x734780b7 snd_soc_dapm_force_enable_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x74eb54a5 snd_soc_info_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7552fcdb snd_soc_dapm_enable_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7584e68e snd_soc_dpcm_fe_can_update +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x75b5546c snd_soc_dapm_info_pin_switch +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x78823030 snd_soc_dapm_nc_pin_unlocked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x78a13b54 snd_soc_get_xr_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7e606130 snd_soc_calc_bclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7fc2113a snd_soc_dai_digital_mute +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7fc722b3 snd_soc_card_get_kcontrol +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x83029995 snd_soc_of_parse_audio_simple_widgets +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x839c43e4 snd_soc_dapm_put_pin_switch +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x83bf6ed8 snd_soc_info_volsw_range +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x83e1fb8e snd_soc_get_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8566ac05 snd_soc_resume +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x86becc0c snd_soc_dapm_get_pin_switch +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8721dc7f snd_soc_info_volsw_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8b135ffc snd_soc_put_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8c467540 snd_soc_get_volsw_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8c8a931f snd_soc_register_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8ce5687f snd_dmaengine_pcm_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x92d3bc41 snd_soc_component_update_bits_async +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x92fb0c3a snd_soc_unregister_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x95621cda snd_soc_pm_ops +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x966b4a6f snd_soc_register_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x99d48138 snd_soc_dapm_nc_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9ae1d85d snd_soc_jack_add_gpios +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9b561c69 snd_soc_get_strobe +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9d95b47a snd_soc_read +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa248fed0 snd_soc_limit_volume +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa291d902 snd_soc_dapm_ignore_suspend +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa3ad94a5 snd_soc_dapm_get_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa87f901d snd_soc_unregister_card +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa8bb0312 snd_soc_dapm_new_widgets +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa9ad3b18 snd_soc_dapm_sync_unlocked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xaa2f8a4f snd_soc_codec_set_pll +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xab4edf75 dpcm_be_dai_trigger +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xab58fcae snd_soc_dpcm_be_set_state +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xac7cc970 snd_soc_add_platform_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xada2a235 snd_soc_get_volsw_range +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xae2e2f7a devm_snd_soc_register_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb05ba85e snd_soc_poweroff +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb24a44c2 snd_soc_component_test_bits +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb39a42d3 snd_soc_dai_set_tdm_slot +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb5d6d8b3 snd_soc_set_runtime_hwparams +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb74e845c devm_snd_soc_register_card +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb7de39a0 snd_soc_unregister_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb83f33fd snd_soc_new_ac97_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb8a057da snd_soc_bytes_info +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xbb758898 snd_soc_dapm_weak_routes +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xbb923b9e snd_soc_info_xr_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xbc1d4f55 snd_soc_dai_set_channel_map +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xbde55972 dapm_kcontrol_get_value +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xbe58046e snd_soc_register_component +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc3b1add0 snd_soc_add_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc62c0d6e snd_soc_dapm_enable_pin_unlocked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc8269f94 snd_soc_params_to_frame_size +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc8e27f15 snd_soc_put_volsw_range +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xca2aa476 snd_soc_jack_notifier_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xca8efa2f snd_soc_get_pcm_runtime +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xcd43cda6 snd_soc_dpcm_be_can_update +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xcd77d0b7 devm_snd_dmaengine_pcm_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xce80229b snd_soc_free_ac97_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xceeb9a1b snd_soc_cnew +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd3c01ad9 snd_soc_debugfs_root +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd414b6df snd_soc_dapm_del_routes +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd57378c3 snd_soc_dai_set_tristate +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd6757e7b snd_soc_set_ac97_ops +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd8f8c22a snd_soc_dapm_add_routes +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe13eeba8 snd_soc_get_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe60d9b6c snd_soc_test_bits +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe6a126ae snd_soc_put_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe9dfc3cd 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 0xec281fde snd_soc_jack_get_type +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xee8ed0cf snd_soc_component_update_bits +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf2e81348 snd_soc_bytes_info_ext +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf30a4a71 snd_soc_dpcm_get_substream +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf73588d7 dapm_clock_event +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf73aa430 snd_soc_put_strobe +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf7714da0 snd_soc_dai_set_clkdiv +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf8c46d96 snd_soc_dapm_mux_update_power +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xfed430fc snd_soc_jack_free_gpios +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x141690d7 line6_read_serial_number +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x1e415deb 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 0x2d417ff2 line6_init_midi +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x3bbbf785 line6_suspend +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x4362d176 line6_pcm_release +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x4d08fc63 line6_pcm_acquire +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x6f068462 line6_disconnect +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x8651a065 line6_send_raw_message_async +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x8ec973cd line6_start_timer +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xa1b96c12 line6_resume +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xaced2b9c line6_write_data +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xb00feb54 line6_init_pcm +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xbb21563c line6_probe +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xbc2b2beb line6_send_sysex_message +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xd125c3b4 line6_version_request_async +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xdf895c38 line6_alloc_sysex_buffer +EXPORT_SYMBOL_GPL vmlinux 0x0003c1c8 dev_pm_qos_expose_latency_tolerance +EXPORT_SYMBOL_GPL vmlinux 0x003b09d7 register_net_sysctl +EXPORT_SYMBOL_GPL vmlinux 0x004b83c7 ohci_suspend +EXPORT_SYMBOL_GPL vmlinux 0x00632780 work_busy +EXPORT_SYMBOL_GPL vmlinux 0x006820b4 pci_write_msi_msg +EXPORT_SYMBOL_GPL vmlinux 0x00757e3a dev_coredumpm +EXPORT_SYMBOL_GPL vmlinux 0x009304b6 ata_tf_from_fis +EXPORT_SYMBOL_GPL vmlinux 0x00ccb368 dma_buf_detach +EXPORT_SYMBOL_GPL vmlinux 0x00dd34ec vfs_fallocate +EXPORT_SYMBOL_GPL vmlinux 0x00e320c8 napi_hash_add +EXPORT_SYMBOL_GPL vmlinux 0x00e77676 security_inode_mkdir +EXPORT_SYMBOL_GPL vmlinux 0x00ebcb5d ata_id_string +EXPORT_SYMBOL_GPL vmlinux 0x01010c6d klist_add_before +EXPORT_SYMBOL_GPL vmlinux 0x010a91b2 device_add +EXPORT_SYMBOL_GPL vmlinux 0x011cf028 regulator_suspend_finish +EXPORT_SYMBOL_GPL vmlinux 0x0135e623 sdio_get_host_pm_caps +EXPORT_SYMBOL_GPL vmlinux 0x0142a242 sock_gen_put +EXPORT_SYMBOL_GPL vmlinux 0x01496514 ip6_datagram_send_ctl +EXPORT_SYMBOL_GPL vmlinux 0x015a2da0 fwnode_get_named_gpiod +EXPORT_SYMBOL_GPL vmlinux 0x016583a1 user_read +EXPORT_SYMBOL_GPL vmlinux 0x0195fba9 btree_visitor +EXPORT_SYMBOL_GPL vmlinux 0x019f66e4 crypto_rng_reset +EXPORT_SYMBOL_GPL vmlinux 0x01e1a8de kgdb_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x01eb6e83 debugfs_create_bool +EXPORT_SYMBOL_GPL vmlinux 0x01ebdacb sata_pmp_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x01fda3f2 class_compat_create_link +EXPORT_SYMBOL_GPL vmlinux 0x020592c4 regulator_bulk_force_disable +EXPORT_SYMBOL_GPL vmlinux 0x021610ae scsi_ioctl_block_when_processing_errors +EXPORT_SYMBOL_GPL vmlinux 0x021ebfda btree_update +EXPORT_SYMBOL_GPL vmlinux 0x026f64fb dev_pm_set_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0x0283eaf4 blkg_rwstat_recursive_sum +EXPORT_SYMBOL_GPL vmlinux 0x02872379 __tracepoint_suspend_resume +EXPORT_SYMBOL_GPL vmlinux 0x02b650cd regulator_bulk_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x02e5ae8b get_net_ns_by_pid +EXPORT_SYMBOL_GPL vmlinux 0x02ed8973 regulator_get_mode +EXPORT_SYMBOL_GPL vmlinux 0x02fea2ae rcu_note_context_switch +EXPORT_SYMBOL_GPL vmlinux 0x030e7b37 smpboot_register_percpu_thread +EXPORT_SYMBOL_GPL vmlinux 0x0315648f usb_add_hcd +EXPORT_SYMBOL_GPL vmlinux 0x0321cdbf of_alias_get_highest_id +EXPORT_SYMBOL_GPL vmlinux 0x033832c7 usb_amd_hang_symptom_quirk +EXPORT_SYMBOL_GPL vmlinux 0x0343bdf1 __i2c_board_list +EXPORT_SYMBOL_GPL vmlinux 0x0373b97f virtio_break_device +EXPORT_SYMBOL_GPL vmlinux 0x039fd867 trace_clock_global +EXPORT_SYMBOL_GPL vmlinux 0x03a86dd2 sock_prot_inuse_get +EXPORT_SYMBOL_GPL vmlinux 0x03ac9b00 regmap_init_mmio_clk +EXPORT_SYMBOL_GPL vmlinux 0x03e3686c ata_timing_cycle2mode +EXPORT_SYMBOL_GPL vmlinux 0x03e51df9 phy_exit +EXPORT_SYMBOL_GPL vmlinux 0x03f1d8f4 platform_device_del +EXPORT_SYMBOL_GPL vmlinux 0x040135ee virtio_check_driver_offered_feature +EXPORT_SYMBOL_GPL vmlinux 0x0402cbbf preempt_notifier_inc +EXPORT_SYMBOL_GPL vmlinux 0x0412c908 pci_try_reset_slot +EXPORT_SYMBOL_GPL vmlinux 0x041850b0 device_remove_file_self +EXPORT_SYMBOL_GPL vmlinux 0x0427af68 ehci_adjust_port_wakeup_flags +EXPORT_SYMBOL_GPL vmlinux 0x043e769e pingv6_prot +EXPORT_SYMBOL_GPL vmlinux 0x043fc178 cpu_remove_dev_attr_group +EXPORT_SYMBOL_GPL vmlinux 0x045eeaef sdio_readl +EXPORT_SYMBOL_GPL vmlinux 0x0465a073 regmap_reg_in_ranges +EXPORT_SYMBOL_GPL vmlinux 0x0471f88a get_current_tty +EXPORT_SYMBOL_GPL vmlinux 0x048b5f8d twl4030_audio_get_mclk +EXPORT_SYMBOL_GPL vmlinux 0x048f0097 arizona_dev_exit +EXPORT_SYMBOL_GPL vmlinux 0x04910802 pci_bus_max_busnr +EXPORT_SYMBOL_GPL vmlinux 0x0499deb0 __clk_get_rate +EXPORT_SYMBOL_GPL vmlinux 0x04a9fb9b pci_hp_remove_module_link +EXPORT_SYMBOL_GPL vmlinux 0x04b5549c __cookie_v6_check +EXPORT_SYMBOL_GPL vmlinux 0x04c4f603 mpi_get_buffer +EXPORT_SYMBOL_GPL vmlinux 0x04c77355 anon_transport_class_register +EXPORT_SYMBOL_GPL vmlinux 0x04f4bd8d percpu_ref_exit +EXPORT_SYMBOL_GPL vmlinux 0x053040ef kvm_read_guest_page +EXPORT_SYMBOL_GPL vmlinux 0x05419741 alarmtimer_get_rtcdev +EXPORT_SYMBOL_GPL vmlinux 0x054e550b kernel_halt +EXPORT_SYMBOL_GPL vmlinux 0x056ea3d4 wm8350_block_write +EXPORT_SYMBOL_GPL vmlinux 0x0574228a virtqueue_notify +EXPORT_SYMBOL_GPL vmlinux 0x057b9b0e da9055_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0x057f569f posix_timer_event +EXPORT_SYMBOL_GPL vmlinux 0x058b582a vt_get_leds +EXPORT_SYMBOL_GPL vmlinux 0x05c0c69b kernfs_find_and_get_ns +EXPORT_SYMBOL_GPL vmlinux 0x05c3ccfd debugfs_create_dir +EXPORT_SYMBOL_GPL vmlinux 0x05c72651 dm_disk +EXPORT_SYMBOL_GPL vmlinux 0x05d61a4e led_classdev_register +EXPORT_SYMBOL_GPL vmlinux 0x05e17e43 pci_ioremap_bar +EXPORT_SYMBOL_GPL vmlinux 0x061dee59 btree_remove +EXPORT_SYMBOL_GPL vmlinux 0x0626da5f od_unregister_powersave_bias_handler +EXPORT_SYMBOL_GPL vmlinux 0x0627e24f debugfs_create_u64 +EXPORT_SYMBOL_GPL vmlinux 0x062bc41a component_bind_all +EXPORT_SYMBOL_GPL vmlinux 0x0645fe8d usb_get_dev +EXPORT_SYMBOL_GPL vmlinux 0x0647ca50 pci_disable_sriov +EXPORT_SYMBOL_GPL vmlinux 0x064db9a5 mark_mounts_for_expiry +EXPORT_SYMBOL_GPL vmlinux 0x0652b7c2 crypto_alloc_aead +EXPORT_SYMBOL_GPL vmlinux 0x065c4edb get_dcookie +EXPORT_SYMBOL_GPL vmlinux 0x065e1746 ata_cable_40wire +EXPORT_SYMBOL_GPL vmlinux 0x06c17732 skb_tstamp_tx +EXPORT_SYMBOL_GPL vmlinux 0x06c287a4 crypto_shoot_alg +EXPORT_SYMBOL_GPL vmlinux 0x06fa64c8 gpiochip_lock_as_irq +EXPORT_SYMBOL_GPL vmlinux 0x070a417e devm_phy_put +EXPORT_SYMBOL_GPL vmlinux 0x0731ef30 wm831x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x0739f429 x509_check_signature +EXPORT_SYMBOL_GPL vmlinux 0x073f9791 md_rdev_clear +EXPORT_SYMBOL_GPL vmlinux 0x075d25b5 gpiochip_request_own_desc +EXPORT_SYMBOL_GPL vmlinux 0x0762403c edac_put_sysfs_subsys +EXPORT_SYMBOL_GPL vmlinux 0x077e5663 srcu_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x07940be2 rq_flush_dcache_pages +EXPORT_SYMBOL_GPL vmlinux 0x07a3b111 ata_bmdma_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0x07a3f1f1 of_dma_simple_xlate +EXPORT_SYMBOL_GPL vmlinux 0x07a99de3 fuse_get_req_for_background +EXPORT_SYMBOL_GPL vmlinux 0x07b21f85 kdb_get_kbd_char +EXPORT_SYMBOL_GPL vmlinux 0x07b52e38 rtnl_unregister +EXPORT_SYMBOL_GPL vmlinux 0x07b5ae8b debugfs_remove +EXPORT_SYMBOL_GPL vmlinux 0x07b7687d pci_disable_pcie_error_reporting +EXPORT_SYMBOL_GPL vmlinux 0x07d1dc80 aead_geniv_init +EXPORT_SYMBOL_GPL vmlinux 0x07e6cca5 ata_sff_tf_load +EXPORT_SYMBOL_GPL vmlinux 0x07f300c3 smp_call_function_any +EXPORT_SYMBOL_GPL vmlinux 0x0808a0d0 netlink_add_tap +EXPORT_SYMBOL_GPL vmlinux 0x08156773 name_to_dev_t +EXPORT_SYMBOL_GPL vmlinux 0x081ab2e1 tc3589x_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x0832f172 trace_event_buffer_commit +EXPORT_SYMBOL_GPL vmlinux 0x0843610f ip_tunnel_get_stats64 +EXPORT_SYMBOL_GPL vmlinux 0x08619a2a crypto_spawn_tfm2 +EXPORT_SYMBOL_GPL vmlinux 0x0877375b rtnl_put_cacheinfo +EXPORT_SYMBOL_GPL vmlinux 0x08abe60d wakeup_source_create +EXPORT_SYMBOL_GPL vmlinux 0x08c4a5c7 usb_get_status +EXPORT_SYMBOL_GPL vmlinux 0x08cf51b3 usb_control_msg +EXPORT_SYMBOL_GPL vmlinux 0x08dd4b42 of_irq_parse_raw +EXPORT_SYMBOL_GPL vmlinux 0x08f30e33 crypto_enqueue_request +EXPORT_SYMBOL_GPL vmlinux 0x08f6fd2d zap_vma_ptes +EXPORT_SYMBOL_GPL vmlinux 0x091c824a machine_power_off +EXPORT_SYMBOL_GPL vmlinux 0x091eb9b4 round_jiffies +EXPORT_SYMBOL_GPL vmlinux 0x093802be fwnode_property_read_u16_array +EXPORT_SYMBOL_GPL vmlinux 0x09437748 ring_buffer_read_events_cpu +EXPORT_SYMBOL_GPL vmlinux 0x09469482 kfree_call_rcu +EXPORT_SYMBOL_GPL vmlinux 0x094a03bb gpiod_set_raw_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x0952af60 fb_videomode_from_videomode +EXPORT_SYMBOL_GPL vmlinux 0x0962d0e8 irq_set_affinity_notifier +EXPORT_SYMBOL_GPL vmlinux 0x097761c9 device_get_next_child_node +EXPORT_SYMBOL_GPL vmlinux 0x09a83b84 adp5520_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x09af6a39 dax_truncate_page +EXPORT_SYMBOL_GPL vmlinux 0x09b3561e dma_get_slave_channel +EXPORT_SYMBOL_GPL vmlinux 0x09c08551 hvc_remove +EXPORT_SYMBOL_GPL vmlinux 0x09c3f67e posix_acl_create +EXPORT_SYMBOL_GPL vmlinux 0x09c4eaa8 __rtnl_link_unregister +EXPORT_SYMBOL_GPL vmlinux 0x09c8b462 debugfs_create_file +EXPORT_SYMBOL_GPL vmlinux 0x09d48967 regcache_sync +EXPORT_SYMBOL_GPL vmlinux 0x09f774c0 clk_register_mux_table +EXPORT_SYMBOL_GPL vmlinux 0x0a2b00b7 of_clk_src_onecell_get +EXPORT_SYMBOL_GPL vmlinux 0x0a2eca40 user_destroy +EXPORT_SYMBOL_GPL vmlinux 0x0a4a1a94 dm_set_target_max_io_len +EXPORT_SYMBOL_GPL vmlinux 0x0a51ae5b virq_to_hw +EXPORT_SYMBOL_GPL vmlinux 0x0a632c5e regulator_map_voltage_linear +EXPORT_SYMBOL_GPL vmlinux 0x0a8a4728 __mmu_notifier_invalidate_range_start +EXPORT_SYMBOL_GPL vmlinux 0x0a9aa9f5 irq_create_direct_mapping +EXPORT_SYMBOL_GPL vmlinux 0x0aa77fae spi_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x0aab004e crypto_alloc_pcomp +EXPORT_SYMBOL_GPL vmlinux 0x0aae0ac9 class_create_file_ns +EXPORT_SYMBOL_GPL vmlinux 0x0adbef6c usb_add_phy_dev +EXPORT_SYMBOL_GPL vmlinux 0x0ae5e9b0 tty_encode_baud_rate +EXPORT_SYMBOL_GPL vmlinux 0x0ae970d2 ata_cable_sata +EXPORT_SYMBOL_GPL vmlinux 0x0ae98927 skb_complete_tx_timestamp +EXPORT_SYMBOL_GPL vmlinux 0x0af68a42 bus_remove_file +EXPORT_SYMBOL_GPL vmlinux 0x0afd4610 zs_malloc +EXPORT_SYMBOL_GPL vmlinux 0x0b07abe2 unshare_fs_struct +EXPORT_SYMBOL_GPL vmlinux 0x0b351a63 __blk_run_queue_uncond +EXPORT_SYMBOL_GPL vmlinux 0x0b59390b __tracepoint_rpm_suspend +EXPORT_SYMBOL_GPL vmlinux 0x0b64099a devres_for_each_res +EXPORT_SYMBOL_GPL vmlinux 0x0b86a3f5 max_gen_clk_ops +EXPORT_SYMBOL_GPL vmlinux 0x0b8792d9 dma_buf_kunmap +EXPORT_SYMBOL_GPL vmlinux 0x0bbd4df9 tcp_cong_avoid_ai +EXPORT_SYMBOL_GPL vmlinux 0x0be1489d ata_dummy_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x0bef5aab seq_open_net +EXPORT_SYMBOL_GPL vmlinux 0x0bfa3a19 rcu_idle_exit +EXPORT_SYMBOL_GPL vmlinux 0x0c0c015e ring_buffer_swap_cpu +EXPORT_SYMBOL_GPL vmlinux 0x0c26bb1c relay_reset +EXPORT_SYMBOL_GPL vmlinux 0x0c26f7cd regmap_async_complete_cb +EXPORT_SYMBOL_GPL vmlinux 0x0c2cdbf1 synchronize_sched +EXPORT_SYMBOL_GPL vmlinux 0x0c2f46f6 register_pernet_device +EXPORT_SYMBOL_GPL vmlinux 0x0c371431 rt_mutex_timed_lock +EXPORT_SYMBOL_GPL vmlinux 0x0c414914 pwm_can_sleep +EXPORT_SYMBOL_GPL vmlinux 0x0c487b70 sdio_set_block_size +EXPORT_SYMBOL_GPL vmlinux 0x0c48a975 ip6_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x0c6134e2 inet_unhash +EXPORT_SYMBOL_GPL vmlinux 0x0c68d1d6 use_mm +EXPORT_SYMBOL_GPL vmlinux 0x0c9bcde8 of_pci_get_host_bridge_resources +EXPORT_SYMBOL_GPL vmlinux 0x0cc1e40f crypto_it_tab +EXPORT_SYMBOL_GPL vmlinux 0x0ccc2c79 debugfs_rename +EXPORT_SYMBOL_GPL vmlinux 0x0cdff541 cpufreq_freq_transition_begin +EXPORT_SYMBOL_GPL vmlinux 0x0cef1973 pm_generic_thaw_noirq +EXPORT_SYMBOL_GPL vmlinux 0x0d0e6d3b scsi_internal_device_block +EXPORT_SYMBOL_GPL vmlinux 0x0d239d07 cpufreq_generic_attr +EXPORT_SYMBOL_GPL vmlinux 0x0d45e82a of_dma_controller_free +EXPORT_SYMBOL_GPL vmlinux 0x0d4961de nf_log_buf_open +EXPORT_SYMBOL_GPL vmlinux 0x0d51bfba rhashtable_insert_rehash +EXPORT_SYMBOL_GPL vmlinux 0x0d54b71d root_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x0d57200a tasklet_hrtimer_init +EXPORT_SYMBOL_GPL vmlinux 0x0d706d2e rh_set_owner +EXPORT_SYMBOL_GPL vmlinux 0x0d73a952 GregorianDay +EXPORT_SYMBOL_GPL vmlinux 0x0d7971d1 find_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0x0d7d4d70 rcu_batches_completed +EXPORT_SYMBOL_GPL vmlinux 0x0da6c7d5 ata_common_sdev_attrs +EXPORT_SYMBOL_GPL vmlinux 0x0dc7bcdd rio_request_inb_pwrite +EXPORT_SYMBOL_GPL vmlinux 0x0dd16d40 usb_put_phy +EXPORT_SYMBOL_GPL vmlinux 0x0ddb1cd7 llist_reverse_order +EXPORT_SYMBOL_GPL vmlinux 0x0ddc253b ref_module +EXPORT_SYMBOL_GPL vmlinux 0x0de06988 cpu_first_thread_of_core +EXPORT_SYMBOL_GPL vmlinux 0x0e1c7e57 regulator_set_voltage +EXPORT_SYMBOL_GPL vmlinux 0x0e35a3ab dev_pm_enable_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0x0e39749e usb_unanchor_urb +EXPORT_SYMBOL_GPL vmlinux 0x0e3e15a8 clk_register_mux +EXPORT_SYMBOL_GPL vmlinux 0x0e41e0da crypto_register_aead +EXPORT_SYMBOL_GPL vmlinux 0x0e63059c nvdimm_bus_attribute_group +EXPORT_SYMBOL_GPL vmlinux 0x0e8e956a event_triggers_call +EXPORT_SYMBOL_GPL vmlinux 0x0ea467d8 usb_queue_reset_device +EXPORT_SYMBOL_GPL vmlinux 0x0eaa1adc tty_get_pgrp +EXPORT_SYMBOL_GPL vmlinux 0x0ebcf479 key_set_timeout +EXPORT_SYMBOL_GPL vmlinux 0x0ee65d30 inode_sb_list_add +EXPORT_SYMBOL_GPL vmlinux 0x0f31fdf8 stmpe_enable +EXPORT_SYMBOL_GPL vmlinux 0x0f336d7f rcutorture_get_gp_data +EXPORT_SYMBOL_GPL vmlinux 0x0f530a2a simple_attr_write +EXPORT_SYMBOL_GPL vmlinux 0x0f56fbd4 xhci_resume +EXPORT_SYMBOL_GPL vmlinux 0x0f575554 crypto_lookup_aead +EXPORT_SYMBOL_GPL vmlinux 0x0f581241 class_dev_iter_next +EXPORT_SYMBOL_GPL vmlinux 0x0f6df248 disk_get_part +EXPORT_SYMBOL_GPL vmlinux 0x0f751aea input_event_from_user +EXPORT_SYMBOL_GPL vmlinux 0x0f8ee53d usb_get_from_anchor +EXPORT_SYMBOL_GPL vmlinux 0x0f9a58eb ata_port_desc +EXPORT_SYMBOL_GPL vmlinux 0x0faf4893 regmap_raw_write_async +EXPORT_SYMBOL_GPL vmlinux 0x0fb609e7 power_supply_class +EXPORT_SYMBOL_GPL vmlinux 0x0fc01e9f static_key_slow_inc +EXPORT_SYMBOL_GPL vmlinux 0x0fd631ba sdio_set_host_pm_flags +EXPORT_SYMBOL_GPL vmlinux 0x0fdae30b gpiochip_is_requested +EXPORT_SYMBOL_GPL vmlinux 0x0ffb20a8 crypto_grab_aead +EXPORT_SYMBOL_GPL vmlinux 0x10138352 tracing_on +EXPORT_SYMBOL_GPL vmlinux 0x1022de13 device_register +EXPORT_SYMBOL_GPL vmlinux 0x104529ed usb_autopm_put_interface +EXPORT_SYMBOL_GPL vmlinux 0x107e835e ip6_sk_redirect +EXPORT_SYMBOL_GPL vmlinux 0x10988c30 inet6_csk_search_req +EXPORT_SYMBOL_GPL vmlinux 0x10a8291c usb_string +EXPORT_SYMBOL_GPL vmlinux 0x10d9365d usb_choose_configuration +EXPORT_SYMBOL_GPL vmlinux 0x10dd5199 hrtimer_forward +EXPORT_SYMBOL_GPL vmlinux 0x10ecc52c usb_amd_quirk_pll_enable +EXPORT_SYMBOL_GPL vmlinux 0x1100fe8f regmap_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0x1114011d threads_shift +EXPORT_SYMBOL_GPL vmlinux 0x1172ce54 rtc_ktime_to_tm +EXPORT_SYMBOL_GPL vmlinux 0x1180cd83 devm_regmap_field_alloc +EXPORT_SYMBOL_GPL vmlinux 0x118f66dd sprint_OID +EXPORT_SYMBOL_GPL vmlinux 0x11b7fad6 blkg_prfill_stat +EXPORT_SYMBOL_GPL vmlinux 0x11be4ad3 trace_buffer_unlock_commit_regs +EXPORT_SYMBOL_GPL vmlinux 0x11c4f1d8 pci_add_dynid +EXPORT_SYMBOL_GPL vmlinux 0x11c96e79 __srcu_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x11d7589e add_hwgenerator_randomness +EXPORT_SYMBOL_GPL vmlinux 0x11f9da60 dev_pm_domain_detach +EXPORT_SYMBOL_GPL vmlinux 0x120fd5eb __inet_lookup_established +EXPORT_SYMBOL_GPL vmlinux 0x121d958a unregister_die_notifier +EXPORT_SYMBOL_GPL vmlinux 0x122c0716 of_usb_get_maximum_speed +EXPORT_SYMBOL_GPL vmlinux 0x1242ca1d spi_alloc_device +EXPORT_SYMBOL_GPL vmlinux 0x1243f0bb fb_deferred_io_open +EXPORT_SYMBOL_GPL vmlinux 0x124f2056 crypto_get_attr_type +EXPORT_SYMBOL_GPL vmlinux 0x1268f357 resume_device_irqs +EXPORT_SYMBOL_GPL vmlinux 0x12848ad5 mnt_want_write +EXPORT_SYMBOL_GPL vmlinux 0x1285fb6f crypto_alloc_rng +EXPORT_SYMBOL_GPL vmlinux 0x12abaed7 agp_remove_bridge +EXPORT_SYMBOL_GPL vmlinux 0x12b236eb thermal_zone_device_update +EXPORT_SYMBOL_GPL vmlinux 0x12b5193c fwnode_handle_put +EXPORT_SYMBOL_GPL vmlinux 0x12bfe4d8 gpiochip_remove +EXPORT_SYMBOL_GPL vmlinux 0x131a5ed7 regmap_del_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0x131adbf3 fuse_abort_conn +EXPORT_SYMBOL_GPL vmlinux 0x131db64a system_long_wq +EXPORT_SYMBOL_GPL vmlinux 0x135e4c96 dev_pm_opp_get_notifier +EXPORT_SYMBOL_GPL vmlinux 0x136209db power_supply_reg_notifier +EXPORT_SYMBOL_GPL vmlinux 0x136a4ee6 btree_init +EXPORT_SYMBOL_GPL vmlinux 0x1373c03a power_supply_set_battery_charged +EXPORT_SYMBOL_GPL vmlinux 0x13ad647f scatterwalk_bytes_sglen +EXPORT_SYMBOL_GPL vmlinux 0x13e5ea13 __wake_up_sync +EXPORT_SYMBOL_GPL vmlinux 0x13e9a029 devm_hwmon_device_register_with_groups +EXPORT_SYMBOL_GPL vmlinux 0x13f8552f rio_request_inb_mbox +EXPORT_SYMBOL_GPL vmlinux 0x13fcbb45 ata_link_next +EXPORT_SYMBOL_GPL vmlinux 0x140f815b __pci_hp_register +EXPORT_SYMBOL_GPL vmlinux 0x14396ad3 kvm_vcpu_write_guest_page +EXPORT_SYMBOL_GPL vmlinux 0x1443a8be usb_hcd_pci_pm_ops +EXPORT_SYMBOL_GPL vmlinux 0x1453e207 clk_register_divider_table +EXPORT_SYMBOL_GPL vmlinux 0x145a7ec4 screen_glyph +EXPORT_SYMBOL_GPL vmlinux 0x1465cb93 device_property_read_u64_array +EXPORT_SYMBOL_GPL vmlinux 0x14864f78 usb_init_urb +EXPORT_SYMBOL_GPL vmlinux 0x149894d9 transport_class_register +EXPORT_SYMBOL_GPL vmlinux 0x14ce46fd rtc_set_time +EXPORT_SYMBOL_GPL vmlinux 0x14e70f01 of_thermal_is_trip_valid +EXPORT_SYMBOL_GPL vmlinux 0x14e8c3c4 cpci_hp_register_bus +EXPORT_SYMBOL_GPL vmlinux 0x1505adb6 noop_backing_dev_info +EXPORT_SYMBOL_GPL vmlinux 0x15580eba transport_class_unregister +EXPORT_SYMBOL_GPL vmlinux 0x155ca2fc crypto_init_spawn +EXPORT_SYMBOL_GPL vmlinux 0x155f07d4 kernel_kobj +EXPORT_SYMBOL_GPL vmlinux 0x1581e516 uart_console_write +EXPORT_SYMBOL_GPL vmlinux 0x15821194 ata_ehi_clear_desc +EXPORT_SYMBOL_GPL vmlinux 0x15892417 async_synchronize_cookie +EXPORT_SYMBOL_GPL vmlinux 0x158d6166 is_skb_forwardable +EXPORT_SYMBOL_GPL vmlinux 0x159b03d6 console_drivers +EXPORT_SYMBOL_GPL vmlinux 0x15c21e5e nl_table_lock +EXPORT_SYMBOL_GPL vmlinux 0x15ddd102 skb_partial_csum_set +EXPORT_SYMBOL_GPL vmlinux 0x15efd446 rcu_batches_started +EXPORT_SYMBOL_GPL vmlinux 0x16000a3c dm_device_name +EXPORT_SYMBOL_GPL vmlinux 0x16061682 tps65912_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x1607a352 wakeup_source_unregister +EXPORT_SYMBOL_GPL vmlinux 0x161373eb phy_optional_get +EXPORT_SYMBOL_GPL vmlinux 0x16216ad6 ata_pci_sff_prepare_host +EXPORT_SYMBOL_GPL vmlinux 0x16266794 device_property_read_u8_array +EXPORT_SYMBOL_GPL vmlinux 0x163268fe pci_pasid_features +EXPORT_SYMBOL_GPL vmlinux 0x1633a03b dequeue_signal +EXPORT_SYMBOL_GPL vmlinux 0x163a2dbd spi_get_next_queued_message +EXPORT_SYMBOL_GPL vmlinux 0x164795a0 led_trigger_set_default +EXPORT_SYMBOL_GPL vmlinux 0x1650bf27 rcutorture_record_progress +EXPORT_SYMBOL_GPL vmlinux 0x1658af64 ata_do_eh +EXPORT_SYMBOL_GPL vmlinux 0x16633dbf uprobe_unregister +EXPORT_SYMBOL_GPL vmlinux 0x1664596b stmpe_disable +EXPORT_SYMBOL_GPL vmlinux 0x16810904 extcon_set_state +EXPORT_SYMBOL_GPL vmlinux 0x16a0991b inet_twsk_put +EXPORT_SYMBOL_GPL vmlinux 0x16da4837 xfrm_audit_state_add +EXPORT_SYMBOL_GPL vmlinux 0x16f0cbfc nfq_ct_hook +EXPORT_SYMBOL_GPL vmlinux 0x171128bd scsi_schedule_eh +EXPORT_SYMBOL_GPL vmlinux 0x171a1b54 rio_mport_write_config_8 +EXPORT_SYMBOL_GPL vmlinux 0x1723620f bitmap_load +EXPORT_SYMBOL_GPL vmlinux 0x17271e9d srcu_init_notifier_head +EXPORT_SYMBOL_GPL vmlinux 0x1753a32f hash_digest_size +EXPORT_SYMBOL_GPL vmlinux 0x17588841 of_property_read_u64_array +EXPORT_SYMBOL_GPL vmlinux 0x175d0906 regulator_put +EXPORT_SYMBOL_GPL vmlinux 0x1763cb59 inet6_sk_rebuild_header +EXPORT_SYMBOL_GPL vmlinux 0x176718d0 bmp085_remove +EXPORT_SYMBOL_GPL vmlinux 0x1767757a devm_pwm_put +EXPORT_SYMBOL_GPL vmlinux 0x176e8823 mbox_request_channel_byname +EXPORT_SYMBOL_GPL vmlinux 0x177c338d twl_get_version +EXPORT_SYMBOL_GPL vmlinux 0x178a8a74 devfreq_event_disable_edev +EXPORT_SYMBOL_GPL vmlinux 0x17ff2b0c __ip6_local_out +EXPORT_SYMBOL_GPL vmlinux 0x1800cfc7 pm_runtime_autosuspend_expiration +EXPORT_SYMBOL_GPL vmlinux 0x1814083a cpufreq_frequency_table_cpuinfo +EXPORT_SYMBOL_GPL vmlinux 0x1853653c btree_alloc +EXPORT_SYMBOL_GPL vmlinux 0x1856a5ec ipv6_stub +EXPORT_SYMBOL_GPL vmlinux 0x185f4f59 mmc_send_tuning +EXPORT_SYMBOL_GPL vmlinux 0x1866cec2 ring_buffer_size +EXPORT_SYMBOL_GPL vmlinux 0x1878f62b edac_err_assert +EXPORT_SYMBOL_GPL vmlinux 0x1879d2c4 wb_writeout_inc +EXPORT_SYMBOL_GPL vmlinux 0x18d24b6e ohci_hub_status_data +EXPORT_SYMBOL_GPL vmlinux 0x18d34cc3 devm_regulator_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x18d8bfad rio_dma_prep_slave_sg +EXPORT_SYMBOL_GPL vmlinux 0x18e1be6c handle_mm_fault +EXPORT_SYMBOL_GPL vmlinux 0x18e78a4b unregister_virtio_driver +EXPORT_SYMBOL_GPL vmlinux 0x18f0d5ed register_virtio_driver +EXPORT_SYMBOL_GPL vmlinux 0x1902dfa7 synchronize_srcu +EXPORT_SYMBOL_GPL vmlinux 0x19098657 bus_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x19173622 blk_rq_check_limits +EXPORT_SYMBOL_GPL vmlinux 0x191f42cc shash_attr_alg +EXPORT_SYMBOL_GPL vmlinux 0x191f835b dev_pm_qos_add_request +EXPORT_SYMBOL_GPL vmlinux 0x1920e66f ata_sff_dev_classify +EXPORT_SYMBOL_GPL vmlinux 0x192ebd96 ata_cable_unknown +EXPORT_SYMBOL_GPL vmlinux 0x193d48e0 trace_current_buffer_unlock_commit +EXPORT_SYMBOL_GPL vmlinux 0x194dd5f5 pkey_algo_name +EXPORT_SYMBOL_GPL vmlinux 0x1952d527 blk_mq_tags_cpumask +EXPORT_SYMBOL_GPL vmlinux 0x1990f8ff pm_qos_update_request +EXPORT_SYMBOL_GPL vmlinux 0x199fc305 ping_seq_start +EXPORT_SYMBOL_GPL vmlinux 0x19a304ba usb_disabled +EXPORT_SYMBOL_GPL vmlinux 0x19a48584 gpiod_is_active_low +EXPORT_SYMBOL_GPL vmlinux 0x19b384a5 hash_algo_name +EXPORT_SYMBOL_GPL vmlinux 0x1a076506 pci_find_next_ht_capability +EXPORT_SYMBOL_GPL vmlinux 0x1a07fdf5 pcibios_scan_phb +EXPORT_SYMBOL_GPL vmlinux 0x1a0ae4bd pm_generic_poweroff_late +EXPORT_SYMBOL_GPL vmlinux 0x1a0deaf1 to_nd_desc +EXPORT_SYMBOL_GPL vmlinux 0x1a1c4082 mod_delayed_work_on +EXPORT_SYMBOL_GPL vmlinux 0x1a54c81c ping_proc_register +EXPORT_SYMBOL_GPL vmlinux 0x1a589971 ata_scsi_unlock_native_capacity +EXPORT_SYMBOL_GPL vmlinux 0x1a73d3cf tcp_fetch_timewait_stamp +EXPORT_SYMBOL_GPL vmlinux 0x1a8c5907 btree_insert +EXPORT_SYMBOL_GPL vmlinux 0x1a967885 cpufreq_frequency_get_table +EXPORT_SYMBOL_GPL vmlinux 0x1a9d1d11 devm_rtc_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x1aa10934 gfn_to_pfn_atomic +EXPORT_SYMBOL_GPL vmlinux 0x1aa633c2 preempt_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x1abd5028 __mnt_drop_write +EXPORT_SYMBOL_GPL vmlinux 0x1ac85c54 pm_generic_resume_early +EXPORT_SYMBOL_GPL vmlinux 0x1acef7d2 pm_freezing +EXPORT_SYMBOL_GPL vmlinux 0x1ad45530 fib_rules_lookup +EXPORT_SYMBOL_GPL vmlinux 0x1ae1424d ping_hash +EXPORT_SYMBOL_GPL vmlinux 0x1aefc831 of_irq_to_resource_table +EXPORT_SYMBOL_GPL vmlinux 0x1aff3947 key_type_user +EXPORT_SYMBOL_GPL vmlinux 0x1b020426 of_property_read_u16_array +EXPORT_SYMBOL_GPL vmlinux 0x1b1270fa device_for_each_child +EXPORT_SYMBOL_GPL vmlinux 0x1b52db1c probe_kernel_read +EXPORT_SYMBOL_GPL vmlinux 0x1b9aca3f jprobe_return +EXPORT_SYMBOL_GPL vmlinux 0x1b9b455a kobject_uevent +EXPORT_SYMBOL_GPL vmlinux 0x1badc103 tps6586x_read +EXPORT_SYMBOL_GPL vmlinux 0x1bb6327b dma_request_slave_channel_reason +EXPORT_SYMBOL_GPL vmlinux 0x1bfde302 of_fixed_clk_setup +EXPORT_SYMBOL_GPL vmlinux 0x1bffa44a devm_regmap_field_free +EXPORT_SYMBOL_GPL vmlinux 0x1c15d7f7 pwm_put +EXPORT_SYMBOL_GPL vmlinux 0x1c2ba3f1 debugfs_create_u32_array +EXPORT_SYMBOL_GPL vmlinux 0x1c4ff7e5 put_pid +EXPORT_SYMBOL_GPL vmlinux 0x1c5541bd cpufreq_boost_enabled +EXPORT_SYMBOL_GPL vmlinux 0x1c566469 list_lru_walk_one +EXPORT_SYMBOL_GPL vmlinux 0x1c5b1f28 irq_free_descs +EXPORT_SYMBOL_GPL vmlinux 0x1c5ff742 clk_get_phase +EXPORT_SYMBOL_GPL vmlinux 0x1c78b5bf ping_seq_fops +EXPORT_SYMBOL_GPL vmlinux 0x1c80d27d btree_geo128 +EXPORT_SYMBOL_GPL vmlinux 0x1c85f0b8 clone_private_mount +EXPORT_SYMBOL_GPL vmlinux 0x1c87a811 __round_jiffies_up +EXPORT_SYMBOL_GPL vmlinux 0x1ca0e63c task_cgroup_path +EXPORT_SYMBOL_GPL vmlinux 0x1cb4dfea bio_associate_blkcg +EXPORT_SYMBOL_GPL vmlinux 0x1ccd7021 usb_add_phy +EXPORT_SYMBOL_GPL vmlinux 0x1cf82066 tcp_orphan_count +EXPORT_SYMBOL_GPL vmlinux 0x1d12d4a4 dev_pm_get_subsys_data +EXPORT_SYMBOL_GPL vmlinux 0x1d2a4f7a irq_get_domain_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x1d513460 pci_disable_rom +EXPORT_SYMBOL_GPL vmlinux 0x1d58ae14 lpddr2_jedec_timings +EXPORT_SYMBOL_GPL vmlinux 0x1d6afd63 ata_sff_qc_issue +EXPORT_SYMBOL_GPL vmlinux 0x1d77b0f8 unix_socket_table +EXPORT_SYMBOL_GPL vmlinux 0x1d7c0168 __ftrace_vprintk +EXPORT_SYMBOL_GPL vmlinux 0x1d880b8f led_trigger_rename_static +EXPORT_SYMBOL_GPL vmlinux 0x1da33356 verify_signature +EXPORT_SYMBOL_GPL vmlinux 0x1dd5a151 sysfs_remove_groups +EXPORT_SYMBOL_GPL vmlinux 0x1dfbcf4c mpic_msgr_disable +EXPORT_SYMBOL_GPL vmlinux 0x1e2e8c33 gpiochip_unlock_as_irq +EXPORT_SYMBOL_GPL vmlinux 0x1e30d027 usb_phy_generic_register +EXPORT_SYMBOL_GPL vmlinux 0x1e5b03dc pm_qos_add_notifier +EXPORT_SYMBOL_GPL vmlinux 0x1e659349 __page_file_index +EXPORT_SYMBOL_GPL vmlinux 0x1e7bbcb3 kernel_restart +EXPORT_SYMBOL_GPL vmlinux 0x1ea3b1bf usb_gen_phy_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x1eac5f97 sysfs_add_file_to_group +EXPORT_SYMBOL_GPL vmlinux 0x1eadb2ff split_page +EXPORT_SYMBOL_GPL vmlinux 0x1eb9516e round_jiffies_relative +EXPORT_SYMBOL_GPL vmlinux 0x1ebf6c2a pci_power_names +EXPORT_SYMBOL_GPL vmlinux 0x1edda9ee inet6_lookup +EXPORT_SYMBOL_GPL vmlinux 0x1ef80310 devm_mdiobus_free +EXPORT_SYMBOL_GPL vmlinux 0x1f01d65f led_trigger_unregister_simple +EXPORT_SYMBOL_GPL vmlinux 0x1f078291 vfs_lock_file +EXPORT_SYMBOL_GPL vmlinux 0x1f51542d crypto_alloc_ahash +EXPORT_SYMBOL_GPL vmlinux 0x1f70012a devfreq_event_reset_event +EXPORT_SYMBOL_GPL vmlinux 0x1f75caf1 device_store_int +EXPORT_SYMBOL_GPL vmlinux 0x1f8544b8 panic_timeout +EXPORT_SYMBOL_GPL vmlinux 0x1f8db7f9 ring_buffer_overrun_cpu +EXPORT_SYMBOL_GPL vmlinux 0x1fa27baa component_add +EXPORT_SYMBOL_GPL vmlinux 0x1fc892a3 kvm_irq_has_notifier +EXPORT_SYMBOL_GPL vmlinux 0x1fcf24c5 devm_power_supply_get_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0x1fde9b3c clk_register_gate +EXPORT_SYMBOL_GPL vmlinux 0x2007c0cb device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x2008656f virtqueue_enable_cb_delayed +EXPORT_SYMBOL_GPL vmlinux 0x20255cc1 dax_pfn_mkwrite +EXPORT_SYMBOL_GPL vmlinux 0x2044fd0a vga_default_device +EXPORT_SYMBOL_GPL vmlinux 0x20470e04 dev_pm_opp_find_freq_ceil +EXPORT_SYMBOL_GPL vmlinux 0x2047e8c9 of_reserved_mem_device_release +EXPORT_SYMBOL_GPL vmlinux 0x2071e42b dev_pm_opp_free_cpufreq_table +EXPORT_SYMBOL_GPL vmlinux 0x20aa6f51 cpuidle_enable_device +EXPORT_SYMBOL_GPL vmlinux 0x20b51389 blocking_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0x20de5193 kvm_disable_largepages +EXPORT_SYMBOL_GPL vmlinux 0x20e44a0f __gpiod_get_index_optional +EXPORT_SYMBOL_GPL vmlinux 0x20e4c263 filter_check_discard +EXPORT_SYMBOL_GPL vmlinux 0x20e9a0c4 fuse_dev_free +EXPORT_SYMBOL_GPL vmlinux 0x2109206d usb_gen_phy_init +EXPORT_SYMBOL_GPL vmlinux 0x213330e2 ata_std_prereset +EXPORT_SYMBOL_GPL vmlinux 0x2144cf2a crypto_grab_skcipher +EXPORT_SYMBOL_GPL vmlinux 0x215d0ce0 dma_run_dependencies +EXPORT_SYMBOL_GPL vmlinux 0x2181254a regulator_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x218f4076 crypto_register_ahash +EXPORT_SYMBOL_GPL vmlinux 0x219abcd1 posix_timers_register_clock +EXPORT_SYMBOL_GPL vmlinux 0x21a4c4f3 device_show_int +EXPORT_SYMBOL_GPL vmlinux 0x21a563da clk_get_accuracy +EXPORT_SYMBOL_GPL vmlinux 0x21a6f3df of_pci_parse_bus_range +EXPORT_SYMBOL_GPL vmlinux 0x21dd0f97 devm_hwrng_unregister +EXPORT_SYMBOL_GPL vmlinux 0x21ee1f3f crypto_shash_final +EXPORT_SYMBOL_GPL vmlinux 0x221ae2e1 usb_phy_gen_create_phy +EXPORT_SYMBOL_GPL vmlinux 0x22360bf1 tps65912_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x223640be crypto_aead_reqsize +EXPORT_SYMBOL_GPL vmlinux 0x2268735a skcipher_geniv_free +EXPORT_SYMBOL_GPL vmlinux 0x2296c00d crypto_attr_u32 +EXPORT_SYMBOL_GPL vmlinux 0x22b4788e devm_extcon_dev_unregister +EXPORT_SYMBOL_GPL vmlinux 0x22d0457f ohci_restart +EXPORT_SYMBOL_GPL vmlinux 0x22f86ffd clk_gate_ops +EXPORT_SYMBOL_GPL vmlinux 0x231a907f flush_kthread_worker +EXPORT_SYMBOL_GPL vmlinux 0x232ed844 __inet_inherit_port +EXPORT_SYMBOL_GPL vmlinux 0x233f09c1 regulator_bulk_free +EXPORT_SYMBOL_GPL vmlinux 0x2378cb25 aead_geniv_free +EXPORT_SYMBOL_GPL vmlinux 0x23864ce7 cpuset_mem_spread_node +EXPORT_SYMBOL_GPL vmlinux 0x2396c7f0 clk_set_parent +EXPORT_SYMBOL_GPL vmlinux 0x23a08a46 sata_set_spd +EXPORT_SYMBOL_GPL vmlinux 0x23cfa2a4 call_srcu +EXPORT_SYMBOL_GPL vmlinux 0x23fe1dad tcp_ca_get_key_by_name +EXPORT_SYMBOL_GPL vmlinux 0x243af716 queue_kthread_work +EXPORT_SYMBOL_GPL vmlinux 0x243b5578 xattr_getsecurity +EXPORT_SYMBOL_GPL vmlinux 0x24457174 audit_enabled +EXPORT_SYMBOL_GPL vmlinux 0x24652377 devm_power_supply_register_no_ws +EXPORT_SYMBOL_GPL vmlinux 0x247ef831 kdb_unregister +EXPORT_SYMBOL_GPL vmlinux 0x2488aeb3 regulator_bulk_disable +EXPORT_SYMBOL_GPL vmlinux 0x2494b60c reservation_object_get_fences_rcu +EXPORT_SYMBOL_GPL vmlinux 0x24aac4d9 crypto_aes_expand_key +EXPORT_SYMBOL_GPL vmlinux 0x24e3845f rtc_read_alarm +EXPORT_SYMBOL_GPL vmlinux 0x24e6a7af trace_define_field +EXPORT_SYMBOL_GPL vmlinux 0x24e7fb30 led_trigger_register +EXPORT_SYMBOL_GPL vmlinux 0x24eb7e32 leds_list +EXPORT_SYMBOL_GPL vmlinux 0x24f39c39 reset_control_reset +EXPORT_SYMBOL_GPL vmlinux 0x25009ade spi_busnum_to_master +EXPORT_SYMBOL_GPL vmlinux 0x25115974 alloc_vm_area +EXPORT_SYMBOL_GPL vmlinux 0x2515e6fb skcipher_geniv_alloc +EXPORT_SYMBOL_GPL vmlinux 0x252e4618 sdhci_pci_o2_probe +EXPORT_SYMBOL_GPL vmlinux 0x25379e73 clk_set_min_rate +EXPORT_SYMBOL_GPL vmlinux 0x25405096 of_thermal_get_trip_points +EXPORT_SYMBOL_GPL vmlinux 0x2542854f blk_mq_unfreeze_queue +EXPORT_SYMBOL_GPL vmlinux 0x2542abda set_primary_fwnode +EXPORT_SYMBOL_GPL vmlinux 0x25574504 clk_fixed_rate_ops +EXPORT_SYMBOL_GPL vmlinux 0x255bc40f gpiod_export +EXPORT_SYMBOL_GPL vmlinux 0x25705e23 usb_sg_wait +EXPORT_SYMBOL_GPL vmlinux 0x25770edf usb_enable_lpm +EXPORT_SYMBOL_GPL vmlinux 0x257b3f05 usb_set_device_state +EXPORT_SYMBOL_GPL vmlinux 0x258ed81e debugfs_create_u32 +EXPORT_SYMBOL_GPL vmlinux 0x25a357b5 blkcipher_aead_walk_virt_block +EXPORT_SYMBOL_GPL vmlinux 0x25d04ee3 hrtimer_cancel +EXPORT_SYMBOL_GPL vmlinux 0x25d392b9 devm_devfreq_event_add_edev +EXPORT_SYMBOL_GPL vmlinux 0x25d5c154 sysfs_add_link_to_group +EXPORT_SYMBOL_GPL vmlinux 0x25ef7d10 phy_pm_runtime_get +EXPORT_SYMBOL_GPL vmlinux 0x25f3681b debugfs_create_x16 +EXPORT_SYMBOL_GPL vmlinux 0x25fe2aa8 __gpiod_get_index +EXPORT_SYMBOL_GPL vmlinux 0x26073836 sdio_memcpy_toio +EXPORT_SYMBOL_GPL vmlinux 0x262f20a8 local_clock +EXPORT_SYMBOL_GPL vmlinux 0x263e0036 rt_mutex_lock_interruptible +EXPORT_SYMBOL_GPL vmlinux 0x26497946 dev_pm_opp_find_freq_exact +EXPORT_SYMBOL_GPL vmlinux 0x26520970 vm_memory_committed +EXPORT_SYMBOL_GPL vmlinux 0x266b7638 interval_tree_remove +EXPORT_SYMBOL_GPL vmlinux 0x268efd43 unregister_kprobes +EXPORT_SYMBOL_GPL vmlinux 0x2691412e boot_cpuid_phys +EXPORT_SYMBOL_GPL vmlinux 0x26b71fb4 ring_buffer_time_stamp +EXPORT_SYMBOL_GPL vmlinux 0x26bde4a9 input_ff_upload +EXPORT_SYMBOL_GPL vmlinux 0x26c90ea4 scsi_eh_get_sense +EXPORT_SYMBOL_GPL vmlinux 0x26f55c34 adp5520_read +EXPORT_SYMBOL_GPL vmlinux 0x27046576 kvm_exit +EXPORT_SYMBOL_GPL vmlinux 0x270819d8 sdev_evt_send_simple +EXPORT_SYMBOL_GPL vmlinux 0x27186d96 ata_bmdma_irq_clear +EXPORT_SYMBOL_GPL vmlinux 0x274cf5e1 __clk_get_flags +EXPORT_SYMBOL_GPL vmlinux 0x2787db00 vbin_printf +EXPORT_SYMBOL_GPL vmlinux 0x27a34d4f regmap_multi_reg_write_bypassed +EXPORT_SYMBOL_GPL vmlinux 0x27b1e43f tpm_gen_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x27b65981 i2c_adapter_type +EXPORT_SYMBOL_GPL vmlinux 0x27c1e63f usb_amd_find_chipset_info +EXPORT_SYMBOL_GPL vmlinux 0x27caf57d pwm_free +EXPORT_SYMBOL_GPL vmlinux 0x27e451b2 component_master_add +EXPORT_SYMBOL_GPL vmlinux 0x27e5fd70 ahash_attr_alg +EXPORT_SYMBOL_GPL vmlinux 0x27f27364 __pm_stay_awake +EXPORT_SYMBOL_GPL vmlinux 0x27f4f029 ftrace_set_global_filter +EXPORT_SYMBOL_GPL vmlinux 0x27fa66e1 nr_free_buffer_pages +EXPORT_SYMBOL_GPL vmlinux 0x280056c4 regmap_fields_update_bits +EXPORT_SYMBOL_GPL vmlinux 0x2802848e sock_diag_check_cookie +EXPORT_SYMBOL_GPL vmlinux 0x2814988f power_supply_register_no_ws +EXPORT_SYMBOL_GPL vmlinux 0x281768cf wm831x_auxadc_read +EXPORT_SYMBOL_GPL vmlinux 0x2819102d sk_clear_memalloc +EXPORT_SYMBOL_GPL vmlinux 0x282cdabc usb_led_activity +EXPORT_SYMBOL_GPL vmlinux 0x284885ae bmp085_probe +EXPORT_SYMBOL_GPL vmlinux 0x285a5f9d percpu_ida_free +EXPORT_SYMBOL_GPL vmlinux 0x286e738e rio_mport_send_doorbell +EXPORT_SYMBOL_GPL vmlinux 0x28714867 regulator_disable +EXPORT_SYMBOL_GPL vmlinux 0x287b52da gpiod_set_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x288a4cc6 irq_gc_mask_clr_bit +EXPORT_SYMBOL_GPL vmlinux 0x28da7aab vfs_removexattr +EXPORT_SYMBOL_GPL vmlinux 0x28fbdcab dma_buf_kmap +EXPORT_SYMBOL_GPL vmlinux 0x29028584 edac_subsys +EXPORT_SYMBOL_GPL vmlinux 0x2903ff71 scsi_target_block +EXPORT_SYMBOL_GPL vmlinux 0x2913de09 hrtimer_get_remaining +EXPORT_SYMBOL_GPL vmlinux 0x29255b38 pciserial_init_ports +EXPORT_SYMBOL_GPL vmlinux 0x293f1d5d ata_sff_check_status +EXPORT_SYMBOL_GPL vmlinux 0x2961d715 of_rescan_bus +EXPORT_SYMBOL_GPL vmlinux 0x29711426 devm_regulator_register +EXPORT_SYMBOL_GPL vmlinux 0x298e4bd0 iptunnel_xmit +EXPORT_SYMBOL_GPL vmlinux 0x29a08bdc pwm_get +EXPORT_SYMBOL_GPL vmlinux 0x29b67690 scsi_internal_device_unblock +EXPORT_SYMBOL_GPL vmlinux 0x29c33d9b irq_generic_chip_ops +EXPORT_SYMBOL_GPL vmlinux 0x29c59af3 arizona_set_irq_wake +EXPORT_SYMBOL_GPL vmlinux 0x29f9a12d powercap_register_zone +EXPORT_SYMBOL_GPL vmlinux 0x2a058c08 sysfs_notify +EXPORT_SYMBOL_GPL vmlinux 0x2a3b1a03 register_pernet_subsys +EXPORT_SYMBOL_GPL vmlinux 0x2a4f2385 da903x_update +EXPORT_SYMBOL_GPL vmlinux 0x2a678a13 __suspend_report_result +EXPORT_SYMBOL_GPL vmlinux 0x2a78f372 phy_power_off +EXPORT_SYMBOL_GPL vmlinux 0x2aa92876 nd_region_provider_data +EXPORT_SYMBOL_GPL vmlinux 0x2acf4ea0 kobject_rename +EXPORT_SYMBOL_GPL vmlinux 0x2af288e7 da903x_write +EXPORT_SYMBOL_GPL vmlinux 0x2afb7e7d thermal_zone_of_sensor_unregister +EXPORT_SYMBOL_GPL vmlinux 0x2aff371b skcipher_geniv_exit +EXPORT_SYMBOL_GPL vmlinux 0x2b151e64 of_irq_parse_one +EXPORT_SYMBOL_GPL vmlinux 0x2b36c545 aead_geniv_exit +EXPORT_SYMBOL_GPL vmlinux 0x2b3919bb map_vm_area +EXPORT_SYMBOL_GPL vmlinux 0x2b4cece3 pid_vnr +EXPORT_SYMBOL_GPL vmlinux 0x2b5c303b smp_send_reschedule +EXPORT_SYMBOL_GPL vmlinux 0x2b7a574f md_is_badblock +EXPORT_SYMBOL_GPL vmlinux 0x2b7f522a extcon_unregister_interest +EXPORT_SYMBOL_GPL vmlinux 0x2b952517 clk_has_parent +EXPORT_SYMBOL_GPL vmlinux 0x2bbc3c20 ping_get_port +EXPORT_SYMBOL_GPL vmlinux 0x2bda9b64 phy_power_on +EXPORT_SYMBOL_GPL vmlinux 0x2bfa985e nd_cmd_dimm_desc +EXPORT_SYMBOL_GPL vmlinux 0x2c133868 bit_wait_io_timeout +EXPORT_SYMBOL_GPL vmlinux 0x2c1a5c6e rtc_class_close +EXPORT_SYMBOL_GPL vmlinux 0x2c208607 power_supply_is_system_supplied +EXPORT_SYMBOL_GPL vmlinux 0x2c3054f9 net_inc_ingress_queue +EXPORT_SYMBOL_GPL vmlinux 0x2c3cfcc7 cpufreq_freq_attr_scaling_boost_freqs +EXPORT_SYMBOL_GPL vmlinux 0x2c4cf162 ipv6_opt_accepted +EXPORT_SYMBOL_GPL vmlinux 0x2c5147e6 usb_ifnum_to_if +EXPORT_SYMBOL_GPL vmlinux 0x2c562421 pci_scan_child_bus +EXPORT_SYMBOL_GPL vmlinux 0x2c67a83b mmc_regulator_get_supply +EXPORT_SYMBOL_GPL vmlinux 0x2c7b9339 devm_usb_put_phy +EXPORT_SYMBOL_GPL vmlinux 0x2c7db649 irq_dispose_mapping +EXPORT_SYMBOL_GPL vmlinux 0x2c97c085 unregister_kprobe +EXPORT_SYMBOL_GPL vmlinux 0x2c97f8a2 of_reconfig_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x2c994ff5 usb_autopm_put_interface_async +EXPORT_SYMBOL_GPL vmlinux 0x2cceabbf sata_scr_write +EXPORT_SYMBOL_GPL vmlinux 0x2ce98559 kcrypto_wq +EXPORT_SYMBOL_GPL vmlinux 0x2cee01bc hrtimer_init_sleeper +EXPORT_SYMBOL_GPL vmlinux 0x2d0193f8 cpufreq_cooling_unregister +EXPORT_SYMBOL_GPL vmlinux 0x2d090923 bus_get_kset +EXPORT_SYMBOL_GPL vmlinux 0x2d1a10f7 kvm_vcpu_gfn_to_pfn_atomic +EXPORT_SYMBOL_GPL vmlinux 0x2d1b02d2 usermodehelper_read_lock_wait +EXPORT_SYMBOL_GPL vmlinux 0x2d26fbe6 dev_pm_opp_init_cpufreq_table +EXPORT_SYMBOL_GPL vmlinux 0x2d36c57b rh_alloc +EXPORT_SYMBOL_GPL vmlinux 0x2d41e6f5 __trace_puts +EXPORT_SYMBOL_GPL vmlinux 0x2d443d04 dev_pm_qos_flags +EXPORT_SYMBOL_GPL vmlinux 0x2d52ce88 usb_hcd_unmap_urb_for_dma +EXPORT_SYMBOL_GPL vmlinux 0x2d59c954 edac_handlers +EXPORT_SYMBOL_GPL vmlinux 0x2d6abfa9 ipv6_recv_error +EXPORT_SYMBOL_GPL vmlinux 0x2d6f6dbf blk_abort_request +EXPORT_SYMBOL_GPL vmlinux 0x2d945225 __pneigh_lookup +EXPORT_SYMBOL_GPL vmlinux 0x2dc5a6d1 btree_last +EXPORT_SYMBOL_GPL vmlinux 0x2dd6f67a debugfs_create_x8 +EXPORT_SYMBOL_GPL vmlinux 0x2de210cf power_supply_get_by_name +EXPORT_SYMBOL_GPL vmlinux 0x2e0c5fb5 nvdimm_blk_region_create +EXPORT_SYMBOL_GPL vmlinux 0x2e2360b1 ftrace_set_global_notrace +EXPORT_SYMBOL_GPL vmlinux 0x2e24106d mbox_client_txdone +EXPORT_SYMBOL_GPL vmlinux 0x2e2d4aee i2c_add_numbered_adapter +EXPORT_SYMBOL_GPL vmlinux 0x2e2f1740 ring_buffer_record_disable_cpu +EXPORT_SYMBOL_GPL vmlinux 0x2e5efb68 irq_domain_associate_many +EXPORT_SYMBOL_GPL vmlinux 0x2e69129f crypto_unregister_rng +EXPORT_SYMBOL_GPL vmlinux 0x2e73de2d xhci_suspend +EXPORT_SYMBOL_GPL vmlinux 0x2e761050 class_find_device +EXPORT_SYMBOL_GPL vmlinux 0x2e970bb1 dev_attr_em_message +EXPORT_SYMBOL_GPL vmlinux 0x2eaa1ffa napi_hash_del +EXPORT_SYMBOL_GPL vmlinux 0x2eaf107c key_type_asymmetric +EXPORT_SYMBOL_GPL vmlinux 0x2eb300ab palmas_ext_control_req_config +EXPORT_SYMBOL_GPL vmlinux 0x2ebe3135 cpu_is_hotpluggable +EXPORT_SYMBOL_GPL vmlinux 0x2ec93fcf bus_for_each_drv +EXPORT_SYMBOL_GPL vmlinux 0x2efadc60 bus_unregister +EXPORT_SYMBOL_GPL vmlinux 0x2f0d9053 usb_otg_state_string +EXPORT_SYMBOL_GPL vmlinux 0x2f4113a2 dcookie_register +EXPORT_SYMBOL_GPL vmlinux 0x2f435a52 cpuidle_unregister +EXPORT_SYMBOL_GPL vmlinux 0x2f446bf0 mmc_get_ext_csd +EXPORT_SYMBOL_GPL vmlinux 0x2f4ff538 rio_request_mport_dma +EXPORT_SYMBOL_GPL vmlinux 0x2f501a24 sata_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x2f58de97 wm5110_spi_regmap +EXPORT_SYMBOL_GPL vmlinux 0x2f753395 do_take_over_console +EXPORT_SYMBOL_GPL vmlinux 0x2f77d483 __sock_recv_ts_and_drops +EXPORT_SYMBOL_GPL vmlinux 0x2f931359 phy_pm_runtime_get_sync +EXPORT_SYMBOL_GPL vmlinux 0x2f9ebc34 dma_wait_for_async_tx +EXPORT_SYMBOL_GPL vmlinux 0x2f9f752a usb_disable_ltm +EXPORT_SYMBOL_GPL vmlinux 0x2fa3b71c relay_open +EXPORT_SYMBOL_GPL vmlinux 0x2fac7113 lp8788_read_byte +EXPORT_SYMBOL_GPL vmlinux 0x2faf7945 of_alias_get_id +EXPORT_SYMBOL_GPL vmlinux 0x2fc6a33b cpuidle_get_cpu_driver +EXPORT_SYMBOL_GPL vmlinux 0x2ff0a9d2 kvm_vcpu_mark_page_dirty +EXPORT_SYMBOL_GPL vmlinux 0x2ff15a54 regcache_drop_region +EXPORT_SYMBOL_GPL vmlinux 0x2ffb5ff7 btree_get_prev +EXPORT_SYMBOL_GPL vmlinux 0x30428572 hwmon_device_register_with_groups +EXPORT_SYMBOL_GPL vmlinux 0x304c1fef swiotlb_tbl_unmap_single +EXPORT_SYMBOL_GPL vmlinux 0x3051f999 fat_scan +EXPORT_SYMBOL_GPL vmlinux 0x306c6126 elv_register +EXPORT_SYMBOL_GPL vmlinux 0x30778a46 __blocking_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x30812114 tty_buffer_unlock_exclusive +EXPORT_SYMBOL_GPL vmlinux 0x30a4f4ca bstr_printf +EXPORT_SYMBOL_GPL vmlinux 0x30ac8b80 ata_sff_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x30c6b706 fsl_spi_cpm_reinit_txrx +EXPORT_SYMBOL_GPL vmlinux 0x30ceade4 dm_internal_resume +EXPORT_SYMBOL_GPL vmlinux 0x30e1f6b3 regmap_async_complete +EXPORT_SYMBOL_GPL vmlinux 0x30eaf6c6 relay_flush +EXPORT_SYMBOL_GPL vmlinux 0x30fb73f1 netdev_rx_handler_register +EXPORT_SYMBOL_GPL vmlinux 0x3103923b usb_altnum_to_altsetting +EXPORT_SYMBOL_GPL vmlinux 0x3109b751 cpu_clock +EXPORT_SYMBOL_GPL vmlinux 0x31266931 con_debug_leave +EXPORT_SYMBOL_GPL vmlinux 0x314344f2 task_cls_state +EXPORT_SYMBOL_GPL vmlinux 0x314e5397 uhci_check_and_reset_hc +EXPORT_SYMBOL_GPL vmlinux 0x31668db0 sata_link_hardreset +EXPORT_SYMBOL_GPL vmlinux 0x3167b6e9 tpm_chip_unregister +EXPORT_SYMBOL_GPL vmlinux 0x316bf348 da9052_disable_irq_nosync +EXPORT_SYMBOL_GPL vmlinux 0x31799ba2 pcie_bus_configure_settings +EXPORT_SYMBOL_GPL vmlinux 0x318d6435 netlink_has_listeners +EXPORT_SYMBOL_GPL vmlinux 0x3196d72c i2c_new_probed_device +EXPORT_SYMBOL_GPL vmlinux 0x31b9d19b rio_get_device +EXPORT_SYMBOL_GPL vmlinux 0x31bc4993 apply_to_page_range +EXPORT_SYMBOL_GPL vmlinux 0x31bd88f8 regmap_attach_dev +EXPORT_SYMBOL_GPL vmlinux 0x31c0c2d1 dm_put +EXPORT_SYMBOL_GPL vmlinux 0x31c7970f pciserial_suspend_ports +EXPORT_SYMBOL_GPL vmlinux 0x31ef7c10 wm8350_device_init +EXPORT_SYMBOL_GPL vmlinux 0x31efe108 ata_qc_complete_multiple +EXPORT_SYMBOL_GPL vmlinux 0x31f455b3 thermal_of_cooling_device_register +EXPORT_SYMBOL_GPL vmlinux 0x32595019 inet_hash +EXPORT_SYMBOL_GPL vmlinux 0x328995b5 tracing_generic_entry_update +EXPORT_SYMBOL_GPL vmlinux 0x32924a4d scatterwalk_copychunks +EXPORT_SYMBOL_GPL vmlinux 0x329970ca yield_to +EXPORT_SYMBOL_GPL vmlinux 0x32a915a0 sdio_readb +EXPORT_SYMBOL_GPL vmlinux 0x32b59565 ip6_local_out_sk +EXPORT_SYMBOL_GPL vmlinux 0x32bc0fcf preempt_notifier_dec +EXPORT_SYMBOL_GPL vmlinux 0x32c3cb4e class_compat_register +EXPORT_SYMBOL_GPL vmlinux 0x32dbf8c4 pci_enable_sriov +EXPORT_SYMBOL_GPL vmlinux 0x32e038a2 usb_hcd_is_primary_hcd +EXPORT_SYMBOL_GPL vmlinux 0x32e4eab3 __rtnl_af_unregister +EXPORT_SYMBOL_GPL vmlinux 0x32e730eb phy_init +EXPORT_SYMBOL_GPL vmlinux 0x32f094c3 rtc_update_irq_enable +EXPORT_SYMBOL_GPL vmlinux 0x330b0400 usb_hc_died +EXPORT_SYMBOL_GPL vmlinux 0x33116149 mnt_drop_write +EXPORT_SYMBOL_GPL vmlinux 0x335b4733 device_add_property_set +EXPORT_SYMBOL_GPL vmlinux 0x335c570f enable_percpu_irq +EXPORT_SYMBOL_GPL vmlinux 0x335fc03b clk_gpio_gate_ops +EXPORT_SYMBOL_GPL vmlinux 0x336154ca rcutorture_record_test_transition +EXPORT_SYMBOL_GPL vmlinux 0x3363530a usb_driver_release_interface +EXPORT_SYMBOL_GPL vmlinux 0x3364a802 pci_check_and_unmask_intx +EXPORT_SYMBOL_GPL vmlinux 0x3368ed5c blkcg_deactivate_policy +EXPORT_SYMBOL_GPL vmlinux 0x3376f665 power_supply_external_power_changed +EXPORT_SYMBOL_GPL vmlinux 0x3377721a kvmppc_emulate_instruction +EXPORT_SYMBOL_GPL vmlinux 0x337786fa usb_unpoison_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x3385af35 fanout_mutex +EXPORT_SYMBOL_GPL vmlinux 0x339a5110 blk_mq_free_request +EXPORT_SYMBOL_GPL vmlinux 0x33e7415c pci_create_slot +EXPORT_SYMBOL_GPL vmlinux 0x33ec3a09 thermal_zone_of_sensor_register +EXPORT_SYMBOL_GPL vmlinux 0x33efd9ba of_property_read_string_helper +EXPORT_SYMBOL_GPL vmlinux 0x340d5346 trace_print_bitmask_seq +EXPORT_SYMBOL_GPL vmlinux 0x34328832 blkcipher_walk_phys +EXPORT_SYMBOL_GPL vmlinux 0x34331d5e nd_fletcher64 +EXPORT_SYMBOL_GPL vmlinux 0x345a7b1d ata_sff_drain_fifo +EXPORT_SYMBOL_GPL vmlinux 0x34646153 inet_peer_base_init +EXPORT_SYMBOL_GPL vmlinux 0x347682ce snmp_fold_field64 +EXPORT_SYMBOL_GPL vmlinux 0x347d9fb7 mbox_chan_received_data +EXPORT_SYMBOL_GPL vmlinux 0x347fd4b3 eventfd_ctx_get +EXPORT_SYMBOL_GPL vmlinux 0x34962332 of_get_nand_bus_width +EXPORT_SYMBOL_GPL vmlinux 0x3498666c pm_generic_restore_noirq +EXPORT_SYMBOL_GPL vmlinux 0x34ac50a4 visitorl +EXPORT_SYMBOL_GPL vmlinux 0x34ac9112 tcp_slow_start +EXPORT_SYMBOL_GPL vmlinux 0x34d4fa3d of_get_nand_ecc_step_size +EXPORT_SYMBOL_GPL vmlinux 0x34e718f5 ip6_datagram_connect +EXPORT_SYMBOL_GPL vmlinux 0x3510fe0a ata_pci_sff_init_host +EXPORT_SYMBOL_GPL vmlinux 0x351652d8 pci_check_and_mask_intx +EXPORT_SYMBOL_GPL vmlinux 0x35176301 rcu_batches_completed_sched +EXPORT_SYMBOL_GPL vmlinux 0x352acfc4 pm_runtime_irq_safe +EXPORT_SYMBOL_GPL vmlinux 0x35349112 ip_route_output_flow +EXPORT_SYMBOL_GPL vmlinux 0x358ff60f twl_get_hfclk_rate +EXPORT_SYMBOL_GPL vmlinux 0x35c38920 led_sysfs_disable +EXPORT_SYMBOL_GPL vmlinux 0x35c61f82 pci_hp_change_slot_info +EXPORT_SYMBOL_GPL vmlinux 0x35cf82a6 get_task_comm +EXPORT_SYMBOL_GPL vmlinux 0x35d2469b napi_by_id +EXPORT_SYMBOL_GPL vmlinux 0x35d984ed of_resolve_phandles +EXPORT_SYMBOL_GPL vmlinux 0x35f10f43 nfq_ct_nat_hook +EXPORT_SYMBOL_GPL vmlinux 0x360cb91c rio_mport_chk_dev_access +EXPORT_SYMBOL_GPL vmlinux 0x36185636 pci_dev_run_wake +EXPORT_SYMBOL_GPL vmlinux 0x361e2bcc save_stack_trace +EXPORT_SYMBOL_GPL vmlinux 0x363dad64 adp5520_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x365ca5e7 usb_autopm_get_interface_async +EXPORT_SYMBOL_GPL vmlinux 0x3663bd90 ehci_reset +EXPORT_SYMBOL_GPL vmlinux 0x3665fc36 __blkdev_driver_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x366a80b1 __clocksource_update_freq_scale +EXPORT_SYMBOL_GPL vmlinux 0x366a9d7b regmap_update_bits_async +EXPORT_SYMBOL_GPL vmlinux 0x368082ef i2c_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0x368a1323 mpc8xxx_spi_probe +EXPORT_SYMBOL_GPL vmlinux 0x369fcd70 tracing_snapshot +EXPORT_SYMBOL_GPL vmlinux 0x36a64e5c percpu_ida_free_tags +EXPORT_SYMBOL_GPL vmlinux 0x36bda7b0 cpuidle_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0x36dab97f trace_clock_jiffies +EXPORT_SYMBOL_GPL vmlinux 0x36e4ac71 ata_scsi_slave_destroy +EXPORT_SYMBOL_GPL vmlinux 0x36f88720 max8997_update_reg +EXPORT_SYMBOL_GPL vmlinux 0x36f9cae0 __mmu_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x37159ad7 driver_attach +EXPORT_SYMBOL_GPL vmlinux 0x371dbd7c gfn_to_pfn_memslot +EXPORT_SYMBOL_GPL vmlinux 0x3733d0fd dev_pm_opp_enable +EXPORT_SYMBOL_GPL vmlinux 0x373dc594 crypto_larval_alloc +EXPORT_SYMBOL_GPL vmlinux 0x374906a2 pcie_port_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x37543453 serial8250_request_dma +EXPORT_SYMBOL_GPL vmlinux 0x3756b806 kobject_move +EXPORT_SYMBOL_GPL vmlinux 0x375d4da0 ipv4_sk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x3763f202 unregister_ftrace_function +EXPORT_SYMBOL_GPL vmlinux 0x37833f2b unix_outq_len +EXPORT_SYMBOL_GPL vmlinux 0x378842da ping_seq_next +EXPORT_SYMBOL_GPL vmlinux 0x37b62fd5 devm_regmap_init +EXPORT_SYMBOL_GPL vmlinux 0x37c7df9b regulator_set_mode +EXPORT_SYMBOL_GPL vmlinux 0x37d2c2c5 rh_dump_blk +EXPORT_SYMBOL_GPL vmlinux 0x37de824e rtc_class_open +EXPORT_SYMBOL_GPL vmlinux 0x37f005e0 regulator_is_enabled_regmap +EXPORT_SYMBOL_GPL vmlinux 0x37f1f875 rtc_irq_unregister +EXPORT_SYMBOL_GPL vmlinux 0x37f4fe00 pci_ignore_hotplug +EXPORT_SYMBOL_GPL vmlinux 0x3809c4de mddev_congested +EXPORT_SYMBOL_GPL vmlinux 0x383f5fb6 alloc_page_buffers +EXPORT_SYMBOL_GPL vmlinux 0x384a6981 __gfn_to_pfn_memslot +EXPORT_SYMBOL_GPL vmlinux 0x384b9559 arizona_clk32k_disable +EXPORT_SYMBOL_GPL vmlinux 0x38639300 of_overlay_destroy +EXPORT_SYMBOL_GPL vmlinux 0x38750c11 pci_set_cacheline_size +EXPORT_SYMBOL_GPL vmlinux 0x387c251d devm_pwm_get +EXPORT_SYMBOL_GPL vmlinux 0x38a05892 ata_sff_data_xfer +EXPORT_SYMBOL_GPL vmlinux 0x38a9c2c7 input_ff_effect_from_user +EXPORT_SYMBOL_GPL vmlinux 0x38a9d886 kthread_unpark +EXPORT_SYMBOL_GPL vmlinux 0x38cfcfbe pci_destroy_slot +EXPORT_SYMBOL_GPL vmlinux 0x38e5bc5a clk_set_rate_range +EXPORT_SYMBOL_GPL vmlinux 0x38ecafc8 of_modalias_node +EXPORT_SYMBOL_GPL vmlinux 0x38ed198f alarm_try_to_cancel +EXPORT_SYMBOL_GPL vmlinux 0x3965ec5a of_platform_depopulate +EXPORT_SYMBOL_GPL vmlinux 0x3975e8e2 dbs_check_cpu +EXPORT_SYMBOL_GPL vmlinux 0x39a16ccb trace_output_call +EXPORT_SYMBOL_GPL vmlinux 0x39a9fafb da903x_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0x39bc9cc3 usb_enable_intel_xhci_ports +EXPORT_SYMBOL_GPL vmlinux 0x39ca07cc maxim_charger_calc_reg_current +EXPORT_SYMBOL_GPL vmlinux 0x39e61495 nf_logger_request_module +EXPORT_SYMBOL_GPL vmlinux 0x39f2ff5b regmap_can_raw_write +EXPORT_SYMBOL_GPL vmlinux 0x3a265f5e get_task_pid +EXPORT_SYMBOL_GPL vmlinux 0x3a26ed11 sched_clock +EXPORT_SYMBOL_GPL vmlinux 0x3a456f7f bio_trim +EXPORT_SYMBOL_GPL vmlinux 0x3a4f6a32 ata_sff_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x3a536bd7 ring_buffer_read_finish +EXPORT_SYMBOL_GPL vmlinux 0x3a5e2c06 of_clk_add_provider +EXPORT_SYMBOL_GPL vmlinux 0x3a69930a crypto_aead_setkey +EXPORT_SYMBOL_GPL vmlinux 0x3a7b2983 bdev_direct_access +EXPORT_SYMBOL_GPL vmlinux 0x3a93beee bpf_prog_destroy +EXPORT_SYMBOL_GPL vmlinux 0x3a9be019 asymmetric_key_id_partial +EXPORT_SYMBOL_GPL vmlinux 0x3ac375af rtc_update_irq +EXPORT_SYMBOL_GPL vmlinux 0x3acdf325 twl4030_audio_enable_resource +EXPORT_SYMBOL_GPL vmlinux 0x3b3273a6 sata_scr_read +EXPORT_SYMBOL_GPL vmlinux 0x3b3e924d __pm_runtime_resume +EXPORT_SYMBOL_GPL vmlinux 0x3b445a8d pm_runtime_force_resume +EXPORT_SYMBOL_GPL vmlinux 0x3b77ffde tps6586x_reads +EXPORT_SYMBOL_GPL vmlinux 0x3b7c4657 serial8250_modem_status +EXPORT_SYMBOL_GPL vmlinux 0x3bb8cf97 transport_remove_device +EXPORT_SYMBOL_GPL vmlinux 0x3bdb009e generic_fh_to_parent +EXPORT_SYMBOL_GPL vmlinux 0x3bfd4e6d crypto_hash_walk_done +EXPORT_SYMBOL_GPL vmlinux 0x3c1f99bb udp4_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x3c62e62f gpiod_get_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x3c76654b dev_pm_qos_add_notifier +EXPORT_SYMBOL_GPL vmlinux 0x3c7b9405 ata_do_dev_read_id +EXPORT_SYMBOL_GPL vmlinux 0x3c9390db pci_vpd_find_tag +EXPORT_SYMBOL_GPL vmlinux 0x3c963fec bd_unlink_disk_holder +EXPORT_SYMBOL_GPL vmlinux 0x3cad7863 tracepoint_probe_register +EXPORT_SYMBOL_GPL vmlinux 0x3cc3cee2 blkcipher_walk_done +EXPORT_SYMBOL_GPL vmlinux 0x3cc9326f of_dma_configure +EXPORT_SYMBOL_GPL vmlinux 0x3cd06035 add_input_randomness +EXPORT_SYMBOL_GPL vmlinux 0x3cdcc50e mnt_clone_write +EXPORT_SYMBOL_GPL vmlinux 0x3d1b326b gpiod_set_raw_array_value +EXPORT_SYMBOL_GPL vmlinux 0x3d1d7a87 ip6_push_pending_frames +EXPORT_SYMBOL_GPL vmlinux 0x3d367f26 stmpe_set_altfunc +EXPORT_SYMBOL_GPL vmlinux 0x3d388324 dpm_resume_end +EXPORT_SYMBOL_GPL vmlinux 0x3d3e1f79 posix_clock_unregister +EXPORT_SYMBOL_GPL vmlinux 0x3d45a96c cpu_remove_dev_attr +EXPORT_SYMBOL_GPL vmlinux 0x3d488585 usb_free_urb +EXPORT_SYMBOL_GPL vmlinux 0x3d6bab0c class_dev_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x3d6d0d58 wm5110_revd_irq +EXPORT_SYMBOL_GPL vmlinux 0x3d7949c4 crypto_unregister_instance +EXPORT_SYMBOL_GPL vmlinux 0x3d8acde4 tc3589x_block_read +EXPORT_SYMBOL_GPL vmlinux 0x3da57ac5 led_classdev_resume +EXPORT_SYMBOL_GPL vmlinux 0x3dc526a9 arizona_of_match +EXPORT_SYMBOL_GPL vmlinux 0x3dc69a41 wm831x_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0x3dc916b6 crypto_fl_tab +EXPORT_SYMBOL_GPL vmlinux 0x3dd4d3a7 bprintf +EXPORT_SYMBOL_GPL vmlinux 0x3dd8181e __clk_get_parent +EXPORT_SYMBOL_GPL vmlinux 0x3de9cae1 crypto_remove_final +EXPORT_SYMBOL_GPL vmlinux 0x3e1f72e0 kvm_vcpu_cache +EXPORT_SYMBOL_GPL vmlinux 0x3e37b656 bpf_prog_put +EXPORT_SYMBOL_GPL vmlinux 0x3e591b8c blkcg_root +EXPORT_SYMBOL_GPL vmlinux 0x3e5e1937 rcu_batches_started_sched +EXPORT_SYMBOL_GPL vmlinux 0x3e6fd8c2 extcon_get_extcon_dev +EXPORT_SYMBOL_GPL vmlinux 0x3e7080cb mpi_read_from_buffer +EXPORT_SYMBOL_GPL vmlinux 0x3e757637 cpu_bit_bitmap +EXPORT_SYMBOL_GPL vmlinux 0x3ecbaacc sg_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x3eceedfd dm_get_table_device +EXPORT_SYMBOL_GPL vmlinux 0x3eda1ee6 ohci_setup +EXPORT_SYMBOL_GPL vmlinux 0x3efb35c9 get_online_cpus +EXPORT_SYMBOL_GPL vmlinux 0x3f0c3926 vfs_kern_mount +EXPORT_SYMBOL_GPL vmlinux 0x3f0d7c38 blk_add_request_payload +EXPORT_SYMBOL_GPL vmlinux 0x3f0d826a rio_mport_read_config_8 +EXPORT_SYMBOL_GPL vmlinux 0x3f31ffda fsnotify +EXPORT_SYMBOL_GPL vmlinux 0x3f720161 seq_release_net +EXPORT_SYMBOL_GPL vmlinux 0x3f85e73c blk_end_request_err +EXPORT_SYMBOL_GPL vmlinux 0x3f953c4e to_of_pinfo +EXPORT_SYMBOL_GPL vmlinux 0x3f994df7 blkcg_policy_unregister +EXPORT_SYMBOL_GPL vmlinux 0x3fa5af9c nd_cmd_bus_desc +EXPORT_SYMBOL_GPL vmlinux 0x3fb4d1b4 devm_extcon_dev_allocate +EXPORT_SYMBOL_GPL vmlinux 0x3fb85a7c crypto_create_tfm +EXPORT_SYMBOL_GPL vmlinux 0x3fd6efb4 tty_port_link_device +EXPORT_SYMBOL_GPL vmlinux 0x401ccb68 device_remove_bin_file +EXPORT_SYMBOL_GPL vmlinux 0x4033f662 crypto_ahash_type +EXPORT_SYMBOL_GPL vmlinux 0x40352a77 regulator_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x403f9529 gpio_request_one +EXPORT_SYMBOL_GPL vmlinux 0x40432093 fat_attach +EXPORT_SYMBOL_GPL vmlinux 0x4045c494 filter_match_preds +EXPORT_SYMBOL_GPL vmlinux 0x4064ea44 usb_deregister +EXPORT_SYMBOL_GPL vmlinux 0x4065d168 pm_print_active_wakeup_sources +EXPORT_SYMBOL_GPL vmlinux 0x4069f13c rio_mport_read_config_32 +EXPORT_SYMBOL_GPL vmlinux 0x406c28c0 dev_coredumpv +EXPORT_SYMBOL_GPL vmlinux 0x406c4cb1 hrtimer_resolution +EXPORT_SYMBOL_GPL vmlinux 0x407f2527 phy_pm_runtime_allow +EXPORT_SYMBOL_GPL vmlinux 0x40812d0d gpiod_export_link +EXPORT_SYMBOL_GPL vmlinux 0x40814526 ima_file_check +EXPORT_SYMBOL_GPL vmlinux 0x40a5f51e bio_associate_current +EXPORT_SYMBOL_GPL vmlinux 0x40af0dec ata_xfer_mode2mask +EXPORT_SYMBOL_GPL vmlinux 0x40d46b21 crypto_ft_tab +EXPORT_SYMBOL_GPL vmlinux 0x40da5bb8 rio_release_outb_dbell +EXPORT_SYMBOL_GPL vmlinux 0x40f0683e reset_control_put +EXPORT_SYMBOL_GPL vmlinux 0x413f7e17 alarm_init +EXPORT_SYMBOL_GPL vmlinux 0x416c6056 kvm_clear_guest +EXPORT_SYMBOL_GPL vmlinux 0x41814cb8 dirty_writeback_interval +EXPORT_SYMBOL_GPL vmlinux 0x419db46a power_supply_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x41a25fc0 pm_generic_freeze_noirq +EXPORT_SYMBOL_GPL vmlinux 0x41a44c71 usb_hcd_end_port_resume +EXPORT_SYMBOL_GPL vmlinux 0x41b8c633 regulator_list_voltage_table +EXPORT_SYMBOL_GPL vmlinux 0x41d34893 regulator_set_current_limit +EXPORT_SYMBOL_GPL vmlinux 0x4205ad24 cancel_work_sync +EXPORT_SYMBOL_GPL vmlinux 0x421f6dba __clk_mux_determine_rate +EXPORT_SYMBOL_GPL vmlinux 0x4223d836 sock_prot_inuse_add +EXPORT_SYMBOL_GPL vmlinux 0x424acc6d scatterwalk_done +EXPORT_SYMBOL_GPL vmlinux 0x4269e299 md_find_rdev_nr_rcu +EXPORT_SYMBOL_GPL vmlinux 0x427a066b trace_seq_puts +EXPORT_SYMBOL_GPL vmlinux 0x42825ce2 rcu_scheduler_active +EXPORT_SYMBOL_GPL vmlinux 0x4313f6a0 perf_trace_buf_prepare +EXPORT_SYMBOL_GPL vmlinux 0x43182f18 kvm_vcpu_kick +EXPORT_SYMBOL_GPL vmlinux 0x431bf93c wm5110_irq +EXPORT_SYMBOL_GPL vmlinux 0x431d7d23 devm_add_action +EXPORT_SYMBOL_GPL vmlinux 0x434ad81c of_dma_controller_register +EXPORT_SYMBOL_GPL vmlinux 0x43619e1a scatterwalk_ffwd +EXPORT_SYMBOL_GPL vmlinux 0x438c3e58 device_wakeup_disable +EXPORT_SYMBOL_GPL vmlinux 0x439319fd invalidate_inode_pages2_range +EXPORT_SYMBOL_GPL vmlinux 0x43969dbe rh_alloc_fixed +EXPORT_SYMBOL_GPL vmlinux 0x43a53735 __alloc_workqueue_key +EXPORT_SYMBOL_GPL vmlinux 0x43a55458 pci_find_next_capability +EXPORT_SYMBOL_GPL vmlinux 0x43b466b0 gfn_to_pfn_memslot_atomic +EXPORT_SYMBOL_GPL vmlinux 0x43bb38d0 led_trigger_set +EXPORT_SYMBOL_GPL vmlinux 0x43de0c94 usb_mon_register +EXPORT_SYMBOL_GPL vmlinux 0x43ee0777 sysfs_create_link +EXPORT_SYMBOL_GPL vmlinux 0x43f56e82 ata_xfer_mode2shift +EXPORT_SYMBOL_GPL vmlinux 0x43f81957 clk_round_rate +EXPORT_SYMBOL_GPL vmlinux 0x4432d042 pm_generic_restore_early +EXPORT_SYMBOL_GPL vmlinux 0x443347dd irq_domain_add_simple +EXPORT_SYMBOL_GPL vmlinux 0x44381229 inet_csk_bind_conflict +EXPORT_SYMBOL_GPL vmlinux 0x447abc69 fuse_conn_init +EXPORT_SYMBOL_GPL vmlinux 0x4484a5a4 wait_for_device_probe +EXPORT_SYMBOL_GPL vmlinux 0x44ab3d81 trace_event_reg +EXPORT_SYMBOL_GPL vmlinux 0x44c650d4 usb_clear_halt +EXPORT_SYMBOL_GPL vmlinux 0x44cc88f2 irq_set_default_host +EXPORT_SYMBOL_GPL vmlinux 0x44d04c2d ipv6_dup_options +EXPORT_SYMBOL_GPL vmlinux 0x44e8f675 bitmap_resize +EXPORT_SYMBOL_GPL vmlinux 0x44eda039 rhashtable_walk_next +EXPORT_SYMBOL_GPL vmlinux 0x4533e0bf devres_open_group +EXPORT_SYMBOL_GPL vmlinux 0x45387a49 unregister_trace_event +EXPORT_SYMBOL_GPL vmlinux 0x45674d5e component_master_add_child +EXPORT_SYMBOL_GPL vmlinux 0x456b7be7 fixed_phy_set_link_update +EXPORT_SYMBOL_GPL vmlinux 0x456e7909 swiotlb_tbl_sync_single +EXPORT_SYMBOL_GPL vmlinux 0x4573e609 mpc8xxx_spi_rx_buf_u16 +EXPORT_SYMBOL_GPL vmlinux 0x457594fa crypto_alg_list +EXPORT_SYMBOL_GPL vmlinux 0x4580eaef usb_kill_urb +EXPORT_SYMBOL_GPL vmlinux 0x458289df pm_generic_freeze +EXPORT_SYMBOL_GPL vmlinux 0x459589d0 disk_part_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0x459e0d1a regulator_map_voltage_ascend +EXPORT_SYMBOL_GPL vmlinux 0x45b67ccf kvm_vcpu_write_guest +EXPORT_SYMBOL_GPL vmlinux 0x45bf1ff3 crypto_inc +EXPORT_SYMBOL_GPL vmlinux 0x45c0d53c tcp_peer_is_proven +EXPORT_SYMBOL_GPL vmlinux 0x46013233 net_dec_ingress_queue +EXPORT_SYMBOL_GPL vmlinux 0x460f7531 wait_rcu_gp +EXPORT_SYMBOL_GPL vmlinux 0x463a5454 device_property_present +EXPORT_SYMBOL_GPL vmlinux 0x463a8d8d inet_csk_listen_stop +EXPORT_SYMBOL_GPL vmlinux 0x463d24ea ipv6_fixup_options +EXPORT_SYMBOL_GPL vmlinux 0x465871ed user_update +EXPORT_SYMBOL_GPL vmlinux 0x46647178 hrtimer_init +EXPORT_SYMBOL_GPL vmlinux 0x46661bda trace_seq_printf +EXPORT_SYMBOL_GPL vmlinux 0x4672e88b __crypto_dequeue_request +EXPORT_SYMBOL_GPL vmlinux 0x467e50f5 skb_zerocopy_headlen +EXPORT_SYMBOL_GPL vmlinux 0x4688c96a usb_scuttle_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x4688d7ec pvclock_gtod_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x469143c4 x509_free_certificate +EXPORT_SYMBOL_GPL vmlinux 0x4691a45b regmap_update_bits_check +EXPORT_SYMBOL_GPL vmlinux 0x46a8f691 fat_time_unix2fat +EXPORT_SYMBOL_GPL vmlinux 0x46c1d049 virtqueue_add_outbuf +EXPORT_SYMBOL_GPL vmlinux 0x46c83aa6 unregister_kretprobes +EXPORT_SYMBOL_GPL vmlinux 0x47024845 blk_queue_flush_queueable +EXPORT_SYMBOL_GPL vmlinux 0x470cbf9c iptunnel_pull_header +EXPORT_SYMBOL_GPL vmlinux 0x47229b5c gpio_request +EXPORT_SYMBOL_GPL vmlinux 0x47255245 rio_add_device +EXPORT_SYMBOL_GPL vmlinux 0x472bed23 tty_mode_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x47509136 devres_close_group +EXPORT_SYMBOL_GPL vmlinux 0x475dc49f __gpiod_get +EXPORT_SYMBOL_GPL vmlinux 0x4761f17c register_netevent_notifier +EXPORT_SYMBOL_GPL vmlinux 0x47620d71 kobject_uevent_env +EXPORT_SYMBOL_GPL vmlinux 0x4764027a vring_del_virtqueue +EXPORT_SYMBOL_GPL vmlinux 0x476a9bf2 bus_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x4771df30 rio_dma_prep_xfer +EXPORT_SYMBOL_GPL vmlinux 0x47884890 system_power_efficient_wq +EXPORT_SYMBOL_GPL vmlinux 0x47a8c814 regulator_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x47aad3b9 have_governor_per_policy +EXPORT_SYMBOL_GPL vmlinux 0x47b1ab70 cpufreq_unregister_governor +EXPORT_SYMBOL_GPL vmlinux 0x47c7d4ef __get_vm_area +EXPORT_SYMBOL_GPL vmlinux 0x47d03a2b kallsyms_on_each_symbol +EXPORT_SYMBOL_GPL vmlinux 0x47d7b8ed class_unregister +EXPORT_SYMBOL_GPL vmlinux 0x47da64e9 kvm_set_memory_region +EXPORT_SYMBOL_GPL vmlinux 0x47de0dc7 clk_unregister_mux +EXPORT_SYMBOL_GPL vmlinux 0x47eef8d6 usb_driver_set_configuration +EXPORT_SYMBOL_GPL vmlinux 0x47f4d1d8 crypto_chain +EXPORT_SYMBOL_GPL vmlinux 0x4810b88a sysfs_remove_link_from_group +EXPORT_SYMBOL_GPL vmlinux 0x48163b8c sock_diag_register +EXPORT_SYMBOL_GPL vmlinux 0x481a893b usb_autopm_get_interface_no_resume +EXPORT_SYMBOL_GPL vmlinux 0x485cd7f6 kvm_rebooting +EXPORT_SYMBOL_GPL vmlinux 0x4868c3b4 rcu_batches_started_bh +EXPORT_SYMBOL_GPL vmlinux 0x487410b0 ablkcipher_walk_phys +EXPORT_SYMBOL_GPL vmlinux 0x487c5d33 nf_log_buf_add +EXPORT_SYMBOL_GPL vmlinux 0x487cbb30 __rio_local_write_config_32 +EXPORT_SYMBOL_GPL vmlinux 0x48839272 crypto_ahash_setkey +EXPORT_SYMBOL_GPL vmlinux 0x4887bfa8 of_pci_range_parser_one +EXPORT_SYMBOL_GPL vmlinux 0x48989ea9 __pm_runtime_idle +EXPORT_SYMBOL_GPL vmlinux 0x48aad703 crypto_alg_lookup +EXPORT_SYMBOL_GPL vmlinux 0x48c22b6d regmap_get_device +EXPORT_SYMBOL_GPL vmlinux 0x48e35095 sb800_prefetch +EXPORT_SYMBOL_GPL vmlinux 0x48ecf67e bus_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0x48f28719 __mmu_notifier_invalidate_range_end +EXPORT_SYMBOL_GPL vmlinux 0x4923a0d2 __clocksource_register_scale +EXPORT_SYMBOL_GPL vmlinux 0x493097fc rio_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x4982a57f probe_kernel_write +EXPORT_SYMBOL_GPL vmlinux 0x498cc7e7 of_mpc8xxx_spi_probe +EXPORT_SYMBOL_GPL vmlinux 0x498d293a trace_buffer_unlock_commit +EXPORT_SYMBOL_GPL vmlinux 0x499043d3 crypto_init_queue +EXPORT_SYMBOL_GPL vmlinux 0x4997d742 __devm_of_phy_provider_register +EXPORT_SYMBOL_GPL vmlinux 0x499b8312 ata_dev_disable +EXPORT_SYMBOL_GPL vmlinux 0x49d2a8c2 ata_pio_need_iordy +EXPORT_SYMBOL_GPL vmlinux 0x49e43728 tpm2_probe +EXPORT_SYMBOL_GPL vmlinux 0x49e67b0a dev_pm_disable_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0x49e96999 cond_synchronize_rcu +EXPORT_SYMBOL_GPL vmlinux 0x4a0d2f4a cpuidle_get_driver +EXPORT_SYMBOL_GPL vmlinux 0x4a1aee1f crypto_lookup_template +EXPORT_SYMBOL_GPL vmlinux 0x4a34beaf device_reset +EXPORT_SYMBOL_GPL vmlinux 0x4a516150 blkcg_print_blkgs +EXPORT_SYMBOL_GPL vmlinux 0x4a63e422 regcache_sync_region +EXPORT_SYMBOL_GPL vmlinux 0x4a83f1e0 rio_unmap_inb_region +EXPORT_SYMBOL_GPL vmlinux 0x4a851998 __of_phy_provider_register +EXPORT_SYMBOL_GPL vmlinux 0x4a87ab3c ndo_dflt_bridge_getlink +EXPORT_SYMBOL_GPL vmlinux 0x4a8f5eb6 nl_table +EXPORT_SYMBOL_GPL vmlinux 0x4aadeb9a ring_buffer_alloc_read_page +EXPORT_SYMBOL_GPL vmlinux 0x4ab8f116 dev_pm_qos_add_ancestor_request +EXPORT_SYMBOL_GPL vmlinux 0x4ab8f4da ata_sff_pause +EXPORT_SYMBOL_GPL vmlinux 0x4ae8c705 list_lru_count_node +EXPORT_SYMBOL_GPL vmlinux 0x4aeba103 securityfs_remove +EXPORT_SYMBOL_GPL vmlinux 0x4b26eaa6 bus_rescan_devices +EXPORT_SYMBOL_GPL vmlinux 0x4b2f1599 alarm_forward +EXPORT_SYMBOL_GPL vmlinux 0x4b6588cc da9052_adc_read_temp +EXPORT_SYMBOL_GPL vmlinux 0x4b866cac extcon_get_cable_state_ +EXPORT_SYMBOL_GPL vmlinux 0x4b878d5c wm8350_reg_unlock +EXPORT_SYMBOL_GPL vmlinux 0x4b98827c rh_init +EXPORT_SYMBOL_GPL vmlinux 0x4ba3df16 usb_get_urb +EXPORT_SYMBOL_GPL vmlinux 0x4bbda102 ata_std_postreset +EXPORT_SYMBOL_GPL vmlinux 0x4bc32086 tpmm_chip_alloc +EXPORT_SYMBOL_GPL vmlinux 0x4bd6cd2b cpufreq_cooling_register +EXPORT_SYMBOL_GPL vmlinux 0x4c145dfe rtc_irq_set_state +EXPORT_SYMBOL_GPL vmlinux 0x4c1688b5 rdev_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x4c1d1e92 usb_lock_device_for_reset +EXPORT_SYMBOL_GPL vmlinux 0x4c2e5757 tpm_do_selftest +EXPORT_SYMBOL_GPL vmlinux 0x4c59e60f dma_buf_export +EXPORT_SYMBOL_GPL vmlinux 0x4c602bf1 __blkg_release_rcu +EXPORT_SYMBOL_GPL vmlinux 0x4c62d81b kvm_write_guest_cached +EXPORT_SYMBOL_GPL vmlinux 0x4c759827 byte_rev_table +EXPORT_SYMBOL_GPL vmlinux 0x4c76ab91 of_clk_src_simple_get +EXPORT_SYMBOL_GPL vmlinux 0x4c77100a device_create +EXPORT_SYMBOL_GPL vmlinux 0x4c8bb2e3 crypto_aes_set_key +EXPORT_SYMBOL_GPL vmlinux 0x4c9a083f kvm_debugfs_dir +EXPORT_SYMBOL_GPL vmlinux 0x4ca154b6 attribute_container_unregister +EXPORT_SYMBOL_GPL vmlinux 0x4cb717eb debugfs_create_u8 +EXPORT_SYMBOL_GPL vmlinux 0x4ccc1aca pci_bus_sem +EXPORT_SYMBOL_GPL vmlinux 0x4cf36549 kvmppc_pr_ops +EXPORT_SYMBOL_GPL vmlinux 0x4d0015e2 cpu_hotplug_disable +EXPORT_SYMBOL_GPL vmlinux 0x4d27a9fb swiotlb_unmap_page +EXPORT_SYMBOL_GPL vmlinux 0x4d2dc058 pm_generic_thaw +EXPORT_SYMBOL_GPL vmlinux 0x4d381024 virtqueue_get_used +EXPORT_SYMBOL_GPL vmlinux 0x4d4bb6a2 tpm2_calc_ordinal_duration +EXPORT_SYMBOL_GPL vmlinux 0x4d596847 blk_trace_setup +EXPORT_SYMBOL_GPL vmlinux 0x4d63fa13 put_device +EXPORT_SYMBOL_GPL vmlinux 0x4d71e38c sata_link_debounce +EXPORT_SYMBOL_GPL vmlinux 0x4d871f0c add_disk_randomness +EXPORT_SYMBOL_GPL vmlinux 0x4da62c0b ata_host_alloc +EXPORT_SYMBOL_GPL vmlinux 0x4db37e0a fuse_conn_get +EXPORT_SYMBOL_GPL vmlinux 0x4dc230ce tty_find_polling_driver +EXPORT_SYMBOL_GPL vmlinux 0x4dcd1fa4 __pm_wakeup_event +EXPORT_SYMBOL_GPL vmlinux 0x4dd0aa87 usb_match_one_id +EXPORT_SYMBOL_GPL vmlinux 0x4dd43b83 __rt_mutex_init +EXPORT_SYMBOL_GPL vmlinux 0x4de17ab3 usb_state_string +EXPORT_SYMBOL_GPL vmlinux 0x4de8780c relay_switch_subbuf +EXPORT_SYMBOL_GPL vmlinux 0x4dee5a7b kvm_flush_remote_tlbs +EXPORT_SYMBOL_GPL vmlinux 0x4e109192 ring_buffer_entries +EXPORT_SYMBOL_GPL vmlinux 0x4e161684 edac_get_sysfs_subsys +EXPORT_SYMBOL_GPL vmlinux 0x4e1b3a71 cpuidle_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0x4e22b301 blkdev_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x4e242f5f pstore_cannot_block_path +EXPORT_SYMBOL_GPL vmlinux 0x4e2c2dd2 pm_qos_remove_request +EXPORT_SYMBOL_GPL vmlinux 0x4e42e1be cpu_add_dev_attr_group +EXPORT_SYMBOL_GPL vmlinux 0x4e527c36 pci_user_write_config_dword +EXPORT_SYMBOL_GPL vmlinux 0x4e618f9f of_get_display_timing +EXPORT_SYMBOL_GPL vmlinux 0x4e6a9014 tpm2_gen_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x4e7775d7 dummy_con +EXPORT_SYMBOL_GPL vmlinux 0x4e87fc3b mbox_chan_txdone +EXPORT_SYMBOL_GPL vmlinux 0x4e9e1eb0 xhci_init_driver +EXPORT_SYMBOL_GPL vmlinux 0x4eaab66c xfrm_audit_state_notfound +EXPORT_SYMBOL_GPL vmlinux 0x4ec45c56 raw_hash_sk +EXPORT_SYMBOL_GPL vmlinux 0x4ee1708a fb_sys_write +EXPORT_SYMBOL_GPL vmlinux 0x4ef5bcf4 perf_swevent_get_recursion_context +EXPORT_SYMBOL_GPL vmlinux 0x4f020dee public_key_verify_signature +EXPORT_SYMBOL_GPL vmlinux 0x4f5b7b01 wm8997_irq +EXPORT_SYMBOL_GPL vmlinux 0x4f5c9fa6 gpiod_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x4f6a07fe show_rcu_gp_kthreads +EXPORT_SYMBOL_GPL vmlinux 0x4fa69eeb sync_page_io +EXPORT_SYMBOL_GPL vmlinux 0x4fd4e89d ring_buffer_empty_cpu +EXPORT_SYMBOL_GPL vmlinux 0x4fdc7ec1 fat_remove_entries +EXPORT_SYMBOL_GPL vmlinux 0x4fdc945d sata_deb_timing_normal +EXPORT_SYMBOL_GPL vmlinux 0x4fe1eddf unregister_netevent_notifier +EXPORT_SYMBOL_GPL vmlinux 0x4fe8a409 of_property_read_u32_array +EXPORT_SYMBOL_GPL vmlinux 0x50080fbc spi_master_suspend +EXPORT_SYMBOL_GPL vmlinux 0x500946c7 tty_ldisc_ref +EXPORT_SYMBOL_GPL vmlinux 0x500a57bc key_type_logon +EXPORT_SYMBOL_GPL vmlinux 0x501d449e pci_disable_ats +EXPORT_SYMBOL_GPL vmlinux 0x5036d22b devm_reset_control_get +EXPORT_SYMBOL_GPL vmlinux 0x504ed5f2 platform_device_add_data +EXPORT_SYMBOL_GPL vmlinux 0x506aaa58 pwm_set_polarity +EXPORT_SYMBOL_GPL vmlinux 0x506cbed8 inet_twsk_alloc +EXPORT_SYMBOL_GPL vmlinux 0x5086aaaf pci_find_ht_capability +EXPORT_SYMBOL_GPL vmlinux 0x5086ac3a alg_test +EXPORT_SYMBOL_GPL vmlinux 0x5091b823 ring_buffer_read_start +EXPORT_SYMBOL_GPL vmlinux 0x50c89f23 __alloc_percpu +EXPORT_SYMBOL_GPL vmlinux 0x50d729ec ata_sff_tf_read +EXPORT_SYMBOL_GPL vmlinux 0x50e7193a __i2c_first_dynamic_bus_num +EXPORT_SYMBOL_GPL vmlinux 0x50fad434 round_jiffies_up +EXPORT_SYMBOL_GPL vmlinux 0x51150069 phy_create +EXPORT_SYMBOL_GPL vmlinux 0x5145b9a5 unregister_virtio_device +EXPORT_SYMBOL_GPL vmlinux 0x514e9875 divider_get_val +EXPORT_SYMBOL_GPL vmlinux 0x5160854c tps6586x_update +EXPORT_SYMBOL_GPL vmlinux 0x51934e93 i2c_probe_func_quick_read +EXPORT_SYMBOL_GPL vmlinux 0x51b65a26 rtc_lock +EXPORT_SYMBOL_GPL vmlinux 0x51cc7cb3 dev_set_name +EXPORT_SYMBOL_GPL vmlinux 0x51d3a173 __get_user_pages_fast +EXPORT_SYMBOL_GPL vmlinux 0x51e0be3d __crypto_alloc_tfm +EXPORT_SYMBOL_GPL vmlinux 0x51eeb982 devm_regulator_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x520a8fd0 subsys_system_register +EXPORT_SYMBOL_GPL vmlinux 0x5210a5bf hsi_board_list +EXPORT_SYMBOL_GPL vmlinux 0x52212010 __tracepoint_block_bio_remap +EXPORT_SYMBOL_GPL vmlinux 0x5221ec3a fwnode_property_read_u32_array +EXPORT_SYMBOL_GPL vmlinux 0x524997b3 attribute_container_classdev_to_container +EXPORT_SYMBOL_GPL vmlinux 0x526c4651 led_trigger_blink +EXPORT_SYMBOL_GPL vmlinux 0x5272be42 transport_setup_device +EXPORT_SYMBOL_GPL vmlinux 0x5276fbb1 rio_release_inb_pwrite +EXPORT_SYMBOL_GPL vmlinux 0x5283f57f clk_register_divider +EXPORT_SYMBOL_GPL vmlinux 0x52975408 da903x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x52b37106 pci_assign_unassigned_bridge_resources +EXPORT_SYMBOL_GPL vmlinux 0x52d44507 stmpe_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x52e3dd64 kern_mount_data +EXPORT_SYMBOL_GPL vmlinux 0x52e67f7a sata_sff_hardreset +EXPORT_SYMBOL_GPL vmlinux 0x52f06686 blk_queue_flush +EXPORT_SYMBOL_GPL vmlinux 0x52f7a7b4 usb_get_current_frame_number +EXPORT_SYMBOL_GPL vmlinux 0x52fc9883 md_stop_writes +EXPORT_SYMBOL_GPL vmlinux 0x5306410e alarm_start_relative +EXPORT_SYMBOL_GPL vmlinux 0x5331f6c0 debugfs_create_devm_seqfile +EXPORT_SYMBOL_GPL vmlinux 0x5332fa25 tc3589x_block_write +EXPORT_SYMBOL_GPL vmlinux 0x5335dd11 atomic_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x5340589d crypto_alloc_tfm +EXPORT_SYMBOL_GPL vmlinux 0x534b8578 debugfs_create_symlink +EXPORT_SYMBOL_GPL vmlinux 0x5355a4fe crypto_givcipher_type +EXPORT_SYMBOL_GPL vmlinux 0x5358fc36 ring_buffer_discard_commit +EXPORT_SYMBOL_GPL vmlinux 0x53614269 get_cpu_idle_time_us +EXPORT_SYMBOL_GPL vmlinux 0x5361686a pci_disable_pasid +EXPORT_SYMBOL_GPL vmlinux 0x53658351 led_trigger_remove +EXPORT_SYMBOL_GPL vmlinux 0x537996ca devm_led_classdev_unregister +EXPORT_SYMBOL_GPL vmlinux 0x53abddb6 ping_rcv +EXPORT_SYMBOL_GPL vmlinux 0x53b517eb ohci_init_driver +EXPORT_SYMBOL_GPL vmlinux 0x53e7747c pci_user_write_config_word +EXPORT_SYMBOL_GPL vmlinux 0x53f19a7b devm_of_pwm_get +EXPORT_SYMBOL_GPL vmlinux 0x541bd60a irq_work_run +EXPORT_SYMBOL_GPL vmlinux 0x5425d145 bit_wait_timeout +EXPORT_SYMBOL_GPL vmlinux 0x54426ff6 inet_csk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x54458b56 hrtimer_try_to_cancel +EXPORT_SYMBOL_GPL vmlinux 0x5460c8d8 fsnotify_get_cookie +EXPORT_SYMBOL_GPL vmlinux 0x546b8ffb dev_forward_skb +EXPORT_SYMBOL_GPL vmlinux 0x546c5565 ppc_tb_freq +EXPORT_SYMBOL_GPL vmlinux 0x5471cf9b srcu_barrier +EXPORT_SYMBOL_GPL vmlinux 0x54740eb7 get_cpu_idle_time +EXPORT_SYMBOL_GPL vmlinux 0x54787154 bus_find_device +EXPORT_SYMBOL_GPL vmlinux 0x54910c25 do_unregister_con_driver +EXPORT_SYMBOL_GPL vmlinux 0x549525ef handle_nested_irq +EXPORT_SYMBOL_GPL vmlinux 0x54a85008 pci_enable_ats +EXPORT_SYMBOL_GPL vmlinux 0x54b18d0b lp8788_write_byte +EXPORT_SYMBOL_GPL vmlinux 0x54d2b448 power_supply_property_is_writeable +EXPORT_SYMBOL_GPL vmlinux 0x54d46690 uart_parse_earlycon +EXPORT_SYMBOL_GPL vmlinux 0x54d468f1 pm_qos_request_active +EXPORT_SYMBOL_GPL vmlinux 0x54daf6a4 of_pci_get_devfn +EXPORT_SYMBOL_GPL vmlinux 0x54fbb261 bd_link_disk_holder +EXPORT_SYMBOL_GPL vmlinux 0x5505d8b2 devm_power_supply_register +EXPORT_SYMBOL_GPL vmlinux 0x550fbf98 clk_mux_ops +EXPORT_SYMBOL_GPL vmlinux 0x55146089 of_property_read_u8_array +EXPORT_SYMBOL_GPL vmlinux 0x5529bb0a regulator_enable_regmap +EXPORT_SYMBOL_GPL vmlinux 0x553b49a4 cpufreq_get_driver_data +EXPORT_SYMBOL_GPL vmlinux 0x55417264 unregister_vt_notifier +EXPORT_SYMBOL_GPL vmlinux 0x554393b1 trace_event_raw_init +EXPORT_SYMBOL_GPL vmlinux 0x5548f23a regmap_add_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0x556e4390 clk_get_rate +EXPORT_SYMBOL_GPL vmlinux 0x556fe8b7 cleanup_srcu_struct +EXPORT_SYMBOL_GPL vmlinux 0x5574dc90 irq_create_mapping +EXPORT_SYMBOL_GPL vmlinux 0x55784228 regmap_irq_get_virq +EXPORT_SYMBOL_GPL vmlinux 0x55825d92 ata_pci_bmdma_init +EXPORT_SYMBOL_GPL vmlinux 0x55b7b8f7 tty_set_termios +EXPORT_SYMBOL_GPL vmlinux 0x55d07bda blk_rq_err_bytes +EXPORT_SYMBOL_GPL vmlinux 0x56256e8a orderly_poweroff +EXPORT_SYMBOL_GPL vmlinux 0x56310925 regulator_mode_to_status +EXPORT_SYMBOL_GPL vmlinux 0x56349ee9 usb_hcd_giveback_urb +EXPORT_SYMBOL_GPL vmlinux 0x5634b8dc usb_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0x564ef1f6 regulator_list_voltage_linear_range +EXPORT_SYMBOL_GPL vmlinux 0x565b6892 uuid_le_gen +EXPORT_SYMBOL_GPL vmlinux 0x5687fd82 mpc8xxx_spi_remove +EXPORT_SYMBOL_GPL vmlinux 0x56886b19 scatterwalk_map +EXPORT_SYMBOL_GPL vmlinux 0x569d673a param_set_bool_enable_only +EXPORT_SYMBOL_GPL vmlinux 0x56b63670 lzo1x_1_compress +EXPORT_SYMBOL_GPL vmlinux 0x56cdf5a9 kobject_create_and_add +EXPORT_SYMBOL_GPL vmlinux 0x56d697ce cpu_up +EXPORT_SYMBOL_GPL vmlinux 0x56d81ad8 inet_twsk_purge +EXPORT_SYMBOL_GPL vmlinux 0x56e75d47 klist_node_attached +EXPORT_SYMBOL_GPL vmlinux 0x56e84266 pwm_request_from_chip +EXPORT_SYMBOL_GPL vmlinux 0x56f6be39 kvm_put_kvm +EXPORT_SYMBOL_GPL vmlinux 0x56f7ab6e ata_host_detach +EXPORT_SYMBOL_GPL vmlinux 0x570545dd tpm_calc_ordinal_duration +EXPORT_SYMBOL_GPL vmlinux 0x570842c7 bpf_prog_select_runtime +EXPORT_SYMBOL_GPL vmlinux 0x570a54ce ata_scsi_slave_config +EXPORT_SYMBOL_GPL vmlinux 0x5717112d unregister_pernet_device +EXPORT_SYMBOL_GPL vmlinux 0x5719b817 ehci_init_driver +EXPORT_SYMBOL_GPL vmlinux 0x57231f45 ring_buffer_record_on +EXPORT_SYMBOL_GPL vmlinux 0x573bbfff regmap_field_update_bits +EXPORT_SYMBOL_GPL vmlinux 0x573d95f7 tcp_twsk_destructor +EXPORT_SYMBOL_GPL vmlinux 0x57795722 nd_region_attribute_group +EXPORT_SYMBOL_GPL vmlinux 0x5790e7a0 pci_unlock_rescan_remove +EXPORT_SYMBOL_GPL vmlinux 0x579e0bf5 rtnl_unregister_all +EXPORT_SYMBOL_GPL vmlinux 0x57b0ffa6 nd_mapping_attribute_group +EXPORT_SYMBOL_GPL vmlinux 0x57c39727 kdb_register_flags +EXPORT_SYMBOL_GPL vmlinux 0x57e2eddf pid_nr_ns +EXPORT_SYMBOL_GPL vmlinux 0x57f96851 of_get_fb_videomode +EXPORT_SYMBOL_GPL vmlinux 0x58273adb usb_autopm_get_interface +EXPORT_SYMBOL_GPL vmlinux 0x58292e5f clk_fixed_factor_ops +EXPORT_SYMBOL_GPL vmlinux 0x584ee3cf serial8250_rx_chars +EXPORT_SYMBOL_GPL vmlinux 0x5892f832 release_pmc_hardware +EXPORT_SYMBOL_GPL vmlinux 0x58991dd7 sdio_writel +EXPORT_SYMBOL_GPL vmlinux 0x589e4569 syscon_regmap_lookup_by_pdevname +EXPORT_SYMBOL_GPL vmlinux 0x58a5cc0e rdev_get_dev +EXPORT_SYMBOL_GPL vmlinux 0x58b1afdd regulator_set_load +EXPORT_SYMBOL_GPL vmlinux 0x58d55256 virtqueue_add_inbuf +EXPORT_SYMBOL_GPL vmlinux 0x58db3796 dev_attr_em_message_type +EXPORT_SYMBOL_GPL vmlinux 0x58df5ce9 skb_gso_transport_seglen +EXPORT_SYMBOL_GPL vmlinux 0x58e0f0a7 trace_event_buffer_lock_reserve +EXPORT_SYMBOL_GPL vmlinux 0x58e21d30 led_trigger_event +EXPORT_SYMBOL_GPL vmlinux 0x58f5e796 kvm_gfn_to_hva_cache_init +EXPORT_SYMBOL_GPL vmlinux 0x58fe9409 rio_inb_pwrite_handler +EXPORT_SYMBOL_GPL vmlinux 0x58ff7d4e wakeup_source_prepare +EXPORT_SYMBOL_GPL vmlinux 0x59097118 dma_buf_fd +EXPORT_SYMBOL_GPL vmlinux 0x590fbaf1 debugfs_print_regs32 +EXPORT_SYMBOL_GPL vmlinux 0x5918cd0d of_dma_xlate_by_chan_id +EXPORT_SYMBOL_GPL vmlinux 0x593b0a50 __srcu_read_unlock +EXPORT_SYMBOL_GPL vmlinux 0x596bcb75 wakeup_source_add +EXPORT_SYMBOL_GPL vmlinux 0x596c043e skb_pull_rcsum +EXPORT_SYMBOL_GPL vmlinux 0x59906e8c pci_cfg_access_trylock +EXPORT_SYMBOL_GPL vmlinux 0x5999d761 virtqueue_poll +EXPORT_SYMBOL_GPL vmlinux 0x59ba10a1 i2c_generic_gpio_recovery +EXPORT_SYMBOL_GPL vmlinux 0x59e2743e call_rcu_bh +EXPORT_SYMBOL_GPL vmlinux 0x59eae699 ring_buffer_read_prepare +EXPORT_SYMBOL_GPL vmlinux 0x5a44299e set_task_ioprio +EXPORT_SYMBOL_GPL vmlinux 0x5a688809 usb_get_descriptor +EXPORT_SYMBOL_GPL vmlinux 0x5a7bfe41 crypto_probing_notify +EXPORT_SYMBOL_GPL vmlinux 0x5a8bcc52 inet_csk_get_port +EXPORT_SYMBOL_GPL vmlinux 0x5aae9e4a pci_user_read_config_byte +EXPORT_SYMBOL_GPL vmlinux 0x5b14b354 regulator_get_init_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x5b3e94ac regulator_count_voltages +EXPORT_SYMBOL_GPL vmlinux 0x5b768824 uart_handle_dcd_change +EXPORT_SYMBOL_GPL vmlinux 0x5b82776a dma_buf_end_cpu_access +EXPORT_SYMBOL_GPL vmlinux 0x5b850905 regmap_get_reg_stride +EXPORT_SYMBOL_GPL vmlinux 0x5ba919dc blockdev_superblock +EXPORT_SYMBOL_GPL vmlinux 0x5bace8ce __lock_page_killable +EXPORT_SYMBOL_GPL vmlinux 0x5bd0748f crypto_del_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x5bdbac4e rcu_unexpedite_gp +EXPORT_SYMBOL_GPL vmlinux 0x5be3a75a gen_pool_size +EXPORT_SYMBOL_GPL vmlinux 0x5c4a4c79 ipv4_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x5c5a1b16 tick_broadcast_control +EXPORT_SYMBOL_GPL vmlinux 0x5c697b50 bsg_unregister_queue +EXPORT_SYMBOL_GPL vmlinux 0x5c7393ff tpm_pm_suspend +EXPORT_SYMBOL_GPL vmlinux 0x5c7da21a cpufreq_table_validate_and_show +EXPORT_SYMBOL_GPL vmlinux 0x5c8beccd request_firmware_direct +EXPORT_SYMBOL_GPL vmlinux 0x5cabdced dev_pm_qos_remove_global_notifier +EXPORT_SYMBOL_GPL vmlinux 0x5cc509a4 nsecs_to_jiffies +EXPORT_SYMBOL_GPL vmlinux 0x5cddd5ae __blk_end_request_err +EXPORT_SYMBOL_GPL vmlinux 0x5cde4a74 crypto_mod_get +EXPORT_SYMBOL_GPL vmlinux 0x5ceafdff usb_hcd_pci_remove +EXPORT_SYMBOL_GPL vmlinux 0x5cefd30e rtc_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x5d12e48f input_event_to_user +EXPORT_SYMBOL_GPL vmlinux 0x5d3d0d02 subsys_interface_register +EXPORT_SYMBOL_GPL vmlinux 0x5da67adc zs_compact +EXPORT_SYMBOL_GPL vmlinux 0x5dc1974f scsi_eh_ready_devs +EXPORT_SYMBOL_GPL vmlinux 0x5df135ae device_move +EXPORT_SYMBOL_GPL vmlinux 0x5e26629a ata_bmdma_port_start32 +EXPORT_SYMBOL_GPL vmlinux 0x5e311b3e inet_csk_search_req +EXPORT_SYMBOL_GPL vmlinux 0x5e312f72 blkdev_read_iter +EXPORT_SYMBOL_GPL vmlinux 0x5e38c2f0 blk_queue_lld_busy +EXPORT_SYMBOL_GPL vmlinux 0x5e515be6 ktime_get_ts64 +EXPORT_SYMBOL_GPL vmlinux 0x5e51cd74 swiotlb_nr_tbl +EXPORT_SYMBOL_GPL vmlinux 0x5e635ce3 skb_to_sgvec_nomark +EXPORT_SYMBOL_GPL vmlinux 0x5ea1d624 event_triggers_post_call +EXPORT_SYMBOL_GPL vmlinux 0x5eedd296 devm_regulator_bulk_get +EXPORT_SYMBOL_GPL vmlinux 0x5ef413e7 reservation_object_test_signaled_rcu +EXPORT_SYMBOL_GPL vmlinux 0x5f1c8284 ata_sff_wait_ready +EXPORT_SYMBOL_GPL vmlinux 0x5f3b6150 crypto_unregister_shash +EXPORT_SYMBOL_GPL vmlinux 0x5f4fb4c1 device_set_wakeup_enable +EXPORT_SYMBOL_GPL vmlinux 0x5f652bed pci_hp_deregister +EXPORT_SYMBOL_GPL vmlinux 0x5f6d4597 of_clk_parent_fill +EXPORT_SYMBOL_GPL vmlinux 0x5f7ff25f usb_phy_generic_unregister +EXPORT_SYMBOL_GPL vmlinux 0x5fcb2f58 crypto_shash_update +EXPORT_SYMBOL_GPL vmlinux 0x60091316 clk_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x60451013 rio_local_get_device_id +EXPORT_SYMBOL_GPL vmlinux 0x60506751 unmap_kernel_range_noflush +EXPORT_SYMBOL_GPL vmlinux 0x60567e41 tcp_get_info +EXPORT_SYMBOL_GPL vmlinux 0x60885e36 kvmppc_handle_store +EXPORT_SYMBOL_GPL vmlinux 0x60a13e90 rcu_barrier +EXPORT_SYMBOL_GPL vmlinux 0x60a32ea9 pm_power_off +EXPORT_SYMBOL_GPL vmlinux 0x60a3d691 pm_generic_poweroff +EXPORT_SYMBOL_GPL vmlinux 0x60a488af kvm_release_page_clean +EXPORT_SYMBOL_GPL vmlinux 0x60d3a595 net_ns_type_operations +EXPORT_SYMBOL_GPL vmlinux 0x60d8c5f8 of_irq_parse_pci +EXPORT_SYMBOL_GPL vmlinux 0x60e9837a power_supply_register +EXPORT_SYMBOL_GPL vmlinux 0x6137418f clockevents_unbind_device +EXPORT_SYMBOL_GPL vmlinux 0x61782779 da903x_writes +EXPORT_SYMBOL_GPL vmlinux 0x617c2b26 pci_find_ext_capability +EXPORT_SYMBOL_GPL vmlinux 0x61892a5c crypto_register_rng +EXPORT_SYMBOL_GPL vmlinux 0x61a90c54 klist_add_head +EXPORT_SYMBOL_GPL vmlinux 0x61cbb6c4 tty_port_install +EXPORT_SYMBOL_GPL vmlinux 0x61d6d3ee wm8400_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x61f1b0fe led_trigger_unregister +EXPORT_SYMBOL_GPL vmlinux 0x61f29fa7 device_show_ulong +EXPORT_SYMBOL_GPL vmlinux 0x61fdb7f7 vfs_listxattr +EXPORT_SYMBOL_GPL vmlinux 0x6208e493 blkg_conf_prep +EXPORT_SYMBOL_GPL vmlinux 0x622c7922 register_oom_notifier +EXPORT_SYMBOL_GPL vmlinux 0x622e1a85 regulator_list_voltage_linear +EXPORT_SYMBOL_GPL vmlinux 0x6259d94f usb_phy_set_event +EXPORT_SYMBOL_GPL vmlinux 0x626705b5 __rtnl_link_register +EXPORT_SYMBOL_GPL vmlinux 0x6271144d devm_usb_get_phy_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0x6287e7de vma_kernel_pagesize +EXPORT_SYMBOL_GPL vmlinux 0x62b915a6 register_kretprobes +EXPORT_SYMBOL_GPL vmlinux 0x62bd49e9 ata_sas_async_probe +EXPORT_SYMBOL_GPL vmlinux 0x62d59c9e trace_seq_putmem_hex +EXPORT_SYMBOL_GPL vmlinux 0x62f24ff9 usb_get_intf +EXPORT_SYMBOL_GPL vmlinux 0x63150e06 clk_get_parent +EXPORT_SYMBOL_GPL vmlinux 0x633b70f1 get_device +EXPORT_SYMBOL_GPL vmlinux 0x633f1575 mark_page_dirty +EXPORT_SYMBOL_GPL vmlinux 0x634c080b ata_eh_thaw_port +EXPORT_SYMBOL_GPL vmlinux 0x63663519 bdev_write_page +EXPORT_SYMBOL_GPL vmlinux 0x63725a20 sdio_memcpy_fromio +EXPORT_SYMBOL_GPL vmlinux 0x63b0d631 pci_generic_config_write +EXPORT_SYMBOL_GPL vmlinux 0x63c7cf11 inet_putpeer +EXPORT_SYMBOL_GPL vmlinux 0x63ceec97 driver_unregister +EXPORT_SYMBOL_GPL vmlinux 0x63e09426 ahash_free_instance +EXPORT_SYMBOL_GPL vmlinux 0x63f69e41 crypto_attr_alg2 +EXPORT_SYMBOL_GPL vmlinux 0x63f73524 serial8250_do_set_mctrl +EXPORT_SYMBOL_GPL vmlinux 0x63f84b23 spi_async_locked +EXPORT_SYMBOL_GPL vmlinux 0x640f1f6a ata_platform_remove_one +EXPORT_SYMBOL_GPL vmlinux 0x6410e160 ktime_mono_to_any +EXPORT_SYMBOL_GPL vmlinux 0x64256424 visitor32 +EXPORT_SYMBOL_GPL vmlinux 0x6428783a sysfs_chmod_file +EXPORT_SYMBOL_GPL vmlinux 0x6428da4f rh_attach_region +EXPORT_SYMBOL_GPL vmlinux 0x6440e586 tpm_chip_register +EXPORT_SYMBOL_GPL vmlinux 0x6447bad6 irq_domain_xlate_onetwocell +EXPORT_SYMBOL_GPL vmlinux 0x647ef03f inet6_lookup_listener +EXPORT_SYMBOL_GPL vmlinux 0x64863a2b nf_queue_entry_get_refs +EXPORT_SYMBOL_GPL vmlinux 0x6499de6b sock_diag_save_cookie +EXPORT_SYMBOL_GPL vmlinux 0x64b08a89 ata_host_suspend +EXPORT_SYMBOL_GPL vmlinux 0x64ebd48d usb_driver_claim_interface +EXPORT_SYMBOL_GPL vmlinux 0x650ffd29 wait_for_tpm_stat +EXPORT_SYMBOL_GPL vmlinux 0x6524d088 ata_sff_freeze +EXPORT_SYMBOL_GPL vmlinux 0x6525072a watchdog_register_device +EXPORT_SYMBOL_GPL vmlinux 0x6534380b pci_generic_config_write32 +EXPORT_SYMBOL_GPL vmlinux 0x65490816 fuse_do_open +EXPORT_SYMBOL_GPL vmlinux 0x656b2d6a spi_master_resume +EXPORT_SYMBOL_GPL vmlinux 0x65993ef9 blk_mq_cancel_requeue_work +EXPORT_SYMBOL_GPL vmlinux 0x65a2a5c9 component_master_add_with_match +EXPORT_SYMBOL_GPL vmlinux 0x65bbbc78 schedule_hrtimeout_range +EXPORT_SYMBOL_GPL vmlinux 0x65c66bb5 usb_sg_init +EXPORT_SYMBOL_GPL vmlinux 0x65ccb6f0 call_netevent_notifiers +EXPORT_SYMBOL_GPL vmlinux 0x65ce87b0 pm_runtime_enable +EXPORT_SYMBOL_GPL vmlinux 0x65d024fd devfreq_event_add_edev +EXPORT_SYMBOL_GPL vmlinux 0x65d76989 pci_bus_resource_n +EXPORT_SYMBOL_GPL vmlinux 0x65d7f172 usb_hcd_check_unlink_urb +EXPORT_SYMBOL_GPL vmlinux 0x65da46ad ehci_cf_port_reset_rwsem +EXPORT_SYMBOL_GPL vmlinux 0x65daaef3 __clk_mux_determine_rate_closest +EXPORT_SYMBOL_GPL vmlinux 0x65e361a2 pwm_enable +EXPORT_SYMBOL_GPL vmlinux 0x65e658fb get_user_pages_fast +EXPORT_SYMBOL_GPL vmlinux 0x65f80846 crypto_alloc_instance +EXPORT_SYMBOL_GPL vmlinux 0x65f9826f security_kernel_fw_from_file +EXPORT_SYMBOL_GPL vmlinux 0x66076bea shash_register_instance +EXPORT_SYMBOL_GPL vmlinux 0x661601de sprint_symbol +EXPORT_SYMBOL_GPL vmlinux 0x662ade9b cpu_subsys +EXPORT_SYMBOL_GPL vmlinux 0x662b5d83 sysfs_remove_mount_point +EXPORT_SYMBOL_GPL vmlinux 0x6636c3c9 irq_set_vcpu_affinity +EXPORT_SYMBOL_GPL vmlinux 0x663a4535 usb_bulk_msg +EXPORT_SYMBOL_GPL vmlinux 0x663b14ac fb_bl_default_curve +EXPORT_SYMBOL_GPL vmlinux 0x6648c95e smpboot_unregister_percpu_thread +EXPORT_SYMBOL_GPL vmlinux 0x66536bfd da9052_adc_manual_read +EXPORT_SYMBOL_GPL vmlinux 0x667d393e hwrng_register +EXPORT_SYMBOL_GPL vmlinux 0x668402aa crypto_put_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x669da1fd kvm_set_pfn_dirty +EXPORT_SYMBOL_GPL vmlinux 0x66afb53b unix_table_lock +EXPORT_SYMBOL_GPL vmlinux 0x66bdc75d task_active_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0x66c6b8a7 tcp_ca_get_name_by_key +EXPORT_SYMBOL_GPL vmlinux 0x66d3e96f devm_phy_create +EXPORT_SYMBOL_GPL vmlinux 0x66d87d38 symbol_put_addr +EXPORT_SYMBOL_GPL vmlinux 0x66e4d07c usb_hcd_amd_remote_wakeup_quirk +EXPORT_SYMBOL_GPL vmlinux 0x66f952e0 fwnode_property_read_string +EXPORT_SYMBOL_GPL vmlinux 0x671a3eba ehci_setup +EXPORT_SYMBOL_GPL vmlinux 0x672f9e8e tpm2_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x673b5656 bpf_prog_realloc +EXPORT_SYMBOL_GPL vmlinux 0x674e0c83 regulator_map_voltage_linear_range +EXPORT_SYMBOL_GPL vmlinux 0x674e13e1 public_key_destroy +EXPORT_SYMBOL_GPL vmlinux 0x6752db49 tty_buffer_set_limit +EXPORT_SYMBOL_GPL vmlinux 0x67539060 devm_clk_register +EXPORT_SYMBOL_GPL vmlinux 0x6754598e xfrm_audit_state_replay +EXPORT_SYMBOL_GPL vmlinux 0x6754ac18 clk_get_parent_by_index +EXPORT_SYMBOL_GPL vmlinux 0x67684cc7 ipv6_find_tlv +EXPORT_SYMBOL_GPL vmlinux 0x678c659f nvdimm_create +EXPORT_SYMBOL_GPL vmlinux 0x67955ce6 profile_hits +EXPORT_SYMBOL_GPL vmlinux 0x67e47ee7 crypto_alloc_instance2 +EXPORT_SYMBOL_GPL vmlinux 0x67ebf48b vfs_truncate +EXPORT_SYMBOL_GPL vmlinux 0x6812cf8d __tracepoint_rpm_idle +EXPORT_SYMBOL_GPL vmlinux 0x6847daf7 regmap_write_async +EXPORT_SYMBOL_GPL vmlinux 0x684fca2a key_type_trusted +EXPORT_SYMBOL_GPL vmlinux 0x6875be28 ehci_handshake +EXPORT_SYMBOL_GPL vmlinux 0x688a1b26 device_create_file +EXPORT_SYMBOL_GPL vmlinux 0x68956406 static_key_slow_dec +EXPORT_SYMBOL_GPL vmlinux 0x68bb8afc devm_led_classdev_register +EXPORT_SYMBOL_GPL vmlinux 0x68eb1426 regulator_get_linear_step +EXPORT_SYMBOL_GPL vmlinux 0x68fbbfd4 regmap_field_free +EXPORT_SYMBOL_GPL vmlinux 0x69178d01 usb_get_phy +EXPORT_SYMBOL_GPL vmlinux 0x6923ce63 irq_work_sync +EXPORT_SYMBOL_GPL vmlinux 0x69286d19 sysfs_remove_group +EXPORT_SYMBOL_GPL vmlinux 0x692f7312 usb_free_streams +EXPORT_SYMBOL_GPL vmlinux 0x693fe6eb ata_qc_complete +EXPORT_SYMBOL_GPL vmlinux 0x69429d92 pci_load_and_free_saved_state +EXPORT_SYMBOL_GPL vmlinux 0x69447467 ring_buffer_write +EXPORT_SYMBOL_GPL vmlinux 0x6945725e mpi_read_raw_data +EXPORT_SYMBOL_GPL vmlinux 0x69487fe6 sdhci_pci_o2_fujin2_pci_init +EXPORT_SYMBOL_GPL vmlinux 0x69654f5c rhashtable_destroy +EXPORT_SYMBOL_GPL vmlinux 0x6978113e __fsnotify_parent +EXPORT_SYMBOL_GPL vmlinux 0x697c5d0d tracing_snapshot_alloc +EXPORT_SYMBOL_GPL vmlinux 0x697cbbb4 threads_per_core +EXPORT_SYMBOL_GPL vmlinux 0x698031fe bus_find_device_by_name +EXPORT_SYMBOL_GPL vmlinux 0x698047cd devfreq_event_enable_edev +EXPORT_SYMBOL_GPL vmlinux 0x698a899f ring_buffer_peek +EXPORT_SYMBOL_GPL vmlinux 0x69ab121d __srcu_read_lock +EXPORT_SYMBOL_GPL vmlinux 0x69ac1ff3 of_phy_simple_xlate +EXPORT_SYMBOL_GPL vmlinux 0x69c953bd xfrm_output +EXPORT_SYMBOL_GPL vmlinux 0x69d91cf9 firmware_kobj +EXPORT_SYMBOL_GPL vmlinux 0x69e00df6 wm831x_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x69e2f2ec pci_test_config_bits +EXPORT_SYMBOL_GPL vmlinux 0x69ef894a blkg_lookup +EXPORT_SYMBOL_GPL vmlinux 0x69f02a7f reset_controller_unregister +EXPORT_SYMBOL_GPL vmlinux 0x6a034966 udp6_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x6a4ccf85 dm_send_uevents +EXPORT_SYMBOL_GPL vmlinux 0x6a4f623b mmu_notifier_synchronize +EXPORT_SYMBOL_GPL vmlinux 0x6a5fb566 rcu_sched_force_quiescent_state +EXPORT_SYMBOL_GPL vmlinux 0x6a613ca9 raw_seq_next +EXPORT_SYMBOL_GPL vmlinux 0x6a62ea7a pm_generic_resume_noirq +EXPORT_SYMBOL_GPL vmlinux 0x6a842183 sdio_f0_writeb +EXPORT_SYMBOL_GPL vmlinux 0x6a8441be cpci_hp_start +EXPORT_SYMBOL_GPL vmlinux 0x6aa37b53 usb_put_dev +EXPORT_SYMBOL_GPL vmlinux 0x6aa68695 subsys_dev_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x6ab3781f trace_seq_vprintf +EXPORT_SYMBOL_GPL vmlinux 0x6abedb5a cpufreq_register_governor +EXPORT_SYMBOL_GPL vmlinux 0x6ae1bba6 virtqueue_add_sgs +EXPORT_SYMBOL_GPL vmlinux 0x6ae92dd4 device_dma_is_coherent +EXPORT_SYMBOL_GPL vmlinux 0x6b0fd3e9 max8997_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0x6b22d9e7 debugfs_create_size_t +EXPORT_SYMBOL_GPL vmlinux 0x6b29a1fa ring_buffer_event_length +EXPORT_SYMBOL_GPL vmlinux 0x6b3e1478 __mmc_switch +EXPORT_SYMBOL_GPL vmlinux 0x6b48a910 switch_booke_debug_regs +EXPORT_SYMBOL_GPL vmlinux 0x6b5528d0 of_thermal_get_ntrips +EXPORT_SYMBOL_GPL vmlinux 0x6b5f40ba i2c_recover_bus +EXPORT_SYMBOL_GPL vmlinux 0x6b81c38b power_supply_unreg_notifier +EXPORT_SYMBOL_GPL vmlinux 0x6b859ab8 kvmppc_st +EXPORT_SYMBOL_GPL vmlinux 0x6b8b45f3 rt_mutex_destroy +EXPORT_SYMBOL_GPL vmlinux 0x6bbd0695 blkg_prfill_rwstat +EXPORT_SYMBOL_GPL vmlinux 0x6bbd397b vfs_setlease +EXPORT_SYMBOL_GPL vmlinux 0x6c07d933 add_uevent_var +EXPORT_SYMBOL_GPL vmlinux 0x6c209eab __alloc_percpu_gfp +EXPORT_SYMBOL_GPL vmlinux 0x6c3f4650 inet_twsk_schedule +EXPORT_SYMBOL_GPL vmlinux 0x6c4b6684 reset_control_assert +EXPORT_SYMBOL_GPL vmlinux 0x6c4fc861 nd_blk_region_set_provider_data +EXPORT_SYMBOL_GPL vmlinux 0x6c601fdb wm5110_i2c_regmap +EXPORT_SYMBOL_GPL vmlinux 0x6c749afe __tracepoint_block_unplug +EXPORT_SYMBOL_GPL vmlinux 0x6c845e8d phy_pm_runtime_forbid +EXPORT_SYMBOL_GPL vmlinux 0x6c945a4a fb_deferred_io_cleanup +EXPORT_SYMBOL_GPL vmlinux 0x6ca4bf88 async_synchronize_full_domain +EXPORT_SYMBOL_GPL vmlinux 0x6cb083a8 sdhci_pci_o2_resume +EXPORT_SYMBOL_GPL vmlinux 0x6ccf8922 perf_pmu_unregister +EXPORT_SYMBOL_GPL vmlinux 0x6cd21997 ata_tf_to_fis +EXPORT_SYMBOL_GPL vmlinux 0x6ce5df68 scsi_autopm_get_device +EXPORT_SYMBOL_GPL vmlinux 0x6d0b54d6 devfreq_event_get_edev_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0x6d2fc5a6 net_namespace_list +EXPORT_SYMBOL_GPL vmlinux 0x6d30f364 scsi_flush_work +EXPORT_SYMBOL_GPL vmlinux 0x6d93257e to_nd_region +EXPORT_SYMBOL_GPL vmlinux 0x6db223a4 subsys_interface_unregister +EXPORT_SYMBOL_GPL vmlinux 0x6e04a077 usb_bind_phy +EXPORT_SYMBOL_GPL vmlinux 0x6e1c6bef pci_find_next_ext_capability +EXPORT_SYMBOL_GPL vmlinux 0x6e1c7b72 blkcipher_walk_virt_block +EXPORT_SYMBOL_GPL vmlinux 0x6e38e304 stmpe_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x6e3b6170 ata_sff_dma_pause +EXPORT_SYMBOL_GPL vmlinux 0x6e51afc8 percpu_ref_kill_and_confirm +EXPORT_SYMBOL_GPL vmlinux 0x6e51d4ab crypto_alloc_akcipher +EXPORT_SYMBOL_GPL vmlinux 0x6e5ccf85 alarm_restart +EXPORT_SYMBOL_GPL vmlinux 0x6e6006f7 fuse_put_request +EXPORT_SYMBOL_GPL vmlinux 0x6e66bd29 crypto_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x6e6d6c73 of_reserved_mem_device_init +EXPORT_SYMBOL_GPL vmlinux 0x6e790d78 sata_lpm_ignore_phy_events +EXPORT_SYMBOL_GPL vmlinux 0x6e7e27f7 fuse_direct_io +EXPORT_SYMBOL_GPL vmlinux 0x6e89a560 regmap_irq_chip_get_base +EXPORT_SYMBOL_GPL vmlinux 0x6eb58de0 rtnl_link_register +EXPORT_SYMBOL_GPL vmlinux 0x6ec49919 spi_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x6ecd1c1b setup_irq +EXPORT_SYMBOL_GPL vmlinux 0x6ed1a420 __ablkcipher_walk_complete +EXPORT_SYMBOL_GPL vmlinux 0x6ed37da8 crypto_register_shash +EXPORT_SYMBOL_GPL vmlinux 0x6eeaf398 pcibios_claim_one_bus +EXPORT_SYMBOL_GPL vmlinux 0x6ef896b0 security_inode_setattr +EXPORT_SYMBOL_GPL vmlinux 0x6f00b222 fib_table_lookup +EXPORT_SYMBOL_GPL vmlinux 0x6f05e4a4 pci_stop_and_remove_bus_device_locked +EXPORT_SYMBOL_GPL vmlinux 0x6f086991 handle_fasteoi_irq +EXPORT_SYMBOL_GPL vmlinux 0x6f15e7e4 tcp_reno_cong_avoid +EXPORT_SYMBOL_GPL vmlinux 0x6f1df17f dma_buf_put +EXPORT_SYMBOL_GPL vmlinux 0x6f1ee69e kgdb_unregister_io_module +EXPORT_SYMBOL_GPL vmlinux 0x6f2284ae __fsnotify_inode_delete +EXPORT_SYMBOL_GPL vmlinux 0x6f338721 serial8250_clear_and_reinit_fifos +EXPORT_SYMBOL_GPL vmlinux 0x6f352efb irq_alloc_domain_generic_chips +EXPORT_SYMBOL_GPL vmlinux 0x6f4286e1 pwmchip_add_with_polarity +EXPORT_SYMBOL_GPL vmlinux 0x6f82b3a0 rio_route_clr_table +EXPORT_SYMBOL_GPL vmlinux 0x6f851c6b get_kernel_pages +EXPORT_SYMBOL_GPL vmlinux 0x6f8db6bd sdio_writesb +EXPORT_SYMBOL_GPL vmlinux 0x6f95cf59 ata_scsi_queuecmd +EXPORT_SYMBOL_GPL vmlinux 0x6fb70214 nvdimm_name +EXPORT_SYMBOL_GPL vmlinux 0x6fd67be3 cgroup_attach_task_all +EXPORT_SYMBOL_GPL vmlinux 0x6fe3d8cf ktime_add_safe +EXPORT_SYMBOL_GPL vmlinux 0x6ff607b6 crypto_get_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x6ff792c4 __rio_local_write_config_8 +EXPORT_SYMBOL_GPL vmlinux 0x7004ea20 tcp_register_congestion_control +EXPORT_SYMBOL_GPL vmlinux 0x7006dcba uart_handle_cts_change +EXPORT_SYMBOL_GPL vmlinux 0x7056b6f2 __clk_get_name +EXPORT_SYMBOL_GPL vmlinux 0x707a2451 sysfs_create_bin_file +EXPORT_SYMBOL_GPL vmlinux 0x707dd9ae spi_unregister_master +EXPORT_SYMBOL_GPL vmlinux 0x707ff1bb ata_xfer_mask2mode +EXPORT_SYMBOL_GPL vmlinux 0x7094bbde pm_runtime_force_suspend +EXPORT_SYMBOL_GPL vmlinux 0x70b5a87a disable_kprobe +EXPORT_SYMBOL_GPL vmlinux 0x70bb651d __tracepoint_block_rq_remap +EXPORT_SYMBOL_GPL vmlinux 0x70cf032f usb_hcd_irq +EXPORT_SYMBOL_GPL vmlinux 0x70f6a183 mbox_controller_register +EXPORT_SYMBOL_GPL vmlinux 0x71034dd8 unregister_pernet_subsys +EXPORT_SYMBOL_GPL vmlinux 0x71070a8b devm_regulator_bulk_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x710900d2 pm_generic_suspend_noirq +EXPORT_SYMBOL_GPL vmlinux 0x7109454c pcie_update_link_speed +EXPORT_SYMBOL_GPL vmlinux 0x710c73b6 crypto_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x712e2ba3 fat_setattr +EXPORT_SYMBOL_GPL vmlinux 0x713bdecc devres_remove +EXPORT_SYMBOL_GPL vmlinux 0x7156244e ata_wait_register +EXPORT_SYMBOL_GPL vmlinux 0x716265c7 debugfs_initialized +EXPORT_SYMBOL_GPL vmlinux 0x719e17ff clk_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0x71a770d8 inet_ehash_locks_alloc +EXPORT_SYMBOL_GPL vmlinux 0x71b18f59 unregister_kretprobe +EXPORT_SYMBOL_GPL vmlinux 0x71c327fc gpiod_get_value +EXPORT_SYMBOL_GPL vmlinux 0x71dc9998 crypto_il_tab +EXPORT_SYMBOL_GPL vmlinux 0x71f70728 devm_regmap_init_i2c +EXPORT_SYMBOL_GPL vmlinux 0x71f82a0a fl6_merge_options +EXPORT_SYMBOL_GPL vmlinux 0x71f872e1 irq_set_chip_and_handler_name +EXPORT_SYMBOL_GPL vmlinux 0x7208bef6 transport_configure_device +EXPORT_SYMBOL_GPL vmlinux 0x724ad24b ehci_resume +EXPORT_SYMBOL_GPL vmlinux 0x724b44d6 xfrm_audit_state_icvfail +EXPORT_SYMBOL_GPL vmlinux 0x72515d5a snprint_stack_trace +EXPORT_SYMBOL_GPL vmlinux 0x72527656 rhashtable_walk_exit +EXPORT_SYMBOL_GPL vmlinux 0x7267b77f nf_ipv6_ops +EXPORT_SYMBOL_GPL vmlinux 0x72741f25 trace_vbprintk +EXPORT_SYMBOL_GPL vmlinux 0x7278d328 all_vm_events +EXPORT_SYMBOL_GPL vmlinux 0x727ee38b pci_ats_queue_depth +EXPORT_SYMBOL_GPL vmlinux 0x728ffe65 of_get_nand_on_flash_bbt +EXPORT_SYMBOL_GPL vmlinux 0x7298e32c crypto_register_template +EXPORT_SYMBOL_GPL vmlinux 0x72c909b0 sysfs_create_files +EXPORT_SYMBOL_GPL vmlinux 0x72db5031 devm_mdiobus_alloc_size +EXPORT_SYMBOL_GPL vmlinux 0x72f30c40 pci_enable_pasid +EXPORT_SYMBOL_GPL vmlinux 0x72f47d20 alarm_forward_now +EXPORT_SYMBOL_GPL vmlinux 0x730973ea free_vm_area +EXPORT_SYMBOL_GPL vmlinux 0x730c6f4a fuse_conn_put +EXPORT_SYMBOL_GPL vmlinux 0x730f1b78 splice_to_pipe +EXPORT_SYMBOL_GPL vmlinux 0x73269dda relay_file_operations +EXPORT_SYMBOL_GPL vmlinux 0x73510609 fl6_update_dst +EXPORT_SYMBOL_GPL vmlinux 0x738366ed usb_block_urb +EXPORT_SYMBOL_GPL vmlinux 0x738ca346 unregister_net_sysctl_table +EXPORT_SYMBOL_GPL vmlinux 0x73a48b4a ata_sff_std_ports +EXPORT_SYMBOL_GPL vmlinux 0x73b98231 asymmetric_key_generate_id +EXPORT_SYMBOL_GPL vmlinux 0x73bcf878 pm_relax +EXPORT_SYMBOL_GPL vmlinux 0x73c832f2 ata_dev_classify +EXPORT_SYMBOL_GPL vmlinux 0x73d01620 device_property_read_string_array +EXPORT_SYMBOL_GPL vmlinux 0x73d69364 ring_buffer_change_overwrite +EXPORT_SYMBOL_GPL vmlinux 0x73e115b2 devm_of_phy_get +EXPORT_SYMBOL_GPL vmlinux 0x73e39b4d regcache_cache_only +EXPORT_SYMBOL_GPL vmlinux 0x740838a0 extcon_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x74258918 ata_sff_port_intr +EXPORT_SYMBOL_GPL vmlinux 0x7425b6c3 rtnl_register +EXPORT_SYMBOL_GPL vmlinux 0x743a165e ata_pack_xfermask +EXPORT_SYMBOL_GPL vmlinux 0x745aba4f crypto_register_shashes +EXPORT_SYMBOL_GPL vmlinux 0x7464ea38 dev_pm_qos_add_global_notifier +EXPORT_SYMBOL_GPL vmlinux 0x74748c08 dev_pm_put_subsys_data +EXPORT_SYMBOL_GPL vmlinux 0x74871192 __dma_request_channel +EXPORT_SYMBOL_GPL vmlinux 0x74880fa6 vfs_test_lock +EXPORT_SYMBOL_GPL vmlinux 0x748d801a pcap_adc_sync +EXPORT_SYMBOL_GPL vmlinux 0x74b5ea68 lcm_not_zero +EXPORT_SYMBOL_GPL vmlinux 0x74baf17a tracing_is_on +EXPORT_SYMBOL_GPL vmlinux 0x74d013b4 kvm_release_page_dirty +EXPORT_SYMBOL_GPL vmlinux 0x750eb4a0 __pm_relax +EXPORT_SYMBOL_GPL vmlinux 0x7522f3ba irq_modify_status +EXPORT_SYMBOL_GPL vmlinux 0x7578d216 fat_get_dotdot_entry +EXPORT_SYMBOL_GPL vmlinux 0x757dd067 mddev_init +EXPORT_SYMBOL_GPL vmlinux 0x757dff38 crypto_remove_spawns +EXPORT_SYMBOL_GPL vmlinux 0x758a782e blk_fill_rwbs +EXPORT_SYMBOL_GPL vmlinux 0x75ba353f virtqueue_get_vring_size +EXPORT_SYMBOL_GPL vmlinux 0x75bc8391 rio_mport_read_config_16 +EXPORT_SYMBOL_GPL vmlinux 0x75c2b9f1 memalloc_socks +EXPORT_SYMBOL_GPL vmlinux 0x75e7bdbf wait_for_stable_page +EXPORT_SYMBOL_GPL vmlinux 0x75e9db36 cpufreq_governor_dbs +EXPORT_SYMBOL_GPL vmlinux 0x75eb780a led_stop_software_blink +EXPORT_SYMBOL_GPL vmlinux 0x75f2a044 usb_wait_anchor_empty_timeout +EXPORT_SYMBOL_GPL vmlinux 0x7615b58b stmpe_block_read +EXPORT_SYMBOL_GPL vmlinux 0x762c0858 klist_prev +EXPORT_SYMBOL_GPL vmlinux 0x7633c0b0 of_gen_pool_get +EXPORT_SYMBOL_GPL vmlinux 0x763f8834 sock_update_netprioidx +EXPORT_SYMBOL_GPL vmlinux 0x764fbc19 leds_list_lock +EXPORT_SYMBOL_GPL vmlinux 0x765d198e rio_mport_get_efb +EXPORT_SYMBOL_GPL vmlinux 0x7681946c unregister_pm_notifier +EXPORT_SYMBOL_GPL vmlinux 0x76c11910 gpiod_count +EXPORT_SYMBOL_GPL vmlinux 0x76c41534 extcon_get_edev_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0x76d0b5cd blk_mq_register_disk +EXPORT_SYMBOL_GPL vmlinux 0x76d9b876 clk_set_rate +EXPORT_SYMBOL_GPL vmlinux 0x76de2f34 crypto_dequeue_request +EXPORT_SYMBOL_GPL vmlinux 0x76e76da2 usb_create_shared_hcd +EXPORT_SYMBOL_GPL vmlinux 0x76ea5da2 regmap_init_spi +EXPORT_SYMBOL_GPL vmlinux 0x76fa13a1 blk_queue_bypass_end +EXPORT_SYMBOL_GPL vmlinux 0x770b2842 nvdimm_volatile_region_create +EXPORT_SYMBOL_GPL vmlinux 0x770cf981 tpm_send +EXPORT_SYMBOL_GPL vmlinux 0x770d9b00 usb_alloc_dev +EXPORT_SYMBOL_GPL vmlinux 0x7718b440 da903x_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x7724ae0f ata_sff_softreset +EXPORT_SYMBOL_GPL vmlinux 0x7729cbdd task_handoff_register +EXPORT_SYMBOL_GPL vmlinux 0x7754bc11 dm_hold +EXPORT_SYMBOL_GPL vmlinux 0x77559db4 devm_clk_unregister +EXPORT_SYMBOL_GPL vmlinux 0x7757b51a clk_unregister +EXPORT_SYMBOL_GPL vmlinux 0x775a255c kick_process +EXPORT_SYMBOL_GPL vmlinux 0x77752518 mnt_want_write_file +EXPORT_SYMBOL_GPL vmlinux 0x7782781f ata_sff_thaw +EXPORT_SYMBOL_GPL vmlinux 0x778c8848 kvm_io_bus_write +EXPORT_SYMBOL_GPL vmlinux 0x7796a362 __dev_forward_skb +EXPORT_SYMBOL_GPL vmlinux 0x779d2d51 kvm_vcpu_init +EXPORT_SYMBOL_GPL vmlinux 0x77a9fd2f irq_gc_mask_set_bit +EXPORT_SYMBOL_GPL vmlinux 0x77ca7db1 regcache_cache_bypass +EXPORT_SYMBOL_GPL vmlinux 0x77d16e60 sata_std_hardreset +EXPORT_SYMBOL_GPL vmlinux 0x77e76378 crypto_alg_extsize +EXPORT_SYMBOL_GPL vmlinux 0x77f77cb7 devm_usb_get_phy_by_node +EXPORT_SYMBOL_GPL vmlinux 0x77fc9642 __trace_note_message +EXPORT_SYMBOL_GPL vmlinux 0x782e68cd perf_event_refresh +EXPORT_SYMBOL_GPL vmlinux 0x78368c02 dev_pm_opp_get_freq +EXPORT_SYMBOL_GPL vmlinux 0x787dc642 sata_scr_valid +EXPORT_SYMBOL_GPL vmlinux 0x7882f6ae wm831x_reg_unlock +EXPORT_SYMBOL_GPL vmlinux 0x78a88854 gfn_to_page_many_atomic +EXPORT_SYMBOL_GPL vmlinux 0x78ae8175 smp_call_function_single_async +EXPORT_SYMBOL_GPL vmlinux 0x78ff934d device_del +EXPORT_SYMBOL_GPL vmlinux 0x7906dc4b wm831x_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x7911a6dc rio_mport_class +EXPORT_SYMBOL_GPL vmlinux 0x7913741d __tracepoint_mc_event +EXPORT_SYMBOL_GPL vmlinux 0x791b246b remove_irq +EXPORT_SYMBOL_GPL vmlinux 0x7944e0fc tracing_off +EXPORT_SYMBOL_GPL vmlinux 0x794b7271 orderly_reboot +EXPORT_SYMBOL_GPL vmlinux 0x796c2d48 dm_get_md +EXPORT_SYMBOL_GPL vmlinux 0x79c480da rh_dump +EXPORT_SYMBOL_GPL vmlinux 0x79c8d5f5 blk_queue_rq_timed_out +EXPORT_SYMBOL_GPL vmlinux 0x79defbe1 kthread_should_park +EXPORT_SYMBOL_GPL vmlinux 0x79e10a4e spi_new_device +EXPORT_SYMBOL_GPL vmlinux 0x79eaf352 rio_route_add_entry +EXPORT_SYMBOL_GPL vmlinux 0x79ef9c6c device_create_with_groups +EXPORT_SYMBOL_GPL vmlinux 0x79f41d5b try_get_online_cpus +EXPORT_SYMBOL_GPL vmlinux 0x79fc9c64 dev_pm_qos_expose_flags +EXPORT_SYMBOL_GPL vmlinux 0x79fd23cc devm_regulator_unregister +EXPORT_SYMBOL_GPL vmlinux 0x7a29e5f0 trace_seq_bprintf +EXPORT_SYMBOL_GPL vmlinux 0x7a2e4b44 ezx_pcap_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x7a43f76e xhci_run +EXPORT_SYMBOL_GPL vmlinux 0x7a4fee58 devfreq_event_get_event +EXPORT_SYMBOL_GPL vmlinux 0x7a676278 crypto_alloc_ablkcipher +EXPORT_SYMBOL_GPL vmlinux 0x7a7a8476 __rtnl_register +EXPORT_SYMBOL_GPL vmlinux 0x7a944007 rcu_idle_enter +EXPORT_SYMBOL_GPL vmlinux 0x7a9c65a0 da9052_enable_irq +EXPORT_SYMBOL_GPL vmlinux 0x7aa64803 kvm_release_pfn_clean +EXPORT_SYMBOL_GPL vmlinux 0x7ab3ca18 eventfd_ctx_read +EXPORT_SYMBOL_GPL vmlinux 0x7acb8c63 ata_scsi_simulate +EXPORT_SYMBOL_GPL vmlinux 0x7ad3fc08 dev_pm_qos_update_request +EXPORT_SYMBOL_GPL vmlinux 0x7adaf583 kernfs_path +EXPORT_SYMBOL_GPL vmlinux 0x7af9e1bb rt_mutex_lock +EXPORT_SYMBOL_GPL vmlinux 0x7b0f1ab3 ring_buffer_free_read_page +EXPORT_SYMBOL_GPL vmlinux 0x7b1d544d edac_handler_set +EXPORT_SYMBOL_GPL vmlinux 0x7b294398 extcon_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x7b2ef635 watchdog_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0x7b309f87 __bpf_prog_free +EXPORT_SYMBOL_GPL vmlinux 0x7b30b2af crypto_init_shash_spawn +EXPORT_SYMBOL_GPL vmlinux 0x7b4602f6 usb_unpoison_urb +EXPORT_SYMBOL_GPL vmlinux 0x7b5aa067 rtnl_af_unregister +EXPORT_SYMBOL_GPL vmlinux 0x7b5fe284 devm_devfreq_event_remove_edev +EXPORT_SYMBOL_GPL vmlinux 0x7b8a4a87 register_trace_event +EXPORT_SYMBOL_GPL vmlinux 0x7b94c3d1 ata_bmdma_setup +EXPORT_SYMBOL_GPL vmlinux 0x7b9b49e6 list_lru_walk_node +EXPORT_SYMBOL_GPL vmlinux 0x7bbb3b2f ata_cable_ignore +EXPORT_SYMBOL_GPL vmlinux 0x7bd5875d unregister_jprobe +EXPORT_SYMBOL_GPL vmlinux 0x7bde4a61 usb_alloc_urb +EXPORT_SYMBOL_GPL vmlinux 0x7be437d8 devfreq_event_get_edev_count +EXPORT_SYMBOL_GPL vmlinux 0x7c014c74 devres_get +EXPORT_SYMBOL_GPL vmlinux 0x7c0fc7a3 kvmppc_sanity_check +EXPORT_SYMBOL_GPL vmlinux 0x7c346357 pkey_algo +EXPORT_SYMBOL_GPL vmlinux 0x7c45af5d pm_generic_thaw_early +EXPORT_SYMBOL_GPL vmlinux 0x7c4edce1 usb_deregister_device_driver +EXPORT_SYMBOL_GPL vmlinux 0x7c5a01ef crypto_register_rngs +EXPORT_SYMBOL_GPL vmlinux 0x7c742a72 unix_peer_get +EXPORT_SYMBOL_GPL vmlinux 0x7c7ed688 pcibios_alloc_controller +EXPORT_SYMBOL_GPL vmlinux 0x7c9a7371 clk_prepare +EXPORT_SYMBOL_GPL vmlinux 0x7cb4ffc6 __udp6_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x7ccbed02 device_set_wakeup_capable +EXPORT_SYMBOL_GPL vmlinux 0x7cd6f042 cpufreq_get_current_driver +EXPORT_SYMBOL_GPL vmlinux 0x7ce560e1 usb_hcd_unmap_urb_setup_for_dma +EXPORT_SYMBOL_GPL vmlinux 0x7ceaf0d5 generic_handle_irq +EXPORT_SYMBOL_GPL vmlinux 0x7cfa3113 of_usb_host_tpl_support +EXPORT_SYMBOL_GPL vmlinux 0x7d00c65b nd_synchronize +EXPORT_SYMBOL_GPL vmlinux 0x7d1bfa5d usb_unlocked_disable_lpm +EXPORT_SYMBOL_GPL vmlinux 0x7d31e942 of_property_count_elems_of_size +EXPORT_SYMBOL_GPL vmlinux 0x7d561beb sysfs_merge_group +EXPORT_SYMBOL_GPL vmlinux 0x7d59dd46 pm_wq +EXPORT_SYMBOL_GPL vmlinux 0x7d63bbf1 usb_enable_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0x7d6a38a6 gpio_to_desc +EXPORT_SYMBOL_GPL vmlinux 0x7d7769bf thermal_zone_get_temp +EXPORT_SYMBOL_GPL vmlinux 0x7d8360b4 fat_flush_inodes +EXPORT_SYMBOL_GPL vmlinux 0x7d9113f8 of_pci_find_msi_chip_by_node +EXPORT_SYMBOL_GPL vmlinux 0x7d9aa18e __platform_driver_register +EXPORT_SYMBOL_GPL vmlinux 0x7d9f2c00 device_get_child_node_count +EXPORT_SYMBOL_GPL vmlinux 0x7dab26b6 wm831x_isinkv_values +EXPORT_SYMBOL_GPL vmlinux 0x7dace52f n_tty_inherit_ops +EXPORT_SYMBOL_GPL vmlinux 0x7dd12fac register_kprobe +EXPORT_SYMBOL_GPL vmlinux 0x7dda30af unregister_tracepoint_module_notifier +EXPORT_SYMBOL_GPL vmlinux 0x7df28b70 virtqueue_is_broken +EXPORT_SYMBOL_GPL vmlinux 0x7e015db7 devm_regulator_get +EXPORT_SYMBOL_GPL vmlinux 0x7e17ba7b klist_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0x7e2ca598 pci_try_reset_function +EXPORT_SYMBOL_GPL vmlinux 0x7e30dd3b ip6_dst_lookup +EXPORT_SYMBOL_GPL vmlinux 0x7e43c890 virtio_device_restore +EXPORT_SYMBOL_GPL vmlinux 0x7e532819 posix_acl_access_xattr_handler +EXPORT_SYMBOL_GPL vmlinux 0x7e5faba1 irq_get_irq_data +EXPORT_SYMBOL_GPL vmlinux 0x7e64181d usb_calc_bus_time +EXPORT_SYMBOL_GPL vmlinux 0x7e64e513 evm_verifyxattr +EXPORT_SYMBOL_GPL vmlinux 0x7e69b6d7 flush_kthread_work +EXPORT_SYMBOL_GPL vmlinux 0x7e6bc27c sdhci_pci_o2_probe_slot +EXPORT_SYMBOL_GPL vmlinux 0x7ea09664 kvm_vcpu_block +EXPORT_SYMBOL_GPL vmlinux 0x7ef68c81 pci_cfg_access_unlock +EXPORT_SYMBOL_GPL vmlinux 0x7f008202 btree_lookup +EXPORT_SYMBOL_GPL vmlinux 0x7f0a026b page_cache_sync_readahead +EXPORT_SYMBOL_GPL vmlinux 0x7f0cd78f sysfs_remove_file_from_group +EXPORT_SYMBOL_GPL vmlinux 0x7f143b3d irq_gc_ack_set_bit +EXPORT_SYMBOL_GPL vmlinux 0x7f15036e regulator_set_voltage_time_sel +EXPORT_SYMBOL_GPL vmlinux 0x7f25f340 tps65912_clear_bits +EXPORT_SYMBOL_GPL vmlinux 0x7f586c44 kvm_vcpu_gfn_to_hva +EXPORT_SYMBOL_GPL vmlinux 0x7f7bc710 klist_next +EXPORT_SYMBOL_GPL vmlinux 0x7fa53e7c exportfs_encode_inode_fh +EXPORT_SYMBOL_GPL vmlinux 0x7fa86945 of_fixed_factor_clk_setup +EXPORT_SYMBOL_GPL vmlinux 0x8022bddf usb_ep0_reinit +EXPORT_SYMBOL_GPL vmlinux 0x802fbd02 rtnl_link_unregister +EXPORT_SYMBOL_GPL vmlinux 0x80583f7f kvm_vcpu_gfn_to_page +EXPORT_SYMBOL_GPL vmlinux 0x8065a4fc mmu_notifier_call_srcu +EXPORT_SYMBOL_GPL vmlinux 0x8083ff61 clockevents_register_device +EXPORT_SYMBOL_GPL vmlinux 0x808ec1a3 crypto_alg_tested +EXPORT_SYMBOL_GPL vmlinux 0x809cd89f crypto_destroy_tfm +EXPORT_SYMBOL_GPL vmlinux 0x80b6c99a of_pci_address_to_resource +EXPORT_SYMBOL_GPL vmlinux 0x80c68137 nf_log_buf_close +EXPORT_SYMBOL_GPL vmlinux 0x80d5e57a mpi_free +EXPORT_SYMBOL_GPL vmlinux 0x80eb72fa regmap_fields_read +EXPORT_SYMBOL_GPL vmlinux 0x80f002c9 rio_mport_get_physefb +EXPORT_SYMBOL_GPL vmlinux 0x80f3268f __trace_printk +EXPORT_SYMBOL_GPL vmlinux 0x80f92cf7 adp5520_write +EXPORT_SYMBOL_GPL vmlinux 0x8107521f ata_std_bios_param +EXPORT_SYMBOL_GPL vmlinux 0x8113264e pci_restore_ats_state +EXPORT_SYMBOL_GPL vmlinux 0x8114467b cn_netlink_send_mult +EXPORT_SYMBOL_GPL vmlinux 0x811c8f73 dax_fault +EXPORT_SYMBOL_GPL vmlinux 0x811dc334 usb_unregister_notify +EXPORT_SYMBOL_GPL vmlinux 0x8127e3c9 device_property_read_string +EXPORT_SYMBOL_GPL vmlinux 0x8130b07b sdev_evt_send +EXPORT_SYMBOL_GPL vmlinux 0x8131b78d ata_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x813da813 mmc_switch +EXPORT_SYMBOL_GPL vmlinux 0x8149ea54 ata_timing_find_mode +EXPORT_SYMBOL_GPL vmlinux 0x815588a6 clk_enable +EXPORT_SYMBOL_GPL vmlinux 0x81878f83 pci_reset_pri +EXPORT_SYMBOL_GPL vmlinux 0x81a1a577 usb_alloc_coherent +EXPORT_SYMBOL_GPL vmlinux 0x81c4a51b out_of_line_wait_on_bit_timeout +EXPORT_SYMBOL_GPL vmlinux 0x81cc73ac inet_csk_clone_lock +EXPORT_SYMBOL_GPL vmlinux 0x81d40ed4 of_console_check +EXPORT_SYMBOL_GPL vmlinux 0x81dc9d59 gpiod_get_direction +EXPORT_SYMBOL_GPL vmlinux 0x81e9f77f shash_ahash_digest +EXPORT_SYMBOL_GPL vmlinux 0x81ee8424 eventfd_ctx_fileget +EXPORT_SYMBOL_GPL vmlinux 0x81f25435 rhashtable_free_and_destroy +EXPORT_SYMBOL_GPL vmlinux 0x82258e8d crypto_unregister_rngs +EXPORT_SYMBOL_GPL vmlinux 0x822ad4c7 percpu_ref_init +EXPORT_SYMBOL_GPL vmlinux 0x822cafb5 single_release_net +EXPORT_SYMBOL_GPL vmlinux 0x82308ff0 gfn_to_pfn_prot +EXPORT_SYMBOL_GPL vmlinux 0x823276e6 debugfs_create_atomic_t +EXPORT_SYMBOL_GPL vmlinux 0x8244ee4b serial8250_do_startup +EXPORT_SYMBOL_GPL vmlinux 0x826d553d nf_queue_entry_release_refs +EXPORT_SYMBOL_GPL vmlinux 0x827a4aca regulator_get_voltage +EXPORT_SYMBOL_GPL vmlinux 0x8281e859 nf_register_afinfo +EXPORT_SYMBOL_GPL vmlinux 0x8295c5b3 do_unbind_con_driver +EXPORT_SYMBOL_GPL vmlinux 0x829f39b5 __root_device_register +EXPORT_SYMBOL_GPL vmlinux 0x82a236f1 bpf_prog_get +EXPORT_SYMBOL_GPL vmlinux 0x82b872a9 attribute_container_register +EXPORT_SYMBOL_GPL vmlinux 0x82cd9788 of_free_opp_table +EXPORT_SYMBOL_GPL vmlinux 0x82d79b51 sysctl_vfs_cache_pressure +EXPORT_SYMBOL_GPL vmlinux 0x830195c6 ata_sas_port_stop +EXPORT_SYMBOL_GPL vmlinux 0x830609e7 usb_create_hcd +EXPORT_SYMBOL_GPL vmlinux 0x830d25ea ata_port_abort +EXPORT_SYMBOL_GPL vmlinux 0x831851f2 blk_set_queue_dying +EXPORT_SYMBOL_GPL vmlinux 0x833737ce inet6_destroy_sock +EXPORT_SYMBOL_GPL vmlinux 0x834616bb sdev_evt_alloc +EXPORT_SYMBOL_GPL vmlinux 0x835040fb handle_level_irq +EXPORT_SYMBOL_GPL vmlinux 0x8353f5f6 kvmppc_hv_ops +EXPORT_SYMBOL_GPL vmlinux 0x8361fdd2 led_sysfs_enable +EXPORT_SYMBOL_GPL vmlinux 0x836d61d0 atomic_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0x837b057a show_class_attr_string +EXPORT_SYMBOL_GPL vmlinux 0x838996e4 shmem_get_seals +EXPORT_SYMBOL_GPL vmlinux 0x838a6b40 ata_host_alloc_pinfo +EXPORT_SYMBOL_GPL vmlinux 0x838b13e7 ring_buffer_free +EXPORT_SYMBOL_GPL vmlinux 0x839b9702 of_regulator_match +EXPORT_SYMBOL_GPL vmlinux 0x83a5ae2e __tracepoint_rpm_resume +EXPORT_SYMBOL_GPL vmlinux 0x83e0128f devm_extcon_dev_free +EXPORT_SYMBOL_GPL vmlinux 0x83f2a19e usb_reset_device +EXPORT_SYMBOL_GPL vmlinux 0x840282a5 rhashtable_walk_stop +EXPORT_SYMBOL_GPL vmlinux 0x84108cf7 regulator_force_disable +EXPORT_SYMBOL_GPL vmlinux 0x841da239 unregister_jprobes +EXPORT_SYMBOL_GPL vmlinux 0x84450e0f led_trigger_store +EXPORT_SYMBOL_GPL vmlinux 0x84490807 __netpoll_cleanup +EXPORT_SYMBOL_GPL vmlinux 0x845af74b sk_detach_filter +EXPORT_SYMBOL_GPL vmlinux 0x84a0b976 get_task_mm +EXPORT_SYMBOL_GPL vmlinux 0x84b21f8a input_ff_event +EXPORT_SYMBOL_GPL vmlinux 0x84cd7741 mbox_free_channel +EXPORT_SYMBOL_GPL vmlinux 0x84f2f333 of_css +EXPORT_SYMBOL_GPL vmlinux 0x84f829ef devm_regulator_put +EXPORT_SYMBOL_GPL vmlinux 0x85050965 __irq_alloc_descs +EXPORT_SYMBOL_GPL vmlinux 0x8506baa8 clk_unregister_gate +EXPORT_SYMBOL_GPL vmlinux 0x85216155 ezx_pcap_read +EXPORT_SYMBOL_GPL vmlinux 0x85391928 scsi_nl_sock +EXPORT_SYMBOL_GPL vmlinux 0x856629e7 __tracepoint_rpm_return_int +EXPORT_SYMBOL_GPL vmlinux 0x856a1ae0 need_load_eval +EXPORT_SYMBOL_GPL vmlinux 0x856e51be ata_dev_set_feature +EXPORT_SYMBOL_GPL vmlinux 0x8574ca6c gpio_request_array +EXPORT_SYMBOL_GPL vmlinux 0x85aefe35 spi_register_master +EXPORT_SYMBOL_GPL vmlinux 0x85b12f4f bsg_job_done +EXPORT_SYMBOL_GPL vmlinux 0x85b6936a usb_enable_ltm +EXPORT_SYMBOL_GPL vmlinux 0x85c7f674 ring_buffer_normalize_time_stamp +EXPORT_SYMBOL_GPL vmlinux 0x8608ba73 sched_setscheduler +EXPORT_SYMBOL_GPL vmlinux 0x861647e0 securityfs_create_file +EXPORT_SYMBOL_GPL vmlinux 0x8619c00b __tracepoint_kvm_ppc_instr +EXPORT_SYMBOL_GPL vmlinux 0x8622be92 devm_usb_get_phy_dev +EXPORT_SYMBOL_GPL vmlinux 0x8628020e kvm_init +EXPORT_SYMBOL_GPL vmlinux 0x86322c40 wm8997_patch +EXPORT_SYMBOL_GPL vmlinux 0x86530c0e skb_scrub_packet +EXPORT_SYMBOL_GPL vmlinux 0x86566303 ipv4_redirect +EXPORT_SYMBOL_GPL vmlinux 0x8672c796 param_ops_bool_enable_only +EXPORT_SYMBOL_GPL vmlinux 0x86786286 klist_add_behind +EXPORT_SYMBOL_GPL vmlinux 0x868784cb __symbol_get +EXPORT_SYMBOL_GPL vmlinux 0x86b2fdd3 register_kretprobe +EXPORT_SYMBOL_GPL vmlinux 0x86d1f3be kvmppc_kvm_pv +EXPORT_SYMBOL_GPL vmlinux 0x86f0d974 get_cached_msi_msg +EXPORT_SYMBOL_GPL vmlinux 0x86f6b99d synchronize_rcu_expedited +EXPORT_SYMBOL_GPL vmlinux 0x86f8491c tps6586x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x86f8c910 pcap_set_ts_bits +EXPORT_SYMBOL_GPL vmlinux 0x870b24e3 pci_common_swizzle +EXPORT_SYMBOL_GPL vmlinux 0x873fbaea edac_atomic_assert_error +EXPORT_SYMBOL_GPL vmlinux 0x87447e1e trace_seq_to_user +EXPORT_SYMBOL_GPL vmlinux 0x8752ec26 da9052_request_irq +EXPORT_SYMBOL_GPL vmlinux 0x8763601d rio_get_comptag +EXPORT_SYMBOL_GPL vmlinux 0x8765518d spi_alloc_master +EXPORT_SYMBOL_GPL vmlinux 0x87984b16 __tracepoint_cpu_idle +EXPORT_SYMBOL_GPL vmlinux 0x87b746c5 fuse_dev_operations +EXPORT_SYMBOL_GPL vmlinux 0x87eec721 rtc_initialize_alarm +EXPORT_SYMBOL_GPL vmlinux 0x8804af3d usb_anchor_suspend_wakeups +EXPORT_SYMBOL_GPL vmlinux 0x8810ad5e crypto_xor +EXPORT_SYMBOL_GPL vmlinux 0x882b5760 usb_deregister_dev +EXPORT_SYMBOL_GPL vmlinux 0x8856cc9c ip6_sk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x88616c08 tcp_set_state +EXPORT_SYMBOL_GPL vmlinux 0x886ea226 gpiod_set_raw_array_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x8875f325 __fib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x888a4e7e tps6586x_writes +EXPORT_SYMBOL_GPL vmlinux 0x888c3a4f sata_link_scr_lpm +EXPORT_SYMBOL_GPL vmlinux 0x88ab6fe3 kgdb_active +EXPORT_SYMBOL_GPL vmlinux 0x88b5647c trace_clock_local +EXPORT_SYMBOL_GPL vmlinux 0x88b9bfe2 task_user_regset_view +EXPORT_SYMBOL_GPL vmlinux 0x88da6799 usb_hub_clear_tt_buffer +EXPORT_SYMBOL_GPL vmlinux 0x89043dc3 device_attach +EXPORT_SYMBOL_GPL vmlinux 0x89241c1b of_prop_next_string +EXPORT_SYMBOL_GPL vmlinux 0x8924eb1e rcu_force_quiescent_state +EXPORT_SYMBOL_GPL vmlinux 0x893bcb26 rtc_alarm_irq_enable +EXPORT_SYMBOL_GPL vmlinux 0x8976fc2b __mmdrop +EXPORT_SYMBOL_GPL vmlinux 0x899ac8cd to_nd_blk_region +EXPORT_SYMBOL_GPL vmlinux 0x899bb7a7 uprobe_register +EXPORT_SYMBOL_GPL vmlinux 0x89ad7ad0 regmap_field_read +EXPORT_SYMBOL_GPL vmlinux 0x89b58821 raw_unhash_sk +EXPORT_SYMBOL_GPL vmlinux 0x89bbafc6 usb_register_notify +EXPORT_SYMBOL_GPL vmlinux 0x89dbf5b0 list_lru_destroy +EXPORT_SYMBOL_GPL vmlinux 0x8a0ef82c cpufreq_freq_transition_end +EXPORT_SYMBOL_GPL vmlinux 0x8a4b2e80 pm_runtime_set_memalloc_noio +EXPORT_SYMBOL_GPL vmlinux 0x8a554a36 mpc8xxx_spi_strmode +EXPORT_SYMBOL_GPL vmlinux 0x8a9fa1cf blkcg_policy_register +EXPORT_SYMBOL_GPL vmlinux 0x8aa14f54 kobject_get_path +EXPORT_SYMBOL_GPL vmlinux 0x8aac80b9 cpu_add_dev_attr +EXPORT_SYMBOL_GPL vmlinux 0x8ab38443 usb_hcd_platform_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x8abacc47 get_max_files +EXPORT_SYMBOL_GPL vmlinux 0x8ac1f3cf xfrm_inner_extract_output +EXPORT_SYMBOL_GPL vmlinux 0x8ac79547 ehci_suspend +EXPORT_SYMBOL_GPL vmlinux 0x8adb85f8 max8997_write_reg +EXPORT_SYMBOL_GPL vmlinux 0x8afc4b9b fat_detach +EXPORT_SYMBOL_GPL vmlinux 0x8b149c36 clk_is_match +EXPORT_SYMBOL_GPL vmlinux 0x8b19ac7f usb_bus_list_lock +EXPORT_SYMBOL_GPL vmlinux 0x8b44f660 wakeup_source_destroy +EXPORT_SYMBOL_GPL vmlinux 0x8b4e5303 wm8350_device_exit +EXPORT_SYMBOL_GPL vmlinux 0x8b61f786 fuse_dev_alloc +EXPORT_SYMBOL_GPL vmlinux 0x8b709b4f tcp_twsk_unique +EXPORT_SYMBOL_GPL vmlinux 0x8b70e8ea __wake_up_sync_key +EXPORT_SYMBOL_GPL vmlinux 0x8badd235 ip6_sk_dst_lookup_flow +EXPORT_SYMBOL_GPL vmlinux 0x8bc19f8e subsys_dev_iter_next +EXPORT_SYMBOL_GPL vmlinux 0x8be3aacc of_pwm_xlate_with_flags +EXPORT_SYMBOL_GPL vmlinux 0x8c0215f2 pm_system_wakeup +EXPORT_SYMBOL_GPL vmlinux 0x8c03d20c destroy_workqueue +EXPORT_SYMBOL_GPL vmlinux 0x8c1d8be5 pci_reset_slot +EXPORT_SYMBOL_GPL vmlinux 0x8c4c1214 dma_buf_kunmap_atomic +EXPORT_SYMBOL_GPL vmlinux 0x8c507f82 usb_anchor_urb +EXPORT_SYMBOL_GPL vmlinux 0x8c58d655 driver_register +EXPORT_SYMBOL_GPL vmlinux 0x8c613215 irq_domain_add_legacy +EXPORT_SYMBOL_GPL vmlinux 0x8c646600 edac_report_status +EXPORT_SYMBOL_GPL vmlinux 0x8c743fb6 reset_control_status +EXPORT_SYMBOL_GPL vmlinux 0x8c8d14f8 crypto_alloc_base +EXPORT_SYMBOL_GPL vmlinux 0x8c8fd5aa x509_cert_parse +EXPORT_SYMBOL_GPL vmlinux 0x8ce5c5ea crypto_unregister_aead +EXPORT_SYMBOL_GPL vmlinux 0x8cfd8b6c md_run +EXPORT_SYMBOL_GPL vmlinux 0x8d1c1857 ata_sas_port_suspend +EXPORT_SYMBOL_GPL vmlinux 0x8d1db185 fat_fill_super +EXPORT_SYMBOL_GPL vmlinux 0x8d23cd7a of_clk_get_parent_name +EXPORT_SYMBOL_GPL vmlinux 0x8d674f65 crypto_ablkcipher_type +EXPORT_SYMBOL_GPL vmlinux 0x8d6b4060 da903x_read +EXPORT_SYMBOL_GPL vmlinux 0x8d8e87e7 kvm_vcpu_uninit +EXPORT_SYMBOL_GPL vmlinux 0x8d9d2b01 pci_probe_reset_slot +EXPORT_SYMBOL_GPL vmlinux 0x8da01274 kvm_get_pfn +EXPORT_SYMBOL_GPL vmlinux 0x8da22d52 device_rename +EXPORT_SYMBOL_GPL vmlinux 0x8da51257 unix_inq_len +EXPORT_SYMBOL_GPL vmlinux 0x8dbb5813 alarm_cancel +EXPORT_SYMBOL_GPL vmlinux 0x8dc6bf27 dm_accept_partial_bio +EXPORT_SYMBOL_GPL vmlinux 0x8dcaa444 usb_remove_phy +EXPORT_SYMBOL_GPL vmlinux 0x8dce984b usb_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x8dcfee7c wm8350_gpio_config +EXPORT_SYMBOL_GPL vmlinux 0x8ddc6d1f irq_domain_simple_ops +EXPORT_SYMBOL_GPL vmlinux 0x8ddfde84 pci_max_pasids +EXPORT_SYMBOL_GPL vmlinux 0x8de6d6f5 pci_reset_function +EXPORT_SYMBOL_GPL vmlinux 0x8dfd5821 __cookie_v6_init_sequence +EXPORT_SYMBOL_GPL vmlinux 0x8e13ed25 srcu_batches_completed +EXPORT_SYMBOL_GPL vmlinux 0x8e15c866 ata_timing_compute +EXPORT_SYMBOL_GPL vmlinux 0x8e1cd06f kvm_set_pfn_accessed +EXPORT_SYMBOL_GPL vmlinux 0x8e1cda3e fuse_get_req +EXPORT_SYMBOL_GPL vmlinux 0x8e1ed3b1 power_supply_unregister +EXPORT_SYMBOL_GPL vmlinux 0x8e2b25c2 videomode_from_timings +EXPORT_SYMBOL_GPL vmlinux 0x8e37dc5f usb_hcd_map_urb_for_dma +EXPORT_SYMBOL_GPL vmlinux 0x8e3920d1 devres_destroy +EXPORT_SYMBOL_GPL vmlinux 0x8e3dd298 each_symbol_section +EXPORT_SYMBOL_GPL vmlinux 0x8e60df7a __tracepoint_wbc_writepage +EXPORT_SYMBOL_GPL vmlinux 0x8e694fca of_property_read_u32_index +EXPORT_SYMBOL_GPL vmlinux 0x8e899f4a single_open_net +EXPORT_SYMBOL_GPL vmlinux 0x8e96e824 key_type_encrypted +EXPORT_SYMBOL_GPL vmlinux 0x8e9a79ac class_interface_unregister +EXPORT_SYMBOL_GPL vmlinux 0x8ea36fd8 mpc8xxx_spi_tx_buf_u8 +EXPORT_SYMBOL_GPL vmlinux 0x8eb5fad9 of_dma_is_coherent +EXPORT_SYMBOL_GPL vmlinux 0x8ec5b8db tty_init_termios +EXPORT_SYMBOL_GPL vmlinux 0x8ee2302e virtqueue_kick +EXPORT_SYMBOL_GPL vmlinux 0x8f0748af rcu_expedite_gp +EXPORT_SYMBOL_GPL vmlinux 0x8f1acb23 arizona_pm_ops +EXPORT_SYMBOL_GPL vmlinux 0x8f27fc73 __inet_hash_nolisten +EXPORT_SYMBOL_GPL vmlinux 0x8f2d0199 power_supply_changed +EXPORT_SYMBOL_GPL vmlinux 0x8f5ee89f usb_disable_lpm +EXPORT_SYMBOL_GPL vmlinux 0x8f6c8f7d nvdimm_attribute_group +EXPORT_SYMBOL_GPL vmlinux 0x8f6cee77 __round_jiffies_relative +EXPORT_SYMBOL_GPL vmlinux 0x8f73aae1 invalidate_inode_pages2 +EXPORT_SYMBOL_GPL vmlinux 0x8fd3ec22 ata_scsi_change_queue_depth +EXPORT_SYMBOL_GPL vmlinux 0x903ac745 devm_of_phy_get_by_index +EXPORT_SYMBOL_GPL vmlinux 0x903b627c list_lru_isolate_move +EXPORT_SYMBOL_GPL vmlinux 0x90410685 ata_link_online +EXPORT_SYMBOL_GPL vmlinux 0x9045902b devm_remove_action +EXPORT_SYMBOL_GPL vmlinux 0x9062c322 ring_buffer_consume +EXPORT_SYMBOL_GPL vmlinux 0x9064df21 kvm_get_dirty_log +EXPORT_SYMBOL_GPL vmlinux 0x9077d5ea usb_kill_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x907ba8a0 regulator_get +EXPORT_SYMBOL_GPL vmlinux 0x908393e8 regmap_parse_val +EXPORT_SYMBOL_GPL vmlinux 0x90a1004a crypto_has_alg +EXPORT_SYMBOL_GPL vmlinux 0x90a67793 sdio_claim_irq +EXPORT_SYMBOL_GPL vmlinux 0x90ae5fec spi_finalize_current_transfer +EXPORT_SYMBOL_GPL vmlinux 0x90dfed33 usb_remove_hcd +EXPORT_SYMBOL_GPL vmlinux 0x90e6b167 smpboot_update_cpumask_percpu_thread +EXPORT_SYMBOL_GPL vmlinux 0x9122057d of_property_read_u64 +EXPORT_SYMBOL_GPL vmlinux 0x91334be6 wm5102_i2c_regmap +EXPORT_SYMBOL_GPL vmlinux 0x9135ff99 platform_get_irq +EXPORT_SYMBOL_GPL vmlinux 0x915df516 sdio_release_host +EXPORT_SYMBOL_GPL vmlinux 0x916ded5f inet_ctl_sock_create +EXPORT_SYMBOL_GPL vmlinux 0x91769c5a fat_search_long +EXPORT_SYMBOL_GPL vmlinux 0x91774b51 skb_morph +EXPORT_SYMBOL_GPL vmlinux 0x91893441 regulator_allow_bypass +EXPORT_SYMBOL_GPL vmlinux 0x918ad429 ring_buffer_lock_reserve +EXPORT_SYMBOL_GPL vmlinux 0x9191fc64 blk_add_driver_data +EXPORT_SYMBOL_GPL vmlinux 0x91ade5a0 crypto_lookup_skcipher +EXPORT_SYMBOL_GPL vmlinux 0x91c6e5b0 pcap_to_irq +EXPORT_SYMBOL_GPL vmlinux 0x920614e7 reservation_object_wait_timeout_rcu +EXPORT_SYMBOL_GPL vmlinux 0x9206d1cb ata_sff_busy_sleep +EXPORT_SYMBOL_GPL vmlinux 0x9218b854 crypto_shash_finup +EXPORT_SYMBOL_GPL vmlinux 0x921b650a pwm_config +EXPORT_SYMBOL_GPL vmlinux 0x923027be i2c_lock_adapter +EXPORT_SYMBOL_GPL vmlinux 0x924ab08e pwmchip_add +EXPORT_SYMBOL_GPL vmlinux 0x924c46f8 zs_unmap_object +EXPORT_SYMBOL_GPL vmlinux 0x926c212f of_irq_to_resource +EXPORT_SYMBOL_GPL vmlinux 0x9276fbb0 regulator_set_voltage_sel_regmap +EXPORT_SYMBOL_GPL vmlinux 0x92b57248 flush_work +EXPORT_SYMBOL_GPL vmlinux 0x92d31cfb fixed_phy_add +EXPORT_SYMBOL_GPL vmlinux 0x92db8f68 do_trace_rcu_torture_read +EXPORT_SYMBOL_GPL vmlinux 0x92dc18f1 put_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0x92f6e4b6 __ktime_divns +EXPORT_SYMBOL_GPL vmlinux 0x92fabb4b class_for_each_device +EXPORT_SYMBOL_GPL vmlinux 0x931f05d3 ktime_get_raw +EXPORT_SYMBOL_GPL vmlinux 0x93528996 hrtimer_active +EXPORT_SYMBOL_GPL vmlinux 0x9352d373 crypto_unregister_template +EXPORT_SYMBOL_GPL vmlinux 0x935d9d34 ata_port_wait_eh +EXPORT_SYMBOL_GPL vmlinux 0x935fb081 pci_set_pcie_reset_state +EXPORT_SYMBOL_GPL vmlinux 0x9365515e scsi_get_vpd_page +EXPORT_SYMBOL_GPL vmlinux 0x93817ed3 ata_noop_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0x939b57d4 input_class +EXPORT_SYMBOL_GPL vmlinux 0x939ce976 extcon_register_interest +EXPORT_SYMBOL_GPL vmlinux 0x93a2cb47 reserve_pmc_hardware +EXPORT_SYMBOL_GPL vmlinux 0x93aae53f ata_base_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x93e404bb rio_request_outb_mbox +EXPORT_SYMBOL_GPL vmlinux 0x93f25854 netdev_rx_handler_unregister +EXPORT_SYMBOL_GPL vmlinux 0x941b1512 page_endio +EXPORT_SYMBOL_GPL vmlinux 0x941d8dd5 blk_queue_bypass_start +EXPORT_SYMBOL_GPL vmlinux 0x941f2aaa eventfd_ctx_put +EXPORT_SYMBOL_GPL vmlinux 0x943a14d8 __percpu_ida_init +EXPORT_SYMBOL_GPL vmlinux 0x9456babd md_do_sync +EXPORT_SYMBOL_GPL vmlinux 0x9481c342 dma_get_slave_caps +EXPORT_SYMBOL_GPL vmlinux 0x948c41e9 i2c_generic_scl_recovery +EXPORT_SYMBOL_GPL vmlinux 0x94abb745 sprint_oid +EXPORT_SYMBOL_GPL vmlinux 0x94d4e381 isa_bridge_pcidev +EXPORT_SYMBOL_GPL vmlinux 0x94d91a85 wm831x_auxadc_read_uv +EXPORT_SYMBOL_GPL vmlinux 0x94ef4d05 cpci_hp_stop +EXPORT_SYMBOL_GPL vmlinux 0x9504df26 irq_wake_thread +EXPORT_SYMBOL_GPL vmlinux 0x950f4dd6 spi_finalize_current_message +EXPORT_SYMBOL_GPL vmlinux 0x9513e1f9 wm8350_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x951d7e2b device_release_driver +EXPORT_SYMBOL_GPL vmlinux 0x952664c5 do_exit +EXPORT_SYMBOL_GPL vmlinux 0x953e1b9e ktime_get_real_seconds +EXPORT_SYMBOL_GPL vmlinux 0x953e5ee1 of_get_nand_ecc_strength +EXPORT_SYMBOL_GPL vmlinux 0x95420044 rio_mport_write_config_32 +EXPORT_SYMBOL_GPL vmlinux 0x955305b6 md_rdev_init +EXPORT_SYMBOL_GPL vmlinux 0x955b0e2e kthread_worker_fn +EXPORT_SYMBOL_GPL vmlinux 0x956a5acc kvm_vcpu_gfn_to_pfn +EXPORT_SYMBOL_GPL vmlinux 0x95775aa7 thermal_cooling_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x957e04c6 gpiod_get_array +EXPORT_SYMBOL_GPL vmlinux 0x958df3ac zs_free +EXPORT_SYMBOL_GPL vmlinux 0x95962d51 device_for_each_child_reverse +EXPORT_SYMBOL_GPL vmlinux 0x95a488a2 rtc_read_time +EXPORT_SYMBOL_GPL vmlinux 0x95bc9078 btree_free +EXPORT_SYMBOL_GPL vmlinux 0x95cc4945 dev_change_net_namespace +EXPORT_SYMBOL_GPL vmlinux 0x95e0046f sata_async_notification +EXPORT_SYMBOL_GPL vmlinux 0x9621849f ring_buffer_event_data +EXPORT_SYMBOL_GPL vmlinux 0x962c6053 usb_free_coherent +EXPORT_SYMBOL_GPL vmlinux 0x9634fb53 regulator_get_exclusive +EXPORT_SYMBOL_GPL vmlinux 0x96554810 register_keyboard_notifier +EXPORT_SYMBOL_GPL vmlinux 0x9655b911 enable_kprobe +EXPORT_SYMBOL_GPL vmlinux 0x96b00673 nd_cmd_out_size +EXPORT_SYMBOL_GPL vmlinux 0x96b36416 __audit_inode_child +EXPORT_SYMBOL_GPL vmlinux 0x96b754cd part_round_stats +EXPORT_SYMBOL_GPL vmlinux 0x96b78b7a simple_attr_release +EXPORT_SYMBOL_GPL vmlinux 0x96f121a7 dev_pm_opp_remove +EXPORT_SYMBOL_GPL vmlinux 0x9738903d mmu_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0x973aa453 device_find_child +EXPORT_SYMBOL_GPL vmlinux 0x97503a9e rio_unregister_scan +EXPORT_SYMBOL_GPL vmlinux 0x975519c1 asymmetric_key_id_same +EXPORT_SYMBOL_GPL vmlinux 0x97626ec3 wm8350_reg_lock +EXPORT_SYMBOL_GPL vmlinux 0x976fec47 nd_blk_region_provider_data +EXPORT_SYMBOL_GPL vmlinux 0x9788df94 tcp_send_ack +EXPORT_SYMBOL_GPL vmlinux 0x97ba221b scsi_queue_work +EXPORT_SYMBOL_GPL vmlinux 0x97c27765 pci_intx_mask_supported +EXPORT_SYMBOL_GPL vmlinux 0x97ce612c inet6_csk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x97de2b83 debug_locks_silent +EXPORT_SYMBOL_GPL vmlinux 0x97e0c8d7 rdev_get_id +EXPORT_SYMBOL_GPL vmlinux 0x97e414cd skb_complete_wifi_ack +EXPORT_SYMBOL_GPL vmlinux 0x98034407 __clk_determine_rate +EXPORT_SYMBOL_GPL vmlinux 0x98052645 vfs_getxattr +EXPORT_SYMBOL_GPL vmlinux 0x9813d958 rio_request_outb_dbell +EXPORT_SYMBOL_GPL vmlinux 0x98292329 xfrm_audit_policy_add +EXPORT_SYMBOL_GPL vmlinux 0x982cd486 __cookie_v4_init_sequence +EXPORT_SYMBOL_GPL vmlinux 0x9833bc0c hvc_kick +EXPORT_SYMBOL_GPL vmlinux 0x983c7494 rh_detach_region +EXPORT_SYMBOL_GPL vmlinux 0x98413b89 adp5520_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x98417ddb crypto_unregister_pcomp +EXPORT_SYMBOL_GPL vmlinux 0x98503a63 mpi_alloc +EXPORT_SYMBOL_GPL vmlinux 0x98522f58 rt_mutex_trylock +EXPORT_SYMBOL_GPL vmlinux 0x9862e903 of_property_read_string +EXPORT_SYMBOL_GPL vmlinux 0x9879932b crypto_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x98830ffb regulator_list_voltage +EXPORT_SYMBOL_GPL vmlinux 0x98ad949a aead_geniv_alloc +EXPORT_SYMBOL_GPL vmlinux 0x98bc0e29 fat_add_entries +EXPORT_SYMBOL_GPL vmlinux 0x98c5c8fc cn_add_callback +EXPORT_SYMBOL_GPL vmlinux 0x98fa1e20 dm_get_reserved_rq_based_ios +EXPORT_SYMBOL_GPL vmlinux 0x98fcf128 irq_work_queue_on +EXPORT_SYMBOL_GPL vmlinux 0x98feffe2 sata_scr_write_flush +EXPORT_SYMBOL_GPL vmlinux 0x9924c496 __usb_get_extra_descriptor +EXPORT_SYMBOL_GPL vmlinux 0x99274d31 add_to_page_cache_lru +EXPORT_SYMBOL_GPL vmlinux 0x99385a88 tpm2_do_selftest +EXPORT_SYMBOL_GPL vmlinux 0x994b6612 __tracepoint_block_split +EXPORT_SYMBOL_GPL vmlinux 0x9950b78e i2c_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0x995d1071 prof_on +EXPORT_SYMBOL_GPL vmlinux 0x99699d60 sock_diag_unregister +EXPORT_SYMBOL_GPL vmlinux 0x997c4347 unmap_kernel_range +EXPORT_SYMBOL_GPL vmlinux 0x99840d00 timecounter_init +EXPORT_SYMBOL_GPL vmlinux 0x998ddf33 dev_pm_clear_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0x99a9ff9a cpuidle_register_device +EXPORT_SYMBOL_GPL vmlinux 0x99ba91fd ata_link_abort +EXPORT_SYMBOL_GPL vmlinux 0x99cc71c6 sk_clone_lock +EXPORT_SYMBOL_GPL vmlinux 0x99d31b82 cpu_device_create +EXPORT_SYMBOL_GPL vmlinux 0x99d80098 dev_get_regmap +EXPORT_SYMBOL_GPL vmlinux 0x99d95bb0 of_clk_del_provider +EXPORT_SYMBOL_GPL vmlinux 0x9a11a0fc crypto_attr_alg_name +EXPORT_SYMBOL_GPL vmlinux 0x9a170880 irq_find_mapping +EXPORT_SYMBOL_GPL vmlinux 0x9a2cf832 inet_csk_listen_start +EXPORT_SYMBOL_GPL vmlinux 0x9a49d937 __wake_up_locked_key +EXPORT_SYMBOL_GPL vmlinux 0x9a59bc4c dma_buf_kmap_atomic +EXPORT_SYMBOL_GPL vmlinux 0x9a89dbf7 lpddr2_jedec_min_tck +EXPORT_SYMBOL_GPL vmlinux 0x9a987b6c uart_set_options +EXPORT_SYMBOL_GPL vmlinux 0x9aa460cf debugfs_create_u16 +EXPORT_SYMBOL_GPL vmlinux 0x9aad6540 klist_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x9ac4277c crypto_ahash_final +EXPORT_SYMBOL_GPL vmlinux 0x9ad9d0ca debugfs_create_x32 +EXPORT_SYMBOL_GPL vmlinux 0x9aeacb87 ring_buffer_iter_empty +EXPORT_SYMBOL_GPL vmlinux 0x9b0cb19f kvm_vcpu_read_guest_atomic +EXPORT_SYMBOL_GPL vmlinux 0x9b1875a8 pci_cleanup_aer_uncorrect_error_status +EXPORT_SYMBOL_GPL vmlinux 0x9b3de9e3 gpiod_direction_output_raw +EXPORT_SYMBOL_GPL vmlinux 0x9b851d20 irq_alloc_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x9b88c927 ping_queue_rcv_skb +EXPORT_SYMBOL_GPL vmlinux 0x9b8af565 extcon_update_state +EXPORT_SYMBOL_GPL vmlinux 0x9b95be50 ohci_resume +EXPORT_SYMBOL_GPL vmlinux 0x9b992ce1 __pm_runtime_suspend +EXPORT_SYMBOL_GPL vmlinux 0x9b9eb276 pm_generic_restore +EXPORT_SYMBOL_GPL vmlinux 0x9ba9cfb6 gpiod_direction_input +EXPORT_SYMBOL_GPL vmlinux 0x9bbd78a7 generic_fh_to_dentry +EXPORT_SYMBOL_GPL vmlinux 0x9bcbdb99 of_phy_provider_unregister +EXPORT_SYMBOL_GPL vmlinux 0x9bd2a95e bus_register +EXPORT_SYMBOL_GPL vmlinux 0x9be95354 wakeup_source_remove +EXPORT_SYMBOL_GPL vmlinux 0x9bece81b mpi_cmp_ui +EXPORT_SYMBOL_GPL vmlinux 0x9c12dd90 shmem_truncate_range +EXPORT_SYMBOL_GPL vmlinux 0x9c16be4e of_clk_set_defaults +EXPORT_SYMBOL_GPL vmlinux 0x9c245a77 regulator_get_hardware_vsel_register +EXPORT_SYMBOL_GPL vmlinux 0x9c25f4a7 cpufreq_generic_frequency_table_verify +EXPORT_SYMBOL_GPL vmlinux 0x9c2b33c7 da903x_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x9c2cbfcd cpufreq_freq_attr_scaling_available_freqs +EXPORT_SYMBOL_GPL vmlinux 0x9c3b80c6 dm_noflush_suspending +EXPORT_SYMBOL_GPL vmlinux 0x9c41ebfe regmap_multi_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x9c5b32ca crypto_alg_mod_lookup +EXPORT_SYMBOL_GPL vmlinux 0x9c651fe9 disk_map_sector_rcu +EXPORT_SYMBOL_GPL vmlinux 0x9c761e6b __fat_fs_error +EXPORT_SYMBOL_GPL vmlinux 0x9c827647 crypto_hash_walk_first +EXPORT_SYMBOL_GPL vmlinux 0x9cc4f70a register_pm_notifier +EXPORT_SYMBOL_GPL vmlinux 0x9cee57a0 zs_create_pool +EXPORT_SYMBOL_GPL vmlinux 0x9d030b99 stop_machine +EXPORT_SYMBOL_GPL vmlinux 0x9d1dfd24 init_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0x9d34c6c9 pci_store_saved_state +EXPORT_SYMBOL_GPL vmlinux 0x9d411ecf tcp_done +EXPORT_SYMBOL_GPL vmlinux 0x9d8331c0 ring_buffer_read_page +EXPORT_SYMBOL_GPL vmlinux 0x9d876747 blk_mq_request_started +EXPORT_SYMBOL_GPL vmlinux 0x9d9ddf93 reset_control_get +EXPORT_SYMBOL_GPL vmlinux 0x9da5b4a4 sdio_disable_func +EXPORT_SYMBOL_GPL vmlinux 0x9dadbb88 cpufreq_boost_supported +EXPORT_SYMBOL_GPL vmlinux 0x9dd84940 rio_enable_rx_tx_port +EXPORT_SYMBOL_GPL vmlinux 0x9de7f154 mddev_unlock +EXPORT_SYMBOL_GPL vmlinux 0x9dfdf722 gpio_free_array +EXPORT_SYMBOL_GPL vmlinux 0x9e0d5fae regulator_unregister +EXPORT_SYMBOL_GPL vmlinux 0x9e0fd1d6 usb_disable_xhci_ports +EXPORT_SYMBOL_GPL vmlinux 0x9e194782 sysfs_remove_link +EXPORT_SYMBOL_GPL vmlinux 0x9e19d88c __ip_route_output_key +EXPORT_SYMBOL_GPL vmlinux 0x9e2390b7 regmap_raw_read +EXPORT_SYMBOL_GPL vmlinux 0x9e2a932e posix_acl_default_xattr_handler +EXPORT_SYMBOL_GPL vmlinux 0x9e2c114d devm_hwmon_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x9e301660 skb_copy_ubufs +EXPORT_SYMBOL_GPL vmlinux 0x9e38b086 of_usb_get_phy_mode +EXPORT_SYMBOL_GPL vmlinux 0x9e472f5f snmp_fold_field +EXPORT_SYMBOL_GPL vmlinux 0x9e4dfba7 __rio_local_read_config_16 +EXPORT_SYMBOL_GPL vmlinux 0x9e61e506 ip6_datagram_recv_ctl +EXPORT_SYMBOL_GPL vmlinux 0x9e8e11c6 crypto_shash_setkey +EXPORT_SYMBOL_GPL vmlinux 0x9ea53947 of_get_videomode +EXPORT_SYMBOL_GPL vmlinux 0x9ed554b3 unregister_keyboard_notifier +EXPORT_SYMBOL_GPL vmlinux 0x9ee31f2e __kvm_set_memory_region +EXPORT_SYMBOL_GPL vmlinux 0x9efc4bd3 crypto_unregister_shashes +EXPORT_SYMBOL_GPL vmlinux 0x9f07cbde fsl_rio_mcheck_exception +EXPORT_SYMBOL_GPL vmlinux 0x9f099cf6 x509_get_sig_params +EXPORT_SYMBOL_GPL vmlinux 0x9f45be5a usb_register_device_driver +EXPORT_SYMBOL_GPL vmlinux 0x9f4d67a7 i2c_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x9f4e23ae of_irq_get +EXPORT_SYMBOL_GPL vmlinux 0x9f6d88bd blk_mq_free_hctx_request +EXPORT_SYMBOL_GPL vmlinux 0x9f9aab49 of_pci_msi_chip_add +EXPORT_SYMBOL_GPL vmlinux 0x9f9cb1b4 ftrace_set_notrace +EXPORT_SYMBOL_GPL vmlinux 0x9faa0a68 device_show_bool +EXPORT_SYMBOL_GPL vmlinux 0x9fce80db fb_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x9fe939e1 mpi_powm +EXPORT_SYMBOL_GPL vmlinux 0xa0112081 devm_get_free_pages +EXPORT_SYMBOL_GPL vmlinux 0xa0144546 xfrm_local_error +EXPORT_SYMBOL_GPL vmlinux 0xa01f2e20 devfreq_event_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0xa0208e02 irq_set_affinity_hint +EXPORT_SYMBOL_GPL vmlinux 0xa020cf61 regulator_register +EXPORT_SYMBOL_GPL vmlinux 0xa025e00d dma_release_channel +EXPORT_SYMBOL_GPL vmlinux 0xa03c8a01 crypto_unregister_alg +EXPORT_SYMBOL_GPL vmlinux 0xa04498a5 ip_build_and_send_pkt +EXPORT_SYMBOL_GPL vmlinux 0xa079d65c usb_put_intf +EXPORT_SYMBOL_GPL vmlinux 0xa0862034 crypto_ahash_finup +EXPORT_SYMBOL_GPL vmlinux 0xa091d10d fwnode_property_present +EXPORT_SYMBOL_GPL vmlinux 0xa0a27fff pci_address_to_pio +EXPORT_SYMBOL_GPL vmlinux 0xa0c449e0 ata_sas_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0xa0cded78 dma_buf_get +EXPORT_SYMBOL_GPL vmlinux 0xa0ce93fc crypto_aead_type +EXPORT_SYMBOL_GPL vmlinux 0xa0f54807 crypto_drop_spawn +EXPORT_SYMBOL_GPL vmlinux 0xa1167dc4 clk_divider_ops +EXPORT_SYMBOL_GPL vmlinux 0xa1169a5b wm8350_read_auxadc +EXPORT_SYMBOL_GPL vmlinux 0xa127ec83 pci_try_reset_bus +EXPORT_SYMBOL_GPL vmlinux 0xa132712e usb_hcd_link_urb_to_ep +EXPORT_SYMBOL_GPL vmlinux 0xa13e6305 spi_get_device_id +EXPORT_SYMBOL_GPL vmlinux 0xa14bb13d evm_inode_init_security +EXPORT_SYMBOL_GPL vmlinux 0xa14ecddb device_store_ulong +EXPORT_SYMBOL_GPL vmlinux 0xa1557be3 kvm_read_guest_atomic +EXPORT_SYMBOL_GPL vmlinux 0xa15ccfab save_stack_trace_tsk +EXPORT_SYMBOL_GPL vmlinux 0xa15ce5dd ping_recvmsg +EXPORT_SYMBOL_GPL vmlinux 0xa1648044 fuse_request_alloc +EXPORT_SYMBOL_GPL vmlinux 0xa17b1abe pm_generic_suspend_late +EXPORT_SYMBOL_GPL vmlinux 0xa186585c phy_pm_runtime_put_sync +EXPORT_SYMBOL_GPL vmlinux 0xa18f9433 mpi_read_buffer +EXPORT_SYMBOL_GPL vmlinux 0xa1a039a0 xfrm_audit_state_replay_overflow +EXPORT_SYMBOL_GPL vmlinux 0xa1a209f3 cm_notify_event +EXPORT_SYMBOL_GPL vmlinux 0xa1bd7822 __tracepoint_block_bio_complete +EXPORT_SYMBOL_GPL vmlinux 0xa1c593fa exportfs_encode_fh +EXPORT_SYMBOL_GPL vmlinux 0xa1cdea64 sdio_enable_func +EXPORT_SYMBOL_GPL vmlinux 0xa1dc6a2e irq_create_strict_mappings +EXPORT_SYMBOL_GPL vmlinux 0xa237eb26 devm_regmap_init_mmio_clk +EXPORT_SYMBOL_GPL vmlinux 0xa23f67d7 arizona_of_get_type +EXPORT_SYMBOL_GPL vmlinux 0xa244574b ata_port_freeze +EXPORT_SYMBOL_GPL vmlinux 0xa246138d shash_ahash_update +EXPORT_SYMBOL_GPL vmlinux 0xa24f5eee kvm_vcpu_on_spin +EXPORT_SYMBOL_GPL vmlinux 0xa2530d0b gpiod_unexport +EXPORT_SYMBOL_GPL vmlinux 0xa26d9b4f workqueue_congested +EXPORT_SYMBOL_GPL vmlinux 0xa2739b31 trace_event_buffer_reserve +EXPORT_SYMBOL_GPL vmlinux 0xa2891f13 pingv6_ops +EXPORT_SYMBOL_GPL vmlinux 0xa28aaf29 rh_create +EXPORT_SYMBOL_GPL vmlinux 0xa29b3282 ehci_hub_control +EXPORT_SYMBOL_GPL vmlinux 0xa29c3762 pci_num_vf +EXPORT_SYMBOL_GPL vmlinux 0xa2a6ed08 regulator_get_optional +EXPORT_SYMBOL_GPL vmlinux 0xa2b3c77d usb_hub_release_port +EXPORT_SYMBOL_GPL vmlinux 0xa2bafa40 interval_tree_insert +EXPORT_SYMBOL_GPL vmlinux 0xa2d3d1e0 pm_generic_runtime_suspend +EXPORT_SYMBOL_GPL vmlinux 0xa2e659e3 power_supply_put +EXPORT_SYMBOL_GPL vmlinux 0xa2f1451a nd_blk_region_to_dimm +EXPORT_SYMBOL_GPL vmlinux 0xa2f60558 ata_host_register +EXPORT_SYMBOL_GPL vmlinux 0xa316f2ae pm_runtime_allow +EXPORT_SYMBOL_GPL vmlinux 0xa3198e34 clk_register_fixed_rate +EXPORT_SYMBOL_GPL vmlinux 0xa32f29f7 __rio_local_read_config_32 +EXPORT_SYMBOL_GPL vmlinux 0xa342d1d9 dev_pm_opp_find_freq_floor +EXPORT_SYMBOL_GPL vmlinux 0xa34f4e6f __gpiod_get_optional +EXPORT_SYMBOL_GPL vmlinux 0xa35e16dc usb_get_phy_dev +EXPORT_SYMBOL_GPL vmlinux 0xa37c47e0 ata_host_activate +EXPORT_SYMBOL_GPL vmlinux 0xa382bbae gfn_to_pfn +EXPORT_SYMBOL_GPL vmlinux 0xa38602cd drain_workqueue +EXPORT_SYMBOL_GPL vmlinux 0xa389a49a profile_event_register +EXPORT_SYMBOL_GPL vmlinux 0xa3a04602 btree_geo64 +EXPORT_SYMBOL_GPL vmlinux 0xa3a2d9af walk_system_ram_range +EXPORT_SYMBOL_GPL vmlinux 0xa3a41297 of_pci_find_child_device +EXPORT_SYMBOL_GPL vmlinux 0xa3aa8906 class_remove_file_ns +EXPORT_SYMBOL_GPL vmlinux 0xa3b1c8da bsg_request_fn +EXPORT_SYMBOL_GPL vmlinux 0xa3b62646 tty_buffer_space_avail +EXPORT_SYMBOL_GPL vmlinux 0xa3b958ce reset_hung_task_detector +EXPORT_SYMBOL_GPL vmlinux 0xa3c86ac8 regmap_get_val_bytes +EXPORT_SYMBOL_GPL vmlinux 0xa3e7c113 ring_buffer_iter_peek +EXPORT_SYMBOL_GPL vmlinux 0xa3e8fc28 usb_unlink_urb +EXPORT_SYMBOL_GPL vmlinux 0xa3ec7e20 PageHuge +EXPORT_SYMBOL_GPL vmlinux 0xa3f9be32 clk_register_fractional_divider +EXPORT_SYMBOL_GPL vmlinux 0xa404272f rhashtable_walk_init +EXPORT_SYMBOL_GPL vmlinux 0xa4088c20 crypto_larval_lookup +EXPORT_SYMBOL_GPL vmlinux 0xa4251b0e pci_load_saved_state +EXPORT_SYMBOL_GPL vmlinux 0xa4699867 init_user_ns +EXPORT_SYMBOL_GPL vmlinux 0xa4704858 pci_vfs_assigned +EXPORT_SYMBOL_GPL vmlinux 0xa472dae2 pwm_get_chip_data +EXPORT_SYMBOL_GPL vmlinux 0xa48196c8 kdb_poll_idx +EXPORT_SYMBOL_GPL vmlinux 0xa482cc3d proc_mkdir_data +EXPORT_SYMBOL_GPL vmlinux 0xa4a72233 inet_csk_addr2sockaddr +EXPORT_SYMBOL_GPL vmlinux 0xa4d74d45 generic_access_phys +EXPORT_SYMBOL_GPL vmlinux 0xa511e9b8 fuse_dev_release +EXPORT_SYMBOL_GPL vmlinux 0xa52ea3e8 ping_unhash +EXPORT_SYMBOL_GPL vmlinux 0xa5572c58 of_pci_msi_chip_remove +EXPORT_SYMBOL_GPL vmlinux 0xa58d4291 dev_pm_domain_attach +EXPORT_SYMBOL_GPL vmlinux 0xa59e294d blkio_cgrp_subsys +EXPORT_SYMBOL_GPL vmlinux 0xa5aa07ef __module_text_address +EXPORT_SYMBOL_GPL vmlinux 0xa5b00659 ppc_proc_freq +EXPORT_SYMBOL_GPL vmlinux 0xa5b8367d mpic_subsys +EXPORT_SYMBOL_GPL vmlinux 0xa5c03c94 get_cpu_device +EXPORT_SYMBOL_GPL vmlinux 0xa5d0da84 kvm_vcpu_yield_to +EXPORT_SYMBOL_GPL vmlinux 0xa5e35c56 crypto_larval_kill +EXPORT_SYMBOL_GPL vmlinux 0xa5e407e4 wm5110_aod +EXPORT_SYMBOL_GPL vmlinux 0xa5eb70a4 ata_eh_qc_complete +EXPORT_SYMBOL_GPL vmlinux 0xa5efbf4c async_synchronize_full +EXPORT_SYMBOL_GPL vmlinux 0xa5efe460 usb_anchor_resume_wakeups +EXPORT_SYMBOL_GPL vmlinux 0xa5fa82ae inet6_hash_connect +EXPORT_SYMBOL_GPL vmlinux 0xa608f8a3 usb_hcd_unlink_urb_from_ep +EXPORT_SYMBOL_GPL vmlinux 0xa61b7b9c devm_phy_get +EXPORT_SYMBOL_GPL vmlinux 0xa625110d kmsg_dump_rewind +EXPORT_SYMBOL_GPL vmlinux 0xa63c55e1 call_filter_check_discard +EXPORT_SYMBOL_GPL vmlinux 0xa63ce3c8 dax_do_io +EXPORT_SYMBOL_GPL vmlinux 0xa63e4597 fsl_spi_cpm_free +EXPORT_SYMBOL_GPL vmlinux 0xa64cee78 device_initialize +EXPORT_SYMBOL_GPL vmlinux 0xa6576819 fsl_spi_cpm_init +EXPORT_SYMBOL_GPL vmlinux 0xa65b54be ata_pci_device_resume +EXPORT_SYMBOL_GPL vmlinux 0xa67ad91b tty_buffer_request_room +EXPORT_SYMBOL_GPL vmlinux 0xa68ed1da __ata_change_queue_depth +EXPORT_SYMBOL_GPL vmlinux 0xa69884d7 class_dev_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0xa69d0001 sata_pmp_error_handler +EXPORT_SYMBOL_GPL vmlinux 0xa6a91f1d ata_host_resume +EXPORT_SYMBOL_GPL vmlinux 0xa6b21ef2 dpm_suspend_end +EXPORT_SYMBOL_GPL vmlinux 0xa6bb6050 gpiod_get_array_optional +EXPORT_SYMBOL_GPL vmlinux 0xa6e1a69d kick_all_cpus_sync +EXPORT_SYMBOL_GPL vmlinux 0xa75312bc call_rcu_sched +EXPORT_SYMBOL_GPL vmlinux 0xa76a309a wm8350_block_read +EXPORT_SYMBOL_GPL vmlinux 0xa77269c2 list_lru_add +EXPORT_SYMBOL_GPL vmlinux 0xa7af2769 tty_wakeup +EXPORT_SYMBOL_GPL vmlinux 0xa7bf2c8a mpc8xxx_spi_rx_buf_u8 +EXPORT_SYMBOL_GPL vmlinux 0xa7dc26a6 gfn_to_hva +EXPORT_SYMBOL_GPL vmlinux 0xa7e13a6a clk_mux_ro_ops +EXPORT_SYMBOL_GPL vmlinux 0xa7f4248f gpiod_to_chip +EXPORT_SYMBOL_GPL vmlinux 0xa80dc71a platform_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa821a250 kvm_write_guest +EXPORT_SYMBOL_GPL vmlinux 0xa851973a raw_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xa8543a91 i2c_new_dummy +EXPORT_SYMBOL_GPL vmlinux 0xa85aa70c gpiod_set_value +EXPORT_SYMBOL_GPL vmlinux 0xa85c14cb device_destroy +EXPORT_SYMBOL_GPL vmlinux 0xa87a8df6 anon_inode_getfile +EXPORT_SYMBOL_GPL vmlinux 0xa87b6b92 ata_sff_hsm_move +EXPORT_SYMBOL_GPL vmlinux 0xa88eace9 of_fdt_unflatten_tree +EXPORT_SYMBOL_GPL vmlinux 0xa8afaa2e ping_init_sock +EXPORT_SYMBOL_GPL vmlinux 0xa8b76a68 timecounter_cyc2time +EXPORT_SYMBOL_GPL vmlinux 0xa8d7fafd blk_unprep_request +EXPORT_SYMBOL_GPL vmlinux 0xa8e399b9 wakeup_source_register +EXPORT_SYMBOL_GPL vmlinux 0xa8e61b7b spi_add_device +EXPORT_SYMBOL_GPL vmlinux 0xa90141b9 genlmsg_new_unicast +EXPORT_SYMBOL_GPL vmlinux 0xa91603b1 init_srcu_struct +EXPORT_SYMBOL_GPL vmlinux 0xa917f24e clk_register_gpio_gate +EXPORT_SYMBOL_GPL vmlinux 0xa9320d27 ktime_get_seconds +EXPORT_SYMBOL_GPL vmlinux 0xa93750ec __skb_tstamp_tx +EXPORT_SYMBOL_GPL vmlinux 0xa9608c0e rio_release_inb_dbell +EXPORT_SYMBOL_GPL vmlinux 0xa9681c8a sk_setup_caps +EXPORT_SYMBOL_GPL vmlinux 0xa97968af of_get_display_timings +EXPORT_SYMBOL_GPL vmlinux 0xa9796c67 nd_cmd_in_size +EXPORT_SYMBOL_GPL vmlinux 0xa97c2e19 blk_queue_rq_timeout +EXPORT_SYMBOL_GPL vmlinux 0xa980af16 RSA_public_key_algorithm +EXPORT_SYMBOL_GPL vmlinux 0xa990c7c0 find_get_pid +EXPORT_SYMBOL_GPL vmlinux 0xa9a485d9 wm8997_aod +EXPORT_SYMBOL_GPL vmlinux 0xa9aef2e1 gfn_to_hva_memslot +EXPORT_SYMBOL_GPL vmlinux 0xa9beb9c1 trace_seq_path +EXPORT_SYMBOL_GPL vmlinux 0xa9ce3c91 sdio_release_irq +EXPORT_SYMBOL_GPL vmlinux 0xa9d1c681 rio_mport_get_feature +EXPORT_SYMBOL_GPL vmlinux 0xa9dcec15 regmap_get_max_register +EXPORT_SYMBOL_GPL vmlinux 0xa9e18049 task_handoff_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa9ee27c8 regmap_init_i2c +EXPORT_SYMBOL_GPL vmlinux 0xa9f9b1f9 file_ra_state_init +EXPORT_SYMBOL_GPL vmlinux 0xa9fcbc83 rio_route_get_entry +EXPORT_SYMBOL_GPL vmlinux 0xaa17a2e2 rh_alloc_align +EXPORT_SYMBOL_GPL vmlinux 0xaa2390b0 extcon_dev_register +EXPORT_SYMBOL_GPL vmlinux 0xaa2a72bf __iowrite64_copy +EXPORT_SYMBOL_GPL vmlinux 0xaa6cd809 vfs_cancel_lock +EXPORT_SYMBOL_GPL vmlinux 0xaa8a83ad regulator_disable_regmap +EXPORT_SYMBOL_GPL vmlinux 0xaaa918c9 ftrace_dump +EXPORT_SYMBOL_GPL vmlinux 0xaabbcdd8 da903x_reads +EXPORT_SYMBOL_GPL vmlinux 0xaac51ff0 arizona_of_get_named_gpio +EXPORT_SYMBOL_GPL vmlinux 0xaad40189 ata_bmdma_status +EXPORT_SYMBOL_GPL vmlinux 0xaaf6147a bsg_register_queue +EXPORT_SYMBOL_GPL vmlinux 0xaaff3cb7 irq_of_parse_and_map +EXPORT_SYMBOL_GPL vmlinux 0xab0dac8f max_gen_clk_probe +EXPORT_SYMBOL_GPL vmlinux 0xab29ad96 cpuidle_disable_device +EXPORT_SYMBOL_GPL vmlinux 0xab4053f4 regulator_list_hardware_vsel +EXPORT_SYMBOL_GPL vmlinux 0xab4189cb driver_find +EXPORT_SYMBOL_GPL vmlinux 0xab4e6c3e anon_inode_getfd +EXPORT_SYMBOL_GPL vmlinux 0xab59d373 kvmppc_free_lpid +EXPORT_SYMBOL_GPL vmlinux 0xab5a5de4 fixed_phy_del +EXPORT_SYMBOL_GPL vmlinux 0xab5b961b rio_register_mport +EXPORT_SYMBOL_GPL vmlinux 0xab6babaf pm_qos_request +EXPORT_SYMBOL_GPL vmlinux 0xab813dab kobj_sysfs_ops +EXPORT_SYMBOL_GPL vmlinux 0xab945a16 __iowrite32_copy +EXPORT_SYMBOL_GPL vmlinux 0xab98a229 hwmon_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xabb77ec9 skb_zerocopy +EXPORT_SYMBOL_GPL vmlinux 0xabc640f3 list_lru_isolate +EXPORT_SYMBOL_GPL vmlinux 0xac14c2f6 component_master_del +EXPORT_SYMBOL_GPL vmlinux 0xac40b237 __inet_lookup_listener +EXPORT_SYMBOL_GPL vmlinux 0xac477d8a user_preparse +EXPORT_SYMBOL_GPL vmlinux 0xacc933a4 crypto_register_algs +EXPORT_SYMBOL_GPL vmlinux 0xacca06fe dax_zero_page_range +EXPORT_SYMBOL_GPL vmlinux 0xaccbcb1f nd_device_attribute_group +EXPORT_SYMBOL_GPL vmlinux 0xace1de41 ptp_classify_raw +EXPORT_SYMBOL_GPL vmlinux 0xace27dd2 __mnt_is_readonly +EXPORT_SYMBOL_GPL vmlinux 0xace5c0fc usb_bus_list +EXPORT_SYMBOL_GPL vmlinux 0xad063a6f fuse_request_send_background +EXPORT_SYMBOL_GPL vmlinux 0xad0b53c8 platform_device_register_full +EXPORT_SYMBOL_GPL vmlinux 0xad45c48f serial8250_release_dma +EXPORT_SYMBOL_GPL vmlinux 0xad4837aa tty_ldisc_ref_wait +EXPORT_SYMBOL_GPL vmlinux 0xad4fe370 fsstack_copy_inode_size +EXPORT_SYMBOL_GPL vmlinux 0xad54896e usb_root_hub_lost_power +EXPORT_SYMBOL_GPL vmlinux 0xad5bff8f usb_debug_root +EXPORT_SYMBOL_GPL vmlinux 0xad633142 lp8788_read_multi_bytes +EXPORT_SYMBOL_GPL vmlinux 0xadc673c4 pwm_disable +EXPORT_SYMBOL_GPL vmlinux 0xadc785ec kgdb_register_io_module +EXPORT_SYMBOL_GPL vmlinux 0xadd6cd95 ip6_local_out +EXPORT_SYMBOL_GPL vmlinux 0xadedd766 bio_alloc_mddev +EXPORT_SYMBOL_GPL vmlinux 0xadf6aa4d tpm_pcr_read +EXPORT_SYMBOL_GPL vmlinux 0xae07b8c0 ata_pci_sff_activate_host +EXPORT_SYMBOL_GPL vmlinux 0xae11c189 scsi_mode_select +EXPORT_SYMBOL_GPL vmlinux 0xae67c0fe clk_register_fixed_rate_with_accuracy +EXPORT_SYMBOL_GPL vmlinux 0xae69b1c1 usermodehelper_read_unlock +EXPORT_SYMBOL_GPL vmlinux 0xae6f6f00 ata_pci_bmdma_init_one +EXPORT_SYMBOL_GPL vmlinux 0xae7c231d mpi_cmp +EXPORT_SYMBOL_GPL vmlinux 0xae81922b of_overlay_destroy_all +EXPORT_SYMBOL_GPL vmlinux 0xae8aa931 dev_pm_opp_get_voltage +EXPORT_SYMBOL_GPL vmlinux 0xae94fcdd regmap_get_val_endian +EXPORT_SYMBOL_GPL vmlinux 0xaea36012 __pm_runtime_use_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0xaf0d7d05 ata_bmdma_dumb_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0xaf170206 fat_build_inode +EXPORT_SYMBOL_GPL vmlinux 0xaf1c14b0 dm_path_uevent +EXPORT_SYMBOL_GPL vmlinux 0xaf2e8b0a hrtimer_start_range_ns +EXPORT_SYMBOL_GPL vmlinux 0xaf4f4a49 device_reprobe +EXPORT_SYMBOL_GPL vmlinux 0xaf6f6d3d set_cpus_allowed_ptr +EXPORT_SYMBOL_GPL vmlinux 0xaf703f26 rhashtable_insert_slow +EXPORT_SYMBOL_GPL vmlinux 0xaf7c4413 ip4_datagram_release_cb +EXPORT_SYMBOL_GPL vmlinux 0xaf7e21d5 early_find_capability +EXPORT_SYMBOL_GPL vmlinux 0xaf8a9f17 serial8250_tx_chars +EXPORT_SYMBOL_GPL vmlinux 0xafa0cf53 hvc_instantiate +EXPORT_SYMBOL_GPL vmlinux 0xafa9e3f0 crypto_shash_digest +EXPORT_SYMBOL_GPL vmlinux 0xafacfa4e ata_sff_wait_after_reset +EXPORT_SYMBOL_GPL vmlinux 0xafb655de sdio_claim_host +EXPORT_SYMBOL_GPL vmlinux 0xafcb8ca8 of_clk_get_parent_count +EXPORT_SYMBOL_GPL vmlinux 0xafe21070 led_classdev_suspend +EXPORT_SYMBOL_GPL vmlinux 0xb00244cb pci_assign_unassigned_bus_resources +EXPORT_SYMBOL_GPL vmlinux 0xb005b334 kset_create_and_add +EXPORT_SYMBOL_GPL vmlinux 0xb01da058 extcon_set_cable_state_ +EXPORT_SYMBOL_GPL vmlinux 0xb0219dcb dma_buf_attach +EXPORT_SYMBOL_GPL vmlinux 0xb0400c6b add_timer_on +EXPORT_SYMBOL_GPL vmlinux 0xb04feb81 i2c_unlock_adapter +EXPORT_SYMBOL_GPL vmlinux 0xb077e70a clk_unprepare +EXPORT_SYMBOL_GPL vmlinux 0xb07d3f52 bpf_prog_create +EXPORT_SYMBOL_GPL vmlinux 0xb0913148 btree_grim_visitor +EXPORT_SYMBOL_GPL vmlinux 0xb092ebab __udp4_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0xb0b2d3ec gpiod_set_debounce +EXPORT_SYMBOL_GPL vmlinux 0xb0b85f47 ring_buffer_iter_reset +EXPORT_SYMBOL_GPL vmlinux 0xb0c5b139 rtnl_af_register +EXPORT_SYMBOL_GPL vmlinux 0xb0cb0919 skb_append_pagefrags +EXPORT_SYMBOL_GPL vmlinux 0xb0ccc578 system_trusted_keyring +EXPORT_SYMBOL_GPL vmlinux 0xb0d08f67 regcache_mark_dirty +EXPORT_SYMBOL_GPL vmlinux 0xb11f7463 tps65912_reg_read +EXPORT_SYMBOL_GPL vmlinux 0xb140d14c ring_buffer_read +EXPORT_SYMBOL_GPL vmlinux 0xb140dd35 kobject_init_and_add +EXPORT_SYMBOL_GPL vmlinux 0xb1425b32 dm_table_add_target_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xb14bcb63 dev_pm_set_dedicated_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0xb1664aad udp4_hwcsum +EXPORT_SYMBOL_GPL vmlinux 0xb1831992 extcon_dev_unregister +EXPORT_SYMBOL_GPL vmlinux 0xb183d714 ata_link_offline +EXPORT_SYMBOL_GPL vmlinux 0xb18429eb suspend_device_irqs +EXPORT_SYMBOL_GPL vmlinux 0xb194728b __netlink_alloc_skb +EXPORT_SYMBOL_GPL vmlinux 0xb1acbcce rcu_barrier_sched +EXPORT_SYMBOL_GPL vmlinux 0xb1bed25d dpm_resume_start +EXPORT_SYMBOL_GPL vmlinux 0xb1c02ca1 ata_pci_device_do_suspend +EXPORT_SYMBOL_GPL vmlinux 0xb1c0c1c2 async_schedule_domain +EXPORT_SYMBOL_GPL vmlinux 0xb1dd59a2 swiotlb_map_page +EXPORT_SYMBOL_GPL vmlinux 0xb1e25684 __trace_bputs +EXPORT_SYMBOL_GPL vmlinux 0xb1e86f5b thermal_generate_netlink_event +EXPORT_SYMBOL_GPL vmlinux 0xb2210d64 reset_control_deassert +EXPORT_SYMBOL_GPL vmlinux 0xb2256567 register_kprobes +EXPORT_SYMBOL_GPL vmlinux 0xb251eb02 gpiod_to_irq +EXPORT_SYMBOL_GPL vmlinux 0xb2544aec regmap_update_bits_check_async +EXPORT_SYMBOL_GPL vmlinux 0xb2703bf5 blkdev_write_iter +EXPORT_SYMBOL_GPL vmlinux 0xb2892fe9 blk_execute_rq_nowait +EXPORT_SYMBOL_GPL vmlinux 0xb2dec72f preempt_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0xb2ec2ac0 pci_user_read_config_dword +EXPORT_SYMBOL_GPL vmlinux 0xb2f78470 ata_sff_qc_fill_rtf +EXPORT_SYMBOL_GPL vmlinux 0xb303719b dev_attr_link_power_management_policy +EXPORT_SYMBOL_GPL vmlinux 0xb330e4af usb_set_configuration +EXPORT_SYMBOL_GPL vmlinux 0xb33eb4dd inverse_translate +EXPORT_SYMBOL_GPL vmlinux 0xb3970c78 device_create_vargs +EXPORT_SYMBOL_GPL vmlinux 0xb3d08c88 spi_bus_lock +EXPORT_SYMBOL_GPL vmlinux 0xb3db3252 get_pid_task +EXPORT_SYMBOL_GPL vmlinux 0xb3e86267 virtqueue_kick_prepare +EXPORT_SYMBOL_GPL vmlinux 0xb4096685 regulator_map_voltage_iterate +EXPORT_SYMBOL_GPL vmlinux 0xb42c918e of_get_nand_ecc_mode +EXPORT_SYMBOL_GPL vmlinux 0xb488588e tb_to_ns +EXPORT_SYMBOL_GPL vmlinux 0xb4a595e6 unuse_mm +EXPORT_SYMBOL_GPL vmlinux 0xb4b97c90 pvclock_gtod_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xb4c3567d ata_sff_dev_select +EXPORT_SYMBOL_GPL vmlinux 0xb4cf9427 wm8350_clear_bits +EXPORT_SYMBOL_GPL vmlinux 0xb4d07296 of_display_timings_exist +EXPORT_SYMBOL_GPL vmlinux 0xb4ea7cf7 kgdb_connected +EXPORT_SYMBOL_GPL vmlinux 0xb50341ed virtqueue_enable_cb_prepare +EXPORT_SYMBOL_GPL vmlinux 0xb51fbd64 edac_op_state +EXPORT_SYMBOL_GPL vmlinux 0xb528c38d ata_bmdma_qc_issue +EXPORT_SYMBOL_GPL vmlinux 0xb53620d1 pci_vpd_find_info_keyword +EXPORT_SYMBOL_GPL vmlinux 0xb53abd1c spi_sync +EXPORT_SYMBOL_GPL vmlinux 0xb553e017 devres_release_group +EXPORT_SYMBOL_GPL vmlinux 0xb562dece inet_hashinfo_init +EXPORT_SYMBOL_GPL vmlinux 0xb578ac1b gpiod_direction_output +EXPORT_SYMBOL_GPL vmlinux 0xb57b44fa dpm_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0xb58dcfa2 synchronize_sched_expedited +EXPORT_SYMBOL_GPL vmlinux 0xb596f830 debugfs_create_file_size +EXPORT_SYMBOL_GPL vmlinux 0xb5a0e11e lpddr2_jedec_addressing_table +EXPORT_SYMBOL_GPL vmlinux 0xb5aa10af atomic_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0xb5bf4b6d blk_insert_cloned_request +EXPORT_SYMBOL_GPL vmlinux 0xb5c8edf4 btree_init_mempool +EXPORT_SYMBOL_GPL vmlinux 0xb5ce624e regulator_set_bypass_regmap +EXPORT_SYMBOL_GPL vmlinux 0xb5e896fb tpm_get_random +EXPORT_SYMBOL_GPL vmlinux 0xb5ea6469 __init_kthread_worker +EXPORT_SYMBOL_GPL vmlinux 0xb5f17edf perf_register_guest_info_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xb5f1af6f ata_pci_bmdma_prepare_host +EXPORT_SYMBOL_GPL vmlinux 0xb60b5707 of_i8042_aux_irq +EXPORT_SYMBOL_GPL vmlinux 0xb6261484 register_die_notifier +EXPORT_SYMBOL_GPL vmlinux 0xb637ee58 __platform_create_bundle +EXPORT_SYMBOL_GPL vmlinux 0xb6520be8 arizona_dev_init +EXPORT_SYMBOL_GPL vmlinux 0xb669e72a inet6_csk_reqsk_queue_hash_add +EXPORT_SYMBOL_GPL vmlinux 0xb674dbfb crypto_register_alg +EXPORT_SYMBOL_GPL vmlinux 0xb67c64fd __tracepoint_kfree_skb +EXPORT_SYMBOL_GPL vmlinux 0xb67f030f cpufreq_register_driver +EXPORT_SYMBOL_GPL vmlinux 0xb680c16e wm8400_block_read +EXPORT_SYMBOL_GPL vmlinux 0xb689877b ata_msleep +EXPORT_SYMBOL_GPL vmlinux 0xb691037f trace_seq_putc +EXPORT_SYMBOL_GPL vmlinux 0xb69ed058 sock_diag_unregister_inet_compat +EXPORT_SYMBOL_GPL vmlinux 0xb6aa98f8 power_supply_set_property +EXPORT_SYMBOL_GPL vmlinux 0xb6aeb661 ata_id_c_string +EXPORT_SYMBOL_GPL vmlinux 0xb6e496aa crypto_unregister_algs +EXPORT_SYMBOL_GPL vmlinux 0xb6e6d99d clk_disable +EXPORT_SYMBOL_GPL vmlinux 0xb6fbcd6d platform_bus_type +EXPORT_SYMBOL_GPL vmlinux 0xb6fe4ed4 user_free_preparse +EXPORT_SYMBOL_GPL vmlinux 0xb7083257 usb_unlocked_enable_lpm +EXPORT_SYMBOL_GPL vmlinux 0xb70984f8 ata_dev_pair +EXPORT_SYMBOL_GPL vmlinux 0xb72a6028 gov_queue_work +EXPORT_SYMBOL_GPL vmlinux 0xb72e80c8 devm_kfree +EXPORT_SYMBOL_GPL vmlinux 0xb7329c06 clk_set_phase +EXPORT_SYMBOL_GPL vmlinux 0xb7578b48 kthread_park +EXPORT_SYMBOL_GPL vmlinux 0xb77186ad ip6_append_data +EXPORT_SYMBOL_GPL vmlinux 0xb785a53b cpufreq_frequency_table_target +EXPORT_SYMBOL_GPL vmlinux 0xb786e77d percpu_ida_alloc +EXPORT_SYMBOL_GPL vmlinux 0xb79fb656 register_jprobe +EXPORT_SYMBOL_GPL vmlinux 0xb7a341b3 bus_get_device_klist +EXPORT_SYMBOL_GPL vmlinux 0xb7cce10c gfn_to_memslot +EXPORT_SYMBOL_GPL vmlinux 0xb7eab4b6 netlink_remove_tap +EXPORT_SYMBOL_GPL vmlinux 0xb7eac517 tty_port_register_device_attr +EXPORT_SYMBOL_GPL vmlinux 0xb7f77027 rtc_tm_to_ktime +EXPORT_SYMBOL_GPL vmlinux 0xb809b9ee md_ack_all_badblocks +EXPORT_SYMBOL_GPL vmlinux 0xb8405557 blocking_notifier_chain_cond_register +EXPORT_SYMBOL_GPL vmlinux 0xb84b3170 ping_getfrag +EXPORT_SYMBOL_GPL vmlinux 0xb86596cf clockevents_config_and_register +EXPORT_SYMBOL_GPL vmlinux 0xb87fe54a pstore_register +EXPORT_SYMBOL_GPL vmlinux 0xb883206b hwrng_unregister +EXPORT_SYMBOL_GPL vmlinux 0xb88391d2 pci_remove_root_bus +EXPORT_SYMBOL_GPL vmlinux 0xb889011b ata_bmdma32_port_ops +EXPORT_SYMBOL_GPL vmlinux 0xb8cd3a7f nf_logger_put +EXPORT_SYMBOL_GPL vmlinux 0xb8cec737 subsys_dev_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0xb8d931dc tty_put_char +EXPORT_SYMBOL_GPL vmlinux 0xb8fcbe45 perf_pmu_register +EXPORT_SYMBOL_GPL vmlinux 0xb903674c scatterwalk_map_and_copy +EXPORT_SYMBOL_GPL vmlinux 0xb908ed96 alarm_start +EXPORT_SYMBOL_GPL vmlinux 0xb9176155 asn1_ber_decoder +EXPORT_SYMBOL_GPL vmlinux 0xb9360b4f usb_wakeup_notification +EXPORT_SYMBOL_GPL vmlinux 0xb93a1ea1 pm_stay_awake +EXPORT_SYMBOL_GPL vmlinux 0xb9704629 __pm_runtime_set_status +EXPORT_SYMBOL_GPL vmlinux 0xb970ea9b debugfs_create_x64 +EXPORT_SYMBOL_GPL vmlinux 0xb98a3f23 find_vpid +EXPORT_SYMBOL_GPL vmlinux 0xb9b0960b regulator_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0xb9b815a7 devres_add +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 0xb9da2d09 devm_regulator_get_optional +EXPORT_SYMBOL_GPL vmlinux 0xb9f3bea1 fb_deferred_io_init +EXPORT_SYMBOL_GPL vmlinux 0xba25a442 virtqueue_get_avail +EXPORT_SYMBOL_GPL vmlinux 0xba289008 disk_part_iter_next +EXPORT_SYMBOL_GPL vmlinux 0xba2b7f64 cpufreq_generic_get +EXPORT_SYMBOL_GPL vmlinux 0xba391916 subsys_virtual_register +EXPORT_SYMBOL_GPL vmlinux 0xba5e4152 gen_pool_get +EXPORT_SYMBOL_GPL vmlinux 0xba7ec59f dax_clear_blocks +EXPORT_SYMBOL_GPL vmlinux 0xba7f7f04 of_dma_router_register +EXPORT_SYMBOL_GPL vmlinux 0xba8929ea percpu_ref_reinit +EXPORT_SYMBOL_GPL vmlinux 0xba8c65e8 blk_lld_busy +EXPORT_SYMBOL_GPL vmlinux 0xbaa35cce crypto_init_spawn2 +EXPORT_SYMBOL_GPL vmlinux 0xbaa8a9ae usb_find_alt_setting +EXPORT_SYMBOL_GPL vmlinux 0xbab9a9f0 maxim_charger_currents +EXPORT_SYMBOL_GPL vmlinux 0xbadac1b8 debugfs_remove_recursive +EXPORT_SYMBOL_GPL vmlinux 0xbae11419 replace_page_cache_page +EXPORT_SYMBOL_GPL vmlinux 0xbb018729 blk_mq_freeze_queue_start +EXPORT_SYMBOL_GPL vmlinux 0xbb038ce4 perf_unregister_guest_info_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xbb0ab47b debug_locks +EXPORT_SYMBOL_GPL vmlinux 0xbb10437c rio_attach_device +EXPORT_SYMBOL_GPL vmlinux 0xbb151923 of_reconfig_get_state_change +EXPORT_SYMBOL_GPL vmlinux 0xbb1d9fd5 rtc_set_alarm +EXPORT_SYMBOL_GPL vmlinux 0xbb1dd8df __rio_local_read_config_8 +EXPORT_SYMBOL_GPL vmlinux 0xbb1f9529 driver_create_file +EXPORT_SYMBOL_GPL vmlinux 0xbb35d683 fat_alloc_new_dir +EXPORT_SYMBOL_GPL vmlinux 0xbb416cb6 platform_driver_unregister +EXPORT_SYMBOL_GPL vmlinux 0xbb461685 kvmppc_prepare_to_enter +EXPORT_SYMBOL_GPL vmlinux 0xbb5771cc ata_sff_postreset +EXPORT_SYMBOL_GPL vmlinux 0xbb7cf9cb jump_label_rate_limit +EXPORT_SYMBOL_GPL vmlinux 0xbb802b4d __sock_recv_wifi_status +EXPORT_SYMBOL_GPL vmlinux 0xbb84cb92 usb_hcd_resume_root_hub +EXPORT_SYMBOL_GPL vmlinux 0xbbb0afe0 relay_subbufs_consumed +EXPORT_SYMBOL_GPL vmlinux 0xbbb25229 device_remove_file +EXPORT_SYMBOL_GPL vmlinux 0xbbc4861e ping_err +EXPORT_SYMBOL_GPL vmlinux 0xbbcdf419 sk_attach_filter +EXPORT_SYMBOL_GPL vmlinux 0xbbd07378 rio_request_inb_dbell +EXPORT_SYMBOL_GPL vmlinux 0xbbd7dc4c dm_get_queue_limits +EXPORT_SYMBOL_GPL vmlinux 0xbc026d15 __pci_complete_power_transition +EXPORT_SYMBOL_GPL vmlinux 0xbc2f22b7 virtqueue_enable_cb +EXPORT_SYMBOL_GPL vmlinux 0xbc442b86 xhci_gen_setup +EXPORT_SYMBOL_GPL vmlinux 0xbc4e348e nvdimm_provider_data +EXPORT_SYMBOL_GPL vmlinux 0xbc6ec883 dma_buf_mmap +EXPORT_SYMBOL_GPL vmlinux 0xbc77d755 hvc_alloc +EXPORT_SYMBOL_GPL vmlinux 0xbc9798c3 irq_find_host +EXPORT_SYMBOL_GPL vmlinux 0xbcac6160 pm_qos_remove_notifier +EXPORT_SYMBOL_GPL vmlinux 0xbcbf0e97 platform_device_add +EXPORT_SYMBOL_GPL vmlinux 0xbcd9ae6e of_cpufreq_cooling_register +EXPORT_SYMBOL_GPL vmlinux 0xbcea5205 devm_kmemdup +EXPORT_SYMBOL_GPL vmlinux 0xbcf265be serial8250_rpm_get +EXPORT_SYMBOL_GPL vmlinux 0xbd0727e8 sdio_register_driver +EXPORT_SYMBOL_GPL vmlinux 0xbd1eb022 simple_attr_read +EXPORT_SYMBOL_GPL vmlinux 0xbd214d71 rio_map_inb_region +EXPORT_SYMBOL_GPL vmlinux 0xbd292159 rhashtable_init +EXPORT_SYMBOL_GPL vmlinux 0xbd3fe1e3 disable_hardirq +EXPORT_SYMBOL_GPL vmlinux 0xbd432942 con_debug_enter +EXPORT_SYMBOL_GPL vmlinux 0xbd45b090 locks_alloc_lock +EXPORT_SYMBOL_GPL vmlinux 0xbd5cb8b9 ring_buffer_resize +EXPORT_SYMBOL_GPL vmlinux 0xbd60ffc1 ata_sas_port_start +EXPORT_SYMBOL_GPL vmlinux 0xbd76858f ata_pci_sff_init_one +EXPORT_SYMBOL_GPL vmlinux 0xbd835c02 tcp_ca_openreq_child +EXPORT_SYMBOL_GPL vmlinux 0xbda2e75f devres_remove_group +EXPORT_SYMBOL_GPL vmlinux 0xbdb0040b __pci_reset_function_locked +EXPORT_SYMBOL_GPL vmlinux 0xbdd295f0 trace_vprintk +EXPORT_SYMBOL_GPL vmlinux 0xbdd2f42a rcu_bh_force_quiescent_state +EXPORT_SYMBOL_GPL vmlinux 0xbde2dd14 ata_bmdma_error_handler +EXPORT_SYMBOL_GPL vmlinux 0xbe130d55 ping_bind +EXPORT_SYMBOL_GPL vmlinux 0xbe1887e4 ata_unpack_xfermask +EXPORT_SYMBOL_GPL vmlinux 0xbe687e88 wake_up_all_idle_cpus +EXPORT_SYMBOL_GPL vmlinux 0xbe6eaa20 crypto_register_instance +EXPORT_SYMBOL_GPL vmlinux 0xbe96d155 usb_register_dev +EXPORT_SYMBOL_GPL vmlinux 0xbe96dfd8 of_reconfig_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0xbe9a3c94 dev_pm_opp_add +EXPORT_SYMBOL_GPL vmlinux 0xbea5ff1e static_key_initialized +EXPORT_SYMBOL_GPL vmlinux 0xbea714cd irq_domain_xlate_onecell +EXPORT_SYMBOL_GPL vmlinux 0xbea77aad arizona_free_irq +EXPORT_SYMBOL_GPL vmlinux 0xbeb28d25 platform_add_devices +EXPORT_SYMBOL_GPL vmlinux 0xbeb739cf nd_numa_attribute_group +EXPORT_SYMBOL_GPL vmlinux 0xbeb8e92a power_supply_get_property +EXPORT_SYMBOL_GPL vmlinux 0xbebc2c8a pci_restore_msi_state +EXPORT_SYMBOL_GPL vmlinux 0xbed6b52e ata_sas_port_init +EXPORT_SYMBOL_GPL vmlinux 0xbee21107 dm_internal_suspend_noflush +EXPORT_SYMBOL_GPL vmlinux 0xbf016ac0 debugfs_create_blob +EXPORT_SYMBOL_GPL vmlinux 0xbf041102 register_vt_notifier +EXPORT_SYMBOL_GPL vmlinux 0xbf1cc04b tty_termios_encode_baud_rate +EXPORT_SYMBOL_GPL vmlinux 0xbf23da55 cpufreq_driver_target +EXPORT_SYMBOL_GPL vmlinux 0xbf3ab9fa rio_get_asm +EXPORT_SYMBOL_GPL vmlinux 0xbf4fa588 pm_wakeup_event +EXPORT_SYMBOL_GPL vmlinux 0xbf54291b ahash_register_instance +EXPORT_SYMBOL_GPL vmlinux 0xbf6d0527 of_get_regulator_init_data +EXPORT_SYMBOL_GPL vmlinux 0xbfac3fb2 tty_port_tty_wakeup +EXPORT_SYMBOL_GPL vmlinux 0xbfb75c07 ata_sff_prereset +EXPORT_SYMBOL_GPL vmlinux 0xbfbc5434 pciserial_resume_ports +EXPORT_SYMBOL_GPL vmlinux 0xbfdbe151 pm_generic_freeze_late +EXPORT_SYMBOL_GPL vmlinux 0xbfe5616d tick_broadcast_oneshot_control +EXPORT_SYMBOL_GPL vmlinux 0xbfe68c4d regmap_init +EXPORT_SYMBOL_GPL vmlinux 0xc00131cf visitor64 +EXPORT_SYMBOL_GPL vmlinux 0xc0046d92 device_bind_driver +EXPORT_SYMBOL_GPL vmlinux 0xc007d02d gfn_to_page +EXPORT_SYMBOL_GPL vmlinux 0xc02bec3c usb_unlink_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0xc0517d43 gpiod_get_raw_value +EXPORT_SYMBOL_GPL vmlinux 0xc061367e mpic_msgr_get +EXPORT_SYMBOL_GPL vmlinux 0xc065a455 cpu_core_index_of_thread +EXPORT_SYMBOL_GPL vmlinux 0xc06738e8 kvm_vcpu_read_guest_page +EXPORT_SYMBOL_GPL vmlinux 0xc08647ff ring_buffer_bytes_cpu +EXPORT_SYMBOL_GPL vmlinux 0xc08df632 sysfs_remove_file_ns +EXPORT_SYMBOL_GPL vmlinux 0xc0a96e14 rcu_gp_is_expedited +EXPORT_SYMBOL_GPL vmlinux 0xc0b22285 __nvdimm_bus_register +EXPORT_SYMBOL_GPL vmlinux 0xc0cf9c3a fuse_request_send +EXPORT_SYMBOL_GPL vmlinux 0xc0d26387 kmsg_dump_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc0de65ec ping_seq_stop +EXPORT_SYMBOL_GPL vmlinux 0xc0df8865 timerqueue_add +EXPORT_SYMBOL_GPL vmlinux 0xc0e75cec visitor128 +EXPORT_SYMBOL_GPL vmlinux 0xc0f11ee8 __mmu_notifier_invalidate_range +EXPORT_SYMBOL_GPL vmlinux 0xc0f5c996 clk_register_fixed_factor +EXPORT_SYMBOL_GPL vmlinux 0xc100ae0e clockevent_delta2ns +EXPORT_SYMBOL_GPL vmlinux 0xc12d240f crypto_register_pcomp +EXPORT_SYMBOL_GPL vmlinux 0xc13515ab driver_remove_file +EXPORT_SYMBOL_GPL vmlinux 0xc143e384 devm_regulator_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0xc157ed8b usb_disable_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0xc1700f16 x509_request_asymmetric_key +EXPORT_SYMBOL_GPL vmlinux 0xc170e8fb raw_seq_start +EXPORT_SYMBOL_GPL vmlinux 0xc17515d7 usb_hcds_loaded +EXPORT_SYMBOL_GPL vmlinux 0xc18578ed process_srcu +EXPORT_SYMBOL_GPL vmlinux 0xc1ae32f0 ata_eh_analyze_ncq_error +EXPORT_SYMBOL_GPL vmlinux 0xc1d8fe8a tty_register_device_attr +EXPORT_SYMBOL_GPL vmlinux 0xc1eb23a4 register_ftrace_function +EXPORT_SYMBOL_GPL vmlinux 0xc1eb9f0b pm_runtime_no_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xc1fcb1f2 dev_pm_qos_remove_notifier +EXPORT_SYMBOL_GPL vmlinux 0xc22a3091 vm_unmap_aliases +EXPORT_SYMBOL_GPL vmlinux 0xc236468f fixed_phy_register +EXPORT_SYMBOL_GPL vmlinux 0xc239d905 debugfs_create_regset32 +EXPORT_SYMBOL_GPL vmlinux 0xc24a4673 of_property_match_string +EXPORT_SYMBOL_GPL vmlinux 0xc24c6197 power_supply_powers +EXPORT_SYMBOL_GPL vmlinux 0xc24eb444 ata_wait_after_reset +EXPORT_SYMBOL_GPL vmlinux 0xc2576a07 pm_generic_runtime_resume +EXPORT_SYMBOL_GPL vmlinux 0xc280fb46 kdb_register +EXPORT_SYMBOL_GPL vmlinux 0xc2a06664 of_get_phy_mode +EXPORT_SYMBOL_GPL vmlinux 0xc2a8ed87 component_del +EXPORT_SYMBOL_GPL vmlinux 0xc2c25342 usb_poison_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0xc2e728dc ata_sff_queue_delayed_work +EXPORT_SYMBOL_GPL vmlinux 0xc2f6b37a gpiochip_find +EXPORT_SYMBOL_GPL vmlinux 0xc3305d35 gpiod_put +EXPORT_SYMBOL_GPL vmlinux 0xc33ca20f irq_setup_alt_chip +EXPORT_SYMBOL_GPL vmlinux 0xc341ae6d zs_map_object +EXPORT_SYMBOL_GPL vmlinux 0xc35e51a7 usb_reset_configuration +EXPORT_SYMBOL_GPL vmlinux 0xc37226a5 tpm_pcr_extend +EXPORT_SYMBOL_GPL vmlinux 0xc3b354f1 dummy_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0xc3dfb453 xfrm_audit_state_notfound_simple +EXPORT_SYMBOL_GPL vmlinux 0xc3ec84f6 usb_hcd_pci_shutdown +EXPORT_SYMBOL_GPL vmlinux 0xc4096bbe find_module +EXPORT_SYMBOL_GPL vmlinux 0xc40aff3a fsl_spi_cpm_bufs_complete +EXPORT_SYMBOL_GPL vmlinux 0xc428068d sata_deb_timing_long +EXPORT_SYMBOL_GPL vmlinux 0xc44c1960 crypto_grab_spawn +EXPORT_SYMBOL_GPL vmlinux 0xc44ef61e dma_buf_map_attachment +EXPORT_SYMBOL_GPL vmlinux 0xc45148da disk_part_iter_init +EXPORT_SYMBOL_GPL vmlinux 0xc454fc7b twl_get_type +EXPORT_SYMBOL_GPL vmlinux 0xc471c67a twl4030_audio_disable_resource +EXPORT_SYMBOL_GPL vmlinux 0xc48b7ccf ata_mode_string +EXPORT_SYMBOL_GPL vmlinux 0xc48cee5b mmc_regulator_set_ocr +EXPORT_SYMBOL_GPL vmlinux 0xc499b7a5 regmap_reinit_cache +EXPORT_SYMBOL_GPL vmlinux 0xc4b57204 crypto_init_ahash_spawn +EXPORT_SYMBOL_GPL vmlinux 0xc4f011ec crypto_unregister_aeads +EXPORT_SYMBOL_GPL vmlinux 0xc503695f crypto_unregister_ahash +EXPORT_SYMBOL_GPL vmlinux 0xc50f5a08 usb_store_new_id +EXPORT_SYMBOL_GPL vmlinux 0xc5180615 ata_sas_port_destroy +EXPORT_SYMBOL_GPL vmlinux 0xc54055bd inet_csk_route_req +EXPORT_SYMBOL_GPL vmlinux 0xc542933a timecounter_read +EXPORT_SYMBOL_GPL vmlinux 0xc54e639c sock_diag_put_meminfo +EXPORT_SYMBOL_GPL vmlinux 0xc55eb757 platform_get_resource +EXPORT_SYMBOL_GPL vmlinux 0xc5612615 gpiod_set_array_value +EXPORT_SYMBOL_GPL vmlinux 0xc5694468 gpiod_set_raw_value +EXPORT_SYMBOL_GPL vmlinux 0xc575c737 debug_locks_off +EXPORT_SYMBOL_GPL vmlinux 0xc58f9a81 attribute_container_find_class_device +EXPORT_SYMBOL_GPL vmlinux 0xc596f15e crypto_nivaead_type +EXPORT_SYMBOL_GPL vmlinux 0xc5a2c19f idr_alloc +EXPORT_SYMBOL_GPL vmlinux 0xc5ae3c45 regmap_register_patch +EXPORT_SYMBOL_GPL vmlinux 0xc5b4fb93 virtqueue_get_buf +EXPORT_SYMBOL_GPL vmlinux 0xc5e0a77a irq_set_chained_handler_and_data +EXPORT_SYMBOL_GPL vmlinux 0xc5ef0513 inet6_csk_xmit +EXPORT_SYMBOL_GPL vmlinux 0xc5f52207 __put_task_struct +EXPORT_SYMBOL_GPL vmlinux 0xc5fdf4ec kernfs_get +EXPORT_SYMBOL_GPL vmlinux 0xc606cd3c boot_cpuid +EXPORT_SYMBOL_GPL vmlinux 0xc617f82c unregister_oom_notifier +EXPORT_SYMBOL_GPL vmlinux 0xc61bd55b rio_release_inb_mbox +EXPORT_SYMBOL_GPL vmlinux 0xc6333695 shash_ahash_finup +EXPORT_SYMBOL_GPL vmlinux 0xc63d847d ktime_get_mono_fast_ns +EXPORT_SYMBOL_GPL vmlinux 0xc652e289 handle_simple_irq +EXPORT_SYMBOL_GPL vmlinux 0xc65d3eed ring_buffer_entries_cpu +EXPORT_SYMBOL_GPL vmlinux 0xc65f95fe wm8400_reset_codec_reg_cache +EXPORT_SYMBOL_GPL vmlinux 0xc680340b sched_setattr +EXPORT_SYMBOL_GPL vmlinux 0xc68a9782 __i2c_board_lock +EXPORT_SYMBOL_GPL vmlinux 0xc68aa252 __atomic_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xc68c8fc1 crypto_register_akcipher +EXPORT_SYMBOL_GPL vmlinux 0xc698a1a8 gpiod_get_raw_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0xc69b7ee5 zs_destroy_pool +EXPORT_SYMBOL_GPL vmlinux 0xc69cea6b tty_ldisc_deref +EXPORT_SYMBOL_GPL vmlinux 0xc6a4a872 __clk_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0xc6b675ac swiotlb_tbl_map_single +EXPORT_SYMBOL_GPL vmlinux 0xc6b730a8 crypto_blkcipher_type +EXPORT_SYMBOL_GPL vmlinux 0xc6c0aba3 clk_fractional_divider_ops +EXPORT_SYMBOL_GPL vmlinux 0xc6d7cfab scsi_target_unblock +EXPORT_SYMBOL_GPL vmlinux 0xc6ebd4cd pm_generic_resume +EXPORT_SYMBOL_GPL vmlinux 0xc6fdc654 of_phy_get +EXPORT_SYMBOL_GPL vmlinux 0xc70e4b59 kvmppc_claim_lpid +EXPORT_SYMBOL_GPL vmlinux 0xc7198226 blkcipher_walk_virt +EXPORT_SYMBOL_GPL vmlinux 0xc72e1233 __trace_bprintk +EXPORT_SYMBOL_GPL vmlinux 0xc736a536 kvm_clear_guest_page +EXPORT_SYMBOL_GPL vmlinux 0xc73adfec tracepoint_probe_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc7697af8 inet6_csk_addr2sockaddr +EXPORT_SYMBOL_GPL vmlinux 0xc798aa45 mm_kobj +EXPORT_SYMBOL_GPL vmlinux 0xc7a1840e llist_add_batch +EXPORT_SYMBOL_GPL vmlinux 0xc7a8db21 regulator_sync_voltage +EXPORT_SYMBOL_GPL vmlinux 0xc7c6391c mpi_set_buffer +EXPORT_SYMBOL_GPL vmlinux 0xc7ced025 of_scan_bus +EXPORT_SYMBOL_GPL vmlinux 0xc7d804a2 rio_release_dma +EXPORT_SYMBOL_GPL vmlinux 0xc7e25449 devm_phy_destroy +EXPORT_SYMBOL_GPL vmlinux 0xc7e39bca ring_buffer_dropped_events_cpu +EXPORT_SYMBOL_GPL vmlinux 0xc7e7ba4a elv_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc83f144c wakeup_source_drop +EXPORT_SYMBOL_GPL vmlinux 0xc84a20fc usb_put_hcd +EXPORT_SYMBOL_GPL vmlinux 0xc872da0f ata_bmdma_port_intr +EXPORT_SYMBOL_GPL vmlinux 0xc878768b dev_pm_opp_get_opp_count +EXPORT_SYMBOL_GPL vmlinux 0xc87c1f84 ktime_get +EXPORT_SYMBOL_GPL vmlinux 0xc8add232 ring_buffer_record_disable +EXPORT_SYMBOL_GPL vmlinux 0xc8bb9364 syscon_regmap_lookup_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0xc8cd2d74 device_property_read_u16_array +EXPORT_SYMBOL_GPL vmlinux 0xc8de802f cn_netlink_send +EXPORT_SYMBOL_GPL vmlinux 0xc8e56851 kvmppc_handle_load +EXPORT_SYMBOL_GPL vmlinux 0xc91277a1 kgdb_schedule_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0xc9163e8a percpu_ida_for_each_free +EXPORT_SYMBOL_GPL vmlinux 0xc936100f sysfs_create_groups +EXPORT_SYMBOL_GPL vmlinux 0xc9561772 fb_destroy_modelist +EXPORT_SYMBOL_GPL vmlinux 0xc96bb9c4 __ata_ehi_push_desc +EXPORT_SYMBOL_GPL vmlinux 0xc96f97ba blkg_stat_recursive_sum +EXPORT_SYMBOL_GPL vmlinux 0xc972c421 inet6_csk_bind_conflict +EXPORT_SYMBOL_GPL vmlinux 0xc97d1140 cpufreq_cooling_get_level +EXPORT_SYMBOL_GPL vmlinux 0xc97e9bff register_jprobes +EXPORT_SYMBOL_GPL vmlinux 0xc9a0db8a usb_poison_urb +EXPORT_SYMBOL_GPL vmlinux 0xc9b9e88a list_lru_count_one +EXPORT_SYMBOL_GPL vmlinux 0xc9ec4e21 free_percpu +EXPORT_SYMBOL_GPL vmlinux 0xc9fa0a28 serial8250_rpm_put +EXPORT_SYMBOL_GPL vmlinux 0xca01fb7f blk_update_request +EXPORT_SYMBOL_GPL vmlinux 0xca0c37e1 mpc8xxx_spi_rx_buf_u32 +EXPORT_SYMBOL_GPL vmlinux 0xca2d36b5 devm_extcon_dev_register +EXPORT_SYMBOL_GPL vmlinux 0xca7d8764 kthread_freezable_should_stop +EXPORT_SYMBOL_GPL vmlinux 0xca8b50f2 fwnode_property_read_u64_array +EXPORT_SYMBOL_GPL vmlinux 0xca9b1000 init_dummy_netdev +EXPORT_SYMBOL_GPL vmlinux 0xcab3a164 thermal_zone_device_register +EXPORT_SYMBOL_GPL vmlinux 0xcabe04de cpuidle_resume_and_unlock +EXPORT_SYMBOL_GPL vmlinux 0xcac86eef regmap_write +EXPORT_SYMBOL_GPL vmlinux 0xcad27110 get_governor_parent_kobj +EXPORT_SYMBOL_GPL vmlinux 0xcafa3761 inet_hash_connect +EXPORT_SYMBOL_GPL vmlinux 0xcb15eee9 sdhci_pci_get_data +EXPORT_SYMBOL_GPL vmlinux 0xcb469d2b ddebug_add_module +EXPORT_SYMBOL_GPL vmlinux 0xcb9aa033 relay_buf_full +EXPORT_SYMBOL_GPL vmlinux 0xcbb6e338 pci_cfg_access_lock +EXPORT_SYMBOL_GPL vmlinux 0xcbbe5e3b balloon_page_dequeue +EXPORT_SYMBOL_GPL vmlinux 0xcbe56bc2 zs_get_total_pages +EXPORT_SYMBOL_GPL vmlinux 0xcbee20b2 get_cpu_iowait_time_us +EXPORT_SYMBOL_GPL vmlinux 0xcbf97bb3 sysfs_remove_bin_file +EXPORT_SYMBOL_GPL vmlinux 0xcc0f1009 power_supply_notifier +EXPORT_SYMBOL_GPL vmlinux 0xcc2ba30d list_lru_del +EXPORT_SYMBOL_GPL vmlinux 0xcc44961f kvmppc_alloc_lpid +EXPORT_SYMBOL_GPL vmlinux 0xcc85fcb6 async_schedule +EXPORT_SYMBOL_GPL vmlinux 0xcc9a71b0 proc_get_parent_data +EXPORT_SYMBOL_GPL vmlinux 0xccbf05e0 led_trigger_register_simple +EXPORT_SYMBOL_GPL vmlinux 0xcccfb2fa sata_deb_timing_hotplug +EXPORT_SYMBOL_GPL vmlinux 0xcce893b5 sdio_readw +EXPORT_SYMBOL_GPL vmlinux 0xcd1645c2 trace_seq_bitmask +EXPORT_SYMBOL_GPL vmlinux 0xcd223f72 cpufreq_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0xcd443afc ata_eh_qc_retry +EXPORT_SYMBOL_GPL vmlinux 0xcd596f2f phy_pm_runtime_put +EXPORT_SYMBOL_GPL vmlinux 0xcd5c82ce nvdimm_bus_unregister +EXPORT_SYMBOL_GPL vmlinux 0xcd6492ab trace_seq_putmem +EXPORT_SYMBOL_GPL vmlinux 0xcd78ca23 mmu_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0xcd876a7e phy_put +EXPORT_SYMBOL_GPL vmlinux 0xcd91b127 system_highpri_wq +EXPORT_SYMBOL_GPL vmlinux 0xcd974f00 rcu_all_qs +EXPORT_SYMBOL_GPL vmlinux 0xcdaf0904 devm_regmap_init_spi +EXPORT_SYMBOL_GPL vmlinux 0xcdb6adcc ras_userspace_consumers +EXPORT_SYMBOL_GPL vmlinux 0xcdb8f013 skcipher_geniv_init +EXPORT_SYMBOL_GPL vmlinux 0xcdca3691 nr_irqs +EXPORT_SYMBOL_GPL vmlinux 0xcdd7fc41 md_new_event +EXPORT_SYMBOL_GPL vmlinux 0xcde5c9ed usb_sg_cancel +EXPORT_SYMBOL_GPL vmlinux 0xce414885 xfrm_output_resume +EXPORT_SYMBOL_GPL vmlinux 0xce53597a devm_regulator_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0xce6a9d9a trace_current_buffer_discard_commit +EXPORT_SYMBOL_GPL vmlinux 0xce6db656 rcu_is_watching +EXPORT_SYMBOL_GPL vmlinux 0xce868bb5 max_gen_clk_remove +EXPORT_SYMBOL_GPL vmlinux 0xceb5727d wm831x_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0xceb9b766 devfreq_event_remove_edev +EXPORT_SYMBOL_GPL vmlinux 0xced9400b balloon_page_enqueue +EXPORT_SYMBOL_GPL vmlinux 0xcedd0de0 ata_sas_sync_probe +EXPORT_SYMBOL_GPL vmlinux 0xcee1641c kgdb_unregister_nmi_console +EXPORT_SYMBOL_GPL vmlinux 0xcf36010d pci_hp_create_module_link +EXPORT_SYMBOL_GPL vmlinux 0xcf3ac3f5 mbox_send_message +EXPORT_SYMBOL_GPL vmlinux 0xcf54ea93 async_unregister_domain +EXPORT_SYMBOL_GPL vmlinux 0xcf5a7d55 mbox_request_channel +EXPORT_SYMBOL_GPL vmlinux 0xcf5df8de crypto_mod_put +EXPORT_SYMBOL_GPL vmlinux 0xcf61ec08 fat_dir_empty +EXPORT_SYMBOL_GPL vmlinux 0xcf9bb831 inet_getpeer +EXPORT_SYMBOL_GPL vmlinux 0xcfb5871c irq_work_queue +EXPORT_SYMBOL_GPL vmlinux 0xcfc68341 synchronize_rcu_bh +EXPORT_SYMBOL_GPL vmlinux 0xcfdaa82d __module_address +EXPORT_SYMBOL_GPL vmlinux 0xcfe2e5fd to_nvdimm_bus +EXPORT_SYMBOL_GPL vmlinux 0xcfe59426 driver_find_device +EXPORT_SYMBOL_GPL vmlinux 0xd0019c36 blk_queue_dma_drain +EXPORT_SYMBOL_GPL vmlinux 0xd0088a0f transport_destroy_device +EXPORT_SYMBOL_GPL vmlinux 0xd019a1ae pci_enable_pcie_error_reporting +EXPORT_SYMBOL_GPL vmlinux 0xd023b9d0 add_page_wait_queue +EXPORT_SYMBOL_GPL vmlinux 0xd02dbb10 skb_splice_bits +EXPORT_SYMBOL_GPL vmlinux 0xd03c7700 secure_ipv4_port_ephemeral +EXPORT_SYMBOL_GPL vmlinux 0xd041923e xhci_dbg_trace +EXPORT_SYMBOL_GPL vmlinux 0xd06524ba raw_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd067d3c5 system_freezable_power_efficient_wq +EXPORT_SYMBOL_GPL vmlinux 0xd070eeb0 device_create_bin_file +EXPORT_SYMBOL_GPL vmlinux 0xd07462c7 __pm_runtime_disable +EXPORT_SYMBOL_GPL vmlinux 0xd0c05159 emergency_restart +EXPORT_SYMBOL_GPL vmlinux 0xd13c33bc regulator_bulk_get +EXPORT_SYMBOL_GPL vmlinux 0xd1562f49 powercap_register_control_type +EXPORT_SYMBOL_GPL vmlinux 0xd1635b6c devm_regulator_bulk_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0xd1637ce8 ip6_route_lookup +EXPORT_SYMBOL_GPL vmlinux 0xd16712f3 crypto_check_attr_type +EXPORT_SYMBOL_GPL vmlinux 0xd174b2a8 powercap_unregister_zone +EXPORT_SYMBOL_GPL vmlinux 0xd19c3d4b ata_port_schedule_eh +EXPORT_SYMBOL_GPL vmlinux 0xd19f8d77 locks_release_private +EXPORT_SYMBOL_GPL vmlinux 0xd1a1a44e usb_hub_find_child +EXPORT_SYMBOL_GPL vmlinux 0xd1b3e047 shash_free_instance +EXPORT_SYMBOL_GPL vmlinux 0xd1f2eee2 nf_logger_find_get +EXPORT_SYMBOL_GPL vmlinux 0xd1f77952 __platform_driver_probe +EXPORT_SYMBOL_GPL vmlinux 0xd20b8aaa wm5102_spi_regmap +EXPORT_SYMBOL_GPL vmlinux 0xd20bf6ba dcookie_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd217e9e6 trace_set_clr_event +EXPORT_SYMBOL_GPL vmlinux 0xd2192498 relay_close +EXPORT_SYMBOL_GPL vmlinux 0xd22da07f vring_new_virtqueue +EXPORT_SYMBOL_GPL vmlinux 0xd2400e0d devm_free_pages +EXPORT_SYMBOL_GPL vmlinux 0xd244a0dd __netpoll_setup +EXPORT_SYMBOL_GPL vmlinux 0xd247565d pci_create_root_bus +EXPORT_SYMBOL_GPL vmlinux 0xd269f919 register_asymmetric_key_parser +EXPORT_SYMBOL_GPL vmlinux 0xd273b1b1 __round_jiffies_up_relative +EXPORT_SYMBOL_GPL vmlinux 0xd27f657c irq_remove_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0xd281b490 rtc_device_register +EXPORT_SYMBOL_GPL vmlinux 0xd281c6cf rio_register_scan +EXPORT_SYMBOL_GPL vmlinux 0xd2aaeb4e kmsg_dump_get_buffer +EXPORT_SYMBOL_GPL vmlinux 0xd2c7914c ata_scsi_port_error_handler +EXPORT_SYMBOL_GPL vmlinux 0xd2cd195c register_virtio_device +EXPORT_SYMBOL_GPL vmlinux 0xd2d5ad92 regulator_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0xd2edf4b7 ata_get_cmd_descript +EXPORT_SYMBOL_GPL vmlinux 0xd2feac5a rt_mutex_unlock +EXPORT_SYMBOL_GPL vmlinux 0xd3024048 virtqueue_detach_unused_buf +EXPORT_SYMBOL_GPL vmlinux 0xd320fe09 wm831x_reg_lock +EXPORT_SYMBOL_GPL vmlinux 0xd3341ae5 __hvc_resize +EXPORT_SYMBOL_GPL vmlinux 0xd34369ff pci_intx +EXPORT_SYMBOL_GPL vmlinux 0xd347e589 regulator_can_change_voltage +EXPORT_SYMBOL_GPL vmlinux 0xd34c9215 sdio_readsb +EXPORT_SYMBOL_GPL vmlinux 0xd384d7b2 ata_pci_device_do_resume +EXPORT_SYMBOL_GPL vmlinux 0xd39c096e regulator_set_voltage_time +EXPORT_SYMBOL_GPL vmlinux 0xd3bdbbf2 tun_get_socket +EXPORT_SYMBOL_GPL vmlinux 0xd3e07fb8 blkg_conf_finish +EXPORT_SYMBOL_GPL vmlinux 0xd3f3ed5c __class_register +EXPORT_SYMBOL_GPL vmlinux 0xd3fad98f skb_cow_data +EXPORT_SYMBOL_GPL vmlinux 0xd4034828 system_freezable_wq +EXPORT_SYMBOL_GPL vmlinux 0xd407ebcd stmpe_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xd41487ed phy_get +EXPORT_SYMBOL_GPL vmlinux 0xd41fffab interval_tree_iter_first +EXPORT_SYMBOL_GPL vmlinux 0xd429ed09 gpiochip_set_chained_irqchip +EXPORT_SYMBOL_GPL vmlinux 0xd44a5eac kgdb_register_nmi_console +EXPORT_SYMBOL_GPL vmlinux 0xd4509892 blk_rq_unprep_clone +EXPORT_SYMBOL_GPL vmlinux 0xd4644aab ping_close +EXPORT_SYMBOL_GPL vmlinux 0xd47672fd sdio_run_irqs +EXPORT_SYMBOL_GPL vmlinux 0xd49ba1f3 ohci_hub_control +EXPORT_SYMBOL_GPL vmlinux 0xd49ff36b serial8250_get_port +EXPORT_SYMBOL_GPL vmlinux 0xd4ab31c8 __irq_domain_add +EXPORT_SYMBOL_GPL vmlinux 0xd4bd7860 perf_event_read_value +EXPORT_SYMBOL_GPL vmlinux 0xd4c14632 system_unbound_wq +EXPORT_SYMBOL_GPL vmlinux 0xd4cbb094 cpci_hp_unregister_bus +EXPORT_SYMBOL_GPL vmlinux 0xd4e82d87 pci_reset_bus +EXPORT_SYMBOL_GPL vmlinux 0xd4f3629a digsig_verify +EXPORT_SYMBOL_GPL vmlinux 0xd50a7827 rio_register_driver +EXPORT_SYMBOL_GPL vmlinux 0xd5437505 stmpe_block_write +EXPORT_SYMBOL_GPL vmlinux 0xd58f7f17 get_kernel_page +EXPORT_SYMBOL_GPL vmlinux 0xd5933e8d transport_add_device +EXPORT_SYMBOL_GPL vmlinux 0xd5b1c313 get_net_ns_by_fd +EXPORT_SYMBOL_GPL vmlinux 0xd5b4be45 shmem_add_seals +EXPORT_SYMBOL_GPL vmlinux 0xd5bd7dac ring_buffer_record_enable_cpu +EXPORT_SYMBOL_GPL vmlinux 0xd5c25a7c __put_net +EXPORT_SYMBOL_GPL vmlinux 0xd5d27eb4 tc3589x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xd5dc6983 br_fdb_test_addr_hook +EXPORT_SYMBOL_GPL vmlinux 0xd5e8d704 rio_dev_get +EXPORT_SYMBOL_GPL vmlinux 0xd5fe3849 sysfs_update_group +EXPORT_SYMBOL_GPL vmlinux 0xd5ff4093 crypto_ahash_walk_first +EXPORT_SYMBOL_GPL vmlinux 0xd60c99b5 rcu_batches_completed_bh +EXPORT_SYMBOL_GPL vmlinux 0xd67364f7 eventfd_ctx_fdget +EXPORT_SYMBOL_GPL vmlinux 0xd68a3af9 crypto_alg_sem +EXPORT_SYMBOL_GPL vmlinux 0xd6a66426 regmap_raw_write +EXPORT_SYMBOL_GPL vmlinux 0xd6b8c377 bitmap_copy_from_slot +EXPORT_SYMBOL_GPL vmlinux 0xd6bf89b9 ata_sff_queue_pio_task +EXPORT_SYMBOL_GPL vmlinux 0xd6c2e04b __tracepoint_napi_poll +EXPORT_SYMBOL_GPL vmlinux 0xd6c40392 of_prop_next_u32 +EXPORT_SYMBOL_GPL vmlinux 0xd6c55da1 fib_rules_register +EXPORT_SYMBOL_GPL vmlinux 0xd6feefa5 agp_num_entries +EXPORT_SYMBOL_GPL vmlinux 0xd705b4c7 schedule_hrtimeout +EXPORT_SYMBOL_GPL vmlinux 0xd7189ae2 __sock_recv_timestamp +EXPORT_SYMBOL_GPL vmlinux 0xd735fa6c md_stop +EXPORT_SYMBOL_GPL vmlinux 0xd75054d7 kvmppc_ld +EXPORT_SYMBOL_GPL vmlinux 0xd752c1f7 fat_sync_inode +EXPORT_SYMBOL_GPL vmlinux 0xd7534535 anon_transport_class_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd768e985 regulator_has_full_constraints +EXPORT_SYMBOL_GPL vmlinux 0xd768fcc2 inet_csk_route_child_sock +EXPORT_SYMBOL_GPL vmlinux 0xd7707daa raw_seq_stop +EXPORT_SYMBOL_GPL vmlinux 0xd77606a0 perf_event_create_kernel_counter +EXPORT_SYMBOL_GPL vmlinux 0xd77c0bc8 klist_remove +EXPORT_SYMBOL_GPL vmlinux 0xd7814291 vfs_setxattr +EXPORT_SYMBOL_GPL vmlinux 0xd7d79132 put_online_cpus +EXPORT_SYMBOL_GPL vmlinux 0xd7f19159 kernfs_put +EXPORT_SYMBOL_GPL vmlinux 0xd81de62c ring_buffer_record_enable +EXPORT_SYMBOL_GPL vmlinux 0xd820c283 eventfd_ctx_remove_wait_queue +EXPORT_SYMBOL_GPL vmlinux 0xd828473f syscon_node_to_regmap +EXPORT_SYMBOL_GPL vmlinux 0xd83c9be9 virtio_config_changed +EXPORT_SYMBOL_GPL vmlinux 0xd853aa7d md_kick_rdev_from_array +EXPORT_SYMBOL_GPL vmlinux 0xd86a9411 usb_set_interface +EXPORT_SYMBOL_GPL vmlinux 0xd87601cc ring_buffer_unlock_commit +EXPORT_SYMBOL_GPL vmlinux 0xd87fc0a0 usb_amd_prefetch_quirk +EXPORT_SYMBOL_GPL vmlinux 0xd880495f input_ff_create +EXPORT_SYMBOL_GPL vmlinux 0xd8c12a45 ata_host_start +EXPORT_SYMBOL_GPL vmlinux 0xd8c9b7e0 regulator_is_supported_voltage +EXPORT_SYMBOL_GPL vmlinux 0xd8e1c6f9 rdev_clear_badblocks +EXPORT_SYMBOL_GPL vmlinux 0xd8ff8058 sk_set_memalloc +EXPORT_SYMBOL_GPL vmlinux 0xd90187d2 ablkcipher_walk_done +EXPORT_SYMBOL_GPL vmlinux 0xd919ebdf module_mutex +EXPORT_SYMBOL_GPL vmlinux 0xd92ea5f1 dma_buf_begin_cpu_access +EXPORT_SYMBOL_GPL vmlinux 0xd93f187c dma_get_any_slave_channel +EXPORT_SYMBOL_GPL vmlinux 0xd942d353 ring_buffer_record_off +EXPORT_SYMBOL_GPL vmlinux 0xd94aa457 display_timings_release +EXPORT_SYMBOL_GPL vmlinux 0xd94d6579 rio_request_dma +EXPORT_SYMBOL_GPL vmlinux 0xd9555f5a class_interface_register +EXPORT_SYMBOL_GPL vmlinux 0xd960fd8c regulator_get_bypass_regmap +EXPORT_SYMBOL_GPL vmlinux 0xd96646f0 pm_generic_suspend +EXPORT_SYMBOL_GPL vmlinux 0xd96babb4 interval_tree_iter_next +EXPORT_SYMBOL_GPL vmlinux 0xd973f5ee sysfs_create_mount_point +EXPORT_SYMBOL_GPL vmlinux 0xd992ffbe crypto_find_alg +EXPORT_SYMBOL_GPL vmlinux 0xd9b0d0c6 pci_reset_bridge_secondary_bus +EXPORT_SYMBOL_GPL vmlinux 0xd9b9e8b2 dma_buf_vunmap +EXPORT_SYMBOL_GPL vmlinux 0xd9d4d10a regmap_irq_get_domain +EXPORT_SYMBOL_GPL vmlinux 0xd9ecb670 ring_buffer_overruns +EXPORT_SYMBOL_GPL vmlinux 0xd9fd14a6 nf_unregister_afinfo +EXPORT_SYMBOL_GPL vmlinux 0xda0a4d22 mpic_msgr_enable +EXPORT_SYMBOL_GPL vmlinux 0xda1a318c tty_buffer_lock_exclusive +EXPORT_SYMBOL_GPL vmlinux 0xda248d11 nvdimm_pmem_region_create +EXPORT_SYMBOL_GPL vmlinux 0xda33b697 led_classdev_unregister +EXPORT_SYMBOL_GPL vmlinux 0xda498268 aead_register_instance +EXPORT_SYMBOL_GPL vmlinux 0xda4fe0cc pwm_set_chip_data +EXPORT_SYMBOL_GPL vmlinux 0xda541c60 serial8250_handle_irq +EXPORT_SYMBOL_GPL vmlinux 0xda652c5f kvm_write_guest_page +EXPORT_SYMBOL_GPL vmlinux 0xda662120 securityfs_create_dir +EXPORT_SYMBOL_GPL vmlinux 0xda781335 pci_sriov_set_totalvfs +EXPORT_SYMBOL_GPL vmlinux 0xda7d6c39 fsl_spi_cpm_irq +EXPORT_SYMBOL_GPL vmlinux 0xda8cb2e5 threads_core_mask +EXPORT_SYMBOL_GPL vmlinux 0xdaa7bc52 __page_file_mapping +EXPORT_SYMBOL_GPL vmlinux 0xdaaa89fd spi_async +EXPORT_SYMBOL_GPL vmlinux 0xdaaeefdd sysfs_rename_link_ns +EXPORT_SYMBOL_GPL vmlinux 0xdac673f8 da9052_disable_irq +EXPORT_SYMBOL_GPL vmlinux 0xdae715e0 videomode_from_timing +EXPORT_SYMBOL_GPL vmlinux 0xdaed3073 timerqueue_del +EXPORT_SYMBOL_GPL vmlinux 0xdaf4dfb3 fb_mode_option +EXPORT_SYMBOL_GPL vmlinux 0xdafbb1bb max8997_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0xdb00fdce tty_ldisc_flush +EXPORT_SYMBOL_GPL vmlinux 0xdb088cb1 pm_qos_add_request +EXPORT_SYMBOL_GPL vmlinux 0xdb0f4982 sdio_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0xdb8a1b3f usermodehelper_read_trylock +EXPORT_SYMBOL_GPL vmlinux 0xdb95208f pm_runtime_set_autosuspend_delay +EXPORT_SYMBOL_GPL vmlinux 0xdb9ec93e ata_ehi_push_desc +EXPORT_SYMBOL_GPL vmlinux 0xdba47138 pci_probe_reset_bus +EXPORT_SYMBOL_GPL vmlinux 0xdbdeb648 regulator_bulk_enable +EXPORT_SYMBOL_GPL vmlinux 0xdbdf705f ata_port_pbar_desc +EXPORT_SYMBOL_GPL vmlinux 0xdbf7cb70 mpi_get_nbits +EXPORT_SYMBOL_GPL vmlinux 0xdbf9e006 usb_alloc_streams +EXPORT_SYMBOL_GPL vmlinux 0xdc08baee ata_host_init +EXPORT_SYMBOL_GPL vmlinux 0xdc145698 bpf_prog_alloc +EXPORT_SYMBOL_GPL vmlinux 0xdc1c379d __list_lru_init +EXPORT_SYMBOL_GPL vmlinux 0xdc2ccd79 platform_device_register +EXPORT_SYMBOL_GPL vmlinux 0xdc3237d4 rtc_irq_register +EXPORT_SYMBOL_GPL vmlinux 0xdc358ee7 sysfs_unmerge_group +EXPORT_SYMBOL_GPL vmlinux 0xdc47f044 mmc_app_cmd +EXPORT_SYMBOL_GPL vmlinux 0xdc666330 wm8350_reg_read +EXPORT_SYMBOL_GPL vmlinux 0xdc69ce62 fuse_do_ioctl +EXPORT_SYMBOL_GPL vmlinux 0xdc7dbae2 pci_enable_pri +EXPORT_SYMBOL_GPL vmlinux 0xdc825d6c usb_amd_quirk_pll_disable +EXPORT_SYMBOL_GPL vmlinux 0xdc910fd1 device_wakeup_enable +EXPORT_SYMBOL_GPL vmlinux 0xdc97af2e syscore_suspend +EXPORT_SYMBOL_GPL vmlinux 0xdc9fa232 raw_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0xdcb8ac0a tps6586x_get_version +EXPORT_SYMBOL_GPL vmlinux 0xdcc16c2c ata_bmdma_port_start +EXPORT_SYMBOL_GPL vmlinux 0xdccb5e0b pci_sriov_get_totalvfs +EXPORT_SYMBOL_GPL vmlinux 0xdce7b510 for_each_kernel_tracepoint +EXPORT_SYMBOL_GPL vmlinux 0xdcf64951 dev_pm_qos_expose_latency_limit +EXPORT_SYMBOL_GPL vmlinux 0xdd0f9475 usb_autopm_put_interface_no_suspend +EXPORT_SYMBOL_GPL vmlinux 0xdd17ffec trace_clock +EXPORT_SYMBOL_GPL vmlinux 0xdd26f282 platform_get_irq_byname +EXPORT_SYMBOL_GPL vmlinux 0xdd2efc0f ring_buffer_reset_cpu +EXPORT_SYMBOL_GPL vmlinux 0xdd38298b pskb_put +EXPORT_SYMBOL_GPL vmlinux 0xdd391eff profile_event_unregister +EXPORT_SYMBOL_GPL vmlinux 0xdd5d42cf blocking_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0xdd729424 usb_anchor_empty +EXPORT_SYMBOL_GPL vmlinux 0xdd812adf shmem_file_setup +EXPORT_SYMBOL_GPL vmlinux 0xddb9fbb7 sdio_align_size +EXPORT_SYMBOL_GPL vmlinux 0xddbeeecc pci_lock_rescan_remove +EXPORT_SYMBOL_GPL vmlinux 0xddc28ffd dev_pm_qos_hide_latency_tolerance +EXPORT_SYMBOL_GPL vmlinux 0xddc6547e ata_sg_init +EXPORT_SYMBOL_GPL vmlinux 0xddd58dc0 ring_buffer_reset +EXPORT_SYMBOL_GPL vmlinux 0xdde77791 cpci_hp_register_controller +EXPORT_SYMBOL_GPL vmlinux 0xde0fdcc1 blk_mq_freeze_queue +EXPORT_SYMBOL_GPL vmlinux 0xde1eb764 regulator_get_current_limit +EXPORT_SYMBOL_GPL vmlinux 0xde2e4c15 raw_seq_open +EXPORT_SYMBOL_GPL vmlinux 0xde6abdf3 __netpoll_free_async +EXPORT_SYMBOL_GPL vmlinux 0xde789895 sdio_f0_readb +EXPORT_SYMBOL_GPL vmlinux 0xde80a801 rhashtable_walk_start +EXPORT_SYMBOL_GPL vmlinux 0xde87c5a7 devm_usb_get_phy +EXPORT_SYMBOL_GPL vmlinux 0xdeacf770 usb_interrupt_msg +EXPORT_SYMBOL_GPL vmlinux 0xdef0989c arizona_clk32k_enable +EXPORT_SYMBOL_GPL vmlinux 0xdf0f75c6 eventfd_signal +EXPORT_SYMBOL_GPL vmlinux 0xdf3d354f kvm_get_kvm +EXPORT_SYMBOL_GPL vmlinux 0xdf69c4c7 crypto_ahash_digest +EXPORT_SYMBOL_GPL vmlinux 0xdf6a772b tty_standard_install +EXPORT_SYMBOL_GPL vmlinux 0xdf8151be usb_find_interface +EXPORT_SYMBOL_GPL vmlinux 0xdfcddbc4 __rio_local_write_config_16 +EXPORT_SYMBOL_GPL vmlinux 0xdfdfa127 ip6_flush_pending_frames +EXPORT_SYMBOL_GPL vmlinux 0xdfe5bb32 bmp085_detect +EXPORT_SYMBOL_GPL vmlinux 0xdffd1c66 irq_domain_remove +EXPORT_SYMBOL_GPL vmlinux 0xe007de41 kallsyms_lookup_name +EXPORT_SYMBOL_GPL vmlinux 0xe00d7f8b thermal_cooling_device_register +EXPORT_SYMBOL_GPL vmlinux 0xe014d7e8 spi_setup +EXPORT_SYMBOL_GPL vmlinux 0xe02eb6d0 ring_buffer_commit_overrun_cpu +EXPORT_SYMBOL_GPL vmlinux 0xe036b3e9 mpic_msgr_put +EXPORT_SYMBOL_GPL vmlinux 0xe03ef9e4 kvm_vcpu_read_guest +EXPORT_SYMBOL_GPL vmlinux 0xe041aa14 cpci_hp_unregister_controller +EXPORT_SYMBOL_GPL vmlinux 0xe089cfcc agp_memory_reserved +EXPORT_SYMBOL_GPL vmlinux 0xe0b1c103 clk_set_max_rate +EXPORT_SYMBOL_GPL vmlinux 0xe0c89947 ata_sas_slave_configure +EXPORT_SYMBOL_GPL vmlinux 0xe0cd57e5 thermal_zone_bind_cooling_device +EXPORT_SYMBOL_GPL vmlinux 0xe0d39e5a regulator_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0xe0ebd850 kvmppc_emulate_mmio +EXPORT_SYMBOL_GPL vmlinux 0xe0fd7f04 irq_setup_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0xe121cbb6 static_key_slow_dec_deferred +EXPORT_SYMBOL_GPL vmlinux 0xe1253b91 dmaengine_unmap_put +EXPORT_SYMBOL_GPL vmlinux 0xe128b705 devm_regulator_get_exclusive +EXPORT_SYMBOL_GPL vmlinux 0xe14a3a79 scsi_bus_type +EXPORT_SYMBOL_GPL vmlinux 0xe14c588d irq_domain_associate +EXPORT_SYMBOL_GPL vmlinux 0xe1775ee7 dm_get_reserved_bio_based_ios +EXPORT_SYMBOL_GPL vmlinux 0xe1898e43 kvm_read_guest_cached +EXPORT_SYMBOL_GPL vmlinux 0xe190c1aa unregister_asymmetric_key_parser +EXPORT_SYMBOL_GPL vmlinux 0xe193ec68 nvdimm_bus_check_dimm_count +EXPORT_SYMBOL_GPL vmlinux 0xe19eb1c4 percpu_ida_destroy +EXPORT_SYMBOL_GPL vmlinux 0xe1b23ae4 tcp_death_row +EXPORT_SYMBOL_GPL vmlinux 0xe1bd6c99 rio_init_mports +EXPORT_SYMBOL_GPL vmlinux 0xe1d76c5b perf_event_release_kernel +EXPORT_SYMBOL_GPL vmlinux 0xe1d94546 pwm_request +EXPORT_SYMBOL_GPL vmlinux 0xe237341a regmap_fields_write +EXPORT_SYMBOL_GPL vmlinux 0xe2566739 arizona_request_irq +EXPORT_SYMBOL_GPL vmlinux 0xe26b88d6 kernfs_notify +EXPORT_SYMBOL_GPL vmlinux 0xe27b7b2b page_cache_async_readahead +EXPORT_SYMBOL_GPL vmlinux 0xe28a1d1a sdhci_pci_spt_drive_strength +EXPORT_SYMBOL_GPL vmlinux 0xe2ae6589 devm_kmalloc +EXPORT_SYMBOL_GPL vmlinux 0xe2aeb44e ip6_datagram_connect_v6_only +EXPORT_SYMBOL_GPL vmlinux 0xe2bdf174 fb_deferred_io_fsync +EXPORT_SYMBOL_GPL vmlinux 0xe2bf71a2 __tracepoint_xhci_dbg_quirks +EXPORT_SYMBOL_GPL vmlinux 0xe2c0972b tcp_unregister_congestion_control +EXPORT_SYMBOL_GPL vmlinux 0xe2e0a36a regmap_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0xe3043ff9 request_any_context_irq +EXPORT_SYMBOL_GPL vmlinux 0xe3097604 regmap_read +EXPORT_SYMBOL_GPL vmlinux 0xe316b343 gen_pool_avail +EXPORT_SYMBOL_GPL vmlinux 0xe32fb230 alarm_expires_remaining +EXPORT_SYMBOL_GPL vmlinux 0xe33054b9 dev_pm_qos_remove_request +EXPORT_SYMBOL_GPL vmlinux 0xe33835ab skb_to_sgvec +EXPORT_SYMBOL_GPL vmlinux 0xe33eb05f usb_reset_endpoint +EXPORT_SYMBOL_GPL vmlinux 0xe3657944 of_pwm_get +EXPORT_SYMBOL_GPL vmlinux 0xe3699595 bsg_setup_queue +EXPORT_SYMBOL_GPL vmlinux 0xe36d4cb9 of_get_pci_domain_nr +EXPORT_SYMBOL_GPL vmlinux 0xe384a102 usb_speed_string +EXPORT_SYMBOL_GPL vmlinux 0xe393c419 __irq_set_handler +EXPORT_SYMBOL_GPL vmlinux 0xe3be9bec user_describe +EXPORT_SYMBOL_GPL vmlinux 0xe3dd1c55 sata_pmp_qc_defer_cmd_switch +EXPORT_SYMBOL_GPL vmlinux 0xe4118f4e pm_runtime_forbid +EXPORT_SYMBOL_GPL vmlinux 0xe416e378 pm_schedule_suspend +EXPORT_SYMBOL_GPL vmlinux 0xe42ad1d5 platform_get_resource_byname +EXPORT_SYMBOL_GPL vmlinux 0xe4309905 syscore_resume +EXPORT_SYMBOL_GPL vmlinux 0xe433d2ea find_symbol +EXPORT_SYMBOL_GPL vmlinux 0xe436884d tc3589x_reg_read +EXPORT_SYMBOL_GPL vmlinux 0xe43d443b ata_sff_exec_command +EXPORT_SYMBOL_GPL vmlinux 0xe4452dec blocking_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xe4689576 ktime_get_with_offset +EXPORT_SYMBOL_GPL vmlinux 0xe489896b wm8997_i2c_regmap +EXPORT_SYMBOL_GPL vmlinux 0xe4971ade tracing_alloc_snapshot +EXPORT_SYMBOL_GPL vmlinux 0xe4a2da45 rdev_set_badblocks +EXPORT_SYMBOL_GPL vmlinux 0xe4a863fc irq_create_of_mapping +EXPORT_SYMBOL_GPL vmlinux 0xe4c031f8 btree_merge +EXPORT_SYMBOL_GPL vmlinux 0xe4c6539a cpufreq_cpu_put +EXPORT_SYMBOL_GPL vmlinux 0xe4edce3c ata_sff_data_xfer32 +EXPORT_SYMBOL_GPL vmlinux 0xe4f55397 srcu_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe4f5c2dd wait_on_page_bit_killable_timeout +EXPORT_SYMBOL_GPL vmlinux 0xe4fc73db dev_attr_unload_heads +EXPORT_SYMBOL_GPL vmlinux 0xe500e517 devm_hwrng_register +EXPORT_SYMBOL_GPL vmlinux 0xe55ba316 kvm_is_visible_gfn +EXPORT_SYMBOL_GPL vmlinux 0xe5877970 mpc8xxx_spi_tx_buf_u16 +EXPORT_SYMBOL_GPL vmlinux 0xe5883bd9 class_compat_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe58fb452 aer_irq +EXPORT_SYMBOL_GPL vmlinux 0xe5c3d1cb regmap_field_alloc +EXPORT_SYMBOL_GPL vmlinux 0xe5db65ad tps6586x_write +EXPORT_SYMBOL_GPL vmlinux 0xe5dd545a cpuidle_register +EXPORT_SYMBOL_GPL vmlinux 0xe6052ba6 watchdog_init_timeout +EXPORT_SYMBOL_GPL vmlinux 0xe62f1144 pci_generic_config_read +EXPORT_SYMBOL_GPL vmlinux 0xe6347177 mddev_suspend +EXPORT_SYMBOL_GPL vmlinux 0xe63ad648 fsstack_copy_attr_all +EXPORT_SYMBOL_GPL vmlinux 0xe63e3483 rio_release_outb_mbox +EXPORT_SYMBOL_GPL vmlinux 0xe651f76e selinux_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0xe6c68334 ddebug_remove_module +EXPORT_SYMBOL_GPL vmlinux 0xe6df1392 ipv4_sk_redirect +EXPORT_SYMBOL_GPL vmlinux 0xe6e1c5fe uuid_be_gen +EXPORT_SYMBOL_GPL vmlinux 0xe6ef4abf dm_internal_resume_fast +EXPORT_SYMBOL_GPL vmlinux 0xe6fe859e driver_for_each_device +EXPORT_SYMBOL_GPL vmlinux 0xe6ff7c60 __clk_round_rate +EXPORT_SYMBOL_GPL vmlinux 0xe7145917 usb_show_dynids +EXPORT_SYMBOL_GPL vmlinux 0xe719b82e device_store_bool +EXPORT_SYMBOL_GPL vmlinux 0xe75f3c3a devres_find +EXPORT_SYMBOL_GPL vmlinux 0xe769232e sprint_symbol_no_offset +EXPORT_SYMBOL_GPL vmlinux 0xe78f615b blk_trace_startstop +EXPORT_SYMBOL_GPL vmlinux 0xe79b2b7a ata_std_error_handler +EXPORT_SYMBOL_GPL vmlinux 0xe7cb82ea divider_round_rate +EXPORT_SYMBOL_GPL vmlinux 0xe7cdbcdb ata_pci_device_suspend +EXPORT_SYMBOL_GPL vmlinux 0xe7cf3636 fuse_sync_release +EXPORT_SYMBOL_GPL vmlinux 0xe7e0a8b7 perf_event_enable +EXPORT_SYMBOL_GPL vmlinux 0xe7f18b3c threads_per_subcore +EXPORT_SYMBOL_GPL vmlinux 0xe7fa6745 crypto_aead_setauthsize +EXPORT_SYMBOL_GPL vmlinux 0xe7ffe877 pcpu_base_addr +EXPORT_SYMBOL_GPL vmlinux 0xe80f51a5 virtqueue_disable_cb +EXPORT_SYMBOL_GPL vmlinux 0xe818b32b ata_bmdma_interrupt +EXPORT_SYMBOL_GPL vmlinux 0xe844780e extcon_dev_free +EXPORT_SYMBOL_GPL vmlinux 0xe84f6e5c pciserial_remove_ports +EXPORT_SYMBOL_GPL vmlinux 0xe85c55e7 btree_destroy +EXPORT_SYMBOL_GPL vmlinux 0xe862c4b7 dpm_suspend_start +EXPORT_SYMBOL_GPL vmlinux 0xe86669a7 xfrm_audit_state_delete +EXPORT_SYMBOL_GPL vmlinux 0xe8b7bb84 public_key_subtype +EXPORT_SYMBOL_GPL vmlinux 0xe8bb2096 pm_generic_poweroff_noirq +EXPORT_SYMBOL_GPL vmlinux 0xe8c01611 devm_kstrdup +EXPORT_SYMBOL_GPL vmlinux 0xe8c04204 sysfs_create_file_ns +EXPORT_SYMBOL_GPL vmlinux 0xe8c73c45 ip6_redirect +EXPORT_SYMBOL_GPL vmlinux 0xe8d61538 posix_clock_register +EXPORT_SYMBOL_GPL vmlinux 0xe8e844bc of_irq_parse_and_map_pci +EXPORT_SYMBOL_GPL vmlinux 0xe93e49c3 devres_free +EXPORT_SYMBOL_GPL vmlinux 0xe95129a9 bdev_read_page +EXPORT_SYMBOL_GPL vmlinux 0xe956c78c find_extend_vma +EXPORT_SYMBOL_GPL vmlinux 0xe9645864 class_compat_remove_link +EXPORT_SYMBOL_GPL vmlinux 0xe99672b2 pci_bus_add_device +EXPORT_SYMBOL_GPL vmlinux 0xe9a0f961 usb_hcd_poll_rh_status +EXPORT_SYMBOL_GPL vmlinux 0xe9a7cb5a devres_release +EXPORT_SYMBOL_GPL vmlinux 0xe9ad0aba vring_transport_features +EXPORT_SYMBOL_GPL vmlinux 0xe9ad795b devm_phy_optional_get +EXPORT_SYMBOL_GPL vmlinux 0xe9c74c17 fs_kobj +EXPORT_SYMBOL_GPL vmlinux 0xe9d1b7cf irq_to_pcap +EXPORT_SYMBOL_GPL vmlinux 0xe9d691c2 platform_device_put +EXPORT_SYMBOL_GPL vmlinux 0xe9f62d9f rio_dev_put +EXPORT_SYMBOL_GPL vmlinux 0xe9fc066b kill_pid_info_as_cred +EXPORT_SYMBOL_GPL vmlinux 0xea019684 ata_sff_irq_on +EXPORT_SYMBOL_GPL vmlinux 0xea124bd1 gcd +EXPORT_SYMBOL_GPL vmlinux 0xea3d92ac da9052_free_irq +EXPORT_SYMBOL_GPL vmlinux 0xea418e0f atapi_cmd_type +EXPORT_SYMBOL_GPL vmlinux 0xea8159b8 to_nvdimm +EXPORT_SYMBOL_GPL vmlinux 0xea899c34 __clk_get_hw +EXPORT_SYMBOL_GPL vmlinux 0xea9de956 usb_match_id +EXPORT_SYMBOL_GPL vmlinux 0xeaa60d93 regulator_bulk_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0xeaa86620 clk_debugfs_add_file +EXPORT_SYMBOL_GPL vmlinux 0xeab250b9 shmem_read_mapping_page_gfp +EXPORT_SYMBOL_GPL vmlinux 0xeacf7686 cpufreq_frequency_table_get_index +EXPORT_SYMBOL_GPL vmlinux 0xead0aa9f usb_hcd_pci_probe +EXPORT_SYMBOL_GPL vmlinux 0xeae3ef3c usb_hcd_start_port_resume +EXPORT_SYMBOL_GPL vmlinux 0xeb0130f7 ping_common_sendmsg +EXPORT_SYMBOL_GPL vmlinux 0xeb07da4b sdio_writeb_readb +EXPORT_SYMBOL_GPL vmlinux 0xeb100663 ftrace_set_filter +EXPORT_SYMBOL_GPL vmlinux 0xeb18c55a irq_domain_xlate_twocell +EXPORT_SYMBOL_GPL vmlinux 0xeb1e7dfa tcp_reno_ssthresh +EXPORT_SYMBOL_GPL vmlinux 0xeb43a07d dm_get_rq_mapinfo +EXPORT_SYMBOL_GPL vmlinux 0xeb49a4cd pci_stop_root_bus +EXPORT_SYMBOL_GPL vmlinux 0xeb4fefe2 usb_hub_claim_port +EXPORT_SYMBOL_GPL vmlinux 0xeb63900d sdio_writeb +EXPORT_SYMBOL_GPL vmlinux 0xeb64e53a rtc_irq_set_freq +EXPORT_SYMBOL_GPL vmlinux 0xeb765544 ip6_dst_lookup_flow +EXPORT_SYMBOL_GPL vmlinux 0xeb7bc160 pci_user_write_config_byte +EXPORT_SYMBOL_GPL vmlinux 0xeb841b8a pci_generic_config_read32 +EXPORT_SYMBOL_GPL vmlinux 0xeb87637e spi_sync_locked +EXPORT_SYMBOL_GPL vmlinux 0xeb8ae736 klist_init +EXPORT_SYMBOL_GPL vmlinux 0xeb936eb9 cpufreq_cpu_get +EXPORT_SYMBOL_GPL vmlinux 0xeb9abbee ata_sff_queue_work +EXPORT_SYMBOL_GPL vmlinux 0xeb9dec04 max8997_read_reg +EXPORT_SYMBOL_GPL vmlinux 0xeba72aab tpm_pm_resume +EXPORT_SYMBOL_GPL vmlinux 0xebaeae99 input_ff_destroy +EXPORT_SYMBOL_GPL vmlinux 0xebdb31d4 analyse_instr +EXPORT_SYMBOL_GPL vmlinux 0xebdbb0cf rio_lock_device +EXPORT_SYMBOL_GPL vmlinux 0xebec57c4 ring_buffer_oldest_event_ts +EXPORT_SYMBOL_GPL vmlinux 0xebf70bd7 pci_disable_pri +EXPORT_SYMBOL_GPL vmlinux 0xec1b043e regulator_suspend_prepare +EXPORT_SYMBOL_GPL vmlinux 0xec1f79ec ata_sff_data_xfer_noirq +EXPORT_SYMBOL_GPL vmlinux 0xec25f967 klist_del +EXPORT_SYMBOL_GPL vmlinux 0xec3325e2 __clk_get_num_parents +EXPORT_SYMBOL_GPL vmlinux 0xec337a9c wm5110_patch +EXPORT_SYMBOL_GPL vmlinux 0xec3c183b fib_rules_unregister +EXPORT_SYMBOL_GPL vmlinux 0xecfe475a scsi_autopm_put_device +EXPORT_SYMBOL_GPL vmlinux 0xed1471f5 xfrm_audit_policy_delete +EXPORT_SYMBOL_GPL vmlinux 0xed47f07c rio_set_port_lockout +EXPORT_SYMBOL_GPL vmlinux 0xed583de8 __cpufreq_driver_target +EXPORT_SYMBOL_GPL vmlinux 0xed79df3b devm_rtc_device_register +EXPORT_SYMBOL_GPL vmlinux 0xedb55e49 flush_fp_to_thread +EXPORT_SYMBOL_GPL vmlinux 0xedc6e7ef tps6586x_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0xedcca4ed ip_local_out_sk +EXPORT_SYMBOL_GPL vmlinux 0xedddceaa cpufreq_generic_init +EXPORT_SYMBOL_GPL vmlinux 0xede151a5 inet_csk_reqsk_queue_hash_add +EXPORT_SYMBOL_GPL vmlinux 0xedf36c24 wbc_account_io +EXPORT_SYMBOL_GPL vmlinux 0xedfe4d72 device_property_read_u32_array +EXPORT_SYMBOL_GPL vmlinux 0xee247739 crypto_spawn_tfm +EXPORT_SYMBOL_GPL vmlinux 0xee30e87b wm8350_reg_write +EXPORT_SYMBOL_GPL vmlinux 0xee4ab600 ata_pci_remove_one +EXPORT_SYMBOL_GPL vmlinux 0xee4d36f3 uhci_reset_hc +EXPORT_SYMBOL_GPL vmlinux 0xee4e7ed5 of_init_opp_table +EXPORT_SYMBOL_GPL vmlinux 0xee6b71c4 syscon_regmap_lookup_by_compatible +EXPORT_SYMBOL_GPL vmlinux 0xee8deb88 led_trigger_blink_oneshot +EXPORT_SYMBOL_GPL vmlinux 0xeea8a2ae i2c_new_device +EXPORT_SYMBOL_GPL vmlinux 0xeeaafc3e pci_slots_kset +EXPORT_SYMBOL_GPL vmlinux 0xeed345a6 dm_suspended +EXPORT_SYMBOL_GPL vmlinux 0xeee9cea0 tps80031_ext_power_req_config +EXPORT_SYMBOL_GPL vmlinux 0xeefb0690 regmap_check_range_table +EXPORT_SYMBOL_GPL vmlinux 0xef00b5ea cpuidle_register_driver +EXPORT_SYMBOL_GPL vmlinux 0xef15f271 regmap_field_write +EXPORT_SYMBOL_GPL vmlinux 0xef1ab7c0 look_up_OID +EXPORT_SYMBOL_GPL vmlinux 0xef21006c phy_destroy +EXPORT_SYMBOL_GPL vmlinux 0xef343951 thermal_notify_framework +EXPORT_SYMBOL_GPL vmlinux 0xef401397 of_address_to_resource +EXPORT_SYMBOL_GPL vmlinux 0xef409b74 kmsg_dump_get_line +EXPORT_SYMBOL_GPL vmlinux 0xef464c28 getboottime64 +EXPORT_SYMBOL_GPL vmlinux 0xef6c3f70 round_jiffies_up_relative +EXPORT_SYMBOL_GPL vmlinux 0xef877b0c usb_submit_urb +EXPORT_SYMBOL_GPL vmlinux 0xef8bf2a3 phy_remove_lookup +EXPORT_SYMBOL_GPL vmlinux 0xef8c7850 pcap_adc_async +EXPORT_SYMBOL_GPL vmlinux 0xef96c059 ata_bmdma_port_ops +EXPORT_SYMBOL_GPL vmlinux 0xefa19d4a gpiochip_free_own_desc +EXPORT_SYMBOL_GPL vmlinux 0xefa2c27d register_tracepoint_module_notifier +EXPORT_SYMBOL_GPL vmlinux 0xefb3d277 dev_pm_opp_disable +EXPORT_SYMBOL_GPL vmlinux 0xefca7615 ata_std_qc_defer +EXPORT_SYMBOL_GPL vmlinux 0xefecdeb3 __blkg_prfill_rwstat +EXPORT_SYMBOL_GPL vmlinux 0xf01c55c0 ata_sas_port_alloc +EXPORT_SYMBOL_GPL vmlinux 0xf02abcf1 tps6586x_irq_get_virq +EXPORT_SYMBOL_GPL vmlinux 0xf02e8e66 powercap_unregister_control_type +EXPORT_SYMBOL_GPL vmlinux 0xf03c072f __ftrace_vbprintk +EXPORT_SYMBOL_GPL vmlinux 0xf04d158b dio_end_io +EXPORT_SYMBOL_GPL vmlinux 0xf057cd04 dma_buf_vmap +EXPORT_SYMBOL_GPL vmlinux 0xf060e6fa sata_link_resume +EXPORT_SYMBOL_GPL vmlinux 0xf0727f12 ktime_get_raw_fast_ns +EXPORT_SYMBOL_GPL vmlinux 0xf080ca8c tty_perform_flush +EXPORT_SYMBOL_GPL vmlinux 0xf0bd404f devm_spi_register_master +EXPORT_SYMBOL_GPL vmlinux 0xf0cbd9e2 ftrace_set_filter_ip +EXPORT_SYMBOL_GPL vmlinux 0xf0e3fddf simple_attr_open +EXPORT_SYMBOL_GPL vmlinux 0xf0f3a3d2 tty_port_tty_hangup +EXPORT_SYMBOL_GPL vmlinux 0xf0f5dbc2 timerqueue_iterate_next +EXPORT_SYMBOL_GPL vmlinux 0xf10b89de regulator_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0xf158f170 klist_add_tail +EXPORT_SYMBOL_GPL vmlinux 0xf1603096 ata_eh_freeze_port +EXPORT_SYMBOL_GPL vmlinux 0xf1627148 component_unbind_all +EXPORT_SYMBOL_GPL vmlinux 0xf17e5452 fuse_file_poll +EXPORT_SYMBOL_GPL vmlinux 0xf182768d ata_do_set_mode +EXPORT_SYMBOL_GPL vmlinux 0xf184d189 kernel_power_off +EXPORT_SYMBOL_GPL vmlinux 0xf196fe5c of_usb_get_dr_mode +EXPORT_SYMBOL_GPL vmlinux 0xf19e9188 fat_getattr +EXPORT_SYMBOL_GPL vmlinux 0xf1a41ccd input_ff_erase +EXPORT_SYMBOL_GPL vmlinux 0xf1a62b6f of_i8042_kbd_irq +EXPORT_SYMBOL_GPL vmlinux 0xf1b2fa8a regulator_set_drvdata +EXPORT_SYMBOL_GPL vmlinux 0xf1b31314 delayacct_on +EXPORT_SYMBOL_GPL vmlinux 0xf1c28e2f tty_prepare_flip_string +EXPORT_SYMBOL_GPL vmlinux 0xf1cd44cc cpufreq_frequency_table_verify +EXPORT_SYMBOL_GPL vmlinux 0xf1d14a00 class_destroy +EXPORT_SYMBOL_GPL vmlinux 0xf1edb5d5 __blkg_prfill_u64 +EXPORT_SYMBOL_GPL vmlinux 0xf2152c81 fb_sys_read +EXPORT_SYMBOL_GPL vmlinux 0xf21e1f9b disable_percpu_irq +EXPORT_SYMBOL_GPL vmlinux 0xf25bb527 blkg_lookup_create +EXPORT_SYMBOL_GPL vmlinux 0xf27977e2 async_synchronize_cookie_domain +EXPORT_SYMBOL_GPL vmlinux 0xf29e7fa1 skb_segment +EXPORT_SYMBOL_GPL vmlinux 0xf2a674eb __pci_reset_function +EXPORT_SYMBOL_GPL vmlinux 0xf2daa4ae regulator_get_voltage_sel_regmap +EXPORT_SYMBOL_GPL vmlinux 0xf2e71407 ata_sff_lost_interrupt +EXPORT_SYMBOL_GPL vmlinux 0xf2ef8566 of_overlay_create +EXPORT_SYMBOL_GPL vmlinux 0xf2f077cc pkey_id_type_name +EXPORT_SYMBOL_GPL vmlinux 0xf2fca922 uart_parse_options +EXPORT_SYMBOL_GPL vmlinux 0xf3012f6c rh_free +EXPORT_SYMBOL_GPL vmlinux 0xf30e105d ezx_pcap_write +EXPORT_SYMBOL_GPL vmlinux 0xf30fda27 lzo1x_decompress_safe +EXPORT_SYMBOL_GPL vmlinux 0xf31b3fd1 workqueue_set_max_active +EXPORT_SYMBOL_GPL vmlinux 0xf320e215 perf_event_disable +EXPORT_SYMBOL_GPL vmlinux 0xf322e615 of_dma_get_range +EXPORT_SYMBOL_GPL vmlinux 0xf331236f btree_geo32 +EXPORT_SYMBOL_GPL vmlinux 0xf33d0a24 __inet_twsk_hashdance +EXPORT_SYMBOL_GPL vmlinux 0xf33d511f mddev_resume +EXPORT_SYMBOL_GPL vmlinux 0xf3412224 clk_register +EXPORT_SYMBOL_GPL vmlinux 0xf34c4fef iptunnel_handle_offloads +EXPORT_SYMBOL_GPL vmlinux 0xf356cbf4 devfreq_event_set_event +EXPORT_SYMBOL_GPL vmlinux 0xf3607020 phy_create_lookup +EXPORT_SYMBOL_GPL vmlinux 0xf363c555 pwmchip_remove +EXPORT_SYMBOL_GPL vmlinux 0xf364ebb0 device_init_wakeup +EXPORT_SYMBOL_GPL vmlinux 0xf3790e5d spi_write_then_read +EXPORT_SYMBOL_GPL vmlinux 0xf37f957a adp5520_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0xf3808cb1 get_state_synchronize_rcu +EXPORT_SYMBOL_GPL vmlinux 0xf386330d rio_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0xf38bec6c ata_bmdma_post_internal_cmd +EXPORT_SYMBOL_GPL vmlinux 0xf3999d67 ata_std_sched_eh +EXPORT_SYMBOL_GPL vmlinux 0xf3a5b906 dma_request_slave_channel +EXPORT_SYMBOL_GPL vmlinux 0xf3b451ca kdb_poll_funcs +EXPORT_SYMBOL_GPL vmlinux 0xf3bcc9ea dm_internal_suspend_fast +EXPORT_SYMBOL_GPL vmlinux 0xf3dc1a61 hwmon_device_register +EXPORT_SYMBOL_GPL vmlinux 0xf3dd9d3f pci_device_is_present +EXPORT_SYMBOL_GPL vmlinux 0xf3eb5743 ata_dev_next +EXPORT_SYMBOL_GPL vmlinux 0xf3f18238 ktime_get_resolution_ns +EXPORT_SYMBOL_GPL vmlinux 0xf40ec994 of_pci_dma_configure +EXPORT_SYMBOL_GPL vmlinux 0xf4480ae1 sock_diag_register_inet_compat +EXPORT_SYMBOL_GPL vmlinux 0xf46666a4 bmp085_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0xf46a8c7b extcon_set_cable_state +EXPORT_SYMBOL_GPL vmlinux 0xf48ecb98 crypto_unregister_akcipher +EXPORT_SYMBOL_GPL vmlinux 0xf494f618 mmc_regulator_get_ocrmask +EXPORT_SYMBOL_GPL vmlinux 0xf499fdb2 rcu_barrier_bh +EXPORT_SYMBOL_GPL vmlinux 0xf49ada3a uart_insert_char +EXPORT_SYMBOL_GPL vmlinux 0xf4b333d1 synchronize_srcu_expedited +EXPORT_SYMBOL_GPL vmlinux 0xf4b833bf security_inode_create +EXPORT_SYMBOL_GPL vmlinux 0xf4da3546 kvmppc_init_lpid +EXPORT_SYMBOL_GPL vmlinux 0xf4fc2d6c __ring_buffer_alloc +EXPORT_SYMBOL_GPL vmlinux 0xf54940e0 devm_kasprintf +EXPORT_SYMBOL_GPL vmlinux 0xf54bd49b lcm +EXPORT_SYMBOL_GPL vmlinux 0xf553318d cpuidle_pause_and_lock +EXPORT_SYMBOL_GPL vmlinux 0xf558ba3d netdev_set_default_ethtool_ops +EXPORT_SYMBOL_GPL vmlinux 0xf5a691cd invalidate_bh_lrus +EXPORT_SYMBOL_GPL vmlinux 0xf5af6cf8 tpm2_startup +EXPORT_SYMBOL_GPL vmlinux 0xf5bcf1b2 __cookie_v4_check +EXPORT_SYMBOL_GPL vmlinux 0xf5be8c64 __class_create +EXPORT_SYMBOL_GPL vmlinux 0xf5ce887f power_supply_am_i_supplied +EXPORT_SYMBOL_GPL vmlinux 0xf5db03e2 sdio_writew +EXPORT_SYMBOL_GPL vmlinux 0xf5e2d2a1 ata_slave_link_init +EXPORT_SYMBOL_GPL vmlinux 0xf5e7f053 rh_destroy +EXPORT_SYMBOL_GPL vmlinux 0xf6002c88 od_register_powersave_bias_handler +EXPORT_SYMBOL_GPL vmlinux 0xf6149b3c mmput +EXPORT_SYMBOL_GPL vmlinux 0xf62b8822 ata_bmdma_stop +EXPORT_SYMBOL_GPL vmlinux 0xf6619a43 fsl_spi_cpm_bufs +EXPORT_SYMBOL_GPL vmlinux 0xf67b5319 ata_bmdma_start +EXPORT_SYMBOL_GPL vmlinux 0xf68b191f eventfd_fget +EXPORT_SYMBOL_GPL vmlinux 0xf699ad9b regmap_exit +EXPORT_SYMBOL_GPL vmlinux 0xf6bb2a98 thermal_zone_unbind_cooling_device +EXPORT_SYMBOL_GPL vmlinux 0xf6c8dc62 cpu_hotplug_enable +EXPORT_SYMBOL_GPL vmlinux 0xf6cab05a mbox_controller_unregister +EXPORT_SYMBOL_GPL vmlinux 0xf6d0275d agp_add_bridge +EXPORT_SYMBOL_GPL vmlinux 0xf6e874f5 ata_timing_merge +EXPORT_SYMBOL_GPL vmlinux 0xf6f74747 of_pci_range_parser_init +EXPORT_SYMBOL_GPL vmlinux 0xf6ff3a54 tpm_get_timeouts +EXPORT_SYMBOL_GPL vmlinux 0xf71a3614 wm831x_device_shutdown +EXPORT_SYMBOL_GPL vmlinux 0xf7393541 gpiochip_add +EXPORT_SYMBOL_GPL vmlinux 0xf7841929 bio_clone_mddev +EXPORT_SYMBOL_GPL vmlinux 0xf793319e virtio_device_freeze +EXPORT_SYMBOL_GPL vmlinux 0xf7f0f053 regulator_disable_deferred +EXPORT_SYMBOL_GPL vmlinux 0xf8030df9 ata_dummy_port_info +EXPORT_SYMBOL_GPL vmlinux 0xf80c1b28 pci_hp_add_bridge +EXPORT_SYMBOL_GPL vmlinux 0xf82f16b3 execute_in_process_context +EXPORT_SYMBOL_GPL vmlinux 0xf82f3657 work_on_cpu +EXPORT_SYMBOL_GPL vmlinux 0xf838e9e2 desc_to_gpio +EXPORT_SYMBOL_GPL vmlinux 0xf84c5a70 ping_proc_unregister +EXPORT_SYMBOL_GPL vmlinux 0xf860724c ata_sff_error_handler +EXPORT_SYMBOL_GPL vmlinux 0xf8802492 print_stack_trace +EXPORT_SYMBOL_GPL vmlinux 0xf882637b da9052_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0xf8991c38 dev_pm_qos_hide_flags +EXPORT_SYMBOL_GPL vmlinux 0xf8a65802 dma_get_required_mask +EXPORT_SYMBOL_GPL vmlinux 0xf8b015ce mbox_client_peek_data +EXPORT_SYMBOL_GPL vmlinux 0xf8b5a3c8 __blk_put_request +EXPORT_SYMBOL_GPL vmlinux 0xf8b959b9 crypto_tfm_in_queue +EXPORT_SYMBOL_GPL vmlinux 0xf8e6b564 hibernation_set_ops +EXPORT_SYMBOL_GPL vmlinux 0xf8f3a0fb ata_ratelimit +EXPORT_SYMBOL_GPL vmlinux 0xf8fe3d0b kmsg_dump_register +EXPORT_SYMBOL_GPL vmlinux 0xf90567dd crypto_register_aeads +EXPORT_SYMBOL_GPL vmlinux 0xf92791a1 gpiod_set_array_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0xf92ce956 kdb_printf +EXPORT_SYMBOL_GPL vmlinux 0xf932015f __raw_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xf9487b35 hvc_poll +EXPORT_SYMBOL_GPL vmlinux 0xf9505d7c blk_trace_remove +EXPORT_SYMBOL_GPL vmlinux 0xf95322f4 kthread_parkme +EXPORT_SYMBOL_GPL vmlinux 0xf9547a17 divider_recalc_rate +EXPORT_SYMBOL_GPL vmlinux 0xf96bf91c dev_attr_sw_activity +EXPORT_SYMBOL_GPL vmlinux 0xf9784362 exportfs_decode_fh +EXPORT_SYMBOL_GPL vmlinux 0xf991c09f rcu_qs_ctr +EXPORT_SYMBOL_GPL vmlinux 0xf9a054b5 __round_jiffies +EXPORT_SYMBOL_GPL vmlinux 0xf9c2da57 clkdev_create +EXPORT_SYMBOL_GPL vmlinux 0xf9ca3160 ata_id_xfermask +EXPORT_SYMBOL_GPL vmlinux 0xfa02c3d5 extcon_get_cable_state +EXPORT_SYMBOL_GPL vmlinux 0xfa1472e9 fwnode_property_read_u8_array +EXPORT_SYMBOL_GPL vmlinux 0xfa1eb910 unregister_syscore_ops +EXPORT_SYMBOL_GPL vmlinux 0xfa1f4662 scatterwalk_start +EXPORT_SYMBOL_GPL vmlinux 0xfa47b84a pci_walk_bus +EXPORT_SYMBOL_GPL vmlinux 0xfa4a8c5f ata_sas_queuecmd +EXPORT_SYMBOL_GPL vmlinux 0xfa4dbfaf inode_congested +EXPORT_SYMBOL_GPL vmlinux 0xfa5808aa regmap_update_bits +EXPORT_SYMBOL_GPL vmlinux 0xfa6bb7bd gpiochip_irqchip_add +EXPORT_SYMBOL_GPL vmlinux 0xfa6cb1bf power_supply_get_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0xfa8bf350 of_reset_control_get +EXPORT_SYMBOL_GPL vmlinux 0xfa99c7ec rio_unlock_device +EXPORT_SYMBOL_GPL vmlinux 0xfaa0176c bus_sort_breadthfirst +EXPORT_SYMBOL_GPL vmlinux 0xfab60503 klist_iter_init_node +EXPORT_SYMBOL_GPL vmlinux 0xfaf057b6 sysfs_remove_files +EXPORT_SYMBOL_GPL vmlinux 0xfaff651f sysfs_create_group +EXPORT_SYMBOL_GPL vmlinux 0xfb32b30f ring_buffer_read_prepare_sync +EXPORT_SYMBOL_GPL vmlinux 0xfb3588dc of_platform_populate +EXPORT_SYMBOL_GPL vmlinux 0xfb397043 _submit_bh +EXPORT_SYMBOL_GPL vmlinux 0xfb52b77d __wake_up_locked +EXPORT_SYMBOL_GPL vmlinux 0xfb6eedf9 power_group_name +EXPORT_SYMBOL_GPL vmlinux 0xfb714aa9 perf_tp_event +EXPORT_SYMBOL_GPL vmlinux 0xfb83db03 cpufreq_show_cpus +EXPORT_SYMBOL_GPL vmlinux 0xfb9c0620 thermal_zone_get_zone_by_name +EXPORT_SYMBOL_GPL vmlinux 0xfb9f3b0b thermal_zone_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xfbb1381d platform_device_add_resources +EXPORT_SYMBOL_GPL vmlinux 0xfbbd41ca no_action +EXPORT_SYMBOL_GPL vmlinux 0xfbcfdcfa bpf_prog_free +EXPORT_SYMBOL_GPL vmlinux 0xfbd132f3 platform_bus +EXPORT_SYMBOL_GPL vmlinux 0xfbef44e8 pci_user_read_config_word +EXPORT_SYMBOL_GPL vmlinux 0xfc00a94c init_uts_ns +EXPORT_SYMBOL_GPL vmlinux 0xfc03d97a page_is_ram +EXPORT_SYMBOL_GPL vmlinux 0xfc478b4f mmu_notifier_unregister_no_release +EXPORT_SYMBOL_GPL vmlinux 0xfc5006f6 fl6_sock_lookup +EXPORT_SYMBOL_GPL vmlinux 0xfc5e36b7 bus_create_file +EXPORT_SYMBOL_GPL vmlinux 0xfc86d9d9 md_allow_write +EXPORT_SYMBOL_GPL vmlinux 0xfcd7bc0b ring_buffer_empty +EXPORT_SYMBOL_GPL vmlinux 0xfce1e2d8 ipv6_proxy_select_ident +EXPORT_SYMBOL_GPL vmlinux 0xfceb2c1d usb_get_hcd +EXPORT_SYMBOL_GPL vmlinux 0xfcfb8388 pci_enable_rom +EXPORT_SYMBOL_GPL vmlinux 0xfd1f302b mpc8xxx_spi_tx_buf_u32 +EXPORT_SYMBOL_GPL vmlinux 0xfd2c93df lp8788_update_bits +EXPORT_SYMBOL_GPL vmlinux 0xfd4a2407 dev_pm_qos_hide_latency_limit +EXPORT_SYMBOL_GPL vmlinux 0xfd5cd03a tty_port_register_device +EXPORT_SYMBOL_GPL vmlinux 0xfd6b0d6f device_pm_wait_for_dev +EXPORT_SYMBOL_GPL vmlinux 0xfd6d70ae page_mkclean +EXPORT_SYMBOL_GPL vmlinux 0xfd7a50ea set_timer_slack +EXPORT_SYMBOL_GPL vmlinux 0xfd883f20 pm_runtime_barrier +EXPORT_SYMBOL_GPL vmlinux 0xfd922d3f crypto_alloc_shash +EXPORT_SYMBOL_GPL vmlinux 0xfdb561e5 ata_sas_port_resume +EXPORT_SYMBOL_GPL vmlinux 0xfdb80bb2 led_trigger_show +EXPORT_SYMBOL_GPL vmlinux 0xfdd4b49d __find_linux_pte_or_hugepte +EXPORT_SYMBOL_GPL vmlinux 0xfdd6fead subsys_find_device_by_id +EXPORT_SYMBOL_GPL vmlinux 0xfdd8ad4a platform_device_alloc +EXPORT_SYMBOL_GPL vmlinux 0xfdf53b82 trace_call_bpf +EXPORT_SYMBOL_GPL vmlinux 0xfdff2b34 pcibios_finish_adding_to_bus +EXPORT_SYMBOL_GPL vmlinux 0xfe22d3f3 of_dma_request_slave_channel +EXPORT_SYMBOL_GPL vmlinux 0xfe4805ff devm_of_phy_provider_unregister +EXPORT_SYMBOL_GPL vmlinux 0xfe485206 blkcg_activate_policy +EXPORT_SYMBOL_GPL vmlinux 0xfe52352e fat_free_clusters +EXPORT_SYMBOL_GPL vmlinux 0xfe57710c reset_controller_register +EXPORT_SYMBOL_GPL vmlinux 0xfe73d637 regulator_enable +EXPORT_SYMBOL_GPL vmlinux 0xfe870174 kvm_read_guest +EXPORT_SYMBOL_GPL vmlinux 0xfe974abe srcu_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0xfe990052 gpio_free +EXPORT_SYMBOL_GPL vmlinux 0xfeaf54ab perf_pmu_migrate_context +EXPORT_SYMBOL_GPL vmlinux 0xfed11ed1 usb_mon_deregister +EXPORT_SYMBOL_GPL vmlinux 0xfef56405 serial8250_do_shutdown +EXPORT_SYMBOL_GPL vmlinux 0xfef8a166 trace_current_buffer_lock_reserve +EXPORT_SYMBOL_GPL vmlinux 0xff05fa13 vring_interrupt +EXPORT_SYMBOL_GPL vmlinux 0xff291ecf clk_unregister_divider +EXPORT_SYMBOL_GPL vmlinux 0xff3dbdfe blk_rq_prep_clone +EXPORT_SYMBOL_GPL vmlinux 0xff49956a pci_rescan_bus +EXPORT_SYMBOL_GPL vmlinux 0xff51c790 gpiod_put_array +EXPORT_SYMBOL_GPL vmlinux 0xff5a8cfe cn_del_callback +EXPORT_SYMBOL_GPL vmlinux 0xff5db904 ata_pci_bmdma_clear_simplex +EXPORT_SYMBOL_GPL vmlinux 0xff633558 vprintk_default +EXPORT_SYMBOL_GPL vmlinux 0xff8862d7 rh_get_stats +EXPORT_SYMBOL_GPL vmlinux 0xff8cbf35 dma_buf_unmap_attachment +EXPORT_SYMBOL_GPL vmlinux 0xff8cdf21 ata_cable_80wire +EXPORT_SYMBOL_GPL vmlinux 0xff9a48f3 fwnode_property_read_string_array +EXPORT_SYMBOL_GPL vmlinux 0xff9bfddb rio_mport_write_config_16 +EXPORT_SYMBOL_GPL vmlinux 0xff9c1dcc spi_bus_unlock +EXPORT_SYMBOL_GPL vmlinux 0xffe55232 devres_alloc +EXPORT_SYMBOL_GPL vmlinux 0xfff0acad irq_map_generic_chip --- linux-raspi2-4.2.0.orig/debian.master/abi/4.2.0-26.31/powerpc/powerpc-e500mc.compiler +++ linux-raspi2-4.2.0/debian.master/abi/4.2.0-26.31/powerpc/powerpc-e500mc.compiler @@ -0,0 +1 @@ +GCC: (Ubuntu 5.2.1-22ubuntu2) 5.2.1 20151010 --- linux-raspi2-4.2.0.orig/debian.master/abi/4.2.0-26.31/powerpc/powerpc-e500mc.modules +++ linux-raspi2-4.2.0/debian.master/abi/4.2.0-26.31/powerpc/powerpc-e500mc.modules @@ -0,0 +1,4234 @@ +3c574_cs +3c589_cs +3c59x +3w-9xxx +3w-sas +3w-xxxx +6lowpan +6pack +8021q +8139cp +8139too +8250_dw +8255 +8255_pci +8390 +842 +842_compress +842_decompress +88pm800 +88pm805 +88pm80x +88pm80x_onkey +88pm8607 +88pm860x_battery +88pm860x_bl +88pm860x_charger +88pm860x_onkey +88pm860x-ts +9p +9pnet +9pnet_rdma +9pnet_virtio +a100u2w +a3d +a8293 +aacraid +aat2870_bl +aat2870-regulator +ab3100 +ab3100-otp +ac97_bus +acard-ahci +acecad +acenic +act200l-sir +act8865-regulator +act_bpf +act_connmark +act_csum +act_gact +act_ipt +actisys-sir +act_mirred +act_nat +act_pedit +act_police +act_simple +act_skbedit +act_vlan +ad2s1200 +ad2s1210 +ad2s90 +ad5064 +ad525x_dpot +ad525x_dpot-i2c +ad525x_dpot-spi +ad5360 +ad5380 +ad5398 +ad5421 +ad5446 +ad5449 +ad5504 +ad5624r_spi +ad5686 +ad5755 +ad5764 +ad5791 +ad5933 +ad714x +ad714x-i2c +ad714x-spi +ad7150 +ad7152 +ad7192 +ad7266 +ad7280a +ad7291 +ad7298 +ad7303 +ad7314 +ad7414 +ad7418 +ad7476 +ad7606 +ad7746 +ad7780 +ad7791 +ad7793 +ad7816 +ad7877 +ad7879 +ad7879-i2c +ad7879-spi +ad7887 +ad7923 +ad799x +ad8366 +ad9523 +ad9832 +ad9834 +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 +ade7753 +ade7754 +ade7758 +ade7759 +ade7854 +ade7854-i2c +ade7854-spi +adf4350 +adfs +adi +adis16060 +adis16080 +adis16130 +adis16136 +adis16201 +adis16203 +adis16204 +adis16209 +adis16220 +adis16240 +adis16260 +adis16400 +adis16480 +adis_lib +adjd_s311 +adl_pci6208 +adl_pci7x3x +adl_pci8164 +adl_pci9111 +adl_pci9118 +adm1021 +adm1025 +adm1026 +adm1029 +adm1031 +adm1275 +adm8211 +adm9240 +adp5520_bl +adp5520-keys +adp5588-keys +adp5589-keys +adp8860_bl +adp8870_bl +adq12b +ads1015 +ads7828 +ads7846 +ads7871 +ad_sigma_delta +adt7310 +adt7316 +adt7316-i2c +adt7316-spi +adt7410 +adt7411 +adt7462 +adt7470 +adt7475 +adt7x10 +adummy +adutux +adv7170 +adv7175 +adv7511 +adv7604 +adv7842 +advansys +adv_pci1710 +adv_pci1723 +adv_pci1724 +adv_pci_dio +adxl34x +adxl34x-i2c +adxl34x-spi +adxrs450 +af9013 +af9033 +af_alg +affs +af_key +af_packet_diag +af-rxrpc +ah4 +ah6 +aha152x_cs +ahci +ahci_ceva +ahci_platform +aic79xx +aic7xxx +aic94xx +aio_aio12_8 +aio_iiro_16 +aiptek +aircable +airo +airo_cs +airspy +ak8975 +al3320a +algif_aead +algif_hash +algif_rng +algif_skcipher +ali-ircc +alim7101_wdt +altera-ci +altera_jtaguart +altera_ps2 +altera-stapl +altera_tse +altera_uart +alx +am53c974 +ambassador +amc6821 +amd +amd5536udc +amd8111e +amdgpu +amplc_dio200 +amplc_dio200_common +amplc_dio200_pci +amplc_pc236 +amplc_pc236_common +amplc_pc263 +amplc_pci224 +amplc_pci230 +amplc_pci236 +amplc_pci263 +ams369fg06 +analog +anatop-regulator +ansi_cprng +anubis +aoe +apbps2 +apds9300 +apds9802als +apds990x +appledisplay +appletalk +appletouch +applicom +ar1021_i2c +ar5523 +ar7part +arc4 +arc_emac +arcmsr +arcnet +arc_ps2 +arc-rawmode +arc-rimi +arc_uart +arizona-haptics +arizona-i2c +arizona-ldo1 +arizona-micsupp +arizona-spi +ark3116 +arkfb +arptable_filter +arp_tables +arpt_mangle +as102_fe +as3711_bl +as3711-regulator +as3722-regulator +as3935 +as5011 +asc7621 +asix +ast +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 +ath3k +ath5k +ath6kl_core +ath6kl_sdio +ath6kl_usb +ath9k +ath9k_common +ath9k_htc +ath9k_hw +ati_remote +ati_remote2 +atl1 +atl1c +atl1e +atl2 +atm +atmel +atmel_cs +atmel-hlcdc +atmel_mxt_ts +atmel_pci +atmtcp +atp870u +atusb +atxp1 +atyfb +au0828 +au8522_common +au8522_decoder +au8522_dig +aufs +auo_k1900fb +auo_k1901fb +auo_k190x +auo-pixcir-ts +authenc +authencesn +auth_rpcgss +autofs4 +avma1_cs +avm_cs +avmfritz +ax25 +ax88179_178a +axnet_cs +axp20x-pek +axp20x-regulator +axp288_adc +axp288_charger +axp288_fuel_gauge +b1 +b1dma +b1pci +b1pcmcia +b2c2-flexcop +b2c2-flexcop-pci +b2c2-flexcop-usb +b43 +b43legacy +b44 +bas_gigaset +batman-adv +baycom_epp +baycom_par +baycom_ser_fdx +baycom_ser_hdx +bcache +bch +bcm203x +bcm3510 +bcm590xx +bcm590xx-regulator +bcm5974 +bcm7xxx +bcm87xx +bcma +bcma-hcd +bcm-keypad +bcmsysport +bd6107 +bdc +bdc_pci +be2iscsi +be2net +befs +belkin_sa +bfa +bfs +bfusb +bh1750 +bh1770glc +bh1780gli +binfmt_misc +block2mtd +blocklayoutdriver +blowfish_common +blowfish_generic +bluecard_cs +bluetooth +bluetooth_6lowpan +bma150 +bma180 +bmc150-accel +bmc150_magn +bmg160 +bmp085-i2c +bmp085-spi +bmp280 +bna +bnep +bnx2 +bnx2fc +bnx2i +bnx2x +bonding +bpa10x +bpck +bpck6 +bpqether +bq2415x_charger +bq24190_charger +bq24257_charger +bq24735-charger +bq25890_charger +bq27x00_battery +br2684 +brcmfmac +brcmsmac +brcmutil +bridge +br_netfilter +broadcom +broadsheetfb +bsd_comp +bt3c_cs +bt819 +bt856 +bt866 +bt878 +btbcm +btcoexist +btintel +btmrvl +btmrvl_sdio +btrfs +btrtl +btsdio +bttv +btuart_cs +btusb +btwilink +bu21013_ts +budget +budget-av +budget-ci +budget-core +budget-patch +BusLogic +c4 +c67x00 +c6xdigio +caam +caamalg +caamhash +caam_jr +caamrng +cachefiles +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-raw +cap11xx +capi +capidrv +capmode +carl9170 +carminefb +cassini +cast5_generic +cast6_generic +cast_common +catc +cb710 +cb710-mmc +cb_das16_cs +cb_pcidas +cb_pcidas64 +cb_pcidda +cb_pcimdas +cb_pcimdda +cc10001_adc +cc2520 +cc770 +cc770_isa +cc770_platform +c_can +c_can_pci +c_can_platform +cciss +ccm +cdc-acm +cdc_eem +cdc_ether +cdc_mbim +cdc_ncm +cdc-phonet +cdc_subset +cdc-wdm +ceph +cfg80211 +cfi_cmdset_0001 +cfi_cmdset_0002 +cfi_cmdset_0020 +cfi_probe +cfi_util +cfspi_slave +ch +ch341 +ch7006 +chacha20_generic +chacha20poly1305 +chaoskey +chipone_icn8318 +chipreg +chnl_net +cicada +cifs +ci_hdrc +ci_hdrc_imx +ci_hdrc_msm +ci_hdrc_pci +ci_hdrc_usb2 +ci_hdrc_zevio +cirrus +cirrusfb +clip +clk-cdce706 +clk-cdce925 +clk-max77686 +clk-max77802 +clk-palmas +clk-pwm +clk-rk808 +clk-s2mps11 +clk-si5351 +clk-si570 +clk-twl6040 +clk-wm831x +cls_basic +cls_bpf +cls_cgroup +cls_flow +cls_flower +cls_fw +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_cs +com20020-pci +com90io +com90xx +comedi +comedi_8254 +comedi_8255 +comedi_bond +comedi_isadma +comedi_parport +comedi_pci +comedi_pcmcia +comedi_test +comedi_usb +comm +configfs +contec_pci_dio +cordic +core +cp210x +cpia2 +cpm_uart +cpsw_ale +cpu-notifier-error-inject +cramfs +crc32 +crc7 +crc8 +crc-ccitt +crc-itu-t +cros_ec +cros_ec_devs +cros_ec_i2c +cros_ec_keyb +cros_ec_spi +cryptd +cryptoloop +crypto_null +crypto_user +cs5345 +cs53l32a +csiostor +ctr +cts +cuse +cw1200_core +cw1200_wlan_sdio +cw1200_wlan_spi +cx18 +cx18-alsa +cx22700 +cx22702 +cx231xx +cx231xx-alsa +cx231xx-dvb +cx2341x +cx23885 +cx24110 +cx24113 +cx24116 +cx24117 +cx24120 +cx24123 +cx25821 +cx25821-alsa +cx25840 +cx82310_eth +cx8800 +cx8802 +cx88-alsa +cx88-blackbird +cx88-dvb +cx88-vp3054-i2c +cx88xx +cxacru +cxd2099 +cxd2820r +cxgb +cxgb3 +cxgb3i +cxgb4 +cxgb4i +cxgb4vf +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 +da9030_battery +da9034-ts +da903x +da903x_bl +da9052-battery +da9052_bl +da9052-hwmon +da9052_onkey +da9052-regulator +da9052_tsi +da9052_wdt +da9055-hwmon +da9055_onkey +da9055-regulator +da9055_wdt +da9063_onkey +da9063-regulator +da9063_wdt +da9150-charger +da9150-core +da9150-gpadc +da9210-regulator +da9211-regulator +dac02 +DAC960 +daqboard2000 +das08 +das08_cs +das08_isa +das08_pci +das16 +das16m1 +das1800 +das6402 +das800 +davicom +db9 +dc395x +dccp +dccp_diag +dccp_ipv4 +dccp_ipv6 +dccp_probe +ddbridge +de2104x +de4x5 +decnet +deflate +defxx +denali +denali_dt +denali_pci +des_generic +designware_i2s +dgap +dgnc +dht11 +dib0070 +dib0090 +dib3000mb +dib3000mc +dib7000m +dib7000p +dib8000 +dibx000_common +digi_acceleport +digicolor-usart +diskonchip +divacapi +divadidd +diva_idi +diva_mnt +divas +dl2k +dlci +dlm +dln2 +dm1105 +dm9601 +dm-bio-prison +dm-bufio +dm-cache +dm-cache-cleaner +dm-cache-mq +dm-cache-smq +dm-crypt +dm-delay +dm-era +dmfe +dm-flakey +dm-log +dm-log-userspace +dm-log-writes +dmm32at +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-verity +dmx3191d +dm-zero +dnet +dn_rtmsg +docg3 +docg4 +donauboe +dp83867 +dpt_i2o +drbd +drbg +drm +drm_kms_helper +drv260x +drv2665 +drv2667 +drx39xyj +drxd +drxk +ds1621 +ds1682 +ds1wm +ds2482 +ds2490 +ds2760_battery +ds2780_battery +ds2781_battery +ds2782_battery +ds3000 +ds620 +dsbr100 +dscc4 +dss1_divert +dst +dst_ca +dstr +dt2801 +dt2811 +dt2814 +dt2815 +dt2817 +dt282x +dt3000 +dt3155 +dt9812 +dtl1_cs +dummy +dummy-irq +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-digitv +dvb-usb-dtt200u +dvb-usb-dtv5100 +dvb-usb-dvbsky +dvb-usb-dw2102 +dvb-usb-ec168 +dvb-usb-friio +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_v2 +dvb-usb-vp702x +dvb-usb-vp7045 +dwc3 +dwc3-pci +dw_dmac +dw_dmac_core +dw_dmac_pci +dwmac-generic +dwmac-ipq806x +dwmac-lpc18xx +dwmac-meson +dwmac-rk +dwmac-socfpga +dwmac-sti +dwmac-sunxi +dw_wdt +dyna_pci10xx +dynapro +e100 +e1000 +e1000e +e3x0-button +e4000 +earth-pt1 +earth-pt3 +eata +ebt_802_3 +ebtable_broute +ebtable_filter +ebtable_nat +ebtables +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 +ec100 +echainiv +echo +edac_core +edt-ft5x06 +eeprom +eeprom_93cx6 +eeprom_93xx46 +eeti_ts +efs +egalax_ts +ehset +elan_i2c +elants_i2c +elo +elsa_cs +em28xx +em28xx-alsa +em28xx-dvb +em28xx-rc +em28xx-v4l +emac_arc +emac_rockchip +emc1403 +emc2103 +emc6w201 +em_canid +em_cmp +emi26 +emi62 +em_ipset +em_meta +em_nbyte +empeg +ems_pci +ems_pcmcia +ems_usb +em_text +emu10k1-gp +em_u32 +enc28j60 +enclosure +eni +enic +epat +epia +epic100 +eql +esas2r +esd_usb2 +esi-sir +esp4 +esp6 +esp_scsi +et1011c +et131x +ethoc +evbug +exofs +extcon-adc-jack +extcon-arizona +extcon-axp288 +extcon-gpio +extcon-max14577 +extcon-max77693 +extcon-max77843 +extcon-max8997 +extcon-palmas +extcon-rt8973a +extcon-sm5502 +extcon-usb-gpio +ezusb +f2fs +f75375s +f81232 +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_ssd1289 +fb_ssd1306 +fb_ssd1331 +fb_ssd1351 +fb_st7735r +fbtft +fbtft_device +fb_tinylcd +fb_tls8204 +fb_uc1701 +fb_upd161704 +fb_watterott +fc0011 +fc0012 +fc0013 +fc2580 +fcoe +fcrypt +fdomain +fdomain_cs +fealnx +ff-memless +fid +firedtv +firestream +firewire-core +firewire-net +firewire-ohci +firewire-sbp2 +firewire-serial +fit2 +fit3 +fixed +fl512 +fld +flexcan +flexfb +floppy +fm10k +fm801-gp +fmc +fmc-chardev +fmc-fakedev +fmc-trivial +fmc-write-eeprom +fm_drv +fmvj18x_cs +forcedeth +fore_200e +fotg210-hcd +fotg210-udc +fou +freevxfs +friq +frpw +fsa9480 +fscache +fs_enet +fsl-corenet-cf +fsl-diu-fb +fsldma +fsl-edma +fsl_elbc_nand +fsl_hypervisor +fsl_ifc_nand +fsl_lpuart +fsl_pq_mdio +fsl_qe_udc +fsl_upm +fsl_usb2_udc +ft1000 +ft1000_pcmcia +ftdi-elan +ftdi_sio +ftl +fujitsu_ts +fusbh200-hcd +g450_pll +g760a +g762 +g_acm_ms +gadgetfs +gamecon +gameport +garmin_gps +garp +g_audio +g_cdc +gcm +g_dbgp +gdmtty +gdmulte +gdmwm +gdth +generic +generic-adc-battery +generic_bl +genet +geneve +geneve_core +gen_probe +g_ether +gf128mul +gf2k +g_ffs +gfs2 +ghash-generic +g_hid +gianfar_driver +gianfar_ptp +gigaset +girbil-sir +gl518sm +gl520sm +gl620a +gluebi +g_mass_storage +g_midi +g_ncm +g_nokia +go7007 +go7007-loader +go7007-usb +goku_udc +goodix +gp2ap002a00f +gp2ap020a00f +gpio +gpio-74x164 +gpio-74xx-mmio +gpio-addr-flash +gpio-adnp +gpio-adp5520 +gpio-adp5588 +gpio-altera +gpio-amd8111 +gpio-arizona +gpio_backlight +gpio-beeper +gpio-charger +gpio-crystalcove +gpio-da9052 +gpio-da9055 +gpio-dln2 +gpio-dwapb +gpio-fan +gpio-generic +gpio-grgpio +gpio-ir-recv +gpio-janz-ttl +gpio-kempld +gpio_keys +gpio_keys_polled +gpio-lp3943 +gpio-max7300 +gpio-max7301 +gpio-max730x +gpio-max732x +gpio-mc33880 +gpio-mcp23s08 +gpio-ml-ioh +gpio_mouse +gpio-pca953x +gpio-pcf857x +gpio-rdc321x +gpio-regulator +gpio-sch311x +gpio-syscon +gpio_tilt_polled +gpio-tps65912 +gpio-twl4030 +gpio-twl6040 +gpio-ucb1400 +gpio-viperboard +gpio-vx855 +gpio_wdt +gpio-wm831x +gpio-wm8350 +gpio-wm8994 +g_printer +grace +grcan +gre +grip +grip_mp +gr_udc +gsc_hpdi +g_serial +gs_fpga +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 +gs_usb +gtco +guillemot +gunze +g_webcam +gxt4500 +g_zero +hackrf +hamachi +hampshire +hanwang +hci +hci_uart +hci_vhci +hdlc +hdlc_cisco +hdlcdrv +hdlc_fr +hdlc_ppp +hdlc_raw +hdlc_raw_eth +hdlc_x25 +hdpvr +he +hexium_gemini +hexium_orion +hfc4s8s_l1 +hfcmulti +hfcpci +hfcsusb +hfc_usb +hfs +hfsplus +hi6421-pmic-core +hi6421-regulator +hid +hid-a4tech +hid-apple +hid-appleir +hid-aureal +hid-axff +hid-belkin +hid-betopff +hid-cherry +hid-chicony +hid-cp2112 +hid-cypress +hid-dr +hid-elecom +hid-elo +hid-emsff +hid-ezkey +hid-gaff +hid-generic +hid-gt683r +hid-gyration +hid-holtekff +hid-holtek-kbd +hid-holtek-mouse +hid-icade +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 +hidp +hid-penmount +hid-petalynx +hid-picolcd +hid-pl +hid-plantronics +hid-primax +hid-prodikeys +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-iio-common +hid-sensor-incl-3d +hid-sensor-magn-3d +hid-sensor-press +hid-sensor-prox +hid-sensor-rotation +hid-sensor-trigger +hid-sjoy +hid-sony +hid-speedlink +hid-steelseries +hid-sunplus +hid-thingm +hid-tivo +hid-tmff +hid-topseed +hid-twinhan +hid-uclogic +hid-waltop +hid-wiimote +hid-xinmo +hid-zpff +hid-zydacron +hih6130 +hisax +hisax_fcpcipnp +hisax_isac +hisax_st5481 +hisi504_nand +hmc5843_core +hmc5843_i2c +hmc5843_spi +hmc6352 +hopper +horizon +hostap +hostap_cs +hostap_pci +hostap_plx +hp100 +hpfs +hpilo +hpsa +hptiop +hsi +hsi_char +hso +hsr +hsu_dma +hsu_dma_pci +htc-pasic3 +htu21 +huawei_cdc_ncm +hwa-hc +hwa-rc +hwmon-vid +hx8357 +hysdn +i1480-dfu-usb +i1480-est +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-cpm +i2c-cros-ec-tunnel +i2c-designware-core +i2c-designware-pci +i2c-designware-platform +i2c-diolan-u2c +i2c-dln2 +i2c-gpio +i2c-hid +i2c-i801 +i2c-isch +i2c-kempld +i2c-matroxfb +i2c-mpc +i2c-mux +i2c-mux-gpio +i2c-mux-pca9541 +i2c-mux-pca954x +i2c-nforce2 +i2c-ocores +i2c-parport +i2c-parport-light +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 +i40e +i40evf +i5k_amb +i6300esb +i740fb +i82092 +ib_addr +ib_cm +ib_core +ib_ipoib +ib_iser +ib_isert +ib_mad +ibmaem +ibmpex +ib_mthca +ib_sa +ib_srp +ib_srpt +ib_ucm +ib_umad +ib_uverbs +icplus +icp_multi +ics932s401 +ideapad_slidebar +idma64 +idmouse +idt77252 +idtcps +idt_gen2 +ieee802154 +ieee802154_6lowpan +ieee802154_socket +ifb +iforce +igb +igbvf +igorplugusb +iguanair +iio_dummy +iio_hwmon +iio-trig-interrupt +iio-trig-periodic-rtc +iio-trig-sysfs +ii_pci20kc +ili210x +ili922x +ili9320 +imm +imon +ims-pcu +imx074 +imx_thermal +ina209 +ina2xx +industrialio +industrialio-triggered-buffer +inet_diag +inexio +inftl +initio +input-leds +input-polldev +int51x1 +intel_vr_nor +interact +interval_tree_test +inv-mpu6050 +ioc4 +io_edgeport +io_ti +iowarrior +ip6_gre +ip6table_filter +ip6table_mangle +ip6table_nat +ip6table_raw +ip6_tables +ip6table_security +ip6t_ah +ip6t_eui64 +ip6t_frag +ip6t_hbh +ip6t_ipv6header +ip6t_MASQUERADE +ip6t_mh +ip6t_NPT +ip6t_REJECT +ip6t_rpfilter +ip6t_rt +ip6t_SYNPROXY +ip6_tunnel +ip6_udp_tunnel +ip6_vti +ipack +ipaq +ipcomp +ipcomp6 +ipddp +ipg +ip_gre +iphase +ipheth +ipip +ipmi_devintf +ipmi_msghandler +ipmi_poweroff +ipmi_si +ipmi_ssif +ipmi_watchdog +ipoctal +ipr +ips +ip_set +ip_set_bitmap_ip +ip_set_bitmap_ipmac +ip_set_bitmap_port +ip_set_hash_ip +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 +iptable_filter +iptable_mangle +iptable_nat +iptable_raw +ip_tables +iptable_security +ipt_ah +ipt_CLUSTERIP +ipt_ECN +ipt_MASQUERADE +ipt_REJECT +ipt_rpfilter +ipt_SYNPROXY +ip_tunnel +ipvlan +ip_vs +ip_vs_dh +ip_vs_fo +ip_vs_ftp +ip_vs_lblc +ip_vs_lblcr +ip_vs_lc +ip_vs_nq +ip_vs_pe_sip +ip_vs_rr +ip_vs_sed +ip_vs_sh +ip_vs_wlc +ip_vs_wrr +ip_vti +ipw +ipw2100 +ipw2200 +ipwireless +ipx +ircomm +ircomm-tty +irda +irda-usb +ir-hix5hd2 +ir-jvc-decoder +ir-kbd-i2c +irlan +ir-lirc-codec +ir-mce_kbd-decoder +ir-nec-decoder +irnet +ir-rc5-decoder +ir-rc6-decoder +ir-sanyo-decoder +ir-sharp-decoder +ir-sony-decoder +irtty-sir +ir-usb +ir-xmp-decoder +iscsi_boot_sysfs +iscsi_target_mod +iscsi_tcp +isdn +isdn_bsdcomp +isdnhdlc +isicom +isight_firmware +isl29003 +isl29018 +isl29020 +isl29028 +isl29125 +isl6271a-regulator +isl6405 +isl6421 +isl6423 +isl9305 +isofs +isp116x-hcd +isp1362-hcd +isp1704_charger +isp1760 +it913x +itd1000 +itg3200 +iuu_phoenix +ivtv +ivtv-alsa +ivtvfb +iw_c2 +iw_cm +iw_cxgb3 +iw_cxgb4 +iwl3945 +iwl4965 +iwldvm +iwlegacy +iwlmvm +iwlwifi +iw_nes +ix2505v +ixgb +ixgbe +ixgbevf +janz-cmodio +janz-ican3 +jc42 +jedec_probe +jffs2 +jfs +jitterentropy_rng +jmb38x_ms +jme +joydev +joydump +jr3_pci +jsa1212 +jsm +kafs +kalmia +kaweth +kbic +kbtab +kcomedilib +ke_counter +kempld-core +kempld_wdt +kernelcapi +keyspan +keyspan_pda +keyspan_remote +kfifo_buf +khazad +kingsun-sir +kl5kusb105 +kmx61 +ko2iblnd +kobil_sct +ks0108 +ks0127 +ks8842 +ks8851 +ks8851_mll +ks959-sir +ksdazzle-sir +ksocklnd +ksz884x +ktti +kvaser_pci +kvaser_usb +kxcjk-1013 +kxsd9 +kxtj9 +kyrofb +l1oip +l2tp_core +l2tp_debugfs +l2tp_eth +l2tp_ip +l2tp_ip6 +l2tp_netlink +l2tp_ppp +l4f00242t03 +l64781 +lanai +lapb +lapbether +latch-addr-flash +lattice-ecp3-config +lcd +ld9040 +ldusb +lec +led-class-flash +leds-88pm860x +leds-adp5520 +leds-bcm6328 +leds-bcm6358 +leds-bd2802 +leds-blinkm +leds-da903x +leds-da9052 +leds-dac124s085 +leds-gpio +leds-ktd2692 +leds-lm3530 +leds-lm3533 +leds-lm355x +leds-lm3642 +leds-lp3944 +leds-lp8788 +leds-lp8860 +leds-lt3593 +leds-max77693 +leds-max8997 +leds-mc13783 +leds-menf21bmc +leds-pca9532 +leds-pca955x +leds-pca963x +leds-pm8941-wled +leds-pwm +leds-regulator +leds-tca6507 +leds-tlc591xx +leds-wm831x-status +leds-wm8350 +ledtrig-backlight +ledtrig-camera +ledtrig-default-on +ledtrig-gpio +ledtrig-heartbeat +ledtrig-oneshot +ledtrig-timer +ledtrig-transient +legousbtower +lg2160 +lgdt3305 +lgdt3306a +lgdt330x +lgs8gxx +lg-vl600 +lib80211 +lib80211_crypt_ccmp +lib80211_crypt_tkip +lib80211_crypt_wep +libahci +libahci_platform +libceph +libcfs +libcomposite +libcrc32c +libcxgbi +libertas +libertas_cs +libertas_sdio +libertas_spi +libertas_tf +libertas_tf_usb +libfc +libfcoe +libipw +libiscsi +libiscsi_tcp +libore +libosd +libsas +lightning +lineage-pem +linear +lirc_bt829 +lirc_dev +lirc_imon +lirc_parallel +lirc_sasem +lirc_serial +lirc_sir +lirc_zilog +lis3l02dq +lis3lv02d +lis3lv02d_i2c +lis3lv02d_spi +litelink-sir +lkkbd +llc +llc2 +llite_lloop +ll_temac +lm25066 +lm3533-als +lm3533_bl +lm3533-core +lm3533-ctrlbank +lm3630a_bl +lm3639_bl +lm63 +lm70 +lm73 +lm75 +lm77 +lm78 +lm80 +lm83 +lm8323 +lm8333 +lm85 +lm87 +lm90 +lm92 +lm93 +lm95234 +lm95241 +lm95245 +lmc +lms283gf05 +lms501kf03 +lmv +lnbp21 +lnbp22 +lnet +lnet_selftest +lockd +locktorture +lov +lp +lp3943 +lp3971 +lp3972 +lp855x_bl +lp8727_charger +lp872x +lp8755 +lp8788_adc +lp8788_bl +lp8788-buck +lp8788-charger +lp8788-ldo +lpc_ich +lpc_sch +lpddr_cmds +lpfc +lru_cache +lrw +ltc2941-battery-gauge +ltc2945 +ltc2978 +ltc3589 +ltc4151 +ltc4215 +ltc4222 +ltc4245 +ltc4260 +ltc4261 +ltr501 +ltv350qv +lustre +lv5207lp +lvstest +lxt +lz4 +lz4_compress +lz4hc +lz4hc_compress +m25p80 +m2m-deinterlace +m52790 +m62332 +m88ds3103 +m88rs2000 +m88rs6000t +ma600-sir +mac80211 +mac80211_hwsim +mac802154 +macb +mac-celtic +mac-centeuro +mac-croatian +mac-cyrillic +mac-gaelic +mac-greek +mac_hid +mac-iceland +mac-inuit +mac-roman +mac-romanian +mac-turkish +macvlan +macvtap +mag3110 +magellan +mailbox-altera +mantis +mantis_core +map_absent +map_funcs +map_ram +map_rom +marvell +matrix-keymap +matrix_keypad +matroxfb_accel +matroxfb_base +matroxfb_crtc2 +matroxfb_DAC1064 +matroxfb_g450 +matroxfb_maven +matroxfb_misc +matroxfb_Ti3026 +matrox_w1 +max1027 +max1111 +max11801_ts +max1363 +max14577 +max14577_charger +max1586 +max16064 +max16065 +max1619 +max1668 +max17040_battery +max17042_battery +max197 +max2165 +max3100 +max3421-hcd +max34440 +max517 +max5821 +max63xx_wdt +max6639 +max6642 +max6650 +max6697 +max6875 +max7359_keypad +max77686 +max77693 +max77693_charger +max77693-haptic +max77802 +max77843 +max77843-haptic +max8649 +max8660 +max8688 +max8903_charger +max8907 +max8907-regulator +max8925_bl +max8925_onkey +max8925_power +max8925-regulator +max8952 +max8973-regulator +max8997 +max8997_charger +max8997_haptic +max8998 +max8998_charger +mb862xxfb +mb86a16 +mb86a20s +mc13783-adc +mc13783-pwrbutton +mc13783-regulator +mc13783_ts +mc13892-regulator +mc13xxx-core +mc13xxx-i2c +mc13xxx-regulator-core +mc13xxx-spi +mc44s803 +m_can +mcb +mcb-pci +mceusb +mcp2120-sir +mcp251x +mcp3021 +mcp320x +mcp3422 +mcp4725 +mcp4922 +mcryptd +mcs5000_ts +mcs7780 +mcs7830 +mcs_touchkey +mct_u232 +md4 +md5-ppc +mdc +mdc800 +md-cluster +mdio +mdio-bcm-unimac +mdio-bitbang +mdio-gpio +mdio-mux +mdio-mux-gpio +mdio-mux-mmioreg +me4000 +me_daq +media +megaraid +megaraid_mbox +megaraid_mm +megaraid_sas +memstick +mena21_wdt +menf21bmc +menf21bmc_hwmon +menf21bmc_wdt +men_z135_uart +men_z188_adc +metronomefb +metro-usb +mf6x4 +mga +mgc +michael_mic +micrel +microread +microread_i2c +microtek +mii +mii-bitbang +minix +mip6 +mISDN_core +mISDN_dsp +mISDNinfineon +mISDNipac +mISDNisar +mite +mk712 +mkiss +mlx4_core +mlx4_en +mlx4_ib +mlx5_core +mlx5_ib +mlx90614 +mma8450 +mma8452 +mma9551 +mma9551_core +mma9553 +mmc35240 +mmc_block +mms114 +mn88472 +mn88473 +mos7720 +mos7840 +moxa +mpc624 +mpc85xx_edac +mpl115 +mpl3115 +mpls_gso +mpls_router +mpoa +mpr121_touchkey +mpt2sas +mpt3sas +mptbase +mptctl +mptfc +mptlan +mptsas +mptscsih +mptspi +mpu3050 +mrf24j40 +mrp +ms5611_core +ms5611_i2c +ms5611_spi +ms_block +msdos +msi001 +msi2500 +msp3400 +mspro_block +mt2060 +mt2063 +mt20xx +mt2131 +mt2266 +mt29f_spinand +mt312 +mt352 +mt6397-core +mt6397-regulator +mt7601u +mt9m001 +mt9m111 +mt9t031 +mt9t112 +mt9v011 +mt9v022 +mtd +mtd_blkdevs +mtdblock +mtdblock_ro +mtd_dataflash +mtdoops +mtdram +mtdswap +mtip32xx +mtk-sd +mtouch +multipath +multiq3 +musb_hdrc +mv643xx_eth +mvmdio +mvsas +mv_u3d_core +mv_udc +mvumi +mwifiex +mwifiex_pcie +mwifiex_sdio +mwifiex_usb +mwl8k +mxb +mxl111sf-demod +mxl111sf-tuner +mxl301rf +mxl5005s +mxl5007t +mxser +mxuport +myri10ge +nand +nand_bch +nand_ecc +nand_ids +nandsim +national +natsemi +nau7802 +navman +nbd +nci +nci_uart +ncpfs +nct7802 +nct7904 +nd_blk +nd_btt +nd_pmem +ne2k-pci +neofb +net1080 +net2272 +net2280 +netconsole +netjet +netlink_diag +netrom +netxen_nic +newtonkbd +nfc +nfc_digital +nfcmrvl +nfcmrvl_uart +nfcmrvl_usb +nf_conntrack +nf_conntrack_amanda +nf_conntrack_broadcast +nf_conntrack_ftp +nf_conntrack_h323 +nf_conntrack_ipv4 +nf_conntrack_ipv6 +nf_conntrack_irc +nf_conntrack_netbios_ns +nf_conntrack_netlink +nf_conntrack_pptp +nf_conntrack_proto_dccp +nf_conntrack_proto_gre +nf_conntrack_proto_sctp +nf_conntrack_proto_udplite +nf_conntrack_sane +nf_conntrack_sip +nf_conntrack_snmp +nf_conntrack_tftp +nfcsim +nfcwilink +nf_defrag_ipv4 +nf_defrag_ipv6 +nf_log_arp +nf_log_bridge +nf_log_common +nf_log_ipv4 +nf_log_ipv6 +nf_nat +nf_nat_amanda +nf_nat_ftp +nf_nat_h323 +nf_nat_ipv4 +nf_nat_ipv6 +nf_nat_irc +nf_nat_masquerade_ipv4 +nf_nat_masquerade_ipv6 +nf_nat_pptp +nf_nat_proto_dccp +nf_nat_proto_gre +nf_nat_proto_sctp +nf_nat_proto_udplite +nf_nat_redirect +nf_nat_sip +nf_nat_snmp_basic +nf_nat_tftp +nfnetlink +nfnetlink_acct +nfnetlink_cthelper +nfnetlink_cttimeout +nfnetlink_log +nfnetlink_queue +nf_reject_ipv4 +nf_reject_ipv6 +nfs +nfs_acl +nfsd +nfs_layout_flexfiles +nfs_layout_nfsv41_files +nfsv2 +nfsv3 +nfsv4 +nf_synproxy_core +nf_tables +nf_tables_arp +nf_tables_bridge +nf_tables_inet +nf_tables_ipv4 +nf_tables_ipv6 +nf_tables_netdev +nft_chain_nat_ipv4 +nft_chain_nat_ipv6 +nft_chain_route_ipv4 +nft_chain_route_ipv6 +nft_compat +nft_counter +nft_ct +nft_exthdr +nft_hash +nftl +nft_limit +nft_log +nft_masq +nft_masq_ipv4 +nft_masq_ipv6 +nft_meta +nft_meta_bridge +nft_nat +nft_queue +nft_rbtree +nft_redir +nft_redir_ipv4 +nft_redir_ipv6 +nft_reject +nft_reject_bridge +nft_reject_inet +nft_reject_ipv4 +nft_reject_ipv6 +ngene +n_gsm +nhc_dest +nhc_fragment +nhc_hop +nhc_ipv6 +nhc_mobility +nhc_routing +nhc_udp +n_hdlc +ni_6527 +ni_65xx +ni_660x +ni_670x +ni_at_a2150 +ni_at_ao +ni_atmio +ni_atmio16d +nicstar +ni_daq_700 +ni_daq_dio24 +ni_labpc +ni_labpc_common +ni_labpc_cs +ni_labpc_isadma +ni_labpc_pci +nilfs2 +ni_mio_cs +ni_pcidio +ni_pcimio +ni_tio +ni_tiocmd +niu +ni_usb6501 +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 +nosy +notifier-error-inject +nouveau +nozomi +nps_enet +n_r3964 +ns558 +ns83820 +nsc-ircc +nsp32 +nsp_cs +ntb +ntb_netdev +ntb_pingpong +ntb_tool +ntb_transport +ntc_thermistor +ntfs +n_tracerouter +n_tracesink +null_blk +nvidiafb +nvme +nxp-nci +nxp-nci_i2c +nxt200x +nxt6000 +obdclass +obdecho +objlayoutdriver +ocfb +ocfs2 +ocfs2_dlm +ocfs2_dlmfs +ocfs2_nodemanager +ocfs2_stackglue +ocfs2_stack_o2cb +ocfs2_stack_user +ocrdma +ofpart +of_xilinx_wdt +old_belkin-sir +omap4-keypad +omfs +omninet +on20 +on26 +onenand +opencores-kbd +openvswitch +oprofile +opticon +option +or51132 +or51211 +orinoco +orinoco_cs +orinoco_nortel +orinoco_plx +orinoco_tmd +orinoco_usb +osc +osd +osdblk +osst +oti6858 +ov2640 +ov5642 +ov6650 +ov7640 +ov7670 +ov772x +ov9640 +ov9740 +overlay +oxu210hp-hcd +ozwpan +p54common +p54pci +p54spi +p54usb +p8022 +p8023 +palmas-pwrbutton +palmas-regulator +pandora_bl +panel +panel-ld9040 +panel-s6e8aa0 +panel-sharp-lq101r1sx01 +panel-simple +paride +parkbd +parport +parport_ax88796 +parport_cs +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_pcmcia +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 +pc300too +pcap_keys +pcap-regulator +pcap_ts +pcbc +pcd +pcf50633 +pcf50633-adc +pcf50633-backlight +pcf50633-charger +pcf50633-gpio +pcf50633-input +pcf50633-regulator +pcf8574_keypad +pcf8591 +pch_udc +pci +pci200syn +pcips2 +pci-stub +pcl711 +pcl724 +pcl726 +pcl730 +pcl812 +pcl816 +pcl818 +pcm3724 +pcmad +pcmcia +pcmcia_core +pcmciamtd +pcmcia_rsrc +pcmda12 +pcmmio +pcmuio +pcnet32 +pcnet_cs +pcrypt +pcwd_pci +pcwd_usb +pd +pd6729 +pda_power +pdc_adma +peak_pci +peak_pcmcia +peak_usb +pegasus +penmount +percpu_test +pf +pfuze100-regulator +pg +phantom +phonet +phram +phy-bcm-kona-usb2 +phy-exynos-usb2 +phy-gpio-vbus-usb +phy-isp1301 +phy-pxa-28nm-hsic +phy-pxa-28nm-usb2 +physmap +physmap_of +phy-tahvo +phy-tusb1210 +pixcir_i2c_ts +pkcs7_message +pkcs7_test_key +pktcdvd +pktgen +pl2303 +platform_lcd +plat_nand +plat-ram +plip +plusb +pluto2 +plx_pci +pm2fb +pm3fb +pm80xx +pmbus +pmbus_core +pmc551 +pmcraid +pm-notifier-error-inject +pn533 +pn544 +pn544_i2c +pn_pep +poly1305_generic +port100 +powermate +powr1220 +ppa +ppdev +ppp_async +ppp_deflate +ppp_mppe +pppoatm +pppoe +pppox +ppp_synctty +pps_core +pps-gpio +pps-ldisc +pps_parport +pptp +prism2_usb +ps2mult +ps8622 +psmouse +psnap +pt +ptlrpc +ptn3460 +ptp +pvrusb2 +pwc +pwm-atmel-hlcdc +pwm-beeper +pwm_bl +pwm-fan +pwm-fsl-ftm +pwm-lp3943 +pwm-pca9685 +pwm-regulator +pwm-twl +pwm-twl-led +pxa27x_udc +qcaspi +qcaux +qcom-spmi-iadc +qcom_spmi-regulator +qcom-spmi-temp-alarm +qcom-spmi-vadc +qcserial +qinfo_probe +qla1280 +qla2xxx +qla3xxx +qla4xxx +qlcnic +qlge +qlogic_cs +qlogicfas408 +qm1d1c0042 +qmi_wwan +qnx4 +qnx6 +qoriq-cpufreq +qsemi +qt1010 +qt1070 +qt2160 +quatech2 +quatech_daqp_cs +quota_tree +quota_v1 +quota_v2 +qxl +r128 +r592 +r6040 +r8152 +r8169 +r8188eu +r8192e_pci +r8192u_usb +r820t +r852 +r8712u +r8723au +r8a66597-hcd +r8a66597-udc +radeon +radeonfb +radio-bcm2048 +radio-i2c-si470x +radio-keene +radio-ma901 +radio-maxiradio +radio-mr800 +radio-platform-si4713 +radio-raremono +radio-shark +radio-si476x +radio-tea5764 +radio-usb-si470x +radio-usb-si4713 +radio-wl1273 +raid0 +raid1 +raid10 +raid456 +raid6_pq +raid6test +raid_class +ramoops +raw +ray_cs +rbd +rbtree_test +rc5t583-regulator +rc-adstech-dvb-t-pci +rc-alink-dtu-m +rc-anysee +rc-apac-viewcomp +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-behold +rc-behold-columbus +rc-budget-ci-old +rc-cinergy +rc-cinergy-1400 +rc-core +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-dvbsky +rc-em-terratec +rc-encore-enltv +rc-encore-enltv2 +rc-encore-enltv-fm53 +rc-evga-indtube +rc-eztv +rc-flydvb +rc-flyvideo +rc-fusionhdtv-mce +rc-gadmei-rm008z +rc-genius-tvgo-a11mce +rc-gotview7135 +rc-hauppauge +rc-imon-mce +rc-imon-pad +rc-iodata-bctv7e +rc-it913x-v1 +rc-it913x-v2 +rc-kaiomy +rc-kworld-315u +rc-kworld-pc150u +rc-kworld-plus-tv-analog +rc-leadtek-y04g0051 +rc-lirc +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-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-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-twinhan1027 +rc-twinhan-dtv-cab-ci +rc-videomate-m1f +rc-videomate-s350 +rc-videomate-tv-pvr +rc-winfast +rc-winfast-usbii-deluxe +rdc321x-southbridge +rdma_cm +rdma_ucm +rds +rds_rdma +rds_tcp +realtek +redboot +redrat3 +reed_solomon +regmap-spmi +regulator-haptic +reiserfs +remoteproc +retu-mfd +retu-pwrbutton +retu_wdt +rfc1051 +rfc1201 +rfcomm +rfd_ftl +rfkill-gpio +rfkill-regulator +rio500 +rionet +rio-scan +rivafb +rj54n1cb0c +rk808 +rk808-regulator +rmd128 +rmd160 +rmd256 +rmd320 +rn5t618 +rn5t618-regulator +rn5t618_wdt +rndis_host +rndis_wlan +rocket +romfs +rose +rotary_encoder +rp2 +rpcrdma +rpcsec_gss_krb5 +rsa_generic +rsi_91x +rsi_sdio +rsi_usb +rsxx +rt2400pci +rt2500pci +rt2500usb +rt2800lib +rt2800mmio +rt2800pci +rt2800usb +rt2x00lib +rt2x00mmio +rt2x00pci +rt2x00usb +rt5033 +rt5033_battery +rt5033-regulator +rt61pci +rt73usb +rt9455_charger +rtc-88pm80x +rtc-88pm860x +rtc-ab3100 +rtc-ab-b5ze-s3 +rtc-abx80x +rtc-as3722 +rtc-bq32k +rtc-bq4802 +rtc-cmos +rtc_cmos_setup +rtc-da9052 +rtc-da9055 +rtc-da9063 +rtc-ds1286 +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-ds3234 +rtc-em3027 +rtc-fm3130 +rtc-generic +rtc-hid-sensor-time +rtc-hym8563 +rtc-isl12022 +rtc-isl12057 +rtc-isl1208 +rtc-lp8788 +rtc-m41t80 +rtc-m41t93 +rtc-m41t94 +rtc-m48t35 +rtc-m48t59 +rtc-m48t86 +rtc-max6900 +rtc-max6902 +rtc-max77686 +rtc-max77802 +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-pcf8563 +rtc-pcf8583 +rtc-r9701 +rtc-rc5t583 +rtc-rk808 +rtc-rp5c01 +rtc-rs5c348 +rtc-rs5c372 +rtc-rv3029c2 +rtc-rx4581 +rtc-rx8025 +rtc-rx8581 +rtc-s35390a +rtc-s5m +rtc-snvs +rtc-stk17ta8 +rtc-tps6586x +rtc-tps65910 +rtc-tps80031 +rtc-twl +rtc-v3020 +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 +rtl8723ae +rtl8723be +rtl8723-common +rtl8821ae +rtllib +rtllib_crypt_ccmp +rtllib_crypt_tkip +rtllib_crypt_wep +rtl_pci +rtl_usb +rtlwifi +rts5208 +rtsx_pci +rtsx_pci_ms +rtsx_pci_sdmmc +rtsx_usb +rtsx_usb_ms +rtsx_usb_sdmmc +rx51_battery +rxkad +s1d13xxxfb +s2250 +s2255drv +s2io +s2mpa01 +s2mps11 +s3fb +s526 +s5h1409 +s5h1411 +s5h1420 +s5m8767 +s626 +s6e63m0 +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 +samsung-keypad +samsung-sxgbe +sata_fsl +sata_inic162x +sata_mv +sata_nv +sata_promise +sata_qstor +sata_sil +sata_sil24 +sata_sis +sata_sx4 +sata_uli +sata_via +sata_vsc +savage +savagefb +sbp_target +sbs-battery +sc16is7xx +sc92031 +sca3000 +sch_atm +sch_cbq +sch_choke +sch_codel +sch_drr +sch_dsmark +sch_fq +sch_fq_codel +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_tbf +sch_teql +scsi_debug +scsi_dh +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_probe +sdhci +sdhci_f_sdh30 +sdhci-of-arasan +sdhci-of-esdhc +sdhci-of-hlwd +sdhci-pci +sdhci-pltfm +sdio_uart +sdricoh_cs +sedlbauer_cs +seed +sensorhub +seqiv +ser_gigaset +serial2002 +serial_cs +serio_raw +sermouse +serpent_generic +serport +ses +sfc +sgy_cts1000 +sha1-powerpc +shark2 +shpchp +sht15 +sht21 +shtc1 +sh_veu +si2157 +si2165 +si2168 +si21xx +si4713 +si476x-core +si7005 +si7020 +sidewinder +sierra +sierra_net +sil164 +sir-dev +sis +sis190 +sis5595 +sis900 +sisfb +sisusbvga +sit +sja1000 +sja1000_isa +sja1000_platform +skfp +skge +sky2 +sky81452 +sky81452-backlight +sky81452-regulator +sl811_cs +sl811-hcd +slcan +slip +slram +sm501 +sm501fb +sm750fb +sm7xxfb +smb347-charger +smc91c92_cs +sm_common +sm_ftl +smipcie +smm665 +smsc +smsc47m192 +smsc75xx +smsc911x +smsc9420 +smsc95xx +smsc-ircc2 +smscufx +smsdvb +smsmdtv +smssdio +smsusb +snd +snd-ac97-codec +snd-ad1889 +snd-ak4113 +snd-ak4114 +snd-ak4117 +snd-ak4xxx-adda +snd-ali5451 +snd-aloop +snd-als300 +snd-als4000 +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-firewire-lib +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-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-pcm-oss +snd-pcxhr +snd-pdaudiocf +snd-portman2x4 +snd-pt2258 +snd-rawmidi +snd-riptide +snd-rme32 +snd-rme96 +snd-rme9652 +snd-sb-common +snd-scs1x +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-ac97 +snd-soc-adau1701 +snd-soc-ak4104 +snd-soc-ak4554 +snd-soc-ak4642 +snd-soc-ak5386 +snd-soc-alc5623 +snd-soc-core +snd-soc-cs35l32 +snd-soc-cs4265 +snd-soc-cs4270 +snd-soc-cs4271 +snd-soc-cs4271-i2c +snd-soc-cs4271-spi +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-es8328 +snd-soc-fsl-asrc +snd-soc-fsl-esai +snd-soc-fsl-sai +snd-soc-fsl-spdif +snd-soc-fsl-ssi +snd-soc-hdmi-codec +snd-soc-imx-audmux +snd-soc-pcm1681 +snd-soc-pcm1792a-codec +snd-soc-pcm512x +snd-soc-pcm512x-i2c +snd-soc-pcm512x-spi +snd-soc-rt5631 +snd-soc-sgtl5000 +snd-soc-si476x +snd-soc-sigmadsp +snd-soc-sigmadsp-i2c +snd-soc-simple-card +snd-soc-spdif-rx +snd-soc-spdif-tx +snd-soc-ssm2602 +snd-soc-ssm2602-i2c +snd-soc-ssm2602-spi +snd-soc-ssm4567 +snd-soc-sta32x +snd-soc-sta350 +snd-soc-tas2552 +snd-soc-tas5086 +snd-soc-tas571x +snd-soc-tfa9879 +snd-soc-tlv320aic23 +snd-soc-tlv320aic23-i2c +snd-soc-tlv320aic23-spi +snd-soc-tlv320aic31xx +snd-soc-tlv320aic3x +snd-soc-tpa6130a2 +snd-soc-ts3a227e +snd-soc-wm8510 +snd-soc-wm8523 +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-wm8804 +snd-soc-wm8804-i2c +snd-soc-wm8804-spi +snd-soc-wm8903 +snd-soc-wm8962 +snd-soc-wm8978 +snd-soc-xtfpga-i2s +snd-sonicvibes +snd-timer +snd-trident +snd-ua101 +snd-usb-6fire +snd-usb-audio +snd-usb-caiaq +snd-usb-hiface +snd-usb-line6 +snd-usbmidi-lib +snd-usb-pod +snd-usb-podhd +snd-usb-toneport +snd-usb-usx2y +snd-usb-variax +snd-util-mem +snd-via82xx +snd-via82xx-modem +snd-virmidi +snd-virtuoso +snd-vx222 +snd-vx-lib +snd-vxpocket +snd-ymfpci +snic +soc_button_array +soc_camera +soc_camera_platform +soc_mediabus +softdog +softing +softing_cs +solo6x10 +solos-pci +sony-btf-mpx +soundcore +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 +spectrum_cs +speedfax +speedtch +spi-altera +spi-bitbang +spi-butterfly +spi-cadence +spidev +spi-dln2 +spi-dw +spi-dw-midpci +spi-dw-mmio +spi-gpio +spi_ks8995 +spi-lm70llp +spi-nor +spi-oc-tiny +spi-pxa2xx-pci +spi-pxa2xx-platform +spi-sc18is602 +spi-tle62x0 +spi-xcomm +spi-zynqmp-gqspi +spmi +squashfs +sr9700 +sr9800 +ssb +ssb-hcd +ssd1307fb +ssfdc +ssp_accel_sensor +ssp_gyro_sensor +ssp_iio +sst25l +ssu100 +st +st1232 +st21nfca_hci +st21nfca_i2c +st_accel +st_accel_i2c +st_accel_spi +starfire +stb0899 +stb6000 +stb6100 +st_drv +ste10Xp +ste_modem_rproc +stex +st_gyro +st_gyro_i2c +st_gyro_spi +stinger +stir4200 +stk1160 +stk3310 +stk8312 +stk8ba50 +stkwebcam +st_magn +st_magn_i2c +st_magn_spi +stmmac +stmmac-platform +stmpe-keypad +stmpe-ts +st-nci +st-nci_i2c +stowaway +stp +st_pressure +st_pressure_i2c +st_pressure_spi +streamzap +st_sensors +st_sensors_i2c +st_sensors_spi +stv0288 +stv0297 +stv0299 +stv0367 +stv0900 +stv090x +stv6110 +stv6110x +sundance +sungem +sungem_phy +sunhme +suni +sunkbd +sunrpc +sur40 +svgalib +sx8 +sx8654 +sx9500 +sym53c500_cs +sym53c8xx +symbolserial +synaptics_i2c +synaptics_i2c_rmi4 +synaptics_usb +synclink +synclink_cs +synclink_gt +synclinkmp +sysv +t1pci +t5403 +talitos +target_core_file +target_core_iblock +target_core_mod +target_core_pscsi +target_core_user +tc3589x-keypad +tc74 +tc90522 +tca6416-keypad +tca8418_keypad +tcm_fc +tcm_loop +tcm_qla2xxx +tcm_usb_gadget +tcp_bic +tcp_cdg +tcp_dctcp +tcp_diag +tcp_highspeed +tcp_htcp +tcp_hybla +tcp_illinois +tcp_lp +tcp_probe +tcp_scalable +tcp_vegas +tcp_veno +tcp_westwood +tcp_yeah +tcrypt +tcs3414 +tcs3472 +tda10021 +tda10023 +tda10048 +tda1004x +tda10071 +tda10086 +tda18212 +tda18218 +tda18271 +tda18271c2dd +tda665x +tda7432 +tda8083 +tda8261 +tda826x +tda827x +tda8290 +tda9840 +tda9887 +tda998x +tdfx +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 +tekram-sir +teles_cs +test_bpf +test_firmware +test-hexdump +test-kstrtox +test_module +test_power +test-string_helpers +test_udelay +test_user_copy +tg3 +tgr192 +thmc50 +thunderbolt +ti-adc081c +ti-adc128s052 +ti_am335x_adc +ti_am335x_tsc +ti_am335x_tscadc +ti_dac7512 +tifm_7xx1 +tifm_core +tifm_ms +tifm_sd +timeriomem-rng +tipc +ti_usb_3410_5052 +tlan +tm6000 +tm6000-alsa +tm6000-dvb +tmdc +tmp006 +tmp102 +tmp103 +tmp401 +tmp421 +toim3232-sir +torture +toshsd +touchit213 +touchright +touchwin +tpci200 +tpm_atmel +tpm_i2c_atmel +tpm_i2c_infineon +tpm_i2c_nuvoton +tpm-rng +tpm_st33zp24 +tpm_st33zp24_i2c +tpm_st33zp24_spi +tps40422 +tps51632-regulator +tps6105x +tps6105x-regulator +tps62360-regulator +tps65010 +tps65023-regulator +tps6507x +tps6507x-regulator +tps6507x-ts +tps65090-charger +tps65090-regulator +tps65217 +tps65217_bl +tps65217-regulator +tps65218 +tps65218-pwrbutton +tps65218-regulator +tps6524x-regulator +tps6586x-regulator +tps65910-regulator +tps65912-regulator +tps80031-regulator +trancevibrator +trf7970a +tridentfb +ts2020 +ts_bm +tsc2005 +tsc2007 +tsc40 +ts_fsm +tsi568 +tsi57x +tsi721_mport +ts_kmp +tsl2550 +tsl2563 +tsl2583 +tsl2x7x_core +tsl4531 +ttm +ttpci-eeprom +ttusb_dec +ttusbdecfe +ttusbir +tua6100 +tua9001 +tulip +tuner +tuner-simple +tuner-types +tuner-xc2028 +tunnel4 +tunnel6 +turbografx +tvaudio +tveeprom +tvp5150 +tw2804 +tw68 +tw9903 +tw9906 +tw9910 +twidjoy +twl4030_charger +twl4030_keypad +twl4030-madc +twl4030_madc_battery +twl4030-madc-hwmon +twl4030-pwrbutton +twl4030-vibra +twl4030_wdt +twl6030-gpadc +twl6040-vibra +twl-regulator +twofish_common +twofish_generic +typhoon +u132-hcd +uartlite +uas +ubi +ubifs +ucb1400_core +ucb1400_ts +ucd9000 +ucd9200 +uda1342 +udc-core +udc-xilinx +udf +udl +udp_diag +udp_tunnel +ueagle-atm +u_ether +ufs +ufshcd +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 +uli526x +ulpi +umc +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 +unioxx5 +unix_diag +upd64031a +upd64083 +uPD98402 +usb3503 +usb_8dev +usb8xxx +usbatm +usb_debug +usbdux +usbduxfast +usbduxsigma +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_uac1 +usb_f_uac2 +usb_f_uvc +usb_gigaset +usbhid +usbip-core +usbip-host +usbkbd +usblcd +usbled +usblp +usbmisc_imx +usbmon +usbmouse +usbnet +usbserial +usb-serial-simple +usbsevseg +usb-storage +usbtest +usbtmc +usbtouchscreen +usbtv +usbvision +usb_wwan +usdhi6rol0 +u_serial +userspace-consumer +ushc +uss720 +uvcvideo +uvesafb +uwb +v4l2-common +v4l2-dv-timings +v4l2-flash-led-class +v4l2-mem2mem +vcan +vcnl4000 +ves1820 +ves1x93 +veth +vf610_adc +vga16fb +vgastate +vgem +vgg2432a4 +vhci-hcd +vhost +vhost_net +vhost_scsi +via +via686a +via-ircc +via-rhine +via-sdmmc +via-velocity +videobuf2-core +videobuf2-dma-contig +videobuf2-dma-sg +videobuf2-dvb +videobuf2-memops +videobuf2-vmalloc +videobuf-core +videobuf-dma-sg +videobuf-dvb +videobuf-vmalloc +videocodec +videodev +vim2m +viperboard +viperboard_adc +virt-dma +virtio-gpu +virtio_input +virtio-rng +virtio_scsi +virtual +visor +vitesse +vivid +vlsi_ir +vmac +vme_ca91cx42 +vme_pio2 +vme_tsi148 +vme_user +vme_vmivme7805 +vmk80xx +vmwgfx +vmxnet3 +vp27smpx +vport-geneve +vport-gre +vport-vxlan +vpx3220 +vringh +vsock +vsxxxaa +vt6655_stage +vt6656_stage +vt8231 +vt8623fb +vub300 +vx855 +vxge +vxlan +w1_bq27000 +w1_ds2406 +w1_ds2408 +w1_ds2413 +w1_ds2423 +w1_ds2431 +w1_ds2433 +w1_ds2760 +w1_ds2780 +w1_ds2781 +w1_ds28e04 +w1-gpio +w1_smem +w1_therm +w5100 +w5300 +w6692 +w83781d +w83791d +w83792d +w83793 +w83795 +w83977af_ir +w83l785ts +w83l786ng +wacom +wacom_i2c +wacom_serial4 +wacom_w8001 +walkera0701 +wanxl +warrior +wbsd +wcn36xx +wd719x +wdt87xx_i2c +wdt_pci +whci +whci-hcd +whc-rc +whiteheat +wil6210 +wimax +winbond-840 +windfarm_core +wire +wishbone-serial +wl1251 +wl1251_sdio +wl1251_spi +wl1273-core +wl12xx +wl18xx +wl3501_cs +wlcore +wlcore_sdio +wlcore_spi +wm831x_backup +wm831x_bl +wm831x-dcdc +wm831x-hwmon +wm831x-isink +wm831x-ldo +wm831x-on +wm831x_power +wm831x-ts +wm831x_wdt +wm8350-hwmon +wm8350_power +wm8350-regulator +wm8350_wdt +wm8400-regulator +wm8739 +wm8775 +wm8994-core +wm8994-irq +wm8994-regmap +wm8994-regulator +wm97xx-ts +wp512 +wusb-cbaf +wusbcore +wusb-wa +x25 +x25_asy +xc4000 +xc5000 +xcbc +xfrm4_mode_beet +xfrm4_mode_transport +xfrm4_mode_tunnel +xfrm4_tunnel +xfrm6_mode_beet +xfrm6_mode_ro +xfrm6_mode_transport +xfrm6_mode_tunnel +xfrm6_tunnel +xfrm_algo +xfrm_ipcomp +xfrm_user +xfs +xgifb +xhci-plat-hcd +xilinx_emaclite +xilinx_ps2 +xilinx-tpg +xilinx_uartps +xilinx-video +xilinx-vtc +xillybus_core +xillybus_of +xillybus_pcie +xirc2ps_cs +xircom_cb +xor +xpad +xsens_mt +x_tables +xt_addrtype +xt_AUDIT +xt_bpf +xt_cgroup +xt_CHECKSUM +xt_CLASSIFY +xt_cluster +xt_comment +xt_connbytes +xt_connlabel +xt_connlimit +xt_connmark +xt_CONNSECMARK +xt_conntrack +xt_cpu +xt_CT +xt_dccp +xt_devgroup +xt_dscp +xt_DSCP +xt_ecn +xt_esp +xt_hashlimit +xt_helper +xt_hl +xt_HL +xt_HMARK +xt_IDLETIMER +xt_ipcomp +xt_iprange +xt_ipvs +xtkbd +xt_l2tp +xt_LED +xt_length +xt_limit +xt_LOG +xt_mac +xt_mark +xt_multiport +xt_nat +xt_NETMAP +xt_nfacct +xt_NFLOG +xt_NFQUEUE +xt_osf +xt_owner +xt_physdev +xt_pkttype +xt_policy +xt_quota +xt_rateest +xt_RATEEST +xt_realm +xt_recent +xt_REDIRECT +xts +xt_sctp +xt_SECMARK +xt_set +xt_socket +xt_state +xt_statistic +xt_string +xt_tcpmss +xt_TCPMSS +xt_TCPOPTSTRIP +xt_tcpudp +xt_TEE +xt_time +xt_TPROXY +xt_TRACE +xt_u32 +xusbatm +xz_dec_test +yam +yealink +yellowfin +yenta_socket +yurex +zatm +zaurus +zd1201 +zd1211rw +zforce_ts +zhenhua +zl10036 +zl10039 +zl10353 +zl6100 +zlib +zr36016 +zr36050 +zr36060 +zr36067 +zr364xx +zram --- linux-raspi2-4.2.0.orig/debian.master/abi/4.2.0-26.31/powerpc/powerpc-smp +++ linux-raspi2-4.2.0/debian.master/abi/4.2.0-26.31/powerpc/powerpc-smp @@ -0,0 +1,17949 @@ +EXPORT_SYMBOL crypto/gf128mul 0x0c2f123f gf128mul_4k_bbe +EXPORT_SYMBOL crypto/gf128mul 0x1068004b gf128mul_bbe +EXPORT_SYMBOL crypto/gf128mul 0x2f2889a0 gf128mul_init_64k_lle +EXPORT_SYMBOL crypto/gf128mul 0x3755f990 gf128mul_init_64k_bbe +EXPORT_SYMBOL crypto/gf128mul 0x384ef9ce gf128mul_64k_bbe +EXPORT_SYMBOL crypto/gf128mul 0x56af0dbd gf128mul_x_ble +EXPORT_SYMBOL crypto/gf128mul 0x83581089 gf128mul_init_4k_lle +EXPORT_SYMBOL crypto/gf128mul 0x9b2560b9 gf128mul_init_4k_bbe +EXPORT_SYMBOL crypto/gf128mul 0x9e13f6f6 gf128mul_lle +EXPORT_SYMBOL crypto/gf128mul 0xbd17a0df gf128mul_4k_lle +EXPORT_SYMBOL crypto/gf128mul 0xc0890413 gf128mul_64k_lle +EXPORT_SYMBOL crypto/gf128mul 0xd60736ec gf128mul_free_64k +EXPORT_SYMBOL crypto/mcryptd 0xa8cfd13e mcryptd_arm_flusher +EXPORT_SYMBOL crypto/xor 0x5b6c00e6 xor_blocks +EXPORT_SYMBOL drivers/atm/suni 0x6841865c suni_init +EXPORT_SYMBOL drivers/atm/uPD98402 0xc2d4a22c uPD98402_init +EXPORT_SYMBOL drivers/bcma/bcma 0x04b96384 bcma_core_dma_translation +EXPORT_SYMBOL drivers/bcma/bcma 0x45196e2f 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 0x0b646f99 pi_schedule_claimed +EXPORT_SYMBOL drivers/block/paride/paride 0x1c6d629b pi_connect +EXPORT_SYMBOL drivers/block/paride/paride 0x3f89c1a6 pi_do_claimed +EXPORT_SYMBOL drivers/block/paride/paride 0x3f95cf31 paride_unregister +EXPORT_SYMBOL drivers/block/paride/paride 0x4267110a pi_register_driver +EXPORT_SYMBOL drivers/block/paride/paride 0x429ea23f pi_init +EXPORT_SYMBOL drivers/block/paride/paride 0x5b40da5a pi_read_block +EXPORT_SYMBOL drivers/block/paride/paride 0x7668fa0b pi_write_block +EXPORT_SYMBOL drivers/block/paride/paride 0xb21ba07d pi_unregister_driver +EXPORT_SYMBOL drivers/block/paride/paride 0xb82919d7 pi_read_regr +EXPORT_SYMBOL drivers/block/paride/paride 0xc64964b8 pi_disconnect +EXPORT_SYMBOL drivers/block/paride/paride 0xc7c3d304 paride_register +EXPORT_SYMBOL drivers/block/paride/paride 0xd84f2554 pi_release +EXPORT_SYMBOL drivers/block/paride/paride 0xdc0de080 pi_write_regr +EXPORT_SYMBOL drivers/bluetooth/btbcm 0x41ab6c8e btbcm_patchram +EXPORT_SYMBOL drivers/char/apm-emulation 0x129e74f2 apm_get_power_status +EXPORT_SYMBOL drivers/char/apm-emulation 0xdf3329b8 apm_queue_event +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x1348760d ipmi_request_settime +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x16dcec76 ipmi_set_my_address +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x1a10c898 ipmi_set_maintenance_mode +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x1aba5db8 ipmi_unregister_smi +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x1fae3bac ipmi_addr_src_to_str +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x40f2b10c ipmi_alloc_smi_msg +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x423b776a ipmi_create_user +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x4c971bec ipmi_smi_msg_received +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x524f6f51 ipmi_get_my_address +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x57518d17 ipmi_smi_watcher_unregister +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x5e80f37c ipmi_unregister_for_cmd +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x5fcdcc05 ipmi_get_my_LUN +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x67cb9784 ipmi_poll_interface +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x78fd36e7 ipmi_request_supply_msgs +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x7e5afb06 ipmi_smi_add_proc_entry +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x804f922a ipmi_addr_length +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x8c8ee770 ipmi_destroy_user +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x96cbcc81 ipmi_get_version +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xa2a98b91 ipmi_get_maintenance_mode +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xa6759855 ipmi_get_smi_info +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xb8c58dca ipmi_smi_watcher_register +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xd26353a7 ipmi_register_smi +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xd69f8567 ipmi_set_gets_events +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xe0fa83f2 ipmi_register_for_cmd +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xe4f4665b ipmi_validate_addr +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xe6ab72a6 ipmi_set_my_LUN +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xf2576cb9 ipmi_smi_watchdog_pretimeout +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xfcb77cfd ipmi_free_recv_msg +EXPORT_SYMBOL drivers/char/tpm/st33zp24/tpm_st33zp24 0x46031724 st33zp24_pm_suspend +EXPORT_SYMBOL drivers/char/tpm/st33zp24/tpm_st33zp24 0x49c1964a st33zp24_pm_resume +EXPORT_SYMBOL drivers/char/tpm/st33zp24/tpm_st33zp24 0xc625a4a4 st33zp24_probe +EXPORT_SYMBOL drivers/char/tpm/st33zp24/tpm_st33zp24 0xe70434a7 st33zp24_remove +EXPORT_SYMBOL drivers/char/xillybus/xillybus_core 0x25978d50 xillybus_isr +EXPORT_SYMBOL drivers/char/xillybus/xillybus_core 0x34342745 xillybus_endpoint_remove +EXPORT_SYMBOL drivers/char/xillybus/xillybus_core 0x58d741b4 xillybus_init_endpoint +EXPORT_SYMBOL drivers/char/xillybus/xillybus_core 0xed65852c xillybus_endpoint_discovery +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0x25053396 dw_dma_get_src_addr +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0x295fdf59 dw_dma_get_dst_addr +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0x38bee54f dw_dma_cyclic_stop +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0x8a58f205 dw_dma_cyclic_start +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0xb6b5a2e7 dw_dma_cyclic_prep +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0xe7d5d346 dw_dma_cyclic_free +EXPORT_SYMBOL drivers/edac/edac_core 0xd6ca5523 edac_mc_find +EXPORT_SYMBOL drivers/firewire/firewire-core 0x04dd92ce fw_core_add_descriptor +EXPORT_SYMBOL drivers/firewire/firewire-core 0x0dcc9300 fw_iso_buffer_destroy +EXPORT_SYMBOL drivers/firewire/firewire-core 0x0e5312a8 fw_iso_context_stop +EXPORT_SYMBOL drivers/firewire/firewire-core 0x16e91e21 fw_csr_iterator_next +EXPORT_SYMBOL drivers/firewire/firewire-core 0x2885fec5 fw_get_request_speed +EXPORT_SYMBOL drivers/firewire/firewire-core 0x3c22eb2c fw_core_handle_bus_reset +EXPORT_SYMBOL drivers/firewire/firewire-core 0x3c56ef91 fw_workqueue +EXPORT_SYMBOL drivers/firewire/firewire-core 0x4209425d fw_schedule_bus_reset +EXPORT_SYMBOL drivers/firewire/firewire-core 0x4b6cf0ad fw_iso_resource_manage +EXPORT_SYMBOL drivers/firewire/firewire-core 0x4d5d4eca fw_core_remove_descriptor +EXPORT_SYMBOL drivers/firewire/firewire-core 0x51b84b8b fw_run_transaction +EXPORT_SYMBOL drivers/firewire/firewire-core 0x61d2ad9a fw_iso_context_create +EXPORT_SYMBOL drivers/firewire/firewire-core 0x65a53174 fw_fill_response +EXPORT_SYMBOL drivers/firewire/firewire-core 0x65c9438b fw_csr_iterator_init +EXPORT_SYMBOL drivers/firewire/firewire-core 0x7c5804de fw_core_add_address_handler +EXPORT_SYMBOL drivers/firewire/firewire-core 0x7e431b14 fw_csr_string +EXPORT_SYMBOL drivers/firewire/firewire-core 0x86468d44 fw_rcode_string +EXPORT_SYMBOL drivers/firewire/firewire-core 0x8cb9d2da fw_iso_context_flush_completions +EXPORT_SYMBOL drivers/firewire/firewire-core 0x90863005 fw_high_memory_region +EXPORT_SYMBOL drivers/firewire/firewire-core 0x96a0f86a fw_iso_context_queue_flush +EXPORT_SYMBOL drivers/firewire/firewire-core 0x9843a468 fw_core_remove_address_handler +EXPORT_SYMBOL drivers/firewire/firewire-core 0x9ac4e8d8 fw_iso_context_destroy +EXPORT_SYMBOL drivers/firewire/firewire-core 0xa11faefa fw_bus_type +EXPORT_SYMBOL drivers/firewire/firewire-core 0xa55fa390 fw_send_response +EXPORT_SYMBOL drivers/firewire/firewire-core 0xa8783baa fw_send_request +EXPORT_SYMBOL drivers/firewire/firewire-core 0xb0cc0da1 fw_core_remove_card +EXPORT_SYMBOL drivers/firewire/firewire-core 0xb75080f3 fw_card_add +EXPORT_SYMBOL drivers/firewire/firewire-core 0xb9eaa622 fw_core_handle_request +EXPORT_SYMBOL drivers/firewire/firewire-core 0xc698e57c fw_cancel_transaction +EXPORT_SYMBOL drivers/firewire/firewire-core 0xdef9e6c6 fw_iso_buffer_init +EXPORT_SYMBOL drivers/firewire/firewire-core 0xf383e306 fw_iso_context_queue +EXPORT_SYMBOL drivers/firewire/firewire-core 0xf3d066f8 fw_card_initialize +EXPORT_SYMBOL drivers/firewire/firewire-core 0xf83769cd fw_core_handle_response +EXPORT_SYMBOL drivers/firewire/firewire-core 0xfbd0c0b6 fw_device_enable_phys_dma +EXPORT_SYMBOL drivers/firewire/firewire-core 0xff82c110 fw_iso_context_start +EXPORT_SYMBOL drivers/fmc/fmc 0x0b0bf9bf fmc_driver_unregister +EXPORT_SYMBOL drivers/fmc/fmc 0x19b5b06a fmc_device_register +EXPORT_SYMBOL drivers/fmc/fmc 0x1fef690c fmc_driver_register +EXPORT_SYMBOL drivers/fmc/fmc 0x2b7be0aa fmc_free_sdb_tree +EXPORT_SYMBOL drivers/fmc/fmc 0x80259673 fmc_device_unregister +EXPORT_SYMBOL drivers/fmc/fmc 0xaac3ba89 fmc_find_sdb_device +EXPORT_SYMBOL drivers/fmc/fmc 0xbc870312 fmc_device_unregister_n +EXPORT_SYMBOL drivers/fmc/fmc 0xbea92ce1 fmc_reprogram +EXPORT_SYMBOL drivers/fmc/fmc 0xc307d507 fmc_device_register_n +EXPORT_SYMBOL drivers/fmc/fmc 0xcb7a08f3 fmc_scan_sdb_tree +EXPORT_SYMBOL drivers/fmc/fmc 0xf700553f fmc_show_sdb_tree +EXPORT_SYMBOL drivers/gpu/drm/drm 0x005cfaa1 drm_mode_probed_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0x018d75cf drm_i2c_encoder_save +EXPORT_SYMBOL drivers/gpu/drm/drm 0x036c2b30 drm_property_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x03dc64a0 drm_i2c_encoder_detect +EXPORT_SYMBOL drivers/gpu/drm/drm 0x04d47513 drm_av_sync_delay +EXPORT_SYMBOL drivers/gpu/drm/drm 0x04f286d2 drm_property_create_bool +EXPORT_SYMBOL drivers/gpu/drm/drm 0x05676649 drm_mode_connector_set_path_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0579ed03 drm_bridge_pre_enable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x06d88653 drm_crtc_handle_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0x072c520d drm_object_property_get_value +EXPORT_SYMBOL drivers/gpu/drm/drm 0x084e7317 drm_atomic_set_mode_prop_for_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0a5e3da7 drm_mode_create_tv_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0a72f765 drm_clflush_virt_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0ae4b94c drm_ht_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0b564f6b drm_modeset_lock_interruptible +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0b653725 drm_property_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0c640ee8 drm_modeset_backoff_interruptible +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0c97bc83 drm_crtc_vblank_off +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0d353f6a drm_mode_connector_set_tile_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0db4f383 drm_mode_hsync +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0dbf9adc drm_select_eld +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0e041e66 drm_mode_debug_printmodeline +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0f94b0de drm_framebuffer_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0fccafb1 drm_global_item_unref +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0fd60df2 drm_get_connector_status_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1038cc0d drm_mode_group_init_legacy_group +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1049c5ac drm_atomic_check_only +EXPORT_SYMBOL drivers/gpu/drm/drm 0x107742a9 drm_get_subpixel_order_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x11ae8909 drm_crtc_vblank_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0x12594048 of_drm_find_bridge +EXPORT_SYMBOL drivers/gpu/drm/drm 0x131639c8 drm_property_create_bitmask +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1418a429 drm_atomic_connector_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x142b5f8b drm_vblank_pre_modeset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x14626482 drm_mode_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x14a9a178 drm_get_format_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x15647a20 drm_cvt_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x158b9fc3 drm_vma_node_allow +EXPORT_SYMBOL drivers/gpu/drm/drm 0x174d1582 drm_warn_on_modeset_not_all_locked +EXPORT_SYMBOL drivers/gpu/drm/drm 0x18a3b5ea drm_panel_attach +EXPORT_SYMBOL drivers/gpu/drm/drm 0x194eadaa drm_edid_header_is_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1959d45a drm_read +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1a411b93 drm_ioctl +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1a546ddd drm_mm_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1a770ac3 drm_detect_hdmi_monitor +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1aa2be75 drm_atomic_get_connector_state +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1c12e415 drm_send_vblank_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1dccdcd9 drm_bridge_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1dd71f7a drm_err +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1ef2bda0 drm_clflush_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0x20645642 drm_debug +EXPORT_SYMBOL drivers/gpu/drm/drm 0x210399e3 drm_mode_validate_basic +EXPORT_SYMBOL drivers/gpu/drm/drm 0x224350a5 drm_flip_work_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x22acaf62 drm_get_cea_aspect_ratio +EXPORT_SYMBOL drivers/gpu/drm/drm 0x230e1970 drm_mode_create_suggested_offset_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0x234ccce6 drm_i2c_encoder_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x24745572 drm_agp_bind +EXPORT_SYMBOL drivers/gpu/drm/drm 0x26dcd6bc drm_crtc_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x26ddc5e4 drm_atomic_get_plane_state +EXPORT_SYMBOL drivers/gpu/drm/drm 0x270a2783 drm_framebuffer_unreference +EXPORT_SYMBOL drivers/gpu/drm/drm 0x27117bd8 drm_legacy_idlelock_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x27d0a712 drm_modeset_lock_all +EXPORT_SYMBOL drivers/gpu/drm/drm 0x28773b16 drm_mode_set_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x28aa922c drm_gem_put_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0x28bd2b57 drm_gem_dmabuf_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x29331390 drm_atomic_set_fb_for_plane +EXPORT_SYMBOL drivers/gpu/drm/drm 0x29a010e6 drm_mm_insert_node_in_range_generic +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2bb5a14e drm_mode_equal_no_clocks_no_stereo +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2d139d32 drm_panel_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2d50570f drm_rect_calc_hscale +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2e2b5b63 drm_platform_set_busid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2e4df74d drm_ati_pcigart_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2e7a4300 drm_rgb_quant_range_selectable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2ec5188a drm_pci_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2fe05b7d drm_calc_vbltimestamp_from_scanoutpos +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2fe484fb drm_panel_detach +EXPORT_SYMBOL drivers/gpu/drm/drm 0x301dccfd drm_atomic_set_crtc_for_plane +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3066c971 drm_gem_prime_import +EXPORT_SYMBOL drivers/gpu/drm/drm 0x30bac839 drm_atomic_state_default_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3232d65b drm_property_reference_blob +EXPORT_SYMBOL drivers/gpu/drm/drm 0x33620c91 drm_pci_exit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x33cb542f drm_ati_pcigart_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x346127a7 drm_global_item_ref +EXPORT_SYMBOL drivers/gpu/drm/drm 0x34c93aa0 drm_crtc_init_with_planes +EXPORT_SYMBOL drivers/gpu/drm/drm 0x350b6abf drm_mode_vrefresh +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3530f389 drm_atomic_state_clear +EXPORT_SYMBOL drivers/gpu/drm/drm 0x357483f4 drm_framebuffer_unregister_private +EXPORT_SYMBOL drivers/gpu/drm/drm 0x359aa4f4 drm_vblank_post_modeset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x363de9cc drm_mode_get_tile_group +EXPORT_SYMBOL drivers/gpu/drm/drm 0x37ebe743 drm_mm_replace_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0x389c015f drm_flip_work_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x38a4f7ae drm_format_num_planes +EXPORT_SYMBOL drivers/gpu/drm/drm 0x39a83678 drm_mode_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3aaaf6d9 drm_atomic_state_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3ac1fef9 drm_mode_legacy_fb_format +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3b9d009a drm_format_plane_cpp +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3c79a596 drm_atomic_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3cd1d7b9 drm_get_pci_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3d8283c8 drm_flip_work_queue_task +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3dd65cab drm_connector_index +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3eb37b9d drm_ht_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x407635aa drm_mode_config_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x412193a9 drm_connector_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4154f36a drm_modeset_acquire_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x42cf7e9a drm_modeset_unlock_all +EXPORT_SYMBOL drivers/gpu/drm/drm 0x431c775a drm_plane_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x44db65b8 drm_modeset_lock_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x451af10f drm_gem_create_mmap_offset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x45e9ed54 drm_property_create_blob +EXPORT_SYMBOL drivers/gpu/drm/drm 0x46186cb5 drm_agp_acquire +EXPORT_SYMBOL drivers/gpu/drm/drm 0x46773df6 drm_gem_vm_open +EXPORT_SYMBOL drivers/gpu/drm/drm 0x48d89f45 drm_i2c_encoder_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x490cfb78 drm_mm_reserve_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4a93c231 drm_dev_set_unique +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4af34fee drm_framebuffer_lookup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4c41eedb drm_prime_sg_to_page_addr_arrays +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4c511235 drm_edid_is_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4ddd2399 drm_mode_connector_update_edid_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4ea1f5a2 drm_gem_object_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4ed157a4 drm_hdmi_vendor_infoframe_from_display_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4f874b3a drm_atomic_add_affected_planes +EXPORT_SYMBOL drivers/gpu/drm/drm 0x50e28c07 drm_edid_to_sad +EXPORT_SYMBOL drivers/gpu/drm/drm 0x51db353a drm_vma_offset_manager_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x522cc3eb drm_connector_register +EXPORT_SYMBOL drivers/gpu/drm/drm 0x526f6f71 drm_rect_calc_hscale_relaxed +EXPORT_SYMBOL drivers/gpu/drm/drm 0x52d0a704 drm_mode_parse_command_line_for_connector +EXPORT_SYMBOL drivers/gpu/drm/drm 0x53c410b4 drm_handle_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0x54914145 drm_legacy_addbufs_pci +EXPORT_SYMBOL drivers/gpu/drm/drm 0x562acb86 drm_crtc_vblank_on +EXPORT_SYMBOL drivers/gpu/drm/drm 0x56433542 drm_prime_pages_to_sg +EXPORT_SYMBOL drivers/gpu/drm/drm 0x56803f3b drm_object_attach_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x57483663 drm_get_edid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x57858014 drm_crtc_get_hv_timing +EXPORT_SYMBOL drivers/gpu/drm/drm 0x57b6efe3 drm_ioctl_flags +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5970b8a2 drm_property_create_object +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5978c8ec drm_mode_connector_list_update +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5993ca08 drm_legacy_ioremap_wc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x59ef50f0 drm_edid_block_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5a03f024 drm_gem_handle_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5a268d54 drm_clflush_sg +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5b0e0387 drm_vblank_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5b2aa40f drm_gem_create_mmap_offset_size +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5ba1dc56 drm_mm_dump_table +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5bf934c1 drm_atomic_state_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5c1e0254 drm_edid_to_eld +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5c240183 drm_reinit_primary_mode_group +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5d2c80d0 drm_gem_prime_handle_to_fd +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5d86d6fd drm_dev_unregister +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5fad2abf drm_vblank_on +EXPORT_SYMBOL drivers/gpu/drm/drm 0x608afc3b drm_modeset_unlock_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x61435884 drm_gem_private_object_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x622af4f4 drm_mode_create_rotation_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x63b27b4b drm_crtc_index +EXPORT_SYMBOL drivers/gpu/drm/drm 0x65048751 drm_gem_prime_fd_to_handle +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6520667a drm_dev_ref +EXPORT_SYMBOL drivers/gpu/drm/drm 0x666e5d51 drm_vma_node_is_allowed +EXPORT_SYMBOL drivers/gpu/drm/drm 0x67633846 drm_mm_insert_node_generic +EXPORT_SYMBOL drivers/gpu/drm/drm 0x67648394 drm_master_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6900d335 drm_rect_clip_scaled +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6aebb5b5 drm_vblank_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6b6f1246 drm_atomic_legacy_backoff +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6e30ba8e drm_rect_rotate_inv +EXPORT_SYMBOL drivers/gpu/drm/drm 0x70ddb250 drm_mode_duplicate +EXPORT_SYMBOL drivers/gpu/drm/drm 0x71a8a828 drm_noop +EXPORT_SYMBOL drivers/gpu/drm/drm 0x72b9cc86 drm_match_cea_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7318315e drm_vma_offset_lookup_locked +EXPORT_SYMBOL drivers/gpu/drm/drm 0x739b5228 drm_vma_node_revoke +EXPORT_SYMBOL drivers/gpu/drm/drm 0x75c28cd7 drm_panel_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x75f93bc4 drm_bridge_enable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x76576c72 drm_mode_create_from_cmdline_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x765b6248 drm_mode_create_dirty_info_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x76992dd7 drm_modeset_lock_all_crtcs +EXPORT_SYMBOL drivers/gpu/drm/drm 0x76fcaac7 drm_legacy_rmmap_locked +EXPORT_SYMBOL drivers/gpu/drm/drm 0x79821782 drm_gem_free_mmap_offset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7a39dcbc drm_crtc_check_viewport +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7b4b0e1f drm_agp_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7ff075be drm_gem_object_lookup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x808c74de drm_bridge_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0x80991590 drm_agp_bind_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0x82c2998f drm_flip_work_allocate_task +EXPORT_SYMBOL drivers/gpu/drm/drm 0x837c85bb drm_vma_offset_manager_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x83dc23ec drm_of_find_possible_crtcs +EXPORT_SYMBOL drivers/gpu/drm/drm 0x84367c2b drm_mode_create_aspect_ratio_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x856b220f drm_plane_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x85857c75 drm_mode_find_dmt +EXPORT_SYMBOL drivers/gpu/drm/drm 0x859b1015 drm_bridge_mode_set +EXPORT_SYMBOL drivers/gpu/drm/drm 0x85a6bc01 drm_gem_mmap_obj +EXPORT_SYMBOL drivers/gpu/drm/drm 0x86f2a2ca drm_encoder_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x871ab41a drm_rect_intersect +EXPORT_SYMBOL drivers/gpu/drm/drm 0x871f73ce drm_pcie_get_speed_cap_mask +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8750983f drm_mode_create_dvi_i_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0x877c9744 drm_put_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8957b7c4 drm_gem_get_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8c0c8355 drm_property_unreference_blob +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8db26780 drm_atomic_plane_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8de13715 drm_format_vert_chroma_subsampling +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8eff9111 drm_ht_find_item +EXPORT_SYMBOL drivers/gpu/drm/drm 0x90e293b2 drm_atomic_state_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x91576b36 drm_connector_unplug_all +EXPORT_SYMBOL drivers/gpu/drm/drm 0x91d4d98d drm_universal_plane_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x91fec1cc drm_rect_calc_vscale +EXPORT_SYMBOL drivers/gpu/drm/drm 0x92408488 drm_mm_scan_add_block +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9251a5ab drm_plane_index +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9320ca4c drm_sysfs_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0x95172535 drm_crtc_send_vblank_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0x95c27049 drm_pci_set_busid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x95e62f50 drm_legacy_idlelock_take +EXPORT_SYMBOL drivers/gpu/drm/drm 0x96921fdf drm_i2c_encoder_dpms +EXPORT_SYMBOL drivers/gpu/drm/drm 0x975c07b3 drm_framebuffer_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9832e07a drm_bridge_post_disable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9873f6d4 drm_modeset_backoff +EXPORT_SYMBOL drivers/gpu/drm/drm 0x98ca5488 drm_vblank_count +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9972db48 drm_rect_calc_vscale_relaxed +EXPORT_SYMBOL drivers/gpu/drm/drm 0x997576e6 drm_irq_uninstall +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9b272dcc drm_i2c_encoder_mode_set +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9c123586 drm_legacy_addmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9d7bd35a drm_gem_object_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9dac202e drm_modeset_drop_locks +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9dcdb704 drm_dev_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9fdfee59 drm_add_edid_modes +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa03d2c6d drm_i2c_encoder_prepare +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa041ade4 drm_crtc_vblank_reset +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa0898b82 drm_atomic_add_affected_connectors +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa13c06e6 drm_property_add_enum +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa15f4b72 drm_vblank_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa1c9c5da drm_display_info_set_bus_formats +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa24dbcdc drm_bridge_disable +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa28078b2 drm_edid_duplicate +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa31c7e2d drm_crtc_wait_one_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa335d2d8 drm_flip_work_queue +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa4466414 drm_mm_remove_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa5b3dea3 drm_open +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa6ea9339 drm_legacy_getsarea +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa71a1bbb drm_gem_mmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa78ee283 drm_mode_equal +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa8280b70 drm_mode_validate_size +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa82d27b1 drm_calc_timestamping_constants +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa96acfcb drm_rect_debug_print +EXPORT_SYMBOL drivers/gpu/drm/drm 0xabed0d66 drm_connector_unregister +EXPORT_SYMBOL drivers/gpu/drm/drm 0xac8a23ff drm_master_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0xad02c3d4 drm_prime_gem_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0xaddfcb79 drm_mode_create_scaling_mode_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xaf1cf03f of_drm_find_panel +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb053adda drm_rect_rotate +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb371538e drm_gem_object_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb372fc23 drm_agp_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb3df2e23 drm_property_create_signed_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb50d099a drm_object_property_set_value +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb620a8fc drm_unplug_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb6f27ae1 drm_bridge_attach +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb7256559 drm_mode_prune_invalid +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb88d1bf7 drm_atomic_state_default_clear +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb90a1d00 drm_vblank_count_and_time +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb9fafbb8 drm_modeset_unlock +EXPORT_SYMBOL drivers/gpu/drm/drm 0xba752994 drm_vblank_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbb77aabf drm_gtf_mode_complex +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbbe0d896 drm_i2c_encoder_restore +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbcebb53c drm_mode_config_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbe6af468 drm_property_create_enum +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc0d40fe3 drm_property_lookup_blob +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc16dfefb drm_gtf_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc1cd0311 drm_platform_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc252bd7a drm_dev_unref +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc2b2afe5 drm_crtc_vblank_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc360e7e2 drm_ut_debug_printk +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc4326a3d drm_bridge_mode_fixup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc4f3bafe drm_agp_info +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc53299f7 drm_mode_crtc_set_gamma_size +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc5afee11 drm_modeset_acquire_fini +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc62421e5 drm_irq_install +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc642c225 drm_panel_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc6cef6bd drm_gem_vm_close +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc6e7b2be drm_connector_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc7b28aa7 drm_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc7b409c0 drm_wait_one_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0xca45efbc drm_format_horz_chroma_subsampling +EXPORT_SYMBOL drivers/gpu/drm/drm 0xca5c7790 drm_mm_init_scan_with_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0xca62601e drm_gem_dumb_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcac22e7e drm_vma_offset_lookup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcb0aaff0 drm_atomic_get_crtc_state +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcd0fc417 drm_ht_just_insert_please +EXPORT_SYMBOL drivers/gpu/drm/drm 0xce82e98c drm_mode_config_reset +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcf8245e3 drm_gem_handle_delete +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcf92d757 drm_probe_ddc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd2335101 drm_fb_get_bpp_depth +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd2dfc409 drm_atomic_crtc_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd41d464f drm_poll +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd52b1d11 drm_mm_init_scan +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd60ad757 drm_mode_copy +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd66e8baa drm_agp_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd70c8470 drm_mm_debug_table +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd752fbd7 drm_gem_prime_export +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd8028f9c drm_atomic_async_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd9fec671 drm_mode_plane_set_obj_prop +EXPORT_SYMBOL drivers/gpu/drm/drm 0xda9b1d6c drm_pci_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdac51d91 drm_framebuffer_reference +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdbb5a9f5 drm_ht_remove_item +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdbcd0190 drm_encoder_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdd150721 drm_mm_takedown +EXPORT_SYMBOL drivers/gpu/drm/drm 0xddeef25a drm_i2c_encoder_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdeab150c drm_i2c_encoder_mode_fixup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xded36fcf drm_legacy_ioremap +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdeda5fe9 drm_mode_connector_attach_encoder +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdf666902 drm_rotation_simplify +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdff58974 drm_mode_set_config_internal +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe047c01a drm_set_preferred_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe1aff587 drm_legacy_mmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe2ca325e drm_legacy_rmmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe2e1e832 drm_add_modes_noedid +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe2ffd7a5 drm_vma_offset_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe36cc023 drm_atomic_set_mode_for_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe43fa9be drm_modeset_lock +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe4e07a1b drm_debugfs_create_files +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe51d89b5 drm_mm_clean +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe550c848 drm_agp_unbind +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe67a9ed0 drm_debugfs_remove_files +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe70c0570 drm_pci_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe7197773 drm_ht_insert_item +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe94ea304 drm_vblank_off +EXPORT_SYMBOL drivers/gpu/drm/drm 0xeaac6aee drm_framebuffer_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xeb87c5ef drm_flip_work_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xebc5ba58 drm_dev_register +EXPORT_SYMBOL drivers/gpu/drm/drm 0xee90a48c drm_mode_set_crtcinfo +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf1421d13 drm_mode_sort +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf1b098be drm_vma_offset_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf1b6a293 drm_atomic_connectors_for_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf3ee3047 drm_hdmi_avi_infoframe_from_display_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf3f065f5 drm_agp_enable +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf4959e4d drm_legacy_addbufs_agp +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf6cbfab3 drm_crtc_vblank_count +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf7f985f2 drm_modeset_legacy_acquire_ctx +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf89e076d drm_property_create_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf92ae0e4 __drm_modeset_lock_all +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfa31dc84 drm_mode_object_find +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfb597cff drm_plane_from_index +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfc521be7 drm_plane_force_disable +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfcf54a4f drm_mm_scan_remove_block +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfd063935 drm_edid_to_speaker_allocation +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfd2e473a drm_mode_create_tile_group +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfe079bc8 drm_legacy_ioremapfree +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfeec33f8 drm_atomic_set_crtc_for_connector +EXPORT_SYMBOL drivers/gpu/drm/drm 0xffc6c87a drm_detect_monitor_audio +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x007929d4 drm_fb_helper_debug_leave +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x01d694c7 drm_atomic_helper_crtc_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x06f54faf drm_atomic_helper_crtc_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x098e47d2 drm_dp_link_train_clock_recovery_delay +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0ce9c282 drm_kms_helper_poll_fini +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0d4b86db drm_fb_helper_check_var +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0e17f8d8 drm_dp_mst_topology_mgr_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0f96ec70 drm_dp_clock_recovery_ok +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x1010e891 drm_dp_mst_topology_mgr_resume +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x1265c371 __drm_atomic_helper_plane_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x12b44293 drm_atomic_helper_prepare_planes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x12d38363 drm_fb_helper_blank +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x1378e4ce drm_helper_connector_dpms +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x163251c8 drm_dp_link_train_channel_eq_delay +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x17c59812 drm_atomic_helper_commit_planes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x1a317c81 drm_atomic_helper_update_legacy_modeset_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x1bae6fca drm_fb_helper_prepare +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x1f8b50ee drm_plane_helper_disable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2aa2f355 drm_kms_helper_poll_enable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2acf17b8 drm_atomic_helper_page_flip +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2af458b9 drm_atomic_helper_connector_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2b2983f6 drm_atomic_helper_commit +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2b7a8e77 drm_fb_helper_fini +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2d22296d drm_helper_probe_single_connector_modes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2e3c0da4 drm_crtc_helper_set_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2ea78a38 drm_atomic_helper_disable_plane +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x32ca1e6a drm_primary_helper_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x336de6f7 drm_atomic_helper_connector_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x34871adf drm_dp_channel_eq_ok +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x37480857 drm_helper_hpd_irq_event +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x39e56938 drm_dp_mst_detect_port +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x40504488 drm_dp_link_power_up +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x43cc87b1 drm_dp_mst_topology_mgr_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x44bb0fb9 drm_fb_helper_single_add_all_connectors +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x469790a4 drm_fb_helper_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4b007b82 drm_helper_encoder_in_use +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4c00b28f drm_atomic_helper_check +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4d83472d drm_dp_aux_unregister +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4d8cb142 __drm_atomic_helper_plane_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x500ecf59 drm_primary_helper_disable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x520360e7 drm_helper_probe_single_connector_modes_nomerge +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x52a70c3f drm_atomic_helper_commit_planes_on_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x559ffa04 drm_kms_helper_poll_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x586467b0 drm_dp_dpcd_write +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x58eb94dc drm_dp_aux_register +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5faf03f5 drm_dp_mst_hpd_irq +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x612b4558 drm_fb_helper_add_one_connector +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x626b9bc3 drm_dp_link_configure +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x63f65904 drm_fb_helper_setcmap +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6d80f158 drm_atomic_helper_connector_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x711a004a drm_dp_link_rate_to_bw_code +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7126fbdc drm_helper_crtc_in_use +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7219ff25 drm_dp_check_act_status +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7788b5f6 drm_fb_helper_initial_config +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x79070ec7 drm_fb_helper_pan_display +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7a7fdac5 drm_helper_resume_force_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7db1681e drm_dp_mst_reset_vcpi_slots +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7edfbd2d drm_atomic_helper_cleanup_planes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x80a296cb drm_dp_dpcd_read +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8358eb61 drm_atomic_helper_swap_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x84e924ba drm_dp_get_adjust_request_pre_emphasis +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x87358b08 drm_atomic_helper_commit_modeset_enables +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8998375c drm_dp_mst_dump_topology +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8be544ff drm_dp_dpcd_read_link_status +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8dcc368f drm_atomic_helper_update_plane +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8f4c5abe drm_fb_helper_set_par +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x90e6c406 drm_atomic_helper_plane_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x90ed3de5 drm_has_preferred_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x926755f7 drm_dp_link_power_down +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x98e2b1de drm_dp_mst_allocate_vcpi +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9b7a9455 drm_dp_update_payload_part1 +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9f629d96 drm_fb_helper_remove_one_connector +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa1a73607 drm_helper_move_panel_connectors_to_head +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa225bc81 drm_helper_crtc_mode_set +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa34110f2 drm_primary_helper_funcs +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa47826e4 drm_dp_calc_pbn_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa4a7442c drm_atomic_helper_wait_for_vblanks +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa671e381 drm_atomic_helper_plane_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa71a5cea drm_atomic_helper_commit_modeset_disables +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa77858bb drm_dp_get_adjust_request_voltage +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa8d6809d drm_dp_bw_code_to_link_rate +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xaa57a86a drm_kms_helper_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xafb20522 drm_dp_mst_get_vcpi_slots +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xafce13b9 drm_dp_mst_deallocate_vcpi +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb17e07dd drm_dp_mst_topology_mgr_set_mst +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb22a880f __drm_atomic_helper_connector_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb680b068 drm_atomic_helper_connector_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb735dad7 drm_dp_link_probe +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xbb6cf572 drm_atomic_helper_crtc_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xbedb6347 drm_fb_helper_restore_fbdev_mode_unlocked +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc072cced drm_fb_helper_debug_enter +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc1b7a349 drm_atomic_helper_crtc_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc1c405da drm_fb_helper_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc495ec8e __drm_atomic_helper_connector_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc505f603 drm_dp_mst_topology_mgr_suspend +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc5131b60 drm_atomic_helper_connector_dpms +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc5615813 drm_crtc_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc8d04b01 drm_crtc_helper_set_config +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xccf00e65 drm_dp_find_vcpi_slots +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xcf661620 __drm_atomic_helper_crtc_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd302276e drm_atomic_helper_check_modeset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd3990158 drm_helper_crtc_mode_set_base +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd7cb79c0 __drm_atomic_helper_crtc_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd8f0447c drm_helper_disable_unused_functions +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd9106b1f drm_atomic_helper_set_config +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xda52a2a2 drm_plane_helper_check_update +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xdc9342ee drm_primary_helper_update +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xdd40e149 drm_pick_cmdline_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xdf67f331 drm_fb_helper_fill_var +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe063208d drm_plane_helper_update +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe2dc529b drm_atomic_helper_check_planes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xeebc8a77 drm_helper_mode_fill_fb_struct +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf1e19b29 drm_dp_mst_get_edid +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf2cb944b drm_atomic_helper_plane_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xfa73bbe6 drm_atomic_helper_plane_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xfbc349ad drm_fb_helper_fill_fix +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xfdd436b0 drm_kms_helper_poll_disable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xfffcf07b drm_dp_update_payload_part2 +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x045f8335 ttm_mem_io_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x132b05be ttm_round_pot +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x151e7675 ttm_bo_lock_delayed_workqueue +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x1f182d8e ttm_agp_tt_create +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x21076829 ttm_agp_tt_unpopulate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x24677f7b ttm_tt_bind +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x2b54aa9a ttm_object_file_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x2f30d7d9 ttm_bo_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x315a0978 ttm_dma_tt_fini +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x3b58ee19 ttm_bo_device_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x3c72df0c ttm_tt_fini +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x3cb3eb79 ttm_agp_tt_populate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x4669eb8d ttm_pool_populate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x4796c99c ttm_mem_io_free +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x485a5bc0 ttm_ref_object_add +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x49166174 ttm_bo_device_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x4b0db88f ttm_prime_object_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x4daf4f7b ttm_mem_global_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x50ca4a68 ttm_bo_kunmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x521ddb23 ttm_eu_backoff_reservation +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x5a8fdfea ttm_vt_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x5cf59609 ttm_bo_global_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x5dfaebb7 ttm_dma_tt_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x618d5238 ttm_bo_wait +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x62715522 ttm_page_alloc_debugfs +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x632ad186 ttm_mem_io_reserve +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x67b1d568 ttm_bo_global_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x67cc3955 ttm_eu_fence_buffer_objects +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x71852ac1 ttm_bo_mmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x74e90ab8 ttm_bo_move_accel_cleanup +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x7d55da85 ttm_read_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x80d86f0e ttm_object_device_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x84a0cb40 ttm_bo_unmap_virtual +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x84a13931 ttm_write_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x880a15ad ttm_base_object_lookup +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x89a443de ttm_write_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x8c2c07ef ttm_bo_del_sub_from_lru +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x8d14adbf ttm_io_prot +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x90e814fc ttm_tt_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x9201d755 ttm_bo_move_memcpy +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x9462a195 ttm_bo_synccpu_write_grab +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x94894449 ttm_base_object_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x95565828 ttm_mem_global_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x98e6123c ttm_bo_clean_mm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x998e45c0 ttm_ref_object_base_unref +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x9cd6c90f ttm_bo_mem_put +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x9de7704d ttm_mem_io_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xa2a129fd ttm_suspend_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xa343583e ttm_bo_swapout_all +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xa73de2a9 ttm_vt_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xa816eff0 ttm_bo_init_mm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xac24b761 ttm_bo_unlock_delayed_workqueue +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xb01a5f38 ttm_bo_evict_mm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xb83c6470 ttm_lock_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xc281d503 ttm_bo_mem_space +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xc5f0c2da ttm_read_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xc6034cc1 ttm_bo_manager_func +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xc8f2612f ttm_tt_set_placement_caching +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xc9f58e69 ttm_bo_validate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xcd79db9d ttm_bo_create +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xce6e43a8 ttm_base_object_lookup_for_ref +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xcf2513fe ttm_object_device_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xcf67c299 ttm_ref_object_exists +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xd3c0807a ttm_bo_kmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xd7f51742 ttm_suspend_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xd8edb115 ttm_base_object_unref +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xecc5202a ttm_bo_add_to_lru +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xee17be84 ttm_eu_reserve_buffers +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xf15352c7 ttm_bo_move_ttm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xf2404255 ttm_bo_synccpu_write_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xf44557d2 ttm_bo_dma_acc_size +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xf5b6caf5 ttm_bo_acc_size +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xf66de0a2 ttm_mem_global_free +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xf6b3d4b2 ttm_pool_unpopulate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xfa3b8d54 ttm_fbdev_mmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xfa7cd131 ttm_mem_global_alloc +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xfbc2c5ec ttm_object_file_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xfc969a12 ttm_bo_unref +EXPORT_SYMBOL drivers/hwmon/hwmon-vid 0x0903c239 vid_from_reg +EXPORT_SYMBOL drivers/hwmon/hwmon-vid 0xef1c781c vid_which_vrm +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-bit 0x1b90b4fa i2c_bit_add_bus +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-bit 0xb248e196 i2c_bit_add_numbered_bus +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-bit 0xdec92507 i2c_bit_algo +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-pca 0x3f2f7112 i2c_pca_add_bus +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-pca 0x4be0f35f i2c_pca_add_numbered_bus +EXPORT_SYMBOL drivers/i2c/busses/i2c-amd756 0xff076557 amd756_smbus +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x10dec252 mma9551_set_power_state +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x1b69b196 mma9551_write_config_byte +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x20c041b1 mma9551_app_reset +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x21ef2d44 mma9551_set_device_state +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x39dbaf99 mma9551_read_config_byte +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x41ef446c mma9551_read_accel_scale +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x4e009424 mma9551_update_config_bits +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x82d9f938 mma9551_gpio_config +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x901de6e2 mma9551_read_status_word +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x97cd6611 mma9551_write_config_word +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x9c88c0f6 mma9551_read_status_words +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xa288e070 mma9551_read_version +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xaa731513 mma9551_read_config_word +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xbcd7fe96 mma9551_sleep +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xbf84449a mma9551_write_config_words +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xbfd7c0b1 mma9551_read_config_words +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xc3415a33 mma9551_read_accel_chan +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xe27990f8 mma9551_read_status_byte +EXPORT_SYMBOL drivers/iio/accel/st_accel 0x7386b468 st_accel_common_probe +EXPORT_SYMBOL drivers/iio/accel/st_accel 0xecd2ac10 st_accel_common_remove +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x0c942197 hid_sensor_write_samp_freq_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x7cad7000 hid_sensor_write_raw_hyst_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x8f17f32b hid_sensor_read_raw_hyst_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0xc185b29f hid_sensor_parse_common_attributes +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0xc207d0d1 hid_sensor_read_samp_freq_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0xc83a92bf hid_sensor_format_scale +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0xf9591a4b hid_sensor_read_poll_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-trigger 0x34380e35 hid_sensor_pm_ops +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-trigger 0x3b0b2114 hid_sensor_setup_trigger +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-trigger 0x5e61571f hid_sensor_remove_trigger +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-trigger 0x88783e33 hid_sensor_power_state +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0x2f119a06 ssp_register_consumer +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0x870c0caa ssp_change_delay +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0x984e4794 ssp_enable_sensor +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0xcfd2371b ssp_get_sensor_delay +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0xdaa099b6 ssp_disable_sensor +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/ssp_iio 0x08ebe828 ssp_common_buffer_postenable +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/ssp_iio 0x6cca87e3 ssp_common_process_data +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/ssp_iio 0xfad7baf7 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 0x09114cfd st_sensors_set_axis_enable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x3c265336 st_sensors_get_buffer_element +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x51b1dff7 st_sensors_set_fullscale_by_gain +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x5dc3e8ce st_sensors_check_device_support +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x608213dd st_sensors_power_enable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x71a3936d st_sensors_set_odr +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x75f55e1c st_sensors_set_enable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x7958726a st_sensors_init_sensor +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xa031961d st_sensors_set_dataready_irq +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xb56d396d st_sensors_allocate_trigger +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xba4f3fc6 st_sensors_sysfs_scale_avail +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xd26fd89f st_sensors_power_disable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xd3714563 st_sensors_read_info_raw +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xde81910e st_sensors_sysfs_sampling_frequency_avail +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xf0e7d176 st_sensors_deallocate_trigger +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors_i2c 0x02065db8 st_sensors_i2c_configure +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors_i2c 0x2af23a58 st_sensors_of_i2c_probe +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors_spi 0x3df53919 st_sensors_spi_configure +EXPORT_SYMBOL drivers/iio/gyro/st_gyro 0x5f244eeb st_gyro_common_remove +EXPORT_SYMBOL drivers/iio/gyro/st_gyro 0xe27c80ba st_gyro_common_probe +EXPORT_SYMBOL drivers/iio/imu/adis_lib 0x60d0468a adis_debugfs_reg_access +EXPORT_SYMBOL drivers/iio/imu/adis_lib 0xdc5887f3 adis_enable_irq +EXPORT_SYMBOL drivers/iio/industrialio 0x140bcae2 iio_bus_type +EXPORT_SYMBOL drivers/iio/industrialio 0x16968779 iio_read_const_attr +EXPORT_SYMBOL drivers/iio/industrialio 0x2d6bcdcb iio_trigger_generic_data_rdy_poll +EXPORT_SYMBOL drivers/iio/industrialio 0x3bad5a80 iio_trigger_notify_done +EXPORT_SYMBOL drivers/iio/industrialio 0x3cad57ea iio_device_register +EXPORT_SYMBOL drivers/iio/industrialio 0x464a0405 iio_device_unregister +EXPORT_SYMBOL drivers/iio/industrialio 0x4af7864f iio_push_event +EXPORT_SYMBOL drivers/iio/industrialio 0x5b76c2ac iio_trigger_register +EXPORT_SYMBOL drivers/iio/industrialio 0x68d29554 iio_buffer_init +EXPORT_SYMBOL drivers/iio/industrialio 0x723340f5 iio_trigger_free +EXPORT_SYMBOL drivers/iio/industrialio 0x852fa0ac iio_device_free +EXPORT_SYMBOL drivers/iio/industrialio 0x8811ef98 iio_trigger_poll +EXPORT_SYMBOL drivers/iio/industrialio 0x99e4029f iio_trigger_poll_chained +EXPORT_SYMBOL drivers/iio/industrialio 0xb2a9947d iio_trigger_unregister +EXPORT_SYMBOL drivers/iio/industrialio 0xbef2fb85 iio_triggered_buffer_predisable +EXPORT_SYMBOL drivers/iio/industrialio 0xcb9e11a8 iio_triggered_buffer_postenable +EXPORT_SYMBOL drivers/iio/industrialio 0xd527f7da iio_device_alloc +EXPORT_SYMBOL drivers/iio/industrialio 0xda60bd35 iio_trigger_alloc +EXPORT_SYMBOL drivers/iio/industrialio 0xdf76bbeb iio_pollfunc_store_time +EXPORT_SYMBOL drivers/iio/industrialio-triggered-buffer 0x39a6f043 iio_triggered_buffer_cleanup +EXPORT_SYMBOL drivers/iio/industrialio-triggered-buffer 0x436107a0 iio_triggered_buffer_setup +EXPORT_SYMBOL drivers/iio/kfifo_buf 0x092e8db7 iio_kfifo_allocate +EXPORT_SYMBOL drivers/iio/kfifo_buf 0x26d9ed3c devm_iio_kfifo_free +EXPORT_SYMBOL drivers/iio/kfifo_buf 0x34a3e6dc iio_kfifo_free +EXPORT_SYMBOL drivers/iio/kfifo_buf 0xe44cf345 devm_iio_kfifo_allocate +EXPORT_SYMBOL drivers/iio/magnetometer/st_magn 0x704f0766 st_magn_common_remove +EXPORT_SYMBOL drivers/iio/magnetometer/st_magn 0xe6498a86 st_magn_common_probe +EXPORT_SYMBOL drivers/iio/pressure/ms5611_core 0x61dd9347 ms5611_probe +EXPORT_SYMBOL drivers/iio/pressure/st_pressure 0x5a7c73bf st_press_common_remove +EXPORT_SYMBOL drivers/iio/pressure/st_pressure 0xbb742657 st_press_common_probe +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x049ace30 rdma_addr_find_smac_by_sgid +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x04b8b6d7 rdma_translate_ip +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x1c3c0ad3 rdma_addr_size +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x1ea5767b rdma_addr_register_client +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x273f4cca rdma_addr_cancel +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x32a8402c rdma_addr_unregister_client +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x59252c9d rdma_resolve_ip +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0xf029eb25 rdma_addr_find_dmac_by_grh +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0xf078aa58 rdma_copy_addr +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x03f6443f ib_send_cm_rtu +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x06dcd9e3 ib_cm_notify +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x0e00a8db ib_send_cm_mra +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x11d3eaa2 ib_send_cm_sidr_rep +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x15862c9b ib_send_cm_lap +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x23f8bd5e ib_send_cm_req +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x266986d9 ib_send_cm_sidr_req +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x536b6b3a ib_send_cm_apr +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x54e08a56 ib_send_cm_dreq +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x5672f8ea ib_send_cm_rep +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x60210f47 ib_send_cm_drep +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x6f17ab50 ib_cm_init_qp_attr +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x9eaadee3 ib_destroy_cm_id +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xa2a849ce ib_create_cm_id +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xddeb03f8 ib_cm_listen +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xeac1221e ib_send_cm_rej +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xfb615b2f cm_class +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x00063402 ib_find_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x062830df ib_alloc_fmr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0ad8eab8 ib_alloc_fast_reg_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0c1b9ac1 ib_ud_header_unpack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0e75cc7c ib_resize_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x12796f76 ib_get_dma_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x12bc1557 ib_alloc_xrcd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x13e9a892 ib_modify_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x16ac9194 ib_destroy_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1a45489e ib_create_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1d1f11f2 ib_create_fmr_pool +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1df3c20f ib_attach_mcast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1e491a04 ib_unmap_fmr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x21b4700d ib_dereg_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x233462b6 ib_unregister_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x28838ddf ib_query_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2ed6e386 ib_ud_header_pack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x30daa327 ib_query_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x31159931 ib_resolve_eth_l2_attrs +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x3292b7a9 ib_fmr_pool_map_phys +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x36c73b96 ib_create_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x3a4e5242 ib_dealloc_pd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x3adf64f4 ib_dealloc_xrcd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x3f7431bf ib_query_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x4384987d ib_find_cached_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x4b65f786 ib_destroy_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x4ba655e4 ib_umem_page_count +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5068f65f ib_create_ah_from_wc +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x50dbc447 ib_flush_fmr_pool +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x520b2638 ib_pack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5611cdea rdma_node_get_transport +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x57487749 ibnl_add_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x592e6a4a ib_destroy_flow +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5add1479 ib_open_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5d533ead ib_create_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5d5ddb62 ib_query_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x61a0f335 ib_modify_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x63b49a98 ib_query_port +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x65b95eda ib_modify_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x67092e88 ib_find_exact_cached_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6dff4a56 ib_umem_odp_map_dma_pages +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6e030e26 ib_modify_qp_is_ok +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x72c06413 ib_dealloc_mw +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7396ffd3 ib_reg_phys_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x739cdacf ib_create_flow +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x74671b6d ib_get_cached_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x759e9410 ib_detach_mcast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x8103713e ib_alloc_fast_reg_page_list +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x84076943 ib_register_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x8570db2b ib_find_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x85a5fb09 ib_get_client_data +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x8975acfa ibnl_unicast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x8e8ccb8b ib_modify_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x9c59b7e1 ib_destroy_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x9d608c78 ib_create_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa27d03b6 ib_set_client_data +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa8c835b7 ib_modify_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xab0a3467 mult_to_ib_rate +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb1a312e1 ib_unpack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb23ae213 ib_free_fast_reg_page_list +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb53d1100 ibnl_put_msg +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb66d8a65 ib_unregister_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb67c6425 ib_query_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb73d84d6 ib_dealloc_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb7e39e1e ib_alloc_mw +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb820d5b7 ib_register_event_handler +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb93a52b0 ib_rate_to_mbps +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xbab02213 ib_rereg_phys_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xbadd8259 ib_rate_to_mult +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xbd7fafe2 ib_umem_get +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xbde92e18 ib_query_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc164eb65 ib_destroy_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc21dff1e ibnl_put_attr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc2af4800 ib_get_cached_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc32b59ff ib_destroy_fmr_pool +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc67f14a5 ibnl_remove_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc7da357e ib_create_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xcfa2a09f ib_event_msg +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd29acc76 ib_close_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd313561e ib_modify_port +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd54100ca ib_umem_odp_unmap_dma_pages +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd56029a2 ib_unregister_event_handler +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe3d58336 ib_register_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe5840ec6 ib_wc_status_msg +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe649b691 ibnl_multicast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe7fd00b1 ib_umem_release +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe87b9d4c ib_check_mr_status +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe965bb4f ib_umem_copy_from +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xea06f3d9 ib_alloc_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xec56be05 ib_dispatch_event +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xedae6b32 ib_find_cached_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xeea97feb ib_query_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf4eecc1c ib_get_cached_lmc +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf5481f7e ib_alloc_pd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf762e6cf ib_dealloc_fmr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf7f1fe02 ib_init_ah_from_wc +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xfa8fb529 ib_fmr_pool_unmap +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xfb190f4b rdma_port_get_link_layer +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xfc150956 ib_ud_header_init +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xff3e52d4 ib_destroy_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x14ddc7d4 ib_mad_kernel_rmpp_agent +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x2f0ea69e ib_response_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x37ea798e ib_create_send_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x3d2b269c ib_cancel_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x4d354f38 ib_register_mad_agent +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x587b23f8 ib_process_mad_wc +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x6f077fcf ib_get_mad_data_offset +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x72593c30 ib_get_rmpp_segment +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x7b5d4b7a ib_is_mad_class_rmpp +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x7e44e0d6 ib_unregister_mad_agent +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x9c351256 ib_free_recv_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x9d6c3ce0 ib_register_mad_snoop +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xb2c8cc15 ib_free_send_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xb4b02bbf ib_redirect_mad_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xc251ad0d ib_modify_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xd89aa104 ib_post_send_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x22f07253 ib_sa_unpack_path +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x5328d7a6 ib_sa_register_client +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x576fdbac ib_sa_free_multicast +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x60d632c9 ib_sa_join_multicast +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x61890c06 ib_init_ah_from_path +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x65bcf7ba ib_init_ah_from_mcmember +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x7ce5a0a5 ib_sa_get_mcmember_rec +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x833b54f6 ib_sa_service_rec_query +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x9a1cd50d ib_sa_unregister_client +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x9fb2db6b ib_sa_path_rec_get +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xbba53bf3 ib_sa_guid_info_rec_query +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xda0d50ec ib_sa_cancel_query +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xddc330e7 ib_sa_pack_path +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x2569d757 ib_copy_path_rec_to_user +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x52a6ce77 ib_copy_ah_attr_to_user +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x7971c00e ib_copy_qp_attr_to_user +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0xe350f2aa ib_copy_path_rec_from_user +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x038a4695 iwpm_mapping_info_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x0ff9f042 iwpm_remove_mapinfo +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x164a3a1c iw_cm_connect +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x1a2a8274 iw_cm_init_qp_attr +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x44f50c84 iwpm_add_mapping_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x54f001de iwpm_add_and_query_mapping_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x5da59312 iwpm_register_pid +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x65c5f258 iw_cm_accept +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x6968573d iwpm_add_mapping +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x6c74c344 iwpm_get_remote_info +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x868d98c1 iw_cm_disconnect +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x89489ebe iwpm_remote_info_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x8f8587e6 iwpm_register_pid_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x904609a0 iwpm_remove_mapping +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x90f80e33 iw_cm_listen +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x91a914d6 iwpm_init +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x9327be67 iwpm_exit +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x99edf901 iwpm_valid_pid +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xb8aaeefc iw_cm_reject +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xbaacebae iwpm_ack_mapping_info_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xd447b24a iwpm_create_mapinfo +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xe1dd2f1c iwpm_mapping_error_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xf380aa0f iwpm_add_and_query_mapping +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xf4e8ac89 iw_create_cm_id +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xfda7b8df iw_destroy_cm_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x0006df8f rdma_destroy_qp +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x0849521d rdma_reject +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x086d5d37 rdma_resolve_route +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x1c3acb0b rdma_init_qp_attr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x2a15295b rdma_connect +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x33360cd9 rdma_listen +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x43eb502e rdma_destroy_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x474367ba rdma_notify +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x55ee4ce1 rdma_accept +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x6437d329 rdma_leave_multicast +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x73ac9e36 rdma_set_ib_paths +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x907df803 rdma_event_msg +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x93061b78 rdma_resolve_addr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x96d969f0 rdma_set_reuseaddr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x975cb9b7 rdma_create_qp +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xa5962f6d rdma_set_service_type +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xca27a782 rdma_join_multicast +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xd08f8ec1 rdma_get_service_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xd12e128f rdma_create_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xe03015f3 rdma_disconnect +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xe56dc335 rdma_bind_addr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xf77ebff6 rdma_set_afonly +EXPORT_SYMBOL drivers/input/gameport/gameport 0x2943464f gameport_unregister_port +EXPORT_SYMBOL drivers/input/gameport/gameport 0x2e8cf04c gameport_stop_polling +EXPORT_SYMBOL drivers/input/gameport/gameport 0x330d82bf gameport_start_polling +EXPORT_SYMBOL drivers/input/gameport/gameport 0x7617532c __gameport_register_port +EXPORT_SYMBOL drivers/input/gameport/gameport 0x80a60a1c gameport_open +EXPORT_SYMBOL drivers/input/gameport/gameport 0x814bba5d gameport_unregister_driver +EXPORT_SYMBOL drivers/input/gameport/gameport 0xe0035a67 __gameport_register_driver +EXPORT_SYMBOL drivers/input/gameport/gameport 0xefa06aa9 gameport_close +EXPORT_SYMBOL drivers/input/gameport/gameport 0xfc3a404d gameport_set_phys +EXPORT_SYMBOL drivers/input/input-polldev 0x6b666bc4 input_free_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0x857bc0fd input_register_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0x96a1a552 devm_input_allocate_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0xa1f75235 input_allocate_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0xd3234bd7 input_unregister_polled_device +EXPORT_SYMBOL drivers/input/matrix-keymap 0xc3444d19 matrix_keypad_build_keymap +EXPORT_SYMBOL drivers/input/misc/ad714x 0x15576c2a ad714x_remove +EXPORT_SYMBOL drivers/input/misc/ad714x 0x7ece39c6 ad714x_enable +EXPORT_SYMBOL drivers/input/misc/ad714x 0x89563c3f ad714x_probe +EXPORT_SYMBOL drivers/input/misc/ad714x 0x8b362a81 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 0xdebea72e cma3000_init +EXPORT_SYMBOL drivers/input/sparse-keymap 0x12d8b941 sparse_keymap_entry_from_scancode +EXPORT_SYMBOL drivers/input/sparse-keymap 0x54c59fc0 sparse_keymap_free +EXPORT_SYMBOL drivers/input/sparse-keymap 0x703714c4 sparse_keymap_report_event +EXPORT_SYMBOL drivers/input/sparse-keymap 0x8e026208 sparse_keymap_report_entry +EXPORT_SYMBOL drivers/input/sparse-keymap 0xd3035947 sparse_keymap_entry_from_keycode +EXPORT_SYMBOL drivers/input/sparse-keymap 0xda4ac19a sparse_keymap_setup +EXPORT_SYMBOL drivers/input/touchscreen/ad7879 0x7b5d33e6 ad7879_probe +EXPORT_SYMBOL drivers/input/touchscreen/ad7879 0x8049e1e3 ad7879_pm_ops +EXPORT_SYMBOL drivers/input/touchscreen/ad7879 0x97f83edf ad7879_remove +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x04403fcf unregister_capi_driver +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x0923984d capi_ctr_handle_message +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x14f2aa5a capi20_get_version +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x2b8eab1f capilib_free_ncci +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x2baa6586 capilib_new_ncci +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x31c24aa4 capi20_isinstalled +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x50b33ca4 capi_cmsg2message +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x56cd6e9c capi_ctr_suspend_output +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x6057c6f3 capi_message2cmsg +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x62e32d43 capilib_data_b3_conf +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x71e8d5ba capilib_data_b3_req +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x76f6769e detach_capi_ctr +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x7a33596c capi20_get_serial +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x7e6f1307 capi20_get_manufacturer +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x899c8a05 attach_capi_ctr +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x8f699913 capilib_release +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x9ae018aa capi20_release +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x9baa8930 capi_ctr_down +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x9f823278 register_capi_driver +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xa7c4fd6c capi_message2str +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xaa165d27 capilib_release_appl +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xb19fda8d capi_cmd2str +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xb60e5e5f capi_cmsg_header +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xc10fe128 cdebbuf_free +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xc42d9ec1 capi20_manufacturer +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xc9709319 capi20_put_message +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xcfb75a89 capi_ctr_ready +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xd7c0ddb7 capi_ctr_resume_output +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xe19a11ac capi20_get_profile +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xe2ebee4a capi20_register +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xe8ad9bd1 capi_cmsg2str +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x04d376b4 avmcard_dma_free +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x0c76595c b1_load_t4file +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x0f6fd93b b1_alloc_card +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x10f65f01 b1_register_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x17751eb2 b1_load_config +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x220cd9c6 b1_loaded +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x29614e37 b1ctl_proc_fops +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x2fced562 b1_getrevision +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x85f09690 b1_irq_table +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x8f1bbc51 b1_load_firmware +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xb37c3be7 b1_parse_version +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xc86406ee b1_release_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xcbc5bb2b b1_reset_ctr +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xdfd28376 b1_detect +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xe1dadca4 b1_send_message +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xe910cd3a avmcard_dma_alloc +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xfa10fee4 b1_interrupt +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xfc785ef2 b1_free_card +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x01871036 b1dma_reset +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x0aac2723 b1pciv4_detect +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x0f05ceb9 b1dma_register_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x40a2e4ae b1dma_reset_ctr +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x52c634f4 b1dma_release_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x70fb460a b1dmactl_proc_fops +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x9b1159de b1dma_send_message +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xc925b5df t1pci_detect +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xd6f9f1ea b1dma_interrupt +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xf4d1a771 b1dma_load_firmware +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1pcmcia 0x29562993 b1pcmcia_delcard +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1pcmcia 0xaec3240e b1pcmcia_addcard_m1 +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1pcmcia 0xea620116 b1pcmcia_addcard_m2 +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1pcmcia 0xf14bf8b1 b1pcmcia_addcard_b1 +EXPORT_SYMBOL drivers/isdn/hardware/eicon/divadidd 0x2974ead1 DIVA_DIDD_Read +EXPORT_SYMBOL drivers/isdn/hardware/eicon/divadidd 0x7ab59853 proc_net_eicon +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0x12438f91 mISDNisac_irq +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0x36ec2a38 mISDNipac_init +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0xbdc4ce2c mISDNisac_init +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0xdba41919 mISDNipac_irq +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNisar 0x9d7c9fa5 mISDNisar_irq +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNisar 0xe7173b22 mISDNisar_init +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x07f4f2ce hisax_unregister +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x0e96853a hisax_init_pcmcia +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x148f0c99 FsmFree +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x6fe1ca04 FsmDelTimer +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x93a64734 FsmChangeState +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x9df0cd27 FsmEvent +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x9f987c85 FsmRestartTimer +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0xa1bc94b9 FsmInitTimer +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0xee93522c hisax_register +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0xf0a16657 FsmNew +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0xfc27303b HiSax_closecard +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x2c265901 isacsx_setup +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x3f3b323a isac_d_l2l1 +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x6a3cda96 isac_init +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x787e1c22 isacsx_irq +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x90f1fc1d isac_irq +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0xd4f279ca isac_setup +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0x0a54ed64 register_isdn +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0x85781670 isdn_ppp_register_compressor +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0xe05453f8 isdn_ppp_unregister_compressor +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0xfa06820f isdn_register_divert +EXPORT_SYMBOL drivers/isdn/i4l/isdnhdlc 0x3b71e4fc isdnhdlc_decode +EXPORT_SYMBOL drivers/isdn/i4l/isdnhdlc 0x59cc8a7e isdnhdlc_out_init +EXPORT_SYMBOL drivers/isdn/i4l/isdnhdlc 0x8ee38862 isdnhdlc_rcv_init +EXPORT_SYMBOL drivers/isdn/i4l/isdnhdlc 0xfd9d4c09 isdnhdlc_encode +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x06fcebef mISDN_FsmDelTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x0efe08b6 mISDN_freedchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x1afa262e recv_Bchannel_skb +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x1cf196fb mISDN_FsmAddTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x1efb1966 queue_ch_frame +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x20b3f300 dchannel_senddata +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x2348cc3c mISDN_FsmFree +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x253d8497 get_next_bframe +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x29fa5b43 mISDN_FsmRestartTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x34add6e8 mISDNDevName4ch +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x36ec1940 mISDN_FsmInitTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x386df794 recv_Dchannel_skb +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x50c2230c mISDN_FsmChangeState +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x53d42a54 mISDN_freebchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x588886a6 l1_event +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x6b8b6184 recv_Bchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x88735abc mISDN_unregister_device +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x8a4e99fb mISDN_clock_update +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x8cfe3d98 mISDN_unregister_Bprotocol +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x99b33b9e mISDN_register_Bprotocol +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x9cce8890 mISDN_initdchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xa7b3f08f bchannel_senddata +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xb2fdc34e mISDN_ctrl_bchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xb3f09c36 recv_Dchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xb835d7e5 mISDN_clear_bchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xb874f414 create_l1 +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xbfcdf0a9 get_next_dframe +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xc3401729 mISDN_register_clock +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 0xd82bd901 mISDN_register_device +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xdf8a9a6d mISDN_initbchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xe0b95fa2 bchannel_get_rxbuf +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xe804e0fc recv_Echannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xe8f617eb mISDN_unregister_clock +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xf9e7832f mISDN_FsmNew +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_dsp 0x01087af0 mISDN_dsp_element_unregister +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_dsp 0x60721da7 dsp_audio_law_to_s32 +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_dsp 0xa215f1b2 dsp_audio_s16_to_law +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_dsp 0xb98308d8 mISDN_dsp_element_register +EXPORT_SYMBOL drivers/md/bcache/bcache 0x0c4d0956 bch_btree_sort_lazy +EXPORT_SYMBOL drivers/md/bcache/bcache 0x10dc0d06 bch_bset_insert +EXPORT_SYMBOL drivers/md/bcache/bcache 0x20b0cde6 closure_sync +EXPORT_SYMBOL drivers/md/bcache/bcache 0x3f880818 closure_sub +EXPORT_SYMBOL drivers/md/bcache/bcache 0x66d28e22 bch_btree_iter_init +EXPORT_SYMBOL drivers/md/bcache/bcache 0x6969b5d8 bch_bset_init_next +EXPORT_SYMBOL drivers/md/bcache/bcache 0x7b55ca4f bch_bset_fix_invalidated_key +EXPORT_SYMBOL drivers/md/bcache/bcache 0x970b99ed closure_wait +EXPORT_SYMBOL drivers/md/bcache/bcache 0x9e8b3cee bch_btree_keys_alloc +EXPORT_SYMBOL drivers/md/bcache/bcache 0xab2d2b84 bch_btree_insert_key +EXPORT_SYMBOL drivers/md/bcache/bcache 0xad29a6f5 bch_bset_build_written_tree +EXPORT_SYMBOL drivers/md/bcache/bcache 0xaec09a2b bch_bkey_try_merge +EXPORT_SYMBOL drivers/md/bcache/bcache 0xaf77343c bch_btree_keys_free +EXPORT_SYMBOL drivers/md/bcache/bcache 0xc04554f7 bch_btree_iter_next +EXPORT_SYMBOL drivers/md/bcache/bcache 0xc0b9ef00 bch_btree_sort_partial +EXPORT_SYMBOL drivers/md/bcache/bcache 0xca580595 bch_btree_keys_init +EXPORT_SYMBOL drivers/md/bcache/bcache 0xd0a9ccfb closure_put +EXPORT_SYMBOL drivers/md/bcache/bcache 0xe3c17af1 __closure_wake_up +EXPORT_SYMBOL drivers/md/bcache/bcache 0xe47e0829 __bch_bset_search +EXPORT_SYMBOL drivers/md/bcache/bcache 0xe67c2d16 bch_bset_sort_state_init +EXPORT_SYMBOL drivers/md/dm-bufio 0x72f07bf4 dm_bufio_set_minimum_buffers +EXPORT_SYMBOL drivers/md/dm-bufio 0xa7978f56 dm_bufio_forget +EXPORT_SYMBOL drivers/md/dm-log 0x35e7410c dm_dirty_log_type_unregister +EXPORT_SYMBOL drivers/md/dm-log 0x39e31f92 dm_dirty_log_destroy +EXPORT_SYMBOL drivers/md/dm-log 0xac5a0a9c dm_dirty_log_create +EXPORT_SYMBOL drivers/md/dm-log 0xae2eb0c3 dm_dirty_log_type_register +EXPORT_SYMBOL drivers/md/dm-snapshot 0x0726b9ee dm_exception_store_type_register +EXPORT_SYMBOL drivers/md/dm-snapshot 0x16ebb754 dm_snap_cow +EXPORT_SYMBOL drivers/md/dm-snapshot 0x298fefde dm_exception_store_type_unregister +EXPORT_SYMBOL drivers/md/dm-snapshot 0xc135e250 dm_exception_store_destroy +EXPORT_SYMBOL drivers/md/dm-snapshot 0xf02b3fa5 dm_exception_store_create +EXPORT_SYMBOL drivers/md/dm-snapshot 0xf6e84ffb dm_snap_origin +EXPORT_SYMBOL drivers/md/raid456 0xaea28500 raid5_set_cache_size +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x1156a0dc flexcop_device_kmalloc +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x1306c15a flexcop_pid_feed_control +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x141e1189 flexcop_sram_ctrl +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x278fd96e flexcop_pass_dmx_packets +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x3fec20c6 flexcop_eeprom_check_mac_addr +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x5a0f1ed3 flexcop_sram_set_dest +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x897ba285 flexcop_device_exit +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x8de7c4c6 flexcop_i2c_request +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xb0c21a84 flexcop_device_kfree +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xc20d5fdf flexcop_device_initialize +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xd8c1bd0a flexcop_wan_set_speed +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xef538297 flexcop_pass_dmx_data +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xfdefc551 flexcop_dump_reg +EXPORT_SYMBOL drivers/media/common/cx2341x 0x1ca0c084 cx2341x_log_status +EXPORT_SYMBOL drivers/media/common/cx2341x 0x2f25eee2 cx2341x_update +EXPORT_SYMBOL drivers/media/common/cx2341x 0x30cb4cd7 cx2341x_ext_ctrls +EXPORT_SYMBOL drivers/media/common/cx2341x 0x3db8be82 cx2341x_ctrl_query +EXPORT_SYMBOL drivers/media/common/cx2341x 0x43d3e6d5 cx2341x_handler_init +EXPORT_SYMBOL drivers/media/common/cx2341x 0x44abd64f cx2341x_handler_set_busy +EXPORT_SYMBOL drivers/media/common/cx2341x 0x51191c67 cx2341x_handler_setup +EXPORT_SYMBOL drivers/media/common/cx2341x 0x6be4ff02 cx2341x_handler_set_50hz +EXPORT_SYMBOL drivers/media/common/cx2341x 0xc184ec1e cx2341x_ctrl_get_menu +EXPORT_SYMBOL drivers/media/common/cx2341x 0xcf76ce95 cx2341x_fill_defaults +EXPORT_SYMBOL drivers/media/common/cx2341x 0xcf8b77a4 cx2341x_mpeg_ctrls +EXPORT_SYMBOL drivers/media/common/cypress_firmware 0x983b85bf cypress_load_firmware +EXPORT_SYMBOL drivers/media/common/tveeprom 0xbf3a3e2c tveeprom_read +EXPORT_SYMBOL drivers/media/common/tveeprom 0xe24aca0f tveeprom_hauppauge_analog +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x180098d4 dvb_frontend_reinitialise +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x19591134 dvb_ringbuffer_read +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x1c376069 dvb_frontend_detach +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x22d6ce4a dvb_ringbuffer_avail +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x2448e37b dvb_dmxdev_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x2760349b dvb_dmx_swfilter_packets +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x28ee2ae8 dvb_ringbuffer_flush +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x38bd3d9d dvb_dmx_swfilter +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x3f7224d5 dvb_ringbuffer_read_user +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x4a08a2c7 dvb_dmx_swfilter_raw +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x4d3b9a9c dvb_ringbuffer_write +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x51edc134 dvb_unregister_frontend +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x5908aafc dvb_generic_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x5f2162a8 dvb_net_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x65886421 dvb_ringbuffer_write_user +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x6a7dd990 dvb_dmx_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x6c04b5e5 dvb_generic_open +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x6df4bf75 dvb_dmx_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x73bce7cc dvb_ca_en50221_camchange_irq +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x74a5a698 dvb_filter_pes2ts_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x75199113 dvb_dmxdev_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x77d3fa7f dvb_net_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x78d62338 dvb_ringbuffer_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x7a27d572 dvb_ca_en50221_camready_irq +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x7ba5d8bd dvb_ringbuffer_flush_spinlock_wakeup +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x80e3832d dvb_filter_get_ac3info +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x8e47dce5 dvb_ringbuffer_empty +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x9a1d58cf dvb_ca_en50221_frda_irq +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x9c804625 dvb_generic_ioctl +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xa2786b6f dvb_register_frontend +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xa3e1d7f1 dvb_register_adapter +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xac4ca1b0 intlog2 +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xb941d6fa dvb_frontend_suspend +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xbd5e9627 dvb_ca_en50221_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xc6084a3e dvb_unregister_adapter +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xdb2cd70a dvb_ca_en50221_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xdb576668 dvb_ringbuffer_free +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xe5ae8707 intlog10 +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xee50df2f dvb_unregister_device +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xeee72b75 dvb_register_device +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xf3adb833 dvb_frontend_resume +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xf821d629 dvb_frontend_sleep_until +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xf826deb0 dvb_filter_pes2ts +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xfc2e517a dvb_dmx_swfilter_204 +EXPORT_SYMBOL drivers/media/dvb-frontends/a8293 0x4502bc1f a8293_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/af9013 0xf9baf66a af9013_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/atbm8830 0x1cd7145d atbm8830_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x0d488e88 au8522_release_state +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x390cf554 au8522_init +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x444f6976 au8522_writereg +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x580962c7 au8522_readreg +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x69af5b8f au8522_led_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x833e7b63 au8522_analog_i2c_gate_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x8e58c20b au8522_i2c_gate_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0xbd042615 au8522_get_state +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0xd2d23f8d au8522_sleep +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_dig 0x399180d7 au8522_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/bcm3510 0xcf6c6bf9 bcm3510_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx22700 0x6427e5fd cx22700_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx22702 0x39d635f0 cx22702_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24110 0xabbe2921 cx24110_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24113 0x2953e8c9 cx24113_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24113 0x8bf0f0a7 cx24113_agc_callback +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24116 0x96c4d792 cx24116_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24120 0x09f39573 cx24120_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24123 0xa3b44e0d cx24123_get_tuner_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24123 0xbcbdaf41 cx24123_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cxd2820r 0xe0e3a1dc cxd2820r_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0x12c2a0fa dib0070_set_rf_output +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0x1da76a5d dib0070_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0x797bae3c dib0070_get_rf_output +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0xa4ca4a8d dib0070_wbd_offset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0xe1701307 dib0070_ctrl_agc_filter +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x04466b5c dib0090_fw_register +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x19937d5a dib0090_set_tune_state +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x1ae77bd3 dib0090_dcc_freq +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x5cb5eccc dib0090_get_wbd_offset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x74493223 dib0090_update_tuning_table_7090 +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x7876c136 dib0090_get_current_gain +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x7c9848ee dib0090_register +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x9c4d9473 dib0090_set_dc_servo +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xa549b346 dib0090_get_wbd_target +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xa604fdd0 dib0090_set_vga +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xae2b0279 dib0090_update_rframp_7090 +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xc96cddc5 dib0090_pwm_gain_reset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xcad84464 dib0090_gain_control +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xce849497 dib0090_get_tune_state +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xe0dd7950 dib0090_set_switch +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mb 0x67f11211 dib3000mb_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x033fde56 dib3000mc_pid_parse +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x27e20ff6 dib3000mc_set_config +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x33daeade dib3000mc_get_tuner_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x5bb00ac4 dib3000mc_i2c_enumeration +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x7fc504e5 dib3000mc_pid_control +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x99e7318f dib3000mc_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0x15341aab dib7000m_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0xa389a335 dib7000m_get_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0xc246db81 dib7000m_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0xcca4e466 dib7000m_pid_filter +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0xdeb607bf dib7000p_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x28319c38 dib8000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0x0d90eabf dibx000_exit_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0x778f3507 dibx000_init_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0x8d88a804 dibx000_get_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0xad3ad91c systime +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0xd2733147 dibx000_reset_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0xe339f88d dibx000_i2c_set_speed +EXPORT_SYMBOL drivers/media/dvb-frontends/drx39xyj/drx39xyj 0x31ead0b3 drx39xxj_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/drxd 0x6cf92116 drxd_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/drxk 0xa9f1904b drxk_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ds3000 0x127c2226 ds3000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dvb-pll 0x544591c6 dvb_pll_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ec100 0x32fe0629 ec100_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/isl6405 0xb679f8e6 isl6405_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/isl6421 0x8a0a45d3 isl6421_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/isl6423 0xd7372e8e isl6423_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/itd1000 0xa50102b1 itd1000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ix2505v 0x1ace66cd ix2505v_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/l64781 0xff3bc380 l64781_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lg2160 0x0e214b49 lg2160_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgdt3305 0x38b8e2db lgdt3305_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgdt3306a 0xd9a79f71 lgdt3306a_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgdt330x 0xb4508628 lgdt330x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgs8gxx 0x9b95f672 lgs8gxx_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lnbp21 0x684ad0fc lnbh24_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lnbp21 0xcd0c1475 lnbp21_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lnbp22 0xb9f1041c lnbp22_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/m88ds3103 0x659e3add m88ds3103_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/m88ds3103 0xaa17ad86 m88ds3103_get_agc_pwm +EXPORT_SYMBOL drivers/media/dvb-frontends/m88rs2000 0x37e33ff0 m88rs2000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mb86a16 0xa4dc12a7 mb86a16_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mb86a20s 0xa41a7e4f mb86a20s_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mt312 0x7b7db1c1 mt312_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mt352 0x56d7c66f mt352_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/nxt200x 0x9477d2c4 nxt200x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/nxt6000 0x20ff2c1e nxt6000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/or51132 0x2fa922f1 or51132_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/or51211 0x5c0e2cd4 or51211_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1409 0x41d6b878 s5h1409_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1411 0x3ec0a9d9 s5h1411_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1420 0xb8f7bea1 s5h1420_get_tuner_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1420 0xc83d75dd s5h1420_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s921 0xa191b490 s921_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/si2165 0x8b3130d3 si2165_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/si21xx 0x8681572f si21xx_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/sp8870 0xf13c8492 sp8870_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/sp887x 0xa2894653 sp887x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stb0899 0x24e16a1c stb0899_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stb6000 0xac86cafa stb6000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stb6100 0xbb8165c2 stb6100_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0288 0xa9981585 stv0288_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0297 0xa8ef6ac4 stv0297_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0299 0x161420d0 stv0299_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0367 0xc46ff21f stv0367cab_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0367 0xc736ca05 stv0367ter_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0900 0xe06ad897 stv0900_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv090x 0xa6744e95 stv090x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv6110 0xdeca7d26 stv6110_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv6110x 0x9fc35fa2 stv6110x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10021 0xbd20f7f0 tda10021_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10023 0x1d831877 tda10023_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10048 0xd87ba76a tda10048_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda1004x 0x5fcdc438 tda10046_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda1004x 0x6bd86c50 tda10045_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10071 0x82cb54a2 tda10071_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10086 0x942e0c5e tda10086_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda665x 0xd0b799e3 tda665x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda8083 0x099de5a1 tda8083_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda8261 0x94c88c00 tda8261_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda826x 0x1d310947 tda826x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ts2020 0xaa0ac408 ts2020_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tua6100 0x674c573b tua6100_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ves1820 0x4d110e55 ves1820_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ves1x93 0xa5e3beb8 ves1x93_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/zl10036 0x15d8570d zl10036_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/zl10039 0x11a23e86 zl10039_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/zl10353 0xbccecdfd zl10353_attach +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x2bf0fc1a flexcop_dma_control_timer_irq +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x30a2b80c flexcop_dma_control_size_irq +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x60c7130b flexcop_dma_xfer_control +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0xa822daa0 flexcop_dma_free +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0xacba22ad flexcop_dma_config_timer +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0xc8db2933 flexcop_dma_allocate +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0xd8f8b601 flexcop_dma_config +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0x69325e59 bt878_stop +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0x88de0971 bt878_device_control +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0x8f9b1d32 bt878 +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0x9cc104a6 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 0x2172ecd5 bttv_sub_register +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0x8ecf4acc bttv_write_gpio +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0xba101329 bttv_sub_unregister +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0xbcf2d2fb bttv_read_gpio +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0xe7a58e08 bttv_get_pcidev +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x26cae71b dst_comm_init +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x4ed3d2f9 rdc_reset_state +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x655f27e5 dst_attach +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x7ffd6bd7 read_dst +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x99e2f83f dst_error_recovery +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x9ae6ee4e dst_wait_dst_ready +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xc0b27e6e dst_error_bailout +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xe6e9278b write_dst +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xe94b8c9c dst_check_sum +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xff376741 dst_pio_disable +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst_ca 0x0b03b684 dst_ca_attach +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x0e61e33d cx18_claim_stream +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x2cdea06d cx18_reset_ir_gpio +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0xd0e4414f cx18_release_stream +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0xd435b145 cx18_ext_init +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0xf5bd8a99 cx18_stop_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0xf62989fa cx18_start_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/cx23885/altera-ci 0x3f77d5b1 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 0x784853c3 cx25821_print_irqbits +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x7a964b87 cx25821_risc_databuffer_audio +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xa5faf3ee cx25821_riscmem_alloc +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xaca9ef59 cx25821_sram_channel_dump_audio +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xba235b10 cx25821_dev_unregister +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xc5d38741 cx25821_sram_channels +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xcc443dd9 cx25821_set_gpiopin_direction +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xcf623137 cx25821_sram_channel_setup_audio +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xf85a60d5 cx25821_dev_get +EXPORT_SYMBOL drivers/media/pci/cx88/cx88-vp3054-i2c 0x08366425 vp3054_i2c_remove +EXPORT_SYMBOL drivers/media/pci/cx88/cx88-vp3054-i2c 0x49650640 vp3054_i2c_probe +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0x297f73b0 cx88_enum_input +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0x4d19527c cx88_video_mux +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0x77d9d328 cx88_querycap +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0x9d31d292 cx88_set_freq +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x16d46cdb cx8802_buf_queue +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x3b038bc7 cx8802_get_driver +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x5432cf11 cx8802_cancel_buffers +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x5e8831b7 cx8802_buf_prepare +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x5f892522 cx8802_start_dma +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x89545a14 cx8802_unregister_driver +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0xc6da52d6 cx8802_register_driver +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x0b0ee4a4 cx88_shutdown +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x0d25917f cx88_wakeup +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x1ff9e939 cx88_set_tvnorm +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x24b96362 cx88_risc_buffer +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x25859275 cx88_get_stereo +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x2bf4418f cx88_set_scale +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x4216fc84 cx88_sram_channels +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x587cb41a cx88_set_stereo +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x5cbf45c0 cx88_risc_databuffer +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x6141c8c5 cx88_tuner_callback +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x6985460d cx88_sram_channel_setup +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x7642ed3c cx88_print_irqbits +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x76ff70a3 cx88_sram_channel_dump +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x7ce569dc cx88_newstation +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x904b8696 cx88_audio_thread +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x9f818694 cx88_core_get +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xb1eb1a58 cx88_ir_stop +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xb4e95664 cx88_set_tvaudio +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xbd05ad09 cx88_core_put +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xbfaad2ef cx88_ir_start +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xe166e02d cx88_reset +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xe89d2aae cx88_core_irq +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xf5185953 cx88_vdev_init +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xfdd4165a cx88_dsp_detect_stereo_sap +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x0e2b1903 ivtv_udma_unmap +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x11e5d0be ivtv_vapi +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x14f67530 ivtv_debug +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x53029780 ivtv_start_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x6e2c0174 ivtv_udma_alloc +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x77b9e2c3 ivtv_vapi_result +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x8ac0f510 ivtv_api +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x9bb1b68d ivtv_set_irq_mask +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x9bc1bcda ivtv_release_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xa61a72e0 ivtv_udma_setup +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xafda1dcf ivtv_stop_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xc35ca91b ivtv_firmware_check +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xd4ea50ba ivtv_clear_irq_mask +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xd9e0e9e6 ivtv_udma_prepare +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xdb97269b ivtv_ext_init +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xe61aa639 ivtv_init_on_first_open +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xf2de5ea9 ivtv_reset_ir_gpio +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xf4194f62 ivtv_claim_stream +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x04e83446 saa7134_tuner_callback +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x0713ff15 saa7134_dmasound_exit +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x1211df5d saa7134_devlist +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x1e9bad48 saa7134_tvaudio_setmute +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x38f0d8b9 saa7134_pgtable_alloc +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x44650a20 saa7134_pgtable_free +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x6ee41f76 saa7134_set_gpio +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x71475a82 saa7134_dmasound_init +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x75c66969 saa7134_boards +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x8fbaafad saa_dsp_writel +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x9dbd0401 saa7134_ts_register +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xac6aff20 saa7134_pgtable_build +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xc5c77a94 saa7134_devlist_lock +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xe1abc253 saa7134_set_dmabits +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xfd48381c saa7134_ts_unregister +EXPORT_SYMBOL drivers/media/pci/ttpci/ttpci-eeprom 0x34de5d50 ttpci_eeprom_parse_mac +EXPORT_SYMBOL drivers/media/pci/ttpci/ttpci-eeprom 0xc3e4c127 ttpci_eeprom_decode_mac +EXPORT_SYMBOL drivers/media/pci/zoran/videocodec 0x34bb27d4 videocodec_attach +EXPORT_SYMBOL drivers/media/pci/zoran/videocodec 0x9bf4b607 videocodec_register +EXPORT_SYMBOL drivers/media/pci/zoran/videocodec 0xbaa061c9 videocodec_unregister +EXPORT_SYMBOL drivers/media/pci/zoran/videocodec 0xfa9a0ea5 videocodec_detach +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x1b9ba6a3 soc_camera_power_init +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x3d428f08 soc_camera_power_on +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x511fc47a soc_camera_xlate_by_fourcc +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0xabee105e soc_camera_host_unregister +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0xd01e13d0 soc_camera_power_off +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0xd0eb1fad soc_camera_apply_board_flags +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0xf797eef2 soc_camera_host_register +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0x25c52d97 soc_mbus_samples_per_pixel +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0x2863728e soc_mbus_image_size +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0x29f5a98b soc_mbus_get_fmtdesc +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0x5f3e3558 soc_mbus_bytes_per_line +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0xc8b28da5 soc_mbus_config_compatible +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0xdc5dafe2 soc_mbus_find_fmtdesc +EXPORT_SYMBOL drivers/media/radio/tea575x 0x04bacc3a snd_tea575x_set_freq +EXPORT_SYMBOL drivers/media/radio/tea575x 0x0c6bfa42 snd_tea575x_g_tuner +EXPORT_SYMBOL drivers/media/radio/tea575x 0x676981d6 snd_tea575x_hw_init +EXPORT_SYMBOL drivers/media/radio/tea575x 0x79947228 snd_tea575x_exit +EXPORT_SYMBOL drivers/media/radio/tea575x 0xa330ebf5 snd_tea575x_enum_freq_bands +EXPORT_SYMBOL drivers/media/radio/tea575x 0xf6972976 snd_tea575x_init +EXPORT_SYMBOL drivers/media/radio/tea575x 0xf7161f87 snd_tea575x_s_hw_freq_seek +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x04dca738 lirc_unregister_driver +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x15331508 lirc_dev_fop_open +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x2431d30f lirc_dev_fop_close +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x2a0ae467 lirc_dev_fop_ioctl +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x3bf70d7a lirc_get_pdata +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x8cbfe5ec lirc_dev_fop_poll +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0xacae620f lirc_dev_fop_write +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0xc76fd7c9 lirc_register_driver +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0xce54c37b lirc_dev_fop_read +EXPORT_SYMBOL drivers/media/rc/rc-core 0xcc7c485e ir_raw_handler_register +EXPORT_SYMBOL drivers/media/rc/rc-core 0xcecd3bc8 ir_raw_handler_unregister +EXPORT_SYMBOL drivers/media/tuners/fc0011 0x35bbbf78 fc0011_attach +EXPORT_SYMBOL drivers/media/tuners/fc0012 0x71c29a4d fc0012_attach +EXPORT_SYMBOL drivers/media/tuners/fc0013 0x42939c17 fc0013_attach +EXPORT_SYMBOL drivers/media/tuners/fc0013 0xb36c11e7 fc0013_rc_cal_add +EXPORT_SYMBOL drivers/media/tuners/fc0013 0xb79aa5ea fc0013_rc_cal_reset +EXPORT_SYMBOL drivers/media/tuners/max2165 0xb2fda33e max2165_attach +EXPORT_SYMBOL drivers/media/tuners/mc44s803 0xa8dd0912 mc44s803_attach +EXPORT_SYMBOL drivers/media/tuners/mt2060 0xc231ddde mt2060_attach +EXPORT_SYMBOL drivers/media/tuners/mt2131 0xfa796afb mt2131_attach +EXPORT_SYMBOL drivers/media/tuners/mt2266 0x05f144d6 mt2266_attach +EXPORT_SYMBOL drivers/media/tuners/mxl5005s 0x9a0c29e3 mxl5005s_attach +EXPORT_SYMBOL drivers/media/tuners/qt1010 0x7c5e47fc qt1010_attach +EXPORT_SYMBOL drivers/media/tuners/tda18218 0x4fef65bf tda18218_attach +EXPORT_SYMBOL drivers/media/tuners/tuner-types 0x0cb4b189 tuners +EXPORT_SYMBOL drivers/media/tuners/tuner-types 0xc2821775 tuner_count +EXPORT_SYMBOL drivers/media/tuners/tuner-xc2028 0xcd987393 xc2028_attach +EXPORT_SYMBOL drivers/media/tuners/xc4000 0x027af7f7 xc4000_attach +EXPORT_SYMBOL drivers/media/tuners/xc5000 0x60dbaf04 xc5000_attach +EXPORT_SYMBOL drivers/media/usb/cx231xx/cx231xx 0x2487a609 cx231xx_unregister_extension +EXPORT_SYMBOL drivers/media/usb/cx231xx/cx231xx 0x6fa661b9 cx231xx_register_extension +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x111c2e89 dvb_usbv2_generic_rw +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x2057214d dvb_usbv2_disconnect +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x2e8545d1 dvb_usbv2_generic_write_locked +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x3881f361 dvb_usbv2_suspend +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x49b984a2 dvb_usbv2_probe +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x74a5b5b0 dvb_usbv2_generic_rw_locked +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x9e8e41d5 dvb_usbv2_generic_write +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0xa71db9dc dvb_usbv2_resume +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0xcef9fe50 dvb_usbv2_reset_resume +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x33bfa825 dvb_usb_get_hexline +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x3447e99a dvb_usb_generic_rw +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x5f626e03 dvb_usb_device_init +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x96b2916e usb_cypress_load_firmware +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x9e4834a4 dvb_usb_device_exit +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0xc093303d dvb_usb_nec_rc_key_to_event +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0xed8d5d09 dvb_usb_generic_write +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-af9005-remote 0x13e247e0 rc_map_af9005_table +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-af9005-remote 0xc64df3eb 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 0x2009ee9d dibusb_dib3000mc_tuner_attach +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x38710c6a dibusb_i2c_algo +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x3dd053cb dibusb_rc_query +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x49d61f78 dibusb_power_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x4d46c6a5 dibusb_streaming_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x52d1bbfb dibusb2_0_power_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x61b48582 dibusb_read_eeprom_byte +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x7c9b74c1 dibusb_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x8361a288 dibusb_pid_filter +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xb47559e0 rc_map_dibusb_table +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xd1102c2e dibusb_dib3000mc_frontend_attach +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xd5705faa dibusb2_0_streaming_ctrl +EXPORT_SYMBOL drivers/media/usb/em28xx/em28xx 0x60a391c6 em28xx_register_extension +EXPORT_SYMBOL drivers/media/usb/em28xx/em28xx 0x7fa90fdf em28xx_unregister_extension +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x21e86ab6 go7007_read_interrupt +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x4164a136 go7007_boot_encoder +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x61afc1ae go7007_parse_video_stream +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x6945ea64 go7007_register_encoder +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0xbc1b0def go7007_update_board +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0xbc4e2101 go7007_read_addr +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0xbefe21da go7007_alloc +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0xc024132b go7007_snd_remove +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0xec8e1276 go7007_snd_init +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x0d0b55f7 gspca_coarse_grained_expo_autogain +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x23954cd3 gspca_disconnect +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x390d1416 gspca_dev_probe2 +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x428cd867 gspca_resume +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x49269c0b gspca_suspend +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x6ab13e92 gspca_dev_probe +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x9670af2c gspca_debug +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0xa12b873f gspca_frame_add +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0xb6010bff gspca_expo_autogain +EXPORT_SYMBOL drivers/media/usb/tm6000/tm6000 0x38de7006 tm6000_init_digital_mode +EXPORT_SYMBOL drivers/media/usb/tm6000/tm6000 0x5ccebcd4 tm6000_unregister_extension +EXPORT_SYMBOL drivers/media/usb/tm6000/tm6000 0xa492a4a6 tm6000_register_extension +EXPORT_SYMBOL drivers/media/usb/ttusb-dec/ttusbdecfe 0x97c05d20 ttusbdecfe_dvbt_attach +EXPORT_SYMBOL drivers/media/usb/ttusb-dec/ttusbdecfe 0xbc075cea ttusbdecfe_dvbs_attach +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-common 0xabe27502 v4l2_ctrl_query_fill +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-mem2mem 0x459e133f v4l2_m2m_get_curr_priv +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-mem2mem 0x6e3089b1 v4l2_m2m_get_vq +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-mem2mem 0xa9da6f23 v4l2_m2m_mmap +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-mem2mem 0xc764fc56 v4l2_m2m_job_finish +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0x045b8b13 videobuf_dvb_get_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0x0a5524c7 videobuf_dvb_alloc_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0xbd546793 videobuf_dvb_register_bus +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0xc74f19a1 videobuf_dvb_unregister_bus +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0xf7cea206 videobuf_dvb_find_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0xf8b2f1cb videobuf_dvb_dealloc_frontends +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-core 0x9184938d vb2_querybuf +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0x2a6c54cb vb2_dvb_unregister_bus +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0x383766a3 vb2_dvb_dealloc_frontends +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0x52d489bd vb2_dvb_find_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0x5fe51940 vb2_dvb_alloc_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0xf4ed2bc4 vb2_dvb_get_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0xfd4bd848 vb2_dvb_register_bus +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x0614dd5a v4l2_video_std_frame_period +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x0812fcf6 v4l2_subdev_init +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x0970fe33 __video_register_device +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x0b5509f0 v4l2_ctrl_subdev_subscribe_event +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x0b5e4b74 __v4l2_ctrl_s_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x0b66baed v4l2_ctrl_new_std +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x0c000727 v4l2_subdev_querymenu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x0e0c9ce1 video_usercopy +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x120566b0 __v4l2_ctrl_modify_range +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x123959a1 v4l2_type_names +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x152ae658 v4l2_ctrl_handler_free +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x16244fe5 v4l2_prio_check +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x1866d992 v4l2_clk_register +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x18f219e4 v4l2_ctrl_subscribe_event +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x1ab8a595 v4l2_ctrl_handler_init_class +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x1b5c0864 v4l2_ctrl_merge +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x1e792abf v4l2_clk_disable +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x1ec78f7e v4l2_queryctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x1fed7414 v4l2_clk_unregister +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x2342f1ae v4l2_prio_open +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x2b74ede4 v4l2_clk_put +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x2cbc1ead v4l2_ctrl_handler_setup +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x2eadfc60 v4l2_ctrl_grab +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x33fd559c v4l2_ctrl_poll +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x354aa92c v4l2_of_parse_endpoint +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x36847d11 v4l2_ctrl_get_int_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x3893a6a7 __v4l2_clk_register_fixed +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 0x3e788731 v4l2_ctrl_new_int_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x3fe1a3ea v4l2_subdev_try_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x421d06d7 v4l2_ctrl_new_std_menu_items +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x43090532 video_devdata +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x452e415e v4l2_ctrl_new_custom +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x45a44c24 v4l2_ctrl_fill +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x46aa9905 v4l2_ctrl_radio_filter +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x495426ee v4l2_ctrl_get_name +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x4b77c88d v4l2_ctrl_replace +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x4db840ad video_unregister_device +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x530a2e13 v4l2_subdev_g_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x580c7e36 v4l2_s_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x63e65553 v4l2_ctrl_notify +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x645dcdfa v4l2_async_register_subdev +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x64afae8e v4l2_async_notifier_unregister +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x6a2045c7 v4l2_ctrl_log_status +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x6b41e391 v4l2_ctrl_add_handler +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x6b4dc2ba v4l2_subdev_queryctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x73d1bd5a v4l2_of_alloc_parse_endpoint +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x76c65f27 v4l2_ctrl_cluster +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x7a3cd015 v4l2_ctrl_get_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x7da2cab5 v4l2_s_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x7ed46b54 video_device_alloc +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x8106095a v4l2_prio_max +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x841b0df0 v4l2_ctrl_subdev_log_status +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x84ae763b v4l2_clk_unregister_fixed +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x8679a130 v4l2_g_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x8949a679 v4l2_ctrl_activate +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x8d03a752 v4l2_of_put_link +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x9a484515 v4l2_subdev_g_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x9a4f6ea0 video_device_release +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xa053ea2a v4l2_clk_set_rate +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xa4abebd7 v4l2_subdev_s_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xa69028a3 v4l2_g_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xa99a692f v4l2_clk_enable +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb407e4f5 v4l2_ctrl_add_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb487eb22 v4l2_of_parse_link +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb77b0159 v4l2_prio_init +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xbc5671dc v4l_printk_ioctl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xc3135beb v4l2_querymenu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xc70965b4 v4l2_ctrl_handler_log_status +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xc9b15949 v4l2_ctrl_sub_ev_ops +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xcd3bbaee v4l2_query_ext_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xcda04a5b v4l2_prio_close +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xd42573db v4l2_of_free_endpoint +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xd60b72ab v4l2_ctrl_g_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xd6f219f1 v4l2_clk_get +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xdbdefe44 v4l2_ctrl_new_std_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xdcd7e5b3 v4l2_ctrl_auto_cluster +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xdcfd6b59 v4l2_async_notifier_register +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xdf1cafba __v4l2_ctrl_s_ctrl_int64 +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xdff7c8f1 video_device_release_empty +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe0c93391 v4l2_clk_get_rate +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe16a909d v4l2_ctrl_g_ctrl_int64 +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe2b92059 v4l2_video_std_construct +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe601c51f __v4l2_ctrl_s_ctrl_string +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe65c4a69 v4l2_try_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe9964e76 video_ioctl2 +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf0ef3483 v4l2_ctrl_find +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf3251e7b v4l2_norm_to_name +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf625557c v4l2_subdev_s_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xfdc62b00 v4l2_async_unregister_subdev +EXPORT_SYMBOL drivers/memstick/core/memstick 0x014d23fa memstick_alloc_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x2b65857d memstick_detect_change +EXPORT_SYMBOL drivers/memstick/core/memstick 0x2d9f4eef memstick_unregister_driver +EXPORT_SYMBOL drivers/memstick/core/memstick 0x307294d5 memstick_register_driver +EXPORT_SYMBOL drivers/memstick/core/memstick 0x382e47b1 memstick_next_req +EXPORT_SYMBOL drivers/memstick/core/memstick 0x5b5c17c8 memstick_init_req_sg +EXPORT_SYMBOL drivers/memstick/core/memstick 0x68eb6eb7 memstick_resume_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x82db8d0a memstick_suspend_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x8842440a memstick_remove_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x8c9b5da4 memstick_init_req +EXPORT_SYMBOL drivers/memstick/core/memstick 0x91ef6516 memstick_set_rw_addr +EXPORT_SYMBOL drivers/memstick/core/memstick 0x956bbf64 memstick_free_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x9a57cd20 memstick_add_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0xdbdc0dd9 memstick_new_req +EXPORT_SYMBOL drivers/memstick/host/r592 0x52f1b23b memstick_debug_get_tpc_name +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x0232e410 mpt_attach +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x04dc20de mpt_suspend +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x08b0b742 mpt_detach +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x0eb007cc mpt_clear_taskmgmt_in_progress_flag +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x34cc748a mpt_free_msg_frame +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x4526289b mpt_event_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x4d1fa97b mpt_put_msg_frame_hi_pri +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x502108d0 mpt_fwfault_debug +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x52621fa5 mpt_findImVolumes +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x6da4205a mpt_alloc_fw_memory +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x7ec27894 mptbase_sas_persist_operation +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x7f0dd855 mpt_send_handshake_request +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x8127f0b9 mpt_event_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x82347d9e mpt_config +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x89961449 mpt_raid_phys_disk_get_num_paths +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x979c7850 mpt_raid_phys_disk_pg0 +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x980d750c mpt_reset_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x9a71887b mpt_HardResetHandler +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x9e03947d mpt_get_msg_frame +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xacb1ba28 mpt_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xb9e5a913 mpt_GetIocState +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xbdbca6cf mpt_put_msg_frame +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xbf9ccc5b mpt_verify_adapter +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xbfc068a7 mpt_raid_phys_disk_pg1 +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xc0e69f82 mpt_device_driver_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xc47c22e8 mpt_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xc98b43b9 mpt_device_driver_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xd29bb390 mpt_free_fw_memory +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xd9a92a75 mpt_reset_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xdd805159 ioc_list +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xdf794f63 mpt_print_ioc_summary +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xee2a3af2 mpt_halt_firmware +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xefb838cf mpt_resume +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xf2e71db2 mpt_set_taskmgmt_in_progress_flag +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xf5f585ec mpt_Soft_Hard_ResetHandler +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x08b4ae05 mptscsih_get_scsi_lookup +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x0da9c764 mptscsih_info +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x1374ae15 mptscsih_suspend +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x193bb9e3 mptscsih_io_done +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x27749c68 mptscsih_is_phys_disk +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x2a6fb461 mptscsih_taskmgmt_complete +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x2c30ab02 mptscsih_slave_destroy +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x4fcdfc1b mptscsih_dev_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x679931f6 mptscsih_qcmd +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x7b4d7e6d mptscsih_abort +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x7c370c30 mptscsih_IssueTaskMgmt +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x919ea2ac mptscsih_bus_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x9c741fed mptscsih_show_info +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xa40f03dd mptscsih_raid_id_to_num +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xa4e2ccc9 mptscsih_scandv_complete +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xa52209d5 mptscsih_host_attrs +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xa830e4e8 mptscsih_change_queue_depth +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xa96eb2f0 mptscsih_resume +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xad09dcc0 mptscsih_ioc_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xb3527954 mptscsih_shutdown +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xd56bf3b8 mptscsih_slave_configure +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xd6f2a538 mptscsih_host_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xdacc1b72 mptscsih_flush_running_cmds +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xdd16ea4e mptscsih_remove +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xf303a7d7 mptscsih_taskmgmt_response_code +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xf336c4b8 mptscsih_bios_param +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xfddd9fd7 mptscsih_event_process +EXPORT_SYMBOL drivers/mfd/cros_ec 0x0c571b79 cros_ec_register +EXPORT_SYMBOL drivers/mfd/cros_ec 0x896c69f8 cros_ec_resume +EXPORT_SYMBOL drivers/mfd/cros_ec 0xcc702691 cros_ec_suspend +EXPORT_SYMBOL drivers/mfd/cros_ec 0xe3897a9d cros_ec_remove +EXPORT_SYMBOL drivers/mfd/dln2 0x307663de dln2_transfer +EXPORT_SYMBOL drivers/mfd/dln2 0x31529b68 dln2_unregister_event_cb +EXPORT_SYMBOL drivers/mfd/dln2 0x37a70de5 dln2_register_event_cb +EXPORT_SYMBOL drivers/mfd/htc-pasic3 0xac60ecde pasic3_write_register +EXPORT_SYMBOL drivers/mfd/htc-pasic3 0xc3e93d27 pasic3_read_register +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x0dedaa60 mc13xxx_irq_mask +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x39d005b3 mc13xxx_lock +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x3bc73193 mc13xxx_reg_write +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x4cc2af32 mc13xxx_reg_read +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x5bf92976 mc13xxx_get_flags +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x65a3249a mc13xxx_unlock +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xb32595a4 mc13xxx_irq_request +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xcaf0d6ac mc13xxx_irq_unmask +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xce33fcd6 mc13xxx_irq_free +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xdc2525cf mc13xxx_irq_status +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xeb0d73c0 mc13xxx_reg_rmw +EXPORT_SYMBOL drivers/mfd/tps6105x 0x608b26ac tps6105x_get +EXPORT_SYMBOL drivers/mfd/tps6105x 0x8e4ee681 tps6105x_mask_and_set +EXPORT_SYMBOL drivers/mfd/tps6105x 0xea9ef592 tps6105x_set +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-irq 0x71b29c8c wm8994_irq_exit +EXPORT_SYMBOL drivers/mfd/wm8994-irq 0x9d784663 wm8994_irq_init +EXPORT_SYMBOL drivers/mfd/wm8994-regmap 0x4bcd19c6 wm8994_base_regmap_config +EXPORT_SYMBOL drivers/mfd/wm8994-regmap 0x72deae33 wm1811_regmap_config +EXPORT_SYMBOL drivers/mfd/wm8994-regmap 0xdf861787 wm8994_regmap_config +EXPORT_SYMBOL drivers/mfd/wm8994-regmap 0xedbcac1e wm8958_regmap_config +EXPORT_SYMBOL drivers/misc/ad525x_dpot 0x1b841083 ad_dpot_probe +EXPORT_SYMBOL drivers/misc/ad525x_dpot 0xb3a34ad1 ad_dpot_remove +EXPORT_SYMBOL drivers/misc/altera-stapl/altera-stapl 0xd19d0b4d altera_init +EXPORT_SYMBOL drivers/misc/c2port/core 0x1478f8fe c2port_device_unregister +EXPORT_SYMBOL drivers/misc/c2port/core 0xd546dfab c2port_device_register +EXPORT_SYMBOL drivers/misc/ioc4 0x7afe7630 ioc4_unregister_submodule +EXPORT_SYMBOL drivers/misc/ioc4 0xa61702ba ioc4_register_submodule +EXPORT_SYMBOL drivers/misc/tifm_core 0x03282a4c tifm_add_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0x0621debe tifm_register_driver +EXPORT_SYMBOL drivers/misc/tifm_core 0x39f86aa1 tifm_queue_work +EXPORT_SYMBOL drivers/misc/tifm_core 0x5bc2cc35 tifm_free_device +EXPORT_SYMBOL drivers/misc/tifm_core 0x909cc1eb tifm_remove_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0xacb5d8a8 tifm_unmap_sg +EXPORT_SYMBOL drivers/misc/tifm_core 0xc0e54bc1 tifm_eject +EXPORT_SYMBOL drivers/misc/tifm_core 0xcb2c47c6 tifm_alloc_device +EXPORT_SYMBOL drivers/misc/tifm_core 0xdc51e607 tifm_unregister_driver +EXPORT_SYMBOL drivers/misc/tifm_core 0xe0f936dc tifm_has_ms_pif +EXPORT_SYMBOL drivers/misc/tifm_core 0xe590ca2a tifm_free_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0xf325eb1b tifm_alloc_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0xf576635d tifm_map_sg +EXPORT_SYMBOL drivers/mmc/card/mmc_block 0x77fabc84 mmc_cleanup_queue +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x2fdfe371 cfi_read_pri +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x3956b98b cfi_send_gen_cmd +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x44153d2c cfi_varsize_frob +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x8424ea3d cfi_build_cmd_addr +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0xa0b6689b cfi_build_cmd +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0xc3ff6386 cfi_merge_status +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0xe08c0ab1 cfi_fixup +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0xff9fa623 cfi_udelay +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0x98c99b51 map_destroy +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0x9fc90885 register_mtd_chip_driver +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0xa565f1f9 do_map_probe +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0xadf40951 unregister_mtd_chip_driver +EXPORT_SYMBOL drivers/mtd/chips/gen_probe 0x05aa8765 mtd_do_chip_probe +EXPORT_SYMBOL drivers/mtd/lpddr/lpddr_cmds 0xd535af82 lpddr_cmdset +EXPORT_SYMBOL drivers/mtd/maps/map_funcs 0x1d199f6f simple_map_init +EXPORT_SYMBOL drivers/mtd/mtd 0x1070bcbd mtd_concat_create +EXPORT_SYMBOL drivers/mtd/mtd 0xac7341b0 mtd_concat_destroy +EXPORT_SYMBOL drivers/mtd/nand/denali 0xcce6ae42 denali_init +EXPORT_SYMBOL drivers/mtd/nand/denali 0xebd3eb93 denali_remove +EXPORT_SYMBOL drivers/mtd/nand/nand 0x11954654 nand_scan_tail +EXPORT_SYMBOL drivers/mtd/nand/nand 0x4632788e nand_unlock +EXPORT_SYMBOL drivers/mtd/nand/nand 0x46440e63 nand_scan_ident +EXPORT_SYMBOL drivers/mtd/nand/nand 0x55a6f733 nand_scan +EXPORT_SYMBOL drivers/mtd/nand/nand 0x585e9a10 nand_lock +EXPORT_SYMBOL drivers/mtd/nand/nand 0x5aa917ad nand_scan_bbt +EXPORT_SYMBOL drivers/mtd/nand/nand 0xef859391 onfi_async_timing_mode_to_sdr_timings +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0x263f2d2e nand_bch_correct_data +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0x70097aa0 nand_bch_free +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0xf09dd709 nand_bch_init +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0xf7638bbe nand_bch_calculate_ecc +EXPORT_SYMBOL drivers/mtd/nand/nand_ecc 0x3132ee65 __nand_calculate_ecc +EXPORT_SYMBOL drivers/mtd/nand/nand_ecc 0x72a82a7f nand_correct_data +EXPORT_SYMBOL drivers/mtd/nand/nand_ecc 0xb4b94377 __nand_correct_data +EXPORT_SYMBOL drivers/mtd/nand/nand_ecc 0xfca3b99a nand_calculate_ecc +EXPORT_SYMBOL drivers/mtd/nand/nand_ids 0x8cfcf75c nand_flash_ids +EXPORT_SYMBOL drivers/mtd/nand/nand_ids 0xa336feb7 nand_manuf_ids +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0x00086405 flexonenand_region +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0x2debe055 onenand_addr +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0x7b961e9c onenand_default_bbt +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0xffeae6b2 onenand_scan_bbt +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x01b6443f arc_proto_map +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x10cc1894 arc_raw_proto +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x2af4a475 arc_proto_default +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x4fc8353b arcnet_unregister_proto +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x5978bb52 alloc_arcdev +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x6534792a arcnet_debug +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xa654fd27 arcnet_open +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xb8c7c3da arc_bcast_proto +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xbf43e447 arcnet_send_packet +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xecb730b0 arcnet_interrupt +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xf116a655 arcnet_timeout +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xf49fa3fe arcnet_close +EXPORT_SYMBOL drivers/net/arcnet/com20020 0x2739e138 com20020_check +EXPORT_SYMBOL drivers/net/arcnet/com20020 0x835d5714 com20020_netdev_ops +EXPORT_SYMBOL drivers/net/arcnet/com20020 0x8520f75d com20020_found +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x0635e3c1 ei_start_xmit +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x0f4af85c ei_set_multicast_list +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x119721ac ei_interrupt +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x32886961 ei_poll +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x53eed798 ei_netdev_ops +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x61d85f54 NS8390_init +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x7d59b93c ei_tx_timeout +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xa9578846 ei_close +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xaad52cc4 __alloc_ei_netdev +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xb87a95d0 ei_get_stats +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xff40d290 ei_open +EXPORT_SYMBOL drivers/net/ethernet/broadcom/bnx2x/bnx2x 0x825f1230 bnx2x_schedule_sp_rtnl +EXPORT_SYMBOL drivers/net/ethernet/broadcom/cnic 0x636af174 cnic_unregister_driver +EXPORT_SYMBOL drivers/net/ethernet/broadcom/cnic 0x820427ba cnic_register_driver +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x06bc5331 t3_l2e_free +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x12ee49e3 t3_l2t_send_event +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x13821c9e cxgb3_insert_tid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x46277a60 t3_l2t_get +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x66c5f0f7 cxgb3_queue_tid_release +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x6989caaa cxgb3_unregister_client +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x6d9bb400 cxgb3_register_client +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x7565f3ae dev2t3cdev +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x903dfd99 cxgb3_free_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x98f62b2a t3_l2t_send_slow +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xabf3e95a cxgb3_ofld_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xb9d055b8 cxgb3_remove_tid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xbc312d5e t3_register_cpl_handler +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xe1996ea9 cxgb3_alloc_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xe36c3dc3 cxgb3_free_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xeb92969c cxgb3_alloc_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x056b6a85 cxgb4_bar2_sge_qregs +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x06e0c49a cxgb4_l2t_get +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x0c6f1b4a cxgb4_clip_get +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x0d083be9 cxgb4_flush_eq_cache +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x0d5c2ecf cxgb4_port_chan +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x1c54947e cxgb4_get_tcp_stats +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x2973de6e cxgb4_clip_release +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x2d3f64b2 t4_cleanup_clip_tbl +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x2fe31d98 cxgb4_register_uld +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x40cda595 cxgb4_l2t_release +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x454afb53 cxgb4_read_sge_timestamp +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x50ee5c07 cxgb4_best_aligned_mtu +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x5647681e cxgb4_dbfifo_count +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x5e82677d cxgb4_sync_txq_pidx +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x69dc3396 cxgb4_update_root_dev_clip +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x6cec7bef cxgb4_alloc_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x7044367a cxgb4_dcb_enabled +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x84ce48e1 cxgb4_alloc_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x8f71778f cxgb4_port_idx +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xa6ae4abe cxgb4_remove_server_filter +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xaf4b072c cxgb4_l2t_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xbc0f0641 cxgb4_remove_tid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xc132e073 cxgb4_read_tpte +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xc637d25c cxgb4_alloc_sftid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xcde6a521 cxgb4_pktgl_to_skb +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xd00e5a36 cxgb4_unregister_uld +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xd023d375 cxgb4_iscsi_init +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xd580c9b5 cxgb4_create_server_filter +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xd69a0294 cxgb4_best_mtu +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xd741ecd5 cxgb4_select_ntuple +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xdd3cd6df cxgb4_create_server +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xde515cb1 cxgb4_free_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xde5f9d9f cxgb4_remove_server +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xde8c7d21 cxgb4_create_server6 +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xe43689e9 cxgb4_free_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xeda63b45 cxgb4_port_viid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xf9945976 cxgb4_ofld_send +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0x0e712340 vnic_dev_get_res +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0x3c66f358 vnic_dev_get_pdev +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0x4f650da7 vnic_dev_get_res_count +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0x8f985a52 enic_api_devcmd_proxy_by_index +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0x9196d804 vnic_dev_unregister +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0xe876fd51 vnic_dev_register +EXPORT_SYMBOL drivers/net/ethernet/emulex/benet/be2net 0x9d6bf2a2 be_roce_unregister_driver +EXPORT_SYMBOL drivers/net/ethernet/emulex/benet/be2net 0xa44e18a0 be_roce_register_driver +EXPORT_SYMBOL drivers/net/ethernet/emulex/benet/be2net 0xbab62e22 be_roce_mcc_cmd +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x009b8a3c mlx4_ALLOCATE_VPP_set +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0893e0be mlx4_SET_PORT_fcs_check +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x092889b2 mlx4_SET_PORT_VXLAN +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0f39924f mlx4_gen_pkey_eqe +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x10859d34 mlx4_SET_MCAST_FLTR +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x14a97453 mlx4_SET_PORT_general +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x16fd5e45 mlx4_SET_PORT_SCHEDULER +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x21c76bad mlx4_SET_VPORT_QOS_get +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x29f1fda4 mlx4_is_slave_active +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x363eabc0 mlx4_gen_slaves_port_mgt_ev +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4b27a8a6 mlx4_sync_pkey_table +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x53a2d248 mlx4_get_eqs_per_port +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x688e4a8b mlx4_assign_eq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x69262d7d mlx4_get_slave_node_guid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6a4e4a2b mlx4_get_roce_gid_from_slave +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6b5bafc3 mlx4_get_slave_from_roce_gid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x810f27bb mlx4_SET_VPORT_QOS_set +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x854bae1d mlx4_gen_port_state_change_eqe +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8c82569b mlx4_release_eq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9afefb70 mlx4_is_eq_shared +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa1e56d13 mlx4_tunnel_steer_add +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa46cbd14 mlx4_get_cpu_rmap +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xacb31668 mlx4_gen_guid_change_eqe +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xaec295ca mlx4_get_slave_pkey_gid_tbl_len +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb75ab35d mlx4_SET_PORT_BEACON +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xba5956f9 mlx4_test_interrupts +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbd5b528e mlx4_get_module_info +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc395b2f3 mlx4_get_parav_qkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc5fa4229 mlx4_is_eq_vector_valid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd95ca483 mlx4_SET_PORT_PRIO2TC +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe7a01172 set_and_calc_slave_port_state +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe823396e mlx4_eq_get_irq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe9f39176 mlx4_SET_PORT_qpn_calc +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xeeda6950 mlx4_put_slave_node_guid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xef1e24a5 mlx4_get_slave_port_state +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf71ec1fd mlx4_ALLOCATE_VPP_get +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x0857aabd mlx5_get_flow_table_id +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x0eb7287e mlx5_del_flow_table_entry +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x11652af0 mlx5_unmap_free_uar +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x1297a38f mlx5_core_query_vendor_id +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x18f0c230 mlx5_register_interface +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x1b206e9a mlx5_query_nic_vport_mac_address +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x24b1abf5 mlx5_core_query_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x28278417 mlx5_core_query_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x2c04f967 mlx5_core_attach_mcg +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x2cb0c41e mlx5_core_create_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x330d90e8 mlx5_cmd_free_uar +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x48731073 mlx5_cmd_init +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x50a061cd mlx5_query_vport_state +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x52826e89 mlx5_cmd_exec_cb +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x534c5647 mlx5_core_destroy_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x651f9b36 mlx5_unregister_interface +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x6604192b mlx5_core_arm_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x68b9041a mlx5_core_dealloc_pd +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x70cb6aca mlx5_get_protocol_dev +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x72c2585a mlx5_core_create_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x766e5fd5 mlx5_core_destroy_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x7ccb3610 mlx5_cmd_cleanup +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x846e42d2 mlx5_core_destroy_psv +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x86694d0e mlx5_core_dump_fill_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa8592875 mlx5_cmd_exec +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xae95ade2 mlx5_core_detach_mcg +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xb10c8cd1 mlx5_vector2eqn +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xc8a657bd mlx5_alloc_map_uar +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xcc7bc5a8 mlx5_core_alloc_pd +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xcce301fb mlx5_cmd_alloc_uar +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xcea35f6a mlx5_core_destroy_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xd0d99c5d mlx5_core_get_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe13c94eb mlx5_core_modify_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe1a8d60b mlx5_create_flow_table +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe1ed0a63 mlx5_debugfs_root +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe6af33e4 mlx5_destroy_flow_table +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe91754b3 mlx5_core_query_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf227a62d mlx5_core_create_psv +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf5561b66 mlx5_cmd_comp_handler +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xfc728a49 mlx5_add_flow_table_entry +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xfd721e95 mlx5_core_create_cq +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x04df9f35 hdlcdrv_receiver +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x2436ff07 hdlcdrv_arbitrate +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0xabf0aa19 hdlcdrv_register +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0xdba7e200 hdlcdrv_transmitter +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0xf7e5d928 hdlcdrv_unregister +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x4f4fa6d1 sirdev_set_dongle +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x6ef5111d sirdev_raw_write +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xa50bc4f7 sirdev_receive +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xa78e7e13 sirdev_get_instance +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xba20d972 sirdev_set_dtr_rts +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xc30d9cef sirdev_raw_read +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xc77f48d1 sirdev_write_complete +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xd8714468 sirdev_put_instance +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xe69cb8a9 irda_register_dongle +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xf185f9f0 irda_unregister_dongle +EXPORT_SYMBOL drivers/net/mdio 0x22bce513 mdio_mii_ioctl +EXPORT_SYMBOL drivers/net/mdio 0x43e4defc mdio45_nway_restart +EXPORT_SYMBOL drivers/net/mdio 0x7577f992 mdio_set_flag +EXPORT_SYMBOL drivers/net/mdio 0xa1a29548 mdio45_probe +EXPORT_SYMBOL drivers/net/mdio 0xc6b1163f mdio45_links_ok +EXPORT_SYMBOL drivers/net/mdio 0xddc98749 mdio45_ethtool_gset_npage +EXPORT_SYMBOL drivers/net/mii 0x0ada56e0 generic_mii_ioctl +EXPORT_SYMBOL drivers/net/mii 0x182a5c54 mii_ethtool_gset +EXPORT_SYMBOL drivers/net/mii 0x2b0d9513 mii_check_link +EXPORT_SYMBOL drivers/net/mii 0x40ab8b4b mii_check_gmii_support +EXPORT_SYMBOL drivers/net/mii 0xb35d6789 mii_check_media +EXPORT_SYMBOL drivers/net/mii 0xbb1037fd mii_ethtool_sset +EXPORT_SYMBOL drivers/net/mii 0xd6d4c274 mii_nway_restart +EXPORT_SYMBOL drivers/net/mii 0xe3cfef0b mii_link_ok +EXPORT_SYMBOL drivers/net/phy/mdio-bitbang 0x7ef21906 free_mdio_bitbang +EXPORT_SYMBOL drivers/net/phy/mdio-bitbang 0xb110f325 alloc_mdio_bitbang +EXPORT_SYMBOL drivers/net/phy/vitesse 0xc33c0a3f vsc824x_add_skew +EXPORT_SYMBOL drivers/net/ppp/pppox 0x42ddda28 register_pppox_proto +EXPORT_SYMBOL drivers/net/ppp/pppox 0x63640dbd pppox_ioctl +EXPORT_SYMBOL drivers/net/ppp/pppox 0xb406b243 pppox_unbind_sock +EXPORT_SYMBOL drivers/net/ppp/pppox 0xe0ff7a18 unregister_pppox_proto +EXPORT_SYMBOL drivers/net/sungem_phy 0xfc870b6e sungem_phy_probe +EXPORT_SYMBOL drivers/net/team/team 0x1387e1bd team_options_register +EXPORT_SYMBOL drivers/net/team/team 0x22b44833 team_mode_register +EXPORT_SYMBOL drivers/net/team/team 0x44ba152d team_options_change_check +EXPORT_SYMBOL drivers/net/team/team 0x537f9914 team_modeop_port_enter +EXPORT_SYMBOL drivers/net/team/team 0xab39c454 team_modeop_port_change_dev_addr +EXPORT_SYMBOL drivers/net/team/team 0xb1f6a656 team_options_unregister +EXPORT_SYMBOL drivers/net/team/team 0xbdbe17ef team_mode_unregister +EXPORT_SYMBOL drivers/net/team/team 0xfc25931e team_option_inst_set_change +EXPORT_SYMBOL drivers/net/usb/usbnet 0x78ee62b6 usbnet_link_change +EXPORT_SYMBOL drivers/net/usb/usbnet 0xa282f873 usbnet_manage_power +EXPORT_SYMBOL drivers/net/usb/usbnet 0xcc3a51af usbnet_device_suggests_idle +EXPORT_SYMBOL drivers/net/wan/hdlc 0x0cc1bcf4 hdlc_open +EXPORT_SYMBOL drivers/net/wan/hdlc 0x43e50422 hdlc_change_mtu +EXPORT_SYMBOL drivers/net/wan/hdlc 0x51e32740 attach_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0x7c8c6aff register_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0x8d11d1d0 detach_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0x8e63cff4 alloc_hdlcdev +EXPORT_SYMBOL drivers/net/wan/hdlc 0x95618af9 hdlc_ioctl +EXPORT_SYMBOL drivers/net/wan/hdlc 0xc240190f unregister_hdlc_device +EXPORT_SYMBOL drivers/net/wan/hdlc 0xd207f936 hdlc_close +EXPORT_SYMBOL drivers/net/wan/hdlc 0xd89ad983 unregister_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0xdd073c30 hdlc_start_xmit +EXPORT_SYMBOL drivers/net/wimax/i2400m/i2400m 0x187be7f3 i2400m_unknown_barker +EXPORT_SYMBOL drivers/net/wireless/airo 0x53c27a5d stop_airo_card +EXPORT_SYMBOL drivers/net/wireless/airo 0x8a49bd9b reset_airo_card +EXPORT_SYMBOL drivers/net/wireless/airo 0xb151ed0b init_airo_card +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x00fc9a49 ath_key_delete +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x10a6c21e ath_hw_keyreset +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x23a341b4 ath_printk +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x319c6026 ath_is_49ghz_allowed +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x331216f8 dfs_pattern_detector_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x3920bd82 ath_is_mybeacon +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x3ccb9136 ath_key_config +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x9d15978a ath_hw_cycle_counters_update +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xaafdb617 ath_is_world_regd +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xafea029f ath_reg_notifier_apply +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xc7404175 ath_hw_get_listen_time +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xcb287c5d ath_hw_setbssidmask +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xde129d7f ath_regd_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xf48e2fd7 ath_rxbuf_alloc +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xfb4de67a ath_regd_get_band_ctl +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x118e0ad4 ath10k_core_destroy +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x17e404e8 ath10k_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x27c4d23c ath10k_core_register +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x2cfc7349 ath10k_err +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x3cc1afa3 ath10k_core_stop +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x53cef367 ath10k_debug_get_new_fw_crash_data +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x94342099 ath10k_print_driver_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xaf8d0735 ath10k_core_create +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xcc0c3645 ath10k_core_unregister +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xd0e9e45e ath10k_warn +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xddd11a82 ath10k_core_start +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x05aae5a9 ath6kl_stop_txrx +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x1a6539f9 ath6kl_core_rx_complete +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x2c878bbc ath6kl_core_create +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x2c9370fe ath6kl_core_tx_complete +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x5b738484 ath6kl_core_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x7b317424 ath6kl_printk +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x80a09613 ath6kl_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x866cbd76 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 0xa6f66cc1 ath6kl_warn +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xcb014460 ath6kl_err +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xcdbefed1 ath6kl_cfg80211_suspend +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xe035a8de ath6kl_cfg80211_resume +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xec9099d9 ath6kl_core_destroy +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xfa5d69d0 ath6kl_core_cleanup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x0f782ce2 ath9k_cmn_spectral_scan_trigger +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x2c09bad4 ath9k_cmn_get_channel +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x2d15177d ath9k_cmn_debug_stat_rx +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x2da634e6 ath9k_cmn_rx_skb_postprocess +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x30649761 ath_cmn_process_fft +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x5876ebaa ath9k_cmn_update_txpow +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x60f7cc84 ath9k_cmn_get_hw_crypto_keytype +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x63e02ec3 ath9k_cmn_process_rate +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x644395cf ath9k_cmn_debug_phy_err +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x684045c2 ath9k_cmn_debug_base_eeprom +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x6baf0fa3 ath9k_cmn_spectral_init_debug +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x8848da6e ath9k_cmn_beacon_config_adhoc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x8ecb59d5 ath9k_cmn_debug_recv +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x931179a2 ath9k_cmn_beacon_config_sta +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x93975d7c ath9k_cmn_reload_chainmask +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x94d78672 ath9k_cmn_init_channels_rates +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x9548e993 ath9k_cmn_spectral_scan_config +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xa244ebb1 ath9k_cmn_setup_ht_cap +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xa3a5df19 ath9k_cmn_beacon_config_ap +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xb78941e3 ath9k_cmn_spectral_deinit_debug +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xcbc88a13 ath9k_cmn_process_rssi +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xd2981357 ath9k_cmn_count_streams +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xe72e080e ath9k_cmn_rx_accept +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xe808f37d ath9k_cmn_init_crypto +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xfbc4b54f ath9k_cmn_debug_modal_eeprom +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x002de398 ath_gen_timer_alloc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x02f4f659 ath9k_hw_cfg_output +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0318d522 ath9k_hw_beaconq_setup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x045dc58c ath9k_hw_setantenna +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x09c3062e ath9k_hw_btcoex_set_concur_txprio +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x110f4476 ar9003_mci_send_wlan_channels +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x121db94a ar9003_mci_cleanup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x129fa783 ath9k_hw_set_sta_beacon_timers +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1612b41f ath_gen_timer_isr +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x17ea2090 ath9k_hw_numtxpending +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1939c9ec ath9k_hw_setmcastfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1d4948b8 ath9k_hw_setuprxdesc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1e11442c ath9k_hw_get_txq_props +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1f49984a ath9k_hw_releasetxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x230ed49b ath9k_hw_stopdmarecv +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x23996b56 ar9003_hw_bb_watchdog_dbg_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2c9030d8 ath9k_hw_set_tsfadjust +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2de8b724 ath9k_hw_set_rx_bufsize +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x352f315c ath9k_hw_gettsf64 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x361d550b ath9k_hw_abortpcurecv +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x397b7f12 ath9k_hw_init_btcoex_hw +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x3c9d2883 ar9003_mci_setup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x3e6227db ar9003_paprd_populate_single_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x3f56d86c ath9k_hw_wow_enable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x40b81ac3 ath9k_hw_bstuck_nfcal +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4330de3f ar9003_hw_disable_phy_restart +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x45617b62 ath9k_hw_set_gpio +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x465f2508 ath9k_hw_setup_statusring +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x469c41e1 ath9k_hw_intrpend +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x47c077e0 ath9k_hw_abort_tx_dma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4e78d917 ath9k_hw_btcoex_enable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x514c9ed2 ath9k_hw_beaconinit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x52aaeaf6 ar9003_mci_set_bt_version +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x530bcb2e ath9k_hw_check_nav +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x5610b61b ath9k_hw_set_txpowerlimit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x587a63e7 ath9k_hw_stop_dma_queue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x5b189ab1 ar9003_paprd_enable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x5f34539f ath9k_hw_gpio_get +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x60c14e40 ath9k_hw_wait +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6280c874 ath9k_hw_addrxbuf_edma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x63d7bf06 ath9k_hw_resettxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x65068257 ar9003_mci_send_message +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x65a45d1a ath9k_hw_wow_apply_pattern +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x66b33158 ath9k_hw_setrxabort +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x68de7b3e ath9k_hw_process_rxdesc_edma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6edb3813 ath9k_hw_wow_wakeup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7068a5f7 ath9k_hw_gen_timer_stop +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x71286862 ath9k_hw_write_associd +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x726cd2d1 ath9k_hw_btcoex_init_mci +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x772120cf ath9k_hw_btcoex_set_weight +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x796b8519 ar9003_paprd_create_curve +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7a8780aa ath9k_hw_gettsf32 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7ad50431 ath9k_hw_rxprocdesc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7c04919b ath9k_hw_disable_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7f3b7d64 ar9003_is_paprd_enabled +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x81894052 ath9k_hw_kill_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x82d0dd74 ath9k_hw_getrxfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x830f6f63 ar9003_paprd_setup_gain_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x86adf154 ath9k_hw_btcoex_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x86c75fde ath9k_hw_set_txq_props +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x873b413f ar9003_mci_get_interrupt +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x93ac0449 ath9k_hw_gettxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9564caee ath9k_hw_reset_calvalid +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x98cce816 ar9003_mci_state +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9c588c6e ar9003_mci_get_next_gpm_offset +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9d5f90b6 ath9k_hw_ani_monitor +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9ea3d318 ath9k_hw_request_gpio +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa51d2348 ar9003_hw_bb_watchdog_check +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa528e137 ath9k_hw_enable_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa5b7885d ath9k_hw_computetxtime +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa61db651 ath_gen_timer_free +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa77c0406 ath9k_hw_disable_mib_counters +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xaa3ad7ec ath9k_hw_getchan_noise +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xad67df2e ath9k_hw_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb43b9b99 ath9k_hw_setopmode +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xbb31f351 ath9k_hw_setrxfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xbffd5abb ath9k_hw_startpcureceive +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc34fd34c ath9k_hw_putrxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc68fec41 ath9k_hw_set_tx_filter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc8a8d586 ath9k_hw_updatetxtriglevel +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc9271fb3 ath9k_hw_gen_timer_start +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc9870704 ath9k_hw_reset +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xcc53671e ath9k_hw_settsf64 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd1f6b90d ath9k_hw_puttxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd459cff6 ath9k_hw_getnf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd5d35820 ar9003_get_pll_sqsum_dvc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd696de51 ath9k_hw_btcoex_init_3wire +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd6ce9fe5 ath9k_hw_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd77ff4ff ath9k_hw_phy_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd8030a87 ath9k_hw_btcoex_bt_stomp +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xdb70aa19 ar9003_paprd_is_done +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xdb97ba15 ath9k_hw_btcoex_init_scheme +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xdd378e50 ath9k_hw_setuptxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe5feb322 ath9k_hw_cfg_gpio_input +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe869bea6 ath9k_hw_txstart +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xea164ce6 ath9k_hw_name +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf41ef512 ath9k_hw_check_alive +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf5148548 ath9k_hw_init_global_settings +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf67c95d8 ar9003_paprd_init_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf6f1b918 ath9k_hw_deinit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf8149616 ath9k_hw_reset_tsf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf860ab48 ath9k_hw_btcoex_init_2wire +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xfc2453c3 ath9k_hw_set_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xfed4be76 ath9k_hw_setpower +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xffd02408 ath9k_hw_get_tsf_offset +EXPORT_SYMBOL drivers/net/wireless/atmel 0x4ca68218 atmel_open +EXPORT_SYMBOL drivers/net/wireless/atmel 0x8a200bd9 stop_atmel_card +EXPORT_SYMBOL drivers/net/wireless/atmel 0xffd7dc8f init_atmel_card +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x154835e4 brcmu_pktq_mdeq +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x20a7482e brcmu_pktq_init +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x3f2988a1 brcmu_dotrev_str +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x472a74a8 brcmu_pkt_buf_free_skb +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x49a218fc brcmu_pkt_buf_get_skb +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x7ac94d25 brcmu_pktq_peek_tail +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x818a5b95 brcmu_pktq_penq +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x9f4b5dcf brcmu_d11_attach +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xb4f1be21 brcmu_pktq_flush +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xbb151ead brcmu_pktq_pdeq +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xd261b8a6 brcmu_boardrev_str +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xd3729aa5 brcmu_pktq_pdeq_tail +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xe79c1f23 brcmu_pktq_mlen +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xe953b893 brcmu_pktq_pdeq_match +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xf361d650 brcmu_pktq_pflush +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xf60d815b brcmu_pktq_penq_head +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x0ad69602 hostap_set_multicast_list_queue +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x1b6d6a1b hostap_init_proc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x3574dd8a hostap_set_roaming +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x4b7026f1 hostap_remove_proc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x4c50d64d hostap_init_data +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x5ba854a0 hostap_info_process +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x60721887 hostap_set_hostapd_sta +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x6eb9e07d hostap_master_start_xmit +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x7119f848 hostap_80211_ops +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x8ad10439 hostap_handle_sta_tx_exc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x8e4c542b hostap_remove_interface +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x94fc0f70 hostap_set_string +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x95ebb0e3 hostap_init_ap_proc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xa12ad27f hostap_dump_tx_header +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xb03685a5 hostap_set_antsel +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xb2a945e0 hostap_dump_rx_header +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xb4b77c8b hostap_80211_get_hdrlen +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xb4f19aa9 hostap_set_word +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xb9d6bced hostap_80211_rx +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xbb5a7a52 hostap_get_porttype +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xc119a077 hostap_set_encryption +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xc39b29af hostap_set_hostapd +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xc5ff1553 hostap_check_sta_fw_version +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xc6e87b8c prism2_update_comms_qual +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xceeefcb9 hostap_info_init +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xd5ffbeba hostap_free_data +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xdc702b12 hostap_setup_dev +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xeb4ef2a7 hostap_add_interface +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xfe6267e5 hostap_set_auth_algs +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x11cb4178 libipw_is_valid_channel +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x17014977 alloc_libipw +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x1cb6bfa3 libipw_change_mtu +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x23264896 libipw_channel_to_freq +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x280fc938 libipw_set_geo +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x3e518691 libipw_txb_free +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x48c68d90 libipw_wx_get_scan +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x4c73b09f libipw_wx_get_encode +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x57b6eb00 libipw_channel_to_index +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x6914df70 libipw_get_channel +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x6cc0312b libipw_wx_get_encodeext +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x78469cf4 libipw_rx +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x80d8579d libipw_freq_to_channel +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x8f36e0b9 libipw_get_channel_flags +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x92357529 libipw_rx_mgt +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xa0490b1b libipw_wx_set_encodeext +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xb9aca3a7 libipw_xmit +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xc4985b30 libipw_networks_age +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xdba77ca7 libipw_wx_set_encode +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xde9e9f85 free_libipw +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xe1460d74 libipw_get_geo +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x023a6c2b il_dbgfs_register +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x036a0da4 il_tx_queue_reset +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x040c1a2f il_check_rxon_cmd +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x04778589 il_cmd_queue_unmap +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x05e59bdf il_scan_cancel +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x073ad40f il_set_flags_for_band +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x1543fdf1 il_force_reset +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x157573b3 il_update_stats +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x1698f0e6 il_alloc_txq_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x1a682506 il_setup_watchdog +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x1e1af05d il_hdl_error +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x1e9d8e7c il_scan_cancel_timeout +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x1f6b759a il_is_ht40_tx_allowed +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x23ede185 il_eeprom_free +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x24f060e5 il_hdl_pm_debug_stats +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x27ee1c19 il_hdl_spectrum_measurement +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x2b09941f il_irq_handle_error +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x2b0c6ea6 il_mac_hw_scan +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x2fbad9e1 il_clear_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x320899f5 il_wr_prph +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x332ec3f1 il_init_geos +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x33e5a46a il_set_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x343defa0 il_send_lq_cmd +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x34986b8b il_mac_remove_interface +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x38c53fcd il_apm_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x3c384c7e il_get_single_channel_number +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x3dc0fa7d _il_poll_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x44427c31 il_hdl_pm_sleep +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x46809d10 il_send_rxon_timing +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x48554223 il_power_update_mode +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4983e5ef il_setup_rx_scan_handlers +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4aa39103 il_get_cmd_string +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4c3ac897 il_queue_space +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4cd2bf4c il_restore_stations +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4d35c7e2 il_fill_probe_req +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4efdb8bd il_connection_init_rx_config +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x53face61 il_tx_queue_free +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x564c6740 il_debug_level +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x585810c8 il_usecs_to_beacons +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x5a1b8d5b il_send_stats_request +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x5af1d06c il_cancel_scan_deferred_work +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x5c544c43 il_pm_ops +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x6563d858 il_full_rxon_required +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x6c1085ea il_power_initialize +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x6ef3c950 il_set_tx_power +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x7629a47e il_leds_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x78272b19 il_rx_queue_space +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x792c2d65 il_init_scan_params +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x79301c23 il_eeprom_query16 +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x7d0eebcf il_apm_stop +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x7eb214ce il_mac_bss_info_changed +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x84d48834 il_clear_ucode_stations +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x89c794e2 il_write_targ_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x8e4fe883 il_eeprom_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x9044db9c il_get_free_ucode_key_idx +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x90d15735 il_mac_add_interface +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x962a1e4e il_tx_cmd_complete +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x9904cefd il_tx_queue_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x9930d3b9 il_get_channel_info +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x9d3de5d7 _il_apm_stop +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x9d7404c6 il_get_passive_dwell_time +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x9e9d920f il_free_txq_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x9eecda69 il_rd_prph +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa39c6f15 il_send_bt_config +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa7ceac4a il_set_rate +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa8871e58 il_tx_queue_unmap +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa8fdd967 il_get_lowest_plcp +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa9d82a05 il_txq_update_write_ptr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xabfe7fa3 il_rx_queue_alloc +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xafc99cdf il_mac_sta_remove +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xafce18e5 il_free_geos +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb22aa7f7 il_dbgfs_unregister +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb323934a il_mac_reset_tsf +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb43cf31b il_send_cmd_sync +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb5b2e2ae il_send_cmd_pdu_async +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb69db3de il_poll_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb74d4a36 il_rx_queue_update_write_ptr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb7bd33ff il_isr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xbc27302a il_send_add_sta +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xbdcd1105 il_hdl_csa +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc00e69bd il_free_channel_map +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc39cf12c il_bg_watchdog +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc581062e il_eeprom_query_addr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xcc06e857 il_set_rxon_ht +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xcc59a4e0 il_add_station_common +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xcdd36ab6 il_mac_change_interface +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xcf77b8bf il_mac_flush +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xdafcf7e2 il_set_rxon_channel +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xde900c01 il_send_cmd +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xdee02198 il_add_beacon_time +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe001cfb3 il_tx_cmd_protection +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe6cfd197 il_setup_scan_deferred_work +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe8626ad3 il_chswitch_done +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xefd40cc2 il_mac_conf_tx +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf3545afc il_cmd_queue_free +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf424a44f il_init_channel_map +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf4bf7983 il_set_rxon_hwcrypto +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf501278b il_bcast_addr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf62e9a36 il_leds_exit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf7c5ade6 il_read_targ_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xfaac2aca il_send_cmd_pdu +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xfc50118b il_mac_config +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xfcd85458 il_get_active_dwell_time +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xfdafa4a0 il_set_decrypted_flag +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x08ee1e7d __tracepoint_iwlwifi_dev_ucode_event +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x0d9eb5ff __tracepoint_iwlwifi_dev_ucode_wrap_event +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x36dcef55 __tracepoint_iwlwifi_dev_iowrite32 +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x67381a2a __tracepoint_iwlwifi_dev_ucode_error +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x7edec07d __tracepoint_iwlwifi_dev_ioread32 +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x9a12c9c5 __tracepoint_iwlwifi_dev_ucode_cont_event +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0xc0827b2f __tracepoint_iwlwifi_dev_iowrite8 +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x407ae680 orinoco_get_stats +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x481ec1d6 alloc_orinocodev +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x48b41356 orinoco_open +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x4a418448 __orinoco_ev_info +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x4c250cbc __orinoco_ev_rx +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x58eb9b48 orinoco_process_xmit_skb +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x5a6a9cec orinoco_up +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x5dea5bf1 hermes_struct_init +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x5eacfe6d orinoco_if_add +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x65ec515e orinoco_stop +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x66ce8e51 orinoco_down +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x802f88b5 orinoco_init +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x8728f0d9 orinoco_change_mtu +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xca69dd12 free_orinocodev +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xd646a86f orinoco_set_multicast_list +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xfaa8486f orinoco_if_del +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xfd786162 orinoco_tx_timeout +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xffe27bca orinoco_interrupt +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/btcoexist/btcoexist 0x299836cd rtl_btc_get_ops_pointer +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x0113fa61 rtl92c_dm_rf_saving +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x05782960 _rtl92c_phy_bb8192c_config_parafile +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x06afcf55 _rtl92c_phy_init_bb_rf_register_definition +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x0c225955 rtl92c_dm_write_dig +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x1829faef rtl92c_phy_set_txpower_level +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x1b32b7f5 rtl92c_phy_set_io +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x1c591fbf _rtl92c_phy_fw_rf_serial_write +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x1de5f7f3 rtl92c_dm_watchdog +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x22707221 rtl92c_download_fw +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x24361e32 _rtl92c_phy_dbm_to_txpwr_idx +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x24b2caea rtl92c_dm_bt_coexist +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x263fd310 rtl92c_dm_init +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x29021022 rtl92c_phy_set_bb_reg +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x2b1deb33 _rtl92c_phy_fw_rf_serial_read +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x2fc9e067 rtl92c_phy_query_bb_reg +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x362ef673 rtl92c_phy_update_txpower_dbm +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x3d8cb38e rtl92c_set_fw_rsvdpagepkt +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x4290bdb4 rtl92c_phy_lc_calibrate +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x521db398 rtl8192_phy_check_is_legal_rfpath +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x56b7f7b4 rtl92c_phy_set_io_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x5ef2640b rtl92c_bt_rssi_state_change +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x5fc35056 _rtl92c_phy_set_rf_sleep +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x602c3166 rtl92c_phy_rf_config +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x6269d6ef rtl92c_phy_iq_calibrate +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x6bd249dc rtl92c_set_fw_pwrmode_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x783febad rtl92c_dm_init_edca_turbo +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x78d1048c rtl92c_phy_sw_chnl +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x7928225f _rtl92c_store_pwrIndex_diffrate_offset +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x88be4ffc rtl92ce_phy_set_rf_on +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x8f0e0127 rtl92c_phy_set_rfpath_switch +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x9dd62c07 rtl92c_fill_h2c_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xacf75336 rtl92c_phy_set_bw_mode +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xb3314d48 _rtl92c_phy_calculate_bit_shift +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xb36c18fa rtl92c_dm_init_rate_adaptive_mask +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xbba1a0d3 rtl92c_phy_ap_calibrate +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xc5ddd1b0 rtl92c_phy_sw_chnl_callback +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xc71a3c12 rtl92c_firmware_selfreset +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xc9a82512 rtl92c_dm_check_txpower_tracking +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xcc2819d8 _rtl92c_phy_txpwr_idx_to_dbm +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xd69359ca rtl92c_set_fw_joinbss_report_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xdf9c998c _rtl92c_phy_rf_serial_write +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xef4371b0 _rtl92c_phy_rf_serial_read +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x6fb9f06f rtl8723_fill_dummy +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_pci 0x5a05e464 rtl_pci_suspend +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_pci 0xab05fa5f rtl_pci_resume +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_pci 0xe1a07560 rtl_pci_probe +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_pci 0xe2067a9b rtl_pci_disconnect +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_usb 0x2d037969 rtl_usb_suspend +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_usb 0x4b9e035b rtl_usb_disconnect +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_usb 0xd6071a5e rtl_usb_resume +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_usb 0xefbebe4c rtl_usb_probe +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x09e8ef8f rtl_init_rfkill +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x0ab5f638 rtl_cmd_send_packet +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x0e7d1041 rtl_process_phyinfo +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x1196705c rtl_efuse_shadow_map_update +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x174f68b6 efuse_one_byte_read +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x1d9798e7 rtl_lps_enter +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x1ed96bfa rtl_cam_get_free_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x207fbb70 rtl_evm_db_to_percentage +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x2936d3c4 rtl_send_smps_action +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x36977829 rtl_phy_scan_operation_backup +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x3db87883 rtl_ps_enable_nic +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x5730dedf rtl_bb_delay +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x672136e3 rtl_cam_delete_one_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x676ec236 rtl_fw_cb +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x6c129f21 rtl_cam_reset_all_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x72d57b3a rtl_lps_leave +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x7667eede rtlwifi_rate_mapping +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x79188a02 rtl_query_rxpwrpercentage +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x7a036189 rtl_cam_del_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x885f696f rtl_dm_diginit +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x8873f4df rtl_ps_disable_nic +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x94e59ad3 rtl_wowlan_fw_cb +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x980848e2 rtl_addr_delay +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xa2299b05 rtl_hal_pwrseqcmdparsing +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xa22c3cbb rtl_signal_scale_mapping +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xa4af6734 rtl_ps_set_rf_state +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xafeb52d3 rtl_cam_mark_invalid +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xb78435fa rtl_cam_add_one_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xce59e7d0 efuse_shadow_read +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xd9323c93 rtl_get_tcb_desc +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xdbaeb1c7 rtl_cam_empty_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xf3eff181 efuse_read_1byte +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xfe05c29b rtl_rfreg_delay +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0x65f57310 wlcore_tx_complete +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0x6942f8e7 wl12xx_is_dummy_packet +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0x6bcdb311 wlcore_calc_packet_alignment +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0xb8d75054 wl1271_free_tx_id +EXPORT_SYMBOL drivers/nfc/microread/microread 0x5e04789b microread_remove +EXPORT_SYMBOL drivers/nfc/microread/microread 0x6048c2b4 microread_probe +EXPORT_SYMBOL drivers/nfc/nxp-nci/nxp-nci 0x06401d2b nxp_nci_remove +EXPORT_SYMBOL drivers/nfc/nxp-nci/nxp-nci 0x58ddffda nxp_nci_probe +EXPORT_SYMBOL drivers/nfc/nxp-nci/nxp-nci 0xd3a3340a nxp_nci_fw_recv_frame +EXPORT_SYMBOL drivers/nfc/pn544/pn544 0x33010607 pn544_hci_remove +EXPORT_SYMBOL drivers/nfc/pn544/pn544 0xa1b7a4e2 pn544_hci_probe +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x015b91f6 ndlc_open +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x5cc7106d ndlc_recv +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x680184af ndlc_remove +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x7ead24bd ndlc_probe +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x81e86690 st_nci_se_deinit +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0xcaf40fd3 st_nci_se_io +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0xe2999750 ndlc_close +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0xed96319a st_nci_se_init +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0xef808d82 ndlc_send +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x0b7550fe st21nfca_dep_event_received +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x3bc72470 st21nfca_hci_enable_se +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x475a54e7 st21nfca_im_send_atr_req +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x49c4256b st21nfca_hci_se_io +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x56eeef19 st21nfca_apdu_reader_event_received +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x6b289159 st21nfca_hci_probe +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x715db497 st21nfca_im_send_dep_req +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x726b2a21 st21nfca_dep_init +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x7bc84de9 st21nfca_se_deinit +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x7cf348a2 st21nfca_se_init +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x81710385 st21nfca_tm_send_dep_res +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x8e47b170 st21nfca_hci_remove +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x9c588790 st21nfca_connectivity_event_received +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xa1cd0dfd st21nfca_hci_discover_se +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xc8da888d st21nfca_dep_deinit +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xe3054792 st21nfca_hci_disable_se +EXPORT_SYMBOL drivers/ntb/ntb 0x1ec039ab ntb_clear_ctx +EXPORT_SYMBOL drivers/ntb/ntb 0x56bcd32a __ntb_register_client +EXPORT_SYMBOL drivers/ntb/ntb 0x6db8e47c ntb_set_ctx +EXPORT_SYMBOL drivers/ntb/ntb 0xa665eac5 ntb_link_event +EXPORT_SYMBOL drivers/ntb/ntb 0xa7979fe3 ntb_unregister_client +EXPORT_SYMBOL drivers/ntb/ntb 0xe91844ca ntb_unregister_device +EXPORT_SYMBOL drivers/ntb/ntb 0xeb3d7f4b ntb_db_event +EXPORT_SYMBOL drivers/ntb/ntb 0xfb7c8d6f ntb_register_device +EXPORT_SYMBOL drivers/parport/parport 0x050dba7d parport_unregister_driver +EXPORT_SYMBOL drivers/parport/parport 0x143c75dd parport_ieee1284_epp_read_data +EXPORT_SYMBOL drivers/parport/parport 0x32623bf4 parport_register_dev_model +EXPORT_SYMBOL drivers/parport/parport 0x3355c04f parport_ieee1284_ecp_read_data +EXPORT_SYMBOL drivers/parport/parport 0x3c85707a parport_get_port +EXPORT_SYMBOL drivers/parport/parport 0x4d2a941b parport_ieee1284_interrupt +EXPORT_SYMBOL drivers/parport/parport 0x519dfe98 __parport_register_driver +EXPORT_SYMBOL drivers/parport/parport 0x55023682 parport_ieee1284_ecp_write_data +EXPORT_SYMBOL drivers/parport/parport 0x55889343 parport_claim +EXPORT_SYMBOL drivers/parport/parport 0x55b07a6a parport_register_device +EXPORT_SYMBOL drivers/parport/parport 0x566b76b1 parport_del_port +EXPORT_SYMBOL drivers/parport/parport 0x5e3a3912 parport_irq_handler +EXPORT_SYMBOL drivers/parport/parport 0x6242a975 parport_ieee1284_ecp_write_addr +EXPORT_SYMBOL drivers/parport/parport 0x7b3e0b81 parport_set_timeout +EXPORT_SYMBOL drivers/parport/parport 0x7c529727 parport_read +EXPORT_SYMBOL drivers/parport/parport 0x800a2e68 parport_ieee1284_read_nibble +EXPORT_SYMBOL drivers/parport/parport 0x874c5825 parport_negotiate +EXPORT_SYMBOL drivers/parport/parport 0x91988c37 parport_unregister_device +EXPORT_SYMBOL drivers/parport/parport 0x959e83bb parport_ieee1284_read_byte +EXPORT_SYMBOL drivers/parport/parport 0x965ac13e parport_remove_port +EXPORT_SYMBOL drivers/parport/parport 0x972ad90d parport_wait_event +EXPORT_SYMBOL drivers/parport/parport 0x99ee521b parport_release +EXPORT_SYMBOL drivers/parport/parport 0x9f162023 parport_find_base +EXPORT_SYMBOL drivers/parport/parport 0xa3f32e83 parport_ieee1284_write_compat +EXPORT_SYMBOL drivers/parport/parport 0xa783843b parport_ieee1284_epp_read_addr +EXPORT_SYMBOL drivers/parport/parport 0xb2e214cb parport_claim_or_block +EXPORT_SYMBOL drivers/parport/parport 0xb6a4fd4e parport_put_port +EXPORT_SYMBOL drivers/parport/parport 0xc7ea3382 parport_announce_port +EXPORT_SYMBOL drivers/parport/parport 0xcb79c5ea parport_wait_peripheral +EXPORT_SYMBOL drivers/parport/parport 0xce9551ea parport_ieee1284_epp_write_data +EXPORT_SYMBOL drivers/parport/parport 0xdd456496 parport_register_port +EXPORT_SYMBOL drivers/parport/parport 0xe16ede68 parport_find_number +EXPORT_SYMBOL drivers/parport/parport 0xeda1cf9c parport_write +EXPORT_SYMBOL drivers/parport/parport 0xf9d5ce1d parport_ieee1284_epp_write_addr +EXPORT_SYMBOL drivers/parport/parport_pc 0x8402ebf2 parport_pc_probe_port +EXPORT_SYMBOL drivers/parport/parport_pc 0x99025549 parport_pc_unregister_port +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x00755d12 pcmcia_dev_present +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x01ada51c pcmcia_register_driver +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x1fe49316 pcmcia_disable_device +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x22700a16 __pcmcia_request_exclusive_irq +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x2568a937 pcmcia_release_window +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x269ba77e pcmcia_request_io +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x291d2282 pcmcia_get_mac_from_cis +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x4139cdda pcmcia_read_config_byte +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x44a77754 pcmcia_loop_tuple +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x454e3f43 pcmcia_map_mem_page +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x5f450b35 pcmcia_fixup_iowidth +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x73775624 pcmcia_write_config_byte +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x742f5665 pcmcia_parse_tuple +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x984ffa6d pcmcia_get_tuple +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xc6fca009 pcmcia_fixup_vpp +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xd1bb0062 pcmcia_loop_config +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xddb65756 pcmcia_request_irq +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xe4ea6a0f pcmcia_request_window +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xf138c881 pcmcia_enable_device +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xff9f90b0 pcmcia_unregister_driver +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x07619c33 pcmcia_socket_list_rwsem +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x212db8d2 pcmcia_socket_list +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x3c5cc114 pcmcia_parse_events +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x407e2111 pcmcia_get_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x65a8b9fd pcmcia_reset_card +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x6e959e8d pccard_register_pcmcia +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x81036457 pcmcia_socket_class +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x816e1ca8 pcmcia_parse_uevents +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x92888c8b pcmcia_unregister_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xbbebe6c0 pcmcia_put_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xcf97f3bd dead_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xef5af217 pcmcia_get_socket_by_nr +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xf63055e8 pcmcia_register_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_rsrc 0x3bb64c0c pccard_static_ops +EXPORT_SYMBOL drivers/pcmcia/pcmcia_rsrc 0x435f1853 pccard_nonstatic_ops +EXPORT_SYMBOL drivers/pps/pps_core 0x888de36a pps_register_source +EXPORT_SYMBOL drivers/pps/pps_core 0x95eae246 pps_event +EXPORT_SYMBOL drivers/pps/pps_core 0xc3936197 pps_lookup_dev +EXPORT_SYMBOL drivers/pps/pps_core 0xdb99c9a3 pps_unregister_source +EXPORT_SYMBOL drivers/ptp/ptp 0x2f2e6f77 ptp_clock_index +EXPORT_SYMBOL drivers/ptp/ptp 0x4795833a ptp_find_pin +EXPORT_SYMBOL drivers/ptp/ptp 0xb057f1a4 ptp_clock_register +EXPORT_SYMBOL drivers/ptp/ptp 0xb3a739b8 ptp_clock_unregister +EXPORT_SYMBOL drivers/ptp/ptp 0xef2056ca ptp_clock_event +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x0a7a1d10 rproc_boot +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x0bd02bb2 rproc_vq_interrupt +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x34113c03 rproc_alloc +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x936a7bd3 rproc_add +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x938e16c0 rproc_del +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0xa0f01304 rproc_put +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0xb441bf41 rproc_da_to_va +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0xbadc2086 rproc_report_crash +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0xc8c046a1 rproc_shutdown +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0xd4f46935 rproc_get_by_phandle +EXPORT_SYMBOL drivers/rtc/rtc-ds1685 0xfaa7f46b ds1685_rtc_poweroff +EXPORT_SYMBOL drivers/scsi/esp_scsi 0x424c30c9 scsi_esp_register +EXPORT_SYMBOL drivers/scsi/esp_scsi 0x4a29ab38 scsi_esp_intr +EXPORT_SYMBOL drivers/scsi/esp_scsi 0x927acedd scsi_esp_unregister +EXPORT_SYMBOL drivers/scsi/esp_scsi 0x94fd7e47 scsi_esp_template +EXPORT_SYMBOL drivers/scsi/esp_scsi 0xc3d6b86c scsi_esp_cmd +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x0d337b2b fcoe_ctlr_link_down +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x37fc5b0e fcoe_ctlr_init +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x519ab40e fcoe_fcf_get_selected +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x524c389e fcoe_ctlr_els_send +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x59729e65 fcoe_ctlr_destroy_store +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x78aba709 fcoe_ctlr_destroy +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x9315db35 fcoe_transport_attach +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xb856664b fcoe_ctlr_recv +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xd3aa539d fcoe_transport_detach +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xd4edfd1d fcoe_ctlr_set_fip_mode +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xdc50726e fcoe_ctlr_recv_flogi +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xe1765ceb fcoe_ctlr_link_up +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x007f5b46 fc_slave_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x09fc6dff fc_get_host_port_state +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x0a2a03a2 fc_elsct_send +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x0a328070 fc_rport_terminate_io +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x0c5a7bff fc_vport_id_lookup +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x148064ac fc_eh_device_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x18f61343 fc_queuecommand +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x22b90986 fc_exch_mgr_del +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x238da44b fc_exch_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x25a898fe fc_lport_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x2c4ed1a1 fc_lport_flogi_resp +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x2cc498f2 fc_lport_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x2d991c61 fc_eh_host_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x3372a854 fc_get_host_stats +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x36e5fbaf fc_cpu_mask +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x39b01ba0 fc_fabric_logoff +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x39c03a06 fc_exch_mgr_free +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x3b1fe041 fc_exch_mgr_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x3dc1d5ef fc_elsct_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x3e39d7dd fc_lport_notifier_head +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x43d412cf fc_vport_setlink +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x4684f1bb fc_lport_logo_resp +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x46d649a9 fc_fc4_register_provider +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x5768edc2 fc_frame_alloc_fill +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x5f0ac936 fc_lport_iterate +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x68cfeb2d fc_set_rport_loss_tmo +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x6a6a36e4 fc_fill_hdr +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x70c0328f libfc_vport_create +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x77e8d153 fc_eh_abort +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x7ad03b97 fc_exch_mgr_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x82e80822 fc_disc_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x82ef392b fc_frame_crc_check +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x8e39e38b fc_linkdown +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x900a55ab fc_lport_destroy +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x9442664f fc_fcp_destroy +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x9a9b53e3 fc_exch_mgr_list_clone +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x9ca84d5b fc_set_mfs +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xa0e80db3 fc_exch_mgr_add +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xa47bc621 fc_linkup +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xa480ce5c fc_lport_set_local_id +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xa4a4153b fc_fcp_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xa5d8e468 fc_fabric_login +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xad69fe2b fc_disc_config +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xb8184148 fc_fill_reply_hdr +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xd0f73d58 fc_get_host_speed +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xd8f20503 fc_fc4_deregister_provider +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xdb25d6ac fc_lport_bsg_request +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xe1aa05b8 fc_lport_config +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xe258975d _fc_frame_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xf0a90cf0 fc_exch_recv +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xf55b5ceb fc_exch_update_stats +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xfecd9509 fc_rport_init +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x477ef8b3 sas_suspend_ha +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x851bda05 sas_prep_resume_ha +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x8a87e724 try_test_sas_gpio_gp_bit +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0xa5c544cc sas_wait_eh +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0xda6f134c sas_resume_ha +EXPORT_SYMBOL drivers/scsi/megaraid/megaraid_mm 0x2250c66e mraid_mm_adapter_app_handle +EXPORT_SYMBOL drivers/scsi/megaraid/megaraid_mm 0x512c956d mraid_mm_unregister_adp +EXPORT_SYMBOL drivers/scsi/megaraid/megaraid_mm 0x833ef4ca mraid_mm_register_adp +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x01c34025 osd_req_remove_object +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x043aca0e osd_req_write_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x0c17edb1 osd_sec_init_nosec_doall_caps +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x182ae349 osd_req_get_attributes +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x1d861f6a osd_req_write_sg +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x291b782b osd_req_list_partition_objects +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x2c2dc153 osd_req_add_set_attr_list +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x2de0fd43 osd_dev_fini +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x31a4cb5c osd_req_flush_obsd +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x3d88447f osd_req_format +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x3f59d403 osd_dev_init +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x41494660 osd_req_add_get_attr_list +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x42abee86 osd_execute_request_async +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x49f76c94 osd_req_create_partition +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x4b16cbaf osd_req_read +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x62c61589 osd_end_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x6880ddd7 osd_req_read_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x698faa77 osd_req_create_object +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x69c40a51 osd_execute_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x7f0be492 osd_req_write +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x87a34474 osd_req_write_sg_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x93627fb9 osd_req_read_sg_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x9f4c9fa5 osd_req_decode_get_attr_list +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xa199c745 osd_req_decode_sense_full +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xa6bbd9f4 osd_req_flush_partition +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xb71b4fc6 osd_req_remove_partition +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xd2805740 osd_req_list_dev_partitions +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xd641c92c osd_req_list_partition_collections +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xdd34ff9d osd_finalize_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xdde19d76 osd_req_read_sg +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xe4b8cc5d osd_req_set_attributes +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xefaa6a60 osd_req_list_collection_objects +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xf0e050e7 osd_req_flush_collection +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xf2164b98 osd_start_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xf900a9c4 osd_req_flush_object +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xf9920102 osd_auto_detect_ver +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xfd028a32 osd_req_add_get_attr_page +EXPORT_SYMBOL drivers/scsi/osd/osd 0x19025e32 osduld_device_info +EXPORT_SYMBOL drivers/scsi/osd/osd 0x5fc48609 osduld_unregister_test +EXPORT_SYMBOL drivers/scsi/osd/osd 0x77290154 osduld_device_same +EXPORT_SYMBOL drivers/scsi/osd/osd 0x99ee3e63 osduld_put_device +EXPORT_SYMBOL drivers/scsi/osd/osd 0xbcf9aa32 osduld_register_test +EXPORT_SYMBOL drivers/scsi/osd/osd 0xca093d1e osduld_info_lookup +EXPORT_SYMBOL drivers/scsi/osd/osd 0xeba9b55e osduld_path_lookup +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x04bcd8f8 qlt_stop_phase1 +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x1009149e qlt_free_mcmd +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x1c12f74b qlt_lport_register +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x505ae546 qlt_enable_vha +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x681cbd0c qlt_lport_deregister +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x6c585f1d qlt_rdy_to_xfer +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x709c59ca qlt_free_cmd +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x964b09c0 qlt_stop_phase2 +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x9f25d9f0 qlt_abort_cmd +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xa458e086 qlt_unreg_sess +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xcd95b25f qlt_xmit_tm_rsp +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xf0411fd5 qlt_xmit_response +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x1f55cd70 qlogicfas408_ihandl +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x2de315ac qlogicfas408_abort +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x323df5fe qlogicfas408_info +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x33ae231a qlogicfas408_disable_ints +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x3fd8cd71 qlogicfas408_detect +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x89a8f59c qlogicfas408_bus_reset +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x92717c73 qlogicfas408_queuecommand +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0xc7315212 qlogicfas408_biosparam +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0xe76b3b20 qlogicfas408_get_chip_type +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0xf2b95199 qlogicfas408_setup +EXPORT_SYMBOL drivers/scsi/raid_class 0x2cf22520 raid_component_add +EXPORT_SYMBOL drivers/scsi/raid_class 0x759967be raid_class_release +EXPORT_SYMBOL drivers/scsi/raid_class 0xda7217c2 raid_class_attach +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x0409a5a2 fc_remote_port_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x565dbf3b fc_block_scsi_eh +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x6c9cf56c fc_host_post_event +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x6f5f1469 fc_vport_terminate +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x7954b1ea fc_get_event_number +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x84d35436 scsi_is_fc_vport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x918964e8 fc_remove_host +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xa56b65d4 fc_remote_port_rolechg +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xb6c85303 scsi_is_fc_rport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xd6adf656 fc_remote_port_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xdb4a3001 fc_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xe1c3d912 fc_vport_create +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xe6617789 fc_host_post_vendor_event +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xf817c0dc fc_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x04f38cd9 scsi_is_sas_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x2242d031 scsi_is_sas_rphy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x292d8ada sas_rphy_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x36d63d02 sas_phy_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x3f0c50c4 scsi_is_sas_port +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x3f7b2485 sas_rphy_unlink +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x44889d83 sas_port_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x53865f29 sas_port_add_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x5b0d78d0 sas_port_mark_backlink +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x5c95a759 sas_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x5f475c73 sas_phy_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x6256837b sas_rphy_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x64505393 sas_port_alloc_num +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x672f396a sas_read_port_mode_page +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x7061f22e sas_end_device_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x74cd78ea sas_remove_children +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x7f7e2a99 sas_rphy_remove +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x896cde2e sas_rphy_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x8b74abae sas_port_delete_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x8e345bd9 sas_port_get_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x90893b8c sas_expander_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x977997f2 sas_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xae5f3c41 sas_remove_host +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xb4ce1726 sas_port_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xd563ede0 sas_port_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xdc846c78 sas_port_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xf3c59127 sas_phy_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xfa07f526 sas_phy_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x1301804e spi_display_xfer_agreement +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x304e0011 spi_schedule_dv_device +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x3686ea09 spi_print_msg +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x7b2a2e9c spi_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0xe1ea461f spi_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0xf70c4c86 spi_dv_device +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0x405b6e05 srp_parse_tmo +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0x7bc59c1a srp_rport_get +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0xacd2ea3d srp_start_tl_fail_timers +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0xb0f4f4f4 srp_rport_put +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0xe1c59439 srp_reconnect_rport +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0x2b1cc693 ufshcd_system_suspend +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0x4dcf31da ufshcd_runtime_idle +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0x86de6d97 ufshcd_system_resume +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0xb2ba1a84 ufshcd_alloc_host +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0xb6958cf9 ufshcd_runtime_suspend +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0xce1d1438 ufshcd_shutdown +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0xdde3a812 ufshcd_runtime_resume +EXPORT_SYMBOL drivers/ssb/ssb 0x0f9422af ssb_driver_unregister +EXPORT_SYMBOL drivers/ssb/ssb 0x26efb33b ssb_pcihost_register +EXPORT_SYMBOL drivers/ssb/ssb 0x2c8e08e1 ssb_bus_sdiobus_register +EXPORT_SYMBOL drivers/ssb/ssb 0x355b8f72 ssb_pmu_set_ldo_paref +EXPORT_SYMBOL drivers/ssb/ssb 0x41473ea3 ssb_device_is_enabled +EXPORT_SYMBOL drivers/ssb/ssb 0x427a9685 ssb_bus_suspend +EXPORT_SYMBOL drivers/ssb/ssb 0x5b9b8dda ssb_bus_unregister +EXPORT_SYMBOL drivers/ssb/ssb 0x5f9af9c3 ssb_pcicore_dev_irqvecs_enable +EXPORT_SYMBOL drivers/ssb/ssb 0x76338b3e ssb_bus_resume +EXPORT_SYMBOL drivers/ssb/ssb 0x824f6c53 ssb_bus_pcibus_register +EXPORT_SYMBOL drivers/ssb/ssb 0x99247219 ssb_set_devtypedata +EXPORT_SYMBOL drivers/ssb/ssb 0xa488714b ssb_bus_may_powerdown +EXPORT_SYMBOL drivers/ssb/ssb 0xbcfde593 __ssb_driver_register +EXPORT_SYMBOL drivers/ssb/ssb 0xbd17b764 ssb_device_disable +EXPORT_SYMBOL drivers/ssb/ssb 0xc0512e0f ssb_admatch_base +EXPORT_SYMBOL drivers/ssb/ssb 0xc8410d02 ssb_commit_settings +EXPORT_SYMBOL drivers/ssb/ssb 0xd481192b ssb_admatch_size +EXPORT_SYMBOL drivers/ssb/ssb 0xdbaf9766 ssb_device_enable +EXPORT_SYMBOL drivers/ssb/ssb 0xe495043d ssb_bus_powerup +EXPORT_SYMBOL drivers/ssb/ssb 0xe4c84ff6 ssb_pmu_set_ldo_voltage +EXPORT_SYMBOL drivers/ssb/ssb 0xec8b591e ssb_clockspeed +EXPORT_SYMBOL drivers/ssb/ssb 0xed9a8362 ssb_dma_translation +EXPORT_SYMBOL drivers/ssb/ssb 0xf1aea3db ssb_chipco_gpio_control +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x08c8e8dc fbtft_write_vmem16_bus8 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x0f45f127 fbtft_write_reg8_bus8 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x12a1e96d fbtft_dbg_hex +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x1392eb7b fbtft_write_gpio16_wr_latched +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x2061214f fbtft_write_reg8_bus9 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x29d8db9a fbtft_write_gpio8_wr +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x2e1bc143 fbtft_unregister_framebuffer +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x41756a9c fbtft_write_reg16_bus8 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x497c18ad fbtft_register_backlight +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x55b15c34 fbtft_remove_common +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x59a2a5de fbtft_init_display +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x5d6d648b fbtft_write_vmem8_bus8 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x79db2306 fbtft_write_vmem16_bus9 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x913a0c2d fbtft_register_framebuffer +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x94d9e7f9 fbtft_write_spi_emulate_9 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x9abcad59 fbtft_write_vmem16_bus16 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xaf37e883 fbtft_write_spi +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xba9418bb fbtft_probe_common +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xcf2382e7 fbtft_framebuffer_release +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xd70e7387 fbtft_framebuffer_alloc +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xddbb1786 fbtft_read_spi +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xefa939b7 fbtft_unregister_backlight +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xf804ad87 fbtft_write_gpio16_wr +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xfbc9d686 fbtft_write_reg16_bus16 +EXPORT_SYMBOL drivers/staging/fwserial/firewire-serial 0x74222a05 fwtty_port_get +EXPORT_SYMBOL drivers/staging/fwserial/firewire-serial 0xd115a3e6 fwtty_port_put +EXPORT_SYMBOL drivers/staging/iio/addac/adt7316 0x92d1651a adt7316_probe +EXPORT_SYMBOL drivers/staging/iio/magnetometer/hmc5843_core 0x1dfa388b hmc5843_common_suspend +EXPORT_SYMBOL drivers/staging/iio/magnetometer/hmc5843_core 0x23178ac4 hmc5843_common_resume +EXPORT_SYMBOL drivers/staging/iio/magnetometer/hmc5843_core 0x4684b05b hmc5843_common_remove +EXPORT_SYMBOL drivers/staging/iio/magnetometer/hmc5843_core 0x6dca7664 hmc5843_common_probe +EXPORT_SYMBOL drivers/staging/iio/meter/ade7854 0xafce6d35 ade7854_remove +EXPORT_SYMBOL drivers/staging/iio/meter/ade7854 0xd4bf8cd3 ade7854_probe +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x00a97cd3 the_lnet +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x0301a972 lnet_parse +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x1301e1ca lnet_copy_kiov2iov +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x1366b7ac LNetSetLazyPortal +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x19670622 LNetNIInit +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x1b191752 lnet_msgtyp2str +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x1ee5f15e lnet_ipif_query +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x1fe16fd5 LNetGet +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x204b8151 lnet_counters_reset +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x2aa9953d lnet_cpt_of_nid +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x2ac93e90 lnet_connect_console_error +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x33202a6c LNetGetId +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x34d613da lnet_create_reply_msg +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x3c779ee0 LNetPut +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x3f4f5b46 LNetNIFini +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x40f7397b lnet_connect +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x473ad33b LNetDist +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x55db5324 lnet_iov_nob +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x57e84e62 lnet_copy_kiov2kiov +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x58a1ca89 LNetMDUnlink +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x5e91cfec lnet_copy_iov2iov +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x5fee352c lnet_acceptor_timeout +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x61f784b2 LNetClearLazyPortal +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x638a52c7 lnet_sock_read +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x64cdea3a LNetCtl +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x66d449b1 lnet_ipif_enumerate +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x67e6511c lnet_sock_getbuf +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x6c13bc4e lnet_set_reply_msg_len +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x6f7be171 LNetEQGet +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x722c76e5 LNetMDAttach +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x7bfaf3b0 lnet_register_lnd +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x7d59a7fe LNetMEInsert +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x82858c70 lnet_sock_listen +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x854ab844 LNetEQWait +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x874dbd3f lnet_kiov_nob +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x88b85ba6 lnet_sock_accept +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x9de986d3 LNetEQAlloc +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x9fbecf98 lnet_copy_iov2kiov +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xa32b5dd0 lnet_extract_kiov +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xa431f535 lnet_sock_setbuf +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xa56de08d lnet_ipif_free_enumeration +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xa8c8a8e1 lnet_net2ni +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xaa414970 LNetMEUnlink +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xaa9b477e LNetMDBind +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xb1558c7c lnet_notify +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xb75f7953 LNetEQFree +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xba5566d2 lnet_acceptor_port +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xbf0760a2 LNetMEAttach +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xd1c2f3e4 lnet_extract_iov +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xd3ffa617 lnet_sock_getaddr +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xd7c50cb9 lnet_init +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xe18a8a6b lnet_unregister_lnd +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xe8124744 lnet_fini +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xf1b316bf LNetSnprintHandle +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xf63a2ef8 lnet_finalize +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xf769aa17 lnet_sock_write +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xfa106804 lnet_counters_get +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xffc8827a lnet_sock_connect +EXPORT_SYMBOL drivers/staging/lustre/lnet/selftest/lnet_selftest 0x078db139 lstcon_ioctl_entry +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0x017ff6c6 seq_client_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0x1c4bb5f9 LU_OBF_FID +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0x375e6f8d LUSTRE_BFL_FID +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0x3e8d25c7 seq_client_alloc_fid +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0x4e86c273 client_fid_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0x6db02c09 seq_client_get_seq +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0xae61cff5 LU_DOT_LUSTRE_FID +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0xc997a02f LUSTRE_SEQ_SPACE_RANGE +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0xe03748dc client_fid_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0xecee2727 LUSTRE_SEQ_ZERO_RANGE +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0xf6ac79ff seq_client_flush +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0xfc807493 seq_client_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0x0c353fee fld_client_add_target +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0x290ffc36 fld_client_lookup +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0x7bc8c326 fld_client_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0x8c8ee829 fld_client_flush +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0xdd139b2d fld_client_debugfs_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0xf6b63c6d fld_client_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0xf9a615e6 fld_client_del_target +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x000c507f libcfs_debug_dumplog +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x00c881f6 cfs_cpt_number +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x01db5172 cfs_percpt_atomic_summary +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x0389f857 cfs_cpt_spread_node +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x06401e01 cfs_hash_is_empty +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x069f9bb2 cfs_wi_schedule +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x08917712 cfs_hash_for_each_key +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x08ada613 libcfs_console_backoff +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x0b4b1546 libcfs_lnd2modname +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x0c68bc45 cfs_cpt_clear +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x0de6c369 cfs_cap_lower +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x0e311d38 cfs_percpt_atomic_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x0f5eff79 cfs_percpt_number +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x10b7e9c3 cfs_cpt_unset_cpu +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x123b6908 cfs_hash_bd_findadd_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x12c54b77 cfs_hash_findadd_unique +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x13550229 lbug_with_loc +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x151e7546 cfs_cpt_table_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x17ac7833 libcfs_deregister_ioctl +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x1a60d439 cfs_parse_nidlist +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x1d41c4c0 cfs_hash_bd_lookup_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x1e8cdb47 cfs_race_waitq +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x23f6f445 cfs_restore_sigs +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x247da28c libcfs_kvzalloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x2663147a __cfs_fail_timeout_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x277e62bd cfs_hash_for_each_empty +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x27b6d3ba cfs_ip_addr_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x29aafd0c cfs_hash_hlist_for_each +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x2a641ef9 cfs_hash_dual_bd_unlock +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x2adae33e cfs_init_timer +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x2dbe54b2 cfs_trimwhite +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x2e5044c7 cfs_cpt_set_nodemask +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x2efcc0e6 cfs_block_sigs +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x2f439265 cfs_percpt_unlock +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x2fb7eae8 cfs_hash_bd_finddel_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x31fc5082 cfs_crypto_hash_update +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x377f93fb cfs_srand +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x389ca502 libcfs_debug_mb +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x39fdcd2b libcfs_debug_set_level +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x3c1285bd libcfs_subsystem_debug +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x3d5e6098 cfs_race_state +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x3e5e7727 cfs_hash_rehash_cancel_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x3ef0d90c libcfs_kkuc_group_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x4062f92b libcfs_run_lbug_upcall +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x4087e2b4 cfs_hash_putref +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x411db754 cfs_crypto_hash_final +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x44688a0a cfs_block_allsigs +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x44728d76 cfs_cpt_bind +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x44839bbb cfs_rand +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x468bace1 cfs_hash_rehash_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x482deff7 cfs_cpt_unset_cpumask +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x48f163c6 libcfs_str2anynid +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x4a95faa2 cfs_timer_deadline +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x4a99af72 cfs_clear_sigpending +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x4b982291 cfs_hash_bd_peek_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x4d89e988 cfs_block_sigsinv +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x4f1f2fa5 cfs_crypto_hash_digest +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x50345570 libcfs_str2net +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x5051b6d2 portal_enter_debugger +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x509d38b0 libcfs_net2str +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x54fd9a71 cfs_percpt_index +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x58a7ee00 libcfs_catastrophe +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x5946ec2b cfs_percpt_current +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x5a785762 cfs_cpt_online +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x5b20921a cfs_hash_for_each_nolock +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x5c013b81 cfs_expr_list_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x5dce9e80 libcfs_lnd2str +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x5df8c623 cfs_cpt_cpumask +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x62289d65 cfs_array_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x63b4967a cfs_hash_lookup +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x64685fef libcfs_console_min_delay +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x6564c55b libcfs_console_max_delay +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x65dd9f0c libcfs_run_upcall +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x67398404 cfs_wi_sched_destroy +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x68fa4d6d cfs_hash_debug_header +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x6c4cadc8 cfs_hash_for_each +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x6c905b5f libcfs_watchdog_ratelimit +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x71f662a3 libcfs_debug +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x72f4e5f9 cfs_hash_bd_move_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x7562cd14 cfs_hash_del_key +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x771695b1 cfs_hash_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x785b7372 cfs_hash_dual_bd_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x7a47b94d cfs_hash_size_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x7a63872e cfs_timer_disarm +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x7b0b748a cfs_ip_addr_parse +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x7c73bc4b cfs_hash_rehash +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x7e6f6485 cfs_ip_addr_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x7fda989d cfs_fail_loc +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x8151c3aa cfs_cap_raised +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x8286ffa5 cfs_percpt_lock_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x828d16a2 cfs_cpt_table +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x83d795e4 cfs_match_nid +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x857aaea7 libcfs_register_ioctl +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x87f3bb87 cfs_hash_del +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x8c85e4e6 cfs_crypto_hash_speed +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x91504e8b libcfs_kmemory +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x940ed192 libcfs_stack +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x949221dc cfs_hash_cond_del +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x95620e8c cfs_wi_deschedule +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x97b0b9bc cfs_enter_debugger +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x9879b229 cfs_get_random_bytes +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x9f058f6c cfs_hash_debug_str +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x9f82f712 cfs_trace_copyout_string +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xa28a6757 cfs_percpt_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xa2b68b2a cfs_array_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xa6b9dee6 libcfs_kkuc_group_rem +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xa8d5c7f7 cfs_percpt_lock_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xa9088531 cfs_expr_list_values +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xa9c0ca61 cfs_timer_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xa9dc74e2 cfs_trace_copyin_string +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xac0f67e3 cfs_cpt_unset_node +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xb00dfd91 cfs_hash_dual_bd_findadd_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xb473e79e cfs_wi_sched_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xb8c52b1b cfs_timer_done +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xbab4f34e cfs_timer_arm +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xbab577e8 cfs_hash_for_each_safe +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xbc275420 cfs_cpt_unset_nodemask +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xbf7a37f1 cfs_signal_pending +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xc0ea7fc0 cfs_expr_list_parse +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xc1708189 cfs_hash_dual_bd_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xc1b20836 cfs_hash_add_unique +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xc2dfd791 libcfs_console_ratelimit +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xc39fd2f9 libcfs_panic_on_lbug +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xc49b1c62 cfs_percpt_atomic_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xcb2160d3 cfs_cpt_of_cpu +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xcb385db9 libcfs_debug_binary +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xcc20e694 libcfs_nid2str +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xccc45639 cfs_free_nidlist +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xcd38904c cfs_wi_exit +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xce1a88f2 libcfs_arch_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xcf61bacb __cfs_fail_check_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xcf678304 cfs_hash_bd_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xcf90528c cfs_cpt_table_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xd0aa642a cfs_hash_rehash_key +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xd1319447 cfs_cpt_nodemask +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xd2965f33 cfs_hash_bd_del_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xd486f38f libcfs_kkuc_msg_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xd48d8f72 cfs_hash_dual_bd_lookup_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xd5396536 cfs_cpt_set_node +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xd6a52be3 libcfs_printk +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xd7bbf963 cfs_hash_dual_bd_finddel_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xd7c4f765 add_wait_queue_exclusive_head +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xd96f406d cfs_cap_raise +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xdb6e2c51 libcfs_kkuc_group_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xdce448d0 cfs_cpt_set_cpumask +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xde17bb8d libcfs_isknown_lnd +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xde83075f libcfs_kvzalloc_cpt +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xdf2789c0 cfs_curproc_cap_pack +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xe262a6e2 cfs_timer_is_armed +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xe2f91ce3 libcfs_debug_msg +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xe3bf6897 cfs_percpt_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xe45b62ff cfs_cpt_current +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xe7b54314 libcfs_arch_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xec1f56d5 libcfs_str2nid +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xeceac781 cfs_fail_val +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xeed48ba7 cfs_hash_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xf0246bf2 cfs_cpt_table_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xf3565b71 libcfs_debug_vmsg2 +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xf372d1c2 cfs_firststr +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xf440bb38 libcfs_kkuc_group_foreach +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xf5e4a175 cfs_hash_bd_add_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xf63a3d8d cfs_percpt_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xf782fbe6 cfs_cpt_weight +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xf79f9e72 cfs_crypto_hash_update_page +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xf8a8644b libcfs_id2str +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xf94025d1 libcfs_str2lnd +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xfa0d98ca cfs_cpt_set_cpu +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xfacb8667 cfs_hash_getref +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xfe565fa9 cfs_crypto_hash_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/llite/lustre 0x340fdcf1 ll_osscapa_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/llite/lustre 0x643f3618 ll_direct_rw_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/llite/lustre 0xa1b50f45 ll_iocontrol_register +EXPORT_SYMBOL drivers/staging/lustre/lustre/llite/lustre 0xa54c1ba8 ll_stats_ops_tally +EXPORT_SYMBOL drivers/staging/lustre/lustre/llite/lustre 0xcd3cde92 ll_iocontrol_unregister +EXPORT_SYMBOL drivers/staging/lustre/lustre/lov/lov 0x0750b605 lov_stripe_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/lov/lov 0x54da3671 lov_lsm_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/lov/lov 0x566cee59 lov_device_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/lov/lov 0x7d17f319 lov_stripe_unlock +EXPORT_SYMBOL drivers/staging/lustre/lustre/lov/lov 0xf03b92fe lov_read_and_clear_async_rc +EXPORT_SYMBOL drivers/staging/lustre/lustre/lov/lov 0xf45bbc49 lov_lsm_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/mdc/mdc 0x0df21540 it_set_disposition +EXPORT_SYMBOL drivers/staging/lustre/lustre/mdc/mdc 0x5919b6d6 it_clear_disposition +EXPORT_SYMBOL drivers/staging/lustre/lustre/mdc/mdc 0x5ef8417d it_disposition +EXPORT_SYMBOL drivers/staging/lustre/lustre/mdc/mdc 0xfe26c5a6 it_open_error +EXPORT_SYMBOL drivers/staging/lustre/lustre/mgc/mgc 0xdc287f95 mgc_fsname2resid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0064d3d0 cl_lock_extransit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x00a96126 cl_conf_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0145ca38 class_fail_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x01665e34 class_parse_net +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x03044183 class_disconnect_stale_exports +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x035852d0 lustre_swab_llog_rec +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x056e638e cl_io_submit_rw +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x057f6d4b class_find_old_param +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x05af1920 dt_quota_glb_features +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x05f84e88 LU_BUF_NULL +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x06430b66 ldebugfs_add_simple +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0770fcf4 lu_context_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x07aa68bb lustre_swab_lustre_cfg +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x07d45876 obdo_set_parent_fid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x083942ff class_del_profile +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0a2ddaa3 cl_page_unmap +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0a505859 cl_unuse +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0a94a531 llog_process_or_fork +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0ab898b5 obdo_cpu_to_le +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0ae380f8 class_devices_in_group +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0b513ee7 obd_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0b852537 ldebugfs_register_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0c378d79 lustre_swab_llog_hdr +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0cf99bff dt_acct_features +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0d2684c8 lu_dev_del_linkage +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x10e13c94 cl_lock_get_trust +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x11495519 lprocfs_write_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x117f74a8 cl_sync_io_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x11f7ad64 cl_io_read_page +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x12fad4fe class_export_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x13232bba llog_declare_write_rec +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x134b03a8 cl_page_top +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x136e6623 capa_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1491dc30 lu_context_tags_clear +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1503a313 cl_env_nested_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x16778046 cl_lock_descr_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x16fa42ec cl_io_is_going +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x184bcd0b llog_cat_reverse_process +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x185195cd class_decref +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x19032808 cl_io_start +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1ada05a4 cl_env_peek +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1bb463ca llog_write_rec +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1c0e45be cl_io_lock_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1c15bc71 llog_cat_cancel_records +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1c32516a cl_lock_enqueue_wait +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1cd72e0e cl_lock_signal +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1e94e552 class_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1f3be27c lprocfs_rd_state +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1ff4b4db lustre_common_put_super +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x212515ff dt_key +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x21307495 lu_buf_check_and_grow +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x21aea139 cl_page_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x21de480e lu_site_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x221826f1 class_parse_nid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x22185089 cl_2queue_disown +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x223525fe dt_version_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x230741bf cl_page_size +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x24bb27ca cl_page_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x24e1671d lprocfs_counter_sub +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2517f868 llog_cat_add_rec +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x252407df lu_kmem_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2547efae lustre_uuid_to_peer +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2565f712 cl_io_unlock +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x259ebac6 obd_alloc_fail +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x25b51d8b dt_read +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2639bc89 lu_context_key_quiesce_many +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x275cdc7a cl_env_reexit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x286860f5 class_handle_free_cb +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2935609b lprocfs_single_release +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x297cf5e0 class_handle2object +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2ae1cd79 kuc_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2b05ec01 cl_lock_hold_release +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2b228000 class_import_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2b4c48e9 server_name2svname +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2ce21ccd lu_site_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2cf4a888 cl_page_unassume +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2d515a7e cl_io_rw_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2f586cbf lprocfs_rd_conn_uuid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x30081dbb capa_cpy +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x311fc3de cl_io_sub_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3242ed35 obdo_cachep +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x334c76b0 cl_sync_io_wait +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x338a3625 obd_export_nid2str +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x33fb11eb cl_lock_mutex_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x34a0c2ad class_conn2export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x34ad08af lprocfs_seq_release +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x350231a2 class_export_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x369be015 obdo_le_to_cpu +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x36f78632 lu_context_key_quiesce +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x370dd9da cl_queue_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x370e087f lustre_register_client_fill_super +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x376df276 dump_lniobuf +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x37a7e1c2 llog_declare_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x37ed6e4b at_early_margin +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x38fb0c90 class_match_param +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x39171baf llog_copy_handler +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3a005065 dt_otable_features +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3a070139 cl_lock_request +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3a4b7008 obd_exports_barrier +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3aed49ff cl_lock_modify +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3b7f489d lu_env_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3bcbdc4b lprocfs_stats_alloc_one +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3bd11db3 lu_context_key_revive_many +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3da2aa39 lprocfs_alloc_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3e07bd60 class_config_llog_handler +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3f25c782 obd_max_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3f3665d0 cl_object_kill +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3f63be0c cl_vmpage_page +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3f66f10a cl_lock_release +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3fa80d2e dt_record_write +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x41984802 llog_cat_process_or_fork +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4258c710 cl_page_list_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x427af9f5 class_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x429f41ff dt_device_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x42d31750 llog_cat_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4363a97e lprocfs_exp_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x444fb6bb lu_site_purge +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x447ecbc3 cl_2queue_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x44c38ea7 lu_device_type_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x461487de llog_close +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x46524d90 cl_io_loop +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x465cadb7 class_connect +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x46e69ccb class_get_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4735672c obdo_refresh_inode +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x474ed5bd lustre_swab_ll_fid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x47b35f7d statfs_unpack +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x48184b01 llog_cat_init_and_process +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x482d3cb5 capa_cachep +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x484a63fa cl_object_prune +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x494cfb52 lustre_acl_xattr_merge2ext +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x49a0f6ea lustre_posix_acl_xattr_2ext +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x49a29223 lprocfs_find_named_value +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x49a8fdb1 class_destroy_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x49b5f7d4 class_conn2cliimp +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x49b840d0 class_new_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4a58e4e4 obdo_from_la +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4abd07de lustre_posix_acl_xattr_filter +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4ac58713 obd_connect_flags2str +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4b6a736b cl_lock_user_del +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4b725b24 cl_io_prepare_write +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4baead71 cl_req_attr_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4c689e12 lprocfs_wr_atomic +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4cfb41e7 dt_locate_at +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4d13458b kuc_len +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4d3df893 dt_txn_hook_stop +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4d763973 cl_page_list_unmap +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4d8d6dfa lprocfs_counter_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4dd289dc lu_object_find_slice +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4e58f050 class_search_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4f5c9cc4 cl_2queue_init_page +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4f93c68c cl_io_lock_alloc_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4fba4346 dt_directory_features +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x50c7fc36 ptlrpc_put_connection_superhack +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5156c140 obd_export_evict_by_nid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x51e07ef9 cl_object_attr_unlock +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5354cf28 cl_req_completion +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x53e7ae31 iattr_from_obdo +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x53eaa3c8 llog_sync +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x544a5167 la_from_obdo +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x54885f87 ldlm_timeout +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x54b64b27 lu_object_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x558bec27 obd_ioctl_getdata +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x564e9d44 init_capa_hash +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x570d09ae lustre_swab_lu_fid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x57315920 cl_page_disown +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x57580efb cl_wait_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x57eb2d2b lprocfs_at_hist_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x58795fba cl_page_header_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5953bbeb cl_sync_io_note +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x59cc1061 cl_lock_enclosure +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5a057ab1 cl_req_prep +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5a20d896 obd_memory_max +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5b360ffe lu_stack_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5bc022c5 lprocfs_dt_rd_filestotal +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5bd8db35 cl_io_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5d0d4330 cl_lock_delete +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5d34ae0d cl_lock_mode_name +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5d629ec3 lu_dev_add_linkage +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5d7e4200 lu_object_add_top +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5d9777f3 cl_page_cache_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5dc23b29 cl_lock_is_mutexed +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5dd8bc62 cl_object_find +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5e5ce50a lu_context_key_degister_many +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5e93341f lprocfs_oh_sum +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5f4ae6a6 cl_io_submit_sync +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5f59e5d0 cl_lock_discard_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5fe97b73 block_debug_check +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6033b908 obdo_cmp_md +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x61f6b30c capa_lookup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x61fdaf08 cl_page_list_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x624ffe24 lprocfs_counter_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x631fd7b9 lustre_ext_acl_xattr_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x63d21614 dt_try_as_dir +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x63eddf31 cl_type_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x644e3f6f llog_init_handle +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x648a7f66 lprocfs_free_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6615d417 lu_context_key_register_many +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6637aa3f lu_object_anon +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x664bc769 llog_erase +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x66af261f cl_locks_prune +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x66c66e65 cl_unuse_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x66e0e87c llog_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x66f9b50b cl_lock_peek +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6734adbd lprocfs_read_frac_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6749e5c9 obdo_to_inode +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x679f86ea cl_page_list_move +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6888a0e4 cl_env_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6890d175 lustre_get_jobid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6939d74a cl_io_end +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x698b61fc cl_lvb2attr +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x69c42114 at_min +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6a51db5e lprocfs_rd_uint +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6a9362a8 lprocfs_init_mps_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6b128305 cl_site_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6bb6d421 lu_buf_realloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6c3f5a9f cl_io_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6c466c89 dt_store_resolve +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6c76a636 lprocfs_obd_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6d94698d cl_page_flush +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6e59bb88 lu_object_put_nocache +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6f3e6225 dt_quota_slv_features +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6f627870 cl_site_stats_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x706c4946 ldebugfs_obd_seq_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x70828589 lu_object_assign_fid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x71e19698 llog_open +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x728dddcd class_unlink_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x72f23aa1 lprocfs_rd_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x73dfe561 lu_device_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x742559b1 class_unregister_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7519f618 lprocfs_init_ldlm_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x752f71a8 class_get_profile +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x756a77f3 class_parse_nid_quiet +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x75a97a3e lu_context_key_revive +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x75d9d636 cl_page_make_ready +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x76627b73 cl_io_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x76d8eb88 class_num2obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x77d2089a class_name2dev +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7802fcd7 lustre_swab_llogd_conn_body +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x789796a1 obd_zombie_barrier +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x794e61b9 cl_req_page_done +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7ab158a1 obdo_from_md +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7b4e9399 dt_object_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7b4fc57b at_max +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7bc12d2a lprocfs_init_ops_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7bc262f0 class_uuid2obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7be7e6d7 cl_lock_closure_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7c3ab9fb cl_lock_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7c901e0e cl_lock_slice_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7d6add28 class_import_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7d9a0972 lu_object_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7edcafa0 cl_env_reenter +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7f1b532b cl_lock_disclosure +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7f6a4e3c cl_io_rw_advance +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7fe5561a obd_dirty_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7fe9136f lu_context_enter +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8031efb8 lprocfs_dt_rd_kbytestotal +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x806cc497 class_add_uuid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x80fc0ab6 lu_object_header_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x81109aab cl_lock_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x81742d89 obd_ioctl_popdata +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x82998208 cl_page_is_under_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x82b2241a class_config_parse_llog +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x82d10d80 cl_page_prep +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x82fe42b3 cl_lock_nr_mutexed +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x831f656c class_process_config +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8347e697 llog_cancel_rec +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x83f0b8fe cl_page_list_assume +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x83f3cfe8 lu_device_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8446b9a8 obdo_to_ioobj +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8486be2a cl_env_nested_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8489f086 obd_alloc_fail_rate +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8494dfa6 lu_context_key_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x849e5385 obd_update_maxusage +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x84e4c281 cl_2queue_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x84e65105 cl_use_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x85056d61 md_from_obdo +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8553b369 obd_memory +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8583e152 cl_lock_at +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x86be44e2 cl_lock_hold +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8716070e class_add_conn +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x879d37f0 llog_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x87bdeb02 lu_env_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x88804d19 lprocfs_rd_connect_flags +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x88b87068 lprocfs_stats_collect +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x891054f1 lprocfs_clear_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x89d9c7d7 cl_lock_state_wait +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x89f536ca lu_cdebug_printer +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8aa2c358 lprocfs_dt_rd_blksize +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8ae0d2be lprocfs_rd_u64 +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8b5f4057 lu_context_tags_update +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8ba6e479 lustre_swab_lu_seq_range +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8c06dc69 obdo_from_iattr +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8d2fb702 lu_context_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8d658ed0 capa_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8dec170a cl_req_page_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8e621c7f cl_lock_hold_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8e84c1de class_manual_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8f3cdb72 cl_index +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8f5825c0 cl_lock_mutex_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8f67314c obd_dump_on_eviction +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8fbe2d33 class_register_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x90802b8b cl_env_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x91a1d9a4 class_handle_hash +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x92a5240f lu_object_invariant +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x92e58479 obd_dump_on_timeout +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x93602df5 class_detach +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x936bd896 cl_lock_at_pgoff +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x937b7c62 class_process_proc_param +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x93859814 lprocfs_oh_tally +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x93b46468 lu_session_tags_clear +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x93c76cf2 llog_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9512d507 lustre_acl_xattr_merge2posix +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x953c058a dt_txn_hook_start +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x955f5220 ldlm_timeout_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x95735c6c at_extra +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9767adce class_uuid2dev +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9783356b cl_req_slice_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x97d03783 at_history +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x97dc5020 cl_page_discard +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x97e1fe8b lu_context_key_degister +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x99372080 cl_page_find +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x993d309b dt_txn_hook_commit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x997a4fce cl_page_is_owned +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x99b35f27 _debug_capa +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9a26c8e1 cl_io_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9a8c1761 class_connected_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9b1ed9d8 obd_jobid_var +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9b210d6b cl_object_glimpse +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9b984b05 ldebugfs_add_vars +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9bb4cb78 cl_env_unplant +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9d96afb3 lprocfs_alloc_obd_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9dbb17b6 lprocfs_dt_rd_kbytesfree +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9f6bc28b obd_max_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa02ba770 ldebugfs_seq_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa0953165 lu_site_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa0ec8bef llog_cat_process +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa160da4a lu_object_header_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa258fabe obd_export_evict_by_uuid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa2598998 lustre_register_kill_super_cb +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa42f0e26 lu_object_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa4565265 lu_device_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa54ddbbe cl_lock_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa5e5bc30 cl_object_attr_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa5f69919 llog_process +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa5fb234f lprocfs_write_frac_u64_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa607aa90 lprocfs_rd_atomic +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa674c241 kuc_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa7018b48 cl_page_find_sub +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa787a1d9 llog_exist +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa82a3dd1 class_handle_unhash +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa8bf0f5c cl_object_has_locks +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xaa21b7a0 lustre_register_quota_process_config +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xab1f3bee obd_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xabbfd413 ldebugfs_register +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xabf45922 capa_decrypt_id +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xac2d1f5a lprocfs_free_obd_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xac7f1596 kuc_ptr +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xac84a83f lu_site_stats_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xad2a0431 cl_io_top +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xae3f9150 cl_page_completion +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xaf4ca0f9 dt_index_read +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb0166178 lu_object_find +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb01963a6 class_uuid_unparse +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb0338590 cl_lock_closure_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb043c7f5 cl_lock_descr_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb0ae364e class_config_dump_llog +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb1606a11 lprocfs_rd_name +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb1b89b6d class_attach +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb23a2e07 dt_find_or_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb2b4f3b2 lprocfs_obd_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb35519ed lustre_swab_cfg_marker +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb36af8ff class_exp2cliimp +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb41998cd lustre_cfg_rename +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb489d39a dt_device_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb4f8ee63 lprocfs_read_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb57b6f45 lu_context_refill +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb62f0de9 cl_object_header_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb6ba5dd5 kuc_ispayload +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb7247459 cl_io_commit_write +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb72ac5ef cl_enqueue +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb743ec6a dt_mode_to_dft +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb7daa31e llog_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb8daf8f5 llog_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb90c0c12 class_name2obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb90c5ee6 ldebugfs_add_symlink +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb917f5a1 class_conn2obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb993a6c6 cl_lock_intransit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xba2f5a80 cl_site_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xba985283 lustre_register_client_process_config +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbacac922 lprocfs_write_frac_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbbfd2a48 dt_index_walk +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbc436a0d obdo_cpy_md +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbd0c6739 lu_object_unhash +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbd663517 cl_page_slice_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbf43754b lprocfs_rd_timeouts +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbf6e2b5e cl_page_clip +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbf7a6cc5 cl_lock_unhold +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbfbd85dc dump_exports +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbfe83312 cl_page_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc0954007 lprocfs_oh_clear +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc0bf7ef2 obd_debug_peer_on_timeout +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc16c68e2 obdo_from_inode +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc1a0bb7b cl_stack_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc35a83e9 class_exp2obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc3cf8099 cl_offset +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc3d1ee34 dt_version_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc5826721 lustre_end_log +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc61d6493 dt_object_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc62f3881 llog_backup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc84bdb8c cl_env_implant +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc855ab30 cl_lock_weigh +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc92b695c cl_object_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc9b3c667 dt_lfsck_features +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcaa17955 class_disconnect +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcabd3793 lprocfs_rd_server_uuid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcb0ab67f obd_max_dirty_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcb169f3e cl_2queue_assume +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcbee2517 lu_context_exit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcc9b0b25 lu_object_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcce4fa1b cl_enqueue_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcd7537ee get_devices_count +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcd8a604e lu_buf_check_and_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcdcad484 cl_object_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcdef156e lprocfs_wr_uint +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xce02cb2c cl_object_header_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xce2a9b91 cl_wait +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xce3b724f cl_page_at +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcebdbcd5 cl_object_attr_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcf8d7ac1 lu_object_header_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd08827c0 server_name2fsname +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd0b6995d lu_buf_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd10aa042 lustre_swab_llog_id +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd10fbad7 lu_env_refill_by_tags +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd121f123 cl_page_list_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd18e8de9 lu_site_init_finish +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd1a894dc lu_device_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd2f03e75 cl_page_gang_lookup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd3314e58 lprocfs_obd_rd_max_pages_per_rpc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd3ff97c6 llog_declare_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd472556a cl_2queue_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd4870007 ldebugfs_remove +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd5421462 cl_lock_ext_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd59a45d3 dt_txn_callback_del +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd5be2351 cl_page_list_discard +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd69cf642 cl_page_list_del +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd6d307a5 cl_2queue_discard +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd70fe669 lustre_swab_llogd_body +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd75faffa cl_page_list_splice +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd7bc8654 obd_timeout +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd7bfbc9c lprocfs_dt_rd_filesfree +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd7f7b340 cl_lock_mode_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd815fde8 lu_object_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd8a2f9e4 obd_devs +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd8da9c54 lu_env_refill +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd8e2678a cl_lock_state_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd9776084 cl_io_iter_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd97aa87e lu_context_key_register +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xda5a12ce lprocfs_alloc_md_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xda5b1ced class_find_param +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdaa12f08 __llog_ctxt_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdac644c8 lustre_posix_acl_xattr_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdb13dce1 capa_list +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdbd902b8 llog_cat_close +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdcc40af0 class_check_uuid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdd5ece20 llog_cat_declare_add_rec +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xddbe7201 cl_page_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xde077cf9 class_find_client_obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xde7d985b obd_dirty_transit_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xde898d5a cl_page_is_vmlocked +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdead36fe class_handle_hash_back +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdef4a618 cl_lock_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdf4fd18d class_put_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdffe4464 cl_page_own_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe003e4d1 lu_object_locate +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe028cf84 capa_encrypt_id +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe057b435 cl_page_assume +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe0807ed4 class_incref +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe1ecfe9d class_new_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe29a7df4 cl_attr2lvb +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe2a37a6c llog_write +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe2c403b7 llog_thread_key +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe2eb4470 class_get_next_param +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe384e011 cl_page_lookup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe550a1a4 cl_object_top +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe583b23b lu_kmem_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe5a0037b dt_txn_callback_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe60a75f4 cl_lock_is_intransit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe764cd80 cl_lock_closure_build +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe7d83236 cleanup_capa_hash +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe83bb604 cl_page_list_disown +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe84f97be class_disconnect_exports +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe8780310 cl_object_attr_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe8e84c32 class_match_nid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe8e8e8f3 cl_io_iter_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe9c79670 dt_record_read +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe9f9e7a8 cl_req_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xea874691 cl_page_vmpage +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xeacec47c lprocfs_oh_tally_log2 +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xec7d6b85 obd_timeout_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xeccaa346 lprocfs_seq_read_frac_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xecf5ace8 cl_lock_error +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xee24020c cl_lock_user_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xee363a31 dt_declare_version_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xee68bc29 lu_session_tags_update +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xee885abd lustre_process_log +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xeeeb79fa do_lcfg +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xef76f858 block_debug_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xefb0c427 lu_device_type_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf01e2527 server_name2index +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf041da41 dt_lookup_dir +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf12b90bb dt_store_open +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf1719d8f cl_env_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf2fd6695 statfs_pack +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf3101397 cl_page_list_own +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf3e49685 lprocfs_free_md_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf44c551c cl_pages_prune +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf490d5f9 class_del_profiles +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf571609d cl_page_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf60d4659 capa_count +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf7020831 lprocfs_dt_rd_kbytesavail +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf7d14a86 cl_lock_mutex_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf7ed0c33 cl_io_slice_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf8805d7e llog_open_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf94cdfcc llog_is_empty +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf9d5e081 llog_reverse_process +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfa813d06 capa_hmac +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfb7cecb8 lu_object_find_at +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfbea0098 lu_types_stop +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfc7f18d0 obd_pages_max +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfce2af38 cl_page_own +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfd68d17a class_notify_sptlrpc_conf +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfd854e3d cl_page_delete +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfd8f5cf4 lu_buf_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfdbe1557 lprocfs_write_u64_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xff57e92d class_match_net +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfffc1f11 lustre_swab_ost_id +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x00cb99c1 RQF_LDLM_INTENT_GETXATTR +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x00d95039 ptlrpcd_decref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x01753eec ptlrpc_cleanup_client +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x01d6ef7f ldlm_pools_recalc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x02224496 ldlm_lock_fail_match_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x026a5d7d ldlm_pool_set_slv +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x03d2d9c7 ptlrpc_set_destroy +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x04386a8e ptlrpc_request_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x048b59d5 lustre_msg_set_handle +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x049f019d ldlm_extent_shift_kms +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0515f93b RQF_FLD_QUERY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x06a90bc2 ldlm_namespace_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x06b3942b lustre_swab_lov_user_md_objects +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x071fc74a RQF_LDLM_ENQUEUE_LVB +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x07605c7d interval_find +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0820e595 req_capsule_client_sized_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0865029e lprocfs_wr_pinger_recov +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x08bb2d27 lustre_swab_obd_ioobj +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x08c876b2 ptlrpc_lprocfs_register_obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x095587d0 lustre_msg_buflen +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x09b63ec4 ldlm_lock_change_resource +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0a3130b0 RMF_MDT_EPOCH +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0ac252b2 lustre_msg_set_jobid +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0ac54708 lustre_errno_hton +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0b4de53e ptlrpc_pinger_sending_on_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0bcacb5d RMF_MDS_HSM_USER_ITEM +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0c2d9c43 lustre_swab_lip_header +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0c3ba621 lprocfs_wr_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0c967833 ldlm_resource_foreach +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0cf343dd RQF_LDLM_INTENT_BASIC +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0f1ba737 req_capsule_extend +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0faa148d sptlrpc_cli_wrap_bulk +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x103d6ff2 ptlrpc_stop_all_threads +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x10cac602 req_capsule_server_dump +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x10f18f20 interval_iterate_reverse +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x115017f6 req_layout_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1168da62 sptlrpc_cli_ctx_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x119a1a91 ldlm_replay_locks +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x11eb7961 ldlm_resource_iterate +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x12b6f5a3 ptlrpc_connection_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x13b6e08f sptlrpc_req_replace_dead_ctx +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x141192ec _debug_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x14708afc lustre_swab_mdt_rec_reint +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1483eca4 ldlm_lock_addref_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x14d192db lustre_msg_size +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x14f40896 req_capsule_filled_sizes +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x15a3e4db RMF_GETINFO_VAL +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x172fb86d lustre_msg_hdr_size +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1747d8b3 ldlm_lockname +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x17950f60 RQF_SEC_CTX +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x18c384a3 ptlrpc_mark_interrupted +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x19108a0f RQF_OST_DISCONNECT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1934918e ldlm_pool_shrink +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x19c08934 RQF_LDLM_INTENT_CREATE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1a0b837c ptlrpc_save_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1a6a3ce9 RQF_OST_GET_INFO_LAST_ID +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1a9b76aa RMF_OBD_QUOTACTL +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1abd3258 RMF_SETINFO_VAL +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1ace4b5f RQF_LDLM_BL_CALLBACK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1ad6c330 RMF_EAVALS +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1bae0270 interval_iterate +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1bc9f553 ldlm_resource_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1be21715 lustre_msg_size_v2 +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1c1070db ldlm_pool_get_lvf +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1c300d8e lustre_msg_get_slv +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1c724071 sptlrpc_unregister_policy +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1d043548 lustre_msg_set_op_flags +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1dc2051d RMF_SEQ_OPC +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1de9c288 lustre_swab_layout_intent +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1e0670c7 ptlrpc_resend_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1e8e48a4 sptlrpc_flavor_has_bulk +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1eb2a65f RQF_OST_GETATTR +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1ee46b51 lustre_init_msg_v2 +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1ee9eb3c RQF_MDS_QUOTACTL +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1ef7a0f0 ptlrpc_request_set_replen +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x206bff27 ptlrpc_req_set_repsize +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2096f5b5 RQF_OST_SET_GRANT_INFO +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x20d6b82c RQF_LDLM_INTENT_QUOTA +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x218a36ce ldlm_cli_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x219391ec RMF_EAVALS_LENS +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x223a699e ptlrpc_set_import_active +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2259e609 ptl_send_rpc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x233790b5 RMF_OST_BODY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x23a6c203 ldlm_resource_unlink_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x244e5558 lustre_msg_get_version +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x24aafdba RMF_MGS_TARGET_INFO +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x255f06a7 ldlm_glimpse_ast +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2585a629 RMF_SEQ_RANGE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2587513c RQF_LDLM_CP_CALLBACK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x269554ce RQF_LDLM_INTENT_GETATTR +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x26f99d16 RQF_MGS_CONFIG_READ +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x285e5b99 lustre_msg_set_conn_cnt +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x29662091 ldlm_cli_cancel_list +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2986d210 ptlrpc_deactivate_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x29e0869a sptlrpc_get_hash_name +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2a080e51 sptlrpc_import_flush_all_ctx +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2a63a472 lustre_swab_ptlrpc_body +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2bb8880e ldlm_enqueue_pack +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2c00c60d ptlrpc_sample_next_xid +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2ca92fa8 ldlm_lock_decref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2ccd5b87 ldlm_cli_cancel_list_local +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2d3443e2 ptlrpc_activate_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2d47ef42 req_capsule_has_field +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2d56f168 ptlrpc_pinger_ir_up +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2d798316 RMF_MGS_CONFIG_RES +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2e4562fe RQF_LLOG_ORIGIN_HANDLE_CREATE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2e4ca396 RQF_LDLM_INTENT_UNLINK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2ecd7515 lustre_msg_check_version +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2f0e4f87 RQF_OST_QUOTACTL +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2f793215 lustre_swab_ost_body +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2fab3539 lustre_swab_ost_lvb_v1 +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2fd2f737 lustre_msg_set_limit +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3001036d ldlm_completion_ast_async +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x300f129f ldlm_lock2desc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x301d4fcd RQF_MDS_READPAGE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x302937e0 RQF_MDS_CONNECT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3060b9c6 sptlrpc_rule_set_expand +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x31027229 ldlm_pool_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x31283b78 lustre_pack_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x31838cb4 RMF_IDX_INFO +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3261b862 RQF_OST_SYNC +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x32a6dc98 ptlrpc_nrs_policy_unregister +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3362b8e4 ldlm_lock_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x33bb7761 ldlm_typename +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x351a6656 sptlrpc_import_sec_ref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x35939a3d lustre_swab_fiemap +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x360e5a77 ldlm_cli_cancel_unused +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3680e6f1 ptlrpc_schedule_difficult_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x37365fe4 ptlrpc_request_alloc_pack +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3835ab4b RQF_LLOG_ORIGIN_CONNECT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3858fb94 RMF_OBD_STATFS +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x38c01799 RQF_LDLM_CALLBACK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x38fce533 lustre_msg_set_versions +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x39f60a5f RMF_OST_ID +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3a1e4bcb __lustre_unpack_msg +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3a3ea92a ptlrpc_register_service +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3aa3e71b ldlm_pool_set_clv +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3ab90f6e lustre_msg_bufcount +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3ac00716 lustre_swab_hsm_user_state +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3b45cd97 ldlm_init_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3b6b7cba dump_ioo +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3bedb0c7 RMF_LLOGD_CONN_BODY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3c1c8d71 ptlrpc_service_health_check +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3c63e62b RQF_MDS_REINT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3c8b16ab lustre_swab_ost_lvb +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3ca50f33 RQF_MDS_HSM_CT_REGISTER +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3d7dc5f9 ldlm_pools_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3dc47695 lustre_msg_get_magic +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3f034caf lustre_msg_get_status +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3f752e78 RQF_MDS_STATFS +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4066701e req_capsule_set_size +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x40e52bd3 ldlm_destroy_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x41008cef RQF_LDLM_CANCEL +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x43168488 RQF_MDS_RELEASE_CLOSE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x43705ee4 RQF_LOG_CANCEL +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x43d7efc8 lustre_msg_set_transno +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x44036eda RQF_MDS_GET_INFO +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x440c2a71 RMF_FIEMAP_VAL +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4481591d RQF_OST_SET_INFO_LAST_FID +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x44fbbf36 ptlrpc_fail_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x45d05893 lustre_swab_lustre_capa +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x45e30cea lustre_swab_ldlm_intent +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x45eb0ab7 ldlm_pool_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x469dfa3c ldlm_cli_enqueue_local +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x47120a4a ldlm_namespace_dump +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x47ad2862 ptlrpc_unregister_bulk +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x47f5e903 RMF_MDS_HSM_REQUEST +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x48f77e5e ptlrpc_request_pack +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x493449cd ptlrpc_recover_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x498c03c5 lustre_msg_set_last_xid +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x498e29a8 ldlm_lock_downgrade +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4a21360f ldlm_lock_fail_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4a5a2416 RMF_DLM_REQ +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4a64e5d3 ptlrpc_connect_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4b5a4acc ptlrpc_disconnect_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4cffe6b4 ptlrpc_register_bulk +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4d7580d0 lustre_swab_hsm_user_item +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4da3c308 llog_client_ops +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4e1706e5 lustre_msg_buf +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4e696b96 ptlrpcd_queue_work +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4eb03a6f ptlrpcd_destroy_work +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4f766c3b lustre_swab_generic_32s +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4fa6ec96 target_print_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5009a24d ldlm_namespace_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x50443f6a ptlrpc_init_client +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x504aaf12 client_disconnect_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x50dd74f8 RMF_STRING +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5258f433 req_capsule_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x529acb01 ptlrpc_prep_bulk_imp +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x52c62150 RMF_RCS +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x53411557 RMF_DLM_REP +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x53a4a004 bulk_sec_desc_unpack +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x540679a0 lustre_pack_reply_v2 +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5497c830 sptlrpc_import_flush_my_ctx +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x54ae5021 ldlm_lock_addref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x54bdad14 ptlrpc_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x555eb7fe RQF_MDS_HSM_STATE_SET +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x588035b4 RMF_UPDATE_REPLY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x58f36f3c sptlrpc_cli_enlarge_reqbuf +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x595ab175 lustre_swab_obd_quotactl +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x596582bf RMF_GETINFO_VALLEN +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x596d3c66 lustre_pack_request +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5a057439 interval_search +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5a5aa795 sptlrpc_enc_pool_get_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5aae9bc5 ptlrpc_buf_need_swab +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5af0d02a ldlm_lock_dump_handle +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5b6ba895 lustre_packed_msg_size +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5bd3dc7d sptlrpc_get_bulk_checksum +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5c0cdd7b __ptlrpc_free_bulk +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5c62dfe7 lustre_pack_reply_flags +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5c6a3a83 RQF_SEQ_QUERY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5ca1b491 lustre_swab_close_data +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5caae213 ptlrpc_next_xid +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5cd6f3c9 ldlm_cancel_resource_local +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5e0b19b1 RMF_CLUUID +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5e2b7558 lustre_msghdr_get_flags +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5e53fadb ldlm_pool_get_slv +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5e6f435d RQF_OST_BRW_READ +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5e80f899 RQF_LLOG_ORIGIN_HANDLE_READ_HEADER +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5ec3284d RQF_MDS_HSM_CT_UNREGISTER +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5ef831ee lustre_msg_get_handle +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5f96ccdd ptlrpc_connection_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5fc9a455 RMF_CLOSE_DATA +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x602cfa14 ptlrpc_set_add_new_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6042bc15 RQF_MDS_REINT_RENAME +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x604e2505 RMF_SWAP_LAYOUTS +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x607ec932 lustre_msg_set_buflen +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x60cd26ad RQF_MDS_REINT_CREATE_SYM +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x60ce2292 client_import_del_conn +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x60d08bc5 ldlm_lock_allow_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x61646e1b RQF_MDS_SWAP_LAYOUTS +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x618ad203 RQF_OST_GET_INFO_LAST_FID +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x61dfdf3f sptlrpc_sec_destroy +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x62aaae3f RQF_MDS_HSM_REQUEST +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6315dd4c RMF_LLOGD_BODY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6352a62d ldlm_get_ref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6436dcae req_capsule_other_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x647b6e48 lustre_swab_ldlm_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x653723dc RMF_LOGCOOKIES +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x65758d8e ptlrpc_pinger_add_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x657b00b7 ptlrpc_init_rq_pool +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x683243bf ptlrpc_set_next_timeout +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x685eeaba RMF_DLM_GL_DESC +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x68cb2541 interval_is_overlapped +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x68e8280c ptlrpcd_alloc_work +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x68f49e5e ptlrpc_expired_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6912990a RQF_OST_QUOTACHECK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x696ba811 lustre_msg_get_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x69c9f04d RQF_MDS_REINT_LINK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6a3785c9 RMF_EADATA +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6b642fdb ptlrpc_request_bufs_pack +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6c57bbf6 dump_obdo +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6c98d85d req_capsule_client_dump +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6d72828c sptlrpc_conf_log_update_end +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6d7931cc RQF_UPDATE_OBJ +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6e6f8a17 sptlrpc_gc_del_sec +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6ed20499 ldlm_revalidate_lock_handle +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6efa82b0 RQF_MGS_TARGET_REG +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6f01996f client_obd_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6f484248 ldlm_namespace_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6f6dc736 lustre_swab_mdt_remote_perm +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6fb6fbb9 ldlm_lock_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6fb92092 sptlrpc_flavor2name_bulk +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x702d30c6 _ldlm_lock_debug +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x703538e4 lustre_swab_hsm_current_action +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x71934de3 sptlrpc_svc_ctx_invalidate +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x723d43b6 sptlrpc_rule_set_dump +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x725a892c RQF_MDS_REINT_OPEN +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x72b4e02f ptlrpc_hpreq_handler +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x72ee883d ptlrpc_invalidate_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x730c3970 ptlrpcd_wake +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x73433ec6 req_capsule_client_swab_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x73e4e5c9 ptlrpc_add_rqs_to_pool +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x743cb2a1 ldlm_register_intent +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x74840056 lustre_msg_set_status +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x759f2cc7 ptlrpc_at_set_req_timeout +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x75a2c40d ldlm_put_ref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x76b728e5 lustre_swab_update_buf +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x76c0b24f ldlm_lock_allow_match_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7773ac24 unlock_res_and_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x778317da lustre_free_reply_state +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x77840c82 sptlrpc_rule_set_choose +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x781ef3f8 ptlrpc_unregister_service +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x78bf9136 lustre_swab_ldlm_lock_desc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7a832f10 RMF_CONN +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7b158da4 lustre_swab_ldlm_request +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7bbf8001 RMF_MDT_BODY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7c25befe ldlm_blocking_ast +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7c4c6107 RQF_LDLM_CONVERT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7d1ecd7f RQF_LDLM_INTENT_LAYOUT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7d41a8b9 RQF_QUOTA_DQACQ +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7d952b71 ptlrpc_unpack_req_msg +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7dc0e7cd RMF_QUOTA_BODY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7dfb3c18 lustre_msg_clear_flags +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7e28620a req_capsule_client_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7e34cf34 sptlrpc_cli_unwrap_bulk_write +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7e98a96a req_capsule_server_swab_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7ed48ef3 __ldlm_handle2lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7f13e64d sptlrpc_cli_ctx_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7f4925d8 interval_expand +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7f4c99b1 ldlm_expired_completion_wait +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7f5a1cc7 lustre_msg_set_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7f6d2357 lustre_msg_is_v1 +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7faf3a0c ldlm_completion_ast +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8066b2b0 ptlrpc_unpack_rep_msg +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x80a9e8c3 lustre_msg_get_last_xid +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x80ecb4e3 RMF_MDS_HSM_CURRENT_ACTION +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x817d7f1f lustre_msg_add_flags +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x826d3c4f RQF_LDLM_GL_CALLBACK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x837efb00 RMF_NAME +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x83930c2a lprocfs_rd_pinger_recov +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8441fc0e ptlrpc_lprocfs_brw +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x85135801 RMF_DLM_LVB +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x851ea134 sptlrpc_register_policy +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x85a6d400 ldlm_resource_putref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x85a9e0d8 RMF_FID +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x85eecf67 sptlrpc_get_hash_alg +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x863db6eb RMF_HSM_USER_STATE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x86fa8c3b ldlm_cli_convert +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8760beaf lustre_swab_ldlm_policy_data +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x876c2551 RMF_GETINFO_KEY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x87bf7b3c sptlrpc_get_next_secid +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8872f3d2 RMF_SETINFO_KEY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x88fff52d RMF_CAPA2 +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x89f9edf7 RQF_MDS_REINT_SETXATTR +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8a1ea476 lustre_swab_hsm_state_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8a1fc08e sptlrpc_cli_unwrap_bulk_read +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8a257736 RQF_MDS_HSM_STATE_GET +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8a4345b1 ptlrpc_set_add_cb +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8ac440fa ptlrpc_uuid_to_connection +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8b854254 lustre_swab_mgs_config_res +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8bc77b83 ptlrpc_send_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8c159e13 ptlrpc_cleanup_imp +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8c37439a ptlrpc_unregister_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8cb71d4b RQF_MDS_REINT_CREATE_SLAVE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8d26f6c5 ptlrpc_abort_inflight +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8d77ea75 lustre_msg_set_flags +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8da3841a ldlm_namespace_new +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8da3fca7 lustre_msg_add_version +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8e9abe4d RMF_GENERIC_DATA +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8f0a3b70 lprocfs_wr_evict_client +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8f0aceac RQF_MDS_HSM_ACTION +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8fe74ce8 ptlrpc_nrs_policy_register +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8fec0451 lustre_msg_get_limit +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x919c4ce3 RMF_OBD_ID +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x91cf58d3 RQF_MDS_PIN +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9228392f lustre_swab_mdt_body +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x937b1ee0 lustre_swab_mdt_ioepoch +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x939f52aa req_capsule_server_sized_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9476a4ee ldlm_namespace_foreach +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9551a601 ptlrpc_wake_delayed +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9553c633 RQF_LDLM_INTENT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x95d08f0c lustre_swab_mgs_target_info +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9660ace0 RMF_FLD_MDFLD +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x967bfd52 RQF_OBD_PING +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9787f8e3 sptlrpc_sec_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x97916181 ldlm_pool_del +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9798f2f1 RQF_MDS_GETATTR +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x980fcfdc ptlrpc_connection_addref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x98db4c16 sptlrpc_cli_ctx_wakeup +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9999cf7a dump_ost_body +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9a22cf7c ptlrpc_request_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9a258886 RQF_MDS_GETSTATUS +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9a6f2f6d lustre_msg_set_opc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9abbc279 ldlm_lock_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9b88f6ce RMF_NIOBUF_REMOTE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9b891716 llog_initiator_connect +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9bb5198b RQF_MDS_CLOSE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9bbfe222 ldlm_destroy_flock_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9d2e7e92 req_capsule_server_sized_swab_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9d7ea314 sptlrpc_pack_user_desc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9db75fc5 ptlrpc_req_finished +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9e3b38e9 lprocfs_wr_ping +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9f946575 ldlm_reprocess_all_ns +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9fb088f1 lustre_swab_lov_mds_md +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa10f0d3d RMF_UPDATE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa149d596 ptlrpc_obd_ping +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa163f4c3 dump_rniobuf +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa22226d9 sptlrpc_conf_client_adapt +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa2244636 RQF_MDS_GETATTR_NAME +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa22c0086 ldlm_error2errno +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa25eb143 ptlrpc_replay_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa3d2a6ee RMF_CAPA1 +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa47787ef RMF_PTLRPC_BODY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa4a2d089 RQF_OST_PUNCH +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa4bea5ef lustre_swab_lmv_user_md +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa5458dad ldlm_lock_decref_and_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa5880075 ldlm_errno2error +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa598b30e ptlrpc_check_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa66888dd ptlrpcd_add_rqset +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa6c436ca RQF_MDS_WRITEPAGE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa7d55cc3 RQF_MDS_REINT_CREATE_RMT_ACL +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa7e360b1 RMF_OBD_IOOBJ +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa7ec567d RMF_CONNECT_DATA +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa86590ad ldlm_cli_cancel_unused_resource +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa9704f80 lustre_msg_get_last_committed +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa9c4658e lustre_swab_lov_user_md_v3 +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa9edf09d RQF_OBD_IDX_READ +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xab3f825b ptlrpcd_add_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xacd6a7d7 lustre_swab_ost_last_id +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xaddc3979 lustre_swab_lustre_capa_key +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xae6f857d ptlrpc_resend +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xae893c5e ptlrpc_req_xid +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xae9de7f4 ptlrpc_add_timeout_client +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xaf4e9658 RQF_MDS_SYNC +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xaf50a0d6 RMF_HSM_STATE_SET +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb0751fa4 RQF_LLOG_ORIGIN_HANDLE_DESTROY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb193a67c lock_res_and_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb1b43d8a dump_rcs +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb27c2374 lustre_msg_get_jobid +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb291473d lustre_msg_early_size +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb2d72e0e ldlm_pool_get_clv +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb30b9577 ldlm_prep_elc_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb34a2f06 ptlrpc_lprocfs_unregister_obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb44df990 ptlrpc_init_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb49200c9 req_capsule_server_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb4a7ecf3 lustre_msg_add_op_flags +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb512ebc2 sptlrpc_parse_flavor +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb61cb95a RQF_MDS_GETXATTR +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb6836fe1 req_capsule_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb68476df interval_erase +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb6aafd03 RQF_MDS_DONE_WRITING +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb7537e1a ldlm_prep_enqueue_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb7b38189 RMF_MDT_MD +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb7fa3cc8 RMF_LLOG_LOG_HDR +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb903634e RQF_OST_CONNECT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb94ced94 client_import_find_conn +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb9b631cf lustre_swab_mgs_config_body +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb9d3c25c req_capsule_get_size +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbaa76097 lustre_msg_string +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbb81677a ptlrpc_prep_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbc1370dc lustre_shrink_msg +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbd2d0693 ldlm_init_flock_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbd83bc44 RQF_OBD_SET_INFO +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbdfe0dc7 sptlrpc_enc_pool_put_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbe47bc7e ping_evictor_start +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbef769cc RQF_CONNECT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbf98b86f RQF_MDS_QUOTACHECK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbffd4313 RQF_OST_BRW_WRITE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc06c4670 lustre_msg_get_versions +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc0867da7 RMF_REC_REINT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc0cdf55e RMF_MGS_SEND_PARAM +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc2986d28 lustre_swab_ldlm_res_id +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc2b1af57 RQF_MGS_SET_INFO +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc2be922a RMF_SYMTGT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc35124ca client_connect_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc559a634 RMF_LAYOUT_INTENT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc5f4bae2 ptlrpc_reconnect_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc60a60e1 RQF_OST_STATFS +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc694be4b RQF_LLOG_ORIGIN_HANDLE_PREV_BLOCK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc6b774e9 ldlm_blocking_ast_nocheck +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc763fabc sptlrpc_process_config +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc78a5464 ptlrpc_free_rq_pool +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc79b9c67 ldlm_pools_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc7ca8257 RQF_MDS_REINT_SETATTR +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc7e47564 ptlrpc_interrupted_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc8f586a9 ptlrpc_connection_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc9279c08 client_import_add_conn +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc9eb6ae3 ptlrpc_queue_wait +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xca5a81ec ptlrpc_pinger_ir_down +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xcb16107d ptlrpc_set_wait +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xcb2cc0cf lustre_swab_lquota_lvb +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xcb2ceaff sptlrpc_secflags2str +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xcb9faff1 ptlrpc_set_add_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xcbd2efba ldlm_lock_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xcc5cee48 ptlrpc_start_threads +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xce1a689b sptlrpc_enc_pool_add_user +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xce212360 ptlrpc_commit_replies +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xce5b7efc sptlrpc_gc_add_ctx +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xce86066d lustre_msg_set_slv +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xceb81fb6 ldlm_lock_convert +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xcec513c9 RQF_MDS_UNPIN +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xced015be sptlrpc_rule_set_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xcf5cf4da ldlm_lock2handle +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xcf9963db lustre_msg_get_op_flags +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xcf9aab6a RQF_MDS_DISCONNECT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd25e19b9 ldlm_cli_enqueue_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd2983334 lustre_swab_swap_layouts +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd2e0d4eb lustre_msg_get_opc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd305299c ldlm_flock_completion_ast +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd3dae408 ldlm_it2str +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd67a5d7b lustre_swab_update_reply_buf +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd69e0a27 RQF_MDS_IS_SUBDIR +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd6c3ebfb RMF_FIEMAP_KEY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd758d6a4 ldlm_pool_set_limit +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd7910326 lustre_swab_obd_statfs +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd8b91b3e lustre_swab_lov_desc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd8ccb120 client_destroy_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd8f06300 RQF_MDS_HSM_PROGRESS +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd8f9aa1f req_capsule_server_grow +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd9561861 RQF_LDLM_INTENT_OPEN +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xdb1fb0a2 RQF_MDS_REINT_CREATE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xdb9d5a6a lustre_swab_niobuf_remote +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xdcdb682c target_send_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xdd0ffb04 sptlrpc_flavor2name +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xdd30d7bf RMF_ACL +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xddc40a85 lustre_msg_get_flags +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xde12d36b RMF_MDS_HSM_ARCHIVE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xde3117a7 target_pack_pool_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xde555d70 sptlrpc_enc_pool_del_user +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xdee87192 sptlrpc_conf_log_update_begin +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xdf13a96f ldlm_cli_enqueue +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xdf701ae7 lustre_swab_fid2path +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe0146595 ptlrpc_buf_set_swabbed +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe0cc694c RQF_LLOG_ORIGIN_HANDLE_NEXT_BLOCK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe1497a13 do_set_info_async +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe1dd71a3 ldlm_pool_get_limit +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe236e3b3 sptlrpc_sec_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe27040f4 sptlrpc_cli_ctx_expire +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe2c29d77 ldlm_pool_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe2cd91d5 sptlrpc_target_update_exp_flavor +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe33ef539 ptlrpc_retain_replayable_request +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe40e0a50 lustre_msg_get_transno +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe579e428 sptlrpc_target_sec_part +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe57bd972 sptlrpc_current_user_desc_size +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe5e8169b lustre_errno_ntoh +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe643998e RQF_OST_SETATTR +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe6f0dc96 RQF_OST_CREATE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe7062b5f RMF_U32 +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe7363e23 ptlrpc_error +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe7512278 ptlrpcd_addref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe81e969b ptlrpc_restart_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe85b6da3 lustre_swab_obdo +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe90e3fc5 ptlrpc_request_committed +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe95fde92 __ptlrpc_prep_bulk_page +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xea0deb5e ldlm_cli_cancel_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xea3ae2be req_capsule_server_pack +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xeabac4fc sptlrpc_rule_set_merge +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xebb64e68 req_layout_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xec226f66 ping_evictor_stop +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xec939a00 RQF_MDS_REINT_UNLINK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xecace5c1 RQF_OST_GET_INFO_GENERIC +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xecd037e8 sec2target_str +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xed1c10d6 ptlrpc_connection_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xed51e8fb req_capsule_field_present +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xedcb740d sptlrpc_name2flavor_base +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xef1aeca9 RMF_FLD_OPC +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xef7a7957 req_capsule_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf0241d6e lustre_swab_hsm_progress_kernel +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf0790458 ptlrpc_request_alloc_pool +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf0d52b5f ptlrpc_pinger_suppress_pings +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf1300275 _sptlrpc_enlarge_msg_inplace +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf277c125 RQF_OST_GET_INFO_FIEMAP +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf27d49dc sptlrpc_target_choose_flavor +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf31459df ldlm_cli_update_pool +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf35f132b lustre_swab_ldlm_resource_desc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf3a8bec8 ptlrpc_prep_req_pool +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf3d44370 RQF_OST_DESTROY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf43540b9 lustre_swab_mgs_nidtbl_entry +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf45085e1 sptlrpc_conf_log_stop +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf55c033b RMF_MGS_CONFIG_BODY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf584a16b sptlrpc_part2name +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf596e9ae sptlrpc_conf_log_start +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf607fc23 sptlrpc_flavor2name_base +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf617ab8a lustre_msg_get_conn_cnt +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf697b756 ldlm_dump_all_namespaces +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf7408f84 lustre_swab_hsm_request +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf7ba40c0 RMF_MDS_HSM_PROGRESS +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf7bc84f5 req_capsule_init_area +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf7cef16b ldlm_namespace_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf7d18bf4 sptlrpc_target_export_check +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf85cb27e sptlrpc_parse_rule +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf870fed9 RQF_LDLM_GL_DESC_CALLBACK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf903f797 client_obd_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf9051bd6 RQF_QC_CALLBACK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf94e41e0 deuuidify +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf95e6025 ptlrpc_send_error +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf973aa93 lustre_swab_lov_user_md_v1 +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf9ee11e2 lustre_msg_set_last_committed +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf9f72dfc RMF_TGTUUID +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xfa51688d interval_insert +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xfa6fcb6c ptlrpc_pinger_del_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xfaf376b8 ldlm_pool_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xfb161db5 ptlrpc_request_addref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xfb444a98 ptlrpc_prep_fcset +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xfb9df8ba sptlrpc_gc_add_sec +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xfc2fa83f ptlrpc_del_timeout_client +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xfd148bf8 RMF_LDLM_INTENT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xfe365444 req_capsule_shrink +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xfe4f14fd ldlm_get_enq_timeout +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xfe60f5c8 ptlrpc_req_finished_with_imp_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xfeb6612d sptlrpc_lprocfs_cliobd_attach +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xff02a0e9 ldlm_lock_set_data +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xff2b5341 ptlrpc_prep_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xffc807e8 sptlrpc_unpack_user_desc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xffe29c3f RQF_LDLM_ENQUEUE +EXPORT_SYMBOL drivers/staging/media/cxd2099/cxd2099 0x8d3ecfc5 cxd2099_attach +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x0ae39662 notify_wx_assoc_event +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x0bff1eba rtllib_wx_set_auth +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x11cff0a7 rtllib_wx_get_freq +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x11f0efdb rtllib_EnableIntelPromiscuousMode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x1cd02f93 rtllib_wx_get_wap +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x25c00e75 rtllib_sta_ps_send_null_frame +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x2d5fd118 rtllib_wx_get_name +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x2f38bb0c rtllib_wx_set_freq +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x3c95e8a1 rtllib_softmac_start_protocol +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x450ff160 rtllib_wx_set_encode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x46283985 rtllib_rx +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x4c93bee1 rtllib_wx_set_rate +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x5a040310 rtllib_wx_set_scan +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x5e9d9667 rtllib_wx_set_encode_ext +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x64f348bb rtllib_wx_get_scan +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x6729a7de rtllib_wx_set_rts +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x7264f54a rtllib_wx_get_rate +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x78dd8af4 RemovePeerTS +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x85ec5f74 rtllib_wx_set_wap +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x8ee0cb12 free_rtllib +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x904188f0 rtllib_softmac_stop_protocol +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x91bd1123 rtllib_wpa_supplicant_ioctl +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x9242d4bc rtllib_DisableIntelPromiscuousMode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x9253aa67 rtllib_wx_set_rawtx +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x93416e6a dot11d_init +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x98b705f3 Dot11d_Channelmap +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x9abd90e2 rtllib_wx_get_mode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x9bb1cb8c rtllib_start_send_beacons +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x9ce5a838 rtllib_stop_scan +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xa44adb49 rtllib_wx_set_mode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xa5276716 rtllib_wx_get_essid +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xa5bbb442 rtllib_wx_set_mlme +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xa75c34d5 rtllib_wx_get_power +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xb07b342f rtllib_MgntDisconnect +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xb2709fb2 rtllib_act_scanning +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xbe1420f2 rt_global_debug_component +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xbf28e8fc rtllib_xmit +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xc5aa0e5f rtllib_start_scan_syncro +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xd602a321 HT_update_self_and_peer_setting +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xd7f91a2f rtllib_ps_tx_ack +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xdc5a11ff rtllib_stop_scan_syncro +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xdf78f620 rtllib_wlan_frequencies +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xe387d80a rtllib_legal_channel +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xe41dea3d rtllib_wx_set_essid +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xe666b9fe rtllib_wx_set_power +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xe9f232ad rtllib_wx_get_encode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xf401478f rtllib_reset_queue +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xf5830ddc rtllib_wx_set_gen_ie +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xf90aeb82 rtllib_stop_send_beacons +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xfa552d1f alloc_rtllib +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xfc4ee630 rtllib_get_beacon +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xfe15d739 rtllib_wx_get_rts +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x00148758 ieee80211_wx_set_wap_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x041ee992 ieee80211_is_shortslot_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x148c3197 ieee80211_wpa_supplicant_ioctl_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x1873e5d8 ieee80211_ps_tx_ack_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x27f99d40 ieee80211_start_scan_syncro_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x2c45fba5 ieee80211_wx_set_rts_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x36435696 ieee80211_txb_free_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x42153941 ieee80211_wx_set_rawtx_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x442ee59d ieee80211_stop_send_beacons_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x4788fc01 ieee80211_wx_set_power_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x48fa8485 ieee80211_wx_get_essid_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x4a4ce339 ieee80211_wx_get_wap_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x4af17286 ieee80211_wx_set_freq_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x4e2438ca ieee80211_softmac_xmit_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x50166b5b ieee80211_wx_set_rate_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x50df6ffd ieee80211_wx_set_scan_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x53919ca3 Dot11d_Init +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x5a1caf47 ieee80211_softmac_start_protocol_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x5b9e646b ieee80211_wx_get_encode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x5d4922e7 ieee80211_softmac_scan_syncro_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x661d9fc4 ieee80211_wx_get_rts_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x6a206657 ieee80211_wx_get_scan_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x6ae962f1 ieee80211_wx_get_rate_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x700e7b2c ieee80211_wx_get_freq_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x71b149fe ieee80211_wx_get_power_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x76aab253 ieee80211_wx_set_encode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x784701f0 ieee80211_send_probe_requests_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x7894acde ieee80211_wx_get_name_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x7b953b1b ieee80211_reset_queue_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x7ec3317a ieee80211_wx_set_essid_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x81744201 ieee80211_wake_queue_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x8659823a ToLegalChannel +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x8fb96345 ieee80211_wx_set_gen_ie_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x92e3777f ieee80211_softmac_stop_protocol_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x957bb08f ieee80211_wx_set_auth_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x99826027 ieee80211_disassociate_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x9e5e6afb ieee80211_wx_get_encode_ext_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xac395595 ieee80211_wx_set_mlme_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xb350954d IsLegalChannel +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xb421c94d ieee80211_start_send_beacons_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xb7d24cc3 ieee80211_stop_queue_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xb8aa0806 DOT11D_ScanComplete +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xc370a43e ieee80211_wlan_frequencies_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xc59beac7 ieee80211_wx_get_mode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xc685c9ef ieee80211_rx_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xc902944e ieee80211_stop_scan_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xcdb3bf7d Dot11d_UpdateCountryIe +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xce54440f SendDisassociation_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xcf4c2491 ieee80211_is_54g_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xdc305cb5 ieee80211_wx_set_encode_ext_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xdcc1829b ieee80211_get_beacon_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xe45d4e6c DOT11D_GetMaxTxPwrInDbm +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xe9b0e09e Dot11d_Reset +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xf45e3c26 notify_wx_assoc_event_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xf4a358e0 HTUpdateSelfAndPeerSetting +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xfc075661 ieee80211_rx_mgt_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xff64e36d ieee80211_wx_set_mode_rsl +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x0281f151 iscsit_set_unsoliticed_dataout +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x06bbce04 iscsit_sequence_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x0cc0124b iscsit_unregister_transport +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x2500c3ce iscsit_build_rsp_pdu +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x357f32b3 iscsit_process_scsi_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x3afed6cd iscsit_release_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x3d1b639c iscsit_handle_logout_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x3d9e6b30 iscsit_process_nop_out +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x75cb3eb5 iscsit_build_text_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x799cf9b6 iscsit_build_nopin_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x80e08834 iscsit_build_reject +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x82bd3270 iscsit_find_cmd_from_itt +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x8e987fbc iscsit_logout_post_handler +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x90e1d3e0 iscsit_register_transport +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x95394040 iscsit_allocate_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x964f81f7 iscsit_tmr_post_handler +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x989d2b46 iscsit_setup_scsi_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x9ef442e0 iscsit_handle_task_mgt_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xa052aa57 iscsit_cause_connection_reinstatement +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xaa94e1f5 iscsit_check_dataout_hdr +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xaf9f2c68 iscsit_build_logout_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xb8b57fb6 iscsit_increment_maxcmdsn +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xc2303ffe iscsit_build_task_mgt_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xc38d4f5c iscsit_process_text_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xd9bc880f iscsit_check_dataout_payload +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xdb3165a8 iscsit_setup_nop_out +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xddbb92bc iscsit_stop_dataout_timer +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xfe72d142 iscsit_setup_text_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x02de3b18 transport_set_vpd_ident +EXPORT_SYMBOL drivers/target/target_core_mod 0x02f369cc __transport_register_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x04112279 transport_kunmap_data_sg +EXPORT_SYMBOL drivers/target/target_core_mod 0x05fc67e4 target_complete_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x075baa05 transport_check_aborted_status +EXPORT_SYMBOL drivers/target/target_core_mod 0x206e8eb6 target_sess_cmd_list_set_waiting +EXPORT_SYMBOL drivers/target/target_core_mod 0x2f5a261b transport_deregister_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x32de1115 transport_kmap_data_sg +EXPORT_SYMBOL drivers/target/target_core_mod 0x32e4377e target_lun_is_rdonly +EXPORT_SYMBOL drivers/target/target_core_mod 0x34e139e6 target_put_sess_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x373a4083 target_submit_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x3ba1776b transport_lookup_tmr_lun +EXPORT_SYMBOL drivers/target/target_core_mod 0x3bc7a10f target_submit_tmr +EXPORT_SYMBOL drivers/target/target_core_mod 0x3c5f9d48 sbc_dif_copy_prot +EXPORT_SYMBOL drivers/target/target_core_mod 0x3f6172cf target_setup_cmd_from_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0x4dabd928 target_get_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x52357943 sbc_get_device_type +EXPORT_SYMBOL drivers/target/target_core_mod 0x5375248d sbc_attrib_attrs +EXPORT_SYMBOL drivers/target/target_core_mod 0x562c3ac7 target_register_template +EXPORT_SYMBOL drivers/target/target_core_mod 0x5c4f7bcc core_alua_check_nonop_delay +EXPORT_SYMBOL drivers/target/target_core_mod 0x5d0241f4 passthrough_attrib_attrs +EXPORT_SYMBOL drivers/target/target_core_mod 0x5f7d4768 transport_handle_cdb_direct +EXPORT_SYMBOL drivers/target/target_core_mod 0x628b0e48 target_put_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x65b54fda transport_init_session_tags +EXPORT_SYMBOL drivers/target/target_core_mod 0x65f7f7eb target_wait_for_sess_cmds +EXPORT_SYMBOL drivers/target/target_core_mod 0x6bf5a3f7 passthrough_parse_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0x6c8e3c60 core_tpg_set_initiator_node_queue_depth +EXPORT_SYMBOL drivers/target/target_core_mod 0x6f357b00 transport_generic_free_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x715ef574 core_tpg_deregister +EXPORT_SYMBOL drivers/target/target_core_mod 0x74ba3fe9 transport_send_check_condition_and_sense +EXPORT_SYMBOL drivers/target/target_core_mod 0x78e848b8 sbc_parse_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0x7ad9c682 core_tpg_set_initiator_node_tag +EXPORT_SYMBOL drivers/target/target_core_mod 0x7dbada9d transport_set_vpd_ident_type +EXPORT_SYMBOL drivers/target/target_core_mod 0x7e6440a3 spc_emulate_evpd_83 +EXPORT_SYMBOL drivers/target/target_core_mod 0x851de77a sbc_dif_verify +EXPORT_SYMBOL drivers/target/target_core_mod 0x85aa880c transport_set_vpd_assoc +EXPORT_SYMBOL drivers/target/target_core_mod 0x8980ef00 target_backend_unregister +EXPORT_SYMBOL drivers/target/target_core_mod 0x91d3d581 transport_generic_handle_tmr +EXPORT_SYMBOL drivers/target/target_core_mod 0x91d8c446 target_undepend_item +EXPORT_SYMBOL drivers/target/target_core_mod 0x943b92d9 transport_generic_new_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x952830cb transport_free_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x9592fa9a target_execute_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x996d7a22 sbc_get_write_same_sectors +EXPORT_SYMBOL drivers/target/target_core_mod 0x99d4af07 transport_alloc_session_tags +EXPORT_SYMBOL drivers/target/target_core_mod 0x9a6b8723 target_unregister_template +EXPORT_SYMBOL drivers/target/target_core_mod 0x9dfc1ff1 core_tpg_register +EXPORT_SYMBOL drivers/target/target_core_mod 0x9e84f066 transport_init_session +EXPORT_SYMBOL drivers/target/target_core_mod 0xa010d1dc spc_parse_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0xb60960b1 target_depend_item +EXPORT_SYMBOL drivers/target/target_core_mod 0xb6241bef core_tmr_alloc_req +EXPORT_SYMBOL drivers/target/target_core_mod 0xbbcaa20a target_get_sess_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xbecef3ee transport_init_se_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xc61ceed9 transport_register_session +EXPORT_SYMBOL drivers/target/target_core_mod 0xc9058a27 target_submit_cmd_map_sgls +EXPORT_SYMBOL drivers/target/target_core_mod 0xcac6f16b transport_generic_request_failure +EXPORT_SYMBOL drivers/target/target_core_mod 0xcc56888c spc_emulate_inquiry_std +EXPORT_SYMBOL drivers/target/target_core_mod 0xce7dc10f target_complete_cmd_with_length +EXPORT_SYMBOL drivers/target/target_core_mod 0xd717ec7a spc_emulate_report_luns +EXPORT_SYMBOL drivers/target/target_core_mod 0xd890b5aa transport_backend_register +EXPORT_SYMBOL drivers/target/target_core_mod 0xd9dbb75c core_tpg_get_initiator_node_acl +EXPORT_SYMBOL drivers/target/target_core_mod 0xdc8b1631 core_tpg_check_initiator_node_acl +EXPORT_SYMBOL drivers/target/target_core_mod 0xdc918a39 target_nacl_find_deve +EXPORT_SYMBOL drivers/target/target_core_mod 0xee879654 transport_wait_for_tasks +EXPORT_SYMBOL drivers/target/target_core_mod 0xf01621c7 transport_set_vpd_proto_id +EXPORT_SYMBOL drivers/target/target_core_mod 0xf1cbe3d4 transport_lookup_cmd_lun +EXPORT_SYMBOL drivers/target/target_core_mod 0xf3d1b3eb transport_deregister_session_configfs +EXPORT_SYMBOL drivers/target/target_core_mod 0xfeeec6e5 target_show_dynamic_sessions +EXPORT_SYMBOL drivers/usb/class/cdc-wdm 0xd44c4ddb usb_cdc_wdm_register +EXPORT_SYMBOL drivers/usb/gadget/function/usb_f_uvc 0x92e9ebac uvc_set_trace_param +EXPORT_SYMBOL drivers/usb/gadget/libcomposite 0x2d412a22 usb_os_desc_prepare_interf_dir +EXPORT_SYMBOL drivers/usb/host/sl811-hcd 0xd3ac0fc5 sl811h_driver +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x1a0ec016 usb_wwan_close +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x317f6772 usb_wwan_port_remove +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x345a98d2 usb_wwan_write_room +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x35e69348 usb_wwan_tiocmget +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x35ece8d1 usb_wwan_open +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x7d192267 usb_wwan_chars_in_buffer +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x8b2c2c1e usb_wwan_tiocmset +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x8e0c05c8 usb_wwan_suspend +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x9bb137d3 usb_wwan_resume +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xddf0631c usb_wwan_dtr_rts +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xe36c39a6 usb_wwan_write +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xf4bab32f usb_wwan_ioctl +EXPORT_SYMBOL drivers/usb/serial/usbserial 0x2840f73b usb_serial_resume +EXPORT_SYMBOL drivers/usb/serial/usbserial 0x86868cb2 usb_serial_suspend +EXPORT_SYMBOL drivers/vhost/vringh 0x0fd987f7 vringh_abandon_user +EXPORT_SYMBOL drivers/vhost/vringh 0x14397bb5 vringh_notify_disable_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x2e91ca97 vringh_iov_pull_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x32da6f89 vringh_notify_enable_user +EXPORT_SYMBOL drivers/vhost/vringh 0x367ce26a vringh_iov_push_user +EXPORT_SYMBOL drivers/vhost/vringh 0x39c9d7a5 vringh_complete_multi_user +EXPORT_SYMBOL drivers/vhost/vringh 0x4f384f8b vringh_need_notify_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x58abf4ed vringh_init_user +EXPORT_SYMBOL drivers/vhost/vringh 0x59f824d9 vringh_getdesc_user +EXPORT_SYMBOL drivers/vhost/vringh 0x6432894b vringh_init_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x7bda5e6d vringh_iov_push_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x821e9390 vringh_iov_pull_user +EXPORT_SYMBOL drivers/vhost/vringh 0x8d080d03 vringh_need_notify_user +EXPORT_SYMBOL drivers/vhost/vringh 0x937e412c vringh_getdesc_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x95e62337 vringh_abandon_kern +EXPORT_SYMBOL drivers/vhost/vringh 0xb4b63575 vringh_notify_enable_kern +EXPORT_SYMBOL drivers/vhost/vringh 0xc578f0f7 vringh_complete_user +EXPORT_SYMBOL drivers/vhost/vringh 0xd355e031 vringh_complete_kern +EXPORT_SYMBOL drivers/vhost/vringh 0xd609393d vringh_notify_disable_user +EXPORT_SYMBOL drivers/video/backlight/lcd 0x9d2168bf lcd_device_unregister +EXPORT_SYMBOL drivers/video/backlight/lcd 0xa039cb6f lcd_device_register +EXPORT_SYMBOL drivers/video/backlight/lcd 0xcd592bb3 devm_lcd_device_unregister +EXPORT_SYMBOL drivers/video/backlight/lcd 0xf87e0826 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 0x4ab38ef2 svga_set_default_crt_regs +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x5e77c9ca svga_tilecopy +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x6e4adb1e svga_check_timings +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x79557463 svga_tileblit +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x80f24d95 svga_wcrt_multi +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x8de63fb4 svga_set_timings +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x965c6f16 svga_tilecursor +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xa8803093 svga_get_caps +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xd1429fca svga_wseq_multi +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xd22ca511 svga_set_default_atc_regs +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xdebf97be svga_tilefill +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xe28d2a49 svga_set_default_gfx_regs +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xef774f5d svga_compute_pll +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xf2db5956 svga_match_format +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xf8a8e174 svga_get_tilemax +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xff326d26 svga_settile +EXPORT_SYMBOL drivers/video/fbdev/core/syscopyarea 0xf88e27d6 sys_copyarea +EXPORT_SYMBOL drivers/video/fbdev/core/sysfillrect 0xa5953e65 sys_fillrect +EXPORT_SYMBOL drivers/video/fbdev/core/sysimgblt 0x90ff427e 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 0x614b9011 cyber2000fb_attach +EXPORT_SYMBOL drivers/video/fbdev/cyber2000fb 0xb39f68d1 cyber2000fb_enable_extregs +EXPORT_SYMBOL drivers/video/fbdev/matrox/g450_pll 0x3cafcdd7 matroxfb_g450_setclk +EXPORT_SYMBOL drivers/video/fbdev/matrox/g450_pll 0x5889fff3 matroxfb_g450_setpll_cond +EXPORT_SYMBOL drivers/video/fbdev/matrox/g450_pll 0xf44a10bd g450_mnp2f +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_DAC1064 0x2e5fb713 matrox_G100 +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_DAC1064 0x7c3cbad8 DAC1064_global_init +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_DAC1064 0xb93f9d07 matrox_mystique +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_DAC1064 0xe82272b8 DAC1064_global_restore +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_Ti3026 0x9223ee40 matrox_millennium +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_accel 0xc9a8114f matrox_cfbX_init +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_base 0x40b86192 matroxfb_wait_for_sync +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_base 0x6469a771 matroxfb_enable_irq +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_base 0x9ee0e9fd matroxfb_register_driver +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_base 0xcd1c1a71 matroxfb_unregister_driver +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_g450 0x23ab0a3b matroxfb_g450_connect +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_g450 0x4207e084 matroxfb_g450_shutdown +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0x25cf8049 matroxfb_PLL_calcclock +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0x69819370 matroxfb_DAC_out +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0xac0b46f8 matroxfb_DAC_in +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0xcdc90c64 matroxfb_var2my +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0xd0fc294c matroxfb_read_pins +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0xe347694a matroxfb_vgaHWrestore +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0xeaf0061e matroxfb_vgaHWinit +EXPORT_SYMBOL drivers/video/fbdev/mb862xx/mb862xxfb 0x233d6cd1 mb862xxfb_init_accel +EXPORT_SYMBOL drivers/video/fbdev/sis/sisfb 0x3037658e sis_malloc +EXPORT_SYMBOL drivers/video/fbdev/sis/sisfb 0x454a3cf0 sis_free +EXPORT_SYMBOL drivers/video/vgastate 0x686de290 restore_vga +EXPORT_SYMBOL drivers/video/vgastate 0xe7a2620e save_vga +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0x40e11485 w1_ds2760_write +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0xa3f8524c w1_ds2760_read +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0xd27e0e76 w1_ds2760_store_eeprom +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0xecfd781e w1_ds2760_recall_eeprom +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2780 0x19d10950 w1_ds2780_eeprom_cmd +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2780 0x33692737 w1_ds2780_io +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2781 0x90c23f8a w1_ds2781_eeprom_cmd +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2781 0xc9cb1806 w1_ds2781_io +EXPORT_SYMBOL drivers/w1/wire 0x2ca69acf w1_remove_master_device +EXPORT_SYMBOL drivers/w1/wire 0x7af82117 w1_register_family +EXPORT_SYMBOL drivers/w1/wire 0x8a420aa7 w1_add_master_device +EXPORT_SYMBOL drivers/w1/wire 0xc3afbec8 w1_unregister_family +EXPORT_SYMBOL fs/configfs/configfs 0x159f31b7 config_item_set_name +EXPORT_SYMBOL fs/configfs/configfs 0x359b6b7a configfs_register_subsystem +EXPORT_SYMBOL fs/configfs/configfs 0x36c68fc4 config_item_get +EXPORT_SYMBOL fs/configfs/configfs 0x4147359e config_group_init +EXPORT_SYMBOL fs/configfs/configfs 0x6a401cf8 config_item_put +EXPORT_SYMBOL fs/configfs/configfs 0x6f9200f9 config_item_init_type_name +EXPORT_SYMBOL fs/configfs/configfs 0x753e2740 configfs_undepend_item +EXPORT_SYMBOL fs/configfs/configfs 0xa08aee2d config_group_find_item +EXPORT_SYMBOL fs/configfs/configfs 0xc9761082 configfs_depend_item +EXPORT_SYMBOL fs/configfs/configfs 0xf5dc6312 configfs_unregister_subsystem +EXPORT_SYMBOL fs/configfs/configfs 0xfd7c5f0f config_group_init_type_name +EXPORT_SYMBOL fs/exofs/libore 0x1785420e ore_create +EXPORT_SYMBOL fs/exofs/libore 0x1c9e6ed2 ore_truncate +EXPORT_SYMBOL fs/exofs/libore 0x28806871 ore_verify_layout +EXPORT_SYMBOL fs/exofs/libore 0x4527e170 ore_calc_stripe_info +EXPORT_SYMBOL fs/exofs/libore 0x69e8093c ore_read +EXPORT_SYMBOL fs/exofs/libore 0x71c184c6 ore_get_rw_state +EXPORT_SYMBOL fs/exofs/libore 0x890feda6 ore_remove +EXPORT_SYMBOL fs/exofs/libore 0x9adb42f3 ore_write +EXPORT_SYMBOL fs/exofs/libore 0xa3d2a634 g_attr_logical_length +EXPORT_SYMBOL fs/exofs/libore 0xb342437e extract_attr_from_ios +EXPORT_SYMBOL fs/exofs/libore 0xca5458ad ore_check_io +EXPORT_SYMBOL fs/exofs/libore 0xe1a91c15 ore_put_io_state +EXPORT_SYMBOL fs/exofs/libore 0xe67b5778 ore_get_io_state +EXPORT_SYMBOL fs/fscache/fscache 0x09d4ea3f fscache_obtained_object +EXPORT_SYMBOL fs/fscache/fscache 0x0af368bf fscache_object_retrying_stale +EXPORT_SYMBOL fs/fscache/fscache 0x1096f9c7 __fscache_acquire_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x20513033 __fscache_write_page +EXPORT_SYMBOL fs/fscache/fscache 0x276d5639 __fscache_check_page_write +EXPORT_SYMBOL fs/fscache/fscache 0x306c8020 __fscache_uncache_page +EXPORT_SYMBOL fs/fscache/fscache 0x39da8820 __fscache_alloc_page +EXPORT_SYMBOL fs/fscache/fscache 0x40206c2b fscache_enqueue_operation +EXPORT_SYMBOL fs/fscache/fscache 0x4515782e fscache_add_cache +EXPORT_SYMBOL fs/fscache/fscache 0x4cfd9de3 __fscache_attr_changed +EXPORT_SYMBOL fs/fscache/fscache 0x4d4fb404 __fscache_wait_on_invalidate +EXPORT_SYMBOL fs/fscache/fscache 0x4f992a35 __fscache_readpages_cancel +EXPORT_SYMBOL fs/fscache/fscache 0x50111895 fscache_fsdef_index +EXPORT_SYMBOL fs/fscache/fscache 0x625b5dca fscache_mark_page_cached +EXPORT_SYMBOL fs/fscache/fscache 0x666702f2 fscache_object_lookup_negative +EXPORT_SYMBOL fs/fscache/fscache 0x688d673b __fscache_read_or_alloc_page +EXPORT_SYMBOL fs/fscache/fscache 0x6b04d317 __fscache_check_consistency +EXPORT_SYMBOL fs/fscache/fscache 0x72453d95 fscache_cache_cleared_wq +EXPORT_SYMBOL fs/fscache/fscache 0x74530ecd fscache_op_debug_id +EXPORT_SYMBOL fs/fscache/fscache 0x7aaab62d fscache_init_cache +EXPORT_SYMBOL fs/fscache/fscache 0x7b6ec0ab __fscache_maybe_release_page +EXPORT_SYMBOL fs/fscache/fscache 0x7bb8f30d __fscache_unregister_netfs +EXPORT_SYMBOL fs/fscache/fscache 0x89edae7c fscache_object_destroy +EXPORT_SYMBOL fs/fscache/fscache 0x9425748c __fscache_enable_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x9cd832f8 __fscache_register_netfs +EXPORT_SYMBOL fs/fscache/fscache 0xa79bd3b2 fscache_mark_pages_cached +EXPORT_SYMBOL fs/fscache/fscache 0xaaa2ec53 __fscache_wait_on_page_write +EXPORT_SYMBOL fs/fscache/fscache 0xac4b94c2 fscache_check_aux +EXPORT_SYMBOL fs/fscache/fscache 0xae77cc85 __fscache_disable_cookie +EXPORT_SYMBOL fs/fscache/fscache 0xc3a71f9b fscache_withdraw_cache +EXPORT_SYMBOL fs/fscache/fscache 0xc8438ef4 __fscache_invalidate +EXPORT_SYMBOL fs/fscache/fscache 0xccfbc4ea fscache_op_complete +EXPORT_SYMBOL fs/fscache/fscache 0xd1e66a0a __fscache_read_or_alloc_pages +EXPORT_SYMBOL fs/fscache/fscache 0xdada660a fscache_operation_init +EXPORT_SYMBOL fs/fscache/fscache 0xdbd39205 fscache_object_init +EXPORT_SYMBOL fs/fscache/fscache 0xe314f57f fscache_object_mark_killed +EXPORT_SYMBOL fs/fscache/fscache 0xe8546d9c fscache_put_operation +EXPORT_SYMBOL fs/fscache/fscache 0xebe4040d fscache_io_error +EXPORT_SYMBOL fs/fscache/fscache 0xedf0ada8 __fscache_uncache_all_inode_pages +EXPORT_SYMBOL fs/fscache/fscache 0xef974d1c __fscache_relinquish_cookie +EXPORT_SYMBOL fs/fscache/fscache 0xfcbd8bf0 __fscache_update_cookie +EXPORT_SYMBOL fs/ocfs2/cluster/ocfs2_nodemanager 0xbfd7d7a2 o2hb_global_heartbeat_active +EXPORT_SYMBOL fs/quota/quota_tree 0x34404038 qtree_entry_unused +EXPORT_SYMBOL fs/quota/quota_tree 0x635a1916 qtree_read_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0xb89e850e qtree_write_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0xc7c01d2e qtree_release_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0xd2071739 qtree_delete_dquot +EXPORT_SYMBOL lib/cordic 0x434bfd07 cordic_calc_iq +EXPORT_SYMBOL lib/crc-ccitt 0x3771b461 crc_ccitt +EXPORT_SYMBOL lib/crc-ccitt 0x75811312 crc_ccitt_table +EXPORT_SYMBOL lib/crc-itu-t 0xd29b009f crc_itu_t_table +EXPORT_SYMBOL lib/crc-itu-t 0xf5b4a948 crc_itu_t +EXPORT_SYMBOL lib/crc7 0x66213969 crc7_be +EXPORT_SYMBOL lib/crc7 0x7a222007 crc7_be_syndrome_table +EXPORT_SYMBOL lib/crc8 0x41248eaf crc8 +EXPORT_SYMBOL lib/crc8 0xab9ad613 crc8_populate_lsb +EXPORT_SYMBOL lib/crc8 0xd4534d80 crc8_populate_msb +EXPORT_SYMBOL lib/libcrc32c 0x27000b29 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 0xacb47d2b lc_seq_dump_details +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 0xda875f8a lc_seq_printf_stats +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/lz4_compress 0xcbc5d521 lz4_compress +EXPORT_SYMBOL lib/lz4/lz4hc_compress 0x26c3aa22 lz4hc_compress +EXPORT_SYMBOL lib/raid6/raid6_pq 0x0bd662f6 raid6_gfmul +EXPORT_SYMBOL lib/raid6/raid6_pq 0x15fe0cd3 raid6_gfexp +EXPORT_SYMBOL lib/raid6/raid6_pq 0x5ba93f9d raid6_gfinv +EXPORT_SYMBOL lib/raid6/raid6_pq 0x7456cc61 raid6_empty_zero_page +EXPORT_SYMBOL lib/raid6/raid6_pq 0xce45a6f1 raid6_gfexi +EXPORT_SYMBOL lib/raid6/raid6_pq 0xd9e91f83 raid6_vgfmul +EXPORT_SYMBOL net/6lowpan/6lowpan 0x3e4bf7ff lowpan_nhc_add +EXPORT_SYMBOL net/6lowpan/6lowpan 0xde61dbb2 lowpan_nhc_del +EXPORT_SYMBOL net/802/p8022 0x79afa7ff unregister_8022_client +EXPORT_SYMBOL net/802/p8022 0xdd38b1c4 register_8022_client +EXPORT_SYMBOL net/802/p8023 0x51c56f07 make_8023_client +EXPORT_SYMBOL net/802/p8023 0xd8a718e6 destroy_8023_client +EXPORT_SYMBOL net/802/psnap 0x23dc6e18 register_snap_client +EXPORT_SYMBOL net/802/psnap 0xb6e842af unregister_snap_client +EXPORT_SYMBOL net/9p/9pnet 0x01cbbde7 p9_client_fcreate +EXPORT_SYMBOL net/9p/9pnet 0x041aacb5 p9dirent_read +EXPORT_SYMBOL net/9p/9pnet 0x09ec5e0c p9_client_mknod_dotl +EXPORT_SYMBOL net/9p/9pnet 0x0a6ba998 p9_client_statfs +EXPORT_SYMBOL net/9p/9pnet 0x0f630f6f p9stat_read +EXPORT_SYMBOL net/9p/9pnet 0x0fd3d907 p9_client_disconnect +EXPORT_SYMBOL net/9p/9pnet 0x1a37c7e9 p9_parse_header +EXPORT_SYMBOL net/9p/9pnet 0x1ba1b0bd p9_client_read +EXPORT_SYMBOL net/9p/9pnet 0x35d1e27e p9_idpool_get +EXPORT_SYMBOL net/9p/9pnet 0x37d4357e p9_client_write +EXPORT_SYMBOL net/9p/9pnet 0x3b0cff50 v9fs_register_trans +EXPORT_SYMBOL net/9p/9pnet 0x3d73a797 p9_errstr2errno +EXPORT_SYMBOL net/9p/9pnet 0x3d84869b p9_client_mkdir_dotl +EXPORT_SYMBOL net/9p/9pnet 0x44d2c2c0 p9stat_free +EXPORT_SYMBOL net/9p/9pnet 0x483c8d09 p9_client_link +EXPORT_SYMBOL net/9p/9pnet 0x4a32f724 v9fs_get_default_trans +EXPORT_SYMBOL net/9p/9pnet 0x4e982a94 p9_is_proto_dotl +EXPORT_SYMBOL net/9p/9pnet 0x5158d156 p9_client_destroy +EXPORT_SYMBOL net/9p/9pnet 0x5744036b p9_client_begin_disconnect +EXPORT_SYMBOL net/9p/9pnet 0x60894a26 p9_client_getlock_dotl +EXPORT_SYMBOL net/9p/9pnet 0x65ef1507 p9_client_unlinkat +EXPORT_SYMBOL net/9p/9pnet 0x6d85dd85 p9_release_pages +EXPORT_SYMBOL net/9p/9pnet 0x83aaa295 p9_client_cb +EXPORT_SYMBOL net/9p/9pnet 0x846590f1 v9fs_get_trans_by_name +EXPORT_SYMBOL net/9p/9pnet 0x9adcca07 p9_client_create_dotl +EXPORT_SYMBOL net/9p/9pnet 0x9b21ecc4 p9_client_renameat +EXPORT_SYMBOL net/9p/9pnet 0xa134e848 p9_client_getattr_dotl +EXPORT_SYMBOL net/9p/9pnet 0xb1e55933 p9_client_lock_dotl +EXPORT_SYMBOL net/9p/9pnet 0xb3f273e0 v9fs_unregister_trans +EXPORT_SYMBOL net/9p/9pnet 0xbe93e027 p9_client_create +EXPORT_SYMBOL net/9p/9pnet 0xbf9f6717 p9_client_wstat +EXPORT_SYMBOL net/9p/9pnet 0xc0f2e7b2 p9_client_open +EXPORT_SYMBOL net/9p/9pnet 0xc5db54a9 p9_idpool_destroy +EXPORT_SYMBOL net/9p/9pnet 0xd29f5387 p9_client_stat +EXPORT_SYMBOL net/9p/9pnet 0xd9d66e93 p9_client_fsync +EXPORT_SYMBOL net/9p/9pnet 0xdb11817b p9_client_walk +EXPORT_SYMBOL net/9p/9pnet 0xdcdc8cfa p9_client_setattr +EXPORT_SYMBOL net/9p/9pnet 0xddc26e1a p9_client_attach +EXPORT_SYMBOL net/9p/9pnet 0xddfddc96 p9_client_readdir +EXPORT_SYMBOL net/9p/9pnet 0xde90b561 p9_client_rename +EXPORT_SYMBOL net/9p/9pnet 0xe0822b1d p9_client_remove +EXPORT_SYMBOL net/9p/9pnet 0xe58a3360 p9_error_init +EXPORT_SYMBOL net/9p/9pnet 0xe66ae988 p9_client_readlink +EXPORT_SYMBOL net/9p/9pnet 0xe8296fc9 p9_tag_lookup +EXPORT_SYMBOL net/9p/9pnet 0xefa99a9d p9_client_symlink +EXPORT_SYMBOL net/9p/9pnet 0xf10e9b31 p9_is_proto_dotu +EXPORT_SYMBOL net/9p/9pnet 0xf4a111d8 p9_idpool_create +EXPORT_SYMBOL net/9p/9pnet 0xf70ff8f8 p9_client_clunk +EXPORT_SYMBOL net/9p/9pnet 0xf84f2022 p9_idpool_put +EXPORT_SYMBOL net/9p/9pnet 0xfd40c79d p9_idpool_check +EXPORT_SYMBOL net/appletalk/appletalk 0x1695b45a atrtr_get_dev +EXPORT_SYMBOL net/appletalk/appletalk 0x230c39f7 alloc_ltalkdev +EXPORT_SYMBOL net/appletalk/appletalk 0x4c4e190c aarp_send_ddp +EXPORT_SYMBOL net/appletalk/appletalk 0xdd2168a1 atalk_find_dev_addr +EXPORT_SYMBOL net/atm/atm 0x068b9d86 atm_dev_deregister +EXPORT_SYMBOL net/atm/atm 0x13b9f391 register_atm_ioctl +EXPORT_SYMBOL net/atm/atm 0x2cc2d52d vcc_hash +EXPORT_SYMBOL net/atm/atm 0x4443d399 atm_proc_root +EXPORT_SYMBOL net/atm/atm 0x5d02fcbd atm_alloc_charge +EXPORT_SYMBOL net/atm/atm 0x5f283900 atm_dev_signal_change +EXPORT_SYMBOL net/atm/atm 0x6653f6fc atm_dev_lookup +EXPORT_SYMBOL net/atm/atm 0x718e94aa atm_dev_register +EXPORT_SYMBOL net/atm/atm 0x88c3635f atm_dev_release_vccs +EXPORT_SYMBOL net/atm/atm 0x9feaf287 sonet_subtract_stats +EXPORT_SYMBOL net/atm/atm 0xaa024146 sonet_copy_stats +EXPORT_SYMBOL net/atm/atm 0xaa34f1b6 deregister_atm_ioctl +EXPORT_SYMBOL net/atm/atm 0xc462e4cf vcc_process_recv_queue +EXPORT_SYMBOL net/atm/atm 0xc7eaf120 atm_init_aal5 +EXPORT_SYMBOL net/atm/atm 0xca87b453 vcc_sklist_lock +EXPORT_SYMBOL net/atm/atm 0xe276ed37 vcc_insert_socket +EXPORT_SYMBOL net/atm/atm 0xf367127a atm_charge +EXPORT_SYMBOL net/atm/atm 0xf49bc67a atm_pcr_goal +EXPORT_SYMBOL net/atm/atm 0xfc551d97 vcc_release_async +EXPORT_SYMBOL net/ax25/ax25 0x0472cac0 ax25_linkfail_release +EXPORT_SYMBOL net/ax25/ax25 0x242852b9 ax25_uid_policy +EXPORT_SYMBOL net/ax25/ax25 0x3263e2e7 ax25_listen_release +EXPORT_SYMBOL net/ax25/ax25 0x3afee63e ax25_findbyuid +EXPORT_SYMBOL net/ax25/ax25 0x4502c65a asc2ax +EXPORT_SYMBOL net/ax25/ax25 0x53dea1ff ax2asc +EXPORT_SYMBOL net/ax25/ax25 0x807af057 ax25_listen_register +EXPORT_SYMBOL net/ax25/ax25 0x874332d6 ax25_find_cb +EXPORT_SYMBOL net/ax25/ax25 0x8ede9e26 ax25_protocol_release +EXPORT_SYMBOL net/ax25/ax25 0x9123fc00 ax25_linkfail_register +EXPORT_SYMBOL net/ax25/ax25 0xa7f3015b ax25_display_timer +EXPORT_SYMBOL net/ax25/ax25 0xc1444946 ax25cmp +EXPORT_SYMBOL net/ax25/ax25 0xd43ecbf1 null_ax25_address +EXPORT_SYMBOL net/ax25/ax25 0xd8950ce8 ax25_ip_xmit +EXPORT_SYMBOL net/ax25/ax25 0xdbc469f1 ax25_send_frame +EXPORT_SYMBOL net/ax25/ax25 0xf0027120 ax25_header_ops +EXPORT_SYMBOL net/bluetooth/bluetooth 0x09d0ff1f hci_register_cb +EXPORT_SYMBOL net/bluetooth/bluetooth 0x22f71354 hci_resume_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x324f0211 l2cap_register_user +EXPORT_SYMBOL net/bluetooth/bluetooth 0x3b82e8fb hci_alloc_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x3d86089f bt_sock_register +EXPORT_SYMBOL net/bluetooth/bluetooth 0x46e0fdee bt_sock_link +EXPORT_SYMBOL net/bluetooth/bluetooth 0x47022514 bt_err +EXPORT_SYMBOL net/bluetooth/bluetooth 0x48c5ea6c bt_procfs_cleanup +EXPORT_SYMBOL net/bluetooth/bluetooth 0x4effc955 bt_sock_wait_state +EXPORT_SYMBOL net/bluetooth/bluetooth 0x4f0b0e0a __hci_cmd_sync_ev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x52504c6f hci_unregister_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x545c65cf l2cap_is_socket +EXPORT_SYMBOL net/bluetooth/bluetooth 0x5465fe01 bt_sock_poll +EXPORT_SYMBOL net/bluetooth/bluetooth 0x69a1547f hci_reset_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x6aafef84 bt_sock_reclassify_lock +EXPORT_SYMBOL net/bluetooth/bluetooth 0x7fa4c162 bt_accept_enqueue +EXPORT_SYMBOL net/bluetooth/bluetooth 0x840111c4 l2cap_chan_close +EXPORT_SYMBOL net/bluetooth/bluetooth 0x84693223 bt_sock_ioctl +EXPORT_SYMBOL net/bluetooth/bluetooth 0x8fea24bd bt_sock_unregister +EXPORT_SYMBOL net/bluetooth/bluetooth 0x91c9a325 bt_to_errno +EXPORT_SYMBOL net/bluetooth/bluetooth 0x9faed0c0 bt_sock_recvmsg +EXPORT_SYMBOL net/bluetooth/bluetooth 0xa0a44ce0 hci_get_route +EXPORT_SYMBOL net/bluetooth/bluetooth 0xa101b239 l2cap_conn_put +EXPORT_SYMBOL net/bluetooth/bluetooth 0xa44e4e3b bt_accept_dequeue +EXPORT_SYMBOL net/bluetooth/bluetooth 0xa8dcde3c bt_procfs_init +EXPORT_SYMBOL net/bluetooth/bluetooth 0xad4011a2 bt_sock_stream_recvmsg +EXPORT_SYMBOL net/bluetooth/bluetooth 0xae83ff7f hci_free_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xaf56789f hci_recv_frame +EXPORT_SYMBOL net/bluetooth/bluetooth 0xb80d7924 hci_conn_check_secure +EXPORT_SYMBOL net/bluetooth/bluetooth 0xb8238a87 hci_conn_security +EXPORT_SYMBOL net/bluetooth/bluetooth 0xbcb19d27 bt_accept_unlink +EXPORT_SYMBOL net/bluetooth/bluetooth 0xbf0c0138 hci_suspend_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xcacebc06 l2cap_conn_get +EXPORT_SYMBOL net/bluetooth/bluetooth 0xcc1fb551 baswap +EXPORT_SYMBOL net/bluetooth/bluetooth 0xd19eb9a7 bt_sock_unlink +EXPORT_SYMBOL net/bluetooth/bluetooth 0xd2108f43 hci_conn_switch_role +EXPORT_SYMBOL net/bluetooth/bluetooth 0xd432783c hci_mgmt_chan_unregister +EXPORT_SYMBOL net/bluetooth/bluetooth 0xd64ba3be hci_mgmt_chan_register +EXPORT_SYMBOL net/bluetooth/bluetooth 0xd7442057 bt_info +EXPORT_SYMBOL net/bluetooth/bluetooth 0xd9536634 __hci_cmd_sync +EXPORT_SYMBOL net/bluetooth/bluetooth 0xe0df5049 hci_register_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xe47e3709 l2cap_unregister_user +EXPORT_SYMBOL net/bluetooth/bluetooth 0xeba60c36 bt_sock_wait_ready +EXPORT_SYMBOL net/bluetooth/bluetooth 0xf8510874 hci_unregister_cb +EXPORT_SYMBOL net/bridge/bridge 0x32876e0b br_should_route_hook +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0x2cdf4ada ebt_register_table +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0x88895c8e ebt_do_table +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0xbccfb886 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 0x4a237e57 cfpkt_tonative +EXPORT_SYMBOL net/caif/caif 0x59ec0c16 cfcnfg_add_phy_layer +EXPORT_SYMBOL net/caif/caif 0x5aa6308a caif_enroll_dev +EXPORT_SYMBOL net/caif/caif 0x5edf9d91 caif_connect_client +EXPORT_SYMBOL net/caif/caif 0x66398ca5 caif_disconnect_client +EXPORT_SYMBOL net/caif/caif 0x6a44fc70 cfpkt_extr_head +EXPORT_SYMBOL net/caif/caif 0x839ddb7b cfcnfg_set_phy_state +EXPORT_SYMBOL net/caif/caif 0x966d7de2 cfpkt_add_head +EXPORT_SYMBOL net/caif/caif 0x9e3e305d cfpkt_set_prio +EXPORT_SYMBOL net/caif/caif 0xb7b6874e caif_free_client +EXPORT_SYMBOL net/caif/caif 0xf7d1e829 get_cfcnfg +EXPORT_SYMBOL net/can/can 0x101b4952 can_rx_unregister +EXPORT_SYMBOL net/can/can 0x61802e08 can_rx_register +EXPORT_SYMBOL net/can/can 0x67f441cf can_ioctl +EXPORT_SYMBOL net/can/can 0x861ae1e1 can_proto_register +EXPORT_SYMBOL net/can/can 0xc0d85fbd can_send +EXPORT_SYMBOL net/can/can 0xe210e828 can_proto_unregister +EXPORT_SYMBOL net/ceph/libceph 0x011f9bb5 osd_req_op_cls_response_data +EXPORT_SYMBOL net/ceph/libceph 0x049c0490 ceph_get_direct_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x05a38fc9 ceph_messenger_init +EXPORT_SYMBOL net/ceph/libceph 0x0720d849 ceph_calc_pg_primary +EXPORT_SYMBOL net/ceph/libceph 0x089d028f ceph_monc_validate_auth +EXPORT_SYMBOL net/ceph/libceph 0x09290ab3 ceph_debugfs_init +EXPORT_SYMBOL net/ceph/libceph 0x09e06d8d __ceph_open_session +EXPORT_SYMBOL net/ceph/libceph 0x0d099a40 ceph_auth_invalidate_authorizer +EXPORT_SYMBOL net/ceph/libceph 0x140329c8 ceph_msg_get +EXPORT_SYMBOL net/ceph/libceph 0x148d2deb ceph_monc_got_mdsmap +EXPORT_SYMBOL net/ceph/libceph 0x1daf1fb2 ceph_check_fsid +EXPORT_SYMBOL net/ceph/libceph 0x20d151cb ceph_osdc_setup +EXPORT_SYMBOL net/ceph/libceph 0x2db717f3 ceph_destroy_options +EXPORT_SYMBOL net/ceph/libceph 0x343b919f osd_req_op_cls_init +EXPORT_SYMBOL net/ceph/libceph 0x354e8fae ceph_con_close +EXPORT_SYMBOL net/ceph/libceph 0x357c084f ceph_monc_open_session +EXPORT_SYMBOL net/ceph/libceph 0x3679fd05 osd_req_op_raw_data_in_pages +EXPORT_SYMBOL net/ceph/libceph 0x3761c72e ceph_put_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x37ff5072 ceph_osdc_wait_request +EXPORT_SYMBOL net/ceph/libceph 0x3a081c2d ceph_osdc_set_request_linger +EXPORT_SYMBOL net/ceph/libceph 0x3abec91f ceph_pr_addr +EXPORT_SYMBOL net/ceph/libceph 0x3ca6f43e osd_req_op_cls_response_data_pages +EXPORT_SYMBOL net/ceph/libceph 0x3ca811d7 ceph_osdc_put_request +EXPORT_SYMBOL net/ceph/libceph 0x3e09d22d ceph_con_keepalive +EXPORT_SYMBOL net/ceph/libceph 0x3f688151 ceph_put_snap_context +EXPORT_SYMBOL net/ceph/libceph 0x43ae51c7 ceph_msg_data_add_pagelist +EXPORT_SYMBOL net/ceph/libceph 0x43e458f6 ceph_file_part +EXPORT_SYMBOL net/ceph/libceph 0x43efd647 ceph_calc_file_object_mapping +EXPORT_SYMBOL net/ceph/libceph 0x454427ba ceph_pg_pool_name_by_id +EXPORT_SYMBOL net/ceph/libceph 0x466b85b8 libceph_compatible +EXPORT_SYMBOL net/ceph/libceph 0x47a9920e ceph_pagelist_release +EXPORT_SYMBOL net/ceph/libceph 0x4926df4b ceph_osdc_create_event +EXPORT_SYMBOL net/ceph/libceph 0x4c2d917b ceph_msg_data_add_pages +EXPORT_SYMBOL net/ceph/libceph 0x4e3c55f5 ceph_osdc_new_request +EXPORT_SYMBOL net/ceph/libceph 0x5379cea3 ceph_caps_for_mode +EXPORT_SYMBOL net/ceph/libceph 0x57baf885 ceph_str_hash +EXPORT_SYMBOL net/ceph/libceph 0x5d6c2b27 ceph_osdc_readpages +EXPORT_SYMBOL net/ceph/libceph 0x63758856 ceph_str_hash_name +EXPORT_SYMBOL net/ceph/libceph 0x63bb1dbe ceph_con_init +EXPORT_SYMBOL net/ceph/libceph 0x6a936cbf ceph_osdc_start_request +EXPORT_SYMBOL net/ceph/libceph 0x6b2e3bcd ceph_get_snap_context +EXPORT_SYMBOL net/ceph/libceph 0x6c1e169c osd_req_op_cls_request_data_pagelist +EXPORT_SYMBOL net/ceph/libceph 0x7378464a ceph_alloc_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x7d45aa46 ceph_monc_request_next_osdmap +EXPORT_SYMBOL net/ceph/libceph 0x7f4d78ab ceph_copy_user_to_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x816d0818 osd_req_op_extent_osd_data_pagelist +EXPORT_SYMBOL net/ceph/libceph 0x83c408f1 ceph_msg_put +EXPORT_SYMBOL net/ceph/libceph 0x84dce859 ceph_msg_data_add_bio +EXPORT_SYMBOL net/ceph/libceph 0x889b7865 ceph_copy_to_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x8bb1af04 osd_req_op_extent_osd_data_pages +EXPORT_SYMBOL net/ceph/libceph 0x8e6ed471 osd_req_op_alloc_hint_init +EXPORT_SYMBOL net/ceph/libceph 0x8e7913a2 osd_req_op_watch_init +EXPORT_SYMBOL net/ceph/libceph 0x9005134d ceph_msg_dump +EXPORT_SYMBOL net/ceph/libceph 0x917f3823 ceph_client_id +EXPORT_SYMBOL net/ceph/libceph 0x95bbf0c6 ceph_osdc_alloc_request +EXPORT_SYMBOL net/ceph/libceph 0x97861e9c osd_req_op_extent_osd_data +EXPORT_SYMBOL net/ceph/libceph 0x99e36571 ceph_osdc_cleanup +EXPORT_SYMBOL net/ceph/libceph 0x9bc5edc2 ceph_osdc_sync +EXPORT_SYMBOL net/ceph/libceph 0x9c4f0601 ceph_con_open +EXPORT_SYMBOL net/ceph/libceph 0x9f534f4d ceph_buffer_release +EXPORT_SYMBOL net/ceph/libceph 0xa1ebde8f ceph_pagelist_truncate +EXPORT_SYMBOL net/ceph/libceph 0xa6087153 ceph_auth_verify_authorizer_reply +EXPORT_SYMBOL net/ceph/libceph 0xa7d8d1c1 ceph_print_client_options +EXPORT_SYMBOL net/ceph/libceph 0xabde9837 ceph_compare_options +EXPORT_SYMBOL net/ceph/libceph 0xae0d4ef6 ceph_osdc_writepages +EXPORT_SYMBOL net/ceph/libceph 0xae3515ba ceph_create_snap_context +EXPORT_SYMBOL net/ceph/libceph 0xaef29b0f ceph_osdc_cancel_request +EXPORT_SYMBOL net/ceph/libceph 0xafb8a407 ceph_msgr_flush +EXPORT_SYMBOL net/ceph/libceph 0xb15526d1 ceph_osdc_build_request +EXPORT_SYMBOL net/ceph/libceph 0xb1702822 ceph_monc_stop +EXPORT_SYMBOL net/ceph/libceph 0xb19dc152 ceph_pagelist_reserve +EXPORT_SYMBOL net/ceph/libceph 0xb1b63632 osd_req_op_extent_update +EXPORT_SYMBOL net/ceph/libceph 0xb4859500 osd_req_op_xattr_init +EXPORT_SYMBOL net/ceph/libceph 0xb54676fa ceph_msg_type_name +EXPORT_SYMBOL net/ceph/libceph 0xb6081d6d ceph_msgr_exit +EXPORT_SYMBOL net/ceph/libceph 0xbc8dd0ea ceph_osdc_cancel_event +EXPORT_SYMBOL net/ceph/libceph 0xbc914a67 ceph_auth_destroy_authorizer +EXPORT_SYMBOL net/ceph/libceph 0xbef6731c ceph_monc_wait_osdmap +EXPORT_SYMBOL net/ceph/libceph 0xbf7549c6 ceph_con_send +EXPORT_SYMBOL net/ceph/libceph 0xc1cb7d2e ceph_monc_do_get_version +EXPORT_SYMBOL net/ceph/libceph 0xc48e5b45 ceph_destroy_client +EXPORT_SYMBOL net/ceph/libceph 0xc4a80955 ceph_debugfs_cleanup +EXPORT_SYMBOL net/ceph/libceph 0xc4f17bd6 ceph_auth_is_authenticated +EXPORT_SYMBOL net/ceph/libceph 0xc9f82b38 ceph_msgr_init +EXPORT_SYMBOL net/ceph/libceph 0xcb50a624 ceph_parse_ips +EXPORT_SYMBOL net/ceph/libceph 0xcbd8c7ef ceph_msg_new +EXPORT_SYMBOL net/ceph/libceph 0xcf3c59c3 ceph_open_session +EXPORT_SYMBOL net/ceph/libceph 0xd0f556f8 osd_req_op_init +EXPORT_SYMBOL net/ceph/libceph 0xd2c107bb ceph_flags_to_mode +EXPORT_SYMBOL net/ceph/libceph 0xd4775208 osd_req_op_extent_init +EXPORT_SYMBOL net/ceph/libceph 0xd5383217 ceph_pagelist_set_cursor +EXPORT_SYMBOL net/ceph/libceph 0xd5d780e4 osd_req_op_cls_request_data_pages +EXPORT_SYMBOL net/ceph/libceph 0xd813625e ceph_pagelist_append +EXPORT_SYMBOL net/ceph/libceph 0xdb22e7fb ceph_osdc_get_request +EXPORT_SYMBOL net/ceph/libceph 0xdd5cc2bb ceph_release_page_vector +EXPORT_SYMBOL net/ceph/libceph 0xdd8e7550 ceph_parse_options +EXPORT_SYMBOL net/ceph/libceph 0xde0eb6ba ceph_pagelist_free_reserve +EXPORT_SYMBOL net/ceph/libceph 0xdf8597d9 ceph_monc_init +EXPORT_SYMBOL net/ceph/libceph 0xdfafc2cb ceph_copy_from_page_vector +EXPORT_SYMBOL net/ceph/libceph 0xe55d9bcd ceph_buffer_new +EXPORT_SYMBOL net/ceph/libceph 0xe591afb6 ceph_oloc_oid_to_pg +EXPORT_SYMBOL net/ceph/libceph 0xe69f78b8 osd_req_op_extent_osd_data_bio +EXPORT_SYMBOL net/ceph/libceph 0xe82beff3 ceph_auth_update_authorizer +EXPORT_SYMBOL net/ceph/libceph 0xeeef3ed5 ceph_monc_do_statfs +EXPORT_SYMBOL net/ceph/libceph 0xeef13808 ceph_zero_page_vector_range +EXPORT_SYMBOL net/ceph/libceph 0xf20b4480 ceph_pg_poolid_by_name +EXPORT_SYMBOL net/ceph/libceph 0xf21370cb ceph_messenger_fini +EXPORT_SYMBOL net/ceph/libceph 0xf4ce4ba1 ceph_osdc_put_event +EXPORT_SYMBOL net/ceph/libceph 0xf7700d85 ceph_auth_create_authorizer +EXPORT_SYMBOL net/ceph/libceph 0xf9a39dfe ceph_create_client +EXPORT_SYMBOL net/ceph/libceph 0xfce5d2b6 ceph_osdc_flush_notifies +EXPORT_SYMBOL net/dccp/dccp_ipv4 0x2237a150 dccp_req_err +EXPORT_SYMBOL net/dccp/dccp_ipv4 0x700b1d67 dccp_syn_ack_timeout +EXPORT_SYMBOL net/ieee802154/6lowpan/ieee802154_6lowpan 0x42c8b086 lowpan_frag_rcv +EXPORT_SYMBOL net/ieee802154/ieee802154 0x0ab0e1e9 wpan_phy_find +EXPORT_SYMBOL net/ieee802154/ieee802154 0x55884b40 wpan_phy_free +EXPORT_SYMBOL net/ieee802154/ieee802154 0x578f3c03 wpan_phy_new +EXPORT_SYMBOL net/ieee802154/ieee802154 0xa0350225 wpan_phy_for_each +EXPORT_SYMBOL net/ieee802154/ieee802154 0xc45487d1 wpan_phy_unregister +EXPORT_SYMBOL net/ieee802154/ieee802154 0xf9efc67e wpan_phy_register +EXPORT_SYMBOL net/ipv4/fou 0x191d2184 gue_build_header +EXPORT_SYMBOL net/ipv4/fou 0x4ed1bb4b fou_build_header +EXPORT_SYMBOL net/ipv4/fou 0x87596169 fou_encap_hlen +EXPORT_SYMBOL net/ipv4/fou 0xfe4c1f2f gue_encap_hlen +EXPORT_SYMBOL net/ipv4/ip_tunnel 0x1306ab8b ip_tunnel_get_link_net +EXPORT_SYMBOL net/ipv4/ip_tunnel 0x49e769c6 ip_tunnel_encap_del_ops +EXPORT_SYMBOL net/ipv4/ip_tunnel 0x6e673a58 ip_tunnel_encap +EXPORT_SYMBOL net/ipv4/ip_tunnel 0x83de1d1f ip_tunnel_encap_add_ops +EXPORT_SYMBOL net/ipv4/ip_tunnel 0xc5cbb5c6 ip_tunnel_get_iflink +EXPORT_SYMBOL net/ipv4/ip_tunnel 0xe54c147b ip_tunnel_dst_reset_all +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0x8addc8fa arpt_do_table +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0xebfe0a9a arpt_unregister_table +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0xfe9b4267 arpt_register_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0x6a20ca97 ipt_unregister_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0x8a3b47fe ipt_do_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0xe7de95c3 ipt_register_table +EXPORT_SYMBOL net/ipv4/tunnel4 0x50268530 xfrm4_tunnel_register +EXPORT_SYMBOL net/ipv4/tunnel4 0x66bc5675 xfrm4_tunnel_deregister +EXPORT_SYMBOL net/ipv4/udp_tunnel 0x99c72aac udp_sock_create4 +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0x8e072e8c ip6_tnl_get_link_net +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0xb6ac49ee ip6_tnl_get_cap +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0xcd70cf79 ip6_tnl_parse_tlv_enc_lim +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0xcef92210 ip6_tnl_get_iflink +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0x278803bf ip6t_register_table +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0x5b50f77e ip6t_unregister_table +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0xd0b1c915 ip6t_do_table +EXPORT_SYMBOL net/ipv6/tunnel6 0x9e300403 xfrm6_tunnel_register +EXPORT_SYMBOL net/ipv6/tunnel6 0xffaac2a3 xfrm6_tunnel_deregister +EXPORT_SYMBOL net/ipv6/xfrm6_tunnel 0x3a323dfb xfrm6_tunnel_spi_lookup +EXPORT_SYMBOL net/ipv6/xfrm6_tunnel 0x9e100545 xfrm6_tunnel_alloc_spi +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x04f96e5b ircomm_connect_response +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x0a615a1a ircomm_connect_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x277ccf4a ircomm_control_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x2e2a4934 ircomm_flow_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x48c6618b ircomm_data_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x7418e547 ircomm_close +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x9ee79c96 ircomm_disconnect_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0xf3a14bb8 ircomm_open +EXPORT_SYMBOL net/irda/irda 0x0064e0ea hashbin_get_first +EXPORT_SYMBOL net/irda/irda 0x0422e9dd irlap_close +EXPORT_SYMBOL net/irda/irda 0x06a3ee58 irias_new_integer_value +EXPORT_SYMBOL net/irda/irda 0x07d3647c irlmp_register_service +EXPORT_SYMBOL net/irda/irda 0x10598f88 irttp_close_tsap +EXPORT_SYMBOL net/irda/irda 0x1277f3f8 irlmp_open_lsap +EXPORT_SYMBOL net/irda/irda 0x1e6cade0 irias_add_integer_attrib +EXPORT_SYMBOL net/irda/irda 0x1e8b7e8b irttp_connect_request +EXPORT_SYMBOL net/irda/irda 0x33cbe2c6 proc_irda +EXPORT_SYMBOL net/irda/irda 0x34b80a09 irttp_flow_request +EXPORT_SYMBOL net/irda/irda 0x39784bad iriap_getvaluebyclass_request +EXPORT_SYMBOL net/irda/irda 0x3e56064f hashbin_new +EXPORT_SYMBOL net/irda/irda 0x42ebe1cd async_wrap_skb +EXPORT_SYMBOL net/irda/irda 0x448b8aaa irda_qos_bits_to_value +EXPORT_SYMBOL net/irda/irda 0x4699a34f irttp_connect_response +EXPORT_SYMBOL net/irda/irda 0x46c1c4a2 irlmp_unregister_service +EXPORT_SYMBOL net/irda/irda 0x4abecca0 irlmp_close_lsap +EXPORT_SYMBOL net/irda/irda 0x5940e589 irda_notify_init +EXPORT_SYMBOL net/irda/irda 0x601bda46 hashbin_remove +EXPORT_SYMBOL net/irda/irda 0x624a12a9 async_unwrap_char +EXPORT_SYMBOL net/irda/irda 0x67094b70 irttp_open_tsap +EXPORT_SYMBOL net/irda/irda 0x6b043eba irda_init_max_qos_capabilies +EXPORT_SYMBOL net/irda/irda 0x6b5fbcef hashbin_get_next +EXPORT_SYMBOL net/irda/irda 0x6e0ab3c7 irias_add_string_attrib +EXPORT_SYMBOL net/irda/irda 0x7042bc54 irlmp_register_client +EXPORT_SYMBOL net/irda/irda 0x763e54a4 irlmp_unregister_client +EXPORT_SYMBOL net/irda/irda 0x7957f728 irlmp_update_client +EXPORT_SYMBOL net/irda/irda 0x7f52a8bf irda_param_insert +EXPORT_SYMBOL net/irda/irda 0x85d88217 irias_delete_object +EXPORT_SYMBOL net/irda/irda 0x87942a79 irda_device_set_media_busy +EXPORT_SYMBOL net/irda/irda 0x893e24da irttp_disconnect_request +EXPORT_SYMBOL net/irda/irda 0x91815586 irda_param_pack +EXPORT_SYMBOL net/irda/irda 0x94a824db irda_param_extract_all +EXPORT_SYMBOL net/irda/irda 0x9c92ba6a iriap_open +EXPORT_SYMBOL net/irda/irda 0xa1d41e58 hashbin_delete +EXPORT_SYMBOL net/irda/irda 0xaa557515 irias_new_object +EXPORT_SYMBOL net/irda/irda 0xabf9276a iriap_close +EXPORT_SYMBOL net/irda/irda 0xb9394173 irias_delete_value +EXPORT_SYMBOL net/irda/irda 0xbcd3ef13 irias_object_change_attribute +EXPORT_SYMBOL net/irda/irda 0xbe40ace9 irlmp_discovery_request +EXPORT_SYMBOL net/irda/irda 0xc0c99939 irttp_udata_request +EXPORT_SYMBOL net/irda/irda 0xc68e43be irias_add_octseq_attrib +EXPORT_SYMBOL net/irda/irda 0xcdc9347a irttp_dup +EXPORT_SYMBOL net/irda/irda 0xcead7dbb hashbin_find +EXPORT_SYMBOL net/irda/irda 0xd2108314 hashbin_insert +EXPORT_SYMBOL net/irda/irda 0xd5a21f13 irttp_data_request +EXPORT_SYMBOL net/irda/irda 0xd919a543 irlap_open +EXPORT_SYMBOL net/irda/irda 0xda9ba3c9 alloc_irdadev +EXPORT_SYMBOL net/irda/irda 0xde4c6b3c irlmp_service_to_hint +EXPORT_SYMBOL net/irda/irda 0xdf623658 irlmp_data_request +EXPORT_SYMBOL net/irda/irda 0xe3463529 hashbin_lock_find +EXPORT_SYMBOL net/irda/irda 0xe3bde43e irias_insert_object +EXPORT_SYMBOL net/irda/irda 0xed90e117 irlmp_disconnect_request +EXPORT_SYMBOL net/irda/irda 0xedd521c2 irlmp_get_discoveries +EXPORT_SYMBOL net/irda/irda 0xee75a7cf irlmp_connect_request +EXPORT_SYMBOL net/irda/irda 0xf0a694a1 irias_find_object +EXPORT_SYMBOL net/irda/irda 0xf39b7fe0 irda_setup_dma +EXPORT_SYMBOL net/irda/irda 0xf5876b95 hashbin_remove_this +EXPORT_SYMBOL net/irda/irda 0xfbbbaa88 irlmp_connect_response +EXPORT_SYMBOL net/l2tp/l2tp_core 0x4bc48d2f l2tp_recv_common +EXPORT_SYMBOL net/lapb/lapb 0x0311ee21 lapb_data_request +EXPORT_SYMBOL net/lapb/lapb 0x3e450fe9 lapb_getparms +EXPORT_SYMBOL net/lapb/lapb 0x7b07bbbd lapb_setparms +EXPORT_SYMBOL net/lapb/lapb 0x7ec601b6 lapb_connect_request +EXPORT_SYMBOL net/lapb/lapb 0x822537da lapb_register +EXPORT_SYMBOL net/lapb/lapb 0x8e15bcfd lapb_data_received +EXPORT_SYMBOL net/lapb/lapb 0xd520161a lapb_unregister +EXPORT_SYMBOL net/lapb/lapb 0xec76e6b7 lapb_disconnect_request +EXPORT_SYMBOL net/llc/llc 0x0a1e53f1 llc_sap_find +EXPORT_SYMBOL net/llc/llc 0x38b92846 llc_remove_pack +EXPORT_SYMBOL net/llc/llc 0x52d7b2fd llc_sap_list +EXPORT_SYMBOL net/llc/llc 0x6049cf2f llc_sap_open +EXPORT_SYMBOL net/llc/llc 0x6bc26a18 llc_mac_hdr_init +EXPORT_SYMBOL net/llc/llc 0x6c49e832 llc_set_station_handler +EXPORT_SYMBOL net/llc/llc 0x6d497f23 llc_add_pack +EXPORT_SYMBOL net/llc/llc 0xb4414050 llc_build_and_send_ui_pkt +EXPORT_SYMBOL net/llc/llc 0xd6b36af2 llc_sap_close +EXPORT_SYMBOL net/mac80211/mac80211 0x0066f4a5 ieee80211_unreserve_tid +EXPORT_SYMBOL net/mac80211/mac80211 0x00fbee3a ieee80211_stop_tx_ba_cb_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0x02166686 ieee80211_get_tkip_p1k_iv +EXPORT_SYMBOL net/mac80211/mac80211 0x0335d002 ieee80211_find_sta +EXPORT_SYMBOL net/mac80211/mac80211 0x082b682c rate_control_set_rates +EXPORT_SYMBOL net/mac80211/mac80211 0x19efbf51 ieee80211_sta_ps_transition +EXPORT_SYMBOL net/mac80211/mac80211 0x1a3dae76 ieee80211_rate_control_register +EXPORT_SYMBOL net/mac80211/mac80211 0x1acc3c77 ieee80211_scan_completed +EXPORT_SYMBOL net/mac80211/mac80211 0x1d0360a2 ieee80211_stop_rx_ba_session_offl +EXPORT_SYMBOL net/mac80211/mac80211 0x1e2fa098 ieee80211_wake_queues +EXPORT_SYMBOL net/mac80211/mac80211 0x20489d83 ieee80211_rts_get +EXPORT_SYMBOL net/mac80211/mac80211 0x22a55426 ieee80211_get_tkip_p2k +EXPORT_SYMBOL net/mac80211/mac80211 0x26809776 ieee80211_stop_queue +EXPORT_SYMBOL net/mac80211/mac80211 0x27a2993e ieee80211_stop_rx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0x294c3d2a ieee80211_send_bar +EXPORT_SYMBOL net/mac80211/mac80211 0x2cabc431 ieee80211_report_low_ack +EXPORT_SYMBOL net/mac80211/mac80211 0x2cc08919 ieee80211_wake_queue +EXPORT_SYMBOL net/mac80211/mac80211 0x309254b7 ieee80211_stop_tx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0x31f299e6 ieee80211_iter_keys +EXPORT_SYMBOL net/mac80211/mac80211 0x328a9083 ieee80211_start_tx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0x3869f08e ieee80211_aes_cmac_calculate_k1_k2 +EXPORT_SYMBOL net/mac80211/mac80211 0x38c1c7ec ieee80211_radar_detected +EXPORT_SYMBOL net/mac80211/mac80211 0x39eea473 ieee80211_rx +EXPORT_SYMBOL net/mac80211/mac80211 0x3d3e2f77 ieee80211_probereq_get +EXPORT_SYMBOL net/mac80211/mac80211 0x426870a6 ieee80211_register_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x4371ee8c ieee80211_ap_probereq_get +EXPORT_SYMBOL net/mac80211/mac80211 0x48b04d1b ieee80211_csa_is_complete +EXPORT_SYMBOL net/mac80211/mac80211 0x48f09726 ieee80211_free_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x50c8a97c ieee80211_start_rx_ba_session_offl +EXPORT_SYMBOL net/mac80211/mac80211 0x590c6e16 wiphy_to_ieee80211_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x5eb36edc ieee80211_restart_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x63ab22bf ieee80211_cqm_beacon_loss_notify +EXPORT_SYMBOL net/mac80211/mac80211 0x66a41210 ieee80211_unregister_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x69de096c ieee80211_get_tkip_rx_p1k +EXPORT_SYMBOL net/mac80211/mac80211 0x7124adf7 ieee80211_tx_prepare_skb +EXPORT_SYMBOL net/mac80211/mac80211 0x74c52a33 ieee80211_start_tx_ba_cb_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0x75d15968 ieee80211_cqm_rssi_notify +EXPORT_SYMBOL net/mac80211/mac80211 0x76b9ef28 ieee80211_get_key_rx_seq +EXPORT_SYMBOL net/mac80211/mac80211 0x77485a98 ieee80211_tx_dequeue +EXPORT_SYMBOL net/mac80211/mac80211 0x77ea65c4 ieee80211_update_p2p_noa +EXPORT_SYMBOL net/mac80211/mac80211 0x78c2406d ieee80211_chswitch_done +EXPORT_SYMBOL net/mac80211/mac80211 0x7e05445e ieee80211_beacon_get_template +EXPORT_SYMBOL net/mac80211/mac80211 0x7f796b75 ieee80211_alloc_hw_nm +EXPORT_SYMBOL net/mac80211/mac80211 0x88785b51 ieee80211_disable_rssi_reports +EXPORT_SYMBOL net/mac80211/mac80211 0x8cef2c9d __ieee80211_get_tx_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0x8ee92714 ieee80211_sta_set_buffered +EXPORT_SYMBOL net/mac80211/mac80211 0x923543a6 ieee80211_sched_scan_stopped +EXPORT_SYMBOL net/mac80211/mac80211 0x93fe0044 __ieee80211_get_assoc_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0x97f669b7 ieee80211_rx_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0x98976e12 ieee80211_get_tx_rates +EXPORT_SYMBOL net/mac80211/mac80211 0x98c0bf29 ieee80211_tdls_oper_request +EXPORT_SYMBOL net/mac80211/mac80211 0xa12b011d ieee80211_queue_work +EXPORT_SYMBOL net/mac80211/mac80211 0xa729f9e2 ieee80211_ctstoself_duration +EXPORT_SYMBOL net/mac80211/mac80211 0xa89dd7fb ieee80211_connection_loss +EXPORT_SYMBOL net/mac80211/mac80211 0xa8a5189b ieee80211_rts_duration +EXPORT_SYMBOL net/mac80211/mac80211 0xa9e10b48 ieee80211_proberesp_get +EXPORT_SYMBOL net/mac80211/mac80211 0xae543e73 ieee80211_rate_control_unregister +EXPORT_SYMBOL net/mac80211/mac80211 0xb1aaef91 ieee80211_get_key_tx_seq +EXPORT_SYMBOL net/mac80211/mac80211 0xb1b1874b ieee80211_tx_status_noskb +EXPORT_SYMBOL net/mac80211/mac80211 0xb204ddeb ieee80211_get_buffered_bc +EXPORT_SYMBOL net/mac80211/mac80211 0xb59a6444 ieee80211_csa_finish +EXPORT_SYMBOL net/mac80211/mac80211 0xb64780f9 ieee80211_report_wowlan_wakeup +EXPORT_SYMBOL net/mac80211/mac80211 0xbd811ea8 ieee80211_stop_queues +EXPORT_SYMBOL net/mac80211/mac80211 0xbf1a56ca ieee80211_pspoll_get +EXPORT_SYMBOL net/mac80211/mac80211 0xc2fbe057 ieee80211_queue_stopped +EXPORT_SYMBOL net/mac80211/mac80211 0xc3dfdd26 ieee80211_enable_rssi_reports +EXPORT_SYMBOL net/mac80211/mac80211 0xc404fb67 ieee80211_reserve_tid +EXPORT_SYMBOL net/mac80211/mac80211 0xca1020bf rate_control_send_low +EXPORT_SYMBOL net/mac80211/mac80211 0xcbe71a55 ieee80211_sta_block_awake +EXPORT_SYMBOL net/mac80211/mac80211 0xcc1678cb __ieee80211_create_tpt_led_trigger +EXPORT_SYMBOL net/mac80211/mac80211 0xcf7f8311 ieee80211_csa_update_counter +EXPORT_SYMBOL net/mac80211/mac80211 0xd1776357 ieee80211_sched_scan_results +EXPORT_SYMBOL net/mac80211/mac80211 0xd279f05a ieee80211_tx_status +EXPORT_SYMBOL net/mac80211/mac80211 0xd2ee9c2a __ieee80211_get_radio_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0xd3cce92f __ieee80211_get_rx_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0xd684a4d8 ieee80211_beacon_get_tim +EXPORT_SYMBOL net/mac80211/mac80211 0xd72625cb ieee80211_parse_p2p_noa +EXPORT_SYMBOL net/mac80211/mac80211 0xdebb4e3a ieee80211_nullfunc_get +EXPORT_SYMBOL net/mac80211/mac80211 0xe0cb1b0f ieee80211_sta_eosp +EXPORT_SYMBOL net/mac80211/mac80211 0xec06367a ieee80211_free_txskb +EXPORT_SYMBOL net/mac80211/mac80211 0xecb57568 ieee80211_queue_delayed_work +EXPORT_SYMBOL net/mac80211/mac80211 0xef41d003 ieee80211_generic_frame_duration +EXPORT_SYMBOL net/mac80211/mac80211 0xf3c4ff8b ieee80211_ctstoself_get +EXPORT_SYMBOL net/mac80211/mac80211 0xf42f6d49 ieee80211_beacon_loss +EXPORT_SYMBOL net/mac80211/mac80211 0xf9320d5b ieee80211_tx_status_irqsafe +EXPORT_SYMBOL net/mac802154/mac802154 0x24da9c6a ieee802154_rx_irqsafe +EXPORT_SYMBOL net/mac802154/mac802154 0x2af32fc5 ieee802154_wake_queue +EXPORT_SYMBOL net/mac802154/mac802154 0x55c91096 ieee802154_free_hw +EXPORT_SYMBOL net/mac802154/mac802154 0x5be23d46 ieee802154_register_hw +EXPORT_SYMBOL net/mac802154/mac802154 0x5c2f7672 ieee802154_unregister_hw +EXPORT_SYMBOL net/mac802154/mac802154 0x710a60c6 ieee802154_xmit_complete +EXPORT_SYMBOL net/mac802154/mac802154 0x87beb5b3 ieee802154_stop_queue +EXPORT_SYMBOL net/mac802154/mac802154 0x8a35f201 ieee802154_alloc_hw +EXPORT_SYMBOL net/mac802154/mac802154 0xf6aa3f52 ieee802154_rx +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x0167d5c6 register_ip_vs_scheduler +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x23b2d786 unregister_ip_vs_scheduler +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x2f77c117 ip_vs_nfct_expect_related +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x5a025550 ip_vs_scheduler_err +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x5e34dab1 unregister_ip_vs_app +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x6544386f ip_vs_conn_put +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x67a040d7 ip_vs_conn_out_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x7dac4a9a ip_vs_tcp_conn_listen +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x806c68f0 register_ip_vs_app_inc +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xaa8e778e ip_vs_conn_new +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xb44362ee ip_vs_conn_in_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xb89cf04b ip_vs_proto_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xd831a1a2 ip_vs_proto_name +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xe8d2b14b ip_vs_proto_data_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xf402cc20 register_ip_vs_app +EXPORT_SYMBOL net/netfilter/nf_conntrack 0x33521fc8 __nf_ct_ext_destroy +EXPORT_SYMBOL net/netfilter/nf_conntrack 0x49a53dcb __nf_ct_ext_add_length +EXPORT_SYMBOL net/netfilter/nf_conntrack 0xdd4b1d44 nf_conntrack_untracked +EXPORT_SYMBOL net/netfilter/nf_conntrack_pptp 0x827cc6a1 pptp_msg_name +EXPORT_SYMBOL net/netfilter/nf_nat 0x3c9f343a nf_xfrm_me_harder +EXPORT_SYMBOL net/netfilter/nf_nat 0x3e475e0f nf_nat_used_tuple +EXPORT_SYMBOL net/netfilter/nf_nat 0x7bbf8e96 nf_nat_follow_master +EXPORT_SYMBOL net/netfilter/nf_nat 0xb2c74b08 nf_nat_mangle_udp_packet +EXPORT_SYMBOL net/netfilter/nf_nat 0xe6004277 nf_nat_setup_info +EXPORT_SYMBOL net/netfilter/nf_nat 0xea2872c1 __nf_nat_mangle_tcp_packet +EXPORT_SYMBOL net/netfilter/x_tables 0x1c999c84 xt_unregister_targets +EXPORT_SYMBOL net/netfilter/x_tables 0x4418adc2 xt_register_target +EXPORT_SYMBOL net/netfilter/x_tables 0x482d26fd xt_alloc_table_info +EXPORT_SYMBOL net/netfilter/x_tables 0x56422306 xt_find_match +EXPORT_SYMBOL net/netfilter/x_tables 0x66bfd090 xt_register_matches +EXPORT_SYMBOL net/netfilter/x_tables 0x671ff692 xt_find_target +EXPORT_SYMBOL net/netfilter/x_tables 0x92763326 xt_unregister_match +EXPORT_SYMBOL net/netfilter/x_tables 0x92a873ae xt_register_targets +EXPORT_SYMBOL net/netfilter/x_tables 0xb9821e38 xt_unregister_target +EXPORT_SYMBOL net/netfilter/x_tables 0xba5840fb xt_register_match +EXPORT_SYMBOL net/netfilter/x_tables 0xd1a21986 xt_free_table_info +EXPORT_SYMBOL net/netfilter/x_tables 0xe9bf030d xt_unregister_matches +EXPORT_SYMBOL net/nfc/hci/hci 0x02f7c92f nfc_hci_free_device +EXPORT_SYMBOL net/nfc/hci/hci 0x05a6d63f nfc_hci_send_cmd_async +EXPORT_SYMBOL net/nfc/hci/hci 0x0f9de033 nfc_hci_target_discovered +EXPORT_SYMBOL net/nfc/hci/hci 0x36190cfc nfc_hci_send_cmd +EXPORT_SYMBOL net/nfc/hci/hci 0x43028a27 nfc_hci_result_to_errno +EXPORT_SYMBOL net/nfc/hci/hci 0x43479a0a nfc_hci_set_param +EXPORT_SYMBOL net/nfc/hci/hci 0x4736bde1 nfc_hci_reset_pipes +EXPORT_SYMBOL net/nfc/hci/hci 0x47df1790 nfc_hci_register_device +EXPORT_SYMBOL net/nfc/hci/hci 0x5ed14537 nfc_hci_get_clientdata +EXPORT_SYMBOL net/nfc/hci/hci 0x61a5e189 nfc_hci_disconnect_all_gates +EXPORT_SYMBOL net/nfc/hci/hci 0x6a044470 nfc_hci_recv_frame +EXPORT_SYMBOL net/nfc/hci/hci 0x6f633225 nfc_hci_reset_pipes_per_host +EXPORT_SYMBOL net/nfc/hci/hci 0x6fc43c5a nfc_hci_driver_failure +EXPORT_SYMBOL net/nfc/hci/hci 0x768b16f6 nfc_hci_allocate_device +EXPORT_SYMBOL net/nfc/hci/hci 0x76920434 nfc_hci_disconnect_gate +EXPORT_SYMBOL net/nfc/hci/hci 0x7b6699a1 nfc_hci_set_clientdata +EXPORT_SYMBOL net/nfc/hci/hci 0x83bf03a5 nfc_hci_get_param +EXPORT_SYMBOL net/nfc/hci/hci 0xbca0b4fd nfc_hci_sak_to_protocol +EXPORT_SYMBOL net/nfc/hci/hci 0xc4b69e67 nfc_hci_send_event +EXPORT_SYMBOL net/nfc/hci/hci 0xef8258d3 nfc_hci_unregister_device +EXPORT_SYMBOL net/nfc/hci/hci 0xfb272a2d nfc_hci_connect_gate +EXPORT_SYMBOL net/nfc/nci/nci 0x03f85b3d nci_core_conn_create +EXPORT_SYMBOL net/nfc/nci/nci 0x0cbe4acd nci_hci_send_event +EXPORT_SYMBOL net/nfc/nci/nci 0x11677bb6 nci_core_conn_close +EXPORT_SYMBOL net/nfc/nci/nci 0x15143d9b nci_unregister_device +EXPORT_SYMBOL net/nfc/nci/nci 0x16e920b8 nci_nfcee_mode_set +EXPORT_SYMBOL net/nfc/nci/nci 0x263147da nci_hci_get_param +EXPORT_SYMBOL net/nfc/nci/nci 0x2a74ced9 nci_req_complete +EXPORT_SYMBOL net/nfc/nci/nci 0x49b64d61 nci_allocate_device +EXPORT_SYMBOL net/nfc/nci/nci 0x4abfbc55 nci_recv_frame +EXPORT_SYMBOL net/nfc/nci/nci 0x5c4b87bd nci_nfcee_discover +EXPORT_SYMBOL net/nfc/nci/nci 0x5eadffbe nci_register_device +EXPORT_SYMBOL net/nfc/nci/nci 0xa649cb2b nci_hci_send_cmd +EXPORT_SYMBOL net/nfc/nci/nci 0xaa5c8448 nci_free_device +EXPORT_SYMBOL net/nfc/nci/nci 0xaabeb781 nci_hci_dev_session_init +EXPORT_SYMBOL net/nfc/nci/nci 0xb2d5b6fa nci_hci_set_param +EXPORT_SYMBOL net/nfc/nci/nci 0xb60d490b nci_hci_open_pipe +EXPORT_SYMBOL net/nfc/nci/nci 0xba490602 nci_to_errno +EXPORT_SYMBOL net/nfc/nci/nci 0xc464d478 nci_hci_connect_gate +EXPORT_SYMBOL net/nfc/nci/nci 0xc5aa2cc0 nci_prop_cmd +EXPORT_SYMBOL net/nfc/nci/nci 0xfc24122e nci_set_config +EXPORT_SYMBOL net/nfc/nfc 0x1ed1de2a nfc_register_device +EXPORT_SYMBOL net/nfc/nfc 0x24165d77 nfc_allocate_device +EXPORT_SYMBOL net/nfc/nfc 0x324b12d6 nfc_dep_link_is_up +EXPORT_SYMBOL net/nfc/nfc 0x36c74deb nfc_send_to_raw_sock +EXPORT_SYMBOL net/nfc/nfc 0x3fe5aee2 nfc_alloc_recv_skb +EXPORT_SYMBOL net/nfc/nfc 0x41f80ee2 nfc_tm_activated +EXPORT_SYMBOL net/nfc/nfc 0x4657f776 nfc_class +EXPORT_SYMBOL net/nfc/nfc 0x660d50b2 nfc_driver_failure +EXPORT_SYMBOL net/nfc/nfc 0x6fff1b5f nfc_get_local_general_bytes +EXPORT_SYMBOL net/nfc/nfc 0x70cfb240 nfc_proto_register +EXPORT_SYMBOL net/nfc/nfc 0x9fed64d1 nfc_find_se +EXPORT_SYMBOL net/nfc/nfc 0xa4a96043 nfc_se_transaction +EXPORT_SYMBOL net/nfc/nfc 0xa507fef5 nfc_fw_download_done +EXPORT_SYMBOL net/nfc/nfc 0xa8715eb2 nfc_proto_unregister +EXPORT_SYMBOL net/nfc/nfc 0xab56c284 nfc_targets_found +EXPORT_SYMBOL net/nfc/nfc 0xae8b4346 nfc_unregister_device +EXPORT_SYMBOL net/nfc/nfc 0xb7cf501d nfc_tm_data_received +EXPORT_SYMBOL net/nfc/nfc 0xcb9f1c66 nfc_set_remote_general_bytes +EXPORT_SYMBOL net/nfc/nfc 0xe2cce9d4 nfc_remove_se +EXPORT_SYMBOL net/nfc/nfc 0xe7c91af2 nfc_tm_deactivated +EXPORT_SYMBOL net/nfc/nfc 0xf594b6f4 nfc_add_se +EXPORT_SYMBOL net/nfc/nfc 0xfd10b2cd nfc_target_lost +EXPORT_SYMBOL net/nfc/nfc_digital 0x8f546f3e nfc_digital_allocate_device +EXPORT_SYMBOL net/nfc/nfc_digital 0xb9e28498 nfc_digital_unregister_device +EXPORT_SYMBOL net/nfc/nfc_digital 0xc71097cd nfc_digital_register_device +EXPORT_SYMBOL net/nfc/nfc_digital 0xffd3dfa8 nfc_digital_free_device +EXPORT_SYMBOL net/phonet/phonet 0x1284bf7d phonet_proto_unregister +EXPORT_SYMBOL net/phonet/phonet 0x1936753e phonet_proto_register +EXPORT_SYMBOL net/phonet/phonet 0x6058c90f pn_sock_get_port +EXPORT_SYMBOL net/phonet/phonet 0x90b917f3 phonet_stream_ops +EXPORT_SYMBOL net/phonet/phonet 0x979c8662 pn_sock_unhash +EXPORT_SYMBOL net/phonet/phonet 0xa7a83382 pn_skb_send +EXPORT_SYMBOL net/phonet/phonet 0xc4fbf870 phonet_header_ops +EXPORT_SYMBOL net/phonet/phonet 0xcc42583c pn_sock_hash +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x02474ade rxrpc_kernel_get_error_number +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x0e0de228 rxrpc_kernel_get_abort_code +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x0effa42a rxrpc_kernel_data_delivered +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x0f7ba55c rxrpc_kernel_begin_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x1c9e6c57 rxrpc_kernel_free_skb +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x32b050fa rxrpc_kernel_reject_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x403a4264 rxrpc_kernel_send_data +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x45bf2b28 key_type_rxrpc +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x4d83bc99 rxrpc_kernel_accept_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x57d91987 rxrpc_kernel_end_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x6ce17f05 rxrpc_get_null_key +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x71614116 rxrpc_kernel_abort_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xc5882e74 rxrpc_kernel_intercept_rx_messages +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xd6a3f02d rxrpc_kernel_is_data_last +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xeb4e4b6a rxrpc_get_server_data_key +EXPORT_SYMBOL net/sctp/sctp 0xddb662a5 sctp_do_peeloff +EXPORT_SYMBOL net/sunrpc/auth_gss/auth_rpcgss 0xa3c175d3 gss_mech_get +EXPORT_SYMBOL net/sunrpc/auth_gss/auth_rpcgss 0xe98f926b gss_mech_put +EXPORT_SYMBOL net/sunrpc/auth_gss/auth_rpcgss 0xf7dcce87 gss_pseudoflavor_to_service +EXPORT_SYMBOL net/sunrpc/sunrpc 0x019228cd svc_pool_stats_open +EXPORT_SYMBOL net/sunrpc/sunrpc 0x7c55cdf1 xdr_restrict_buflen +EXPORT_SYMBOL net/sunrpc/sunrpc 0xae95c67e xdr_truncate_encode +EXPORT_SYMBOL net/wimax/wimax 0xbaaea590 wimax_rfkill +EXPORT_SYMBOL net/wimax/wimax 0xc7862203 wimax_reset +EXPORT_SYMBOL net/wireless/cfg80211 0x0407c598 cfg80211_connect_result +EXPORT_SYMBOL net/wireless/cfg80211 0x06d20f73 __cfg80211_send_event_skb +EXPORT_SYMBOL net/wireless/cfg80211 0x0939cd93 cfg80211_disconnected +EXPORT_SYMBOL net/wireless/cfg80211 0x09c64fbd ieee80211_frequency_to_channel +EXPORT_SYMBOL net/wireless/cfg80211 0x12dc2fee cfg80211_ft_event +EXPORT_SYMBOL net/wireless/cfg80211 0x1879fcbd bridge_tunnel_header +EXPORT_SYMBOL net/wireless/cfg80211 0x19e03378 cfg80211_get_p2p_attr +EXPORT_SYMBOL net/wireless/cfg80211 0x1bbd44db cfg80211_scan_done +EXPORT_SYMBOL net/wireless/cfg80211 0x1d28e17c cfg80211_probe_status +EXPORT_SYMBOL net/wireless/cfg80211 0x2217ffd8 wiphy_register +EXPORT_SYMBOL net/wireless/cfg80211 0x2b07dc53 ieee80211_amsdu_to_8023s +EXPORT_SYMBOL net/wireless/cfg80211 0x2ebcf0e2 wiphy_free +EXPORT_SYMBOL net/wireless/cfg80211 0x2fbe152f cfg80211_radar_event +EXPORT_SYMBOL net/wireless/cfg80211 0x31aac11d cfg80211_chandef_usable +EXPORT_SYMBOL net/wireless/cfg80211 0x3bdd6a8d cfg80211_crit_proto_stopped +EXPORT_SYMBOL net/wireless/cfg80211 0x3d470c4d cfg80211_chandef_compatible +EXPORT_SYMBOL net/wireless/cfg80211 0x3e285fec cfg80211_chandef_valid +EXPORT_SYMBOL net/wireless/cfg80211 0x3e627cbb cfg80211_sched_scan_stopped_rtnl +EXPORT_SYMBOL net/wireless/cfg80211 0x4275d3c1 cfg80211_ibss_joined +EXPORT_SYMBOL net/wireless/cfg80211 0x44437fee cfg80211_rx_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0x46a92e19 cfg80211_tx_mlme_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0x4845e073 cfg80211_rx_mlme_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0x487264b2 cfg80211_ready_on_channel +EXPORT_SYMBOL net/wireless/cfg80211 0x48cccd21 cfg80211_pmksa_candidate_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x495457ff cfg80211_calculate_bitrate +EXPORT_SYMBOL net/wireless/cfg80211 0x4bc07941 cfg80211_iter_combinations +EXPORT_SYMBOL net/wireless/cfg80211 0x4e613b2a freq_reg_info +EXPORT_SYMBOL net/wireless/cfg80211 0x50214c28 ieee80211_bss_get_ie +EXPORT_SYMBOL net/wireless/cfg80211 0x51ec49f6 cfg80211_del_sta_sinfo +EXPORT_SYMBOL net/wireless/cfg80211 0x52b7ec09 cfg80211_new_sta +EXPORT_SYMBOL net/wireless/cfg80211 0x552b0a18 cfg80211_gtk_rekey_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x561ebdc7 cfg80211_conn_failed +EXPORT_SYMBOL net/wireless/cfg80211 0x58f56ea3 cfg80211_sched_scan_stopped +EXPORT_SYMBOL net/wireless/cfg80211 0x5b4c2938 cfg80211_sched_scan_results +EXPORT_SYMBOL net/wireless/cfg80211 0x5e91a4f4 cfg80211_rx_unexpected_4addr_frame +EXPORT_SYMBOL net/wireless/cfg80211 0x5f131908 cfg80211_put_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x605336e9 cfg80211_notify_new_peer_candidate +EXPORT_SYMBOL net/wireless/cfg80211 0x621b52cf cfg80211_report_obss_beacon +EXPORT_SYMBOL net/wireless/cfg80211 0x68c5968e cfg80211_get_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x69b18f43 rfc1042_header +EXPORT_SYMBOL net/wireless/cfg80211 0x6d6cb9ad ieee80211_operating_class_to_band +EXPORT_SYMBOL net/wireless/cfg80211 0x6e24d945 cfg80211_tdls_oper_request +EXPORT_SYMBOL net/wireless/cfg80211 0x72715808 cfg80211_report_wowlan_wakeup +EXPORT_SYMBOL net/wireless/cfg80211 0x76e94c75 cfg80211_reg_can_beacon_relax +EXPORT_SYMBOL net/wireless/cfg80211 0x76f48c54 cfg80211_mgmt_tx_status +EXPORT_SYMBOL net/wireless/cfg80211 0x77a3936c cfg80211_classify8021d +EXPORT_SYMBOL net/wireless/cfg80211 0x79ebf2aa cfg80211_remain_on_channel_expired +EXPORT_SYMBOL net/wireless/cfg80211 0x7a1cff8c cfg80211_inform_bss_width +EXPORT_SYMBOL net/wireless/cfg80211 0x7ef39823 ieee80211_hdrlen +EXPORT_SYMBOL net/wireless/cfg80211 0x7fe1a403 cfg80211_find_ie +EXPORT_SYMBOL net/wireless/cfg80211 0x811919dc wiphy_rfkill_set_hw_state +EXPORT_SYMBOL net/wireless/cfg80211 0x81a91421 cfg80211_assoc_timeout +EXPORT_SYMBOL net/wireless/cfg80211 0x8492a430 ieee80211_get_response_rate +EXPORT_SYMBOL net/wireless/cfg80211 0x8a55a407 cfg80211_unlink_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x8a7062a5 ieee80211_mandatory_rates +EXPORT_SYMBOL net/wireless/cfg80211 0x8a9d7b9f cfg80211_ch_switch_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x9534484d cfg80211_ch_switch_started_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x966ff54d ieee80211_ie_split_ric +EXPORT_SYMBOL net/wireless/cfg80211 0x982e6b6d ieee80211_radiotap_iterator_init +EXPORT_SYMBOL net/wireless/cfg80211 0x9934ba59 wiphy_rfkill_stop_polling +EXPORT_SYMBOL net/wireless/cfg80211 0x99b7e08c cfg80211_get_station +EXPORT_SYMBOL net/wireless/cfg80211 0x9fcdd47a cfg80211_rx_spurious_frame +EXPORT_SYMBOL net/wireless/cfg80211 0xa0d20c63 cfg80211_unregister_wdev +EXPORT_SYMBOL net/wireless/cfg80211 0xa1425906 ieee80211_channel_to_frequency +EXPORT_SYMBOL net/wireless/cfg80211 0xa197b1ff ieee80211_get_mesh_hdrlen +EXPORT_SYMBOL net/wireless/cfg80211 0xa270e92f cfg80211_roamed +EXPORT_SYMBOL net/wireless/cfg80211 0xa4fcd421 wiphy_apply_custom_regulatory +EXPORT_SYMBOL net/wireless/cfg80211 0xa99c3d43 cfg80211_rx_unprot_mlme_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0xac9c7331 cfg80211_reg_can_beacon +EXPORT_SYMBOL net/wireless/cfg80211 0xac9e8168 regulatory_hint +EXPORT_SYMBOL net/wireless/cfg80211 0xb626f211 ieee80211_get_hdrlen_from_skb +EXPORT_SYMBOL net/wireless/cfg80211 0xb65aa825 cfg80211_roamed_bss +EXPORT_SYMBOL net/wireless/cfg80211 0xb83edf1b __cfg80211_alloc_reply_skb +EXPORT_SYMBOL net/wireless/cfg80211 0xbbfad2f0 cfg80211_get_drvinfo +EXPORT_SYMBOL net/wireless/cfg80211 0xbe6c08bf __cfg80211_alloc_event_skb +EXPORT_SYMBOL net/wireless/cfg80211 0xbe7749ca ieee80211_data_to_8023 +EXPORT_SYMBOL net/wireless/cfg80211 0xc4f2d4e5 cfg80211_cac_event +EXPORT_SYMBOL net/wireless/cfg80211 0xc63f1b81 ieee80211_radiotap_iterator_next +EXPORT_SYMBOL net/wireless/cfg80211 0xc90fde22 ieee80211_chandef_to_operating_class +EXPORT_SYMBOL net/wireless/cfg80211 0xcabb338b cfg80211_check_combinations +EXPORT_SYMBOL net/wireless/cfg80211 0xcebb9bf4 wiphy_rfkill_start_polling +EXPORT_SYMBOL net/wireless/cfg80211 0xd3096fdd cfg80211_inform_bss_width_frame +EXPORT_SYMBOL net/wireless/cfg80211 0xd3bdb2d4 __ieee80211_get_channel +EXPORT_SYMBOL net/wireless/cfg80211 0xd400398e wiphy_new_nm +EXPORT_SYMBOL net/wireless/cfg80211 0xd70ad5cf cfg80211_rx_assoc_resp +EXPORT_SYMBOL net/wireless/cfg80211 0xd7bf0e15 cfg80211_cqm_pktloss_notify +EXPORT_SYMBOL net/wireless/cfg80211 0xda4d1206 regulatory_set_wiphy_regd +EXPORT_SYMBOL net/wireless/cfg80211 0xda8994a9 ieee80211_get_num_supported_channels +EXPORT_SYMBOL net/wireless/cfg80211 0xdba126c1 reg_initiator_name +EXPORT_SYMBOL net/wireless/cfg80211 0xe06a3979 wiphy_unregister +EXPORT_SYMBOL net/wireless/cfg80211 0xe291e9e8 ieee80211_data_from_8023 +EXPORT_SYMBOL net/wireless/cfg80211 0xe65d37a4 cfg80211_auth_timeout +EXPORT_SYMBOL net/wireless/cfg80211 0xe791498e cfg80211_michael_mic_failure +EXPORT_SYMBOL net/wireless/cfg80211 0xe9ef7e23 cfg80211_cqm_beacon_loss_notify +EXPORT_SYMBOL net/wireless/cfg80211 0xeb6d7c6c ieee80211_ie_split +EXPORT_SYMBOL net/wireless/cfg80211 0xebe836e0 cfg80211_cqm_txe_notify +EXPORT_SYMBOL net/wireless/cfg80211 0xefc56354 cfg80211_chandef_create +EXPORT_SYMBOL net/wireless/cfg80211 0xf19eda47 cfg80211_ref_bss +EXPORT_SYMBOL net/wireless/cfg80211 0xf4791ce3 cfg80211_chandef_dfs_required +EXPORT_SYMBOL net/wireless/cfg80211 0xf63cc4c7 cfg80211_stop_iface +EXPORT_SYMBOL net/wireless/cfg80211 0xf9f0e0d7 cfg80211_check_station_change +EXPORT_SYMBOL net/wireless/cfg80211 0xfa63901e regulatory_set_wiphy_regd_sync_rtnl +EXPORT_SYMBOL net/wireless/cfg80211 0xfce886b7 cfg80211_cqm_rssi_notify +EXPORT_SYMBOL net/wireless/cfg80211 0xfed4d591 cfg80211_find_vendor_ie +EXPORT_SYMBOL net/wireless/lib80211 0x1f7b3c9e lib80211_crypt_delayed_deinit +EXPORT_SYMBOL net/wireless/lib80211 0x2d0345e8 lib80211_crypt_info_init +EXPORT_SYMBOL net/wireless/lib80211 0x42d2d672 lib80211_get_crypto_ops +EXPORT_SYMBOL net/wireless/lib80211 0x52d2031e lib80211_register_crypto_ops +EXPORT_SYMBOL net/wireless/lib80211 0x7112ba93 lib80211_crypt_info_free +EXPORT_SYMBOL net/wireless/lib80211 0xff5cd689 lib80211_unregister_crypto_ops +EXPORT_SYMBOL sound/ac97_bus 0x9d3fdf9a ac97_bus_type +EXPORT_SYMBOL sound/core/oss/snd-mixer-oss 0x34d5cb39 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 0x1b145b23 snd_seq_event_port_attach +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 0xb8e448a0 snd_seq_set_queue_tempo +EXPORT_SYMBOL sound/core/seq/snd-seq 0xcac0a3be snd_seq_kernel_client_enqueue +EXPORT_SYMBOL sound/core/seq/snd-seq 0xdcfb7e66 snd_seq_kernel_client_enqueue_blocking +EXPORT_SYMBOL sound/core/seq/snd-seq 0xe8ff2100 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 0xfca2d704 snd_seq_kernel_client_write_poll +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0x091def1c snd_seq_autoload_exit +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0x099da547 snd_seq_device_new +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0x370a0736 snd_seq_autoload_init +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0x6339b6d0 snd_seq_device_load_drivers +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 0xf0a1fdb3 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 0xd7c7afcc snd_midi_event_encode +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0xe60fb228 snd_midi_event_reset_decode +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0xecbde43c snd_midi_event_encode_byte +EXPORT_SYMBOL sound/core/seq/snd-seq-virmidi 0x8953397a snd_virmidi_new +EXPORT_SYMBOL sound/core/snd 0x04631b0f snd_power_wait +EXPORT_SYMBOL sound/core/snd 0x05f5154a snd_register_device +EXPORT_SYMBOL sound/core/snd 0x070d855d snd_ctl_notify +EXPORT_SYMBOL sound/core/snd 0x0e72cbae snd_ctl_register_ioctl +EXPORT_SYMBOL sound/core/snd 0x12ef8229 snd_card_file_remove +EXPORT_SYMBOL sound/core/snd 0x17492eac snd_ctl_add +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 0x1abcd574 snd_register_oss_device +EXPORT_SYMBOL sound/core/snd 0x22cc314a snd_jack_set_key +EXPORT_SYMBOL sound/core/snd 0x24a94b26 snd_info_get_line +EXPORT_SYMBOL sound/core/snd 0x2722fccc snd_jack_add_new_kctl +EXPORT_SYMBOL sound/core/snd 0x27c68102 snd_ctl_free_one +EXPORT_SYMBOL sound/core/snd 0x3971b4df snd_ecards_limit +EXPORT_SYMBOL sound/core/snd 0x42f32a2e snd_cards +EXPORT_SYMBOL sound/core/snd 0x454c6539 snd_device_free +EXPORT_SYMBOL sound/core/snd 0x4a3ea5c0 snd_request_card +EXPORT_SYMBOL sound/core/snd 0x4e10352e snd_jack_new +EXPORT_SYMBOL sound/core/snd 0x509285f7 snd_card_new +EXPORT_SYMBOL sound/core/snd 0x557367d1 snd_device_new +EXPORT_SYMBOL sound/core/snd 0x565abeb6 snd_info_create_card_entry +EXPORT_SYMBOL sound/core/snd 0x56c0d291 snd_device_register +EXPORT_SYMBOL sound/core/snd 0x5a18b8f8 _snd_ctl_add_slave +EXPORT_SYMBOL sound/core/snd 0x5a87f762 snd_ctl_new1 +EXPORT_SYMBOL sound/core/snd 0x602c96f0 copy_to_user_fromio +EXPORT_SYMBOL sound/core/snd 0x60aee138 snd_ctl_find_id +EXPORT_SYMBOL sound/core/snd 0x650b66a0 snd_ctl_find_numid +EXPORT_SYMBOL sound/core/snd 0x6578da6a snd_component_add +EXPORT_SYMBOL sound/core/snd 0x70c15ac1 snd_dma_disable +EXPORT_SYMBOL sound/core/snd 0x72a5a2cd snd_card_set_id +EXPORT_SYMBOL sound/core/snd 0x7495675e snd_ctl_make_virtual_master +EXPORT_SYMBOL sound/core/snd 0x75e7b5e5 snd_jack_report +EXPORT_SYMBOL sound/core/snd 0x7f016ab0 snd_info_create_module_entry +EXPORT_SYMBOL sound/core/snd 0x80607b78 snd_ctl_remove +EXPORT_SYMBOL sound/core/snd 0x81b69e41 snd_ctl_enum_info +EXPORT_SYMBOL sound/core/snd 0x8df3789f snd_oss_info_register +EXPORT_SYMBOL sound/core/snd 0x8f595b11 snd_major +EXPORT_SYMBOL sound/core/snd 0x9149c310 snd_pci_quirk_lookup +EXPORT_SYMBOL sound/core/snd 0x990369ee snd_card_register +EXPORT_SYMBOL sound/core/snd 0x9a715584 snd_mixer_oss_notify_callback +EXPORT_SYMBOL sound/core/snd 0x9e6d79f8 snd_info_get_str +EXPORT_SYMBOL sound/core/snd 0xa0fd2427 snd_pci_quirk_lookup_id +EXPORT_SYMBOL sound/core/snd 0xa7307718 snd_card_disconnect +EXPORT_SYMBOL sound/core/snd 0xa786a394 snd_card_file_add +EXPORT_SYMBOL sound/core/snd 0xafcca595 snd_ctl_replace +EXPORT_SYMBOL sound/core/snd 0xb255e1cc snd_card_free_when_closed +EXPORT_SYMBOL sound/core/snd 0xb299f866 snd_ctl_unregister_ioctl +EXPORT_SYMBOL sound/core/snd 0xb2e5ae4a snd_lookup_minor_data +EXPORT_SYMBOL sound/core/snd 0xc395cc6c snd_unregister_device +EXPORT_SYMBOL sound/core/snd 0xce3ca308 copy_from_user_toio +EXPORT_SYMBOL sound/core/snd 0xd0857d1d snd_info_register +EXPORT_SYMBOL sound/core/snd 0xd1157735 release_and_free_resource +EXPORT_SYMBOL sound/core/snd 0xd4a28b75 snd_seq_root +EXPORT_SYMBOL sound/core/snd 0xde8cc960 snd_jack_set_parent +EXPORT_SYMBOL sound/core/snd 0xdf5885b4 snd_ctl_remove_id +EXPORT_SYMBOL sound/core/snd 0xe1efcb05 snd_card_free +EXPORT_SYMBOL sound/core/snd 0xeb43a759 snd_info_free_entry +EXPORT_SYMBOL sound/core/snd 0xed20de6e snd_ctl_rename_id +EXPORT_SYMBOL sound/core/snd 0xf729de3e snd_unregister_oss_device +EXPORT_SYMBOL sound/core/snd 0xfdfe29e1 snd_ctl_boolean_mono_info +EXPORT_SYMBOL sound/core/snd 0xff6ce2fe snd_ctl_boolean_stereo_info +EXPORT_SYMBOL sound/core/snd-hwdep 0x59269fad snd_hwdep_new +EXPORT_SYMBOL sound/core/snd-pcm 0x006f3477 snd_pcm_hw_constraint_ratnums +EXPORT_SYMBOL sound/core/snd-pcm 0x0283dfe3 _snd_pcm_hw_params_any +EXPORT_SYMBOL sound/core/snd-pcm 0x03585111 snd_pcm_lib_free_vmalloc_buffer +EXPORT_SYMBOL sound/core/snd-pcm 0x04cda566 snd_interval_refine +EXPORT_SYMBOL sound/core/snd-pcm 0x0773e31c snd_pcm_period_elapsed +EXPORT_SYMBOL sound/core/snd-pcm 0x09a91bc2 snd_pcm_hw_constraint_pow2 +EXPORT_SYMBOL sound/core/snd-pcm 0x0bf06f19 snd_pcm_set_sync +EXPORT_SYMBOL sound/core/snd-pcm 0x13b70f7d snd_pcm_hw_param_last +EXPORT_SYMBOL sound/core/snd-pcm 0x196ec755 snd_pcm_hw_rule_noresample +EXPORT_SYMBOL sound/core/snd-pcm 0x1b2d7e9d snd_dma_alloc_pages +EXPORT_SYMBOL sound/core/snd-pcm 0x1baa3170 snd_pcm_new +EXPORT_SYMBOL sound/core/snd-pcm 0x1d027e4b snd_pcm_format_signed +EXPORT_SYMBOL sound/core/snd-pcm 0x210336b1 snd_pcm_lib_readv +EXPORT_SYMBOL sound/core/snd-pcm 0x2e2eb449 snd_dma_free_pages +EXPORT_SYMBOL sound/core/snd-pcm 0x30d20de9 snd_pcm_hw_param_first +EXPORT_SYMBOL sound/core/snd-pcm 0x3796bdcc snd_pcm_format_little_endian +EXPORT_SYMBOL sound/core/snd-pcm 0x380a9edd snd_pcm_suspend_all +EXPORT_SYMBOL sound/core/snd-pcm 0x39bf9301 _snd_pcm_hw_param_setempty +EXPORT_SYMBOL sound/core/snd-pcm 0x3b91f3af snd_free_pages +EXPORT_SYMBOL sound/core/snd-pcm 0x4165a005 snd_pcm_lib_malloc_pages +EXPORT_SYMBOL sound/core/snd-pcm 0x49c85f97 snd_pcm_open_substream +EXPORT_SYMBOL sound/core/snd-pcm 0x4d9b6d35 snd_pcm_format_size +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 0x5e7f4920 snd_pcm_format_set_silence +EXPORT_SYMBOL sound/core/snd-pcm 0x650f8603 snd_pcm_format_silence_64 +EXPORT_SYMBOL sound/core/snd-pcm 0x65985a4d snd_pcm_hw_constraint_mask64 +EXPORT_SYMBOL sound/core/snd-pcm 0x68a24153 snd_pcm_format_physical_width +EXPORT_SYMBOL sound/core/snd-pcm 0x6ef8fcd8 snd_pcm_format_linear +EXPORT_SYMBOL sound/core/snd-pcm 0x711f0044 snd_pcm_hw_constraint_ranges +EXPORT_SYMBOL sound/core/snd-pcm 0x731101ba snd_pcm_set_ops +EXPORT_SYMBOL sound/core/snd-pcm 0x78124f00 snd_pcm_hw_rule_add +EXPORT_SYMBOL sound/core/snd-pcm 0x7a75a941 snd_pcm_lib_ioctl +EXPORT_SYMBOL sound/core/snd-pcm 0x88dc53a0 snd_pcm_lib_preallocate_pages +EXPORT_SYMBOL sound/core/snd-pcm 0x891a9364 snd_pcm_kernel_ioctl +EXPORT_SYMBOL sound/core/snd-pcm 0x895e4308 snd_pcm_lib_preallocate_free_for_all +EXPORT_SYMBOL sound/core/snd-pcm 0x8ce72d96 snd_pcm_notify +EXPORT_SYMBOL sound/core/snd-pcm 0x908c3161 snd_pcm_lib_writev +EXPORT_SYMBOL sound/core/snd-pcm 0x94098ff8 snd_interval_list +EXPORT_SYMBOL sound/core/snd-pcm 0x9a8ea54c snd_pcm_hw_constraint_step +EXPORT_SYMBOL sound/core/snd-pcm 0x9c2c62b3 snd_pcm_lib_free_pages +EXPORT_SYMBOL sound/core/snd-pcm 0xa16029e1 snd_pcm_suspend +EXPORT_SYMBOL sound/core/snd-pcm 0xa5b251de snd_pcm_new_stream +EXPORT_SYMBOL sound/core/snd-pcm 0xa61aa028 snd_pcm_format_unsigned +EXPORT_SYMBOL sound/core/snd-pcm 0xad9c1c9d snd_pcm_release_substream +EXPORT_SYMBOL sound/core/snd-pcm 0xade88e76 snd_malloc_pages +EXPORT_SYMBOL sound/core/snd-pcm 0xaef10b68 _snd_pcm_lib_alloc_vmalloc_buffer +EXPORT_SYMBOL sound/core/snd-pcm 0xaf361c23 snd_pcm_hw_constraint_minmax +EXPORT_SYMBOL sound/core/snd-pcm 0xb1660444 snd_pcm_lib_get_vmalloc_page +EXPORT_SYMBOL sound/core/snd-pcm 0xb3da30b4 snd_pcm_lib_write +EXPORT_SYMBOL sound/core/snd-pcm 0xb5c026ca snd_pcm_hw_refine +EXPORT_SYMBOL sound/core/snd-pcm 0xb9638db4 snd_pcm_rate_to_rate_bit +EXPORT_SYMBOL sound/core/snd-pcm 0xb99b519d snd_pcm_limit_hw_rates +EXPORT_SYMBOL sound/core/snd-pcm 0xbc239d44 snd_pcm_mmap_data +EXPORT_SYMBOL sound/core/snd-pcm 0xc0c0c8b2 snd_pcm_hw_constraint_integer +EXPORT_SYMBOL sound/core/snd-pcm 0xca23d924 snd_pcm_stop +EXPORT_SYMBOL sound/core/snd-pcm 0xcab95d97 snd_pcm_hw_constraint_ratdens +EXPORT_SYMBOL sound/core/snd-pcm 0xce3692f9 snd_pcm_lib_preallocate_pages_for_all +EXPORT_SYMBOL sound/core/snd-pcm 0xde22b55a snd_dma_alloc_pages_fallback +EXPORT_SYMBOL sound/core/snd-pcm 0xe56a9336 snd_pcm_format_width +EXPORT_SYMBOL sound/core/snd-pcm 0xe8200abe snd_pcm_lib_mmap_iomem +EXPORT_SYMBOL sound/core/snd-pcm 0xef471ebf snd_pcm_hw_constraint_list +EXPORT_SYMBOL sound/core/snd-pcm 0xef6b1330 snd_pcm_hw_constraint_msbits +EXPORT_SYMBOL sound/core/snd-pcm 0xf2bd9a0d snd_pcm_lib_read +EXPORT_SYMBOL sound/core/snd-pcm 0xf3797152 snd_interval_ratnum +EXPORT_SYMBOL sound/core/snd-pcm 0xfc637d78 snd_pcm_new_internal +EXPORT_SYMBOL sound/core/snd-pcm 0xff6104d0 snd_pcm_rate_bit_to_rate +EXPORT_SYMBOL sound/core/snd-rawmidi 0x036c91fa snd_rawmidi_drop_output +EXPORT_SYMBOL sound/core/snd-rawmidi 0x06259c87 snd_rawmidi_input_params +EXPORT_SYMBOL sound/core/snd-rawmidi 0x08ef3b4c snd_rawmidi_kernel_read +EXPORT_SYMBOL sound/core/snd-rawmidi 0x26160153 snd_rawmidi_kernel_open +EXPORT_SYMBOL sound/core/snd-rawmidi 0x27c64264 snd_rawmidi_receive +EXPORT_SYMBOL sound/core/snd-rawmidi 0x3be748c3 snd_rawmidi_set_ops +EXPORT_SYMBOL sound/core/snd-rawmidi 0x3c175152 snd_rawmidi_output_params +EXPORT_SYMBOL sound/core/snd-rawmidi 0x4e92223b snd_rawmidi_transmit_ack +EXPORT_SYMBOL sound/core/snd-rawmidi 0x5393179a snd_rawmidi_info_select +EXPORT_SYMBOL sound/core/snd-rawmidi 0x599c3598 snd_rawmidi_kernel_write +EXPORT_SYMBOL sound/core/snd-rawmidi 0x6456149b snd_rawmidi_transmit_empty +EXPORT_SYMBOL sound/core/snd-rawmidi 0x66c43519 snd_rawmidi_kernel_release +EXPORT_SYMBOL sound/core/snd-rawmidi 0x7c1df3cf snd_rawmidi_transmit +EXPORT_SYMBOL sound/core/snd-rawmidi 0x8e448a64 snd_rawmidi_drain_input +EXPORT_SYMBOL sound/core/snd-rawmidi 0xf1a7c60f snd_rawmidi_transmit_peek +EXPORT_SYMBOL sound/core/snd-rawmidi 0xf4da8333 snd_rawmidi_drain_output +EXPORT_SYMBOL sound/core/snd-rawmidi 0xf6b328be snd_rawmidi_new +EXPORT_SYMBOL sound/core/snd-timer 0x01547413 snd_timer_global_new +EXPORT_SYMBOL sound/core/snd-timer 0x04ec7d43 snd_timer_notify +EXPORT_SYMBOL sound/core/snd-timer 0x084b6e1e snd_timer_global_register +EXPORT_SYMBOL sound/core/snd-timer 0x22dff2ba snd_timer_new +EXPORT_SYMBOL sound/core/snd-timer 0x38d5a7cb snd_timer_stop +EXPORT_SYMBOL sound/core/snd-timer 0x4772aed6 snd_timer_global_free +EXPORT_SYMBOL sound/core/snd-timer 0x9d900854 snd_timer_pause +EXPORT_SYMBOL sound/core/snd-timer 0x9ff7e0cf snd_timer_open +EXPORT_SYMBOL sound/core/snd-timer 0xa95bd4b5 snd_timer_close +EXPORT_SYMBOL sound/core/snd-timer 0xc1fa9d26 snd_timer_interrupt +EXPORT_SYMBOL sound/core/snd-timer 0xde90ed91 snd_timer_continue +EXPORT_SYMBOL sound/core/snd-timer 0xe0ff4466 snd_timer_resolution +EXPORT_SYMBOL sound/core/snd-timer 0xfc07bb38 snd_timer_start +EXPORT_SYMBOL sound/drivers/mpu401/snd-mpu401-uart 0x6d629c59 snd_mpu401_uart_interrupt_tx +EXPORT_SYMBOL sound/drivers/mpu401/snd-mpu401-uart 0xa797affc 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 0x09facf4b snd_opl3_new +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x4695e9af snd_opl3_create +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x4754b3d7 snd_opl3_hwdep_new +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x5c49d713 snd_opl3_reset +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x5cbbd03c snd_opl3_timer_new +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x7ffb5101 snd_opl3_interrupt +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x8d990dd6 snd_opl3_init +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xda02d665 snd_opl3_load_patch +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xf3c15efa snd_opl3_find_patch +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x226138b0 snd_vx_threaded_irq_handler +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x40764001 snd_vx_suspend +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x58cb1f51 snd_vx_resume +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x5c265d8a snd_vx_setup_firmware +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x68c4f866 snd_vx_create +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x7f086b0b snd_vx_dsp_boot +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x838d9269 snd_vx_free_firmware +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xb2a91799 snd_vx_load_boot_image +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xc94eba09 snd_vx_check_reg_bit +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xca9e0db7 snd_vx_dsp_load +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xf1f04d23 snd_vx_irq_handler +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x06eba441 cmp_connection_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x083b55d9 amdtp_stream_stop +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x1393e721 fw_iso_resources_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x1e9b9bb8 fcp_bus_reset +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x20254e45 amdtp_syt_intervals +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x26ade135 amdtp_stream_set_pcm_format +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x3ad82137 avc_general_set_sig_fmt +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x49ade3ab fw_iso_resources_allocate +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x53ca18e8 amdtp_rate_table +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x555ac8ad cmp_connection_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x5c122a5a amdtp_stream_add_pcm_hw_constraints +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x691c7626 amdtp_stream_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x71f5cbe3 iso_packets_buffer_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x7716349f cmp_connection_check_used +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x7e18e4e0 iso_packets_buffer_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x7fcd272d cmp_connection_update +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x83bfc200 amdtp_stream_update +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x9554a414 fw_iso_resources_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x9960b843 avc_general_get_sig_fmt +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x9dc08cba fw_iso_resources_free +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x9fea4efa amdtp_stream_get_max_payload +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xb72bf014 amdtp_stream_pcm_abort +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xbd554c4f amdtp_stream_set_parameters +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xcc396cc1 fw_iso_resources_update +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xede31a56 amdtp_stream_start +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xee387229 avc_general_get_plug_info +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xef80f439 amdtp_stream_pcm_pointer +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xf1027506 snd_fw_transaction +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xf105f789 amdtp_stream_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xf38d1cbb amdtp_stream_pcm_prepare +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xf6986af4 fcp_avc_transaction +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xf709280a cmp_connection_break +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xfce2b74e cmp_connection_establish +EXPORT_SYMBOL sound/i2c/other/snd-ak4113 0x0c3c4590 snd_ak4113_suspend +EXPORT_SYMBOL sound/i2c/other/snd-ak4113 0xff2a5638 snd_ak4113_resume +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x313fb45e snd_ak4114_check_rate_and_errors +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x4f5cb21a snd_ak4114_create +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x88f19bd2 snd_ak4114_resume +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x95dcf143 snd_ak4114_external_rate +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0xab000717 snd_ak4114_suspend +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0xc995513a snd_ak4114_reg_write +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0xd8b45d13 snd_ak4114_build +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0xdb3e1e6a snd_ak4114_reinit +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0x13b2cb15 snd_ak4117_reg_write +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0x1cb5cc6c snd_ak4117_external_rate +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0x450f85a3 snd_ak4117_create +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0x55319032 snd_ak4117_check_rate_and_errors +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0x88aed88b snd_ak4117_build +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0xce61a380 snd_ak4117_reinit +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0x01ff63ef snd_akm4xxx_init +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0x35396562 snd_akm4xxx_build_controls +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0xc5176ced snd_akm4xxx_write +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0xf079366d snd_akm4xxx_reset +EXPORT_SYMBOL sound/i2c/other/snd-pt2258 0x2a1d95ed snd_pt2258_build_controls +EXPORT_SYMBOL sound/i2c/other/snd-pt2258 0x6e583139 snd_pt2258_reset +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x135c0fbc snd_cs8427_iec958_active +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x317b7173 snd_cs8427_iec958_pcm +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x467a9c16 snd_cs8427_init +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x9af5146c snd_cs8427_reg_write +EXPORT_SYMBOL sound/i2c/snd-cs8427 0xba4fbd42 snd_cs8427_iec958_build +EXPORT_SYMBOL sound/i2c/snd-cs8427 0xd97b425f snd_cs8427_create +EXPORT_SYMBOL sound/i2c/snd-i2c 0x7e6ce4d2 snd_i2c_sendbytes +EXPORT_SYMBOL sound/i2c/snd-i2c 0x7f99bc93 snd_i2c_device_free +EXPORT_SYMBOL sound/i2c/snd-i2c 0xaff25c95 snd_i2c_device_create +EXPORT_SYMBOL sound/i2c/snd-i2c 0xb23abbf8 snd_i2c_probeaddr +EXPORT_SYMBOL sound/i2c/snd-i2c 0xe39b671f snd_i2c_bus_create +EXPORT_SYMBOL sound/i2c/snd-i2c 0xedd1d38c snd_i2c_readbytes +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x09496748 snd_sbmixer_new +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x45218b5b snd_sbdsp_command +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x5ec3cc8e snd_sbdsp_create +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x6d28f59b snd_sbmixer_add_ctl +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x74df220f snd_sbdsp_get_byte +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x8bab3ea9 snd_sbmixer_suspend +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0xa28490f2 snd_sbdsp_reset +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0xd624464e snd_sbmixer_read +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0xf43848d0 snd_sbmixer_write +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0xfad1fa1a snd_sbmixer_resume +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x07509fb6 snd_ac97_write_cache +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x11207444 snd_ac97_update +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x3233f609 snd_ac97_read +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x44f0a9e9 snd_ac97_mixer +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x4ad97b95 snd_ac97_pcm_double_rate_rules +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x79548115 snd_ac97_tune_hardware +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x875ce035 snd_ac97_update_power +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x8aa0db41 snd_ac97_write +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x8ce37e1b snd_ac97_set_rate +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x9fd770a1 snd_ac97_get_short_name +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xa576e1b2 snd_ac97_pcm_close +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xb98ddd3e snd_ac97_resume +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xc61b5ebc snd_ac97_bus +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xc9a1d1ca snd_ac97_pcm_assign +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xd086d440 snd_ac97_suspend +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xebf0bb2d snd_ac97_pcm_open +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xfcb33ddc snd_ac97_update_bits +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x0c98ee69 snd_emu10k1_memblk_map +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x41c70edc snd_emu10k1_synth_free +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x4f99c280 snd_emu10k1_synth_bzero +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xa2cf227d snd_emu10k1_voice_free +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xb1c661c7 snd_emu10k1_voice_alloc +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xb6ac2868 snd_emu10k1_ptr_read +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xb9685e93 snd_emu10k1_ptr_write +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xbd3e86a3 snd_emu10k1_synth_copy_from_user +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xd468afc9 snd_emu10k1_synth_alloc +EXPORT_SYMBOL sound/pci/ice1712/snd-ice17xx-ak4xxx 0x65fed74a snd_ice1712_akm4xxx_init +EXPORT_SYMBOL sound/pci/ice1712/snd-ice17xx-ak4xxx 0x698578b7 snd_ice1712_akm4xxx_build_controls +EXPORT_SYMBOL sound/pci/ice1712/snd-ice17xx-ak4xxx 0x6da9f6c9 snd_ice1712_akm4xxx_free +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x07952dcb oxygen_write_ac97_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x1c834c35 oxygen_pci_pm +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x261b5a9c oxygen_write8_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x3c614fa8 oxygen_write_spi +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x44986066 oxygen_write_i2c +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x4fd1ae33 oxygen_write8 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x806c74ac oxygen_write32_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x86a02ced oxygen_pci_remove +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x8efdb96e oxygen_reset_uart +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x9f4cd829 oxygen_read8 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xb7986e42 oxygen_pci_probe +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xb8b2d265 oxygen_read32 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xbb548587 oxygen_write16 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xbe799c44 oxygen_write32 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xbf71a664 oxygen_pci_shutdown +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xc828e3e7 oxygen_write16_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xda642cb1 oxygen_update_dac_routing +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xdca6b970 oxygen_read_ac97 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xdcbff6bf oxygen_read16 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xe3312e1f oxygen_write_ac97 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xfff3012e oxygen_write_uart +EXPORT_SYMBOL sound/pci/trident/snd-trident 0x2c1a25db snd_trident_free_voice +EXPORT_SYMBOL sound/pci/trident/snd-trident 0x56189421 snd_trident_stop_voice +EXPORT_SYMBOL sound/pci/trident/snd-trident 0x882647bf snd_trident_start_voice +EXPORT_SYMBOL sound/pci/trident/snd-trident 0xad68ca3f snd_trident_alloc_voice +EXPORT_SYMBOL sound/pci/trident/snd-trident 0xeed281b8 snd_trident_write_voice_regs +EXPORT_SYMBOL sound/soc/codecs/snd-soc-tlv320aic23 0x81020679 tlv320aic23_regmap +EXPORT_SYMBOL sound/soc/codecs/snd-soc-tlv320aic23 0xdcdcfe6d tlv320aic23_probe +EXPORT_SYMBOL sound/soc/snd-soc-core 0x232245cd snd_soc_alloc_ac97_codec +EXPORT_SYMBOL sound/soundcore 0x618a08d2 register_sound_special_device +EXPORT_SYMBOL sound/soundcore 0x744e7594 register_sound_midi +EXPORT_SYMBOL sound/soundcore 0x7afc9d8a unregister_sound_mixer +EXPORT_SYMBOL sound/soundcore 0x7cdedd16 register_sound_mixer +EXPORT_SYMBOL sound/soundcore 0x99c95fa5 unregister_sound_special +EXPORT_SYMBOL sound/soundcore 0xc11c2c34 sound_class +EXPORT_SYMBOL sound/soundcore 0xcd083b10 unregister_sound_dsp +EXPORT_SYMBOL sound/soundcore 0xd9be91ff register_sound_special +EXPORT_SYMBOL sound/soundcore 0xe855cb34 register_sound_dsp +EXPORT_SYMBOL sound/soundcore 0xfdab6de3 unregister_sound_midi +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x102e87a1 snd_emux_terminate_all +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x12cfaf0b snd_emux_lock_voice +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x2064012f snd_emux_new +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x27d694fe snd_emux_unlock_voice +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x37950cd7 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 0xe2079d2d snd_emux_free +EXPORT_SYMBOL sound/synth/snd-util-mem 0x0c5d9d2c snd_util_memhdr_new +EXPORT_SYMBOL sound/synth/snd-util-mem 0x2634ffba __snd_util_mem_alloc +EXPORT_SYMBOL sound/synth/snd-util-mem 0x3b63ae08 snd_util_memhdr_free +EXPORT_SYMBOL sound/synth/snd-util-mem 0x3e455d32 __snd_util_mem_free +EXPORT_SYMBOL sound/synth/snd-util-mem 0x71c7bc6f snd_util_mem_alloc +EXPORT_SYMBOL sound/synth/snd-util-mem 0x96457031 snd_util_mem_avail +EXPORT_SYMBOL sound/synth/snd-util-mem 0xbdbee37b __snd_util_memblk_new +EXPORT_SYMBOL sound/synth/snd-util-mem 0xf91bbfca snd_util_mem_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 0xd6daf325 snd_usbmidi_create +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0xd9d2bb03 snd_usbmidi_disconnect +EXPORT_SYMBOL vmlinux 0x00005b44 __get_user_pages_unlocked +EXPORT_SYMBOL vmlinux 0x0006bfb8 __sk_dst_check +EXPORT_SYMBOL vmlinux 0x003ed69a __kfifo_dma_in_prepare +EXPORT_SYMBOL vmlinux 0x00446d7f vme_dma_list_add +EXPORT_SYMBOL vmlinux 0x00822c48 of_phy_attach +EXPORT_SYMBOL vmlinux 0x0089c706 netdev_lower_get_next_private +EXPORT_SYMBOL vmlinux 0x00c4095b revert_creds +EXPORT_SYMBOL vmlinux 0x00d7e722 vme_lm_count +EXPORT_SYMBOL vmlinux 0x00fae2fe of_graph_get_next_endpoint +EXPORT_SYMBOL vmlinux 0x01000e51 schedule +EXPORT_SYMBOL vmlinux 0x0101d5b1 ip_idents_reserve +EXPORT_SYMBOL vmlinux 0x010cb971 pcie_port_service_register +EXPORT_SYMBOL vmlinux 0x01139ffc max_mapnr +EXPORT_SYMBOL vmlinux 0x012a97fc xor_altivec_4 +EXPORT_SYMBOL vmlinux 0x016776c0 pci_iomap_range +EXPORT_SYMBOL vmlinux 0x016e5c2a mod_timer +EXPORT_SYMBOL vmlinux 0x0186e2de smp_call_function_many +EXPORT_SYMBOL vmlinux 0x01a00a7f sock_no_bind +EXPORT_SYMBOL vmlinux 0x01b121d2 fb_class +EXPORT_SYMBOL vmlinux 0x01c94af5 xfrm_state_add +EXPORT_SYMBOL vmlinux 0x01ccf1a5 dcb_setapp +EXPORT_SYMBOL vmlinux 0x01d3a31f pcix_get_max_mmrbc +EXPORT_SYMBOL vmlinux 0x01d76a91 devm_request_any_context_irq +EXPORT_SYMBOL vmlinux 0x01e3b0b1 mdio_bus_type +EXPORT_SYMBOL vmlinux 0x02159b02 __free_pages +EXPORT_SYMBOL vmlinux 0x0218e602 i2c_clients_command +EXPORT_SYMBOL vmlinux 0x02435fa0 fib_default_rule_pref +EXPORT_SYMBOL vmlinux 0x02464bd8 scsi_print_result +EXPORT_SYMBOL vmlinux 0x025456b7 ppp_input_error +EXPORT_SYMBOL vmlinux 0x02649054 security_sock_rcv_skb +EXPORT_SYMBOL vmlinux 0x0272e6d0 fb_firmware_edid +EXPORT_SYMBOL vmlinux 0x0274dc2b netif_get_num_default_rss_queues +EXPORT_SYMBOL vmlinux 0x027ab9e0 blkdev_issue_flush +EXPORT_SYMBOL vmlinux 0x0282711a page_put_link +EXPORT_SYMBOL vmlinux 0x02a18c74 nf_conntrack_destroy +EXPORT_SYMBOL vmlinux 0x02a6ce5a crc16_table +EXPORT_SYMBOL vmlinux 0x02b953a5 mipi_dsi_dcs_read +EXPORT_SYMBOL vmlinux 0x02d013a1 macio_dev_get +EXPORT_SYMBOL vmlinux 0x02ea111e scsi_driverbyte_string +EXPORT_SYMBOL vmlinux 0x02ee26c1 free_pages_exact +EXPORT_SYMBOL vmlinux 0x02f3c283 blk_queue_max_discard_sectors +EXPORT_SYMBOL vmlinux 0x02f8192a vlan_dev_vlan_id +EXPORT_SYMBOL vmlinux 0x03008101 skb_free_datagram_locked +EXPORT_SYMBOL vmlinux 0x0301e403 mipi_dsi_dcs_set_tear_off +EXPORT_SYMBOL vmlinux 0x031a0336 proc_set_size +EXPORT_SYMBOL vmlinux 0x0334da4e scsi_command_size_tbl +EXPORT_SYMBOL vmlinux 0x0343b8e6 of_device_is_compatible +EXPORT_SYMBOL vmlinux 0x0352a39c install_exec_creds +EXPORT_SYMBOL vmlinux 0x03592ea0 security_unix_stream_connect +EXPORT_SYMBOL vmlinux 0x035b2691 jbd2_journal_extend +EXPORT_SYMBOL vmlinux 0x0366307a console_suspend_enabled +EXPORT_SYMBOL vmlinux 0x036d0aee devm_free_irq +EXPORT_SYMBOL vmlinux 0x037a0cba kfree +EXPORT_SYMBOL vmlinux 0x03abfa63 __break_lease +EXPORT_SYMBOL vmlinux 0x03c31ec6 bio_split +EXPORT_SYMBOL vmlinux 0x03d309a4 udp_lib_unhash +EXPORT_SYMBOL vmlinux 0x03d5fb80 input_alloc_absinfo +EXPORT_SYMBOL vmlinux 0x03d70b60 napi_gro_flush +EXPORT_SYMBOL vmlinux 0x03d8142c follow_down_one +EXPORT_SYMBOL vmlinux 0x03f5bbad padata_set_cpumask +EXPORT_SYMBOL vmlinux 0x03fb2686 dev_printk_emit +EXPORT_SYMBOL vmlinux 0x03fd2571 vm_unmap_ram +EXPORT_SYMBOL vmlinux 0x0422fe4a inet_csk_timer_bug_msg +EXPORT_SYMBOL vmlinux 0x042e8879 __blockdev_direct_IO +EXPORT_SYMBOL vmlinux 0x04482cdb __refrigerator +EXPORT_SYMBOL vmlinux 0x0487f831 fb_find_best_display +EXPORT_SYMBOL vmlinux 0x04bc97de blk_rq_map_sg +EXPORT_SYMBOL vmlinux 0x04c8d7a0 __devcgroup_inode_permission +EXPORT_SYMBOL vmlinux 0x04d9c885 tcp_read_sock +EXPORT_SYMBOL vmlinux 0x04dc9e9b param_ops_invbool +EXPORT_SYMBOL vmlinux 0x04ea56f9 _kstrtol +EXPORT_SYMBOL vmlinux 0x04f1041d lockref_get +EXPORT_SYMBOL vmlinux 0x050dcffc twl6040_get_pll +EXPORT_SYMBOL vmlinux 0x05186ca4 flush_icache_range +EXPORT_SYMBOL vmlinux 0x05240ee7 percpu_counter_batch +EXPORT_SYMBOL vmlinux 0x0530dede _raw_write_trylock +EXPORT_SYMBOL vmlinux 0x0542be41 jbd2_journal_dirty_metadata +EXPORT_SYMBOL vmlinux 0x05626aab devm_gpiod_get_array +EXPORT_SYMBOL vmlinux 0x056b8bfb agp_generic_alloc_page +EXPORT_SYMBOL vmlinux 0x057d8fe3 input_reset_device +EXPORT_SYMBOL vmlinux 0x0589e48d dev_get_by_name_rcu +EXPORT_SYMBOL vmlinux 0x05a514a1 _insl_ns +EXPORT_SYMBOL vmlinux 0x05ab37cd ipv6_chk_prefix +EXPORT_SYMBOL vmlinux 0x05b80005 ip_route_me_harder +EXPORT_SYMBOL vmlinux 0x05e13e5a mod_zone_page_state +EXPORT_SYMBOL vmlinux 0x05e6f581 pci_msi_vec_count +EXPORT_SYMBOL vmlinux 0x06004253 devm_get_gpiod_from_child +EXPORT_SYMBOL vmlinux 0x061651be strcat +EXPORT_SYMBOL vmlinux 0x0627f850 fsnotify_init_mark +EXPORT_SYMBOL vmlinux 0x0628d3f1 sock_create_lite +EXPORT_SYMBOL vmlinux 0x0634100a bitmap_parselist_user +EXPORT_SYMBOL vmlinux 0x06610dc6 scsi_is_host_device +EXPORT_SYMBOL vmlinux 0x0664c854 dqget +EXPORT_SYMBOL vmlinux 0x0675c7eb atomic64_cmpxchg +EXPORT_SYMBOL vmlinux 0x067d8d35 security_release_secctx +EXPORT_SYMBOL vmlinux 0x068d8299 unlink_framebuffer +EXPORT_SYMBOL vmlinux 0x0693abe9 qdisc_destroy +EXPORT_SYMBOL vmlinux 0x06c574ff vfs_unlink +EXPORT_SYMBOL vmlinux 0x06c66cba find_get_pages_tag +EXPORT_SYMBOL vmlinux 0x06dfd01f pci_release_selected_regions +EXPORT_SYMBOL vmlinux 0x06e23d47 sock_alloc_send_pskb +EXPORT_SYMBOL vmlinux 0x06f2e765 init_buffer +EXPORT_SYMBOL vmlinux 0x06fc6bcf uart_match_port +EXPORT_SYMBOL vmlinux 0x06fe3b14 default_grn +EXPORT_SYMBOL vmlinux 0x07102281 unlock_new_inode +EXPORT_SYMBOL vmlinux 0x0712f698 dcbnl_cee_notify +EXPORT_SYMBOL vmlinux 0x0727c4f3 iowrite8 +EXPORT_SYMBOL vmlinux 0x072f901c vme_master_rmw +EXPORT_SYMBOL vmlinux 0x0745af66 input_allocate_device +EXPORT_SYMBOL vmlinux 0x074e9213 down_killable +EXPORT_SYMBOL vmlinux 0x075e48f5 of_find_node_with_property +EXPORT_SYMBOL vmlinux 0x07916f7f iov_iter_fault_in_readable +EXPORT_SYMBOL vmlinux 0x07a2bbb3 textsearch_destroy +EXPORT_SYMBOL vmlinux 0x07a890c8 fb_alloc_cmap +EXPORT_SYMBOL vmlinux 0x07aa99e7 ip_ct_attach +EXPORT_SYMBOL vmlinux 0x07bc231c tty_name +EXPORT_SYMBOL vmlinux 0x07cc4a5d printk_timed_ratelimit +EXPORT_SYMBOL vmlinux 0x07e0cb17 up_write +EXPORT_SYMBOL vmlinux 0x07e36b69 security_d_instantiate +EXPORT_SYMBOL vmlinux 0x07f35097 __inet_stream_connect +EXPORT_SYMBOL vmlinux 0x081164ff jbd2_journal_force_commit_nested +EXPORT_SYMBOL vmlinux 0x082c3213 pci_root_buses +EXPORT_SYMBOL vmlinux 0x082eddf5 gnet_stats_copy_queue +EXPORT_SYMBOL vmlinux 0x082f6528 set_security_override_from_ctx +EXPORT_SYMBOL vmlinux 0x083af719 ip_mc_dec_group +EXPORT_SYMBOL vmlinux 0x083d3242 grab_cache_page_write_begin +EXPORT_SYMBOL vmlinux 0x083eb21c rfkill_unregister +EXPORT_SYMBOL vmlinux 0x084f8509 keyring_alloc +EXPORT_SYMBOL vmlinux 0x088675fa module_refcount +EXPORT_SYMBOL vmlinux 0x08904456 dev_mc_add +EXPORT_SYMBOL vmlinux 0x08928b90 __nla_put +EXPORT_SYMBOL vmlinux 0x0896bd24 macio_unregister_driver +EXPORT_SYMBOL vmlinux 0x08979e9f scsi_get_host_dev +EXPORT_SYMBOL vmlinux 0x08aeeab1 pci_platform_rom +EXPORT_SYMBOL vmlinux 0x08bd410c skb_vlan_untag +EXPORT_SYMBOL vmlinux 0x08cdf8ee __scm_send +EXPORT_SYMBOL vmlinux 0x08df9457 neigh_proc_dointvec_ms_jiffies +EXPORT_SYMBOL vmlinux 0x08e29dc5 __neigh_set_probe_once +EXPORT_SYMBOL vmlinux 0x08ea69e7 mipi_dsi_packet_format_is_long +EXPORT_SYMBOL vmlinux 0x08f53fd4 of_n_size_cells +EXPORT_SYMBOL vmlinux 0x0923e7cb skb_copy_expand +EXPORT_SYMBOL vmlinux 0x09580deb init_timer_key +EXPORT_SYMBOL vmlinux 0x09739bee __mutex_init +EXPORT_SYMBOL vmlinux 0x098b71c6 fb_dealloc_cmap +EXPORT_SYMBOL vmlinux 0x0997c436 kill_fasync +EXPORT_SYMBOL vmlinux 0x09bbbb91 trace_print_symbols_seq_u64 +EXPORT_SYMBOL vmlinux 0x09c3db8d inet_add_protocol +EXPORT_SYMBOL vmlinux 0x09c55cec schedule_timeout_interruptible +EXPORT_SYMBOL vmlinux 0x09c67afb flex_array_get +EXPORT_SYMBOL vmlinux 0x09c8eb55 font_vga_8x16 +EXPORT_SYMBOL vmlinux 0x09cec40f agp_alloc_bridge +EXPORT_SYMBOL vmlinux 0x09d0754d mount_nodev +EXPORT_SYMBOL vmlinux 0x09d44df9 in_lock_functions +EXPORT_SYMBOL vmlinux 0x0a092cbf bio_endio +EXPORT_SYMBOL vmlinux 0x0a0cc896 sock_no_connect +EXPORT_SYMBOL vmlinux 0x0a2487e0 unblock_all_signals +EXPORT_SYMBOL vmlinux 0x0a292872 reservation_seqcount_class +EXPORT_SYMBOL vmlinux 0x0a3131f6 strnchr +EXPORT_SYMBOL vmlinux 0x0a373226 crc32_le_shift +EXPORT_SYMBOL vmlinux 0x0a469d23 mfd_clone_cell +EXPORT_SYMBOL vmlinux 0x0a5a075f dcb_ieee_getapp_mask +EXPORT_SYMBOL vmlinux 0x0a5bfba0 inode_dio_wait +EXPORT_SYMBOL vmlinux 0x0a7051e2 inet6_protos +EXPORT_SYMBOL vmlinux 0x0a7be3db cancel_dirty_page +EXPORT_SYMBOL vmlinux 0x0a7e8514 ppc_md +EXPORT_SYMBOL vmlinux 0x0aa309cf synchronize_hardirq +EXPORT_SYMBOL vmlinux 0x0aa46bee generic_setxattr +EXPORT_SYMBOL vmlinux 0x0ab2a206 blk_dump_rq_flags +EXPORT_SYMBOL vmlinux 0x0abcf3da alloc_etherdev_mqs +EXPORT_SYMBOL vmlinux 0x0acf7679 dma_issue_pending_all +EXPORT_SYMBOL vmlinux 0x0ae3123d xfrm_state_unregister_afinfo +EXPORT_SYMBOL vmlinux 0x0aecc49f down_write_trylock +EXPORT_SYMBOL vmlinux 0x0aedc648 devm_gpio_free +EXPORT_SYMBOL vmlinux 0x0b0d888b icmpv6_err_convert +EXPORT_SYMBOL vmlinux 0x0b1beb31 vmalloc_32_user +EXPORT_SYMBOL vmlinux 0x0b2ba6e9 agp_generic_type_to_mask_type +EXPORT_SYMBOL vmlinux 0x0b35b91f pci_bus_write_config_word +EXPORT_SYMBOL vmlinux 0x0b360f40 dev_addr_add +EXPORT_SYMBOL vmlinux 0x0b45bbad sg_alloc_table_from_pages +EXPORT_SYMBOL vmlinux 0x0b48677a __kfifo_init +EXPORT_SYMBOL vmlinux 0x0b48d901 scsi_report_opcode +EXPORT_SYMBOL vmlinux 0x0b6c3768 pcibios_resource_to_bus +EXPORT_SYMBOL vmlinux 0x0b70d133 filemap_fdatawait +EXPORT_SYMBOL vmlinux 0x0b742fd7 simple_strtol +EXPORT_SYMBOL vmlinux 0x0b76e27d mipi_dsi_host_unregister +EXPORT_SYMBOL vmlinux 0x0b7a01be unlock_rename +EXPORT_SYMBOL vmlinux 0x0b852354 call_netdevice_notifiers +EXPORT_SYMBOL vmlinux 0x0b863eb0 mac_find_mode +EXPORT_SYMBOL vmlinux 0x0b96d256 backlight_device_register +EXPORT_SYMBOL vmlinux 0x0bacc795 iov_iter_bvec +EXPORT_SYMBOL vmlinux 0x0bbc5908 gen_estimator_active +EXPORT_SYMBOL vmlinux 0x0bc477a2 irq_set_irq_type +EXPORT_SYMBOL vmlinux 0x0bf1cadc pm8606_osc_enable +EXPORT_SYMBOL vmlinux 0x0c0a5a15 audit_log_task_info +EXPORT_SYMBOL vmlinux 0x0c12e626 __debugger_bpt +EXPORT_SYMBOL vmlinux 0x0c45fc96 vfs_lstat +EXPORT_SYMBOL vmlinux 0x0c535204 mmc_unregister_driver +EXPORT_SYMBOL vmlinux 0x0c581a3d ab3100_event_unregister +EXPORT_SYMBOL vmlinux 0x0c58a8cd netdev_increment_features +EXPORT_SYMBOL vmlinux 0x0c6ac60d unregister_key_type +EXPORT_SYMBOL vmlinux 0x0c750823 security_path_rmdir +EXPORT_SYMBOL vmlinux 0x0c82c166 get_user_pages +EXPORT_SYMBOL vmlinux 0x0c8b4f44 kernel_getsockopt +EXPORT_SYMBOL vmlinux 0x0c8f20f0 do_truncate +EXPORT_SYMBOL vmlinux 0x0c9881d4 kill_pgrp +EXPORT_SYMBOL vmlinux 0x0c9b6089 nvram_get_size +EXPORT_SYMBOL vmlinux 0x0ca0c882 twl6030_interrupt_mask +EXPORT_SYMBOL vmlinux 0x0ca4320f i2c_del_adapter +EXPORT_SYMBOL vmlinux 0x0cae232b utf16s_to_utf8s +EXPORT_SYMBOL vmlinux 0x0cc6f17d dm_unregister_target +EXPORT_SYMBOL vmlinux 0x0ccf52e1 of_mm_gpiochip_add +EXPORT_SYMBOL vmlinux 0x0d14ccba param_set_long +EXPORT_SYMBOL vmlinux 0x0d2b13c9 peernet2id_alloc +EXPORT_SYMBOL vmlinux 0x0d40a560 skb_mac_gso_segment +EXPORT_SYMBOL vmlinux 0x0d542439 __ipv6_addr_type +EXPORT_SYMBOL vmlinux 0x0d61eeee __bitmap_subset +EXPORT_SYMBOL vmlinux 0x0d759002 sk_alloc +EXPORT_SYMBOL vmlinux 0x0d78008f md_register_thread +EXPORT_SYMBOL vmlinux 0x0d83b70b dquot_quota_on +EXPORT_SYMBOL vmlinux 0x0d8734ee netdev_update_features +EXPORT_SYMBOL vmlinux 0x0d9a92aa pagecache_write_begin +EXPORT_SYMBOL vmlinux 0x0d9b76cc tcp_req_err +EXPORT_SYMBOL vmlinux 0x0da10ec3 security_sock_graft +EXPORT_SYMBOL vmlinux 0x0daaf7f4 adb_client_list +EXPORT_SYMBOL vmlinux 0x0dbf38b8 mol_trampoline +EXPORT_SYMBOL vmlinux 0x0dc0ace0 idr_find_slowpath +EXPORT_SYMBOL vmlinux 0x0dc1a78c bin2hex +EXPORT_SYMBOL vmlinux 0x0dc43058 scsi_dma_map +EXPORT_SYMBOL vmlinux 0x0e133cde proto_register +EXPORT_SYMBOL vmlinux 0x0e220cab scsi_device_set_state +EXPORT_SYMBOL vmlinux 0x0e2a0a8a wait_iff_congested +EXPORT_SYMBOL vmlinux 0x0e31dab5 ip6_route_me_harder +EXPORT_SYMBOL vmlinux 0x0e336cc2 tso_build_hdr +EXPORT_SYMBOL vmlinux 0x0e57eff2 __hw_addr_unsync_dev +EXPORT_SYMBOL vmlinux 0x0e6da44a set_normalized_timespec +EXPORT_SYMBOL vmlinux 0x0e72ca88 macio_enable_devres +EXPORT_SYMBOL vmlinux 0x0e747a5d from_kuid_munged +EXPORT_SYMBOL vmlinux 0x0e8cb4e2 __cleancache_get_page +EXPORT_SYMBOL vmlinux 0x0e8f30f6 _raw_write_lock_irq +EXPORT_SYMBOL vmlinux 0x0eaf451e hdmi_vendor_infoframe_pack +EXPORT_SYMBOL vmlinux 0x0ec42a4c seq_escape +EXPORT_SYMBOL vmlinux 0x0ec5babe vme_dma_free +EXPORT_SYMBOL vmlinux 0x0ece68f7 tcf_em_register +EXPORT_SYMBOL vmlinux 0x0eecdafc blk_queue_bounce_limit +EXPORT_SYMBOL vmlinux 0x0ef10b13 alloc_netdev_mqs +EXPORT_SYMBOL vmlinux 0x0ef20db1 kernstart_addr +EXPORT_SYMBOL vmlinux 0x0ef7e00c generic_file_write_iter +EXPORT_SYMBOL vmlinux 0x0efcbb1b set_current_groups +EXPORT_SYMBOL vmlinux 0x0f10663c tty_port_hangup +EXPORT_SYMBOL vmlinux 0x0f165442 i2c_smbus_read_byte +EXPORT_SYMBOL vmlinux 0x0f28cb91 nvram_read_byte +EXPORT_SYMBOL vmlinux 0x0f2d3b07 open_exec +EXPORT_SYMBOL vmlinux 0x0f4c91ed ns_to_timespec +EXPORT_SYMBOL vmlinux 0x0f522854 iov_iter_init +EXPORT_SYMBOL vmlinux 0x0f5f97ea pci_request_selected_regions_exclusive +EXPORT_SYMBOL vmlinux 0x0f5faa7e wait_for_completion_io_timeout +EXPORT_SYMBOL vmlinux 0x0f620c3a xfrm_policy_delete +EXPORT_SYMBOL vmlinux 0x0f621279 dma_common_get_sgtable +EXPORT_SYMBOL vmlinux 0x0f6a3b5c string_get_size +EXPORT_SYMBOL vmlinux 0x0faef0ed __tasklet_schedule +EXPORT_SYMBOL vmlinux 0x0fb2f8a4 mktime64 +EXPORT_SYMBOL vmlinux 0x0fba1c55 __register_nls +EXPORT_SYMBOL vmlinux 0x0fc8ea6d phy_device_create +EXPORT_SYMBOL vmlinux 0x0fcd10fb devm_backlight_device_register +EXPORT_SYMBOL vmlinux 0x0fd743b5 framebuffer_release +EXPORT_SYMBOL vmlinux 0x0fdd8e3d mipi_dsi_dcs_soft_reset +EXPORT_SYMBOL vmlinux 0x0fe2f0f9 d_delete +EXPORT_SYMBOL vmlinux 0x0ff8b3af pcim_iomap +EXPORT_SYMBOL vmlinux 0x1025a77c md_wait_for_blocked_rdev +EXPORT_SYMBOL vmlinux 0x102b12d9 simple_follow_link +EXPORT_SYMBOL vmlinux 0x102cdb38 mount_bdev +EXPORT_SYMBOL vmlinux 0x1044c6f2 vc_resize +EXPORT_SYMBOL vmlinux 0x104549e6 __test_set_page_writeback +EXPORT_SYMBOL vmlinux 0x1059fe3a skb_copy_and_csum_datagram_msg +EXPORT_SYMBOL vmlinux 0x105aaa31 param_set_int +EXPORT_SYMBOL vmlinux 0x105d3c5a tcp_conn_request +EXPORT_SYMBOL vmlinux 0x1061acbd vme_irq_request +EXPORT_SYMBOL vmlinux 0x10620c19 padata_remove_cpu +EXPORT_SYMBOL vmlinux 0x1067f4de abx500_get_chip_id +EXPORT_SYMBOL vmlinux 0x10683727 netdev_alert +EXPORT_SYMBOL vmlinux 0x106f13ab crc_t10dif_generic +EXPORT_SYMBOL vmlinux 0x1075a3c9 blk_queue_max_segment_size +EXPORT_SYMBOL vmlinux 0x107e5878 zlib_inflateEnd +EXPORT_SYMBOL vmlinux 0x10873326 vlan_vids_del_by_dev +EXPORT_SYMBOL vmlinux 0x10900993 dec_zone_page_state +EXPORT_SYMBOL vmlinux 0x10c07549 invalidate_partition +EXPORT_SYMBOL vmlinux 0x10c231b6 simple_transaction_get +EXPORT_SYMBOL vmlinux 0x10e33e53 __napi_schedule +EXPORT_SYMBOL vmlinux 0x10e798ef filemap_fault +EXPORT_SYMBOL vmlinux 0x10e84bc3 genphy_restart_aneg +EXPORT_SYMBOL vmlinux 0x10ee20bb default_blu +EXPORT_SYMBOL vmlinux 0x11089ac7 _ctype +EXPORT_SYMBOL vmlinux 0x115c8748 scsi_device_resume +EXPORT_SYMBOL vmlinux 0x1163f0a7 blk_max_low_pfn +EXPORT_SYMBOL vmlinux 0x11663cec adb_register +EXPORT_SYMBOL vmlinux 0x117093be qdisc_class_hash_init +EXPORT_SYMBOL vmlinux 0x1182d83a cpuidle_disable +EXPORT_SYMBOL vmlinux 0x118a5e56 blk_limits_io_min +EXPORT_SYMBOL vmlinux 0x11a044f6 mod_timer_pinned +EXPORT_SYMBOL vmlinux 0x11e4d846 dcb_ieee_setapp +EXPORT_SYMBOL vmlinux 0x11f7ed4c hex_to_bin +EXPORT_SYMBOL vmlinux 0x11ffe61f abx500_startup_irq_enabled +EXPORT_SYMBOL vmlinux 0x120b336a __rb_insert_augmented +EXPORT_SYMBOL vmlinux 0x120fc6b1 kstrdup_const +EXPORT_SYMBOL vmlinux 0x121b6ad6 dev_set_mtu +EXPORT_SYMBOL vmlinux 0x12230341 pipe_unlock +EXPORT_SYMBOL vmlinux 0x125ee5e8 iov_iter_zero +EXPORT_SYMBOL vmlinux 0x12a38747 usleep_range +EXPORT_SYMBOL vmlinux 0x12a57bda __generic_file_write_iter +EXPORT_SYMBOL vmlinux 0x12a923e3 free_page_put_link +EXPORT_SYMBOL vmlinux 0x12da5bb2 __kmalloc +EXPORT_SYMBOL vmlinux 0x12e5ef0c rtas_set_power_level +EXPORT_SYMBOL vmlinux 0x12fa4f8c crypto_sha256_finup +EXPORT_SYMBOL vmlinux 0x13243d4b wl1251_get_platform_data +EXPORT_SYMBOL vmlinux 0x132b2482 contig_page_data +EXPORT_SYMBOL vmlinux 0x132b7946 ps2_drain +EXPORT_SYMBOL vmlinux 0x132dc09c eth_change_mtu +EXPORT_SYMBOL vmlinux 0x133027b9 override_creds +EXPORT_SYMBOL vmlinux 0x13307fde vsscanf +EXPORT_SYMBOL vmlinux 0x1333b977 xfrm_input_resume +EXPORT_SYMBOL vmlinux 0x133b05c9 pci_add_new_bus +EXPORT_SYMBOL vmlinux 0x133f1e08 gnet_stats_copy_app +EXPORT_SYMBOL vmlinux 0x1341aafc is_bad_inode +EXPORT_SYMBOL vmlinux 0x134551cd d_alloc +EXPORT_SYMBOL vmlinux 0x1378d618 flush_tlb_range +EXPORT_SYMBOL vmlinux 0x13997ed0 netlink_broadcast_filtered +EXPORT_SYMBOL vmlinux 0x13b4f0cb mdiobus_write +EXPORT_SYMBOL vmlinux 0x13d0adf7 __kfifo_out +EXPORT_SYMBOL vmlinux 0x13f42152 system_entering_hibernation +EXPORT_SYMBOL vmlinux 0x14042414 pm860x_bulk_read +EXPORT_SYMBOL vmlinux 0x1407c6e7 kmap_prot +EXPORT_SYMBOL vmlinux 0x14086056 generic_setlease +EXPORT_SYMBOL vmlinux 0x14153ddc try_to_writeback_inodes_sb +EXPORT_SYMBOL vmlinux 0x1420b379 kstrtou16_from_user +EXPORT_SYMBOL vmlinux 0x14266fd9 blk_mq_start_hw_queues +EXPORT_SYMBOL vmlinux 0x1430555e blkdev_issue_zeroout +EXPORT_SYMBOL vmlinux 0x145fff25 neigh_sysctl_unregister +EXPORT_SYMBOL vmlinux 0x1475c53a scsi_print_sense_hdr +EXPORT_SYMBOL vmlinux 0x14e7b883 __ps2_command +EXPORT_SYMBOL vmlinux 0x14ea7de9 serial8250_do_pm +EXPORT_SYMBOL vmlinux 0x1507c31d xfrm_policy_insert +EXPORT_SYMBOL vmlinux 0x15307f6f __frontswap_load +EXPORT_SYMBOL vmlinux 0x154c6338 dm_kcopyd_client_destroy +EXPORT_SYMBOL vmlinux 0x155a30f3 scsi_scan_host +EXPORT_SYMBOL vmlinux 0x156e457f xfrm4_rcv_cb +EXPORT_SYMBOL vmlinux 0x1570edf3 xfrm_state_lookup_byaddr +EXPORT_SYMBOL vmlinux 0x1580b0c2 build_skb +EXPORT_SYMBOL vmlinux 0x1580f34d __generic_file_fsync +EXPORT_SYMBOL vmlinux 0x1582c2c4 tcp_getsockopt +EXPORT_SYMBOL vmlinux 0x1596b778 nf_ip_checksum +EXPORT_SYMBOL vmlinux 0x15bafe29 unregister_md_cluster_operations +EXPORT_SYMBOL vmlinux 0x15bd1822 jbd2_journal_release_jbd_inode +EXPORT_SYMBOL vmlinux 0x15d3fd60 prepare_to_wait_event +EXPORT_SYMBOL vmlinux 0x15e14908 input_release_device +EXPORT_SYMBOL vmlinux 0x15ec28b3 iunique +EXPORT_SYMBOL vmlinux 0x160bd45c rtas_token +EXPORT_SYMBOL vmlinux 0x161d0033 proc_doulongvec_minmax +EXPORT_SYMBOL vmlinux 0x161e80fe blk_queue_free_tags +EXPORT_SYMBOL vmlinux 0x1628cfc7 flush_dcache_icache_page +EXPORT_SYMBOL vmlinux 0x16515986 register_cdrom +EXPORT_SYMBOL vmlinux 0x16540bbc __cmpdi2 +EXPORT_SYMBOL vmlinux 0x1657b0f4 swiotlb_sync_sg_for_cpu +EXPORT_SYMBOL vmlinux 0x165cd3e0 pci_unregister_driver +EXPORT_SYMBOL vmlinux 0x1667e2bc bdi_setup_and_register +EXPORT_SYMBOL vmlinux 0x16695c60 cros_ec_cmd_xfer +EXPORT_SYMBOL vmlinux 0x16707df2 pmac_register_agp_pm +EXPORT_SYMBOL vmlinux 0x167cfe62 i2c_smbus_read_word_data +EXPORT_SYMBOL vmlinux 0x1683a50b radix_tree_delete +EXPORT_SYMBOL vmlinux 0x168b921e xfrm6_rcv_spi +EXPORT_SYMBOL vmlinux 0x169772c3 max8998_update_reg +EXPORT_SYMBOL vmlinux 0x16cf8934 scsi_device_lookup_by_target +EXPORT_SYMBOL vmlinux 0x16d83cbb vfs_setpos +EXPORT_SYMBOL vmlinux 0x16ee503d vlan_uses_dev +EXPORT_SYMBOL vmlinux 0x17125b72 agp_generic_free_by_type +EXPORT_SYMBOL vmlinux 0x17221b1d mipi_dsi_driver_register_full +EXPORT_SYMBOL vmlinux 0x172f2b05 genphy_read_status +EXPORT_SYMBOL vmlinux 0x1731439e page_cache_prev_hole +EXPORT_SYMBOL vmlinux 0x174afb1a __sg_page_iter_next +EXPORT_SYMBOL vmlinux 0x17648396 dev_base_lock +EXPORT_SYMBOL vmlinux 0x176925f8 set_wb_congested +EXPORT_SYMBOL vmlinux 0x177ce8c5 rtnl_notify +EXPORT_SYMBOL vmlinux 0x177ef40a pcie_get_readrq +EXPORT_SYMBOL vmlinux 0x17a1da9e __tty_alloc_driver +EXPORT_SYMBOL vmlinux 0x17aa156a __ucmpdi2 +EXPORT_SYMBOL vmlinux 0x17b1125d gen_kill_estimator +EXPORT_SYMBOL vmlinux 0x17b895aa bio_put +EXPORT_SYMBOL vmlinux 0x17ca5987 xfrm_input +EXPORT_SYMBOL vmlinux 0x17d6b09e make_bad_inode +EXPORT_SYMBOL vmlinux 0x17e28473 fsl_upm_run_pattern +EXPORT_SYMBOL vmlinux 0x17e525b6 filemap_write_and_wait_range +EXPORT_SYMBOL vmlinux 0x17f012fe blk_queue_physical_block_size +EXPORT_SYMBOL vmlinux 0x17f341a0 i8042_lock_chip +EXPORT_SYMBOL vmlinux 0x18009873 blk_pre_runtime_suspend +EXPORT_SYMBOL vmlinux 0x1826f089 __tracepoint_kmem_cache_alloc_node +EXPORT_SYMBOL vmlinux 0x1829d188 wait_woken +EXPORT_SYMBOL vmlinux 0x183fa88b mempool_alloc_slab +EXPORT_SYMBOL vmlinux 0x1840e7c8 phy_ethtool_gset +EXPORT_SYMBOL vmlinux 0x1846df90 inet_accept +EXPORT_SYMBOL vmlinux 0x18493419 param_get_short +EXPORT_SYMBOL vmlinux 0x184b82fb mmc_vddrange_to_ocrmask +EXPORT_SYMBOL vmlinux 0x18648d93 security_path_mkdir +EXPORT_SYMBOL vmlinux 0x18796b65 xfrm_dst_ifdown +EXPORT_SYMBOL vmlinux 0x1879e807 alloc_buffer_head +EXPORT_SYMBOL vmlinux 0x188a3dfb timespec_trunc +EXPORT_SYMBOL vmlinux 0x189868d7 get_random_bytes_arch +EXPORT_SYMBOL vmlinux 0x18a70cf5 dup_iter +EXPORT_SYMBOL vmlinux 0x18c00e24 kill_block_super +EXPORT_SYMBOL vmlinux 0x18c2227f cpu_rmap_update +EXPORT_SYMBOL vmlinux 0x18e59ba3 __pci_register_driver +EXPORT_SYMBOL vmlinux 0x18f15d10 get_agp_version +EXPORT_SYMBOL vmlinux 0x18f5bacd jbd2_journal_set_triggers +EXPORT_SYMBOL vmlinux 0x18fd15bc write_inode_now +EXPORT_SYMBOL vmlinux 0x1901866a km_report +EXPORT_SYMBOL vmlinux 0x192cc206 user_revoke +EXPORT_SYMBOL vmlinux 0x1950e659 param_array_ops +EXPORT_SYMBOL vmlinux 0x19610e1f cpu_all_bits +EXPORT_SYMBOL vmlinux 0x19693098 netif_stacked_transfer_operstate +EXPORT_SYMBOL vmlinux 0x197e78f7 swiotlb_free_coherent +EXPORT_SYMBOL vmlinux 0x198274c1 blk_queue_start_tag +EXPORT_SYMBOL vmlinux 0x199ab369 phy_attach_direct +EXPORT_SYMBOL vmlinux 0x199ed0cd net_disable_timestamp +EXPORT_SYMBOL vmlinux 0x19a0da53 pci_pme_capable +EXPORT_SYMBOL vmlinux 0x19aa32af bio_phys_segments +EXPORT_SYMBOL vmlinux 0x19b359d6 inet6_add_offload +EXPORT_SYMBOL vmlinux 0x19ba1dc7 fence_enable_sw_signaling +EXPORT_SYMBOL vmlinux 0x19bd383b security_secmark_refcount_dec +EXPORT_SYMBOL vmlinux 0x19c1968d serio_unregister_child_port +EXPORT_SYMBOL vmlinux 0x19dccc4d fb_set_cmap +EXPORT_SYMBOL vmlinux 0x19e0b547 netif_receive_skb_sk +EXPORT_SYMBOL vmlinux 0x19e41cba tty_wait_until_sent +EXPORT_SYMBOL vmlinux 0x19ee81dd vmalloc_to_page +EXPORT_SYMBOL vmlinux 0x19f3d983 unregister_filesystem +EXPORT_SYMBOL vmlinux 0x19fd32e9 cdrom_open +EXPORT_SYMBOL vmlinux 0x1a11e47b skb_abort_seq_read +EXPORT_SYMBOL vmlinux 0x1a1741f7 phy_ethtool_set_wol +EXPORT_SYMBOL vmlinux 0x1a4631a2 __skb_tx_hash +EXPORT_SYMBOL vmlinux 0x1a555549 unregister_shrinker +EXPORT_SYMBOL vmlinux 0x1a68b069 __dev_get_by_flags +EXPORT_SYMBOL vmlinux 0x1a77b802 jbd2_journal_set_features +EXPORT_SYMBOL vmlinux 0x1a9052ad i2c_smbus_write_byte +EXPORT_SYMBOL vmlinux 0x1a92738a kernel_sock_shutdown +EXPORT_SYMBOL vmlinux 0x1aaab64b dmaengine_get_unmap_data +EXPORT_SYMBOL vmlinux 0x1ae06e12 __tracepoint_fence_annotate_wait_on +EXPORT_SYMBOL vmlinux 0x1af62a99 panic_notifier_list +EXPORT_SYMBOL vmlinux 0x1b015d25 bitmap_parselist +EXPORT_SYMBOL vmlinux 0x1b06a209 blk_set_default_limits +EXPORT_SYMBOL vmlinux 0x1b0ac272 __tracepoint_kmalloc_node +EXPORT_SYMBOL vmlinux 0x1b132009 rename_lock +EXPORT_SYMBOL vmlinux 0x1b407c86 sk_capable +EXPORT_SYMBOL vmlinux 0x1b48f310 nonseekable_open +EXPORT_SYMBOL vmlinux 0x1b54451f remove_arg_zero +EXPORT_SYMBOL vmlinux 0x1b6314fd in_aton +EXPORT_SYMBOL vmlinux 0x1b74b2a1 genl_unregister_family +EXPORT_SYMBOL vmlinux 0x1b7bf5e3 param_get_charp +EXPORT_SYMBOL vmlinux 0x1b82fefa md_unplug +EXPORT_SYMBOL vmlinux 0x1b8b95ad i8042_unlock_chip +EXPORT_SYMBOL vmlinux 0x1b9ff358 sock_queue_err_skb +EXPORT_SYMBOL vmlinux 0x1ba3691c param_get_ulong +EXPORT_SYMBOL vmlinux 0x1bb31047 add_timer +EXPORT_SYMBOL vmlinux 0x1bb930f5 zpool_register_driver +EXPORT_SYMBOL vmlinux 0x1bc4ff03 tty_termios_hw_change +EXPORT_SYMBOL vmlinux 0x1bca2b59 load_fp_state +EXPORT_SYMBOL vmlinux 0x1bd82083 tcp_timewait_state_process +EXPORT_SYMBOL vmlinux 0x1c1909b5 mark_buffer_async_write +EXPORT_SYMBOL vmlinux 0x1c21b718 __alloc_pages_nodemask +EXPORT_SYMBOL vmlinux 0x1c2b9771 xfrm_spd_getinfo +EXPORT_SYMBOL vmlinux 0x1c5b2c15 pmu_wait_complete +EXPORT_SYMBOL vmlinux 0x1c80de9c ip_send_check +EXPORT_SYMBOL vmlinux 0x1c9f0b13 __block_write_begin +EXPORT_SYMBOL vmlinux 0x1cb60faf pcim_pin_device +EXPORT_SYMBOL vmlinux 0x1cc20d78 phy_detach +EXPORT_SYMBOL vmlinux 0x1d0a005d genphy_config_init +EXPORT_SYMBOL vmlinux 0x1d24b44a simple_dentry_operations +EXPORT_SYMBOL vmlinux 0x1d290003 security_path_unlink +EXPORT_SYMBOL vmlinux 0x1d3ae5ed inet_sk_rx_dst_set +EXPORT_SYMBOL vmlinux 0x1d404337 bioset_integrity_create +EXPORT_SYMBOL vmlinux 0x1d555f20 __nla_put_nohdr +EXPORT_SYMBOL vmlinux 0x1d60ec73 block_write_full_page +EXPORT_SYMBOL vmlinux 0x1d909cbc vme_unregister_bridge +EXPORT_SYMBOL vmlinux 0x1d98e590 agp_backend_acquire +EXPORT_SYMBOL vmlinux 0x1daec833 trace_raw_output_prep +EXPORT_SYMBOL vmlinux 0x1daee28a percpu_counter_destroy +EXPORT_SYMBOL vmlinux 0x1dc36131 fb_destroy_modedb +EXPORT_SYMBOL vmlinux 0x1dd571e6 fb_copy_cmap +EXPORT_SYMBOL vmlinux 0x1de866df kmalloc_caches +EXPORT_SYMBOL vmlinux 0x1df1807c phy_get_eee_err +EXPORT_SYMBOL vmlinux 0x1e26be3b get_anon_bdev +EXPORT_SYMBOL vmlinux 0x1e3e3510 generic_delete_inode +EXPORT_SYMBOL vmlinux 0x1e56ada2 __put_cred +EXPORT_SYMBOL vmlinux 0x1e5eeaf0 sk_ns_capable +EXPORT_SYMBOL vmlinux 0x1e67186d sock_no_recvmsg +EXPORT_SYMBOL vmlinux 0x1e6d26a8 strstr +EXPORT_SYMBOL vmlinux 0x1e7b10c7 delete_from_page_cache +EXPORT_SYMBOL vmlinux 0x1e92300e simple_transaction_read +EXPORT_SYMBOL vmlinux 0x1e9edfb7 seq_hlist_start_head_rcu +EXPORT_SYMBOL vmlinux 0x1ea97ff9 mmc_set_data_timeout +EXPORT_SYMBOL vmlinux 0x1eb30b7c cont_write_begin +EXPORT_SYMBOL vmlinux 0x1ed4987b mdiobus_alloc_size +EXPORT_SYMBOL vmlinux 0x1edf796f inet_get_local_port_range +EXPORT_SYMBOL vmlinux 0x1f34b480 free_user_ns +EXPORT_SYMBOL vmlinux 0x1f3bd653 abx500_mask_and_set_register_interruptible +EXPORT_SYMBOL vmlinux 0x1f48d187 skb_ensure_writable +EXPORT_SYMBOL vmlinux 0x1f7e807f kstrtoint_from_user +EXPORT_SYMBOL vmlinux 0x1f84c995 reservation_object_add_shared_fence +EXPORT_SYMBOL vmlinux 0x1f916fbd generic_file_direct_write +EXPORT_SYMBOL vmlinux 0x1f92428c tcp_shutdown +EXPORT_SYMBOL vmlinux 0x1f9588dc qdisc_reset +EXPORT_SYMBOL vmlinux 0x1f9c8efb genphy_suspend +EXPORT_SYMBOL vmlinux 0x1fa9cfc5 seq_file_path +EXPORT_SYMBOL vmlinux 0x1fab0475 phy_register_fixup +EXPORT_SYMBOL vmlinux 0x1fbd16da ip_tos2prio +EXPORT_SYMBOL vmlinux 0x1fc40df7 mmc_of_parse +EXPORT_SYMBOL vmlinux 0x1fd07fff kdb_grepping_flag +EXPORT_SYMBOL vmlinux 0x1fd6cbe5 cpufreq_global_kobject +EXPORT_SYMBOL vmlinux 0x1fe31067 padata_register_cpumask_notifier +EXPORT_SYMBOL vmlinux 0x1fe646e6 pci_bus_set_ops +EXPORT_SYMBOL vmlinux 0x1fe912f1 netdev_alloc_frag +EXPORT_SYMBOL vmlinux 0x1fe9f800 unregister_cpu_notifier +EXPORT_SYMBOL vmlinux 0x1ffaf31e truncate_setsize +EXPORT_SYMBOL vmlinux 0x20000329 simple_strtoul +EXPORT_SYMBOL vmlinux 0x20030ecd ioremap +EXPORT_SYMBOL vmlinux 0x200b2041 in6addr_any +EXPORT_SYMBOL vmlinux 0x203909e4 freeze_bdev +EXPORT_SYMBOL vmlinux 0x20421305 on_each_cpu_mask +EXPORT_SYMBOL vmlinux 0x2043b724 key_payload_reserve +EXPORT_SYMBOL vmlinux 0x204c19f5 tcp_alloc_md5sig_pool +EXPORT_SYMBOL vmlinux 0x205b8bfd nf_hook_slow +EXPORT_SYMBOL vmlinux 0x2072ee9b request_threaded_irq +EXPORT_SYMBOL vmlinux 0x207d86d7 security_task_getsecid +EXPORT_SYMBOL vmlinux 0x20a04b5a deactivate_super +EXPORT_SYMBOL vmlinux 0x20a789ac irq_set_chip_data +EXPORT_SYMBOL vmlinux 0x20c059bb balance_dirty_pages_ratelimited +EXPORT_SYMBOL vmlinux 0x20c55ae0 sscanf +EXPORT_SYMBOL vmlinux 0x20c63d54 tcp_initialize_rcv_mss +EXPORT_SYMBOL vmlinux 0x20d02b97 blk_sync_queue +EXPORT_SYMBOL vmlinux 0x20d0870d __set_page_dirty_buffers +EXPORT_SYMBOL vmlinux 0x20d10324 inet_listen +EXPORT_SYMBOL vmlinux 0x20f49a04 from_kuid +EXPORT_SYMBOL vmlinux 0x2106aed4 inet_frags_exit_net +EXPORT_SYMBOL vmlinux 0x2106f7bc inet_put_port +EXPORT_SYMBOL vmlinux 0x210faaf7 __napi_alloc_skb +EXPORT_SYMBOL vmlinux 0x211fce56 dma_sync_wait +EXPORT_SYMBOL vmlinux 0x2157965d vme_dma_pci_attribute +EXPORT_SYMBOL vmlinux 0x21762083 sock_create +EXPORT_SYMBOL vmlinux 0x219a0b11 scsi_host_set_state +EXPORT_SYMBOL vmlinux 0x21ac0029 ab3100_event_register +EXPORT_SYMBOL vmlinux 0x21adb822 scsi_execute +EXPORT_SYMBOL vmlinux 0x21afa222 qdisc_watchdog_cancel +EXPORT_SYMBOL vmlinux 0x21df74d9 bitmap_set +EXPORT_SYMBOL vmlinux 0x21e36941 clear_inode +EXPORT_SYMBOL vmlinux 0x21f19335 fence_remove_callback +EXPORT_SYMBOL vmlinux 0x22016fbd dev_activate +EXPORT_SYMBOL vmlinux 0x2207c43f scsi_report_device_reset +EXPORT_SYMBOL vmlinux 0x2209b732 dev_uc_del +EXPORT_SYMBOL vmlinux 0x220cd20c input_mt_assign_slots +EXPORT_SYMBOL vmlinux 0x2225e150 __wait_on_buffer +EXPORT_SYMBOL vmlinux 0x222e7ce2 sysfs_streq +EXPORT_SYMBOL vmlinux 0x2245b7da sk_stream_error +EXPORT_SYMBOL vmlinux 0x2256fafa div64_u64_rem +EXPORT_SYMBOL vmlinux 0x2276db98 kstrtoint +EXPORT_SYMBOL vmlinux 0x2278e94b slhc_remember +EXPORT_SYMBOL vmlinux 0x229ff565 d_prune_aliases +EXPORT_SYMBOL vmlinux 0x22b325d5 kd_mksound +EXPORT_SYMBOL vmlinux 0x22dfdd06 radix_tree_tag_set +EXPORT_SYMBOL vmlinux 0x22ea4aa0 iommu_tbl_range_alloc +EXPORT_SYMBOL vmlinux 0x22f22969 setup_arg_pages +EXPORT_SYMBOL vmlinux 0x231d4001 fb_edid_add_monspecs +EXPORT_SYMBOL vmlinux 0x23251e77 xfrm_find_acq_byseq +EXPORT_SYMBOL vmlinux 0x232cc2d0 padata_add_cpu +EXPORT_SYMBOL vmlinux 0x233917d1 mac_vmode_to_var +EXPORT_SYMBOL vmlinux 0x234d99e8 d_tmpfile +EXPORT_SYMBOL vmlinux 0x235041c0 phy_init_eee +EXPORT_SYMBOL vmlinux 0x23530cad of_translate_address +EXPORT_SYMBOL vmlinux 0x235e5ed1 lro_receive_skb +EXPORT_SYMBOL vmlinux 0x235e90f3 __wake_up_bit +EXPORT_SYMBOL vmlinux 0x237504f5 __pagevec_release +EXPORT_SYMBOL vmlinux 0x23a574fd security_secmark_relabel_packet +EXPORT_SYMBOL vmlinux 0x23b9d6e2 mangle_path +EXPORT_SYMBOL vmlinux 0x23c5fa3c input_register_handle +EXPORT_SYMBOL vmlinux 0x23c83444 file_path +EXPORT_SYMBOL vmlinux 0x23cb274e blk_queue_max_hw_sectors +EXPORT_SYMBOL vmlinux 0x23f2243d mempool_free +EXPORT_SYMBOL vmlinux 0x23fd3028 vmalloc_node +EXPORT_SYMBOL vmlinux 0x24212d86 __frontswap_invalidate_page +EXPORT_SYMBOL vmlinux 0x24428be5 strncpy_from_user +EXPORT_SYMBOL vmlinux 0x2445a7a4 kern_path +EXPORT_SYMBOL vmlinux 0x2459bbcc console_set_on_cmdline +EXPORT_SYMBOL vmlinux 0x24639825 jbd2_journal_init_jbd_inode +EXPORT_SYMBOL vmlinux 0x247a9632 pci_enable_device +EXPORT_SYMBOL vmlinux 0x247ad7e7 serio_interrupt +EXPORT_SYMBOL vmlinux 0x2482e688 vsprintf +EXPORT_SYMBOL vmlinux 0x24855cba __percpu_counter_compare +EXPORT_SYMBOL vmlinux 0x24bc43e0 blk_integrity_merge_bio +EXPORT_SYMBOL vmlinux 0x24d4b874 eth_header_parse +EXPORT_SYMBOL vmlinux 0x24d6f297 inet_select_addr +EXPORT_SYMBOL vmlinux 0x24f00380 ida_init +EXPORT_SYMBOL vmlinux 0x24f2c4cd mmc_power_restore_host +EXPORT_SYMBOL vmlinux 0x24f5cde7 bitmap_cond_end_sync +EXPORT_SYMBOL vmlinux 0x24fdac79 wake_bit_function +EXPORT_SYMBOL vmlinux 0x250113b4 memory_read_from_buffer +EXPORT_SYMBOL vmlinux 0x25154c20 mipi_dsi_detach +EXPORT_SYMBOL vmlinux 0x251c6b66 __vlan_find_dev_deep_rcu +EXPORT_SYMBOL vmlinux 0x25277497 rfkill_register +EXPORT_SYMBOL vmlinux 0x2527a087 vme_slave_set +EXPORT_SYMBOL vmlinux 0x2558dd30 pagevec_lookup +EXPORT_SYMBOL vmlinux 0x2570a138 reservation_seqcount_string +EXPORT_SYMBOL vmlinux 0x25820c64 fs_overflowuid +EXPORT_SYMBOL vmlinux 0x25afb1fd __insert_inode_hash +EXPORT_SYMBOL vmlinux 0x25c349a8 __ww_mutex_lock +EXPORT_SYMBOL vmlinux 0x25df6c42 vga_put +EXPORT_SYMBOL vmlinux 0x25e9d4bd resource_list_free +EXPORT_SYMBOL vmlinux 0x25eab075 mmc_put_card +EXPORT_SYMBOL vmlinux 0x25f3bd2e atomic64_xchg +EXPORT_SYMBOL vmlinux 0x25f84e65 phy_read_mmd_indirect +EXPORT_SYMBOL vmlinux 0x2605bb9c of_parse_phandle +EXPORT_SYMBOL vmlinux 0x26169bee dentry_open +EXPORT_SYMBOL vmlinux 0x26182874 __sk_mem_reclaim +EXPORT_SYMBOL vmlinux 0x261a02e1 phy_mac_interrupt +EXPORT_SYMBOL vmlinux 0x263beb75 ecryptfs_get_versions +EXPORT_SYMBOL vmlinux 0x26477c07 __vmalloc +EXPORT_SYMBOL vmlinux 0x2650d835 sysctl_ip_early_demux +EXPORT_SYMBOL vmlinux 0x2670a21a abx500_event_registers_startup_state_get +EXPORT_SYMBOL vmlinux 0x2670e2a0 skb_make_writable +EXPORT_SYMBOL vmlinux 0x2674bbaf input_unregister_handler +EXPORT_SYMBOL vmlinux 0x26a12c72 netif_tx_stop_all_queues +EXPORT_SYMBOL vmlinux 0x26aa4498 dev_get_phys_port_name +EXPORT_SYMBOL vmlinux 0x26b21e21 tcp_init_sock +EXPORT_SYMBOL vmlinux 0x26b760c4 slhc_init +EXPORT_SYMBOL vmlinux 0x26bb950b __kfifo_from_user_r +EXPORT_SYMBOL vmlinux 0x26c0f2fa inet_csk_reset_keepalive_timer +EXPORT_SYMBOL vmlinux 0x26c127e2 notify_change +EXPORT_SYMBOL vmlinux 0x26c68f87 blk_integrity_unregister +EXPORT_SYMBOL vmlinux 0x26e6d731 blk_get_queue +EXPORT_SYMBOL vmlinux 0x26e76fb8 sysctl_udp_wmem_min +EXPORT_SYMBOL vmlinux 0x2716626d twl6040_set_pll +EXPORT_SYMBOL vmlinux 0x271b7181 fget_raw +EXPORT_SYMBOL vmlinux 0x271f7e2f param_set_uint +EXPORT_SYMBOL vmlinux 0x272c9acd pmu_battery_count +EXPORT_SYMBOL vmlinux 0x2741e96b pid_task +EXPORT_SYMBOL vmlinux 0x2749d7a1 netlink_net_capable +EXPORT_SYMBOL vmlinux 0x274c5289 ilookup5_nowait +EXPORT_SYMBOL vmlinux 0x2771d7ff ida_get_new_above +EXPORT_SYMBOL vmlinux 0x27768fdf skb_checksum_help +EXPORT_SYMBOL vmlinux 0x27840de0 xfrm4_rcv +EXPORT_SYMBOL vmlinux 0x27864d57 memparse +EXPORT_SYMBOL vmlinux 0x27866435 security_xfrm_state_alloc +EXPORT_SYMBOL vmlinux 0x279bae0f flow_get_u32_dst +EXPORT_SYMBOL vmlinux 0x27ad585f agp_bridge +EXPORT_SYMBOL vmlinux 0x27bbf221 disable_irq_nosync +EXPORT_SYMBOL vmlinux 0x27d6f7b3 of_find_matching_node_and_match +EXPORT_SYMBOL vmlinux 0x27da4aa6 clear_user_page +EXPORT_SYMBOL vmlinux 0x27e1a049 printk +EXPORT_SYMBOL vmlinux 0x27e74381 t10_pi_type3_crc +EXPORT_SYMBOL vmlinux 0x27ed0357 __devm_gpiod_get_index_optional +EXPORT_SYMBOL vmlinux 0x281490cc __neigh_for_each_release +EXPORT_SYMBOL vmlinux 0x281823c5 __kfifo_out_peek +EXPORT_SYMBOL vmlinux 0x281b3120 ns_capable +EXPORT_SYMBOL vmlinux 0x2842c6a7 udp_lib_setsockopt +EXPORT_SYMBOL vmlinux 0x2843e31d vm_map_ram +EXPORT_SYMBOL vmlinux 0x2845d8d4 tty_driver_flush_buffer +EXPORT_SYMBOL vmlinux 0x284d0e65 __skb_checksum_complete +EXPORT_SYMBOL vmlinux 0x284fc230 inet6_unregister_protosw +EXPORT_SYMBOL vmlinux 0x2850b20c pcim_iomap_regions +EXPORT_SYMBOL vmlinux 0x28767fd4 blkdev_reread_part +EXPORT_SYMBOL vmlinux 0x28879545 macio_dev_put +EXPORT_SYMBOL vmlinux 0x289db3ee idr_remove +EXPORT_SYMBOL vmlinux 0x28a2ed02 scsi_build_sense_buffer +EXPORT_SYMBOL vmlinux 0x28a43385 __frontswap_test +EXPORT_SYMBOL vmlinux 0x28a59744 uart_register_driver +EXPORT_SYMBOL vmlinux 0x28a7beba __percpu_counter_init +EXPORT_SYMBOL vmlinux 0x28ae2a51 vme_irq_generate +EXPORT_SYMBOL vmlinux 0x28c7394e cfb_fillrect +EXPORT_SYMBOL vmlinux 0x28e0b37c netlink_kernel_release +EXPORT_SYMBOL vmlinux 0x28e52aac keyring_clear +EXPORT_SYMBOL vmlinux 0x28f784f5 __debugger_break_match +EXPORT_SYMBOL vmlinux 0x29041eb6 md_check_no_bitmap +EXPORT_SYMBOL vmlinux 0x29303d9c napi_gro_frags +EXPORT_SYMBOL vmlinux 0x2934d14a block_truncate_page +EXPORT_SYMBOL vmlinux 0x29537c9e alloc_chrdev_region +EXPORT_SYMBOL vmlinux 0x297fe770 skb_insert +EXPORT_SYMBOL vmlinux 0x29a33d8e task_tgid_nr_ns +EXPORT_SYMBOL vmlinux 0x29b7f61b dcache_dir_open +EXPORT_SYMBOL vmlinux 0x29c60a7a skb_recv_datagram +EXPORT_SYMBOL vmlinux 0x29d43607 mipi_dsi_dcs_nop +EXPORT_SYMBOL vmlinux 0x29f32244 dev_warn +EXPORT_SYMBOL vmlinux 0x29f4839f set_anon_super +EXPORT_SYMBOL vmlinux 0x29fdda53 kstrtos8_from_user +EXPORT_SYMBOL vmlinux 0x2a083e4f __skb_get_hash +EXPORT_SYMBOL vmlinux 0x2a118365 generic_getxattr +EXPORT_SYMBOL vmlinux 0x2a245001 xfrm_lookup_route +EXPORT_SYMBOL vmlinux 0x2a303d4d check_signature +EXPORT_SYMBOL vmlinux 0x2a3f313b tty_port_close +EXPORT_SYMBOL vmlinux 0x2a419f9c ip_getsockopt +EXPORT_SYMBOL vmlinux 0x2a7cac99 pci_add_resource +EXPORT_SYMBOL vmlinux 0x2a7ea89d blk_rq_set_block_pc +EXPORT_SYMBOL vmlinux 0x2a85089d led_blink_set_oneshot +EXPORT_SYMBOL vmlinux 0x2a8f2a2a have_submounts +EXPORT_SYMBOL vmlinux 0x2a92eabd mipi_dsi_dcs_set_pixel_format +EXPORT_SYMBOL vmlinux 0x2a95ca01 i2c_register_driver +EXPORT_SYMBOL vmlinux 0x2a978caa generic_start_io_acct +EXPORT_SYMBOL vmlinux 0x2aa0e4fc strncasecmp +EXPORT_SYMBOL vmlinux 0x2aad35de mb_cache_destroy +EXPORT_SYMBOL vmlinux 0x2ab6ede7 passthru_features_check +EXPORT_SYMBOL vmlinux 0x2acf0feb vfs_fstat +EXPORT_SYMBOL vmlinux 0x2b0ba2b0 scsi_sense_desc_find +EXPORT_SYMBOL vmlinux 0x2b12925d cpumask_next_and +EXPORT_SYMBOL vmlinux 0x2b1ef859 ipv6_chk_custom_prefix +EXPORT_SYMBOL vmlinux 0x2b2c4e66 dcache_readdir +EXPORT_SYMBOL vmlinux 0x2b2ce78b kstrtos8 +EXPORT_SYMBOL vmlinux 0x2b47d245 always_delete_dentry +EXPORT_SYMBOL vmlinux 0x2b670dee pci_stop_and_remove_bus_device +EXPORT_SYMBOL vmlinux 0x2b9da7a4 genl_lock +EXPORT_SYMBOL vmlinux 0x2ba707a8 sysctl_tcp_low_latency +EXPORT_SYMBOL vmlinux 0x2baf4c58 rtas +EXPORT_SYMBOL vmlinux 0x2bb2c9ab dst_release +EXPORT_SYMBOL vmlinux 0x2bf33017 ip_mc_join_group +EXPORT_SYMBOL vmlinux 0x2bf360c7 __sk_backlog_rcv +EXPORT_SYMBOL vmlinux 0x2bfde73b simple_release_fs +EXPORT_SYMBOL vmlinux 0x2c12bb74 dev_mc_del_global +EXPORT_SYMBOL vmlinux 0x2c14323a kstrtol_from_user +EXPORT_SYMBOL vmlinux 0x2c15b230 agp_alloc_page_array +EXPORT_SYMBOL vmlinux 0x2c256e1f input_scancode_to_scalar +EXPORT_SYMBOL vmlinux 0x2c367220 nf_log_register +EXPORT_SYMBOL vmlinux 0x2c37604f unlock_buffer +EXPORT_SYMBOL vmlinux 0x2c382b35 skb_copy_datagram_from_iter +EXPORT_SYMBOL vmlinux 0x2c6fdb0c mb_cache_entry_insert +EXPORT_SYMBOL vmlinux 0x2c7b1fca down_timeout +EXPORT_SYMBOL vmlinux 0x2c800cf9 of_match_node +EXPORT_SYMBOL vmlinux 0x2c8f0b11 locks_copy_conflock +EXPORT_SYMBOL vmlinux 0x2c900d91 cpufreq_put_global_kobject +EXPORT_SYMBOL vmlinux 0x2cc254ec pci_fixup_cardbus +EXPORT_SYMBOL vmlinux 0x2cc59b1e sb_min_blocksize +EXPORT_SYMBOL vmlinux 0x2ceac9c7 posix_acl_to_xattr +EXPORT_SYMBOL vmlinux 0x2cf15be4 xfrm_unregister_mode +EXPORT_SYMBOL vmlinux 0x2d140a58 genl_unlock +EXPORT_SYMBOL vmlinux 0x2d2e91da scsi_execute_req_flags +EXPORT_SYMBOL vmlinux 0x2d30596c from_kqid_munged +EXPORT_SYMBOL vmlinux 0x2d3385d3 system_wq +EXPORT_SYMBOL vmlinux 0x2d47c5fe __sock_tx_timestamp +EXPORT_SYMBOL vmlinux 0x2d573b2c inet_dgram_connect +EXPORT_SYMBOL vmlinux 0x2da823fa bio_integrity_advance +EXPORT_SYMBOL vmlinux 0x2deda4a1 security_sk_classify_flow +EXPORT_SYMBOL vmlinux 0x2df6b4b5 send_sig_info +EXPORT_SYMBOL vmlinux 0x2dfbfae5 phy_ethtool_set_eee +EXPORT_SYMBOL vmlinux 0x2e2ce9e0 sysctl_tcp_syncookies +EXPORT_SYMBOL vmlinux 0x2e34b91a sock_no_getname +EXPORT_SYMBOL vmlinux 0x2e3d7f69 devm_ioremap_wc +EXPORT_SYMBOL vmlinux 0x2e4f637f misc_register +EXPORT_SYMBOL vmlinux 0x2e756b45 __breadahead +EXPORT_SYMBOL vmlinux 0x2e8d7407 kmem_cache_create +EXPORT_SYMBOL vmlinux 0x2ebdf7a3 netif_device_attach +EXPORT_SYMBOL vmlinux 0x2ebf40fb pcie_capability_write_word +EXPORT_SYMBOL vmlinux 0x2ec21c83 inet_dev_addr_type +EXPORT_SYMBOL vmlinux 0x2ec524ad __kfifo_in_r +EXPORT_SYMBOL vmlinux 0x2ecaba7a iw_handler_get_spy +EXPORT_SYMBOL vmlinux 0x2edbbef9 blk_end_request_all +EXPORT_SYMBOL vmlinux 0x2ee25957 from_kprojid_munged +EXPORT_SYMBOL vmlinux 0x2ef63ad6 scsi_dev_info_list_del_keyed +EXPORT_SYMBOL vmlinux 0x2efbbddb inet_recvmsg +EXPORT_SYMBOL vmlinux 0x2f03fc4b security_secmark_refcount_inc +EXPORT_SYMBOL vmlinux 0x2f22de23 input_open_device +EXPORT_SYMBOL vmlinux 0x2f3a611d sk_prot_clear_portaddr_nulls +EXPORT_SYMBOL vmlinux 0x2f463da1 __alloc_page_frag +EXPORT_SYMBOL vmlinux 0x2f48a248 dquot_set_dqinfo +EXPORT_SYMBOL vmlinux 0x2f49d657 fbcon_set_rotate +EXPORT_SYMBOL vmlinux 0x2f7206d5 try_module_get +EXPORT_SYMBOL vmlinux 0x2f75f62b ip6_frag_match +EXPORT_SYMBOL vmlinux 0x2fae96de rtas_data_buf_lock +EXPORT_SYMBOL vmlinux 0x2faeba8b find_lock_entry +EXPORT_SYMBOL vmlinux 0x2fb439a6 bio_clone_fast +EXPORT_SYMBOL vmlinux 0x2fb6de5d add_device_randomness +EXPORT_SYMBOL vmlinux 0x2fe252cc unregister_inet6addr_notifier +EXPORT_SYMBOL vmlinux 0x2fee4b21 kmem_cache_free +EXPORT_SYMBOL vmlinux 0x2ff73615 tcp_syn_ack_timeout +EXPORT_SYMBOL vmlinux 0x30195c3a i2c_put_adapter +EXPORT_SYMBOL vmlinux 0x30226ddf agp_device_command +EXPORT_SYMBOL vmlinux 0x302e952c __scsi_device_lookup_by_target +EXPORT_SYMBOL vmlinux 0x303041c6 udp_flow_hashrnd +EXPORT_SYMBOL vmlinux 0x30478fba skb_kill_datagram +EXPORT_SYMBOL vmlinux 0x3050e48e backlight_force_update +EXPORT_SYMBOL vmlinux 0x30671559 done_path_create +EXPORT_SYMBOL vmlinux 0x307c2fd0 generic_check_addressable +EXPORT_SYMBOL vmlinux 0x30841579 complete_request_key +EXPORT_SYMBOL vmlinux 0x3091d1fa blk_queue_init_tags +EXPORT_SYMBOL vmlinux 0x3096be16 names_cachep +EXPORT_SYMBOL vmlinux 0x30a3a704 xfrm6_protocol_register +EXPORT_SYMBOL vmlinux 0x30a52de1 __dev_get_by_name +EXPORT_SYMBOL vmlinux 0x30a80826 __kfifo_from_user +EXPORT_SYMBOL vmlinux 0x30b8b35c cpu_to_chip_id +EXPORT_SYMBOL vmlinux 0x30ceda75 kernel_getpeername +EXPORT_SYMBOL vmlinux 0x30ff4995 jbd2_journal_init_inode +EXPORT_SYMBOL vmlinux 0x3102d70b frontswap_curr_pages +EXPORT_SYMBOL vmlinux 0x310917fe sort +EXPORT_SYMBOL vmlinux 0x3119efdd __tcf_hash_release +EXPORT_SYMBOL vmlinux 0x3128397e pci_bus_write_config_byte +EXPORT_SYMBOL vmlinux 0x31328b5d xfrm_policy_walk_done +EXPORT_SYMBOL vmlinux 0x31380354 getrawmonotonic64 +EXPORT_SYMBOL vmlinux 0x3145216f pci_dev_present +EXPORT_SYMBOL vmlinux 0x3147857d default_red +EXPORT_SYMBOL vmlinux 0x31646acd wireless_spy_update +EXPORT_SYMBOL vmlinux 0x3174bd79 bitmap_clear +EXPORT_SYMBOL vmlinux 0x3185ae1b pci_alloc_dev +EXPORT_SYMBOL vmlinux 0x3191f109 __krealloc +EXPORT_SYMBOL vmlinux 0x31a7423b simple_lookup +EXPORT_SYMBOL vmlinux 0x31c018ae wake_up_process +EXPORT_SYMBOL vmlinux 0x31d91309 file_open_root +EXPORT_SYMBOL vmlinux 0x31db3198 out_of_line_wait_on_bit +EXPORT_SYMBOL vmlinux 0x31dd420a qdisc_warn_nonwc +EXPORT_SYMBOL vmlinux 0x31f0bb78 __kmap_atomic_idx +EXPORT_SYMBOL vmlinux 0x3210055e pci_disable_msi +EXPORT_SYMBOL vmlinux 0x3219fa52 input_free_device +EXPORT_SYMBOL vmlinux 0x322e4d1d input_close_device +EXPORT_SYMBOL vmlinux 0x324c7a5a tso_count_descs +EXPORT_SYMBOL vmlinux 0x324ddc95 alloc_file +EXPORT_SYMBOL vmlinux 0x325f92fb blk_free_tags +EXPORT_SYMBOL vmlinux 0x3277374d ip6_route_output +EXPORT_SYMBOL vmlinux 0x3277ecc4 pfifo_qdisc_ops +EXPORT_SYMBOL vmlinux 0x327b9c1b pmu_poll_adb +EXPORT_SYMBOL vmlinux 0x328a05f1 strncpy +EXPORT_SYMBOL vmlinux 0x32a14f75 rwsem_down_write_failed +EXPORT_SYMBOL vmlinux 0x32a1fb93 jbd2_journal_check_used_features +EXPORT_SYMBOL vmlinux 0x32c9f238 cad_pid +EXPORT_SYMBOL vmlinux 0x32ef2ba8 security_sb_set_mnt_opts +EXPORT_SYMBOL vmlinux 0x3309fd07 napi_get_frags +EXPORT_SYMBOL vmlinux 0x330eb1b7 powerpc_debugfs_root +EXPORT_SYMBOL vmlinux 0x3312558f __devm_gpiod_get +EXPORT_SYMBOL vmlinux 0x33273132 pci_bus_read_dev_vendor_id +EXPORT_SYMBOL vmlinux 0x33513539 tcf_em_tree_validate +EXPORT_SYMBOL vmlinux 0x3372b825 prepare_creds +EXPORT_SYMBOL vmlinux 0x3378d1c1 acl_by_type +EXPORT_SYMBOL vmlinux 0x33b84f74 copy_page +EXPORT_SYMBOL vmlinux 0x33bd0a0e mipi_dsi_dcs_enter_sleep_mode +EXPORT_SYMBOL vmlinux 0x33c7435c prandom_u32_state +EXPORT_SYMBOL vmlinux 0x33dbfd93 tcp_memory_allocated +EXPORT_SYMBOL vmlinux 0x33f0768c cpufreq_quick_get_max +EXPORT_SYMBOL vmlinux 0x33fa3eed __kernel_write +EXPORT_SYMBOL vmlinux 0x34184afe current_kernel_time +EXPORT_SYMBOL vmlinux 0x341dbfa3 __per_cpu_offset +EXPORT_SYMBOL vmlinux 0x344adbd5 init_cdrom_command +EXPORT_SYMBOL vmlinux 0x346551fc md_finish_reshape +EXPORT_SYMBOL vmlinux 0x3465caa3 cpu_maps_update_begin +EXPORT_SYMBOL vmlinux 0x347013de nla_validate +EXPORT_SYMBOL vmlinux 0x3472a405 default_file_splice_read +EXPORT_SYMBOL vmlinux 0x3479785a dev_disable_lro +EXPORT_SYMBOL vmlinux 0x347df073 simple_unlink +EXPORT_SYMBOL vmlinux 0x349cba85 strchr +EXPORT_SYMBOL vmlinux 0x34b52e25 sg_miter_stop +EXPORT_SYMBOL vmlinux 0x34ea273f file_ns_capable +EXPORT_SYMBOL vmlinux 0x34f3484e security_tun_dev_attach_queue +EXPORT_SYMBOL vmlinux 0x3517383e register_reboot_notifier +EXPORT_SYMBOL vmlinux 0x352a02d4 of_get_ddr_timings +EXPORT_SYMBOL vmlinux 0x353de98f cmdline_parts_parse +EXPORT_SYMBOL vmlinux 0x354f43aa d_find_alias +EXPORT_SYMBOL vmlinux 0x3551c72c request_firmware_nowait +EXPORT_SYMBOL vmlinux 0x3561123b scsi_rescan_device +EXPORT_SYMBOL vmlinux 0x3563a31a jbd2_journal_update_sb_errno +EXPORT_SYMBOL vmlinux 0x356461c8 rtc_time64_to_tm +EXPORT_SYMBOL vmlinux 0x356d8cb0 mmc_gpio_set_cd_isr +EXPORT_SYMBOL vmlinux 0x3576119f giveup_fpu +EXPORT_SYMBOL vmlinux 0x35a2dbd4 sock_common_recvmsg +EXPORT_SYMBOL vmlinux 0x35a88f28 zlib_inflateInit2 +EXPORT_SYMBOL vmlinux 0x35bfe82f d_alloc_pseudo +EXPORT_SYMBOL vmlinux 0x35c32767 xor_altivec_2 +EXPORT_SYMBOL vmlinux 0x35c66703 of_node_get +EXPORT_SYMBOL vmlinux 0x35d49aed wait_on_page_bit +EXPORT_SYMBOL vmlinux 0x35d9e1f4 of_device_is_big_endian +EXPORT_SYMBOL vmlinux 0x35e81db0 elv_unregister_queue +EXPORT_SYMBOL vmlinux 0x35fbd6a1 __kfifo_dma_out_prepare_r +EXPORT_SYMBOL vmlinux 0x3608a4dc seq_printf +EXPORT_SYMBOL vmlinux 0x360b7238 mutex_lock +EXPORT_SYMBOL vmlinux 0x360d85c4 cros_ec_prepare_tx +EXPORT_SYMBOL vmlinux 0x3618cb2d ida_destroy +EXPORT_SYMBOL vmlinux 0x36381ded soft_cursor +EXPORT_SYMBOL vmlinux 0x364cf2b0 sync_inode_metadata +EXPORT_SYMBOL vmlinux 0x366f6d27 idr_destroy +EXPORT_SYMBOL vmlinux 0x36719c31 scsi_get_device_flags_keyed +EXPORT_SYMBOL vmlinux 0x3672f943 thermal_cdev_update +EXPORT_SYMBOL vmlinux 0x367ba856 __crc32c_le_shift +EXPORT_SYMBOL vmlinux 0x3683800d generic_file_open +EXPORT_SYMBOL vmlinux 0x368795fb __netif_schedule +EXPORT_SYMBOL vmlinux 0x368c3459 pci_set_dma_seg_boundary +EXPORT_SYMBOL vmlinux 0x36961543 jbd2_journal_lock_updates +EXPORT_SYMBOL vmlinux 0x36b0e732 try_wait_for_completion +EXPORT_SYMBOL vmlinux 0x36bd681b groups_alloc +EXPORT_SYMBOL vmlinux 0x36e777a1 security_dentry_init_security +EXPORT_SYMBOL vmlinux 0x36fa7ce5 dev_close +EXPORT_SYMBOL vmlinux 0x36fdda67 hdmi_infoframe_pack +EXPORT_SYMBOL vmlinux 0x371d2130 check_legacy_ioport +EXPORT_SYMBOL vmlinux 0x37262359 xfrm_state_check_expire +EXPORT_SYMBOL vmlinux 0x37383edd rtas_get_power_level +EXPORT_SYMBOL vmlinux 0x373ac2d9 register_qdisc +EXPORT_SYMBOL vmlinux 0x3742b6e4 ipv4_specific +EXPORT_SYMBOL vmlinux 0x3744cf36 vmalloc_to_pfn +EXPORT_SYMBOL vmlinux 0x37456aa5 dquot_transfer +EXPORT_SYMBOL vmlinux 0x37598aef ip_mc_inc_group +EXPORT_SYMBOL vmlinux 0x376fdccc devfreq_suspend_device +EXPORT_SYMBOL vmlinux 0x37793562 i2c_smbus_write_byte_data +EXPORT_SYMBOL vmlinux 0x378c255b phy_ethtool_sset +EXPORT_SYMBOL vmlinux 0x379162e8 sock_common_getsockopt +EXPORT_SYMBOL vmlinux 0x37a57ef4 pcim_iounmap_regions +EXPORT_SYMBOL vmlinux 0x37aec635 sk_page_frag_refill +EXPORT_SYMBOL vmlinux 0x37af3190 dm_table_run_md_queue_async +EXPORT_SYMBOL vmlinux 0x37b7ffa0 call_usermodehelper_setup +EXPORT_SYMBOL vmlinux 0x37b8571f fb_prepare_logo +EXPORT_SYMBOL vmlinux 0x37befc70 jiffies_to_msecs +EXPORT_SYMBOL vmlinux 0x37e0153d flex_array_prealloc +EXPORT_SYMBOL vmlinux 0x37e74642 get_jiffies_64 +EXPORT_SYMBOL vmlinux 0x37f614b7 __kfifo_len_r +EXPORT_SYMBOL vmlinux 0x37f6fee5 fsl_lbc_find +EXPORT_SYMBOL vmlinux 0x3807d613 unload_nls +EXPORT_SYMBOL vmlinux 0x381144a9 __tracepoint_module_get +EXPORT_SYMBOL vmlinux 0x381a798a setup_max_cpus +EXPORT_SYMBOL vmlinux 0x3827d4ba fget +EXPORT_SYMBOL vmlinux 0x38365764 devm_gpio_request_one +EXPORT_SYMBOL vmlinux 0x38523adb dev_change_carrier +EXPORT_SYMBOL vmlinux 0x385aa24b netdev_refcnt_read +EXPORT_SYMBOL vmlinux 0x3865f16e downgrade_write +EXPORT_SYMBOL vmlinux 0x38813da1 brioctl_set +EXPORT_SYMBOL vmlinux 0x38869d88 kstat +EXPORT_SYMBOL vmlinux 0x38a71b7e pci_free_resource_list +EXPORT_SYMBOL vmlinux 0x38a9f7c5 in6addr_loopback +EXPORT_SYMBOL vmlinux 0x38acd722 i2c_smbus_write_block_data +EXPORT_SYMBOL vmlinux 0x38af23d7 blk_limits_max_hw_sectors +EXPORT_SYMBOL vmlinux 0x38b262c8 macio_release_resource +EXPORT_SYMBOL vmlinux 0x38b825d1 idr_replace +EXPORT_SYMBOL vmlinux 0x38d35471 mmc_can_trim +EXPORT_SYMBOL vmlinux 0x38e6d217 fsnotify_put_group +EXPORT_SYMBOL vmlinux 0x38ee1722 ppp_unregister_channel +EXPORT_SYMBOL vmlinux 0x38f58e0a kmem_cache_alloc_trace +EXPORT_SYMBOL vmlinux 0x38fb69e8 copy_page_from_iter +EXPORT_SYMBOL vmlinux 0x38fb9933 tty_std_termios +EXPORT_SYMBOL vmlinux 0x391d46bd pci_disable_msix +EXPORT_SYMBOL vmlinux 0x3939f8f0 rfkill_pause_polling +EXPORT_SYMBOL vmlinux 0x39461d6a in_egroup_p +EXPORT_SYMBOL vmlinux 0x39669075 simple_open +EXPORT_SYMBOL vmlinux 0x3972601b nf_register_sockopt +EXPORT_SYMBOL vmlinux 0x398f4127 __splice_from_pipe +EXPORT_SYMBOL vmlinux 0x39991865 icmp_global_allow +EXPORT_SYMBOL vmlinux 0x39b4e367 tty_do_resize +EXPORT_SYMBOL vmlinux 0x39b52d19 __bitmap_and +EXPORT_SYMBOL vmlinux 0x39cdf63c wait_for_completion_interruptible +EXPORT_SYMBOL vmlinux 0x39d1e7c0 tcf_destroy_chain +EXPORT_SYMBOL vmlinux 0x39f30879 skb_try_coalesce +EXPORT_SYMBOL vmlinux 0x39f619ae mmc_free_host +EXPORT_SYMBOL vmlinux 0x3a1ac054 set_normalized_timespec64 +EXPORT_SYMBOL vmlinux 0x3a1cac09 t10_pi_type3_ip +EXPORT_SYMBOL vmlinux 0x3a273cbb security_inode_getsecctx +EXPORT_SYMBOL vmlinux 0x3a4d88fd tty_write_room +EXPORT_SYMBOL vmlinux 0x3a664b53 generic_readlink +EXPORT_SYMBOL vmlinux 0x3a9b6fb9 blk_unregister_region +EXPORT_SYMBOL vmlinux 0x3a9ba6e7 tcp_prequeue +EXPORT_SYMBOL vmlinux 0x3ab103b7 __skb_gro_checksum_complete +EXPORT_SYMBOL vmlinux 0x3ab55795 generic_error_remove_page +EXPORT_SYMBOL vmlinux 0x3ae67e21 netdev_lower_get_first_private_rcu +EXPORT_SYMBOL vmlinux 0x3af528f8 devfreq_register_opp_notifier +EXPORT_SYMBOL vmlinux 0x3b0d5d1d input_mt_get_slot_by_key +EXPORT_SYMBOL vmlinux 0x3b2388b1 textsearch_prepare +EXPORT_SYMBOL vmlinux 0x3b309a7c kfree_skb_partial +EXPORT_SYMBOL vmlinux 0x3b564876 ps2_cmd_aborted +EXPORT_SYMBOL vmlinux 0x3b615a21 wait_for_completion_killable +EXPORT_SYMBOL vmlinux 0x3b644591 __bitmap_shift_left +EXPORT_SYMBOL vmlinux 0x3b7fdd05 param_get_ushort +EXPORT_SYMBOL vmlinux 0x3b8ba0ad iput +EXPORT_SYMBOL vmlinux 0x3ba86743 dquot_scan_active +EXPORT_SYMBOL vmlinux 0x3bc914e8 dquot_acquire +EXPORT_SYMBOL vmlinux 0x3bce304d pci_set_dma_max_seg_size +EXPORT_SYMBOL vmlinux 0x3be2c406 fsync_bdev +EXPORT_SYMBOL vmlinux 0x3be423a2 __bio_clone_fast +EXPORT_SYMBOL vmlinux 0x3c243108 dev_set_mac_address +EXPORT_SYMBOL vmlinux 0x3c3fce39 __local_bh_enable_ip +EXPORT_SYMBOL vmlinux 0x3c413303 md_done_sync +EXPORT_SYMBOL vmlinux 0x3c4334de netlink_capable +EXPORT_SYMBOL vmlinux 0x3c4c0f70 dst_cow_metrics_generic +EXPORT_SYMBOL vmlinux 0x3c5ec0af may_umount_tree +EXPORT_SYMBOL vmlinux 0x3c652b24 proc_dointvec_userhz_jiffies +EXPORT_SYMBOL vmlinux 0x3c738b6e inetdev_by_index +EXPORT_SYMBOL vmlinux 0x3c80c06c kstrtoull +EXPORT_SYMBOL vmlinux 0x3c8e4d0f sg_miter_start +EXPORT_SYMBOL vmlinux 0x3cadb96e sock_no_accept +EXPORT_SYMBOL vmlinux 0x3cc4b0dc lg_lock_init +EXPORT_SYMBOL vmlinux 0x3cc9eda4 prepare_binprm +EXPORT_SYMBOL vmlinux 0x3cd95a91 blk_mq_alloc_tag_set +EXPORT_SYMBOL vmlinux 0x3ce07110 pci_try_set_mwi +EXPORT_SYMBOL vmlinux 0x3ce187ac pci_assign_resource +EXPORT_SYMBOL vmlinux 0x3ce4ca6f disable_irq +EXPORT_SYMBOL vmlinux 0x3cf403f2 dquot_commit +EXPORT_SYMBOL vmlinux 0x3d16b65c inet6_getname +EXPORT_SYMBOL vmlinux 0x3d42c9f5 audit_log_start +EXPORT_SYMBOL vmlinux 0x3d5e35a4 jbd2_journal_free_reserved +EXPORT_SYMBOL vmlinux 0x3d8ecfd9 elv_rb_add +EXPORT_SYMBOL vmlinux 0x3da61eca cdev_alloc +EXPORT_SYMBOL vmlinux 0x3dbb3f67 ipv6_getsockopt +EXPORT_SYMBOL vmlinux 0x3dbd5130 get_cached_acl +EXPORT_SYMBOL vmlinux 0x3dc02a4e flex_array_free_parts +EXPORT_SYMBOL vmlinux 0x3dca26ee agp_allocate_memory +EXPORT_SYMBOL vmlinux 0x3dcb88a0 irq_set_handler_data +EXPORT_SYMBOL vmlinux 0x3ddc370d consume_skb +EXPORT_SYMBOL vmlinux 0x3dfc897c seq_hlist_start_head +EXPORT_SYMBOL vmlinux 0x3e01677b napi_gro_receive +EXPORT_SYMBOL vmlinux 0x3e059cb0 mmc_detect_card_removed +EXPORT_SYMBOL vmlinux 0x3e1bd135 scsi_device_put +EXPORT_SYMBOL vmlinux 0x3e30dc1a i2c_verify_client +EXPORT_SYMBOL vmlinux 0x3e37db85 sk_mc_loop +EXPORT_SYMBOL vmlinux 0x3e531733 machine_id +EXPORT_SYMBOL vmlinux 0x3e77b999 unregister_framebuffer +EXPORT_SYMBOL vmlinux 0x3e8f6ae4 bmap +EXPORT_SYMBOL vmlinux 0x3e9110fa __hw_addr_unsync +EXPORT_SYMBOL vmlinux 0x3ec30a90 iw_handler_set_thrspy +EXPORT_SYMBOL vmlinux 0x3edb2e72 scsi_command_normalize_sense +EXPORT_SYMBOL vmlinux 0x3ee88613 pci_iomap +EXPORT_SYMBOL vmlinux 0x3ef87c96 sock_diag_put_filterinfo +EXPORT_SYMBOL vmlinux 0x3efcfc5f mmc_detect_change +EXPORT_SYMBOL vmlinux 0x3f0546a8 ioread32_rep +EXPORT_SYMBOL vmlinux 0x3f0a0f21 inode_claim_rsv_space +EXPORT_SYMBOL vmlinux 0x3f1169ba generic_perform_write +EXPORT_SYMBOL vmlinux 0x3f166a5b elv_rb_del +EXPORT_SYMBOL vmlinux 0x3f406a3b enable_kernel_altivec +EXPORT_SYMBOL vmlinux 0x3f4547a7 put_unused_fd +EXPORT_SYMBOL vmlinux 0x3f616ce2 queue_delayed_work_on +EXPORT_SYMBOL vmlinux 0x3f7f949e tty_mutex +EXPORT_SYMBOL vmlinux 0x3f942c3d give_up_console +EXPORT_SYMBOL vmlinux 0x3f9ed979 datagram_poll +EXPORT_SYMBOL vmlinux 0x3fa10632 simple_link +EXPORT_SYMBOL vmlinux 0x3fa45a1b dev_loopback_xmit +EXPORT_SYMBOL vmlinux 0x3faaecb1 ipv6_dev_get_saddr +EXPORT_SYMBOL vmlinux 0x3fb1cf71 proc_dointvec_jiffies +EXPORT_SYMBOL vmlinux 0x3fe0d1c0 slhc_free +EXPORT_SYMBOL vmlinux 0x3ff08bad bio_integrity_free +EXPORT_SYMBOL vmlinux 0x3ff8e495 lg_local_unlock_cpu +EXPORT_SYMBOL vmlinux 0x400440ed register_tcf_proto_ops +EXPORT_SYMBOL vmlinux 0x402b8281 __request_module +EXPORT_SYMBOL vmlinux 0x4045e93c ndisc_mc_map +EXPORT_SYMBOL vmlinux 0x4046e6e4 nf_log_set +EXPORT_SYMBOL vmlinux 0x4059792f print_hex_dump +EXPORT_SYMBOL vmlinux 0x405c1144 get_seconds +EXPORT_SYMBOL vmlinux 0x405e85f3 blkdev_fsync +EXPORT_SYMBOL vmlinux 0x407fd56f pci_request_selected_regions +EXPORT_SYMBOL vmlinux 0x40836ef0 dput +EXPORT_SYMBOL vmlinux 0x40973662 sysctl_udp_mem +EXPORT_SYMBOL vmlinux 0x4098ab07 __skb_gso_segment +EXPORT_SYMBOL vmlinux 0x40a27c37 scsi_dev_info_remove_list +EXPORT_SYMBOL vmlinux 0x40a2d1dd dm_table_get_size +EXPORT_SYMBOL vmlinux 0x40a9b349 vzalloc +EXPORT_SYMBOL vmlinux 0x40ad5580 tcp_md5_do_del +EXPORT_SYMBOL vmlinux 0x40bc0825 scsi_host_lookup +EXPORT_SYMBOL vmlinux 0x40beb95b gen_pool_free +EXPORT_SYMBOL vmlinux 0x40c01859 gen_pool_best_fit +EXPORT_SYMBOL vmlinux 0x40c4982f key_revoke +EXPORT_SYMBOL vmlinux 0x40c7247c si_meminfo +EXPORT_SYMBOL vmlinux 0x40d04664 console_trylock +EXPORT_SYMBOL vmlinux 0x40d46abb of_graph_get_remote_port +EXPORT_SYMBOL vmlinux 0x40d59096 unregister_restart_handler +EXPORT_SYMBOL vmlinux 0x40dcff69 t10_pi_type1_ip +EXPORT_SYMBOL vmlinux 0x40df0c71 dma_find_channel +EXPORT_SYMBOL vmlinux 0x40ea4fad mount_ns +EXPORT_SYMBOL vmlinux 0x40eb417e flow_cache_init +EXPORT_SYMBOL vmlinux 0x40f1ad10 tb_ticks_per_jiffy +EXPORT_SYMBOL vmlinux 0x410a11d0 of_create_pci_dev +EXPORT_SYMBOL vmlinux 0x4141d0ef mmc_flush_cache +EXPORT_SYMBOL vmlinux 0x41482d8b strndup_user +EXPORT_SYMBOL vmlinux 0x414d8d4e tcf_hash_create +EXPORT_SYMBOL vmlinux 0x416c85fa dquot_claim_space_nodirty +EXPORT_SYMBOL vmlinux 0x4188d439 neigh_rand_reach_time +EXPORT_SYMBOL vmlinux 0x418a5367 __scsi_format_command +EXPORT_SYMBOL vmlinux 0x41a82e69 unregister_netdev +EXPORT_SYMBOL vmlinux 0x41a8fa3d of_io_request_and_map +EXPORT_SYMBOL vmlinux 0x41c2d2ce tcp_get_cookie_sock +EXPORT_SYMBOL vmlinux 0x41c3d04f __d_drop +EXPORT_SYMBOL vmlinux 0x41f42b02 in6_dev_finish_destroy +EXPORT_SYMBOL vmlinux 0x420ad427 force_sig +EXPORT_SYMBOL vmlinux 0x42160169 flush_workqueue +EXPORT_SYMBOL vmlinux 0x42293587 iov_iter_alignment +EXPORT_SYMBOL vmlinux 0x42463aba mark_page_accessed +EXPORT_SYMBOL vmlinux 0x4248ae3c single_task_running +EXPORT_SYMBOL vmlinux 0x424d3620 zlib_inflateIncomp +EXPORT_SYMBOL vmlinux 0x42595e58 vgacon_text_force +EXPORT_SYMBOL vmlinux 0x425d1914 dquot_file_open +EXPORT_SYMBOL vmlinux 0x428d2d9d udp6_csum_init +EXPORT_SYMBOL vmlinux 0x4294709c netif_rx_ni +EXPORT_SYMBOL vmlinux 0x429be6d3 remove_conflicting_framebuffers +EXPORT_SYMBOL vmlinux 0x42a1b208 gen_pool_first_fit +EXPORT_SYMBOL vmlinux 0x42a6b27e generic_listxattr +EXPORT_SYMBOL vmlinux 0x42bdd1b3 inet_frag_destroy +EXPORT_SYMBOL vmlinux 0x42c02028 sk_stream_wait_memory +EXPORT_SYMBOL vmlinux 0x42ceadf0 validate_sp +EXPORT_SYMBOL vmlinux 0x42dd22d8 __skb_flow_get_ports +EXPORT_SYMBOL vmlinux 0x42e5207e dquot_alloc_inode +EXPORT_SYMBOL vmlinux 0x42fad7cd jbd2_journal_errno +EXPORT_SYMBOL vmlinux 0x4302d0eb free_pages +EXPORT_SYMBOL vmlinux 0x430a2e08 __dquot_free_space +EXPORT_SYMBOL vmlinux 0x4319bf7a of_get_next_child +EXPORT_SYMBOL vmlinux 0x43451465 max8998_read_reg +EXPORT_SYMBOL vmlinux 0x43512220 dev_printk +EXPORT_SYMBOL vmlinux 0x4351577a fb_parse_edid +EXPORT_SYMBOL vmlinux 0x436c2179 iowrite32 +EXPORT_SYMBOL vmlinux 0x438610bd security_tun_dev_alloc_security +EXPORT_SYMBOL vmlinux 0x438f0ca3 blk_get_request +EXPORT_SYMBOL vmlinux 0x4392138b swiotlb_sync_single_for_device +EXPORT_SYMBOL vmlinux 0x43946789 neigh_for_each +EXPORT_SYMBOL vmlinux 0x43a01f90 complete_all +EXPORT_SYMBOL vmlinux 0x43a89aef pci_reenable_device +EXPORT_SYMBOL vmlinux 0x43b28cb5 sock_kmalloc +EXPORT_SYMBOL vmlinux 0x43b56c7d skb_pad +EXPORT_SYMBOL vmlinux 0x43b5dd47 tty_free_termios +EXPORT_SYMBOL vmlinux 0x43cb8f3c unregister_tcf_proto_ops +EXPORT_SYMBOL vmlinux 0x43ee308a jbd2_journal_try_to_free_buffers +EXPORT_SYMBOL vmlinux 0x43f23311 dm_table_get_md +EXPORT_SYMBOL vmlinux 0x44051a29 __xfrm_state_destroy +EXPORT_SYMBOL vmlinux 0x440cd6b9 of_match_device +EXPORT_SYMBOL vmlinux 0x4411c503 prandom_seed +EXPORT_SYMBOL vmlinux 0x4426da74 inode_init_owner +EXPORT_SYMBOL vmlinux 0x44366cfc simple_write_to_buffer +EXPORT_SYMBOL vmlinux 0x443b589b posix_lock_file +EXPORT_SYMBOL vmlinux 0x44404497 generic_write_end +EXPORT_SYMBOL vmlinux 0x44438b96 hex2bin +EXPORT_SYMBOL vmlinux 0x444ba7f5 dev_deactivate +EXPORT_SYMBOL vmlinux 0x4470f7c4 of_get_ibm_chip_id +EXPORT_SYMBOL vmlinux 0x447bc650 __pagevec_lru_add +EXPORT_SYMBOL vmlinux 0x44b1d426 __dynamic_pr_debug +EXPORT_SYMBOL vmlinux 0x44b40826 agp_generic_alloc_by_type +EXPORT_SYMBOL vmlinux 0x44c040a8 nf_nat_decode_session_hook +EXPORT_SYMBOL vmlinux 0x44e9a829 match_token +EXPORT_SYMBOL vmlinux 0x44eb192e wait_for_completion +EXPORT_SYMBOL vmlinux 0x44f3dd5f tty_port_close_start +EXPORT_SYMBOL vmlinux 0x45215efc xfrm4_protocol_register +EXPORT_SYMBOL vmlinux 0x4535ec97 swiotlb_unmap_sg_attrs +EXPORT_SYMBOL vmlinux 0x453c8403 pci_msi_enabled +EXPORT_SYMBOL vmlinux 0x453cd973 sock_kfree_s +EXPORT_SYMBOL vmlinux 0x4540f354 input_flush_device +EXPORT_SYMBOL vmlinux 0x4559f6de textsearch_find_continuous +EXPORT_SYMBOL vmlinux 0x456377dc pci_find_bus +EXPORT_SYMBOL vmlinux 0x4566059c dev_mc_add_global +EXPORT_SYMBOL vmlinux 0x456c44b7 unregister_cdrom +EXPORT_SYMBOL vmlinux 0x4578f528 __kfifo_to_user +EXPORT_SYMBOL vmlinux 0x457d885e __module_get +EXPORT_SYMBOL vmlinux 0x459be554 ps2_sendbyte +EXPORT_SYMBOL vmlinux 0x45a6be13 cpufreq_sysfs_remove_file +EXPORT_SYMBOL vmlinux 0x45d23fa0 ll_rw_block +EXPORT_SYMBOL vmlinux 0x45ea890b blk_init_tags +EXPORT_SYMBOL vmlinux 0x46084952 sock_no_getsockopt +EXPORT_SYMBOL vmlinux 0x4612c59d down_trylock +EXPORT_SYMBOL vmlinux 0x4613fe95 filemap_fdatawrite +EXPORT_SYMBOL vmlinux 0x46141e1c dev_remove_offload +EXPORT_SYMBOL vmlinux 0x4617152b netdev_change_features +EXPORT_SYMBOL vmlinux 0x461b38f9 tcp_gro_complete +EXPORT_SYMBOL vmlinux 0x461ebfa0 __copy_tofrom_user +EXPORT_SYMBOL vmlinux 0x462345e1 xmon +EXPORT_SYMBOL vmlinux 0x462a2e75 match_strlcpy +EXPORT_SYMBOL vmlinux 0x464ed6bc read_cache_page_gfp +EXPORT_SYMBOL vmlinux 0x4655538e dma_direct_ops +EXPORT_SYMBOL vmlinux 0x4655fe91 path_get +EXPORT_SYMBOL vmlinux 0x465757c3 cpu_present_mask +EXPORT_SYMBOL vmlinux 0x465cab34 secure_ipv6_port_ephemeral +EXPORT_SYMBOL vmlinux 0x46649cd1 vme_lm_set +EXPORT_SYMBOL vmlinux 0x466857b5 __generic_block_fiemap +EXPORT_SYMBOL vmlinux 0x466c14a7 __delay +EXPORT_SYMBOL vmlinux 0x468e5c15 jbd2_journal_ack_err +EXPORT_SYMBOL vmlinux 0x468fdeeb ip_options_compile +EXPORT_SYMBOL vmlinux 0x46b6f6d1 copy_to_iter +EXPORT_SYMBOL vmlinux 0x46d12956 wait_for_completion_interruptible_timeout +EXPORT_SYMBOL vmlinux 0x46f81a13 dev_mc_init +EXPORT_SYMBOL vmlinux 0x46feb099 dm_read_arg +EXPORT_SYMBOL vmlinux 0x470a5163 generic_fillattr +EXPORT_SYMBOL vmlinux 0x47228be7 inet_sk_rebuild_header +EXPORT_SYMBOL vmlinux 0x47416e14 cpu_rmap_add +EXPORT_SYMBOL vmlinux 0x47496f7c blk_recount_segments +EXPORT_SYMBOL vmlinux 0x474e9256 skb_realloc_headroom +EXPORT_SYMBOL vmlinux 0x475741ab md_cluster_mod +EXPORT_SYMBOL vmlinux 0x47608718 fence_init +EXPORT_SYMBOL vmlinux 0x476d034f km_state_expired +EXPORT_SYMBOL vmlinux 0x478d4c11 phy_device_free +EXPORT_SYMBOL vmlinux 0x47939e0d __tasklet_hi_schedule +EXPORT_SYMBOL vmlinux 0x47940f6e sock_get_timestampns +EXPORT_SYMBOL vmlinux 0x47990c69 inet_getname +EXPORT_SYMBOL vmlinux 0x479936f2 ipv6_sock_mc_join +EXPORT_SYMBOL vmlinux 0x479c3c86 find_next_zero_bit +EXPORT_SYMBOL vmlinux 0x47bcb272 dev_uc_add_excl +EXPORT_SYMBOL vmlinux 0x47da60d4 tty_port_tty_get +EXPORT_SYMBOL vmlinux 0x47df5f47 __f_setown +EXPORT_SYMBOL vmlinux 0x47ef878d neigh_connected_output +EXPORT_SYMBOL vmlinux 0x48121211 bitmap_startwrite +EXPORT_SYMBOL vmlinux 0x481ce6ce cpu_active_mask +EXPORT_SYMBOL vmlinux 0x48224722 md_cluster_ops +EXPORT_SYMBOL vmlinux 0x4822bace fs_bio_set +EXPORT_SYMBOL vmlinux 0x48241929 pcim_iomap_regions_request_all +EXPORT_SYMBOL vmlinux 0x4827d88c irq_to_desc +EXPORT_SYMBOL vmlinux 0x48404b9a remove_wait_queue +EXPORT_SYMBOL vmlinux 0x4859b8bb rtc_year_days +EXPORT_SYMBOL vmlinux 0x4881efab pmac_get_partition +EXPORT_SYMBOL vmlinux 0x4896c88c get_super_thawed +EXPORT_SYMBOL vmlinux 0x48b99a13 vme_lm_free +EXPORT_SYMBOL vmlinux 0x48dbe002 dquot_quota_off +EXPORT_SYMBOL vmlinux 0x49045426 icmp_err_convert +EXPORT_SYMBOL vmlinux 0x49079216 xfrm_state_walk +EXPORT_SYMBOL vmlinux 0x4916df90 follow_down +EXPORT_SYMBOL vmlinux 0x493db71d pm860x_page_reg_write +EXPORT_SYMBOL vmlinux 0x4946d972 phy_stop_interrupts +EXPORT_SYMBOL vmlinux 0x49501b16 __vfs_write +EXPORT_SYMBOL vmlinux 0x495c96f8 posix_acl_init +EXPORT_SYMBOL vmlinux 0x49603fb8 security_sb_copy_data +EXPORT_SYMBOL vmlinux 0x497bd484 security_path_mknod +EXPORT_SYMBOL vmlinux 0x4996bf1f dm_put_table_device +EXPORT_SYMBOL vmlinux 0x49aab680 i2c_smbus_read_i2c_block_data +EXPORT_SYMBOL vmlinux 0x49b07aec tcp_select_initial_window +EXPORT_SYMBOL vmlinux 0x49c7756f pci_prepare_to_sleep +EXPORT_SYMBOL vmlinux 0x49d0b137 unregister_nls +EXPORT_SYMBOL vmlinux 0x49d93e3d ppp_register_net_channel +EXPORT_SYMBOL vmlinux 0x49e7a796 mmc_gpio_get_cd +EXPORT_SYMBOL vmlinux 0x49f71442 dev_close_many +EXPORT_SYMBOL vmlinux 0x4a1cce1c blk_mq_start_request +EXPORT_SYMBOL vmlinux 0x4a3c0113 pci_write_vpd +EXPORT_SYMBOL vmlinux 0x4a5361ec igrab +EXPORT_SYMBOL vmlinux 0x4a5e0b4f mmc_request_done +EXPORT_SYMBOL vmlinux 0x4a68faf0 set_page_dirty_lock +EXPORT_SYMBOL vmlinux 0x4a8eb995 __napi_complete +EXPORT_SYMBOL vmlinux 0x4a90f532 iov_iter_advance +EXPORT_SYMBOL vmlinux 0x4aa22c72 tcp_hashinfo +EXPORT_SYMBOL vmlinux 0x4ab9d99a input_mt_init_slots +EXPORT_SYMBOL vmlinux 0x4abbe3c2 vm_brk +EXPORT_SYMBOL vmlinux 0x4ac171d8 freezing_slow_path +EXPORT_SYMBOL vmlinux 0x4adcd6f3 __scsi_add_device +EXPORT_SYMBOL vmlinux 0x4add517f simple_symlink_inode_operations +EXPORT_SYMBOL vmlinux 0x4afe9a77 scsi_partsize +EXPORT_SYMBOL vmlinux 0x4b085dbf agp3_generic_configure +EXPORT_SYMBOL vmlinux 0x4b1ac4af __napi_schedule_irqoff +EXPORT_SYMBOL vmlinux 0x4b1b3836 del_random_ready_callback +EXPORT_SYMBOL vmlinux 0x4b1ec3e2 kstrtoul_from_user +EXPORT_SYMBOL vmlinux 0x4b34fbf5 block_all_signals +EXPORT_SYMBOL vmlinux 0x4b5aa086 phy_start +EXPORT_SYMBOL vmlinux 0x4b5fd49e dm_kcopyd_do_callback +EXPORT_SYMBOL vmlinux 0x4b702beb ether_setup +EXPORT_SYMBOL vmlinux 0x4b8326ff ida_remove +EXPORT_SYMBOL vmlinux 0x4baf35a7 vme_master_get +EXPORT_SYMBOL vmlinux 0x4bb0778e vm_stat +EXPORT_SYMBOL vmlinux 0x4bb7464f gen_pool_for_each_chunk +EXPORT_SYMBOL vmlinux 0x4bbf51a9 rps_sock_flow_table +EXPORT_SYMBOL vmlinux 0x4bbfe4db skb_seq_read +EXPORT_SYMBOL vmlinux 0x4bcf03a4 radix_tree_tag_clear +EXPORT_SYMBOL vmlinux 0x4bd0df21 seq_pad +EXPORT_SYMBOL vmlinux 0x4be85a03 memweight +EXPORT_SYMBOL vmlinux 0x4be9bea6 pm8606_osc_disable +EXPORT_SYMBOL vmlinux 0x4bed99b3 __percpu_counter_add +EXPORT_SYMBOL vmlinux 0x4bf36abc neigh_lookup_nodev +EXPORT_SYMBOL vmlinux 0x4c0e3391 submit_bh +EXPORT_SYMBOL vmlinux 0x4c11435a _raw_read_lock_bh +EXPORT_SYMBOL vmlinux 0x4c1edfbb ip_check_defrag +EXPORT_SYMBOL vmlinux 0x4c29dcbf cancel_delayed_work_sync +EXPORT_SYMBOL vmlinux 0x4c29f62c kmem_cache_shrink +EXPORT_SYMBOL vmlinux 0x4c2ae700 strnstr +EXPORT_SYMBOL vmlinux 0x4c2eb8dd pcim_iounmap +EXPORT_SYMBOL vmlinux 0x4c346a53 kvasprintf +EXPORT_SYMBOL vmlinux 0x4c3978de phy_print_status +EXPORT_SYMBOL vmlinux 0x4c5cd033 inet6_ioctl +EXPORT_SYMBOL vmlinux 0x4c8c8195 qdisc_create_dflt +EXPORT_SYMBOL vmlinux 0x4c9b557a security_inode_permission +EXPORT_SYMBOL vmlinux 0x4ca111da generic_key_instantiate +EXPORT_SYMBOL vmlinux 0x4ccd86df jbd2_complete_transaction +EXPORT_SYMBOL vmlinux 0x4cd33d0a inode_newsize_ok +EXPORT_SYMBOL vmlinux 0x4cdb3178 ns_to_timeval +EXPORT_SYMBOL vmlinux 0x4ce2a470 pci_bus_write_config_dword +EXPORT_SYMBOL vmlinux 0x4cf1e9c7 ethtool_op_get_link +EXPORT_SYMBOL vmlinux 0x4d12ccf0 ip6_frag_init +EXPORT_SYMBOL vmlinux 0x4d294bb4 bit_wait_io +EXPORT_SYMBOL vmlinux 0x4d3bac19 dev_uc_sync_multiple +EXPORT_SYMBOL vmlinux 0x4d3c153f sigprocmask +EXPORT_SYMBOL vmlinux 0x4d3dd903 dqput +EXPORT_SYMBOL vmlinux 0x4d45d89e udp_memory_allocated +EXPORT_SYMBOL vmlinux 0x4d6693f7 security_path_chown +EXPORT_SYMBOL vmlinux 0x4d76efb2 backlight_device_unregister +EXPORT_SYMBOL vmlinux 0x4d791953 mempool_resize +EXPORT_SYMBOL vmlinux 0x4d83b295 sg_pcopy_to_buffer +EXPORT_SYMBOL vmlinux 0x4d974b9c register_sysrq_key +EXPORT_SYMBOL vmlinux 0x4d9b652b rb_erase +EXPORT_SYMBOL vmlinux 0x4db7bfdb neigh_proc_dointvec +EXPORT_SYMBOL vmlinux 0x4dd381f0 __devm_gpiod_get_optional +EXPORT_SYMBOL vmlinux 0x4ddd9f93 nobh_write_begin +EXPORT_SYMBOL vmlinux 0x4de34a07 cpu_rmap_put +EXPORT_SYMBOL vmlinux 0x4de72fed kmap_atomic_prot +EXPORT_SYMBOL vmlinux 0x4dec6038 memscan +EXPORT_SYMBOL vmlinux 0x4df119fa __bitmap_parse +EXPORT_SYMBOL vmlinux 0x4df6cea4 phy_ethtool_get_wol +EXPORT_SYMBOL vmlinux 0x4e184afa end_buffer_async_write +EXPORT_SYMBOL vmlinux 0x4e28bc64 __frontswap_store +EXPORT_SYMBOL vmlinux 0x4e3567f7 match_int +EXPORT_SYMBOL vmlinux 0x4e3cd253 of_find_node_by_name +EXPORT_SYMBOL vmlinux 0x4e3e9bc7 xfrm_prepare_input +EXPORT_SYMBOL vmlinux 0x4e68e9be rb_next_postorder +EXPORT_SYMBOL vmlinux 0x4e6e8ea7 fg_console +EXPORT_SYMBOL vmlinux 0x4e7cba44 netdev_err +EXPORT_SYMBOL vmlinux 0x4e8368f5 inet_add_offload +EXPORT_SYMBOL vmlinux 0x4e93caff inet_stream_connect +EXPORT_SYMBOL vmlinux 0x4e9dffb5 ip_fast_csum +EXPORT_SYMBOL vmlinux 0x4ea98745 tcp_enter_memory_pressure +EXPORT_SYMBOL vmlinux 0x4eb97980 rfkill_alloc +EXPORT_SYMBOL vmlinux 0x4ebcb548 nf_register_hook +EXPORT_SYMBOL vmlinux 0x4ec2ab63 rps_may_expire_flow +EXPORT_SYMBOL vmlinux 0x4ef9b329 tcp_md5_do_lookup +EXPORT_SYMBOL vmlinux 0x4f0de504 mmc_start_req +EXPORT_SYMBOL vmlinux 0x4f13c048 vlan_vid_add +EXPORT_SYMBOL vmlinux 0x4f1cd128 security_tun_dev_create +EXPORT_SYMBOL vmlinux 0x4f2250ba rtc_tm_to_time64 +EXPORT_SYMBOL vmlinux 0x4f391d0e nla_parse +EXPORT_SYMBOL vmlinux 0x4f5524ee bio_clone_bioset +EXPORT_SYMBOL vmlinux 0x4f5d66e7 kiocb_set_cancel_fn +EXPORT_SYMBOL vmlinux 0x4f68e5c9 do_gettimeofday +EXPORT_SYMBOL vmlinux 0x4f71dea3 input_unregister_handle +EXPORT_SYMBOL vmlinux 0x4fa4e055 register_console +EXPORT_SYMBOL vmlinux 0x4fbd9aa4 agp_generic_destroy_pages +EXPORT_SYMBOL vmlinux 0x4fc99fe5 scsi_host_get +EXPORT_SYMBOL vmlinux 0x4fcae572 keyring_search +EXPORT_SYMBOL vmlinux 0x4fd30662 put_cmsg +EXPORT_SYMBOL vmlinux 0x4fdee897 i8042_command +EXPORT_SYMBOL vmlinux 0x4fe99583 atomic64_dec_if_positive +EXPORT_SYMBOL vmlinux 0x4ffb3d1f of_get_named_gpio_flags +EXPORT_SYMBOL vmlinux 0x50097088 security_tun_dev_free_security +EXPORT_SYMBOL vmlinux 0x500d13d7 read_cache_page +EXPORT_SYMBOL vmlinux 0x500e6cf4 phy_start_aneg +EXPORT_SYMBOL vmlinux 0x50201fb9 inc_nlink +EXPORT_SYMBOL vmlinux 0x5023b7f9 inet_dgram_ops +EXPORT_SYMBOL vmlinux 0x5051a800 kobject_init +EXPORT_SYMBOL vmlinux 0x5063df40 __posix_acl_create +EXPORT_SYMBOL vmlinux 0x50650404 pcibios_fixup_bus +EXPORT_SYMBOL vmlinux 0x507e2611 security_path_link +EXPORT_SYMBOL vmlinux 0x50855aab wireless_send_event +EXPORT_SYMBOL vmlinux 0x509817cf vprintk_emit +EXPORT_SYMBOL vmlinux 0x50b02950 inode_permission +EXPORT_SYMBOL vmlinux 0x50b66bcb radix_tree_next_chunk +EXPORT_SYMBOL vmlinux 0x50c68677 bh_uptodate_or_lock +EXPORT_SYMBOL vmlinux 0x50ded37c __posix_acl_chmod +EXPORT_SYMBOL vmlinux 0x50e7eca1 add_to_page_cache_locked +EXPORT_SYMBOL vmlinux 0x5103a4e4 dev_uc_init +EXPORT_SYMBOL vmlinux 0x5107b7ae copy_page_to_iter +EXPORT_SYMBOL vmlinux 0x5118c382 secure_dccp_sequence_number +EXPORT_SYMBOL vmlinux 0x513055bd neigh_seq_stop +EXPORT_SYMBOL vmlinux 0x514a6a1c uart_unregister_driver +EXPORT_SYMBOL vmlinux 0x515c9c90 xfrm_init_state +EXPORT_SYMBOL vmlinux 0x515e24a7 flush_instruction_cache +EXPORT_SYMBOL vmlinux 0x518e3d07 current_fs_time +EXPORT_SYMBOL vmlinux 0x519b0da3 finish_wait +EXPORT_SYMBOL vmlinux 0x51a59b44 sock_release +EXPORT_SYMBOL vmlinux 0x51a623f9 __scsi_print_sense +EXPORT_SYMBOL vmlinux 0x51b416bb register_netdev +EXPORT_SYMBOL vmlinux 0x51bf8343 mpage_readpage +EXPORT_SYMBOL vmlinux 0x51c0b8a2 __brelse +EXPORT_SYMBOL vmlinux 0x51c27119 bdget +EXPORT_SYMBOL vmlinux 0x51ef33b8 kstrndup +EXPORT_SYMBOL vmlinux 0x52026cdf security_sb_parse_opts_str +EXPORT_SYMBOL vmlinux 0x52072514 find_vma +EXPORT_SYMBOL vmlinux 0x5217bac0 devfreq_remove_device +EXPORT_SYMBOL vmlinux 0x521b36b5 qdisc_put_rtab +EXPORT_SYMBOL vmlinux 0x521bd69a nobh_write_end +EXPORT_SYMBOL vmlinux 0x5237be7f get_thermal_instance +EXPORT_SYMBOL vmlinux 0x52428cc8 parent_mem_cgroup +EXPORT_SYMBOL vmlinux 0x527830ff pmac_xpram_read +EXPORT_SYMBOL vmlinux 0x528c709d simple_read_from_buffer +EXPORT_SYMBOL vmlinux 0x52972ac4 napi_disable +EXPORT_SYMBOL vmlinux 0x5298f86f security_inode_setsecctx +EXPORT_SYMBOL vmlinux 0x52af562a __crc32c_le +EXPORT_SYMBOL vmlinux 0x52f66048 mb_cache_entry_free +EXPORT_SYMBOL vmlinux 0x530b1e98 pm_suspend +EXPORT_SYMBOL vmlinux 0x5319f5ce __task_pid_nr_ns +EXPORT_SYMBOL vmlinux 0x5320b65b tcp_sync_mss +EXPORT_SYMBOL vmlinux 0x532b9d1c kernel_sendpage +EXPORT_SYMBOL vmlinux 0x53326531 mempool_alloc_pages +EXPORT_SYMBOL vmlinux 0x53326872 inet_rtx_syn_ack +EXPORT_SYMBOL vmlinux 0x533902fd inet_csk_reqsk_queue_drop +EXPORT_SYMBOL vmlinux 0x535c8308 vme_dma_pattern_attribute +EXPORT_SYMBOL vmlinux 0x5366a6fb module_put +EXPORT_SYMBOL vmlinux 0x536d95de pci_enable_msi_range +EXPORT_SYMBOL vmlinux 0x53717cab cdrom_mode_select +EXPORT_SYMBOL vmlinux 0x537ce595 elevator_change +EXPORT_SYMBOL vmlinux 0x53ac4cc6 dev_mc_sync_multiple +EXPORT_SYMBOL vmlinux 0x53cb1225 nf_log_trace +EXPORT_SYMBOL vmlinux 0x53d32345 fsl_lbc_ctrl_dev +EXPORT_SYMBOL vmlinux 0x53d7f327 ps2_handle_response +EXPORT_SYMBOL vmlinux 0x53ebab1b _outsl_ns +EXPORT_SYMBOL vmlinux 0x53f0f739 bfifo_qdisc_ops +EXPORT_SYMBOL vmlinux 0x53f4be19 skb_unlink +EXPORT_SYMBOL vmlinux 0x5409775b free_irq_cpu_rmap +EXPORT_SYMBOL vmlinux 0x5412c7c7 up +EXPORT_SYMBOL vmlinux 0x542233b0 ps2_init +EXPORT_SYMBOL vmlinux 0x5423db60 __ethtool_get_settings +EXPORT_SYMBOL vmlinux 0x543ef284 seq_hlist_start +EXPORT_SYMBOL vmlinux 0x54705e10 security_file_permission +EXPORT_SYMBOL vmlinux 0x54737904 blk_post_runtime_suspend +EXPORT_SYMBOL vmlinux 0x5485f8ef da903x_query_status +EXPORT_SYMBOL vmlinux 0x54a9db5f _kstrtoul +EXPORT_SYMBOL vmlinux 0x54abdca2 mipi_dsi_attach +EXPORT_SYMBOL vmlinux 0x54bc5655 bio_init +EXPORT_SYMBOL vmlinux 0x54c256e0 vme_check_window +EXPORT_SYMBOL vmlinux 0x54cff5b4 xfrm4_protocol_deregister +EXPORT_SYMBOL vmlinux 0x54e6fcdd net_enable_timestamp +EXPORT_SYMBOL vmlinux 0x55003925 ipv6_select_ident +EXPORT_SYMBOL vmlinux 0x551bd071 __rb_erase_color +EXPORT_SYMBOL vmlinux 0x5533d5ec sock_setsockopt +EXPORT_SYMBOL vmlinux 0x5541ea93 on_each_cpu +EXPORT_SYMBOL vmlinux 0x55467ede fsl_upm_find +EXPORT_SYMBOL vmlinux 0x554f153e xfrm_state_delete_tunnel +EXPORT_SYMBOL vmlinux 0x555ef938 ilookup5 +EXPORT_SYMBOL vmlinux 0x5567c227 kernel_cpustat +EXPORT_SYMBOL vmlinux 0x5568c553 complete +EXPORT_SYMBOL vmlinux 0x556af895 proc_create_data +EXPORT_SYMBOL vmlinux 0x556d08ba blkdev_issue_discard +EXPORT_SYMBOL vmlinux 0x5577ef9e udp_table +EXPORT_SYMBOL vmlinux 0x557ab09a skb_vlan_push +EXPORT_SYMBOL vmlinux 0x55993c13 i2c_del_driver +EXPORT_SYMBOL vmlinux 0x55bd7f99 tty_unthrottle +EXPORT_SYMBOL vmlinux 0x55d481c9 hdmi_infoframe_unpack +EXPORT_SYMBOL vmlinux 0x55db10f1 phy_register_fixup_for_uid +EXPORT_SYMBOL vmlinux 0x55fe33b9 inet_release +EXPORT_SYMBOL vmlinux 0x560aa8e2 pci_bus_read_config_byte +EXPORT_SYMBOL vmlinux 0x561b8fd7 kunmap_high +EXPORT_SYMBOL vmlinux 0x5628475c tty_check_change +EXPORT_SYMBOL vmlinux 0x562a7ea8 jbd2_journal_flush +EXPORT_SYMBOL vmlinux 0x562ba15f nf_setsockopt +EXPORT_SYMBOL vmlinux 0x563375b4 follow_pfn +EXPORT_SYMBOL vmlinux 0x5635a60a vmalloc_user +EXPORT_SYMBOL vmlinux 0x563952a3 kblockd_schedule_work +EXPORT_SYMBOL vmlinux 0x564bf867 ip_options_rcv_srr +EXPORT_SYMBOL vmlinux 0x565910de sock_common_setsockopt +EXPORT_SYMBOL vmlinux 0x56976134 blk_mq_end_request +EXPORT_SYMBOL vmlinux 0x569a9137 param_ops_int +EXPORT_SYMBOL vmlinux 0x56a10763 csum_tcpudp_magic +EXPORT_SYMBOL vmlinux 0x56a2ed61 tcp_check_req +EXPORT_SYMBOL vmlinux 0x56ac7742 blk_queue_make_request +EXPORT_SYMBOL vmlinux 0x56ade913 lock_fb_info +EXPORT_SYMBOL vmlinux 0x56c2b95b rtas_progress +EXPORT_SYMBOL vmlinux 0x56c8799d scsi_kunmap_atomic_sg +EXPORT_SYMBOL vmlinux 0x56dac040 inet_stream_ops +EXPORT_SYMBOL vmlinux 0x56fb92da of_graph_get_port_by_id +EXPORT_SYMBOL vmlinux 0x56fe4d12 macio_request_resources +EXPORT_SYMBOL vmlinux 0x572e85d4 blk_lookup_devt +EXPORT_SYMBOL vmlinux 0x573d7db3 inet_csk_prepare_forced_close +EXPORT_SYMBOL vmlinux 0x574c2e74 bitmap_release_region +EXPORT_SYMBOL vmlinux 0x574cfe71 rc5t583_ext_power_req_config +EXPORT_SYMBOL vmlinux 0x57545a50 inet6_bind +EXPORT_SYMBOL vmlinux 0x5754a64f kernel_param_unlock +EXPORT_SYMBOL vmlinux 0x57575f08 dmaengine_put +EXPORT_SYMBOL vmlinux 0x575dabee f_setown +EXPORT_SYMBOL vmlinux 0x57674fd7 __sw_hweight16 +EXPORT_SYMBOL vmlinux 0x577984b0 kobject_add +EXPORT_SYMBOL vmlinux 0x577ef86d register_key_type +EXPORT_SYMBOL vmlinux 0x57a4be35 clear_nlink +EXPORT_SYMBOL vmlinux 0x57b3ac55 mmc_power_save_host +EXPORT_SYMBOL vmlinux 0x57c42b0f led_blink_set +EXPORT_SYMBOL vmlinux 0x57c911a2 mntput +EXPORT_SYMBOL vmlinux 0x57ceee3c phy_resume +EXPORT_SYMBOL vmlinux 0x57d9060e abx500_register_ops +EXPORT_SYMBOL vmlinux 0x57eccef5 generic_cont_expand_simple +EXPORT_SYMBOL vmlinux 0x57f40a86 tcp_sendmsg +EXPORT_SYMBOL vmlinux 0x57f91c74 rwsem_downgrade_wake +EXPORT_SYMBOL vmlinux 0x581f98da zlib_inflate +EXPORT_SYMBOL vmlinux 0x5825f588 md_reap_sync_thread +EXPORT_SYMBOL vmlinux 0x582d1fe0 copy_from_iter +EXPORT_SYMBOL vmlinux 0x58323218 bh_submit_read +EXPORT_SYMBOL vmlinux 0x5838f6c9 rtc_valid_tm +EXPORT_SYMBOL vmlinux 0x583ebb55 dquot_quotactl_ops +EXPORT_SYMBOL vmlinux 0x5851a285 skb_append +EXPORT_SYMBOL vmlinux 0x5857b225 ioread16_rep +EXPORT_SYMBOL vmlinux 0x58623807 proc_dointvec_minmax +EXPORT_SYMBOL vmlinux 0x587616f1 vfs_fstatat +EXPORT_SYMBOL vmlinux 0x587a2533 get_io_context +EXPORT_SYMBOL vmlinux 0x589d71fb agp_enable +EXPORT_SYMBOL vmlinux 0x58a6d6e1 ps2_command +EXPORT_SYMBOL vmlinux 0x58b56e37 phy_attach +EXPORT_SYMBOL vmlinux 0x58b73bc7 match_wildcard +EXPORT_SYMBOL vmlinux 0x58cc8fe0 ip_mc_check_igmp +EXPORT_SYMBOL vmlinux 0x58e62b4e save_mount_options +EXPORT_SYMBOL vmlinux 0x58f1733b input_mt_report_finger_count +EXPORT_SYMBOL vmlinux 0x59058327 dev_mc_add_excl +EXPORT_SYMBOL vmlinux 0x591241d0 register_sysctl_table +EXPORT_SYMBOL vmlinux 0x591597ad netif_skb_features +EXPORT_SYMBOL vmlinux 0x594903b0 scsi_ioctl_reset +EXPORT_SYMBOL vmlinux 0x594bf15b ioport_map +EXPORT_SYMBOL vmlinux 0x595502bb xfrm_state_insert +EXPORT_SYMBOL vmlinux 0x595c73dd blk_make_request +EXPORT_SYMBOL vmlinux 0x595d0946 empty_zero_page +EXPORT_SYMBOL vmlinux 0x595dd567 vlan_vid_del +EXPORT_SYMBOL vmlinux 0x598e4904 mod_timer_pending +EXPORT_SYMBOL vmlinux 0x599a8613 of_phy_find_device +EXPORT_SYMBOL vmlinux 0x599f7174 dst_discard_sk +EXPORT_SYMBOL vmlinux 0x59aa14cf fence_release +EXPORT_SYMBOL vmlinux 0x59b3378a completion_done +EXPORT_SYMBOL vmlinux 0x59d41cc7 xfrm_register_type +EXPORT_SYMBOL vmlinux 0x59d8223a ioport_resource +EXPORT_SYMBOL vmlinux 0x59df6ccf blk_put_request +EXPORT_SYMBOL vmlinux 0x59f50485 netlink_rcv_skb +EXPORT_SYMBOL vmlinux 0x59f6db4f i2c_get_adapter +EXPORT_SYMBOL vmlinux 0x59f7b4be of_mdiobus_register +EXPORT_SYMBOL vmlinux 0x5a0b73d0 zlib_deflateInit2 +EXPORT_SYMBOL vmlinux 0x5a256df4 abx500_remove_ops +EXPORT_SYMBOL vmlinux 0x5a49a3a9 km_policy_notify +EXPORT_SYMBOL vmlinux 0x5a7b54f8 pci_get_device +EXPORT_SYMBOL vmlinux 0x5ab3a543 skb_dequeue +EXPORT_SYMBOL vmlinux 0x5ab49331 pcie_get_minimum_link +EXPORT_SYMBOL vmlinux 0x5af3078f pci_set_master +EXPORT_SYMBOL vmlinux 0x5afdd6ab clocksource_change_rating +EXPORT_SYMBOL vmlinux 0x5aff4177 vme_lm_get +EXPORT_SYMBOL vmlinux 0x5b0929c3 cpufreq_get_policy +EXPORT_SYMBOL vmlinux 0x5b19634d div_s64_rem +EXPORT_SYMBOL vmlinux 0x5b1a5999 dquot_enable +EXPORT_SYMBOL vmlinux 0x5b1c1ca7 get_empty_filp +EXPORT_SYMBOL vmlinux 0x5b3b1ca8 pagevec_lookup_tag +EXPORT_SYMBOL vmlinux 0x5b43f1f1 rtas_service_present +EXPORT_SYMBOL vmlinux 0x5b4b75dd rtnl_unicast +EXPORT_SYMBOL vmlinux 0x5b7eefb1 pci_request_region +EXPORT_SYMBOL vmlinux 0x5b892798 scsi_register_interface +EXPORT_SYMBOL vmlinux 0x5b97c162 xfrm_register_km +EXPORT_SYMBOL vmlinux 0x5b9828c5 dma_spin_lock +EXPORT_SYMBOL vmlinux 0x5ba4402a tcf_exts_dump +EXPORT_SYMBOL vmlinux 0x5bb1a76a scsi_remove_device +EXPORT_SYMBOL vmlinux 0x5bb9daec __sg_page_iter_start +EXPORT_SYMBOL vmlinux 0x5bcdaf42 truncate_inode_pages_final +EXPORT_SYMBOL vmlinux 0x5bd16f1a I_BDEV +EXPORT_SYMBOL vmlinux 0x5bde3efc tty_port_carrier_raised +EXPORT_SYMBOL vmlinux 0x5bdf040f bdput +EXPORT_SYMBOL vmlinux 0x5bdf2ae8 vm_insert_page +EXPORT_SYMBOL vmlinux 0x5be09a2f sock_update_memcg +EXPORT_SYMBOL vmlinux 0x5bf15955 cdrom_media_changed +EXPORT_SYMBOL vmlinux 0x5bf318d9 locks_free_lock +EXPORT_SYMBOL vmlinux 0x5c00d55c filp_close +EXPORT_SYMBOL vmlinux 0x5c265cba sg_init_one +EXPORT_SYMBOL vmlinux 0x5c2743ba pci_pme_active +EXPORT_SYMBOL vmlinux 0x5c37f319 _raw_spin_unlock_irqrestore +EXPORT_SYMBOL vmlinux 0x5c5b71d1 devfreq_add_governor +EXPORT_SYMBOL vmlinux 0x5c7604c3 sock_no_ioctl +EXPORT_SYMBOL vmlinux 0x5c836d20 simple_transaction_release +EXPORT_SYMBOL vmlinux 0x5c8d7181 tcp_recvmsg +EXPORT_SYMBOL vmlinux 0x5cb29007 bio_flush_dcache_pages +EXPORT_SYMBOL vmlinux 0x5cc32bdc bitmap_copy_le +EXPORT_SYMBOL vmlinux 0x5ccb6bba swiotlb_dma_supported +EXPORT_SYMBOL vmlinux 0x5ce343b8 blk_queue_invalidate_tags +EXPORT_SYMBOL vmlinux 0x5cebaaf6 pci_request_region_exclusive +EXPORT_SYMBOL vmlinux 0x5cf53ce2 input_free_minor +EXPORT_SYMBOL vmlinux 0x5cfe72f7 __skb_warn_lro_forwarding +EXPORT_SYMBOL vmlinux 0x5d17b8b4 vlan_dev_real_dev +EXPORT_SYMBOL vmlinux 0x5d18bd48 param_get_byte +EXPORT_SYMBOL vmlinux 0x5d248b71 pci_select_bars +EXPORT_SYMBOL vmlinux 0x5d351501 tcp_md5_hash_skb_data +EXPORT_SYMBOL vmlinux 0x5d4d1334 seq_release +EXPORT_SYMBOL vmlinux 0x5d550c4d scsi_sd_probe_domain +EXPORT_SYMBOL vmlinux 0x5d571726 nf_unregister_hooks +EXPORT_SYMBOL vmlinux 0x5d5e15b5 __blk_end_request +EXPORT_SYMBOL vmlinux 0x5d866485 gen_pool_dma_alloc +EXPORT_SYMBOL vmlinux 0x5d9feda4 ip6_find_1stfragopt +EXPORT_SYMBOL vmlinux 0x5db8d00e of_get_child_by_name +EXPORT_SYMBOL vmlinux 0x5e020fbe block_is_partially_uptodate +EXPORT_SYMBOL vmlinux 0x5e27321b register_sysctl_paths +EXPORT_SYMBOL vmlinux 0x5e2d5b65 fb_pan_display +EXPORT_SYMBOL vmlinux 0x5e39c0d5 __get_user_pages +EXPORT_SYMBOL vmlinux 0x5e3a8a9c __wake_up +EXPORT_SYMBOL vmlinux 0x5e3bd200 simple_write_end +EXPORT_SYMBOL vmlinux 0x5e58e138 cdrom_number_of_slots +EXPORT_SYMBOL vmlinux 0x5e5c0f8a make_kuid +EXPORT_SYMBOL vmlinux 0x5e6aabc6 input_set_keycode +EXPORT_SYMBOL vmlinux 0x5e7e42db of_find_node_opts_by_path +EXPORT_SYMBOL vmlinux 0x5e866d85 prandom_bytes +EXPORT_SYMBOL vmlinux 0x5e95b1cd current_umask +EXPORT_SYMBOL vmlinux 0x5ea54edb blk_integrity_merge_rq +EXPORT_SYMBOL vmlinux 0x5eb0401e proc_dostring +EXPORT_SYMBOL vmlinux 0x5eb24829 dm_shift_arg +EXPORT_SYMBOL vmlinux 0x5ec50fb1 sg_nents_for_len +EXPORT_SYMBOL vmlinux 0x5ed040b0 pm_set_vt_switch +EXPORT_SYMBOL vmlinux 0x5ee917d5 inc_zone_page_state +EXPORT_SYMBOL vmlinux 0x5efeead4 inode_get_bytes +EXPORT_SYMBOL vmlinux 0x5eff9c46 skb_coalesce_rx_frag +EXPORT_SYMBOL vmlinux 0x5f005368 kstrtou8 +EXPORT_SYMBOL vmlinux 0x5f02351e netdev_lower_dev_get_private +EXPORT_SYMBOL vmlinux 0x5f094122 devm_ioremap_nocache +EXPORT_SYMBOL vmlinux 0x5f098b2a in6addr_interfacelocal_allrouters +EXPORT_SYMBOL vmlinux 0x5f141320 sk_stop_timer +EXPORT_SYMBOL vmlinux 0x5f39e815 ps2_begin_command +EXPORT_SYMBOL vmlinux 0x5f3bfd6f __module_put_and_exit +EXPORT_SYMBOL vmlinux 0x5f5b3a63 tcp_get_md5sig_pool +EXPORT_SYMBOL vmlinux 0x5f754e5a memset +EXPORT_SYMBOL vmlinux 0x5f8a2728 isa_io_base +EXPORT_SYMBOL vmlinux 0x5fa4d801 sock_no_mmap +EXPORT_SYMBOL vmlinux 0x5fa99b77 mark_info_dirty +EXPORT_SYMBOL vmlinux 0x5fb85e0d neigh_lookup +EXPORT_SYMBOL vmlinux 0x5fc6f934 __blk_run_queue +EXPORT_SYMBOL vmlinux 0x5fd268cb radix_tree_gang_lookup +EXPORT_SYMBOL vmlinux 0x5fda0227 vfs_stat +EXPORT_SYMBOL vmlinux 0x5fe37734 bio_alloc_bioset +EXPORT_SYMBOL vmlinux 0x5fe5589f register_shrinker +EXPORT_SYMBOL vmlinux 0x5ff16f4a bio_add_pc_page +EXPORT_SYMBOL vmlinux 0x5ffb0bd3 uart_suspend_port +EXPORT_SYMBOL vmlinux 0x600683d3 do_unblank_screen +EXPORT_SYMBOL vmlinux 0x600b6173 mmc_wait_for_app_cmd +EXPORT_SYMBOL vmlinux 0x60103aaa fb_validate_mode +EXPORT_SYMBOL vmlinux 0x601f665f dm_io_client_create +EXPORT_SYMBOL vmlinux 0x602701e6 skb_copy_datagram_iter +EXPORT_SYMBOL vmlinux 0x60352082 register_inet6addr_notifier +EXPORT_SYMBOL vmlinux 0x60373389 init_task +EXPORT_SYMBOL vmlinux 0x604251bd tty_port_raise_dtr_rts +EXPORT_SYMBOL vmlinux 0x6046283f vm_iomap_memory +EXPORT_SYMBOL vmlinux 0x606d0b09 secure_tcpv6_sequence_number +EXPORT_SYMBOL vmlinux 0x6073732c cur_cpu_spec +EXPORT_SYMBOL vmlinux 0x6091644e flow_keys_dissector +EXPORT_SYMBOL vmlinux 0x609e2ed2 bd_set_size +EXPORT_SYMBOL vmlinux 0x609f1c7e synchronize_net +EXPORT_SYMBOL vmlinux 0x60df1e3b posix_acl_equiv_mode +EXPORT_SYMBOL vmlinux 0x60eadee4 blk_end_request_cur +EXPORT_SYMBOL vmlinux 0x60fcd269 freeze_super +EXPORT_SYMBOL vmlinux 0x6128b5fc __printk_ratelimit +EXPORT_SYMBOL vmlinux 0x613f4190 sockfd_lookup +EXPORT_SYMBOL vmlinux 0x615bde1c fd_install +EXPORT_SYMBOL vmlinux 0x616abc5d __cleancache_init_fs +EXPORT_SYMBOL vmlinux 0x616b825d dql_init +EXPORT_SYMBOL vmlinux 0x61ade252 _dev_info +EXPORT_SYMBOL vmlinux 0x61b3560c cmdline_parts_set +EXPORT_SYMBOL vmlinux 0x61b7b126 simple_strtoull +EXPORT_SYMBOL vmlinux 0x61eef2c9 _insb +EXPORT_SYMBOL vmlinux 0x61f1eae3 __cleancache_invalidate_fs +EXPORT_SYMBOL vmlinux 0x61fe5cd5 nf_getsockopt +EXPORT_SYMBOL vmlinux 0x620b3a22 vfs_writef +EXPORT_SYMBOL vmlinux 0x6214aef2 cpufreq_unregister_notifier +EXPORT_SYMBOL vmlinux 0x6216a7dc netdev_crit +EXPORT_SYMBOL vmlinux 0x6220b4a2 crc32_le +EXPORT_SYMBOL vmlinux 0x6225637e md5_transform +EXPORT_SYMBOL vmlinux 0x6228c21f smp_call_function_single +EXPORT_SYMBOL vmlinux 0x623d7182 _chrp_type +EXPORT_SYMBOL vmlinux 0x624b75ab key_put +EXPORT_SYMBOL vmlinux 0x62538167 slhc_toss +EXPORT_SYMBOL vmlinux 0x626cc50f dquot_reclaim_space_nodirty +EXPORT_SYMBOL vmlinux 0x62737e1d sock_unregister +EXPORT_SYMBOL vmlinux 0x627cb4aa block_write_begin +EXPORT_SYMBOL vmlinux 0x62827bec security_secctx_to_secid +EXPORT_SYMBOL vmlinux 0x628332e8 pmu_power_flags +EXPORT_SYMBOL vmlinux 0x62849ac7 dev_valid_name +EXPORT_SYMBOL vmlinux 0x628fe019 netlink_unicast +EXPORT_SYMBOL vmlinux 0x629a6a92 tty_port_alloc_xmit_buf +EXPORT_SYMBOL vmlinux 0x62a1eb45 blk_queue_logical_block_size +EXPORT_SYMBOL vmlinux 0x62cd00da genphy_soft_reset +EXPORT_SYMBOL vmlinux 0x62cd1c65 account_page_dirtied +EXPORT_SYMBOL vmlinux 0x62d5c7a7 phy_drivers_register +EXPORT_SYMBOL vmlinux 0x62e90a74 generic_end_io_acct +EXPORT_SYMBOL vmlinux 0x62ef9321 sk_stream_wait_connect +EXPORT_SYMBOL vmlinux 0x62f84786 input_grab_device +EXPORT_SYMBOL vmlinux 0x63187451 pcie_aspm_support_enabled +EXPORT_SYMBOL vmlinux 0x63231951 gen_pool_create +EXPORT_SYMBOL vmlinux 0x6343b0fc jbd2_journal_file_inode +EXPORT_SYMBOL vmlinux 0x6381c383 lockref_get_not_zero +EXPORT_SYMBOL vmlinux 0x63a7c28c bitmap_find_free_region +EXPORT_SYMBOL vmlinux 0x63c4d61f __bitmap_weight +EXPORT_SYMBOL vmlinux 0x63eb9355 panic_blink +EXPORT_SYMBOL vmlinux 0x63ef9a31 mpage_writepages +EXPORT_SYMBOL vmlinux 0x63fc232f strlen_user +EXPORT_SYMBOL vmlinux 0x6403e338 tcp_memory_pressure +EXPORT_SYMBOL vmlinux 0x640a88fe dev_get_by_index_rcu +EXPORT_SYMBOL vmlinux 0x640d85d4 kernel_recvmsg +EXPORT_SYMBOL vmlinux 0x64127b67 bitmap_find_next_zero_area_off +EXPORT_SYMBOL vmlinux 0x642345a2 lookup_bdev +EXPORT_SYMBOL vmlinux 0x642a3cdd swiotlb_alloc_coherent +EXPORT_SYMBOL vmlinux 0x64359b53 seq_put_decimal_ll +EXPORT_SYMBOL vmlinux 0x64565307 lockref_get_not_dead +EXPORT_SYMBOL vmlinux 0x645de7c9 remove_proc_entry +EXPORT_SYMBOL vmlinux 0x645f5340 vfs_write +EXPORT_SYMBOL vmlinux 0x64670d98 key_alloc +EXPORT_SYMBOL vmlinux 0x646cc6ab pmu_poll +EXPORT_SYMBOL vmlinux 0x648d97a4 udp_prot +EXPORT_SYMBOL vmlinux 0x64999478 congestion_wait +EXPORT_SYMBOL vmlinux 0x649a81ab ata_dev_printk +EXPORT_SYMBOL vmlinux 0x64a39508 param_ops_charp +EXPORT_SYMBOL vmlinux 0x64bd4cbc request_key +EXPORT_SYMBOL vmlinux 0x64be27d1 tty_unregister_device +EXPORT_SYMBOL vmlinux 0x64d97438 vme_bus_type +EXPORT_SYMBOL vmlinux 0x64e410b9 release_pages +EXPORT_SYMBOL vmlinux 0x6513a3fa fb_get_color_depth +EXPORT_SYMBOL vmlinux 0x651a4139 test_taint +EXPORT_SYMBOL vmlinux 0x65400222 __irq_offset_value +EXPORT_SYMBOL vmlinux 0x65408378 zlib_inflate_blob +EXPORT_SYMBOL vmlinux 0x65496e39 mount_single +EXPORT_SYMBOL vmlinux 0x654c5eb0 of_find_compatible_node +EXPORT_SYMBOL vmlinux 0x654ed286 input_register_device +EXPORT_SYMBOL vmlinux 0x656888ec blkdev_get_by_dev +EXPORT_SYMBOL vmlinux 0x656efef6 skb_queue_head +EXPORT_SYMBOL vmlinux 0x657650db pm860x_page_bulk_read +EXPORT_SYMBOL vmlinux 0x6578dbca vga_get +EXPORT_SYMBOL vmlinux 0x658992a8 eth_header +EXPORT_SYMBOL vmlinux 0x65bb58a2 _raw_read_trylock +EXPORT_SYMBOL vmlinux 0x65d9e877 cpufreq_register_notifier +EXPORT_SYMBOL vmlinux 0x65dccf13 xz_dec_end +EXPORT_SYMBOL vmlinux 0x65e27997 ihold +EXPORT_SYMBOL vmlinux 0x65f3ad9a fb_videomode_to_var +EXPORT_SYMBOL vmlinux 0x6604dfd2 pci_bus_assign_resources +EXPORT_SYMBOL vmlinux 0x66227eae vme_alloc_consistent +EXPORT_SYMBOL vmlinux 0x662effe5 writeback_inodes_sb +EXPORT_SYMBOL vmlinux 0x6637a161 mnt_drop_write_file +EXPORT_SYMBOL vmlinux 0x66456dc3 swiotlb_dma_mapping_error +EXPORT_SYMBOL vmlinux 0x664a4d6b vme_dma_list_exec +EXPORT_SYMBOL vmlinux 0x666e0acc pci_save_state +EXPORT_SYMBOL vmlinux 0x6679182b make_kgid +EXPORT_SYMBOL vmlinux 0x6684ebb4 __xfrm_route_forward +EXPORT_SYMBOL vmlinux 0x66923a40 tcp_splice_read +EXPORT_SYMBOL vmlinux 0x669715ac param_ops_byte +EXPORT_SYMBOL vmlinux 0x66a9a73e devfreq_recommended_opp +EXPORT_SYMBOL vmlinux 0x66cbf14b pmac_xpram_write +EXPORT_SYMBOL vmlinux 0x66d00e0b inet_csk_delete_keepalive_timer +EXPORT_SYMBOL vmlinux 0x66d8b86d kfree_put_link +EXPORT_SYMBOL vmlinux 0x66f85dce put_page +EXPORT_SYMBOL vmlinux 0x6709f135 __register_binfmt +EXPORT_SYMBOL vmlinux 0x671d81ea kthread_stop +EXPORT_SYMBOL vmlinux 0x67349857 pneigh_enqueue +EXPORT_SYMBOL vmlinux 0x673f815e agp_bridges +EXPORT_SYMBOL vmlinux 0x675246c2 __skb_checksum +EXPORT_SYMBOL vmlinux 0x67546951 dentry_unhash +EXPORT_SYMBOL vmlinux 0x6754c2e6 __seq_open_private +EXPORT_SYMBOL vmlinux 0x6760f828 dev_addr_flush +EXPORT_SYMBOL vmlinux 0x6764bdf4 csum_and_copy_from_iter +EXPORT_SYMBOL vmlinux 0x6770c7aa from_kgid_munged +EXPORT_SYMBOL vmlinux 0x67733cf4 mb_cache_create +EXPORT_SYMBOL vmlinux 0x67aea873 agp_generic_mask_memory +EXPORT_SYMBOL vmlinux 0x67b78eb3 seq_hlist_next_rcu +EXPORT_SYMBOL vmlinux 0x67bec35f qdisc_list_del +EXPORT_SYMBOL vmlinux 0x67c33926 input_handler_for_each_handle +EXPORT_SYMBOL vmlinux 0x67e6a3c8 mdiobus_unregister +EXPORT_SYMBOL vmlinux 0x6802f813 msi_bitmap_free_hwirqs +EXPORT_SYMBOL vmlinux 0x6807253e locks_copy_lock +EXPORT_SYMBOL vmlinux 0x6808b453 __unregister_cpu_notifier +EXPORT_SYMBOL vmlinux 0x6809b1eb get_tz_trend +EXPORT_SYMBOL vmlinux 0x68609857 complete_and_exit +EXPORT_SYMBOL vmlinux 0x68693a3e crypto_sha256_update +EXPORT_SYMBOL vmlinux 0x686bc810 xfrm_lookup +EXPORT_SYMBOL vmlinux 0x68776d64 dev_add_pack +EXPORT_SYMBOL vmlinux 0x687b6a16 kdbgetsymval +EXPORT_SYMBOL vmlinux 0x689442fb invalidate_bdev +EXPORT_SYMBOL vmlinux 0x68a6b01e scsi_eh_finish_cmd +EXPORT_SYMBOL vmlinux 0x68b83ac6 posix_acl_alloc +EXPORT_SYMBOL vmlinux 0x68d5e426 __dynamic_netdev_dbg +EXPORT_SYMBOL vmlinux 0x68dd7629 tty_hangup +EXPORT_SYMBOL vmlinux 0x69084ef4 address_space_init_once +EXPORT_SYMBOL vmlinux 0x6929b68b d_move +EXPORT_SYMBOL vmlinux 0x6953c6ad __cleancache_put_page +EXPORT_SYMBOL vmlinux 0x6971447a rtc_month_days +EXPORT_SYMBOL vmlinux 0x69a0ca7d iowrite16be +EXPORT_SYMBOL vmlinux 0x69ad2f20 kstrtouint +EXPORT_SYMBOL vmlinux 0x69d42f10 sock_recv_errqueue +EXPORT_SYMBOL vmlinux 0x69d7e5b8 __debugger_ipi +EXPORT_SYMBOL vmlinux 0x69d80262 eth_type_trans +EXPORT_SYMBOL vmlinux 0x69fc5fad set_device_ro +EXPORT_SYMBOL vmlinux 0x6a037cf1 mempool_kfree +EXPORT_SYMBOL vmlinux 0x6a13e443 bio_integrity_trim +EXPORT_SYMBOL vmlinux 0x6a2fe28a t10_pi_type1_crc +EXPORT_SYMBOL vmlinux 0x6a306def tcp_make_synack +EXPORT_SYMBOL vmlinux 0x6a456872 unregister_netdevice_queue +EXPORT_SYMBOL vmlinux 0x6a5ecb18 unregister_module_notifier +EXPORT_SYMBOL vmlinux 0x6a5f7f26 of_platform_bus_probe +EXPORT_SYMBOL vmlinux 0x6a620320 skb_copy +EXPORT_SYMBOL vmlinux 0x6a64f086 blk_rq_map_user +EXPORT_SYMBOL vmlinux 0x6a76f3ac blk_iopoll_enable +EXPORT_SYMBOL vmlinux 0x6a872bfc blk_integrity_is_initialized +EXPORT_SYMBOL vmlinux 0x6a8a9291 xfrm6_rcv_cb +EXPORT_SYMBOL vmlinux 0x6a93f35d serial8250_register_8250_port +EXPORT_SYMBOL vmlinux 0x6acafd5b cookie_timestamp_decode +EXPORT_SYMBOL vmlinux 0x6acb973d iowrite32be +EXPORT_SYMBOL vmlinux 0x6ae4114d memory_cgrp_subsys +EXPORT_SYMBOL vmlinux 0x6aeefac4 zlib_deflateReset +EXPORT_SYMBOL vmlinux 0x6af4004b kernel_connect +EXPORT_SYMBOL vmlinux 0x6b06fdce delayed_work_timer_fn +EXPORT_SYMBOL vmlinux 0x6b08a30e set_user_nice +EXPORT_SYMBOL vmlinux 0x6b1b67d3 __bdevname +EXPORT_SYMBOL vmlinux 0x6b20ec19 default_qdisc_ops +EXPORT_SYMBOL vmlinux 0x6b2277e9 dev_getbyhwaddr_rcu +EXPORT_SYMBOL vmlinux 0x6b29b3ed __scm_destroy +EXPORT_SYMBOL vmlinux 0x6b2dc060 dump_stack +EXPORT_SYMBOL vmlinux 0x6b424cca udp_lib_get_port +EXPORT_SYMBOL vmlinux 0x6b501ad0 generic_file_readonly_mmap +EXPORT_SYMBOL vmlinux 0x6b50d4d5 single_release +EXPORT_SYMBOL vmlinux 0x6b59ac5e iw_handler_get_thrspy +EXPORT_SYMBOL vmlinux 0x6b66c889 fence_free +EXPORT_SYMBOL vmlinux 0x6b7f69ea do_splice_direct +EXPORT_SYMBOL vmlinux 0x6b965793 scsi_unblock_requests +EXPORT_SYMBOL vmlinux 0x6ba34448 of_dev_get +EXPORT_SYMBOL vmlinux 0x6bc3fbc0 __unregister_chrdev +EXPORT_SYMBOL vmlinux 0x6bc6a9a4 bdget_disk +EXPORT_SYMBOL vmlinux 0x6bc9fbef shrink_dcache_sb +EXPORT_SYMBOL vmlinux 0x6bd0b74b end_page_writeback +EXPORT_SYMBOL vmlinux 0x6bdcfd99 qdisc_class_hash_remove +EXPORT_SYMBOL vmlinux 0x6bfdc2f7 swiotlb_map_sg_attrs +EXPORT_SYMBOL vmlinux 0x6c06537c __devm_request_region +EXPORT_SYMBOL vmlinux 0x6c09c2a4 del_timer +EXPORT_SYMBOL vmlinux 0x6c1ce5ce strcspn +EXPORT_SYMBOL vmlinux 0x6c41e0f2 abx500_get_register_page_interruptible +EXPORT_SYMBOL vmlinux 0x6c4e5edf pci_bus_add_devices +EXPORT_SYMBOL vmlinux 0x6c51a836 sysctl_tcp_notsent_lowat +EXPORT_SYMBOL vmlinux 0x6c51c4c0 tcp_enter_cwr +EXPORT_SYMBOL vmlinux 0x6c61ce70 num_registered_fb +EXPORT_SYMBOL vmlinux 0x6c702af7 sysctl_udp_rmem_min +EXPORT_SYMBOL vmlinux 0x6c94a7b5 genlmsg_put +EXPORT_SYMBOL vmlinux 0x6ca1d1a4 atomic64_read +EXPORT_SYMBOL vmlinux 0x6ca5b0f8 __net_get_random_once +EXPORT_SYMBOL vmlinux 0x6cb37127 flex_array_clear +EXPORT_SYMBOL vmlinux 0x6cd5bd94 tcp_parse_options +EXPORT_SYMBOL vmlinux 0x6cdc5c6b nla_strlcpy +EXPORT_SYMBOL vmlinux 0x6cddafc3 dev_get_by_name +EXPORT_SYMBOL vmlinux 0x6ce97aec __getblk_gfp +EXPORT_SYMBOL vmlinux 0x6cfda430 serio_close +EXPORT_SYMBOL vmlinux 0x6d0f1f89 dm_table_get_mode +EXPORT_SYMBOL vmlinux 0x6d1a6002 blk_queue_dma_alignment +EXPORT_SYMBOL vmlinux 0x6d294e43 clock_t_to_jiffies +EXPORT_SYMBOL vmlinux 0x6d47407a kthread_create_on_node +EXPORT_SYMBOL vmlinux 0x6d740223 flex_array_put +EXPORT_SYMBOL vmlinux 0x6d90065d read_dev_sector +EXPORT_SYMBOL vmlinux 0x6da928f4 _insw_ns +EXPORT_SYMBOL vmlinux 0x6dbf7568 i2c_smbus_read_byte_data +EXPORT_SYMBOL vmlinux 0x6dc3cbff xfrm4_rcv_encap +EXPORT_SYMBOL vmlinux 0x6dcc8a01 blkdev_put +EXPORT_SYMBOL vmlinux 0x6de39138 get_gendisk +EXPORT_SYMBOL vmlinux 0x6def2db2 half_md4_transform +EXPORT_SYMBOL vmlinux 0x6df1aaf1 kernel_sigaction +EXPORT_SYMBOL vmlinux 0x6e046ae3 mmc_alloc_host +EXPORT_SYMBOL vmlinux 0x6e295dcd twl6040_set_bits +EXPORT_SYMBOL vmlinux 0x6e35b2f3 mfd_cell_disable +EXPORT_SYMBOL vmlinux 0x6e3b819f sg_copy_buffer +EXPORT_SYMBOL vmlinux 0x6e3bae7d bitmap_close_sync +EXPORT_SYMBOL vmlinux 0x6e48a94a vfs_path_lookup +EXPORT_SYMBOL vmlinux 0x6e6514ed radix_tree_insert +EXPORT_SYMBOL vmlinux 0x6e69b7cc pci_get_domain_bus_and_slot +EXPORT_SYMBOL vmlinux 0x6e720ff2 rtnl_unlock +EXPORT_SYMBOL vmlinux 0x6e7f3678 pci_enable_msix_range +EXPORT_SYMBOL vmlinux 0x6e84b6ba pci_iounmap +EXPORT_SYMBOL vmlinux 0x6e9c71b5 __sock_create +EXPORT_SYMBOL vmlinux 0x6e9dd606 __symbol_put +EXPORT_SYMBOL vmlinux 0x6e9fbf13 mmc_fixup_device +EXPORT_SYMBOL vmlinux 0x6eb74dff proc_dointvec_ms_jiffies +EXPORT_SYMBOL vmlinux 0x6ed06294 security_sb_clone_mnt_opts +EXPORT_SYMBOL vmlinux 0x6ed7cfe8 mmc_hw_reset +EXPORT_SYMBOL vmlinux 0x6ee3704a dquot_get_dqblk +EXPORT_SYMBOL vmlinux 0x6eea3894 request_key_async_with_auxdata +EXPORT_SYMBOL vmlinux 0x6f20960a full_name_hash +EXPORT_SYMBOL vmlinux 0x6f250be0 touchscreen_parse_of_params +EXPORT_SYMBOL vmlinux 0x6f3e22c3 param_set_invbool +EXPORT_SYMBOL vmlinux 0x6f66fcc5 mipi_dsi_dcs_write +EXPORT_SYMBOL vmlinux 0x6f71dca0 __skb_get_hash_flowi6 +EXPORT_SYMBOL vmlinux 0x6f7527d1 qdisc_list_add +EXPORT_SYMBOL vmlinux 0x6f88effb hdmi_avi_infoframe_init +EXPORT_SYMBOL vmlinux 0x6fbf07cd __free_page_frag +EXPORT_SYMBOL vmlinux 0x6fcb87a1 touch_softlockup_watchdog +EXPORT_SYMBOL vmlinux 0x6fdde016 of_get_pci_address +EXPORT_SYMBOL vmlinux 0x6ff429df dm_io +EXPORT_SYMBOL vmlinux 0x6fff27cc netdev_master_upper_dev_link_private +EXPORT_SYMBOL vmlinux 0x7013c147 simple_readpage +EXPORT_SYMBOL vmlinux 0x70523a7a __cond_resched_softirq +EXPORT_SYMBOL vmlinux 0x7054a3e4 request_dma +EXPORT_SYMBOL vmlinux 0x7062b4cd cmdline_parts_free +EXPORT_SYMBOL vmlinux 0x706d051c del_timer_sync +EXPORT_SYMBOL vmlinux 0x707f43f6 __ctzdi2 +EXPORT_SYMBOL vmlinux 0x70847b5d bio_integrity_alloc +EXPORT_SYMBOL vmlinux 0x70979550 mmc_can_secure_erase_trim +EXPORT_SYMBOL vmlinux 0x70d83230 bio_integrity_clone +EXPORT_SYMBOL vmlinux 0x70d888b7 __debugger_fault_handler +EXPORT_SYMBOL vmlinux 0x70ec240b unmap_underlying_metadata +EXPORT_SYMBOL vmlinux 0x70f86c70 pmu_queue_request +EXPORT_SYMBOL vmlinux 0x70f96f88 glob_match +EXPORT_SYMBOL vmlinux 0x70fa74ae devm_ioremap_resource +EXPORT_SYMBOL vmlinux 0x7109c3c1 try_to_release_page +EXPORT_SYMBOL vmlinux 0x710ed084 skb_orphan_partial +EXPORT_SYMBOL vmlinux 0x711cdf03 rawv6_mh_filter_register +EXPORT_SYMBOL vmlinux 0x7129e5f8 hex_asc +EXPORT_SYMBOL vmlinux 0x712ed37b radix_tree_gang_lookup_tag_slot +EXPORT_SYMBOL vmlinux 0x7139db74 flush_dcache_page +EXPORT_SYMBOL vmlinux 0x71561994 of_find_i2c_adapter_by_node +EXPORT_SYMBOL vmlinux 0x7171121c overflowgid +EXPORT_SYMBOL vmlinux 0x71951acb uart_resume_port +EXPORT_SYMBOL vmlinux 0x71a50dbc register_blkdev +EXPORT_SYMBOL vmlinux 0x71a672ef dmam_pool_destroy +EXPORT_SYMBOL vmlinux 0x71afb864 pci_bus_get +EXPORT_SYMBOL vmlinux 0x71b95f8e truncate_inode_pages +EXPORT_SYMBOL vmlinux 0x71c8bcc4 agp3_generic_tlbflush +EXPORT_SYMBOL vmlinux 0x71c90087 memcmp +EXPORT_SYMBOL vmlinux 0x71d3c1bf vfs_fsync +EXPORT_SYMBOL vmlinux 0x71f65175 hdmi_spd_infoframe_pack +EXPORT_SYMBOL vmlinux 0x72059f07 vfs_mknod +EXPORT_SYMBOL vmlinux 0x72149967 __genl_register_family +EXPORT_SYMBOL vmlinux 0x7215ac7a iget_locked +EXPORT_SYMBOL vmlinux 0x7225d9bc blk_run_queue +EXPORT_SYMBOL vmlinux 0x726099ef generic_show_options +EXPORT_SYMBOL vmlinux 0x726dbf1b mem_map +EXPORT_SYMBOL vmlinux 0x7280e85a padata_set_cpumasks +EXPORT_SYMBOL vmlinux 0x728b1b4b frontswap_register_ops +EXPORT_SYMBOL vmlinux 0x7296d9a8 do_splice_to +EXPORT_SYMBOL vmlinux 0x72a0e6f2 __sg_alloc_table +EXPORT_SYMBOL vmlinux 0x72b243d4 free_dma +EXPORT_SYMBOL vmlinux 0x72b53586 pneigh_lookup +EXPORT_SYMBOL vmlinux 0x72b6fa56 fence_wait_timeout +EXPORT_SYMBOL vmlinux 0x72d58de9 kstrtou8_from_user +EXPORT_SYMBOL vmlinux 0x72e14cb6 dcache_dir_lseek +EXPORT_SYMBOL vmlinux 0x72e4b149 kdb_current_task +EXPORT_SYMBOL vmlinux 0x72ea7b2d scsi_device_type +EXPORT_SYMBOL vmlinux 0x7302c9b3 request_firmware +EXPORT_SYMBOL vmlinux 0x7315a4e9 twl6030_mmc_card_detect_config +EXPORT_SYMBOL vmlinux 0x733c3b54 kasprintf +EXPORT_SYMBOL vmlinux 0x735d8503 add_wait_queue +EXPORT_SYMBOL vmlinux 0x735fbaeb vfs_getattr +EXPORT_SYMBOL vmlinux 0x73710a3e dqstats +EXPORT_SYMBOL vmlinux 0x73c5d23a mmc_stop_bkops +EXPORT_SYMBOL vmlinux 0x73c7c12f mfd_add_devices +EXPORT_SYMBOL vmlinux 0x73d21d6b sk_reset_timer +EXPORT_SYMBOL vmlinux 0x73e20c1c strlcpy +EXPORT_SYMBOL vmlinux 0x73e40ccb __mem_cgroup_count_vm_event +EXPORT_SYMBOL vmlinux 0x73f4b5e5 agp_copy_info +EXPORT_SYMBOL vmlinux 0x73f9205a get_cached_acl_rcu +EXPORT_SYMBOL vmlinux 0x74021a07 dst_destroy +EXPORT_SYMBOL vmlinux 0x7410aba2 strreplace +EXPORT_SYMBOL vmlinux 0x7424d798 rtnl_link_get_net +EXPORT_SYMBOL vmlinux 0x7433d884 pcie_capability_write_dword +EXPORT_SYMBOL vmlinux 0x744781f6 jbd2_trans_will_send_data_barrier +EXPORT_SYMBOL vmlinux 0x74536d32 twl6040_reg_read +EXPORT_SYMBOL vmlinux 0x747195f0 hdmi_vendor_infoframe_init +EXPORT_SYMBOL vmlinux 0x7485e15e unregister_chrdev_region +EXPORT_SYMBOL vmlinux 0x74926f4c fixed_size_llseek +EXPORT_SYMBOL vmlinux 0x749e6d2f generic_file_fsync +EXPORT_SYMBOL vmlinux 0x74c134b9 __sw_hweight32 +EXPORT_SYMBOL vmlinux 0x74c1a5c6 reservation_object_reserve_shared +EXPORT_SYMBOL vmlinux 0x74c4c554 tty_throttle +EXPORT_SYMBOL vmlinux 0x74e5ff1a udpv6_encap_enable +EXPORT_SYMBOL vmlinux 0x74e64785 param_ops_bint +EXPORT_SYMBOL vmlinux 0x74fe8730 sys_ctrler +EXPORT_SYMBOL vmlinux 0x7505bdef memchr_inv +EXPORT_SYMBOL vmlinux 0x7513525f locks_remove_posix +EXPORT_SYMBOL vmlinux 0x751c2bf3 gnet_stats_start_copy +EXPORT_SYMBOL vmlinux 0x7538b132 agp_off +EXPORT_SYMBOL vmlinux 0x7540e75c agp_generic_destroy_page +EXPORT_SYMBOL vmlinux 0x75547f78 ppp_unit_number +EXPORT_SYMBOL vmlinux 0x755d1c25 agp_generic_free_gatt_table +EXPORT_SYMBOL vmlinux 0x756dd160 start_thread +EXPORT_SYMBOL vmlinux 0x7572af31 mdiobus_free +EXPORT_SYMBOL vmlinux 0x7593d385 div64_s64 +EXPORT_SYMBOL vmlinux 0x75994700 add_wait_queue_exclusive +EXPORT_SYMBOL vmlinux 0x75bda77a seq_hlist_next +EXPORT_SYMBOL vmlinux 0x75bdea12 iommu_area_alloc +EXPORT_SYMBOL vmlinux 0x75c6ce79 dev_alert +EXPORT_SYMBOL vmlinux 0x75dc20fd cfb_copyarea +EXPORT_SYMBOL vmlinux 0x75f2aee8 splice_direct_to_actor +EXPORT_SYMBOL vmlinux 0x7605b74c ip_route_input_noref +EXPORT_SYMBOL vmlinux 0x760a0f4f yield +EXPORT_SYMBOL vmlinux 0x763bd124 inet_frag_maybe_warn_overflow +EXPORT_SYMBOL vmlinux 0x763de5f4 xfrm_state_flush +EXPORT_SYMBOL vmlinux 0x7647726c handle_sysrq +EXPORT_SYMBOL vmlinux 0x76530cb0 bioset_free +EXPORT_SYMBOL vmlinux 0x76656412 bdi_init +EXPORT_SYMBOL vmlinux 0x7676b96a simple_rmdir +EXPORT_SYMBOL vmlinux 0x767ae655 sdev_disable_disk_events +EXPORT_SYMBOL vmlinux 0x76d3cd60 laptop_mode +EXPORT_SYMBOL vmlinux 0x76d451c4 add_taint +EXPORT_SYMBOL vmlinux 0x76d9bf11 crc32_be +EXPORT_SYMBOL vmlinux 0x76f6c5ef kmalloc_order +EXPORT_SYMBOL vmlinux 0x7718f91a inet_bind +EXPORT_SYMBOL vmlinux 0x771efa02 sock_sendmsg +EXPORT_SYMBOL vmlinux 0x7723dfbd blk_run_queue_async +EXPORT_SYMBOL vmlinux 0x77364192 blk_init_queue_node +EXPORT_SYMBOL vmlinux 0x7739a6c8 fsnotify_alloc_group +EXPORT_SYMBOL vmlinux 0x7742febc of_get_next_available_child +EXPORT_SYMBOL vmlinux 0x7747e66d serial8250_set_isa_configurator +EXPORT_SYMBOL vmlinux 0x775a130e __sg_free_table +EXPORT_SYMBOL vmlinux 0x775dd9d5 mipi_dsi_dcs_set_display_on +EXPORT_SYMBOL vmlinux 0x7773fc51 skb_copy_bits +EXPORT_SYMBOL vmlinux 0x77870bc7 of_phy_is_fixed_link +EXPORT_SYMBOL vmlinux 0x779a18af kstrtoll +EXPORT_SYMBOL vmlinux 0x77bc13a0 strim +EXPORT_SYMBOL vmlinux 0x77c10a2f of_find_node_by_phandle +EXPORT_SYMBOL vmlinux 0x77d452f3 alloc_disk +EXPORT_SYMBOL vmlinux 0x77fa828d of_get_cpu_node +EXPORT_SYMBOL vmlinux 0x77fdd0a9 linkwatch_fire_event +EXPORT_SYMBOL vmlinux 0x78175847 get_disk +EXPORT_SYMBOL vmlinux 0x7818491b invalidate_mapping_pages +EXPORT_SYMBOL vmlinux 0x7824e90e phy_stop +EXPORT_SYMBOL vmlinux 0x782567ec memcg_kmem_enabled_key +EXPORT_SYMBOL vmlinux 0x783b3563 wake_up_atomic_t +EXPORT_SYMBOL vmlinux 0x784a9f25 input_mt_report_pointer_emulation +EXPORT_SYMBOL vmlinux 0x787227b6 vme_slave_request +EXPORT_SYMBOL vmlinux 0x787c7264 key_link +EXPORT_SYMBOL vmlinux 0x7880c781 dm_kcopyd_prepare_callback +EXPORT_SYMBOL vmlinux 0x788fe103 iomem_resource +EXPORT_SYMBOL vmlinux 0x789affb1 frontswap_tmem_exclusive_gets +EXPORT_SYMBOL vmlinux 0x78c926d4 lock_two_nondirectories +EXPORT_SYMBOL vmlinux 0x78ce5df2 simple_dir_inode_operations +EXPORT_SYMBOL vmlinux 0x78df6bd7 no_pci_devices +EXPORT_SYMBOL vmlinux 0x79080d9e pci_clear_master +EXPORT_SYMBOL vmlinux 0x790e0d76 skb_push +EXPORT_SYMBOL vmlinux 0x791b67eb simple_write_begin +EXPORT_SYMBOL vmlinux 0x793950fc ppp_channel_index +EXPORT_SYMBOL vmlinux 0x796acf5e cleancache_register_ops +EXPORT_SYMBOL vmlinux 0x796fc5ce scsi_get_sense_info_fld +EXPORT_SYMBOL vmlinux 0x798273cd jbd2_journal_get_undo_access +EXPORT_SYMBOL vmlinux 0x798767a1 pci_dev_driver +EXPORT_SYMBOL vmlinux 0x79aa04a2 get_random_bytes +EXPORT_SYMBOL vmlinux 0x79e1a7b6 scsicam_bios_param +EXPORT_SYMBOL vmlinux 0x7a19f34b bitmap_start_sync +EXPORT_SYMBOL vmlinux 0x7a20853c dma_async_device_unregister +EXPORT_SYMBOL vmlinux 0x7a26bc29 __sb_start_write +EXPORT_SYMBOL vmlinux 0x7a27c184 ewma_init +EXPORT_SYMBOL vmlinux 0x7a3b23aa inode_add_rsv_space +EXPORT_SYMBOL vmlinux 0x7a4497db kzfree +EXPORT_SYMBOL vmlinux 0x7a6f1e35 pm860x_bulk_write +EXPORT_SYMBOL vmlinux 0x7a731b36 i2c_smbus_xfer +EXPORT_SYMBOL vmlinux 0x7a784465 sock_i_ino +EXPORT_SYMBOL vmlinux 0x7a7925d1 gro_find_receive_by_type +EXPORT_SYMBOL vmlinux 0x7a925833 cpufreq_get_global_kobject +EXPORT_SYMBOL vmlinux 0x7a95e5ae do_settimeofday64 +EXPORT_SYMBOL vmlinux 0x7aa1756e kvfree +EXPORT_SYMBOL vmlinux 0x7aa87eeb phy_driver_register +EXPORT_SYMBOL vmlinux 0x7ab88a45 system_freezing_cnt +EXPORT_SYMBOL vmlinux 0x7ad050b9 qid_lt +EXPORT_SYMBOL vmlinux 0x7ad490c1 mipi_dsi_dcs_set_display_off +EXPORT_SYMBOL vmlinux 0x7ad5bdd6 vfs_create +EXPORT_SYMBOL vmlinux 0x7add44b5 posix_acl_valid +EXPORT_SYMBOL vmlinux 0x7afa89fc vsnprintf +EXPORT_SYMBOL vmlinux 0x7afd0d1a gnet_stats_finish_copy +EXPORT_SYMBOL vmlinux 0x7b08d023 seq_read +EXPORT_SYMBOL vmlinux 0x7b1ade38 lz4_decompress +EXPORT_SYMBOL vmlinux 0x7b283ce3 prandom_bytes_state +EXPORT_SYMBOL vmlinux 0x7b2b07b7 con_is_bound +EXPORT_SYMBOL vmlinux 0x7b316a83 ppp_register_channel +EXPORT_SYMBOL vmlinux 0x7b397f7b gnet_stats_copy_basic +EXPORT_SYMBOL vmlinux 0x7b5c8440 vm_munmap +EXPORT_SYMBOL vmlinux 0x7b65a205 d_hash_and_lookup +EXPORT_SYMBOL vmlinux 0x7b673925 swiotlb_map_sg +EXPORT_SYMBOL vmlinux 0x7ba62aa5 skb_vlan_pop +EXPORT_SYMBOL vmlinux 0x7bc4a7d1 seq_write +EXPORT_SYMBOL vmlinux 0x7bd6c051 netif_tx_wake_queue +EXPORT_SYMBOL vmlinux 0x7be10601 kern_path_create +EXPORT_SYMBOL vmlinux 0x7be4827c pci_dram_offset +EXPORT_SYMBOL vmlinux 0x7c003aef _raw_read_lock_irq +EXPORT_SYMBOL vmlinux 0x7c01204a follow_up +EXPORT_SYMBOL vmlinux 0x7c05596a netif_set_real_num_rx_queues +EXPORT_SYMBOL vmlinux 0x7c0ecd09 pci_map_rom +EXPORT_SYMBOL vmlinux 0x7c1372e8 panic +EXPORT_SYMBOL vmlinux 0x7c173634 __bitmap_complement +EXPORT_SYMBOL vmlinux 0x7c2ffa30 neigh_xmit +EXPORT_SYMBOL vmlinux 0x7c42ccf6 vfs_readf +EXPORT_SYMBOL vmlinux 0x7c46233a cpufreq_quick_get +EXPORT_SYMBOL vmlinux 0x7c4a5d6a load_nls_default +EXPORT_SYMBOL vmlinux 0x7c4e6c2d devm_gpiod_put_array +EXPORT_SYMBOL vmlinux 0x7c9291d1 csum_partial_copy_generic +EXPORT_SYMBOL vmlinux 0x7c98845d twl_i2c_read +EXPORT_SYMBOL vmlinux 0x7cb1ae69 cpu_down +EXPORT_SYMBOL vmlinux 0x7cbdbe0d tcf_hash_insert +EXPORT_SYMBOL vmlinux 0x7ce18c9f from_kqid +EXPORT_SYMBOL vmlinux 0x7cef298f blk_mq_all_tag_busy_iter +EXPORT_SYMBOL vmlinux 0x7cf34906 blk_queue_max_write_same_sectors +EXPORT_SYMBOL vmlinux 0x7cf35220 vme_master_free +EXPORT_SYMBOL vmlinux 0x7cf86c4c nla_reserve_nohdr +EXPORT_SYMBOL vmlinux 0x7d0d6d27 tty_schedule_flip +EXPORT_SYMBOL vmlinux 0x7d0db45c jiffies_to_clock_t +EXPORT_SYMBOL vmlinux 0x7d11c268 jiffies +EXPORT_SYMBOL vmlinux 0x7d18a634 scsi_change_queue_depth +EXPORT_SYMBOL vmlinux 0x7d243009 input_mt_sync_frame +EXPORT_SYMBOL vmlinux 0x7d4c1f66 __mmc_claim_host +EXPORT_SYMBOL vmlinux 0x7d50c828 redirty_page_for_writepage +EXPORT_SYMBOL vmlinux 0x7d642b3f agp_unbind_memory +EXPORT_SYMBOL vmlinux 0x7d685f9f devm_backlight_device_unregister +EXPORT_SYMBOL vmlinux 0x7d705738 blk_start_plug +EXPORT_SYMBOL vmlinux 0x7d9e555e scsi_eh_restore_cmnd +EXPORT_SYMBOL vmlinux 0x7db79a76 pci_get_subsys +EXPORT_SYMBOL vmlinux 0x7dbfb452 page_zero_new_buffers +EXPORT_SYMBOL vmlinux 0x7dc08904 xfrm4_prepare_output +EXPORT_SYMBOL vmlinux 0x7dc6acd0 mmc_can_reset +EXPORT_SYMBOL vmlinux 0x7dc97879 rtas_get_error_log_max +EXPORT_SYMBOL vmlinux 0x7deff673 dm_consume_args +EXPORT_SYMBOL vmlinux 0x7e36d12f get_mm_exe_file +EXPORT_SYMBOL vmlinux 0x7e60c91f blk_mq_unique_tag +EXPORT_SYMBOL vmlinux 0x7e78428c dev_addr_del +EXPORT_SYMBOL vmlinux 0x7e85a3fe netdev_master_upper_dev_link +EXPORT_SYMBOL vmlinux 0x7e87227e slhc_compress +EXPORT_SYMBOL vmlinux 0x7e89fd8c try_to_free_buffers +EXPORT_SYMBOL vmlinux 0x7e92dd34 elevator_init +EXPORT_SYMBOL vmlinux 0x7eae87f1 tcp_rcv_state_process +EXPORT_SYMBOL vmlinux 0x7ebe23b4 scsi_host_put +EXPORT_SYMBOL vmlinux 0x7ebf8491 eth_mac_addr +EXPORT_SYMBOL vmlinux 0x7ecd615a prepare_kernel_cred +EXPORT_SYMBOL vmlinux 0x7eda408e xfrm_policy_hash_rebuild +EXPORT_SYMBOL vmlinux 0x7ee6d93a nsecs_to_jiffies64 +EXPORT_SYMBOL vmlinux 0x7ee73c0c memcg_socket_limit_enabled +EXPORT_SYMBOL vmlinux 0x7ef30d59 pcie_get_mps +EXPORT_SYMBOL vmlinux 0x7f02188f __msecs_to_jiffies +EXPORT_SYMBOL vmlinux 0x7f24de73 jiffies_to_usecs +EXPORT_SYMBOL vmlinux 0x7f2b9288 block_read_full_page +EXPORT_SYMBOL vmlinux 0x7f3c222d dma_pool_create +EXPORT_SYMBOL vmlinux 0x7f62a045 cpu_maps_update_done +EXPORT_SYMBOL vmlinux 0x7f6e766c fasync_helper +EXPORT_SYMBOL vmlinux 0x7f7b44c6 seq_dentry +EXPORT_SYMBOL vmlinux 0x7f8c7d57 tcp_v4_connect +EXPORT_SYMBOL vmlinux 0x7f9e77c4 i2c_transfer +EXPORT_SYMBOL vmlinux 0x7fac79b5 __check_sticky +EXPORT_SYMBOL vmlinux 0x7fafc3ff of_phy_register_fixed_link +EXPORT_SYMBOL vmlinux 0x7fc2594f tty_port_init +EXPORT_SYMBOL vmlinux 0x7fca6b55 netif_carrier_on +EXPORT_SYMBOL vmlinux 0x7fd1a2cb max8998_bulk_read +EXPORT_SYMBOL vmlinux 0x7fde2edb vme_master_read +EXPORT_SYMBOL vmlinux 0x7fe32873 rb_replace_node +EXPORT_SYMBOL vmlinux 0x8001a0d1 blk_mq_tag_busy_iter +EXPORT_SYMBOL vmlinux 0x803fe5fc tcp_v4_md5_lookup +EXPORT_SYMBOL vmlinux 0x8040f688 seq_lseek +EXPORT_SYMBOL vmlinux 0x80481f45 scsi_mode_sense +EXPORT_SYMBOL vmlinux 0x80868c4c finish_open +EXPORT_SYMBOL vmlinux 0x808b868a try_to_writeback_inodes_sb_nr +EXPORT_SYMBOL vmlinux 0x809945f3 sk_send_sigurg +EXPORT_SYMBOL vmlinux 0x80c3da86 agp_generic_create_gatt_table +EXPORT_SYMBOL vmlinux 0x80ca5026 _bin2bcd +EXPORT_SYMBOL vmlinux 0x80cabcd3 vm_event_states +EXPORT_SYMBOL vmlinux 0x80d68d3e fb_register_client +EXPORT_SYMBOL vmlinux 0x80da800f blk_queue_segment_boundary +EXPORT_SYMBOL vmlinux 0x80e1fa35 blk_cleanup_queue +EXPORT_SYMBOL vmlinux 0x8105506e neigh_destroy +EXPORT_SYMBOL vmlinux 0x8116e648 iter_file_splice_write +EXPORT_SYMBOL vmlinux 0x81220c7e mmc_gpio_get_ro +EXPORT_SYMBOL vmlinux 0x812d18a3 mipi_dsi_dcs_get_pixel_format +EXPORT_SYMBOL vmlinux 0x813346c0 get_user_pages_unlocked +EXPORT_SYMBOL vmlinux 0x8147d2ab jbd2_journal_destroy +EXPORT_SYMBOL vmlinux 0x814e7730 nf_ct_destroy +EXPORT_SYMBOL vmlinux 0x81510fc2 mmc_erase_group_aligned +EXPORT_SYMBOL vmlinux 0x81569f16 icmp_send +EXPORT_SYMBOL vmlinux 0x815b5dd4 match_octal +EXPORT_SYMBOL vmlinux 0x8176ed8b of_count_phandle_with_args +EXPORT_SYMBOL vmlinux 0x81819480 cpu_sibling_map +EXPORT_SYMBOL vmlinux 0x818fd81d skb_checksum +EXPORT_SYMBOL vmlinux 0x81934677 __devm_release_region +EXPORT_SYMBOL vmlinux 0x819b13c3 __dquot_transfer +EXPORT_SYMBOL vmlinux 0x81a07f4e _atomic_dec_and_lock +EXPORT_SYMBOL vmlinux 0x81c0a84f rtas_set_indicator +EXPORT_SYMBOL vmlinux 0x81c372e1 search_binary_handler +EXPORT_SYMBOL vmlinux 0x81cb59b1 zerocopy_sg_from_iter +EXPORT_SYMBOL vmlinux 0x81cdd53e iov_iter_single_seg_count +EXPORT_SYMBOL vmlinux 0x81db6ebb xz_dec_reset +EXPORT_SYMBOL vmlinux 0x81de7319 scsi_block_when_processing_errors +EXPORT_SYMBOL vmlinux 0x81ec52c5 pci_dev_put +EXPORT_SYMBOL vmlinux 0x82072614 tasklet_kill +EXPORT_SYMBOL vmlinux 0x8210c2d1 of_get_property +EXPORT_SYMBOL vmlinux 0x8219860c remap_pfn_range +EXPORT_SYMBOL vmlinux 0x822288aa neigh_table_init +EXPORT_SYMBOL vmlinux 0x822c5a8c fence_add_callback +EXPORT_SYMBOL vmlinux 0x824cbbb0 blk_alloc_queue_node +EXPORT_SYMBOL vmlinux 0x824e5056 generic_pipe_buf_release +EXPORT_SYMBOL vmlinux 0x824e5b06 xfrm_garbage_collect +EXPORT_SYMBOL vmlinux 0x8252bea1 jbd2_journal_force_commit +EXPORT_SYMBOL vmlinux 0x82701365 int_to_scsilun +EXPORT_SYMBOL vmlinux 0x827d4026 max8998_write_reg +EXPORT_SYMBOL vmlinux 0x828062b1 __frontswap_init +EXPORT_SYMBOL vmlinux 0x82871b60 dmt_modes +EXPORT_SYMBOL vmlinux 0x82882612 rtnetlink_put_metrics +EXPORT_SYMBOL vmlinux 0x828cb781 km_new_mapping +EXPORT_SYMBOL vmlinux 0x82acfb70 blk_iopoll_sched +EXPORT_SYMBOL vmlinux 0x82ddd827 phy_device_register +EXPORT_SYMBOL vmlinux 0x82e5a238 vm_get_page_prot +EXPORT_SYMBOL vmlinux 0x82ec52d7 netdev_features_change +EXPORT_SYMBOL vmlinux 0x82f1d98a kern_path_mountpoint +EXPORT_SYMBOL vmlinux 0x8304733a blk_set_stacking_limits +EXPORT_SYMBOL vmlinux 0x8304796f tcp_create_openreq_child +EXPORT_SYMBOL vmlinux 0x8308959f blk_requeue_request +EXPORT_SYMBOL vmlinux 0x8337f88d set_disk_ro +EXPORT_SYMBOL vmlinux 0x83528696 devm_devfreq_unregister_opp_notifier +EXPORT_SYMBOL vmlinux 0x83581d4c abort_creds +EXPORT_SYMBOL vmlinux 0x835bf3b9 fb_get_mode +EXPORT_SYMBOL vmlinux 0x8372cd2f __gnet_stats_copy_basic +EXPORT_SYMBOL vmlinux 0x837b17bb console_start +EXPORT_SYMBOL vmlinux 0x839430b2 __register_cpu_notifier +EXPORT_SYMBOL vmlinux 0x8397ba16 blk_mq_start_hw_queue +EXPORT_SYMBOL vmlinux 0x839b0a35 dev_set_allmulti +EXPORT_SYMBOL vmlinux 0x83ac7149 input_inject_event +EXPORT_SYMBOL vmlinux 0x83b009ea xfrm_state_walk_init +EXPORT_SYMBOL vmlinux 0x83b2c236 devm_gen_pool_create +EXPORT_SYMBOL vmlinux 0x83c021e6 generic_update_time +EXPORT_SYMBOL vmlinux 0x83c52fba xfrm4_protocol_init +EXPORT_SYMBOL vmlinux 0x83cf9a03 dmam_free_coherent +EXPORT_SYMBOL vmlinux 0x83dfe16c skb_page_frag_refill +EXPORT_SYMBOL vmlinux 0x841ab96b netdev_upper_dev_unlink +EXPORT_SYMBOL vmlinux 0x841c5b81 __neigh_create +EXPORT_SYMBOL vmlinux 0x8440227b inet_del_offload +EXPORT_SYMBOL vmlinux 0x844404cf ISA_DMA_THRESHOLD +EXPORT_SYMBOL vmlinux 0x847ad932 padata_start +EXPORT_SYMBOL vmlinux 0x8497ba81 write_dirty_buffer +EXPORT_SYMBOL vmlinux 0x84a69fdc vme_slave_get +EXPORT_SYMBOL vmlinux 0x84b183ae strncmp +EXPORT_SYMBOL vmlinux 0x84bd69bf dq_data_lock +EXPORT_SYMBOL vmlinux 0x84f12048 tty_set_operations +EXPORT_SYMBOL vmlinux 0x84ffea8b idr_preload +EXPORT_SYMBOL vmlinux 0x8541bccc intercept_table +EXPORT_SYMBOL vmlinux 0x854e1c0b sg_nents +EXPORT_SYMBOL vmlinux 0x85670f1d rtnl_is_locked +EXPORT_SYMBOL vmlinux 0x858dbb11 skb_put +EXPORT_SYMBOL vmlinux 0x85b00bff dev_vprintk_emit +EXPORT_SYMBOL vmlinux 0x85b3352d tcf_register_action +EXPORT_SYMBOL vmlinux 0x85b5e625 rfkill_set_states +EXPORT_SYMBOL vmlinux 0x85c767a9 __netdev_alloc_skb +EXPORT_SYMBOL vmlinux 0x85d12683 mmc_of_parse_voltage +EXPORT_SYMBOL vmlinux 0x85df9b6c strsep +EXPORT_SYMBOL vmlinux 0x85efc7e0 zero_pfn +EXPORT_SYMBOL vmlinux 0x85f2860c tso_build_data +EXPORT_SYMBOL vmlinux 0x85fe7151 seq_putc +EXPORT_SYMBOL vmlinux 0x85fe9104 iov_iter_get_pages_alloc +EXPORT_SYMBOL vmlinux 0x85ff32a4 scsi_unregister +EXPORT_SYMBOL vmlinux 0x865029ac __hw_addr_sync +EXPORT_SYMBOL vmlinux 0x865f06c3 jbd2__journal_start +EXPORT_SYMBOL vmlinux 0x8664f62e cpufreq_update_policy +EXPORT_SYMBOL vmlinux 0x867f1b87 pci_back_from_sleep +EXPORT_SYMBOL vmlinux 0x868acba5 get_options +EXPORT_SYMBOL vmlinux 0x868ba725 bdi_register +EXPORT_SYMBOL vmlinux 0x868f7cec dget_parent +EXPORT_SYMBOL vmlinux 0x86a4889a kmalloc_order_trace +EXPORT_SYMBOL vmlinux 0x86b918bd rawv6_mh_filter_unregister +EXPORT_SYMBOL vmlinux 0x86db1cbb rtas_flash_term_hook +EXPORT_SYMBOL vmlinux 0x86fb9b05 bitmap_parse_user +EXPORT_SYMBOL vmlinux 0x8706a391 simple_getattr +EXPORT_SYMBOL vmlinux 0x870fafa6 flush_old_exec +EXPORT_SYMBOL vmlinux 0x871c0a7e fiemap_check_flags +EXPORT_SYMBOL vmlinux 0x875d367a seq_puts +EXPORT_SYMBOL vmlinux 0x87636ca7 locks_mandatory_area +EXPORT_SYMBOL vmlinux 0x878ab3ce sysctl_tcp_adv_win_scale +EXPORT_SYMBOL vmlinux 0x8790793b napi_complete_done +EXPORT_SYMBOL vmlinux 0x8798e453 __tracepoint_kfree +EXPORT_SYMBOL vmlinux 0x87b52295 tty_register_driver +EXPORT_SYMBOL vmlinux 0x87b7b4d4 inet_csk_clear_xmit_timers +EXPORT_SYMBOL vmlinux 0x87bbb5d1 inet_proto_csum_replace4 +EXPORT_SYMBOL vmlinux 0x88029139 sync_filesystem +EXPORT_SYMBOL vmlinux 0x880785ab ioc_lookup_icq +EXPORT_SYMBOL vmlinux 0x88142d1c filemap_fdatawrite_range +EXPORT_SYMBOL vmlinux 0x8817e5ab tcp_seq_open +EXPORT_SYMBOL vmlinux 0x881aabf1 of_phy_connect +EXPORT_SYMBOL vmlinux 0x88419bb9 __dev_kfree_skb_any +EXPORT_SYMBOL vmlinux 0x8859db62 kernel_accept +EXPORT_SYMBOL vmlinux 0x88740d92 xfrm_policy_bysel_ctx +EXPORT_SYMBOL vmlinux 0x8875d670 filp_open +EXPORT_SYMBOL vmlinux 0x8898f8d6 sock_no_socketpair +EXPORT_SYMBOL vmlinux 0x88a3e3b0 pci_find_next_bus +EXPORT_SYMBOL vmlinux 0x88a7b8e8 neigh_proc_dointvec_jiffies +EXPORT_SYMBOL vmlinux 0x88bfc397 kernel_setsockopt +EXPORT_SYMBOL vmlinux 0x88d403f7 i2c_verify_adapter +EXPORT_SYMBOL vmlinux 0x88ded077 fb_set_suspend +EXPORT_SYMBOL vmlinux 0x88f24c07 tty_devnum +EXPORT_SYMBOL vmlinux 0x89192f96 param_set_ushort +EXPORT_SYMBOL vmlinux 0x891fbb10 mempool_destroy +EXPORT_SYMBOL vmlinux 0x8953f8ff __tracepoint_kmem_cache_alloc +EXPORT_SYMBOL vmlinux 0x8970a901 bio_copy_kern +EXPORT_SYMBOL vmlinux 0x89797060 _raw_read_lock +EXPORT_SYMBOL vmlinux 0x8984afa2 dquot_mark_dquot_dirty +EXPORT_SYMBOL vmlinux 0x898acbc1 bio_chain +EXPORT_SYMBOL vmlinux 0x899367e9 crypto_sha512_update +EXPORT_SYMBOL vmlinux 0x899df2f2 lro_flush_all +EXPORT_SYMBOL vmlinux 0x89a9ac41 block_page_mkwrite +EXPORT_SYMBOL vmlinux 0x89b3107b isa_mem_base +EXPORT_SYMBOL vmlinux 0x89c79b62 of_device_register +EXPORT_SYMBOL vmlinux 0x89ce2f7d ipv6_sock_mc_drop +EXPORT_SYMBOL vmlinux 0x89d5538d fb_pad_aligned_buffer +EXPORT_SYMBOL vmlinux 0x89d6749f blk_queue_max_segments +EXPORT_SYMBOL vmlinux 0x89dc983f pcie_port_service_unregister +EXPORT_SYMBOL vmlinux 0x89e281b0 dm_get_device +EXPORT_SYMBOL vmlinux 0x8a1ab4ee timeval_to_jiffies +EXPORT_SYMBOL vmlinux 0x8a1bcb26 mmc_gpiod_request_cd +EXPORT_SYMBOL vmlinux 0x8a1c5455 blk_stack_limits +EXPORT_SYMBOL vmlinux 0x8a490c90 rfkill_set_sw_state +EXPORT_SYMBOL vmlinux 0x8a4e383a xfrm_policy_alloc +EXPORT_SYMBOL vmlinux 0x8a4f277e request_key_async +EXPORT_SYMBOL vmlinux 0x8a51d565 quota_send_warning +EXPORT_SYMBOL vmlinux 0x8a7d1c31 high_memory +EXPORT_SYMBOL vmlinux 0x8a7fe1d9 padata_free +EXPORT_SYMBOL vmlinux 0x8a87a1b1 rtnl_configure_link +EXPORT_SYMBOL vmlinux 0x8a99a016 mempool_free_slab +EXPORT_SYMBOL vmlinux 0x8aa3936b sock_alloc_send_skb +EXPORT_SYMBOL vmlinux 0x8ab4079e atomic64_add +EXPORT_SYMBOL vmlinux 0x8ac8919f tcp_prot +EXPORT_SYMBOL vmlinux 0x8ad1b58d inet6_register_icmp_sender +EXPORT_SYMBOL vmlinux 0x8ae73d63 fib_default_rule_add +EXPORT_SYMBOL vmlinux 0x8aebc4f4 bioset_integrity_free +EXPORT_SYMBOL vmlinux 0x8aece3f7 __dev_get_by_index +EXPORT_SYMBOL vmlinux 0x8b2f134b param_ops_ullong +EXPORT_SYMBOL vmlinux 0x8b43159b register_cpu_notifier +EXPORT_SYMBOL vmlinux 0x8b433f5c fbcon_set_bitops +EXPORT_SYMBOL vmlinux 0x8b4ac9ca rwsem_down_read_failed +EXPORT_SYMBOL vmlinux 0x8b4d0c38 remap_vmalloc_range_partial +EXPORT_SYMBOL vmlinux 0x8b505b76 inode_set_bytes +EXPORT_SYMBOL vmlinux 0x8b59335c tcp_v4_destroy_sock +EXPORT_SYMBOL vmlinux 0x8b5a225b mmc_calc_max_discard +EXPORT_SYMBOL vmlinux 0x8b618d08 overflowuid +EXPORT_SYMBOL vmlinux 0x8b8059bd in_group_p +EXPORT_SYMBOL vmlinux 0x8b855db8 get_phy_device +EXPORT_SYMBOL vmlinux 0x8bb76f1c __page_symlink +EXPORT_SYMBOL vmlinux 0x8be4135a pmac_suspend_agp_for_card +EXPORT_SYMBOL vmlinux 0x8bea75cb __alloc_skb +EXPORT_SYMBOL vmlinux 0x8bfca438 jbd2_journal_blocks_per_page +EXPORT_SYMBOL vmlinux 0x8c183cbe iowrite16 +EXPORT_SYMBOL vmlinux 0x8c34c486 tag_pages_for_writeback +EXPORT_SYMBOL vmlinux 0x8c3bbe0f blkdev_get_by_path +EXPORT_SYMBOL vmlinux 0x8c4664ce sk_stream_wait_close +EXPORT_SYMBOL vmlinux 0x8c637d43 irq_cpu_rmap_add +EXPORT_SYMBOL vmlinux 0x8c8605f0 i2c_add_adapter +EXPORT_SYMBOL vmlinux 0x8ca061d6 get_pci_dma_ops +EXPORT_SYMBOL vmlinux 0x8cb8ea7d cdev_init +EXPORT_SYMBOL vmlinux 0x8cb98be9 __starget_for_each_device +EXPORT_SYMBOL vmlinux 0x8cc6fd1b md_flush_request +EXPORT_SYMBOL vmlinux 0x8cc6fed7 file_update_time +EXPORT_SYMBOL vmlinux 0x8cc79cab iowrite16_rep +EXPORT_SYMBOL vmlinux 0x8cca66f0 tcf_hash_search +EXPORT_SYMBOL vmlinux 0x8cceb8d8 devfreq_monitor_resume +EXPORT_SYMBOL vmlinux 0x8cd3da14 uart_update_timeout +EXPORT_SYMBOL vmlinux 0x8cd939df single_open_size +EXPORT_SYMBOL vmlinux 0x8d000640 fb_get_buffer_offset +EXPORT_SYMBOL vmlinux 0x8d015dd4 __bswapdi2 +EXPORT_SYMBOL vmlinux 0x8d0fd2c1 netdev_notice +EXPORT_SYMBOL vmlinux 0x8d12267d mount_pseudo +EXPORT_SYMBOL vmlinux 0x8d196111 xfrm6_protocol_deregister +EXPORT_SYMBOL vmlinux 0x8d2b7dba __cleancache_init_shared_fs +EXPORT_SYMBOL vmlinux 0x8d355b86 tc_classify_compat +EXPORT_SYMBOL vmlinux 0x8d4e88cf security_inode_notifysecctx +EXPORT_SYMBOL vmlinux 0x8d53b623 pagecache_write_end +EXPORT_SYMBOL vmlinux 0x8d551bef sysctl_tcp_rmem +EXPORT_SYMBOL vmlinux 0x8d55bb8a qid_eq +EXPORT_SYMBOL vmlinux 0x8d6b2ce1 radix_tree_delete_item +EXPORT_SYMBOL vmlinux 0x8d72495b __getnstimeofday64 +EXPORT_SYMBOL vmlinux 0x8d73278e hex_asc_upper +EXPORT_SYMBOL vmlinux 0x8d790174 of_find_all_nodes +EXPORT_SYMBOL vmlinux 0x8d9858ee kobject_set_name +EXPORT_SYMBOL vmlinux 0x8d9ef583 scsi_target_quiesce +EXPORT_SYMBOL vmlinux 0x8da7a84b __block_page_mkwrite +EXPORT_SYMBOL vmlinux 0x8dbc30d7 __get_page_tail +EXPORT_SYMBOL vmlinux 0x8dc976fb phy_driver_unregister +EXPORT_SYMBOL vmlinux 0x8dc992c2 ata_std_end_eh +EXPORT_SYMBOL vmlinux 0x8dd5d951 sk_receive_skb +EXPORT_SYMBOL vmlinux 0x8de0b5ac mempool_create +EXPORT_SYMBOL vmlinux 0x8df5da63 memstart_addr +EXPORT_SYMBOL vmlinux 0x8e0d66f4 __tracepoint_kmalloc +EXPORT_SYMBOL vmlinux 0x8e48245b set_bh_page +EXPORT_SYMBOL vmlinux 0x8e60f6bf udp_set_csum +EXPORT_SYMBOL vmlinux 0x8eb489e1 netif_set_real_num_tx_queues +EXPORT_SYMBOL vmlinux 0x8ec04552 _raw_spin_trylock_bh +EXPORT_SYMBOL vmlinux 0x8ed09444 fb_show_logo +EXPORT_SYMBOL vmlinux 0x8eefd0a5 tcp_proc_register +EXPORT_SYMBOL vmlinux 0x8f240f09 put_tty_driver +EXPORT_SYMBOL vmlinux 0x8f248d32 inet6_release +EXPORT_SYMBOL vmlinux 0x8f24d822 __ip_select_ident +EXPORT_SYMBOL vmlinux 0x8f52e7aa param_ops_long +EXPORT_SYMBOL vmlinux 0x8f573cf2 dma_async_device_register +EXPORT_SYMBOL vmlinux 0x8f693715 capable_wrt_inode_uidgid +EXPORT_SYMBOL vmlinux 0x8f6e929c pmac_resume_agp_for_card +EXPORT_SYMBOL vmlinux 0x8f85f835 prepare_to_wait_exclusive +EXPORT_SYMBOL vmlinux 0x8faf38b2 mmc_add_host +EXPORT_SYMBOL vmlinux 0x8fbf37e0 profile_pc +EXPORT_SYMBOL vmlinux 0x8fc15bf6 iommu_tbl_range_free +EXPORT_SYMBOL vmlinux 0x8fc61c72 __netlink_kernel_create +EXPORT_SYMBOL vmlinux 0x8ffdb3b8 crc16 +EXPORT_SYMBOL vmlinux 0x90158f6d register_quota_format +EXPORT_SYMBOL vmlinux 0x901905c5 vlan_dev_vlan_proto +EXPORT_SYMBOL vmlinux 0x902aa646 alloc_anon_inode +EXPORT_SYMBOL vmlinux 0x903b6424 drop_super +EXPORT_SYMBOL vmlinux 0x9049bf89 d_find_any_alias +EXPORT_SYMBOL vmlinux 0x904be138 cpufreq_power_cooling_register +EXPORT_SYMBOL vmlinux 0x90737c70 cpufreq_generic_suspend +EXPORT_SYMBOL vmlinux 0x9092d9f1 insert_inode_locked4 +EXPORT_SYMBOL vmlinux 0x9094588b ping_prot +EXPORT_SYMBOL vmlinux 0x90adc5fe xfrm_find_acq +EXPORT_SYMBOL vmlinux 0x90b8563c tcp_v4_send_check +EXPORT_SYMBOL vmlinux 0x90c5e819 kstrtoll_from_user +EXPORT_SYMBOL vmlinux 0x90ca3427 netpoll_send_udp +EXPORT_SYMBOL vmlinux 0x90ce9cdf padata_unregister_cpumask_notifier +EXPORT_SYMBOL vmlinux 0x90f08a86 netdev_master_upper_dev_get_rcu +EXPORT_SYMBOL vmlinux 0x9103290b kill_anon_super +EXPORT_SYMBOL vmlinux 0x91071ac6 bio_uncopy_user +EXPORT_SYMBOL vmlinux 0x912557ce rtas_busy_delay +EXPORT_SYMBOL vmlinux 0x9129b13f xfrm_state_alloc +EXPORT_SYMBOL vmlinux 0x912e2fef tty_hung_up_p +EXPORT_SYMBOL vmlinux 0x912fde1b blk_mq_run_hw_queues +EXPORT_SYMBOL vmlinux 0x91463b1d kstrtos16 +EXPORT_SYMBOL vmlinux 0x915e1208 tb_ticks_per_usec +EXPORT_SYMBOL vmlinux 0x91621d6a allocate_resource +EXPORT_SYMBOL vmlinux 0x9168c033 rtas_get_sensor +EXPORT_SYMBOL vmlinux 0x916a9454 md_write_start +EXPORT_SYMBOL vmlinux 0x91715312 sprintf +EXPORT_SYMBOL vmlinux 0x91744b67 scsi_remove_target +EXPORT_SYMBOL vmlinux 0x918d7071 vme_register_driver +EXPORT_SYMBOL vmlinux 0x9195a234 skb_tx_error +EXPORT_SYMBOL vmlinux 0x919d1163 tty_termios_baud_rate +EXPORT_SYMBOL vmlinux 0x91ae1f80 devm_ioport_map +EXPORT_SYMBOL vmlinux 0x91b44460 skb_find_text +EXPORT_SYMBOL vmlinux 0x91b8c1ee md_wakeup_thread +EXPORT_SYMBOL vmlinux 0x92288b5f kernel_sendmsg +EXPORT_SYMBOL vmlinux 0x92352ee1 mipi_dsi_generic_read +EXPORT_SYMBOL vmlinux 0x923b1276 dmaengine_get +EXPORT_SYMBOL vmlinux 0x92439588 fddi_change_mtu +EXPORT_SYMBOL vmlinux 0x9250db7d netdev_boot_setup_check +EXPORT_SYMBOL vmlinux 0x926a5fc6 dm_kcopyd_zero +EXPORT_SYMBOL vmlinux 0x9285f2e8 n_tty_ioctl_helper +EXPORT_SYMBOL vmlinux 0x928e7641 generic_ro_fops +EXPORT_SYMBOL vmlinux 0x92a0a750 pci_device_from_OF_node +EXPORT_SYMBOL vmlinux 0x92a9c60c time_to_tm +EXPORT_SYMBOL vmlinux 0x92b2ab2c __netlink_ns_capable +EXPORT_SYMBOL vmlinux 0x92c8f5d6 __ww_mutex_lock_interruptible +EXPORT_SYMBOL vmlinux 0x92d1512e cdev_add +EXPORT_SYMBOL vmlinux 0x92e4d2fe flow_hash_from_keys +EXPORT_SYMBOL vmlinux 0x92f275a3 nf_reinject +EXPORT_SYMBOL vmlinux 0x92f300b0 scsi_dma_unmap +EXPORT_SYMBOL vmlinux 0x92fa5abb vme_lm_detach +EXPORT_SYMBOL vmlinux 0x9305f8e6 cpufreq_get +EXPORT_SYMBOL vmlinux 0x9309de94 cuda_request +EXPORT_SYMBOL vmlinux 0x93215e1d __kfifo_skip_r +EXPORT_SYMBOL vmlinux 0x932c4b0b sg_miter_next +EXPORT_SYMBOL vmlinux 0x9330cb9f sg_alloc_table +EXPORT_SYMBOL vmlinux 0x93448c57 screen_info +EXPORT_SYMBOL vmlinux 0x9346b44e elv_rb_find +EXPORT_SYMBOL vmlinux 0x935b74eb scsi_is_sdev_device +EXPORT_SYMBOL vmlinux 0x9364188a vm_insert_mixed +EXPORT_SYMBOL vmlinux 0x9373634c pci_get_class +EXPORT_SYMBOL vmlinux 0x937733e3 qid_valid +EXPORT_SYMBOL vmlinux 0x939cb40e reservation_object_add_excl_fence +EXPORT_SYMBOL vmlinux 0x93b3fc74 register_dcbevent_notifier +EXPORT_SYMBOL vmlinux 0x93bbfb1b sock_create_kern +EXPORT_SYMBOL vmlinux 0x93c7f9f4 dev_uc_add +EXPORT_SYMBOL vmlinux 0x93d352bd of_n_addr_cells +EXPORT_SYMBOL vmlinux 0x93e464ba tcf_em_tree_dump +EXPORT_SYMBOL vmlinux 0x93fa413f release_firmware +EXPORT_SYMBOL vmlinux 0x93fca811 __get_free_pages +EXPORT_SYMBOL vmlinux 0x9402a6a5 scsilun_to_int +EXPORT_SYMBOL vmlinux 0x940a0c96 inet_register_protosw +EXPORT_SYMBOL vmlinux 0x940a1998 msi_bitmap_alloc_hwirqs +EXPORT_SYMBOL vmlinux 0x940f9cf6 kblockd_schedule_delayed_work +EXPORT_SYMBOL vmlinux 0x94118ed8 write_cache_pages +EXPORT_SYMBOL vmlinux 0x942043d3 phy_mii_ioctl +EXPORT_SYMBOL vmlinux 0x9440d14e ppp_input +EXPORT_SYMBOL vmlinux 0x944df2b1 ilookup +EXPORT_SYMBOL vmlinux 0x944ef97c of_find_net_device_by_node +EXPORT_SYMBOL vmlinux 0x94961283 vunmap +EXPORT_SYMBOL vmlinux 0x94a74e44 PDE_DATA +EXPORT_SYMBOL vmlinux 0x94b2590f vme_free_consistent +EXPORT_SYMBOL vmlinux 0x94cbd061 dql_reset +EXPORT_SYMBOL vmlinux 0x94d77b8e jbd2_journal_begin_ordered_truncate +EXPORT_SYMBOL vmlinux 0x94eea794 getnstimeofday64 +EXPORT_SYMBOL vmlinux 0x9512c854 __skb_recv_datagram +EXPORT_SYMBOL vmlinux 0x9514151a _mcount +EXPORT_SYMBOL vmlinux 0x9518acc9 dmam_pool_create +EXPORT_SYMBOL vmlinux 0x951f99d2 seq_path +EXPORT_SYMBOL vmlinux 0x9524b0ae _outsb +EXPORT_SYMBOL vmlinux 0x9527c330 inode_reclaim_rsv_space +EXPORT_SYMBOL vmlinux 0x952a81ad agp_put_bridge +EXPORT_SYMBOL vmlinux 0x953af25a sock_kzfree_s +EXPORT_SYMBOL vmlinux 0x9545af6d tasklet_init +EXPORT_SYMBOL vmlinux 0x9552a2ab ipv6_skip_exthdr +EXPORT_SYMBOL vmlinux 0x955a9a7e devfreq_interval_update +EXPORT_SYMBOL vmlinux 0x9567883e xfrm_input_register_afinfo +EXPORT_SYMBOL vmlinux 0x958d9e5b bio_add_page +EXPORT_SYMBOL vmlinux 0x9598628c blk_queue_chunk_sectors +EXPORT_SYMBOL vmlinux 0x959beacf pci_claim_resource +EXPORT_SYMBOL vmlinux 0x95a55716 noop_fsync +EXPORT_SYMBOL vmlinux 0x95acd2ca thaw_bdev +EXPORT_SYMBOL vmlinux 0x95adb7fe serial8250_do_set_termios +EXPORT_SYMBOL vmlinux 0x95b05af4 km_query +EXPORT_SYMBOL vmlinux 0x95b0ba85 tcf_exts_validate +EXPORT_SYMBOL vmlinux 0x95bf717a audit_log +EXPORT_SYMBOL vmlinux 0x95d12d1a bio_map_kern +EXPORT_SYMBOL vmlinux 0x960dfaf5 radix_tree_tag_get +EXPORT_SYMBOL vmlinux 0x96272799 __skb_checksum_complete_head +EXPORT_SYMBOL vmlinux 0x963f41f5 vfs_writev +EXPORT_SYMBOL vmlinux 0x96573b80 __kfifo_dma_in_finish_r +EXPORT_SYMBOL vmlinux 0x9674ce8e of_parse_phandle_with_fixed_args +EXPORT_SYMBOL vmlinux 0x96770e61 kset_register +EXPORT_SYMBOL vmlinux 0x96898769 sysfs_format_mac +EXPORT_SYMBOL vmlinux 0x968b5526 iterate_supers_type +EXPORT_SYMBOL vmlinux 0x9690dca1 vfs_rmdir +EXPORT_SYMBOL vmlinux 0x96967f11 scsi_register_driver +EXPORT_SYMBOL vmlinux 0x96b85d97 pcim_enable_device +EXPORT_SYMBOL vmlinux 0x96cd2b04 scsi_sense_key_string +EXPORT_SYMBOL vmlinux 0x96dbcca2 ioremap_prot +EXPORT_SYMBOL vmlinux 0x96dce98c resource_list_create_entry +EXPORT_SYMBOL vmlinux 0x96e80fda ___pskb_trim +EXPORT_SYMBOL vmlinux 0x96ed6e48 mach_chrp +EXPORT_SYMBOL vmlinux 0x96eec7d4 dev_uc_unsync +EXPORT_SYMBOL vmlinux 0x96f0665e scm_fp_dup +EXPORT_SYMBOL vmlinux 0x96f48968 pci_scan_slot +EXPORT_SYMBOL vmlinux 0x96fdccbf fbcon_rotate_ud +EXPORT_SYMBOL vmlinux 0x9717bdd6 blk_queue_bounce +EXPORT_SYMBOL vmlinux 0x97255bdf strlen +EXPORT_SYMBOL vmlinux 0x972b0926 devm_devfreq_register_opp_notifier +EXPORT_SYMBOL vmlinux 0x9733469d ipv6_find_hdr +EXPORT_SYMBOL vmlinux 0x97388324 sock_no_shutdown +EXPORT_SYMBOL vmlinux 0x9748927f _outsw_ns +EXPORT_SYMBOL vmlinux 0x97519e08 netdev_notify_peers +EXPORT_SYMBOL vmlinux 0x97540a2b inetpeer_invalidate_tree +EXPORT_SYMBOL vmlinux 0x9754ec10 radix_tree_preload +EXPORT_SYMBOL vmlinux 0x97709765 mmc_align_data_size +EXPORT_SYMBOL vmlinux 0x977b1437 generic_make_request +EXPORT_SYMBOL vmlinux 0x97922cc6 of_find_device_by_node +EXPORT_SYMBOL vmlinux 0x97999817 rfkill_set_hw_state +EXPORT_SYMBOL vmlinux 0x97b4500c __tracepoint_kmem_cache_free +EXPORT_SYMBOL vmlinux 0x97b82024 __inode_sub_bytes +EXPORT_SYMBOL vmlinux 0x97b9b08e sock_dequeue_err_skb +EXPORT_SYMBOL vmlinux 0x97ba0bcf blk_queue_merge_bvec +EXPORT_SYMBOL vmlinux 0x97c0907d kernel_write +EXPORT_SYMBOL vmlinux 0x97c83d24 pci_set_power_state +EXPORT_SYMBOL vmlinux 0x97f28a9f blk_mq_free_tag_set +EXPORT_SYMBOL vmlinux 0x97fe42c7 register_md_personality +EXPORT_SYMBOL vmlinux 0x98004406 pcie_capability_read_word +EXPORT_SYMBOL vmlinux 0x982ef4fb blk_mq_kick_requeue_list +EXPORT_SYMBOL vmlinux 0x9860da39 d_drop +EXPORT_SYMBOL vmlinux 0x986e6135 fb_pad_unaligned_buffer +EXPORT_SYMBOL vmlinux 0x988bbee8 vme_master_request +EXPORT_SYMBOL vmlinux 0x988f1605 scsi_verify_blk_ioctl +EXPORT_SYMBOL vmlinux 0x9894e40e lock_sock_fast +EXPORT_SYMBOL vmlinux 0x989c4f75 generic_block_fiemap +EXPORT_SYMBOL vmlinux 0x98b90ab3 agp_backend_release +EXPORT_SYMBOL vmlinux 0x98c1fb17 vlan_vids_add_by_dev +EXPORT_SYMBOL vmlinux 0x98e1ff99 block_commit_write +EXPORT_SYMBOL vmlinux 0x98e68eca cancel_delayed_work +EXPORT_SYMBOL vmlinux 0x98fe7882 DMA_MODE_READ +EXPORT_SYMBOL vmlinux 0x990563e7 sb_set_blocksize +EXPORT_SYMBOL vmlinux 0x9916ccc1 security_mmap_file +EXPORT_SYMBOL vmlinux 0x99206fa4 dquot_initialize +EXPORT_SYMBOL vmlinux 0x9920f35b blk_mq_add_to_requeue_list +EXPORT_SYMBOL vmlinux 0x992b5f4c from_kprojid +EXPORT_SYMBOL vmlinux 0x9939eba0 backlight_unregister_notifier +EXPORT_SYMBOL vmlinux 0x993cf5bd kill_litter_super +EXPORT_SYMBOL vmlinux 0x99517682 udp_encap_enable +EXPORT_SYMBOL vmlinux 0x99591a7a ipv6_ext_hdr +EXPORT_SYMBOL vmlinux 0x995bf28c __nla_reserve_nohdr +EXPORT_SYMBOL vmlinux 0x99787f28 security_inode_init_security +EXPORT_SYMBOL vmlinux 0x99788f4b writeback_inodes_sb_nr +EXPORT_SYMBOL vmlinux 0x9993b7f7 find_inode_nowait +EXPORT_SYMBOL vmlinux 0x9994c0ca ps2_is_keyboard_id +EXPORT_SYMBOL vmlinux 0x999e75ba swiotlb_sync_single_for_cpu +EXPORT_SYMBOL vmlinux 0x999e8297 vfree +EXPORT_SYMBOL vmlinux 0x99a77582 agp_create_memory +EXPORT_SYMBOL vmlinux 0x99afe916 _raw_write_unlock_bh +EXPORT_SYMBOL vmlinux 0x99b38af7 pci_bus_size_bridges +EXPORT_SYMBOL vmlinux 0x99b3eeae input_mt_drop_unused +EXPORT_SYMBOL vmlinux 0x99bb41ff tty_port_open +EXPORT_SYMBOL vmlinux 0x99bb8806 memmove +EXPORT_SYMBOL vmlinux 0x99c16bbc of_graph_parse_endpoint +EXPORT_SYMBOL vmlinux 0x99c8e972 proc_set_user +EXPORT_SYMBOL vmlinux 0x99cdc86b sysctl_tcp_reordering +EXPORT_SYMBOL vmlinux 0x99d47cb1 __xfrm_decode_session +EXPORT_SYMBOL vmlinux 0x99dd830b blk_rq_map_user_iov +EXPORT_SYMBOL vmlinux 0x9a1dfd65 strpbrk +EXPORT_SYMBOL vmlinux 0x9a1fc4b4 jiffies_to_timeval +EXPORT_SYMBOL vmlinux 0x9a387cac key_unlink +EXPORT_SYMBOL vmlinux 0x9a4222b9 finish_no_open +EXPORT_SYMBOL vmlinux 0x9a8427a0 tcp_simple_retransmit +EXPORT_SYMBOL vmlinux 0x9a87cdbb flush_tlb_page +EXPORT_SYMBOL vmlinux 0x9a894df7 mmc_can_erase +EXPORT_SYMBOL vmlinux 0x9a8f984f dmam_free_noncoherent +EXPORT_SYMBOL vmlinux 0x9aa8b084 max8925_reg_read +EXPORT_SYMBOL vmlinux 0x9ab1cdab rt6_lookup +EXPORT_SYMBOL vmlinux 0x9ab48914 mipi_dsi_dcs_set_column_address +EXPORT_SYMBOL vmlinux 0x9ac73088 iterate_fd +EXPORT_SYMBOL vmlinux 0x9ae44fdc __sync_dirty_buffer +EXPORT_SYMBOL vmlinux 0x9aeb07e8 vme_lm_attach +EXPORT_SYMBOL vmlinux 0x9afd3338 pagecache_isize_extended +EXPORT_SYMBOL vmlinux 0x9b229473 truncate_pagecache_range +EXPORT_SYMBOL vmlinux 0x9b267b81 serio_open +EXPORT_SYMBOL vmlinux 0x9b33e0d7 unregister_dcbevent_notifier +EXPORT_SYMBOL vmlinux 0x9b388444 get_zeroed_page +EXPORT_SYMBOL vmlinux 0x9b5f6ded netif_napi_del +EXPORT_SYMBOL vmlinux 0x9b6eb137 ksize +EXPORT_SYMBOL vmlinux 0x9b7654c7 of_dev_put +EXPORT_SYMBOL vmlinux 0x9b7a8530 page_symlink +EXPORT_SYMBOL vmlinux 0x9b935eb6 max8925_reg_write +EXPORT_SYMBOL vmlinux 0x9b9d70a1 put_filp +EXPORT_SYMBOL vmlinux 0x9b9e05f9 alloc_cpu_rmap +EXPORT_SYMBOL vmlinux 0x9ba55882 dev_notice +EXPORT_SYMBOL vmlinux 0x9ba7089d argv_split +EXPORT_SYMBOL vmlinux 0x9bbc8d5d netdev_bonding_info_change +EXPORT_SYMBOL vmlinux 0x9bce482f __release_region +EXPORT_SYMBOL vmlinux 0x9bd93bb2 jbd2__journal_restart +EXPORT_SYMBOL vmlinux 0x9be7bde4 security_tun_dev_attach +EXPORT_SYMBOL vmlinux 0x9c306ab1 inet_confirm_addr +EXPORT_SYMBOL vmlinux 0x9c3affc4 skb_clone_sk +EXPORT_SYMBOL vmlinux 0x9c7855fe dm_kcopyd_copy +EXPORT_SYMBOL vmlinux 0x9c833f46 put_io_context +EXPORT_SYMBOL vmlinux 0x9ca90cef of_find_mipi_dsi_device_by_node +EXPORT_SYMBOL vmlinux 0x9cab34a6 rfkill_set_led_trigger_name +EXPORT_SYMBOL vmlinux 0x9cb1b8f5 vme_master_mmap +EXPORT_SYMBOL vmlinux 0x9cb92435 crypto_sha512_finup +EXPORT_SYMBOL vmlinux 0x9cd03960 param_get_ullong +EXPORT_SYMBOL vmlinux 0x9ce3f83f nvram_write_byte +EXPORT_SYMBOL vmlinux 0x9cebbbf8 __init_rwsem +EXPORT_SYMBOL vmlinux 0x9d001617 netdev_info +EXPORT_SYMBOL vmlinux 0x9d05d4d8 set_nlink +EXPORT_SYMBOL vmlinux 0x9d0d6206 unregister_netdevice_notifier +EXPORT_SYMBOL vmlinux 0x9d14983a ppc_enable_pmcs +EXPORT_SYMBOL vmlinux 0x9d3aa376 blk_iopoll_init +EXPORT_SYMBOL vmlinux 0x9d669763 memcpy +EXPORT_SYMBOL vmlinux 0x9d6a54c2 flex_array_get_ptr +EXPORT_SYMBOL vmlinux 0x9d7ce8dd _raw_spin_trylock +EXPORT_SYMBOL vmlinux 0x9d7d8fb9 xfrm_state_delete +EXPORT_SYMBOL vmlinux 0x9d810818 mmc_can_discard +EXPORT_SYMBOL vmlinux 0x9d825fd1 blk_queue_prep_rq +EXPORT_SYMBOL vmlinux 0x9d8aaad8 agp_collect_device_status +EXPORT_SYMBOL vmlinux 0x9d98454f flock_lock_inode_wait +EXPORT_SYMBOL vmlinux 0x9d9ca1a1 cdrom_release +EXPORT_SYMBOL vmlinux 0x9dbb51de xfrm6_rcv +EXPORT_SYMBOL vmlinux 0x9dddb763 security_path_symlink +EXPORT_SYMBOL vmlinux 0x9ddfc14e mmc_register_driver +EXPORT_SYMBOL vmlinux 0x9de81a52 pci_choose_state +EXPORT_SYMBOL vmlinux 0x9dfe7307 lz4_decompress_unknownoutputsize +EXPORT_SYMBOL vmlinux 0x9e01c721 scsi_cmd_get_serial +EXPORT_SYMBOL vmlinux 0x9e0c711d vzalloc_node +EXPORT_SYMBOL vmlinux 0x9e1cfc90 ioremap_wc +EXPORT_SYMBOL vmlinux 0x9e34d31e bprm_change_interp +EXPORT_SYMBOL vmlinux 0x9e4faeef dm_io_client_destroy +EXPORT_SYMBOL vmlinux 0x9e5d0787 proto_unregister +EXPORT_SYMBOL vmlinux 0x9e61bb05 set_freezable +EXPORT_SYMBOL vmlinux 0x9e672ff6 scsi_kmap_atomic_sg +EXPORT_SYMBOL vmlinux 0x9e763530 reciprocal_value +EXPORT_SYMBOL vmlinux 0x9e805e0d __inet_hash +EXPORT_SYMBOL vmlinux 0x9e97375d rtas_busy_delay_time +EXPORT_SYMBOL vmlinux 0x9ea73929 __tracepoint_fence_emit +EXPORT_SYMBOL vmlinux 0x9ec01d6b i2c_master_send +EXPORT_SYMBOL vmlinux 0x9ede21dc iw_handler_set_spy +EXPORT_SYMBOL vmlinux 0x9ee6a22c vfs_readv +EXPORT_SYMBOL vmlinux 0x9eeb1ebd bdi_register_dev +EXPORT_SYMBOL vmlinux 0x9f13873b jbd2_journal_abort +EXPORT_SYMBOL vmlinux 0x9f3ac27d unregister_console +EXPORT_SYMBOL vmlinux 0x9f46ced8 __sw_hweight64 +EXPORT_SYMBOL vmlinux 0x9f5089d2 netlink_broadcast +EXPORT_SYMBOL vmlinux 0x9f53ed3a mpage_writepage +EXPORT_SYMBOL vmlinux 0x9f911629 idr_alloc_cyclic +EXPORT_SYMBOL vmlinux 0x9f914ed1 jbd2_journal_init_dev +EXPORT_SYMBOL vmlinux 0x9f984513 strrchr +EXPORT_SYMBOL vmlinux 0x9f9a7d39 ndo_dflt_fdb_del +EXPORT_SYMBOL vmlinux 0x9fad67c4 blk_mq_start_stopped_hw_queues +EXPORT_SYMBOL vmlinux 0x9fd0bdfc dmam_alloc_coherent +EXPORT_SYMBOL vmlinux 0x9fdecc31 unregister_netdevice_many +EXPORT_SYMBOL vmlinux 0x9ffa3a75 netdev_max_backlog +EXPORT_SYMBOL vmlinux 0x9ffe0707 read_code +EXPORT_SYMBOL vmlinux 0x9ffe4680 cfb_imageblit +EXPORT_SYMBOL vmlinux 0xa0083cf8 jbd2_journal_clear_err +EXPORT_SYMBOL vmlinux 0xa03e715a inet_twsk_deschedule +EXPORT_SYMBOL vmlinux 0xa0436e98 in6addr_linklocal_allnodes +EXPORT_SYMBOL vmlinux 0xa04a01bd qdisc_class_hash_insert +EXPORT_SYMBOL vmlinux 0xa05c03df mempool_kmalloc +EXPORT_SYMBOL vmlinux 0xa06bad4c of_mdio_find_bus +EXPORT_SYMBOL vmlinux 0xa06df9e1 __kfifo_dma_out_finish_r +EXPORT_SYMBOL vmlinux 0xa07ed110 xz_dec_init +EXPORT_SYMBOL vmlinux 0xa084749a __bitmap_or +EXPORT_SYMBOL vmlinux 0xa0948015 skb_queue_purge +EXPORT_SYMBOL vmlinux 0xa0b04675 vmalloc_32 +EXPORT_SYMBOL vmlinux 0xa0dad88e netdev_adjacent_get_private +EXPORT_SYMBOL vmlinux 0xa0db945d mb_cache_entry_find_first +EXPORT_SYMBOL vmlinux 0xa0dd1c8b vfs_fsync_range +EXPORT_SYMBOL vmlinux 0xa0ebd14c sysctl_tcp_mem +EXPORT_SYMBOL vmlinux 0xa0fbac79 wake_up_bit +EXPORT_SYMBOL vmlinux 0xa108eb4d sysctl_optmem_max +EXPORT_SYMBOL vmlinux 0xa120c57e sk_common_release +EXPORT_SYMBOL vmlinux 0xa120d33c tty_unregister_ldisc +EXPORT_SYMBOL vmlinux 0xa1228ed5 scsi_track_queue_full +EXPORT_SYMBOL vmlinux 0xa1415618 twl6030_interrupt_unmask +EXPORT_SYMBOL vmlinux 0xa14d0027 neigh_event_ns +EXPORT_SYMBOL vmlinux 0xa14f3d8c ewma_add +EXPORT_SYMBOL vmlinux 0xa17ca11b ip6_expire_frag_queue +EXPORT_SYMBOL vmlinux 0xa190aec6 blk_queue_stack_limits +EXPORT_SYMBOL vmlinux 0xa19f3fe2 __ip4_datagram_connect +EXPORT_SYMBOL vmlinux 0xa1a21b25 vfs_symlink +EXPORT_SYMBOL vmlinux 0xa1adf1e3 param_get_int +EXPORT_SYMBOL vmlinux 0xa1b59f66 vme_lm_request +EXPORT_SYMBOL vmlinux 0xa1b759ce fb_add_videomode +EXPORT_SYMBOL vmlinux 0xa1bedeca pci_enable_device_io +EXPORT_SYMBOL vmlinux 0xa1c76e0a _cond_resched +EXPORT_SYMBOL vmlinux 0xa1c99385 __init_waitqueue_head +EXPORT_SYMBOL vmlinux 0xa1d22dbf pci_setup_cardbus +EXPORT_SYMBOL vmlinux 0xa1dcf118 fb_blank +EXPORT_SYMBOL vmlinux 0xa1ea3976 bdi_destroy +EXPORT_SYMBOL vmlinux 0xa1f8fe75 wait_for_completion_killable_timeout +EXPORT_SYMBOL vmlinux 0xa1f94021 of_cpufreq_power_cooling_register +EXPORT_SYMBOL vmlinux 0xa209451c bitmap_fold +EXPORT_SYMBOL vmlinux 0xa27cbf3a vfs_iter_read +EXPORT_SYMBOL vmlinux 0xa27e20a7 dump_page +EXPORT_SYMBOL vmlinux 0xa2848c50 ecryptfs_get_auth_tok_key +EXPORT_SYMBOL vmlinux 0xa28c2c3c tcp_md5_hash_key +EXPORT_SYMBOL vmlinux 0xa292847e xfrm_unregister_type +EXPORT_SYMBOL vmlinux 0xa29c57da xfrm_alloc_spi +EXPORT_SYMBOL vmlinux 0xa2ad0eca generic_file_splice_read +EXPORT_SYMBOL vmlinux 0xa2b2adf6 flow_cache_lookup +EXPORT_SYMBOL vmlinux 0xa2bbed37 crash_shutdown_register +EXPORT_SYMBOL vmlinux 0xa2f9f85e __serio_register_port +EXPORT_SYMBOL vmlinux 0xa2fdbcbe fence_default_wait +EXPORT_SYMBOL vmlinux 0xa2fe397d dquot_disable +EXPORT_SYMBOL vmlinux 0xa2fe8723 macio_release_resources +EXPORT_SYMBOL vmlinux 0xa303d1ff dm_ratelimit_state +EXPORT_SYMBOL vmlinux 0xa31bdf07 vme_master_set +EXPORT_SYMBOL vmlinux 0xa333bc49 ip_defrag +EXPORT_SYMBOL vmlinux 0xa352bbc5 starget_for_each_device +EXPORT_SYMBOL vmlinux 0xa3637a0f pcim_iomap_table +EXPORT_SYMBOL vmlinux 0xa380ffd9 eth_validate_addr +EXPORT_SYMBOL vmlinux 0xa38a38e0 arp_send +EXPORT_SYMBOL vmlinux 0xa38e691a ioremap_bot +EXPORT_SYMBOL vmlinux 0xa39b4cf2 udelay +EXPORT_SYMBOL vmlinux 0xa3abc422 abort_exclusive_wait +EXPORT_SYMBOL vmlinux 0xa3af9ab0 softnet_data +EXPORT_SYMBOL vmlinux 0xa3c4e0a2 tty_port_close_end +EXPORT_SYMBOL vmlinux 0xa3d8c730 netif_carrier_off +EXPORT_SYMBOL vmlinux 0xa3e75545 flush_tlb_kernel_range +EXPORT_SYMBOL vmlinux 0xa3efb541 gro_find_complete_by_type +EXPORT_SYMBOL vmlinux 0xa4046fd7 buffer_migrate_page +EXPORT_SYMBOL vmlinux 0xa417302d phy_connect_direct +EXPORT_SYMBOL vmlinux 0xa42318cf set_create_files_as +EXPORT_SYMBOL vmlinux 0xa42a359a udp_push_pending_frames +EXPORT_SYMBOL vmlinux 0xa43606a0 pm860x_reg_write +EXPORT_SYMBOL vmlinux 0xa439ecc2 security_inode_listsecurity +EXPORT_SYMBOL vmlinux 0xa43b1297 vscnprintf +EXPORT_SYMBOL vmlinux 0xa43e234e mb_cache_entry_release +EXPORT_SYMBOL vmlinux 0xa44cae27 elevator_alloc +EXPORT_SYMBOL vmlinux 0xa455e563 nf_unregister_hook +EXPORT_SYMBOL vmlinux 0xa4701e9e timekeeping_inject_offset +EXPORT_SYMBOL vmlinux 0xa4958219 ip6_dst_hoplimit +EXPORT_SYMBOL vmlinux 0xa4a94d26 find_next_bit_le +EXPORT_SYMBOL vmlinux 0xa4b45ea5 out_of_line_wait_on_bit_lock +EXPORT_SYMBOL vmlinux 0xa4b94fea iowrite8_rep +EXPORT_SYMBOL vmlinux 0xa4c0779f tcf_action_dump_1 +EXPORT_SYMBOL vmlinux 0xa4c10119 pci_remove_bus +EXPORT_SYMBOL vmlinux 0xa4c1fa68 skb_checksum_setup +EXPORT_SYMBOL vmlinux 0xa4d4f0e6 global_cache_flush +EXPORT_SYMBOL vmlinux 0xa4e7e358 pci_find_capability +EXPORT_SYMBOL vmlinux 0xa4fcc772 posix_acl_from_xattr +EXPORT_SYMBOL vmlinux 0xa50ce7b1 blkdev_get +EXPORT_SYMBOL vmlinux 0xa52c2317 __lock_page +EXPORT_SYMBOL vmlinux 0xa5526619 rb_insert_color +EXPORT_SYMBOL vmlinux 0xa55d26aa note_scsi_host +EXPORT_SYMBOL vmlinux 0xa55e0a46 mmc_get_card +EXPORT_SYMBOL vmlinux 0xa56b8ab2 flex_array_free +EXPORT_SYMBOL vmlinux 0xa5732b51 clocksource_unregister +EXPORT_SYMBOL vmlinux 0xa574fecc netdev_class_remove_file_ns +EXPORT_SYMBOL vmlinux 0xa5889f2d kmem_cache_size +EXPORT_SYMBOL vmlinux 0xa598e29c vesa_modes +EXPORT_SYMBOL vmlinux 0xa5a633b9 sg_last +EXPORT_SYMBOL vmlinux 0xa5ac6e4f param_set_copystring +EXPORT_SYMBOL vmlinux 0xa5c0363e genphy_aneg_done +EXPORT_SYMBOL vmlinux 0xa5cef8ad release_resource +EXPORT_SYMBOL vmlinux 0xa5dd2a75 jbd2_journal_forget +EXPORT_SYMBOL vmlinux 0xa5e57b28 jbd2_journal_unlock_updates +EXPORT_SYMBOL vmlinux 0xa6135b8b thaw_super +EXPORT_SYMBOL vmlinux 0xa6260c17 param_ops_uint +EXPORT_SYMBOL vmlinux 0xa62652a2 dst_alloc +EXPORT_SYMBOL vmlinux 0xa6359e0b free_buffer_head +EXPORT_SYMBOL vmlinux 0xa652c4ef __kfifo_dma_in_prepare_r +EXPORT_SYMBOL vmlinux 0xa65972b8 _memcpy_toio +EXPORT_SYMBOL vmlinux 0xa65df403 iget5_locked +EXPORT_SYMBOL vmlinux 0xa6603dfb mmc_gpiod_request_ro +EXPORT_SYMBOL vmlinux 0xa675804c utf8s_to_utf16s +EXPORT_SYMBOL vmlinux 0xa675ed14 kmem_cache_alloc +EXPORT_SYMBOL vmlinux 0xa681fe88 generate_random_uuid +EXPORT_SYMBOL vmlinux 0xa68b703b mapping_tagged +EXPORT_SYMBOL vmlinux 0xa6970398 __kfifo_to_user_r +EXPORT_SYMBOL vmlinux 0xa6a63072 __dst_destroy_metrics_generic +EXPORT_SYMBOL vmlinux 0xa6c5aaa3 init_net +EXPORT_SYMBOL vmlinux 0xa6cab542 i2c_master_recv +EXPORT_SYMBOL vmlinux 0xa6cb7e3c zpool_unregister_driver +EXPORT_SYMBOL vmlinux 0xa6f5f467 of_get_next_parent +EXPORT_SYMBOL vmlinux 0xa6ffec60 woken_wake_function +EXPORT_SYMBOL vmlinux 0xa71507fb blk_fetch_request +EXPORT_SYMBOL vmlinux 0xa72005bd __xfrm_init_state +EXPORT_SYMBOL vmlinux 0xa720678c lg_global_lock +EXPORT_SYMBOL vmlinux 0xa7262b8e neigh_direct_output +EXPORT_SYMBOL vmlinux 0xa735db59 prandom_u32 +EXPORT_SYMBOL vmlinux 0xa742d611 mmc_erase +EXPORT_SYMBOL vmlinux 0xa749b491 devm_devfreq_add_device +EXPORT_SYMBOL vmlinux 0xa74f4e9b ida_simple_get +EXPORT_SYMBOL vmlinux 0xa78d9eb7 slhc_uncompress +EXPORT_SYMBOL vmlinux 0xa78e5f3c tty_insert_flip_string_fixed_flag +EXPORT_SYMBOL vmlinux 0xa7a9054b sdev_prefix_printk +EXPORT_SYMBOL vmlinux 0xa7c1389a pcix_set_mmrbc +EXPORT_SYMBOL vmlinux 0xa7d0a3e0 sock_from_file +EXPORT_SYMBOL vmlinux 0xa7da0396 kern_unmount +EXPORT_SYMBOL vmlinux 0xa7f19466 sock_wfree +EXPORT_SYMBOL vmlinux 0xa8044167 __set_page_dirty_nobuffers +EXPORT_SYMBOL vmlinux 0xa80b2d58 inet_sock_destruct +EXPORT_SYMBOL vmlinux 0xa81b2f0a simple_fill_super +EXPORT_SYMBOL vmlinux 0xa81d2137 phy_register_fixup_for_id +EXPORT_SYMBOL vmlinux 0xa8232c78 strtobool +EXPORT_SYMBOL vmlinux 0xa8253b27 generic_permission +EXPORT_SYMBOL vmlinux 0xa843805a get_unused_fd_flags +EXPORT_SYMBOL vmlinux 0xa85269df mutex_lock_killable +EXPORT_SYMBOL vmlinux 0xa85e39e4 tty_unregister_driver +EXPORT_SYMBOL vmlinux 0xa861ab6e __ioremap +EXPORT_SYMBOL vmlinux 0xa8721b97 system_state +EXPORT_SYMBOL vmlinux 0xa87d8fd0 jbd2_journal_get_write_access +EXPORT_SYMBOL vmlinux 0xa87f3924 inet_sendpage +EXPORT_SYMBOL vmlinux 0xa88bf9a9 pci_read_vpd +EXPORT_SYMBOL vmlinux 0xa89464b7 __ashldi3 +EXPORT_SYMBOL vmlinux 0xa89eb677 dev_get_nest_level +EXPORT_SYMBOL vmlinux 0xa8b44eb7 qdisc_tree_decrease_qlen +EXPORT_SYMBOL vmlinux 0xa8d94430 dma_async_tx_descriptor_init +EXPORT_SYMBOL vmlinux 0xa8f256eb dm_kobject_release +EXPORT_SYMBOL vmlinux 0xa8fef7bb security_unix_may_send +EXPORT_SYMBOL vmlinux 0xa90339fc send_sig +EXPORT_SYMBOL vmlinux 0xa90b235f vfs_iter_write +EXPORT_SYMBOL vmlinux 0xa9146e6e scsi_cmd_ioctl +EXPORT_SYMBOL vmlinux 0xa915b1aa lru_cache_add_file +EXPORT_SYMBOL vmlinux 0xa9168676 xmit_recursion +EXPORT_SYMBOL vmlinux 0xa9273e1a epapr_hypercall_start +EXPORT_SYMBOL vmlinux 0xa93913d0 iov_iter_kvec +EXPORT_SYMBOL vmlinux 0xa944e841 free_task +EXPORT_SYMBOL vmlinux 0xa9571d6d DMA_MODE_WRITE +EXPORT_SYMBOL vmlinux 0xa9595679 skb_clone +EXPORT_SYMBOL vmlinux 0xa95bc948 d_path +EXPORT_SYMBOL vmlinux 0xa976957d bitmap_remap +EXPORT_SYMBOL vmlinux 0xa983e4bf mipi_dsi_dcs_write_buffer +EXPORT_SYMBOL vmlinux 0xa98aee7b ppp_register_compressor +EXPORT_SYMBOL vmlinux 0xa9a9b0b8 d_obtain_root +EXPORT_SYMBOL vmlinux 0xa9af5b29 d_invalidate +EXPORT_SYMBOL vmlinux 0xa9afc865 __inc_zone_page_state +EXPORT_SYMBOL vmlinux 0xa9b0bf46 sk_stream_write_space +EXPORT_SYMBOL vmlinux 0xa9bb7ee1 inet6_register_protosw +EXPORT_SYMBOL vmlinux 0xa9c63b69 security_xfrm_policy_free +EXPORT_SYMBOL vmlinux 0xa9d29a46 inode_init_always +EXPORT_SYMBOL vmlinux 0xa9dab9e3 vme_dma_list_free +EXPORT_SYMBOL vmlinux 0xa9dabefb phy_write_mmd_indirect +EXPORT_SYMBOL vmlinux 0xa9f60e3c lock_rename +EXPORT_SYMBOL vmlinux 0xaa11e9f8 blk_queue_end_tag +EXPORT_SYMBOL vmlinux 0xaa287b51 mipi_dsi_driver_unregister +EXPORT_SYMBOL vmlinux 0xaa29534d input_unregister_device +EXPORT_SYMBOL vmlinux 0xaa2ff2fb write_one_page +EXPORT_SYMBOL vmlinux 0xaa33fb67 tcp_setsockopt +EXPORT_SYMBOL vmlinux 0xaa34755f abx500_set_register_interruptible +EXPORT_SYMBOL vmlinux 0xaa3a3c62 sock_init_data +EXPORT_SYMBOL vmlinux 0xaa46e87e lg_local_unlock +EXPORT_SYMBOL vmlinux 0xaa4df512 pmu_batteries +EXPORT_SYMBOL vmlinux 0xaa6901ac __kfifo_out_r +EXPORT_SYMBOL vmlinux 0xaa6e4df5 _raw_write_lock_irqsave +EXPORT_SYMBOL vmlinux 0xaa6f23ad rfkill_get_led_trigger_name +EXPORT_SYMBOL vmlinux 0xaac804ef udp_proc_unregister +EXPORT_SYMBOL vmlinux 0xaad0ae78 __bitmap_shift_right +EXPORT_SYMBOL vmlinux 0xaad6d92f rfkill_init_sw_state +EXPORT_SYMBOL vmlinux 0xaadaa3c7 trace_print_flags_seq +EXPORT_SYMBOL vmlinux 0xaaeada16 blk_queue_resize_tags +EXPORT_SYMBOL vmlinux 0xaafdc258 strcasecmp +EXPORT_SYMBOL vmlinux 0xab077ed2 iov_iter_npages +EXPORT_SYMBOL vmlinux 0xab14a530 nf_register_hooks +EXPORT_SYMBOL vmlinux 0xab161f07 seq_vprintf +EXPORT_SYMBOL vmlinux 0xab214ea1 jbd2_journal_start_commit +EXPORT_SYMBOL vmlinux 0xab261f4c blk_mq_abort_requeue_list +EXPORT_SYMBOL vmlinux 0xab2c1e53 ip_mc_leave_group +EXPORT_SYMBOL vmlinux 0xab366315 jbd2_journal_restart +EXPORT_SYMBOL vmlinux 0xab609984 tcp_v4_syn_recv_sock +EXPORT_SYMBOL vmlinux 0xab685183 neigh_sysctl_register +EXPORT_SYMBOL vmlinux 0xab694444 bsearch +EXPORT_SYMBOL vmlinux 0xab6bde28 sysctl_max_syn_backlog +EXPORT_SYMBOL vmlinux 0xab6f1372 of_get_mac_address +EXPORT_SYMBOL vmlinux 0xab758123 fsnotify_get_group +EXPORT_SYMBOL vmlinux 0xab781570 fb_get_options +EXPORT_SYMBOL vmlinux 0xab935d8e submit_bio_wait +EXPORT_SYMBOL vmlinux 0xaba3ad0c radix_tree_gang_lookup_tag +EXPORT_SYMBOL vmlinux 0xabae2fc6 __wait_on_bit +EXPORT_SYMBOL vmlinux 0xabc59b67 generic_file_mmap +EXPORT_SYMBOL vmlinux 0xabc6dd63 cpufreq_sysfs_create_file +EXPORT_SYMBOL vmlinux 0xabcaa577 free_anon_bdev +EXPORT_SYMBOL vmlinux 0xabcebf46 dev_open +EXPORT_SYMBOL vmlinux 0xabe0ae4f skb_get_hash_perturb +EXPORT_SYMBOL vmlinux 0xabe98791 xfrm_policy_unregister_afinfo +EXPORT_SYMBOL vmlinux 0xabfcb4c3 flush_delayed_work +EXPORT_SYMBOL vmlinux 0xac0ba8c1 blk_iopoll_disable +EXPORT_SYMBOL vmlinux 0xac1a55be unregister_reboot_notifier +EXPORT_SYMBOL vmlinux 0xac1f40a8 xfrm_init_replay +EXPORT_SYMBOL vmlinux 0xac26b820 _raw_write_lock +EXPORT_SYMBOL vmlinux 0xac2c66a1 sk_net_capable +EXPORT_SYMBOL vmlinux 0xac33ec8f ata_scsi_cmd_error_handler +EXPORT_SYMBOL vmlinux 0xac4cc1bc lockref_mark_dead +EXPORT_SYMBOL vmlinux 0xac6b7ce5 input_set_abs_params +EXPORT_SYMBOL vmlinux 0xac9536b0 setup_new_exec +EXPORT_SYMBOL vmlinux 0xac9909c0 iterate_mounts +EXPORT_SYMBOL vmlinux 0xaca66241 insert_inode_locked +EXPORT_SYMBOL vmlinux 0xacab29b7 seq_hlist_start_percpu +EXPORT_SYMBOL vmlinux 0xacbf4811 crypto_sha1_update +EXPORT_SYMBOL vmlinux 0xacc099a3 noop_qdisc +EXPORT_SYMBOL vmlinux 0xacc5b5d2 csum_ipv6_magic +EXPORT_SYMBOL vmlinux 0xacc8746d blk_queue_softirq_done +EXPORT_SYMBOL vmlinux 0xaccabc6a in4_pton +EXPORT_SYMBOL vmlinux 0xacd81eb3 jbd2_inode_cache +EXPORT_SYMBOL vmlinux 0xacdc7563 kfree_skb_list +EXPORT_SYMBOL vmlinux 0xacf4d843 match_strdup +EXPORT_SYMBOL vmlinux 0xad0413d4 match_hex +EXPORT_SYMBOL vmlinux 0xad0fefb8 may_umount +EXPORT_SYMBOL vmlinux 0xad3388fc skb_add_rx_frag +EXPORT_SYMBOL vmlinux 0xad50cebb i8253_lock +EXPORT_SYMBOL vmlinux 0xad572671 netdev_lower_get_next +EXPORT_SYMBOL vmlinux 0xad5ccaa0 dma_common_mmap +EXPORT_SYMBOL vmlinux 0xad67abf4 scsi_device_get +EXPORT_SYMBOL vmlinux 0xad7cfe34 devm_request_resource +EXPORT_SYMBOL vmlinux 0xad7fdbad key_type_keyring +EXPORT_SYMBOL vmlinux 0xad8460dd filemap_write_and_wait +EXPORT_SYMBOL vmlinux 0xad84bef8 dm_table_event +EXPORT_SYMBOL vmlinux 0xad9dffbc dev_crit +EXPORT_SYMBOL vmlinux 0xada8efff dev_emerg +EXPORT_SYMBOL vmlinux 0xadc62d1a nf_log_unbind_pf +EXPORT_SYMBOL vmlinux 0xaddd4770 __debugger_iabr_match +EXPORT_SYMBOL vmlinux 0xade1ae76 padata_do_serial +EXPORT_SYMBOL vmlinux 0xadec675a dquot_get_state +EXPORT_SYMBOL vmlinux 0xadf42bd5 __request_region +EXPORT_SYMBOL vmlinux 0xadfdfcef __bitmap_andnot +EXPORT_SYMBOL vmlinux 0xae1e216c vme_bus_num +EXPORT_SYMBOL vmlinux 0xae239ed8 irq_set_chip +EXPORT_SYMBOL vmlinux 0xae358236 fence_signal +EXPORT_SYMBOL vmlinux 0xae37f8fb netdev_emerg +EXPORT_SYMBOL vmlinux 0xae4379fe mipi_dsi_dcs_get_power_mode +EXPORT_SYMBOL vmlinux 0xae545f06 _raw_write_unlock_irqrestore +EXPORT_SYMBOL vmlinux 0xae729e59 security_req_classify_flow +EXPORT_SYMBOL vmlinux 0xae77a595 radix_tree_gang_lookup_slot +EXPORT_SYMBOL vmlinux 0xae7aa3a1 kobject_put +EXPORT_SYMBOL vmlinux 0xae85286f pcie_capability_clear_and_set_dword +EXPORT_SYMBOL vmlinux 0xae85a27e radix_tree_lookup +EXPORT_SYMBOL vmlinux 0xae9548e4 devfreq_unregister_opp_notifier +EXPORT_SYMBOL vmlinux 0xaea22a0f pci_scan_single_device +EXPORT_SYMBOL vmlinux 0xaead52ad dev_mc_unsync +EXPORT_SYMBOL vmlinux 0xaec655c7 alloc_pages_exact +EXPORT_SYMBOL vmlinux 0xaed28c58 __i2c_transfer +EXPORT_SYMBOL vmlinux 0xaefa8e10 scsi_eh_prep_cmnd +EXPORT_SYMBOL vmlinux 0xaefc67c3 nosteal_pipe_buf_ops +EXPORT_SYMBOL vmlinux 0xaf000e79 scsi_cmd_blk_ioctl +EXPORT_SYMBOL vmlinux 0xaf063510 _raw_spin_lock_bh +EXPORT_SYMBOL vmlinux 0xaf0b81c2 lockref_get_or_lock +EXPORT_SYMBOL vmlinux 0xaf1fb5da nf_ct_attach +EXPORT_SYMBOL vmlinux 0xaf2d872c prepare_to_wait +EXPORT_SYMBOL vmlinux 0xaf35ac99 cros_ec_check_result +EXPORT_SYMBOL vmlinux 0xaf3dd7dc scsi_logging_level +EXPORT_SYMBOL vmlinux 0xaf434132 rtnl_create_link +EXPORT_SYMBOL vmlinux 0xaf60b74a led_update_brightness +EXPORT_SYMBOL vmlinux 0xaf9340a7 tcf_hash_new_index +EXPORT_SYMBOL vmlinux 0xafccaca5 tty_kref_put +EXPORT_SYMBOL vmlinux 0xafe8ac67 mmc_gpio_request_ro +EXPORT_SYMBOL vmlinux 0xafff3d1d mempool_alloc +EXPORT_SYMBOL vmlinux 0xb012343c end_buffer_read_sync +EXPORT_SYMBOL vmlinux 0xb019ab0c sock_register +EXPORT_SYMBOL vmlinux 0xb02de3aa d_lookup +EXPORT_SYMBOL vmlinux 0xb04241b4 ida_simple_remove +EXPORT_SYMBOL vmlinux 0xb0432e03 km_policy_expired +EXPORT_SYMBOL vmlinux 0xb050d277 vga_set_legacy_decoding +EXPORT_SYMBOL vmlinux 0xb054f0e4 pci_bus_read_config_word +EXPORT_SYMBOL vmlinux 0xb05fc310 sysctl_rmem_max +EXPORT_SYMBOL vmlinux 0xb061e5f3 block_invalidatepage +EXPORT_SYMBOL vmlinux 0xb089c6c6 check_disk_change +EXPORT_SYMBOL vmlinux 0xb0a0da0c rational_best_approximation +EXPORT_SYMBOL vmlinux 0xb0a2775d sock_no_setsockopt +EXPORT_SYMBOL vmlinux 0xb0a445d0 add_random_ready_callback +EXPORT_SYMBOL vmlinux 0xb0a46d73 dquot_set_dqblk +EXPORT_SYMBOL vmlinux 0xb0a8fd18 neigh_changeaddr +EXPORT_SYMBOL vmlinux 0xb0b3b0c4 register_filesystem +EXPORT_SYMBOL vmlinux 0xb0e10781 get_option +EXPORT_SYMBOL vmlinux 0xb1020b8c unregister_qdisc +EXPORT_SYMBOL vmlinux 0xb12cbacb fb_unregister_client +EXPORT_SYMBOL vmlinux 0xb138a784 iov_iter_fault_in_multipages_readable +EXPORT_SYMBOL vmlinux 0xb13b09c2 inet_del_protocol +EXPORT_SYMBOL vmlinux 0xb14f1eb5 tcp_proc_unregister +EXPORT_SYMBOL vmlinux 0xb15287a2 dev_remove_pack +EXPORT_SYMBOL vmlinux 0xb15bd8fa tb_ticks_per_sec +EXPORT_SYMBOL vmlinux 0xb15cb614 security_xfrm_policy_alloc +EXPORT_SYMBOL vmlinux 0xb167a51a d_set_fallthru +EXPORT_SYMBOL vmlinux 0xb16ec2b9 devfreq_monitor_suspend +EXPORT_SYMBOL vmlinux 0xb172ad4b ipv6_push_nfrag_opts +EXPORT_SYMBOL vmlinux 0xb1747c80 dev_getfirstbyhwtype +EXPORT_SYMBOL vmlinux 0xb198b3ca of_root +EXPORT_SYMBOL vmlinux 0xb1a57a56 decrementer_clockevent +EXPORT_SYMBOL vmlinux 0xb1c3a01a oops_in_progress +EXPORT_SYMBOL vmlinux 0xb1c6e787 wait_for_completion_timeout +EXPORT_SYMBOL vmlinux 0xb1cf44df fb_find_best_mode +EXPORT_SYMBOL vmlinux 0xb1ef4055 vfs_getattr_nosec +EXPORT_SYMBOL vmlinux 0xb1f2d543 kernel_listen +EXPORT_SYMBOL vmlinux 0xb1fade17 of_find_i2c_device_by_node +EXPORT_SYMBOL vmlinux 0xb2137acc tty_lock +EXPORT_SYMBOL vmlinux 0xb21bda0d mipi_dsi_host_register +EXPORT_SYMBOL vmlinux 0xb223a90e filemap_flush +EXPORT_SYMBOL vmlinux 0xb233762c atomic64_set +EXPORT_SYMBOL vmlinux 0xb2635a19 sk_wait_data +EXPORT_SYMBOL vmlinux 0xb2655467 devfreq_add_device +EXPORT_SYMBOL vmlinux 0xb2682405 utf8_to_utf32 +EXPORT_SYMBOL vmlinux 0xb2702120 pci_bus_type +EXPORT_SYMBOL vmlinux 0xb28559ad dev_get_iflink +EXPORT_SYMBOL vmlinux 0xb2b85793 page_readlink +EXPORT_SYMBOL vmlinux 0xb2be6e92 netdev_stats_to_stats64 +EXPORT_SYMBOL vmlinux 0xb2c98692 blk_peek_request +EXPORT_SYMBOL vmlinux 0xb2d48a2e queue_work_on +EXPORT_SYMBOL vmlinux 0xb2ec142c netdev_upper_get_next_dev_rcu +EXPORT_SYMBOL vmlinux 0xb2eef469 ww_mutex_unlock +EXPORT_SYMBOL vmlinux 0xb306a2b4 init_special_inode +EXPORT_SYMBOL vmlinux 0xb3170b3b md_unregister_thread +EXPORT_SYMBOL vmlinux 0xb319fd41 genphy_config_aneg +EXPORT_SYMBOL vmlinux 0xb31fde44 sock_wmalloc +EXPORT_SYMBOL vmlinux 0xb32d7b7e radix_tree_tagged +EXPORT_SYMBOL vmlinux 0xb3382494 fence_signal_locked +EXPORT_SYMBOL vmlinux 0xb34c721f scsi_init_io +EXPORT_SYMBOL vmlinux 0xb3514393 page_cache_next_hole +EXPORT_SYMBOL vmlinux 0xb3539667 unregister_md_personality +EXPORT_SYMBOL vmlinux 0xb3552257 cdrom_ioctl +EXPORT_SYMBOL vmlinux 0xb3ccfdc5 nf_log_unregister +EXPORT_SYMBOL vmlinux 0xb3cf5be8 bdevname +EXPORT_SYMBOL vmlinux 0xb3d2c76d scsi_hostbyte_string +EXPORT_SYMBOL vmlinux 0xb3da6c67 blk_queue_dma_pad +EXPORT_SYMBOL vmlinux 0xb3e01bb6 ip_cmsg_recv_offset +EXPORT_SYMBOL vmlinux 0xb3eea09c alloc_skb_with_frags +EXPORT_SYMBOL vmlinux 0xb3f7646e kthread_should_stop +EXPORT_SYMBOL vmlinux 0xb40fe6ce sched_autogroup_create_attach +EXPORT_SYMBOL vmlinux 0xb423dba1 console_blanked +EXPORT_SYMBOL vmlinux 0xb4305fac start_tty +EXPORT_SYMBOL vmlinux 0xb43aa9b3 of_graph_get_endpoint_by_regs +EXPORT_SYMBOL vmlinux 0xb4519a8f string_escape_mem +EXPORT_SYMBOL vmlinux 0xb466ecb5 dev_graft_qdisc +EXPORT_SYMBOL vmlinux 0xb46c104e sock_alloc_file +EXPORT_SYMBOL vmlinux 0xb4707161 mmc_release_host +EXPORT_SYMBOL vmlinux 0xb4709322 scsi_dev_info_add_list +EXPORT_SYMBOL vmlinux 0xb4744e5a nf_log_bind_pf +EXPORT_SYMBOL vmlinux 0xb481ce98 jbd2_journal_check_available_features +EXPORT_SYMBOL vmlinux 0xb486764f scm_detach_fds +EXPORT_SYMBOL vmlinux 0xb49c1041 tcp_ioctl +EXPORT_SYMBOL vmlinux 0xb4c4e3bd netlink_ack +EXPORT_SYMBOL vmlinux 0xb4cc7bff param_ops_ulong +EXPORT_SYMBOL vmlinux 0xb4ff1cc7 __inet6_lookup_established +EXPORT_SYMBOL vmlinux 0xb518980e get_task_io_context +EXPORT_SYMBOL vmlinux 0xb5211344 giveup_altivec +EXPORT_SYMBOL vmlinux 0xb53a4336 kmap_pte +EXPORT_SYMBOL vmlinux 0xb57343c2 frontswap_shrink +EXPORT_SYMBOL vmlinux 0xb59e3eea d_add_ci +EXPORT_SYMBOL vmlinux 0xb5a459dc unregister_blkdev +EXPORT_SYMBOL vmlinux 0xb5aa7165 dma_pool_destroy +EXPORT_SYMBOL vmlinux 0xb5af42a8 unregister_binfmt +EXPORT_SYMBOL vmlinux 0xb5d9454c printk_emit +EXPORT_SYMBOL vmlinux 0xb5e1eb59 mipi_dsi_set_maximum_return_packet_size +EXPORT_SYMBOL vmlinux 0xb5ffa36d dev_get_by_index +EXPORT_SYMBOL vmlinux 0xb63e426e skb_append_datato_frags +EXPORT_SYMBOL vmlinux 0xb645c6d6 copy_strings_kernel +EXPORT_SYMBOL vmlinux 0xb65858e9 create_empty_buffers +EXPORT_SYMBOL vmlinux 0xb65e7799 gnet_stats_start_copy_compat +EXPORT_SYMBOL vmlinux 0xb678366f int_sqrt +EXPORT_SYMBOL vmlinux 0xb686cd1b __cleancache_invalidate_inode +EXPORT_SYMBOL vmlinux 0xb6896671 crc_t10dif +EXPORT_SYMBOL vmlinux 0xb6936ffe _bcd2bin +EXPORT_SYMBOL vmlinux 0xb698d1a2 sock_rfree +EXPORT_SYMBOL vmlinux 0xb6a4fb67 phy_suspend +EXPORT_SYMBOL vmlinux 0xb6a68816 find_last_bit +EXPORT_SYMBOL vmlinux 0xb6b5de23 nf_log_unset +EXPORT_SYMBOL vmlinux 0xb6e2d67c of_mdio_parse_addr +EXPORT_SYMBOL vmlinux 0xb713c917 dev_queue_xmit_sk +EXPORT_SYMBOL vmlinux 0xb7195ad9 serio_reconnect +EXPORT_SYMBOL vmlinux 0xb72a4032 user_path_create +EXPORT_SYMBOL vmlinux 0xb7437a91 xfrm_policy_byid +EXPORT_SYMBOL vmlinux 0xb7488905 scsi_normalize_sense +EXPORT_SYMBOL vmlinux 0xb753bcc8 __ashrdi3 +EXPORT_SYMBOL vmlinux 0xb760a588 bio_unmap_user +EXPORT_SYMBOL vmlinux 0xb767384c i2c_smbus_write_word_data +EXPORT_SYMBOL vmlinux 0xb77131b1 psched_ratecfg_precompute +EXPORT_SYMBOL vmlinux 0xb7745bc0 generic_pipe_buf_steal +EXPORT_SYMBOL vmlinux 0xb77dcf30 con_set_default_unimap +EXPORT_SYMBOL vmlinux 0xb787699e generic_splice_sendpage +EXPORT_SYMBOL vmlinux 0xb798ad96 mark_buffer_dirty_inode +EXPORT_SYMBOL vmlinux 0xb798c1fa blk_queue_update_dma_alignment +EXPORT_SYMBOL vmlinux 0xb79a4e1a store_fp_state +EXPORT_SYMBOL vmlinux 0xb79ec15d mipi_dsi_create_packet +EXPORT_SYMBOL vmlinux 0xb7a99781 __irq_regs +EXPORT_SYMBOL vmlinux 0xb7ab062c kernel_sock_ioctl +EXPORT_SYMBOL vmlinux 0xb7bf5cd8 genphy_setup_forced +EXPORT_SYMBOL vmlinux 0xb7e2c970 dquot_release +EXPORT_SYMBOL vmlinux 0xb81960ca snprintf +EXPORT_SYMBOL vmlinux 0xb833c7bd bio_integrity_add_page +EXPORT_SYMBOL vmlinux 0xb8406f7f unregister_quota_format +EXPORT_SYMBOL vmlinux 0xb859e4f8 netif_device_detach +EXPORT_SYMBOL vmlinux 0xb87052b1 xfrm_state_update +EXPORT_SYMBOL vmlinux 0xb874b87a __clzsi2 +EXPORT_SYMBOL vmlinux 0xb87da3b9 module_layout +EXPORT_SYMBOL vmlinux 0xb89218f0 pci_set_mwi +EXPORT_SYMBOL vmlinux 0xb8963543 add_disk +EXPORT_SYMBOL vmlinux 0xb8af3007 touch_buffer +EXPORT_SYMBOL vmlinux 0xb8ba4a4d gen_new_estimator +EXPORT_SYMBOL vmlinux 0xb8e877e7 kstrtouint_from_user +EXPORT_SYMBOL vmlinux 0xb9330fed tcf_hash_destroy +EXPORT_SYMBOL vmlinux 0xb9338f64 sync_mapping_buffers +EXPORT_SYMBOL vmlinux 0xb9547c9a buffer_check_dirty_writeback +EXPORT_SYMBOL vmlinux 0xb95e0a90 dev_mc_del +EXPORT_SYMBOL vmlinux 0xb974b071 dcache_dir_close +EXPORT_SYMBOL vmlinux 0xb979f549 nf_afinfo +EXPORT_SYMBOL vmlinux 0xb97cde29 registered_fb +EXPORT_SYMBOL vmlinux 0xb97fbda5 tty_port_lower_dtr_rts +EXPORT_SYMBOL vmlinux 0xb98d1e65 __inode_permission +EXPORT_SYMBOL vmlinux 0xb9a02da2 dcb_getapp +EXPORT_SYMBOL vmlinux 0xb9ad2386 input_event +EXPORT_SYMBOL vmlinux 0xb9b0c734 phy_ethtool_get_eee +EXPORT_SYMBOL vmlinux 0xb9b4376c mmc_can_sanitize +EXPORT_SYMBOL vmlinux 0xb9c8db01 netdev_state_change +EXPORT_SYMBOL vmlinux 0xb9c92373 pci_restore_state +EXPORT_SYMBOL vmlinux 0xb9d2a90f twl6040_get_sysclk +EXPORT_SYMBOL vmlinux 0xb9de2187 inet_csk_init_xmit_timers +EXPORT_SYMBOL vmlinux 0xb9e7df50 xfrm_state_register_afinfo +EXPORT_SYMBOL vmlinux 0xb9e8e2cc in6addr_sitelocal_allrouters +EXPORT_SYMBOL vmlinux 0xb9ffa514 copy_from_iter_nocache +EXPORT_SYMBOL vmlinux 0xba23e86c dev_set_promiscuity +EXPORT_SYMBOL vmlinux 0xba305e1e flush_icache_user_range +EXPORT_SYMBOL vmlinux 0xba46da59 sock_no_listen +EXPORT_SYMBOL vmlinux 0xba497f13 loops_per_jiffy +EXPORT_SYMBOL vmlinux 0xba890988 pci_release_regions +EXPORT_SYMBOL vmlinux 0xbaa8e1b7 phy_start_interrupts +EXPORT_SYMBOL vmlinux 0xbabbee83 set_groups +EXPORT_SYMBOL vmlinux 0xbac3cbf2 ns_to_timespec64 +EXPORT_SYMBOL vmlinux 0xbad8a8bd sync_dirty_buffer +EXPORT_SYMBOL vmlinux 0xbadfd7a7 inet_unregister_protosw +EXPORT_SYMBOL vmlinux 0xbaf22261 framebuffer_alloc +EXPORT_SYMBOL vmlinux 0xbafeae18 xfrm6_prepare_output +EXPORT_SYMBOL vmlinux 0xbb0540aa zlib_inflateReset +EXPORT_SYMBOL vmlinux 0xbb204f87 inet6_add_protocol +EXPORT_SYMBOL vmlinux 0xbb26deba __dev_remove_pack +EXPORT_SYMBOL vmlinux 0xbb35675b __bitmap_intersects +EXPORT_SYMBOL vmlinux 0xbb3a1911 __sk_mem_schedule +EXPORT_SYMBOL vmlinux 0xbb4edb3f elv_register_queue +EXPORT_SYMBOL vmlinux 0xbb5a96c3 rwsem_wake +EXPORT_SYMBOL vmlinux 0xbb5d343d xfrm_get_acqseq +EXPORT_SYMBOL vmlinux 0xbb8b5280 skb_store_bits +EXPORT_SYMBOL vmlinux 0xbb936887 generic_shutdown_super +EXPORT_SYMBOL vmlinux 0xbb99125c get_default_font +EXPORT_SYMBOL vmlinux 0xbba8f939 pci_scan_bridge +EXPORT_SYMBOL vmlinux 0xbbafd0e7 up_read +EXPORT_SYMBOL vmlinux 0xbbcccc02 debugfs_create_automount +EXPORT_SYMBOL vmlinux 0xbbceae74 ip_queue_xmit +EXPORT_SYMBOL vmlinux 0xbbcfeb99 blk_delay_queue +EXPORT_SYMBOL vmlinux 0xbbd76e57 bit_wait +EXPORT_SYMBOL vmlinux 0xbbdd265b simple_transaction_set +EXPORT_SYMBOL vmlinux 0xbbe52eea blk_alloc_queue +EXPORT_SYMBOL vmlinux 0xbbed693e arp_create +EXPORT_SYMBOL vmlinux 0xbbeef6a6 bio_alloc_pages +EXPORT_SYMBOL vmlinux 0xbbf79835 lockref_put_or_lock +EXPORT_SYMBOL vmlinux 0xbc0acee5 vga_con +EXPORT_SYMBOL vmlinux 0xbc316de4 tty_termios_input_baud_rate +EXPORT_SYMBOL vmlinux 0xbc3e5636 netdev_has_upper_dev +EXPORT_SYMBOL vmlinux 0xbc6cfecc tso_start +EXPORT_SYMBOL vmlinux 0xbc8b8cc3 mdiobus_register +EXPORT_SYMBOL vmlinux 0xbc9e1117 phy_drivers_unregister +EXPORT_SYMBOL vmlinux 0xbca06592 page_address +EXPORT_SYMBOL vmlinux 0xbca72171 blk_queue_update_dma_pad +EXPORT_SYMBOL vmlinux 0xbcc308bb strnlen_user +EXPORT_SYMBOL vmlinux 0xbcd11853 tty_driver_kref_put +EXPORT_SYMBOL vmlinux 0xbcf150f9 xor_altivec_5 +EXPORT_SYMBOL vmlinux 0xbd12a726 param_get_invbool +EXPORT_SYMBOL vmlinux 0xbd305a39 skb_prepare_seq_read +EXPORT_SYMBOL vmlinux 0xbd35039d fixed_phy_update_state +EXPORT_SYMBOL vmlinux 0xbd7334b9 blk_rq_unmap_user +EXPORT_SYMBOL vmlinux 0xbd803510 tcp_parse_md5sig_option +EXPORT_SYMBOL vmlinux 0xbd8d541d flush_hash_pages +EXPORT_SYMBOL vmlinux 0xbd9074b1 blk_finish_plug +EXPORT_SYMBOL vmlinux 0xbd922b71 jbd2_journal_get_create_access +EXPORT_SYMBOL vmlinux 0xbd98fe9a atomic_dec_and_mutex_lock +EXPORT_SYMBOL vmlinux 0xbd9a3e34 release_sock +EXPORT_SYMBOL vmlinux 0xbd9e233a pskb_expand_head +EXPORT_SYMBOL vmlinux 0xbd9e5d49 __lshrdi3 +EXPORT_SYMBOL vmlinux 0xbdbfbbe3 simple_empty +EXPORT_SYMBOL vmlinux 0xbdc29455 jbd2_journal_wipe +EXPORT_SYMBOL vmlinux 0xbdd9617d __nla_reserve +EXPORT_SYMBOL vmlinux 0xbde3fbc8 handle_edge_irq +EXPORT_SYMBOL vmlinux 0xbde4917f neigh_ifdown +EXPORT_SYMBOL vmlinux 0xbdeed40d mmc_start_bkops +EXPORT_SYMBOL vmlinux 0xbdfd5b7c scsi_add_host_with_dma +EXPORT_SYMBOL vmlinux 0xbe0e5118 nla_memcmp +EXPORT_SYMBOL vmlinux 0xbe1bb112 bitmap_onto +EXPORT_SYMBOL vmlinux 0xbe1d5799 pci_enable_device_mem +EXPORT_SYMBOL vmlinux 0xbe35c100 phys_mem_access_prot +EXPORT_SYMBOL vmlinux 0xbe43a9fc generic_read_dir +EXPORT_SYMBOL vmlinux 0xbe44341f scsi_print_sense +EXPORT_SYMBOL vmlinux 0xbe5e6c39 netdev_all_upper_get_next_dev_rcu +EXPORT_SYMBOL vmlinux 0xbe63ee40 request_resource +EXPORT_SYMBOL vmlinux 0xbe69b860 cdrom_get_media_event +EXPORT_SYMBOL vmlinux 0xbe6f8a0d inet_addr_type +EXPORT_SYMBOL vmlinux 0xbe86209e seq_open_private +EXPORT_SYMBOL vmlinux 0xbe9aabf3 dquot_alloc +EXPORT_SYMBOL vmlinux 0xbeb154a8 netpoll_poll_enable +EXPORT_SYMBOL vmlinux 0xbec13bd4 vme_dma_request +EXPORT_SYMBOL vmlinux 0xbee90f2f __kfifo_out_peek_r +EXPORT_SYMBOL vmlinux 0xbef43296 console_conditional_schedule +EXPORT_SYMBOL vmlinux 0xbf04874b md_write_end +EXPORT_SYMBOL vmlinux 0xbf0aee67 __dynamic_dev_dbg +EXPORT_SYMBOL vmlinux 0xbf1185fc fsnotify_add_mark +EXPORT_SYMBOL vmlinux 0xbf24724d tcp_init_xmit_timers +EXPORT_SYMBOL vmlinux 0xbf2c6a85 jbd2_journal_stop +EXPORT_SYMBOL vmlinux 0xbf483896 dev_alloc_name +EXPORT_SYMBOL vmlinux 0xbf4ed9ca d_walk +EXPORT_SYMBOL vmlinux 0xbf75a5a3 skb_split +EXPORT_SYMBOL vmlinux 0xbf7fd2f5 schedule_timeout_killable +EXPORT_SYMBOL vmlinux 0xbf8ba54a vprintk +EXPORT_SYMBOL vmlinux 0xbf8f0673 dm_put_device +EXPORT_SYMBOL vmlinux 0xbf925c42 idr_init +EXPORT_SYMBOL vmlinux 0xbf9bcc8d __cap_empty_set +EXPORT_SYMBOL vmlinux 0xbfa6bfc5 mmc_gpio_request_cd +EXPORT_SYMBOL vmlinux 0xbfa93d86 d_obtain_alias +EXPORT_SYMBOL vmlinux 0xbfb00783 bitmap_end_sync +EXPORT_SYMBOL vmlinux 0xbfb078d7 inet_ioctl +EXPORT_SYMBOL vmlinux 0xbfb72a8c component_match_add +EXPORT_SYMBOL vmlinux 0xbfb8b0b7 _raw_read_lock_irqsave +EXPORT_SYMBOL vmlinux 0xbfc177bc iowrite32_rep +EXPORT_SYMBOL vmlinux 0xbfe0c5a5 __elv_add_request +EXPORT_SYMBOL vmlinux 0xbfee3ad5 loop_unregister_transfer +EXPORT_SYMBOL vmlinux 0xbff3e2ea down_read_trylock +EXPORT_SYMBOL vmlinux 0xc007b5a5 sg_miter_skip +EXPORT_SYMBOL vmlinux 0xc0131d6b netpoll_setup +EXPORT_SYMBOL vmlinux 0xc014b17c register_netdevice +EXPORT_SYMBOL vmlinux 0xc041ba9f ip4_datagram_connect +EXPORT_SYMBOL vmlinux 0xc041e367 netif_napi_add +EXPORT_SYMBOL vmlinux 0xc05119fe sg_copy_from_buffer +EXPORT_SYMBOL vmlinux 0xc05688ef genl_notify +EXPORT_SYMBOL vmlinux 0xc068440e __kfifo_alloc +EXPORT_SYMBOL vmlinux 0xc06e607e pci_disable_link_state_locked +EXPORT_SYMBOL vmlinux 0xc0763484 rfkill_blocked +EXPORT_SYMBOL vmlinux 0xc07dca66 sock_no_poll +EXPORT_SYMBOL vmlinux 0xc0823e4c twl_i2c_write +EXPORT_SYMBOL vmlinux 0xc0a3d105 find_next_bit +EXPORT_SYMBOL vmlinux 0xc0c080d8 blk_mq_can_queue +EXPORT_SYMBOL vmlinux 0xc0c57a84 sk_stream_kill_queues +EXPORT_SYMBOL vmlinux 0xc0d1e3ef d_rehash +EXPORT_SYMBOL vmlinux 0xc0d84ced cuda_poll +EXPORT_SYMBOL vmlinux 0xc11d8093 iov_shorten +EXPORT_SYMBOL vmlinux 0xc1233c27 agp_free_memory +EXPORT_SYMBOL vmlinux 0xc1240d12 netdev_warn +EXPORT_SYMBOL vmlinux 0xc12ec3a6 dns_query +EXPORT_SYMBOL vmlinux 0xc13a10dc flex_array_alloc +EXPORT_SYMBOL vmlinux 0xc1445d81 nf_ip6_checksum +EXPORT_SYMBOL vmlinux 0xc1564e75 jbd2_journal_invalidatepage +EXPORT_SYMBOL vmlinux 0xc1976bcb pci_request_regions +EXPORT_SYMBOL vmlinux 0xc1c23689 simple_nosetlease +EXPORT_SYMBOL vmlinux 0xc1c906a3 netdev_printk +EXPORT_SYMBOL vmlinux 0xc1cd6fa4 __vfs_read +EXPORT_SYMBOL vmlinux 0xc1d4b668 scsi_remove_host +EXPORT_SYMBOL vmlinux 0xc1d8cfaf __fdget +EXPORT_SYMBOL vmlinux 0xc1dd4a7f adb_request +EXPORT_SYMBOL vmlinux 0xc1e50c0b rtnl_nla_parse_ifla +EXPORT_SYMBOL vmlinux 0xc216cd92 __neigh_event_send +EXPORT_SYMBOL vmlinux 0xc21c5b48 qdisc_class_hash_grow +EXPORT_SYMBOL vmlinux 0xc22f7990 d_instantiate_unique +EXPORT_SYMBOL vmlinux 0xc2301344 tcp_v4_mtu_reduced +EXPORT_SYMBOL vmlinux 0xc2310dbd dquot_destroy +EXPORT_SYMBOL vmlinux 0xc2424641 agp3_generic_cleanup +EXPORT_SYMBOL vmlinux 0xc260dc7d devm_gpio_request +EXPORT_SYMBOL vmlinux 0xc267dc7e udp_sendmsg +EXPORT_SYMBOL vmlinux 0xc27d5248 dump_skip +EXPORT_SYMBOL vmlinux 0xc2acc033 hex_dump_to_buffer +EXPORT_SYMBOL vmlinux 0xc2b7f2a5 md_reload_sb +EXPORT_SYMBOL vmlinux 0xc2d711e1 krealloc +EXPORT_SYMBOL vmlinux 0xc2e2dc05 dev_err +EXPORT_SYMBOL vmlinux 0xc2e587d1 reset_devices +EXPORT_SYMBOL vmlinux 0xc2f9c045 timespec_to_jiffies +EXPORT_SYMBOL vmlinux 0xc2fbacbb mmc_read_bkops_status +EXPORT_SYMBOL vmlinux 0xc31e6cd2 i2c_use_client +EXPORT_SYMBOL vmlinux 0xc33ad425 blk_integrity_compare +EXPORT_SYMBOL vmlinux 0xc3484a3e md_set_array_sectors +EXPORT_SYMBOL vmlinux 0xc34d4570 get_fs_type +EXPORT_SYMBOL vmlinux 0xc34ec610 dmam_alloc_noncoherent +EXPORT_SYMBOL vmlinux 0xc35072f2 devm_kvasprintf +EXPORT_SYMBOL vmlinux 0xc353d643 proc_remove +EXPORT_SYMBOL vmlinux 0xc368849f nvram_sync +EXPORT_SYMBOL vmlinux 0xc37c7f0f bdev_stack_limits +EXPORT_SYMBOL vmlinux 0xc38ed504 netpoll_print_options +EXPORT_SYMBOL vmlinux 0xc3b56743 clear_wb_congested +EXPORT_SYMBOL vmlinux 0xc3b780ff phy_find_first +EXPORT_SYMBOL vmlinux 0xc3c2be91 mipi_dsi_packet_format_is_short +EXPORT_SYMBOL vmlinux 0xc3c9840c max8925_bulk_write +EXPORT_SYMBOL vmlinux 0xc3cf2a23 of_device_alloc +EXPORT_SYMBOL vmlinux 0xc3ec5d3d security_path_truncate +EXPORT_SYMBOL vmlinux 0xc406b473 loop_backing_file +EXPORT_SYMBOL vmlinux 0xc40d20d3 tcp_poll +EXPORT_SYMBOL vmlinux 0xc41f0516 node_states +EXPORT_SYMBOL vmlinux 0xc41ffecd down_read +EXPORT_SYMBOL vmlinux 0xc430311e page_waitqueue +EXPORT_SYMBOL vmlinux 0xc443d3e0 sget +EXPORT_SYMBOL vmlinux 0xc45755de find_next_zero_bit_le +EXPORT_SYMBOL vmlinux 0xc4651abb __devm_gpiod_get_index +EXPORT_SYMBOL vmlinux 0xc47749c6 seq_put_decimal_ull +EXPORT_SYMBOL vmlinux 0xc47cdf9c _raw_write_lock_bh +EXPORT_SYMBOL vmlinux 0xc48b1693 xfrm_state_lookup_byspi +EXPORT_SYMBOL vmlinux 0xc499ae1e kstrdup +EXPORT_SYMBOL vmlinux 0xc49b82cd posix_unblock_lock +EXPORT_SYMBOL vmlinux 0xc4aba41c truncate_inode_pages_range +EXPORT_SYMBOL vmlinux 0xc4b5e016 d_make_root +EXPORT_SYMBOL vmlinux 0xc4bf40c6 kmap_to_page +EXPORT_SYMBOL vmlinux 0xc4bfdbc7 skb_checksum_trimmed +EXPORT_SYMBOL vmlinux 0xc4c05fcd tty_port_destroy +EXPORT_SYMBOL vmlinux 0xc4decf45 inet6_unregister_icmp_sender +EXPORT_SYMBOL vmlinux 0xc4efb1da find_get_entry +EXPORT_SYMBOL vmlinux 0xc4f25580 dev_queue_xmit_accel +EXPORT_SYMBOL vmlinux 0xc4fa2f91 sk_dst_check +EXPORT_SYMBOL vmlinux 0xc508127a scsi_target_resume +EXPORT_SYMBOL vmlinux 0xc51b6c07 tcp_release_cb +EXPORT_SYMBOL vmlinux 0xc53a5d98 jbd2_journal_revoke +EXPORT_SYMBOL vmlinux 0xc53c1566 max8998_bulk_write +EXPORT_SYMBOL vmlinux 0xc54b92d6 param_set_ullong +EXPORT_SYMBOL vmlinux 0xc5534d64 ioread16 +EXPORT_SYMBOL vmlinux 0xc55c2a9d inode_sb_list_lock +EXPORT_SYMBOL vmlinux 0xc55de23c percpu_counter_set +EXPORT_SYMBOL vmlinux 0xc5718627 sg_copy_to_buffer +EXPORT_SYMBOL vmlinux 0xc58312b3 free_netdev +EXPORT_SYMBOL vmlinux 0xc599a772 security_xfrm_state_delete +EXPORT_SYMBOL vmlinux 0xc5a1fddb genphy_update_link +EXPORT_SYMBOL vmlinux 0xc5b340cc of_translate_dma_address +EXPORT_SYMBOL vmlinux 0xc5d54154 ata_link_printk +EXPORT_SYMBOL vmlinux 0xc5d9c46c agp_try_unsupported_boot +EXPORT_SYMBOL vmlinux 0xc5f0a50a uart_add_one_port +EXPORT_SYMBOL vmlinux 0xc5fdef94 call_usermodehelper +EXPORT_SYMBOL vmlinux 0xc60fac16 reqsk_queue_hash_req +EXPORT_SYMBOL vmlinux 0xc6209fa2 remap_vmalloc_range +EXPORT_SYMBOL vmlinux 0xc631580a console_unlock +EXPORT_SYMBOL vmlinux 0xc64b311a inet_proto_csum_replace16 +EXPORT_SYMBOL vmlinux 0xc65abeb7 agp3_generic_sizes +EXPORT_SYMBOL vmlinux 0xc66d9b77 __blkdev_reread_part +EXPORT_SYMBOL vmlinux 0xc6740a0b of_platform_device_create +EXPORT_SYMBOL vmlinux 0xc68c37fe cap_mmap_file +EXPORT_SYMBOL vmlinux 0xc694b00d __scsi_device_lookup +EXPORT_SYMBOL vmlinux 0xc6b22c71 __percpu_counter_sum +EXPORT_SYMBOL vmlinux 0xc6bd793d simple_dname +EXPORT_SYMBOL vmlinux 0xc6cbbc89 capable +EXPORT_SYMBOL vmlinux 0xc6e588a7 pci_scan_bus +EXPORT_SYMBOL vmlinux 0xc6ea56f4 page_symlink_inode_operations +EXPORT_SYMBOL vmlinux 0xc6eed54b free_inode_nonrcu +EXPORT_SYMBOL vmlinux 0xc7180aaa filemap_map_pages +EXPORT_SYMBOL vmlinux 0xc7208c3a serial8250_resume_port +EXPORT_SYMBOL vmlinux 0xc72fc778 tcp_md5_hash_header +EXPORT_SYMBOL vmlinux 0xc73bd923 blkdev_issue_write_same +EXPORT_SYMBOL vmlinux 0xc740b85a __skb_flow_dissect +EXPORT_SYMBOL vmlinux 0xc742087f inet6_del_protocol +EXPORT_SYMBOL vmlinux 0xc74438e0 scsi_bios_ptable +EXPORT_SYMBOL vmlinux 0xc755959d pm860x_reg_read +EXPORT_SYMBOL vmlinux 0xc7563db8 twl_set_regcache_bypass +EXPORT_SYMBOL vmlinux 0xc762b4d7 __hw_addr_sync_dev +EXPORT_SYMBOL vmlinux 0xc781bd9f rfkill_resume_polling +EXPORT_SYMBOL vmlinux 0xc7856a3d inet6addr_notifier_call_chain +EXPORT_SYMBOL vmlinux 0xc7898275 flex_array_shrink +EXPORT_SYMBOL vmlinux 0xc78e2bcf kernel_param_lock +EXPORT_SYMBOL vmlinux 0xc7910c45 inet_peer_xrlim_allow +EXPORT_SYMBOL vmlinux 0xc795e23e cpu_core_map +EXPORT_SYMBOL vmlinux 0xc79ade0f nla_put_nohdr +EXPORT_SYMBOL vmlinux 0xc79bcd36 dm_vcalloc +EXPORT_SYMBOL vmlinux 0xc7a4fbed rtnl_lock +EXPORT_SYMBOL vmlinux 0xc7a7d21e xfrm_unregister_km +EXPORT_SYMBOL vmlinux 0xc7a8fa9b devfreq_monitor_start +EXPORT_SYMBOL vmlinux 0xc7bf5a20 xfrm_sad_getinfo +EXPORT_SYMBOL vmlinux 0xc7c9f577 mmc_wait_for_cmd +EXPORT_SYMBOL vmlinux 0xc7ec6c27 strspn +EXPORT_SYMBOL vmlinux 0xc7f64047 eth_gro_complete +EXPORT_SYMBOL vmlinux 0xc7f79ec0 end_buffer_write_sync +EXPORT_SYMBOL vmlinux 0xc8013e68 update_region +EXPORT_SYMBOL vmlinux 0xc8276a79 nf_hooks_needed +EXPORT_SYMBOL vmlinux 0xc829ae19 dcb_ieee_delapp +EXPORT_SYMBOL vmlinux 0xc8328fd9 proc_symlink +EXPORT_SYMBOL vmlinux 0xc832fd59 param_set_byte +EXPORT_SYMBOL vmlinux 0xc8339e24 string_unescape +EXPORT_SYMBOL vmlinux 0xc83b4d5b posix_acl_from_mode +EXPORT_SYMBOL vmlinux 0xc84080f9 kill_pid +EXPORT_SYMBOL vmlinux 0xc84a0a7e seq_hlist_start_rcu +EXPORT_SYMBOL vmlinux 0xc8571bcb idr_for_each +EXPORT_SYMBOL vmlinux 0xc872fd85 in6addr_interfacelocal_allnodes +EXPORT_SYMBOL vmlinux 0xc8782ea5 register_gifconf +EXPORT_SYMBOL vmlinux 0xc87f2361 udp6_set_csum +EXPORT_SYMBOL vmlinux 0xc890c008 zlib_deflateEnd +EXPORT_SYMBOL vmlinux 0xc89168a4 udplite_prot +EXPORT_SYMBOL vmlinux 0xc895bc5c pcie_capability_read_dword +EXPORT_SYMBOL vmlinux 0xc8a91f5b cpumask_local_spread +EXPORT_SYMBOL vmlinux 0xc8b02545 vfs_getxattr_alloc +EXPORT_SYMBOL vmlinux 0xc8b57c27 autoremove_wake_function +EXPORT_SYMBOL vmlinux 0xc8bfa0fb sock_i_uid +EXPORT_SYMBOL vmlinux 0xc8c5b056 gen_pool_alloc +EXPORT_SYMBOL vmlinux 0xc8ca306c ipv6_chk_addr_and_flags +EXPORT_SYMBOL vmlinux 0xc8de783e ip_do_fragment +EXPORT_SYMBOL vmlinux 0xc8e35e1b blk_rq_map_integrity_sg +EXPORT_SYMBOL vmlinux 0xc8f126c0 param_get_bool +EXPORT_SYMBOL vmlinux 0xc8fe377b ata_port_printk +EXPORT_SYMBOL vmlinux 0xc911b9d5 eth_get_headlen +EXPORT_SYMBOL vmlinux 0xc9220250 pci_bus_read_config_dword +EXPORT_SYMBOL vmlinux 0xc93fbc54 wait_for_completion_io +EXPORT_SYMBOL vmlinux 0xc941a1d0 generic_removexattr +EXPORT_SYMBOL vmlinux 0xc9615b78 account_page_redirty +EXPORT_SYMBOL vmlinux 0xc9634df9 in6addr_linklocal_allrouters +EXPORT_SYMBOL vmlinux 0xc99e2a55 twl_rev +EXPORT_SYMBOL vmlinux 0xc9af2498 tcf_hash_cleanup +EXPORT_SYMBOL vmlinux 0xc9b8c308 __kfifo_dma_out_prepare +EXPORT_SYMBOL vmlinux 0xc9ceccd0 skb_pull +EXPORT_SYMBOL vmlinux 0xc9f2ff0d mmc_gpiod_request_cd_irq +EXPORT_SYMBOL vmlinux 0xca001a79 blk_start_request +EXPORT_SYMBOL vmlinux 0xca0e048b qdisc_watchdog_init +EXPORT_SYMBOL vmlinux 0xca0f4667 readlink_copy +EXPORT_SYMBOL vmlinux 0xca249f2b find_get_pages_contig +EXPORT_SYMBOL vmlinux 0xca2b1cd6 ida_pre_get +EXPORT_SYMBOL vmlinux 0xca3b28c6 store_vr_state +EXPORT_SYMBOL vmlinux 0xca825895 pmu_suspend +EXPORT_SYMBOL vmlinux 0xca9360b5 rb_next +EXPORT_SYMBOL vmlinux 0xcaa38629 vga_client_register +EXPORT_SYMBOL vmlinux 0xcac0c431 elevator_exit +EXPORT_SYMBOL vmlinux 0xcacd272d atomic64_sub_return +EXPORT_SYMBOL vmlinux 0xcace6297 idr_is_empty +EXPORT_SYMBOL vmlinux 0xcad08e48 mmu_hash_lock +EXPORT_SYMBOL vmlinux 0xcae1eac1 jbd2_journal_start +EXPORT_SYMBOL vmlinux 0xcaf2c603 scsi_sd_pm_domain +EXPORT_SYMBOL vmlinux 0xcb0288ea ledtrig_cpu +EXPORT_SYMBOL vmlinux 0xcb1a1ff1 sk_filter +EXPORT_SYMBOL vmlinux 0xcb1ba3f3 macio_register_driver +EXPORT_SYMBOL vmlinux 0xcb24fc11 unlock_page +EXPORT_SYMBOL vmlinux 0xcb3819fd proc_mkdir_mode +EXPORT_SYMBOL vmlinux 0xcb3c585a blk_finish_request +EXPORT_SYMBOL vmlinux 0xcb3d5903 __pskb_copy_fclone +EXPORT_SYMBOL vmlinux 0xcb49da2e inet6_offloads +EXPORT_SYMBOL vmlinux 0xcb7573c4 dquot_drop +EXPORT_SYMBOL vmlinux 0xcb9bc1e1 inode_needs_sync +EXPORT_SYMBOL vmlinux 0xcbbf0a6f audit_log_task_context +EXPORT_SYMBOL vmlinux 0xcbc9557f unregister_sysrq_key +EXPORT_SYMBOL vmlinux 0xcbd186ad vme_new_dma_list +EXPORT_SYMBOL vmlinux 0xcbe24dc9 dquot_quota_on_mount +EXPORT_SYMBOL vmlinux 0xcbeac4be hdmi_avi_infoframe_pack +EXPORT_SYMBOL vmlinux 0xcbf42d47 mfd_cell_enable +EXPORT_SYMBOL vmlinux 0xcbf9104a invalidate_inode_buffers +EXPORT_SYMBOL vmlinux 0xcc10a69f nf_unregister_sockopt +EXPORT_SYMBOL vmlinux 0xcc17504d _raw_read_unlock_irqrestore +EXPORT_SYMBOL vmlinux 0xcc193077 redraw_screen +EXPORT_SYMBOL vmlinux 0xcc248d26 serial8250_suspend_port +EXPORT_SYMBOL vmlinux 0xcc28e8a3 blk_mq_tag_to_rq +EXPORT_SYMBOL vmlinux 0xcc4ecace serio_rescan +EXPORT_SYMBOL vmlinux 0xcc5005fe msleep_interruptible +EXPORT_SYMBOL vmlinux 0xcc6298d3 sync_inodes_sb +EXPORT_SYMBOL vmlinux 0xcc65afa3 flush_signals +EXPORT_SYMBOL vmlinux 0xcc7382e9 vfs_mkdir +EXPORT_SYMBOL vmlinux 0xcca80944 param_set_bool +EXPORT_SYMBOL vmlinux 0xccb2cb15 vmap +EXPORT_SYMBOL vmlinux 0xccbfd02e get_user_pages_locked +EXPORT_SYMBOL vmlinux 0xccc21f5e input_get_new_minor +EXPORT_SYMBOL vmlinux 0xccc3f7af shrink_dcache_parent +EXPORT_SYMBOL vmlinux 0xcccbe27c tcp_rtx_synack +EXPORT_SYMBOL vmlinux 0xcce2d86a i8042_remove_filter +EXPORT_SYMBOL vmlinux 0xccfef64f skb_flow_dissector_init +EXPORT_SYMBOL vmlinux 0xcd0529c7 _raw_spin_lock_irq +EXPORT_SYMBOL vmlinux 0xcd279169 nla_find +EXPORT_SYMBOL vmlinux 0xcd34fee3 udp_poll +EXPORT_SYMBOL vmlinux 0xcd3c3cf7 netpoll_parse_options +EXPORT_SYMBOL vmlinux 0xcd3f1553 mmc_interrupt_hpi +EXPORT_SYMBOL vmlinux 0xcd53d3aa of_find_node_by_type +EXPORT_SYMBOL vmlinux 0xcd55e869 kill_bdev +EXPORT_SYMBOL vmlinux 0xcd7ede2a seqno_fence_ops +EXPORT_SYMBOL vmlinux 0xcd86c87f __cond_resched_lock +EXPORT_SYMBOL vmlinux 0xcd8851f9 pci_lost_interrupt +EXPORT_SYMBOL vmlinux 0xcd8d36f4 flow_get_u32_src +EXPORT_SYMBOL vmlinux 0xcda26b2f poll_schedule_timeout +EXPORT_SYMBOL vmlinux 0xcdafcf84 dentry_needs_remove_privs +EXPORT_SYMBOL vmlinux 0xcdc39c9e security_ismaclabel +EXPORT_SYMBOL vmlinux 0xcdd49d0a mipi_dsi_dcs_exit_sleep_mode +EXPORT_SYMBOL vmlinux 0xce0ce3aa generic_pipe_buf_confirm +EXPORT_SYMBOL vmlinux 0xce2064c0 inet_csk_destroy_sock +EXPORT_SYMBOL vmlinux 0xce2840e7 irq_set_irq_wake +EXPORT_SYMBOL vmlinux 0xce409cda pmac_set_early_video_resume +EXPORT_SYMBOL vmlinux 0xce491d47 of_device_unregister +EXPORT_SYMBOL vmlinux 0xce5ac24f zlib_inflate_workspacesize +EXPORT_SYMBOL vmlinux 0xce764264 blk_rq_map_kern +EXPORT_SYMBOL vmlinux 0xce91073d xfrm_input_unregister_afinfo +EXPORT_SYMBOL vmlinux 0xceab0311 strchrnul +EXPORT_SYMBOL vmlinux 0xcef51982 kstrtou16 +EXPORT_SYMBOL vmlinux 0xcef64d1d skb_queue_tail +EXPORT_SYMBOL vmlinux 0xcefcd99a serial8250_unregister_port +EXPORT_SYMBOL vmlinux 0xcf2c285d mipi_dsi_dcs_set_tear_on +EXPORT_SYMBOL vmlinux 0xcf2e23d3 __remove_inode_hash +EXPORT_SYMBOL vmlinux 0xcf309f19 bio_integrity_enabled +EXPORT_SYMBOL vmlinux 0xcf4f165e elv_dispatch_sort +EXPORT_SYMBOL vmlinux 0xcf6b9e49 pci_msix_vec_count +EXPORT_SYMBOL vmlinux 0xcf76a3be lease_modify +EXPORT_SYMBOL vmlinux 0xcf87c301 pcix_get_mmrbc +EXPORT_SYMBOL vmlinux 0xcfc0ea87 __bread_gfp +EXPORT_SYMBOL vmlinux 0xcff99565 cookie_ecn_ok +EXPORT_SYMBOL vmlinux 0xd0199ad6 tty_register_device +EXPORT_SYMBOL vmlinux 0xd05d239b lease_get_mtime +EXPORT_SYMBOL vmlinux 0xd062934f md_check_recovery +EXPORT_SYMBOL vmlinux 0xd0720a17 on_each_cpu_cond +EXPORT_SYMBOL vmlinux 0xd09b0199 fence_context_alloc +EXPORT_SYMBOL vmlinux 0xd0a2847c sha_init +EXPORT_SYMBOL vmlinux 0xd0a45fa5 pmu_enable_irled +EXPORT_SYMBOL vmlinux 0xd0a91bab skip_spaces +EXPORT_SYMBOL vmlinux 0xd0adcbc0 xfrm6_find_1stfragopt +EXPORT_SYMBOL vmlinux 0xd0b15775 dev_uc_flush +EXPORT_SYMBOL vmlinux 0xd0cd71ff eth_header_cache_update +EXPORT_SYMBOL vmlinux 0xd0e4c0d2 nlmsg_notify +EXPORT_SYMBOL vmlinux 0xd0ee38b8 schedule_timeout_uninterruptible +EXPORT_SYMBOL vmlinux 0xd0f36f0d audit_log_format +EXPORT_SYMBOL vmlinux 0xd0fb7cd4 __tasklet_hi_schedule_first +EXPORT_SYMBOL vmlinux 0xd0fef3b2 agp_free_key +EXPORT_SYMBOL vmlinux 0xd1083d54 tty_flip_buffer_push +EXPORT_SYMBOL vmlinux 0xd1207e64 mutex_unlock +EXPORT_SYMBOL vmlinux 0xd1262886 rtas_data_buf +EXPORT_SYMBOL vmlinux 0xd139ac6e key_reject_and_link +EXPORT_SYMBOL vmlinux 0xd144ff05 pci_wake_from_d3 +EXPORT_SYMBOL vmlinux 0xd1471225 xfrm_user_policy +EXPORT_SYMBOL vmlinux 0xd153aa9d scsi_host_alloc +EXPORT_SYMBOL vmlinux 0xd1816f32 frontswap_writethrough +EXPORT_SYMBOL vmlinux 0xd188b302 dquot_operations +EXPORT_SYMBOL vmlinux 0xd196c9be kstrtos16_from_user +EXPORT_SYMBOL vmlinux 0xd1a02ea5 eth_prepare_mac_addr_change +EXPORT_SYMBOL vmlinux 0xd1a35e4f agp_generic_alloc_pages +EXPORT_SYMBOL vmlinux 0xd1a4f816 pm_vt_switch_required +EXPORT_SYMBOL vmlinux 0xd1c84dfb hdmi_audio_infoframe_pack +EXPORT_SYMBOL vmlinux 0xd1cdd814 set_binfmt +EXPORT_SYMBOL vmlinux 0xd1d87e92 scsi_mlreturn_string +EXPORT_SYMBOL vmlinux 0xd1e3f3c4 unregister_sysctl_table +EXPORT_SYMBOL vmlinux 0xd1e48d0d lookup_one_len +EXPORT_SYMBOL vmlinux 0xd1e8c4e4 of_mm_gpiochip_remove +EXPORT_SYMBOL vmlinux 0xd1f99921 __serio_register_driver +EXPORT_SYMBOL vmlinux 0xd2091e91 dev_addr_init +EXPORT_SYMBOL vmlinux 0xd20f37ad loop_register_transfer +EXPORT_SYMBOL vmlinux 0xd21feb03 blk_mq_init_queue +EXPORT_SYMBOL vmlinux 0xd220cf8a jiffies_to_timespec +EXPORT_SYMBOL vmlinux 0xd2358a01 serio_unregister_port +EXPORT_SYMBOL vmlinux 0xd251d7b0 security_socket_getpeersec_dgram +EXPORT_SYMBOL vmlinux 0xd254ea37 param_ops_bool +EXPORT_SYMBOL vmlinux 0xd2555f19 jiffies_64_to_clock_t +EXPORT_SYMBOL vmlinux 0xd25d0abf nla_put +EXPORT_SYMBOL vmlinux 0xd25d4f74 console_blank_hook +EXPORT_SYMBOL vmlinux 0xd269ce70 dma_set_mask +EXPORT_SYMBOL vmlinux 0xd274e38d cros_ec_query_all +EXPORT_SYMBOL vmlinux 0xd27b25dd blk_check_plugged +EXPORT_SYMBOL vmlinux 0xd280c1be pci_enable_msix +EXPORT_SYMBOL vmlinux 0xd2893aa5 dev_mc_sync +EXPORT_SYMBOL vmlinux 0xd2a941d4 sg_init_table +EXPORT_SYMBOL vmlinux 0xd2af138b reservation_ww_class +EXPORT_SYMBOL vmlinux 0xd2b5258d cdrom_get_last_written +EXPORT_SYMBOL vmlinux 0xd2cbd51a __quota_error +EXPORT_SYMBOL vmlinux 0xd2d0ed06 generic_pipe_buf_get +EXPORT_SYMBOL vmlinux 0xd2da1048 register_netdevice_notifier +EXPORT_SYMBOL vmlinux 0xd2ec9e10 uart_remove_one_port +EXPORT_SYMBOL vmlinux 0xd2ee3bd1 __kfree_skb +EXPORT_SYMBOL vmlinux 0xd2f419ae dcbnl_ieee_notify +EXPORT_SYMBOL vmlinux 0xd2f7f48e dev_get_phys_port_id +EXPORT_SYMBOL vmlinux 0xd2fc19bd proc_doulongvec_ms_jiffies_minmax +EXPORT_SYMBOL vmlinux 0xd2fcc014 blk_get_backing_dev_info +EXPORT_SYMBOL vmlinux 0xd3121733 mb_cache_entry_find_next +EXPORT_SYMBOL vmlinux 0xd31521d0 genphy_resume +EXPORT_SYMBOL vmlinux 0xd3187da4 pcibios_align_resource +EXPORT_SYMBOL vmlinux 0xd31ccb06 of_machine_is_compatible +EXPORT_SYMBOL vmlinux 0xd347ab29 blk_complete_request +EXPORT_SYMBOL vmlinux 0xd34d17fc scsi_test_unit_ready +EXPORT_SYMBOL vmlinux 0xd36b36ab __sb_end_write +EXPORT_SYMBOL vmlinux 0xd3701358 inet6_del_offload +EXPORT_SYMBOL vmlinux 0xd378dd68 security_path_chmod +EXPORT_SYMBOL vmlinux 0xd3b666b0 vfs_whiteout +EXPORT_SYMBOL vmlinux 0xd3c8ccc9 xfrm_policy_flush +EXPORT_SYMBOL vmlinux 0xd3e3182e blk_stop_queue +EXPORT_SYMBOL vmlinux 0xd3e6f60d cpu_possible_mask +EXPORT_SYMBOL vmlinux 0xd3f726cf inode_init_once +EXPORT_SYMBOL vmlinux 0xd3fadfe8 tty_port_block_til_ready +EXPORT_SYMBOL vmlinux 0xd409383c pmu_request +EXPORT_SYMBOL vmlinux 0xd41465c3 open_check_o_direct +EXPORT_SYMBOL vmlinux 0xd418e1c0 adjust_resource +EXPORT_SYMBOL vmlinux 0xd4217324 vme_unregister_driver +EXPORT_SYMBOL vmlinux 0xd421e871 mntget +EXPORT_SYMBOL vmlinux 0xd42cf325 security_path_rename +EXPORT_SYMBOL vmlinux 0xd44a1462 max8925_bulk_read +EXPORT_SYMBOL vmlinux 0xd44b7e21 to_tm +EXPORT_SYMBOL vmlinux 0xd45ad169 pci_clear_mwi +EXPORT_SYMBOL vmlinux 0xd465429b d_genocide +EXPORT_SYMBOL vmlinux 0xd46d1963 path_is_under +EXPORT_SYMBOL vmlinux 0xd481ccbd tcf_exts_dump_stats +EXPORT_SYMBOL vmlinux 0xd4910c8a dquot_free_inode +EXPORT_SYMBOL vmlinux 0xd49a5bf4 vfs_llseek +EXPORT_SYMBOL vmlinux 0xd5134b26 mipi_dsi_dcs_set_page_address +EXPORT_SYMBOL vmlinux 0xd523e203 vme_irq_free +EXPORT_SYMBOL vmlinux 0xd54f41ce try_to_del_timer_sync +EXPORT_SYMBOL vmlinux 0xd5582f3c dev_set_group +EXPORT_SYMBOL vmlinux 0xd57c4d86 vme_irq_handler +EXPORT_SYMBOL vmlinux 0xd58f1fc3 jbd2_journal_load +EXPORT_SYMBOL vmlinux 0xd5bcf68c nobh_truncate_page +EXPORT_SYMBOL vmlinux 0xd5e6874b switch_mmu_context +EXPORT_SYMBOL vmlinux 0xd5e8444a __div64_32 +EXPORT_SYMBOL vmlinux 0xd5e8d635 dev_change_flags +EXPORT_SYMBOL vmlinux 0xd5f52d4f netdev_rss_key_fill +EXPORT_SYMBOL vmlinux 0xd5f5c173 udp_flush_pending_frames +EXPORT_SYMBOL vmlinux 0xd606503d register_sysctl +EXPORT_SYMBOL vmlinux 0xd615ade4 skb_copy_and_csum_bits +EXPORT_SYMBOL vmlinux 0xd616683a ecryptfs_fill_auth_tok +EXPORT_SYMBOL vmlinux 0xd627480b strncat +EXPORT_SYMBOL vmlinux 0xd62ae23c padata_do_parallel +EXPORT_SYMBOL vmlinux 0xd62c833f schedule_timeout +EXPORT_SYMBOL vmlinux 0xd6322c9e arp_xmit +EXPORT_SYMBOL vmlinux 0xd648e564 fb_match_mode +EXPORT_SYMBOL vmlinux 0xd65e89f9 sock_wake_async +EXPORT_SYMBOL vmlinux 0xd664b62c dump_emit +EXPORT_SYMBOL vmlinux 0xd6659e59 __blk_end_request_cur +EXPORT_SYMBOL vmlinux 0xd675cd25 poll_initwait +EXPORT_SYMBOL vmlinux 0xd67ed589 param_get_string +EXPORT_SYMBOL vmlinux 0xd688716b dm_kcopyd_client_create +EXPORT_SYMBOL vmlinux 0xd69b30e0 atomic64_add_unless +EXPORT_SYMBOL vmlinux 0xd69c3949 twl6040_reg_write +EXPORT_SYMBOL vmlinux 0xd6b84be0 of_graph_get_remote_port_parent +EXPORT_SYMBOL vmlinux 0xd6cd4129 file_remove_privs +EXPORT_SYMBOL vmlinux 0xd6d63e9d lg_local_lock_cpu +EXPORT_SYMBOL vmlinux 0xd6ee688f vmalloc +EXPORT_SYMBOL vmlinux 0xd6f04000 dev_trans_start +EXPORT_SYMBOL vmlinux 0xd6f15aef udp_seq_open +EXPORT_SYMBOL vmlinux 0xd73520cd tcp_try_fastopen +EXPORT_SYMBOL vmlinux 0xd7579ef2 neigh_seq_next +EXPORT_SYMBOL vmlinux 0xd75c79df smp_call_function +EXPORT_SYMBOL vmlinux 0xd75f42b2 blk_limits_io_opt +EXPORT_SYMBOL vmlinux 0xd78e6f89 security_skb_classify_flow +EXPORT_SYMBOL vmlinux 0xd797b9a5 vme_master_write +EXPORT_SYMBOL vmlinux 0xd79da807 simple_pin_fs +EXPORT_SYMBOL vmlinux 0xd7abc1cf new_inode +EXPORT_SYMBOL vmlinux 0xd7b6b5a2 trace_print_array_seq +EXPORT_SYMBOL vmlinux 0xd7c9ce22 mount_subtree +EXPORT_SYMBOL vmlinux 0xd7cd3ffe mb_cache_shrink +EXPORT_SYMBOL vmlinux 0xd7ded59b in_dev_finish_destroy +EXPORT_SYMBOL vmlinux 0xd7e56a4e simple_strtoll +EXPORT_SYMBOL vmlinux 0xd7ea7094 nf_unregister_queue_handler +EXPORT_SYMBOL vmlinux 0xd7efa7bf elv_rb_latter_request +EXPORT_SYMBOL vmlinux 0xd7f524eb neigh_seq_start +EXPORT_SYMBOL vmlinux 0xd7fc2b79 put_disk +EXPORT_SYMBOL vmlinux 0xd81f41f2 phy_init_hw +EXPORT_SYMBOL vmlinux 0xd83a7caa filemap_fdatawait_range +EXPORT_SYMBOL vmlinux 0xd83b74b8 pci_fixup_device +EXPORT_SYMBOL vmlinux 0xd841dcc1 vlan_ioctl_set +EXPORT_SYMBOL vmlinux 0xd84c43a6 lockref_put_return +EXPORT_SYMBOL vmlinux 0xd84fff2c of_device_get_match_data +EXPORT_SYMBOL vmlinux 0xd85dbead con_copy_unimap +EXPORT_SYMBOL vmlinux 0xd879e1c4 replace_mount_options +EXPORT_SYMBOL vmlinux 0xd8960d17 uart_write_wakeup +EXPORT_SYMBOL vmlinux 0xd89cf356 tcp_child_process +EXPORT_SYMBOL vmlinux 0xd89da37f movable_zone +EXPORT_SYMBOL vmlinux 0xd8a994eb scsi_extd_sense_format +EXPORT_SYMBOL vmlinux 0xd8b7c7a5 netdev_rx_csum_fault +EXPORT_SYMBOL vmlinux 0xd8bea5ed request_key_with_auxdata +EXPORT_SYMBOL vmlinux 0xd8cbd1f2 inet_frags_fini +EXPORT_SYMBOL vmlinux 0xd8cdd7f5 udp_proc_register +EXPORT_SYMBOL vmlinux 0xd8ded085 radix_tree_maybe_preload +EXPORT_SYMBOL vmlinux 0xd8e484f0 register_chrdev_region +EXPORT_SYMBOL vmlinux 0xd8fac80b do_SAK +EXPORT_SYMBOL vmlinux 0xd92514ca agp_special_page +EXPORT_SYMBOL vmlinux 0xd94151b3 tty_port_tty_set +EXPORT_SYMBOL vmlinux 0xd9490183 netif_wake_subqueue +EXPORT_SYMBOL vmlinux 0xd9498b22 proc_dointvec +EXPORT_SYMBOL vmlinux 0xd9509b66 kernel_getsockname +EXPORT_SYMBOL vmlinux 0xd954627a inode_set_flags +EXPORT_SYMBOL vmlinux 0xd9680924 xfrm_state_lookup +EXPORT_SYMBOL vmlinux 0xd9689fe8 tcf_unregister_action +EXPORT_SYMBOL vmlinux 0xd9706e01 iterate_dir +EXPORT_SYMBOL vmlinux 0xd985dc99 mempool_free_pages +EXPORT_SYMBOL vmlinux 0xd98f2a1b pm_vt_switch_unregister +EXPORT_SYMBOL vmlinux 0xd9902819 dquot_commit_info +EXPORT_SYMBOL vmlinux 0xd99d80bd bio_integrity_endio +EXPORT_SYMBOL vmlinux 0xd9bac924 tty_termios_copy_hw +EXPORT_SYMBOL vmlinux 0xd9ce8f0c strnlen +EXPORT_SYMBOL vmlinux 0xd9d8fd16 register_restart_handler +EXPORT_SYMBOL vmlinux 0xd9f24323 tcp_close +EXPORT_SYMBOL vmlinux 0xd9fa9419 unlock_two_nondirectories +EXPORT_SYMBOL vmlinux 0xda2d2efe simple_dir_operations +EXPORT_SYMBOL vmlinux 0xda3d10a8 security_tun_dev_open +EXPORT_SYMBOL vmlinux 0xda4788fe pci_scan_root_bus +EXPORT_SYMBOL vmlinux 0xda52e139 dquot_quotactl_sysfile_ops +EXPORT_SYMBOL vmlinux 0xda6e9ec7 touch_atime +EXPORT_SYMBOL vmlinux 0xda6fce16 pci_disable_device +EXPORT_SYMBOL vmlinux 0xda722003 pcie_capability_clear_and_set_word +EXPORT_SYMBOL vmlinux 0xda7ca6cb fb_mode_is_equal +EXPORT_SYMBOL vmlinux 0xda7ebc50 mdiobus_scan +EXPORT_SYMBOL vmlinux 0xda8af7ad fb_find_nearest_mode +EXPORT_SYMBOL vmlinux 0xda8b900f stop_tty +EXPORT_SYMBOL vmlinux 0xdaa57ec3 totalhigh_pages +EXPORT_SYMBOL vmlinux 0xdab20487 pci_disable_link_state +EXPORT_SYMBOL vmlinux 0xdac4913a bitmap_allocate_region +EXPORT_SYMBOL vmlinux 0xdb0e969c fifo_set_limit +EXPORT_SYMBOL vmlinux 0xdb1db2b5 update_devfreq +EXPORT_SYMBOL vmlinux 0xdb288996 pci_bus_alloc_resource +EXPORT_SYMBOL vmlinux 0xdb68bbad rfkill_destroy +EXPORT_SYMBOL vmlinux 0xdb6c150c __pci_enable_wake +EXPORT_SYMBOL vmlinux 0xdb760f52 __kfifo_free +EXPORT_SYMBOL vmlinux 0xdb84f3b8 simple_statfs +EXPORT_SYMBOL vmlinux 0xdb8d2330 tcp_init_cgroup +EXPORT_SYMBOL vmlinux 0xdb97a9a6 csum_and_copy_to_iter +EXPORT_SYMBOL vmlinux 0xdbb772b0 ip_setsockopt +EXPORT_SYMBOL vmlinux 0xdbc80677 posix_test_lock +EXPORT_SYMBOL vmlinux 0xdbd531ec scsi_device_lookup +EXPORT_SYMBOL vmlinux 0xdbf27938 bdi_set_max_ratio +EXPORT_SYMBOL vmlinux 0xdbf8baab drop_nlink +EXPORT_SYMBOL vmlinux 0xdc047fc4 scsi_dev_info_list_add_keyed +EXPORT_SYMBOL vmlinux 0xdc0793f6 agp_generic_remove_memory +EXPORT_SYMBOL vmlinux 0xdc14eda7 pci_pci_problems +EXPORT_SYMBOL vmlinux 0xdc24b2ef down_write +EXPORT_SYMBOL vmlinux 0xdc24eef6 tcp_proto_cgroup +EXPORT_SYMBOL vmlinux 0xdc3fcbc9 __sw_hweight8 +EXPORT_SYMBOL vmlinux 0xdc452dc3 mmc_retune_timer_stop +EXPORT_SYMBOL vmlinux 0xdc512134 backlight_register_notifier +EXPORT_SYMBOL vmlinux 0xdc63ca68 blk_queue_find_tag +EXPORT_SYMBOL vmlinux 0xdc7701ba tcf_em_unregister +EXPORT_SYMBOL vmlinux 0xdc815ae6 input_set_capability +EXPORT_SYMBOL vmlinux 0xdc8fc360 inet_csk_accept +EXPORT_SYMBOL vmlinux 0xdc942659 pci_add_resource_offset +EXPORT_SYMBOL vmlinux 0xdc9498dd down +EXPORT_SYMBOL vmlinux 0xdc9e44e8 pcie_set_mps +EXPORT_SYMBOL vmlinux 0xdcb0349b sys_close +EXPORT_SYMBOL vmlinux 0xdcb66219 netpoll_poll_disable +EXPORT_SYMBOL vmlinux 0xdcba9d5d scsi_is_target_device +EXPORT_SYMBOL vmlinux 0xdcc738c8 inode_change_ok +EXPORT_SYMBOL vmlinux 0xdce631c1 param_set_short +EXPORT_SYMBOL vmlinux 0xdcefb9a5 pmu_resume +EXPORT_SYMBOL vmlinux 0xdcf19598 migrate_page +EXPORT_SYMBOL vmlinux 0xdd0a2ba2 strlcat +EXPORT_SYMBOL vmlinux 0xdd20d7d2 of_get_address +EXPORT_SYMBOL vmlinux 0xdd27fa87 memchr +EXPORT_SYMBOL vmlinux 0xdd398fe5 ppp_unregister_compressor +EXPORT_SYMBOL vmlinux 0xdd4e792a tty_insert_flip_string_flags +EXPORT_SYMBOL vmlinux 0xdd51f252 mmc_remove_host +EXPORT_SYMBOL vmlinux 0xdd535950 netdev_class_create_file_ns +EXPORT_SYMBOL vmlinux 0xdd57611f blk_queue_alignment_offset +EXPORT_SYMBOL vmlinux 0xdd5dc0e6 __scsi_iterate_devices +EXPORT_SYMBOL vmlinux 0xdd80aeca pci_bus_put +EXPORT_SYMBOL vmlinux 0xdd9030af current_stack_pointer +EXPORT_SYMBOL vmlinux 0xddac1cce ata_print_version +EXPORT_SYMBOL vmlinux 0xddb64d6e bio_copy_data +EXPORT_SYMBOL vmlinux 0xde41138e gen_replace_estimator +EXPORT_SYMBOL vmlinux 0xde48e9ca _raw_spin_lock +EXPORT_SYMBOL vmlinux 0xde91448c load_vr_state +EXPORT_SYMBOL vmlinux 0xde9360ba totalram_pages +EXPORT_SYMBOL vmlinux 0xde9b17ed agp3_generic_fetch_size +EXPORT_SYMBOL vmlinux 0xdea3a214 __skb_get_hash_flowi4 +EXPORT_SYMBOL vmlinux 0xdeac827a bio_reset +EXPORT_SYMBOL vmlinux 0xdeaeafae genlmsg_multicast_allns +EXPORT_SYMBOL vmlinux 0xdeb46928 inode_add_bytes +EXPORT_SYMBOL vmlinux 0xdec60cd6 serio_unregister_driver +EXPORT_SYMBOL vmlinux 0xdedd7014 xfrm6_input_addr +EXPORT_SYMBOL vmlinux 0xdf00ca0c scmd_printk +EXPORT_SYMBOL vmlinux 0xdf0bb4bc of_find_property +EXPORT_SYMBOL vmlinux 0xdf1496e1 tcp_sendpage +EXPORT_SYMBOL vmlinux 0xdf18b17a unmap_mapping_range +EXPORT_SYMBOL vmlinux 0xdf195f8d qdisc_watchdog_schedule_ns +EXPORT_SYMBOL vmlinux 0xdf29d611 __dquot_alloc_space +EXPORT_SYMBOL vmlinux 0xdf2c2742 rb_last +EXPORT_SYMBOL vmlinux 0xdf3a693d crc_t10dif_update +EXPORT_SYMBOL vmlinux 0xdf42e1a4 filemap_page_mkwrite +EXPORT_SYMBOL vmlinux 0xdf49f13d ps2_handle_ack +EXPORT_SYMBOL vmlinux 0xdf513117 devm_iounmap +EXPORT_SYMBOL vmlinux 0xdf54a8f7 netlink_unregister_notifier +EXPORT_SYMBOL vmlinux 0xdf5846ab blk_mq_init_allocated_queue +EXPORT_SYMBOL vmlinux 0xdf60cc27 __print_symbol +EXPORT_SYMBOL vmlinux 0xdf63b3f5 sock_queue_rcv_skb +EXPORT_SYMBOL vmlinux 0xdf6eabfe inet_shutdown +EXPORT_SYMBOL vmlinux 0xdf796c1f tcf_exts_change +EXPORT_SYMBOL vmlinux 0xdf86b659 d_instantiate +EXPORT_SYMBOL vmlinux 0xdf8ee33f sock_get_timestamp +EXPORT_SYMBOL vmlinux 0xdf8f6ece nf_register_queue_handler +EXPORT_SYMBOL vmlinux 0xdf929370 fs_overflowgid +EXPORT_SYMBOL vmlinux 0xdf9c4142 md_error +EXPORT_SYMBOL vmlinux 0xdfac4c6a pipe_lock +EXPORT_SYMBOL vmlinux 0xdff43ed4 __debugger +EXPORT_SYMBOL vmlinux 0xdff56e64 adb_poll +EXPORT_SYMBOL vmlinux 0xdff905e5 vme_slave_free +EXPORT_SYMBOL vmlinux 0xdfff015c mfd_remove_devices +EXPORT_SYMBOL vmlinux 0xdfff747d submit_bio +EXPORT_SYMBOL vmlinux 0xe01a80fa scsi_set_medium_removal +EXPORT_SYMBOL vmlinux 0xe0253b9e agp_generic_insert_memory +EXPORT_SYMBOL vmlinux 0xe02d7457 param_set_bint +EXPORT_SYMBOL vmlinux 0xe03c39ce mmc_wait_for_req +EXPORT_SYMBOL vmlinux 0xe04f7caa dm_read_arg_group +EXPORT_SYMBOL vmlinux 0xe050423a kfree_skb +EXPORT_SYMBOL vmlinux 0xe05607a4 gen_pool_virt_to_phys +EXPORT_SYMBOL vmlinux 0xe05a80da dev_driver_string +EXPORT_SYMBOL vmlinux 0xe06141e9 security_sk_clone +EXPORT_SYMBOL vmlinux 0xe06ac768 empty_aops +EXPORT_SYMBOL vmlinux 0xe073662c netlink_set_err +EXPORT_SYMBOL vmlinux 0xe075d6eb iter_div_u64_rem +EXPORT_SYMBOL vmlinux 0xe083e246 gen_pool_first_fit_order_align +EXPORT_SYMBOL vmlinux 0xe093ca97 blk_post_runtime_resume +EXPORT_SYMBOL vmlinux 0xe094ef39 sg_next +EXPORT_SYMBOL vmlinux 0xe09a6bd5 locks_init_lock +EXPORT_SYMBOL vmlinux 0xe0a3c5cc jbd2_log_start_commit +EXPORT_SYMBOL vmlinux 0xe0b13336 argv_free +EXPORT_SYMBOL vmlinux 0xe0fa9926 __nlmsg_put +EXPORT_SYMBOL vmlinux 0xe113bbbc csum_partial +EXPORT_SYMBOL vmlinux 0xe120f65b tcp_connect +EXPORT_SYMBOL vmlinux 0xe1578540 adjust_managed_page_count +EXPORT_SYMBOL vmlinux 0xe161d5d1 bio_integrity_prep +EXPORT_SYMBOL vmlinux 0xe16ed5fb register_framebuffer +EXPORT_SYMBOL vmlinux 0xe1761617 security_inet_conn_request +EXPORT_SYMBOL vmlinux 0xe1786c32 make_flow_keys_digest +EXPORT_SYMBOL vmlinux 0xe17d6d12 hdmi_infoframe_log +EXPORT_SYMBOL vmlinux 0xe17d6ebc path_put +EXPORT_SYMBOL vmlinux 0xe18e1376 netpoll_cleanup +EXPORT_SYMBOL vmlinux 0xe1ccdde9 pm860x_set_bits +EXPORT_SYMBOL vmlinux 0xe1e19937 dquot_writeback_dquots +EXPORT_SYMBOL vmlinux 0xe1e85ffe of_parse_phandle_with_args +EXPORT_SYMBOL vmlinux 0xe1f34eab disk_stack_limits +EXPORT_SYMBOL vmlinux 0xe1f57677 seq_open +EXPORT_SYMBOL vmlinux 0xe1f62865 dev_uc_sync +EXPORT_SYMBOL vmlinux 0xe200f872 secure_dccpv6_sequence_number +EXPORT_SYMBOL vmlinux 0xe2127563 tcp_v4_md5_hash_skb +EXPORT_SYMBOL vmlinux 0xe21c6e44 kmem_cache_destroy +EXPORT_SYMBOL vmlinux 0xe22e8008 __xfrm_state_delete +EXPORT_SYMBOL vmlinux 0xe2304303 mac_map_monitor_sense +EXPORT_SYMBOL vmlinux 0xe23ae481 blk_iopoll_complete +EXPORT_SYMBOL vmlinux 0xe2441a72 inet_frag_find +EXPORT_SYMBOL vmlinux 0xe24d3a97 jiffies_64 +EXPORT_SYMBOL vmlinux 0xe25fb757 from_kgid +EXPORT_SYMBOL vmlinux 0xe26616dc generic_file_llseek +EXPORT_SYMBOL vmlinux 0xe272f332 netlink_ns_capable +EXPORT_SYMBOL vmlinux 0xe2731c96 dev_load +EXPORT_SYMBOL vmlinux 0xe29e1d0e out_of_line_wait_on_atomic_t +EXPORT_SYMBOL vmlinux 0xe2a723a8 blk_integrity_register +EXPORT_SYMBOL vmlinux 0xe2be5498 lg_global_unlock +EXPORT_SYMBOL vmlinux 0xe2d5255a strcmp +EXPORT_SYMBOL vmlinux 0xe2d8901e km_is_alive +EXPORT_SYMBOL vmlinux 0xe2dcb2cc sync_inode +EXPORT_SYMBOL vmlinux 0xe2e8065e memdup_user +EXPORT_SYMBOL vmlinux 0xe2f425e7 rps_cpu_mask +EXPORT_SYMBOL vmlinux 0xe2f87723 sock_no_sendpage +EXPORT_SYMBOL vmlinux 0xe2f8e6cb mem_cgroup_begin_page_stat +EXPORT_SYMBOL vmlinux 0xe2fae716 kmemdup +EXPORT_SYMBOL vmlinux 0xe3121981 of_iomap +EXPORT_SYMBOL vmlinux 0xe330aa2f neigh_parms_release +EXPORT_SYMBOL vmlinux 0xe336b3fa eth_header_cache +EXPORT_SYMBOL vmlinux 0xe34903b6 __secpath_destroy +EXPORT_SYMBOL vmlinux 0xe3513cc5 swiotlb_unmap_sg +EXPORT_SYMBOL vmlinux 0xe3541e5f set_blocksize +EXPORT_SYMBOL vmlinux 0xe361e443 icmpv6_send +EXPORT_SYMBOL vmlinux 0xe39e8610 arp_tbl +EXPORT_SYMBOL vmlinux 0xe3b96a84 tcp_v4_do_rcv +EXPORT_SYMBOL vmlinux 0xe3c32e6b blk_put_queue +EXPORT_SYMBOL vmlinux 0xe3c625a4 param_ops_short +EXPORT_SYMBOL vmlinux 0xe3d4a795 __dax_fault +EXPORT_SYMBOL vmlinux 0xe3d6f284 fb_find_mode_cvt +EXPORT_SYMBOL vmlinux 0xe40030e1 blk_start_queue +EXPORT_SYMBOL vmlinux 0xe413b759 jbd2_journal_start_reserved +EXPORT_SYMBOL vmlinux 0xe4537622 neigh_resolve_output +EXPORT_SYMBOL vmlinux 0xe468af8c simple_rename +EXPORT_SYMBOL vmlinux 0xe484e35f ioread32 +EXPORT_SYMBOL vmlinux 0xe49586de cdrom_check_events +EXPORT_SYMBOL vmlinux 0xe4ab5bdc devm_gpiod_put +EXPORT_SYMBOL vmlinux 0xe4abffa9 netpoll_send_skb_on_dev +EXPORT_SYMBOL vmlinux 0xe4b6ebf2 blk_queue_io_min +EXPORT_SYMBOL vmlinux 0xe4f9ddbb __register_chrdev +EXPORT_SYMBOL vmlinux 0xe4fe44a6 param_set_charp +EXPORT_SYMBOL vmlinux 0xe4fe8ca1 _raw_spin_unlock_bh +EXPORT_SYMBOL vmlinux 0xe523ad75 synchronize_irq +EXPORT_SYMBOL vmlinux 0xe53ee17a tty_unlock +EXPORT_SYMBOL vmlinux 0xe5496396 generic_block_bmap +EXPORT_SYMBOL vmlinux 0xe550de30 mnt_set_expiry +EXPORT_SYMBOL vmlinux 0xe551526c ipv6_setsockopt +EXPORT_SYMBOL vmlinux 0xe5674646 tcp_rcv_established +EXPORT_SYMBOL vmlinux 0xe5734810 __wait_on_bit_lock +EXPORT_SYMBOL vmlinux 0xe5762122 __bforget +EXPORT_SYMBOL vmlinux 0xe57878a1 in6_pton +EXPORT_SYMBOL vmlinux 0xe5867808 dlci_ioctl_set +EXPORT_SYMBOL vmlinux 0xe59608ac devfreq_resume_device +EXPORT_SYMBOL vmlinux 0xe599119b key_task_permission +EXPORT_SYMBOL vmlinux 0xe5c17fdd gnet_stats_copy_rate_est +EXPORT_SYMBOL vmlinux 0xe5c4d5dc lock_sock_nested +EXPORT_SYMBOL vmlinux 0xe5c6d237 forget_cached_acl +EXPORT_SYMBOL vmlinux 0xe5c78a99 do_blank_screen +EXPORT_SYMBOL vmlinux 0xe5ed5467 xfrm_policy_walk_init +EXPORT_SYMBOL vmlinux 0xe602de23 pagecache_get_page +EXPORT_SYMBOL vmlinux 0xe6170d9f blk_init_allocated_queue +EXPORT_SYMBOL vmlinux 0xe61a7c4e forget_all_cached_acls +EXPORT_SYMBOL vmlinux 0xe627b5e4 scsi_add_device +EXPORT_SYMBOL vmlinux 0xe6344978 alloc_fddidev +EXPORT_SYMBOL vmlinux 0xe6361112 elv_dispatch_add_tail +EXPORT_SYMBOL vmlinux 0xe63eb423 security_old_inode_init_security +EXPORT_SYMBOL vmlinux 0xe6458a07 cdev_del +EXPORT_SYMBOL vmlinux 0xe64a8c71 phy_disconnect +EXPORT_SYMBOL vmlinux 0xe65b8bad ppp_output_wakeup +EXPORT_SYMBOL vmlinux 0xe65ea6b2 fb_find_mode +EXPORT_SYMBOL vmlinux 0xe66729a8 nf_log_packet +EXPORT_SYMBOL vmlinux 0xe679eaeb scsi_register +EXPORT_SYMBOL vmlinux 0xe67eba1a commit_creds +EXPORT_SYMBOL vmlinux 0xe693a6ce vme_get_size +EXPORT_SYMBOL vmlinux 0xe697d108 __blk_iopoll_complete +EXPORT_SYMBOL vmlinux 0xe69f81e7 set_page_dirty +EXPORT_SYMBOL vmlinux 0xe6ad05f0 padata_stop +EXPORT_SYMBOL vmlinux 0xe6b69a39 dquot_resume +EXPORT_SYMBOL vmlinux 0xe6dd236d clear_pages +EXPORT_SYMBOL vmlinux 0xe6ebc016 key_create_or_update +EXPORT_SYMBOL vmlinux 0xe6fbe430 can_do_mlock +EXPORT_SYMBOL vmlinux 0xe70d384a rtnl_set_sk_err +EXPORT_SYMBOL vmlinux 0xe72fa1a7 kset_unregister +EXPORT_SYMBOL vmlinux 0xe73420f5 deactivate_locked_super +EXPORT_SYMBOL vmlinux 0xe740ba9e input_get_keycode +EXPORT_SYMBOL vmlinux 0xe750de13 posix_lock_inode_wait +EXPORT_SYMBOL vmlinux 0xe7747d3d padata_alloc +EXPORT_SYMBOL vmlinux 0xe7878e2c poll_freewait +EXPORT_SYMBOL vmlinux 0xe790eb6f alloc_disk_node +EXPORT_SYMBOL vmlinux 0xe7a664c4 nf_hooks +EXPORT_SYMBOL vmlinux 0xe7a81967 audit_log_secctx +EXPORT_SYMBOL vmlinux 0xe7b6315e kblockd_schedule_delayed_work_on +EXPORT_SYMBOL vmlinux 0xe7b7ed54 __ip_dev_find +EXPORT_SYMBOL vmlinux 0xe7bf317d fsl_lbc_addr +EXPORT_SYMBOL vmlinux 0xe7c23188 blk_mq_requeue_request +EXPORT_SYMBOL vmlinux 0xe7c6d30e twl6040_clear_bits +EXPORT_SYMBOL vmlinux 0xe7ce7439 _memcpy_fromio +EXPORT_SYMBOL vmlinux 0xe7d3680f fifo_create_dflt +EXPORT_SYMBOL vmlinux 0xe7d4daac seq_list_next +EXPORT_SYMBOL vmlinux 0xe7d6d623 __dec_zone_page_state +EXPORT_SYMBOL vmlinux 0xe8214184 tcf_exts_destroy +EXPORT_SYMBOL vmlinux 0xe827a44b default_llseek +EXPORT_SYMBOL vmlinux 0xe82cc752 tcp_sockets_allocated +EXPORT_SYMBOL vmlinux 0xe837d1fc d_set_d_op +EXPORT_SYMBOL vmlinux 0xe859f302 md_update_sb +EXPORT_SYMBOL vmlinux 0xe883cb90 ppp_dev_name +EXPORT_SYMBOL vmlinux 0xe8841365 blk_pre_runtime_resume +EXPORT_SYMBOL vmlinux 0xe893fee7 mem_cgroup_end_page_stat +EXPORT_SYMBOL vmlinux 0xe8be1271 vfs_read +EXPORT_SYMBOL vmlinux 0xe8bea3bc qdisc_put_stab +EXPORT_SYMBOL vmlinux 0xe8c84f22 udp_lib_rehash +EXPORT_SYMBOL vmlinux 0xe8d17af2 __scsi_alloc_queue +EXPORT_SYMBOL vmlinux 0xe914e41e strcpy +EXPORT_SYMBOL vmlinux 0xe9378d58 idr_get_next +EXPORT_SYMBOL vmlinux 0xe9403008 __dev_kfree_skb_irq +EXPORT_SYMBOL vmlinux 0xe953b21f get_next_ino +EXPORT_SYMBOL vmlinux 0xe96dfd3f input_mt_destroy_slots +EXPORT_SYMBOL vmlinux 0xe990b075 ip6_xmit +EXPORT_SYMBOL vmlinux 0xe9a46104 fbcon_set_tileops +EXPORT_SYMBOL vmlinux 0xe9a63c2d __blk_end_request_all +EXPORT_SYMBOL vmlinux 0xe9e10b28 uart_get_divisor +EXPORT_SYMBOL vmlinux 0xe9efc86d inode_owner_or_capable +EXPORT_SYMBOL vmlinux 0xe9f18669 neigh_update +EXPORT_SYMBOL vmlinux 0xe9f6df1f dentry_path_raw +EXPORT_SYMBOL vmlinux 0xe9f7149c zlib_deflate_workspacesize +EXPORT_SYMBOL vmlinux 0xea00580d block_write_end +EXPORT_SYMBOL vmlinux 0xea054b22 nla_policy_len +EXPORT_SYMBOL vmlinux 0xea0d246d bioset_create +EXPORT_SYMBOL vmlinux 0xea16dd4c tcp_destroy_cgroup +EXPORT_SYMBOL vmlinux 0xea21e8b5 nobh_writepage +EXPORT_SYMBOL vmlinux 0xea236b7e swiotlb_sync_sg_for_device +EXPORT_SYMBOL vmlinux 0xea2aa4c2 proc_mkdir +EXPORT_SYMBOL vmlinux 0xea3011b2 bdgrab +EXPORT_SYMBOL vmlinux 0xea420e1d i8042_install_filter +EXPORT_SYMBOL vmlinux 0xea436938 fbcon_rotate_ccw +EXPORT_SYMBOL vmlinux 0xea5e50ca __mod_zone_page_state +EXPORT_SYMBOL vmlinux 0xea7987f1 key_update +EXPORT_SYMBOL vmlinux 0xea8dc468 tcf_em_tree_destroy +EXPORT_SYMBOL vmlinux 0xea968c96 ___ratelimit +EXPORT_SYMBOL vmlinux 0xeaa20bd7 tty_port_put +EXPORT_SYMBOL vmlinux 0xeab55cd1 twl6030_mmc_card_detect +EXPORT_SYMBOL vmlinux 0xeadb83d8 fput +EXPORT_SYMBOL vmlinux 0xeb074c12 vfs_rename +EXPORT_SYMBOL vmlinux 0xeb081760 input_mt_report_slot_state +EXPORT_SYMBOL vmlinux 0xeb103944 bio_get_nr_vecs +EXPORT_SYMBOL vmlinux 0xeb31f97e skb_copy_and_csum_dev +EXPORT_SYMBOL vmlinux 0xeb339776 would_dump +EXPORT_SYMBOL vmlinux 0xeb37101c audit_log_end +EXPORT_SYMBOL vmlinux 0xeb3907c0 should_remove_suid +EXPORT_SYMBOL vmlinux 0xeb55a931 __kfifo_max_r +EXPORT_SYMBOL vmlinux 0xeb8d93b5 trace_print_symbols_seq +EXPORT_SYMBOL vmlinux 0xeb8e042a i2c_smbus_write_i2c_block_data +EXPORT_SYMBOL vmlinux 0xeb90ab44 inet_sendmsg +EXPORT_SYMBOL vmlinux 0xeb9159a3 dentry_update_name_case +EXPORT_SYMBOL vmlinux 0xeb958e56 mark_buffer_dirty +EXPORT_SYMBOL vmlinux 0xeba2a1f7 rtas_indicator_present +EXPORT_SYMBOL vmlinux 0xebca942d devm_ioremap +EXPORT_SYMBOL vmlinux 0xebced172 inet_frags_init +EXPORT_SYMBOL vmlinux 0xebd18deb sg_pcopy_from_buffer +EXPORT_SYMBOL vmlinux 0xebd32efb seq_release_private +EXPORT_SYMBOL vmlinux 0xec035b4c blk_execute_rq +EXPORT_SYMBOL vmlinux 0xec09b709 iov_iter_get_pages +EXPORT_SYMBOL vmlinux 0xec1aa6ef memzero_explicit +EXPORT_SYMBOL vmlinux 0xec344cb7 bio_advance +EXPORT_SYMBOL vmlinux 0xec9ad604 led_set_brightness +EXPORT_SYMBOL vmlinux 0xeca1eb1d read_cache_pages +EXPORT_SYMBOL vmlinux 0xecaa8330 textsearch_unregister +EXPORT_SYMBOL vmlinux 0xecaea51f input_register_handler +EXPORT_SYMBOL vmlinux 0xecb0ef5e scsi_free_host_dev +EXPORT_SYMBOL vmlinux 0xecb44674 scsi_scan_target +EXPORT_SYMBOL vmlinux 0xecbb926f xor_altivec_3 +EXPORT_SYMBOL vmlinux 0xecbbbee7 md_integrity_add_rdev +EXPORT_SYMBOL vmlinux 0xecbcb8bb radix_tree_lookup_slot +EXPORT_SYMBOL vmlinux 0xecc4a7d3 netdev_master_upper_dev_get +EXPORT_SYMBOL vmlinux 0xecc9115c tcp_md5_do_add +EXPORT_SYMBOL vmlinux 0xeccfcc5c sdev_enable_disk_events +EXPORT_SYMBOL vmlinux 0xece784c2 rb_first +EXPORT_SYMBOL vmlinux 0xecea7f4b __destroy_inode +EXPORT_SYMBOL vmlinux 0xeced82e9 xfrm_policy_register_afinfo +EXPORT_SYMBOL vmlinux 0xecf3747d devm_release_resource +EXPORT_SYMBOL vmlinux 0xecf9a14f inet_frag_kill +EXPORT_SYMBOL vmlinux 0xed06e9ff phy_connect +EXPORT_SYMBOL vmlinux 0xed32c2fc scsi_ioctl +EXPORT_SYMBOL vmlinux 0xed4d917e elv_rb_former_request +EXPORT_SYMBOL vmlinux 0xed52fd6a blk_init_queue +EXPORT_SYMBOL vmlinux 0xed597524 qdisc_get_rtab +EXPORT_SYMBOL vmlinux 0xed6683f7 do_splice_from +EXPORT_SYMBOL vmlinux 0xed6c6208 macio_request_resource +EXPORT_SYMBOL vmlinux 0xed93f29e __kunmap_atomic +EXPORT_SYMBOL vmlinux 0xed983e60 bioset_create_nobvec +EXPORT_SYMBOL vmlinux 0xed9f9a20 __ctzsi2 +EXPORT_SYMBOL vmlinux 0xeda32441 tty_register_ldisc +EXPORT_SYMBOL vmlinux 0xedb79a79 inet_reqsk_alloc +EXPORT_SYMBOL vmlinux 0xedbaee5e nla_strcmp +EXPORT_SYMBOL vmlinux 0xedc03953 iounmap +EXPORT_SYMBOL vmlinux 0xedc410d0 udplite_table +EXPORT_SYMBOL vmlinux 0xedc42fa8 elv_add_request +EXPORT_SYMBOL vmlinux 0xedc8579e mmc_set_blockcount +EXPORT_SYMBOL vmlinux 0xede17e98 truncate_pagecache +EXPORT_SYMBOL vmlinux 0xedfa7a43 tty_chars_in_buffer +EXPORT_SYMBOL vmlinux 0xee17488d padata_alloc_possible +EXPORT_SYMBOL vmlinux 0xee2d0fc7 _local_bh_enable +EXPORT_SYMBOL vmlinux 0xee3496c3 dma_pool_alloc +EXPORT_SYMBOL vmlinux 0xee34f2a4 simple_setattr +EXPORT_SYMBOL vmlinux 0xee3586fa inode_sub_rsv_space +EXPORT_SYMBOL vmlinux 0xee3747f7 wait_for_key_construction +EXPORT_SYMBOL vmlinux 0xee59412f adb_try_handler_change +EXPORT_SYMBOL vmlinux 0xee688c5b zero_fill_bio +EXPORT_SYMBOL vmlinux 0xee6c7a0a blk_mq_delay_queue +EXPORT_SYMBOL vmlinux 0xee703cb4 kmap_high +EXPORT_SYMBOL vmlinux 0xee7a1c5e scsi_report_bus_reset +EXPORT_SYMBOL vmlinux 0xee91879b rb_first_postorder +EXPORT_SYMBOL vmlinux 0xee97c72a blk_mq_map_queue +EXPORT_SYMBOL vmlinux 0xee9b0554 fb_set_var +EXPORT_SYMBOL vmlinux 0xeea257c2 set_cached_acl +EXPORT_SYMBOL vmlinux 0xeea9dbaf bitmap_bitremap +EXPORT_SYMBOL vmlinux 0xeeaf175e remove_proc_subtree +EXPORT_SYMBOL vmlinux 0xeec0127a pci_domain_nr +EXPORT_SYMBOL vmlinux 0xeee031dc kthread_bind +EXPORT_SYMBOL vmlinux 0xeef161aa groups_free +EXPORT_SYMBOL vmlinux 0xeef8029b bitmap_endwrite +EXPORT_SYMBOL vmlinux 0xef185e83 del_gendisk +EXPORT_SYMBOL vmlinux 0xef1f8bdd pci_unmap_rom +EXPORT_SYMBOL vmlinux 0xef572584 blk_rq_count_integrity_sg +EXPORT_SYMBOL vmlinux 0xef5b0df8 __xfrm_policy_check +EXPORT_SYMBOL vmlinux 0xef7839ee rtmsg_ifinfo +EXPORT_SYMBOL vmlinux 0xef997c54 dquot_quota_sync +EXPORT_SYMBOL vmlinux 0xefb38213 blk_pm_runtime_init +EXPORT_SYMBOL vmlinux 0xefb4d5a6 ipv6_mc_check_mld +EXPORT_SYMBOL vmlinux 0xefb9deb4 ps2_end_command +EXPORT_SYMBOL vmlinux 0xefc32290 kernel_read +EXPORT_SYMBOL vmlinux 0xefd1624a vme_dma_free_attribute +EXPORT_SYMBOL vmlinux 0xefdd70ce security_secid_to_secctx +EXPORT_SYMBOL vmlinux 0xefde1bbe flush_dcache_range +EXPORT_SYMBOL vmlinux 0xefe48588 kmalloc_dma_caches +EXPORT_SYMBOL vmlinux 0xeff2ff82 blk_rq_init +EXPORT_SYMBOL vmlinux 0xeff5fe5d blk_mq_stop_hw_queue +EXPORT_SYMBOL vmlinux 0xeff9965f twl6040_power +EXPORT_SYMBOL vmlinux 0xf0009fee put_pages_list +EXPORT_SYMBOL vmlinux 0xf0391972 tcf_hash_check +EXPORT_SYMBOL vmlinux 0xf0399219 netdev_lower_get_next_private_rcu +EXPORT_SYMBOL vmlinux 0xf03fd58a vga_tryget +EXPORT_SYMBOL vmlinux 0xf047d0f7 blk_queue_io_opt +EXPORT_SYMBOL vmlinux 0xf04a3b82 sock_no_sendmsg +EXPORT_SYMBOL vmlinux 0xf05ffa15 fb_var_to_videomode +EXPORT_SYMBOL vmlinux 0xf065f629 ioread16be +EXPORT_SYMBOL vmlinux 0xf066c413 vme_slot_num +EXPORT_SYMBOL vmlinux 0xf0682715 devm_gpiod_get_array_optional +EXPORT_SYMBOL vmlinux 0xf079e4e5 revalidate_disk +EXPORT_SYMBOL vmlinux 0xf08c67de napi_alloc_frag +EXPORT_SYMBOL vmlinux 0xf09de776 get_random_int +EXPORT_SYMBOL vmlinux 0xf0ab538f md_integrity_register +EXPORT_SYMBOL vmlinux 0xf0c62d8e scsi_block_requests +EXPORT_SYMBOL vmlinux 0xf0d35733 __cleancache_invalidate_page +EXPORT_SYMBOL vmlinux 0xf0d52499 agp_find_bridge +EXPORT_SYMBOL vmlinux 0xf0d543ec eth_gro_receive +EXPORT_SYMBOL vmlinux 0xf0ef15b4 list_sort +EXPORT_SYMBOL vmlinux 0xf10526ac verify_spi_info +EXPORT_SYMBOL vmlinux 0xf10de535 ioread8 +EXPORT_SYMBOL vmlinux 0xf10eb00a eth_commit_mac_addr_change +EXPORT_SYMBOL vmlinux 0xf11cd6ce down_interruptible +EXPORT_SYMBOL vmlinux 0xf120872a dql_completed +EXPORT_SYMBOL vmlinux 0xf1363bd5 vm_mmap +EXPORT_SYMBOL vmlinux 0xf144818e sock_recvmsg +EXPORT_SYMBOL vmlinux 0xf147dcb2 hdmi_spd_infoframe_init +EXPORT_SYMBOL vmlinux 0xf15c8caa neigh_app_ns +EXPORT_SYMBOL vmlinux 0xf183d63d ndo_dflt_fdb_add +EXPORT_SYMBOL vmlinux 0xf195c682 fb_invert_cmaps +EXPORT_SYMBOL vmlinux 0xf1969a8e __usecs_to_jiffies +EXPORT_SYMBOL vmlinux 0xf19e9355 cpu_online_mask +EXPORT_SYMBOL vmlinux 0xf1abcec3 fsnotify_destroy_mark +EXPORT_SYMBOL vmlinux 0xf1c712fd set_security_override +EXPORT_SYMBOL vmlinux 0xf1d24d42 mb_cache_entry_alloc +EXPORT_SYMBOL vmlinux 0xf1da70bd vme_register_bridge +EXPORT_SYMBOL vmlinux 0xf1db1704 nla_memcpy +EXPORT_SYMBOL vmlinux 0xf1deabf2 div64_u64 +EXPORT_SYMBOL vmlinux 0xf1e06df1 gen_pool_set_algo +EXPORT_SYMBOL vmlinux 0xf1e98c74 avenrun +EXPORT_SYMBOL vmlinux 0xf20dabd8 free_irq +EXPORT_SYMBOL vmlinux 0xf21200f4 check_disk_size_change +EXPORT_SYMBOL vmlinux 0xf22881e8 lg_local_lock +EXPORT_SYMBOL vmlinux 0xf22f0396 __invalidate_device +EXPORT_SYMBOL vmlinux 0xf236d006 skb_trim +EXPORT_SYMBOL vmlinux 0xf23fcb99 __kfifo_in +EXPORT_SYMBOL vmlinux 0xf257faf2 __dev_getfirstbyhwtype +EXPORT_SYMBOL vmlinux 0xf2621707 get_super +EXPORT_SYMBOL vmlinux 0xf27563cb irq_stat +EXPORT_SYMBOL vmlinux 0xf27a4cc7 security_inode_readlink +EXPORT_SYMBOL vmlinux 0xf28a9813 of_node_put +EXPORT_SYMBOL vmlinux 0xf28b9319 crypto_sha1_finup +EXPORT_SYMBOL vmlinux 0xf28ebaf8 __getblk_slow +EXPORT_SYMBOL vmlinux 0xf2924df8 vc_cons +EXPORT_SYMBOL vmlinux 0xf2a0af8f backlight_device_registered +EXPORT_SYMBOL vmlinux 0xf2a5c963 blk_mq_complete_request +EXPORT_SYMBOL vmlinux 0xf2c43f3f zlib_deflate +EXPORT_SYMBOL vmlinux 0xf2ceb9b2 generic_write_checks +EXPORT_SYMBOL vmlinux 0xf30cb5c7 devm_input_allocate_device +EXPORT_SYMBOL vmlinux 0xf313da4e sha_transform +EXPORT_SYMBOL vmlinux 0xf322a206 bit_waitqueue +EXPORT_SYMBOL vmlinux 0xf324e1fd vm_insert_pfn +EXPORT_SYMBOL vmlinux 0xf3341268 __clear_user +EXPORT_SYMBOL vmlinux 0xf346231f seq_list_start_head +EXPORT_SYMBOL vmlinux 0xf349a7a7 kobject_del +EXPORT_SYMBOL vmlinux 0xf353a698 register_module_notifier +EXPORT_SYMBOL vmlinux 0xf3714bd7 iget_failed +EXPORT_SYMBOL vmlinux 0xf37cc4f2 __qdisc_calculate_pkt_len +EXPORT_SYMBOL vmlinux 0xf37fcb74 dev_mc_flush +EXPORT_SYMBOL vmlinux 0xf389fe60 __hw_addr_init +EXPORT_SYMBOL vmlinux 0xf38d1166 mb_cache_entry_get +EXPORT_SYMBOL vmlinux 0xf3916122 key_validate +EXPORT_SYMBOL vmlinux 0xf3916987 global_cursor_default +EXPORT_SYMBOL vmlinux 0xf3b6d8b3 abx500_get_register_interruptible +EXPORT_SYMBOL vmlinux 0xf3d918d3 jbd2_journal_clear_features +EXPORT_SYMBOL vmlinux 0xf3e0b89b devm_request_threaded_irq +EXPORT_SYMBOL vmlinux 0xf3e6402e __bitmap_equal +EXPORT_SYMBOL vmlinux 0xf3e92dea tcp_v4_conn_request +EXPORT_SYMBOL vmlinux 0xf4053fed pci_bus_find_capability +EXPORT_SYMBOL vmlinux 0xf40b2297 __crypto_memneq +EXPORT_SYMBOL vmlinux 0xf42dcaeb param_get_long +EXPORT_SYMBOL vmlinux 0xf42e9725 secpath_dup +EXPORT_SYMBOL vmlinux 0xf43334ba __netlink_dump_start +EXPORT_SYMBOL vmlinux 0xf441ac43 ioread8_rep +EXPORT_SYMBOL vmlinux 0xf4449388 timer_interrupt +EXPORT_SYMBOL vmlinux 0xf44a5c64 pci_find_parent_resource +EXPORT_SYMBOL vmlinux 0xf44c76e6 get_acl +EXPORT_SYMBOL vmlinux 0xf46fda56 netif_set_xps_queue +EXPORT_SYMBOL vmlinux 0xf474c21c bitmap_print_to_pagebuf +EXPORT_SYMBOL vmlinux 0xf474fdcb kfree_const +EXPORT_SYMBOL vmlinux 0xf490542a clear_page_dirty_for_io +EXPORT_SYMBOL vmlinux 0xf4b95b30 skb_dequeue_tail +EXPORT_SYMBOL vmlinux 0xf4bdbeb9 __frontswap_invalidate_area +EXPORT_SYMBOL vmlinux 0xf4f14de6 rtnl_trylock +EXPORT_SYMBOL vmlinux 0xf4f4c790 single_open +EXPORT_SYMBOL vmlinux 0xf5087694 __find_get_block +EXPORT_SYMBOL vmlinux 0xf5222143 _raw_spin_lock_irqsave +EXPORT_SYMBOL vmlinux 0xf52321e0 atomic64_sub +EXPORT_SYMBOL vmlinux 0xf5349724 alloc_fcdev +EXPORT_SYMBOL vmlinux 0xf53926dd of_scan_pci_bridge +EXPORT_SYMBOL vmlinux 0xf53d4c26 qdisc_class_hash_destroy +EXPORT_SYMBOL vmlinux 0xf5449585 blk_mq_stop_hw_queues +EXPORT_SYMBOL vmlinux 0xf547611d flow_cache_fini +EXPORT_SYMBOL vmlinux 0xf54c51a2 dma_pool_free +EXPORT_SYMBOL vmlinux 0xf551579e ndo_dflt_fdb_dump +EXPORT_SYMBOL vmlinux 0xf57e7b76 noop_llseek +EXPORT_SYMBOL vmlinux 0xf58fdd03 netdev_upper_dev_link +EXPORT_SYMBOL vmlinux 0xf5a085c4 gen_pool_destroy +EXPORT_SYMBOL vmlinux 0xf5a2b7f5 misc_deregister +EXPORT_SYMBOL vmlinux 0xf5a62ecc _memset_io +EXPORT_SYMBOL vmlinux 0xf5c2d34d hdmi_audio_infoframe_init +EXPORT_SYMBOL vmlinux 0xf5ca6578 udp_del_offload +EXPORT_SYMBOL vmlinux 0xf5e07081 scsi_device_quiesce +EXPORT_SYMBOL vmlinux 0xf5e1558d crash_shutdown_unregister +EXPORT_SYMBOL vmlinux 0xf5e6108a netif_schedule_queue +EXPORT_SYMBOL vmlinux 0xf5eb86ea blk_verify_command +EXPORT_SYMBOL vmlinux 0xf5fd3eda of_get_min_tck +EXPORT_SYMBOL vmlinux 0xf6388c56 sysctl_ip_default_ttl +EXPORT_SYMBOL vmlinux 0xf664eb64 tcp_mtup_init +EXPORT_SYMBOL vmlinux 0xf6770391 mac_pton +EXPORT_SYMBOL vmlinux 0xf677f854 xfrm_register_mode +EXPORT_SYMBOL vmlinux 0xf6789a40 trace_print_hex_seq +EXPORT_SYMBOL vmlinux 0xf67f4ed0 gen_pool_add_virt +EXPORT_SYMBOL vmlinux 0xf68285c0 register_inetaddr_notifier +EXPORT_SYMBOL vmlinux 0xf6858cc3 d_alloc_name +EXPORT_SYMBOL vmlinux 0xf68aad92 pcie_set_readrq +EXPORT_SYMBOL vmlinux 0xf69ace53 neigh_table_clear +EXPORT_SYMBOL vmlinux 0xf6bb4729 color_table +EXPORT_SYMBOL vmlinux 0xf6db4bc5 call_usermodehelper_exec +EXPORT_SYMBOL vmlinux 0xf6ebc03b net_ratelimit +EXPORT_SYMBOL vmlinux 0xf6f4f3ff udp_disconnect +EXPORT_SYMBOL vmlinux 0xf6fc8791 __bitmap_xor +EXPORT_SYMBOL vmlinux 0xf70384d7 __debugger_sstep +EXPORT_SYMBOL vmlinux 0xf71521ba atomic64_add_return +EXPORT_SYMBOL vmlinux 0xf72cb40d param_set_ulong +EXPORT_SYMBOL vmlinux 0xf7584a9c find_font +EXPORT_SYMBOL vmlinux 0xf75a7a7e bitmap_unplug +EXPORT_SYMBOL vmlinux 0xf76b88dc blk_mq_alloc_request +EXPORT_SYMBOL vmlinux 0xf7748886 __mark_inode_dirty +EXPORT_SYMBOL vmlinux 0xf7847e41 dev_get_flags +EXPORT_SYMBOL vmlinux 0xf78bd60f user_path_at_empty +EXPORT_SYMBOL vmlinux 0xf78f530c pci_release_region +EXPORT_SYMBOL vmlinux 0xf7a8f7da skb_free_datagram +EXPORT_SYMBOL vmlinux 0xf7c1c5e1 ioctl_by_bdev +EXPORT_SYMBOL vmlinux 0xf7ca7231 import_iovec +EXPORT_SYMBOL vmlinux 0xf7d2be44 d_instantiate_no_diralias +EXPORT_SYMBOL vmlinux 0xf7f98955 kernel_bind +EXPORT_SYMBOL vmlinux 0xf804439f load_nls +EXPORT_SYMBOL vmlinux 0xf811e69d scsi_eh_flush_done_q +EXPORT_SYMBOL vmlinux 0xf82485f8 inet_offloads +EXPORT_SYMBOL vmlinux 0xf827cb83 free_reserved_area +EXPORT_SYMBOL vmlinux 0xf82abc1d isa_dma_bridge_buggy +EXPORT_SYMBOL vmlinux 0xf82ec573 rb_prev +EXPORT_SYMBOL vmlinux 0xf8337c2d __blk_mq_end_request +EXPORT_SYMBOL vmlinux 0xf849582d agp_generic_enable +EXPORT_SYMBOL vmlinux 0xf864d8cd xfrm_policy_walk +EXPORT_SYMBOL vmlinux 0xf8654d52 make_kprojid +EXPORT_SYMBOL vmlinux 0xf8668b15 elv_rq_merge_ok +EXPORT_SYMBOL vmlinux 0xf86d50aa udp_lib_getsockopt +EXPORT_SYMBOL vmlinux 0xf86f3829 vfs_statfs +EXPORT_SYMBOL vmlinux 0xf8ba7885 udp_add_offload +EXPORT_SYMBOL vmlinux 0xf8d76849 mutex_lock_interruptible +EXPORT_SYMBOL vmlinux 0xf8ec807d sk_free +EXPORT_SYMBOL vmlinux 0xf8f6ce9c tty_vhangup +EXPORT_SYMBOL vmlinux 0xf8fc1e43 param_ops_ushort +EXPORT_SYMBOL vmlinux 0xf9069835 get_unmapped_area +EXPORT_SYMBOL vmlinux 0xf9151947 dm_register_target +EXPORT_SYMBOL vmlinux 0xf9174282 agp_generic_alloc_user +EXPORT_SYMBOL vmlinux 0xf91ec50d pci_match_id +EXPORT_SYMBOL vmlinux 0xf92817d4 dev_add_offload +EXPORT_SYMBOL vmlinux 0xf92b0dc9 i2c_release_client +EXPORT_SYMBOL vmlinux 0xf9340d1b generic_file_read_iter +EXPORT_SYMBOL vmlinux 0xf9348cbc xz_dec_run +EXPORT_SYMBOL vmlinux 0xf935ab8e flush_tlb_mm +EXPORT_SYMBOL vmlinux 0xf9380c07 sync_blockdev +EXPORT_SYMBOL vmlinux 0xf9399389 page_follow_link_light +EXPORT_SYMBOL vmlinux 0xf9489aa7 pci_find_hose_for_OF_device +EXPORT_SYMBOL vmlinux 0xf96ec83d mipi_dsi_generic_write +EXPORT_SYMBOL vmlinux 0xf9723be7 posix_acl_chmod +EXPORT_SYMBOL vmlinux 0xf9a482f9 msleep +EXPORT_SYMBOL vmlinux 0xf9a83fba sock_edemux +EXPORT_SYMBOL vmlinux 0xf9c39110 ipv6_chk_addr +EXPORT_SYMBOL vmlinux 0xf9e73082 scnprintf +EXPORT_SYMBOL vmlinux 0xf9f7a4a1 nla_append +EXPORT_SYMBOL vmlinux 0xf9f9f729 iommu_tbl_pool_init +EXPORT_SYMBOL vmlinux 0xfa1e2ca0 param_get_uint +EXPORT_SYMBOL vmlinux 0xfa32b471 tcp_openreq_init_rwin +EXPORT_SYMBOL vmlinux 0xfa408018 tcp_disconnect +EXPORT_SYMBOL vmlinux 0xfa599bb2 netlink_register_notifier +EXPORT_SYMBOL vmlinux 0xfa81ca84 pcibios_bus_to_resource +EXPORT_SYMBOL vmlinux 0xfa941ea5 km_state_notify +EXPORT_SYMBOL vmlinux 0xfaa7e3b0 of_find_backlight_by_node +EXPORT_SYMBOL vmlinux 0xfab9d457 key_invalidate +EXPORT_SYMBOL vmlinux 0xfaba9bf2 ip_generic_getfrag +EXPORT_SYMBOL vmlinux 0xfabe9c65 key_instantiate_and_link +EXPORT_SYMBOL vmlinux 0xfabfc84f devfreq_remove_governor +EXPORT_SYMBOL vmlinux 0xfac3b499 xfrm_state_walk_done +EXPORT_SYMBOL vmlinux 0xfac8865f sysctl_wmem_max +EXPORT_SYMBOL vmlinux 0xfacc975a kobject_get +EXPORT_SYMBOL vmlinux 0xfacd8e72 vme_dma_vme_attribute +EXPORT_SYMBOL vmlinux 0xfad6f910 cdrom_mode_sense +EXPORT_SYMBOL vmlinux 0xfadb5750 pmu_unlock +EXPORT_SYMBOL vmlinux 0xfae67b1f cap_mmap_addr +EXPORT_SYMBOL vmlinux 0xfae8479f __dst_free +EXPORT_SYMBOL vmlinux 0xfb0236e9 i8042_check_port_owner +EXPORT_SYMBOL vmlinux 0xfb08e27c netif_rx +EXPORT_SYMBOL vmlinux 0xfb17377d generic_file_llseek_size +EXPORT_SYMBOL vmlinux 0xfb1dff16 generic_writepages +EXPORT_SYMBOL vmlinux 0xfb1f8b9d i2c_smbus_read_block_data +EXPORT_SYMBOL vmlinux 0xfb224a28 setattr_copy +EXPORT_SYMBOL vmlinux 0xfb2f033d uart_get_baud_rate +EXPORT_SYMBOL vmlinux 0xfb2f12b3 blk_queue_unprep_rq +EXPORT_SYMBOL vmlinux 0xfb43f173 mach_powermac +EXPORT_SYMBOL vmlinux 0xfb477476 twl6040_get_vibralr_status +EXPORT_SYMBOL vmlinux 0xfb62df78 console_stop +EXPORT_SYMBOL vmlinux 0xfb6af58d recalc_sigpending +EXPORT_SYMBOL vmlinux 0xfb6bcdfc blk_register_region +EXPORT_SYMBOL vmlinux 0xfb77b4ed ethtool_op_get_ts_info +EXPORT_SYMBOL vmlinux 0xfb80377b max8925_set_bits +EXPORT_SYMBOL vmlinux 0xfb8e9d32 mdiobus_read +EXPORT_SYMBOL vmlinux 0xfb94103e __clzdi2 +EXPORT_SYMBOL vmlinux 0xfba83dac xfrm_stateonly_find +EXPORT_SYMBOL vmlinux 0xfbaaf01e console_lock +EXPORT_SYMBOL vmlinux 0xfbc4f89e io_schedule_timeout +EXPORT_SYMBOL vmlinux 0xfbec9849 vfs_link +EXPORT_SYMBOL vmlinux 0xfbee5a7a tty_port_free_xmit_buf +EXPORT_SYMBOL vmlinux 0xfc02b7ad sysctl_tcp_wmem +EXPORT_SYMBOL vmlinux 0xfc17b89f pci_request_regions_exclusive +EXPORT_SYMBOL vmlinux 0xfc1afa0e sock_efree +EXPORT_SYMBOL vmlinux 0xfc39e32f ioport_unmap +EXPORT_SYMBOL vmlinux 0xfc3b160f mempool_create_node +EXPORT_SYMBOL vmlinux 0xfc421c3f of_device_is_available +EXPORT_SYMBOL vmlinux 0xfc65459a kstrtoull_from_user +EXPORT_SYMBOL vmlinux 0xfc6d0563 __tcf_em_tree_match +EXPORT_SYMBOL vmlinux 0xfca6186b xfrm_policy_destroy +EXPORT_SYMBOL vmlinux 0xfcb4f98a of_gpio_simple_xlate +EXPORT_SYMBOL vmlinux 0xfcc2a43c utf32_to_utf8 +EXPORT_SYMBOL vmlinux 0xfcd26a96 fbcon_rotate_cw +EXPORT_SYMBOL vmlinux 0xfcd6262b tcf_action_exec +EXPORT_SYMBOL vmlinux 0xfcdead1a __lock_buffer +EXPORT_SYMBOL vmlinux 0xfcec0987 enable_irq +EXPORT_SYMBOL vmlinux 0xfcfa03ff fb_videomode_to_modelist +EXPORT_SYMBOL vmlinux 0xfd0c5038 adb_unregister +EXPORT_SYMBOL vmlinux 0xfd33b5fa cmdline_parts_find +EXPORT_SYMBOL vmlinux 0xfd450e93 mpage_readpages +EXPORT_SYMBOL vmlinux 0xfd6c21ac sched_autogroup_detach +EXPORT_SYMBOL vmlinux 0xfd71bc4c devfreq_monitor_stop +EXPORT_SYMBOL vmlinux 0xfd8acdae pci_get_slot +EXPORT_SYMBOL vmlinux 0xfd8c9d72 mmc_set_blocklen +EXPORT_SYMBOL vmlinux 0xfd99623a ip_frag_ecn_table +EXPORT_SYMBOL vmlinux 0xfd9a0f97 bdev_read_only +EXPORT_SYMBOL vmlinux 0xfd9cadfd udp_ioctl +EXPORT_SYMBOL vmlinux 0xfda01ad2 fddi_type_trans +EXPORT_SYMBOL vmlinux 0xfda2c017 devm_devfreq_remove_device +EXPORT_SYMBOL vmlinux 0xfdb0b5f8 devm_ioport_unmap +EXPORT_SYMBOL vmlinux 0xfdb64b13 register_md_cluster_operations +EXPORT_SYMBOL vmlinux 0xfdb6cedc _raw_read_unlock_bh +EXPORT_SYMBOL vmlinux 0xfdb9b629 ioread32be +EXPORT_SYMBOL vmlinux 0xfdc1d0b8 param_ops_string +EXPORT_SYMBOL vmlinux 0xfddc90ad textsearch_register +EXPORT_SYMBOL vmlinux 0xfded48ed enable_kernel_fp +EXPORT_SYMBOL vmlinux 0xfdfc0b3b fiemap_fill_next_extent +EXPORT_SYMBOL vmlinux 0xfe029963 unregister_inetaddr_notifier +EXPORT_SYMBOL vmlinux 0xfe114723 __fib6_flush_trees +EXPORT_SYMBOL vmlinux 0xfe229207 scsi_print_command +EXPORT_SYMBOL vmlinux 0xfe2f98fd neigh_parms_alloc +EXPORT_SYMBOL vmlinux 0xfe5d4bb2 sys_tz +EXPORT_SYMBOL vmlinux 0xfe65c96e iov_iter_copy_from_user_atomic +EXPORT_SYMBOL vmlinux 0xfe7c3c67 dump_align +EXPORT_SYMBOL vmlinux 0xfe7c4287 nr_cpu_ids +EXPORT_SYMBOL vmlinux 0xfe8e312f blk_end_request +EXPORT_SYMBOL vmlinux 0xfe9d78a9 pci_dev_get +EXPORT_SYMBOL vmlinux 0xfeb0d2c4 dev_get_stats +EXPORT_SYMBOL vmlinux 0xfeb7dd05 __pskb_pull_tail +EXPORT_SYMBOL vmlinux 0xfec2fd46 inode_sub_bytes +EXPORT_SYMBOL vmlinux 0xfeca7590 radix_tree_range_tag_if_tagged +EXPORT_SYMBOL vmlinux 0xfecbd9a4 pci_wait_for_pending_transaction +EXPORT_SYMBOL vmlinux 0xfedcdb60 seq_hlist_next_percpu +EXPORT_SYMBOL vmlinux 0xfef97ea3 agp_bind_memory +EXPORT_SYMBOL vmlinux 0xff0c2b7d jbd2_log_wait_commit +EXPORT_SYMBOL vmlinux 0xff0f0c49 mutex_trylock +EXPORT_SYMBOL vmlinux 0xff1765c7 rtas_call +EXPORT_SYMBOL vmlinux 0xff1e9dd8 seq_list_start +EXPORT_SYMBOL vmlinux 0xff447220 nla_reserve +EXPORT_SYMBOL vmlinux 0xff488f1c flush_hash_entry +EXPORT_SYMBOL vmlinux 0xff4e26fd d_splice_alias +EXPORT_SYMBOL vmlinux 0xff6878cf fb_default_cmap +EXPORT_SYMBOL vmlinux 0xff6acfe7 tc_classify +EXPORT_SYMBOL vmlinux 0xff6dea25 smp_hw_index +EXPORT_SYMBOL vmlinux 0xff6ee9d7 of_get_parent +EXPORT_SYMBOL vmlinux 0xff7a46aa fsnotify_put_mark +EXPORT_SYMBOL vmlinux 0xff9ca065 fb_edid_to_monspecs +EXPORT_SYMBOL vmlinux 0xffd5a395 default_wake_function +EXPORT_SYMBOL vmlinux 0xffdb82bc sg_free_table +EXPORT_SYMBOL vmlinux 0xffdf8106 no_llseek +EXPORT_SYMBOL_GPL crypto/af_alg 0x529918da af_alg_release +EXPORT_SYMBOL_GPL crypto/af_alg 0x58716898 af_alg_wait_for_completion +EXPORT_SYMBOL_GPL crypto/af_alg 0x60a8c431 af_alg_link_sg +EXPORT_SYMBOL_GPL crypto/af_alg 0x8d34bb14 af_alg_free_sg +EXPORT_SYMBOL_GPL crypto/af_alg 0x8e2f8380 af_alg_accept +EXPORT_SYMBOL_GPL crypto/af_alg 0x92dc0653 af_alg_unregister_type +EXPORT_SYMBOL_GPL crypto/af_alg 0xaeeb521d af_alg_make_sg +EXPORT_SYMBOL_GPL crypto/af_alg 0xb5c897fd af_alg_register_type +EXPORT_SYMBOL_GPL crypto/af_alg 0xc899197e af_alg_complete +EXPORT_SYMBOL_GPL crypto/af_alg 0xce5480c6 af_alg_cmsg_send +EXPORT_SYMBOL_GPL crypto/asymmetric_keys/pkcs7_message 0x0c495886 pkcs7_get_content_data +EXPORT_SYMBOL_GPL crypto/asymmetric_keys/pkcs7_message 0x44e8d9ac pkcs7_free_message +EXPORT_SYMBOL_GPL crypto/asymmetric_keys/pkcs7_message 0x4cc33646 pkcs7_parse_message +EXPORT_SYMBOL_GPL crypto/asymmetric_keys/pkcs7_message 0x883bd89d pkcs7_verify +EXPORT_SYMBOL_GPL crypto/asymmetric_keys/pkcs7_message 0xa2ca085f pkcs7_validate_trust +EXPORT_SYMBOL_GPL crypto/async_tx/async_memcpy 0x4e576fc2 async_memcpy +EXPORT_SYMBOL_GPL crypto/async_tx/async_pq 0x25147ea5 async_syndrome_val +EXPORT_SYMBOL_GPL crypto/async_tx/async_pq 0xc070c077 async_gen_syndrome +EXPORT_SYMBOL_GPL crypto/async_tx/async_raid6_recov 0xd3c8044f async_raid6_datap_recov +EXPORT_SYMBOL_GPL crypto/async_tx/async_raid6_recov 0xfd7a7529 async_raid6_2data_recov +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0x266adba3 __async_tx_find_channel +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0x321c0234 async_tx_submit +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0x3793db3e async_trigger_callback +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0xc6d17e8c async_tx_quiesce +EXPORT_SYMBOL_GPL crypto/async_tx/async_xor 0x43b0dd99 async_xor +EXPORT_SYMBOL_GPL crypto/async_tx/async_xor 0x7b06644e async_xor_val +EXPORT_SYMBOL_GPL crypto/authenc 0x587ef278 crypto_authenc_extractkeys +EXPORT_SYMBOL_GPL crypto/blowfish_common 0x56a48bd4 blowfish_setkey +EXPORT_SYMBOL_GPL crypto/cast5_generic 0x27278ca9 __cast5_encrypt +EXPORT_SYMBOL_GPL crypto/cast5_generic 0x4a2a3ca6 __cast5_decrypt +EXPORT_SYMBOL_GPL crypto/cast5_generic 0xf811709f cast5_setkey +EXPORT_SYMBOL_GPL crypto/cast6_generic 0x1291971c __cast6_setkey +EXPORT_SYMBOL_GPL crypto/cast6_generic 0x1e2c961f __cast6_decrypt +EXPORT_SYMBOL_GPL crypto/cast6_generic 0x4ded44ae cast6_setkey +EXPORT_SYMBOL_GPL crypto/cast6_generic 0x8f04034a __cast6_encrypt +EXPORT_SYMBOL_GPL crypto/cast_common 0x08aa6fb7 cast_s1 +EXPORT_SYMBOL_GPL crypto/cast_common 0x0c5fbf8a cast_s3 +EXPORT_SYMBOL_GPL crypto/cast_common 0xe39dd4b4 cast_s2 +EXPORT_SYMBOL_GPL crypto/cast_common 0xee83a4f3 cast_s4 +EXPORT_SYMBOL_GPL crypto/cryptd 0x036564ef cryptd_free_aead +EXPORT_SYMBOL_GPL crypto/cryptd 0x15abd41e cryptd_free_ablkcipher +EXPORT_SYMBOL_GPL crypto/cryptd 0x17c5a60f cryptd_alloc_aead +EXPORT_SYMBOL_GPL crypto/cryptd 0x197c30b0 cryptd_ablkcipher_child +EXPORT_SYMBOL_GPL crypto/cryptd 0x213046a6 cryptd_ahash_child +EXPORT_SYMBOL_GPL crypto/cryptd 0x530c9f08 cryptd_aead_child +EXPORT_SYMBOL_GPL crypto/cryptd 0x91b0e58b cryptd_shash_desc +EXPORT_SYMBOL_GPL crypto/cryptd 0x9c2c5b6d cryptd_alloc_ablkcipher +EXPORT_SYMBOL_GPL crypto/cryptd 0xb18bca29 cryptd_free_ahash +EXPORT_SYMBOL_GPL crypto/cryptd 0xc838c786 cryptd_alloc_ahash +EXPORT_SYMBOL_GPL crypto/crypto_null 0x21cd536a crypto_put_default_null_skcipher +EXPORT_SYMBOL_GPL crypto/crypto_null 0x542573a0 crypto_get_default_null_skcipher +EXPORT_SYMBOL_GPL crypto/des_generic 0xcfd9a2c0 des_ekey +EXPORT_SYMBOL_GPL crypto/des_generic 0xf8c78d49 __des3_ede_setkey +EXPORT_SYMBOL_GPL crypto/lrw 0x010b9884 lrw_crypt +EXPORT_SYMBOL_GPL crypto/lrw 0x3864eb66 lrw_free_table +EXPORT_SYMBOL_GPL crypto/lrw 0xcd074900 lrw_init_table +EXPORT_SYMBOL_GPL crypto/mcryptd 0x04c918e9 shash_ahash_mcryptd_digest +EXPORT_SYMBOL_GPL crypto/mcryptd 0x06ff2fef shash_ahash_mcryptd_finup +EXPORT_SYMBOL_GPL crypto/mcryptd 0x14bdd4d3 mcryptd_flusher +EXPORT_SYMBOL_GPL crypto/mcryptd 0x14de875d shash_ahash_mcryptd_update +EXPORT_SYMBOL_GPL crypto/mcryptd 0x6860010e mcryptd_alloc_ahash +EXPORT_SYMBOL_GPL crypto/mcryptd 0x774a32d3 mcryptd_shash_desc +EXPORT_SYMBOL_GPL crypto/mcryptd 0x7865678e shash_ahash_mcryptd_final +EXPORT_SYMBOL_GPL crypto/mcryptd 0xb40b2f10 mcryptd_free_ahash +EXPORT_SYMBOL_GPL crypto/mcryptd 0xb82bef3e mcryptd_ahash_child +EXPORT_SYMBOL_GPL crypto/rsa_generic 0xadc25bd8 rsa_parse_key +EXPORT_SYMBOL_GPL crypto/rsa_generic 0xf1b141d1 rsa_free_key +EXPORT_SYMBOL_GPL crypto/serpent_generic 0x5ddb33e9 __serpent_encrypt +EXPORT_SYMBOL_GPL crypto/serpent_generic 0x6a9f1684 serpent_setkey +EXPORT_SYMBOL_GPL crypto/serpent_generic 0x77b39cb4 __serpent_setkey +EXPORT_SYMBOL_GPL crypto/serpent_generic 0x8a1a99ad __serpent_decrypt +EXPORT_SYMBOL_GPL crypto/twofish_common 0x6c3229bb __twofish_setkey +EXPORT_SYMBOL_GPL crypto/twofish_common 0x84bde354 twofish_setkey +EXPORT_SYMBOL_GPL crypto/xts 0x1b9f79cb xts_crypt +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x2289de69 ahci_print_info +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x238ba06e ahci_qc_issue +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x352deef6 ahci_host_activate +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x3ace3696 ahci_do_softreset +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x43e7d7af ahci_sdev_attrs +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x52b91552 ahci_init_controller +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x544d10d7 ahci_ops +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x55b3b2ca ahci_error_handler +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x5c03ae85 ahci_dev_classify +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x5e2f4763 ahci_reset_em +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x5e763d5d ahci_reset_controller +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x8ba854ac ahci_em_messages +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xa16a06e3 ahci_pmp_retry_srst_ops +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xb167a35a ahci_save_initial_config +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xc0211b7a ahci_fill_cmd_slot +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xc0bf78d4 ahci_start_fis_rx +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xd7ea2100 ahci_start_engine +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xe9157156 ahci_shost_attrs +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xea50dad3 ahci_ignore_sss +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xedf20ef8 ahci_set_em_messages +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xeec121bd ahci_stop_engine +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xf46228d1 ahci_kick_engine +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xf65c9500 ahci_check_ready +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xf6977b97 ahci_port_resume +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x0d00ac5a ahci_platform_init_host +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x34d2de72 ahci_platform_ops +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x3af4cfcf ahci_platform_resume +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x421abd08 ahci_platform_resume_host +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x6a10820e ahci_platform_disable_resources +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x6b79ad21 ahci_platform_disable_regulators +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x6f26c5a7 ahci_platform_suspend_host +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x70fbf448 ahci_platform_disable_clks +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x926eb28d ahci_platform_suspend +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x9bf1e345 ahci_platform_enable_regulators +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0xaf42f43f ahci_platform_enable_clks +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0xe8006613 ahci_platform_get_resources +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0xedcda29e ahci_platform_enable_resources +EXPORT_SYMBOL_GPL drivers/ata/pata_platform 0xfe5c09df __pata_platform_probe +EXPORT_SYMBOL_GPL drivers/ata/pata_sis 0x5c790ebb sis_info133_for_sata +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-spmi 0x2b757148 devm_regmap_init_spmi_base +EXPORT_SYMBOL_GPL drivers/base/regmap/regmap-spmi 0x39afe210 regmap_init_spmi_ext +EXPORT_SYMBOL_GPL drivers/base/regmap/regmap-spmi 0x8f9acab4 devm_regmap_init_spmi_ext +EXPORT_SYMBOL_GPL drivers/base/regmap/regmap-spmi 0xfa782391 regmap_init_spmi_base +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x013f8e3b bcma_chipco_pll_write +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x38ad897d bcma_core_is_enabled +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x4797211a bcma_host_pci_down +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x5222fee6 bcma_chipco_get_alp_clock +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x61b949d6 bcma_chipco_regctl_maskset +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x63198f36 bcma_chipco_chipctl_maskset +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x66280bb8 bcma_core_enable +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x6bc16a0c bcma_driver_unregister +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x7db38765 bcma_find_core_unit +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x85aadfd2 bcma_host_pci_irq_ctl +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x8f24b6b1 bcma_chipco_pll_read +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x983b0cad bcma_chipco_gpio_outen +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x9ae9e28c bcma_chipco_gpio_control +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xb78c4e60 bcma_core_pll_ctl +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xb90170b5 bcma_core_disable +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xbba45119 bcma_host_pci_up +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xc4c0fc5b bcma_chipco_pll_maskset +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xcd17fa66 bcma_core_pci_power_save +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xe1cf65c0 bcma_chipco_b_mii_write +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xe3df8e25 bcma_core_set_clockmode +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xe764792a bcma_pmu_get_bus_clock +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xeadc9552 __bcma_driver_register +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xeba9e5d2 bcma_pmu_spuravoid_pllupdate +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xf22e6b44 bcma_chipco_gpio_out +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0x36e830cf btbcm_set_bdaddr +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0x727e1e74 btbcm_check_bdaddr +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0x8c77c3e4 btbcm_setup_apple +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0x923d6b59 btbcm_setup_patchram +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0xa521bcc9 btbcm_initialize +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0xd8f5777b btbcm_finalize +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0x22919b2a btintel_set_bdaddr +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0x70bfa6c8 btintel_check_bdaddr +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x217888f3 btmrvl_add_card +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x228511d7 btmrvl_pscan_window_reporting +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x23a63759 btmrvl_interrupt +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x2e237e77 btmrvl_send_hscfg_cmd +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x5e1d0b4f btmrvl_check_evtpkt +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x6536ec0d btmrvl_send_module_cfg_cmd +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x7398b5d8 btmrvl_register_hdev +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x78269d9b btmrvl_enable_hs +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x8e611ca5 btmrvl_remove_card +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xb7402b57 btmrvl_process_event +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xc4dbf01b btmrvl_enable_ps +EXPORT_SYMBOL_GPL drivers/bluetooth/btrtl 0xae9f7660 btrtl_setup_realtek +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0x1252d24c dw_dma_remove +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0x3b4b86ab dw_dma_filter +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0x88161734 dw_dma_disable +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0xa65996c5 dw_dma_enable +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0xfda33558 dw_dma_probe +EXPORT_SYMBOL_GPL drivers/dma/hsu/hsu_dma 0x42028af2 hsu_dma_probe +EXPORT_SYMBOL_GPL drivers/dma/hsu/hsu_dma 0x72656b84 hsu_dma_irq +EXPORT_SYMBOL_GPL drivers/dma/hsu/hsu_dma 0xc1edb120 hsu_dma_remove +EXPORT_SYMBOL_GPL drivers/dma/virt-dma 0x4019df65 vchan_find_desc +EXPORT_SYMBOL_GPL drivers/dma/virt-dma 0x52cc8a3b vchan_dma_desc_free_list +EXPORT_SYMBOL_GPL drivers/dma/virt-dma 0xcb30085b vchan_tx_submit +EXPORT_SYMBOL_GPL drivers/dma/virt-dma 0xd98849f2 vchan_init +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x01805d08 edac_pci_reset_delay_period +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x02f1d7ab edac_mc_handle_error +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x0c32ff8a edac_pci_alloc_index +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x1833a06c edac_mc_del_mc +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x1ebb3048 edac_pci_del_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x2be28ff6 edac_raw_mc_handle_error +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x2c8dd6b8 edac_mem_types +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x570147da edac_device_del_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x6898a6c8 edac_pci_alloc_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x6e3ff83a edac_device_alloc_index +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x740e091d find_mci_by_dev +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x7b86ec86 edac_pci_handle_npe +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xa355f00b edac_device_free_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xa62dc634 edac_device_add_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xb2eab53f edac_mc_alloc +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xb3811ff8 edac_pci_add_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xb9fff61d edac_device_alloc_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xc0dcb59e edac_layer_name +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xc616f77e edac_mc_add_mc_with_groups +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xc901455c edac_pci_create_generic_ctl +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xdefc597f edac_mc_free +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xdf3dd5df edac_device_handle_ue +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xe708e01a edac_device_handle_ce +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xe723291d edac_pci_release_generic_ctl +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xf230e1c7 edac_pci_free_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xf309f9cb edac_mc_find_csrow_by_page +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xfee223bb edac_pci_handle_pe +EXPORT_SYMBOL_GPL drivers/firewire/firewire-core 0xf4ade51f fw_card_release +EXPORT_SYMBOL_GPL drivers/gpio/gpio-generic 0x9a448d31 bgpio_remove +EXPORT_SYMBOL_GPL drivers/gpio/gpio-generic 0xd9008903 bgpio_init +EXPORT_SYMBOL_GPL drivers/gpio/gpio-max730x 0x7a808538 __max730x_remove +EXPORT_SYMBOL_GPL drivers/gpio/gpio-max730x 0xa8af3eb9 __max730x_probe +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x44c4fa79 drm_display_mode_to_videomode +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x586355c2 drm_class_device_unregister +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x82160a4d drm_display_mode_from_videomode +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xae866172 drm_class_device_register +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xb42de85f of_get_drm_display_mode +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xd88f2138 drm_do_get_edid +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0x129a142d ttm_dma_populate +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0x31806a80 ttm_dma_page_alloc_debugfs +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0x4c679658 ttm_dma_unpopulate +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0x6adf436b ttm_prime_fd_to_handle +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0xce36343e ttm_prime_handle_to_fd +EXPORT_SYMBOL_GPL drivers/hid/hid 0x02bdcb0a hid_report_raw_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0x05495392 hid_debug +EXPORT_SYMBOL_GPL drivers/hid/hid 0x0926c379 hidinput_count_leds +EXPORT_SYMBOL_GPL drivers/hid/hid 0x0f9467b3 hid_input_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x2dacd60e hid_check_keys_pressed +EXPORT_SYMBOL_GPL drivers/hid/hid 0x33b7fbfd hid_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x3968c76c hid_dump_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0x46e96338 hid_register_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x4906a967 hid_snto32 +EXPORT_SYMBOL_GPL drivers/hid/hid 0x4ee93e3b hidinput_calc_abs_res +EXPORT_SYMBOL_GPL drivers/hid/hid 0x59910a65 hid_open_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x62bb5819 hidraw_report_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0x6e528d53 hid_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x7636c182 hid_debug_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0x7e58047a hid_dump_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0x84a34cde __hid_register_driver +EXPORT_SYMBOL_GPL drivers/hid/hid 0x88813cd3 hid_resolv_usage +EXPORT_SYMBOL_GPL drivers/hid/hid 0x924f939a hid_parse_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x9bbdd26d hid_allocate_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0xadf00c96 hidinput_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0xb073b40f hidraw_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0xb333003f hid_ignore +EXPORT_SYMBOL_GPL drivers/hid/hid 0xb65b6c30 hid_unregister_driver +EXPORT_SYMBOL_GPL drivers/hid/hid 0xbd00e0e9 hidinput_find_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0xbf47904b hid_dump_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0xc1db76db hid_field_extract +EXPORT_SYMBOL_GPL drivers/hid/hid 0xc4bf6a11 hid_validate_values +EXPORT_SYMBOL_GPL drivers/hid/hid 0xcaaebe90 hid_set_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0xd1e195f5 hid_output_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0xd2ddfc78 hid_alloc_report_buf +EXPORT_SYMBOL_GPL drivers/hid/hid 0xd7d6c14a hid_dump_input +EXPORT_SYMBOL_GPL drivers/hid/hid 0xde5a2fe0 hid_add_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0xe1203062 hid_destroy_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0xe64f9d58 hidinput_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0xe8f6fb3b __hid_request +EXPORT_SYMBOL_GPL drivers/hid/hid 0xeb52e625 hidraw_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0xf43f24b8 hidinput_get_led_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0xf9c43375 hidinput_report_event +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat 0x2f622ea1 roccat_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat 0x8c4181ec roccat_report_event +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat 0xaeee7055 roccat_connect +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x11c7212d roccat_common2_sysfs_write +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x1b98f77b roccat_common2_sysfs_read +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x53e37ed7 roccat_common2_send_with_status +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x607ada20 roccat_common2_device_init_struct +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0xcc799596 roccat_common2_receive +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0xf5591b59 roccat_common2_send +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x2a561fd9 sensor_hub_input_get_attribute_info +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x6589aba1 sensor_hub_device_open +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x6d7f913c sensor_hub_register_callback +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x72109da8 sensor_hub_input_attr_get_raw_value +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x760aa02b sensor_hub_get_feature +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x7e36a72e sensor_hub_set_feature +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x85ee3f06 sensor_hub_remove_callback +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0xbd54f90d sensor_hub_device_close +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0xd1c7e8a1 hid_sensor_get_usage_index +EXPORT_SYMBOL_GPL drivers/hid/usbhid/usbhid 0x01fd453e usbhid_lookup_quirk +EXPORT_SYMBOL_GPL drivers/hid/usbhid/usbhid 0x56870a00 hiddev_hid_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x09be895f hsi_alloc_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x1073f395 hsi_get_channel_id_by_name +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x1a113b36 hsi_register_port_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x2f982c57 hsi_free_msg +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x2fd9e0fd hsi_add_clients_from_dt +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x33c5aed8 hsi_new_client +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x390566b0 hsi_unregister_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x41956ee4 hsi_register_client_driver +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x4fa99bd2 hsi_release_port +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x5429defe hsi_register_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x5aa33f86 hsi_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x5b6027b2 hsi_put_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x86f7b376 hsi_remove_client +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x88daa32a hsi_alloc_msg +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x94324687 hsi_unregister_port_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x948b40e5 hsi_async +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xad50f78f hsi_claim_port +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xff00db7b hsi_port_unregister_clients +EXPORT_SYMBOL_GPL drivers/hwmon/adt7x10 0x4f19de5a adt7x10_probe +EXPORT_SYMBOL_GPL drivers/hwmon/adt7x10 0x54e41eda adt7x10_remove +EXPORT_SYMBOL_GPL drivers/hwmon/adt7x10 0xf2454291 adt7x10_dev_pm_ops +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x0e18b714 pmbus_read_byte_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x2ca3a79b pmbus_write_word_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x30ceb8bb pmbus_regulator_ops +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x3db3bfc3 pmbus_do_probe +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x5a11ea7d pmbus_check_word_register +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x62e45fef pmbus_write_byte_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x65fc978f pmbus_clear_faults +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x67b6f113 pmbus_write_byte +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x871f5162 pmbus_read_word_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xa0a651a4 pmbus_do_remove +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xd8e32ec8 pmbus_check_byte_register +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xd9b6faeb pmbus_set_page +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xed6c5d7a pmbus_update_byte_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xf71b9002 pmbus_clear_cache +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xff8013b1 pmbus_get_driver_info +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x0bbf38d4 i2c_dw_clear_int +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x2c34e984 i2c_dw_enable +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x31200c9e i2c_dw_func +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x499b4396 i2c_dw_init +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x4ae1b68c i2c_dw_disable_int +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x562032d0 i2c_dw_disable +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x5bb1170b i2c_dw_isr +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0xbac488e6 i2c_dw_xfer +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0xd6f7401a i2c_dw_read_comp_param +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0xdf96a051 i2c_dw_is_enabled +EXPORT_SYMBOL_GPL drivers/i2c/i2c-mux 0x48514b3c i2c_add_mux_adapter +EXPORT_SYMBOL_GPL drivers/i2c/i2c-mux 0xda93ad26 i2c_del_mux_adapter +EXPORT_SYMBOL_GPL drivers/i2c/i2c-smbus 0x48ee2b9d i2c_handle_smbus_alert +EXPORT_SYMBOL_GPL drivers/i2c/i2c-smbus 0xc5def14d i2c_setup_smbus_alert +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x030c5f14 ad_sd_calibrate_all +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x1903f332 ad_sd_cleanup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x2945ee8d ad_sd_read_reg +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x3d0bd088 ad_sigma_delta_single_conversion +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x40000e79 ad_sd_set_comm +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x4de45bbc ad_sd_validate_trigger +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x5adc9f54 ad_sd_setup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x903d557e ad_sd_init +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xc160e87f ad_sd_write_reg +EXPORT_SYMBOL_GPL drivers/iio/adc/twl4030-madc 0x4362dc66 twl4030_get_madc_conversion +EXPORT_SYMBOL_GPL drivers/iio/adc/twl4030-madc 0xb1be4a75 twl4030_madc_conversion +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x00d1c0f1 adis_cleanup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x058313d5 adis_read_reg +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x4241ac36 adis_init +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x57e73225 adis_check_status +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x6563d144 adis_reset +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x7ed4c7de adis_remove_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x890b8cd2 adis_write_reg +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xd49ca435 adis_update_scan_mode +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xe8bc68ce adis_probe_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xea4a848a adis_initial_startup +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xf9d34858 adis_setup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xfda8e167 adis_single_conversion +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x01717564 iio_alloc_pollfunc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x02ae5dcb iio_get_channel_type +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x0d94a8c1 iio_buffer_get +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x195dc337 iio_dealloc_pollfunc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x1a351656 iio_push_to_buffers +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x267c0508 iio_channel_release_all_cb +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x26f6b499 iio_str_to_fixpoint +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x2a1fab3c iio_channel_stop_all_cb +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x38b8e0ef iio_buffer_put +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x416ab746 iio_read_channel_average_raw +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x42f9b0ca iio_channel_release +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x486763ad iio_read_channel_raw +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x5446b706 iio_map_array_register +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x554f3bc6 iio_convert_raw_to_processed +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x582a2922 iio_update_buffers +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x6b0d3d3b iio_enum_available_read +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x6ff983ba devm_iio_device_register +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x75999e01 devm_iio_trigger_free +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x7a711aef iio_channel_start_all_cb +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x829296a1 iio_channel_release_all +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x8f76ef89 devm_iio_device_free +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x919bb424 iio_channel_get_all +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x9427b534 iio_validate_scan_mask_onehot +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x961d7e2e iio_enum_read +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x9bac33b0 iio_channel_get +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x9d62168e devm_iio_device_alloc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xa135808c iio_scan_mask_query +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xa647af6f iio_channel_get_all_cb +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xbfab810a iio_write_channel_raw +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xc5570884 iio_channel_cb_get_channels +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xc8481139 devm_iio_device_unregister +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xd2096f33 iio_enum_write +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xe4278975 iio_read_channel_scale +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xebd06e29 iio_update_demux +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xef54b467 iio_read_channel_processed +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xf0a07e1c devm_iio_trigger_alloc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xff924347 iio_map_array_unregister +EXPORT_SYMBOL_GPL drivers/infiniband/core/ib_core 0xdbd019c4 ib_wq +EXPORT_SYMBOL_GPL drivers/input/ff-memless 0x1fff3865 input_ff_create_memless +EXPORT_SYMBOL_GPL drivers/input/matrix-keymap 0xf87094c7 matrix_keypad_parse_of_params +EXPORT_SYMBOL_GPL drivers/input/misc/adxl34x 0x49a4fcbd adxl34x_remove +EXPORT_SYMBOL_GPL drivers/input/misc/adxl34x 0x59c55d6e 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/touchscreen/cyttsp4_core 0x063fd9df cyttsp4_probe +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp4_core 0x9a6ca0d8 cyttsp4_pm_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp4_core 0xc2119061 cyttsp4_remove +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_core 0x23c1c886 cyttsp_remove +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_core 0x2ff5bc45 cyttsp_probe +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_core 0x32ba5edd cyttsp_pm_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_i2c_common 0x33186293 cyttsp_i2c_write_block_data +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_i2c_common 0x7a950535 cyttsp_i2c_read_block_data +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x06a174de wm97xx_set_gpio +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x11125134 wm9713_codec +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x162740ba wm97xx_unregister_mach_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x1c5390c9 wm97xx_reg_read +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x3312a268 wm97xx_read_aux_adc +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x35370907 wm97xx_config_gpio +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x47d9f6a1 wm97xx_register_mach_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x5280f7f0 wm97xx_reg_write +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x919fa61a wm97xx_get_gpio +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xad01c2e3 wm97xx_set_suspend_mode +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xc0064cf0 wm9705_codec +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xddb851aa wm9712_codec +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x0db8f3cc ipack_get_device +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x1060286c ipack_put_device +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x28184ff1 ipack_bus_register +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x37bd31e5 ipack_driver_register +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x42b85fc8 ipack_bus_unregister +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x718bf940 ipack_device_add +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x96a44e1a ipack_device_del +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0xa63bd3f2 ipack_device_init +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0xb922d077 ipack_driver_unregister +EXPORT_SYMBOL_GPL drivers/isdn/capi/kernelcapi 0x23359aff unregister_capictr_notifier +EXPORT_SYMBOL_GPL drivers/isdn/capi/kernelcapi 0xce1414b2 register_capictr_notifier +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x15ac1086 gigaset_isdn_rcv_err +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x16a5c379 gigaset_if_receive +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x1c6e3a0f gigaset_handle_modem_response +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x206ab582 gigaset_m10x_send_skb +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x323a0238 gigaset_stop +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x454aa44f gigaset_debuglevel +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x629d0330 gigaset_skb_sent +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x7458de76 gigaset_start +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x8eff32df gigaset_dbg_buffer +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x93d27827 gigaset_initdriver +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x957fc4e9 gigaset_fill_inbuf +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x97bf6ca9 gigaset_add_event +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x9da2345f gigaset_initcs +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xadaaa94a gigaset_skb_rcvd +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xb8a642f3 gigaset_shutdown +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xc93260da gigaset_freecs +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xe82ade66 gigaset_blockdriver +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xf1684942 gigaset_m10x_input +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xf69ab086 gigaset_freedriver +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0x281f14cb led_set_flash_timeout +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0x355d3729 led_classdev_flash_register +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0x50546181 led_get_flash_fault +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0x5f024318 led_set_flash_brightness +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0xcd858785 led_classdev_flash_unregister +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0xec8a22da led_update_flash_brightness +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 0x01bca83b wf_unregister_sensor +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0x0a0527be wf_register_client +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0x35315903 wf_put_control +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0x5b17d33c wf_find_control +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0x75147afa wf_set_overtemp +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0x94765fac wf_critical_overtemp +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0xa2f19a49 wf_is_overtemp +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0xb071409a wf_put_sensor +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0xb3034682 wf_register_control +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0xb4066f11 wf_get_sensor +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0xb8fd78e1 wf_get_control +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0xbcace2a5 wf_unregister_client +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0xce09d0bc wf_unregister_control +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0xd91119d8 wf_register_sensor +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0xed82a14f wf_clear_overtemp +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0xf597c385 wf_find_sensor +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x20f3638f mcb_request_mem +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x2d5e9d40 chameleon_parse_cells +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x303ff9d5 mcb_unregister_driver +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x9ba8538b mcb_device_register +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0xa2769ffa mcb_alloc_dev +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0xa44dd6ae mcb_get_irq +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0xa89d66fa __mcb_register_driver +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0xb0e15dd0 mcb_alloc_bus +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0xbd69832e mcb_bus_add_devices +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0xd0ecce8e mcb_bus_put +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0xd4effd6a mcb_release_bus +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0xf8512558 mcb_bus_get +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0xf9cca8f3 mcb_release_mem +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0xfd86dac7 mcb_free_dev +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x10e06e97 __tracepoint_bcache_btree_set_root +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x155ea9c7 __tracepoint_bcache_bypass_sequential +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x1822fd23 __tracepoint_bcache_btree_gc_coalesce +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x1f2ba9ac __tracepoint_bcache_journal_entry_full +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x260d47cf __tracepoint_bcache_btree_cache_cannibalize +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x27831e89 __tracepoint_bcache_journal_full +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x2dec45e0 __tracepoint_bcache_btree_write +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x347aebe1 __tracepoint_bcache_btree_node_free +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x41c861f0 __tracepoint_bcache_alloc_fail +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x480dc606 __tracepoint_bcache_invalidate +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x49856e5a __tracepoint_bcache_btree_node_compact +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x50e8c39f __tracepoint_bcache_write +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x574ba881 __tracepoint_bcache_btree_node_alloc +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x628eb712 __tracepoint_bcache_btree_insert_key +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x6770a402 __tracepoint_bcache_gc_copy_collision +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x785cfc9f __tracepoint_bcache_gc_end +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x91f2af34 __tracepoint_bcache_btree_node_alloc_fail +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xa09069a3 __tracepoint_bcache_writeback_collision +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xa591c5d6 __tracepoint_bcache_read +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xa6890b59 __tracepoint_bcache_btree_read +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xaf60c34b __tracepoint_bcache_journal_write +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xb950d2ae __tracepoint_bcache_request_start +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xbd4b89b6 __tracepoint_bcache_btree_node_split +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xce0e6218 __tracepoint_bcache_gc_copy +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xd40fba32 __tracepoint_bcache_gc_start +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xdc5ea5a5 __tracepoint_bcache_cache_insert +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xf58ce244 __tracepoint_bcache_journal_replay_key +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xf5bcbdc7 __tracepoint_bcache_read_retry +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xfc1d5275 __tracepoint_bcache_writeback +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xfcdf28c9 __tracepoint_bcache_request_end +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xffc308e4 __tracepoint_bcache_bypass_congested +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x09bacd74 dm_cell_error +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x17dd39d6 dm_deferred_set_create +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x20ecfce4 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 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 0x7554b1fc dm_cell_promote_or_release +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x79406b6f dm_bio_detain +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xb6d5c65d dm_deferred_set_add_work +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xb6e29d91 dm_bio_prison_free_cell +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xb70b342a dm_bio_prison_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xbf1d6ac0 dm_cell_release +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xca2e3a88 dm_deferred_entry_inc +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xf8f61437 dm_get_cell +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xfaef8de5 dm_cell_visit_release +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xfd30404e dm_cell_release_no_holder +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x0ad0dc4f dm_bufio_mark_buffer_dirty +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x22163b69 dm_bufio_release_move +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x3909d3a8 dm_bufio_prefetch +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x594952bd dm_bufio_read +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x62a23587 dm_bufio_get_device_size +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x6d3f57bd dm_bufio_get_client +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 0x8847154f dm_bufio_client_create +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x9b2b253a dm_bufio_get +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xa82b2066 dm_bufio_write_dirty_buffers +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xc9a3422d dm_bufio_write_dirty_buffers_async +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xd4bddf5c dm_bufio_issue_flush +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xdc69e37a dm_bufio_get_block_number +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xe004ee92 dm_bufio_new +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-cache 0x0e175d03 dm_cache_policy_register +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x3a15317c dm_cache_policy_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x88ac8e18 dm_cache_policy_get_name +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xa8e7b914 dm_cache_policy_get_hint_size +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xbe638d13 dm_cache_policy_create +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xc0119bf4 dm_cache_policy_unregister +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xd170102a dm_cache_policy_get_version +EXPORT_SYMBOL_GPL drivers/md/dm-multipath 0x5c0c82cb dm_register_path_selector +EXPORT_SYMBOL_GPL drivers/md/dm-multipath 0xbf64e247 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 0x09472122 dm_rh_dec +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 0x6bf03230 dm_rh_bio_to_region +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 0x8d4260bf dm_rh_delay +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x9d919b7e dm_rh_mark_nosync +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xa130d377 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 0xa8813ad6 dm_rh_region_to_sector +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xbe38a431 dm_rh_recovery_prepare +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xc66ce277 dm_rh_get_region_size +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xcab63c3d dm_rh_get_state +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xd5ec99c4 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 0xf2e42b06 dm_rh_inc_pending +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xf37a3cfe dm_rh_get_region_key +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 0x01445176 dm_btree_find_highest_key +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x0604db1b dm_btree_remove_leaves +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x11eab9fe dm_bm_read_lock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x150c85ce dm_tm_open_with_sm +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x1e3f728d dm_block_data +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x2025e954 dm_array_info_init +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x24fa6664 dm_bitset_set_bit +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x2c112836 dm_block_location +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x2e730a21 dm_bm_checksum +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 0x32b5f546 dm_array_empty +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x33c03da6 dm_sm_disk_open +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 0x3ad0f55b dm_bm_flush +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x40f7bd91 dm_tm_inc +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x4360913e dm_btree_find_lowest_key +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x5aed1dd7 dm_bitset_flush +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x5e6aea80 dm_btree_walk +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x619701dc dm_sm_disk_create +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x62c1b9ee dm_array_walk +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 0x72289260 dm_block_manager_destroy +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x7657e859 dm_bitset_clear_bit +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 0x80c89b3d dm_tm_unlock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x832bf228 dm_array_del +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x858c8d94 dm_array_set_value +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x88a7860f dm_block_manager_create +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x89f1e1cc dm_btree_insert_notify +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 0x966a8838 dm_btree_lookup +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x9b4b5b29 dm_bm_write_lock +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 0xa2507774 dm_tm_shadow_block +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xa87c5b4d dm_array_resize +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xab96bd2d dm_bitset_test_bit +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xaee02382 dm_btree_empty +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xb7bad799 dm_bm_unlock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xb9a6ecf8 dm_tm_dec +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xba47c03a dm_bitset_del +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xbcfdc290 dm_tm_read_lock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xbd50ebbb dm_btree_del +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xbe0497aa dm_tm_create_with_sm +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xca40abd5 dm_btree_insert +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xd041d62b dm_array_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 0xead1e727 dm_bm_write_lock_zero +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xed1e1f96 dm_btree_remove +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xed58cfa1 dm_bitset_empty +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xf12ec3cd dm_disk_bitset_init +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xffff2ac3 dm_bitset_resize +EXPORT_SYMBOL_GPL drivers/media/common/b2c2/b2c2-flexcop 0x66c0289a b2c2_flexcop_debug +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x13a0f6f1 saa7146_pgtable_free +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x13f4e6f9 saa7146_vfree_destroy_pgtable +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x193d768a saa7146_setgpio +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x29199173 saa7146_vmalloc_build_pgtable +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x322ed368 saa7146_pgtable_build_single +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x49d5edaa saa7146_wait_for_debi_done +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x622a1f56 saa7146_unregister_extension +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x6beee3b2 saa7146_pgtable_alloc +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xae6affa8 saa7146_register_extension +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xd9ecaa58 saa7146_i2c_adapter_prepare +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xe3cd9b5c saa7146_debug +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x07dc0eef saa7146_stop_preview +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x08a1eb08 saa7146_vv_init +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x1b3d7005 saa7146_start_preview +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x1bb16f13 saa7146_register_device +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x9bde8acf saa7146_unregister_device +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0xbe21fb56 saa7146_set_hps_source_and_sync +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0xc618ed62 saa7146_vv_release +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x1bc866ac sms_board_lna_control +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x21e36bf2 smscore_registry_getmode +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x229b7f80 smscore_register_client +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x263b91b8 smscore_register_hotplug +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x2bdb20e2 smscore_start_device +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x31b76690 smscore_unregister_device +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x37d91069 smsendian_handle_tx_message +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x436b2b72 smscore_onresponse +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x45284ae9 smsendian_handle_rx_message +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x539d56ef sms_board_power +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x5b796652 sms_board_led_feedback +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x5f5565dc smscore_getbuffer +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x61cf3acf smscore_register_device +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 0x790fb3be smscore_unregister_hotplug +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 0x845dc968 sms_board_setup +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x9c2225ed smscore_translate_msg +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xa58a73d3 smscore_get_device_mode +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xb69e1267 smscore_putbuffer +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xbbdb5c42 smscore_unregister_client +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xca4af4cb smscore_set_board_id +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xdcc1a979 smscore_get_board_id +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xf5fbc7dd sms_board_event +EXPORT_SYMBOL_GPL drivers/media/dvb-frontends/as102_fe 0xf28f1432 as102_attach +EXPORT_SYMBOL_GPL drivers/media/dvb-frontends/cx24117 0x6ff5091f cx24117_attach +EXPORT_SYMBOL_GPL drivers/media/dvb-frontends/tda18271c2dd 0x2276bf43 tda18271c2dd_attach +EXPORT_SYMBOL_GPL drivers/media/media 0x0d9e4421 media_entity_remove_links +EXPORT_SYMBOL_GPL drivers/media/media 0x13b627fe media_entity_cleanup +EXPORT_SYMBOL_GPL drivers/media/media 0x295c6254 media_entity_setup_link +EXPORT_SYMBOL_GPL drivers/media/media 0x2d1f7e8f media_entity_pipeline_start +EXPORT_SYMBOL_GPL drivers/media/media 0x3b21b077 __media_entity_remove_links +EXPORT_SYMBOL_GPL drivers/media/media 0x3d24ac63 media_entity_put +EXPORT_SYMBOL_GPL drivers/media/media 0x4004750a __media_device_register +EXPORT_SYMBOL_GPL drivers/media/media 0x6317123a media_entity_graph_walk_start +EXPORT_SYMBOL_GPL drivers/media/media 0x72f65ae4 media_device_unregister +EXPORT_SYMBOL_GPL drivers/media/media 0x7e723778 media_entity_graph_walk_next +EXPORT_SYMBOL_GPL drivers/media/media 0x931f14cb media_device_register_entity +EXPORT_SYMBOL_GPL drivers/media/media 0x9f154bce media_entity_find_link +EXPORT_SYMBOL_GPL drivers/media/media 0x9f89fada media_entity_remote_pad +EXPORT_SYMBOL_GPL drivers/media/media 0xae070b76 media_device_unregister_entity +EXPORT_SYMBOL_GPL drivers/media/media 0xbe6d73f5 media_entity_get +EXPORT_SYMBOL_GPL drivers/media/media 0xe31bb927 media_entity_pipeline_stop +EXPORT_SYMBOL_GPL drivers/media/media 0xe7959849 media_entity_create_link +EXPORT_SYMBOL_GPL drivers/media/media 0xf959391c media_entity_init +EXPORT_SYMBOL_GPL drivers/media/pci/cx88/cx88xx 0x4bae10ac cx88_setup_xc3028 +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x0ff97be9 mantis_gpio_set_bits +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x1244822e mantis_uart_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x2829f456 mantis_dma_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x2a5bec72 mantis_pci_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x2c5bdda9 mantis_frontend_power +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x2d0c0cc0 mantis_stream_control +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x31be01e4 mantis_i2c_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x4a70ec44 mantis_frontend_soft_reset +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x552bb5c5 mantis_get_mac +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x5a731d8b mantis_dvb_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x8c6ab00a mantis_input_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x989fa60c mantis_ca_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x9ad58d03 mantis_pci_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x9dcbe6ee mantis_dvb_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xbe5436d3 mantis_input_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xbf07cee6 mantis_ca_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xcf519bac mantis_uart_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xef910f33 mantis_dma_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xf606fa81 mantis_i2c_exit +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x01286ef9 saa7134_vb2_buffer_queue +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x0fcec4b3 saa7134_g_frequency +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x1b96d222 saa7134_enum_input +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x28d73392 saa7134_s_std +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x589d0826 saa7134_querystd +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x6c1ad9e3 saa7134_stop_streaming +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x8147d02a saa7134_ts_qops +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x837f87cc saa7134_s_tuner +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xa9899a09 saa7134_ts_queue_setup +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xb8726cd5 saa7134_ts_buffer_init +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xb966f501 saa7134_g_tuner +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xbe45c627 saa7134_querycap +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xc434da55 saa7134_s_frequency +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xc847b975 saa7134_g_std +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xc9f8fc54 saa7134_ts_stop_streaming +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xd0ef7d9e saa7134_ts_start_streaming +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xd456b56c saa7134_g_input +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xd70c8a9f saa7134_ts_buffer_prepare +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xda0063ce saa7134_s_input +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x0d0b6f01 ttpci_budget_init_hooks +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x16d8bc91 ttpci_budget_debiwrite +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x2aca8cb0 ttpci_budget_irq10_handler +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x3c6c4eb7 ttpci_budget_deinit +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x7948c222 budget_debug +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x7a5cf979 ttpci_budget_debiread +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0xa18bc4d7 ttpci_budget_set_video_port +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0xc8e7797b ttpci_budget_init +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0x0b2585ce xvip_get_format_by_fourcc +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0x2e6a4f26 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 0x490bd11c xvip_get_format_by_code +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0x5a757bb4 xvip_cleanup_resources +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0x6e97113a xvip_enum_frame_size +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0x88f8bccb xvip_clr_or_set +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0x8d9ca6f3 xvip_init_resources +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0x94beb3a5 xvip_of_get_format +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0xfc51c9ea xvip_clr_and_set +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-vtc 0x1186957b xvtc_of_get +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/radio/shark2 0x09f88415 radio_tea5777_exit +EXPORT_SYMBOL_GPL drivers/media/radio/shark2 0xa66b9391 radio_tea5777_init +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x004c7ac7 rc_map_register +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x204d9d38 ir_raw_event_set_idle +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x2431c3d6 rc_g_keycode_from_table +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x3f902502 ir_raw_event_handle +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x43d21956 ir_raw_event_store_with_filter +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x477235c2 rc_register_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x553efb91 rc_core_debug +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x5e4e36b6 rc_open +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x65c71726 rc_keydown +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x68506852 ir_raw_event_store +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x7712ded4 rc_keydown_notimeout +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x7da50e47 rc_map_unregister +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x93e43a49 rc_map_get +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x9b0f35b2 ir_raw_event_store_edge +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xc54c624f rc_repeat +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xca34efad rc_allocate_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xec1c13e2 rc_free_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xf08214b9 rc_unregister_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xf66c64a9 rc_keyup +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xf9398f2e rc_close +EXPORT_SYMBOL_GPL drivers/media/tuners/mt2063 0x12afe63a mt2063_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/mt20xx 0x6fda4344 microtune_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/mxl5007t 0x4015e6eb mxl5007t_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/r820t 0x3233e726 r820t_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda18271 0x1142fb7f tda18271_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda827x 0x48baeb8e tda827x_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda8290 0x5f5828ce tda829x_probe +EXPORT_SYMBOL_GPL drivers/media/tuners/tda8290 0xb540f488 tda829x_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda9887 0x4f8d2bed tda9887_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5761 0xbe7930c0 tea5761_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5761 0xd8e3392e tea5761_autodetection +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5767 0x1b8cabc9 tea5767_autodetection +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5767 0x57f79a9e tea5767_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tuner-simple 0x35a4eb90 simple_tuner_attach +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x017ea7c7 cx231xx_tuner_callback +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x092d9eae cx231xx_set_mode +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x1c4d95ed cx231xx_uninit_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x1e313122 cx231xx_demod_reset +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x203baa73 cx231xx_uninit_bulk +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x35dd20c8 cx231xx_init_bulk +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x37da7541 cx231xx_capture_start +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x57ec39b9 cx231xx_uninit_vbi_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x647ea7d4 cx231xx_disable656 +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x6b7b9906 cx231xx_send_usb_command +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x6c59222d cx231xx_enable656 +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x6c79ea03 cx231xx_unmute_audio +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x752547ac cx231xx_get_i2c_adap +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x90ad3d3f cx231xx_enable_i2c_port_3 +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x991bc774 cx231xx_dev_init +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xa35d7e8c cx231xx_set_alt_setting +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xa4c06232 cx231xx_init_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xaf10b97d cx231xx_init_vbi_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xbe28578a cx231xx_dev_uninit +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xc79422be cx231xx_send_gpio_cmd +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xeb597112 is_fw_load +EXPORT_SYMBOL_GPL drivers/media/usb/dvb-usb-v2/mxl111sf-demod 0x30c6ad15 mxl111sf_demod_attach +EXPORT_SYMBOL_GPL drivers/media/usb/dvb-usb-v2/mxl111sf-tuner 0xdfa53acb mxl111sf_tuner_attach +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x0e69e2f5 em28xx_audio_setup +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x13721157 em28xx_stop_urbs +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x23040367 em28xx_alloc_urbs +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x34f2dfdb em28xx_write_regs +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x4de9bc48 em28xx_uninit_usb_xfer +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x5299d065 em28xx_setup_xc3028 +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x6d578f78 em28xx_boards +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x7019e206 em28xx_toggle_reg_bits +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x7588ac35 em28xx_init_camera +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x7abed898 em28xx_write_reg_bits +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x7fc8652c em28xx_tuner_callback +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x907f247f em28xx_write_ac97 +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x9359c8b6 em28xx_find_led +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x938bcfef em28xx_init_usb_xfer +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x9d844584 em28xx_write_reg +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xa1a33681 em28xx_read_reg +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xa5181a46 em28xx_gpio_set +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xcacda857 em28xx_read_ac97 +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xcd75ef7f em28xx_free_device +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xe009b0b3 em28xx_audio_analog_set +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xff15d097 em28xx_set_mode +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x2309a6d6 tm6000_xc5000_callback +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x45918c91 tm6000_get_reg +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x4616c570 tm6000_set_reg +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x5e49f379 tm6000_set_reg_mask +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x89b611dd tm6000_debug +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x9d16913e tm6000_set_audio_bitrate +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0xdff8e89d tm6000_tuner_callback +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x01c483a9 v4l2_get_timestamp +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x2ba560bc v4l2_i2c_new_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x44966287 v4l2_spi_subdev_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x76a512f8 v4l2_i2c_new_subdev_board +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x813f3de4 v4l2_find_nearest_format +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0xc6bb6027 v4l2_i2c_subdev_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0xd9d10752 v4l2_i2c_subdev_addr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0xf2a353ac v4l2_i2c_tuner_addrs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0xf5ef842e v4l_bound_align_image +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0xf6fe3d43 v4l2_spi_new_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x08982d59 v4l2_match_dv_timings +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x4103badb v4l2_print_dv_timings +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x5491c182 v4l2_enum_dv_timings_cap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x67b8205b v4l2_detect_cvt +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x6f344bb9 v4l2_calc_aspect_ratio +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0xb0891da2 v4l2_dv_timings_presets +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0xdfa5a008 v4l2_valid_dv_timings +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0xf0e1988c v4l2_find_dv_timings_cap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0xf98d0f9d v4l2_detect_gtf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-flash-led-class 0x51dd42d8 v4l2_flash_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-flash-led-class 0xbeb04ba3 v4l2_flash_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x05e3c95c v4l2_m2m_ioctl_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x0c524edd v4l2_m2m_ioctl_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x0d455289 v4l2_m2m_ctx_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x0f0d0ead v4l2_m2m_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x17eb0eee v4l2_m2m_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x209f924b v4l2_m2m_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x2686aa23 v4l2_m2m_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x2752e4e5 v4l2_m2m_ctx_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x40a651bc v4l2_m2m_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x54a7e9d3 v4l2_m2m_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x551c06bb v4l2_m2m_buf_queue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x7ccdff4b v4l2_m2m_ioctl_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x8003bed4 v4l2_m2m_next_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x8662fbe6 v4l2_m2m_fop_mmap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x86e0054d v4l2_m2m_try_schedule +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x8997494b v4l2_m2m_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xa6cf0f61 v4l2_m2m_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xac61d41d v4l2_m2m_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xb4d045d1 v4l2_m2m_ioctl_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xc32d36be v4l2_m2m_ioctl_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xc6fca5ad v4l2_m2m_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xd01d5fc3 v4l2_m2m_ioctl_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xd20b898c v4l2_m2m_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xdc370c1f v4l2_m2m_ioctl_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xe020eeb0 v4l2_m2m_ioctl_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xe7364d6a v4l2_m2m_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xf4b7c632 v4l2_m2m_ioctl_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xf6e26531 v4l2_m2m_buf_remove +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xfe628c1c v4l2_m2m_fop_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x03a023b8 videobuf_queue_to_vaddr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x0850e355 videobuf_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x1a9452fb videobuf_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x23ee3f85 videobuf_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x2a57e4fc videobuf_read_one +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x34f28408 __videobuf_mmap_setup +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x35bae735 videobuf_queue_core_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x365905b8 videobuf_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x433f064a videobuf_queue_is_busy +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x43aff372 videobuf_mmap_mapper +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x50a88659 videobuf_mmap_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x77551074 videobuf_iolock +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x7ee4d659 videobuf_waiton +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x7fc84520 videobuf_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x8f4b91cf videobuf_queue_cancel +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x9f83bb2f videobuf_mmap_setup +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xab7fdb6f videobuf_stop +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xb1415a9d videobuf_next_field +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xd4d5ccdb videobuf_read_start +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xec56b653 videobuf_read_stream +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xf23a5fba videobuf_alloc_vb +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xf45f90ac videobuf_poll_stream +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xf48c6e79 videobuf_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xf8fc7643 videobuf_read_stop +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x0a24287f 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 0xb7ddc947 videobuf_dma_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0xc3b6bf0b videobuf_queue_sg_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0xea0f97b6 videobuf_to_dma +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-vmalloc 0x2dd2eb68 videobuf_to_vmalloc +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-vmalloc 0x3ab6d246 videobuf_vmalloc_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-vmalloc 0xb198b4cb videobuf_queue_vmalloc_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x03102558 vb2_thread_start +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x15f71cab vb2_queue_error +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x1ba22928 vb2_ioctl_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x1e9b6510 vb2_fop_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x25039fe8 vb2_ioctl_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x280cbd2f vb2_ioctl_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x2eebed3d vb2_thread_stop +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x31544434 vb2_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x31fc9b0c vb2_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x3bece2af vb2_discard_done +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x499480f5 vb2_ioctl_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x566004bd vb2_write +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x58ee310b vb2_plane_vaddr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x5aa7a278 vb2_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x5d399c5c vb2_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x60b442f7 vb2_read +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x60e7f707 vb2_queue_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x62ff7188 vb2_ioctl_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x681981de vb2_ioctl_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x685b270d vb2_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x770cf4cb vb2_ops_wait_finish +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x777051aa vb2_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x8103cc8e vb2_fop_mmap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x8173d87c vb2_fop_read +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x9a688d23 vb2_plane_cookie +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xa16d5a17 vb2_buffer_done +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xa2d53a87 _vb2_fop_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xa83a4629 vb2_ioctl_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xb0298896 vb2_wait_for_all_buffers +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xb08e15a6 vb2_fop_write +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xb283447b vb2_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xb4e2b88e vb2_mmap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xbd90764d vb2_queue_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xc371529b vb2_ioctl_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xdd47fd9c vb2_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xe25bb88e vb2_ioctl_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xe5acab50 vb2_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xeb28b6c3 vb2_ops_wait_prepare +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xfeeb0b0e vb2_fop_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-contig 0x4144de10 vb2_dma_contig_memops +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-contig 0xe57f0426 vb2_dma_contig_cleanup_ctx +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-contig 0xfb6f9c0f vb2_dma_contig_init_ctx +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-sg 0x60db8efb vb2_dma_sg_init_ctx +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-sg 0xd30ec30f vb2_dma_sg_cleanup_ctx +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-sg 0xfb290baf vb2_dma_sg_memops +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-memops 0x453790de vb2_common_vm_ops +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-memops 0x4b477f2b vb2_get_contig_userptr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-memops 0x6fd3269b vb2_get_vma +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-memops 0x948b825f vb2_put_vma +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-vmalloc 0x3f4fed4f vb2_vmalloc_memops +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x20a523f5 v4l2_fh_del +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x224da3ef v4l2_event_queue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x25b51646 v4l2_fh_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x2996fadd v4l2_event_unsubscribe_all +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x2b0c7306 v4l2_fh_exit +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x3dfc6023 v4l2_event_dequeue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x41241e9f v4l2_device_put +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x5659405f v4l2_device_set_name +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x57af89aa v4l2_src_change_event_subscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x735c7e1c v4l2_event_subscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x74389638 v4l2_subdev_link_validate +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x76d71327 v4l2_device_register_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x77060c23 v4l2_event_pending +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x7fdf0dcc v4l2_device_register +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x871a866d v4l2_device_unregister +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x8fc333b3 v4l2_device_unregister_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x97ea9be5 v4l2_fh_is_singular +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x9dc6a9c3 v4l2_event_unsubscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xb6c79764 v4l2_device_register_subdev_nodes +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xbca26816 v4l2_fh_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xbcc17088 v4l2_fh_add +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xc975e948 v4l2_device_disconnect +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xd620bdd8 v4l2_fh_open +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xdf6a9a5a v4l2_event_subdev_unsubscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xe7436e03 v4l2_subdev_link_validate_default +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xec0a1a18 v4l2_src_change_event_subdev_subscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xf9f7848e v4l2_event_queue_fh +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0x17997dfd pm80x_regmap_config +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0x8b9a6ec4 pm80x_pm_ops +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0xb2f8a693 pm80x_init +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0xd99fd720 pm80x_deinit +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0x56744d16 da9150_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0x5b14c61c da9150_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0x8309a6ec da9150_set_bits +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0xf2b6f873 da9150_bulk_read +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0xf33040dd da9150_bulk_write +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x24c7ab57 kempld_read32 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x2b19d422 kempld_get_mutex +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x3b5ef62c kempld_release_mutex +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x3f351db1 kempld_read8 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x5081680a kempld_write32 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x7a61cfe9 kempld_write8 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0xbe77a723 kempld_read16 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0xc03ce2d7 kempld_write16 +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0x48242629 lm3533_update +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0x51bb8f23 lm3533_write +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0xb2c6da5e lm3533_read +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x28dfb04a lm3533_ctrlbank_set_max_current +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x4d742994 lm3533_ctrlbank_enable +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x706eebe9 lm3533_ctrlbank_set_brightness +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x8b25b1e4 lm3533_ctrlbank_set_pwm +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0xc64b19e1 lm3533_ctrlbank_get_pwm +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0xc8fc28fa lm3533_ctrlbank_get_brightness +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0xdb0fdadf lm3533_ctrlbank_disable +EXPORT_SYMBOL_GPL drivers/mfd/lp3943 0x50e047eb lp3943_read_byte +EXPORT_SYMBOL_GPL drivers/mfd/lp3943 0x84b5bb3d lp3943_write_byte +EXPORT_SYMBOL_GPL drivers/mfd/lp3943 0xc7f9876c lp3943_update_bits +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x4497d819 mc13xxx_common_init +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x47b3aabe mc13xxx_common_exit +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x685ab981 mc13xxx_adc_do_conversion +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0xafb6e726 mc13xxx_variant_mc13783 +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0xbdb9124e mc13xxx_variant_mc34708 +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0xef0cac06 mc13xxx_variant_mc13892 +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x36b24e5a pcf50633_free_irq +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x4b4ae8d1 pcf50633_reg_clear_bits +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x7b5fd6fd pcf50633_read_block +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x7f8a3a35 pcf50633_irq_mask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x97e32975 pcf50633_register_irq +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x9c8ca632 pcf50633_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xa2deda88 pcf50633_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xa381c919 pcf50633_irq_mask_get +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xb983ae50 pcf50633_write_block +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xbd849cac pcf50633_irq_unmask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xeb8bbbd2 pcf50633_reg_set_bit_mask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-adc 0xb8907c8c pcf50633_adc_async_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-adc 0xf5aad972 pcf50633_adc_sync_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x46bf3bc4 pcf50633_gpio_power_supply_set +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x57b6d6ca pcf50633_gpio_get +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x8659ea3e pcf50633_gpio_invert_get +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x9cfc3973 pcf50633_gpio_set +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0xc197a5e2 pcf50633_gpio_invert_set +EXPORT_SYMBOL_GPL drivers/mfd/retu-mfd 0x01a33234 retu_write +EXPORT_SYMBOL_GPL drivers/mfd/retu-mfd 0x4fca3918 retu_read +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x02a32f45 rtsx_pci_read_phy_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x0cac0174 rtsx_pci_send_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x13216fe0 rtsx_pci_start_run +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x202d4969 rtsx_pci_card_pull_ctl_enable +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x20bb568b rtsx_pci_dma_map_sg +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x29136138 rtsx_pci_read_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x461096ce rtsx_pci_switch_output_voltage +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x4f6daef1 rtsx_pci_card_exist +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x4fa9700e rtsx_pci_transfer_data +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x4fce42fc rtsx_pci_switch_clock +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x55cb9974 rtsx_pci_write_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x728c8b0c rtsx_pci_read_ppbuf +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x79517092 rtsx_pci_complete_unfinished_transfer +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x8161e5a9 rtsx_pci_send_cmd_no_wait +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x8d3dcd66 rtsx_pci_card_pull_ctl_disable +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x9c3a2949 rtsx_pci_card_power_off +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x9c6d6378 rtsx_pci_stop_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xa63faf94 rtsx_pci_card_exclusive_check +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xa65772b7 rtsx_pci_dma_transfer +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xacc2ad9b rtsx_pci_write_phy_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xdd2130bb rtsx_pci_card_power_on +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xf3906561 rtsx_pci_add_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xf6133883 rtsx_pci_dma_unmap_sg +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xfba83cbe rtsx_pci_write_ppbuf +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x1fc2be76 rtsx_usb_ep0_read_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x2b9b54aa rtsx_usb_transfer_data +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x304dd143 rtsx_usb_write_ppbuf +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x3293f3e8 rtsx_usb_read_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x3a5d00f4 rtsx_usb_ep0_write_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x40eb9379 rtsx_usb_read_ppbuf +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0xa5aa5b32 rtsx_usb_add_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0xa89456f6 rtsx_usb_get_card_status +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0xbc4f2a74 rtsx_usb_card_exclusive_check +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0xdd195c4e rtsx_usb_send_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0xea0de37d rtsx_usb_get_rsp +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0xf68b3d82 rtsx_usb_switch_clock +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0xf9ffb890 rtsx_usb_write_register +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x01decda3 si476x_core_cmd_fm_phase_div_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x149ec870 si476x_core_cmd_dig_audio_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x155896af si476x_core_start +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x1b15729f si476x_core_cmd_intb_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x249cda24 si476x_core_is_in_am_receiver_mode +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x2689c0b7 si476x_core_cmd_fm_rds_blockcount +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x2e07830c si476x_core_is_a_primary_tuner +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x3308bd65 si476x_core_cmd_get_property +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x33580c86 devm_regmap_init_si476x +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x39b55745 si476x_core_cmd_func_info +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x42262956 si476x_core_cmd_zif_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x4602212f si476x_core_cmd_fm_rsq_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x4e42f015 si476x_core_i2c_xfer +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x59a75013 si476x_core_cmd_fm_seek_start +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x59b9ac0c si476x_core_cmd_fm_rds_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x6140cc04 si476x_core_is_powered_up +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x6c63526f si476x_core_cmd_am_tune_freq +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x6ecb2f09 si476x_core_cmd_am_seek_start +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x72297d2c si476x_core_cmd_fm_phase_diversity +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x728757fe si476x_core_stop +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x76061ab6 si476x_core_cmd_power_up +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x7dd75d06 si476x_core_cmd_ic_link_gpo_ctl_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x7ecb41f1 si476x_core_cmd_power_down +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x9be6b6ef si476x_core_cmd_agc_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x9dc9e50c si476x_core_has_am +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xb8e79c60 si476x_core_is_a_secondary_tuner +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xc4704665 si476x_core_set_power_state +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xccd68b75 si476x_core_cmd_fm_tune_freq +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xcd7a1731 si476x_core_cmd_set_property +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xd6fe958b si476x_core_has_diversity +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xe87063e4 si476x_core_cmd_am_rsq_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xec32df8b si476x_core_cmd_am_acf_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xecd4c8ec si476x_core_cmd_fm_acf_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xffa92304 si476x_core_cmd_ana_audio_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x0d291e2e sm501_find_clock +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x14fdf1dd sm501_unit_power +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x253bdcaa sm501_misc_control +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x458dfd30 sm501_modify_reg +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x4fadc933 sm501_set_clock +EXPORT_SYMBOL_GPL drivers/mfd/ti_am335x_tscadc 0x13df136f am335x_tsc_se_clr +EXPORT_SYMBOL_GPL drivers/mfd/ti_am335x_tscadc 0x5fac6897 am335x_tsc_se_set_cache +EXPORT_SYMBOL_GPL drivers/mfd/ti_am335x_tscadc 0xb45559b5 am335x_tsc_se_set_once +EXPORT_SYMBOL_GPL drivers/mfd/ti_am335x_tscadc 0xfaa73760 am335x_tsc_se_adc_done +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0x2892ea0c tps65217_clear_bits +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0x366fe47a tps65217_set_bits +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0xab9e8698 tps65217_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0xe09c905b tps65217_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/tps65218 0x07bc5978 tps65218_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/tps65218 0x290d0901 tps65218_clear_bits +EXPORT_SYMBOL_GPL drivers/mfd/tps65218 0x726d5782 tps65218_set_bits +EXPORT_SYMBOL_GPL drivers/mfd/tps65218 0x7c4672ae tps65218_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/ucb1400_core 0xb484b328 ucb1400_adc_read +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0x0447b0bb cb710_set_irq_handler +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0x12441ccd cb710_sg_dwiter_read_next_block +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0x87ac47bb cb710_pci_update_config_reg +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0xc79fad16 cb710_sg_dwiter_write_next_block +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0x1a1b5249 oslec_flush +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0x2feda75b oslec_hpf_tx +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0x3227a28e oslec_snapshot +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0x7dc9dddd oslec_adaption_mode +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0xb2c66001 oslec_create +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0xc8b5a524 oslec_free +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0xd370f679 oslec_update +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0x27cb133b eeprom_93cx6_multiread +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0x63d2ff63 eeprom_93cx6_wren +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0x793fc8de eeprom_93cx6_multireadb +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0x822222db eeprom_93cx6_write +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0x98bb5a22 eeprom_93cx6_read +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0xdb9ca14b eeprom_93cx6_readb +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x5937b213 enclosure_find +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x6763ec5a enclosure_add_device +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x941a7e70 enclosure_component_register +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x95e0f86d enclosure_remove_device +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x969bd9f8 enclosure_for_each_device +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0xae722197 enclosure_unregister +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0xd874aff7 enclosure_component_alloc +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0xde71b9ca enclosure_register +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x372b9ce9 lis3lv02d_poweroff +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x500377da lis3lv02d_joystick_enable +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x621f8cca lis3_dev +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x76ed91ba lis3lv02d_init_device +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x7e6bef4b lis3lv02d_joystick_disable +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xd158c474 lis3lv02d_init_dt +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xf0be1f8d lis3lv02d_poweron +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xfc3e2bd7 lis3lv02d_remove_fs +EXPORT_SYMBOL_GPL drivers/misc/ti-st/st_drv 0x55c61ed4 st_register +EXPORT_SYMBOL_GPL drivers/misc/ti-st/st_drv 0x77138830 st_unregister +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x035f48d3 sdhci_free_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x2ba4466e sdhci_enable_irq_wakeups +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x45a14400 sdhci_set_uhs_signaling +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x49ba541b sdhci_suspend_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x52fb9855 sdhci_remove_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x70a29902 sdhci_set_clock +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x7a41a0b4 sdhci_send_command +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x82cd853f sdhci_add_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x8cf8c01b sdhci_resume_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xb721d16d sdhci_runtime_suspend_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xc255c133 sdhci_set_bus_width +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xc366c083 sdhci_runtime_resume_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xc7a61526 sdhci_alloc_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xdebfa1a2 sdhci_reset +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x1d11f643 sdhci_pltfm_unregister +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x2aaed77a sdhci_pltfm_register +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x46ddc0ad sdhci_pltfm_pmops +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0xb10d9ba4 sdhci_pltfm_resume +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0xb37b9931 sdhci_get_of_property +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0xc66dcaf2 sdhci_pltfm_clk_get_max_clock +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0xc95af4d7 sdhci_pltfm_free +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0xdcd3eafb sdhci_pltfm_suspend +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0xe16a0f78 sdhci_pltfm_init +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0x2fe5cf76 cfi_cmdset_0200 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0xd2fbeae0 cfi_cmdset_0003 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0xedd2cf08 cfi_cmdset_0001 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0x7e6e55f5 cfi_cmdset_0701 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0x8d979a73 cfi_cmdset_0002 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0xf3c5d1a3 cfi_cmdset_0006 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0020 0x5ca81e93 cfi_cmdset_0020 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0x7286f136 cfi_qry_present +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0xc86cd0a1 cfi_qry_mode_off +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0xf9413097 cfi_qry_mode_on +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x01b0851e register_mtd_parser +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x038fd78e mtd_writev +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x03aa6648 mtd_read_oob +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x05a3117b mtd_point +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x077df42f mtd_add_partition +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x0b4d8c43 mtd_block_markbad +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x13374ec9 mtd_device_unregister +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x13d35963 put_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x15a8990e mtd_read_user_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x1f41bc21 mtd_is_locked +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x21ded76c __put_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x2ef8a107 mtd_get_user_prot_info +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x34503f32 mtd_erase_callback +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x365b13ab get_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x378b1e74 mtd_read_fact_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x3a98a7e4 mtd_write_user_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x3c8fbe71 kill_mtd_super +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x4314388c mtd_unlock +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x4415276c mtd_read +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x473c6d30 mount_mtd +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x4a4301a0 get_mtd_device_nm +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x623278c0 unregister_mtd_user +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x62b09c7d mtd_del_partition +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x7b1ff833 mtd_get_unmapped_area +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x7cf95624 __mtd_next_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x7d3f2be6 mtd_device_parse_register +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x827a3e3b mtd_erase +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x8a98d16e mtd_table_mutex +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x93977239 __get_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x98681c3b mtd_block_isreserved +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x9c6af0ee mtd_unpoint +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x9e0a1aa2 mtd_get_fact_prot_info +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xa82c7c03 mtd_write +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xa931f5fa mtd_lock +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xc24a4f4f deregister_mtd_parser +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xcb813c58 mtd_block_isbad +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xcb85188a mtd_is_partition +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xd54ca0f9 mtd_kmalloc_up_to +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xd87044ed mtd_get_device_size +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xd9ddb504 register_mtd_user +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xe216660a mtd_lock_user_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xff28686c mtd_panic_write +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0x0ac8b6f0 add_mtd_blktrans_dev +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0x2d57ae47 del_mtd_blktrans_dev +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0xa48ce928 mtd_blktrans_cease_background +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0xad73bb33 register_mtd_blktrans +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0xedc7df57 deregister_mtd_blktrans +EXPORT_SYMBOL_GPL drivers/mtd/nand/nand 0x56781159 nand_wait_ready +EXPORT_SYMBOL_GPL drivers/mtd/nand/nand 0xdcb78cf1 nand_release +EXPORT_SYMBOL_GPL drivers/mtd/nand/sm_common 0xa6a0e2fd sm_register_device +EXPORT_SYMBOL_GPL drivers/mtd/onenand/onenand 0x3e96aa33 onenand_release +EXPORT_SYMBOL_GPL drivers/mtd/onenand/onenand 0xba7688b7 onenand_scan +EXPORT_SYMBOL_GPL drivers/mtd/spi-nor/spi-nor 0xb96c05d1 spi_nor_scan +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x0166e97d ubi_leb_read +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x049c54ac ubi_leb_change +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x3295d2fd ubi_open_volume_nm +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x38e10c1d ubi_flush +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x4172c9e5 ubi_leb_read_sg +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x42801d20 ubi_sync +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x49469ce5 ubi_close_volume +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x4f422ce0 ubi_do_get_device_info +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x5cfdd22d ubi_get_device_info +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x6a809e8e ubi_get_volume_info +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x792e97c8 ubi_open_volume +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x85a8ee76 ubi_unregister_volume_notifier +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xa0aea1da ubi_leb_unmap +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xb4b33b6b ubi_open_volume_path +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xb83a1933 ubi_leb_erase +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xc46f28b5 ubi_leb_write +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xccd06d19 ubi_is_mapped +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xec06df8b ubi_leb_map +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xf5ee9ba8 ubi_register_volume_notifier +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x27654e98 c_can_power_down +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x71ca4559 unregister_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x7a636f93 alloc_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x8323864d register_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x9a8d2938 free_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x9c2397a4 c_can_power_up +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x0e286bbb can_change_state +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x0f180ebd can_put_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x15f7b80b can_get_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x222c295a can_len2dlc +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x22e17efa can_change_mtu +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x4ab90aa9 safe_candev_priv +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x5b75197d can_led_event +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x6d9f88b0 free_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x74d59ce6 devm_can_led_init +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x87cafa09 alloc_can_err_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x9a6bea40 close_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x9da3fc0f can_free_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xaef20f2a alloc_can_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xb346573b can_dlc2len +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xbe674eb5 register_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xc5e66983 alloc_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xc910d7d6 alloc_canfd_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xd8212d27 open_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xf5160048 can_bus_off +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xf8feac2a unregister_candev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0x55f1abdd unregister_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0x79bf2fbe alloc_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0x87b35be6 register_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0xd10c1792 free_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x49ebd0d2 sja1000_interrupt +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x4e70d66b unregister_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0xcf7f190d register_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0xe099371a alloc_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0xfb46fefb free_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/ethernet/arc/arc_emac 0xe88c1f62 arc_emac_probe +EXPORT_SYMBOL_GPL drivers/net/ethernet/arc/arc_emac 0xf5edecfa arc_emac_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0047d75b mlx4_fmr_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x01184ecb mlx4_set_vf_spoofchk +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0132c48a mlx4_find_cached_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x03a26bc5 mlx4_SYNC_TPT +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x03a33dad mlx4_flow_steer_promisc_add +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x044278d0 mlx4_mtt_init +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0461307c mlx4_set_admin_guid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x055f45b1 mlx4_free_cmd_mailbox +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x07618222 mlx4_map_sw_to_hw_steering_id +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x081cea5d mlx4_bond +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x099e95ec mlx4_get_admin_guid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0ad73d69 mlx4_hw_rule_sz +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0b057bbe mlx4_buf_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0c09ee17 mlx4_mw_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0cafb434 mlx4_get_vf_config +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0cb8ae0a mlx4_qp_modify +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0dbf19ce mlx4_pd_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0dd29bbc mlx4_buf_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1422799c mlx4_unregister_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x14db68ec mlx4_get_base_qpn +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1aa56151 mlx4_mr_hw_change_access +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1e9e7004 mlx4_read_clock +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x22fd72af mlx4_qp_release_range +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x27b6d4ef mlx4_get_slave_default_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2a0e835f mlx4_multicast_promisc_add +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2d4dd34e mlx4_config_vxlan_port +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3034063e mlx4_unicast_promisc_add +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x333aa5db mlx4_qp_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x335b4325 mlx4_config_dev_retrieval +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3590ebfd mlx4_mw_enable +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x36e1a679 mlx4_map_phys_fmr +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x36f8136b mlx4_ACCESS_PTYS_REG +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3838571d mlx4_register_interface +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3ccc9deb mlx4_srq_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3f54b4ab mlx4_srq_arm +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x43354e55 mlx4_flow_attach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x43f597c1 mlx4_xrcd_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x456b6ba7 __mlx4_unregister_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4588fe5b __mlx4_register_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x45caade8 mlx4_qp_to_ready +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4a49d7e6 mlx4_srq_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x50819b6b mlx4_multicast_attach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x51584950 mlx4_vf_get_enable_smi_admin +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x516b9c92 mlx4_set_vf_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5307d41a mlx4_unicast_attach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5334f2e0 mlx4_mr_hw_change_pd +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x53780979 mlx4_unregister_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x540e063a mlx4_mr_hw_put_mpt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5457c7ee mlx4_port_map_set +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x55ba40ce mlx4_get_base_gid_ix +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x587c7bc7 mlx4_fmr_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5b241f62 mlx4_xrcd_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5ccc61ff mlx4_mw_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5e805b13 mlx4_mr_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5f81642d mlx4_qp_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5f8237c1 mlx4_mr_enable +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x60b3a178 mlx4_srq_lookup +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x615c08ed mlx4_vf_set_enable_smi_admin +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x699750e4 mlx4_mr_rereg_mem_cleanup +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6abb5a51 mlx4_multicast_promisc_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6cd3e639 mlx4_alloc_hwq_res +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6df6df73 mlx4_find_cached_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6e202f4e mlx4_get_internal_clock_params +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6f1c79d0 mlx4_db_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6f95eee1 mlx4_set_vf_rate +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x700514f9 mlx4_mr_hw_get_mpt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x71fad10e mlx4_alloc_cmd_mailbox +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x78bc55a0 mlx4_fmr_unmap +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7e41a1ce mlx4_unregister_interface +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x80e060d1 mlx4_write_mtt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x835511d2 mlx4_counter_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x85ce05b9 mlx4_phys_to_slaves_pport +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8abab696 mlx4_mr_rereg_mem_write +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8e1c4f9d mlx4_set_vf_link_state +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x90062c18 mlx4_free_hwq_res +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x90e6280b mlx4_mtt_cleanup +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9101c79d mlx4_unicast_detach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x91eea006 mlx4_multicast_detach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x91f18167 mlx4_pd_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x92af093e mlx4_cq_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x95354c85 mlx4_uar_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9aab6084 mlx4_buf_write_mtt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa0d593a9 mlx4_FLOW_STEERING_IB_UC_QP_RANGE +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa1e344df mlx4_counter_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa3564ee0 mlx4_unicast_promisc_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa42fc8b0 mlx4_get_default_counter_index +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa5c20a9c mlx4_phys_to_slaves_pport_actv +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa735f4de mlx4_wol_read +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa7767373 mlx4_bf_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xadddfc7c mlx4_uar_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb0300547 mlx4_fmr_enable +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb54c3334 mlx4_set_vf_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb5d11a57 mlx4_CLOSE_PORT +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbc2a2bb9 __mlx4_cmd +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc0d0a50e mlx4_get_active_ports +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc0f45044 mlx4_mr_hw_write_mpt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc198abfa mlx4_wol_write +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc22e8b2c mlx4_flow_detach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc57908cd mlx4_qp_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc8fe4db7 mlx4_cq_resize +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xcadadc43 mlx4_qp_reserve_range +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xcb18a926 mlx4_get_counter_stats +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xcb485f35 mlx4_cq_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xcc528dee mlx4_update_qp +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xcc888d8c mlx4_unbond +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd5581969 mlx4_INIT_PORT +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd8ecff82 mlx4_slave_convert_port +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd9c7d3d7 mlx4_qp_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xdafde9e2 mlx4_get_vf_stats +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xdc88f62e mlx4_mr_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xdf65330d mlx4_db_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xdf8e03be mlx4_cq_modify +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe351b91b mlx4_vf_smi_enabled +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe9822bc7 mlx4_bf_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xebabc948 mlx4_register_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xedcd8717 mlx4_phys_to_slave_port +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf08df700 mlx4_flow_steer_promisc_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf1b570c3 mlx4_srq_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf2242ec5 mlx4_get_protocol_dev +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf8a6ade8 mlx4_register_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf9f3ee82 mlx4_map_sw_to_hw_steering_mode +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xfc51c7cf mlx4_mtt_addr +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xfe64f904 __mlx4_replace_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x00a470e6 mlx5_core_qp_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x08c65731 mlx5_query_port_max_mtu +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x0958cef7 mlx5_core_qp_modify +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x10b808cf mlx5_core_mad_ifc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x1ea0eeab mlx5_create_map_eq +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x36415056 mlx5_core_access_reg +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x41972e3c mlx5_query_hca_vport_system_image_guid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x465336bb mlx5_query_port_proto_admin +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x49a94a26 mlx5_set_port_proto +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x49cff98f mlx5_query_port_oper_mtu +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x4c38e99a mlx5_query_hca_vport_node_guid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x4c5cde16 mlx5_set_port_admin_status +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x4cfd9215 mlx5_buf_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x64861fe1 mlx5_query_hca_vport_pkey +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x79a80a6c mlx5_query_port_admin_status +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x79e7abe7 mlx5_destroy_unmap_eq +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x8186cf86 mlx5_query_hca_vport_context +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x831ed826 mlx5_query_hca_vport_gid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x8497d1ee mlx5_query_port_ptys +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x9220df0a mlx5_db_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x93a069e5 mlx5_db_alloc_node +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x9670a956 mlx5_core_xrcd_dealloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x9e4c1e51 mlx5_core_page_fault_resume +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa44c15a4 mlx5_core_xrcd_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa49108a1 mlx5_fill_page_array +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xb7f79865 mlx5_set_port_caps +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xbfe6d530 mlx5_buf_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xc959f08e mlx5_query_port_proto_cap +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xcbea5500 mlx5_query_port_vl_hw_cap +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xda724535 mlx5_core_eq_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe098639c mlx5_core_destroy_qp +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe1cab351 mlx5_core_create_qp +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe26ab1ea mlx5_set_port_mtu +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe395e81e mlx5_query_port_link_width_oper +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf69d2696 mlx5_db_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf90f01bd mlx5_query_port_proto_oper +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac 0x3ffe8306 stmmac_resume +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac 0x765f3a6f stmmac_dvr_probe +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac 0xd676a8bb stmmac_suspend +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac 0xf43e234b stmmac_dvr_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac-platform 0x4684e5be stmmac_pltfr_probe +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac-platform 0x5b73e7f7 stmmac_pltfr_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac-platform 0xadfa59eb stmmac_pltfr_pm_ops +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x08b6ce93 cpsw_ale_start +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x0b15b28d cpsw_ale_add_mcast +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x140332cd cpsw_ale_set_allmulti +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x2796326e cpsw_ale_add_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x2b5f18c0 cpsw_ale_control_get +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x2f96eb6b cpsw_ale_flush_multicast +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x31ce318a cpsw_ale_dump +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x75ede981 cpsw_ale_control_set +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x7afa28ba cpsw_ale_create +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x8ef8fc29 cpsw_ale_add_ucast +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x9e25fd0b cpsw_ale_del_mcast +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0xa66b8c8d cpsw_ale_del_ucast +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0xb26a7e2f cpsw_ale_del_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0xf5735662 cpsw_ale_destroy +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0xf8ddda71 cpsw_ale_stop +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x1ec685b3 macvlan_link_register +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x3ee733d1 macvlan_dellink +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x50576bf1 macvlan_common_newlink +EXPORT_SYMBOL_GPL drivers/net/macvlan 0xe316fb10 macvlan_common_setup +EXPORT_SYMBOL_GPL drivers/net/macvtap 0x4e8f3357 macvtap_get_socket +EXPORT_SYMBOL_GPL drivers/net/phy/mdio-mux 0x6318757f mdio_mux_uninit +EXPORT_SYMBOL_GPL drivers/net/phy/mdio-mux 0x964b6edb mdio_mux_init +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0x08f96a4b usbnet_cdc_bind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0x333e50aa usbnet_cdc_status +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0x60755bce usbnet_generic_cdc_bind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0xf8fcda17 usbnet_cdc_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x25484fbe cdc_ncm_rx_verify_ndp16 +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x2b325021 cdc_ncm_fill_tx_frame +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x696571b5 cdc_ncm_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x71164008 cdc_ncm_rx_verify_nth16 +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0xb114b8e4 cdc_ncm_select_altsetting +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0xc6aca4bd cdc_ncm_tx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0xd69c870d cdc_ncm_bind_common +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0xe65cd496 cdc_ncm_rx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x156f6b37 rndis_command +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x28f1fa3c rndis_tx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x5498b45a rndis_status +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x73b93ba8 rndis_rx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0xad591a09 rndis_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0xb80718d9 generic_rndis_bind +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x04c14618 usbnet_status_stop +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x0b20618c usbnet_get_settings +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x14ec8484 usbnet_tx_timeout +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x2032936e usbnet_unlink_rx_urbs +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x2b0b416d usbnet_resume_rx +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x375e1cc7 usbnet_get_drvinfo +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x39c38d4f usbnet_resume +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x400e324c usbnet_write_cmd_async +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x42dc46b6 usbnet_status_start +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x45db1ee5 usbnet_set_msglevel +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x471b8ff6 usbnet_get_msglevel +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x4a7eff44 usbnet_write_cmd_nopm +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x51cf0e5c usbnet_write_cmd +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x67c40a05 usbnet_get_endpoints +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x6b048160 usbnet_open +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x7c4bbfac usbnet_start_xmit +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x7cfe88bf usbnet_get_link +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x835be283 usbnet_suspend +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x8af2dad9 usbnet_nway_reset +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x9018a7ef usbnet_purge_paused_rxq +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x9dc1750d usbnet_get_ethernet_addr +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xa976a65a usbnet_update_max_qlen +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xae7da68a usbnet_pause_rx +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xc28aa45e usbnet_skb_return +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xce1e88d3 usbnet_defer_kevent +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xd0b0bf68 usbnet_stop +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xd4163a26 usbnet_set_settings +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xd5105826 usbnet_probe +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xe0728f4c usbnet_read_cmd_nopm +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xe1ee2fe7 usbnet_disconnect +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xed22afd2 usbnet_read_cmd +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xf76c117d usbnet_change_mtu +EXPORT_SYMBOL_GPL drivers/net/vxlan 0x37afb1f6 vxlan_sock_release +EXPORT_SYMBOL_GPL drivers/net/vxlan 0x8e0080b7 vxlan_xmit_skb +EXPORT_SYMBOL_GPL drivers/net/vxlan 0x8e3f5bec vxlan_sock_add +EXPORT_SYMBOL_GPL drivers/net/vxlan 0xeb31b575 vxlan_get_rx_port +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x03381a45 i2400m_is_boot_barker +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x0386431e i2400m_pre_reset +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x04390e0b i2400m_reset +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x22f37842 i2400m_rx +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x5c41b06c i2400m_dev_bootstrap +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x7ada3c55 i2400m_tx_msg_get +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x821196de i2400m_error_recovery +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x89839f8b i2400m_post_reset +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xa50c263b 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 0xb44cbe31 i2400m_tx_msg_sent +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xbe85d95f i2400m_netdev_setup +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xccaa70b2 i2400m_setup +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xd538152a i2400m_init +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xf297d0dc i2400m_release +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xf67c6018 i2400m_cmd_enter_powersave +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xf9d33e38 i2400m_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/cw1200/cw1200_core 0x3658e026 cw1200_core_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/cw1200/cw1200_core 0x3f7da7f8 cw1200_can_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/cw1200/cw1200_core 0xb9c27bf4 cw1200_core_release +EXPORT_SYMBOL_GPL drivers/net/wireless/cw1200/cw1200_core 0xd4852318 cw1200_irq_handler +EXPORT_SYMBOL_GPL drivers/net/wireless/ipw2x00/libipw 0xfe4a22df libipw_rx_any +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0x3e444f5a il_mac_tx_last_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0x45fcf24f il_dealloc_bcast_stations +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0x656be03b il_prep_station +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0xa5d3fc9f il_remove_station +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0xf486a1fb _il_grab_nic_access +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x0d556623 iwl_abort_notification_waits +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x1291ef1b iwl_init_notification_wait +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x1ac36ff0 iwl_notification_wait_notify +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x21350901 __iwl_info +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x2d72bb01 iwl_write_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x2fcf0ff9 iwl_poll_direct_bit +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x34f9ce0c iwl_clear_bits_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x35033c81 iwl_phy_db_free +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x396c47e3 iwl_poll_bit +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x3d548dab iwl_remove_notification +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x41d77899 iwl_read_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x49e5cc17 iwl_force_nmi +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x51b657cd iwlwifi_mod_params +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x581c91a7 iwl_set_bits_mask_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x5c52e109 iwl_opmode_deregister +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x65d6d17c iwl_phy_db_init +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x660b9fdf iwl_write_direct32 +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x776221bf iwl_send_phy_db_data +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x7a159f57 __iwl_dbg +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x87f7cbf1 __iwl_warn +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x8c5d5ab3 iwl_phy_db_set_section +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x9d914205 iwl_parse_nvm_data +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x9e487fbc iwl_nvm_check_version +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xa55c72e0 iwl_parse_nvm_mcc_info +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xa982f6dd iwl_set_bits_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xaa6d08eb iwl_wait_notification +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xac0ff353 __iwl_crit +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xbbacc5f3 __iwl_err +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xc67c31ed iwl_notification_wait_init +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xe31f80e6 iwl_parse_eeprom_data +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xf42eb06f iwl_read_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xfcfa3f10 iwl_read_direct32 +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xfe8c6f6c iwl_opmode_register +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x12250f3d lbs_queue_event +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x2a8da7b9 __lbs_cmd +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x2c93231e lbs_notify_command_response +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x48b125c4 lbs_host_sleep_cfg +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x5fdf38b8 lbs_disablemesh +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x64472632 lbs_get_firmware_async +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x80bf61d2 lbs_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x81e971f7 lbs_host_to_card_done +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x8b12a47c lbs_stop_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x8fe02415 lbs_process_rxed_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x8ffe4680 lbs_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xa74aecb5 lbs_get_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xd8c9c696 lbs_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xdb2ed19e lbs_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xdbc4208a lbs_cmd_copyback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xf2df18af lbs_start_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xf64277de lbs_debug +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xfcf941ac lbs_send_tx_feedback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x335f88fa __lbtf_cmd +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x35030a64 lbtf_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x642e3849 lbtf_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x7ccadfb9 lbtf_bcn_sent +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x9c930e4f lbtf_send_tx_feedback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xc2e55997 lbtf_cmd_response_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xc85e6899 lbtf_debug +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xf8e58013 lbtf_cmd_copyback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xfac988ab lbtf_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x1ed05f36 mwifiex_del_virtual_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x2c8a350a mwifiex_process_hs_config +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x31bd9748 mwifiex_alloc_dma_align_buf +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x41ad4256 mwifiex_disable_auto_ds +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x4f1c11b3 mwifiex_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x51274e0c mwifiex_deauthenticate_all +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x5f82a2d1 mwifiex_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x611e5943 mwifiex_queue_main_work +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x6ed05f16 mwifiex_enable_hs +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x9fb2efdd mwifiex_main_process +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xa314713d mwifiex_handle_rx_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xa98972a7 mwifiex_write_data_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xb7404aaa mwifiex_add_virtual_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xb7d11f8d mwifiex_init_shutdown_fw +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xe1ab62fd mwifiex_drv_info_dump +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xedc55dc4 mwifiex_cancel_hs +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xf494a7e1 mwifiex_upload_device_dump +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xf681705a mwifiex_process_sleep_confirm_resp +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x0138cea3 p54_unregister_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x2c32b966 p54_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x3dc21b8d p54_free_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x3e34d33a p54_register_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x3ecc0ad5 p54_free_skb +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x6335f084 p54_init_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x92b0c83f p54_parse_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xdda58862 p54_read_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xf12955cb p54_parse_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0x5d94e918 rsi_mac80211_detach +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0x7201b98a rsi_dbg +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0xa649dc75 rsi_91x_init +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0xba7680ea rsi_read_pkt +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0xdb3ca0e5 rsi_zone_enabled +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0xf7c3d425 rsi_91x_deinit +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x012c0c1c rt2800_rfkill_poll +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x02e246e2 rt2800_link_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x19a355a8 rt2800_load_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x22be1b28 rt2800_write_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x252efc8a rt2800_set_rts_threshold +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x25979668 rt2800_probe_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x2df76c45 rt2800_config_erp +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x303ba764 rt2800_get_tsf +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x350e1863 rt2800_ampdu_action +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x3946ca95 rt2800_efuse_detect +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x4e92df3f rt2800_get_txwi_rxwi_size +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x577bcd9b rt2800_disable_wpdma +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x622d11e5 rt2800_get_key_seq +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x6861c382 rt2800_gain_calibration +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x6a8ddf0a rt2800_config_pairwise_key +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x6d3bdd3e rt2800_wait_csr_ready +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x6db47369 rt2800_check_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x81869a09 rt2800_get_survey +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x858b85f9 rt2800_sta_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x87978913 rt2800_disable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x8d8d3ca6 rt2800_reset_tuner +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x9308d247 rt2800_link_tuner +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x9e40beb0 rt2800_read_eeprom_efuse +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x9e8db9ad rt2800_config +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xa3611239 rt2800_txdone_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xae977d94 rt2800_sta_add +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xb1f25068 rt2800_enable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xc1f40726 rt2800_process_rxwi +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xc2a37d61 rt2800_config_shared_key +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xccc2855f rt2800_config_ant +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xd04b3ccf rt2800_clear_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xd66dcce7 rt2800_mcu_request +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xda4d4a1e rt2800_vco_calibration +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xddf00672 rt2800_config_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xe8225bbd rt2800_wait_wpdma_ready +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xe9316fbd rt2800_conf_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xf807d1d3 rt2800_write_tx_data +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xff70dce0 rt2800_config_filter +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x0fad1430 rt2800mmio_pretbtt_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x2505789d rt2800mmio_tbtt_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x352e1147 rt2800mmio_get_txwi +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x4be98f1b rt2800mmio_stop_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x5f11024b rt2800mmio_get_entry_state +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x5fa4db64 rt2800mmio_interrupt +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x68c55dc1 rt2800mmio_start_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x92c0bcd1 rt2800mmio_rxdone_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x95b5d0b6 rt2800mmio_kick_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xa3eb50cf rt2800mmio_fill_rxdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xa4ef57aa rt2800mmio_write_tx_desc +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xae73bca9 rt2800mmio_queue_init +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xc39530bc rt2800mmio_init_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xc6a1455e rt2800mmio_autowake_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xcbc361dc rt2800mmio_init_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xdd83ac06 rt2800mmio_clear_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xe28f94c7 rt2800mmio_txstatus_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xe6bc9df6 rt2800mmio_enable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xf824e739 rt2800mmio_toggle_irq +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x0af18768 rt2x00queue_stop_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x183c716b rt2x00mac_set_tim +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x184ed4a8 rt2x00mac_stop +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x1edd20c6 rt2x00mac_sta_add +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x36d872de rt2x00queue_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x38a70ae4 rt2x00mac_get_ringparam +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x395603c5 rt2x00mac_get_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x3a1625e0 rt2x00lib_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x42bb6235 rt2x00lib_rxdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x43e6a318 rt2x00mac_set_key +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x44b8f2d3 rt2x00mac_rfkill_poll +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x45b931b9 rt2x00mac_add_interface +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x4703a841 rt2x00mac_get_antenna +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x50f8ba80 rt2x00queue_pause_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x52f8aa2e rt2x00lib_pretbtt +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x5d9c5cc3 rt2x00mac_bss_info_changed +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x5f8fcf68 rt2x00lib_txdone_noinfo +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x694ca455 rt2x00mac_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x6ab85aa3 rt2x00mac_configure_filter +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x6d732306 rt2x00lib_get_bssidx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x6ec2f9e8 rt2x00mac_conf_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x710a4a0b rt2x00lib_dmastart +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x711ea92a rt2x00mac_tx_frames_pending +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x7f4b7ab9 rt2x00queue_get_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x807430d9 rt2x00mac_start +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x82b608f1 rt2x00queue_unpause_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x8dc62e4e rt2x00queue_start_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x8f58f050 rt2x00mac_remove_interface +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x9bf1f0d3 rt2x00lib_beacondone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x9c889fec rt2x00mac_sw_scan_start +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x9cf10eac rt2x00lib_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x9d240dd6 rt2x00queue_stop_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xbfd10f5d rt2x00queue_map_txskb +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xc24b55c1 rt2x00lib_remove_dev +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xc386949c rt2x00mac_config +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xc6d59373 rt2x00lib_txdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xc72c26e8 rt2x00mac_set_antenna +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xca665567 rt2x00mac_flush +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xd2a2b8dc rt2x00queue_flush_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xd4e08df9 rt2x00lib_probe_dev +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xd8dca198 rt2x00mac_sta_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xefca68d7 rt2x00lib_dmadone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xf00d41d4 rt2x00mac_sw_scan_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xf4357e3d rt2x00queue_start_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xf84c5037 rt2x00queue_for_each_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xfd7fed7f rt2x00queue_unmap_skb +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0x020ac0d4 rt2x00mmio_initialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0x09b4aee6 rt2x00mmio_regbusy_read +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0x3f022681 rt2x00mmio_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0x8019b62e rt2x00mmio_rxdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0xc9b19428 rt2x00mmio_uninitialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0x06ed492f rt2x00pci_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0x64e62e82 rt2x00pci_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0x9cab1470 rt2x00pci_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0xa98c60ce rt2x00pci_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x03f7faa6 rt2x00usb_vendor_request +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x0b8d6518 rt2x00usb_vendor_req_buff_lock +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x1f9aeb4a rt2x00usb_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x31750923 rt2x00usb_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x359ddc64 rt2x00usb_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x52cfeb56 rt2x00usb_initialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x54e87347 rt2x00usb_uninitialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x60a0c58f rt2x00usb_kick_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x76dbf3e6 rt2x00usb_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x8d619317 rt2x00usb_disable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xac5fb725 rt2x00usb_vendor_request_buff +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xbe43d8c6 rt2x00usb_register_read_async +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xbeda3042 rt2x00usb_clear_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xebae9203 rt2x00usb_watchdog +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xed5f1d37 rt2x00usb_regbusy_read +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xfd86fc24 rt2x00usb_disconnect +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x0d32b368 dm_writepowerindex +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x71a49836 dm_restorepowerindex +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x9e7a46c1 dm_savepowerindex +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xc647d487 rtl92c_set_p2p_ps_offload_cmd +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x1c015900 rtl8723_save_adda_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x2e9a98f8 rtl8723_phy_path_a_standby +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x2f1f23bc rtl8723_dm_init_edca_turbo +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x311206cf rtl8723_write_fw +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x58570419 rtl8723_fw_block_write +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x669fe9e1 rtl8723_phy_rf_serial_write +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x6d3c2a61 rtl8723_fw_page_write +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x6fee3a6c rtl8723_phy_set_sw_chnl_cmdarray +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x72d9e4d5 rtl8723_cmd_send_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x73c813c3 rtl8723_phy_rf_serial_read +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x7584bcd8 rtl8723_phy_mac_setting_calibration +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x78fa9937 rtl8723_dm_init_dynamic_bb_powersaving +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x8a0e4482 rtl8723_phy_txpwr_idx_to_dbm +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x93577a27 rtl8723_phy_pi_mode_switch +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x9ae5b688 rtl8723_fw_free_to_go +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x9baa9a8e rtl8723_phy_query_bb_reg +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xa0f1781f rtl8723be_firmware_selfreset +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xa6e6256f rtl8723_phy_save_mac_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xadf728e0 rtl8723_phy_set_bb_reg +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xae432447 rtl8723_phy_reload_mac_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xaf4d6d94 rtl8723_phy_calculate_bit_shift +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xb041458a rtl8723_download_fw +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xbc40c288 rtl8723_phy_path_a_fill_iqk_matrix +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xd225a897 rtl8723_enable_fw_download +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xd62018b0 rtl8723_phy_reload_adda_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xd65ea9e6 rtl8723_phy_path_adda_on +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xdfcbd6e4 rtl8723_dm_init_dynamic_txpower +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xf52e142f rtl8723_phy_init_bb_rf_reg_def +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xf69aa072 rtl8723ae_firmware_selfreset +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x0d0b6636 rtl_global_var +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x1866e70c rtl_dbgp_flag_init +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x214d16e7 rtl_init_core +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x241dedc1 rtl_tid_to_ac +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x2921a4d4 rtl_btc_status_false +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x3c1620c5 rtl_action_proc +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x44ff2429 rtl_deinit_rfkill +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x4706140c rtl_swlps_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x4f46d37d rtl_init_rx_config +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x54adf737 rtl_beacon_statistic +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x6ab53e55 rtl_deinit_core +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x6b928646 rtl_is_special_data +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x73f853f4 rtl_ops +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x7f47ed3c rtl_deinit_deferred_work +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x801bba24 rtl_p2p_info +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x8a7e88a5 rtl_attribute_group +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x93280bd2 rtl_recognize_peer +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xc6617afb read_efuse_byte +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xccd8765a rtl_ips_nic_on +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xe1062543 rtl_tx_mgmt_proc +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xf8ff6add rtl_lps_change_work_callback +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0x2cec80d3 wl1251_free_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0x6cdd4ef6 wl1251_init_ieee80211 +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0xf48e20c4 wl1251_alloc_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x05d8ff51 wlcore_scan_sched_scan_ssid_list +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x10d05473 wlcore_event_inactive_sta +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x1364ed55 wlcore_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x19d0021f wl1271_ps_elp_wakeup +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x19e7571b wl1271_acx_sleep_auth +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x1c6c0ef9 wl12xx_acx_mem_cfg +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x2078bc0d wlcore_boot_upload_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x26185e7b wlcore_event_channel_switch +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x2d202803 wlcore_disable_interrupts_nosync +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x4429b531 wl1271_acx_init_mem_config +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x447df32c wl1271_cmd_data_path +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x4ffa717c wlcore_set_partition +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x53dff67d wl12xx_debug_level +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x5f0f4b21 wlcore_set_key +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x648d40d6 wl1271_acx_pm_config +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x65885772 wl1271_tx_flush +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x68a580c0 wlcore_alloc_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x6c0d64fa wl12xx_cmd_build_probe_req +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x6d707767 wl1271_cmd_configure +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x77092dcc wlcore_get_native_channel_type +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x77dd9c3a wlcore_cmd_wait_for_event_or_timeout +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x8402848d wl1271_tx_min_rate_get +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x883f503d wlcore_synchronize_interrupts +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x8b8cfbfb wlcore_boot_run_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x91da5146 wl1271_format_buffer +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x9564d72c wlcore_enable_interrupts +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xa20f5def wl1271_debugfs_update_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xa5ca76af wlcore_translate_addr +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xa7f44f83 wlcore_set_scan_chan_params +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xac37700f wl1271_cmd_send +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xace8446b wlcore_boot_upload_nvs +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xae0c609b wl1271_ps_elp_sleep +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xb36ec739 wlcore_event_rssi_trigger +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xbd1f2b6d wlcore_event_soft_gemini_sense +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xc6ab2357 wlcore_event_sched_scan_completed +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xc6b30ac4 wlcore_scan_sched_scan_results +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xc79cbdd1 wlcore_event_max_tx_failure +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xc8274158 wlcore_event_roc_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xd08f0560 wl1271_acx_set_ht_capabilities +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xd3ffab50 wlcore_event_ba_rx_constraint +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xd8f3612d wlcore_event_beacon_loss +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xdba7a1ea wlcore_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xe18504d7 wlcore_disable_interrupts +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xe5dc66a8 wlcore_event_dummy_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xf342f9ac wl1271_cmd_test +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xfba04edd wlcore_free_hw +EXPORT_SYMBOL_GPL drivers/nfc/nfcmrvl/nfcmrvl 0x558f994b nfcmrvl_parse_dt +EXPORT_SYMBOL_GPL drivers/nfc/nfcmrvl/nfcmrvl 0x9af29765 nfcmrvl_nci_unregister_dev +EXPORT_SYMBOL_GPL drivers/nfc/nfcmrvl/nfcmrvl 0xd25a0c4e nfcmrvl_nci_recv_frame +EXPORT_SYMBOL_GPL drivers/nfc/nfcmrvl/nfcmrvl 0xf2c6fda7 nfcmrvl_nci_register_dev +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x185dda12 st_nci_disable_se +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x36391108 st_nci_enable_se +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x3a28e3ee st_nci_probe +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x4a19368d st_nci_hci_event_received +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x60c81795 st_nci_hci_load_session +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x80d5953f st_nci_remove +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0xe128b3ad st_nci_discover_se +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0xf750f057 st_nci_hci_cmd_received +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 0x4d24f100 ntb_transport_create_queue +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x82e6c13d ntb_transport_qp_num +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x963f6a78 ntb_transport_unregister_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 0xd1f21f73 ntb_transport_register_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/power/pcf50633-charger 0x69cc6b41 pcf50633_mbc_get_usb_online_status +EXPORT_SYMBOL_GPL drivers/power/pcf50633-charger 0xcfb164c9 pcf50633_mbc_usb_curlim_set +EXPORT_SYMBOL_GPL drivers/power/pcf50633-charger 0xd8f0438e pcf50633_mbc_get_status +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x13d43706 mc13xxx_regulator_ops +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x1c39b9c8 mc13xxx_get_num_regulators_dt +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x3e1af28d mc13xxx_fixed_regulator_ops +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0xbfa42d0a mc13xxx_parse_regulators_dt +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0xfae281f8 mc13xxx_fixed_regulator_set_voltage +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x2537d5af wm8350_register_led +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x2a874c11 wm8350_ldo_set_slot +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x3c6cc175 wm8350_dcdc25_set_mode +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x82d0301b wm8350_isink_set_flash +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0xbe8b7c86 wm8350_dcdc_set_slot +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0xd7042a9e wm8350_register_regulator +EXPORT_SYMBOL_GPL drivers/regulator/wm8400-regulator 0xe6cbc1a7 wm8400_register_regulator +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x0fd3f68d cxgbi_iscsi_init +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x107b40ae cxgbi_conn_pdu_ready +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x118410f8 cxgbi_parse_pdu_itt +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x1e460f52 cxgbi_sock_skb_entail +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x20589b2f cxgbi_sock_rcv_peer_close +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x2a962454 cxgbi_ddp_cleanup +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x2dc86885 cxgbi_hbas_add +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x2fbcc5b5 cxgbi_conn_alloc_pdu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x384f14c2 cxgbi_set_host_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x3a5c4389 cxgbi_ddp_page_size_factor +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x3d404fef cxgbi_sock_rcv_wr_ack +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x404e1728 cxgbi_conn_init_pdu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x448a5cb1 cxgbi_ddp_ppod_set +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x53618c2f cxgbi_conn_xmit_pdu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x581d2709 cxgbi_sock_rcv_close_conn_rpl +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x698f5dcb cxgbi_sock_select_mss +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x6fe35b6d cxgbi_destroy_session +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x70a5a1ea cxgbi_create_conn +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x777fae56 cxgbi_device_unregister +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x7fdb6004 cxgbi_device_unregister_all +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x7fe0459e cxgbi_device_find_by_netdev_rcu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x8586e065 cxgbi_bind_conn +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x8c2ba369 cxgbi_ddp_ppod_clear +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x92666df3 cxgbi_sock_act_open_req_arp_failure +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x92b5301e cxgbi_conn_tx_open +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x932db957 cxgbi_sock_purge_wr_queue +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x9d73c266 cxgbi_sock_free_cpl_skbs +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xa2fffe7b cxgbi_ep_connect +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xa80f5bf1 cxgbi_device_portmap_create +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xab86bfa0 cxgbi_set_conn_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xb0eac859 cxgbi_sock_rcv_abort_rpl +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xb2fd9b54 cxgbi_device_find_by_lldev +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xb6e402b2 cxgbi_hbas_remove +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xbdab41c8 cxgbi_sock_check_wr_invariants +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xc123281c cxgbi_cleanup_task +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xc48d976b cxgbi_get_host_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xcc201ec2 cxgbi_sock_fail_act_open +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xcdf2da96 cxgbi_device_register +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xd437dec2 cxgbi_ddp_init +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xe0eefefb cxgbi_ep_disconnect +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xe14bc61e cxgbi_ep_poll +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xe33008a3 cxgbi_create_session +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xe4c222f5 cxgbi_get_conn_stats +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xe5104fb0 cxgbi_iscsi_cleanup +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xea4ba22d cxgbi_get_ep_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xea8ad4e7 cxgbi_device_find_by_netdev +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xec8289e8 cxgbi_sock_established +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xef346615 cxgbi_attr_is_visible +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xf0d0d26e cxgbi_device_portmap_cleanup +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xf19795b5 cxgbi_sock_closed +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x031f8c57 scsi_register_device_handler +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x0e75243d scsi_unregister_device_handler +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x593a36c2 scsi_dh_handler_exist +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x6e438aaa scsi_dh_set_params +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0xad340c50 scsi_dh_activate +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0xdf0aa830 scsi_dh_detach +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0xe782dc08 scsi_dh_attach +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0xe9a5ed22 scsi_dh_attached_handler_name +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x00b5a9e8 fcoe_link_speed_update +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x0574a8f7 fcoe_check_wait_queue +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x0fb51275 fcoe_queue_timer +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x3080fb8a fcoe_get_lesb +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x328594d9 fcoe_fcf_device_add +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x374c1e1c fcoe_wwn_from_mac +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x44ef4531 fcoe_ctlr_device_add +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x69f6c7d9 fcoe_get_paged_crc_eof +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x6c88b5f0 fcoe_libfc_config +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x7b6103fe fcoe_get_wwn +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x7c93d205 fcoe_ctlr_device_delete +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x7f34d32e fcoe_clean_pending_queue +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x84b3d915 fcoe_wwn_to_str +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x88287ea9 fcoe_start_io +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x923cc835 __fcoe_get_lesb +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x9509cf94 fcoe_validate_vport_create +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xb4ac4cad fcoe_fc_crc +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xbce3c28c fcoe_fcf_device_delete +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xd610abb0 fcoe_ctlr_get_lesb +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x0f825a4b iscsi_boot_create_kset +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x157d608b iscsi_boot_create_ethernet +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0xa68c0e74 iscsi_boot_create_target +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0xcf84c3c0 iscsi_boot_create_initiator +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0xd3610fa1 iscsi_boot_create_host_kset +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0xdef4afc8 iscsi_boot_destroy_kset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x08981950 iscsi_suspend_tx +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x0ac44bb2 iscsi_session_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x12b2ad06 iscsi_switch_str_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x13306a14 iscsi_conn_failure +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x20a589b6 iscsi_host_add +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x29fbdc34 iscsi_session_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x2f490199 __iscsi_complete_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x359accb2 iscsi_eh_device_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x3bef2f73 iscsi_pool_init +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x3c1bb1b7 iscsi_eh_abort +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x419b2ccc iscsi_host_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x511b16cf iscsi_host_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x56daad5c iscsi_eh_recover_target +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x5a77adf0 iscsi_eh_target_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x5bf31fdc iscsi_complete_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x5f9e8c8b iscsi_host_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x632cfe3a iscsi_target_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x67de98b1 iscsi_queuecommand +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x684a6262 iscsi_put_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x6a287481 iscsi_update_cmdsn +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x6ba27835 iscsi_conn_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x6ceff0aa iscsi_conn_start +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x6e4f89f5 iscsi_eh_session_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x80832c91 iscsi_session_failure +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x8d303b1b iscsi_pool_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x960465da iscsi_conn_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x9701e9b6 iscsi_set_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x998e45bd iscsi_requeue_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x9aba85d0 iscsi_host_set_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x9c6a9ab3 __iscsi_put_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xa01f46ed iscsi_conn_stop +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xa71c48c7 iscsi_session_recovery_timedout +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xbea2799f iscsi_session_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xbf8c9136 iscsi_conn_get_addr_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xc14b7b05 iscsi_host_remove +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xcf9e1644 iscsi_conn_send_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xd5192dca __iscsi_get_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xde93c7c1 iscsi_suspend_queue +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xe3108c33 iscsi_complete_scsi_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xe82d27fe iscsi_conn_bind +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xe8e5c16a iscsi_itt_to_ctask +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xeea78337 iscsi_conn_queue_work +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xf0766a87 iscsi_conn_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xf8abd108 iscsi_prep_data_out_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xfa0e17f9 iscsi_itt_to_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xff937560 iscsi_verify_itt +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x07534d60 iscsi_tcp_segment_unmap +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x1bffc816 iscsi_tcp_cleanup_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x2285d3ac iscsi_tcp_set_max_r2t +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x2750ce3e iscsi_tcp_dgst_header +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x27806ac0 iscsi_tcp_task_init +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x36b01728 iscsi_tcp_r2tpool_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x4e2efc1e iscsi_tcp_segment_done +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x58e6e572 iscsi_tcp_conn_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x5b6426d9 iscsi_tcp_recv_skb +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x7f1b38de iscsi_segment_init_linear +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x8dc4fef1 iscsi_tcp_task_xmit +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x93a746e1 iscsi_tcp_recv_segment_is_hdr +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x9bb9efe2 iscsi_tcp_r2tpool_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xaad674dc iscsi_tcp_hdr_recv_prep +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xc17cedae iscsi_segment_seek_sg +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xcf89f0c6 iscsi_tcp_conn_get_stats +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xea2454f0 iscsi_tcp_conn_setup +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x1595ec92 sas_task_abort +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x169ba4a3 sas_alloc_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x18d2b8d4 sas_target_destroy +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x1ff1775b sas_get_local_phy +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x24408cf9 sas_unregister_ha +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x2df1ea0a sas_ssp_task_response +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x35d0f1e2 sas_drain_work +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x3bc9d09a sas_eh_bus_reset_handler +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x512c25f6 sas_register_ha +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x69f023bd sas_bios_param +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x75a941c5 sas_change_queue_depth +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x860a9a6f sas_phy_reset +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x9de19c22 sas_queuecommand +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xadda311b sas_target_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xaf50d0a9 sas_slave_configure +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xb1354592 sas_ioctl +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xb962e4cf sas_ata_schedule_reset +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xcafdd7b4 sas_domain_attach_transport +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xd332ddb3 sas_alloc_slow_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xe4bef12d sas_eh_abort_handler +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xe5a7b0f1 sas_eh_device_reset_handler +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xeca9714f sas_domain_release_transport +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xf46f2215 sas_request_addr +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xf7225f14 sas_free_task +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x00f52c53 iscsi_create_iface +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x0c49387b iscsi_get_port_speed_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x0ce95b8b iscsi_conn_error_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x0daf0a9a iscsi_create_flashnode_sess +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x13a94959 iscsi_post_host_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x14eac512 iscsi_flashnode_bus_match +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x151c139f iscsi_recv_pdu +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x1f709952 iscsi_destroy_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x20f09045 iscsi_unblock_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x26f86f29 iscsi_create_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x27e10cfd iscsi_find_flashnode_sess +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x31c644e8 iscsi_scan_finished +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x32d6bf7f iscsi_lookup_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x34f9b2a3 iscsi_create_flashnode_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x41b1eb09 iscsi_is_session_online +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x44ff0139 iscsi_conn_login_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x512358f6 iscsi_host_for_each_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x56c97ec0 iscsi_register_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x62b45a14 iscsi_get_port_state_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x6534ad80 iscsi_session_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x6706b7d9 iscsi_offload_mesg +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x68f4d4ab iscsi_unregister_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x699fe53e iscsi_get_discovery_parent_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x6c61fab9 iscsi_free_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x744cab34 iscsi_add_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x7f16c9fe 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 0x8a09c8c3 iscsi_session_chkready +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x8a9d1e5e iscsi_ping_comp_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x94b41bc4 iscsi_is_flashnode_conn_dev +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x97daebfd iscsi_alloc_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x9c8457f8 iscsi_block_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xa8d66298 iscsi_block_scsi_eh +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xb2ce4e31 iscsi_create_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xb870071a iscsi_destroy_flashnode_sess +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xbc071179 iscsi_get_ipaddress_state_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xd4650102 iscsi_find_flashnode_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xeb803ff0 iscsi_destroy_all_flashnode +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xeb863b38 iscsi_create_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xec0d1dd0 iscsi_destroy_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xf7c92a6c iscsi_destroy_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xf983bf07 iscsi_destroy_iface +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xff47ded4 iscsi_remove_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0x0e2a9270 sas_enable_tlr +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0x2037a8fa sas_tlr_supported +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0x90afdcd8 sas_disable_tlr +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0xa000564b 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 0xa0c71dac spi_populate_sync_msg +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_spi 0xc452fed1 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 0x1dccb1e9 srp_stop_rport_timers +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x44eb0056 srp_rport_add +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x6737f522 srp_attach_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x6d309a32 srp_remove_host +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x8e22e74d srp_release_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x9a3f0b78 srp_rport_del +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0xee891cc0 srp_tmo_valid +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0x41bdabe4 ufshcd_dme_set_attr +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0x8ddaf277 ufshcd_dme_get_attr +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0x922e78d4 ufshcd_init +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0xb41e6b4c ufshcd_remove +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x82c1daa1 spi_bitbang_cleanup +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x89c8bf32 spi_bitbang_start +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x8a3ed297 spi_bitbang_setup_transfer +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0xcc767e37 spi_bitbang_setup +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0xff834119 spi_bitbang_stop +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0xb397a509 dw_spi_remove_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0xb39aa821 dw_spi_resume_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0xde9f6481 dw_spi_add_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0xf3d30187 dw_spi_suspend_host +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x381ee6fd spmi_command_reset +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x455cccf8 spmi_device_alloc +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x6aeb3793 spmi_register_write +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x7bba33f1 spmi_controller_alloc +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x7f4a42a3 spmi_ext_register_read +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x8981ded3 spmi_ext_register_readl +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x8ef79392 spmi_device_remove +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x97ed94f9 spmi_command_sleep +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xb68b769f spmi_command_wakeup +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xc70374da spmi_driver_register +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xc905a766 spmi_register_read +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xcfe62466 spmi_controller_remove +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xe0cf2fcd spmi_register_zero_write +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xe4116c1f spmi_controller_add +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xe67326c4 spmi_device_add +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xeab602e4 spmi_ext_register_write +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xefc42e95 spmi_command_shutdown +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xf1579445 spmi_ext_register_writel +EXPORT_SYMBOL_GPL drivers/ssb/ssb 0x5ff407d6 ssb_pmu_spuravoid_pllupdate +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x068c28d7 comedi_nscans_left +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x0a4d6766 comedi_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x0cd330f4 range_unknown +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x1b05cbc5 comedi_buf_read_alloc +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x1fea64e6 comedi_dio_update_state +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x21102f87 range_0_32mA +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x2786cb55 comedi_inc_scan_progress +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x2f0ad9d3 range_bipolar5 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x3865d7d1 comedi_set_spriv_auto_free +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x3ea6e8f2 comedi_is_subdevice_running +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x41cc544f comedi_check_chanlist +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x4236eaaf range_4_20mA +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x47bf0476 comedi_dev_get_from_minor +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x4fe634f3 range_bipolar2_5 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x51b09e03 comedi_buf_write_alloc +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x559d2cbd comedi_driver_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x6b810987 comedi_alloc_spriv +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x76d9c94e comedi_dio_insn_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x7f06c700 comedi_request_region +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x8113872c range_unipolar10 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x815c3ad4 comedi_timeout +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x90d80262 comedi_buf_read_free +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x924f206a comedi_handle_events +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xa185ca3c comedi_auto_unconfig +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xa1a640b4 comedi_buf_read_n_available +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xa49265b6 comedi_event +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xac908c22 comedi_load_firmware +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xb5176d70 comedi_set_hw_dev +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xb5e33a17 comedi_nsamples_left +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 0xbbe7fec8 comedi_buf_write_samples +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xbdbe75c6 range_unipolar2_5 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xc7bf17bb comedi_alloc_devpriv +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xca56cdff __comedi_request_region +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xd35da221 comedi_auto_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xd410363d comedi_alloc_subdev_readback +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xd9e4f31d comedi_alloc_subdevices +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xdb2044b2 range_unipolar5 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xe63abe95 comedi_buf_read_samples +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xf05cb6d3 comedi_legacy_detach +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xf35639b4 comedi_readback_insn_read +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xf4e7ff54 comedi_dev_put +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xf6fcea3f comedi_bytes_per_scan +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xfa288506 comedi_buf_write_free +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0x052d3209 comedi_pci_driver_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0x060959b7 comedi_pci_auto_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0xb133fc48 comedi_pci_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0xbc196682 comedi_pci_disable +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0xbe92bf80 comedi_pci_enable +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0xc6dfc572 comedi_pci_detach +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0xd13bb611 comedi_pci_auto_unconfig +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0xd89b61b6 comedi_to_pci_dev +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pcmcia 0x0049b74f comedi_pcmcia_driver_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pcmcia 0x0cc1ba1b comedi_pcmcia_enable +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pcmcia 0x3dcf610c comedi_pcmcia_disable +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pcmcia 0x41f88e39 comedi_pcmcia_auto_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pcmcia 0x47a110e2 comedi_to_pcmcia_dev +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pcmcia 0x79712134 comedi_pcmcia_auto_unconfig +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pcmcia 0xe18f9a80 comedi_pcmcia_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0x02f1e677 comedi_usb_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0x48b84c57 comedi_to_usb_interface +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0x6217630f comedi_to_usb_dev +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0x7729ec77 comedi_usb_auto_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0x98174627 comedi_usb_auto_unconfig +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0xa5c289bb comedi_usb_driver_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/addi_watchdog 0x4f87efaf 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 0x1b34ec74 amplc_dio200_common_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/amplc_dio200_common 0x907ec3d3 amplc_dio200_set_enhance +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/amplc_pc236_common 0x636025ec amplc_pc236_common_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x14a0719f comedi_8254_subdevice_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x42bcce6b comedi_8254_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x563b4395 comedi_8254_ns_to_timer +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x77a3d5fb comedi_8254_cascade_ns_to_timer +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x7d74f3df comedi_8254_write +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x85d20f4e comedi_8254_set_busy +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x8dd183bb comedi_8254_load +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x98eb8bf5 comedi_8254_pacer_enable +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0xb7d4d785 comedi_8254_status +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0xbca1302b comedi_8254_set_mode +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0xbed3c433 comedi_8254_read +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0xf5bbe25b comedi_8254_mm_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0xfb8203b7 comedi_8254_update_divisors +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8255 0x467de5fd subdev_8255_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8255 0xaa9343f5 subdev_8255_regbase +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8255 0xe8d08937 subdev_8255_mm_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_isadma 0x0ab7ffd8 comedi_isadma_poll +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_isadma 0x12fba874 comedi_isadma_disable +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_isadma 0x3789f086 comedi_isadma_set_mode +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_isadma 0x3cb6af06 comedi_isadma_alloc +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_isadma 0x4a17474e comedi_isadma_disable_on_sample +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_isadma 0x7040990c comedi_isadma_program +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_isadma 0xa228e27e comedi_isadma_free +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/das08 0xc57d682a das08_common_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x04625d25 mite_bytes_in_transit +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x0f2ccf57 mite_prep_dma +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x19817dc6 mite_request_channel_in_range +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x226f7922 mite_dma_tcr +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x249ed2fa mite_get_status +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x45f3e71c mite_free_ring +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x4f940aba mite_done +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x57079136 mite_buf_change +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x582287d9 mite_dma_arm +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x5f04e394 mite_sync_output_dma +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x837b56ae mite_bytes_read_from_memory_lb +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x9795361e mite_alloc_ring +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x9ac8a03b mite_bytes_written_to_memory_ub +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x9cfc174c mite_detach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xab4c6c6a mite_setup2 +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xc1bc4167 mite_release_channel +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xcab3ccac mite_bytes_written_to_memory_lb +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xd003cfa5 mite_sync_input_dma +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xd3003a39 mite_bytes_read_from_memory_ub +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xe6b7ed54 mite_alloc +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xfcc92c9f mite_dma_disarm +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_common 0x0bd13a9a labpc_common_detach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_common 0xa2f94974 labpc_common_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_isadma 0x396d67f4 labpc_setup_dma +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_isadma 0x6608f46f labpc_free_dma_chan +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_isadma 0xadada507 labpc_init_dma_chan +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_isadma 0xb3412196 labpc_handle_dma_status +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_isadma 0xfbf75804 labpc_drain_dma +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x610f7f6b ni_tio_insn_read +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x6bfbea7d ni_tio_set_gate_src +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x6eaa79e3 ni_tio_insn_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x8604a420 ni_tio_arm +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x89d61ed2 ni_gpct_device_destroy +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0xa22a1365 ni_tio_insn_write +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0xb2bb0277 ni_tio_init_counter +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0xbdf1dcdc ni_gpct_device_construct +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0x2b2c2c26 ni_tio_acknowledge +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0x39fec4c3 ni_tio_handle_interrupt +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0x42a228e9 ni_tio_cancel +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0x4926bbcd ni_tio_set_mite_channel +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0x54013710 ni_tio_cmd +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0xaaceb065 ni_tio_cmdtest +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x4581ade0 comedi_get_n_channels +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x47cdae08 comedi_open +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x4af0d072 comedi_close +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x620d4221 comedi_dio_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0xc8c6b596 comedi_dio_get_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0xeb93d397 comedi_dio_bitfield2 +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0xf2b8ec22 comedi_find_subdevice_by_type +EXPORT_SYMBOL_GPL drivers/staging/iio/addac/adt7316 0xdd006fa1 adt7316_pm_ops +EXPORT_SYMBOL_GPL drivers/staging/lustre/lustre/obdclass/obdclass 0x1e3de800 lustre_sysfs_ops +EXPORT_SYMBOL_GPL drivers/staging/lustre/lustre/obdclass/obdclass 0x2631fcb8 lustre_attr_show +EXPORT_SYMBOL_GPL drivers/staging/lustre/lustre/obdclass/obdclass 0x295592ed debugfs_lustre_root +EXPORT_SYMBOL_GPL drivers/staging/lustre/lustre/obdclass/obdclass 0x327fd324 lustre_kobj +EXPORT_SYMBOL_GPL drivers/staging/lustre/lustre/obdclass/obdclass 0x44722937 lustre_attr_store +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x0cb00fd1 spk_var_show +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x0e81c76d spk_serial_out +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x0ef1d765 speakup_info +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x14f06fe7 spk_serial_in_nowait +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 0x475e158a synth_request_region +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x70ce5985 spk_do_catch_up +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x8e146195 synth_release_region +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x963a0b8c synth_remove +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x9a888082 synth_buffer_getc +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x9f6494c1 synth_add +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x9f6fd008 spk_var_store +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xae2a26f3 spk_synth_immediate +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xb35aaab9 speakup_event +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xb48956f8 synth_buffer_peek +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xbbd15a51 speakup_start_ttys +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xc1d96e17 spk_synth_is_alive_nop +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xc766ae09 synth_printf +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xd1b551a2 spk_get_var +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xe7cd4558 spk_serial_release +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xe7e810f8 spk_serial_in +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xf23f121c spk_synth_is_alive_restart +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xfcb984fb spk_serial_synth_probe +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xfcd9afe6 spk_synth_flush +EXPORT_SYMBOL_GPL drivers/tty/n_tracesink 0x585ebaac n_tracesink_datadrain +EXPORT_SYMBOL_GPL drivers/uio/uio 0x013a913d __uio_register_device +EXPORT_SYMBOL_GPL drivers/uio/uio 0x2fd9a7bd uio_unregister_device +EXPORT_SYMBOL_GPL drivers/uio/uio 0x8967b4f7 uio_event_notify +EXPORT_SYMBOL_GPL drivers/usb/atm/usbatm 0x0cdf5b86 usbatm_usb_disconnect +EXPORT_SYMBOL_GPL drivers/usb/atm/usbatm 0x24ce12b8 usbatm_usb_probe +EXPORT_SYMBOL_GPL drivers/usb/chipidea/ci_hdrc 0x2dc25f1a ci_hdrc_add_device +EXPORT_SYMBOL_GPL drivers/usb/chipidea/ci_hdrc 0x75b7a950 ci_hdrc_remove_device +EXPORT_SYMBOL_GPL drivers/usb/chipidea/usbmisc_imx 0xaca14314 imx_usbmisc_set_wakeup +EXPORT_SYMBOL_GPL drivers/usb/chipidea/usbmisc_imx 0xbe5f933c imx_usbmisc_init_post +EXPORT_SYMBOL_GPL drivers/usb/chipidea/usbmisc_imx 0xfa1d3d1d imx_usbmisc_init +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0x086a09af ulpi_unregister_interface +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0x5ff4d4fa ulpi_write +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0x6873f416 ulpi_read +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0x6961ea6b ulpi_register_driver +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0xaeff165e ulpi_unregister_driver +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0xc2ad3ef9 ulpi_register_interface +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x05f7798f gether_set_host_addr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x1e703487 gether_set_dev_addr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x277472ef gether_register_netdev +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x2c3a69f7 gether_disconnect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x37f407af gether_get_qmult +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x3a551a18 gether_get_dev_addr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x67379bbf gether_get_host_addr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x8878cfa6 gether_cleanup +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x93873271 gether_get_host_addr_u8 +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x9e788398 gether_get_ifname +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xb6e61340 gether_set_gadget +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xbee12899 gether_set_qmult +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xdd3e51c5 gether_get_host_addr_cdc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xecec5b97 gether_setup_name +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xf035dd91 gether_setup_name_default +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xfe67176d gether_connect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0x33bfdca2 gserial_alloc_line +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0x8a925fcd gserial_disconnect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0xa71702af gserial_connect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0xb6652875 gserial_free_line +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0xb9c516c6 gs_alloc_req +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0xce29ba00 gs_free_req +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_fs 0x1ce555b0 ffs_lock +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_fs 0x677dd1ff ffs_name_dev +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_fs 0xcb37e5c4 ffs_single_dev +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x0a5230df fsg_common_set_nluns +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 0x1b1cc3af store_cdrom_address +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 0x2c6d0d6f fsg_store_removable +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x2c7faff8 fsg_show_removable +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x2d10b6a7 fsg_common_create_lun +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x30790ea6 fsg_show_cdrom +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x38dc3fbb 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 0x3b890fd4 fsg_lun_fsync_sub +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 0x46cf9d9e fsg_show_ro +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x4bbcf644 fsg_common_remove_lun +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x4ee4d933 fsg_show_nofua +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x51707c29 fsg_common_run_thread +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 0x5fa7fb1a fsg_store_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 0x6b79a300 fsg_store_file +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 0x8dc97963 fsg_lun_close +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 0x99023bfc fsg_common_put +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 0x9dc025a5 fsg_common_free_luns +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xa46e6443 fsg_common_get +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 0xae6cbaa5 fsg_show_file +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 0xbb0f7f8d fsg_lun_open +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xc125619a fsg_store_nofua +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xd3ae3b65 fsg_common_create_luns +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xd468f882 fsg_common_set_ops +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xe4d1591e fsg_config_from_params +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 0xfbd257c0 fsg_common_set_cdev +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x1de1f725 rndis_uninit +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x233b67df rndis_set_param_dev +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x2c5bd559 rndis_free_response +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x3564e5ad rndis_set_param_vendor +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x3c85a7d3 rndis_get_next_response +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x59efd004 rndis_msg_parser +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x6049ac2b rndis_signal_disconnect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x66c6e1c7 rndis_borrow_net +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x6737dcb1 rndis_set_host_mac +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x6f12fde7 rndis_set_param_medium +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x78c5f0bb rndis_deregister +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x821d22c2 rndis_add_hdr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x8ca706d5 rndis_register +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x9ac037ab rndis_rm_hdr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xc545e14e rndis_signal_connect +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x045b69d7 usb_ep_autoconfig_ss +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x0673c2a7 usb_ep_autoconfig +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x181ab822 unregister_gadget_item +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x193f79be usb_add_config +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x19ca5f86 usb_ep_autoconfig_reset +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x2a7aa367 usb_composite_unregister +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x2e09263f usb_copy_descriptors +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x2e5fbcc7 usb_function_activate +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x2ef66520 usb_get_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x3551239f usb_add_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x3a4329b9 usb_function_unregister +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x3a88eaf4 usb_assign_descriptors +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x49317366 usb_add_config_only +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x4c164c03 usb_put_function_instance +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x4d778b47 usb_get_function_instance +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x4f4074a9 usb_string_ids_tab +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x6707f2c8 usb_gstrings_attach +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x6a9f03de usb_interface_id +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x805d5ccc usb_put_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x860af4d5 alloc_ep_req +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x8d36ecaa usb_remove_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x94d7075a usb_gadget_get_string +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xa0c47c8a usb_composite_setup_continue +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xab05c529 usb_composite_probe +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xb9c6fa61 usb_string_ids_n +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xbb31a9e7 usb_free_all_descriptors +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xd2ea2134 usb_descriptor_fillbuf +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xdc6daf85 config_ep_by_speed +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xde0bc892 usb_composite_overwrite_options +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xe5b89c2b usb_function_register +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xf474a207 usb_gadget_config_buf +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xf53011fd usb_function_deactivate +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xff1b1944 usb_string_id +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x293d8fad usb_gadget_set_state +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x2da6620a usb_add_gadget_udc_release +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x3943e9e6 usb_gadget_probe_driver +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x4461395c usb_add_gadget_udc +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x4898b2d6 usb_gadget_udc_reset +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x4ddc1e72 usb_gadget_unregister_driver +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x567cd1bd usb_del_gadget_udc +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x63cd1d98 usb_gadget_map_request +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x7d8a39be usb_udc_attach_driver +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x8fd2c456 usb_gadget_giveback_request +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0xabdc6c1f usb_udc_vbus_handler +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0xf8e16e4d usb_gadget_unmap_request +EXPORT_SYMBOL_GPL drivers/usb/misc/ezusb 0x20f41493 ezusb_fx1_set_reset +EXPORT_SYMBOL_GPL drivers/usb/misc/ezusb 0xf26b3542 ezusb_fx1_ihex_firmware_download +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x3a2d8ad9 usb_ftdi_elan_edset_input +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x3d20bb7c usb_ftdi_elan_edset_single +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x580eca65 usb_ftdi_elan_edset_flush +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x633be270 usb_ftdi_elan_edset_setup +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x670bef96 usb_ftdi_elan_edset_output +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x6e3c0798 usb_ftdi_elan_read_pcimem +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x9783ddaf usb_ftdi_elan_edset_empty +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xc870e422 ftdi_elan_gone_away +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xd6da87e5 usb_ftdi_elan_write_pcimem +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0x0892ae1a musb_writew +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0x2eb5b93e musb_interrupt +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0x56d31820 musb_writel +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0x72234dd6 musb_readw +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0x96919667 musb_readl +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0xac5f3d70 musb_readb +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0xcb32cb36 musb_writeb +EXPORT_SYMBOL_GPL drivers/usb/phy/phy-isp1301 0xdd770e76 isp1301_get_client +EXPORT_SYMBOL_GPL drivers/usb/serial/usb_wwan 0xa97f191d usb_wwan_port_probe +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x14350032 usb_serial_generic_write_bulk_callback +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x14665983 usb_serial_generic_wait_until_sent +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x149ee76a usb_serial_generic_get_icount +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x1eace533 usb_serial_handle_break +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x2a59bc04 usb_serial_generic_unthrottle +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x389e2964 usb_serial_generic_chars_in_buffer +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x6d052102 usb_serial_deregister_drivers +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x6e209b7d usb_serial_handle_dcd_change +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x71d4095b usb_serial_generic_throttle +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x7c2f0fd2 usb_serial_generic_submit_read_urbs +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x7f744614 usb_serial_port_softint +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x8611e074 usb_serial_generic_resume +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x8e75d247 usb_serial_generic_close +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x90a5fb16 usb_serial_generic_write +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x91e289fa usb_serial_generic_open +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xa31088e4 usb_serial_generic_write_start +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xad206e24 usb_serial_generic_read_bulk_callback +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xaf1c0824 usb_serial_generic_process_read_urb +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xafa5a859 usb_serial_generic_tiocmiwait +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xb9b7eed9 usb_serial_register_drivers +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xd68c6d33 usb_serial_handle_sysrq_char +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x032b1ebd usb_stor_adjust_quirks +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x0e5e170b usb_stor_bulk_transfer_sg +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x0ff8018d usb_stor_transparent_scsi_command +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x116832a8 usb_stor_clear_halt +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x1bc3edc2 usb_stor_sense_invalidCDB +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x1f0b8432 usb_stor_probe2 +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x276bf41c usb_stor_ctrl_transfer +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x418ec746 usb_stor_Bulk_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x4f0b6976 usb_stor_post_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x50c40dfb usb_stor_bulk_srb +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x5427d892 usb_stor_set_xfer_buf +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x77ba7ced usb_stor_pre_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x860b1ca6 usb_stor_CB_transport +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x8b8a3d4f usb_stor_probe1 +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x8edd80df usb_stor_bulk_transfer_buf +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x9849957c usb_stor_control_msg +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x9ad8a929 usb_stor_host_template_init +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xbef9261b usb_stor_Bulk_transport +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xd38e5635 usb_stor_disconnect +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xd693fc8e usb_stor_resume +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xd8f344a7 usb_stor_access_xfer_buf +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xdaa8f8c3 usb_stor_suspend +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xdd3d9e25 usb_stor_reset_resume +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xef5943fe usb_stor_CB_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xfbb1413a fill_inquiry_response +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x0081056b usbip_event_happened +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x03915286 usbip_recv_xbuff +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x3f9abeb7 usbip_event_add +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x493a91d0 usbip_alloc_iso_desc_pdu +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x6521db8c usbip_recv +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x70729ff0 usbip_recv_iso +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x78b72f44 usbip_debug_flag +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x92dade6e usbip_stop_eh +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x9ae65b97 usbip_dump_urb +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x9aedcc21 dev_attr_usbip_debug +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xa8b0ee09 usbip_start_eh +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/usb/usbip/usbip-core 0xf05e7c41 usbip_pack_pdu +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xf560c467 usbip_pad_iso +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x0dfb86df rpipe_ep_disable +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x33bab06c __wa_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x4181917a wa_urb_enqueue +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x6a981358 wa_urb_dequeue +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x962b0f84 rpipe_clear_feature_stalled +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xb502e772 wa_create +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xc09351a7 wa_dti_start +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xc543b60e wa_process_errored_transfers_run +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xcb55ad58 rpipe_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xf4654c3f wa_urb_enqueue_run +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x0bb6bf5e wusb_cluster_id_get +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x25bd11ae wusbhc_rh_status_data +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x3cb40106 wusbhc_chid_set +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x5d9684cc wusbhc_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x68e09508 wusbhc_rh_control +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x6c74b9d1 wusbhc_reset_all +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x71983d16 __wusb_dev_get_by_usb_dev +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x7da1e6f9 wusbhc_giveback_urb +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x7f0b7631 wusb_dev_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xa42bf58a wusbhc_mmcie_rm +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xb725d128 wusb_cluster_id_put +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xd5b31802 wusbhc_create +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xd77fdc65 wusbhc_b_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xe1e43422 wusbhc_rh_start_port_reset +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xec990396 wusbhc_mmcie_set +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xf770a6b4 wusbd +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xfa4eb76d wusbhc_handle_dn +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xfe2e17d7 wusb_et_name +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xfe46801b wusbhc_b_create +EXPORT_SYMBOL_GPL drivers/uwb/i1480/dfu/i1480-dfu-usb 0x9ceb98c1 i1480_cmd +EXPORT_SYMBOL_GPL drivers/uwb/i1480/dfu/i1480-dfu-usb 0xa8f9bc24 i1480_fw_upload +EXPORT_SYMBOL_GPL drivers/uwb/i1480/dfu/i1480-dfu-usb 0xc316a1eb i1480_rceb_check +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x092257d9 umc_device_unregister +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x4a8284a6 __umc_driver_register +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x5554eb32 umc_driver_unregister +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x858d98a6 umc_controller_reset +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x9bd83f5e umc_bus_type +EXPORT_SYMBOL_GPL drivers/uwb/umc 0xd4cdb275 umc_device_register +EXPORT_SYMBOL_GPL drivers/uwb/umc 0xebd108fd umc_device_create +EXPORT_SYMBOL_GPL drivers/uwb/umc 0xf5a539a8 umc_match_pci_id +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x0418b018 uwb_est_find_size +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x06b6c9a0 uwb_rc_reset_all +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x0b8aad57 uwb_est_unregister +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x0bd7447f uwb_rc_init +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x0ed2fd2f uwb_rc_rm +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x0f19da89 uwb_rc_add +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x20d17c6a uwb_pal_register +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x320377e0 uwb_rsv_destroy +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x406367bd uwb_rsv_create +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x428c4208 uwb_rsv_modify +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x476a4ecf uwb_rc_put +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x4d57ae3c uwb_rsv_type_str +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x5773b5d3 uwb_rsv_get_usable_mas +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x5bea0acf uwb_rc_get_by_dev +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x5e4bc088 __uwb_addr_print +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x6c2a7935 uwb_notifs_deregister +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x6c950d2e __uwb_rc_try_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x76f48b20 uwb_rc_vcmd +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x7dcfcd23 uwb_ie_next +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x7ecd4382 uwb_radio_start +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x86361fc0 uwb_rc_neh_error +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x8924f152 uwb_rc_post_reset +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x8a44b74a uwb_rsv_terminate +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x93a7bf97 uwb_rc_pre_reset +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x95fc39d8 uwb_rc_mac_addr_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x98413234 uwb_rsv_state_str +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x9c538627 uwb_rc_dev_addr_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x9c8cfdb3 uwb_notifs_register +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xa1b421ba uwb_rc_cmd_async +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xaf37091d uwb_dev_try_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xb220eadd uwb_rsv_accept +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xb4345485 uwb_rc_ie_add +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xb68c79f3 uwb_rc_alloc +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xc6f7d90c uwb_rc_neh_grok +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xd4680eab uwb_radio_stop +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xd5c520c3 uwb_pal_init +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xdd3ffe78 uwb_rc_cmd +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xe1716f06 uwb_est_register +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xe8578790 uwb_dev_for_each +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xe9755dba uwb_rsv_establish +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xef22dd6a uwb_rc_ie_rm +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xfbad2934 uwb_pal_unregister +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xfdbcf2fc uwb_rc_get_by_grandpa +EXPORT_SYMBOL_GPL drivers/uwb/whci 0xeeb77e05 whci_wait_for +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x047aadc0 vhost_poll_flush +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x184c9cbf vhost_dev_set_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x1a024ba3 vhost_enable_notify +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x226b537c vhost_add_used_n +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x24137502 vhost_poll_init +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x269f7a09 vhost_dev_reset_owner_prepare +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x331fd1e0 vhost_init_used +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x37e46618 vhost_vring_ioctl +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x4a30f4ec vhost_dev_init +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x4ba5d72e vhost_work_queue +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x51fbfd4d vhost_poll_stop +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x5c07eafb vhost_dev_has_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x5ec815cf vhost_dev_check_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x63531f10 vhost_dev_stop +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x64b2e850 vhost_disable_notify +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x7bd88f8e vhost_work_flush +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x7c41c4cb vhost_get_vq_desc +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x939e848c vhost_signal +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x982b156d vhost_log_write +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x9b1b7263 vhost_add_used_and_signal +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x9f9175e6 vhost_add_used_and_signal_n +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xa349e572 vhost_add_used +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xb0f81e37 vhost_work_init +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xca849e73 vhost_dev_cleanup +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xce45cfdc vhost_dev_reset_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xd0c94a61 vhost_poll_start +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xd45ce50c vhost_dev_ioctl +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xd7826779 vhost_discard_vq_desc +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xef07ea69 vhost_poll_queue +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xf26ca31f vhost_log_access_ok +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xf5c3c122 vhost_vq_access_ok +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x72ba26da ili9320_remove +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x799bb315 ili9320_suspend +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x8798218c ili9320_write_regs +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0xac802f6a ili9320_shutdown +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0xb2e61988 ili9320_resume +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0xbab7a3bc ili9320_write +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0xd8c4e5ae ili9320_probe_spi +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x07cbaf81 auok190x_send_cmdargs +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x3429095a auok190x_send_cmdargs_pixels_nowait +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x3d3c53e1 auok190x_read_cmdargs +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x42f8712b auok190x_send_cmdargs_pixels +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x4dfb9874 auok190x_send_command_nowait +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x6b318126 auok190x_send_cmdargs_nowait +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x9bfb6532 auok190x_common_remove +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0xca73ca93 auok190x_common_probe +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0xf2846eb0 auok190x_send_command +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0xf47afebd auok190x_pm +EXPORT_SYMBOL_GPL drivers/video/fbdev/core/fb_ddc 0x94f306dd fb_ddc_read +EXPORT_SYMBOL_GPL drivers/video/fbdev/core/fb_sys_fops 0xd2ca7a1b fb_sys_write +EXPORT_SYMBOL_GPL drivers/video/fbdev/core/fb_sys_fops 0xdcdbfd36 fb_sys_read +EXPORT_SYMBOL_GPL drivers/video/fbdev/sis/sisfb 0x563277a6 sis_malloc_new +EXPORT_SYMBOL_GPL drivers/video/fbdev/sis/sisfb 0x95bd82b1 sis_free_new +EXPORT_SYMBOL_GPL drivers/w1/wire 0x06440b3d w1_write_block +EXPORT_SYMBOL_GPL drivers/w1/wire 0x22f4222c w1_reset_select_slave +EXPORT_SYMBOL_GPL drivers/w1/wire 0x2a1c8d1f w1_touch_block +EXPORT_SYMBOL_GPL drivers/w1/wire 0x327f85c3 w1_reset_bus +EXPORT_SYMBOL_GPL drivers/w1/wire 0x42faf760 w1_read_8 +EXPORT_SYMBOL_GPL drivers/w1/wire 0x450dbdc2 w1_reset_resume_command +EXPORT_SYMBOL_GPL drivers/w1/wire 0x7122d29e w1_write_8 +EXPORT_SYMBOL_GPL drivers/w1/wire 0x7c2f2afb w1_calc_crc8 +EXPORT_SYMBOL_GPL drivers/w1/wire 0xe2a51844 w1_next_pullup +EXPORT_SYMBOL_GPL drivers/w1/wire 0xf011b0f5 w1_read_block +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x17d1d61d dlm_posix_unlock +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x478d964d dlm_posix_get +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x9321df95 dlm_lock +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xc6dc8c2f dlm_new_lockspace +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xcf9f3328 dlm_release_lockspace +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xdc583c08 dlm_unlock +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xde48aa64 dlm_posix_lock +EXPORT_SYMBOL_GPL fs/fscache/fscache 0x092cf98e fscache_object_sleep_till_congested +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x144c4200 nlmclnt_done +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x69060dde nlmclnt_init +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x75141014 nlmsvc_unlock_all_by_sb +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x77e35ccc nlmsvc_unlock_all_by_ip +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x87924f5b nlmclnt_proc +EXPORT_SYMBOL_GPL fs/lockd/lockd 0xa638bc12 lockd_down +EXPORT_SYMBOL_GPL fs/lockd/lockd 0xc8f85151 lockd_up +EXPORT_SYMBOL_GPL fs/lockd/lockd 0xefc125ac nlmsvc_ops +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x04379359 nfs_fs_type +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x051ac3c1 nfs_show_stats +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x07dd4a11 nfs_instantiate +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x09d5bec7 nfs_atomic_open +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0d601da5 nfs_init_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0fe0ee0f nfs_file_mmap +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x131c503a nfs4_fs_type +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x13df1808 nfs_file_write +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x168650e2 nfs_rmdir +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1826e5b6 nfs_do_submount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x18fdf5da nfs_file_fsync_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x192bf919 nfs_fs_mount_common +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1c5dddd1 nfs_pageio_init +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1fd341d5 nfs_pageio_resend +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1fdac402 nfs_may_open +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2270b097 nfs_initiate_pgio +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x240ebb0e nfs_file_llseek +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x260a9390 nfs_permission +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x26884ff7 nfs_alloc_fhandle +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2891a93a nfs_initiate_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x28a4477a nfs_free_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x29a2410b nfs_symlink +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2b331f1e nfs_alloc_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2bf22892 nfs_link +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2cc5c7b5 nfs_pageio_init_write +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2d32567a nfs_pageio_reset_write_mds +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x32f9074d nfs_path +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x334aea7f nfs_commit_free +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x33958cdf nfs_put_lock_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x34171e78 nfs_get_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x356dba1d unregister_nfs_version +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x35d43620 nfs_file_operations +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x360bdaeb nfs_setattr_update_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x372660b2 nfs_force_lookup_revalidate +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x39e05ac3 nfs_idmap_cache_timeout +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3b74c6ad nfs_request_add_commit_list_locked +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3ca31f35 nfs_net_id +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3cffece6 nfs_sb_active +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3f2690f2 nfs_check_flags +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x425afd17 nfs_fhget +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x42f2c81f nfs4_client_id_uniquifier +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x442c0ccd nfs_statfs +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x447fe5bc nfs_wait_client_init_complete +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x48a01344 nfs_wb_all +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x48c247a9 nfs_server_copy_userdata +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4b593ac8 nfs_flock +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4cb9e001 recover_lost_locks +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4da9324d nfs_server_insert_lists +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4e0e3893 nfs_zap_acl_cache +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x500db3d3 nfs_create +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x51892d61 nfs_callback_set_tcpport +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x56bc19d3 nfs_retry_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x57742e83 nfs_pgio_data_destroy +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x57ac267b nfs_sops +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x584b8482 nfs_inc_attr_generation_counter +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x59c3b9f9 nfs_file_flush +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x59c80d0a nfs_init_cinfo +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5a17b08c nfs_pgio_header_free +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5a8c6208 nfs_mark_client_ready +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5d271613 nfs_file_splice_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5e1d863a nfs_sockaddr_match_ipaddr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5edcaaa4 nfs_set_sb_security +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5fb88cfd nfs_request_remove_commit_list +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x620816b8 nfs_create_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x67509041 nfs_umount_begin +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x675c4d60 nfs_file_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x67c85390 get_nfs_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x68ea799e nfs_destroy_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6d8b2f43 nfs_pgio_current_mirror +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6f918954 nfs_access_add_cache +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7153202b nfs_refresh_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x71f0361e nfs_setsecurity +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7407f9c7 nfs_mknod +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7615a909 nfs_inode_attach_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x771b2138 nfs_sb_deactive +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7c9c515c nfs_show_devname +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7dd3092c nfs_show_path +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7f5fa30c register_nfs_version +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x80202e9c nfs_setattr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8175afbf nfs_generic_pgio +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x836e7e84 nfs_lock +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x88b6a396 nfs_pgio_header_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8f72d3d0 nfs_show_options +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x90a5530f nfsiod_workqueue +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9122ff87 nfs_mkdir +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x91d1fe52 max_session_slots +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x96878af1 nfs_fscache_open_file +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x98def015 nfs4_label_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x99da196e nfs_post_op_update_inode_force_wcc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9d010fb4 nfs_kill_super +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa0535307 nfs_post_op_update_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa3ebb3d8 nfs_commitdata_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa68dde64 nfs_submount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa6c865ee nfs_wait_bit_killable +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa8d2d1ce nfs_callback_tcpport +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa8e9e1ae send_implementation_id +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xaa8d4033 nfs_file_set_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xaaa14361 nfs_dreq_bytes_left +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb22e08a2 nfs_create_rpc_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb30e54b5 nfs_init_server_rpcclient +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb4066d23 nfs_init_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb606e716 nfs_fattr_init +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb8958b1a __tracepoint_nfs_fsync_exit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbdd77be6 nfs_probe_fsinfo +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbf65f855 nfs_rename +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc1932078 nfs_try_mount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc26e2995 nfs_alloc_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc3d67d7e put_nfs_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc4baceeb nfs_pageio_init_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc4c65540 nfs_write_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc4ff1e9f nfs_auth_info_match +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc52b2b56 nfs_clear_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc5be11c5 nfs_drop_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc5ef47d5 nfs_init_timeout_values +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc6b0069f nfs_dentry_operations +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc8a0224f nfs_pageio_reset_read_mds +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xca95240f nfs_free_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xcb81446a nfs_fs_mount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xcc0cb845 __tracepoint_nfs_fsync_enter +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xcfc61f66 nfs_request_add_commit_list +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd2513081 _nfs_display_fhandle_hash +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd2c6f549 nfs_alloc_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd7474a37 nfs4_dentry_operations +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdae9b5d7 nfs4_disable_idmapping +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdbab082a nfs_getattr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdd58dcda nfs_pgheader_init +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdec93e0f nfs_sync_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe0341c6e nfs_clone_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe3412c65 nfs_fill_super +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe7196ba9 nfs_clone_sb_security +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe92c510d nfs_direct_set_resched_writes +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xed3c45d5 nfs_generic_pg_test +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xed991828 nfs_close_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xeef89192 alloc_nfs_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xef33941f nfs_server_remove_lists +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xef447cc7 nfs_file_release +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf2a1e7e9 nfs_put_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf36e87d1 nfs_access_zap_cache +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf3e8cd8a nfs_access_set_mask +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf560732d nfs_writeback_update_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf6c3137a nfs_revalidate_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf86c076b nfs_commitdata_release +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf8c0e8ab nfs_invalidate_atime +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf9ebc163 nfs_lookup +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfa022a80 nfs_get_lock_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfb7ee006 nfs_alloc_fattr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfbbb66db nfs_unlink +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfc619abd _nfs_display_fhandle +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xff6323c8 nfs_remount +EXPORT_SYMBOL_GPL fs/nfs/nfsv3 0x5354ca84 nfs3_set_ds_client +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x057f525f pnfs_layout_mark_request_commit +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x11bda27c __tracepoint_nfs4_pnfs_read +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x170f3ed6 nfs41_maxgetdevinfo_overhead +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x190cbb4f pnfs_generic_pg_test +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x1c2758d7 nfs4_schedule_lease_moved_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x1e2a7e86 pnfs_write_done_resend_to_mds +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x2d3b3688 nfs4_put_deviceid_node +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x33d4b0b9 nfs4_sequence_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x340510a1 nfs4_pnfs_ds_connect +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x3a1735c7 nfs_remove_bad_delegation +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x40e97f05 pnfs_report_layoutstat +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x43122023 pnfs_put_lseg_locked +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x451a231f nfs4_schedule_migration_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x47fffd52 nfs4_pnfs_ds_add +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x4abbb77a pnfs_unregister_layoutdriver +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x4adeaf13 nfs4_find_get_deviceid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x4df11c63 pnfs_generic_recover_commit_reqs +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x514807ad nfs40_setup_sequence +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x52d35968 pnfs_generic_write_commit_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x665fa50e __tracepoint_nfs4_pnfs_write +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x69d3558d pnfs_generic_rw_release +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x6cb970a6 pnfs_generic_pg_writepages +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x8134bbd4 pnfs_ld_write_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x824be4ec nfs4_test_deviceid_unavailable +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x83ae6aaa nfs4_pnfs_v3_ds_connect_unload +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x8a72489a nfs4_decode_mp_ds_addr +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x8dceadb2 nfs41_setup_sequence +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x8e899dee pnfs_generic_pg_readpages +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x8fda5dae nfs4_schedule_lease_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x996022d9 pnfs_generic_scan_commit_lists +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x9d516d05 nfs4_find_or_create_ds_client +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xa02df320 nfs_map_string_to_numeric +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xa39e915b pnfs_ld_read_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xa3efc4c7 pnfs_layoutcommit_inode +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xa4a87446 pnfs_nfs_generic_sync +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xa5d84187 nfs4_mark_deviceid_unavailable +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xaf9d7a8d pnfs_set_lo_fail +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xaffbf725 nfs4_proc_getdeviceinfo +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xb077151a pnfs_read_done_resend_to_mds +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xb2c48344 pnfs_register_layoutdriver +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xb6973954 nfs4_pnfs_ds_put +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xb94deb16 pnfs_update_layout +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xbc5cc791 pnfs_set_layoutcommit +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xc56252b1 nfs4_init_deviceid_node +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xca4b50c2 pnfs_generic_sync +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xcccea609 nfs4_schedule_stateid_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xcf683ea2 nfs41_sequence_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xcf85e31b pnfs_generic_clear_request_commit +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xd507b448 nfs4_delete_deviceid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xd72a66e1 nfs4_set_rw_stateid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xd9ecf9cb pnfs_generic_commit_pagelist +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xdb813e84 __tracepoint_nfs4_pnfs_commit_ds +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xdee031c2 pnfs_put_lseg +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xe11bef90 nfs4_schedule_session_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xe19b5a0a pnfs_generic_prepare_to_resend_writes +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xe63f7fdc _pnfs_return_layout +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xe760b6c4 pnfs_generic_pg_init_read +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xed0cbf8f nfs4_set_ds_client +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xed15fb41 nfs4_print_deviceid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xee89489f pnfs_read_resend_pnfs +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xf6a240ed pnfs_destroy_layout +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xf8d3bb23 nfs4_init_ds_session +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xf905d8ea pnfs_generic_pg_init_write +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xf999267e pnfs_generic_commit_release +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xfacdf973 pnfs_error_mark_layout_for_return +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xfc434cad pnfs_generic_pg_cleanup +EXPORT_SYMBOL_GPL fs/nfs_common/grace 0x17ce645d locks_end_grace +EXPORT_SYMBOL_GPL fs/nfs_common/grace 0x183f2000 locks_in_grace +EXPORT_SYMBOL_GPL fs/nfs_common/grace 0xf64a9f1e locks_start_grace +EXPORT_SYMBOL_GPL fs/nfs_common/nfs_acl 0x9790b7c2 nfsacl_encode +EXPORT_SYMBOL_GPL fs/nfs_common/nfs_acl 0xe4bd782e nfsacl_decode +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x11736b03 __mlog_printk +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 0x1d747ce3 o2hb_check_node_heartbeating +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x36418553 o2net_send_message +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x4900035b o2hb_stop_all_regions +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x4df1d135 o2nm_get_node_by_ip +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x511fb24e o2nm_node_put +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x63aa3411 o2hb_setup_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x64eb05ae o2hb_register_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x687f6251 mlog_and_bits +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xa1ae48e1 o2hb_check_node_heartbeating_no_sem +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xa82a8645 o2nm_this_node +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xa87bc9e7 o2nm_configured_node_map +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xa9f5379a o2net_send_message_vec +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xae808bac o2net_register_handler +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xb5a447f1 o2hb_unregister_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xbaeb4700 o2hb_check_node_heartbeating_from_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xc3679d7b o2hb_get_all_regions +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xd60f2c6c o2hb_check_local_node_heartbeating +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xd859ac8c o2net_fill_node_map +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xe51f1d90 o2nm_node_get +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xee14883d o2nm_get_node_by_num +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xf1a5611d o2net_unregister_handler_list +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x12cc3224 dlm_register_eviction_cb +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x359b5beb dlm_unregister_domain +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x3b7f77c6 dlm_print_one_lock +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x53df6b18 dlmlock +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x6c7b3cc7 dlm_register_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 0xe4da10d6 dlmunlock +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xfb86b96f dlm_errname +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x106e1cd2 ocfs2_stack_glue_register +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x269d63fd ocfs2_cluster_disconnect +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x316904e1 ocfs2_dlm_unlock +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x3bcef5f3 ocfs2_dlm_lock_status +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x40718c92 ocfs2_dlm_lock +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x4226705d ocfs2_dlm_dump_lksb +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x424241c9 ocfs2_dlm_lvb +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x4d3af7fa ocfs2_cluster_hangup +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x60f4bcef ocfs2_dlm_lvb_valid +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x9ccafa05 ocfs2_cluster_this_node +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x9fa84254 ocfs2_stack_glue_unregister +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xa06fbc10 ocfs2_cluster_connect_agnostic +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xae4245d4 ocfs2_plock +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xbbc4ef97 ocfs2_stack_supports_plocks +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xbf9068ab ocfs2_cluster_connect +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xe40cffce ocfs2_stack_glue_set_max_proto_version +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 0x4c7529bd torture_shutdown_absorb +EXPORT_SYMBOL_GPL kernel/torture 0x52665f8b torture_random +EXPORT_SYMBOL_GPL kernel/torture 0x5346b23b torture_shuffle_cleanup +EXPORT_SYMBOL_GPL kernel/torture 0x5543a24f _torture_stop_kthread +EXPORT_SYMBOL_GPL kernel/torture 0x6364b2f0 stutter_wait +EXPORT_SYMBOL_GPL kernel/torture 0x679d9e50 torture_must_stop +EXPORT_SYMBOL_GPL kernel/torture 0x688e6a64 torture_cleanup_end +EXPORT_SYMBOL_GPL kernel/torture 0x6bdeda8f torture_onoff_init +EXPORT_SYMBOL_GPL kernel/torture 0x764bb3bd torture_shuffle_task_register +EXPORT_SYMBOL_GPL kernel/torture 0x8b0e1d2f torture_shuffle_init +EXPORT_SYMBOL_GPL kernel/torture 0xc1361afc torture_onoff_cleanup +EXPORT_SYMBOL_GPL kernel/torture 0xc6527045 torture_init_begin +EXPORT_SYMBOL_GPL kernel/torture 0xc67a49d4 torture_cleanup_begin +EXPORT_SYMBOL_GPL kernel/torture 0xdbc5277a torture_shutdown_init +EXPORT_SYMBOL_GPL kernel/torture 0xe6989fd3 torture_init_end +EXPORT_SYMBOL_GPL kernel/torture 0xe9ff1468 torture_stutter_init +EXPORT_SYMBOL_GPL kernel/torture 0xf6d34fb5 torture_kthread_stopping +EXPORT_SYMBOL_GPL kernel/torture 0xfde0329d _torture_create_kthread +EXPORT_SYMBOL_GPL lib/842/842_compress 0x1ce013cf sw842_compress +EXPORT_SYMBOL_GPL lib/842/842_decompress 0x0d22f116 sw842_decompress +EXPORT_SYMBOL_GPL lib/bch 0x231d70fc encode_bch +EXPORT_SYMBOL_GPL lib/bch 0x6b770f49 decode_bch +EXPORT_SYMBOL_GPL lib/bch 0x9463ff71 init_bch +EXPORT_SYMBOL_GPL lib/bch 0xbdf512de free_bch +EXPORT_SYMBOL_GPL lib/notifier-error-inject 0x5ee71341 notifier_err_inject_dir +EXPORT_SYMBOL_GPL lib/notifier-error-inject 0xebe3f44a 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 lib/reed_solomon/reed_solomon 0x201d8ea3 encode_rs8 +EXPORT_SYMBOL_GPL lib/reed_solomon/reed_solomon 0x29fa419f decode_rs8 +EXPORT_SYMBOL_GPL lib/reed_solomon/reed_solomon 0x300d7e57 free_rs +EXPORT_SYMBOL_GPL lib/reed_solomon/reed_solomon 0x6fbb3bd9 init_rs_non_canonical +EXPORT_SYMBOL_GPL lib/reed_solomon/reed_solomon 0xabda1e2e decode_rs16 +EXPORT_SYMBOL_GPL lib/reed_solomon/reed_solomon 0xb050f329 init_rs +EXPORT_SYMBOL_GPL net/6lowpan/6lowpan 0x58ea9388 lowpan_header_compress +EXPORT_SYMBOL_GPL net/6lowpan/6lowpan 0xc18077fc lowpan_header_decompress +EXPORT_SYMBOL_GPL net/802/garp 0x15b18193 garp_init_applicant +EXPORT_SYMBOL_GPL net/802/garp 0x24558f13 garp_request_leave +EXPORT_SYMBOL_GPL net/802/garp 0x3d73d556 garp_register_application +EXPORT_SYMBOL_GPL net/802/garp 0xa4feabe3 garp_uninit_applicant +EXPORT_SYMBOL_GPL net/802/garp 0xa686d4be garp_unregister_application +EXPORT_SYMBOL_GPL net/802/garp 0xd9b2ae21 garp_request_join +EXPORT_SYMBOL_GPL net/802/mrp 0x4ef0dc04 mrp_uninit_applicant +EXPORT_SYMBOL_GPL net/802/mrp 0x73a407d9 mrp_init_applicant +EXPORT_SYMBOL_GPL net/802/mrp 0x75c58cda mrp_request_leave +EXPORT_SYMBOL_GPL net/802/mrp 0xb68187bb mrp_unregister_application +EXPORT_SYMBOL_GPL net/802/mrp 0xeaf9f7ca mrp_register_application +EXPORT_SYMBOL_GPL net/802/mrp 0xf0b7b063 mrp_request_join +EXPORT_SYMBOL_GPL net/802/stp 0x3bc0fb82 stp_proto_register +EXPORT_SYMBOL_GPL net/802/stp 0xf953d7cc stp_proto_unregister +EXPORT_SYMBOL_GPL net/9p/9pnet 0x240a9b2d p9_client_xattrcreate +EXPORT_SYMBOL_GPL net/9p/9pnet 0x889cd8d6 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 0x613d21c1 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 0x0250f733 l2cap_chan_create +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x03f8b68a l2cap_chan_send +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x38d58785 l2cap_chan_del +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x47ca50a4 l2cap_chan_connect +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x8ea4374c bt_debugfs +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0xbeae88b7 l2cap_chan_put +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0xc5980b36 l2cap_add_psm +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0xf3a6c9e6 l2cap_chan_set_defaults +EXPORT_SYMBOL_GPL net/bridge/br_netfilter 0x0cb0f8b7 br_netfilter_enable +EXPORT_SYMBOL_GPL net/bridge/bridge 0x1a5b42a4 br_multicast_list_adjacent +EXPORT_SYMBOL_GPL net/bridge/bridge 0x4d578a57 nf_br_ops +EXPORT_SYMBOL_GPL net/bridge/bridge 0xb0bfeaeb br_dev_queue_push_xmit +EXPORT_SYMBOL_GPL net/bridge/bridge 0xc6254996 br_deliver +EXPORT_SYMBOL_GPL net/bridge/bridge 0xce86f407 br_handle_frame_finish +EXPORT_SYMBOL_GPL net/bridge/bridge 0xd7445a21 br_multicast_has_querier_anywhere +EXPORT_SYMBOL_GPL net/bridge/bridge 0xdc30f7d1 br_multicast_has_querier_adjacent +EXPORT_SYMBOL_GPL net/bridge/bridge 0xe53b21a2 br_forward_finish +EXPORT_SYMBOL_GPL net/bridge/netfilter/nf_tables_bridge 0x693149e0 nft_bridge_iphdr_validate +EXPORT_SYMBOL_GPL net/bridge/netfilter/nf_tables_bridge 0x7879ff49 nft_bridge_ip6hdr_validate +EXPORT_SYMBOL_GPL net/dccp/dccp 0x046dcbd2 dccp_ctl_make_reset +EXPORT_SYMBOL_GPL net/dccp/dccp 0x1d99d49a dccp_timestamp +EXPORT_SYMBOL_GPL net/dccp/dccp 0x2879fa06 dccp_reqsk_send_ack +EXPORT_SYMBOL_GPL net/dccp/dccp 0x32eed1a3 dccp_connect +EXPORT_SYMBOL_GPL net/dccp/dccp 0x3ea480bb dccp_make_response +EXPORT_SYMBOL_GPL net/dccp/dccp 0x42c7a5c1 dccp_insert_option +EXPORT_SYMBOL_GPL net/dccp/dccp 0x42f36f8d dccp_parse_options +EXPORT_SYMBOL_GPL net/dccp/dccp 0x4374d29a dccp_destroy_sock +EXPORT_SYMBOL_GPL net/dccp/dccp 0x43b3c3e3 dccp_set_state +EXPORT_SYMBOL_GPL net/dccp/dccp 0x4b2e7db7 dccp_getsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0x4cdd391d dccp_feat_list_purge +EXPORT_SYMBOL_GPL net/dccp/dccp 0x4ec35231 dccp_ackvec_parsed_add +EXPORT_SYMBOL_GPL net/dccp/dccp 0x58cd74ea dccp_disconnect +EXPORT_SYMBOL_GPL net/dccp/dccp 0x59814a84 dccp_statistics +EXPORT_SYMBOL_GPL net/dccp/dccp 0x605a2a3c dccp_rcv_established +EXPORT_SYMBOL_GPL net/dccp/dccp 0x6a3e9b19 dccp_create_openreq_child +EXPORT_SYMBOL_GPL net/dccp/dccp 0x70c6d4c9 dccp_close +EXPORT_SYMBOL_GPL net/dccp/dccp 0x79103429 dccp_shutdown +EXPORT_SYMBOL_GPL net/dccp/dccp 0x7f111b72 dccp_feat_nn_get +EXPORT_SYMBOL_GPL net/dccp/dccp 0x7fa35758 dccp_death_row +EXPORT_SYMBOL_GPL net/dccp/dccp 0x8211bef1 dccp_setsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0x822cdcfb dccp_done +EXPORT_SYMBOL_GPL net/dccp/dccp 0x82a5316f dccp_rcv_state_process +EXPORT_SYMBOL_GPL net/dccp/dccp 0x86be7924 dccp_packet_name +EXPORT_SYMBOL_GPL net/dccp/dccp 0x87ecba24 dccp_recvmsg +EXPORT_SYMBOL_GPL net/dccp/dccp 0x9598d24d dccp_ackvec_parsed_cleanup +EXPORT_SYMBOL_GPL net/dccp/dccp 0xa210862b dccp_check_req +EXPORT_SYMBOL_GPL net/dccp/dccp 0xa9e0e933 dccp_feat_signal_nn_change +EXPORT_SYMBOL_GPL net/dccp/dccp 0xac4008e3 dccp_send_ack +EXPORT_SYMBOL_GPL net/dccp/dccp 0xb8ae0594 inet_dccp_listen +EXPORT_SYMBOL_GPL net/dccp/dccp 0xc0b7b890 dccp_orphan_count +EXPORT_SYMBOL_GPL net/dccp/dccp 0xc44ce912 dccp_send_sync +EXPORT_SYMBOL_GPL net/dccp/dccp 0xc4af57b6 dccp_reqsk_init +EXPORT_SYMBOL_GPL net/dccp/dccp 0xc5d57b91 dccp_init_sock +EXPORT_SYMBOL_GPL net/dccp/dccp 0xca51e3f4 dccp_poll +EXPORT_SYMBOL_GPL net/dccp/dccp 0xdd296cfb dccp_ioctl +EXPORT_SYMBOL_GPL net/dccp/dccp 0xe64e9b6f dccp_hashinfo +EXPORT_SYMBOL_GPL net/dccp/dccp 0xedf5e0a5 dccp_sendmsg +EXPORT_SYMBOL_GPL net/dccp/dccp 0xf68e7a34 dccp_child_process +EXPORT_SYMBOL_GPL net/dccp/dccp 0xfa0cbc58 dccp_sync_mss +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x626e03a6 dccp_v4_conn_request +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x90502d87 dccp_v4_do_rcv +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0xbf42619a dccp_v4_send_check +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0xd2d30155 dccp_invalid_packet +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0xe5b01303 dccp_v4_request_recv_sock +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0xff96e116 dccp_v4_connect +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0x059eab63 ieee802154_hdr_push +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0x0b57fc20 ieee802154_hdr_peek_addrs +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0x92cb4a86 ieee802154_hdr_peek +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0xd58dfa29 ieee802154_max_payload +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0xfe25c9de ieee802154_hdr_pull +EXPORT_SYMBOL_GPL net/ipv4/geneve_core 0x1b18ce3a geneve_xmit_skb +EXPORT_SYMBOL_GPL net/ipv4/geneve_core 0x66fc9f0d geneve_sock_release +EXPORT_SYMBOL_GPL net/ipv4/geneve_core 0xcca3b6f0 geneve_sock_add +EXPORT_SYMBOL_GPL net/ipv4/gre 0x09cbdff8 gre_add_protocol +EXPORT_SYMBOL_GPL net/ipv4/gre 0x122af941 gre_build_header +EXPORT_SYMBOL_GPL net/ipv4/gre 0x2cd84a31 gre_cisco_register +EXPORT_SYMBOL_GPL net/ipv4/gre 0x50ac0e0f gre_del_protocol +EXPORT_SYMBOL_GPL net/ipv4/gre 0x92385b4d gre_cisco_unregister +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x48b116af inet_diag_unregister +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x51354439 inet_sk_diag_fill +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0xb968c112 inet_diag_bc_sk +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0xbcdc829d inet_diag_register +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0xc132dd69 inet_diag_dump_icsk +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0xd275167a inet_diag_dump_one_icsk +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x0f2e9f0f ip_tunnel_init_net +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x1299ba8d ip_tunnel_xmit +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x313df5c6 ip_tunnel_delete_net +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x40dc32ba ip_tunnel_setup +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x61b6bd19 ip_tunnel_encap_setup +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x7068a9ee ip_tunnel_init +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x8d8179d0 ip_tunnel_ioctl +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x9fdfe8a2 ip_tunnel_lookup +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xb348f647 ip_tunnel_uninit +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xd3570e08 ip_tunnel_dellink +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xd83284e2 ip_tunnel_change_mtu +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xd8fb7ea6 ip_tunnel_changelink +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xf83e5808 ip_tunnel_newlink +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xfab1a1f4 ip_tunnel_rcv +EXPORT_SYMBOL_GPL net/ipv4/netfilter/arp_tables 0x5408c3fc arpt_alloc_initial_table +EXPORT_SYMBOL_GPL net/ipv4/netfilter/ip_tables 0x368bb92a ipt_alloc_initial_table +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_defrag_ipv4 0x6b6c3d10 nf_defrag_ipv4_enable +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_ipv4 0x52e9a83e nf_nat_ipv4_fn +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_ipv4 0x55d889b4 nf_nat_icmp_reply_translation +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_ipv4 0x86682134 nf_nat_ipv4_out +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_ipv4 0xbeac10bf nf_nat_ipv4_in +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_ipv4 0xdba9e9ec nf_nat_ipv4_local_fn +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_masquerade_ipv4 0x3f5c468e nf_nat_masquerade_ipv4_unregister_notifier +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_masquerade_ipv4 0x46f5c6be nf_nat_masquerade_ipv4 +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_masquerade_ipv4 0xfedbf252 nf_nat_masquerade_ipv4_register_notifier +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_proto_gre 0x636b12c8 nf_nat_need_gre +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0x044dca79 nf_reject_ip_tcphdr_put +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0x150c7fff nf_send_unreach +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0x16e11bdd nf_reject_ip_tcphdr_get +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0x2302d734 nf_send_reset +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0x7d84c8fc nf_reject_iphdr_put +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_tables_ipv4 0x90d9c6db nft_af_ipv4 +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x39c762da tcp_vegas_get_info +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x5e0855b7 tcp_vegas_cwnd_event +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x6ef6051b tcp_vegas_init +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x9d3ea43d tcp_vegas_pkts_acked +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0xb805b8bd tcp_vegas_state +EXPORT_SYMBOL_GPL net/ipv4/udp_tunnel 0x22c564c2 setup_udp_tunnel_sock +EXPORT_SYMBOL_GPL net/ipv4/udp_tunnel 0xafaaad40 udp_tunnel_xmit_skb +EXPORT_SYMBOL_GPL net/ipv4/udp_tunnel 0xecada373 udp_tunnel_sock_release +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x04712145 ip6_tnl_dst_check +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x4c10400f ip6_tnl_rcv_ctl +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x5195e1ff ip6_tnl_dst_store +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x8392e124 ip6_tnl_xmit_ctl +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0xb2e07141 ip6_tnl_dst_reset +EXPORT_SYMBOL_GPL net/ipv6/ip6_udp_tunnel 0x01b2b252 udp_sock_create6 +EXPORT_SYMBOL_GPL net/ipv6/ip6_udp_tunnel 0x35b79185 udp_tunnel6_xmit_skb +EXPORT_SYMBOL_GPL net/ipv6/netfilter/ip6_tables 0x69d8be5e ip6t_alloc_initial_table +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_defrag_ipv6 0x6eb85693 nf_defrag_ipv6_enable +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_ipv6 0x29e3a5f0 nf_nat_icmpv6_reply_translation +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_ipv6 0x4edf34a2 nf_nat_ipv6_in +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_ipv6 0x5f9e45d4 nf_nat_ipv6_out +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_ipv6 0x944c298d nf_nat_ipv6_fn +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_ipv6 0x99be1341 nf_nat_ipv6_local_fn +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_masquerade_ipv6 0x2293972c nf_nat_masquerade_ipv6_unregister_notifier +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_masquerade_ipv6 0x38d4401a nf_nat_masquerade_ipv6_register_notifier +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_masquerade_ipv6 0xaeeda0ee nf_nat_masquerade_ipv6 +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0x03b4a761 nf_reject_ip6_tcphdr_get +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0x60968260 nf_reject_ip6hdr_put +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0x941599fd nf_reject_ip6_tcphdr_put +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0xd0300dff nf_send_reset6 +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0xe9817618 nf_send_unreach6 +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_tables_ipv6 0x47a6e0b1 nft_af_ipv6 +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x08ebdb1e l2tp_xmit_skb +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x1237f8a2 l2tp_tunnel_create +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x23c2862c l2tp_tunnel_closeall +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x33a10bc5 l2tp_session_set_header_len +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x33f98550 l2tp_session_find_by_ifname +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x4239f10e l2tp_session_delete +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x58092d20 l2tp_session_find +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x583837a0 __l2tp_session_unhash +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x99a55217 l2tp_tunnel_find_nth +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x9f8824b5 l2tp_tunnel_delete +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xa94597fa l2tp_tunnel_find +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xac2f83fc l2tp_udp_encap_recv +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xc6eb842b l2tp_session_queue_purge +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xda07bc38 l2tp_session_free +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xe423cfc6 l2tp_session_find_nth +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xec6e09e3 l2tp_session_create +EXPORT_SYMBOL_GPL net/l2tp/l2tp_netlink 0x337f2432 l2tp_nl_unregister_ops +EXPORT_SYMBOL_GPL net/l2tp/l2tp_netlink 0x919c35e2 l2tp_nl_register_ops +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x1ed46f89 ieee80211_iterate_active_interfaces_atomic +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x23f9f25a ieee80211_ready_on_channel +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x2b66f6c9 ieee80211_request_smps +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x2b6fc600 wdev_to_ieee80211_vif +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x301516f5 ieee80211_remove_key +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x3d487da1 ieee80211_gtk_rekey_add +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x4e8e38c9 ieee80211_remain_on_channel_expired +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x54cd4846 ieee80211_vif_to_wdev +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x5bb27da4 ieee80211_napi_add +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x7b846efd ieee80211_iterate_stations_atomic +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x80910dab ieee80211_resume_disconnect +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x9b093ea1 ieee80211_iterate_interfaces +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xad0efcfd ieee80211_set_key_tx_seq +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xb0624bcb ieee80211_find_sta_by_ifaddr +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xc2a298c4 ieee80211_ave_rssi +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xc31dfd0e ieee80211_iter_chan_contexts_atomic +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xd45de5a3 ieee80211_gtk_rekey_notify +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xf607f1fb ieee80211_iterate_active_interfaces_rtnl +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xf9fa191d ieee80211_set_key_rx_seq +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x047cd3d7 ip_set_get_ip4_port +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x13d0b444 ip_set_elem_len +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x1c56d279 ip_set_put_byindex +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x397f6231 ip_set_free +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x41f4658c ip_set_type_unregister +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x56713fca ip_set_get_ip_port +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x6344eaf6 ip_set_alloc +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x6b076a1d 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 0x870db2fb ip_set_get_ip6_port +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x8beeb713 ip_set_get_extensions +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x91e06d83 ip_set_del +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x930fa6c6 ip_set_name_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 0xa2d623f3 ip_set_range_to_cidr +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xc54d57f2 ip_set_type_register +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xc7440267 ip_set_get_byname +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xcc001bd9 ip_set_extensions +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xe896b860 ip_set_put_extensions +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xf574cb24 ip_set_add +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xf8468a96 ip_set_nfnl_get_byindex +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xf84e52a5 ip_set_test +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0x0508b6df unregister_ip_vs_pe +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0x205402bb ip_vs_conn_out_get_proto +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0x2ea50629 register_ip_vs_pe +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0x5292dc7b ip_vs_conn_in_get_proto +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x006e4c69 __nf_conntrack_helper_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x00a96671 nf_ct_l3proto_pernet_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x02c0e3f1 nf_ct_helper_expectfn_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x02c86095 nf_conntrack_l4proto_tcp4 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x045072cd nf_ct_port_nla_policy +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x04b481df nf_ct_expect_unregister_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x061b68a1 __nf_ct_kill_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x0ac0d360 nf_conntrack_l4proto_udp4 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x0aca095b nf_conntrack_in +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x0fd59fe6 nf_ct_seqadj_init +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x0fdb1aee nf_conntrack_unregister_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x106edcc0 nf_connlabels_replace +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x159130f1 nf_ct_expect_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x16118a73 nf_ct_expect_related_report +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x1ada2933 nf_ct_unlink_expect_report +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x1f388d3b seq_print_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x23389d59 nf_ct_deliver_cached_events +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x27cb445b nf_ct_l3proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x283d4d28 nf_conntrack_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x289c3714 nf_ct_alloc_hashtable +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x2acef2b9 __nf_ct_l4proto_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x2bd69c03 nf_ct_l3proto_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x2fa8fefc nf_ct_seq_adjust +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x30fe0217 nf_conntrack_l4proto_tcp6 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x33ea9665 nf_ct_l4proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x35598b33 nf_ct_seq_offset +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x37386cac nf_conntrack_hash_rnd +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x38f6b1e2 nf_conntrack_l4proto_udp6 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x39d8f8e1 nf_conntrack_set_hashsize +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3bdd9297 __nf_ct_try_assign_helper +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3f5b1415 nf_ct_port_nlattr_to_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x42a04dd4 nf_ct_l4proto_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x4b1b25e7 __nf_ct_refresh_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x4d3900c3 nf_ct_iterate_cleanup +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x5363ec77 nf_ct_helper_ext_add +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x5785070f nf_connlabel_match +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x58aeca06 nf_ct_l4proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x599ad038 nf_ct_extend_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x5e86e194 nf_ct_timeout_find_get_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x62813e5c nf_ct_port_nlattr_tuple_size +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x693c3961 nf_ct_helper_hash +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6d5305e2 nf_ct_l4proto_pernet_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6e224a7a need_conntrack +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x711a5cdd nf_ct_extend_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x7688450f nf_ct_l4proto_pernet_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x7803c830 nf_ct_l3proto_pernet_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x78f9b710 nf_ct_l3proto_try_module_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x7ed19595 nf_ct_tcp_seqadj_set +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x7f2dfab3 nf_conntrack_helper_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x7fded2ba __nf_conntrack_confirm +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x80f511eb nf_ct_invert_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8469c342 nf_ct_tmpl_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x84c3f25a nf_conntrack_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x89786d43 nf_conntrack_register_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8a66c4fc nf_conntrack_expect_lock +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8ffe7e89 nf_conntrack_htable_size +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x90ff6c9f nf_ct_invert_tuplepr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x9431b689 __nf_ct_expect_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x95d6cd75 nf_ct_helper_expectfn_find_by_name +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x99105834 nf_ct_expect_init +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x9a09a9c8 nf_ct_delete +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x9a7a9859 nf_ct_tmpl_free +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x9b998278 nf_conntrack_helper_try_module_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa035cdbc nf_ct_unexpect_related +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa115c37a nfnetlink_parse_nat_setup_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa2e426fd nf_ct_expect_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa5d4bd58 nf_ct_expect_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa765dfe5 nf_ct_helper_expectfn_find_by_symbol +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xab3d1f95 nf_ct_untracked_status_or +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xab55340d nf_ct_timeout_put_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xad1bb027 nf_ct_free_hashtable +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xae6c2fc4 nf_ct_port_tuple_to_nlattr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xaff8a514 nf_ct_helper_expectfn_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb602c57e nf_ct_l3proto_module_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb700340a nf_conntrack_alter_reply +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xbd2e3f00 nf_ct_remove_expectations +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 0xcec03366 nf_connlabel_set +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xcec63788 nf_conntrack_l3proto_generic +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd2190585 nf_ct_l3proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd48ebefa nf_ct_l4proto_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd57e151d nf_conntrack_hash_check_insert +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd599a043 nf_ct_helper_log +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd7c1fef2 nf_conntrack_free +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xdaaca19f nf_conntrack_helper_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xdad6c629 nf_ct_get_tuplepr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xde37d72a nf_conntrack_tuple_taken +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xe76cb11f nf_ct_l3protos +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xeb7c08b8 nf_ct_seqadj_set +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xed07278a nf_ct_get_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf38bcdf3 nf_conntrack_max +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf423e0f0 nf_ct_expect_register_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xff40b965 nf_conntrack_locks +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_amanda 0xcd9e0f51 nf_nat_amanda_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_broadcast 0xd6c45a8a nf_conntrack_broadcast_help +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_ftp 0xc7f68e29 nf_nat_ftp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x0d63c435 nat_callforwarding_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x167c403c get_h225_addr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x1ed23f93 set_ras_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x27c4bc90 set_sig_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x4926e10a nat_rtp_rtcp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x73d25a3d set_h225_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x9076f6ea set_h245_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xccc0f642 nat_h245_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xcf4b61a3 nat_q931_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xd1475dbc nat_t120_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_irc 0x411497f5 nf_nat_irc_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0x0f857b6b nf_nat_pptp_hook_outbound +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0x13db8cd7 nf_nat_pptp_hook_expectfn +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0x31b88802 nf_nat_pptp_hook_inbound +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0xf2344fc5 nf_nat_pptp_hook_exp_gre +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_proto_gre 0x224b92d7 nf_ct_gre_keymap_add +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_proto_gre 0xde49f221 nf_ct_gre_keymap_destroy +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x1b1941af ct_sip_parse_header_uri +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x49a34f7f ct_sip_get_sdp_header +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x6bf6c84d ct_sip_parse_address_param +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x96d7121c ct_sip_parse_request +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xba3e97f8 nf_nat_sip_hooks +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xbe1b59d4 ct_sip_get_header +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xf390b04c ct_sip_parse_numerical_param +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_snmp 0x9ef0348f nf_nat_snmp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_tftp 0xbfeaded2 nf_nat_tftp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_log_common 0x3852e692 nf_log_dump_tcp_header +EXPORT_SYMBOL_GPL net/netfilter/nf_log_common 0x77c17b6c nf_log_dump_sk_uid_gid +EXPORT_SYMBOL_GPL net/netfilter/nf_log_common 0xb513055c nf_log_dump_packet_common +EXPORT_SYMBOL_GPL net/netfilter/nf_log_common 0xecd39574 nf_log_dump_udp_header +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x0d9bae4b nf_nat_l4proto_nlattr_to_range +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x0f662431 nf_nat_l3proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x131f636c nf_nat_l4proto_in_range +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x20f6a869 nf_nat_l3proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x35bdaf13 nf_ct_nat_ext_add +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x3cdec411 nf_nat_l4proto_unique_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x4243484f nf_nat_packet +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x4d7c2d92 __nf_nat_l4proto_find +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x8153159a nf_nat_alloc_null_binding +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x86a8ffb2 nf_nat_l4proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xbabcd076 nf_nat_l4proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_nat_redirect 0x4e145b1f nf_nat_redirect_ipv6 +EXPORT_SYMBOL_GPL net/netfilter/nf_nat_redirect 0xec1bf61c nf_nat_redirect_ipv4 +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x11a006b5 synproxy_check_timestamp_cookie +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x3402302b synproxy_parse_options +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x5f339439 synproxy_build_options +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x90298227 synproxy_init_timestamp_cookie +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0xb42e336a synproxy_options_size +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0xc1f020f6 synproxy_tstamp_adjust +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0xef7db50c synproxy_net_id +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x1e6b75a3 nft_parse_register +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x27c7b93a nft_data_init +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x2da7d871 nft_unregister_afinfo +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x515efa9b nft_unregister_basechain +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x5778f241 nft_chain_validate_hooks +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x5c7f4afd nft_do_chain +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x64f0e3af nft_register_basechain +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x6632edd9 nft_register_chain_type +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x68088bee nft_data_uninit +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x74de19ed nft_unregister_set +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x92acd131 nft_set_elem_destroy +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x94fbdacc nft_register_set +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x9afd0fd9 nft_set_gc_batch_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xb6e1b979 nft_validate_register_store +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xbf63bb61 nft_set_gc_batch_release +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xc10a4b5b nft_dump_register +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xcc7cde88 nft_data_dump +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xcf03e214 nft_chain_validate_dependency +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xd5cfad5a nft_register_expr +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xd8e44aae nft_unregister_expr +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xddc4e5fe nft_unregister_chain_type +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xe09dada2 nft_set_ext_types +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xe6ef06c6 nft_register_afinfo +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xed33c632 nft_validate_register_load +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x13e6bcf9 nfnetlink_has_listeners +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x28a1d295 nfnetlink_subsys_register +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x443e8bf2 nfnetlink_subsys_unregister +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x5ce3b588 nfnl_lock +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x6e7928ae nfnetlink_alloc_skb +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xbbf25115 nfnetlink_set_err +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xd3f87038 nfnetlink_send +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xdb065657 nfnl_unlock +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xfc1c9b1a nfnetlink_unicast +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0x21f6bba6 nfnl_acct_find_get +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0x6c2fd6b9 nfnl_acct_overquota +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0xbecf5d14 nfnl_acct_put +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0xeef00a80 nfnl_acct_update +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_log 0x6758f891 nfulnl_log_packet +EXPORT_SYMBOL_GPL net/netfilter/nft_masq 0x05af62b9 nft_masq_init +EXPORT_SYMBOL_GPL net/netfilter/nft_masq 0x0a900e50 nft_masq_validate +EXPORT_SYMBOL_GPL net/netfilter/nft_masq 0x8a3d9a3b nft_masq_dump +EXPORT_SYMBOL_GPL net/netfilter/nft_masq 0xe3b8ea21 nft_masq_policy +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0x217ebe21 nft_meta_get_dump +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0x5f25cd5f nft_meta_set_eval +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0x6e4b39db nft_meta_get_eval +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0x7a265d44 nft_meta_set_init +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0x95a77ac6 nft_meta_get_init +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0xb80e8358 nft_meta_policy +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0xb8bfd038 nft_meta_set_dump +EXPORT_SYMBOL_GPL net/netfilter/nft_redir 0x06b15bb8 nft_redir_dump +EXPORT_SYMBOL_GPL net/netfilter/nft_redir 0x779c801c nft_redir_init +EXPORT_SYMBOL_GPL net/netfilter/nft_redir 0xa5be1e1e nft_redir_policy +EXPORT_SYMBOL_GPL net/netfilter/nft_redir 0xe1693439 nft_redir_validate +EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0x93eba917 nft_reject_dump +EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0xa2db3c7f nft_reject_policy +EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0xbf396297 nft_reject_init +EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0xddf15889 nft_reject_icmp_code +EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0xe8cdab4e nft_reject_icmpv6_code +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x04eca3bb xt_find_table_lock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x1ee69813 xt_replace_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x1ffcb927 xt_check_match +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x40728a63 xt_find_revision +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x41ceab94 xt_unregister_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x58534ec3 xt_check_target +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x58c20296 xt_register_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x807d2b2c xt_recseq +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x82c74b18 xt_request_find_target +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x835f6752 xt_request_find_match +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x997acf48 xt_hook_unlink +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xa51e443b xt_proto_init +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xb3773902 xt_hook_link +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xbc63c8c6 xt_proto_fini +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xbed155d4 xt_table_unlock +EXPORT_SYMBOL_GPL net/netfilter/xt_RATEEST 0x00204983 xt_rateest_put +EXPORT_SYMBOL_GPL net/netfilter/xt_RATEEST 0x482b6a12 xt_rateest_lookup +EXPORT_SYMBOL_GPL net/nfc/nci/nci 0x75645d69 nci_spi_allocate_spi +EXPORT_SYMBOL_GPL net/nfc/nci/nci 0xe8281e1c nci_spi_send +EXPORT_SYMBOL_GPL net/nfc/nci/nci 0xf891c950 nci_spi_read +EXPORT_SYMBOL_GPL net/nfc/nci/nci_uart 0x3f139009 nci_uart_register +EXPORT_SYMBOL_GPL net/nfc/nci/nci_uart 0x6ec65856 nci_uart_unregister +EXPORT_SYMBOL_GPL net/nfc/nci/nci_uart 0x971025f0 nci_uart_set_config +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x0392bd1b ovs_vport_ops_unregister +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x687b1012 ovs_vport_ops_register +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x77cbc25b ovs_vport_free +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0xb5baf867 ovs_vport_deferred_free +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0xd6a8655b ovs_vport_alloc +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0xda83411d ovs_net_id +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0xe4964765 ovs_vport_receive +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0xffb55b32 ovs_tunnel_get_egress_info +EXPORT_SYMBOL_GPL net/rds/rds 0x00a467af rds_wq +EXPORT_SYMBOL_GPL net/rds/rds 0x119b49ec rds_message_addref +EXPORT_SYMBOL_GPL net/rds/rds 0x2afda07b rds_send_get_message +EXPORT_SYMBOL_GPL net/rds/rds 0x2c5c5514 rds_message_add_rdma_dest_extension +EXPORT_SYMBOL_GPL net/rds/rds 0x3101936e rds_message_add_extension +EXPORT_SYMBOL_GPL net/rds/rds 0x3197f7f2 rds_conn_create +EXPORT_SYMBOL_GPL net/rds/rds 0x39e70494 rds_connect_complete +EXPORT_SYMBOL_GPL net/rds/rds 0x41427d42 rds_page_copy_user +EXPORT_SYMBOL_GPL net/rds/rds 0x4622b59b rds_page_remainder_alloc +EXPORT_SYMBOL_GPL net/rds/rds 0x4db4c57b rds_recv_incoming +EXPORT_SYMBOL_GPL net/rds/rds 0x50cbe7b3 rds_stats +EXPORT_SYMBOL_GPL net/rds/rds 0x5cb42f2c rds_inc_put +EXPORT_SYMBOL_GPL net/rds/rds 0x6ac3863a rds_cong_map_updated +EXPORT_SYMBOL_GPL net/rds/rds 0x73aac73d rds_message_populate_header +EXPORT_SYMBOL_GPL net/rds/rds 0x7ab030b0 rds_trans_unregister +EXPORT_SYMBOL_GPL net/rds/rds 0x7b6e55e9 rds_conn_destroy +EXPORT_SYMBOL_GPL net/rds/rds 0x8046eb88 rds_conn_create_outgoing +EXPORT_SYMBOL_GPL net/rds/rds 0x88fc613a rds_info_deregister_func +EXPORT_SYMBOL_GPL net/rds/rds 0x92dfa1e2 rds_conn_connect_if_down +EXPORT_SYMBOL_GPL net/rds/rds 0x96fafe85 rds_stats_info_copy +EXPORT_SYMBOL_GPL net/rds/rds 0x9e34ef51 rds_info_register_func +EXPORT_SYMBOL_GPL net/rds/rds 0xb0181ba0 rds_for_each_conn_info +EXPORT_SYMBOL_GPL net/rds/rds 0xb351b741 rds_inc_init +EXPORT_SYMBOL_GPL net/rds/rds 0xc1478523 rds_message_unmapped +EXPORT_SYMBOL_GPL net/rds/rds 0xc2dab779 rds_info_copy +EXPORT_SYMBOL_GPL net/rds/rds 0xccf96e2e rds_conn_drop +EXPORT_SYMBOL_GPL net/rds/rds 0xe1adfc87 rds_message_put +EXPORT_SYMBOL_GPL net/rds/rds 0xe9422ec3 rds_send_drop_acked +EXPORT_SYMBOL_GPL net/rds/rds 0xf0af8e67 rds_atomic_send_complete +EXPORT_SYMBOL_GPL net/rds/rds 0xf1c84845 rds_trans_register +EXPORT_SYMBOL_GPL net/rds/rds 0xf7f70284 rds_rdma_send_complete +EXPORT_SYMBOL_GPL net/rxrpc/af-rxrpc 0xd7f4c865 rxrpc_register_security +EXPORT_SYMBOL_GPL net/rxrpc/af-rxrpc 0xe2b25a6d rxrpc_unregister_security +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x00c52ef5 g_make_token_header +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x6b7ffc04 svcauth_gss_flavor +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x8d1a827e svcauth_gss_register_pseudoflavor +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xb5dea7ef g_token_size +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xc5a61010 gss_mech_register +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xc6411b4f gss_mech_unregister +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xf8b2ff6e g_verify_token_header +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0027ad2a rpc_put_task_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x01d7275b xprt_release_xprt_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x02bd6202 rpc_lookup_cred_nonblock +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x03a28171 xprt_destroy_backchannel +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x045834e9 rpcauth_get_pseudoflavor +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 0x0970564a xdr_init_encode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0af6da15 xdr_shift_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0b483f5f rpc_get_sb_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0c297001 rpc_init_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0d025b90 svc_close_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0da06165 rpc_wake_up +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0e7d846f xdr_init_decode_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0ec347b8 xprt_free +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0f668ba9 svc_auth_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x10c6ea78 cache_purge +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x10f504e0 sunrpc_cache_register_pipefs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x12236ebd rpc_get_timeout +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x12a886db svc_shutdown_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x152e5546 svc_addsock +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x153bd0e6 rpc_restart_call_prepare +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x15cb70db rpc_run_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x166f7f8c svc_print_addr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x17746fe5 rpcauth_generic_bind_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x177c01ec rpc_wake_up_status +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x18b55ea2 xdr_decode_array2 +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x18c0ad24 rpc_task_reset_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x19563d71 rpc_mkpipe_data +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1ab0d203 rpcauth_key_timeout_notify +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1aef8466 xdr_buf_subsegment +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1e36a6a5 xdr_buf_trim +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1f188d11 xdr_decode_word +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2172f9d2 cache_check +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2259d676 xdr_process_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x274c6d03 xdr_encode_word +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2919b156 xdr_decode_string_inplace +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2b4c62a6 rpc_pton +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2c07cd1c rpc_count_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2cccf898 rpc_bind_new_program +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2d097721 svc_max_payload +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2ddc92b8 rpcauth_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2de00567 rpc_call_null +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2eec63c9 xdr_encode_netobj +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2f8ebbe0 rpc_ntop +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x30e783df rpc_d_lookup_sb +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x31a89d59 rpc_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3252feba xdr_set_scratch_buffer +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x32ee7554 xdr_stream_pos +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x343dfddc svc_recv +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x344dde7c sunrpc_cache_update +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x35fe81b0 svc_seq_show +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x36f10dd0 rpc_put_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x36f21235 sunrpc_cache_unregister_pipefs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x37682976 rpc_uaddr2sockaddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x37dd331a rpc_remove_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x387e1639 rpc_pipefs_notifier_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x38b060e3 svc_unreg_xprt_class +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3a69b065 rpc_shutdown_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3d4ae2b2 svc_rpcb_cleanup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3e45f65b svc_proc_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3e7935c5 svc_find_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3eebe8b4 sunrpc_cache_lookup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3f89d872 xdr_terminate_string +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4404e99e rpc_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x47b9e29c rpcauth_init_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4cb01ac8 xdr_enter_page +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4e4a8135 xdr_inline_decode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x513da0e7 auth_domain_find +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x51dd908f rpc_count_iostats_metrics +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x53445f68 nlm_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x53ec5773 write_bytes_to_xdr_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x578646ce __rpc_wait_for_completion_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x595dfb2b xdr_inline_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5b94ac35 xprt_wait_for_buffer_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5d68c104 rpc_exit +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x60bb1975 xprt_disconnect_done +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6452af89 xprt_reserve_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x64f04bfd rpc_clnt_swap_deactivate +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x65727ac8 svc_authenticate +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x67086671 rpc_net_ns +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6762a30c xdr_commit_encode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x67bcdf0e rpc_proc_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x69672d36 rpc_queue_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6f2e16af rpc_sleep_on +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6f8c246c rpc_malloc +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x718d69bd cache_create_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x71fa908a cache_flush +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x73b1d7d8 rpc_delay +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x76477db8 xdr_partial_copy_from_skb +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x78eaa036 xprt_reserve_xprt_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x799b02d4 rpc_restart_call +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x79f911df svc_sock_update_bufs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7a871b4c xprt_set_retrans_timeout_def +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7ba68e9d rpc_wake_up_first +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7d2c89f9 rpc_add_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7de53067 rpc_init_rtt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7efba3d4 rpc_clone_client_set_auth +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7f35c424 _copy_from_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x80951b28 rpcauth_get_gssinfo +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x80a283a1 xprt_complete_rqst +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8129bb63 svc_reg_xprt_class +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x852b62cd rpcauth_lookup_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x888bca4b svc_xprt_names +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x88d32d3b svc_auth_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x89d395d9 svc_xprt_copy_addrs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8bf6acbe sunrpc_init_cache_detail +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8c148d73 sunrpc_destroy_cache_detail +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8d42f3b9 rpc_localaddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8d8eafb7 rpc_switch_client_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8e9bc673 rpc_protocol +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x90b18f7b xprt_register_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x91d280a1 cache_unregister_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x91e885db svc_destroy +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x93490764 xdr_write_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x94f83331 svc_xprt_put +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x963aa986 svc_prepare_thread +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x966c0dc0 xdr_buf_from_iov +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x98b75d64 rpcauth_list_flavors +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9a4568d3 rpcauth_init_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9b1e567a rpc_wake_up_next +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9b8043ea xprt_adjust_cwnd +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9c600efc rpc_peeraddr2str +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9dc28c90 rpc_killall_tasks +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9dcf9653 xdr_encode_array2 +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9e91cc7d rpcauth_cred_key_to_expire +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9ef449af rpc_init_priority_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa10479f9 svc_reserve +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa1358847 xdr_init_decode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa4a90d86 svc_drop +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa4e31d98 svc_xprt_init +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa73efbb9 svc_rpcb_setup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa7d9d311 rpc_print_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa808c6d2 svc_alien_sock +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa90a9d72 xprt_release_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xacec1c75 xprt_alloc +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xaee6772a rpcauth_stringify_acceptor +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xaf5bf6ef nfs_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb17d735e rpc_destroy_pipe_data +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb40561cb rpc_call_sync +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb4d47604 xprt_unregister_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb51a3724 rpc_pipefs_notifier_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb5e45e72 xprt_wake_pending_tasks +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb613c1ef xdr_reserve_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb712029d rpc_find_or_alloc_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb7e2ed1d cache_destroy_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb856cc7b rpc_alloc_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb8c0b234 rpc_call_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbabd4860 svcauth_unix_purge +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbf9d1b96 nfsd_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbfdef70e rpc_release_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbff05a54 svc_process +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc06eb380 rpc_unlink +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc0998355 svcauth_unix_set_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc12435e3 rpc_calc_rto +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc1e2bf34 rpc_force_rebind +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc1f8df6e csum_partial_copy_to_xdr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc21b51cc rpc_mkpipe_dentry +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc3880471 xdr_decode_netobj +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc48ad370 rpcauth_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc4afde62 rpc_pipe_generic_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc579c356 xdr_skb_read_bits +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc5c90459 svc_set_num_threads +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc61bc76c rpc_call_start +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc78e77c3 svc_xprt_enqueue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc83e3a93 auth_domain_put +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc8e96dea qword_addhex +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc9712196 read_bytes_from_xdr_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc9dd2c30 rpc_clnt_swap_activate +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcb7f6c98 svc_proc_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcc1de9d8 xprt_lookup_rqst +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xce1e2303 xprt_alloc_slot +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xce2a0cfa xdr_buf_read_netobj +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcee467f3 xprt_load_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd075139d rpc_create_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd0f726ca rpc_sleep_on_priority +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd157659d gssd_running +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd16bc25f xdr_read_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd2178fb3 rpc_wake_up_queued_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd45584b8 unix_domain_find +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd465d2fb svc_create_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd4d54e83 rpc_put_sb_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd7f3c3a8 rpc_free_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd839b5a8 cache_register_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd99f6a8b svc_create_pooled +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xda8da1db rpcauth_destroy_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdaba99d3 put_rpccred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdd6b720e rpc_init_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe161f8a0 rpc_clone_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe17008fc svc_set_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe1ac2bb8 sunrpc_net_id +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe1d55024 xprt_setup_backchannel +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe2505cc2 rpc_init_pipe_dir_head +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe317a99a xprt_release_rqst_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe321324c svc_exit_thread +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe38aa1cc bc_svc_process +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe509a932 rpc_lookup_machine_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe5919cb1 xdr_encode_opaque +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe6f50552 rpc_lookup_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe97f4ce5 qword_get +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe999598f rpc_rmdir +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xeb492316 svc_wake_up +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xebdab7a1 svc_bind +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xed82d6b6 rpc_max_payload +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xedcf6be4 qword_add +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xee83523a xprt_lock_and_alloc_slot +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xeeacab69 rpc_update_rtt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xef0c21e4 rpc_destroy_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xef7175ce svc_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf06afbb1 rpc_setbufsize +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf386a5b8 xprt_set_retrans_timeout_rtt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf3d5eeef xprt_write_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf65d6859 rpcauth_lookupcred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf6c9fdf9 sunrpc_cache_pipe_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf87a944b rpc_peeraddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf9d1164c rpc_free +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfa2b642a rpcb_getport_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfd24dcf1 rpcauth_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfe9e7fa7 rpc_proc_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfea287e6 auth_domain_lookup +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x0b7d1619 __vsock_create +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x0c79d5ef vm_sockets_get_local_cid +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x15c0c57c vsock_addr_init +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x1769f666 vsock_remove_bound +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x2663cb64 vsock_addr_equals_addr +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x3881d3f6 vsock_for_each_connected_socket +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x5841c570 vsock_stream_has_data +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x5c900ed1 vsock_remove_pending +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x6a7741f0 vsock_find_bound_socket +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 0x7f730c80 vsock_core_exit +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xbd0f699d vsock_addr_bound +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xbea1053b vsock_remove_connected +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xbea73460 vsock_stream_has_space +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xc0c05ee7 vsock_insert_connected +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xc21657f7 vsock_find_connected_socket +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xd255df49 __vsock_core_init +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xd95ac116 vsock_addr_validate +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xdd1e52b1 vsock_add_pending +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xf593c40a vsock_pending_work +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xf6880457 vsock_enqueue_accept +EXPORT_SYMBOL_GPL net/wimax/wimax 0x0c95b989 wimax_report_rfkill_hw +EXPORT_SYMBOL_GPL net/wimax/wimax 0x134a1a81 wimax_msg_len +EXPORT_SYMBOL_GPL net/wimax/wimax 0x3c555b93 wimax_dev_add +EXPORT_SYMBOL_GPL net/wimax/wimax 0x453f5fea wimax_report_rfkill_sw +EXPORT_SYMBOL_GPL net/wimax/wimax 0x6178d2bf wimax_msg_data +EXPORT_SYMBOL_GPL net/wimax/wimax 0x73c42a76 wimax_msg_alloc +EXPORT_SYMBOL_GPL net/wimax/wimax 0x889aa979 wimax_msg_data_len +EXPORT_SYMBOL_GPL net/wimax/wimax 0xa8083c21 wimax_dev_rm +EXPORT_SYMBOL_GPL net/wimax/wimax 0xba510299 wimax_state_get +EXPORT_SYMBOL_GPL net/wimax/wimax 0xd61bb2b2 wimax_msg +EXPORT_SYMBOL_GPL net/wimax/wimax 0xd740eff6 wimax_dev_init +EXPORT_SYMBOL_GPL net/wimax/wimax 0xe34b0062 wimax_state_change +EXPORT_SYMBOL_GPL net/wimax/wimax 0xeb2236e1 wimax_msg_send +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x03bec6c3 cfg80211_wext_siwrts +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x148b1711 cfg80211_vendor_cmd_reply +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x16e79351 cfg80211_wext_giwmode +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x20dfcaf4 cfg80211_wext_giwrange +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x29612f7c cfg80211_wext_siwmode +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x3c241f3b cfg80211_shutdown_all_interfaces +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x6d33a982 cfg80211_wext_giwfrag +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x70c715eb cfg80211_wext_giwname +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x93de57b0 cfg80211_wext_giwrts +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xa4afe995 cfg80211_wext_siwfrag +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xa621e069 cfg80211_wext_siwscan +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xaa4d0c30 cfg80211_wext_giwretry +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xb6dc2695 cfg80211_wext_giwscan +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 0x3bf471d7 xfrm_calg_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x47b34e60 xfrm_ealg_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x60b73277 xfrm_aead_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x7a8ca627 xfrm_count_pfkey_enc_supported +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x834ba96d xfrm_aalg_get_byid +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xa6e66685 xfrm_aalg_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xaa762fe2 xfrm_aalg_get_byidx +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xad1b60ed xfrm_calg_get_byid +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xdbfc35c8 xfrm_ealg_get_byidx +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xdfea3a6d xfrm_ealg_get_byid +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0x0a1b6ab1 ipcomp_input +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0x3f77e6bb ipcomp_output +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0x4205287d ipcomp_destroy +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0x93c1ac12 ipcomp_init_state +EXPORT_SYMBOL_GPL sound/aoa/core/snd-aoa 0x0933337b pmf_gpio_methods +EXPORT_SYMBOL_GPL sound/aoa/core/snd-aoa 0x2d050f5b aoa_snd_ctl_add +EXPORT_SYMBOL_GPL sound/aoa/core/snd-aoa 0x4c14d762 ftr_gpio_methods +EXPORT_SYMBOL_GPL sound/aoa/core/snd-aoa 0x4c6c7464 aoa_codec_register +EXPORT_SYMBOL_GPL sound/aoa/core/snd-aoa 0x650e32b9 aoa_snd_device_new +EXPORT_SYMBOL_GPL sound/aoa/core/snd-aoa 0x65563b7f aoa_fabric_unlink_codec +EXPORT_SYMBOL_GPL sound/aoa/core/snd-aoa 0x65e90a17 aoa_codec_unregister +EXPORT_SYMBOL_GPL sound/aoa/core/snd-aoa 0x967ee3e9 aoa_get_card +EXPORT_SYMBOL_GPL sound/aoa/core/snd-aoa 0xdfcdbb2f aoa_fabric_unregister +EXPORT_SYMBOL_GPL sound/aoa/core/snd-aoa 0xe6f0a88c aoa_fabric_register +EXPORT_SYMBOL_GPL sound/aoa/soundbus/snd-aoa-soundbus 0x49b21ecf soundbus_dev_put +EXPORT_SYMBOL_GPL sound/aoa/soundbus/snd-aoa-soundbus 0x543d5aa0 soundbus_dev_get +EXPORT_SYMBOL_GPL sound/aoa/soundbus/snd-aoa-soundbus 0x583081b5 soundbus_remove_one +EXPORT_SYMBOL_GPL sound/aoa/soundbus/snd-aoa-soundbus 0xb94148f9 soundbus_unregister_driver +EXPORT_SYMBOL_GPL sound/aoa/soundbus/snd-aoa-soundbus 0xd0a19b97 soundbus_add_one +EXPORT_SYMBOL_GPL sound/aoa/soundbus/snd-aoa-soundbus 0xe7f4fd54 soundbus_register_driver +EXPORT_SYMBOL_GPL sound/core/seq/snd-seq-device 0xd72e7579 __snd_seq_driver_register +EXPORT_SYMBOL_GPL sound/core/seq/snd-seq-device 0xe85be158 snd_seq_driver_unregister +EXPORT_SYMBOL_GPL sound/core/snd 0x18ec8674 snd_ctl_get_preferred_subdevice +EXPORT_SYMBOL_GPL sound/core/snd 0x19f03621 snd_device_initialize +EXPORT_SYMBOL_GPL sound/core/snd 0x569c761d snd_ctl_sync_vmaster +EXPORT_SYMBOL_GPL sound/core/snd 0x6cc59814 snd_card_add_dev_attr +EXPORT_SYMBOL_GPL sound/core/snd 0xacfdec71 snd_ctl_activate_id +EXPORT_SYMBOL_GPL sound/core/snd 0xd7b3e306 snd_ctl_add_vmaster_hook +EXPORT_SYMBOL_GPL sound/core/snd 0xd89acdb4 snd_device_disconnect +EXPORT_SYMBOL_GPL sound/core/snd-compress 0xb5d56857 snd_compress_register +EXPORT_SYMBOL_GPL sound/core/snd-compress 0xd5f692e5 snd_compress_new +EXPORT_SYMBOL_GPL sound/core/snd-compress 0xf76430f7 snd_compress_deregister +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 0x2b91ce65 snd_pcm_stream_unlock_irqrestore +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x3dddf309 snd_pcm_stream_unlock_irq +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x6de539d1 snd_pcm_stream_lock +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x6f6ff565 snd_pcm_stream_lock_irq +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 0xc5c60e77 snd_pcm_add_chmap_ctls +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0xdbd50ae5 snd_pcm_lib_default_mmap +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0xe07b28a0 _snd_pcm_stream_lock_irqsave +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0xf7bf828d snd_pcm_stop_xrun +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0xfc3a2e6a snd_pcm_stream_unlock +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x18fb8b7e snd_dmaengine_pcm_request_channel +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x21a428e6 snd_dmaengine_pcm_pointer +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x275189ab snd_dmaengine_pcm_close_release_chan +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x516f0cbf snd_dmaengine_pcm_open_request_chan +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x53abd726 snd_hwparams_to_dma_slave_config +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x60437a24 snd_dmaengine_pcm_pointer_no_residue +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x9b0dff32 snd_dmaengine_pcm_get_chan +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0xc8c9436f snd_dmaengine_pcm_open +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0xcb298599 snd_dmaengine_pcm_close +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0xd1d04255 snd_dmaengine_pcm_set_config_from_dai_data +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0xe745cafd snd_dmaengine_pcm_trigger +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x05fc2dd0 snd_hdac_stream_setup_periods +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x09d8f288 hdac_get_device_id +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x0b5b7627 snd_hdac_link_power +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x19b99fca snd_hdac_bus_init_chip +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x1b5f3e41 snd_hdac_regmap_write_raw +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x1dd7623a snd_hdac_exec_verb +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x2455fa43 snd_hdac_device_exit +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x247db41c snd_hdac_stream_sync_trigger +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x257974ef snd_hdac_device_register +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x2b8d407b snd_hdac_bus_add_device +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x2be22641 snd_hdac_get_connections +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x2db452d5 snd_hdac_bus_exec_verb +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x2e80fd1f snd_hdac_stream_stop +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x2f890232 snd_hdac_refresh_widgets +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x318e91b8 snd_hdac_stream_clear +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x37f44d47 snd_hdac_regmap_exit +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x3a1eb44d snd_hdac_bus_handle_stream_irq +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x3c9d1936 snd_hdac_stream_release +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x3dbbcff8 snd_hdac_bus_update_rirb +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x4158c262 snd_hdac_stream_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x44409345 snd_hdac_regmap_update_raw +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x4721e905 snd_hdac_dsp_prepare +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x47df67de snd_hdac_stream_assign +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x485d51fa snd_hdac_stream_setup +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x513f3898 snd_hdac_dsp_cleanup +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x56655660 snd_hdac_read_parm_uncached +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x5b05eb50 snd_hdac_regmap_read_raw +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x5b3921db snd_hdac_bus_get_response +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x5cfd3b6e snd_hdac_bus_stop_cmd_io +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x5e2592e0 snd_hdac_bus_queue_event +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x65860228 _snd_hdac_read_parm +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x744f392d snd_hdac_bus_exec_verb_unlocked +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x78bbcc67 snd_hda_bus_type +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x7b2157a3 snd_hdac_query_supported_pcm +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x820eef1a snd_hdac_bus_send_cmd +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x836c1e4c snd_hdac_regmap_add_vendor_verb +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x88618c97 snd_hdac_bus_exit +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x89974329 snd_hdac_power_up +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x8a7f6cd0 snd_hdac_bus_remove_device +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x8bc6599c snd_hdac_power_down_pm +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x8e205cb0 snd_hdac_power_down +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x8f174588 snd_hdac_bus_free_stream_pages +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x8f84dbd4 snd_hdac_bus_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x91f8e8c6 snd_hdac_device_unregister +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x940a5e4f snd_hdac_read +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x97b3b334 snd_hdac_stream_set_params +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x9a8e1877 snd_array_free +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x9c85e38e snd_hdac_bus_stop_chip +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x9fc88cc6 snd_hdac_bus_alloc_stream_pages +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xb20d80b9 snd_hdac_get_sub_nodes +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xb56e3c65 snd_hdac_stream_timecounter_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xb678b333 snd_hdac_stream_start +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xbe7dd7dc snd_array_new +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xc9ac2188 snd_hdac_bus_enter_link_reset +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xce959d6f snd_hdac_stream_cleanup +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xd23920f5 snd_hdac_override_parm +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xd73be903 snd_hdac_is_supported_format +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xdd9a804a snd_hdac_calc_stream_format +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xde55d48d snd_hdac_make_cmd +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xdf0f8939 snd_hdac_bus_exit_link_reset +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xdf9bc76e snd_hdac_device_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xe050a1ed snd_hdac_dsp_trigger +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xe140b17a snd_hdac_stream_reset +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xe15bf255 snd_hdac_power_up_pm +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xedd2554f snd_hdac_regmap_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xf55fe2c8 snd_hdac_stream_sync +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xf6b5a6fb snd_hdac_bus_init_cmd_io +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x028002d1 snd_ak4113_build +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x09f5f1bf snd_ak4113_external_rate +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x16e423dc snd_ak4113_create +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x3ade92e5 snd_ak4113_reinit +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0xc5b6ff90 snd_ak4113_check_rate_and_errors +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0xec9b0de3 snd_ak4113_reg_write +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x021d0739 snd_hda_codec_load_dsp_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x04e08fe6 snd_hda_input_mux_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x06315b4d snd_hda_ctl_add +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 0x08316dd9 snd_hda_sequence_write +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0ef655fe snd_hda_codec_new +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1176cfca snd_hda_spdif_ctls_unassign +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x16491b42 snd_hda_multi_out_analog_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x16dfa858 snd_hda_codec_set_pin_target +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x170ef5d9 snd_hda_get_conn_list +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1856ed93 snd_hda_get_conn_index +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1a4c4f45 azx_codec_configure +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1a93440a snd_hda_jack_report_sync +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1acd9749 snd_hda_correct_pin_ctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1cec9ab7 snd_hda_add_new_ctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1d8e0433 azx_init_streams +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1debbb67 snd_hda_mixer_amp_switch_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1e66345b snd_hda_codec_get_pin_target +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1e7f97ed hda_codec_driver_unregister +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1fd7d98d snd_hda_set_power_save +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x20465751 snd_hda_jack_tbl_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2116aec3 snd_hda_multi_out_dig_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2325bc34 snd_hda_add_vmaster_hook +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x27371552 snd_hda_detach_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x27be84aa snd_hda_codec_get_pincfg +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x28b10d70 snd_hda_mixer_amp_switch_put_beep +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x29562cb8 snd_hda_add_nid +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2b3511d3 snd_hda_codec_amp_stereo +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2dd809d0 snd_hda_mixer_bind_ctls_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2f363d77 snd_hda_attach_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2f9a80b5 snd_hda_jack_set_dirty_all +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x32d46964 snd_hda_mixer_amp_switch_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x37462c7a _snd_hda_set_pin_ctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x375cacd5 snd_hda_input_mux_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3823b730 snd_hda_jack_tbl_get_from_tag +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x38942ab1 snd_hda_codec_write +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x38ce402b azx_interrupt +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3b5583f5 snd_hda_multi_out_dig_open +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3c39bc03 query_amp_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3df98a6b hda_get_autocfg_input_label +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3fb62275 snd_hda_pick_fixup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x42a344a4 snd_hda_multi_out_dig_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x43b1781f snd_hda_mixer_amp_volume_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x44651d3b snd_hda_codec_set_power_to_all +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x45d7c72e is_jack_detectable +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4777484d snd_hda_get_int_hint +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x47962a6d snd_hda_add_verbs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4d051a76 snd_hda_mixer_amp_switch_get_beep +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x509c5448 snd_hda_find_mixer_ctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5915f14d snd_hda_codec_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x598e521d snd_hda_parse_pin_defcfg +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5dd5595f snd_hda_mixer_bind_switch_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5e884f77 snd_hda_jack_detect_enable +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6000c803 snd_hda_codec_amp_init_stereo +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6062b68f snd_hda_codec_update_widgets +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6256e886 snd_hda_enable_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x629aa1bd __hda_codec_driver_register +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x64022785 __snd_hda_add_vmaster +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x66adadf5 snd_hda_enum_helper_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6c8eaa1c snd_hda_mixer_amp_volume_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6dc4e62f snd_hda_override_conn_list +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6e172b95 snd_hda_jack_detect_state +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7163f720 snd_hda_get_hint +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x782f3577 snd_hda_jack_unsol_event +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7b1f6231 snd_hda_jack_add_kctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7df645ff snd_hda_codec_set_pincfg +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7eafddd8 snd_hda_apply_verbs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7ee0fa7a snd_hda_jack_set_gating_jack +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x805524eb azx_bus_init +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x81276e65 snd_hda_pin_sense +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x814fff81 snd_hda_get_bool_hint +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x849227ea snd_hda_codec_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8d536c79 snd_hda_mixer_bind_ctls_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x925f0ccd snd_hda_mixer_amp_switch_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x97d705a4 snd_hda_codec_load_dsp_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x99ece540 snd_hda_codec_amp_update +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9b163507 snd_hda_codec_setup_stream +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9b4b05df snd_hda_codec_pcm_new +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9bb41fee snd_hda_bind_sw +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9e53bdbf snd_hda_codec_amp_init +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa0f1b7dd snd_hda_mixer_amp_tlv +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa1a3210a snd_hda_add_imux_item +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa26cbe7a snd_hda_mixer_bind_ctls_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa2827d76 snd_hda_get_jack_location +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa559a284 snd_hda_jack_poll_all +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa60adf8b snd_hda_pick_pin_fixup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa82e3f54 snd_hda_unlock_devices +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa89b7120 snd_hda_jack_add_kctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa9288dba snd_hda_codec_read +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xacf71028 snd_hda_set_vmaster_tlv +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xad193376 azx_get_pos_lpib +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb7d6d9ef snd_hda_codec_load_dsp_trigger +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb7e0f53f azx_free_streams +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb8eee58c snd_hda_register_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb9b08e16 azx_stop_chip +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xbb8667b9 snd_hda_spdif_ctls_assign +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xbe3fcfe0 snd_hda_mixer_bind_tlv +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xbe7993a5 __snd_hda_codec_cleanup_stream +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xbfe62669 snd_hda_check_amp_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc0b492ef snd_hda_apply_fixup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc1442eea snd_hda_sync_vmaster_hook +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc2ebfed2 snd_hda_multi_out_dig_close +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc46e46e9 snd_hda_create_spdif_in_ctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc4fbc767 azx_init_chip +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc652fd69 snd_hda_get_jack_connectivity +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc6d607a4 azx_get_position +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc6eeaeda snd_hda_get_pin_label +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc9bb5a70 snd_hda_multi_out_analog_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xcb301b6e snd_hda_get_jack_type +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xcd792569 snd_hda_codec_eapd_power_filter +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xcf8a6e84 snd_hda_create_spdif_share_sw +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd53b7cab snd_hda_get_default_vref +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd762b6d6 snd_hda_bind_vol +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xdf5aa720 snd_hda_create_dig_out_ctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xdfc670b0 azx_stop_all_streams +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe118de5d snd_pcm_2_1_chmaps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe33a1db6 snd_hda_mixer_amp_volume_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe50e1966 snd_hda_shutup_pins +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe61ae699 snd_hda_override_amp_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe9b353f9 snd_hda_load_patch +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xeb8ee919 snd_hda_lock_devices +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xeda3a721 snd_print_pcm_bits +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xee2173ac snd_hda_jack_detect_enable_callback +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf52d34da snd_hda_apply_pincfgs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf6032064 snd_hda_multi_out_analog_open +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf6a081da snd_hda_spdif_out_of_nid +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf83d492a snd_hda_get_connections +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf8906047 snd_hda_check_amp_list_power +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf89ef20c snd_hda_codec_configure +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xfaf39ef8 snd_hda_codec_pcm_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xfc31b75a azx_get_pos_posbuf +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xfd55d3b4 azx_probe_codecs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xfd5e3cf6 snd_hda_mixer_bind_switch_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x0340738e snd_hda_get_path_idx +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x0e348a31 snd_hda_get_nid_path +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x10214f62 snd_hda_gen_build_controls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x1a1b8a8d snd_hda_gen_stream_pm +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x207d4b5e snd_hda_gen_free +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x23e4be9f snd_hda_gen_mic_autoswitch +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x36676758 snd_hda_gen_init +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x3a38a117 snd_hda_gen_hp_automute +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x3fba86bc snd_hda_gen_update_outputs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x4214bf6e snd_hda_get_path_from_idx +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x4f0cdb75 snd_hda_gen_add_kctl +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 0x76de53be snd_hda_gen_parse_auto_config +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 0x8af1c91e snd_hda_activate_path +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x9950a4e1 snd_hda_parse_nid_path +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x9e23c51e snd_hda_gen_fix_pin_power +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xa2f3ce70 snd_hda_add_new_path +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xa984e277 snd_hda_gen_path_power_filter +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xafd6362d snd_hda_gen_check_power_status +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xce367bd8 snd_hda_gen_line_automute +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xd5505450 snd_hda_gen_spec_init +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xf20cddee snd_hda_gen_build_pcms +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs4271 0x2e6384f1 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 0x7f3b17cd cs4271_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42l51 0x1e609b85 cs42l51_regmap +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42l51 0x375ad98c cs42l51_of_match +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42l51 0xcaff8ed8 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 0xb0b439c5 cs42xx8_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0xcd3794c9 cs42448_data +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0xd41eb91f cs42xx8_pm +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0xf688cc53 cs42xx8_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-es8328 0x68194fb7 es8328_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-es8328 0xfe10c5e3 es8328_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm512x 0x14e85b23 pcm512x_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm512x 0x56eac592 pcm512x_remove +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm512x 0xf48db8cf pcm512x_regmap +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm512x 0xf62128f6 pcm512x_pm_ops +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0x091f71cc sigmadsp_reset +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0x3960bcd3 devm_sigmadsp_init +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0x41d1a0ea sigmadsp_setup +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0xafb4d596 sigmadsp_restrict_params +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0xfce0d2be sigmadsp_attach +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp-i2c 0x6e49e66a devm_sigmadsp_init_i2c +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-ssm2602 0x8a4bf7b6 ssm2602_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-ssm2602 0x9eb8927a ssm2602_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-tpa6130a2 0xac6cfdda tpa6130a2_add_controls +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-tpa6130a2 0xbd70f68a tpa6130a2_stereo_enable +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-ts3a227e 0x81af169a ts3a227e_enable_jack_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8804 0x0f92dd0a wm8804_pm +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8804 0x26c70651 wm8804_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8804 0x461fef67 wm8804_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8804 0x75c57b03 wm8804_remove +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8903 0x3f940e6c wm8903_mic_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8962 0x35abea4f wm8962_mic_detect +EXPORT_SYMBOL_GPL sound/soc/fsl/snd-soc-fsl-asrc 0x2cadc25d fsl_asrc_get_dma_channel +EXPORT_SYMBOL_GPL sound/soc/fsl/snd-soc-fsl-asrc 0xff174938 fsl_asrc_platform +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/snd-soc-core 0x00a4775c snd_soc_component_write +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00d4f976 snd_soc_info_xr_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x045a109a snd_soc_jack_add_pins +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x04835e02 snd_soc_register_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x05a3450e snd_soc_jack_notifier_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x05af2d25 snd_soc_component_init_regmap +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x06237ae0 snd_soc_cnew +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x06e49e24 snd_soc_put_volsw_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0777a150 snd_soc_add_dai_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x07d80a60 snd_soc_register_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x08ed5340 snd_soc_dai_set_tristate +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x09b27829 dpcm_be_dai_trigger +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0cd0857e snd_soc_dpcm_be_can_update +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0d1f2ff0 snd_soc_unregister_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0da339aa snd_soc_jack_add_gpiods +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0dbdda04 snd_soc_bytes_info_ext +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x10638394 snd_soc_dapm_get_pin_switch +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x126adde3 snd_soc_dapm_enable_pin_unlocked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x159cadc1 snd_soc_dai_set_bclk_ratio +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x186c7176 snd_soc_dai_set_pll +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x198d3e22 snd_soc_dapm_get_pin_status +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1efb4999 snd_soc_dai_digital_mute +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x215664d6 snd_soc_pm_ops +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x24922cc2 snd_soc_dapm_get_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x24f5cd23 snd_soc_get_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2541a979 snd_soc_calc_frame_size +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x258874e3 snd_soc_platform_read +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x25eca626 snd_soc_dapm_force_enable_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x27884c73 snd_soc_dapm_put_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x28968dcb snd_soc_update_bits +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x28ed0ae8 snd_soc_jack_add_gpios +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2bf4ed8d snd_soc_unregister_card +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2d3ecd64 snd_soc_register_component +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2dc19062 snd_soc_test_bits +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2f5f5c09 snd_soc_dpcm_be_get_state +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2f6aa4dd snd_soc_dapm_add_routes +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2fd04dd4 snd_soc_get_xr_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x33d4d381 snd_dmaengine_pcm_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3470b108 snd_soc_dapm_new_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3507038e snd_soc_jack_report +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x386e49fd snd_soc_component_exit_regmap +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3933412d soc_ac97_ops +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3a409ac7 devm_snd_soc_register_card +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3bbc3e80 snd_dmaengine_pcm_prepare_slave_config +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3c7624db snd_soc_dai_set_fmt +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3c7e2056 snd_soc_dapm_put_pin_switch +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3f0e0005 snd_soc_unregister_component +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x416d8956 snd_soc_set_runtime_hwparams +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x44f5b647 snd_soc_jack_notifier_unregister +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x46000ebe snd_soc_dapm_new_widgets +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x46362a23 snd_soc_info_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x49bb4553 snd_soc_remove_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x49da841a snd_soc_bytes_get +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4bdc545b snd_soc_bytes_info +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4cd8513e snd_soc_component_read +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5286e083 snd_soc_info_volsw_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5310adf0 snd_soc_put_xr_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x53f2bbcc snd_soc_register_card +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x544e170b snd_soc_dapm_disable_pin_unlocked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5485c744 snd_soc_dapm_ignore_suspend +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x57f50d96 snd_soc_lookup_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x584c2688 snd_soc_info_volsw_range +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5a67493e snd_soc_bytes_put +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5c58851e snd_dmaengine_pcm_unregister +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5d98aec6 snd_soc_get_pcm_runtime +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x603a6732 snd_soc_unregister_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x61d8d59f snd_soc_dai_set_clkdiv +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x63cd8488 snd_soc_of_get_dai_link_codecs +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x64b750ed snd_soc_dapm_force_bias_level +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x65efcd4f snd_soc_get_volsw_range +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6df280ee snd_soc_get_dai_substream +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7419c2a2 dapm_kcontrol_get_value +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x74eaee8e snd_soc_dapm_weak_routes +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x77764157 snd_soc_codec_set_sysclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7a3b0496 snd_soc_runtime_set_dai_fmt +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7a687dcb snd_soc_dapm_info_pin_switch +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7b72bf6a snd_soc_card_get_kcontrol +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7cd12919 devm_snd_dmaengine_pcm_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7e606130 snd_soc_calc_bclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7edc0378 snd_soc_of_parse_daifmt +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8236fb35 devm_snd_soc_register_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x825b0c8c devm_snd_soc_register_component +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x846dc23c snd_soc_add_component_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x896f3e0e snd_soc_debugfs_root +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x89f9a61d snd_soc_dapm_del_routes +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8f4519cd snd_soc_dapm_free +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8f8e7fb7 snd_soc_jack_get_type +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x901361b1 snd_soc_dpcm_can_be_free_stop +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x92528141 snd_soc_platform_write +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x94145f40 snd_soc_suspend +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9539e8df snd_soc_component_update_bits_async +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x97eebd17 snd_soc_component_update_bits +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9a140efc snd_soc_of_parse_card_name +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9b0723cc snd_soc_component_test_bits +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9b16e17b snd_soc_jack_free_gpios +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9d826abd snd_soc_component_async_complete +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9d9264e2 snd_soc_dapm_disable_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa17277e6 snd_soc_set_ac97_ops +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa1afb46f snd_soc_of_parse_audio_simple_widgets +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa378e329 snd_soc_dpcm_get_substream +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa9fa2586 dapm_regulator_event +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xabaa7eae snd_soc_poweroff +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xabd9eb68 snd_soc_card_jack_new +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xac2fd447 snd_soc_dapm_get_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xad4dcfcb snd_soc_dpcm_can_be_params +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb3827936 snd_soc_of_get_dai_name +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb527513b snd_soc_jack_add_zones +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb555fb93 snd_soc_dapm_sync +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb6c3e266 snd_soc_dapm_enable_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb6fd6b74 snd_soc_info_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb7e3d920 snd_soc_free_ac97_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xbbba32ee snd_soc_put_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xbda8e54e snd_soc_put_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc0db371f snd_soc_dapm_mux_update_power +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc168056a snd_soc_get_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc26be6c0 snd_soc_put_strobe +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc2839118 snd_soc_dapm_nc_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc3283f6b snd_soc_dapm_force_enable_pin_unlocked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc51b8403 snd_soc_of_parse_audio_routing +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc8269f94 snd_soc_params_to_frame_size +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc90070e3 snd_soc_add_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xca00d120 snd_soc_limit_volume +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xca102412 snd_soc_dpcm_fe_can_update +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xcbc2d07a snd_soc_read +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xcf3a8623 snd_soc_dai_set_sysclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xcf4e1a88 dapm_clock_event +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd056d8c3 snd_soc_set_ac97_ops_of_reset +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd49f9b95 snd_soc_of_parse_tdm_slot +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd72b8e64 snd_soc_dapm_kcontrol_dapm +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd88387ea snd_soc_dpcm_be_set_state +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd91b72dc snd_soc_dapm_mixer_update_power +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd9696a78 snd_soc_dapm_put_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xdb4e201a snd_soc_write +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xdc6c6979 snd_soc_dapm_nc_pin_unlocked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xeb711ae7 snd_soc_params_to_bclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xeba143ce snd_soc_dai_set_tdm_slot +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xed0a9478 snd_soc_resume +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xed84b895 snd_soc_dapm_sync_unlocked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf0861557 dapm_mark_endpoints_dirty +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf0ec04aa snd_soc_add_codec_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf29b99a4 snd_soc_platform_trigger +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf2c7fd4f snd_soc_bytes_tlv_callback +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf627943e snd_soc_codec_set_pll +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf75971fc snd_soc_add_platform_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf8ecaebc snd_soc_dai_set_channel_map +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf910865d snd_soc_new_ac97_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xfaa03282 snd_soc_put_volsw_range +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xfb043e94 snd_soc_add_card_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xfcba4138 snd_soc_get_volsw_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xfe14c2f1 snd_soc_get_strobe +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x161891c7 line6_suspend +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x1b4f6828 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 0x268ea57f line6_alloc_sysex_buffer +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x2bf4da2e line6_disconnect +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x3f5a9e76 line6_write_data +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x51288cd8 line6_version_request_async +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x5781de82 line6_read_data +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x69616f45 line6_resume +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x8bd95381 line6_probe +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x8ec973cd line6_start_timer +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x8f62d3ab line6_send_raw_message_async +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xe6adee44 line6_send_sysex_message +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xe793ea7d line6_pcm_acquire +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xf7294475 line6_init_pcm +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xf9d73592 line6_init_midi +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xfb7c3045 line6_pcm_release +EXPORT_SYMBOL_GPL vmlinux 0x000a15d1 bus_unregister +EXPORT_SYMBOL_GPL vmlinux 0x000e244f serial8250_modem_status +EXPORT_SYMBOL_GPL vmlinux 0x001192e1 usb_find_alt_setting +EXPORT_SYMBOL_GPL vmlinux 0x0050d1b2 register_virtio_driver +EXPORT_SYMBOL_GPL vmlinux 0x0054d4ad regulator_disable_regmap +EXPORT_SYMBOL_GPL vmlinux 0x006129bc devm_regulator_bulk_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x00632780 work_busy +EXPORT_SYMBOL_GPL vmlinux 0x006820b4 pci_write_msi_msg +EXPORT_SYMBOL_GPL vmlinux 0x006bf940 wm8997_i2c_regmap +EXPORT_SYMBOL_GPL vmlinux 0x009304b6 ata_tf_from_fis +EXPORT_SYMBOL_GPL vmlinux 0x009b0244 usb_phy_generic_unregister +EXPORT_SYMBOL_GPL vmlinux 0x00b90bd2 spi_master_suspend +EXPORT_SYMBOL_GPL vmlinux 0x00ebcb5d ata_id_string +EXPORT_SYMBOL_GPL vmlinux 0x01010c6d klist_add_before +EXPORT_SYMBOL_GPL vmlinux 0x0104cdf7 arizona_pm_ops +EXPORT_SYMBOL_GPL vmlinux 0x0113622b ata_pci_remove_one +EXPORT_SYMBOL_GPL vmlinux 0x011cf028 regulator_suspend_finish +EXPORT_SYMBOL_GPL vmlinux 0x01400488 led_trigger_unregister +EXPORT_SYMBOL_GPL vmlinux 0x014e1325 generic_fh_to_dentry +EXPORT_SYMBOL_GPL vmlinux 0x014e9e00 __mnt_drop_write +EXPORT_SYMBOL_GPL vmlinux 0x0164658a ata_bmdma_start +EXPORT_SYMBOL_GPL vmlinux 0x0180c89d mbox_request_channel +EXPORT_SYMBOL_GPL vmlinux 0x0195fba9 btree_visitor +EXPORT_SYMBOL_GPL vmlinux 0x01abfbc1 user_read +EXPORT_SYMBOL_GPL vmlinux 0x01bbb7f2 gpiod_get_array +EXPORT_SYMBOL_GPL vmlinux 0x01e1a8de kgdb_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x0217534f dev_get_regmap +EXPORT_SYMBOL_GPL vmlinux 0x021ebfda btree_update +EXPORT_SYMBOL_GPL vmlinux 0x02872379 __tracepoint_suspend_resume +EXPORT_SYMBOL_GPL vmlinux 0x02a62076 usb_bus_list_lock +EXPORT_SYMBOL_GPL vmlinux 0x02abca6c subsys_virtual_register +EXPORT_SYMBOL_GPL vmlinux 0x02d99f6b ohci_suspend +EXPORT_SYMBOL_GPL vmlinux 0x02df0d4a __inet_twsk_hashdance +EXPORT_SYMBOL_GPL vmlinux 0x02fea2ae rcu_note_context_switch +EXPORT_SYMBOL_GPL vmlinux 0x0321cdbf of_alias_get_highest_id +EXPORT_SYMBOL_GPL vmlinux 0x0322cea8 wm831x_auxadc_read_uv +EXPORT_SYMBOL_GPL vmlinux 0x032b9875 regulator_disable +EXPORT_SYMBOL_GPL vmlinux 0x033832c7 usb_amd_hang_symptom_quirk +EXPORT_SYMBOL_GPL vmlinux 0x0343bdf1 __i2c_board_list +EXPORT_SYMBOL_GPL vmlinux 0x0354ddf5 ata_sff_qc_issue +EXPORT_SYMBOL_GPL vmlinux 0x0387b00f ata_link_online +EXPORT_SYMBOL_GPL vmlinux 0x039fd867 trace_clock_global +EXPORT_SYMBOL_GPL vmlinux 0x03a81190 perf_pmu_register +EXPORT_SYMBOL_GPL vmlinux 0x03e3686c ata_timing_cycle2mode +EXPORT_SYMBOL_GPL vmlinux 0x03f8776a rtc_irq_unregister +EXPORT_SYMBOL_GPL vmlinux 0x03fab6fa ipv4_redirect +EXPORT_SYMBOL_GPL vmlinux 0x04205055 regcache_cache_bypass +EXPORT_SYMBOL_GPL vmlinux 0x043c2227 tpm2_probe +EXPORT_SYMBOL_GPL vmlinux 0x0452f96f thermal_zone_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x04598f2e regmap_read +EXPORT_SYMBOL_GPL vmlinux 0x04609954 cpufreq_register_governor +EXPORT_SYMBOL_GPL vmlinux 0x0463c7d1 udp6_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x0465a073 regmap_reg_in_ranges +EXPORT_SYMBOL_GPL vmlinux 0x0468cffb dev_attr_link_power_management_policy +EXPORT_SYMBOL_GPL vmlinux 0x046a076e pwmchip_remove +EXPORT_SYMBOL_GPL vmlinux 0x0475efb6 simple_attr_read +EXPORT_SYMBOL_GPL vmlinux 0x048b5f8d twl4030_audio_get_mclk +EXPORT_SYMBOL_GPL vmlinux 0x04a772ea crypto_alg_mod_lookup +EXPORT_SYMBOL_GPL vmlinux 0x04b5549c __cookie_v6_check +EXPORT_SYMBOL_GPL vmlinux 0x04c4f603 mpi_get_buffer +EXPORT_SYMBOL_GPL vmlinux 0x04d98a64 sdio_writeb_readb +EXPORT_SYMBOL_GPL vmlinux 0x04ef3f84 spi_new_device +EXPORT_SYMBOL_GPL vmlinux 0x04f4bd8d percpu_ref_exit +EXPORT_SYMBOL_GPL vmlinux 0x0507eba6 ata_pci_device_resume +EXPORT_SYMBOL_GPL vmlinux 0x054e550b kernel_halt +EXPORT_SYMBOL_GPL vmlinux 0x058b582a vt_get_leds +EXPORT_SYMBOL_GPL vmlinux 0x05a778a8 wakeup_source_remove +EXPORT_SYMBOL_GPL vmlinux 0x05ae66f2 ata_pci_sff_init_host +EXPORT_SYMBOL_GPL vmlinux 0x05b49727 use_mm +EXPORT_SYMBOL_GPL vmlinux 0x05b4d61a gpiod_get_raw_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x05bad0e9 of_reset_control_get +EXPORT_SYMBOL_GPL vmlinux 0x05e7127b blk_mq_free_hctx_request +EXPORT_SYMBOL_GPL vmlinux 0x05e87a7c uart_set_options +EXPORT_SYMBOL_GPL vmlinux 0x060e09cb platform_add_devices +EXPORT_SYMBOL_GPL vmlinux 0x06139e86 pci_vfs_assigned +EXPORT_SYMBOL_GPL vmlinux 0x061dee59 btree_remove +EXPORT_SYMBOL_GPL vmlinux 0x06249a1e crypto_lookup_aead +EXPORT_SYMBOL_GPL vmlinux 0x06251b13 __blk_put_request +EXPORT_SYMBOL_GPL vmlinux 0x0626da5f od_unregister_powersave_bias_handler +EXPORT_SYMBOL_GPL vmlinux 0x063301c7 regmap_field_update_bits +EXPORT_SYMBOL_GPL vmlinux 0x063dcff9 component_add +EXPORT_SYMBOL_GPL vmlinux 0x064db9a5 mark_mounts_for_expiry +EXPORT_SYMBOL_GPL vmlinux 0x06578dba simple_attr_write +EXPORT_SYMBOL_GPL vmlinux 0x065abb8f attribute_container_classdev_to_container +EXPORT_SYMBOL_GPL vmlinux 0x067148de spi_alloc_device +EXPORT_SYMBOL_GPL vmlinux 0x06725444 reservation_object_wait_timeout_rcu +EXPORT_SYMBOL_GPL vmlinux 0x0675b903 ata_sff_prereset +EXPORT_SYMBOL_GPL vmlinux 0x067d4bb1 tty_ldisc_deref +EXPORT_SYMBOL_GPL vmlinux 0x068378d4 blkcg_deactivate_policy +EXPORT_SYMBOL_GPL vmlinux 0x068b6fec ip6_route_lookup +EXPORT_SYMBOL_GPL vmlinux 0x069aa1c9 __crypto_alloc_tfm +EXPORT_SYMBOL_GPL vmlinux 0x06a96cd3 led_trigger_show +EXPORT_SYMBOL_GPL vmlinux 0x06c58232 ata_pci_device_suspend +EXPORT_SYMBOL_GPL vmlinux 0x06d85b58 spi_busnum_to_master +EXPORT_SYMBOL_GPL vmlinux 0x06d9013b blk_mq_freeze_queue_start +EXPORT_SYMBOL_GPL vmlinux 0x06f2e54a sata_pmp_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x0739f429 x509_check_signature +EXPORT_SYMBOL_GPL vmlinux 0x07456e36 blocking_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0x0762403c edac_put_sysfs_subsys +EXPORT_SYMBOL_GPL vmlinux 0x07886d61 kick_process +EXPORT_SYMBOL_GPL vmlinux 0x07b21f85 kdb_get_kbd_char +EXPORT_SYMBOL_GPL vmlinux 0x07b52e38 rtnl_unregister +EXPORT_SYMBOL_GPL vmlinux 0x07c18a40 regulator_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x07dbbf4f pm_generic_runtime_resume +EXPORT_SYMBOL_GPL vmlinux 0x07f260ad pci_bus_resource_n +EXPORT_SYMBOL_GPL vmlinux 0x08156773 name_to_dev_t +EXPORT_SYMBOL_GPL vmlinux 0x08183d8b cpufreq_frequency_table_target +EXPORT_SYMBOL_GPL vmlinux 0x0828c144 regulator_list_voltage_linear +EXPORT_SYMBOL_GPL vmlinux 0x083069d0 virtqueue_kick +EXPORT_SYMBOL_GPL vmlinux 0x08395878 tcp_peer_is_proven +EXPORT_SYMBOL_GPL vmlinux 0x08542072 pm_schedule_suspend +EXPORT_SYMBOL_GPL vmlinux 0x0865cd42 register_trace_event +EXPORT_SYMBOL_GPL vmlinux 0x08747d4b da9052_adc_manual_read +EXPORT_SYMBOL_GPL vmlinux 0x08924b1f phy_power_off +EXPORT_SYMBOL_GPL vmlinux 0x08b37244 da903x_writes +EXPORT_SYMBOL_GPL vmlinux 0x08bfd552 ping_proc_unregister +EXPORT_SYMBOL_GPL vmlinux 0x08e68fd8 dm_send_uevents +EXPORT_SYMBOL_GPL vmlinux 0x08ec5ea3 dm_disk +EXPORT_SYMBOL_GPL vmlinux 0x08f093d3 sock_update_netprioidx +EXPORT_SYMBOL_GPL vmlinux 0x091c824a machine_power_off +EXPORT_SYMBOL_GPL vmlinux 0x091eb9b4 round_jiffies +EXPORT_SYMBOL_GPL vmlinux 0x092bf3fd __mmu_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x093802be fwnode_property_read_u16_array +EXPORT_SYMBOL_GPL vmlinux 0x093ae808 input_ff_event +EXPORT_SYMBOL_GPL vmlinux 0x0941026d sysfs_add_file_to_group +EXPORT_SYMBOL_GPL vmlinux 0x09437748 ring_buffer_read_events_cpu +EXPORT_SYMBOL_GPL vmlinux 0x09469482 kfree_call_rcu +EXPORT_SYMBOL_GPL vmlinux 0x0952af60 fb_videomode_from_videomode +EXPORT_SYMBOL_GPL vmlinux 0x09aeb6e7 regmap_raw_write +EXPORT_SYMBOL_GPL vmlinux 0x09bec8d7 pmac_i2c_get_dev_addr +EXPORT_SYMBOL_GPL vmlinux 0x09c16b02 nf_ipv6_ops +EXPORT_SYMBOL_GPL vmlinux 0x09d0b4c9 usb_hcd_giveback_urb +EXPORT_SYMBOL_GPL vmlinux 0x09d866ca cpu_add_dev_attr_group +EXPORT_SYMBOL_GPL vmlinux 0x09e54490 xfrm_audit_state_add +EXPORT_SYMBOL_GPL vmlinux 0x09e9e78b uhci_check_and_reset_hc +EXPORT_SYMBOL_GPL vmlinux 0x09f5c5c4 regulator_register +EXPORT_SYMBOL_GPL vmlinux 0x0a09ecef of_usb_get_phy_mode +EXPORT_SYMBOL_GPL vmlinux 0x0a2a2588 hwmon_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x0a2f2508 wm8350_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x0a3df2a0 debugfs_create_blob +EXPORT_SYMBOL_GPL vmlinux 0x0a51ae5b virq_to_hw +EXPORT_SYMBOL_GPL vmlinux 0x0a51e40b dma_buf_map_attachment +EXPORT_SYMBOL_GPL vmlinux 0x0a8296c3 xfrm_output_resume +EXPORT_SYMBOL_GPL vmlinux 0x0a8dfbe2 anon_transport_class_unregister +EXPORT_SYMBOL_GPL vmlinux 0x0ac988b8 usb_find_interface +EXPORT_SYMBOL_GPL vmlinux 0x0af5dea4 pci_probe_reset_slot +EXPORT_SYMBOL_GPL vmlinux 0x0afd4610 zs_malloc +EXPORT_SYMBOL_GPL vmlinux 0x0b068110 wm831x_reg_unlock +EXPORT_SYMBOL_GPL vmlinux 0x0b07abe2 unshare_fs_struct +EXPORT_SYMBOL_GPL vmlinux 0x0b278698 usb_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0x0b2cd90c ata_bmdma_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0x0b46b0b7 pwm_request_from_chip +EXPORT_SYMBOL_GPL vmlinux 0x0b59390b __tracepoint_rpm_suspend +EXPORT_SYMBOL_GPL vmlinux 0x0b5a55a3 dio_end_io +EXPORT_SYMBOL_GPL vmlinux 0x0b72bce7 i2c_unlock_adapter +EXPORT_SYMBOL_GPL vmlinux 0x0bcbf470 class_find_device +EXPORT_SYMBOL_GPL vmlinux 0x0bf11c15 fat_add_entries +EXPORT_SYMBOL_GPL vmlinux 0x0bfa3a19 rcu_idle_exit +EXPORT_SYMBOL_GPL vmlinux 0x0c01d30d md_allow_write +EXPORT_SYMBOL_GPL vmlinux 0x0c0c015e ring_buffer_swap_cpu +EXPORT_SYMBOL_GPL vmlinux 0x0c24d388 dev_pm_disable_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0x0c28795b spi_setup +EXPORT_SYMBOL_GPL vmlinux 0x0c2cdbf1 synchronize_sched +EXPORT_SYMBOL_GPL vmlinux 0x0c80b534 bio_clone_mddev +EXPORT_SYMBOL_GPL vmlinux 0x0c959fbc stmpe_block_write +EXPORT_SYMBOL_GPL vmlinux 0x0cbbce25 debugfs_remove_recursive +EXPORT_SYMBOL_GPL vmlinux 0x0cc1e40f crypto_it_tab +EXPORT_SYMBOL_GPL vmlinux 0x0cdaa026 pci_probe_reset_bus +EXPORT_SYMBOL_GPL vmlinux 0x0d078826 ata_scsi_slave_destroy +EXPORT_SYMBOL_GPL vmlinux 0x0d091279 pci_rescan_bus +EXPORT_SYMBOL_GPL vmlinux 0x0d0ae0bc pci_user_write_config_dword +EXPORT_SYMBOL_GPL vmlinux 0x0d13c253 ata_eh_analyze_ncq_error +EXPORT_SYMBOL_GPL vmlinux 0x0d2cd8e7 virtqueue_detach_unused_buf +EXPORT_SYMBOL_GPL vmlinux 0x0d4961de nf_log_buf_open +EXPORT_SYMBOL_GPL vmlinux 0x0d54ca49 wm831x_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x0d57200a tasklet_hrtimer_init +EXPORT_SYMBOL_GPL vmlinux 0x0d71f91d cpufreq_frequency_table_verify +EXPORT_SYMBOL_GPL vmlinux 0x0d73a952 GregorianDay +EXPORT_SYMBOL_GPL vmlinux 0x0d776faa da9052_adc_read_temp +EXPORT_SYMBOL_GPL vmlinux 0x0d7d4d70 rcu_batches_completed +EXPORT_SYMBOL_GPL vmlinux 0x0d82364e sdio_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x0d8fc2df pmf_register_irq_client +EXPORT_SYMBOL_GPL vmlinux 0x0da3fe20 inet_csk_listen_stop +EXPORT_SYMBOL_GPL vmlinux 0x0ddb1cd7 llist_reverse_order +EXPORT_SYMBOL_GPL vmlinux 0x0de06988 cpu_first_thread_of_core +EXPORT_SYMBOL_GPL vmlinux 0x0e2d8796 of_irq_parse_raw +EXPORT_SYMBOL_GPL vmlinux 0x0e5f68aa devm_of_pwm_get +EXPORT_SYMBOL_GPL vmlinux 0x0e6a887b sdio_claim_host +EXPORT_SYMBOL_GPL vmlinux 0x0eb2c694 ata_sff_dev_select +EXPORT_SYMBOL_GPL vmlinux 0x0ed81067 __mmdrop +EXPORT_SYMBOL_GPL vmlinux 0x0ee81431 of_pci_find_msi_chip_by_node +EXPORT_SYMBOL_GPL vmlinux 0x0ef89e15 usb_alloc_dev +EXPORT_SYMBOL_GPL vmlinux 0x0efde62a bitmap_load +EXPORT_SYMBOL_GPL vmlinux 0x0effee5c irq_get_domain_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x0f1e965f ping_seq_start +EXPORT_SYMBOL_GPL vmlinux 0x0f336d7f rcutorture_get_gp_data +EXPORT_SYMBOL_GPL vmlinux 0x0f456751 extcon_dev_register +EXPORT_SYMBOL_GPL vmlinux 0x0f5fa0d6 wait_for_stable_page +EXPORT_SYMBOL_GPL vmlinux 0x0f61c6a7 mpc8xxx_spi_tx_buf_u32 +EXPORT_SYMBOL_GPL vmlinux 0x0f66f638 spi_bus_unlock +EXPORT_SYMBOL_GPL vmlinux 0x0f751aea input_event_from_user +EXPORT_SYMBOL_GPL vmlinux 0x0f7c700b devm_pwm_get +EXPORT_SYMBOL_GPL vmlinux 0x0f7ce362 ata_cable_80wire +EXPORT_SYMBOL_GPL vmlinux 0x0f82e4ca unregister_net_sysctl_table +EXPORT_SYMBOL_GPL vmlinux 0x0f8d808c ata_sff_lost_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x0f937b2f usb_get_descriptor +EXPORT_SYMBOL_GPL vmlinux 0x0f99c41e md_kick_rdev_from_array +EXPORT_SYMBOL_GPL vmlinux 0x0fc01e9f static_key_slow_inc +EXPORT_SYMBOL_GPL vmlinux 0x0fd8a764 __trace_note_message +EXPORT_SYMBOL_GPL vmlinux 0x0fe30c82 of_get_phy_mode +EXPORT_SYMBOL_GPL vmlinux 0x0ff80601 vring_transport_features +EXPORT_SYMBOL_GPL vmlinux 0x0ff8f5a2 of_regulator_match +EXPORT_SYMBOL_GPL vmlinux 0x10138352 tracing_on +EXPORT_SYMBOL_GPL vmlinux 0x104b2aa0 irq_alloc_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x106d181f usb_sg_cancel +EXPORT_SYMBOL_GPL vmlinux 0x107c656d dev_forward_skb +EXPORT_SYMBOL_GPL vmlinux 0x10bdb100 rio_mport_get_feature +EXPORT_SYMBOL_GPL vmlinux 0x10dd5199 hrtimer_forward +EXPORT_SYMBOL_GPL vmlinux 0x10df3da9 xfrm_audit_state_notfound +EXPORT_SYMBOL_GPL vmlinux 0x10ecc52c usb_amd_quirk_pll_enable +EXPORT_SYMBOL_GPL vmlinux 0x10f6f043 devm_regulator_get_exclusive +EXPORT_SYMBOL_GPL vmlinux 0x10fe0fd8 ping_common_sendmsg +EXPORT_SYMBOL_GPL vmlinux 0x1114011d threads_shift +EXPORT_SYMBOL_GPL vmlinux 0x114c966d devm_extcon_dev_register +EXPORT_SYMBOL_GPL vmlinux 0x116b415c __netpoll_cleanup +EXPORT_SYMBOL_GPL vmlinux 0x1172ce54 rtc_ktime_to_tm +EXPORT_SYMBOL_GPL vmlinux 0x118e2e2d extcon_get_extcon_dev +EXPORT_SYMBOL_GPL vmlinux 0x118f66dd sprint_OID +EXPORT_SYMBOL_GPL vmlinux 0x11982b7b xhci_suspend +EXPORT_SYMBOL_GPL vmlinux 0x11a43e7c sysfs_create_group +EXPORT_SYMBOL_GPL vmlinux 0x11be4ad3 trace_buffer_unlock_commit_regs +EXPORT_SYMBOL_GPL vmlinux 0x11bfbd00 max8997_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0x11d7589e add_hwgenerator_randomness +EXPORT_SYMBOL_GPL vmlinux 0x11dd4409 usb_get_current_frame_number +EXPORT_SYMBOL_GPL vmlinux 0x121d958a unregister_die_notifier +EXPORT_SYMBOL_GPL vmlinux 0x12286e33 led_classdev_suspend +EXPORT_SYMBOL_GPL vmlinux 0x122ad360 uart_handle_dcd_change +EXPORT_SYMBOL_GPL vmlinux 0x124f2056 crypto_get_attr_type +EXPORT_SYMBOL_GPL vmlinux 0x1256b9c6 crypto_aes_set_key +EXPORT_SYMBOL_GPL vmlinux 0x12628a20 devm_power_supply_get_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0x1264872a crypto_blkcipher_type +EXPORT_SYMBOL_GPL vmlinux 0x1268f357 resume_device_irqs +EXPORT_SYMBOL_GPL vmlinux 0x127bc65d task_cls_state +EXPORT_SYMBOL_GPL vmlinux 0x12ae5ee7 find_vpid +EXPORT_SYMBOL_GPL vmlinux 0x12b5193c fwnode_handle_put +EXPORT_SYMBOL_GPL vmlinux 0x12d28df5 __inet_hash_nolisten +EXPORT_SYMBOL_GPL vmlinux 0x12db9f85 ata_sff_wait_after_reset +EXPORT_SYMBOL_GPL vmlinux 0x131a5ed7 regmap_del_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0x131db64a system_long_wq +EXPORT_SYMBOL_GPL vmlinux 0x1323c41a tpm_chip_unregister +EXPORT_SYMBOL_GPL vmlinux 0x13354608 scatterwalk_map_and_copy +EXPORT_SYMBOL_GPL vmlinux 0x1351bc4e tcp_ca_openreq_child +EXPORT_SYMBOL_GPL vmlinux 0x136209db power_supply_reg_notifier +EXPORT_SYMBOL_GPL vmlinux 0x136a4ee6 btree_init +EXPORT_SYMBOL_GPL vmlinux 0x13797473 palmas_ext_control_req_config +EXPORT_SYMBOL_GPL vmlinux 0x137ea33c inet_csk_addr2sockaddr +EXPORT_SYMBOL_GPL vmlinux 0x13836c60 transport_setup_device +EXPORT_SYMBOL_GPL vmlinux 0x1391f7a6 __page_file_mapping +EXPORT_SYMBOL_GPL vmlinux 0x13a52375 tps6586x_read +EXPORT_SYMBOL_GPL vmlinux 0x13d81bf2 irq_generic_chip_ops +EXPORT_SYMBOL_GPL vmlinux 0x13e5ea13 __wake_up_sync +EXPORT_SYMBOL_GPL vmlinux 0x1428eff4 mddev_init +EXPORT_SYMBOL_GPL vmlinux 0x1447d9ab transport_class_register +EXPORT_SYMBOL_GPL vmlinux 0x146554cd get_task_mm +EXPORT_SYMBOL_GPL vmlinux 0x148ce8e2 security_inode_mkdir +EXPORT_SYMBOL_GPL vmlinux 0x149f2bef of_property_read_u16_array +EXPORT_SYMBOL_GPL vmlinux 0x14a0e3c3 ahash_free_instance +EXPORT_SYMBOL_GPL vmlinux 0x14a5ac15 devm_regulator_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x14edfb64 pm_runtime_no_callbacks +EXPORT_SYMBOL_GPL vmlinux 0x151aa88e devm_phy_put +EXPORT_SYMBOL_GPL vmlinux 0x151c24e8 ata_bmdma_setup +EXPORT_SYMBOL_GPL vmlinux 0x1523903b bus_sort_breadthfirst +EXPORT_SYMBOL_GPL vmlinux 0x1535bb4f dma_buf_detach +EXPORT_SYMBOL_GPL vmlinux 0x1544264c ata_dev_disable +EXPORT_SYMBOL_GPL vmlinux 0x154fc009 rio_request_inb_dbell +EXPORT_SYMBOL_GPL vmlinux 0x155f688c da903x_write +EXPORT_SYMBOL_GPL vmlinux 0x157fd18f dev_pm_domain_detach +EXPORT_SYMBOL_GPL vmlinux 0x15892417 async_synchronize_cookie +EXPORT_SYMBOL_GPL vmlinux 0x15ba27a8 firmware_kobj +EXPORT_SYMBOL_GPL vmlinux 0x15c21e5e nl_table_lock +EXPORT_SYMBOL_GPL vmlinux 0x15efd446 rcu_batches_started +EXPORT_SYMBOL_GPL vmlinux 0x16000a3c dm_device_name +EXPORT_SYMBOL_GPL vmlinux 0x16072e22 dma_buf_vunmap +EXPORT_SYMBOL_GPL vmlinux 0x1627f0c5 bdev_direct_access +EXPORT_SYMBOL_GPL vmlinux 0x1631a788 wm831x_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x16375001 regmap_init_spi +EXPORT_SYMBOL_GPL vmlinux 0x1643194c devres_close_group +EXPORT_SYMBOL_GPL vmlinux 0x164bb278 xfrm_audit_policy_add +EXPORT_SYMBOL_GPL vmlinux 0x1650bf27 rcutorture_record_progress +EXPORT_SYMBOL_GPL vmlinux 0x1653b125 rio_mport_class +EXPORT_SYMBOL_GPL vmlinux 0x1653fd8c phy_pm_runtime_get_sync +EXPORT_SYMBOL_GPL vmlinux 0x165bb121 phy_pm_runtime_get +EXPORT_SYMBOL_GPL vmlinux 0x166a5b5f component_unbind_all +EXPORT_SYMBOL_GPL vmlinux 0x16a1001c blk_mq_cancel_requeue_work +EXPORT_SYMBOL_GPL vmlinux 0x16b07290 blkg_stat_recursive_sum +EXPORT_SYMBOL_GPL vmlinux 0x16d0e7de sk_set_memalloc +EXPORT_SYMBOL_GPL vmlinux 0x16e31d5b dm_get_rq_mapinfo +EXPORT_SYMBOL_GPL vmlinux 0x16f5ed89 trace_define_field +EXPORT_SYMBOL_GPL vmlinux 0x171071f2 of_overlay_create +EXPORT_SYMBOL_GPL vmlinux 0x17413fe3 ata_dummy_port_info +EXPORT_SYMBOL_GPL vmlinux 0x17488f14 rt_mutex_lock +EXPORT_SYMBOL_GPL vmlinux 0x1753a32f hash_digest_size +EXPORT_SYMBOL_GPL vmlinux 0x177c338d twl_get_version +EXPORT_SYMBOL_GPL vmlinux 0x17a74102 __ip_route_output_key +EXPORT_SYMBOL_GPL vmlinux 0x17de3750 pwm_enable +EXPORT_SYMBOL_GPL vmlinux 0x17e2ac3c __ata_ehi_push_desc +EXPORT_SYMBOL_GPL vmlinux 0x17f780e5 console_drivers +EXPORT_SYMBOL_GPL vmlinux 0x17fb772c isa_bridge_pcidev +EXPORT_SYMBOL_GPL vmlinux 0x181fb710 bsg_setup_queue +EXPORT_SYMBOL_GPL vmlinux 0x18217ccd crypto_register_alg +EXPORT_SYMBOL_GPL vmlinux 0x1853653c btree_alloc +EXPORT_SYMBOL_GPL vmlinux 0x18555847 devm_of_phy_provider_unregister +EXPORT_SYMBOL_GPL vmlinux 0x18570516 pmac_i2c_xfer +EXPORT_SYMBOL_GPL vmlinux 0x1866cec2 ring_buffer_size +EXPORT_SYMBOL_GPL vmlinux 0x1878f62b edac_err_assert +EXPORT_SYMBOL_GPL vmlinux 0x18b60456 devfreq_event_get_edev_count +EXPORT_SYMBOL_GPL vmlinux 0x18cf0272 pingv6_ops +EXPORT_SYMBOL_GPL vmlinux 0x1902dfa7 synchronize_srcu +EXPORT_SYMBOL_GPL vmlinux 0x193d48e0 trace_current_buffer_unlock_commit +EXPORT_SYMBOL_GPL vmlinux 0x1943353a regmap_update_bits +EXPORT_SYMBOL_GPL vmlinux 0x194dd5f5 pkey_algo_name +EXPORT_SYMBOL_GPL vmlinux 0x1977beb6 gpiod_set_array_value +EXPORT_SYMBOL_GPL vmlinux 0x1988edc3 __gpiod_get_optional +EXPORT_SYMBOL_GPL vmlinux 0x1990f8ff pm_qos_update_request +EXPORT_SYMBOL_GPL vmlinux 0x1993b921 led_trigger_event +EXPORT_SYMBOL_GPL vmlinux 0x19a304ba usb_disabled +EXPORT_SYMBOL_GPL vmlinux 0x19b384a5 hash_algo_name +EXPORT_SYMBOL_GPL vmlinux 0x19c1081e cpuidle_get_cpu_driver +EXPORT_SYMBOL_GPL vmlinux 0x19c2b889 of_get_regulator_init_data +EXPORT_SYMBOL_GPL vmlinux 0x19d282f7 kthread_unpark +EXPORT_SYMBOL_GPL vmlinux 0x19d8dfec pci_enable_rom +EXPORT_SYMBOL_GPL vmlinux 0x1a1c4082 mod_delayed_work_on +EXPORT_SYMBOL_GPL vmlinux 0x1a8c5907 btree_insert +EXPORT_SYMBOL_GPL vmlinux 0x1a967885 cpufreq_frequency_get_table +EXPORT_SYMBOL_GPL vmlinux 0x1a9ac345 serial8250_rx_chars +EXPORT_SYMBOL_GPL vmlinux 0x1aab2480 usb_unlink_urb +EXPORT_SYMBOL_GPL vmlinux 0x1ab4a22e cpufreq_generic_frequency_table_verify +EXPORT_SYMBOL_GPL vmlinux 0x1ac7d44f ata_cable_unknown +EXPORT_SYMBOL_GPL vmlinux 0x1ac8ff69 irq_domain_add_legacy +EXPORT_SYMBOL_GPL vmlinux 0x1acef7d2 pm_freezing +EXPORT_SYMBOL_GPL vmlinux 0x1ad04b6a usb_hcd_check_unlink_urb +EXPORT_SYMBOL_GPL vmlinux 0x1ad45414 usb_hcd_poll_rh_status +EXPORT_SYMBOL_GPL vmlinux 0x1b09fa29 dev_pm_enable_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0x1b204e74 debugfs_create_file +EXPORT_SYMBOL_GPL vmlinux 0x1b224dde napi_hash_add +EXPORT_SYMBOL_GPL vmlinux 0x1b327443 smpboot_update_cpumask_percpu_thread +EXPORT_SYMBOL_GPL vmlinux 0x1b40ead9 alloc_page_buffers +EXPORT_SYMBOL_GPL vmlinux 0x1b52db1c probe_kernel_read +EXPORT_SYMBOL_GPL vmlinux 0x1b7beb8c raw_seq_start +EXPORT_SYMBOL_GPL vmlinux 0x1b83aaf4 sdio_enable_func +EXPORT_SYMBOL_GPL vmlinux 0x1b84944f macio_find +EXPORT_SYMBOL_GPL vmlinux 0x1b8d5d82 of_resolve_phandles +EXPORT_SYMBOL_GPL vmlinux 0x1b8dacad of_irq_parse_and_map_pci +EXPORT_SYMBOL_GPL vmlinux 0x1b90bd4b pm_generic_resume_noirq +EXPORT_SYMBOL_GPL vmlinux 0x1b9aca3f jprobe_return +EXPORT_SYMBOL_GPL vmlinux 0x1b9df0a6 __clocksource_update_freq_scale +EXPORT_SYMBOL_GPL vmlinux 0x1bba22cd usb_kill_urb +EXPORT_SYMBOL_GPL vmlinux 0x1bbdcff8 regmap_parse_val +EXPORT_SYMBOL_GPL vmlinux 0x1bcdd589 pci_enable_pri +EXPORT_SYMBOL_GPL vmlinux 0x1bd48146 scsi_schedule_eh +EXPORT_SYMBOL_GPL vmlinux 0x1bd5f9c5 regulator_get_voltage_sel_regmap +EXPORT_SYMBOL_GPL vmlinux 0x1be0d938 dma_buf_kunmap_atomic +EXPORT_SYMBOL_GPL vmlinux 0x1bebe901 sysfs_create_file_ns +EXPORT_SYMBOL_GPL vmlinux 0x1bf84095 init_user_ns +EXPORT_SYMBOL_GPL vmlinux 0x1c109ae4 irq_remove_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x1c31454e get_task_pid +EXPORT_SYMBOL_GPL vmlinux 0x1c316b86 usb_poison_urb +EXPORT_SYMBOL_GPL vmlinux 0x1c37b7b9 regulator_set_bypass_regmap +EXPORT_SYMBOL_GPL vmlinux 0x1c3b15c3 wm8350_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x1c476f59 sk_clear_memalloc +EXPORT_SYMBOL_GPL vmlinux 0x1c5541bd cpufreq_boost_enabled +EXPORT_SYMBOL_GPL vmlinux 0x1c566469 list_lru_walk_one +EXPORT_SYMBOL_GPL vmlinux 0x1c57aa87 usb_driver_release_interface +EXPORT_SYMBOL_GPL vmlinux 0x1c5b1f28 irq_free_descs +EXPORT_SYMBOL_GPL vmlinux 0x1c68167a wm831x_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0x1c7088e9 class_interface_unregister +EXPORT_SYMBOL_GPL vmlinux 0x1c7a198c crypto_unregister_algs +EXPORT_SYMBOL_GPL vmlinux 0x1c7d0456 ata_std_postreset +EXPORT_SYMBOL_GPL vmlinux 0x1c8034db sysfs_chmod_file +EXPORT_SYMBOL_GPL vmlinux 0x1c80d27d btree_geo128 +EXPORT_SYMBOL_GPL vmlinux 0x1c87a811 __round_jiffies_up +EXPORT_SYMBOL_GPL vmlinux 0x1ca6f638 devm_extcon_dev_free +EXPORT_SYMBOL_GPL vmlinux 0x1ce0b4a0 bio_trim +EXPORT_SYMBOL_GPL vmlinux 0x1cf82066 tcp_orphan_count +EXPORT_SYMBOL_GPL vmlinux 0x1cffb1f4 ipv6_recv_error +EXPORT_SYMBOL_GPL vmlinux 0x1d3b5d05 inet6_sk_rebuild_header +EXPORT_SYMBOL_GPL vmlinux 0x1d58ae14 lpddr2_jedec_timings +EXPORT_SYMBOL_GPL vmlinux 0x1d5b0c15 power_supply_powers +EXPORT_SYMBOL_GPL vmlinux 0x1d734e5f pci_hp_create_module_link +EXPORT_SYMBOL_GPL vmlinux 0x1d74c0d3 syscon_regmap_lookup_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0x1d77b0f8 unix_socket_table +EXPORT_SYMBOL_GPL vmlinux 0x1d7c0168 __ftrace_vprintk +EXPORT_SYMBOL_GPL vmlinux 0x1d83e1e4 ata_scsi_slave_config +EXPORT_SYMBOL_GPL vmlinux 0x1d8ce537 netdev_rx_handler_unregister +EXPORT_SYMBOL_GPL vmlinux 0x1d9b34c4 usb_get_dev +EXPORT_SYMBOL_GPL vmlinux 0x1d9cedb5 usb_enable_ltm +EXPORT_SYMBOL_GPL vmlinux 0x1daa296e __skb_tstamp_tx +EXPORT_SYMBOL_GPL vmlinux 0x1db108ec usb_phy_set_event +EXPORT_SYMBOL_GPL vmlinux 0x1db152f3 rio_dma_prep_slave_sg +EXPORT_SYMBOL_GPL vmlinux 0x1dd8f833 clockevents_register_device +EXPORT_SYMBOL_GPL vmlinux 0x1dea6dec i2c_new_device +EXPORT_SYMBOL_GPL vmlinux 0x1dfbcf4c mpic_msgr_disable +EXPORT_SYMBOL_GPL vmlinux 0x1e1164a2 pcie_update_link_speed +EXPORT_SYMBOL_GPL vmlinux 0x1e24b21e of_property_match_string +EXPORT_SYMBOL_GPL vmlinux 0x1e52551e rhashtable_insert_slow +EXPORT_SYMBOL_GPL vmlinux 0x1e5b03dc pm_qos_add_notifier +EXPORT_SYMBOL_GPL vmlinux 0x1e67f935 ata_sas_port_suspend +EXPORT_SYMBOL_GPL vmlinux 0x1e7bbcb3 kernel_restart +EXPORT_SYMBOL_GPL vmlinux 0x1ea0a707 fat_time_unix2fat +EXPORT_SYMBOL_GPL vmlinux 0x1eb9516e round_jiffies_relative +EXPORT_SYMBOL_GPL vmlinux 0x1ebf6c2a pci_power_names +EXPORT_SYMBOL_GPL vmlinux 0x1ed3a9b5 crypto_alloc_aead +EXPORT_SYMBOL_GPL vmlinux 0x1ee42e21 sata_std_hardreset +EXPORT_SYMBOL_GPL vmlinux 0x1eee7df6 ata_bmdma_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x1efdbb45 adp5520_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x1f37d092 dma_buf_unmap_attachment +EXPORT_SYMBOL_GPL vmlinux 0x1f8544b8 panic_timeout +EXPORT_SYMBOL_GPL vmlinux 0x1f8db7f9 ring_buffer_overrun_cpu +EXPORT_SYMBOL_GPL vmlinux 0x1f948011 relay_close +EXPORT_SYMBOL_GPL vmlinux 0x201d018f debugfs_rename +EXPORT_SYMBOL_GPL vmlinux 0x201f834c usb_wakeup_notification +EXPORT_SYMBOL_GPL vmlinux 0x2049bab8 __destroy_context +EXPORT_SYMBOL_GPL vmlinux 0x20797604 param_set_bool_enable_only +EXPORT_SYMBOL_GPL vmlinux 0x208d854c devm_regmap_field_alloc +EXPORT_SYMBOL_GPL vmlinux 0x20aa6f51 cpuidle_enable_device +EXPORT_SYMBOL_GPL vmlinux 0x20c6f7f1 dbs_check_cpu +EXPORT_SYMBOL_GPL vmlinux 0x20cdaf43 led_stop_software_blink +EXPORT_SYMBOL_GPL vmlinux 0x21033ffa dm_accept_partial_bio +EXPORT_SYMBOL_GPL vmlinux 0x21038df2 tty_standard_install +EXPORT_SYMBOL_GPL vmlinux 0x211cfa24 shash_free_instance +EXPORT_SYMBOL_GPL vmlinux 0x2126e6d4 ata_link_offline +EXPORT_SYMBOL_GPL vmlinux 0x2151f5c2 nf_register_afinfo +EXPORT_SYMBOL_GPL vmlinux 0x2171ef88 device_show_int +EXPORT_SYMBOL_GPL vmlinux 0x2176f2e2 regulator_bulk_force_disable +EXPORT_SYMBOL_GPL vmlinux 0x21a11c92 watchdog_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0x21bcffda devres_open_group +EXPORT_SYMBOL_GPL vmlinux 0x21ced09b fuse_conn_init +EXPORT_SYMBOL_GPL vmlinux 0x21d95567 ping_close +EXPORT_SYMBOL_GPL vmlinux 0x221b140d of_property_read_u64_array +EXPORT_SYMBOL_GPL vmlinux 0x223a88c1 pci_hp_add_bridge +EXPORT_SYMBOL_GPL vmlinux 0x22840044 fwnode_get_named_gpiod +EXPORT_SYMBOL_GPL vmlinux 0x2296ac32 usb_hcd_start_port_resume +EXPORT_SYMBOL_GPL vmlinux 0x2296c00d crypto_attr_u32 +EXPORT_SYMBOL_GPL vmlinux 0x22ad8fe0 wm831x_reg_lock +EXPORT_SYMBOL_GPL vmlinux 0x22b97441 sdio_release_host +EXPORT_SYMBOL_GPL vmlinux 0x22e1fe33 regulator_set_current_limit +EXPORT_SYMBOL_GPL vmlinux 0x2320ef9e ata_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x232d0ec5 kernfs_notify +EXPORT_SYMBOL_GPL vmlinux 0x2342afdb sdio_memcpy_toio +EXPORT_SYMBOL_GPL vmlinux 0x234cf04e usb_phy_gen_create_phy +EXPORT_SYMBOL_GPL vmlinux 0x2357752b wm8350_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x2371c36b pm_stay_awake +EXPORT_SYMBOL_GPL vmlinux 0x23864ce7 cpuset_mem_spread_node +EXPORT_SYMBOL_GPL vmlinux 0x238b1d09 swiotlb_tbl_sync_single +EXPORT_SYMBOL_GPL vmlinux 0x23936fa9 ata_pci_sff_init_one +EXPORT_SYMBOL_GPL vmlinux 0x23a2a7db hvc_poll +EXPORT_SYMBOL_GPL vmlinux 0x23aa4770 genlmsg_new_unicast +EXPORT_SYMBOL_GPL vmlinux 0x23cd169e spi_async +EXPORT_SYMBOL_GPL vmlinux 0x23cfa2a4 call_srcu +EXPORT_SYMBOL_GPL vmlinux 0x23fe1dad tcp_ca_get_key_by_name +EXPORT_SYMBOL_GPL vmlinux 0x2406dae3 pci_address_to_pio +EXPORT_SYMBOL_GPL vmlinux 0x2418c799 input_ff_upload +EXPORT_SYMBOL_GPL vmlinux 0x24457174 audit_enabled +EXPORT_SYMBOL_GPL vmlinux 0x245637e7 dma_request_slave_channel_reason +EXPORT_SYMBOL_GPL vmlinux 0x247a0a25 alloc_vm_area +EXPORT_SYMBOL_GPL vmlinux 0x247ef831 kdb_unregister +EXPORT_SYMBOL_GPL vmlinux 0x2486a2d8 regulator_count_voltages +EXPORT_SYMBOL_GPL vmlinux 0x248c25fb tty_put_char +EXPORT_SYMBOL_GPL vmlinux 0x249761eb dev_pm_qos_add_request +EXPORT_SYMBOL_GPL vmlinux 0x24aac4d9 crypto_aes_expand_key +EXPORT_SYMBOL_GPL vmlinux 0x24bd16b1 blk_mq_freeze_queue +EXPORT_SYMBOL_GPL vmlinux 0x24cfbcd1 blk_queue_dma_drain +EXPORT_SYMBOL_GPL vmlinux 0x24dece5c smpboot_register_percpu_thread +EXPORT_SYMBOL_GPL vmlinux 0x24eb7e32 leds_list +EXPORT_SYMBOL_GPL vmlinux 0x24f39c39 reset_control_reset +EXPORT_SYMBOL_GPL vmlinux 0x256b8b30 mbox_chan_received_data +EXPORT_SYMBOL_GPL vmlinux 0x25704e1f pci_bus_add_device +EXPORT_SYMBOL_GPL vmlinux 0x257b6f57 pci_reset_slot +EXPORT_SYMBOL_GPL vmlinux 0x258d6632 trace_seq_path +EXPORT_SYMBOL_GPL vmlinux 0x25d04ee3 hrtimer_cancel +EXPORT_SYMBOL_GPL vmlinux 0x25e8ab14 perf_pmu_migrate_context +EXPORT_SYMBOL_GPL vmlinux 0x2613ef02 napi_hash_del +EXPORT_SYMBOL_GPL vmlinux 0x2616686f rio_get_asm +EXPORT_SYMBOL_GPL vmlinux 0x2616f6eb devm_power_supply_register_no_ws +EXPORT_SYMBOL_GPL vmlinux 0x26269539 of_pci_range_parser_init +EXPORT_SYMBOL_GPL vmlinux 0x262f20a8 local_clock +EXPORT_SYMBOL_GPL vmlinux 0x263f6507 devfreq_event_set_event +EXPORT_SYMBOL_GPL vmlinux 0x26520970 vm_memory_committed +EXPORT_SYMBOL_GPL vmlinux 0x2668cd51 regmap_write +EXPORT_SYMBOL_GPL vmlinux 0x266b7638 interval_tree_remove +EXPORT_SYMBOL_GPL vmlinux 0x2673fb38 of_property_read_string_helper +EXPORT_SYMBOL_GPL vmlinux 0x26754cb2 iptunnel_handle_offloads +EXPORT_SYMBOL_GPL vmlinux 0x267f4d88 mm_kobj +EXPORT_SYMBOL_GPL vmlinux 0x268efd43 unregister_kprobes +EXPORT_SYMBOL_GPL vmlinux 0x2691412e boot_cpuid_phys +EXPORT_SYMBOL_GPL vmlinux 0x26ac9055 pwmchip_add +EXPORT_SYMBOL_GPL vmlinux 0x26b71fb4 ring_buffer_time_stamp +EXPORT_SYMBOL_GPL vmlinux 0x26b90e21 ata_pci_device_do_suspend +EXPORT_SYMBOL_GPL vmlinux 0x26c39ea7 pci_generic_config_read +EXPORT_SYMBOL_GPL vmlinux 0x26c43f2d device_create_vargs +EXPORT_SYMBOL_GPL vmlinux 0x26c90ea4 scsi_eh_get_sense +EXPORT_SYMBOL_GPL vmlinux 0x26d0990a __i2c_board_lock +EXPORT_SYMBOL_GPL vmlinux 0x26ddb17b __put_net +EXPORT_SYMBOL_GPL vmlinux 0x26ee20c7 __rtnl_af_unregister +EXPORT_SYMBOL_GPL vmlinux 0x270e85e7 ata_sas_port_init +EXPORT_SYMBOL_GPL vmlinux 0x27175f79 __init_kthread_worker +EXPORT_SYMBOL_GPL vmlinux 0x2727a557 ata_sas_slave_configure +EXPORT_SYMBOL_GPL vmlinux 0x275d15cd blk_trace_remove +EXPORT_SYMBOL_GPL vmlinux 0x27631ae9 rhashtable_free_and_destroy +EXPORT_SYMBOL_GPL vmlinux 0x2787db00 vbin_printf +EXPORT_SYMBOL_GPL vmlinux 0x278af994 bus_get_device_klist +EXPORT_SYMBOL_GPL vmlinux 0x27c1e63f usb_amd_find_chipset_info +EXPORT_SYMBOL_GPL vmlinux 0x27c8a9fa rio_mport_get_physefb +EXPORT_SYMBOL_GPL vmlinux 0x27e6e160 fuse_dev_operations +EXPORT_SYMBOL_GPL vmlinux 0x27ec0273 reset_controller_register +EXPORT_SYMBOL_GPL vmlinux 0x27f4f029 ftrace_set_global_filter +EXPORT_SYMBOL_GPL vmlinux 0x27f6e70d ata_sas_port_destroy +EXPORT_SYMBOL_GPL vmlinux 0x27fa66e1 nr_free_buffer_pages +EXPORT_SYMBOL_GPL vmlinux 0x281c309c inet6_csk_addr2sockaddr +EXPORT_SYMBOL_GPL vmlinux 0x282cdabc usb_led_activity +EXPORT_SYMBOL_GPL vmlinux 0x283678ec pmac_backlight +EXPORT_SYMBOL_GPL vmlinux 0x2851ce7e inet6_hash_connect +EXPORT_SYMBOL_GPL vmlinux 0x28687625 get_pid_task +EXPORT_SYMBOL_GPL vmlinux 0x2888878b driver_for_each_device +EXPORT_SYMBOL_GPL vmlinux 0x2891cf10 subsys_dev_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x28a86ae8 pm_generic_poweroff +EXPORT_SYMBOL_GPL vmlinux 0x28ab17ef devm_led_classdev_unregister +EXPORT_SYMBOL_GPL vmlinux 0x28e14b62 pmf_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0x2913de09 hrtimer_get_remaining +EXPORT_SYMBOL_GPL vmlinux 0x2917bc3a public_key_subtype +EXPORT_SYMBOL_GPL vmlinux 0x292bbefd __put_task_struct +EXPORT_SYMBOL_GPL vmlinux 0x292f17b6 sysfs_add_link_to_group +EXPORT_SYMBOL_GPL vmlinux 0x2953cb0d register_ftrace_function +EXPORT_SYMBOL_GPL vmlinux 0x295994cd of_alias_get_id +EXPORT_SYMBOL_GPL vmlinux 0x296aa525 pm_generic_suspend_late +EXPORT_SYMBOL_GPL vmlinux 0x296b3af7 blkcipher_walk_virt_block +EXPORT_SYMBOL_GPL vmlinux 0x29856f1b screen_glyph +EXPORT_SYMBOL_GPL vmlinux 0x2994734e raw_unhash_sk +EXPORT_SYMBOL_GPL vmlinux 0x29b04f55 crypto_shash_final +EXPORT_SYMBOL_GPL vmlinux 0x29b86704 gpiod_set_debounce +EXPORT_SYMBOL_GPL vmlinux 0x29d15f30 sdio_claim_irq +EXPORT_SYMBOL_GPL vmlinux 0x29e647ca inet6_lookup_listener +EXPORT_SYMBOL_GPL vmlinux 0x29f0a17c ata_link_next +EXPORT_SYMBOL_GPL vmlinux 0x2a265662 regmap_field_free +EXPORT_SYMBOL_GPL vmlinux 0x2a27b950 virtqueue_get_buf +EXPORT_SYMBOL_GPL vmlinux 0x2a27c421 ata_qc_complete_multiple +EXPORT_SYMBOL_GPL vmlinux 0x2a2e87b5 page_endio +EXPORT_SYMBOL_GPL vmlinux 0x2a2f3318 led_trigger_set +EXPORT_SYMBOL_GPL vmlinux 0x2a3980d1 blkcg_root +EXPORT_SYMBOL_GPL vmlinux 0x2a3efc71 phy_pm_runtime_allow +EXPORT_SYMBOL_GPL vmlinux 0x2a592dec tps6586x_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0x2a5cf493 blk_execute_rq_nowait +EXPORT_SYMBOL_GPL vmlinux 0x2a678a13 __suspend_report_result +EXPORT_SYMBOL_GPL vmlinux 0x2a6d370a platform_bus +EXPORT_SYMBOL_GPL vmlinux 0x2aa007f1 crypto_find_alg +EXPORT_SYMBOL_GPL vmlinux 0x2aac4eb6 devm_phy_destroy +EXPORT_SYMBOL_GPL vmlinux 0x2abafcb1 unlock_media_bay +EXPORT_SYMBOL_GPL vmlinux 0x2ac54cf1 pci_device_is_present +EXPORT_SYMBOL_GPL vmlinux 0x2acf4ea0 kobject_rename +EXPORT_SYMBOL_GPL vmlinux 0x2ae0aeb6 sock_diag_register_inet_compat +EXPORT_SYMBOL_GPL vmlinux 0x2ae97fce tcp_done +EXPORT_SYMBOL_GPL vmlinux 0x2af02c47 tc3589x_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x2af70f59 debugfs_create_u8 +EXPORT_SYMBOL_GPL vmlinux 0x2af99c5b trace_event_reg +EXPORT_SYMBOL_GPL vmlinux 0x2b0e2797 rtc_update_irq_enable +EXPORT_SYMBOL_GPL vmlinux 0x2b101d8a pci_cleanup_aer_uncorrect_error_status +EXPORT_SYMBOL_GPL vmlinux 0x2b3abf80 usb_string +EXPORT_SYMBOL_GPL vmlinux 0x2b3bca69 rio_request_inb_mbox +EXPORT_SYMBOL_GPL vmlinux 0x2b508899 regulator_can_change_voltage +EXPORT_SYMBOL_GPL vmlinux 0x2b5c303b smp_send_reschedule +EXPORT_SYMBOL_GPL vmlinux 0x2b7a574f md_is_badblock +EXPORT_SYMBOL_GPL vmlinux 0x2b80739b component_del +EXPORT_SYMBOL_GPL vmlinux 0x2b9390a6 unix_inq_len +EXPORT_SYMBOL_GPL vmlinux 0x2bf1bbcc __pneigh_lookup +EXPORT_SYMBOL_GPL vmlinux 0x2bfb541d devm_regulator_unregister +EXPORT_SYMBOL_GPL vmlinux 0x2c133868 bit_wait_io_timeout +EXPORT_SYMBOL_GPL vmlinux 0x2c208607 power_supply_is_system_supplied +EXPORT_SYMBOL_GPL vmlinux 0x2c3054f9 net_inc_ingress_queue +EXPORT_SYMBOL_GPL vmlinux 0x2c4adffe tps65912_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x2c601a46 thermal_generate_netlink_event +EXPORT_SYMBOL_GPL vmlinux 0x2c7db649 irq_dispose_mapping +EXPORT_SYMBOL_GPL vmlinux 0x2c88a2b5 regmap_field_read +EXPORT_SYMBOL_GPL vmlinux 0x2c95e4cf gpiod_set_raw_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x2c975493 crypto_register_aead +EXPORT_SYMBOL_GPL vmlinux 0x2c97c085 unregister_kprobe +EXPORT_SYMBOL_GPL vmlinux 0x2c97f8a2 of_reconfig_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x2ca92882 platform_get_irq_byname +EXPORT_SYMBOL_GPL vmlinux 0x2cc3e675 pmac_i2c_close +EXPORT_SYMBOL_GPL vmlinux 0x2cd23183 device_show_ulong +EXPORT_SYMBOL_GPL vmlinux 0x2ce060b3 ipv6_dup_options +EXPORT_SYMBOL_GPL vmlinux 0x2ce28480 virtqueue_is_broken +EXPORT_SYMBOL_GPL vmlinux 0x2ce98559 kcrypto_wq +EXPORT_SYMBOL_GPL vmlinux 0x2cfdd5bb sysfs_merge_group +EXPORT_SYMBOL_GPL vmlinux 0x2d0a1396 tty_get_pgrp +EXPORT_SYMBOL_GPL vmlinux 0x2d1b02d2 usermodehelper_read_lock_wait +EXPORT_SYMBOL_GPL vmlinux 0x2d3a4ce9 posix_clock_unregister +EXPORT_SYMBOL_GPL vmlinux 0x2d41e6f5 __trace_puts +EXPORT_SYMBOL_GPL vmlinux 0x2d49c32c usb_autopm_get_interface +EXPORT_SYMBOL_GPL vmlinux 0x2d59c954 edac_handlers +EXPORT_SYMBOL_GPL vmlinux 0x2d74d5ea tcp_set_state +EXPORT_SYMBOL_GPL vmlinux 0x2d8c1f88 regulator_set_voltage +EXPORT_SYMBOL_GPL vmlinux 0x2dc5a6d1 btree_last +EXPORT_SYMBOL_GPL vmlinux 0x2dd8de35 desc_to_gpio +EXPORT_SYMBOL_GPL vmlinux 0x2e0d77c6 srcu_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0x2e2360b1 ftrace_set_global_notrace +EXPORT_SYMBOL_GPL vmlinux 0x2e2f1740 ring_buffer_record_disable_cpu +EXPORT_SYMBOL_GPL vmlinux 0x2e38226d __lock_page_killable +EXPORT_SYMBOL_GPL vmlinux 0x2e44d569 irq_setup_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x2e79cbed devm_rtc_device_register +EXPORT_SYMBOL_GPL vmlinux 0x2e8bfa4f spi_finalize_current_transfer +EXPORT_SYMBOL_GPL vmlinux 0x2e8f5eea regulator_is_enabled_regmap +EXPORT_SYMBOL_GPL vmlinux 0x2e97f964 flush_fp_to_thread +EXPORT_SYMBOL_GPL vmlinux 0x2e9f98f5 tcp_unregister_congestion_control +EXPORT_SYMBOL_GPL vmlinux 0x2ea520b3 crypto_shoot_alg +EXPORT_SYMBOL_GPL vmlinux 0x2ea9b1e8 skb_scrub_packet +EXPORT_SYMBOL_GPL vmlinux 0x2ebe3135 cpu_is_hotpluggable +EXPORT_SYMBOL_GPL vmlinux 0x2ecee5a1 ata_port_wait_eh +EXPORT_SYMBOL_GPL vmlinux 0x2ef3d5ce rio_register_mport +EXPORT_SYMBOL_GPL vmlinux 0x2ef6b5bf smp_call_function_any +EXPORT_SYMBOL_GPL vmlinux 0x2f0d9053 usb_otg_state_string +EXPORT_SYMBOL_GPL vmlinux 0x2f130c17 spi_bus_lock +EXPORT_SYMBOL_GPL vmlinux 0x2f1c77b9 system_trusted_keyring +EXPORT_SYMBOL_GPL vmlinux 0x2f1e1d84 irq_domain_add_simple +EXPORT_SYMBOL_GPL vmlinux 0x2f4113a2 dcookie_register +EXPORT_SYMBOL_GPL vmlinux 0x2f65a074 regulator_list_voltage +EXPORT_SYMBOL_GPL vmlinux 0x2fadf57a crypto_unregister_shashes +EXPORT_SYMBOL_GPL vmlinux 0x2fd8cba9 freeze_wake +EXPORT_SYMBOL_GPL vmlinux 0x2ff1fd3d scsi_mode_select +EXPORT_SYMBOL_GPL vmlinux 0x2ffb5ff7 btree_get_prev +EXPORT_SYMBOL_GPL vmlinux 0x2fff2f1b __fat_fs_error +EXPORT_SYMBOL_GPL vmlinux 0x301cfc82 gpiod_is_active_low +EXPORT_SYMBOL_GPL vmlinux 0x303fdde3 blkdev_write_iter +EXPORT_SYMBOL_GPL vmlinux 0x3052fcce page_cache_sync_readahead +EXPORT_SYMBOL_GPL vmlinux 0x305ccc76 regcache_mark_dirty +EXPORT_SYMBOL_GPL vmlinux 0x30a3ac68 crypto_aead_type +EXPORT_SYMBOL_GPL vmlinux 0x30a4f4ca bstr_printf +EXPORT_SYMBOL_GPL vmlinux 0x30b4d026 skb_cow_data +EXPORT_SYMBOL_GPL vmlinux 0x30bccec4 pci_pasid_features +EXPORT_SYMBOL_GPL vmlinux 0x30c18719 raw_seq_open +EXPORT_SYMBOL_GPL vmlinux 0x30c9d6cd ima_file_check +EXPORT_SYMBOL_GPL vmlinux 0x30ceade4 dm_internal_resume +EXPORT_SYMBOL_GPL vmlinux 0x30ed7474 spi_unregister_master +EXPORT_SYMBOL_GPL vmlinux 0x30f856ac extcon_set_cable_state +EXPORT_SYMBOL_GPL vmlinux 0x3109b751 cpu_clock +EXPORT_SYMBOL_GPL vmlinux 0x311fe10a powercap_register_control_type +EXPORT_SYMBOL_GPL vmlinux 0x31266931 con_debug_leave +EXPORT_SYMBOL_GPL vmlinux 0x31275eae gpiod_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x3144d67b crypto_register_ahash +EXPORT_SYMBOL_GPL vmlinux 0x31457a5a replace_page_cache_page +EXPORT_SYMBOL_GPL vmlinux 0x31460fa0 eventfd_ctx_fileget +EXPORT_SYMBOL_GPL vmlinux 0x314f397e sata_link_resume +EXPORT_SYMBOL_GPL vmlinux 0x315ecf3f regmap_raw_read +EXPORT_SYMBOL_GPL vmlinux 0x31609710 usb_put_intf +EXPORT_SYMBOL_GPL vmlinux 0x317271f8 crypto_shash_update +EXPORT_SYMBOL_GPL vmlinux 0x318092e1 ata_slave_link_init +EXPORT_SYMBOL_GPL vmlinux 0x3183b8db pid_nr_ns +EXPORT_SYMBOL_GPL vmlinux 0x3198fdfb of_irq_parse_pci +EXPORT_SYMBOL_GPL vmlinux 0x31bdda33 fuse_direct_io +EXPORT_SYMBOL_GPL vmlinux 0x31c0c2d1 dm_put +EXPORT_SYMBOL_GPL vmlinux 0x31c7970f pciserial_suspend_ports +EXPORT_SYMBOL_GPL vmlinux 0x31f243f7 gpiod_unexport +EXPORT_SYMBOL_GPL vmlinux 0x320516be sg_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x321bca13 cpuidle_get_driver +EXPORT_SYMBOL_GPL vmlinux 0x32670cae ata_ehi_clear_desc +EXPORT_SYMBOL_GPL vmlinux 0x328995b5 tracing_generic_entry_update +EXPORT_SYMBOL_GPL vmlinux 0x328bd295 anon_inode_getfile +EXPORT_SYMBOL_GPL vmlinux 0x328bfc8d of_irq_to_resource +EXPORT_SYMBOL_GPL vmlinux 0x32bfb048 pci_generic_config_write +EXPORT_SYMBOL_GPL vmlinux 0x32c3cb4e class_compat_register +EXPORT_SYMBOL_GPL vmlinux 0x32d6b205 ip4_datagram_release_cb +EXPORT_SYMBOL_GPL vmlinux 0x32e5f0b7 regulator_allow_bypass +EXPORT_SYMBOL_GPL vmlinux 0x32e8371b pci_hp_change_slot_info +EXPORT_SYMBOL_GPL vmlinux 0x330c846c cpufreq_table_validate_and_show +EXPORT_SYMBOL_GPL vmlinux 0x332ffc53 dma_buf_get +EXPORT_SYMBOL_GPL vmlinux 0x33303533 ping_getfrag +EXPORT_SYMBOL_GPL vmlinux 0x334c4f8f udp4_hwcsum +EXPORT_SYMBOL_GPL vmlinux 0x3353d42d do_take_over_console +EXPORT_SYMBOL_GPL vmlinux 0x335c570f enable_percpu_irq +EXPORT_SYMBOL_GPL vmlinux 0x336154ca rcutorture_record_test_transition +EXPORT_SYMBOL_GPL vmlinux 0x337443c2 usb_alloc_urb +EXPORT_SYMBOL_GPL vmlinux 0x337786fa usb_unpoison_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x3382bc5e dev_attr_sw_activity +EXPORT_SYMBOL_GPL vmlinux 0x33ac0f24 regulator_set_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x33d1bbe2 fat_free_clusters +EXPORT_SYMBOL_GPL vmlinux 0x33ea9b5f do_unregister_con_driver +EXPORT_SYMBOL_GPL vmlinux 0x33f69d52 debugfs_create_bool +EXPORT_SYMBOL_GPL vmlinux 0x34036e6c trace_event_raw_init +EXPORT_SYMBOL_GPL vmlinux 0x340d5346 trace_print_bitmask_seq +EXPORT_SYMBOL_GPL vmlinux 0x342e50b7 regulator_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x3445cb56 blkg_lookup_create +EXPORT_SYMBOL_GPL vmlinux 0x3450cf69 regulator_list_voltage_table +EXPORT_SYMBOL_GPL vmlinux 0x34646153 inet_peer_base_init +EXPORT_SYMBOL_GPL vmlinux 0x347682ce snmp_fold_field64 +EXPORT_SYMBOL_GPL vmlinux 0x347fd4b3 eventfd_ctx_get +EXPORT_SYMBOL_GPL vmlinux 0x3489d379 relay_open +EXPORT_SYMBOL_GPL vmlinux 0x34949000 disk_part_iter_next +EXPORT_SYMBOL_GPL vmlinux 0x34ac50a4 visitorl +EXPORT_SYMBOL_GPL vmlinux 0x34d049d7 dev_pm_domain_attach +EXPORT_SYMBOL_GPL vmlinux 0x34e57d3b securityfs_create_file +EXPORT_SYMBOL_GPL vmlinux 0x34fbeddc pwm_request +EXPORT_SYMBOL_GPL vmlinux 0x35176301 rcu_batches_completed_sched +EXPORT_SYMBOL_GPL vmlinux 0x355ac5a1 __sock_recv_ts_and_drops +EXPORT_SYMBOL_GPL vmlinux 0x358e53af crypto_grab_skcipher +EXPORT_SYMBOL_GPL vmlinux 0x358ff60f twl_get_hfclk_rate +EXPORT_SYMBOL_GPL vmlinux 0x35ac2a67 inet_ctl_sock_create +EXPORT_SYMBOL_GPL vmlinux 0x35d7f839 yield_to +EXPORT_SYMBOL_GPL vmlinux 0x35e2d82a devfreq_event_enable_edev +EXPORT_SYMBOL_GPL vmlinux 0x35f10f43 nfq_ct_nat_hook +EXPORT_SYMBOL_GPL vmlinux 0x3617a56b mbox_request_channel_byname +EXPORT_SYMBOL_GPL vmlinux 0x361e2bcc save_stack_trace +EXPORT_SYMBOL_GPL vmlinux 0x369fcd70 tracing_snapshot +EXPORT_SYMBOL_GPL vmlinux 0x36a139f1 rtnl_af_unregister +EXPORT_SYMBOL_GPL vmlinux 0x36bda7b0 cpuidle_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0x36c6ca0e crypto_unregister_aead +EXPORT_SYMBOL_GPL vmlinux 0x36c7d8c4 aead_register_instance +EXPORT_SYMBOL_GPL vmlinux 0x36cb5a78 sata_scr_valid +EXPORT_SYMBOL_GPL vmlinux 0x36cce187 dm_set_target_max_io_len +EXPORT_SYMBOL_GPL vmlinux 0x36cf11a7 fat_setattr +EXPORT_SYMBOL_GPL vmlinux 0x36dab97f trace_clock_jiffies +EXPORT_SYMBOL_GPL vmlinux 0x36e3169e serial8250_tx_chars +EXPORT_SYMBOL_GPL vmlinux 0x36e33d9a rtc_irq_set_freq +EXPORT_SYMBOL_GPL vmlinux 0x36e9fa81 wm5102_spi_regmap +EXPORT_SYMBOL_GPL vmlinux 0x370629b0 rtc_class_open +EXPORT_SYMBOL_GPL vmlinux 0x3727c9c1 devm_devfreq_event_add_edev +EXPORT_SYMBOL_GPL vmlinux 0x3756b806 kobject_move +EXPORT_SYMBOL_GPL vmlinux 0x37736f85 scsi_target_unblock +EXPORT_SYMBOL_GPL vmlinux 0x37a2b78b extcon_dev_free +EXPORT_SYMBOL_GPL vmlinux 0x37beeefc __platform_driver_probe +EXPORT_SYMBOL_GPL vmlinux 0x37d63505 attribute_container_unregister +EXPORT_SYMBOL_GPL vmlinux 0x37da28c6 ip6_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x37f02b52 dma_buf_vmap +EXPORT_SYMBOL_GPL vmlinux 0x37f118a8 usb_autopm_get_interface_async +EXPORT_SYMBOL_GPL vmlinux 0x3805a15e regmap_add_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0x381736f7 dev_pm_qos_remove_request +EXPORT_SYMBOL_GPL vmlinux 0x383057e9 register_pernet_subsys +EXPORT_SYMBOL_GPL vmlinux 0x38318154 alarmtimer_get_rtcdev +EXPORT_SYMBOL_GPL vmlinux 0x385a9b75 regulator_force_disable +EXPORT_SYMBOL_GPL vmlinux 0x38639300 of_overlay_destroy +EXPORT_SYMBOL_GPL vmlinux 0x386dcd87 spi_register_master +EXPORT_SYMBOL_GPL vmlinux 0x387949bd regulator_set_voltage_time_sel +EXPORT_SYMBOL_GPL vmlinux 0x38a9c2c7 input_ff_effect_from_user +EXPORT_SYMBOL_GPL vmlinux 0x38b029ea regcache_sync +EXPORT_SYMBOL_GPL vmlinux 0x38c4fc87 crypto_enqueue_request +EXPORT_SYMBOL_GPL vmlinux 0x38c8bef7 exportfs_encode_fh +EXPORT_SYMBOL_GPL vmlinux 0x38cb4849 dma_get_any_slave_channel +EXPORT_SYMBOL_GPL vmlinux 0x38ed198f alarm_try_to_cancel +EXPORT_SYMBOL_GPL vmlinux 0x38f3f712 usb_submit_urb +EXPORT_SYMBOL_GPL vmlinux 0x3915dfe4 vring_del_virtqueue +EXPORT_SYMBOL_GPL vmlinux 0x3916194f rio_route_add_entry +EXPORT_SYMBOL_GPL vmlinux 0x39485f9a posix_acl_access_xattr_handler +EXPORT_SYMBOL_GPL vmlinux 0x3949b8d9 single_open_net +EXPORT_SYMBOL_GPL vmlinux 0x394a3559 ata_eh_freeze_port +EXPORT_SYMBOL_GPL vmlinux 0x396d73b3 usb_create_hcd +EXPORT_SYMBOL_GPL vmlinux 0x398f7f7c dm_noflush_suspending +EXPORT_SYMBOL_GPL vmlinux 0x39ab6580 mnt_want_write_file +EXPORT_SYMBOL_GPL vmlinux 0x39afb831 skb_gso_transport_seglen +EXPORT_SYMBOL_GPL vmlinux 0x39bdcf21 rio_route_get_entry +EXPORT_SYMBOL_GPL vmlinux 0x39ca07cc maxim_charger_calc_reg_current +EXPORT_SYMBOL_GPL vmlinux 0x39e61495 nf_logger_request_module +EXPORT_SYMBOL_GPL vmlinux 0x39e961f0 clockevent_delta2ns +EXPORT_SYMBOL_GPL vmlinux 0x39f56ae5 ata_port_freeze +EXPORT_SYMBOL_GPL vmlinux 0x3a26ed11 sched_clock +EXPORT_SYMBOL_GPL vmlinux 0x3a29b2a2 usb_register_device_driver +EXPORT_SYMBOL_GPL vmlinux 0x3a4f6a32 ata_sff_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x3a536bd7 ring_buffer_read_finish +EXPORT_SYMBOL_GPL vmlinux 0x3a7cf017 usb_free_urb +EXPORT_SYMBOL_GPL vmlinux 0x3a892c1c blkg_lookup +EXPORT_SYMBOL_GPL vmlinux 0x3a9be019 asymmetric_key_id_partial +EXPORT_SYMBOL_GPL vmlinux 0x3a9fd617 of_get_nand_bus_width +EXPORT_SYMBOL_GPL vmlinux 0x3ab2239a usb_hub_release_port +EXPORT_SYMBOL_GPL vmlinux 0x3ac1c5dc phy_pm_runtime_put +EXPORT_SYMBOL_GPL vmlinux 0x3ac54bf3 cpufreq_generic_attr +EXPORT_SYMBOL_GPL vmlinux 0x3acdf325 twl4030_audio_enable_resource +EXPORT_SYMBOL_GPL vmlinux 0x3acfe01e uart_console_write +EXPORT_SYMBOL_GPL vmlinux 0x3ad21265 crypto_register_shashes +EXPORT_SYMBOL_GPL vmlinux 0x3ae337a2 scsi_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x3b065258 device_move +EXPORT_SYMBOL_GPL vmlinux 0x3b263db0 md_run +EXPORT_SYMBOL_GPL vmlinux 0x3b3d5e55 tty_ldisc_ref_wait +EXPORT_SYMBOL_GPL vmlinux 0x3b50eacc pmac_i2c_find_bus +EXPORT_SYMBOL_GPL vmlinux 0x3b68a7ae usb_bulk_msg +EXPORT_SYMBOL_GPL vmlinux 0x3b73d6ae gpiod_set_raw_array_value +EXPORT_SYMBOL_GPL vmlinux 0x3bb9ab67 ata_cable_ignore +EXPORT_SYMBOL_GPL vmlinux 0x3c020fa0 of_pwm_get +EXPORT_SYMBOL_GPL vmlinux 0x3c253528 sdio_readb +EXPORT_SYMBOL_GPL vmlinux 0x3c65f7a7 fat_detach +EXPORT_SYMBOL_GPL vmlinux 0x3c662623 rio_get_comptag +EXPORT_SYMBOL_GPL vmlinux 0x3c7764e7 xhci_init_driver +EXPORT_SYMBOL_GPL vmlinux 0x3c81f079 wakeup_source_destroy +EXPORT_SYMBOL_GPL vmlinux 0x3c9390db pci_vpd_find_tag +EXPORT_SYMBOL_GPL vmlinux 0x3c9a9c79 of_phy_simple_xlate +EXPORT_SYMBOL_GPL vmlinux 0x3caadc52 pciserial_init_ports +EXPORT_SYMBOL_GPL vmlinux 0x3cad7863 tracepoint_probe_register +EXPORT_SYMBOL_GPL vmlinux 0x3cba15f5 rio_set_port_lockout +EXPORT_SYMBOL_GPL vmlinux 0x3cbdeabb sched_setscheduler +EXPORT_SYMBOL_GPL vmlinux 0x3cd06035 add_input_randomness +EXPORT_SYMBOL_GPL vmlinux 0x3cdeb6f9 wm8350_reg_lock +EXPORT_SYMBOL_GPL vmlinux 0x3d165c10 rtnl_link_register +EXPORT_SYMBOL_GPL vmlinux 0x3d1e07d3 shash_ahash_digest +EXPORT_SYMBOL_GPL vmlinux 0x3d388324 dpm_resume_end +EXPORT_SYMBOL_GPL vmlinux 0x3d58280f regulator_sync_voltage +EXPORT_SYMBOL_GPL vmlinux 0x3d6d0d58 wm5110_revd_irq +EXPORT_SYMBOL_GPL vmlinux 0x3d7621f0 inverse_translate +EXPORT_SYMBOL_GPL vmlinux 0x3dc526a9 arizona_of_match +EXPORT_SYMBOL_GPL vmlinux 0x3dc916b6 crypto_fl_tab +EXPORT_SYMBOL_GPL vmlinux 0x3dcf44a5 irq_create_direct_mapping +EXPORT_SYMBOL_GPL vmlinux 0x3dcfcae3 __blk_end_request_err +EXPORT_SYMBOL_GPL vmlinux 0x3dd4d3a7 bprintf +EXPORT_SYMBOL_GPL vmlinux 0x3ddd74a6 device_create_bin_file +EXPORT_SYMBOL_GPL vmlinux 0x3de9cae1 crypto_remove_final +EXPORT_SYMBOL_GPL vmlinux 0x3e0b506b driver_register +EXPORT_SYMBOL_GPL vmlinux 0x3e10314c eventfd_fget +EXPORT_SYMBOL_GPL vmlinux 0x3e1cda41 __gpiod_get_index_optional +EXPORT_SYMBOL_GPL vmlinux 0x3e266665 rtnl_put_cacheinfo +EXPORT_SYMBOL_GPL vmlinux 0x3e37b656 bpf_prog_put +EXPORT_SYMBOL_GPL vmlinux 0x3e4ba77a ata_port_desc +EXPORT_SYMBOL_GPL vmlinux 0x3e4f3ef2 devfreq_event_add_edev +EXPORT_SYMBOL_GPL vmlinux 0x3e51db9e rio_enable_rx_tx_port +EXPORT_SYMBOL_GPL vmlinux 0x3e5e1937 rcu_batches_started_sched +EXPORT_SYMBOL_GPL vmlinux 0x3e7080cb mpi_read_from_buffer +EXPORT_SYMBOL_GPL vmlinux 0x3e7199b3 crypto_ahash_type +EXPORT_SYMBOL_GPL vmlinux 0x3e76e134 seq_release_net +EXPORT_SYMBOL_GPL vmlinux 0x3e88385b irq_create_mapping +EXPORT_SYMBOL_GPL vmlinux 0x3e8933c3 device_property_read_string +EXPORT_SYMBOL_GPL vmlinux 0x3ea0b9e9 rio_mport_write_config_32 +EXPORT_SYMBOL_GPL vmlinux 0x3ec24c21 crypto_destroy_tfm +EXPORT_SYMBOL_GPL vmlinux 0x3efb35c9 get_online_cpus +EXPORT_SYMBOL_GPL vmlinux 0x3f07bb9d percpu_ida_free_tags +EXPORT_SYMBOL_GPL vmlinux 0x3f14bb05 device_pm_wait_for_dev +EXPORT_SYMBOL_GPL vmlinux 0x3f37cb7b bus_for_each_drv +EXPORT_SYMBOL_GPL vmlinux 0x3f493f16 regmap_check_range_table +EXPORT_SYMBOL_GPL vmlinux 0x3f4ea0c8 sb800_prefetch +EXPORT_SYMBOL_GPL vmlinux 0x3f5855c4 wm8997_patch +EXPORT_SYMBOL_GPL vmlinux 0x3f7dbe4b irq_domain_associate_many +EXPORT_SYMBOL_GPL vmlinux 0x3f876256 inet6_csk_bind_conflict +EXPORT_SYMBOL_GPL vmlinux 0x3f966b75 subsys_find_device_by_id +EXPORT_SYMBOL_GPL vmlinux 0x3fb7b3b2 blk_mq_tags_cpumask +EXPORT_SYMBOL_GPL vmlinux 0x3fcb43d5 regulator_get_current_limit +EXPORT_SYMBOL_GPL vmlinux 0x3fcdd9a0 pci_user_read_config_word +EXPORT_SYMBOL_GPL vmlinux 0x3ff72398 da903x_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x3ff9e8d5 usb_hcd_amd_remote_wakeup_quirk +EXPORT_SYMBOL_GPL vmlinux 0x401feccd mbox_free_channel +EXPORT_SYMBOL_GPL vmlinux 0x40206591 usb_hcd_unlink_urb_from_ep +EXPORT_SYMBOL_GPL vmlinux 0x403f9529 gpio_request_one +EXPORT_SYMBOL_GPL vmlinux 0x4045c494 filter_match_preds +EXPORT_SYMBOL_GPL vmlinux 0x4065554b scsi_eh_ready_devs +EXPORT_SYMBOL_GPL vmlinux 0x4065d168 pm_print_active_wakeup_sources +EXPORT_SYMBOL_GPL vmlinux 0x406c4cb1 hrtimer_resolution +EXPORT_SYMBOL_GPL vmlinux 0x40739c1c ata_port_abort +EXPORT_SYMBOL_GPL vmlinux 0x40af0dec ata_xfer_mode2mask +EXPORT_SYMBOL_GPL vmlinux 0x40d436c0 driver_create_file +EXPORT_SYMBOL_GPL vmlinux 0x40d46b21 crypto_ft_tab +EXPORT_SYMBOL_GPL vmlinux 0x40f0683e reset_control_put +EXPORT_SYMBOL_GPL vmlinux 0x4100d670 devres_add +EXPORT_SYMBOL_GPL vmlinux 0x41024717 register_kretprobe +EXPORT_SYMBOL_GPL vmlinux 0x411c309f aead_geniv_exit +EXPORT_SYMBOL_GPL vmlinux 0x413f7e17 alarm_init +EXPORT_SYMBOL_GPL vmlinux 0x415807fd sdio_get_host_pm_caps +EXPORT_SYMBOL_GPL vmlinux 0x4174f69a crypto_hash_walk_first +EXPORT_SYMBOL_GPL vmlinux 0x41814cb8 dirty_writeback_interval +EXPORT_SYMBOL_GPL vmlinux 0x4198eb7a x509_request_asymmetric_key +EXPORT_SYMBOL_GPL vmlinux 0x41a15df2 arizona_set_irq_wake +EXPORT_SYMBOL_GPL vmlinux 0x41c80613 pci_check_and_mask_intx +EXPORT_SYMBOL_GPL vmlinux 0x42001ba9 xattr_getsecurity +EXPORT_SYMBOL_GPL vmlinux 0x4205ad24 cancel_work_sync +EXPORT_SYMBOL_GPL vmlinux 0x42494b87 mddev_resume +EXPORT_SYMBOL_GPL vmlinux 0x4256109e bpf_prog_destroy +EXPORT_SYMBOL_GPL vmlinux 0x426d87c0 find_extend_vma +EXPORT_SYMBOL_GPL vmlinux 0x427a066b trace_seq_puts +EXPORT_SYMBOL_GPL vmlinux 0x42825ce2 rcu_scheduler_active +EXPORT_SYMBOL_GPL vmlinux 0x428f2d7d sdev_evt_send_simple +EXPORT_SYMBOL_GPL vmlinux 0x42af6e30 rhashtable_destroy +EXPORT_SYMBOL_GPL vmlinux 0x42b364ef scatterwalk_done +EXPORT_SYMBOL_GPL vmlinux 0x42c1ada8 of_console_check +EXPORT_SYMBOL_GPL vmlinux 0x42f983ff hvc_remove +EXPORT_SYMBOL_GPL vmlinux 0x4313f6a0 perf_trace_buf_prepare +EXPORT_SYMBOL_GPL vmlinux 0x431b2d02 shmem_read_mapping_page_gfp +EXPORT_SYMBOL_GPL vmlinux 0x431bf93c wm5110_irq +EXPORT_SYMBOL_GPL vmlinux 0x43434561 devm_of_phy_get +EXPORT_SYMBOL_GPL vmlinux 0x438b118a ehci_adjust_port_wakeup_flags +EXPORT_SYMBOL_GPL vmlinux 0x43957591 blkcipher_walk_done +EXPORT_SYMBOL_GPL vmlinux 0x439bb6ba devres_remove_group +EXPORT_SYMBOL_GPL vmlinux 0x43a1df38 of_reconfig_get_state_change +EXPORT_SYMBOL_GPL vmlinux 0x43a26ab6 perf_event_read_value +EXPORT_SYMBOL_GPL vmlinux 0x43a53735 __alloc_workqueue_key +EXPORT_SYMBOL_GPL vmlinux 0x43abf6b9 extcon_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x43bc6267 xhci_run +EXPORT_SYMBOL_GPL vmlinux 0x43ccedbc dm_get_table_device +EXPORT_SYMBOL_GPL vmlinux 0x43de828d pci_try_reset_slot +EXPORT_SYMBOL_GPL vmlinux 0x43f0765e noop_backing_dev_info +EXPORT_SYMBOL_GPL vmlinux 0x43f1058a ehci_cf_port_reset_rwsem +EXPORT_SYMBOL_GPL vmlinux 0x43f56e82 ata_xfer_mode2shift +EXPORT_SYMBOL_GPL vmlinux 0x43f68380 uart_insert_char +EXPORT_SYMBOL_GPL vmlinux 0x44113009 device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x4427f9e7 usb_get_from_anchor +EXPORT_SYMBOL_GPL vmlinux 0x444bfafb tpm_gen_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x4484a5a4 wait_for_device_probe +EXPORT_SYMBOL_GPL vmlinux 0x44905cb0 pci_hp_remove_module_link +EXPORT_SYMBOL_GPL vmlinux 0x44a246d5 crypto_drop_spawn +EXPORT_SYMBOL_GPL vmlinux 0x44e7c6ab extcon_unregister_interest +EXPORT_SYMBOL_GPL vmlinux 0x44eff47d percpu_ida_free +EXPORT_SYMBOL_GPL vmlinux 0x44f6b8fe usb_deregister +EXPORT_SYMBOL_GPL vmlinux 0x44f7c28d pci_stop_and_remove_bus_device_locked +EXPORT_SYMBOL_GPL vmlinux 0x45105b3c usb_register_dev +EXPORT_SYMBOL_GPL vmlinux 0x454e697f __irq_domain_add +EXPORT_SYMBOL_GPL vmlinux 0x4553123e crypto_register_instance +EXPORT_SYMBOL_GPL vmlinux 0x4560a96f md_new_event +EXPORT_SYMBOL_GPL vmlinux 0x457084cf ping_unhash +EXPORT_SYMBOL_GPL vmlinux 0x457594fa crypto_alg_list +EXPORT_SYMBOL_GPL vmlinux 0x457c51f4 sata_link_debounce +EXPORT_SYMBOL_GPL vmlinux 0x458d0b66 skb_zerocopy_headlen +EXPORT_SYMBOL_GPL vmlinux 0x45914265 xhci_resume +EXPORT_SYMBOL_GPL vmlinux 0x45992207 stmpe_set_altfunc +EXPORT_SYMBOL_GPL vmlinux 0x45aa66db gpiod_export_link +EXPORT_SYMBOL_GPL vmlinux 0x45afa01f __of_phy_provider_register +EXPORT_SYMBOL_GPL vmlinux 0x45bf1ff3 crypto_inc +EXPORT_SYMBOL_GPL vmlinux 0x45c18021 tcp_fetch_timewait_stamp +EXPORT_SYMBOL_GPL vmlinux 0x45c958c1 fat_scan +EXPORT_SYMBOL_GPL vmlinux 0x45f697af fuse_do_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x45febd7a rio_unmap_inb_region +EXPORT_SYMBOL_GPL vmlinux 0x46013233 net_dec_ingress_queue +EXPORT_SYMBOL_GPL vmlinux 0x460f7531 wait_rcu_gp +EXPORT_SYMBOL_GPL vmlinux 0x46199894 bdev_write_page +EXPORT_SYMBOL_GPL vmlinux 0x463d24ea ipv6_fixup_options +EXPORT_SYMBOL_GPL vmlinux 0x46647178 hrtimer_init +EXPORT_SYMBOL_GPL vmlinux 0x46661bda trace_seq_printf +EXPORT_SYMBOL_GPL vmlinux 0x4672e88b __crypto_dequeue_request +EXPORT_SYMBOL_GPL vmlinux 0x46771058 device_bind_driver +EXPORT_SYMBOL_GPL vmlinux 0x4688c96a usb_scuttle_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x4688d7ec pvclock_gtod_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x469143c4 x509_free_certificate +EXPORT_SYMBOL_GPL vmlinux 0x46b6f5b7 of_get_nand_ecc_mode +EXPORT_SYMBOL_GPL vmlinux 0x46cd9a3b ip6_append_data +EXPORT_SYMBOL_GPL vmlinux 0x46d859b6 rt_mutex_unlock +EXPORT_SYMBOL_GPL vmlinux 0x46ef8094 ata_scsi_port_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x470c5a9d class_for_each_device +EXPORT_SYMBOL_GPL vmlinux 0x47229b5c gpio_request +EXPORT_SYMBOL_GPL vmlinux 0x47247186 usb_set_device_state +EXPORT_SYMBOL_GPL vmlinux 0x47534cf6 pid_vnr +EXPORT_SYMBOL_GPL vmlinux 0x4761f17c register_netevent_notifier +EXPORT_SYMBOL_GPL vmlinux 0x476310d1 of_property_read_string +EXPORT_SYMBOL_GPL vmlinux 0x47761cbd debugfs_print_regs32 +EXPORT_SYMBOL_GPL vmlinux 0x47884890 system_power_efficient_wq +EXPORT_SYMBOL_GPL vmlinux 0x478db301 regulator_map_voltage_linear_range +EXPORT_SYMBOL_GPL vmlinux 0x47aad3b9 have_governor_per_policy +EXPORT_SYMBOL_GPL vmlinux 0x47c5be60 elv_unregister +EXPORT_SYMBOL_GPL vmlinux 0x47d949a7 __hvc_resize +EXPORT_SYMBOL_GPL vmlinux 0x47dbd8bb usb_gen_phy_init +EXPORT_SYMBOL_GPL vmlinux 0x47df219f class_remove_file_ns +EXPORT_SYMBOL_GPL vmlinux 0x47e3f072 dma_buf_end_cpu_access +EXPORT_SYMBOL_GPL vmlinux 0x483d557f __ata_change_queue_depth +EXPORT_SYMBOL_GPL vmlinux 0x483ff3f2 blk_update_request +EXPORT_SYMBOL_GPL vmlinux 0x4868c3b4 rcu_batches_started_bh +EXPORT_SYMBOL_GPL vmlinux 0x487c5d33 nf_log_buf_add +EXPORT_SYMBOL_GPL vmlinux 0x4890e57b led_classdev_unregister +EXPORT_SYMBOL_GPL vmlinux 0x48add13d led_sysfs_enable +EXPORT_SYMBOL_GPL vmlinux 0x48b4b425 xfrm_audit_state_notfound_simple +EXPORT_SYMBOL_GPL vmlinux 0x49103d9c vfs_listxattr +EXPORT_SYMBOL_GPL vmlinux 0x4943a338 __init_new_context +EXPORT_SYMBOL_GPL vmlinux 0x496b8b02 ata_sff_exec_command +EXPORT_SYMBOL_GPL vmlinux 0x4982a57f probe_kernel_write +EXPORT_SYMBOL_GPL vmlinux 0x498d293a trace_buffer_unlock_commit +EXPORT_SYMBOL_GPL vmlinux 0x499043d3 crypto_init_queue +EXPORT_SYMBOL_GPL vmlinux 0x4993c67e cpufreq_frequency_table_cpuinfo +EXPORT_SYMBOL_GPL vmlinux 0x49a9e6f0 devfreq_event_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0x49e6b5af sock_diag_unregister +EXPORT_SYMBOL_GPL vmlinux 0x49e93c6b kallsyms_on_each_symbol +EXPORT_SYMBOL_GPL vmlinux 0x49e96999 cond_synchronize_rcu +EXPORT_SYMBOL_GPL vmlinux 0x49f5ea3b input_class +EXPORT_SYMBOL_GPL vmlinux 0x49fb0416 ata_bmdma_status +EXPORT_SYMBOL_GPL vmlinux 0x4a1de395 key_type_logon +EXPORT_SYMBOL_GPL vmlinux 0x4a2547c2 threads_core_mask +EXPORT_SYMBOL_GPL vmlinux 0x4a2d8da9 regulator_enable +EXPORT_SYMBOL_GPL vmlinux 0x4a7eefd3 cpuidle_register +EXPORT_SYMBOL_GPL vmlinux 0x4aa4000e handle_simple_irq +EXPORT_SYMBOL_GPL vmlinux 0x4aadeb9a ring_buffer_alloc_read_page +EXPORT_SYMBOL_GPL vmlinux 0x4ac38fb1 blkg_conf_finish +EXPORT_SYMBOL_GPL vmlinux 0x4adfa95b i2c_probe_func_quick_read +EXPORT_SYMBOL_GPL vmlinux 0x4ae07069 regulator_bulk_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x4ae8c705 list_lru_count_node +EXPORT_SYMBOL_GPL vmlinux 0x4b00f0a5 inet_csk_listen_start +EXPORT_SYMBOL_GPL vmlinux 0x4b220fe8 cpufreq_cpu_get +EXPORT_SYMBOL_GPL vmlinux 0x4b248ffa gpiod_to_chip +EXPORT_SYMBOL_GPL vmlinux 0x4b2f1599 alarm_forward +EXPORT_SYMBOL_GPL vmlinux 0x4b3e61e5 __module_address +EXPORT_SYMBOL_GPL vmlinux 0x4b579440 add_disk_randomness +EXPORT_SYMBOL_GPL vmlinux 0x4b96eec8 debugfs_create_x8 +EXPORT_SYMBOL_GPL vmlinux 0x4b9ce061 dpm_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0x4ba13e23 gpiod_count +EXPORT_SYMBOL_GPL vmlinux 0x4c064ed5 arizona_request_irq +EXPORT_SYMBOL_GPL vmlinux 0x4c2d0264 crypto_unregister_instance +EXPORT_SYMBOL_GPL vmlinux 0x4c31ff71 dma_buf_export +EXPORT_SYMBOL_GPL vmlinux 0x4c56a4c8 ata_sas_async_probe +EXPORT_SYMBOL_GPL vmlinux 0x4c5a7488 cpufreq_driver_target +EXPORT_SYMBOL_GPL vmlinux 0x4c602bf1 __blkg_release_rcu +EXPORT_SYMBOL_GPL vmlinux 0x4c714454 phy_remove_lookup +EXPORT_SYMBOL_GPL vmlinux 0x4c735875 __netlink_alloc_skb +EXPORT_SYMBOL_GPL vmlinux 0x4c7402a0 usb_altnum_to_altsetting +EXPORT_SYMBOL_GPL vmlinux 0x4c759827 byte_rev_table +EXPORT_SYMBOL_GPL vmlinux 0x4c7f2cd0 ping_rcv +EXPORT_SYMBOL_GPL vmlinux 0x4c8b2100 reservation_object_get_fences_rcu +EXPORT_SYMBOL_GPL vmlinux 0x4c8b5c64 vfs_test_lock +EXPORT_SYMBOL_GPL vmlinux 0x4cc75fb8 pm_generic_freeze_noirq +EXPORT_SYMBOL_GPL vmlinux 0x4cc834c0 blkcg_activate_policy +EXPORT_SYMBOL_GPL vmlinux 0x4d0015e2 cpu_hotplug_disable +EXPORT_SYMBOL_GPL vmlinux 0x4d027565 sysfs_remove_files +EXPORT_SYMBOL_GPL vmlinux 0x4d072a33 rtc_set_time +EXPORT_SYMBOL_GPL vmlinux 0x4d1e8938 devres_release +EXPORT_SYMBOL_GPL vmlinux 0x4d261f80 shmem_truncate_range +EXPORT_SYMBOL_GPL vmlinux 0x4d37fc50 device_for_each_child +EXPORT_SYMBOL_GPL vmlinux 0x4d51810f device_destroy +EXPORT_SYMBOL_GPL vmlinux 0x4d5b2def stmpe_enable +EXPORT_SYMBOL_GPL vmlinux 0x4d6cdd96 sata_pmp_qc_defer_cmd_switch +EXPORT_SYMBOL_GPL vmlinux 0x4da1cb47 cpufreq_freq_transition_end +EXPORT_SYMBOL_GPL vmlinux 0x4da9c94b rtc_read_time +EXPORT_SYMBOL_GPL vmlinux 0x4db0ac74 sdio_f0_readb +EXPORT_SYMBOL_GPL vmlinux 0x4db3308d devfreq_event_remove_edev +EXPORT_SYMBOL_GPL vmlinux 0x4dc6a9c4 free_vm_area +EXPORT_SYMBOL_GPL vmlinux 0x4dd6fbd8 regmap_get_val_endian +EXPORT_SYMBOL_GPL vmlinux 0x4de17ab3 usb_state_string +EXPORT_SYMBOL_GPL vmlinux 0x4df22467 queue_kthread_work +EXPORT_SYMBOL_GPL vmlinux 0x4e072af6 led_trigger_blink +EXPORT_SYMBOL_GPL vmlinux 0x4e109192 ring_buffer_entries +EXPORT_SYMBOL_GPL vmlinux 0x4e20bbd7 __rt_mutex_init +EXPORT_SYMBOL_GPL vmlinux 0x4e242f5f pstore_cannot_block_path +EXPORT_SYMBOL_GPL vmlinux 0x4e24c273 thermal_zone_of_sensor_unregister +EXPORT_SYMBOL_GPL vmlinux 0x4e2c2dd2 pm_qos_remove_request +EXPORT_SYMBOL_GPL vmlinux 0x4e443c3c locks_alloc_lock +EXPORT_SYMBOL_GPL vmlinux 0x4e509a21 simple_attr_release +EXPORT_SYMBOL_GPL vmlinux 0x4e618f9f of_get_display_timing +EXPORT_SYMBOL_GPL vmlinux 0x4e753940 swiotlb_unmap_page +EXPORT_SYMBOL_GPL vmlinux 0x4ea7afda driver_find +EXPORT_SYMBOL_GPL vmlinux 0x4eb55d15 tpm_chip_register +EXPORT_SYMBOL_GPL vmlinux 0x4ec0282c class_destroy +EXPORT_SYMBOL_GPL vmlinux 0x4ecea270 ata_bmdma_qc_issue +EXPORT_SYMBOL_GPL vmlinux 0x4eee60b7 spi_async_locked +EXPORT_SYMBOL_GPL vmlinux 0x4ef5bcf4 perf_swevent_get_recursion_context +EXPORT_SYMBOL_GPL vmlinux 0x4efd2768 __rio_local_read_config_16 +EXPORT_SYMBOL_GPL vmlinux 0x4f020dee public_key_verify_signature +EXPORT_SYMBOL_GPL vmlinux 0x4f0b49d8 unregister_ftrace_function +EXPORT_SYMBOL_GPL vmlinux 0x4f3e01f4 filter_check_discard +EXPORT_SYMBOL_GPL vmlinux 0x4f4345fb tty_buffer_set_limit +EXPORT_SYMBOL_GPL vmlinux 0x4f5b7b01 wm8997_irq +EXPORT_SYMBOL_GPL vmlinux 0x4f649705 gpiod_export +EXPORT_SYMBOL_GPL vmlinux 0x4f6a07fe show_rcu_gp_kthreads +EXPORT_SYMBOL_GPL vmlinux 0x4f6b76b5 sdio_set_host_pm_flags +EXPORT_SYMBOL_GPL vmlinux 0x4f7915e9 sock_diag_unregister_inet_compat +EXPORT_SYMBOL_GPL vmlinux 0x4fd4e89d ring_buffer_empty_cpu +EXPORT_SYMBOL_GPL vmlinux 0x4fdc945d sata_deb_timing_normal +EXPORT_SYMBOL_GPL vmlinux 0x4fe1eddf unregister_netevent_notifier +EXPORT_SYMBOL_GPL vmlinux 0x50126176 skcipher_geniv_exit +EXPORT_SYMBOL_GPL vmlinux 0x5019b5e9 sched_setattr +EXPORT_SYMBOL_GPL vmlinux 0x50293210 shash_ahash_update +EXPORT_SYMBOL_GPL vmlinux 0x503b5007 da9052_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0x5054b8f7 thermal_cooling_device_register +EXPORT_SYMBOL_GPL vmlinux 0x50621a74 led_trigger_store +EXPORT_SYMBOL_GPL vmlinux 0x5086ac3a alg_test +EXPORT_SYMBOL_GPL vmlinux 0x508a47b7 irq_domain_xlate_twocell +EXPORT_SYMBOL_GPL vmlinux 0x5091b823 ring_buffer_read_start +EXPORT_SYMBOL_GPL vmlinux 0x509a42d0 crypto_register_rngs +EXPORT_SYMBOL_GPL vmlinux 0x50b55338 edac_subsys +EXPORT_SYMBOL_GPL vmlinux 0x50b8af33 crypto_alloc_pcomp +EXPORT_SYMBOL_GPL vmlinux 0x50c40c42 xfrm_audit_state_delete +EXPORT_SYMBOL_GPL vmlinux 0x50c89f23 __alloc_percpu +EXPORT_SYMBOL_GPL vmlinux 0x50de5545 mddev_congested +EXPORT_SYMBOL_GPL vmlinux 0x50e7193a __i2c_first_dynamic_bus_num +EXPORT_SYMBOL_GPL vmlinux 0x50eab4ed input_ff_destroy +EXPORT_SYMBOL_GPL vmlinux 0x50fad434 round_jiffies_up +EXPORT_SYMBOL_GPL vmlinux 0x51431419 sock_diag_register +EXPORT_SYMBOL_GPL vmlinux 0x5169c64d md_stop_writes +EXPORT_SYMBOL_GPL vmlinux 0x5170cc89 i2c_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x518bee92 devres_for_each_res +EXPORT_SYMBOL_GPL vmlinux 0x51b65a26 rtc_lock +EXPORT_SYMBOL_GPL vmlinux 0x51d371ca pci_set_cacheline_size +EXPORT_SYMBOL_GPL vmlinux 0x51d40f41 wm831x_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0x51f7b5bf phy_create +EXPORT_SYMBOL_GPL vmlinux 0x5210a5bf hsi_board_list +EXPORT_SYMBOL_GPL vmlinux 0x521c09dd swiotlb_tbl_unmap_single +EXPORT_SYMBOL_GPL vmlinux 0x52212010 __tracepoint_block_bio_remap +EXPORT_SYMBOL_GPL vmlinux 0x5221ec3a fwnode_property_read_u32_array +EXPORT_SYMBOL_GPL vmlinux 0x522f0a85 pm_generic_thaw +EXPORT_SYMBOL_GPL vmlinux 0x52326d82 device_get_next_child_node +EXPORT_SYMBOL_GPL vmlinux 0x523ed59f lock_media_bay +EXPORT_SYMBOL_GPL vmlinux 0x52602a61 mbox_client_txdone +EXPORT_SYMBOL_GPL vmlinux 0x52697be9 rdev_set_badblocks +EXPORT_SYMBOL_GPL vmlinux 0x5282b8ad ip6_datagram_send_ctl +EXPORT_SYMBOL_GPL vmlinux 0x52a63c03 __sock_recv_timestamp +EXPORT_SYMBOL_GPL vmlinux 0x52c0d5d8 scatterwalk_bytes_sglen +EXPORT_SYMBOL_GPL vmlinux 0x53036690 bus_find_device +EXPORT_SYMBOL_GPL vmlinux 0x5306410e alarm_start_relative +EXPORT_SYMBOL_GPL vmlinux 0x5335dd11 atomic_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x534aa060 mddev_suspend +EXPORT_SYMBOL_GPL vmlinux 0x5358fc36 ring_buffer_discard_commit +EXPORT_SYMBOL_GPL vmlinux 0x536015be spi_alloc_master +EXPORT_SYMBOL_GPL vmlinux 0x53614269 get_cpu_idle_time_us +EXPORT_SYMBOL_GPL vmlinux 0x53779b31 devm_remove_action +EXPORT_SYMBOL_GPL vmlinux 0x539c37b1 usb_get_urb +EXPORT_SYMBOL_GPL vmlinux 0x53bac056 skb_to_sgvec +EXPORT_SYMBOL_GPL vmlinux 0x53d173d1 extcon_get_edev_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0x53ded643 ping_seq_fops +EXPORT_SYMBOL_GPL vmlinux 0x53e9f4ad fuse_dev_alloc +EXPORT_SYMBOL_GPL vmlinux 0x540d0ff1 fuse_conn_put +EXPORT_SYMBOL_GPL vmlinux 0x541bd60a irq_work_run +EXPORT_SYMBOL_GPL vmlinux 0x5425d145 bit_wait_timeout +EXPORT_SYMBOL_GPL vmlinux 0x54458b56 hrtimer_try_to_cancel +EXPORT_SYMBOL_GPL vmlinux 0x5451d63b crypto_nivaead_type +EXPORT_SYMBOL_GPL vmlinux 0x5460c8d8 fsnotify_get_cookie +EXPORT_SYMBOL_GPL vmlinux 0x546c5565 ppc_tb_freq +EXPORT_SYMBOL_GPL vmlinux 0x5471cf9b srcu_barrier +EXPORT_SYMBOL_GPL vmlinux 0x54740eb7 get_cpu_idle_time +EXPORT_SYMBOL_GPL vmlinux 0x5478d026 get_kernel_pages +EXPORT_SYMBOL_GPL vmlinux 0x547b4ddf spi_master_resume +EXPORT_SYMBOL_GPL vmlinux 0x547e964f regmap_write_async +EXPORT_SYMBOL_GPL vmlinux 0x5481d4f2 gpiod_put_array +EXPORT_SYMBOL_GPL vmlinux 0x549525ef handle_nested_irq +EXPORT_SYMBOL_GPL vmlinux 0x54a87b60 smpboot_unregister_percpu_thread +EXPORT_SYMBOL_GPL vmlinux 0x54afd421 rq_flush_dcache_pages +EXPORT_SYMBOL_GPL vmlinux 0x54b218ed sk_clone_lock +EXPORT_SYMBOL_GPL vmlinux 0x54d46690 uart_parse_earlycon +EXPORT_SYMBOL_GPL vmlinux 0x54d468f1 pm_qos_request_active +EXPORT_SYMBOL_GPL vmlinux 0x550152ef key_type_trusted +EXPORT_SYMBOL_GPL vmlinux 0x5528760f of_get_fb_videomode +EXPORT_SYMBOL_GPL vmlinux 0x553b49a4 cpufreq_get_driver_data +EXPORT_SYMBOL_GPL vmlinux 0x55417264 unregister_vt_notifier +EXPORT_SYMBOL_GPL vmlinux 0x556fe8b7 cleanup_srcu_struct +EXPORT_SYMBOL_GPL vmlinux 0x55784228 regmap_irq_get_virq +EXPORT_SYMBOL_GPL vmlinux 0x557a89b4 blkcipher_walk_phys +EXPORT_SYMBOL_GPL vmlinux 0x55823e7a setup_irq +EXPORT_SYMBOL_GPL vmlinux 0x55a96fab ip6_flush_pending_frames +EXPORT_SYMBOL_GPL vmlinux 0x55c784d8 clockevents_unbind_device +EXPORT_SYMBOL_GPL vmlinux 0x55fb48a5 usb_sg_wait +EXPORT_SYMBOL_GPL vmlinux 0x5611fd76 crypto_alloc_ahash +EXPORT_SYMBOL_GPL vmlinux 0x56256e8a orderly_poweroff +EXPORT_SYMBOL_GPL vmlinux 0x56310925 regulator_mode_to_status +EXPORT_SYMBOL_GPL vmlinux 0x5638f122 pci_num_vf +EXPORT_SYMBOL_GPL vmlinux 0x565b6892 uuid_le_gen +EXPORT_SYMBOL_GPL vmlinux 0x565e496a disk_get_part +EXPORT_SYMBOL_GPL vmlinux 0x566ee58d tps65912_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x5676a5a9 ata_scsi_queuecmd +EXPORT_SYMBOL_GPL vmlinux 0x56809b94 fat_alloc_new_dir +EXPORT_SYMBOL_GPL vmlinux 0x56af2511 ata_eh_qc_complete +EXPORT_SYMBOL_GPL vmlinux 0x56b63670 lzo1x_1_compress +EXPORT_SYMBOL_GPL vmlinux 0x56cdf5a9 kobject_create_and_add +EXPORT_SYMBOL_GPL vmlinux 0x56d697ce cpu_up +EXPORT_SYMBOL_GPL vmlinux 0x56e75d47 klist_node_attached +EXPORT_SYMBOL_GPL vmlinux 0x56f73366 devm_kstrdup +EXPORT_SYMBOL_GPL vmlinux 0x570659cf adp5520_read +EXPORT_SYMBOL_GPL vmlinux 0x570842c7 bpf_prog_select_runtime +EXPORT_SYMBOL_GPL vmlinux 0x5710adfa unregister_pernet_device +EXPORT_SYMBOL_GPL vmlinux 0x57231f45 ring_buffer_record_on +EXPORT_SYMBOL_GPL vmlinux 0x572558a5 ata_std_prereset +EXPORT_SYMBOL_GPL vmlinux 0x572a87e0 regmap_field_write +EXPORT_SYMBOL_GPL vmlinux 0x572ebba1 ata_sff_port_intr +EXPORT_SYMBOL_GPL vmlinux 0x57570d60 ata_dummy_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x5761ede6 pmf_put_function +EXPORT_SYMBOL_GPL vmlinux 0x5763b451 blkg_prfill_rwstat +EXPORT_SYMBOL_GPL vmlinux 0x5790e7a0 pci_unlock_rescan_remove +EXPORT_SYMBOL_GPL vmlinux 0x57918050 dax_fault +EXPORT_SYMBOL_GPL vmlinux 0x57967fbf scsi_internal_device_unblock +EXPORT_SYMBOL_GPL vmlinux 0x579e0bf5 rtnl_unregister_all +EXPORT_SYMBOL_GPL vmlinux 0x57a7e035 usb_free_streams +EXPORT_SYMBOL_GPL vmlinux 0x57c15a62 rio_release_dma +EXPORT_SYMBOL_GPL vmlinux 0x57c39727 kdb_register_flags +EXPORT_SYMBOL_GPL vmlinux 0x57d675a9 relay_flush +EXPORT_SYMBOL_GPL vmlinux 0x57d7c998 pmac_i2c_get_controller +EXPORT_SYMBOL_GPL vmlinux 0x57e4bfb5 pmf_do_functions +EXPORT_SYMBOL_GPL vmlinux 0x57f159e4 dummy_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0x58012a75 of_usb_host_tpl_support +EXPORT_SYMBOL_GPL vmlinux 0x5806ac31 __pm_runtime_set_status +EXPORT_SYMBOL_GPL vmlinux 0x580df861 usb_match_one_id +EXPORT_SYMBOL_GPL vmlinux 0x58104669 sata_link_hardreset +EXPORT_SYMBOL_GPL vmlinux 0x581240e6 __root_device_register +EXPORT_SYMBOL_GPL vmlinux 0x587f65d4 blk_unprep_request +EXPORT_SYMBOL_GPL vmlinux 0x5892f832 release_pmc_hardware +EXPORT_SYMBOL_GPL vmlinux 0x58978070 irq_gc_mask_set_bit +EXPORT_SYMBOL_GPL vmlinux 0x589e4569 syscon_regmap_lookup_by_pdevname +EXPORT_SYMBOL_GPL vmlinux 0x58fe9409 rio_inb_pwrite_handler +EXPORT_SYMBOL_GPL vmlinux 0x59319707 driver_attach +EXPORT_SYMBOL_GPL vmlinux 0x593b0a50 __srcu_read_unlock +EXPORT_SYMBOL_GPL vmlinux 0x5952c175 tpmm_chip_alloc +EXPORT_SYMBOL_GPL vmlinux 0x59573e4f ip6_datagram_connect_v6_only +EXPORT_SYMBOL_GPL vmlinux 0x5960ac1c phy_pm_runtime_forbid +EXPORT_SYMBOL_GPL vmlinux 0x5963a2a6 pci_sriov_get_totalvfs +EXPORT_SYMBOL_GPL vmlinux 0x596dbc48 pm_generic_runtime_suspend +EXPORT_SYMBOL_GPL vmlinux 0x597f1103 vga_default_device +EXPORT_SYMBOL_GPL vmlinux 0x59a0cd9d rdev_clear_badblocks +EXPORT_SYMBOL_GPL vmlinux 0x59c0ad0a mpc8xxx_spi_tx_buf_u16 +EXPORT_SYMBOL_GPL vmlinux 0x59c72ae4 shmem_add_seals +EXPORT_SYMBOL_GPL vmlinux 0x59e2743e call_rcu_bh +EXPORT_SYMBOL_GPL vmlinux 0x59eae699 ring_buffer_read_prepare +EXPORT_SYMBOL_GPL vmlinux 0x59ef64b5 of_property_count_elems_of_size +EXPORT_SYMBOL_GPL vmlinux 0x59f756d7 regmap_exit +EXPORT_SYMBOL_GPL vmlinux 0x5a14486b dma_buf_begin_cpu_access +EXPORT_SYMBOL_GPL vmlinux 0x5a27535f verify_signature +EXPORT_SYMBOL_GPL vmlinux 0x5a37a086 mmc_regulator_set_ocr +EXPORT_SYMBOL_GPL vmlinux 0x5a37bb20 regulator_unregister +EXPORT_SYMBOL_GPL vmlinux 0x5a508853 ehci_handshake +EXPORT_SYMBOL_GPL vmlinux 0x5a5dedee scsi_autopm_put_device +EXPORT_SYMBOL_GPL vmlinux 0x5a63a9f6 phy_create_lookup +EXPORT_SYMBOL_GPL vmlinux 0x5a7bfe41 crypto_probing_notify +EXPORT_SYMBOL_GPL vmlinux 0x5a813cc9 debugfs_create_symlink +EXPORT_SYMBOL_GPL vmlinux 0x5a86fb03 relay_buf_full +EXPORT_SYMBOL_GPL vmlinux 0x5a9e3f7b sdio_f0_writeb +EXPORT_SYMBOL_GPL vmlinux 0x5aa40153 mpc8xxx_spi_rx_buf_u8 +EXPORT_SYMBOL_GPL vmlinux 0x5ad7ea7c blk_queue_bypass_end +EXPORT_SYMBOL_GPL vmlinux 0x5ad80477 pci_find_ext_capability +EXPORT_SYMBOL_GPL vmlinux 0x5b14b354 regulator_get_init_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x5b4672fc of_get_nand_ecc_step_size +EXPORT_SYMBOL_GPL vmlinux 0x5b54ec2c virtio_break_device +EXPORT_SYMBOL_GPL vmlinux 0x5b7192cd of_phy_provider_unregister +EXPORT_SYMBOL_GPL vmlinux 0x5b7a058f ata_sff_drain_fifo +EXPORT_SYMBOL_GPL vmlinux 0x5b7be411 regulator_list_voltage_linear_range +EXPORT_SYMBOL_GPL vmlinux 0x5b89f174 dev_coredumpv +EXPORT_SYMBOL_GPL vmlinux 0x5bb3432b crypto_larval_kill +EXPORT_SYMBOL_GPL vmlinux 0x5bb562c7 ata_qc_complete +EXPORT_SYMBOL_GPL vmlinux 0x5bd0748f crypto_del_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x5bdbac4e rcu_unexpedite_gp +EXPORT_SYMBOL_GPL vmlinux 0x5be3a75a gen_pool_size +EXPORT_SYMBOL_GPL vmlinux 0x5c2286db __audit_inode_child +EXPORT_SYMBOL_GPL vmlinux 0x5c5a1b16 tick_broadcast_control +EXPORT_SYMBOL_GPL vmlinux 0x5c9d7f91 inet6_csk_xmit +EXPORT_SYMBOL_GPL vmlinux 0x5cab3244 sock_prot_inuse_add +EXPORT_SYMBOL_GPL vmlinux 0x5cabdced dev_pm_qos_remove_global_notifier +EXPORT_SYMBOL_GPL vmlinux 0x5cc509a4 nsecs_to_jiffies +EXPORT_SYMBOL_GPL vmlinux 0x5ce70564 pci_disable_sriov +EXPORT_SYMBOL_GPL vmlinux 0x5cf6a7b5 ata_bmdma_post_internal_cmd +EXPORT_SYMBOL_GPL vmlinux 0x5d02cc76 tps6586x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x5d06cf54 nfq_ct_hook +EXPORT_SYMBOL_GPL vmlinux 0x5d12e48f input_event_to_user +EXPORT_SYMBOL_GPL vmlinux 0x5d2fa7d9 devm_extcon_dev_allocate +EXPORT_SYMBOL_GPL vmlinux 0x5d44f580 sysfs_remove_groups +EXPORT_SYMBOL_GPL vmlinux 0x5d51bcf7 scatterwalk_start +EXPORT_SYMBOL_GPL vmlinux 0x5d58c3ae tty_ldisc_ref +EXPORT_SYMBOL_GPL vmlinux 0x5d5e3369 usb_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x5d5e756e add_page_wait_queue +EXPORT_SYMBOL_GPL vmlinux 0x5d66bade trace_event_buffer_reserve +EXPORT_SYMBOL_GPL vmlinux 0x5d75f70d blk_abort_request +EXPORT_SYMBOL_GPL vmlinux 0x5d81cdd2 each_symbol_section +EXPORT_SYMBOL_GPL vmlinux 0x5d88500a get_kernel_page +EXPORT_SYMBOL_GPL vmlinux 0x5da2933c inode_sb_list_add +EXPORT_SYMBOL_GPL vmlinux 0x5da67adc zs_compact +EXPORT_SYMBOL_GPL vmlinux 0x5dc9f422 devm_reset_control_get +EXPORT_SYMBOL_GPL vmlinux 0x5dd04981 transport_class_unregister +EXPORT_SYMBOL_GPL vmlinux 0x5de0262a usb_get_intf +EXPORT_SYMBOL_GPL vmlinux 0x5dee7e2f usb_anchor_urb +EXPORT_SYMBOL_GPL vmlinux 0x5e1acb24 ata_port_pbar_desc +EXPORT_SYMBOL_GPL vmlinux 0x5e49eb2b ata_wait_after_reset +EXPORT_SYMBOL_GPL vmlinux 0x5e515be6 ktime_get_ts64 +EXPORT_SYMBOL_GPL vmlinux 0x5e51cd74 swiotlb_nr_tbl +EXPORT_SYMBOL_GPL vmlinux 0x5e6ccfb1 ata_dev_pair +EXPORT_SYMBOL_GPL vmlinux 0x5e88b42c usb_driver_set_configuration +EXPORT_SYMBOL_GPL vmlinux 0x5ea08fb4 srcu_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x5eacb216 crypto_unregister_rng +EXPORT_SYMBOL_GPL vmlinux 0x5ec70f53 dma_wait_for_async_tx +EXPORT_SYMBOL_GPL vmlinux 0x5eee8d95 pci_ioremap_bar +EXPORT_SYMBOL_GPL vmlinux 0x5f222733 pci_stop_root_bus +EXPORT_SYMBOL_GPL vmlinux 0x5f2a8372 serial8250_do_startup +EXPORT_SYMBOL_GPL vmlinux 0x5f3b52e3 debugfs_create_u16 +EXPORT_SYMBOL_GPL vmlinux 0x5f46e2e6 debugfs_create_x32 +EXPORT_SYMBOL_GPL vmlinux 0x5f695636 pm_runtime_force_resume +EXPORT_SYMBOL_GPL vmlinux 0x5f804474 irq_find_host +EXPORT_SYMBOL_GPL vmlinux 0x5f8e6f5d serial8250_rpm_get +EXPORT_SYMBOL_GPL vmlinux 0x5f9a1f03 uart_handle_cts_change +EXPORT_SYMBOL_GPL vmlinux 0x5fb3c6c2 ping_seq_next +EXPORT_SYMBOL_GPL vmlinux 0x5fddad19 usb_disable_ltm +EXPORT_SYMBOL_GPL vmlinux 0x5fe403ac inet_hashinfo_init +EXPORT_SYMBOL_GPL vmlinux 0x5ff096de i2c_add_numbered_adapter +EXPORT_SYMBOL_GPL vmlinux 0x5ff46641 early_find_capability +EXPORT_SYMBOL_GPL vmlinux 0x603454ab dev_coredumpm +EXPORT_SYMBOL_GPL vmlinux 0x60414861 ipv6_proxy_select_ident +EXPORT_SYMBOL_GPL vmlinux 0x60506751 unmap_kernel_range_noflush +EXPORT_SYMBOL_GPL vmlinux 0x606cebac bsg_register_queue +EXPORT_SYMBOL_GPL vmlinux 0x6094d768 bus_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0x60a13e90 rcu_barrier +EXPORT_SYMBOL_GPL vmlinux 0x60a165ae __dma_request_channel +EXPORT_SYMBOL_GPL vmlinux 0x60a32ea9 pm_power_off +EXPORT_SYMBOL_GPL vmlinux 0x60ad746f blk_mq_free_request +EXPORT_SYMBOL_GPL vmlinux 0x60d317a3 balloon_page_enqueue +EXPORT_SYMBOL_GPL vmlinux 0x610022bf pci_user_read_config_byte +EXPORT_SYMBOL_GPL vmlinux 0x610d6618 dev_set_name +EXPORT_SYMBOL_GPL vmlinux 0x6111b775 dev_pm_qos_hide_latency_tolerance +EXPORT_SYMBOL_GPL vmlinux 0x6127f4eb percpu_ida_for_each_free +EXPORT_SYMBOL_GPL vmlinux 0x614037d4 mnt_drop_write +EXPORT_SYMBOL_GPL vmlinux 0x61988883 skb_splice_bits +EXPORT_SYMBOL_GPL vmlinux 0x61999822 fuse_request_alloc +EXPORT_SYMBOL_GPL vmlinux 0x61a3f8d4 rio_release_outb_dbell +EXPORT_SYMBOL_GPL vmlinux 0x61a90c54 klist_add_head +EXPORT_SYMBOL_GPL vmlinux 0x61baddc0 usb_set_interface +EXPORT_SYMBOL_GPL vmlinux 0x61c16658 blk_queue_rq_timeout +EXPORT_SYMBOL_GPL vmlinux 0x61daed17 ftrace_set_filter +EXPORT_SYMBOL_GPL vmlinux 0x61eaa122 dev_pm_qos_remove_notifier +EXPORT_SYMBOL_GPL vmlinux 0x61f5357d pci_restore_ats_state +EXPORT_SYMBOL_GPL vmlinux 0x61f754cd __mnt_is_readonly +EXPORT_SYMBOL_GPL vmlinux 0x6210299e scatterwalk_ffwd +EXPORT_SYMBOL_GPL vmlinux 0x6216bd73 percpu_ida_destroy +EXPORT_SYMBOL_GPL vmlinux 0x621e365a i2c_new_probed_device +EXPORT_SYMBOL_GPL vmlinux 0x622c7922 register_oom_notifier +EXPORT_SYMBOL_GPL vmlinux 0x62468b4d ata_sff_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x6247cddc crypto_unregister_ahash +EXPORT_SYMBOL_GPL vmlinux 0x625dfe87 crypto_alloc_base +EXPORT_SYMBOL_GPL vmlinux 0x6274b57e mmc_regulator_get_supply +EXPORT_SYMBOL_GPL vmlinux 0x62a63380 usb_debug_root +EXPORT_SYMBOL_GPL vmlinux 0x62b15d29 __fsnotify_parent +EXPORT_SYMBOL_GPL vmlinux 0x62b88430 transport_add_device +EXPORT_SYMBOL_GPL vmlinux 0x62bd5447 regmap_async_complete_cb +EXPORT_SYMBOL_GPL vmlinux 0x62d59c9e trace_seq_putmem_hex +EXPORT_SYMBOL_GPL vmlinux 0x62ec872b pci_walk_bus +EXPORT_SYMBOL_GPL vmlinux 0x62eeeee3 usb_lock_device_for_reset +EXPORT_SYMBOL_GPL vmlinux 0x62f182db posix_acl_create +EXPORT_SYMBOL_GPL vmlinux 0x6320f9d4 ata_sff_pause +EXPORT_SYMBOL_GPL vmlinux 0x6334727b pm_runtime_autosuspend_expiration +EXPORT_SYMBOL_GPL vmlinux 0x633dfac2 pci_disable_rom +EXPORT_SYMBOL_GPL vmlinux 0x635db977 pci_disable_pasid +EXPORT_SYMBOL_GPL vmlinux 0x637d0924 od_register_powersave_bias_handler +EXPORT_SYMBOL_GPL vmlinux 0x6398f899 sk_attach_filter +EXPORT_SYMBOL_GPL vmlinux 0x63c7cf11 inet_putpeer +EXPORT_SYMBOL_GPL vmlinux 0x63dc8e3c __pm_runtime_disable +EXPORT_SYMBOL_GPL vmlinux 0x640363f1 rio_request_mport_dma +EXPORT_SYMBOL_GPL vmlinux 0x6410e160 ktime_mono_to_any +EXPORT_SYMBOL_GPL vmlinux 0x64256424 visitor32 +EXPORT_SYMBOL_GPL vmlinux 0x643d7e75 crypto_shash_digest +EXPORT_SYMBOL_GPL vmlinux 0x6444109f pci_add_dynid +EXPORT_SYMBOL_GPL vmlinux 0x6449bc90 ata_sff_check_status +EXPORT_SYMBOL_GPL vmlinux 0x644e4785 ping_recvmsg +EXPORT_SYMBOL_GPL vmlinux 0x6453f77c pmac_has_backlight_type +EXPORT_SYMBOL_GPL vmlinux 0x6469aa17 ata_do_dev_read_id +EXPORT_SYMBOL_GPL vmlinux 0x6469f6d9 thermal_zone_unbind_cooling_device +EXPORT_SYMBOL_GPL vmlinux 0x6472b5e4 regmap_multi_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x647ad987 cpufreq_cooling_register +EXPORT_SYMBOL_GPL vmlinux 0x648e3025 pci_find_next_ht_capability +EXPORT_SYMBOL_GPL vmlinux 0x649e1c4a usb_remove_hcd +EXPORT_SYMBOL_GPL vmlinux 0x64a2154b vfs_lock_file +EXPORT_SYMBOL_GPL vmlinux 0x64ace16b blkcg_policy_unregister +EXPORT_SYMBOL_GPL vmlinux 0x64b6b82a skcipher_geniv_alloc +EXPORT_SYMBOL_GPL vmlinux 0x65070bce device_set_wakeup_capable +EXPORT_SYMBOL_GPL vmlinux 0x653011b5 ablkcipher_walk_done +EXPORT_SYMBOL_GPL vmlinux 0x65417e01 vfs_fallocate +EXPORT_SYMBOL_GPL vmlinux 0x6542c692 usb_hcd_map_urb_for_dma +EXPORT_SYMBOL_GPL vmlinux 0x655dcce4 mmput +EXPORT_SYMBOL_GPL vmlinux 0x657c6bdf pci_try_reset_function +EXPORT_SYMBOL_GPL vmlinux 0x65a70266 sysfs_update_group +EXPORT_SYMBOL_GPL vmlinux 0x65b40993 balloon_page_dequeue +EXPORT_SYMBOL_GPL vmlinux 0x65bbbc78 schedule_hrtimeout_range +EXPORT_SYMBOL_GPL vmlinux 0x65cc3da2 ipv6_opt_accepted +EXPORT_SYMBOL_GPL vmlinux 0x65ccb6f0 call_netevent_notifiers +EXPORT_SYMBOL_GPL vmlinux 0x65cffefc pci_scan_child_bus +EXPORT_SYMBOL_GPL vmlinux 0x65f92964 rtnl_af_register +EXPORT_SYMBOL_GPL vmlinux 0x65fb3159 i2c_recover_bus +EXPORT_SYMBOL_GPL vmlinux 0x661601de sprint_symbol +EXPORT_SYMBOL_GPL vmlinux 0x662e4691 regcache_cache_only +EXPORT_SYMBOL_GPL vmlinux 0x663693a2 crypto_tfm_in_queue +EXPORT_SYMBOL_GPL vmlinux 0x6636c3c9 irq_set_vcpu_affinity +EXPORT_SYMBOL_GPL vmlinux 0x664182de crypto_alloc_rng +EXPORT_SYMBOL_GPL vmlinux 0x667d393e hwrng_register +EXPORT_SYMBOL_GPL vmlinux 0x668402aa crypto_put_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x668bb3a9 crypto_init_spawn2 +EXPORT_SYMBOL_GPL vmlinux 0x66afb53b unix_table_lock +EXPORT_SYMBOL_GPL vmlinux 0x66c39320 adp5520_write +EXPORT_SYMBOL_GPL vmlinux 0x66c6b8a7 tcp_ca_get_name_by_key +EXPORT_SYMBOL_GPL vmlinux 0x66d87d38 symbol_put_addr +EXPORT_SYMBOL_GPL vmlinux 0x66f952e0 fwnode_property_read_string +EXPORT_SYMBOL_GPL vmlinux 0x670a725e devfreq_event_reset_event +EXPORT_SYMBOL_GPL vmlinux 0x67190945 virtqueue_get_vring_size +EXPORT_SYMBOL_GPL vmlinux 0x673b5656 bpf_prog_realloc +EXPORT_SYMBOL_GPL vmlinux 0x673bf297 reset_control_get +EXPORT_SYMBOL_GPL vmlinux 0x674e13e1 public_key_destroy +EXPORT_SYMBOL_GPL vmlinux 0x6793de8a crypto_unregister_aeads +EXPORT_SYMBOL_GPL vmlinux 0x67941e2e cpci_hp_unregister_bus +EXPORT_SYMBOL_GPL vmlinux 0x67947d9a phy_power_on +EXPORT_SYMBOL_GPL vmlinux 0x67955ce6 profile_hits +EXPORT_SYMBOL_GPL vmlinux 0x67b011ab virtqueue_add_inbuf +EXPORT_SYMBOL_GPL vmlinux 0x67ffe2ac devm_phy_get +EXPORT_SYMBOL_GPL vmlinux 0x680017ae spi_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x6812cf8d __tracepoint_rpm_idle +EXPORT_SYMBOL_GPL vmlinux 0x6835d1d4 device_add_property_set +EXPORT_SYMBOL_GPL vmlinux 0x6837fceb kill_pid_info_as_cred +EXPORT_SYMBOL_GPL vmlinux 0x6839f11a blk_lld_busy +EXPORT_SYMBOL_GPL vmlinux 0x68509613 powercap_register_zone +EXPORT_SYMBOL_GPL vmlinux 0x6868abe1 sata_scr_write_flush +EXPORT_SYMBOL_GPL vmlinux 0x68708724 pci_set_pcie_reset_state +EXPORT_SYMBOL_GPL vmlinux 0x687e5a72 ata_pci_sff_activate_host +EXPORT_SYMBOL_GPL vmlinux 0x6892e264 ata_dev_next +EXPORT_SYMBOL_GPL vmlinux 0x68956406 static_key_slow_dec +EXPORT_SYMBOL_GPL vmlinux 0x690dcae5 regulator_get_voltage +EXPORT_SYMBOL_GPL vmlinux 0x6918ec76 arizona_of_get_type +EXPORT_SYMBOL_GPL vmlinux 0x692367e3 irq_domain_xlate_onecell +EXPORT_SYMBOL_GPL vmlinux 0x6923ce63 irq_work_sync +EXPORT_SYMBOL_GPL vmlinux 0x69268976 rio_release_inb_pwrite +EXPORT_SYMBOL_GPL vmlinux 0x692c6531 of_get_nand_ecc_strength +EXPORT_SYMBOL_GPL vmlinux 0x69369437 pm_generic_freeze +EXPORT_SYMBOL_GPL vmlinux 0x693c623a tty_buffer_unlock_exclusive +EXPORT_SYMBOL_GPL vmlinux 0x69447467 ring_buffer_write +EXPORT_SYMBOL_GPL vmlinux 0x6945725e mpi_read_raw_data +EXPORT_SYMBOL_GPL vmlinux 0x69564dcb disk_map_sector_rcu +EXPORT_SYMBOL_GPL vmlinux 0x69638749 inet_csk_route_child_sock +EXPORT_SYMBOL_GPL vmlinux 0x6972718d tc3589x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x69777b58 skb_zerocopy +EXPORT_SYMBOL_GPL vmlinux 0x697c5d0d tracing_snapshot_alloc +EXPORT_SYMBOL_GPL vmlinux 0x697cbbb4 threads_per_core +EXPORT_SYMBOL_GPL vmlinux 0x69819be4 module_mutex +EXPORT_SYMBOL_GPL vmlinux 0x6984ba5f tun_get_socket +EXPORT_SYMBOL_GPL vmlinux 0x698a899f ring_buffer_peek +EXPORT_SYMBOL_GPL vmlinux 0x69953b9c kernfs_get +EXPORT_SYMBOL_GPL vmlinux 0x69a2a5a1 rio_dev_put +EXPORT_SYMBOL_GPL vmlinux 0x69ab121d __srcu_read_lock +EXPORT_SYMBOL_GPL vmlinux 0x69b4331b crypto_rng_reset +EXPORT_SYMBOL_GPL vmlinux 0x69c256d1 ata_ehi_push_desc +EXPORT_SYMBOL_GPL vmlinux 0x69ed3809 trace_event_buffer_commit +EXPORT_SYMBOL_GPL vmlinux 0x69f2a165 class_compat_remove_link +EXPORT_SYMBOL_GPL vmlinux 0x69fdcf20 _submit_bh +EXPORT_SYMBOL_GPL vmlinux 0x69ff58d8 regulator_list_hardware_vsel +EXPORT_SYMBOL_GPL vmlinux 0x6a492ace sdio_disable_func +EXPORT_SYMBOL_GPL vmlinux 0x6a4b6cb5 dequeue_signal +EXPORT_SYMBOL_GPL vmlinux 0x6a4f623b mmu_notifier_synchronize +EXPORT_SYMBOL_GPL vmlinux 0x6a59c32d to_of_pinfo +EXPORT_SYMBOL_GPL vmlinux 0x6a5fb566 rcu_sched_force_quiescent_state +EXPORT_SYMBOL_GPL vmlinux 0x6a8441be cpci_hp_start +EXPORT_SYMBOL_GPL vmlinux 0x6ab3781f trace_seq_vprintf +EXPORT_SYMBOL_GPL vmlinux 0x6ab739a4 usb_create_shared_hcd +EXPORT_SYMBOL_GPL vmlinux 0x6accad95 task_cgroup_path +EXPORT_SYMBOL_GPL vmlinux 0x6afb64e6 tcp_slow_start +EXPORT_SYMBOL_GPL vmlinux 0x6b161cb7 crypto_spawn_tfm +EXPORT_SYMBOL_GPL vmlinux 0x6b21e515 handle_level_irq +EXPORT_SYMBOL_GPL vmlinux 0x6b29a1fa ring_buffer_event_length +EXPORT_SYMBOL_GPL vmlinux 0x6b39953a device_create_file +EXPORT_SYMBOL_GPL vmlinux 0x6b5b79bd devm_hwmon_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x6b6868ae wm8400_reset_codec_reg_cache +EXPORT_SYMBOL_GPL vmlinux 0x6b81c38b power_supply_unreg_notifier +EXPORT_SYMBOL_GPL vmlinux 0x6b978138 ata_sff_busy_sleep +EXPORT_SYMBOL_GPL vmlinux 0x6bb303bc extcon_dev_unregister +EXPORT_SYMBOL_GPL vmlinux 0x6bb3b122 serial8250_do_set_mctrl +EXPORT_SYMBOL_GPL vmlinux 0x6bda5815 dax_truncate_page +EXPORT_SYMBOL_GPL vmlinux 0x6bf190ea ata_sff_dma_pause +EXPORT_SYMBOL_GPL vmlinux 0x6c07d933 add_uevent_var +EXPORT_SYMBOL_GPL vmlinux 0x6c209eab __alloc_percpu_gfp +EXPORT_SYMBOL_GPL vmlinux 0x6c367055 led_trigger_rename_static +EXPORT_SYMBOL_GPL vmlinux 0x6c3d98db hwmon_device_register_with_groups +EXPORT_SYMBOL_GPL vmlinux 0x6c4b6684 reset_control_assert +EXPORT_SYMBOL_GPL vmlinux 0x6c530757 pci_restore_msi_state +EXPORT_SYMBOL_GPL vmlinux 0x6c60e893 rio_mport_read_config_8 +EXPORT_SYMBOL_GPL vmlinux 0x6c749afe __tracepoint_block_unplug +EXPORT_SYMBOL_GPL vmlinux 0x6ca4bf88 async_synchronize_full_domain +EXPORT_SYMBOL_GPL vmlinux 0x6cb23f78 devm_regulator_put +EXPORT_SYMBOL_GPL vmlinux 0x6cb7cf64 regcache_drop_region +EXPORT_SYMBOL_GPL vmlinux 0x6ccdd264 __get_vm_area +EXPORT_SYMBOL_GPL vmlinux 0x6cd21997 ata_tf_to_fis +EXPORT_SYMBOL_GPL vmlinux 0x6cfc606f cpufreq_freq_attr_scaling_available_freqs +EXPORT_SYMBOL_GPL vmlinux 0x6d037b93 regmap_irq_get_domain +EXPORT_SYMBOL_GPL vmlinux 0x6d0f9152 rtc_class_close +EXPORT_SYMBOL_GPL vmlinux 0x6d26c1f7 cpufreq_generic_init +EXPORT_SYMBOL_GPL vmlinux 0x6d26ede0 netlink_remove_tap +EXPORT_SYMBOL_GPL vmlinux 0x6d2fc5a6 net_namespace_list +EXPORT_SYMBOL_GPL vmlinux 0x6d309861 regulator_set_voltage_time +EXPORT_SYMBOL_GPL vmlinux 0x6d5e62b7 irq_map_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x6dbdfd9d rio_map_inb_region +EXPORT_SYMBOL_GPL vmlinux 0x6e04a077 usb_bind_phy +EXPORT_SYMBOL_GPL vmlinux 0x6e22c81c sata_scr_write +EXPORT_SYMBOL_GPL vmlinux 0x6e32a2ea sysfs_unmerge_group +EXPORT_SYMBOL_GPL vmlinux 0x6e345b42 ata_timing_compute +EXPORT_SYMBOL_GPL vmlinux 0x6e37ebcc __dev_forward_skb +EXPORT_SYMBOL_GPL vmlinux 0x6e4564c3 blkg_prfill_stat +EXPORT_SYMBOL_GPL vmlinux 0x6e49561c usb_hcd_pci_remove +EXPORT_SYMBOL_GPL vmlinux 0x6e51afc8 percpu_ref_kill_and_confirm +EXPORT_SYMBOL_GPL vmlinux 0x6e542aca rhashtable_walk_exit +EXPORT_SYMBOL_GPL vmlinux 0x6e5ccf85 alarm_restart +EXPORT_SYMBOL_GPL vmlinux 0x6e5e0075 crypto_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x6e7fc543 ata_cable_40wire +EXPORT_SYMBOL_GPL vmlinux 0x6e89a560 regmap_irq_chip_get_base +EXPORT_SYMBOL_GPL vmlinux 0x6e912680 mmc_get_ext_csd +EXPORT_SYMBOL_GPL vmlinux 0x6eebf6a0 save_stack_trace_tsk +EXPORT_SYMBOL_GPL vmlinux 0x6f079de2 tcp_cong_avoid_ai +EXPORT_SYMBOL_GPL vmlinux 0x6f09bf80 __rtnl_link_register +EXPORT_SYMBOL_GPL vmlinux 0x6f1ee69e kgdb_unregister_io_module +EXPORT_SYMBOL_GPL vmlinux 0x6f64f9bd usb_ifnum_to_if +EXPORT_SYMBOL_GPL vmlinux 0x6f795b7c spi_finalize_current_message +EXPORT_SYMBOL_GPL vmlinux 0x6f8bba7c platform_device_add_data +EXPORT_SYMBOL_GPL vmlinux 0x6f945c8c __find_linux_pte_or_hugepte +EXPORT_SYMBOL_GPL vmlinux 0x6fa30c4a handle_fasteoi_irq +EXPORT_SYMBOL_GPL vmlinux 0x6fcc1200 blocking_notifier_chain_cond_register +EXPORT_SYMBOL_GPL vmlinux 0x6fe3d8cf ktime_add_safe +EXPORT_SYMBOL_GPL vmlinux 0x6ff5832f platform_device_del +EXPORT_SYMBOL_GPL vmlinux 0x6ff607b6 crypto_get_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x70067119 devm_add_action +EXPORT_SYMBOL_GPL vmlinux 0x70258e3f mbox_controller_unregister +EXPORT_SYMBOL_GPL vmlinux 0x7054d4a2 pm_relax +EXPORT_SYMBOL_GPL vmlinux 0x706e5081 pci_find_next_ext_capability +EXPORT_SYMBOL_GPL vmlinux 0x707ff1bb ata_xfer_mask2mode +EXPORT_SYMBOL_GPL vmlinux 0x708c1736 virtqueue_poll +EXPORT_SYMBOL_GPL vmlinux 0x70955a01 component_master_del +EXPORT_SYMBOL_GPL vmlinux 0x70b5a87a disable_kprobe +EXPORT_SYMBOL_GPL vmlinux 0x70bad4a4 rhashtable_walk_next +EXPORT_SYMBOL_GPL vmlinux 0x70bb651d __tracepoint_block_rq_remap +EXPORT_SYMBOL_GPL vmlinux 0x70cf032f usb_hcd_irq +EXPORT_SYMBOL_GPL vmlinux 0x70d4d8c1 pci_ignore_hotplug +EXPORT_SYMBOL_GPL vmlinux 0x70d615d4 pm_generic_restore_noirq +EXPORT_SYMBOL_GPL vmlinux 0x70dc66d3 pm_generic_thaw_noirq +EXPORT_SYMBOL_GPL vmlinux 0x710c73b6 crypto_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x711e39c7 sysfs_remove_group +EXPORT_SYMBOL_GPL vmlinux 0x716265c7 debugfs_initialized +EXPORT_SYMBOL_GPL vmlinux 0x716626df sdio_readl +EXPORT_SYMBOL_GPL vmlinux 0x7189339b fb_deferred_io_open +EXPORT_SYMBOL_GPL vmlinux 0x7189d1cd pm_runtime_set_autosuspend_delay +EXPORT_SYMBOL_GPL vmlinux 0x718f5d9d blk_rq_check_limits +EXPORT_SYMBOL_GPL vmlinux 0x7191a13a i2c_new_dummy +EXPORT_SYMBOL_GPL vmlinux 0x7194373f ip6_redirect +EXPORT_SYMBOL_GPL vmlinux 0x71a95898 regmap_update_bits_check +EXPORT_SYMBOL_GPL vmlinux 0x71bb122f pci_hp_deregister +EXPORT_SYMBOL_GPL vmlinux 0x71dc9998 crypto_il_tab +EXPORT_SYMBOL_GPL vmlinux 0x72049410 platform_device_register_full +EXPORT_SYMBOL_GPL vmlinux 0x72067912 key_type_asymmetric +EXPORT_SYMBOL_GPL vmlinux 0x72515d5a snprint_stack_trace +EXPORT_SYMBOL_GPL vmlinux 0x72741f25 trace_vbprintk +EXPORT_SYMBOL_GPL vmlinux 0x727836b0 power_supply_unregister +EXPORT_SYMBOL_GPL vmlinux 0x7278d328 all_vm_events +EXPORT_SYMBOL_GPL vmlinux 0x728dc134 cpufreq_governor_dbs +EXPORT_SYMBOL_GPL vmlinux 0x7290007e crypto_larval_alloc +EXPORT_SYMBOL_GPL vmlinux 0x72a45983 xfrm_inner_extract_output +EXPORT_SYMBOL_GPL vmlinux 0x72b397e8 extcon_update_state +EXPORT_SYMBOL_GPL vmlinux 0x72de2ce8 __pci_reset_function +EXPORT_SYMBOL_GPL vmlinux 0x72f0370c tty_port_register_device +EXPORT_SYMBOL_GPL vmlinux 0x72f2f81c usb_gen_phy_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x72f47d20 alarm_forward_now +EXPORT_SYMBOL_GPL vmlinux 0x7305373e of_pci_dma_configure +EXPORT_SYMBOL_GPL vmlinux 0x73122c49 virtqueue_kick_prepare +EXPORT_SYMBOL_GPL vmlinux 0x7335cab3 stmpe_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x73510609 fl6_update_dst +EXPORT_SYMBOL_GPL vmlinux 0x735b84e3 request_firmware_direct +EXPORT_SYMBOL_GPL vmlinux 0x7360d9ed stmpe_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x737e1d7d pcie_bus_configure_settings +EXPORT_SYMBOL_GPL vmlinux 0x738f4905 do_unbind_con_driver +EXPORT_SYMBOL_GPL vmlinux 0x739aa1a1 pmac_i2c_setmode +EXPORT_SYMBOL_GPL vmlinux 0x73a48b4a ata_sff_std_ports +EXPORT_SYMBOL_GPL vmlinux 0x73b98231 asymmetric_key_generate_id +EXPORT_SYMBOL_GPL vmlinux 0x73babde5 arizona_dev_exit +EXPORT_SYMBOL_GPL vmlinux 0x73c832f2 ata_dev_classify +EXPORT_SYMBOL_GPL vmlinux 0x73c90bc2 spi_get_next_queued_message +EXPORT_SYMBOL_GPL vmlinux 0x73d69364 ring_buffer_change_overwrite +EXPORT_SYMBOL_GPL vmlinux 0x73fc0e0d class_dev_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x740ce021 blk_rq_unprep_clone +EXPORT_SYMBOL_GPL vmlinux 0x74355851 crypto_register_shash +EXPORT_SYMBOL_GPL vmlinux 0x743a165e ata_pack_xfermask +EXPORT_SYMBOL_GPL vmlinux 0x74410212 rio_mport_read_config_16 +EXPORT_SYMBOL_GPL vmlinux 0x74519b51 of_scan_bus +EXPORT_SYMBOL_GPL vmlinux 0x7458230d crypto_ahash_walk_first +EXPORT_SYMBOL_GPL vmlinux 0x7464ea38 dev_pm_qos_add_global_notifier +EXPORT_SYMBOL_GPL vmlinux 0x746c6e1e pm_generic_poweroff_noirq +EXPORT_SYMBOL_GPL vmlinux 0x748d801a pcap_adc_sync +EXPORT_SYMBOL_GPL vmlinux 0x74b5ea68 lcm_not_zero +EXPORT_SYMBOL_GPL vmlinux 0x74b6c27c tty_register_device_attr +EXPORT_SYMBOL_GPL vmlinux 0x74baf17a tracing_is_on +EXPORT_SYMBOL_GPL vmlinux 0x74bfcd32 ipv4_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x74ce5cd2 dax_clear_blocks +EXPORT_SYMBOL_GPL vmlinux 0x74ed3d39 of_dma_simple_xlate +EXPORT_SYMBOL_GPL vmlinux 0x74f33994 crypto_grab_spawn +EXPORT_SYMBOL_GPL vmlinux 0x7500b837 pci_create_slot +EXPORT_SYMBOL_GPL vmlinux 0x7522f3ba irq_modify_status +EXPORT_SYMBOL_GPL vmlinux 0x752401a7 sysfs_remove_mount_point +EXPORT_SYMBOL_GPL vmlinux 0x754c9fca usb_set_configuration +EXPORT_SYMBOL_GPL vmlinux 0x756c11ae attribute_container_register +EXPORT_SYMBOL_GPL vmlinux 0x7579cea5 crypto_aead_setauthsize +EXPORT_SYMBOL_GPL vmlinux 0x757bf4a6 n_tty_inherit_ops +EXPORT_SYMBOL_GPL vmlinux 0x758a782e blk_fill_rwbs +EXPORT_SYMBOL_GPL vmlinux 0x75c2b9f1 memalloc_socks +EXPORT_SYMBOL_GPL vmlinux 0x75c72c05 aead_geniv_init +EXPORT_SYMBOL_GPL vmlinux 0x75d13bcd wm5102_i2c_regmap +EXPORT_SYMBOL_GPL vmlinux 0x75d17d0b pmac_i2c_open +EXPORT_SYMBOL_GPL vmlinux 0x75dbf69b check_media_bay +EXPORT_SYMBOL_GPL vmlinux 0x75df507c thermal_of_cooling_device_register +EXPORT_SYMBOL_GPL vmlinux 0x75e75baa of_address_to_resource +EXPORT_SYMBOL_GPL vmlinux 0x75f2a044 usb_wait_anchor_empty_timeout +EXPORT_SYMBOL_GPL vmlinux 0x75f86a9a kernfs_find_and_get_ns +EXPORT_SYMBOL_GPL vmlinux 0x75fae1c9 serial8250_request_dma +EXPORT_SYMBOL_GPL vmlinux 0x762c0858 klist_prev +EXPORT_SYMBOL_GPL vmlinux 0x762ce64e tty_encode_baud_rate +EXPORT_SYMBOL_GPL vmlinux 0x7633c0b0 of_gen_pool_get +EXPORT_SYMBOL_GPL vmlinux 0x7634ae6a sdio_set_block_size +EXPORT_SYMBOL_GPL vmlinux 0x76363233 usb_reset_endpoint +EXPORT_SYMBOL_GPL vmlinux 0x7636596b unregister_virtio_device +EXPORT_SYMBOL_GPL vmlinux 0x763ffd28 of_property_read_u8_array +EXPORT_SYMBOL_GPL vmlinux 0x7643356a pci_remove_root_bus +EXPORT_SYMBOL_GPL vmlinux 0x7651234e blk_set_queue_dying +EXPORT_SYMBOL_GPL vmlinux 0x76633f80 pci_disable_pcie_error_reporting +EXPORT_SYMBOL_GPL vmlinux 0x767565bc blkcg_policy_register +EXPORT_SYMBOL_GPL vmlinux 0x7681946c unregister_pm_notifier +EXPORT_SYMBOL_GPL vmlinux 0x7689025d perf_event_disable +EXPORT_SYMBOL_GPL vmlinux 0x768c3d0b regmap_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0x76a3e3f8 device_add +EXPORT_SYMBOL_GPL vmlinux 0x76aa412e rio_request_outb_dbell +EXPORT_SYMBOL_GPL vmlinux 0x76ab1e5f vfs_kern_mount +EXPORT_SYMBOL_GPL vmlinux 0x76c394d5 devm_regulator_bulk_get +EXPORT_SYMBOL_GPL vmlinux 0x76c3bc22 of_thermal_get_trip_points +EXPORT_SYMBOL_GPL vmlinux 0x7703ac6a kernfs_put +EXPORT_SYMBOL_GPL vmlinux 0x77060fc0 class_interface_register +EXPORT_SYMBOL_GPL vmlinux 0x770a701e rio_mport_chk_dev_access +EXPORT_SYMBOL_GPL vmlinux 0x770cf981 tpm_send +EXPORT_SYMBOL_GPL vmlinux 0x7729cbdd task_handoff_register +EXPORT_SYMBOL_GPL vmlinux 0x7735c5ee fuse_sync_release +EXPORT_SYMBOL_GPL vmlinux 0x77409323 ata_sff_data_xfer32 +EXPORT_SYMBOL_GPL vmlinux 0x7754bc11 dm_hold +EXPORT_SYMBOL_GPL vmlinux 0x779408db pcibios_alloc_controller +EXPORT_SYMBOL_GPL vmlinux 0x77afe8ef gpiod_set_value +EXPORT_SYMBOL_GPL vmlinux 0x77b450a3 __gpiod_get_index +EXPORT_SYMBOL_GPL vmlinux 0x77cdee7f lp8788_read_multi_bytes +EXPORT_SYMBOL_GPL vmlinux 0x77ecdac0 rtc_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x77f8f052 input_ff_erase +EXPORT_SYMBOL_GPL vmlinux 0x77fb41e6 tps6586x_write +EXPORT_SYMBOL_GPL vmlinux 0x781f5bd1 pwm_set_chip_data +EXPORT_SYMBOL_GPL vmlinux 0x782e1680 gov_queue_work +EXPORT_SYMBOL_GPL vmlinux 0x784b5e58 rt_mutex_lock_interruptible +EXPORT_SYMBOL_GPL vmlinux 0x786bf1d2 cpu_add_dev_attr +EXPORT_SYMBOL_GPL vmlinux 0x78ae8175 smp_call_function_single_async +EXPORT_SYMBOL_GPL vmlinux 0x78b7fc38 ata_pio_need_iordy +EXPORT_SYMBOL_GPL vmlinux 0x78c407cb ipv6_find_tlv +EXPORT_SYMBOL_GPL vmlinux 0x78f7a47f call_filter_check_discard +EXPORT_SYMBOL_GPL vmlinux 0x7913741d __tracepoint_mc_event +EXPORT_SYMBOL_GPL vmlinux 0x7944e0fc tracing_off +EXPORT_SYMBOL_GPL vmlinux 0x794b7271 orderly_reboot +EXPORT_SYMBOL_GPL vmlinux 0x796c2d48 dm_get_md +EXPORT_SYMBOL_GPL vmlinux 0x79a902ea sock_diag_check_cookie +EXPORT_SYMBOL_GPL vmlinux 0x79c5fc20 kthread_park +EXPORT_SYMBOL_GPL vmlinux 0x79c6d252 pmac_i2c_match_adapter +EXPORT_SYMBOL_GPL vmlinux 0x79d54d88 usb_hcd_end_port_resume +EXPORT_SYMBOL_GPL vmlinux 0x79defbe1 kthread_should_park +EXPORT_SYMBOL_GPL vmlinux 0x79ecf5b4 edac_get_sysfs_subsys +EXPORT_SYMBOL_GPL vmlinux 0x79f1608a rdev_get_id +EXPORT_SYMBOL_GPL vmlinux 0x79f41d5b try_get_online_cpus +EXPORT_SYMBOL_GPL vmlinux 0x7a29e5f0 trace_seq_bprintf +EXPORT_SYMBOL_GPL vmlinux 0x7a2e4b44 ezx_pcap_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x7a340313 bd_link_disk_holder +EXPORT_SYMBOL_GPL vmlinux 0x7a3df8b4 platform_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x7a537b22 blkdev_read_iter +EXPORT_SYMBOL_GPL vmlinux 0x7a765a1f tty_perform_flush +EXPORT_SYMBOL_GPL vmlinux 0x7a8a323c security_inode_setattr +EXPORT_SYMBOL_GPL vmlinux 0x7a944007 rcu_idle_enter +EXPORT_SYMBOL_GPL vmlinux 0x7aa2b69c bus_remove_file +EXPORT_SYMBOL_GPL vmlinux 0x7ab3ca18 eventfd_ctx_read +EXPORT_SYMBOL_GPL vmlinux 0x7ab59680 srcu_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0x7aca37a9 uhci_reset_hc +EXPORT_SYMBOL_GPL vmlinux 0x7ad656f9 br_fdb_test_addr_hook +EXPORT_SYMBOL_GPL vmlinux 0x7b0f1ab3 ring_buffer_free_read_page +EXPORT_SYMBOL_GPL vmlinux 0x7b15752f crypto_alloc_ablkcipher +EXPORT_SYMBOL_GPL vmlinux 0x7b1d544d edac_handler_set +EXPORT_SYMBOL_GPL vmlinux 0x7b309f87 __bpf_prog_free +EXPORT_SYMBOL_GPL vmlinux 0x7b482627 da9052_request_irq +EXPORT_SYMBOL_GPL vmlinux 0x7b4994b9 usb_queue_reset_device +EXPORT_SYMBOL_GPL vmlinux 0x7b735670 relay_subbufs_consumed +EXPORT_SYMBOL_GPL vmlinux 0x7b9b49e6 list_lru_walk_node +EXPORT_SYMBOL_GPL vmlinux 0x7ba4c010 tps65912_clear_bits +EXPORT_SYMBOL_GPL vmlinux 0x7bca4e03 inet_csk_route_req +EXPORT_SYMBOL_GPL vmlinux 0x7bd5875d unregister_jprobe +EXPORT_SYMBOL_GPL vmlinux 0x7c346357 pkey_algo +EXPORT_SYMBOL_GPL vmlinux 0x7c43a462 component_master_add +EXPORT_SYMBOL_GPL vmlinux 0x7c466831 usb_hub_clear_tt_buffer +EXPORT_SYMBOL_GPL vmlinux 0x7c70f1c8 devm_rtc_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x7c71fcd4 inet_unhash +EXPORT_SYMBOL_GPL vmlinux 0x7c985486 wm5110_patch +EXPORT_SYMBOL_GPL vmlinux 0x7cb9b049 xfrm_audit_state_replay_overflow +EXPORT_SYMBOL_GPL vmlinux 0x7cd6f042 cpufreq_get_current_driver +EXPORT_SYMBOL_GPL vmlinux 0x7ce4ba22 dev_attr_unload_heads +EXPORT_SYMBOL_GPL vmlinux 0x7ceaf0d5 generic_handle_irq +EXPORT_SYMBOL_GPL vmlinux 0x7ceeba62 fb_bl_default_curve +EXPORT_SYMBOL_GPL vmlinux 0x7cefd8b7 debugfs_create_x64 +EXPORT_SYMBOL_GPL vmlinux 0x7cf88e73 disk_part_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x7d0c6a25 cpufreq_cooling_unregister +EXPORT_SYMBOL_GPL vmlinux 0x7d10c340 dev_attr_em_message +EXPORT_SYMBOL_GPL vmlinux 0x7d2a08b0 ahash_attr_alg +EXPORT_SYMBOL_GPL vmlinux 0x7d3828d1 kern_mount_data +EXPORT_SYMBOL_GPL vmlinux 0x7d59dd46 pm_wq +EXPORT_SYMBOL_GPL vmlinux 0x7dab26b6 wm831x_isinkv_values +EXPORT_SYMBOL_GPL vmlinux 0x7dccc4eb ip_route_output_flow +EXPORT_SYMBOL_GPL vmlinux 0x7dd12fac register_kprobe +EXPORT_SYMBOL_GPL vmlinux 0x7dda30af unregister_tracepoint_module_notifier +EXPORT_SYMBOL_GPL vmlinux 0x7dde5cce rtc_irq_set_state +EXPORT_SYMBOL_GPL vmlinux 0x7df825dd handle_mm_fault +EXPORT_SYMBOL_GPL vmlinux 0x7e04e91c virtqueue_notify +EXPORT_SYMBOL_GPL vmlinux 0x7e17ba7b klist_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0x7e2f9cbe device_remove_file +EXPORT_SYMBOL_GPL vmlinux 0x7e34e046 regmap_get_device +EXPORT_SYMBOL_GPL vmlinux 0x7e64181d usb_calc_bus_time +EXPORT_SYMBOL_GPL vmlinux 0x7e9eb1d2 led_trigger_unregister_simple +EXPORT_SYMBOL_GPL vmlinux 0x7eaeed6a shmem_get_seals +EXPORT_SYMBOL_GPL vmlinux 0x7ecf8050 proc_mkdir_data +EXPORT_SYMBOL_GPL vmlinux 0x7ee31ed5 sata_link_scr_lpm +EXPORT_SYMBOL_GPL vmlinux 0x7f008202 btree_lookup +EXPORT_SYMBOL_GPL vmlinux 0x7f2786bc fuse_abort_conn +EXPORT_SYMBOL_GPL vmlinux 0x7f3c72c1 pci_check_and_unmask_intx +EXPORT_SYMBOL_GPL vmlinux 0x7f43fdc2 class_unregister +EXPORT_SYMBOL_GPL vmlinux 0x7f531986 gpiod_set_array_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x7f5a883a ata_sas_sync_probe +EXPORT_SYMBOL_GPL vmlinux 0x7f7bc710 klist_next +EXPORT_SYMBOL_GPL vmlinux 0x7fad5ca3 ata_std_bios_param +EXPORT_SYMBOL_GPL vmlinux 0x7fbe6531 of_dma_controller_free +EXPORT_SYMBOL_GPL vmlinux 0x7fd347c0 find_get_pid +EXPORT_SYMBOL_GPL vmlinux 0x7fd74579 md_rdev_clear +EXPORT_SYMBOL_GPL vmlinux 0x801bd241 ata_pci_sff_prepare_host +EXPORT_SYMBOL_GPL vmlinux 0x803bfd1f regulator_set_mode +EXPORT_SYMBOL_GPL vmlinux 0x805b9d6a dma_run_dependencies +EXPORT_SYMBOL_GPL vmlinux 0x806311e9 unregister_kretprobes +EXPORT_SYMBOL_GPL vmlinux 0x8065a4fc mmu_notifier_call_srcu +EXPORT_SYMBOL_GPL vmlinux 0x808d2129 thermal_zone_get_temp +EXPORT_SYMBOL_GPL vmlinux 0x808ec1a3 crypto_alg_tested +EXPORT_SYMBOL_GPL vmlinux 0x80977722 dm_path_uevent +EXPORT_SYMBOL_GPL vmlinux 0x80a3936b devm_kmemdup +EXPORT_SYMBOL_GPL vmlinux 0x80a5ad97 of_dma_router_register +EXPORT_SYMBOL_GPL vmlinux 0x80c68137 nf_log_buf_close +EXPORT_SYMBOL_GPL vmlinux 0x80d5e57a mpi_free +EXPORT_SYMBOL_GPL vmlinux 0x80f05026 hvc_instantiate +EXPORT_SYMBOL_GPL vmlinux 0x80f3268f __trace_printk +EXPORT_SYMBOL_GPL vmlinux 0x80f34247 crypto_ablkcipher_type +EXPORT_SYMBOL_GPL vmlinux 0x810db522 cpufreq_freq_attr_scaling_boost_freqs +EXPORT_SYMBOL_GPL vmlinux 0x8110e1da i2c_generic_gpio_recovery +EXPORT_SYMBOL_GPL vmlinux 0x8114467b cn_netlink_send_mult +EXPORT_SYMBOL_GPL vmlinux 0x8116928b pci_cfg_access_trylock +EXPORT_SYMBOL_GPL vmlinux 0x811dc334 usb_unregister_notify +EXPORT_SYMBOL_GPL vmlinux 0x8149ea54 ata_timing_find_mode +EXPORT_SYMBOL_GPL vmlinux 0x815fa112 gpiod_set_raw_value +EXPORT_SYMBOL_GPL vmlinux 0x8163770f blkcipher_walk_virt +EXPORT_SYMBOL_GPL vmlinux 0x818081ed usb_ep0_reinit +EXPORT_SYMBOL_GPL vmlinux 0x81969009 pwm_put +EXPORT_SYMBOL_GPL vmlinux 0x81af93f6 ata_bmdma_port_start32 +EXPORT_SYMBOL_GPL vmlinux 0x81c1fb4a shash_register_instance +EXPORT_SYMBOL_GPL vmlinux 0x81c4a51b out_of_line_wait_on_bit_timeout +EXPORT_SYMBOL_GPL vmlinux 0x81c709b1 ata_sff_dev_classify +EXPORT_SYMBOL_GPL vmlinux 0x81cf8ac7 sdhci_pci_o2_fujin2_pci_init +EXPORT_SYMBOL_GPL vmlinux 0x81d152d7 clone_private_mount +EXPORT_SYMBOL_GPL vmlinux 0x81ddd9e1 power_supply_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x8203edab vfs_truncate +EXPORT_SYMBOL_GPL vmlinux 0x82255560 pci_sriov_set_totalvfs +EXPORT_SYMBOL_GPL vmlinux 0x822ad4c7 percpu_ref_init +EXPORT_SYMBOL_GPL vmlinux 0x8235d41b evm_verifyxattr +EXPORT_SYMBOL_GPL vmlinux 0x8238a63e device_for_each_child_reverse +EXPORT_SYMBOL_GPL vmlinux 0x826fb062 rtc_initialize_alarm +EXPORT_SYMBOL_GPL vmlinux 0x82820952 platform_device_register +EXPORT_SYMBOL_GPL vmlinux 0x828f8cad usb_clear_halt +EXPORT_SYMBOL_GPL vmlinux 0x8299d465 platform_device_add +EXPORT_SYMBOL_GPL vmlinux 0x82a236f1 bpf_prog_get +EXPORT_SYMBOL_GPL vmlinux 0x82ba54fd rhashtable_init +EXPORT_SYMBOL_GPL vmlinux 0x82d79b51 sysctl_vfs_cache_pressure +EXPORT_SYMBOL_GPL vmlinux 0x82f57317 da903x_update +EXPORT_SYMBOL_GPL vmlinux 0x8339e23d ip6_local_out +EXPORT_SYMBOL_GPL vmlinux 0x834616bb sdev_evt_alloc +EXPORT_SYMBOL_GPL vmlinux 0x83666454 fixed_phy_register +EXPORT_SYMBOL_GPL vmlinux 0x836d61d0 atomic_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0x8374eaea of_irq_get +EXPORT_SYMBOL_GPL vmlinux 0x837e4980 ata_host_init +EXPORT_SYMBOL_GPL vmlinux 0x8382e26f regulator_map_voltage_linear +EXPORT_SYMBOL_GPL vmlinux 0x838b13e7 ring_buffer_free +EXPORT_SYMBOL_GPL vmlinux 0x83a2604b regmap_update_bits_check_async +EXPORT_SYMBOL_GPL vmlinux 0x83a5ae2e __tracepoint_rpm_resume +EXPORT_SYMBOL_GPL vmlinux 0x83a7a60d exportfs_encode_inode_fh +EXPORT_SYMBOL_GPL vmlinux 0x83dc7c06 fb_deferred_io_fsync +EXPORT_SYMBOL_GPL vmlinux 0x8405777e usb_get_hcd +EXPORT_SYMBOL_GPL vmlinux 0x840fe6ee ip_tunnel_get_stats64 +EXPORT_SYMBOL_GPL vmlinux 0x8411a118 i2c_lock_adapter +EXPORT_SYMBOL_GPL vmlinux 0x841cb3fd pci_reset_pri +EXPORT_SYMBOL_GPL vmlinux 0x841da239 unregister_jprobes +EXPORT_SYMBOL_GPL vmlinux 0x844eefae class_dev_iter_next +EXPORT_SYMBOL_GPL vmlinux 0x845fe2d7 is_skb_forwardable +EXPORT_SYMBOL_GPL vmlinux 0x8475fdc9 stmpe_block_read +EXPORT_SYMBOL_GPL vmlinux 0x848ddd3a init_uts_ns +EXPORT_SYMBOL_GPL vmlinux 0x84a3b75f adp5520_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0x84a7c5f4 led_trigger_set_default +EXPORT_SYMBOL_GPL vmlinux 0x84a7f589 of_reserved_mem_device_init +EXPORT_SYMBOL_GPL vmlinux 0x84bafab6 raw_seq_stop +EXPORT_SYMBOL_GPL vmlinux 0x84c3f916 pcie_port_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x84f276f1 pmac_i2c_adapter_to_bus +EXPORT_SYMBOL_GPL vmlinux 0x84f6206b fat_sync_inode +EXPORT_SYMBOL_GPL vmlinux 0x84fc0a3c blk_mq_unfreeze_queue +EXPORT_SYMBOL_GPL vmlinux 0x85050965 __irq_alloc_descs +EXPORT_SYMBOL_GPL vmlinux 0x850d9a1f ip_local_out_sk +EXPORT_SYMBOL_GPL vmlinux 0x850eefb9 devm_hwmon_device_register_with_groups +EXPORT_SYMBOL_GPL vmlinux 0x85216155 ezx_pcap_read +EXPORT_SYMBOL_GPL vmlinux 0x852354ef pwm_free +EXPORT_SYMBOL_GPL vmlinux 0x853b91c0 usb_match_id +EXPORT_SYMBOL_GPL vmlinux 0x854c31a2 anon_transport_class_register +EXPORT_SYMBOL_GPL vmlinux 0x856629e7 __tracepoint_rpm_return_int +EXPORT_SYMBOL_GPL vmlinux 0x856c0bc9 pmf_call_one +EXPORT_SYMBOL_GPL vmlinux 0x8574ca6c gpio_request_array +EXPORT_SYMBOL_GPL vmlinux 0x857e56f1 usb_free_coherent +EXPORT_SYMBOL_GPL vmlinux 0x858051f0 pci_disable_pri +EXPORT_SYMBOL_GPL vmlinux 0x85c7f674 ring_buffer_normalize_time_stamp +EXPORT_SYMBOL_GPL vmlinux 0x85ea1c8c sdio_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0x860e2f18 dma_release_channel +EXPORT_SYMBOL_GPL vmlinux 0x8612b221 __fsnotify_inode_delete +EXPORT_SYMBOL_GPL vmlinux 0x861709c4 udp4_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x86376855 __srcu_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x867016d2 rio_mport_send_doorbell +EXPORT_SYMBOL_GPL vmlinux 0x86786286 klist_add_behind +EXPORT_SYMBOL_GPL vmlinux 0x867ebb02 map_vm_area +EXPORT_SYMBOL_GPL vmlinux 0x868784cb __symbol_get +EXPORT_SYMBOL_GPL vmlinux 0x868e204a __module_text_address +EXPORT_SYMBOL_GPL vmlinux 0x869666b2 __cpufreq_driver_target +EXPORT_SYMBOL_GPL vmlinux 0x86a33612 root_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x86a3e65e dev_pm_qos_update_request +EXPORT_SYMBOL_GPL vmlinux 0x86be7b36 regulator_map_voltage_iterate +EXPORT_SYMBOL_GPL vmlinux 0x86d17c9c da9052_disable_irq +EXPORT_SYMBOL_GPL vmlinux 0x86e07e3c crypto_alloc_instance2 +EXPORT_SYMBOL_GPL vmlinux 0x86e4af40 mddev_unlock +EXPORT_SYMBOL_GPL vmlinux 0x86ec9c6b swiotlb_map_page +EXPORT_SYMBOL_GPL vmlinux 0x86f0d974 get_cached_msi_msg +EXPORT_SYMBOL_GPL vmlinux 0x86f6920e devm_regmap_init_mmio_clk +EXPORT_SYMBOL_GPL vmlinux 0x86f6b99d synchronize_rcu_expedited +EXPORT_SYMBOL_GPL vmlinux 0x86f8c910 pcap_set_ts_bits +EXPORT_SYMBOL_GPL vmlinux 0x87166f1c ftrace_set_notrace +EXPORT_SYMBOL_GPL vmlinux 0x871ffeab regmap_fields_write +EXPORT_SYMBOL_GPL vmlinux 0x873fbaea edac_atomic_assert_error +EXPORT_SYMBOL_GPL vmlinux 0x87441e23 of_irq_parse_one +EXPORT_SYMBOL_GPL vmlinux 0x87447a32 pm_runtime_force_suspend +EXPORT_SYMBOL_GPL vmlinux 0x87447e1e trace_seq_to_user +EXPORT_SYMBOL_GPL vmlinux 0x874ecc49 blk_trace_setup +EXPORT_SYMBOL_GPL vmlinux 0x87512220 pci_destroy_slot +EXPORT_SYMBOL_GPL vmlinux 0x87593f60 vfs_setxattr +EXPORT_SYMBOL_GPL vmlinux 0x87779d69 gpiochip_lock_as_irq +EXPORT_SYMBOL_GPL vmlinux 0x87799245 devm_regulator_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x878b1c72 da903x_reads +EXPORT_SYMBOL_GPL vmlinux 0x878fac3f bio_associate_current +EXPORT_SYMBOL_GPL vmlinux 0x8793d7d1 sock_diag_save_cookie +EXPORT_SYMBOL_GPL vmlinux 0x87984b16 __tracepoint_cpu_idle +EXPORT_SYMBOL_GPL vmlinux 0x87c0f874 posix_timer_event +EXPORT_SYMBOL_GPL vmlinux 0x87c22b97 ehci_setup +EXPORT_SYMBOL_GPL vmlinux 0x87d6afd7 posix_clock_register +EXPORT_SYMBOL_GPL vmlinux 0x8804af3d usb_anchor_suspend_wakeups +EXPORT_SYMBOL_GPL vmlinux 0x8810ad5e crypto_xor +EXPORT_SYMBOL_GPL vmlinux 0x8813c336 aead_geniv_free +EXPORT_SYMBOL_GPL vmlinux 0x887ec3c0 watchdog_init_timeout +EXPORT_SYMBOL_GPL vmlinux 0x88826ff0 wm5110_i2c_regmap +EXPORT_SYMBOL_GPL vmlinux 0x8885ebc4 regulator_bulk_enable +EXPORT_SYMBOL_GPL vmlinux 0x88a28807 tty_find_polling_driver +EXPORT_SYMBOL_GPL vmlinux 0x88ab6fe3 kgdb_active +EXPORT_SYMBOL_GPL vmlinux 0x88add0b0 wbc_account_io +EXPORT_SYMBOL_GPL vmlinux 0x88b5647c trace_clock_local +EXPORT_SYMBOL_GPL vmlinux 0x88dd842b split_page +EXPORT_SYMBOL_GPL vmlinux 0x8924eb1e rcu_force_quiescent_state +EXPORT_SYMBOL_GPL vmlinux 0x89bbafc6 usb_register_notify +EXPORT_SYMBOL_GPL vmlinux 0x89c0ef87 mmu_notifier_unregister_no_release +EXPORT_SYMBOL_GPL vmlinux 0x89ccc3d9 platform_get_resource_byname +EXPORT_SYMBOL_GPL vmlinux 0x89d55e6b cpufreq_cpu_put +EXPORT_SYMBOL_GPL vmlinux 0x89dbf5b0 list_lru_destroy +EXPORT_SYMBOL_GPL vmlinux 0x89fa6a0a __rio_local_write_config_16 +EXPORT_SYMBOL_GPL vmlinux 0x8a423980 ata_std_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x8a554a36 mpc8xxx_spi_strmode +EXPORT_SYMBOL_GPL vmlinux 0x8a616280 tty_port_register_device_attr +EXPORT_SYMBOL_GPL vmlinux 0x8a661121 scsi_ioctl_block_when_processing_errors +EXPORT_SYMBOL_GPL vmlinux 0x8a681062 crypto_larval_lookup +EXPORT_SYMBOL_GPL vmlinux 0x8a8c75a2 regmap_get_val_bytes +EXPORT_SYMBOL_GPL vmlinux 0x8aa14f54 kobject_get_path +EXPORT_SYMBOL_GPL vmlinux 0x8abacc47 get_max_files +EXPORT_SYMBOL_GPL vmlinux 0x8ac16cab blkdev_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x8ad347d3 of_mpc8xxx_spi_probe +EXPORT_SYMBOL_GPL vmlinux 0x8af48924 sysfs_create_files +EXPORT_SYMBOL_GPL vmlinux 0x8b1f0823 phy_pm_runtime_put_sync +EXPORT_SYMBOL_GPL vmlinux 0x8b408a5e blk_end_request_err +EXPORT_SYMBOL_GPL vmlinux 0x8b70e8ea __wake_up_sync_key +EXPORT_SYMBOL_GPL vmlinux 0x8b938c20 mmc_switch +EXPORT_SYMBOL_GPL vmlinux 0x8c0215f2 pm_system_wakeup +EXPORT_SYMBOL_GPL vmlinux 0x8c03d20c destroy_workqueue +EXPORT_SYMBOL_GPL vmlinux 0x8c0cc8c6 rio_request_inb_pwrite +EXPORT_SYMBOL_GPL vmlinux 0x8c156e0e ata_sas_port_resume +EXPORT_SYMBOL_GPL vmlinux 0x8c3da46c clockevents_config_and_register +EXPORT_SYMBOL_GPL vmlinux 0x8c6380a9 rtc_update_irq +EXPORT_SYMBOL_GPL vmlinux 0x8c646600 edac_report_status +EXPORT_SYMBOL_GPL vmlinux 0x8c743fb6 reset_control_status +EXPORT_SYMBOL_GPL vmlinux 0x8c88fa72 virtio_device_freeze +EXPORT_SYMBOL_GPL vmlinux 0x8c8df9e3 ehci_init_driver +EXPORT_SYMBOL_GPL vmlinux 0x8c8fd5aa x509_cert_parse +EXPORT_SYMBOL_GPL vmlinux 0x8ca121fe usb_driver_claim_interface +EXPORT_SYMBOL_GPL vmlinux 0x8cb741db locks_release_private +EXPORT_SYMBOL_GPL vmlinux 0x8cf43253 ata_bmdma_dumb_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0x8d043a80 pm_generic_restore +EXPORT_SYMBOL_GPL vmlinux 0x8d3baa0a thermal_zone_get_zone_by_name +EXPORT_SYMBOL_GPL vmlinux 0x8d652bc7 input_ff_create +EXPORT_SYMBOL_GPL vmlinux 0x8d702aa3 crypto_spawn_tfm2 +EXPORT_SYMBOL_GPL vmlinux 0x8d920d05 ata_std_sched_eh +EXPORT_SYMBOL_GPL vmlinux 0x8da17b42 scatterwalk_copychunks +EXPORT_SYMBOL_GPL vmlinux 0x8dbb5813 alarm_cancel +EXPORT_SYMBOL_GPL vmlinux 0x8dbf7af8 da903x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x8dccdd3e regmap_init_i2c +EXPORT_SYMBOL_GPL vmlinux 0x8dd967f4 usb_remove_phy +EXPORT_SYMBOL_GPL vmlinux 0x8dd9c1e8 device_property_read_u32_array +EXPORT_SYMBOL_GPL vmlinux 0x8df0d49a scsi_queue_work +EXPORT_SYMBOL_GPL vmlinux 0x8dfd5821 __cookie_v6_init_sequence +EXPORT_SYMBOL_GPL vmlinux 0x8e114bc7 blk_trace_startstop +EXPORT_SYMBOL_GPL vmlinux 0x8e13ed25 srcu_batches_completed +EXPORT_SYMBOL_GPL vmlinux 0x8e2b25c2 videomode_from_timings +EXPORT_SYMBOL_GPL vmlinux 0x8e31ed12 attribute_container_find_class_device +EXPORT_SYMBOL_GPL vmlinux 0x8e4407a3 pm_runtime_forbid +EXPORT_SYMBOL_GPL vmlinux 0x8e500a4e find_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0x8e50b742 irq_setup_alt_chip +EXPORT_SYMBOL_GPL vmlinux 0x8e5e0fdd netdev_rx_handler_register +EXPORT_SYMBOL_GPL vmlinux 0x8e60df7a __tracepoint_wbc_writepage +EXPORT_SYMBOL_GPL vmlinux 0x8e8078ad usb_hcd_resume_root_hub +EXPORT_SYMBOL_GPL vmlinux 0x8ed47d07 lp8788_read_byte +EXPORT_SYMBOL_GPL vmlinux 0x8ef5a1bb uprobe_register +EXPORT_SYMBOL_GPL vmlinux 0x8f0748af rcu_expedite_gp +EXPORT_SYMBOL_GPL vmlinux 0x8f227eb9 of_property_read_u32_index +EXPORT_SYMBOL_GPL vmlinux 0x8f4c062a pmac_low_i2c_unlock +EXPORT_SYMBOL_GPL vmlinux 0x8f6127ff __blocking_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x8f6cee77 __round_jiffies_relative +EXPORT_SYMBOL_GPL vmlinux 0x8fc4ab87 arizona_clk32k_disable +EXPORT_SYMBOL_GPL vmlinux 0x8fd678fd __sock_recv_wifi_status +EXPORT_SYMBOL_GPL vmlinux 0x9021c20a fat_build_inode +EXPORT_SYMBOL_GPL vmlinux 0x902d6505 rio_get_device +EXPORT_SYMBOL_GPL vmlinux 0x903b627c list_lru_isolate_move +EXPORT_SYMBOL_GPL vmlinux 0x90486512 fixed_phy_set_link_update +EXPORT_SYMBOL_GPL vmlinux 0x9062c322 ring_buffer_consume +EXPORT_SYMBOL_GPL vmlinux 0x907349cb __platform_create_bundle +EXPORT_SYMBOL_GPL vmlinux 0x9074959c rt_mutex_timed_lock +EXPORT_SYMBOL_GPL vmlinux 0x9077d5ea usb_kill_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x9098dadb wm8400_block_read +EXPORT_SYMBOL_GPL vmlinux 0x909dfc80 perf_event_enable +EXPORT_SYMBOL_GPL vmlinux 0x90a1004a crypto_has_alg +EXPORT_SYMBOL_GPL vmlinux 0x90a949d6 sysfs_remove_link +EXPORT_SYMBOL_GPL vmlinux 0x90ab45e6 sk_detach_filter +EXPORT_SYMBOL_GPL vmlinux 0x90b746a3 rt_mutex_trylock +EXPORT_SYMBOL_GPL vmlinux 0x90cce675 regcache_sync_region +EXPORT_SYMBOL_GPL vmlinux 0x90ed2d9c subsys_system_register +EXPORT_SYMBOL_GPL vmlinux 0x910dc7c5 dev_pm_set_dedicated_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0x911cde35 ohci_resume +EXPORT_SYMBOL_GPL vmlinux 0x913a03b5 crypto_lookup_skcipher +EXPORT_SYMBOL_GPL vmlinux 0x914bf095 platform_device_add_resources +EXPORT_SYMBOL_GPL vmlinux 0x9153ac42 ata_sas_queuecmd +EXPORT_SYMBOL_GPL vmlinux 0x915abce6 crypto_ahash_setkey +EXPORT_SYMBOL_GPL vmlinux 0x9166c6af regmap_can_raw_write +EXPORT_SYMBOL_GPL vmlinux 0x9188cf5a usb_interrupt_msg +EXPORT_SYMBOL_GPL vmlinux 0x918ad429 ring_buffer_lock_reserve +EXPORT_SYMBOL_GPL vmlinux 0x91b7eae5 power_supply_class +EXPORT_SYMBOL_GPL vmlinux 0x91c089b3 kobject_uevent_env +EXPORT_SYMBOL_GPL vmlinux 0x91c6e5b0 pcap_to_irq +EXPORT_SYMBOL_GPL vmlinux 0x91d1a7ec rio_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x91f3e18d remove_irq +EXPORT_SYMBOL_GPL vmlinux 0x91f85d5f virtio_config_changed +EXPORT_SYMBOL_GPL vmlinux 0x91fa3cd6 ping_init_sock +EXPORT_SYMBOL_GPL vmlinux 0x91fd31bc sysfs_rename_link_ns +EXPORT_SYMBOL_GPL vmlinux 0x9206ce66 netdev_set_default_ethtool_ops +EXPORT_SYMBOL_GPL vmlinux 0x92255e1f subsys_dev_iter_next +EXPORT_SYMBOL_GPL vmlinux 0x923a00bc rio_release_inb_dbell +EXPORT_SYMBOL_GPL vmlinux 0x924162d1 tpm_do_selftest +EXPORT_SYMBOL_GPL vmlinux 0x924c46f8 zs_unmap_object +EXPORT_SYMBOL_GPL vmlinux 0x926732a0 phy_put +EXPORT_SYMBOL_GPL vmlinux 0x9282cb01 shmem_file_setup +EXPORT_SYMBOL_GPL vmlinux 0x928f61db led_classdev_register +EXPORT_SYMBOL_GPL vmlinux 0x92a05797 ping_hash +EXPORT_SYMBOL_GPL vmlinux 0x92b57248 flush_work +EXPORT_SYMBOL_GPL vmlinux 0x92d31cfb fixed_phy_add +EXPORT_SYMBOL_GPL vmlinux 0x92db8f68 do_trace_rcu_torture_read +EXPORT_SYMBOL_GPL vmlinux 0x92f6e4b6 __ktime_divns +EXPORT_SYMBOL_GPL vmlinux 0x930debbf spi_sync_locked +EXPORT_SYMBOL_GPL vmlinux 0x93171f3d devm_regulator_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x931f05d3 ktime_get_raw +EXPORT_SYMBOL_GPL vmlinux 0x9332cd29 xfrm_output +EXPORT_SYMBOL_GPL vmlinux 0x93528996 hrtimer_active +EXPORT_SYMBOL_GPL vmlinux 0x935e9b06 get_cpu_device +EXPORT_SYMBOL_GPL vmlinux 0x93a270a3 hvc_alloc +EXPORT_SYMBOL_GPL vmlinux 0x93a2cb47 reserve_pmc_hardware +EXPORT_SYMBOL_GPL vmlinux 0x93f3d99f tps6586x_get_version +EXPORT_SYMBOL_GPL vmlinux 0x93f3df09 reset_controller_unregister +EXPORT_SYMBOL_GPL vmlinux 0x941f2aaa eventfd_ctx_put +EXPORT_SYMBOL_GPL vmlinux 0x942bfa52 rio_mport_write_config_16 +EXPORT_SYMBOL_GPL vmlinux 0x943e5f25 tty_buffer_lock_exclusive +EXPORT_SYMBOL_GPL vmlinux 0x9452a7d1 usb_hcd_is_primary_hcd +EXPORT_SYMBOL_GPL vmlinux 0x946157c7 tcp_get_info +EXPORT_SYMBOL_GPL vmlinux 0x946590cb tc3589x_block_read +EXPORT_SYMBOL_GPL vmlinux 0x94778605 pci_load_saved_state +EXPORT_SYMBOL_GPL vmlinux 0x94abb745 sprint_oid +EXPORT_SYMBOL_GPL vmlinux 0x94b98684 blockdev_superblock +EXPORT_SYMBOL_GPL vmlinux 0x94c7ac48 dma_get_slave_caps +EXPORT_SYMBOL_GPL vmlinux 0x94cfe641 con_debug_enter +EXPORT_SYMBOL_GPL vmlinux 0x94ef4d05 cpci_hp_stop +EXPORT_SYMBOL_GPL vmlinux 0x94f26ef7 mpc8xxx_spi_rx_buf_u16 +EXPORT_SYMBOL_GPL vmlinux 0x94f9bfb4 sata_set_spd +EXPORT_SYMBOL_GPL vmlinux 0x94fc01d6 __pm_wakeup_event +EXPORT_SYMBOL_GPL vmlinux 0x9504df26 irq_wake_thread +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 0x9579273e devm_regmap_init_i2c +EXPORT_SYMBOL_GPL vmlinux 0x958df3ac zs_free +EXPORT_SYMBOL_GPL vmlinux 0x959401b8 ehci_hub_control +EXPORT_SYMBOL_GPL vmlinux 0x95bc9078 btree_free +EXPORT_SYMBOL_GPL vmlinux 0x95bfa761 devm_regmap_field_free +EXPORT_SYMBOL_GPL vmlinux 0x95c94cbe cn_add_callback +EXPORT_SYMBOL_GPL vmlinux 0x95cdc4b3 gpiod_get_array_optional +EXPORT_SYMBOL_GPL vmlinux 0x95d28dca inet_csk_get_port +EXPORT_SYMBOL_GPL vmlinux 0x95d55100 fat_get_dotdot_entry +EXPORT_SYMBOL_GPL vmlinux 0x96009396 crypto_mod_put +EXPORT_SYMBOL_GPL vmlinux 0x9621849f ring_buffer_event_data +EXPORT_SYMBOL_GPL vmlinux 0x963e7063 dev_pm_qos_add_ancestor_request +EXPORT_SYMBOL_GPL vmlinux 0x96428ed2 pm_runtime_set_memalloc_noio +EXPORT_SYMBOL_GPL vmlinux 0x9645fa15 vring_new_virtqueue +EXPORT_SYMBOL_GPL vmlinux 0x96554810 register_keyboard_notifier +EXPORT_SYMBOL_GPL vmlinux 0x9655b911 enable_kprobe +EXPORT_SYMBOL_GPL vmlinux 0x965e41de crypto_alloc_akcipher +EXPORT_SYMBOL_GPL vmlinux 0x966558ae vfs_setlease +EXPORT_SYMBOL_GPL vmlinux 0x96853884 gpiochip_add +EXPORT_SYMBOL_GPL vmlinux 0x969f0ec7 ata_host_start +EXPORT_SYMBOL_GPL vmlinux 0x96dab51e gpiod_direction_output_raw +EXPORT_SYMBOL_GPL vmlinux 0x971d115b dax_pfn_mkwrite +EXPORT_SYMBOL_GPL vmlinux 0x973e2d3a phy_exit +EXPORT_SYMBOL_GPL vmlinux 0x975519c1 asymmetric_key_id_same +EXPORT_SYMBOL_GPL vmlinux 0x975badfd device_attach +EXPORT_SYMBOL_GPL vmlinux 0x979e5c70 of_css +EXPORT_SYMBOL_GPL vmlinux 0x97aed008 pci_generic_config_write32 +EXPORT_SYMBOL_GPL vmlinux 0x97c1ba32 ata_sff_data_xfer +EXPORT_SYMBOL_GPL vmlinux 0x97d9ebf3 securityfs_remove +EXPORT_SYMBOL_GPL vmlinux 0x97de2b83 debug_locks_silent +EXPORT_SYMBOL_GPL vmlinux 0x97ec6f79 dma_request_slave_channel +EXPORT_SYMBOL_GPL vmlinux 0x97f487c2 bus_register +EXPORT_SYMBOL_GPL vmlinux 0x97f9da48 crypto_alloc_shash +EXPORT_SYMBOL_GPL vmlinux 0x98187339 dax_do_io +EXPORT_SYMBOL_GPL vmlinux 0x982cd486 __cookie_v4_init_sequence +EXPORT_SYMBOL_GPL vmlinux 0x982e9c4d xfrm_audit_state_icvfail +EXPORT_SYMBOL_GPL vmlinux 0x9833bc0c hvc_kick +EXPORT_SYMBOL_GPL vmlinux 0x983d7449 ftrace_set_filter_ip +EXPORT_SYMBOL_GPL vmlinux 0x984b672c ata_bmdma_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x984bcb98 ata_wait_register +EXPORT_SYMBOL_GPL vmlinux 0x98503a63 mpi_alloc +EXPORT_SYMBOL_GPL vmlinux 0x9862e336 of_get_nand_on_flash_bbt +EXPORT_SYMBOL_GPL vmlinux 0x98696529 __devm_of_phy_provider_register +EXPORT_SYMBOL_GPL vmlinux 0x9879932b crypto_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x98af858c lp8788_update_bits +EXPORT_SYMBOL_GPL vmlinux 0x98d05747 power_supply_changed +EXPORT_SYMBOL_GPL vmlinux 0x98d418d0 bpf_prog_create +EXPORT_SYMBOL_GPL vmlinux 0x98e39b79 crypto_register_template +EXPORT_SYMBOL_GPL vmlinux 0x98ed0a16 regulator_put +EXPORT_SYMBOL_GPL vmlinux 0x98f62760 crypto_grab_aead +EXPORT_SYMBOL_GPL vmlinux 0x98fa1e20 dm_get_reserved_rq_based_ios +EXPORT_SYMBOL_GPL vmlinux 0x98fcf128 irq_work_queue_on +EXPORT_SYMBOL_GPL vmlinux 0x990080c5 virtqueue_get_used +EXPORT_SYMBOL_GPL vmlinux 0x9924c496 __usb_get_extra_descriptor +EXPORT_SYMBOL_GPL vmlinux 0x994a3739 key_type_encrypted +EXPORT_SYMBOL_GPL vmlinux 0x994b6612 __tracepoint_block_split +EXPORT_SYMBOL_GPL vmlinux 0x995d1071 prof_on +EXPORT_SYMBOL_GPL vmlinux 0x99751e5b crypto_unregister_pcomp +EXPORT_SYMBOL_GPL vmlinux 0x997c4347 unmap_kernel_range +EXPORT_SYMBOL_GPL vmlinux 0x997eaaa3 ip6_sk_redirect +EXPORT_SYMBOL_GPL vmlinux 0x99840d00 timecounter_init +EXPORT_SYMBOL_GPL vmlinux 0x998f0703 driver_unregister +EXPORT_SYMBOL_GPL vmlinux 0x99a77360 sata_scr_read +EXPORT_SYMBOL_GPL vmlinux 0x99a9ff9a cpuidle_register_device +EXPORT_SYMBOL_GPL vmlinux 0x99aefeb8 crypto_register_akcipher +EXPORT_SYMBOL_GPL vmlinux 0x99bf5905 devm_pwm_put +EXPORT_SYMBOL_GPL vmlinux 0x99cd9357 power_supply_put +EXPORT_SYMBOL_GPL vmlinux 0x99d18131 usb_hcd_pci_pm_ops +EXPORT_SYMBOL_GPL vmlinux 0x9a11a0fc crypto_attr_alg_name +EXPORT_SYMBOL_GPL vmlinux 0x9a18f38d serial8250_release_dma +EXPORT_SYMBOL_GPL vmlinux 0x9a1f8cf0 bsg_job_done +EXPORT_SYMBOL_GPL vmlinux 0x9a20a4eb tcp_twsk_unique +EXPORT_SYMBOL_GPL vmlinux 0x9a2812ba xfrm_audit_state_replay +EXPORT_SYMBOL_GPL vmlinux 0x9a468e50 __pci_reset_function_locked +EXPORT_SYMBOL_GPL vmlinux 0x9a49d937 __wake_up_locked_key +EXPORT_SYMBOL_GPL vmlinux 0x9a4bd19c debugfs_create_dir +EXPORT_SYMBOL_GPL vmlinux 0x9a5de578 tty_init_termios +EXPORT_SYMBOL_GPL vmlinux 0x9a5df8f8 pm_runtime_allow +EXPORT_SYMBOL_GPL vmlinux 0x9a5fda07 regmap_get_max_register +EXPORT_SYMBOL_GPL vmlinux 0x9a792c81 apply_to_page_range +EXPORT_SYMBOL_GPL vmlinux 0x9a89dbf7 lpddr2_jedec_min_tck +EXPORT_SYMBOL_GPL vmlinux 0x9aa9707a of_thermal_get_ntrips +EXPORT_SYMBOL_GPL vmlinux 0x9aad6540 klist_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x9ab6181e led_sysfs_disable +EXPORT_SYMBOL_GPL vmlinux 0x9abd3c81 power_supply_get_by_name +EXPORT_SYMBOL_GPL vmlinux 0x9ac11b74 suspend_set_ops +EXPORT_SYMBOL_GPL vmlinux 0x9ac43ec7 rio_mport_write_config_8 +EXPORT_SYMBOL_GPL vmlinux 0x9acc35d2 blkcg_print_blkgs +EXPORT_SYMBOL_GPL vmlinux 0x9ad6e655 da903x_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x9ae63a6e phy_get +EXPORT_SYMBOL_GPL vmlinux 0x9aeacb87 ring_buffer_iter_empty +EXPORT_SYMBOL_GPL vmlinux 0x9b07a8c5 power_supply_set_battery_charged +EXPORT_SYMBOL_GPL vmlinux 0x9b0d1797 thermal_zone_of_sensor_register +EXPORT_SYMBOL_GPL vmlinux 0x9b0f4dc4 lp8788_write_byte +EXPORT_SYMBOL_GPL vmlinux 0x9b21adba inet_ehash_locks_alloc +EXPORT_SYMBOL_GPL vmlinux 0x9b22ec00 tc3589x_block_write +EXPORT_SYMBOL_GPL vmlinux 0x9b3b42e6 tty_buffer_space_avail +EXPORT_SYMBOL_GPL vmlinux 0x9b486f7f pingv6_prot +EXPORT_SYMBOL_GPL vmlinux 0x9b49bf6e regulator_set_voltage_sel_regmap +EXPORT_SYMBOL_GPL vmlinux 0x9b59cc6f pm_generic_poweroff_late +EXPORT_SYMBOL_GPL vmlinux 0x9b5a20d8 virtqueue_enable_cb +EXPORT_SYMBOL_GPL vmlinux 0x9b664612 irq_gc_ack_set_bit +EXPORT_SYMBOL_GPL vmlinux 0x9bd6b0b6 blkg_conf_prep +EXPORT_SYMBOL_GPL vmlinux 0x9bde9008 fuse_put_request +EXPORT_SYMBOL_GPL vmlinux 0x9bece81b mpi_cmp_ui +EXPORT_SYMBOL_GPL vmlinux 0x9bfd219c fat_attach +EXPORT_SYMBOL_GPL vmlinux 0x9c0c5fdb md_stop +EXPORT_SYMBOL_GPL vmlinux 0x9c2a77f7 devm_hwrng_register +EXPORT_SYMBOL_GPL vmlinux 0x9c5d28cc shash_ahash_finup +EXPORT_SYMBOL_GPL vmlinux 0x9c5f76da bus_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x9c6e83ca cgroup_attach_task_all +EXPORT_SYMBOL_GPL vmlinux 0x9c73b250 adp5520_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x9c7a6e39 bdev_read_page +EXPORT_SYMBOL_GPL vmlinux 0x9ca5cfc0 rio_mport_read_config_32 +EXPORT_SYMBOL_GPL vmlinux 0x9cc4f70a register_pm_notifier +EXPORT_SYMBOL_GPL vmlinux 0x9cdbb128 sdio_writel +EXPORT_SYMBOL_GPL vmlinux 0x9ced00c5 fat_search_long +EXPORT_SYMBOL_GPL vmlinux 0x9cee57a0 zs_create_pool +EXPORT_SYMBOL_GPL vmlinux 0x9cfb4978 tty_mode_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x9d39a3a4 blk_queue_rq_timed_out +EXPORT_SYMBOL_GPL vmlinux 0x9d4d1a6a device_store_bool +EXPORT_SYMBOL_GPL vmlinux 0x9d8331c0 ring_buffer_read_page +EXPORT_SYMBOL_GPL vmlinux 0x9d8c4a1a ip6_sk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x9d9298e0 pwm_get_chip_data +EXPORT_SYMBOL_GPL vmlinux 0x9d9c093c cpu_remove_dev_attr_group +EXPORT_SYMBOL_GPL vmlinux 0x9d9d31c6 extcon_set_state +EXPORT_SYMBOL_GPL vmlinux 0x9dadbb88 cpufreq_boost_supported +EXPORT_SYMBOL_GPL vmlinux 0x9de23147 dummy_con +EXPORT_SYMBOL_GPL vmlinux 0x9dfdf722 gpio_free_array +EXPORT_SYMBOL_GPL vmlinux 0x9e10d367 wm8350_device_init +EXPORT_SYMBOL_GPL vmlinux 0x9e289d6d __rtnl_register +EXPORT_SYMBOL_GPL vmlinux 0x9e472f5f snmp_fold_field +EXPORT_SYMBOL_GPL vmlinux 0x9e5b5fe7 usb_unlocked_enable_lpm +EXPORT_SYMBOL_GPL vmlinux 0x9e5d5908 blk_queue_flush +EXPORT_SYMBOL_GPL vmlinux 0x9e5f2c99 devres_find +EXPORT_SYMBOL_GPL vmlinux 0x9e62ea94 power_supply_set_property +EXPORT_SYMBOL_GPL vmlinux 0x9e64e26d ata_sff_softreset +EXPORT_SYMBOL_GPL vmlinux 0x9e68bb35 usb_hcd_link_urb_to_ep +EXPORT_SYMBOL_GPL vmlinux 0x9e79d59f skb_segment +EXPORT_SYMBOL_GPL vmlinux 0x9e7cc2ff rhashtable_walk_start +EXPORT_SYMBOL_GPL vmlinux 0x9e9e3ea1 __ip6_local_out +EXPORT_SYMBOL_GPL vmlinux 0x9ea53947 of_get_videomode +EXPORT_SYMBOL_GPL vmlinux 0x9ed44674 regulator_disable_deferred +EXPORT_SYMBOL_GPL vmlinux 0x9ed554b3 unregister_keyboard_notifier +EXPORT_SYMBOL_GPL vmlinux 0x9eee11fa ata_sff_irq_on +EXPORT_SYMBOL_GPL vmlinux 0x9efa9c82 platform_driver_unregister +EXPORT_SYMBOL_GPL vmlinux 0x9f099cf6 x509_get_sig_params +EXPORT_SYMBOL_GPL vmlinux 0x9f1f84cb ata_eh_thaw_port +EXPORT_SYMBOL_GPL vmlinux 0x9f548887 dev_pm_get_subsys_data +EXPORT_SYMBOL_GPL vmlinux 0x9f64eac1 __blkdev_driver_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x9f741b25 arizona_clk32k_enable +EXPORT_SYMBOL_GPL vmlinux 0x9f8ea0f8 wait_for_tpm_stat +EXPORT_SYMBOL_GPL vmlinux 0x9f9e3365 extcon_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x9fce80db fb_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x9fd83850 tps80031_ext_power_req_config +EXPORT_SYMBOL_GPL vmlinux 0x9fe939e1 mpi_powm +EXPORT_SYMBOL_GPL vmlinux 0x9ff50bbd perf_tp_event +EXPORT_SYMBOL_GPL vmlinux 0xa007c8bf skcipher_geniv_init +EXPORT_SYMBOL_GPL vmlinux 0xa043f377 set_cpus_allowed_ptr +EXPORT_SYMBOL_GPL vmlinux 0xa073b4b9 tcp_twsk_destructor +EXPORT_SYMBOL_GPL vmlinux 0xa0758437 vfs_cancel_lock +EXPORT_SYMBOL_GPL vmlinux 0xa089dcca rtc_set_alarm +EXPORT_SYMBOL_GPL vmlinux 0xa091d10d fwnode_property_present +EXPORT_SYMBOL_GPL vmlinux 0xa0989796 devm_of_phy_get_by_index +EXPORT_SYMBOL_GPL vmlinux 0xa09b749b usb_phy_generic_register +EXPORT_SYMBOL_GPL vmlinux 0xa0e5541c sata_lpm_ignore_phy_events +EXPORT_SYMBOL_GPL vmlinux 0xa1286b1c generic_fh_to_parent +EXPORT_SYMBOL_GPL vmlinux 0xa132e975 shash_attr_alg +EXPORT_SYMBOL_GPL vmlinux 0xa14b1f3d bus_get_kset +EXPORT_SYMBOL_GPL vmlinux 0xa151cd36 ablkcipher_walk_phys +EXPORT_SYMBOL_GPL vmlinux 0xa163bf66 of_prop_next_u32 +EXPORT_SYMBOL_GPL vmlinux 0xa18f9433 mpi_read_buffer +EXPORT_SYMBOL_GPL vmlinux 0xa1b5e5fc reservation_object_test_signaled_rcu +EXPORT_SYMBOL_GPL vmlinux 0xa1bd7822 __tracepoint_block_bio_complete +EXPORT_SYMBOL_GPL vmlinux 0xa1d0ebe1 pwmchip_add_with_polarity +EXPORT_SYMBOL_GPL vmlinux 0xa1d6d0b9 __pm_runtime_idle +EXPORT_SYMBOL_GPL vmlinux 0xa1df5976 dev_change_net_namespace +EXPORT_SYMBOL_GPL vmlinux 0xa208cba1 rhashtable_insert_rehash +EXPORT_SYMBOL_GPL vmlinux 0xa212cfcf add_to_page_cache_lru +EXPORT_SYMBOL_GPL vmlinux 0xa21a34ca virtqueue_enable_cb_prepare +EXPORT_SYMBOL_GPL vmlinux 0xa2242a14 of_pci_parse_bus_range +EXPORT_SYMBOL_GPL vmlinux 0xa2560c2b ata_sas_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0xa26d9b4f workqueue_congested +EXPORT_SYMBOL_GPL vmlinux 0xa273cd3e ata_bmdma32_port_ops +EXPORT_SYMBOL_GPL vmlinux 0xa29170e5 blk_add_driver_data +EXPORT_SYMBOL_GPL vmlinux 0xa299f062 ata_std_qc_defer +EXPORT_SYMBOL_GPL vmlinux 0xa2bafa40 interval_tree_insert +EXPORT_SYMBOL_GPL vmlinux 0xa2d4e223 ata_scsi_change_queue_depth +EXPORT_SYMBOL_GPL vmlinux 0xa2db0ae5 security_kernel_fw_from_file +EXPORT_SYMBOL_GPL vmlinux 0xa2ebd9b1 dm_suspended +EXPORT_SYMBOL_GPL vmlinux 0xa30dd182 tty_port_link_device +EXPORT_SYMBOL_GPL vmlinux 0xa316ea39 sata_sff_hardreset +EXPORT_SYMBOL_GPL vmlinux 0xa3316264 mbox_send_message +EXPORT_SYMBOL_GPL vmlinux 0xa38602cd drain_workqueue +EXPORT_SYMBOL_GPL vmlinux 0xa3892ce0 sysfs_remove_link_from_group +EXPORT_SYMBOL_GPL vmlinux 0xa389a49a profile_event_register +EXPORT_SYMBOL_GPL vmlinux 0xa3a04602 btree_geo64 +EXPORT_SYMBOL_GPL vmlinux 0xa3a2d9af walk_system_ram_range +EXPORT_SYMBOL_GPL vmlinux 0xa3b958ce reset_hung_task_detector +EXPORT_SYMBOL_GPL vmlinux 0xa3d1ee34 device_release_driver +EXPORT_SYMBOL_GPL vmlinux 0xa3e7c113 ring_buffer_iter_peek +EXPORT_SYMBOL_GPL vmlinux 0xa4168149 dma_get_required_mask +EXPORT_SYMBOL_GPL vmlinux 0xa4185b77 __blkg_prfill_rwstat +EXPORT_SYMBOL_GPL vmlinux 0xa4308b91 nf_queue_entry_release_refs +EXPORT_SYMBOL_GPL vmlinux 0xa458a582 devm_usb_get_phy_by_node +EXPORT_SYMBOL_GPL vmlinux 0xa45dcc2b of_modalias_node +EXPORT_SYMBOL_GPL vmlinux 0xa48196c8 kdb_poll_idx +EXPORT_SYMBOL_GPL vmlinux 0xa4b28ad5 cpu_device_create +EXPORT_SYMBOL_GPL vmlinux 0xa4cb47c2 devm_hwrng_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa4d6f1c1 inet_twsk_alloc +EXPORT_SYMBOL_GPL vmlinux 0xa5065655 tty_prepare_flip_string +EXPORT_SYMBOL_GPL vmlinux 0xa50a8d3b irq_gc_mask_clr_bit +EXPORT_SYMBOL_GPL vmlinux 0xa5262a0f pci_try_reset_bus +EXPORT_SYMBOL_GPL vmlinux 0xa526ed1b rio_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0xa52cba5c regmap_raw_write_async +EXPORT_SYMBOL_GPL vmlinux 0xa5691f8c crypto_ahash_finup +EXPORT_SYMBOL_GPL vmlinux 0xa57e4ca0 tpm_pm_resume +EXPORT_SYMBOL_GPL vmlinux 0xa59de1ee rhashtable_walk_init +EXPORT_SYMBOL_GPL vmlinux 0xa5b00659 ppc_proc_freq +EXPORT_SYMBOL_GPL vmlinux 0xa5bd78a5 fuse_request_send +EXPORT_SYMBOL_GPL vmlinux 0xa5c0a26c pci_bus_max_busnr +EXPORT_SYMBOL_GPL vmlinux 0xa5c47934 inet_hash +EXPORT_SYMBOL_GPL vmlinux 0xa5c78d52 regulator_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0xa5db8273 md_find_rdev_nr_rcu +EXPORT_SYMBOL_GPL vmlinux 0xa5e407e4 wm5110_aod +EXPORT_SYMBOL_GPL vmlinux 0xa5efbf4c async_synchronize_full +EXPORT_SYMBOL_GPL vmlinux 0xa5efe460 usb_anchor_resume_wakeups +EXPORT_SYMBOL_GPL vmlinux 0xa62355d5 component_master_add_with_match +EXPORT_SYMBOL_GPL vmlinux 0xa625110d kmsg_dump_rewind +EXPORT_SYMBOL_GPL vmlinux 0xa63ef0db rhashtable_walk_stop +EXPORT_SYMBOL_GPL vmlinux 0xa66216cd __get_user_pages_fast +EXPORT_SYMBOL_GPL vmlinux 0xa69e4a6e serial8250_clear_and_reinit_fifos +EXPORT_SYMBOL_GPL vmlinux 0xa6a435c6 extcon_get_cable_state +EXPORT_SYMBOL_GPL vmlinux 0xa6aee67e serial8250_do_shutdown +EXPORT_SYMBOL_GPL vmlinux 0xa6b21ef2 dpm_suspend_end +EXPORT_SYMBOL_GPL vmlinux 0xa6b5eb5a pmf_unregister_irq_client +EXPORT_SYMBOL_GPL vmlinux 0xa6b9bf1d arizona_of_get_named_gpio +EXPORT_SYMBOL_GPL vmlinux 0xa6c2d5a7 perf_event_refresh +EXPORT_SYMBOL_GPL vmlinux 0xa6e1a69d kick_all_cpus_sync +EXPORT_SYMBOL_GPL vmlinux 0xa6e577c8 dev_pm_qos_hide_flags +EXPORT_SYMBOL_GPL vmlinux 0xa6e5ceca get_dcookie +EXPORT_SYMBOL_GPL vmlinux 0xa6f24ad6 usb_store_new_id +EXPORT_SYMBOL_GPL vmlinux 0xa6fc3ad4 device_property_read_u16_array +EXPORT_SYMBOL_GPL vmlinux 0xa6fe4c07 inet_csk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0xa7000d05 rio_local_get_device_id +EXPORT_SYMBOL_GPL vmlinux 0xa70c2df1 ping_get_port +EXPORT_SYMBOL_GPL vmlinux 0xa7168954 pci_test_config_bits +EXPORT_SYMBOL_GPL vmlinux 0xa72b5272 rtnl_link_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa732432b fs_kobj +EXPORT_SYMBOL_GPL vmlinux 0xa7353c6e ata_base_port_ops +EXPORT_SYMBOL_GPL vmlinux 0xa75312bc call_rcu_sched +EXPORT_SYMBOL_GPL vmlinux 0xa756fd79 gpiod_put +EXPORT_SYMBOL_GPL vmlinux 0xa77269c2 list_lru_add +EXPORT_SYMBOL_GPL vmlinux 0xa7903a81 class_dev_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0xa796542a bd_unlink_disk_holder +EXPORT_SYMBOL_GPL vmlinux 0xa7b50bc2 pci_generic_config_read32 +EXPORT_SYMBOL_GPL vmlinux 0xa7cd345f usb_enable_intel_xhci_ports +EXPORT_SYMBOL_GPL vmlinux 0xa7cf9628 cpufreq_unregister_governor +EXPORT_SYMBOL_GPL vmlinux 0xa7f65839 usb_hub_claim_port +EXPORT_SYMBOL_GPL vmlinux 0xa80e0199 pci_reset_function +EXPORT_SYMBOL_GPL vmlinux 0xa8265fb6 need_load_eval +EXPORT_SYMBOL_GPL vmlinux 0xa83ad875 ata_bmdma_stop +EXPORT_SYMBOL_GPL vmlinux 0xa840e197 tps6586x_update +EXPORT_SYMBOL_GPL vmlinux 0xa851973a raw_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xa87616a3 sdio_writesb +EXPORT_SYMBOL_GPL vmlinux 0xa8b76a68 timecounter_cyc2time +EXPORT_SYMBOL_GPL vmlinux 0xa8c48626 ata_host_resume +EXPORT_SYMBOL_GPL vmlinux 0xa8c761bf crypto_unregister_rngs +EXPORT_SYMBOL_GPL vmlinux 0xa8e05ec8 rio_mport_get_efb +EXPORT_SYMBOL_GPL vmlinux 0xa8f3381b ip_build_and_send_pkt +EXPORT_SYMBOL_GPL vmlinux 0xa90f5382 ata_platform_remove_one +EXPORT_SYMBOL_GPL vmlinux 0xa91603b1 init_srcu_struct +EXPORT_SYMBOL_GPL vmlinux 0xa92c7a70 ata_port_schedule_eh +EXPORT_SYMBOL_GPL vmlinux 0xa9320d27 ktime_get_seconds +EXPORT_SYMBOL_GPL vmlinux 0xa940ed1d ata_pci_bmdma_init +EXPORT_SYMBOL_GPL vmlinux 0xa9423ff0 of_dma_get_range +EXPORT_SYMBOL_GPL vmlinux 0xa9426779 fat_remove_entries +EXPORT_SYMBOL_GPL vmlinux 0xa94335f4 bmp085_probe +EXPORT_SYMBOL_GPL vmlinux 0xa961a3a1 ata_do_eh +EXPORT_SYMBOL_GPL vmlinux 0xa966e047 gpiochip_irqchip_add +EXPORT_SYMBOL_GPL vmlinux 0xa97968af of_get_display_timings +EXPORT_SYMBOL_GPL vmlinux 0xa980af16 RSA_public_key_algorithm +EXPORT_SYMBOL_GPL vmlinux 0xa98ba868 unregister_pernet_subsys +EXPORT_SYMBOL_GPL vmlinux 0xa98be70f of_pci_msi_chip_add +EXPORT_SYMBOL_GPL vmlinux 0xa9a485d9 wm8997_aod +EXPORT_SYMBOL_GPL vmlinux 0xa9d4fc48 gpio_to_desc +EXPORT_SYMBOL_GPL vmlinux 0xa9de966f __pm_runtime_suspend +EXPORT_SYMBOL_GPL vmlinux 0xa9e18049 task_handoff_unregister +EXPORT_SYMBOL_GPL vmlinux 0xaa00a96e crypto_remove_spawns +EXPORT_SYMBOL_GPL vmlinux 0xaa1b91e4 blk_mq_request_started +EXPORT_SYMBOL_GPL vmlinux 0xaa2a72bf __iowrite64_copy +EXPORT_SYMBOL_GPL vmlinux 0xaa32b874 crypto_givcipher_type +EXPORT_SYMBOL_GPL vmlinux 0xaa4bec10 rtnl_register +EXPORT_SYMBOL_GPL vmlinux 0xaa4ca7f7 sysfs_create_bin_file +EXPORT_SYMBOL_GPL vmlinux 0xaa4fb71a pmf_find_function +EXPORT_SYMBOL_GPL vmlinux 0xaa70a5a8 rio_attach_device +EXPORT_SYMBOL_GPL vmlinux 0xaa75336f __page_file_index +EXPORT_SYMBOL_GPL vmlinux 0xaa78aef9 blk_queue_lld_busy +EXPORT_SYMBOL_GPL vmlinux 0xaa8732dc spi_write_then_read +EXPORT_SYMBOL_GPL vmlinux 0xaa904fcb pm_generic_restore_early +EXPORT_SYMBOL_GPL vmlinux 0xaa9a3ccc pm_generic_thaw_early +EXPORT_SYMBOL_GPL vmlinux 0xaaa918c9 ftrace_dump +EXPORT_SYMBOL_GPL vmlinux 0xaaaa7781 regulator_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0xaabd7d9d mmc_app_cmd +EXPORT_SYMBOL_GPL vmlinux 0xaac3d17c skb_copy_ubufs +EXPORT_SYMBOL_GPL vmlinux 0xaac3de9c wakeup_source_create +EXPORT_SYMBOL_GPL vmlinux 0xaacd6b8d xhci_gen_setup +EXPORT_SYMBOL_GPL vmlinux 0xaade7f9d stmpe_disable +EXPORT_SYMBOL_GPL vmlinux 0xab01593c pm_runtime_enable +EXPORT_SYMBOL_GPL vmlinux 0xab23663d powercap_unregister_zone +EXPORT_SYMBOL_GPL vmlinux 0xab2879f8 device_property_read_u8_array +EXPORT_SYMBOL_GPL vmlinux 0xab29ad96 cpuidle_disable_device +EXPORT_SYMBOL_GPL vmlinux 0xab3b30b1 netlink_has_listeners +EXPORT_SYMBOL_GPL vmlinux 0xab538f95 cpuidle_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0xab5424f3 __rio_local_read_config_32 +EXPORT_SYMBOL_GPL vmlinux 0xab5a5de4 fixed_phy_del +EXPORT_SYMBOL_GPL vmlinux 0xab6babaf pm_qos_request +EXPORT_SYMBOL_GPL vmlinux 0xab813dab kobj_sysfs_ops +EXPORT_SYMBOL_GPL vmlinux 0xab945a16 __iowrite32_copy +EXPORT_SYMBOL_GPL vmlinux 0xab9ef5b8 __ablkcipher_walk_complete +EXPORT_SYMBOL_GPL vmlinux 0xabc640f3 list_lru_isolate +EXPORT_SYMBOL_GPL vmlinux 0xabc89eba mpc8xxx_spi_probe +EXPORT_SYMBOL_GPL vmlinux 0xabd972b8 rio_unregister_scan +EXPORT_SYMBOL_GPL vmlinux 0xac286c91 device_reset +EXPORT_SYMBOL_GPL vmlinux 0xac477d8a user_preparse +EXPORT_SYMBOL_GPL vmlinux 0xac51638c inet6_csk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0xac5b0eba da9052_free_irq +EXPORT_SYMBOL_GPL vmlinux 0xac60039a sysfs_notify +EXPORT_SYMBOL_GPL vmlinux 0xac96987e spi_sync +EXPORT_SYMBOL_GPL vmlinux 0xacd5f04a sk_setup_caps +EXPORT_SYMBOL_GPL vmlinux 0xacdefc9a regulator_is_supported_voltage +EXPORT_SYMBOL_GPL vmlinux 0xace1de41 ptp_classify_raw +EXPORT_SYMBOL_GPL vmlinux 0xace5c0fc usb_bus_list +EXPORT_SYMBOL_GPL vmlinux 0xaceb1810 blk_add_request_payload +EXPORT_SYMBOL_GPL vmlinux 0xacf7dd58 devm_regulator_register +EXPORT_SYMBOL_GPL vmlinux 0xacfba0e3 thermal_zone_device_register +EXPORT_SYMBOL_GPL vmlinux 0xad199567 usb_alloc_streams +EXPORT_SYMBOL_GPL vmlinux 0xad5af99a fuse_dev_release +EXPORT_SYMBOL_GPL vmlinux 0xad5ffba7 fat_getattr +EXPORT_SYMBOL_GPL vmlinux 0xad657ff4 usb_block_urb +EXPORT_SYMBOL_GPL vmlinux 0xad8a8b34 ata_bmdma_irq_clear +EXPORT_SYMBOL_GPL vmlinux 0xadbda715 pmac_i2c_get_adapter +EXPORT_SYMBOL_GPL vmlinux 0xadc2a872 da9055_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0xadc785ec kgdb_register_io_module +EXPORT_SYMBOL_GPL vmlinux 0xadf6aa4d tpm_pcr_read +EXPORT_SYMBOL_GPL vmlinux 0xae03869c tcp_death_row +EXPORT_SYMBOL_GPL vmlinux 0xae06dfd4 ndo_dflt_bridge_getlink +EXPORT_SYMBOL_GPL vmlinux 0xae19c366 ata_link_abort +EXPORT_SYMBOL_GPL vmlinux 0xae5e7eed inet6_lookup +EXPORT_SYMBOL_GPL vmlinux 0xae62ea75 sdhci_pci_o2_resume +EXPORT_SYMBOL_GPL vmlinux 0xae69b1c1 usermodehelper_read_unlock +EXPORT_SYMBOL_GPL vmlinux 0xae7c231d mpi_cmp +EXPORT_SYMBOL_GPL vmlinux 0xae81922b of_overlay_destroy_all +EXPORT_SYMBOL_GPL vmlinux 0xaed4f484 sysfs_remove_file_from_group +EXPORT_SYMBOL_GPL vmlinux 0xaf2e8b0a hrtimer_start_range_ns +EXPORT_SYMBOL_GPL vmlinux 0xaf7c6c1a device_property_present +EXPORT_SYMBOL_GPL vmlinux 0xaf8b0138 fsstack_copy_attr_all +EXPORT_SYMBOL_GPL vmlinux 0xafc9905c rio_dma_prep_xfer +EXPORT_SYMBOL_GPL vmlinux 0xaff0877d bsg_request_fn +EXPORT_SYMBOL_GPL vmlinux 0xb005b334 kset_create_and_add +EXPORT_SYMBOL_GPL vmlinux 0xb01fd014 dev_pm_clear_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0xb0400c6b add_timer_on +EXPORT_SYMBOL_GPL vmlinux 0xb046f47e __pci_complete_power_transition +EXPORT_SYMBOL_GPL vmlinux 0xb054b87e crypto_attr_alg2 +EXPORT_SYMBOL_GPL vmlinux 0xb06e4c5c pm_generic_resume +EXPORT_SYMBOL_GPL vmlinux 0xb08cde5f blk_rq_prep_clone +EXPORT_SYMBOL_GPL vmlinux 0xb0913148 btree_grim_visitor +EXPORT_SYMBOL_GPL vmlinux 0xb0b6cbb0 usb_reset_device +EXPORT_SYMBOL_GPL vmlinux 0xb0b85f47 ring_buffer_iter_reset +EXPORT_SYMBOL_GPL vmlinux 0xb0be9a62 sock_prot_inuse_get +EXPORT_SYMBOL_GPL vmlinux 0xb0fd933d __rio_local_read_config_8 +EXPORT_SYMBOL_GPL vmlinux 0xb13f7ce1 crypto_unregister_template +EXPORT_SYMBOL_GPL vmlinux 0xb140d14c ring_buffer_read +EXPORT_SYMBOL_GPL vmlinux 0xb140dd35 kobject_init_and_add +EXPORT_SYMBOL_GPL vmlinux 0xb1425b32 dm_table_add_target_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xb1534322 da9052_disable_irq_nosync +EXPORT_SYMBOL_GPL vmlinux 0xb18429eb suspend_device_irqs +EXPORT_SYMBOL_GPL vmlinux 0xb1acbcce rcu_barrier_sched +EXPORT_SYMBOL_GPL vmlinux 0xb1b2363b devm_kmalloc +EXPORT_SYMBOL_GPL vmlinux 0xb1bed25d dpm_resume_start +EXPORT_SYMBOL_GPL vmlinux 0xb1bfaed6 exportfs_decode_fh +EXPORT_SYMBOL_GPL vmlinux 0xb1c0c1c2 async_schedule_domain +EXPORT_SYMBOL_GPL vmlinux 0xb1d1d275 rio_request_dma +EXPORT_SYMBOL_GPL vmlinux 0xb1d9d2ab dev_pm_qos_flags +EXPORT_SYMBOL_GPL vmlinux 0xb1e25684 __trace_bputs +EXPORT_SYMBOL_GPL vmlinux 0xb1ef5c12 gpiochip_request_own_desc +EXPORT_SYMBOL_GPL vmlinux 0xb2008f6f regulator_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xb201643f ip6_datagram_recv_ctl +EXPORT_SYMBOL_GPL vmlinux 0xb2098a03 tpm_calc_ordinal_duration +EXPORT_SYMBOL_GPL vmlinux 0xb2210d64 reset_control_deassert +EXPORT_SYMBOL_GPL vmlinux 0xb2256567 register_kprobes +EXPORT_SYMBOL_GPL vmlinux 0xb2b38a19 ata_pci_device_do_resume +EXPORT_SYMBOL_GPL vmlinux 0xb2c678c0 sdio_writew +EXPORT_SYMBOL_GPL vmlinux 0xb2e764e8 suspend_valid_only_mem +EXPORT_SYMBOL_GPL vmlinux 0xb2ea5215 debugfs_create_size_t +EXPORT_SYMBOL_GPL vmlinux 0xb30e4339 of_dma_configure +EXPORT_SYMBOL_GPL vmlinux 0xb31c7ad1 unregister_virtio_driver +EXPORT_SYMBOL_GPL vmlinux 0xb324b843 debugfs_create_file_size +EXPORT_SYMBOL_GPL vmlinux 0xb346cfaf cpci_hp_unregister_controller +EXPORT_SYMBOL_GPL vmlinux 0xb35fa86a irq_domain_simple_ops +EXPORT_SYMBOL_GPL vmlinux 0xb369fa25 fuse_dev_free +EXPORT_SYMBOL_GPL vmlinux 0xb37f29d8 devm_regulator_get_optional +EXPORT_SYMBOL_GPL vmlinux 0xb3992289 user_destroy +EXPORT_SYMBOL_GPL vmlinux 0xb39b869b ata_sff_tf_read +EXPORT_SYMBOL_GPL vmlinux 0xb3d9278d virtqueue_disable_cb +EXPORT_SYMBOL_GPL vmlinux 0xb3e65236 debugfs_create_u32_array +EXPORT_SYMBOL_GPL vmlinux 0xb412c423 devfreq_event_get_event +EXPORT_SYMBOL_GPL vmlinux 0xb41513bf ping_queue_rcv_skb +EXPORT_SYMBOL_GPL vmlinux 0xb41ea77b devres_destroy +EXPORT_SYMBOL_GPL vmlinux 0xb437f89a devm_free_pages +EXPORT_SYMBOL_GPL vmlinux 0xb43dab82 skcipher_geniv_free +EXPORT_SYMBOL_GPL vmlinux 0xb43fa178 dmaengine_unmap_put +EXPORT_SYMBOL_GPL vmlinux 0xb4445419 pci_assign_unassigned_bridge_resources +EXPORT_SYMBOL_GPL vmlinux 0xb47aca01 mmc_send_tuning +EXPORT_SYMBOL_GPL vmlinux 0xb488588e tb_to_ns +EXPORT_SYMBOL_GPL vmlinux 0xb49a6904 usb_hcd_pci_probe +EXPORT_SYMBOL_GPL vmlinux 0xb4a1b604 __rio_local_write_config_8 +EXPORT_SYMBOL_GPL vmlinux 0xb4b5efff skb_morph +EXPORT_SYMBOL_GPL vmlinux 0xb4b97c90 pvclock_gtod_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xb4d07296 of_display_timings_exist +EXPORT_SYMBOL_GPL vmlinux 0xb4e10169 irq_domain_remove +EXPORT_SYMBOL_GPL vmlinux 0xb4ea7cf7 kgdb_connected +EXPORT_SYMBOL_GPL vmlinux 0xb511c8f8 __inet_lookup_listener +EXPORT_SYMBOL_GPL vmlinux 0xb5126bd1 regmap_async_complete +EXPORT_SYMBOL_GPL vmlinux 0xb51fbd64 edac_op_state +EXPORT_SYMBOL_GPL vmlinux 0xb53620d1 pci_vpd_find_info_keyword +EXPORT_SYMBOL_GPL vmlinux 0xb54533cf sysfs_remove_file_ns +EXPORT_SYMBOL_GPL vmlinux 0xb54fee2e regmap_fields_read +EXPORT_SYMBOL_GPL vmlinux 0xb551e5f0 usb_enable_lpm +EXPORT_SYMBOL_GPL vmlinux 0xb58b87c5 wm831x_device_shutdown +EXPORT_SYMBOL_GPL vmlinux 0xb58dcfa2 synchronize_sched_expedited +EXPORT_SYMBOL_GPL vmlinux 0xb5a0e11e lpddr2_jedec_addressing_table +EXPORT_SYMBOL_GPL vmlinux 0xb5aa10af atomic_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0xb5c583a7 tpm_pm_suspend +EXPORT_SYMBOL_GPL vmlinux 0xb5c8edf4 btree_init_mempool +EXPORT_SYMBOL_GPL vmlinux 0xb5e896fb tpm_get_random +EXPORT_SYMBOL_GPL vmlinux 0xb5e8db01 pmac_backlight_mutex +EXPORT_SYMBOL_GPL vmlinux 0xb5edf0ff cpuidle_unregister +EXPORT_SYMBOL_GPL vmlinux 0xb5f17edf perf_register_guest_info_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xb60a9c17 gpiod_get_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0xb60b5707 of_i8042_aux_irq +EXPORT_SYMBOL_GPL vmlinux 0xb60e3231 swiotlb_tbl_map_single +EXPORT_SYMBOL_GPL vmlinux 0xb619929f device_reprobe +EXPORT_SYMBOL_GPL vmlinux 0xb6258888 fuse_get_req +EXPORT_SYMBOL_GPL vmlinux 0xb6261484 register_die_notifier +EXPORT_SYMBOL_GPL vmlinux 0xb64877ca pci_find_ht_capability +EXPORT_SYMBOL_GPL vmlinux 0xb65831f5 dev_pm_qos_hide_latency_limit +EXPORT_SYMBOL_GPL vmlinux 0xb6630ad2 set_task_ioprio +EXPORT_SYMBOL_GPL vmlinux 0xb67c64fd __tracepoint_kfree_skb +EXPORT_SYMBOL_GPL vmlinux 0xb691037f trace_seq_putc +EXPORT_SYMBOL_GPL vmlinux 0xb69cf840 of_pci_find_child_device +EXPORT_SYMBOL_GPL vmlinux 0xb69ec621 thermal_notify_framework +EXPORT_SYMBOL_GPL vmlinux 0xb6a0ba85 ping_proc_register +EXPORT_SYMBOL_GPL vmlinux 0xb6aeb661 ata_id_c_string +EXPORT_SYMBOL_GPL vmlinux 0xb6bf5727 flush_altivec_to_thread +EXPORT_SYMBOL_GPL vmlinux 0xb6f0ef51 phy_init +EXPORT_SYMBOL_GPL vmlinux 0xb6fa42a5 __irq_set_handler +EXPORT_SYMBOL_GPL vmlinux 0xb6fe4ed4 user_free_preparse +EXPORT_SYMBOL_GPL vmlinux 0xb7098547 digsig_verify +EXPORT_SYMBOL_GPL vmlinux 0xb714a5af disk_part_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0xb75c7eed pci_slots_kset +EXPORT_SYMBOL_GPL vmlinux 0xb795df10 crypto_aead_setkey +EXPORT_SYMBOL_GPL vmlinux 0xb79a10dc virtqueue_add_sgs +EXPORT_SYMBOL_GPL vmlinux 0xb79fb656 register_jprobe +EXPORT_SYMBOL_GPL vmlinux 0xb7b53fa9 wm8350_block_read +EXPORT_SYMBOL_GPL vmlinux 0xb7d7d85c register_virtio_device +EXPORT_SYMBOL_GPL vmlinux 0xb7f22708 inet_csk_reqsk_queue_hash_add +EXPORT_SYMBOL_GPL vmlinux 0xb7f77027 rtc_tm_to_ktime +EXPORT_SYMBOL_GPL vmlinux 0xb809b9ee md_ack_all_badblocks +EXPORT_SYMBOL_GPL vmlinux 0xb80bbecc rio_route_clr_table +EXPORT_SYMBOL_GPL vmlinux 0xb82efa34 of_pci_get_devfn +EXPORT_SYMBOL_GPL vmlinux 0xb8397a8b crypto_unregister_alg +EXPORT_SYMBOL_GPL vmlinux 0xb84bd43c unuse_mm +EXPORT_SYMBOL_GPL vmlinux 0xb84db03a bsg_unregister_queue +EXPORT_SYMBOL_GPL vmlinux 0xb851e878 ehci_suspend +EXPORT_SYMBOL_GPL vmlinux 0xb8600dda dev_pm_qos_add_notifier +EXPORT_SYMBOL_GPL vmlinux 0xb86280b2 trace_output_call +EXPORT_SYMBOL_GPL vmlinux 0xb883206b hwrng_unregister +EXPORT_SYMBOL_GPL vmlinux 0xb89a8908 sata_pmp_error_handler +EXPORT_SYMBOL_GPL vmlinux 0xb8c35a93 device_show_bool +EXPORT_SYMBOL_GPL vmlinux 0xb8cd3a7f nf_logger_put +EXPORT_SYMBOL_GPL vmlinux 0xb8d0b897 dma_buf_kmap +EXPORT_SYMBOL_GPL vmlinux 0xb8d17606 virtio_device_restore +EXPORT_SYMBOL_GPL vmlinux 0xb908ed96 alarm_start +EXPORT_SYMBOL_GPL vmlinux 0xb9176155 asn1_ber_decoder +EXPORT_SYMBOL_GPL vmlinux 0xb934a1c6 fsstack_copy_inode_size +EXPORT_SYMBOL_GPL vmlinux 0xb94fa353 driver_find_device +EXPORT_SYMBOL_GPL vmlinux 0xb94fef9c regulator_map_voltage_ascend +EXPORT_SYMBOL_GPL vmlinux 0xb95d1048 ata_pci_bmdma_clear_simplex +EXPORT_SYMBOL_GPL vmlinux 0xb98a778d sdhci_pci_o2_probe_slot +EXPORT_SYMBOL_GPL vmlinux 0xb99f03a9 __fib_lookup +EXPORT_SYMBOL_GPL vmlinux 0xb9a3d038 devm_mdiobus_free +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 0xb9e38149 of_dma_is_coherent +EXPORT_SYMBOL_GPL vmlinux 0xba158769 rtas_cancel_event_scan +EXPORT_SYMBOL_GPL vmlinux 0xba173b5c sdhci_pci_o2_probe +EXPORT_SYMBOL_GPL vmlinux 0xba1bbfaf pmf_register_driver +EXPORT_SYMBOL_GPL vmlinux 0xba2b7f64 cpufreq_generic_get +EXPORT_SYMBOL_GPL vmlinux 0xba3547ec usb_sg_init +EXPORT_SYMBOL_GPL vmlinux 0xba432c70 device_create_with_groups +EXPORT_SYMBOL_GPL vmlinux 0xba47817f irq_alloc_domain_generic_chips +EXPORT_SYMBOL_GPL vmlinux 0xba501214 usb_put_hcd +EXPORT_SYMBOL_GPL vmlinux 0xba5aa18d task_active_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0xba8929ea percpu_ref_reinit +EXPORT_SYMBOL_GPL vmlinux 0xbaa65a29 regulator_bulk_disable +EXPORT_SYMBOL_GPL vmlinux 0xbab65386 of_prop_next_string +EXPORT_SYMBOL_GPL vmlinux 0xbab9a9f0 maxim_charger_currents +EXPORT_SYMBOL_GPL vmlinux 0xbad5ff89 __blk_run_queue_uncond +EXPORT_SYMBOL_GPL vmlinux 0xbad6756f ata_sg_init +EXPORT_SYMBOL_GPL vmlinux 0xbadb196d devm_regulator_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0xbb038ce4 perf_unregister_guest_info_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xbb0ab47b debug_locks +EXPORT_SYMBOL_GPL vmlinux 0xbb3f1d5a dma_buf_attach +EXPORT_SYMBOL_GPL vmlinux 0xbb6457d9 dma_buf_fd +EXPORT_SYMBOL_GPL vmlinux 0xbb67d0b4 rio_dev_get +EXPORT_SYMBOL_GPL vmlinux 0xbb7cf9cb jump_label_rate_limit +EXPORT_SYMBOL_GPL vmlinux 0xbb8c4786 task_user_regset_view +EXPORT_SYMBOL_GPL vmlinux 0xbb9bb3ba platform_get_irq +EXPORT_SYMBOL_GPL vmlinux 0xbb9d309e sysfs_remove_bin_file +EXPORT_SYMBOL_GPL vmlinux 0xbb9dfbb8 i2c_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0xbbab729a component_master_add_child +EXPORT_SYMBOL_GPL vmlinux 0xbbd4a8d5 device_property_read_u64_array +EXPORT_SYMBOL_GPL vmlinux 0xbbd7dc4c dm_get_queue_limits +EXPORT_SYMBOL_GPL vmlinux 0xbbdd33fe regulator_get_hardware_vsel_register +EXPORT_SYMBOL_GPL vmlinux 0xbbf2943a find_symbol +EXPORT_SYMBOL_GPL vmlinux 0xbc471f21 fl6_merge_options +EXPORT_SYMBOL_GPL vmlinux 0xbc749636 serial8250_handle_irq +EXPORT_SYMBOL_GPL vmlinux 0xbcac6160 pm_qos_remove_notifier +EXPORT_SYMBOL_GPL vmlinux 0xbcc3af39 rt_mutex_destroy +EXPORT_SYMBOL_GPL vmlinux 0xbcde3b84 gpiochip_unlock_as_irq +EXPORT_SYMBOL_GPL vmlinux 0xbce3bfee __rtnl_link_unregister +EXPORT_SYMBOL_GPL vmlinux 0xbd330244 devres_alloc +EXPORT_SYMBOL_GPL vmlinux 0xbd3fe1e3 disable_hardirq +EXPORT_SYMBOL_GPL vmlinux 0xbd5cb8b9 ring_buffer_resize +EXPORT_SYMBOL_GPL vmlinux 0xbd939396 ata_common_sdev_attrs +EXPORT_SYMBOL_GPL vmlinux 0xbda32a93 extcon_register_interest +EXPORT_SYMBOL_GPL vmlinux 0xbdd295f0 trace_vprintk +EXPORT_SYMBOL_GPL vmlinux 0xbdd2f42a rcu_bh_force_quiescent_state +EXPORT_SYMBOL_GPL vmlinux 0xbde91f9d pci_common_swizzle +EXPORT_SYMBOL_GPL vmlinux 0xbe0afbbb devm_usb_get_phy +EXPORT_SYMBOL_GPL vmlinux 0xbe1887e4 ata_unpack_xfermask +EXPORT_SYMBOL_GPL vmlinux 0xbe2712bc percpu_ida_alloc +EXPORT_SYMBOL_GPL vmlinux 0xbe322939 irq_domain_xlate_onetwocell +EXPORT_SYMBOL_GPL vmlinux 0xbe48e9ea usb_hcd_unmap_urb_for_dma +EXPORT_SYMBOL_GPL vmlinux 0xbe56cbe2 rtc_read_alarm +EXPORT_SYMBOL_GPL vmlinux 0xbe687e88 wake_up_all_idle_cpus +EXPORT_SYMBOL_GPL vmlinux 0xbe7eeb7e serial8250_get_port +EXPORT_SYMBOL_GPL vmlinux 0xbe886630 tty_port_install +EXPORT_SYMBOL_GPL vmlinux 0xbe96dfd8 of_reconfig_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0xbea00f1a da903x_read +EXPORT_SYMBOL_GPL vmlinux 0xbea158b9 ata_scsi_unlock_native_capacity +EXPORT_SYMBOL_GPL vmlinux 0xbea5ff1e static_key_initialized +EXPORT_SYMBOL_GPL vmlinux 0xbeb08c9c device_dma_is_coherent +EXPORT_SYMBOL_GPL vmlinux 0xbebc3553 skb_complete_tx_timestamp +EXPORT_SYMBOL_GPL vmlinux 0xbee21107 dm_internal_suspend_noflush +EXPORT_SYMBOL_GPL vmlinux 0xbeed209d spi_add_device +EXPORT_SYMBOL_GPL vmlinux 0xbef59475 blkcipher_aead_walk_virt_block +EXPORT_SYMBOL_GPL vmlinux 0xbefae180 scsi_internal_device_block +EXPORT_SYMBOL_GPL vmlinux 0xbf041102 register_vt_notifier +EXPORT_SYMBOL_GPL vmlinux 0xbf116b9d debugfs_create_atomic_t +EXPORT_SYMBOL_GPL vmlinux 0xbf1cc04b tty_termios_encode_baud_rate +EXPORT_SYMBOL_GPL vmlinux 0xbf856278 usb_unanchor_urb +EXPORT_SYMBOL_GPL vmlinux 0xbf86ada0 fib_rules_lookup +EXPORT_SYMBOL_GPL vmlinux 0xbfa342d0 anon_inode_getfd +EXPORT_SYMBOL_GPL vmlinux 0xbfb8b00e dev_pm_set_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0xbfbc5434 pciserial_resume_ports +EXPORT_SYMBOL_GPL vmlinux 0xbfccc8e2 regmap_multi_reg_write_bypassed +EXPORT_SYMBOL_GPL vmlinux 0xbfdd5c5a __platform_driver_register +EXPORT_SYMBOL_GPL vmlinux 0xbfe5616d tick_broadcast_oneshot_control +EXPORT_SYMBOL_GPL vmlinux 0xc00131cf visitor64 +EXPORT_SYMBOL_GPL vmlinux 0xc01017e5 __blkg_prfill_u64 +EXPORT_SYMBOL_GPL vmlinux 0xc02bec3c usb_unlink_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0xc0610658 usb_enable_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0xc061367e mpic_msgr_get +EXPORT_SYMBOL_GPL vmlinux 0xc063c64c pwm_config +EXPORT_SYMBOL_GPL vmlinux 0xc065a455 cpu_core_index_of_thread +EXPORT_SYMBOL_GPL vmlinux 0xc08589e0 crypto_register_rng +EXPORT_SYMBOL_GPL vmlinux 0xc08647ff ring_buffer_bytes_cpu +EXPORT_SYMBOL_GPL vmlinux 0xc0885280 irq_set_chip_and_handler_name +EXPORT_SYMBOL_GPL vmlinux 0xc091bafa securityfs_create_dir +EXPORT_SYMBOL_GPL vmlinux 0xc0a138b8 inet_twsk_schedule +EXPORT_SYMBOL_GPL vmlinux 0xc0a16793 regmap_init +EXPORT_SYMBOL_GPL vmlinux 0xc0a96e14 rcu_gp_is_expedited +EXPORT_SYMBOL_GPL vmlinux 0xc0d26387 kmsg_dump_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc0d326f8 subsys_interface_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc0d69d32 thermal_zone_device_update +EXPORT_SYMBOL_GPL vmlinux 0xc0df8865 timerqueue_add +EXPORT_SYMBOL_GPL vmlinux 0xc0e75cec visitor128 +EXPORT_SYMBOL_GPL vmlinux 0xc0f5d4ca tc3589x_reg_write +EXPORT_SYMBOL_GPL vmlinux 0xc1110900 debugfs_create_regset32 +EXPORT_SYMBOL_GPL vmlinux 0xc11ef72f of_reserved_mem_device_release +EXPORT_SYMBOL_GPL vmlinux 0xc12c4d5b led_trigger_register_simple +EXPORT_SYMBOL_GPL vmlinux 0xc141b12f devm_regulator_get +EXPORT_SYMBOL_GPL vmlinux 0xc1469572 ohci_hub_control +EXPORT_SYMBOL_GPL vmlinux 0xc14fdf2a inet_csk_clone_lock +EXPORT_SYMBOL_GPL vmlinux 0xc15a1a1d dax_zero_page_range +EXPORT_SYMBOL_GPL vmlinux 0xc15f7ece of_cpufreq_cooling_register +EXPORT_SYMBOL_GPL vmlinux 0xc1693245 usb_get_status +EXPORT_SYMBOL_GPL vmlinux 0xc17515d7 usb_hcds_loaded +EXPORT_SYMBOL_GPL vmlinux 0xc18578ed process_srcu +EXPORT_SYMBOL_GPL vmlinux 0xc19b38e9 ata_sff_tf_load +EXPORT_SYMBOL_GPL vmlinux 0xc1ab070b gpiod_get_direction +EXPORT_SYMBOL_GPL vmlinux 0xc1b34adc ohci_restart +EXPORT_SYMBOL_GPL vmlinux 0xc1c1a2fe aead_geniv_alloc +EXPORT_SYMBOL_GPL vmlinux 0xc1c26bba set_primary_fwnode +EXPORT_SYMBOL_GPL vmlinux 0xc1c53602 ata_host_detach +EXPORT_SYMBOL_GPL vmlinux 0xc1d070da inet_twsk_put +EXPORT_SYMBOL_GPL vmlinux 0xc1d6e754 pm_generic_resume_early +EXPORT_SYMBOL_GPL vmlinux 0xc200d28e crypto_lookup_template +EXPORT_SYMBOL_GPL vmlinux 0xc22a3091 vm_unmap_aliases +EXPORT_SYMBOL_GPL vmlinux 0xc2373e17 dma_buf_mmap +EXPORT_SYMBOL_GPL vmlinux 0xc23e6982 max8997_write_reg +EXPORT_SYMBOL_GPL vmlinux 0xc257fab7 sock_diag_put_meminfo +EXPORT_SYMBOL_GPL vmlinux 0xc280fb46 kdb_register +EXPORT_SYMBOL_GPL vmlinux 0xc28bccfb phy_optional_get +EXPORT_SYMBOL_GPL vmlinux 0xc2a7ee76 tty_set_termios +EXPORT_SYMBOL_GPL vmlinux 0xc2ab0303 debugfs_remove +EXPORT_SYMBOL_GPL vmlinux 0xc2b21118 tcp_send_ack +EXPORT_SYMBOL_GPL vmlinux 0xc2b220ad posix_timers_register_clock +EXPORT_SYMBOL_GPL vmlinux 0xc2bdd909 pci_max_pasids +EXPORT_SYMBOL_GPL vmlinux 0xc2c25342 usb_poison_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0xc2cd16f0 usb_hc_died +EXPORT_SYMBOL_GPL vmlinux 0xc2dcf82b regulator_bulk_get +EXPORT_SYMBOL_GPL vmlinux 0xc2e728dc ata_sff_queue_delayed_work +EXPORT_SYMBOL_GPL vmlinux 0xc30b3a36 scatterwalk_map +EXPORT_SYMBOL_GPL vmlinux 0xc3135d19 part_round_stats +EXPORT_SYMBOL_GPL vmlinux 0xc329b794 devres_release_group +EXPORT_SYMBOL_GPL vmlinux 0xc341ae6d zs_map_object +EXPORT_SYMBOL_GPL vmlinux 0xc3447dfb ata_sff_qc_fill_rtf +EXPORT_SYMBOL_GPL vmlinux 0xc37226a5 tpm_pcr_extend +EXPORT_SYMBOL_GPL vmlinux 0xc380a56d device_create +EXPORT_SYMBOL_GPL vmlinux 0xc3b8d063 debugfs_create_u64 +EXPORT_SYMBOL_GPL vmlinux 0xc3bc7ed0 ata_cable_sata +EXPORT_SYMBOL_GPL vmlinux 0xc3cdd00f dma_get_slave_channel +EXPORT_SYMBOL_GPL vmlinux 0xc3db8de3 max8997_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0xc3e3f75f cpufreq_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0xc3e965cb pskb_put +EXPORT_SYMBOL_GPL vmlinux 0xc3eea64d rio_request_outb_mbox +EXPORT_SYMBOL_GPL vmlinux 0xc421debe mmu_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0xc428068d sata_deb_timing_long +EXPORT_SYMBOL_GPL vmlinux 0xc454fc7b twl_get_type +EXPORT_SYMBOL_GPL vmlinux 0xc471c67a twl4030_audio_disable_resource +EXPORT_SYMBOL_GPL vmlinux 0xc48b7ccf ata_mode_string +EXPORT_SYMBOL_GPL vmlinux 0xc4ac807c device_del +EXPORT_SYMBOL_GPL vmlinux 0xc4c9cc7e i2c_generic_scl_recovery +EXPORT_SYMBOL_GPL vmlinux 0xc5089ec6 net_ns_type_operations +EXPORT_SYMBOL_GPL vmlinux 0xc509e09c devm_regulator_bulk_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0xc542933a timecounter_read +EXPORT_SYMBOL_GPL vmlinux 0xc575c737 debug_locks_off +EXPORT_SYMBOL_GPL vmlinux 0xc5833107 mmu_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc5a2c19f idr_alloc +EXPORT_SYMBOL_GPL vmlinux 0xc5b18b39 irq_set_default_host +EXPORT_SYMBOL_GPL vmlinux 0xc5e45571 napi_by_id +EXPORT_SYMBOL_GPL vmlinux 0xc5e9489b rtc_alarm_irq_enable +EXPORT_SYMBOL_GPL vmlinux 0xc5efc3cb usb_add_phy +EXPORT_SYMBOL_GPL vmlinux 0xc5f9ba03 __udp4_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0xc606cd3c boot_cpuid +EXPORT_SYMBOL_GPL vmlinux 0xc616803d proc_get_parent_data +EXPORT_SYMBOL_GPL vmlinux 0xc616e1d7 mpc8xxx_spi_rx_buf_u32 +EXPORT_SYMBOL_GPL vmlinux 0xc617f82c unregister_oom_notifier +EXPORT_SYMBOL_GPL vmlinux 0xc62c757b sock_gen_put +EXPORT_SYMBOL_GPL vmlinux 0xc63d847d ktime_get_mono_fast_ns +EXPORT_SYMBOL_GPL vmlinux 0xc65d3eed ring_buffer_entries_cpu +EXPORT_SYMBOL_GPL vmlinux 0xc68aa252 __atomic_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xc69b7ee5 zs_destroy_pool +EXPORT_SYMBOL_GPL vmlinux 0xc6ab527b register_pernet_device +EXPORT_SYMBOL_GPL vmlinux 0xc6cfb73d fuse_request_send_background +EXPORT_SYMBOL_GPL vmlinux 0xc6d071ab pci_assign_unassigned_bus_resources +EXPORT_SYMBOL_GPL vmlinux 0xc6d41cac of_fdt_unflatten_tree +EXPORT_SYMBOL_GPL vmlinux 0xc72e1233 __trace_bprintk +EXPORT_SYMBOL_GPL vmlinux 0xc73adfec tracepoint_probe_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc7a1840e llist_add_batch +EXPORT_SYMBOL_GPL vmlinux 0xc7a29dec seq_open_net +EXPORT_SYMBOL_GPL vmlinux 0xc7c6391c mpi_set_buffer +EXPORT_SYMBOL_GPL vmlinux 0xc7cf28c2 of_get_pci_domain_nr +EXPORT_SYMBOL_GPL vmlinux 0xc7d75d46 scsi_autopm_get_device +EXPORT_SYMBOL_GPL vmlinux 0xc7e39bca ring_buffer_dropped_events_cpu +EXPORT_SYMBOL_GPL vmlinux 0xc7f75aeb ata_sff_port_ops +EXPORT_SYMBOL_GPL vmlinux 0xc82d4493 pci_disable_ats +EXPORT_SYMBOL_GPL vmlinux 0xc83d5294 irq_find_mapping +EXPORT_SYMBOL_GPL vmlinux 0xc84ed9c4 inet6_csk_reqsk_queue_hash_add +EXPORT_SYMBOL_GPL vmlinux 0xc8536b33 md_rdev_init +EXPORT_SYMBOL_GPL vmlinux 0xc858fc32 dev_pm_qos_expose_latency_limit +EXPORT_SYMBOL_GPL vmlinux 0xc87c1f84 ktime_get +EXPORT_SYMBOL_GPL vmlinux 0xc87c6ec4 power_supply_get_property +EXPORT_SYMBOL_GPL vmlinux 0xc89979cf mbox_chan_txdone +EXPORT_SYMBOL_GPL vmlinux 0xc89bb6aa wm8350_block_write +EXPORT_SYMBOL_GPL vmlinux 0xc8a71398 of_property_read_u64 +EXPORT_SYMBOL_GPL vmlinux 0xc8add232 ring_buffer_record_disable +EXPORT_SYMBOL_GPL vmlinux 0xc8cc0881 watchdog_register_device +EXPORT_SYMBOL_GPL vmlinux 0xc8de802f cn_netlink_send +EXPORT_SYMBOL_GPL vmlinux 0xc908aa78 power_supply_am_i_supplied +EXPORT_SYMBOL_GPL vmlinux 0xc90c318e usb_autopm_put_interface_async +EXPORT_SYMBOL_GPL vmlinux 0xc91277a1 kgdb_schedule_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0xc9561772 fb_destroy_modelist +EXPORT_SYMBOL_GPL vmlinux 0xc95dc8c1 ehci_resume +EXPORT_SYMBOL_GPL vmlinux 0xc95e0b33 pwm_set_polarity +EXPORT_SYMBOL_GPL vmlinux 0xc97820b9 fib_rules_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc97d1140 cpufreq_cooling_get_level +EXPORT_SYMBOL_GPL vmlinux 0xc97e9bff register_jprobes +EXPORT_SYMBOL_GPL vmlinux 0xc9b9e88a list_lru_count_one +EXPORT_SYMBOL_GPL vmlinux 0xc9e7f6a3 usb_hcd_pci_shutdown +EXPORT_SYMBOL_GPL vmlinux 0xc9ec4e21 free_percpu +EXPORT_SYMBOL_GPL vmlinux 0xc9ef18e2 pci_intx_mask_supported +EXPORT_SYMBOL_GPL vmlinux 0xca0a351f sdev_evt_send +EXPORT_SYMBOL_GPL vmlinux 0xca1dc16e cpu_subsys +EXPORT_SYMBOL_GPL vmlinux 0xca5ced59 devm_get_free_pages +EXPORT_SYMBOL_GPL vmlinux 0xca7ca9ca sysfs_create_mount_point +EXPORT_SYMBOL_GPL vmlinux 0xca7d8764 kthread_freezable_should_stop +EXPORT_SYMBOL_GPL vmlinux 0xca8b50f2 fwnode_property_read_u64_array +EXPORT_SYMBOL_GPL vmlinux 0xcabe04de cpuidle_resume_and_unlock +EXPORT_SYMBOL_GPL vmlinux 0xcabf2b54 devm_usb_put_phy +EXPORT_SYMBOL_GPL vmlinux 0xcad17a94 blk_queue_bypass_start +EXPORT_SYMBOL_GPL vmlinux 0xcad66676 gpiod_get_value +EXPORT_SYMBOL_GPL vmlinux 0xcafe1a9b regmap_fields_update_bits +EXPORT_SYMBOL_GPL vmlinux 0xcb12a6e2 ipv6_stub +EXPORT_SYMBOL_GPL vmlinux 0xcb13d25c get_device +EXPORT_SYMBOL_GPL vmlinux 0xcb15eee9 sdhci_pci_get_data +EXPORT_SYMBOL_GPL vmlinux 0xcb25d862 usb_autopm_put_interface +EXPORT_SYMBOL_GPL vmlinux 0xcb3fdcf2 pci_user_write_config_word +EXPORT_SYMBOL_GPL vmlinux 0xcb469d2b ddebug_add_module +EXPORT_SYMBOL_GPL vmlinux 0xcb4912f8 wakeup_source_drop +EXPORT_SYMBOL_GPL vmlinux 0xcb6ef963 bitmap_resize +EXPORT_SYMBOL_GPL vmlinux 0xcb7f5bbc nf_queue_entry_get_refs +EXPORT_SYMBOL_GPL vmlinux 0xcb93bdad crypto_unregister_akcipher +EXPORT_SYMBOL_GPL vmlinux 0xcb95011e tps6586x_irq_get_virq +EXPORT_SYMBOL_GPL vmlinux 0xcba7a664 led_trigger_register +EXPORT_SYMBOL_GPL vmlinux 0xcbbaaebc wm5110_spi_regmap +EXPORT_SYMBOL_GPL vmlinux 0xcbdcaf6c ata_sas_port_stop +EXPORT_SYMBOL_GPL vmlinux 0xcbe56bc2 zs_get_total_pages +EXPORT_SYMBOL_GPL vmlinux 0xcbe6b07c get_user_pages_fast +EXPORT_SYMBOL_GPL vmlinux 0xcbee20b2 get_cpu_iowait_time_us +EXPORT_SYMBOL_GPL vmlinux 0xcc034319 usb_add_phy_dev +EXPORT_SYMBOL_GPL vmlinux 0xcc083474 cpufreq_frequency_table_get_index +EXPORT_SYMBOL_GPL vmlinux 0xcc0f1009 power_supply_notifier +EXPORT_SYMBOL_GPL vmlinux 0xcc2ba30d list_lru_del +EXPORT_SYMBOL_GPL vmlinux 0xcc339a82 ohci_init_driver +EXPORT_SYMBOL_GPL vmlinux 0xcc6394d7 __pci_hp_register +EXPORT_SYMBOL_GPL vmlinux 0xcc85fcb6 async_schedule +EXPORT_SYMBOL_GPL vmlinux 0xcccfb2fa sata_deb_timing_hotplug +EXPORT_SYMBOL_GPL vmlinux 0xccdb7158 rio_bus_type +EXPORT_SYMBOL_GPL vmlinux 0xcce30188 ata_sff_queue_pio_task +EXPORT_SYMBOL_GPL vmlinux 0xcce893d0 fb_deferred_io_cleanup +EXPORT_SYMBOL_GPL vmlinux 0xccea70e3 iptunnel_xmit +EXPORT_SYMBOL_GPL vmlinux 0xccfefbe7 pci_intx +EXPORT_SYMBOL_GPL vmlinux 0xcd1645c2 trace_seq_bitmask +EXPORT_SYMBOL_GPL vmlinux 0xcd48662c dma_buf_kmap_atomic +EXPORT_SYMBOL_GPL vmlinux 0xcd6492ab trace_seq_putmem +EXPORT_SYMBOL_GPL vmlinux 0xcd91b127 system_highpri_wq +EXPORT_SYMBOL_GPL vmlinux 0xcd974f00 rcu_all_qs +EXPORT_SYMBOL_GPL vmlinux 0xcdaaa3e6 usb_unpoison_urb +EXPORT_SYMBOL_GPL vmlinux 0xcdab73f2 ata_sas_port_alloc +EXPORT_SYMBOL_GPL vmlinux 0xcdb6adcc ras_userspace_consumers +EXPORT_SYMBOL_GPL vmlinux 0xcdca3691 nr_irqs +EXPORT_SYMBOL_GPL vmlinux 0xcdffed0b show_class_attr_string +EXPORT_SYMBOL_GPL vmlinux 0xce30d366 page_cache_async_readahead +EXPORT_SYMBOL_GPL vmlinux 0xce407f5d inet_twsk_purge +EXPORT_SYMBOL_GPL vmlinux 0xce50fa4d tpm2_calc_ordinal_duration +EXPORT_SYMBOL_GPL vmlinux 0xce61280c of_rescan_bus +EXPORT_SYMBOL_GPL vmlinux 0xce6a9d9a trace_current_buffer_discard_commit +EXPORT_SYMBOL_GPL vmlinux 0xce6db488 pci_ats_queue_depth +EXPORT_SYMBOL_GPL vmlinux 0xce6db656 rcu_is_watching +EXPORT_SYMBOL_GPL vmlinux 0xce771091 arizona_dev_init +EXPORT_SYMBOL_GPL vmlinux 0xcea3106a ohci_setup +EXPORT_SYMBOL_GPL vmlinux 0xceb96038 crypto_shash_finup +EXPORT_SYMBOL_GPL vmlinux 0xcec9388c ata_sff_data_xfer_noirq +EXPORT_SYMBOL_GPL vmlinux 0xceca4bba fuse_file_poll +EXPORT_SYMBOL_GPL vmlinux 0xcee1641c kgdb_unregister_nmi_console +EXPORT_SYMBOL_GPL vmlinux 0xceec3e55 tpm2_do_selftest +EXPORT_SYMBOL_GPL vmlinux 0xcf170286 regulator_get +EXPORT_SYMBOL_GPL vmlinux 0xcf1d7520 devm_extcon_dev_unregister +EXPORT_SYMBOL_GPL vmlinux 0xcf23fb9a spi_get_device_id +EXPORT_SYMBOL_GPL vmlinux 0xcf36846d pci_reset_bus +EXPORT_SYMBOL_GPL vmlinux 0xcf3ff2c1 usb_autopm_put_interface_no_suspend +EXPORT_SYMBOL_GPL vmlinux 0xcf48d791 inet6_csk_search_req +EXPORT_SYMBOL_GPL vmlinux 0xcf4ebbca ehci_reset +EXPORT_SYMBOL_GPL vmlinux 0xcf54ea93 async_unregister_domain +EXPORT_SYMBOL_GPL vmlinux 0xcf5b196b pcibios_claim_one_bus +EXPORT_SYMBOL_GPL vmlinux 0xcf6bc13f register_asymmetric_key_parser +EXPORT_SYMBOL_GPL vmlinux 0xcf7e9684 gpiochip_set_chained_irqchip +EXPORT_SYMBOL_GPL vmlinux 0xcf94962a tty_ldisc_flush +EXPORT_SYMBOL_GPL vmlinux 0xcf9bb831 inet_getpeer +EXPORT_SYMBOL_GPL vmlinux 0xcfb5871c irq_work_queue +EXPORT_SYMBOL_GPL vmlinux 0xcfc68341 synchronize_rcu_bh +EXPORT_SYMBOL_GPL vmlinux 0xcfc8a649 usb_put_phy +EXPORT_SYMBOL_GPL vmlinux 0xcfea717a of_pwm_xlate_with_flags +EXPORT_SYMBOL_GPL vmlinux 0xd0053233 blk_rq_err_bytes +EXPORT_SYMBOL_GPL vmlinux 0xd036a049 ata_sff_thaw +EXPORT_SYMBOL_GPL vmlinux 0xd03c7700 secure_ipv4_port_ephemeral +EXPORT_SYMBOL_GPL vmlinux 0xd040b8ba param_ops_bool_enable_only +EXPORT_SYMBOL_GPL vmlinux 0xd0532912 fuse_conn_get +EXPORT_SYMBOL_GPL vmlinux 0xd05f5f8b transport_remove_device +EXPORT_SYMBOL_GPL vmlinux 0xd06524ba raw_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd067d3c5 system_freezable_power_efficient_wq +EXPORT_SYMBOL_GPL vmlinux 0xd0b759a6 __mmu_notifier_invalidate_range_end +EXPORT_SYMBOL_GPL vmlinux 0xd0c05159 emergency_restart +EXPORT_SYMBOL_GPL vmlinux 0xd0c11cc3 fl6_sock_lookup +EXPORT_SYMBOL_GPL vmlinux 0xd117c9e4 bus_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0xd11f592f tps6586x_writes +EXPORT_SYMBOL_GPL vmlinux 0xd16712f3 crypto_check_attr_type +EXPORT_SYMBOL_GPL vmlinux 0xd174cac0 pmac_low_i2c_lock +EXPORT_SYMBOL_GPL vmlinux 0xd1822f0b cpufreq_show_cpus +EXPORT_SYMBOL_GPL vmlinux 0xd18f62ff crypto_shash_setkey +EXPORT_SYMBOL_GPL vmlinux 0xd194882c ata_host_suspend +EXPORT_SYMBOL_GPL vmlinux 0xd19c7411 pci_load_and_free_saved_state +EXPORT_SYMBOL_GPL vmlinux 0xd1a25e07 splice_to_pipe +EXPORT_SYMBOL_GPL vmlinux 0xd1bb1ed3 skb_pull_rcsum +EXPORT_SYMBOL_GPL vmlinux 0xd1ddc566 inode_congested +EXPORT_SYMBOL_GPL vmlinux 0xd1f2eee2 nf_logger_find_get +EXPORT_SYMBOL_GPL vmlinux 0xd1f7dab6 platform_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd20bf6ba dcookie_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd217e9e6 trace_set_clr_event +EXPORT_SYMBOL_GPL vmlinux 0xd225cd1b ata_scsi_simulate +EXPORT_SYMBOL_GPL vmlinux 0xd22b84c1 devm_devfreq_event_remove_edev +EXPORT_SYMBOL_GPL vmlinux 0xd2434adf thermal_zone_bind_cooling_device +EXPORT_SYMBOL_GPL vmlinux 0xd247efdb tty_wakeup +EXPORT_SYMBOL_GPL vmlinux 0xd2586d5b init_dummy_netdev +EXPORT_SYMBOL_GPL vmlinux 0xd261ade5 crypto_ahash_final +EXPORT_SYMBOL_GPL vmlinux 0xd273b1b1 __round_jiffies_up_relative +EXPORT_SYMBOL_GPL vmlinux 0xd27f4902 pm_runtime_irq_safe +EXPORT_SYMBOL_GPL vmlinux 0xd2a08ad0 event_triggers_post_call +EXPORT_SYMBOL_GPL vmlinux 0xd2aaeb4e kmsg_dump_get_buffer +EXPORT_SYMBOL_GPL vmlinux 0xd2edf4b7 ata_get_cmd_descript +EXPORT_SYMBOL_GPL vmlinux 0xd2faa0e1 ipv4_sk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0xd30fd941 unix_outq_len +EXPORT_SYMBOL_GPL vmlinux 0xd32fd86c xfrm_local_error +EXPORT_SYMBOL_GPL vmlinux 0xd3336488 xhci_dbg_trace +EXPORT_SYMBOL_GPL vmlinux 0xd33dff21 gpiod_to_irq +EXPORT_SYMBOL_GPL vmlinux 0xd35c688d invalidate_inode_pages2 +EXPORT_SYMBOL_GPL vmlinux 0xd364081a __gpiod_get +EXPORT_SYMBOL_GPL vmlinux 0xd37fa2b6 tty_port_tty_hangup +EXPORT_SYMBOL_GPL vmlinux 0xd38431c0 __udp6_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0xd386052c nl_table +EXPORT_SYMBOL_GPL vmlinux 0xd39452e7 gpiochip_remove +EXPORT_SYMBOL_GPL vmlinux 0xd3a2d55c get_net_ns_by_fd +EXPORT_SYMBOL_GPL vmlinux 0xd3cbb70e crypto_hash_walk_done +EXPORT_SYMBOL_GPL vmlinux 0xd3f3ebbc ata_do_set_mode +EXPORT_SYMBOL_GPL vmlinux 0xd4034828 system_freezable_wq +EXPORT_SYMBOL_GPL vmlinux 0xd4053259 fib_rules_register +EXPORT_SYMBOL_GPL vmlinux 0xd40675c6 kernel_kobj +EXPORT_SYMBOL_GPL vmlinux 0xd40efbc9 __netpoll_setup +EXPORT_SYMBOL_GPL vmlinux 0xd41e20f8 crypto_alg_lookup +EXPORT_SYMBOL_GPL vmlinux 0xd41fffab interval_tree_iter_first +EXPORT_SYMBOL_GPL vmlinux 0xd44a5eac kgdb_register_nmi_console +EXPORT_SYMBOL_GPL vmlinux 0xd45271f9 regulator_enable_regmap +EXPORT_SYMBOL_GPL vmlinux 0xd4a2ea41 ping_seq_stop +EXPORT_SYMBOL_GPL vmlinux 0xd4b4b9ea usb_deregister_device_driver +EXPORT_SYMBOL_GPL vmlinux 0xd4c14632 system_unbound_wq +EXPORT_SYMBOL_GPL vmlinux 0xd4fcff9f usb_add_hcd +EXPORT_SYMBOL_GPL vmlinux 0xd521062f pci_user_write_config_byte +EXPORT_SYMBOL_GPL vmlinux 0xd5322727 ata_host_alloc_pinfo +EXPORT_SYMBOL_GPL vmlinux 0xd551965e regulator_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0xd56ec2cf gpiod_set_raw_array_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0xd57ebffc page_mkclean +EXPORT_SYMBOL_GPL vmlinux 0xd5937c13 devm_kasprintf +EXPORT_SYMBOL_GPL vmlinux 0xd59d502e fsnotify +EXPORT_SYMBOL_GPL vmlinux 0xd5a226cd of_dma_xlate_by_chan_id +EXPORT_SYMBOL_GPL vmlinux 0xd5bd7dac ring_buffer_record_enable_cpu +EXPORT_SYMBOL_GPL vmlinux 0xd5dfc7ae event_triggers_call +EXPORT_SYMBOL_GPL vmlinux 0xd60c99b5 rcu_batches_completed_bh +EXPORT_SYMBOL_GPL vmlinux 0xd613d1d4 perf_pmu_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd64136bb init_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0xd6571677 of_thermal_is_trip_valid +EXPORT_SYMBOL_GPL vmlinux 0xd66228bf devres_remove +EXPORT_SYMBOL_GPL vmlinux 0xd67090f5 kobject_uevent +EXPORT_SYMBOL_GPL vmlinux 0xd67364f7 eventfd_ctx_fdget +EXPORT_SYMBOL_GPL vmlinux 0xd67e9500 bio_alloc_mddev +EXPORT_SYMBOL_GPL vmlinux 0xd6a77083 pcibios_scan_phb +EXPORT_SYMBOL_GPL vmlinux 0xd6c2e04b __tracepoint_napi_poll +EXPORT_SYMBOL_GPL vmlinux 0xd6e7ad2a ip6_datagram_connect +EXPORT_SYMBOL_GPL vmlinux 0xd6feefa5 agp_num_entries +EXPORT_SYMBOL_GPL vmlinux 0xd705b4c7 schedule_hrtimeout +EXPORT_SYMBOL_GPL vmlinux 0xd70a5128 xfrm_audit_policy_delete +EXPORT_SYMBOL_GPL vmlinux 0xd71d2596 device_remove_bin_file +EXPORT_SYMBOL_GPL vmlinux 0xd729e44a of_usb_get_maximum_speed +EXPORT_SYMBOL_GPL vmlinux 0xd768e985 regulator_has_full_constraints +EXPORT_SYMBOL_GPL vmlinux 0xd77c0bc8 klist_remove +EXPORT_SYMBOL_GPL vmlinux 0xd7963db2 device_initialize +EXPORT_SYMBOL_GPL vmlinux 0xd79f3359 irq_domain_associate +EXPORT_SYMBOL_GPL vmlinux 0xd79f6d53 key_type_user +EXPORT_SYMBOL_GPL vmlinux 0xd7bca56f evm_inode_init_security +EXPORT_SYMBOL_GPL vmlinux 0xd7d79132 put_online_cpus +EXPORT_SYMBOL_GPL vmlinux 0xd7f85691 regmap_init_mmio_clk +EXPORT_SYMBOL_GPL vmlinux 0xd7fcb5f7 usb_mon_register +EXPORT_SYMBOL_GPL vmlinux 0xd8077aa4 tpm2_startup +EXPORT_SYMBOL_GPL vmlinux 0xd8126b6c led_trigger_remove +EXPORT_SYMBOL_GPL vmlinux 0xd81de62c ring_buffer_record_enable +EXPORT_SYMBOL_GPL vmlinux 0xd820c283 eventfd_ctx_remove_wait_queue +EXPORT_SYMBOL_GPL vmlinux 0xd83b66e4 power_supply_property_is_writeable +EXPORT_SYMBOL_GPL vmlinux 0xd8504b34 __class_create +EXPORT_SYMBOL_GPL vmlinux 0xd87601cc ring_buffer_unlock_commit +EXPORT_SYMBOL_GPL vmlinux 0xd87fc0a0 usb_amd_prefetch_quirk +EXPORT_SYMBOL_GPL vmlinux 0xd8abd36d device_remove_file_self +EXPORT_SYMBOL_GPL vmlinux 0xd8b6a4b5 usb_hub_find_child +EXPORT_SYMBOL_GPL vmlinux 0xd8bfc8fb pci_bus_sem +EXPORT_SYMBOL_GPL vmlinux 0xd8c109a6 single_release_net +EXPORT_SYMBOL_GPL vmlinux 0xd90e71d6 regulator_get_optional +EXPORT_SYMBOL_GPL vmlinux 0xd921a7b4 tpm2_shutdown +EXPORT_SYMBOL_GPL vmlinux 0xd935ce3f irq_of_parse_and_map +EXPORT_SYMBOL_GPL vmlinux 0xd942d353 ring_buffer_record_off +EXPORT_SYMBOL_GPL vmlinux 0xd94aa457 display_timings_release +EXPORT_SYMBOL_GPL vmlinux 0xd96babb4 interval_tree_iter_next +EXPORT_SYMBOL_GPL vmlinux 0xd9915fe0 inet_hash_connect +EXPORT_SYMBOL_GPL vmlinux 0xd9bde79a ata_sff_wait_ready +EXPORT_SYMBOL_GPL vmlinux 0xd9ebfd96 phy_destroy +EXPORT_SYMBOL_GPL vmlinux 0xd9ecb670 ring_buffer_overruns +EXPORT_SYMBOL_GPL vmlinux 0xda085946 devm_phy_optional_get +EXPORT_SYMBOL_GPL vmlinux 0xda0a4d22 mpic_msgr_enable +EXPORT_SYMBOL_GPL vmlinux 0xda0b7ca7 led_classdev_resume +EXPORT_SYMBOL_GPL vmlinux 0xda3502fc max8997_update_reg +EXPORT_SYMBOL_GPL vmlinux 0xda3a1313 pwm_disable +EXPORT_SYMBOL_GPL vmlinux 0xda4bd919 gpiod_set_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0xda50a656 raw_hash_sk +EXPORT_SYMBOL_GPL vmlinux 0xda77fd5c tty_port_tty_wakeup +EXPORT_SYMBOL_GPL vmlinux 0xda7e5ee6 irq_get_irq_data +EXPORT_SYMBOL_GPL vmlinux 0xdaa4aae5 platform_device_alloc +EXPORT_SYMBOL_GPL vmlinux 0xdae53c45 relay_switch_subbuf +EXPORT_SYMBOL_GPL vmlinux 0xdae715e0 videomode_from_timing +EXPORT_SYMBOL_GPL vmlinux 0xdaed3073 timerqueue_del +EXPORT_SYMBOL_GPL vmlinux 0xdaf4dfb3 fb_mode_option +EXPORT_SYMBOL_GPL vmlinux 0xdb088cb1 pm_qos_add_request +EXPORT_SYMBOL_GPL vmlinux 0xdb191036 power_supply_register_no_ws +EXPORT_SYMBOL_GPL vmlinux 0xdb21fe35 bmp085_remove +EXPORT_SYMBOL_GPL vmlinux 0xdb382b31 stmpe_reg_write +EXPORT_SYMBOL_GPL vmlinux 0xdb737376 crypto_unregister_shash +EXPORT_SYMBOL_GPL vmlinux 0xdb744cea regulator_get_bypass_regmap +EXPORT_SYMBOL_GPL vmlinux 0xdb8a1b3f usermodehelper_read_trylock +EXPORT_SYMBOL_GPL vmlinux 0xdb93cea3 simple_attr_open +EXPORT_SYMBOL_GPL vmlinux 0xdba0a56e inet6_destroy_sock +EXPORT_SYMBOL_GPL vmlinux 0xdbe7afb6 __pm_stay_awake +EXPORT_SYMBOL_GPL vmlinux 0xdbf5f539 mpic_subsys +EXPORT_SYMBOL_GPL vmlinux 0xdbf7cb70 mpi_get_nbits +EXPORT_SYMBOL_GPL vmlinux 0xdc145698 bpf_prog_alloc +EXPORT_SYMBOL_GPL vmlinux 0xdc1c379d __list_lru_init +EXPORT_SYMBOL_GPL vmlinux 0xdc2adba7 mnt_clone_write +EXPORT_SYMBOL_GPL vmlinux 0xdc2ded31 bus_create_file +EXPORT_SYMBOL_GPL vmlinux 0xdc45f1cf crypto_alg_sem +EXPORT_SYMBOL_GPL vmlinux 0xdc461430 irq_set_affinity_hint +EXPORT_SYMBOL_GPL vmlinux 0xdc47d4f2 file_ra_state_init +EXPORT_SYMBOL_GPL vmlinux 0xdc4af705 cm_notify_event +EXPORT_SYMBOL_GPL vmlinux 0xdc722e42 i2c_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0xdc825d6c usb_amd_quirk_pll_disable +EXPORT_SYMBOL_GPL vmlinux 0xdc8fd939 power_supply_external_power_changed +EXPORT_SYMBOL_GPL vmlinux 0xdc97af2e syscore_suspend +EXPORT_SYMBOL_GPL vmlinux 0xdc9fa232 raw_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0xdcb6b78c invalidate_inode_pages2_range +EXPORT_SYMBOL_GPL vmlinux 0xdcc659f3 fuse_do_open +EXPORT_SYMBOL_GPL vmlinux 0xdce7b510 for_each_kernel_tracepoint +EXPORT_SYMBOL_GPL vmlinux 0xdd02841c ata_host_activate +EXPORT_SYMBOL_GPL vmlinux 0xdd17ffec trace_clock +EXPORT_SYMBOL_GPL vmlinux 0xdd2b6f75 pci_enable_pcie_error_reporting +EXPORT_SYMBOL_GPL vmlinux 0xdd2efc0f ring_buffer_reset_cpu +EXPORT_SYMBOL_GPL vmlinux 0xdd391eff profile_event_unregister +EXPORT_SYMBOL_GPL vmlinux 0xdd642800 pwm_can_sleep +EXPORT_SYMBOL_GPL vmlinux 0xdd644865 pm_generic_suspend +EXPORT_SYMBOL_GPL vmlinux 0xdd729424 usb_anchor_empty +EXPORT_SYMBOL_GPL vmlinux 0xdd7fd6a8 devm_regmap_init +EXPORT_SYMBOL_GPL vmlinux 0xdd89d254 regulator_bulk_free +EXPORT_SYMBOL_GPL vmlinux 0xdd94bfd1 pmf_call_function +EXPORT_SYMBOL_GPL vmlinux 0xdda8e5fb dev_pm_put_subsys_data +EXPORT_SYMBOL_GPL vmlinux 0xddb85c0e cpci_hp_register_bus +EXPORT_SYMBOL_GPL vmlinux 0xddbeca62 fat_flush_inodes +EXPORT_SYMBOL_GPL vmlinux 0xddbeeecc pci_lock_rescan_remove +EXPORT_SYMBOL_GPL vmlinux 0xddd58dc0 ring_buffer_reset +EXPORT_SYMBOL_GPL vmlinux 0xdde19215 spi_bus_type +EXPORT_SYMBOL_GPL vmlinux 0xddef6a1b device_get_child_node_count +EXPORT_SYMBOL_GPL vmlinux 0xde10d4ee gpiochip_free_own_desc +EXPORT_SYMBOL_GPL vmlinux 0xde2df9d7 regmap_get_reg_stride +EXPORT_SYMBOL_GPL vmlinux 0xde4cdc3d netlink_add_tap +EXPORT_SYMBOL_GPL vmlinux 0xde56fb75 of_pci_range_parser_one +EXPORT_SYMBOL_GPL vmlinux 0xde58a145 device_init_wakeup +EXPORT_SYMBOL_GPL vmlinux 0xde6c8b66 __inet_lookup_established +EXPORT_SYMBOL_GPL vmlinux 0xde87ed8b register_net_sysctl +EXPORT_SYMBOL_GPL vmlinux 0xde99eaee ip6_sk_dst_lookup_flow +EXPORT_SYMBOL_GPL vmlinux 0xdea59fa6 fat_fill_super +EXPORT_SYMBOL_GPL vmlinux 0xdeab4aa2 dma_buf_put +EXPORT_SYMBOL_GPL vmlinux 0xdeb868a7 usb_autopm_get_interface_no_resume +EXPORT_SYMBOL_GPL vmlinux 0xdebb6a45 da9052_enable_irq +EXPORT_SYMBOL_GPL vmlinux 0xdedd2e6c ohci_hub_status_data +EXPORT_SYMBOL_GPL vmlinux 0xdeee1aa7 ata_pci_bmdma_init_one +EXPORT_SYMBOL_GPL vmlinux 0xdeef23eb rio_register_scan +EXPORT_SYMBOL_GPL vmlinux 0xdef1ac8d sdio_release_irq +EXPORT_SYMBOL_GPL vmlinux 0xdf014e57 rtc_irq_register +EXPORT_SYMBOL_GPL vmlinux 0xdf0f75c6 eventfd_signal +EXPORT_SYMBOL_GPL vmlinux 0xdf2ebe8d usb_get_phy +EXPORT_SYMBOL_GPL vmlinux 0xdf69c331 find_module +EXPORT_SYMBOL_GPL vmlinux 0xdf711dc0 blk_queue_flush_queueable +EXPORT_SYMBOL_GPL vmlinux 0xdf7a9650 blkio_cgrp_subsys +EXPORT_SYMBOL_GPL vmlinux 0xdf7c1f07 rio_add_device +EXPORT_SYMBOL_GPL vmlinux 0xdf9cb102 ata_eh_qc_retry +EXPORT_SYMBOL_GPL vmlinux 0xdfad7cab gpiod_direction_output +EXPORT_SYMBOL_GPL vmlinux 0xdff3b431 scsi_nl_sock +EXPORT_SYMBOL_GPL vmlinux 0xe007de41 kallsyms_lookup_name +EXPORT_SYMBOL_GPL vmlinux 0xe00d73cf platform_get_resource +EXPORT_SYMBOL_GPL vmlinux 0xe011ea32 debugfs_create_u32 +EXPORT_SYMBOL_GPL vmlinux 0xe02a9e7e wakeup_source_prepare +EXPORT_SYMBOL_GPL vmlinux 0xe02eb6d0 ring_buffer_commit_overrun_cpu +EXPORT_SYMBOL_GPL vmlinux 0xe036b3e9 mpic_msgr_put +EXPORT_SYMBOL_GPL vmlinux 0xe03ccd51 register_kretprobes +EXPORT_SYMBOL_GPL vmlinux 0xe041d4f7 put_pid +EXPORT_SYMBOL_GPL vmlinux 0xe045cdd6 virtio_check_driver_offered_feature +EXPORT_SYMBOL_GPL vmlinux 0xe0634d34 sdio_run_irqs +EXPORT_SYMBOL_GPL vmlinux 0xe06c5a37 debugfs_create_x16 +EXPORT_SYMBOL_GPL vmlinux 0xe07231f1 generic_access_phys +EXPORT_SYMBOL_GPL vmlinux 0xe07ca631 cpu_bit_bitmap +EXPORT_SYMBOL_GPL vmlinux 0xe089cfcc agp_memory_reserved +EXPORT_SYMBOL_GPL vmlinux 0xe09af365 bmp085_detect +EXPORT_SYMBOL_GPL vmlinux 0xe0acd9f0 devm_phy_create +EXPORT_SYMBOL_GPL vmlinux 0xe0d1a657 subsys_interface_register +EXPORT_SYMBOL_GPL vmlinux 0xe0d62832 sata_port_ops +EXPORT_SYMBOL_GPL vmlinux 0xe1059079 get_net_ns_by_pid +EXPORT_SYMBOL_GPL vmlinux 0xe121cbb6 static_key_slow_dec_deferred +EXPORT_SYMBOL_GPL vmlinux 0xe1302288 pci_dev_run_wake +EXPORT_SYMBOL_GPL vmlinux 0xe13b4425 ata_sas_port_start +EXPORT_SYMBOL_GPL vmlinux 0xe16591ab stop_machine +EXPORT_SYMBOL_GPL vmlinux 0xe1775ee7 dm_get_reserved_bio_based_ios +EXPORT_SYMBOL_GPL vmlinux 0xe188f8cf virtqueue_get_avail +EXPORT_SYMBOL_GPL vmlinux 0xe1ab139c platform_device_put +EXPORT_SYMBOL_GPL vmlinux 0xe1bbcc5b of_pci_get_host_bridge_resources +EXPORT_SYMBOL_GPL vmlinux 0xe1bd6c99 rio_init_mports +EXPORT_SYMBOL_GPL vmlinux 0xe1c045cc skb_append_pagefrags +EXPORT_SYMBOL_GPL vmlinux 0xe1c6e905 devm_kfree +EXPORT_SYMBOL_GPL vmlinux 0xe1c7f48c wm831x_auxadc_read +EXPORT_SYMBOL_GPL vmlinux 0xe1fc29a0 devm_power_supply_register +EXPORT_SYMBOL_GPL vmlinux 0xe2292f43 ping_err +EXPORT_SYMBOL_GPL vmlinux 0xe26ad33b irq_create_strict_mappings +EXPORT_SYMBOL_GPL vmlinux 0xe273c2ed blkg_rwstat_recursive_sum +EXPORT_SYMBOL_GPL vmlinux 0xe28a1d1a sdhci_pci_spt_drive_strength +EXPORT_SYMBOL_GPL vmlinux 0xe29ce0c5 tcp_reno_cong_avoid +EXPORT_SYMBOL_GPL vmlinux 0xe2bf71a2 __tracepoint_xhci_dbg_quirks +EXPORT_SYMBOL_GPL vmlinux 0xe2c8be5e usb_choose_configuration +EXPORT_SYMBOL_GPL vmlinux 0xe2d7f5f9 pm_generic_suspend_noirq +EXPORT_SYMBOL_GPL vmlinux 0xe2e0f35e regmap_reinit_cache +EXPORT_SYMBOL_GPL vmlinux 0xe2eb0589 unregister_kretprobe +EXPORT_SYMBOL_GPL vmlinux 0xe2fa829d usb_root_hub_lost_power +EXPORT_SYMBOL_GPL vmlinux 0xe3043ff9 request_any_context_irq +EXPORT_SYMBOL_GPL vmlinux 0xe3132c4e regmap_update_bits_async +EXPORT_SYMBOL_GPL vmlinux 0xe316b343 gen_pool_avail +EXPORT_SYMBOL_GPL vmlinux 0xe32631a2 crypto_register_pcomp +EXPORT_SYMBOL_GPL vmlinux 0xe3272744 perf_event_release_kernel +EXPORT_SYMBOL_GPL vmlinux 0xe32fb230 alarm_expires_remaining +EXPORT_SYMBOL_GPL vmlinux 0xe33cdadd usb_control_msg +EXPORT_SYMBOL_GPL vmlinux 0xe3594964 ata_bmdma_port_start +EXPORT_SYMBOL_GPL vmlinux 0xe384a102 usb_speed_string +EXPORT_SYMBOL_GPL vmlinux 0xe39ba4a3 devres_get +EXPORT_SYMBOL_GPL vmlinux 0xe3b6e3ca rtc_device_register +EXPORT_SYMBOL_GPL vmlinux 0xe3deeec6 sdio_align_size +EXPORT_SYMBOL_GPL vmlinux 0xe3f2c5ca cpu_remove_dev_attr +EXPORT_SYMBOL_GPL vmlinux 0xe3ffbca2 devm_led_classdev_register +EXPORT_SYMBOL_GPL vmlinux 0xe408fe54 skb_to_sgvec_nomark +EXPORT_SYMBOL_GPL vmlinux 0xe4309905 syscore_resume +EXPORT_SYMBOL_GPL vmlinux 0xe43ec05e of_platform_populate +EXPORT_SYMBOL_GPL vmlinux 0xe453a308 pmf_do_irq +EXPORT_SYMBOL_GPL vmlinux 0xe4689576 ktime_get_with_offset +EXPORT_SYMBOL_GPL vmlinux 0xe47c2e3c of_dma_controller_register +EXPORT_SYMBOL_GPL vmlinux 0xe495ae3c unregister_trace_event +EXPORT_SYMBOL_GPL vmlinux 0xe4971ade tracing_alloc_snapshot +EXPORT_SYMBOL_GPL vmlinux 0xe4a6bca1 device_wakeup_enable +EXPORT_SYMBOL_GPL vmlinux 0xe4ba28b9 tcp_register_congestion_control +EXPORT_SYMBOL_GPL vmlinux 0xe4bb39b6 wm8350_read_auxadc +EXPORT_SYMBOL_GPL vmlinux 0xe4bfb48e usb_unlocked_disable_lpm +EXPORT_SYMBOL_GPL vmlinux 0xe4c031f8 btree_merge +EXPORT_SYMBOL_GPL vmlinux 0xe4e61158 bmp085_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0xe4f8f6ec virtqueue_enable_cb_delayed +EXPORT_SYMBOL_GPL vmlinux 0xe50ccd53 trace_event_buffer_lock_reserve +EXPORT_SYMBOL_GPL vmlinux 0xe52eec51 arizona_free_irq +EXPORT_SYMBOL_GPL vmlinux 0xe530ff8b ref_module +EXPORT_SYMBOL_GPL vmlinux 0xe5583558 sync_page_io +EXPORT_SYMBOL_GPL vmlinux 0xe5591c07 ip6_dst_lookup +EXPORT_SYMBOL_GPL vmlinux 0xe56d9bae cpufreq_register_driver +EXPORT_SYMBOL_GPL vmlinux 0xe56fa847 flush_kthread_worker +EXPORT_SYMBOL_GPL vmlinux 0xe5723437 of_phy_get +EXPORT_SYMBOL_GPL vmlinux 0xe58278c8 perf_event_create_kernel_counter +EXPORT_SYMBOL_GPL vmlinux 0xe5883bd9 class_compat_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe58fb452 aer_irq +EXPORT_SYMBOL_GPL vmlinux 0xe5a0f036 ata_noop_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0xe5ec6e88 tpm_get_timeouts +EXPORT_SYMBOL_GPL vmlinux 0xe61fe629 transport_destroy_device +EXPORT_SYMBOL_GPL vmlinux 0xe651f76e selinux_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0xe65d302b ata_host_register +EXPORT_SYMBOL_GPL vmlinux 0xe671f33c pmac_i2c_get_channel +EXPORT_SYMBOL_GPL vmlinux 0xe683cd9b ata_bmdma_port_intr +EXPORT_SYMBOL_GPL vmlinux 0xe6c68334 ddebug_remove_module +EXPORT_SYMBOL_GPL vmlinux 0xe6e1c5fe uuid_be_gen +EXPORT_SYMBOL_GPL vmlinux 0xe6ef4abf dm_internal_resume_fast +EXPORT_SYMBOL_GPL vmlinux 0xe6fde5ec pci_store_saved_state +EXPORT_SYMBOL_GPL vmlinux 0xe701205d wm8350_clear_bits +EXPORT_SYMBOL_GPL vmlinux 0xe7145917 usb_show_dynids +EXPORT_SYMBOL_GPL vmlinux 0xe736c4f7 usb_disable_xhci_ports +EXPORT_SYMBOL_GPL vmlinux 0xe75c44df put_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0xe769232e sprint_symbol_no_offset +EXPORT_SYMBOL_GPL vmlinux 0xe7bf3d50 hrtimer_init_sleeper +EXPORT_SYMBOL_GPL vmlinux 0xe7c4df93 wait_on_page_bit_killable_timeout +EXPORT_SYMBOL_GPL vmlinux 0xe7d012f9 sdio_readsb +EXPORT_SYMBOL_GPL vmlinux 0xe7f18b3c threads_per_subcore +EXPORT_SYMBOL_GPL vmlinux 0xe7f2585a device_wakeup_disable +EXPORT_SYMBOL_GPL vmlinux 0xe7ffe877 pcpu_base_addr +EXPORT_SYMBOL_GPL vmlinux 0xe818b32b ata_bmdma_interrupt +EXPORT_SYMBOL_GPL vmlinux 0xe84f6e5c pciserial_remove_ports +EXPORT_SYMBOL_GPL vmlinux 0xe850121b device_set_wakeup_enable +EXPORT_SYMBOL_GPL vmlinux 0xe85c55e7 btree_destroy +EXPORT_SYMBOL_GPL vmlinux 0xe862c4b7 dpm_suspend_start +EXPORT_SYMBOL_GPL vmlinux 0xe87e307f blocking_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe88310c4 __rio_local_write_config_32 +EXPORT_SYMBOL_GPL vmlinux 0xe8aaaecd pm_generic_freeze_late +EXPORT_SYMBOL_GPL vmlinux 0xe8bb3814 wakeup_source_register +EXPORT_SYMBOL_GPL vmlinux 0xe8d5eaf8 pwm_get +EXPORT_SYMBOL_GPL vmlinux 0xe8df2a2a blk_mq_register_disk +EXPORT_SYMBOL_GPL vmlinux 0xe8eef95b devm_regmap_init_spi +EXPORT_SYMBOL_GPL vmlinux 0xe8ef02c4 crypto_alloc_tfm +EXPORT_SYMBOL_GPL vmlinux 0xe9140382 rio_release_outb_mbox +EXPORT_SYMBOL_GPL vmlinux 0xe92de931 driver_remove_file +EXPORT_SYMBOL_GPL vmlinux 0xe93e49c3 devres_free +EXPORT_SYMBOL_GPL vmlinux 0xe9631d24 wakeup_source_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe98c6093 skb_tstamp_tx +EXPORT_SYMBOL_GPL vmlinux 0xe9909939 thermal_cooling_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe99185e5 inet_csk_bind_conflict +EXPORT_SYMBOL_GPL vmlinux 0xe9c3e0bc class_compat_create_link +EXPORT_SYMBOL_GPL vmlinux 0xe9c70fc4 serial8250_rpm_put +EXPORT_SYMBOL_GPL vmlinux 0xe9d1b7cf irq_to_pcap +EXPORT_SYMBOL_GPL vmlinux 0xea124bd1 gcd +EXPORT_SYMBOL_GPL vmlinux 0xea418e0f atapi_cmd_type +EXPORT_SYMBOL_GPL vmlinux 0xea4c6fe9 __pm_runtime_use_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0xea7625f7 wm8400_reg_read +EXPORT_SYMBOL_GPL vmlinux 0xeab94a21 syscon_node_to_regmap +EXPORT_SYMBOL_GPL vmlinux 0xeadab217 rio_release_inb_mbox +EXPORT_SYMBOL_GPL vmlinux 0xeadc5ac3 posix_acl_default_xattr_handler +EXPORT_SYMBOL_GPL vmlinux 0xeae1bbe1 crypto_alg_extsize +EXPORT_SYMBOL_GPL vmlinux 0xeafac295 rio_lock_device +EXPORT_SYMBOL_GPL vmlinux 0xeb04c2a7 devfreq_event_disable_edev +EXPORT_SYMBOL_GPL vmlinux 0xeb4d896d relay_reset +EXPORT_SYMBOL_GPL vmlinux 0xeb5837d2 usb_disable_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0xeb73b521 ata_dev_set_feature +EXPORT_SYMBOL_GPL vmlinux 0xeb759d98 pci_reset_bridge_secondary_bus +EXPORT_SYMBOL_GPL vmlinux 0xeb8ae736 klist_init +EXPORT_SYMBOL_GPL vmlinux 0xeb926aaf sata_async_notification +EXPORT_SYMBOL_GPL vmlinux 0xeb9a8b00 dev_attr_em_message_type +EXPORT_SYMBOL_GPL vmlinux 0xeb9abbee ata_sff_queue_work +EXPORT_SYMBOL_GPL vmlinux 0xeba9027a skb_partial_csum_set +EXPORT_SYMBOL_GPL vmlinux 0xebb12636 i2c_adapter_type +EXPORT_SYMBOL_GPL vmlinux 0xebc3edd0 tty_buffer_request_room +EXPORT_SYMBOL_GPL vmlinux 0xebcd3272 gpiod_direction_input +EXPORT_SYMBOL_GPL vmlinux 0xebdb31d4 analyse_instr +EXPORT_SYMBOL_GPL vmlinux 0xebe1299e of_usb_get_dr_mode +EXPORT_SYMBOL_GPL vmlinux 0xebec57c4 ring_buffer_oldest_event_ts +EXPORT_SYMBOL_GPL vmlinux 0xebfdb532 pm_runtime_barrier +EXPORT_SYMBOL_GPL vmlinux 0xec1b043e regulator_suspend_prepare +EXPORT_SYMBOL_GPL vmlinux 0xec259357 flush_kthread_work +EXPORT_SYMBOL_GPL vmlinux 0xec25f967 klist_del +EXPORT_SYMBOL_GPL vmlinux 0xec8913f6 max8997_read_reg +EXPORT_SYMBOL_GPL vmlinux 0xeca47390 pci_create_root_bus +EXPORT_SYMBOL_GPL vmlinux 0xece3018b __clocksource_register_scale +EXPORT_SYMBOL_GPL vmlinux 0xed0194c5 gpiochip_is_requested +EXPORT_SYMBOL_GPL vmlinux 0xed18f1c2 elv_register +EXPORT_SYMBOL_GPL vmlinux 0xed350f0e mpc8xxx_spi_tx_buf_u8 +EXPORT_SYMBOL_GPL vmlinux 0xed6f332e tps65912_reg_write +EXPORT_SYMBOL_GPL vmlinux 0xed7902b6 cpufreq_freq_transition_begin +EXPORT_SYMBOL_GPL vmlinux 0xed848e7e sdio_memcpy_fromio +EXPORT_SYMBOL_GPL vmlinux 0xedbd632e ata_sff_hsm_move +EXPORT_SYMBOL_GPL vmlinux 0xedda92c4 crypto_chain +EXPORT_SYMBOL_GPL vmlinux 0xee06a658 ip6_push_pending_frames +EXPORT_SYMBOL_GPL vmlinux 0xee15d67f regulator_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xee1bfb6b rdev_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0xee6b71c4 syscon_regmap_lookup_by_compatible +EXPORT_SYMBOL_GPL vmlinux 0xee7cfe29 usb_hcd_unmap_urb_setup_for_dma +EXPORT_SYMBOL_GPL vmlinux 0xeea84325 irq_set_chained_handler_and_data +EXPORT_SYMBOL_GPL vmlinux 0xeeb7c89b pmf_get_function +EXPORT_SYMBOL_GPL vmlinux 0xeebb977b unix_peer_get +EXPORT_SYMBOL_GPL vmlinux 0xeee4af63 ahash_register_instance +EXPORT_SYMBOL_GPL vmlinux 0xeeee0435 fat_dir_empty +EXPORT_SYMBOL_GPL vmlinux 0xeefb2289 sdio_readw +EXPORT_SYMBOL_GPL vmlinux 0xef10ffe6 pm_wakeup_event +EXPORT_SYMBOL_GPL vmlinux 0xef1ab7c0 look_up_OID +EXPORT_SYMBOL_GPL vmlinux 0xef20aa08 device_register +EXPORT_SYMBOL_GPL vmlinux 0xef2d900e crypto_create_tfm +EXPORT_SYMBOL_GPL vmlinux 0xef409b74 kmsg_dump_get_line +EXPORT_SYMBOL_GPL vmlinux 0xef464c28 getboottime64 +EXPORT_SYMBOL_GPL vmlinux 0xef6c3f70 round_jiffies_up_relative +EXPORT_SYMBOL_GPL vmlinux 0xef74211c fanout_mutex +EXPORT_SYMBOL_GPL vmlinux 0xef8c7850 pcap_adc_async +EXPORT_SYMBOL_GPL vmlinux 0xefa2c27d register_tracepoint_module_notifier +EXPORT_SYMBOL_GPL vmlinux 0xefc3be26 usb_put_dev +EXPORT_SYMBOL_GPL vmlinux 0xeff5d365 pcibios_finish_adding_to_bus +EXPORT_SYMBOL_GPL vmlinux 0xf0037f94 crypto_register_algs +EXPORT_SYMBOL_GPL vmlinux 0xf0064d04 of_irq_to_resource_table +EXPORT_SYMBOL_GPL vmlinux 0xf006a1bf pci_enable_ats +EXPORT_SYMBOL_GPL vmlinux 0xf03c072f __ftrace_vbprintk +EXPORT_SYMBOL_GPL vmlinux 0xf0412d27 __pm_relax +EXPORT_SYMBOL_GPL vmlinux 0xf05144a4 bitmap_copy_from_slot +EXPORT_SYMBOL_GPL vmlinux 0xf063b32b wm8350_device_exit +EXPORT_SYMBOL_GPL vmlinux 0xf069cc1a mpc8xxx_spi_remove +EXPORT_SYMBOL_GPL vmlinux 0xf0727f12 ktime_get_raw_fast_ns +EXPORT_SYMBOL_GPL vmlinux 0xf0756285 led_trigger_blink_oneshot +EXPORT_SYMBOL_GPL vmlinux 0xf082a718 extcon_get_cable_state_ +EXPORT_SYMBOL_GPL vmlinux 0xf08e0afa hwmon_device_register +EXPORT_SYMBOL_GPL vmlinux 0xf09b2441 nf_unregister_afinfo +EXPORT_SYMBOL_GPL vmlinux 0xf09ba574 get_task_comm +EXPORT_SYMBOL_GPL vmlinux 0xf09ffe95 dev_pm_qos_expose_latency_tolerance +EXPORT_SYMBOL_GPL vmlinux 0xf0a9d425 get_governor_parent_kobj +EXPORT_SYMBOL_GPL vmlinux 0xf0af5c5e __class_register +EXPORT_SYMBOL_GPL vmlinux 0xf0ba2844 sysfs_create_groups +EXPORT_SYMBOL_GPL vmlinux 0xf0c9f2ec pci_find_next_capability +EXPORT_SYMBOL_GPL vmlinux 0xf0d56942 regmap_field_alloc +EXPORT_SYMBOL_GPL vmlinux 0xf0f5dbc2 timerqueue_iterate_next +EXPORT_SYMBOL_GPL vmlinux 0xf0f70693 of_property_read_u32_array +EXPORT_SYMBOL_GPL vmlinux 0xf0fe6882 user_update +EXPORT_SYMBOL_GPL vmlinux 0xf1153903 usb_reset_configuration +EXPORT_SYMBOL_GPL vmlinux 0xf12b00fc regmap_register_patch +EXPORT_SYMBOL_GPL vmlinux 0xf158f170 klist_add_tail +EXPORT_SYMBOL_GPL vmlinux 0xf15dd4fa device_store_ulong +EXPORT_SYMBOL_GPL vmlinux 0xf15ddee2 bio_associate_blkcg +EXPORT_SYMBOL_GPL vmlinux 0xf1771478 agp_remove_bridge +EXPORT_SYMBOL_GPL vmlinux 0xf184d189 kernel_power_off +EXPORT_SYMBOL_GPL vmlinux 0xf1a62b6f of_i8042_kbd_irq +EXPORT_SYMBOL_GPL vmlinux 0xf1adc79c regulator_bulk_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0xf1b31314 delayacct_on +EXPORT_SYMBOL_GPL vmlinux 0xf1ba173f class_create_file_ns +EXPORT_SYMBOL_GPL vmlinux 0xf21e1f9b disable_percpu_irq +EXPORT_SYMBOL_GPL vmlinux 0xf224f56c usb_deregister_dev +EXPORT_SYMBOL_GPL vmlinux 0xf2520dd0 transport_configure_device +EXPORT_SYMBOL_GPL vmlinux 0xf256e1b1 ata_sff_postreset +EXPORT_SYMBOL_GPL vmlinux 0xf27977e2 async_synchronize_cookie_domain +EXPORT_SYMBOL_GPL vmlinux 0xf290e0cd gpiochip_find +EXPORT_SYMBOL_GPL vmlinux 0xf299b8a3 devfreq_event_get_edev_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0xf2a39222 pstore_register +EXPORT_SYMBOL_GPL vmlinux 0xf2c0a14a gen_pool_get +EXPORT_SYMBOL_GPL vmlinux 0xf2f077cc pkey_id_type_name +EXPORT_SYMBOL_GPL vmlinux 0xf2faef91 device_rename +EXPORT_SYMBOL_GPL vmlinux 0xf2fca922 uart_parse_options +EXPORT_SYMBOL_GPL vmlinux 0xf30dd2e9 of_pci_address_to_resource +EXPORT_SYMBOL_GPL vmlinux 0xf30e105d ezx_pcap_write +EXPORT_SYMBOL_GPL vmlinux 0xf30fda27 lzo1x_decompress_safe +EXPORT_SYMBOL_GPL vmlinux 0xf31b3fd1 workqueue_set_max_active +EXPORT_SYMBOL_GPL vmlinux 0xf32ad983 powercap_unregister_control_type +EXPORT_SYMBOL_GPL vmlinux 0xf32e7db3 vfs_removexattr +EXPORT_SYMBOL_GPL vmlinux 0xf331236f btree_geo32 +EXPORT_SYMBOL_GPL vmlinux 0xf3586dc2 gpiod_get_raw_value +EXPORT_SYMBOL_GPL vmlinux 0xf373eb10 tcp_reno_ssthresh +EXPORT_SYMBOL_GPL vmlinux 0xf3808cb1 get_state_synchronize_rcu +EXPORT_SYMBOL_GPL vmlinux 0xf396e8f2 put_device +EXPORT_SYMBOL_GPL vmlinux 0xf3b451ca kdb_poll_funcs +EXPORT_SYMBOL_GPL vmlinux 0xf3bcc9ea dm_internal_suspend_fast +EXPORT_SYMBOL_GPL vmlinux 0xf3dfb076 fuse_get_req_for_background +EXPORT_SYMBOL_GPL vmlinux 0xf3f18238 ktime_get_resolution_ns +EXPORT_SYMBOL_GPL vmlinux 0xf3f856c5 adp5520_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xf415b35a unregister_asymmetric_key_parser +EXPORT_SYMBOL_GPL vmlinux 0xf4289e50 ipv4_sk_redirect +EXPORT_SYMBOL_GPL vmlinux 0xf437efc5 crypto_register_aeads +EXPORT_SYMBOL_GPL vmlinux 0xf44749c5 leds_list_lock +EXPORT_SYMBOL_GPL vmlinux 0xf449ea15 regulator_set_load +EXPORT_SYMBOL_GPL vmlinux 0xf45cbcdb wm8350_reg_unlock +EXPORT_SYMBOL_GPL vmlinux 0xf4641730 skb_complete_wifi_ack +EXPORT_SYMBOL_GPL vmlinux 0xf4749db2 kernfs_path +EXPORT_SYMBOL_GPL vmlinux 0xf494f618 mmc_regulator_get_ocrmask +EXPORT_SYMBOL_GPL vmlinux 0xf499704a dma_buf_kunmap +EXPORT_SYMBOL_GPL vmlinux 0xf499fdb2 rcu_barrier_bh +EXPORT_SYMBOL_GPL vmlinux 0xf4b333d1 synchronize_srcu_expedited +EXPORT_SYMBOL_GPL vmlinux 0xf4f2669f subsys_dev_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0xf4f8a8fa md_do_sync +EXPORT_SYMBOL_GPL vmlinux 0xf4fc2d6c __ring_buffer_alloc +EXPORT_SYMBOL_GPL vmlinux 0xf50250e0 pci_enable_sriov +EXPORT_SYMBOL_GPL vmlinux 0xf5098b39 mbox_controller_register +EXPORT_SYMBOL_GPL vmlinux 0xf52c819f tpm2_gen_interrupt +EXPORT_SYMBOL_GPL vmlinux 0xf54bd49b lcm +EXPORT_SYMBOL_GPL vmlinux 0xf553318d cpuidle_pause_and_lock +EXPORT_SYMBOL_GPL vmlinux 0xf55d824c ata_msleep +EXPORT_SYMBOL_GPL vmlinux 0xf5784b52 rio_unlock_device +EXPORT_SYMBOL_GPL vmlinux 0xf5788b87 inet_csk_search_req +EXPORT_SYMBOL_GPL vmlinux 0xf57f01bf scsi_flush_work +EXPORT_SYMBOL_GPL vmlinux 0xf5988da6 cpci_hp_register_controller +EXPORT_SYMBOL_GPL vmlinux 0xf5a691cd invalidate_bh_lrus +EXPORT_SYMBOL_GPL vmlinux 0xf5bcf1b2 __cookie_v4_check +EXPORT_SYMBOL_GPL vmlinux 0xf5c2e15e crypto_aead_reqsize +EXPORT_SYMBOL_GPL vmlinux 0xf5d8e62c device_property_read_string_array +EXPORT_SYMBOL_GPL vmlinux 0xf5f60bc4 of_pci_msi_chip_remove +EXPORT_SYMBOL_GPL vmlinux 0xf60e40f0 regulator_get_mode +EXPORT_SYMBOL_GPL vmlinux 0xf61e2d18 crypto_init_shash_spawn +EXPORT_SYMBOL_GPL vmlinux 0xf66cdc64 key_set_timeout +EXPORT_SYMBOL_GPL vmlinux 0xf6ad5c97 mbox_client_peek_data +EXPORT_SYMBOL_GPL vmlinux 0xf6c247be usb_init_urb +EXPORT_SYMBOL_GPL vmlinux 0xf6c8dc62 cpu_hotplug_enable +EXPORT_SYMBOL_GPL vmlinux 0xf6e874f5 ata_timing_merge +EXPORT_SYMBOL_GPL vmlinux 0xf6ee74de __mmu_notifier_invalidate_range_start +EXPORT_SYMBOL_GPL vmlinux 0xf710a55c usb_disable_lpm +EXPORT_SYMBOL_GPL vmlinux 0xf712d0e7 crypto_ahash_digest +EXPORT_SYMBOL_GPL vmlinux 0xf724ac1c regulator_get_exclusive +EXPORT_SYMBOL_GPL vmlinux 0xf756b769 devm_usb_get_phy_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0xf7715fb7 agp_add_bridge +EXPORT_SYMBOL_GPL vmlinux 0xf787771c pci_user_read_config_dword +EXPORT_SYMBOL_GPL vmlinux 0xf7982a4d get_current_tty +EXPORT_SYMBOL_GPL vmlinux 0xf7a59265 sysfs_create_link +EXPORT_SYMBOL_GPL vmlinux 0xf7be7217 sdio_writeb +EXPORT_SYMBOL_GPL vmlinux 0xf7c11f5a power_supply_get_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0xf7cbac7e zap_vma_ptes +EXPORT_SYMBOL_GPL vmlinux 0xf80cdeed mnt_want_write +EXPORT_SYMBOL_GPL vmlinux 0xf82ec309 regmap_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0xf82f16b3 execute_in_process_context +EXPORT_SYMBOL_GPL vmlinux 0xf82f3657 work_on_cpu +EXPORT_SYMBOL_GPL vmlinux 0xf8343362 ata_host_alloc +EXPORT_SYMBOL_GPL vmlinux 0xf846506f irq_set_affinity_notifier +EXPORT_SYMBOL_GPL vmlinux 0xf84974c7 crypto_dequeue_request +EXPORT_SYMBOL_GPL vmlinux 0xf8802492 print_stack_trace +EXPORT_SYMBOL_GPL vmlinux 0xf8894fe9 usb_alloc_coherent +EXPORT_SYMBOL_GPL vmlinux 0xf88fc993 pci_enable_pasid +EXPORT_SYMBOL_GPL vmlinux 0xf8d808ae crypto_init_ahash_spawn +EXPORT_SYMBOL_GPL vmlinux 0xf8e30a6f pci_cfg_access_unlock +EXPORT_SYMBOL_GPL vmlinux 0xf8e6b564 hibernation_set_ops +EXPORT_SYMBOL_GPL vmlinux 0xf8f0e788 regmap_attach_dev +EXPORT_SYMBOL_GPL vmlinux 0xf8f3a0fb ata_ratelimit +EXPORT_SYMBOL_GPL vmlinux 0xf8fc7660 usb_hcd_platform_shutdown +EXPORT_SYMBOL_GPL vmlinux 0xf8fe3d0b kmsg_dump_register +EXPORT_SYMBOL_GPL vmlinux 0xf92ce956 kdb_printf +EXPORT_SYMBOL_GPL vmlinux 0xf9300314 fb_deferred_io_init +EXPORT_SYMBOL_GPL vmlinux 0xf932015f __raw_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xf932043e __pm_runtime_resume +EXPORT_SYMBOL_GPL vmlinux 0xf9524206 regulator_get_linear_step +EXPORT_SYMBOL_GPL vmlinux 0xf95322f4 kthread_parkme +EXPORT_SYMBOL_GPL vmlinux 0xf9766b89 __inet_inherit_port +EXPORT_SYMBOL_GPL vmlinux 0xf97f7142 scsi_get_vpd_page +EXPORT_SYMBOL_GPL vmlinux 0xf991c09f rcu_qs_ctr +EXPORT_SYMBOL_GPL vmlinux 0xf9a054b5 __round_jiffies +EXPORT_SYMBOL_GPL vmlinux 0xf9ca3160 ata_id_xfermask +EXPORT_SYMBOL_GPL vmlinux 0xfa051717 raw_seq_next +EXPORT_SYMBOL_GPL vmlinux 0xfa0f25a9 of_platform_depopulate +EXPORT_SYMBOL_GPL vmlinux 0xfa1472e9 fwnode_property_read_u8_array +EXPORT_SYMBOL_GPL vmlinux 0xfa1eb910 unregister_syscore_ops +EXPORT_SYMBOL_GPL vmlinux 0xfa2e28e8 usb_get_phy_dev +EXPORT_SYMBOL_GPL vmlinux 0xfa34fa43 power_supply_register +EXPORT_SYMBOL_GPL vmlinux 0xfa44249e device_store_int +EXPORT_SYMBOL_GPL vmlinux 0xfab60503 klist_iter_init_node +EXPORT_SYMBOL_GPL vmlinux 0xfad22826 user_describe +EXPORT_SYMBOL_GPL vmlinux 0xfadd2d83 component_bind_all +EXPORT_SYMBOL_GPL vmlinux 0xfae49b62 da903x_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0xfb240b67 security_inode_create +EXPORT_SYMBOL_GPL vmlinux 0xfb2b0d7f __percpu_ida_init +EXPORT_SYMBOL_GPL vmlinux 0xfb32b30f ring_buffer_read_prepare_sync +EXPORT_SYMBOL_GPL vmlinux 0xfb39ac61 vfs_getxattr +EXPORT_SYMBOL_GPL vmlinux 0xfb525dfc pmac_i2c_get_type +EXPORT_SYMBOL_GPL vmlinux 0xfb52b77d __wake_up_locked +EXPORT_SYMBOL_GPL vmlinux 0xfb6ea1b2 pmac_i2c_get_bus_node +EXPORT_SYMBOL_GPL vmlinux 0xfb6eedf9 power_group_name +EXPORT_SYMBOL_GPL vmlinux 0xfbb43d99 srcu_init_notifier_head +EXPORT_SYMBOL_GPL vmlinux 0xfbbbe4f6 crypto_mod_get +EXPORT_SYMBOL_GPL vmlinux 0xfbbd41ca no_action +EXPORT_SYMBOL_GPL vmlinux 0xfbcfdcfa bpf_prog_free +EXPORT_SYMBOL_GPL vmlinux 0xfbda7441 ip6_dst_lookup_flow +EXPORT_SYMBOL_GPL vmlinux 0xfbe29174 pci_cfg_access_lock +EXPORT_SYMBOL_GPL vmlinux 0xfbe5461e iptunnel_pull_header +EXPORT_SYMBOL_GPL vmlinux 0xfbf79368 uprobe_unregister +EXPORT_SYMBOL_GPL vmlinux 0xfc03d97a page_is_ram +EXPORT_SYMBOL_GPL vmlinux 0xfc055190 __netpoll_free_async +EXPORT_SYMBOL_GPL vmlinux 0xfc1d3604 devm_spi_register_master +EXPORT_SYMBOL_GPL vmlinux 0xfc2097fb scsi_target_block +EXPORT_SYMBOL_GPL vmlinux 0xfc3d741b wm8350_gpio_config +EXPORT_SYMBOL_GPL vmlinux 0xfc585879 ping_bind +EXPORT_SYMBOL_GPL vmlinux 0xfc65490b devm_mdiobus_alloc_size +EXPORT_SYMBOL_GPL vmlinux 0xfc65caee wb_writeout_inc +EXPORT_SYMBOL_GPL vmlinux 0xfc7ba71c __mmc_switch +EXPORT_SYMBOL_GPL vmlinux 0xfc93cd90 debugfs_create_devm_seqfile +EXPORT_SYMBOL_GPL vmlinux 0xfca55759 of_dma_request_slave_channel +EXPORT_SYMBOL_GPL vmlinux 0xfcb2331e rdev_get_dev +EXPORT_SYMBOL_GPL vmlinux 0xfcd7bc0b ring_buffer_empty +EXPORT_SYMBOL_GPL vmlinux 0xfce508c6 bus_rescan_devices +EXPORT_SYMBOL_GPL vmlinux 0xfce6cf9f wm831x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xfcffb4e1 pmac_i2c_get_flags +EXPORT_SYMBOL_GPL vmlinux 0xfd7a50ea set_timer_slack +EXPORT_SYMBOL_GPL vmlinux 0xfd89e77a crypto_alloc_instance +EXPORT_SYMBOL_GPL vmlinux 0xfd9f5451 __mmu_notifier_invalidate_range +EXPORT_SYMBOL_GPL vmlinux 0xfdbc273d device_find_child +EXPORT_SYMBOL_GPL vmlinux 0xfdc62356 fib_table_lookup +EXPORT_SYMBOL_GPL vmlinux 0xfdf53b82 trace_call_bpf +EXPORT_SYMBOL_GPL vmlinux 0xfdfaab9b tps6586x_reads +EXPORT_SYMBOL_GPL vmlinux 0xfdffa10b devm_usb_get_phy_dev +EXPORT_SYMBOL_GPL vmlinux 0xfe2e79b9 ip6_local_out_sk +EXPORT_SYMBOL_GPL vmlinux 0xfe9262cc virtqueue_add_outbuf +EXPORT_SYMBOL_GPL vmlinux 0xfe990052 gpio_free +EXPORT_SYMBOL_GPL vmlinux 0xfeb3dc13 blocking_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xfed11ed1 usb_mon_deregister +EXPORT_SYMBOL_GPL vmlinux 0xfeea4e42 bus_find_device_by_name +EXPORT_SYMBOL_GPL vmlinux 0xfef38757 blk_insert_cloned_request +EXPORT_SYMBOL_GPL vmlinux 0xfef8a166 trace_current_buffer_lock_reserve +EXPORT_SYMBOL_GPL vmlinux 0xff05fa13 vring_interrupt +EXPORT_SYMBOL_GPL vmlinux 0xff1b462e ata_sff_freeze +EXPORT_SYMBOL_GPL vmlinux 0xff5a8cfe cn_del_callback +EXPORT_SYMBOL_GPL vmlinux 0xff633558 vprintk_default +EXPORT_SYMBOL_GPL vmlinux 0xff672615 relay_file_operations +EXPORT_SYMBOL_GPL vmlinux 0xff75e9aa crypto_init_spawn +EXPORT_SYMBOL_GPL vmlinux 0xff85e567 cpuidle_register_driver +EXPORT_SYMBOL_GPL vmlinux 0xff94ad1e dev_pm_qos_expose_flags +EXPORT_SYMBOL_GPL vmlinux 0xff9a48f3 fwnode_property_read_string_array +EXPORT_SYMBOL_GPL vmlinux 0xffa2b701 ata_pci_bmdma_prepare_host +EXPORT_SYMBOL_GPL vmlinux 0xffb47678 extcon_set_cable_state_ +EXPORT_SYMBOL_GPL vmlinux 0xffdc5cde irq_create_of_mapping +EXPORT_SYMBOL_GPL vmlinux 0xffdec6bf wakeup_source_add --- linux-raspi2-4.2.0.orig/debian.master/abi/4.2.0-26.31/powerpc/powerpc-smp.compiler +++ linux-raspi2-4.2.0/debian.master/abi/4.2.0-26.31/powerpc/powerpc-smp.compiler @@ -0,0 +1 @@ +GCC: (Ubuntu 5.2.1-22ubuntu2) 5.2.1 20151010 --- linux-raspi2-4.2.0.orig/debian.master/abi/4.2.0-26.31/powerpc/powerpc-smp.modules +++ linux-raspi2-4.2.0/debian.master/abi/4.2.0-26.31/powerpc/powerpc-smp.modules @@ -0,0 +1,4221 @@ +3c574_cs +3c589_cs +3c59x +3w-9xxx +3w-sas +3w-xxxx +6lowpan +6pack +8021q +8139cp +8139too +8250_dw +8255 +8255_pci +8390 +842 +842_compress +842_decompress +88pm800 +88pm805 +88pm80x +88pm80x_onkey +88pm8607 +88pm860x_battery +88pm860x_bl +88pm860x_charger +88pm860x_onkey +88pm860x-ts +9p +9pnet +9pnet_rdma +9pnet_virtio +a100u2w +a3d +a8293 +aacraid +aat2870_bl +aat2870-regulator +ab3100 +ab3100-otp +ac97_bus +acard-ahci +acecad +acenic +act200l-sir +act8865-regulator +act_bpf +act_connmark +act_csum +act_gact +act_ipt +actisys-sir +act_mirred +act_nat +act_pedit +act_police +act_simple +act_skbedit +act_vlan +ad2s1200 +ad2s1210 +ad2s90 +ad5064 +ad525x_dpot +ad525x_dpot-i2c +ad525x_dpot-spi +ad5360 +ad5380 +ad5398 +ad5421 +ad5446 +ad5449 +ad5504 +ad5624r_spi +ad5686 +ad5755 +ad5764 +ad5791 +ad5933 +ad714x +ad714x-i2c +ad714x-spi +ad7150 +ad7152 +ad7192 +ad7266 +ad7280a +ad7291 +ad7298 +ad7303 +ad7314 +ad7414 +ad7418 +ad7476 +ad7606 +ad7746 +ad7780 +ad7791 +ad7793 +ad7816 +ad7877 +ad7879 +ad7879-i2c +ad7879-spi +ad7887 +ad7923 +ad799x +ad8366 +ad9523 +ad9832 +ad9834 +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 +ade7753 +ade7754 +ade7758 +ade7759 +ade7854 +ade7854-i2c +ade7854-spi +adf4350 +adfs +adi +adis16060 +adis16080 +adis16130 +adis16136 +adis16201 +adis16203 +adis16204 +adis16209 +adis16220 +adis16240 +adis16260 +adis16400 +adis16480 +adis_lib +adjd_s311 +adl_pci6208 +adl_pci7x3x +adl_pci8164 +adl_pci9111 +adl_pci9118 +adm1021 +adm1025 +adm1026 +adm1029 +adm1031 +adm1275 +adm8211 +adm9240 +adp5520_bl +adp5520-keys +adp5588-keys +adp5589-keys +adp8860_bl +adp8870_bl +adq12b +ads1015 +ads7828 +ads7846 +ads7871 +ad_sigma_delta +adt7310 +adt7316 +adt7316-i2c +adt7316-spi +adt7410 +adt7411 +adt7462 +adt7470 +adt7475 +adt7x10 +adummy +adutux +adv7170 +adv7175 +adv7511 +adv7604 +adv7842 +advansys +adv_pci1710 +adv_pci1723 +adv_pci1724 +adv_pci_dio +adxl34x +adxl34x-i2c +adxl34x-spi +adxrs450 +af9013 +af9033 +af_alg +affs +af_key +af_packet_diag +af-rxrpc +ah4 +ah6 +aha152x_cs +ahci +ahci_ceva +ahci_platform +aic79xx +aic7xxx +aic94xx +aio_aio12_8 +aio_iiro_16 +aiptek +aircable +airo +airo_cs +airport +airspy +ak8975 +al3320a +algif_aead +algif_hash +algif_rng +algif_skcipher +ali-ircc +alim7101_wdt +altera-ci +altera_jtaguart +altera_ps2 +altera-stapl +altera_tse +altera_uart +alx +am53c974 +ambassador +amc6821 +amd +amd5536udc +amd8111e +amdgpu +amplc_dio200 +amplc_dio200_common +amplc_dio200_pci +amplc_pc236 +amplc_pc236_common +amplc_pc263 +amplc_pci224 +amplc_pci230 +amplc_pci236 +amplc_pci263 +ams +ams369fg06 +analog +anatop-regulator +ansi_cprng +ans-lcd +anubis +aoe +apbps2 +apds9300 +apds9802als +apds990x +apm_emu +apm-emulation +apm_power +apm-power +appledisplay +appletalk +appletouch +applicom +ar1021_i2c +ar5523 +ar7part +arc4 +arc_emac +arcmsr +arcnet +arc_ps2 +arc-rawmode +arc-rimi +arc_uart +arizona-haptics +arizona-i2c +arizona-ldo1 +arizona-micsupp +arizona-spi +ark3116 +arkfb +arptable_filter +arp_tables +arpt_mangle +as102_fe +as3711_bl +as3711-regulator +as3722-regulator +as3935 +as5011 +asc7621 +asix +ast +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 +ath3k +ath5k +ath6kl_core +ath6kl_sdio +ath6kl_usb +ath9k +ath9k_common +ath9k_htc +ath9k_hw +ati_remote +ati_remote2 +atl1 +atl1c +atl1e +atl2 +atm +atmel +atmel_cs +atmel-hlcdc +atmel_mxt_ts +atmel_pci +atmtcp +atp870u +atusb +atxp1 +atyfb +au0828 +au8522_common +au8522_decoder +au8522_dig +aufs +auo_k1900fb +auo_k1901fb +auo_k190x +auo-pixcir-ts +authenc +authencesn +auth_rpcgss +autofs4 +avma1_cs +avm_cs +avmfritz +ax25 +ax88179_178a +axnet_cs +axp20x-pek +axp20x-regulator +axp288_adc +axp288_charger +axp288_fuel_gauge +b1 +b1dma +b1pci +b1pcmcia +b2c2-flexcop +b2c2-flexcop-pci +b2c2-flexcop-usb +b43 +b43legacy +b44 +bas_gigaset +batman-adv +baycom_epp +baycom_par +baycom_ser_fdx +baycom_ser_hdx +bcache +bch +bcm203x +bcm3510 +bcm590xx +bcm590xx-regulator +bcm5974 +bcm7xxx +bcm87xx +bcma +bcma-hcd +bcmsysport +bd6107 +bdc +bdc_pci +be2iscsi +be2net +befs +belkin_sa +bfa +bfs +bfusb +bh1750 +bh1770glc +bh1780gli +binfmt_misc +block2mtd +blocklayoutdriver +blowfish_common +blowfish_generic +bluecard_cs +bluetooth +bluetooth_6lowpan +bma150 +bma180 +bmac +bmc150-accel +bmc150_magn +bmg160 +bmp085-i2c +bmp085-spi +bmp280 +bna +bnep +bnx2 +bnx2fc +bnx2i +bnx2x +bonding +bpa10x +bpck +bpck6 +bpqether +bq2415x_charger +bq24190_charger +bq24257_charger +bq24735-charger +bq25890_charger +bq27x00_battery +br2684 +brcmfmac +brcmsmac +brcmutil +bridge +br_netfilter +broadcom +broadsheetfb +bsd_comp +bt3c_cs +bt819 +bt856 +bt866 +bt878 +btbcm +btcoexist +btintel +btmrvl +btmrvl_sdio +btrfs +btrtl +btsdio +bttv +btuart_cs +btusb +btwilink +bu21013_ts +budget +budget-av +budget-ci +budget-core +budget-patch +BusLogic +c4 +c67x00 +c6xdigio +cachefiles +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-raw +cap11xx +capi +capidrv +capmode +carl9170 +carminefb +cassini +cast5_generic +cast6_generic +cast_common +catc +cb710 +cb710-mmc +cb_das16_cs +cb_pcidas +cb_pcidas64 +cb_pcidda +cb_pcimdas +cb_pcimdda +cc2520 +cc770 +cc770_isa +cc770_platform +c_can +c_can_pci +c_can_platform +cciss +ccm +cdc-acm +cdc_eem +cdc_ether +cdc_mbim +cdc_ncm +cdc-phonet +cdc_subset +cdc-wdm +ceph +cfg80211 +cfi_cmdset_0001 +cfi_cmdset_0002 +cfi_cmdset_0020 +cfi_probe +cfi_util +cfspi_slave +ch +ch341 +ch7006 +chacha20_generic +chacha20poly1305 +chaoskey +chipone_icn8318 +chipreg +chnl_net +cicada +cifs +ci_hdrc +ci_hdrc_imx +ci_hdrc_msm +ci_hdrc_pci +ci_hdrc_usb2 +ci_hdrc_zevio +cirrus +cirrusfb +clip +cls_basic +cls_bpf +cls_cgroup +cls_flow +cls_flower +cls_fw +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_cs +com20020-pci +com90io +com90xx +comedi +comedi_8254 +comedi_8255 +comedi_bond +comedi_isadma +comedi_parport +comedi_pci +comedi_pcmcia +comedi_test +comedi_usb +comm +configfs +contec_pci_dio +cordic +core +cp210x +cpia2 +cpsw_ale +cpu-notifier-error-inject +cramfs +crc32 +crc7 +crc8 +crc-ccitt +crc-itu-t +cros_ec +cros_ec_devs +cros_ec_i2c +cros_ec_keyb +cros_ec_spi +cryptd +cryptoloop +crypto_null +crypto_user +cs5345 +cs53l32a +csiostor +ctr +cts +cuse +cw1200_core +cw1200_wlan_sdio +cw1200_wlan_spi +cx18 +cx18-alsa +cx22700 +cx22702 +cx231xx +cx231xx-alsa +cx231xx-dvb +cx2341x +cx23885 +cx24110 +cx24113 +cx24116 +cx24117 +cx24120 +cx24123 +cx25821 +cx25821-alsa +cx25840 +cx82310_eth +cx8800 +cx8802 +cx88-alsa +cx88-blackbird +cx88-dvb +cx88-vp3054-i2c +cx88xx +cxacru +cxd2099 +cxd2820r +cxgb +cxgb3 +cxgb3i +cxgb4 +cxgb4i +cxgb4vf +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 +da9030_battery +da9034-ts +da903x +da903x_bl +da9052-battery +da9052_bl +da9052-hwmon +da9052_onkey +da9052-regulator +da9052_tsi +da9052_wdt +da9055-hwmon +da9055_onkey +da9055-regulator +da9055_wdt +da9063_onkey +da9063-regulator +da9063_wdt +da9150-charger +da9150-core +da9150-gpadc +da9210-regulator +da9211-regulator +dac02 +DAC960 +daqboard2000 +das08 +das08_cs +das08_isa +das08_pci +das16 +das16m1 +das1800 +das6402 +das800 +davicom +db9 +dc395x +dccp +dccp_diag +dccp_ipv4 +dccp_ipv6 +dccp_probe +ddbridge +de2104x +de4x5 +decnet +deflate +defxx +denali +denali_pci +des_generic +dgap +dgnc +dht11 +dib0070 +dib0090 +dib3000mb +dib3000mc +dib7000m +dib7000p +dib8000 +dibx000_common +digi_acceleport +digicolor-usart +diskonchip +divacapi +divadidd +diva_idi +diva_mnt +divas +dl2k +dlci +dlm +dln2 +dm1105 +dm9601 +dm-bio-prison +dm-bufio +dm-cache +dm-cache-cleaner +dm-cache-mq +dm-cache-smq +dm-crypt +dm-delay +dm-era +dmfe +dm-flakey +dm-log +dm-log-userspace +dm-log-writes +dmm32at +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-verity +dmx3191d +dm-zero +dnet +dn_rtmsg +docg3 +docg4 +donauboe +dp83867 +dpt_i2o +drbd +drbg +drm +drm_kms_helper +drv260x +drv2665 +drv2667 +drx39xyj +drxd +drxk +ds1621 +ds1682 +ds1wm +ds2482 +ds2490 +ds2760_battery +ds2780_battery +ds2781_battery +ds2782_battery +ds3000 +ds620 +dsbr100 +dscc4 +dss1_divert +dst +dst_ca +dstr +dt2801 +dt2811 +dt2814 +dt2815 +dt2817 +dt282x +dt3000 +dt3155 +dt9812 +dtl1_cs +dummy +dummy-irq +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-digitv +dvb-usb-dtt200u +dvb-usb-dtv5100 +dvb-usb-dvbsky +dvb-usb-dw2102 +dvb-usb-ec168 +dvb-usb-friio +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_v2 +dvb-usb-vp702x +dvb-usb-vp7045 +dwc3 +dwc3-pci +dw_dmac +dw_dmac_core +dw_dmac_pci +dwmac-generic +dwmac-ipq806x +dwmac-lpc18xx +dwmac-meson +dwmac-rk +dwmac-socfpga +dwmac-sti +dwmac-sunxi +dw_wdt +dyna_pci10xx +dynapro +e100 +e1000 +e1000e +e3x0-button +e4000 +earth-pt1 +earth-pt3 +eata +ebt_802_3 +ebtable_broute +ebtable_filter +ebtable_nat +ebtables +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 +ec100 +echainiv +echo +edac_core +edt-ft5x06 +eeprom +eeprom_93cx6 +eeprom_93xx46 +eeti_ts +efs +egalax_ts +ehset +elan_i2c +elants_i2c +elo +elsa_cs +em28xx +em28xx-alsa +em28xx-dvb +em28xx-rc +em28xx-v4l +emac_arc +emac_rockchip +emc1403 +emc2103 +emc6w201 +em_canid +em_cmp +emi26 +emi62 +em_ipset +em_meta +em_nbyte +empeg +ems_pci +ems_pcmcia +ems_usb +em_text +emu10k1-gp +em_u32 +enc28j60 +enclosure +eni +enic +epat +epia +epic100 +eql +esas2r +esd_usb2 +esi-sir +esp4 +esp6 +esp_scsi +et1011c +et131x +ethoc +evbug +exofs +extcon-adc-jack +extcon-arizona +extcon-axp288 +extcon-gpio +extcon-max14577 +extcon-max77693 +extcon-max77843 +extcon-max8997 +extcon-palmas +extcon-rt8973a +extcon-sm5502 +extcon-usb-gpio +ezusb +f2fs +f75375s +f81232 +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_ssd1289 +fb_ssd1306 +fb_ssd1331 +fb_ssd1351 +fb_st7735r +fb_sys_fops +fbtft +fbtft_device +fb_tinylcd +fb_tls8204 +fb_uc1701 +fb_upd161704 +fb_watterott +fc0011 +fc0012 +fc0013 +fc2580 +fcoe +fcrypt +fdomain +fdomain_cs +fealnx +ff-memless +fid +firedtv +firestream +firewire-core +firewire-net +firewire-ohci +firewire-sbp2 +firewire-serial +fit2 +fit3 +fixed +fl512 +fld +flexcan +flexfb +floppy +fm10k +fm801-gp +fmc +fmc-chardev +fmc-fakedev +fmc-trivial +fmc-write-eeprom +fm_drv +fmvj18x_cs +forcedeth +fore_200e +fotg210-hcd +fotg210-udc +fou +freevxfs +friq +frpw +fsa9480 +fscache +fsl-edma +fsl_elbc_nand +fsl_lpuart +ft1000 +ft1000_pcmcia +ftdi-elan +ftdi_sio +ftl +fujitsu_ts +fusb300_udc +fusbh200-hcd +g450_pll +g760a +g762 +g_acm_ms +gadgetfs +gamecon +gameport +garmin_gps +garp +g_audio +g_cdc +gcm +g_dbgp +gdmtty +gdmulte +gdmwm +gdth +generic +generic-adc-battery +generic_bl +genet +geneve +geneve_core +gen_probe +g_ether +gf128mul +gf2k +g_ffs +gfs2 +ghash-generic +g_hid +gigaset +girbil-sir +gl518sm +gl520sm +gl620a +gluebi +g_mass_storage +g_midi +g_ncm +g_nokia +go7007 +go7007-loader +go7007-usb +goku_udc +goodix +gp2ap002a00f +gp2ap020a00f +gpio +gpio-74x164 +gpio-74xx-mmio +gpio-addr-flash +gpio-adnp +gpio-adp5520 +gpio-adp5588 +gpio-altera +gpio-amd8111 +gpio-arizona +gpio_backlight +gpio-beeper +gpio-charger +gpio-crystalcove +gpio-da9052 +gpio-da9055 +gpio-dln2 +gpio-dwapb +gpio-fan +gpio-generic +gpio-grgpio +gpio-ir-recv +gpio-janz-ttl +gpio-kempld +gpio_keys +gpio_keys_polled +gpio-lp3943 +gpio-max7300 +gpio-max7301 +gpio-max730x +gpio-max732x +gpio-mc33880 +gpio-mcp23s08 +gpio-ml-ioh +gpio_mouse +gpio-pca953x +gpio-pcf857x +gpio-rdc321x +gpio-regulator +gpio-sch311x +gpio-syscon +gpio_tilt_polled +gpio-tps65912 +gpio-twl4030 +gpio-twl6040 +gpio-ucb1400 +gpio-viperboard +gpio-vx855 +gpio_wdt +gpio-wm831x +gpio-wm8350 +gpio-wm8994 +g_printer +grace +grcan +gre +grip +grip_mp +gr_udc +gsc_hpdi +g_serial +gs_fpga +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 +gs_usb +gtco +guillemot +gunze +g_webcam +gxt4500 +g_zero +hackrf +hamachi +hampshire +hanwang +hci +hci_uart +hci_vhci +hdlc +hdlc_cisco +hdlcdrv +hdlc_fr +hdlc_ppp +hdlc_raw +hdlc_raw_eth +hdlc_x25 +hdpvr +he +hexium_gemini +hexium_orion +hfc4s8s_l1 +hfcmulti +hfcpci +hfcsusb +hfc_usb +hfs +hfsplus +hi6421-pmic-core +hi6421-regulator +hid +hid-a4tech +hid-apple +hid-appleir +hid-aureal +hid-axff +hid-belkin +hid-betopff +hid-cherry +hid-chicony +hid-cp2112 +hid-cypress +hid-dr +hid-elecom +hid-elo +hid-emsff +hid-ezkey +hid-gaff +hid-generic +hid-gt683r +hid-gyration +hid-holtekff +hid-holtek-kbd +hid-holtek-mouse +hid-icade +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 +hidp +hid-penmount +hid-petalynx +hid-picolcd +hid-pl +hid-plantronics +hid-primax +hid-prodikeys +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-iio-common +hid-sensor-incl-3d +hid-sensor-magn-3d +hid-sensor-press +hid-sensor-prox +hid-sensor-rotation +hid-sensor-trigger +hid-sjoy +hid-sony +hid-speedlink +hid-steelseries +hid-sunplus +hid-thingm +hid-tivo +hid-tmff +hid-topseed +hid-twinhan +hid-uclogic +hid-waltop +hid-wiimote +hid-xinmo +hid-zpff +hid-zydacron +hifn_795x +hih6130 +hisax +hisax_fcpcipnp +hisax_isac +hisax_st5481 +hisi504_nand +hmc5843_core +hmc5843_i2c +hmc5843_spi +hmc6352 +hopper +horizon +hostap +hostap_cs +hostap_pci +hostap_plx +hp100 +hpfs +hpilo +hpsa +hptiop +hsi +hsi_char +hso +hsr +hsu_dma +hsu_dma_pci +htc-pasic3 +htu21 +huawei_cdc_ncm +hwa-hc +hwa-rc +hwmon-vid +hx8357 +hysdn +i1480-dfu-usb +i1480-est +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-cros-ec-tunnel +i2c-designware-core +i2c-designware-pci +i2c-designware-platform +i2c-diolan-u2c +i2c-dln2 +i2c-gpio +i2c-hid +i2c-hydra +i2c-i801 +i2c-isch +i2c-kempld +i2c-matroxfb +i2c-mpc +i2c-mux +i2c-mux-gpio +i2c-mux-pca9541 +i2c-mux-pca954x +i2c-nforce2 +i2c-ocores +i2c-parport +i2c-parport-light +i2c-pca-platform +i2c-piix4 +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 +i40e +i40evf +i5k_amb +i6300esb +i740fb +i82092 +ib_addr +ib_cm +ib_core +ib_ipoib +ib_iser +ib_isert +ib_mad +ibmaem +ibmpex +ib_mthca +ib_sa +ib_srp +ib_srpt +ib_ucm +ib_umad +ib_uverbs +icplus +icp_multi +ics932s401 +ideapad_slidebar +idma64 +idmouse +idt77252 +idtcps +idt_gen2 +ieee802154 +ieee802154_6lowpan +ieee802154_socket +ifb +iforce +igb +igbvf +igorplugusb +iguanair +iio_dummy +iio_hwmon +iio-trig-interrupt +iio-trig-periodic-rtc +iio-trig-sysfs +ii_pci20kc +ili210x +ili922x +ili9320 +imm +imon +ims-pcu +imx074 +imx_thermal +ina209 +ina2xx +industrialio +industrialio-triggered-buffer +inet_diag +inexio +inftl +initio +input-leds +input-polldev +int51x1 +intel_vr_nor +interact +interval_tree_test +inv-mpu6050 +ioc4 +io_edgeport +io_ti +iowarrior +ip6_gre +ip6table_filter +ip6table_mangle +ip6table_nat +ip6table_raw +ip6_tables +ip6table_security +ip6t_ah +ip6t_eui64 +ip6t_frag +ip6t_hbh +ip6t_ipv6header +ip6t_MASQUERADE +ip6t_mh +ip6t_NPT +ip6t_REJECT +ip6t_rpfilter +ip6t_rt +ip6t_SYNPROXY +ip6_tunnel +ip6_udp_tunnel +ip6_vti +ipack +ipaq +ipcomp +ipcomp6 +ipddp +ipg +ip_gre +iphase +ipheth +ipip +ipmi_devintf +ipmi_msghandler +ipmi_poweroff +ipmi_si +ipmi_ssif +ipmi_watchdog +ipoctal +ipr +ips +ip_set +ip_set_bitmap_ip +ip_set_bitmap_ipmac +ip_set_bitmap_port +ip_set_hash_ip +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 +iptable_filter +iptable_mangle +iptable_nat +iptable_raw +ip_tables +iptable_security +ipt_ah +ipt_CLUSTERIP +ipt_ECN +ipt_MASQUERADE +ipt_REJECT +ipt_rpfilter +ipt_SYNPROXY +ip_tunnel +ipvlan +ip_vs +ip_vs_dh +ip_vs_fo +ip_vs_ftp +ip_vs_lblc +ip_vs_lblcr +ip_vs_lc +ip_vs_nq +ip_vs_pe_sip +ip_vs_rr +ip_vs_sed +ip_vs_sh +ip_vs_wlc +ip_vs_wrr +ip_vti +ipw +ipw2100 +ipw2200 +ipwireless +ipx +ircomm +ircomm-tty +irda +irda-usb +ir-hix5hd2 +ir-jvc-decoder +ir-kbd-i2c +irlan +ir-lirc-codec +ir-mce_kbd-decoder +ir-nec-decoder +irnet +ir-rc5-decoder +ir-rc6-decoder +ir-sanyo-decoder +ir-sharp-decoder +ir-sony-decoder +irtty-sir +ir-usb +ir-xmp-decoder +iscsi_boot_sysfs +iscsi_target_mod +iscsi_tcp +isdn +isdn_bsdcomp +isdnhdlc +isicom +isight_firmware +isl29003 +isl29018 +isl29020 +isl29028 +isl29125 +isl6271a-regulator +isl6405 +isl6421 +isl6423 +isl9305 +isofs +isp116x-hcd +isp1362-hcd +isp1704_charger +isp1760 +it913x +itd1000 +itg3200 +iuu_phoenix +ivtv +ivtv-alsa +ivtvfb +iw_c2 +iw_cm +iw_cxgb3 +iw_cxgb4 +iwl3945 +iwl4965 +iwldvm +iwlegacy +iwlmvm +iwlwifi +iw_nes +ix2505v +ixgb +ixgbe +ixgbevf +janz-cmodio +janz-ican3 +jc42 +jedec_probe +jffs2 +jfs +jitterentropy_rng +jmb38x_ms +jme +joydev +joydump +jr3_pci +jsa1212 +jsm +kafs +kalmia +kaweth +kbic +kbtab +kcomedilib +ke_counter +kempld-core +kempld_wdt +kernelcapi +keyspan +keyspan_pda +keyspan_remote +kfifo_buf +khazad +kingsun-sir +kl5kusb105 +kmx61 +ko2iblnd +kobil_sct +ks0108 +ks0127 +ks8842 +ks8851 +ks8851_mll +ks959-sir +ksdazzle-sir +ksocklnd +ksz884x +ktti +kvaser_pci +kvaser_usb +kxcjk-1013 +kxsd9 +kxtj9 +kyrofb +l1oip +l2tp_core +l2tp_debugfs +l2tp_eth +l2tp_ip +l2tp_ip6 +l2tp_netlink +l2tp_ppp +l4f00242t03 +l64781 +lanai +lapb +lapbether +latch-addr-flash +lattice-ecp3-config +lcd +ld9040 +ldusb +lec +led-class-flash +leds-88pm860x +leds-adp5520 +leds-bcm6328 +leds-bcm6358 +leds-bd2802 +leds-blinkm +leds-da903x +leds-da9052 +leds-dac124s085 +leds-gpio +leds-ktd2692 +leds-lm3530 +leds-lm3533 +leds-lm355x +leds-lm3642 +leds-lp3944 +leds-lp8788 +leds-lp8860 +leds-lt3593 +leds-max77693 +leds-max8997 +leds-mc13783 +leds-menf21bmc +leds-pca9532 +leds-pca955x +leds-pca963x +leds-pm8941-wled +leds-pwm +leds-regulator +leds-tca6507 +leds-tlc591xx +leds-wm831x-status +leds-wm8350 +ledtrig-backlight +ledtrig-camera +ledtrig-default-on +ledtrig-gpio +ledtrig-heartbeat +ledtrig-oneshot +ledtrig-timer +ledtrig-transient +legousbtower +lg2160 +lgdt3305 +lgdt3306a +lgdt330x +lgs8gxx +lg-vl600 +lib80211 +lib80211_crypt_ccmp +lib80211_crypt_tkip +lib80211_crypt_wep +libahci +libahci_platform +libceph +libcfs +libcomposite +libcrc32c +libcxgbi +libertas +libertas_cs +libertas_sdio +libertas_spi +libertas_tf +libertas_tf_usb +libfc +libfcoe +libipw +libiscsi +libiscsi_tcp +libore +libosd +libsas +lightning +lineage-pem +linear +lirc_bt829 +lirc_dev +lirc_imon +lirc_parallel +lirc_sasem +lirc_serial +lirc_sir +lirc_zilog +lis3l02dq +lis3lv02d +lis3lv02d_i2c +lis3lv02d_spi +litelink-sir +lkkbd +llc +llc2 +llite_lloop +ll_temac +lm25066 +lm3533-als +lm3533_bl +lm3533-core +lm3533-ctrlbank +lm3630a_bl +lm3639_bl +lm63 +lm70 +lm73 +lm75 +lm77 +lm78 +lm80 +lm83 +lm8323 +lm8333 +lm85 +lm87 +lm90 +lm92 +lm93 +lm95234 +lm95241 +lm95245 +lmc +lms283gf05 +lms501kf03 +lmv +lnbp21 +lnbp22 +lnet +lnet_selftest +lockd +locktorture +lov +lp +lp3943 +lp3971 +lp3972 +lp855x_bl +lp8727_charger +lp872x +lp8755 +lp8788_adc +lp8788_bl +lp8788-buck +lp8788-charger +lp8788-ldo +lpc_ich +lpc_sch +lpddr_cmds +lpfc +lru_cache +lrw +ltc2941-battery-gauge +ltc2945 +ltc2978 +ltc3589 +ltc4151 +ltc4215 +ltc4222 +ltc4245 +ltc4260 +ltc4261 +ltr501 +ltv350qv +lustre +lv5207lp +lvstest +lxt +lz4 +lz4_compress +lz4hc +lz4hc_compress +m25p80 +m2m-deinterlace +m52790 +m62332 +m88ds3103 +m88rs2000 +m88rs6000t +ma600-sir +mac53c94 +mac80211 +mac80211_hwsim +mac802154 +macb +mac-celtic +mac-centeuro +mac-croatian +mac-cyrillic +mace +mac-gaelic +mac-greek +mac_hid +mac-iceland +mac-inuit +mac-roman +mac-romanian +mac-turkish +macvlan +macvtap +mag3110 +magellan +mailbox-altera +mantis +mantis_core +map_absent +map_funcs +map_ram +map_rom +marvell +matrix-keymap +matrix_keypad +matroxfb_accel +matroxfb_base +matroxfb_crtc2 +matroxfb_DAC1064 +matroxfb_g450 +matroxfb_maven +matroxfb_misc +matroxfb_Ti3026 +matrox_w1 +max1027 +max1111 +max11801_ts +max1363 +max14577 +max14577_charger +max1586 +max16064 +max16065 +max1619 +max1668 +max17040_battery +max17042_battery +max197 +max2165 +max3100 +max3421-hcd +max34440 +max517 +max5821 +max63xx_wdt +max6639 +max6642 +max6650 +max6697 +max6875 +max7359_keypad +max77686 +max77693 +max77693_charger +max77693-haptic +max77802 +max77843 +max77843-haptic +max8649 +max8660 +max8688 +max8903_charger +max8907 +max8907-regulator +max8925_bl +max8925_onkey +max8925_power +max8925-regulator +max8952 +max8973-regulator +max8997 +max8997_charger +max8997_haptic +max8998 +max8998_charger +mb862xxfb +mb86a16 +mb86a20s +mc13783-adc +mc13783-pwrbutton +mc13783-regulator +mc13783_ts +mc13892-regulator +mc13xxx-core +mc13xxx-i2c +mc13xxx-regulator-core +mc13xxx-spi +mc44s803 +m_can +mcb +mcb-pci +mceusb +mcp2120-sir +mcp251x +mcp3021 +mcp320x +mcp3422 +mcp4725 +mcp4922 +mcryptd +mcs5000_ts +mcs7780 +mcs7830 +mcs_touchkey +mct_u232 +md4 +md5-ppc +mdc +mdc800 +md-cluster +mdio +mdio-bcm-unimac +mdio-bitbang +mdio-gpio +mdio-mux +mdio-mux-gpio +mdio-mux-mmioreg +me4000 +me_daq +media +megaraid +megaraid_mbox +megaraid_mm +megaraid_sas +memstick +mena21_wdt +menf21bmc +menf21bmc_hwmon +menf21bmc_wdt +men_z135_uart +men_z188_adc +mesh +metronomefb +metro-usb +mf6x4 +mga +mgc +michael_mic +micrel +microread +microread_i2c +microtek +mii +minix +mip6 +mISDN_core +mISDN_dsp +mISDNinfineon +mISDNipac +mISDNisar +mite +mk712 +mkiss +mlx4_core +mlx4_en +mlx4_ib +mlx5_core +mlx5_ib +mlx90614 +mma8450 +mma8452 +mma9551 +mma9551_core +mma9553 +mmc35240 +mmc_block +mms114 +mn88472 +mn88473 +mos7720 +mos7840 +moxa +mpc624 +mpl115 +mpl3115 +mpls_gso +mpls_router +mpoa +mpr121_touchkey +mpt2sas +mpt3sas +mptbase +mptctl +mptfc +mptlan +mptsas +mptscsih +mptspi +mpu3050 +mrf24j40 +mrp +ms5611_core +ms5611_i2c +ms5611_spi +ms_block +msdos +msi001 +msi2500 +msp3400 +mspro_block +mt2060 +mt2063 +mt20xx +mt2131 +mt2266 +mt29f_spinand +mt312 +mt352 +mt6397-core +mt6397-regulator +mt7601u +mt9m001 +mt9m111 +mt9t031 +mt9t112 +mt9v011 +mt9v022 +mtd +mtd_blkdevs +mtdblock +mtdblock_ro +mtd_dataflash +mtdoops +mtdram +mtdswap +mtip32xx +mtk-sd +mtouch +multipath +multiq3 +musb_hdrc +mv643xx_eth +mvmdio +mvsas +mv_u3d_core +mv_udc +mvumi +mwifiex +mwifiex_pcie +mwifiex_sdio +mwifiex_usb +mwl8k +mxb +mxl111sf-demod +mxl111sf-tuner +mxl301rf +mxl5005s +mxl5007t +mxser +mxuport +myri10ge +nand +nand_bch +nand_ecc +nand_ids +nandsim +national +natsemi +nau7802 +navman +nbd +nci +nci_uart +ncpfs +nct7802 +nct7904 +ne2k-pci +neofb +net1080 +net2272 +net2280 +netconsole +netjet +netlink_diag +netrom +netxen_nic +newtonkbd +nfc +nfc_digital +nfcmrvl +nfcmrvl_uart +nfcmrvl_usb +nf_conntrack +nf_conntrack_amanda +nf_conntrack_broadcast +nf_conntrack_ftp +nf_conntrack_h323 +nf_conntrack_ipv4 +nf_conntrack_ipv6 +nf_conntrack_irc +nf_conntrack_netbios_ns +nf_conntrack_netlink +nf_conntrack_pptp +nf_conntrack_proto_dccp +nf_conntrack_proto_gre +nf_conntrack_proto_sctp +nf_conntrack_proto_udplite +nf_conntrack_sane +nf_conntrack_sip +nf_conntrack_snmp +nf_conntrack_tftp +nfcsim +nfcwilink +nf_defrag_ipv4 +nf_defrag_ipv6 +nf_log_arp +nf_log_bridge +nf_log_common +nf_log_ipv4 +nf_log_ipv6 +nf_nat +nf_nat_amanda +nf_nat_ftp +nf_nat_h323 +nf_nat_ipv4 +nf_nat_ipv6 +nf_nat_irc +nf_nat_masquerade_ipv4 +nf_nat_masquerade_ipv6 +nf_nat_pptp +nf_nat_proto_dccp +nf_nat_proto_gre +nf_nat_proto_sctp +nf_nat_proto_udplite +nf_nat_redirect +nf_nat_sip +nf_nat_snmp_basic +nf_nat_tftp +nfnetlink +nfnetlink_acct +nfnetlink_cthelper +nfnetlink_cttimeout +nfnetlink_log +nfnetlink_queue +nf_reject_ipv4 +nf_reject_ipv6 +nfs +nfs_acl +nfsd +nfs_layout_flexfiles +nfs_layout_nfsv41_files +nfsv2 +nfsv3 +nfsv4 +nf_synproxy_core +nf_tables +nf_tables_arp +nf_tables_bridge +nf_tables_inet +nf_tables_ipv4 +nf_tables_ipv6 +nf_tables_netdev +nft_chain_nat_ipv4 +nft_chain_nat_ipv6 +nft_chain_route_ipv4 +nft_chain_route_ipv6 +nft_compat +nft_counter +nft_ct +nft_exthdr +nft_hash +nftl +nft_limit +nft_log +nft_masq +nft_masq_ipv4 +nft_masq_ipv6 +nft_meta +nft_meta_bridge +nft_nat +nft_queue +nft_rbtree +nft_redir +nft_redir_ipv4 +nft_redir_ipv6 +nft_reject +nft_reject_bridge +nft_reject_inet +nft_reject_ipv4 +nft_reject_ipv6 +ngene +n_gsm +nhc_dest +nhc_fragment +nhc_hop +nhc_ipv6 +nhc_mobility +nhc_routing +nhc_udp +n_hdlc +ni_6527 +ni_65xx +ni_660x +ni_670x +ni_at_a2150 +ni_at_ao +ni_atmio +ni_atmio16d +nicstar +ni_daq_700 +ni_daq_dio24 +ni_labpc +ni_labpc_common +ni_labpc_cs +ni_labpc_isadma +ni_labpc_pci +nilfs2 +ni_mio_cs +ni_pcidio +ni_pcimio +ni_tio +ni_tiocmd +niu +ni_usb6501 +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 +nosy +notifier-error-inject +nouveau +nozomi +nps_enet +n_r3964 +ns558 +ns83820 +nsc-ircc +nsp32 +nsp_cs +ntb +ntb_netdev +ntb_pingpong +ntb_tool +ntb_transport +ntc_thermistor +ntfs +n_tracerouter +n_tracesink +null_blk +nvidiafb +nvme +nxp-nci +nxp-nci_i2c +nxt200x +nxt6000 +obdclass +obdecho +objlayoutdriver +ocfb +ocfs2 +ocfs2_dlm +ocfs2_dlmfs +ocfs2_nodemanager +ocfs2_stackglue +ocfs2_stack_o2cb +ocfs2_stack_user +ocrdma +ofpart +of_xilinx_wdt +old_belkin-sir +omap4-keypad +omfs +omninet +on20 +on26 +onenand +opencores-kbd +openvswitch +oprofile +opticon +option +or51132 +or51211 +orinoco +orinoco_cs +orinoco_nortel +orinoco_plx +orinoco_tmd +orinoco_usb +osc +osd +osdblk +osst +oti6858 +ov2640 +ov5642 +ov6650 +ov7640 +ov7670 +ov772x +ov9640 +ov9740 +overlay +oxu210hp-hcd +ozwpan +p54common +p54pci +p54spi +p54usb +p8022 +p8023 +palmas-pwrbutton +palmas-regulator +pandora_bl +panel +panel-ld9040 +panel-s6e8aa0 +panel-sharp-lq101r1sx01 +panel-simple +paride +parkbd +parport +parport_ax88796 +parport_cs +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_pcmcia +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 +pc300too +pcap_keys +pcap-regulator +pcap_ts +pcbc +pcd +pcf50633 +pcf50633-adc +pcf50633-backlight +pcf50633-charger +pcf50633-gpio +pcf50633-input +pcf50633-regulator +pcf8574_keypad +pcf8591 +pch_udc +pci +pci200syn +pcips2 +pci-stub +pcl711 +pcl724 +pcl726 +pcl730 +pcl812 +pcl816 +pcl818 +pcm3724 +pcmad +pcmcia +pcmcia_core +pcmciamtd +pcmcia_rsrc +pcmda12 +pcmmio +pcmuio +pcnet32 +pcnet_cs +pcrypt +pcspkr +pcwd_pci +pcwd_usb +pd +pd6729 +pda_power +pdc_adma +peak_pci +peak_pcmcia +peak_usb +pegasus +penmount +percpu_test +pf +pfuze100-regulator +pg +phantom +phonet +phram +phy-bcm-kona-usb2 +phy-exynos-usb2 +phy-gpio-vbus-usb +phy-isp1301 +phy-pxa-28nm-hsic +phy-pxa-28nm-usb2 +physmap +physmap_of +phy-tahvo +phy-tusb1210 +pixcir_i2c_ts +pkcs7_message +pkcs7_test_key +pktcdvd +pktgen +pl2303 +platform_lcd +plat_nand +plat-ram +plip +plusb +pluto2 +plx_pci +pm2fb +pm3fb +pm80xx +pmbus +pmbus_core +pmc551 +pmcraid +pm-notifier-error-inject +pmu_battery +pn533 +pn544 +pn544_i2c +pn_pep +poly1305_generic +port100 +powermate +powr1220 +ppa +ppdev +ppp_async +ppp_deflate +ppp_mppe +pppoatm +pppoe +pppox +ppp_synctty +pps_core +pps-gpio +pps-ldisc +pps_parport +pptp +prism2_usb +ps2mult +ps8622 +psmouse +psnap +pt +ptlrpc +ptn3460 +ptp +pvrusb2 +pwc +pwm-beeper +pwm_bl +pwm-fan +pwm-fsl-ftm +pwm-lp3943 +pwm-pca9685 +pwm-regulator +pwm-twl +pwm-twl-led +pxa27x_udc +qcaspi +qcaux +qcom-spmi-iadc +qcom_spmi-regulator +qcom-spmi-temp-alarm +qcom-spmi-vadc +qcserial +qinfo_probe +qla1280 +qla2xxx +qla3xxx +qla4xxx +qlcnic +qlge +qlogic_cs +qlogicfas408 +qm1d1c0042 +qmi_wwan +qnx4 +qnx6 +qsemi +qt1010 +qt1070 +qt2160 +quatech2 +quatech_daqp_cs +quota_tree +quota_v1 +quota_v2 +qxl +r128 +r592 +r6040 +r8152 +r8169 +r8188eu +r8192e_pci +r8192u_usb +r820t +r852 +r8712u +r8723au +r8a66597-hcd +r8a66597-udc +rack-meter +radeon +radeonfb +radio-bcm2048 +radio-i2c-si470x +radio-keene +radio-ma901 +radio-maxiradio +radio-mr800 +radio-platform-si4713 +radio-raremono +radio-shark +radio-si476x +radio-tea5764 +radio-usb-si470x +radio-usb-si4713 +radio-wl1273 +raid0 +raid1 +raid10 +raid456 +raid6_pq +raid6test +raid_class +ramoops +raw +ray_cs +rbd +rbtree_test +rc5t583-regulator +rc-adstech-dvb-t-pci +rc-alink-dtu-m +rc-anysee +rc-apac-viewcomp +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-behold +rc-behold-columbus +rc-budget-ci-old +rc-cinergy +rc-cinergy-1400 +rc-core +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-dvbsky +rc-em-terratec +rc-encore-enltv +rc-encore-enltv2 +rc-encore-enltv-fm53 +rc-evga-indtube +rc-eztv +rc-flydvb +rc-flyvideo +rc-fusionhdtv-mce +rc-gadmei-rm008z +rc-genius-tvgo-a11mce +rc-gotview7135 +rc-hauppauge +rc-imon-mce +rc-imon-pad +rc-iodata-bctv7e +rc-it913x-v1 +rc-it913x-v2 +rc-kaiomy +rc-kworld-315u +rc-kworld-pc150u +rc-kworld-plus-tv-analog +rc-leadtek-y04g0051 +rc-lirc +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-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-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-twinhan1027 +rc-twinhan-dtv-cab-ci +rc-videomate-m1f +rc-videomate-s350 +rc-videomate-tv-pvr +rc-winfast +rc-winfast-usbii-deluxe +rdc321x-southbridge +rdma_cm +rdma_ucm +rds +rds_rdma +rds_tcp +realtek +redboot +redrat3 +reed_solomon +regmap-spmi +regulator-haptic +reiserfs +remoteproc +retu-mfd +retu-pwrbutton +retu_wdt +rfc1051 +rfc1201 +rfcomm +rfd_ftl +rfkill-gpio +rfkill-regulator +rio500 +rionet +rio-scan +rivafb +rj54n1cb0c +rk808 +rk808-regulator +rmd128 +rmd160 +rmd256 +rmd320 +rn5t618 +rn5t618-regulator +rn5t618_wdt +rndis_host +rndis_wlan +rocket +romfs +rose +rotary_encoder +rp2 +rpcrdma +rpcsec_gss_krb5 +rsa_generic +rsi_91x +rsi_sdio +rsi_usb +rsxx +rt2400pci +rt2500pci +rt2500usb +rt2800lib +rt2800mmio +rt2800pci +rt2800usb +rt2x00lib +rt2x00mmio +rt2x00pci +rt2x00usb +rt5033 +rt5033_battery +rt5033-regulator +rt61pci +rt73usb +rt9455_charger +rtc-88pm80x +rtc-88pm860x +rtc-ab3100 +rtc-ab-b5ze-s3 +rtc-abx80x +rtc-as3722 +rtc-bq32k +rtc-bq4802 +rtc-cmos +rtc_cmos_setup +rtc-da9052 +rtc-da9055 +rtc-da9063 +rtc-ds1286 +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-ds3234 +rtc-em3027 +rtc-fm3130 +rtc-generic +rtc-hid-sensor-time +rtc-hym8563 +rtc-isl12022 +rtc-isl12057 +rtc-isl1208 +rtc-lp8788 +rtc-m41t80 +rtc-m41t93 +rtc-m41t94 +rtc-m48t35 +rtc-m48t59 +rtc-m48t86 +rtc-max6900 +rtc-max6902 +rtc-max77686 +rtc-max77802 +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-pcf8563 +rtc-pcf8583 +rtc-r9701 +rtc-rc5t583 +rtc-rk808 +rtc-rp5c01 +rtc-rs5c348 +rtc-rs5c372 +rtc-rv3029c2 +rtc-rx4581 +rtc-rx8025 +rtc-rx8581 +rtc-s35390a +rtc-s5m +rtc-snvs +rtc-stk17ta8 +rtc-tps6586x +rtc-tps65910 +rtc-tps80031 +rtc-twl +rtc-v3020 +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 +rtl8723ae +rtl8723be +rtl8723-common +rtl8821ae +rtllib +rtllib_crypt_ccmp +rtllib_crypt_tkip +rtllib_crypt_wep +rtl_pci +rtl_usb +rtlwifi +rts5208 +rtsx_pci +rtsx_pci_ms +rtsx_pci_sdmmc +rtsx_usb +rtsx_usb_ms +rtsx_usb_sdmmc +rx51_battery +rxkad +s1d13xxxfb +s2250 +s2255drv +s2io +s2mpa01 +s2mps11 +s3fb +s526 +s5h1409 +s5h1411 +s5h1420 +s5m8767 +s626 +s6e63m0 +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 +samsung-sxgbe +sata_inic162x +sata_mv +sata_nv +sata_promise +sata_qstor +sata_sil +sata_sil24 +sata_sis +sata_sx4 +sata_uli +sata_via +sata_vsc +savage +savagefb +sbp_target +sbs-battery +sc16is7xx +sc92031 +sca3000 +sch_atm +sch_cbq +sch_choke +sch_codel +sch_drr +sch_dsmark +sch_fq +sch_fq_codel +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_tbf +sch_teql +scsi_debug +scsi_dh +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_probe +sdhci +sdhci_f_sdh30 +sdhci-of-arasan +sdhci-of-esdhc +sdhci-of-hlwd +sdhci-pci +sdhci-pltfm +sdio_uart +sdricoh_cs +sedlbauer_cs +seed +sensorhub +seqiv +ser_gigaset +serial2002 +serial_cs +serio_raw +sermouse +serpent_generic +serport +ses +sfc +sha1-powerpc +shark2 +shpchp +sht15 +sht21 +shtc1 +sh_veu +si2157 +si2165 +si2168 +si21xx +si4713 +si476x-core +si7005 +si7020 +sidewinder +sierra +sierra_net +sil164 +sir-dev +sis +sis190 +sis5595 +sis900 +sisfb +sisusbvga +sit +sja1000 +sja1000_isa +sja1000_platform +skfp +skge +sky2 +sky81452 +sky81452-backlight +sky81452-regulator +sl811_cs +sl811-hcd +slcan +slip +slram +sm501 +sm501fb +sm750fb +sm7xxfb +smb347-charger +smc91c92_cs +sm_common +sm_ftl +smipcie +smm665 +smsc +smsc47m192 +smsc75xx +smsc911x +smsc9420 +smsc95xx +smsc-ircc2 +smscufx +smsdvb +smsmdtv +smssdio +smsusb +snd +snd-ac97-codec +snd-ad1889 +snd-ak4113 +snd-ak4114 +snd-ak4117 +snd-ak4xxx-adda +snd-ali5451 +snd-aloop +snd-als300 +snd-als4000 +snd-aoa +snd-aoa-codec-onyx +snd-aoa-codec-tas +snd-aoa-codec-toonie +snd-aoa-fabric-layout +snd-aoa-i2sbus +snd-aoa-soundbus +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-firewire-lib +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-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-pcm-oss +snd-pcxhr +snd-pdaudiocf +snd-portman2x4 +snd-powermac +snd-pt2258 +snd-rawmidi +snd-riptide +snd-rme32 +snd-rme96 +snd-rme9652 +snd-sb-common +snd-scs1x +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-ac97 +snd-soc-adau1701 +snd-soc-ak4104 +snd-soc-ak4554 +snd-soc-ak4642 +snd-soc-ak5386 +snd-soc-alc5623 +snd-soc-core +snd-soc-cs35l32 +snd-soc-cs4265 +snd-soc-cs4270 +snd-soc-cs4271 +snd-soc-cs4271-i2c +snd-soc-cs4271-spi +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-es8328 +snd-soc-fsl-asrc +snd-soc-fsl-esai +snd-soc-fsl-sai +snd-soc-fsl-spdif +snd-soc-fsl-ssi +snd-soc-hdmi-codec +snd-soc-imx-audmux +snd-soc-pcm1681 +snd-soc-pcm1792a-codec +snd-soc-pcm512x +snd-soc-pcm512x-i2c +snd-soc-pcm512x-spi +snd-soc-rt5631 +snd-soc-sgtl5000 +snd-soc-si476x +snd-soc-sigmadsp +snd-soc-sigmadsp-i2c +snd-soc-simple-card +snd-soc-spdif-rx +snd-soc-spdif-tx +snd-soc-ssm2602 +snd-soc-ssm2602-i2c +snd-soc-ssm2602-spi +snd-soc-ssm4567 +snd-soc-sta32x +snd-soc-sta350 +snd-soc-tas2552 +snd-soc-tas5086 +snd-soc-tas571x +snd-soc-tfa9879 +snd-soc-tlv320aic23 +snd-soc-tlv320aic23-i2c +snd-soc-tlv320aic23-spi +snd-soc-tlv320aic31xx +snd-soc-tlv320aic3x +snd-soc-tpa6130a2 +snd-soc-ts3a227e +snd-soc-wm8510 +snd-soc-wm8523 +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-wm8804 +snd-soc-wm8804-i2c +snd-soc-wm8804-spi +snd-soc-wm8903 +snd-soc-wm8962 +snd-soc-wm8978 +snd-soc-xtfpga-i2s +snd-sonicvibes +snd-timer +snd-trident +snd-ua101 +snd-usb-6fire +snd-usb-audio +snd-usb-caiaq +snd-usb-hiface +snd-usb-line6 +snd-usbmidi-lib +snd-usb-pod +snd-usb-podhd +snd-usb-toneport +snd-usb-usx2y +snd-usb-variax +snd-util-mem +snd-via82xx +snd-via82xx-modem +snd-virmidi +snd-virtuoso +snd-vx222 +snd-vx-lib +snd-vxpocket +snd-ymfpci +snic +soc_button_array +soc_camera +soc_camera_platform +soc_mediabus +softdog +softing +softing_cs +solo6x10 +solos-pci +sony-btf-mpx +soundcore +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 +spectrum_cs +speedfax +speedtch +spi-altera +spi-bitbang +spi-butterfly +spi-cadence +spidev +spi-dln2 +spi-dw +spi-dw-midpci +spi-dw-mmio +spi-gpio +spi_ks8995 +spi-lm70llp +spi-nor +spi-oc-tiny +spi-pxa2xx-platform +spi-sc18is602 +spi-tle62x0 +spi-xcomm +spi-zynqmp-gqspi +spmi +squashfs +sr9700 +sr9800 +ssb +ssb-hcd +ssd1307fb +ssfdc +ssp_accel_sensor +ssp_gyro_sensor +ssp_iio +sst25l +ssu100 +st +st1232 +st21nfca_hci +st21nfca_i2c +st_accel +st_accel_i2c +st_accel_spi +starfire +stb0899 +stb6000 +stb6100 +st_drv +ste10Xp +ste_modem_rproc +stex +st_gyro +st_gyro_i2c +st_gyro_spi +stinger +stir4200 +stk1160 +stk3310 +stk8312 +stk8ba50 +stkwebcam +st_magn +st_magn_i2c +st_magn_spi +stmmac +stmmac-platform +stmpe-keypad +stmpe-ts +st-nci +st-nci_i2c +stowaway +stp +st_pressure +st_pressure_i2c +st_pressure_spi +streamzap +st_sensors +st_sensors_i2c +st_sensors_spi +stv0288 +stv0297 +stv0299 +stv0367 +stv0900 +stv090x +stv6110 +stv6110x +sundance +sungem +sungem_phy +sunhme +suni +sunkbd +sunrpc +sur40 +svgalib +swim3 +sx8 +sx8654 +sx9500 +sym53c500_cs +sym53c8xx +symbolserial +synaptics_i2c +synaptics_i2c_rmi4 +synaptics_usb +synclink +synclink_cs +synclink_gt +synclinkmp +syscopyarea +sysfillrect +sysimgblt +sysv +t1pci +t5403 +target_core_file +target_core_iblock +target_core_mod +target_core_pscsi +target_core_user +tc3589x-keypad +tc74 +tc90522 +tca6416-keypad +tca8418_keypad +tcm_fc +tcm_loop +tcm_qla2xxx +tcm_usb_gadget +tcp_bic +tcp_cdg +tcp_dctcp +tcp_diag +tcp_highspeed +tcp_htcp +tcp_hybla +tcp_illinois +tcp_lp +tcp_probe +tcp_scalable +tcp_vegas +tcp_veno +tcp_westwood +tcp_yeah +tcrypt +tcs3414 +tcs3472 +tda10021 +tda10023 +tda10048 +tda1004x +tda10071 +tda10086 +tda18212 +tda18218 +tda18271 +tda18271c2dd +tda665x +tda7432 +tda8083 +tda8261 +tda826x +tda827x +tda8290 +tda9840 +tda9887 +tda998x +tdfx +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 +tekram-sir +teles_cs +test_bpf +test_firmware +test-hexdump +test-kstrtox +test_module +test_power +test-string_helpers +test_udelay +test_user_copy +tg3 +tgr192 +therm_windtunnel +thmc50 +thunderbolt +ti-adc081c +ti-adc128s052 +ti_am335x_adc +ti_am335x_tsc +ti_am335x_tscadc +ti_dac7512 +tifm_7xx1 +tifm_core +tifm_ms +tifm_sd +timeriomem-rng +tipc +ti_usb_3410_5052 +tlan +tm6000 +tm6000-alsa +tm6000-dvb +tmdc +tmp006 +tmp102 +tmp103 +tmp401 +tmp421 +toim3232-sir +torture +toshsd +touchit213 +touchright +touchwin +tpci200 +tpm_atmel +tpm_i2c_atmel +tpm_i2c_infineon +tpm_i2c_nuvoton +tpm-rng +tpm_st33zp24 +tpm_st33zp24_i2c +tpm_st33zp24_spi +tps40422 +tps51632-regulator +tps6105x +tps6105x-regulator +tps62360-regulator +tps65010 +tps65023-regulator +tps6507x +tps6507x-regulator +tps6507x-ts +tps65090-charger +tps65090-regulator +tps65217 +tps65217_bl +tps65217-regulator +tps65218 +tps65218-pwrbutton +tps65218-regulator +tps6524x-regulator +tps6586x-regulator +tps65910-regulator +tps65912-regulator +tps80031-regulator +trancevibrator +trf7970a +tridentfb +ts2020 +ts_bm +tsc2005 +tsc2007 +tsc40 +ts_fsm +tsi568 +tsi57x +tsi721_mport +ts_kmp +tsl2550 +tsl2563 +tsl2583 +tsl2x7x_core +tsl4531 +ttm +ttpci-eeprom +ttusb_dec +ttusbdecfe +ttusbir +tua6100 +tua9001 +tulip +tuner +tuner-simple +tuner-types +tuner-xc2028 +tunnel4 +tunnel6 +turbografx +tvaudio +tveeprom +tvp5150 +tw2804 +tw68 +tw9903 +tw9906 +tw9910 +twidjoy +twl4030_charger +twl4030_keypad +twl4030-madc +twl4030_madc_battery +twl4030-madc-hwmon +twl4030-pwrbutton +twl4030-vibra +twl4030_wdt +twl6030-gpadc +twl6040-vibra +twl-regulator +twofish_common +twofish_generic +typhoon +u132-hcd +uartlite +uas +ubi +ubifs +ucb1400_core +ucb1400_ts +ucd9000 +ucd9200 +uda1342 +udc-core +udc-xilinx +udf +udl +udlfb +udp_diag +udp_tunnel +ueagle-atm +u_ether +ufs +ufshcd +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 +uli526x +ulpi +umc +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 +uninorth-agp +unioxx5 +unix_diag +upd64031a +upd64083 +uPD98402 +usb3503 +usb_8dev +usb8xxx +usbatm +usb_debug +usbdux +usbduxfast +usbduxsigma +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_uac1 +usb_f_uac2 +usb_f_uvc +usb_gigaset +usbhid +usbip-core +usbip-host +usbkbd +usblcd +usbled +usblp +usbmisc_imx +usbmon +usbmouse +usbnet +usbserial +usb-serial-simple +usbsevseg +usb-storage +usbtest +usbtmc +usbtouchscreen +usbtv +usbvision +usb_wwan +usdhi6rol0 +u_serial +userspace-consumer +ushc +uss720 +uvcvideo +uvesafb +uwb +v4l2-common +v4l2-dv-timings +v4l2-flash-led-class +v4l2-mem2mem +vcan +vcnl4000 +ves1820 +ves1x93 +veth +vf610_adc +vga16fb +vgastate +vgem +vgg2432a4 +vhci-hcd +vhost +vhost_net +vhost_scsi +via +via686a +via-ircc +via-rhine +via-sdmmc +via-velocity +videobuf2-core +videobuf2-dma-contig +videobuf2-dma-sg +videobuf2-dvb +videobuf2-memops +videobuf2-vmalloc +videobuf-core +videobuf-dma-sg +videobuf-dvb +videobuf-vmalloc +videocodec +videodev +vim2m +viperboard +viperboard_adc +virt-dma +virtio-gpu +virtio_input +virtio-rng +virtio_scsi +virtual +visor +vitesse +vivid +vlsi_ir +vmac +vme_ca91cx42 +vme_pio2 +vme_tsi148 +vme_user +vme_vmivme7805 +vmk80xx +vmwgfx +vmxnet3 +vp27smpx +vport-geneve +vport-gre +vport-vxlan +vpx3220 +vringh +vsock +vsxxxaa +vt6655_stage +vt6656_stage +vt8231 +vt8623fb +vub300 +vx855 +vxge +vxlan +w1_bq27000 +w1_ds2406 +w1_ds2408 +w1_ds2413 +w1_ds2423 +w1_ds2431 +w1_ds2433 +w1_ds2760 +w1_ds2780 +w1_ds2781 +w1_ds28e04 +w1-gpio +w1_smem +w1_therm +w5100 +w5300 +w6692 +w83781d +w83791d +w83792d +w83793 +w83795 +w83977af_ir +w83l785ts +w83l786ng +wacom +wacom_i2c +wacom_serial4 +wacom_w8001 +walkera0701 +wanxl +warrior +wbsd +wcn36xx +wd719x +wdrtas +wdt87xx_i2c +wdt_pci +whci +whci-hcd +whc-rc +whiteheat +wil6210 +wimax +winbond-840 +windfarm_core +wire +wishbone-serial +wl1251 +wl1251_sdio +wl1251_spi +wl1273-core +wl12xx +wl18xx +wl3501_cs +wlcore +wlcore_sdio +wlcore_spi +wm831x_backup +wm831x_bl +wm831x-dcdc +wm831x-hwmon +wm831x-isink +wm831x-ldo +wm831x-on +wm831x_power +wm831x-ts +wm831x_wdt +wm8350-hwmon +wm8350_power +wm8350-regulator +wm8350_wdt +wm8400-regulator +wm8739 +wm8775 +wm8994-core +wm8994-irq +wm8994-regmap +wm8994-regulator +wm97xx-ts +wp512 +wusb-cbaf +wusbcore +wusb-wa +x25 +x25_asy +xc4000 +xc5000 +xcbc +xfrm4_mode_beet +xfrm4_mode_transport +xfrm4_mode_tunnel +xfrm4_tunnel +xfrm6_mode_beet +xfrm6_mode_ro +xfrm6_mode_transport +xfrm6_mode_tunnel +xfrm6_tunnel +xfrm_algo +xfrm_ipcomp +xfrm_user +xfs +xgifb +xhci-plat-hcd +xilinx_emaclite +xilinx_ps2 +xilinx-tpg +xilinx_uartps +xilinx-video +xilinx-vtc +xillybus_core +xillybus_of +xillybus_pcie +xirc2ps_cs +xircom_cb +xor +xpad +xsens_mt +x_tables +xt_addrtype +xt_AUDIT +xt_bpf +xt_cgroup +xt_CHECKSUM +xt_CLASSIFY +xt_cluster +xt_comment +xt_connbytes +xt_connlabel +xt_connlimit +xt_connmark +xt_CONNSECMARK +xt_conntrack +xt_cpu +xt_CT +xt_dccp +xt_devgroup +xt_dscp +xt_DSCP +xt_ecn +xt_esp +xt_hashlimit +xt_helper +xt_hl +xt_HL +xt_HMARK +xt_IDLETIMER +xt_ipcomp +xt_iprange +xt_ipvs +xtkbd +xt_l2tp +xt_LED +xt_length +xt_limit +xt_LOG +xt_mac +xt_mark +xt_multiport +xt_nat +xt_NETMAP +xt_nfacct +xt_NFLOG +xt_NFQUEUE +xt_osf +xt_owner +xt_physdev +xt_pkttype +xt_policy +xt_quota +xt_rateest +xt_RATEEST +xt_realm +xt_recent +xt_REDIRECT +xts +xt_sctp +xt_SECMARK +xt_set +xt_socket +xt_state +xt_statistic +xt_string +xt_tcpmss +xt_TCPMSS +xt_TCPOPTSTRIP +xt_tcpudp +xt_TEE +xt_time +xt_TPROXY +xt_TRACE +xt_u32 +xusbatm +xz_dec_test +yam +yealink +yellowfin +yenta_socket +yurex +zatm +zaurus +zd1201 +zd1211rw +zforce_ts +zhenhua +zl10036 +zl10039 +zl10353 +zl6100 +zlib +zr36016 +zr36050 +zr36060 +zr36067 +zr364xx +zram --- linux-raspi2-4.2.0.orig/debian.master/abi/4.2.0-26.31/powerpc/powerpc64-emb +++ linux-raspi2-4.2.0/debian.master/abi/4.2.0-26.31/powerpc/powerpc64-emb @@ -0,0 +1,18041 @@ +EXPORT_SYMBOL crypto/gf128mul 0x0c2f123f gf128mul_4k_bbe +EXPORT_SYMBOL crypto/gf128mul 0x1068004b gf128mul_bbe +EXPORT_SYMBOL crypto/gf128mul 0x2f2889a0 gf128mul_init_64k_lle +EXPORT_SYMBOL crypto/gf128mul 0x3755f990 gf128mul_init_64k_bbe +EXPORT_SYMBOL crypto/gf128mul 0x384ef9ce gf128mul_64k_bbe +EXPORT_SYMBOL crypto/gf128mul 0x56af0dbd gf128mul_x_ble +EXPORT_SYMBOL crypto/gf128mul 0x83581089 gf128mul_init_4k_lle +EXPORT_SYMBOL crypto/gf128mul 0x9b2560b9 gf128mul_init_4k_bbe +EXPORT_SYMBOL crypto/gf128mul 0x9e13f6f6 gf128mul_lle +EXPORT_SYMBOL crypto/gf128mul 0xbd17a0df gf128mul_4k_lle +EXPORT_SYMBOL crypto/gf128mul 0xc0890413 gf128mul_64k_lle +EXPORT_SYMBOL crypto/gf128mul 0xd60736ec gf128mul_free_64k +EXPORT_SYMBOL crypto/mcryptd 0x6310e901 mcryptd_arm_flusher +EXPORT_SYMBOL crypto/xor 0x5b6c00e6 xor_blocks +EXPORT_SYMBOL drivers/atm/suni 0xfc483ca9 suni_init +EXPORT_SYMBOL drivers/bcma/bcma 0x8ebe7aa0 bcma_core_irq +EXPORT_SYMBOL drivers/bcma/bcma 0xe802e051 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 0x04130797 pi_connect +EXPORT_SYMBOL drivers/block/paride/paride 0x292e73db pi_schedule_claimed +EXPORT_SYMBOL drivers/block/paride/paride 0x2bc5b871 pi_read_regr +EXPORT_SYMBOL drivers/block/paride/paride 0x4267110a pi_register_driver +EXPORT_SYMBOL drivers/block/paride/paride 0x500da9d3 pi_write_block +EXPORT_SYMBOL drivers/block/paride/paride 0x504fb90a pi_do_claimed +EXPORT_SYMBOL drivers/block/paride/paride 0x65b07491 paride_register +EXPORT_SYMBOL drivers/block/paride/paride 0x662ccfef pi_read_block +EXPORT_SYMBOL drivers/block/paride/paride 0x6763c421 pi_init +EXPORT_SYMBOL drivers/block/paride/paride 0xb21ba07d pi_unregister_driver +EXPORT_SYMBOL drivers/block/paride/paride 0xca039982 pi_write_regr +EXPORT_SYMBOL drivers/block/paride/paride 0xd610707b pi_release +EXPORT_SYMBOL drivers/block/paride/paride 0xe819ad72 paride_unregister +EXPORT_SYMBOL drivers/block/paride/paride 0xfb1f053c pi_disconnect +EXPORT_SYMBOL drivers/bluetooth/btbcm 0xf50e62e2 btbcm_patchram +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x11f05740 ipmi_smi_watcher_unregister +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x1348760d ipmi_request_settime +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x16dcec76 ipmi_set_my_address +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x1a10c898 ipmi_set_maintenance_mode +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x1aba5db8 ipmi_unregister_smi +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x1fae3bac ipmi_addr_src_to_str +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x40f2b10c ipmi_alloc_smi_msg +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x423b776a ipmi_create_user +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x461a31ca ipmi_smi_add_proc_entry +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x465138f5 ipmi_smi_watcher_register +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x4c971bec ipmi_smi_msg_received +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x524f6f51 ipmi_get_my_address +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x5e80f37c ipmi_unregister_for_cmd +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x5fcdcc05 ipmi_get_my_LUN +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x67cb9784 ipmi_poll_interface +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x6f20b136 ipmi_get_smi_info +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x78fd36e7 ipmi_request_supply_msgs +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x7f76db7c ipmi_register_smi +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x804f922a ipmi_addr_length +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x8c8ee770 ipmi_destroy_user +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x96cbcc81 ipmi_get_version +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xa2a98b91 ipmi_get_maintenance_mode +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xd69f8567 ipmi_set_gets_events +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xe0fa83f2 ipmi_register_for_cmd +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xe4f4665b ipmi_validate_addr +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xe6ab72a6 ipmi_set_my_LUN +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xf2576cb9 ipmi_smi_watchdog_pretimeout +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xfcb77cfd ipmi_free_recv_msg +EXPORT_SYMBOL drivers/char/tpm/st33zp24/tpm_st33zp24 0xbc181a33 st33zp24_probe +EXPORT_SYMBOL drivers/char/tpm/st33zp24/tpm_st33zp24 0xecf9a92b st33zp24_remove +EXPORT_SYMBOL drivers/char/xillybus/xillybus_core 0x25978d50 xillybus_isr +EXPORT_SYMBOL drivers/char/xillybus/xillybus_core 0x49bd1d98 xillybus_init_endpoint +EXPORT_SYMBOL drivers/char/xillybus/xillybus_core 0x71998d31 xillybus_endpoint_discovery +EXPORT_SYMBOL drivers/char/xillybus/xillybus_core 0xa488cc82 xillybus_endpoint_remove +EXPORT_SYMBOL drivers/crypto/caam/caam 0x1c758e97 caam_get_era +EXPORT_SYMBOL drivers/crypto/caam/caam_jr 0x0ec931af caam_jr_enqueue +EXPORT_SYMBOL drivers/crypto/caam/caam_jr 0x1852298e gen_split_key +EXPORT_SYMBOL drivers/crypto/caam/caam_jr 0x2314bbd6 caam_jr_strstatus +EXPORT_SYMBOL drivers/crypto/caam/caam_jr 0x300a3aca split_key_done +EXPORT_SYMBOL drivers/crypto/caam/caam_jr 0x943eba70 caam_jr_alloc +EXPORT_SYMBOL drivers/crypto/caam/caam_jr 0xbeba81e1 caam_jr_free +EXPORT_SYMBOL drivers/crypto/talitos 0xab5adadc talitos_submit +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0x376d594f dw_dma_get_src_addr +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0x494df78d dw_dma_get_dst_addr +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0x7505bd55 dw_dma_cyclic_free +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0x96b44330 dw_dma_cyclic_start +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0xc76cfe11 dw_dma_cyclic_stop +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0xfc304504 dw_dma_cyclic_prep +EXPORT_SYMBOL drivers/edac/edac_core 0x04de0dfc edac_mc_find +EXPORT_SYMBOL drivers/edac/mpc85xx_edac 0x0a219926 mpc85xx_pci_err_probe +EXPORT_SYMBOL drivers/firewire/firewire-core 0x015db99f fw_cancel_transaction +EXPORT_SYMBOL drivers/firewire/firewire-core 0x04d0f641 fw_core_remove_descriptor +EXPORT_SYMBOL drivers/firewire/firewire-core 0x0bd10257 fw_iso_resource_manage +EXPORT_SYMBOL drivers/firewire/firewire-core 0x0f7d6af8 fw_csr_string +EXPORT_SYMBOL drivers/firewire/firewire-core 0x16e91e21 fw_csr_iterator_next +EXPORT_SYMBOL drivers/firewire/firewire-core 0x2885fec5 fw_get_request_speed +EXPORT_SYMBOL drivers/firewire/firewire-core 0x295e50f0 fw_core_handle_bus_reset +EXPORT_SYMBOL drivers/firewire/firewire-core 0x2bfcdf00 fw_device_enable_phys_dma +EXPORT_SYMBOL drivers/firewire/firewire-core 0x2f99efc7 fw_core_remove_card +EXPORT_SYMBOL drivers/firewire/firewire-core 0x3c56ef91 fw_workqueue +EXPORT_SYMBOL drivers/firewire/firewire-core 0x602d5f85 fw_run_transaction +EXPORT_SYMBOL drivers/firewire/firewire-core 0x645b715f fw_core_add_descriptor +EXPORT_SYMBOL drivers/firewire/firewire-core 0x65c9438b fw_csr_iterator_init +EXPORT_SYMBOL drivers/firewire/firewire-core 0x69998605 fw_core_add_address_handler +EXPORT_SYMBOL drivers/firewire/firewire-core 0x7868b953 fw_iso_context_stop +EXPORT_SYMBOL drivers/firewire/firewire-core 0x78e2d329 fw_card_add +EXPORT_SYMBOL drivers/firewire/firewire-core 0x7d8d7b8d fw_iso_context_start +EXPORT_SYMBOL drivers/firewire/firewire-core 0x86468d44 fw_rcode_string +EXPORT_SYMBOL drivers/firewire/firewire-core 0x8fcfe34f fw_core_handle_request +EXPORT_SYMBOL drivers/firewire/firewire-core 0x90863005 fw_high_memory_region +EXPORT_SYMBOL drivers/firewire/firewire-core 0x921f3dbb fw_iso_context_flush_completions +EXPORT_SYMBOL drivers/firewire/firewire-core 0x94e744e0 fw_iso_context_destroy +EXPORT_SYMBOL drivers/firewire/firewire-core 0xaacd4ef9 fw_card_initialize +EXPORT_SYMBOL drivers/firewire/firewire-core 0xae7f7098 fw_iso_context_queue_flush +EXPORT_SYMBOL drivers/firewire/firewire-core 0xb49f38e4 fw_iso_buffer_init +EXPORT_SYMBOL drivers/firewire/firewire-core 0xbbd7d97d fw_core_remove_address_handler +EXPORT_SYMBOL drivers/firewire/firewire-core 0xbf485aa9 fw_core_handle_response +EXPORT_SYMBOL drivers/firewire/firewire-core 0xc245d2aa fw_iso_buffer_destroy +EXPORT_SYMBOL drivers/firewire/firewire-core 0xc8701883 fw_schedule_bus_reset +EXPORT_SYMBOL drivers/firewire/firewire-core 0xcc63b18f fw_iso_context_create +EXPORT_SYMBOL drivers/firewire/firewire-core 0xd23bfa2a fw_send_response +EXPORT_SYMBOL drivers/firewire/firewire-core 0xe3ed71b7 fw_send_request +EXPORT_SYMBOL drivers/firewire/firewire-core 0xec13f05a fw_bus_type +EXPORT_SYMBOL drivers/firewire/firewire-core 0xf5322838 fw_iso_context_queue +EXPORT_SYMBOL drivers/firewire/firewire-core 0xf5b3f7cc fw_fill_response +EXPORT_SYMBOL drivers/fmc/fmc 0x12c2584b fmc_device_unregister +EXPORT_SYMBOL drivers/fmc/fmc 0x41b1e3e2 fmc_free_sdb_tree +EXPORT_SYMBOL drivers/fmc/fmc 0x64003a04 fmc_scan_sdb_tree +EXPORT_SYMBOL drivers/fmc/fmc 0x69d175f3 fmc_driver_unregister +EXPORT_SYMBOL drivers/fmc/fmc 0x6c42e90e fmc_driver_register +EXPORT_SYMBOL drivers/fmc/fmc 0x8506729d fmc_reprogram +EXPORT_SYMBOL drivers/fmc/fmc 0x8a23e8c1 fmc_find_sdb_device +EXPORT_SYMBOL drivers/fmc/fmc 0xc09f17ee fmc_show_sdb_tree +EXPORT_SYMBOL drivers/fmc/fmc 0xc469fcbd fmc_device_register_n +EXPORT_SYMBOL drivers/fmc/fmc 0xf782b4b1 fmc_device_unregister_n +EXPORT_SYMBOL drivers/fmc/fmc 0xffc1cd9b fmc_device_register +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0167cd98 drm_pci_set_busid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x01aca019 drm_panel_attach +EXPORT_SYMBOL drivers/gpu/drm/drm 0x01e2586e drm_debugfs_remove_files +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0292732f drm_select_eld +EXPORT_SYMBOL drivers/gpu/drm/drm 0x052b4153 drm_modeset_lock_all +EXPORT_SYMBOL drivers/gpu/drm/drm 0x05ddcd97 drm_agp_info +EXPORT_SYMBOL drivers/gpu/drm/drm 0x06c867d0 drm_crtc_init_with_planes +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0747d8ed drm_legacy_mmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0760ba14 drm_mode_set_config_internal +EXPORT_SYMBOL drivers/gpu/drm/drm 0x077d558d drm_warn_on_modeset_not_all_locked +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0a72f765 drm_clflush_virt_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0ae4b94c drm_ht_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0b52fa49 drm_bridge_enable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0b836c2e drm_property_create_object +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0ccc2e22 drm_ioctl +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0d01831e drm_legacy_ioremap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0e71ff14 drm_property_create_blob +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0e72c671 drm_panel_detach +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0ee8923a drm_i2c_encoder_dpms +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0f1e3940 drm_object_property_set_value +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 0x115ddd2d drm_mm_dump_table +EXPORT_SYMBOL drivers/gpu/drm/drm 0x12683786 drm_modeset_acquire_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x12cd5ea8 drm_prime_gem_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x14a9a178 drm_get_format_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x176259ad drm_atomic_set_crtc_for_plane +EXPORT_SYMBOL drivers/gpu/drm/drm 0x17e94a4c drm_modeset_lock +EXPORT_SYMBOL drivers/gpu/drm/drm 0x18caeb23 drm_prime_pages_to_sg +EXPORT_SYMBOL drivers/gpu/drm/drm 0x194eadaa drm_edid_header_is_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x198769ea drm_send_vblank_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0x19e4430f drm_flip_work_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1a546ddd drm_mm_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1a770ac3 drm_detect_hdmi_monitor +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1b0d5573 drm_plane_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1bd3cbd6 drm_flip_work_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1bde3f15 drm_vma_node_allow +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1dd71f7a drm_err +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1ea8d76e drm_atomic_get_plane_state +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1f03e7f4 drm_gem_prime_handle_to_fd +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2023d953 drm_legacy_ioremapfree +EXPORT_SYMBOL drivers/gpu/drm/drm 0x20645642 drm_debug +EXPORT_SYMBOL drivers/gpu/drm/drm 0x208e5197 drm_panel_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x20c21e4f drm_cvt_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x20fd3134 drm_legacy_rmmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x22acaf62 drm_get_cea_aspect_ratio +EXPORT_SYMBOL drivers/gpu/drm/drm 0x235706b1 drm_debugfs_create_files +EXPORT_SYMBOL drivers/gpu/drm/drm 0x23766921 drm_crtc_vblank_on +EXPORT_SYMBOL drivers/gpu/drm/drm 0x263c27dd drm_plane_from_index +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2988b705 drm_atomic_state_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x29a010e6 drm_mm_insert_node_in_range_generic +EXPORT_SYMBOL drivers/gpu/drm/drm 0x29bdb7ac drm_mode_config_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2ab82921 drm_bridge_mode_set +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2af93216 drm_bridge_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2b10cbb6 drm_wait_one_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2b14b609 drm_atomic_set_mode_prop_for_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2b5cc677 drm_poll +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2bafd220 drm_handle_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2c0b1d39 drm_gem_dmabuf_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2c409d62 drm_noop +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2d50570f drm_rect_calc_hscale +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2da6b59d drm_connector_unregister +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2e7a4300 drm_rgb_quant_range_selectable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3221c352 drm_mode_connector_list_update +EXPORT_SYMBOL drivers/gpu/drm/drm 0x35dbfe75 drm_atomic_set_crtc_for_connector +EXPORT_SYMBOL drivers/gpu/drm/drm 0x36045430 drm_modeset_backoff +EXPORT_SYMBOL drivers/gpu/drm/drm 0x36291560 drm_mode_find_dmt +EXPORT_SYMBOL drivers/gpu/drm/drm 0x36c6e892 drm_modeset_unlock +EXPORT_SYMBOL drivers/gpu/drm/drm 0x37b1474b drm_dev_unregister +EXPORT_SYMBOL drivers/gpu/drm/drm 0x37ebe743 drm_mm_replace_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0x380e67f1 drm_framebuffer_unreference +EXPORT_SYMBOL drivers/gpu/drm/drm 0x38a4f7ae drm_format_num_planes +EXPORT_SYMBOL drivers/gpu/drm/drm 0x38b0ce0d drm_crtc_vblank_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0x394bb7e4 drm_vblank_off +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3a1f412e drm_mode_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3ac1fef9 drm_mode_legacy_fb_format +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3b2482f1 drm_vblank_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3b9d009a drm_format_plane_cpp +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3e0a6f69 drm_i2c_encoder_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3eb37b9d drm_ht_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3facc11d drm_bridge_disable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x42a9e223 drm_legacy_rmmap_locked +EXPORT_SYMBOL drivers/gpu/drm/drm 0x42e5c7f3 drm_dev_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4329ee34 drm_vblank_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0x432d3f09 drm_dev_register +EXPORT_SYMBOL drivers/gpu/drm/drm 0x43525874 drm_i2c_encoder_restore +EXPORT_SYMBOL drivers/gpu/drm/drm 0x439bd284 drm_legacy_ioremap_wc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x45a97b8a drm_i2c_encoder_mode_fixup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x45fe66ee drm_bridge_post_disable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4671344f drm_flip_work_queue_task +EXPORT_SYMBOL drivers/gpu/drm/drm 0x477eba0a drm_agp_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x47a481ca drm_calc_vbltimestamp_from_scanoutpos +EXPORT_SYMBOL drivers/gpu/drm/drm 0x48cb9fcf drm_edid_to_eld +EXPORT_SYMBOL drivers/gpu/drm/drm 0x490cfb78 drm_mm_reserve_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4955ff34 drm_prime_sg_to_page_addr_arrays +EXPORT_SYMBOL drivers/gpu/drm/drm 0x49b4348f drm_framebuffer_unregister_private +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4a408cab drm_property_create_signed_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4acd7c84 drm_open +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4b8264aa drm_modeset_drop_locks +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4c511235 drm_edid_is_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4e255728 drm_crtc_index +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4ea1f5a2 drm_gem_object_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5009a0f6 drm_gem_mmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x50e28c07 drm_edid_to_sad +EXPORT_SYMBOL drivers/gpu/drm/drm 0x51db353a drm_vma_offset_manager_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5261fed2 drm_mode_equal +EXPORT_SYMBOL drivers/gpu/drm/drm 0x526cae68 drm_panel_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x526f6f71 drm_rect_calc_hscale_relaxed +EXPORT_SYMBOL drivers/gpu/drm/drm 0x53fb1177 drm_pci_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x54ad8614 drm_mode_create_scaling_mode_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x54c5363e drm_gem_handle_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x569d0139 drm_i2c_encoder_prepare +EXPORT_SYMBOL drivers/gpu/drm/drm 0x57337952 drm_ati_pcigart_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x57b6efe3 drm_ioctl_flags +EXPORT_SYMBOL drivers/gpu/drm/drm 0x58ce0b6f drm_vblank_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x58d989bd drm_property_add_enum +EXPORT_SYMBOL drivers/gpu/drm/drm 0x58df8f32 drm_atomic_get_crtc_state +EXPORT_SYMBOL drivers/gpu/drm/drm 0x595537c8 drm_vblank_pre_modeset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x59ef50f0 drm_edid_block_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5d7318dc drm_global_item_ref +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5f4a8920 drm_crtc_vblank_count +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5f879cb1 drm_probe_ddc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6008abfc drm_pci_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x61590178 drm_mode_parse_command_line_for_connector +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6296948f drm_i2c_encoder_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x629c05e1 drm_clflush_sg +EXPORT_SYMBOL drivers/gpu/drm/drm 0x62a17ce6 drm_platform_set_busid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x62bb8ca9 drm_legacy_addbufs_pci +EXPORT_SYMBOL drivers/gpu/drm/drm 0x634aead7 drm_universal_plane_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6397281f drm_gtf_mode_complex +EXPORT_SYMBOL drivers/gpu/drm/drm 0x63f6e4ab drm_master_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0x641675b1 drm_gem_vm_close +EXPORT_SYMBOL drivers/gpu/drm/drm 0x65dfb68c drm_unplug_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6621efda drm_plane_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6634b4c1 drm_modeset_lock_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x67089f92 of_drm_find_panel +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6724def3 drm_dev_set_unique +EXPORT_SYMBOL drivers/gpu/drm/drm 0x67633846 drm_mm_insert_node_generic +EXPORT_SYMBOL drivers/gpu/drm/drm 0x67ff1fbb drm_bridge_attach +EXPORT_SYMBOL drivers/gpu/drm/drm 0x683b4d33 drm_property_reference_blob +EXPORT_SYMBOL drivers/gpu/drm/drm 0x68db2539 drm_mode_create_tile_group +EXPORT_SYMBOL drivers/gpu/drm/drm 0x68ed607c drm_flip_work_queue +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6900d335 drm_rect_clip_scaled +EXPORT_SYMBOL drivers/gpu/drm/drm 0x69119ae2 drm_pcie_get_speed_cap_mask +EXPORT_SYMBOL drivers/gpu/drm/drm 0x691e0806 drm_property_unreference_blob +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6ae2f6ae drm_mode_connector_set_tile_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6b1c13d5 drm_gem_prime_export +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6b347478 drm_atomic_set_fb_for_plane +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6c2d3613 drm_vma_node_is_allowed +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6c60f4bf drm_crtc_send_vblank_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6c82dfd3 drm_of_find_possible_crtcs +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6e30ba8e drm_rect_rotate_inv +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6ff30d99 __drm_modeset_lock_all +EXPORT_SYMBOL drivers/gpu/drm/drm 0x704bf914 drm_flip_work_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x70e3d058 drm_mode_get_tile_group +EXPORT_SYMBOL drivers/gpu/drm/drm 0x70e443c0 drm_crtc_check_viewport +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7193ccfd drm_calc_timestamping_constants +EXPORT_SYMBOL drivers/gpu/drm/drm 0x719edd9f drm_i2c_encoder_detect +EXPORT_SYMBOL drivers/gpu/drm/drm 0x71e3eb66 drm_atomic_state_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7237ad1e drm_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7279e306 drm_gem_vm_open +EXPORT_SYMBOL drivers/gpu/drm/drm 0x72db15dd drm_plane_force_disable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7318315e drm_vma_offset_lookup_locked +EXPORT_SYMBOL drivers/gpu/drm/drm 0x759c7e65 drm_platform_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x76853613 drm_gem_object_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x785173e6 drm_modeset_legacy_acquire_ctx +EXPORT_SYMBOL drivers/gpu/drm/drm 0x793df978 drm_set_preferred_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x795fa086 drm_legacy_addmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7a221ce7 drm_vblank_count_and_time +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7bacce9e drm_framebuffer_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7c23a30e drm_mode_prune_invalid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7c6b1029 drm_agp_acquire +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7ceb6a77 drm_atomic_connector_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7d378bc1 drm_atomic_async_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7d5ae815 drm_mode_equal_no_clocks_no_stereo +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7e162dc4 drm_mode_debug_printmodeline +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7e789ec5 drm_dev_unref +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7f16d1cf drm_modeset_lock_interruptible +EXPORT_SYMBOL drivers/gpu/drm/drm 0x80253f25 drm_add_edid_modes +EXPORT_SYMBOL drivers/gpu/drm/drm 0x82938715 drm_reinit_primary_mode_group +EXPORT_SYMBOL drivers/gpu/drm/drm 0x82c2998f drm_flip_work_allocate_task +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8324efd5 drm_atomic_legacy_backoff +EXPORT_SYMBOL drivers/gpu/drm/drm 0x837c85bb drm_vma_offset_manager_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x83e7ef12 drm_property_lookup_blob +EXPORT_SYMBOL drivers/gpu/drm/drm 0x83f48e86 drm_mode_hsync +EXPORT_SYMBOL drivers/gpu/drm/drm 0x84836244 drm_gem_mmap_obj +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8498e927 drm_framebuffer_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8555fb5f drm_bridge_pre_enable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x85ce5576 drm_vblank_count +EXPORT_SYMBOL drivers/gpu/drm/drm 0x85df83df drm_mode_create_rotation_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8618790b drm_put_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0x86220f52 drm_encoder_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x862d2904 drm_mode_create_tv_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0x871ab41a drm_rect_intersect +EXPORT_SYMBOL drivers/gpu/drm/drm 0x87efd2ca drm_plane_index +EXPORT_SYMBOL drivers/gpu/drm/drm 0x88393497 drm_atomic_state_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x88e215e0 drm_property_create_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0x89f409a8 drm_mode_group_init_legacy_group +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8b6661ef drm_av_sync_delay +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8cce128f drm_legacy_idlelock_take +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8dd4a597 drm_gem_dumb_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8de13715 drm_format_vert_chroma_subsampling +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8eff9111 drm_ht_find_item +EXPORT_SYMBOL drivers/gpu/drm/drm 0x913c3cc9 drm_crtc_handle_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0x915fbf73 drm_compat_ioctl +EXPORT_SYMBOL drivers/gpu/drm/drm 0x91842cc9 drm_hdmi_avi_infoframe_from_display_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x91fec1cc drm_rect_calc_vscale +EXPORT_SYMBOL drivers/gpu/drm/drm 0x92408488 drm_mm_scan_add_block +EXPORT_SYMBOL drivers/gpu/drm/drm 0x92c2ea9d drm_ati_pcigart_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x93a122f6 drm_master_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0x93a7044b drm_object_attach_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x93c14079 drm_mode_set_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x95810cfd drm_atomic_crtc_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x97c4a2cd drm_mode_vrefresh +EXPORT_SYMBOL drivers/gpu/drm/drm 0x98c44d54 drm_i2c_encoder_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9972db48 drm_rect_calc_vscale_relaxed +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9a197a65 drm_bridge_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9b560ab9 drm_gem_prime_import +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9b589c4d drm_modeset_unlock_all +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9c07309a drm_atomic_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9cbb500b drm_crtc_wait_one_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9d2af7a7 drm_modeset_unlock_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9f3cff27 drm_mode_connector_set_path_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9fba5a2b drm_mode_create_suggested_offset_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa0fbab50 drm_encoder_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa1093a4e drm_connector_index +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa11e02cb drm_framebuffer_reference +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa1c9c5da drm_display_info_set_bus_formats +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa28078b2 drm_edid_duplicate +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa4466414 drm_mm_remove_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa7299d78 drm_read +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa8987848 drm_mode_copy +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa96acfcb drm_rect_debug_print +EXPORT_SYMBOL drivers/gpu/drm/drm 0xaa25e080 drm_atomic_add_affected_connectors +EXPORT_SYMBOL drivers/gpu/drm/drm 0xaa7c319c drm_connector_register +EXPORT_SYMBOL drivers/gpu/drm/drm 0xabc640ab drm_gem_object_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0xabf78742 drm_modeset_backoff_interruptible +EXPORT_SYMBOL drivers/gpu/drm/drm 0xac03b679 drm_gtf_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0xac50a140 drm_legacy_addbufs_agp +EXPORT_SYMBOL drivers/gpu/drm/drm 0xad6737c5 drm_hdmi_vendor_infoframe_from_display_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0xad938be6 drm_mode_crtc_set_gamma_size +EXPORT_SYMBOL drivers/gpu/drm/drm 0xade568fd drm_mode_duplicate +EXPORT_SYMBOL drivers/gpu/drm/drm 0xaeb1fca6 drm_vblank_on +EXPORT_SYMBOL drivers/gpu/drm/drm 0xaeca5b06 drm_modeset_acquire_fini +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb053adda drm_rect_rotate +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb0e16797 drm_get_edid +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb1c8ba7c drm_add_modes_noedid +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb343d423 drm_crtc_vblank_off +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb3fa3d2a drm_mode_create_dirty_info_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb42560c8 drm_crtc_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb5540008 drm_global_item_unref +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb58dba6a drm_agp_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb7978371 drm_mode_validate_basic +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb7c2c7c0 drm_framebuffer_lookup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb8e04ab7 drm_legacy_idlelock_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb99f7925 drm_atomic_connectors_for_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbb435001 drm_mode_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbb9422de drm_agp_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbdc0bc4e drm_connector_unplug_all +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbe9ddce3 drm_mode_config_reset +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbfb36ec7 drm_pci_exit +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc0290412 drm_get_pci_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc14d87d9 drm_mode_create_from_cmdline_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc2e2cfd8 drm_crtc_get_hv_timing +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc360e7e2 drm_ut_debug_printk +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc3e704a2 drm_atomic_state_clear +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc5374530 drm_match_cea_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc6bc0d4b drm_mode_create_aspect_ratio_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc7e270c7 drm_bridge_mode_fixup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc834cf3d drm_dev_ref +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc9b8f7a0 drm_i2c_encoder_save +EXPORT_SYMBOL drivers/gpu/drm/drm 0xca45efbc drm_format_horz_chroma_subsampling +EXPORT_SYMBOL drivers/gpu/drm/drm 0xca5c7790 drm_mm_init_scan_with_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcac22e7e drm_vma_offset_lookup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcd0fc417 drm_ht_just_insert_please +EXPORT_SYMBOL drivers/gpu/drm/drm 0xce18a451 drm_mode_validate_size +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcecdc440 drm_atomic_plane_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd015bb18 drm_vma_node_revoke +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd042542e drm_mode_plane_set_obj_prop +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd0445267 drm_agp_enable +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd05c2411 drm_atomic_check_only +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd064bff0 drm_gem_prime_fd_to_handle +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd168bd2b drm_mode_probed_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd20a14af drm_property_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd2335101 drm_fb_get_bpp_depth +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd30979fe drm_crtc_vblank_reset +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd3fe0dc3 drm_agp_bind_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd52b1d11 drm_mm_init_scan +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd67bf0a3 drm_agp_unbind +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd6e7f36c drm_mode_set_crtcinfo +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd70c8470 drm_mm_debug_table +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdb90f0b3 drm_mode_connector_update_edid_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdbb5a9f5 drm_ht_remove_item +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdc368194 drm_pci_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdd150721 drm_mm_takedown +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdd8ca48c drm_i2c_encoder_mode_set +EXPORT_SYMBOL drivers/gpu/drm/drm 0xddfa5aa1 drm_mode_connector_attach_encoder +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdf666902 drm_rotation_simplify +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe12a0ce3 drm_mode_create_dvi_i_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe1455541 drm_gem_free_mmap_offset +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe2b46bce drm_sysfs_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe2ffd7a5 drm_vma_offset_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe3eb38ec drm_legacy_getsarea +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe51d89b5 drm_mm_clean +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe5b11632 drm_mode_object_find +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe660e8c5 drm_vblank_post_modeset +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe7197773 drm_ht_insert_item +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe8ddcedb drm_property_create_enum +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe9152136 drm_atomic_add_affected_planes +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe9e60183 drm_atomic_state_default_clear +EXPORT_SYMBOL drivers/gpu/drm/drm 0xea280bd2 drm_framebuffer_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0xea8529ae of_drm_find_bridge +EXPORT_SYMBOL drivers/gpu/drm/drm 0xea899b40 drm_property_create_bitmask +EXPORT_SYMBOL drivers/gpu/drm/drm 0xeb217d50 drm_property_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0xec7e8e2d drm_modeset_lock_all_crtcs +EXPORT_SYMBOL drivers/gpu/drm/drm 0xed8a2766 drm_panel_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0xede2b353 drm_atomic_set_mode_for_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf084ae2f drm_clflush_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf08a7f18 drm_crtc_vblank_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf1421d13 drm_mode_sort +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf15a71d8 drm_gem_get_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf170d595 drm_property_create_bool +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf173b78b drm_irq_uninstall +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf1b098be drm_vma_offset_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf1e68b78 drm_agp_bind +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf1f44cea drm_gem_create_mmap_offset_size +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf334d6d6 drm_connector_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf3fb6dda drm_gem_object_lookup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf5911322 drm_atomic_get_connector_state +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf710f4f9 drm_object_property_get_value +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfa360eeb drm_gem_put_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfa80edaf drm_vblank_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfb6f1ba9 drm_irq_install +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfb7006e5 drm_atomic_state_default_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfbe8aca5 drm_mode_config_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfcf54a4f drm_mm_scan_remove_block +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfd063935 drm_edid_to_speaker_allocation +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfd70df76 drm_gem_handle_delete +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfe1e2858 drm_gem_create_mmap_offset +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfe41a9fa drm_gem_private_object_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfed924e6 drm_connector_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xffc6c87a drm_detect_monitor_audio +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0194010c drm_dp_mst_detect_port +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x03f5b77f drm_atomic_helper_crtc_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x053de380 drm_primary_helper_update +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x06095281 drm_atomic_helper_commit_planes_on_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x06452a20 drm_dp_mst_allocate_vcpi +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x098e47d2 drm_dp_link_train_clock_recovery_delay +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x09bf3785 drm_atomic_helper_check_planes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0a24be51 drm_helper_crtc_mode_set +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0c7260a3 drm_primary_helper_funcs +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0f96ec70 drm_dp_clock_recovery_ok +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x15288d51 drm_helper_move_panel_connectors_to_head +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x152fac02 drm_helper_probe_single_connector_modes_nomerge +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x161fda75 drm_fb_helper_check_var +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x163251c8 drm_dp_link_train_channel_eq_delay +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x17fe198c drm_fb_helper_pan_display +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x1b8d910c drm_atomic_helper_set_config +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x1ceb733b drm_dp_aux_register +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x21027780 __drm_atomic_helper_plane_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x24f72cbc drm_primary_helper_disable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2554b17f drm_helper_probe_single_connector_modes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2747ab12 drm_pick_cmdline_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x277a8ba1 drm_fb_helper_prepare +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2856006d drm_kms_helper_poll_fini +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x28f373c6 drm_plane_helper_update +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2b049f1a drm_fb_helper_debug_leave +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2bf6af9b drm_fb_helper_add_one_connector +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2c384cac drm_atomic_helper_commit_modeset_enables +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2d5a334a drm_dp_find_vcpi_slots +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2ee853d6 drm_helper_connector_dpms +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2ef88955 drm_dp_mst_topology_mgr_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2f48f5c6 drm_atomic_helper_prepare_planes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2fb859f4 drm_atomic_helper_plane_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x31448784 drm_atomic_helper_wait_for_vblanks +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x338ba57b drm_fb_helper_initial_config +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x339f9f8a drm_crtc_helper_set_config +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x34871adf drm_dp_channel_eq_ok +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x34e4181b drm_fb_helper_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3550aaf6 __drm_atomic_helper_plane_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x39abe74c drm_atomic_helper_crtc_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3a8213df __drm_atomic_helper_crtc_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3b48bbd4 drm_plane_helper_disable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3c8b1e9c drm_fb_helper_debug_enter +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3d188aae drm_dp_mst_hpd_irq +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x40d65da5 drm_atomic_helper_update_legacy_modeset_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x43c51df2 drm_atomic_helper_connector_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x45efc869 drm_dp_mst_reset_vcpi_slots +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x45f6090a drm_kms_helper_poll_disable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4a2b3eeb drm_primary_helper_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4d9d19c8 drm_dp_check_act_status +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5586b88d drm_dp_link_power_down +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x56586c7f __drm_atomic_helper_crtc_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x575dc5bd drm_atomic_helper_disable_plane +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x583c1d39 drm_dp_mst_topology_mgr_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5b07a182 drm_helper_resume_force_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5f29a214 drm_fb_helper_restore_fbdev_mode_unlocked +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5f9f8933 drm_atomic_helper_update_plane +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5fbd2512 drm_atomic_helper_crtc_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6276f5e4 drm_dp_link_configure +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6aa0882e drm_crtc_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6caeb2d3 drm_has_preferred_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7019d7f0 drm_atomic_helper_page_flip +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x711a004a drm_dp_link_rate_to_bw_code +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x71ebc7be drm_kms_helper_poll_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x741852b1 drm_atomic_helper_crtc_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x744675e5 drm_helper_encoder_in_use +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x747d05f0 drm_dp_aux_unregister +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x75e10942 drm_atomic_helper_connector_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7a49ac03 drm_dp_dpcd_write +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7c80285d drm_fb_helper_blank +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7eb996af drm_fb_helper_setcmap +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7fff9a37 drm_fb_helper_set_par +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x84e924ba drm_dp_get_adjust_request_pre_emphasis +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x88955e8f drm_fb_helper_fill_fix +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x890eb416 drm_atomic_helper_connector_dpms +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x91556807 drm_atomic_helper_check_modeset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x92e6f022 drm_helper_disable_unused_functions +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x949d4391 drm_helper_mode_fill_fb_struct +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9e87cfa5 drm_atomic_helper_commit +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9eb65ec7 drm_dp_mst_get_edid +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa47826e4 drm_dp_calc_pbn_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa64d6a92 drm_helper_crtc_in_use +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa721a122 drm_fb_helper_remove_one_connector +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa77858bb drm_dp_get_adjust_request_voltage +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa837b735 drm_dp_mst_dump_topology +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa8d6809d drm_dp_bw_code_to_link_rate +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xaa1fa90f __drm_atomic_helper_connector_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xad2ebee7 drm_atomic_helper_connector_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xae90fd9c drm_dp_mst_topology_mgr_suspend +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb02e7231 drm_dp_dpcd_read_link_status +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb3b6eb66 drm_dp_mst_topology_mgr_resume +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xba159a7d drm_fb_helper_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xba31d410 drm_atomic_helper_swap_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xbb99c835 __drm_atomic_helper_connector_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xbcbaf891 drm_dp_update_payload_part2 +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xbcc3724d drm_atomic_helper_plane_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xbd3402e7 drm_dp_link_probe +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xbf7d1ad1 drm_fb_helper_single_add_all_connectors +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc508c689 drm_atomic_helper_commit_modeset_disables +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc6ffba37 drm_atomic_helper_plane_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc7ac2ccb drm_crtc_helper_set_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xce39efd9 drm_atomic_helper_check +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xcea4e9db drm_kms_helper_poll_enable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd13f0850 drm_atomic_helper_commit_planes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd5b9b99c drm_helper_hpd_irq_event +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd66489c9 drm_plane_helper_check_update +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd848733c drm_dp_dpcd_read +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xdacd3f56 drm_dp_update_payload_part1 +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe7198c79 drm_fb_helper_fill_var +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe8226add drm_atomic_helper_plane_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe84df979 drm_atomic_helper_cleanup_planes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xeb6cae57 drm_atomic_helper_connector_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xef726a36 drm_dp_mst_get_vcpi_slots +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf14fb130 drm_dp_link_power_up +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf1bd6223 drm_kms_helper_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf360a9af drm_dp_mst_deallocate_vcpi +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf405e6c1 drm_fb_helper_fini +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf5d5765f drm_dp_mst_topology_mgr_set_mst +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xfb8e6464 drm_helper_crtc_mode_set_base +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x01285a5f ttm_bo_kunmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x04be3861 ttm_bo_init_mm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x0802aa3a ttm_bo_device_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x0b1addd0 ttm_agp_tt_create +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x0f3084a8 ttm_tt_set_placement_caching +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x153de261 ttm_agp_tt_populate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x1584c29f ttm_pool_unpopulate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x2ae01b42 ttm_bo_synccpu_write_grab +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x2b54aa9a ttm_object_file_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x2b8173f1 ttm_bo_synccpu_write_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x2ea3d07e ttm_bo_dma_acc_size +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x2ed72a9b ttm_mem_io_free +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x305e7b5d ttm_tt_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x472faaed ttm_tt_fini +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x485a5bc0 ttm_ref_object_add +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x4e8dd264 ttm_bo_global_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x4f36362f ttm_bo_manager_func +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x51ca21f8 ttm_mem_io_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x538f5b8f ttm_prime_object_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x564e1aee ttm_bo_global_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x56a325ef ttm_mem_global_alloc +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x582489f2 ttm_bo_lock_delayed_workqueue +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x5a8fdfea ttm_vt_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x6052860c ttm_round_pot +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x61a8352e ttm_bo_unref +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x62064451 ttm_bo_create +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x69b21305 ttm_tt_bind +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x6ccbe57a ttm_eu_backoff_reservation +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x6f67aa68 ttm_dma_tt_fini +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x6f97740e ttm_bo_validate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x70cafcbc ttm_bo_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x77720166 ttm_dma_tt_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x79df438c ttm_mem_io_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x7d55da85 ttm_read_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x80d86f0e ttm_object_device_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x84a13931 ttm_write_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x880a15ad ttm_base_object_lookup +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x89a443de ttm_write_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x8b198af7 ttm_eu_reserve_buffers +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x8d14adbf ttm_io_prot +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x8e565b7d ttm_bo_add_to_lru +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x94894449 ttm_base_object_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x94b7d898 ttm_bo_device_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x998e45c0 ttm_ref_object_base_unref +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x9b10360e ttm_bo_unlock_delayed_workqueue +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xa0f07115 ttm_fbdev_mmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xa2a129fd ttm_suspend_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xa44ce240 ttm_bo_mem_put +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xa73de2a9 ttm_vt_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xa8d45b8c ttm_bo_wait +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xa9803118 ttm_pool_populate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xafe19fb9 ttm_page_alloc_debugfs +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xb191f332 ttm_object_device_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xb4ee4601 ttm_bo_mmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xb62f930b ttm_bo_swapout_all +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xb83c6470 ttm_lock_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xb99efcb6 ttm_bo_kmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xba216adb ttm_agp_tt_unpopulate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xc1b891e7 ttm_bo_move_memcpy +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xc3399b6e ttm_bo_del_sub_from_lru +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xc5689ecc ttm_bo_unmap_virtual +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xc58cd59b ttm_mem_global_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xc5f0c2da ttm_read_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xcc0fb48a ttm_bo_evict_mm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xce59b9de ttm_bo_move_ttm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xce6e43a8 ttm_base_object_lookup_for_ref +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xcf5fd220 ttm_mem_global_free +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xcf67c299 ttm_ref_object_exists +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xd3333f39 ttm_bo_mem_space +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xd7f51742 ttm_suspend_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xd8edb115 ttm_base_object_unref +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xda822a2c ttm_bo_acc_size +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xdc513257 ttm_eu_fence_buffer_objects +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xe2420739 ttm_mem_io_reserve +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xeb22f831 ttm_bo_move_accel_cleanup +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xf5949f68 ttm_bo_clean_mm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xf60df464 ttm_mem_global_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xfbc2c5ec ttm_object_file_release +EXPORT_SYMBOL drivers/hwmon/hwmon-vid 0x0903c239 vid_from_reg +EXPORT_SYMBOL drivers/hwmon/hwmon-vid 0xef1c781c vid_which_vrm +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-bit 0x612b2ef7 i2c_bit_add_numbered_bus +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-bit 0xb69ddb0b i2c_bit_algo +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-bit 0xf11637b6 i2c_bit_add_bus +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-pca 0xb102aed4 i2c_pca_add_bus +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-pca 0xbfb89abe i2c_pca_add_numbered_bus +EXPORT_SYMBOL drivers/i2c/busses/i2c-amd756 0xb6a58ca2 amd756_smbus +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x1aab4573 mma9551_read_status_byte +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x3807da40 mma9551_read_status_words +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x39ca45fd mma9551_read_config_byte +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x41ef446c mma9551_read_accel_scale +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x470860ef mma9551_read_status_word +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x4d2bafc8 mma9551_read_config_word +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x4fe61b68 mma9551_read_version +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x5fe4e7ff mma9551_set_device_state +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x71246ba2 mma9551_write_config_word +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x8e351371 mma9551_gpio_config +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x91072a09 mma9551_app_reset +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x9385a619 mma9551_read_accel_chan +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xa2333929 mma9551_set_power_state +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xbcd7fe96 mma9551_sleep +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xd9434469 mma9551_write_config_words +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xf6fb15c2 mma9551_read_config_words +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xfae3d685 mma9551_update_config_bits +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xfddf392b mma9551_write_config_byte +EXPORT_SYMBOL drivers/iio/accel/st_accel 0x482b96c0 st_accel_common_remove +EXPORT_SYMBOL drivers/iio/accel/st_accel 0x50c5e940 st_accel_common_probe +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x1ca656ee hid_sensor_read_poll_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x26aab99d hid_sensor_write_samp_freq_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x428fb504 hid_sensor_parse_common_attributes +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x5693e80a hid_sensor_write_raw_hyst_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x89d428ac hid_sensor_read_raw_hyst_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0xc4c40b56 hid_sensor_read_samp_freq_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0xc83a92bf hid_sensor_format_scale +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-trigger 0x0053493f hid_sensor_pm_ops +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-trigger 0x6a092102 hid_sensor_setup_trigger +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-trigger 0xa7be2927 hid_sensor_remove_trigger +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-trigger 0xd2170812 hid_sensor_power_state +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0x17ef65fc ssp_disable_sensor +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0x815a9446 ssp_register_consumer +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0x822f1e00 ssp_enable_sensor +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0x885df6d2 ssp_change_delay +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0x89350c49 ssp_get_sensor_delay +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/ssp_iio 0x4974808b ssp_common_process_data +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/ssp_iio 0x62fba7ae ssp_common_buffer_postdisable +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/ssp_iio 0xac4fc017 ssp_common_buffer_postenable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x0081e340 st_sensors_init_sensor +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x03a5bc10 st_sensors_sysfs_sampling_frequency_avail +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x074d7047 st_sensors_trigger_handler +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x0bf209d8 st_sensors_set_odr +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x1cca62f8 st_sensors_set_axis_enable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x29690649 st_sensors_deallocate_trigger +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x43024d02 st_sensors_read_info_raw +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x4364c0ed st_sensors_check_device_support +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x53347a6a st_sensors_allocate_trigger +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x7404dc26 st_sensors_set_dataready_irq +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x91983fb2 st_sensors_get_buffer_element +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x999de044 st_sensors_set_enable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xb1413fd1 st_sensors_set_fullscale_by_gain +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xb5c16cf6 st_sensors_sysfs_scale_avail +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xdbfe3e46 st_sensors_power_disable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xdd3d5f22 st_sensors_power_enable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors_i2c 0x0bdd7737 st_sensors_i2c_configure +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors_i2c 0xda6d6fbe st_sensors_of_i2c_probe +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors_spi 0x1c2bed89 st_sensors_spi_configure +EXPORT_SYMBOL drivers/iio/gyro/st_gyro 0x5b9e19e6 st_gyro_common_probe +EXPORT_SYMBOL drivers/iio/gyro/st_gyro 0xd08ff282 st_gyro_common_remove +EXPORT_SYMBOL drivers/iio/imu/adis_lib 0x2406d8f0 adis_enable_irq +EXPORT_SYMBOL drivers/iio/imu/adis_lib 0x8cbcbb5f adis_debugfs_reg_access +EXPORT_SYMBOL drivers/iio/industrialio 0x16960b25 iio_trigger_poll_chained +EXPORT_SYMBOL drivers/iio/industrialio 0x16bba18c iio_trigger_notify_done +EXPORT_SYMBOL drivers/iio/industrialio 0x233dc1e4 iio_device_free +EXPORT_SYMBOL drivers/iio/industrialio 0x2d6bcdcb iio_trigger_generic_data_rdy_poll +EXPORT_SYMBOL drivers/iio/industrialio 0x3587d6a8 iio_trigger_alloc +EXPORT_SYMBOL drivers/iio/industrialio 0x35a512e5 iio_push_event +EXPORT_SYMBOL drivers/iio/industrialio 0x4c7ee5f3 iio_trigger_unregister +EXPORT_SYMBOL drivers/iio/industrialio 0x4df970e6 iio_device_register +EXPORT_SYMBOL drivers/iio/industrialio 0x633e7399 iio_device_unregister +EXPORT_SYMBOL drivers/iio/industrialio 0x80dae74b iio_buffer_init +EXPORT_SYMBOL drivers/iio/industrialio 0x88863e98 iio_triggered_buffer_predisable +EXPORT_SYMBOL drivers/iio/industrialio 0x90996a90 iio_bus_type +EXPORT_SYMBOL drivers/iio/industrialio 0xa744601b iio_device_alloc +EXPORT_SYMBOL drivers/iio/industrialio 0xbb0f82ce iio_read_const_attr +EXPORT_SYMBOL drivers/iio/industrialio 0xbeb80cb2 iio_triggered_buffer_postenable +EXPORT_SYMBOL drivers/iio/industrialio 0xbfb7e5f8 iio_trigger_register +EXPORT_SYMBOL drivers/iio/industrialio 0xc066f57e iio_trigger_poll +EXPORT_SYMBOL drivers/iio/industrialio 0xd33aa49b iio_trigger_free +EXPORT_SYMBOL drivers/iio/industrialio 0xdf76bbeb iio_pollfunc_store_time +EXPORT_SYMBOL drivers/iio/industrialio-triggered-buffer 0x2f2ac589 iio_triggered_buffer_setup +EXPORT_SYMBOL drivers/iio/industrialio-triggered-buffer 0xbb9fa23e iio_triggered_buffer_cleanup +EXPORT_SYMBOL drivers/iio/kfifo_buf 0xa0c386b0 iio_kfifo_allocate +EXPORT_SYMBOL drivers/iio/kfifo_buf 0xac803a95 iio_kfifo_free +EXPORT_SYMBOL drivers/iio/kfifo_buf 0xd2bb4459 devm_iio_kfifo_free +EXPORT_SYMBOL drivers/iio/kfifo_buf 0xd6007fb5 devm_iio_kfifo_allocate +EXPORT_SYMBOL drivers/iio/magnetometer/st_magn 0x3647f455 st_magn_common_remove +EXPORT_SYMBOL drivers/iio/magnetometer/st_magn 0xf0c4cfa9 st_magn_common_probe +EXPORT_SYMBOL drivers/iio/pressure/ms5611_core 0x95f54d44 ms5611_probe +EXPORT_SYMBOL drivers/iio/pressure/st_pressure 0x1ee38f9b st_press_common_remove +EXPORT_SYMBOL drivers/iio/pressure/st_pressure 0x2b189175 st_press_common_probe +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x049ace30 rdma_addr_find_smac_by_sgid +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x04b8b6d7 rdma_translate_ip +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x1c3c0ad3 rdma_addr_size +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x1ea5767b rdma_addr_register_client +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x273f4cca rdma_addr_cancel +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x32a8402c rdma_addr_unregister_client +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x59252c9d rdma_resolve_ip +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x5e956ce8 rdma_copy_addr +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0xf029eb25 rdma_addr_find_dmac_by_grh +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x0a486974 ib_send_cm_mra +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x16538dd1 ib_send_cm_apr +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x2ef24579 ib_send_cm_rej +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x338edb1e ib_create_cm_id +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x3eb40ff0 ib_send_cm_dreq +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x50d84f3c ib_send_cm_rtu +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x5dccd2c6 ib_send_cm_lap +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x5ee54c92 ib_send_cm_rep +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x5fd42094 ib_send_cm_drep +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x6c64cb64 ib_cm_notify +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x71e1ad08 ib_cm_listen +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x802d5006 cm_class +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xb55de216 ib_cm_init_qp_attr +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xbc0894b2 ib_send_cm_sidr_rep +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xca37ce31 ib_send_cm_req +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xe1d7f995 ib_send_cm_sidr_req +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xf19dde7d ib_destroy_cm_id +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0478ea33 ib_init_ah_from_wc +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0a1f2c06 ib_modify_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0c1b9ac1 ib_ud_header_unpack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x10a9a0d1 ibnl_unicast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x189d4108 ib_destroy_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x19b8445a ibnl_put_attr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1e491a04 ib_unmap_fmr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x21d2aa65 ib_create_flow +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x22f3cf93 ib_pack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x249d743a ib_umem_odp_unmap_dma_pages +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2619e838 ib_dispatch_event +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2da49008 ib_modify_port +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2e29e18e ib_query_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2ed6e386 ib_ud_header_pack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x33f47593 ib_destroy_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x340ebbe5 ib_create_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x34c6473d ib_close_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x362e0e14 ib_free_fast_reg_page_list +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x36cce532 ib_resolve_eth_l2_attrs +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x3a230edd ib_find_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x3a9e7c81 ib_fmr_pool_map_phys +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x3dc2e343 ib_register_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x3e1bab71 ib_detach_mcast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x3e4818e9 ib_create_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x3ff83ed0 rdma_port_get_link_layer +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x42624964 ib_alloc_pd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x434439a6 ib_umem_page_count +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x434cfb9d ib_get_cached_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x48153498 ib_query_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x48f2dd8d ib_unregister_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x4a470512 ib_modify_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x4dcc6da8 ibnl_put_msg +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x502c9bd8 ib_create_ah_from_wc +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x50dbc447 ib_flush_fmr_pool +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5611cdea rdma_node_get_transport +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x582a6b52 ib_register_event_handler +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x58dc3c70 ib_query_port +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6099f51f ib_get_client_data +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x612c178b ib_fmr_pool_unmap +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x656c232b ib_alloc_fmr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x67ada09c ib_modify_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6bb39db2 ib_alloc_fast_reg_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6e030e26 ib_modify_qp_is_ok +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6f2f02c9 ib_dealloc_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x71698db7 ib_resize_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x79afad0a ib_alloc_xrcd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7a0e4ec2 ib_create_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7cb2c93c ib_unregister_event_handler +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7d00108e ib_query_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x806505d2 ib_unregister_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x827cba2d ib_query_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x832ec778 ib_create_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x84281435 ib_dealloc_pd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x86cc4940 ib_check_mr_status +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x8723d90e ib_umem_release +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x87a6c100 ib_create_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x8906e089 ib_destroy_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x90b6f81f ib_rereg_phys_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x90f573f2 ib_dealloc_mw +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x957f5d77 ib_destroy_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x96ecc1bc ib_query_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x97c040e6 ibnl_add_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x98b31039 ib_alloc_mw +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa432baf6 ib_unpack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa4544c40 ib_get_cached_lmc +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa5098767 ib_umem_copy_from +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xaa547d1d ib_query_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xab0a3467 mult_to_ib_rate +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xaccaaea6 ib_dealloc_fmr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xadc4c35d ib_open_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xaf9ba574 ib_find_cached_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb32c0126 ib_create_fmr_pool +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb65966dd ib_get_dma_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb869e02c ib_umem_odp_map_dma_pages +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb93a52b0 ib_rate_to_mbps +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xba530f0a ib_alloc_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xbadd8259 ib_rate_to_mult +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xbb7fcbf1 ib_attach_mcast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc2abec63 ib_get_cached_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc32b59ff ib_destroy_fmr_pool +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc5dc3fbb ib_dereg_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc67f14a5 ibnl_remove_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc6aca95f ib_umem_get +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc955a6f6 ib_modify_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xcbc8c3fb ib_find_exact_cached_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xce98991e ib_modify_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xcfa2a09f ib_event_msg +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd441e621 ib_reg_phys_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd6a0d5a0 ib_set_client_data +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xdb2f729b ib_alloc_fast_reg_page_list +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe05a7ff0 ib_dealloc_xrcd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe16b07e8 ib_find_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe20a34f2 ib_destroy_flow +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe47bbee8 ibnl_multicast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe5840ec6 ib_wc_status_msg +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xea69a0b4 ib_destroy_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xeb1e2490 ib_find_cached_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xefab0619 ib_register_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf279a6c6 ib_query_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xfc150956 ib_ud_header_init +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x042c5a93 ib_free_recv_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x0b59744c ib_redirect_mad_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x16686dd1 ib_create_send_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x2f0ea69e ib_response_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x5301bb8b ib_free_send_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x53e10c20 ib_get_rmpp_segment +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x6bfd5bcb ib_mad_kernel_rmpp_agent +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x6f077fcf ib_get_mad_data_offset +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x7b5d4b7a ib_is_mad_class_rmpp +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x7fa49dcc ib_register_mad_snoop +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x926e7d2d ib_cancel_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x9f3ce7cf ib_register_mad_agent +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xa6927d28 ib_process_mad_wc +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xb6a8cd6c ib_modify_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xf64c08b9 ib_post_send_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xfcd7bc8e ib_unregister_mad_agent +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x0db119cd ib_init_ah_from_mcmember +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x22f07253 ib_sa_unpack_path +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x33b38e15 ib_sa_path_rec_get +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x47cc5f80 ib_init_ah_from_path +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x5328d7a6 ib_sa_register_client +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x576fdbac ib_sa_free_multicast +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x6044f778 ib_sa_guid_info_rec_query +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x7758dad3 ib_sa_join_multicast +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x8619d38f ib_sa_get_mcmember_rec +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x89fd297e ib_sa_service_rec_query +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x9a1cd50d ib_sa_unregister_client +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xda0d50ec ib_sa_cancel_query +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xddc330e7 ib_sa_pack_path +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x2569d757 ib_copy_path_rec_to_user +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x52a6ce77 ib_copy_ah_attr_to_user +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x7971c00e ib_copy_qp_attr_to_user +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0xe350f2aa ib_copy_path_rec_from_user +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x0ff9f042 iwpm_remove_mapinfo +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x14237570 iw_cm_listen +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x1d4e8dc6 iwpm_mapping_info_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x2b526eec iw_cm_reject +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x4720430f iw_cm_disconnect +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x4bac9a55 iwpm_ack_mapping_info_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x55d281c4 iwpm_mapping_error_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x5da59312 iwpm_register_pid +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x6968573d iwpm_add_mapping +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x6a9d3069 iwpm_add_mapping_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x6c74c344 iwpm_get_remote_info +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x79d55465 iw_cm_accept +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x904609a0 iwpm_remove_mapping +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x91a914d6 iwpm_init +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x9327be67 iwpm_exit +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x966eef3d iw_cm_init_qp_attr +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x99edf901 iwpm_valid_pid +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xabec3544 iwpm_add_and_query_mapping_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xae4f9092 iw_destroy_cm_id +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xc3cfdad6 iwpm_remote_info_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xcd1b4b71 iw_create_cm_id +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xd3d3767c iw_cm_connect +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xd447b24a iwpm_create_mapinfo +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xf380aa0f iwpm_add_and_query_mapping +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xf7a02e1a iwpm_register_pid_cb +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x1468c925 rdma_set_afonly +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x45cb20ae rdma_leave_multicast +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x55f5e22f rdma_accept +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x64659f93 rdma_resolve_addr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x6d035fa7 rdma_join_multicast +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x7d3e6ef5 rdma_resolve_route +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x8ecd9dd5 rdma_destroy_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x907df803 rdma_event_msg +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x9139f1d1 rdma_init_qp_attr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x95372208 rdma_set_ib_paths +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x98af723a rdma_destroy_qp +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xaeeaac55 rdma_set_service_type +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xbc8fcf2b rdma_reject +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xbe28bfc0 rdma_set_reuseaddr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xbfcac72f rdma_create_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xc2348385 rdma_get_service_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xc51ea0a3 rdma_connect +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xdfebfce0 rdma_notify +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xea72ac7b rdma_create_qp +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xea89560e rdma_bind_addr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xf91be62b rdma_listen +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xf9c4350a rdma_disconnect +EXPORT_SYMBOL drivers/input/gameport/gameport 0x10e6e3e2 gameport_start_polling +EXPORT_SYMBOL drivers/input/gameport/gameport 0x1a7c50b6 gameport_unregister_driver +EXPORT_SYMBOL drivers/input/gameport/gameport 0x35dcc5b7 __gameport_register_port +EXPORT_SYMBOL drivers/input/gameport/gameport 0x40d7ec35 gameport_unregister_port +EXPORT_SYMBOL drivers/input/gameport/gameport 0x4a2afe05 gameport_stop_polling +EXPORT_SYMBOL drivers/input/gameport/gameport 0x6ac19a05 __gameport_register_driver +EXPORT_SYMBOL drivers/input/gameport/gameport 0x6b51db0d gameport_close +EXPORT_SYMBOL drivers/input/gameport/gameport 0xa164157a gameport_set_phys +EXPORT_SYMBOL drivers/input/gameport/gameport 0xc440ab67 gameport_open +EXPORT_SYMBOL drivers/input/input-polldev 0x2af574f1 devm_input_allocate_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0x3b9ff960 input_register_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0x890d98ca input_allocate_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0xcee66163 input_free_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0xea092033 input_unregister_polled_device +EXPORT_SYMBOL drivers/input/matrix-keymap 0x30f84ada matrix_keypad_build_keymap +EXPORT_SYMBOL drivers/input/misc/ad714x 0x3ce19cb6 ad714x_enable +EXPORT_SYMBOL drivers/input/misc/ad714x 0x7cd6e0c5 ad714x_remove +EXPORT_SYMBOL drivers/input/misc/ad714x 0xcf93514f ad714x_probe +EXPORT_SYMBOL drivers/input/misc/ad714x 0xf4dfc58e ad714x_disable +EXPORT_SYMBOL drivers/input/misc/cma3000_d0x 0x64a43957 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/sparse-keymap 0x30202149 sparse_keymap_report_event +EXPORT_SYMBOL drivers/input/sparse-keymap 0x4f61de38 sparse_keymap_free +EXPORT_SYMBOL drivers/input/sparse-keymap 0x6be95252 sparse_keymap_entry_from_scancode +EXPORT_SYMBOL drivers/input/sparse-keymap 0x7685e474 sparse_keymap_report_entry +EXPORT_SYMBOL drivers/input/sparse-keymap 0xa03e2e57 sparse_keymap_setup +EXPORT_SYMBOL drivers/input/sparse-keymap 0xa1f6d2df sparse_keymap_entry_from_keycode +EXPORT_SYMBOL drivers/input/touchscreen/ad7879 0x67be276d ad7879_probe +EXPORT_SYMBOL drivers/input/touchscreen/ad7879 0x785b9def ad7879_pm_ops +EXPORT_SYMBOL drivers/input/touchscreen/ad7879 0x97f83edf ad7879_remove +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x04403fcf unregister_capi_driver +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x07c5a3b5 capi_ctr_ready +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x14f2aa5a capi20_get_version +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x2b8eab1f capilib_free_ncci +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x2baa6586 capilib_new_ncci +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x31c24aa4 capi20_isinstalled +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x3e7145ad capi20_register +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x50b33ca4 capi_cmsg2message +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x6057c6f3 capi_message2cmsg +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x62e32d43 capilib_data_b3_conf +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x6a041d63 capi_ctr_suspend_output +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x71e8d5ba capilib_data_b3_req +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x7292ab34 cdebbuf_free +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x72a25a72 capi_cmsg2str +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x7a33596c capi20_get_serial +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x7e6f1307 capi20_get_manufacturer +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x8f699913 capilib_release +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x9f823278 register_capi_driver +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xa275f2cb capi_ctr_resume_output +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xaa165d27 capilib_release_appl +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xae588a87 capi_ctr_handle_message +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xb19fda8d capi_cmd2str +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xb60e5e5f capi_cmsg_header +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xc42d9ec1 capi20_manufacturer +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xd0e98cf8 detach_capi_ctr +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xd1fa7cae capi20_release +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xd6477c69 capi20_put_message +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xe19a11ac capi20_get_profile +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xe27d01b8 attach_capi_ctr +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xf0c5e7b0 capi_ctr_down +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xfd552f7a capi_message2str +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x048bbafe b1_loaded +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x0b975021 b1_parse_version +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x2df31e13 b1_alloc_card +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x440cad58 b1_load_config +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x85f09690 b1_irq_table +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xb0aa8902 b1_getrevision +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xb1354697 b1_reset_ctr +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xb2a9667d avmcard_dma_free +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xb33a1cab b1_register_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xb8a002fe b1_load_firmware +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xc593b4a0 b1_load_t4file +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xc63bbccb b1ctl_proc_fops +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xcb3bc913 b1_free_card +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xd61b467a b1_send_message +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xdfd28376 b1_detect +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xe55b54b0 b1_release_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xfa10fee4 b1_interrupt +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xfc7d3af2 avmcard_dma_alloc +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x0b7ae3c0 b1dma_reset +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x0dd1fa22 b1dmactl_proc_fops +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x1d4fe2d7 t1pci_detect +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x3c83c0b2 b1dma_reset_ctr +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x45fd5590 b1dma_register_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x8bfb70b5 b1dma_load_firmware +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xaa1c10f6 b1pciv4_detect +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xb8fbe8ff b1dma_release_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xc40e92ba b1dma_send_message +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xd6f9f1ea b1dma_interrupt +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1pcmcia 0x29562993 b1pcmcia_delcard +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1pcmcia 0xaec3240e b1pcmcia_addcard_m1 +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1pcmcia 0xea620116 b1pcmcia_addcard_m2 +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1pcmcia 0xf14bf8b1 b1pcmcia_addcard_b1 +EXPORT_SYMBOL drivers/isdn/hardware/eicon/divadidd 0x2974ead1 DIVA_DIDD_Read +EXPORT_SYMBOL drivers/isdn/hardware/eicon/divadidd 0x7ab59853 proc_net_eicon +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0x0d3ebec6 mISDNisac_init +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0x1cbfa66c mISDNipac_irq +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0xa7403a77 mISDNisac_irq +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0xac4b19a6 mISDNipac_init +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNisar 0x10817577 mISDNisar_irq +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNisar 0x69f08c8e mISDNisar_init +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x07f4f2ce hisax_unregister +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x148f0c99 FsmFree +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x545b2ba5 hisax_init_pcmcia +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x6fe1ca04 FsmDelTimer +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x93a64734 FsmChangeState +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x9df0cd27 FsmEvent +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x9f987c85 FsmRestartTimer +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0xa1bc94b9 FsmInitTimer +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0xee93522c hisax_register +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0xf0a16657 FsmNew +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0xfc27303b HiSax_closecard +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x3f3b323a isac_d_l2l1 +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x4344ae08 isac_init +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x594296be isac_irq +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x9567553c isacsx_setup +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0xb25a61dd isacsx_irq +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0xf86ee1ff isac_setup +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0x0a09ee02 isdn_ppp_unregister_compressor +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0x667e4b2c register_isdn +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0xbac78d13 isdn_ppp_register_compressor +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0xfa06820f isdn_register_divert +EXPORT_SYMBOL drivers/isdn/i4l/isdnhdlc 0x3b71e4fc isdnhdlc_decode +EXPORT_SYMBOL drivers/isdn/i4l/isdnhdlc 0x59cc8a7e isdnhdlc_out_init +EXPORT_SYMBOL drivers/isdn/i4l/isdnhdlc 0x8ee38862 isdnhdlc_rcv_init +EXPORT_SYMBOL drivers/isdn/i4l/isdnhdlc 0xfd9d4c09 isdnhdlc_encode +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x06fcebef mISDN_FsmDelTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x0927bc61 bchannel_get_rxbuf +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x15143367 mISDNDevName4ch +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x1cf196fb mISDN_FsmAddTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x2348cc3c mISDN_FsmFree +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x265d3fe5 mISDN_freedchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x29fa5b43 mISDN_FsmRestartTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x36ec1940 mISDN_FsmInitTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x4d17a57e queue_ch_frame +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 0x5c936bcb bchannel_senddata +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x6bcc838a recv_Bchannel_skb +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x7549b346 recv_Bchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x7937d58e dchannel_senddata +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x7a7a5425 recv_Dchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x7c9073b6 mISDN_clear_bchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x7d5a893c mISDN_freebchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x818c91f4 mISDN_initdchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x8a4e99fb mISDN_clock_update +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x9d0f0516 mISDN_unregister_Bprotocol +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xa03e3fe3 get_next_dframe +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xab078552 mISDN_unregister_device +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xb407c3e2 mISDN_initbchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xbf682fe0 mISDN_register_Bprotocol +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xc3401729 mISDN_register_clock +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xc87c213f get_next_bframe +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xcac91ba2 recv_Echannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xd285995f mISDN_clock_get +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xd2de410e create_l1 +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xd5145151 mISDN_FsmEvent +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xda8d63f7 recv_Dchannel_skb +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xe8f617eb mISDN_unregister_clock +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xf3db5247 mISDN_register_device +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xf9e7832f mISDN_FsmNew +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xfde8ee6e mISDN_ctrl_bchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_dsp 0x01087af0 mISDN_dsp_element_unregister +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_dsp 0x60721da7 dsp_audio_law_to_s32 +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_dsp 0xa215f1b2 dsp_audio_s16_to_law +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_dsp 0xb98308d8 mISDN_dsp_element_register +EXPORT_SYMBOL drivers/md/bcache/bcache 0x1d89bd11 bch_btree_sort_partial +EXPORT_SYMBOL drivers/md/bcache/bcache 0x1f529ce8 bch_bset_build_written_tree +EXPORT_SYMBOL drivers/md/bcache/bcache 0x2081933d closure_put +EXPORT_SYMBOL drivers/md/bcache/bcache 0x26481f26 bch_btree_sort_lazy +EXPORT_SYMBOL drivers/md/bcache/bcache 0x3f5ffc53 closure_wait +EXPORT_SYMBOL drivers/md/bcache/bcache 0x440b4830 bch_btree_iter_next +EXPORT_SYMBOL drivers/md/bcache/bcache 0x44a37d62 bch_btree_iter_init +EXPORT_SYMBOL drivers/md/bcache/bcache 0x5b59b856 bch_btree_insert_key +EXPORT_SYMBOL drivers/md/bcache/bcache 0x665abb0b closure_sub +EXPORT_SYMBOL drivers/md/bcache/bcache 0x7daccb73 bch_btree_keys_alloc +EXPORT_SYMBOL drivers/md/bcache/bcache 0x8833b0e8 bch_btree_keys_free +EXPORT_SYMBOL drivers/md/bcache/bcache 0xa3c5c702 bch_bset_fix_invalidated_key +EXPORT_SYMBOL drivers/md/bcache/bcache 0xca5df778 __bch_bset_search +EXPORT_SYMBOL drivers/md/bcache/bcache 0xce1de610 closure_sync +EXPORT_SYMBOL drivers/md/bcache/bcache 0xce47a6d9 bch_btree_keys_init +EXPORT_SYMBOL drivers/md/bcache/bcache 0xd2813054 bch_bset_insert +EXPORT_SYMBOL drivers/md/bcache/bcache 0xdf892351 bch_bkey_try_merge +EXPORT_SYMBOL drivers/md/bcache/bcache 0xe3c17af1 __closure_wake_up +EXPORT_SYMBOL drivers/md/bcache/bcache 0xe67c2d16 bch_bset_sort_state_init +EXPORT_SYMBOL drivers/md/bcache/bcache 0xec6f33d0 bch_bset_init_next +EXPORT_SYMBOL drivers/md/dm-bufio 0x268682d2 dm_bufio_forget +EXPORT_SYMBOL drivers/md/dm-bufio 0x72f07bf4 dm_bufio_set_minimum_buffers +EXPORT_SYMBOL drivers/md/dm-log 0x0acdb4fc dm_dirty_log_create +EXPORT_SYMBOL drivers/md/dm-log 0x35bd7bea dm_dirty_log_type_unregister +EXPORT_SYMBOL drivers/md/dm-log 0xd1093272 dm_dirty_log_destroy +EXPORT_SYMBOL drivers/md/dm-log 0xf6ee9809 dm_dirty_log_type_register +EXPORT_SYMBOL drivers/md/dm-snapshot 0x0612b3b1 dm_exception_store_type_unregister +EXPORT_SYMBOL drivers/md/dm-snapshot 0x07f0170b dm_exception_store_destroy +EXPORT_SYMBOL drivers/md/dm-snapshot 0x1d96a719 dm_snap_cow +EXPORT_SYMBOL drivers/md/dm-snapshot 0x32d8037a dm_exception_store_type_register +EXPORT_SYMBOL drivers/md/dm-snapshot 0xc35ffb33 dm_exception_store_create +EXPORT_SYMBOL drivers/md/dm-snapshot 0xeadc4eb3 dm_snap_origin +EXPORT_SYMBOL drivers/md/raid456 0xaf927bed raid5_set_cache_size +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x0e45a97e flexcop_dump_reg +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x18ba4b86 flexcop_device_initialize +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x28ece037 flexcop_sram_ctrl +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x3cc1c11f flexcop_device_kfree +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x40e39053 flexcop_i2c_request +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x4ea0468f flexcop_pass_dmx_packets +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x5ff528ba flexcop_eeprom_check_mac_addr +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x9eadcbbe flexcop_pid_feed_control +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xb3b2b3c3 flexcop_sram_set_dest +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xb9aa9aba flexcop_wan_set_speed +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xbb8a50b2 flexcop_device_kmalloc +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xd1011571 flexcop_device_exit +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xf163bf5c flexcop_pass_dmx_data +EXPORT_SYMBOL drivers/media/common/cx2341x 0x0a7566c0 cx2341x_handler_setup +EXPORT_SYMBOL drivers/media/common/cx2341x 0x1ca0c084 cx2341x_log_status +EXPORT_SYMBOL drivers/media/common/cx2341x 0x2f25eee2 cx2341x_update +EXPORT_SYMBOL drivers/media/common/cx2341x 0x30cb4cd7 cx2341x_ext_ctrls +EXPORT_SYMBOL drivers/media/common/cx2341x 0x3db8be82 cx2341x_ctrl_query +EXPORT_SYMBOL drivers/media/common/cx2341x 0x5f24e53e cx2341x_handler_set_50hz +EXPORT_SYMBOL drivers/media/common/cx2341x 0xa923468b cx2341x_handler_set_busy +EXPORT_SYMBOL drivers/media/common/cx2341x 0xc184ec1e cx2341x_ctrl_get_menu +EXPORT_SYMBOL drivers/media/common/cx2341x 0xcf76ce95 cx2341x_fill_defaults +EXPORT_SYMBOL drivers/media/common/cx2341x 0xcf8b77a4 cx2341x_mpeg_ctrls +EXPORT_SYMBOL drivers/media/common/cx2341x 0xe186f193 cx2341x_handler_init +EXPORT_SYMBOL drivers/media/common/cypress_firmware 0xa09b6680 cypress_load_firmware +EXPORT_SYMBOL drivers/media/common/tveeprom 0x96f0b802 tveeprom_hauppauge_analog +EXPORT_SYMBOL drivers/media/common/tveeprom 0xaadbe588 tveeprom_read +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x0dd43ba0 dvb_dmxdev_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x105ecc15 dvb_unregister_adapter +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x20dda0ef dvb_generic_ioctl +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x28d19ae5 dvb_ca_en50221_camready_irq +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x2a7139be dvb_unregister_device +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x2fa6ad38 dvb_dmx_swfilter_packets +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x32706276 dvb_ringbuffer_read +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x350bf9ab dvb_ca_en50221_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x3c6e1e28 dvb_register_frontend +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x3ce154d1 dvb_register_device +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x5052cd69 dvb_ca_en50221_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x5c0ea535 dvb_ringbuffer_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x61e6f11f dvb_register_adapter +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x63a6c98e dvb_dmx_swfilter_raw +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x70abf714 dvb_dmx_swfilter +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x70af1058 dvb_ringbuffer_empty +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x745adfef dvb_dmx_swfilter_204 +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x74a5a698 dvb_filter_pes2ts_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x76fe97e0 dvb_dmx_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x78d83f91 dvb_dmx_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x78db694b dvb_ringbuffer_write +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x7f4f9b54 dvb_ringbuffer_flush +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x80e3832d dvb_filter_get_ac3info +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x850ed1ae dvb_frontend_reinitialise +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x85a5e7d3 dvb_ringbuffer_avail +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x9117ce1c dvb_ca_en50221_camchange_irq +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xac4ca1b0 intlog2 +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xbd4862cd dvb_frontend_detach +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xc5a6c819 dvb_frontend_suspend +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xcae5e550 dvb_net_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xcbe2748d dvb_net_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xcf589e8c dvb_ringbuffer_free +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xd4e0ac19 dvb_frontend_resume +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xd55c167a dvb_generic_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xd8f7184c dvb_ringbuffer_flush_spinlock_wakeup +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xe5ae8707 intlog10 +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xf28e7431 dvb_ringbuffer_read_user +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xf821d629 dvb_frontend_sleep_until +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xf826deb0 dvb_filter_pes2ts +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xfa4a4db8 dvb_generic_open +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xfbaa7e01 dvb_ringbuffer_write_user +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xfc41d6fb dvb_ca_en50221_frda_irq +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xfdece41e dvb_dmxdev_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xfdffada3 dvb_unregister_frontend +EXPORT_SYMBOL drivers/media/dvb-frontends/a8293 0xbb317863 a8293_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/af9013 0xb4dfb0c6 af9013_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/atbm8830 0x05ebd08d atbm8830_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x05f54a31 au8522_led_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x1350b505 au8522_readreg +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x31312403 au8522_sleep +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x6a069da0 au8522_get_state +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x81d1c004 au8522_release_state +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0xbd440976 au8522_init +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0xea9b5a76 au8522_i2c_gate_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0xf8c15cb5 au8522_writereg +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0xf9a4e2b9 au8522_analog_i2c_gate_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_dig 0x65af406e au8522_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/bcm3510 0x68063dc3 bcm3510_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx22700 0x39b91627 cx22700_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx22702 0x2655fb90 cx22702_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24110 0xf620dafb cx24110_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24113 0x676b403a cx24113_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24113 0xe149e8ce cx24113_agc_callback +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24116 0x20a309b8 cx24116_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24120 0xdff3c08b cx24120_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24123 0x55b2862a cx24123_get_tuner_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24123 0xe06056e9 cx24123_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cxd2820r 0xd2f84725 cxd2820r_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0x0c176ec6 dib0070_get_rf_output +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0xb3983435 dib0070_ctrl_agc_filter +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0xbeade476 dib0070_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0xe70527ba dib0070_wbd_offset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0xee9ab589 dib0070_set_rf_output +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x03ce7f7a dib0090_get_wbd_offset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x04014415 dib0090_get_tune_state +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x0d6d4c5d dib0090_set_tune_state +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x21981537 dib0090_register +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x2b88243a dib0090_pwm_gain_reset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x3f6c1fe6 dib0090_update_rframp_7090 +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x40e5c9ee dib0090_set_switch +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x890b46a7 dib0090_fw_register +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x895bf1a4 dib0090_set_vga +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xaf78aab2 dib0090_update_tuning_table_7090 +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xbe45b7ce dib0090_dcc_freq +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xc6440472 dib0090_get_wbd_target +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xd59519f3 dib0090_gain_control +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xec88fa98 dib0090_set_dc_servo +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xfb857500 dib0090_get_current_gain +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mb 0x0bf17fa9 dib3000mb_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x31774d29 dib3000mc_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x5a0b0358 dib3000mc_set_config +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x7525e6d2 dib3000mc_pid_control +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0xe2337cae dib3000mc_pid_parse +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0xe44464d2 dib3000mc_i2c_enumeration +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0xe836cdce dib3000mc_get_tuner_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0x182c4db8 dib7000m_pid_filter +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0x3ae80227 dib7000m_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0x5b0a11ff dib7000m_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0x67b3131b dib7000m_get_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0xe585f534 dib7000p_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x38f84cf8 dib8000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0x138e9f2f dibx000_i2c_set_speed +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0x3cc51abf dibx000_init_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0x4a0271b8 dibx000_get_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0xad3ad91c systime +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0xeba9a491 dibx000_exit_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0xff5c04ab dibx000_reset_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/drx39xyj/drx39xyj 0xf1696b34 drx39xxj_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/drxd 0xab7abbb0 drxd_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/drxk 0xe59e8130 drxk_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ds3000 0x2c5a8780 ds3000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dvb-pll 0x0e7540ee dvb_pll_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ec100 0xfc94845c ec100_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/isl6405 0x7f945c3a isl6405_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/isl6421 0xbfe5ddf8 isl6421_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/isl6423 0xb7a6dd71 isl6423_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/itd1000 0xfc4c0c62 itd1000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ix2505v 0xd6fcd02b ix2505v_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/l64781 0xaec56255 l64781_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lg2160 0xd8d75be9 lg2160_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgdt3305 0xf94360fe lgdt3305_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgdt3306a 0x0634a2d0 lgdt3306a_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgdt330x 0x96ba1737 lgdt330x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgs8gxx 0xea6cee87 lgs8gxx_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lnbp21 0x89ce8a8f lnbh24_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lnbp21 0xe2766455 lnbp21_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lnbp22 0x30f7630f lnbp22_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/m88ds3103 0x0e232d05 m88ds3103_get_agc_pwm +EXPORT_SYMBOL drivers/media/dvb-frontends/m88ds3103 0x5a73967e m88ds3103_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/m88rs2000 0xec91db09 m88rs2000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mb86a16 0x2fcc6e10 mb86a16_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mb86a20s 0x2bda26e4 mb86a20s_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mt312 0x533e82e5 mt312_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mt352 0x63295da1 mt352_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/nxt200x 0x907c3769 nxt200x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/nxt6000 0x16a20e56 nxt6000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/or51132 0x2ba2c75c or51132_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/or51211 0xdf470156 or51211_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1409 0x0cb3fed4 s5h1409_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1411 0x0920c6fc s5h1411_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1420 0x4ef17686 s5h1420_get_tuner_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1420 0xf6311ba1 s5h1420_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s921 0x1ca4e25f s921_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/si2165 0xf33cb39c si2165_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/si21xx 0x9902994f si21xx_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/sp8870 0xec0d5e18 sp8870_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/sp887x 0xbfb89cd9 sp887x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stb0899 0xb8129e2e stb0899_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stb6000 0xf0507f5a stb6000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stb6100 0x7848a806 stb6100_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0288 0x60b53aaf stv0288_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0297 0x782cd242 stv0297_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0299 0x0d0a9afe stv0299_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0367 0x4c26b6b2 stv0367ter_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0367 0x4f7f8ea8 stv0367cab_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0900 0x650c44f2 stv0900_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv090x 0x7cb1d05d stv090x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv6110 0x7d640cc3 stv6110_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv6110x 0x0d060de0 stv6110x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10021 0xa4016c63 tda10021_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10023 0xc6f1fc8e tda10023_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10048 0x7e006bca tda10048_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda1004x 0x05c8407d tda10046_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda1004x 0x31dde815 tda10045_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10071 0x8cbfff0b tda10071_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10086 0x581cbab8 tda10086_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda665x 0x37b9e116 tda665x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda8083 0x5403167b tda8083_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda8261 0x4c997a23 tda8261_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda826x 0xba93ae5c tda826x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ts2020 0xe665d573 ts2020_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tua6100 0x3b9ae29b tua6100_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ves1820 0x866564a4 ves1820_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ves1x93 0x2a23e613 ves1x93_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/zl10036 0x1688ae50 zl10036_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/zl10039 0x747d9a3d zl10039_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/zl10353 0x70618142 zl10353_attach +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x11f74ca1 flexcop_dma_xfer_control +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x527ccaa4 flexcop_dma_config +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x946e73fc flexcop_dma_config_timer +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0xc534678a flexcop_dma_control_size_irq +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0xc59995cc flexcop_dma_free +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0xca8c67e1 flexcop_dma_control_timer_irq +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0xcb5e8e31 flexcop_dma_allocate +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0x0ce5820b bt878_start +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0x140ef590 bt878_stop +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0x4199cc5d bt878 +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0x5d6d19b4 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 0x8ecf4acc bttv_write_gpio +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0x9ca1cb3f bttv_sub_register +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0xb7177052 bttv_sub_unregister +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0xbcf2d2fb bttv_read_gpio +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0xf542ba26 bttv_get_pcidev +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x1a324c80 dst_attach +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x36f96e7f rdc_reset_state +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x3e856519 dst_error_bailout +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x78717e6a write_dst +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x873ad0e9 dst_pio_disable +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xa45d97a7 dst_error_recovery +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xaa03967b read_dst +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xb648d60b dst_wait_dst_ready +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xc4662eaf dst_comm_init +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xe94b8c9c dst_check_sum +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst_ca 0xbaa34631 dst_ca_attach +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x2cdea06d cx18_reset_ir_gpio +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x56001e31 cx18_ext_init +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0xa0c29cf5 cx18_start_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0xcc273647 cx18_release_stream +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0xda70fe9b cx18_stop_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0xe1b07be4 cx18_claim_stream +EXPORT_SYMBOL drivers/media/pci/cx23885/altera-ci 0x1fdaa31f 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 0x35b9c8da cx25821_riscmem_alloc +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x53ded6c8 cx25821_sram_channel_setup_audio +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x784853c3 cx25821_print_irqbits +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x9665bce8 cx25821_sram_channel_dump_audio +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x9755200c cx25821_risc_databuffer_audio +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xb6e673d3 cx25821_dev_get +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xc5d38741 cx25821_sram_channels +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xcb82ea1f cx25821_dev_unregister +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xdc875350 cx25821_set_gpiopin_direction +EXPORT_SYMBOL drivers/media/pci/cx88/cx88-vp3054-i2c 0x1007917f vp3054_i2c_probe +EXPORT_SYMBOL drivers/media/pci/cx88/cx88-vp3054-i2c 0x18b6fdf1 vp3054_i2c_remove +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0x02fc2b1f cx88_querycap +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0x79c79aea cx88_set_freq +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0x9ac12d63 cx88_enum_input +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0xf49dc1b0 cx88_video_mux +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x44e79228 cx8802_buf_prepare +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x537ee145 cx8802_unregister_driver +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x6091577f cx8802_cancel_buffers +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x8963c7fa cx8802_get_driver +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x8e00db17 cx8802_register_driver +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0xad321845 cx8802_buf_queue +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0xe701d4c7 cx8802_start_dma +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x0a913770 cx88_dsp_detect_stereo_sap +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x132034d6 cx88_ir_start +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x1adb2e89 cx88_sram_channel_setup +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x25fac2b0 cx88_set_tvnorm +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x3696262f cx88_risc_buffer +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x3734af76 cx88_set_scale +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x4216fc84 cx88_sram_channels +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x5bf3d2c7 cx88_ir_stop +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x6039c48b cx88_reset +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x6141c8c5 cx88_tuner_callback +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x6230aa72 cx88_core_put +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x7642ed3c cx88_print_irqbits +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x7774f745 cx88_set_stereo +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x7d6ba518 cx88_shutdown +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x904b8696 cx88_audio_thread +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x97399147 cx88_get_stereo +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x9c0ccad6 cx88_newstation +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x9c22b528 cx88_set_tvaudio +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xae19e13d cx88_core_irq +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xb0a88c01 cx88_sram_channel_dump +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xb792b3aa cx88_risc_databuffer +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xbb37bf64 cx88_vdev_init +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xda8a2cfb cx88_core_get +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xfab3e3ad cx88_wakeup +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x14f67530 ivtv_debug +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x283e2c0b ivtv_stop_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x2d3c73d0 ivtv_release_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x384af2fb ivtv_udma_unmap +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x3c951632 ivtv_reset_ir_gpio +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x45426e13 ivtv_api +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x4d536209 ivtv_set_irq_mask +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x6f4555e9 ivtv_init_on_first_open +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x87903e3f ivtv_clear_irq_mask +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x9ef03032 ivtv_udma_setup +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xad50e15f ivtv_start_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xaffcc75d ivtv_vapi +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xb5e4aae1 ivtv_udma_alloc +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xb79a32a8 ivtv_firmware_check +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xd6dfc969 ivtv_claim_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xf09ad370 ivtv_vapi_result +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xf2035003 ivtv_ext_init +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xf692afbd ivtv_udma_prepare +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x0439ad4c saa7134_ts_register +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 0x43342990 saa_dsp_writel +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x52fa6043 saa7134_ts_unregister +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x665d67f9 saa7134_dmasound_exit +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x75c66969 saa7134_boards +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x771593e8 saa7134_pgtable_alloc +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x86e3567c saa7134_dmasound_init +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x8c17ac62 saa7134_tvaudio_setmute +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x9ada20bd saa7134_pgtable_free +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xa6da7ab2 saa7134_set_dmabits +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xad8bac34 saa7134_pgtable_build +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xb6aa4e14 saa7134_devlist_lock +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xe632a87e saa7134_set_gpio +EXPORT_SYMBOL drivers/media/pci/ttpci/ttpci-eeprom 0x9618c7bf ttpci_eeprom_parse_mac +EXPORT_SYMBOL drivers/media/pci/ttpci/ttpci-eeprom 0xc3e4c127 ttpci_eeprom_decode_mac +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x5af8cdd3 soc_camera_power_off +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x6c9326f2 soc_camera_power_on +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x73a626ce soc_camera_host_unregister +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0xb5ac7d46 soc_camera_xlate_by_fourcc +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0xcc6222c9 soc_camera_host_register +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0xecc9bdfd soc_camera_apply_board_flags +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0xf178def3 soc_camera_power_init +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0x25c52d97 soc_mbus_samples_per_pixel +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0x2863728e soc_mbus_image_size +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0x29f5a98b soc_mbus_get_fmtdesc +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0x5f3e3558 soc_mbus_bytes_per_line +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0xc8b28da5 soc_mbus_config_compatible +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0xdc5dafe2 soc_mbus_find_fmtdesc +EXPORT_SYMBOL drivers/media/radio/tea575x 0x323a48eb snd_tea575x_set_freq +EXPORT_SYMBOL drivers/media/radio/tea575x 0x39c1349f snd_tea575x_hw_init +EXPORT_SYMBOL drivers/media/radio/tea575x 0x69cca24e snd_tea575x_s_hw_freq_seek +EXPORT_SYMBOL drivers/media/radio/tea575x 0x8981f144 snd_tea575x_g_tuner +EXPORT_SYMBOL drivers/media/radio/tea575x 0xa91d9a8c snd_tea575x_enum_freq_bands +EXPORT_SYMBOL drivers/media/radio/tea575x 0xc595a4d2 snd_tea575x_exit +EXPORT_SYMBOL drivers/media/radio/tea575x 0xd8e8d8de snd_tea575x_init +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x0176f9f8 lirc_dev_fop_read +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x04dca738 lirc_unregister_driver +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x0601baa0 lirc_dev_fop_ioctl +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x3562763d lirc_dev_fop_write +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x48e9f3b6 lirc_dev_fop_open +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x4afcb658 lirc_register_driver +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x826d7934 lirc_dev_fop_poll +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0xecf79dd8 lirc_dev_fop_close +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0xfcdfd8b4 lirc_get_pdata +EXPORT_SYMBOL drivers/media/rc/rc-core 0xd8afb4a3 ir_raw_handler_register +EXPORT_SYMBOL drivers/media/rc/rc-core 0xe9c1ea6f ir_raw_handler_unregister +EXPORT_SYMBOL drivers/media/tuners/fc0011 0x5ca45c1d fc0011_attach +EXPORT_SYMBOL drivers/media/tuners/fc0012 0xb76929a9 fc0012_attach +EXPORT_SYMBOL drivers/media/tuners/fc0013 0x1c6eac54 fc0013_rc_cal_add +EXPORT_SYMBOL drivers/media/tuners/fc0013 0x4e00b689 fc0013_rc_cal_reset +EXPORT_SYMBOL drivers/media/tuners/fc0013 0x895a4c4f fc0013_attach +EXPORT_SYMBOL drivers/media/tuners/max2165 0x173bf7e2 max2165_attach +EXPORT_SYMBOL drivers/media/tuners/mc44s803 0xe956b32a mc44s803_attach +EXPORT_SYMBOL drivers/media/tuners/mt2060 0xe6cb46d0 mt2060_attach +EXPORT_SYMBOL drivers/media/tuners/mt2131 0xde83f1f5 mt2131_attach +EXPORT_SYMBOL drivers/media/tuners/mt2266 0xe22e4e4e mt2266_attach +EXPORT_SYMBOL drivers/media/tuners/mxl5005s 0xd6633898 mxl5005s_attach +EXPORT_SYMBOL drivers/media/tuners/qt1010 0x9b814d64 qt1010_attach +EXPORT_SYMBOL drivers/media/tuners/tda18218 0xec41145a tda18218_attach +EXPORT_SYMBOL drivers/media/tuners/tuner-types 0x0cb4b189 tuners +EXPORT_SYMBOL drivers/media/tuners/tuner-types 0xc2821775 tuner_count +EXPORT_SYMBOL drivers/media/tuners/tuner-xc2028 0x94422bf8 xc2028_attach +EXPORT_SYMBOL drivers/media/tuners/xc4000 0x359a98d2 xc4000_attach +EXPORT_SYMBOL drivers/media/tuners/xc5000 0x5ed7c178 xc5000_attach +EXPORT_SYMBOL drivers/media/usb/cx231xx/cx231xx 0x1c98f0f7 cx231xx_unregister_extension +EXPORT_SYMBOL drivers/media/usb/cx231xx/cx231xx 0x399f2323 cx231xx_register_extension +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x25c51525 dvb_usbv2_generic_rw_locked +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x33822696 dvb_usbv2_generic_write_locked +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x412eb618 dvb_usbv2_probe +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x774cc067 dvb_usbv2_disconnect +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x789fe860 dvb_usbv2_resume +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0xbd57246c dvb_usbv2_suspend +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0xc85c343b dvb_usbv2_generic_rw +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0xf0410786 dvb_usbv2_reset_resume +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0xfba24da7 dvb_usbv2_generic_write +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x176ccdfa dvb_usb_generic_rw +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x1ffd296d dvb_usb_device_init +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x43b897bb dvb_usb_nec_rc_key_to_event +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x888c452f usb_cypress_load_firmware +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x8bb813b7 dvb_usb_device_exit +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0xbf255657 dvb_usb_get_hexline +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0xe0bcbeea dvb_usb_generic_write +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-af9005-remote 0x13e247e0 rc_map_af9005_table +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-af9005-remote 0x60b8c23a 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 0x252ab9ee dibusb_read_eeprom_byte +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x608951d9 dibusb_i2c_algo +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x717c8158 dibusb_dib3000mc_tuner_attach +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x80a247de dibusb_power_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x9f003ed6 dibusb_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xb47559e0 rc_map_dibusb_table +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xb7e1551a dibusb2_0_power_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xc872771a dibusb2_0_streaming_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xcc2c35b8 dibusb_streaming_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xd54cbe2b dibusb_pid_filter +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xf1b54410 dibusb_rc_query +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xf5da21ed dibusb_dib3000mc_frontend_attach +EXPORT_SYMBOL drivers/media/usb/em28xx/em28xx 0x3c956b72 em28xx_register_extension +EXPORT_SYMBOL drivers/media/usb/em28xx/em28xx 0x94eb2cda em28xx_unregister_extension +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x0782e0ba go7007_read_addr +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x0fee3b99 go7007_snd_remove +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x149778fc go7007_alloc +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x2f855e96 go7007_register_encoder +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0xa2ca5d5c go7007_parse_video_stream +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0xaba3fad4 go7007_boot_encoder +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0xb72aa108 go7007_read_interrupt +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0xe04a498b go7007_snd_init +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0xed7d0af8 go7007_update_board +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x3f38d155 gspca_disconnect +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x431f7872 gspca_frame_add +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x510856f1 gspca_dev_probe +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x5d6fa081 gspca_resume +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x7b9160e2 gspca_expo_autogain +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x840d59b8 gspca_suspend +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x9670af2c gspca_debug +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0xa2a0aaea gspca_dev_probe2 +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0xb36c3f89 gspca_coarse_grained_expo_autogain +EXPORT_SYMBOL drivers/media/usb/tm6000/tm6000 0x2546db45 tm6000_register_extension +EXPORT_SYMBOL drivers/media/usb/tm6000/tm6000 0x8119fe10 tm6000_init_digital_mode +EXPORT_SYMBOL drivers/media/usb/tm6000/tm6000 0x8a4bbcef tm6000_unregister_extension +EXPORT_SYMBOL drivers/media/usb/ttusb-dec/ttusbdecfe 0xd3f05231 ttusbdecfe_dvbt_attach +EXPORT_SYMBOL drivers/media/usb/ttusb-dec/ttusbdecfe 0xf83753fb ttusbdecfe_dvbs_attach +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-common 0xabe27502 v4l2_ctrl_query_fill +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-mem2mem 0x459e133f v4l2_m2m_get_curr_priv +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-mem2mem 0x8eea3cbb v4l2_m2m_mmap +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-mem2mem 0xac1a7d01 v4l2_m2m_job_finish +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-mem2mem 0xe11fc567 v4l2_m2m_get_vq +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0x35053dac videobuf_dvb_unregister_bus +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0x51f0ea46 videobuf_dvb_alloc_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0x5cb500f1 videobuf_dvb_dealloc_frontends +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0x828cf5c3 videobuf_dvb_register_bus +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0xd5ec9ad9 videobuf_dvb_get_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0xfb3200c7 videobuf_dvb_find_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-core 0xf13f3201 vb2_querybuf +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0x8832c12c vb2_dvb_find_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0x8b8ecc00 vb2_dvb_register_bus +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0xa6bf10bf vb2_dvb_dealloc_frontends +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0xaafe3c41 vb2_dvb_unregister_bus +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0xd740fb52 vb2_dvb_get_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0xfe2dc5a5 vb2_dvb_alloc_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x0157d567 v4l2_ctrl_add_handler +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x0185be4c v4l2_query_ext_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x01c81d2d video_device_release_empty +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x01f9c683 v4l2_ctrl_find +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x0614dd5a v4l2_video_std_frame_period +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x0b95dc55 v4l2_ctrl_notify +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x110935a3 v4l2_subdev_try_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x122d28f3 v4l2_subdev_queryctrl +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 0x169b23c4 v4l2_clk_register +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x1b5c0864 v4l2_ctrl_merge +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x1f8cff59 __v4l2_ctrl_modify_range +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x21b98290 v4l2_ctrl_auto_cluster +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x22fa9b86 v4l2_ctrl_radio_filter +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x2342f1ae v4l2_prio_open +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x25eec6ef v4l2_ctrl_handler_init_class +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x262614d4 v4l2_ctrl_new_std_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x27d8281a __video_register_device +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x3185a613 v4l2_subdev_querymenu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x3241f338 v4l2_ctrl_cluster +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x36847d11 v4l2_ctrl_get_int_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x374c66e6 v4l2_of_free_endpoint +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x3a0ce771 v4l2_ctrl_handler_setup +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 0x45a44c24 v4l2_ctrl_fill +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x495426ee v4l2_ctrl_get_name +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x496f0262 video_usercopy +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x4a1a1b1c v4l2_clk_get_rate +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x4b461cb6 v4l2_ctrl_add_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x4b77c88d v4l2_ctrl_replace +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x4edfb424 v4l2_async_notifier_register +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x5487ed9d __v4l2_ctrl_s_ctrl_int64 +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x54ca062d v4l2_g_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x569d97c7 v4l2_queryctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x58e6da64 v4l2_clk_put +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x5c921b43 v4l2_clk_unregister_fixed +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x5daaa1f5 v4l2_async_unregister_subdev +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x5dfb77c0 v4l2_subdev_s_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x64b3e3f4 v4l2_ctrl_log_status +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x6d5e3fbb v4l2_ctrl_subscribe_event +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x72e24914 v4l2_ctrl_activate +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x77661107 v4l2_subdev_g_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x77f65f38 v4l2_clk_disable +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x7a232c82 v4l2_clk_set_rate +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x7a3cd015 v4l2_ctrl_get_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x7dfd733d __v4l2_clk_register_fixed +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x8106095a v4l2_prio_max +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x883060d8 v4l2_s_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x8c6ec784 v4l2_ctrl_handler_free +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x9085196d video_device_release +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x91ff07dd v4l2_ctrl_new_std_menu_items +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x9250143e v4l2_ctrl_g_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x92fc64ff v4l2_async_register_subdev +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x9547205a v4l2_subdev_s_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x9a9a5c5b v4l2_ctrl_new_custom +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xa2903c41 v4l2_querymenu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xa6d5d8a8 v4l2_subdev_init +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xa7789e2e v4l2_ctrl_subdev_log_status +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xad8170b3 video_unregister_device +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb697505a __v4l2_ctrl_s_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb7710504 v4l2_g_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb77b0159 v4l2_prio_init +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb9d52fbf v4l2_clk_unregister +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xbc5671dc v4l_printk_ioctl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xbcf726e8 v4l2_ctrl_sub_ev_ops +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xbe5802d7 video_device_alloc +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xc18ab3de v4l2_of_alloc_parse_endpoint +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xc7f2970a v4l2_of_parse_endpoint +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xca4539b8 v4l2_of_parse_link +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xccab83d1 video_ioctl2 +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xcccef144 v4l2_ctrl_subdev_subscribe_event +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xcda04a5b v4l2_prio_close +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xcecfe01b v4l2_clk_enable +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xd0ad2388 v4l2_async_notifier_unregister +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xd0b38a4e v4l2_clk_get +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xdc7e749f v4l2_try_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe18263a8 v4l2_ctrl_new_std +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe2b92059 v4l2_video_std_construct +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe4c62eb2 v4l2_s_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xee7fb075 v4l2_of_put_link +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xeeb97d84 v4l2_ctrl_handler_log_status +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xeed6a1a6 v4l2_ctrl_grab +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf3251e7b v4l2_norm_to_name +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf74a1f93 __v4l2_ctrl_s_ctrl_string +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf7b1f9bf video_devdata +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xfa4669e5 v4l2_ctrl_g_ctrl_int64 +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xfc8b1063 v4l2_ctrl_poll +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xff150a5e v4l2_subdev_g_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xff4dc501 v4l2_ctrl_new_int_menu +EXPORT_SYMBOL drivers/memstick/core/memstick 0x1c669bbd memstick_register_driver +EXPORT_SYMBOL drivers/memstick/core/memstick 0x27e59432 memstick_resume_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x3b1e59b5 memstick_set_rw_addr +EXPORT_SYMBOL drivers/memstick/core/memstick 0x5d820a02 memstick_init_req_sg +EXPORT_SYMBOL drivers/memstick/core/memstick 0x6c3d52da memstick_add_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x93efb279 memstick_unregister_driver +EXPORT_SYMBOL drivers/memstick/core/memstick 0x99bffd7e memstick_next_req +EXPORT_SYMBOL drivers/memstick/core/memstick 0xc03019a0 memstick_remove_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0xc171d8cd memstick_free_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0xc505d8d7 memstick_alloc_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0xd2880552 memstick_suspend_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0xdc07e67e memstick_init_req +EXPORT_SYMBOL drivers/memstick/core/memstick 0xe0e2d3f0 memstick_new_req +EXPORT_SYMBOL drivers/memstick/core/memstick 0xf4f6e60d memstick_detect_change +EXPORT_SYMBOL drivers/memstick/host/r592 0x52f1b23b memstick_debug_get_tpc_name +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x15e53139 mpt_device_driver_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x1c5a968f mpt_halt_firmware +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x26c70dff mpt_free_fw_memory +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x2b878115 mpt_config +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x31baba26 mpt_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x377c043f mpt_reset_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x42de5334 mpt_findImVolumes +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x4526289b mpt_event_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x502108d0 mpt_fwfault_debug +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x52977043 mpt_clear_taskmgmt_in_progress_flag +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x5dc70755 mpt_suspend +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x647fab89 mpt_HardResetHandler +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x6a183e42 mpt_put_msg_frame +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x6ed952d3 mpt_alloc_fw_memory +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x7d928838 mpt_raid_phys_disk_get_num_paths +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x810fdb1a mpt_print_ioc_summary +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x896a0940 mpt_get_msg_frame +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x8a5ba59e mpt_set_taskmgmt_in_progress_flag +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x90b77650 mpt_event_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x9c7830b7 mpt_put_msg_frame_hi_pri +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x9d0b5332 mpt_raid_phys_disk_pg0 +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x9f9418f1 mpt_resume +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xab61b4ec mpt_send_handshake_request +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xc0e69f82 mpt_device_driver_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xc47c22e8 mpt_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xc861eec8 mpt_verify_adapter +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xd515d273 mpt_GetIocState +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xd9a92a75 mpt_reset_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xdd805159 ioc_list +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xe16eb6b1 mpt_attach +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xe32df353 mpt_free_msg_frame +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xe5aa3c84 mptbase_sas_persist_operation +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xe6b405a5 mpt_Soft_Hard_ResetHandler +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xed4fcee9 mpt_raid_phys_disk_pg1 +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xf5ac6393 mpt_detach +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x019f1853 mptscsih_bios_param +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x03665418 mptscsih_shutdown +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x1773b0b4 mptscsih_io_done +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x1b4cd9c1 mptscsih_get_scsi_lookup +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x29edd3df mptscsih_slave_configure +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x375cf817 mptscsih_host_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x444afe8e mptscsih_change_queue_depth +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x480eead2 mptscsih_raid_id_to_num +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x4af346e9 mptscsih_bus_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x55c167a5 mptscsih_suspend +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x67b27bb1 mptscsih_resume +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x692ad721 mptscsih_abort +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x7fc4b7aa mptscsih_event_process +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x8e078527 mptscsih_show_info +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x92b792d6 mptscsih_host_attrs +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x9d9e535c mptscsih_is_phys_disk +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xa0da63f4 mptscsih_scandv_complete +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xa69f251b mptscsih_qcmd +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xb0f505ca mptscsih_taskmgmt_response_code +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xc00568fa mptscsih_taskmgmt_complete +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xcc6f24b5 mptscsih_IssueTaskMgmt +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xcda18e19 mptscsih_ioc_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xe26ab14a mptscsih_info +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xec8b24d5 mptscsih_slave_destroy +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xefd90559 mptscsih_remove +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xfc0d0c7e mptscsih_dev_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xfc32b6ee mptscsih_flush_running_cmds +EXPORT_SYMBOL drivers/mfd/cros_ec 0x2a0ca49f cros_ec_register +EXPORT_SYMBOL drivers/mfd/cros_ec 0x2e139336 cros_ec_remove +EXPORT_SYMBOL drivers/mfd/dln2 0x955e9646 dln2_register_event_cb +EXPORT_SYMBOL drivers/mfd/dln2 0xa3ff4935 dln2_unregister_event_cb +EXPORT_SYMBOL drivers/mfd/dln2 0xcaff88fb dln2_transfer +EXPORT_SYMBOL drivers/mfd/htc-pasic3 0x9effc03f pasic3_write_register +EXPORT_SYMBOL drivers/mfd/htc-pasic3 0xb761338f pasic3_read_register +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x0c3babda mc13xxx_unlock +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x152a0f32 mc13xxx_irq_mask +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x3b5f99d9 mc13xxx_irq_unmask +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x3b728dc8 mc13xxx_reg_read +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x574b5280 mc13xxx_irq_free +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x5b61d6a2 mc13xxx_irq_status +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xa30f8bc1 mc13xxx_reg_write +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xbc9770ae mc13xxx_reg_rmw +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xbfaa46ac mc13xxx_get_flags +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xc5280b9c mc13xxx_lock +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xffd48936 mc13xxx_irq_request +EXPORT_SYMBOL drivers/mfd/tps6105x 0x1dc245aa tps6105x_set +EXPORT_SYMBOL drivers/mfd/tps6105x 0xb0040ce8 tps6105x_mask_and_set +EXPORT_SYMBOL drivers/mfd/tps6105x 0xe9e403ff tps6105x_get +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-irq 0x43cf70d4 wm8994_irq_exit +EXPORT_SYMBOL drivers/mfd/wm8994-irq 0x5990001f wm8994_irq_init +EXPORT_SYMBOL drivers/mfd/wm8994-regmap 0x3303b16f wm1811_regmap_config +EXPORT_SYMBOL drivers/mfd/wm8994-regmap 0x9e5b08db wm8994_regmap_config +EXPORT_SYMBOL drivers/mfd/wm8994-regmap 0xac61b342 wm8958_regmap_config +EXPORT_SYMBOL drivers/mfd/wm8994-regmap 0xd267a4e2 wm8994_base_regmap_config +EXPORT_SYMBOL drivers/misc/ad525x_dpot 0x6e45fc95 ad_dpot_remove +EXPORT_SYMBOL drivers/misc/ad525x_dpot 0xcab8fa57 ad_dpot_probe +EXPORT_SYMBOL drivers/misc/altera-stapl/altera-stapl 0xfefe536e altera_init +EXPORT_SYMBOL drivers/misc/c2port/core 0x10031516 c2port_device_unregister +EXPORT_SYMBOL drivers/misc/c2port/core 0xe473d41f c2port_device_register +EXPORT_SYMBOL drivers/misc/ioc4 0x674f8c4c ioc4_register_submodule +EXPORT_SYMBOL drivers/misc/ioc4 0xe81f352f ioc4_unregister_submodule +EXPORT_SYMBOL drivers/misc/tifm_core 0x25023aef tifm_map_sg +EXPORT_SYMBOL drivers/misc/tifm_core 0x4e6886a9 tifm_unmap_sg +EXPORT_SYMBOL drivers/misc/tifm_core 0x5d6ceee8 tifm_free_device +EXPORT_SYMBOL drivers/misc/tifm_core 0x76e1e898 tifm_has_ms_pif +EXPORT_SYMBOL drivers/misc/tifm_core 0x7be5c7cb tifm_eject +EXPORT_SYMBOL drivers/misc/tifm_core 0xa8c2ec46 tifm_queue_work +EXPORT_SYMBOL drivers/misc/tifm_core 0xac8c667d tifm_register_driver +EXPORT_SYMBOL drivers/misc/tifm_core 0xbc3c5693 tifm_add_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0xc52667b5 tifm_free_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0xc5e4495f tifm_unregister_driver +EXPORT_SYMBOL drivers/misc/tifm_core 0xd8db37b8 tifm_alloc_device +EXPORT_SYMBOL drivers/misc/tifm_core 0xe4e9f6cb tifm_remove_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0xf663854e tifm_alloc_adapter +EXPORT_SYMBOL drivers/mmc/card/mmc_block 0x0c5e9459 mmc_cleanup_queue +EXPORT_SYMBOL drivers/mmc/host/of_mmc_spi 0x3bcde6e9 mmc_spi_put_pdata +EXPORT_SYMBOL drivers/mmc/host/of_mmc_spi 0x5f5b61b1 mmc_spi_get_pdata +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x12c7b65f cfi_varsize_frob +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x196ba4bb cfi_send_gen_cmd +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x463640e9 cfi_merge_status +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x7d831b45 cfi_build_cmd_addr +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0xca74f18b cfi_fixup +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0xd1bf251f cfi_read_pri +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0xd28e42c4 cfi_build_cmd +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0xff9fa623 cfi_udelay +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0x14a7113b register_mtd_chip_driver +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0x32a8a9f7 do_map_probe +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0x87c3573d map_destroy +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0x980e5ead unregister_mtd_chip_driver +EXPORT_SYMBOL drivers/mtd/chips/gen_probe 0xbf5da8e0 mtd_do_chip_probe +EXPORT_SYMBOL drivers/mtd/lpddr/lpddr_cmds 0x0bb13744 lpddr_cmdset +EXPORT_SYMBOL drivers/mtd/maps/map_funcs 0x53581be3 simple_map_init +EXPORT_SYMBOL drivers/mtd/mtd 0x2328e1ab mtd_concat_create +EXPORT_SYMBOL drivers/mtd/mtd 0x9b331c9e mtd_concat_destroy +EXPORT_SYMBOL drivers/mtd/nand/denali 0x852eb28e denali_remove +EXPORT_SYMBOL drivers/mtd/nand/denali 0xf1959e68 denali_init +EXPORT_SYMBOL drivers/mtd/nand/nand 0x38f375b8 nand_scan +EXPORT_SYMBOL drivers/mtd/nand/nand 0x39e6e8f2 nand_lock +EXPORT_SYMBOL drivers/mtd/nand/nand 0x424e3f17 nand_scan_ident +EXPORT_SYMBOL drivers/mtd/nand/nand 0x6ffe239e nand_scan_bbt +EXPORT_SYMBOL drivers/mtd/nand/nand 0x70b700dc nand_unlock +EXPORT_SYMBOL drivers/mtd/nand/nand 0xa600a911 nand_scan_tail +EXPORT_SYMBOL drivers/mtd/nand/nand 0xef859391 onfi_async_timing_mode_to_sdr_timings +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0x5651e0cd nand_bch_calculate_ecc +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0x6b90b722 nand_bch_init +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0x70097aa0 nand_bch_free +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0x80256b97 nand_bch_correct_data +EXPORT_SYMBOL drivers/mtd/nand/nand_ecc 0x3132ee65 __nand_calculate_ecc +EXPORT_SYMBOL drivers/mtd/nand/nand_ecc 0x4d0aaf76 nand_correct_data +EXPORT_SYMBOL drivers/mtd/nand/nand_ecc 0xb4b94377 __nand_correct_data +EXPORT_SYMBOL drivers/mtd/nand/nand_ecc 0xfe57e86d nand_calculate_ecc +EXPORT_SYMBOL drivers/mtd/nand/nand_ids 0x8cfcf75c nand_flash_ids +EXPORT_SYMBOL drivers/mtd/nand/nand_ids 0xa336feb7 nand_manuf_ids +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0x1719ffb9 onenand_addr +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0x20288e54 onenand_scan_bbt +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0x5d869dc9 flexonenand_region +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0x61b4a2c4 onenand_default_bbt +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x1883e17a alloc_arcdev +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x2bde64c2 arcnet_open +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x491a864d arcnet_send_packet +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x527906d7 arc_bcast_proto +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x6534792a arcnet_debug +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x745406b9 arc_proto_default +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x97ca69ad arcnet_unregister_proto +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xc5055c95 arc_proto_map +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xc6f50aa7 arcnet_timeout +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xecb730b0 arcnet_interrupt +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xef139150 arcnet_close +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xf9a968c4 arc_raw_proto +EXPORT_SYMBOL drivers/net/arcnet/com20020 0x40f71b2f com20020_netdev_ops +EXPORT_SYMBOL drivers/net/arcnet/com20020 0x6797e0e3 com20020_found +EXPORT_SYMBOL drivers/net/arcnet/com20020 0x71c9d290 com20020_check +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x0a76dab1 ei_netdev_ops +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x119721ac ei_interrupt +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x34eab255 ei_open +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x3b97417c ei_get_stats +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x3dfacfbd ei_tx_timeout +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x6dbb7311 __alloc_ei_netdev +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x6fd122ab NS8390_init +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x73a6efe6 ei_poll +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x7903e3bb ei_set_multicast_list +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x955f7413 ei_close +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xea63be9c ei_start_xmit +EXPORT_SYMBOL drivers/net/ethernet/broadcom/bnx2x/bnx2x 0xc4a63186 bnx2x_schedule_sp_rtnl +EXPORT_SYMBOL drivers/net/ethernet/broadcom/cnic 0x636af174 cnic_unregister_driver +EXPORT_SYMBOL drivers/net/ethernet/broadcom/cnic 0xcd65c6c5 cnic_register_driver +EXPORT_SYMBOL drivers/net/ethernet/cavium/thunder/thunder_bgx 0x285bde59 bgx_get_rx_stats +EXPORT_SYMBOL drivers/net/ethernet/cavium/thunder/thunder_bgx 0x42264715 bgx_get_lmac_count +EXPORT_SYMBOL drivers/net/ethernet/cavium/thunder/thunder_bgx 0x6dc1648d bgx_get_lmac_mac +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 0xe48ca42a bgx_get_tx_stats +EXPORT_SYMBOL drivers/net/ethernet/cavium/thunder/thunder_bgx 0xf101d1b2 bgx_get_lmac_link_state +EXPORT_SYMBOL drivers/net/ethernet/cavium/thunder/thunder_bgx 0xf9508980 bgx_set_lmac_mac +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x0222b572 cxgb3_unregister_client +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x1680702a t3_l2t_send_slow +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x1b07d3f5 cxgb3_queue_tid_release +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x1f6cf643 t3_l2t_get +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x28a19ec6 cxgb3_alloc_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x4cc5e655 cxgb3_ofld_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x4f3f590f t3_register_cpl_handler +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x5df1c7df cxgb3_register_client +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x6298e2cf cxgb3_remove_tid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x75732ea3 t3_l2e_free +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x9b398ba5 cxgb3_free_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x9c029ce7 cxgb3_free_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xb515cfff cxgb3_insert_tid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xb644d593 cxgb3_alloc_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xd16b54f5 t3_l2t_send_event +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xf8fac783 dev2t3cdev +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x0211582f cxgb4_iscsi_init +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x02cd9ccd cxgb4_dcb_enabled +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x0beac2a1 cxgb4_l2t_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x1c27ef53 cxgb4_port_idx +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x23c3e2aa cxgb4_remove_server +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x2f358e54 cxgb4_alloc_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x2fdb5dc7 cxgb4_bar2_sge_qregs +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x33519c64 cxgb4_register_uld +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x397ffd94 cxgb4_port_chan +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x40104508 cxgb4_create_server6 +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x434b9989 cxgb4_remove_tid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x4be7faaf cxgb4_read_tpte +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x4c2e3573 cxgb4_free_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x50ee5c07 cxgb4_best_aligned_mtu +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x54d6f3f3 cxgb4_get_tcp_stats +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x54da3e43 cxgb4_ofld_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x62b7cbe4 cxgb4_clip_release +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x67ab1e31 cxgb4_read_sge_timestamp +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x6e2f6ec6 cxgb4_alloc_sftid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x6ed38eb9 cxgb4_dbfifo_count +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x7ca16a48 t4_cleanup_clip_tbl +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x8a07b680 cxgb4_flush_eq_cache +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x92cd88ba cxgb4_clip_get +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xa688870e cxgb4_select_ntuple +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xa9d45910 cxgb4_create_server +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xbeaadfbd cxgb4_update_root_dev_clip +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xc4f4c775 cxgb4_alloc_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xca0ad7b4 cxgb4_sync_txq_pidx +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xcae347a0 cxgb4_l2t_get +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xd00e5a36 cxgb4_unregister_uld +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xd1c5d2e0 cxgb4_pktgl_to_skb +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xd69a0294 cxgb4_best_mtu +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xf31ecf3d cxgb4_port_viid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xf42e75f7 cxgb4_l2t_release +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xf55dff29 cxgb4_free_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xf8d1f9e9 cxgb4_remove_server_filter +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xfa2cbe0c cxgb4_create_server_filter +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0x0725ad5a enic_api_devcmd_proxy_by_index +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0x0e712340 vnic_dev_get_res +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0x4f650da7 vnic_dev_get_res_count +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0x52cee919 vnic_dev_register +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0x9196d804 vnic_dev_unregister +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0xd5eadfc9 vnic_dev_get_pdev +EXPORT_SYMBOL drivers/net/ethernet/emulex/benet/be2net 0x2b44fe29 be_roce_register_driver +EXPORT_SYMBOL drivers/net/ethernet/emulex/benet/be2net 0x6cfb037f be_roce_unregister_driver +EXPORT_SYMBOL drivers/net/ethernet/emulex/benet/be2net 0xbab62e22 be_roce_mcc_cmd +EXPORT_SYMBOL drivers/net/ethernet/freescale/gianfar_driver 0x79f28897 gfar_phc_index +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0a261f7f mlx4_get_slave_node_guid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0bd350a9 mlx4_gen_guid_change_eqe +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x12c0ea71 mlx4_SET_PORT_BEACON +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x13569033 mlx4_SET_PORT_qpn_calc +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x187389c9 mlx4_is_eq_vector_valid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x27a8d7e1 mlx4_test_interrupts +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2bd15068 mlx4_is_slave_active +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2fbf17ef mlx4_tunnel_steer_add +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x359ca38a mlx4_put_slave_node_guid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3b8d3e09 mlx4_release_eq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4863c3ca mlx4_is_eq_shared +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4927d590 mlx4_get_slave_port_state +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x49d717d1 mlx4_SET_PORT_VXLAN +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4dcaad46 mlx4_ALLOCATE_VPP_set +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5f1c3e8e mlx4_ALLOCATE_VPP_get +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x71478e99 mlx4_assign_eq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x76603db9 mlx4_sync_pkey_table +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x77d0094c mlx4_gen_slaves_port_mgt_ev +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8e21f8fd mlx4_SET_VPORT_QOS_get +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9c441964 mlx4_get_eqs_per_port +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9f6e8765 mlx4_eq_get_irq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb04b070f mlx4_get_module_info +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbe7f0274 mlx4_SET_PORT_fcs_check +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbf2cfedc mlx4_get_cpu_rmap +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc339c4a6 mlx4_get_parav_qkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe050a22e mlx4_SET_VPORT_QOS_set +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe09616de mlx4_get_slave_from_roce_gid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe34c8c84 mlx4_SET_MCAST_FLTR +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe462cda6 mlx4_SET_PORT_SCHEDULER +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xea30514e mlx4_get_roce_gid_from_slave +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xeb1baa97 mlx4_get_slave_pkey_gid_tbl_len +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xeed63298 mlx4_SET_PORT_general +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf1c8e7af mlx4_SET_PORT_PRIO2TC +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf3ca2781 set_and_calc_slave_port_state +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xfc913589 mlx4_gen_pkey_eqe +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xff2c38ff mlx4_gen_port_state_change_eqe +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x0857aabd mlx5_get_flow_table_id +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x0deaf331 mlx5_cmd_comp_handler +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x0eb7287e mlx5_del_flow_table_entry +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x12b4be12 mlx5_core_modify_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x1942fc60 mlx5_get_protocol_dev +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x245870db mlx5_core_alloc_pd +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x26975caf mlx5_cmd_exec +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x2a6814e3 mlx5_register_interface +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x2bb5ff48 mlx5_alloc_map_uar +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x2e0fa2e0 mlx5_core_query_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x36c435a2 mlx5_cmd_free_uar +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x39a3bba8 mlx5_cmd_alloc_uar +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x4580474d mlx5_core_query_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x4c2fcaa8 mlx5_core_create_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x4ea444be mlx5_core_destroy_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x55e1bf4d mlx5_core_query_vendor_id +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x56e4a3e1 mlx5_cmd_cleanup +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x669d44c2 mlx5_core_query_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x66ec9530 mlx5_cmd_exec_cb +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x710b54d4 mlx5_core_destroy_psv +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x8d65657a mlx5_query_vport_state +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x954870b6 mlx5_core_attach_mcg +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x9a4e5f01 mlx5_core_dump_fill_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa658d241 mlx5_query_nic_vport_mac_address +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xaa34e4e5 mlx5_core_dealloc_pd +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xaadb02bc mlx5_core_destroy_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xb35c100f mlx5_unmap_free_uar +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xb6d6e582 mlx5_debugfs_root +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xc313d568 mlx5_core_arm_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xcb3da38b mlx5_unregister_interface +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xcdf75ed9 mlx5_core_detach_mcg +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xcfc5b7e7 mlx5_core_create_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xd1b9e0c6 mlx5_core_create_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xd5d8231b mlx5_core_destroy_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xd945b458 mlx5_create_flow_table +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe093f23f mlx5_cmd_init +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe6af33e4 mlx5_destroy_flow_table +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xec947206 mlx5_core_get_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf0cb4134 mlx5_vector2eqn +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf4983cb1 mlx5_core_create_psv +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xfc728a49 mlx5_add_flow_table_entry +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x21559437 hdlcdrv_arbitrate +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0xb35e8d54 hdlcdrv_receiver +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0xd39f9ea5 hdlcdrv_register +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0xe3ddc47d hdlcdrv_transmitter +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0xf47a5315 hdlcdrv_unregister +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x1b1f7bde sirdev_get_instance +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x82b76085 sirdev_receive +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x8791700f irda_unregister_dongle +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x8fcbe871 sirdev_put_instance +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x9c63cb71 irda_register_dongle +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xa8844a3f sirdev_raw_write +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xab00d041 sirdev_set_dongle +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xc7914915 sirdev_raw_read +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xcbc63b6b sirdev_write_complete +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xfd247f41 sirdev_set_dtr_rts +EXPORT_SYMBOL drivers/net/mdio 0x22bce513 mdio_mii_ioctl +EXPORT_SYMBOL drivers/net/mdio 0x43e4defc mdio45_nway_restart +EXPORT_SYMBOL drivers/net/mdio 0x7577f992 mdio_set_flag +EXPORT_SYMBOL drivers/net/mdio 0xa1a29548 mdio45_probe +EXPORT_SYMBOL drivers/net/mdio 0xc6b1163f mdio45_links_ok +EXPORT_SYMBOL drivers/net/mdio 0xddc98749 mdio45_ethtool_gset_npage +EXPORT_SYMBOL drivers/net/mii 0x1f381a16 mii_check_media +EXPORT_SYMBOL drivers/net/mii 0x27d20581 mii_check_link +EXPORT_SYMBOL drivers/net/mii 0x5fde7ef3 mii_nway_restart +EXPORT_SYMBOL drivers/net/mii 0x7cb18ee4 mii_ethtool_gset +EXPORT_SYMBOL drivers/net/mii 0xd51b4485 mii_link_ok +EXPORT_SYMBOL drivers/net/mii 0xf1f401f9 mii_check_gmii_support +EXPORT_SYMBOL drivers/net/mii 0xf3837a1c mii_ethtool_sset +EXPORT_SYMBOL drivers/net/mii 0xfc19db34 generic_mii_ioctl +EXPORT_SYMBOL drivers/net/phy/mdio-bitbang 0x33dcd9d8 alloc_mdio_bitbang +EXPORT_SYMBOL drivers/net/phy/mdio-bitbang 0xf3c0c097 free_mdio_bitbang +EXPORT_SYMBOL drivers/net/phy/mdio-octeon 0x8a1d5c26 octeon_mdiobus_force_mod_depencency +EXPORT_SYMBOL drivers/net/phy/vitesse 0xced71496 vsc824x_add_skew +EXPORT_SYMBOL drivers/net/ppp/pppox 0x12db9a99 pppox_unbind_sock +EXPORT_SYMBOL drivers/net/ppp/pppox 0x87bd7384 register_pppox_proto +EXPORT_SYMBOL drivers/net/ppp/pppox 0x928872a3 pppox_ioctl +EXPORT_SYMBOL drivers/net/ppp/pppox 0xe0ff7a18 unregister_pppox_proto +EXPORT_SYMBOL drivers/net/sungem_phy 0xa697d607 sungem_phy_probe +EXPORT_SYMBOL drivers/net/team/team 0x1f94afc1 team_mode_unregister +EXPORT_SYMBOL drivers/net/team/team 0x27f92e18 team_modeop_port_enter +EXPORT_SYMBOL drivers/net/team/team 0x3630aadd team_option_inst_set_change +EXPORT_SYMBOL drivers/net/team/team 0x711746f2 team_mode_register +EXPORT_SYMBOL drivers/net/team/team 0xac24ad07 team_options_register +EXPORT_SYMBOL drivers/net/team/team 0xd43810db team_options_unregister +EXPORT_SYMBOL drivers/net/team/team 0xdf6a91ab team_modeop_port_change_dev_addr +EXPORT_SYMBOL drivers/net/team/team 0xfb3c450b team_options_change_check +EXPORT_SYMBOL drivers/net/usb/usbnet 0x97add053 usbnet_link_change +EXPORT_SYMBOL drivers/net/usb/usbnet 0xa41544db usbnet_manage_power +EXPORT_SYMBOL drivers/net/usb/usbnet 0xf0379ba1 usbnet_device_suggests_idle +EXPORT_SYMBOL drivers/net/wan/hdlc 0x05005874 hdlc_close +EXPORT_SYMBOL drivers/net/wan/hdlc 0x0571f7b4 hdlc_start_xmit +EXPORT_SYMBOL drivers/net/wan/hdlc 0x0a5577cc register_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0x0f2ee9e7 detach_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0x16912b47 hdlc_ioctl +EXPORT_SYMBOL drivers/net/wan/hdlc 0x28159986 hdlc_open +EXPORT_SYMBOL drivers/net/wan/hdlc 0x3ac4606f unregister_hdlc_device +EXPORT_SYMBOL drivers/net/wan/hdlc 0x711a70d4 hdlc_change_mtu +EXPORT_SYMBOL drivers/net/wan/hdlc 0x87ab22e2 alloc_hdlcdev +EXPORT_SYMBOL drivers/net/wan/hdlc 0xf22eb20b unregister_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0xfb80d185 attach_hdlc_protocol +EXPORT_SYMBOL drivers/net/wimax/i2400m/i2400m 0x838ad784 i2400m_unknown_barker +EXPORT_SYMBOL drivers/net/wireless/airo 0x4f929b95 reset_airo_card +EXPORT_SYMBOL drivers/net/wireless/airo 0x9170bdd4 init_airo_card +EXPORT_SYMBOL drivers/net/wireless/airo 0xfddf9eed stop_airo_card +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x0b1c83b1 ath_hw_setbssidmask +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x137c6177 ath_key_delete +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x152b393a ath_printk +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x319c6026 ath_is_49ghz_allowed +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x6ebb6060 ath_hw_cycle_counters_update +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x72c4e19f ath_key_config +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x74c0d67c ath_hw_keyreset +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x823b6ab3 ath_regd_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x986ee71c dfs_pattern_detector_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x986fdeb5 ath_rxbuf_alloc +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xaafdb617 ath_is_world_regd +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xb4386a14 ath_is_mybeacon +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xc46b0f3b ath_reg_notifier_apply +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xd5337727 ath_hw_get_listen_time +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xfb4de67a ath_regd_get_band_ctl +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x0baf42ee ath10k_core_stop +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x1caf9c73 ath10k_debug_get_new_fw_crash_data +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x38427d59 ath10k_core_destroy +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x5f18f730 ath10k_core_start +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x68f08cbb ath10k_err +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x78b2a03f ath10k_core_create +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x8a60f6da ath10k_core_unregister +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xa007697c ath10k_print_driver_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xa81d57ef ath10k_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xd7cc4e32 ath10k_core_register +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xf1d09165 ath10k_warn +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x0c5b777e ath6kl_stop_txrx +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x1a9727e6 ath6kl_core_cleanup +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x31876355 ath6kl_core_destroy +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x5567399d ath6kl_core_create +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x5d1d8c97 ath6kl_cfg80211_suspend +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x7b317424 ath6kl_printk +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x80a09613 ath6kl_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x85835c9e 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 0xa6f66cc1 ath6kl_warn +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xb9cf8f65 ath6kl_core_tx_complete +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xbbeb72d0 ath6kl_core_rx_complete +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xc3adc1ca ath6kl_hif_intr_bh_handler +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xcb014460 ath6kl_err +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xe566c7e2 ath6kl_core_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x0094c39e ath9k_cmn_update_txpow +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x0ab39778 ath9k_cmn_get_channel +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x13d49b37 ath9k_cmn_get_hw_crypto_keytype +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x163910f6 ath9k_cmn_spectral_init_debug +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x202e9262 ath9k_cmn_init_crypto +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x237b3fbc ath9k_cmn_process_rate +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x2d15177d ath9k_cmn_debug_stat_rx +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x2f1e9356 ath9k_cmn_beacon_config_sta +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x38f02d72 ath9k_cmn_debug_modal_eeprom +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x5654ba69 ath_cmn_process_fft +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x7d73bfa0 ath9k_cmn_setup_ht_cap +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x809d5f62 ath9k_cmn_spectral_scan_trigger +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x86ec5e87 ath9k_cmn_rx_skb_postprocess +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x89fe857e ath9k_cmn_beacon_config_adhoc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x8eabbe3d ath9k_cmn_beacon_config_ap +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xa3c48324 ath9k_cmn_debug_recv +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xa9ed6ae3 ath9k_cmn_reload_chainmask +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xad8696fa ath9k_cmn_debug_phy_err +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xb1fdf558 ath9k_cmn_rx_accept +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xc4097ee7 ath9k_cmn_spectral_deinit_debug +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xcbdd42d7 ath9k_cmn_debug_base_eeprom +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xd2981357 ath9k_cmn_count_streams +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xe4505a7f ath9k_cmn_spectral_scan_config +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xf225b1f9 ath9k_cmn_process_rssi +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xfe92be51 ath9k_cmn_init_channels_rates +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x00160311 ath9k_hw_wait +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x097b0124 ath9k_hw_wow_enable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0c06a933 ath9k_hw_name +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x110930b4 ath9k_hw_bstuck_nfcal +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1138e9d9 ath9k_hw_process_rxdesc_edma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x128aa2e9 ath9k_hw_phy_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1292a556 ath9k_hw_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x13ae84fd ar9003_mci_state +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x14adf3f7 ath_gen_timer_isr +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x17dc3d0d ath9k_hw_deinit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x19406414 ar9003_paprd_create_curve +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x195f1af8 ar9003_mci_send_message +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1999775a ath9k_hw_addrxbuf_edma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x23f16146 ath9k_hw_kill_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x24a03709 ath9k_hw_beaconq_setup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x28805065 ath9k_hw_btcoex_init_2wire +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2aeac7ae ath9k_hw_txstart +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2f18db7f ath9k_hw_abort_tx_dma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2f91bd6f ath9k_hw_get_txq_props +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x31fadcab ath9k_hw_btcoex_enable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x330253de ath9k_hw_gen_timer_start +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x349702b2 ath9k_hw_init_global_settings +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x3892e5d3 ath9k_hw_disable_mib_counters +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x39716950 ath9k_hw_cfg_gpio_input +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x39df5ff7 ath9k_hw_set_gpio +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x3b4fcd5e ath_gen_timer_free +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x3c445888 ath9k_hw_btcoex_set_weight +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x3f3db2e7 ar9003_hw_disable_phy_restart +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x40f19be9 ath9k_hw_set_rx_bufsize +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x43e9c56b ath9k_hw_abortpcurecv +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4572c870 ar9003_mci_cleanup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x45ba9912 ath9k_hw_reset_tsf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x46290e85 ath9k_hw_stop_dma_queue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x46450776 ar9003_is_paprd_enabled +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x49fe0fd1 ath9k_hw_gpio_get +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4db406a4 ath9k_hw_setantenna +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x51fedf5c ath9k_hw_intrpend +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x55b2df20 ath9k_hw_btcoex_set_concur_txprio +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x55c53a21 ath9k_hw_setup_statusring +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x5a47d0e8 ath9k_hw_resettxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x5c3a25ae ar9003_mci_send_wlan_channels +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x5ec17682 ath9k_hw_reset_calvalid +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x60984526 ath9k_hw_updatetxtriglevel +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x68acac69 ar9003_mci_get_next_gpm_offset +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6911dec6 ath9k_hw_setrxabort +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x771cf620 ath9k_hw_set_txpowerlimit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x77c346e8 ath9k_hw_reset +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x79818539 ar9003_get_pll_sqsum_dvc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8141ba7c ath9k_hw_set_tsfadjust +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x84e9fac2 ath9k_hw_numtxpending +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8611c5fc ath9k_hw_computetxtime +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8f7614a5 ar9003_paprd_populate_single_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x934240d3 ath9k_hw_gettsf64 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x93dbb2a5 ath9k_hw_btcoex_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9425f2d8 ath9k_hw_getrxfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x94368cc2 ath9k_hw_set_txq_props +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x95326770 ar9003_paprd_enable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x972575ca ar9003_paprd_init_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x982a21d1 ath9k_hw_setmcastfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9b45f951 ath9k_hw_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9c584f6c ath9k_hw_btcoex_init_mci +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa008de00 ath9k_hw_check_nav +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa1938a5e ath_gen_timer_alloc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa74becd5 ath9k_hw_getchan_noise +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa760ead0 ath9k_hw_gen_timer_stop +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xab191a4b ath9k_hw_startpcureceive +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xab304ea5 ath9k_hw_wow_wakeup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xac5d0c01 ath9k_hw_setpower +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb37b1b87 ath9k_hw_enable_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb60a7436 ath9k_hw_releasetxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xbded008a ar9003_hw_bb_watchdog_check +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xbdf685a5 ath9k_hw_btcoex_init_scheme +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xbe6b651c ath9k_hw_stopdmarecv +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xbf680d9b ar9003_mci_setup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc7a4a214 ath9k_hw_set_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc7d78100 ath9k_hw_set_tx_filter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc9751e9e ath9k_hw_set_sta_beacon_timers +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xcafbb47c ath9k_hw_check_alive +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xcb347d3f ar9003_mci_set_bt_version +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xcbfe67ac ath9k_hw_init_btcoex_hw +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xcdbd0a5b ath9k_hw_gettxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd3500947 ath9k_hw_request_gpio +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd5f4aacb ath9k_hw_setuprxdesc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd9098096 ath9k_hw_puttxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd9d28f02 ath9k_hw_disable_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xda291b0e ar9003_hw_bb_watchdog_dbg_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xda3f695a ath9k_hw_getnf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe4880eac ath9k_hw_setopmode +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe764ceb1 ath9k_hw_wow_apply_pattern +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe7cbf634 ath9k_hw_btcoex_bt_stomp +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe8fd82a4 ar9003_paprd_is_done +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xef75e180 ar9003_mci_get_interrupt +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xefbeae05 ath9k_hw_setrxfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf1bed420 ath9k_hw_gettsf32 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf3611489 ar9003_paprd_setup_gain_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf5fcbff9 ath9k_hw_cfg_output +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf88609ca ath9k_hw_write_associd +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf8b3f38b ath9k_hw_btcoex_init_3wire +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf8bb8c09 ath9k_hw_settsf64 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf9361479 ath9k_hw_setuptxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xfac8d7c4 ath9k_hw_rxprocdesc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xfb39ff5a ath9k_hw_beaconinit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xfe562695 ath9k_hw_ani_monitor +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xffbd0b2d ath9k_hw_putrxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xffd02408 ath9k_hw_get_tsf_offset +EXPORT_SYMBOL drivers/net/wireless/atmel 0x223652c3 stop_atmel_card +EXPORT_SYMBOL drivers/net/wireless/atmel 0x4aebbc88 atmel_open +EXPORT_SYMBOL drivers/net/wireless/atmel 0x91996a4c init_atmel_card +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x11686008 brcmu_pktq_penq_head +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x2ab360c6 brcmu_pktq_mdeq +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x31191349 brcmu_pktq_pdeq_match +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x3f2988a1 brcmu_dotrev_str +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x6483936d brcmu_pktq_penq +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x7df4d209 brcmu_pktq_flush +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x8a5eb47d brcmu_pktq_mlen +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x8d3ecb51 brcmu_pktq_pdeq +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x9be9e9bd brcmu_pktq_pflush +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x9f4b5dcf brcmu_d11_attach +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xbaa62d72 brcmu_pkt_buf_get_skb +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xcb66d249 brcmu_pkt_buf_free_skb +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xd261b8a6 brcmu_boardrev_str +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xf2385626 brcmu_pktq_pdeq_tail +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xf7272142 brcmu_pktq_init +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xf8b5297c brcmu_pktq_peek_tail +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x085cb0d5 hostap_info_init +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x0d383162 hostap_check_sta_fw_version +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x0d8ce26f hostap_set_hostapd +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x136b28e7 hostap_set_auth_algs +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x1723ac32 hostap_set_multicast_list_queue +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x191e876d hostap_remove_proc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x2522684d prism2_update_comms_qual +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x264d3e0b hostap_80211_ops +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x3f03b884 hostap_free_data +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x44af5b08 hostap_remove_interface +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x4eb97ce0 hostap_info_process +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x615d5faa hostap_set_roaming +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x640521a4 hostap_80211_rx +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x6a8ad253 hostap_get_porttype +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x6e498e31 hostap_set_antsel +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x7ca30faf hostap_master_start_xmit +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x8a6ed75c hostap_setup_dev +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x91100593 hostap_set_hostapd_sta +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x983893b6 hostap_init_data +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xa12ad27f hostap_dump_tx_header +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xa8dd0ab1 hostap_set_string +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xad542c3f hostap_set_encryption +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xadb7817a hostap_init_proc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xb2a945e0 hostap_dump_rx_header +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xb3e3f280 hostap_set_word +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xb4b77c8b hostap_80211_get_hdrlen +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xc6df79f0 hostap_init_ap_proc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xe2e36fc4 hostap_add_interface +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xf99c2676 hostap_handle_sta_tx_exc +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x0d928fb9 free_libipw +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x261acc2c libipw_change_mtu +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x42fd53f9 alloc_libipw +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x4c8b949a libipw_get_geo +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x56b78e6d libipw_set_geo +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x5801ca43 libipw_get_channel +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x5aebe041 libipw_networks_age +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x6374cc33 libipw_channel_to_index +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x6c373c17 libipw_wx_set_encode +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x6da80b8c libipw_channel_to_freq +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x6ffe43c4 libipw_wx_get_scan +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x808a3375 libipw_wx_get_encode +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x9e329e1e libipw_get_channel_flags +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xaaa7b3d4 libipw_wx_set_encodeext +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xb347fa72 libipw_freq_to_channel +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xba7f4514 libipw_rx +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xd2827899 libipw_rx_mgt +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xd3bc7f88 libipw_wx_get_encodeext +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xd5095474 libipw_xmit +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xe685aa19 libipw_is_valid_channel +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xf58eb38e libipw_txb_free +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x009b01b2 il_rx_queue_update_write_ptr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x024b0510 il_mac_bss_info_changed +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x04dd78c3 il_send_cmd_pdu_async +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x06b057d6 il_mac_conf_tx +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x06efed11 il_hdl_spectrum_measurement +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x0c7e9135 il_init_geos +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x0cb651cf il_set_tx_power +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x100ee06a il_tx_cmd_complete +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x103b2896 il_hdl_error +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x121d44f7 il_init_channel_map +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x1278b246 il_hdl_pm_sleep +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x137e24f6 il_eeprom_free +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x155c3694 il_clear_ucode_stations +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x172a861b il_eeprom_query16 +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x19135dbd il_leds_exit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x1cfda3b3 il_irq_handle_error +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x1dbec8fa il_get_passive_dwell_time +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x23be0d36 il_send_add_sta +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x24ff51dd _il_poll_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x25edda5b il_init_scan_params +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x2690a340 il_get_single_channel_number +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x284cb50e il_mac_add_interface +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x290b0ca1 il_free_channel_map +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x29d5fdc1 il_set_rxon_hwcrypto +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x2b68a4f5 il_apm_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x2e1f028c il_txq_update_write_ptr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x2e823fa4 il_poll_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x319abd4b il_mac_reset_tsf +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x322a222b il_add_beacon_time +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x3325a903 il_get_lowest_plcp +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x34eb1eda il_update_stats +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x350c42aa il_send_cmd +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x373d84c2 il_hdl_csa +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x49d09d56 il_setup_rx_scan_handlers +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4a71939b il_send_lq_cmd +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4aa39103 il_get_cmd_string +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4e67396c il_set_rate +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x56376422 il_power_update_mode +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x564c6740 il_debug_level +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x57d4851e il_fill_probe_req +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x59fa8be0 il_tx_queue_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x5a6a8b05 il_restore_stations +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x5c5fac66 il_tx_queue_free +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x5cbcb736 il_cmd_queue_free +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x5f0ca592 il_mac_hw_scan +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x61624c23 il_tx_queue_unmap +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x623cb971 il_clear_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x62b22605 il_eeprom_query_addr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x63a136f1 il_power_initialize +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x67c5dfa9 il_scan_cancel_timeout +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x6dd9e67e il_full_rxon_required +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x701f94b2 il_rx_queue_alloc +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x71567ef7 il_get_active_dwell_time +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x769215cd il_free_geos +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x7e2e29ff il_apm_stop +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x85628b77 _il_apm_stop +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x86c93046 il_usecs_to_beacons +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x8866fb21 il_setup_scan_deferred_work +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x8f20dd25 il_mac_change_interface +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x8fe191d8 il_mac_sta_remove +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x92ce18e5 il_tx_queue_reset +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x995484f3 il_hdl_pm_debug_stats +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x9b129f42 il_eeprom_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x9c915f3f il_leds_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x9e0f3957 il_dbgfs_register +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa05a8796 il_set_decrypted_flag +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa18b6bdc il_set_flags_for_band +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa27d4c03 il_get_free_ucode_key_idx +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa7cb7033 il_send_cmd_pdu +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb3f3e5dd il_send_rxon_timing +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb4c13445 il_send_bt_config +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb6f72388 il_get_channel_info +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb7bd33ff il_isr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xbbc64b4a il_write_targ_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xbd2e7707 il_connection_init_rx_config +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xbd6562e7 il_cmd_queue_unmap +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xbde7deca il_chswitch_done +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xbfb1e158 il_rx_queue_space +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc05acfdc il_check_rxon_cmd +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc39cf12c il_bg_watchdog +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc6d64b69 il_setup_watchdog +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc788a12b il_set_rxon_ht +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd7ac41dd il_force_reset +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xdabc01da il_dbgfs_unregister +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xdb904372 il_mac_remove_interface +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe04a596b il_mac_flush +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe0a27143 il_free_txq_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe1a5d55f il_is_ht40_tx_allowed +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe1cee686 il_send_stats_request +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe435493a il_queue_space +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe8e0a4bd il_set_rxon_channel +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xec41671e il_scan_cancel +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xef7fbd07 il_cancel_scan_deferred_work +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xefdd4e87 il_add_station_common +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf013dda1 il_read_targ_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf0c8ba5b il_alloc_txq_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf220aa25 il_tx_cmd_protection +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf3c880a2 il_mac_config +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf3e6c5fe il_send_cmd_sync +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf4c44b61 il_rd_prph +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf501278b il_bcast_addr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf7405135 il_set_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xfbc2865e il_wr_prph +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x2f7b7e55 __tracepoint_iwlwifi_dev_ucode_wrap_event +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x3b9d00d6 __tracepoint_iwlwifi_dev_ioread32 +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x779dd6f5 __tracepoint_iwlwifi_dev_iowrite32 +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x85c1bb84 __tracepoint_iwlwifi_dev_iowrite8 +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x963a6f8a __tracepoint_iwlwifi_dev_ucode_error +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0xb8f7026f __tracepoint_iwlwifi_dev_ucode_cont_event +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0xf9ec6bdd __tracepoint_iwlwifi_dev_ucode_event +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x0ed9912b free_orinocodev +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x1724e1d2 orinoco_init +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x22039ff1 orinoco_set_multicast_list +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x26ea666f orinoco_open +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x27f22a69 __orinoco_ev_rx +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x49dc14d4 __orinoco_ev_info +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x50dc4451 orinoco_up +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x5dea5bf1 hermes_struct_init +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x6e5bf537 orinoco_tx_timeout +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x7386e917 orinoco_process_xmit_skb +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x7ab8eecf orinoco_get_stats +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x970336fc orinoco_if_add +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xaf2d030c alloc_orinocodev +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xb3b975dd orinoco_down +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xc58cc059 orinoco_if_del +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xe4454aa8 orinoco_change_mtu +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xec3c2eaa orinoco_stop +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xffe27bca orinoco_interrupt +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/btcoexist/btcoexist 0x75201cde rtl_btc_get_ops_pointer +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x057fa9fa rtl92c_download_fw +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x0c8d3b95 rtl92c_phy_query_bb_reg +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x14c69e8d rtl8192_phy_check_is_legal_rfpath +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x22695332 _rtl92c_phy_set_rf_sleep +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x2401fdd6 rtl92c_phy_sw_chnl +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x2e3a1123 _rtl92c_phy_fw_rf_serial_write +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x34b5f532 _rtl92c_phy_rf_serial_write +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x3901c0d6 rtl92c_fill_h2c_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x3933931a rtl92c_phy_sw_chnl_callback +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x39a0256b rtl92c_bt_rssi_state_change +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x39ed0c20 rtl92c_phy_set_io +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x443defec _rtl92c_phy_txpwr_idx_to_dbm +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x444fa306 rtl92c_phy_set_rfpath_switch +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x455b3cb3 _rtl92c_phy_dbm_to_txpwr_idx +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x51d268df rtl92c_set_fw_pwrmode_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x575a6859 rtl92c_phy_rf_config +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x6d534c72 rtl92c_phy_set_txpower_level +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x78061d43 rtl92c_dm_bt_coexist +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x789c65d8 _rtl92c_phy_rf_serial_read +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x78b00a14 _rtl92c_phy_bb8192c_config_parafile +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x78efa3b3 rtl92c_phy_ap_calibrate +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x88687d26 rtl92c_phy_iq_calibrate +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x8b4ce70b rtl92c_phy_update_txpower_dbm +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x8d35b558 _rtl92c_phy_fw_rf_serial_read +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x91fa3647 rtl92c_phy_set_io_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x948a7cba rtl92c_dm_init_rate_adaptive_mask +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x9ca44404 rtl92c_phy_set_bb_reg +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xb0dbfeaf rtl92c_set_fw_joinbss_report_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xb3314d48 _rtl92c_phy_calculate_bit_shift +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xb82c399c _rtl92c_store_pwrIndex_diffrate_offset +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xb96bc15c rtl92c_set_fw_rsvdpagepkt +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xb9cd9687 rtl92c_dm_watchdog +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xc0a02198 rtl92c_dm_rf_saving +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xc112e4e7 rtl92c_firmware_selfreset +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xd6ef4a85 rtl92c_dm_check_txpower_tracking +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xd8a2e2ed rtl92c_phy_lc_calibrate +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xd96a18f6 rtl92c_dm_write_dig +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xe5a9e056 _rtl92c_phy_init_bb_rf_register_definition +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xe80ec045 rtl92c_phy_set_bw_mode +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xf1e223e9 rtl92c_dm_init +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xf3b34cdb rtl92ce_phy_set_rf_on +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xf86e97dc rtl92c_dm_init_edca_turbo +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x6fb9f06f rtl8723_fill_dummy +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_pci 0x0dab40ab rtl_pci_probe +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_pci 0xffe08831 rtl_pci_disconnect +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_usb 0xe35ef6eb rtl_usb_probe +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_usb 0xf09e1a67 rtl_usb_suspend +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_usb 0xfa76d6cc rtl_usb_resume +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_usb 0xfce0a5b8 rtl_usb_disconnect +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x0fcb4e1f rtl_bb_delay +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x10ae4773 rtlwifi_rate_mapping +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x207fbb70 rtl_evm_db_to_percentage +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x20fdc31e rtl_fw_cb +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x2273dddf rtl_get_tcb_desc +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x52ad58a2 rtl_dm_diginit +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x62b2b778 rtl_signal_scale_mapping +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x671abfad efuse_one_byte_read +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x79188a02 rtl_query_rxpwrpercentage +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x7a2b7a5a rtl_init_rfkill +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x7cbf8b80 efuse_read_1byte +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x870d83fb rtl_ps_set_rf_state +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x8b37d579 rtl_efuse_shadow_map_update +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x8b962c94 rtl_cam_empty_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x9301c546 rtl_cam_add_one_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x95386cb6 rtl_hal_pwrseqcmdparsing +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x9628438a rtl_ps_disable_nic +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x980848e2 rtl_addr_delay +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x9821cfc7 rtl_cmd_send_packet +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x98bfb2a1 rtl_cam_delete_one_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x9ad80745 rtl_rfreg_delay +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x9b67d322 rtl_lps_enter +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x9da7efb4 efuse_shadow_read +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xa72ad25e rtl_cam_del_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xb3e526f9 rtl_cam_get_free_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xb858014c rtl_process_phyinfo +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xc11d185b rtl_cam_reset_all_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xc1c47d9b rtl_lps_leave +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xcd81f67d rtl_ps_enable_nic +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xd8a363ed rtl_send_smps_action +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xda3037e8 rtl_cam_mark_invalid +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xe5170140 rtl_phy_scan_operation_backup +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xf92e9705 rtl_wowlan_fw_cb +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0x67983151 wl12xx_is_dummy_packet +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0x6da9185d wlcore_calc_packet_alignment +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0xad4010ed wlcore_tx_complete +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0xe78f6ff7 wl1271_free_tx_id +EXPORT_SYMBOL drivers/nfc/microread/microread 0x88ce26a1 microread_remove +EXPORT_SYMBOL drivers/nfc/microread/microread 0x9951c71c microread_probe +EXPORT_SYMBOL drivers/nfc/nxp-nci/nxp-nci 0x991830ff nxp_nci_remove +EXPORT_SYMBOL drivers/nfc/nxp-nci/nxp-nci 0xc863cbce nxp_nci_probe +EXPORT_SYMBOL drivers/nfc/nxp-nci/nxp-nci 0xfdab7c28 nxp_nci_fw_recv_frame +EXPORT_SYMBOL drivers/nfc/pn544/pn544 0x51863a9f pn544_hci_remove +EXPORT_SYMBOL drivers/nfc/pn544/pn544 0xe822af32 pn544_hci_probe +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x00956076 ndlc_recv +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x26b985d3 ndlc_open +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x3015af18 st_nci_se_init +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x3559adac ndlc_remove +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x7b2c6cc8 ndlc_probe +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x98d62f8f st_nci_se_io +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0xc17ca5aa st_nci_se_deinit +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0xf29e04f6 ndlc_send +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0xf49c7673 ndlc_close +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x0c953e14 st21nfca_hci_probe +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x1bef4545 st21nfca_tm_send_dep_res +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x24403a91 st21nfca_se_deinit +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x29956545 st21nfca_im_send_dep_req +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x2bc8f8a5 st21nfca_hci_disable_se +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x33c6a608 st21nfca_dep_event_received +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x3cb8fdc7 st21nfca_im_send_atr_req +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x6181f6c2 st21nfca_dep_deinit +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x6af15869 st21nfca_dep_init +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x7928fa85 st21nfca_hci_discover_se +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x95f45c4f st21nfca_apdu_reader_event_received +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xb2bad035 st21nfca_hci_remove +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xca7df0c2 st21nfca_connectivity_event_received +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xd406b6c9 st21nfca_hci_enable_se +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xfb251dfb st21nfca_se_init +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xfc6814f6 st21nfca_hci_se_io +EXPORT_SYMBOL drivers/ntb/ntb 0x0d8a5b72 ntb_set_ctx +EXPORT_SYMBOL drivers/ntb/ntb 0x1cc99935 __ntb_register_client +EXPORT_SYMBOL drivers/ntb/ntb 0x6ae33f82 ntb_clear_ctx +EXPORT_SYMBOL drivers/ntb/ntb 0x8afa6ef0 ntb_unregister_client +EXPORT_SYMBOL drivers/ntb/ntb 0xb967afa6 ntb_db_event +EXPORT_SYMBOL drivers/ntb/ntb 0xc5c9cf4a ntb_register_device +EXPORT_SYMBOL drivers/ntb/ntb 0xcccb8fc0 ntb_link_event +EXPORT_SYMBOL drivers/ntb/ntb 0xcfadfe51 ntb_unregister_device +EXPORT_SYMBOL drivers/nvdimm/nd_btt 0x5021a676 nvdimm_namespace_attach_btt +EXPORT_SYMBOL drivers/nvdimm/nd_btt 0x7b02f041 nvdimm_namespace_detach_btt +EXPORT_SYMBOL drivers/parport/parport 0x0501426e parport_ieee1284_read_nibble +EXPORT_SYMBOL drivers/parport/parport 0x07073bdd parport_ieee1284_write_compat +EXPORT_SYMBOL drivers/parport/parport 0x15d3cbc8 parport_find_number +EXPORT_SYMBOL drivers/parport/parport 0x1a360ed5 parport_del_port +EXPORT_SYMBOL drivers/parport/parport 0x1b5d82f0 parport_find_base +EXPORT_SYMBOL drivers/parport/parport 0x49703518 parport_wait_peripheral +EXPORT_SYMBOL drivers/parport/parport 0x4a990880 parport_negotiate +EXPORT_SYMBOL drivers/parport/parport 0x4d2a941b parport_ieee1284_interrupt +EXPORT_SYMBOL drivers/parport/parport 0x4e6f2e70 parport_ieee1284_read_byte +EXPORT_SYMBOL drivers/parport/parport 0x52f12b30 parport_unregister_driver +EXPORT_SYMBOL drivers/parport/parport 0x53eb0fc8 parport_ieee1284_ecp_write_addr +EXPORT_SYMBOL drivers/parport/parport 0x5e3a3912 parport_irq_handler +EXPORT_SYMBOL drivers/parport/parport 0x660fae75 parport_wait_event +EXPORT_SYMBOL drivers/parport/parport 0x7a037e32 parport_ieee1284_ecp_write_data +EXPORT_SYMBOL drivers/parport/parport 0x88e5e30b parport_put_port +EXPORT_SYMBOL drivers/parport/parport 0x8c30dd9d parport_unregister_device +EXPORT_SYMBOL drivers/parport/parport 0x8d8aaeaf parport_ieee1284_epp_write_data +EXPORT_SYMBOL drivers/parport/parport 0x90f8f0df parport_ieee1284_epp_read_addr +EXPORT_SYMBOL drivers/parport/parport 0x9852ec9f parport_set_timeout +EXPORT_SYMBOL drivers/parport/parport 0x9e35e019 parport_ieee1284_epp_read_data +EXPORT_SYMBOL drivers/parport/parport 0xa462df55 parport_ieee1284_epp_write_addr +EXPORT_SYMBOL drivers/parport/parport 0xa495c4a3 parport_ieee1284_ecp_read_data +EXPORT_SYMBOL drivers/parport/parport 0xa6f65775 parport_register_port +EXPORT_SYMBOL drivers/parport/parport 0xae48a029 parport_get_port +EXPORT_SYMBOL drivers/parport/parport 0xc2d2e963 parport_register_dev_model +EXPORT_SYMBOL drivers/parport/parport 0xc7e05395 parport_announce_port +EXPORT_SYMBOL drivers/parport/parport 0xcf9e5baf __parport_register_driver +EXPORT_SYMBOL drivers/parport/parport 0xd8f91c4f parport_write +EXPORT_SYMBOL drivers/parport/parport 0xd92fe1d8 parport_read +EXPORT_SYMBOL drivers/parport/parport 0xe5987db8 parport_claim_or_block +EXPORT_SYMBOL drivers/parport/parport 0xe5f4b128 parport_claim +EXPORT_SYMBOL drivers/parport/parport 0xe8e3c147 parport_remove_port +EXPORT_SYMBOL drivers/parport/parport 0xf96b4596 parport_register_device +EXPORT_SYMBOL drivers/parport/parport 0xf9711c21 parport_release +EXPORT_SYMBOL drivers/parport/parport_pc 0x977d4f32 parport_pc_unregister_port +EXPORT_SYMBOL drivers/parport/parport_pc 0xde4ac664 parport_pc_probe_port +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x0f83bdd6 pcmcia_enable_device +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x15d4dd8b pcmcia_request_io +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x2605d74e pcmcia_loop_config +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x2920f6af pcmcia_request_window +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x29437a36 pcmcia_release_window +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x42177664 pcmcia_fixup_iowidth +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x4564d750 pcmcia_fixup_vpp +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x63810ca6 pcmcia_map_mem_page +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x64320adc pcmcia_read_config_byte +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x6acd47d7 pcmcia_get_mac_from_cis +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x742f5665 pcmcia_parse_tuple +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x804e19a1 pcmcia_write_config_byte +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x81e48249 __pcmcia_request_exclusive_irq +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x88fff5a4 pcmcia_dev_present +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x8d6ed28f pcmcia_request_irq +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xcc1f0866 pcmcia_unregister_driver +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xd9db2b27 pcmcia_register_driver +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xdac93abf pcmcia_loop_tuple +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xf0833c67 pcmcia_get_tuple +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xf5eecfc2 pcmcia_disable_device +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x04952fdb pcmcia_socket_list_rwsem +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x07198220 pccard_register_pcmcia +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x212db8d2 pcmcia_socket_list +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x27dfb220 pcmcia_parse_events +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x3091d367 pcmcia_put_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x7fc2c32e pcmcia_register_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x8397f604 pcmcia_socket_class +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x950d2df7 pcmcia_get_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x9812a1ad pcmcia_reset_card +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xc6805d4f pcmcia_parse_uevents +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xcf97f3bd dead_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xdbfa476a pcmcia_get_socket_by_nr +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xdff2d454 pcmcia_unregister_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_rsrc 0x668b9fb3 pccard_nonstatic_ops +EXPORT_SYMBOL drivers/pcmcia/pcmcia_rsrc 0xe2fef774 pccard_static_ops +EXPORT_SYMBOL drivers/pps/pps_core 0x4aabf816 pps_event +EXPORT_SYMBOL drivers/pps/pps_core 0x8d4888a4 pps_lookup_dev +EXPORT_SYMBOL drivers/pps/pps_core 0xa85a7fa1 pps_unregister_source +EXPORT_SYMBOL drivers/pps/pps_core 0xd1da86ce pps_register_source +EXPORT_SYMBOL drivers/ptp/ptp 0x37311d03 ptp_clock_register +EXPORT_SYMBOL drivers/ptp/ptp 0x7746048b ptp_find_pin +EXPORT_SYMBOL drivers/ptp/ptp 0x8e8cf35f ptp_clock_index +EXPORT_SYMBOL drivers/ptp/ptp 0xaa1c4a9e ptp_clock_event +EXPORT_SYMBOL drivers/ptp/ptp 0xb85fe886 ptp_clock_unregister +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x07e6bffd rproc_boot +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x2ba5d5a3 rproc_add +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x3b5e6853 rproc_report_crash +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x4d935d2e rproc_get_by_phandle +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x833f4b0d rproc_shutdown +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0xaeda4577 rproc_del +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0xd6804b06 rproc_vq_interrupt +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0xe79803f7 rproc_da_to_va +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0xee42fcdb rproc_put +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0xf61abb40 rproc_alloc +EXPORT_SYMBOL drivers/rtc/rtc-ds1685 0x1399450f ds1685_rtc_poweroff +EXPORT_SYMBOL drivers/scsi/esp_scsi 0x0091b7e4 scsi_esp_cmd +EXPORT_SYMBOL drivers/scsi/esp_scsi 0x0f2e91fd scsi_esp_register +EXPORT_SYMBOL drivers/scsi/esp_scsi 0x2835c696 scsi_esp_template +EXPORT_SYMBOL drivers/scsi/esp_scsi 0x4a29ab38 scsi_esp_intr +EXPORT_SYMBOL drivers/scsi/esp_scsi 0xc7e7d113 scsi_esp_unregister +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x05e1922d fcoe_ctlr_destroy +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x06dc4772 fcoe_ctlr_link_down +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x29daf33b fcoe_ctlr_init +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x3e5068e0 fcoe_ctlr_recv_flogi +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x553ebfe4 fcoe_transport_attach +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x572357e2 fcoe_ctlr_link_up +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x91a1aeb7 fcoe_ctlr_els_send +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x98e9f2f9 fcoe_ctlr_recv +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xa7f8e09e fcoe_transport_detach +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xb979ae39 fcoe_ctlr_set_fip_mode +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xbea0438e fcoe_fcf_get_selected +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xd146e6e7 fcoe_ctlr_destroy_store +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x04126447 fc_fabric_login +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x07c8bd8f fc_frame_crc_check +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x10db4701 fc_exch_recv +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x126db81d fc_set_mfs +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x174b978b fc_disc_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x1bd7aec4 fc_lport_destroy +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x20ae8c30 fc_lport_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x22b90986 fc_exch_mgr_del +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x2aafd9ef fc_slave_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x2b00a751 fc_frame_alloc_fill +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x2ea1615a fc_lport_notifier_head +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x32bfae7d fc_fc4_deregister_provider +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x33b39dd9 fc_exch_update_stats +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x36e5fbaf fc_cpu_mask +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x3e7e67d4 _fc_frame_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x403b29c7 fc_lport_iterate +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x44a8942f fc_exch_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x4cb41a23 fc_exch_mgr_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x4ed8ce75 fc_exch_mgr_list_clone +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x52522e94 fc_rport_terminate_io +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x5977d07c fc_eh_host_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x658e8b31 fc_lport_logo_resp +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x66b5c125 fc_get_host_port_state +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x6717f220 fc_lport_flogi_resp +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x6e360be3 fc_linkup +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x703daecc fc_fabric_logoff +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x7347037a fc_get_host_stats +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x76740c2c fc_lport_bsg_request +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x8ad6df5d fc_elsct_send +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x8c6d3dbc fc_fill_hdr +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x9102a30f fc_get_host_speed +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x94ac317b fc_eh_device_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x973a5b2e fc_fill_reply_hdr +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x9e90b062 fc_elsct_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x9f8d0426 fc_exch_mgr_free +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x9fab34ed libfc_vport_create +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x9fabf650 fc_queuecommand +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xa1c806ed fc_lport_config +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xa2da366e fc_lport_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xb3249f92 fc_fc4_register_provider +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xb3dbfdee fc_exch_mgr_add +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xb9d6344e fc_disc_config +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xbc5dbb1f fc_vport_setlink +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xc151db94 fc_eh_abort +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xd5c62f14 fc_fcp_destroy +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xd64e9bf2 fc_exch_mgr_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xdedeae1a fc_rport_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xe3317d9d fc_vport_id_lookup +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xe8e99e78 fc_set_rport_loss_tmo +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xe9b57596 fc_fcp_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xed6d1acc fc_lport_set_local_id +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xfa4111e4 fc_linkdown +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x5ed16a7c sas_prep_resume_ha +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x8a87e724 try_test_sas_gpio_gp_bit +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x8f784dce sas_wait_eh +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0xa9bccc7d sas_resume_ha +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0xb54bbf8b sas_suspend_ha +EXPORT_SYMBOL drivers/scsi/megaraid/megaraid_mm 0x0a585cbe mraid_mm_register_adp +EXPORT_SYMBOL drivers/scsi/megaraid/megaraid_mm 0x2250c66e mraid_mm_adapter_app_handle +EXPORT_SYMBOL drivers/scsi/megaraid/megaraid_mm 0x512c956d mraid_mm_unregister_adp +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x09d8245b osd_start_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x0c17edb1 osd_sec_init_nosec_doall_caps +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x1c00e9f3 osd_req_decode_get_attr_list +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x1e5bfc82 osd_req_create_object +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x2d55a89c osd_req_read_sg +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x3bb22609 osd_req_read_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x46cef5f5 osd_req_format +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x4bc55ada osd_end_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x4d9b722f osd_req_read +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x4ee0749f osd_req_write_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x5ec364e4 osd_req_remove_partition +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x65be0e60 osd_req_create_partition +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x67139989 osd_req_read_sg_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x75f51d2b osd_req_flush_partition +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x8d513a5e osd_req_set_attributes +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x907973a5 osd_execute_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x915fcddd osd_dev_init +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x946f12b7 osd_req_flush_object +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xb5bca4c6 osd_req_write_sg +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xb664c218 osd_req_list_partition_collections +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xb730754b osd_dev_fini +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xbb42c818 osd_req_list_collection_objects +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xbbaac70b osd_req_write +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xbe019883 osd_auto_detect_ver +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xc4d302a2 osd_execute_request_async +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xc661c22b osd_req_decode_sense_full +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xc8632667 osd_req_remove_object +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xd21efb15 osd_req_add_get_attr_page +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xde25a491 osd_req_flush_obsd +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xdee64fb4 osd_req_add_get_attr_list +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xe7a22aac osd_req_list_dev_partitions +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xea4c6241 osd_req_add_set_attr_list +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xeafb736a osd_req_get_attributes +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xec35c86f osd_req_write_sg_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xecadaac2 osd_req_flush_collection +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xed17afa9 osd_finalize_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xf57ca3f4 osd_req_list_partition_objects +EXPORT_SYMBOL drivers/scsi/osd/osd 0x1d67fb37 osduld_register_test +EXPORT_SYMBOL drivers/scsi/osd/osd 0x340e2422 osduld_device_info +EXPORT_SYMBOL drivers/scsi/osd/osd 0x54957eb7 osduld_info_lookup +EXPORT_SYMBOL drivers/scsi/osd/osd 0x5fc48609 osduld_unregister_test +EXPORT_SYMBOL drivers/scsi/osd/osd 0x9e61a43c osduld_device_same +EXPORT_SYMBOL drivers/scsi/osd/osd 0xa1d55a9f osduld_path_lookup +EXPORT_SYMBOL drivers/scsi/osd/osd 0xcef0ed5b osduld_put_device +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x14be36f4 qlt_stop_phase2 +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x167dcd4b qlt_enable_vha +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x259ac557 qlt_stop_phase1 +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x382dc454 qlt_free_mcmd +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x815817b9 qlt_lport_register +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x8e7d48c9 qlt_rdy_to_xfer +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x99fd928b qlt_unreg_sess +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x9ba638cf qlt_xmit_response +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xaf86cc68 qlt_lport_deregister +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xc066ab5d qlt_abort_cmd +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xc1a777f4 qlt_xmit_tm_rsp +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xc7886e68 qlt_free_cmd +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x1f55cd70 qlogicfas408_ihandl +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x3fd8cd71 qlogicfas408_detect +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x5296e018 qlogicfas408_info +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x5a6f932f qlogicfas408_abort +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x8907b47b qlogicfas408_disable_ints +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x91c1c1df qlogicfas408_queuecommand +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x96a6350c qlogicfas408_bus_reset +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0xc5f858a7 qlogicfas408_biosparam +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0xe76b3b20 qlogicfas408_get_chip_type +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0xf2b95199 qlogicfas408_setup +EXPORT_SYMBOL drivers/scsi/raid_class 0x0b23e2c0 raid_class_release +EXPORT_SYMBOL drivers/scsi/raid_class 0x353de6c7 raid_component_add +EXPORT_SYMBOL drivers/scsi/raid_class 0xcc3c8d4e raid_class_attach +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x0a1ab8d0 fc_block_scsi_eh +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x0bb5f2e8 fc_remote_port_rolechg +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x442fc71a fc_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x4aa6e20c scsi_is_fc_vport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x5abdb17f fc_remote_port_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x7921fe17 fc_vport_create +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x7954b1ea fc_get_event_number +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xbf7a8330 scsi_is_fc_rport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xc3cb37c2 fc_remote_port_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xc660ea17 fc_remove_host +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xd1a0290b fc_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xecc6dfdc fc_host_post_event +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xf0058fad fc_host_post_vendor_event +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xf7cc5bec fc_vport_terminate +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x099aba9c sas_phy_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x12779203 scsi_is_sas_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x156d6680 sas_rphy_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x25865084 scsi_is_sas_port +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x350754b8 sas_port_mark_backlink +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x3ce3de9c sas_port_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x4fc1e9e9 sas_port_get_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x60297688 sas_phy_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x61c9c17a sas_phy_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x664eec67 sas_port_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x6855a8bd sas_rphy_remove +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x7524b8e1 sas_port_delete_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x782903c5 sas_port_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x88307326 sas_phy_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x8ee06607 sas_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x8f0053c2 sas_end_device_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x90799955 sas_rphy_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x98de2b21 sas_port_alloc_num +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x9fb239ff sas_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xa02de7af sas_rphy_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xad97514c scsi_is_sas_rphy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xb26d8fa5 sas_port_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xc6de8866 sas_read_port_mode_page +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xcf60246f sas_expander_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xd1b1765e sas_remove_children +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xdccc5161 sas_port_add_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xde214069 sas_rphy_unlink +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xfdffb195 sas_remove_host +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x3686ea09 spi_print_msg +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x3a1bc2b5 spi_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x65579793 spi_dv_device +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0xa9d6c4bb spi_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0xbe5eafa4 spi_display_xfer_agreement +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0xdc5c155a spi_schedule_dv_device +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0x07f7f998 srp_reconnect_rport +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0x405b6e05 srp_parse_tmo +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0xb3411334 srp_rport_put +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0xe65c3b1f srp_start_tl_fail_timers +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0xeb14a9cd srp_rport_get +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0x2b8dfe2c ufshcd_runtime_suspend +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0x31100721 ufshcd_alloc_host +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0x3f57495d ufshcd_runtime_resume +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0x3fe9f593 ufshcd_system_suspend +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0x5a00b941 ufshcd_system_resume +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0xe5ebc7bd ufshcd_runtime_idle +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0xeb0320d4 ufshcd_shutdown +EXPORT_SYMBOL drivers/ssb/ssb 0x04e7d2cd ssb_device_is_enabled +EXPORT_SYMBOL drivers/ssb/ssb 0x19915303 ssb_bus_suspend +EXPORT_SYMBOL drivers/ssb/ssb 0x1ce79709 __ssb_driver_register +EXPORT_SYMBOL drivers/ssb/ssb 0x2222bb41 ssb_pcihost_register +EXPORT_SYMBOL drivers/ssb/ssb 0x244e643d ssb_bus_sdiobus_register +EXPORT_SYMBOL drivers/ssb/ssb 0x353b048c ssb_pcicore_dev_irqvecs_enable +EXPORT_SYMBOL drivers/ssb/ssb 0x471e2d82 ssb_bus_may_powerdown +EXPORT_SYMBOL drivers/ssb/ssb 0x580a477e ssb_clockspeed +EXPORT_SYMBOL drivers/ssb/ssb 0x58cd8da8 ssb_set_devtypedata +EXPORT_SYMBOL drivers/ssb/ssb 0x5f766b46 ssb_pmu_set_ldo_voltage +EXPORT_SYMBOL drivers/ssb/ssb 0x6499f7e4 ssb_device_enable +EXPORT_SYMBOL drivers/ssb/ssb 0x7143fdf2 ssb_device_disable +EXPORT_SYMBOL drivers/ssb/ssb 0x81f65d3f ssb_bus_powerup +EXPORT_SYMBOL drivers/ssb/ssb 0x873d8dc5 ssb_driver_unregister +EXPORT_SYMBOL drivers/ssb/ssb 0x8a549439 ssb_bus_resume +EXPORT_SYMBOL drivers/ssb/ssb 0xa9bd218f ssb_pmu_set_ldo_paref +EXPORT_SYMBOL drivers/ssb/ssb 0xb1275081 ssb_bus_unregister +EXPORT_SYMBOL drivers/ssb/ssb 0xc0512e0f ssb_admatch_base +EXPORT_SYMBOL drivers/ssb/ssb 0xc61122ad ssb_bus_pcibus_register +EXPORT_SYMBOL drivers/ssb/ssb 0xc674c827 ssb_dma_translation +EXPORT_SYMBOL drivers/ssb/ssb 0xd077a0f2 ssb_commit_settings +EXPORT_SYMBOL drivers/ssb/ssb 0xd481192b ssb_admatch_size +EXPORT_SYMBOL drivers/ssb/ssb 0xed900a35 ssb_chipco_gpio_control +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x01c98b9e fbtft_unregister_backlight +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x1216a0ad fbtft_unregister_framebuffer +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x235f17b0 fbtft_init_display +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x28381e96 fbtft_dbg_hex +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x3e468f47 fbtft_write_gpio16_wr_latched +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x42d2e4b1 fbtft_write_spi_emulate_9 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x42e6b6cc fbtft_write_vmem8_bus8 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x5a930943 fbtft_write_reg8_bus8 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x6b641d26 fbtft_read_spi +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x6fb00cf9 fbtft_write_gpio8_wr +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x713cc1ee fbtft_register_framebuffer +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x78efd3c2 fbtft_probe_common +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x810e5872 fbtft_write_vmem16_bus16 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x81614f6b fbtft_write_vmem16_bus9 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x97b389b3 fbtft_write_gpio16_wr +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x9cd795a2 fbtft_register_backlight +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xb7de9315 fbtft_write_spi +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xc3d7d7be fbtft_write_reg8_bus9 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xc8411642 fbtft_remove_common +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xdba729b0 fbtft_write_reg16_bus16 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xe512052b fbtft_write_reg16_bus8 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xe6d6851b fbtft_framebuffer_release +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xf81cc881 fbtft_write_vmem16_bus8 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xfebd4437 fbtft_framebuffer_alloc +EXPORT_SYMBOL drivers/staging/fwserial/firewire-serial 0x0e01d5df fwtty_port_get +EXPORT_SYMBOL drivers/staging/fwserial/firewire-serial 0x32ad86d2 fwtty_port_put +EXPORT_SYMBOL drivers/staging/iio/addac/adt7316 0xa5c9cef5 adt7316_probe +EXPORT_SYMBOL drivers/staging/iio/magnetometer/hmc5843_core 0x19a071b9 hmc5843_common_suspend +EXPORT_SYMBOL drivers/staging/iio/magnetometer/hmc5843_core 0x253f9359 hmc5843_common_resume +EXPORT_SYMBOL drivers/staging/iio/magnetometer/hmc5843_core 0xa1fe13ee hmc5843_common_probe +EXPORT_SYMBOL drivers/staging/iio/magnetometer/hmc5843_core 0xf2f38571 hmc5843_common_remove +EXPORT_SYMBOL drivers/staging/iio/meter/ade7854 0x2313c371 ade7854_probe +EXPORT_SYMBOL drivers/staging/iio/meter/ade7854 0x778e9fd4 ade7854_remove +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x05ec10bc lnet_extract_kiov +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x06305be8 lnet_copy_iov2kiov +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x1366b7ac LNetSetLazyPortal +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x19670622 LNetNIInit +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x1b191752 lnet_msgtyp2str +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x1ee5f15e lnet_ipif_query +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x1fe16fd5 LNetGet +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x204b8151 lnet_counters_reset +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x2aa9953d lnet_cpt_of_nid +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x2ac93e90 lnet_connect_console_error +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x33202a6c LNetGetId +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x38b76557 lnet_sock_accept +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x38e59565 the_lnet +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x3a087fa8 lnet_create_reply_msg +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x3a8283a7 lnet_sock_connect +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x3c779ee0 LNetPut +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x3c8cbb0a lnet_copy_kiov2kiov +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x3f4f5b46 LNetNIFini +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x473ad33b LNetDist +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x49993ea3 lnet_extract_iov +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x4e00aa46 lnet_finalize +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x4e9c7c75 lnet_notify +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x58a1ca89 LNetMDUnlink +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x594a7e4f lnet_register_lnd +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x5fee352c lnet_acceptor_timeout +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x61f784b2 LNetClearLazyPortal +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x64cdea3a LNetCtl +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x66d449b1 lnet_ipif_enumerate +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x6f7be171 LNetEQGet +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x7001630a lnet_unregister_lnd +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x722c76e5 LNetMDAttach +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x7d59a7fe LNetMEInsert +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x854ab844 LNetEQWait +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x8a215390 lnet_kiov_nob +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x926eff6a lnet_sock_getaddr +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x9de986d3 LNetEQAlloc +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xa3276e78 lnet_set_reply_msg_len +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xa56de08d lnet_ipif_free_enumeration +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xaa414970 LNetMEUnlink +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xaa9b477e LNetMDBind +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xaebb616f lnet_net2ni +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xaf4c872c lnet_sock_read +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xb20da2b1 lnet_copy_iov2iov +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xb75f7953 LNetEQFree +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xba5566d2 lnet_acceptor_port +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xbae14148 lnet_sock_listen +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xbf0760a2 LNetMEAttach +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xbf189576 lnet_parse +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xbffb8f58 lnet_sock_getbuf +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xc3852582 lnet_connect +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xccc0e8d8 lnet_sock_setbuf +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xd7c50cb9 lnet_init +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xddf0b00d lnet_sock_write +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xe8124744 lnet_fini +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xf00b294f lnet_copy_kiov2iov +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xf1b316bf LNetSnprintHandle +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xf5dc6337 lnet_iov_nob +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xfa106804 lnet_counters_get +EXPORT_SYMBOL drivers/staging/lustre/lnet/selftest/lnet_selftest 0x078db139 lstcon_ioctl_entry +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0x040f30fb seq_client_alloc_fid +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0x1c4bb5f9 LU_OBF_FID +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0x2d3d4343 client_fid_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0x375e6f8d LUSTRE_BFL_FID +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0x6dd9b8cc seq_client_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0x88891a71 seq_client_get_seq +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0xae61cff5 LU_DOT_LUSTRE_FID +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0xc997a02f LUSTRE_SEQ_SPACE_RANGE +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0xdbc67ce0 seq_client_flush +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0xecee2727 LUSTRE_SEQ_ZERO_RANGE +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0xf2e84fcb seq_client_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0xf63e204c client_fid_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0x26051bf9 fld_client_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0x27323ad5 fld_client_del_target +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0x313ef709 fld_client_add_target +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0x382c19fd fld_client_debugfs_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0xa7da7621 fld_client_flush +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0xf61f7ad0 fld_client_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0xfd13e823 fld_client_lookup +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x000c507f libcfs_debug_dumplog +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x01db5172 cfs_percpt_atomic_summary +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x022af189 libcfs_kkuc_msg_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x06401e01 cfs_hash_is_empty +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x069f9bb2 cfs_wi_schedule +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x08917712 cfs_hash_for_each_key +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x08ada613 libcfs_console_backoff +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x0b4b1546 libcfs_lnd2modname +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x0d1b8a30 cfs_percpt_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x0de6c369 cfs_cap_lower +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x0e4820ab cfs_percpt_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x0f5eff79 cfs_percpt_number +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x117c8a95 cfs_cpt_nodemask +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x123b6908 cfs_hash_bd_findadd_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x12c54b77 cfs_hash_findadd_unique +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x13550229 lbug_with_loc +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x15565c7f cfs_cpt_set_node +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x17ac7833 libcfs_deregister_ioctl +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x18c503cd cfs_percpt_lock_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x1a60d439 cfs_parse_nidlist +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x1d41c4c0 cfs_hash_bd_lookup_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x1e8cdb47 cfs_race_waitq +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x2663147a __cfs_fail_timeout_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x277e62bd cfs_hash_for_each_empty +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x27b6d3ba cfs_ip_addr_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x29aafd0c cfs_hash_hlist_for_each +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x2a641ef9 cfs_hash_dual_bd_unlock +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x2adae33e cfs_init_timer +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x2dbe54b2 cfs_trimwhite +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x2fb7eae8 cfs_hash_bd_finddel_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x31fc5082 cfs_crypto_hash_update +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x361e82d4 cfs_firststr +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x377f93fb cfs_srand +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x38828b92 cfs_cpt_unset_nodemask +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x389ca502 libcfs_debug_mb +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x39fdcd2b libcfs_debug_set_level +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x3a62a183 cfs_cpt_set_cpu +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x3c1285bd libcfs_subsystem_debug +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x3d5e6098 cfs_race_state +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x3e5e7727 cfs_hash_rehash_cancel_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x3ef0d90c libcfs_kkuc_group_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x3f0d9281 cfs_wi_sched_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x4062f92b libcfs_run_lbug_upcall +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x4087e2b4 cfs_hash_putref +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x411db754 cfs_crypto_hash_final +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x413056d8 cfs_cpt_weight +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x42e22feb cfs_cpt_table +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x44839bbb cfs_rand +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x468bace1 cfs_hash_rehash_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x48f163c6 libcfs_str2anynid +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x4a95faa2 cfs_timer_deadline +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x4a99af72 cfs_clear_sigpending +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x4b982291 cfs_hash_bd_peek_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x4f1f2fa5 cfs_crypto_hash_digest +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x50345570 libcfs_str2net +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x5051b6d2 portal_enter_debugger +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x509d38b0 libcfs_net2str +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x52e9cfc1 cfs_cpt_current +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x53b383e4 cfs_cpt_unset_cpumask +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x54fd9a71 cfs_percpt_index +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x58a7ee00 libcfs_catastrophe +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x5946ec2b cfs_percpt_current +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x5b20921a cfs_hash_for_each_nolock +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x5c013b81 cfs_expr_list_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x5ce62c0e cfs_cpt_table_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x5dce9e80 libcfs_lnd2str +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x61cbdb52 libcfs_kvzalloc_cpt +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x62289d65 cfs_array_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x63b4967a cfs_hash_lookup +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x64685fef libcfs_console_min_delay +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x6564c55b libcfs_console_max_delay +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x65dd9f0c libcfs_run_upcall +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x67398404 cfs_wi_sched_destroy +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x68497dbf cfs_cpt_number +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x6b0f6a65 cfs_crypto_hash_update_page +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x6c4cadc8 cfs_hash_for_each +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x6c605eaa cfs_cpt_unset_node +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x6c905b5f libcfs_watchdog_ratelimit +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x71f662a3 libcfs_debug +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x72f4e5f9 cfs_hash_bd_move_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x752858fb cfs_cpt_table_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x7562cd14 cfs_hash_del_key +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x771695b1 cfs_hash_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x785b7372 cfs_hash_dual_bd_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x7a47b94d cfs_hash_size_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x7a63872e cfs_timer_disarm +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x7b0b748a cfs_ip_addr_parse +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x7c73bc4b cfs_hash_rehash +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x7d93cded cfs_cpt_of_cpu +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x7e6f6485 cfs_ip_addr_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x7fda989d cfs_fail_loc +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x8151c3aa cfs_cap_raised +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x83d795e4 cfs_match_nid +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x857aaea7 libcfs_register_ioctl +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x865483a9 libcfs_kvzalloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x87f3bb87 cfs_hash_del +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x8840f591 cfs_block_allsigs +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x8c6be9ab cfs_percpt_lock_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x8c85e4e6 cfs_crypto_hash_speed +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x8e61d47b cfs_cpt_cpumask +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x91504e8b libcfs_kmemory +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x940ed192 libcfs_stack +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x949221dc cfs_hash_cond_del +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x95620e8c cfs_wi_deschedule +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x97b0b9bc cfs_enter_debugger +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x9879b229 cfs_get_random_bytes +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x9c040c4b cfs_hash_debug_header +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x9e420643 cfs_restore_sigs +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x9f82f712 cfs_trace_copyout_string +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xa2b68b2a cfs_array_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xa6b9dee6 libcfs_kkuc_group_rem +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xa711aec5 cfs_cpt_table_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xa9088531 cfs_expr_list_values +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xa9c0ca61 cfs_timer_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xa9dc74e2 cfs_trace_copyin_string +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xaaf59b75 cfs_cpt_set_nodemask +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xb00dfd91 cfs_hash_dual_bd_findadd_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xb53b5569 cfs_cpt_spread_node +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xb883b006 cfs_percpt_atomic_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xb8c52b1b cfs_timer_done +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xbab4f34e cfs_timer_arm +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xbab577e8 cfs_hash_for_each_safe +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xbada117b cfs_cpt_clear +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xbf7a37f1 cfs_signal_pending +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xc0ea7fc0 cfs_expr_list_parse +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xc1708189 cfs_hash_dual_bd_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xc1b20836 cfs_hash_add_unique +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xc2dfd791 libcfs_console_ratelimit +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xc39fd2f9 libcfs_panic_on_lbug +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xc49b1c62 cfs_percpt_atomic_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xc77a24c3 cfs_cpt_set_cpumask +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xcb385db9 libcfs_debug_binary +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xcc20e694 libcfs_nid2str +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xccc45639 cfs_free_nidlist +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xcd38904c cfs_wi_exit +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xce1a88f2 libcfs_arch_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xcf61bacb __cfs_fail_check_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xcf678304 cfs_hash_bd_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xd0aa642a cfs_hash_rehash_key +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xd0d8d08a cfs_cpt_unset_cpu +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xd2965f33 cfs_hash_bd_del_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xd418656f libcfs_kkuc_group_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xd46225d8 cfs_percpt_unlock +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xd48d8f72 cfs_hash_dual_bd_lookup_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xd6a52be3 libcfs_printk +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xd7bbf963 cfs_hash_dual_bd_finddel_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xd7c4f765 add_wait_queue_exclusive_head +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xd86ef3a9 cfs_hash_debug_str +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xd96f406d cfs_cap_raise +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xde17bb8d libcfs_isknown_lnd +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xdf2789c0 cfs_curproc_cap_pack +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xdfecb98d cfs_block_sigs +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xe262a6e2 cfs_timer_is_armed +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xe2f91ce3 libcfs_debug_msg +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xe3bf6897 cfs_percpt_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xe7b54314 libcfs_arch_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xea411f63 cfs_block_sigsinv +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xec1f56d5 libcfs_str2nid +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xeccafa5c cfs_cpt_online +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xeceac781 cfs_fail_val +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xeed48ba7 cfs_hash_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xf2c02048 cfs_cpt_bind +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xf3565b71 libcfs_debug_vmsg2 +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xf440bb38 libcfs_kkuc_group_foreach +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xf5e4a175 cfs_hash_bd_add_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xf8a8644b libcfs_id2str +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xf94025d1 libcfs_str2lnd +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xfacb8667 cfs_hash_getref +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xfe565fa9 cfs_crypto_hash_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/llite/lustre 0xa2958b15 ll_iocontrol_register +EXPORT_SYMBOL drivers/staging/lustre/lustre/llite/lustre 0xb056a3ee ll_osscapa_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/llite/lustre 0xc2f13d1e ll_direct_rw_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/llite/lustre 0xcd3cde92 ll_iocontrol_unregister +EXPORT_SYMBOL drivers/staging/lustre/lustre/llite/lustre 0xedf1052f ll_stats_ops_tally +EXPORT_SYMBOL drivers/staging/lustre/lustre/lov/lov 0x0750b605 lov_stripe_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/lov/lov 0x3d1e5dd7 lov_lsm_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/lov/lov 0x41f421ef lov_device_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/lov/lov 0x564bff23 lov_lsm_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/lov/lov 0x7d17f319 lov_stripe_unlock +EXPORT_SYMBOL drivers/staging/lustre/lustre/lov/lov 0xadaed3db lov_read_and_clear_async_rc +EXPORT_SYMBOL drivers/staging/lustre/lustre/mdc/mdc 0x0df21540 it_set_disposition +EXPORT_SYMBOL drivers/staging/lustre/lustre/mdc/mdc 0x5919b6d6 it_clear_disposition +EXPORT_SYMBOL drivers/staging/lustre/lustre/mdc/mdc 0x5ef8417d it_disposition +EXPORT_SYMBOL drivers/staging/lustre/lustre/mdc/mdc 0xfe26c5a6 it_open_error +EXPORT_SYMBOL drivers/staging/lustre/lustre/mgc/mgc 0xdc287f95 mgc_fsname2resid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x001505e1 llog_erase +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x00522783 cl_page_list_move +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x00d14ab0 lu_object_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x01665e34 class_parse_net +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x02218ff5 cl_io_iter_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x035852d0 lustre_swab_llog_rec +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0376a2d5 lprocfs_rd_name +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x03b37a9c lu_kmem_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x03f7421d lu_context_enter +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0418e51a cl_wait +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x048af5e0 class_import_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x04c630c9 obd_devs +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x057f6d4b class_find_old_param +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x05f913dd llog_cat_add_rec +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x072b97a7 cl_page_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x07aa68bb lustre_swab_lustre_cfg +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x07d45876 obdo_set_parent_fid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0802508a ldebugfs_add_simple +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x08392a09 cl_lock_enclosure +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x083942ff class_del_profile +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x08e2e1b3 dt_key +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0ab898b5 obdo_cpu_to_le +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0b513ee7 obd_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0c378d79 lustre_swab_llog_hdr +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0cb1de0f cl_page_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0d87a0c8 cl_io_slice_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0d979c15 llog_exist +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0dc8d97f cl_object_attr_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0f3ab217 dt_object_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0f8a4986 llog_process +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0f8e9a25 cl_io_submit_rw +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x10732dbd cl_req_completion +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1082045a class_process_proc_param +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x10a7c67e lu_stack_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x11495519 lprocfs_write_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x117f74a8 cl_sync_io_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1193cebf cl_io_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1196b320 llog_process_or_fork +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x123e5b5b dt_directory_features +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x129da502 lu_site_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x12f83549 llog_cat_init_and_process +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x142344af cl_page_own_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1491dc30 lu_context_tags_clear +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x168c9939 cl_env_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x16f804f3 cl_lock_nr_mutexed +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x18168bb3 class_num2obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x18329cc0 cl_site_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x18aad297 cl_page_list_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x190ebc82 cl_req_attr_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x19818b5c llog_declare_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1abd26ca cl_page_list_splice +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1ad10cb1 cl_2queue_disown +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1c19f84e cl_page_clip +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1d7cc7d3 cl_io_is_going +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1e5eff92 lprocfs_rd_uint +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1e8a4a68 cl_page_unmap +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1ec08852 cl_io_commit_write +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1f5f804e class_new_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1fc53bff llog_cat_process +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x203c19ba cl_env_nested_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x21beab47 dt_record_read +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x22026a21 __llog_ctxt_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x221826f1 class_parse_nid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x227a3b08 cl_lock_mutex_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x22e300a1 cl_page_make_ready +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x234d13c3 class_config_parse_llog +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x239110fc lu_dev_add_linkage +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x24e1671d lprocfs_counter_sub +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2547efae lustre_uuid_to_peer +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x25d9243b class_conn2obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x26091a37 llog_cat_declare_add_rec +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x268ea95f cl_conf_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x274c28c0 cl_lock_slice_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x275cdc7a cl_env_reexit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x286860f5 class_handle_free_cb +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x28c8f8e2 cl_page_list_disown +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x297cf5e0 class_handle2object +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x29ebf0fd dt_device_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2a03d59e class_config_llog_handler +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2a1ade8f cl_req_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2a557d50 dt_read +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2ae1cd79 kuc_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2bbc1b46 md_from_obdo +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2c376988 cl_page_list_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2d080138 lprocfs_alloc_md_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2d857892 llog_cat_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2e9dd8a4 cl_page_list_assume +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2eab15a1 lu_object_anon +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2f5ca8aa cl_page_discard +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x300433f0 cl_lock_extransit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3242ed35 obdo_cachep +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3283bde9 cl_object_header_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x32ba7a38 dt_quota_slv_features +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x33c151e3 lu_buf_realloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x34b39087 cl_object_kill +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x34f5bee0 cl_req_page_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x353fdb73 llog_init_handle +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x359d8e0b class_conn2export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x35faf0f2 lustre_common_put_super +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3607932c cl_req_page_done +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x369319c0 lprocfs_wr_uint +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x369be015 obdo_le_to_cpu +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x37ed6e4b at_early_margin +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x38986f5d cl_page_header_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x38fb0c90 class_match_param +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3a6d0920 lu_context_key_revive_many +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3ad96d0e class_decref +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3b74b48f cl_lock_hold +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3bcbdc4b lprocfs_stats_alloc_one +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3c00b6d3 cl_env_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3c5cf429 lprocfs_wr_atomic +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3c7d1e49 cl_lock_discard_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3d7c16bd cl_page_list_discard +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3da2aa39 lprocfs_alloc_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3dd5c1a8 lu_context_key_revive +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3e3cef7f class_disconnect +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3e91583d cl_lock_closure_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3eab7bfe LU_BUF_NULL +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3f09f481 class_add_conn +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3f18520f lustre_end_log +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3f25c782 obd_max_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3f33dbb6 cl_env_peek +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3f70993c lustre_register_client_fill_super +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3f8c41ee llog_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x425056ab class_import_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x452f559a lu_buf_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x46239a5d lprocfs_alloc_obd_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x47280b93 cl_io_unlock +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x474ed5bd lustre_swab_ll_fid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x47b35f7d statfs_unpack +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x47f6e1a4 cl_lock_hold_release +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x482d3cb5 capa_cachep +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x48cbbfa2 lprocfs_free_obd_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x48d081de cl_lock_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x494cfb52 lustre_acl_xattr_merge2ext +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x49a0f6ea lustre_posix_acl_xattr_2ext +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4a3e0d5a llog_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4a58e4e4 obdo_from_la +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4aae7b2c cl_object_header_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4ac58713 obd_connect_flags2str +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4acb6d2f cl_io_lock_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4b89af09 llog_backup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4c190aad lprocfs_find_named_value +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4c1c1cf4 lu_object_find +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4c2a31b6 ldebugfs_remove +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4c4c700b obd_alloc_fail +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4d0ccf72 lprocfs_obd_rd_max_pages_per_rpc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4d13458b kuc_len +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4d66fd0b cl_object_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4d8d6dfa lprocfs_counter_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4e4e968f cl_lock_closure_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4ebd80e2 cl_object_top +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4f21ef2c lu_object_invariant +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5035275f cl_2queue_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5067a5ee cl_pages_prune +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x506a974c cl_lock_mutex_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x50b15123 lu_dev_del_linkage +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x50c7fc36 ptlrpc_put_connection_superhack +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x50efed8a lu_device_type_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x519e63b0 lu_context_key_degister +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x522cb7bd cl_io_lock_alloc_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5330253b cl_object_attr_unlock +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x53de146b cl_object_prune +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x54418a28 cl_page_assume +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x544a5167 la_from_obdo +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5488254a cl_page_unassume +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x54885f87 ldlm_timeout +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x54a50eac cl_lock_mutex_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x54c328c0 llog_open_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x555b4ec2 lu_object_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x557e7b14 lustre_posix_acl_xattr_filter +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x557f032d class_destroy_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x558bec27 obd_ioctl_getdata +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x55b88c33 lu_env_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x564e9d44 init_capa_hash +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x570d09ae lustre_swab_lu_fid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5769abce dt_try_as_dir +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x57fde04b cl_object_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5827b18d cl_lock_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x582b013d dt_quota_glb_features +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x584dc252 lu_site_init_finish +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x58624550 cl_lock_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5876de6c lu_context_key_degister_many +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x58e90d05 ldebugfs_register_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5953bbeb cl_sync_io_note +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x59755d79 obd_export_evict_by_uuid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x59a0a811 lu_context_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5a20d896 obd_memory_max +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5a6c8ff5 dt_locate_at +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5ade1d69 dt_store_open +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5b16d13d class_fail_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5b5ea8d1 cl_lock_modify +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5bc022c5 lprocfs_dt_rd_filestotal +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5bf67895 llog_reverse_process +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5c0dbf1d lu_site_stats_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5d22b60f cl_io_rw_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5d34ae0d cl_lock_mode_name +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5d37c8be cl_page_top +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5dd61d85 cl_sync_io_wait +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5e93341f lprocfs_oh_sum +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5ea2dd39 ldebugfs_add_vars +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5ed21ad7 dt_find_or_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5f0b714c lu_object_add_top +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5fe97b73 block_debug_check +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x600f5d40 cl_io_prepare_write +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6033b908 obdo_cmp_md +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x60ca7311 obd_exports_barrier +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x61a1b274 class_unlink_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6208f406 cl_2queue_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x624ffe24 lprocfs_counter_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x62dbadb5 lu_context_refill +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x631fd7b9 lustre_ext_acl_xattr_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x647a6656 cl_env_nested_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x648a7f66 lprocfs_free_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x64dac842 cl_lock_intransit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6640164f cl_offset +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x66693591 lprocfs_obd_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x66ce4e17 lu_device_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x671064c0 cl_page_find_sub +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6734adbd lprocfs_read_frac_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x675244fa dt_otable_features +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6759bfa4 lu_site_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x679914fc cl_locks_prune +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x67de6542 cl_lock_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x67ecc110 cl_page_list_del +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6890d175 lustre_get_jobid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x68efa303 cl_site_stats_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6917e005 lu_object_find_at +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x697021ba lu_device_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x698b61fc cl_lvb2attr +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6997cfea cl_lock_signal +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x69a9356e class_connect +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x69c42114 at_min +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6a9362a8 lprocfs_init_mps_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6d6d459d lprocfs_rd_server_uuid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6e00b5c0 lu_env_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6e93489b cl_io_end +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6faccbf3 lprocfs_seq_read_frac_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6fe48cd0 capa_lookup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x718d0466 llog_write_rec +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x71cd6416 lu_object_assign_fid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x71fed7ba cl_page_prep +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x724539f2 obd_export_evict_by_nid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x734389a3 class_find_client_obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x73444ed8 cl_lock_release +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x73bce2da class_conn2cliimp +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x742559b1 class_unregister_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7519f618 lprocfs_init_ldlm_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x752f71a8 class_get_profile +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x755fb3f5 lprocfs_free_md_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x756a77f3 class_parse_nid_quiet +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x762f7086 obd_export_nid2str +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x764a5ec3 lu_object_header_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x77d2089a class_name2dev +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x77e1c519 cl_lock_hold_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7802fcd7 lustre_swab_llogd_conn_body +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x78873b56 cl_object_has_locks +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x789796a1 obd_zombie_barrier +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x78c2c9bd cl_page_completion +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x798ef8a5 class_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7a2b6bb9 llog_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7b3613fe cl_lock_request +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7b4fc57b at_max +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7bc12d2a lprocfs_init_ops_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7c3d9f72 cl_io_read_page +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7edcafa0 cl_env_reenter +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7ef92a46 lu_context_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7f7d7cd9 lu_buf_check_and_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7fcb4c96 cl_page_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7fcd30a2 dt_lookup_dir +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7fd0ce58 cl_page_flush +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7fe5561a obd_dirty_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8031efb8 lprocfs_dt_rd_kbytestotal +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x806cc497 class_add_uuid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8096adcf cl_object_glimpse +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x80fc0ab6 lu_object_header_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x81527fe1 lu_device_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x81742d89 obd_ioctl_popdata +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x821e7564 cl_lock_closure_build +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x831f656c class_process_config +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8446b9a8 obdo_to_ioobj +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8489f086 obd_alloc_fail_rate +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x849e5385 obd_update_maxusage +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8503c454 lu_buf_check_and_grow +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8508e1fa cl_page_size +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8553b369 obd_memory +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x85b0d09e lu_object_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x86573be1 cl_env_implant +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8786bd75 lprocfs_rd_timeouts +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8808729a cl_use_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x889e2836 class_new_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x88b87068 lprocfs_stats_collect +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x88e8b4b5 llog_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x891054f1 lprocfs_clear_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x89a2b43b class_devices_in_group +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x89ca63e3 lu_context_key_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8a3c8e0b obdo_from_inode +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8aa2c358 lprocfs_dt_rd_blksize +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8b57c0d0 cl_page_is_vmlocked +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8b5f4057 lu_context_tags_update +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8b9e6c6e cl_2queue_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8ba6e479 lustre_swab_lu_seq_range +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8c834f36 lu_object_unhash +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8ce4d1f1 cl_io_submit_sync +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8d48973f cl_io_iter_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8d658ed0 capa_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8e10e6d6 server_name2svname +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8eb225db cl_2queue_discard +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8f4d20f4 cl_lock_user_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8f67314c obd_dump_on_eviction +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x90339b0e lu_context_key_quiesce_many +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x904ccfa2 cl_lock_weigh +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x917bedf4 ldebugfs_seq_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x91a1d9a4 class_handle_hash +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x91e373b1 class_search_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x92102a6b cl_page_at +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x92e58479 obd_dump_on_timeout +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9335592b cl_unuse_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x934d6987 lprocfs_exp_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x937ae663 class_put_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x93859814 lprocfs_oh_tally +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x93b46468 lu_session_tags_clear +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x94f65347 lustre_process_log +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9512d507 lustre_acl_xattr_merge2posix +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x955f5220 ldlm_timeout_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x95735c6c at_extra +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x965bd1ab lprocfs_rd_u64 +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9767adce class_uuid2dev +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x97d03783 at_history +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x98061568 cl_lock_disclosure +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x988ecbaf class_disconnect_stale_exports +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x99b35f27 _debug_capa +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x99e30118 llog_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9a736ccd obdo_from_iattr +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9b1ed9d8 obd_jobid_var +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9ba306d4 lu_site_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9c1f7aae lprocfs_rd_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9c939ab3 lprocfs_rd_atomic +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9dbb17b6 lprocfs_dt_rd_kbytesfree +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9e648dca llog_thread_key +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9f6bc28b obd_max_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa04e582a class_get_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa160da4a lu_object_header_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa189e417 cl_env_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa1f100f2 lu_context_key_quiesce +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa2298a35 cl_unuse +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa27eefb0 cl_page_is_under_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa28a59e4 iattr_from_obdo +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa2b00119 dump_exports +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa2d45c9e class_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa441f030 cl_object_attr_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa5a8510a cl_lock_error +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa5fb234f lprocfs_write_frac_u64_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa674c241 kuc_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa7be18d8 dt_object_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa7e16614 lu_kmem_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa7f10329 cl_page_list_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa82a3dd1 class_handle_unhash +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa8873ebc cl_lock_user_del +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa98315b6 llog_write +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa9ad1548 class_export_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xaa21b7a0 lustre_register_quota_process_config +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xaae3829a dt_index_read +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xab1f3bee obd_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xab8bdd2d cl_io_sub_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xabd7cefe cl_io_rw_advance +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xabf45922 capa_decrypt_id +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xac7f1596 kuc_ptr +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xad344177 cl_enqueue +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xad8507af ldebugfs_register +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xae96c685 cl_lock_at_pgoff +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xaf491570 capa_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xaf991c46 llog_cat_process_or_fork +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb016f593 ldebugfs_add_symlink +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb01963a6 class_uuid_unparse +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb039ef37 cl_index +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb1b89b6d class_attach +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb35519ed lustre_swab_cfg_marker +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb41998cd lustre_cfg_rename +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb4276c08 cl_page_cache_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb4698284 cl_io_top +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb49d618f cl_io_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb4f8ee63 lprocfs_read_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb5c09f50 class_connected_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb635af9e dt_acct_features +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb6696edf llog_cat_cancel_records +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb66af7f2 llog_cancel_rec +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb6722211 lu_object_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb6ba5dd5 kuc_ispayload +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb6efad3d lu_object_put_nocache +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb743ec6a dt_mode_to_dft +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb7d4d006 obdo_refresh_inode +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb8f0b450 lu_site_purge +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xba2bb879 dt_txn_hook_commit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xba985283 lustre_register_client_process_config +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbacac922 lprocfs_write_frac_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbc436a0d obdo_cpy_md +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbcae7d90 cl_object_attr_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbdd25e46 cl_lock_descr_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbe8f28f9 cl_lock_ext_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbe8f52ff dt_index_walk +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbe9dfb94 obdo_from_md +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbeb1ee8d cl_site_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc0954007 lprocfs_oh_clear +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc0aa900e lprocfs_rd_conn_uuid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc0bf7ef2 obd_debug_peer_on_timeout +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc18d06cf lu_buf_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc1d996c4 class_name2obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc32eedec class_uuid2obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc565a772 llog_is_empty +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc5fe001f lu_context_key_register +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc6989594 lprocfs_seq_release +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc6d214f6 dt_store_resolve +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc7797fe4 dump_lniobuf +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc7b99f39 cl_io_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc81cb3e7 dt_txn_callback_del +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc8766399 class_disconnect_exports +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc999d7de cl_io_loop +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc9d16169 dt_record_write +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcb0ab67f obd_max_dirty_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcbefe57d cl_lock_state_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcc0457ba lprocfs_obd_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcd7537ee get_devices_count +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcdc389a9 class_config_dump_llog +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcecec4dc dt_txn_hook_start +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd08827c0 server_name2fsname +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd10a3aa8 cl_page_is_owned +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd10aa042 lustre_swab_llog_id +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd1d9d3d5 lprocfs_single_release +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd2c01d81 ldebugfs_obd_seq_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd30ea91a llog_open +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd3be1acd dt_version_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd4b53f0e cl_lock_is_intransit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd56601dc cl_vmpage_page +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd70fe669 lustre_swab_llogd_body +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd7554d32 class_export_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd7b3f927 dt_device_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd7bc8654 obd_timeout +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd7bfbc9c lprocfs_dt_rd_filesfree +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd7e33329 class_exp2obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd7f7b340 cl_lock_mode_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd878df2d lprocfs_at_hist_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd894d4db cl_page_slice_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xda182e54 class_exp2cliimp +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xda5b1ced class_find_param +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdab07d64 dt_txn_callback_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdac644c8 lustre_posix_acl_xattr_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdb13dce1 capa_list +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdb334566 cl_lock_peek +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdba6f464 cl_page_disown +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdc20813a cl_io_start +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdc679d78 class_register_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdcc40af0 class_check_uuid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xddd6705f cl_page_vmpage +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xde7d985b obd_dirty_transit_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdead36fe class_handle_hash_back +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdeb83304 llog_declare_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe028cf84 capa_encrypt_id +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe0bd98ed obdo_to_inode +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe154aba9 cl_req_prep +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe29a7df4 cl_attr2lvb +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe2eb4470 class_get_next_param +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe2f77458 cl_page_lookup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe32a7ceb lu_cdebug_printer +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe36e3f79 cl_lock_state_wait +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe3b69ebc llog_declare_write_rec +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe3ce5c20 class_detach +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe49121ad lprocfs_rd_connect_flags +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe502f07d lu_device_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe5238f49 llog_close +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe54c5d85 cl_2queue_init_page +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe5ad0c94 lu_object_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe5af96c5 cl_page_delete +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe5d4b1d5 capa_cpy +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe67cc966 cl_req_slice_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe6875f34 llog_copy_handler +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe7d83236 cleanup_capa_hash +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe8dc2ab5 cl_lock_get_trust +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe8e84c32 class_match_nid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe98902cc lu_object_locate +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe9f33933 cl_page_find +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xea8c5496 lu_device_type_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xeaa5daac cl_queue_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xeacec47c lprocfs_oh_tally_log2 +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xeb9841a9 lu_env_refill_by_tags +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xec7d6b85 obd_timeout_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xed8cf3f2 cl_lock_is_mutexed +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xee1e22b2 cl_lock_unhold +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xee68bc29 lu_session_tags_update +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xeed00686 cl_lock_descr_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xeeeb79fa do_lcfg +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xef76f858 block_debug_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xef8cddbe llog_sync +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xef9fd412 cl_stack_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xefef8fc6 lu_env_refill +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xeff1c8b5 cl_page_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf0186ca5 cl_enqueue_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf01e2527 server_name2index +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf0440b5b cl_lock_at +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf1807c50 cl_page_own +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf1904c12 cl_type_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf1a0df64 cl_2queue_assume +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf1b13410 dt_declare_version_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf2367d8d cl_page_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf2a1ab66 lu_context_exit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf2fd6695 statfs_pack +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf315816f lprocfs_rd_state +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf3bc5b9d dt_lfsck_features +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf477e16d llog_cat_close +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf490d5f9 class_del_profiles +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf60d4659 capa_count +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf68113d1 lu_object_find_slice +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf6c9e6f6 class_incref +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf7020831 lprocfs_dt_rd_kbytesavail +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf740aac1 cl_page_list_own +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf78a143e lu_context_key_register_many +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf7b7da3f cl_lock_delete +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf91a8cc1 llog_cat_reverse_process +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf937ef79 cl_object_find +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf96e7c0b lustre_register_kill_super_cb +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfa813d06 capa_hmac +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfabbb92e cl_io_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfbea0098 lu_types_stop +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfc7f18d0 obd_pages_max +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfcc63132 dt_txn_hook_stop +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfce8ee37 cl_page_gang_lookup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfd68d17a class_notify_sptlrpc_conf +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfdbe1557 lprocfs_write_u64_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfdfe48cb cl_lock_enqueue_wait +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xff3c9b9c class_manual_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xff4c6bcd cl_wait_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xff57e92d class_match_net +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xff5df8f4 cl_page_list_unmap +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xff764e57 dt_version_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xff99b147 cl_env_unplant +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfffc1f11 lustre_swab_ost_id +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0050632d ldlm_destroy_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x005f0fa2 sptlrpc_sec_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x00cb99c1 RQF_LDLM_INTENT_GETXATTR +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x00d95039 ptlrpcd_decref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x01496a9e ptlrpc_obd_ping +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0154c6f7 ldlm_namespace_new +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x01d6ef7f ldlm_pools_recalc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x02095795 ptlrpc_nrs_policy_unregister +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x02d8cb88 ptl_send_rpc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x033c147f ldlm_namespace_dump +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x03d2d9c7 ptlrpc_set_destroy +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x03f25d6a sptlrpc_cli_wrap_bulk +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x048b59d5 lustre_msg_set_handle +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0515f93b RQF_FLD_QUERY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x05ee1876 ldlm_lock2handle +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x068e95e8 ptlrpc_stop_all_threads +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x06b3942b lustre_swab_lov_user_md_objects +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x06bcef32 sptlrpc_gc_add_sec +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x06fead77 sptlrpc_cli_ctx_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0704b4a6 llog_initiator_connect +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x071fc74a RQF_LDLM_ENQUEUE_LVB +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x07605c7d interval_find +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x086fd336 ldlm_lock_fail_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x08bb2d27 lustre_swab_obd_ioobj +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x095587d0 lustre_msg_buflen +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x09b4c5f3 ptlrpc_queue_wait +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0a3130b0 RMF_MDT_EPOCH +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0a920229 req_capsule_init_area +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0ac252b2 lustre_msg_set_jobid +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0ac54708 lustre_errno_hton +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0bcacb5d RMF_MDS_HSM_USER_ITEM +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0c2d9c43 lustre_swab_lip_header +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0c8ba1d7 ptlrpc_error +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0cc100a4 unlock_res_and_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0cf343dd RQF_LDLM_INTENT_BASIC +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x10f18f20 interval_iterate_reverse +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x11268df0 req_capsule_has_field +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x112ad541 ptlrpc_request_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x115017f6 req_layout_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x11c2b5c8 ptlrpc_set_add_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x11cf12df ldlm_prep_elc_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x12b6f5a3 ptlrpc_connection_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x14012427 ldlm_lock_change_resource +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x14655e06 client_destroy_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x14708afc lustre_swab_mdt_rec_reint +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1483eca4 ldlm_lock_addref_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x14d192db lustre_msg_size +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x15a3e4db RMF_GETINFO_VAL +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x164de55f ldlm_cli_update_pool +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1655b265 ptlrpc_request_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x16b0ea67 ptlrpc_prep_bulk_imp +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x16b8043f ldlm_get_enq_timeout +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x172fb86d lustre_msg_hdr_size +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1747d8b3 ldlm_lockname +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x17950f60 RQF_SEC_CTX +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x17f9b7ef ptlrpc_schedule_difficult_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x18546d0a req_capsule_server_sized_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x19108a0f RQF_OST_DISCONNECT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x191a8704 sptlrpc_lprocfs_cliobd_attach +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x19c08934 RQF_LDLM_INTENT_CREATE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1a6a3ce9 RQF_OST_GET_INFO_LAST_ID +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1a9b76aa RMF_OBD_QUOTACTL +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1abd3258 RMF_SETINFO_VAL +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1ace4b5f RQF_LDLM_BL_CALLBACK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1ad6c330 RMF_EAVALS +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1b17329d ptlrpc_service_health_check +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1b820ad2 req_capsule_server_swab_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1bae0270 interval_iterate +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1be21715 lustre_msg_size_v2 +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1c300d8e lustre_msg_get_slv +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1c8d1fc9 ptlrpc_fail_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1d043548 lustre_msg_set_op_flags +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1dc2051d RMF_SEQ_OPC +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1dcea5d5 ldlm_lock_allow_match_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1de9c288 lustre_swab_layout_intent +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1e557b8b req_capsule_client_dump +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1e6f6d07 __ptlrpc_prep_bulk_page +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1e8e48a4 sptlrpc_flavor_has_bulk +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1eb2a65f RQF_OST_GETATTR +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1ee46b51 lustre_init_msg_v2 +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1ee9eb3c RQF_MDS_QUOTACTL +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2096f5b5 RQF_OST_SET_GRANT_INFO +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x20d6b82c RQF_LDLM_INTENT_QUOTA +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x216f9649 ptlrpcd_alloc_work +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x218a36ce ldlm_cli_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x219391ec RMF_EAVALS_LENS +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x21fb2901 ldlm_pool_set_slv +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x22ec429c req_capsule_server_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x233790b5 RMF_OST_BODY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2348a85d ptlrpc_unregister_service +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x243b6072 ptlrpc_abort_inflight +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x244e5558 lustre_msg_get_version +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x24aafdba RMF_MGS_TARGET_INFO +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2585a629 RMF_SEQ_RANGE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2587513c RQF_LDLM_CP_CALLBACK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x269554ce RQF_LDLM_INTENT_GETATTR +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x26f99d16 RQF_MGS_CONFIG_READ +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2824b6ca ptlrpc_prep_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x285e5b99 lustre_msg_set_conn_cnt +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x29e0869a sptlrpc_get_hash_name +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2a63a472 lustre_swab_ptlrpc_body +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2bc487b0 req_capsule_server_sized_swab_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2c00c60d ptlrpc_sample_next_xid +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2c52360f sptlrpc_cli_unwrap_bulk_write +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2ca92fa8 ldlm_lock_decref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2ccd5b87 ldlm_cli_cancel_list_local +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2d56f168 ptlrpc_pinger_ir_up +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2d798316 RMF_MGS_CONFIG_RES +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2df7a4d4 ldlm_cli_enqueue_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2dfa422e ldlm_flock_completion_ast +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2e4562fe RQF_LLOG_ORIGIN_HANDLE_CREATE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2e4ca396 RQF_LDLM_INTENT_UNLINK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2ecd7515 lustre_msg_check_version +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2f0e4f87 RQF_OST_QUOTACTL +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2f793215 lustre_swab_ost_body +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2fab3539 lustre_swab_ost_lvb_v1 +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2fd2f737 lustre_msg_set_limit +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x300a64f8 client_obd_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x301d4fcd RQF_MDS_READPAGE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x302937e0 RQF_MDS_CONNECT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3060b9c6 sptlrpc_rule_set_expand +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3085ef12 sptlrpc_unregister_policy +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x31838cb4 RMF_IDX_INFO +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3261b862 RQF_OST_SYNC +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3297e01d sptlrpc_req_replace_dead_ctx +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x329c993c ldlm_completion_ast +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x32db5b8d lustre_pack_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x33371e33 lprocfs_wr_evict_client +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x339e8a76 ptlrpc_commit_replies +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x33bb7761 ldlm_typename +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x33f7bb37 ldlm_pool_set_clv +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x347a6e94 ldlm_cli_cancel_list +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x348ddaa1 ldlm_pool_shrink +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x35939a3d lustre_swab_fiemap +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x382440fc __ptlrpc_free_bulk +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3835ab4b RQF_LLOG_ORIGIN_CONNECT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3858fb94 RMF_OBD_STATFS +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x38bcf165 ptlrpc_nrs_policy_register +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x38c01799 RQF_LDLM_CALLBACK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x38dba330 ldlm_pool_set_limit +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x38fce533 lustre_msg_set_versions +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x39f60a5f RMF_OST_ID +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3a03c8cc ldlm_cli_cancel_unused_resource +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3a1e4bcb __lustre_unpack_msg +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3ab90f6e lustre_msg_bufcount +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3ac00716 lustre_swab_hsm_user_state +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3af0dd48 ptlrpc_start_threads +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3b379b5b ptlrpc_unregister_bulk +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3b6b7cba dump_ioo +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3bedb0c7 RMF_LLOGD_CONN_BODY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3c151430 ldlm_lock_allow_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3c63e62b RQF_MDS_REINT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3c8b16ab lustre_swab_ost_lvb +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3ca50f33 RQF_MDS_HSM_CT_REGISTER +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3d4cd00c sec2target_str +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3d7dc5f9 ldlm_pools_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3dc47695 lustre_msg_get_magic +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3dd936d9 ptlrpc_cleanup_client +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3eb99551 do_set_info_async +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3f034caf lustre_msg_get_status +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3f215bf1 ldlm_resource_iterate +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3f29d93d ldlm_cli_enqueue +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3f752e78 RQF_MDS_STATFS +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3f807950 lock_res_and_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x40b080c0 sptlrpc_sec_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x41008cef RQF_LDLM_CANCEL +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x43168488 RQF_MDS_RELEASE_CLOSE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x43705ee4 RQF_LOG_CANCEL +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x43d7efc8 lustre_msg_set_transno +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x44036eda RQF_MDS_GET_INFO +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x440c2a71 RMF_FIEMAP_VAL +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4481591d RQF_OST_SET_INFO_LAST_FID +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x45d05893 lustre_swab_lustre_capa +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x45e30cea lustre_swab_ldlm_intent +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x45efb355 sptlrpc_cli_ctx_wakeup +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x47f5e903 RMF_MDS_HSM_REQUEST +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x498c03c5 lustre_msg_set_last_xid +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4a3a5635 ptlrpcd_add_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4a5a2416 RMF_DLM_REQ +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4d7580d0 lustre_swab_hsm_user_item +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4e1706e5 lustre_msg_buf +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4e30fee5 sptlrpc_conf_client_adapt +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4e696b96 ptlrpcd_queue_work +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4e9de941 ptlrpc_resend +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4eadcc9c ldlm_cancel_resource_local +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4eb03a6f ptlrpcd_destroy_work +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4edc035a ptlrpc_lprocfs_unregister_obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4f766c3b lustre_swab_generic_32s +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4f80cd29 client_connect_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4fbb0cd4 ptlrpc_recover_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x50443f6a ptlrpc_init_client +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x50b2bae0 ptlrpc_resend_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x50dd74f8 RMF_STRING +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x50ffcf32 ptlrpc_connect_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x528cd538 ptlrpc_request_pack +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x52c62150 RMF_RCS +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x53411557 RMF_DLM_REP +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5368e3aa ldlm_namespace_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x53a4a004 bulk_sec_desc_unpack +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x54180297 client_import_del_conn +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x54ae5021 ldlm_lock_addref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x54f03a9b sptlrpc_cli_ctx_expire +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x555eb7fe RQF_MDS_HSM_STATE_SET +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x55f1b667 sptlrpc_get_bulk_checksum +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x561bf790 ptlrpc_activate_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5628826d sptlrpc_gc_del_sec +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x588035b4 RMF_UPDATE_REPLY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x58fa0c71 req_capsule_set_size +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x595ab175 lustre_swab_obd_quotactl +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x596582bf RMF_GETINFO_VALLEN +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5a057439 interval_search +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5a7c9364 sptlrpc_cli_enlarge_reqbuf +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5af0d02a ldlm_lock_dump_handle +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5b375cfd ptlrpc_unpack_req_msg +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5b3cccba ptlrpc_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5b6ba895 lustre_packed_msg_size +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5c6a3a83 RQF_SEQ_QUERY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5ca1b491 lustre_swab_close_data +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5caae213 ptlrpc_next_xid +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5e0b19b1 RMF_CLUUID +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5e21b169 ldlm_destroy_flock_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5e2b7558 lustre_msghdr_get_flags +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5e6f435d RQF_OST_BRW_READ +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5e80f899 RQF_LLOG_ORIGIN_HANDLE_READ_HEADER +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5ec3284d RQF_MDS_HSM_CT_UNREGISTER +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5ef831ee lustre_msg_get_handle +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5f96ccdd ptlrpc_connection_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5fc9a455 RMF_CLOSE_DATA +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6042bc15 RQF_MDS_REINT_RENAME +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x604e2505 RMF_SWAP_LAYOUTS +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x607ec932 lustre_msg_set_buflen +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x60cd26ad RQF_MDS_REINT_CREATE_SYM +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6111e9e9 ldlm_pool_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x61405708 ldlm_resource_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x61646e1b RQF_MDS_SWAP_LAYOUTS +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x618ad203 RQF_OST_GET_INFO_LAST_FID +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x61b2380e ldlm_pool_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x62aaae3f RQF_MDS_HSM_REQUEST +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6315dd4c RMF_LLOGD_BODY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6352a62d ldlm_get_ref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x647b6e48 lustre_swab_ldlm_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x653723dc RMF_LOGCOOKIES +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6559f38b ptlrpc_request_bufs_pack +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x657b00b7 ptlrpc_init_rq_pool +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x66ebe539 sptlrpc_svc_ctx_invalidate +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x67519400 req_capsule_get_size +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x67e92784 lustre_pack_reply_flags +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x683243bf ptlrpc_set_next_timeout +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x685eeaba RMF_DLM_GL_DESC +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x68cb2541 interval_is_overlapped +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x68f49e5e ptlrpc_expired_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6912990a RQF_OST_QUOTACHECK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x696ba811 lustre_msg_get_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x69c31f2a ldlm_namespace_foreach +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x69c9f04d RQF_MDS_REINT_LINK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x69edaabb ldlm_prep_enqueue_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6a3785c9 RMF_EADATA +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6c57bbf6 dump_obdo +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6d72828c sptlrpc_conf_log_update_end +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6d7931cc RQF_UPDATE_OBJ +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6d9c7c8b ldlm_resource_unlink_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6ed20499 ldlm_revalidate_lock_handle +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6efa82b0 RQF_MGS_TARGET_REG +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6f418d85 ptlrpc_deactivate_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6f5bfde7 ldlm_resource_putref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6f6dc736 lustre_swab_mdt_remote_perm +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6fb92092 sptlrpc_flavor2name_bulk +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6fc07658 ptlrpc_lprocfs_brw +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x703538e4 lustre_swab_hsm_current_action +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x70977870 ptlrpc_invalidate_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x71c21058 ptlrpc_at_set_req_timeout +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x723d43b6 sptlrpc_rule_set_dump +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x725a892c RQF_MDS_REINT_OPEN +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x73e4e5c9 ptlrpc_add_rqs_to_pool +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x744b2a98 ldlm_lock_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x746664b8 req_capsule_server_pack +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x74840056 lustre_msg_set_status +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x75a2c40d ldlm_put_ref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x76b728e5 lustre_swab_update_buf +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x777d8ef5 llog_client_ops +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x77840c82 sptlrpc_rule_set_choose +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x779ddb1f ldlm_namespace_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x78bf9136 lustre_swab_ldlm_lock_desc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7913db0e ldlm_pool_get_clv +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7952e926 ldlm_replay_locks +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x799c34ff client_import_find_conn +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7a832f10 RMF_CONN +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7ad57d70 ldlm_pool_get_lvf +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7b158da4 lustre_swab_ldlm_request +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7bbf8001 RMF_MDT_BODY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7be0a0dc req_capsule_client_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7c4c6107 RQF_LDLM_CONVERT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7c98335c ptlrpc_hpreq_handler +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7d1ecd7f RQF_LDLM_INTENT_LAYOUT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7d1f1064 sptlrpc_gc_add_ctx +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7d41a8b9 RQF_QUOTA_DQACQ +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7dc0e7cd RMF_QUOTA_BODY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7dfb3c18 lustre_msg_clear_flags +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7f4925d8 interval_expand +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7f4c99b1 ldlm_expired_completion_wait +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7f5a1cc7 lustre_msg_set_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7f6d2357 lustre_msg_is_v1 +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7fe558b0 target_print_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8028683a ptlrpc_unregister_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x80a9e8c3 lustre_msg_get_last_xid +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x80e8c3f6 ldlm_lock2desc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x80ecb4e3 RMF_MDS_HSM_CURRENT_ACTION +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x817d7f1f lustre_msg_add_flags +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x81e51b62 ldlm_pool_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x826d3c4f RQF_LDLM_GL_CALLBACK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x837efb00 RMF_NAME +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x84525528 req_capsule_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x84c75e49 ptlrpc_pinger_sending_on_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x85135801 RMF_DLM_LVB +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8547b539 sptlrpc_cli_ctx_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x85a9e0d8 RMF_FID +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x85eecf67 sptlrpc_get_hash_alg +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x85eee83e req_capsule_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x863db6eb RMF_HSM_USER_STATE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x86fa8c3b ldlm_cli_convert +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x87082d00 ptlrpc_register_service +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8760beaf lustre_swab_ldlm_policy_data +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x876c2551 RMF_GETINFO_KEY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x87bf7b3c sptlrpc_get_next_secid +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x881637e3 ptlrpc_restart_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8872f3d2 RMF_SETINFO_KEY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x88fff52d RMF_CAPA2 +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x896ae463 ptlrpc_init_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x899c3646 ptlrpc_req_set_repsize +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x89f9edf7 RQF_MDS_REINT_SETXATTR +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8a157457 ldlm_lock_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8a1ea476 lustre_swab_hsm_state_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8a257736 RQF_MDS_HSM_STATE_GET +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8a4345b1 ptlrpc_set_add_cb +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8ac440fa ptlrpc_uuid_to_connection +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8af81d5e ldlm_lock_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8b854254 lustre_swab_mgs_config_res +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8cb71d4b RQF_MDS_REINT_CREATE_SLAVE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8d28e52e ptlrpc_register_bulk +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8d77ea75 lustre_msg_set_flags +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8da3fca7 lustre_msg_add_version +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8e19e6a0 ldlm_extent_shift_kms +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8e9abe4d RMF_GENERIC_DATA +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8f0aceac RQF_MDS_HSM_ACTION +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8fe86a88 ldlm_enqueue_pack +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8fec0451 lustre_msg_get_limit +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x919c4ce3 RMF_OBD_ID +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x91cf58d3 RQF_MDS_PIN +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x92071901 req_capsule_client_swab_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9228392f lustre_swab_mdt_body +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x927d4d25 client_obd_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x937b1ee0 lustre_swab_mdt_ioepoch +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x93a3d73f req_capsule_client_sized_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x95211bdf ldlm_pool_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9553c633 RQF_LDLM_INTENT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x95d08f0c lustre_swab_mgs_target_info +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x95e8cb89 ptlrpc_buf_set_swabbed +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9660ace0 RMF_FLD_MDFLD +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x967bfd52 RQF_OBD_PING +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x96f2af1a sptlrpc_target_sec_part +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9798f2f1 RQF_MDS_GETATTR +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x980fcfdc ptlrpc_connection_addref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9845e88a ldlm_pool_del +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x98f3c662 ldlm_lock_downgrade +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9999cf7a dump_ost_body +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9a258886 RQF_MDS_GETSTATUS +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9a6f2f6d lustre_msg_set_opc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9a8cc1d8 ldlm_lock_convert +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9b88f6ce RMF_NIOBUF_REMOTE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9b9453d0 ldlm_resource_foreach +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9bb5198b RQF_MDS_CLOSE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9d7ea314 sptlrpc_pack_user_desc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9d8b235a ptlrpc_unpack_rep_msg +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9e989ab8 req_capsule_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9eb262eb ptlrpc_send_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9fb088f1 lustre_swab_lov_mds_md +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa0c179ee ptlrpc_buf_need_swab +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa10f0d3d RMF_UPDATE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa11becac ptlrpc_request_set_replen +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa163f4c3 dump_rniobuf +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa2244636 RQF_MDS_GETATTR_NAME +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa22c0086 ldlm_error2errno +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa22c8385 ptlrpc_send_error +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa3690a70 ldlm_namespace_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa3d2a6ee RMF_CAPA1 +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa47787ef RMF_PTLRPC_BODY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa4a2d089 RQF_OST_PUNCH +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa4bea5ef lustre_swab_lmv_user_md +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa4d78b4c ldlm_init_flock_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa5458dad ldlm_lock_decref_and_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa5880075 ldlm_errno2error +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa66888dd ptlrpcd_add_rqset +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa6c436ca RQF_MDS_WRITEPAGE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa7d55cc3 RQF_MDS_REINT_CREATE_RMT_ACL +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa7e360b1 RMF_OBD_IOOBJ +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa7ec567d RMF_CONNECT_DATA +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa9704f80 lustre_msg_get_last_committed +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa97064af ptlrpc_save_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa9c4658e lustre_swab_lov_user_md_v3 +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa9edf09d RQF_OBD_IDX_READ +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xaa757ddc ptlrpcd_wake +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xacd6a7d7 lustre_swab_ost_last_id +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xaddc3979 lustre_swab_lustre_capa_key +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xae9de7f4 ptlrpc_add_timeout_client +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xaf4e9658 RQF_MDS_SYNC +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xaf50a0d6 RMF_HSM_STATE_SET +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xafcc1be4 _ldlm_lock_debug +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb0751fa4 RQF_LLOG_ORIGIN_HANDLE_DESTROY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb0ccfab2 ldlm_lock_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb1b43d8a dump_rcs +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb27c2374 lustre_msg_get_jobid +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb291473d lustre_msg_early_size +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb2df23b1 ptlrpc_pinger_add_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb40e35ad ptlrpc_req_finished +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb4a7ecf3 lustre_msg_add_op_flags +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb512ebc2 sptlrpc_parse_flavor +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb61cb95a RQF_MDS_GETXATTR +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb65b407e ldlm_glimpse_ast +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb68476df interval_erase +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb6aafd03 RQF_MDS_DONE_WRITING +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb7b38189 RMF_MDT_MD +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb7fa3cc8 RMF_LLOG_LOG_HDR +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb87c4f51 lustre_pack_request +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb8dc4329 ldlm_namespace_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb903634e RQF_OST_CONNECT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb97e7e32 req_capsule_server_dump +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb9b631cf lustre_swab_mgs_config_body +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbaa76097 lustre_msg_string +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbbe6d497 ldlm_completion_ast_async +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbc1370dc lustre_shrink_msg +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbcf21916 sptlrpc_sec_destroy +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbd83bc44 RQF_OBD_SET_INFO +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbe47bc7e ping_evictor_start +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbed8297b ldlm_lock_fail_match_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbef769cc RQF_CONNECT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbf3e45a8 sptlrpc_import_sec_ref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbf40f973 client_import_add_conn +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbf98b86f RQF_MDS_QUOTACHECK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbffd4313 RQF_OST_BRW_WRITE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc06c4670 lustre_msg_get_versions +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc0867da7 RMF_REC_REINT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc0cdf55e RMF_MGS_SEND_PARAM +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc154aee5 req_capsule_field_present +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc20e8fb1 lprocfs_wr_pinger_recov +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc2986d28 lustre_swab_ldlm_res_id +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc2b1af57 RQF_MGS_SET_INFO +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc2be922a RMF_SYMTGT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc3bbdfde ldlm_pool_get_limit +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc515d58e ptlrpc_reconnect_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc559a634 RMF_LAYOUT_INTENT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc60a60e1 RQF_OST_STATFS +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc694be4b RQF_LLOG_ORIGIN_HANDLE_PREV_BLOCK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc763fabc sptlrpc_process_config +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc78a5464 ptlrpc_free_rq_pool +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc79b9c67 ldlm_pools_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc7ca8257 RQF_MDS_REINT_SETATTR +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc7e47564 ptlrpc_interrupted_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc86a8385 ptlrpc_set_import_active +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc8f586a9 ptlrpc_connection_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xca5a81ec ptlrpc_pinger_ir_down +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xcb16107d ptlrpc_set_wait +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xcb2cc0cf lustre_swab_lquota_lvb +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xcb2ceaff sptlrpc_secflags2str +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xcd51e7b6 lustre_pack_reply_v2 +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xcd5a7921 ldlm_cli_enqueue_local +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xcdb078e9 lprocfs_wr_ping +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xce1a689b sptlrpc_enc_pool_add_user +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xce327e5d lprocfs_wr_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xce86066d lustre_msg_set_slv +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xcec513c9 RQF_MDS_UNPIN +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xced015be sptlrpc_rule_set_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xcf3fe5d8 ptlrpc_wake_delayed +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xcf9963db lustre_msg_get_op_flags +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xcf9aab6a RQF_MDS_DISCONNECT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd0a59356 _debug_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd0e43b7d ptlrpc_check_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd0f903ed target_pack_pool_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd148a600 req_capsule_filled_sizes +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd2983334 lustre_swab_swap_layouts +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd2b731a4 ldlm_cli_cancel_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd2e0d4eb lustre_msg_get_opc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd377847f ptlrpc_req_xid +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd3b6a80f sptlrpc_enc_pool_put_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd3dae408 ldlm_it2str +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd67a5d7b lustre_swab_update_reply_buf +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd69e0a27 RQF_MDS_IS_SUBDIR +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd6c3ebfb RMF_FIEMAP_KEY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd6d45553 sptlrpc_enc_pool_get_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd752b1a1 ptlrpc_request_alloc_pack +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd7910326 lustre_swab_obd_statfs +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd8b91b3e lustre_swab_lov_desc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd8cb057c ptlrpc_request_addref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd8f06300 RQF_MDS_HSM_PROGRESS +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd9561861 RQF_LDLM_INTENT_OPEN +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xdac6022d ptlrpc_set_add_new_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xdafa0d42 sptlrpc_import_flush_my_ctx +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xdb1fb0a2 RQF_MDS_REINT_CREATE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xdb435bb3 ptlrpc_request_alloc_pool +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xdb9d5a6a lustre_swab_niobuf_remote +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xdd0ffb04 sptlrpc_flavor2name +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xdd30d7bf RMF_ACL +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xdd62901a ptlrpc_mark_interrupted +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xddc40a85 lustre_msg_get_flags +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xde12d36b RMF_MDS_HSM_ARCHIVE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xde555d70 sptlrpc_enc_pool_del_user +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xdee87192 sptlrpc_conf_log_update_begin +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xdf4661e8 client_disconnect_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xdf701ae7 lustre_swab_fid2path +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xdfad5e94 ptlrpc_retain_replayable_request +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe0355eac ptlrpc_cleanup_imp +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe0cc694c RQF_LLOG_ORIGIN_HANDLE_NEXT_BLOCK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe139b473 ldlm_reprocess_all_ns +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe25cb0c9 ptlrpc_request_committed +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe3cd84e5 ptlrpc_replay_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe40e0a50 lustre_msg_get_transno +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe443f176 sptlrpc_register_policy +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe51c5418 lustre_free_reply_state +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe5459ffd target_send_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe57bd972 sptlrpc_current_user_desc_size +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe5e8169b lustre_errno_ntoh +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe643998e RQF_OST_SETATTR +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe6f0dc96 RQF_OST_CREATE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe7062b5f RMF_U32 +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe7512278 ptlrpcd_addref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe781bb91 ldlm_blocking_ast +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe85b6da3 lustre_swab_obdo +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe88d1459 ptlrpc_lprocfs_register_obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xeabac4fc sptlrpc_rule_set_merge +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xeb7f247f ptlrpc_prep_req_pool +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xebb64e68 req_layout_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xec226f66 ping_evictor_stop +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xec939a00 RQF_MDS_REINT_UNLINK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xecace5c1 RQF_OST_GET_INFO_GENERIC +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xed0e951b req_capsule_shrink +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xed1c10d6 ptlrpc_connection_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xedcb740d sptlrpc_name2flavor_base +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xef1aeca9 RMF_FLD_OPC +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf0241d6e lustre_swab_hsm_progress_kernel +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf0d52b5f ptlrpc_pinger_suppress_pings +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf1300275 _sptlrpc_enlarge_msg_inplace +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf20e08db ptlrpc_pinger_del_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf277c125 RQF_OST_GET_INFO_FIEMAP +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf27d49dc sptlrpc_target_choose_flavor +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf337a89f sptlrpc_import_flush_all_ctx +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf35f132b lustre_swab_ldlm_resource_desc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf3d44370 RQF_OST_DESTROY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf43540b9 lustre_swab_mgs_nidtbl_entry +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf44e38e8 req_capsule_extend +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf45085e1 sptlrpc_conf_log_stop +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf477f50e ldlm_cli_cancel_unused +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf4c11a7e ldlm_pool_get_slv +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf50bc432 lprocfs_rd_pinger_recov +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf5366cea ptlrpc_req_finished_with_imp_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf55c033b RMF_MGS_CONFIG_BODY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf584a16b sptlrpc_part2name +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf596e9ae sptlrpc_conf_log_start +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf607fc23 sptlrpc_flavor2name_base +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf617ab8a lustre_msg_get_conn_cnt +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf67bcc23 sptlrpc_target_export_check +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf697b756 ldlm_dump_all_namespaces +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf7408f84 lustre_swab_hsm_request +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf7ba40c0 RMF_MDS_HSM_PROGRESS +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf81a5b34 ldlm_init_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf8293e73 ptlrpc_disconnect_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf85cb27e sptlrpc_parse_rule +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf870fed9 RQF_LDLM_GL_DESC_CALLBACK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf8f2ed6c req_capsule_server_grow +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf9051bd6 RQF_QC_CALLBACK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf9255d03 sptlrpc_cli_unwrap_bulk_read +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf94e41e0 deuuidify +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf973aa93 lustre_swab_lov_user_md_v1 +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf988ae48 __ldlm_handle2lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf9ee11e2 lustre_msg_set_last_committed +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf9f72dfc RMF_TGTUUID +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xfa2e3b24 ldlm_register_intent +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xfa51688d interval_insert +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xfb444a98 ptlrpc_prep_fcset +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xfb5a978c sptlrpc_target_update_exp_flavor +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xfc2fa83f ptlrpc_del_timeout_client +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xfd148bf8 RMF_LDLM_INTENT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xfec7445a req_capsule_other_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xff02a0e9 ldlm_lock_set_data +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xff2b5341 ptlrpc_prep_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xff340410 ldlm_blocking_ast_nocheck +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xffc807e8 sptlrpc_unpack_user_desc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xffe29c3f RQF_LDLM_ENQUEUE +EXPORT_SYMBOL drivers/staging/media/cxd2099/cxd2099 0xf9f9b293 cxd2099_attach +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x0029c388 rtllib_wx_get_rts +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x0092ec44 rtllib_softmac_stop_protocol +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x025b1a7e rtllib_act_scanning +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x04adadae rtllib_wx_set_rate +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x06b030a6 rtllib_DisableIntelPromiscuousMode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x1382eb3c rtllib_wx_set_gen_ie +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x159b2480 rtllib_wx_get_encode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x18664c83 rtllib_wx_get_rate +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x1f4b600e RemovePeerTS +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x209d6223 rtllib_reset_queue +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x2554aedd alloc_rtllib +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x2b92f511 free_rtllib +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x338f69ea rtllib_stop_send_beacons +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x356beed2 rtllib_EnableIntelPromiscuousMode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x378cfedf dot11d_init +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x38090df7 rtllib_wx_set_encode_ext +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x4361f05b rtllib_stop_scan +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x4943089b rtllib_wx_get_freq +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x51d0b755 rtllib_rx +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x5270d760 rtllib_start_send_beacons +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x5588e9b6 rtllib_wx_set_freq +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x6c306915 rtllib_wpa_supplicant_ioctl +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x6cf3db7d rtllib_legal_channel +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x710b13e1 rtllib_wx_get_wap +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x7b144962 rtllib_softmac_start_protocol +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x9062ac23 rtllib_wx_get_essid +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x92c6061b rtllib_wx_get_name +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x96fd1e64 rtllib_get_beacon +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x9861f22d rtllib_xmit +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xa7a98cd9 rtllib_wx_set_rts +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xa885cab9 rtllib_wx_get_mode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xa8f1ef5a rtllib_wx_set_power +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xaa26c2db Dot11d_Channelmap +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xb44e2b94 rtllib_wx_set_mode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xbe1420f2 rt_global_debug_component +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xc8a57a5b rtllib_ps_tx_ack +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xc9cc3abc rtllib_wx_get_scan +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xc9d4e1f7 rtllib_sta_ps_send_null_frame +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xca73249f rtllib_MgntDisconnect +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xd507db91 rtllib_wx_set_scan +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xd5a13bb7 rtllib_wx_set_essid +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xd68b5cb0 rtllib_wx_set_wap +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xdb360724 notify_wx_assoc_event +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xde73b61b HT_update_self_and_peer_setting +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xded3fdef rtllib_start_scan_syncro +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xdf78f620 rtllib_wlan_frequencies +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xe2bcb04a rtllib_wx_set_encode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xe52c0249 rtllib_stop_scan_syncro +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xed3278ce rtllib_wx_get_power +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xf360c28a rtllib_wx_set_rawtx +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xf48b02aa rtllib_wx_set_mlme +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xfe592e3c rtllib_wx_set_auth +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x0146ac18 ieee80211_get_beacon_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x0297c554 IsLegalChannel +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x0e761e5e ieee80211_wx_set_rts_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x0f099f61 ieee80211_is_54g_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x14343c85 ieee80211_wx_set_scan_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x15d60429 ieee80211_wx_get_essid_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x167d80ad ieee80211_start_send_beacons_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x1c348759 ieee80211_softmac_scan_syncro_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x1cdb23b9 ieee80211_softmac_xmit_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x1dede1ab ieee80211_softmac_stop_protocol_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x1fcd037f ieee80211_wx_set_gen_ie_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x22b1d584 ieee80211_wx_set_rate_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x2b6fed91 Dot11d_Init +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x2d4499b3 ieee80211_wx_get_rts_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x2ed03172 ieee80211_wx_set_mode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x383adc97 ieee80211_reset_queue_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x38994660 ieee80211_wx_get_name_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x3b1d967e ieee80211_rx_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x416093f2 ieee80211_wx_set_encode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x4678b3f9 ieee80211_txb_free_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x486f8054 DOT11D_ScanComplete +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x4a6ceee4 ieee80211_stop_send_beacons_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x4b0047e1 ieee80211_wx_set_rawtx_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x5c4f8f2e ieee80211_wx_get_encode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x61ea895d ieee80211_is_shortslot_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x661a3ca6 Dot11d_Reset +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x672e3cfd ieee80211_wx_get_freq_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x73d9ddc2 ieee80211_start_scan_syncro_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x75c5694c DOT11D_GetMaxTxPwrInDbm +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x7fe34a2a ieee80211_wx_set_power_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x8ddabc39 ieee80211_wx_set_essid_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x92b57e4f ieee80211_send_probe_requests_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x9464e782 notify_wx_assoc_event_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x95441b9b ieee80211_wx_set_encode_ext_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x9a108439 ieee80211_disassociate_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x9a220f8d ieee80211_softmac_start_protocol_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x9de0131a ieee80211_wx_get_encode_ext_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xa01220ae ieee80211_rx_mgt_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xa2463aaf HTUpdateSelfAndPeerSetting +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xa6b42d94 Dot11d_UpdateCountryIe +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xa6c11e89 ieee80211_wx_set_mlme_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xaccb674f ieee80211_ps_tx_ack_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xad9ddf65 SendDisassociation_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xb3408d75 ieee80211_wake_queue_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xb9b690bf ieee80211_wx_set_freq_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xc370a43e ieee80211_wlan_frequencies_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xcaac90c7 ieee80211_wx_get_scan_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xccc456f2 ieee80211_wx_get_wap_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xdd01bf62 ieee80211_wx_set_auth_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xdde0cacf ieee80211_stop_scan_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xe7eff23a ieee80211_wx_get_power_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xebe0b79d ieee80211_wpa_supplicant_ioctl_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xecd6e2b6 ToLegalChannel +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xeff6d11f ieee80211_wx_set_wap_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xf0489d30 ieee80211_wx_get_mode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xf2ae6915 ieee80211_stop_queue_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xfc2979c6 ieee80211_wx_get_rate_rsl +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x0813398b iscsit_handle_logout_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x13eef4ad iscsit_build_reject +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x1d685925 iscsit_register_transport +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x1f37e6fd iscsit_release_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x24560aa8 iscsit_build_logout_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x2726875f iscsit_process_nop_out +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x35fd3be7 iscsit_check_dataout_payload +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x385e8111 iscsit_setup_text_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x48712ed2 iscsit_find_cmd_from_itt +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x5ecde76c iscsit_logout_post_handler +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x638353a5 iscsit_unregister_transport +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x7255a7c4 iscsit_process_text_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x7dab30a4 iscsit_setup_scsi_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x87218465 iscsit_setup_nop_out +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x88e5cc05 iscsit_tmr_post_handler +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x89d219ac iscsit_sequence_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x9288b4b8 iscsit_build_text_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xa279939d iscsit_set_unsoliticed_dataout +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xba40dac3 iscsit_build_rsp_pdu +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xbf562cff iscsit_stop_dataout_timer +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xc6b417cf iscsit_process_scsi_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xd63b8d91 iscsit_increment_maxcmdsn +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xdcb0ac16 iscsit_build_nopin_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xdda52e85 iscsit_handle_task_mgt_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xec890f5c iscsit_build_task_mgt_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xf38c3f46 iscsit_cause_connection_reinstatement +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xf6f55410 iscsit_check_dataout_hdr +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xfee46476 iscsit_allocate_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x02de3b18 transport_set_vpd_ident +EXPORT_SYMBOL drivers/target/target_core_mod 0x18d65ec7 transport_init_se_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x1d06d0a1 transport_handle_cdb_direct +EXPORT_SYMBOL drivers/target/target_core_mod 0x1fa2fc7c sbc_dif_verify +EXPORT_SYMBOL drivers/target/target_core_mod 0x20794b28 spc_emulate_report_luns +EXPORT_SYMBOL drivers/target/target_core_mod 0x253a2914 transport_generic_free_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x27d360f1 transport_wait_for_tasks +EXPORT_SYMBOL drivers/target/target_core_mod 0x29587026 target_sess_cmd_list_set_waiting +EXPORT_SYMBOL drivers/target/target_core_mod 0x2ba17856 target_put_sess_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x2fc37274 target_execute_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x31f1fcdb sbc_get_device_type +EXPORT_SYMBOL drivers/target/target_core_mod 0x45555660 target_wait_for_sess_cmds +EXPORT_SYMBOL drivers/target/target_core_mod 0x45952c44 core_tpg_deregister +EXPORT_SYMBOL drivers/target/target_core_mod 0x4f223609 transport_init_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x4fa5e380 target_depend_item +EXPORT_SYMBOL drivers/target/target_core_mod 0x51e75d82 target_submit_cmd_map_sgls +EXPORT_SYMBOL drivers/target/target_core_mod 0x55287776 core_tpg_check_initiator_node_acl +EXPORT_SYMBOL drivers/target/target_core_mod 0x552e5666 transport_send_check_condition_and_sense +EXPORT_SYMBOL drivers/target/target_core_mod 0x57ac28f4 core_tpg_set_initiator_node_queue_depth +EXPORT_SYMBOL drivers/target/target_core_mod 0x5fea7e6b spc_emulate_inquiry_std +EXPORT_SYMBOL drivers/target/target_core_mod 0x66994ccd target_submit_tmr +EXPORT_SYMBOL drivers/target/target_core_mod 0x673a2d78 __transport_register_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x68eefbcf target_complete_cmd_with_length +EXPORT_SYMBOL drivers/target/target_core_mod 0x70c43215 target_get_sess_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x7171e92b sbc_dif_copy_prot +EXPORT_SYMBOL drivers/target/target_core_mod 0x7445f390 passthrough_parse_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0x74a6af11 transport_register_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x7bec5322 core_alua_check_nonop_delay +EXPORT_SYMBOL drivers/target/target_core_mod 0x7dbada9d transport_set_vpd_ident_type +EXPORT_SYMBOL drivers/target/target_core_mod 0x7e734f2f target_setup_cmd_from_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0x7e914538 passthrough_attrib_attrs +EXPORT_SYMBOL drivers/target/target_core_mod 0x84b7c878 transport_generic_new_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x85aa880c transport_set_vpd_assoc +EXPORT_SYMBOL drivers/target/target_core_mod 0x8635e0f9 core_tmr_alloc_req +EXPORT_SYMBOL drivers/target/target_core_mod 0x8b2ae2ee spc_emulate_evpd_83 +EXPORT_SYMBOL drivers/target/target_core_mod 0x8dd42ed0 transport_alloc_session_tags +EXPORT_SYMBOL drivers/target/target_core_mod 0x91eda28a sbc_get_write_same_sectors +EXPORT_SYMBOL drivers/target/target_core_mod 0x979814f6 target_nacl_find_deve +EXPORT_SYMBOL drivers/target/target_core_mod 0x9955a771 core_tpg_register +EXPORT_SYMBOL drivers/target/target_core_mod 0x9a133a87 target_undepend_item +EXPORT_SYMBOL drivers/target/target_core_mod 0x9a8f9c31 transport_kunmap_data_sg +EXPORT_SYMBOL drivers/target/target_core_mod 0x9b3152a2 transport_lookup_tmr_lun +EXPORT_SYMBOL drivers/target/target_core_mod 0xa773cad1 transport_generic_request_failure +EXPORT_SYMBOL drivers/target/target_core_mod 0xaa217b67 transport_deregister_session +EXPORT_SYMBOL drivers/target/target_core_mod 0xb45476dc sbc_parse_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0xb9c9918b transport_init_session_tags +EXPORT_SYMBOL drivers/target/target_core_mod 0xbc983cb1 target_lun_is_rdonly +EXPORT_SYMBOL drivers/target/target_core_mod 0xbed6657c target_put_session +EXPORT_SYMBOL drivers/target/target_core_mod 0xc24292a4 transport_check_aborted_status +EXPORT_SYMBOL drivers/target/target_core_mod 0xc4b136df transport_backend_register +EXPORT_SYMBOL drivers/target/target_core_mod 0xc88e117d target_complete_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xcd079c60 sbc_attrib_attrs +EXPORT_SYMBOL drivers/target/target_core_mod 0xcf1dafb3 target_submit_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xd02911e1 target_register_template +EXPORT_SYMBOL drivers/target/target_core_mod 0xd66735a1 transport_free_session +EXPORT_SYMBOL drivers/target/target_core_mod 0xdddede47 target_get_session +EXPORT_SYMBOL drivers/target/target_core_mod 0xdedadcf9 transport_deregister_session_configfs +EXPORT_SYMBOL drivers/target/target_core_mod 0xdf48d9be transport_generic_handle_tmr +EXPORT_SYMBOL drivers/target/target_core_mod 0xe4e8a63a core_tpg_set_initiator_node_tag +EXPORT_SYMBOL drivers/target/target_core_mod 0xe5594539 target_unregister_template +EXPORT_SYMBOL drivers/target/target_core_mod 0xe7e88143 transport_lookup_cmd_lun +EXPORT_SYMBOL drivers/target/target_core_mod 0xefeb8770 target_show_dynamic_sessions +EXPORT_SYMBOL drivers/target/target_core_mod 0xf01621c7 transport_set_vpd_proto_id +EXPORT_SYMBOL drivers/target/target_core_mod 0xf51f49e0 transport_kmap_data_sg +EXPORT_SYMBOL drivers/target/target_core_mod 0xf988a159 core_tpg_get_initiator_node_acl +EXPORT_SYMBOL drivers/target/target_core_mod 0xf9f33417 spc_parse_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0xfb277975 target_backend_unregister +EXPORT_SYMBOL drivers/usb/class/cdc-wdm 0xfa27302f usb_cdc_wdm_register +EXPORT_SYMBOL drivers/usb/gadget/function/usb_f_uvc 0x92e9ebac uvc_set_trace_param +EXPORT_SYMBOL drivers/usb/gadget/libcomposite 0x443c0f29 usb_os_desc_prepare_interf_dir +EXPORT_SYMBOL drivers/usb/host/sl811-hcd 0x32e51abb sl811h_driver +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x006d02ec usb_wwan_write +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x03686cdf usb_wwan_write_room +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x14192d00 usb_wwan_tiocmget +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x3a84a64b usb_wwan_ioctl +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x44567f3b usb_wwan_suspend +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x90435eb4 usb_wwan_close +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x9758e7ce usb_wwan_open +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xbefe5da0 usb_wwan_tiocmset +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xcc0386f3 usb_wwan_port_remove +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xd01ba0a4 usb_wwan_chars_in_buffer +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xe4ffbb94 usb_wwan_dtr_rts +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xf433f3be usb_wwan_resume +EXPORT_SYMBOL drivers/usb/serial/usbserial 0x03b30648 usb_serial_resume +EXPORT_SYMBOL drivers/usb/serial/usbserial 0x4a3a0eda usb_serial_suspend +EXPORT_SYMBOL drivers/vhost/vringh 0x0fd987f7 vringh_abandon_user +EXPORT_SYMBOL drivers/vhost/vringh 0x14397bb5 vringh_notify_disable_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x32da6f89 vringh_notify_enable_user +EXPORT_SYMBOL drivers/vhost/vringh 0x39c9d7a5 vringh_complete_multi_user +EXPORT_SYMBOL drivers/vhost/vringh 0x3b304ebb vringh_iov_push_user +EXPORT_SYMBOL drivers/vhost/vringh 0x3c71c418 vringh_getdesc_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x4311cd91 vringh_iov_pull_user +EXPORT_SYMBOL drivers/vhost/vringh 0x4f384f8b vringh_need_notify_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x58abf4ed vringh_init_user +EXPORT_SYMBOL drivers/vhost/vringh 0x5fedea44 vringh_getdesc_user +EXPORT_SYMBOL drivers/vhost/vringh 0x6432894b vringh_init_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x8d080d03 vringh_need_notify_user +EXPORT_SYMBOL drivers/vhost/vringh 0x95e62337 vringh_abandon_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x97fa07e9 vringh_iov_push_kern +EXPORT_SYMBOL drivers/vhost/vringh 0xb4b63575 vringh_notify_enable_kern +EXPORT_SYMBOL drivers/vhost/vringh 0xc578f0f7 vringh_complete_user +EXPORT_SYMBOL drivers/vhost/vringh 0xd355e031 vringh_complete_kern +EXPORT_SYMBOL drivers/vhost/vringh 0xd609393d vringh_notify_disable_user +EXPORT_SYMBOL drivers/vhost/vringh 0xde804bb9 vringh_iov_pull_kern +EXPORT_SYMBOL drivers/video/backlight/lcd 0x097ef586 lcd_device_unregister +EXPORT_SYMBOL drivers/video/backlight/lcd 0x6dcf6568 devm_lcd_device_register +EXPORT_SYMBOL drivers/video/backlight/lcd 0x7ab69a1b devm_lcd_device_unregister +EXPORT_SYMBOL drivers/video/backlight/lcd 0xa5ec6de7 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 0x2822e9df svga_get_tilemax +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x4ab38ef2 svga_set_default_crt_regs +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x52ad5fe9 svga_settile +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x6e4adb1e svga_check_timings +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x80f24d95 svga_wcrt_multi +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x8de63fb4 svga_set_timings +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xaf0ede64 svga_tilecopy +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xc3a96d22 svga_tilefill +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xc658e4a7 svga_tilecursor +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xd1429fca svga_wseq_multi +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xd22ca511 svga_set_default_atc_regs +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xe28d2a49 svga_set_default_gfx_regs +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xe4c62d69 svga_get_caps +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xef774f5d svga_compute_pll +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xf2db5956 svga_match_format +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xf762d682 svga_tileblit +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 0xb39f68d1 cyber2000fb_enable_extregs +EXPORT_SYMBOL drivers/video/fbdev/cyber2000fb 0xb482df7d cyber2000fb_attach +EXPORT_SYMBOL drivers/video/fbdev/matrox/g450_pll 0xaf71da13 g450_mnp2f +EXPORT_SYMBOL drivers/video/fbdev/matrox/g450_pll 0xb85097c9 matroxfb_g450_setpll_cond +EXPORT_SYMBOL drivers/video/fbdev/matrox/g450_pll 0xfa5e0aa8 matroxfb_g450_setclk +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_DAC1064 0x1837fcbb matrox_G100 +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_DAC1064 0x2fb1bafa matrox_mystique +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_DAC1064 0xc6249596 DAC1064_global_restore +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_DAC1064 0xc7f7511c DAC1064_global_init +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_Ti3026 0x963b5255 matrox_millennium +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_accel 0x79055e5e matrox_cfbX_init +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_base 0x34b3769f matroxfb_unregister_driver +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_base 0x903ba0fb matroxfb_enable_irq +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_base 0xdb69879b matroxfb_register_driver +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_base 0xf9359f42 matroxfb_wait_for_sync +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_g450 0x57af89f0 matroxfb_g450_shutdown +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_g450 0xa4950ee8 matroxfb_g450_connect +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0x25cf8049 matroxfb_PLL_calcclock +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0x640d321f matroxfb_DAC_out +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0x6d0b3d4d matroxfb_vgaHWrestore +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0x72c6c0e5 matroxfb_read_pins +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0x96c8d7c2 matroxfb_DAC_in +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0xcdc90c64 matroxfb_var2my +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0xd0d45ecc matroxfb_vgaHWinit +EXPORT_SYMBOL drivers/video/fbdev/mb862xx/mb862xxfb 0xb1aad762 mb862xxfb_init_accel +EXPORT_SYMBOL drivers/video/fbdev/sis/sisfb 0x3037658e sis_malloc +EXPORT_SYMBOL drivers/video/fbdev/sis/sisfb 0x454a3cf0 sis_free +EXPORT_SYMBOL drivers/video/vgastate 0x686de290 restore_vga +EXPORT_SYMBOL drivers/video/vgastate 0xe7a2620e save_vga +EXPORT_SYMBOL drivers/virt/fsl_hypervisor 0x45fd1882 fsl_hv_failover_unregister +EXPORT_SYMBOL drivers/virt/fsl_hypervisor 0x77c9b191 fsl_hv_failover_register +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0x71acc434 w1_ds2760_recall_eeprom +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0x91b120ca w1_ds2760_store_eeprom +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0xcc810b65 w1_ds2760_read +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0xe59a96c4 w1_ds2760_write +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2780 0x1cb24f1f w1_ds2780_io +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2780 0xdf2373ef w1_ds2780_eeprom_cmd +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2781 0x09c225bd w1_ds2781_io +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2781 0x19c0b4a2 w1_ds2781_eeprom_cmd +EXPORT_SYMBOL drivers/w1/wire 0x47171170 w1_add_master_device +EXPORT_SYMBOL drivers/w1/wire 0x901bc0cd w1_remove_master_device +EXPORT_SYMBOL drivers/w1/wire 0xe4946eab w1_unregister_family +EXPORT_SYMBOL drivers/w1/wire 0xf2ad94cc w1_register_family +EXPORT_SYMBOL fs/configfs/configfs 0x350598eb configfs_unregister_subsystem +EXPORT_SYMBOL fs/configfs/configfs 0x38b7531b config_item_get +EXPORT_SYMBOL fs/configfs/configfs 0x438d0093 config_item_put +EXPORT_SYMBOL fs/configfs/configfs 0x48faa775 config_group_init_type_name +EXPORT_SYMBOL fs/configfs/configfs 0x4b80b8ec configfs_register_subsystem +EXPORT_SYMBOL fs/configfs/configfs 0x4cb88366 config_group_init +EXPORT_SYMBOL fs/configfs/configfs 0x7904e08f config_item_set_name +EXPORT_SYMBOL fs/configfs/configfs 0xbeffb7cc config_group_find_item +EXPORT_SYMBOL fs/configfs/configfs 0xd4a41ad1 configfs_undepend_item +EXPORT_SYMBOL fs/configfs/configfs 0xd6d6d3bc config_item_init_type_name +EXPORT_SYMBOL fs/configfs/configfs 0xe65a2d81 configfs_depend_item +EXPORT_SYMBOL fs/exofs/libore 0x19e81d0e ore_get_rw_state +EXPORT_SYMBOL fs/exofs/libore 0x2788821a ore_remove +EXPORT_SYMBOL fs/exofs/libore 0x28806871 ore_verify_layout +EXPORT_SYMBOL fs/exofs/libore 0x3770679d ore_write +EXPORT_SYMBOL fs/exofs/libore 0x3f7fa89f ore_check_io +EXPORT_SYMBOL fs/exofs/libore 0x4527e170 ore_calc_stripe_info +EXPORT_SYMBOL fs/exofs/libore 0x55bc63af extract_attr_from_ios +EXPORT_SYMBOL fs/exofs/libore 0x697ae9ff ore_put_io_state +EXPORT_SYMBOL fs/exofs/libore 0x91320a73 ore_read +EXPORT_SYMBOL fs/exofs/libore 0xa3d2a634 g_attr_logical_length +EXPORT_SYMBOL fs/exofs/libore 0xc096e811 ore_get_io_state +EXPORT_SYMBOL fs/exofs/libore 0xc1188f7d ore_truncate +EXPORT_SYMBOL fs/exofs/libore 0xcee9dcf3 ore_create +EXPORT_SYMBOL fs/fscache/fscache 0x09eec942 __fscache_check_consistency +EXPORT_SYMBOL fs/fscache/fscache 0x0ede09be __fscache_uncache_page +EXPORT_SYMBOL fs/fscache/fscache 0x0f73eeeb fscache_add_cache +EXPORT_SYMBOL fs/fscache/fscache 0x103677e0 __fscache_enable_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x12d7c362 fscache_operation_init +EXPORT_SYMBOL fs/fscache/fscache 0x27666ae0 __fscache_wait_on_invalidate +EXPORT_SYMBOL fs/fscache/fscache 0x28195b13 fscache_object_init +EXPORT_SYMBOL fs/fscache/fscache 0x35b7c05e __fscache_register_netfs +EXPORT_SYMBOL fs/fscache/fscache 0x3b02c91a __fscache_maybe_release_page +EXPORT_SYMBOL fs/fscache/fscache 0x5f7e6f10 fscache_op_complete +EXPORT_SYMBOL fs/fscache/fscache 0x60e8ac87 __fscache_alloc_page +EXPORT_SYMBOL fs/fscache/fscache 0x6ad6f3b4 __fscache_relinquish_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x6ba46fa3 __fscache_readpages_cancel +EXPORT_SYMBOL fs/fscache/fscache 0x6f9aa3d0 __fscache_unregister_netfs +EXPORT_SYMBOL fs/fscache/fscache 0x71f71534 fscache_put_operation +EXPORT_SYMBOL fs/fscache/fscache 0x72453d95 fscache_cache_cleared_wq +EXPORT_SYMBOL fs/fscache/fscache 0x74530ecd fscache_op_debug_id +EXPORT_SYMBOL fs/fscache/fscache 0x75379034 fscache_withdraw_cache +EXPORT_SYMBOL fs/fscache/fscache 0x872ddd99 fscache_object_mark_killed +EXPORT_SYMBOL fs/fscache/fscache 0x8c34a192 __fscache_attr_changed +EXPORT_SYMBOL fs/fscache/fscache 0x94794952 fscache_init_cache +EXPORT_SYMBOL fs/fscache/fscache 0x9dc32767 fscache_enqueue_operation +EXPORT_SYMBOL fs/fscache/fscache 0x9de08721 fscache_object_lookup_negative +EXPORT_SYMBOL fs/fscache/fscache 0xa0857f35 fscache_mark_page_cached +EXPORT_SYMBOL fs/fscache/fscache 0xa2d5fde0 __fscache_wait_on_page_write +EXPORT_SYMBOL fs/fscache/fscache 0xae1a8fd9 __fscache_update_cookie +EXPORT_SYMBOL fs/fscache/fscache 0xb7977855 __fscache_disable_cookie +EXPORT_SYMBOL fs/fscache/fscache 0xb98e717e fscache_fsdef_index +EXPORT_SYMBOL fs/fscache/fscache 0xc0661a14 fscache_object_destroy +EXPORT_SYMBOL fs/fscache/fscache 0xc779e4b7 __fscache_read_or_alloc_pages +EXPORT_SYMBOL fs/fscache/fscache 0xc8118d18 __fscache_write_page +EXPORT_SYMBOL fs/fscache/fscache 0xced4c71e fscache_io_error +EXPORT_SYMBOL fs/fscache/fscache 0xda9ac109 fscache_obtained_object +EXPORT_SYMBOL fs/fscache/fscache 0xdd58b80e __fscache_check_page_write +EXPORT_SYMBOL fs/fscache/fscache 0xe5572e3b fscache_object_retrying_stale +EXPORT_SYMBOL fs/fscache/fscache 0xe7e19c0b __fscache_invalidate +EXPORT_SYMBOL fs/fscache/fscache 0xecb2b823 __fscache_read_or_alloc_page +EXPORT_SYMBOL fs/fscache/fscache 0xee9be398 __fscache_acquire_cookie +EXPORT_SYMBOL fs/fscache/fscache 0xf179866e fscache_check_aux +EXPORT_SYMBOL fs/fscache/fscache 0xf3caa050 fscache_mark_pages_cached +EXPORT_SYMBOL fs/fscache/fscache 0xfa3476e4 __fscache_uncache_all_inode_pages +EXPORT_SYMBOL fs/ocfs2/cluster/ocfs2_nodemanager 0xbfd7d7a2 o2hb_global_heartbeat_active +EXPORT_SYMBOL fs/quota/quota_tree 0x38f57fe8 qtree_write_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0x5a28eea5 qtree_delete_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0x70a80d37 qtree_release_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0x899ea7fc qtree_read_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0xf0652fdb qtree_entry_unused +EXPORT_SYMBOL lib/cordic 0x434bfd07 cordic_calc_iq +EXPORT_SYMBOL lib/crc-ccitt 0x1a703ba1 crc_ccitt +EXPORT_SYMBOL lib/crc-ccitt 0x75811312 crc_ccitt_table +EXPORT_SYMBOL lib/crc-itu-t 0x6d356209 crc_itu_t +EXPORT_SYMBOL lib/crc-itu-t 0xd29b009f crc_itu_t_table +EXPORT_SYMBOL lib/crc7 0x56329ecc crc7_be +EXPORT_SYMBOL lib/crc7 0x7a222007 crc7_be_syndrome_table +EXPORT_SYMBOL lib/crc8 0xab9ad613 crc8_populate_lsb +EXPORT_SYMBOL lib/crc8 0xd09b2cba crc8 +EXPORT_SYMBOL lib/crc8 0xd4534d80 crc8_populate_msb +EXPORT_SYMBOL lib/libcrc32c 0x27000b29 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 0x6c57d83b lc_seq_printf_stats +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 0xefec290a lc_find +EXPORT_SYMBOL lib/lru_cache 0xf6e24299 lc_seq_dump_details +EXPORT_SYMBOL lib/lru_cache 0xfd525ec7 lc_put +EXPORT_SYMBOL lib/lz4/lz4_compress 0x0c222eb5 lz4_compress +EXPORT_SYMBOL lib/lz4/lz4hc_compress 0x682a23e0 lz4hc_compress +EXPORT_SYMBOL lib/raid6/raid6_pq 0x0bd662f6 raid6_gfmul +EXPORT_SYMBOL lib/raid6/raid6_pq 0x15fe0cd3 raid6_gfexp +EXPORT_SYMBOL lib/raid6/raid6_pq 0x5ba93f9d raid6_gfinv +EXPORT_SYMBOL lib/raid6/raid6_pq 0x7456cc61 raid6_empty_zero_page +EXPORT_SYMBOL lib/raid6/raid6_pq 0xce45a6f1 raid6_gfexi +EXPORT_SYMBOL lib/raid6/raid6_pq 0xd9e91f83 raid6_vgfmul +EXPORT_SYMBOL net/6lowpan/6lowpan 0x24219403 lowpan_nhc_del +EXPORT_SYMBOL net/6lowpan/6lowpan 0x4fff01a7 lowpan_nhc_add +EXPORT_SYMBOL net/802/p8022 0x1b00043e register_8022_client +EXPORT_SYMBOL net/802/p8022 0xeb1697ac unregister_8022_client +EXPORT_SYMBOL net/802/p8023 0x4ba80e39 make_8023_client +EXPORT_SYMBOL net/802/p8023 0x54d54624 destroy_8023_client +EXPORT_SYMBOL net/802/psnap 0x04383602 unregister_snap_client +EXPORT_SYMBOL net/802/psnap 0xb1469e26 register_snap_client +EXPORT_SYMBOL net/9p/9pnet 0x00ca5948 p9_client_mknod_dotl +EXPORT_SYMBOL net/9p/9pnet 0x046c2437 p9stat_read +EXPORT_SYMBOL net/9p/9pnet 0x08eb6bfa p9_client_lock_dotl +EXPORT_SYMBOL net/9p/9pnet 0x0eee2d67 p9_client_attach +EXPORT_SYMBOL net/9p/9pnet 0x11f425a2 p9_client_open +EXPORT_SYMBOL net/9p/9pnet 0x1469a4a0 p9_client_rename +EXPORT_SYMBOL net/9p/9pnet 0x1cca1ca4 p9_client_stat +EXPORT_SYMBOL net/9p/9pnet 0x334c3757 v9fs_get_trans_by_name +EXPORT_SYMBOL net/9p/9pnet 0x35d1e27e p9_idpool_get +EXPORT_SYMBOL net/9p/9pnet 0x395a2595 p9_client_disconnect +EXPORT_SYMBOL net/9p/9pnet 0x3aeaa2d6 p9_parse_header +EXPORT_SYMBOL net/9p/9pnet 0x3d73a797 p9_errstr2errno +EXPORT_SYMBOL net/9p/9pnet 0x44d2c2c0 p9stat_free +EXPORT_SYMBOL net/9p/9pnet 0x46b33027 p9_client_renameat +EXPORT_SYMBOL net/9p/9pnet 0x492e3ab6 p9_client_write +EXPORT_SYMBOL net/9p/9pnet 0x4a060835 p9_client_walk +EXPORT_SYMBOL net/9p/9pnet 0x4c841774 p9_client_setattr +EXPORT_SYMBOL net/9p/9pnet 0x53d58a07 p9dirent_read +EXPORT_SYMBOL net/9p/9pnet 0x580bb43e p9_client_fcreate +EXPORT_SYMBOL net/9p/9pnet 0x654eae18 p9_client_readdir +EXPORT_SYMBOL net/9p/9pnet 0x68239168 p9_client_getattr_dotl +EXPORT_SYMBOL net/9p/9pnet 0x6d3c1f82 p9_tag_lookup +EXPORT_SYMBOL net/9p/9pnet 0x764bdf56 p9_client_create_dotl +EXPORT_SYMBOL net/9p/9pnet 0x78979cc3 p9_client_wstat +EXPORT_SYMBOL net/9p/9pnet 0x7a687351 p9_client_mkdir_dotl +EXPORT_SYMBOL net/9p/9pnet 0x7c508e0e p9_client_remove +EXPORT_SYMBOL net/9p/9pnet 0x83a6c286 p9_client_link +EXPORT_SYMBOL net/9p/9pnet 0x8c26cc00 p9_client_create +EXPORT_SYMBOL net/9p/9pnet 0x8c283799 v9fs_unregister_trans +EXPORT_SYMBOL net/9p/9pnet 0x98ac076f p9_client_read +EXPORT_SYMBOL net/9p/9pnet 0x9e02d67a p9_client_getlock_dotl +EXPORT_SYMBOL net/9p/9pnet 0xa4477482 p9_client_readlink +EXPORT_SYMBOL net/9p/9pnet 0xa68d958f p9_client_unlinkat +EXPORT_SYMBOL net/9p/9pnet 0xab5dfe39 p9_client_statfs +EXPORT_SYMBOL net/9p/9pnet 0xb111c11a p9_client_begin_disconnect +EXPORT_SYMBOL net/9p/9pnet 0xbc3b91db p9_release_pages +EXPORT_SYMBOL net/9p/9pnet 0xbc7c8eed v9fs_register_trans +EXPORT_SYMBOL net/9p/9pnet 0xbe289810 p9_is_proto_dotu +EXPORT_SYMBOL net/9p/9pnet 0xbe854218 p9_client_fsync +EXPORT_SYMBOL net/9p/9pnet 0xc5db54a9 p9_idpool_destroy +EXPORT_SYMBOL net/9p/9pnet 0xd5940dad v9fs_get_default_trans +EXPORT_SYMBOL net/9p/9pnet 0xdfca5b21 p9_client_symlink +EXPORT_SYMBOL net/9p/9pnet 0xe58a3360 p9_error_init +EXPORT_SYMBOL net/9p/9pnet 0xea4ab16a p9_client_cb +EXPORT_SYMBOL net/9p/9pnet 0xebe3a964 p9_client_clunk +EXPORT_SYMBOL net/9p/9pnet 0xf2757571 p9_client_destroy +EXPORT_SYMBOL net/9p/9pnet 0xf4a111d8 p9_idpool_create +EXPORT_SYMBOL net/9p/9pnet 0xf84f2022 p9_idpool_put +EXPORT_SYMBOL net/9p/9pnet 0xfd40c79d p9_idpool_check +EXPORT_SYMBOL net/9p/9pnet 0xfe484aef p9_is_proto_dotl +EXPORT_SYMBOL net/appletalk/appletalk 0x0263beb2 atrtr_get_dev +EXPORT_SYMBOL net/appletalk/appletalk 0x4531d0d3 aarp_send_ddp +EXPORT_SYMBOL net/appletalk/appletalk 0xb6d5d78e atalk_find_dev_addr +EXPORT_SYMBOL net/appletalk/appletalk 0xf212d8b9 alloc_ltalkdev +EXPORT_SYMBOL net/atm/atm 0x052a4be5 vcc_release_async +EXPORT_SYMBOL net/atm/atm 0x13478a9a register_atm_ioctl +EXPORT_SYMBOL net/atm/atm 0x29bc6904 atm_charge +EXPORT_SYMBOL net/atm/atm 0x2c522201 deregister_atm_ioctl +EXPORT_SYMBOL net/atm/atm 0x2cc2d52d vcc_hash +EXPORT_SYMBOL net/atm/atm 0x34be314c atm_dev_signal_change +EXPORT_SYMBOL net/atm/atm 0x38ee1a5a vcc_process_recv_queue +EXPORT_SYMBOL net/atm/atm 0x4443d399 atm_proc_root +EXPORT_SYMBOL net/atm/atm 0x46fb7545 atm_init_aal5 +EXPORT_SYMBOL net/atm/atm 0x530984b4 atm_dev_deregister +EXPORT_SYMBOL net/atm/atm 0x59a6ab79 atm_alloc_charge +EXPORT_SYMBOL net/atm/atm 0x860db30a vcc_insert_socket +EXPORT_SYMBOL net/atm/atm 0x9feaf287 sonet_subtract_stats +EXPORT_SYMBOL net/atm/atm 0xaa024146 sonet_copy_stats +EXPORT_SYMBOL net/atm/atm 0xac9d6a9e atm_dev_release_vccs +EXPORT_SYMBOL net/atm/atm 0xca87b453 vcc_sklist_lock +EXPORT_SYMBOL net/atm/atm 0xd1404947 atm_dev_register +EXPORT_SYMBOL net/atm/atm 0xf49bc67a atm_pcr_goal +EXPORT_SYMBOL net/atm/atm 0xf4bee441 atm_dev_lookup +EXPORT_SYMBOL net/ax25/ax25 0x06a744d4 ax25_ip_xmit +EXPORT_SYMBOL net/ax25/ax25 0x1cb0e58a ax25_listen_release +EXPORT_SYMBOL net/ax25/ax25 0x242852b9 ax25_uid_policy +EXPORT_SYMBOL net/ax25/ax25 0x35999275 ax25_send_frame +EXPORT_SYMBOL net/ax25/ax25 0x3afee63e ax25_findbyuid +EXPORT_SYMBOL net/ax25/ax25 0x414ca0a2 ax25_find_cb +EXPORT_SYMBOL net/ax25/ax25 0x4502c65a asc2ax +EXPORT_SYMBOL net/ax25/ax25 0x53dea1ff ax2asc +EXPORT_SYMBOL net/ax25/ax25 0x6488abc1 ax25_linkfail_release +EXPORT_SYMBOL net/ax25/ax25 0x66f7d30e ax25_header_ops +EXPORT_SYMBOL net/ax25/ax25 0x8ede9e26 ax25_protocol_release +EXPORT_SYMBOL net/ax25/ax25 0xa7f3015b ax25_display_timer +EXPORT_SYMBOL net/ax25/ax25 0xc1444946 ax25cmp +EXPORT_SYMBOL net/ax25/ax25 0xcaa1d5ea ax25_linkfail_register +EXPORT_SYMBOL net/ax25/ax25 0xd43ecbf1 null_ax25_address +EXPORT_SYMBOL net/ax25/ax25 0xdc75687d ax25_listen_register +EXPORT_SYMBOL net/bluetooth/bluetooth 0x0257199a hci_unregister_cb +EXPORT_SYMBOL net/bluetooth/bluetooth 0x04c1a4e9 hci_mgmt_chan_unregister +EXPORT_SYMBOL net/bluetooth/bluetooth 0x05cb0341 bt_accept_dequeue +EXPORT_SYMBOL net/bluetooth/bluetooth 0x0f03b95c hci_suspend_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x21e24aac bt_sock_unlink +EXPORT_SYMBOL net/bluetooth/bluetooth 0x24630ee1 hci_unregister_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x27b2d7be bt_accept_enqueue +EXPORT_SYMBOL net/bluetooth/bluetooth 0x2af3fb0e hci_conn_switch_role +EXPORT_SYMBOL net/bluetooth/bluetooth 0x37350035 l2cap_unregister_user +EXPORT_SYMBOL net/bluetooth/bluetooth 0x396edfa5 bt_sock_link +EXPORT_SYMBOL net/bluetooth/bluetooth 0x3e4388d0 hci_conn_security +EXPORT_SYMBOL net/bluetooth/bluetooth 0x3f970edf hci_free_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x47022514 bt_err +EXPORT_SYMBOL net/bluetooth/bluetooth 0x4ff8d7a0 hci_reset_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x5ac2368a hci_recv_frame +EXPORT_SYMBOL net/bluetooth/bluetooth 0x5c0016f9 l2cap_conn_put +EXPORT_SYMBOL net/bluetooth/bluetooth 0x5f0d2a13 __hci_cmd_sync_ev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x695d90d4 bt_procfs_cleanup +EXPORT_SYMBOL net/bluetooth/bluetooth 0x6e17c654 l2cap_is_socket +EXPORT_SYMBOL net/bluetooth/bluetooth 0x7231992a l2cap_chan_close +EXPORT_SYMBOL net/bluetooth/bluetooth 0x76d41b02 hci_register_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x7b875533 __hci_cmd_sync +EXPORT_SYMBOL net/bluetooth/bluetooth 0x80259e68 hci_get_route +EXPORT_SYMBOL net/bluetooth/bluetooth 0x8b827bad bt_sock_stream_recvmsg +EXPORT_SYMBOL net/bluetooth/bluetooth 0x8e43342d l2cap_conn_get +EXPORT_SYMBOL net/bluetooth/bluetooth 0x8f601396 hci_resume_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x8fea24bd bt_sock_unregister +EXPORT_SYMBOL net/bluetooth/bluetooth 0x918b2be0 bt_sock_register +EXPORT_SYMBOL net/bluetooth/bluetooth 0x91c9a325 bt_to_errno +EXPORT_SYMBOL net/bluetooth/bluetooth 0xa3ae674c l2cap_register_user +EXPORT_SYMBOL net/bluetooth/bluetooth 0xa6218432 bt_sock_recvmsg +EXPORT_SYMBOL net/bluetooth/bluetooth 0xa656d2f0 hci_conn_check_secure +EXPORT_SYMBOL net/bluetooth/bluetooth 0xa94a8def hci_register_cb +EXPORT_SYMBOL net/bluetooth/bluetooth 0xae0c1b0d bt_sock_ioctl +EXPORT_SYMBOL net/bluetooth/bluetooth 0xc4b2bca3 bt_sock_wait_state +EXPORT_SYMBOL net/bluetooth/bluetooth 0xc80a9568 bt_procfs_init +EXPORT_SYMBOL net/bluetooth/bluetooth 0xcc1fb551 baswap +EXPORT_SYMBOL net/bluetooth/bluetooth 0xd7442057 bt_info +EXPORT_SYMBOL net/bluetooth/bluetooth 0xda3f3e7b bt_accept_unlink +EXPORT_SYMBOL net/bluetooth/bluetooth 0xec38fd15 hci_mgmt_chan_register +EXPORT_SYMBOL net/bluetooth/bluetooth 0xefdc0645 hci_alloc_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xf0fb76d9 bt_sock_reclassify_lock +EXPORT_SYMBOL net/bluetooth/bluetooth 0xfa9806ae bt_sock_wait_ready +EXPORT_SYMBOL net/bluetooth/bluetooth 0xfd938935 bt_sock_poll +EXPORT_SYMBOL net/bridge/bridge 0x7b4a28b6 br_should_route_hook +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0x2b1df97f ebt_unregister_table +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0x3b0f034d ebt_register_table +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0xbe6c3bb3 ebt_do_table +EXPORT_SYMBOL net/caif/caif 0x03c2e01e caif_connect_client +EXPORT_SYMBOL net/caif/caif 0x1446b60a caif_client_register_refcnt +EXPORT_SYMBOL net/caif/caif 0x1ce13e77 cfcnfg_add_phy_layer +EXPORT_SYMBOL net/caif/caif 0x2a09f713 cfpkt_fromnative +EXPORT_SYMBOL net/caif/caif 0x329dbd06 cfpkt_info +EXPORT_SYMBOL net/caif/caif 0x36d5f6ab get_cfcnfg +EXPORT_SYMBOL net/caif/caif 0x38701a7c cfcnfg_del_phy_layer +EXPORT_SYMBOL net/caif/caif 0x4a237e57 cfpkt_tonative +EXPORT_SYMBOL net/caif/caif 0x582b73e8 caif_disconnect_client +EXPORT_SYMBOL net/caif/caif 0x6a44fc70 cfpkt_extr_head +EXPORT_SYMBOL net/caif/caif 0x839ddb7b cfcnfg_set_phy_state +EXPORT_SYMBOL net/caif/caif 0x966d7de2 cfpkt_add_head +EXPORT_SYMBOL net/caif/caif 0x9e3e305d cfpkt_set_prio +EXPORT_SYMBOL net/caif/caif 0xb7b6874e caif_free_client +EXPORT_SYMBOL net/caif/caif 0xf7c1a4d1 caif_enroll_dev +EXPORT_SYMBOL net/can/can 0x13b3b956 can_ioctl +EXPORT_SYMBOL net/can/can 0x463a89bd can_rx_unregister +EXPORT_SYMBOL net/can/can 0x4b0d12c7 can_proto_unregister +EXPORT_SYMBOL net/can/can 0x4d517d16 can_send +EXPORT_SYMBOL net/can/can 0x86374b4d can_rx_register +EXPORT_SYMBOL net/can/can 0x9eb600a1 can_proto_register +EXPORT_SYMBOL net/ceph/libceph 0x0011c32a ceph_osdc_cancel_event +EXPORT_SYMBOL net/ceph/libceph 0x022a421c ceph_osdc_wait_request +EXPORT_SYMBOL net/ceph/libceph 0x02abe1b9 ceph_destroy_client +EXPORT_SYMBOL net/ceph/libceph 0x03b4353f ceph_release_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x03b4a330 ceph_print_client_options +EXPORT_SYMBOL net/ceph/libceph 0x09290ab3 ceph_debugfs_init +EXPORT_SYMBOL net/ceph/libceph 0x0a0b20d9 ceph_con_init +EXPORT_SYMBOL net/ceph/libceph 0x0c036ccf ceph_osdc_put_request +EXPORT_SYMBOL net/ceph/libceph 0x0f901d25 ceph_osdc_start_request +EXPORT_SYMBOL net/ceph/libceph 0x12400007 ceph_put_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x1438af25 ceph_msg_put +EXPORT_SYMBOL net/ceph/libceph 0x17a618a1 ceph_osdc_put_event +EXPORT_SYMBOL net/ceph/libceph 0x1923778e ceph_msg_data_add_pages +EXPORT_SYMBOL net/ceph/libceph 0x1943fca6 ceph_get_direct_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x19760ab7 ceph_monc_got_mdsmap +EXPORT_SYMBOL net/ceph/libceph 0x19b38a8c ceph_auth_invalidate_authorizer +EXPORT_SYMBOL net/ceph/libceph 0x1bfc731a ceph_monc_init +EXPORT_SYMBOL net/ceph/libceph 0x1d59409a ceph_copy_to_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x1eddaba1 ceph_con_open +EXPORT_SYMBOL net/ceph/libceph 0x1f132296 ceph_osdc_get_request +EXPORT_SYMBOL net/ceph/libceph 0x1f241047 ceph_auth_destroy_authorizer +EXPORT_SYMBOL net/ceph/libceph 0x1fdec8cc ceph_open_session +EXPORT_SYMBOL net/ceph/libceph 0x1fed06dc osd_req_op_extent_osd_data_pages +EXPORT_SYMBOL net/ceph/libceph 0x20d151cb ceph_osdc_setup +EXPORT_SYMBOL net/ceph/libceph 0x21c60751 ceph_pagelist_free_reserve +EXPORT_SYMBOL net/ceph/libceph 0x23de3a4c ceph_auth_create_authorizer +EXPORT_SYMBOL net/ceph/libceph 0x24d897df ceph_pagelist_release +EXPORT_SYMBOL net/ceph/libceph 0x29257b05 ceph_pg_pool_name_by_id +EXPORT_SYMBOL net/ceph/libceph 0x2a3bc206 ceph_osdc_sync +EXPORT_SYMBOL net/ceph/libceph 0x2b41ecbd osd_req_op_extent_osd_data +EXPORT_SYMBOL net/ceph/libceph 0x2db717f3 ceph_destroy_options +EXPORT_SYMBOL net/ceph/libceph 0x34a82201 osd_req_op_raw_data_in_pages +EXPORT_SYMBOL net/ceph/libceph 0x34d1dfe3 ceph_monc_do_statfs +EXPORT_SYMBOL net/ceph/libceph 0x3536faee osd_req_op_xattr_init +EXPORT_SYMBOL net/ceph/libceph 0x37eb91e6 ceph_compare_options +EXPORT_SYMBOL net/ceph/libceph 0x39d206ad ceph_con_close +EXPORT_SYMBOL net/ceph/libceph 0x3abec91f ceph_pr_addr +EXPORT_SYMBOL net/ceph/libceph 0x3af36200 ceph_msg_dump +EXPORT_SYMBOL net/ceph/libceph 0x3b85996d ceph_osdc_create_event +EXPORT_SYMBOL net/ceph/libceph 0x3b9335e5 ceph_con_keepalive +EXPORT_SYMBOL net/ceph/libceph 0x3f3813e0 ceph_calc_pg_primary +EXPORT_SYMBOL net/ceph/libceph 0x3f688151 ceph_put_snap_context +EXPORT_SYMBOL net/ceph/libceph 0x419cb09b ceph_pagelist_truncate +EXPORT_SYMBOL net/ceph/libceph 0x43c0e6f7 osd_req_op_init +EXPORT_SYMBOL net/ceph/libceph 0x43e458f6 ceph_file_part +EXPORT_SYMBOL net/ceph/libceph 0x43efd647 ceph_calc_file_object_mapping +EXPORT_SYMBOL net/ceph/libceph 0x466b85b8 libceph_compatible +EXPORT_SYMBOL net/ceph/libceph 0x494fc23b ceph_monc_stop +EXPORT_SYMBOL net/ceph/libceph 0x499d040b ceph_alloc_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x4e76de9c ceph_auth_is_authenticated +EXPORT_SYMBOL net/ceph/libceph 0x5018c7d7 ceph_auth_verify_authorizer_reply +EXPORT_SYMBOL net/ceph/libceph 0x505efb47 ceph_auth_update_authorizer +EXPORT_SYMBOL net/ceph/libceph 0x5379cea3 ceph_caps_for_mode +EXPORT_SYMBOL net/ceph/libceph 0x57baf885 ceph_str_hash +EXPORT_SYMBOL net/ceph/libceph 0x5882128c ceph_copy_from_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x58bb88b4 ceph_msg_get +EXPORT_SYMBOL net/ceph/libceph 0x5941837b ceph_con_send +EXPORT_SYMBOL net/ceph/libceph 0x63758856 ceph_str_hash_name +EXPORT_SYMBOL net/ceph/libceph 0x649e0bf9 ceph_osdc_new_request +EXPORT_SYMBOL net/ceph/libceph 0x64e6c573 __ceph_open_session +EXPORT_SYMBOL net/ceph/libceph 0x6b2e3bcd ceph_get_snap_context +EXPORT_SYMBOL net/ceph/libceph 0x6c30fd37 ceph_monc_wait_osdmap +EXPORT_SYMBOL net/ceph/libceph 0x6d48c4a5 ceph_oloc_oid_to_pg +EXPORT_SYMBOL net/ceph/libceph 0x6fcdafef ceph_buffer_new +EXPORT_SYMBOL net/ceph/libceph 0x70d749be ceph_osdc_writepages +EXPORT_SYMBOL net/ceph/libceph 0x70e733dd osd_req_op_cls_response_data_pages +EXPORT_SYMBOL net/ceph/libceph 0x72717f44 ceph_msg_data_add_pagelist +EXPORT_SYMBOL net/ceph/libceph 0x77b7ab43 ceph_monc_open_session +EXPORT_SYMBOL net/ceph/libceph 0x792cb7e1 ceph_osdc_set_request_linger +EXPORT_SYMBOL net/ceph/libceph 0x8294204b osd_req_op_alloc_hint_init +EXPORT_SYMBOL net/ceph/libceph 0x87590d09 osd_req_op_cls_request_data_pagelist +EXPORT_SYMBOL net/ceph/libceph 0x8cf049d9 osd_req_op_cls_request_data_pages +EXPORT_SYMBOL net/ceph/libceph 0x9225b133 ceph_pg_poolid_by_name +EXPORT_SYMBOL net/ceph/libceph 0x94653f25 ceph_client_id +EXPORT_SYMBOL net/ceph/libceph 0x999b3c6c osd_req_op_watch_init +EXPORT_SYMBOL net/ceph/libceph 0x99e36571 ceph_osdc_cleanup +EXPORT_SYMBOL net/ceph/libceph 0x9a0f9c3e osd_req_op_extent_osd_data_pagelist +EXPORT_SYMBOL net/ceph/libceph 0x9b9aa759 ceph_messenger_init +EXPORT_SYMBOL net/ceph/libceph 0x9eefaa5a ceph_monc_request_next_osdmap +EXPORT_SYMBOL net/ceph/libceph 0x9f534f4d ceph_buffer_release +EXPORT_SYMBOL net/ceph/libceph 0xa080ec7f ceph_osdc_cancel_request +EXPORT_SYMBOL net/ceph/libceph 0xa7701a0f ceph_monc_validate_auth +EXPORT_SYMBOL net/ceph/libceph 0xa86a6e66 ceph_osdc_readpages +EXPORT_SYMBOL net/ceph/libceph 0xae3515ba ceph_create_snap_context +EXPORT_SYMBOL net/ceph/libceph 0xaf635bea ceph_messenger_fini +EXPORT_SYMBOL net/ceph/libceph 0xafb8a407 ceph_msgr_flush +EXPORT_SYMBOL net/ceph/libceph 0xb082bc98 ceph_zero_page_vector_range +EXPORT_SYMBOL net/ceph/libceph 0xb3d2d458 osd_req_op_extent_update +EXPORT_SYMBOL net/ceph/libceph 0xb54676fa ceph_msg_type_name +EXPORT_SYMBOL net/ceph/libceph 0xb6081d6d ceph_msgr_exit +EXPORT_SYMBOL net/ceph/libceph 0xbb8b1e05 ceph_create_client +EXPORT_SYMBOL net/ceph/libceph 0xc3251bab ceph_msg_new +EXPORT_SYMBOL net/ceph/libceph 0xc4a80955 ceph_debugfs_cleanup +EXPORT_SYMBOL net/ceph/libceph 0xc63a799a ceph_osdc_build_request +EXPORT_SYMBOL net/ceph/libceph 0xc73c2ddf ceph_osdc_alloc_request +EXPORT_SYMBOL net/ceph/libceph 0xc9f82b38 ceph_msgr_init +EXPORT_SYMBOL net/ceph/libceph 0xcb50a624 ceph_parse_ips +EXPORT_SYMBOL net/ceph/libceph 0xcf02ea97 ceph_check_fsid +EXPORT_SYMBOL net/ceph/libceph 0xd06c531c ceph_osdc_flush_notifies +EXPORT_SYMBOL net/ceph/libceph 0xd2c107bb ceph_flags_to_mode +EXPORT_SYMBOL net/ceph/libceph 0xd5b8e5c7 ceph_monc_do_get_version +EXPORT_SYMBOL net/ceph/libceph 0xd5e762c8 osd_req_op_cls_response_data +EXPORT_SYMBOL net/ceph/libceph 0xd7acd83f ceph_pagelist_set_cursor +EXPORT_SYMBOL net/ceph/libceph 0xdd8e7550 ceph_parse_options +EXPORT_SYMBOL net/ceph/libceph 0xe24798ef ceph_copy_user_to_page_vector +EXPORT_SYMBOL net/ceph/libceph 0xe3b042ca ceph_pagelist_append +EXPORT_SYMBOL net/ceph/libceph 0xecc840c0 osd_req_op_cls_init +EXPORT_SYMBOL net/ceph/libceph 0xf1ca4b7d ceph_msg_data_add_bio +EXPORT_SYMBOL net/ceph/libceph 0xf35cb4d9 ceph_pagelist_reserve +EXPORT_SYMBOL net/ceph/libceph 0xf4947e09 osd_req_op_extent_osd_data_bio +EXPORT_SYMBOL net/ceph/libceph 0xfa79641b osd_req_op_extent_init +EXPORT_SYMBOL net/dccp/dccp_ipv4 0xd6a64628 dccp_req_err +EXPORT_SYMBOL net/dccp/dccp_ipv4 0xf8aec157 dccp_syn_ack_timeout +EXPORT_SYMBOL net/ieee802154/6lowpan/ieee802154_6lowpan 0x02dab94a lowpan_frag_rcv +EXPORT_SYMBOL net/ieee802154/ieee802154 0x781f0a4b wpan_phy_for_each +EXPORT_SYMBOL net/ieee802154/ieee802154 0x97b7e0ac wpan_phy_register +EXPORT_SYMBOL net/ieee802154/ieee802154 0xdb762170 wpan_phy_new +EXPORT_SYMBOL net/ieee802154/ieee802154 0xebec9d4d wpan_phy_unregister +EXPORT_SYMBOL net/ieee802154/ieee802154 0xf47c8238 wpan_phy_free +EXPORT_SYMBOL net/ieee802154/ieee802154 0xf7da61e1 wpan_phy_find +EXPORT_SYMBOL net/ipv4/fou 0x03916fe4 gue_encap_hlen +EXPORT_SYMBOL net/ipv4/fou 0x7a8411a2 fou_encap_hlen +EXPORT_SYMBOL net/ipv4/fou 0x998da7d2 fou_build_header +EXPORT_SYMBOL net/ipv4/fou 0xd1d78557 gue_build_header +EXPORT_SYMBOL net/ipv4/ip_tunnel 0x3d29fde7 ip_tunnel_get_iflink +EXPORT_SYMBOL net/ipv4/ip_tunnel 0x5ef9861e ip_tunnel_encap +EXPORT_SYMBOL net/ipv4/ip_tunnel 0x642a7861 ip_tunnel_encap_del_ops +EXPORT_SYMBOL net/ipv4/ip_tunnel 0x84c2e622 ip_tunnel_get_link_net +EXPORT_SYMBOL net/ipv4/ip_tunnel 0xf347f357 ip_tunnel_dst_reset_all +EXPORT_SYMBOL net/ipv4/ip_tunnel 0xfae35b0d ip_tunnel_encap_add_ops +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0x88095b77 arpt_register_table +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0xc2ff1cb9 arpt_unregister_table +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0xfc07c2b4 arpt_do_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0x08567c10 ipt_register_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0x65386cca ipt_unregister_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0xb623e06e ipt_do_table +EXPORT_SYMBOL net/ipv4/tunnel4 0x0cb74a48 xfrm4_tunnel_deregister +EXPORT_SYMBOL net/ipv4/tunnel4 0x65a4e730 xfrm4_tunnel_register +EXPORT_SYMBOL net/ipv4/udp_tunnel 0x3d4fc39b udp_sock_create4 +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0x10eb936f ip6_tnl_get_link_net +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0x195ba29b ip6_tnl_get_iflink +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0xe600227c ip6_tnl_parse_tlv_enc_lim +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0xf7353253 ip6_tnl_get_cap +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0x224f4298 ip6t_unregister_table +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0x9614e5ac ip6t_register_table +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0xf1ab1f83 ip6t_do_table +EXPORT_SYMBOL net/ipv6/tunnel6 0xb1caf56d xfrm6_tunnel_register +EXPORT_SYMBOL net/ipv6/tunnel6 0xe51aa9b7 xfrm6_tunnel_deregister +EXPORT_SYMBOL net/ipv6/xfrm6_tunnel 0x890c5966 xfrm6_tunnel_alloc_spi +EXPORT_SYMBOL net/ipv6/xfrm6_tunnel 0x95bebae5 xfrm6_tunnel_spi_lookup +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x0ad9213b ircomm_control_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x0fb48018 ircomm_connect_response +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x246111cd ircomm_disconnect_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x546c238e ircomm_close +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x5dba61c9 ircomm_connect_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x72f5c5d1 ircomm_data_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0xd2d3a254 ircomm_open +EXPORT_SYMBOL net/irda/ircomm/ircomm 0xf06a914a ircomm_flow_request +EXPORT_SYMBOL net/irda/irda 0x0064e0ea hashbin_get_first +EXPORT_SYMBOL net/irda/irda 0x026a3e25 iriap_close +EXPORT_SYMBOL net/irda/irda 0x054c39e0 irlap_open +EXPORT_SYMBOL net/irda/irda 0x06a3ee58 irias_new_integer_value +EXPORT_SYMBOL net/irda/irda 0x07d3647c irlmp_register_service +EXPORT_SYMBOL net/irda/irda 0x0bda2f24 irlmp_disconnect_request +EXPORT_SYMBOL net/irda/irda 0x0c846214 async_unwrap_char +EXPORT_SYMBOL net/irda/irda 0x18f6adde irlmp_connect_request +EXPORT_SYMBOL net/irda/irda 0x1e6cade0 irias_add_integer_attrib +EXPORT_SYMBOL net/irda/irda 0x24ffa726 irttp_open_tsap +EXPORT_SYMBOL net/irda/irda 0x2d766ff8 irttp_close_tsap +EXPORT_SYMBOL net/irda/irda 0x2d89834b irttp_udata_request +EXPORT_SYMBOL net/irda/irda 0x33cbe2c6 proc_irda +EXPORT_SYMBOL net/irda/irda 0x37981688 irlmp_connect_response +EXPORT_SYMBOL net/irda/irda 0x3e56064f hashbin_new +EXPORT_SYMBOL net/irda/irda 0x3e5bf851 irlmp_close_lsap +EXPORT_SYMBOL net/irda/irda 0x43acd0ad irlap_close +EXPORT_SYMBOL net/irda/irda 0x448b8aaa irda_qos_bits_to_value +EXPORT_SYMBOL net/irda/irda 0x46c1c4a2 irlmp_unregister_service +EXPORT_SYMBOL net/irda/irda 0x470757ac irttp_data_request +EXPORT_SYMBOL net/irda/irda 0x49090d56 irttp_connect_request +EXPORT_SYMBOL net/irda/irda 0x5b497593 irttp_connect_response +EXPORT_SYMBOL net/irda/irda 0x5bb7ed37 irttp_dup +EXPORT_SYMBOL net/irda/irda 0x601bda46 hashbin_remove +EXPORT_SYMBOL net/irda/irda 0x6b043eba irda_init_max_qos_capabilies +EXPORT_SYMBOL net/irda/irda 0x6b5fbcef hashbin_get_next +EXPORT_SYMBOL net/irda/irda 0x6e0ab3c7 irias_add_string_attrib +EXPORT_SYMBOL net/irda/irda 0x7042bc54 irlmp_register_client +EXPORT_SYMBOL net/irda/irda 0x75f82301 irttp_flow_request +EXPORT_SYMBOL net/irda/irda 0x763e54a4 irlmp_unregister_client +EXPORT_SYMBOL net/irda/irda 0x7957f728 irlmp_update_client +EXPORT_SYMBOL net/irda/irda 0x7f52a8bf irda_param_insert +EXPORT_SYMBOL net/irda/irda 0x816776c2 alloc_irdadev +EXPORT_SYMBOL net/irda/irda 0x85d88217 irias_delete_object +EXPORT_SYMBOL net/irda/irda 0x8a97f671 irlmp_data_request +EXPORT_SYMBOL net/irda/irda 0x90e5363a irda_notify_init +EXPORT_SYMBOL net/irda/irda 0x91815586 irda_param_pack +EXPORT_SYMBOL net/irda/irda 0x94a824db irda_param_extract_all +EXPORT_SYMBOL net/irda/irda 0x9cd07653 async_wrap_skb +EXPORT_SYMBOL net/irda/irda 0xa1d41e58 hashbin_delete +EXPORT_SYMBOL net/irda/irda 0xa3cbc0d4 irlmp_open_lsap +EXPORT_SYMBOL net/irda/irda 0xaa557515 irias_new_object +EXPORT_SYMBOL net/irda/irda 0xb9394173 irias_delete_value +EXPORT_SYMBOL net/irda/irda 0xbcd3ef13 irias_object_change_attribute +EXPORT_SYMBOL net/irda/irda 0xbe40ace9 irlmp_discovery_request +EXPORT_SYMBOL net/irda/irda 0xc68e43be irias_add_octseq_attrib +EXPORT_SYMBOL net/irda/irda 0xc6e6e9f3 iriap_getvaluebyclass_request +EXPORT_SYMBOL net/irda/irda 0xc716da61 irda_device_set_media_busy +EXPORT_SYMBOL net/irda/irda 0xcead7dbb hashbin_find +EXPORT_SYMBOL net/irda/irda 0xd2108314 hashbin_insert +EXPORT_SYMBOL net/irda/irda 0xd6deeaae irda_setup_dma +EXPORT_SYMBOL net/irda/irda 0xde4c6b3c irlmp_service_to_hint +EXPORT_SYMBOL net/irda/irda 0xe05b84fe iriap_open +EXPORT_SYMBOL net/irda/irda 0xe3463529 hashbin_lock_find +EXPORT_SYMBOL net/irda/irda 0xe3bde43e irias_insert_object +EXPORT_SYMBOL net/irda/irda 0xedd521c2 irlmp_get_discoveries +EXPORT_SYMBOL net/irda/irda 0xf0a694a1 irias_find_object +EXPORT_SYMBOL net/irda/irda 0xf55ef677 irttp_disconnect_request +EXPORT_SYMBOL net/irda/irda 0xf5876b95 hashbin_remove_this +EXPORT_SYMBOL net/l2tp/l2tp_core 0x5e1415aa l2tp_recv_common +EXPORT_SYMBOL net/lapb/lapb 0x11c669e8 lapb_getparms +EXPORT_SYMBOL net/lapb/lapb 0x404ac116 lapb_disconnect_request +EXPORT_SYMBOL net/lapb/lapb 0x5f76ec2b lapb_data_received +EXPORT_SYMBOL net/lapb/lapb 0x768f35e1 lapb_register +EXPORT_SYMBOL net/lapb/lapb 0x78ddbc6b lapb_unregister +EXPORT_SYMBOL net/lapb/lapb 0x8ec30372 lapb_connect_request +EXPORT_SYMBOL net/lapb/lapb 0xb814717f lapb_data_request +EXPORT_SYMBOL net/lapb/lapb 0xccc550b6 lapb_setparms +EXPORT_SYMBOL net/llc/llc 0x03ce2123 llc_add_pack +EXPORT_SYMBOL net/llc/llc 0x38432166 llc_sap_find +EXPORT_SYMBOL net/llc/llc 0x38b92846 llc_remove_pack +EXPORT_SYMBOL net/llc/llc 0x52d7b2fd llc_sap_list +EXPORT_SYMBOL net/llc/llc 0x6d73ca96 llc_mac_hdr_init +EXPORT_SYMBOL net/llc/llc 0x9c813a02 llc_set_station_handler +EXPORT_SYMBOL net/llc/llc 0xb7b50868 llc_sap_close +EXPORT_SYMBOL net/llc/llc 0xcd00229c llc_sap_open +EXPORT_SYMBOL net/llc/llc 0xee33227b llc_build_and_send_ui_pkt +EXPORT_SYMBOL net/mac80211/mac80211 0x00433f79 ieee80211_unregister_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x0463ca81 ieee80211_iter_keys +EXPORT_SYMBOL net/mac80211/mac80211 0x04e9ba6c ieee80211_start_tx_ba_cb_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0x083d238c ieee80211_tx_status_noskb +EXPORT_SYMBOL net/mac80211/mac80211 0x0bd609f2 ieee80211_get_key_tx_seq +EXPORT_SYMBOL net/mac80211/mac80211 0x10a11372 ieee80211_tdls_oper_request +EXPORT_SYMBOL net/mac80211/mac80211 0x17771180 ieee80211_radar_detected +EXPORT_SYMBOL net/mac80211/mac80211 0x1a186699 ieee80211_reserve_tid +EXPORT_SYMBOL net/mac80211/mac80211 0x1aa88ca5 __ieee80211_get_assoc_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0x1d517e4b ieee80211_csa_finish +EXPORT_SYMBOL net/mac80211/mac80211 0x1dc3f968 ieee80211_alloc_hw_nm +EXPORT_SYMBOL net/mac80211/mac80211 0x207a00b2 ieee80211_queue_stopped +EXPORT_SYMBOL net/mac80211/mac80211 0x20be5abd ieee80211_queue_delayed_work +EXPORT_SYMBOL net/mac80211/mac80211 0x23e56629 ieee80211_csa_is_complete +EXPORT_SYMBOL net/mac80211/mac80211 0x293cc53d ieee80211_tx_dequeue +EXPORT_SYMBOL net/mac80211/mac80211 0x29e88fa0 ieee80211_send_bar +EXPORT_SYMBOL net/mac80211/mac80211 0x2cfb5638 ieee80211_stop_tx_ba_cb_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0x2d4cb706 ieee80211_find_sta +EXPORT_SYMBOL net/mac80211/mac80211 0x2ee6c69e ieee80211_rate_control_unregister +EXPORT_SYMBOL net/mac80211/mac80211 0x2fed06e6 ieee80211_sta_set_buffered +EXPORT_SYMBOL net/mac80211/mac80211 0x31d1abf9 ieee80211_report_low_ack +EXPORT_SYMBOL net/mac80211/mac80211 0x328fbae9 ieee80211_cqm_rssi_notify +EXPORT_SYMBOL net/mac80211/mac80211 0x3400c9d0 rate_control_send_low +EXPORT_SYMBOL net/mac80211/mac80211 0x37179882 ieee80211_generic_frame_duration +EXPORT_SYMBOL net/mac80211/mac80211 0x386a528c ieee80211_disable_rssi_reports +EXPORT_SYMBOL net/mac80211/mac80211 0x3b377f3b ieee80211_tx_status +EXPORT_SYMBOL net/mac80211/mac80211 0x3b4f6403 ieee80211_enable_rssi_reports +EXPORT_SYMBOL net/mac80211/mac80211 0x3e567133 ieee80211_sched_scan_stopped +EXPORT_SYMBOL net/mac80211/mac80211 0x3f42fe0a ieee80211_start_tx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0x40c6f7eb ieee80211_tx_status_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0x419c0202 ieee80211_get_tkip_p1k_iv +EXPORT_SYMBOL net/mac80211/mac80211 0x4361a173 ieee80211_rts_duration +EXPORT_SYMBOL net/mac80211/mac80211 0x476c37a9 ieee80211_ctstoself_get +EXPORT_SYMBOL net/mac80211/mac80211 0x47b192be ieee80211_rx_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0x48dfa79b ieee80211_sta_eosp +EXPORT_SYMBOL net/mac80211/mac80211 0x4c2b011a ieee80211_get_tkip_rx_p1k +EXPORT_SYMBOL net/mac80211/mac80211 0x4e90c5f6 ieee80211_sta_block_awake +EXPORT_SYMBOL net/mac80211/mac80211 0x4fab5f63 ieee80211_ap_probereq_get +EXPORT_SYMBOL net/mac80211/mac80211 0x55773554 ieee80211_wake_queues +EXPORT_SYMBOL net/mac80211/mac80211 0x5583bed7 ieee80211_stop_queue +EXPORT_SYMBOL net/mac80211/mac80211 0x55f97e4f ieee80211_get_key_rx_seq +EXPORT_SYMBOL net/mac80211/mac80211 0x56134b78 ieee80211_queue_work +EXPORT_SYMBOL net/mac80211/mac80211 0x6091c955 ieee80211_stop_tx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0x63151059 ieee80211_probereq_get +EXPORT_SYMBOL net/mac80211/mac80211 0x67f99468 ieee80211_unreserve_tid +EXPORT_SYMBOL net/mac80211/mac80211 0x693bc516 __ieee80211_create_tpt_led_trigger +EXPORT_SYMBOL net/mac80211/mac80211 0x6a048723 ieee80211_free_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x6d7bd637 ieee80211_nullfunc_get +EXPORT_SYMBOL net/mac80211/mac80211 0x6f29ccc8 ieee80211_free_txskb +EXPORT_SYMBOL net/mac80211/mac80211 0x6fe643bd ieee80211_sched_scan_results +EXPORT_SYMBOL net/mac80211/mac80211 0x75fdf850 ieee80211_csa_update_counter +EXPORT_SYMBOL net/mac80211/mac80211 0x77ea65c4 ieee80211_update_p2p_noa +EXPORT_SYMBOL net/mac80211/mac80211 0x7c282d26 ieee80211_wake_queue +EXPORT_SYMBOL net/mac80211/mac80211 0x7d6a9f2e ieee80211_cqm_beacon_loss_notify +EXPORT_SYMBOL net/mac80211/mac80211 0x88cb0140 ieee80211_beacon_get_template +EXPORT_SYMBOL net/mac80211/mac80211 0x8a261830 ieee80211_stop_rx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0x8a82b4f5 ieee80211_beacon_loss +EXPORT_SYMBOL net/mac80211/mac80211 0x8f3c5625 ieee80211_beacon_get_tim +EXPORT_SYMBOL net/mac80211/mac80211 0x94ef40a3 ieee80211_get_tx_rates +EXPORT_SYMBOL net/mac80211/mac80211 0x962bdde8 ieee80211_aes_cmac_calculate_k1_k2 +EXPORT_SYMBOL net/mac80211/mac80211 0x970f29a8 wiphy_to_ieee80211_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x98208ca9 ieee80211_get_buffered_bc +EXPORT_SYMBOL net/mac80211/mac80211 0x9e0cd8bf ieee80211_rts_get +EXPORT_SYMBOL net/mac80211/mac80211 0x9f2d9cc3 ieee80211_restart_hw +EXPORT_SYMBOL net/mac80211/mac80211 0xa3c26989 rate_control_set_rates +EXPORT_SYMBOL net/mac80211/mac80211 0xa4dff71f ieee80211_stop_queues +EXPORT_SYMBOL net/mac80211/mac80211 0xb60a4c3c ieee80211_chswitch_done +EXPORT_SYMBOL net/mac80211/mac80211 0xb64b61ba ieee80211_stop_rx_ba_session_offl +EXPORT_SYMBOL net/mac80211/mac80211 0xb993ce4a ieee80211_ctstoself_duration +EXPORT_SYMBOL net/mac80211/mac80211 0xbcaf6997 ieee80211_tx_prepare_skb +EXPORT_SYMBOL net/mac80211/mac80211 0xbcd2232d __ieee80211_get_tx_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0xc1207fab ieee80211_start_rx_ba_session_offl +EXPORT_SYMBOL net/mac80211/mac80211 0xc6d093e9 ieee80211_connection_loss +EXPORT_SYMBOL net/mac80211/mac80211 0xcb4c6705 ieee80211_rate_control_register +EXPORT_SYMBOL net/mac80211/mac80211 0xd0b69f53 ieee80211_sta_ps_transition +EXPORT_SYMBOL net/mac80211/mac80211 0xd574425b ieee80211_rx +EXPORT_SYMBOL net/mac80211/mac80211 0xd72625cb ieee80211_parse_p2p_noa +EXPORT_SYMBOL net/mac80211/mac80211 0xd7e3b76d ieee80211_proberesp_get +EXPORT_SYMBOL net/mac80211/mac80211 0xdad345c7 __ieee80211_get_radio_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0xdc70185b ieee80211_register_hw +EXPORT_SYMBOL net/mac80211/mac80211 0xdec4aebd ieee80211_get_tkip_p2k +EXPORT_SYMBOL net/mac80211/mac80211 0xe16ec96f ieee80211_pspoll_get +EXPORT_SYMBOL net/mac80211/mac80211 0xe26597a3 __ieee80211_get_rx_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0xf596bbca ieee80211_scan_completed +EXPORT_SYMBOL net/mac80211/mac80211 0xfb88fac3 ieee80211_report_wowlan_wakeup +EXPORT_SYMBOL net/mac802154/mac802154 0x0c3204d7 ieee802154_stop_queue +EXPORT_SYMBOL net/mac802154/mac802154 0x38dede36 ieee802154_rx_irqsafe +EXPORT_SYMBOL net/mac802154/mac802154 0x3ae9e757 ieee802154_register_hw +EXPORT_SYMBOL net/mac802154/mac802154 0x52bcc4bc ieee802154_unregister_hw +EXPORT_SYMBOL net/mac802154/mac802154 0x53cf98fe ieee802154_alloc_hw +EXPORT_SYMBOL net/mac802154/mac802154 0x5afa22c2 ieee802154_free_hw +EXPORT_SYMBOL net/mac802154/mac802154 0x7c2c3ea9 ieee802154_rx +EXPORT_SYMBOL net/mac802154/mac802154 0x800b15fa ieee802154_xmit_complete +EXPORT_SYMBOL net/mac802154/mac802154 0xbd976340 ieee802154_wake_queue +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x00558989 ip_vs_proto_data_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x02b94a96 ip_vs_proto_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x1d617e66 unregister_ip_vs_scheduler +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x2bb6548f register_ip_vs_scheduler +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x38eb598d ip_vs_conn_new +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x48ca7efc register_ip_vs_app +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x66502fb0 ip_vs_conn_in_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x716fd8f9 unregister_ip_vs_app +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xa25595eb ip_vs_conn_put +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xc61c96aa ip_vs_tcp_conn_listen +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xc8228ff1 ip_vs_nfct_expect_related +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xd831a1a2 ip_vs_proto_name +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xe176d0d9 register_ip_vs_app_inc +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xeba12f69 ip_vs_conn_out_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xf700e04d ip_vs_scheduler_err +EXPORT_SYMBOL net/netfilter/nf_conntrack 0x582344e0 nf_conntrack_untracked +EXPORT_SYMBOL net/netfilter/nf_conntrack 0x75d59a18 __nf_ct_ext_add_length +EXPORT_SYMBOL net/netfilter/nf_conntrack 0xfab8a131 __nf_ct_ext_destroy +EXPORT_SYMBOL net/netfilter/nf_conntrack_pptp 0x827cc6a1 pptp_msg_name +EXPORT_SYMBOL net/netfilter/nf_nat 0x612f509c nf_nat_follow_master +EXPORT_SYMBOL net/netfilter/nf_nat 0x78e2efe8 __nf_nat_mangle_tcp_packet +EXPORT_SYMBOL net/netfilter/nf_nat 0x88385416 nf_xfrm_me_harder +EXPORT_SYMBOL net/netfilter/nf_nat 0x8de03787 nf_nat_setup_info +EXPORT_SYMBOL net/netfilter/nf_nat 0x94aa6d6f nf_nat_used_tuple +EXPORT_SYMBOL net/netfilter/nf_nat 0xdb77e892 nf_nat_mangle_udp_packet +EXPORT_SYMBOL net/netfilter/x_tables 0x18b5d62d xt_unregister_matches +EXPORT_SYMBOL net/netfilter/x_tables 0x253e8b44 xt_compat_init_offsets +EXPORT_SYMBOL net/netfilter/x_tables 0x482d26fd xt_alloc_table_info +EXPORT_SYMBOL net/netfilter/x_tables 0x66e7b072 xt_unregister_target +EXPORT_SYMBOL net/netfilter/x_tables 0x684fca5d xt_register_targets +EXPORT_SYMBOL net/netfilter/x_tables 0x73c13f16 xt_register_match +EXPORT_SYMBOL net/netfilter/x_tables 0x7bb5bcad xt_unregister_targets +EXPORT_SYMBOL net/netfilter/x_tables 0x8e5b7035 xt_register_matches +EXPORT_SYMBOL net/netfilter/x_tables 0xac28d2be xt_unregister_match +EXPORT_SYMBOL net/netfilter/x_tables 0xd1a21986 xt_free_table_info +EXPORT_SYMBOL net/netfilter/x_tables 0xd6e74bac xt_find_match +EXPORT_SYMBOL net/netfilter/x_tables 0xde82c7bf xt_register_target +EXPORT_SYMBOL net/netfilter/x_tables 0xdf61d403 xt_find_target +EXPORT_SYMBOL net/nfc/hci/hci 0x01dc3d8e nfc_hci_allocate_device +EXPORT_SYMBOL net/nfc/hci/hci 0x1038f70e nfc_hci_reset_pipes +EXPORT_SYMBOL net/nfc/hci/hci 0x1322c926 nfc_hci_free_device +EXPORT_SYMBOL net/nfc/hci/hci 0x15ea26ec nfc_hci_disconnect_all_gates +EXPORT_SYMBOL net/nfc/hci/hci 0x1c949bb8 nfc_hci_recv_frame +EXPORT_SYMBOL net/nfc/hci/hci 0x43028a27 nfc_hci_result_to_errno +EXPORT_SYMBOL net/nfc/hci/hci 0x5145c4f4 nfc_hci_set_clientdata +EXPORT_SYMBOL net/nfc/hci/hci 0x51764a74 nfc_hci_unregister_device +EXPORT_SYMBOL net/nfc/hci/hci 0x53fb2867 nfc_hci_get_param +EXPORT_SYMBOL net/nfc/hci/hci 0x59356bf9 nfc_hci_connect_gate +EXPORT_SYMBOL net/nfc/hci/hci 0x5e7f5aec nfc_hci_set_param +EXPORT_SYMBOL net/nfc/hci/hci 0x81482560 nfc_hci_reset_pipes_per_host +EXPORT_SYMBOL net/nfc/hci/hci 0x8faeffe2 nfc_hci_get_clientdata +EXPORT_SYMBOL net/nfc/hci/hci 0xa986cbbb nfc_hci_send_cmd +EXPORT_SYMBOL net/nfc/hci/hci 0xbaf7ae7a nfc_hci_send_event +EXPORT_SYMBOL net/nfc/hci/hci 0xbca0b4fd nfc_hci_sak_to_protocol +EXPORT_SYMBOL net/nfc/hci/hci 0xcc830ea1 nfc_hci_disconnect_gate +EXPORT_SYMBOL net/nfc/hci/hci 0xe393c06b nfc_hci_driver_failure +EXPORT_SYMBOL net/nfc/hci/hci 0xe9043984 nfc_hci_send_cmd_async +EXPORT_SYMBOL net/nfc/hci/hci 0xedee51c0 nfc_hci_target_discovered +EXPORT_SYMBOL net/nfc/hci/hci 0xfd2b0729 nfc_hci_register_device +EXPORT_SYMBOL net/nfc/nci/nci 0x29deda78 nci_hci_get_param +EXPORT_SYMBOL net/nfc/nci/nci 0x43da4d0b nci_hci_open_pipe +EXPORT_SYMBOL net/nfc/nci/nci 0x472f87c5 nci_core_conn_close +EXPORT_SYMBOL net/nfc/nci/nci 0x56f4824c nci_hci_send_event +EXPORT_SYMBOL net/nfc/nci/nci 0x5f347a4b nci_nfcee_mode_set +EXPORT_SYMBOL net/nfc/nci/nci 0x7288dbf0 nci_recv_frame +EXPORT_SYMBOL net/nfc/nci/nci 0x84241e3b nci_free_device +EXPORT_SYMBOL net/nfc/nci/nci 0x84eb6797 nci_core_conn_create +EXPORT_SYMBOL net/nfc/nci/nci 0x8e172901 nci_req_complete +EXPORT_SYMBOL net/nfc/nci/nci 0x8e646820 nci_register_device +EXPORT_SYMBOL net/nfc/nci/nci 0x9f324a8d nci_set_config +EXPORT_SYMBOL net/nfc/nci/nci 0xa10ff1d6 nci_unregister_device +EXPORT_SYMBOL net/nfc/nci/nci 0xa872dd43 nci_nfcee_discover +EXPORT_SYMBOL net/nfc/nci/nci 0xba490602 nci_to_errno +EXPORT_SYMBOL net/nfc/nci/nci 0xc781b0c7 nci_hci_connect_gate +EXPORT_SYMBOL net/nfc/nci/nci 0xd3eca601 nci_allocate_device +EXPORT_SYMBOL net/nfc/nci/nci 0xda9297fc nci_hci_send_cmd +EXPORT_SYMBOL net/nfc/nci/nci 0xe673779f nci_hci_set_param +EXPORT_SYMBOL net/nfc/nci/nci 0xe79063b2 nci_hci_dev_session_init +EXPORT_SYMBOL net/nfc/nci/nci 0xf5f331a0 nci_prop_cmd +EXPORT_SYMBOL net/nfc/nfc 0x01c3c8d5 nfc_tm_deactivated +EXPORT_SYMBOL net/nfc/nfc 0x0a861432 nfc_tm_activated +EXPORT_SYMBOL net/nfc/nfc 0x0af8e1a2 nfc_find_se +EXPORT_SYMBOL net/nfc/nfc 0x21b80ae8 nfc_remove_se +EXPORT_SYMBOL net/nfc/nfc 0x23ec61e9 nfc_register_device +EXPORT_SYMBOL net/nfc/nfc 0x27abe654 nfc_proto_register +EXPORT_SYMBOL net/nfc/nfc 0x2e7360ea nfc_proto_unregister +EXPORT_SYMBOL net/nfc/nfc 0x42c3684f nfc_se_transaction +EXPORT_SYMBOL net/nfc/nfc 0x46514014 nfc_set_remote_general_bytes +EXPORT_SYMBOL net/nfc/nfc 0x58678263 nfc_driver_failure +EXPORT_SYMBOL net/nfc/nfc 0x5b8210d5 nfc_dep_link_is_up +EXPORT_SYMBOL net/nfc/nfc 0x67e8e160 nfc_target_lost +EXPORT_SYMBOL net/nfc/nfc 0x6dc2d57d nfc_tm_data_received +EXPORT_SYMBOL net/nfc/nfc 0x7a83da46 nfc_get_local_general_bytes +EXPORT_SYMBOL net/nfc/nfc 0x7e17e7c4 nfc_unregister_device +EXPORT_SYMBOL net/nfc/nfc 0x8710d61a nfc_class +EXPORT_SYMBOL net/nfc/nfc 0x9d895d85 nfc_send_to_raw_sock +EXPORT_SYMBOL net/nfc/nfc 0xa16f2a3c nfc_alloc_recv_skb +EXPORT_SYMBOL net/nfc/nfc 0xa57ee2a5 nfc_allocate_device +EXPORT_SYMBOL net/nfc/nfc 0xac341c0b nfc_add_se +EXPORT_SYMBOL net/nfc/nfc 0xc0c2b962 nfc_fw_download_done +EXPORT_SYMBOL net/nfc/nfc 0xe20775b7 nfc_targets_found +EXPORT_SYMBOL net/nfc/nfc_digital 0x657f5092 nfc_digital_unregister_device +EXPORT_SYMBOL net/nfc/nfc_digital 0xab454ad5 nfc_digital_allocate_device +EXPORT_SYMBOL net/nfc/nfc_digital 0xb7bb4696 nfc_digital_free_device +EXPORT_SYMBOL net/nfc/nfc_digital 0xd1f88a2c nfc_digital_register_device +EXPORT_SYMBOL net/phonet/phonet 0x027d18d6 phonet_header_ops +EXPORT_SYMBOL net/phonet/phonet 0x166f0008 pn_sock_unhash +EXPORT_SYMBOL net/phonet/phonet 0x3b7f4ce2 pn_sock_hash +EXPORT_SYMBOL net/phonet/phonet 0x45e4fa56 phonet_stream_ops +EXPORT_SYMBOL net/phonet/phonet 0x71350357 pn_skb_send +EXPORT_SYMBOL net/phonet/phonet 0xa678cd0d phonet_proto_unregister +EXPORT_SYMBOL net/phonet/phonet 0xb6f3541f phonet_proto_register +EXPORT_SYMBOL net/phonet/phonet 0xeae65fb2 pn_sock_get_port +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x094b2f25 rxrpc_kernel_is_data_last +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x192073f7 key_type_rxrpc +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x1e784e36 rxrpc_kernel_send_data +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x28874168 rxrpc_kernel_get_abort_code +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x2e8a66ac rxrpc_kernel_data_delivered +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x5278db45 rxrpc_kernel_free_skb +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x52a9223f rxrpc_kernel_intercept_rx_messages +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x73162ca3 rxrpc_kernel_get_error_number +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x8455952a rxrpc_get_null_key +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x88dc0d01 rxrpc_get_server_data_key +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xb2ce7455 rxrpc_kernel_abort_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xdcf1031e rxrpc_kernel_reject_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xde46753c rxrpc_kernel_accept_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xecee9c52 rxrpc_kernel_end_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xfcb1dad3 rxrpc_kernel_begin_call +EXPORT_SYMBOL net/sctp/sctp 0xf594f467 sctp_do_peeloff +EXPORT_SYMBOL net/sunrpc/auth_gss/auth_rpcgss 0xd80d8530 gss_mech_put +EXPORT_SYMBOL net/sunrpc/auth_gss/auth_rpcgss 0xde87ce05 gss_mech_get +EXPORT_SYMBOL net/sunrpc/auth_gss/auth_rpcgss 0xfb0438f7 gss_pseudoflavor_to_service +EXPORT_SYMBOL net/sunrpc/sunrpc 0x0a877a26 svc_pool_stats_open +EXPORT_SYMBOL net/sunrpc/sunrpc 0x1934a9ad xdr_truncate_encode +EXPORT_SYMBOL net/sunrpc/sunrpc 0x97733752 xdr_restrict_buflen +EXPORT_SYMBOL net/wimax/wimax 0x8c6f0398 wimax_reset +EXPORT_SYMBOL net/wimax/wimax 0xfe34ed7e wimax_rfkill +EXPORT_SYMBOL net/wireless/cfg80211 0x030c49d3 cfg80211_chandef_dfs_required +EXPORT_SYMBOL net/wireless/cfg80211 0x06c965e1 cfg80211_new_sta +EXPORT_SYMBOL net/wireless/cfg80211 0x09c64fbd ieee80211_frequency_to_channel +EXPORT_SYMBOL net/wireless/cfg80211 0x0b20b527 cfg80211_mgmt_tx_status +EXPORT_SYMBOL net/wireless/cfg80211 0x0e7dbd4d cfg80211_cqm_pktloss_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x1045554d wiphy_new_nm +EXPORT_SYMBOL net/wireless/cfg80211 0x1879fcbd bridge_tunnel_header +EXPORT_SYMBOL net/wireless/cfg80211 0x19a9a177 ieee80211_data_from_8023 +EXPORT_SYMBOL net/wireless/cfg80211 0x19e03378 cfg80211_get_p2p_attr +EXPORT_SYMBOL net/wireless/cfg80211 0x1a1bd5fb cfg80211_rx_mlme_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0x1a68f06a cfg80211_rx_assoc_resp +EXPORT_SYMBOL net/wireless/cfg80211 0x1fa6bd00 ieee80211_data_to_8023 +EXPORT_SYMBOL net/wireless/cfg80211 0x20702e6c cfg80211_ch_switch_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x20cd00f9 cfg80211_sched_scan_results +EXPORT_SYMBOL net/wireless/cfg80211 0x23042393 wiphy_free +EXPORT_SYMBOL net/wireless/cfg80211 0x267fc63b __cfg80211_alloc_event_skb +EXPORT_SYMBOL net/wireless/cfg80211 0x26f45bb0 cfg80211_chandef_usable +EXPORT_SYMBOL net/wireless/cfg80211 0x2765d0e4 cfg80211_get_station +EXPORT_SYMBOL net/wireless/cfg80211 0x2fe2d336 cfg80211_del_sta_sinfo +EXPORT_SYMBOL net/wireless/cfg80211 0x34204146 cfg80211_check_station_change +EXPORT_SYMBOL net/wireless/cfg80211 0x343dc4cf cfg80211_report_obss_beacon +EXPORT_SYMBOL net/wireless/cfg80211 0x35774c55 cfg80211_inform_bss_width +EXPORT_SYMBOL net/wireless/cfg80211 0x37502126 cfg80211_cac_event +EXPORT_SYMBOL net/wireless/cfg80211 0x3d470c4d cfg80211_chandef_compatible +EXPORT_SYMBOL net/wireless/cfg80211 0x3d702d90 cfg80211_stop_iface +EXPORT_SYMBOL net/wireless/cfg80211 0x3e285fec cfg80211_chandef_valid +EXPORT_SYMBOL net/wireless/cfg80211 0x40929040 cfg80211_cqm_rssi_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x4705fac9 cfg80211_check_combinations +EXPORT_SYMBOL net/wireless/cfg80211 0x472103a8 cfg80211_ref_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x495457ff cfg80211_calculate_bitrate +EXPORT_SYMBOL net/wireless/cfg80211 0x4a89ce04 cfg80211_ft_event +EXPORT_SYMBOL net/wireless/cfg80211 0x4b96b3fd cfg80211_remain_on_channel_expired +EXPORT_SYMBOL net/wireless/cfg80211 0x4c27ce57 wiphy_rfkill_set_hw_state +EXPORT_SYMBOL net/wireless/cfg80211 0x50214c28 ieee80211_bss_get_ie +EXPORT_SYMBOL net/wireless/cfg80211 0x503cc61b wiphy_rfkill_stop_polling +EXPORT_SYMBOL net/wireless/cfg80211 0x51d3bde2 __cfg80211_alloc_reply_skb +EXPORT_SYMBOL net/wireless/cfg80211 0x59ec5f8f cfg80211_conn_failed +EXPORT_SYMBOL net/wireless/cfg80211 0x5fc0b9f7 cfg80211_rx_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0x60ce0996 cfg80211_put_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x69b18f43 rfc1042_header +EXPORT_SYMBOL net/wireless/cfg80211 0x6b2b0816 ieee80211_get_num_supported_channels +EXPORT_SYMBOL net/wireless/cfg80211 0x6bf8c2c3 cfg80211_report_wowlan_wakeup +EXPORT_SYMBOL net/wireless/cfg80211 0x6c70f32b cfg80211_classify8021d +EXPORT_SYMBOL net/wireless/cfg80211 0x6d6cb9ad ieee80211_operating_class_to_band +EXPORT_SYMBOL net/wireless/cfg80211 0x7072d7ba cfg80211_scan_done +EXPORT_SYMBOL net/wireless/cfg80211 0x7159824e cfg80211_get_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x7985c06f cfg80211_rx_spurious_frame +EXPORT_SYMBOL net/wireless/cfg80211 0x7b7941c1 cfg80211_inform_bss_width_frame +EXPORT_SYMBOL net/wireless/cfg80211 0x7bd1334e ieee80211_amsdu_to_8023s +EXPORT_SYMBOL net/wireless/cfg80211 0x7ef39823 ieee80211_hdrlen +EXPORT_SYMBOL net/wireless/cfg80211 0x7fe1a403 cfg80211_find_ie +EXPORT_SYMBOL net/wireless/cfg80211 0x80ac5424 __ieee80211_get_channel +EXPORT_SYMBOL net/wireless/cfg80211 0x82576c74 regulatory_set_wiphy_regd +EXPORT_SYMBOL net/wireless/cfg80211 0x83cd130d cfg80211_ibss_joined +EXPORT_SYMBOL net/wireless/cfg80211 0x8492a430 ieee80211_get_response_rate +EXPORT_SYMBOL net/wireless/cfg80211 0x85478c6e wiphy_rfkill_start_polling +EXPORT_SYMBOL net/wireless/cfg80211 0x85c98ae4 cfg80211_get_drvinfo +EXPORT_SYMBOL net/wireless/cfg80211 0x8a7062a5 ieee80211_mandatory_rates +EXPORT_SYMBOL net/wireless/cfg80211 0x8c952339 ieee80211_get_hdrlen_from_skb +EXPORT_SYMBOL net/wireless/cfg80211 0x91d7a142 ieee80211_ie_split_ric +EXPORT_SYMBOL net/wireless/cfg80211 0x9606686d cfg80211_radar_event +EXPORT_SYMBOL net/wireless/cfg80211 0x982e6b6d ieee80211_radiotap_iterator_init +EXPORT_SYMBOL net/wireless/cfg80211 0xa1425906 ieee80211_channel_to_frequency +EXPORT_SYMBOL net/wireless/cfg80211 0xa197b1ff ieee80211_get_mesh_hdrlen +EXPORT_SYMBOL net/wireless/cfg80211 0xa3dd6e24 cfg80211_rx_unexpected_4addr_frame +EXPORT_SYMBOL net/wireless/cfg80211 0xa62cec58 cfg80211_ch_switch_started_notify +EXPORT_SYMBOL net/wireless/cfg80211 0xa7e3c9df cfg80211_probe_status +EXPORT_SYMBOL net/wireless/cfg80211 0xab01c159 cfg80211_sched_scan_stopped +EXPORT_SYMBOL net/wireless/cfg80211 0xab561687 cfg80211_unregister_wdev +EXPORT_SYMBOL net/wireless/cfg80211 0xac713b59 wiphy_apply_custom_regulatory +EXPORT_SYMBOL net/wireless/cfg80211 0xaf117384 regulatory_set_wiphy_regd_sync_rtnl +EXPORT_SYMBOL net/wireless/cfg80211 0xb11d1fc2 cfg80211_connect_result +EXPORT_SYMBOL net/wireless/cfg80211 0xb25547f2 cfg80211_pmksa_candidate_notify +EXPORT_SYMBOL net/wireless/cfg80211 0xb4e2c512 cfg80211_rx_unprot_mlme_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0xbf901dea freq_reg_info +EXPORT_SYMBOL net/wireless/cfg80211 0xc4c25a11 cfg80211_iter_combinations +EXPORT_SYMBOL net/wireless/cfg80211 0xc63f1b81 ieee80211_radiotap_iterator_next +EXPORT_SYMBOL net/wireless/cfg80211 0xc659bbd8 cfg80211_auth_timeout +EXPORT_SYMBOL net/wireless/cfg80211 0xc67d78ab wiphy_register +EXPORT_SYMBOL net/wireless/cfg80211 0xc87aadbb cfg80211_crit_proto_stopped +EXPORT_SYMBOL net/wireless/cfg80211 0xc90fde22 ieee80211_chandef_to_operating_class +EXPORT_SYMBOL net/wireless/cfg80211 0xc9c46ef1 cfg80211_assoc_timeout +EXPORT_SYMBOL net/wireless/cfg80211 0xd0de2b2d cfg80211_gtk_rekey_notify +EXPORT_SYMBOL net/wireless/cfg80211 0xd2afc05b cfg80211_reg_can_beacon +EXPORT_SYMBOL net/wireless/cfg80211 0xd31161c3 cfg80211_cqm_txe_notify +EXPORT_SYMBOL net/wireless/cfg80211 0xd50b0a22 ieee80211_ie_split +EXPORT_SYMBOL net/wireless/cfg80211 0xd6677c46 cfg80211_sched_scan_stopped_rtnl +EXPORT_SYMBOL net/wireless/cfg80211 0xdba126c1 reg_initiator_name +EXPORT_SYMBOL net/wireless/cfg80211 0xdc2f7591 cfg80211_michael_mic_failure +EXPORT_SYMBOL net/wireless/cfg80211 0xe105c730 cfg80211_tx_mlme_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0xe31a03f9 cfg80211_cqm_beacon_loss_notify +EXPORT_SYMBOL net/wireless/cfg80211 0xe5c9ab0c __cfg80211_send_event_skb +EXPORT_SYMBOL net/wireless/cfg80211 0xe9223a2d cfg80211_roamed_bss +EXPORT_SYMBOL net/wireless/cfg80211 0xeaa05ab7 cfg80211_unlink_bss +EXPORT_SYMBOL net/wireless/cfg80211 0xee946639 cfg80211_tdls_oper_request +EXPORT_SYMBOL net/wireless/cfg80211 0xeef9fbc1 cfg80211_reg_can_beacon_relax +EXPORT_SYMBOL net/wireless/cfg80211 0xefc56354 cfg80211_chandef_create +EXPORT_SYMBOL net/wireless/cfg80211 0xf027a542 cfg80211_roamed +EXPORT_SYMBOL net/wireless/cfg80211 0xf146de5b cfg80211_disconnected +EXPORT_SYMBOL net/wireless/cfg80211 0xf887ebe2 wiphy_unregister +EXPORT_SYMBOL net/wireless/cfg80211 0xfaf99f1b cfg80211_notify_new_peer_candidate +EXPORT_SYMBOL net/wireless/cfg80211 0xfd49720c regulatory_hint +EXPORT_SYMBOL net/wireless/cfg80211 0xfed4d591 cfg80211_find_vendor_ie +EXPORT_SYMBOL net/wireless/cfg80211 0xfedd22d2 cfg80211_ready_on_channel +EXPORT_SYMBOL net/wireless/lib80211 0x2de0f52e lib80211_get_crypto_ops +EXPORT_SYMBOL net/wireless/lib80211 0x572a7aa5 lib80211_crypt_delayed_deinit +EXPORT_SYMBOL net/wireless/lib80211 0xb6e748cb lib80211_crypt_info_free +EXPORT_SYMBOL net/wireless/lib80211 0xd27ca72a lib80211_register_crypto_ops +EXPORT_SYMBOL net/wireless/lib80211 0xd431f5cb lib80211_unregister_crypto_ops +EXPORT_SYMBOL net/wireless/lib80211 0xdaade78b lib80211_crypt_info_init +EXPORT_SYMBOL sound/ac97_bus 0x4e0efe47 ac97_bus_type +EXPORT_SYMBOL sound/core/oss/snd-mixer-oss 0xe12e533b 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 0x4d8e53b1 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 0x766a9e33 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 0x93612b13 snd_seq_kernel_client_enqueue_blocking +EXPORT_SYMBOL sound/core/seq/snd-seq 0xb8e448a0 snd_seq_set_queue_tempo +EXPORT_SYMBOL sound/core/seq/snd-seq 0xcac0a3be snd_seq_kernel_client_enqueue +EXPORT_SYMBOL sound/core/seq/snd-seq 0xe934da1d snd_seq_dump_var_event +EXPORT_SYMBOL sound/core/seq/snd-seq 0xff900a06 snd_seq_kernel_client_write_poll +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0x091def1c snd_seq_autoload_exit +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0x370a0736 snd_seq_autoload_init +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0x6339b6d0 snd_seq_device_load_drivers +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0xb4240134 snd_seq_device_new +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 0xf0a1fdb3 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 0xd7c7afcc snd_midi_event_encode +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0xe60fb228 snd_midi_event_reset_decode +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0xecbde43c snd_midi_event_encode_byte +EXPORT_SYMBOL sound/core/seq/snd-seq-virmidi 0x00f8188d snd_virmidi_new +EXPORT_SYMBOL sound/core/snd 0x04f3989d snd_ctl_new1 +EXPORT_SYMBOL sound/core/snd 0x05270b90 snd_ctl_boolean_stereo_info +EXPORT_SYMBOL sound/core/snd 0x15eb70c6 snd_info_create_card_entry +EXPORT_SYMBOL sound/core/snd 0x1638631a snd_card_set_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 0x1a1ae90f snd_card_new +EXPORT_SYMBOL sound/core/snd 0x1f52732d snd_ctl_register_ioctl_compat +EXPORT_SYMBOL sound/core/snd 0x20baeb35 snd_unregister_device +EXPORT_SYMBOL sound/core/snd 0x24a94b26 snd_info_get_line +EXPORT_SYMBOL sound/core/snd 0x24ff6ed4 snd_power_wait +EXPORT_SYMBOL sound/core/snd 0x251c2daf snd_unregister_oss_device +EXPORT_SYMBOL sound/core/snd 0x28a94cca snd_device_free +EXPORT_SYMBOL sound/core/snd 0x2ae3deaa release_and_free_resource +EXPORT_SYMBOL sound/core/snd 0x31b10aff snd_seq_root +EXPORT_SYMBOL sound/core/snd 0x342a2354 copy_to_user_fromio +EXPORT_SYMBOL sound/core/snd 0x3923aacf snd_info_register +EXPORT_SYMBOL sound/core/snd 0x3971b4df snd_ecards_limit +EXPORT_SYMBOL sound/core/snd 0x3b57aeb7 snd_card_disconnect +EXPORT_SYMBOL sound/core/snd 0x3cb0a4c0 snd_info_create_module_entry +EXPORT_SYMBOL sound/core/snd 0x3f8b865d snd_jack_set_parent +EXPORT_SYMBOL sound/core/snd 0x499ada5d snd_ctl_remove +EXPORT_SYMBOL sound/core/snd 0x4a3ea5c0 snd_request_card +EXPORT_SYMBOL sound/core/snd 0x4aa3685a snd_card_file_remove +EXPORT_SYMBOL sound/core/snd 0x4ab396e9 snd_card_file_add +EXPORT_SYMBOL sound/core/snd 0x50f488be snd_register_device +EXPORT_SYMBOL sound/core/snd 0x550009f8 snd_ctl_remove_id +EXPORT_SYMBOL sound/core/snd 0x57f8c830 snd_jack_set_key +EXPORT_SYMBOL sound/core/snd 0x592b5ec4 snd_info_free_entry +EXPORT_SYMBOL sound/core/snd 0x5b3e8c15 snd_jack_add_new_kctl +EXPORT_SYMBOL sound/core/snd 0x603b9da7 snd_ctl_boolean_mono_info +EXPORT_SYMBOL sound/core/snd 0x66f50b38 snd_register_oss_device +EXPORT_SYMBOL sound/core/snd 0x6845b962 snd_mixer_oss_notify_callback +EXPORT_SYMBOL sound/core/snd 0x6d14a0ef snd_ctl_replace +EXPORT_SYMBOL sound/core/snd 0x70c15ac1 snd_dma_disable +EXPORT_SYMBOL sound/core/snd 0x7474fde9 snd_ctl_find_numid +EXPORT_SYMBOL sound/core/snd 0x7b441e51 snd_card_free_when_closed +EXPORT_SYMBOL sound/core/snd 0x7f9b3932 snd_ctl_free_one +EXPORT_SYMBOL sound/core/snd 0x81b69e41 snd_ctl_enum_info +EXPORT_SYMBOL sound/core/snd 0x84adeb68 snd_jack_new +EXPORT_SYMBOL sound/core/snd 0x85bf65d8 snd_ctl_make_virtual_master +EXPORT_SYMBOL sound/core/snd 0x87e424ef snd_pci_quirk_lookup +EXPORT_SYMBOL sound/core/snd 0x8b163d13 snd_ctl_unregister_ioctl_compat +EXPORT_SYMBOL sound/core/snd 0x8df3789f snd_oss_info_register +EXPORT_SYMBOL sound/core/snd 0x8f595b11 snd_major +EXPORT_SYMBOL sound/core/snd 0x9e6d79f8 snd_info_get_str +EXPORT_SYMBOL sound/core/snd 0xa0fd2427 snd_pci_quirk_lookup_id +EXPORT_SYMBOL sound/core/snd 0xa7f74deb snd_component_add +EXPORT_SYMBOL sound/core/snd 0xb212a053 snd_ctl_register_ioctl +EXPORT_SYMBOL sound/core/snd 0xb2df8d3f snd_ctl_find_id +EXPORT_SYMBOL sound/core/snd 0xb2e5ae4a snd_lookup_minor_data +EXPORT_SYMBOL sound/core/snd 0xb30bdafb snd_card_free +EXPORT_SYMBOL sound/core/snd 0xb43076f2 snd_card_register +EXPORT_SYMBOL sound/core/snd 0xba34fee1 snd_ctl_add +EXPORT_SYMBOL sound/core/snd 0xbc3242c6 snd_ctl_rename_id +EXPORT_SYMBOL sound/core/snd 0xc05d3f76 snd_ctl_notify +EXPORT_SYMBOL sound/core/snd 0xc6b861ce snd_cards +EXPORT_SYMBOL sound/core/snd 0xe97b3d67 _snd_ctl_add_slave +EXPORT_SYMBOL sound/core/snd 0xf07834a7 snd_jack_report +EXPORT_SYMBOL sound/core/snd 0xf231f43a snd_ctl_unregister_ioctl +EXPORT_SYMBOL sound/core/snd 0xf3b8ac10 snd_device_register +EXPORT_SYMBOL sound/core/snd 0xf74abfd9 snd_device_new +EXPORT_SYMBOL sound/core/snd 0xfffd89db copy_from_user_toio +EXPORT_SYMBOL sound/core/snd-hwdep 0xe00635ca snd_hwdep_new +EXPORT_SYMBOL sound/core/snd-pcm 0x01babafc snd_pcm_lib_get_vmalloc_page +EXPORT_SYMBOL sound/core/snd-pcm 0x01ee1c89 snd_pcm_lib_read +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 0x06b310c9 snd_free_pages +EXPORT_SYMBOL sound/core/snd-pcm 0x107cf615 snd_pcm_lib_readv +EXPORT_SYMBOL sound/core/snd-pcm 0x13514305 snd_pcm_lib_free_vmalloc_buffer +EXPORT_SYMBOL sound/core/snd-pcm 0x19582e2a snd_pcm_lib_malloc_pages +EXPORT_SYMBOL sound/core/snd-pcm 0x1d027e4b snd_pcm_format_signed +EXPORT_SYMBOL sound/core/snd-pcm 0x1d0544bf snd_pcm_lib_mmap_iomem +EXPORT_SYMBOL sound/core/snd-pcm 0x202bf813 snd_pcm_hw_constraint_pow2 +EXPORT_SYMBOL sound/core/snd-pcm 0x2bb8f43a snd_pcm_new +EXPORT_SYMBOL sound/core/snd-pcm 0x308a65ad snd_pcm_hw_rule_noresample +EXPORT_SYMBOL sound/core/snd-pcm 0x372f9f20 snd_pcm_new_stream +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 0x3acb450d snd_pcm_hw_constraint_mask64 +EXPORT_SYMBOL sound/core/snd-pcm 0x3ba7ba9e snd_pcm_lib_writev +EXPORT_SYMBOL sound/core/snd-pcm 0x40e93300 snd_pcm_lib_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 0x51b0573c snd_dma_alloc_pages_fallback +EXPORT_SYMBOL sound/core/snd-pcm 0x52e3e4a5 snd_pcm_hw_param_value +EXPORT_SYMBOL sound/core/snd-pcm 0x549a09fe _snd_pcm_lib_alloc_vmalloc_buffer +EXPORT_SYMBOL sound/core/snd-pcm 0x55a234da snd_pcm_set_sync +EXPORT_SYMBOL sound/core/snd-pcm 0x55eb50a0 snd_pcm_lib_preallocate_pages +EXPORT_SYMBOL sound/core/snd-pcm 0x5898dcba snd_malloc_pages +EXPORT_SYMBOL sound/core/snd-pcm 0x599816b2 snd_pcm_hw_constraint_ratnums +EXPORT_SYMBOL sound/core/snd-pcm 0x5a741731 snd_dma_free_pages +EXPORT_SYMBOL sound/core/snd-pcm 0x5e0d2eb0 snd_pcm_hw_rule_add +EXPORT_SYMBOL sound/core/snd-pcm 0x5e7f4920 snd_pcm_format_set_silence +EXPORT_SYMBOL sound/core/snd-pcm 0x6119d21b snd_pcm_mmap_data +EXPORT_SYMBOL sound/core/snd-pcm 0x644169fa snd_pcm_limit_hw_rates +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 0x6ac7ac47 snd_pcm_hw_refine +EXPORT_SYMBOL sound/core/snd-pcm 0x6ef8fcd8 snd_pcm_format_linear +EXPORT_SYMBOL sound/core/snd-pcm 0x7291b5aa snd_pcm_stop +EXPORT_SYMBOL sound/core/snd-pcm 0x79058c65 snd_pcm_lib_write +EXPORT_SYMBOL sound/core/snd-pcm 0x7ad5629e snd_pcm_lib_preallocate_pages_for_all +EXPORT_SYMBOL sound/core/snd-pcm 0x7d71b5dc snd_pcm_kernel_ioctl +EXPORT_SYMBOL sound/core/snd-pcm 0x834dc955 snd_pcm_format_size +EXPORT_SYMBOL sound/core/snd-pcm 0x89b8efda snd_pcm_hw_constraint_ranges +EXPORT_SYMBOL sound/core/snd-pcm 0x8bbd7713 snd_pcm_hw_constraint_step +EXPORT_SYMBOL sound/core/snd-pcm 0x94098ff8 snd_interval_list +EXPORT_SYMBOL sound/core/snd-pcm 0x98b1587d snd_pcm_hw_constraint_integer +EXPORT_SYMBOL sound/core/snd-pcm 0x9cae3cb9 snd_pcm_hw_constraint_msbits +EXPORT_SYMBOL sound/core/snd-pcm 0x9d504282 snd_pcm_release_substream +EXPORT_SYMBOL sound/core/snd-pcm 0xa61aa028 snd_pcm_format_unsigned +EXPORT_SYMBOL sound/core/snd-pcm 0xa8e64139 snd_pcm_lib_free_pages +EXPORT_SYMBOL sound/core/snd-pcm 0xa9ec1346 snd_pcm_set_ops +EXPORT_SYMBOL sound/core/snd-pcm 0xac831ac7 snd_pcm_hw_param_first +EXPORT_SYMBOL sound/core/snd-pcm 0xadc02086 snd_pcm_notify +EXPORT_SYMBOL sound/core/snd-pcm 0xb667c542 snd_pcm_suspend +EXPORT_SYMBOL sound/core/snd-pcm 0xb9638db4 snd_pcm_rate_to_rate_bit +EXPORT_SYMBOL sound/core/snd-pcm 0xbb424ca2 snd_pcm_hw_constraint_ratdens +EXPORT_SYMBOL sound/core/snd-pcm 0xc9a09ae8 snd_pcm_open_substream +EXPORT_SYMBOL sound/core/snd-pcm 0xcaa54f70 snd_pcm_hw_param_last +EXPORT_SYMBOL sound/core/snd-pcm 0xcb9d58a7 snd_pcm_new_internal +EXPORT_SYMBOL sound/core/snd-pcm 0xd54daa49 snd_pcm_period_elapsed +EXPORT_SYMBOL sound/core/snd-pcm 0xdb9b3ee2 snd_pcm_lib_preallocate_free_for_all +EXPORT_SYMBOL sound/core/snd-pcm 0xe56a9336 snd_pcm_format_width +EXPORT_SYMBOL sound/core/snd-pcm 0xe60762af snd_pcm_suspend_all +EXPORT_SYMBOL sound/core/snd-pcm 0xe9cd2669 snd_pcm_hw_constraint_list +EXPORT_SYMBOL sound/core/snd-pcm 0xee38ac04 snd_pcm_hw_constraint_minmax +EXPORT_SYMBOL sound/core/snd-pcm 0xf3797152 snd_interval_ratnum +EXPORT_SYMBOL sound/core/snd-pcm 0xfcfececf snd_dma_alloc_pages +EXPORT_SYMBOL sound/core/snd-pcm 0xff6104d0 snd_pcm_rate_bit_to_rate +EXPORT_SYMBOL sound/core/snd-rawmidi 0x0b2a5534 snd_rawmidi_transmit_peek +EXPORT_SYMBOL sound/core/snd-rawmidi 0x0c6c896b snd_rawmidi_output_params +EXPORT_SYMBOL sound/core/snd-rawmidi 0x0d7852f3 snd_rawmidi_kernel_release +EXPORT_SYMBOL sound/core/snd-rawmidi 0x15bf3a67 snd_rawmidi_input_params +EXPORT_SYMBOL sound/core/snd-rawmidi 0x30e4de0d snd_rawmidi_info_select +EXPORT_SYMBOL sound/core/snd-rawmidi 0x31661dee snd_rawmidi_receive +EXPORT_SYMBOL sound/core/snd-rawmidi 0x5eccfad7 snd_rawmidi_drain_output +EXPORT_SYMBOL sound/core/snd-rawmidi 0x62552330 snd_rawmidi_transmit +EXPORT_SYMBOL sound/core/snd-rawmidi 0x6c1fdd40 snd_rawmidi_kernel_write +EXPORT_SYMBOL sound/core/snd-rawmidi 0x7f0a71b5 snd_rawmidi_kernel_open +EXPORT_SYMBOL sound/core/snd-rawmidi 0x96b809e4 snd_rawmidi_drop_output +EXPORT_SYMBOL sound/core/snd-rawmidi 0xa18b6ac4 snd_rawmidi_drain_input +EXPORT_SYMBOL sound/core/snd-rawmidi 0xa43b472b snd_rawmidi_new +EXPORT_SYMBOL sound/core/snd-rawmidi 0xc340ea0a snd_rawmidi_set_ops +EXPORT_SYMBOL sound/core/snd-rawmidi 0xcf137b78 snd_rawmidi_kernel_read +EXPORT_SYMBOL sound/core/snd-rawmidi 0xf21405f4 snd_rawmidi_transmit_ack +EXPORT_SYMBOL sound/core/snd-rawmidi 0xfa121ba6 snd_rawmidi_transmit_empty +EXPORT_SYMBOL sound/core/snd-timer 0x08a8532b snd_timer_continue +EXPORT_SYMBOL sound/core/snd-timer 0x0ec78c6b snd_timer_global_register +EXPORT_SYMBOL sound/core/snd-timer 0x5dd542b1 snd_timer_close +EXPORT_SYMBOL sound/core/snd-timer 0x67e2cb09 snd_timer_notify +EXPORT_SYMBOL sound/core/snd-timer 0x7c5490f7 snd_timer_pause +EXPORT_SYMBOL sound/core/snd-timer 0x83998476 snd_timer_global_new +EXPORT_SYMBOL sound/core/snd-timer 0x94cad609 snd_timer_start +EXPORT_SYMBOL sound/core/snd-timer 0xa1abf5c2 snd_timer_stop +EXPORT_SYMBOL sound/core/snd-timer 0xbe89b45e snd_timer_new +EXPORT_SYMBOL sound/core/snd-timer 0xd03d59b3 snd_timer_global_free +EXPORT_SYMBOL sound/core/snd-timer 0xd589c3e2 snd_timer_resolution +EXPORT_SYMBOL sound/core/snd-timer 0xe908324b snd_timer_open +EXPORT_SYMBOL sound/core/snd-timer 0xf7cdf72d snd_timer_interrupt +EXPORT_SYMBOL sound/drivers/mpu401/snd-mpu401-uart 0x589e95c7 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 0x0722a1d3 snd_opl3_hwdep_new +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x430ab08a snd_opl3_interrupt +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x5cea401e snd_opl3_reset +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x91075e36 snd_opl3_load_patch +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x952e41b3 snd_opl3_find_patch +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xae4a65bf snd_opl3_timer_new +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xb9a860f3 snd_opl3_create +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xea41280f snd_opl3_init +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xee987b4b snd_opl3_new +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x226138b0 snd_vx_threaded_irq_handler +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x3aa73a2d snd_vx_check_reg_bit +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x5d17ab05 snd_vx_free_firmware +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x693c9ed1 snd_vx_setup_firmware +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x6e164f01 snd_vx_dsp_boot +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x8c182f94 snd_vx_resume +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x95dbda04 snd_vx_dsp_load +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x9c98eadb snd_vx_suspend +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xb9438cec snd_vx_load_boot_image +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xdb0a059f snd_vx_create +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xf1f04d23 snd_vx_irq_handler +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x12179490 cmp_connection_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x19a35fbe fw_iso_resources_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x1faa0c0a avc_general_get_plug_info +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x20254e45 amdtp_syt_intervals +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x258f4b06 iso_packets_buffer_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x33b91552 cmp_connection_check_used +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x36531661 amdtp_stream_pcm_abort +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x403c95bb amdtp_stream_add_pcm_hw_constraints +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x432dc50d fw_iso_resources_free +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x4a9bce71 amdtp_stream_stop +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x53ca18e8 amdtp_rate_table +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x54916bcf fw_iso_resources_update +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x6d203847 avc_general_get_sig_fmt +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x77325e88 amdtp_stream_get_max_payload +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x89f9f260 amdtp_stream_set_pcm_format +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x9f8f9286 amdtp_stream_pcm_prepare +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xa1de032c amdtp_stream_set_parameters +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xa83976da amdtp_stream_start +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xb0325d34 snd_fw_transaction +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xb4bafacd fw_iso_resources_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xc3937e3d cmp_connection_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xcada391f cmp_connection_establish +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xd1363c16 fcp_avc_transaction +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xd38d55d0 amdtp_stream_update +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xe31071e3 amdtp_stream_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xe347f835 fcp_bus_reset +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xe4b4f9e8 fw_iso_resources_allocate +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xe7dcae26 amdtp_stream_pcm_pointer +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xea45bf42 cmp_connection_break +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xeccc8534 avc_general_set_sig_fmt +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xef70e2b4 iso_packets_buffer_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xf2ee3bdc amdtp_stream_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xf915e147 cmp_connection_update +EXPORT_SYMBOL sound/i2c/other/snd-ak4113 0x13e53340 snd_ak4113_resume +EXPORT_SYMBOL sound/i2c/other/snd-ak4113 0x2b2275ad snd_ak4113_suspend +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x12fe6891 snd_ak4114_resume +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x28def103 snd_ak4114_create +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x6c6e34c9 snd_ak4114_external_rate +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x7f0a4089 snd_ak4114_build +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x89fb6e90 snd_ak4114_reg_write +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0xa2958e1e snd_ak4114_suspend +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0xbe071cc2 snd_ak4114_reinit +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0xf3b9a123 snd_ak4114_check_rate_and_errors +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0x299ba82e snd_ak4117_reinit +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0x4fc39859 snd_ak4117_build +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0x663f914e snd_ak4117_external_rate +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0xa826fb78 snd_ak4117_create +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0xb2824375 snd_ak4117_reg_write +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0xd0377d70 snd_ak4117_check_rate_and_errors +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0x28a5e663 snd_akm4xxx_build_controls +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0x5a42c198 snd_akm4xxx_reset +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0x69e34993 snd_akm4xxx_init +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0x71853ebd snd_akm4xxx_write +EXPORT_SYMBOL sound/i2c/other/snd-pt2258 0x2c03a217 snd_pt2258_build_controls +EXPORT_SYMBOL sound/i2c/other/snd-pt2258 0x4770403a snd_pt2258_reset +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x0c752685 snd_cs8427_create +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x2baca84c snd_cs8427_iec958_build +EXPORT_SYMBOL sound/i2c/snd-cs8427 0xb3d05e91 snd_cs8427_iec958_active +EXPORT_SYMBOL sound/i2c/snd-cs8427 0xc391a11f snd_cs8427_init +EXPORT_SYMBOL sound/i2c/snd-cs8427 0xdc948bde snd_cs8427_iec958_pcm +EXPORT_SYMBOL sound/i2c/snd-cs8427 0xfd6f2dd9 snd_cs8427_reg_write +EXPORT_SYMBOL sound/i2c/snd-i2c 0x1b048c67 snd_i2c_device_free +EXPORT_SYMBOL sound/i2c/snd-i2c 0x33fc344b snd_i2c_probeaddr +EXPORT_SYMBOL sound/i2c/snd-i2c 0x422021d7 snd_i2c_readbytes +EXPORT_SYMBOL sound/i2c/snd-i2c 0x8edbb766 snd_i2c_bus_create +EXPORT_SYMBOL sound/i2c/snd-i2c 0xafef1065 snd_i2c_device_create +EXPORT_SYMBOL sound/i2c/snd-i2c 0xe7a6524d snd_i2c_sendbytes +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x0c7ce739 snd_sbmixer_resume +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x17dc51d5 snd_sbmixer_read +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x4ddbce30 snd_sbmixer_new +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x69e830ae snd_sbdsp_create +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0xb4a3a691 snd_sbdsp_reset +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0xb897fcd6 snd_sbmixer_add_ctl +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0xcf890b74 snd_sbmixer_write +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0xd9a2f237 snd_sbdsp_command +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0xdc9b50fd snd_sbmixer_suspend +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0xdf63cf49 snd_sbdsp_get_byte +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x009ed303 snd_ac97_update_bits +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x0d8d6f44 snd_ac97_write +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x43d652a9 snd_ac97_update +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x49fce45b snd_ac97_tune_hardware +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x565dcadd snd_ac97_read +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x5cea92fc snd_ac97_resume +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x9567843e snd_ac97_suspend +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x99c30f84 snd_ac97_write_cache +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xbb8a01c0 snd_ac97_get_short_name +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xc9f61d00 snd_ac97_mixer +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xca1969ed snd_ac97_pcm_double_rate_rules +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xd71b11a3 snd_ac97_pcm_close +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xde84a154 snd_ac97_pcm_assign +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xe5812214 snd_ac97_pcm_open +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xeafccd50 snd_ac97_bus +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xf5dfcdb7 snd_ac97_set_rate +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xf644fc18 snd_ac97_update_power +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x07aed76f snd_emu10k1_synth_free +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x0d5851eb snd_emu10k1_memblk_map +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x6bc080f6 snd_emu10k1_ptr_read +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x702a03a0 snd_emu10k1_synth_alloc +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x8514f79f snd_emu10k1_voice_free +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x86a3e19e snd_emu10k1_voice_alloc +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xc5f53481 snd_emu10k1_ptr_write +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xc70fc216 snd_emu10k1_synth_bzero +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xd01cf524 snd_emu10k1_synth_copy_from_user +EXPORT_SYMBOL sound/pci/ice1712/snd-ice17xx-ak4xxx 0x1945322a snd_ice1712_akm4xxx_build_controls +EXPORT_SYMBOL sound/pci/ice1712/snd-ice17xx-ak4xxx 0x64f410ac snd_ice1712_akm4xxx_init +EXPORT_SYMBOL sound/pci/ice1712/snd-ice17xx-ak4xxx 0xd286ba5b snd_ice1712_akm4xxx_free +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x0e655419 oxygen_write16_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x13e03a60 oxygen_pci_probe +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x1b8520ef oxygen_write_ac97_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x1b864a13 oxygen_write8_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x1d84ba1a oxygen_write16 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x2ea98db1 oxygen_write32 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x3308596b oxygen_write_spi +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x3db9d16d oxygen_write8 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x407da153 oxygen_reset_uart +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x4eef356c oxygen_pci_remove +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x4fac7ef7 oxygen_write_uart +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x5da66451 oxygen_read32 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x863c30f8 oxygen_write32_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x9f1bbeb1 oxygen_update_dac_routing +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xc226592a oxygen_read16 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xd8d6818e oxygen_write_i2c +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xe1fe5abf oxygen_read8 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xf6e2e781 oxygen_pci_shutdown +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xf993f0c2 oxygen_write_ac97 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xfabc8eac oxygen_read_ac97 +EXPORT_SYMBOL sound/pci/trident/snd-trident 0x0204f60a snd_trident_write_voice_regs +EXPORT_SYMBOL sound/pci/trident/snd-trident 0x24853e1d snd_trident_stop_voice +EXPORT_SYMBOL sound/pci/trident/snd-trident 0x8e13e85c snd_trident_alloc_voice +EXPORT_SYMBOL sound/pci/trident/snd-trident 0x9cb4c943 snd_trident_start_voice +EXPORT_SYMBOL sound/pci/trident/snd-trident 0xdc45a43f snd_trident_free_voice +EXPORT_SYMBOL sound/soc/codecs/snd-soc-tlv320aic23 0x65aaa8bf tlv320aic23_regmap +EXPORT_SYMBOL sound/soc/codecs/snd-soc-tlv320aic23 0xded9f302 tlv320aic23_probe +EXPORT_SYMBOL sound/soc/snd-soc-core 0x1da8cd42 snd_soc_alloc_ac97_codec +EXPORT_SYMBOL sound/soundcore 0x17f25bc8 register_sound_special +EXPORT_SYMBOL sound/soundcore 0x45560398 sound_class +EXPORT_SYMBOL sound/soundcore 0x50b10b0e register_sound_midi +EXPORT_SYMBOL sound/soundcore 0x72331f82 register_sound_mixer +EXPORT_SYMBOL sound/soundcore 0x7afc9d8a unregister_sound_mixer +EXPORT_SYMBOL sound/soundcore 0x99c95fa5 unregister_sound_special +EXPORT_SYMBOL sound/soundcore 0xcd083b10 unregister_sound_dsp +EXPORT_SYMBOL sound/soundcore 0xdad8fd7a register_sound_dsp +EXPORT_SYMBOL sound/soundcore 0xed202cad register_sound_special_device +EXPORT_SYMBOL sound/soundcore 0xfdab6de3 unregister_sound_midi +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x23c86406 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 0x7ab4389a snd_emux_new +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0xa0dedd72 snd_emux_register +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0xb6f2f540 snd_emux_unlock_voice +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0xd6ee7f67 snd_emux_lock_voice +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0xeb25b7f6 snd_emux_free +EXPORT_SYMBOL sound/synth/snd-util-mem 0x13724e37 snd_util_mem_alloc +EXPORT_SYMBOL sound/synth/snd-util-mem 0x26908be0 __snd_util_memblk_new +EXPORT_SYMBOL sound/synth/snd-util-mem 0x4157e98f __snd_util_mem_free +EXPORT_SYMBOL sound/synth/snd-util-mem 0x5f2b6c60 snd_util_mem_avail +EXPORT_SYMBOL sound/synth/snd-util-mem 0x7baaea28 __snd_util_mem_alloc +EXPORT_SYMBOL sound/synth/snd-util-mem 0xa473ca10 snd_util_mem_free +EXPORT_SYMBOL sound/synth/snd-util-mem 0xbb0c7c5d snd_util_memhdr_free +EXPORT_SYMBOL sound/synth/snd-util-mem 0xd3fb1eb6 snd_util_memhdr_new +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 0xe55cd416 snd_usbmidi_create +EXPORT_SYMBOL vmlinux 0x0002821e request_key_async_with_auxdata +EXPORT_SYMBOL vmlinux 0x000bd4e0 rawv6_mh_filter_unregister +EXPORT_SYMBOL vmlinux 0x0014eacd blk_mq_kick_requeue_list +EXPORT_SYMBOL vmlinux 0x0034107a vlan_dev_vlan_id +EXPORT_SYMBOL vmlinux 0x003ab13e validate_sp +EXPORT_SYMBOL vmlinux 0x0050b864 dev_get_nest_level +EXPORT_SYMBOL vmlinux 0x0070cd1f queue_delayed_work_on +EXPORT_SYMBOL vmlinux 0x00b0c003 phy_driver_register +EXPORT_SYMBOL vmlinux 0x00b2cf30 ip_mc_dec_group +EXPORT_SYMBOL vmlinux 0x00ca0c5b kernel_param_lock +EXPORT_SYMBOL vmlinux 0x00d3faa5 tty_name +EXPORT_SYMBOL vmlinux 0x00d7e722 vme_lm_count +EXPORT_SYMBOL vmlinux 0x00e5f9d0 vm_iomap_memory +EXPORT_SYMBOL vmlinux 0x00f73b85 noop_qdisc +EXPORT_SYMBOL vmlinux 0x00ff7885 rtnl_unicast +EXPORT_SYMBOL vmlinux 0x01000e51 schedule +EXPORT_SYMBOL vmlinux 0x0101d5b1 ip_idents_reserve +EXPORT_SYMBOL vmlinux 0x01139ffc max_mapnr +EXPORT_SYMBOL vmlinux 0x012a97fc xor_altivec_4 +EXPORT_SYMBOL vmlinux 0x012f5841 of_match_node +EXPORT_SYMBOL vmlinux 0x01380636 phy_resume +EXPORT_SYMBOL vmlinux 0x013ad76e fixed_phy_update_state +EXPORT_SYMBOL vmlinux 0x014a4033 vlan_ioctl_set +EXPORT_SYMBOL vmlinux 0x016e5c2a mod_timer +EXPORT_SYMBOL vmlinux 0x018987e7 ppp_output_wakeup +EXPORT_SYMBOL vmlinux 0x01918d86 mipi_dsi_driver_register_full +EXPORT_SYMBOL vmlinux 0x0192d545 scsi_bios_ptable +EXPORT_SYMBOL vmlinux 0x01a0400a neigh_changeaddr +EXPORT_SYMBOL vmlinux 0x01a8fbcc proc_mkdir +EXPORT_SYMBOL vmlinux 0x01b3f46f skb_get_hash_perturb +EXPORT_SYMBOL vmlinux 0x01bcf1a7 jbd2_journal_get_undo_access +EXPORT_SYMBOL vmlinux 0x01bdb168 wait_for_key_construction +EXPORT_SYMBOL vmlinux 0x01e11721 mipi_dsi_dcs_nop +EXPORT_SYMBOL vmlinux 0x01f1d50e __devm_gpiod_get_index_optional +EXPORT_SYMBOL vmlinux 0x02175eb4 netdev_all_upper_get_next_dev_rcu +EXPORT_SYMBOL vmlinux 0x0236ac77 kernel_getsockname +EXPORT_SYMBOL vmlinux 0x024bf827 radix_tree_gang_lookup_tag_slot +EXPORT_SYMBOL vmlinux 0x02649054 security_sock_rcv_skb +EXPORT_SYMBOL vmlinux 0x0274dc2b netif_get_num_default_rss_queues +EXPORT_SYMBOL vmlinux 0x028b68b2 sock_register +EXPORT_SYMBOL vmlinux 0x02a18c74 nf_conntrack_destroy +EXPORT_SYMBOL vmlinux 0x02a6ce5a crc16_table +EXPORT_SYMBOL vmlinux 0x02b16a51 __inode_sub_bytes +EXPORT_SYMBOL vmlinux 0x02b1c4fa of_translate_address +EXPORT_SYMBOL vmlinux 0x02bfa651 pci_release_selected_regions +EXPORT_SYMBOL vmlinux 0x02ea111e scsi_driverbyte_string +EXPORT_SYMBOL vmlinux 0x02f3346f nf_ct_attach +EXPORT_SYMBOL vmlinux 0x02f343ac sock_no_getname +EXPORT_SYMBOL vmlinux 0x02fd43a0 of_find_matching_node_and_match +EXPORT_SYMBOL vmlinux 0x03104747 genphy_resume +EXPORT_SYMBOL vmlinux 0x031b23e1 of_find_backlight_by_node +EXPORT_SYMBOL vmlinux 0x0334da4e scsi_command_size_tbl +EXPORT_SYMBOL vmlinux 0x0347771e dquot_get_dqblk +EXPORT_SYMBOL vmlinux 0x0353067f __alloc_pages_nodemask +EXPORT_SYMBOL vmlinux 0x03592ea0 security_unix_stream_connect +EXPORT_SYMBOL vmlinux 0x03663056 tcf_exts_change +EXPORT_SYMBOL vmlinux 0x0366307a console_suspend_enabled +EXPORT_SYMBOL vmlinux 0x037a0cba kfree +EXPORT_SYMBOL vmlinux 0x03a26ed1 tso_build_hdr +EXPORT_SYMBOL vmlinux 0x03a38c76 register_gifconf +EXPORT_SYMBOL vmlinux 0x03b20589 tcp_ioctl +EXPORT_SYMBOL vmlinux 0x03be3452 pci_stop_and_remove_bus_device +EXPORT_SYMBOL vmlinux 0x03bf7fe6 dmam_free_coherent +EXPORT_SYMBOL vmlinux 0x03d4963e mark_buffer_dirty_inode +EXPORT_SYMBOL vmlinux 0x03e67e55 blk_alloc_queue_node +EXPORT_SYMBOL vmlinux 0x03ebda85 dns_query +EXPORT_SYMBOL vmlinux 0x03eecc34 blk_integrity_merge_rq +EXPORT_SYMBOL vmlinux 0x03f5bbfa tcp_try_fastopen +EXPORT_SYMBOL vmlinux 0x03fd2571 vm_unmap_ram +EXPORT_SYMBOL vmlinux 0x04072fb9 tty_register_driver +EXPORT_SYMBOL vmlinux 0x04074f48 ioremap +EXPORT_SYMBOL vmlinux 0x0422fe4a inet_csk_timer_bug_msg +EXPORT_SYMBOL vmlinux 0x04482cdb __refrigerator +EXPORT_SYMBOL vmlinux 0x0478b055 ata_print_version +EXPORT_SYMBOL vmlinux 0x0487f831 fb_find_best_display +EXPORT_SYMBOL vmlinux 0x0496bf4c bprm_change_interp +EXPORT_SYMBOL vmlinux 0x049a7d93 seq_file_path +EXPORT_SYMBOL vmlinux 0x04b3d935 scsi_host_set_state +EXPORT_SYMBOL vmlinux 0x04da23df blk_queue_resize_tags +EXPORT_SYMBOL vmlinux 0x04e630d4 blkdev_issue_zeroout +EXPORT_SYMBOL vmlinux 0x04ea56f9 _kstrtol +EXPORT_SYMBOL vmlinux 0x04ea5d10 ksize +EXPORT_SYMBOL vmlinux 0x0511534a generic_block_fiemap +EXPORT_SYMBOL vmlinux 0x051628bc __devm_request_region +EXPORT_SYMBOL vmlinux 0x05186ca4 flush_icache_range +EXPORT_SYMBOL vmlinux 0x05240ee7 percpu_counter_batch +EXPORT_SYMBOL vmlinux 0x05303c3e elv_unregister_queue +EXPORT_SYMBOL vmlinux 0x0530dede _raw_write_trylock +EXPORT_SYMBOL vmlinux 0x0532d93b scsi_dma_map +EXPORT_SYMBOL vmlinux 0x0536d0d7 sg_miter_start +EXPORT_SYMBOL vmlinux 0x05457c6b nvdimm_bus_unlock +EXPORT_SYMBOL vmlinux 0x054a40d0 __tracepoint_fence_emit +EXPORT_SYMBOL vmlinux 0x0552ace6 dec_zone_page_state +EXPORT_SYMBOL vmlinux 0x055c8559 __kfifo_dma_in_prepare_r +EXPORT_SYMBOL vmlinux 0x0568f93d __tty_alloc_driver +EXPORT_SYMBOL vmlinux 0x058671bc xfrm4_protocol_deregister +EXPORT_SYMBOL vmlinux 0x05a04fe7 neigh_destroy +EXPORT_SYMBOL vmlinux 0x05a514a1 _insl_ns +EXPORT_SYMBOL vmlinux 0x05a9f0e8 pagecache_isize_extended +EXPORT_SYMBOL vmlinux 0x05ac412b dev_queue_xmit_accel +EXPORT_SYMBOL vmlinux 0x05b20776 simple_fill_super +EXPORT_SYMBOL vmlinux 0x05b2d38f get_tz_trend +EXPORT_SYMBOL vmlinux 0x05b823c5 bio_map_kern +EXPORT_SYMBOL vmlinux 0x05ba4412 blk_queue_alignment_offset +EXPORT_SYMBOL vmlinux 0x05dd0c6e clkdev_drop +EXPORT_SYMBOL vmlinux 0x05e9e3ca inet_accept +EXPORT_SYMBOL vmlinux 0x06083adb blk_mq_alloc_tag_set +EXPORT_SYMBOL vmlinux 0x061443eb dev_getbyhwaddr_rcu +EXPORT_SYMBOL vmlinux 0x061651be strcat +EXPORT_SYMBOL vmlinux 0x0634100a bitmap_parselist_user +EXPORT_SYMBOL vmlinux 0x064f0116 vm_map_ram +EXPORT_SYMBOL vmlinux 0x0655d199 xfrm_policy_byid +EXPORT_SYMBOL vmlinux 0x065d0461 uart_suspend_port +EXPORT_SYMBOL vmlinux 0x065fd2a0 icmpv6_send +EXPORT_SYMBOL vmlinux 0x067d8d35 security_release_secctx +EXPORT_SYMBOL vmlinux 0x06942a9a sock_no_setsockopt +EXPORT_SYMBOL vmlinux 0x069febb4 i2c_get_adapter +EXPORT_SYMBOL vmlinux 0x06fd27d8 devm_gpiod_put_array +EXPORT_SYMBOL vmlinux 0x06fe3b14 default_grn +EXPORT_SYMBOL vmlinux 0x071a05f6 jbd2_journal_blocks_per_page +EXPORT_SYMBOL vmlinux 0x071ba254 led_set_brightness +EXPORT_SYMBOL vmlinux 0x0727c4f3 iowrite8 +EXPORT_SYMBOL vmlinux 0x072f901c vme_master_rmw +EXPORT_SYMBOL vmlinux 0x07384a5d xfrm_policy_flush +EXPORT_SYMBOL vmlinux 0x073c11b9 tty_port_carrier_raised +EXPORT_SYMBOL vmlinux 0x0746d468 vga_con +EXPORT_SYMBOL vmlinux 0x074e9213 down_killable +EXPORT_SYMBOL vmlinux 0x07693b20 fsnotify_add_mark +EXPORT_SYMBOL vmlinux 0x077b3bba user_path_create +EXPORT_SYMBOL vmlinux 0x077f4837 __neigh_for_each_release +EXPORT_SYMBOL vmlinux 0x0791f869 bitmap_close_sync +EXPORT_SYMBOL vmlinux 0x07927f13 pci_find_capability +EXPORT_SYMBOL vmlinux 0x07a2b2ea bio_unmap_user +EXPORT_SYMBOL vmlinux 0x07a890c8 fb_alloc_cmap +EXPORT_SYMBOL vmlinux 0x07aa997d textsearch_register +EXPORT_SYMBOL vmlinux 0x07b52c2f dev_getfirstbyhwtype +EXPORT_SYMBOL vmlinux 0x07cc4a5d printk_timed_ratelimit +EXPORT_SYMBOL vmlinux 0x07ef8248 dm_put_device +EXPORT_SYMBOL vmlinux 0x07fb4ee6 fbcon_rotate_ud +EXPORT_SYMBOL vmlinux 0x081fffcc genphy_update_link +EXPORT_SYMBOL vmlinux 0x082c3213 pci_root_buses +EXPORT_SYMBOL vmlinux 0x082c9ace generic_shutdown_super +EXPORT_SYMBOL vmlinux 0x083eb21c rfkill_unregister +EXPORT_SYMBOL vmlinux 0x086cb927 nd_device_unregister +EXPORT_SYMBOL vmlinux 0x086d8cdd irq_stat +EXPORT_SYMBOL vmlinux 0x08763664 pci_set_power_state +EXPORT_SYMBOL vmlinux 0x08818639 sg_miter_stop +EXPORT_SYMBOL vmlinux 0x08a23bcb devm_gpiod_get_array +EXPORT_SYMBOL vmlinux 0x08a40817 eth_validate_addr +EXPORT_SYMBOL vmlinux 0x08c84a2d __skb_get_hash +EXPORT_SYMBOL vmlinux 0x08de01e1 blk_complete_request +EXPORT_SYMBOL vmlinux 0x08ea69e7 mipi_dsi_packet_format_is_long +EXPORT_SYMBOL vmlinux 0x09005b88 pci_bus_read_dev_vendor_id +EXPORT_SYMBOL vmlinux 0x092ff3c8 dquot_writeback_dquots +EXPORT_SYMBOL vmlinux 0x09580deb init_timer_key +EXPORT_SYMBOL vmlinux 0x095f6bfe pm8606_osc_disable +EXPORT_SYMBOL vmlinux 0x096808e3 uart_get_divisor +EXPORT_SYMBOL vmlinux 0x096d7e74 find_inode_nowait +EXPORT_SYMBOL vmlinux 0x098a80aa inet6_ioctl +EXPORT_SYMBOL vmlinux 0x098b71c6 fb_dealloc_cmap +EXPORT_SYMBOL vmlinux 0x09ab87c1 blk_mq_alloc_request +EXPORT_SYMBOL vmlinux 0x09c55cec schedule_timeout_interruptible +EXPORT_SYMBOL vmlinux 0x09c67afb flex_array_get +EXPORT_SYMBOL vmlinux 0x09c8eb55 font_vga_8x16 +EXPORT_SYMBOL vmlinux 0x09d44df9 in_lock_functions +EXPORT_SYMBOL vmlinux 0x09d47a45 i2c_master_recv +EXPORT_SYMBOL vmlinux 0x0a2487e0 unblock_all_signals +EXPORT_SYMBOL vmlinux 0x0a2799a0 wait_on_page_bit +EXPORT_SYMBOL vmlinux 0x0a292872 reservation_seqcount_class +EXPORT_SYMBOL vmlinux 0x0a2c6d73 jbd2_journal_flush +EXPORT_SYMBOL vmlinux 0x0a45a63a tty_driver_kref_put +EXPORT_SYMBOL vmlinux 0x0a532e65 bio_copy_data +EXPORT_SYMBOL vmlinux 0x0a57863e cancel_delayed_work_sync +EXPORT_SYMBOL vmlinux 0x0a890a43 bdgrab +EXPORT_SYMBOL vmlinux 0x0aa309cf synchronize_hardirq +EXPORT_SYMBOL vmlinux 0x0aadfcdc mntput +EXPORT_SYMBOL vmlinux 0x0ab6bec6 agp_backend_release +EXPORT_SYMBOL vmlinux 0x0ab933c6 sock_no_connect +EXPORT_SYMBOL vmlinux 0x0abe3941 flow_cache_init +EXPORT_SYMBOL vmlinux 0x0acbdace scsi_block_requests +EXPORT_SYMBOL vmlinux 0x0acf7679 dma_issue_pending_all +EXPORT_SYMBOL vmlinux 0x0ae918da load_nls +EXPORT_SYMBOL vmlinux 0x0aeaff27 ata_link_printk +EXPORT_SYMBOL vmlinux 0x0b0d888b icmpv6_err_convert +EXPORT_SYMBOL vmlinux 0x0b1beb31 vmalloc_32_user +EXPORT_SYMBOL vmlinux 0x0b42aeee register_console +EXPORT_SYMBOL vmlinux 0x0b43b83b dev_loopback_xmit +EXPORT_SYMBOL vmlinux 0x0b57b73e get_pci_dma_ops +EXPORT_SYMBOL vmlinux 0x0b65f83f __napi_alloc_skb +EXPORT_SYMBOL vmlinux 0x0b742fd7 simple_strtol +EXPORT_SYMBOL vmlinux 0x0b81b695 ip_mc_inc_group +EXPORT_SYMBOL vmlinux 0x0b847688 __pagevec_release +EXPORT_SYMBOL vmlinux 0x0ba14599 blk_mq_can_queue +EXPORT_SYMBOL vmlinux 0x0ba94e58 phy_print_status +EXPORT_SYMBOL vmlinux 0x0bb250c2 clear_inode +EXPORT_SYMBOL vmlinux 0x0bbae36f inet_del_offload +EXPORT_SYMBOL vmlinux 0x0bbc5908 gen_estimator_active +EXPORT_SYMBOL vmlinux 0x0bc477a2 irq_set_irq_type +EXPORT_SYMBOL vmlinux 0x0bf01b57 input_flush_device +EXPORT_SYMBOL vmlinux 0x0c0d1abe cpufreq_global_kobject +EXPORT_SYMBOL vmlinux 0x0c21d019 flush_delayed_work +EXPORT_SYMBOL vmlinux 0x0c377d13 xfrm_policy_insert +EXPORT_SYMBOL vmlinux 0x0c45fc96 vfs_lstat +EXPORT_SYMBOL vmlinux 0x0c58a8cd netdev_increment_features +EXPORT_SYMBOL vmlinux 0x0c5d89b6 unregister_tcf_proto_ops +EXPORT_SYMBOL vmlinux 0x0c5e28e9 devfreq_recommended_opp +EXPORT_SYMBOL vmlinux 0x0c6bdc3f vme_master_read +EXPORT_SYMBOL vmlinux 0x0ca0c882 twl6030_interrupt_mask +EXPORT_SYMBOL vmlinux 0x0ca530b7 gnet_stats_copy_rate_est +EXPORT_SYMBOL vmlinux 0x0cae232b utf16s_to_utf8s +EXPORT_SYMBOL vmlinux 0x0cb2fe8d mipi_dsi_dcs_read +EXPORT_SYMBOL vmlinux 0x0cc5bab0 write_one_page +EXPORT_SYMBOL vmlinux 0x0cc6d43b mmc_wait_for_cmd +EXPORT_SYMBOL vmlinux 0x0cc7ec96 blkdev_get_by_dev +EXPORT_SYMBOL vmlinux 0x0cfe545d __ww_mutex_lock_interruptible +EXPORT_SYMBOL vmlinux 0x0d131776 blk_sync_queue +EXPORT_SYMBOL vmlinux 0x0d16c2db jbd2_journal_dirty_metadata +EXPORT_SYMBOL vmlinux 0x0d187547 qdisc_destroy +EXPORT_SYMBOL vmlinux 0x0d2822dc __check_sticky +EXPORT_SYMBOL vmlinux 0x0d388f7c pci_find_hose_for_OF_device +EXPORT_SYMBOL vmlinux 0x0d542439 __ipv6_addr_type +EXPORT_SYMBOL vmlinux 0x0d61eeee __bitmap_subset +EXPORT_SYMBOL vmlinux 0x0d6c963c copy_from_user +EXPORT_SYMBOL vmlinux 0x0d9a6e16 handle_edge_irq +EXPORT_SYMBOL vmlinux 0x0da10ec3 security_sock_graft +EXPORT_SYMBOL vmlinux 0x0db90a31 set_anon_super +EXPORT_SYMBOL vmlinux 0x0dbf1973 remove_arg_zero +EXPORT_SYMBOL vmlinux 0x0dc0ace0 idr_find_slowpath +EXPORT_SYMBOL vmlinux 0x0dd0f99e inet_stream_connect +EXPORT_SYMBOL vmlinux 0x0de0b08a inode_init_once +EXPORT_SYMBOL vmlinux 0x0dee0f69 mmc_register_driver +EXPORT_SYMBOL vmlinux 0x0df2e825 __ip_dev_find +EXPORT_SYMBOL vmlinux 0x0e150b91 audit_log_task_info +EXPORT_SYMBOL vmlinux 0x0e3269e6 xfrm_register_type +EXPORT_SYMBOL vmlinux 0x0e47701b scsi_change_queue_depth +EXPORT_SYMBOL vmlinux 0x0e4e3110 is_nvdimm_bus_locked +EXPORT_SYMBOL vmlinux 0x0e5f5963 pm860x_page_bulk_read +EXPORT_SYMBOL vmlinux 0x0e622c5e of_get_ddr_timings +EXPORT_SYMBOL vmlinux 0x0e6da44a set_normalized_timespec +EXPORT_SYMBOL vmlinux 0x0e876a22 devm_gpio_request +EXPORT_SYMBOL vmlinux 0x0e8f30f6 _raw_write_lock_irq +EXPORT_SYMBOL vmlinux 0x0ec067a8 xfrm_input_resume +EXPORT_SYMBOL vmlinux 0x0ec5babe vme_dma_free +EXPORT_SYMBOL vmlinux 0x0ecb25a9 eth_change_mtu +EXPORT_SYMBOL vmlinux 0x0ed8c410 i2c_smbus_write_word_data +EXPORT_SYMBOL vmlinux 0x0ef68bf6 sync_blockdev +EXPORT_SYMBOL vmlinux 0x0efcbb1b set_current_groups +EXPORT_SYMBOL vmlinux 0x0f4c91ed ns_to_timespec +EXPORT_SYMBOL vmlinux 0x0f5faa7e wait_for_completion_io_timeout +EXPORT_SYMBOL vmlinux 0x0f6a3b5c string_get_size +EXPORT_SYMBOL vmlinux 0x0f9714af pagecache_write_end +EXPORT_SYMBOL vmlinux 0x0faef0ed __tasklet_schedule +EXPORT_SYMBOL vmlinux 0x0fb2f8a4 mktime64 +EXPORT_SYMBOL vmlinux 0x0fc3ca92 ip_options_compile +EXPORT_SYMBOL vmlinux 0x0fde7a9d nf_log_unregister +EXPORT_SYMBOL vmlinux 0x0fe1f618 serial8250_register_8250_port +EXPORT_SYMBOL vmlinux 0x0ff71283 sock_edemux +EXPORT_SYMBOL vmlinux 0x1012c94a inet6_del_protocol +EXPORT_SYMBOL vmlinux 0x10313ed3 param_get_ulong +EXPORT_SYMBOL vmlinux 0x1046298a neigh_sysctl_register +EXPORT_SYMBOL vmlinux 0x10524779 __netdev_alloc_skb +EXPORT_SYMBOL vmlinux 0x1064c7bf __mem_cgroup_count_vm_event +EXPORT_SYMBOL vmlinux 0x107e5878 zlib_inflateEnd +EXPORT_SYMBOL vmlinux 0x108c78f4 elv_rb_latter_request +EXPORT_SYMBOL vmlinux 0x10950ee1 radix_tree_tag_clear +EXPORT_SYMBOL vmlinux 0x10c11b17 invalidate_bdev +EXPORT_SYMBOL vmlinux 0x10d26a55 tcp_prequeue +EXPORT_SYMBOL vmlinux 0x10ee20bb default_blu +EXPORT_SYMBOL vmlinux 0x10fcc239 __mark_inode_dirty +EXPORT_SYMBOL vmlinux 0x1102dde9 netpoll_cleanup +EXPORT_SYMBOL vmlinux 0x11089ac7 _ctype +EXPORT_SYMBOL vmlinux 0x1128ce5d input_mt_get_slot_by_key +EXPORT_SYMBOL vmlinux 0x113ae095 call_usermodehelper_exec +EXPORT_SYMBOL vmlinux 0x1154e00e sys_fillrect +EXPORT_SYMBOL vmlinux 0x1163f0a7 blk_max_low_pfn +EXPORT_SYMBOL vmlinux 0x116bbc9d file_remove_privs +EXPORT_SYMBOL vmlinux 0x117093be qdisc_class_hash_init +EXPORT_SYMBOL vmlinux 0x117f8ca7 devfreq_monitor_resume +EXPORT_SYMBOL vmlinux 0x1182d83a cpuidle_disable +EXPORT_SYMBOL vmlinux 0x118a5e56 blk_limits_io_min +EXPORT_SYMBOL vmlinux 0x11a044f6 mod_timer_pinned +EXPORT_SYMBOL vmlinux 0x11a381ad no_llseek +EXPORT_SYMBOL vmlinux 0x11bb27ab sk_net_capable +EXPORT_SYMBOL vmlinux 0x11d2797e dm_io +EXPORT_SYMBOL vmlinux 0x11d704a8 xfrm_state_alloc +EXPORT_SYMBOL vmlinux 0x11f7ed4c hex_to_bin +EXPORT_SYMBOL vmlinux 0x1204f49b unregister_quota_format +EXPORT_SYMBOL vmlinux 0x120b336a __rb_insert_augmented +EXPORT_SYMBOL vmlinux 0x120cf680 blk_queue_bounce +EXPORT_SYMBOL vmlinux 0x120fc6b1 kstrdup_const +EXPORT_SYMBOL vmlinux 0x121529be sk_mc_loop +EXPORT_SYMBOL vmlinux 0x123e4329 dentry_update_name_case +EXPORT_SYMBOL vmlinux 0x123f82f3 getrawmonotonic64 +EXPORT_SYMBOL vmlinux 0x1249e6f4 simple_release_fs +EXPORT_SYMBOL vmlinux 0x12872188 simple_dname +EXPORT_SYMBOL vmlinux 0x12a38747 usleep_range +EXPORT_SYMBOL vmlinux 0x12a481fa rt6_lookup +EXPORT_SYMBOL vmlinux 0x12a72adc skb_add_rx_frag +EXPORT_SYMBOL vmlinux 0x12a92a60 skb_try_coalesce +EXPORT_SYMBOL vmlinux 0x12dfeb12 vprintk_emit +EXPORT_SYMBOL vmlinux 0x12f06868 i2c_transfer +EXPORT_SYMBOL vmlinux 0x13215eac mem_section +EXPORT_SYMBOL vmlinux 0x13243d4b wl1251_get_platform_data +EXPORT_SYMBOL vmlinux 0x13307fde vsscanf +EXPORT_SYMBOL vmlinux 0x1335df30 kmem_cache_create +EXPORT_SYMBOL vmlinux 0x13803fc0 ip6_frag_match +EXPORT_SYMBOL vmlinux 0x138a135c seq_escape +EXPORT_SYMBOL vmlinux 0x13943a84 tcp_sendmsg +EXPORT_SYMBOL vmlinux 0x13d0adf7 __kfifo_out +EXPORT_SYMBOL vmlinux 0x14064015 add_disk +EXPORT_SYMBOL vmlinux 0x1450d17c sched_autogroup_detach +EXPORT_SYMBOL vmlinux 0x147ae3c0 fb_validate_mode +EXPORT_SYMBOL vmlinux 0x147b6a61 mmc_can_discard +EXPORT_SYMBOL vmlinux 0x148ef613 alloc_skb_with_frags +EXPORT_SYMBOL vmlinux 0x14d7e7ab eth_header_parse +EXPORT_SYMBOL vmlinux 0x14d8e247 nf_hook_slow +EXPORT_SYMBOL vmlinux 0x14ef4cd5 tcp_recvmsg +EXPORT_SYMBOL vmlinux 0x14f6a09a __scsi_alloc_queue +EXPORT_SYMBOL vmlinux 0x150d3f4a fsl_lbc_ctrl_dev +EXPORT_SYMBOL vmlinux 0x151028b2 ipv6_chk_addr_and_flags +EXPORT_SYMBOL vmlinux 0x151ff016 dma_common_get_sgtable +EXPORT_SYMBOL vmlinux 0x153ad58a pci_fixup_device +EXPORT_SYMBOL vmlinux 0x153f03a2 fd_install +EXPORT_SYMBOL vmlinux 0x154c6338 dm_kcopyd_client_destroy +EXPORT_SYMBOL vmlinux 0x15738e45 invalidate_partition +EXPORT_SYMBOL vmlinux 0x158fb483 sock_no_bind +EXPORT_SYMBOL vmlinux 0x159762f4 linkwatch_fire_event +EXPORT_SYMBOL vmlinux 0x15a60770 vfs_getattr +EXPORT_SYMBOL vmlinux 0x15aecf9a filemap_fdatawrite +EXPORT_SYMBOL vmlinux 0x15bafe29 unregister_md_cluster_operations +EXPORT_SYMBOL vmlinux 0x15be110a jbd2_journal_set_features +EXPORT_SYMBOL vmlinux 0x15cf4e84 xfrm_alloc_spi +EXPORT_SYMBOL vmlinux 0x15d3fd60 prepare_to_wait_event +EXPORT_SYMBOL vmlinux 0x15d9b923 mpage_writepages +EXPORT_SYMBOL vmlinux 0x15db2d37 iommu_tbl_range_alloc +EXPORT_SYMBOL vmlinux 0x15fdffd8 dst_release +EXPORT_SYMBOL vmlinux 0x160a7668 sk_page_frag_refill +EXPORT_SYMBOL vmlinux 0x160ef3c9 nla_put +EXPORT_SYMBOL vmlinux 0x1627b1c7 inet6_unregister_protosw +EXPORT_SYMBOL vmlinux 0x1633ed8e pci_get_class +EXPORT_SYMBOL vmlinux 0x1637beb8 pci_request_region_exclusive +EXPORT_SYMBOL vmlinux 0x165bdf21 nvdimm_revalidate_disk +EXPORT_SYMBOL vmlinux 0x165c6cef __skb_get_hash_flowi6 +EXPORT_SYMBOL vmlinux 0x167c5967 print_hex_dump +EXPORT_SYMBOL vmlinux 0x167f5a45 inode_reclaim_rsv_space +EXPORT_SYMBOL vmlinux 0x16a1c6d0 of_find_node_by_name +EXPORT_SYMBOL vmlinux 0x16a790a0 of_get_cpu_node +EXPORT_SYMBOL vmlinux 0x16c09cd7 tso_build_data +EXPORT_SYMBOL vmlinux 0x16de7bc9 of_device_is_compatible +EXPORT_SYMBOL vmlinux 0x16e1f3c5 pci_bus_put +EXPORT_SYMBOL vmlinux 0x16e2b06b tcf_em_register +EXPORT_SYMBOL vmlinux 0x16e74192 d_prune_aliases +EXPORT_SYMBOL vmlinux 0x1712ddfd dev_disable_lro +EXPORT_SYMBOL vmlinux 0x1736af5f console_stop +EXPORT_SYMBOL vmlinux 0x173f8f14 scsi_is_sdev_device +EXPORT_SYMBOL vmlinux 0x1743414f __debugger_fault_handler +EXPORT_SYMBOL vmlinux 0x1745ae61 mutex_lock_killable +EXPORT_SYMBOL vmlinux 0x17604f29 __xfrm_state_destroy +EXPORT_SYMBOL vmlinux 0x17624e00 alloc_disk +EXPORT_SYMBOL vmlinux 0x17648396 dev_base_lock +EXPORT_SYMBOL vmlinux 0x1793f685 radix_tree_tagged +EXPORT_SYMBOL vmlinux 0x17a401ae __cleancache_invalidate_page +EXPORT_SYMBOL vmlinux 0x17b1125d gen_kill_estimator +EXPORT_SYMBOL vmlinux 0x17e28473 fsl_upm_run_pattern +EXPORT_SYMBOL vmlinux 0x17efe9bb uart_remove_one_port +EXPORT_SYMBOL vmlinux 0x17f09e9c generic_splice_sendpage +EXPORT_SYMBOL vmlinux 0x17f341a0 i8042_lock_chip +EXPORT_SYMBOL vmlinux 0x17f4924a mdiobus_register +EXPORT_SYMBOL vmlinux 0x180e193e mdiobus_unregister +EXPORT_SYMBOL vmlinux 0x1810af4d iget_failed +EXPORT_SYMBOL vmlinux 0x181eb2f3 bdevname +EXPORT_SYMBOL vmlinux 0x1829d188 wait_woken +EXPORT_SYMBOL vmlinux 0x183fa88b mempool_alloc_slab +EXPORT_SYMBOL vmlinux 0x184b82fb mmc_vddrange_to_ocrmask +EXPORT_SYMBOL vmlinux 0x184d9af3 phy_driver_unregister +EXPORT_SYMBOL vmlinux 0x1857aa39 proc_dointvec +EXPORT_SYMBOL vmlinux 0x18703886 try_to_release_page +EXPORT_SYMBOL vmlinux 0x18711762 pci_clear_master +EXPORT_SYMBOL vmlinux 0x1883f1cd uart_update_timeout +EXPORT_SYMBOL vmlinux 0x188a3dfb timespec_trunc +EXPORT_SYMBOL vmlinux 0x189868d7 get_random_bytes_arch +EXPORT_SYMBOL vmlinux 0x189f6f9e pci_bus_set_ops +EXPORT_SYMBOL vmlinux 0x18a7e782 cros_ec_prepare_tx +EXPORT_SYMBOL vmlinux 0x18ab6dd3 i2c_smbus_write_byte +EXPORT_SYMBOL vmlinux 0x18d93f71 xfrm_find_acq +EXPORT_SYMBOL vmlinux 0x191edfe6 bio_integrity_free +EXPORT_SYMBOL vmlinux 0x1922a6e5 __sb_end_write +EXPORT_SYMBOL vmlinux 0x1926348c framebuffer_release +EXPORT_SYMBOL vmlinux 0x193d9272 dquot_file_open +EXPORT_SYMBOL vmlinux 0x193f36dd iov_iter_npages +EXPORT_SYMBOL vmlinux 0x195916e3 dev_mc_init +EXPORT_SYMBOL vmlinux 0x196b4c6d blk_mq_complete_request +EXPORT_SYMBOL vmlinux 0x197a7437 sock_no_socketpair +EXPORT_SYMBOL vmlinux 0x197ad160 pci_request_regions_exclusive +EXPORT_SYMBOL vmlinux 0x197bc004 blk_mq_run_hw_queues +EXPORT_SYMBOL vmlinux 0x198c5afc phy_ethtool_gset +EXPORT_SYMBOL vmlinux 0x1996e079 ab3100_event_unregister +EXPORT_SYMBOL vmlinux 0x199ec4fb arch_spin_unlock_wait +EXPORT_SYMBOL vmlinux 0x199ed0cd net_disable_timestamp +EXPORT_SYMBOL vmlinux 0x19a839dd ata_std_end_eh +EXPORT_SYMBOL vmlinux 0x19b11481 reservation_object_reserve_shared +EXPORT_SYMBOL vmlinux 0x19ba1dc7 fence_enable_sw_signaling +EXPORT_SYMBOL vmlinux 0x19bd383b security_secmark_refcount_dec +EXPORT_SYMBOL vmlinux 0x19d4b9af tcp_rcv_state_process +EXPORT_SYMBOL vmlinux 0x19d6bd26 security_path_chmod +EXPORT_SYMBOL vmlinux 0x19d6d136 scsi_device_lookup_by_target +EXPORT_SYMBOL vmlinux 0x19f297e0 flush_tlb_page +EXPORT_SYMBOL vmlinux 0x19f72ed9 local_flush_tlb_mm +EXPORT_SYMBOL vmlinux 0x1a1766fa kernel_accept +EXPORT_SYMBOL vmlinux 0x1a1a1b8f param_ops_long +EXPORT_SYMBOL vmlinux 0x1a205f98 d_invalidate +EXPORT_SYMBOL vmlinux 0x1a23e705 jbd2_journal_restart +EXPORT_SYMBOL vmlinux 0x1a38e3a8 eth_gro_receive +EXPORT_SYMBOL vmlinux 0x1a3904d5 tcp_v4_md5_hash_skb +EXPORT_SYMBOL vmlinux 0x1a4ac349 mipi_dsi_dcs_set_column_address +EXPORT_SYMBOL vmlinux 0x1a6ef384 neigh_connected_output +EXPORT_SYMBOL vmlinux 0x1a727365 udplite_prot +EXPORT_SYMBOL vmlinux 0x1a7c96e4 bio_integrity_alloc +EXPORT_SYMBOL vmlinux 0x1a97f506 kernel_listen +EXPORT_SYMBOL vmlinux 0x1aa446df mb_cache_entry_free +EXPORT_SYMBOL vmlinux 0x1aaec9ad tcp_proto_cgroup +EXPORT_SYMBOL vmlinux 0x1ab8d912 twl6040_set_pll +EXPORT_SYMBOL vmlinux 0x1ac5d3cb strcspn +EXPORT_SYMBOL vmlinux 0x1ada72f4 of_graph_parse_endpoint +EXPORT_SYMBOL vmlinux 0x1adbbcfc dquot_quotactl_sysfile_ops +EXPORT_SYMBOL vmlinux 0x1ae038d6 tty_port_init +EXPORT_SYMBOL vmlinux 0x1af62a99 panic_notifier_list +EXPORT_SYMBOL vmlinux 0x1b015d25 bitmap_parselist +EXPORT_SYMBOL vmlinux 0x1b06a209 blk_set_default_limits +EXPORT_SYMBOL vmlinux 0x1b132009 rename_lock +EXPORT_SYMBOL vmlinux 0x1b1e1088 sg_nents +EXPORT_SYMBOL vmlinux 0x1b6314fd in_aton +EXPORT_SYMBOL vmlinux 0x1b67315b do_splice_from +EXPORT_SYMBOL vmlinux 0x1b795d82 uart_register_driver +EXPORT_SYMBOL vmlinux 0x1b805927 scsi_device_resume +EXPORT_SYMBOL vmlinux 0x1b82fefa md_unplug +EXPORT_SYMBOL vmlinux 0x1b8b95ad i8042_unlock_chip +EXPORT_SYMBOL vmlinux 0x1b936682 simple_unlink +EXPORT_SYMBOL vmlinux 0x1bb31047 add_timer +EXPORT_SYMBOL vmlinux 0x1bc4ff03 tty_termios_hw_change +EXPORT_SYMBOL vmlinux 0x1bca2b59 load_fp_state +EXPORT_SYMBOL vmlinux 0x1be5f5bb dev_queue_xmit_sk +EXPORT_SYMBOL vmlinux 0x1bfec830 __iounmap_at +EXPORT_SYMBOL vmlinux 0x1c3b2016 kill_anon_super +EXPORT_SYMBOL vmlinux 0x1c3e02e4 memcmp +EXPORT_SYMBOL vmlinux 0x1c6792cd dcache_dir_open +EXPORT_SYMBOL vmlinux 0x1c706de4 fb_prepare_logo +EXPORT_SYMBOL vmlinux 0x1c80de9c ip_send_check +EXPORT_SYMBOL vmlinux 0x1c8943f7 downgrade_write +EXPORT_SYMBOL vmlinux 0x1ca106a7 blk_rq_count_integrity_sg +EXPORT_SYMBOL vmlinux 0x1cbddcc2 locks_copy_conflock +EXPORT_SYMBOL vmlinux 0x1cc237e0 tty_port_block_til_ready +EXPORT_SYMBOL vmlinux 0x1ced6fe7 blk_rq_map_integrity_sg +EXPORT_SYMBOL vmlinux 0x1d017d59 xfrm6_find_1stfragopt +EXPORT_SYMBOL vmlinux 0x1d1056e5 crc32_be +EXPORT_SYMBOL vmlinux 0x1d13d708 kobject_del +EXPORT_SYMBOL vmlinux 0x1d1642a5 thaw_bdev +EXPORT_SYMBOL vmlinux 0x1d3d37fc scsi_ioctl +EXPORT_SYMBOL vmlinux 0x1d53c179 of_cpufreq_power_cooling_register +EXPORT_SYMBOL vmlinux 0x1d796c72 kmem_cache_alloc +EXPORT_SYMBOL vmlinux 0x1da9547c devm_input_allocate_device +EXPORT_SYMBOL vmlinux 0x1dbc4d0c proc_dointvec_jiffies +EXPORT_SYMBOL vmlinux 0x1dc36131 fb_destroy_modedb +EXPORT_SYMBOL vmlinux 0x1dc9386a mnt_set_expiry +EXPORT_SYMBOL vmlinux 0x1dcc9569 nla_append +EXPORT_SYMBOL vmlinux 0x1dd571e6 fb_copy_cmap +EXPORT_SYMBOL vmlinux 0x1deaf149 iw_handler_set_spy +EXPORT_SYMBOL vmlinux 0x1e249b15 tcf_hash_insert +EXPORT_SYMBOL vmlinux 0x1e26be3b get_anon_bdev +EXPORT_SYMBOL vmlinux 0x1e279d30 kernel_bind +EXPORT_SYMBOL vmlinux 0x1e2a4762 eth_header_cache +EXPORT_SYMBOL vmlinux 0x1e36fdb3 file_update_time +EXPORT_SYMBOL vmlinux 0x1e5609e8 pcie_port_service_register +EXPORT_SYMBOL vmlinux 0x1e5f471a input_register_handler +EXPORT_SYMBOL vmlinux 0x1e6d26a8 strstr +EXPORT_SYMBOL vmlinux 0x1e74258a bdi_register +EXPORT_SYMBOL vmlinux 0x1e96bd78 pcix_set_mmrbc +EXPORT_SYMBOL vmlinux 0x1e9edfb7 seq_hlist_start_head_rcu +EXPORT_SYMBOL vmlinux 0x1eb51eb1 dev_mc_flush +EXPORT_SYMBOL vmlinux 0x1ec89696 __dev_kfree_skb_irq +EXPORT_SYMBOL vmlinux 0x1ec8fe5f dump_align +EXPORT_SYMBOL vmlinux 0x1ecc7e5b pci_restore_state +EXPORT_SYMBOL vmlinux 0x1ed16fcf __napi_complete +EXPORT_SYMBOL vmlinux 0x1ed65639 phy_ethtool_get_wol +EXPORT_SYMBOL vmlinux 0x1ee12152 xfrm6_rcv_spi +EXPORT_SYMBOL vmlinux 0x1efbdf44 xfrm_unregister_type +EXPORT_SYMBOL vmlinux 0x1f598bd9 mem_cgroup_begin_page_stat +EXPORT_SYMBOL vmlinux 0x1f64c55c netdev_upper_get_next_dev_rcu +EXPORT_SYMBOL vmlinux 0x1f6ce67a sg_pcopy_to_buffer +EXPORT_SYMBOL vmlinux 0x1f7822e1 wireless_spy_update +EXPORT_SYMBOL vmlinux 0x1f969cf7 pci_domain_nr +EXPORT_SYMBOL vmlinux 0x1fa70272 agp_enable +EXPORT_SYMBOL vmlinux 0x1fb5fc4f vme_irq_handler +EXPORT_SYMBOL vmlinux 0x1fb63b04 tty_vhangup +EXPORT_SYMBOL vmlinux 0x1fbd16da ip_tos2prio +EXPORT_SYMBOL vmlinux 0x1fd07fff kdb_grepping_flag +EXPORT_SYMBOL vmlinux 0x1fd8603a generic_fillattr +EXPORT_SYMBOL vmlinux 0x1fe912f1 netdev_alloc_frag +EXPORT_SYMBOL vmlinux 0x1febc43e cdev_init +EXPORT_SYMBOL vmlinux 0x1fedf0f4 __request_region +EXPORT_SYMBOL vmlinux 0x1ff9b478 rtnl_link_get_net +EXPORT_SYMBOL vmlinux 0x20000329 simple_strtoul +EXPORT_SYMBOL vmlinux 0x200b2041 in6addr_any +EXPORT_SYMBOL vmlinux 0x2018114e bioset_integrity_free +EXPORT_SYMBOL vmlinux 0x20268980 __pci_register_driver +EXPORT_SYMBOL vmlinux 0x2028a367 nf_reinject +EXPORT_SYMBOL vmlinux 0x203928b1 insert_inode_locked4 +EXPORT_SYMBOL vmlinux 0x204baa02 page_readlink +EXPORT_SYMBOL vmlinux 0x204c19f5 tcp_alloc_md5sig_pool +EXPORT_SYMBOL vmlinux 0x205410fa __percpu_counter_compare +EXPORT_SYMBOL vmlinux 0x20549446 nd_integrity_init +EXPORT_SYMBOL vmlinux 0x206c13cf keyring_search +EXPORT_SYMBOL vmlinux 0x2072ee9b request_threaded_irq +EXPORT_SYMBOL vmlinux 0x20a789ac irq_set_chip_data +EXPORT_SYMBOL vmlinux 0x20bd7d48 __lock_buffer +EXPORT_SYMBOL vmlinux 0x20bef6fd abx500_get_chip_id +EXPORT_SYMBOL vmlinux 0x20c55ae0 sscanf +EXPORT_SYMBOL vmlinux 0x20dd903d fsnotify_init_mark +EXPORT_SYMBOL vmlinux 0x20df5a3d vme_dma_pci_attribute +EXPORT_SYMBOL vmlinux 0x20ed87e7 twl6040_power +EXPORT_SYMBOL vmlinux 0x20f2bb1a param_set_ushort +EXPORT_SYMBOL vmlinux 0x211f68f1 getnstimeofday64 +EXPORT_SYMBOL vmlinux 0x212924ea jbd2_journal_init_jbd_inode +EXPORT_SYMBOL vmlinux 0x2140846f compat_nf_getsockopt +EXPORT_SYMBOL vmlinux 0x21522a65 blk_finish_request +EXPORT_SYMBOL vmlinux 0x217c755e generic_perform_write +EXPORT_SYMBOL vmlinux 0x21a8eedc would_dump +EXPORT_SYMBOL vmlinux 0x21b692c8 alloc_disk_node +EXPORT_SYMBOL vmlinux 0x21df74d9 bitmap_set +EXPORT_SYMBOL vmlinux 0x21f19335 fence_remove_callback +EXPORT_SYMBOL vmlinux 0x21fb1efa vme_irq_free +EXPORT_SYMBOL vmlinux 0x221182ef dev_remove_pack +EXPORT_SYMBOL vmlinux 0x221c5046 vm_mmap +EXPORT_SYMBOL vmlinux 0x222e7ce2 sysfs_streq +EXPORT_SYMBOL vmlinux 0x226aa7bf remap_vmalloc_range_partial +EXPORT_SYMBOL vmlinux 0x22732a78 mutex_trylock +EXPORT_SYMBOL vmlinux 0x2276db98 kstrtoint +EXPORT_SYMBOL vmlinux 0x2278c35e generic_error_remove_page +EXPORT_SYMBOL vmlinux 0x2278e94b slhc_remember +EXPORT_SYMBOL vmlinux 0x227e1aea genphy_config_init +EXPORT_SYMBOL vmlinux 0x227fe48f pci_enable_msix_range +EXPORT_SYMBOL vmlinux 0x22974fa6 rps_may_expire_flow +EXPORT_SYMBOL vmlinux 0x22b325d5 kd_mksound +EXPORT_SYMBOL vmlinux 0x2303723b alloc_etherdev_mqs +EXPORT_SYMBOL vmlinux 0x230fd6bd kernel_read +EXPORT_SYMBOL vmlinux 0x231d4001 fb_edid_add_monspecs +EXPORT_SYMBOL vmlinux 0x232013aa follow_pfn +EXPORT_SYMBOL vmlinux 0x233917d1 mac_vmode_to_var +EXPORT_SYMBOL vmlinux 0x2340f8f6 generic_write_end +EXPORT_SYMBOL vmlinux 0x235e90f3 __wake_up_bit +EXPORT_SYMBOL vmlinux 0x236f95df pci_bus_read_config_dword +EXPORT_SYMBOL vmlinux 0x2384af28 sock_release +EXPORT_SYMBOL vmlinux 0x238969bd softnet_data +EXPORT_SYMBOL vmlinux 0x239d3c8b __cleancache_get_page +EXPORT_SYMBOL vmlinux 0x23a574fd security_secmark_relabel_packet +EXPORT_SYMBOL vmlinux 0x23aac0d5 blk_rq_map_kern +EXPORT_SYMBOL vmlinux 0x23b9d6e2 mangle_path +EXPORT_SYMBOL vmlinux 0x23c9891c kstrtoint_from_user +EXPORT_SYMBOL vmlinux 0x23d57106 nf_log_trace +EXPORT_SYMBOL vmlinux 0x23f0708f xfrm6_rcv +EXPORT_SYMBOL vmlinux 0x23f2243d mempool_free +EXPORT_SYMBOL vmlinux 0x23fd3028 vmalloc_node +EXPORT_SYMBOL vmlinux 0x24076057 __scm_destroy +EXPORT_SYMBOL vmlinux 0x24212d86 __frontswap_invalidate_page +EXPORT_SYMBOL vmlinux 0x2424b2d2 xfrm_policy_walk_done +EXPORT_SYMBOL vmlinux 0x24428be5 strncpy_from_user +EXPORT_SYMBOL vmlinux 0x24447335 elevator_alloc +EXPORT_SYMBOL vmlinux 0x24530529 param_set_ulong +EXPORT_SYMBOL vmlinux 0x2459bbcc console_set_on_cmdline +EXPORT_SYMBOL vmlinux 0x247e533d unmap_mapping_range +EXPORT_SYMBOL vmlinux 0x2482e688 vsprintf +EXPORT_SYMBOL vmlinux 0x2484adc3 __kfifo_to_user_r +EXPORT_SYMBOL vmlinux 0x24990714 tcp_prot +EXPORT_SYMBOL vmlinux 0x24d6b4a6 cur_cpu_spec +EXPORT_SYMBOL vmlinux 0x24e60028 pcie_set_mps +EXPORT_SYMBOL vmlinux 0x24f00380 ida_init +EXPORT_SYMBOL vmlinux 0x24f31196 set_groups +EXPORT_SYMBOL vmlinux 0x24f604ce lookup_one_len +EXPORT_SYMBOL vmlinux 0x24fdac79 wake_bit_function +EXPORT_SYMBOL vmlinux 0x2514625b inet6_del_offload +EXPORT_SYMBOL vmlinux 0x25195d2b sock_alloc_send_skb +EXPORT_SYMBOL vmlinux 0x25277497 rfkill_register +EXPORT_SYMBOL vmlinux 0x252cf450 tcf_em_unregister +EXPORT_SYMBOL vmlinux 0x253a7a24 jbd2_journal_clear_features +EXPORT_SYMBOL vmlinux 0x25503bc1 xfrm4_rcv_encap +EXPORT_SYMBOL vmlinux 0x2570a138 reservation_seqcount_string +EXPORT_SYMBOL vmlinux 0x25820c64 fs_overflowuid +EXPORT_SYMBOL vmlinux 0x259b600e crypto_sha512_finup +EXPORT_SYMBOL vmlinux 0x259e00ed simple_open +EXPORT_SYMBOL vmlinux 0x25aa7f27 input_alloc_absinfo +EXPORT_SYMBOL vmlinux 0x25ad9738 register_shrinker +EXPORT_SYMBOL vmlinux 0x25e2fc29 up_write +EXPORT_SYMBOL vmlinux 0x25e8ed29 sg_nents_for_len +EXPORT_SYMBOL vmlinux 0x25e9d4bd resource_list_free +EXPORT_SYMBOL vmlinux 0x25ebda75 bio_flush_dcache_pages +EXPORT_SYMBOL vmlinux 0x261f7829 sock_wmalloc +EXPORT_SYMBOL vmlinux 0x263beb75 ecryptfs_get_versions +EXPORT_SYMBOL vmlinux 0x2642e8df ipv6_mc_check_mld +EXPORT_SYMBOL vmlinux 0x26477c07 __vmalloc +EXPORT_SYMBOL vmlinux 0x2650d835 sysctl_ip_early_demux +EXPORT_SYMBOL vmlinux 0x2665d53a key_create_or_update +EXPORT_SYMBOL vmlinux 0x2667359b twl6040_get_vibralr_status +EXPORT_SYMBOL vmlinux 0x266b81f4 max8998_bulk_write +EXPORT_SYMBOL vmlinux 0x267e568d flush_icache_user_range +EXPORT_SYMBOL vmlinux 0x268442c2 mipi_dsi_dcs_get_pixel_format +EXPORT_SYMBOL vmlinux 0x269d946e pci_scan_bridge +EXPORT_SYMBOL vmlinux 0x26a42cd4 page_cache_next_hole +EXPORT_SYMBOL vmlinux 0x26a52247 sock_i_uid +EXPORT_SYMBOL vmlinux 0x26ac98c5 setup_arg_pages +EXPORT_SYMBOL vmlinux 0x26b760c4 slhc_init +EXPORT_SYMBOL vmlinux 0x26b8dfe7 phy_ethtool_set_eee +EXPORT_SYMBOL vmlinux 0x26c0b274 of_dev_get +EXPORT_SYMBOL vmlinux 0x26c7b172 eth_type_trans +EXPORT_SYMBOL vmlinux 0x26e76fb8 sysctl_udp_wmem_min +EXPORT_SYMBOL vmlinux 0x2711c005 generic_pipe_buf_get +EXPORT_SYMBOL vmlinux 0x273e4e91 blk_mq_start_request +EXPORT_SYMBOL vmlinux 0x2744b342 __nd_iostat_start +EXPORT_SYMBOL vmlinux 0x27460195 tcp_make_synack +EXPORT_SYMBOL vmlinux 0x2746b535 __nd_driver_register +EXPORT_SYMBOL vmlinux 0x274d08dc __kfifo_dma_out_prepare +EXPORT_SYMBOL vmlinux 0x2759f0ff always_delete_dentry +EXPORT_SYMBOL vmlinux 0x27646df3 start_thread +EXPORT_SYMBOL vmlinux 0x276800d5 cdrom_ioctl +EXPORT_SYMBOL vmlinux 0x276c1fb1 blk_queue_max_segments +EXPORT_SYMBOL vmlinux 0x2771d7ff ida_get_new_above +EXPORT_SYMBOL vmlinux 0x277a5a94 gen_replace_estimator +EXPORT_SYMBOL vmlinux 0x27864d57 memparse +EXPORT_SYMBOL vmlinux 0x27866435 security_xfrm_state_alloc +EXPORT_SYMBOL vmlinux 0x27879dd3 scsi_report_device_reset +EXPORT_SYMBOL vmlinux 0x279bae0f flow_get_u32_dst +EXPORT_SYMBOL vmlinux 0x279f59b0 of_find_node_with_property +EXPORT_SYMBOL vmlinux 0x27a0f5a7 blkdev_reread_part +EXPORT_SYMBOL vmlinux 0x27bbf221 disable_irq_nosync +EXPORT_SYMBOL vmlinux 0x27bdc829 I_BDEV +EXPORT_SYMBOL vmlinux 0x27d5cfe0 __mutex_init +EXPORT_SYMBOL vmlinux 0x27e1a049 printk +EXPORT_SYMBOL vmlinux 0x280f6913 vfs_fsync_range +EXPORT_SYMBOL vmlinux 0x281823c5 __kfifo_out_peek +EXPORT_SYMBOL vmlinux 0x28318305 snprintf +EXPORT_SYMBOL vmlinux 0x288c3d38 inet_csk_accept +EXPORT_SYMBOL vmlinux 0x289db3ee idr_remove +EXPORT_SYMBOL vmlinux 0x28a2b29f radix_tree_range_tag_if_tagged +EXPORT_SYMBOL vmlinux 0x28a2ed02 scsi_build_sense_buffer +EXPORT_SYMBOL vmlinux 0x28ab7bc7 read_cache_page_gfp +EXPORT_SYMBOL vmlinux 0x28abfe6e scsi_kmap_atomic_sg +EXPORT_SYMBOL vmlinux 0x28b2aee3 pcim_iomap_table +EXPORT_SYMBOL vmlinux 0x28c49ee4 __tcf_em_tree_match +EXPORT_SYMBOL vmlinux 0x28d8dade inet_recvmsg +EXPORT_SYMBOL vmlinux 0x28e502b6 in6_dev_finish_destroy +EXPORT_SYMBOL vmlinux 0x2900fb6f qdisc_tree_decrease_qlen +EXPORT_SYMBOL vmlinux 0x2901eda7 netif_device_detach +EXPORT_SYMBOL vmlinux 0x29033825 tty_free_termios +EXPORT_SYMBOL vmlinux 0x2906e2d2 inode_sub_rsv_space +EXPORT_SYMBOL vmlinux 0x290db2ea unregister_netdevice_queue +EXPORT_SYMBOL vmlinux 0x29185b1e ps2_drain +EXPORT_SYMBOL vmlinux 0x2929a28b tcp_conn_request +EXPORT_SYMBOL vmlinux 0x29537c9e alloc_chrdev_region +EXPORT_SYMBOL vmlinux 0x2963f25f scsi_test_unit_ready +EXPORT_SYMBOL vmlinux 0x296daa3b ppp_unregister_compressor +EXPORT_SYMBOL vmlinux 0x296e10f2 xfrm_state_insert +EXPORT_SYMBOL vmlinux 0x2990f623 inode_claim_rsv_space +EXPORT_SYMBOL vmlinux 0x2995bfc4 fb_blank +EXPORT_SYMBOL vmlinux 0x29b5b191 nf_setsockopt +EXPORT_SYMBOL vmlinux 0x29d59810 pci_wake_from_d3 +EXPORT_SYMBOL vmlinux 0x29ead8c7 block_truncate_page +EXPORT_SYMBOL vmlinux 0x2a2e4e35 elv_rb_former_request +EXPORT_SYMBOL vmlinux 0x2a303d4d check_signature +EXPORT_SYMBOL vmlinux 0x2a37d074 dma_pool_free +EXPORT_SYMBOL vmlinux 0x2a5bfdb7 bio_integrity_enabled +EXPORT_SYMBOL vmlinux 0x2a6ca040 d_obtain_alias +EXPORT_SYMBOL vmlinux 0x2a7bff33 nf_ip_checksum +EXPORT_SYMBOL vmlinux 0x2aad35de mb_cache_destroy +EXPORT_SYMBOL vmlinux 0x2ab997a0 backlight_device_unregister +EXPORT_SYMBOL vmlinux 0x2ac0d7d5 free_page_put_link +EXPORT_SYMBOL vmlinux 0x2ac4da2a pci_release_regions +EXPORT_SYMBOL vmlinux 0x2ac90ae3 posix_test_lock +EXPORT_SYMBOL vmlinux 0x2aca7630 devfreq_resume_device +EXPORT_SYMBOL vmlinux 0x2acf0feb vfs_fstat +EXPORT_SYMBOL vmlinux 0x2ad2fbb9 seq_lseek +EXPORT_SYMBOL vmlinux 0x2adc7a88 skb_insert +EXPORT_SYMBOL vmlinux 0x2ae4dbc8 jbd2_journal_errno +EXPORT_SYMBOL vmlinux 0x2afa0de6 vfs_llseek +EXPORT_SYMBOL vmlinux 0x2afb08da swiotlb_sync_single_for_cpu +EXPORT_SYMBOL vmlinux 0x2afbdb0d skb_copy_datagram_iter +EXPORT_SYMBOL vmlinux 0x2b0ba2b0 scsi_sense_desc_find +EXPORT_SYMBOL vmlinux 0x2b277ce7 pcim_iounmap_regions +EXPORT_SYMBOL vmlinux 0x2b2ce78b kstrtos8 +EXPORT_SYMBOL vmlinux 0x2b3c6ccb cdev_add +EXPORT_SYMBOL vmlinux 0x2b42e1d9 sync_inode +EXPORT_SYMBOL vmlinux 0x2b46cd5d agp_generic_destroy_page +EXPORT_SYMBOL vmlinux 0x2b4991ec xmon +EXPORT_SYMBOL vmlinux 0x2b724314 jbd2_journal_get_write_access +EXPORT_SYMBOL vmlinux 0x2b734df9 key_link +EXPORT_SYMBOL vmlinux 0x2b7d0015 serio_interrupt +EXPORT_SYMBOL vmlinux 0x2b889688 dm_kcopyd_zero +EXPORT_SYMBOL vmlinux 0x2b9da7a4 genl_lock +EXPORT_SYMBOL vmlinux 0x2ba707a8 sysctl_tcp_low_latency +EXPORT_SYMBOL vmlinux 0x2bb24522 blk_queue_io_min +EXPORT_SYMBOL vmlinux 0x2bd32b6e sock_create +EXPORT_SYMBOL vmlinux 0x2bdd6e28 node_states +EXPORT_SYMBOL vmlinux 0x2be0f12d dql_completed +EXPORT_SYMBOL vmlinux 0x2bed437b truncate_inode_pages +EXPORT_SYMBOL vmlinux 0x2c1a559d nf_log_packet +EXPORT_SYMBOL vmlinux 0x2c256e1f input_scancode_to_scalar +EXPORT_SYMBOL vmlinux 0x2c2636d1 giveup_altivec +EXPORT_SYMBOL vmlinux 0x2c584344 ipv6_chk_addr +EXPORT_SYMBOL vmlinux 0x2c596572 serio_unregister_child_port +EXPORT_SYMBOL vmlinux 0x2c5dd0c2 get_super +EXPORT_SYMBOL vmlinux 0x2c710a68 skb_checksum_trimmed +EXPORT_SYMBOL vmlinux 0x2c7b1fca down_timeout +EXPORT_SYMBOL vmlinux 0x2c8f5ebf textsearch_find_continuous +EXPORT_SYMBOL vmlinux 0x2c900d91 cpufreq_put_global_kobject +EXPORT_SYMBOL vmlinux 0x2ccb5509 pci_set_dma_seg_boundary +EXPORT_SYMBOL vmlinux 0x2cf73cb7 kstrtoll_from_user +EXPORT_SYMBOL vmlinux 0x2d0a0b2a phy_init_eee +EXPORT_SYMBOL vmlinux 0x2d140a58 genl_unlock +EXPORT_SYMBOL vmlinux 0x2d30596c from_kqid_munged +EXPORT_SYMBOL vmlinux 0x2d3385d3 system_wq +EXPORT_SYMBOL vmlinux 0x2d37342e cpu_online_mask +EXPORT_SYMBOL vmlinux 0x2d64f3e7 sg_alloc_table_from_pages +EXPORT_SYMBOL vmlinux 0x2d69e1c1 mmc_align_data_size +EXPORT_SYMBOL vmlinux 0x2d845cef inet_twsk_deschedule +EXPORT_SYMBOL vmlinux 0x2db9473d scsi_device_set_state +EXPORT_SYMBOL vmlinux 0x2dbc4aa1 cont_write_begin +EXPORT_SYMBOL vmlinux 0x2dc5585f down_write_trylock +EXPORT_SYMBOL vmlinux 0x2de5e353 netdev_state_change +EXPORT_SYMBOL vmlinux 0x2deda4a1 security_sk_classify_flow +EXPORT_SYMBOL vmlinux 0x2dfa918e ipv6_find_hdr +EXPORT_SYMBOL vmlinux 0x2dfdb22d tso_count_descs +EXPORT_SYMBOL vmlinux 0x2e06d8b8 kfree_skb +EXPORT_SYMBOL vmlinux 0x2e0d2f7f queue_work_on +EXPORT_SYMBOL vmlinux 0x2e1ca751 clk_put +EXPORT_SYMBOL vmlinux 0x2e2b40d2 strncat +EXPORT_SYMBOL vmlinux 0x2e2ce9e0 sysctl_tcp_syncookies +EXPORT_SYMBOL vmlinux 0x2e3f2d0a input_mt_drop_unused +EXPORT_SYMBOL vmlinux 0x2e4271e0 netdev_notify_peers +EXPORT_SYMBOL vmlinux 0x2e470cce pci_bus_read_config_word +EXPORT_SYMBOL vmlinux 0x2e854b27 mmc_power_save_host +EXPORT_SYMBOL vmlinux 0x2ea6c593 pci_try_set_mwi +EXPORT_SYMBOL vmlinux 0x2ec61d60 fs_bio_set +EXPORT_SYMBOL vmlinux 0x2ee70eeb input_mt_report_slot_state +EXPORT_SYMBOL vmlinux 0x2eeabda4 kernel_sock_ioctl +EXPORT_SYMBOL vmlinux 0x2ef49c60 sk_send_sigurg +EXPORT_SYMBOL vmlinux 0x2ef63ad6 scsi_dev_info_list_del_keyed +EXPORT_SYMBOL vmlinux 0x2ef8a0ba __scsi_print_sense +EXPORT_SYMBOL vmlinux 0x2f03fc4b security_secmark_refcount_inc +EXPORT_SYMBOL vmlinux 0x2f05ea34 scsi_target_resume +EXPORT_SYMBOL vmlinux 0x2f064b55 allocate_resource +EXPORT_SYMBOL vmlinux 0x2f101b66 mount_subtree +EXPORT_SYMBOL vmlinux 0x2f107021 sockfd_lookup +EXPORT_SYMBOL vmlinux 0x2f18bed9 scsi_eh_prep_cmnd +EXPORT_SYMBOL vmlinux 0x2f27b004 tcp_v4_md5_lookup +EXPORT_SYMBOL vmlinux 0x2f287f0d copy_to_user +EXPORT_SYMBOL vmlinux 0x2f301e38 jbd2__journal_start +EXPORT_SYMBOL vmlinux 0x2f3209b3 param_ops_charp +EXPORT_SYMBOL vmlinux 0x2f427266 agp_generic_create_gatt_table +EXPORT_SYMBOL vmlinux 0x2f463da1 __alloc_page_frag +EXPORT_SYMBOL vmlinux 0x2f5f2a57 rps_sock_flow_table +EXPORT_SYMBOL vmlinux 0x2f6c959d iput +EXPORT_SYMBOL vmlinux 0x2f7e539e dev_addr_del +EXPORT_SYMBOL vmlinux 0x2f828da0 iov_iter_get_pages +EXPORT_SYMBOL vmlinux 0x2f9e0568 i2c_del_driver +EXPORT_SYMBOL vmlinux 0x2fb6de5d add_device_randomness +EXPORT_SYMBOL vmlinux 0x2fb79424 i2c_smbus_read_word_data +EXPORT_SYMBOL vmlinux 0x2fbf013a mdio_bus_type +EXPORT_SYMBOL vmlinux 0x2fd44f98 xfrm6_input_addr +EXPORT_SYMBOL vmlinux 0x2fe1eff2 __find_get_block +EXPORT_SYMBOL vmlinux 0x2fe252cc unregister_inet6addr_notifier +EXPORT_SYMBOL vmlinux 0x2fefe105 decrementer_clockevent +EXPORT_SYMBOL vmlinux 0x2ffb4592 netlink_kernel_release +EXPORT_SYMBOL vmlinux 0x30015ad3 generic_file_open +EXPORT_SYMBOL vmlinux 0x300e8308 devm_clk_get +EXPORT_SYMBOL vmlinux 0x30226ddf agp_device_command +EXPORT_SYMBOL vmlinux 0x303041c6 udp_flow_hashrnd +EXPORT_SYMBOL vmlinux 0x30363e15 xfrm_state_lookup_byspi +EXPORT_SYMBOL vmlinux 0x30393cce inet6_bind +EXPORT_SYMBOL vmlinux 0x306309a9 udp_lib_unhash +EXPORT_SYMBOL vmlinux 0x307c2fd0 generic_check_addressable +EXPORT_SYMBOL vmlinux 0x308cd9fa vme_slave_request +EXPORT_SYMBOL vmlinux 0x30918e8c pcim_iounmap +EXPORT_SYMBOL vmlinux 0x3096be16 names_cachep +EXPORT_SYMBOL vmlinux 0x30a80826 __kfifo_from_user +EXPORT_SYMBOL vmlinux 0x30ac1e12 register_key_type +EXPORT_SYMBOL vmlinux 0x30b8b35c cpu_to_chip_id +EXPORT_SYMBOL vmlinux 0x30c4f216 netdev_lower_dev_get_private +EXPORT_SYMBOL vmlinux 0x30ca029a vfs_writev +EXPORT_SYMBOL vmlinux 0x30e51c1c commit_creds +EXPORT_SYMBOL vmlinux 0x30f45bab param_set_invbool +EXPORT_SYMBOL vmlinux 0x30f8e143 inode_set_flags +EXPORT_SYMBOL vmlinux 0x3102d70b frontswap_curr_pages +EXPORT_SYMBOL vmlinux 0x31116e3b pm860x_reg_write +EXPORT_SYMBOL vmlinux 0x311a4d0c mmc_power_restore_host +EXPORT_SYMBOL vmlinux 0x31240574 icmp_send +EXPORT_SYMBOL vmlinux 0x313341f5 framebuffer_alloc +EXPORT_SYMBOL vmlinux 0x3133945f of_create_pci_dev +EXPORT_SYMBOL vmlinux 0x3141261e netdev_info +EXPORT_SYMBOL vmlinux 0x3145216f pci_dev_present +EXPORT_SYMBOL vmlinux 0x3147857d default_red +EXPORT_SYMBOL vmlinux 0x316aebac passthru_features_check +EXPORT_SYMBOL vmlinux 0x3174bd79 bitmap_clear +EXPORT_SYMBOL vmlinux 0x318a3714 scsi_cmd_get_serial +EXPORT_SYMBOL vmlinux 0x318eb5ae generic_file_llseek +EXPORT_SYMBOL vmlinux 0x319e0726 __tracepoint_kmalloc +EXPORT_SYMBOL vmlinux 0x31cdcca1 copy_page_to_iter +EXPORT_SYMBOL vmlinux 0x31d64b26 nd_region_release_lane +EXPORT_SYMBOL vmlinux 0x31db3198 out_of_line_wait_on_bit +EXPORT_SYMBOL vmlinux 0x31f5882a open_exec +EXPORT_SYMBOL vmlinux 0x31fecb8a skb_dequeue +EXPORT_SYMBOL vmlinux 0x320646a9 security_sb_clone_mnt_opts +EXPORT_SYMBOL vmlinux 0x32076e7a mark_buffer_dirty +EXPORT_SYMBOL vmlinux 0x32251f27 scsi_register_interface +EXPORT_SYMBOL vmlinux 0x32688650 seq_release_private +EXPORT_SYMBOL vmlinux 0x32912f0b nf_afinfo +EXPORT_SYMBOL vmlinux 0x32adf849 max8998_update_reg +EXPORT_SYMBOL vmlinux 0x32b81c1d sys_copyarea +EXPORT_SYMBOL vmlinux 0x32ceb9a0 file_ns_capable +EXPORT_SYMBOL vmlinux 0x32d5751d jbd2__journal_restart +EXPORT_SYMBOL vmlinux 0x32f058de uart_get_baud_rate +EXPORT_SYMBOL vmlinux 0x32f37798 fifo_set_limit +EXPORT_SYMBOL vmlinux 0x32f882ac do_splice_to +EXPORT_SYMBOL vmlinux 0x330741c9 security_inode_listsecurity +EXPORT_SYMBOL vmlinux 0x330a6d30 ipv6_sock_mc_drop +EXPORT_SYMBOL vmlinux 0x333cb37c __kfifo_dma_out_prepare_r +EXPORT_SYMBOL vmlinux 0x3347f0e0 generic_file_splice_read +EXPORT_SYMBOL vmlinux 0x33490ab7 bio_uncopy_user +EXPORT_SYMBOL vmlinux 0x334be15b lease_get_mtime +EXPORT_SYMBOL vmlinux 0x336ef032 param_ops_uint +EXPORT_SYMBOL vmlinux 0x3389b283 inet_sock_destruct +EXPORT_SYMBOL vmlinux 0x3398a20f input_register_device +EXPORT_SYMBOL vmlinux 0x33b84f74 copy_page +EXPORT_SYMBOL vmlinux 0x33c7435c prandom_u32_state +EXPORT_SYMBOL vmlinux 0x33d84f67 of_parse_phandle_with_fixed_args +EXPORT_SYMBOL vmlinux 0x33dc844d pci_prepare_to_sleep +EXPORT_SYMBOL vmlinux 0x33f0768c cpufreq_quick_get_max +EXPORT_SYMBOL vmlinux 0x33fcf44a __kfifo_out_r +EXPORT_SYMBOL vmlinux 0x34184afe current_kernel_time +EXPORT_SYMBOL vmlinux 0x341b0392 pci_assign_resource +EXPORT_SYMBOL vmlinux 0x34238880 cdrom_media_changed +EXPORT_SYMBOL vmlinux 0x34296760 mb_cache_shrink +EXPORT_SYMBOL vmlinux 0x342dd126 kobject_add +EXPORT_SYMBOL vmlinux 0x342f6480 set_security_override_from_ctx +EXPORT_SYMBOL vmlinux 0x34324a64 uart_resume_port +EXPORT_SYMBOL vmlinux 0x3434ea9c ip6_frag_init +EXPORT_SYMBOL vmlinux 0x344adbd5 init_cdrom_command +EXPORT_SYMBOL vmlinux 0x3458ca6b abx500_remove_ops +EXPORT_SYMBOL vmlinux 0x3465caa3 cpu_maps_update_begin +EXPORT_SYMBOL vmlinux 0x347013de nla_validate +EXPORT_SYMBOL vmlinux 0x34731f45 jbd2_journal_check_used_features +EXPORT_SYMBOL vmlinux 0x349488aa skb_vlan_pop +EXPORT_SYMBOL vmlinux 0x349cba85 strchr +EXPORT_SYMBOL vmlinux 0x34adcd29 pci_iomap_range +EXPORT_SYMBOL vmlinux 0x34c3ff1d vme_dma_list_add +EXPORT_SYMBOL vmlinux 0x34d2d152 sock_queue_rcv_skb +EXPORT_SYMBOL vmlinux 0x34f3484e security_tun_dev_attach_queue +EXPORT_SYMBOL vmlinux 0x3507e9d1 abx500_get_register_page_interruptible +EXPORT_SYMBOL vmlinux 0x350efd55 skb_dequeue_tail +EXPORT_SYMBOL vmlinux 0x3517383e register_reboot_notifier +EXPORT_SYMBOL vmlinux 0x353151fd fb_get_mode +EXPORT_SYMBOL vmlinux 0x3539f11b match_strlcpy +EXPORT_SYMBOL vmlinux 0x3558fe99 invalidate_inode_buffers +EXPORT_SYMBOL vmlinux 0x355eed61 pipe_lock +EXPORT_SYMBOL vmlinux 0x35612fa4 seq_pad +EXPORT_SYMBOL vmlinux 0x356461c8 rtc_time64_to_tm +EXPORT_SYMBOL vmlinux 0x356f4b84 blk_mq_end_request +EXPORT_SYMBOL vmlinux 0x357a260e nf_register_sockopt +EXPORT_SYMBOL vmlinux 0x3585d081 input_handler_for_each_handle +EXPORT_SYMBOL vmlinux 0x359d3581 __devm_gpiod_get +EXPORT_SYMBOL vmlinux 0x35a88f28 zlib_inflateInit2 +EXPORT_SYMBOL vmlinux 0x35c32767 xor_altivec_2 +EXPORT_SYMBOL vmlinux 0x35df8d96 kmem_cache_shrink +EXPORT_SYMBOL vmlinux 0x36157b1a generic_file_readonly_mmap +EXPORT_SYMBOL vmlinux 0x3618cb2d ida_destroy +EXPORT_SYMBOL vmlinux 0x361d4b48 input_close_device +EXPORT_SYMBOL vmlinux 0x3622bba7 __devm_gpiod_get_optional +EXPORT_SYMBOL vmlinux 0x362e99fa put_disk +EXPORT_SYMBOL vmlinux 0x3634c760 dm_unregister_target +EXPORT_SYMBOL vmlinux 0x36473c45 __cleancache_invalidate_fs +EXPORT_SYMBOL vmlinux 0x365080b3 tcp_get_md5sig_pool +EXPORT_SYMBOL vmlinux 0x366f6619 kthread_stop +EXPORT_SYMBOL vmlinux 0x366f6d27 idr_destroy +EXPORT_SYMBOL vmlinux 0x3682f4d7 __skb_checksum +EXPORT_SYMBOL vmlinux 0x369dbc84 md_set_array_sectors +EXPORT_SYMBOL vmlinux 0x369e1115 kstrtou8_from_user +EXPORT_SYMBOL vmlinux 0x36a61c8a blk_mq_delay_queue +EXPORT_SYMBOL vmlinux 0x36b0e732 try_wait_for_completion +EXPORT_SYMBOL vmlinux 0x36bd681b groups_alloc +EXPORT_SYMBOL vmlinux 0x370b5f3e mb_cache_entry_release +EXPORT_SYMBOL vmlinux 0x371d2130 check_legacy_ioport +EXPORT_SYMBOL vmlinux 0x371d49c0 twl6040_get_sysclk +EXPORT_SYMBOL vmlinux 0x37344510 proc_dointvec_ms_jiffies +EXPORT_SYMBOL vmlinux 0x3743b722 bio_add_page +EXPORT_SYMBOL vmlinux 0x3744cf36 vmalloc_to_pfn +EXPORT_SYMBOL vmlinux 0x37532374 unregister_filesystem +EXPORT_SYMBOL vmlinux 0x3754497c lro_flush_all +EXPORT_SYMBOL vmlinux 0x37649630 __block_write_begin +EXPORT_SYMBOL vmlinux 0x377390d7 blk_get_request +EXPORT_SYMBOL vmlinux 0x37799dba dqget +EXPORT_SYMBOL vmlinux 0x377e31f9 scsi_host_get +EXPORT_SYMBOL vmlinux 0x378d72db iterate_mounts +EXPORT_SYMBOL vmlinux 0x3794ddce blk_queue_max_write_same_sectors +EXPORT_SYMBOL vmlinux 0x379f2061 ip_queue_xmit +EXPORT_SYMBOL vmlinux 0x37af3190 dm_table_run_md_queue_async +EXPORT_SYMBOL vmlinux 0x37afb4c4 pci_bus_assign_resources +EXPORT_SYMBOL vmlinux 0x37befc70 jiffies_to_msecs +EXPORT_SYMBOL vmlinux 0x37e0153d flex_array_prealloc +EXPORT_SYMBOL vmlinux 0x37e79cb2 agp_generic_type_to_mask_type +EXPORT_SYMBOL vmlinux 0x38167782 cdrom_get_media_event +EXPORT_SYMBOL vmlinux 0x381a798a setup_max_cpus +EXPORT_SYMBOL vmlinux 0x38285978 dev_printk +EXPORT_SYMBOL vmlinux 0x384ab3e1 jbd2_journal_begin_ordered_truncate +EXPORT_SYMBOL vmlinux 0x3858ea45 dup_iter +EXPORT_SYMBOL vmlinux 0x38869d88 kstat +EXPORT_SYMBOL vmlinux 0x38a71b7e pci_free_resource_list +EXPORT_SYMBOL vmlinux 0x38a9f7c5 in6addr_loopback +EXPORT_SYMBOL vmlinux 0x38acccbd input_grab_device +EXPORT_SYMBOL vmlinux 0x38af23d7 blk_limits_max_hw_sectors +EXPORT_SYMBOL vmlinux 0x38b825d1 idr_replace +EXPORT_SYMBOL vmlinux 0x38c1cc6b phy_ethtool_set_wol +EXPORT_SYMBOL vmlinux 0x38cfcbea __dynamic_dev_dbg +EXPORT_SYMBOL vmlinux 0x38ef7a56 padata_stop +EXPORT_SYMBOL vmlinux 0x38fb9933 tty_std_termios +EXPORT_SYMBOL vmlinux 0x3920403f sock_no_poll +EXPORT_SYMBOL vmlinux 0x3939f8f0 rfkill_pause_polling +EXPORT_SYMBOL vmlinux 0x393d4de9 crc32_le +EXPORT_SYMBOL vmlinux 0x39461d6a in_egroup_p +EXPORT_SYMBOL vmlinux 0x394ccaa9 loop_backing_file +EXPORT_SYMBOL vmlinux 0x3955fcf6 __kfifo_in_r +EXPORT_SYMBOL vmlinux 0x395d36b5 register_md_cluster_operations +EXPORT_SYMBOL vmlinux 0x39732482 trace_print_symbols_seq +EXPORT_SYMBOL vmlinux 0x39900710 pci_select_bars +EXPORT_SYMBOL vmlinux 0x3994379d do_truncate +EXPORT_SYMBOL vmlinux 0x3995cf1a kthread_create_on_node +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 0x39b5c4b8 __dynamic_netdev_dbg +EXPORT_SYMBOL vmlinux 0x39c02bbd d_delete +EXPORT_SYMBOL vmlinux 0x39c0fa3a start_tty +EXPORT_SYMBOL vmlinux 0x39cdf63c wait_for_completion_interruptible +EXPORT_SYMBOL vmlinux 0x39ff654c blk_queue_end_tag +EXPORT_SYMBOL vmlinux 0x3a08d751 give_up_console +EXPORT_SYMBOL vmlinux 0x3a2ec7db __mmc_claim_host +EXPORT_SYMBOL vmlinux 0x3a4ab1f5 padata_set_cpumasks +EXPORT_SYMBOL vmlinux 0x3a9b6fb9 blk_unregister_region +EXPORT_SYMBOL vmlinux 0x3aa12263 mipi_dsi_driver_unregister +EXPORT_SYMBOL vmlinux 0x3ab093d7 __dquot_alloc_space +EXPORT_SYMBOL vmlinux 0x3abc1228 blk_make_request +EXPORT_SYMBOL vmlinux 0x3ac089e4 devfreq_monitor_start +EXPORT_SYMBOL vmlinux 0x3ae36ce6 param_get_int +EXPORT_SYMBOL vmlinux 0x3b01b804 textsearch_destroy +EXPORT_SYMBOL vmlinux 0x3b02833d dev_printk_emit +EXPORT_SYMBOL vmlinux 0x3b0a478a dev_get_flags +EXPORT_SYMBOL vmlinux 0x3b49864a mdiobus_read +EXPORT_SYMBOL vmlinux 0x3b615a21 wait_for_completion_killable +EXPORT_SYMBOL vmlinux 0x3b644591 __bitmap_shift_left +EXPORT_SYMBOL vmlinux 0x3b911c67 dget_parent +EXPORT_SYMBOL vmlinux 0x3b98313a mmc_set_blockcount +EXPORT_SYMBOL vmlinux 0x3ba52d37 mpage_writepage +EXPORT_SYMBOL vmlinux 0x3bcdc932 ip_do_fragment +EXPORT_SYMBOL vmlinux 0x3c2e4962 param_get_short +EXPORT_SYMBOL vmlinux 0x3c340d43 proc_set_user +EXPORT_SYMBOL vmlinux 0x3c3fce39 __local_bh_enable_ip +EXPORT_SYMBOL vmlinux 0x3c404320 dma_sync_wait +EXPORT_SYMBOL vmlinux 0x3c483012 radix_tree_delete +EXPORT_SYMBOL vmlinux 0x3c5810b9 grab_cache_page_write_begin +EXPORT_SYMBOL vmlinux 0x3c71fe12 bitmap_end_sync +EXPORT_SYMBOL vmlinux 0x3c7c0b40 __alloc_skb +EXPORT_SYMBOL vmlinux 0x3c80c06c kstrtoull +EXPORT_SYMBOL vmlinux 0x3cc4b0dc lg_lock_init +EXPORT_SYMBOL vmlinux 0x3cd2fae7 swiotlb_sync_sg_for_device +EXPORT_SYMBOL vmlinux 0x3ce4c9f6 force_sig +EXPORT_SYMBOL vmlinux 0x3ce4ca6f disable_irq +EXPORT_SYMBOL vmlinux 0x3d07554e seq_put_decimal_ll +EXPORT_SYMBOL vmlinux 0x3d0a5bf1 crypto_sha512_update +EXPORT_SYMBOL vmlinux 0x3d13bfb5 dquot_commit_info +EXPORT_SYMBOL vmlinux 0x3d55986b read_dev_sector +EXPORT_SYMBOL vmlinux 0x3d62e981 blk_queue_logical_block_size +EXPORT_SYMBOL vmlinux 0x3d7daa77 bio_integrity_trim +EXPORT_SYMBOL vmlinux 0x3dbf36c9 sg_copy_buffer +EXPORT_SYMBOL vmlinux 0x3dc02a4e flex_array_free_parts +EXPORT_SYMBOL vmlinux 0x3dcb37f2 tty_lock +EXPORT_SYMBOL vmlinux 0x3dcb88a0 irq_set_handler_data +EXPORT_SYMBOL vmlinux 0x3dd94fdc iov_iter_get_pages_alloc +EXPORT_SYMBOL vmlinux 0x3dde4470 bitmap_unplug +EXPORT_SYMBOL vmlinux 0x3ddfa738 pci_disable_link_state_locked +EXPORT_SYMBOL vmlinux 0x3de0b653 phy_find_first +EXPORT_SYMBOL vmlinux 0x3deb4c64 skb_free_datagram +EXPORT_SYMBOL vmlinux 0x3dfc897c seq_hlist_start_head +EXPORT_SYMBOL vmlinux 0x3e21d018 get_user_pages_locked +EXPORT_SYMBOL vmlinux 0x3e27a603 netpoll_print_options +EXPORT_SYMBOL vmlinux 0x3e36d0ff sock_no_shutdown +EXPORT_SYMBOL vmlinux 0x3e46806c of_get_next_child +EXPORT_SYMBOL vmlinux 0x3e5c2646 __elv_add_request +EXPORT_SYMBOL vmlinux 0x3e661836 block_read_full_page +EXPORT_SYMBOL vmlinux 0x3e839eb6 nobh_write_end +EXPORT_SYMBOL vmlinux 0x3e882943 pcibios_align_resource +EXPORT_SYMBOL vmlinux 0x3e9110fa __hw_addr_unsync +EXPORT_SYMBOL vmlinux 0x3e938fbb pm860x_bulk_write +EXPORT_SYMBOL vmlinux 0x3e95083c vme_slave_get +EXPORT_SYMBOL vmlinux 0x3ea929fd block_is_partially_uptodate +EXPORT_SYMBOL vmlinux 0x3eca5813 __f_setown +EXPORT_SYMBOL vmlinux 0x3eda3a45 page_waitqueue +EXPORT_SYMBOL vmlinux 0x3ef7bcf7 blk_queue_max_segment_size +EXPORT_SYMBOL vmlinux 0x3f0546a8 ioread32_rep +EXPORT_SYMBOL vmlinux 0x3f186620 netif_device_attach +EXPORT_SYMBOL vmlinux 0x3f36cb9b tso_start +EXPORT_SYMBOL vmlinux 0x3f406a3b enable_kernel_altivec +EXPORT_SYMBOL vmlinux 0x3f4547a7 put_unused_fd +EXPORT_SYMBOL vmlinux 0x3f47eb34 kern_unmount +EXPORT_SYMBOL vmlinux 0x3f52cc72 input_mt_report_pointer_emulation +EXPORT_SYMBOL vmlinux 0x3f6eaf75 abx500_set_register_interruptible +EXPORT_SYMBOL vmlinux 0x3f9cc3f4 default_qdisc_ops +EXPORT_SYMBOL vmlinux 0x3f9e23b4 bioset_create +EXPORT_SYMBOL vmlinux 0x3fa4b751 get_super_thawed +EXPORT_SYMBOL vmlinux 0x3fac0004 sync_dirty_buffer +EXPORT_SYMBOL vmlinux 0x3fb4c08b udp_add_offload +EXPORT_SYMBOL vmlinux 0x3fd0dc3b tcp_md5_do_del +EXPORT_SYMBOL vmlinux 0x3fe0d1c0 slhc_free +EXPORT_SYMBOL vmlinux 0x3fe2ccbe memweight +EXPORT_SYMBOL vmlinux 0x3fec048f sg_next +EXPORT_SYMBOL vmlinux 0x3ff8e495 lg_local_unlock_cpu +EXPORT_SYMBOL vmlinux 0x402b8281 __request_module +EXPORT_SYMBOL vmlinux 0x4039918a clk_register_clkdev +EXPORT_SYMBOL vmlinux 0x4059ba39 tty_unthrottle +EXPORT_SYMBOL vmlinux 0x405c1144 get_seconds +EXPORT_SYMBOL vmlinux 0x408148b3 vfs_getxattr_alloc +EXPORT_SYMBOL vmlinux 0x408b9ddb buffer_migrate_page +EXPORT_SYMBOL vmlinux 0x409343dd of_graph_get_endpoint_by_regs +EXPORT_SYMBOL vmlinux 0x40973662 sysctl_udp_mem +EXPORT_SYMBOL vmlinux 0x40a27c37 scsi_dev_info_remove_list +EXPORT_SYMBOL vmlinux 0x40a9b349 vzalloc +EXPORT_SYMBOL vmlinux 0x40c01859 gen_pool_best_fit +EXPORT_SYMBOL vmlinux 0x40c7247c si_meminfo +EXPORT_SYMBOL vmlinux 0x40d04664 console_trylock +EXPORT_SYMBOL vmlinux 0x40d59096 unregister_restart_handler +EXPORT_SYMBOL vmlinux 0x41091fe8 vfs_whiteout +EXPORT_SYMBOL vmlinux 0x410c3fc8 netdev_printk +EXPORT_SYMBOL vmlinux 0x41230fec xfrm_state_walk_done +EXPORT_SYMBOL vmlinux 0x41350f37 neigh_xmit +EXPORT_SYMBOL vmlinux 0x413c2890 devfreq_interval_update +EXPORT_SYMBOL vmlinux 0x4142c910 key_unlink +EXPORT_SYMBOL vmlinux 0x41482d8b strndup_user +EXPORT_SYMBOL vmlinux 0x4149464c ppp_register_channel +EXPORT_SYMBOL vmlinux 0x414ed06b of_get_ibm_chip_id +EXPORT_SYMBOL vmlinux 0x4159c38f ioremap_wc +EXPORT_SYMBOL vmlinux 0x4169eb27 pci_scan_slot +EXPORT_SYMBOL vmlinux 0x4188d439 neigh_rand_reach_time +EXPORT_SYMBOL vmlinux 0x41893d4e ip_mc_join_group +EXPORT_SYMBOL vmlinux 0x419717f3 dm_put_table_device +EXPORT_SYMBOL vmlinux 0x4197df6d make_kprojid +EXPORT_SYMBOL vmlinux 0x419ecb21 generic_file_direct_write +EXPORT_SYMBOL vmlinux 0x41aac390 unlink_framebuffer +EXPORT_SYMBOL vmlinux 0x41e641d9 block_commit_write +EXPORT_SYMBOL vmlinux 0x41fbdc7c register_netdev +EXPORT_SYMBOL vmlinux 0x41fc6117 mach_corenet_generic +EXPORT_SYMBOL vmlinux 0x420f4df6 inode_get_bytes +EXPORT_SYMBOL vmlinux 0x42160169 flush_workqueue +EXPORT_SYMBOL vmlinux 0x4219b37b __inet_stream_connect +EXPORT_SYMBOL vmlinux 0x4237e3fb security_path_mkdir +EXPORT_SYMBOL vmlinux 0x4239c973 send_sig_info +EXPORT_SYMBOL vmlinux 0x4248ae3c single_task_running +EXPORT_SYMBOL vmlinux 0x4248f09f backlight_device_register +EXPORT_SYMBOL vmlinux 0x424d3620 zlib_inflateIncomp +EXPORT_SYMBOL vmlinux 0x42595e58 vgacon_text_force +EXPORT_SYMBOL vmlinux 0x426629f7 fddi_type_trans +EXPORT_SYMBOL vmlinux 0x42810ba1 netif_set_real_num_tx_queues +EXPORT_SYMBOL vmlinux 0x428e40a1 bio_init +EXPORT_SYMBOL vmlinux 0x42a06f0d netif_tx_wake_queue +EXPORT_SYMBOL vmlinux 0x42a1b208 gen_pool_first_fit +EXPORT_SYMBOL vmlinux 0x42aae27c generic_pipe_buf_steal +EXPORT_SYMBOL vmlinux 0x42d78088 tcp_req_err +EXPORT_SYMBOL vmlinux 0x42db7434 generic_delete_inode +EXPORT_SYMBOL vmlinux 0x42db998d bdget +EXPORT_SYMBOL vmlinux 0x4302d0eb free_pages +EXPORT_SYMBOL vmlinux 0x4306df55 skb_coalesce_rx_frag +EXPORT_SYMBOL vmlinux 0x4318c20f inet_csk_destroy_sock +EXPORT_SYMBOL vmlinux 0x433b6361 phy_suspend +EXPORT_SYMBOL vmlinux 0x434c91e2 ipv6_setsockopt +EXPORT_SYMBOL vmlinux 0x4351577a fb_parse_edid +EXPORT_SYMBOL vmlinux 0x43548ba9 jbd2_journal_start +EXPORT_SYMBOL vmlinux 0x436c2179 iowrite32 +EXPORT_SYMBOL vmlinux 0x43790ea9 devm_request_threaded_irq +EXPORT_SYMBOL vmlinux 0x438610bd security_tun_dev_alloc_security +EXPORT_SYMBOL vmlinux 0x439d1b36 devm_release_resource +EXPORT_SYMBOL vmlinux 0x43a01f90 complete_all +EXPORT_SYMBOL vmlinux 0x43bd532d xfrm_spd_getinfo +EXPORT_SYMBOL vmlinux 0x43c37913 mdiobus_write +EXPORT_SYMBOL vmlinux 0x43f23311 dm_table_get_md +EXPORT_SYMBOL vmlinux 0x4411c503 prandom_seed +EXPORT_SYMBOL vmlinux 0x44387a95 giveup_fpu +EXPORT_SYMBOL vmlinux 0x443b32d7 eth_commit_mac_addr_change +EXPORT_SYMBOL vmlinux 0x44474acd inet_proto_csum_replace4 +EXPORT_SYMBOL vmlinux 0x448c0d46 padata_do_serial +EXPORT_SYMBOL vmlinux 0x448eac3e kmemdup +EXPORT_SYMBOL vmlinux 0x44b1d426 __dynamic_pr_debug +EXPORT_SYMBOL vmlinux 0x44bcf8c2 dquot_drop +EXPORT_SYMBOL vmlinux 0x44bcf9f9 iov_iter_init +EXPORT_SYMBOL vmlinux 0x44e9a829 match_token +EXPORT_SYMBOL vmlinux 0x44eb192e wait_for_completion +EXPORT_SYMBOL vmlinux 0x44f0731a lock_sock_nested +EXPORT_SYMBOL vmlinux 0x44f3c330 ip_options_rcv_srr +EXPORT_SYMBOL vmlinux 0x44fb2e83 netif_receive_skb_sk +EXPORT_SYMBOL vmlinux 0x45097e03 flow_cache_lookup +EXPORT_SYMBOL vmlinux 0x451419da simple_write_end +EXPORT_SYMBOL vmlinux 0x45247120 netif_napi_add +EXPORT_SYMBOL vmlinux 0x453c8403 pci_msi_enabled +EXPORT_SYMBOL vmlinux 0x457053e0 dma_async_device_unregister +EXPORT_SYMBOL vmlinux 0x45782092 netif_stacked_transfer_operstate +EXPORT_SYMBOL vmlinux 0x4578f528 __kfifo_to_user +EXPORT_SYMBOL vmlinux 0x45986cab blk_stop_queue +EXPORT_SYMBOL vmlinux 0x45997dfe jbd2_journal_revoke +EXPORT_SYMBOL vmlinux 0x459db085 blk_mq_map_queue +EXPORT_SYMBOL vmlinux 0x45a55ec8 __iounmap +EXPORT_SYMBOL vmlinux 0x45a6be13 cpufreq_sysfs_remove_file +EXPORT_SYMBOL vmlinux 0x45a765cf pci_add_resource +EXPORT_SYMBOL vmlinux 0x45c67757 param_get_charp +EXPORT_SYMBOL vmlinux 0x45ccd098 page_zero_new_buffers +EXPORT_SYMBOL vmlinux 0x45d2c010 padata_start +EXPORT_SYMBOL vmlinux 0x4601f14b genphy_restart_aneg +EXPORT_SYMBOL vmlinux 0x460d2a85 dcache_readdir +EXPORT_SYMBOL vmlinux 0x4612c59d down_trylock +EXPORT_SYMBOL vmlinux 0x461ac773 kstrtol_from_user +EXPORT_SYMBOL vmlinux 0x461d1216 contig_page_data +EXPORT_SYMBOL vmlinux 0x461ebfa0 __copy_tofrom_user +EXPORT_SYMBOL vmlinux 0x461ee620 pcie_capability_write_word +EXPORT_SYMBOL vmlinux 0x462cab8c blk_init_queue +EXPORT_SYMBOL vmlinux 0x4652c8bb mmc_stop_bkops +EXPORT_SYMBOL vmlinux 0x465cab34 secure_ipv6_port_ephemeral +EXPORT_SYMBOL vmlinux 0x46649cd1 vme_lm_set +EXPORT_SYMBOL vmlinux 0x466c14a7 __delay +EXPORT_SYMBOL vmlinux 0x466f6107 __dquot_transfer +EXPORT_SYMBOL vmlinux 0x4671d734 cdrom_mode_select +EXPORT_SYMBOL vmlinux 0x46780641 pci_bus_add_devices +EXPORT_SYMBOL vmlinux 0x467df16d netdev_rss_key_fill +EXPORT_SYMBOL vmlinux 0x468a16c0 pci_dev_put +EXPORT_SYMBOL vmlinux 0x46968466 unlock_new_inode +EXPORT_SYMBOL vmlinux 0x46a6858e phy_read_mmd_indirect +EXPORT_SYMBOL vmlinux 0x46cd8e71 twl6030_mmc_card_detect +EXPORT_SYMBOL vmlinux 0x46d12956 wait_for_completion_interruptible_timeout +EXPORT_SYMBOL vmlinux 0x46feb099 dm_read_arg +EXPORT_SYMBOL vmlinux 0x471521cd km_query +EXPORT_SYMBOL vmlinux 0x471c1612 param_ops_bool +EXPORT_SYMBOL vmlinux 0x4722be83 security_path_chown +EXPORT_SYMBOL vmlinux 0x4729f52f mark_buffer_async_write +EXPORT_SYMBOL vmlinux 0x4739b5d8 pci_claim_resource +EXPORT_SYMBOL vmlinux 0x47416e14 cpu_rmap_add +EXPORT_SYMBOL vmlinux 0x47585539 blk_mq_init_allocated_queue +EXPORT_SYMBOL vmlinux 0x47608718 fence_init +EXPORT_SYMBOL vmlinux 0x47939e0d __tasklet_hi_schedule +EXPORT_SYMBOL vmlinux 0x479c3c86 find_next_zero_bit +EXPORT_SYMBOL vmlinux 0x47f450f0 phy_attach_direct +EXPORT_SYMBOL vmlinux 0x480e2987 clkdev_add +EXPORT_SYMBOL vmlinux 0x4814cfbe security_inode_readlink +EXPORT_SYMBOL vmlinux 0x4823b505 mipi_dsi_generic_write +EXPORT_SYMBOL vmlinux 0x4829a47e memcpy +EXPORT_SYMBOL vmlinux 0x483d06be __pagevec_lru_add +EXPORT_SYMBOL vmlinux 0x48404b9a remove_wait_queue +EXPORT_SYMBOL vmlinux 0x4841bdee strnchr +EXPORT_SYMBOL vmlinux 0x4859b8bb rtc_year_days +EXPORT_SYMBOL vmlinux 0x48710ddb blk_queue_update_dma_pad +EXPORT_SYMBOL vmlinux 0x48875fd4 md_wait_for_blocked_rdev +EXPORT_SYMBOL vmlinux 0x48a771c5 cpu_core_map +EXPORT_SYMBOL vmlinux 0x48b99a13 vme_lm_free +EXPORT_SYMBOL vmlinux 0x48d4a51c sk_ns_capable +EXPORT_SYMBOL vmlinux 0x48f1564f udp_seq_open +EXPORT_SYMBOL vmlinux 0x49045426 icmp_err_convert +EXPORT_SYMBOL vmlinux 0x49053c15 udp_prot +EXPORT_SYMBOL vmlinux 0x4918d2df dquot_quota_on_mount +EXPORT_SYMBOL vmlinux 0x491b7cbb filemap_write_and_wait_range +EXPORT_SYMBOL vmlinux 0x49370b25 udp_lib_setsockopt +EXPORT_SYMBOL vmlinux 0x4938b5b7 single_open_size +EXPORT_SYMBOL vmlinux 0x495c96f8 posix_acl_init +EXPORT_SYMBOL vmlinux 0x49603fb8 security_sb_copy_data +EXPORT_SYMBOL vmlinux 0x496d8091 dev_mc_add +EXPORT_SYMBOL vmlinux 0x497c10bc vme_register_bridge +EXPORT_SYMBOL vmlinux 0x498d357c flock_lock_inode_wait +EXPORT_SYMBOL vmlinux 0x49968d36 skb_make_writable +EXPORT_SYMBOL vmlinux 0x49aea2c4 arp_create +EXPORT_SYMBOL vmlinux 0x49b07aec tcp_select_initial_window +EXPORT_SYMBOL vmlinux 0x49ea5c25 bioset_create_nobvec +EXPORT_SYMBOL vmlinux 0x49efa8f3 tty_schedule_flip +EXPORT_SYMBOL vmlinux 0x49f71442 dev_close_many +EXPORT_SYMBOL vmlinux 0x4a084b78 i2c_use_client +EXPORT_SYMBOL vmlinux 0x4a183e23 nf_nat_decode_session_hook +EXPORT_SYMBOL vmlinux 0x4a25af13 try_to_writeback_inodes_sb +EXPORT_SYMBOL vmlinux 0x4a52de30 input_release_device +EXPORT_SYMBOL vmlinux 0x4a536f27 tty_insert_flip_string_flags +EXPORT_SYMBOL vmlinux 0x4a7b029b pci_iounmap +EXPORT_SYMBOL vmlinux 0x4a7cfe4f udp_flush_pending_frames +EXPORT_SYMBOL vmlinux 0x4a81844d serio_rescan +EXPORT_SYMBOL vmlinux 0x4a885584 blk_mq_init_queue +EXPORT_SYMBOL vmlinux 0x4a9ae057 input_mt_sync_frame +EXPORT_SYMBOL vmlinux 0x4aa0d30b set_binfmt +EXPORT_SYMBOL vmlinux 0x4abbe3c2 vm_brk +EXPORT_SYMBOL vmlinux 0x4ac4e9ab bh_submit_read +EXPORT_SYMBOL vmlinux 0x4acd93d3 release_resource +EXPORT_SYMBOL vmlinux 0x4ad2afef blk_delay_queue +EXPORT_SYMBOL vmlinux 0x4aee1ce2 scm_detach_fds +EXPORT_SYMBOL vmlinux 0x4afe9a77 scsi_partsize +EXPORT_SYMBOL vmlinux 0x4b085dbf agp3_generic_configure +EXPORT_SYMBOL vmlinux 0x4b093a23 of_gpio_simple_xlate +EXPORT_SYMBOL vmlinux 0x4b1d8200 tty_port_close_start +EXPORT_SYMBOL vmlinux 0x4b2e87a7 simple_setattr +EXPORT_SYMBOL vmlinux 0x4b3a8539 d_genocide +EXPORT_SYMBOL vmlinux 0x4b3bc466 sock_no_listen +EXPORT_SYMBOL vmlinux 0x4b450d92 vmap +EXPORT_SYMBOL vmlinux 0x4b49a00b jbd2_journal_init_inode +EXPORT_SYMBOL vmlinux 0x4b554b4b dev_remove_offload +EXPORT_SYMBOL vmlinux 0x4b5fd49e dm_kcopyd_do_callback +EXPORT_SYMBOL vmlinux 0x4b713652 __dev_kfree_skb_any +EXPORT_SYMBOL vmlinux 0x4b71df83 md_write_start +EXPORT_SYMBOL vmlinux 0x4b8326ff ida_remove +EXPORT_SYMBOL vmlinux 0x4b87258f dm_get_device +EXPORT_SYMBOL vmlinux 0x4b8a6103 skb_clone +EXPORT_SYMBOL vmlinux 0x4b8cc323 __dev_get_by_index +EXPORT_SYMBOL vmlinux 0x4b92d64a gnet_stats_copy_basic +EXPORT_SYMBOL vmlinux 0x4baf35a7 vme_master_get +EXPORT_SYMBOL vmlinux 0x4bb8f2e1 dev_emerg +EXPORT_SYMBOL vmlinux 0x4bd02504 bio_integrity_prep +EXPORT_SYMBOL vmlinux 0x4be4b7e8 xfrm_state_add +EXPORT_SYMBOL vmlinux 0x4be90ab0 textsearch_prepare +EXPORT_SYMBOL vmlinux 0x4c11435a _raw_read_lock_bh +EXPORT_SYMBOL vmlinux 0x4c1cd320 mfd_cell_enable +EXPORT_SYMBOL vmlinux 0x4c29bbb1 qdisc_list_add +EXPORT_SYMBOL vmlinux 0x4c346a53 kvasprintf +EXPORT_SYMBOL vmlinux 0x4c39fd8b netpoll_setup +EXPORT_SYMBOL vmlinux 0x4c43fe39 write_inode_now +EXPORT_SYMBOL vmlinux 0x4c44de60 pcix_get_mmrbc +EXPORT_SYMBOL vmlinux 0x4c616f91 dquot_release +EXPORT_SYMBOL vmlinux 0x4ca6b5c7 i2c_master_send +EXPORT_SYMBOL vmlinux 0x4ca9669f scnprintf +EXPORT_SYMBOL vmlinux 0x4cab7bfd read_code +EXPORT_SYMBOL vmlinux 0x4cb0e988 gen_pool_dma_alloc +EXPORT_SYMBOL vmlinux 0x4cb88f76 posix_acl_chmod +EXPORT_SYMBOL vmlinux 0x4cdb3178 ns_to_timeval +EXPORT_SYMBOL vmlinux 0x4cea520e kmem_cache_size +EXPORT_SYMBOL vmlinux 0x4d12aabd __d_drop +EXPORT_SYMBOL vmlinux 0x4d1d83dd del_gendisk +EXPORT_SYMBOL vmlinux 0x4d294bb4 bit_wait_io +EXPORT_SYMBOL vmlinux 0x4d56f21b pcie_capability_read_word +EXPORT_SYMBOL vmlinux 0x4d6797c9 fb_class +EXPORT_SYMBOL vmlinux 0x4d6976cb netdev_warn +EXPORT_SYMBOL vmlinux 0x4d77d844 scsi_add_device +EXPORT_SYMBOL vmlinux 0x4d791953 mempool_resize +EXPORT_SYMBOL vmlinux 0x4d83b82e twl6040_set_bits +EXPORT_SYMBOL vmlinux 0x4d9365bf cdev_alloc +EXPORT_SYMBOL vmlinux 0x4d974b9c register_sysrq_key +EXPORT_SYMBOL vmlinux 0x4d98a470 mmc_put_card +EXPORT_SYMBOL vmlinux 0x4d9b652b rb_erase +EXPORT_SYMBOL vmlinux 0x4da7832c finish_no_open +EXPORT_SYMBOL vmlinux 0x4dae423e inet_dgram_connect +EXPORT_SYMBOL vmlinux 0x4dd6584b deactivate_locked_super +EXPORT_SYMBOL vmlinux 0x4de34a07 cpu_rmap_put +EXPORT_SYMBOL vmlinux 0x4df119fa __bitmap_parse +EXPORT_SYMBOL vmlinux 0x4e1b216e md_reload_sb +EXPORT_SYMBOL vmlinux 0x4e257ecd qdisc_create_dflt +EXPORT_SYMBOL vmlinux 0x4e3567f7 match_int +EXPORT_SYMBOL vmlinux 0x4e3be1e7 blk_start_queue +EXPORT_SYMBOL vmlinux 0x4e41d568 bitmap_start_sync +EXPORT_SYMBOL vmlinux 0x4e68e9be rb_next_postorder +EXPORT_SYMBOL vmlinux 0x4e6b6c7d da903x_query_status +EXPORT_SYMBOL vmlinux 0x4e6e8ea7 fg_console +EXPORT_SYMBOL vmlinux 0x4e81ccaf blk_pm_runtime_init +EXPORT_SYMBOL vmlinux 0x4e8a7f3e thaw_super +EXPORT_SYMBOL vmlinux 0x4e92a980 of_graph_get_remote_port +EXPORT_SYMBOL vmlinux 0x4e9a0f34 i2c_add_adapter +EXPORT_SYMBOL vmlinux 0x4e9dffb5 ip_fast_csum +EXPORT_SYMBOL vmlinux 0x4ea8ce92 dev_set_mtu +EXPORT_SYMBOL vmlinux 0x4eba1fa1 module_layout +EXPORT_SYMBOL vmlinux 0x4ec68f03 mmc_erase +EXPORT_SYMBOL vmlinux 0x4ecbdd28 i2c_smbus_read_i2c_block_data +EXPORT_SYMBOL vmlinux 0x4ed6ab83 inet_sendpage +EXPORT_SYMBOL vmlinux 0x4edb8349 blk_run_queue +EXPORT_SYMBOL vmlinux 0x4edd72f7 block_all_signals +EXPORT_SYMBOL vmlinux 0x4ee36b3c napi_gro_frags +EXPORT_SYMBOL vmlinux 0x4f1cd128 security_tun_dev_create +EXPORT_SYMBOL vmlinux 0x4f1f04a1 bmap +EXPORT_SYMBOL vmlinux 0x4f2250ba rtc_tm_to_time64 +EXPORT_SYMBOL vmlinux 0x4f391d0e nla_parse +EXPORT_SYMBOL vmlinux 0x4f616daa __task_pid_nr_ns +EXPORT_SYMBOL vmlinux 0x4f68e5c9 do_gettimeofday +EXPORT_SYMBOL vmlinux 0x4f848ded mipi_dsi_host_unregister +EXPORT_SYMBOL vmlinux 0x4f8aae9f unlock_rename +EXPORT_SYMBOL vmlinux 0x4fb43b8f netdev_lower_get_next_private +EXPORT_SYMBOL vmlinux 0x4fb7b0ce __bforget +EXPORT_SYMBOL vmlinux 0x4fd49759 zpool_unregister_driver +EXPORT_SYMBOL vmlinux 0x4fdee897 i8042_command +EXPORT_SYMBOL vmlinux 0x4feaab8c irq_set_chip +EXPORT_SYMBOL vmlinux 0x4ffcfbb5 kset_register +EXPORT_SYMBOL vmlinux 0x5000deb3 ip6_route_me_harder +EXPORT_SYMBOL vmlinux 0x50097088 security_tun_dev_free_security +EXPORT_SYMBOL vmlinux 0x506342b1 of_iomap +EXPORT_SYMBOL vmlinux 0x5063df40 __posix_acl_create +EXPORT_SYMBOL vmlinux 0x506e16ec vme_slot_num +EXPORT_SYMBOL vmlinux 0x507b12e6 cdrom_number_of_slots +EXPORT_SYMBOL vmlinux 0x5094ecba phy_detach +EXPORT_SYMBOL vmlinux 0x50a6a99e padata_unregister_cpumask_notifier +EXPORT_SYMBOL vmlinux 0x50a90e8d bsearch +EXPORT_SYMBOL vmlinux 0x50ba769a kblockd_schedule_work +EXPORT_SYMBOL vmlinux 0x50d49e13 keyring_clear +EXPORT_SYMBOL vmlinux 0x50d6615c genlmsg_multicast_allns +EXPORT_SYMBOL vmlinux 0x50ded37c __posix_acl_chmod +EXPORT_SYMBOL vmlinux 0x5105c437 __skb_checksum_complete_head +EXPORT_SYMBOL vmlinux 0x51164ad9 cmdline_parts_set +EXPORT_SYMBOL vmlinux 0x5118c382 secure_dccp_sequence_number +EXPORT_SYMBOL vmlinux 0x51657053 kernel_sock_shutdown +EXPORT_SYMBOL vmlinux 0x51762af1 page_cache_prev_hole +EXPORT_SYMBOL vmlinux 0x517cc62d xfrm_stateonly_find +EXPORT_SYMBOL vmlinux 0x518ac16b of_get_mac_address +EXPORT_SYMBOL vmlinux 0x51953327 tty_write_room +EXPORT_SYMBOL vmlinux 0x519b0da3 finish_wait +EXPORT_SYMBOL vmlinux 0x51aedb9a of_n_addr_cells +EXPORT_SYMBOL vmlinux 0x51b9b2c9 d_instantiate +EXPORT_SYMBOL vmlinux 0x51ffa182 file_open_root +EXPORT_SYMBOL vmlinux 0x52026cdf security_sb_parse_opts_str +EXPORT_SYMBOL vmlinux 0x5215bcba reservation_object_add_excl_fence +EXPORT_SYMBOL vmlinux 0x521b36b5 qdisc_put_rtab +EXPORT_SYMBOL vmlinux 0x52362610 cdrom_check_events +EXPORT_SYMBOL vmlinux 0x52428cc8 parent_mem_cgroup +EXPORT_SYMBOL vmlinux 0x5249ace6 pci_pme_active +EXPORT_SYMBOL vmlinux 0x524d5cf0 abort_creds +EXPORT_SYMBOL vmlinux 0x5256cf65 dev_uc_sync +EXPORT_SYMBOL vmlinux 0x527139ee mmc_can_secure_erase_trim +EXPORT_SYMBOL vmlinux 0x5273de2e gnet_stats_copy_queue +EXPORT_SYMBOL vmlinux 0x52805b2f get_cached_acl_rcu +EXPORT_SYMBOL vmlinux 0x52983a4f vme_master_write +EXPORT_SYMBOL vmlinux 0x52a65fec dev_mc_sync +EXPORT_SYMBOL vmlinux 0x52b3f193 of_device_is_available +EXPORT_SYMBOL vmlinux 0x52c17ae2 param_array_ops +EXPORT_SYMBOL vmlinux 0x52da9747 mdiobus_scan +EXPORT_SYMBOL vmlinux 0x52f4326a security_path_mknod +EXPORT_SYMBOL vmlinux 0x52f9040e generic_setlease +EXPORT_SYMBOL vmlinux 0x5304aae2 request_firmware_nowait +EXPORT_SYMBOL vmlinux 0x5312432d dev_change_flags +EXPORT_SYMBOL vmlinux 0x531f6ba7 __tcf_hash_release +EXPORT_SYMBOL vmlinux 0x532e88b0 vlan_vid_add +EXPORT_SYMBOL vmlinux 0x53326531 mempool_alloc_pages +EXPORT_SYMBOL vmlinux 0x53392a62 alloc_anon_inode +EXPORT_SYMBOL vmlinux 0x533b606e blk_queue_max_hw_sectors +EXPORT_SYMBOL vmlinux 0x535c8308 vme_dma_pattern_attribute +EXPORT_SYMBOL vmlinux 0x535f502b blk_queue_start_tag +EXPORT_SYMBOL vmlinux 0x535fbe9c dev_notice +EXPORT_SYMBOL vmlinux 0x536cc847 memcg_kmem_enabled_key +EXPORT_SYMBOL vmlinux 0x536db6b1 __inc_zone_page_state +EXPORT_SYMBOL vmlinux 0x536fc280 phy_device_create +EXPORT_SYMBOL vmlinux 0x5377e556 hex2bin +EXPORT_SYMBOL vmlinux 0x5385856d dcb_setapp +EXPORT_SYMBOL vmlinux 0x539af73c __sg_alloc_table +EXPORT_SYMBOL vmlinux 0x53a2f247 md_integrity_register +EXPORT_SYMBOL vmlinux 0x53c2e82f iterate_dir +EXPORT_SYMBOL vmlinux 0x53ebab1b _outsl_ns +EXPORT_SYMBOL vmlinux 0x53f19b2c dev_get_by_index +EXPORT_SYMBOL vmlinux 0x53f95e41 phy_stop_interrupts +EXPORT_SYMBOL vmlinux 0x5409775b free_irq_cpu_rmap +EXPORT_SYMBOL vmlinux 0x5412c7c7 up +EXPORT_SYMBOL vmlinux 0x54245b39 kstrtoull_from_user +EXPORT_SYMBOL vmlinux 0x54276dff jbd2_journal_load +EXPORT_SYMBOL vmlinux 0x543ef284 seq_hlist_start +EXPORT_SYMBOL vmlinux 0x54406ead sock_recv_errqueue +EXPORT_SYMBOL vmlinux 0x5448fef4 sg_miter_next +EXPORT_SYMBOL vmlinux 0x545f3ed3 of_node_get +EXPORT_SYMBOL vmlinux 0x5475a54f fbcon_set_bitops +EXPORT_SYMBOL vmlinux 0x548683dd flush_signals +EXPORT_SYMBOL vmlinux 0x54941884 mmc_detect_change +EXPORT_SYMBOL vmlinux 0x54a9db5f _kstrtoul +EXPORT_SYMBOL vmlinux 0x54c256e0 vme_check_window +EXPORT_SYMBOL vmlinux 0x54cea882 ip_mc_check_igmp +EXPORT_SYMBOL vmlinux 0x54dbd68e __hw_addr_sync_dev +EXPORT_SYMBOL vmlinux 0x54e6fcdd net_enable_timestamp +EXPORT_SYMBOL vmlinux 0x55069efb devm_devfreq_remove_device +EXPORT_SYMBOL vmlinux 0x551bd071 __rb_erase_color +EXPORT_SYMBOL vmlinux 0x55237c40 flow_cache_fini +EXPORT_SYMBOL vmlinux 0x55321cef d_set_d_op +EXPORT_SYMBOL vmlinux 0x5541ea93 on_each_cpu +EXPORT_SYMBOL vmlinux 0x5567c227 kernel_cpustat +EXPORT_SYMBOL vmlinux 0x5568c553 complete +EXPORT_SYMBOL vmlinux 0x5577ef9e udp_table +EXPORT_SYMBOL vmlinux 0x55863415 free_buffer_head +EXPORT_SYMBOL vmlinux 0x55ba64a7 set_nlink +EXPORT_SYMBOL vmlinux 0x55d481c9 hdmi_infoframe_unpack +EXPORT_SYMBOL vmlinux 0x55d76c7b serial8250_do_pm +EXPORT_SYMBOL vmlinux 0x55dd2ca9 sget +EXPORT_SYMBOL vmlinux 0x55df1e02 kfree_skb_partial +EXPORT_SYMBOL vmlinux 0x5635a60a vmalloc_user +EXPORT_SYMBOL vmlinux 0x56390a91 iget5_locked +EXPORT_SYMBOL vmlinux 0x563a24e7 simple_transaction_get +EXPORT_SYMBOL vmlinux 0x5641d8ec blk_mq_start_hw_queue +EXPORT_SYMBOL vmlinux 0x56485d15 blk_rq_init +EXPORT_SYMBOL vmlinux 0x56491b98 pci_disable_msix +EXPORT_SYMBOL vmlinux 0x5650cdf8 delete_from_page_cache +EXPORT_SYMBOL vmlinux 0x56546685 init_buffer +EXPORT_SYMBOL vmlinux 0x5667be2f md_cluster_mod +EXPORT_SYMBOL vmlinux 0x566aafb5 mmc_read_bkops_status +EXPORT_SYMBOL vmlinux 0x568f851d dev_set_group +EXPORT_SYMBOL vmlinux 0x569e356f __xfrm_decode_session +EXPORT_SYMBOL vmlinux 0x56a10763 csum_tcpudp_magic +EXPORT_SYMBOL vmlinux 0x56a7f1a3 __skb_flow_get_ports +EXPORT_SYMBOL vmlinux 0x56ab18e2 netdev_update_features +EXPORT_SYMBOL vmlinux 0x56ba4590 agp_generic_destroy_pages +EXPORT_SYMBOL vmlinux 0x56c8799d scsi_kunmap_atomic_sg +EXPORT_SYMBOL vmlinux 0x56d0a834 search_binary_handler +EXPORT_SYMBOL vmlinux 0x56db7699 kmem_cache_destroy +EXPORT_SYMBOL vmlinux 0x56f6c7de lockref_get_not_zero +EXPORT_SYMBOL vmlinux 0x57033c22 pci_enable_msi_range +EXPORT_SYMBOL vmlinux 0x570d5753 skb_clone_sk +EXPORT_SYMBOL vmlinux 0x5729d69e dm_kobject_release +EXPORT_SYMBOL vmlinux 0x572b8c79 put_io_context +EXPORT_SYMBOL vmlinux 0x572e85d4 blk_lookup_devt +EXPORT_SYMBOL vmlinux 0x574c2e74 bitmap_release_region +EXPORT_SYMBOL vmlinux 0x57575f08 dmaengine_put +EXPORT_SYMBOL vmlinux 0x575af70c on_each_cpu_mask +EXPORT_SYMBOL vmlinux 0x575fb85e blk_queue_max_discard_sectors +EXPORT_SYMBOL vmlinux 0x5761ba66 filp_close +EXPORT_SYMBOL vmlinux 0x57674fd7 __sw_hweight16 +EXPORT_SYMBOL vmlinux 0x577b2151 skb_copy +EXPORT_SYMBOL vmlinux 0x577d35f3 hdmi_avi_infoframe_pack +EXPORT_SYMBOL vmlinux 0x577f92a9 pci_disable_link_state +EXPORT_SYMBOL vmlinux 0x5792f848 strlcpy +EXPORT_SYMBOL vmlinux 0x579e0fe6 i2c_smbus_write_byte_data +EXPORT_SYMBOL vmlinux 0x579e63d5 inet_register_protosw +EXPORT_SYMBOL vmlinux 0x579fbcd2 cpu_possible_mask +EXPORT_SYMBOL vmlinux 0x57d1570e blk_queue_find_tag +EXPORT_SYMBOL vmlinux 0x57d61b35 pcie_set_readrq +EXPORT_SYMBOL vmlinux 0x57e6205a agp_generic_alloc_user +EXPORT_SYMBOL vmlinux 0x580cff83 bio_advance +EXPORT_SYMBOL vmlinux 0x5810dfca inet_frags_exit_net +EXPORT_SYMBOL vmlinux 0x581682eb get_mm_exe_file +EXPORT_SYMBOL vmlinux 0x581f98da zlib_inflate +EXPORT_SYMBOL vmlinux 0x5828af55 i8042_install_filter +EXPORT_SYMBOL vmlinux 0x582cf6b5 scm_fp_dup +EXPORT_SYMBOL vmlinux 0x5838a24f mount_nodev +EXPORT_SYMBOL vmlinux 0x5838f6c9 rtc_valid_tm +EXPORT_SYMBOL vmlinux 0x5846234e of_node_put +EXPORT_SYMBOL vmlinux 0x584a6c89 skb_copy_bits +EXPORT_SYMBOL vmlinux 0x584f1b0c jbd2_journal_extend +EXPORT_SYMBOL vmlinux 0x58515bda locks_init_lock +EXPORT_SYMBOL vmlinux 0x5857b225 ioread16_rep +EXPORT_SYMBOL vmlinux 0x585ad4c6 mmc_gpio_request_cd +EXPORT_SYMBOL vmlinux 0x586e33c6 mem_map +EXPORT_SYMBOL vmlinux 0x587616f1 vfs_fstatat +EXPORT_SYMBOL vmlinux 0x58a4ebc5 generic_write_checks +EXPORT_SYMBOL vmlinux 0x58a6279f tcp_initialize_rcv_mss +EXPORT_SYMBOL vmlinux 0x58b22ce6 mmc_interrupt_hpi +EXPORT_SYMBOL vmlinux 0x58b73bc7 match_wildcard +EXPORT_SYMBOL vmlinux 0x58c30a58 pci_find_parent_resource +EXPORT_SYMBOL vmlinux 0x58c810c3 vlan_vids_add_by_dev +EXPORT_SYMBOL vmlinux 0x58d8be82 __mod_zone_page_state +EXPORT_SYMBOL vmlinux 0x58dcf384 tcp_md5_hash_skb_data +EXPORT_SYMBOL vmlinux 0x58fc6f1e dst_cow_metrics_generic +EXPORT_SYMBOL vmlinux 0x5916464a swiotlb_map_sg_attrs +EXPORT_SYMBOL vmlinux 0x59217cca current_fs_time +EXPORT_SYMBOL vmlinux 0x5943eb99 input_set_capability +EXPORT_SYMBOL vmlinux 0x594bf15b ioport_map +EXPORT_SYMBOL vmlinux 0x5955b815 security_mmap_file +EXPORT_SYMBOL vmlinux 0x595d0946 empty_zero_page +EXPORT_SYMBOL vmlinux 0x5965c905 uart_add_one_port +EXPORT_SYMBOL vmlinux 0x5967c929 __tracepoint_kmem_cache_alloc_node +EXPORT_SYMBOL vmlinux 0x59698a15 ether_setup +EXPORT_SYMBOL vmlinux 0x598382bf phy_start_aneg +EXPORT_SYMBOL vmlinux 0x598e4904 mod_timer_pending +EXPORT_SYMBOL vmlinux 0x598e6753 inet_reqsk_alloc +EXPORT_SYMBOL vmlinux 0x59968b06 generic_listxattr +EXPORT_SYMBOL vmlinux 0x599c0ece cpufreq_get_policy +EXPORT_SYMBOL vmlinux 0x59aa14cf fence_release +EXPORT_SYMBOL vmlinux 0x59b3378a completion_done +EXPORT_SYMBOL vmlinux 0x59c5219e from_kuid +EXPORT_SYMBOL vmlinux 0x59fb41fd bio_alloc_bioset +EXPORT_SYMBOL vmlinux 0x5a025f7b arch_local_irq_restore +EXPORT_SYMBOL vmlinux 0x5a0aaa12 proc_doulongvec_ms_jiffies_minmax +EXPORT_SYMBOL vmlinux 0x5a0b73d0 zlib_deflateInit2 +EXPORT_SYMBOL vmlinux 0x5a29d627 iunique +EXPORT_SYMBOL vmlinux 0x5a2cda3e trace_print_hex_seq +EXPORT_SYMBOL vmlinux 0x5a5fa7af agp_generic_alloc_by_type +EXPORT_SYMBOL vmlinux 0x5a84fcf9 put_page +EXPORT_SYMBOL vmlinux 0x5a8e29b4 udp_del_offload +EXPORT_SYMBOL vmlinux 0x5a921311 strncmp +EXPORT_SYMBOL vmlinux 0x5a950bf2 pci_alloc_dev +EXPORT_SYMBOL vmlinux 0x5a9f1d63 memmove +EXPORT_SYMBOL vmlinux 0x5ad03f94 crypto_sha1_finup +EXPORT_SYMBOL vmlinux 0x5ae3b137 md_integrity_add_rdev +EXPORT_SYMBOL vmlinux 0x5ae8dace trace_raw_output_prep +EXPORT_SYMBOL vmlinux 0x5aff4177 vme_lm_get +EXPORT_SYMBOL vmlinux 0x5b0f06da xfrm_state_lookup +EXPORT_SYMBOL vmlinux 0x5b19b4bf skb_trim +EXPORT_SYMBOL vmlinux 0x5b47be58 pci_msi_vec_count +EXPORT_SYMBOL vmlinux 0x5b51a42f cad_pid +EXPORT_SYMBOL vmlinux 0x5b56860c vm_munmap +EXPORT_SYMBOL vmlinux 0x5b6a07b6 notify_change +EXPORT_SYMBOL vmlinux 0x5b89a1d6 vme_dma_list_free +EXPORT_SYMBOL vmlinux 0x5b9828c5 dma_spin_lock +EXPORT_SYMBOL vmlinux 0x5bb0fa39 xfrm_init_state +EXPORT_SYMBOL vmlinux 0x5bc10524 printk_emit +EXPORT_SYMBOL vmlinux 0x5bd051b9 bdev_read_only +EXPORT_SYMBOL vmlinux 0x5c37f319 _raw_spin_unlock_irqrestore +EXPORT_SYMBOL vmlinux 0x5c4ee5c2 tcp_v4_send_check +EXPORT_SYMBOL vmlinux 0x5c828fc4 ip_setsockopt +EXPORT_SYMBOL vmlinux 0x5caa6c10 bioset_free +EXPORT_SYMBOL vmlinux 0x5cbbaac0 reqsk_queue_hash_req +EXPORT_SYMBOL vmlinux 0x5cc32bdc bitmap_copy_le +EXPORT_SYMBOL vmlinux 0x5cc3e01f override_creds +EXPORT_SYMBOL vmlinux 0x5ce1158b pcie_capability_clear_and_set_word +EXPORT_SYMBOL vmlinux 0x5cf30e10 __debugger_ipi +EXPORT_SYMBOL vmlinux 0x5cf53ce2 input_free_minor +EXPORT_SYMBOL vmlinux 0x5d08c0b5 request_key_with_auxdata +EXPORT_SYMBOL vmlinux 0x5d395d0c inet_csk_prepare_forced_close +EXPORT_SYMBOL vmlinux 0x5d550c4d scsi_sd_probe_domain +EXPORT_SYMBOL vmlinux 0x5d58efa0 convert_ifc_address +EXPORT_SYMBOL vmlinux 0x5d5964c8 security_task_getsecid +EXPORT_SYMBOL vmlinux 0x5d5cf419 bdev_stack_limits +EXPORT_SYMBOL vmlinux 0x5d6a7890 end_buffer_read_sync +EXPORT_SYMBOL vmlinux 0x5d84c280 setattr_copy +EXPORT_SYMBOL vmlinux 0x5d879cbf fib_default_rule_add +EXPORT_SYMBOL vmlinux 0x5d8f770e sock_no_ioctl +EXPORT_SYMBOL vmlinux 0x5d9e666b neigh_app_ns +EXPORT_SYMBOL vmlinux 0x5dab3452 vme_master_mmap +EXPORT_SYMBOL vmlinux 0x5db34e7a rawv6_mh_filter_register +EXPORT_SYMBOL vmlinux 0x5dbb482a forget_cached_acl +EXPORT_SYMBOL vmlinux 0x5dc01741 ipv6_sock_mc_join +EXPORT_SYMBOL vmlinux 0x5e030035 submit_bio +EXPORT_SYMBOL vmlinux 0x5e15425b tcp_sockets_allocated +EXPORT_SYMBOL vmlinux 0x5e3a8a9c __wake_up +EXPORT_SYMBOL vmlinux 0x5e49df0c register_framebuffer +EXPORT_SYMBOL vmlinux 0x5e52ec15 tty_driver_flush_buffer +EXPORT_SYMBOL vmlinux 0x5e755d2a pci_set_mwi +EXPORT_SYMBOL vmlinux 0x5e8cdefa generic_cont_expand_simple +EXPORT_SYMBOL vmlinux 0x5e8e1b18 splice_direct_to_actor +EXPORT_SYMBOL vmlinux 0x5e904266 tty_port_tty_set +EXPORT_SYMBOL vmlinux 0x5e95b1cd current_umask +EXPORT_SYMBOL vmlinux 0x5e975214 compat_sock_get_timestampns +EXPORT_SYMBOL vmlinux 0x5e9b02e9 pci_scan_bus +EXPORT_SYMBOL vmlinux 0x5ea00d7f inet_sendmsg +EXPORT_SYMBOL vmlinux 0x5ea26ce9 md_wakeup_thread +EXPORT_SYMBOL vmlinux 0x5eaf4a66 netdev_class_remove_file_ns +EXPORT_SYMBOL vmlinux 0x5eb18d0b xfrm_unregister_km +EXPORT_SYMBOL vmlinux 0x5eb24829 dm_shift_arg +EXPORT_SYMBOL vmlinux 0x5eb301df scsi_is_host_device +EXPORT_SYMBOL vmlinux 0x5ec6211e filemap_fdatawrite_range +EXPORT_SYMBOL vmlinux 0x5ed040b0 pm_set_vt_switch +EXPORT_SYMBOL vmlinux 0x5edc4a6a jbd2_journal_start_reserved +EXPORT_SYMBOL vmlinux 0x5eddb914 lockref_put_return +EXPORT_SYMBOL vmlinux 0x5eea4b8e of_find_all_nodes +EXPORT_SYMBOL vmlinux 0x5eefeb75 input_mt_destroy_slots +EXPORT_SYMBOL vmlinux 0x5efdac06 pci_request_selected_regions_exclusive +EXPORT_SYMBOL vmlinux 0x5f005368 kstrtou8 +EXPORT_SYMBOL vmlinux 0x5f098b2a in6addr_interfacelocal_allrouters +EXPORT_SYMBOL vmlinux 0x5f184045 mb_cache_entry_find_next +EXPORT_SYMBOL vmlinux 0x5f32af0c udp_lib_rehash +EXPORT_SYMBOL vmlinux 0x5f44fff0 truncate_pagecache_range +EXPORT_SYMBOL vmlinux 0x5f77b9ab phy_ethtool_get_eee +EXPORT_SYMBOL vmlinux 0x5f7eb463 pci_enable_device_mem +EXPORT_SYMBOL vmlinux 0x5f8a2728 isa_io_base +EXPORT_SYMBOL vmlinux 0x5f8e65a4 elv_rb_find +EXPORT_SYMBOL vmlinux 0x5fc9992e inet_frag_kill +EXPORT_SYMBOL vmlinux 0x5fceeef8 set_wb_congested +EXPORT_SYMBOL vmlinux 0x5fd6b774 simple_transaction_set +EXPORT_SYMBOL vmlinux 0x5fda0227 vfs_stat +EXPORT_SYMBOL vmlinux 0x5ff81fa4 vfs_write +EXPORT_SYMBOL vmlinux 0x60016623 udp_ioctl +EXPORT_SYMBOL vmlinux 0x600683d3 do_unblank_screen +EXPORT_SYMBOL vmlinux 0x60077fcd i2c_smbus_read_byte_data +EXPORT_SYMBOL vmlinux 0x600fc8d2 sock_init_data +EXPORT_SYMBOL vmlinux 0x60174faa __page_symlink +EXPORT_SYMBOL vmlinux 0x601f665f dm_io_client_create +EXPORT_SYMBOL vmlinux 0x60352082 register_inet6addr_notifier +EXPORT_SYMBOL vmlinux 0x605f30ce make_bad_inode +EXPORT_SYMBOL vmlinux 0x606c233b pci_scan_root_bus +EXPORT_SYMBOL vmlinux 0x606d0b09 secure_tcpv6_sequence_number +EXPORT_SYMBOL vmlinux 0x607f8284 of_get_pci_address +EXPORT_SYMBOL vmlinux 0x608cddc7 __blk_end_request +EXPORT_SYMBOL vmlinux 0x6091644e flow_keys_dissector +EXPORT_SYMBOL vmlinux 0x609679b4 __xfrm_state_delete +EXPORT_SYMBOL vmlinux 0x609f1c7e synchronize_net +EXPORT_SYMBOL vmlinux 0x60a44d30 __get_user_pages +EXPORT_SYMBOL vmlinux 0x60aa44cd jbd2_journal_force_commit_nested +EXPORT_SYMBOL vmlinux 0x60add881 dev_add_offload +EXPORT_SYMBOL vmlinux 0x60df1e3b posix_acl_equiv_mode +EXPORT_SYMBOL vmlinux 0x60e9d57b compat_ipv6_getsockopt +EXPORT_SYMBOL vmlinux 0x60edbbc3 vme_irq_generate +EXPORT_SYMBOL vmlinux 0x61158f0d pm860x_set_bits +EXPORT_SYMBOL vmlinux 0x6128b5fc __printk_ratelimit +EXPORT_SYMBOL vmlinux 0x6135c491 qdisc_class_hash_grow +EXPORT_SYMBOL vmlinux 0x613e955e sock_wake_async +EXPORT_SYMBOL vmlinux 0x613f0d17 devm_ioremap +EXPORT_SYMBOL vmlinux 0x6145c63f ata_port_printk +EXPORT_SYMBOL vmlinux 0x614bb773 radix_tree_insert +EXPORT_SYMBOL vmlinux 0x615ac679 cdrom_mode_sense +EXPORT_SYMBOL vmlinux 0x615f25ad dev_get_phys_port_id +EXPORT_SYMBOL vmlinux 0x61820e8d ihold +EXPORT_SYMBOL vmlinux 0x6187fe32 dev_mc_del +EXPORT_SYMBOL vmlinux 0x619b28bc down_read_trylock +EXPORT_SYMBOL vmlinux 0x619cb7dd simple_read_from_buffer +EXPORT_SYMBOL vmlinux 0x61a1551a ps2_init +EXPORT_SYMBOL vmlinux 0x61a5cfdb get_thermal_instance +EXPORT_SYMBOL vmlinux 0x61b14e15 dquot_alloc_inode +EXPORT_SYMBOL vmlinux 0x61b2e673 dev_driver_string +EXPORT_SYMBOL vmlinux 0x61b7b126 simple_strtoull +EXPORT_SYMBOL vmlinux 0x61dcf24a trace_print_flags_seq +EXPORT_SYMBOL vmlinux 0x61e20ff7 pci_enable_device +EXPORT_SYMBOL vmlinux 0x61e45138 of_mdio_find_bus +EXPORT_SYMBOL vmlinux 0x61ea45a6 scsi_device_lookup +EXPORT_SYMBOL vmlinux 0x61eef2c9 _insb +EXPORT_SYMBOL vmlinux 0x6204a30d neigh_update +EXPORT_SYMBOL vmlinux 0x6214aef2 cpufreq_unregister_notifier +EXPORT_SYMBOL vmlinux 0x6225637e md5_transform +EXPORT_SYMBOL vmlinux 0x6228c21f smp_call_function_single +EXPORT_SYMBOL vmlinux 0x62376ea3 tcf_hash_cleanup +EXPORT_SYMBOL vmlinux 0x623beb1d unregister_framebuffer +EXPORT_SYMBOL vmlinux 0x62538167 slhc_toss +EXPORT_SYMBOL vmlinux 0x625943f8 mark_page_accessed +EXPORT_SYMBOL vmlinux 0x62661e74 tcp_v4_do_rcv +EXPORT_SYMBOL vmlinux 0x62679eeb udp_poll +EXPORT_SYMBOL vmlinux 0x62737e1d sock_unregister +EXPORT_SYMBOL vmlinux 0x6274fdbf tcp_md5_hash_header +EXPORT_SYMBOL vmlinux 0x62827bec security_secctx_to_secid +EXPORT_SYMBOL vmlinux 0x62849ac7 dev_valid_name +EXPORT_SYMBOL vmlinux 0x628b9d93 mmc_get_card +EXPORT_SYMBOL vmlinux 0x628d8fdd key_invalidate +EXPORT_SYMBOL vmlinux 0x629400ae mipi_dsi_generic_read +EXPORT_SYMBOL vmlinux 0x629d05cf __inet6_lookup_established +EXPORT_SYMBOL vmlinux 0x62a1e3b5 pci_enable_msix +EXPORT_SYMBOL vmlinux 0x62b1d4bf compat_ipv6_setsockopt +EXPORT_SYMBOL vmlinux 0x62be231b vme_unregister_bridge +EXPORT_SYMBOL vmlinux 0x62c6b15e neigh_lookup +EXPORT_SYMBOL vmlinux 0x62d46577 dev_graft_qdisc +EXPORT_SYMBOL vmlinux 0x62e2c360 sdev_enable_disk_events +EXPORT_SYMBOL vmlinux 0x630b0388 mapping_tagged +EXPORT_SYMBOL vmlinux 0x63187451 pcie_aspm_support_enabled +EXPORT_SYMBOL vmlinux 0x63231951 gen_pool_create +EXPORT_SYMBOL vmlinux 0x63308051 vme_bus_type +EXPORT_SYMBOL vmlinux 0x63396aec __debugger_break_match +EXPORT_SYMBOL vmlinux 0x63485e89 filemap_write_and_wait +EXPORT_SYMBOL vmlinux 0x6349a58c scmd_printk +EXPORT_SYMBOL vmlinux 0x63516ca2 ip6_expire_frag_queue +EXPORT_SYMBOL vmlinux 0x635332c0 mmc_calc_max_discard +EXPORT_SYMBOL vmlinux 0x635b6c70 bio_reset +EXPORT_SYMBOL vmlinux 0x6379fe7d seq_open_private +EXPORT_SYMBOL vmlinux 0x638db71c pagevec_lookup_tag +EXPORT_SYMBOL vmlinux 0x63a7c28c bitmap_find_free_region +EXPORT_SYMBOL vmlinux 0x63c4d61f __bitmap_weight +EXPORT_SYMBOL vmlinux 0x63c4fd84 mb_cache_entry_alloc +EXPORT_SYMBOL vmlinux 0x63eb9355 panic_blink +EXPORT_SYMBOL vmlinux 0x63f6a0c5 ethtool_op_get_ts_info +EXPORT_SYMBOL vmlinux 0x63fc232f strlen_user +EXPORT_SYMBOL vmlinux 0x6403e338 tcp_memory_pressure +EXPORT_SYMBOL vmlinux 0x640e43dc fb_set_cmap +EXPORT_SYMBOL vmlinux 0x64127b67 bitmap_find_next_zero_area_off +EXPORT_SYMBOL vmlinux 0x6417607a __free_pages +EXPORT_SYMBOL vmlinux 0x64334614 __splice_from_pipe +EXPORT_SYMBOL vmlinux 0x64355e75 devm_gpio_request_one +EXPORT_SYMBOL vmlinux 0x643b0a8a genphy_suspend +EXPORT_SYMBOL vmlinux 0x643ff4be dquot_reclaim_space_nodirty +EXPORT_SYMBOL vmlinux 0x64520715 clocksource_change_rating +EXPORT_SYMBOL vmlinux 0x6463969e tcf_hash_create +EXPORT_SYMBOL vmlinux 0x64709c63 netdev_err +EXPORT_SYMBOL vmlinux 0x64888a34 mmc_free_host +EXPORT_SYMBOL vmlinux 0x64999478 congestion_wait +EXPORT_SYMBOL vmlinux 0x64a4b84d cpu_rmap_update +EXPORT_SYMBOL vmlinux 0x64aa6a2a km_policy_expired +EXPORT_SYMBOL vmlinux 0x64bbc288 string_unescape +EXPORT_SYMBOL vmlinux 0x64be05a8 vme_register_driver +EXPORT_SYMBOL vmlinux 0x64dbfe4c dquot_set_dqinfo +EXPORT_SYMBOL vmlinux 0x64f5390e pcim_iomap +EXPORT_SYMBOL vmlinux 0x64f8d4e8 blk_integrity_unregister +EXPORT_SYMBOL vmlinux 0x65048f58 msi_bitmap_free_hwirqs +EXPORT_SYMBOL vmlinux 0x6513a3fa fb_get_color_depth +EXPORT_SYMBOL vmlinux 0x6515d426 find_vma +EXPORT_SYMBOL vmlinux 0x651a4139 test_taint +EXPORT_SYMBOL vmlinux 0x652ce9aa nla_memcmp +EXPORT_SYMBOL vmlinux 0x653a9737 remove_proc_entry +EXPORT_SYMBOL vmlinux 0x65408378 zlib_inflate_blob +EXPORT_SYMBOL vmlinux 0x6566ec82 pm8606_osc_enable +EXPORT_SYMBOL vmlinux 0x656c1a0e string_escape_mem +EXPORT_SYMBOL vmlinux 0x656f035f skb_ensure_writable +EXPORT_SYMBOL vmlinux 0x659dc9c6 inet_listen +EXPORT_SYMBOL vmlinux 0x65aab8b3 ps2_end_command +EXPORT_SYMBOL vmlinux 0x65b7c7a8 sock_kfree_s +EXPORT_SYMBOL vmlinux 0x65b912f2 default_llseek +EXPORT_SYMBOL vmlinux 0x65bb58a2 _raw_read_trylock +EXPORT_SYMBOL vmlinux 0x65c30f40 km_new_mapping +EXPORT_SYMBOL vmlinux 0x65cb5fb4 get_cached_acl +EXPORT_SYMBOL vmlinux 0x65cd2a17 padata_alloc_possible +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 0x65f3ad9a fb_videomode_to_var +EXPORT_SYMBOL vmlinux 0x65fd6cbd get_unmapped_area +EXPORT_SYMBOL vmlinux 0x66167271 tcp_proc_unregister +EXPORT_SYMBOL vmlinux 0x663279b9 security_inode_setsecctx +EXPORT_SYMBOL vmlinux 0x665a58b1 __nla_put_nohdr +EXPORT_SYMBOL vmlinux 0x66754be3 gen_new_estimator +EXPORT_SYMBOL vmlinux 0x66925d07 iterate_fd +EXPORT_SYMBOL vmlinux 0x66936a7d get_user_pages +EXPORT_SYMBOL vmlinux 0x66a4daa3 get_user_pages_unlocked +EXPORT_SYMBOL vmlinux 0x66a7959f mb_cache_entry_get +EXPORT_SYMBOL vmlinux 0x66ad624f seq_open +EXPORT_SYMBOL vmlinux 0x66d39d80 generic_key_instantiate +EXPORT_SYMBOL vmlinux 0x66d5de16 find_lock_entry +EXPORT_SYMBOL vmlinux 0x66dbedd1 con_set_default_unimap +EXPORT_SYMBOL vmlinux 0x66e72586 inode_needs_sync +EXPORT_SYMBOL vmlinux 0x66e76bf1 blk_rq_map_user +EXPORT_SYMBOL vmlinux 0x670f1b58 __neigh_event_send +EXPORT_SYMBOL vmlinux 0x671b9d3a path_get +EXPORT_SYMBOL vmlinux 0x672777e6 d_make_root +EXPORT_SYMBOL vmlinux 0x672f1c00 tty_port_close +EXPORT_SYMBOL vmlinux 0x673f815e agp_bridges +EXPORT_SYMBOL vmlinux 0x6744f658 padata_register_cpumask_notifier +EXPORT_SYMBOL vmlinux 0x674e9ffe get_empty_filp +EXPORT_SYMBOL vmlinux 0x67531b26 __sk_mem_schedule +EXPORT_SYMBOL vmlinux 0x67733cf4 mb_cache_create +EXPORT_SYMBOL vmlinux 0x67a82171 __scsi_device_lookup_by_target +EXPORT_SYMBOL vmlinux 0x67ab16a6 swiotlb_free_coherent +EXPORT_SYMBOL vmlinux 0x67b78eb3 seq_hlist_next_rcu +EXPORT_SYMBOL vmlinux 0x67c3951b proto_register +EXPORT_SYMBOL vmlinux 0x67c42bd9 key_payload_reserve +EXPORT_SYMBOL vmlinux 0x67d9d205 ipv6_chk_custom_prefix +EXPORT_SYMBOL vmlinux 0x67db4143 balance_dirty_pages_ratelimited +EXPORT_SYMBOL vmlinux 0x67dc1e65 inet_del_protocol +EXPORT_SYMBOL vmlinux 0x6800660d alloc_netdev_mqs +EXPORT_SYMBOL vmlinux 0x6813444b blk_mq_abort_requeue_list +EXPORT_SYMBOL vmlinux 0x682bf10d mmc_gpiod_request_ro +EXPORT_SYMBOL vmlinux 0x68388048 scsi_unblock_requests +EXPORT_SYMBOL vmlinux 0x6851aeb9 block_write_full_page +EXPORT_SYMBOL vmlinux 0x68609857 complete_and_exit +EXPORT_SYMBOL vmlinux 0x687b6a16 kdbgetsymval +EXPORT_SYMBOL vmlinux 0x68885b9e input_unregister_handle +EXPORT_SYMBOL vmlinux 0x68b83ac6 posix_acl_alloc +EXPORT_SYMBOL vmlinux 0x68bc68db pci_write_vpd +EXPORT_SYMBOL vmlinux 0x68d9d57c scsi_scan_target +EXPORT_SYMBOL vmlinux 0x691ca254 __set_page_dirty_buffers +EXPORT_SYMBOL vmlinux 0x6920dc22 security_path_link +EXPORT_SYMBOL vmlinux 0x69319fc0 dmam_pool_create +EXPORT_SYMBOL vmlinux 0x6932c21d proc_symlink +EXPORT_SYMBOL vmlinux 0x695721dc elevator_change +EXPORT_SYMBOL vmlinux 0x695ae455 scsi_get_device_flags_keyed +EXPORT_SYMBOL vmlinux 0x6971447a rtc_month_days +EXPORT_SYMBOL vmlinux 0x697d91db security_file_permission +EXPORT_SYMBOL vmlinux 0x69927855 i2c_smbus_read_byte +EXPORT_SYMBOL vmlinux 0x6993130c mipi_dsi_dcs_get_power_mode +EXPORT_SYMBOL vmlinux 0x69a0ca7d iowrite16be +EXPORT_SYMBOL vmlinux 0x69a358a6 iomem_resource +EXPORT_SYMBOL vmlinux 0x69a83b85 compat_ip_setsockopt +EXPORT_SYMBOL vmlinux 0x69ad2f20 kstrtouint +EXPORT_SYMBOL vmlinux 0x69c65dba rtnl_configure_link +EXPORT_SYMBOL vmlinux 0x69d6938c csum_and_copy_to_iter +EXPORT_SYMBOL vmlinux 0x69d967c9 bh_uptodate_or_lock +EXPORT_SYMBOL vmlinux 0x69dc2223 __getblk_gfp +EXPORT_SYMBOL vmlinux 0x69e912a9 vm_insert_pfn +EXPORT_SYMBOL vmlinux 0x6a013c77 fb_set_suspend +EXPORT_SYMBOL vmlinux 0x6a037cf1 mempool_kfree +EXPORT_SYMBOL vmlinux 0x6a442daa unregister_key_type +EXPORT_SYMBOL vmlinux 0x6a5b6dab dquot_quota_sync +EXPORT_SYMBOL vmlinux 0x6a5dca50 check_disk_change +EXPORT_SYMBOL vmlinux 0x6a5ecb18 unregister_module_notifier +EXPORT_SYMBOL vmlinux 0x6a5fa363 sigprocmask +EXPORT_SYMBOL vmlinux 0x6a678d3f simple_statfs +EXPORT_SYMBOL vmlinux 0x6a740c54 gen_pool_for_each_chunk +EXPORT_SYMBOL vmlinux 0x6a76f3ac blk_iopoll_enable +EXPORT_SYMBOL vmlinux 0x6a7d311f input_mt_report_finger_count +EXPORT_SYMBOL vmlinux 0x6a7e2813 scsi_is_target_device +EXPORT_SYMBOL vmlinux 0x6a913b0e update_devfreq +EXPORT_SYMBOL vmlinux 0x6a96aeb1 __insert_inode_hash +EXPORT_SYMBOL vmlinux 0x6acafd5b cookie_timestamp_decode +EXPORT_SYMBOL vmlinux 0x6acb973d iowrite32be +EXPORT_SYMBOL vmlinux 0x6ad981e5 find_get_pages_tag +EXPORT_SYMBOL vmlinux 0x6adb2024 ppp_channel_index +EXPORT_SYMBOL vmlinux 0x6aeefac4 zlib_deflateReset +EXPORT_SYMBOL vmlinux 0x6aefc0e9 param_set_uint +EXPORT_SYMBOL vmlinux 0x6af135d5 tty_port_put +EXPORT_SYMBOL vmlinux 0x6af202e7 netdev_lower_get_next +EXPORT_SYMBOL vmlinux 0x6b037d99 dev_get_by_name_rcu +EXPORT_SYMBOL vmlinux 0x6b06fdce delayed_work_timer_fn +EXPORT_SYMBOL vmlinux 0x6b0fea79 d_splice_alias +EXPORT_SYMBOL vmlinux 0x6b1046ba pci_pme_capable +EXPORT_SYMBOL vmlinux 0x6b162e73 seq_vprintf +EXPORT_SYMBOL vmlinux 0x6b1b67d3 __bdevname +EXPORT_SYMBOL vmlinux 0x6b2dc060 dump_stack +EXPORT_SYMBOL vmlinux 0x6b5dfe73 __debugger_bpt +EXPORT_SYMBOL vmlinux 0x6b640864 nla_strlcpy +EXPORT_SYMBOL vmlinux 0x6b66c889 fence_free +EXPORT_SYMBOL vmlinux 0x6b6736f8 devfreq_monitor_suspend +EXPORT_SYMBOL vmlinux 0x6b6a40b1 km_state_notify +EXPORT_SYMBOL vmlinux 0x6b8de230 __cleancache_init_shared_fs +EXPORT_SYMBOL vmlinux 0x6b8f40cd starget_for_each_device +EXPORT_SYMBOL vmlinux 0x6bc3fbc0 __unregister_chrdev +EXPORT_SYMBOL vmlinux 0x6bcbb1f3 iw_handler_get_spy +EXPORT_SYMBOL vmlinux 0x6bd42c48 blk_init_allocated_queue +EXPORT_SYMBOL vmlinux 0x6bd76d08 iov_iter_bvec +EXPORT_SYMBOL vmlinux 0x6bdcfd99 qdisc_class_hash_remove +EXPORT_SYMBOL vmlinux 0x6bdee860 netif_carrier_on +EXPORT_SYMBOL vmlinux 0x6bf5b6bc inet_offloads +EXPORT_SYMBOL vmlinux 0x6c09c2a4 del_timer +EXPORT_SYMBOL vmlinux 0x6c464f8c poll_schedule_timeout +EXPORT_SYMBOL vmlinux 0x6c49b6b6 bio_add_pc_page +EXPORT_SYMBOL vmlinux 0x6c51a836 sysctl_tcp_notsent_lowat +EXPORT_SYMBOL vmlinux 0x6c61ce70 num_registered_fb +EXPORT_SYMBOL vmlinux 0x6c702af7 sysctl_udp_rmem_min +EXPORT_SYMBOL vmlinux 0x6c742b86 kfree_skb_list +EXPORT_SYMBOL vmlinux 0x6c81d804 vfs_read +EXPORT_SYMBOL vmlinux 0x6c863340 qdisc_list_del +EXPORT_SYMBOL vmlinux 0x6c89e94e pci_request_selected_regions +EXPORT_SYMBOL vmlinux 0x6c9beadf napi_disable +EXPORT_SYMBOL vmlinux 0x6cad4a47 fb_get_buffer_offset +EXPORT_SYMBOL vmlinux 0x6cb37127 flex_array_clear +EXPORT_SYMBOL vmlinux 0x6cc4aae3 ps2_begin_command +EXPORT_SYMBOL vmlinux 0x6cd22317 tty_port_open +EXPORT_SYMBOL vmlinux 0x6cd8afa0 netpoll_send_skb_on_dev +EXPORT_SYMBOL vmlinux 0x6ce4f722 inet_frag_maybe_warn_overflow +EXPORT_SYMBOL vmlinux 0x6d025612 mmc_can_erase +EXPORT_SYMBOL vmlinux 0x6d0f1f89 dm_table_get_mode +EXPORT_SYMBOL vmlinux 0x6d14cb1d pcie_get_minimum_link +EXPORT_SYMBOL vmlinux 0x6d294e43 clock_t_to_jiffies +EXPORT_SYMBOL vmlinux 0x6d740223 flex_array_put +EXPORT_SYMBOL vmlinux 0x6d75ef2d scsi_eh_restore_cmnd +EXPORT_SYMBOL vmlinux 0x6d8e88a3 iov_iter_copy_from_user_atomic +EXPORT_SYMBOL vmlinux 0x6d8ee6c8 scsi_cmd_blk_ioctl +EXPORT_SYMBOL vmlinux 0x6d9125ce of_find_device_by_node +EXPORT_SYMBOL vmlinux 0x6da928f4 _insw_ns +EXPORT_SYMBOL vmlinux 0x6daa0a71 jbd2_journal_release_jbd_inode +EXPORT_SYMBOL vmlinux 0x6dc3bdef create_empty_buffers +EXPORT_SYMBOL vmlinux 0x6deb056c ps2_handle_response +EXPORT_SYMBOL vmlinux 0x6ded3049 fb_show_logo +EXPORT_SYMBOL vmlinux 0x6def2db2 half_md4_transform +EXPORT_SYMBOL vmlinux 0x6df1aaf1 kernel_sigaction +EXPORT_SYMBOL vmlinux 0x6e0adc9d phy_get_eee_err +EXPORT_SYMBOL vmlinux 0x6e1b7319 proc_set_size +EXPORT_SYMBOL vmlinux 0x6e38febc devfreq_add_governor +EXPORT_SYMBOL vmlinux 0x6e3f5cc8 ppp_input_error +EXPORT_SYMBOL vmlinux 0x6e65d08e sock_wfree +EXPORT_SYMBOL vmlinux 0x6e720ff2 rtnl_unlock +EXPORT_SYMBOL vmlinux 0x6e7a7550 follow_down_one +EXPORT_SYMBOL vmlinux 0x6e7f0fd2 cmdline_parts_parse +EXPORT_SYMBOL vmlinux 0x6e9dd606 __symbol_put +EXPORT_SYMBOL vmlinux 0x6ee49ee3 devm_ioremap_resource +EXPORT_SYMBOL vmlinux 0x6f02f865 sock_alloc_send_pskb +EXPORT_SYMBOL vmlinux 0x6f070905 xfrm_unregister_mode +EXPORT_SYMBOL vmlinux 0x6f1672a5 vga_tryget +EXPORT_SYMBOL vmlinux 0x6f20960a full_name_hash +EXPORT_SYMBOL vmlinux 0x6f400a6c tcf_unregister_action +EXPORT_SYMBOL vmlinux 0x6f76186f misc_deregister +EXPORT_SYMBOL vmlinux 0x6f88effb hdmi_avi_infoframe_init +EXPORT_SYMBOL vmlinux 0x6f8c0cc0 unregister_binfmt +EXPORT_SYMBOL vmlinux 0x6f8c34f9 mod_zone_page_state +EXPORT_SYMBOL vmlinux 0x6f8f37c1 __cleancache_init_fs +EXPORT_SYMBOL vmlinux 0x6fa06ec8 max8925_bulk_read +EXPORT_SYMBOL vmlinux 0x6fb23a70 prepare_binprm +EXPORT_SYMBOL vmlinux 0x6fbf07cd __free_page_frag +EXPORT_SYMBOL vmlinux 0x6fcb87a1 touch_softlockup_watchdog +EXPORT_SYMBOL vmlinux 0x6fd87b83 simple_write_begin +EXPORT_SYMBOL vmlinux 0x6fd95ff5 neigh_seq_next +EXPORT_SYMBOL vmlinux 0x6ff27ef2 vme_master_request +EXPORT_SYMBOL vmlinux 0x6ff369d5 param_get_ullong +EXPORT_SYMBOL vmlinux 0x70280f0c skb_copy_expand +EXPORT_SYMBOL vmlinux 0x703b9cb0 page_symlink +EXPORT_SYMBOL vmlinux 0x70523a7a __cond_resched_softirq +EXPORT_SYMBOL vmlinux 0x7054a3e4 request_dma +EXPORT_SYMBOL vmlinux 0x706d051c del_timer_sync +EXPORT_SYMBOL vmlinux 0x707f43f6 __ctzdi2 +EXPORT_SYMBOL vmlinux 0x70c103fd proto_unregister +EXPORT_SYMBOL vmlinux 0x70d0616f unregister_qdisc +EXPORT_SYMBOL vmlinux 0x70f96f88 glob_match +EXPORT_SYMBOL vmlinux 0x712378db ps2_cmd_aborted +EXPORT_SYMBOL vmlinux 0x7129e5f8 hex_asc +EXPORT_SYMBOL vmlinux 0x713b5ca8 dcache_dir_lseek +EXPORT_SYMBOL vmlinux 0x714fd7f4 jbd2_journal_ack_err +EXPORT_SYMBOL vmlinux 0x71592da6 blk_execute_rq +EXPORT_SYMBOL vmlinux 0x715d08b2 set_create_files_as +EXPORT_SYMBOL vmlinux 0x7171121c overflowgid +EXPORT_SYMBOL vmlinux 0x71a50dbc register_blkdev +EXPORT_SYMBOL vmlinux 0x71a5d692 find_get_pages_contig +EXPORT_SYMBOL vmlinux 0x71a672ef dmam_pool_destroy +EXPORT_SYMBOL vmlinux 0x71ac3270 param_set_bool +EXPORT_SYMBOL vmlinux 0x71b2638f dev_addr_flush +EXPORT_SYMBOL vmlinux 0x71d003ef xfrm6_protocol_deregister +EXPORT_SYMBOL vmlinux 0x71f7fafe generic_getxattr +EXPORT_SYMBOL vmlinux 0x7229579c netpoll_parse_options +EXPORT_SYMBOL vmlinux 0x72377369 mmc_gpio_request_ro +EXPORT_SYMBOL vmlinux 0x723cda21 sb_min_blocksize +EXPORT_SYMBOL vmlinux 0x724d6bf5 blkdev_issue_write_same +EXPORT_SYMBOL vmlinux 0x7262a804 netdev_master_upper_dev_link +EXPORT_SYMBOL vmlinux 0x727d2a8e sock_common_recvmsg +EXPORT_SYMBOL vmlinux 0x7283cb84 ping_prot +EXPORT_SYMBOL vmlinux 0x72a4de61 i2c_verify_adapter +EXPORT_SYMBOL vmlinux 0x72b243d4 free_dma +EXPORT_SYMBOL vmlinux 0x72b62b68 kfree_put_link +EXPORT_SYMBOL vmlinux 0x72b6fa56 fence_wait_timeout +EXPORT_SYMBOL vmlinux 0x72c98139 __arch_hweight64 +EXPORT_SYMBOL vmlinux 0x72d41b80 nf_getsockopt +EXPORT_SYMBOL vmlinux 0x72d4c23c fsl_get_sys_freq +EXPORT_SYMBOL vmlinux 0x72e5cffe flush_old_exec +EXPORT_SYMBOL vmlinux 0x72ea7b2d scsi_device_type +EXPORT_SYMBOL vmlinux 0x72f7ab4f make_kuid +EXPORT_SYMBOL vmlinux 0x73046bcc xfrm_policy_hash_rebuild +EXPORT_SYMBOL vmlinux 0x7315a4e9 twl6030_mmc_card_detect_config +EXPORT_SYMBOL vmlinux 0x731a747a pci_io_base +EXPORT_SYMBOL vmlinux 0x731f4031 mmc_set_blocklen +EXPORT_SYMBOL vmlinux 0x7324d55e kthread_bind +EXPORT_SYMBOL vmlinux 0x733b2383 next_tlbcam_idx +EXPORT_SYMBOL vmlinux 0x733c3b54 kasprintf +EXPORT_SYMBOL vmlinux 0x735d8503 add_wait_queue +EXPORT_SYMBOL vmlinux 0x735e312e dcb_ieee_delapp +EXPORT_SYMBOL vmlinux 0x737bbfff remap_vmalloc_range +EXPORT_SYMBOL vmlinux 0x738adbac tty_port_tty_get +EXPORT_SYMBOL vmlinux 0x73a7445a vme_lm_request +EXPORT_SYMBOL vmlinux 0x73b5cbe7 cookie_ecn_ok +EXPORT_SYMBOL vmlinux 0x73dbf265 insert_inode_locked +EXPORT_SYMBOL vmlinux 0x73e0a087 skb_append_datato_frags +EXPORT_SYMBOL vmlinux 0x73fc5993 iov_iter_fault_in_multipages_readable +EXPORT_SYMBOL vmlinux 0x740898ca simple_pin_fs +EXPORT_SYMBOL vmlinux 0x7410aba2 strreplace +EXPORT_SYMBOL vmlinux 0x7417c3b7 pci_set_master +EXPORT_SYMBOL vmlinux 0x74289131 mmc_gpio_set_cd_isr +EXPORT_SYMBOL vmlinux 0x7462621d __skb_get_hash_flowi4 +EXPORT_SYMBOL vmlinux 0x747195f0 hdmi_vendor_infoframe_init +EXPORT_SYMBOL vmlinux 0x74799045 dev_uc_sync_multiple +EXPORT_SYMBOL vmlinux 0x747f57be d_set_fallthru +EXPORT_SYMBOL vmlinux 0x74816b0b sk_stream_kill_queues +EXPORT_SYMBOL vmlinux 0x74825852 skb_store_bits +EXPORT_SYMBOL vmlinux 0x7485e15e unregister_chrdev_region +EXPORT_SYMBOL vmlinux 0x74a7d5da blk_mq_start_stopped_hw_queues +EXPORT_SYMBOL vmlinux 0x74a90a28 param_set_ullong +EXPORT_SYMBOL vmlinux 0x74c134b9 __sw_hweight32 +EXPORT_SYMBOL vmlinux 0x74da80cf of_clk_get +EXPORT_SYMBOL vmlinux 0x74e0ce38 input_unregister_device +EXPORT_SYMBOL vmlinux 0x74e5ff1a udpv6_encap_enable +EXPORT_SYMBOL vmlinux 0x74e9f1b2 fixed_size_llseek +EXPORT_SYMBOL vmlinux 0x74ed71d2 jbd2_log_wait_commit +EXPORT_SYMBOL vmlinux 0x74f3c29a mount_pseudo +EXPORT_SYMBOL vmlinux 0x74fe0790 skb_push +EXPORT_SYMBOL vmlinux 0x7502de6d dev_crit +EXPORT_SYMBOL vmlinux 0x7532588a alloc_pages_exact +EXPORT_SYMBOL vmlinux 0x7538b132 agp_off +EXPORT_SYMBOL vmlinux 0x756a87f4 sock_dequeue_err_skb +EXPORT_SYMBOL vmlinux 0x758f7112 kobject_put +EXPORT_SYMBOL vmlinux 0x759205aa ppp_unregister_channel +EXPORT_SYMBOL vmlinux 0x75994700 add_wait_queue_exclusive +EXPORT_SYMBOL vmlinux 0x75a62934 xfrm_state_delete_tunnel +EXPORT_SYMBOL vmlinux 0x75bda77a seq_hlist_next +EXPORT_SYMBOL vmlinux 0x75bdea12 iommu_area_alloc +EXPORT_SYMBOL vmlinux 0x75be6702 register_sysctl_paths +EXPORT_SYMBOL vmlinux 0x75c8dd9b seq_putc +EXPORT_SYMBOL vmlinux 0x75fc7132 sock_kzfree_s +EXPORT_SYMBOL vmlinux 0x75fca25f of_get_property +EXPORT_SYMBOL vmlinux 0x76013b65 register_filesystem +EXPORT_SYMBOL vmlinux 0x76042071 kernel_getpeername +EXPORT_SYMBOL vmlinux 0x7608a371 of_mdiobus_register +EXPORT_SYMBOL vmlinux 0x760a0f4f yield +EXPORT_SYMBOL vmlinux 0x762888b6 xfrm_dst_ifdown +EXPORT_SYMBOL vmlinux 0x763d38de udp6_set_csum +EXPORT_SYMBOL vmlinux 0x7645af6f sg_pcopy_from_buffer +EXPORT_SYMBOL vmlinux 0x76463bfc netdev_lower_get_first_private_rcu +EXPORT_SYMBOL vmlinux 0x7647726c handle_sysrq +EXPORT_SYMBOL vmlinux 0x764bd77c request_resource +EXPORT_SYMBOL vmlinux 0x7652d2d5 jbd2_journal_unlock_updates +EXPORT_SYMBOL vmlinux 0x765ff474 crc_t10dif_generic +EXPORT_SYMBOL vmlinux 0x76786bdb __scsi_iterate_devices +EXPORT_SYMBOL vmlinux 0x767938b7 __nlmsg_put +EXPORT_SYMBOL vmlinux 0x767d328f blk_rq_set_block_pc +EXPORT_SYMBOL vmlinux 0x76864619 agp_put_bridge +EXPORT_SYMBOL vmlinux 0x7694fe1a jbd2_journal_init_dev +EXPORT_SYMBOL vmlinux 0x7696c7fc ip6_route_output +EXPORT_SYMBOL vmlinux 0x769d1124 pcim_enable_device +EXPORT_SYMBOL vmlinux 0x769e06d7 smp_call_function_many +EXPORT_SYMBOL vmlinux 0x76cbd770 mpage_readpages +EXPORT_SYMBOL vmlinux 0x76d3cd60 laptop_mode +EXPORT_SYMBOL vmlinux 0x76d451c4 add_taint +EXPORT_SYMBOL vmlinux 0x76f18445 ppp_dev_name +EXPORT_SYMBOL vmlinux 0x76f1e076 inode_change_ok +EXPORT_SYMBOL vmlinux 0x771cf835 dma_pool_alloc +EXPORT_SYMBOL vmlinux 0x772e7e18 generic_permission +EXPORT_SYMBOL vmlinux 0x7738ff60 __ip_select_ident +EXPORT_SYMBOL vmlinux 0x773fa409 __kfifo_dma_in_finish_r +EXPORT_SYMBOL vmlinux 0x7763a22b blk_stack_limits +EXPORT_SYMBOL vmlinux 0x77845047 tcf_hash_search +EXPORT_SYMBOL vmlinux 0x77987302 __generic_file_write_iter +EXPORT_SYMBOL vmlinux 0x779a18af kstrtoll +EXPORT_SYMBOL vmlinux 0x77bc13a0 strim +EXPORT_SYMBOL vmlinux 0x77c9406b udp_disconnect +EXPORT_SYMBOL vmlinux 0x781fa0ef blk_mq_start_hw_queues +EXPORT_SYMBOL vmlinux 0x783b3563 wake_up_atomic_t +EXPORT_SYMBOL vmlinux 0x783c2ccc blkdev_get +EXPORT_SYMBOL vmlinux 0x7846af3e __kfifo_len_r +EXPORT_SYMBOL vmlinux 0x785b7834 pcibios_fixup_bus +EXPORT_SYMBOL vmlinux 0x7880c781 dm_kcopyd_prepare_callback +EXPORT_SYMBOL vmlinux 0x7880d262 udp_proc_unregister +EXPORT_SYMBOL vmlinux 0x789affb1 frontswap_tmem_exclusive_gets +EXPORT_SYMBOL vmlinux 0x789f7336 vme_dma_list_exec +EXPORT_SYMBOL vmlinux 0x78d6a8d9 alloc_fddidev +EXPORT_SYMBOL vmlinux 0x78d711a7 tty_port_hangup +EXPORT_SYMBOL vmlinux 0x78dd71df page_put_link +EXPORT_SYMBOL vmlinux 0x78df6bd7 no_pci_devices +EXPORT_SYMBOL vmlinux 0x78e204ba invalidate_mapping_pages +EXPORT_SYMBOL vmlinux 0x78f3707b read_cache_page +EXPORT_SYMBOL vmlinux 0x791f5a26 netif_rx +EXPORT_SYMBOL vmlinux 0x79222481 genl_unregister_family +EXPORT_SYMBOL vmlinux 0x792e324e mutex_unlock +EXPORT_SYMBOL vmlinux 0x79556f3f tcp_shutdown +EXPORT_SYMBOL vmlinux 0x795e3ed8 __serio_register_driver +EXPORT_SYMBOL vmlinux 0x796fc5ce scsi_get_sense_info_fld +EXPORT_SYMBOL vmlinux 0x7984eefc key_update +EXPORT_SYMBOL vmlinux 0x7985d043 radix_tree_tag_set +EXPORT_SYMBOL vmlinux 0x798df57a clk_get +EXPORT_SYMBOL vmlinux 0x79a33f85 vme_get_size +EXPORT_SYMBOL vmlinux 0x79a8629b init_net +EXPORT_SYMBOL vmlinux 0x79aa04a2 get_random_bytes +EXPORT_SYMBOL vmlinux 0x79db14ac user_path_at_empty +EXPORT_SYMBOL vmlinux 0x79e07038 __dev_remove_pack +EXPORT_SYMBOL vmlinux 0x79e5aafb fsnotify_alloc_group +EXPORT_SYMBOL vmlinux 0x79f355ae skb_checksum_setup +EXPORT_SYMBOL vmlinux 0x7a122154 d_alloc_pseudo +EXPORT_SYMBOL vmlinux 0x7a27c184 ewma_init +EXPORT_SYMBOL vmlinux 0x7a4497db kzfree +EXPORT_SYMBOL vmlinux 0x7a51faab skb_tx_error +EXPORT_SYMBOL vmlinux 0x7a6cdedc do_settimeofday64 +EXPORT_SYMBOL vmlinux 0x7a72e5e4 writeback_inodes_sb +EXPORT_SYMBOL vmlinux 0x7a763ea6 agp_generic_insert_memory +EXPORT_SYMBOL vmlinux 0x7a8c12a7 tcp_v4_connect +EXPORT_SYMBOL vmlinux 0x7a925833 cpufreq_get_global_kobject +EXPORT_SYMBOL vmlinux 0x7a965978 sk_receive_skb +EXPORT_SYMBOL vmlinux 0x7aa1756e kvfree +EXPORT_SYMBOL vmlinux 0x7ab36d02 blkdev_issue_discard +EXPORT_SYMBOL vmlinux 0x7ab88a45 system_freezing_cnt +EXPORT_SYMBOL vmlinux 0x7ac9f1f1 tcp_syn_ack_timeout +EXPORT_SYMBOL vmlinux 0x7ad050b9 qid_lt +EXPORT_SYMBOL vmlinux 0x7add44b5 posix_acl_valid +EXPORT_SYMBOL vmlinux 0x7ae1f0d9 i2c_smbus_write_i2c_block_data +EXPORT_SYMBOL vmlinux 0x7af05777 inet_select_addr +EXPORT_SYMBOL vmlinux 0x7af3da49 sock_common_getsockopt +EXPORT_SYMBOL vmlinux 0x7b0bd925 phys_mem_access_prot +EXPORT_SYMBOL vmlinux 0x7b0bf22c ip_getsockopt +EXPORT_SYMBOL vmlinux 0x7b1110ec loop_register_transfer +EXPORT_SYMBOL vmlinux 0x7b16235f hdmi_vendor_infoframe_pack +EXPORT_SYMBOL vmlinux 0x7b171492 pneigh_lookup +EXPORT_SYMBOL vmlinux 0x7b255097 uart_write_wakeup +EXPORT_SYMBOL vmlinux 0x7b2aef6c __krealloc +EXPORT_SYMBOL vmlinux 0x7b3b577c scsi_block_when_processing_errors +EXPORT_SYMBOL vmlinux 0x7b7de268 udp_lib_get_port +EXPORT_SYMBOL vmlinux 0x7baff3ee tty_port_free_xmit_buf +EXPORT_SYMBOL vmlinux 0x7bb42dbd pci_set_dma_max_seg_size +EXPORT_SYMBOL vmlinux 0x7bb756cc neigh_proc_dointvec_jiffies +EXPORT_SYMBOL vmlinux 0x7bd6aa4d security_d_instantiate +EXPORT_SYMBOL vmlinux 0x7bfba8db vlan_dev_real_dev +EXPORT_SYMBOL vmlinux 0x7bfc29f9 filemap_fdatawait_range +EXPORT_SYMBOL vmlinux 0x7c003aef _raw_read_lock_irq +EXPORT_SYMBOL vmlinux 0x7c047426 write_cache_pages +EXPORT_SYMBOL vmlinux 0x7c1372e8 panic +EXPORT_SYMBOL vmlinux 0x7c173634 __bitmap_complement +EXPORT_SYMBOL vmlinux 0x7c27e69c compat_tcp_setsockopt +EXPORT_SYMBOL vmlinux 0x7c2d098f krealloc +EXPORT_SYMBOL vmlinux 0x7c42aa88 generic_readlink +EXPORT_SYMBOL vmlinux 0x7c46233a cpufreq_quick_get +EXPORT_SYMBOL vmlinux 0x7c61340c __release_region +EXPORT_SYMBOL vmlinux 0x7c6d7fed register_sysctl +EXPORT_SYMBOL vmlinux 0x7c8d7d44 __xfrm_route_forward +EXPORT_SYMBOL vmlinux 0x7c9291d1 csum_partial_copy_generic +EXPORT_SYMBOL vmlinux 0x7c98845d twl_i2c_read +EXPORT_SYMBOL vmlinux 0x7c9ac32e __percpu_counter_sum +EXPORT_SYMBOL vmlinux 0x7ce18c9f from_kqid +EXPORT_SYMBOL vmlinux 0x7cf35220 vme_master_free +EXPORT_SYMBOL vmlinux 0x7d0b160b filemap_page_mkwrite +EXPORT_SYMBOL vmlinux 0x7d0db45c jiffies_to_clock_t +EXPORT_SYMBOL vmlinux 0x7d11c268 jiffies +EXPORT_SYMBOL vmlinux 0x7d214f3d pci_choose_state +EXPORT_SYMBOL vmlinux 0x7d2b8616 skb_copy_and_csum_datagram_msg +EXPORT_SYMBOL vmlinux 0x7d652276 dmaengine_get_unmap_data +EXPORT_SYMBOL vmlinux 0x7d705738 blk_start_plug +EXPORT_SYMBOL vmlinux 0x7d79c14b of_get_child_by_name +EXPORT_SYMBOL vmlinux 0x7d7bc49e dentry_path_raw +EXPORT_SYMBOL vmlinux 0x7dab3952 seq_printf +EXPORT_SYMBOL vmlinux 0x7dc167a7 nf_log_set +EXPORT_SYMBOL vmlinux 0x7dc1f73d put_tty_driver +EXPORT_SYMBOL vmlinux 0x7ddea378 __sock_create +EXPORT_SYMBOL vmlinux 0x7deff673 dm_consume_args +EXPORT_SYMBOL vmlinux 0x7e0c28b9 __register_nls +EXPORT_SYMBOL vmlinux 0x7e0f4ae7 nobh_write_begin +EXPORT_SYMBOL vmlinux 0x7e386b55 d_move +EXPORT_SYMBOL vmlinux 0x7e46f745 xfrm_state_unregister_afinfo +EXPORT_SYMBOL vmlinux 0x7e56b316 tcp_parse_options +EXPORT_SYMBOL vmlinux 0x7e87227e slhc_compress +EXPORT_SYMBOL vmlinux 0x7ecb001b __per_cpu_offset +EXPORT_SYMBOL vmlinux 0x7ed3f28d try_module_get +EXPORT_SYMBOL vmlinux 0x7ee0f835 vlan_vid_del +EXPORT_SYMBOL vmlinux 0x7ee6d93a nsecs_to_jiffies64 +EXPORT_SYMBOL vmlinux 0x7eeeefcd netlink_ns_capable +EXPORT_SYMBOL vmlinux 0x7ef24951 devm_devfreq_add_device +EXPORT_SYMBOL vmlinux 0x7f009bde nvdimm_namespace_disk_name +EXPORT_SYMBOL vmlinux 0x7f02188f __msecs_to_jiffies +EXPORT_SYMBOL vmlinux 0x7f231c63 freeze_bdev +EXPORT_SYMBOL vmlinux 0x7f24de73 jiffies_to_usecs +EXPORT_SYMBOL vmlinux 0x7f332468 of_io_request_and_map +EXPORT_SYMBOL vmlinux 0x7f3978f8 tcp_timewait_state_process +EXPORT_SYMBOL vmlinux 0x7f4cd68e ndo_dflt_fdb_add +EXPORT_SYMBOL vmlinux 0x7f62a045 cpu_maps_update_done +EXPORT_SYMBOL vmlinux 0x7f66a255 compat_mc_getsockopt +EXPORT_SYMBOL vmlinux 0x7f7c28c8 blk_queue_update_dma_alignment +EXPORT_SYMBOL vmlinux 0x7fa26e78 __breadahead +EXPORT_SYMBOL vmlinux 0x7fbd10d2 radix_tree_next_chunk +EXPORT_SYMBOL vmlinux 0x7fc10e97 xfrm_register_km +EXPORT_SYMBOL vmlinux 0x7fe32873 rb_replace_node +EXPORT_SYMBOL vmlinux 0x7fe38f48 sg_copy_to_buffer +EXPORT_SYMBOL vmlinux 0x7ff851a0 of_translate_dma_address +EXPORT_SYMBOL vmlinux 0x8046eab7 blk_mq_stop_hw_queue +EXPORT_SYMBOL vmlinux 0x8068c15c kblockd_schedule_delayed_work +EXPORT_SYMBOL vmlinux 0x80791a8c radix_tree_gang_lookup_slot +EXPORT_SYMBOL vmlinux 0x80a1900a netif_schedule_queue +EXPORT_SYMBOL vmlinux 0x80a3ebe0 netlink_capable +EXPORT_SYMBOL vmlinux 0x80ca5026 _bin2bcd +EXPORT_SYMBOL vmlinux 0x80cb1e8c __skb_tx_hash +EXPORT_SYMBOL vmlinux 0x80d68d3e fb_register_client +EXPORT_SYMBOL vmlinux 0x80fd4c98 devm_gen_pool_create +EXPORT_SYMBOL vmlinux 0x80fe4e82 dquot_operations +EXPORT_SYMBOL vmlinux 0x811e45dd pci_map_rom +EXPORT_SYMBOL vmlinux 0x81351257 sk_stream_wait_connect +EXPORT_SYMBOL vmlinux 0x813d3fdd ndisc_mc_map +EXPORT_SYMBOL vmlinux 0x813ef876 mipi_dsi_dcs_set_display_off +EXPORT_SYMBOL vmlinux 0x81406862 param_get_bool +EXPORT_SYMBOL vmlinux 0x814e7730 nf_ct_destroy +EXPORT_SYMBOL vmlinux 0x81533963 sysfs_format_mac +EXPORT_SYMBOL vmlinux 0x815b5dd4 match_octal +EXPORT_SYMBOL vmlinux 0x815c56d0 cpu_present_mask +EXPORT_SYMBOL vmlinux 0x816014dc nla_put_nohdr +EXPORT_SYMBOL vmlinux 0x81723bb7 call_usermodehelper_setup +EXPORT_SYMBOL vmlinux 0x8172f612 netlink_unicast +EXPORT_SYMBOL vmlinux 0x81742b4f qdisc_reset +EXPORT_SYMBOL vmlinux 0x81a07f4e _atomic_dec_and_lock +EXPORT_SYMBOL vmlinux 0x81c1aaf4 generic_update_time +EXPORT_SYMBOL vmlinux 0x81cbdb10 sk_stream_write_space +EXPORT_SYMBOL vmlinux 0x81d1ebbe jbd2_journal_wipe +EXPORT_SYMBOL vmlinux 0x81d62328 cap_mmap_file +EXPORT_SYMBOL vmlinux 0x81db6ebb xz_dec_reset +EXPORT_SYMBOL vmlinux 0x81ebc9c1 dm_kcopyd_copy +EXPORT_SYMBOL vmlinux 0x81f0392b bdi_register_dev +EXPORT_SYMBOL vmlinux 0x82072614 tasklet_kill +EXPORT_SYMBOL vmlinux 0x820d2b0d dma_async_tx_descriptor_init +EXPORT_SYMBOL vmlinux 0x82178191 skb_copy_and_csum_dev +EXPORT_SYMBOL vmlinux 0x822c5a8c fence_add_callback +EXPORT_SYMBOL vmlinux 0x82458f7f radix_tree_delete_item +EXPORT_SYMBOL vmlinux 0x8246f8fa phy_mac_interrupt +EXPORT_SYMBOL vmlinux 0x824e0153 mach_qemu_e500 +EXPORT_SYMBOL vmlinux 0x824e3ec7 netdev_master_upper_dev_get +EXPORT_SYMBOL vmlinux 0x82701365 int_to_scsilun +EXPORT_SYMBOL vmlinux 0x828062b1 __frontswap_init +EXPORT_SYMBOL vmlinux 0x8286c708 vc_resize +EXPORT_SYMBOL vmlinux 0x82871b60 dmt_modes +EXPORT_SYMBOL vmlinux 0x828cd88e qdisc_watchdog_schedule_ns +EXPORT_SYMBOL vmlinux 0x82a03a92 key_validate +EXPORT_SYMBOL vmlinux 0x82a1bdba xfrm_state_lookup_byaddr +EXPORT_SYMBOL vmlinux 0x82acfb70 blk_iopoll_sched +EXPORT_SYMBOL vmlinux 0x82ca732c unlock_page +EXPORT_SYMBOL vmlinux 0x82cd572b kern_path +EXPORT_SYMBOL vmlinux 0x82cebde9 ilookup +EXPORT_SYMBOL vmlinux 0x82e5a238 vm_get_page_prot +EXPORT_SYMBOL vmlinux 0x8302de92 i2c_release_client +EXPORT_SYMBOL vmlinux 0x8304733a blk_set_stacking_limits +EXPORT_SYMBOL vmlinux 0x83051d78 inet_addr_type +EXPORT_SYMBOL vmlinux 0x830b0964 mmc_of_parse +EXPORT_SYMBOL vmlinux 0x8311458a __blk_end_request_cur +EXPORT_SYMBOL vmlinux 0x8332eec2 dquot_enable +EXPORT_SYMBOL vmlinux 0x833ab793 vmalloc_to_page +EXPORT_SYMBOL vmlinux 0x83569a47 pagecache_get_page +EXPORT_SYMBOL vmlinux 0x8357b57d d_find_any_alias +EXPORT_SYMBOL vmlinux 0x8377a001 tty_unregister_driver +EXPORT_SYMBOL vmlinux 0x838b8083 sk_free +EXPORT_SYMBOL vmlinux 0x83984b1c agp_generic_free_by_type +EXPORT_SYMBOL vmlinux 0x83b009ea xfrm_state_walk_init +EXPORT_SYMBOL vmlinux 0x83b6ee7b fb_firmware_edid +EXPORT_SYMBOL vmlinux 0x83c0b09d bdi_setup_and_register +EXPORT_SYMBOL vmlinux 0x83c52fba xfrm4_protocol_init +EXPORT_SYMBOL vmlinux 0x83d0ce38 qdisc_warn_nonwc +EXPORT_SYMBOL vmlinux 0x840de760 nf_unregister_hook +EXPORT_SYMBOL vmlinux 0x84146614 arp_tbl +EXPORT_SYMBOL vmlinux 0x843bb8ea unregister_nls +EXPORT_SYMBOL vmlinux 0x844e3767 radix_tree_lookup +EXPORT_SYMBOL vmlinux 0x8460657d blk_queue_prep_rq +EXPORT_SYMBOL vmlinux 0x84702fa1 blk_mq_stop_hw_queues +EXPORT_SYMBOL vmlinux 0x8489f82d inet_frags_init +EXPORT_SYMBOL vmlinux 0x848add56 eth_header_cache_update +EXPORT_SYMBOL vmlinux 0x848ffb3d inet_csk_delete_keepalive_timer +EXPORT_SYMBOL vmlinux 0x849401c0 tty_register_device +EXPORT_SYMBOL vmlinux 0x8494a6e3 key_revoke +EXPORT_SYMBOL vmlinux 0x849fe807 csum_and_copy_from_user +EXPORT_SYMBOL vmlinux 0x84bd69bf dq_data_lock +EXPORT_SYMBOL vmlinux 0x84d76c96 dquot_set_dqblk +EXPORT_SYMBOL vmlinux 0x84ffea8b idr_preload +EXPORT_SYMBOL vmlinux 0x851448e0 scsi_host_put +EXPORT_SYMBOL vmlinux 0x854afbde pci_disable_msi +EXPORT_SYMBOL vmlinux 0x8557ab9a param_set_charp +EXPORT_SYMBOL vmlinux 0x855cf152 eth_gro_complete +EXPORT_SYMBOL vmlinux 0x85670f1d rtnl_is_locked +EXPORT_SYMBOL vmlinux 0x8579a922 input_set_keycode +EXPORT_SYMBOL vmlinux 0x8580ae1c fifo_create_dflt +EXPORT_SYMBOL vmlinux 0x85859d10 memory_cgrp_subsys +EXPORT_SYMBOL vmlinux 0x858b954f simple_empty +EXPORT_SYMBOL vmlinux 0x85901866 tcf_exts_dump_stats +EXPORT_SYMBOL vmlinux 0x85945b12 posix_lock_file +EXPORT_SYMBOL vmlinux 0x85ae6052 trace_print_array_seq +EXPORT_SYMBOL vmlinux 0x85b3e1fa inet6_getname +EXPORT_SYMBOL vmlinux 0x85b5e625 rfkill_set_states +EXPORT_SYMBOL vmlinux 0x85c941a3 blk_peek_request +EXPORT_SYMBOL vmlinux 0x85df9b6c strsep +EXPORT_SYMBOL vmlinux 0x85efc7e0 zero_pfn +EXPORT_SYMBOL vmlinux 0x85f4b1d6 twl6040_reg_write +EXPORT_SYMBOL vmlinux 0x86094447 blk_end_request_cur +EXPORT_SYMBOL vmlinux 0x86153bb9 new_inode +EXPORT_SYMBOL vmlinux 0x8629d67a napi_complete_done +EXPORT_SYMBOL vmlinux 0x863dedf0 fsnotify_get_group +EXPORT_SYMBOL vmlinux 0x865029ac __hw_addr_sync +EXPORT_SYMBOL vmlinux 0x8664f62e cpufreq_update_policy +EXPORT_SYMBOL vmlinux 0x86896be0 rwsem_down_write_failed +EXPORT_SYMBOL vmlinux 0x868acba5 get_options +EXPORT_SYMBOL vmlinux 0x86d823fe padata_remove_cpu +EXPORT_SYMBOL vmlinux 0x86fb9b05 bitmap_parse_user +EXPORT_SYMBOL vmlinux 0x870df4af generic_pipe_buf_release +EXPORT_SYMBOL vmlinux 0x871a016b param_set_short +EXPORT_SYMBOL vmlinux 0x871c0a7e fiemap_check_flags +EXPORT_SYMBOL vmlinux 0x87349bfd of_get_parent +EXPORT_SYMBOL vmlinux 0x873a53ea __arch_hweight8 +EXPORT_SYMBOL vmlinux 0x877e8a39 abx500_startup_irq_enabled +EXPORT_SYMBOL vmlinux 0x8783d932 inet_ioctl +EXPORT_SYMBOL vmlinux 0x878ab3ce sysctl_tcp_adv_win_scale +EXPORT_SYMBOL vmlinux 0x879591de tcp_seq_open +EXPORT_SYMBOL vmlinux 0x879ebeaf bio_chain +EXPORT_SYMBOL vmlinux 0x87b0f8a5 dquot_initialize +EXPORT_SYMBOL vmlinux 0x87ba4954 agp_generic_alloc_pages +EXPORT_SYMBOL vmlinux 0x8809e7ef xfrm4_protocol_register +EXPORT_SYMBOL vmlinux 0x882db37f neigh_proc_dointvec +EXPORT_SYMBOL vmlinux 0x88512321 d_find_alias +EXPORT_SYMBOL vmlinux 0x886c436f pci_setup_cardbus +EXPORT_SYMBOL vmlinux 0x8874a3dc blk_get_queue +EXPORT_SYMBOL vmlinux 0x88794f1a inet6_add_offload +EXPORT_SYMBOL vmlinux 0x887fa47e __getnstimeofday64 +EXPORT_SYMBOL vmlinux 0x88a7077b devm_get_gpiod_from_child +EXPORT_SYMBOL vmlinux 0x88b508bd dev_deactivate +EXPORT_SYMBOL vmlinux 0x88caa197 bdput +EXPORT_SYMBOL vmlinux 0x88f685f6 sync_filesystem +EXPORT_SYMBOL vmlinux 0x89128864 blk_free_tags +EXPORT_SYMBOL vmlinux 0x89136123 xfrm_state_check_expire +EXPORT_SYMBOL vmlinux 0x891cb5ba path_is_under +EXPORT_SYMBOL vmlinux 0x891d07ce mount_ns +EXPORT_SYMBOL vmlinux 0x891fbb10 mempool_destroy +EXPORT_SYMBOL vmlinux 0x894432cb of_phy_find_device +EXPORT_SYMBOL vmlinux 0x895108f3 proc_dostring +EXPORT_SYMBOL vmlinux 0x8958137b mmc_of_parse_voltage +EXPORT_SYMBOL vmlinux 0x897334d7 vfs_iter_write +EXPORT_SYMBOL vmlinux 0x89797060 _raw_read_lock +EXPORT_SYMBOL vmlinux 0x89afe34e __kfifo_dma_in_prepare +EXPORT_SYMBOL vmlinux 0x89b3d603 max8998_bulk_read +EXPORT_SYMBOL vmlinux 0x89c50c3f flush_tlb_mm +EXPORT_SYMBOL vmlinux 0x89d5538d fb_pad_aligned_buffer +EXPORT_SYMBOL vmlinux 0x8a09a2c0 dmam_free_noncoherent +EXPORT_SYMBOL vmlinux 0x8a17d104 __frontswap_load +EXPORT_SYMBOL vmlinux 0x8a1ab4ee timeval_to_jiffies +EXPORT_SYMBOL vmlinux 0x8a1d5722 blk_rq_map_sg +EXPORT_SYMBOL vmlinux 0x8a24e417 install_exec_creds +EXPORT_SYMBOL vmlinux 0x8a2b4c47 inode_add_rsv_space +EXPORT_SYMBOL vmlinux 0x8a341177 dev_activate +EXPORT_SYMBOL vmlinux 0x8a46cb4a simple_rename +EXPORT_SYMBOL vmlinux 0x8a490c90 rfkill_set_sw_state +EXPORT_SYMBOL vmlinux 0x8a4fc490 i2c_register_driver +EXPORT_SYMBOL vmlinux 0x8a51d565 quota_send_warning +EXPORT_SYMBOL vmlinux 0x8a5908f9 mmc_can_sanitize +EXPORT_SYMBOL vmlinux 0x8a6581c7 pci_request_regions +EXPORT_SYMBOL vmlinux 0x8a6af65c kstrtoul_from_user +EXPORT_SYMBOL vmlinux 0x8a7d1c31 high_memory +EXPORT_SYMBOL vmlinux 0x8a7d5296 __ww_mutex_lock +EXPORT_SYMBOL vmlinux 0x8a99a016 mempool_free_slab +EXPORT_SYMBOL vmlinux 0x8aab80ea fsnotify_put_group +EXPORT_SYMBOL vmlinux 0x8abd819f tcp_read_sock +EXPORT_SYMBOL vmlinux 0x8ac4e944 of_platform_bus_probe +EXPORT_SYMBOL vmlinux 0x8ad93e22 jbd2_journal_set_triggers +EXPORT_SYMBOL vmlinux 0x8aef7bc7 param_get_invbool +EXPORT_SYMBOL vmlinux 0x8af0f63a skb_find_text +EXPORT_SYMBOL vmlinux 0x8af1af7b ata_scsi_cmd_error_handler +EXPORT_SYMBOL vmlinux 0x8af63868 phy_disconnect +EXPORT_SYMBOL vmlinux 0x8afc2198 wireless_send_event +EXPORT_SYMBOL vmlinux 0x8b04e070 __i2c_transfer +EXPORT_SYMBOL vmlinux 0x8b16e7c2 mount_single +EXPORT_SYMBOL vmlinux 0x8b35e873 sg_last +EXPORT_SYMBOL vmlinux 0x8b38db66 netdev_lower_get_next_private_rcu +EXPORT_SYMBOL vmlinux 0x8b44ad2a arp_send +EXPORT_SYMBOL vmlinux 0x8b618d08 overflowuid +EXPORT_SYMBOL vmlinux 0x8b8059bd in_group_p +EXPORT_SYMBOL vmlinux 0x8b82f291 ip_check_defrag +EXPORT_SYMBOL vmlinux 0x8b86d136 d_tmpfile +EXPORT_SYMBOL vmlinux 0x8b8bb46a submit_bio_wait +EXPORT_SYMBOL vmlinux 0x8b8e875a dev_addr_init +EXPORT_SYMBOL vmlinux 0x8b918f57 skb_pad +EXPORT_SYMBOL vmlinux 0x8b97787f d_alloc +EXPORT_SYMBOL vmlinux 0x8ba0d1e8 eth_mac_addr +EXPORT_SYMBOL vmlinux 0x8bae57c5 filemap_map_pages +EXPORT_SYMBOL vmlinux 0x8baf3116 percpu_counter_set +EXPORT_SYMBOL vmlinux 0x8bd1a743 nf_register_hook +EXPORT_SYMBOL vmlinux 0x8bd1f7c1 jbd2_complete_transaction +EXPORT_SYMBOL vmlinux 0x8bf2ae1f fsl_lbc_addr +EXPORT_SYMBOL vmlinux 0x8bf62300 devfreq_register_opp_notifier +EXPORT_SYMBOL vmlinux 0x8c183cbe iowrite16 +EXPORT_SYMBOL vmlinux 0x8c214177 unregister_console +EXPORT_SYMBOL vmlinux 0x8c419e04 registered_fb +EXPORT_SYMBOL vmlinux 0x8c637d43 irq_cpu_rmap_add +EXPORT_SYMBOL vmlinux 0x8c9ee425 dquot_destroy +EXPORT_SYMBOL vmlinux 0x8cc79cab iowrite16_rep +EXPORT_SYMBOL vmlinux 0x8cd47a3c shrink_dcache_parent +EXPORT_SYMBOL vmlinux 0x8cea081c i8042_check_port_owner +EXPORT_SYMBOL vmlinux 0x8d015dd4 __bswapdi2 +EXPORT_SYMBOL vmlinux 0x8d08f6a7 pci_unregister_driver +EXPORT_SYMBOL vmlinux 0x8d0c43bf posix_acl_from_xattr +EXPORT_SYMBOL vmlinux 0x8d203efd phy_write_mmd_indirect +EXPORT_SYMBOL vmlinux 0x8d33079a simple_nosetlease +EXPORT_SYMBOL vmlinux 0x8d361011 generic_writepages +EXPORT_SYMBOL vmlinux 0x8d48a53d block_invalidatepage +EXPORT_SYMBOL vmlinux 0x8d551bef sysctl_tcp_rmem +EXPORT_SYMBOL vmlinux 0x8d55bb8a qid_eq +EXPORT_SYMBOL vmlinux 0x8d5f22f7 end_page_writeback +EXPORT_SYMBOL vmlinux 0x8d72281c __put_cred +EXPORT_SYMBOL vmlinux 0x8d73278e hex_asc_upper +EXPORT_SYMBOL vmlinux 0x8d7bd6eb pcim_pin_device +EXPORT_SYMBOL vmlinux 0x8d8a6722 vlan_vids_del_by_dev +EXPORT_SYMBOL vmlinux 0x8d944cbb copy_in_user +EXPORT_SYMBOL vmlinux 0x8d95cc38 jbd2_journal_destroy +EXPORT_SYMBOL vmlinux 0x8da21b0a vfs_readf +EXPORT_SYMBOL vmlinux 0x8daa54bf skb_seq_read +EXPORT_SYMBOL vmlinux 0x8dc11d5a dentry_needs_remove_privs +EXPORT_SYMBOL vmlinux 0x8dd59b47 set_bh_page +EXPORT_SYMBOL vmlinux 0x8de0b5ac mempool_create +EXPORT_SYMBOL vmlinux 0x8df92f66 memchr_inv +EXPORT_SYMBOL vmlinux 0x8e1026e0 sk_stream_error +EXPORT_SYMBOL vmlinux 0x8e26b629 __nla_reserve_nohdr +EXPORT_SYMBOL vmlinux 0x8e273e55 ppp_register_compressor +EXPORT_SYMBOL vmlinux 0x8e51d4a3 nd_region_acquire_lane +EXPORT_SYMBOL vmlinux 0x8e7e45ce scsicam_bios_param +EXPORT_SYMBOL vmlinux 0x8e888ec3 cpumask_next_and +EXPORT_SYMBOL vmlinux 0x8e8d58da diu_ops +EXPORT_SYMBOL vmlinux 0x8eabf8c6 peernet2id_alloc +EXPORT_SYMBOL vmlinux 0x8eb77266 tty_port_alloc_xmit_buf +EXPORT_SYMBOL vmlinux 0x8ec04552 _raw_spin_trylock_bh +EXPORT_SYMBOL vmlinux 0x8edbe1c4 devm_gpiod_get_array_optional +EXPORT_SYMBOL vmlinux 0x8efee26e iov_iter_kvec +EXPORT_SYMBOL vmlinux 0x8f179b84 devfreq_suspend_device +EXPORT_SYMBOL vmlinux 0x8f639be4 swiotlb_dma_mapping_error +EXPORT_SYMBOL vmlinux 0x8f70c913 paca +EXPORT_SYMBOL vmlinux 0x8f72a0fe ___pskb_trim +EXPORT_SYMBOL vmlinux 0x8f7dde3c tcp_sendpage +EXPORT_SYMBOL vmlinux 0x8f85f835 prepare_to_wait_exclusive +EXPORT_SYMBOL vmlinux 0x8f8d2eca copy_to_iter +EXPORT_SYMBOL vmlinux 0x8fc15bf6 iommu_tbl_range_free +EXPORT_SYMBOL vmlinux 0x8fc1e99b dev_get_phys_port_name +EXPORT_SYMBOL vmlinux 0x8fc506b9 release_firmware +EXPORT_SYMBOL vmlinux 0x8ff8d58a dev_get_by_name +EXPORT_SYMBOL vmlinux 0x8ffca8ed ns_capable +EXPORT_SYMBOL vmlinux 0x900241fb mdiobus_free +EXPORT_SYMBOL vmlinux 0x9005b2e7 jbd2_journal_force_commit +EXPORT_SYMBOL vmlinux 0x901b8e6a pcie_get_mps +EXPORT_SYMBOL vmlinux 0x902e0f79 single_open +EXPORT_SYMBOL vmlinux 0x902ee92f unlock_buffer +EXPORT_SYMBOL vmlinux 0x90463712 simple_getattr +EXPORT_SYMBOL vmlinux 0x90548e2f may_umount_tree +EXPORT_SYMBOL vmlinux 0x909b873e sync_inodes_sb +EXPORT_SYMBOL vmlinux 0x910ddd67 kset_unregister +EXPORT_SYMBOL vmlinux 0x91238fbd set_disk_ro +EXPORT_SYMBOL vmlinux 0x913967a7 security_inode_permission +EXPORT_SYMBOL vmlinux 0x91463b1d kstrtos16 +EXPORT_SYMBOL vmlinux 0x915e1208 tb_ticks_per_usec +EXPORT_SYMBOL vmlinux 0x9166fada strncpy +EXPORT_SYMBOL vmlinux 0x9170b391 inet6_register_protosw +EXPORT_SYMBOL vmlinux 0x91715312 sprintf +EXPORT_SYMBOL vmlinux 0x91742f0c inet_proto_csum_replace16 +EXPORT_SYMBOL vmlinux 0x9175405a tcp_init_cgroup +EXPORT_SYMBOL vmlinux 0x9179ec1a napi_get_frags +EXPORT_SYMBOL vmlinux 0x9180aefa __neigh_create +EXPORT_SYMBOL vmlinux 0x918de109 ipv6_skip_exthdr +EXPORT_SYMBOL vmlinux 0x919934ed powerpc_debugfs_root +EXPORT_SYMBOL vmlinux 0x919d1163 tty_termios_baud_rate +EXPORT_SYMBOL vmlinux 0x91ac822f vscnprintf +EXPORT_SYMBOL vmlinux 0x91ba6034 netpoll_poll_disable +EXPORT_SYMBOL vmlinux 0x91c6133b setup_new_exec +EXPORT_SYMBOL vmlinux 0x91d6f63a simple_follow_link +EXPORT_SYMBOL vmlinux 0x91e4e402 blk_put_request +EXPORT_SYMBOL vmlinux 0x91ed889f __blk_end_request_all +EXPORT_SYMBOL vmlinux 0x923b1276 dmaengine_get +EXPORT_SYMBOL vmlinux 0x9243a364 is_bad_inode +EXPORT_SYMBOL vmlinux 0x9266750f mdiobus_alloc_size +EXPORT_SYMBOL vmlinux 0x92728542 iterate_supers_type +EXPORT_SYMBOL vmlinux 0x9282765d keyring_alloc +EXPORT_SYMBOL vmlinux 0x92833f5f rtnetlink_put_metrics +EXPORT_SYMBOL vmlinux 0x9291cd3b memdup_user +EXPORT_SYMBOL vmlinux 0x92a9c60c time_to_tm +EXPORT_SYMBOL vmlinux 0x92b02461 netdev_emerg +EXPORT_SYMBOL vmlinux 0x92bb4aed bitmap_cond_end_sync +EXPORT_SYMBOL vmlinux 0x92bf91f4 dev_addr_add +EXPORT_SYMBOL vmlinux 0x92e4d2fe flow_hash_from_keys +EXPORT_SYMBOL vmlinux 0x92fa5abb vme_lm_detach +EXPORT_SYMBOL vmlinux 0x93006c97 inc_nlink +EXPORT_SYMBOL vmlinux 0x9301576f file_path +EXPORT_SYMBOL vmlinux 0x93022ba6 __scsi_format_command +EXPORT_SYMBOL vmlinux 0x9305f8e6 cpufreq_get +EXPORT_SYMBOL vmlinux 0x930f3238 tcp_gro_complete +EXPORT_SYMBOL vmlinux 0x931d04bf tty_chars_in_buffer +EXPORT_SYMBOL vmlinux 0x93448c57 screen_info +EXPORT_SYMBOL vmlinux 0x9361db35 param_set_int +EXPORT_SYMBOL vmlinux 0x93667afb __skb_flow_dissect +EXPORT_SYMBOL vmlinux 0x937733e3 qid_valid +EXPORT_SYMBOL vmlinux 0x938da1dd tcf_em_tree_dump +EXPORT_SYMBOL vmlinux 0x939213d3 md_update_sb +EXPORT_SYMBOL vmlinux 0x93a6ab9e ipv6_push_nfrag_opts +EXPORT_SYMBOL vmlinux 0x93b3fc74 register_dcbevent_notifier +EXPORT_SYMBOL vmlinux 0x93c76bd7 from_kgid +EXPORT_SYMBOL vmlinux 0x93d0c81e dev_mc_add_global +EXPORT_SYMBOL vmlinux 0x93d7a3a5 netdev_refcnt_read +EXPORT_SYMBOL vmlinux 0x93f23134 mipi_dsi_dcs_exit_sleep_mode +EXPORT_SYMBOL vmlinux 0x93fca811 __get_free_pages +EXPORT_SYMBOL vmlinux 0x9402a6a5 scsilun_to_int +EXPORT_SYMBOL vmlinux 0x940391be console_start +EXPORT_SYMBOL vmlinux 0x942f3202 dst_discard_sk +EXPORT_SYMBOL vmlinux 0x9433765a mipi_dsi_dcs_write +EXPORT_SYMBOL vmlinux 0x9438d627 vfs_unlink +EXPORT_SYMBOL vmlinux 0x943dc80f csum_and_copy_to_user +EXPORT_SYMBOL vmlinux 0x9462c540 agp_generic_alloc_page +EXPORT_SYMBOL vmlinux 0x947e6f0e mmc_flush_cache +EXPORT_SYMBOL vmlinux 0x94961283 vunmap +EXPORT_SYMBOL vmlinux 0x94b541b5 cpu_active_mask +EXPORT_SYMBOL vmlinux 0x94c26680 _dev_info +EXPORT_SYMBOL vmlinux 0x94fa15d9 agp_bridge +EXPORT_SYMBOL vmlinux 0x9514151a _mcount +EXPORT_SYMBOL vmlinux 0x9524b0ae _outsb +EXPORT_SYMBOL vmlinux 0x95308c44 xfrm_register_mode +EXPORT_SYMBOL vmlinux 0x953247e1 kernel_param_unlock +EXPORT_SYMBOL vmlinux 0x953f285c ndo_dflt_fdb_del +EXPORT_SYMBOL vmlinux 0x9545af6d tasklet_init +EXPORT_SYMBOL vmlinux 0x95577fe0 have_submounts +EXPORT_SYMBOL vmlinux 0x956c5a02 __devcgroup_inode_permission +EXPORT_SYMBOL vmlinux 0x957329bd compat_sock_common_setsockopt +EXPORT_SYMBOL vmlinux 0x95bd6383 netdev_has_upper_dev +EXPORT_SYMBOL vmlinux 0x95c6f2c5 submit_bh +EXPORT_SYMBOL vmlinux 0x95cec729 of_find_node_by_type +EXPORT_SYMBOL vmlinux 0x960cbf14 __cleancache_put_page +EXPORT_SYMBOL vmlinux 0x963cb441 blk_requeue_request +EXPORT_SYMBOL vmlinux 0x9665c2d6 t10_pi_type3_crc +EXPORT_SYMBOL vmlinux 0x96875bdc blk_recount_segments +EXPORT_SYMBOL vmlinux 0x968cbee2 __pskb_copy_fclone +EXPORT_SYMBOL vmlinux 0x969161ec devm_request_any_context_irq +EXPORT_SYMBOL vmlinux 0x969987fc lockref_get_not_dead +EXPORT_SYMBOL vmlinux 0x96b29254 strncasecmp +EXPORT_SYMBOL vmlinux 0x96c8f4d5 mb_cache_entry_insert +EXPORT_SYMBOL vmlinux 0x96cd2b04 scsi_sense_key_string +EXPORT_SYMBOL vmlinux 0x96e90598 serial8250_do_set_termios +EXPORT_SYMBOL vmlinux 0x9715d4ea security_path_rmdir +EXPORT_SYMBOL vmlinux 0x972d679e netdev_class_create_file_ns +EXPORT_SYMBOL vmlinux 0x9740a24d gnet_stats_copy_app +EXPORT_SYMBOL vmlinux 0x9748927f _outsw_ns +EXPORT_SYMBOL vmlinux 0x974c0130 filemap_fault +EXPORT_SYMBOL vmlinux 0x97540a2b inetpeer_invalidate_tree +EXPORT_SYMBOL vmlinux 0x9754ec10 radix_tree_preload +EXPORT_SYMBOL vmlinux 0x97868aef __kfifo_alloc +EXPORT_SYMBOL vmlinux 0x97999817 rfkill_set_hw_state +EXPORT_SYMBOL vmlinux 0x97a2801c truncate_inode_pages_final +EXPORT_SYMBOL vmlinux 0x97a5052b key_reject_and_link +EXPORT_SYMBOL vmlinux 0x97a57333 crc_t10dif_update +EXPORT_SYMBOL vmlinux 0x97c52b87 disk_stack_limits +EXPORT_SYMBOL vmlinux 0x97c78601 sock_no_accept +EXPORT_SYMBOL vmlinux 0x97c82f4a ppp_unit_number +EXPORT_SYMBOL vmlinux 0x97f68889 blk_pre_runtime_resume +EXPORT_SYMBOL vmlinux 0x97f7554e add_to_page_cache_locked +EXPORT_SYMBOL vmlinux 0x97fed5e7 sk_alloc +EXPORT_SYMBOL vmlinux 0x980a7cea bio_endio +EXPORT_SYMBOL vmlinux 0x9829fc11 __kfifo_out_peek_r +EXPORT_SYMBOL vmlinux 0x982d50b8 skb_unlink +EXPORT_SYMBOL vmlinux 0x9837f65f __skb_warn_lro_forwarding +EXPORT_SYMBOL vmlinux 0x9844a647 xfrm6_protocol_register +EXPORT_SYMBOL vmlinux 0x985de748 end_buffer_write_sync +EXPORT_SYMBOL vmlinux 0x986155ff gro_find_complete_by_type +EXPORT_SYMBOL vmlinux 0x986e6135 fb_pad_unaligned_buffer +EXPORT_SYMBOL vmlinux 0x987fc124 neigh_proc_dointvec_ms_jiffies +EXPORT_SYMBOL vmlinux 0x988aa655 udp_push_pending_frames +EXPORT_SYMBOL vmlinux 0x989a6149 scsi_print_sense +EXPORT_SYMBOL vmlinux 0x989bd97b ip_defrag +EXPORT_SYMBOL vmlinux 0x98be1b03 lro_receive_skb +EXPORT_SYMBOL vmlinux 0x98c68c41 __gnet_stats_copy_basic +EXPORT_SYMBOL vmlinux 0x98cf60b3 strlen +EXPORT_SYMBOL vmlinux 0x98da5c06 generic_show_options +EXPORT_SYMBOL vmlinux 0x98eac228 misc_register +EXPORT_SYMBOL vmlinux 0x98fec7a0 inet_add_protocol +EXPORT_SYMBOL vmlinux 0x99042e70 __generic_block_fiemap +EXPORT_SYMBOL vmlinux 0x990c847d ipv6_select_ident +EXPORT_SYMBOL vmlinux 0x99195078 vsnprintf +EXPORT_SYMBOL vmlinux 0x991a5d34 kernel_sendpage +EXPORT_SYMBOL vmlinux 0x9939eba0 backlight_unregister_notifier +EXPORT_SYMBOL vmlinux 0x99500172 twl6040_reg_read +EXPORT_SYMBOL vmlinux 0x99517682 udp_encap_enable +EXPORT_SYMBOL vmlinux 0x995626b3 dquot_mark_dquot_dirty +EXPORT_SYMBOL vmlinux 0x99591a7a ipv6_ext_hdr +EXPORT_SYMBOL vmlinux 0x995a24b1 phy_connect_direct +EXPORT_SYMBOL vmlinux 0x995e19e5 devm_free_irq +EXPORT_SYMBOL vmlinux 0x99748b1d input_unregister_handler +EXPORT_SYMBOL vmlinux 0x9983e7ab pm860x_bulk_read +EXPORT_SYMBOL vmlinux 0x9994c0ca ps2_is_keyboard_id +EXPORT_SYMBOL vmlinux 0x999e8297 vfree +EXPORT_SYMBOL vmlinux 0x999ea825 of_clk_get_by_name +EXPORT_SYMBOL vmlinux 0x99af10e2 con_copy_unimap +EXPORT_SYMBOL vmlinux 0x99afe916 _raw_write_unlock_bh +EXPORT_SYMBOL vmlinux 0x99c457d8 vm_insert_page +EXPORT_SYMBOL vmlinux 0x99cdc86b sysctl_tcp_reordering +EXPORT_SYMBOL vmlinux 0x99d3a43c dm_table_get_size +EXPORT_SYMBOL vmlinux 0x99fb71d3 scsi_free_host_dev +EXPORT_SYMBOL vmlinux 0x9a1dfd65 strpbrk +EXPORT_SYMBOL vmlinux 0x9a1fc4b4 jiffies_to_timeval +EXPORT_SYMBOL vmlinux 0x9a38a563 tcf_em_tree_destroy +EXPORT_SYMBOL vmlinux 0x9a442790 scsi_register +EXPORT_SYMBOL vmlinux 0x9a5ffc64 __tracepoint_kmem_cache_alloc +EXPORT_SYMBOL vmlinux 0x9a891beb tcp_get_cookie_sock +EXPORT_SYMBOL vmlinux 0x9a899dca ip4_datagram_connect +EXPORT_SYMBOL vmlinux 0x9a9697f2 scsi_dma_unmap +EXPORT_SYMBOL vmlinux 0x9ab41edb serio_reconnect +EXPORT_SYMBOL vmlinux 0x9ab953f1 gro_find_receive_by_type +EXPORT_SYMBOL vmlinux 0x9abe5155 elv_dispatch_sort +EXPORT_SYMBOL vmlinux 0x9ac28966 nd_iostat_end +EXPORT_SYMBOL vmlinux 0x9ac91678 in_dev_finish_destroy +EXPORT_SYMBOL vmlinux 0x9ae2864f pcie_port_service_unregister +EXPORT_SYMBOL vmlinux 0x9aeb07e8 vme_lm_attach +EXPORT_SYMBOL vmlinux 0x9afbfab3 bio_clone_bioset +EXPORT_SYMBOL vmlinux 0x9b0eea1e filp_open +EXPORT_SYMBOL vmlinux 0x9b21f8e0 swiotlb_unmap_sg_attrs +EXPORT_SYMBOL vmlinux 0x9b33e0d7 unregister_dcbevent_notifier +EXPORT_SYMBOL vmlinux 0x9b35ce1c kmem_cache_free +EXPORT_SYMBOL vmlinux 0x9b388444 get_zeroed_page +EXPORT_SYMBOL vmlinux 0x9b38e437 up_read +EXPORT_SYMBOL vmlinux 0x9b47842f crypto_sha256_update +EXPORT_SYMBOL vmlinux 0x9b6a1898 __scsi_device_lookup +EXPORT_SYMBOL vmlinux 0x9b6f86ee drop_super +EXPORT_SYMBOL vmlinux 0x9b8520eb pci_msix_vec_count +EXPORT_SYMBOL vmlinux 0x9b9aa25e __frontswap_test +EXPORT_SYMBOL vmlinux 0x9b9e05f9 alloc_cpu_rmap +EXPORT_SYMBOL vmlinux 0x9ba7089d argv_split +EXPORT_SYMBOL vmlinux 0x9ba84b19 padata_alloc +EXPORT_SYMBOL vmlinux 0x9bb710e3 blk_integrity_is_initialized +EXPORT_SYMBOL vmlinux 0x9bd261f8 tcp_release_cb +EXPORT_SYMBOL vmlinux 0x9be7bde4 security_tun_dev_attach +EXPORT_SYMBOL vmlinux 0x9bf4136c of_mm_gpiochip_add +EXPORT_SYMBOL vmlinux 0x9bf4cffe tcp_rtx_synack +EXPORT_SYMBOL vmlinux 0x9bf7a52f __nla_reserve +EXPORT_SYMBOL vmlinux 0x9bfbf2d0 agp_free_memory +EXPORT_SYMBOL vmlinux 0x9bfd5ae9 netlink_broadcast_filtered +EXPORT_SYMBOL vmlinux 0x9bff0b39 nf_ip6_checksum +EXPORT_SYMBOL vmlinux 0x9c049df7 set_security_override +EXPORT_SYMBOL vmlinux 0x9c10acc0 inet_bind +EXPORT_SYMBOL vmlinux 0x9c1259f1 vfs_create +EXPORT_SYMBOL vmlinux 0x9c146358 inet_unregister_protosw +EXPORT_SYMBOL vmlinux 0x9c403d5c input_get_keycode +EXPORT_SYMBOL vmlinux 0x9c491f60 sg_alloc_table +EXPORT_SYMBOL vmlinux 0x9c4976cb scsi_print_sense_hdr +EXPORT_SYMBOL vmlinux 0x9c618c31 free_task +EXPORT_SYMBOL vmlinux 0x9c6b7c6f agp_generic_free_gatt_table +EXPORT_SYMBOL vmlinux 0x9c8c66d0 set_cached_acl +EXPORT_SYMBOL vmlinux 0x9c9081f6 skb_realloc_headroom +EXPORT_SYMBOL vmlinux 0x9ca8f369 security_inode_getsecctx +EXPORT_SYMBOL vmlinux 0x9cab34a6 rfkill_set_led_trigger_name +EXPORT_SYMBOL vmlinux 0x9cc8f5ce serial8250_set_isa_configurator +EXPORT_SYMBOL vmlinux 0x9ccb0500 inet_put_port +EXPORT_SYMBOL vmlinux 0x9cd4fc82 vga_client_register +EXPORT_SYMBOL vmlinux 0x9cf139bd devm_devfreq_register_opp_notifier +EXPORT_SYMBOL vmlinux 0x9d04e04e dev_err +EXPORT_SYMBOL vmlinux 0x9d0d6206 unregister_netdevice_notifier +EXPORT_SYMBOL vmlinux 0x9d1024d5 elv_add_request +EXPORT_SYMBOL vmlinux 0x9d14983a ppc_enable_pmcs +EXPORT_SYMBOL vmlinux 0x9d24884e jbd2_journal_check_available_features +EXPORT_SYMBOL vmlinux 0x9d3aa376 blk_iopoll_init +EXPORT_SYMBOL vmlinux 0x9d41bfb5 sock_sendmsg +EXPORT_SYMBOL vmlinux 0x9d6a54c2 flex_array_get_ptr +EXPORT_SYMBOL vmlinux 0x9d6e551c get_disk +EXPORT_SYMBOL vmlinux 0x9d72229b fsl_ifc_find +EXPORT_SYMBOL vmlinux 0x9d7ce8dd _raw_spin_trylock +EXPORT_SYMBOL vmlinux 0x9d7d9799 kill_litter_super +EXPORT_SYMBOL vmlinux 0x9d88d1a5 skb_copy_and_csum_bits +EXPORT_SYMBOL vmlinux 0x9d9eb597 vfs_fsync +EXPORT_SYMBOL vmlinux 0x9da05e10 mipi_dsi_create_packet +EXPORT_SYMBOL vmlinux 0x9db36ed6 revalidate_disk +EXPORT_SYMBOL vmlinux 0x9dbad359 ppp_register_net_channel +EXPORT_SYMBOL vmlinux 0x9dd4175d inet6_release +EXPORT_SYMBOL vmlinux 0x9dff9302 tc_classify_compat +EXPORT_SYMBOL vmlinux 0x9e0c711d vzalloc_node +EXPORT_SYMBOL vmlinux 0x9e2f8c90 lz4_decompress_unknownoutputsize +EXPORT_SYMBOL vmlinux 0x9e3bb927 __sk_dst_check +EXPORT_SYMBOL vmlinux 0x9e4bad69 compat_sock_get_timestamp +EXPORT_SYMBOL vmlinux 0x9e4faeef dm_io_client_destroy +EXPORT_SYMBOL vmlinux 0x9e53173c nobh_writepage +EXPORT_SYMBOL vmlinux 0x9e547b0c ata_dev_printk +EXPORT_SYMBOL vmlinux 0x9e61bb05 set_freezable +EXPORT_SYMBOL vmlinux 0x9e71a2a5 register_tcf_proto_ops +EXPORT_SYMBOL vmlinux 0x9e763530 reciprocal_value +EXPORT_SYMBOL vmlinux 0x9e788161 xfrm_find_acq_byseq +EXPORT_SYMBOL vmlinux 0x9e807881 cfb_fillrect +EXPORT_SYMBOL vmlinux 0x9e8b6071 __sync_dirty_buffer +EXPORT_SYMBOL vmlinux 0x9e8ff185 skb_abort_seq_read +EXPORT_SYMBOL vmlinux 0x9ea5725e inet6_protos +EXPORT_SYMBOL vmlinux 0x9eada84c pci_save_state +EXPORT_SYMBOL vmlinux 0x9eaedfa8 kernel_write +EXPORT_SYMBOL vmlinux 0x9eb19a64 sock_create_kern +EXPORT_SYMBOL vmlinux 0x9eb80b88 dquot_claim_space_nodirty +EXPORT_SYMBOL vmlinux 0x9ebd4c04 adjust_resource +EXPORT_SYMBOL vmlinux 0x9edbbe88 mutex_lock_interruptible +EXPORT_SYMBOL vmlinux 0x9ee49610 lock_two_nondirectories +EXPORT_SYMBOL vmlinux 0x9ee8c9f4 tty_throttle +EXPORT_SYMBOL vmlinux 0x9ef8ee04 of_mdio_parse_addr +EXPORT_SYMBOL vmlinux 0x9f03f4e8 blk_queue_dma_pad +EXPORT_SYMBOL vmlinux 0x9f0912ba scsi_print_result +EXPORT_SYMBOL vmlinux 0x9f1b2831 ilookup5 +EXPORT_SYMBOL vmlinux 0x9f23fa23 xfrm_state_register_afinfo +EXPORT_SYMBOL vmlinux 0x9f35dd9f scsi_get_host_dev +EXPORT_SYMBOL vmlinux 0x9f46ced8 __sw_hweight64 +EXPORT_SYMBOL vmlinux 0x9f4ddb2a from_kuid_munged +EXPORT_SYMBOL vmlinux 0x9f54d9f2 mmc_can_reset +EXPORT_SYMBOL vmlinux 0x9f642e3e xfrm_state_walk +EXPORT_SYMBOL vmlinux 0x9f694073 dquot_quota_off +EXPORT_SYMBOL vmlinux 0x9f7c1be8 skb_flow_dissector_init +EXPORT_SYMBOL vmlinux 0x9f82a2fa netlink_broadcast +EXPORT_SYMBOL vmlinux 0x9f911629 idr_alloc_cyclic +EXPORT_SYMBOL vmlinux 0x9f912a1d xfrm_sad_getinfo +EXPORT_SYMBOL vmlinux 0x9f96de0e sock_get_timestamp +EXPORT_SYMBOL vmlinux 0x9f984513 strrchr +EXPORT_SYMBOL vmlinux 0x9f995bf3 param_set_byte +EXPORT_SYMBOL vmlinux 0x9fb2c115 generic_make_request +EXPORT_SYMBOL vmlinux 0x9fd1f929 redirty_page_for_writepage +EXPORT_SYMBOL vmlinux 0x9fdecc31 unregister_netdevice_many +EXPORT_SYMBOL vmlinux 0x9fe7bdd4 md_done_sync +EXPORT_SYMBOL vmlinux 0x9fedfa39 vfs_readv +EXPORT_SYMBOL vmlinux 0x9ff39fba dma_async_device_register +EXPORT_SYMBOL vmlinux 0x9ffa3a75 netdev_max_backlog +EXPORT_SYMBOL vmlinux 0x9ffaa352 cros_ec_query_all +EXPORT_SYMBOL vmlinux 0xa0016ed0 bdi_destroy +EXPORT_SYMBOL vmlinux 0xa015796a __ps2_command +EXPORT_SYMBOL vmlinux 0xa0201e78 __netif_schedule +EXPORT_SYMBOL vmlinux 0xa02692e3 d_rehash +EXPORT_SYMBOL vmlinux 0xa03179f0 security_sb_set_mnt_opts +EXPORT_SYMBOL vmlinux 0xa03ba90e iov_iter_alignment +EXPORT_SYMBOL vmlinux 0xa0436e98 in6addr_linklocal_allnodes +EXPORT_SYMBOL vmlinux 0xa04a01bd qdisc_class_hash_insert +EXPORT_SYMBOL vmlinux 0xa057491e devm_ioremap_wc +EXPORT_SYMBOL vmlinux 0xa05c03df mempool_kmalloc +EXPORT_SYMBOL vmlinux 0xa0611290 iov_iter_advance +EXPORT_SYMBOL vmlinux 0xa062e39c scsi_track_queue_full +EXPORT_SYMBOL vmlinux 0xa06875b0 bio_integrity_clone +EXPORT_SYMBOL vmlinux 0xa07a37f0 memchr +EXPORT_SYMBOL vmlinux 0xa07ed110 xz_dec_init +EXPORT_SYMBOL vmlinux 0xa084749a __bitmap_or +EXPORT_SYMBOL vmlinux 0xa088aebb pci_add_new_bus +EXPORT_SYMBOL vmlinux 0xa0acbf80 sk_wait_data +EXPORT_SYMBOL vmlinux 0xa0b04675 vmalloc_32 +EXPORT_SYMBOL vmlinux 0xa0dad88e netdev_adjacent_get_private +EXPORT_SYMBOL vmlinux 0xa0e92499 mmc_wait_for_req +EXPORT_SYMBOL vmlinux 0xa0ebd14c sysctl_tcp_mem +EXPORT_SYMBOL vmlinux 0xa0f63591 prepare_creds +EXPORT_SYMBOL vmlinux 0xa0fbac79 wake_up_bit +EXPORT_SYMBOL vmlinux 0xa0ff74d6 udp_memory_allocated +EXPORT_SYMBOL vmlinux 0xa108eb4d sysctl_optmem_max +EXPORT_SYMBOL vmlinux 0xa11d7c0e dquot_resume +EXPORT_SYMBOL vmlinux 0xa120d33c tty_unregister_ldisc +EXPORT_SYMBOL vmlinux 0xa128db5a ip_route_me_harder +EXPORT_SYMBOL vmlinux 0xa12c36ff param_ops_int +EXPORT_SYMBOL vmlinux 0xa12fbacb i2c_clients_command +EXPORT_SYMBOL vmlinux 0xa1316e71 deactivate_super +EXPORT_SYMBOL vmlinux 0xa1392b20 param_ops_string +EXPORT_SYMBOL vmlinux 0xa1415618 twl6030_interrupt_unmask +EXPORT_SYMBOL vmlinux 0xa148e7c2 dmam_alloc_coherent +EXPORT_SYMBOL vmlinux 0xa14f3d8c ewma_add +EXPORT_SYMBOL vmlinux 0xa185d2c7 inet_dev_addr_type +EXPORT_SYMBOL vmlinux 0xa189b19e blk_pre_runtime_suspend +EXPORT_SYMBOL vmlinux 0xa1aca929 jbd2_journal_file_inode +EXPORT_SYMBOL vmlinux 0xa1af9110 bd_set_size +EXPORT_SYMBOL vmlinux 0xa1b759ce fb_add_videomode +EXPORT_SYMBOL vmlinux 0xa1c642d5 inet_frag_find +EXPORT_SYMBOL vmlinux 0xa1c76e0a _cond_resched +EXPORT_SYMBOL vmlinux 0xa1c99385 __init_waitqueue_head +EXPORT_SYMBOL vmlinux 0xa1cea2aa __dev_get_by_name +EXPORT_SYMBOL vmlinux 0xa1d7b693 netdev_alert +EXPORT_SYMBOL vmlinux 0xa1dc2c6f component_match_add +EXPORT_SYMBOL vmlinux 0xa1ec23eb neigh_event_ns +EXPORT_SYMBOL vmlinux 0xa1ee7f9f param_get_byte +EXPORT_SYMBOL vmlinux 0xa1f8fe75 wait_for_completion_killable_timeout +EXPORT_SYMBOL vmlinux 0xa202a8e5 kmalloc_order_trace +EXPORT_SYMBOL vmlinux 0xa209451c bitmap_fold +EXPORT_SYMBOL vmlinux 0xa20dc36d __break_lease +EXPORT_SYMBOL vmlinux 0xa21ce6a8 nd_btt_probe +EXPORT_SYMBOL vmlinux 0xa223e100 dmam_alloc_noncoherent +EXPORT_SYMBOL vmlinux 0xa224d85f inet_get_local_port_range +EXPORT_SYMBOL vmlinux 0xa26ebf37 jbd2_journal_lock_updates +EXPORT_SYMBOL vmlinux 0xa276bf95 iw_handler_get_thrspy +EXPORT_SYMBOL vmlinux 0xa27df392 zero_fill_bio +EXPORT_SYMBOL vmlinux 0xa2848c50 ecryptfs_get_auth_tok_key +EXPORT_SYMBOL vmlinux 0xa2a335bd vme_alloc_consistent +EXPORT_SYMBOL vmlinux 0xa2d97152 flush_tlb_range +EXPORT_SYMBOL vmlinux 0xa2f04796 msi_bitmap_alloc_hwirqs +EXPORT_SYMBOL vmlinux 0xa2f5a539 blk_queue_init_tags +EXPORT_SYMBOL vmlinux 0xa2f66482 blk_init_tags +EXPORT_SYMBOL vmlinux 0xa2f8c322 alloc_file +EXPORT_SYMBOL vmlinux 0xa2fdbcbe fence_default_wait +EXPORT_SYMBOL vmlinux 0xa303d1ff dm_ratelimit_state +EXPORT_SYMBOL vmlinux 0xa30d30d8 dquot_acquire +EXPORT_SYMBOL vmlinux 0xa319917e end_buffer_async_write +EXPORT_SYMBOL vmlinux 0xa31bdf07 vme_master_set +EXPORT_SYMBOL vmlinux 0xa342a170 input_allocate_device +EXPORT_SYMBOL vmlinux 0xa35b4d70 tcp_init_sock +EXPORT_SYMBOL vmlinux 0xa381944f dql_reset +EXPORT_SYMBOL vmlinux 0xa3871f8f km_state_expired +EXPORT_SYMBOL vmlinux 0xa39b4cf2 udelay +EXPORT_SYMBOL vmlinux 0xa3abc422 abort_exclusive_wait +EXPORT_SYMBOL vmlinux 0xa3d78615 __cleancache_invalidate_inode +EXPORT_SYMBOL vmlinux 0xa3de96a1 ps2_command +EXPORT_SYMBOL vmlinux 0xa3e75545 flush_tlb_kernel_range +EXPORT_SYMBOL vmlinux 0xa3fb2bf7 devm_iounmap +EXPORT_SYMBOL vmlinux 0xa3fc3d50 __tracepoint_module_get +EXPORT_SYMBOL vmlinux 0xa404e5db param_ops_ushort +EXPORT_SYMBOL vmlinux 0xa421b9ec xfrm_state_update +EXPORT_SYMBOL vmlinux 0xa441e6f1 abx500_get_register_interruptible +EXPORT_SYMBOL vmlinux 0xa44db862 input_event +EXPORT_SYMBOL vmlinux 0xa4511467 crc16 +EXPORT_SYMBOL vmlinux 0xa4701e9e timekeeping_inject_offset +EXPORT_SYMBOL vmlinux 0xa4772fe0 inet_csk_clear_xmit_timers +EXPORT_SYMBOL vmlinux 0xa483a7a9 skb_queue_purge +EXPORT_SYMBOL vmlinux 0xa4a287ab scsi_report_bus_reset +EXPORT_SYMBOL vmlinux 0xa4a94d26 find_next_bit_le +EXPORT_SYMBOL vmlinux 0xa4b45ea5 out_of_line_wait_on_bit_lock +EXPORT_SYMBOL vmlinux 0xa4b94fea iowrite8_rep +EXPORT_SYMBOL vmlinux 0xa4c6ec75 mpage_readpage +EXPORT_SYMBOL vmlinux 0xa4d0c72e xfrm_input_register_afinfo +EXPORT_SYMBOL vmlinux 0xa4d4f0e6 global_cache_flush +EXPORT_SYMBOL vmlinux 0xa4e67610 inet_csk_init_xmit_timers +EXPORT_SYMBOL vmlinux 0xa5248c46 tty_kref_put +EXPORT_SYMBOL vmlinux 0xa5526619 rb_insert_color +EXPORT_SYMBOL vmlinux 0xa555f97e phy_register_fixup +EXPORT_SYMBOL vmlinux 0xa55c6830 register_sysctl_table +EXPORT_SYMBOL vmlinux 0xa56b8ab2 flex_array_free +EXPORT_SYMBOL vmlinux 0xa598e29c vesa_modes +EXPORT_SYMBOL vmlinux 0xa5a51eee __crc32c_le +EXPORT_SYMBOL vmlinux 0xa5b152b8 scsi_print_command +EXPORT_SYMBOL vmlinux 0xa5ca3d24 mmc_set_data_timeout +EXPORT_SYMBOL vmlinux 0xa5d227de kill_pgrp +EXPORT_SYMBOL vmlinux 0xa5e35f79 nf_unregister_hooks +EXPORT_SYMBOL vmlinux 0xa6085678 ip6_xmit +EXPORT_SYMBOL vmlinux 0xa60e9b03 is_nd_btt +EXPORT_SYMBOL vmlinux 0xa63322c6 hdmi_audio_infoframe_pack +EXPORT_SYMBOL vmlinux 0xa63c1a48 generic_setxattr +EXPORT_SYMBOL vmlinux 0xa63f6dc8 get_phy_device +EXPORT_SYMBOL vmlinux 0xa65972b8 _memcpy_toio +EXPORT_SYMBOL vmlinux 0xa674096e netif_skb_features +EXPORT_SYMBOL vmlinux 0xa675804c utf8s_to_utf16s +EXPORT_SYMBOL vmlinux 0xa67f203c nf_log_unbind_pf +EXPORT_SYMBOL vmlinux 0xa681a24c netpoll_poll_enable +EXPORT_SYMBOL vmlinux 0xa681fe88 generate_random_uuid +EXPORT_SYMBOL vmlinux 0xa6aec505 agp3_generic_tlbflush +EXPORT_SYMBOL vmlinux 0xa6c6a9cc tcp_connect +EXPORT_SYMBOL vmlinux 0xa6d3d913 xfrm4_prepare_output +EXPORT_SYMBOL vmlinux 0xa6d7ce2e inet_add_offload +EXPORT_SYMBOL vmlinux 0xa6e071d2 scsi_set_medium_removal +EXPORT_SYMBOL vmlinux 0xa6e80da3 neigh_parms_release +EXPORT_SYMBOL vmlinux 0xa6f2204a vga_put +EXPORT_SYMBOL vmlinux 0xa6ffec60 woken_wake_function +EXPORT_SYMBOL vmlinux 0xa70650be __wait_on_buffer +EXPORT_SYMBOL vmlinux 0xa70c1fa0 inet_frag_destroy +EXPORT_SYMBOL vmlinux 0xa720678c lg_global_lock +EXPORT_SYMBOL vmlinux 0xa7270fb9 tcp_enter_memory_pressure +EXPORT_SYMBOL vmlinux 0xa735db59 prandom_u32 +EXPORT_SYMBOL vmlinux 0xa74f4e9b ida_simple_get +EXPORT_SYMBOL vmlinux 0xa75e8605 ww_mutex_unlock +EXPORT_SYMBOL vmlinux 0xa78d9eb7 slhc_uncompress +EXPORT_SYMBOL vmlinux 0xa79e9c45 of_device_alloc +EXPORT_SYMBOL vmlinux 0xa7a0b902 neigh_for_each +EXPORT_SYMBOL vmlinux 0xa7b4fbc7 jbd2_journal_abort +EXPORT_SYMBOL vmlinux 0xa7c735dd md_finish_reshape +EXPORT_SYMBOL vmlinux 0xa7d2c732 fbcon_set_tileops +EXPORT_SYMBOL vmlinux 0xa7df7965 tty_set_operations +EXPORT_SYMBOL vmlinux 0xa7f38ccc cros_ec_cmd_xfer +EXPORT_SYMBOL vmlinux 0xa8232c78 strtobool +EXPORT_SYMBOL vmlinux 0xa82daaf2 agp_bind_memory +EXPORT_SYMBOL vmlinux 0xa830c3f5 agp_collect_device_status +EXPORT_SYMBOL vmlinux 0xa83e530a finish_open +EXPORT_SYMBOL vmlinux 0xa84242ab netdev_master_upper_dev_link_private +EXPORT_SYMBOL vmlinux 0xa843805a get_unused_fd_flags +EXPORT_SYMBOL vmlinux 0xa84bc8e7 of_find_i2c_device_by_node +EXPORT_SYMBOL vmlinux 0xa857b91f param_ops_short +EXPORT_SYMBOL vmlinux 0xa859cf04 __invalidate_device +EXPORT_SYMBOL vmlinux 0xa85b499b md_check_recovery +EXPORT_SYMBOL vmlinux 0xa8721b97 system_state +EXPORT_SYMBOL vmlinux 0xa88538ac __remove_inode_hash +EXPORT_SYMBOL vmlinux 0xa8ac7974 pci_lost_interrupt +EXPORT_SYMBOL vmlinux 0xa8acba00 dma_set_mask +EXPORT_SYMBOL vmlinux 0xa8bd0293 pm860x_reg_read +EXPORT_SYMBOL vmlinux 0xa8c2a6ec poll_initwait +EXPORT_SYMBOL vmlinux 0xa8d06b36 rwsem_down_read_failed +EXPORT_SYMBOL vmlinux 0xa8d3571f tcp_simple_retransmit +EXPORT_SYMBOL vmlinux 0xa8fa1fa5 bio_put +EXPORT_SYMBOL vmlinux 0xa8fef7bb security_unix_may_send +EXPORT_SYMBOL vmlinux 0xa901cfad mmc_start_req +EXPORT_SYMBOL vmlinux 0xa9168676 xmit_recursion +EXPORT_SYMBOL vmlinux 0xa916b694 strnlen +EXPORT_SYMBOL vmlinux 0xa9273e1a epapr_hypercall_start +EXPORT_SYMBOL vmlinux 0xa92ca028 bioset_integrity_create +EXPORT_SYMBOL vmlinux 0xa93ba88e proc_doulongvec_minmax +EXPORT_SYMBOL vmlinux 0xa976957d bitmap_remap +EXPORT_SYMBOL vmlinux 0xa97b5eac sock_no_sendpage +EXPORT_SYMBOL vmlinux 0xa97c55a0 register_netdevice +EXPORT_SYMBOL vmlinux 0xa98267fe __module_put_and_exit +EXPORT_SYMBOL vmlinux 0xa982f39a tty_port_lower_dtr_rts +EXPORT_SYMBOL vmlinux 0xa98ca13a __devm_gpiod_get_index +EXPORT_SYMBOL vmlinux 0xa99b39c2 prandom_bytes +EXPORT_SYMBOL vmlinux 0xa9c63b69 security_xfrm_policy_free +EXPORT_SYMBOL vmlinux 0xa9e082d2 dentry_open +EXPORT_SYMBOL vmlinux 0xa9e96762 bdi_set_max_ratio +EXPORT_SYMBOL vmlinux 0xa9ea2b03 elv_rb_add +EXPORT_SYMBOL vmlinux 0xa9eea4c6 of_get_named_gpio_flags +EXPORT_SYMBOL vmlinux 0xa9f83752 cdrom_get_last_written +EXPORT_SYMBOL vmlinux 0xaa0073b7 __net_get_random_once +EXPORT_SYMBOL vmlinux 0xaa109772 filemap_flush +EXPORT_SYMBOL vmlinux 0xaa1121b7 padata_set_cpumask +EXPORT_SYMBOL vmlinux 0xaa1cce6b md_flush_request +EXPORT_SYMBOL vmlinux 0xaa223cf7 gnet_stats_finish_copy +EXPORT_SYMBOL vmlinux 0xaa2792c0 blkdev_fsync +EXPORT_SYMBOL vmlinux 0xaa32c7df __seq_open_private +EXPORT_SYMBOL vmlinux 0xaa46e87e lg_local_unlock +EXPORT_SYMBOL vmlinux 0xaa4a1d36 jbd2_journal_stop +EXPORT_SYMBOL vmlinux 0xaa6965bc blk_rq_unmap_user +EXPORT_SYMBOL vmlinux 0xaa6e4df5 _raw_write_lock_irqsave +EXPORT_SYMBOL vmlinux 0xaa6f23ad rfkill_get_led_trigger_name +EXPORT_SYMBOL vmlinux 0xaa79fa47 default_file_splice_read +EXPORT_SYMBOL vmlinux 0xaa83a549 netdev_upper_dev_unlink +EXPORT_SYMBOL vmlinux 0xaa894f50 dev_add_pack +EXPORT_SYMBOL vmlinux 0xaa94ad17 __bio_clone_fast +EXPORT_SYMBOL vmlinux 0xaa981d0a blk_post_runtime_resume +EXPORT_SYMBOL vmlinux 0xaaaae8b3 inet_release +EXPORT_SYMBOL vmlinux 0xaaab8067 cpu_sibling_map +EXPORT_SYMBOL vmlinux 0xaad0ae78 __bitmap_shift_right +EXPORT_SYMBOL vmlinux 0xaad6d92f rfkill_init_sw_state +EXPORT_SYMBOL vmlinux 0xaae026ef generic_block_bmap +EXPORT_SYMBOL vmlinux 0xaafdc258 strcasecmp +EXPORT_SYMBOL vmlinux 0xab06875a scsi_execute +EXPORT_SYMBOL vmlinux 0xab19ad97 nf_log_bind_pf +EXPORT_SYMBOL vmlinux 0xab26d0e6 of_find_node_opts_by_path +EXPORT_SYMBOL vmlinux 0xab3eb425 tc_classify +EXPORT_SYMBOL vmlinux 0xab517489 d_path +EXPORT_SYMBOL vmlinux 0xab596ceb skb_put +EXPORT_SYMBOL vmlinux 0xab5a132f of_device_register +EXPORT_SYMBOL vmlinux 0xab5c0463 blk_queue_dma_alignment +EXPORT_SYMBOL vmlinux 0xab62d941 register_quota_format +EXPORT_SYMBOL vmlinux 0xab6bde28 sysctl_max_syn_backlog +EXPORT_SYMBOL vmlinux 0xab781570 fb_get_options +EXPORT_SYMBOL vmlinux 0xab7d1878 pipe_unlock +EXPORT_SYMBOL vmlinux 0xab802add noop_fsync +EXPORT_SYMBOL vmlinux 0xab88d99a stop_tty +EXPORT_SYMBOL vmlinux 0xab8ba9c9 dquot_commit +EXPORT_SYMBOL vmlinux 0xabad93eb seq_put_decimal_ull +EXPORT_SYMBOL vmlinux 0xabae2fc6 __wait_on_bit +EXPORT_SYMBOL vmlinux 0xabc5e89f get_gendisk +EXPORT_SYMBOL vmlinux 0xabc6dd63 cpufreq_sysfs_create_file +EXPORT_SYMBOL vmlinux 0xabcaa577 free_anon_bdev +EXPORT_SYMBOL vmlinux 0xabcb037b devm_gpiod_put +EXPORT_SYMBOL vmlinux 0xabcf15cd param_set_long +EXPORT_SYMBOL vmlinux 0xac0ba8c1 blk_iopoll_disable +EXPORT_SYMBOL vmlinux 0xac14d591 request_firmware +EXPORT_SYMBOL vmlinux 0xac1a55be unregister_reboot_notifier +EXPORT_SYMBOL vmlinux 0xac244108 blk_queue_bounce_limit +EXPORT_SYMBOL vmlinux 0xac26b820 _raw_write_lock +EXPORT_SYMBOL vmlinux 0xac314f09 devm_ioport_unmap +EXPORT_SYMBOL vmlinux 0xac60e4dc generic_file_mmap +EXPORT_SYMBOL vmlinux 0xac7059d0 mmc_gpio_get_ro +EXPORT_SYMBOL vmlinux 0xac70b0fa vm_stat +EXPORT_SYMBOL vmlinux 0xac8566bd kobject_set_name +EXPORT_SYMBOL vmlinux 0xaca50caf d_lookup +EXPORT_SYMBOL vmlinux 0xacab29b7 seq_hlist_start_percpu +EXPORT_SYMBOL vmlinux 0xacc5b5d2 csum_ipv6_magic +EXPORT_SYMBOL vmlinux 0xaccabc6a in4_pton +EXPORT_SYMBOL vmlinux 0xacd81eb3 jbd2_inode_cache +EXPORT_SYMBOL vmlinux 0xacf4d843 match_strdup +EXPORT_SYMBOL vmlinux 0xad01744f kstrtos8_from_user +EXPORT_SYMBOL vmlinux 0xad02eb48 dump_emit +EXPORT_SYMBOL vmlinux 0xad0413d4 match_hex +EXPORT_SYMBOL vmlinux 0xad05a0a1 dev_trans_start +EXPORT_SYMBOL vmlinux 0xad0877ba release_pages +EXPORT_SYMBOL vmlinux 0xad0bf912 xfrm_policy_unregister_afinfo +EXPORT_SYMBOL vmlinux 0xad164875 kstrtos16_from_user +EXPORT_SYMBOL vmlinux 0xad2b83cd __netlink_dump_start +EXPORT_SYMBOL vmlinux 0xad47f1ac mipi_dsi_dcs_set_tear_off +EXPORT_SYMBOL vmlinux 0xad6f095f kmem_cache_alloc_trace +EXPORT_SYMBOL vmlinux 0xad745222 locks_free_lock +EXPORT_SYMBOL vmlinux 0xad84bef8 dm_table_event +EXPORT_SYMBOL vmlinux 0xadc35091 of_get_next_available_child +EXPORT_SYMBOL vmlinux 0xadc50155 ip6_find_1stfragopt +EXPORT_SYMBOL vmlinux 0xadc60a9d fsnotify_destroy_mark +EXPORT_SYMBOL vmlinux 0xadf423ef empty_aops +EXPORT_SYMBOL vmlinux 0xadfdfcef __bitmap_andnot +EXPORT_SYMBOL vmlinux 0xae0dcb26 led_blink_set_oneshot +EXPORT_SYMBOL vmlinux 0xae221396 textsearch_unregister +EXPORT_SYMBOL vmlinux 0xae358236 fence_signal +EXPORT_SYMBOL vmlinux 0xae3a1120 dev_set_promiscuity +EXPORT_SYMBOL vmlinux 0xae44407a inode_dio_wait +EXPORT_SYMBOL vmlinux 0xae545f06 _raw_write_unlock_irqrestore +EXPORT_SYMBOL vmlinux 0xae729e59 security_req_classify_flow +EXPORT_SYMBOL vmlinux 0xaeb1131f pci_bus_get +EXPORT_SYMBOL vmlinux 0xaec45c8e cdrom_open +EXPORT_SYMBOL vmlinux 0xaee54959 proc_mkdir_mode +EXPORT_SYMBOL vmlinux 0xaeefefca pci_reenable_device +EXPORT_SYMBOL vmlinux 0xaf063510 _raw_spin_lock_bh +EXPORT_SYMBOL vmlinux 0xaf2422de security_path_symlink +EXPORT_SYMBOL vmlinux 0xaf2d872c prepare_to_wait +EXPORT_SYMBOL vmlinux 0xaf3dd7dc scsi_logging_level +EXPORT_SYMBOL vmlinux 0xaf5a17af generic_read_dir +EXPORT_SYMBOL vmlinux 0xaf62c87d netdev_features_change +EXPORT_SYMBOL vmlinux 0xaf6ae696 kstrndup +EXPORT_SYMBOL vmlinux 0xaf7cedf3 serio_open +EXPORT_SYMBOL vmlinux 0xaf82bbdc fput +EXPORT_SYMBOL vmlinux 0xaf830fa3 vfs_path_lookup +EXPORT_SYMBOL vmlinux 0xaf8efc1a scsi_mode_sense +EXPORT_SYMBOL vmlinux 0xaf9340a7 tcf_hash_new_index +EXPORT_SYMBOL vmlinux 0xafab2b7b scsi_ioctl_reset +EXPORT_SYMBOL vmlinux 0xafab4af6 devm_backlight_device_register +EXPORT_SYMBOL vmlinux 0xafdaa93d jbd2_journal_update_sb_errno +EXPORT_SYMBOL vmlinux 0xafdd5d31 generic_start_io_acct +EXPORT_SYMBOL vmlinux 0xafdfc24e request_key_async +EXPORT_SYMBOL vmlinux 0xafff3d1d mempool_alloc +EXPORT_SYMBOL vmlinux 0xb0099178 dput +EXPORT_SYMBOL vmlinux 0xb01d681a pci_bus_write_config_dword +EXPORT_SYMBOL vmlinux 0xb0235baa of_device_is_big_endian +EXPORT_SYMBOL vmlinux 0xb02e050d n_tty_ioctl_helper +EXPORT_SYMBOL vmlinux 0xb04241b4 ida_simple_remove +EXPORT_SYMBOL vmlinux 0xb05fc310 sysctl_rmem_max +EXPORT_SYMBOL vmlinux 0xb0899ccc inet6_add_protocol +EXPORT_SYMBOL vmlinux 0xb094803d sock_alloc_file +EXPORT_SYMBOL vmlinux 0xb0960e72 truncate_setsize +EXPORT_SYMBOL vmlinux 0xb0a0da0c rational_best_approximation +EXPORT_SYMBOL vmlinux 0xb0a3bde1 __dev_getfirstbyhwtype +EXPORT_SYMBOL vmlinux 0xb0a8cf05 may_umount +EXPORT_SYMBOL vmlinux 0xb0bd601e pskb_expand_head +EXPORT_SYMBOL vmlinux 0xb0c5ff21 __serio_register_port +EXPORT_SYMBOL vmlinux 0xb0ccd7d0 i8042_remove_filter +EXPORT_SYMBOL vmlinux 0xb0d94219 unmap_underlying_metadata +EXPORT_SYMBOL vmlinux 0xb0e10781 get_option +EXPORT_SYMBOL vmlinux 0xb0e381bb cancel_dirty_page +EXPORT_SYMBOL vmlinux 0xb0e899d2 pci_bus_alloc_resource +EXPORT_SYMBOL vmlinux 0xb0f15249 __inet_hash +EXPORT_SYMBOL vmlinux 0xb0fe9d93 blk_queue_invalidate_tags +EXPORT_SYMBOL vmlinux 0xb10f3362 nf_unregister_sockopt +EXPORT_SYMBOL vmlinux 0xb12cbacb fb_unregister_client +EXPORT_SYMBOL vmlinux 0xb15bd8fa tb_ticks_per_sec +EXPORT_SYMBOL vmlinux 0xb15cb614 security_xfrm_policy_alloc +EXPORT_SYMBOL vmlinux 0xb15f7e9e __inode_permission +EXPORT_SYMBOL vmlinux 0xb162ea17 pcibios_bus_to_resource +EXPORT_SYMBOL vmlinux 0xb16408d9 sock_update_memcg +EXPORT_SYMBOL vmlinux 0xb1645a2e sg_free_table +EXPORT_SYMBOL vmlinux 0xb165ef45 __irq_regs +EXPORT_SYMBOL vmlinux 0xb178b073 vga_set_legacy_decoding +EXPORT_SYMBOL vmlinux 0xb17b5fc1 nvdimm_namespace_common_probe +EXPORT_SYMBOL vmlinux 0xb1ad8e82 skb_queue_head +EXPORT_SYMBOL vmlinux 0xb1c3a01a oops_in_progress +EXPORT_SYMBOL vmlinux 0xb1c6e787 wait_for_completion_timeout +EXPORT_SYMBOL vmlinux 0xb1cf44df fb_find_best_mode +EXPORT_SYMBOL vmlinux 0xb1fed714 clear_user_page +EXPORT_SYMBOL vmlinux 0xb20ba3a5 of_n_size_cells +EXPORT_SYMBOL vmlinux 0xb20c4f53 of_phy_connect +EXPORT_SYMBOL vmlinux 0xb21605f7 md_register_thread +EXPORT_SYMBOL vmlinux 0xb23aeda6 blkdev_get_by_path +EXPORT_SYMBOL vmlinux 0xb23c7071 __sb_start_write +EXPORT_SYMBOL vmlinux 0xb24f7b7b down_write +EXPORT_SYMBOL vmlinux 0xb25905f0 d_instantiate_unique +EXPORT_SYMBOL vmlinux 0xb265b58f con_is_bound +EXPORT_SYMBOL vmlinux 0xb2682405 utf8_to_utf32 +EXPORT_SYMBOL vmlinux 0xb28154eb crypto_sha256_finup +EXPORT_SYMBOL vmlinux 0xb289163f tcp_md5_hash_key +EXPORT_SYMBOL vmlinux 0xb28e0dac make_kgid +EXPORT_SYMBOL vmlinux 0xb2a711c0 try_to_writeback_inodes_sb_nr +EXPORT_SYMBOL vmlinux 0xb2bc8cdb dev_alert +EXPORT_SYMBOL vmlinux 0xb2be6e92 netdev_stats_to_stats64 +EXPORT_SYMBOL vmlinux 0xb2d56d11 tty_mutex +EXPORT_SYMBOL vmlinux 0xb3123133 __brelse +EXPORT_SYMBOL vmlinux 0xb32b2343 dma_find_channel +EXPORT_SYMBOL vmlinux 0xb32f88d9 vc_cons +EXPORT_SYMBOL vmlinux 0xb3382494 fence_signal_locked +EXPORT_SYMBOL vmlinux 0xb33f1490 netlink_rcv_skb +EXPORT_SYMBOL vmlinux 0xb345d5a2 tcf_destroy_chain +EXPORT_SYMBOL vmlinux 0xb3560eb0 vfs_writef +EXPORT_SYMBOL vmlinux 0xb35741b9 arp_xmit +EXPORT_SYMBOL vmlinux 0xb374df32 t10_pi_type3_ip +EXPORT_SYMBOL vmlinux 0xb3831143 pci_bus_write_config_byte +EXPORT_SYMBOL vmlinux 0xb3844a9b register_cdrom +EXPORT_SYMBOL vmlinux 0xb3b61a94 seq_dentry +EXPORT_SYMBOL vmlinux 0xb3bda972 dev_alloc_name +EXPORT_SYMBOL vmlinux 0xb3bed358 scsi_rescan_device +EXPORT_SYMBOL vmlinux 0xb3cad738 vme_bus_num +EXPORT_SYMBOL vmlinux 0xb3d2c76d scsi_hostbyte_string +EXPORT_SYMBOL vmlinux 0xb3d64af5 generic_removexattr +EXPORT_SYMBOL vmlinux 0xb3eaabda nd_device_register +EXPORT_SYMBOL vmlinux 0xb3f7646e kthread_should_stop +EXPORT_SYMBOL vmlinux 0xb423dba1 console_blanked +EXPORT_SYMBOL vmlinux 0xb435ee8c fbcon_rotate_cw +EXPORT_SYMBOL vmlinux 0xb43f1567 zerocopy_sg_from_iter +EXPORT_SYMBOL vmlinux 0xb44f2301 vfs_setpos +EXPORT_SYMBOL vmlinux 0xb44fa52d tcp_sync_mss +EXPORT_SYMBOL vmlinux 0xb452e857 agp_alloc_page_array +EXPORT_SYMBOL vmlinux 0xb45b940f hdmi_infoframe_log +EXPORT_SYMBOL vmlinux 0xb4709322 scsi_dev_info_add_list +EXPORT_SYMBOL vmlinux 0xb47189b5 reservation_ww_class +EXPORT_SYMBOL vmlinux 0xb471aa10 phy_stop +EXPORT_SYMBOL vmlinux 0xb473e2c2 lockref_get +EXPORT_SYMBOL vmlinux 0xb490bb7b kill_bdev +EXPORT_SYMBOL vmlinux 0xb4a3616e import_iovec +EXPORT_SYMBOL vmlinux 0xb4da29b9 kernel_getsockopt +EXPORT_SYMBOL vmlinux 0xb52adb27 ab3100_event_register +EXPORT_SYMBOL vmlinux 0xb52b4c0b flush_dcache_page +EXPORT_SYMBOL vmlinux 0xb52fc707 mmc_hw_reset +EXPORT_SYMBOL vmlinux 0xb531daff put_filp +EXPORT_SYMBOL vmlinux 0xb5333df4 soft_cursor +EXPORT_SYMBOL vmlinux 0xb57343c2 frontswap_shrink +EXPORT_SYMBOL vmlinux 0xb57a06cb pci_enable_device_io +EXPORT_SYMBOL vmlinux 0xb5a459dc unregister_blkdev +EXPORT_SYMBOL vmlinux 0xb5aa7165 dma_pool_destroy +EXPORT_SYMBOL vmlinux 0xb5ada9e4 buffer_check_dirty_writeback +EXPORT_SYMBOL vmlinux 0xb5ceafd1 adjust_managed_page_count +EXPORT_SYMBOL vmlinux 0xb5f8cdb3 jbd2_journal_free_reserved +EXPORT_SYMBOL vmlinux 0xb6150fc2 twl6040_get_pll +EXPORT_SYMBOL vmlinux 0xb618e1c6 remap_pfn_range +EXPORT_SYMBOL vmlinux 0xb6244511 sg_init_one +EXPORT_SYMBOL vmlinux 0xb62fee21 qdisc_watchdog_init +EXPORT_SYMBOL vmlinux 0xb658e590 d_hash_and_lookup +EXPORT_SYMBOL vmlinux 0xb667fd8e mfd_add_devices +EXPORT_SYMBOL vmlinux 0xb677f847 account_page_redirty +EXPORT_SYMBOL vmlinux 0xb678366f int_sqrt +EXPORT_SYMBOL vmlinux 0xb6790df4 get_fs_type +EXPORT_SYMBOL vmlinux 0xb68773b4 qdisc_watchdog_cancel +EXPORT_SYMBOL vmlinux 0xb68acfe8 dquot_free_inode +EXPORT_SYMBOL vmlinux 0xb6936ffe _bcd2bin +EXPORT_SYMBOL vmlinux 0xb698a843 pcim_iomap_regions +EXPORT_SYMBOL vmlinux 0xb6a08bd8 module_put +EXPORT_SYMBOL vmlinux 0xb6a68816 find_last_bit +EXPORT_SYMBOL vmlinux 0xb6d5c4ce tcp_close +EXPORT_SYMBOL vmlinux 0xb6f2c706 __skb_recv_datagram +EXPORT_SYMBOL vmlinux 0xb72b7f84 of_dev_put +EXPORT_SYMBOL vmlinux 0xb7488905 scsi_normalize_sense +EXPORT_SYMBOL vmlinux 0xb7499dcd truncate_pagecache +EXPORT_SYMBOL vmlinux 0xb74b661f writeback_inodes_sb_nr +EXPORT_SYMBOL vmlinux 0xb75600ec ioctl_by_bdev +EXPORT_SYMBOL vmlinux 0xb7586737 dev_uc_add_excl +EXPORT_SYMBOL vmlinux 0xb7689ecd dev_close +EXPORT_SYMBOL vmlinux 0xb770be3e __percpu_counter_add +EXPORT_SYMBOL vmlinux 0xb77131b1 psched_ratecfg_precompute +EXPORT_SYMBOL vmlinux 0xb7724cb1 blk_post_runtime_suspend +EXPORT_SYMBOL vmlinux 0xb775473c ethtool_op_get_link +EXPORT_SYMBOL vmlinux 0xb7786267 of_find_compatible_node +EXPORT_SYMBOL vmlinux 0xb7951d10 simple_dentry_operations +EXPORT_SYMBOL vmlinux 0xb79a4e1a store_fp_state +EXPORT_SYMBOL vmlinux 0xb7a25f47 inode_newsize_ok +EXPORT_SYMBOL vmlinux 0xb7b27720 bio_integrity_add_page +EXPORT_SYMBOL vmlinux 0xb7b8b3bd serio_close +EXPORT_SYMBOL vmlinux 0xb7c5bad7 xfrm_policy_register_afinfo +EXPORT_SYMBOL vmlinux 0xb7c7bf42 block_write_begin +EXPORT_SYMBOL vmlinux 0xb7e4bcda bio_get_nr_vecs +EXPORT_SYMBOL vmlinux 0xb80bf10c dquot_scan_active +EXPORT_SYMBOL vmlinux 0xb81f69d6 i2c_del_adapter +EXPORT_SYMBOL vmlinux 0xb8489d4c fget_raw +EXPORT_SYMBOL vmlinux 0xb874b87a __clzsi2 +EXPORT_SYMBOL vmlinux 0xb8d0fcd9 tcf_action_exec +EXPORT_SYMBOL vmlinux 0xb8f085a3 jbd2_log_start_commit +EXPORT_SYMBOL vmlinux 0xb8f7de3f __netlink_kernel_create +EXPORT_SYMBOL vmlinux 0xb90e4e02 filemap_fdatawait +EXPORT_SYMBOL vmlinux 0xb93e612d napi_gro_receive +EXPORT_SYMBOL vmlinux 0xb954a0ad inc_zone_page_state +EXPORT_SYMBOL vmlinux 0xb98d8674 dquot_alloc +EXPORT_SYMBOL vmlinux 0xb99a6d3e complete_request_key +EXPORT_SYMBOL vmlinux 0xb9aff734 __vfs_write +EXPORT_SYMBOL vmlinux 0xb9e8e2cc in6addr_sitelocal_allrouters +EXPORT_SYMBOL vmlinux 0xb9e8e5da mmc_retune_timer_stop +EXPORT_SYMBOL vmlinux 0xb9ed5c7a proc_create_data +EXPORT_SYMBOL vmlinux 0xb9f7adb2 scsi_verify_blk_ioctl +EXPORT_SYMBOL vmlinux 0xba0aa59f sync_mapping_buffers +EXPORT_SYMBOL vmlinux 0xba30694d dev_get_by_index_rcu +EXPORT_SYMBOL vmlinux 0xba497f13 loops_per_jiffy +EXPORT_SYMBOL vmlinux 0xba69b088 udp_lib_getsockopt +EXPORT_SYMBOL vmlinux 0xba6b8e94 inet6_offloads +EXPORT_SYMBOL vmlinux 0xba7a3d49 mipi_dsi_detach +EXPORT_SYMBOL vmlinux 0xba83c1aa skb_queue_tail +EXPORT_SYMBOL vmlinux 0xba86987e tty_port_close_end +EXPORT_SYMBOL vmlinux 0xba8b3983 blk_end_request +EXPORT_SYMBOL vmlinux 0xba8e9c69 mipi_dsi_host_register +EXPORT_SYMBOL vmlinux 0xbaa818c3 ppc_md +EXPORT_SYMBOL vmlinux 0xbb0540aa zlib_inflateReset +EXPORT_SYMBOL vmlinux 0xbb0875dc pci_find_next_bus +EXPORT_SYMBOL vmlinux 0xbb122b2e inet_confirm_addr +EXPORT_SYMBOL vmlinux 0xbb34134a iov_shorten +EXPORT_SYMBOL vmlinux 0xbb35675b __bitmap_intersects +EXPORT_SYMBOL vmlinux 0xbb4575ce swiotlb_map_sg +EXPORT_SYMBOL vmlinux 0xbb4f4766 simple_write_to_buffer +EXPORT_SYMBOL vmlinux 0xbb5641e4 wake_up_process +EXPORT_SYMBOL vmlinux 0xbb5d343d xfrm_get_acqseq +EXPORT_SYMBOL vmlinux 0xbb701907 get_io_context +EXPORT_SYMBOL vmlinux 0xbb7891be call_netdevice_notifiers +EXPORT_SYMBOL vmlinux 0xbb99125c get_default_font +EXPORT_SYMBOL vmlinux 0xbba1aa37 dquot_get_state +EXPORT_SYMBOL vmlinux 0xbbad6d0a simple_transaction_read +EXPORT_SYMBOL vmlinux 0xbbaeb559 memcg_socket_limit_enabled +EXPORT_SYMBOL vmlinux 0xbbb6b412 unregister_sysctl_table +EXPORT_SYMBOL vmlinux 0xbbb75ec8 pcie_capability_clear_and_set_dword +EXPORT_SYMBOL vmlinux 0xbbd76e57 bit_wait +EXPORT_SYMBOL vmlinux 0xbbed7e7a page_symlink_inode_operations +EXPORT_SYMBOL vmlinux 0xbbf38a72 nla_reserve_nohdr +EXPORT_SYMBOL vmlinux 0xbbfd43ee audit_log_start +EXPORT_SYMBOL vmlinux 0xbc154c09 dcb_getapp +EXPORT_SYMBOL vmlinux 0xbc15f469 elv_rb_del +EXPORT_SYMBOL vmlinux 0xbc20c70f __skb_checksum_complete +EXPORT_SYMBOL vmlinux 0xbc282190 xfrm_input_unregister_afinfo +EXPORT_SYMBOL vmlinux 0xbc316de4 tty_termios_input_baud_rate +EXPORT_SYMBOL vmlinux 0xbc620daf netdev_rx_csum_fault +EXPORT_SYMBOL vmlinux 0xbc885cae unload_nls +EXPORT_SYMBOL vmlinux 0xbc9f0b5c gen_pool_add_virt +EXPORT_SYMBOL vmlinux 0xbca2f5c2 del_random_ready_callback +EXPORT_SYMBOL vmlinux 0xbcc308bb strnlen_user +EXPORT_SYMBOL vmlinux 0xbcc91739 tty_hung_up_p +EXPORT_SYMBOL vmlinux 0xbceddcad kobject_init +EXPORT_SYMBOL vmlinux 0xbcf150f9 xor_altivec_5 +EXPORT_SYMBOL vmlinux 0xbcf83282 single_release +EXPORT_SYMBOL vmlinux 0xbd03b88d skb_checksum +EXPORT_SYMBOL vmlinux 0xbd11438f vfs_iter_read +EXPORT_SYMBOL vmlinux 0xbd260d08 uart_unregister_driver +EXPORT_SYMBOL vmlinux 0xbd34df42 simple_readpage +EXPORT_SYMBOL vmlinux 0xbd42b2d0 sock_queue_err_skb +EXPORT_SYMBOL vmlinux 0xbd462b55 __kfifo_init +EXPORT_SYMBOL vmlinux 0xbd4dbe39 swiotlb_dma_supported +EXPORT_SYMBOL vmlinux 0xbd60bf18 scsi_command_normalize_sense +EXPORT_SYMBOL vmlinux 0xbd6c8492 cfb_copyarea +EXPORT_SYMBOL vmlinux 0xbd803510 tcp_parse_md5sig_option +EXPORT_SYMBOL vmlinux 0xbd9074b1 blk_finish_plug +EXPORT_SYMBOL vmlinux 0xbd9d328e tty_unlock +EXPORT_SYMBOL vmlinux 0xbda0639e mfd_cell_disable +EXPORT_SYMBOL vmlinux 0xbda26cd4 pfifo_qdisc_ops +EXPORT_SYMBOL vmlinux 0xbddcf251 blk_queue_make_request +EXPORT_SYMBOL vmlinux 0xbde3fa69 zpool_register_driver +EXPORT_SYMBOL vmlinux 0xbdf52f94 vme_unregister_driver +EXPORT_SYMBOL vmlinux 0xbe1bb112 bitmap_onto +EXPORT_SYMBOL vmlinux 0xbe433537 brioctl_set +EXPORT_SYMBOL vmlinux 0xbe47d151 kill_pid +EXPORT_SYMBOL vmlinux 0xbe5d9d47 nd_namespace_blk_validate +EXPORT_SYMBOL vmlinux 0xbe5e0a47 tcp_mtup_init +EXPORT_SYMBOL vmlinux 0xbea4faa8 sb_set_blocksize +EXPORT_SYMBOL vmlinux 0xbeb2c4a8 skb_checksum_help +EXPORT_SYMBOL vmlinux 0xbeb551d9 posix_lock_inode_wait +EXPORT_SYMBOL vmlinux 0xbecba3a8 input_mt_assign_slots +EXPORT_SYMBOL vmlinux 0xbed3b511 nosteal_pipe_buf_ops +EXPORT_SYMBOL vmlinux 0xbed3cffa elv_dispatch_add_tail +EXPORT_SYMBOL vmlinux 0xbef43296 console_conditional_schedule +EXPORT_SYMBOL vmlinux 0xbf146162 vm_event_states +EXPORT_SYMBOL vmlinux 0xbf1631c1 __dquot_free_space +EXPORT_SYMBOL vmlinux 0xbf243f91 __init_rwsem +EXPORT_SYMBOL vmlinux 0xbf5a724b send_sig +EXPORT_SYMBOL vmlinux 0xbf66099a tcp_poll +EXPORT_SYMBOL vmlinux 0xbf7d9b59 freezing_slow_path +EXPORT_SYMBOL vmlinux 0xbf7fd2f5 schedule_timeout_killable +EXPORT_SYMBOL vmlinux 0xbf8ba54a vprintk +EXPORT_SYMBOL vmlinux 0xbf925c42 idr_init +EXPORT_SYMBOL vmlinux 0xbf9bcc8d __cap_empty_set +EXPORT_SYMBOL vmlinux 0xbfabfe59 __debugger_iabr_match +EXPORT_SYMBOL vmlinux 0xbfb8b0b7 _raw_read_lock_irqsave +EXPORT_SYMBOL vmlinux 0xbfc177bc iowrite32_rep +EXPORT_SYMBOL vmlinux 0xbfec23fd rfkill_alloc +EXPORT_SYMBOL vmlinux 0xbfee3ad5 loop_unregister_transfer +EXPORT_SYMBOL vmlinux 0xc018bcf5 cros_ec_check_result +EXPORT_SYMBOL vmlinux 0xc03b3569 tcf_hash_check +EXPORT_SYMBOL vmlinux 0xc04d43b1 open_check_o_direct +EXPORT_SYMBOL vmlinux 0xc064a9bc vfs_mkdir +EXPORT_SYMBOL vmlinux 0xc073c2bd skb_orphan_partial +EXPORT_SYMBOL vmlinux 0xc0763484 rfkill_blocked +EXPORT_SYMBOL vmlinux 0xc0823e4c twl_i2c_write +EXPORT_SYMBOL vmlinux 0xc09535ef mmc_gpiod_request_cd +EXPORT_SYMBOL vmlinux 0xc0a3d105 find_next_bit +EXPORT_SYMBOL vmlinux 0xc0b46032 inet_csk_reset_keepalive_timer +EXPORT_SYMBOL vmlinux 0xc0c8e9ed crypto_sha1_update +EXPORT_SYMBOL vmlinux 0xc1028b05 dma_direct_ops +EXPORT_SYMBOL vmlinux 0xc114be26 dev_uc_init +EXPORT_SYMBOL vmlinux 0xc11a5711 led_update_brightness +EXPORT_SYMBOL vmlinux 0xc11a9544 save_mount_options +EXPORT_SYMBOL vmlinux 0xc13a10dc flex_array_alloc +EXPORT_SYMBOL vmlinux 0xc141f440 vfs_mknod +EXPORT_SYMBOL vmlinux 0xc15a44c6 memzero_explicit +EXPORT_SYMBOL vmlinux 0xc185933c xfrm_lookup +EXPORT_SYMBOL vmlinux 0xc19ce920 copy_from_iter_nocache +EXPORT_SYMBOL vmlinux 0xc1a01d6c scsi_unregister +EXPORT_SYMBOL vmlinux 0xc1b06b72 ip_ct_attach +EXPORT_SYMBOL vmlinux 0xc1bb00ef of_parse_phandle +EXPORT_SYMBOL vmlinux 0xc1c545e8 devm_clk_put +EXPORT_SYMBOL vmlinux 0xc1d8cfaf __fdget +EXPORT_SYMBOL vmlinux 0xc1e50c0b rtnl_nla_parse_ifla +EXPORT_SYMBOL vmlinux 0xc214c2d3 clear_wb_congested +EXPORT_SYMBOL vmlinux 0xc2168634 kmalloc_dma_caches +EXPORT_SYMBOL vmlinux 0xc2351482 pci_back_from_sleep +EXPORT_SYMBOL vmlinux 0xc2424641 agp3_generic_cleanup +EXPORT_SYMBOL vmlinux 0xc24271cb gen_pool_alloc +EXPORT_SYMBOL vmlinux 0xc2746d77 set_user_nice +EXPORT_SYMBOL vmlinux 0xc28fb437 lease_modify +EXPORT_SYMBOL vmlinux 0xc29bf967 strspn +EXPORT_SYMBOL vmlinux 0xc2a30c11 __ethtool_get_settings +EXPORT_SYMBOL vmlinux 0xc2bea9fa ll_rw_block +EXPORT_SYMBOL vmlinux 0xc2bf477c pci_match_id +EXPORT_SYMBOL vmlinux 0xc2c44883 of_mm_gpiochip_remove +EXPORT_SYMBOL vmlinux 0xc2d61116 get_agp_version +EXPORT_SYMBOL vmlinux 0xc2e4d23a blk_register_region +EXPORT_SYMBOL vmlinux 0xc2e587d1 reset_devices +EXPORT_SYMBOL vmlinux 0xc2e5f472 blk_cleanup_queue +EXPORT_SYMBOL vmlinux 0xc2f9c045 timespec_to_jiffies +EXPORT_SYMBOL vmlinux 0xc307cf74 vme_dma_request +EXPORT_SYMBOL vmlinux 0xc310b981 strnstr +EXPORT_SYMBOL vmlinux 0xc32db047 tty_unregister_device +EXPORT_SYMBOL vmlinux 0xc347bdda alloc_buffer_head +EXPORT_SYMBOL vmlinux 0xc34b72c8 inet_csk_reqsk_queue_drop +EXPORT_SYMBOL vmlinux 0xc34cffa0 do_splice_direct +EXPORT_SYMBOL vmlinux 0xc3544a52 kiocb_set_cancel_fn +EXPORT_SYMBOL vmlinux 0xc3618141 free_netdev +EXPORT_SYMBOL vmlinux 0xc364e132 of_root +EXPORT_SYMBOL vmlinux 0xc36624b8 rtnl_create_link +EXPORT_SYMBOL vmlinux 0xc3944b42 skb_kill_datagram +EXPORT_SYMBOL vmlinux 0xc3c2be91 mipi_dsi_packet_format_is_short +EXPORT_SYMBOL vmlinux 0xc3f5b63b revert_creds +EXPORT_SYMBOL vmlinux 0xc3fa3de4 blk_init_queue_node +EXPORT_SYMBOL vmlinux 0xc41451fe blk_queue_softirq_done +EXPORT_SYMBOL vmlinux 0xc42b0f69 lock_rename +EXPORT_SYMBOL vmlinux 0xc4374d5e skb_split +EXPORT_SYMBOL vmlinux 0xc440cd6d shrink_dcache_sb +EXPORT_SYMBOL vmlinux 0xc442009a pci_get_domain_bus_and_slot +EXPORT_SYMBOL vmlinux 0xc4564340 account_page_dirtied +EXPORT_SYMBOL vmlinux 0xc45755de find_next_zero_bit_le +EXPORT_SYMBOL vmlinux 0xc46926af pci_request_region +EXPORT_SYMBOL vmlinux 0xc46b3875 tcf_register_action +EXPORT_SYMBOL vmlinux 0xc47cdf9c _raw_write_lock_bh +EXPORT_SYMBOL vmlinux 0xc48307db lz4_decompress +EXPORT_SYMBOL vmlinux 0xc499ae1e kstrdup +EXPORT_SYMBOL vmlinux 0xc49cf7fe bitmap_startwrite +EXPORT_SYMBOL vmlinux 0xc4a8a3e0 pci_find_bus +EXPORT_SYMBOL vmlinux 0xc5213940 md_write_end +EXPORT_SYMBOL vmlinux 0xc54863fe blk_rq_map_user_iov +EXPORT_SYMBOL vmlinux 0xc550ec38 irq_to_desc +EXPORT_SYMBOL vmlinux 0xc5534d64 ioread16 +EXPORT_SYMBOL vmlinux 0xc55c2a9d inode_sb_list_lock +EXPORT_SYMBOL vmlinux 0xc5894d2e nf_register_queue_handler +EXPORT_SYMBOL vmlinux 0xc5953138 pcibios_resource_to_bus +EXPORT_SYMBOL vmlinux 0xc595a43b eth_prepare_mac_addr_change +EXPORT_SYMBOL vmlinux 0xc599a772 security_xfrm_state_delete +EXPORT_SYMBOL vmlinux 0xc5c7a361 genphy_aneg_done +EXPORT_SYMBOL vmlinux 0xc5d9c46c agp_try_unsupported_boot +EXPORT_SYMBOL vmlinux 0xc5ee0c33 devm_backlight_device_unregister +EXPORT_SYMBOL vmlinux 0xc5ee6fae dcbnl_cee_notify +EXPORT_SYMBOL vmlinux 0xc5fdef94 call_usermodehelper +EXPORT_SYMBOL vmlinux 0xc602f1bf md_reap_sync_thread +EXPORT_SYMBOL vmlinux 0xc6056a00 key_put +EXPORT_SYMBOL vmlinux 0xc62e1c1e napi_gro_flush +EXPORT_SYMBOL vmlinux 0xc631580a console_unlock +EXPORT_SYMBOL vmlinux 0xc63b7e1c blkdev_issue_flush +EXPORT_SYMBOL vmlinux 0xc65a590f write_dirty_buffer +EXPORT_SYMBOL vmlinux 0xc65abeb7 agp3_generic_sizes +EXPORT_SYMBOL vmlinux 0xc663b075 __ioremap +EXPORT_SYMBOL vmlinux 0xc666a132 crc_t10dif +EXPORT_SYMBOL vmlinux 0xc6772da2 radix_tree_lookup_slot +EXPORT_SYMBOL vmlinux 0xc69c6c2e tty_devnum +EXPORT_SYMBOL vmlinux 0xc6a3ef80 __blockdev_direct_IO +EXPORT_SYMBOL vmlinux 0xc6a62e8e generic_file_read_iter +EXPORT_SYMBOL vmlinux 0xc6c1b7d9 compat_mc_setsockopt +EXPORT_SYMBOL vmlinux 0xc6cb465a __kfifo_max_r +EXPORT_SYMBOL vmlinux 0xc6cbbc89 capable +EXPORT_SYMBOL vmlinux 0xc6d26fb6 blk_queue_unprep_rq +EXPORT_SYMBOL vmlinux 0xc6ea012f init_special_inode +EXPORT_SYMBOL vmlinux 0xc6f4bff3 scsi_eh_finish_cmd +EXPORT_SYMBOL vmlinux 0xc7018e17 skb_free_datagram_locked +EXPORT_SYMBOL vmlinux 0xc7208c3a serial8250_resume_port +EXPORT_SYMBOL vmlinux 0xc72f0b34 nd_btt_sb_checksum +EXPORT_SYMBOL vmlinux 0xc74f03a4 rwsem_wake +EXPORT_SYMBOL vmlinux 0xc7512c6e pci_platform_rom +EXPORT_SYMBOL vmlinux 0xc7563db8 twl_set_regcache_bypass +EXPORT_SYMBOL vmlinux 0xc759f6a4 vlan_dev_vlan_proto +EXPORT_SYMBOL vmlinux 0xc768de19 cpu_all_bits +EXPORT_SYMBOL vmlinux 0xc781bd9f rfkill_resume_polling +EXPORT_SYMBOL vmlinux 0xc7856a3d inet6addr_notifier_call_chain +EXPORT_SYMBOL vmlinux 0xc7865c85 of_platform_device_create +EXPORT_SYMBOL vmlinux 0xc7898275 flex_array_shrink +EXPORT_SYMBOL vmlinux 0xc7910c45 inet_peer_xrlim_allow +EXPORT_SYMBOL vmlinux 0xc7934f45 bio_copy_kern +EXPORT_SYMBOL vmlinux 0xc793b02d of_phy_register_fixed_link +EXPORT_SYMBOL vmlinux 0xc7940897 of_device_get_match_data +EXPORT_SYMBOL vmlinux 0xc79880ca max8925_set_bits +EXPORT_SYMBOL vmlinux 0xc79bcd36 dm_vcalloc +EXPORT_SYMBOL vmlinux 0xc7a0b2b9 tcp_md5_do_add +EXPORT_SYMBOL vmlinux 0xc7a4fbed rtnl_lock +EXPORT_SYMBOL vmlinux 0xc7c69c92 capable_wrt_inode_uidgid +EXPORT_SYMBOL vmlinux 0xc7cab4ac compat_tcp_getsockopt +EXPORT_SYMBOL vmlinux 0xc7cf5b06 blk_start_request +EXPORT_SYMBOL vmlinux 0xc7d94b88 devm_devfreq_unregister_opp_notifier +EXPORT_SYMBOL vmlinux 0xc7ef9cb2 mmc_add_host +EXPORT_SYMBOL vmlinux 0xc7fccc91 inet_getname +EXPORT_SYMBOL vmlinux 0xc815ecf3 __destroy_inode +EXPORT_SYMBOL vmlinux 0xc81f343c mmc_fixup_device +EXPORT_SYMBOL vmlinux 0xc831c6a6 kobject_get +EXPORT_SYMBOL vmlinux 0xc83b4d5b posix_acl_from_mode +EXPORT_SYMBOL vmlinux 0xc83f5cfc cmdline_parts_find +EXPORT_SYMBOL vmlinux 0xc8411d5a PDE_DATA +EXPORT_SYMBOL vmlinux 0xc8475c06 bitmap_endwrite +EXPORT_SYMBOL vmlinux 0xc84a0a7e seq_hlist_start_rcu +EXPORT_SYMBOL vmlinux 0xc84a434c mmc_gpio_get_cd +EXPORT_SYMBOL vmlinux 0xc8571bcb idr_for_each +EXPORT_SYMBOL vmlinux 0xc862e9cd blk_mq_add_to_requeue_list +EXPORT_SYMBOL vmlinux 0xc872fd85 in6addr_interfacelocal_allnodes +EXPORT_SYMBOL vmlinux 0xc8893cd4 forget_all_cached_acls +EXPORT_SYMBOL vmlinux 0xc890c008 zlib_deflateEnd +EXPORT_SYMBOL vmlinux 0xc897c382 sg_init_table +EXPORT_SYMBOL vmlinux 0xc8a147f7 locks_remove_posix +EXPORT_SYMBOL vmlinux 0xc8a26788 of_device_unregister +EXPORT_SYMBOL vmlinux 0xc8a91f5b cpumask_local_spread +EXPORT_SYMBOL vmlinux 0xc8b09f6f inet_sk_rebuild_header +EXPORT_SYMBOL vmlinux 0xc8b57c27 autoremove_wake_function +EXPORT_SYMBOL vmlinux 0xc8d5933e __register_chrdev +EXPORT_SYMBOL vmlinux 0xc8fd42dd blk_queue_stack_limits +EXPORT_SYMBOL vmlinux 0xc8ffe3fa ppp_input +EXPORT_SYMBOL vmlinux 0xc900507b tty_register_ldisc +EXPORT_SYMBOL vmlinux 0xc9071a85 mipi_dsi_dcs_set_tear_on +EXPORT_SYMBOL vmlinux 0xc911b9d5 eth_get_headlen +EXPORT_SYMBOL vmlinux 0xc92d6663 simple_link +EXPORT_SYMBOL vmlinux 0xc93fbc54 wait_for_completion_io +EXPORT_SYMBOL vmlinux 0xc942bb5c set_page_dirty_lock +EXPORT_SYMBOL vmlinux 0xc9453345 iter_file_splice_write +EXPORT_SYMBOL vmlinux 0xc946057a pci_iomap +EXPORT_SYMBOL vmlinux 0xc95308a2 pci_dev_get +EXPORT_SYMBOL vmlinux 0xc9634df9 in6addr_linklocal_allrouters +EXPORT_SYMBOL vmlinux 0xc9682ff2 block_write_end +EXPORT_SYMBOL vmlinux 0xc97120f1 agp_generic_mask_memory +EXPORT_SYMBOL vmlinux 0xc978479a xz_dec_run +EXPORT_SYMBOL vmlinux 0xc97ff33b netlink_net_capable +EXPORT_SYMBOL vmlinux 0xc9810c5b __register_binfmt +EXPORT_SYMBOL vmlinux 0xc99e2a55 twl_rev +EXPORT_SYMBOL vmlinux 0xc99f422d tty_hangup +EXPORT_SYMBOL vmlinux 0xc9b48c52 t10_pi_type1_ip +EXPORT_SYMBOL vmlinux 0xc9b841c6 generic_file_write_iter +EXPORT_SYMBOL vmlinux 0xc9d8c5d8 pagecache_write_begin +EXPORT_SYMBOL vmlinux 0xc9e03f69 nvdimm_bus_lock +EXPORT_SYMBOL vmlinux 0xc9e0cb85 simple_dir_inode_operations +EXPORT_SYMBOL vmlinux 0xc9e1aca1 sk_prot_clear_portaddr_nulls +EXPORT_SYMBOL vmlinux 0xc9e52fc7 sched_autogroup_create_attach +EXPORT_SYMBOL vmlinux 0xca086622 jbd2_trans_will_send_data_barrier +EXPORT_SYMBOL vmlinux 0xca0f4667 readlink_copy +EXPORT_SYMBOL vmlinux 0xca1b8256 scsi_remove_device +EXPORT_SYMBOL vmlinux 0xca2b1cd6 ida_pre_get +EXPORT_SYMBOL vmlinux 0xca3b28c6 store_vr_state +EXPORT_SYMBOL vmlinux 0xca401694 set_page_dirty +EXPORT_SYMBOL vmlinux 0xca5ee09a vme_free_consistent +EXPORT_SYMBOL vmlinux 0xca636e47 blk_queue_io_opt +EXPORT_SYMBOL vmlinux 0xca69171a ps2_handle_ack +EXPORT_SYMBOL vmlinux 0xca82c732 tcp_create_openreq_child +EXPORT_SYMBOL vmlinux 0xca832efe kmalloc_order +EXPORT_SYMBOL vmlinux 0xca9360b5 rb_next +EXPORT_SYMBOL vmlinux 0xca9d3e88 blk_queue_segment_boundary +EXPORT_SYMBOL vmlinux 0xcaa3e7f4 dev_mc_unsync +EXPORT_SYMBOL vmlinux 0xcacc637f address_space_init_once +EXPORT_SYMBOL vmlinux 0xcace6297 idr_is_empty +EXPORT_SYMBOL vmlinux 0xcaf2c603 scsi_sd_pm_domain +EXPORT_SYMBOL vmlinux 0xcb0288ea ledtrig_cpu +EXPORT_SYMBOL vmlinux 0xcb0461a8 netdev_notice +EXPORT_SYMBOL vmlinux 0xcb8a8059 xfrm_state_delete +EXPORT_SYMBOL vmlinux 0xcb906439 ipv6_dev_get_saddr +EXPORT_SYMBOL vmlinux 0xcb936989 hdmi_infoframe_pack +EXPORT_SYMBOL vmlinux 0xcb999708 generic_end_io_acct +EXPORT_SYMBOL vmlinux 0xcba3d084 netlink_ack +EXPORT_SYMBOL vmlinux 0xcbb07d89 kern_path_create +EXPORT_SYMBOL vmlinux 0xcbb09bd2 of_graph_get_port_by_id +EXPORT_SYMBOL vmlinux 0xcbb19304 inode_owner_or_capable +EXPORT_SYMBOL vmlinux 0xcbbe323f neigh_seq_start +EXPORT_SYMBOL vmlinux 0xcbbf0a6f audit_log_task_context +EXPORT_SYMBOL vmlinux 0xcbc9557f unregister_sysrq_key +EXPORT_SYMBOL vmlinux 0xcbd07ad1 security_old_inode_init_security +EXPORT_SYMBOL vmlinux 0xcbf055a9 proc_remove +EXPORT_SYMBOL vmlinux 0xcbfefb1b locks_mandatory_area +EXPORT_SYMBOL vmlinux 0xcc17504d _raw_read_unlock_irqrestore +EXPORT_SYMBOL vmlinux 0xcc248d26 serial8250_suspend_port +EXPORT_SYMBOL vmlinux 0xcc27cc01 sock_no_sendmsg +EXPORT_SYMBOL vmlinux 0xcc31760d __blk_mq_end_request +EXPORT_SYMBOL vmlinux 0xcc47bb92 blk_get_backing_dev_info +EXPORT_SYMBOL vmlinux 0xcc5005fe msleep_interruptible +EXPORT_SYMBOL vmlinux 0xcc63225d pci_bus_find_capability +EXPORT_SYMBOL vmlinux 0xcc68ca88 devfreq_remove_governor +EXPORT_SYMBOL vmlinux 0xcc70cc09 __skb_gso_segment +EXPORT_SYMBOL vmlinux 0xcc7745e1 kmalloc_caches +EXPORT_SYMBOL vmlinux 0xcc778cc3 __tracepoint_fence_annotate_wait_on +EXPORT_SYMBOL vmlinux 0xcc8a7b13 locks_copy_lock +EXPORT_SYMBOL vmlinux 0xcc959ddc generic_pipe_buf_confirm +EXPORT_SYMBOL vmlinux 0xccb69e4f mac_find_mode +EXPORT_SYMBOL vmlinux 0xccba56fa phy_start_interrupts +EXPORT_SYMBOL vmlinux 0xccba95e0 sock_recvmsg +EXPORT_SYMBOL vmlinux 0xccbe5cc0 swiotlb_sync_sg_for_cpu +EXPORT_SYMBOL vmlinux 0xccc08134 nonseekable_open +EXPORT_SYMBOL vmlinux 0xccc21f5e input_get_new_minor +EXPORT_SYMBOL vmlinux 0xccc2ebdb of_find_mipi_dsi_device_by_node +EXPORT_SYMBOL vmlinux 0xcd04d667 mb_cache_entry_find_first +EXPORT_SYMBOL vmlinux 0xcd0529c7 _raw_spin_lock_irq +EXPORT_SYMBOL vmlinux 0xcd20667a kstrtou16_from_user +EXPORT_SYMBOL vmlinux 0xcd279169 nla_find +EXPORT_SYMBOL vmlinux 0xcd53e265 compat_nf_setsockopt +EXPORT_SYMBOL vmlinux 0xcd57f7b0 radix_tree_tag_get +EXPORT_SYMBOL vmlinux 0xcd5ca7e4 bio_split +EXPORT_SYMBOL vmlinux 0xcd610b3d __neigh_set_probe_once +EXPORT_SYMBOL vmlinux 0xcd7ede2a seqno_fence_ops +EXPORT_SYMBOL vmlinux 0xcd86c87f __cond_resched_lock +EXPORT_SYMBOL vmlinux 0xcd88c8bc dcbnl_ieee_notify +EXPORT_SYMBOL vmlinux 0xcd8d36f4 flow_get_u32_src +EXPORT_SYMBOL vmlinux 0xcd90f0d3 elevator_init +EXPORT_SYMBOL vmlinux 0xcdb160b7 mutex_lock +EXPORT_SYMBOL vmlinux 0xcdbf4da8 of_find_i2c_adapter_by_node +EXPORT_SYMBOL vmlinux 0xcdc39c9e security_ismaclabel +EXPORT_SYMBOL vmlinux 0xcdd252e1 ipv6_getsockopt +EXPORT_SYMBOL vmlinux 0xcdd386f1 param_get_long +EXPORT_SYMBOL vmlinux 0xcde218fd blk_integrity_register +EXPORT_SYMBOL vmlinux 0xcdf2bb3d tcp_disconnect +EXPORT_SYMBOL vmlinux 0xce0d08d3 ip_route_input_noref +EXPORT_SYMBOL vmlinux 0xce19bd80 devm_kvasprintf +EXPORT_SYMBOL vmlinux 0xce208d12 tty_check_change +EXPORT_SYMBOL vmlinux 0xce21507f of_find_property +EXPORT_SYMBOL vmlinux 0xce22d840 skb_page_frag_refill +EXPORT_SYMBOL vmlinux 0xce2840e7 irq_set_irq_wake +EXPORT_SYMBOL vmlinux 0xce3b3f09 profile_pc +EXPORT_SYMBOL vmlinux 0xce46db77 __netlink_ns_capable +EXPORT_SYMBOL vmlinux 0xce4e47b6 __kfifo_skip_r +EXPORT_SYMBOL vmlinux 0xce5ac24f zlib_inflate_workspacesize +EXPORT_SYMBOL vmlinux 0xce6fb851 dma_common_mmap +EXPORT_SYMBOL vmlinux 0xce7850e1 crc32_le_shift +EXPORT_SYMBOL vmlinux 0xce97442c of_find_node_by_phandle +EXPORT_SYMBOL vmlinux 0xce9c647a bdget_disk +EXPORT_SYMBOL vmlinux 0xcea0e98f copy_page_from_iter +EXPORT_SYMBOL vmlinux 0xceab02f4 dentry_unhash +EXPORT_SYMBOL vmlinux 0xceab0311 strchrnul +EXPORT_SYMBOL vmlinux 0xceae504f cmdline_parts_free +EXPORT_SYMBOL vmlinux 0xcec446a2 tag_pages_for_writeback +EXPORT_SYMBOL vmlinux 0xced777cb proc_dointvec_minmax +EXPORT_SYMBOL vmlinux 0xceec1430 mipi_dsi_attach +EXPORT_SYMBOL vmlinux 0xcef51982 kstrtou16 +EXPORT_SYMBOL vmlinux 0xcefa2417 of_parse_phandle_with_args +EXPORT_SYMBOL vmlinux 0xcefcd99a serial8250_unregister_port +EXPORT_SYMBOL vmlinux 0xcf138e6f neigh_resolve_output +EXPORT_SYMBOL vmlinux 0xcf1aad56 devm_ioremap_nocache +EXPORT_SYMBOL vmlinux 0xcf71a33e dev_load +EXPORT_SYMBOL vmlinux 0xcfde2c81 gnet_stats_start_copy +EXPORT_SYMBOL vmlinux 0xcfe1803f cpufreq_power_cooling_register +EXPORT_SYMBOL vmlinux 0xcff9e135 agp_generic_enable +EXPORT_SYMBOL vmlinux 0xd02673db pci_wait_for_pending_transaction +EXPORT_SYMBOL vmlinux 0xd0720a17 on_each_cpu_cond +EXPORT_SYMBOL vmlinux 0xd07b0f23 netdev_change_features +EXPORT_SYMBOL vmlinux 0xd07db318 devfreq_remove_device +EXPORT_SYMBOL vmlinux 0xd08f6239 sg_copy_from_buffer +EXPORT_SYMBOL vmlinux 0xd0902f58 done_path_create +EXPORT_SYMBOL vmlinux 0xd09b0199 fence_context_alloc +EXPORT_SYMBOL vmlinux 0xd0a2847c sha_init +EXPORT_SYMBOL vmlinux 0xd0a285dd phy_drivers_unregister +EXPORT_SYMBOL vmlinux 0xd0a7cfe1 simple_rmdir +EXPORT_SYMBOL vmlinux 0xd0a91bab skip_spaces +EXPORT_SYMBOL vmlinux 0xd0bd5d3a __dst_destroy_metrics_generic +EXPORT_SYMBOL vmlinux 0xd0cb68ee inet_sk_rx_dst_set +EXPORT_SYMBOL vmlinux 0xd0cf78d5 ndo_dflt_fdb_dump +EXPORT_SYMBOL vmlinux 0xd0ed5742 dev_uc_unsync +EXPORT_SYMBOL vmlinux 0xd0ee38b8 schedule_timeout_uninterruptible +EXPORT_SYMBOL vmlinux 0xd0f36f0d audit_log_format +EXPORT_SYMBOL vmlinux 0xd0f70b0c ip_cmsg_recv_offset +EXPORT_SYMBOL vmlinux 0xd0fb7cd4 __tasklet_hi_schedule_first +EXPORT_SYMBOL vmlinux 0xd0fef3b2 agp_free_key +EXPORT_SYMBOL vmlinux 0xd10d0872 elv_register_queue +EXPORT_SYMBOL vmlinux 0xd11f29b0 kernel_sendmsg +EXPORT_SYMBOL vmlinux 0xd1816f32 frontswap_writethrough +EXPORT_SYMBOL vmlinux 0xd1867917 compat_sock_common_getsockopt +EXPORT_SYMBOL vmlinux 0xd1876698 dcache_dir_close +EXPORT_SYMBOL vmlinux 0xd19d9e71 blk_integrity_compare +EXPORT_SYMBOL vmlinux 0xd1bd12cf tcp_v4_mtu_reduced +EXPORT_SYMBOL vmlinux 0xd1bebeec ipv4_specific +EXPORT_SYMBOL vmlinux 0xd1d7731f __sk_backlog_rcv +EXPORT_SYMBOL vmlinux 0xd1d87e92 scsi_mlreturn_string +EXPORT_SYMBOL vmlinux 0xd1e984d1 bio_clone_fast +EXPORT_SYMBOL vmlinux 0xd220cf8a jiffies_to_timespec +EXPORT_SYMBOL vmlinux 0xd2254d79 neigh_direct_output +EXPORT_SYMBOL vmlinux 0xd22c8392 phy_register_fixup_for_id +EXPORT_SYMBOL vmlinux 0xd2308f88 tcp_check_req +EXPORT_SYMBOL vmlinux 0xd230a5a8 secpath_dup +EXPORT_SYMBOL vmlinux 0xd24929ac sock_common_setsockopt +EXPORT_SYMBOL vmlinux 0xd251d7b0 security_socket_getpeersec_dgram +EXPORT_SYMBOL vmlinux 0xd254a4a0 clkdev_alloc +EXPORT_SYMBOL vmlinux 0xd2555f19 jiffies_64_to_clock_t +EXPORT_SYMBOL vmlinux 0xd25d4f74 console_blank_hook +EXPORT_SYMBOL vmlinux 0xd25daec5 netif_napi_del +EXPORT_SYMBOL vmlinux 0xd264cedc ip_generic_getfrag +EXPORT_SYMBOL vmlinux 0xd266133e unregister_shrinker +EXPORT_SYMBOL vmlinux 0xd2787c59 mount_bdev +EXPORT_SYMBOL vmlinux 0xd27b25dd blk_check_plugged +EXPORT_SYMBOL vmlinux 0xd28f304e skb_vlan_push +EXPORT_SYMBOL vmlinux 0xd29c99cb genphy_setup_forced +EXPORT_SYMBOL vmlinux 0xd2a21db1 key_task_permission +EXPORT_SYMBOL vmlinux 0xd2b09ce5 __kmalloc +EXPORT_SYMBOL vmlinux 0xd2b42121 tty_insert_flip_string_fixed_flag +EXPORT_SYMBOL vmlinux 0xd2da1048 register_netdevice_notifier +EXPORT_SYMBOL vmlinux 0xd31ccb06 of_machine_is_compatible +EXPORT_SYMBOL vmlinux 0xd32bc30f key_alloc +EXPORT_SYMBOL vmlinux 0xd3350a7d sock_no_recvmsg +EXPORT_SYMBOL vmlinux 0xd355f32f mipi_dsi_set_maximum_return_packet_size +EXPORT_SYMBOL vmlinux 0xd35935f3 dev_mc_del_global +EXPORT_SYMBOL vmlinux 0xd369be40 set_device_ro +EXPORT_SYMBOL vmlinux 0xd36e3d59 prandom_bytes_state +EXPORT_SYMBOL vmlinux 0xd372e3a7 xfrm6_rcv_cb +EXPORT_SYMBOL vmlinux 0xd3733e26 vme_irq_request +EXPORT_SYMBOL vmlinux 0xd37ef470 d_obtain_root +EXPORT_SYMBOL vmlinux 0xd3af291a blk_mq_tag_to_rq +EXPORT_SYMBOL vmlinux 0xd3bf157a __test_set_page_writeback +EXPORT_SYMBOL vmlinux 0xd3e9760b jbd2_journal_invalidatepage +EXPORT_SYMBOL vmlinux 0xd3fc7308 netdev_crit +EXPORT_SYMBOL vmlinux 0xd427c672 agp_allocate_memory +EXPORT_SYMBOL vmlinux 0xd436152c genlmsg_put +EXPORT_SYMBOL vmlinux 0xd44b7e21 to_tm +EXPORT_SYMBOL vmlinux 0xd45cc6ca bin2hex +EXPORT_SYMBOL vmlinux 0xd48ec2cb twl6040_clear_bits +EXPORT_SYMBOL vmlinux 0xd4b30a39 module_refcount +EXPORT_SYMBOL vmlinux 0xd4cfca53 netlink_set_err +EXPORT_SYMBOL vmlinux 0xd4d86a45 phy_ethtool_sset +EXPORT_SYMBOL vmlinux 0xd50e41a3 pneigh_enqueue +EXPORT_SYMBOL vmlinux 0xd5218e88 blk_alloc_queue +EXPORT_SYMBOL vmlinux 0xd5278789 param_get_uint +EXPORT_SYMBOL vmlinux 0xd548af71 tcp_init_xmit_timers +EXPORT_SYMBOL vmlinux 0xd54f2702 __kfree_skb +EXPORT_SYMBOL vmlinux 0xd54f41ce try_to_del_timer_sync +EXPORT_SYMBOL vmlinux 0xd55f1ec6 mipi_dsi_dcs_soft_reset +EXPORT_SYMBOL vmlinux 0xd5b3d2cc try_to_free_buffers +EXPORT_SYMBOL vmlinux 0xd5c04602 uart_match_port +EXPORT_SYMBOL vmlinux 0xd5de65e1 __frontswap_store +EXPORT_SYMBOL vmlinux 0xd5e2ef94 kernel_setsockopt +EXPORT_SYMBOL vmlinux 0xd616683a ecryptfs_fill_auth_tok +EXPORT_SYMBOL vmlinux 0xd62c833f schedule_timeout +EXPORT_SYMBOL vmlinux 0xd62ff5af netdev_master_upper_dev_get_rcu +EXPORT_SYMBOL vmlinux 0xd648e564 fb_match_mode +EXPORT_SYMBOL vmlinux 0xd655f48e scsi_device_get +EXPORT_SYMBOL vmlinux 0xd65ae9b1 pci_clear_mwi +EXPORT_SYMBOL vmlinux 0xd6798c76 simple_lookup +EXPORT_SYMBOL vmlinux 0xd688716b dm_kcopyd_client_create +EXPORT_SYMBOL vmlinux 0xd68ff00d xfrm4_rcv_cb +EXPORT_SYMBOL vmlinux 0xd6af9b7e iw_handler_set_thrspy +EXPORT_SYMBOL vmlinux 0xd6b89bdb mmc_erase_group_aligned +EXPORT_SYMBOL vmlinux 0xd6cc613c find_get_entry +EXPORT_SYMBOL vmlinux 0xd6d63e9d lg_local_lock_cpu +EXPORT_SYMBOL vmlinux 0xd6d73274 tcp_openreq_init_rwin +EXPORT_SYMBOL vmlinux 0xd6ddc4e9 sock_i_ino +EXPORT_SYMBOL vmlinux 0xd6ee688f vmalloc +EXPORT_SYMBOL vmlinux 0xd6fd4053 __arch_hweight32 +EXPORT_SYMBOL vmlinux 0xd735e72d lru_cache_add_file +EXPORT_SYMBOL vmlinux 0xd75c79df smp_call_function +EXPORT_SYMBOL vmlinux 0xd75f42b2 blk_limits_io_opt +EXPORT_SYMBOL vmlinux 0xd761a383 ioremap_prot +EXPORT_SYMBOL vmlinux 0xd766bba8 seq_read +EXPORT_SYMBOL vmlinux 0xd76781ec d_instantiate_no_diralias +EXPORT_SYMBOL vmlinux 0xd775d9a0 mipi_dsi_dcs_set_display_on +EXPORT_SYMBOL vmlinux 0xd77f55f6 pci_get_subsys +EXPORT_SYMBOL vmlinux 0xd781358b xfrm_policy_alloc +EXPORT_SYMBOL vmlinux 0xd78e6f89 security_skb_classify_flow +EXPORT_SYMBOL vmlinux 0xd7bbc6df inode_add_bytes +EXPORT_SYMBOL vmlinux 0xd7cac0c1 pcie_get_readrq +EXPORT_SYMBOL vmlinux 0xd7cb2223 __devm_release_region +EXPORT_SYMBOL vmlinux 0xd7d415c4 blk_mq_free_tag_set +EXPORT_SYMBOL vmlinux 0xd7d7e8d3 param_ops_ullong +EXPORT_SYMBOL vmlinux 0xd7e56a4e simple_strtoll +EXPORT_SYMBOL vmlinux 0xd7ea7094 nf_unregister_queue_handler +EXPORT_SYMBOL vmlinux 0xd7f2aa82 dump_page +EXPORT_SYMBOL vmlinux 0xd8057894 udp_sendmsg +EXPORT_SYMBOL vmlinux 0xd80b6b90 mmc_can_trim +EXPORT_SYMBOL vmlinux 0xd816a8c8 km_report +EXPORT_SYMBOL vmlinux 0xd834d7fc pci_get_slot +EXPORT_SYMBOL vmlinux 0xd84e8741 bio_alloc_pages +EXPORT_SYMBOL vmlinux 0xd84ed910 __ip4_datagram_connect +EXPORT_SYMBOL vmlinux 0xd8637686 pci_bus_write_config_word +EXPORT_SYMBOL vmlinux 0xd89692a3 nla_reserve +EXPORT_SYMBOL vmlinux 0xd89da37f movable_zone +EXPORT_SYMBOL vmlinux 0xd89fce47 read_cache_pages +EXPORT_SYMBOL vmlinux 0xd8a994eb scsi_extd_sense_format +EXPORT_SYMBOL vmlinux 0xd8ded085 radix_tree_maybe_preload +EXPORT_SYMBOL vmlinux 0xd8e484f0 register_chrdev_region +EXPORT_SYMBOL vmlinux 0xd8e486f9 page_follow_link_light +EXPORT_SYMBOL vmlinux 0xd8fe32d4 freeze_super +EXPORT_SYMBOL vmlinux 0xd8ff849e migrate_page +EXPORT_SYMBOL vmlinux 0xd918861b max8998_write_reg +EXPORT_SYMBOL vmlinux 0xd9275b9a ipv6_chk_prefix +EXPORT_SYMBOL vmlinux 0xd9335104 devm_ioport_map +EXPORT_SYMBOL vmlinux 0xd94153b6 blk_mq_unique_tag +EXPORT_SYMBOL vmlinux 0xd9471362 bio_integrity_endio +EXPORT_SYMBOL vmlinux 0xd985dc99 mempool_free_pages +EXPORT_SYMBOL vmlinux 0xd9871390 dev_mc_add_excl +EXPORT_SYMBOL vmlinux 0xd992b661 prepare_kernel_cred +EXPORT_SYMBOL vmlinux 0xd9bac924 tty_termios_copy_hw +EXPORT_SYMBOL vmlinux 0xd9c3efbd dma_pool_create +EXPORT_SYMBOL vmlinux 0xd9d8fd16 register_restart_handler +EXPORT_SYMBOL vmlinux 0xd9f1d55c input_inject_event +EXPORT_SYMBOL vmlinux 0xd9fb8fe1 tcp_splice_read +EXPORT_SYMBOL vmlinux 0xda1682c0 tcp_child_process +EXPORT_SYMBOL vmlinux 0xda3d10a8 security_tun_dev_open +EXPORT_SYMBOL vmlinux 0xda437537 __blk_run_queue +EXPORT_SYMBOL vmlinux 0xda4619a7 sock_diag_put_filterinfo +EXPORT_SYMBOL vmlinux 0xda7ca6cb fb_mode_is_equal +EXPORT_SYMBOL vmlinux 0xda8af7ad fb_find_nearest_mode +EXPORT_SYMBOL vmlinux 0xda9824e5 skb_copy_datagram_from_iter +EXPORT_SYMBOL vmlinux 0xdaa92218 __qdisc_calculate_pkt_len +EXPORT_SYMBOL vmlinux 0xdab40447 copy_from_iter +EXPORT_SYMBOL vmlinux 0xdabc1ea8 fsl_lbc_find +EXPORT_SYMBOL vmlinux 0xdabd9cd8 swiotlb_alloc_coherent +EXPORT_SYMBOL vmlinux 0xdac4913a bitmap_allocate_region +EXPORT_SYMBOL vmlinux 0xdac545b9 lockref_get_or_lock +EXPORT_SYMBOL vmlinux 0xdad2dacf __block_page_mkwrite +EXPORT_SYMBOL vmlinux 0xdad2fd75 gnet_stats_start_copy_compat +EXPORT_SYMBOL vmlinux 0xdad7adff dqstats +EXPORT_SYMBOL vmlinux 0xdaea6e0d mfd_clone_cell +EXPORT_SYMBOL vmlinux 0xdaede13b remove_proc_subtree +EXPORT_SYMBOL vmlinux 0xdafc0a50 param_set_bint +EXPORT_SYMBOL vmlinux 0xdb01198e fsl_upm_find +EXPORT_SYMBOL vmlinux 0xdb0f8727 dev_change_carrier +EXPORT_SYMBOL vmlinux 0xdb17566e d_drop +EXPORT_SYMBOL vmlinux 0xdb1c25ce dev_set_mac_address +EXPORT_SYMBOL vmlinux 0xdb342ad2 genphy_read_status +EXPORT_SYMBOL vmlinux 0xdb399e56 inet6_unregister_icmp_sender +EXPORT_SYMBOL vmlinux 0xdb3bcca6 cancel_delayed_work +EXPORT_SYMBOL vmlinux 0xdb4395ce agp_find_bridge +EXPORT_SYMBOL vmlinux 0xdb68bbad rfkill_destroy +EXPORT_SYMBOL vmlinux 0xdb70b1bf clear_page_dirty_for_io +EXPORT_SYMBOL vmlinux 0xdb760f52 __kfifo_free +EXPORT_SYMBOL vmlinux 0xdb7cd551 netif_tx_stop_all_queues +EXPORT_SYMBOL vmlinux 0xdbad63dd t10_pi_type1_crc +EXPORT_SYMBOL vmlinux 0xdbadffcc touch_atime +EXPORT_SYMBOL vmlinux 0xdbf83c35 free_user_ns +EXPORT_SYMBOL vmlinux 0xdc047fc4 scsi_dev_info_list_add_keyed +EXPORT_SYMBOL vmlinux 0xdc0fd0e3 inode_init_owner +EXPORT_SYMBOL vmlinux 0xdc14eda7 pci_pci_problems +EXPORT_SYMBOL vmlinux 0xdc192614 follow_up +EXPORT_SYMBOL vmlinux 0xdc1cca15 cdrom_release +EXPORT_SYMBOL vmlinux 0xdc23f23e genl_notify +EXPORT_SYMBOL vmlinux 0xdc257729 bfifo_qdisc_ops +EXPORT_SYMBOL vmlinux 0xdc3c41a8 __crypto_memneq +EXPORT_SYMBOL vmlinux 0xdc3fcbc9 __sw_hweight8 +EXPORT_SYMBOL vmlinux 0xdc512134 backlight_register_notifier +EXPORT_SYMBOL vmlinux 0xdc93b468 tcp_rcv_established +EXPORT_SYMBOL vmlinux 0xdc9498dd down +EXPORT_SYMBOL vmlinux 0xdc9f5a20 of_phy_attach +EXPORT_SYMBOL vmlinux 0xdcb0349b sys_close +EXPORT_SYMBOL vmlinux 0xdcb764ad memset +EXPORT_SYMBOL vmlinux 0xdcba014b of_phy_is_fixed_link +EXPORT_SYMBOL vmlinux 0xdccc0c88 of_graph_get_remote_port_parent +EXPORT_SYMBOL vmlinux 0xdcd07ea4 clk_add_alias +EXPORT_SYMBOL vmlinux 0xdcf1da1f register_qdisc +EXPORT_SYMBOL vmlinux 0xdcf6f75e fsync_bdev +EXPORT_SYMBOL vmlinux 0xdcff3dd9 user_revoke +EXPORT_SYMBOL vmlinux 0xdd0799ce noop_llseek +EXPORT_SYMBOL vmlinux 0xdd094b85 dev_uc_add +EXPORT_SYMBOL vmlinux 0xdd12f7ae serio_unregister_driver +EXPORT_SYMBOL vmlinux 0xdd5d5e71 phy_register_fixup_for_uid +EXPORT_SYMBOL vmlinux 0xdd61d73c sock_setsockopt +EXPORT_SYMBOL vmlinux 0xdd635f0a vfs_symlink +EXPORT_SYMBOL vmlinux 0xdd64b7f1 param_set_copystring +EXPORT_SYMBOL vmlinux 0xdd809ef3 max8925_reg_write +EXPORT_SYMBOL vmlinux 0xdd8ec5c4 dcb_ieee_setapp +EXPORT_SYMBOL vmlinux 0xdd9030af current_stack_pointer +EXPORT_SYMBOL vmlinux 0xdd955144 __debugger +EXPORT_SYMBOL vmlinux 0xdd98ff0a bdi_init +EXPORT_SYMBOL vmlinux 0xdd9c6db9 swiotlb_unmap_sg +EXPORT_SYMBOL vmlinux 0xdda65b66 netif_carrier_off +EXPORT_SYMBOL vmlinux 0xddb3769b lockref_mark_dead +EXPORT_SYMBOL vmlinux 0xddf0c66b fget +EXPORT_SYMBOL vmlinux 0xde02ce4d sk_filter +EXPORT_SYMBOL vmlinux 0xde1a8cea dquot_quotactl_ops +EXPORT_SYMBOL vmlinux 0xde37fc51 tty_flip_buffer_push +EXPORT_SYMBOL vmlinux 0xde3a7569 input_register_handle +EXPORT_SYMBOL vmlinux 0xde48e9ca _raw_spin_lock +EXPORT_SYMBOL vmlinux 0xde6151db tcp_memory_allocated +EXPORT_SYMBOL vmlinux 0xde721545 xfrm_policy_bysel_ctx +EXPORT_SYMBOL vmlinux 0xde91448c load_vr_state +EXPORT_SYMBOL vmlinux 0xde934d25 neigh_sysctl_unregister +EXPORT_SYMBOL vmlinux 0xde9360ba totalram_pages +EXPORT_SYMBOL vmlinux 0xde9b17ed agp3_generic_fetch_size +EXPORT_SYMBOL vmlinux 0xde9fc050 machine_id +EXPORT_SYMBOL vmlinux 0xdeb4878c copy_strings_kernel +EXPORT_SYMBOL vmlinux 0xdeccc592 ip_mc_leave_group +EXPORT_SYMBOL vmlinux 0xdee8917c netpoll_send_udp +EXPORT_SYMBOL vmlinux 0xdef7ce60 tcf_exts_validate +EXPORT_SYMBOL vmlinux 0xdf2c2742 rb_last +EXPORT_SYMBOL vmlinux 0xdf401378 neigh_parms_alloc +EXPORT_SYMBOL vmlinux 0xdf50aa1c scsi_report_opcode +EXPORT_SYMBOL vmlinux 0xdf54a8f7 netlink_unregister_notifier +EXPORT_SYMBOL vmlinux 0xdf60cc27 __print_symbol +EXPORT_SYMBOL vmlinux 0xdf71317b security_inode_init_security +EXPORT_SYMBOL vmlinux 0xdf716ebe xfrm_policy_delete +EXPORT_SYMBOL vmlinux 0xdf9147f8 vme_new_dma_list +EXPORT_SYMBOL vmlinux 0xdf929370 fs_overflowgid +EXPORT_SYMBOL vmlinux 0xdf9d9d7c kill_block_super +EXPORT_SYMBOL vmlinux 0xdfbb7608 sock_from_file +EXPORT_SYMBOL vmlinux 0xdfc2d838 __blkdev_reread_part +EXPORT_SYMBOL vmlinux 0xdfd74873 agp_create_memory +EXPORT_SYMBOL vmlinux 0xdfe513e0 key_type_keyring +EXPORT_SYMBOL vmlinux 0xdff905e5 vme_slave_free +EXPORT_SYMBOL vmlinux 0xe0024a4b sk_stop_timer +EXPORT_SYMBOL vmlinux 0xe003c51e iov_iter_single_seg_count +EXPORT_SYMBOL vmlinux 0xe010557d udp6_csum_init +EXPORT_SYMBOL vmlinux 0xe0109eb4 cdev_del +EXPORT_SYMBOL vmlinux 0xe013b798 fb_find_mode +EXPORT_SYMBOL vmlinux 0xe0157b5a __vlan_find_dev_deep_rcu +EXPORT_SYMBOL vmlinux 0xe01e4d23 inet_shutdown +EXPORT_SYMBOL vmlinux 0xe01ed833 clk_register_clkdevs +EXPORT_SYMBOL vmlinux 0xe04f69b7 tcp_v4_conn_request +EXPORT_SYMBOL vmlinux 0xe04f7caa dm_read_arg_group +EXPORT_SYMBOL vmlinux 0xe06141e9 security_sk_clone +EXPORT_SYMBOL vmlinux 0xe075d6eb iter_div_u64_rem +EXPORT_SYMBOL vmlinux 0xe07744f7 max8925_reg_read +EXPORT_SYMBOL vmlinux 0xe083e246 gen_pool_first_fit_order_align +EXPORT_SYMBOL vmlinux 0xe0b13336 argv_free +EXPORT_SYMBOL vmlinux 0xe0cb477a of_scan_pci_bridge +EXPORT_SYMBOL vmlinux 0xe0d55288 jbd2_journal_forget +EXPORT_SYMBOL vmlinux 0xe0ddb34f csum_and_copy_from_iter +EXPORT_SYMBOL vmlinux 0xe1042e2b tty_port_destroy +EXPORT_SYMBOL vmlinux 0xe113bbbc csum_partial +EXPORT_SYMBOL vmlinux 0xe1382a0e of_find_net_device_by_node +EXPORT_SYMBOL vmlinux 0xe13c81b8 seq_path +EXPORT_SYMBOL vmlinux 0xe16b4971 i2c_smbus_write_block_data +EXPORT_SYMBOL vmlinux 0xe16dfdc9 mark_info_dirty +EXPORT_SYMBOL vmlinux 0xe1761617 security_inet_conn_request +EXPORT_SYMBOL vmlinux 0xe17665c4 genphy_config_aneg +EXPORT_SYMBOL vmlinux 0xe1786c32 make_flow_keys_digest +EXPORT_SYMBOL vmlinux 0xe197bc57 agp_copy_info +EXPORT_SYMBOL vmlinux 0xe1990fc2 udp_proc_register +EXPORT_SYMBOL vmlinux 0xe1aebba0 param_ops_bint +EXPORT_SYMBOL vmlinux 0xe1b66ed5 __generic_file_fsync +EXPORT_SYMBOL vmlinux 0xe1b817df bio_integrity_advance +EXPORT_SYMBOL vmlinux 0xe1c292ea ps2_sendbyte +EXPORT_SYMBOL vmlinux 0xe1c684b3 scsi_device_put +EXPORT_SYMBOL vmlinux 0xe1d59d5e free_inode_nonrcu +EXPORT_SYMBOL vmlinux 0xe1ec1f95 of_graph_get_next_endpoint +EXPORT_SYMBOL vmlinux 0xe1f3689c clocksource_unregister +EXPORT_SYMBOL vmlinux 0xe1f4942f __quota_error +EXPORT_SYMBOL vmlinux 0xe200581b dcb_ieee_getapp_mask +EXPORT_SYMBOL vmlinux 0xe200f872 secure_dccpv6_sequence_number +EXPORT_SYMBOL vmlinux 0xe20372ae radix_tree_gang_lookup +EXPORT_SYMBOL vmlinux 0xe2089048 tcf_action_dump_1 +EXPORT_SYMBOL vmlinux 0xe20b81bd __get_page_tail +EXPORT_SYMBOL vmlinux 0xe220ceb8 __debugger_sstep +EXPORT_SYMBOL vmlinux 0xe223a1cc posix_acl_to_xattr +EXPORT_SYMBOL vmlinux 0xe224e5dc mmc_wait_for_app_cmd +EXPORT_SYMBOL vmlinux 0xe22d28ac vfs_getattr_nosec +EXPORT_SYMBOL vmlinux 0xe2304303 mac_map_monitor_sense +EXPORT_SYMBOL vmlinux 0xe231950e redraw_screen +EXPORT_SYMBOL vmlinux 0xe23ae481 blk_iopoll_complete +EXPORT_SYMBOL vmlinux 0xe24728b1 get_acl +EXPORT_SYMBOL vmlinux 0xe24d3a97 jiffies_64 +EXPORT_SYMBOL vmlinux 0xe255018b ilookup5_nowait +EXPORT_SYMBOL vmlinux 0xe25dae13 tcp_getsockopt +EXPORT_SYMBOL vmlinux 0xe260ee38 generic_ro_fops +EXPORT_SYMBOL vmlinux 0xe26aeab8 neigh_ifdown +EXPORT_SYMBOL vmlinux 0xe27059fa xfrm_garbage_collect +EXPORT_SYMBOL vmlinux 0xe28e779e cfb_imageblit +EXPORT_SYMBOL vmlinux 0xe292d3c7 sock_kmalloc +EXPORT_SYMBOL vmlinux 0xe29e1d0e out_of_line_wait_on_atomic_t +EXPORT_SYMBOL vmlinux 0xe29f87b6 key_instantiate_and_link +EXPORT_SYMBOL vmlinux 0xe2b41717 phy_start +EXPORT_SYMBOL vmlinux 0xe2bc0e6c scsi_execute_req_flags +EXPORT_SYMBOL vmlinux 0xe2be5498 lg_global_unlock +EXPORT_SYMBOL vmlinux 0xe2d5255a strcmp +EXPORT_SYMBOL vmlinux 0xe2e9568b phy_connect +EXPORT_SYMBOL vmlinux 0xe2f425e7 rps_cpu_mask +EXPORT_SYMBOL vmlinux 0xe2f98eb3 sk_stream_wait_memory +EXPORT_SYMBOL vmlinux 0xe3103f13 iget_locked +EXPORT_SYMBOL vmlinux 0xe3163bfb blk_run_queue_async +EXPORT_SYMBOL vmlinux 0xe31df386 frontswap_register_ops +EXPORT_SYMBOL vmlinux 0xe34057e8 sock_no_getsockopt +EXPORT_SYMBOL vmlinux 0xe3573995 __fib6_flush_trees +EXPORT_SYMBOL vmlinux 0xe38842d7 pcie_capability_write_dword +EXPORT_SYMBOL vmlinux 0xe38def96 scsi_add_host_with_dma +EXPORT_SYMBOL vmlinux 0xe3a53f4c sort +EXPORT_SYMBOL vmlinux 0xe3ae92ad kdb_current_task +EXPORT_SYMBOL vmlinux 0xe3c921dc scsi_cmd_ioctl +EXPORT_SYMBOL vmlinux 0xe3d08282 kern_path_mountpoint +EXPORT_SYMBOL vmlinux 0xe3d3cfa9 fsnotify_put_mark +EXPORT_SYMBOL vmlinux 0xe3d6414a md_error +EXPORT_SYMBOL vmlinux 0xe3d6f284 fb_find_mode_cvt +EXPORT_SYMBOL vmlinux 0xe3dfdae0 fib_default_rule_pref +EXPORT_SYMBOL vmlinux 0xe3f59851 mnt_drop_write_file +EXPORT_SYMBOL vmlinux 0xe3ff0cca scsi_target_quiesce +EXPORT_SYMBOL vmlinux 0xe403ef61 blk_dump_rq_flags +EXPORT_SYMBOL vmlinux 0xe41a523e kill_fasync +EXPORT_SYMBOL vmlinux 0xe44bb5cd igrab +EXPORT_SYMBOL vmlinux 0xe4663e3c down_read +EXPORT_SYMBOL vmlinux 0xe479ddd1 agp_alloc_bridge +EXPORT_SYMBOL vmlinux 0xe484e35f ioread32 +EXPORT_SYMBOL vmlinux 0xe4850029 phy_drivers_register +EXPORT_SYMBOL vmlinux 0xe4894fa0 poll_freewait +EXPORT_SYMBOL vmlinux 0xe4911106 drop_nlink +EXPORT_SYMBOL vmlinux 0xe4a480f7 to_nd_btt +EXPORT_SYMBOL vmlinux 0xe4b38d5b mipi_dsi_dcs_write_buffer +EXPORT_SYMBOL vmlinux 0xe4bc747c devfreq_add_device +EXPORT_SYMBOL vmlinux 0xe4ef6064 __module_get +EXPORT_SYMBOL vmlinux 0xe4f594f0 d_walk +EXPORT_SYMBOL vmlinux 0xe4fb3fed sk_dst_check +EXPORT_SYMBOL vmlinux 0xe4fe8ca1 _raw_spin_unlock_bh +EXPORT_SYMBOL vmlinux 0xe523ad75 synchronize_irq +EXPORT_SYMBOL vmlinux 0xe54839f0 generic_file_llseek_size +EXPORT_SYMBOL vmlinux 0xe55f98b4 blk_end_request_all +EXPORT_SYMBOL vmlinux 0xe5734810 __wait_on_bit_lock +EXPORT_SYMBOL vmlinux 0xe57878a1 in6_pton +EXPORT_SYMBOL vmlinux 0xe578c1f5 neigh_table_clear +EXPORT_SYMBOL vmlinux 0xe57a7e16 blk_mq_all_tag_busy_iter +EXPORT_SYMBOL vmlinux 0xe5867808 dlci_ioctl_set +EXPORT_SYMBOL vmlinux 0xe599b976 blk_mq_requeue_request +EXPORT_SYMBOL vmlinux 0xe5a15c9d datagram_poll +EXPORT_SYMBOL vmlinux 0xe5a16693 debugfs_create_automount +EXPORT_SYMBOL vmlinux 0xe5c78a99 do_blank_screen +EXPORT_SYMBOL vmlinux 0xe5d19bf3 blk_queue_chunk_sectors +EXPORT_SYMBOL vmlinux 0xe5e33db8 skb_mac_gso_segment +EXPORT_SYMBOL vmlinux 0xe5ed5467 xfrm_policy_walk_init +EXPORT_SYMBOL vmlinux 0xe5f67828 pci_read_vpd +EXPORT_SYMBOL vmlinux 0xe6186448 vm_insert_mixed +EXPORT_SYMBOL vmlinux 0xe6205b8b sk_stream_wait_close +EXPORT_SYMBOL vmlinux 0xe62082c3 simple_transaction_release +EXPORT_SYMBOL vmlinux 0xe62f8385 nobh_truncate_page +EXPORT_SYMBOL vmlinux 0xe6321679 fasync_helper +EXPORT_SYMBOL vmlinux 0xe64e53a0 input_open_device +EXPORT_SYMBOL vmlinux 0xe65f2a9b mmc_start_bkops +EXPORT_SYMBOL vmlinux 0xe66452ab dql_init +EXPORT_SYMBOL vmlinux 0xe670ac25 tcp_md5_do_lookup +EXPORT_SYMBOL vmlinux 0xe67cc9c4 atomic_dec_and_mutex_lock +EXPORT_SYMBOL vmlinux 0xe697d108 __blk_iopoll_complete +EXPORT_SYMBOL vmlinux 0xe69a9df4 hdmi_spd_infoframe_pack +EXPORT_SYMBOL vmlinux 0xe6aa01d9 blk_queue_free_tags +EXPORT_SYMBOL vmlinux 0xe6c004ff n_tty_compat_ioctl_helper +EXPORT_SYMBOL vmlinux 0xe6d01ec6 touch_buffer +EXPORT_SYMBOL vmlinux 0xe6e1b2e3 pm860x_page_reg_write +EXPORT_SYMBOL vmlinux 0xe6e48b08 jbd2_journal_try_to_free_buffers +EXPORT_SYMBOL vmlinux 0xe6f43027 of_get_address +EXPORT_SYMBOL vmlinux 0xe6fbe430 can_do_mlock +EXPORT_SYMBOL vmlinux 0xe6fc40d8 inode_sub_bytes +EXPORT_SYMBOL vmlinux 0xe700b99b posix_unblock_lock +EXPORT_SYMBOL vmlinux 0xe7021368 sk_common_release +EXPORT_SYMBOL vmlinux 0xe7077c4d pci_remove_bus +EXPORT_SYMBOL vmlinux 0xe72cabf9 __skb_gro_checksum_complete +EXPORT_SYMBOL vmlinux 0xe74112e9 dm_register_target +EXPORT_SYMBOL vmlinux 0xe74c194a lookup_bdev +EXPORT_SYMBOL vmlinux 0xe7772eca get_task_io_context +EXPORT_SYMBOL vmlinux 0xe7838c3c tcp_proc_register +EXPORT_SYMBOL vmlinux 0xe789a091 inode_set_bytes +EXPORT_SYMBOL vmlinux 0xe7a664c4 nf_hooks +EXPORT_SYMBOL vmlinux 0xe7a81967 audit_log_secctx +EXPORT_SYMBOL vmlinux 0xe7bbc269 should_remove_suid +EXPORT_SYMBOL vmlinux 0xe7c46a76 __sk_mem_reclaim +EXPORT_SYMBOL vmlinux 0xe7c4c26f vga_get +EXPORT_SYMBOL vmlinux 0xe7ce7439 _memcpy_fromio +EXPORT_SYMBOL vmlinux 0xe7d4daac seq_list_next +EXPORT_SYMBOL vmlinux 0xe81ba074 netif_set_xps_queue +EXPORT_SYMBOL vmlinux 0xe81ef1dd remove_conflicting_framebuffers +EXPORT_SYMBOL vmlinux 0xe8214184 tcf_exts_destroy +EXPORT_SYMBOL vmlinux 0xe82a259b to_ndd +EXPORT_SYMBOL vmlinux 0xe82d787e max8998_read_reg +EXPORT_SYMBOL vmlinux 0xe833fa77 gen_pool_virt_to_phys +EXPORT_SYMBOL vmlinux 0xe8586b1e dump_skip +EXPORT_SYMBOL vmlinux 0xe88758e3 xfrm4_rcv +EXPORT_SYMBOL vmlinux 0xe888a27b mmc_alloc_host +EXPORT_SYMBOL vmlinux 0xe893fee7 mem_cgroup_end_page_stat +EXPORT_SYMBOL vmlinux 0xe89b76e7 inet_rtx_syn_ack +EXPORT_SYMBOL vmlinux 0xe8afb5af do_SAK +EXPORT_SYMBOL vmlinux 0xe8b51032 scsi_register_driver +EXPORT_SYMBOL vmlinux 0xe8bea3bc qdisc_put_stab +EXPORT_SYMBOL vmlinux 0xe8c438f3 proc_dointvec_userhz_jiffies +EXPORT_SYMBOL vmlinux 0xe8cb1bf5 eth_header +EXPORT_SYMBOL vmlinux 0xe8cda55f release_sock +EXPORT_SYMBOL vmlinux 0xe8d99f5f compat_ip_getsockopt +EXPORT_SYMBOL vmlinux 0xe90188c2 mmc_detect_card_removed +EXPORT_SYMBOL vmlinux 0xe913d9e3 mmc_gpiod_request_cd_irq +EXPORT_SYMBOL vmlinux 0xe914e41e strcpy +EXPORT_SYMBOL vmlinux 0xe9317e0e skb_recv_datagram +EXPORT_SYMBOL vmlinux 0xe9378d58 idr_get_next +EXPORT_SYMBOL vmlinux 0xe9457c23 sync_inode_metadata +EXPORT_SYMBOL vmlinux 0xe953b21f get_next_ino +EXPORT_SYMBOL vmlinux 0xe95b14aa __xfrm_init_state +EXPORT_SYMBOL vmlinux 0xe9634722 put_cmsg +EXPORT_SYMBOL vmlinux 0xe9709742 __scm_send +EXPORT_SYMBOL vmlinux 0xe98efca8 check_disk_size_change +EXPORT_SYMBOL vmlinux 0xe993ea3e param_get_ushort +EXPORT_SYMBOL vmlinux 0xe9cfee66 blk_integrity_merge_bio +EXPORT_SYMBOL vmlinux 0xe9d3fa68 thermal_cdev_update +EXPORT_SYMBOL vmlinux 0xe9d67fc7 pagevec_lookup +EXPORT_SYMBOL vmlinux 0xe9eaf483 i2c_smbus_xfer +EXPORT_SYMBOL vmlinux 0xe9f7149c zlib_deflate_workspacesize +EXPORT_SYMBOL vmlinux 0xea054b22 nla_policy_len +EXPORT_SYMBOL vmlinux 0xea16dd4c tcp_destroy_cgroup +EXPORT_SYMBOL vmlinux 0xea1bd53e jbd2_journal_start_commit +EXPORT_SYMBOL vmlinux 0xea2b2db0 pci_fixup_cardbus +EXPORT_SYMBOL vmlinux 0xea399f3b sock_rfree +EXPORT_SYMBOL vmlinux 0xea579da5 tcf_em_tree_validate +EXPORT_SYMBOL vmlinux 0xea7a42f9 __sg_free_table +EXPORT_SYMBOL vmlinux 0xea85852d __sock_tx_timestamp +EXPORT_SYMBOL vmlinux 0xea85b87a path_put +EXPORT_SYMBOL vmlinux 0xea8bb7cb sg_miter_skip +EXPORT_SYMBOL vmlinux 0xea968c96 ___ratelimit +EXPORT_SYMBOL vmlinux 0xeaa33a24 skb_append +EXPORT_SYMBOL vmlinux 0xeaa9c0c5 nf_log_unset +EXPORT_SYMBOL vmlinux 0xeab95708 mfd_remove_devices +EXPORT_SYMBOL vmlinux 0xeabbe3a9 xfrm6_prepare_output +EXPORT_SYMBOL vmlinux 0xeac6c0b1 seq_write +EXPORT_SYMBOL vmlinux 0xeade9cd0 max8925_bulk_write +EXPORT_SYMBOL vmlinux 0xeaef91bf sock_efree +EXPORT_SYMBOL vmlinux 0xeafb6409 from_kgid_munged +EXPORT_SYMBOL vmlinux 0xeb17d9d1 xfrm_user_policy +EXPORT_SYMBOL vmlinux 0xeb352ad2 agp_unbind_memory +EXPORT_SYMBOL vmlinux 0xeb37101c audit_log_end +EXPORT_SYMBOL vmlinux 0xeb44339a free_pages_exact +EXPORT_SYMBOL vmlinux 0xeb836421 cleancache_register_ops +EXPORT_SYMBOL vmlinux 0xeba17e59 __dax_fault +EXPORT_SYMBOL vmlinux 0xebb01028 tty_wait_until_sent +EXPORT_SYMBOL vmlinux 0xebbe7e71 task_tgid_nr_ns +EXPORT_SYMBOL vmlinux 0xebc512fd lock_fb_info +EXPORT_SYMBOL vmlinux 0xec0dd346 udp_set_csum +EXPORT_SYMBOL vmlinux 0xec1798d0 abx500_register_ops +EXPORT_SYMBOL vmlinux 0xec220e78 km_policy_notify +EXPORT_SYMBOL vmlinux 0xec253d1d inet_dgram_ops +EXPORT_SYMBOL vmlinux 0xec4d9e3a clk_get_sys +EXPORT_SYMBOL vmlinux 0xec744ae8 __lock_page +EXPORT_SYMBOL vmlinux 0xec91beba simple_dir_operations +EXPORT_SYMBOL vmlinux 0xecb8ce58 jbd2_journal_clear_err +EXPORT_SYMBOL vmlinux 0xecbb926f xor_altivec_3 +EXPORT_SYMBOL vmlinux 0xece59abb __genl_register_family +EXPORT_SYMBOL vmlinux 0xece784c2 rb_first +EXPORT_SYMBOL vmlinux 0xecee21ba i2c_put_adapter +EXPORT_SYMBOL vmlinux 0xed04189c inode_init_always +EXPORT_SYMBOL vmlinux 0xed26f94e rtnl_notify +EXPORT_SYMBOL vmlinux 0xed36ca8f dqput +EXPORT_SYMBOL vmlinux 0xed40594d of_count_phandle_with_args +EXPORT_SYMBOL vmlinux 0xed411ced __kernel_write +EXPORT_SYMBOL vmlinux 0xed597524 qdisc_get_rtab +EXPORT_SYMBOL vmlinux 0xed5aa0a5 fddi_change_mtu +EXPORT_SYMBOL vmlinux 0xed75422f dquot_quota_on +EXPORT_SYMBOL vmlinux 0xed7f1cf4 i2c_smbus_read_block_data +EXPORT_SYMBOL vmlinux 0xed89eed9 neigh_lookup_nodev +EXPORT_SYMBOL vmlinux 0xed907716 devm_gpio_free +EXPORT_SYMBOL vmlinux 0xed934451 local_flush_tlb_page +EXPORT_SYMBOL vmlinux 0xed9f9a20 __ctzsi2 +EXPORT_SYMBOL vmlinux 0xedbaee5e nla_strcmp +EXPORT_SYMBOL vmlinux 0xedc03953 iounmap +EXPORT_SYMBOL vmlinux 0xedc410d0 udplite_table +EXPORT_SYMBOL vmlinux 0xedd8ab90 tcf_hash_destroy +EXPORT_SYMBOL vmlinux 0xedfa546c clear_nlink +EXPORT_SYMBOL vmlinux 0xee10f6ba nlmsg_notify +EXPORT_SYMBOL vmlinux 0xee2d0fc7 _local_bh_enable +EXPORT_SYMBOL vmlinux 0xee38adec genphy_soft_reset +EXPORT_SYMBOL vmlinux 0xee56421b seq_puts +EXPORT_SYMBOL vmlinux 0xee5a7ab1 wait_iff_congested +EXPORT_SYMBOL vmlinux 0xee91879b rb_first_postorder +EXPORT_SYMBOL vmlinux 0xeea9dbaf bitmap_bitremap +EXPORT_SYMBOL vmlinux 0xeeb0bd3c skb_vlan_untag +EXPORT_SYMBOL vmlinux 0xeeb5bd3b __tracepoint_kfree +EXPORT_SYMBOL vmlinux 0xeed4d208 request_key +EXPORT_SYMBOL vmlinux 0xeeed79c8 mntget +EXPORT_SYMBOL vmlinux 0xeeeeb8a7 dma_iommu_ops +EXPORT_SYMBOL vmlinux 0xeef161aa groups_free +EXPORT_SYMBOL vmlinux 0xef178fa5 sys_imageblit +EXPORT_SYMBOL vmlinux 0xef22ccb3 xfrm_prepare_input +EXPORT_SYMBOL vmlinux 0xef4323d8 iov_iter_fault_in_readable +EXPORT_SYMBOL vmlinux 0xef4e4baf unregister_md_personality +EXPORT_SYMBOL vmlinux 0xef6bbafa __dec_zone_page_state +EXPORT_SYMBOL vmlinux 0xef84b248 dev_set_allmulti +EXPORT_SYMBOL vmlinux 0xef8fab4e sk_capable +EXPORT_SYMBOL vmlinux 0xefa7e55d param_get_string +EXPORT_SYMBOL vmlinux 0xefd1624a vme_dma_free_attribute +EXPORT_SYMBOL vmlinux 0xefd3da53 xfrm_policy_destroy +EXPORT_SYMBOL vmlinux 0xefd6178a phy_init_hw +EXPORT_SYMBOL vmlinux 0xefdd70ce security_secid_to_secctx +EXPORT_SYMBOL vmlinux 0xefde1bbe flush_dcache_range +EXPORT_SYMBOL vmlinux 0xf0009fee put_pages_list +EXPORT_SYMBOL vmlinux 0xf0032a3a sock_create_lite +EXPORT_SYMBOL vmlinux 0xf0187927 __sg_page_iter_next +EXPORT_SYMBOL vmlinux 0xf02ca9d0 neigh_seq_stop +EXPORT_SYMBOL vmlinux 0xf045399f pid_task +EXPORT_SYMBOL vmlinux 0xf050e3ae pci_get_device +EXPORT_SYMBOL vmlinux 0xf05d0eba led_blink_set +EXPORT_SYMBOL vmlinux 0xf05ffa15 fb_var_to_videomode +EXPORT_SYMBOL vmlinux 0xf065f629 ioread16be +EXPORT_SYMBOL vmlinux 0xf079ae6e vfs_link +EXPORT_SYMBOL vmlinux 0xf07fe9a0 lockref_put_or_lock +EXPORT_SYMBOL vmlinux 0xf081354f __get_user_pages_unlocked +EXPORT_SYMBOL vmlinux 0xf08c67de napi_alloc_frag +EXPORT_SYMBOL vmlinux 0xf09cdfb4 nf_log_register +EXPORT_SYMBOL vmlinux 0xf09d2b76 init_task +EXPORT_SYMBOL vmlinux 0xf09de776 get_random_int +EXPORT_SYMBOL vmlinux 0xf0a8237a radix_tree_gang_lookup_tag +EXPORT_SYMBOL vmlinux 0xf0ae6ab6 netdev_upper_dev_link +EXPORT_SYMBOL vmlinux 0xf0b1af1f fbcon_rotate_ccw +EXPORT_SYMBOL vmlinux 0xf0bdfee3 md_check_no_bitmap +EXPORT_SYMBOL vmlinux 0xf0bed3e9 fsl_ifc_ctrl_dev +EXPORT_SYMBOL vmlinux 0xf0bfc6c7 from_kprojid +EXPORT_SYMBOL vmlinux 0xf0cab63c xfrm_state_flush +EXPORT_SYMBOL vmlinux 0xf0d43938 devm_request_resource +EXPORT_SYMBOL vmlinux 0xf0dbb66d scsi_host_lookup +EXPORT_SYMBOL vmlinux 0xf0ef15b4 list_sort +EXPORT_SYMBOL vmlinux 0xf0fb0c10 pci_release_region +EXPORT_SYMBOL vmlinux 0xf101e0ab inet_stream_ops +EXPORT_SYMBOL vmlinux 0xf10526ac verify_spi_info +EXPORT_SYMBOL vmlinux 0xf10de535 ioread8 +EXPORT_SYMBOL vmlinux 0xf111ca67 inet_frags_fini +EXPORT_SYMBOL vmlinux 0xf1145708 xfrm_input +EXPORT_SYMBOL vmlinux 0xf11cd6ce down_interruptible +EXPORT_SYMBOL vmlinux 0xf134bfa4 __nla_put +EXPORT_SYMBOL vmlinux 0xf147dcb2 hdmi_spd_infoframe_init +EXPORT_SYMBOL vmlinux 0xf17e9f5b sdev_disable_disk_events +EXPORT_SYMBOL vmlinux 0xf183189b __ioremap_at +EXPORT_SYMBOL vmlinux 0xf195c682 fb_invert_cmaps +EXPORT_SYMBOL vmlinux 0xf1969a8e __usecs_to_jiffies +EXPORT_SYMBOL vmlinux 0xf1afc3d3 truncate_inode_pages_range +EXPORT_SYMBOL vmlinux 0xf1c395d4 devfreq_monitor_stop +EXPORT_SYMBOL vmlinux 0xf1db1704 nla_memcpy +EXPORT_SYMBOL vmlinux 0xf1e06df1 gen_pool_set_algo +EXPORT_SYMBOL vmlinux 0xf1e98c74 avenrun +EXPORT_SYMBOL vmlinux 0xf1fdbbc8 kernel_recvmsg +EXPORT_SYMBOL vmlinux 0xf20dabd8 free_irq +EXPORT_SYMBOL vmlinux 0xf22881e8 lg_local_lock +EXPORT_SYMBOL vmlinux 0xf23fcb99 __kfifo_in +EXPORT_SYMBOL vmlinux 0xf248bed0 __pskb_pull_tail +EXPORT_SYMBOL vmlinux 0xf25a37ed pcie_capability_read_dword +EXPORT_SYMBOL vmlinux 0xf2620047 km_is_alive +EXPORT_SYMBOL vmlinux 0xf2718fb2 elv_rq_merge_ok +EXPORT_SYMBOL vmlinux 0xf2a0af8f backlight_device_registered +EXPORT_SYMBOL vmlinux 0xf2a248eb f_setown +EXPORT_SYMBOL vmlinux 0xf2a2b163 resource_list_create_entry +EXPORT_SYMBOL vmlinux 0xf2c43f3f zlib_deflate +EXPORT_SYMBOL vmlinux 0xf2ca872e simple_symlink_inode_operations +EXPORT_SYMBOL vmlinux 0xf2f9ac7d dev_get_iflink +EXPORT_SYMBOL vmlinux 0xf2fb8cb4 __pci_enable_wake +EXPORT_SYMBOL vmlinux 0xf3118f18 backlight_force_update +EXPORT_SYMBOL vmlinux 0xf313da4e sha_transform +EXPORT_SYMBOL vmlinux 0xf31a1fb3 pci_scan_single_device +EXPORT_SYMBOL vmlinux 0xf32157c5 tty_port_raise_dtr_rts +EXPORT_SYMBOL vmlinux 0xf322a206 bit_waitqueue +EXPORT_SYMBOL vmlinux 0xf3341268 __clear_user +EXPORT_SYMBOL vmlinux 0xf346231f seq_list_start_head +EXPORT_SYMBOL vmlinux 0xf353a698 register_module_notifier +EXPORT_SYMBOL vmlinux 0xf35efff5 scsi_init_io +EXPORT_SYMBOL vmlinux 0xf36ebe81 dev_vprintk_emit +EXPORT_SYMBOL vmlinux 0xf373aa82 mmc_unregister_driver +EXPORT_SYMBOL vmlinux 0xf389fe60 __hw_addr_init +EXPORT_SYMBOL vmlinux 0xf38d4cf2 build_skb +EXPORT_SYMBOL vmlinux 0xf3916987 global_cursor_default +EXPORT_SYMBOL vmlinux 0xf3dfe989 param_ops_byte +EXPORT_SYMBOL vmlinux 0xf3e24544 netif_set_real_num_rx_queues +EXPORT_SYMBOL vmlinux 0xf3e6402e __bitmap_equal +EXPORT_SYMBOL vmlinux 0xf3ebe3a7 iov_iter_zero +EXPORT_SYMBOL vmlinux 0xf3f4662c fbcon_set_rotate +EXPORT_SYMBOL vmlinux 0xf3f9d90c neigh_table_init +EXPORT_SYMBOL vmlinux 0xf40be771 __dev_get_by_flags +EXPORT_SYMBOL vmlinux 0xf434d54a nd_region_to_nstype +EXPORT_SYMBOL vmlinux 0xf441ac43 ioread8_rep +EXPORT_SYMBOL vmlinux 0xf44be626 agp_backend_acquire +EXPORT_SYMBOL vmlinux 0xf4591939 abx500_event_registers_startup_state_get +EXPORT_SYMBOL vmlinux 0xf463f240 pci_disable_device +EXPORT_SYMBOL vmlinux 0xf46bab78 blk_queue_physical_block_size +EXPORT_SYMBOL vmlinux 0xf474c21c bitmap_print_to_pagebuf +EXPORT_SYMBOL vmlinux 0xf474fdcb kfree_const +EXPORT_SYMBOL vmlinux 0xf48cbed4 consume_skb +EXPORT_SYMBOL vmlinux 0xf497a233 __napi_schedule +EXPORT_SYMBOL vmlinux 0xf4b8a59b follow_down +EXPORT_SYMBOL vmlinux 0xf4bdbeb9 __frontswap_invalidate_area +EXPORT_SYMBOL vmlinux 0xf4d4eb4b phy_device_register +EXPORT_SYMBOL vmlinux 0xf4e300f2 pci_bus_type +EXPORT_SYMBOL vmlinux 0xf4f14de6 rtnl_trylock +EXPORT_SYMBOL vmlinux 0xf50b8410 devfreq_unregister_opp_notifier +EXPORT_SYMBOL vmlinux 0xf5193d6e pcim_iomap_regions_request_all +EXPORT_SYMBOL vmlinux 0xf51ae235 touch_nmi_watchdog +EXPORT_SYMBOL vmlinux 0xf51bf88b nf_hooks_needed +EXPORT_SYMBOL vmlinux 0xf5222143 _raw_spin_lock_irqsave +EXPORT_SYMBOL vmlinux 0xf53d4c26 qdisc_class_hash_destroy +EXPORT_SYMBOL vmlinux 0xf53df0a5 gen_pool_free +EXPORT_SYMBOL vmlinux 0xf54200de mipi_dsi_dcs_set_page_address +EXPORT_SYMBOL vmlinux 0xf543f816 rtmsg_ifinfo +EXPORT_SYMBOL vmlinux 0xf55b3b3d __arch_hweight16 +EXPORT_SYMBOL vmlinux 0xf5634809 scsi_remove_target +EXPORT_SYMBOL vmlinux 0xf5636526 dev_uc_flush +EXPORT_SYMBOL vmlinux 0xf571a879 dev_mc_sync_multiple +EXPORT_SYMBOL vmlinux 0xf5803b72 xfrm_lookup_route +EXPORT_SYMBOL vmlinux 0xf5a085c4 gen_pool_destroy +EXPORT_SYMBOL vmlinux 0xf5a10e25 vme_slave_set +EXPORT_SYMBOL vmlinux 0xf5a62ecc _memset_io +EXPORT_SYMBOL vmlinux 0xf5b78f4c cpufreq_generic_suspend +EXPORT_SYMBOL vmlinux 0xf5c2d34d hdmi_audio_infoframe_init +EXPORT_SYMBOL vmlinux 0xf5cb99c9 generic_file_fsync +EXPORT_SYMBOL vmlinux 0xf5e33526 dev_uc_del +EXPORT_SYMBOL vmlinux 0xf5eb86ea blk_verify_command +EXPORT_SYMBOL vmlinux 0xf61146b2 alloc_fcdev +EXPORT_SYMBOL vmlinux 0xf6388c56 sysctl_ip_default_ttl +EXPORT_SYMBOL vmlinux 0xf64e593b rtnl_set_sk_err +EXPORT_SYMBOL vmlinux 0xf6522fab blk_mq_tag_busy_iter +EXPORT_SYMBOL vmlinux 0xf66090a1 scsi_device_quiesce +EXPORT_SYMBOL vmlinux 0xf6770391 mac_pton +EXPORT_SYMBOL vmlinux 0xf68285c0 register_inetaddr_notifier +EXPORT_SYMBOL vmlinux 0xf68687be __sg_page_iter_start +EXPORT_SYMBOL vmlinux 0xf698c43c netif_rx_ni +EXPORT_SYMBOL vmlinux 0xf69a26cd sk_reset_timer +EXPORT_SYMBOL vmlinux 0xf6bb4729 color_table +EXPORT_SYMBOL vmlinux 0xf6ebc03b net_ratelimit +EXPORT_SYMBOL vmlinux 0xf6fc0706 blk_fetch_request +EXPORT_SYMBOL vmlinux 0xf6fc8791 __bitmap_xor +EXPORT_SYMBOL vmlinux 0xf7289d14 __tracepoint_kmem_cache_free +EXPORT_SYMBOL vmlinux 0xf737ae6b __napi_schedule_irqoff +EXPORT_SYMBOL vmlinux 0xf73e3e25 pci_bus_read_config_byte +EXPORT_SYMBOL vmlinux 0xf73f36b1 audit_log +EXPORT_SYMBOL vmlinux 0xf7584a9c find_font +EXPORT_SYMBOL vmlinux 0xf75d6e0c sock_no_mmap +EXPORT_SYMBOL vmlinux 0xf77a2430 vlan_uses_dev +EXPORT_SYMBOL vmlinux 0xf7a4878b xfrm_policy_walk +EXPORT_SYMBOL vmlinux 0xf7a4af23 netdev_bonding_info_change +EXPORT_SYMBOL vmlinux 0xf7adcaf3 __tracepoint_kmalloc_node +EXPORT_SYMBOL vmlinux 0xf7b26d9c input_mt_init_slots +EXPORT_SYMBOL vmlinux 0xf7e034d4 mipi_dsi_dcs_set_pixel_format +EXPORT_SYMBOL vmlinux 0xf7f677e5 inetdev_by_index +EXPORT_SYMBOL vmlinux 0xf811e69d scsi_eh_flush_done_q +EXPORT_SYMBOL vmlinux 0xf8128bec nf_register_hooks +EXPORT_SYMBOL vmlinux 0xf812cff6 memscan +EXPORT_SYMBOL vmlinux 0xf8134f88 pci_bus_size_bridges +EXPORT_SYMBOL vmlinux 0xf8259ce4 input_reset_device +EXPORT_SYMBOL vmlinux 0xf827cb83 free_reserved_area +EXPORT_SYMBOL vmlinux 0xf82abc1d isa_dma_bridge_buggy +EXPORT_SYMBOL vmlinux 0xf82ec573 rb_prev +EXPORT_SYMBOL vmlinux 0xf84dc890 scsi_host_alloc +EXPORT_SYMBOL vmlinux 0xf8650050 skb_pull +EXPORT_SYMBOL vmlinux 0xf86cb7ab skb_prepare_seq_read +EXPORT_SYMBOL vmlinux 0xf8853c75 replace_mount_options +EXPORT_SYMBOL vmlinux 0xf890b382 __vfs_read +EXPORT_SYMBOL vmlinux 0xf8a00c82 seq_release +EXPORT_SYMBOL vmlinux 0xf8b324ba __secpath_destroy +EXPORT_SYMBOL vmlinux 0xf8b4c11b serio_unregister_port +EXPORT_SYMBOL vmlinux 0xf8bbc7c7 dst_destroy +EXPORT_SYMBOL vmlinux 0xf8ce5699 unregister_netdev +EXPORT_SYMBOL vmlinux 0xf8d04f09 __crc32c_le_shift +EXPORT_SYMBOL vmlinux 0xf8d559fb pcix_get_max_mmrbc +EXPORT_SYMBOL vmlinux 0xf8e5fa41 abx500_mask_and_set_register_interruptible +EXPORT_SYMBOL vmlinux 0xf8eafe9f of_get_min_tck +EXPORT_SYMBOL vmlinux 0xf8ec850e elevator_exit +EXPORT_SYMBOL vmlinux 0xf8eee22f phy_mii_ioctl +EXPORT_SYMBOL vmlinux 0xf8f2d7b7 __starget_for_each_device +EXPORT_SYMBOL vmlinux 0xf9228003 get_immrbase +EXPORT_SYMBOL vmlinux 0xf9254b89 phy_device_free +EXPORT_SYMBOL vmlinux 0xf93371d3 input_set_abs_params +EXPORT_SYMBOL vmlinux 0xf93601b1 tcp_hashinfo +EXPORT_SYMBOL vmlinux 0xf946925c kernel_connect +EXPORT_SYMBOL vmlinux 0xf9505081 __getblk_slow +EXPORT_SYMBOL vmlinux 0xf952654d lock_sock_fast +EXPORT_SYMBOL vmlinux 0xf97e9d71 __hw_addr_unsync_dev +EXPORT_SYMBOL vmlinux 0xf98ccb74 mmc_request_done +EXPORT_SYMBOL vmlinux 0xf994e518 tcf_exts_dump +EXPORT_SYMBOL vmlinux 0xf9a482f9 msleep +EXPORT_SYMBOL vmlinux 0xf9aff0b9 security_path_truncate +EXPORT_SYMBOL vmlinux 0xf9c0b663 strlcat +EXPORT_SYMBOL vmlinux 0xf9e5f50b pci_unmap_rom +EXPORT_SYMBOL vmlinux 0xf9e97163 set_blocksize +EXPORT_SYMBOL vmlinux 0xf9f9f729 iommu_tbl_pool_init +EXPORT_SYMBOL vmlinux 0xf9ff179f blk_queue_merge_bvec +EXPORT_SYMBOL vmlinux 0xfa310c7f netif_wake_subqueue +EXPORT_SYMBOL vmlinux 0xfa33f791 d_add_ci +EXPORT_SYMBOL vmlinux 0xfa3c5fb7 scsi_remove_host +EXPORT_SYMBOL vmlinux 0xfa547d16 param_ops_invbool +EXPORT_SYMBOL vmlinux 0xfa599bb2 netlink_register_notifier +EXPORT_SYMBOL vmlinux 0xfa71d3bb vfs_rmdir +EXPORT_SYMBOL vmlinux 0xfa9b79d0 flush_dcache_icache_page +EXPORT_SYMBOL vmlinux 0xfaa4c246 bio_phys_segments +EXPORT_SYMBOL vmlinux 0xfabe206e unregister_cdrom +EXPORT_SYMBOL vmlinux 0xfac8865f sysctl_wmem_max +EXPORT_SYMBOL vmlinux 0xfacd8e72 vme_dma_vme_attribute +EXPORT_SYMBOL vmlinux 0xfacf3640 __bread_gfp +EXPORT_SYMBOL vmlinux 0xfad8b9b2 tty_do_resize +EXPORT_SYMBOL vmlinux 0xfae67b1f cap_mmap_addr +EXPORT_SYMBOL vmlinux 0xfaee4e8e __scsi_add_device +EXPORT_SYMBOL vmlinux 0xfb17a76a ioc_lookup_icq +EXPORT_SYMBOL vmlinux 0xfb23c635 blk_put_queue +EXPORT_SYMBOL vmlinux 0xfb353149 padata_do_parallel +EXPORT_SYMBOL vmlinux 0xfb3c9683 i2c_verify_client +EXPORT_SYMBOL vmlinux 0xfb46154b unlock_two_nondirectories +EXPORT_SYMBOL vmlinux 0xfb4e7c2f of_get_next_parent +EXPORT_SYMBOL vmlinux 0xfb53811c rwsem_downgrade_wake +EXPORT_SYMBOL vmlinux 0xfb586834 netdev_boot_setup_check +EXPORT_SYMBOL vmlinux 0xfb645970 __dst_free +EXPORT_SYMBOL vmlinux 0xfb6af58d recalc_sigpending +EXPORT_SYMBOL vmlinux 0xfb87b513 reservation_object_add_shared_fence +EXPORT_SYMBOL vmlinux 0xfb94103e __clzdi2 +EXPORT_SYMBOL vmlinux 0xfb9d3d9f rc5t583_ext_power_req_config +EXPORT_SYMBOL vmlinux 0xfbaaf01e console_lock +EXPORT_SYMBOL vmlinux 0xfbb75a63 jbd2_journal_get_create_access +EXPORT_SYMBOL vmlinux 0xfbc4f89e io_schedule_timeout +EXPORT_SYMBOL vmlinux 0xfbcb9610 __xfrm_policy_check +EXPORT_SYMBOL vmlinux 0xfbea40d1 __percpu_counter_init +EXPORT_SYMBOL vmlinux 0xfbf3dd1b padata_free +EXPORT_SYMBOL vmlinux 0xfbf44482 acl_by_type +EXPORT_SYMBOL vmlinux 0xfbf5a46f vfs_rename +EXPORT_SYMBOL vmlinux 0xfbfa2658 input_free_device +EXPORT_SYMBOL vmlinux 0xfbfdf629 nvdimm_namespace_capacity +EXPORT_SYMBOL vmlinux 0xfc02b7ad sysctl_tcp_wmem +EXPORT_SYMBOL vmlinux 0xfc2d9a95 mmc_remove_host +EXPORT_SYMBOL vmlinux 0xfc386eeb update_region +EXPORT_SYMBOL vmlinux 0xfc39e32f ioport_unmap +EXPORT_SYMBOL vmlinux 0xfc3b160f mempool_create_node +EXPORT_SYMBOL vmlinux 0xfc3e911a touchscreen_parse_of_params +EXPORT_SYMBOL vmlinux 0xfc4b8926 ip6_dst_hoplimit +EXPORT_SYMBOL vmlinux 0xfc62cbad pci_dev_driver +EXPORT_SYMBOL vmlinux 0xfc6546e8 security_dentry_init_security +EXPORT_SYMBOL vmlinux 0xfc822c6a block_page_mkwrite +EXPORT_SYMBOL vmlinux 0xfc833efc inet6_register_icmp_sender +EXPORT_SYMBOL vmlinux 0xfc8b803a xfrm_init_replay +EXPORT_SYMBOL vmlinux 0xfc9d5c24 tcp_setsockopt +EXPORT_SYMBOL vmlinux 0xfcb926cd kstrtouint_from_user +EXPORT_SYMBOL vmlinux 0xfcb9ad3b phy_attach +EXPORT_SYMBOL vmlinux 0xfcbfa485 dquot_transfer +EXPORT_SYMBOL vmlinux 0xfcc2a43c utf32_to_utf8 +EXPORT_SYMBOL vmlinux 0xfcd45e8a swiotlb_sync_single_for_device +EXPORT_SYMBOL vmlinux 0xfce4aa91 dquot_disable +EXPORT_SYMBOL vmlinux 0xfcec0987 enable_irq +EXPORT_SYMBOL vmlinux 0xfcf235c6 register_md_personality +EXPORT_SYMBOL vmlinux 0xfcf2b70e tcp_enter_cwr +EXPORT_SYMBOL vmlinux 0xfcfa03ff fb_videomode_to_modelist +EXPORT_SYMBOL vmlinux 0xfd0db8d6 dev_get_stats +EXPORT_SYMBOL vmlinux 0xfd19e54d padata_add_cpu +EXPORT_SYMBOL vmlinux 0xfd3c6738 agp_generic_remove_memory +EXPORT_SYMBOL vmlinux 0xfd3cb45b tcp_v4_syn_recv_sock +EXPORT_SYMBOL vmlinux 0xfd6c57f0 inode_permission +EXPORT_SYMBOL vmlinux 0xfd7a96dc mmc_release_host +EXPORT_SYMBOL vmlinux 0xfd93e35c md_cluster_ops +EXPORT_SYMBOL vmlinux 0xfd97476b sock_get_timestampns +EXPORT_SYMBOL vmlinux 0xfd99623a ip_frag_ecn_table +EXPORT_SYMBOL vmlinux 0xfdb6cedc _raw_read_unlock_bh +EXPORT_SYMBOL vmlinux 0xfdb9b629 ioread32be +EXPORT_SYMBOL vmlinux 0xfdbe0288 pci_add_resource_offset +EXPORT_SYMBOL vmlinux 0xfde0e98c blkdev_put +EXPORT_SYMBOL vmlinux 0xfdeb161c md_unregister_thread +EXPORT_SYMBOL vmlinux 0xfded48ed enable_kernel_fp +EXPORT_SYMBOL vmlinux 0xfdfc0b3b fiemap_fill_next_extent +EXPORT_SYMBOL vmlinux 0xfe029963 unregister_inetaddr_notifier +EXPORT_SYMBOL vmlinux 0xfe17047b kblockd_schedule_delayed_work_on +EXPORT_SYMBOL vmlinux 0xfe2e2128 from_kprojid_munged +EXPORT_SYMBOL vmlinux 0xfe35aa4a percpu_counter_destroy +EXPORT_SYMBOL vmlinux 0xfe3f027e tcp_v4_destroy_sock +EXPORT_SYMBOL vmlinux 0xfe490634 load_nls_default +EXPORT_SYMBOL vmlinux 0xfe52df51 fb_pan_display +EXPORT_SYMBOL vmlinux 0xfe5d4bb2 sys_tz +EXPORT_SYMBOL vmlinux 0xfe7c4287 nr_cpu_ids +EXPORT_SYMBOL vmlinux 0xfe8193a7 mipi_dsi_dcs_enter_sleep_mode +EXPORT_SYMBOL vmlinux 0xfe916dc6 hex_dump_to_buffer +EXPORT_SYMBOL vmlinux 0xfed0610b add_random_ready_callback +EXPORT_SYMBOL vmlinux 0xfedb1849 security_inode_notifysecctx +EXPORT_SYMBOL vmlinux 0xfedcdb60 seq_hlist_next_percpu +EXPORT_SYMBOL vmlinux 0xfeebc7c4 __kfifo_from_user_r +EXPORT_SYMBOL vmlinux 0xff19574d security_path_unlink +EXPORT_SYMBOL vmlinux 0xff1e9dd8 seq_list_start +EXPORT_SYMBOL vmlinux 0xff3fe806 dev_open +EXPORT_SYMBOL vmlinux 0xff4b5998 dev_warn +EXPORT_SYMBOL vmlinux 0xff5de744 param_ops_ulong +EXPORT_SYMBOL vmlinux 0xff6878cf fb_default_cmap +EXPORT_SYMBOL vmlinux 0xff7559e4 ioport_resource +EXPORT_SYMBOL vmlinux 0xff837911 scsi_scan_host +EXPORT_SYMBOL vmlinux 0xff8bcec3 d_alloc_name +EXPORT_SYMBOL vmlinux 0xff8ee361 security_path_rename +EXPORT_SYMBOL vmlinux 0xff9ae6cb vfs_statfs +EXPORT_SYMBOL vmlinux 0xff9ca065 fb_edid_to_monspecs +EXPORT_SYMBOL vmlinux 0xffab1c25 sdev_prefix_printk +EXPORT_SYMBOL vmlinux 0xffb71cb2 of_match_device +EXPORT_SYMBOL vmlinux 0xffce0a01 dst_alloc +EXPORT_SYMBOL vmlinux 0xffd5a395 default_wake_function +EXPORT_SYMBOL vmlinux 0xffe7561e __set_page_dirty_nobuffers +EXPORT_SYMBOL vmlinux 0xfffa3a68 fb_set_var +EXPORT_SYMBOL_GPL crypto/af_alg 0x19cc304f af_alg_unregister_type +EXPORT_SYMBOL_GPL crypto/af_alg 0x1bdbfdbf af_alg_make_sg +EXPORT_SYMBOL_GPL crypto/af_alg 0x245f239c af_alg_complete +EXPORT_SYMBOL_GPL crypto/af_alg 0x40080399 af_alg_link_sg +EXPORT_SYMBOL_GPL crypto/af_alg 0x4140c562 af_alg_release +EXPORT_SYMBOL_GPL crypto/af_alg 0x491064a0 af_alg_register_type +EXPORT_SYMBOL_GPL crypto/af_alg 0x58716898 af_alg_wait_for_completion +EXPORT_SYMBOL_GPL crypto/af_alg 0x5cd410c6 af_alg_accept +EXPORT_SYMBOL_GPL crypto/af_alg 0xc863b313 af_alg_free_sg +EXPORT_SYMBOL_GPL crypto/af_alg 0xe36a929f af_alg_cmsg_send +EXPORT_SYMBOL_GPL crypto/asymmetric_keys/pkcs7_message 0x1c8f3d8f pkcs7_parse_message +EXPORT_SYMBOL_GPL crypto/asymmetric_keys/pkcs7_message 0x70af7434 pkcs7_validate_trust +EXPORT_SYMBOL_GPL crypto/asymmetric_keys/pkcs7_message 0xbe82ff95 pkcs7_get_content_data +EXPORT_SYMBOL_GPL crypto/asymmetric_keys/pkcs7_message 0xcc45da99 pkcs7_free_message +EXPORT_SYMBOL_GPL crypto/asymmetric_keys/pkcs7_message 0xe9ff17e6 pkcs7_verify +EXPORT_SYMBOL_GPL crypto/async_tx/async_memcpy 0x1b50459a async_memcpy +EXPORT_SYMBOL_GPL crypto/async_tx/async_pq 0x57c7ab83 async_syndrome_val +EXPORT_SYMBOL_GPL crypto/async_tx/async_pq 0xe7cf154d async_gen_syndrome +EXPORT_SYMBOL_GPL crypto/async_tx/async_raid6_recov 0x2e6aaab4 async_raid6_2data_recov +EXPORT_SYMBOL_GPL crypto/async_tx/async_raid6_recov 0x7ce77efa async_raid6_datap_recov +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0x209f65c3 __async_tx_find_channel +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0x3f6320df async_trigger_callback +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0xbb09aac9 async_tx_quiesce +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0xed7d6801 async_tx_submit +EXPORT_SYMBOL_GPL crypto/async_tx/async_xor 0x880cefcc async_xor_val +EXPORT_SYMBOL_GPL crypto/async_tx/async_xor 0xc66ef846 async_xor +EXPORT_SYMBOL_GPL crypto/authenc 0x587ef278 crypto_authenc_extractkeys +EXPORT_SYMBOL_GPL crypto/blowfish_common 0x49984fe2 blowfish_setkey +EXPORT_SYMBOL_GPL crypto/cast5_generic 0x27278ca9 __cast5_encrypt +EXPORT_SYMBOL_GPL crypto/cast5_generic 0x4a2a3ca6 __cast5_decrypt +EXPORT_SYMBOL_GPL crypto/cast5_generic 0x88ee6f0c cast5_setkey +EXPORT_SYMBOL_GPL crypto/cast6_generic 0x1291971c __cast6_setkey +EXPORT_SYMBOL_GPL crypto/cast6_generic 0x1e2c961f __cast6_decrypt +EXPORT_SYMBOL_GPL crypto/cast6_generic 0x8f04034a __cast6_encrypt +EXPORT_SYMBOL_GPL crypto/cast6_generic 0xd05d78cd cast6_setkey +EXPORT_SYMBOL_GPL crypto/cast_common 0x08aa6fb7 cast_s1 +EXPORT_SYMBOL_GPL crypto/cast_common 0x0c5fbf8a cast_s3 +EXPORT_SYMBOL_GPL crypto/cast_common 0xe39dd4b4 cast_s2 +EXPORT_SYMBOL_GPL crypto/cast_common 0xee83a4f3 cast_s4 +EXPORT_SYMBOL_GPL crypto/cryptd 0x276de8a9 cryptd_alloc_ahash +EXPORT_SYMBOL_GPL crypto/cryptd 0x4496d339 cryptd_free_ablkcipher +EXPORT_SYMBOL_GPL crypto/cryptd 0x4a5685b0 cryptd_free_aead +EXPORT_SYMBOL_GPL crypto/cryptd 0x5eb2c01b cryptd_free_ahash +EXPORT_SYMBOL_GPL crypto/cryptd 0x7150e5d9 cryptd_alloc_aead +EXPORT_SYMBOL_GPL crypto/cryptd 0x71651d56 cryptd_alloc_ablkcipher +EXPORT_SYMBOL_GPL crypto/cryptd 0x95ccaa24 cryptd_ablkcipher_child +EXPORT_SYMBOL_GPL crypto/cryptd 0x99b52ee4 cryptd_ahash_child +EXPORT_SYMBOL_GPL crypto/cryptd 0xb2d28a93 cryptd_shash_desc +EXPORT_SYMBOL_GPL crypto/cryptd 0xc3daf248 cryptd_aead_child +EXPORT_SYMBOL_GPL crypto/crypto_null 0x21cd536a crypto_put_default_null_skcipher +EXPORT_SYMBOL_GPL crypto/crypto_null 0xf241d614 crypto_get_default_null_skcipher +EXPORT_SYMBOL_GPL crypto/des_generic 0xcfd9a2c0 des_ekey +EXPORT_SYMBOL_GPL crypto/des_generic 0xf8c78d49 __des3_ede_setkey +EXPORT_SYMBOL_GPL crypto/lrw 0x3864eb66 lrw_free_table +EXPORT_SYMBOL_GPL crypto/lrw 0x8c7a1e3f lrw_crypt +EXPORT_SYMBOL_GPL crypto/lrw 0xcd074900 lrw_init_table +EXPORT_SYMBOL_GPL crypto/mcryptd 0x390d9356 mcryptd_ahash_child +EXPORT_SYMBOL_GPL crypto/mcryptd 0x59a610da mcryptd_free_ahash +EXPORT_SYMBOL_GPL crypto/mcryptd 0x6405c8ea mcryptd_shash_desc +EXPORT_SYMBOL_GPL crypto/mcryptd 0x8347667c mcryptd_flusher +EXPORT_SYMBOL_GPL crypto/mcryptd 0xaf792854 shash_ahash_mcryptd_final +EXPORT_SYMBOL_GPL crypto/mcryptd 0xb4168a1f shash_ahash_mcryptd_finup +EXPORT_SYMBOL_GPL crypto/mcryptd 0xd6abdeac shash_ahash_mcryptd_update +EXPORT_SYMBOL_GPL crypto/mcryptd 0xe1c5a87c mcryptd_alloc_ahash +EXPORT_SYMBOL_GPL crypto/mcryptd 0xe2e25873 shash_ahash_mcryptd_digest +EXPORT_SYMBOL_GPL crypto/rsa_generic 0xadc25bd8 rsa_parse_key +EXPORT_SYMBOL_GPL crypto/rsa_generic 0xf1b141d1 rsa_free_key +EXPORT_SYMBOL_GPL crypto/serpent_generic 0x5ddb33e9 __serpent_encrypt +EXPORT_SYMBOL_GPL crypto/serpent_generic 0x77b39cb4 __serpent_setkey +EXPORT_SYMBOL_GPL crypto/serpent_generic 0x8a1a99ad __serpent_decrypt +EXPORT_SYMBOL_GPL crypto/serpent_generic 0xf5844047 serpent_setkey +EXPORT_SYMBOL_GPL crypto/twofish_common 0x6c3229bb __twofish_setkey +EXPORT_SYMBOL_GPL crypto/twofish_common 0xe35622ac twofish_setkey +EXPORT_SYMBOL_GPL crypto/xts 0x953f6d98 xts_crypt +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x2aaba478 ahci_start_fis_rx +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x30c2e41d ahci_save_initial_config +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x33e80135 ahci_kick_engine +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x3abb523c ahci_pmp_retry_srst_ops +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x48a4fbe2 ahci_port_resume +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x5b574d55 ahci_shost_attrs +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x6daee467 ahci_host_activate +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x6de2962a ahci_check_ready +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x7164cd20 ahci_stop_engine +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x78af7f50 ahci_init_controller +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x7d6a8590 ahci_do_softreset +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x7f73c6c1 ahci_set_em_messages +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x8ba854ac ahci_em_messages +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x9e27c063 ahci_dev_classify +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xa149c501 ahci_reset_controller +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xb1d960e6 ahci_ops +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xbcd0fc16 ahci_sdev_attrs +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xbda7644c ahci_print_info +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xc22a13dc ahci_error_handler +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xcaaca11d ahci_fill_cmd_slot +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xe2d66838 ahci_start_engine +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xea50dad3 ahci_ignore_sss +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xef26e1a2 ahci_reset_em +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xfffc67b3 ahci_qc_issue +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x014ff335 ahci_platform_ops +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x0858c76d ahci_platform_disable_resources +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x25c88d89 ahci_platform_disable_clks +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x3257c71e ahci_platform_enable_resources +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x359eeee0 ahci_platform_disable_regulators +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x634e11f2 ahci_platform_enable_clks +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x701e6e0d ahci_platform_init_host +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0xd7b71f0e ahci_platform_get_resources +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0xfca8c166 ahci_platform_enable_regulators +EXPORT_SYMBOL_GPL drivers/ata/pata_platform 0x8d7d9067 __pata_platform_probe +EXPORT_SYMBOL_GPL drivers/ata/pata_sis 0x0b450199 sis_info133_for_sata +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-spmi 0xa9e39190 regmap_init_spmi_base +EXPORT_SYMBOL_GPL drivers/base/regmap/regmap-spmi 0xbcc072f9 regmap_init_spmi_ext +EXPORT_SYMBOL_GPL drivers/base/regmap/regmap-spmi 0xc93fe692 devm_regmap_init_spmi_base +EXPORT_SYMBOL_GPL drivers/base/regmap/regmap-spmi 0xd039a566 devm_regmap_init_spmi_ext +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x06d15b5c bcma_driver_unregister +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x1c9a2c90 bcma_core_disable +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x41404415 bcma_host_pci_irq_ctl +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x573dc2cf bcma_chipco_get_alp_clock +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x61c2d7d1 bcma_host_pci_up +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x6743cd0d bcma_core_pll_ctl +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x72e6b07f bcma_host_pci_down +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x75a8fa61 bcma_core_enable +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x843679ba bcma_chipco_pll_read +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x857d3901 bcma_chipco_regctl_maskset +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x8b61560f bcma_core_is_enabled +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x92a0c11d __bcma_driver_register +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xa82f4a1c bcma_chipco_gpio_control +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xb9faaaed bcma_chipco_gpio_outen +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xbab2057d bcma_chipco_gpio_out +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xbc99c442 bcma_chipco_pll_write +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xbffc9568 bcma_find_core_unit +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xc4fca293 bcma_chipco_pll_maskset +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xcf789f0e bcma_pmu_spuravoid_pllupdate +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xd7e81d9b bcma_core_set_clockmode +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xe0f405ea bcma_pmu_get_bus_clock +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xe4a1dde8 bcma_chipco_chipctl_maskset +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xf5697f18 bcma_core_pci_power_save +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xf5a33c71 bcma_chipco_b_mii_write +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0x316a7828 btbcm_check_bdaddr +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0x7bc71e6c btbcm_set_bdaddr +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0x83a7d370 btbcm_setup_patchram +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0x8e57e195 btbcm_setup_apple +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0x90514670 btbcm_finalize +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0xfb80a68b btbcm_initialize +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0x8b069764 btintel_check_bdaddr +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0xa596894a btintel_set_bdaddr +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x449bdde0 btmrvl_process_event +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x48c66424 btmrvl_enable_ps +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x558554ac btmrvl_send_hscfg_cmd +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x8451e1ee btmrvl_enable_hs +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x9c092fce btmrvl_add_card +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x9ea7e2b9 btmrvl_register_hdev +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x9faed67e btmrvl_send_module_cfg_cmd +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xbae4321d btmrvl_interrupt +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xcf9188aa btmrvl_remove_card +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xdc734dfc btmrvl_pscan_window_reporting +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xf99e422d btmrvl_check_evtpkt +EXPORT_SYMBOL_GPL drivers/bluetooth/btrtl 0x11e2fa36 btrtl_setup_realtek +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0x02989e3d dw_dma_filter +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0x0b8b8f36 dw_dma_remove +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0x3305a267 dw_dma_probe +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0x3a282926 dw_dma_disable +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0xff5c713a dw_dma_enable +EXPORT_SYMBOL_GPL drivers/dma/fsldma 0x7f2367fe fsl_dma_external_start +EXPORT_SYMBOL_GPL drivers/dma/hsu/hsu_dma 0x8eca8ee5 hsu_dma_remove +EXPORT_SYMBOL_GPL drivers/dma/hsu/hsu_dma 0xc5d90ead hsu_dma_irq +EXPORT_SYMBOL_GPL drivers/dma/hsu/hsu_dma 0xeeb78bbb hsu_dma_probe +EXPORT_SYMBOL_GPL drivers/dma/virt-dma 0x2f698223 vchan_init +EXPORT_SYMBOL_GPL drivers/dma/virt-dma 0x3f1b1b9b vchan_find_desc +EXPORT_SYMBOL_GPL drivers/dma/virt-dma 0x3fc1d4bb vchan_dma_desc_free_list +EXPORT_SYMBOL_GPL drivers/dma/virt-dma 0xe0649832 vchan_tx_submit +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x0a25276e edac_pci_handle_pe +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x0c32ff8a edac_pci_alloc_index +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x135251ac edac_pci_release_generic_ctl +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x159c316b edac_pci_alloc_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x1642699c edac_pci_free_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x1b34789a edac_device_handle_ce +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x2c8dd6b8 edac_mem_types +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x30f36c9d find_mci_by_dev +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x43a70fb1 edac_mc_handle_error +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x4613c258 edac_device_add_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x619d0377 edac_pci_reset_delay_period +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x61fd4330 edac_device_alloc_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x65935187 edac_mc_find_csrow_by_page +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x6e3ff83a edac_device_alloc_index +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x70af369d edac_raw_mc_handle_error +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x7414643f edac_mc_add_mc_with_groups +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x7b69e6af edac_mc_alloc +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x9e02abb5 edac_device_handle_ue +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xa429ab2e edac_device_free_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xc0dcb59e edac_layer_name +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xd3f474d5 edac_pci_create_generic_ctl +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xdb6562d7 edac_pci_del_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xdb879f97 edac_pci_handle_npe +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xdd87b387 edac_mc_free +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xe17b5300 edac_mc_del_mc +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xe2433fa0 edac_device_del_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xea660e78 edac_pci_add_device +EXPORT_SYMBOL_GPL drivers/firewire/firewire-core 0xf4ade51f fw_card_release +EXPORT_SYMBOL_GPL drivers/gpio/gpio-generic 0x3ae8c13b bgpio_init +EXPORT_SYMBOL_GPL drivers/gpio/gpio-generic 0xefdfd583 bgpio_remove +EXPORT_SYMBOL_GPL drivers/gpio/gpio-max730x 0xb4bae889 __max730x_remove +EXPORT_SYMBOL_GPL drivers/gpio/gpio-max730x 0xcfd0c75c __max730x_probe +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x29eae0bb of_get_drm_display_mode +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x2da989d5 drm_class_device_register +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xb8656992 drm_do_get_edid +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xb9674bd3 drm_display_mode_from_videomode +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xc50bec1f drm_class_device_unregister +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xd39d50ca drm_display_mode_to_videomode +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0x5419c838 ttm_dma_page_alloc_debugfs +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0x6adf436b ttm_prime_fd_to_handle +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0xb775797e ttm_dma_populate +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0xce36343e ttm_prime_handle_to_fd +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0xd38cf7a5 ttm_dma_unpopulate +EXPORT_SYMBOL_GPL drivers/hid/hid 0x005b1e51 hid_parse_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x05495392 hid_debug +EXPORT_SYMBOL_GPL drivers/hid/hid 0x06618c1a hid_destroy_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0x0b561e53 __hid_register_driver +EXPORT_SYMBOL_GPL drivers/hid/hid 0x14ed5c01 hid_register_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x32a9017e hidinput_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x39cfbccc hid_resolv_usage +EXPORT_SYMBOL_GPL drivers/hid/hid 0x4906a967 hid_snto32 +EXPORT_SYMBOL_GPL drivers/hid/hid 0x5492ad00 hid_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x5a34eac7 hidinput_get_led_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0x5b72b14e hidinput_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x625f7d95 hid_validate_values +EXPORT_SYMBOL_GPL drivers/hid/hid 0x635e57b9 hid_alloc_report_buf +EXPORT_SYMBOL_GPL drivers/hid/hid 0x6fe4e65e hid_field_extract +EXPORT_SYMBOL_GPL drivers/hid/hid 0x877a2912 hid_dump_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x8a1b9a73 hid_dump_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0x8fb941e3 hid_output_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x936ed8bc hidinput_calc_abs_res +EXPORT_SYMBOL_GPL drivers/hid/hid 0x99bcc3de hid_unregister_driver +EXPORT_SYMBOL_GPL drivers/hid/hid 0x9c49896a hid_add_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0x9ce27532 hidinput_find_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0xa5da0b2b hidraw_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0xa64ecbdd hid_dump_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0xa8ab5788 hid_input_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0xa92dc54c hid_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0xacc941a5 hidinput_count_leds +EXPORT_SYMBOL_GPL drivers/hid/hid 0xae782051 hid_dump_input +EXPORT_SYMBOL_GPL drivers/hid/hid 0xb2e2f9b4 hid_report_raw_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0xb667a12e hidinput_report_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0xb8f01738 hid_open_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0xbc741157 hid_ignore +EXPORT_SYMBOL_GPL drivers/hid/hid 0xbdee69f1 hid_debug_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0xd5239166 hidraw_report_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0xe1b640a0 hid_allocate_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0xe230f7c5 hidraw_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0xefffeadf __hid_request +EXPORT_SYMBOL_GPL drivers/hid/hid 0xf1f83711 hid_check_keys_pressed +EXPORT_SYMBOL_GPL drivers/hid/hid 0xf645f1f3 hid_set_field +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat 0x2f622ea1 roccat_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat 0x8b8224be roccat_connect +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat 0x8c4181ec roccat_report_event +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x2ee732b7 roccat_common2_device_init_struct +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x7085ce4b roccat_common2_receive +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x7666c6ca roccat_common2_sysfs_read +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x78cf6db2 roccat_common2_send_with_status +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0xa998ee26 roccat_common2_send +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0xd82c0647 roccat_common2_sysfs_write +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x18911488 sensor_hub_device_open +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x4b6cc7f8 sensor_hub_get_feature +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x60fb3587 sensor_hub_set_feature +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x6b4dcffa hid_sensor_get_usage_index +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0xaaf0dd3e sensor_hub_register_callback +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0xde41d4c5 sensor_hub_input_attr_get_raw_value +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0xed1fd1cc sensor_hub_device_close +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0xf0b4c873 sensor_hub_remove_callback +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0xffb1f3a1 sensor_hub_input_get_attribute_info +EXPORT_SYMBOL_GPL drivers/hid/usbhid/usbhid 0x01fd453e usbhid_lookup_quirk +EXPORT_SYMBOL_GPL drivers/hid/usbhid/usbhid 0xaa0e6c0b hiddev_hid_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x03657a78 hsi_claim_port +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x267e3d65 hsi_remove_client +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x269a961a hsi_port_unregister_clients +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x3165caa6 hsi_register_port_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x4cd62098 hsi_unregister_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x7662e748 hsi_unregister_port_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x8680eab4 hsi_register_client_driver +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x9b8787af hsi_add_clients_from_dt +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x9d026f9f hsi_free_msg +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xa5b4460d hsi_put_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xb7326e52 hsi_alloc_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xbabf247e hsi_register_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xbe2bc34b hsi_release_port +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xc0ecc25a hsi_get_channel_id_by_name +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xce63e4ea hsi_async +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xcf941f7f hsi_new_client +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xe63177d9 hsi_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xfaca4ce3 hsi_alloc_msg +EXPORT_SYMBOL_GPL drivers/hwmon/adt7x10 0x376df6f9 adt7x10_probe +EXPORT_SYMBOL_GPL drivers/hwmon/adt7x10 0x880326fc adt7x10_remove +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x060e4d10 pmbus_get_driver_info +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x11f2029a pmbus_write_byte_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x13d2a206 pmbus_set_page +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x2484aca2 pmbus_do_remove +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x45fec05d pmbus_read_byte_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x49277c1c pmbus_write_word_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x4a6f050d pmbus_update_byte_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x666f65f2 pmbus_regulator_ops +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x793f28e1 pmbus_check_word_register +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x954969f1 pmbus_check_byte_register +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xa299980c pmbus_write_byte +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xac1c6be5 pmbus_do_probe +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xd97a9e7d pmbus_clear_cache +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xf0098e89 pmbus_clear_faults +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xfe1cec18 pmbus_read_word_data +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x0b08e7b5 i2c_dw_is_enabled +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x1af3b7ad i2c_dw_enable +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x5b1174fa i2c_dw_disable +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x5bb1170b i2c_dw_isr +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x60a91b06 i2c_dw_func +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x67bf8e15 i2c_dw_read_comp_param +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x6ec5462e i2c_dw_disable_int +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x828596ae i2c_dw_clear_int +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x877ac6e3 i2c_dw_init +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0xf0ca67f1 i2c_dw_xfer +EXPORT_SYMBOL_GPL drivers/i2c/i2c-mux 0x7dfe620b i2c_del_mux_adapter +EXPORT_SYMBOL_GPL drivers/i2c/i2c-mux 0xb30ce5b9 i2c_add_mux_adapter +EXPORT_SYMBOL_GPL drivers/i2c/i2c-smbus 0x9635a8c2 i2c_setup_smbus_alert +EXPORT_SYMBOL_GPL drivers/i2c/i2c-smbus 0xb23b14f9 i2c_handle_smbus_alert +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x1a39a1cc ad_sigma_delta_single_conversion +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x6a01dc2c ad_sd_setup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x709b8951 ad_sd_validate_trigger +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x883a2dce ad_sd_cleanup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xa84739a9 ad_sd_calibrate_all +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xae2a1067 ad_sd_read_reg +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xb9dad1b6 ad_sd_init +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xbaa60600 ad_sd_write_reg +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xbc0c275e ad_sd_set_comm +EXPORT_SYMBOL_GPL drivers/iio/adc/twl4030-madc 0x4362dc66 twl4030_get_madc_conversion +EXPORT_SYMBOL_GPL drivers/iio/adc/twl4030-madc 0xb1be4a75 twl4030_madc_conversion +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x010279d2 adis_probe_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x12e5441c adis_cleanup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x1a85399d adis_initial_startup +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x5dd6a133 adis_update_scan_mode +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x5fec4c82 adis_reset +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x70667625 adis_check_status +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x906bd610 adis_remove_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x9c9d9830 adis_init +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xab45dc3a adis_setup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xbe996690 adis_single_conversion +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xdc9d8f60 adis_read_reg +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xe3679fe3 adis_write_reg +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x021ebfec iio_alloc_pollfunc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x19e93e98 iio_validate_scan_mask_onehot +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x1f30fb2b iio_channel_release_all +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x1fe94099 iio_channel_get +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x211cbc86 iio_update_demux +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x267c0508 iio_channel_release_all_cb +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x26f6b499 iio_str_to_fixpoint +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x2a1fab3c iio_channel_stop_all_cb +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x2d4e832c iio_enum_write +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x3a737ddc iio_convert_raw_to_processed +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x3c9878a7 iio_channel_get_all +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x3dea5502 devm_iio_device_register +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x556ab6f9 devm_iio_trigger_free +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x5a9e85fd iio_read_channel_average_raw +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x6b4f13e8 devm_iio_trigger_alloc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x724afe31 iio_scan_mask_query +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x76991165 iio_dealloc_pollfunc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x7a711aef iio_channel_start_all_cb +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x7dfb3fa3 iio_get_channel_type +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x808aef30 iio_read_channel_raw +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x81155bba iio_enum_available_read +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x8500340c iio_update_buffers +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x878ddc42 iio_map_array_register +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x88fb4acc iio_channel_cb_get_channels +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x8aad01a6 iio_buffer_get +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x96b725ba devm_iio_device_alloc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x9c0c9e18 iio_read_channel_scale +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xa97fb294 iio_map_array_unregister +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xbc2c4135 iio_channel_release +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xc7f0b440 devm_iio_device_unregister +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xc931c62e devm_iio_device_free +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xcd4ef4e7 iio_read_channel_processed +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xd2b0676c iio_push_to_buffers +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xd88816b4 iio_channel_get_all_cb +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xd8996e9d iio_buffer_put +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xeee397e7 iio_write_channel_raw +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xf0030a86 iio_enum_read +EXPORT_SYMBOL_GPL drivers/infiniband/core/ib_core 0xdbd019c4 ib_wq +EXPORT_SYMBOL_GPL drivers/input/ff-memless 0xda3bb18f input_ff_create_memless +EXPORT_SYMBOL_GPL drivers/input/matrix-keymap 0x91202a92 matrix_keypad_parse_of_params +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 0xc994db1a adxl34x_probe +EXPORT_SYMBOL_GPL drivers/input/misc/adxl34x 0xe4586827 adxl34x_resume +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp4_core 0x2b672e6a cyttsp4_probe +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp4_core 0x7ba2656b cyttsp4_pm_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp4_core 0x7bcd8b49 cyttsp4_remove +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_core 0x438f6153 cyttsp_remove +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_core 0x8ebea66c cyttsp_probe +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_core 0xf2e7f596 cyttsp_pm_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_i2c_common 0x55bb5b68 cyttsp_i2c_read_block_data +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_i2c_common 0xca2ff0e5 cyttsp_i2c_write_block_data +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x0f315115 wm97xx_read_aux_adc +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x32788a73 wm9713_codec +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x57dbdb8f wm97xx_config_gpio +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x87034ae1 wm97xx_set_gpio +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xa547aca6 wm97xx_register_mach_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xa617b39e wm97xx_reg_write +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xa9a5246f wm97xx_unregister_mach_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xd7101234 wm97xx_get_gpio +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xe36c97b7 wm9705_codec +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xead8aaa8 wm97xx_set_suspend_mode +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xf6d63a72 wm97xx_reg_read +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xfed28aed wm9712_codec +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x05163c94 ipack_put_device +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x216c7048 ipack_driver_unregister +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x37ae96be ipack_bus_unregister +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x59310de0 ipack_bus_register +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0xb83fca28 ipack_driver_register +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0xba8a6725 ipack_get_device +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0xc9af1693 ipack_device_init +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0xcc84d235 ipack_device_add +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0xf3859656 ipack_device_del +EXPORT_SYMBOL_GPL drivers/isdn/capi/kernelcapi 0x23359aff unregister_capictr_notifier +EXPORT_SYMBOL_GPL drivers/isdn/capi/kernelcapi 0xce1414b2 register_capictr_notifier +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x418c51a4 gigaset_skb_rcvd +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x454aa44f gigaset_debuglevel +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x5126fb4c gigaset_freecs +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x59d434dd gigaset_isdn_rcv_err +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x9cda0f79 gigaset_add_event +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x9ec13e63 gigaset_initcs +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xa3151853 gigaset_dbg_buffer +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xae43dfd8 gigaset_stop +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xaffeb838 gigaset_blockdriver +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xc550e612 gigaset_initdriver +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xc58214af gigaset_m10x_send_skb +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xc82e5beb gigaset_handle_modem_response +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xcc2cc5fa gigaset_fill_inbuf +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xcfc9047e gigaset_skb_sent +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xd49b81e9 gigaset_freedriver +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xe1a915bf gigaset_m10x_input +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xf3d7c50a gigaset_start +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xfb7c61d9 gigaset_if_receive +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xfe38b095 gigaset_shutdown +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0x0840908b led_classdev_flash_unregister +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0x313fc468 led_get_flash_fault +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0xb16742ea led_set_flash_brightness +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0xd8cad238 led_update_flash_brightness +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0xdfcf9bde led_classdev_flash_register +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0xecca083a led_set_flash_timeout +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 0x0048bb9b wf_put_control +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0x0a0527be wf_register_client +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0x0f6dbcf4 wf_unregister_sensor +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0x59af04b9 wf_find_sensor +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0x5f0dd136 wf_unregister_control +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0x6a3ceef0 wf_put_sensor +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0x75147afa wf_set_overtemp +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0x7c192aa7 wf_get_sensor +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0x94765fac wf_critical_overtemp +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0x97a8fc7d wf_find_control +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0xa2f19a49 wf_is_overtemp +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0xbcace2a5 wf_unregister_client +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0xc53c7c69 wf_get_control +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0xcf157c37 wf_register_control +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0xd519d6b2 wf_register_sensor +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0xed82a14f wf_clear_overtemp +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x2dc4d107 __mcb_register_driver +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x4d07e4e7 mcb_bus_add_devices +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x5462807e mcb_bus_get +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x6240eb88 mcb_alloc_bus +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x7d8099de mcb_get_irq +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x8ba4c9e7 chameleon_parse_cells +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x8bf52ac0 mcb_release_mem +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0xa17b8742 mcb_free_dev +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0xa30977e2 mcb_release_bus +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0xc8f8e22c mcb_device_register +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0xcdc0868a mcb_bus_put +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0xd4ba539e mcb_unregister_driver +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0xd94a89cd mcb_alloc_dev +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0xe2bc9e3c mcb_request_mem +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x0ec17d44 __tracepoint_bcache_bypass_congested +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x26062738 __tracepoint_bcache_alloc_fail +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x2fc380ce __tracepoint_bcache_invalidate +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x40c27b88 __tracepoint_bcache_cache_insert +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x4c49fc16 __tracepoint_bcache_btree_node_split +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x51a15737 __tracepoint_bcache_btree_set_root +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x616b6217 __tracepoint_bcache_read +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x6907ac0d __tracepoint_bcache_request_end +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x7be42a1c __tracepoint_bcache_journal_replay_key +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x7e532a71 __tracepoint_bcache_btree_cache_cannibalize +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x914361f4 __tracepoint_bcache_journal_entry_full +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x9272fb0f __tracepoint_bcache_read_retry +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x938cc2b2 __tracepoint_bcache_btree_insert_key +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xa649dd21 __tracepoint_bcache_btree_node_alloc +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xb157059f __tracepoint_bcache_gc_copy_collision +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xb317649e __tracepoint_bcache_btree_node_alloc_fail +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xb493772a __tracepoint_bcache_gc_start +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xb834c124 __tracepoint_bcache_btree_write +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xbb1fc0a4 __tracepoint_bcache_journal_full +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xbc4fcb1e __tracepoint_bcache_write +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xc1474d91 __tracepoint_bcache_btree_read +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xc379085a __tracepoint_bcache_bypass_sequential +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xc5aed8ad __tracepoint_bcache_writeback_collision +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xc7eda602 __tracepoint_bcache_btree_node_compact +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xce055cbe __tracepoint_bcache_btree_gc_coalesce +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xe20fe821 __tracepoint_bcache_gc_end +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xe24daf87 __tracepoint_bcache_gc_copy +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xe2ed0930 __tracepoint_bcache_btree_node_free +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xea2303e0 __tracepoint_bcache_journal_write +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xef1156ee __tracepoint_bcache_writeback +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xfc131205 __tracepoint_bcache_request_start +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x17dd39d6 dm_deferred_set_create +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x1ee3fa91 dm_bio_prison_free_cell +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x2eb01e04 dm_deferred_set_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x641f7c50 dm_cell_release_no_holder +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 0x78d7975a dm_get_cell +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x85f2d085 dm_cell_release +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x86b5399b dm_cell_promote_or_release +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xa0270768 dm_bio_prison_alloc_cell +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xa08d3623 dm_bio_detain +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xb2ec1fbe dm_cell_visit_release +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xb44084dc dm_cell_error +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-bufio 0x0ad0dc4f dm_bufio_mark_buffer_dirty +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x37aca699 dm_bufio_client_create +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x6aba7f5e dm_bufio_get_block_number +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x6d3f57bd dm_bufio_get_client +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 0x9310ba06 dm_bufio_release_move +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x9c256008 dm_bufio_get_device_size +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xa1d2413a dm_bufio_read +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xa448e19f dm_bufio_prefetch +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xa82b2066 dm_bufio_write_dirty_buffers +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xafbda3f3 dm_bufio_new +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xc9a3422d dm_bufio_write_dirty_buffers_async +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xcbb1bae2 dm_bufio_get +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xd4bddf5c dm_bufio_issue_flush +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-cache 0x8c03363c dm_cache_policy_get_hint_size +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xa898c3ef dm_cache_policy_create +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xb1346009 dm_cache_policy_unregister +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xcfa99127 dm_cache_policy_register +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xe0819c9f dm_cache_policy_get_name +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xf0d99e8c dm_cache_policy_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xf54537eb dm_cache_policy_get_version +EXPORT_SYMBOL_GPL drivers/md/dm-multipath 0x563241fb dm_register_path_selector +EXPORT_SYMBOL_GPL drivers/md/dm-multipath 0xc3cd5953 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 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 0x4430764e dm_rh_region_to_sector +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x45ab972a dm_rh_dec +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x5ac32914 dm_rh_bio_to_region +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x5c61c20b dm_rh_mark_nosync +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x66de2035 dm_rh_delay +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x67677446 dm_rh_dirty_log +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x71addff9 dm_region_hash_create +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 0xa53387c7 dm_rh_flush +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xa68e1f06 dm_rh_get_state +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 0xf23ac206 dm_rh_inc_pending +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xfad9d53a dm_rh_get_region_size +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xfc62ef4e dm_rh_get_region_key +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 0x01445176 dm_btree_find_highest_key +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x0604db1b dm_btree_remove_leaves +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x17c36f29 dm_bm_checksum +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x1e3f728d dm_block_data +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x2025e954 dm_array_info_init +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x24fa6664 dm_bitset_set_bit +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x2c112836 dm_block_location +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 0x32b5f546 dm_array_empty +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 0x3ad0f55b dm_bm_flush +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x40f7bd91 dm_tm_inc +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x42dbdfc3 dm_tm_read_lock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x4360913e dm_btree_find_lowest_key +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x49b35849 dm_sm_disk_create +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x55b4bd4d dm_tm_create_with_sm +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x5aed1dd7 dm_bitset_flush +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x5e6aea80 dm_btree_walk +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x62c1b9ee dm_array_walk +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 0x72289260 dm_block_manager_destroy +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x7657e859 dm_bitset_clear_bit +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 0x80c89b3d dm_tm_unlock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x827a42f4 dm_tm_open_with_sm +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x832bf228 dm_array_del +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x858c8d94 dm_array_set_value +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x89f1e1cc dm_btree_insert_notify +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 0x966a8838 dm_btree_lookup +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 0x9f624559 dm_sm_disk_open +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xa87c5b4d dm_array_resize +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xab96bd2d dm_bitset_test_bit +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xaee02382 dm_btree_empty +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xafeda29f dm_bm_write_lock_zero +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xb7bad799 dm_bm_unlock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xb9a6ecf8 dm_tm_dec +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xba47c03a dm_bitset_del +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xbd50ebbb dm_btree_del +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xca40abd5 dm_btree_insert +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xd041d62b dm_array_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 0xd29923fb dm_tm_shadow_block +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xe4c03938 dm_block_manager_create +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xed1e1f96 dm_btree_remove +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xed58cfa1 dm_bitset_empty +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xf12ec3cd dm_disk_bitset_init +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xf375d009 dm_bm_write_lock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xf5455120 dm_bm_read_lock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xffff2ac3 dm_bitset_resize +EXPORT_SYMBOL_GPL drivers/media/common/b2c2/b2c2-flexcop 0x66c0289a b2c2_flexcop_debug +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x00ebe166 saa7146_vfree_destroy_pgtable +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x0a07f7f7 saa7146_pgtable_build_single +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x2d5ecec8 saa7146_i2c_adapter_prepare +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x38e25fbd saa7146_register_extension +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xabf745fc saa7146_unregister_extension +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xae48c89d saa7146_setgpio +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xc1e53809 saa7146_pgtable_free +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xd8e9af2a saa7146_wait_for_debi_done +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xe2c982dc saa7146_pgtable_alloc +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xe3cd9b5c saa7146_debug +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xefca675d saa7146_vmalloc_build_pgtable +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x3306b1b2 saa7146_start_preview +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x615e2657 saa7146_register_device +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x6e033535 saa7146_unregister_device +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x83362d6e saa7146_stop_preview +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0xa963f339 saa7146_vv_init +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0xb6ca75c9 saa7146_set_hps_source_and_sync +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0xc13ea4e6 saa7146_vv_release +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x125fca67 smscore_unregister_device +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x21e36bf2 smscore_registry_getmode +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 0x50967425 smscore_start_device +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x684818e5 sms_board_power +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x74ee9098 sms_board_load_modules +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x7b0688f0 smscore_onresponse +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x7b091e64 smscore_get_device_mode +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x7b57357c sms_board_event +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x7c576277 smsendian_handle_message_header +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x84353de6 smscore_register_client +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x844539ae sms_get_board +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x8ec3179d sms_board_led_feedback +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x99a81ab3 smsclient_sendrequest +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x9a5f5b4a smscore_register_hotplug +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x9c2225ed smscore_translate_msg +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xa64c9011 smscore_register_device +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xa8b2309b smscore_set_board_id +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xb28b1356 smscore_get_board_id +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xb3e747b5 smscore_unregister_hotplug +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xbbdb5c42 smscore_unregister_client +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xbc3329f0 sms_board_setup +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xde8982ba smscore_getbuffer +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xe3fb86e8 smscore_putbuffer +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xec9d1557 sms_board_lna_control +EXPORT_SYMBOL_GPL drivers/media/dvb-frontends/as102_fe 0x78668538 as102_attach +EXPORT_SYMBOL_GPL drivers/media/dvb-frontends/cx24117 0x326bfac5 cx24117_attach +EXPORT_SYMBOL_GPL drivers/media/dvb-frontends/tda18271c2dd 0x1937e5fb tda18271c2dd_attach +EXPORT_SYMBOL_GPL drivers/media/media 0x02375a28 media_entity_remote_pad +EXPORT_SYMBOL_GPL drivers/media/media 0x142cac7a media_device_unregister_entity +EXPORT_SYMBOL_GPL drivers/media/media 0x19a67297 media_entity_remove_links +EXPORT_SYMBOL_GPL drivers/media/media 0x2956726b __media_device_register +EXPORT_SYMBOL_GPL drivers/media/media 0x460e43c7 media_entity_setup_link +EXPORT_SYMBOL_GPL drivers/media/media 0x4cc63d4b media_entity_put +EXPORT_SYMBOL_GPL drivers/media/media 0x5f8eb1d1 media_device_register_entity +EXPORT_SYMBOL_GPL drivers/media/media 0x64ac7705 media_entity_pipeline_stop +EXPORT_SYMBOL_GPL drivers/media/media 0x6657ef4d __media_entity_remove_links +EXPORT_SYMBOL_GPL drivers/media/media 0x671d8d55 media_entity_init +EXPORT_SYMBOL_GPL drivers/media/media 0x6fdac1b7 media_entity_create_link +EXPORT_SYMBOL_GPL drivers/media/media 0x7ff55260 media_entity_graph_walk_next +EXPORT_SYMBOL_GPL drivers/media/media 0x9b875ecb media_entity_get +EXPORT_SYMBOL_GPL drivers/media/media 0xa407abe5 media_entity_graph_walk_start +EXPORT_SYMBOL_GPL drivers/media/media 0xb4d1cbd0 media_entity_find_link +EXPORT_SYMBOL_GPL drivers/media/media 0xc90200a4 media_device_unregister +EXPORT_SYMBOL_GPL drivers/media/media 0xcce1abe8 media_entity_cleanup +EXPORT_SYMBOL_GPL drivers/media/media 0xeabbb976 media_entity_pipeline_start +EXPORT_SYMBOL_GPL drivers/media/pci/cx88/cx88xx 0xb8c12981 cx88_setup_xc3028 +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x0a69960d mantis_pci_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x0cca1802 mantis_dma_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x1b73064b mantis_uart_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x29e61903 mantis_input_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x2ce2cef0 mantis_ca_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x6654b64e mantis_ca_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x6b6b82af mantis_pci_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x7038e4f6 mantis_dma_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x722a0777 mantis_input_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x944c39d0 mantis_get_mac +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xa00cd08f mantis_i2c_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xb0cd0517 mantis_dvb_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xcc3ff9e3 mantis_dvb_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xd6cd68eb mantis_frontend_soft_reset +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xdcfe2c7b mantis_i2c_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xe3e8c2e3 mantis_frontend_power +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xe55f212a mantis_stream_control +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xe594fe96 mantis_uart_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xf9c3f996 mantis_gpio_set_bits +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x05f910ea saa7134_s_tuner +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x0657b4a5 saa7134_s_input +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x26520bb5 saa7134_g_std +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x27905eb7 saa7134_vb2_buffer_queue +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x37ea8987 saa7134_enum_input +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x392444df saa7134_ts_stop_streaming +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x394d1aac saa7134_querystd +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x51576477 saa7134_g_input +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x707af865 saa7134_ts_buffer_init +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x7f0fa496 saa7134_s_std +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x8d79127b saa7134_ts_queue_setup +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xa0c9636a saa7134_querycap +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xa7572816 saa7134_g_tuner +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xa8a43541 saa7134_ts_buffer_prepare +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xb337754b saa7134_s_frequency +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xb4d0f6bf saa7134_ts_qops +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xc3bdd840 saa7134_g_frequency +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xcc8fb19c saa7134_stop_streaming +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xfb6febfb saa7134_ts_start_streaming +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x01e5ea43 ttpci_budget_debiread +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x045e8f20 ttpci_budget_deinit +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x2dc77ef3 ttpci_budget_init_hooks +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x68772b92 ttpci_budget_debiwrite +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x7948c222 budget_debug +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x906813b6 ttpci_budget_set_video_port +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0xc195d0b9 ttpci_budget_init +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0xe1f54aa7 ttpci_budget_irq10_handler +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0x035fec4a xvip_init_resources +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0x0b2585ce xvip_get_format_by_fourcc +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0x2e9b1dae xvip_enum_mbus_code +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0x3c7d2240 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 0x490bd11c xvip_get_format_by_code +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0x652fa295 xvip_clr_or_set +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0xa1463b37 xvip_enum_frame_size +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0xbd7c6c14 xvip_cleanup_resources +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0xe37806e2 xvip_of_get_format +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 0x694857ef xvtc_of_get +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-vtc 0xa8a0f912 xvtc_put +EXPORT_SYMBOL_GPL drivers/media/radio/shark2 0x156f7efa radio_tea5777_init +EXPORT_SYMBOL_GPL drivers/media/radio/shark2 0xc6b6805a radio_tea5777_exit +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x004c7ac7 rc_map_register +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x0afb8569 rc_keydown +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x0bf9054f rc_allocate_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x1ca10797 rc_register_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x392c4d91 rc_free_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x3dba6266 rc_close +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x4ea368d3 ir_raw_event_set_idle +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x511ca964 ir_raw_event_store_with_filter +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x553efb91 rc_core_debug +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x6431312c ir_raw_event_handle +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x7da50e47 rc_map_unregister +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x7dcbaf8d rc_open +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x93e43a49 rc_map_get +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x9719bd96 rc_unregister_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xb6acdcbd ir_raw_event_store +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xc414d89f rc_keydown_notimeout +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xc8968f89 ir_raw_event_store_edge +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xd481d8ae rc_repeat +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xe0222296 rc_g_keycode_from_table +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xf77acfb7 rc_keyup +EXPORT_SYMBOL_GPL drivers/media/tuners/mt2063 0x53245c02 mt2063_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/mt20xx 0xb9503619 microtune_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/mxl5007t 0xfc4c2fb5 mxl5007t_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/r820t 0xc458c0ab r820t_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda18271 0xc24e0cc0 tda18271_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda827x 0x9e28db30 tda827x_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda8290 0xb7c0ad70 tda829x_probe +EXPORT_SYMBOL_GPL drivers/media/tuners/tda8290 0xddb0c2d0 tda829x_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda9887 0x133c7032 tda9887_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5761 0x3863a92a tea5761_autodetection +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5761 0xdba6947b tea5761_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5767 0x094ec6c8 tea5767_autodetection +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5767 0x32283e25 tea5767_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tuner-simple 0xee9abc30 simple_tuner_attach +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x017ea7c7 cx231xx_tuner_callback +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x02859f0d cx231xx_init_vbi_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x1621d106 cx231xx_dev_init +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x273c70dc cx231xx_enable_i2c_port_3 +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x2bf3ee24 cx231xx_uninit_vbi_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x2d876a64 cx231xx_capture_start +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x2df25e8f cx231xx_disable656 +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x3f674cf4 cx231xx_dev_uninit +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x43245aa3 cx231xx_get_i2c_adap +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x4c8edf38 cx231xx_unmute_audio +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x58227936 cx231xx_enable656 +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x6e5f5418 cx231xx_init_bulk +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x7133c59d cx231xx_send_gpio_cmd +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x7a76ac5d cx231xx_uninit_bulk +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x8eed349d cx231xx_send_usb_command +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xa8dfff56 cx231xx_uninit_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xb80825b2 cx231xx_demod_reset +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xbc91987a is_fw_load +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xc4bc5584 cx231xx_init_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xe4adee18 cx231xx_set_alt_setting +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xff65de75 cx231xx_set_mode +EXPORT_SYMBOL_GPL drivers/media/usb/dvb-usb-v2/mxl111sf-demod 0x6de1291b mxl111sf_demod_attach +EXPORT_SYMBOL_GPL drivers/media/usb/dvb-usb-v2/mxl111sf-tuner 0xce8316c5 mxl111sf_tuner_attach +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x0158d2cf em28xx_init_camera +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x3dd59860 em28xx_write_ac97 +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x4613618b em28xx_audio_setup +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x59905eff em28xx_find_led +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x6d578f78 em28xx_boards +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x7423ad09 em28xx_read_ac97 +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x7a78ad7a em28xx_write_regs +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x7fc8652c em28xx_tuner_callback +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x96324106 em28xx_write_reg +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x9e631ff6 em28xx_alloc_urbs +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x9ea2a813 em28xx_read_reg +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xa06abbf9 em28xx_init_usb_xfer +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xa52b25fc em28xx_stop_urbs +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xbd8c9188 em28xx_write_reg_bits +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xc18a000d em28xx_toggle_reg_bits +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xc5d34235 em28xx_uninit_usb_xfer +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xcd75ef7f em28xx_free_device +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xcf502d29 em28xx_setup_xc3028 +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xf96077dd em28xx_set_mode +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xff3cd181 em28xx_gpio_set +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xffc7230c em28xx_audio_analog_set +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x2309a6d6 tm6000_xc5000_callback +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x5beac006 tm6000_set_reg +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x6e800d9c tm6000_set_reg_mask +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x89b611dd tm6000_debug +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0xc15a750b tm6000_set_audio_bitrate +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0xdff8e89d tm6000_tuner_callback +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0xf53fe533 tm6000_get_reg +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x01c483a9 v4l2_get_timestamp +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x0bb2e01a v4l2_i2c_new_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x43b914ec v4l2_i2c_subdev_addr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x4d07581c v4l2_spi_new_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x813f3de4 v4l2_find_nearest_format +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0xa0f5846c v4l2_i2c_new_subdev_board +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0xb528253a v4l2_spi_subdev_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0xf2a353ac v4l2_i2c_tuner_addrs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0xf5ef842e v4l_bound_align_image +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0xf81761b3 v4l2_i2c_subdev_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x08982d59 v4l2_match_dv_timings +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x4103badb v4l2_print_dv_timings +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x5491c182 v4l2_enum_dv_timings_cap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x67b8205b v4l2_detect_cvt +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x6f344bb9 v4l2_calc_aspect_ratio +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0xb0891da2 v4l2_dv_timings_presets +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0xdfa5a008 v4l2_valid_dv_timings +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0xf0e1988c v4l2_find_dv_timings_cap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0xf98d0f9d v4l2_detect_gtf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-flash-led-class 0x18e92a2e v4l2_flash_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-flash-led-class 0x3f81d8aa v4l2_flash_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x02c37b93 v4l2_m2m_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x098e68d1 v4l2_m2m_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x13b812b9 v4l2_m2m_fop_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x17eb0eee v4l2_m2m_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x1a0e7874 v4l2_m2m_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x1d30f337 v4l2_m2m_ioctl_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x1d84f364 v4l2_m2m_ctx_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x1e26e01f v4l2_m2m_ioctl_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x2b65bf28 v4l2_m2m_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x3f70be09 v4l2_m2m_ioctl_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x47e46a12 v4l2_m2m_ioctl_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x4d65c266 v4l2_m2m_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x4ec6d1d9 v4l2_m2m_next_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x75452ebd v4l2_m2m_ioctl_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x820cb7d6 v4l2_m2m_ioctl_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x93bb46b0 v4l2_m2m_ioctl_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xa0d177ac v4l2_m2m_try_schedule +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xb4c220c0 v4l2_m2m_ctx_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xc39421cd v4l2_m2m_fop_mmap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xc6a937c8 v4l2_m2m_buf_remove +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xc6fca5ad v4l2_m2m_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xcbd49487 v4l2_m2m_ioctl_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xd285f7e0 v4l2_m2m_ioctl_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xdc7f9f4b v4l2_m2m_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xe0fb30ec v4l2_m2m_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xe508559c v4l2_m2m_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xf208e172 v4l2_m2m_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xf94f1133 v4l2_m2m_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xfde55d93 v4l2_m2m_buf_queue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x0d7c230a videobuf_read_stream +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x11ede10e videobuf_next_field +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x13ad2c8d videobuf_queue_to_vaddr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x313fdef1 videobuf_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x3313b033 videobuf_mmap_setup +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x379f05e5 videobuf_poll_stream +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x394ca684 videobuf_alloc_vb +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x44134781 videobuf_iolock +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x44f61ff8 videobuf_queue_cancel +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x4a4d5089 videobuf_read_start +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x4a7102e8 videobuf_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x7c135169 videobuf_mmap_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x92e8ecd7 videobuf_queue_core_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x97d48345 videobuf_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x98aaf02d videobuf_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x9bc4794d videobuf_waiton +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xce7e2d45 videobuf_read_stop +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xe0fd4243 __videobuf_mmap_setup +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xe33a689e videobuf_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xe757ec0e videobuf_read_one +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xea4c82bd videobuf_queue_is_busy +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xec62ba2f videobuf_stop +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xef0d468f videobuf_mmap_mapper +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xf5a666fa videobuf_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x457559ea videobuf_dma_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x553a86d0 videobuf_sg_alloc +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x88d40c99 videobuf_queue_sg_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x9ce58c17 videobuf_dma_unmap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0xefd9a586 videobuf_to_dma +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-vmalloc 0x3bcb41b7 videobuf_to_vmalloc +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-vmalloc 0x3bf4baa8 videobuf_vmalloc_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-vmalloc 0xcda40eec videobuf_queue_vmalloc_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x0246fa7e vb2_fop_read +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x04e95cfc vb2_write +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x0e1a6f94 vb2_ioctl_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x0f383bae vb2_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x1675afe9 vb2_fop_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x167a7f3d vb2_fop_mmap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x1712587d _vb2_fop_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x2bd01c2d vb2_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x2c3fabe9 vb2_ioctl_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x2cb065d0 vb2_ioctl_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x536a878f vb2_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x5748012e vb2_queue_error +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x5da8e98c vb2_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x63a9b705 vb2_queue_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x63f0df87 vb2_queue_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x6979afb0 vb2_plane_cookie +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x6b904243 vb2_ops_wait_finish +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x6db35879 vb2_read +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x71fe78b9 vb2_mmap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x7e3ad527 vb2_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x81b903fe vb2_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x870a36e6 vb2_thread_start +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x96677cec vb2_ioctl_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x9a49e810 vb2_ioctl_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xc18efaec vb2_ioctl_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xc3ad4d6f vb2_discard_done +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xc62c85ea vb2_thread_stop +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xc83ff23f vb2_buffer_done +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xcad34d6f vb2_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xdeb4a293 vb2_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xe18b071f vb2_ioctl_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xe335f079 vb2_ioctl_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xe4f86c70 vb2_plane_vaddr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xeba4cc33 vb2_fop_write +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xebfa9351 vb2_ioctl_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xf38de120 vb2_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xf3d22ae2 vb2_fop_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xf5a73c77 vb2_wait_for_all_buffers +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xf969bfc3 vb2_ops_wait_prepare +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-contig 0x4964684a vb2_dma_contig_memops +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-contig 0xda67da26 vb2_dma_contig_init_ctx +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-contig 0xe57f0426 vb2_dma_contig_cleanup_ctx +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-sg 0x87a6a1f2 vb2_dma_sg_memops +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-sg 0xa5f6875b vb2_dma_sg_init_ctx +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-sg 0xd30ec30f vb2_dma_sg_cleanup_ctx +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-memops 0x54ef4735 vb2_common_vm_ops +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-memops 0x6e556ad3 vb2_get_contig_userptr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-memops 0xaf589838 vb2_get_vma +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-memops 0xccf2679f vb2_put_vma +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-vmalloc 0x2ae94fac vb2_vmalloc_memops +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x037dbc9a v4l2_event_dequeue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x06524bbe v4l2_device_set_name +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x06cc1d0c v4l2_device_register_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x0b134aa4 v4l2_event_queue_fh +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x10e75736 v4l2_fh_open +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x2b8b5eac v4l2_event_unsubscribe_all +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x35871ed9 v4l2_fh_add +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x40462110 v4l2_compat_ioctl32 +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x57cc098c v4l2_src_change_event_subdev_subscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x6a6f924a v4l2_device_disconnect +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x7fa6be7f v4l2_event_subscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x815d861f v4l2_src_change_event_subscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x894cbb67 v4l2_fh_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x8f6a2ebd v4l2_event_unsubscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x9cfd81ca v4l2_device_unregister +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xa19d9e83 v4l2_event_queue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xa86b9314 v4l2_device_register +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xaa7512c5 v4l2_fh_del +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xb4d2c649 v4l2_device_register_subdev_nodes +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xbaca1208 v4l2_fh_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xc5772895 v4l2_subdev_link_validate +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xcbbe4a0b v4l2_device_unregister_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xcce6a268 v4l2_event_pending +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xd8c7fd8f v4l2_event_subdev_unsubscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xdcb0ad0a v4l2_subdev_link_validate_default +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xe3d62af8 v4l2_device_put +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xe9656f07 v4l2_fh_exit +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xefb52d38 v4l2_fh_is_singular +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0x5ea39d8c pm80x_regmap_config +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0x9289f39c pm80x_pm_ops +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0xd5f885ad pm80x_init +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0xd99fd720 pm80x_deinit +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0x818bdd07 da9150_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0xcde818e3 da9150_bulk_write +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0xdcb5bb78 da9150_set_bits +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0xe3f37630 da9150_bulk_read +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0xf500d7f3 da9150_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x00522284 kempld_write32 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x642b97ff kempld_write16 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x670cecea kempld_read16 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x81925610 kempld_write8 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x84ca2120 kempld_read32 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0xb7590d02 kempld_release_mutex +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0xe1cc8095 kempld_read8 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0xf289742c kempld_get_mutex +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0x6d8c1740 lm3533_read +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0x9becc6f3 lm3533_update +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0xf1fe65de lm3533_write +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x092a3896 lm3533_ctrlbank_enable +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x24f0b127 lm3533_ctrlbank_set_max_current +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x25db03e1 lm3533_ctrlbank_get_pwm +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x33ac3829 lm3533_ctrlbank_get_brightness +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x8ba607af lm3533_ctrlbank_disable +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0xa3fb7716 lm3533_ctrlbank_set_brightness +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0xfee014ab lm3533_ctrlbank_set_pwm +EXPORT_SYMBOL_GPL drivers/mfd/lp3943 0x077bd68c lp3943_write_byte +EXPORT_SYMBOL_GPL drivers/mfd/lp3943 0x2fbdc560 lp3943_update_bits +EXPORT_SYMBOL_GPL drivers/mfd/lp3943 0x3159371f lp3943_read_byte +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x1e89796f mc13xxx_common_exit +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x8dada6a8 mc13xxx_common_init +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x941c1264 mc13xxx_adc_do_conversion +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0xac3d42f8 mc13xxx_variant_mc34708 +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0xbe32b790 mc13xxx_variant_mc13783 +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0xfe88fcb0 mc13xxx_variant_mc13892 +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x089bc38f pcf50633_free_irq +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x15edab9e pcf50633_reg_clear_bits +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x2ef30cdb pcf50633_register_irq +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x4b3b019c pcf50633_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x5c812ffe pcf50633_write_block +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x60ee3727 pcf50633_reg_set_bit_mask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x7607b0a3 pcf50633_irq_mask_get +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x77206e7e pcf50633_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x7ee14fbf pcf50633_irq_mask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xd4a99561 pcf50633_irq_unmask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xf1960a84 pcf50633_read_block +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-adc 0x64915f21 pcf50633_adc_sync_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-adc 0x6c43586d pcf50633_adc_async_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x1ae76a1e pcf50633_gpio_power_supply_set +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x3bab03ec pcf50633_gpio_invert_set +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0xad83fe16 pcf50633_gpio_set +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0xccee395a pcf50633_gpio_get +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0xe0d20d32 pcf50633_gpio_invert_get +EXPORT_SYMBOL_GPL drivers/mfd/retu-mfd 0x01a33234 retu_write +EXPORT_SYMBOL_GPL drivers/mfd/retu-mfd 0x4fca3918 retu_read +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x08a2a7c1 rtsx_pci_switch_clock +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x0cbdc26c rtsx_pci_send_cmd_no_wait +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x0feee9ca rtsx_pci_write_ppbuf +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x16601f22 rtsx_pci_read_ppbuf +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x19b30ace rtsx_pci_read_phy_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x1fcbcc2b rtsx_pci_card_exclusive_check +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x21df1080 rtsx_pci_dma_unmap_sg +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x337aaa39 rtsx_pci_read_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x3b221289 rtsx_pci_dma_transfer +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x3dc7597d rtsx_pci_stop_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x5f2a3fd9 rtsx_pci_write_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x68cd82fc rtsx_pci_dma_map_sg +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x9f04b67c rtsx_pci_switch_output_voltage +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xaefed295 rtsx_pci_start_run +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xb1f6b6f7 rtsx_pci_send_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xbd593dfc rtsx_pci_card_power_on +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xc59b06c6 rtsx_pci_card_power_off +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xd121d8b2 rtsx_pci_card_exist +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xd8e913f3 rtsx_pci_card_pull_ctl_disable +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xd99c1ede rtsx_pci_write_phy_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xe88ba991 rtsx_pci_complete_unfinished_transfer +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xf3177324 rtsx_pci_card_pull_ctl_enable +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xfa87fa48 rtsx_pci_transfer_data +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xff18acdb rtsx_pci_add_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x3648ae12 rtsx_usb_ep0_read_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x493f251e rtsx_usb_read_ppbuf +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x4c1bf8d7 rtsx_usb_write_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x64d54a35 rtsx_usb_write_ppbuf +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x709c24ba rtsx_usb_card_exclusive_check +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x800f73dd rtsx_usb_get_rsp +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x92f7b8ec rtsx_usb_ep0_write_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0xa4a96892 rtsx_usb_add_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0xad16151e rtsx_usb_send_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0xb484736f rtsx_usb_transfer_data +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0xd1ee1ced rtsx_usb_read_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0xd2acd61c rtsx_usb_switch_clock +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0xd70f1f4f rtsx_usb_get_card_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x0958bf2e si476x_core_is_a_primary_tuner +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x0973c6ab si476x_core_cmd_zif_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x0a8d5998 si476x_core_cmd_am_tune_freq +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x12fa9208 si476x_core_cmd_power_up +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x16b094b8 si476x_core_is_a_secondary_tuner +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x1c9d30ec si476x_core_cmd_am_rsq_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x3c1c9d19 si476x_core_cmd_am_seek_start +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x453bf3d5 si476x_core_cmd_fm_acf_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x46532145 si476x_core_is_in_am_receiver_mode +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x46efcefb si476x_core_cmd_intb_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x4d297932 si476x_core_cmd_power_down +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x6488af20 si476x_core_cmd_func_info +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x727a9a61 si476x_core_cmd_agc_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x7d4901f3 si476x_core_cmd_fm_rsq_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x86489b7c si476x_core_cmd_get_property +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x8a50e48f si476x_core_i2c_xfer +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x9395b543 si476x_core_cmd_set_property +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x94cf5548 si476x_core_is_powered_up +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x95f0328a si476x_core_has_diversity +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xaa6e5811 si476x_core_cmd_fm_rds_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xbef29d8e si476x_core_cmd_fm_rds_blockcount +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xc556d9cd si476x_core_cmd_dig_audio_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xca83fb25 si476x_core_cmd_fm_seek_start +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xd15fd5ef si476x_core_has_am +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xd45e9ce0 si476x_core_cmd_ic_link_gpo_ctl_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xdad67f52 si476x_core_cmd_fm_phase_div_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xde7b2ada si476x_core_cmd_fm_phase_diversity +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xe43e411f si476x_core_set_power_state +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xead62f25 devm_regmap_init_si476x +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xed07ac5c si476x_core_cmd_ana_audio_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xf0e92fbc si476x_core_start +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xf197cea6 si476x_core_cmd_am_acf_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xf5733ea3 si476x_core_stop +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xfffdfe70 si476x_core_cmd_fm_tune_freq +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x053cd075 sm501_set_clock +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x6ae84562 sm501_unit_power +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0xa5d6b4d4 sm501_find_clock +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0xb5d78247 sm501_misc_control +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0xc1b941c0 sm501_modify_reg +EXPORT_SYMBOL_GPL drivers/mfd/ti_am335x_tscadc 0x58f93928 am335x_tsc_se_adc_done +EXPORT_SYMBOL_GPL drivers/mfd/ti_am335x_tscadc 0xb81c138d am335x_tsc_se_set_cache +EXPORT_SYMBOL_GPL drivers/mfd/ti_am335x_tscadc 0xe2359e15 am335x_tsc_se_clr +EXPORT_SYMBOL_GPL drivers/mfd/ti_am335x_tscadc 0xf618c305 am335x_tsc_se_set_once +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0x5af61168 tps65217_set_bits +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0xb1dab567 tps65217_clear_bits +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0xc11a11c5 tps65217_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0xc73a2cc7 tps65217_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/tps65218 0x35b14a57 tps65218_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/tps65218 0x5ccd091f tps65218_set_bits +EXPORT_SYMBOL_GPL drivers/mfd/tps65218 0xb68a420e tps65218_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/tps65218 0xbe491004 tps65218_clear_bits +EXPORT_SYMBOL_GPL drivers/mfd/ucb1400_core 0x5669530e ucb1400_adc_read +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0x084bc433 cb710_sg_dwiter_write_next_block +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0x588f152b cb710_set_irq_handler +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0x896bc774 cb710_pci_update_config_reg +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0xc7771d09 cb710_sg_dwiter_read_next_block +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0x1a1b5249 oslec_flush +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0x2feda75b oslec_hpf_tx +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0x3227a28e oslec_snapshot +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0x7dc9dddd oslec_adaption_mode +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0xb2c66001 oslec_create +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0xc8b5a524 oslec_free +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0xd370f679 oslec_update +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0x27cb133b eeprom_93cx6_multiread +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0x63d2ff63 eeprom_93cx6_wren +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0x793fc8de eeprom_93cx6_multireadb +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0x822222db eeprom_93cx6_write +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0x98bb5a22 eeprom_93cx6_read +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0xdb9ca14b eeprom_93cx6_readb +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x01e6eef1 enclosure_component_register +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x285c4cd7 enclosure_register +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x45752982 enclosure_unregister +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x5b95b0b8 enclosure_find +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x872a93c1 enclosure_remove_device +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0xc73bd112 enclosure_component_alloc +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0xd9eab5fc enclosure_for_each_device +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0xf43c9450 enclosure_add_device +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x2c546584 lis3_dev +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x63c2f844 lis3lv02d_init_device +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x66ac14e8 lis3lv02d_init_dt +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x79051908 lis3lv02d_poweroff +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xa2c70b46 lis3lv02d_remove_fs +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xa9fad01b lis3lv02d_joystick_disable +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xc3d5a551 lis3lv02d_poweron +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xef78a68c lis3lv02d_joystick_enable +EXPORT_SYMBOL_GPL drivers/misc/ti-st/st_drv 0x5d394195 st_unregister +EXPORT_SYMBOL_GPL drivers/misc/ti-st/st_drv 0xda6c558a st_register +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x01f9af52 sdhci_remove_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x156dd6b8 sdhci_send_command +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x2fe20727 sdhci_add_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x3031c384 sdhci_reset +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x5b99bc53 sdhci_runtime_resume_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x66215fca sdhci_alloc_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x68ea555f sdhci_set_uhs_signaling +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x7d469bdf sdhci_set_clock +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x828b02df sdhci_free_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x98842701 sdhci_enable_irq_wakeups +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xa4b32cca sdhci_suspend_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xa808dccc sdhci_resume_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xc4f0337f sdhci_runtime_suspend_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xe78d4730 sdhci_set_bus_width +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x335a3db0 sdhci_pltfm_free +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x6f58eed9 sdhci_pltfm_unregister +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x71f53451 sdhci_pltfm_suspend +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x768762c1 sdhci_pltfm_resume +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x968c1579 sdhci_pltfm_register +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0xa56a391b sdhci_pltfm_pmops +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0xbea16398 sdhci_pltfm_init +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0xe41b473c sdhci_pltfm_clk_get_max_clock +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0xfa013686 sdhci_get_of_property +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0x4c247f44 cfi_cmdset_0003 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0x730d5aac cfi_cmdset_0001 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0xb13a5ad2 cfi_cmdset_0200 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0x6e5cd052 cfi_cmdset_0701 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0x9da51fd4 cfi_cmdset_0002 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0xe3f75404 cfi_cmdset_0006 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0020 0xc2778b37 cfi_cmdset_0020 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0x0b890e4d cfi_qry_mode_on +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0x77523e3b cfi_qry_present +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0xd947836b cfi_qry_mode_off +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x03b1e02d mtd_lock_user_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x0eb33ab0 get_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x26a774ac get_mtd_device_nm +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x289b20d0 mtd_get_fact_prot_info +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x32885b5f mtd_erase_callback +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x3536a563 __get_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x406b9db6 mtd_panic_write +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x40d32e26 deregister_mtd_parser +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x45ea2447 kill_mtd_super +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x47463cdb register_mtd_user +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x49ae3929 mtd_unlock +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x5041cf8f __put_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x51bd5995 mtd_table_mutex +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x55506d06 mtd_device_unregister +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x5f249118 mtd_block_markbad +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x6aa46440 mtd_read +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x6f49b2db mtd_write +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x76729879 mtd_get_user_prot_info +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x7d2120ea mtd_write_user_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x7e7844f1 mtd_device_parse_register +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x935756b0 mtd_get_unmapped_area +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x9c532cb9 put_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xa2ad589a mtd_block_isbad +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xa36c7008 unregister_mtd_user +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xa845a2f6 mtd_del_partition +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xa99f5636 mtd_add_partition +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xabd81459 mtd_writev +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xae11a75d mtd_block_isreserved +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xb493bd9f mtd_lock +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xc4b09897 mtd_read_user_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xc71f97b4 __mtd_next_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xc83c6922 mtd_unpoint +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xd0d52c2b mtd_is_locked +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xd3a30d87 mtd_is_partition +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xd7a7b566 register_mtd_parser +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xdd363c9e mtd_erase +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xe84f1b9f mtd_read_oob +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xee780e2a mtd_get_device_size +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xf3f13fef mtd_read_fact_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xfa923984 mount_mtd +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xfd38380e mtd_kmalloc_up_to +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xfe1bbcca mtd_point +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0x9b38ccf3 add_mtd_blktrans_dev +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0xbbec901a mtd_blktrans_cease_background +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0xd4acdb70 register_mtd_blktrans +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0xea1a55d0 deregister_mtd_blktrans +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0xf2f83fc0 del_mtd_blktrans_dev +EXPORT_SYMBOL_GPL drivers/mtd/nand/nand 0x49aeb9ff nand_release +EXPORT_SYMBOL_GPL drivers/mtd/nand/nand 0xc83b436a nand_wait_ready +EXPORT_SYMBOL_GPL drivers/mtd/nand/sm_common 0xb9454c47 sm_register_device +EXPORT_SYMBOL_GPL drivers/mtd/onenand/onenand 0xe69e08f4 onenand_release +EXPORT_SYMBOL_GPL drivers/mtd/onenand/onenand 0xf0e34c84 onenand_scan +EXPORT_SYMBOL_GPL drivers/mtd/spi-nor/spi-nor 0x9f4c01a3 spi_nor_scan +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x20f3be4a ubi_leb_unmap +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x38e10c1d ubi_flush +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x390208b9 ubi_close_volume +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x42801d20 ubi_sync +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x43974443 ubi_do_get_device_info +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x5cfdd22d ubi_get_device_info +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x5e8267bc ubi_is_mapped +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x61780df4 ubi_open_volume +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x69632edc ubi_leb_write +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x7e04c783 ubi_leb_erase +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x81ac4f3c ubi_leb_read +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x85a8ee76 ubi_unregister_volume_notifier +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x9b8bb1c6 ubi_leb_change +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xa72e6382 ubi_open_volume_path +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xae883639 ubi_get_volume_info +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xbb1c16ce ubi_open_volume_nm +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xbb2d510e ubi_leb_map +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xeae1c034 ubi_leb_read_sg +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xf5ee9ba8 ubi_register_volume_notifier +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x31c1f624 free_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x4b84887d c_can_power_down +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x50dfa942 c_can_power_up +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0xb6eba32a unregister_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0xc3940ee8 alloc_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0xd51ab8c9 register_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x0bfbe3fb can_bus_off +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x1c34ed2d register_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x222c295a can_len2dlc +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x236c041c devm_can_led_init +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x277d06e0 can_change_state +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x3347b585 alloc_canfd_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x39976274 free_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x48685a99 can_change_mtu +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x4a3e7e26 alloc_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x4bf4a768 alloc_can_err_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x724ecad4 close_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x8a23b699 safe_candev_priv +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xb346573b can_dlc2len +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xbe79b01a open_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xd7123a3e can_led_event +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xda02ce20 can_put_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xe305aaa2 can_get_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xe5bbdee4 unregister_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xe7691a64 can_free_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xf6ad3f34 alloc_can_skb +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0x42e8f08b unregister_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0x60ccb59a free_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0xef21182e alloc_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0xef8713f2 register_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x29658e91 alloc_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x3c1fa316 free_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x49ebd0d2 sja1000_interrupt +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x6970173d unregister_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0xae8ecb2f register_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/ethernet/arc/arc_emac 0xebac0161 arc_emac_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/arc/arc_emac 0xfae506aa arc_emac_probe +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x00bebb54 mlx4_unregister_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x01536df4 mlx4_buf_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x044868d0 mlx4_multicast_promisc_add +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0a0512fb mlx4_flow_attach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0a205cb2 mlx4_cq_modify +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0d396eed mlx4_phys_to_slave_port +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1466cc8a mlx4_fmr_enable +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1496d94d mlx4_get_internal_clock_params +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x14b6108b mlx4_counter_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x154eb5db mlx4_read_clock +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1a17c9cc mlx4_mw_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1ab1f6a1 mlx4_vf_set_enable_smi_admin +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1b35e903 mlx4_SYNC_TPT +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1e647aa8 mlx4_register_interface +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1f67439d mlx4_alloc_cmd_mailbox +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x235e84cc mlx4_get_protocol_dev +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2385fcde mlx4_slave_convert_port +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x25fb27a3 mlx4_port_map_set +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2f8acee4 mlx4_srq_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x313ee54e mlx4_fmr_unmap +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3215ad01 mlx4_srq_arm +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x335b7cd6 mlx4_qp_reserve_range +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x33dceddb mlx4_cq_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3b13291a mlx4_counter_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3cc2d48e mlx4_unicast_detach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3fa3a6ff mlx4_flow_steer_promisc_add +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3fa8cc5f mlx4_flow_steer_promisc_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x40506da5 mlx4_map_sw_to_hw_steering_id +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x42fc3be1 mlx4_unicast_promisc_add +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x452eccf5 mlx4_get_base_qpn +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x45c29cc7 mlx4_qp_modify +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x466a8e8e mlx4_cq_resize +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x48bad98a mlx4_get_admin_guid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x49992ddd mlx4_FLOW_STEERING_IB_UC_QP_RANGE +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4a5bdebf mlx4_buf_write_mtt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4ab2183d mlx4_mr_rereg_mem_cleanup +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4b1fecdf mlx4_map_phys_fmr +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4be91582 __mlx4_replace_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4d9a1f67 mlx4_uar_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x51444f38 mlx4_unicast_attach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x56273dc8 mlx4_bf_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x567c1f25 mlx4_srq_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5a0fa6b4 mlx4_fmr_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5a73fa35 mlx4_mr_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5b7f1785 mlx4_CLOSE_PORT +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5dfeacc8 mlx4_mr_hw_write_mpt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x631829a6 mlx4_free_hwq_res +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x63d704c1 mlx4_config_vxlan_port +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x680e0dae mlx4_find_cached_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6a193f14 mlx4_qp_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6b1d3f61 mlx4_mr_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x72cf4f04 mlx4_register_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x769f98c2 mlx4_wol_read +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x783734ba mlx4_phys_to_slaves_pport +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x784d7ed1 mlx4_mtt_init +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7a999d27 mlx4_qp_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7aa0a783 mlx4_multicast_detach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7cee221f mlx4_get_slave_default_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x83451c1e mlx4_srq_lookup +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8349dcce mlx4_map_sw_to_hw_steering_mode +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8419052e mlx4_mw_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x86add095 mlx4_qp_release_range +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8b50ce87 mlx4_db_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x96c0498e mlx4_qp_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9829f0c9 mlx4_vf_get_enable_smi_admin +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x98873cca __mlx4_register_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x99577ad5 mlx4_mr_hw_put_mpt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x99a110a7 mlx4_bond +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9bf0b441 mlx4_set_vf_spoofchk +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9e21a82c mlx4_mr_rereg_mem_write +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa0c7f51f mlx4_mr_hw_change_access +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa249de87 mlx4_qp_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa3d1aa63 mlx4_update_qp +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa4166a3f mlx4_wol_write +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa934e13d mlx4_mw_enable +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xaab2da0e mlx4_xrcd_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xab80ab5d mlx4_pd_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xacb713b2 mlx4_cq_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xad51ab3c __mlx4_cmd +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xafd9057e mlx4_xrcd_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb0f164c6 mlx4_mtt_addr +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb1e27a5f mlx4_mr_hw_get_mpt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb6546064 mlx4_multicast_promisc_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb767ae9b mlx4_config_dev_retrieval +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb94fee1d mlx4_set_vf_link_state +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbb5598e4 mlx4_unregister_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbd7fb702 mlx4_mtt_cleanup +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbe1e04e6 mlx4_buf_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc0566c7a mlx4_pd_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc36c401d mlx4_free_cmd_mailbox +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc68ea3ce mlx4_get_counter_stats +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc76412b3 mlx4_alloc_hwq_res +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc76df0e0 mlx4_get_base_gid_ix +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc8490816 mlx4_find_cached_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xcc8b16e5 mlx4_bf_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xcdb46deb mlx4_set_admin_guid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xce679687 mlx4_unicast_promisc_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xcfb4a803 mlx4_get_vf_stats +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd0e24ccb mlx4_write_mtt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd1a9e119 mlx4_mr_enable +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd3a283a1 mlx4_srq_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd460fe15 __mlx4_unregister_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd5a06ff9 mlx4_get_active_ports +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd5b94a61 mlx4_multicast_attach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd65f5425 mlx4_register_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd6674192 mlx4_set_vf_rate +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd89926ae mlx4_db_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd8c0aa63 mlx4_set_vf_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd8e3675e mlx4_ACCESS_PTYS_REG +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd9d7dbea mlx4_flow_detach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xdb09c811 mlx4_qp_to_ready +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xdc42a3b8 mlx4_unbond +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xdf2d10bf mlx4_get_default_counter_index +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe0124692 mlx4_mr_hw_change_pd +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe700d840 mlx4_INIT_PORT +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xedab8eac mlx4_phys_to_slaves_pport_actv +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xee387812 mlx4_fmr_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xee6abe72 mlx4_hw_rule_sz +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf170a839 mlx4_vf_smi_enabled +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf501f23a mlx4_unregister_interface +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf71e9ac9 mlx4_uar_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xfd2482a2 mlx4_get_vf_config +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xfe9742f9 mlx4_set_vf_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x01e9f138 mlx5_query_hca_vport_pkey +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x05217aeb mlx5_core_qp_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x09543b3d mlx5_fill_page_array +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x1010953e mlx5_query_port_admin_status +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x19a24e07 mlx5_db_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x239b6c43 mlx5_core_eq_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x2f34e751 mlx5_create_map_eq +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x3188b9d2 mlx5_query_port_proto_oper +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x31f85e4f mlx5_query_hca_vport_node_guid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x3522ab8b mlx5_core_destroy_qp +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x3abb2774 mlx5_core_xrcd_dealloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x4a32444a mlx5_query_port_ptys +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x577aff6d mlx5_set_port_caps +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x61d2b0d4 mlx5_core_xrcd_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x64c81c66 mlx5_query_hca_vport_system_image_guid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x6b57472a mlx5_core_create_qp +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x6bac1ee2 mlx5_buf_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x791b69bf mlx5_query_hca_vport_context +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x7a891c42 mlx5_core_access_reg +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x7b26a570 mlx5_db_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x89e472d8 mlx5_core_mad_ifc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x9f3dca27 mlx5_set_port_proto +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa49c135a mlx5_buf_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa6a85d62 mlx5_set_port_mtu +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa796ad4f mlx5_query_port_max_mtu +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xac14e5c9 mlx5_set_port_admin_status +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xafbbd75b mlx5_db_alloc_node +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xb2bd9ff4 mlx5_query_hca_vport_gid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xb2dac036 mlx5_core_page_fault_resume +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xbb5aec03 mlx5_core_qp_modify +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xc4e6e437 mlx5_query_port_vl_hw_cap +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xd43decc5 mlx5_destroy_unmap_eq +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xeb212b0b mlx5_query_port_proto_cap +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf3b62214 mlx5_query_port_link_width_oper +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf7087ead mlx5_query_port_oper_mtu +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xfebec60e mlx5_query_port_proto_admin +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac 0x214ebeb2 stmmac_dvr_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac 0x28e76082 stmmac_suspend +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac 0x5e303471 stmmac_dvr_probe +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac 0xc5ea70ff stmmac_resume +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac-platform 0x43119651 stmmac_pltfr_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac-platform 0xcf3e491d stmmac_pltfr_pm_ops +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac-platform 0xf9ebbf8d stmmac_pltfr_probe +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x00f5773a cpsw_ale_add_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x1210b803 cpsw_ale_del_mcast +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x2394f595 cpsw_ale_start +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x2eede79d cpsw_ale_flush_multicast +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x454cba40 cpsw_ale_dump +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x4d2ba985 cpsw_ale_stop +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x5829fa07 cpsw_ale_del_ucast +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x64c43f2b cpsw_ale_del_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x69deab0b cpsw_ale_control_get +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x937a84fb cpsw_ale_create +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0xa1f6fa53 cpsw_ale_add_ucast +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0xc31b252d cpsw_ale_control_set +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0xe6d675f3 cpsw_ale_destroy +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0xe9464cfa cpsw_ale_add_mcast +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0xf06a133a cpsw_ale_set_allmulti +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x47638ac8 macvlan_link_register +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x48efb46c macvlan_dellink +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x4be6dcbb macvlan_common_newlink +EXPORT_SYMBOL_GPL drivers/net/macvlan 0xa0f5f34e macvlan_common_setup +EXPORT_SYMBOL_GPL drivers/net/macvtap 0xb9fcd89d macvtap_get_socket +EXPORT_SYMBOL_GPL drivers/net/phy/mdio-mux 0x29c6535d mdio_mux_init +EXPORT_SYMBOL_GPL drivers/net/phy/mdio-mux 0x6318757f mdio_mux_uninit +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0x084175d5 usbnet_generic_cdc_bind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0x171ade0a usbnet_cdc_status +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0x2ddac909 usbnet_cdc_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0x9944904e usbnet_cdc_bind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x1ab86863 cdc_ncm_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x1c4d515c cdc_ncm_select_altsetting +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x41935d42 cdc_ncm_bind_common +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x426335a7 cdc_ncm_rx_verify_nth16 +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x4766bbfc cdc_ncm_tx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x66b6aea2 cdc_ncm_rx_verify_ndp16 +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0xf2af673f cdc_ncm_rx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0xf481f66e cdc_ncm_fill_tx_frame +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x1b22ee22 rndis_rx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x2c4c8b27 rndis_status +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x4e9d779f generic_rndis_bind +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x90afb4bf rndis_tx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x96914eb9 rndis_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0xf986387b rndis_command +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x0aef7be6 usbnet_get_endpoints +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x0c031f2f usbnet_resume_rx +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x15dae9ca usbnet_pause_rx +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x23a6c848 usbnet_suspend +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x2ea17016 usbnet_status_stop +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x38b51e7f usbnet_status_start +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x3b4ed681 usbnet_get_ethernet_addr +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x4358ab12 usbnet_set_msglevel +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x45013c28 usbnet_disconnect +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x4523e6ba usbnet_resume +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x55c6cc41 usbnet_get_link +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x565c50a7 usbnet_tx_timeout +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x5867fdba usbnet_unlink_rx_urbs +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x6d638cf4 usbnet_update_max_qlen +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x75c43b49 usbnet_purge_paused_rxq +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x75f4664a usbnet_get_settings +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x76b4f924 usbnet_read_cmd +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x7ddbdabc usbnet_get_drvinfo +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x812fe3ac usbnet_stop +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x89833c0b usbnet_change_mtu +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x92b4681f usbnet_set_settings +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x93476c9c usbnet_start_xmit +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xac3195d2 usbnet_read_cmd_nopm +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xbf773d56 usbnet_defer_kevent +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xc1bfeefb usbnet_write_cmd_nopm +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xd59a30c1 usbnet_open +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xd671e730 usbnet_nway_reset +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xe66f0be0 usbnet_write_cmd_async +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xeafc0838 usbnet_write_cmd +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xebbe5350 usbnet_probe +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xf4497d14 usbnet_get_msglevel +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xff8aa76e usbnet_skb_return +EXPORT_SYMBOL_GPL drivers/net/vxlan 0x4d54aff0 vxlan_get_rx_port +EXPORT_SYMBOL_GPL drivers/net/vxlan 0x69173b6d vxlan_sock_release +EXPORT_SYMBOL_GPL drivers/net/vxlan 0x80d16529 vxlan_xmit_skb +EXPORT_SYMBOL_GPL drivers/net/vxlan 0xe106b71a vxlan_sock_add +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x0bc9d52c i2400m_dev_reset_handle +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x32a6a514 i2400m_post_reset +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x3db4dfb0 i2400m_tx_msg_sent +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x41948c32 i2400m_rx +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x4cdbddc5 i2400m_pre_reset +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x55a69e8d i2400m_dev_bootstrap +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x55e2e7d0 i2400m_cmd_enter_powersave +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x710dab27 i2400m_tx_msg_get +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x832c4aac i2400m_netdev_setup +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xa067a3fb i2400m_init +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xaa614567 i2400m_error_recovery +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xb00b793c i2400m_bm_cmd_prepare +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xbd2b020f i2400m_setup +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xc84fbe9d i2400m_release +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xdca5ec77 i2400m_tx +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xec7b6202 i2400m_reset +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xf94e1a92 i2400m_is_boot_barker +EXPORT_SYMBOL_GPL drivers/net/wireless/cw1200/cw1200_core 0x3b53c8bc cw1200_can_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/cw1200/cw1200_core 0x465d1a2a cw1200_irq_handler +EXPORT_SYMBOL_GPL drivers/net/wireless/cw1200/cw1200_core 0x7aa18853 cw1200_core_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/cw1200/cw1200_core 0x7adf6929 cw1200_core_release +EXPORT_SYMBOL_GPL drivers/net/wireless/ipw2x00/libipw 0x184f4a79 libipw_rx_any +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0x1db48be8 il_dealloc_bcast_stations +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0x21a00b96 il_mac_tx_last_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0x37f971cf il_remove_station +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0x6fce1dd7 il_prep_station +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0xc6092ce2 _il_grab_nic_access +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x03e5607e iwl_parse_nvm_data +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x0a0b1de5 iwl_clear_bits_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x0d556623 iwl_abort_notification_waits +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x0ff5086f iwl_poll_direct_bit +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x1291ef1b iwl_init_notification_wait +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x1ac36ff0 iwl_notification_wait_notify +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x309fc0ce iwl_set_bits_mask_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x30bcaf78 iwl_read_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x311bfe16 __iwl_dbg +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x35033c81 iwl_phy_db_free +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x3d548dab iwl_remove_notification +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x47e15349 iwl_set_bits_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x51b657cd iwlwifi_mod_params +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x58d169eb iwl_opmode_register +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x5b672cf9 iwl_write_direct32 +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x5c52e109 iwl_opmode_deregister +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x5e2527d4 __iwl_info +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x64c5c271 iwl_parse_eeprom_data +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x654c5342 iwl_read_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x776221bf iwl_send_phy_db_data +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x7d13b0e6 iwl_write_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x8175927a iwl_read_direct32 +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x8a003f5e iwl_poll_bit +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x8c5d5ab3 iwl_phy_db_set_section +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x8eea530c iwl_phy_db_init +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xaa6d08eb iwl_wait_notification +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xc67c31ed iwl_notification_wait_init +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xca49ea3b iwl_parse_nvm_mcc_info +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xd204312d __iwl_err +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xe40da900 iwl_force_nmi +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xea6ac03e __iwl_crit +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xf3ae6021 iwl_nvm_check_version +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xfd522200 __iwl_warn +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x0066fd80 lbs_get_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x220d2b90 lbs_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x26fe2a55 lbs_queue_event +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x2f221f19 lbs_get_firmware_async +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x3bf81354 lbs_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x3d4cdb07 lbs_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x4f38a41c lbs_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x50ceb6b1 lbs_process_rxed_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x5e559a1f lbs_host_sleep_cfg +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x5fdf38b8 lbs_disablemesh +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x67d883fc lbs_notify_command_response +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x896f53c9 lbs_host_to_card_done +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x9ce2b8c8 lbs_start_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xb734f505 __lbs_cmd +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xd5c0f089 lbs_stop_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xdc14d9fb lbs_cmd_copyback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xec9455ff lbs_send_tx_feedback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xf64277de lbs_debug +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x04ef2a09 lbtf_cmd_response_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x13c3fd9f lbtf_cmd_copyback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x176c5410 lbtf_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x391fb4b7 lbtf_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x5d6c6201 lbtf_send_tx_feedback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x7e681ff5 lbtf_bcn_sent +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x887810d7 __lbtf_cmd +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xb47dc792 lbtf_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xc85e6899 lbtf_debug +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x26c00834 mwifiex_process_hs_config +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x2e1a0d7c mwifiex_write_data_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x2f6153a1 mwifiex_init_shutdown_fw +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x31bd9748 mwifiex_alloc_dma_align_buf +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x35224f10 mwifiex_drv_info_dump +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x3b76b31c mwifiex_main_process +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x5f846d24 mwifiex_handle_rx_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x6860c2d1 mwifiex_cancel_hs +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x7b6f60e7 mwifiex_process_sleep_confirm_resp +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x9d6453b0 mwifiex_deauthenticate_all +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xaa224839 mwifiex_del_virtual_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xb826e741 mwifiex_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xbc46ed7c mwifiex_upload_device_dump +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xc0451f94 mwifiex_disable_auto_ds +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xd068560f mwifiex_add_virtual_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xd233d71a mwifiex_enable_hs +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xe2a462bd mwifiex_queue_main_work +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xe8f41d2c mwifiex_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x1f6d3838 p54_parse_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x28e4239d p54_read_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x4b7b0508 p54_init_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x4ef7ad78 p54_free_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x8ede9e22 p54_parse_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x93d7d96e p54_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xa167ddc8 p54_register_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xcb14f429 p54_unregister_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xeecde36b p54_free_skb +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0x18c73057 rsi_mac80211_detach +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0x4e1cdb8a rsi_read_pkt +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0x7201b98a rsi_dbg +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0x9c489914 rsi_91x_init +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0xbea3d3a3 rsi_91x_deinit +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0xdb3ca0e5 rsi_zone_enabled +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x00422fe2 rt2800_txdone_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x0f1ab7ad rt2800_load_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x10679c8d rt2800_disable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x181e49b2 rt2800_wait_wpdma_ready +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x1e82cd86 rt2800_get_txwi_rxwi_size +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x2c1bf210 rt2800_link_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x2e81940b rt2800_conf_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x3842f803 rt2800_disable_wpdma +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x3fe7dd31 rt2800_reset_tuner +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x41f0b219 rt2800_enable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x5203dfd8 rt2800_config +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x5ad1ee1e rt2800_config_ant +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x5fe2996a rt2800_vco_calibration +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x6f42a2f2 rt2800_get_key_seq +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x6f9cdd39 rt2800_set_rts_threshold +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x90e9afe7 rt2800_check_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x90f63c0b rt2800_ampdu_action +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x9609762e rt2800_gain_calibration +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x9ce4ba1a rt2800_config_erp +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x9eca0110 rt2800_link_tuner +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xac47ed69 rt2800_process_rxwi +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xb22df322 rt2800_rfkill_poll +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xb33a4a69 rt2800_sta_add +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xb493d27c rt2800_read_eeprom_efuse +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xc0a25278 rt2800_config_filter +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xc2c18cf7 rt2800_get_survey +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xc679bfbf rt2800_write_tx_data +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xcbc7606d rt2800_config_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xce13a419 rt2800_get_tsf +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xd23db81d rt2800_probe_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xd963555d rt2800_config_pairwise_key +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xe8e89dc5 rt2800_mcu_request +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xec61507d rt2800_wait_csr_ready +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xef9a3441 rt2800_efuse_detect +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xf4e18a69 rt2800_config_shared_key +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xfd286ddf rt2800_sta_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xfe9445e6 rt2800_clear_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xff5441a5 rt2800_write_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x071e19b5 rt2800mmio_write_tx_desc +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x0ae38c60 rt2800mmio_toggle_irq +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x0fad1430 rt2800mmio_pretbtt_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x220c5310 rt2800mmio_fill_rxdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x2505789d rt2800mmio_tbtt_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x37c0d6a9 rt2800mmio_get_entry_state +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x5a546ef5 rt2800mmio_start_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x5fa4db64 rt2800mmio_interrupt +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x65260031 rt2800mmio_queue_init +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x71a1d3a4 rt2800mmio_enable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x76f00551 rt2800mmio_get_txwi +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x92c0bcd1 rt2800mmio_rxdone_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x9a4d5e28 rt2800mmio_kick_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xaf3a2567 rt2800mmio_clear_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xb3887638 rt2800mmio_init_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xc6a1455e rt2800mmio_autowake_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xe0d4673a rt2800mmio_stop_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xe28f94c7 rt2800mmio_txstatus_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xf67f1428 rt2800mmio_init_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x03b1ce7c rt2x00queue_pause_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x1297ab44 rt2x00queue_flush_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x1f5abb33 rt2x00lib_dmastart +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x2aba7d92 rt2x00mac_flush +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x2b4ecb1c rt2x00mac_set_key +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x2efa60e0 rt2x00lib_remove_dev +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x30168aa5 rt2x00mac_conf_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x3a0c19b9 rt2x00queue_for_each_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x3e4c9a22 rt2x00queue_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x43a61ad4 rt2x00queue_map_txskb +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x46a71e6b rt2x00mac_configure_filter +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x4eb2694d rt2x00queue_stop_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x50047e78 rt2x00queue_get_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x5a58e54b rt2x00mac_config +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x5c461696 rt2x00mac_set_antenna +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x66229ecf rt2x00mac_set_tim +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x76afae89 rt2x00mac_start +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x785dc43a rt2x00lib_pretbtt +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x79c91c54 rt2x00mac_get_ringparam +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x810f70a0 rt2x00lib_beacondone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x946ac41c rt2x00mac_remove_interface +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x949bec64 rt2x00queue_start_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x96f92bb5 rt2x00mac_sta_add +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x99095297 rt2x00queue_unpause_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x9dee5d98 rt2x00mac_add_interface +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xa0acc8dd rt2x00lib_dmadone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xa39de100 rt2x00lib_probe_dev +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xa6044054 rt2x00mac_stop +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xac0ba718 rt2x00lib_get_bssidx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xade81b89 rt2x00mac_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xade8b63f rt2x00mac_sw_scan_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xb597883e rt2x00mac_sw_scan_start +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xbc2437ea rt2x00queue_stop_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xc0f455d5 rt2x00queue_unmap_skb +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xcca14869 rt2x00mac_sta_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xd6162bd9 rt2x00mac_get_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xd6f25721 rt2x00lib_txdone_noinfo +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xd8987da7 rt2x00lib_rxdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xd89d60b0 rt2x00mac_get_antenna +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xdce60ee8 rt2x00lib_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xe120de0c rt2x00lib_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xe9e6bf9e rt2x00mac_rfkill_poll +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xecc6dd8b rt2x00mac_tx_frames_pending +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xef0cbdfd rt2x00lib_txdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xf661f30e rt2x00mac_bss_info_changed +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xfe4c8603 rt2x00queue_start_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0x4b32cd83 rt2x00mmio_uninitialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0x55903144 rt2x00mmio_rxdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0x7b019d69 rt2x00mmio_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0xdf7771ed rt2x00mmio_initialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0xe0d0f9cd rt2x00mmio_regbusy_read +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0x502f8d1e rt2x00pci_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0x59cd1ec8 rt2x00pci_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0x898fb380 rt2x00pci_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0xf92f52a5 rt2x00pci_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x02a88677 rt2x00usb_initialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x0ca8421f rt2x00usb_clear_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x13d9bc78 rt2x00usb_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x441ae39a rt2x00usb_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x494cbd55 rt2x00usb_kick_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x5968a058 rt2x00usb_uninitialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x6fab7e31 rt2x00usb_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xa1d34130 rt2x00usb_vendor_request +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xa5177f10 rt2x00usb_vendor_req_buff_lock +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xa548eeda rt2x00usb_register_read_async +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xc825dd13 rt2x00usb_vendor_request_buff +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xd1bba467 rt2x00usb_disconnect +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xd73e4e7d rt2x00usb_watchdog +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xd9485aa1 rt2x00usb_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xf185a884 rt2x00usb_disable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xfe574678 rt2x00usb_regbusy_read +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x421e8cc9 rtl92c_set_p2p_ps_offload_cmd +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x4cffa797 dm_writepowerindex +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x7c09a633 dm_savepowerindex +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xe33f76b4 dm_restorepowerindex +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x031fdc48 rtl8723_phy_txpwr_idx_to_dbm +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x1a5e7943 rtl8723be_firmware_selfreset +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x1be82a41 rtl8723_save_adda_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x1f03c021 rtl8723_cmd_send_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x417bfe62 rtl8723_phy_query_bb_reg +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x43649fab rtl8723_phy_save_mac_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x515effd4 rtl8723_phy_path_a_standby +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x55bee606 rtl8723_write_fw +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x5f7f4044 rtl8723_phy_mac_setting_calibration +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x64b8e682 rtl8723_download_fw +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x6fee3a6c rtl8723_phy_set_sw_chnl_cmdarray +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x7d12f455 rtl8723_phy_path_a_fill_iqk_matrix +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x88bafea9 rtl8723_dm_init_dynamic_bb_powersaving +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x8a3c7736 rtl8723_phy_init_bb_rf_reg_def +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x98a89d57 rtl8723_enable_fw_download +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xa63fa28a rtl8723_phy_reload_mac_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xaf4d6d94 rtl8723_phy_calculate_bit_shift +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xb357257b rtl8723_fw_block_write +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xb6f7e8a6 rtl8723_phy_pi_mode_switch +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xc00395e6 rtl8723_fw_page_write +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xc13c64a2 rtl8723_phy_rf_serial_read +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xc5d7d07e rtl8723ae_firmware_selfreset +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xcbe7de5f rtl8723_fw_free_to_go +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xcdf61974 rtl8723_phy_rf_serial_write +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xded1e29f rtl8723_phy_path_adda_on +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xe5cb52c1 rtl8723_phy_reload_adda_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xea63a20b rtl8723_dm_init_edca_turbo +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xfa3654c5 rtl8723_phy_set_bb_reg +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xfa956f4d rtl8723_dm_init_dynamic_txpower +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x06e30465 rtl_ips_nic_on +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x0a5be0ac rtl_deinit_core +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x0d0b6636 rtl_global_var +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x109c0000 rtl_is_special_data +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x137d8cfa rtl_init_core +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x1d47a4dc rtl_dbgp_flag_init +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x207ec9bb rtl_ops +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x241dedc1 rtl_tid_to_ac +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x2921a4d4 rtl_btc_status_false +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x3c515c0d rtl_attribute_group +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x41444b9b rtl_beacon_statistic +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x56d5c186 rtl_deinit_deferred_work +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x56e98a37 rtl_deinit_rfkill +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x6b4de810 rtl_lps_change_work_callback +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x71d6f38e rtl_recognize_peer +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x76982e05 rtl_init_rx_config +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xa41fe864 rtl_p2p_info +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xa61d7fc5 read_efuse_byte +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xa688f546 rtl_swlps_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xbc2e78a7 rtl_action_proc +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xe38414ae rtl_tx_mgmt_proc +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0x279a8ea5 wl1251_free_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0x829b5249 wl1251_init_ieee80211 +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0xd08c46e5 wl1251_alloc_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x003d903d wlcore_enable_interrupts +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x0357e8c9 wlcore_event_rssi_trigger +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x0f1cf3fc wl1271_cmd_configure +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x0f982f24 wlcore_event_dummy_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x287fcdd1 wlcore_disable_interrupts_nosync +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x289addf1 wlcore_event_roc_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x2b20764a wl1271_cmd_data_path +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x2b39c925 wlcore_scan_sched_scan_results +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x2c62264a wlcore_boot_upload_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x311a06f1 wl1271_acx_sleep_auth +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x3aa1400c wl1271_cmd_test +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x3c4d38d1 wl1271_ps_elp_sleep +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x495438df wlcore_disable_interrupts +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x4989e5fe wlcore_scan_sched_scan_ssid_list +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x4ca67e27 wlcore_alloc_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x4fc8e3b2 wl12xx_acx_mem_cfg +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x53dff67d wl12xx_debug_level +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x564e0098 wl1271_acx_pm_config +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x63f12dda wlcore_boot_run_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x6cbc44b1 wlcore_boot_upload_nvs +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x6ed8d1ab wlcore_event_ba_rx_constraint +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x74da08e9 wlcore_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x77092dcc wlcore_get_native_channel_type +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x83eb8843 wlcore_set_scan_chan_params +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x8a933d7a wl1271_debugfs_update_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x8f5ff8a5 wlcore_synchronize_interrupts +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x9f578985 wlcore_event_sched_scan_completed +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xa5fd8df0 wlcore_event_soft_gemini_sense +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xa753781f wlcore_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xa87757a8 wl1271_ps_elp_wakeup +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xb2fce399 wlcore_set_partition +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xb587200d wlcore_event_max_tx_failure +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xb675a3cc wl1271_cmd_send +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xb805a0fa wl1271_format_buffer +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xb9862e39 wl1271_tx_min_rate_get +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xc056146f wlcore_cmd_wait_for_event_or_timeout +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xc4c4145d wlcore_event_beacon_loss +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xc4dc6770 wl12xx_cmd_build_probe_req +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xc8e51ba7 wl1271_tx_flush +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xdaf0de1f wlcore_event_channel_switch +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xdd482520 wl1271_acx_set_ht_capabilities +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xdd853c93 wlcore_free_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xe3683986 wl1271_acx_init_mem_config +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xe3b4ba3c wlcore_set_key +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xe6233f7c wlcore_event_inactive_sta +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xe6ff835b wlcore_translate_addr +EXPORT_SYMBOL_GPL drivers/nfc/nfcmrvl/nfcmrvl 0x390849a1 nfcmrvl_parse_dt +EXPORT_SYMBOL_GPL drivers/nfc/nfcmrvl/nfcmrvl 0x9a370073 nfcmrvl_nci_unregister_dev +EXPORT_SYMBOL_GPL drivers/nfc/nfcmrvl/nfcmrvl 0xaaabcf6e nfcmrvl_nci_register_dev +EXPORT_SYMBOL_GPL drivers/nfc/nfcmrvl/nfcmrvl 0xe5767106 nfcmrvl_nci_recv_frame +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x3b703d5c st_nci_remove +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x41291791 st_nci_probe +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x52374fe0 st_nci_hci_event_received +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x6a8ef77c st_nci_enable_se +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x7bcdcce3 st_nci_hci_load_session +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0xab4bac31 st_nci_hci_cmd_received +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0xcbd1332c st_nci_discover_se +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0xfcc4f899 st_nci_disable_se +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x02315ce9 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 0x82e6c13d ntb_transport_qp_num +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x835cbccd ntb_transport_create_queue +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x8c72da3e ntb_transport_unregister_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 0xf55d6313 ntb_transport_register_client_dev +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0xf9eb813f ntb_transport_unregister_client_dev +EXPORT_SYMBOL_GPL drivers/power/pcf50633-charger 0x3e3e8e1a pcf50633_mbc_get_status +EXPORT_SYMBOL_GPL drivers/power/pcf50633-charger 0x79cb051f pcf50633_mbc_usb_curlim_set +EXPORT_SYMBOL_GPL drivers/power/pcf50633-charger 0xfa766f2e pcf50633_mbc_get_usb_online_status +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x4459243b mc13xxx_parse_regulators_dt +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x617e6108 mc13xxx_fixed_regulator_set_voltage +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x94177609 mc13xxx_get_num_regulators_dt +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0xa7cfb1ee mc13xxx_fixed_regulator_ops +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0xca0d3b82 mc13xxx_regulator_ops +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x10a863b2 wm8350_ldo_set_slot +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x47b774c4 wm8350_dcdc25_set_mode +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x79451b24 wm8350_dcdc_set_slot +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0xa64b0678 wm8350_register_led +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0xa746d40a wm8350_isink_set_flash +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0xec11df6e wm8350_register_regulator +EXPORT_SYMBOL_GPL drivers/regulator/wm8400-regulator 0x8959f9de wm8400_register_regulator +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x00c63c8d cxgbi_set_host_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x098ce846 cxgbi_ep_disconnect +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x09d054a0 cxgbi_create_conn +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x0bf73320 cxgbi_sock_check_wr_invariants +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x1c58fc0e cxgbi_sock_established +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x206399c8 cxgbi_sock_rcv_wr_ack +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x21c34abd cxgbi_ep_poll +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x2db80ad5 cxgbi_get_host_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x2e6d1625 cxgbi_iscsi_cleanup +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x30018a5a cxgbi_device_portmap_cleanup +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x34df96db cxgbi_destroy_session +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x37c66eea cxgbi_conn_pdu_ready +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x3a503774 cxgbi_bind_conn +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x3a5c4389 cxgbi_ddp_page_size_factor +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x3ebff99d cxgbi_hbas_add +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x5c3fc2a4 cxgbi_conn_xmit_pdu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x603cc030 cxgbi_set_conn_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x6a1ad9cc cxgbi_sock_skb_entail +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x7114508b cxgbi_sock_purge_wr_queue +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x75ec0182 cxgbi_parse_pdu_itt +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x77d12412 cxgbi_device_find_by_lldev +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x7fdb6004 cxgbi_device_unregister_all +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x817ebc99 cxgbi_iscsi_init +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x81ec3925 cxgbi_device_register +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x8a1acfec cxgbi_device_unregister +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x8c2ba369 cxgbi_ddp_ppod_clear +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x90cc02e1 cxgbi_ep_connect +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x94554b80 cxgbi_get_conn_stats +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x96cd11d0 cxgbi_sock_rcv_abort_rpl +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xb161ba4a cxgbi_sock_select_mss +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xb58bedc1 cxgbi_conn_init_pdu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xb7921f82 cxgbi_hbas_remove +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xbaaa4559 cxgbi_cleanup_task +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xbcc46650 cxgbi_sock_free_cpl_skbs +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xc0a1015e cxgbi_create_session +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xc1672936 cxgbi_get_ep_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xc2e5986b cxgbi_sock_rcv_close_conn_rpl +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xc7e18c99 cxgbi_ddp_ppod_set +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xcef1ad57 cxgbi_device_portmap_create +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xd0e65c3b cxgbi_device_find_by_netdev +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xd5ef2750 cxgbi_ddp_init +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xd884917c cxgbi_sock_closed +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xd8eb5acf cxgbi_ddp_cleanup +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xd9d95b79 cxgbi_conn_tx_open +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xe77d1229 cxgbi_sock_fail_act_open +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xea32abb1 cxgbi_sock_rcv_peer_close +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xec8fdd9f cxgbi_conn_alloc_pdu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xef346615 cxgbi_attr_is_visible +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xefe20053 cxgbi_sock_act_open_req_arp_failure +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xf300f49e cxgbi_device_find_by_netdev_rcu +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x068339fb scsi_dh_detach +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x1466d6fc scsi_register_device_handler +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x2197366c scsi_dh_activate +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x546027d6 scsi_unregister_device_handler +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x593a36c2 scsi_dh_handler_exist +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x5c2f0469 scsi_dh_attached_handler_name +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x75bc08a4 scsi_dh_set_params +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0xd0bd9d4f scsi_dh_attach +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x04ca9b7d fcoe_clean_pending_queue +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x05bc4f72 fcoe_validate_vport_create +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x0fb51275 fcoe_queue_timer +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x20670d16 fcoe_get_wwn +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x374c1e1c fcoe_wwn_from_mac +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x39069188 fcoe_fcf_device_add +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x3ea3678b fcoe_ctlr_device_add +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x49764a28 fcoe_libfc_config +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x6d0f429e __fcoe_get_lesb +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x7186998f fcoe_link_speed_update +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x76b98d12 fcoe_fc_crc +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x7ddfda76 fcoe_fcf_device_delete +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x84b3d915 fcoe_wwn_to_str +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x8b39daef fcoe_check_wait_queue +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x8b460764 fcoe_ctlr_device_delete +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xab4e165b fcoe_get_lesb +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xb4a93651 fcoe_start_io +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xc017b189 fcoe_get_paged_crc_eof +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xda6ff9a5 fcoe_ctlr_get_lesb +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x1bae0315 iscsi_boot_destroy_kset +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x3c298bc8 iscsi_boot_create_target +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x555457bf iscsi_boot_create_kset +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x55efddbd iscsi_boot_create_host_kset +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0xc0df6c35 iscsi_boot_create_ethernet +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0xe388ff47 iscsi_boot_create_initiator +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x003ecb86 __iscsi_put_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x02671505 iscsi_update_cmdsn +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x0952a9cc iscsi_host_set_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x12b2ad06 iscsi_switch_str_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x161a9e33 iscsi_eh_device_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x236edf0f iscsi_session_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x27686aee iscsi_prep_data_out_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x3587982a iscsi_conn_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x36dcdca4 iscsi_eh_abort +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x3bef2f73 iscsi_pool_init +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x3c659893 iscsi_verify_itt +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x4e26ae22 iscsi_requeue_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x52f4b1e6 iscsi_eh_target_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x59540445 iscsi_host_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x5d82bee8 iscsi_conn_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x667259b2 iscsi_eh_recover_target +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x6b88b7e8 iscsi_conn_bind +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x6c5bb70f iscsi_conn_queue_work +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x78927f76 iscsi_conn_start +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x89071767 iscsi_host_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x89ee9d2a iscsi_itt_to_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x8d303b1b iscsi_pool_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x8e1462c2 iscsi_conn_stop +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x8f411be2 iscsi_target_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x9410412a iscsi_set_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x9562ed8d iscsi_complete_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x9fdaf1b3 iscsi_eh_session_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xa235e36a iscsi_complete_scsi_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xaf96c1c2 iscsi_conn_send_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xb1be30b1 iscsi_conn_failure +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xb3090fee iscsi_session_recovery_timedout +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xb337cc61 iscsi_session_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xb7fbb176 iscsi_suspend_tx +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xb876ee95 __iscsi_complete_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xbb55b924 iscsi_session_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xbe643c88 iscsi_host_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xbf8c9136 iscsi_conn_get_addr_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xc2cc6995 iscsi_suspend_queue +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xc510f4d2 iscsi_session_failure +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xc5635af2 __iscsi_get_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xd033da6c iscsi_host_add +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xd0cf8bee iscsi_queuecommand +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xdcc33335 iscsi_host_remove +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xf644ef1b iscsi_conn_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xf74ca28e iscsi_itt_to_ctask +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xfb5b22b1 iscsi_put_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x1bb54915 iscsi_tcp_dgst_header +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x2433c888 iscsi_tcp_conn_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x412872ba iscsi_tcp_segment_done +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x4fe8c7c3 iscsi_tcp_r2tpool_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x6e3aa40d iscsi_tcp_conn_get_stats +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x7284f426 iscsi_segment_seek_sg +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x83170cfe iscsi_tcp_task_init +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x917b5b54 iscsi_tcp_recv_segment_is_hdr +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x94240330 iscsi_tcp_r2tpool_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x94c0ae11 iscsi_segment_init_linear +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xa721d900 iscsi_tcp_hdr_recv_prep +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xb6960812 iscsi_tcp_set_max_r2t +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xc5f212e5 iscsi_tcp_conn_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xd6749f96 iscsi_tcp_task_xmit +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xe13406db iscsi_tcp_cleanup_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xe3c0c2a9 iscsi_tcp_segment_unmap +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xeac0261b iscsi_tcp_recv_skb +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x095afff2 sas_request_addr +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x09645e90 sas_target_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x0a945c7a sas_change_queue_depth +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x13b4fe50 sas_bios_param +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x3cb022f4 sas_domain_attach_transport +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x47ed6566 sas_target_destroy +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x499f39e2 sas_ssp_task_response +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x4d02a848 sas_free_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x7340cffc sas_ata_schedule_reset +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x7395508f sas_phy_reset +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x73d4c12e sas_queuecommand +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x7d156954 sas_alloc_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x84f43612 sas_register_ha +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x9fbdb229 sas_eh_device_reset_handler +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xb3b0e152 sas_get_local_phy +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xb7d9baf4 sas_eh_bus_reset_handler +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xb9f37f3a sas_domain_release_transport +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xc0a3e3c3 sas_alloc_slow_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xc903bcbe sas_drain_work +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xd470bbc9 sas_slave_configure +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xe0bebcdd sas_unregister_ha +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xed2c1e41 sas_eh_abort_handler +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xf27ffa90 sas_task_abort +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xfc4bc0c3 sas_ioctl +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x07088228 iscsi_unblock_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x1046b3b0 iscsi_offload_mesg +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x10f20531 iscsi_create_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x13b289ac iscsi_is_session_dev +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x146bff0c iscsi_remove_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x1491891c iscsi_scan_finished +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x23f4f208 iscsi_destroy_iface +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x254acb5e iscsi_is_session_online +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x29a7fa23 iscsi_create_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x42fbd15f iscsi_destroy_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x46337694 iscsi_destroy_all_flashnode +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x52314e92 iscsi_conn_error_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x5854983e iscsi_block_scsi_eh +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x65e2023b iscsi_session_chkready +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x68f4a34b iscsi_create_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x69638647 iscsi_find_flashnode_sess +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x699fe53e iscsi_get_discovery_parent_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x6d428e43 iscsi_block_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x6dac546e iscsi_unregister_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x74270f53 iscsi_add_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x84a005f1 iscsi_get_router_state_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x8a151d04 iscsi_get_port_state_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x93afe325 iscsi_destroy_flashnode_sess +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xa1fed154 iscsi_destroy_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xa8a5c456 iscsi_flashnode_bus_match +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xba8fbd09 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 0xbcc7ae56 iscsi_create_flashnode_sess +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xbf0fbc2d iscsi_recv_pdu +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xbfd43bc1 iscsi_register_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xc1af28ca iscsi_session_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xc4b4babd iscsi_is_flashnode_conn_dev +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xc5e12ed0 iscsi_ping_comp_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xc7eb9c87 iscsi_post_host_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xd47e1fa4 iscsi_create_iface +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xd91a276f iscsi_destroy_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xe0b07062 iscsi_get_port_speed_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xe8ec5205 iscsi_lookup_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xeba837d6 iscsi_conn_login_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xf06d6a6a iscsi_find_flashnode_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xf1e806e0 iscsi_alloc_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xf869a1ea iscsi_free_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xf8f7f2b9 iscsi_host_for_each_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0x394c8983 sas_disable_tlr +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0x49797472 sas_is_tlr_enabled +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0xdd36e1cd sas_enable_tlr +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0xedb313f8 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 0xc7120805 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 0x149be2e8 srp_stop_rport_timers +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x36b48b3b srp_attach_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x8d1dc61a srp_rport_del +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0xd596b0b3 srp_rport_add +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0xee891cc0 srp_tmo_valid +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0xeecb45cc srp_release_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0xf5537988 srp_remove_host +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0x7ab59647 ufshcd_dme_set_attr +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0x8513b239 ufshcd_init +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0xb8823931 ufshcd_dme_get_attr +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0xf99e5ce2 ufshcd_remove +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x293ca042 spi_bitbang_setup_transfer +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x5d6438f1 spi_bitbang_setup +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x6edeb531 spi_bitbang_start +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0xdae419f5 spi_bitbang_cleanup +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0xe98c2abe spi_bitbang_stop +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0x295cc5d2 dw_spi_add_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0x31b16b13 dw_spi_remove_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0x50c4f586 dw_spi_suspend_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0xa26dda74 dw_spi_resume_host +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x0409315c spmi_ext_register_read +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x053b3c18 spmi_device_remove +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x08213454 spmi_device_alloc +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x1019d997 spmi_controller_add +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x11ddd270 spmi_controller_alloc +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x138b1e12 spmi_device_add +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x17dc7afd spmi_command_shutdown +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x28869430 spmi_register_zero_write +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x50315949 spmi_register_write +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x6d70db42 spmi_command_reset +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x71fbcb6f spmi_register_read +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xa0f4a989 spmi_ext_register_writel +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xbdc67d98 spmi_command_sleep +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xd1b1962d spmi_driver_register +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xd6f8a6b0 spmi_ext_register_write +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xd7c3ee71 spmi_ext_register_readl +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xd8c6acd3 spmi_controller_remove +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xeafa052c spmi_command_wakeup +EXPORT_SYMBOL_GPL drivers/ssb/ssb 0xe3b7c1f3 ssb_pmu_spuravoid_pllupdate +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x017d7200 comedi_load_firmware +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x05304114 comedi_is_subdevice_running +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x060379eb comedi_dev_get_from_minor +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x0cd330f4 range_unknown +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x15679363 comedi_alloc_subdev_readback +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x21102f87 range_0_32mA +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x24d153a3 comedi_handle_events +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x2879aa48 __comedi_request_region +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x2f0ad9d3 range_bipolar5 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x323448f7 comedi_legacy_detach +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x3bacd0c4 comedi_buf_write_samples +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x4236eaaf range_4_20mA +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x47cc32ec comedi_timeout +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x4fe634f3 range_bipolar2_5 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x5e3d9c3b comedi_set_spriv_auto_free +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x5eab1c44 comedi_inc_scan_progress +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x6777fbf7 comedi_auto_unconfig +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x8113872c range_unipolar10 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x817cea2f comedi_dio_insn_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x8a651f64 comedi_buf_write_alloc +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x8ff20736 comedi_event +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x909b5874 comedi_request_region +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x913017fd comedi_readback_insn_read +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x9e6b7a84 comedi_buf_write_free +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xa43edd39 comedi_set_hw_dev +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xa5a921f8 comedi_buf_read_free +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xab68a100 comedi_bytes_per_scan +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xabb1ebcc comedi_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xad8192e3 comedi_dev_put +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xad9ecd43 comedi_alloc_devpriv +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xaeeb4281 comedi_nscans_left +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xaf37f763 comedi_alloc_subdevices +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xb679cebc range_0_20mA +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xba11efcb comedi_check_chanlist +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 0xbe0a67a1 comedi_dio_update_state +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xbfeee867 comedi_buf_read_n_available +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xc33c52cb comedi_auto_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xd3ede028 comedi_buf_read_alloc +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xd73ea1fe comedi_alloc_spriv +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xdb2044b2 range_unipolar5 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xdbf75f2b comedi_buf_read_samples +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xe687ae58 comedi_nsamples_left +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xfc6b3ef1 comedi_driver_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0x08db474a comedi_pci_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0x0c6e597f comedi_pci_auto_unconfig +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0x0ee924aa comedi_to_pci_dev +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0x143285d1 comedi_pci_driver_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0x9fcd04be comedi_pci_auto_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0xacbc10b7 comedi_pci_detach +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0xea08cd82 comedi_pci_disable +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0xfc40c865 comedi_pci_enable +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pcmcia 0x001326c1 comedi_pcmcia_driver_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pcmcia 0x02a289e5 comedi_pcmcia_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pcmcia 0x0681b5fc comedi_to_pcmcia_dev +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pcmcia 0x1927c519 comedi_pcmcia_auto_unconfig +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pcmcia 0x3efaba04 comedi_pcmcia_enable +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pcmcia 0x8f0a166f comedi_pcmcia_auto_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pcmcia 0x9c50c13a comedi_pcmcia_disable +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0x2ef0a566 comedi_usb_auto_unconfig +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0x339b1071 comedi_usb_auto_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0x9ba9059a comedi_to_usb_interface +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0xaf5460fd comedi_usb_driver_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0xd48e0652 comedi_to_usb_dev +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0xe94ea9f3 comedi_usb_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/addi_watchdog 0x79c5ade9 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 0x41e0277d amplc_dio200_set_enhance +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/amplc_dio200_common 0xd91e07f7 amplc_dio200_common_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/amplc_pc236_common 0x498e6f6f amplc_pc236_common_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x46272d01 comedi_8254_load +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x534b55ab comedi_8254_update_divisors +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x59bdb6d0 comedi_8254_mm_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x5a40ef9a comedi_8254_status +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x64452ac7 comedi_8254_write +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x65f68eb3 comedi_8254_cascade_ns_to_timer +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x6dda1332 comedi_8254_set_mode +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x7b090cad comedi_8254_read +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x8e31eb7e comedi_8254_pacer_enable +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x9a6b3178 comedi_8254_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0xcb3d2089 comedi_8254_ns_to_timer +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0xd3ad4a89 comedi_8254_set_busy +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0xf8d70810 comedi_8254_subdevice_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8255 0x0c21c0b1 subdev_8255_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8255 0x15fe7220 subdev_8255_regbase +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8255 0x6ec24ffd subdev_8255_mm_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_isadma 0x0d68fcd9 comedi_isadma_poll +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 0x6815a033 comedi_isadma_free +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_isadma 0x96e8c3ec comedi_isadma_alloc +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_isadma 0xa3d01a85 comedi_isadma_program +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_isadma 0xa7ebb8a3 comedi_isadma_set_mode +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/das08 0x5dad164f das08_common_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x06c8f3ca mite_bytes_read_from_memory_lb +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x0c721997 mite_bytes_in_transit +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x0cbd22f0 mite_buf_change +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x3b8a124a mite_setup2 +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x3f8a0d39 mite_dma_tcr +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x464b546d mite_alloc_ring +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x4bc09065 mite_free_ring +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x512d9603 mite_detach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x5e5e70f2 mite_bytes_written_to_memory_lb +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x68af476e mite_request_channel_in_range +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x7013f0d2 mite_dma_arm +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x77398d9b mite_done +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x87347530 mite_bytes_read_from_memory_ub +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x9ec9bff2 mite_dma_disarm +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xa09ebfcf mite_release_channel +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xd6ca3338 mite_alloc +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xdeea42f0 mite_prep_dma +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xdfa2f608 mite_bytes_written_to_memory_ub +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xe307f40f mite_get_status +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xe3bc5ac5 mite_sync_output_dma +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xe720ba99 mite_sync_input_dma +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_common 0xc4b4cda5 labpc_common_detach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_common 0xf1a71ed3 labpc_common_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_isadma 0x18d00f87 labpc_setup_dma +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_isadma 0x753c2fc8 labpc_drain_dma +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_isadma 0x8511812b labpc_handle_dma_status +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_isadma 0xd94afd9f labpc_init_dma_chan +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_isadma 0xe588b6d7 labpc_free_dma_chan +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x39bdfd48 ni_gpct_device_destroy +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x4032a056 ni_tio_init_counter +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x69bf69b1 ni_tio_set_gate_src +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0xb806a8b3 ni_gpct_device_construct +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0xc9d8da6c ni_tio_arm +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0xed5a19ec ni_tio_insn_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0xefc0858a ni_tio_insn_read +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0xf1bffd5d ni_tio_insn_write +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0x052942f0 ni_tio_acknowledge +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0x0f480a5d ni_tio_set_mite_channel +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0x542f2469 ni_tio_cmd +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0x9a6421ab ni_tio_cmdtest +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0xaa7fcd81 ni_tio_handle_interrupt +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0xf536641d ni_tio_cancel +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x0f86b1da comedi_dio_bitfield2 +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x1227e869 comedi_dio_get_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x234815b0 comedi_open +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x5e9d2df5 comedi_dio_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x888abf2b comedi_find_subdevice_by_type +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x97d45366 comedi_get_n_channels +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0xa27e7e0c comedi_close +EXPORT_SYMBOL_GPL drivers/staging/lustre/lustre/obdclass/obdclass 0x1e913a5d lustre_attr_show +EXPORT_SYMBOL_GPL drivers/staging/lustre/lustre/obdclass/obdclass 0x281cee36 lustre_kobj +EXPORT_SYMBOL_GPL drivers/staging/lustre/lustre/obdclass/obdclass 0x52fe8c55 debugfs_lustre_root +EXPORT_SYMBOL_GPL drivers/staging/lustre/lustre/obdclass/obdclass 0xc0f62087 lustre_attr_store +EXPORT_SYMBOL_GPL drivers/staging/lustre/lustre/obdclass/obdclass 0xe169efd4 lustre_sysfs_ops +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x0e81c76d spk_serial_out +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x0ef1d765 speakup_info +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x14f06fe7 spk_serial_in_nowait +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 0x475e158a synth_request_region +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x5710dd00 spk_synth_is_alive_nop +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x6016b41b spk_synth_flush +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x82f84267 spk_var_store +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x8e146195 synth_release_region +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x9a888082 synth_buffer_getc +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xa8994f89 spk_do_catch_up +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xb060078f spk_synth_is_alive_restart +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xb08c8bed synth_remove +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xb35aaab9 speakup_event +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xb48956f8 synth_buffer_peek +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xbbd15a51 speakup_start_ttys +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xc34959c4 spk_synth_immediate +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xc766ae09 synth_printf +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xc98e2a83 spk_var_show +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xd1b551a2 spk_get_var +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xe7cd4558 spk_serial_release +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xe7e810f8 spk_serial_in +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xe8d4045f spk_serial_synth_probe +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xf841673d synth_add +EXPORT_SYMBOL_GPL drivers/tty/n_tracesink 0x585ebaac n_tracesink_datadrain +EXPORT_SYMBOL_GPL drivers/uio/uio 0x69e941b4 uio_unregister_device +EXPORT_SYMBOL_GPL drivers/uio/uio 0x97a7e95d __uio_register_device +EXPORT_SYMBOL_GPL drivers/uio/uio 0xbf90b08a uio_event_notify +EXPORT_SYMBOL_GPL drivers/usb/atm/usbatm 0x9ba0654e usbatm_usb_probe +EXPORT_SYMBOL_GPL drivers/usb/atm/usbatm 0xfa0a8860 usbatm_usb_disconnect +EXPORT_SYMBOL_GPL drivers/usb/chipidea/ci_hdrc 0x3b64d4b1 ci_hdrc_add_device +EXPORT_SYMBOL_GPL drivers/usb/chipidea/ci_hdrc 0xc5ec03ad ci_hdrc_remove_device +EXPORT_SYMBOL_GPL drivers/usb/chipidea/usbmisc_imx 0x260f5e10 imx_usbmisc_init +EXPORT_SYMBOL_GPL drivers/usb/chipidea/usbmisc_imx 0x47907c54 imx_usbmisc_init_post +EXPORT_SYMBOL_GPL drivers/usb/chipidea/usbmisc_imx 0x63f76001 imx_usbmisc_set_wakeup +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0x01932a5e ulpi_write +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0x2765e28a ulpi_register_interface +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0x3846ce1b ulpi_register_driver +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0x6f434088 ulpi_read +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0xc6326446 ulpi_unregister_driver +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0xcf67b627 ulpi_unregister_interface +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x0967e2f5 gether_disconnect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x1ec54ed6 gether_set_gadget +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x3341be11 gether_get_host_addr_u8 +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x485a20d9 gether_get_host_addr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x500db270 gether_get_qmult +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x62faf0c4 gether_set_qmult +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x6fc56f6f gether_get_dev_addr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x757025e2 gether_connect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x801adc67 gether_register_netdev +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x8878cfa6 gether_cleanup +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xa978b3da gether_set_dev_addr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xaca2b86d gether_get_ifname +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xbaf94667 gether_setup_name_default +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xd18c918e gether_setup_name +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xd30c8c89 gether_get_host_addr_cdc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xf1c393cd gether_set_host_addr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0x33bfdca2 gserial_alloc_line +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0x481e5048 gserial_connect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0x5d99ea10 gserial_disconnect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0x89263781 gs_free_req +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0xb6652875 gserial_free_line +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0xf9e5ceeb gs_alloc_req +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_fs 0x707fc003 ffs_name_dev +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_fs 0x9b957dfc ffs_single_dev +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_fs 0xff3bd998 ffs_lock +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x062f1412 fsg_lun_fsync_sub +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x0a5230df fsg_common_set_nluns +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 0x17782bfd fsg_store_file +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x1b1cc3af store_cdrom_address +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 0x2d10b6a7 fsg_common_create_lun +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x374aab5c fsg_store_cdrom +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 0x423845e4 fsg_ss_bulk_in_comp_desc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x490ff6a2 fsg_lun_close +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x51707c29 fsg_common_run_thread +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 0x750daff6 fsg_show_file +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 0x8cf6b908 fsg_show_cdrom +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x8d8ba391 fsg_common_set_cdev +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x95bdf8d2 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 0x99023bfc fsg_common_put +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 0x9b02cbf2 fsg_show_removable +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x9b9b7d19 fsg_show_ro +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x9dc025a5 fsg_common_free_luns +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xa13a8ebc fsg_store_ro +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xa46e6443 fsg_common_get +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 0xacfd62e4 fsg_lun_open +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 0xc6c97eb2 fsg_common_remove_lun +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xd0907c90 fsg_show_nofua +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xd3ae3b65 fsg_common_create_luns +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xd468f882 fsg_common_set_ops +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xdfb1614e fsg_store_removable +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xe4d1591e fsg_config_from_params +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 0x255ffadc rndis_register +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x274230be rndis_set_host_mac +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x39268fc9 rndis_set_param_vendor +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x4ab38160 rndis_deregister +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x683d1e56 rndis_set_param_medium +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x72bcd700 rndis_get_next_response +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xa86797f1 rndis_signal_disconnect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xad2910a4 rndis_uninit +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xb56c4cfa rndis_set_param_dev +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xb676fba1 rndis_signal_connect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xb961a711 rndis_free_response +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xbf55718c rndis_borrow_net +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xd13d9de3 rndis_add_hdr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xde3532c0 rndis_rm_hdr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xff4354f2 rndis_msg_parser +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x04578a16 usb_function_unregister +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x08025c48 usb_function_deactivate +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x08b22924 usb_composite_unregister +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x0903bd6d usb_string_ids_tab +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x16fde0f4 usb_composite_overwrite_options +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x1d89a0d7 usb_put_function_instance +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x2d0fd3c4 usb_function_activate +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x2e09263f usb_copy_descriptors +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x311b7cb3 usb_get_function_instance +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x327bbdb1 usb_ep_autoconfig_ss +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x3ce7c97e usb_ep_autoconfig_reset +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x3fa9bdab usb_add_config +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x4bd8de0b usb_ep_autoconfig +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x4f0da7a8 config_ep_by_speed +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x60986807 usb_remove_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x697d5d00 usb_gstrings_attach +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x6a38830c usb_free_all_descriptors +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x6bdcd128 usb_string_id +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x6ead24b7 usb_assign_descriptors +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x8380f55c usb_string_ids_n +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x8cec5429 usb_composite_probe +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x94d7075a usb_gadget_get_string +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x997bea85 unregister_gadget_item +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xa073382d alloc_ep_req +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xb63cffcf usb_put_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xc75a513f usb_function_register +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xce669a40 usb_composite_setup_continue +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xd2ea2134 usb_descriptor_fillbuf +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xe7d915f0 usb_add_config_only +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xee76485d usb_add_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xf474a207 usb_gadget_config_buf +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xf6dfb8dd usb_get_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xff02f085 usb_interface_id +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x21c83469 usb_add_gadget_udc +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x258a6922 usb_gadget_probe_driver +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x33af2a12 usb_add_gadget_udc_release +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x352cf494 usb_gadget_giveback_request +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x39485b77 usb_del_gadget_udc +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x417e9781 usb_gadget_set_state +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x4a44f76e usb_udc_attach_driver +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x7e774de8 usb_gadget_unregister_driver +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x7edc0e54 usb_gadget_unmap_request +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x93252d8c usb_udc_vbus_handler +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0xc5b740bd usb_gadget_map_request +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0xdc7f8a60 usb_gadget_udc_reset +EXPORT_SYMBOL_GPL drivers/usb/misc/ezusb 0x3101e64e ezusb_fx1_set_reset +EXPORT_SYMBOL_GPL drivers/usb/misc/ezusb 0x8a3745a1 ezusb_fx1_ihex_firmware_download +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x20b18f88 usb_ftdi_elan_edset_output +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x3da5df92 usb_ftdi_elan_edset_setup +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x54fd4721 usb_ftdi_elan_write_pcimem +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x634631a5 usb_ftdi_elan_edset_single +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x64455980 ftdi_elan_gone_away +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xb15b053e usb_ftdi_elan_read_pcimem +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xc42293f2 usb_ftdi_elan_edset_input +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xc555131e usb_ftdi_elan_edset_empty +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xd91c37e0 usb_ftdi_elan_edset_flush +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0x0892ae1a musb_writew +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0x56d31820 musb_writel +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0x72234dd6 musb_readw +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0x96919667 musb_readl +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0xac5f3d70 musb_readb +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0xcb32cb36 musb_writeb +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0xd86652e0 musb_interrupt +EXPORT_SYMBOL_GPL drivers/usb/phy/phy-isp1301 0x07775acc isp1301_get_client +EXPORT_SYMBOL_GPL drivers/usb/serial/usb_wwan 0xd356e2fd usb_wwan_port_probe +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x02f5c11a usb_serial_generic_resume +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x0baee972 usb_serial_deregister_drivers +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x1cc92632 usb_serial_generic_open +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x2d425d0c usb_serial_generic_close +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x2ff20477 usb_serial_generic_get_icount +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x3c09d383 usb_serial_handle_dcd_change +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x4cac1b6d usb_serial_generic_chars_in_buffer +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x4f43316a usb_serial_generic_process_read_urb +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x554fc1fb usb_serial_generic_write_bulk_callback +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x560e0a63 usb_serial_generic_write_start +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x632ce0bb usb_serial_generic_tiocmiwait +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x63317a49 usb_serial_generic_submit_read_urbs +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x7c178e04 usb_serial_generic_write +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x942f0545 usb_serial_generic_read_bulk_callback +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xae0d7ca6 usb_serial_generic_throttle +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xae2efa8c usb_serial_generic_wait_until_sent +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xb63de463 usb_serial_handle_sysrq_char +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xcdb02c42 usb_serial_port_softint +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xde8db985 usb_serial_register_drivers +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xecd247fd usb_serial_generic_unthrottle +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xf5acb60c usb_serial_handle_break +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x02cff64e usb_stor_reset_resume +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x13320fef usb_stor_probe1 +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x14eede15 usb_stor_control_msg +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x19999d4b usb_stor_ctrl_transfer +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x1bc3edc2 usb_stor_sense_invalidCDB +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x2e4a12fc usb_stor_CB_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x357945c4 usb_stor_host_template_init +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x4f8067e1 usb_stor_post_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x4fbb9da4 usb_stor_pre_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x56c23cb6 usb_stor_clear_halt +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x5b9d6105 usb_stor_resume +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x63636e2c usb_stor_suspend +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x63938eb3 usb_stor_access_xfer_buf +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x6992505c usb_stor_Bulk_transport +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x77458558 usb_stor_adjust_quirks +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x80ec3e1d usb_stor_CB_transport +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x83182c68 usb_stor_set_xfer_buf +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x852382fc usb_stor_Bulk_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x902bae46 usb_stor_bulk_transfer_buf +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x916cf49d usb_stor_disconnect +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x9a08b959 usb_stor_transparent_scsi_command +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xb724d18d usb_stor_probe2 +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xc4a0ffa6 fill_inquiry_response +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xe4f58cb5 usb_stor_bulk_srb +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xe5cbfbe7 usb_stor_bulk_transfer_sg +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x24153a08 usbip_stop_eh +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x4554f06b usbip_recv_xbuff +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x522aec11 usbip_recv_iso +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x69fe7f8f usbip_recv +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x6a186a19 usbip_alloc_iso_desc_pdu +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x6c45126c usbip_pad_iso +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x78b72f44 usbip_debug_flag +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x972f5be2 dev_attr_usbip_debug +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xa7516d1d usbip_start_eh +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xb2448bbc usbip_pack_pdu +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xcbff7e80 usbip_dump_urb +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/usb/usbip/usbip-core 0xf1011d67 usbip_event_add +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xf796c64f usbip_event_happened +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x0bd816f0 wa_process_errored_transfers_run +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x11eda76d wa_urb_dequeue +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x122f15ac wa_urb_enqueue_run +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x4bf0dd9b wa_dti_start +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xb6708648 wa_urb_enqueue +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xc7a9b716 rpipe_ep_disable +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xcb55ad58 rpipe_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xdfb1a97f wa_create +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xe0b26080 rpipe_clear_feature_stalled +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xfd7d6d10 __wa_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x0ac60202 wusbhc_mmcie_rm +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x0bb6bf5e wusb_cluster_id_get +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x11e59671 wusbhc_b_create +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x1341ce04 wusbhc_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x2ccb151c __wusb_dev_get_by_usb_dev +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x50270a99 wusbhc_rh_status_data +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x7f0b7631 wusb_dev_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x80621075 wusbhc_b_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x88b51831 wusbhc_reset_all +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x93db251d wusbhc_rh_control +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xa507d8d1 wusbhc_giveback_urb +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xa54ec5f7 wusbhc_mmcie_set +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xb725d128 wusb_cluster_id_put +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xbbdcabf0 wusbhc_rh_start_port_reset +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xe9919216 wusbhc_create +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xec9dc356 wusbhc_chid_set +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xf770a6b4 wusbd +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xf8f8b89d wusbhc_handle_dn +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xfe2e17d7 wusb_et_name +EXPORT_SYMBOL_GPL drivers/uwb/i1480/dfu/i1480-dfu-usb 0x02e171b3 i1480_rceb_check +EXPORT_SYMBOL_GPL drivers/uwb/i1480/dfu/i1480-dfu-usb 0x3dd1e48d i1480_cmd +EXPORT_SYMBOL_GPL drivers/uwb/i1480/dfu/i1480-dfu-usb 0xf15a53cb i1480_fw_upload +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x18758e9c __umc_driver_register +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x5a6b323f umc_controller_reset +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x7a745545 umc_match_pci_id +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x902751d8 umc_device_unregister +EXPORT_SYMBOL_GPL drivers/uwb/umc 0xdc76a198 umc_bus_type +EXPORT_SYMBOL_GPL drivers/uwb/umc 0xe0b689dc umc_device_register +EXPORT_SYMBOL_GPL drivers/uwb/umc 0xe5d37b0d umc_driver_unregister +EXPORT_SYMBOL_GPL drivers/uwb/umc 0xfc0cbe59 umc_device_create +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x047386c2 uwb_pal_init +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x08b50b7a uwb_dev_for_each +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x0d78016e __uwb_addr_print +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x0fc02440 uwb_est_unregister +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x146ddfba uwb_rc_mac_addr_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x19f7b439 uwb_rc_cmd_async +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x1bb0f153 uwb_rc_rm +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x1cbd3845 uwb_rsv_establish +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x27cc83ab uwb_rc_alloc +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x33073144 uwb_rc_get_by_grandpa +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x34312b4c uwb_notifs_register +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x3bba6d44 uwb_rc_vcmd +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x3c3f6342 uwb_rsv_modify +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x4328b32b uwb_dev_try_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x4c62e29c uwb_rc_reset_all +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x4d57ae3c uwb_rsv_type_str +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x56fe1269 uwb_radio_start +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x5a479887 uwb_rc_ie_add +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x6fbe5106 uwb_est_find_size +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x759b73ce uwb_rc_get_by_dev +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x7619fbf6 uwb_rsv_terminate +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x774b3a04 uwb_rc_pre_reset +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x816b9e92 uwb_est_register +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x839b1e73 uwb_rc_cmd +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x8d2788ad uwb_rc_init +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x97ac6031 uwb_rc_post_reset +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x98413234 uwb_rsv_state_str +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x997be24e uwb_rsv_accept +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x9f472063 uwb_radio_stop +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xa0d72613 uwb_rc_add +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xa5e9bcb2 uwb_pal_register +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xac97316b uwb_ie_next +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xb6f8cde5 uwb_pal_unregister +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xb9a1ad94 uwb_rc_dev_addr_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xd62745ee uwb_rc_neh_grok +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xdc59fc7f __uwb_rc_try_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xe18cc175 uwb_rc_neh_error +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xe45cd349 uwb_rc_ie_rm +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xe6777691 uwb_notifs_deregister +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xe879b972 uwb_rc_put +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xef235d0b uwb_rsv_get_usable_mas +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xfd2651d3 uwb_rsv_destroy +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xfeb109e9 uwb_rsv_create +EXPORT_SYMBOL_GPL drivers/uwb/whci 0xb659170a whci_wait_for +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x0140bb12 vhost_discard_vq_desc +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x12d39ca8 vhost_dev_ioctl +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x16b1dc13 vhost_add_used_and_signal +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x1ecf859c vhost_dev_has_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x204d46a5 vhost_vq_access_ok +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x232cf3e2 vhost_add_used_and_signal_n +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x23b2c233 vhost_dev_check_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x269f7a09 vhost_dev_reset_owner_prepare +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x27663708 vhost_log_write +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x2d0539f2 vhost_work_queue +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x32e560b6 vhost_log_access_ok +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x436769c4 vhost_poll_queue +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x44ff0b3e vhost_poll_init +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x4a05c53f vhost_dev_set_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x53168092 vhost_dev_stop +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x55f7280a vhost_add_used +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x572c5e1a vhost_get_vq_desc +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x787fc2ce vhost_init_used +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x8a69c477 vhost_disable_notify +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x8c4df1bb vhost_work_flush +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x91bd0469 vhost_dev_cleanup +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xb0f81e37 vhost_work_init +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xb8f90e7f vhost_vring_ioctl +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xbab7fed3 vhost_add_used_n +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xbf25d32c vhost_enable_notify +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xcb13f366 vhost_poll_stop +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xcf3b05fe vhost_dev_init +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xd7fb8c57 vhost_signal +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xe246c8de vhost_poll_start +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xf0a9dba5 vhost_dev_reset_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xfdd6738f vhost_poll_flush +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x2706505b ili9320_shutdown +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x810d9ba2 ili9320_write +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0xe5615fb9 ili9320_probe_spi +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0xe800458e ili9320_write_regs +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0xf1ebc311 ili9320_remove +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x007ef55a auok190x_send_cmdargs_nowait +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x05b61454 auok190x_send_cmdargs_pixels_nowait +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x1fdf8d50 auok190x_common_probe +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x4d26e220 auok190x_pm +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x601f940d auok190x_send_command_nowait +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x79284e74 auok190x_common_remove +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x8da79411 auok190x_send_cmdargs_pixels +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x91fb033d auok190x_read_cmdargs +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x9a13235f auok190x_send_command +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x9f97ab81 auok190x_send_cmdargs +EXPORT_SYMBOL_GPL drivers/video/fbdev/core/fb_ddc 0x01fd2ee2 fb_ddc_read +EXPORT_SYMBOL_GPL drivers/video/fbdev/sis/sisfb 0xe585c4d4 sis_free_new +EXPORT_SYMBOL_GPL drivers/video/fbdev/sis/sisfb 0xf72633da sis_malloc_new +EXPORT_SYMBOL_GPL drivers/w1/wire 0x40098547 w1_reset_resume_command +EXPORT_SYMBOL_GPL drivers/w1/wire 0x5c82d7ea w1_write_8 +EXPORT_SYMBOL_GPL drivers/w1/wire 0x7c2f2afb w1_calc_crc8 +EXPORT_SYMBOL_GPL drivers/w1/wire 0x870db4c0 w1_read_block +EXPORT_SYMBOL_GPL drivers/w1/wire 0x880dda75 w1_reset_bus +EXPORT_SYMBOL_GPL drivers/w1/wire 0x96331d78 w1_read_8 +EXPORT_SYMBOL_GPL drivers/w1/wire 0xa4294b3b w1_reset_select_slave +EXPORT_SYMBOL_GPL drivers/w1/wire 0xba67a491 w1_touch_block +EXPORT_SYMBOL_GPL drivers/w1/wire 0xd54b1176 w1_next_pullup +EXPORT_SYMBOL_GPL drivers/w1/wire 0xefc3bbc7 w1_write_block +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x49fb6173 dlm_posix_lock +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x9321df95 dlm_lock +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xc6dc8c2f dlm_new_lockspace +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xcf9f3328 dlm_release_lockspace +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xdc583c08 dlm_unlock +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xee3f2285 dlm_posix_get +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xfb4a4d24 dlm_posix_unlock +EXPORT_SYMBOL_GPL fs/fscache/fscache 0x092cf98e fscache_object_sleep_till_congested +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x0aeecb28 nlmsvc_ops +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x31d59610 lockd_up +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x77e35ccc nlmsvc_unlock_all_by_ip +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x8139a0c6 nlmclnt_proc +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x914515fc nlmsvc_unlock_all_by_sb +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x9b57e2c7 lockd_down +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x9fcea7aa nlmclnt_init +EXPORT_SYMBOL_GPL fs/lockd/lockd 0xba4bc473 nlmclnt_done +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0307cc4d nfs_sync_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x04d0960d nfs_writeback_update_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x06879ae7 nfs_destroy_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x07a960ec nfs_zap_acl_cache +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x07ba52d4 nfs_pgheader_init +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0ad44066 nfs_do_submount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0c9da7d1 nfs_path +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0d03e91c nfs_setsecurity +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0dfa377e nfs_pgio_header_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0f820940 nfs_create +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x120caf34 nfs_pageio_init_write +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x149766df nfs_pageio_resend +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1bd59fa5 nfs_show_devname +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1c59396d nfs_kill_super +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x229258d4 nfs_generic_pg_test +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2550bda6 nfs_mark_client_ready +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x261c5e8a nfs_refresh_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x26884ff7 nfs_alloc_fhandle +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x27e31b1c nfs_invalidate_atime +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2a0880af nfs_server_remove_lists +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2ac8efec nfs_symlink +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2acee8c8 nfs_pgio_current_mirror +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2b3186b0 nfs_put_lock_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3330c853 nfs_rmdir +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x341592c5 get_nfs_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3788e1c7 nfs_getattr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x37e5eea4 nfs_wait_client_init_complete +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x39e05ac3 nfs_idmap_cache_timeout +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3af5247c nfs_write_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3c79af24 nfs_alloc_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3ca31f35 nfs_net_id +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3f2690f2 nfs_check_flags +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4103e7da nfs_lock +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4147e1d5 nfs_atomic_open +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x418dbc90 nfs_access_add_cache +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x42845d76 nfs_create_rpc_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x42f2c81f nfs4_client_id_uniquifier +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x42f6bef6 nfs_fs_type +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x464c4272 nfs_access_zap_cache +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x47bca37a nfs_request_remove_commit_list +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x485ef978 nfs4_dentry_operations +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4ba502eb nfs_pageio_init +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4c034520 nfs_unlink +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4cb9e001 recover_lost_locks +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4f2cb7ec nfs_pageio_reset_write_mds +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x51892d61 nfs_callback_set_tcpport +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x55332f6e nfs4_fs_type +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5784dd31 nfs_fscache_open_file +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x584b8482 nfs_inc_attr_generation_counter +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5adc0f7b nfs_request_add_commit_list_locked +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5e1d863a nfs_sockaddr_match_ipaddr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5e3e9c67 nfs_init_server_rpcclient +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5ef88474 nfs_retry_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x60e7ecd9 nfs_dentry_operations +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x60fe564a nfs_clear_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x63629017 nfs_try_mount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6372bf52 nfs_put_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x63978e72 nfs_file_splice_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x64839ed8 nfs_umount_begin +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6509d574 nfs_lookup +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6992b55b nfs_may_open +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6bc6eb67 nfs_file_fsync_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6c484e91 nfs_alloc_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x71db9ab1 nfs_close_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x72d745e4 nfs_file_release +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x73a1aa1b nfs_access_set_mask +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x77f19ad6 nfs_show_options +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x79719ce0 nfs_clone_sb_security +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7a00d6ae nfs_initiate_pgio +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7afcdb6d nfs_rename +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7bb2b1d3 nfs_post_op_update_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7c16a6c1 nfs_pgio_data_destroy +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7c9722ba nfs_dreq_bytes_left +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7dec333a register_nfs_version +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x852412e5 nfs_fill_super +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x860ddc31 nfs_setattr_update_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8ab11f1e nfs_probe_fsinfo +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8e45abce nfs_sb_deactive +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8e4cdf35 nfs_show_path +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8ec67cba nfs_fhget +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 0x92f297e0 nfs_pgio_header_free +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x94757544 nfs_mkdir +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x94d64685 __tracepoint_nfs_fsync_exit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x97819964 nfs_get_lock_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9a726116 nfs_setattr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9a8cf80d nfs_server_insert_lists +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9ac37498 nfs_request_add_commit_list +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9d21517a nfs_file_write +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9fb7083c nfs_set_sb_security +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa19ab48b nfs_init_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa1ed48a1 nfs_sb_active +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa5822f1d nfs_statfs +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa6643b6b nfs_file_flush +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa6768f67 nfs_permission +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa6c865ee nfs_wait_bit_killable +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa8d2d1ce nfs_callback_tcpport +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa8e9e1ae send_implementation_id +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa9a15e9f nfs_sops +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xac0aaa00 nfs_wb_all +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xac90755d __tracepoint_nfs_fsync_enter +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xad688758 nfs_pageio_reset_read_mds +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xad9d9456 nfs_file_mmap +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb47f7bb4 nfs_submount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb606e716 nfs_fattr_init +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb9044567 nfs_commitdata_release +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb91037a0 nfs_instantiate +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbb97d9d3 nfs_fs_mount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbd5aac7d nfs_alloc_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbf6bce57 nfs_link +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbf779fbd nfs_force_lookup_revalidate +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbfdb1950 nfs_free_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc188508a nfs_remount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc2320d23 nfs_revalidate_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc30e0638 nfs_file_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc36cb4e1 nfs_init_cinfo +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc3999813 put_nfs_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc3f9d5e9 nfs_server_copy_userdata +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc4ff1e9f nfs_auth_info_match +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc5579978 alloc_nfs_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc5ef47d5 nfs_init_timeout_values +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc670976b nfs_file_llseek +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc702c5d2 nfs_initiate_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc73f9e59 nfs_free_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xcadc3ad7 nfs_clone_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd2513081 _nfs_display_fhandle_hash +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd75895bb nfs_file_operations +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd7d708ca nfs_commit_free +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd92045d8 nfs_get_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xda4d1ad0 unregister_nfs_version +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdae9b5d7 nfs4_disable_idmapping +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdf77de19 nfs_commitdata_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdfdabaa6 nfs4_label_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe0715fa8 nfs_drop_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe258ebbf nfs_show_stats +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe48be5ec nfs_generic_pgio +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe4d0af04 nfs_flock +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe8effd31 nfs_post_op_update_inode_force_wcc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe92c510d nfs_direct_set_resched_writes +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xea5c4cd5 nfs_mknod +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xee01109e nfs_fs_mount_common +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf5a4532e nfs_init_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf6ca0719 nfs_pageio_init_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf74076dc nfs_file_set_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfb7ee006 nfs_alloc_fattr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfbf29ef1 nfs_create_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfc619abd _nfs_display_fhandle +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfde36f31 nfs_inode_attach_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfsv3 0x2a23be95 nfs3_set_ds_client +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x0110f32f _pnfs_return_layout +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x06c36816 __tracepoint_nfs4_pnfs_write +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x07429927 nfs4_schedule_stateid_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x08ad6e1a nfs4_pnfs_ds_put +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x08cb11a4 pnfs_error_mark_layout_for_return +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x0aed450f pnfs_generic_prepare_to_resend_writes +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x170f3ed6 nfs41_maxgetdevinfo_overhead +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x174895b9 nfs4_pnfs_ds_connect +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x17c5a45b pnfs_nfs_generic_sync +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x183067e8 pnfs_read_resend_pnfs +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x1e88aec7 pnfs_register_layoutdriver +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x283b1074 pnfs_generic_pg_test +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x2c82f102 pnfs_write_done_resend_to_mds +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x2e9e7480 pnfs_unregister_layoutdriver +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x2eb1b9da pnfs_set_layoutcommit +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x3305abea nfs4_set_ds_client +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x3c72dbbe nfs4_set_rw_stateid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x3d092b30 nfs4_find_or_create_ds_client +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x3dfe6fe3 __tracepoint_nfs4_pnfs_read +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x3faff7b6 nfs4_schedule_session_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x425102f5 pnfs_generic_pg_init_write +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x471de0a9 __tracepoint_nfs4_pnfs_commit_ds +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x498859be pnfs_generic_scan_commit_lists +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x4f6b4c6b pnfs_set_lo_fail +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x530871b8 nfs4_proc_getdeviceinfo +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x5604f8f6 pnfs_put_lseg +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x5662698d nfs4_find_get_deviceid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x591b0206 nfs_remove_bad_delegation +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x5c510d3a nfs4_schedule_lease_moved_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x5ca6b71b nfs4_schedule_lease_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x6085edbd nfs_map_string_to_numeric +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x62529c3f pnfs_generic_write_commit_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x67960be7 pnfs_read_done_resend_to_mds +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x692d4cc8 pnfs_generic_pg_init_read +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x69d3558d pnfs_generic_rw_release +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x7ff56680 pnfs_generic_clear_request_commit +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x83ae6aaa nfs4_pnfs_v3_ds_connect_unload +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x8651d4b6 nfs4_test_deviceid_unavailable +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x8838d27e nfs41_sequence_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x8f7a2708 nfs41_setup_sequence +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x918756b5 nfs4_init_deviceid_node +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x93e2d471 nfs4_sequence_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x961df3ca pnfs_generic_pg_cleanup +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x970b8763 pnfs_generic_pg_writepages +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x979ba59f nfs4_mark_deviceid_unavailable +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x99d96a53 pnfs_ld_read_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x9b9644a6 pnfs_generic_sync +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x9e09a8ee nfs40_setup_sequence +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xad5a13a4 nfs4_delete_deviceid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xb10c7263 nfs4_pnfs_ds_add +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xb8b9552c pnfs_put_lseg_locked +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xb8c0095d pnfs_generic_pg_readpages +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xc0cb7234 nfs4_put_deviceid_node +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xcaedd26c nfs4_decode_mp_ds_addr +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xd31727e7 pnfs_layout_mark_request_commit +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xd3bd22fb pnfs_layoutcommit_inode +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xd84da2f9 pnfs_generic_commit_pagelist +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xd86b0b23 pnfs_destroy_layout +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xdedc5f09 nfs4_schedule_migration_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xe62991de pnfs_generic_recover_commit_reqs +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xed15fb41 nfs4_print_deviceid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xed84bae2 nfs4_init_ds_session +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xef73cc8e pnfs_update_layout +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xf20babd3 pnfs_report_layoutstat +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xf7cced8e pnfs_ld_write_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xf999267e pnfs_generic_commit_release +EXPORT_SYMBOL_GPL fs/nfs_common/grace 0x17ce645d locks_end_grace +EXPORT_SYMBOL_GPL fs/nfs_common/grace 0xad110df5 locks_in_grace +EXPORT_SYMBOL_GPL fs/nfs_common/grace 0xbc088661 locks_start_grace +EXPORT_SYMBOL_GPL fs/nfs_common/nfs_acl 0xa0773692 nfsacl_encode +EXPORT_SYMBOL_GPL fs/nfs_common/nfs_acl 0xc15dd175 nfsacl_decode +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x11736b03 __mlog_printk +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x1b89c6ee o2hb_fill_node_map +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x1d747ce3 o2hb_check_node_heartbeating +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x310175a7 o2hb_unregister_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x36418553 o2net_send_message +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x36a28a9e 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 0x6a258991 o2hb_register_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x81a17396 mlog_and_bits +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xa1ae48e1 o2hb_check_node_heartbeating_no_sem +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xa82a8645 o2nm_this_node +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xa87bc9e7 o2nm_configured_node_map +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xae808bac o2net_register_handler +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xb0084595 o2nm_get_node_by_num +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xbaeb4700 o2hb_check_node_heartbeating_from_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xc3679d7b o2hb_get_all_regions +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xca55baed o2hb_setup_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xd60f2c6c o2hb_check_local_node_heartbeating +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xd859ac8c o2net_fill_node_map +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xe8f3a7d3 o2nm_node_get +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xf0cf28ff 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 0xf56c2017 mlog_not_bits +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xfe351500 o2nm_node_put +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x5f1a21a5 dlmunlock +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x6890b99a dlm_unregister_domain +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x7a1211f8 dlm_setup_eviction_cb +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xca930c9c dlm_register_eviction_cb +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xd4bb1e9c dlmlock +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 0xdb987968 dlm_register_domain +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xfb86b96f dlm_errname +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xfff302ac dlm_print_one_lock +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x0995c298 ocfs2_plock +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x140be100 ocfs2_stack_glue_unregister +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x269d63fd ocfs2_cluster_disconnect +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x316904e1 ocfs2_dlm_unlock +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x3bcef5f3 ocfs2_dlm_lock_status +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x40718c92 ocfs2_dlm_lock +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x4226705d ocfs2_dlm_dump_lksb +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x424241c9 ocfs2_dlm_lvb +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x4d3af7fa ocfs2_cluster_hangup +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x60f4bcef ocfs2_dlm_lvb_valid +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x93a566a7 ocfs2_stack_glue_register +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x9ccafa05 ocfs2_cluster_this_node +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xa06fbc10 ocfs2_cluster_connect_agnostic +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xbbc4ef97 ocfs2_stack_supports_plocks +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xbf9068ab ocfs2_cluster_connect +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xe40cffce ocfs2_stack_glue_set_max_proto_version +EXPORT_SYMBOL_GPL kernel/torture 0x012bf786 _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 0x367423c7 _torture_create_kthread +EXPORT_SYMBOL_GPL kernel/torture 0x3e9619f5 torture_onoff_stats +EXPORT_SYMBOL_GPL kernel/torture 0x4c7529bd torture_shutdown_absorb +EXPORT_SYMBOL_GPL kernel/torture 0x52665f8b torture_random +EXPORT_SYMBOL_GPL kernel/torture 0x5346b23b torture_shuffle_cleanup +EXPORT_SYMBOL_GPL kernel/torture 0x6364b2f0 stutter_wait +EXPORT_SYMBOL_GPL kernel/torture 0x679d9e50 torture_must_stop +EXPORT_SYMBOL_GPL kernel/torture 0x688e6a64 torture_cleanup_end +EXPORT_SYMBOL_GPL kernel/torture 0x6bdeda8f torture_onoff_init +EXPORT_SYMBOL_GPL kernel/torture 0x8b0e1d2f torture_shuffle_init +EXPORT_SYMBOL_GPL kernel/torture 0xc1361afc torture_onoff_cleanup +EXPORT_SYMBOL_GPL kernel/torture 0xc6527045 torture_init_begin +EXPORT_SYMBOL_GPL kernel/torture 0xc67a49d4 torture_cleanup_begin +EXPORT_SYMBOL_GPL kernel/torture 0xdbc5277a torture_shutdown_init +EXPORT_SYMBOL_GPL kernel/torture 0xe6989fd3 torture_init_end +EXPORT_SYMBOL_GPL kernel/torture 0xe9ff1468 torture_stutter_init +EXPORT_SYMBOL_GPL kernel/torture 0xf6d34fb5 torture_kthread_stopping +EXPORT_SYMBOL_GPL kernel/torture 0xf70944ce torture_shuffle_task_register +EXPORT_SYMBOL_GPL lib/842/842_compress 0x1ce013cf sw842_compress +EXPORT_SYMBOL_GPL lib/842/842_decompress 0x0d22f116 sw842_decompress +EXPORT_SYMBOL_GPL lib/bch 0x231d70fc encode_bch +EXPORT_SYMBOL_GPL lib/bch 0x6b770f49 decode_bch +EXPORT_SYMBOL_GPL lib/bch 0x9463ff71 init_bch +EXPORT_SYMBOL_GPL lib/bch 0xbdf512de free_bch +EXPORT_SYMBOL_GPL lib/notifier-error-inject 0xf101844e notifier_err_inject_dir +EXPORT_SYMBOL_GPL lib/notifier-error-inject 0xf968ca77 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 0x201d8ea3 encode_rs8 +EXPORT_SYMBOL_GPL lib/reed_solomon/reed_solomon 0x29fa419f decode_rs8 +EXPORT_SYMBOL_GPL lib/reed_solomon/reed_solomon 0x300d7e57 free_rs +EXPORT_SYMBOL_GPL lib/reed_solomon/reed_solomon 0x6fbb3bd9 init_rs_non_canonical +EXPORT_SYMBOL_GPL lib/reed_solomon/reed_solomon 0xabda1e2e decode_rs16 +EXPORT_SYMBOL_GPL lib/reed_solomon/reed_solomon 0xb050f329 init_rs +EXPORT_SYMBOL_GPL net/6lowpan/6lowpan 0x0ad4b736 lowpan_header_compress +EXPORT_SYMBOL_GPL net/6lowpan/6lowpan 0x651e36b0 lowpan_header_decompress +EXPORT_SYMBOL_GPL net/802/garp 0x00e12bbb garp_request_leave +EXPORT_SYMBOL_GPL net/802/garp 0x6840a743 garp_request_join +EXPORT_SYMBOL_GPL net/802/garp 0x689414aa garp_unregister_application +EXPORT_SYMBOL_GPL net/802/garp 0x897a5dcc garp_init_applicant +EXPORT_SYMBOL_GPL net/802/garp 0xc7edc708 garp_register_application +EXPORT_SYMBOL_GPL net/802/garp 0xe4266704 garp_uninit_applicant +EXPORT_SYMBOL_GPL net/802/mrp 0x5729cd1e mrp_request_join +EXPORT_SYMBOL_GPL net/802/mrp 0x6143e4a7 mrp_request_leave +EXPORT_SYMBOL_GPL net/802/mrp 0x662922da mrp_uninit_applicant +EXPORT_SYMBOL_GPL net/802/mrp 0x70e1af7d mrp_unregister_application +EXPORT_SYMBOL_GPL net/802/mrp 0x9c0fde7c mrp_init_applicant +EXPORT_SYMBOL_GPL net/802/mrp 0xa29b5ac4 mrp_register_application +EXPORT_SYMBOL_GPL net/802/stp 0xe037465c stp_proto_unregister +EXPORT_SYMBOL_GPL net/802/stp 0xfce4324d stp_proto_register +EXPORT_SYMBOL_GPL net/9p/9pnet 0x16a631f6 p9_client_xattrwalk +EXPORT_SYMBOL_GPL net/9p/9pnet 0x6edbd198 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 0x1945e9d0 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 0x00ca9f58 l2cap_chan_put +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x0d3f14bc l2cap_chan_create +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x33851796 l2cap_chan_send +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x33aa802b l2cap_chan_connect +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x5cc509aa bt_debugfs +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0xa6d12357 l2cap_chan_del +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0xd34f63af l2cap_add_psm +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0xf28995ed l2cap_chan_set_defaults +EXPORT_SYMBOL_GPL net/bridge/br_netfilter 0x0cb0f8b7 br_netfilter_enable +EXPORT_SYMBOL_GPL net/bridge/bridge 0x2b093589 br_handle_frame_finish +EXPORT_SYMBOL_GPL net/bridge/bridge 0x5cbf844e br_deliver +EXPORT_SYMBOL_GPL net/bridge/bridge 0x5fd4080f br_dev_queue_push_xmit +EXPORT_SYMBOL_GPL net/bridge/bridge 0x8512f11f br_multicast_has_querier_adjacent +EXPORT_SYMBOL_GPL net/bridge/bridge 0xa8a626cc br_forward_finish +EXPORT_SYMBOL_GPL net/bridge/bridge 0xc858dfa5 nf_br_ops +EXPORT_SYMBOL_GPL net/bridge/bridge 0xcc664ae6 br_multicast_has_querier_anywhere +EXPORT_SYMBOL_GPL net/bridge/bridge 0xf0b74a54 br_multicast_list_adjacent +EXPORT_SYMBOL_GPL net/bridge/netfilter/nf_tables_bridge 0x17a7a4e6 nft_bridge_ip6hdr_validate +EXPORT_SYMBOL_GPL net/bridge/netfilter/nf_tables_bridge 0xf8094388 nft_bridge_iphdr_validate +EXPORT_SYMBOL_GPL net/dccp/dccp 0x02cc76a3 dccp_destroy_sock +EXPORT_SYMBOL_GPL net/dccp/dccp 0x16bec6ff dccp_setsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0x189c2249 dccp_child_process +EXPORT_SYMBOL_GPL net/dccp/dccp 0x19512011 dccp_ctl_make_reset +EXPORT_SYMBOL_GPL net/dccp/dccp 0x1977a7da dccp_rcv_state_process +EXPORT_SYMBOL_GPL net/dccp/dccp 0x1d8a7914 dccp_feat_nn_get +EXPORT_SYMBOL_GPL net/dccp/dccp 0x1d99d49a dccp_timestamp +EXPORT_SYMBOL_GPL net/dccp/dccp 0x21321fea dccp_death_row +EXPORT_SYMBOL_GPL net/dccp/dccp 0x28e314a7 dccp_sync_mss +EXPORT_SYMBOL_GPL net/dccp/dccp 0x327cf1c2 dccp_send_sync +EXPORT_SYMBOL_GPL net/dccp/dccp 0x3b010999 dccp_connect +EXPORT_SYMBOL_GPL net/dccp/dccp 0x3b923974 dccp_done +EXPORT_SYMBOL_GPL net/dccp/dccp 0x44bc955a dccp_create_openreq_child +EXPORT_SYMBOL_GPL net/dccp/dccp 0x492255da dccp_feat_signal_nn_change +EXPORT_SYMBOL_GPL net/dccp/dccp 0x4cdd391d dccp_feat_list_purge +EXPORT_SYMBOL_GPL net/dccp/dccp 0x4ec35231 dccp_ackvec_parsed_add +EXPORT_SYMBOL_GPL net/dccp/dccp 0x4fbb3605 dccp_insert_option +EXPORT_SYMBOL_GPL net/dccp/dccp 0x561f53b9 dccp_close +EXPORT_SYMBOL_GPL net/dccp/dccp 0x59814a84 dccp_statistics +EXPORT_SYMBOL_GPL net/dccp/dccp 0x5aa10b71 dccp_make_response +EXPORT_SYMBOL_GPL net/dccp/dccp 0x67fa1e0b dccp_send_ack +EXPORT_SYMBOL_GPL net/dccp/dccp 0x6c3188a7 dccp_sendmsg +EXPORT_SYMBOL_GPL net/dccp/dccp 0x701cadcb dccp_poll +EXPORT_SYMBOL_GPL net/dccp/dccp 0x7936a8da dccp_disconnect +EXPORT_SYMBOL_GPL net/dccp/dccp 0x7ffeebe5 dccp_recvmsg +EXPORT_SYMBOL_GPL net/dccp/dccp 0x86be7924 dccp_packet_name +EXPORT_SYMBOL_GPL net/dccp/dccp 0x8e981164 dccp_check_req +EXPORT_SYMBOL_GPL net/dccp/dccp 0x8eaed7d2 dccp_rcv_established +EXPORT_SYMBOL_GPL net/dccp/dccp 0x923364e6 dccp_set_state +EXPORT_SYMBOL_GPL net/dccp/dccp 0x9531bef4 dccp_init_sock +EXPORT_SYMBOL_GPL net/dccp/dccp 0x9598d24d dccp_ackvec_parsed_cleanup +EXPORT_SYMBOL_GPL net/dccp/dccp 0xa35f812b dccp_reqsk_init +EXPORT_SYMBOL_GPL net/dccp/dccp 0xa6896ead dccp_shutdown +EXPORT_SYMBOL_GPL net/dccp/dccp 0xb50363a5 dccp_ioctl +EXPORT_SYMBOL_GPL net/dccp/dccp 0xc40104ba dccp_orphan_count +EXPORT_SYMBOL_GPL net/dccp/dccp 0xc8193698 dccp_parse_options +EXPORT_SYMBOL_GPL net/dccp/dccp 0xce809387 dccp_getsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0xdadacf58 inet_dccp_listen +EXPORT_SYMBOL_GPL net/dccp/dccp 0xe48400cc compat_dccp_getsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0xe4909c48 dccp_hashinfo +EXPORT_SYMBOL_GPL net/dccp/dccp 0xf14f6a0b compat_dccp_setsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0xfdbd4312 dccp_reqsk_send_ack +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x350aa16e dccp_v4_request_recv_sock +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x7251723d dccp_v4_send_check +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x725573a8 dccp_invalid_packet +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0xe1a218fb dccp_v4_connect +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0xf6cbeafb dccp_v4_do_rcv +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0xf706e8d3 dccp_v4_conn_request +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0x204c4c6a ieee802154_hdr_pull +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0x3b99d7a4 ieee802154_hdr_peek_addrs +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0x4b957942 ieee802154_hdr_push +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0xd58dfa29 ieee802154_max_payload +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0xec0838ef ieee802154_hdr_peek +EXPORT_SYMBOL_GPL net/ipv4/geneve_core 0x1a3c3df6 geneve_xmit_skb +EXPORT_SYMBOL_GPL net/ipv4/geneve_core 0x1abe49ff geneve_sock_release +EXPORT_SYMBOL_GPL net/ipv4/geneve_core 0xea47a6a0 geneve_sock_add +EXPORT_SYMBOL_GPL net/ipv4/gre 0x2e724026 gre_del_protocol +EXPORT_SYMBOL_GPL net/ipv4/gre 0x335b72a0 gre_add_protocol +EXPORT_SYMBOL_GPL net/ipv4/gre 0xbb2e8149 gre_cisco_unregister +EXPORT_SYMBOL_GPL net/ipv4/gre 0xd736ab24 gre_cisco_register +EXPORT_SYMBOL_GPL net/ipv4/gre 0xe8728025 gre_build_header +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x3561ab89 inet_diag_register +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x4dea7590 inet_diag_dump_one_icsk +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x8e264ede inet_sk_diag_fill +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x9c5ca92b inet_diag_dump_icsk +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0xa11e5c91 inet_diag_bc_sk +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0xeb44be39 inet_diag_unregister +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x0e2512c9 ip_tunnel_setup +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x0f1cb21d ip_tunnel_newlink +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x2a1ff81b ip_tunnel_dellink +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x59c87f4b ip_tunnel_uninit +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x5a085659 ip_tunnel_change_mtu +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x732697c2 ip_tunnel_xmit +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x7948dc25 ip_tunnel_changelink +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x7995b089 ip_tunnel_lookup +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x81abbc23 ip_tunnel_encap_setup +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xa04ca96b ip_tunnel_init +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xbbb617f9 ip_tunnel_delete_net +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xf401a530 ip_tunnel_rcv +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xf4ecd546 ip_tunnel_init_net +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xfedea3e3 ip_tunnel_ioctl +EXPORT_SYMBOL_GPL net/ipv4/netfilter/arp_tables 0x81776f34 arpt_alloc_initial_table +EXPORT_SYMBOL_GPL net/ipv4/netfilter/ip_tables 0xd7f0e03f ipt_alloc_initial_table +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_defrag_ipv4 0x6b6c3d10 nf_defrag_ipv4_enable +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_ipv4 0x3d002c2a nf_nat_ipv4_fn +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_ipv4 0x43a02d0c nf_nat_ipv4_local_fn +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_ipv4 0x4c36f99d nf_nat_ipv4_in +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_ipv4 0xc3afd000 nf_nat_icmp_reply_translation +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_ipv4 0xf3024190 nf_nat_ipv4_out +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_masquerade_ipv4 0x3f5c468e nf_nat_masquerade_ipv4_unregister_notifier +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_masquerade_ipv4 0xd2f30efd nf_nat_masquerade_ipv4 +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_masquerade_ipv4 0xfedbf252 nf_nat_masquerade_ipv4_register_notifier +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_proto_gre 0x636b12c8 nf_nat_need_gre +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0x0031c246 nf_reject_ip_tcphdr_get +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0x607fdf27 nf_send_unreach +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0x94704191 nf_reject_ip_tcphdr_put +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0xd7e463a8 nf_send_reset +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0xe1c525e0 nf_reject_iphdr_put +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_tables_ipv4 0xe4573bf6 nft_af_ipv4 +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x5625d636 tcp_vegas_state +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x57330703 tcp_vegas_init +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x66252ff7 tcp_vegas_pkts_acked +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x79dface3 tcp_vegas_cwnd_event +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0xaaa0b96f tcp_vegas_get_info +EXPORT_SYMBOL_GPL net/ipv4/udp_tunnel 0x59a8df15 udp_tunnel_xmit_skb +EXPORT_SYMBOL_GPL net/ipv4/udp_tunnel 0x84dd7df4 udp_tunnel_sock_release +EXPORT_SYMBOL_GPL net/ipv4/udp_tunnel 0xb9cd4c64 setup_udp_tunnel_sock +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x2c8b9d36 ip6_tnl_dst_store +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x4b6e5176 ip6_tnl_rcv_ctl +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x89842b0e ip6_tnl_dst_check +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0xdfe1b1a3 ip6_tnl_dst_reset +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0xeb075596 ip6_tnl_xmit_ctl +EXPORT_SYMBOL_GPL net/ipv6/ip6_udp_tunnel 0xb875cc12 udp_sock_create6 +EXPORT_SYMBOL_GPL net/ipv6/ip6_udp_tunnel 0xf4c03cad udp_tunnel6_xmit_skb +EXPORT_SYMBOL_GPL net/ipv6/netfilter/ip6_tables 0xd08435a0 ip6t_alloc_initial_table +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_defrag_ipv6 0x6eb85693 nf_defrag_ipv6_enable +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_ipv6 0x4778d916 nf_nat_ipv6_fn +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_ipv6 0x62f89431 nf_nat_ipv6_in +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_ipv6 0xaeddda28 nf_nat_icmpv6_reply_translation +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_ipv6 0xd5ba6d05 nf_nat_ipv6_out +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_ipv6 0xe932fdfc nf_nat_ipv6_local_fn +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_masquerade_ipv6 0x105b02a4 nf_nat_masquerade_ipv6 +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_masquerade_ipv6 0x2293972c nf_nat_masquerade_ipv6_unregister_notifier +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_masquerade_ipv6 0x38d4401a nf_nat_masquerade_ipv6_register_notifier +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0x18b37702 nf_reject_ip6hdr_put +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0x54d77829 nf_reject_ip6_tcphdr_get +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0x60c8e578 nf_reject_ip6_tcphdr_put +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0x6f7cc426 nf_send_unreach6 +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0xec183bf1 nf_send_reset6 +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_tables_ipv6 0x21201c02 nft_af_ipv6 +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x18ca5e68 l2tp_tunnel_create +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x30acdc2c __l2tp_session_unhash +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x37ebd9c6 l2tp_session_free +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x3d90a1af l2tp_session_set_header_len +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x3db886ca l2tp_session_create +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x5b4182af l2tp_session_delete +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x5d8c340f l2tp_udp_encap_recv +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x5fc30d81 l2tp_session_queue_purge +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x63a15ac9 l2tp_tunnel_delete +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x6d6de517 l2tp_xmit_skb +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x790f626a l2tp_session_find +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xb554751e l2tp_session_find_nth +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xbba0a80c l2tp_session_find_by_ifname +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xd0d473b2 l2tp_tunnel_closeall +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xdc74f5e7 l2tp_tunnel_find_nth +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xeee33da6 l2tp_tunnel_find +EXPORT_SYMBOL_GPL net/l2tp/l2tp_netlink 0x077e9d14 l2tp_nl_register_ops +EXPORT_SYMBOL_GPL net/l2tp/l2tp_netlink 0x337f2432 l2tp_nl_unregister_ops +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x024d96ac ieee80211_ave_rssi +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x086a9f1c ieee80211_iterate_stations_atomic +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x08853219 ieee80211_iterate_active_interfaces_rtnl +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x11e1f72f ieee80211_set_key_rx_seq +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x1f216d2c ieee80211_set_key_tx_seq +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x295ec63c ieee80211_napi_add +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x2dce1e4e ieee80211_iterate_active_interfaces_atomic +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x58a151ae ieee80211_remove_key +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x58cba393 ieee80211_gtk_rekey_add +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x6a2f571a ieee80211_resume_disconnect +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x70bbfb86 ieee80211_gtk_rekey_notify +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x9b1a5739 ieee80211_vif_to_wdev +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x9e61b971 ieee80211_find_sta_by_ifaddr +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xa638c356 ieee80211_request_smps +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xd5aed07d ieee80211_remain_on_channel_expired +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xd78e31bc ieee80211_iterate_interfaces +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xe9d207ff ieee80211_ready_on_channel +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xead9f443 ieee80211_iter_chan_contexts_atomic +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xf2a96548 wdev_to_ieee80211_vif +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x09386fc3 ip_set_get_ip4_port +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x1c83103a ip_set_get_extensions +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x1dab94e4 ip_set_type_unregister +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x2cdc6165 ip_set_get_ip6_port +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x2e917b92 ip_set_put_extensions +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x397f6231 ip_set_free +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x46e19f94 ip_set_get_byname +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x4d6f98b8 ip_set_elem_len +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x6e3e4151 ip_set_get_ip_port +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x7724b593 ip_set_put_byindex +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 0x9b292302 ip_set_test +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x9cc126f8 ip_set_del +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 0xa2d623f3 ip_set_range_to_cidr +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xc1b8ab5a ip_set_name_byindex +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xc9b782d6 ip_set_type_register +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xcc001bd9 ip_set_extensions +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xdbb974cd ip_set_nfnl_get_byindex +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xeea94bbe ip_set_nfnl_put +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xf3b4d4ae ip_set_alloc +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xf56a45a5 ip_set_add +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0x3ccfb0c7 unregister_ip_vs_pe +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0x4896d21c register_ip_vs_pe +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0xe3c89300 ip_vs_conn_in_get_proto +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0xe732f040 ip_vs_conn_out_get_proto +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x00034a4a nf_ct_seq_offset +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x02d5fcb1 nf_ct_helper_expectfn_find_by_name +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x045072cd nf_ct_port_nla_policy +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x052ff327 nf_ct_tmpl_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x05636ce7 nf_conntrack_register_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x0566cd38 nf_conntrack_free +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x0641a994 nf_ct_expect_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x06a81e24 nf_ct_get_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x0b0ebe46 nf_ct_get_tuplepr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x0dca9a70 nf_conntrack_helper_try_module_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x0fa12a39 __nf_ct_kill_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x1b4d18df nf_conntrack_alter_reply +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x1bed2178 nf_conntrack_l4proto_tcp4 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x1dfa9460 nf_conntrack_in +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x1ffe8e08 nf_conntrack_l3proto_generic +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x266f6a64 nf_ct_helper_expectfn_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x289c3714 nf_ct_alloc_hashtable +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x29db43fa nf_conntrack_l4proto_tcp6 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x2facd6e2 nf_conntrack_helper_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x332b1c5b nf_ct_l4proto_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3545a9d5 nf_ct_l3proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x37386cac nf_conntrack_hash_rnd +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x39aa131b nf_ct_l4proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3ace182c nf_ct_timeout_put_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3f4c175c nf_ct_l3proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3f5b1415 nf_ct_port_nlattr_to_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x44199044 nf_ct_timeout_find_get_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x4717935c nf_ct_expect_related_report +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x471bee28 nf_ct_invert_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x48c0bcda __nf_ct_refresh_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x48c93ba3 nf_ct_expect_register_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x4b9978d8 __nf_ct_l4proto_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x4c2f8909 nf_ct_helper_log +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x570a48ff nf_ct_expect_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x577aed54 __nf_ct_try_assign_helper +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x592d5a96 nf_ct_helper_expectfn_find_by_symbol +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x5b3ba23f nf_ct_extend_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x5dd9f64f nf_conntrack_helper_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x5f9bed16 nf_ct_expect_unregister_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x62813e5c nf_ct_port_nlattr_tuple_size +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x63d52f59 nf_ct_iterate_cleanup +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x67a6de65 nf_connlabel_set +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x693c3961 nf_ct_helper_hash +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6be04ab4 nf_ct_delete +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6d174964 nf_ct_seq_adjust +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6d2a45f6 __nf_conntrack_helper_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6e224a7a need_conntrack +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6e839d51 nf_ct_l4proto_pernet_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6f3a5eef nf_ct_seqadj_set +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x70ac6f7d nf_ct_l4proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x71bbc513 nf_ct_helper_ext_add +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x78f9b710 nf_ct_l3proto_try_module_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x7f8036c0 nf_conntrack_hash_check_insert +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x810a793f nf_ct_tcp_seqadj_set +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x82485f50 nf_ct_l3protos +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8438fef7 nf_conntrack_l4proto_udp4 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x891f881e nf_ct_seqadj_init +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8a66c4fc nf_conntrack_expect_lock +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8c030a9b nf_connlabels_replace +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8d6fd8fc nf_ct_helper_expectfn_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8fceb70e nf_ct_deliver_cached_events +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8ffe7e89 nf_conntrack_htable_size +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x90ff6c9f nf_ct_invert_tuplepr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x935ff539 nf_ct_l4proto_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x9ea4f2ea nf_ct_l4proto_pernet_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa0a92507 nfnetlink_parse_nat_setup_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xab3d1f95 nf_ct_untracked_status_or +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xad1bb027 nf_ct_free_hashtable +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xad9a07f0 __nf_ct_expect_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb1abe1a4 nf_conntrack_unregister_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb2a62bd3 nf_ct_l3proto_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb3ff750b __nf_conntrack_confirm +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb42895b9 nf_conntrack_tuple_taken +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb602c57e nf_ct_l3proto_module_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb60e9c75 nf_conntrack_l4proto_udp6 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xbe64c97b nf_ct_port_tuple_to_nlattr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc18ac88d nf_ct_expect_hsize +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc36a6f8c nf_conntrack_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc3a96a9f nf_connlabel_match +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc40f284c nf_ct_helper_hsize +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc89126e3 nf_ct_l3proto_pernet_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd3706f00 nf_ct_expect_init +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd6184c08 nf_ct_l3proto_pernet_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd9d076f5 nf_ct_unexpect_related +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xdd8c63ee seq_print_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xe0297cb0 nf_ct_remove_expectations +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xe24f302b nf_ct_unlink_expect_report +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xe6a789bb nf_conntrack_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf38bcdf3 nf_conntrack_max +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf4e698a4 nf_ct_extend_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf972375e nf_ct_tmpl_free +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xfb12273c nf_conntrack_set_hashsize +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xff2ebeda nf_ct_expect_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xff40b965 nf_conntrack_locks +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_amanda 0xcb80603d nf_nat_amanda_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_broadcast 0x11b10901 nf_conntrack_broadcast_help +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_ftp 0x5621c290 nf_nat_ftp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x31ff7b29 nat_t120_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x59d32849 set_ras_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x6c4f751f set_h225_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x82aa3a71 nat_h245_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x8e70925d nat_q931_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xa0af4582 get_h225_addr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xa2c7b61d set_h245_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xa96cc527 set_sig_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xc216eeb2 nat_callforwarding_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xd20bd9e9 nat_rtp_rtcp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_irc 0x3dafa02e nf_nat_irc_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0x326d46e5 nf_nat_pptp_hook_inbound +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0xde4e9b3e nf_nat_pptp_hook_expectfn +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0xea26c618 nf_nat_pptp_hook_outbound +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0xf10a0c48 nf_nat_pptp_hook_exp_gre +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_proto_gre 0x8cd4026a nf_ct_gre_keymap_destroy +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_proto_gre 0x8d3aead9 nf_ct_gre_keymap_add +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x11c6a68e ct_sip_get_header +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x30ead1d3 ct_sip_parse_address_param +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x779c26c1 ct_sip_parse_numerical_param +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xbc6143cd nf_nat_sip_hooks +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xca0182cc ct_sip_get_sdp_header +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xe5def8c3 ct_sip_parse_request +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xfce2c4d3 ct_sip_parse_header_uri +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_snmp 0xaa24f083 nf_nat_snmp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_tftp 0xccb20a2a nf_nat_tftp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_log_common 0x28f915c4 nf_log_dump_sk_uid_gid +EXPORT_SYMBOL_GPL net/netfilter/nf_log_common 0x3a55cf72 nf_log_dump_tcp_header +EXPORT_SYMBOL_GPL net/netfilter/nf_log_common 0xe2608153 nf_log_dump_packet_common +EXPORT_SYMBOL_GPL net/netfilter/nf_log_common 0xffef063c nf_log_dump_udp_header +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x084c5cc1 nf_nat_l3proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x0d9bae4b nf_nat_l4proto_nlattr_to_range +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x131f636c nf_nat_l4proto_in_range +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x35193e62 __nf_nat_l4proto_find +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x7b97c1ba nf_nat_l4proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x93abf536 nf_nat_l4proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xa4315d2f nf_ct_nat_ext_add +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xa7a44345 nf_nat_l3proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xa92a46ba nf_nat_alloc_null_binding +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xda2c09da nf_nat_packet +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xf8630451 nf_nat_l4proto_unique_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_nat_redirect 0x41201938 nf_nat_redirect_ipv6 +EXPORT_SYMBOL_GPL net/netfilter/nf_nat_redirect 0x4f3d5a0c nf_nat_redirect_ipv4 +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x11a006b5 synproxy_check_timestamp_cookie +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x4ba55fcc synproxy_tstamp_adjust +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x55d2225e synproxy_parse_options +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x5f339439 synproxy_build_options +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x90298227 synproxy_init_timestamp_cookie +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0xb42e336a synproxy_options_size +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0xef7db50c synproxy_net_id +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x04a9d17a nft_unregister_basechain +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x0701628c nft_validate_register_store +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x0bef696a nft_set_gc_batch_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x15d2d89e nft_data_init +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x1e6b75a3 nft_parse_register +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x2140020f nft_register_basechain +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x46c7c329 nft_set_elem_destroy +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x4f1d4b0b nft_unregister_chain_type +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x5778f241 nft_chain_validate_hooks +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x5de82e32 nft_register_afinfo +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x68088bee nft_data_uninit +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x6b27c2e9 nft_register_chain_type +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x849301f3 nft_register_set +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xa69d526d nft_register_expr +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xa7e658bc nft_unregister_set +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xaf2832cb nft_unregister_expr +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xbf63bb61 nft_set_gc_batch_release +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xc39a768c nft_data_dump +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xcf03e214 nft_chain_validate_dependency +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xd28f9363 nft_unregister_afinfo +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xd3d5ff9c nft_do_chain +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xe09dada2 nft_set_ext_types +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xe1178c47 nft_dump_register +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xed33c632 nft_validate_register_load +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x1a56a8d9 nfnetlink_subsys_register +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x39c8c330 nfnetlink_send +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x406bf27f nfnetlink_has_listeners +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x5ce3b588 nfnl_lock +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x62fbee5e nfnetlink_subsys_unregister +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x70fb0363 nfnetlink_unicast +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x881ff0a1 nfnetlink_alloc_skb +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xdb065657 nfnl_unlock +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xe6a84794 nfnetlink_set_err +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0x0e0ad2bb nfnl_acct_overquota +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0x21f6bba6 nfnl_acct_find_get +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0x4fa43ad8 nfnl_acct_update +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0xbecf5d14 nfnl_acct_put +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_log 0x53edfcc0 nfulnl_log_packet +EXPORT_SYMBOL_GPL net/netfilter/nft_masq 0x1a810092 nft_masq_validate +EXPORT_SYMBOL_GPL net/netfilter/nft_masq 0x205a3c78 nft_masq_dump +EXPORT_SYMBOL_GPL net/netfilter/nft_masq 0x659b44b2 nft_masq_init +EXPORT_SYMBOL_GPL net/netfilter/nft_masq 0xe3b8ea21 nft_masq_policy +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0x09da768e nft_meta_set_eval +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0x9d06957d nft_meta_get_dump +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0x9d74a7b6 nft_meta_set_init +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0xb80e8358 nft_meta_policy +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0xb988fc3c nft_meta_get_eval +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0xd37acd78 nft_meta_get_init +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0xddbbabf3 nft_meta_set_dump +EXPORT_SYMBOL_GPL net/netfilter/nft_redir 0x095ef0be nft_redir_dump +EXPORT_SYMBOL_GPL net/netfilter/nft_redir 0x2c6e63bb nft_redir_init +EXPORT_SYMBOL_GPL net/netfilter/nft_redir 0x73c34f56 nft_redir_validate +EXPORT_SYMBOL_GPL net/netfilter/nft_redir 0xa5be1e1e nft_redir_policy +EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0x5192a3db nft_reject_dump +EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0xa2db3c7f nft_reject_policy +EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0xb2d71edf nft_reject_init +EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0xddf15889 nft_reject_icmp_code +EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0xe8cdab4e nft_reject_icmpv6_code +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x1525c23d xt_proto_init +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x161d1417 xt_compat_unlock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x1812ee20 xt_compat_match_offset +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x2850f8a6 xt_request_find_target +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x2dfb09cf xt_compat_match_from_user +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x2fecd0f2 xt_compat_target_offset +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x3d3885cc xt_register_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x40728a63 xt_find_revision +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x4d60d670 xt_table_unlock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x50a77a69 xt_compat_target_from_user +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x5df32cf5 xt_compat_target_to_user +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x5f82f1f7 xt_compat_flush_offsets +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x691a6d69 xt_compat_calc_jump +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x6c1b7f20 xt_compat_match_to_user +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x6fcf5347 xt_check_target +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x70088e42 xt_find_table_lock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x807d2b2c xt_recseq +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xb4f0043a xt_hook_unlink +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xd4217977 xt_check_match +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xdcc24551 xt_unregister_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xe0b4971b xt_compat_lock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xe9586b42 xt_replace_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xec24fd82 xt_compat_add_offset +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xeebe60d4 xt_proto_fini +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xf11ea402 xt_hook_link +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xf8bcae5b xt_request_find_match +EXPORT_SYMBOL_GPL net/netfilter/xt_RATEEST 0x00204983 xt_rateest_put +EXPORT_SYMBOL_GPL net/netfilter/xt_RATEEST 0x482b6a12 xt_rateest_lookup +EXPORT_SYMBOL_GPL net/nfc/nci/nci 0x5ee24c49 nci_spi_allocate_spi +EXPORT_SYMBOL_GPL net/nfc/nci/nci 0xb339fc27 nci_spi_read +EXPORT_SYMBOL_GPL net/nfc/nci/nci 0xe3e0cf26 nci_spi_send +EXPORT_SYMBOL_GPL net/nfc/nci/nci_uart 0x3453b003 nci_uart_unregister +EXPORT_SYMBOL_GPL net/nfc/nci/nci_uart 0xa95b92db nci_uart_register +EXPORT_SYMBOL_GPL net/nfc/nci/nci_uart 0xe1a35c80 nci_uart_set_config +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x307073e5 ovs_tunnel_get_egress_info +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x5bd87f06 ovs_vport_free +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x7b8ff059 ovs_vport_ops_register +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x8c113133 ovs_vport_deferred_free +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0xc850c52d ovs_vport_alloc +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0xda83411d ovs_net_id +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0xdb85d509 ovs_vport_ops_unregister +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0xf6f35635 ovs_vport_receive +EXPORT_SYMBOL_GPL net/rds/rds 0x00a467af rds_wq +EXPORT_SYMBOL_GPL net/rds/rds 0x06aa237a rds_trans_register +EXPORT_SYMBOL_GPL net/rds/rds 0x0aee8195 rds_trans_unregister +EXPORT_SYMBOL_GPL net/rds/rds 0x1148d10b rds_connect_complete +EXPORT_SYMBOL_GPL net/rds/rds 0x22768fb7 rds_message_put +EXPORT_SYMBOL_GPL net/rds/rds 0x2c5c5514 rds_message_add_rdma_dest_extension +EXPORT_SYMBOL_GPL net/rds/rds 0x3101936e rds_message_add_extension +EXPORT_SYMBOL_GPL net/rds/rds 0x3a06f2d0 rds_info_deregister_func +EXPORT_SYMBOL_GPL net/rds/rds 0x3b4fc0fc rds_page_remainder_alloc +EXPORT_SYMBOL_GPL net/rds/rds 0x50cbe7b3 rds_stats +EXPORT_SYMBOL_GPL net/rds/rds 0x5d343044 rds_atomic_send_complete +EXPORT_SYMBOL_GPL net/rds/rds 0x5d42cdc5 rds_page_copy_user +EXPORT_SYMBOL_GPL net/rds/rds 0x6944f813 rds_inc_init +EXPORT_SYMBOL_GPL net/rds/rds 0x6ac3863a rds_cong_map_updated +EXPORT_SYMBOL_GPL net/rds/rds 0x6e6a1e44 rds_message_addref +EXPORT_SYMBOL_GPL net/rds/rds 0x73aac73d rds_message_populate_header +EXPORT_SYMBOL_GPL net/rds/rds 0x76a5a20c rds_conn_create +EXPORT_SYMBOL_GPL net/rds/rds 0x7bc62829 rds_stats_info_copy +EXPORT_SYMBOL_GPL net/rds/rds 0x811a3f53 rds_message_unmapped +EXPORT_SYMBOL_GPL net/rds/rds 0x887f26ee rds_send_get_message +EXPORT_SYMBOL_GPL net/rds/rds 0x93c1a195 rds_conn_drop +EXPORT_SYMBOL_GPL net/rds/rds 0xa128c86c rds_conn_connect_if_down +EXPORT_SYMBOL_GPL net/rds/rds 0xb259b62f rds_conn_destroy +EXPORT_SYMBOL_GPL net/rds/rds 0xb2fec9f4 rds_info_register_func +EXPORT_SYMBOL_GPL net/rds/rds 0xbf1ecefe rds_for_each_conn_info +EXPORT_SYMBOL_GPL net/rds/rds 0xc2dab779 rds_info_copy +EXPORT_SYMBOL_GPL net/rds/rds 0xcb3a3c35 rds_recv_incoming +EXPORT_SYMBOL_GPL net/rds/rds 0xe22b1819 rds_rdma_send_complete +EXPORT_SYMBOL_GPL net/rds/rds 0xe58e5a61 rds_send_drop_acked +EXPORT_SYMBOL_GPL net/rds/rds 0xec822909 rds_inc_put +EXPORT_SYMBOL_GPL net/rds/rds 0xee15808d rds_conn_create_outgoing +EXPORT_SYMBOL_GPL net/rxrpc/af-rxrpc 0x79ce3f39 rxrpc_unregister_security +EXPORT_SYMBOL_GPL net/rxrpc/af-rxrpc 0xa096910b rxrpc_register_security +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x00c52ef5 g_make_token_header +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x37dfd255 gss_mech_register +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x7c44161a svcauth_gss_flavor +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x8d1a827e svcauth_gss_register_pseudoflavor +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xb5dea7ef g_token_size +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xdfb4322c gss_mech_unregister +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xf8b2ff6e g_verify_token_header +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x01a425d9 svc_alien_sock +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x01fb1595 rpc_call_sync +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x027aef8e xdr_init_decode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x02ce3d56 svc_reg_xprt_class +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x03f15141 rpc_add_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x03fa65ff rpc_rmdir +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0452acb6 xdr_enter_page +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x045834e9 rpcauth_get_pseudoflavor +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 0x074094ed xprt_free +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x075a2ad3 rpc_max_payload +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x08109dc4 xdr_stream_pos +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x09440ee9 rpc_count_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x098ddadb xdr_read_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0aaa6159 rpc_restart_call_prepare +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0c712dc9 rpc_sleep_on +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0da06165 rpc_wake_up +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0f668ba9 svc_auth_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0fefc228 svc_exit_thread +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x127aad4e rpc_peeraddr2str +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x12b86690 svc_create_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x13288f06 rpc_queue_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x133fd735 svc_reserve +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x14497f24 rpc_clone_client_set_auth +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x146e8294 xprt_release_xprt_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x177c01ec rpc_wake_up_status +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x187bb3d1 xprt_unregister_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x190400b0 _copy_from_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1ba43ecc rpcauth_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1ba61cb4 xdr_process_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1be12c07 rpc_proc_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1befe590 rpc_clnt_swap_activate +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1f2a9970 rpc_ntop +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x207601ba svc_xprt_put +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x20cea5be svc_find_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2166871a sunrpc_init_cache_detail +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x28d03341 rpc_delay +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2919b156 xdr_decode_string_inplace +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x29fbbbea rpc_get_timeout +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2c42acd8 svc_max_payload +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2de6081e rpc_clone_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2e96036b rpc_net_ns +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2eec63c9 xdr_encode_netobj +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2f3300d5 rpc_release_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2f596ffb svc_close_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x31a89d59 rpc_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x32c97080 xprt_write_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x348a24ad xdr_shift_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x35e0c4bb xprt_setup_backchannel +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x387e1639 rpc_pipefs_notifier_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x39496aa4 xdr_reserve_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3d2be460 svc_xprt_names +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3dfd073a rpcb_getport_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3e5b1de6 rpc_wake_up_first +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3ffbb9bd xprt_disconnect_done +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4041ed03 svc_rpcb_cleanup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x40555bb4 xprt_reserve_xprt_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x42672689 rpc_exit +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x42aacc5a xdr_encode_array2 +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x44395397 rpc_pipe_generic_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x469ad4c4 svc_seq_show +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x488528b4 rpc_killall_tasks +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4b5e73c2 rpc_get_sb_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4c2a4519 __rpc_wait_for_completion_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4edfbca5 xprt_wait_for_buffer_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4efd388d rpcauth_lookupcred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x50364476 svc_set_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x509d8791 rpc_peeraddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x51287a3e xprt_release_rqst_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5138a2d5 sunrpc_destroy_cache_detail +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x516eb625 xdr_init_decode_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x53445f68 nlm_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x53476d94 svc_addsock +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5570de81 sunrpc_cache_update +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x56059e0e bc_svc_process +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x57bbc302 rpc_malloc +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x58fb7239 rpc_run_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5c695e49 svc_drop +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5db4a4ce auth_domain_lookup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5df83043 xprt_release_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x60302423 rpc_shutdown_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x61ce2c7d sunrpc_cache_pipe_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x62bdd536 xdr_partial_copy_from_skb +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6558f38e rpcauth_init_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x658cc180 rpc_unlink +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x66b51937 cache_create_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6ac4ba6d xdr_write_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6d81236d rpcauth_stringify_acceptor +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6f5f5a9c xdr_decode_word +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x70034ca5 xdr_decode_array2 +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x71a1fd5f rpc_wake_up_queued_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x71fa908a cache_flush +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x75e64ca8 rpc_lookup_cred_nonblock +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x79515f2c rpcauth_generic_bind_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7a4a27c8 xdr_inline_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7b976290 svc_rpcb_setup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7d7cded7 rpc_init_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7de53067 rpc_init_rtt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7f374557 svcauth_unix_set_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x80951b28 rpcauth_get_gssinfo +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x822f4028 rpc_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x825f27ab rpc_lookup_machine_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x838d556e xdr_init_encode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x87fa8d7a cache_destroy_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8baa2745 svc_shutdown_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8fdee7e9 svc_proc_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x909d7932 svc_process +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x90b19bb1 rpc_task_reset_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x90da212c svc_xprt_copy_addrs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x911c92d1 rpc_pton +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9131800c auth_domain_put +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x920fe61c rpc_proc_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x95b4a2cd rpcauth_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x95edb766 rpc_put_task_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x95f4233b rpc_restart_call +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x97664452 xdr_buf_read_netobj +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x97944e4a xdr_skb_read_bits +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x985c1c39 rpc_wake_up_next +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x98b75d64 rpcauth_list_flavors +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9a373ac7 xprt_wake_pending_tasks +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9a689e9e auth_domain_find +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9ab8f0a2 rpc_uaddr2sockaddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9cfb5641 xdr_inline_decode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9d113bb8 rpc_create_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9d95b135 xdr_buf_from_iov +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9ef449af rpc_init_priority_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9f6547ac xprt_alloc +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa13c832c svc_authenticate +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa266ffe2 svc_unreg_xprt_class +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa29a4063 put_rpccred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa2beac30 xprt_lookup_rqst +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa2da8753 svc_prepare_thread +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa3c2f5fe rpcauth_cred_key_to_expire +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa3de90e6 xprt_register_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa4522728 rpc_call_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa7e6c16b gssd_running +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa81a7417 rpc_switch_client_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xac07625d svc_sock_update_bufs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xad2bdd34 read_bytes_from_xdr_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xad4396da rpc_call_null +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xaf5bf6ef nfs_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb04dc31c rpc_destroy_pipe_data +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb0955b1e xdr_terminate_string +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb39d1e16 rpc_force_rebind +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb3e467d6 rpcauth_key_timeout_notify +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb3f5fa57 svc_create_pooled +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb51a3724 rpc_pipefs_notifier_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb68646c4 xdr_commit_encode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb68a63cd rpc_put_sb_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb75910c8 rpc_sleep_on_priority +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb8750c00 rpc_remove_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xba4319cf svc_recv +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbaa0d52a rpc_count_iostats_metrics +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbc078061 xdr_buf_subsegment +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbf9d1b96 nfsd_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbfa38b85 svcauth_unix_purge +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc12435e3 rpc_calc_rto +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc20e1efc rpc_alloc_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc3880471 xdr_decode_netobj +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc473bbd3 svc_destroy +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc5871382 cache_check +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc5e4c4cc sunrpc_cache_unregister_pipefs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc79ba45b rpc_bind_new_program +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc86fbf2a svc_bind +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc8ac15dc rpcauth_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc8e96dea qword_addhex +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xca18317e rpc_lookup_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcb6ede0f xprt_alloc_slot +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcc9bbbe3 svc_xprt_init +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcd4204b0 rpc_mkpipe_data +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcdf8ae7e xprt_complete_rqst +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xce57611c xprt_set_retrans_timeout_def +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcee467f3 xprt_load_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd055a90b rpc_setbufsize +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd31aeb6e xdr_buf_trim +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd42afc87 csum_partial_copy_to_xdr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd538cfbc rpc_protocol +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd5d98d10 svc_print_addr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd62d3d2a cache_register_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd6908123 xdr_encode_word +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd6a3f255 rpcauth_init_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd6d1e1bc rpc_init_pipe_dir_head +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd7f3c3a8 rpc_free_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd90e7d19 xprt_destroy_backchannel +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd94d7bf4 svc_auth_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdc59c742 rpc_clnt_swap_deactivate +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdcb5689f sunrpc_cache_register_pipefs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdd1718be rpc_put_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdd2dad2c xprt_set_retrans_timeout_rtt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdd6b720e rpc_init_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdea26f0f xdr_set_scratch_buffer +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdf65beb0 cache_unregister_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdfc1c6a4 xprt_adjust_cwnd +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe1ac2bb8 sunrpc_net_id +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe3af509c rpc_d_lookup_sb +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe5919cb1 xdr_encode_opaque +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe76aef91 sunrpc_cache_lookup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe97f4ce5 qword_get +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xea33eb5c svc_proc_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xeb0e5204 rpcauth_lookup_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xeb1c1175 svc_xprt_enqueue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xeb2547e4 cache_purge +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xeb710b1d svc_wake_up +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xec839aa2 write_bytes_to_xdr_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xedcf6be4 qword_add +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xee0364fe xprt_lock_and_alloc_slot +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xeeacab69 rpc_update_rtt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xef0c21e4 rpc_destroy_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf000c93c rpc_call_start +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf22fda97 svc_set_num_threads +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf5735317 rpc_print_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf61e84bb svc_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf65e6317 rpcauth_destroy_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf66b8580 rpc_find_or_alloc_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf71fbc14 unix_domain_find +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf802ca1e rpc_localaddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf9158b8c rpc_mkpipe_dentry +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf9d1164c rpc_free +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfc2a93b1 xprt_reserve_xprt +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x0281014e vsock_find_connected_socket +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x0c79d5ef vm_sockets_get_local_cid +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x15c0c57c vsock_addr_init +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x2663cb64 vsock_addr_equals_addr +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x2e42a1c4 __vsock_create +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x33b55800 __vsock_core_init +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x4f443462 vsock_enqueue_accept +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x59d943c8 vsock_addr_cast +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x64fdd741 vsock_stream_has_data +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x739b4014 vsock_for_each_connected_socket +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x751ff010 vsock_addr_unbind +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x7f730c80 vsock_core_exit +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x970b77bc vsock_pending_work +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xa051d33e vsock_add_pending +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xa3e9de9b vsock_stream_has_space +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xa5610b1e vsock_remove_pending +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 0xddfe339a vsock_insert_connected +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xe1c67e79 vsock_remove_connected +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xe5c848e7 vsock_remove_bound +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xf8b07ff6 vsock_find_bound_socket +EXPORT_SYMBOL_GPL net/wimax/wimax 0x01173abe wimax_report_rfkill_hw +EXPORT_SYMBOL_GPL net/wimax/wimax 0x0370b3fa wimax_msg_alloc +EXPORT_SYMBOL_GPL net/wimax/wimax 0x1152038c wimax_msg_send +EXPORT_SYMBOL_GPL net/wimax/wimax 0x18ae251f wimax_msg_data +EXPORT_SYMBOL_GPL net/wimax/wimax 0x21968e9f wimax_msg_len +EXPORT_SYMBOL_GPL net/wimax/wimax 0x4e1eb4f3 wimax_state_change +EXPORT_SYMBOL_GPL net/wimax/wimax 0x6cf9fab2 wimax_state_get +EXPORT_SYMBOL_GPL net/wimax/wimax 0x9537db20 wimax_dev_init +EXPORT_SYMBOL_GPL net/wimax/wimax 0x9b16930b wimax_msg +EXPORT_SYMBOL_GPL net/wimax/wimax 0x9c55514a wimax_dev_rm +EXPORT_SYMBOL_GPL net/wimax/wimax 0xb2789564 wimax_msg_data_len +EXPORT_SYMBOL_GPL net/wimax/wimax 0xc7dff32c wimax_dev_add +EXPORT_SYMBOL_GPL net/wimax/wimax 0xf69d3163 wimax_report_rfkill_sw +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x1ea4d4ae cfg80211_wext_giwname +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x339ac0b2 cfg80211_wext_giwscan +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x359c7202 cfg80211_wext_siwrts +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x3ac006e1 cfg80211_shutdown_all_interfaces +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x3f0f650c cfg80211_wext_giwrts +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x677f905e cfg80211_vendor_cmd_reply +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x706c1893 cfg80211_wext_siwscan +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x76bb8232 cfg80211_wext_siwfrag +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x91093c22 cfg80211_wext_giwfrag +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xc2100c17 cfg80211_wext_siwmode +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xd722bae0 cfg80211_wext_giwrange +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xded1f800 cfg80211_wext_giwretry +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xe9d36c67 cfg80211_wext_giwmode +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 0x3bf471d7 xfrm_calg_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x47b34e60 xfrm_ealg_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x60b73277 xfrm_aead_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x7a8ca627 xfrm_count_pfkey_enc_supported +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x834ba96d xfrm_aalg_get_byid +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xa6e66685 xfrm_aalg_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xaa762fe2 xfrm_aalg_get_byidx +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xad1b60ed xfrm_calg_get_byid +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xdbfc35c8 xfrm_ealg_get_byidx +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xdfea3a6d xfrm_ealg_get_byid +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0x05a65ca4 ipcomp_destroy +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0x8241c652 ipcomp_output +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0x978da6df ipcomp_input +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0xde82f629 ipcomp_init_state +EXPORT_SYMBOL_GPL sound/core/seq/snd-seq-device 0xba95ea07 __snd_seq_driver_register +EXPORT_SYMBOL_GPL sound/core/seq/snd-seq-device 0xd74ce715 snd_seq_driver_unregister +EXPORT_SYMBOL_GPL sound/core/snd 0x22034886 snd_device_initialize +EXPORT_SYMBOL_GPL sound/core/snd 0x23618d7f snd_device_disconnect +EXPORT_SYMBOL_GPL sound/core/snd 0x2b4e3ce8 snd_ctl_get_preferred_subdevice +EXPORT_SYMBOL_GPL sound/core/snd 0x56a88723 snd_card_add_dev_attr +EXPORT_SYMBOL_GPL sound/core/snd 0xa5530f58 snd_ctl_activate_id +EXPORT_SYMBOL_GPL sound/core/snd 0xa85fa743 snd_ctl_sync_vmaster +EXPORT_SYMBOL_GPL sound/core/snd 0xaa0cc12b snd_ctl_add_vmaster_hook +EXPORT_SYMBOL_GPL sound/core/snd-compress 0x185769ad snd_compress_new +EXPORT_SYMBOL_GPL sound/core/snd-compress 0x21e28e2b snd_compress_register +EXPORT_SYMBOL_GPL sound/core/snd-compress 0xb27eb6eb snd_compress_deregister +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 0x1308409b snd_pcm_stream_unlock_irq +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x5d1cd00b snd_pcm_stream_lock_irq +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x616011ab snd_pcm_lib_default_mmap +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x82a0d24e snd_pcm_stream_unlock +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x87527bf1 snd_pcm_add_chmap_ctls +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0xa286a234 snd_pcm_format_name +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0xa7b789f7 snd_pcm_stream_lock +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0xab8bc1a2 snd_pcm_rate_mask_intersect +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0xb0457bd5 snd_pcm_stream_unlock_irqrestore +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0xe941a989 _snd_pcm_stream_lock_irqsave +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0xf4877fa7 snd_pcm_stop_xrun +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x0fb0fc34 snd_dmaengine_pcm_pointer +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x1fb456cc snd_dmaengine_pcm_trigger +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x22862806 snd_dmaengine_pcm_close +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x333344b9 snd_dmaengine_pcm_get_chan +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x39b155a2 snd_dmaengine_pcm_pointer_no_residue +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x671d006d snd_dmaengine_pcm_request_channel +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0xb01c7800 snd_dmaengine_pcm_set_config_from_dai_data +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0xddb30409 snd_dmaengine_pcm_close_release_chan +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0xe4999045 snd_hwparams_to_dma_slave_config +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0xee793fa3 snd_dmaengine_pcm_open_request_chan +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0xf0d25c21 snd_dmaengine_pcm_open +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x074635bf snd_hdac_link_power +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x08228048 snd_hdac_bus_send_cmd +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x0a4d9789 snd_hdac_device_register +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x16f8d9de snd_hdac_bus_handle_stream_irq +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x177e340b snd_hdac_get_connections +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x190dd32e snd_hdac_is_supported_format +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x1f7f9e46 snd_hdac_stream_setup +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x1f99a607 _snd_hdac_read_parm +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x22d4b560 snd_hdac_regmap_add_vendor_verb +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x25634e4d snd_hdac_device_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x27595e3f snd_hdac_stream_start +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x280df540 snd_hdac_bus_exec_verb +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x28a1cdd2 snd_hdac_regmap_exit +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x2a5d6318 snd_hdac_power_up +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x2f12bdb3 snd_hdac_dsp_prepare +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x37379194 snd_hda_bus_type +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x37387957 snd_hdac_bus_enter_link_reset +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x3803c7e3 snd_hdac_regmap_write_raw +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x39819438 snd_hdac_stream_reset +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x3a18480b snd_hdac_stream_sync +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x3af5b837 snd_hdac_bus_free_stream_pages +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x3deaa806 snd_hdac_power_up_pm +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x40977ce9 snd_hdac_power_down_pm +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x41ff5b6d snd_hdac_power_down +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x46b1ccb6 snd_hdac_bus_exit_link_reset +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x479da090 snd_hdac_regmap_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x587d25a6 snd_hdac_stream_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x5fc9c7fd snd_hdac_bus_stop_chip +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x70d3c10f snd_hdac_bus_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x82e88d43 snd_hdac_stream_set_params +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x83d6a2dd snd_hdac_device_unregister +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x85c49e38 snd_hdac_bus_init_cmd_io +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x873285ef snd_hdac_override_parm +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x87812935 snd_hdac_read +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x8993d2be snd_hdac_bus_alloc_stream_pages +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x8f523e27 snd_hdac_regmap_update_raw +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x94a2949f snd_hdac_bus_update_rirb +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x95fc15d9 snd_hdac_make_cmd +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x98efbbcb snd_hdac_bus_stop_cmd_io +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x9a8e1877 snd_array_free +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xa872ed7a snd_hdac_read_parm_uncached +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xb0943e55 snd_hdac_dsp_cleanup +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xb6c0bf80 snd_hdac_stream_clear +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xb7506707 snd_hdac_bus_exec_verb_unlocked +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xbe7dd7dc snd_array_new +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xbea898bd snd_hdac_device_exit +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xc259751b hdac_get_device_id +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xc53ff3a7 snd_hdac_stream_cleanup +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xc5750227 snd_hdac_bus_init_chip +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xcc483fdd snd_hdac_stream_assign +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xce9a4670 snd_hdac_bus_add_device +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xd6deb7a9 snd_hdac_stream_sync_trigger +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xd791bd0f snd_hdac_dsp_trigger +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xdc6f1fc4 snd_hdac_get_sub_nodes +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xdd9a804a snd_hdac_calc_stream_format +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xde0c756e snd_hdac_exec_verb +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xdfca7dd4 snd_hdac_refresh_widgets +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xe6f409f3 snd_hdac_stream_release +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xee6a5ce4 snd_hdac_bus_exit +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xefea27f7 snd_hdac_regmap_read_raw +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xf4eea722 snd_hdac_stream_stop +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xf57db213 snd_hdac_bus_get_response +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xf5c1439e snd_hdac_bus_remove_device +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xf6114f4b snd_hdac_stream_setup_periods +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xf64c0bf5 snd_hdac_stream_timecounter_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xfa414ac9 snd_hdac_query_supported_pcm +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xfae887f8 snd_hdac_bus_queue_event +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x95e12c38 snd_ak4113_reg_write +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0xa53e03bd snd_ak4113_check_rate_and_errors +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0xc3503f27 snd_ak4113_build +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0xe09ce750 snd_ak4113_external_rate +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0xe334942e snd_ak4113_create +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0xfdf5b172 snd_ak4113_reinit +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x00b21851 snd_hda_set_vmaster_tlv +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 0x0a9de4af snd_hda_mixer_bind_ctls_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0ab8bd38 snd_hda_mixer_amp_switch_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0ec2707a snd_hda_create_dig_out_ctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0ee1d04c snd_hda_multi_out_analog_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x110035b2 snd_hda_apply_verbs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x11ac5309 snd_hda_apply_fixup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1efbf19a snd_hda_set_power_save +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x206acdec __hda_codec_driver_register +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x20c89447 snd_hda_codec_pcm_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x21097955 snd_hda_pin_sense +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x21e25101 snd_hda_mixer_bind_tlv +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x247ea265 snd_hda_create_spdif_share_sw +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x268b63d4 snd_hda_override_conn_list +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x272149a7 snd_hda_bind_vol +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x289b117c snd_hda_codec_set_pin_target +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x29a9fa9a snd_hda_get_conn_index +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2d706a0a snd_hda_detach_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3343d169 azx_free_streams +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x34a1aa89 hda_get_autocfg_input_label +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x375cacd5 snd_hda_input_mux_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x38ce402b azx_interrupt +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x38d6eb7e snd_hda_codec_eapd_power_filter +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3a0a439f snd_hda_attach_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3aafd12a snd_hda_mixer_bind_switch_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3c8a9dc3 snd_hda_spdif_ctls_assign +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3f3ae54f snd_hda_pick_pin_fixup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x414e0303 snd_hda_get_bool_hint +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x49dbc0fa snd_hda_codec_load_dsp_trigger +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4ceff9c3 snd_hda_load_patch +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4e5de17f azx_codec_configure +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4f049ef3 snd_hda_mixer_amp_switch_get_beep +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4fe6ec3c snd_hda_codec_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x524e33bb snd_hda_codec_set_pincfg +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5593451e snd_hda_mixer_bind_ctls_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x566ff80f snd_hda_get_int_hint +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x57c1fb63 snd_hda_mixer_amp_volume_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x589da50d snd_hda_jack_set_dirty_all +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5b5213a3 _snd_hda_set_pin_ctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x63fa8cd5 snd_hda_codec_configure +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6868f9d3 snd_hda_multi_out_analog_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x69cb08f8 azx_get_pos_posbuf +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6cb0fd7e snd_hda_codec_write +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6db8478a snd_hda_jack_detect_enable +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6dd7f46f snd_hda_override_amp_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6f53ad03 snd_hda_pick_fixup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x70c32142 snd_hda_jack_add_kctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x76a0362d snd_hda_codec_pcm_new +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x79228d98 snd_hda_create_spdif_in_ctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x79aa9ca8 snd_hda_codec_load_dsp_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7c4e7f3e hda_codec_driver_unregister +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7dfe29b3 snd_hda_codec_get_pin_target +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7f6e5d13 snd_hda_add_verbs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7fb7c8cb snd_hda_spdif_out_of_nid +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x805205fa azx_get_position +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x80b1416a snd_hda_jack_set_gating_jack +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x839f7c98 snd_hda_find_mixer_ctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x852008f0 snd_hda_codec_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8581e8bd snd_hda_jack_report_sync +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8b7526bd azx_stop_all_streams +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8d611df9 snd_hda_get_connections +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x90e7cf74 azx_probe_codecs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x915933fc __snd_hda_codec_cleanup_stream +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x92da2492 snd_hda_enum_helper_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x939d8c44 snd_hda_multi_out_dig_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x939e290e is_jack_detectable +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x967b4de7 snd_hda_codec_amp_update +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x97759157 snd_hda_jack_tbl_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x98e25702 snd_hda_jack_detect_state +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x99f7a289 snd_hda_mixer_amp_volume_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9b804563 snd_hda_mixer_amp_switch_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9ba51cf4 snd_hda_mixer_bind_ctls_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9f86854b snd_hda_codec_get_pincfg +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9fb970de snd_hda_get_pin_label +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa0c80dde snd_hda_sync_vmaster_hook +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa2827d76 snd_hda_get_jack_location +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa3fa85d6 snd_hda_enable_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa5ae6797 snd_hda_get_hint +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa7bf3e5a azx_bus_init +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xab6b8dbb snd_hda_codec_new +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xab972971 snd_hda_mixer_bind_switch_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xaeabbd25 snd_hda_spdif_ctls_unassign +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xaf13a5ef snd_hda_mixer_amp_switch_put_beep +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb2acca10 query_amp_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb5fc1a5f snd_hda_multi_out_dig_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb9770442 snd_hda_jack_unsol_event +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb9d72a0d snd_hda_check_amp_list_power +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xbb2c10f8 azx_stop_chip +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xbc623cf5 snd_hda_jack_poll_all +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc09327b5 azx_init_streams +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc256b082 snd_hda_codec_set_power_to_all +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc3db9dc0 snd_hda_get_default_vref +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc48a7f81 __snd_hda_add_vmaster +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc48ee4d2 snd_hda_mixer_amp_switch_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc652fd69 snd_hda_get_jack_connectivity +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc6c6139c snd_hda_multi_out_dig_close +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc6f90338 snd_hda_mixer_amp_volume_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc8f98d2c snd_hda_codec_read +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xca0274c8 snd_hda_jack_detect_enable_callback +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xca1a4532 snd_hda_codec_amp_init_stereo +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xcb301b6e snd_hda_get_jack_type +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xcbda58e1 snd_hda_parse_pin_defcfg +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xcc60b18c snd_hda_check_amp_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd178b216 snd_hda_codec_setup_stream +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd26b3725 snd_hda_mixer_amp_tlv +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd2c8a2a0 snd_hda_input_mux_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd557f944 snd_hda_codec_amp_stereo +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd619f8b8 snd_hda_shutup_pins +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd7d82a7e snd_hda_bind_sw +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xdfccca01 snd_hda_unlock_devices +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe05ed59f snd_hda_multi_out_analog_open +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe076eb24 snd_hda_lock_devices +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe118de5d snd_pcm_2_1_chmaps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe2a75754 azx_get_pos_lpib +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe6141529 snd_hda_codec_load_dsp_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe8b321ef azx_init_chip +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe9990d3a snd_hda_apply_pincfgs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xea740484 snd_hda_sequence_write +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xec288fb0 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 0xedd63a20 snd_hda_add_new_ctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xee00880d snd_hda_codec_update_widgets +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xeed981a7 snd_hda_get_conn_list +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf002094c snd_hda_multi_out_dig_open +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf5d4498b snd_hda_ctl_add +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf5f0bd38 snd_hda_add_imux_item +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf7440d31 snd_hda_codec_amp_init +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf8b56dc2 snd_hda_correct_pin_ctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf8e4ee85 snd_hda_add_nid +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf9bb3f0d snd_hda_register_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xfafda840 snd_hda_jack_tbl_get_from_tag +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xffa04091 snd_hda_jack_add_kctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x0b02e32e snd_hda_gen_free +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x27a40525 snd_hda_gen_init +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x35911a64 snd_hda_get_path_from_idx +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x3d913b62 snd_hda_parse_nid_path +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x41bb3476 snd_hda_activate_path +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 0x78547d41 snd_hda_gen_stream_pm +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x7ca54359 snd_hda_gen_parse_auto_config +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 0x874f8dfd snd_hda_gen_build_controls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x9392916b snd_hda_gen_path_power_filter +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x9e1b0201 snd_hda_add_new_path +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xa3a5f44e snd_hda_gen_spec_init +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xa4d4afa7 snd_hda_get_nid_path +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xafa92e72 snd_hda_gen_mic_autoswitch +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xb498f9e4 snd_hda_gen_line_automute +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xbf12ca9d snd_hda_gen_build_pcms +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xc7272745 snd_hda_gen_update_outputs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xef104b7f snd_hda_gen_fix_pin_power +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xefda74af snd_hda_gen_check_power_status +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xf39eecee snd_hda_gen_hp_automute +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xf95cee29 snd_hda_get_path_idx +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xf97f81a7 snd_hda_gen_add_kctl +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs4271 0x6a537579 cs4271_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs4271 0x7d05786f cs4271_dt_ids +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs4271 0x82ad9e7e cs4271_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42l51 0x3755bee7 cs42l51_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42l51 0x375ad98c cs42l51_of_match +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42l51 0x5bd57c8e cs42l51_regmap +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 0x87be9c47 cs42xx8_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0x8b239cf8 cs42xx8_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0xcd3794c9 cs42448_data +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0xe1f6f9ae cs42xx8_pm +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-es8328 0x32ea7781 es8328_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-es8328 0x52dedf6c es8328_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm512x 0x8ce0690c pcm512x_remove +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm512x 0xb1385fc4 pcm512x_regmap +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm512x 0xe361310e pcm512x_pm_ops +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm512x 0xf739848e pcm512x_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0x76554d11 devm_sigmadsp_init +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0x7737c13b sigmadsp_reset +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0x98db884e sigmadsp_setup +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0xa081c86e sigmadsp_restrict_params +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0xd14c00db sigmadsp_attach +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp-i2c 0xeb0f0417 devm_sigmadsp_init_i2c +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-ssm2602 0x7d229f59 ssm2602_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-ssm2602 0xe313c2d1 ssm2602_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-tpa6130a2 0x958ee0cb tpa6130a2_stereo_enable +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-tpa6130a2 0xc66e7a09 tpa6130a2_add_controls +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-ts3a227e 0xff4069c7 ts3a227e_enable_jack_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8804 0x04753795 wm8804_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8804 0x3a725f6c wm8804_remove +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8804 0x527a9622 wm8804_pm +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8804 0x8a091cde wm8804_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8903 0xe759fadf wm8903_mic_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8962 0x74203dbf wm8962_mic_detect +EXPORT_SYMBOL_GPL sound/soc/fsl/snd-soc-fsl-asrc 0xcac71bc8 fsl_asrc_platform +EXPORT_SYMBOL_GPL sound/soc/fsl/snd-soc-fsl-asrc 0xe38dbb44 fsl_asrc_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/snd-soc-core 0x00be418f snd_soc_of_parse_audio_simple_widgets +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x02c65a16 snd_soc_dapm_nc_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x037e3969 snd_soc_dai_set_tristate +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x044792ca snd_soc_dpcm_get_substream +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x048bf7ce snd_soc_dai_set_clkdiv +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x04d44e02 snd_soc_get_volsw_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x072df92a snd_soc_dai_set_sysclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x088b6ad1 snd_soc_new_ac97_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x089b3319 snd_soc_dapm_kcontrol_dapm +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0915d38f snd_soc_dapm_mixer_update_power +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0b737891 snd_soc_dapm_disable_pin_unlocked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0eda1685 snd_soc_of_get_dai_name +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0f82bb65 snd_soc_jack_add_gpiods +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x107de68c snd_soc_put_xr_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x13e7031f snd_soc_component_update_bits_async +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x14b75fea snd_dmaengine_pcm_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x14f4423f dapm_kcontrol_get_value +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1790f749 snd_soc_jack_free_gpios +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x180204fa snd_soc_of_parse_tdm_slot +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x18473f12 snd_soc_debugfs_root +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x18f9cce6 snd_soc_free_ac97_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1bc94fb3 snd_soc_limit_volume +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1bd4b686 snd_soc_dapm_weak_routes +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1c4fcb78 snd_soc_dapm_enable_pin_unlocked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1e486708 snd_soc_jack_report +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1eae4720 snd_soc_dapm_put_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1f0ac7fc snd_soc_of_parse_audio_routing +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1fbdb599 snd_soc_dapm_get_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x20a5d973 snd_soc_component_write +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x20f748d1 dapm_mark_endpoints_dirty +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x21f3cb74 snd_soc_get_xr_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2541a979 snd_soc_calc_frame_size +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x255cc6a9 snd_soc_register_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x26ecb22f snd_soc_dai_set_tdm_slot +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x281670b6 snd_soc_jack_notifier_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x298b547e snd_soc_put_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2b6e921b snd_soc_dapm_force_enable_pin_unlocked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2c3ad1f1 snd_soc_jack_add_gpios +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2f955ce4 snd_soc_unregister_component +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3058c29c snd_soc_codec_set_pll +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x30cec473 snd_soc_remove_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x31d0f8ae snd_soc_card_get_kcontrol +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x326de15b snd_soc_dapm_put_pin_switch +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x33a184f8 snd_soc_dapm_nc_pin_unlocked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x34ad2795 snd_soc_dpcm_can_be_params +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x36ab88f9 snd_soc_jack_get_type +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x373dcce1 snd_soc_update_bits +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4a5fb16a snd_soc_dai_set_pll +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4c3865a7 snd_soc_dapm_del_routes +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4cc75544 snd_soc_dapm_new_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x54fe82d3 snd_soc_dapm_put_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5529896c snd_soc_info_volsw_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5544c71d snd_soc_dapm_disable_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x556c4f4e snd_soc_register_card +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x55b4983e snd_soc_poweroff +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x57bcb030 snd_soc_codec_set_sysclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5800fa57 snd_soc_add_dai_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5a10686e snd_soc_info_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5d7fa4f8 snd_soc_bytes_get +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5e374275 snd_soc_dapm_sync_unlocked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5ee26d84 snd_soc_unregister_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5f2e1bf2 snd_soc_platform_trigger +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x60294cd0 snd_soc_bytes_put +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6144bea8 snd_soc_add_platform_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x61f0fbc0 snd_soc_component_read +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x63ad36e7 snd_soc_pm_ops +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x67b9854d snd_soc_dpcm_be_set_state +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x688922da snd_soc_dpcm_fe_can_update +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x68909245 snd_soc_get_strobe +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x695d43fc snd_soc_get_volsw_range +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6b402712 snd_soc_platform_write +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x70ac7c9b dapm_regulator_event +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x719de620 snd_soc_add_codec_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x72dcc89c snd_soc_of_get_dai_link_codecs +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x745c7833 snd_soc_dapm_info_pin_switch +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7b508104 snd_soc_unregister_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7cb4a5e7 dapm_clock_event +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7e606130 snd_soc_calc_bclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7f827d0e snd_soc_dai_set_channel_map +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x80eba903 snd_soc_component_init_regmap +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x81e27d92 snd_soc_put_volsw_range +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x84bb4ddf devm_snd_soc_register_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x855014fd devm_snd_soc_register_card +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x883a17c9 snd_soc_put_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8a2485b1 snd_dmaengine_pcm_unregister +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8a7f6c64 snd_soc_component_async_complete +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8d323cb0 snd_soc_dapm_ignore_suspend +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8f01788b snd_soc_jack_add_zones +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9039f249 snd_soc_bytes_info +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x90f70881 snd_soc_get_dai_substream +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x916b7873 snd_soc_dapm_new_widgets +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x933d1363 snd_soc_set_ac97_ops +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x93f4f935 snd_soc_jack_add_pins +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x95299893 snd_soc_put_volsw_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x96b4768c snd_soc_of_parse_daifmt +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x98da078b devm_snd_soc_register_component +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9c0c1407 snd_soc_jack_notifier_unregister +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9c2b2c33 snd_soc_component_test_bits +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa60fc514 snd_soc_dai_digital_mute +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa65404cc snd_soc_dpcm_be_get_state +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa7b47dcb snd_soc_cnew +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa91dddb5 snd_soc_lookup_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xacfaf4e2 snd_soc_dapm_add_routes +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb1642c16 snd_soc_platform_read +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb1df6431 snd_soc_dapm_force_enable_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb26f5483 snd_soc_runtime_set_dai_fmt +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb41e1692 snd_soc_dapm_force_bias_level +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb64daea3 snd_soc_bytes_info_ext +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb6cd1178 snd_soc_set_ac97_ops_of_reset +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb7d1d665 snd_soc_info_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb9276fc8 snd_soc_info_volsw_range +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb9b43a31 snd_soc_get_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xbae80a06 snd_soc_set_runtime_hwparams +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xbdd55d6c soc_ac97_ops +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xbdf70b9d snd_soc_test_bits +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xbfe51bfc snd_soc_write +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc1346a10 snd_soc_get_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc252265b dpcm_be_dai_trigger +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc46a1893 snd_soc_card_jack_new +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc51d5477 snd_soc_dai_set_bclk_ratio +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc78db70a snd_soc_dapm_mux_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 0xc8aac594 snd_soc_component_exit_regmap +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xcd7f0265 snd_soc_dpcm_can_be_free_stop +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xcdd6f8fe snd_dmaengine_pcm_prepare_slave_config +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xcfc1912c snd_soc_info_xr_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd396ada6 snd_soc_dapm_sync +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd700ddba snd_soc_unregister_card +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd8e88164 snd_soc_add_card_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd9b0048d snd_soc_component_update_bits +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xda1044f3 snd_soc_dapm_enable_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xdbc76646 snd_soc_put_strobe +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xdeeda6a5 snd_soc_of_parse_card_name +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe3ed1309 snd_soc_add_component_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe5d73d8b snd_soc_add_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe73e6324 devm_snd_dmaengine_pcm_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xea7f5724 snd_soc_dpcm_be_can_update +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xeb711ae7 snd_soc_params_to_bclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xef99d29f snd_soc_get_pcm_runtime +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf0770eba snd_soc_register_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf1dde574 snd_soc_bytes_tlv_callback +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf2c1eac0 snd_soc_register_component +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf43ba2b6 snd_soc_dapm_get_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf479572a snd_soc_dai_set_fmt +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf54140c7 snd_soc_dapm_free +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf782909c snd_soc_read +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xfaee5e1a snd_soc_dapm_get_pin_switch +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xfea19718 snd_soc_dapm_get_pin_status +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x1352f589 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 0x263f7638 line6_pcm_acquire +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x4ac770cf line6_suspend +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x6870d566 line6_init_midi +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x698247b7 line6_probe +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x7cf6fc43 line6_write_data +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x85968cfb line6_read_serial_number +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x8ec973cd line6_start_timer +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xb0805407 line6_resume +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xb5884111 line6_init_pcm +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xc9f26e3b line6_pcm_release +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xce92f735 line6_disconnect +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xe611edc2 line6_send_raw_message_async +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xe73baf9f line6_version_request_async +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xe9a85a59 line6_alloc_sysex_buffer +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xf0a14ca1 line6_send_sysex_message +EXPORT_SYMBOL_GPL vmlinux 0x0016a85a pm_runtime_autosuspend_expiration +EXPORT_SYMBOL_GPL vmlinux 0x00217003 gpiod_set_array_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x00303a66 xfrm_audit_state_icvfail +EXPORT_SYMBOL_GPL vmlinux 0x003cea5e xhci_dbg_trace +EXPORT_SYMBOL_GPL vmlinux 0x00455778 serial8250_do_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x0050b67c regulator_enable_regmap +EXPORT_SYMBOL_GPL vmlinux 0x006820b4 pci_write_msi_msg +EXPORT_SYMBOL_GPL vmlinux 0x0070ef14 __tracepoint_rpm_idle +EXPORT_SYMBOL_GPL vmlinux 0x0076f5b3 ata_qc_complete +EXPORT_SYMBOL_GPL vmlinux 0x007a0dc3 key_type_logon +EXPORT_SYMBOL_GPL vmlinux 0x00841b48 ehci_adjust_port_wakeup_flags +EXPORT_SYMBOL_GPL vmlinux 0x008accad fib_rules_lookup +EXPORT_SYMBOL_GPL vmlinux 0x008c5c1a proc_mkdir_data +EXPORT_SYMBOL_GPL vmlinux 0x008f72cc debugfs_create_file_size +EXPORT_SYMBOL_GPL vmlinux 0x009304b6 ata_tf_from_fis +EXPORT_SYMBOL_GPL vmlinux 0x00937a18 crypto_register_rngs +EXPORT_SYMBOL_GPL vmlinux 0x00a6a99d pci_store_saved_state +EXPORT_SYMBOL_GPL vmlinux 0x00b106f6 usb_unanchor_urb +EXPORT_SYMBOL_GPL vmlinux 0x00c25ae4 cpufreq_governor_dbs +EXPORT_SYMBOL_GPL vmlinux 0x00da6301 user_preparse +EXPORT_SYMBOL_GPL vmlinux 0x00e5897d rio_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0x00e63dd2 disk_map_sector_rcu +EXPORT_SYMBOL_GPL vmlinux 0x00e8a99b crypto_unregister_aeads +EXPORT_SYMBOL_GPL vmlinux 0x00ebcb5d ata_id_string +EXPORT_SYMBOL_GPL vmlinux 0x00f33b5e input_ff_upload +EXPORT_SYMBOL_GPL vmlinux 0x01010c6d klist_add_before +EXPORT_SYMBOL_GPL vmlinux 0x011cf028 regulator_suspend_finish +EXPORT_SYMBOL_GPL vmlinux 0x011d684b fuse_file_poll +EXPORT_SYMBOL_GPL vmlinux 0x011ff6da arizona_pm_ops +EXPORT_SYMBOL_GPL vmlinux 0x01208ef9 pingv6_ops +EXPORT_SYMBOL_GPL vmlinux 0x01361895 class_remove_file_ns +EXPORT_SYMBOL_GPL vmlinux 0x01609dab gpiod_set_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x0167d5d3 device_rename +EXPORT_SYMBOL_GPL vmlinux 0x016c0f8b subsys_system_register +EXPORT_SYMBOL_GPL vmlinux 0x0186c5ae usb_get_intf +EXPORT_SYMBOL_GPL vmlinux 0x0189b6d0 netdev_set_default_ethtool_ops +EXPORT_SYMBOL_GPL vmlinux 0x01d06513 of_usb_get_maximum_speed +EXPORT_SYMBOL_GPL vmlinux 0x01e1a8de kgdb_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x01fce9f8 gfn_to_pfn +EXPORT_SYMBOL_GPL vmlinux 0x020629cd regcache_cache_bypass +EXPORT_SYMBOL_GPL vmlinux 0x021ebfda btree_update +EXPORT_SYMBOL_GPL vmlinux 0x02514f44 regcache_cache_only +EXPORT_SYMBOL_GPL vmlinux 0x025b9912 crypto_unregister_rngs +EXPORT_SYMBOL_GPL vmlinux 0x02663f8e pci_check_and_mask_intx +EXPORT_SYMBOL_GPL vmlinux 0x0293cc35 usb_disable_xhci_ports +EXPORT_SYMBOL_GPL vmlinux 0x029fff94 put_device +EXPORT_SYMBOL_GPL vmlinux 0x02c06dff da9052_disable_irq_nosync +EXPORT_SYMBOL_GPL vmlinux 0x02fea2ae rcu_note_context_switch +EXPORT_SYMBOL_GPL vmlinux 0x03044020 usb_alloc_urb +EXPORT_SYMBOL_GPL vmlinux 0x0312009b usb_hub_release_port +EXPORT_SYMBOL_GPL vmlinux 0x0321cdbf of_alias_get_highest_id +EXPORT_SYMBOL_GPL vmlinux 0x032717a8 ata_cable_sata +EXPORT_SYMBOL_GPL vmlinux 0x032dc636 i2c_unlock_adapter +EXPORT_SYMBOL_GPL vmlinux 0x033832c7 usb_amd_hang_symptom_quirk +EXPORT_SYMBOL_GPL vmlinux 0x033bdd04 nd_cmd_in_size +EXPORT_SYMBOL_GPL vmlinux 0x0343bdf1 __i2c_board_list +EXPORT_SYMBOL_GPL vmlinux 0x0376ce46 serial8250_tx_chars +EXPORT_SYMBOL_GPL vmlinux 0x03774858 mmu_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0x038b5671 sync_page_io +EXPORT_SYMBOL_GPL vmlinux 0x038cc86d regmap_get_device +EXPORT_SYMBOL_GPL vmlinux 0x039fd867 trace_clock_global +EXPORT_SYMBOL_GPL vmlinux 0x03a35d54 of_usb_host_tpl_support +EXPORT_SYMBOL_GPL vmlinux 0x03b641f6 pci_disable_pcie_error_reporting +EXPORT_SYMBOL_GPL vmlinux 0x03cc2cf2 devm_regulator_register +EXPORT_SYMBOL_GPL vmlinux 0x03d4478c netlink_has_listeners +EXPORT_SYMBOL_GPL vmlinux 0x03e3686c ata_timing_cycle2mode +EXPORT_SYMBOL_GPL vmlinux 0x03ff507a mbox_chan_received_data +EXPORT_SYMBOL_GPL vmlinux 0x0400f6f6 scsi_nl_sock +EXPORT_SYMBOL_GPL vmlinux 0x0402cbbf preempt_notifier_inc +EXPORT_SYMBOL_GPL vmlinux 0x040c0e0b lp8788_read_multi_bytes +EXPORT_SYMBOL_GPL vmlinux 0x041352e2 __rtnl_link_unregister +EXPORT_SYMBOL_GPL vmlinux 0x0439ef30 irq_create_strict_mappings +EXPORT_SYMBOL_GPL vmlinux 0x0463cc37 ata_scsi_unlock_native_capacity +EXPORT_SYMBOL_GPL vmlinux 0x0465a073 regmap_reg_in_ranges +EXPORT_SYMBOL_GPL vmlinux 0x047e26f9 iptunnel_handle_offloads +EXPORT_SYMBOL_GPL vmlinux 0x048b5f8d twl4030_audio_get_mclk +EXPORT_SYMBOL_GPL vmlinux 0x0499deb0 __clk_get_rate +EXPORT_SYMBOL_GPL vmlinux 0x049e8d6f devfreq_event_get_edev_count +EXPORT_SYMBOL_GPL vmlinux 0x04b5549c __cookie_v6_check +EXPORT_SYMBOL_GPL vmlinux 0x04c1a39a stmpe_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x04c4f603 mpi_get_buffer +EXPORT_SYMBOL_GPL vmlinux 0x04df8fbc lzo1x_decompress_safe +EXPORT_SYMBOL_GPL vmlinux 0x04f1fb52 bus_unregister +EXPORT_SYMBOL_GPL vmlinux 0x04fc0a1a __lock_page_killable +EXPORT_SYMBOL_GPL vmlinux 0x050df317 tpm2_calc_ordinal_duration +EXPORT_SYMBOL_GPL vmlinux 0x053494cb tpm_get_random +EXPORT_SYMBOL_GPL vmlinux 0x054e550b kernel_halt +EXPORT_SYMBOL_GPL vmlinux 0x05514fd1 rtc_read_time +EXPORT_SYMBOL_GPL vmlinux 0x05805373 trace_buffer_unlock_commit_regs +EXPORT_SYMBOL_GPL vmlinux 0x058b582a vt_get_leds +EXPORT_SYMBOL_GPL vmlinux 0x059f4340 tpm_chip_register +EXPORT_SYMBOL_GPL vmlinux 0x05b34796 virtqueue_kick +EXPORT_SYMBOL_GPL vmlinux 0x05d2e0dc scsi_internal_device_block +EXPORT_SYMBOL_GPL vmlinux 0x05dad0d6 unix_inq_len +EXPORT_SYMBOL_GPL vmlinux 0x05f471d8 posix_acl_create +EXPORT_SYMBOL_GPL vmlinux 0x0610cfba ata_std_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x061dee59 btree_remove +EXPORT_SYMBOL_GPL vmlinux 0x0620691f handle_level_irq +EXPORT_SYMBOL_GPL vmlinux 0x0626da5f od_unregister_powersave_bias_handler +EXPORT_SYMBOL_GPL vmlinux 0x064b9df7 phy_put +EXPORT_SYMBOL_GPL vmlinux 0x064db9a5 mark_mounts_for_expiry +EXPORT_SYMBOL_GPL vmlinux 0x068661c2 led_trigger_event +EXPORT_SYMBOL_GPL vmlinux 0x069e31ec pci_enable_pcie_error_reporting +EXPORT_SYMBOL_GPL vmlinux 0x06aa9589 ata_sas_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x06b6d043 devfreq_event_remove_edev +EXPORT_SYMBOL_GPL vmlinux 0x06e3516a ata_slave_link_init +EXPORT_SYMBOL_GPL vmlinux 0x06f2d0ce invalidate_inode_pages2 +EXPORT_SYMBOL_GPL vmlinux 0x0700df67 pci_reset_pri +EXPORT_SYMBOL_GPL vmlinux 0x070e3829 regmap_read +EXPORT_SYMBOL_GPL vmlinux 0x071714dc iptunnel_xmit +EXPORT_SYMBOL_GPL vmlinux 0x0718ef79 regmap_reinit_cache +EXPORT_SYMBOL_GPL vmlinux 0x0719962a crypto_register_aeads +EXPORT_SYMBOL_GPL vmlinux 0x071cbd46 pci_set_pcie_reset_state +EXPORT_SYMBOL_GPL vmlinux 0x073558d1 vfs_fallocate +EXPORT_SYMBOL_GPL vmlinux 0x0739f429 x509_check_signature +EXPORT_SYMBOL_GPL vmlinux 0x074ddca8 irq_create_direct_mapping +EXPORT_SYMBOL_GPL vmlinux 0x0762403c edac_put_sysfs_subsys +EXPORT_SYMBOL_GPL vmlinux 0x07836f93 add_page_wait_queue +EXPORT_SYMBOL_GPL vmlinux 0x078583a4 netlink_add_tap +EXPORT_SYMBOL_GPL vmlinux 0x07889d05 sata_lpm_ignore_phy_events +EXPORT_SYMBOL_GPL vmlinux 0x07b21f85 kdb_get_kbd_char +EXPORT_SYMBOL_GPL vmlinux 0x07b52e38 rtnl_unregister +EXPORT_SYMBOL_GPL vmlinux 0x07b79ace shmem_add_seals +EXPORT_SYMBOL_GPL vmlinux 0x07f300c3 smp_call_function_any +EXPORT_SYMBOL_GPL vmlinux 0x0800429c swiotlb_unmap_page +EXPORT_SYMBOL_GPL vmlinux 0x080da6e3 regulator_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x080ecbca of_dma_request_slave_channel +EXPORT_SYMBOL_GPL vmlinux 0x08156773 name_to_dev_t +EXPORT_SYMBOL_GPL vmlinux 0x082e3240 irq_domain_xlate_twocell +EXPORT_SYMBOL_GPL vmlinux 0x088bfa7e cancel_work_sync +EXPORT_SYMBOL_GPL vmlinux 0x08bc0870 compat_put_timespec +EXPORT_SYMBOL_GPL vmlinux 0x08c036f4 crypto_create_tfm +EXPORT_SYMBOL_GPL vmlinux 0x08f27719 sock_diag_check_cookie +EXPORT_SYMBOL_GPL vmlinux 0x091c824a machine_power_off +EXPORT_SYMBOL_GPL vmlinux 0x091eb9b4 round_jiffies +EXPORT_SYMBOL_GPL vmlinux 0x093238b5 __skb_tstamp_tx +EXPORT_SYMBOL_GPL vmlinux 0x09437748 ring_buffer_read_events_cpu +EXPORT_SYMBOL_GPL vmlinux 0x09469482 kfree_call_rcu +EXPORT_SYMBOL_GPL vmlinux 0x094f8a28 fuse_conn_get +EXPORT_SYMBOL_GPL vmlinux 0x0952af60 fb_videomode_from_videomode +EXPORT_SYMBOL_GPL vmlinux 0x096d36a9 blk_set_queue_dying +EXPORT_SYMBOL_GPL vmlinux 0x0973e492 pci_hp_create_module_link +EXPORT_SYMBOL_GPL vmlinux 0x097de612 class_dev_iter_next +EXPORT_SYMBOL_GPL vmlinux 0x097ecdb5 usb_put_hcd +EXPORT_SYMBOL_GPL vmlinux 0x09b08571 spi_setup +EXPORT_SYMBOL_GPL vmlinux 0x09b7c0af fat_detach +EXPORT_SYMBOL_GPL vmlinux 0x09d34bc5 power_supply_powers +EXPORT_SYMBOL_GPL vmlinux 0x09d3a3d6 dev_pm_qos_hide_latency_limit +EXPORT_SYMBOL_GPL vmlinux 0x09d791d9 relay_flush +EXPORT_SYMBOL_GPL vmlinux 0x09f37056 ata_pci_sff_prepare_host +EXPORT_SYMBOL_GPL vmlinux 0x0a1effb2 wm8350_clear_bits +EXPORT_SYMBOL_GPL vmlinux 0x0a23cae4 nf_queue_entry_get_refs +EXPORT_SYMBOL_GPL vmlinux 0x0a2573df subsys_virtual_register +EXPORT_SYMBOL_GPL vmlinux 0x0a26ed61 tcp_reno_ssthresh +EXPORT_SYMBOL_GPL vmlinux 0x0a304147 input_ff_create +EXPORT_SYMBOL_GPL vmlinux 0x0a3092a5 blk_queue_lld_busy +EXPORT_SYMBOL_GPL vmlinux 0x0a51ae5b virq_to_hw +EXPORT_SYMBOL_GPL vmlinux 0x0a51fc5d devm_led_classdev_unregister +EXPORT_SYMBOL_GPL vmlinux 0x0a751e6d blk_queue_flush_queueable +EXPORT_SYMBOL_GPL vmlinux 0x0ada115e reservation_object_wait_timeout_rcu +EXPORT_SYMBOL_GPL vmlinux 0x0ada19c7 kvm_vcpu_block +EXPORT_SYMBOL_GPL vmlinux 0x0b07abe2 unshare_fs_struct +EXPORT_SYMBOL_GPL vmlinux 0x0b08ef30 ata_std_prereset +EXPORT_SYMBOL_GPL vmlinux 0x0b2647ae devm_spi_register_master +EXPORT_SYMBOL_GPL vmlinux 0x0b4c730d regulator_bulk_free +EXPORT_SYMBOL_GPL vmlinux 0x0b554837 devm_of_phy_get_by_index +EXPORT_SYMBOL_GPL vmlinux 0x0b86a3f5 max_gen_clk_ops +EXPORT_SYMBOL_GPL vmlinux 0x0b95fe53 scsi_ioctl_block_when_processing_errors +EXPORT_SYMBOL_GPL vmlinux 0x0bec8c52 fsl_spi_cpm_reinit_txrx +EXPORT_SYMBOL_GPL vmlinux 0x0bfa3a19 rcu_idle_exit +EXPORT_SYMBOL_GPL vmlinux 0x0c0c015e ring_buffer_swap_cpu +EXPORT_SYMBOL_GPL vmlinux 0x0c2cdbf1 synchronize_sched +EXPORT_SYMBOL_GPL vmlinux 0x0c2f4e57 rio_release_inb_pwrite +EXPORT_SYMBOL_GPL vmlinux 0x0c308f0a driver_for_each_device +EXPORT_SYMBOL_GPL vmlinux 0x0c3d73d6 rhashtable_destroy +EXPORT_SYMBOL_GPL vmlinux 0x0c5fd968 debugfs_create_u32_array +EXPORT_SYMBOL_GPL vmlinux 0x0c6803fd tty_perform_flush +EXPORT_SYMBOL_GPL vmlinux 0x0c9368df aead_geniv_alloc +EXPORT_SYMBOL_GPL vmlinux 0x0ca48c29 devfreq_event_get_edev_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0x0cad9c3f tpm_pm_resume +EXPORT_SYMBOL_GPL vmlinux 0x0cb8779a tpm2_gen_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x0cc1e40f crypto_it_tab +EXPORT_SYMBOL_GPL vmlinux 0x0cc8ca43 skb_gso_transport_seglen +EXPORT_SYMBOL_GPL vmlinux 0x0cdcc57f device_remove_file +EXPORT_SYMBOL_GPL vmlinux 0x0cf770e0 devm_regmap_field_alloc +EXPORT_SYMBOL_GPL vmlinux 0x0d02d320 dax_truncate_page +EXPORT_SYMBOL_GPL vmlinux 0x0d4961de nf_log_buf_open +EXPORT_SYMBOL_GPL vmlinux 0x0d4f8528 uart_console_write +EXPORT_SYMBOL_GPL vmlinux 0x0d57200a tasklet_hrtimer_init +EXPORT_SYMBOL_GPL vmlinux 0x0d590e75 dma_buf_fd +EXPORT_SYMBOL_GPL vmlinux 0x0d625222 devm_hwrng_unregister +EXPORT_SYMBOL_GPL vmlinux 0x0d706d2e rh_set_owner +EXPORT_SYMBOL_GPL vmlinux 0x0d71cc44 regulator_get_hardware_vsel_register +EXPORT_SYMBOL_GPL vmlinux 0x0d73a952 GregorianDay +EXPORT_SYMBOL_GPL vmlinux 0x0d7d4d70 rcu_batches_completed +EXPORT_SYMBOL_GPL vmlinux 0x0d83e84d blocking_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0x0d8b8af7 inet_csk_get_port +EXPORT_SYMBOL_GPL vmlinux 0x0d99a75e pcibios_unmap_io_space +EXPORT_SYMBOL_GPL vmlinux 0x0da60350 pci_user_read_config_dword +EXPORT_SYMBOL_GPL vmlinux 0x0daad0e0 remove_irq +EXPORT_SYMBOL_GPL vmlinux 0x0dd5318d kthread_unpark +EXPORT_SYMBOL_GPL vmlinux 0x0ddb1cd7 llist_reverse_order +EXPORT_SYMBOL_GPL vmlinux 0x0de06988 cpu_first_thread_of_core +EXPORT_SYMBOL_GPL vmlinux 0x0de35dd0 usb_hcd_pci_remove +EXPORT_SYMBOL_GPL vmlinux 0x0dff504a sdio_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0x0e04fd8d serial8250_rpm_get +EXPORT_SYMBOL_GPL vmlinux 0x0e0a6bf8 usb_hcd_end_port_resume +EXPORT_SYMBOL_GPL vmlinux 0x0e23f371 get_kernel_page +EXPORT_SYMBOL_GPL vmlinux 0x0e3c193b component_master_add_child +EXPORT_SYMBOL_GPL vmlinux 0x0e733a03 ata_sff_port_intr +EXPORT_SYMBOL_GPL vmlinux 0x0e73ec9e ping_unhash +EXPORT_SYMBOL_GPL vmlinux 0x0e89c26f of_thermal_get_ntrips +EXPORT_SYMBOL_GPL vmlinux 0x0e8aae82 inet6_destroy_sock +EXPORT_SYMBOL_GPL vmlinux 0x0ea41f64 pm_qos_add_request +EXPORT_SYMBOL_GPL vmlinux 0x0ece06ac of_pci_msi_chip_add +EXPORT_SYMBOL_GPL vmlinux 0x0ecf823a static_key_slow_dec +EXPORT_SYMBOL_GPL vmlinux 0x0edc2484 usb_driver_set_configuration +EXPORT_SYMBOL_GPL vmlinux 0x0efe1625 i2c_generic_scl_recovery +EXPORT_SYMBOL_GPL vmlinux 0x0f1719a1 extcon_set_cable_state_ +EXPORT_SYMBOL_GPL vmlinux 0x0f3007f2 sdio_disable_func +EXPORT_SYMBOL_GPL vmlinux 0x0f336d7f rcutorture_get_gp_data +EXPORT_SYMBOL_GPL vmlinux 0x0f6edf7c __clk_mux_determine_rate_closest +EXPORT_SYMBOL_GPL vmlinux 0x0f751aea input_event_from_user +EXPORT_SYMBOL_GPL vmlinux 0x0f7af2b1 blkdev_write_iter +EXPORT_SYMBOL_GPL vmlinux 0x0f8d693f irq_domain_xlate_onecell +EXPORT_SYMBOL_GPL vmlinux 0x0fa92a6f gpiod_get_value +EXPORT_SYMBOL_GPL vmlinux 0x0fb197a7 sock_diag_unregister_inet_compat +EXPORT_SYMBOL_GPL vmlinux 0x0fc34717 mbox_client_txdone +EXPORT_SYMBOL_GPL vmlinux 0x0fc433a7 ehci_resume +EXPORT_SYMBOL_GPL vmlinux 0x0fc7cb2f disk_get_part +EXPORT_SYMBOL_GPL vmlinux 0x0fdb29af perf_pmu_register +EXPORT_SYMBOL_GPL vmlinux 0x0fe8f613 unuse_mm +EXPORT_SYMBOL_GPL vmlinux 0x10138352 tracing_on +EXPORT_SYMBOL_GPL vmlinux 0x1033ec2b regulator_get_optional +EXPORT_SYMBOL_GPL vmlinux 0x10346175 tcp_unregister_congestion_control +EXPORT_SYMBOL_GPL vmlinux 0x107faaf6 rio_request_inb_pwrite +EXPORT_SYMBOL_GPL vmlinux 0x10a3bee6 alarmtimer_get_rtcdev +EXPORT_SYMBOL_GPL vmlinux 0x10dd5199 hrtimer_forward +EXPORT_SYMBOL_GPL vmlinux 0x10e5ffe8 ipv6_recv_error +EXPORT_SYMBOL_GPL vmlinux 0x10ecc52c usb_amd_quirk_pll_enable +EXPORT_SYMBOL_GPL vmlinux 0x10f18999 rio_dma_prep_xfer +EXPORT_SYMBOL_GPL vmlinux 0x10f2eb39 pci_hp_change_slot_info +EXPORT_SYMBOL_GPL vmlinux 0x1114011d threads_shift +EXPORT_SYMBOL_GPL vmlinux 0x1115485b shmem_truncate_range +EXPORT_SYMBOL_GPL vmlinux 0x112e2375 get_device +EXPORT_SYMBOL_GPL vmlinux 0x113be047 devm_reset_control_get +EXPORT_SYMBOL_GPL vmlinux 0x114408aa user_update +EXPORT_SYMBOL_GPL vmlinux 0x114a913c phy_optional_get +EXPORT_SYMBOL_GPL vmlinux 0x11518e29 power_supply_external_power_changed +EXPORT_SYMBOL_GPL vmlinux 0x11645f21 xfrm_audit_state_add +EXPORT_SYMBOL_GPL vmlinux 0x11715484 __tracepoint_mc_event +EXPORT_SYMBOL_GPL vmlinux 0x1172ce54 rtc_ktime_to_tm +EXPORT_SYMBOL_GPL vmlinux 0x1172eee9 kvm_get_kvm +EXPORT_SYMBOL_GPL vmlinux 0x118ccce6 usb_set_configuration +EXPORT_SYMBOL_GPL vmlinux 0x118e50ad serial8250_rpm_put +EXPORT_SYMBOL_GPL vmlinux 0x11a62d91 ipv4_redirect +EXPORT_SYMBOL_GPL vmlinux 0x11af7db2 disk_part_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x11c60d57 rio_release_inb_dbell +EXPORT_SYMBOL_GPL vmlinux 0x11e28250 pci_find_ht_capability +EXPORT_SYMBOL_GPL vmlinux 0x11f7a3a0 of_get_nand_bus_width +EXPORT_SYMBOL_GPL vmlinux 0x12139b02 of_gen_pool_get +EXPORT_SYMBOL_GPL vmlinux 0x121d958a unregister_die_notifier +EXPORT_SYMBOL_GPL vmlinux 0x123ad9ef devm_phy_destroy +EXPORT_SYMBOL_GPL vmlinux 0x124ca933 module_mutex +EXPORT_SYMBOL_GPL vmlinux 0x124f2056 crypto_get_attr_type +EXPORT_SYMBOL_GPL vmlinux 0x12516630 get_net_ns_by_fd +EXPORT_SYMBOL_GPL vmlinux 0x127528bc nd_region_attribute_group +EXPORT_SYMBOL_GPL vmlinux 0x1279c235 thermal_zone_get_zone_by_name +EXPORT_SYMBOL_GPL vmlinux 0x12b5193c fwnode_handle_put +EXPORT_SYMBOL_GPL vmlinux 0x12e1c0fe blk_queue_rq_timeout +EXPORT_SYMBOL_GPL vmlinux 0x12f4ba86 single_open_net +EXPORT_SYMBOL_GPL vmlinux 0x131a5ed7 regmap_del_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0x131c9d15 of_usb_get_dr_mode +EXPORT_SYMBOL_GPL vmlinux 0x131db64a system_long_wq +EXPORT_SYMBOL_GPL vmlinux 0x1343959e crypto_spawn_tfm2 +EXPORT_SYMBOL_GPL vmlinux 0x136209db power_supply_reg_notifier +EXPORT_SYMBOL_GPL vmlinux 0x136a4ee6 btree_init +EXPORT_SYMBOL_GPL vmlinux 0x139162b8 of_property_read_string +EXPORT_SYMBOL_GPL vmlinux 0x1396f54e devm_led_classdev_register +EXPORT_SYMBOL_GPL vmlinux 0x139d3c28 __mnt_is_readonly +EXPORT_SYMBOL_GPL vmlinux 0x13ad647f scatterwalk_bytes_sglen +EXPORT_SYMBOL_GPL vmlinux 0x13b1afdf console_drivers +EXPORT_SYMBOL_GPL vmlinux 0x13c5e274 rio_mport_get_feature +EXPORT_SYMBOL_GPL vmlinux 0x13ce87e8 asn1_ber_decoder +EXPORT_SYMBOL_GPL vmlinux 0x13db7a63 bmp085_detect +EXPORT_SYMBOL_GPL vmlinux 0x13de5c6f uart_handle_cts_change +EXPORT_SYMBOL_GPL vmlinux 0x13e5ea13 __wake_up_sync +EXPORT_SYMBOL_GPL vmlinux 0x140ad528 platform_device_register +EXPORT_SYMBOL_GPL vmlinux 0x1419355e fat_remove_entries +EXPORT_SYMBOL_GPL vmlinux 0x1433c990 attribute_container_classdev_to_container +EXPORT_SYMBOL_GPL vmlinux 0x1433cbc4 __tracepoint_wbc_writepage +EXPORT_SYMBOL_GPL vmlinux 0x143445ac __gpiod_get +EXPORT_SYMBOL_GPL vmlinux 0x14498bf5 tpm2_probe +EXPORT_SYMBOL_GPL vmlinux 0x148d5512 usb_sg_wait +EXPORT_SYMBOL_GPL vmlinux 0x1499ce51 power_supply_register_no_ws +EXPORT_SYMBOL_GPL vmlinux 0x14afb190 mpc8xxx_spi_tx_buf_u16 +EXPORT_SYMBOL_GPL vmlinux 0x14b3c370 bpf_prog_create +EXPORT_SYMBOL_GPL vmlinux 0x14c3ae7b adp5520_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0x14e5b66c driver_unregister +EXPORT_SYMBOL_GPL vmlinux 0x14eef9d6 user_describe +EXPORT_SYMBOL_GPL vmlinux 0x14fcefcf gpiod_unexport +EXPORT_SYMBOL_GPL vmlinux 0x152817a1 crypto_drop_spawn +EXPORT_SYMBOL_GPL vmlinux 0x1546a149 blkcg_policy_unregister +EXPORT_SYMBOL_GPL vmlinux 0x1547985c pci_remove_root_bus +EXPORT_SYMBOL_GPL vmlinux 0x1582928d blk_queue_rq_timed_out +EXPORT_SYMBOL_GPL vmlinux 0x15892417 async_synchronize_cookie +EXPORT_SYMBOL_GPL vmlinux 0x15979172 crypto_alloc_rng +EXPORT_SYMBOL_GPL vmlinux 0x15b16c64 __class_create +EXPORT_SYMBOL_GPL vmlinux 0x15c21e5e nl_table_lock +EXPORT_SYMBOL_GPL vmlinux 0x15e1f11c usb_init_urb +EXPORT_SYMBOL_GPL vmlinux 0x15efd446 rcu_batches_started +EXPORT_SYMBOL_GPL vmlinux 0x16000a3c dm_device_name +EXPORT_SYMBOL_GPL vmlinux 0x1622664e wm8400_block_read +EXPORT_SYMBOL_GPL vmlinux 0x163a1fb1 xhci_init_driver +EXPORT_SYMBOL_GPL vmlinux 0x1650bf27 rcutorture_record_progress +EXPORT_SYMBOL_GPL vmlinux 0x166838f9 rtnl_put_cacheinfo +EXPORT_SYMBOL_GPL vmlinux 0x169cc49c fuse_do_open +EXPORT_SYMBOL_GPL vmlinux 0x16ada231 crypto_mod_get +EXPORT_SYMBOL_GPL vmlinux 0x16c577bd usb_create_shared_hcd +EXPORT_SYMBOL_GPL vmlinux 0x16fc2d46 platform_get_irq +EXPORT_SYMBOL_GPL vmlinux 0x16ff5dc8 serial8250_clear_and_reinit_fifos +EXPORT_SYMBOL_GPL vmlinux 0x171bedfa regulator_list_voltage_linear +EXPORT_SYMBOL_GPL vmlinux 0x1732bb37 unregister_pernet_subsys +EXPORT_SYMBOL_GPL vmlinux 0x17427ac6 da903x_writes +EXPORT_SYMBOL_GPL vmlinux 0x17461582 wm5110_i2c_regmap +EXPORT_SYMBOL_GPL vmlinux 0x1753a32f hash_digest_size +EXPORT_SYMBOL_GPL vmlinux 0x17570b1c ehci_init_driver +EXPORT_SYMBOL_GPL vmlinux 0x175e2af0 mmc_send_tuning +EXPORT_SYMBOL_GPL vmlinux 0x177c338d twl_get_version +EXPORT_SYMBOL_GPL vmlinux 0x179a516c crypto_enqueue_request +EXPORT_SYMBOL_GPL vmlinux 0x179a5195 regmap_get_val_bytes +EXPORT_SYMBOL_GPL vmlinux 0x17e634ef tps6586x_read +EXPORT_SYMBOL_GPL vmlinux 0x17e6e4bc i2c_probe_func_quick_read +EXPORT_SYMBOL_GPL vmlinux 0x17e8a0b4 usb_disable_lpm +EXPORT_SYMBOL_GPL vmlinux 0x18067426 fuse_abort_conn +EXPORT_SYMBOL_GPL vmlinux 0x180e24d6 fs_kobj +EXPORT_SYMBOL_GPL vmlinux 0x1840d6eb sata_async_notification +EXPORT_SYMBOL_GPL vmlinux 0x18480e75 uprobe_unregister +EXPORT_SYMBOL_GPL vmlinux 0x1848d7d7 __tracepoint_rpm_resume +EXPORT_SYMBOL_GPL vmlinux 0x1853653c btree_alloc +EXPORT_SYMBOL_GPL vmlinux 0x1866cec2 ring_buffer_size +EXPORT_SYMBOL_GPL vmlinux 0x18737724 generic_fh_to_dentry +EXPORT_SYMBOL_GPL vmlinux 0x1878f62b edac_err_assert +EXPORT_SYMBOL_GPL vmlinux 0x1894405f usb_enable_lpm +EXPORT_SYMBOL_GPL vmlinux 0x189a1925 tty_register_device_attr +EXPORT_SYMBOL_GPL vmlinux 0x189e6abf ata_sff_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x18b4163d devm_regulator_bulk_get +EXPORT_SYMBOL_GPL vmlinux 0x18b5786a crypto_register_pcomp +EXPORT_SYMBOL_GPL vmlinux 0x18e5fb05 ata_bmdma_status +EXPORT_SYMBOL_GPL vmlinux 0x18fd7ed9 cgroup_attach_task_all +EXPORT_SYMBOL_GPL vmlinux 0x19079c0f rio_request_outb_dbell +EXPORT_SYMBOL_GPL vmlinux 0x190e3dc6 sg_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x19374540 ping_common_sendmsg +EXPORT_SYMBOL_GPL vmlinux 0x19377885 wbc_account_io +EXPORT_SYMBOL_GPL vmlinux 0x193c30fc rt_mutex_unlock +EXPORT_SYMBOL_GPL vmlinux 0x193d48e0 trace_current_buffer_unlock_commit +EXPORT_SYMBOL_GPL vmlinux 0x19454baf devm_kmalloc +EXPORT_SYMBOL_GPL vmlinux 0x194dd5f5 pkey_algo_name +EXPORT_SYMBOL_GPL vmlinux 0x194e52f6 reset_control_get +EXPORT_SYMBOL_GPL vmlinux 0x1958cd63 mbox_request_channel_byname +EXPORT_SYMBOL_GPL vmlinux 0x19a304ba usb_disabled +EXPORT_SYMBOL_GPL vmlinux 0x19ad0035 gfn_to_pfn_atomic +EXPORT_SYMBOL_GPL vmlinux 0x19b384a5 hash_algo_name +EXPORT_SYMBOL_GPL vmlinux 0x19ceb49e pci_scan_child_bus +EXPORT_SYMBOL_GPL vmlinux 0x1a0443ac smpboot_unregister_percpu_thread +EXPORT_SYMBOL_GPL vmlinux 0x1a31cba9 devm_usb_get_phy_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0x1a4eb5b0 cpu_remove_dev_attr_group +EXPORT_SYMBOL_GPL vmlinux 0x1a5bfbd5 __pm_runtime_resume +EXPORT_SYMBOL_GPL vmlinux 0x1a5efc9c dm_path_uevent +EXPORT_SYMBOL_GPL vmlinux 0x1a7f4db7 max8997_write_reg +EXPORT_SYMBOL_GPL vmlinux 0x1a8c5907 btree_insert +EXPORT_SYMBOL_GPL vmlinux 0x1a967885 cpufreq_frequency_get_table +EXPORT_SYMBOL_GPL vmlinux 0x1ab90c65 bus_get_kset +EXPORT_SYMBOL_GPL vmlinux 0x1acef7d2 pm_freezing +EXPORT_SYMBOL_GPL vmlinux 0x1af48349 spi_async +EXPORT_SYMBOL_GPL vmlinux 0x1b0dfba7 usb_get_from_anchor +EXPORT_SYMBOL_GPL vmlinux 0x1b23acf6 of_resolve_phandles +EXPORT_SYMBOL_GPL vmlinux 0x1b2d90d0 pci_create_root_bus +EXPORT_SYMBOL_GPL vmlinux 0x1b3e4406 pci_dev_run_wake +EXPORT_SYMBOL_GPL vmlinux 0x1b9aca3f jprobe_return +EXPORT_SYMBOL_GPL vmlinux 0x1bac68e1 dev_coredumpv +EXPORT_SYMBOL_GPL vmlinux 0x1baffce9 devres_release_group +EXPORT_SYMBOL_GPL vmlinux 0x1bb3f566 crypto_alloc_akcipher +EXPORT_SYMBOL_GPL vmlinux 0x1bcca252 devm_clk_unregister +EXPORT_SYMBOL_GPL vmlinux 0x1bf6cddc sk_attach_filter +EXPORT_SYMBOL_GPL vmlinux 0x1c181d8c register_asymmetric_key_parser +EXPORT_SYMBOL_GPL vmlinux 0x1c2ad10a srcu_batches_completed +EXPORT_SYMBOL_GPL vmlinux 0x1c2fcad2 sdio_writel +EXPORT_SYMBOL_GPL vmlinux 0x1c33db7e kvm_write_guest +EXPORT_SYMBOL_GPL vmlinux 0x1c345893 register_net_sysctl +EXPORT_SYMBOL_GPL vmlinux 0x1c4ad4b5 __tracepoint_kvm_ppc_instr +EXPORT_SYMBOL_GPL vmlinux 0x1c5541bd cpufreq_boost_enabled +EXPORT_SYMBOL_GPL vmlinux 0x1c566469 list_lru_walk_one +EXPORT_SYMBOL_GPL vmlinux 0x1c5b1f28 irq_free_descs +EXPORT_SYMBOL_GPL vmlinux 0x1c5ff742 clk_get_phase +EXPORT_SYMBOL_GPL vmlinux 0x1c6db02d mbox_request_channel +EXPORT_SYMBOL_GPL vmlinux 0x1c6f05ec seq_release_net +EXPORT_SYMBOL_GPL vmlinux 0x1c80d27d btree_geo128 +EXPORT_SYMBOL_GPL vmlinux 0x1c87a811 __round_jiffies_up +EXPORT_SYMBOL_GPL vmlinux 0x1c88979b uhci_reset_hc +EXPORT_SYMBOL_GPL vmlinux 0x1c92f38b __mmu_notifier_invalidate_range_end +EXPORT_SYMBOL_GPL vmlinux 0x1cb3db2a fb_deferred_io_cleanup +EXPORT_SYMBOL_GPL vmlinux 0x1cb4787f bpf_prog_alloc +EXPORT_SYMBOL_GPL vmlinux 0x1cdb2147 zs_malloc +EXPORT_SYMBOL_GPL vmlinux 0x1ce7ec02 regulator_bulk_enable +EXPORT_SYMBOL_GPL vmlinux 0x1d4bfd28 vfs_cancel_lock +EXPORT_SYMBOL_GPL vmlinux 0x1d58ae14 lpddr2_jedec_timings +EXPORT_SYMBOL_GPL vmlinux 0x1d6b625c wm8350_device_exit +EXPORT_SYMBOL_GPL vmlinux 0x1d77b0f8 unix_socket_table +EXPORT_SYMBOL_GPL vmlinux 0x1d7c0168 __ftrace_vprintk +EXPORT_SYMBOL_GPL vmlinux 0x1df8d9e7 fuse_request_send +EXPORT_SYMBOL_GPL vmlinux 0x1dfbcf4c mpic_msgr_disable +EXPORT_SYMBOL_GPL vmlinux 0x1e0fb564 fwnode_property_read_u16_array +EXPORT_SYMBOL_GPL vmlinux 0x1e3164aa blk_mq_register_disk +EXPORT_SYMBOL_GPL vmlinux 0x1e38e79f rhashtable_walk_init +EXPORT_SYMBOL_GPL vmlinux 0x1e49228a page_mkclean +EXPORT_SYMBOL_GPL vmlinux 0x1e5b03dc pm_qos_add_notifier +EXPORT_SYMBOL_GPL vmlinux 0x1e5b6c67 blk_add_driver_data +EXPORT_SYMBOL_GPL vmlinux 0x1e5c236b pci_stop_root_bus +EXPORT_SYMBOL_GPL vmlinux 0x1e7bbcb3 kernel_restart +EXPORT_SYMBOL_GPL vmlinux 0x1e82a94b srcu_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x1e863de5 devm_usb_get_phy_dev +EXPORT_SYMBOL_GPL vmlinux 0x1e86cb01 sdio_release_host +EXPORT_SYMBOL_GPL vmlinux 0x1e9e1f51 __class_register +EXPORT_SYMBOL_GPL vmlinux 0x1eb9516e round_jiffies_relative +EXPORT_SYMBOL_GPL vmlinux 0x1ebac2bd getboottime64 +EXPORT_SYMBOL_GPL vmlinux 0x1ebf6c2a pci_power_names +EXPORT_SYMBOL_GPL vmlinux 0x1ec918c1 gfn_to_memslot +EXPORT_SYMBOL_GPL vmlinux 0x1ed14af4 scsi_flush_work +EXPORT_SYMBOL_GPL vmlinux 0x1ed9fa73 of_irq_get +EXPORT_SYMBOL_GPL vmlinux 0x1ee9e4ee pci_try_reset_slot +EXPORT_SYMBOL_GPL vmlinux 0x1eed1dbf bsg_setup_queue +EXPORT_SYMBOL_GPL vmlinux 0x1f0506e7 sdhci_pci_o2_fujin2_pci_init +EXPORT_SYMBOL_GPL vmlinux 0x1f259317 sysfs_create_group +EXPORT_SYMBOL_GPL vmlinux 0x1f2f2851 stmpe_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x1f439d42 blockdev_superblock +EXPORT_SYMBOL_GPL vmlinux 0x1f4dcdb2 uart_insert_char +EXPORT_SYMBOL_GPL vmlinux 0x1f5797a4 regulator_map_voltage_iterate +EXPORT_SYMBOL_GPL vmlinux 0x1f5d16c1 mm_kobj +EXPORT_SYMBOL_GPL vmlinux 0x1f74231a tc3589x_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x1f8544b8 panic_timeout +EXPORT_SYMBOL_GPL vmlinux 0x1f8db7f9 ring_buffer_overrun_cpu +EXPORT_SYMBOL_GPL vmlinux 0x1fba1881 led_trigger_blink_oneshot +EXPORT_SYMBOL_GPL vmlinux 0x1fd701f5 led_trigger_register_simple +EXPORT_SYMBOL_GPL vmlinux 0x1fe82dd7 wm831x_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x2042649a serial8250_request_dma +EXPORT_SYMBOL_GPL vmlinux 0x204ebc0e ip6_datagram_send_ctl +EXPORT_SYMBOL_GPL vmlinux 0x20595dbf simple_attr_open +EXPORT_SYMBOL_GPL vmlinux 0x20682afa fat_attach +EXPORT_SYMBOL_GPL vmlinux 0x2091f382 mddev_suspend +EXPORT_SYMBOL_GPL vmlinux 0x209f7410 regmap_field_write +EXPORT_SYMBOL_GPL vmlinux 0x20a58457 uart_handle_dcd_change +EXPORT_SYMBOL_GPL vmlinux 0x20a62637 fat_build_inode +EXPORT_SYMBOL_GPL vmlinux 0x20aa6f51 cpuidle_enable_device +EXPORT_SYMBOL_GPL vmlinux 0x20de5193 kvm_disable_largepages +EXPORT_SYMBOL_GPL vmlinux 0x20fe45ce kthread_park +EXPORT_SYMBOL_GPL vmlinux 0x211936d6 fuse_sync_release +EXPORT_SYMBOL_GPL vmlinux 0x216148ea i2c_new_dummy +EXPORT_SYMBOL_GPL vmlinux 0x216a48fc irq_domain_add_legacy +EXPORT_SYMBOL_GPL vmlinux 0x21889a49 ata_sff_data_xfer32 +EXPORT_SYMBOL_GPL vmlinux 0x2193c0a1 inet_hash_connect +EXPORT_SYMBOL_GPL vmlinux 0x21a563da clk_get_accuracy +EXPORT_SYMBOL_GPL vmlinux 0x21a780fa fat_alloc_new_dir +EXPORT_SYMBOL_GPL vmlinux 0x21b75dab wait_for_tpm_stat +EXPORT_SYMBOL_GPL vmlinux 0x21ca3d7f regulator_set_voltage +EXPORT_SYMBOL_GPL vmlinux 0x21ffa496 vring_transport_features +EXPORT_SYMBOL_GPL vmlinux 0x221c4a54 ata_pci_bmdma_prepare_host +EXPORT_SYMBOL_GPL vmlinux 0x223c5708 class_interface_unregister +EXPORT_SYMBOL_GPL vmlinux 0x22423f15 devres_find +EXPORT_SYMBOL_GPL vmlinux 0x224f2551 rhashtable_free_and_destroy +EXPORT_SYMBOL_GPL vmlinux 0x2251c38d gfn_to_page +EXPORT_SYMBOL_GPL vmlinux 0x22668cc9 skb_partial_csum_set +EXPORT_SYMBOL_GPL vmlinux 0x2296c00d crypto_attr_u32 +EXPORT_SYMBOL_GPL vmlinux 0x22c1b299 device_for_each_child +EXPORT_SYMBOL_GPL vmlinux 0x22de4648 led_trigger_show +EXPORT_SYMBOL_GPL vmlinux 0x22e45d80 powercap_unregister_control_type +EXPORT_SYMBOL_GPL vmlinux 0x22e573d2 gpiochip_set_chained_irqchip +EXPORT_SYMBOL_GPL vmlinux 0x22ed9112 raw_seq_start +EXPORT_SYMBOL_GPL vmlinux 0x22f86ffd clk_gate_ops +EXPORT_SYMBOL_GPL vmlinux 0x2317e51c skb_complete_wifi_ack +EXPORT_SYMBOL_GPL vmlinux 0x236e18d3 set_task_ioprio +EXPORT_SYMBOL_GPL vmlinux 0x2376dba1 xfrm_output +EXPORT_SYMBOL_GPL vmlinux 0x23864ce7 cpuset_mem_spread_node +EXPORT_SYMBOL_GPL vmlinux 0x23873f2d raw_seq_next +EXPORT_SYMBOL_GPL vmlinux 0x23891c49 wait_on_page_bit_killable_timeout +EXPORT_SYMBOL_GPL vmlinux 0x23935087 usb_clear_halt +EXPORT_SYMBOL_GPL vmlinux 0x2396c7f0 clk_set_parent +EXPORT_SYMBOL_GPL vmlinux 0x23aebcb8 dev_attr_em_message_type +EXPORT_SYMBOL_GPL vmlinux 0x23d7931c usb_hcd_resume_root_hub +EXPORT_SYMBOL_GPL vmlinux 0x23d984a7 ohci_hub_control +EXPORT_SYMBOL_GPL vmlinux 0x23dd872d shash_free_instance +EXPORT_SYMBOL_GPL vmlinux 0x23e8c77e irq_get_domain_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x23fe1dad tcp_ca_get_key_by_name +EXPORT_SYMBOL_GPL vmlinux 0x24011e14 vbin_printf +EXPORT_SYMBOL_GPL vmlinux 0x2439cfd7 rio_unregister_scan +EXPORT_SYMBOL_GPL vmlinux 0x24457174 audit_enabled +EXPORT_SYMBOL_GPL vmlinux 0x2467f016 serial8250_do_set_mctrl +EXPORT_SYMBOL_GPL vmlinux 0x247ef831 kdb_unregister +EXPORT_SYMBOL_GPL vmlinux 0x2492dba0 of_dma_controller_register +EXPORT_SYMBOL_GPL vmlinux 0x2495598f kvm_read_guest_atomic +EXPORT_SYMBOL_GPL vmlinux 0x24a65a9f da9052_adc_read_temp +EXPORT_SYMBOL_GPL vmlinux 0x24aac4d9 crypto_aes_expand_key +EXPORT_SYMBOL_GPL vmlinux 0x24b13ce8 blocking_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x24de5fa9 dmaengine_unmap_put +EXPORT_SYMBOL_GPL vmlinux 0x24eaf82e usb_interrupt_msg +EXPORT_SYMBOL_GPL vmlinux 0x24eb7e32 leds_list +EXPORT_SYMBOL_GPL vmlinux 0x24f39c39 reset_control_reset +EXPORT_SYMBOL_GPL vmlinux 0x24f84675 xfrm_output_resume +EXPORT_SYMBOL_GPL vmlinux 0x251acb54 crypto_register_ahash +EXPORT_SYMBOL_GPL vmlinux 0x25200bc6 ipv6_dup_options +EXPORT_SYMBOL_GPL vmlinux 0x25379e73 clk_set_min_rate +EXPORT_SYMBOL_GPL vmlinux 0x25574504 clk_fixed_rate_ops +EXPORT_SYMBOL_GPL vmlinux 0x255e18ca __sock_recv_wifi_status +EXPORT_SYMBOL_GPL vmlinux 0x256a9316 virtqueue_get_vring_size +EXPORT_SYMBOL_GPL vmlinux 0x25b52d0d pm_runtime_set_autosuspend_delay +EXPORT_SYMBOL_GPL vmlinux 0x25b8073f do_take_over_console +EXPORT_SYMBOL_GPL vmlinux 0x25b92274 inet_twsk_put +EXPORT_SYMBOL_GPL vmlinux 0x25c0d216 kvm_vcpu_mark_page_dirty +EXPORT_SYMBOL_GPL vmlinux 0x25d04ee3 hrtimer_cancel +EXPORT_SYMBOL_GPL vmlinux 0x25f983c0 kvm_init +EXPORT_SYMBOL_GPL vmlinux 0x260a3ab7 blk_queue_flush +EXPORT_SYMBOL_GPL vmlinux 0x26239663 debugfs_create_u8 +EXPORT_SYMBOL_GPL vmlinux 0x262f20a8 local_clock +EXPORT_SYMBOL_GPL vmlinux 0x26520970 vm_memory_committed +EXPORT_SYMBOL_GPL vmlinux 0x26665639 fat_fill_super +EXPORT_SYMBOL_GPL vmlinux 0x266b7638 interval_tree_remove +EXPORT_SYMBOL_GPL vmlinux 0x2681c31b kobject_move +EXPORT_SYMBOL_GPL vmlinux 0x26a43af8 ohci_setup +EXPORT_SYMBOL_GPL vmlinux 0x26b71fb4 ring_buffer_time_stamp +EXPORT_SYMBOL_GPL vmlinux 0x26c148d0 netdev_rx_handler_register +EXPORT_SYMBOL_GPL vmlinux 0x26c1dbf6 blkcipher_walk_done +EXPORT_SYMBOL_GPL vmlinux 0x26c90ea4 scsi_eh_get_sense +EXPORT_SYMBOL_GPL vmlinux 0x26fe96e7 xhci_resume +EXPORT_SYMBOL_GPL vmlinux 0x26fefa82 ata_std_qc_defer +EXPORT_SYMBOL_GPL vmlinux 0x27046576 kvm_exit +EXPORT_SYMBOL_GPL vmlinux 0x2716e336 ata_pci_bmdma_init_one +EXPORT_SYMBOL_GPL vmlinux 0x273a4e05 dax_fault +EXPORT_SYMBOL_GPL vmlinux 0x274cf5e1 __clk_get_flags +EXPORT_SYMBOL_GPL vmlinux 0x2756f6a3 pwm_disable +EXPORT_SYMBOL_GPL vmlinux 0x275a4cc4 fb_deferred_io_fsync +EXPORT_SYMBOL_GPL vmlinux 0x27a04e0d crypto_init_spawn2 +EXPORT_SYMBOL_GPL vmlinux 0x27adf829 md_allow_write +EXPORT_SYMBOL_GPL vmlinux 0x27c0c4be eventfd_ctx_read +EXPORT_SYMBOL_GPL vmlinux 0x27c1e63f usb_amd_find_chipset_info +EXPORT_SYMBOL_GPL vmlinux 0x27ced6e7 ata_std_sched_eh +EXPORT_SYMBOL_GPL vmlinux 0x27d998ff inet6_csk_xmit +EXPORT_SYMBOL_GPL vmlinux 0x27f4f029 ftrace_set_global_filter +EXPORT_SYMBOL_GPL vmlinux 0x27fa66e1 nr_free_buffer_pages +EXPORT_SYMBOL_GPL vmlinux 0x28078679 tcp_peer_is_proven +EXPORT_SYMBOL_GPL vmlinux 0x2811e3bf skb_zerocopy +EXPORT_SYMBOL_GPL vmlinux 0x282cdabc usb_led_activity +EXPORT_SYMBOL_GPL vmlinux 0x284e9025 usb_bus_list_lock +EXPORT_SYMBOL_GPL vmlinux 0x285a5f9d percpu_ida_free +EXPORT_SYMBOL_GPL vmlinux 0x2860414a clone_private_mount +EXPORT_SYMBOL_GPL vmlinux 0x2868c9db usb_set_interface +EXPORT_SYMBOL_GPL vmlinux 0x287d4f77 bio_trim +EXPORT_SYMBOL_GPL vmlinux 0x2883fccc clk_debugfs_add_file +EXPORT_SYMBOL_GPL vmlinux 0x289cc3ae split_page +EXPORT_SYMBOL_GPL vmlinux 0x28cdee96 irq_generic_chip_ops +EXPORT_SYMBOL_GPL vmlinux 0x28faf590 devm_regulator_bulk_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x29020a9d usb_hub_claim_port +EXPORT_SYMBOL_GPL vmlinux 0x2913de09 hrtimer_get_remaining +EXPORT_SYMBOL_GPL vmlinux 0x29608922 extcon_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x296848ca ata_host_detach +EXPORT_SYMBOL_GPL vmlinux 0x2975df0c add_disk_randomness +EXPORT_SYMBOL_GPL vmlinux 0x29ff5d74 crypto_register_akcipher +EXPORT_SYMBOL_GPL vmlinux 0x2a0acc0b da903x_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x2a3995d6 edac_get_sysfs_subsys +EXPORT_SYMBOL_GPL vmlinux 0x2a66ce9f spi_async_locked +EXPORT_SYMBOL_GPL vmlinux 0x2a727c08 regmap_async_complete +EXPORT_SYMBOL_GPL vmlinux 0x2a920196 regulator_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0x2ac70467 ata_timing_compute +EXPORT_SYMBOL_GPL vmlinux 0x2ac7e183 crypto_register_instance +EXPORT_SYMBOL_GPL vmlinux 0x2ad17c64 syscon_node_to_regmap +EXPORT_SYMBOL_GPL vmlinux 0x2ada7b4b clk_register_fixed_factor +EXPORT_SYMBOL_GPL vmlinux 0x2afa8f3b sdio_f0_readb +EXPORT_SYMBOL_GPL vmlinux 0x2b01a36a device_show_bool +EXPORT_SYMBOL_GPL vmlinux 0x2b3091d9 platform_bus +EXPORT_SYMBOL_GPL vmlinux 0x2b530c2d pci_find_next_ht_capability +EXPORT_SYMBOL_GPL vmlinux 0x2b5c303b smp_send_reschedule +EXPORT_SYMBOL_GPL vmlinux 0x2b7ce027 kallsyms_on_each_symbol +EXPORT_SYMBOL_GPL vmlinux 0x2b8073e4 pci_user_write_config_dword +EXPORT_SYMBOL_GPL vmlinux 0x2b952517 clk_has_parent +EXPORT_SYMBOL_GPL vmlinux 0x2ba6887b cpufreq_generic_frequency_table_verify +EXPORT_SYMBOL_GPL vmlinux 0x2ba69985 of_pwm_xlate_with_flags +EXPORT_SYMBOL_GPL vmlinux 0x2bad1134 component_master_add +EXPORT_SYMBOL_GPL vmlinux 0x2bd807e9 tps65912_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x2bdf68d2 crypto_chain +EXPORT_SYMBOL_GPL vmlinux 0x2bf7ea8d __cpufreq_driver_target +EXPORT_SYMBOL_GPL vmlinux 0x2bfa985e nd_cmd_dimm_desc +EXPORT_SYMBOL_GPL vmlinux 0x2c06c83d fb_deferred_io_open +EXPORT_SYMBOL_GPL vmlinux 0x2c133868 bit_wait_io_timeout +EXPORT_SYMBOL_GPL vmlinux 0x2c208607 power_supply_is_system_supplied +EXPORT_SYMBOL_GPL vmlinux 0x2c3054f9 net_inc_ingress_queue +EXPORT_SYMBOL_GPL vmlinux 0x2c421c50 input_ff_event +EXPORT_SYMBOL_GPL vmlinux 0x2c6d8dde inet_csk_route_child_sock +EXPORT_SYMBOL_GPL vmlinux 0x2c7db649 irq_dispose_mapping +EXPORT_SYMBOL_GPL vmlinux 0x2c8379d2 devm_kmemdup +EXPORT_SYMBOL_GPL vmlinux 0x2c90585a skcipher_geniv_alloc +EXPORT_SYMBOL_GPL vmlinux 0x2c97f8a2 of_reconfig_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x2c99cbe5 tty_port_register_device_attr +EXPORT_SYMBOL_GPL vmlinux 0x2c9c509a fsl_spi_cpm_free +EXPORT_SYMBOL_GPL vmlinux 0x2caa4742 dev_pm_get_subsys_data +EXPORT_SYMBOL_GPL vmlinux 0x2cbc4075 ata_bmdma_setup +EXPORT_SYMBOL_GPL vmlinux 0x2ce98559 kcrypto_wq +EXPORT_SYMBOL_GPL vmlinux 0x2cea32ee unregister_oldmem_pfn_is_ram +EXPORT_SYMBOL_GPL vmlinux 0x2d1b02d2 usermodehelper_read_lock_wait +EXPORT_SYMBOL_GPL vmlinux 0x2d36c57b rh_alloc +EXPORT_SYMBOL_GPL vmlinux 0x2d41e6f5 __trace_puts +EXPORT_SYMBOL_GPL vmlinux 0x2d59c954 edac_handlers +EXPORT_SYMBOL_GPL vmlinux 0x2d7633ac reset_controller_register +EXPORT_SYMBOL_GPL vmlinux 0x2d891530 ata_cable_40wire +EXPORT_SYMBOL_GPL vmlinux 0x2d8c868e ata_bmdma_irq_clear +EXPORT_SYMBOL_GPL vmlinux 0x2daf8519 ata_bmdma_port_start +EXPORT_SYMBOL_GPL vmlinux 0x2dc1906a usb_register_dev +EXPORT_SYMBOL_GPL vmlinux 0x2dc5a6d1 btree_last +EXPORT_SYMBOL_GPL vmlinux 0x2dd7943a of_pci_find_msi_chip_by_node +EXPORT_SYMBOL_GPL vmlinux 0x2dda080f driver_create_file +EXPORT_SYMBOL_GPL vmlinux 0x2de87fc2 udp4_hwcsum +EXPORT_SYMBOL_GPL vmlinux 0x2e1666bc led_trigger_register +EXPORT_SYMBOL_GPL vmlinux 0x2e1da9fb probe_kernel_read +EXPORT_SYMBOL_GPL vmlinux 0x2e2360b1 ftrace_set_global_notrace +EXPORT_SYMBOL_GPL vmlinux 0x2e2f1740 ring_buffer_record_disable_cpu +EXPORT_SYMBOL_GPL vmlinux 0x2e3b8872 irq_map_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x2e51d004 wm8350_gpio_config +EXPORT_SYMBOL_GPL vmlinux 0x2e55bdd4 arizona_clk32k_disable +EXPORT_SYMBOL_GPL vmlinux 0x2eaafd6b kset_create_and_add +EXPORT_SYMBOL_GPL vmlinux 0x2eb5e2a5 ata_sff_softreset +EXPORT_SYMBOL_GPL vmlinux 0x2ebe3135 cpu_is_hotpluggable +EXPORT_SYMBOL_GPL vmlinux 0x2ec4eee6 __tracepoint_suspend_resume +EXPORT_SYMBOL_GPL vmlinux 0x2ecfdef9 regmap_raw_write +EXPORT_SYMBOL_GPL vmlinux 0x2ed13153 ata_sg_init +EXPORT_SYMBOL_GPL vmlinux 0x2ef792ea usb_deregister +EXPORT_SYMBOL_GPL vmlinux 0x2eff47c1 ip6_sk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x2f02707d inet_ctl_sock_create +EXPORT_SYMBOL_GPL vmlinux 0x2f031afa irq_gc_mask_set_bit +EXPORT_SYMBOL_GPL vmlinux 0x2f0d9053 usb_otg_state_string +EXPORT_SYMBOL_GPL vmlinux 0x2f4113a2 dcookie_register +EXPORT_SYMBOL_GPL vmlinux 0x2f528113 power_supply_property_is_writeable +EXPORT_SYMBOL_GPL vmlinux 0x2f560ea9 component_bind_all +EXPORT_SYMBOL_GPL vmlinux 0x2f6487f5 palmas_ext_control_req_config +EXPORT_SYMBOL_GPL vmlinux 0x2f65da20 dev_pm_clear_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0x2f6a9bc0 subsys_find_device_by_id +EXPORT_SYMBOL_GPL vmlinux 0x2f8acd63 wm8350_device_init +EXPORT_SYMBOL_GPL vmlinux 0x2f98e353 bitmap_copy_from_slot +EXPORT_SYMBOL_GPL vmlinux 0x2fb25896 invalidate_inode_pages2_range +EXPORT_SYMBOL_GPL vmlinux 0x2fb58b65 dma_get_required_mask +EXPORT_SYMBOL_GPL vmlinux 0x2ffb5ff7 btree_get_prev +EXPORT_SYMBOL_GPL vmlinux 0x304ce3c4 cpufreq_freq_transition_end +EXPORT_SYMBOL_GPL vmlinux 0x305f643d usb_hcd_map_urb_for_dma +EXPORT_SYMBOL_GPL vmlinux 0x306a4d0c platform_driver_unregister +EXPORT_SYMBOL_GPL vmlinux 0x307c0c68 ata_link_online +EXPORT_SYMBOL_GPL vmlinux 0x30a39391 tc3589x_block_write +EXPORT_SYMBOL_GPL vmlinux 0x30a56316 kobject_uevent_env +EXPORT_SYMBOL_GPL vmlinux 0x30c95842 sdio_get_host_pm_caps +EXPORT_SYMBOL_GPL vmlinux 0x30ceade4 dm_internal_resume +EXPORT_SYMBOL_GPL vmlinux 0x30e208a4 pci_pasid_features +EXPORT_SYMBOL_GPL vmlinux 0x3100488b crypto_blkcipher_type +EXPORT_SYMBOL_GPL vmlinux 0x310553e7 wm8400_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x3109b751 cpu_clock +EXPORT_SYMBOL_GPL vmlinux 0x31266931 con_debug_leave +EXPORT_SYMBOL_GPL vmlinux 0x31451d53 ata_scsi_port_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x3181a0f0 hvc_poll +EXPORT_SYMBOL_GPL vmlinux 0x3185435a add_to_page_cache_lru +EXPORT_SYMBOL_GPL vmlinux 0x31910328 get_dcookie +EXPORT_SYMBOL_GPL vmlinux 0x31c0c2d1 dm_put +EXPORT_SYMBOL_GPL vmlinux 0x31c7970f pciserial_suspend_ports +EXPORT_SYMBOL_GPL vmlinux 0x3204ebcc need_load_eval +EXPORT_SYMBOL_GPL vmlinux 0x321bdbb1 compat_get_timeval +EXPORT_SYMBOL_GPL vmlinux 0x322dc48f dev_pm_opp_add +EXPORT_SYMBOL_GPL vmlinux 0x32318e83 x509_request_asymmetric_key +EXPORT_SYMBOL_GPL vmlinux 0x32360cf9 class_unregister +EXPORT_SYMBOL_GPL vmlinux 0x3248d738 raw_hash_sk +EXPORT_SYMBOL_GPL vmlinux 0x325ce1dd regulator_get_current_limit +EXPORT_SYMBOL_GPL vmlinux 0x328995b5 tracing_generic_entry_update +EXPORT_SYMBOL_GPL vmlinux 0x3298ba1e tty_get_pgrp +EXPORT_SYMBOL_GPL vmlinux 0x32bc0fcf preempt_notifier_dec +EXPORT_SYMBOL_GPL vmlinux 0x32bded08 __tracepoint_block_bio_remap +EXPORT_SYMBOL_GPL vmlinux 0x32c11008 isa_bridge_pcidev +EXPORT_SYMBOL_GPL vmlinux 0x32c3cb4e class_compat_register +EXPORT_SYMBOL_GPL vmlinux 0x32d517bd skb_to_sgvec_nomark +EXPORT_SYMBOL_GPL vmlinux 0x33113e6d crypto_lookup_skcipher +EXPORT_SYMBOL_GPL vmlinux 0x3324d06f attribute_container_register +EXPORT_SYMBOL_GPL vmlinux 0x332b5664 mbox_controller_register +EXPORT_SYMBOL_GPL vmlinux 0x335078f2 of_property_match_string +EXPORT_SYMBOL_GPL vmlinux 0x335c570f enable_percpu_irq +EXPORT_SYMBOL_GPL vmlinux 0x335fc03b clk_gpio_gate_ops +EXPORT_SYMBOL_GPL vmlinux 0x336154ca rcutorture_record_test_transition +EXPORT_SYMBOL_GPL vmlinux 0x337786fa usb_unpoison_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x33aff51e __blk_put_request +EXPORT_SYMBOL_GPL vmlinux 0x33d28f27 inverse_translate +EXPORT_SYMBOL_GPL vmlinux 0x33e814e1 crypto_grab_spawn +EXPORT_SYMBOL_GPL vmlinux 0x34033e9f cn_add_callback +EXPORT_SYMBOL_GPL vmlinux 0x340d4b1b subsys_dev_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0x342d017c __pci_hp_register +EXPORT_SYMBOL_GPL vmlinux 0x3433c7c4 posix_acl_access_xattr_handler +EXPORT_SYMBOL_GPL vmlinux 0x343b8ca3 part_round_stats +EXPORT_SYMBOL_GPL vmlinux 0x343c3bc2 crypto_unregister_algs +EXPORT_SYMBOL_GPL vmlinux 0x343d9995 devm_regulator_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x3442db45 of_mpc8xxx_spi_probe +EXPORT_SYMBOL_GPL vmlinux 0x34521cfc thermal_notify_framework +EXPORT_SYMBOL_GPL vmlinux 0x34646153 inet_peer_base_init +EXPORT_SYMBOL_GPL vmlinux 0x3465fce6 __tracepoint_block_bio_complete +EXPORT_SYMBOL_GPL vmlinux 0x347fd4b3 eventfd_ctx_get +EXPORT_SYMBOL_GPL vmlinux 0x349927a8 inet6_csk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x34a6186c od_register_powersave_bias_handler +EXPORT_SYMBOL_GPL vmlinux 0x34aca145 devm_usb_put_phy +EXPORT_SYMBOL_GPL vmlinux 0x34e11f20 regulator_get_exclusive +EXPORT_SYMBOL_GPL vmlinux 0x34eb4ffd tps65912_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x34f78226 pci_test_config_bits +EXPORT_SYMBOL_GPL vmlinux 0x35176301 rcu_batches_completed_sched +EXPORT_SYMBOL_GPL vmlinux 0x3563a1ef exportfs_encode_fh +EXPORT_SYMBOL_GPL vmlinux 0x3581f662 mbox_send_message +EXPORT_SYMBOL_GPL vmlinux 0x358ff60f twl_get_hfclk_rate +EXPORT_SYMBOL_GPL vmlinux 0x35a1fcb2 ata_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x35a30a81 lp8788_write_byte +EXPORT_SYMBOL_GPL vmlinux 0x35bf2acd nd_fletcher64 +EXPORT_SYMBOL_GPL vmlinux 0x35cb2890 dma_run_dependencies +EXPORT_SYMBOL_GPL vmlinux 0x35dbfe26 tty_ldisc_ref_wait +EXPORT_SYMBOL_GPL vmlinux 0x35f10f43 nfq_ct_nat_hook +EXPORT_SYMBOL_GPL vmlinux 0x361e2bcc save_stack_trace +EXPORT_SYMBOL_GPL vmlinux 0x362c1368 trace_event_buffer_commit +EXPORT_SYMBOL_GPL vmlinux 0x362da987 pci_restore_msi_state +EXPORT_SYMBOL_GPL vmlinux 0x365001ff __sock_recv_ts_and_drops +EXPORT_SYMBOL_GPL vmlinux 0x36583e70 spi_bus_lock +EXPORT_SYMBOL_GPL vmlinux 0x366644b8 unregister_pernet_device +EXPORT_SYMBOL_GPL vmlinux 0x3673a52a dequeue_signal +EXPORT_SYMBOL_GPL vmlinux 0x368f1fea static_key_slow_inc +EXPORT_SYMBOL_GPL vmlinux 0x36920b8a queue_kthread_work +EXPORT_SYMBOL_GPL vmlinux 0x369570dd file_ra_state_init +EXPORT_SYMBOL_GPL vmlinux 0x369c50a1 of_regulator_match +EXPORT_SYMBOL_GPL vmlinux 0x369fcd70 tracing_snapshot +EXPORT_SYMBOL_GPL vmlinux 0x36a64e5c percpu_ida_free_tags +EXPORT_SYMBOL_GPL vmlinux 0x36a6afe9 rio_release_outb_mbox +EXPORT_SYMBOL_GPL vmlinux 0x36bda7b0 cpuidle_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0x36c14673 rio_release_outb_dbell +EXPORT_SYMBOL_GPL vmlinux 0x36ce2d1f serial8250_do_startup +EXPORT_SYMBOL_GPL vmlinux 0x36dab97f trace_clock_jiffies +EXPORT_SYMBOL_GPL vmlinux 0x36f0f3fc crypto_unregister_pcomp +EXPORT_SYMBOL_GPL vmlinux 0x37153b3d scsi_get_vpd_page +EXPORT_SYMBOL_GPL vmlinux 0x371dbd7c gfn_to_pfn_memslot +EXPORT_SYMBOL_GPL vmlinux 0x372e2e8e ata_link_next +EXPORT_SYMBOL_GPL vmlinux 0x373e5af1 mnt_clone_write +EXPORT_SYMBOL_GPL vmlinux 0x374e69d3 sdio_writeb_readb +EXPORT_SYMBOL_GPL vmlinux 0x3777aa8f of_pci_range_parser_one +EXPORT_SYMBOL_GPL vmlinux 0x378b7849 free_vm_area +EXPORT_SYMBOL_GPL vmlinux 0x379d7533 dax_zero_page_range +EXPORT_SYMBOL_GPL vmlinux 0x37d2c2c5 rh_dump_blk +EXPORT_SYMBOL_GPL vmlinux 0x37e8d61f skb_scrub_packet +EXPORT_SYMBOL_GPL vmlinux 0x37ee602e clockevent_delta2ns +EXPORT_SYMBOL_GPL vmlinux 0x37ef4a9d __srcu_read_unlock +EXPORT_SYMBOL_GPL vmlinux 0x37f21ff9 crypto_aead_setkey +EXPORT_SYMBOL_GPL vmlinux 0x37f50f82 usb_hcd_unlink_urb_from_ep +EXPORT_SYMBOL_GPL vmlinux 0x3806dbc2 usb_reset_endpoint +EXPORT_SYMBOL_GPL vmlinux 0x3835620a pci_hp_deregister +EXPORT_SYMBOL_GPL vmlinux 0x383e1690 power_supply_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x38462ff7 proc_get_parent_data +EXPORT_SYMBOL_GPL vmlinux 0x384a6981 __gfn_to_pfn_memslot +EXPORT_SYMBOL_GPL vmlinux 0x385321dd inode_sb_list_add +EXPORT_SYMBOL_GPL vmlinux 0x385d9a83 rio_register_scan +EXPORT_SYMBOL_GPL vmlinux 0x38639300 of_overlay_destroy +EXPORT_SYMBOL_GPL vmlinux 0x38a6d563 rio_mport_read_config_8 +EXPORT_SYMBOL_GPL vmlinux 0x38c35470 pci_enable_sriov +EXPORT_SYMBOL_GPL vmlinux 0x38c7922c srcu_init_notifier_head +EXPORT_SYMBOL_GPL vmlinux 0x38c94a7c dev_pm_qos_hide_flags +EXPORT_SYMBOL_GPL vmlinux 0x38cd7e3e fsnotify +EXPORT_SYMBOL_GPL vmlinux 0x38d55c4f ata_sff_wait_ready +EXPORT_SYMBOL_GPL vmlinux 0x38e24ddf flush_kthread_worker +EXPORT_SYMBOL_GPL vmlinux 0x38e5bc5a clk_set_rate_range +EXPORT_SYMBOL_GPL vmlinux 0x38ed198f alarm_try_to_cancel +EXPORT_SYMBOL_GPL vmlinux 0x38f78010 __netpoll_setup +EXPORT_SYMBOL_GPL vmlinux 0x391cb90e of_property_count_elems_of_size +EXPORT_SYMBOL_GPL vmlinux 0x393c2cf0 led_classdev_suspend +EXPORT_SYMBOL_GPL vmlinux 0x395894a9 thermal_zone_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x395dcf43 mbox_chan_txdone +EXPORT_SYMBOL_GPL vmlinux 0x395e2602 mddev_congested +EXPORT_SYMBOL_GPL vmlinux 0x397f3037 usb_hub_clear_tt_buffer +EXPORT_SYMBOL_GPL vmlinux 0x39897d41 gpiod_put +EXPORT_SYMBOL_GPL vmlinux 0x398ddb0b bus_remove_file +EXPORT_SYMBOL_GPL vmlinux 0x39929054 to_of_pinfo +EXPORT_SYMBOL_GPL vmlinux 0x39959c20 trace_seq_path +EXPORT_SYMBOL_GPL vmlinux 0x39a5abe9 attribute_container_unregister +EXPORT_SYMBOL_GPL vmlinux 0x39ca07cc maxim_charger_calc_reg_current +EXPORT_SYMBOL_GPL vmlinux 0x39d02d35 usb_debug_root +EXPORT_SYMBOL_GPL vmlinux 0x39dd7902 usb_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x39e61495 nf_logger_request_module +EXPORT_SYMBOL_GPL vmlinux 0x3a196e79 of_pci_parse_bus_range +EXPORT_SYMBOL_GPL vmlinux 0x3a24f1a0 dma_buf_map_attachment +EXPORT_SYMBOL_GPL vmlinux 0x3a26ed11 sched_clock +EXPORT_SYMBOL_GPL vmlinux 0x3a35b1cf __clk_get_hw +EXPORT_SYMBOL_GPL vmlinux 0x3a4f6a32 ata_sff_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x3a536bd7 ring_buffer_read_finish +EXPORT_SYMBOL_GPL vmlinux 0x3a84a200 fuse_get_req_for_background +EXPORT_SYMBOL_GPL vmlinux 0x3a87e006 ata_msleep +EXPORT_SYMBOL_GPL vmlinux 0x3a953c87 fwnode_property_read_u64_array +EXPORT_SYMBOL_GPL vmlinux 0x3a9be019 asymmetric_key_id_partial +EXPORT_SYMBOL_GPL vmlinux 0x3ab097e3 dma_buf_unmap_attachment +EXPORT_SYMBOL_GPL vmlinux 0x3ab51af8 __inet_inherit_port +EXPORT_SYMBOL_GPL vmlinux 0x3ab56ef8 ata_pci_bmdma_init +EXPORT_SYMBOL_GPL vmlinux 0x3acdf325 twl4030_audio_enable_resource +EXPORT_SYMBOL_GPL vmlinux 0x3ad0e201 scatterwalk_copychunks +EXPORT_SYMBOL_GPL vmlinux 0x3b37da86 debugfs_create_bool +EXPORT_SYMBOL_GPL vmlinux 0x3b598ef6 crypto_find_alg +EXPORT_SYMBOL_GPL vmlinux 0x3b5d6098 dev_pm_qos_add_ancestor_request +EXPORT_SYMBOL_GPL vmlinux 0x3b6ab7f2 blk_add_request_payload +EXPORT_SYMBOL_GPL vmlinux 0x3b993167 trace_seq_puts +EXPORT_SYMBOL_GPL vmlinux 0x3bc7dcf3 xhci_suspend +EXPORT_SYMBOL_GPL vmlinux 0x3bee20c8 dev_get_regmap +EXPORT_SYMBOL_GPL vmlinux 0x3bfb33a9 rio_lock_device +EXPORT_SYMBOL_GPL vmlinux 0x3c9390db pci_vpd_find_tag +EXPORT_SYMBOL_GPL vmlinux 0x3cd06035 add_input_randomness +EXPORT_SYMBOL_GPL vmlinux 0x3d0406f8 virtqueue_get_buf +EXPORT_SYMBOL_GPL vmlinux 0x3d2d81f6 mddev_resume +EXPORT_SYMBOL_GPL vmlinux 0x3d612305 iommu_direction_to_tce_perm +EXPORT_SYMBOL_GPL vmlinux 0x3d6d0d58 wm5110_revd_irq +EXPORT_SYMBOL_GPL vmlinux 0x3d91a325 of_pci_find_child_device +EXPORT_SYMBOL_GPL vmlinux 0x3dc526a9 arizona_of_match +EXPORT_SYMBOL_GPL vmlinux 0x3dc916b6 crypto_fl_tab +EXPORT_SYMBOL_GPL vmlinux 0x3dd8181e __clk_get_parent +EXPORT_SYMBOL_GPL vmlinux 0x3de19989 gpiod_set_raw_array_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x3de9cae1 crypto_remove_final +EXPORT_SYMBOL_GPL vmlinux 0x3ded4e02 kernfs_put +EXPORT_SYMBOL_GPL vmlinux 0x3df3b8a0 ping_proc_unregister +EXPORT_SYMBOL_GPL vmlinux 0x3dfc436e percpu_ref_kill_and_confirm +EXPORT_SYMBOL_GPL vmlinux 0x3e137e17 vfs_setlease +EXPORT_SYMBOL_GPL vmlinux 0x3e1ab749 eventfd_ctx_fileget +EXPORT_SYMBOL_GPL vmlinux 0x3e1f6520 of_fixed_factor_clk_setup +EXPORT_SYMBOL_GPL vmlinux 0x3e1f72e0 kvm_vcpu_cache +EXPORT_SYMBOL_GPL vmlinux 0x3e47d4e7 posix_timer_event +EXPORT_SYMBOL_GPL vmlinux 0x3e514bfa devres_open_group +EXPORT_SYMBOL_GPL vmlinux 0x3e5e1937 rcu_batches_started_sched +EXPORT_SYMBOL_GPL vmlinux 0x3e7080cb mpi_read_from_buffer +EXPORT_SYMBOL_GPL vmlinux 0x3e7b1da7 gpiochip_unlock_as_irq +EXPORT_SYMBOL_GPL vmlinux 0x3e98081e swiotlb_map_page +EXPORT_SYMBOL_GPL vmlinux 0x3ed9398c bio_associate_current +EXPORT_SYMBOL_GPL vmlinux 0x3ede47cd da9052_adc_manual_read +EXPORT_SYMBOL_GPL vmlinux 0x3ee50d76 arizona_clk32k_enable +EXPORT_SYMBOL_GPL vmlinux 0x3f212f3b event_triggers_call +EXPORT_SYMBOL_GPL vmlinux 0x3f623627 sata_link_scr_lpm +EXPORT_SYMBOL_GPL vmlinux 0x3f8c8434 reset_controller_unregister +EXPORT_SYMBOL_GPL vmlinux 0x3f912158 netlink_remove_tap +EXPORT_SYMBOL_GPL vmlinux 0x3fa5af9c nd_cmd_bus_desc +EXPORT_SYMBOL_GPL vmlinux 0x3fb14423 md_ack_all_badblocks +EXPORT_SYMBOL_GPL vmlinux 0x3fb5a66e tpm2_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x3fc72d3d __tracepoint_kfree_skb +EXPORT_SYMBOL_GPL vmlinux 0x3fdd6212 fib_table_lookup +EXPORT_SYMBOL_GPL vmlinux 0x3fef7431 register_kprobes +EXPORT_SYMBOL_GPL vmlinux 0x3ff0138e xhci_gen_setup +EXPORT_SYMBOL_GPL vmlinux 0x40073946 blkg_lookup +EXPORT_SYMBOL_GPL vmlinux 0x400b4b88 regmap_parse_val +EXPORT_SYMBOL_GPL vmlinux 0x400d65b4 kvm_vcpu_on_spin +EXPORT_SYMBOL_GPL vmlinux 0x40120b3e component_master_add_with_match +EXPORT_SYMBOL_GPL vmlinux 0x403c963c sysfs_chmod_file +EXPORT_SYMBOL_GPL vmlinux 0x403f9529 gpio_request_one +EXPORT_SYMBOL_GPL vmlinux 0x40424d9a nd_mapping_attribute_group +EXPORT_SYMBOL_GPL vmlinux 0x4045c494 filter_match_preds +EXPORT_SYMBOL_GPL vmlinux 0x4048613d inet6_hash_connect +EXPORT_SYMBOL_GPL vmlinux 0x405b83e6 fb_sys_read +EXPORT_SYMBOL_GPL vmlinux 0x406c4cb1 hrtimer_resolution +EXPORT_SYMBOL_GPL vmlinux 0x40adb9f1 spi_busnum_to_master +EXPORT_SYMBOL_GPL vmlinux 0x40af0dec ata_xfer_mode2mask +EXPORT_SYMBOL_GPL vmlinux 0x40b021f2 trace_event_buffer_lock_reserve +EXPORT_SYMBOL_GPL vmlinux 0x40ce1a6e fb_bl_default_curve +EXPORT_SYMBOL_GPL vmlinux 0x40d46b21 crypto_ft_tab +EXPORT_SYMBOL_GPL vmlinux 0x40f0683e reset_control_put +EXPORT_SYMBOL_GPL vmlinux 0x40f8330a thermal_zone_unbind_cooling_device +EXPORT_SYMBOL_GPL vmlinux 0x4128ee32 pskb_put +EXPORT_SYMBOL_GPL vmlinux 0x413f7e17 alarm_init +EXPORT_SYMBOL_GPL vmlinux 0x41691d77 device_show_int +EXPORT_SYMBOL_GPL vmlinux 0x417033e4 dev_pm_opp_find_freq_floor +EXPORT_SYMBOL_GPL vmlinux 0x41760aa7 dummy_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0x41814c71 devm_usb_get_phy +EXPORT_SYMBOL_GPL vmlinux 0x41814cb8 dirty_writeback_interval +EXPORT_SYMBOL_GPL vmlinux 0x41b89942 sata_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x41cf7d69 cpufreq_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x41d417e0 blk_execute_rq_nowait +EXPORT_SYMBOL_GPL vmlinux 0x41df7e7a crypto_lookup_template +EXPORT_SYMBOL_GPL vmlinux 0x41e41d55 blk_trace_setup +EXPORT_SYMBOL_GPL vmlinux 0x41e6bfe2 wm831x_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0x41e8cf84 tps65912_clear_bits +EXPORT_SYMBOL_GPL vmlinux 0x41f8d7c2 __pci_reset_function_locked +EXPORT_SYMBOL_GPL vmlinux 0x420e9786 trace_seq_putmem_hex +EXPORT_SYMBOL_GPL vmlinux 0x42205dcb napi_by_id +EXPORT_SYMBOL_GPL vmlinux 0x422285f0 rtnl_link_register +EXPORT_SYMBOL_GPL vmlinux 0x4228a0ae of_get_nand_ecc_strength +EXPORT_SYMBOL_GPL vmlinux 0x423f8dcc init_dummy_netdev +EXPORT_SYMBOL_GPL vmlinux 0x424acc6d scatterwalk_done +EXPORT_SYMBOL_GPL vmlinux 0x425abd5f unregister_kretprobes +EXPORT_SYMBOL_GPL vmlinux 0x42825ce2 rcu_scheduler_active +EXPORT_SYMBOL_GPL vmlinux 0x42920be5 da903x_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0x42deeb8a pci_disable_sriov +EXPORT_SYMBOL_GPL vmlinux 0x431bf93c wm5110_irq +EXPORT_SYMBOL_GPL vmlinux 0x4340990f irq_domain_xlate_onetwocell +EXPORT_SYMBOL_GPL vmlinux 0x43472bc1 led_trigger_remove +EXPORT_SYMBOL_GPL vmlinux 0x43490b16 __inet_hash_nolisten +EXPORT_SYMBOL_GPL vmlinux 0x4352ee58 __dma_request_channel +EXPORT_SYMBOL_GPL vmlinux 0x43619e1a scatterwalk_ffwd +EXPORT_SYMBOL_GPL vmlinux 0x43969dbe rh_alloc_fixed +EXPORT_SYMBOL_GPL vmlinux 0x43a4f122 ehci_reset +EXPORT_SYMBOL_GPL vmlinux 0x43a53735 __alloc_workqueue_key +EXPORT_SYMBOL_GPL vmlinux 0x43b466b0 gfn_to_pfn_memslot_atomic +EXPORT_SYMBOL_GPL vmlinux 0x43f067fb dev_pm_qos_remove_notifier +EXPORT_SYMBOL_GPL vmlinux 0x43f56e82 ata_xfer_mode2shift +EXPORT_SYMBOL_GPL vmlinux 0x43f81957 clk_round_rate +EXPORT_SYMBOL_GPL vmlinux 0x43fee1e7 rio_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x440f4a59 mpc8xxx_spi_rx_buf_u8 +EXPORT_SYMBOL_GPL vmlinux 0x448009cc pm_runtime_force_resume +EXPORT_SYMBOL_GPL vmlinux 0x4484a5a4 wait_for_device_probe +EXPORT_SYMBOL_GPL vmlinux 0x449c52c1 of_pci_msi_chip_remove +EXPORT_SYMBOL_GPL vmlinux 0x44c9051d sata_pmp_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x44ce3f8e pstore_register +EXPORT_SYMBOL_GPL vmlinux 0x44cea0c4 ping_getfrag +EXPORT_SYMBOL_GPL vmlinux 0x44d54cb1 kvmppc_hv_ops +EXPORT_SYMBOL_GPL vmlinux 0x44ec0c27 regmap_field_alloc +EXPORT_SYMBOL_GPL vmlinux 0x44ff39ee tcp_set_state +EXPORT_SYMBOL_GPL vmlinux 0x450fb522 kmsg_dump_get_buffer +EXPORT_SYMBOL_GPL vmlinux 0x451bb6fc fixed_phy_register +EXPORT_SYMBOL_GPL vmlinux 0x451dbb5a inet_twsk_schedule +EXPORT_SYMBOL_GPL vmlinux 0x453ef5a1 bus_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x456b349f skb_splice_bits +EXPORT_SYMBOL_GPL vmlinux 0x456ed70c tcp_cong_avoid_ai +EXPORT_SYMBOL_GPL vmlinux 0x457594fa crypto_alg_list +EXPORT_SYMBOL_GPL vmlinux 0x458eaa2f call_srcu +EXPORT_SYMBOL_GPL vmlinux 0x45bdedda security_inode_setattr +EXPORT_SYMBOL_GPL vmlinux 0x45bf1ff3 crypto_inc +EXPORT_SYMBOL_GPL vmlinux 0x45bfa0ad sdio_memcpy_toio +EXPORT_SYMBOL_GPL vmlinux 0x45c5d4e7 zap_vma_ptes +EXPORT_SYMBOL_GPL vmlinux 0x45ef1683 ehci_hub_control +EXPORT_SYMBOL_GPL vmlinux 0x46013233 net_dec_ingress_queue +EXPORT_SYMBOL_GPL vmlinux 0x460f7531 wait_rcu_gp +EXPORT_SYMBOL_GPL vmlinux 0x461a9b28 crypto_hash_walk_first +EXPORT_SYMBOL_GPL vmlinux 0x462f49c6 rio_mport_write_config_8 +EXPORT_SYMBOL_GPL vmlinux 0x463d24ea ipv6_fixup_options +EXPORT_SYMBOL_GPL vmlinux 0x4659ba1f regulator_is_supported_voltage +EXPORT_SYMBOL_GPL vmlinux 0x466392a8 ata_sff_check_status +EXPORT_SYMBOL_GPL vmlinux 0x46647178 hrtimer_init +EXPORT_SYMBOL_GPL vmlinux 0x4672e88b __crypto_dequeue_request +EXPORT_SYMBOL_GPL vmlinux 0x467ed9dc transport_setup_device +EXPORT_SYMBOL_GPL vmlinux 0x46867927 ablkcipher_walk_phys +EXPORT_SYMBOL_GPL vmlinux 0x4688c96a usb_scuttle_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x4688d7ec pvclock_gtod_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x469143c4 x509_free_certificate +EXPORT_SYMBOL_GPL vmlinux 0x46a0c09e devm_extcon_dev_allocate +EXPORT_SYMBOL_GPL vmlinux 0x46bcd24e dev_pm_qos_add_request +EXPORT_SYMBOL_GPL vmlinux 0x46c04d1c ping_queue_rcv_skb +EXPORT_SYMBOL_GPL vmlinux 0x46c2eefd clk_register_fractional_divider +EXPORT_SYMBOL_GPL vmlinux 0x46cb2658 kernel_kobj +EXPORT_SYMBOL_GPL vmlinux 0x46ce8fca bsg_request_fn +EXPORT_SYMBOL_GPL vmlinux 0x46f0f3ca tcp_fetch_timewait_stamp +EXPORT_SYMBOL_GPL vmlinux 0x47049e33 dev_attr_sw_activity +EXPORT_SYMBOL_GPL vmlinux 0x470fce1b sdio_memcpy_fromio +EXPORT_SYMBOL_GPL vmlinux 0x471414d8 dev_pm_enable_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0x471824e9 usb_queue_reset_device +EXPORT_SYMBOL_GPL vmlinux 0x47229b5c gpio_request +EXPORT_SYMBOL_GPL vmlinux 0x473d12ee __gpiod_get_index +EXPORT_SYMBOL_GPL vmlinux 0x474277f2 debugfs_create_x8 +EXPORT_SYMBOL_GPL vmlinux 0x47571cda bus_find_device +EXPORT_SYMBOL_GPL vmlinux 0x4761f17c register_netevent_notifier +EXPORT_SYMBOL_GPL vmlinux 0x47797577 irq_domain_associate +EXPORT_SYMBOL_GPL vmlinux 0x47884890 system_power_efficient_wq +EXPORT_SYMBOL_GPL vmlinux 0x47aad3b9 have_governor_per_policy +EXPORT_SYMBOL_GPL vmlinux 0x47cdb063 regmap_multi_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x47de0dc7 clk_unregister_mux +EXPORT_SYMBOL_GPL vmlinux 0x4800650f ata_sff_busy_sleep +EXPORT_SYMBOL_GPL vmlinux 0x480cbcab regmap_init +EXPORT_SYMBOL_GPL vmlinux 0x481c2cb0 look_up_OID +EXPORT_SYMBOL_GPL vmlinux 0x482f4902 spi_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x484eb70d inet_csk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x485a0505 of_get_regulator_init_data +EXPORT_SYMBOL_GPL vmlinux 0x485cd7f6 kvm_rebooting +EXPORT_SYMBOL_GPL vmlinux 0x4868c3b4 rcu_batches_started_bh +EXPORT_SYMBOL_GPL vmlinux 0x487c5d33 nf_log_buf_add +EXPORT_SYMBOL_GPL vmlinux 0x487d8ac7 devm_free_pages +EXPORT_SYMBOL_GPL vmlinux 0x488e6278 usb_hcd_amd_remote_wakeup_quirk +EXPORT_SYMBOL_GPL vmlinux 0x48919a9b ata_host_start +EXPORT_SYMBOL_GPL vmlinux 0x48a8838f usb_register_device_driver +EXPORT_SYMBOL_GPL vmlinux 0x48b7c201 dev_pm_qos_expose_latency_limit +EXPORT_SYMBOL_GPL vmlinux 0x48d8c826 rdev_get_dev +EXPORT_SYMBOL_GPL vmlinux 0x48e6d87c virtqueue_poll +EXPORT_SYMBOL_GPL vmlinux 0x48e7c0a5 usb_gen_phy_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x49105849 pci_restore_ats_state +EXPORT_SYMBOL_GPL vmlinux 0x4921a5aa input_class +EXPORT_SYMBOL_GPL vmlinux 0x492e4fca irq_create_of_mapping +EXPORT_SYMBOL_GPL vmlinux 0x4937a329 tty_port_install +EXPORT_SYMBOL_GPL vmlinux 0x4939584b pcibios_claim_one_bus +EXPORT_SYMBOL_GPL vmlinux 0x493a7290 ata_pci_sff_activate_host +EXPORT_SYMBOL_GPL vmlinux 0x493d96f7 clk_register_mux +EXPORT_SYMBOL_GPL vmlinux 0x495040a7 extcon_get_cable_state_ +EXPORT_SYMBOL_GPL vmlinux 0x49820386 ip6_local_out +EXPORT_SYMBOL_GPL vmlinux 0x498d293a trace_buffer_unlock_commit +EXPORT_SYMBOL_GPL vmlinux 0x499043d3 crypto_init_queue +EXPORT_SYMBOL_GPL vmlinux 0x4990a8e5 irq_domain_simple_ops +EXPORT_SYMBOL_GPL vmlinux 0x4990ff9f spi_master_suspend +EXPORT_SYMBOL_GPL vmlinux 0x499581c0 regulator_set_bypass_regmap +EXPORT_SYMBOL_GPL vmlinux 0x49bf75cf of_phy_provider_unregister +EXPORT_SYMBOL_GPL vmlinux 0x49e0b0cf kvm_irq_has_notifier +EXPORT_SYMBOL_GPL vmlinux 0x49e96999 cond_synchronize_rcu +EXPORT_SYMBOL_GPL vmlinux 0x49ee3af8 devm_extcon_dev_free +EXPORT_SYMBOL_GPL vmlinux 0x49f4abca nvdimm_name +EXPORT_SYMBOL_GPL vmlinux 0x49f57bbc device_store_ulong +EXPORT_SYMBOL_GPL vmlinux 0x4a1c8297 handle_simple_irq +EXPORT_SYMBOL_GPL vmlinux 0x4a1d6c8d scsi_eh_ready_devs +EXPORT_SYMBOL_GPL vmlinux 0x4a329e58 spi_write_then_read +EXPORT_SYMBOL_GPL vmlinux 0x4a366c4f init_user_ns +EXPORT_SYMBOL_GPL vmlinux 0x4a4350ea cpufreq_cooling_unregister +EXPORT_SYMBOL_GPL vmlinux 0x4a56acf0 net_ns_type_operations +EXPORT_SYMBOL_GPL vmlinux 0x4a63fa17 ata_sff_tf_read +EXPORT_SYMBOL_GPL vmlinux 0x4a8460ae sdhci_pci_o2_probe +EXPORT_SYMBOL_GPL vmlinux 0x4a8742ac pm_runtime_forbid +EXPORT_SYMBOL_GPL vmlinux 0x4a90160e bprintf +EXPORT_SYMBOL_GPL vmlinux 0x4a9ec47e exportfs_encode_inode_fh +EXPORT_SYMBOL_GPL vmlinux 0x4aa5b99d tps6586x_update +EXPORT_SYMBOL_GPL vmlinux 0x4aadeb9a ring_buffer_alloc_read_page +EXPORT_SYMBOL_GPL vmlinux 0x4aceb908 crypto_shash_update +EXPORT_SYMBOL_GPL vmlinux 0x4addb41e of_cpufreq_cooling_register +EXPORT_SYMBOL_GPL vmlinux 0x4ae034c3 dev_attr_em_message +EXPORT_SYMBOL_GPL vmlinux 0x4ae32c4c __ip6_local_out +EXPORT_SYMBOL_GPL vmlinux 0x4ae8c705 list_lru_count_node +EXPORT_SYMBOL_GPL vmlinux 0x4af0bcb1 pci_max_pasids +EXPORT_SYMBOL_GPL vmlinux 0x4b1b958c request_firmware_direct +EXPORT_SYMBOL_GPL vmlinux 0x4b1ef287 usb_put_intf +EXPORT_SYMBOL_GPL vmlinux 0x4b2f1599 alarm_forward +EXPORT_SYMBOL_GPL vmlinux 0x4b2f5c78 gpiochip_remove +EXPORT_SYMBOL_GPL vmlinux 0x4b4e139a tty_buffer_lock_exclusive +EXPORT_SYMBOL_GPL vmlinux 0x4b58983e led_sysfs_disable +EXPORT_SYMBOL_GPL vmlinux 0x4b746388 regcache_sync_region +EXPORT_SYMBOL_GPL vmlinux 0x4b94fc21 get_net_ns_by_pid +EXPORT_SYMBOL_GPL vmlinux 0x4b98827c rh_init +EXPORT_SYMBOL_GPL vmlinux 0x4bb4d033 shmem_get_seals +EXPORT_SYMBOL_GPL vmlinux 0x4bf1100f spi_finalize_current_transfer +EXPORT_SYMBOL_GPL vmlinux 0x4c0a9737 get_governor_parent_kobj +EXPORT_SYMBOL_GPL vmlinux 0x4c114ced mmc_get_ext_csd +EXPORT_SYMBOL_GPL vmlinux 0x4c16a37a debugfs_create_x16 +EXPORT_SYMBOL_GPL vmlinux 0x4c198aa3 class_compat_remove_link +EXPORT_SYMBOL_GPL vmlinux 0x4c2aba9f of_property_read_u32_array +EXPORT_SYMBOL_GPL vmlinux 0x4c32e1aa devm_mdiobus_alloc_size +EXPORT_SYMBOL_GPL vmlinux 0x4c491284 md_rdev_init +EXPORT_SYMBOL_GPL vmlinux 0x4c602bf1 __blkg_release_rcu +EXPORT_SYMBOL_GPL vmlinux 0x4c645f9e static_key_slow_dec_deferred +EXPORT_SYMBOL_GPL vmlinux 0x4c6b137f debugfs_create_u32 +EXPORT_SYMBOL_GPL vmlinux 0x4c759827 byte_rev_table +EXPORT_SYMBOL_GPL vmlinux 0x4c84eb78 devm_pwm_put +EXPORT_SYMBOL_GPL vmlinux 0x4cb4e0f1 blk_trace_remove +EXPORT_SYMBOL_GPL vmlinux 0x4cc3145f tty_buffer_set_limit +EXPORT_SYMBOL_GPL vmlinux 0x4ceae17c max8997_update_reg +EXPORT_SYMBOL_GPL vmlinux 0x4d0015a3 devm_rtc_device_register +EXPORT_SYMBOL_GPL vmlinux 0x4d272e02 ata_scsi_simulate +EXPORT_SYMBOL_GPL vmlinux 0x4d386616 regulator_count_voltages +EXPORT_SYMBOL_GPL vmlinux 0x4d542625 blkcipher_walk_virt_block +EXPORT_SYMBOL_GPL vmlinux 0x4d6eba62 register_pernet_subsys +EXPORT_SYMBOL_GPL vmlinux 0x4d81d649 regulator_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x4d95ee1d __clk_mux_determine_rate +EXPORT_SYMBOL_GPL vmlinux 0x4da2f5da relay_switch_subbuf +EXPORT_SYMBOL_GPL vmlinux 0x4dbd5c4c i2c_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0x4dc3e20c rtnl_af_register +EXPORT_SYMBOL_GPL vmlinux 0x4dd92994 __pneigh_lookup +EXPORT_SYMBOL_GPL vmlinux 0x4de17ab3 usb_state_string +EXPORT_SYMBOL_GPL vmlinux 0x4de1b7b1 devm_power_supply_get_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0x4dec223c tty_wakeup +EXPORT_SYMBOL_GPL vmlinux 0x4e109192 ring_buffer_entries +EXPORT_SYMBOL_GPL vmlinux 0x4e242f5f pstore_cannot_block_path +EXPORT_SYMBOL_GPL vmlinux 0x4e2c609f dev_pm_domain_attach +EXPORT_SYMBOL_GPL vmlinux 0x4e360c96 sock_diag_register_inet_compat +EXPORT_SYMBOL_GPL vmlinux 0x4e39e35c scsi_autopm_put_device +EXPORT_SYMBOL_GPL vmlinux 0x4e4b361c crypto_unregister_ahash +EXPORT_SYMBOL_GPL vmlinux 0x4eafaf18 nd_blk_region_to_dimm +EXPORT_SYMBOL_GPL vmlinux 0x4eb97765 ata_sff_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x4ed90e0c serial8250_handle_irq +EXPORT_SYMBOL_GPL vmlinux 0x4ef5bcf4 perf_swevent_get_recursion_context +EXPORT_SYMBOL_GPL vmlinux 0x4f020dee public_key_verify_signature +EXPORT_SYMBOL_GPL vmlinux 0x4f044a54 gpiod_get_raw_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x4f572bfc cpufreq_cpu_get +EXPORT_SYMBOL_GPL vmlinux 0x4f5b7b01 wm8997_irq +EXPORT_SYMBOL_GPL vmlinux 0x4f6a07fe show_rcu_gp_kthreads +EXPORT_SYMBOL_GPL vmlinux 0x4f820e32 scsi_schedule_eh +EXPORT_SYMBOL_GPL vmlinux 0x4f844073 regulator_set_current_limit +EXPORT_SYMBOL_GPL vmlinux 0x4f9321e5 dev_attr_unload_heads +EXPORT_SYMBOL_GPL vmlinux 0x4f9eaf5f use_mm +EXPORT_SYMBOL_GPL vmlinux 0x4fa52b13 kvmppc_emulate_instruction +EXPORT_SYMBOL_GPL vmlinux 0x4fabad59 virtqueue_get_used +EXPORT_SYMBOL_GPL vmlinux 0x4fbd7df8 usb_poison_urb +EXPORT_SYMBOL_GPL vmlinux 0x4fbfbe7a regulator_bulk_force_disable +EXPORT_SYMBOL_GPL vmlinux 0x4fd4e89d ring_buffer_empty_cpu +EXPORT_SYMBOL_GPL vmlinux 0x4fdc945d sata_deb_timing_normal +EXPORT_SYMBOL_GPL vmlinux 0x4fe1eddf unregister_netevent_notifier +EXPORT_SYMBOL_GPL vmlinux 0x502421d8 blk_rq_err_bytes +EXPORT_SYMBOL_GPL vmlinux 0x502ca721 of_dma_configure +EXPORT_SYMBOL_GPL vmlinux 0x50347a96 kvm_put_kvm +EXPORT_SYMBOL_GPL vmlinux 0x50605fed __irq_domain_add +EXPORT_SYMBOL_GPL vmlinux 0x506d9528 crypto_grab_aead +EXPORT_SYMBOL_GPL vmlinux 0x506f699f of_prop_next_string +EXPORT_SYMBOL_GPL vmlinux 0x5073a430 device_reset +EXPORT_SYMBOL_GPL vmlinux 0x5086ac3a alg_test +EXPORT_SYMBOL_GPL vmlinux 0x5087a03e driver_find +EXPORT_SYMBOL_GPL vmlinux 0x5091b823 ring_buffer_read_start +EXPORT_SYMBOL_GPL vmlinux 0x509655c2 of_clk_src_onecell_get +EXPORT_SYMBOL_GPL vmlinux 0x50ac5e81 usb_hcd_giveback_urb +EXPORT_SYMBOL_GPL vmlinux 0x50b28045 virtqueue_enable_cb_delayed +EXPORT_SYMBOL_GPL vmlinux 0x50d103d2 da9055_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0x50e42247 device_create_with_groups +EXPORT_SYMBOL_GPL vmlinux 0x50e7193a __i2c_first_dynamic_bus_num +EXPORT_SYMBOL_GPL vmlinux 0x50ed36de gpiod_to_chip +EXPORT_SYMBOL_GPL vmlinux 0x50fad434 round_jiffies_up +EXPORT_SYMBOL_GPL vmlinux 0x51022cb9 nvdimm_bus_attribute_group +EXPORT_SYMBOL_GPL vmlinux 0x5127099f vfs_truncate +EXPORT_SYMBOL_GPL vmlinux 0x51353de8 regulator_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x513609b5 mpc8xxx_spi_tx_buf_u32 +EXPORT_SYMBOL_GPL vmlinux 0x514e9875 divider_get_val +EXPORT_SYMBOL_GPL vmlinux 0x517085fb platform_device_alloc +EXPORT_SYMBOL_GPL vmlinux 0x5175268d regulator_can_change_voltage +EXPORT_SYMBOL_GPL vmlinux 0x517aa881 pci_hp_remove_module_link +EXPORT_SYMBOL_GPL vmlinux 0x517fffd8 rio_mport_send_doorbell +EXPORT_SYMBOL_GPL vmlinux 0x51ab0215 vring_del_virtqueue +EXPORT_SYMBOL_GPL vmlinux 0x51b65a26 rtc_lock +EXPORT_SYMBOL_GPL vmlinux 0x51e1a181 dma_buf_vmap +EXPORT_SYMBOL_GPL vmlinux 0x5205e64d disable_kprobe +EXPORT_SYMBOL_GPL vmlinux 0x5210a5bf hsi_board_list +EXPORT_SYMBOL_GPL vmlinux 0x52130914 mpic_subsys +EXPORT_SYMBOL_GPL vmlinux 0x522f538b tpm_send +EXPORT_SYMBOL_GPL vmlinux 0x5239dd82 ata_base_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x52514b7c fat_time_unix2fat +EXPORT_SYMBOL_GPL vmlinux 0x525aec71 sdio_align_size +EXPORT_SYMBOL_GPL vmlinux 0x526fd807 devres_remove +EXPORT_SYMBOL_GPL vmlinux 0x5286c3b1 noop_backing_dev_info +EXPORT_SYMBOL_GPL vmlinux 0x528b45f7 blk_mq_cancel_requeue_work +EXPORT_SYMBOL_GPL vmlinux 0x52983376 arizona_request_irq +EXPORT_SYMBOL_GPL vmlinux 0x52e1b45b replace_page_cache_page +EXPORT_SYMBOL_GPL vmlinux 0x52f1c2b6 regmap_fields_update_bits +EXPORT_SYMBOL_GPL vmlinux 0x5306410e alarm_start_relative +EXPORT_SYMBOL_GPL vmlinux 0x5316c097 regmap_init_spi +EXPORT_SYMBOL_GPL vmlinux 0x53175f60 of_get_nand_on_flash_bbt +EXPORT_SYMBOL_GPL vmlinux 0x5327a7e5 put_pid +EXPORT_SYMBOL_GPL vmlinux 0x5335dd11 atomic_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x5345ad6e ata_sas_port_stop +EXPORT_SYMBOL_GPL vmlinux 0x53471589 bmp085_remove +EXPORT_SYMBOL_GPL vmlinux 0x53588bd4 skb_append_pagefrags +EXPORT_SYMBOL_GPL vmlinux 0x5358fc36 ring_buffer_discard_commit +EXPORT_SYMBOL_GPL vmlinux 0x53614269 get_cpu_idle_time_us +EXPORT_SYMBOL_GPL vmlinux 0x5365cdb5 sched_setscheduler +EXPORT_SYMBOL_GPL vmlinux 0x538342fc __pm_runtime_use_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0x5387a48d security_inode_mkdir +EXPORT_SYMBOL_GPL vmlinux 0x539ba60e debugfs_create_atomic_t +EXPORT_SYMBOL_GPL vmlinux 0x539ca23c usb_reset_device +EXPORT_SYMBOL_GPL vmlinux 0x53bc0383 of_dma_controller_free +EXPORT_SYMBOL_GPL vmlinux 0x540d0db7 regmap_get_reg_stride +EXPORT_SYMBOL_GPL vmlinux 0x541bd60a irq_work_run +EXPORT_SYMBOL_GPL vmlinux 0x54215db5 visitor64 +EXPORT_SYMBOL_GPL vmlinux 0x5425d145 bit_wait_timeout +EXPORT_SYMBOL_GPL vmlinux 0x54458b56 hrtimer_try_to_cancel +EXPORT_SYMBOL_GPL vmlinux 0x5460c8d8 fsnotify_get_cookie +EXPORT_SYMBOL_GPL vmlinux 0x546c5565 ppc_tb_freq +EXPORT_SYMBOL_GPL vmlinux 0x54740eb7 get_cpu_idle_time +EXPORT_SYMBOL_GPL vmlinux 0x547ed4ce wm5110_spi_regmap +EXPORT_SYMBOL_GPL vmlinux 0x548ba5fb __get_vm_area +EXPORT_SYMBOL_GPL vmlinux 0x548dc203 regmap_multi_reg_write_bypassed +EXPORT_SYMBOL_GPL vmlinux 0x549525ef handle_nested_irq +EXPORT_SYMBOL_GPL vmlinux 0x54a6d189 regulator_unregister +EXPORT_SYMBOL_GPL vmlinux 0x54cc107f disk_part_iter_next +EXPORT_SYMBOL_GPL vmlinux 0x54d46690 uart_parse_earlycon +EXPORT_SYMBOL_GPL vmlinux 0x54d9d759 gpiod_get_array +EXPORT_SYMBOL_GPL vmlinux 0x54df1a5f devm_extcon_dev_unregister +EXPORT_SYMBOL_GPL vmlinux 0x54df4fc9 mpc8xxx_spi_rx_buf_u32 +EXPORT_SYMBOL_GPL vmlinux 0x54fe4377 irq_domain_add_simple +EXPORT_SYMBOL_GPL vmlinux 0x5509d768 lp8788_update_bits +EXPORT_SYMBOL_GPL vmlinux 0x550fbf98 clk_mux_ops +EXPORT_SYMBOL_GPL vmlinux 0x55346207 irq_gc_mask_clr_bit +EXPORT_SYMBOL_GPL vmlinux 0x553b49a4 cpufreq_get_driver_data +EXPORT_SYMBOL_GPL vmlinux 0x553cb7d0 regulator_force_disable +EXPORT_SYMBOL_GPL vmlinux 0x55417264 unregister_vt_notifier +EXPORT_SYMBOL_GPL vmlinux 0x555e8233 dev_pm_opp_find_freq_ceil +EXPORT_SYMBOL_GPL vmlinux 0x556e4390 clk_get_rate +EXPORT_SYMBOL_GPL vmlinux 0x5572d206 usb_match_one_id +EXPORT_SYMBOL_GPL vmlinux 0x55784228 regmap_irq_get_virq +EXPORT_SYMBOL_GPL vmlinux 0x558c8b69 tpm_calc_ordinal_duration +EXPORT_SYMBOL_GPL vmlinux 0x558d0235 inet6_lookup +EXPORT_SYMBOL_GPL vmlinux 0x55a644de crypto_shash_finup +EXPORT_SYMBOL_GPL vmlinux 0x55b34ca0 gpiod_get_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x55b9fdec crypto_register_rng +EXPORT_SYMBOL_GPL vmlinux 0x55cbfe19 kobject_uevent +EXPORT_SYMBOL_GPL vmlinux 0x55f21f10 tcp_send_ack +EXPORT_SYMBOL_GPL vmlinux 0x55f2577b bd_unlink_disk_holder +EXPORT_SYMBOL_GPL vmlinux 0x5611cfed bmp085_probe +EXPORT_SYMBOL_GPL vmlinux 0x5612ed06 sched_setattr +EXPORT_SYMBOL_GPL vmlinux 0x5624ff1a tty_buffer_unlock_exclusive +EXPORT_SYMBOL_GPL vmlinux 0x562500cf sdhci_pci_o2_resume +EXPORT_SYMBOL_GPL vmlinux 0x56256e8a orderly_poweroff +EXPORT_SYMBOL_GPL vmlinux 0x562ec857 adp5520_read +EXPORT_SYMBOL_GPL vmlinux 0x56310925 regulator_mode_to_status +EXPORT_SYMBOL_GPL vmlinux 0x5651553d crypto_larval_lookup +EXPORT_SYMBOL_GPL vmlinux 0x565b6892 uuid_le_gen +EXPORT_SYMBOL_GPL vmlinux 0x566ba9cd device_for_each_child_reverse +EXPORT_SYMBOL_GPL vmlinux 0x56869339 __rio_local_read_config_8 +EXPORT_SYMBOL_GPL vmlinux 0x56886b19 scatterwalk_map +EXPORT_SYMBOL_GPL vmlinux 0x56890b6f devm_regmap_init_i2c +EXPORT_SYMBOL_GPL vmlinux 0x56a7ebec init_srcu_struct +EXPORT_SYMBOL_GPL vmlinux 0x56aafe3c devm_mdiobus_free +EXPORT_SYMBOL_GPL vmlinux 0x56ae5187 pcibios_scan_phb +EXPORT_SYMBOL_GPL vmlinux 0x56d697ce cpu_up +EXPORT_SYMBOL_GPL vmlinux 0x56d81ad8 inet_twsk_purge +EXPORT_SYMBOL_GPL vmlinux 0x56d978d9 inet_csk_reqsk_queue_hash_add +EXPORT_SYMBOL_GPL vmlinux 0x56e3dfe7 ping_seq_next +EXPORT_SYMBOL_GPL vmlinux 0x56e71d3c nvdimm_create +EXPORT_SYMBOL_GPL vmlinux 0x56e75d47 klist_node_attached +EXPORT_SYMBOL_GPL vmlinux 0x57153cc6 usb_string +EXPORT_SYMBOL_GPL vmlinux 0x57231f45 ring_buffer_record_on +EXPORT_SYMBOL_GPL vmlinux 0x574bc307 kvm_vcpu_gfn_to_pfn +EXPORT_SYMBOL_GPL vmlinux 0x574ed531 spi_get_next_queued_message +EXPORT_SYMBOL_GPL vmlinux 0x575c5f94 execute_in_process_context +EXPORT_SYMBOL_GPL vmlinux 0x575d6c9f phy_create_lookup +EXPORT_SYMBOL_GPL vmlinux 0x576c4255 devfreq_event_reset_event +EXPORT_SYMBOL_GPL vmlinux 0x5790e7a0 pci_unlock_rescan_remove +EXPORT_SYMBOL_GPL vmlinux 0x5795ca14 kvm_debugfs_dir +EXPORT_SYMBOL_GPL vmlinux 0x579e0bf5 rtnl_unregister_all +EXPORT_SYMBOL_GPL vmlinux 0x57c39727 kdb_register_flags +EXPORT_SYMBOL_GPL vmlinux 0x57c3ccb7 dm_noflush_suspending +EXPORT_SYMBOL_GPL vmlinux 0x57d1272a md_find_rdev_nr_rcu +EXPORT_SYMBOL_GPL vmlinux 0x57e0bcec crypto_grab_skcipher +EXPORT_SYMBOL_GPL vmlinux 0x581949e8 blk_update_request +EXPORT_SYMBOL_GPL vmlinux 0x58292e5f clk_fixed_factor_ops +EXPORT_SYMBOL_GPL vmlinux 0x584a1164 sock_prot_inuse_add +EXPORT_SYMBOL_GPL vmlinux 0x58776d32 tty_set_termios +EXPORT_SYMBOL_GPL vmlinux 0x588bb331 usb_control_msg +EXPORT_SYMBOL_GPL vmlinux 0x5892f832 release_pmc_hardware +EXPORT_SYMBOL_GPL vmlinux 0x58992e69 crypto_aead_type +EXPORT_SYMBOL_GPL vmlinux 0x589d2fc5 rt_mutex_lock +EXPORT_SYMBOL_GPL vmlinux 0x589e4569 syscon_regmap_lookup_by_pdevname +EXPORT_SYMBOL_GPL vmlinux 0x58df3890 pci_try_reset_bus +EXPORT_SYMBOL_GPL vmlinux 0x58e3c730 aead_geniv_free +EXPORT_SYMBOL_GPL vmlinux 0x58fe9409 rio_inb_pwrite_handler +EXPORT_SYMBOL_GPL vmlinux 0x59019100 bdev_read_page +EXPORT_SYMBOL_GPL vmlinux 0x590ae401 of_overlay_create +EXPORT_SYMBOL_GPL vmlinux 0x5915b4a7 gpiod_set_raw_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x593c4c97 inet_unhash +EXPORT_SYMBOL_GPL vmlinux 0x5945c462 cpu_add_dev_attr +EXPORT_SYMBOL_GPL vmlinux 0x5947cd89 platform_device_add +EXPORT_SYMBOL_GPL vmlinux 0x59502431 devm_kasprintf +EXPORT_SYMBOL_GPL vmlinux 0x5959af9f ata_wait_register +EXPORT_SYMBOL_GPL vmlinux 0x59664cea gfn_to_hva +EXPORT_SYMBOL_GPL vmlinux 0x596dcbc5 trace_event_reg +EXPORT_SYMBOL_GPL vmlinux 0x597c19d2 regmap_add_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0x5991db4e n_tty_inherit_ops +EXPORT_SYMBOL_GPL vmlinux 0x59a46f19 pci_device_is_present +EXPORT_SYMBOL_GPL vmlinux 0x59af0b72 kvm_release_page_dirty +EXPORT_SYMBOL_GPL vmlinux 0x59b2adbf input_ff_effect_from_user +EXPORT_SYMBOL_GPL vmlinux 0x59b2cd78 pci_add_dynid +EXPORT_SYMBOL_GPL vmlinux 0x59b33edf regulator_get_mode +EXPORT_SYMBOL_GPL vmlinux 0x59c5ac8e ata_do_eh +EXPORT_SYMBOL_GPL vmlinux 0x59d50b1f __of_phy_provider_register +EXPORT_SYMBOL_GPL vmlinux 0x59e2743e call_rcu_bh +EXPORT_SYMBOL_GPL vmlinux 0x59e8ec31 __blkg_prfill_u64 +EXPORT_SYMBOL_GPL vmlinux 0x59eae699 ring_buffer_read_prepare +EXPORT_SYMBOL_GPL vmlinux 0x59ff32b4 usb_sg_init +EXPORT_SYMBOL_GPL vmlinux 0x5a025aa7 pwm_set_polarity +EXPORT_SYMBOL_GPL vmlinux 0x5a160b54 locks_alloc_lock +EXPORT_SYMBOL_GPL vmlinux 0x5a1a02b0 pwm_enable +EXPORT_SYMBOL_GPL vmlinux 0x5a1e7b8f serial8250_release_dma +EXPORT_SYMBOL_GPL vmlinux 0x5a2a2a7e rio_unlock_device +EXPORT_SYMBOL_GPL vmlinux 0x5a446e5b devm_regmap_field_free +EXPORT_SYMBOL_GPL vmlinux 0x5a669d3e napi_hash_del +EXPORT_SYMBOL_GPL vmlinux 0x5a761951 wm8350_block_write +EXPORT_SYMBOL_GPL vmlinux 0x5a7bfe41 crypto_probing_notify +EXPORT_SYMBOL_GPL vmlinux 0x5a88f68e regulator_bulk_get +EXPORT_SYMBOL_GPL vmlinux 0x5ab5fc42 tty_encode_baud_rate +EXPORT_SYMBOL_GPL vmlinux 0x5ac627c2 gfn_to_page_many_atomic +EXPORT_SYMBOL_GPL vmlinux 0x5addab17 regulator_map_voltage_linear +EXPORT_SYMBOL_GPL vmlinux 0x5af0a3a0 crypto_init_shash_spawn +EXPORT_SYMBOL_GPL vmlinux 0x5b14b354 regulator_get_init_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x5b192fd4 regmap_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0x5b944cc3 md_stop +EXPORT_SYMBOL_GPL vmlinux 0x5bcdbdee kill_pid_info_as_cred +EXPORT_SYMBOL_GPL vmlinux 0x5bd0748f crypto_del_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x5bdbac4e rcu_unexpedite_gp +EXPORT_SYMBOL_GPL vmlinux 0x5bddfddd kvm_read_guest +EXPORT_SYMBOL_GPL vmlinux 0x5c0357ec __audit_inode_child +EXPORT_SYMBOL_GPL vmlinux 0x5c05cf5a __platform_driver_probe +EXPORT_SYMBOL_GPL vmlinux 0x5c22e238 device_del +EXPORT_SYMBOL_GPL vmlinux 0x5c49c01a devfreq_event_disable_edev +EXPORT_SYMBOL_GPL vmlinux 0x5c5a1b16 tick_broadcast_control +EXPORT_SYMBOL_GPL vmlinux 0x5c5eb3a6 perf_event_enable +EXPORT_SYMBOL_GPL vmlinux 0x5c603409 of_get_fb_videomode +EXPORT_SYMBOL_GPL vmlinux 0x5c77d0a7 stmpe_set_altfunc +EXPORT_SYMBOL_GPL vmlinux 0x5c9a7cc9 firmware_kobj +EXPORT_SYMBOL_GPL vmlinux 0x5c9dbbf8 i2c_generic_gpio_recovery +EXPORT_SYMBOL_GPL vmlinux 0x5cabdced dev_pm_qos_remove_global_notifier +EXPORT_SYMBOL_GPL vmlinux 0x5cb34e9c devres_close_group +EXPORT_SYMBOL_GPL vmlinux 0x5cc509a4 nsecs_to_jiffies +EXPORT_SYMBOL_GPL vmlinux 0x5cf8a882 __tracepoint_block_rq_remap +EXPORT_SYMBOL_GPL vmlinux 0x5cf9abb0 rtc_initialize_alarm +EXPORT_SYMBOL_GPL vmlinux 0x5d047154 devres_for_each_res +EXPORT_SYMBOL_GPL vmlinux 0x5d12e48f input_event_to_user +EXPORT_SYMBOL_GPL vmlinux 0x5d2e3fb6 anon_inode_getfile +EXPORT_SYMBOL_GPL vmlinux 0x5d38afbf ping_recvmsg +EXPORT_SYMBOL_GPL vmlinux 0x5d446dd8 blk_mq_request_started +EXPORT_SYMBOL_GPL vmlinux 0x5d4efdba blk_mq_free_hctx_request +EXPORT_SYMBOL_GPL vmlinux 0x5d7811c0 ata_sas_port_destroy +EXPORT_SYMBOL_GPL vmlinux 0x5d8a7594 bpf_prog_get +EXPORT_SYMBOL_GPL vmlinux 0x5d9d5c44 blkcg_deactivate_policy +EXPORT_SYMBOL_GPL vmlinux 0x5da67adc zs_compact +EXPORT_SYMBOL_GPL vmlinux 0x5db1c1d3 __tracepoint_block_split +EXPORT_SYMBOL_GPL vmlinux 0x5dbe6235 irq_alloc_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x5dc1368b sdev_evt_send +EXPORT_SYMBOL_GPL vmlinux 0x5dceb49e sysfs_remove_link +EXPORT_SYMBOL_GPL vmlinux 0x5dd724b1 pcibios_finish_adding_to_bus +EXPORT_SYMBOL_GPL vmlinux 0x5e00c5ab sdio_release_irq +EXPORT_SYMBOL_GPL vmlinux 0x5e2eca89 devfreq_event_add_edev +EXPORT_SYMBOL_GPL vmlinux 0x5e51cd74 swiotlb_nr_tbl +EXPORT_SYMBOL_GPL vmlinux 0x5e58503a cpufreq_register_governor +EXPORT_SYMBOL_GPL vmlinux 0x5ee7542e reserve_pmc_hardware +EXPORT_SYMBOL_GPL vmlinux 0x5ee82be7 gpiochip_irqchip_add +EXPORT_SYMBOL_GPL vmlinux 0x5eef8e3b blkg_conf_finish +EXPORT_SYMBOL_GPL vmlinux 0x5f1f8cd3 extcon_get_extcon_dev +EXPORT_SYMBOL_GPL vmlinux 0x5f226035 mod_delayed_work_on +EXPORT_SYMBOL_GPL vmlinux 0x5f3e86bb of_thermal_is_trip_valid +EXPORT_SYMBOL_GPL vmlinux 0x5f5056ed dev_pm_opp_init_cpufreq_table +EXPORT_SYMBOL_GPL vmlinux 0x5f6dfa4f ata_eh_freeze_port +EXPORT_SYMBOL_GPL vmlinux 0x5f79a98b __tracepoint_napi_poll +EXPORT_SYMBOL_GPL vmlinux 0x5fc1aa6d ata_qc_complete_multiple +EXPORT_SYMBOL_GPL vmlinux 0x5feb75c1 dm_get_table_device +EXPORT_SYMBOL_GPL vmlinux 0x6005787f fat_flush_inodes +EXPORT_SYMBOL_GPL vmlinux 0x60091316 clk_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x6039d0f0 regulator_bulk_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x603c03d9 __get_user_pages_fast +EXPORT_SYMBOL_GPL vmlinux 0x60467b06 btree_grim_visitor +EXPORT_SYMBOL_GPL vmlinux 0x6046ddcc ahash_attr_alg +EXPORT_SYMBOL_GPL vmlinux 0x60506751 unmap_kernel_range_noflush +EXPORT_SYMBOL_GPL vmlinux 0x6098a3b2 tcp_slow_start +EXPORT_SYMBOL_GPL vmlinux 0x60a13e90 rcu_barrier +EXPORT_SYMBOL_GPL vmlinux 0x60a32ea9 pm_power_off +EXPORT_SYMBOL_GPL vmlinux 0x60bb32e8 irq_set_chained_handler_and_data +EXPORT_SYMBOL_GPL vmlinux 0x60cca309 __srcu_read_lock +EXPORT_SYMBOL_GPL vmlinux 0x60d582cd ata_sff_dev_select +EXPORT_SYMBOL_GPL vmlinux 0x60de6344 i2c_adapter_type +EXPORT_SYMBOL_GPL vmlinux 0x60f0f825 __fat_fs_error +EXPORT_SYMBOL_GPL vmlinux 0x60f355c7 ata_sff_wait_after_reset +EXPORT_SYMBOL_GPL vmlinux 0x61003976 dma_buf_end_cpu_access +EXPORT_SYMBOL_GPL vmlinux 0x613e88ba wm5110_patch +EXPORT_SYMBOL_GPL vmlinux 0x61457c9b usb_driver_claim_interface +EXPORT_SYMBOL_GPL vmlinux 0x615be9ff udp6_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x618ee5c1 clockevents_register_device +EXPORT_SYMBOL_GPL vmlinux 0x619adae4 crypto_unregister_aead +EXPORT_SYMBOL_GPL vmlinux 0x61a90c54 klist_add_head +EXPORT_SYMBOL_GPL vmlinux 0x61b77232 ata_port_freeze +EXPORT_SYMBOL_GPL vmlinux 0x61fd6211 regulator_list_voltage_table +EXPORT_SYMBOL_GPL vmlinux 0x621b4fac mbox_free_channel +EXPORT_SYMBOL_GPL vmlinux 0x622c7922 register_oom_notifier +EXPORT_SYMBOL_GPL vmlinux 0x623896e9 debugfs_create_blob +EXPORT_SYMBOL_GPL vmlinux 0x623ef992 inet_csk_route_req +EXPORT_SYMBOL_GPL vmlinux 0x6243e8f8 tty_ldisc_deref +EXPORT_SYMBOL_GPL vmlinux 0x624f8101 devm_add_action +EXPORT_SYMBOL_GPL vmlinux 0x62519146 sdio_readb +EXPORT_SYMBOL_GPL vmlinux 0x62790af0 ata_sff_dev_classify +EXPORT_SYMBOL_GPL vmlinux 0x6282fea3 pci_cfg_access_lock +EXPORT_SYMBOL_GPL vmlinux 0x628cb7bb devm_phy_get +EXPORT_SYMBOL_GPL vmlinux 0x62c2b782 sock_prot_inuse_get +EXPORT_SYMBOL_GPL vmlinux 0x62df9d08 tps6586x_write +EXPORT_SYMBOL_GPL vmlinux 0x62e1306c sysfs_notify +EXPORT_SYMBOL_GPL vmlinux 0x62ed65b2 regulator_enable +EXPORT_SYMBOL_GPL vmlinux 0x630914d1 ip6_sk_dst_lookup_flow +EXPORT_SYMBOL_GPL vmlinux 0x630bb4cf regulator_disable_regmap +EXPORT_SYMBOL_GPL vmlinux 0x63150e06 clk_get_parent +EXPORT_SYMBOL_GPL vmlinux 0x633caf38 blk_lld_busy +EXPORT_SYMBOL_GPL vmlinux 0x6375c94b pwm_set_chip_data +EXPORT_SYMBOL_GPL vmlinux 0x637616dd regulator_is_enabled_regmap +EXPORT_SYMBOL_GPL vmlinux 0x638d530d __gpiod_get_index_optional +EXPORT_SYMBOL_GPL vmlinux 0x63bdbcb1 gpiod_get_array_optional +EXPORT_SYMBOL_GPL vmlinux 0x63c7cf11 inet_putpeer +EXPORT_SYMBOL_GPL vmlinux 0x63ca51ad crypto_aes_set_key +EXPORT_SYMBOL_GPL vmlinux 0x6410e160 ktime_mono_to_any +EXPORT_SYMBOL_GPL vmlinux 0x6418f522 inet6_csk_search_req +EXPORT_SYMBOL_GPL vmlinux 0x641f6d62 pci_create_slot +EXPORT_SYMBOL_GPL vmlinux 0x6428da4f rh_attach_region +EXPORT_SYMBOL_GPL vmlinux 0x643ce2f3 ip6_sk_redirect +EXPORT_SYMBOL_GPL vmlinux 0x643fa21b nd_region_provider_data +EXPORT_SYMBOL_GPL vmlinux 0x64453335 gpiod_get_direction +EXPORT_SYMBOL_GPL vmlinux 0x6446bad1 tty_port_link_device +EXPORT_SYMBOL_GPL vmlinux 0x645f565b of_css +EXPORT_SYMBOL_GPL vmlinux 0x645f6c9c usb_root_hub_lost_power +EXPORT_SYMBOL_GPL vmlinux 0x647aec20 of_pci_range_parser_init +EXPORT_SYMBOL_GPL vmlinux 0x6488e692 usb_gen_phy_init +EXPORT_SYMBOL_GPL vmlinux 0x64b5141e devres_release +EXPORT_SYMBOL_GPL vmlinux 0x64eac97f usb_free_coherent +EXPORT_SYMBOL_GPL vmlinux 0x64f53705 srcu_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0x651e002e ping_seq_stop +EXPORT_SYMBOL_GPL vmlinux 0x6520719e devm_phy_put +EXPORT_SYMBOL_GPL vmlinux 0x6524c3fb rtc_class_open +EXPORT_SYMBOL_GPL vmlinux 0x652aa6f2 __clocksource_register_scale +EXPORT_SYMBOL_GPL vmlinux 0x654bee94 task_cgroup_path +EXPORT_SYMBOL_GPL vmlinux 0x6568f19e reservation_object_get_fences_rcu +EXPORT_SYMBOL_GPL vmlinux 0x656ba6fd blk_abort_request +EXPORT_SYMBOL_GPL vmlinux 0x657ac5dc regulator_list_voltage +EXPORT_SYMBOL_GPL vmlinux 0x657e067b sysfs_create_link +EXPORT_SYMBOL_GPL vmlinux 0x65957678 bus_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0x65ad7db3 __clocksource_update_freq_scale +EXPORT_SYMBOL_GPL vmlinux 0x65b1f358 pci_find_ext_capability +EXPORT_SYMBOL_GPL vmlinux 0x65bbbc78 schedule_hrtimeout_range +EXPORT_SYMBOL_GPL vmlinux 0x65ccb6f0 call_netevent_notifiers +EXPORT_SYMBOL_GPL vmlinux 0x65f015b6 shash_ahash_finup +EXPORT_SYMBOL_GPL vmlinux 0x65fe808a ata_bmdma32_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x66025da8 posix_acl_default_xattr_handler +EXPORT_SYMBOL_GPL vmlinux 0x66099dde usb_get_dev +EXPORT_SYMBOL_GPL vmlinux 0x661601de sprint_symbol +EXPORT_SYMBOL_GPL vmlinux 0x661e087f posix_clock_unregister +EXPORT_SYMBOL_GPL vmlinux 0x6636c3c9 irq_set_vcpu_affinity +EXPORT_SYMBOL_GPL vmlinux 0x667d0cf0 pci_assign_unassigned_bridge_resources +EXPORT_SYMBOL_GPL vmlinux 0x668402aa crypto_put_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x669c617b crypto_ablkcipher_type +EXPORT_SYMBOL_GPL vmlinux 0x669da1fd kvm_set_pfn_dirty +EXPORT_SYMBOL_GPL vmlinux 0x66afb53b unix_table_lock +EXPORT_SYMBOL_GPL vmlinux 0x66c0edb0 spi_new_device +EXPORT_SYMBOL_GPL vmlinux 0x66c6b8a7 tcp_ca_get_name_by_key +EXPORT_SYMBOL_GPL vmlinux 0x66d8431d devm_power_supply_register_no_ws +EXPORT_SYMBOL_GPL vmlinux 0x66d87d38 symbol_put_addr +EXPORT_SYMBOL_GPL vmlinux 0x66f0a71d yield_to +EXPORT_SYMBOL_GPL vmlinux 0x66f952e0 fwnode_property_read_string +EXPORT_SYMBOL_GPL vmlinux 0x6719fdfe platform_device_add_resources +EXPORT_SYMBOL_GPL vmlinux 0x673dd262 xfrm_audit_state_replay_overflow +EXPORT_SYMBOL_GPL vmlinux 0x674e13e1 public_key_destroy +EXPORT_SYMBOL_GPL vmlinux 0x6754ac18 clk_get_parent_by_index +EXPORT_SYMBOL_GPL vmlinux 0x6777b7e9 rio_mport_class +EXPORT_SYMBOL_GPL vmlinux 0x678a4105 synchronize_srcu_expedited +EXPORT_SYMBOL_GPL vmlinux 0x67901542 tpm_do_selftest +EXPORT_SYMBOL_GPL vmlinux 0x67955ce6 profile_hits +EXPORT_SYMBOL_GPL vmlinux 0x67a3e6c7 cpci_hp_register_controller +EXPORT_SYMBOL_GPL vmlinux 0x67b3f715 ata_std_bios_param +EXPORT_SYMBOL_GPL vmlinux 0x67ba6a03 aead_register_instance +EXPORT_SYMBOL_GPL vmlinux 0x67d1aecf fib_rules_register +EXPORT_SYMBOL_GPL vmlinux 0x680fd90f usb_ep0_reinit +EXPORT_SYMBOL_GPL vmlinux 0x68386c95 bsg_register_queue +EXPORT_SYMBOL_GPL vmlinux 0x683fb09c blkcipher_aead_walk_virt_block +EXPORT_SYMBOL_GPL vmlinux 0x68439368 of_property_read_u64_array +EXPORT_SYMBOL_GPL vmlinux 0x68679f05 __ablkcipher_walk_complete +EXPORT_SYMBOL_GPL vmlinux 0x6880edba xfrm_local_error +EXPORT_SYMBOL_GPL vmlinux 0x688cabbe regulator_get +EXPORT_SYMBOL_GPL vmlinux 0x68a5dcdb regulator_disable_deferred +EXPORT_SYMBOL_GPL vmlinux 0x68a9c0a3 irq_set_affinity_notifier +EXPORT_SYMBOL_GPL vmlinux 0x68ea4c85 user_destroy +EXPORT_SYMBOL_GPL vmlinux 0x6921aa34 compat_put_timeval +EXPORT_SYMBOL_GPL vmlinux 0x6923ce63 irq_work_sync +EXPORT_SYMBOL_GPL vmlinux 0x692644ff wm8350_block_read +EXPORT_SYMBOL_GPL vmlinux 0x69447467 ring_buffer_write +EXPORT_SYMBOL_GPL vmlinux 0x6966b07a of_dma_get_range +EXPORT_SYMBOL_GPL vmlinux 0x696ff7fe ehci_setup +EXPORT_SYMBOL_GPL vmlinux 0x697262d4 tty_prepare_flip_string +EXPORT_SYMBOL_GPL vmlinux 0x697c5d0d tracing_snapshot_alloc +EXPORT_SYMBOL_GPL vmlinux 0x697cbbb4 threads_per_core +EXPORT_SYMBOL_GPL vmlinux 0x698570e0 find_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0x6986190a raw_seq_stop +EXPORT_SYMBOL_GPL vmlinux 0x698a899f ring_buffer_peek +EXPORT_SYMBOL_GPL vmlinux 0x698d3a82 crypto_attr_alg2 +EXPORT_SYMBOL_GPL vmlinux 0x69c70222 ipv4_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x69cf832d device_remove_bin_file +EXPORT_SYMBOL_GPL vmlinux 0x6a04be3b of_dma_is_coherent +EXPORT_SYMBOL_GPL vmlinux 0x6a0aac6d simple_attr_read +EXPORT_SYMBOL_GPL vmlinux 0x6a127dee dev_attr_link_power_management_policy +EXPORT_SYMBOL_GPL vmlinux 0x6a4f623b mmu_notifier_synchronize +EXPORT_SYMBOL_GPL vmlinux 0x6a5944df rtc_irq_register +EXPORT_SYMBOL_GPL vmlinux 0x6a5dd881 virtio_check_driver_offered_feature +EXPORT_SYMBOL_GPL vmlinux 0x6a5fb566 rcu_sched_force_quiescent_state +EXPORT_SYMBOL_GPL vmlinux 0x6a6cafd2 ring_buffer_read_page +EXPORT_SYMBOL_GPL vmlinux 0x6a7a54e9 rt_mutex_lock_interruptible +EXPORT_SYMBOL_GPL vmlinux 0x6a836077 of_platform_depopulate +EXPORT_SYMBOL_GPL vmlinux 0x6a8441be cpci_hp_start +EXPORT_SYMBOL_GPL vmlinux 0x6a9ab06a dax_do_io +EXPORT_SYMBOL_GPL vmlinux 0x6aa25ed9 unregister_kretprobe +EXPORT_SYMBOL_GPL vmlinux 0x6acb8d84 ppc64_caches +EXPORT_SYMBOL_GPL vmlinux 0x6b18e266 ata_eh_thaw_port +EXPORT_SYMBOL_GPL vmlinux 0x6b1f3d4e crypto_shoot_alg +EXPORT_SYMBOL_GPL vmlinux 0x6b227356 pwmchip_add_with_polarity +EXPORT_SYMBOL_GPL vmlinux 0x6b29a1fa ring_buffer_event_length +EXPORT_SYMBOL_GPL vmlinux 0x6b30c0db mmc_regulator_set_ocr +EXPORT_SYMBOL_GPL vmlinux 0x6b35cc7f usb_autopm_get_interface +EXPORT_SYMBOL_GPL vmlinux 0x6b3b9097 sock_diag_put_meminfo +EXPORT_SYMBOL_GPL vmlinux 0x6b48a910 switch_booke_debug_regs +EXPORT_SYMBOL_GPL vmlinux 0x6b6dba28 balloon_page_enqueue +EXPORT_SYMBOL_GPL vmlinux 0x6b75366a device_add +EXPORT_SYMBOL_GPL vmlinux 0x6b81c38b power_supply_unreg_notifier +EXPORT_SYMBOL_GPL vmlinux 0x6b93f546 of_phy_simple_xlate +EXPORT_SYMBOL_GPL vmlinux 0x6b9d87db kvm_vcpu_gfn_to_page +EXPORT_SYMBOL_GPL vmlinux 0x6bb28e78 kvm_write_guest_page +EXPORT_SYMBOL_GPL vmlinux 0x6bbef93c ata_pci_device_do_suspend +EXPORT_SYMBOL_GPL vmlinux 0x6bc555a9 bus_get_device_klist +EXPORT_SYMBOL_GPL vmlinux 0x6bc80d50 subsys_dev_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x6bd59225 rdev_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x6be6e9a2 usb_hcd_check_unlink_urb +EXPORT_SYMBOL_GPL vmlinux 0x6c023cf9 pci_try_reset_function +EXPORT_SYMBOL_GPL vmlinux 0x6c07d933 add_uevent_var +EXPORT_SYMBOL_GPL vmlinux 0x6c305afb max_gen_clk_remove +EXPORT_SYMBOL_GPL vmlinux 0x6c3a45ed register_pernet_device +EXPORT_SYMBOL_GPL vmlinux 0x6c3cc946 __inet_twsk_hashdance +EXPORT_SYMBOL_GPL vmlinux 0x6c3faae2 sock_diag_register +EXPORT_SYMBOL_GPL vmlinux 0x6c4b6684 reset_control_assert +EXPORT_SYMBOL_GPL vmlinux 0x6c5da820 devm_extcon_dev_register +EXPORT_SYMBOL_GPL vmlinux 0x6c7ec2d3 perf_event_read_value +EXPORT_SYMBOL_GPL vmlinux 0x6c81aff0 crypto_alloc_ablkcipher +EXPORT_SYMBOL_GPL vmlinux 0x6ca4bf88 async_synchronize_full_domain +EXPORT_SYMBOL_GPL vmlinux 0x6ca5b83b sata_std_hardreset +EXPORT_SYMBOL_GPL vmlinux 0x6cc2e49c __clk_determine_rate +EXPORT_SYMBOL_GPL vmlinux 0x6cd21997 ata_tf_to_fis +EXPORT_SYMBOL_GPL vmlinux 0x6cd3a9a7 of_get_nand_ecc_step_size +EXPORT_SYMBOL_GPL vmlinux 0x6d0462a4 rt_mutex_destroy +EXPORT_SYMBOL_GPL vmlinux 0x6d246754 of_clk_src_simple_get +EXPORT_SYMBOL_GPL vmlinux 0x6d2ee717 devm_rtc_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x6d2fc5a6 net_namespace_list +EXPORT_SYMBOL_GPL vmlinux 0x6d4bce05 i2c_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x6d63e4f1 regulator_get_bypass_regmap +EXPORT_SYMBOL_GPL vmlinux 0x6d8269a3 apply_to_page_range +EXPORT_SYMBOL_GPL vmlinux 0x6d9d2320 sdio_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x6dafee66 fat_scan +EXPORT_SYMBOL_GPL vmlinux 0x6dd114b8 pci_check_and_unmask_intx +EXPORT_SYMBOL_GPL vmlinux 0x6ddc02af nvdimm_bus_unregister +EXPORT_SYMBOL_GPL vmlinux 0x6de40e94 pm_schedule_suspend +EXPORT_SYMBOL_GPL vmlinux 0x6def380e kvm_vcpu_uninit +EXPORT_SYMBOL_GPL vmlinux 0x6e04a077 usb_bind_phy +EXPORT_SYMBOL_GPL vmlinux 0x6e0aa418 balloon_page_dequeue +EXPORT_SYMBOL_GPL vmlinux 0x6e1964ba pci_user_read_config_byte +EXPORT_SYMBOL_GPL vmlinux 0x6e379526 kernstart_addr +EXPORT_SYMBOL_GPL vmlinux 0x6e5ccf85 alarm_restart +EXPORT_SYMBOL_GPL vmlinux 0x6e5e5d3a ata_bmdma_port_start32 +EXPORT_SYMBOL_GPL vmlinux 0x6e7117a4 sata_pmp_qc_defer_cmd_switch +EXPORT_SYMBOL_GPL vmlinux 0x6e7fd3bf usb_anchor_urb +EXPORT_SYMBOL_GPL vmlinux 0x6e89a560 regmap_irq_chip_get_base +EXPORT_SYMBOL_GPL vmlinux 0x6ee0e35e _submit_bh +EXPORT_SYMBOL_GPL vmlinux 0x6ee89e6b of_scan_bus +EXPORT_SYMBOL_GPL vmlinux 0x6f1e5a34 usb_add_phy +EXPORT_SYMBOL_GPL vmlinux 0x6f1ee69e kgdb_unregister_io_module +EXPORT_SYMBOL_GPL vmlinux 0x6f86e4de usb_hcd_is_primary_hcd +EXPORT_SYMBOL_GPL vmlinux 0x6f945c8c __find_linux_pte_or_hugepte +EXPORT_SYMBOL_GPL vmlinux 0x6f9be1e8 power_supply_class +EXPORT_SYMBOL_GPL vmlinux 0x6faa6947 regmap_init_mmio_clk +EXPORT_SYMBOL_GPL vmlinux 0x6fae470b device_store_bool +EXPORT_SYMBOL_GPL vmlinux 0x6fae8ba2 vfs_kern_mount +EXPORT_SYMBOL_GPL vmlinux 0x6fb6dd01 ip4_datagram_release_cb +EXPORT_SYMBOL_GPL vmlinux 0x6fc2292e debugfs_create_u64 +EXPORT_SYMBOL_GPL vmlinux 0x6fcfc033 blk_rq_unprep_clone +EXPORT_SYMBOL_GPL vmlinux 0x6fd47a37 key_type_user +EXPORT_SYMBOL_GPL vmlinux 0x6fe3d8cf ktime_add_safe +EXPORT_SYMBOL_GPL vmlinux 0x6fe606c2 arizona_dev_init +EXPORT_SYMBOL_GPL vmlinux 0x6ff607b6 crypto_get_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x6fffdd49 dma_request_slave_channel +EXPORT_SYMBOL_GPL vmlinux 0x7028da1d arizona_set_irq_wake +EXPORT_SYMBOL_GPL vmlinux 0x702ef3cc tty_port_tty_wakeup +EXPORT_SYMBOL_GPL vmlinux 0x703af9e6 rhashtable_init +EXPORT_SYMBOL_GPL vmlinux 0x704a69ea crypto_shash_setkey +EXPORT_SYMBOL_GPL vmlinux 0x70568a31 gpiod_direction_input +EXPORT_SYMBOL_GPL vmlinux 0x7056b6f2 __clk_get_name +EXPORT_SYMBOL_GPL vmlinux 0x705f0d12 virtqueue_detach_unused_buf +EXPORT_SYMBOL_GPL vmlinux 0x70631cb4 phy_get +EXPORT_SYMBOL_GPL vmlinux 0x706a46dd platform_device_del +EXPORT_SYMBOL_GPL vmlinux 0x707ff1bb ata_xfer_mask2mode +EXPORT_SYMBOL_GPL vmlinux 0x7098ec76 blkio_cgrp_subsys +EXPORT_SYMBOL_GPL vmlinux 0x70c55043 blkcg_root +EXPORT_SYMBOL_GPL vmlinux 0x70cd3b93 ata_pci_sff_init_one +EXPORT_SYMBOL_GPL vmlinux 0x70cf032f usb_hcd_irq +EXPORT_SYMBOL_GPL vmlinux 0x70d10ab6 __ata_change_queue_depth +EXPORT_SYMBOL_GPL vmlinux 0x70f41d32 usb_enable_intel_xhci_ports +EXPORT_SYMBOL_GPL vmlinux 0x70f83fda screen_glyph +EXPORT_SYMBOL_GPL vmlinux 0x710c73b6 crypto_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x714183c4 kick_process +EXPORT_SYMBOL_GPL vmlinux 0x71437b0d pid_nr_ns +EXPORT_SYMBOL_GPL vmlinux 0x71543d9e spi_bus_unlock +EXPORT_SYMBOL_GPL vmlinux 0x7159a06f platform_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x715f0349 ping_close +EXPORT_SYMBOL_GPL vmlinux 0x71621fe0 tcp_orphan_count +EXPORT_SYMBOL_GPL vmlinux 0x716265c7 debugfs_initialized +EXPORT_SYMBOL_GPL vmlinux 0x718a38f9 pci_ats_queue_depth +EXPORT_SYMBOL_GPL vmlinux 0x719e17ff clk_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0x71a511f3 devm_regulator_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x71a6da21 md_run +EXPORT_SYMBOL_GPL vmlinux 0x71a770d8 inet_ehash_locks_alloc +EXPORT_SYMBOL_GPL vmlinux 0x71abf685 ata_sas_port_suspend +EXPORT_SYMBOL_GPL vmlinux 0x71b47e69 fuse_get_req +EXPORT_SYMBOL_GPL vmlinux 0x71b4a521 xfrm_audit_state_replay +EXPORT_SYMBOL_GPL vmlinux 0x71b5168d sdio_set_block_size +EXPORT_SYMBOL_GPL vmlinux 0x71b5e6e3 fl6_sock_lookup +EXPORT_SYMBOL_GPL vmlinux 0x71c0b838 device_destroy +EXPORT_SYMBOL_GPL vmlinux 0x71c0de1f rtc_irq_set_state +EXPORT_SYMBOL_GPL vmlinux 0x71dc9998 crypto_il_tab +EXPORT_SYMBOL_GPL vmlinux 0x71e2dc51 regulator_get_voltage_sel_regmap +EXPORT_SYMBOL_GPL vmlinux 0x72041dfc ohci_suspend +EXPORT_SYMBOL_GPL vmlinux 0x721cd180 crypto_ahash_digest +EXPORT_SYMBOL_GPL vmlinux 0x722d8935 tps6586x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x723624ce cpufreq_cooling_register +EXPORT_SYMBOL_GPL vmlinux 0x723bab2d regulator_set_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x725d8825 __module_text_address +EXPORT_SYMBOL_GPL vmlinux 0x72622139 ata_bmdma_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x726ec6e5 fuse_do_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x72741f25 trace_vbprintk +EXPORT_SYMBOL_GPL vmlinux 0x7278d328 all_vm_events +EXPORT_SYMBOL_GPL vmlinux 0x728116aa ata_sff_prereset +EXPORT_SYMBOL_GPL vmlinux 0x7297352b security_kernel_fw_from_file +EXPORT_SYMBOL_GPL vmlinux 0x72cc29a7 pm_runtime_allow +EXPORT_SYMBOL_GPL vmlinux 0x72e1d4e4 i2c_lock_adapter +EXPORT_SYMBOL_GPL vmlinux 0x72f47d20 alarm_forward_now +EXPORT_SYMBOL_GPL vmlinux 0x732e3333 x509_cert_parse +EXPORT_SYMBOL_GPL vmlinux 0x732ece95 eventfd_fget +EXPORT_SYMBOL_GPL vmlinux 0x73423843 cm_notify_event +EXPORT_SYMBOL_GPL vmlinux 0x73510609 fl6_update_dst +EXPORT_SYMBOL_GPL vmlinux 0x737c19c7 pci_enable_pri +EXPORT_SYMBOL_GPL vmlinux 0x737df6a1 wm831x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x739baa09 wm8350_reg_unlock +EXPORT_SYMBOL_GPL vmlinux 0x73a48b4a ata_sff_std_ports +EXPORT_SYMBOL_GPL vmlinux 0x73c2554f __iowrite64_copy +EXPORT_SYMBOL_GPL vmlinux 0x73c832f2 ata_dev_classify +EXPORT_SYMBOL_GPL vmlinux 0x73d69364 ring_buffer_change_overwrite +EXPORT_SYMBOL_GPL vmlinux 0x73dbd635 rio_request_mport_dma +EXPORT_SYMBOL_GPL vmlinux 0x73e8782b pci_common_swizzle +EXPORT_SYMBOL_GPL vmlinux 0x73fc286f kvm_release_page_clean +EXPORT_SYMBOL_GPL vmlinux 0x740e8037 ata_sas_sync_probe +EXPORT_SYMBOL_GPL vmlinux 0x74203c1a swiotlb_tbl_map_single +EXPORT_SYMBOL_GPL vmlinux 0x7421f8d3 kvm_read_guest_cached +EXPORT_SYMBOL_GPL vmlinux 0x743a165e ata_pack_xfermask +EXPORT_SYMBOL_GPL vmlinux 0x74569933 edac_subsys +EXPORT_SYMBOL_GPL vmlinux 0x7464ea38 dev_pm_qos_add_global_notifier +EXPORT_SYMBOL_GPL vmlinux 0x7470dc31 fat_getattr +EXPORT_SYMBOL_GPL vmlinux 0x748d801a pcap_adc_sync +EXPORT_SYMBOL_GPL vmlinux 0x74b5ea68 lcm_not_zero +EXPORT_SYMBOL_GPL vmlinux 0x74baf17a tracing_is_on +EXPORT_SYMBOL_GPL vmlinux 0x750232e1 wm831x_auxadc_read +EXPORT_SYMBOL_GPL vmlinux 0x75133f6e visitor128 +EXPORT_SYMBOL_GPL vmlinux 0x7522f3ba irq_modify_status +EXPORT_SYMBOL_GPL vmlinux 0x755ffd84 kvm_vcpu_yield_to +EXPORT_SYMBOL_GPL vmlinux 0x75657251 irq_setup_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x757b49d2 kmsg_dump_get_line +EXPORT_SYMBOL_GPL vmlinux 0x758a782e blk_fill_rwbs +EXPORT_SYMBOL_GPL vmlinux 0x75992bc6 usb_remove_phy +EXPORT_SYMBOL_GPL vmlinux 0x759de234 kvm_set_memory_region +EXPORT_SYMBOL_GPL vmlinux 0x75c351d4 ping_bind +EXPORT_SYMBOL_GPL vmlinux 0x75c66b85 fsl_spi_cpm_irq +EXPORT_SYMBOL_GPL vmlinux 0x75f160a9 blkg_stat_recursive_sum +EXPORT_SYMBOL_GPL vmlinux 0x75f2a044 usb_wait_anchor_empty_timeout +EXPORT_SYMBOL_GPL vmlinux 0x75f8791b blk_queue_bypass_end +EXPORT_SYMBOL_GPL vmlinux 0x760bfa59 usb_autopm_get_interface_async +EXPORT_SYMBOL_GPL vmlinux 0x7620deee gpiod_set_raw_value +EXPORT_SYMBOL_GPL vmlinux 0x76280d04 nvdimm_pmem_region_create +EXPORT_SYMBOL_GPL vmlinux 0x762c0858 klist_prev +EXPORT_SYMBOL_GPL vmlinux 0x763386b6 ata_cable_80wire +EXPORT_SYMBOL_GPL vmlinux 0x7633b490 __rtnl_register +EXPORT_SYMBOL_GPL vmlinux 0x7642433e crypto_rng_reset +EXPORT_SYMBOL_GPL vmlinux 0x764c5cc8 device_property_read_u16_array +EXPORT_SYMBOL_GPL vmlinux 0x764cb33b cpuidle_get_cpu_driver +EXPORT_SYMBOL_GPL vmlinux 0x765ffa57 of_pci_dma_configure +EXPORT_SYMBOL_GPL vmlinux 0x76721c14 skb_pull_rcsum +EXPORT_SYMBOL_GPL vmlinux 0x7686ab51 pci_generic_config_write32 +EXPORT_SYMBOL_GPL vmlinux 0x768da026 rtnl_link_unregister +EXPORT_SYMBOL_GPL vmlinux 0x7690be71 gpio_to_desc +EXPORT_SYMBOL_GPL vmlinux 0x7690cefc pcibios_remove_pci_devices +EXPORT_SYMBOL_GPL vmlinux 0x76a98449 pci_bus_sem +EXPORT_SYMBOL_GPL vmlinux 0x76d9b876 clk_set_rate +EXPORT_SYMBOL_GPL vmlinux 0x76fcb0cc cpu_subsys +EXPORT_SYMBOL_GPL vmlinux 0x77023bcb irq_get_irq_data +EXPORT_SYMBOL_GPL vmlinux 0x7729cbdd task_handoff_register +EXPORT_SYMBOL_GPL vmlinux 0x773a97d0 of_reset_control_get +EXPORT_SYMBOL_GPL vmlinux 0x7754bc11 dm_hold +EXPORT_SYMBOL_GPL vmlinux 0x7757b51a clk_unregister +EXPORT_SYMBOL_GPL vmlinux 0x775eaec4 rt_mutex_timed_lock +EXPORT_SYMBOL_GPL vmlinux 0x77672918 inet6_csk_bind_conflict +EXPORT_SYMBOL_GPL vmlinux 0x7783eb56 pci_reset_slot +EXPORT_SYMBOL_GPL vmlinux 0x77921a34 scsi_internal_device_unblock +EXPORT_SYMBOL_GPL vmlinux 0x7793bde3 regmap_init_i2c +EXPORT_SYMBOL_GPL vmlinux 0x77b0ae1c bsg_job_done +EXPORT_SYMBOL_GPL vmlinux 0x77d273bc mpc8xxx_spi_rx_buf_u16 +EXPORT_SYMBOL_GPL vmlinux 0x77f590e4 of_usb_get_phy_mode +EXPORT_SYMBOL_GPL vmlinux 0x77f666de tracepoint_probe_register +EXPORT_SYMBOL_GPL vmlinux 0x78368c02 dev_pm_opp_get_freq +EXPORT_SYMBOL_GPL vmlinux 0x7862d61e tc3589x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x786db48d pci_bus_add_device +EXPORT_SYMBOL_GPL vmlinux 0x786e0943 ata_ehi_push_desc +EXPORT_SYMBOL_GPL vmlinux 0x787be0db crypto_alg_extsize +EXPORT_SYMBOL_GPL vmlinux 0x787c882b lzo1x_1_compress +EXPORT_SYMBOL_GPL vmlinux 0x789407d2 ata_bmdma_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x78ae8175 smp_call_function_single_async +EXPORT_SYMBOL_GPL vmlinux 0x78b670b5 fuse_request_send_background +EXPORT_SYMBOL_GPL vmlinux 0x78bd7dad unregister_net_sysctl_table +EXPORT_SYMBOL_GPL vmlinux 0x78c2de75 kobject_rename +EXPORT_SYMBOL_GPL vmlinux 0x78d93c3c __bpf_prog_free +EXPORT_SYMBOL_GPL vmlinux 0x78deda05 dev_pm_opp_remove +EXPORT_SYMBOL_GPL vmlinux 0x78f5deb3 virtqueue_add_sgs +EXPORT_SYMBOL_GPL vmlinux 0x79262ffa phy_pm_runtime_forbid +EXPORT_SYMBOL_GPL vmlinux 0x794122cc cpufreq_generic_init +EXPORT_SYMBOL_GPL vmlinux 0x7944e0fc tracing_off +EXPORT_SYMBOL_GPL vmlinux 0x79454976 md_do_sync +EXPORT_SYMBOL_GPL vmlinux 0x79463c45 ata_eh_analyze_ncq_error +EXPORT_SYMBOL_GPL vmlinux 0x7949d97d dev_pm_set_dedicated_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0x794b7271 orderly_reboot +EXPORT_SYMBOL_GPL vmlinux 0x795b6af0 synchronize_srcu +EXPORT_SYMBOL_GPL vmlinux 0x795e6b9d mbox_client_peek_data +EXPORT_SYMBOL_GPL vmlinux 0x796c2d48 dm_get_md +EXPORT_SYMBOL_GPL vmlinux 0x796c4e53 inet_csk_compat_getsockopt +EXPORT_SYMBOL_GPL vmlinux 0x798c69c5 __rio_local_write_config_8 +EXPORT_SYMBOL_GPL vmlinux 0x798e052c register_kretprobes +EXPORT_SYMBOL_GPL vmlinux 0x79a94113 sdio_readw +EXPORT_SYMBOL_GPL vmlinux 0x79ad058f class_create_file_ns +EXPORT_SYMBOL_GPL vmlinux 0x79b7d52c ata_link_offline +EXPORT_SYMBOL_GPL vmlinux 0x79c480da rh_dump +EXPORT_SYMBOL_GPL vmlinux 0x79defbe1 kthread_should_park +EXPORT_SYMBOL_GPL vmlinux 0x79dfd920 devfreq_event_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0x79f94b10 pci_enable_ats +EXPORT_SYMBOL_GPL vmlinux 0x7a0140b5 ip6_flush_pending_frames +EXPORT_SYMBOL_GPL vmlinux 0x7a01bd52 pci_find_next_capability +EXPORT_SYMBOL_GPL vmlinux 0x7a2e4b44 ezx_pcap_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x7a944007 rcu_idle_enter +EXPORT_SYMBOL_GPL vmlinux 0x7aa64803 kvm_release_pfn_clean +EXPORT_SYMBOL_GPL vmlinux 0x7aaf84bd __i2c_board_lock +EXPORT_SYMBOL_GPL vmlinux 0x7b0f1ab3 ring_buffer_free_read_page +EXPORT_SYMBOL_GPL vmlinux 0x7b1d544d edac_handler_set +EXPORT_SYMBOL_GPL vmlinux 0x7b37a452 __hvc_resize +EXPORT_SYMBOL_GPL vmlinux 0x7b6d3c63 bus_register +EXPORT_SYMBOL_GPL vmlinux 0x7b6fb290 crypto_alg_sem +EXPORT_SYMBOL_GPL vmlinux 0x7b70ed5c pm_qos_request_active +EXPORT_SYMBOL_GPL vmlinux 0x7b9b49e6 list_lru_walk_node +EXPORT_SYMBOL_GPL vmlinux 0x7bab4709 scsi_autopm_get_device +EXPORT_SYMBOL_GPL vmlinux 0x7bd6e7e1 regmap_raw_write_async +EXPORT_SYMBOL_GPL vmlinux 0x7be1c3f1 pci_ignore_hotplug +EXPORT_SYMBOL_GPL vmlinux 0x7c0fbb79 of_reconfig_get_state_change +EXPORT_SYMBOL_GPL vmlinux 0x7c346357 pkey_algo +EXPORT_SYMBOL_GPL vmlinux 0x7c3f9786 ipv6_find_tlv +EXPORT_SYMBOL_GPL vmlinux 0x7c978dc6 root_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x7c9a7371 clk_prepare +EXPORT_SYMBOL_GPL vmlinux 0x7ca6cd0c crypto_shash_digest +EXPORT_SYMBOL_GPL vmlinux 0x7cd6f042 cpufreq_get_current_driver +EXPORT_SYMBOL_GPL vmlinux 0x7cd935d1 crypto_unregister_shashes +EXPORT_SYMBOL_GPL vmlinux 0x7ceaf0d5 generic_handle_irq +EXPORT_SYMBOL_GPL vmlinux 0x7d00c65b nd_synchronize +EXPORT_SYMBOL_GPL vmlinux 0x7d170bd0 bd_link_disk_holder +EXPORT_SYMBOL_GPL vmlinux 0x7d58a743 md_rdev_clear +EXPORT_SYMBOL_GPL vmlinux 0x7d59dd46 pm_wq +EXPORT_SYMBOL_GPL vmlinux 0x7d61f778 key_set_timeout +EXPORT_SYMBOL_GPL vmlinux 0x7d6237cd usb_bulk_msg +EXPORT_SYMBOL_GPL vmlinux 0x7d84f8b6 devm_remove_action +EXPORT_SYMBOL_GPL vmlinux 0x7da7fcd2 ip_build_and_send_pkt +EXPORT_SYMBOL_GPL vmlinux 0x7dab26b6 wm831x_isinkv_values +EXPORT_SYMBOL_GPL vmlinux 0x7dda30af unregister_tracepoint_module_notifier +EXPORT_SYMBOL_GPL vmlinux 0x7ddb4606 __pm_runtime_suspend +EXPORT_SYMBOL_GPL vmlinux 0x7ddff049 phy_power_on +EXPORT_SYMBOL_GPL vmlinux 0x7e11cc7e find_get_pid +EXPORT_SYMBOL_GPL vmlinux 0x7e17ba7b klist_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0x7e2c1367 perf_event_create_kernel_counter +EXPORT_SYMBOL_GPL vmlinux 0x7e329b33 trace_event_raw_init +EXPORT_SYMBOL_GPL vmlinux 0x7e595416 platform_get_resource_byname +EXPORT_SYMBOL_GPL vmlinux 0x7e64181d usb_calc_bus_time +EXPORT_SYMBOL_GPL vmlinux 0x7e6780f8 dma_wait_for_async_tx +EXPORT_SYMBOL_GPL vmlinux 0x7e6bd243 kernfs_notify +EXPORT_SYMBOL_GPL vmlinux 0x7ea1a2bc probe_kernel_write +EXPORT_SYMBOL_GPL vmlinux 0x7ee88a87 component_add +EXPORT_SYMBOL_GPL vmlinux 0x7ef939a6 phy_pm_runtime_get +EXPORT_SYMBOL_GPL vmlinux 0x7f008202 btree_lookup +EXPORT_SYMBOL_GPL vmlinux 0x7f0396e3 usb_autopm_put_interface +EXPORT_SYMBOL_GPL vmlinux 0x7f0ae88d con_debug_enter +EXPORT_SYMBOL_GPL vmlinux 0x7f13d491 pm_qos_remove_request +EXPORT_SYMBOL_GPL vmlinux 0x7f50aafa input_ff_destroy +EXPORT_SYMBOL_GPL vmlinux 0x7f5293f2 rio_release_dma +EXPORT_SYMBOL_GPL vmlinux 0x7f70a006 shash_register_instance +EXPORT_SYMBOL_GPL vmlinux 0x7f7285e1 sysfs_update_group +EXPORT_SYMBOL_GPL vmlinux 0x7f7bc710 klist_next +EXPORT_SYMBOL_GPL vmlinux 0x7f908abc sdio_writew +EXPORT_SYMBOL_GPL vmlinux 0x7f9a9a15 blkcg_policy_register +EXPORT_SYMBOL_GPL vmlinux 0x7fa4623f cpufreq_generic_attr +EXPORT_SYMBOL_GPL vmlinux 0x7fc64127 blk_mq_freeze_queue +EXPORT_SYMBOL_GPL vmlinux 0x7fcd5935 devm_hwmon_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x7fd62de9 sysfs_remove_groups +EXPORT_SYMBOL_GPL vmlinux 0x7ffafa03 __ip_route_output_key +EXPORT_SYMBOL_GPL vmlinux 0x8003205f ping_proc_register +EXPORT_SYMBOL_GPL vmlinux 0x800548f9 fsl_spi_cpm_bufs_complete +EXPORT_SYMBOL_GPL vmlinux 0x802ae887 bitmap_load +EXPORT_SYMBOL_GPL vmlinux 0x8032e274 pwm_get +EXPORT_SYMBOL_GPL vmlinux 0x804c0b06 kobject_init_and_add +EXPORT_SYMBOL_GPL vmlinux 0x805ba17f usb_hcd_unmap_urb_setup_for_dma +EXPORT_SYMBOL_GPL vmlinux 0x80618717 __rio_local_write_config_16 +EXPORT_SYMBOL_GPL vmlinux 0x8065a4fc mmu_notifier_call_srcu +EXPORT_SYMBOL_GPL vmlinux 0x806bbd9f tcp_twsk_destructor +EXPORT_SYMBOL_GPL vmlinux 0x808acaf8 wait_for_stable_page +EXPORT_SYMBOL_GPL vmlinux 0x808ec1a3 crypto_alg_tested +EXPORT_SYMBOL_GPL vmlinux 0x809b36e1 devfreq_event_enable_edev +EXPORT_SYMBOL_GPL vmlinux 0x80c68137 nf_log_buf_close +EXPORT_SYMBOL_GPL vmlinux 0x80d3927f __tracepoint_block_unplug +EXPORT_SYMBOL_GPL vmlinux 0x80d5e57a mpi_free +EXPORT_SYMBOL_GPL vmlinux 0x80f3268f __trace_printk +EXPORT_SYMBOL_GPL vmlinux 0x8114467b cn_netlink_send_mult +EXPORT_SYMBOL_GPL vmlinux 0x8114b8d6 md_is_badblock +EXPORT_SYMBOL_GPL vmlinux 0x8115da4f relay_open +EXPORT_SYMBOL_GPL vmlinux 0x811dc334 usb_unregister_notify +EXPORT_SYMBOL_GPL vmlinux 0x811e1434 bdev_direct_access +EXPORT_SYMBOL_GPL vmlinux 0x8129c869 of_irq_parse_and_map_pci +EXPORT_SYMBOL_GPL vmlinux 0x8131072e register_trace_event +EXPORT_SYMBOL_GPL vmlinux 0x8149ea54 ata_timing_find_mode +EXPORT_SYMBOL_GPL vmlinux 0x815588a6 clk_enable +EXPORT_SYMBOL_GPL vmlinux 0x8180e591 ohci_restart +EXPORT_SYMBOL_GPL vmlinux 0x8186c460 dma_buf_kunmap_atomic +EXPORT_SYMBOL_GPL vmlinux 0x818caa3e nd_numa_attribute_group +EXPORT_SYMBOL_GPL vmlinux 0x81984d81 crypto_hash_walk_done +EXPORT_SYMBOL_GPL vmlinux 0x81a8fbf6 regcache_sync +EXPORT_SYMBOL_GPL vmlinux 0x81af4e21 ehci_handshake +EXPORT_SYMBOL_GPL vmlinux 0x81c4a51b out_of_line_wait_on_bit_timeout +EXPORT_SYMBOL_GPL vmlinux 0x81d2d845 fuse_direct_io +EXPORT_SYMBOL_GPL vmlinux 0x81e03909 regmap_fields_read +EXPORT_SYMBOL_GPL vmlinux 0x81ff829a driver_remove_file +EXPORT_SYMBOL_GPL vmlinux 0x820b54ec __udp4_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x8222bb75 fuse_conn_put +EXPORT_SYMBOL_GPL vmlinux 0x8222d059 devm_phy_optional_get +EXPORT_SYMBOL_GPL vmlinux 0x8223bcba __tracepoint_xhci_dbg_quirks +EXPORT_SYMBOL_GPL vmlinux 0x822c34a0 nvdimm_volatile_region_create +EXPORT_SYMBOL_GPL vmlinux 0x82378e31 debugfs_rename +EXPORT_SYMBOL_GPL vmlinux 0x82437c26 __platform_driver_register +EXPORT_SYMBOL_GPL vmlinux 0x824f134c crypto_alloc_shash +EXPORT_SYMBOL_GPL vmlinux 0x826ffc07 __udp6_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x828077ba crypto_register_algs +EXPORT_SYMBOL_GPL vmlinux 0x828d2d41 devm_devfreq_event_remove_edev +EXPORT_SYMBOL_GPL vmlinux 0x82c77057 device_attach +EXPORT_SYMBOL_GPL vmlinux 0x82d79b51 sysctl_vfs_cache_pressure +EXPORT_SYMBOL_GPL vmlinux 0x82e08018 dev_pm_domain_detach +EXPORT_SYMBOL_GPL vmlinux 0x8305f93c sata_scr_read +EXPORT_SYMBOL_GPL vmlinux 0x832b60d3 ip6_local_out_sk +EXPORT_SYMBOL_GPL vmlinux 0x834616bb sdev_evt_alloc +EXPORT_SYMBOL_GPL vmlinux 0x836ba52f __pm_runtime_disable +EXPORT_SYMBOL_GPL vmlinux 0x836d61d0 atomic_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0x8389d4bd sysfs_rename_link_ns +EXPORT_SYMBOL_GPL vmlinux 0x838b13e7 ring_buffer_free +EXPORT_SYMBOL_GPL vmlinux 0x83a27ced crypto_destroy_tfm +EXPORT_SYMBOL_GPL vmlinux 0x83af27a6 rhashtable_walk_exit +EXPORT_SYMBOL_GPL vmlinux 0x83bbe281 pci_enable_rom +EXPORT_SYMBOL_GPL vmlinux 0x83c4c6c5 dev_coredumpm +EXPORT_SYMBOL_GPL vmlinux 0x8410f77f ata_noop_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0x843588ef class_dev_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0x845df8fe pci_disable_pasid +EXPORT_SYMBOL_GPL vmlinux 0x8487a2b6 flush_work +EXPORT_SYMBOL_GPL vmlinux 0x848dc3cd nf_ipv6_ops +EXPORT_SYMBOL_GPL vmlinux 0x8499a347 gpiochip_free_own_desc +EXPORT_SYMBOL_GPL vmlinux 0x84bd1585 ftrace_set_notrace +EXPORT_SYMBOL_GPL vmlinux 0x84c4915d dev_pm_opp_free_cpufreq_table +EXPORT_SYMBOL_GPL vmlinux 0x84e4025e fat_get_dotdot_entry +EXPORT_SYMBOL_GPL vmlinux 0x84ef4e54 dev_pm_qos_remove_request +EXPORT_SYMBOL_GPL vmlinux 0x85050965 __irq_alloc_descs +EXPORT_SYMBOL_GPL vmlinux 0x8506baa8 clk_unregister_gate +EXPORT_SYMBOL_GPL vmlinux 0x85076861 rtc_alarm_irq_enable +EXPORT_SYMBOL_GPL vmlinux 0x850cfe88 max8997_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0x85216155 ezx_pcap_read +EXPORT_SYMBOL_GPL vmlinux 0x852777b2 xfrm_audit_policy_delete +EXPORT_SYMBOL_GPL vmlinux 0x853fe0de watchdog_register_device +EXPORT_SYMBOL_GPL vmlinux 0x8545ac53 tty_mode_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x855aabf8 led_stop_software_blink +EXPORT_SYMBOL_GPL vmlinux 0x857f6223 extcon_set_cable_state +EXPORT_SYMBOL_GPL vmlinux 0x85a3da2a rio_attach_device +EXPORT_SYMBOL_GPL vmlinux 0x85b635e4 kernfs_path +EXPORT_SYMBOL_GPL vmlinux 0x85baf549 sdio_set_host_pm_flags +EXPORT_SYMBOL_GPL vmlinux 0x85c7f674 ring_buffer_normalize_time_stamp +EXPORT_SYMBOL_GPL vmlinux 0x85d2412b devm_regmap_init_mmio_clk +EXPORT_SYMBOL_GPL vmlinux 0x85d403f6 pcibios_add_pci_devices +EXPORT_SYMBOL_GPL vmlinux 0x85f193db register_virtio_device +EXPORT_SYMBOL_GPL vmlinux 0x8628ae04 ata_sas_queuecmd +EXPORT_SYMBOL_GPL vmlinux 0x862fed1c gov_queue_work +EXPORT_SYMBOL_GPL vmlinux 0x863eba92 sock_diag_save_cookie +EXPORT_SYMBOL_GPL vmlinux 0x86455b96 rio_get_comptag +EXPORT_SYMBOL_GPL vmlinux 0x8650e542 usb_autopm_put_interface_no_suspend +EXPORT_SYMBOL_GPL vmlinux 0x8663377a driver_find_device +EXPORT_SYMBOL_GPL vmlinux 0x866dcc7d crypto_alg_lookup +EXPORT_SYMBOL_GPL vmlinux 0x8670ad54 perf_event_refresh +EXPORT_SYMBOL_GPL vmlinux 0x86786286 klist_add_behind +EXPORT_SYMBOL_GPL vmlinux 0x868784cb __symbol_get +EXPORT_SYMBOL_GPL vmlinux 0x869de0d9 __rio_local_read_config_16 +EXPORT_SYMBOL_GPL vmlinux 0x86abc40f fuse_dev_release +EXPORT_SYMBOL_GPL vmlinux 0x86b118d0 usb_submit_urb +EXPORT_SYMBOL_GPL vmlinux 0x86c1749a pci_reset_bridge_secondary_bus +EXPORT_SYMBOL_GPL vmlinux 0x86cbe6a1 crypto_tfm_in_queue +EXPORT_SYMBOL_GPL vmlinux 0x86d351b4 crypto_dequeue_request +EXPORT_SYMBOL_GPL vmlinux 0x86f0d974 get_cached_msi_msg +EXPORT_SYMBOL_GPL vmlinux 0x86f6b99d synchronize_rcu_expedited +EXPORT_SYMBOL_GPL vmlinux 0x86f8c910 pcap_set_ts_bits +EXPORT_SYMBOL_GPL vmlinux 0x8702e548 process_srcu +EXPORT_SYMBOL_GPL vmlinux 0x87108792 of_dma_router_register +EXPORT_SYMBOL_GPL vmlinux 0x873fbaea edac_atomic_assert_error +EXPORT_SYMBOL_GPL vmlinux 0x874bb6d1 class_interface_register +EXPORT_SYMBOL_GPL vmlinux 0x874da63f usb_altnum_to_altsetting +EXPORT_SYMBOL_GPL vmlinux 0x8776bdba scsi_target_unblock +EXPORT_SYMBOL_GPL vmlinux 0x8779c0e4 init_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0x878487ac crypto_spawn_tfm +EXPORT_SYMBOL_GPL vmlinux 0x879707fb devm_regulator_get +EXPORT_SYMBOL_GPL vmlinux 0x87c50ed4 of_rescan_bus +EXPORT_SYMBOL_GPL vmlinux 0x8804af3d usb_anchor_suspend_wakeups +EXPORT_SYMBOL_GPL vmlinux 0x8810ad5e crypto_xor +EXPORT_SYMBOL_GPL vmlinux 0x8811c9e5 pci_intx_mask_supported +EXPORT_SYMBOL_GPL vmlinux 0x881c029f of_property_read_u32_index +EXPORT_SYMBOL_GPL vmlinux 0x883998d5 usb_lock_device_for_reset +EXPORT_SYMBOL_GPL vmlinux 0x8850aa4c skb_segment +EXPORT_SYMBOL_GPL vmlinux 0x88645746 mnt_drop_write +EXPORT_SYMBOL_GPL vmlinux 0x886ae79f pcibios_alloc_controller +EXPORT_SYMBOL_GPL vmlinux 0x887f632f pci_assign_unassigned_bus_resources +EXPORT_SYMBOL_GPL vmlinux 0x889a6079 pwm_request_from_chip +EXPORT_SYMBOL_GPL vmlinux 0x88ab6fe3 kgdb_active +EXPORT_SYMBOL_GPL vmlinux 0x88b5647c trace_clock_local +EXPORT_SYMBOL_GPL vmlinux 0x88e0cd01 get_task_mm +EXPORT_SYMBOL_GPL vmlinux 0x88eab8ee pci_load_saved_state +EXPORT_SYMBOL_GPL vmlinux 0x8917a917 kvm_vcpu_read_guest_page +EXPORT_SYMBOL_GPL vmlinux 0x8924eb1e rcu_force_quiescent_state +EXPORT_SYMBOL_GPL vmlinux 0x893e41c1 ip6_datagram_connect +EXPORT_SYMBOL_GPL vmlinux 0x8947357b mmu_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x8956b8e5 dev_pm_qos_add_notifier +EXPORT_SYMBOL_GPL vmlinux 0x89587b19 serial8250_get_port +EXPORT_SYMBOL_GPL vmlinux 0x89631982 wm831x_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x89b46494 to_nvdimm +EXPORT_SYMBOL_GPL vmlinux 0x89bbafc6 usb_register_notify +EXPORT_SYMBOL_GPL vmlinux 0x89cc32fa tty_buffer_space_avail +EXPORT_SYMBOL_GPL vmlinux 0x89dbf5b0 list_lru_destroy +EXPORT_SYMBOL_GPL vmlinux 0x89e5c2b5 sysfs_remove_file_from_group +EXPORT_SYMBOL_GPL vmlinux 0x89f1b2aa usb_hc_died +EXPORT_SYMBOL_GPL vmlinux 0x89fffd1b __rio_local_write_config_32 +EXPORT_SYMBOL_GPL vmlinux 0x8a100d20 spi_register_master +EXPORT_SYMBOL_GPL vmlinux 0x8a13b2a5 inet_csk_compat_setsockopt +EXPORT_SYMBOL_GPL vmlinux 0x8a1a1766 pci_disable_rom +EXPORT_SYMBOL_GPL vmlinux 0x8a331627 usb_get_descriptor +EXPORT_SYMBOL_GPL vmlinux 0x8a345461 crypto_alloc_instance2 +EXPORT_SYMBOL_GPL vmlinux 0x8a554a36 mpc8xxx_spi_strmode +EXPORT_SYMBOL_GPL vmlinux 0x8a592211 crypto_alloc_pcomp +EXPORT_SYMBOL_GPL vmlinux 0x8a7b3847 da903x_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x8a880402 pwm_can_sleep +EXPORT_SYMBOL_GPL vmlinux 0x8aa2307c pci_cfg_access_unlock +EXPORT_SYMBOL_GPL vmlinux 0x8aa6d924 bus_for_each_drv +EXPORT_SYMBOL_GPL vmlinux 0x8aad398f extcon_set_state +EXPORT_SYMBOL_GPL vmlinux 0x8ab52485 rio_register_mport +EXPORT_SYMBOL_GPL vmlinux 0x8abacc47 get_max_files +EXPORT_SYMBOL_GPL vmlinux 0x8afa5ddc regmap_raw_read +EXPORT_SYMBOL_GPL vmlinux 0x8b149c36 clk_is_match +EXPORT_SYMBOL_GPL vmlinux 0x8b31b552 mpc8xxx_spi_remove +EXPORT_SYMBOL_GPL vmlinux 0x8b3cf5f4 i2c_recover_bus +EXPORT_SYMBOL_GPL vmlinux 0x8b406ae0 irq_set_default_host +EXPORT_SYMBOL_GPL vmlinux 0x8b6f9d73 rdev_clear_badblocks +EXPORT_SYMBOL_GPL vmlinux 0x8b70e8ea __wake_up_sync_key +EXPORT_SYMBOL_GPL vmlinux 0x8b759e05 usb_add_hcd +EXPORT_SYMBOL_GPL vmlinux 0x8b75dc0e kvmppc_pr_ops +EXPORT_SYMBOL_GPL vmlinux 0x8b9a70b6 class_for_each_device +EXPORT_SYMBOL_GPL vmlinux 0x8bc8c08f hwmon_device_register +EXPORT_SYMBOL_GPL vmlinux 0x8be177b5 fsl_spi_cpm_init +EXPORT_SYMBOL_GPL vmlinux 0x8c03d20c destroy_workqueue +EXPORT_SYMBOL_GPL vmlinux 0x8c0d911f tty_find_polling_driver +EXPORT_SYMBOL_GPL vmlinux 0x8c5e7d02 napi_hash_add +EXPORT_SYMBOL_GPL vmlinux 0x8c646600 edac_report_status +EXPORT_SYMBOL_GPL vmlinux 0x8c743fb6 reset_control_status +EXPORT_SYMBOL_GPL vmlinux 0x8c865c9f task_active_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0x8ca0a56d tcp_register_congestion_control +EXPORT_SYMBOL_GPL vmlinux 0x8cc1b80e put_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0x8cd47534 tps6586x_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0x8cea765f memalloc_socks +EXPORT_SYMBOL_GPL vmlinux 0x8d4784a8 sk_set_memalloc +EXPORT_SYMBOL_GPL vmlinux 0x8d83b864 devm_of_pwm_get +EXPORT_SYMBOL_GPL vmlinux 0x8d893383 skb_to_sgvec +EXPORT_SYMBOL_GPL vmlinux 0x8d96fce4 do_unregister_con_driver +EXPORT_SYMBOL_GPL vmlinux 0x8da01274 kvm_get_pfn +EXPORT_SYMBOL_GPL vmlinux 0x8da6f8a2 dma_buf_kmap_atomic +EXPORT_SYMBOL_GPL vmlinux 0x8dacf549 dma_buf_begin_cpu_access +EXPORT_SYMBOL_GPL vmlinux 0x8db007b1 pci_reset_function +EXPORT_SYMBOL_GPL vmlinux 0x8db9c504 ata_sff_drain_fifo +EXPORT_SYMBOL_GPL vmlinux 0x8dbb5813 alarm_cancel +EXPORT_SYMBOL_GPL vmlinux 0x8dce4992 ata_host_suspend +EXPORT_SYMBOL_GPL vmlinux 0x8dd4c2a1 ahash_free_instance +EXPORT_SYMBOL_GPL vmlinux 0x8de918ef thermal_generate_netlink_event +EXPORT_SYMBOL_GPL vmlinux 0x8dfd5821 __cookie_v6_init_sequence +EXPORT_SYMBOL_GPL vmlinux 0x8e1cd06f kvm_set_pfn_accessed +EXPORT_SYMBOL_GPL vmlinux 0x8e208c42 ehci_cf_port_reset_rwsem +EXPORT_SYMBOL_GPL vmlinux 0x8e2b25c2 videomode_from_timings +EXPORT_SYMBOL_GPL vmlinux 0x8e2e351a page_endio +EXPORT_SYMBOL_GPL vmlinux 0x8e3b5013 securityfs_remove +EXPORT_SYMBOL_GPL vmlinux 0x8e976b5f of_init_opp_table +EXPORT_SYMBOL_GPL vmlinux 0x8ea28947 perf_pmu_unregister +EXPORT_SYMBOL_GPL vmlinux 0x8ed866f4 of_dma_xlate_by_chan_id +EXPORT_SYMBOL_GPL vmlinux 0x8efe274a __pci_complete_power_transition +EXPORT_SYMBOL_GPL vmlinux 0x8f0748af rcu_expedite_gp +EXPORT_SYMBOL_GPL vmlinux 0x8f0f487b posix_timers_register_clock +EXPORT_SYMBOL_GPL vmlinux 0x8f168ce7 ata_sas_port_alloc +EXPORT_SYMBOL_GPL vmlinux 0x8f4348c6 phy_pm_runtime_put_sync +EXPORT_SYMBOL_GPL vmlinux 0x8f4542b4 device_store_int +EXPORT_SYMBOL_GPL vmlinux 0x8f5301d0 virtqueue_disable_cb +EXPORT_SYMBOL_GPL vmlinux 0x8f6b69c9 debugfs_create_devm_seqfile +EXPORT_SYMBOL_GPL vmlinux 0x8f6cee77 __round_jiffies_relative +EXPORT_SYMBOL_GPL vmlinux 0x8f7334d1 fanout_mutex +EXPORT_SYMBOL_GPL vmlinux 0x8f81544f nf_register_afinfo +EXPORT_SYMBOL_GPL vmlinux 0x8f836771 leds_list_lock +EXPORT_SYMBOL_GPL vmlinux 0x8f9cbcef tps6586x_reads +EXPORT_SYMBOL_GPL vmlinux 0x8f9f3052 rtc_update_irq +EXPORT_SYMBOL_GPL vmlinux 0x8fa698de syscon_regmap_lookup_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0x8fb010fd ftrace_set_filter +EXPORT_SYMBOL_GPL vmlinux 0x8fb7247f ata_sas_port_init +EXPORT_SYMBOL_GPL vmlinux 0x8fc310f2 wb_writeout_inc +EXPORT_SYMBOL_GPL vmlinux 0x8fc8b2ea blkdev_read_iter +EXPORT_SYMBOL_GPL vmlinux 0x8fe9e99e da903x_read +EXPORT_SYMBOL_GPL vmlinux 0x9014c1ad PageHuge +EXPORT_SYMBOL_GPL vmlinux 0x9037de94 spi_alloc_master +EXPORT_SYMBOL_GPL vmlinux 0x903b627c list_lru_isolate_move +EXPORT_SYMBOL_GPL vmlinux 0x9062c322 ring_buffer_consume +EXPORT_SYMBOL_GPL vmlinux 0x9077d5ea usb_kill_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x9086161e __trace_note_message +EXPORT_SYMBOL_GPL vmlinux 0x90a1004a crypto_has_alg +EXPORT_SYMBOL_GPL vmlinux 0x90c7ee64 of_free_opp_table +EXPORT_SYMBOL_GPL vmlinux 0x90e89d77 debugfs_create_size_t +EXPORT_SYMBOL_GPL vmlinux 0x90e8e5af rio_route_clr_table +EXPORT_SYMBOL_GPL vmlinux 0x90fe8f59 init_uts_ns +EXPORT_SYMBOL_GPL vmlinux 0x91047575 ipv4_sk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x911c01f3 i2c_add_numbered_adapter +EXPORT_SYMBOL_GPL vmlinux 0x911c22f7 powercap_register_control_type +EXPORT_SYMBOL_GPL vmlinux 0x916c9dce save_stack_trace_tsk +EXPORT_SYMBOL_GPL vmlinux 0x9187361b da903x_reads +EXPORT_SYMBOL_GPL vmlinux 0x918ad429 ring_buffer_lock_reserve +EXPORT_SYMBOL_GPL vmlinux 0x91ba4dda __kvm_set_memory_region +EXPORT_SYMBOL_GPL vmlinux 0x91c6e5b0 pcap_to_irq +EXPORT_SYMBOL_GPL vmlinux 0x91cb9d7b of_irq_to_resource +EXPORT_SYMBOL_GPL vmlinux 0x91dbb0c6 xfrm_audit_policy_add +EXPORT_SYMBOL_GPL vmlinux 0x91df3c6e vring_new_virtqueue +EXPORT_SYMBOL_GPL vmlinux 0x91f16994 ata_dev_pair +EXPORT_SYMBOL_GPL vmlinux 0x920cc389 visitorl +EXPORT_SYMBOL_GPL vmlinux 0x921a4b0a __fib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x9234a8d8 trace_event_buffer_reserve +EXPORT_SYMBOL_GPL vmlinux 0x923c26ac perf_event_release_kernel +EXPORT_SYMBOL_GPL vmlinux 0x924760b7 of_display_timings_exist +EXPORT_SYMBOL_GPL vmlinux 0x924c46f8 zs_unmap_object +EXPORT_SYMBOL_GPL vmlinux 0x924e1d20 scsi_target_block +EXPORT_SYMBOL_GPL vmlinux 0x9263bea7 stmpe_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x926acb76 kvm_get_dirty_log +EXPORT_SYMBOL_GPL vmlinux 0x9271ba28 __init_kthread_worker +EXPORT_SYMBOL_GPL vmlinux 0x929c59d5 rtc_read_alarm +EXPORT_SYMBOL_GPL vmlinux 0x92c6f851 dma_buf_attach +EXPORT_SYMBOL_GPL vmlinux 0x92d31cfb fixed_phy_add +EXPORT_SYMBOL_GPL vmlinux 0x92db8f68 do_trace_rcu_torture_read +EXPORT_SYMBOL_GPL vmlinux 0x92f0c196 regulator_set_load +EXPORT_SYMBOL_GPL vmlinux 0x92fedc6e sysfs_unmerge_group +EXPORT_SYMBOL_GPL vmlinux 0x9305deb4 sk_detach_filter +EXPORT_SYMBOL_GPL vmlinux 0x930c46c4 pci_reset_bus +EXPORT_SYMBOL_GPL vmlinux 0x931e52c1 hvc_alloc +EXPORT_SYMBOL_GPL vmlinux 0x931f05d3 ktime_get_raw +EXPORT_SYMBOL_GPL vmlinux 0x93528996 hrtimer_active +EXPORT_SYMBOL_GPL vmlinux 0x9368ead1 ata_cable_unknown +EXPORT_SYMBOL_GPL vmlinux 0x9372726b ata_pci_device_do_resume +EXPORT_SYMBOL_GPL vmlinux 0x93985743 i2c_new_probed_device +EXPORT_SYMBOL_GPL vmlinux 0x9398c0c6 ata_scsi_queuecmd +EXPORT_SYMBOL_GPL vmlinux 0x93a73ae1 rio_mport_write_config_32 +EXPORT_SYMBOL_GPL vmlinux 0x93b8dee3 gpiod_put_array +EXPORT_SYMBOL_GPL vmlinux 0x93c60a06 __mnt_drop_write +EXPORT_SYMBOL_GPL vmlinux 0x93effb71 cpufreq_frequency_table_verify +EXPORT_SYMBOL_GPL vmlinux 0x93f3bf6d max_gen_clk_probe +EXPORT_SYMBOL_GPL vmlinux 0x940b1169 pci_cfg_access_trylock +EXPORT_SYMBOL_GPL vmlinux 0x941c97c5 usb_add_phy_dev +EXPORT_SYMBOL_GPL vmlinux 0x941f2aaa eventfd_ctx_put +EXPORT_SYMBOL_GPL vmlinux 0x942169b8 blk_rq_check_limits +EXPORT_SYMBOL_GPL vmlinux 0x943a14d8 __percpu_ida_init +EXPORT_SYMBOL_GPL vmlinux 0x944a7969 mmput +EXPORT_SYMBOL_GPL vmlinux 0x9453bace ahash_register_instance +EXPORT_SYMBOL_GPL vmlinux 0x946d6f4c pci_bus_resource_n +EXPORT_SYMBOL_GPL vmlinux 0x94987f9f ata_do_set_mode +EXPORT_SYMBOL_GPL vmlinux 0x949f7342 __alloc_percpu +EXPORT_SYMBOL_GPL vmlinux 0x94a1e070 usb_unlink_urb +EXPORT_SYMBOL_GPL vmlinux 0x94d972b7 unregister_kprobe +EXPORT_SYMBOL_GPL vmlinux 0x94ef4d05 cpci_hp_stop +EXPORT_SYMBOL_GPL vmlinux 0x9504df26 irq_wake_thread +EXPORT_SYMBOL_GPL vmlinux 0x951c8b61 scsi_mode_select +EXPORT_SYMBOL_GPL vmlinux 0x9522236c ata_pci_sff_init_host +EXPORT_SYMBOL_GPL vmlinux 0x952664c5 do_exit +EXPORT_SYMBOL_GPL vmlinux 0x952ffa90 stmpe_enable +EXPORT_SYMBOL_GPL vmlinux 0x953646ad find_vpid +EXPORT_SYMBOL_GPL vmlinux 0x953e1b9e ktime_get_real_seconds +EXPORT_SYMBOL_GPL vmlinux 0x9546c04d pci_bus_max_busnr +EXPORT_SYMBOL_GPL vmlinux 0x955b0e2e kthread_worker_fn +EXPORT_SYMBOL_GPL vmlinux 0x958df3ac zs_free +EXPORT_SYMBOL_GPL vmlinux 0x95ab95c5 md_new_event +EXPORT_SYMBOL_GPL vmlinux 0x95bc9078 btree_free +EXPORT_SYMBOL_GPL vmlinux 0x95c7ba0d ata_sff_qc_fill_rtf +EXPORT_SYMBOL_GPL vmlinux 0x95d741ac gpiochip_add +EXPORT_SYMBOL_GPL vmlinux 0x95ef31f1 da9052_free_irq +EXPORT_SYMBOL_GPL vmlinux 0x95f58475 power_supply_set_property +EXPORT_SYMBOL_GPL vmlinux 0x9621849f ring_buffer_event_data +EXPORT_SYMBOL_GPL vmlinux 0x96258d72 sysfs_create_bin_file +EXPORT_SYMBOL_GPL vmlinux 0x9640daac sk_clear_memalloc +EXPORT_SYMBOL_GPL vmlinux 0x9647ad1c pci_sriov_get_totalvfs +EXPORT_SYMBOL_GPL vmlinux 0x96554810 register_keyboard_notifier +EXPORT_SYMBOL_GPL vmlinux 0x96603c5e usb_get_urb +EXPORT_SYMBOL_GPL vmlinux 0x966d2aef usb_hcd_pci_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x96b801a9 trace_seq_bitmask +EXPORT_SYMBOL_GPL vmlinux 0x96cae3e4 __irq_set_handler +EXPORT_SYMBOL_GPL vmlinux 0x96d4038f pm_runtime_no_callbacks +EXPORT_SYMBOL_GPL vmlinux 0x96dac810 watchdog_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0x96e310e7 irq_create_mapping +EXPORT_SYMBOL_GPL vmlinux 0x96e583c0 sdio_enable_func +EXPORT_SYMBOL_GPL vmlinux 0x96eae04f pci_slots_kset +EXPORT_SYMBOL_GPL vmlinux 0x9713b631 dev_set_name +EXPORT_SYMBOL_GPL vmlinux 0x972143b9 regmap_update_bits +EXPORT_SYMBOL_GPL vmlinux 0x9735f061 register_jprobes +EXPORT_SYMBOL_GPL vmlinux 0x973dc565 mmu_notifier_unregister_no_release +EXPORT_SYMBOL_GPL vmlinux 0x973fcb82 devm_hwmon_device_register_with_groups +EXPORT_SYMBOL_GPL vmlinux 0x974a3452 usb_hcd_platform_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x974d61a7 serial8250_modem_status +EXPORT_SYMBOL_GPL vmlinux 0x975519c1 asymmetric_key_id_same +EXPORT_SYMBOL_GPL vmlinux 0x97709ed8 tcp_done +EXPORT_SYMBOL_GPL vmlinux 0x977a61ef da9052_enable_irq +EXPORT_SYMBOL_GPL vmlinux 0x9796464a mmc_regulator_get_supply +EXPORT_SYMBOL_GPL vmlinux 0x97c22855 of_clk_add_provider +EXPORT_SYMBOL_GPL vmlinux 0x97c5ca78 phy_remove_lookup +EXPORT_SYMBOL_GPL vmlinux 0x97de2b83 debug_locks_silent +EXPORT_SYMBOL_GPL vmlinux 0x97f3ed97 ata_port_abort +EXPORT_SYMBOL_GPL vmlinux 0x9801ed0a trace_seq_putc +EXPORT_SYMBOL_GPL vmlinux 0x98155eed debugfs_create_symlink +EXPORT_SYMBOL_GPL vmlinux 0x9818ad3a dev_pm_disable_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0x9829d691 tpmm_chip_alloc +EXPORT_SYMBOL_GPL vmlinux 0x982cd486 __cookie_v4_init_sequence +EXPORT_SYMBOL_GPL vmlinux 0x9833bc0c hvc_kick +EXPORT_SYMBOL_GPL vmlinux 0x983b375a pci_set_cacheline_size +EXPORT_SYMBOL_GPL vmlinux 0x983c7494 rh_detach_region +EXPORT_SYMBOL_GPL vmlinux 0x983e231d agp_add_bridge +EXPORT_SYMBOL_GPL vmlinux 0x98503a63 mpi_alloc +EXPORT_SYMBOL_GPL vmlinux 0x9876dd5c device_get_child_node_count +EXPORT_SYMBOL_GPL vmlinux 0x9879932b crypto_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x98a02a70 register_jprobe +EXPORT_SYMBOL_GPL vmlinux 0x98b0cff8 perf_tp_event +EXPORT_SYMBOL_GPL vmlinux 0x98fa1e20 dm_get_reserved_rq_based_ios +EXPORT_SYMBOL_GPL vmlinux 0x98fcf128 irq_work_queue_on +EXPORT_SYMBOL_GPL vmlinux 0x9905cad2 sysfs_remove_bin_file +EXPORT_SYMBOL_GPL vmlinux 0x9924c496 __usb_get_extra_descriptor +EXPORT_SYMBOL_GPL vmlinux 0x9928457e spi_unregister_master +EXPORT_SYMBOL_GPL vmlinux 0x994c475e regmap_exit +EXPORT_SYMBOL_GPL vmlinux 0x994c995e __root_device_register +EXPORT_SYMBOL_GPL vmlinux 0x995d1071 prof_on +EXPORT_SYMBOL_GPL vmlinux 0x997c4347 unmap_kernel_range +EXPORT_SYMBOL_GPL vmlinux 0x997e5512 pci_user_write_config_word +EXPORT_SYMBOL_GPL vmlinux 0x99840d00 timecounter_init +EXPORT_SYMBOL_GPL vmlinux 0x9997d35b device_find_child +EXPORT_SYMBOL_GPL vmlinux 0x99a9ff9a cpuidle_register_device +EXPORT_SYMBOL_GPL vmlinux 0x99d21ed9 regmap_can_raw_write +EXPORT_SYMBOL_GPL vmlinux 0x99fce795 extcon_dev_unregister +EXPORT_SYMBOL_GPL vmlinux 0x9a11a0fc crypto_attr_alg_name +EXPORT_SYMBOL_GPL vmlinux 0x9a1e8006 sysfs_merge_group +EXPORT_SYMBOL_GPL vmlinux 0x9a20611c pci_walk_bus +EXPORT_SYMBOL_GPL vmlinux 0x9a2a9f1f crypto_nivaead_type +EXPORT_SYMBOL_GPL vmlinux 0x9a465841 devm_clk_register +EXPORT_SYMBOL_GPL vmlinux 0x9a49d937 __wake_up_locked_key +EXPORT_SYMBOL_GPL vmlinux 0x9a59fb8d kvm_flush_remote_tlbs +EXPORT_SYMBOL_GPL vmlinux 0x9a7410d8 cpuidle_unregister +EXPORT_SYMBOL_GPL vmlinux 0x9a80b7f8 input_ff_erase +EXPORT_SYMBOL_GPL vmlinux 0x9a89dbf7 lpddr2_jedec_min_tck +EXPORT_SYMBOL_GPL vmlinux 0x9aa4691e tty_init_termios +EXPORT_SYMBOL_GPL vmlinux 0x9aad6540 klist_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x9ac51017 kvm_is_visible_gfn +EXPORT_SYMBOL_GPL vmlinux 0x9ac7cd54 sdio_readsb +EXPORT_SYMBOL_GPL vmlinux 0x9adb59bf devm_regulator_get_exclusive +EXPORT_SYMBOL_GPL vmlinux 0x9aeacb87 ring_buffer_iter_empty +EXPORT_SYMBOL_GPL vmlinux 0x9af83e69 __rio_local_read_config_32 +EXPORT_SYMBOL_GPL vmlinux 0x9afaaa57 securityfs_create_dir +EXPORT_SYMBOL_GPL vmlinux 0x9b09bad6 blocking_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0x9b0a4488 sysfs_create_files +EXPORT_SYMBOL_GPL vmlinux 0x9b171a04 regulator_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x9b2db8ee gpiod_set_debounce +EXPORT_SYMBOL_GPL vmlinux 0x9b3f84db __netpoll_cleanup +EXPORT_SYMBOL_GPL vmlinux 0x9b502a51 pm_runtime_force_suspend +EXPORT_SYMBOL_GPL vmlinux 0x9b8b597c regulator_bulk_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x9ba2bb2b gpio_request_array +EXPORT_SYMBOL_GPL vmlinux 0x9ba45112 debugfs_create_regset32 +EXPORT_SYMBOL_GPL vmlinux 0x9bbd7d31 device_create_file +EXPORT_SYMBOL_GPL vmlinux 0x9bca03ca ata_sff_queue_delayed_work +EXPORT_SYMBOL_GPL vmlinux 0x9bd03a72 gpiod_set_array_value +EXPORT_SYMBOL_GPL vmlinux 0x9bd939c0 get_user_pages_fast +EXPORT_SYMBOL_GPL vmlinux 0x9bece81b mpi_cmp_ui +EXPORT_SYMBOL_GPL vmlinux 0x9bfaf70a cpufreq_freq_transition_begin +EXPORT_SYMBOL_GPL vmlinux 0x9c3676a6 ata_eh_qc_complete +EXPORT_SYMBOL_GPL vmlinux 0x9c371420 do_unbind_con_driver +EXPORT_SYMBOL_GPL vmlinux 0x9c384033 raw_unhash_sk +EXPORT_SYMBOL_GPL vmlinux 0x9c3a68ba inode_congested +EXPORT_SYMBOL_GPL vmlinux 0x9c76800c debugfs_create_file +EXPORT_SYMBOL_GPL vmlinux 0x9c7d0501 lp8788_read_byte +EXPORT_SYMBOL_GPL vmlinux 0x9ca1e68c handle_mm_fault +EXPORT_SYMBOL_GPL vmlinux 0x9cc6786d iptunnel_pull_header +EXPORT_SYMBOL_GPL vmlinux 0x9cc9535f devm_devfreq_event_add_edev +EXPORT_SYMBOL_GPL vmlinux 0x9ce52a65 rdev_set_badblocks +EXPORT_SYMBOL_GPL vmlinux 0x9cee57a0 zs_create_pool +EXPORT_SYMBOL_GPL vmlinux 0x9d030b99 stop_machine +EXPORT_SYMBOL_GPL vmlinux 0x9d0eba31 device_initialize +EXPORT_SYMBOL_GPL vmlinux 0x9d16c217 pcie_bus_configure_settings +EXPORT_SYMBOL_GPL vmlinux 0x9d318dc0 crypto_init_ahash_spawn +EXPORT_SYMBOL_GPL vmlinux 0x9d37c4b8 skcipher_geniv_free +EXPORT_SYMBOL_GPL vmlinux 0x9d7d628c fsl_rio_mcheck_exception +EXPORT_SYMBOL_GPL vmlinux 0x9d7e0157 sdhci_pci_o2_probe_slot +EXPORT_SYMBOL_GPL vmlinux 0x9d84ea8d trace_seq_printf +EXPORT_SYMBOL_GPL vmlinux 0x9dadbb88 cpufreq_boost_supported +EXPORT_SYMBOL_GPL vmlinux 0x9db0bbc7 rio_mport_write_config_16 +EXPORT_SYMBOL_GPL vmlinux 0x9dcd083a devres_destroy +EXPORT_SYMBOL_GPL vmlinux 0x9de9dd28 extcon_get_cable_state +EXPORT_SYMBOL_GPL vmlinux 0x9e0fe13a spi_sync +EXPORT_SYMBOL_GPL vmlinux 0x9e31da69 transport_class_register +EXPORT_SYMBOL_GPL vmlinux 0x9e472f5f snmp_fold_field +EXPORT_SYMBOL_GPL vmlinux 0x9e4e83a5 find_module +EXPORT_SYMBOL_GPL vmlinux 0x9e553d54 tcp_reno_cong_avoid +EXPORT_SYMBOL_GPL vmlinux 0x9e6a87f9 sdio_claim_host +EXPORT_SYMBOL_GPL vmlinux 0x9e750a9e nvdimm_blk_region_create +EXPORT_SYMBOL_GPL vmlinux 0x9eb76859 tty_port_tty_hangup +EXPORT_SYMBOL_GPL vmlinux 0x9ed2140a component_master_del +EXPORT_SYMBOL_GPL vmlinux 0x9ed554b3 unregister_keyboard_notifier +EXPORT_SYMBOL_GPL vmlinux 0x9ed90c85 irq_domain_associate_many +EXPORT_SYMBOL_GPL vmlinux 0x9ef05a47 ip_tunnel_get_stats64 +EXPORT_SYMBOL_GPL vmlinux 0x9f099cf6 x509_get_sig_params +EXPORT_SYMBOL_GPL vmlinux 0x9f3487ba kvmppc_ld +EXPORT_SYMBOL_GPL vmlinux 0x9f34cb31 key_type_encrypted +EXPORT_SYMBOL_GPL vmlinux 0x9f405c28 arizona_free_irq +EXPORT_SYMBOL_GPL vmlinux 0x9f5d01cb vma_kernel_pagesize +EXPORT_SYMBOL_GPL vmlinux 0x9f5dd28f power_supply_am_i_supplied +EXPORT_SYMBOL_GPL vmlinux 0x9f609a4e kvm_io_bus_write +EXPORT_SYMBOL_GPL vmlinux 0x9f6f223e crypto_unregister_instance +EXPORT_SYMBOL_GPL vmlinux 0x9f7ebf2a nvdimm_attribute_group +EXPORT_SYMBOL_GPL vmlinux 0x9f81c707 devm_regmap_init +EXPORT_SYMBOL_GPL vmlinux 0x9f949b69 hvc_instantiate +EXPORT_SYMBOL_GPL vmlinux 0x9fa2c988 led_trigger_set_default +EXPORT_SYMBOL_GPL vmlinux 0x9faf8332 wm8997_i2c_regmap +EXPORT_SYMBOL_GPL vmlinux 0x9fc1cbb8 usb_remove_hcd +EXPORT_SYMBOL_GPL vmlinux 0x9fc6f368 wm8350_reg_lock +EXPORT_SYMBOL_GPL vmlinux 0x9fcc9cf1 rio_mport_get_physefb +EXPORT_SYMBOL_GPL vmlinux 0x9fce80db fb_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x9fcf2aa7 pm_runtime_barrier +EXPORT_SYMBOL_GPL vmlinux 0x9fe0f522 posix_clock_register +EXPORT_SYMBOL_GPL vmlinux 0x9fe939e1 mpi_powm +EXPORT_SYMBOL_GPL vmlinux 0xa0208e02 irq_set_affinity_hint +EXPORT_SYMBOL_GPL vmlinux 0xa023e0ad genlmsg_new_unicast +EXPORT_SYMBOL_GPL vmlinux 0xa05e0ba6 platform_device_put +EXPORT_SYMBOL_GPL vmlinux 0xa06357da usb_autopm_put_interface_async +EXPORT_SYMBOL_GPL vmlinux 0xa0764710 xfrm_audit_state_notfound_simple +EXPORT_SYMBOL_GPL vmlinux 0xa084003e gen_pool_size +EXPORT_SYMBOL_GPL vmlinux 0xa088f350 ata_sff_lost_interrupt +EXPORT_SYMBOL_GPL vmlinux 0xa091d10d fwnode_property_present +EXPORT_SYMBOL_GPL vmlinux 0xa0a05542 irq_of_parse_and_map +EXPORT_SYMBOL_GPL vmlinux 0xa0a27fff pci_address_to_pio +EXPORT_SYMBOL_GPL vmlinux 0xa0a72aa7 blkg_prfill_rwstat +EXPORT_SYMBOL_GPL vmlinux 0xa0acc64a kvm_vcpu_gfn_to_hva +EXPORT_SYMBOL_GPL vmlinux 0xa0b4f5d4 of_property_read_u16_array +EXPORT_SYMBOL_GPL vmlinux 0xa0c8fc13 gpiod_to_irq +EXPORT_SYMBOL_GPL vmlinux 0xa1010c4b sysfs_remove_group +EXPORT_SYMBOL_GPL vmlinux 0xa105d39a usb_deregister_device_driver +EXPORT_SYMBOL_GPL vmlinux 0xa11140e8 ata_platform_remove_one +EXPORT_SYMBOL_GPL vmlinux 0xa1167dc4 clk_divider_ops +EXPORT_SYMBOL_GPL vmlinux 0xa11e4408 subsys_interface_register +EXPORT_SYMBOL_GPL vmlinux 0xa1380264 regulator_list_hardware_vsel +EXPORT_SYMBOL_GPL vmlinux 0xa138d5fd param_set_bool_enable_only +EXPORT_SYMBOL_GPL vmlinux 0xa13c301e usb_driver_release_interface +EXPORT_SYMBOL_GPL vmlinux 0xa18f9433 mpi_read_buffer +EXPORT_SYMBOL_GPL vmlinux 0xa19adf8b wm8350_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xa19cb621 of_irq_parse_raw +EXPORT_SYMBOL_GPL vmlinux 0xa1bafa74 pm_runtime_irq_safe +EXPORT_SYMBOL_GPL vmlinux 0xa1ceeae2 dev_pm_qos_hide_latency_tolerance +EXPORT_SYMBOL_GPL vmlinux 0xa1d4905b of_console_check +EXPORT_SYMBOL_GPL vmlinux 0xa1ed9c8b add_hwgenerator_randomness +EXPORT_SYMBOL_GPL vmlinux 0xa1f747c1 irq_remove_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0xa1fb5090 ata_wait_after_reset +EXPORT_SYMBOL_GPL vmlinux 0xa21a215f sock_diag_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa2213496 ata_port_desc +EXPORT_SYMBOL_GPL vmlinux 0xa22a6a97 tty_standard_install +EXPORT_SYMBOL_GPL vmlinux 0xa22e4900 filter_check_discard +EXPORT_SYMBOL_GPL vmlinux 0xa23afb4d __ata_ehi_push_desc +EXPORT_SYMBOL_GPL vmlinux 0xa24a755d disk_part_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0xa26d9b4f workqueue_congested +EXPORT_SYMBOL_GPL vmlinux 0xa27908ba pcie_update_link_speed +EXPORT_SYMBOL_GPL vmlinux 0xa28aaf29 rh_create +EXPORT_SYMBOL_GPL vmlinux 0xa28ffff7 crypto_unregister_shash +EXPORT_SYMBOL_GPL vmlinux 0xa2ac5519 percpu_ref_init +EXPORT_SYMBOL_GPL vmlinux 0xa2ac5998 to_nd_region +EXPORT_SYMBOL_GPL vmlinux 0xa2b687c5 xattr_getsecurity +EXPORT_SYMBOL_GPL vmlinux 0xa2bafa40 interval_tree_insert +EXPORT_SYMBOL_GPL vmlinux 0xa2d7c0ec irq_set_chip_and_handler_name +EXPORT_SYMBOL_GPL vmlinux 0xa31b96d9 fuse_dev_alloc +EXPORT_SYMBOL_GPL vmlinux 0xa35e9f1a swiotlb_tbl_unmap_single +EXPORT_SYMBOL_GPL vmlinux 0xa379cb2e inet_csk_listen_start +EXPORT_SYMBOL_GPL vmlinux 0xa38602cd drain_workqueue +EXPORT_SYMBOL_GPL vmlinux 0xa389a49a profile_event_register +EXPORT_SYMBOL_GPL vmlinux 0xa395a0d4 of_irq_to_resource_table +EXPORT_SYMBOL_GPL vmlinux 0xa3a04602 btree_geo64 +EXPORT_SYMBOL_GPL vmlinux 0xa3a2d9af walk_system_ram_range +EXPORT_SYMBOL_GPL vmlinux 0xa3a99bd8 securityfs_create_file +EXPORT_SYMBOL_GPL vmlinux 0xa3b29af8 ata_sff_tf_load +EXPORT_SYMBOL_GPL vmlinux 0xa3b958ce reset_hung_task_detector +EXPORT_SYMBOL_GPL vmlinux 0xa3be6b3d nl_table +EXPORT_SYMBOL_GPL vmlinux 0xa3d3cc05 debugfs_remove_recursive +EXPORT_SYMBOL_GPL vmlinux 0xa3e44d7b dm_accept_partial_bio +EXPORT_SYMBOL_GPL vmlinux 0xa3e7c113 ring_buffer_iter_peek +EXPORT_SYMBOL_GPL vmlinux 0xa41cb4e3 page_cache_sync_readahead +EXPORT_SYMBOL_GPL vmlinux 0xa4212903 usb_hcd_link_urb_to_ep +EXPORT_SYMBOL_GPL vmlinux 0xa48196c8 kdb_poll_idx +EXPORT_SYMBOL_GPL vmlinux 0xa497e349 kvmppc_handle_load +EXPORT_SYMBOL_GPL vmlinux 0xa4ba48b4 get_kernel_pages +EXPORT_SYMBOL_GPL vmlinux 0xa4d004c3 devres_add +EXPORT_SYMBOL_GPL vmlinux 0xa4e527ee rtc_irq_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa50e52c2 usb_autopm_get_interface_no_resume +EXPORT_SYMBOL_GPL vmlinux 0xa526f881 bsg_unregister_queue +EXPORT_SYMBOL_GPL vmlinux 0xa5435900 kernfs_get +EXPORT_SYMBOL_GPL vmlinux 0xa5439ea1 rio_get_asm +EXPORT_SYMBOL_GPL vmlinux 0xa54a69f5 subsys_dev_iter_next +EXPORT_SYMBOL_GPL vmlinux 0xa564c866 splice_to_pipe +EXPORT_SYMBOL_GPL vmlinux 0xa568b51b rio_unmap_inb_region +EXPORT_SYMBOL_GPL vmlinux 0xa5705554 clk_register_divider +EXPORT_SYMBOL_GPL vmlinux 0xa570b48e of_dma_simple_xlate +EXPORT_SYMBOL_GPL vmlinux 0xa58703f6 kvm_vcpu_write_guest +EXPORT_SYMBOL_GPL vmlinux 0xa5b00659 ppc_proc_freq +EXPORT_SYMBOL_GPL vmlinux 0xa5d07cab find_symbol +EXPORT_SYMBOL_GPL vmlinux 0xa5d62c01 gpiod_export +EXPORT_SYMBOL_GPL vmlinux 0xa5de356c usb_mon_register +EXPORT_SYMBOL_GPL vmlinux 0xa5e407e4 wm5110_aod +EXPORT_SYMBOL_GPL vmlinux 0xa5efbf4c async_synchronize_full +EXPORT_SYMBOL_GPL vmlinux 0xa5efe460 usb_anchor_resume_wakeups +EXPORT_SYMBOL_GPL vmlinux 0xa5fb5ede elv_register +EXPORT_SYMBOL_GPL vmlinux 0xa625110d kmsg_dump_rewind +EXPORT_SYMBOL_GPL vmlinux 0xa64d853b crypto_givcipher_type +EXPORT_SYMBOL_GPL vmlinux 0xa65f0867 hwmon_device_register_with_groups +EXPORT_SYMBOL_GPL vmlinux 0xa664ef08 crypto_aead_setauthsize +EXPORT_SYMBOL_GPL vmlinux 0xa68378d7 wm831x_reg_lock +EXPORT_SYMBOL_GPL vmlinux 0xa6e1a69d kick_all_cpus_sync +EXPORT_SYMBOL_GPL vmlinux 0xa72fdfe0 nd_cmd_out_size +EXPORT_SYMBOL_GPL vmlinux 0xa741591b device_release_driver +EXPORT_SYMBOL_GPL vmlinux 0xa75312bc call_rcu_sched +EXPORT_SYMBOL_GPL vmlinux 0xa77269c2 list_lru_add +EXPORT_SYMBOL_GPL vmlinux 0xa775e114 devm_regulator_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0xa7e0574a cpuidle_get_driver +EXPORT_SYMBOL_GPL vmlinux 0xa7e13a6a clk_mux_ro_ops +EXPORT_SYMBOL_GPL vmlinux 0xa7fd242f tpm2_do_selftest +EXPORT_SYMBOL_GPL vmlinux 0xa83acc95 __inet_lookup_established +EXPORT_SYMBOL_GPL vmlinux 0xa84222cb power_supply_get_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0xa8512717 devfreq_event_set_event +EXPORT_SYMBOL_GPL vmlinux 0xa851973a raw_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xa8551b56 arizona_of_get_type +EXPORT_SYMBOL_GPL vmlinux 0xa85d87db set_cpus_allowed_ptr +EXPORT_SYMBOL_GPL vmlinux 0xa87b4e01 device_bind_driver +EXPORT_SYMBOL_GPL vmlinux 0xa87b9a48 of_fdt_unflatten_tree +EXPORT_SYMBOL_GPL vmlinux 0xa88ca1d7 clk_register_fixed_rate_with_accuracy +EXPORT_SYMBOL_GPL vmlinux 0xa8981efe ata_sff_freeze +EXPORT_SYMBOL_GPL vmlinux 0xa8b17ac6 regmap_update_bits_async +EXPORT_SYMBOL_GPL vmlinux 0xa8b7207f crypto_init_spawn +EXPORT_SYMBOL_GPL vmlinux 0xa8b76a68 timecounter_cyc2time +EXPORT_SYMBOL_GPL vmlinux 0xa8bcd789 virtqueue_kick_prepare +EXPORT_SYMBOL_GPL vmlinux 0xa8fef5a6 usb_deregister_dev +EXPORT_SYMBOL_GPL vmlinux 0xa91bab31 debugfs_create_dir +EXPORT_SYMBOL_GPL vmlinux 0xa91ee0f3 rtc_device_register +EXPORT_SYMBOL_GPL vmlinux 0xa925e478 __tracepoint_rpm_return_int +EXPORT_SYMBOL_GPL vmlinux 0xa92d80f3 wm5102_spi_regmap +EXPORT_SYMBOL_GPL vmlinux 0xa9320d27 ktime_get_seconds +EXPORT_SYMBOL_GPL vmlinux 0xa93271a5 gen_pool_avail +EXPORT_SYMBOL_GPL vmlinux 0xa97ac6e4 of_pwm_get +EXPORT_SYMBOL_GPL vmlinux 0xa98061b4 clk_register_fixed_rate +EXPORT_SYMBOL_GPL vmlinux 0xa980af16 RSA_public_key_algorithm +EXPORT_SYMBOL_GPL vmlinux 0xa986651e sk_setup_caps +EXPORT_SYMBOL_GPL vmlinux 0xa993749b rhashtable_walk_start +EXPORT_SYMBOL_GPL vmlinux 0xa99ae19a flush_altivec_to_thread +EXPORT_SYMBOL_GPL vmlinux 0xa99d7179 ata_host_resume +EXPORT_SYMBOL_GPL vmlinux 0xa9a485d9 wm8997_aod +EXPORT_SYMBOL_GPL vmlinux 0xa9aef2e1 gfn_to_hva_memslot +EXPORT_SYMBOL_GPL vmlinux 0xa9be3183 usb_put_dev +EXPORT_SYMBOL_GPL vmlinux 0xa9c03fcb transport_add_device +EXPORT_SYMBOL_GPL vmlinux 0xa9cdc2cb seq_open_net +EXPORT_SYMBOL_GPL vmlinux 0xa9ce341e usb_show_dynids +EXPORT_SYMBOL_GPL vmlinux 0xa9e18049 task_handoff_unregister +EXPORT_SYMBOL_GPL vmlinux 0xaa004b81 user_free_preparse +EXPORT_SYMBOL_GPL vmlinux 0xaa0779d0 usb_hcd_poll_rh_status +EXPORT_SYMBOL_GPL vmlinux 0xaa17a2e2 rh_alloc_align +EXPORT_SYMBOL_GPL vmlinux 0xaa399a42 crypto_ahash_final +EXPORT_SYMBOL_GPL vmlinux 0xaa440edf kvm_read_guest_page +EXPORT_SYMBOL_GPL vmlinux 0xaa565fa7 regmap_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0xaa7fd301 __crypto_alloc_tfm +EXPORT_SYMBOL_GPL vmlinux 0xaaa918c9 ftrace_dump +EXPORT_SYMBOL_GPL vmlinux 0xaae0e825 regulator_disable +EXPORT_SYMBOL_GPL vmlinux 0xaae5d176 udp4_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0xab29ad96 cpuidle_disable_device +EXPORT_SYMBOL_GPL vmlinux 0xab33559d led_sysfs_enable +EXPORT_SYMBOL_GPL vmlinux 0xab3e96e0 sprint_OID +EXPORT_SYMBOL_GPL vmlinux 0xab567d31 percpu_ref_reinit +EXPORT_SYMBOL_GPL vmlinux 0xab59d373 kvmppc_free_lpid +EXPORT_SYMBOL_GPL vmlinux 0xab5a5de4 fixed_phy_del +EXPORT_SYMBOL_GPL vmlinux 0xab6ab77b key_type_trusted +EXPORT_SYMBOL_GPL vmlinux 0xab6babaf pm_qos_request +EXPORT_SYMBOL_GPL vmlinux 0xab9bddcf skb_zerocopy_headlen +EXPORT_SYMBOL_GPL vmlinux 0xaba2db15 trace_seq_to_user +EXPORT_SYMBOL_GPL vmlinux 0xabc640f3 list_lru_isolate +EXPORT_SYMBOL_GPL vmlinux 0xabed81a2 inet6_csk_reqsk_queue_hash_add +EXPORT_SYMBOL_GPL vmlinux 0xabeec464 __rtnl_af_unregister +EXPORT_SYMBOL_GPL vmlinux 0xac2ed081 mark_page_dirty +EXPORT_SYMBOL_GPL vmlinux 0xac5611e9 regulator_set_voltage_time +EXPORT_SYMBOL_GPL vmlinux 0xac57f9ff fat_setattr +EXPORT_SYMBOL_GPL vmlinux 0xac772aff device_create_vargs +EXPORT_SYMBOL_GPL vmlinux 0xac8332e2 usb_ifnum_to_if +EXPORT_SYMBOL_GPL vmlinux 0xacb1f52e sata_scr_valid +EXPORT_SYMBOL_GPL vmlinux 0xacb6f1ec regulator_map_voltage_linear_range +EXPORT_SYMBOL_GPL vmlinux 0xace5c0fc usb_bus_list +EXPORT_SYMBOL_GPL vmlinux 0xacfe997e powerpc_firmware_features +EXPORT_SYMBOL_GPL vmlinux 0xad069302 usb_disable_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0xad113cd0 ata_host_activate +EXPORT_SYMBOL_GPL vmlinux 0xad28fba7 da9052_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0xad4594dc of_clk_del_provider +EXPORT_SYMBOL_GPL vmlinux 0xad4b67b3 kvm_vcpu_read_guest_atomic +EXPORT_SYMBOL_GPL vmlinux 0xad8b2124 rtc_set_time +EXPORT_SYMBOL_GPL vmlinux 0xad8c5749 tps6586x_writes +EXPORT_SYMBOL_GPL vmlinux 0xadc785ec kgdb_register_io_module +EXPORT_SYMBOL_GPL vmlinux 0xade7857f for_each_kernel_tracepoint +EXPORT_SYMBOL_GPL vmlinux 0xaded9da1 perf_trace_buf_prepare +EXPORT_SYMBOL_GPL vmlinux 0xadf6aa4d tpm_pcr_read +EXPORT_SYMBOL_GPL vmlinux 0xae2aefd7 regulator_bulk_disable +EXPORT_SYMBOL_GPL vmlinux 0xae69b1c1 usermodehelper_read_unlock +EXPORT_SYMBOL_GPL vmlinux 0xae7c231d mpi_cmp +EXPORT_SYMBOL_GPL vmlinux 0xae81922b of_overlay_destroy_all +EXPORT_SYMBOL_GPL vmlinux 0xae8aa931 dev_pm_opp_get_voltage +EXPORT_SYMBOL_GPL vmlinux 0xae91de98 device_add_property_set +EXPORT_SYMBOL_GPL vmlinux 0xaea7e424 tcp_get_info +EXPORT_SYMBOL_GPL vmlinux 0xaeada5cd sata_scr_write_flush +EXPORT_SYMBOL_GPL vmlinux 0xaed6a5cd usb_match_id +EXPORT_SYMBOL_GPL vmlinux 0xaedc7252 ata_bmdma_start +EXPORT_SYMBOL_GPL vmlinux 0xaee0ace3 xfrm_inner_extract_output +EXPORT_SYMBOL_GPL vmlinux 0xaeec2460 inet_csk_search_req +EXPORT_SYMBOL_GPL vmlinux 0xaf0fbfca rio_local_get_device_id +EXPORT_SYMBOL_GPL vmlinux 0xaf2985f6 ping_init_sock +EXPORT_SYMBOL_GPL vmlinux 0xaf2e8b0a hrtimer_start_range_ns +EXPORT_SYMBOL_GPL vmlinux 0xaf4d42a1 pci_user_write_config_byte +EXPORT_SYMBOL_GPL vmlinux 0xaf53051f hrtimer_init_sleeper +EXPORT_SYMBOL_GPL vmlinux 0xaf5d4047 ata_bmdma_qc_issue +EXPORT_SYMBOL_GPL vmlinux 0xaf9a6f36 pwm_request +EXPORT_SYMBOL_GPL vmlinux 0xaf9ca6f1 anon_inode_getfd +EXPORT_SYMBOL_GPL vmlinux 0xafaa609c kernfs_find_and_get_ns +EXPORT_SYMBOL_GPL vmlinux 0xafdf9eb1 evm_verifyxattr +EXPORT_SYMBOL_GPL vmlinux 0xafe4ed1c kvmppc_st +EXPORT_SYMBOL_GPL vmlinux 0xafeda824 md_stop_writes +EXPORT_SYMBOL_GPL vmlinux 0xb0400c6b add_timer_on +EXPORT_SYMBOL_GPL vmlinux 0xb06e465e inet6_lookup_listener +EXPORT_SYMBOL_GPL vmlinux 0xb077e70a clk_unprepare +EXPORT_SYMBOL_GPL vmlinux 0xb0b85f47 ring_buffer_iter_reset +EXPORT_SYMBOL_GPL vmlinux 0xb0ce5d65 powercap_register_zone +EXPORT_SYMBOL_GPL vmlinux 0xb0d1656c gpio_free_array +EXPORT_SYMBOL_GPL vmlinux 0xb0fe3dae dax_pfn_mkwrite +EXPORT_SYMBOL_GPL vmlinux 0xb106450b ip6_dst_lookup +EXPORT_SYMBOL_GPL vmlinux 0xb13b44cf da9052_request_irq +EXPORT_SYMBOL_GPL vmlinux 0xb140d14c ring_buffer_read +EXPORT_SYMBOL_GPL vmlinux 0xb1425b32 dm_table_add_target_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xb17fa269 crypto_larval_alloc +EXPORT_SYMBOL_GPL vmlinux 0xb19424dd devm_get_free_pages +EXPORT_SYMBOL_GPL vmlinux 0xb1a23b52 usb_get_phy_dev +EXPORT_SYMBOL_GPL vmlinux 0xb1acbcce rcu_barrier_sched +EXPORT_SYMBOL_GPL vmlinux 0xb1c0c1c2 async_schedule_domain +EXPORT_SYMBOL_GPL vmlinux 0xb1c1c59e of_reserved_mem_device_release +EXPORT_SYMBOL_GPL vmlinux 0xb1c47c40 usb_reset_configuration +EXPORT_SYMBOL_GPL vmlinux 0xb1e25684 __trace_bputs +EXPORT_SYMBOL_GPL vmlinux 0xb21be6f7 dev_change_net_namespace +EXPORT_SYMBOL_GPL vmlinux 0xb2210d64 reset_control_deassert +EXPORT_SYMBOL_GPL vmlinux 0xb22429e6 trace_print_bitmask_seq +EXPORT_SYMBOL_GPL vmlinux 0xb24d24a7 usb_kill_urb +EXPORT_SYMBOL_GPL vmlinux 0xb26a1add elfcorehdr_addr +EXPORT_SYMBOL_GPL vmlinux 0xb2791512 virtqueue_get_avail +EXPORT_SYMBOL_GPL vmlinux 0xb27bbbeb dma_buf_detach +EXPORT_SYMBOL_GPL vmlinux 0xb27f51d0 usb_alloc_coherent +EXPORT_SYMBOL_GPL vmlinux 0xb2adc0ef perf_event_disable +EXPORT_SYMBOL_GPL vmlinux 0xb2c5873b usb_alloc_streams +EXPORT_SYMBOL_GPL vmlinux 0xb2e4197e verify_signature +EXPORT_SYMBOL_GPL vmlinux 0xb30250be ata_host_register +EXPORT_SYMBOL_GPL vmlinux 0xb31076df ata_host_alloc +EXPORT_SYMBOL_GPL vmlinux 0xb32df56f blocking_notifier_chain_cond_register +EXPORT_SYMBOL_GPL vmlinux 0xb33df9ed ata_sff_queue_pio_task +EXPORT_SYMBOL_GPL vmlinux 0xb347bb2c work_busy +EXPORT_SYMBOL_GPL vmlinux 0xb34d3506 bpf_prog_free +EXPORT_SYMBOL_GPL vmlinux 0xb361dba2 da903x_update +EXPORT_SYMBOL_GPL vmlinux 0xb364164b usb_phy_generic_register +EXPORT_SYMBOL_GPL vmlinux 0xb3642240 of_irq_parse_one +EXPORT_SYMBOL_GPL vmlinux 0xb378be67 dma_buf_export +EXPORT_SYMBOL_GPL vmlinux 0xb37c4646 usb_unlocked_disable_lpm +EXPORT_SYMBOL_GPL vmlinux 0xb3937ae1 cpufreq_freq_attr_scaling_boost_freqs +EXPORT_SYMBOL_GPL vmlinux 0xb3a6a1b0 dma_buf_put +EXPORT_SYMBOL_GPL vmlinux 0xb3b68f55 dev_pm_opp_find_freq_exact +EXPORT_SYMBOL_GPL vmlinux 0xb3c063be pwmchip_add +EXPORT_SYMBOL_GPL vmlinux 0xb401bcd5 virtio_config_changed +EXPORT_SYMBOL_GPL vmlinux 0xb41a713e task_cls_state +EXPORT_SYMBOL_GPL vmlinux 0xb43f0aea ata_std_postreset +EXPORT_SYMBOL_GPL vmlinux 0xb43f8f5f tcp_twsk_unique +EXPORT_SYMBOL_GPL vmlinux 0xb4449294 platform_add_devices +EXPORT_SYMBOL_GPL vmlinux 0xb44a106a ohci_init_driver +EXPORT_SYMBOL_GPL vmlinux 0xb4799f7f nd_blk_region_provider_data +EXPORT_SYMBOL_GPL vmlinux 0xb488588e tb_to_ns +EXPORT_SYMBOL_GPL vmlinux 0xb48885dc device_dma_is_coherent +EXPORT_SYMBOL_GPL vmlinux 0xb4b0077e serial8250_rx_chars +EXPORT_SYMBOL_GPL vmlinux 0xb4b97c90 pvclock_gtod_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xb4ea7cf7 kgdb_connected +EXPORT_SYMBOL_GPL vmlinux 0xb5192a56 gpiod_direction_output_raw +EXPORT_SYMBOL_GPL vmlinux 0xb51fbd64 edac_op_state +EXPORT_SYMBOL_GPL vmlinux 0xb5228a42 irq_find_host +EXPORT_SYMBOL_GPL vmlinux 0xb52529c0 rq_flush_dcache_pages +EXPORT_SYMBOL_GPL vmlinux 0xb52b26b6 regulator_get_linear_step +EXPORT_SYMBOL_GPL vmlinux 0xb5338e51 kvmppc_sanity_check +EXPORT_SYMBOL_GPL vmlinux 0xb53620d1 pci_vpd_find_info_keyword +EXPORT_SYMBOL_GPL vmlinux 0xb555a493 bio_alloc_mddev +EXPORT_SYMBOL_GPL vmlinux 0xb562dece inet_hashinfo_init +EXPORT_SYMBOL_GPL vmlinux 0xb5649f8b kvmppc_prepare_to_enter +EXPORT_SYMBOL_GPL vmlinux 0xb57003b4 devfreq_event_get_event +EXPORT_SYMBOL_GPL vmlinux 0xb5848bae __iowrite32_copy +EXPORT_SYMBOL_GPL vmlinux 0xb58dcfa2 synchronize_sched_expedited +EXPORT_SYMBOL_GPL vmlinux 0xb5910d1f gpiochip_lock_as_irq +EXPORT_SYMBOL_GPL vmlinux 0xb5a0e11e lpddr2_jedec_addressing_table +EXPORT_SYMBOL_GPL vmlinux 0xb5aa10af atomic_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0xb5c8edf4 btree_init_mempool +EXPORT_SYMBOL_GPL vmlinux 0xb5d22d1d driver_attach +EXPORT_SYMBOL_GPL vmlinux 0xb5e206ee cpufreq_freq_attr_scaling_available_freqs +EXPORT_SYMBOL_GPL vmlinux 0xb5eba456 thermal_zone_bind_cooling_device +EXPORT_SYMBOL_GPL vmlinux 0xb5f17edf perf_register_guest_info_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xb603ca67 phy_create +EXPORT_SYMBOL_GPL vmlinux 0xb60587c3 ata_link_abort +EXPORT_SYMBOL_GPL vmlinux 0xb60b5707 of_i8042_aux_irq +EXPORT_SYMBOL_GPL vmlinux 0xb6221eb9 __blkg_prfill_rwstat +EXPORT_SYMBOL_GPL vmlinux 0xb6261484 register_die_notifier +EXPORT_SYMBOL_GPL vmlinux 0xb6463663 blk_mq_unfreeze_queue +EXPORT_SYMBOL_GPL vmlinux 0xb69b9c8b ata_pci_bmdma_clear_simplex +EXPORT_SYMBOL_GPL vmlinux 0xb6aeb661 ata_id_c_string +EXPORT_SYMBOL_GPL vmlinux 0xb6c1f528 phy_pm_runtime_get_sync +EXPORT_SYMBOL_GPL vmlinux 0xb6e6d99d clk_disable +EXPORT_SYMBOL_GPL vmlinux 0xb707cc68 sdio_writeb +EXPORT_SYMBOL_GPL vmlinux 0xb7204fc8 __fsnotify_inode_delete +EXPORT_SYMBOL_GPL vmlinux 0xb72a740c extcon_register_interest +EXPORT_SYMBOL_GPL vmlinux 0xb7329c06 clk_set_phase +EXPORT_SYMBOL_GPL vmlinux 0xb738bdc0 of_alias_get_id +EXPORT_SYMBOL_GPL vmlinux 0xb7393ea9 sysfs_add_link_to_group +EXPORT_SYMBOL_GPL vmlinux 0xb7655fa2 class_compat_create_link +EXPORT_SYMBOL_GPL vmlinux 0xb786e77d percpu_ida_alloc +EXPORT_SYMBOL_GPL vmlinux 0xb79191da ata_sas_port_start +EXPORT_SYMBOL_GPL vmlinux 0xb7a8508a evm_inode_init_security +EXPORT_SYMBOL_GPL vmlinux 0xb7bd0156 regmap_irq_get_domain +EXPORT_SYMBOL_GPL vmlinux 0xb7bf623a irq_setup_alt_chip +EXPORT_SYMBOL_GPL vmlinux 0xb7c88104 usb_create_hcd +EXPORT_SYMBOL_GPL vmlinux 0xb7c8a640 platform_bus_type +EXPORT_SYMBOL_GPL vmlinux 0xb7f46e57 rio_mport_read_config_32 +EXPORT_SYMBOL_GPL vmlinux 0xb7f6cf23 pci_hp_add_bridge +EXPORT_SYMBOL_GPL vmlinux 0xb7f77027 rtc_tm_to_ktime +EXPORT_SYMBOL_GPL vmlinux 0xb8150f1d generic_fh_to_parent +EXPORT_SYMBOL_GPL vmlinux 0xb862dca0 mpc8xxx_spi_tx_buf_u8 +EXPORT_SYMBOL_GPL vmlinux 0xb884ebb9 tps6586x_irq_get_virq +EXPORT_SYMBOL_GPL vmlinux 0xb8bd5d5d sata_scr_write +EXPORT_SYMBOL_GPL vmlinux 0xb8cd3a7f nf_logger_put +EXPORT_SYMBOL_GPL vmlinux 0xb8ce0f4f tpm_gen_interrupt +EXPORT_SYMBOL_GPL vmlinux 0xb8db7f46 power_supply_get_property +EXPORT_SYMBOL_GPL vmlinux 0xb903674c scatterwalk_map_and_copy +EXPORT_SYMBOL_GPL vmlinux 0xb908ed96 alarm_start +EXPORT_SYMBOL_GPL vmlinux 0xb9129150 regulator_set_voltage_sel_regmap +EXPORT_SYMBOL_GPL vmlinux 0xb919a716 device_reprobe +EXPORT_SYMBOL_GPL vmlinux 0xb92b5173 pci_generic_config_read +EXPORT_SYMBOL_GPL vmlinux 0xb93c77bb crypto_alloc_tfm +EXPORT_SYMBOL_GPL vmlinux 0xb9613cd3 usb_get_status +EXPORT_SYMBOL_GPL vmlinux 0xb962c4a4 devres_alloc +EXPORT_SYMBOL_GPL vmlinux 0xb9b43595 sysfs_remove_mount_point +EXPORT_SYMBOL_GPL vmlinux 0xb9b9df41 usb_amd_dev_put +EXPORT_SYMBOL_GPL vmlinux 0xb9ba5ae4 regulator_allow_bypass +EXPORT_SYMBOL_GPL vmlinux 0xb9bafb4c sdio_writesb +EXPORT_SYMBOL_GPL vmlinux 0xb9c425de register_syscore_ops +EXPORT_SYMBOL_GPL vmlinux 0xb9cfd940 fat_sync_inode +EXPORT_SYMBOL_GPL vmlinux 0xb9d025c9 llist_del_first +EXPORT_SYMBOL_GPL vmlinux 0xb9daff11 __mmc_switch +EXPORT_SYMBOL_GPL vmlinux 0xb9de6412 wm8350_reg_read +EXPORT_SYMBOL_GPL vmlinux 0xb9e9cf7c ata_scsi_change_queue_depth +EXPORT_SYMBOL_GPL vmlinux 0xb9eaac51 wm8350_reg_write +EXPORT_SYMBOL_GPL vmlinux 0xb9f0f35a class_destroy +EXPORT_SYMBOL_GPL vmlinux 0xb9f68bbb of_clk_get_parent_count +EXPORT_SYMBOL_GPL vmlinux 0xba1a2813 __page_file_mapping +EXPORT_SYMBOL_GPL vmlinux 0xba2b7f64 cpufreq_generic_get +EXPORT_SYMBOL_GPL vmlinux 0xba3bbd02 spi_add_device +EXPORT_SYMBOL_GPL vmlinux 0xbab53868 simple_attr_release +EXPORT_SYMBOL_GPL vmlinux 0xbab9a9f0 maxim_charger_currents +EXPORT_SYMBOL_GPL vmlinux 0xbaca4acb simple_attr_write +EXPORT_SYMBOL_GPL vmlinux 0xbb038ce4 perf_unregister_guest_info_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xbb0ab47b debug_locks +EXPORT_SYMBOL_GPL vmlinux 0xbb2ae57a set_primary_fwnode +EXPORT_SYMBOL_GPL vmlinux 0xbb34a220 spi_alloc_device +EXPORT_SYMBOL_GPL vmlinux 0xbb4a64d9 crypto_larval_kill +EXPORT_SYMBOL_GPL vmlinux 0xbb66fe3d inet_twsk_alloc +EXPORT_SYMBOL_GPL vmlinux 0xbb6f025a asymmetric_key_generate_id +EXPORT_SYMBOL_GPL vmlinux 0xbb743fcf regmap_register_patch +EXPORT_SYMBOL_GPL vmlinux 0xbb9ea22e of_reserved_mem_device_init +EXPORT_SYMBOL_GPL vmlinux 0xbbb809b0 fl6_merge_options +EXPORT_SYMBOL_GPL vmlinux 0xbbc55ee2 pciserial_init_ports +EXPORT_SYMBOL_GPL vmlinux 0xbbd7dc4c dm_get_queue_limits +EXPORT_SYMBOL_GPL vmlinux 0xbc408ad6 fsl_spi_cpm_bufs +EXPORT_SYMBOL_GPL vmlinux 0xbc45b6d3 ip_local_out_sk +EXPORT_SYMBOL_GPL vmlinux 0xbc4e7004 dma_buf_kunmap +EXPORT_SYMBOL_GPL vmlinux 0xbc58e276 tty_buffer_request_room +EXPORT_SYMBOL_GPL vmlinux 0xbc6bf7e4 da903x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xbc8ef12c rhashtable_walk_stop +EXPORT_SYMBOL_GPL vmlinux 0xbcac6160 pm_qos_remove_notifier +EXPORT_SYMBOL_GPL vmlinux 0xbcb0e336 anon_transport_class_unregister +EXPORT_SYMBOL_GPL vmlinux 0xbccfd4d8 register_oldmem_pfn_is_ram +EXPORT_SYMBOL_GPL vmlinux 0xbcd43f96 crypto_alloc_aead +EXPORT_SYMBOL_GPL vmlinux 0xbceb95a5 rtc_set_alarm +EXPORT_SYMBOL_GPL vmlinux 0xbcf4a45d flush_kthread_work +EXPORT_SYMBOL_GPL vmlinux 0xbcf71dd6 usb_alloc_dev +EXPORT_SYMBOL_GPL vmlinux 0xbd107fd8 rio_mport_chk_dev_access +EXPORT_SYMBOL_GPL vmlinux 0xbd1183ed pci_generic_config_write +EXPORT_SYMBOL_GPL vmlinux 0xbd124bf6 __devm_of_phy_provider_register +EXPORT_SYMBOL_GPL vmlinux 0xbd3fe1e3 disable_hardirq +EXPORT_SYMBOL_GPL vmlinux 0xbd41b31d key_type_asymmetric +EXPORT_SYMBOL_GPL vmlinux 0xbd4c264e skb_complete_tx_timestamp +EXPORT_SYMBOL_GPL vmlinux 0xbd5527b2 sata_pmp_port_ops +EXPORT_SYMBOL_GPL vmlinux 0xbd5cb8b9 ring_buffer_resize +EXPORT_SYMBOL_GPL vmlinux 0xbd5e8afb ip6_route_lookup +EXPORT_SYMBOL_GPL vmlinux 0xbd671048 __alloc_percpu_gfp +EXPORT_SYMBOL_GPL vmlinux 0xbda3d4b8 skb_copy_ubufs +EXPORT_SYMBOL_GPL vmlinux 0xbdc717cd i2c_new_device +EXPORT_SYMBOL_GPL vmlinux 0xbdd295f0 trace_vprintk +EXPORT_SYMBOL_GPL vmlinux 0xbdd2f42a rcu_bh_force_quiescent_state +EXPORT_SYMBOL_GPL vmlinux 0xbdd7335a ip6_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0xbdfe4f17 gpiod_cansleep +EXPORT_SYMBOL_GPL vmlinux 0xbe083fc2 pci_user_read_config_word +EXPORT_SYMBOL_GPL vmlinux 0xbe1887e4 ata_unpack_xfermask +EXPORT_SYMBOL_GPL vmlinux 0xbe1e7e29 of_get_display_timing +EXPORT_SYMBOL_GPL vmlinux 0xbe3bb1e3 device_show_ulong +EXPORT_SYMBOL_GPL vmlinux 0xbe50598d pingv6_prot +EXPORT_SYMBOL_GPL vmlinux 0xbe687e88 wake_up_all_idle_cpus +EXPORT_SYMBOL_GPL vmlinux 0xbe7ae854 ata_ehi_clear_desc +EXPORT_SYMBOL_GPL vmlinux 0xbe8bb158 ata_port_wait_eh +EXPORT_SYMBOL_GPL vmlinux 0xbe96dfd8 of_reconfig_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0xbea5ff1e static_key_initialized +EXPORT_SYMBOL_GPL vmlinux 0xbec8d1c8 analyse_instr +EXPORT_SYMBOL_GPL vmlinux 0xbecf87d5 cpufreq_frequency_table_cpuinfo +EXPORT_SYMBOL_GPL vmlinux 0xbee21107 dm_internal_suspend_noflush +EXPORT_SYMBOL_GPL vmlinux 0xbf041102 register_vt_notifier +EXPORT_SYMBOL_GPL vmlinux 0xbf1cc04b tty_termios_encode_baud_rate +EXPORT_SYMBOL_GPL vmlinux 0xbf22504a da903x_write +EXPORT_SYMBOL_GPL vmlinux 0xbf30a48b pci_intx +EXPORT_SYMBOL_GPL vmlinux 0xbf54b646 ablkcipher_walk_done +EXPORT_SYMBOL_GPL vmlinux 0xbf564453 __gpiod_get_optional +EXPORT_SYMBOL_GPL vmlinux 0xbf5722fd devm_pwm_get +EXPORT_SYMBOL_GPL vmlinux 0xbf5ba6f6 ata_dev_disable +EXPORT_SYMBOL_GPL vmlinux 0xbf695dd8 devm_regmap_init_spi +EXPORT_SYMBOL_GPL vmlinux 0xbf9ddce8 vfs_setxattr +EXPORT_SYMBOL_GPL vmlinux 0xbfa5f3d1 dma_request_slave_channel_reason +EXPORT_SYMBOL_GPL vmlinux 0xbfb1db41 ptp_classify_raw +EXPORT_SYMBOL_GPL vmlinux 0xbfb490a0 relay_buf_full +EXPORT_SYMBOL_GPL vmlinux 0xbfbac3b6 __netpoll_free_async +EXPORT_SYMBOL_GPL vmlinux 0xbfbc5434 pciserial_resume_ports +EXPORT_SYMBOL_GPL vmlinux 0xbfbe7afc fuse_dev_free +EXPORT_SYMBOL_GPL vmlinux 0xbfe133df kobj_sysfs_ops +EXPORT_SYMBOL_GPL vmlinux 0xbfe5616d tick_broadcast_oneshot_control +EXPORT_SYMBOL_GPL vmlinux 0xbfe7ce14 cpufreq_driver_target +EXPORT_SYMBOL_GPL vmlinux 0xbffde8ec compat_alloc_user_space +EXPORT_SYMBOL_GPL vmlinux 0xc02a6cb0 gfn_to_pfn_prot +EXPORT_SYMBOL_GPL vmlinux 0xc02bec3c usb_unlink_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0xc0549f37 phy_exit +EXPORT_SYMBOL_GPL vmlinux 0xc061367e mpic_msgr_get +EXPORT_SYMBOL_GPL vmlinux 0xc0637d91 __fsnotify_parent +EXPORT_SYMBOL_GPL vmlinux 0xc065a455 cpu_core_index_of_thread +EXPORT_SYMBOL_GPL vmlinux 0xc08647ff ring_buffer_bytes_cpu +EXPORT_SYMBOL_GPL vmlinux 0xc0900248 pcibios_map_io_space +EXPORT_SYMBOL_GPL vmlinux 0xc0a30a10 clk_register_gpio_gate +EXPORT_SYMBOL_GPL vmlinux 0xc0a96e14 rcu_gp_is_expedited +EXPORT_SYMBOL_GPL vmlinux 0xc0b2063f of_clk_parent_fill +EXPORT_SYMBOL_GPL vmlinux 0xc0d26387 kmsg_dump_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc0df8865 timerqueue_add +EXPORT_SYMBOL_GPL vmlinux 0xc0e2ef94 ip6_push_pending_frames +EXPORT_SYMBOL_GPL vmlinux 0xc1134b69 unregister_asymmetric_key_parser +EXPORT_SYMBOL_GPL vmlinux 0xc1160d0c vfs_test_lock +EXPORT_SYMBOL_GPL vmlinux 0xc12d25ed fib_rules_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc139e2fd dma_buf_vunmap +EXPORT_SYMBOL_GPL vmlinux 0xc1606ceb ata_host_init +EXPORT_SYMBOL_GPL vmlinux 0xc17515d7 usb_hcds_loaded +EXPORT_SYMBOL_GPL vmlinux 0xc17a0e78 rio_request_inb_mbox +EXPORT_SYMBOL_GPL vmlinux 0xc1ade409 clockevents_unbind_device +EXPORT_SYMBOL_GPL vmlinux 0xc1b9471e kvm_vcpu_init +EXPORT_SYMBOL_GPL vmlinux 0xc1eb559b nd_blk_region_set_provider_data +EXPORT_SYMBOL_GPL vmlinux 0xc1f22ff7 component_unbind_all +EXPORT_SYMBOL_GPL vmlinux 0xc211cbbd each_symbol_section +EXPORT_SYMBOL_GPL vmlinux 0xc21c956a tc3589x_reg_read +EXPORT_SYMBOL_GPL vmlinux 0xc22a3091 vm_unmap_aliases +EXPORT_SYMBOL_GPL vmlinux 0xc236c567 page_cache_async_readahead +EXPORT_SYMBOL_GPL vmlinux 0xc27613cc usb_set_device_state +EXPORT_SYMBOL_GPL vmlinux 0xc280fb46 kdb_register +EXPORT_SYMBOL_GPL vmlinux 0xc29e7aa4 regulator_set_voltage_time_sel +EXPORT_SYMBOL_GPL vmlinux 0xc2c25342 usb_poison_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0xc2f15427 inet_csk_bind_conflict +EXPORT_SYMBOL_GPL vmlinux 0xc311c679 tracepoint_probe_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc323296d pci_num_vf +EXPORT_SYMBOL_GPL vmlinux 0xc33c1a37 tpm2_startup +EXPORT_SYMBOL_GPL vmlinux 0xc33ef9e8 rio_route_add_entry +EXPORT_SYMBOL_GPL vmlinux 0xc341ae6d zs_map_object +EXPORT_SYMBOL_GPL vmlinux 0xc34c00bc register_kretprobe +EXPORT_SYMBOL_GPL vmlinux 0xc34f2958 usb_free_streams +EXPORT_SYMBOL_GPL vmlinux 0xc352c241 ip_route_output_flow +EXPORT_SYMBOL_GPL vmlinux 0xc357923c pm_qos_update_request +EXPORT_SYMBOL_GPL vmlinux 0xc362184a dev_pm_put_subsys_data +EXPORT_SYMBOL_GPL vmlinux 0xc37226a5 tpm_pcr_extend +EXPORT_SYMBOL_GPL vmlinux 0xc3838b27 of_property_read_string_helper +EXPORT_SYMBOL_GPL vmlinux 0xc38bf3c9 clk_register +EXPORT_SYMBOL_GPL vmlinux 0xc3b4b5e0 virtqueue_enable_cb_prepare +EXPORT_SYMBOL_GPL vmlinux 0xc3c859ca dev_pm_qos_expose_latency_tolerance +EXPORT_SYMBOL_GPL vmlinux 0xc3c9d8af kvmppc_kvm_pv +EXPORT_SYMBOL_GPL vmlinux 0xc3ca85b8 irq_gc_ack_set_bit +EXPORT_SYMBOL_GPL vmlinux 0xc40a7a20 of_get_pci_domain_nr +EXPORT_SYMBOL_GPL vmlinux 0xc40df3b1 of_platform_populate +EXPORT_SYMBOL_GPL vmlinux 0xc428068d sata_deb_timing_long +EXPORT_SYMBOL_GPL vmlinux 0xc4476458 ping_get_port +EXPORT_SYMBOL_GPL vmlinux 0xc448a51d dma_buf_mmap +EXPORT_SYMBOL_GPL vmlinux 0xc451006a scsi_bus_type +EXPORT_SYMBOL_GPL vmlinux 0xc454fc7b twl_get_type +EXPORT_SYMBOL_GPL vmlinux 0xc45a149e agp_remove_bridge +EXPORT_SYMBOL_GPL vmlinux 0xc4651c1f inet_csk_addr2sockaddr +EXPORT_SYMBOL_GPL vmlinux 0xc46b0f98 led_classdev_register +EXPORT_SYMBOL_GPL vmlinux 0xc471c67a twl4030_audio_disable_resource +EXPORT_SYMBOL_GPL vmlinux 0xc4803e78 alloc_vm_area +EXPORT_SYMBOL_GPL vmlinux 0xc48692a2 arizona_of_get_named_gpio +EXPORT_SYMBOL_GPL vmlinux 0xc487b10f blkcipher_walk_phys +EXPORT_SYMBOL_GPL vmlinux 0xc48b7ccf ata_mode_string +EXPORT_SYMBOL_GPL vmlinux 0xc4a16a61 unregister_jprobe +EXPORT_SYMBOL_GPL vmlinux 0xc4d640ec pci_vfs_assigned +EXPORT_SYMBOL_GPL vmlinux 0xc5150c1a regulator_list_voltage_linear_range +EXPORT_SYMBOL_GPL vmlinux 0xc53f6a1a usb_find_interface +EXPORT_SYMBOL_GPL vmlinux 0xc542933a timecounter_read +EXPORT_SYMBOL_GPL vmlinux 0xc5710900 cpufreq_unregister_governor +EXPORT_SYMBOL_GPL vmlinux 0xc575c737 debug_locks_off +EXPORT_SYMBOL_GPL vmlinux 0xc57e6abd tps6586x_get_version +EXPORT_SYMBOL_GPL vmlinux 0xc59bd259 desc_to_gpio +EXPORT_SYMBOL_GPL vmlinux 0xc5a12ec6 wm831x_device_shutdown +EXPORT_SYMBOL_GPL vmlinux 0xc5a1c470 fwnode_property_read_u8_array +EXPORT_SYMBOL_GPL vmlinux 0xc5a2c19f idr_alloc +EXPORT_SYMBOL_GPL vmlinux 0xc5b3c527 crypto_mod_put +EXPORT_SYMBOL_GPL vmlinux 0xc5c2b446 blkg_rwstat_recursive_sum +EXPORT_SYMBOL_GPL vmlinux 0xc5db7dfd extcon_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0xc5e51c92 bus_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0xc5e5393c sb800_prefetch +EXPORT_SYMBOL_GPL vmlinux 0xc5ede584 ohci_resume +EXPORT_SYMBOL_GPL vmlinux 0xc606cd3c boot_cpuid +EXPORT_SYMBOL_GPL vmlinux 0xc617f82c unregister_oom_notifier +EXPORT_SYMBOL_GPL vmlinux 0xc62ad192 pwm_get_chip_data +EXPORT_SYMBOL_GPL vmlinux 0xc63d847d ktime_get_mono_fast_ns +EXPORT_SYMBOL_GPL vmlinux 0xc6407778 cpufreq_show_cpus +EXPORT_SYMBOL_GPL vmlinux 0xc649d5c6 sata_link_debounce +EXPORT_SYMBOL_GPL vmlinux 0xc65d3eed ring_buffer_entries_cpu +EXPORT_SYMBOL_GPL vmlinux 0xc6624a97 devm_regulator_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc679741d cleanup_srcu_struct +EXPORT_SYMBOL_GPL vmlinux 0xc67e36b7 __blocking_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xc68aa252 __atomic_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xc69b7ee5 zs_destroy_pool +EXPORT_SYMBOL_GPL vmlinux 0xc6a4a872 __clk_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0xc6c02c48 blk_mq_tags_cpumask +EXPORT_SYMBOL_GPL vmlinux 0xc6c0aba3 clk_fractional_divider_ops +EXPORT_SYMBOL_GPL vmlinux 0xc6cc1043 __netlink_alloc_skb +EXPORT_SYMBOL_GPL vmlinux 0xc70e4b59 kvmppc_claim_lpid +EXPORT_SYMBOL_GPL vmlinux 0xc70f39ec spi_bus_type +EXPORT_SYMBOL_GPL vmlinux 0xc72e1233 __trace_bprintk +EXPORT_SYMBOL_GPL vmlinux 0xc76b5595 mnt_want_write +EXPORT_SYMBOL_GPL vmlinux 0xc76d6877 ata_common_sdev_attrs +EXPORT_SYMBOL_GPL vmlinux 0xc777b875 usb_get_current_frame_number +EXPORT_SYMBOL_GPL vmlinux 0xc795742c exportfs_decode_fh +EXPORT_SYMBOL_GPL vmlinux 0xc7a1840e llist_add_batch +EXPORT_SYMBOL_GPL vmlinux 0xc7c6391c mpi_set_buffer +EXPORT_SYMBOL_GPL vmlinux 0xc7cead27 setup_irq +EXPORT_SYMBOL_GPL vmlinux 0xc7e39bca ring_buffer_dropped_events_cpu +EXPORT_SYMBOL_GPL vmlinux 0xc7f6069f tps80031_ext_power_req_config +EXPORT_SYMBOL_GPL vmlinux 0xc804464e ata_bmdma_dumb_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0xc807e8a8 stmpe_block_write +EXPORT_SYMBOL_GPL vmlinux 0xc80d6d48 ata_eh_qc_retry +EXPORT_SYMBOL_GPL vmlinux 0xc82e0275 device_property_read_u8_array +EXPORT_SYMBOL_GPL vmlinux 0xc82e3f49 extcon_unregister_interest +EXPORT_SYMBOL_GPL vmlinux 0xc83c71d9 thermal_zone_device_update +EXPORT_SYMBOL_GPL vmlinux 0xc83c8f60 led_trigger_blink +EXPORT_SYMBOL_GPL vmlinux 0xc84239e7 inet_csk_listen_stop +EXPORT_SYMBOL_GPL vmlinux 0xc85beb46 ata_dev_next +EXPORT_SYMBOL_GPL vmlinux 0xc86ae626 nd_device_attribute_group +EXPORT_SYMBOL_GPL vmlinux 0xc8713772 clk_register_mux_table +EXPORT_SYMBOL_GPL vmlinux 0xc87c1f84 ktime_get +EXPORT_SYMBOL_GPL vmlinux 0xc8803ba8 rio_release_inb_mbox +EXPORT_SYMBOL_GPL vmlinux 0xc8874bc9 rio_enable_rx_tx_port +EXPORT_SYMBOL_GPL vmlinux 0xc89c4492 usb_wakeup_notification +EXPORT_SYMBOL_GPL vmlinux 0xc8a0e5c6 thermal_zone_of_sensor_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc8a65f45 usb_phy_gen_create_phy +EXPORT_SYMBOL_GPL vmlinux 0xc8a7698e debugfs_print_regs32 +EXPORT_SYMBOL_GPL vmlinux 0xc8add232 ring_buffer_record_disable +EXPORT_SYMBOL_GPL vmlinux 0xc8c1620a of_prop_next_u32 +EXPORT_SYMBOL_GPL vmlinux 0xc8da3db0 devm_usb_get_phy_by_node +EXPORT_SYMBOL_GPL vmlinux 0xc8de802f cn_netlink_send +EXPORT_SYMBOL_GPL vmlinux 0xc8e38e77 sata_link_hardreset +EXPORT_SYMBOL_GPL vmlinux 0xc8f28368 device_create +EXPORT_SYMBOL_GPL vmlinux 0xc8f972af cpu_add_dev_attr_group +EXPORT_SYMBOL_GPL vmlinux 0xc91277a1 kgdb_schedule_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0xc9163e8a percpu_ida_for_each_free +EXPORT_SYMBOL_GPL vmlinux 0xc91bfef2 clk_register_divider_table +EXPORT_SYMBOL_GPL vmlinux 0xc927bcd2 ata_do_dev_read_id +EXPORT_SYMBOL_GPL vmlinux 0xc934e6d4 pci_probe_reset_bus +EXPORT_SYMBOL_GPL vmlinux 0xc9561772 fb_destroy_modelist +EXPORT_SYMBOL_GPL vmlinux 0xc9641b48 visitor32 +EXPORT_SYMBOL_GPL vmlinux 0xc964c34a tpm_chip_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc970b5e6 relay_close +EXPORT_SYMBOL_GPL vmlinux 0xc97925c8 digsig_verify +EXPORT_SYMBOL_GPL vmlinux 0xc97d1140 cpufreq_cooling_get_level +EXPORT_SYMBOL_GPL vmlinux 0xc981debc usb_block_urb +EXPORT_SYMBOL_GPL vmlinux 0xc9878491 ping_seq_start +EXPORT_SYMBOL_GPL vmlinux 0xc987e385 devm_phy_create +EXPORT_SYMBOL_GPL vmlinux 0xc992bc45 dm_send_uevents +EXPORT_SYMBOL_GPL vmlinux 0xc9b9e88a list_lru_count_one +EXPORT_SYMBOL_GPL vmlinux 0xc9bb9359 tun_get_socket +EXPORT_SYMBOL_GPL vmlinux 0xc9ceffdf ata_sff_data_xfer_noirq +EXPORT_SYMBOL_GPL vmlinux 0xc9d664bb phy_pm_runtime_put +EXPORT_SYMBOL_GPL vmlinux 0xc9dadf5b xfrm_audit_state_delete +EXPORT_SYMBOL_GPL vmlinux 0xc9eb7d6e unix_peer_get +EXPORT_SYMBOL_GPL vmlinux 0xc9ec4e21 free_percpu +EXPORT_SYMBOL_GPL vmlinux 0xca068f25 crypto_ahash_walk_first +EXPORT_SYMBOL_GPL vmlinux 0xca144be4 platform_get_irq_byname +EXPORT_SYMBOL_GPL vmlinux 0xca59d170 ipv4_sk_redirect +EXPORT_SYMBOL_GPL vmlinux 0xca7d8764 kthread_freezable_should_stop +EXPORT_SYMBOL_GPL vmlinux 0xca87b7f5 component_del +EXPORT_SYMBOL_GPL vmlinux 0xcaa07a32 uart_set_options +EXPORT_SYMBOL_GPL vmlinux 0xcaa4b0c4 pci_sriov_set_totalvfs +EXPORT_SYMBOL_GPL vmlinux 0xcaa56352 rt_mutex_trylock +EXPORT_SYMBOL_GPL vmlinux 0xcabe04de cpuidle_resume_and_unlock +EXPORT_SYMBOL_GPL vmlinux 0xcac34eaf of_pci_get_host_bridge_resources +EXPORT_SYMBOL_GPL vmlinux 0xcae2fea2 gpiod_count +EXPORT_SYMBOL_GPL vmlinux 0xcae6346b kvm_clear_guest +EXPORT_SYMBOL_GPL vmlinux 0xcb15eee9 sdhci_pci_get_data +EXPORT_SYMBOL_GPL vmlinux 0xcb469d2b ddebug_add_module +EXPORT_SYMBOL_GPL vmlinux 0xcb95c185 pwmchip_remove +EXPORT_SYMBOL_GPL vmlinux 0xcbaadad7 pci_cleanup_aer_uncorrect_error_status +EXPORT_SYMBOL_GPL vmlinux 0xcbc0b288 dummy_con +EXPORT_SYMBOL_GPL vmlinux 0xcbd6e577 sdio_f0_writeb +EXPORT_SYMBOL_GPL vmlinux 0xcbe56bc2 zs_get_total_pages +EXPORT_SYMBOL_GPL vmlinux 0xcbee20b2 get_cpu_iowait_time_us +EXPORT_SYMBOL_GPL vmlinux 0xcbff661c ata_port_pbar_desc +EXPORT_SYMBOL_GPL vmlinux 0xcc0d746d trace_seq_vprintf +EXPORT_SYMBOL_GPL vmlinux 0xcc0f1009 power_supply_notifier +EXPORT_SYMBOL_GPL vmlinux 0xcc2ba30d list_lru_del +EXPORT_SYMBOL_GPL vmlinux 0xcc330394 regmap_field_update_bits +EXPORT_SYMBOL_GPL vmlinux 0xcc44961f kvmppc_alloc_lpid +EXPORT_SYMBOL_GPL vmlinux 0xcc85fcb6 async_schedule +EXPORT_SYMBOL_GPL vmlinux 0xcc96ef94 usb_hcd_start_port_resume +EXPORT_SYMBOL_GPL vmlinux 0xcc9f3454 to_nd_blk_region +EXPORT_SYMBOL_GPL vmlinux 0xccabbb93 of_get_display_timings +EXPORT_SYMBOL_GPL vmlinux 0xcccfb2fa sata_deb_timing_hotplug +EXPORT_SYMBOL_GPL vmlinux 0xcd2d37ab devm_kstrdup +EXPORT_SYMBOL_GPL vmlinux 0xcd3e9337 shash_attr_alg +EXPORT_SYMBOL_GPL vmlinux 0xcd428790 irq_alloc_domain_generic_chips +EXPORT_SYMBOL_GPL vmlinux 0xcd42bf13 ndo_dflt_bridge_getlink +EXPORT_SYMBOL_GPL vmlinux 0xcd8ee116 nfq_ct_hook +EXPORT_SYMBOL_GPL vmlinux 0xcd91b127 system_highpri_wq +EXPORT_SYMBOL_GPL vmlinux 0xcd974f00 rcu_all_qs +EXPORT_SYMBOL_GPL vmlinux 0xcdb6adcc ras_userspace_consumers +EXPORT_SYMBOL_GPL vmlinux 0xcdca3691 nr_irqs +EXPORT_SYMBOL_GPL vmlinux 0xce2db77d ata_host_alloc_pinfo +EXPORT_SYMBOL_GPL vmlinux 0xce39142c trace_define_field +EXPORT_SYMBOL_GPL vmlinux 0xce48b9ab ata_cable_ignore +EXPORT_SYMBOL_GPL vmlinux 0xce4b2597 usb_hcd_unmap_urb_for_dma +EXPORT_SYMBOL_GPL vmlinux 0xce4ff660 attribute_container_find_class_device +EXPORT_SYMBOL_GPL vmlinux 0xce5d41aa dax_clear_blocks +EXPORT_SYMBOL_GPL vmlinux 0xce682329 skb_morph +EXPORT_SYMBOL_GPL vmlinux 0xce6a3d1d fat_free_clusters +EXPORT_SYMBOL_GPL vmlinux 0xce6a9d9a trace_current_buffer_discard_commit +EXPORT_SYMBOL_GPL vmlinux 0xce6db656 rcu_is_watching +EXPORT_SYMBOL_GPL vmlinux 0xce7084db ata_sff_data_xfer +EXPORT_SYMBOL_GPL vmlinux 0xceb1f126 mpi_read_raw_data +EXPORT_SYMBOL_GPL vmlinux 0xced43c6f blkg_conf_prep +EXPORT_SYMBOL_GPL vmlinux 0xcee1641c kgdb_unregister_nmi_console +EXPORT_SYMBOL_GPL vmlinux 0xcf141b65 dma_buf_get +EXPORT_SYMBOL_GPL vmlinux 0xcf51b78a usb_free_urb +EXPORT_SYMBOL_GPL vmlinux 0xcf54ea93 async_unregister_domain +EXPORT_SYMBOL_GPL vmlinux 0xcf62f540 fwnode_property_read_string_array +EXPORT_SYMBOL_GPL vmlinux 0xcf9bb831 inet_getpeer +EXPORT_SYMBOL_GPL vmlinux 0xcfa39eca __tracepoint_rpm_suspend +EXPORT_SYMBOL_GPL vmlinux 0xcfa51395 system_trusted_keyring +EXPORT_SYMBOL_GPL vmlinux 0xcfa5f55b alloc_page_buffers +EXPORT_SYMBOL_GPL vmlinux 0xcfb5871c irq_work_queue +EXPORT_SYMBOL_GPL vmlinux 0xcfc68341 synchronize_rcu_bh +EXPORT_SYMBOL_GPL vmlinux 0xd00084a0 blk_rq_prep_clone +EXPORT_SYMBOL_GPL vmlinux 0xd004dbbe usb_disable_ltm +EXPORT_SYMBOL_GPL vmlinux 0xd006d2de __blkdev_driver_ioctl +EXPORT_SYMBOL_GPL vmlinux 0xd010ed22 driver_register +EXPORT_SYMBOL_GPL vmlinux 0xd01d898f skcipher_geniv_init +EXPORT_SYMBOL_GPL vmlinux 0xd03c7700 secure_ipv4_port_ephemeral +EXPORT_SYMBOL_GPL vmlinux 0xd03e4096 get_pid_task +EXPORT_SYMBOL_GPL vmlinux 0xd0493df5 __mmu_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0xd04fbd56 blk_mq_freeze_queue_start +EXPORT_SYMBOL_GPL vmlinux 0xd05f6058 rio_dev_get +EXPORT_SYMBOL_GPL vmlinux 0xd06524ba raw_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd067d3c5 system_freezable_power_efficient_wq +EXPORT_SYMBOL_GPL vmlinux 0xd06fe07b ata_sff_irq_on +EXPORT_SYMBOL_GPL vmlinux 0xd09521fa debugfs_create_x64 +EXPORT_SYMBOL_GPL vmlinux 0xd0a94558 ehci_suspend +EXPORT_SYMBOL_GPL vmlinux 0xd0aa8887 sysfs_create_groups +EXPORT_SYMBOL_GPL vmlinux 0xd0ade83d of_irq_parse_pci +EXPORT_SYMBOL_GPL vmlinux 0xd0c05159 emergency_restart +EXPORT_SYMBOL_GPL vmlinux 0xd0c40631 rhashtable_walk_next +EXPORT_SYMBOL_GPL vmlinux 0xd0cb977e cpuidle_register_driver +EXPORT_SYMBOL_GPL vmlinux 0xd0cde4ea device_property_read_u32_array +EXPORT_SYMBOL_GPL vmlinux 0xd0d6ac23 usb_find_alt_setting +EXPORT_SYMBOL_GPL vmlinux 0xd0d991ee __mmdrop +EXPORT_SYMBOL_GPL vmlinux 0xd10b2f8e thermal_zone_get_temp +EXPORT_SYMBOL_GPL vmlinux 0xd12148f6 dev_pm_qos_update_request +EXPORT_SYMBOL_GPL vmlinux 0xd1398a65 rtnl_af_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd13d0bac rio_add_device +EXPORT_SYMBOL_GPL vmlinux 0xd14af9e8 shmem_read_mapping_page_gfp +EXPORT_SYMBOL_GPL vmlinux 0xd16712f3 crypto_check_attr_type +EXPORT_SYMBOL_GPL vmlinux 0xd1ab9c13 rio_map_inb_region +EXPORT_SYMBOL_GPL vmlinux 0xd1af14ac pwm_put +EXPORT_SYMBOL_GPL vmlinux 0xd1b527f7 rio_request_dma +EXPORT_SYMBOL_GPL vmlinux 0xd1c3ecbb sdio_readl +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 0xd22babb6 arizona_dev_exit +EXPORT_SYMBOL_GPL vmlinux 0xd23f9843 __srcu_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xd23fc14d platform_get_resource +EXPORT_SYMBOL_GPL vmlinux 0xd25c04be pci_load_and_free_saved_state +EXPORT_SYMBOL_GPL vmlinux 0xd273b1b1 __round_jiffies_up_relative +EXPORT_SYMBOL_GPL vmlinux 0xd27eb59f dm_get_rq_mapinfo +EXPORT_SYMBOL_GPL vmlinux 0xd292c094 mddev_unlock +EXPORT_SYMBOL_GPL vmlinux 0xd2a32c65 blk_queue_bypass_start +EXPORT_SYMBOL_GPL vmlinux 0xd2a36a30 dm_disk +EXPORT_SYMBOL_GPL vmlinux 0xd2b4ef8b mbox_controller_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd2edf4b7 ata_get_cmd_descript +EXPORT_SYMBOL_GPL vmlinux 0xd2fc9905 sysfs_remove_file_ns +EXPORT_SYMBOL_GPL vmlinux 0xd308e723 usb_phy_generic_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd342008c ip6_datagram_connect_v6_only +EXPORT_SYMBOL_GPL vmlinux 0xd34880cc tpm_pm_suspend +EXPORT_SYMBOL_GPL vmlinux 0xd3afc0ed md_kick_rdev_from_array +EXPORT_SYMBOL_GPL vmlinux 0xd3c50b84 led_trigger_store +EXPORT_SYMBOL_GPL vmlinux 0xd3d83d91 event_triggers_post_call +EXPORT_SYMBOL_GPL vmlinux 0xd3e4d37b max8997_read_reg +EXPORT_SYMBOL_GPL vmlinux 0xd3f85754 register_ftrace_function +EXPORT_SYMBOL_GPL vmlinux 0xd4034828 system_freezable_wq +EXPORT_SYMBOL_GPL vmlinux 0xd4075267 rdev_get_id +EXPORT_SYMBOL_GPL vmlinux 0xd41ccdf1 dma_buf_kmap +EXPORT_SYMBOL_GPL vmlinux 0xd41fffab interval_tree_iter_first +EXPORT_SYMBOL_GPL vmlinux 0xd421370b gpiochip_find +EXPORT_SYMBOL_GPL vmlinux 0xd4487fd5 snprint_stack_trace +EXPORT_SYMBOL_GPL vmlinux 0xd44a5eac kgdb_register_nmi_console +EXPORT_SYMBOL_GPL vmlinux 0xd45be601 ata_scsi_slave_config +EXPORT_SYMBOL_GPL vmlinux 0xd478c0c8 rtnl_register +EXPORT_SYMBOL_GPL vmlinux 0xd483fdfd find_extend_vma +EXPORT_SYMBOL_GPL vmlinux 0xd4b8c15c device_property_read_u64_array +EXPORT_SYMBOL_GPL vmlinux 0xd4c14632 system_unbound_wq +EXPORT_SYMBOL_GPL vmlinux 0xd4c37cc1 ata_sas_async_probe +EXPORT_SYMBOL_GPL vmlinux 0xd4ca42c1 rio_set_port_lockout +EXPORT_SYMBOL_GPL vmlinux 0xd4ead67f regulator_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0xd4f07922 regmap_update_bits_check +EXPORT_SYMBOL_GPL vmlinux 0xd4f273d6 kvmppc_emulate_mmio +EXPORT_SYMBOL_GPL vmlinux 0xd50d4f8f device_move +EXPORT_SYMBOL_GPL vmlinux 0xd56b5f64 ktime_get_ts64 +EXPORT_SYMBOL_GPL vmlinux 0xd5aa57bb kvm_write_guest_cached +EXPORT_SYMBOL_GPL vmlinux 0xd5ba2ab2 of_property_read_u8_array +EXPORT_SYMBOL_GPL vmlinux 0xd5bd7dac ring_buffer_record_enable_cpu +EXPORT_SYMBOL_GPL vmlinux 0xd5eb1675 regulator_get_voltage +EXPORT_SYMBOL_GPL vmlinux 0xd60bd91d aead_geniv_exit +EXPORT_SYMBOL_GPL vmlinux 0xd60c99b5 rcu_batches_completed_bh +EXPORT_SYMBOL_GPL vmlinux 0xd61e1246 crypto_unregister_template +EXPORT_SYMBOL_GPL vmlinux 0xd62eb1c2 kern_mount_data +EXPORT_SYMBOL_GPL vmlinux 0xd67364f7 eventfd_ctx_fdget +EXPORT_SYMBOL_GPL vmlinux 0xd68b0ba5 pci_ioremap_bar +EXPORT_SYMBOL_GPL vmlinux 0xd6a3fbe6 ata_sff_exec_command +EXPORT_SYMBOL_GPL vmlinux 0xd6b56c1c hvc_remove +EXPORT_SYMBOL_GPL vmlinux 0xd6c52c19 tty_ldisc_flush +EXPORT_SYMBOL_GPL vmlinux 0xd6d09e5d usb_put_phy +EXPORT_SYMBOL_GPL vmlinux 0xd6e1be8d thermal_cooling_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd6feefa5 agp_num_entries +EXPORT_SYMBOL_GPL vmlinux 0xd705b4c7 schedule_hrtimeout +EXPORT_SYMBOL_GPL vmlinux 0xd717fdf7 ipv6_proxy_select_ident +EXPORT_SYMBOL_GPL vmlinux 0xd71d9df4 regmap_fields_write +EXPORT_SYMBOL_GPL vmlinux 0xd7350bb2 virtqueue_add_inbuf +EXPORT_SYMBOL_GPL vmlinux 0xd73dd3a4 __rtnl_link_register +EXPORT_SYMBOL_GPL vmlinux 0xd749b43a tty_ldisc_ref +EXPORT_SYMBOL_GPL vmlinux 0xd756a87f bus_sort_breadthfirst +EXPORT_SYMBOL_GPL vmlinux 0xd759d61c sysfs_remove_files +EXPORT_SYMBOL_GPL vmlinux 0xd768e985 regulator_has_full_constraints +EXPORT_SYMBOL_GPL vmlinux 0xd77a826c virtqueue_notify +EXPORT_SYMBOL_GPL vmlinux 0xd77c0bc8 klist_remove +EXPORT_SYMBOL_GPL vmlinux 0xd798328f wm8400_reset_codec_reg_cache +EXPORT_SYMBOL_GPL vmlinux 0xd799a432 shash_ahash_digest +EXPORT_SYMBOL_GPL vmlinux 0xd7adb037 of_get_phy_mode +EXPORT_SYMBOL_GPL vmlinux 0xd7b81fb1 device_register +EXPORT_SYMBOL_GPL vmlinux 0xd7cf6ae3 __mmu_notifier_invalidate_range_start +EXPORT_SYMBOL_GPL vmlinux 0xd7e3257f sysfs_create_file_ns +EXPORT_SYMBOL_GPL vmlinux 0xd7e4449e srcu_barrier +EXPORT_SYMBOL_GPL vmlinux 0xd802e3b3 ping_seq_fops +EXPORT_SYMBOL_GPL vmlinux 0xd81de62c ring_buffer_record_enable +EXPORT_SYMBOL_GPL vmlinux 0xd820c283 eventfd_ctx_remove_wait_queue +EXPORT_SYMBOL_GPL vmlinux 0xd828a786 unregister_jprobes +EXPORT_SYMBOL_GPL vmlinux 0xd84d0283 ata_sff_postreset +EXPORT_SYMBOL_GPL vmlinux 0xd860a1d8 bus_find_device_by_name +EXPORT_SYMBOL_GPL vmlinux 0xd864f795 led_trigger_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd87601cc ring_buffer_unlock_commit +EXPORT_SYMBOL_GPL vmlinux 0xd876ea26 crypto_unregister_rng +EXPORT_SYMBOL_GPL vmlinux 0xd87fc0a0 usb_amd_prefetch_quirk +EXPORT_SYMBOL_GPL vmlinux 0xd8a12f2e ping_err +EXPORT_SYMBOL_GPL vmlinux 0xd8a9f1c7 usb_unpoison_urb +EXPORT_SYMBOL_GPL vmlinux 0xd8c68f1c phy_destroy +EXPORT_SYMBOL_GPL vmlinux 0xd8da4636 vfs_lock_file +EXPORT_SYMBOL_GPL vmlinux 0xd8e59f98 rtc_update_irq_enable +EXPORT_SYMBOL_GPL vmlinux 0xd8eb8556 i2c_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0xd90033f9 fwnode_property_read_u32_array +EXPORT_SYMBOL_GPL vmlinux 0xd9085fc9 cpufreq_table_validate_and_show +EXPORT_SYMBOL_GPL vmlinux 0xd932c26d blk_insert_cloned_request +EXPORT_SYMBOL_GPL vmlinux 0xd942d353 ring_buffer_record_off +EXPORT_SYMBOL_GPL vmlinux 0xd94aa457 display_timings_release +EXPORT_SYMBOL_GPL vmlinux 0xd952dd34 cpufreq_frequency_table_get_index +EXPORT_SYMBOL_GPL vmlinux 0xd95c15d2 ata_dev_set_feature +EXPORT_SYMBOL_GPL vmlinux 0xd966dc92 inet6_sk_rebuild_header +EXPORT_SYMBOL_GPL vmlinux 0xd96babb4 interval_tree_iter_next +EXPORT_SYMBOL_GPL vmlinux 0xd97de6ab ata_sff_thaw +EXPORT_SYMBOL_GPL vmlinux 0xd9871d89 __module_address +EXPORT_SYMBOL_GPL vmlinux 0xd9a8cb97 single_release_net +EXPORT_SYMBOL_GPL vmlinux 0xd9bc57c0 device_get_next_child_node +EXPORT_SYMBOL_GPL vmlinux 0xd9e78083 handle_fasteoi_irq +EXPORT_SYMBOL_GPL vmlinux 0xd9ecb670 ring_buffer_overruns +EXPORT_SYMBOL_GPL vmlinux 0xda0a4d22 mpic_msgr_enable +EXPORT_SYMBOL_GPL vmlinux 0xda0b5fd7 devm_regulator_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0xda24a2c6 dev_forward_skb +EXPORT_SYMBOL_GPL vmlinux 0xda6832f9 nf_unregister_afinfo +EXPORT_SYMBOL_GPL vmlinux 0xda7ab066 nvdimm_provider_data +EXPORT_SYMBOL_GPL vmlinux 0xda8cb2e5 threads_core_mask +EXPORT_SYMBOL_GPL vmlinux 0xda9970fd rio_dma_prep_slave_sg +EXPORT_SYMBOL_GPL vmlinux 0xda997ec7 extcon_dev_register +EXPORT_SYMBOL_GPL vmlinux 0xdac777ec led_classdev_resume +EXPORT_SYMBOL_GPL vmlinux 0xdae715e0 videomode_from_timing +EXPORT_SYMBOL_GPL vmlinux 0xdaed3073 timerqueue_del +EXPORT_SYMBOL_GPL vmlinux 0xdaf4dfb3 fb_mode_option +EXPORT_SYMBOL_GPL vmlinux 0xdaf8eeae led_trigger_unregister_simple +EXPORT_SYMBOL_GPL vmlinux 0xdafd361e wm8350_read_auxadc +EXPORT_SYMBOL_GPL vmlinux 0xdb185037 __mmu_notifier_invalidate_range +EXPORT_SYMBOL_GPL vmlinux 0xdb2d05ce virtqueue_enable_cb +EXPORT_SYMBOL_GPL vmlinux 0xdb669198 srcu_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0xdb7e1020 device_property_present +EXPORT_SYMBOL_GPL vmlinux 0xdb8a1b3f usermodehelper_read_trylock +EXPORT_SYMBOL_GPL vmlinux 0xdbb7d796 devm_power_supply_register +EXPORT_SYMBOL_GPL vmlinux 0xdbb7f170 regmap_write +EXPORT_SYMBOL_GPL vmlinux 0xdbe284a0 __pm_runtime_idle +EXPORT_SYMBOL_GPL vmlinux 0xdbf7cb70 mpi_get_nbits +EXPORT_SYMBOL_GPL vmlinux 0xdbfbdef3 crypto_ahash_type +EXPORT_SYMBOL_GPL vmlinux 0xdc0162c7 raw_seq_open +EXPORT_SYMBOL_GPL vmlinux 0xdc11f17c adp5520_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xdc1c379d __list_lru_init +EXPORT_SYMBOL_GPL vmlinux 0xdc1d05a7 gpiod_set_value +EXPORT_SYMBOL_GPL vmlinux 0xdc2598fc crypto_register_template +EXPORT_SYMBOL_GPL vmlinux 0xdc266476 pci_destroy_slot +EXPORT_SYMBOL_GPL vmlinux 0xdc3e7e2a ata_dummy_port_ops +EXPORT_SYMBOL_GPL vmlinux 0xdc56e12c sysfs_remove_link_from_group +EXPORT_SYMBOL_GPL vmlinux 0xdc607381 trace_call_bpf +EXPORT_SYMBOL_GPL vmlinux 0xdc733745 device_remove_file_self +EXPORT_SYMBOL_GPL vmlinux 0xdc825d6c usb_amd_quirk_pll_disable +EXPORT_SYMBOL_GPL vmlinux 0xdc9fa232 raw_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0xdca83c67 pci_disable_pri +EXPORT_SYMBOL_GPL vmlinux 0xdcca1b06 sata_link_resume +EXPORT_SYMBOL_GPL vmlinux 0xdce4869e regmap_check_range_table +EXPORT_SYMBOL_GPL vmlinux 0xdd15c365 crypto_register_alg +EXPORT_SYMBOL_GPL vmlinux 0xdd17ffec trace_clock +EXPORT_SYMBOL_GPL vmlinux 0xdd2efc0f ring_buffer_reset_cpu +EXPORT_SYMBOL_GPL vmlinux 0xdd391eff profile_event_unregister +EXPORT_SYMBOL_GPL vmlinux 0xdd57e2b5 percpu_ref_exit +EXPORT_SYMBOL_GPL vmlinux 0xdd6de591 ip6_datagram_recv_ctl +EXPORT_SYMBOL_GPL vmlinux 0xdd729424 usb_anchor_empty +EXPORT_SYMBOL_GPL vmlinux 0xddbeeecc pci_lock_rescan_remove +EXPORT_SYMBOL_GPL vmlinux 0xddd58dc0 ring_buffer_reset +EXPORT_SYMBOL_GPL vmlinux 0xde09b45e to_nvdimm_bus +EXPORT_SYMBOL_GPL vmlinux 0xde3fd774 dev_pm_opp_disable +EXPORT_SYMBOL_GPL vmlinux 0xde64a1dc param_ops_bool_enable_only +EXPORT_SYMBOL_GPL vmlinux 0xde7e98f9 bio_associate_blkcg +EXPORT_SYMBOL_GPL vmlinux 0xdeb2ff22 da9052_disable_irq +EXPORT_SYMBOL_GPL vmlinux 0xdf0f75c6 eventfd_signal +EXPORT_SYMBOL_GPL vmlinux 0xdf340897 fb_deferred_io_init +EXPORT_SYMBOL_GPL vmlinux 0xdf446ce9 usb_hcd_pci_probe +EXPORT_SYMBOL_GPL vmlinux 0xdf5ce710 rio_mport_get_efb +EXPORT_SYMBOL_GPL vmlinux 0xdf76804c early_find_capability +EXPORT_SYMBOL_GPL vmlinux 0xdf783b55 usb_enable_ltm +EXPORT_SYMBOL_GPL vmlinux 0xdf80476d trace_seq_putmem +EXPORT_SYMBOL_GPL vmlinux 0xdfb00415 blk_queue_dma_drain +EXPORT_SYMBOL_GPL vmlinux 0xdff8b8e5 bus_rescan_devices +EXPORT_SYMBOL_GPL vmlinux 0xe0040adc devm_of_phy_provider_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe007de41 kallsyms_lookup_name +EXPORT_SYMBOL_GPL vmlinux 0xe029385e regmap_field_read +EXPORT_SYMBOL_GPL vmlinux 0xe02eb6d0 ring_buffer_commit_overrun_cpu +EXPORT_SYMBOL_GPL vmlinux 0xe036b3e9 mpic_msgr_put +EXPORT_SYMBOL_GPL vmlinux 0xe049e81f public_key_subtype +EXPORT_SYMBOL_GPL vmlinux 0xe04b76ed stmpe_block_read +EXPORT_SYMBOL_GPL vmlinux 0xe0624699 class_find_device +EXPORT_SYMBOL_GPL vmlinux 0xe07006a9 generic_access_phys +EXPORT_SYMBOL_GPL vmlinux 0xe086ddf1 crypto_unregister_alg +EXPORT_SYMBOL_GPL vmlinux 0xe089cfcc agp_memory_reserved +EXPORT_SYMBOL_GPL vmlinux 0xe08c7b1a thermal_of_cooling_device_register +EXPORT_SYMBOL_GPL vmlinux 0xe09d01ed ata_bmdma_port_intr +EXPORT_SYMBOL_GPL vmlinux 0xe0b1c103 clk_set_max_rate +EXPORT_SYMBOL_GPL vmlinux 0xe0c1ec7e ata_sff_dma_pause +EXPORT_SYMBOL_GPL vmlinux 0xe0c867e3 get_cpu_device +EXPORT_SYMBOL_GPL vmlinux 0xe0d77d99 device_property_read_string +EXPORT_SYMBOL_GPL vmlinux 0xe0ebd567 fuse_put_request +EXPORT_SYMBOL_GPL vmlinux 0xe1150973 phy_pm_runtime_allow +EXPORT_SYMBOL_GPL vmlinux 0xe1193989 led_trigger_set +EXPORT_SYMBOL_GPL vmlinux 0xe12dc90c sock_gen_put +EXPORT_SYMBOL_GPL vmlinux 0xe135b682 regulator_register +EXPORT_SYMBOL_GPL vmlinux 0xe14e983f shmem_file_setup +EXPORT_SYMBOL_GPL vmlinux 0xe15c2459 blkcg_print_blkgs +EXPORT_SYMBOL_GPL vmlinux 0xe15fa2cb usb_enable_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0xe1775ee7 dm_get_reserved_bio_based_ios +EXPORT_SYMBOL_GPL vmlinux 0xe19eb1c4 percpu_ida_destroy +EXPORT_SYMBOL_GPL vmlinux 0xe1b23ae4 tcp_death_row +EXPORT_SYMBOL_GPL vmlinux 0xe1b3213c pm_runtime_set_memalloc_noio +EXPORT_SYMBOL_GPL vmlinux 0xe1b53e22 transport_remove_device +EXPORT_SYMBOL_GPL vmlinux 0xe1bd6c99 rio_init_mports +EXPORT_SYMBOL_GPL vmlinux 0xe1ca49a2 cpuidle_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0xe221aab7 pwm_free +EXPORT_SYMBOL_GPL vmlinux 0xe24a442c sdev_evt_send_simple +EXPORT_SYMBOL_GPL vmlinux 0xe267df05 cpufreq_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0xe269f57b dev_pm_qos_expose_flags +EXPORT_SYMBOL_GPL vmlinux 0xe2832b3e inet_csk_clone_lock +EXPORT_SYMBOL_GPL vmlinux 0xe28a1d1a sdhci_pci_spt_drive_strength +EXPORT_SYMBOL_GPL vmlinux 0xe2aa2912 sk_clone_lock +EXPORT_SYMBOL_GPL vmlinux 0xe2ae36dc kobject_create_and_add +EXPORT_SYMBOL_GPL vmlinux 0xe2dfe67e locks_release_private +EXPORT_SYMBOL_GPL vmlinux 0xe2f3d4cc gpiod_get_raw_value +EXPORT_SYMBOL_GPL vmlinux 0xe3043ff9 request_any_context_irq +EXPORT_SYMBOL_GPL vmlinux 0xe3223ad9 tc3589x_block_read +EXPORT_SYMBOL_GPL vmlinux 0xe32fb230 alarm_expires_remaining +EXPORT_SYMBOL_GPL vmlinux 0xe33bfe8f __nvdimm_bus_register +EXPORT_SYMBOL_GPL vmlinux 0xe3454efa usb_store_new_id +EXPORT_SYMBOL_GPL vmlinux 0xe384a102 usb_speed_string +EXPORT_SYMBOL_GPL vmlinux 0xe38c3bb3 sdio_claim_irq +EXPORT_SYMBOL_GPL vmlinux 0xe3b7541d wm831x_auxadc_read_uv +EXPORT_SYMBOL_GPL vmlinux 0xe3d6c3bf ata_port_schedule_eh +EXPORT_SYMBOL_GPL vmlinux 0xe3d7750e btree_visitor +EXPORT_SYMBOL_GPL vmlinux 0xe3f6ef22 regulator_map_voltage_ascend +EXPORT_SYMBOL_GPL vmlinux 0xe3fc55a3 ipv6_opt_accepted +EXPORT_SYMBOL_GPL vmlinux 0xe424a39e regcache_drop_region +EXPORT_SYMBOL_GPL vmlinux 0xe462fe1f regmap_get_max_register +EXPORT_SYMBOL_GPL vmlinux 0xe4689576 ktime_get_with_offset +EXPORT_SYMBOL_GPL vmlinux 0xe46bf018 sysfs_add_file_to_group +EXPORT_SYMBOL_GPL vmlinux 0xe4790a18 dm_suspended +EXPORT_SYMBOL_GPL vmlinux 0xe4971ade tracing_alloc_snapshot +EXPORT_SYMBOL_GPL vmlinux 0xe49c6159 crypto_default_rng +EXPORT_SYMBOL_GPL vmlinux 0xe4ad6e45 debugfs_remove +EXPORT_SYMBOL_GPL vmlinux 0xe4c031f8 btree_merge +EXPORT_SYMBOL_GPL vmlinux 0xe4c329f9 rio_route_get_entry +EXPORT_SYMBOL_GPL vmlinux 0xe4d0d4c8 devm_regulator_bulk_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0xe4e82ab5 regmap_write_async +EXPORT_SYMBOL_GPL vmlinux 0xe4f2b911 shash_ahash_update +EXPORT_SYMBOL_GPL vmlinux 0xe50d7a7b vga_default_device +EXPORT_SYMBOL_GPL vmlinux 0xe510f26f gpiod_is_active_low +EXPORT_SYMBOL_GPL vmlinux 0xe511695b call_filter_check_discard +EXPORT_SYMBOL_GPL vmlinux 0xe51c040f register_kprobe +EXPORT_SYMBOL_GPL vmlinux 0xe51d7a55 rtc_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe52749dc virtqueue_add_outbuf +EXPORT_SYMBOL_GPL vmlinux 0xe52b08de thermal_zone_of_sensor_register +EXPORT_SYMBOL_GPL vmlinux 0xe5540302 enable_kprobe +EXPORT_SYMBOL_GPL vmlinux 0xe5883bd9 class_compat_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe58fb452 aer_irq +EXPORT_SYMBOL_GPL vmlinux 0xe5f81ebb usb_get_phy +EXPORT_SYMBOL_GPL vmlinux 0xe5fe05d2 pci_enable_pasid +EXPORT_SYMBOL_GPL vmlinux 0xe602f733 clk_register_gate +EXPORT_SYMBOL_GPL vmlinux 0xe60d9ac0 ipv6_stub +EXPORT_SYMBOL_GPL vmlinux 0xe6161ad9 ping_rcv +EXPORT_SYMBOL_GPL vmlinux 0xe61a5958 power_supply_get_by_name +EXPORT_SYMBOL_GPL vmlinux 0xe63315c3 bmp085_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0xe6452de7 netdev_rx_handler_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe651f76e selinux_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0xe6590c83 __pm_runtime_set_status +EXPORT_SYMBOL_GPL vmlinux 0xe68bceb9 mddev_init +EXPORT_SYMBOL_GPL vmlinux 0xe68faa55 __platform_create_bundle +EXPORT_SYMBOL_GPL vmlinux 0xe6c68334 ddebug_remove_module +EXPORT_SYMBOL_GPL vmlinux 0xe6c93caa pwm_config +EXPORT_SYMBOL_GPL vmlinux 0xe6cc97ba crypto_register_aead +EXPORT_SYMBOL_GPL vmlinux 0xe6e1c5fe uuid_be_gen +EXPORT_SYMBOL_GPL vmlinux 0xe6ea2c55 wm831x_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0xe6ea8ea0 usb_choose_configuration +EXPORT_SYMBOL_GPL vmlinux 0xe6ef4abf dm_internal_resume_fast +EXPORT_SYMBOL_GPL vmlinux 0xe6ff7c60 __clk_round_rate +EXPORT_SYMBOL_GPL vmlinux 0xe7049cba sata_sff_hardreset +EXPORT_SYMBOL_GPL vmlinux 0xe730e28c spi_finalize_current_message +EXPORT_SYMBOL_GPL vmlinux 0xe741689e ata_sff_qc_issue +EXPORT_SYMBOL_GPL vmlinux 0xe74f68f3 mpc8xxx_spi_probe +EXPORT_SYMBOL_GPL vmlinux 0xe759411e fixed_phy_set_link_update +EXPORT_SYMBOL_GPL vmlinux 0xe75fcf2a ping_hash +EXPORT_SYMBOL_GPL vmlinux 0xe769232e sprint_symbol_no_offset +EXPORT_SYMBOL_GPL vmlinux 0xe7aa4938 uhci_check_and_reset_hc +EXPORT_SYMBOL_GPL vmlinux 0xe7cb82ea divider_round_rate +EXPORT_SYMBOL_GPL vmlinux 0xe7db17da pm_generic_runtime_resume +EXPORT_SYMBOL_GPL vmlinux 0xe7dd929e thermal_cooling_device_register +EXPORT_SYMBOL_GPL vmlinux 0xe7e7d092 virtqueue_is_broken +EXPORT_SYMBOL_GPL vmlinux 0xe7f18b3c threads_per_subcore +EXPORT_SYMBOL_GPL vmlinux 0xe7ffe877 pcpu_base_addr +EXPORT_SYMBOL_GPL vmlinux 0xe80dbf63 usb_phy_set_event +EXPORT_SYMBOL_GPL vmlinux 0xe818b32b ata_bmdma_interrupt +EXPORT_SYMBOL_GPL vmlinux 0xe83da648 gpiod_export_link +EXPORT_SYMBOL_GPL vmlinux 0xe84c46a1 nvdimm_bus_check_dimm_count +EXPORT_SYMBOL_GPL vmlinux 0xe84f6e5c pciserial_remove_ports +EXPORT_SYMBOL_GPL vmlinux 0xe85c55e7 btree_destroy +EXPORT_SYMBOL_GPL vmlinux 0xe8744c79 tty_port_register_device +EXPORT_SYMBOL_GPL vmlinux 0xe87c94f2 unregister_ftrace_function +EXPORT_SYMBOL_GPL vmlinux 0xe88e9ac0 devm_of_phy_get +EXPORT_SYMBOL_GPL vmlinux 0xe89bd243 ata_sff_queue_work +EXPORT_SYMBOL_GPL vmlinux 0xe89cbb34 spi_master_resume +EXPORT_SYMBOL_GPL vmlinux 0xe8b28731 watchdog_init_timeout +EXPORT_SYMBOL_GPL vmlinux 0xe8b48c6a bus_create_file +EXPORT_SYMBOL_GPL vmlinux 0xe8da57ad realmode_pfn_to_page +EXPORT_SYMBOL_GPL vmlinux 0xe8f814df max8997_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0xe91c6e23 __inet_lookup_listener +EXPORT_SYMBOL_GPL vmlinux 0xe927a4a9 regulator_sync_voltage +EXPORT_SYMBOL_GPL vmlinux 0xe938e19d of_get_nand_ecc_mode +EXPORT_SYMBOL_GPL vmlinux 0xe93e49c3 devres_free +EXPORT_SYMBOL_GPL vmlinux 0xe958ad43 of_modalias_node +EXPORT_SYMBOL_GPL vmlinux 0xe9690780 aead_geniv_init +EXPORT_SYMBOL_GPL vmlinux 0xe96f273d virtio_break_device +EXPORT_SYMBOL_GPL vmlinux 0xe97b135f blk_unprep_request +EXPORT_SYMBOL_GPL vmlinux 0xe98006eb trace_seq_bprintf +EXPORT_SYMBOL_GPL vmlinux 0xe98f9a1b usb_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0xe99a8558 crypto_ahash_finup +EXPORT_SYMBOL_GPL vmlinux 0xe99ccf26 blk_mq_free_request +EXPORT_SYMBOL_GPL vmlinux 0xe9a8b5a2 skcipher_geniv_exit +EXPORT_SYMBOL_GPL vmlinux 0xe9d1b7cf irq_to_pcap +EXPORT_SYMBOL_GPL vmlinux 0xe9dcb02e hwrng_register +EXPORT_SYMBOL_GPL vmlinux 0xe9e89b5d platform_device_add_data +EXPORT_SYMBOL_GPL vmlinux 0xea124bd1 gcd +EXPORT_SYMBOL_GPL vmlinux 0xea1541bf wm5102_i2c_regmap +EXPORT_SYMBOL_GPL vmlinux 0xea1facf0 of_clk_set_defaults +EXPORT_SYMBOL_GPL vmlinux 0xea24f863 pci_disable_ats +EXPORT_SYMBOL_GPL vmlinux 0xea3a527a adp5520_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xea418e0f atapi_cmd_type +EXPORT_SYMBOL_GPL vmlinux 0xea628c20 bstr_printf +EXPORT_SYMBOL_GPL vmlinux 0xea6472fc cpu_device_create +EXPORT_SYMBOL_GPL vmlinux 0xea9022e1 crypto_register_shashes +EXPORT_SYMBOL_GPL vmlinux 0xeaafa08c blkg_lookup_create +EXPORT_SYMBOL_GPL vmlinux 0xeaceaba3 inet6_csk_addr2sockaddr +EXPORT_SYMBOL_GPL vmlinux 0xead0156e platform_device_register_full +EXPORT_SYMBOL_GPL vmlinux 0xead151fb preempt_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0xeaffd3f4 sock_update_netprioidx +EXPORT_SYMBOL_GPL vmlinux 0xeb242557 skb_cow_data +EXPORT_SYMBOL_GPL vmlinux 0xeb2a4098 bpf_prog_put +EXPORT_SYMBOL_GPL vmlinux 0xeb2ff595 ata_bmdma_post_internal_cmd +EXPORT_SYMBOL_GPL vmlinux 0xeb4b270a pci_rescan_bus +EXPORT_SYMBOL_GPL vmlinux 0xeb6ad680 adp5520_write +EXPORT_SYMBOL_GPL vmlinux 0xeb7d183e jump_label_rate_limit +EXPORT_SYMBOL_GPL vmlinux 0xeb8ae736 klist_init +EXPORT_SYMBOL_GPL vmlinux 0xeb90456e dma_get_slave_caps +EXPORT_SYMBOL_GPL vmlinux 0xeb9700d7 pci_probe_reset_slot +EXPORT_SYMBOL_GPL vmlinux 0xebb44759 ata_dummy_port_info +EXPORT_SYMBOL_GPL vmlinux 0xebc7a4b6 dbs_check_cpu +EXPORT_SYMBOL_GPL vmlinux 0xebcc843c vfs_listxattr +EXPORT_SYMBOL_GPL vmlinux 0xebcf314a cpci_hp_unregister_bus +EXPORT_SYMBOL_GPL vmlinux 0xebdd409f irq_domain_remove +EXPORT_SYMBOL_GPL vmlinux 0xebe23b93 power_supply_put +EXPORT_SYMBOL_GPL vmlinux 0xebec57c4 ring_buffer_oldest_event_ts +EXPORT_SYMBOL_GPL vmlinux 0xec1b043e regulator_suspend_prepare +EXPORT_SYMBOL_GPL vmlinux 0xec25f967 klist_del +EXPORT_SYMBOL_GPL vmlinux 0xec2fb949 ip6_dst_lookup_flow +EXPORT_SYMBOL_GPL vmlinux 0xec3325e2 __clk_get_num_parents +EXPORT_SYMBOL_GPL vmlinux 0xec49a21d cpufreq_frequency_table_target +EXPORT_SYMBOL_GPL vmlinux 0xec510d0e unix_outq_len +EXPORT_SYMBOL_GPL vmlinux 0xec598966 __sock_recv_timestamp +EXPORT_SYMBOL_GPL vmlinux 0xec5f1a4a of_property_read_u64 +EXPORT_SYMBOL_GPL vmlinux 0xec67edac rhashtable_insert_slow +EXPORT_SYMBOL_GPL vmlinux 0xec7b206f crypto_alloc_instance +EXPORT_SYMBOL_GPL vmlinux 0xeca7855a user_read +EXPORT_SYMBOL_GPL vmlinux 0xecbe97ff get_task_comm +EXPORT_SYMBOL_GPL vmlinux 0xece0513d fb_sys_write +EXPORT_SYMBOL_GPL vmlinux 0xece55640 ref_module +EXPORT_SYMBOL_GPL vmlinux 0xed179b2a fsstack_copy_attr_all +EXPORT_SYMBOL_GPL vmlinux 0xed1c9568 regmap_field_free +EXPORT_SYMBOL_GPL vmlinux 0xed2a9a00 devres_remove_group +EXPORT_SYMBOL_GPL vmlinux 0xed2d1b31 fat_search_long +EXPORT_SYMBOL_GPL vmlinux 0xed4f763f blk_trace_startstop +EXPORT_SYMBOL_GPL vmlinux 0xed83b2d4 devm_regulator_put +EXPORT_SYMBOL_GPL vmlinux 0xedc82558 __put_task_struct +EXPORT_SYMBOL_GPL vmlinux 0xedcd95ea bpf_prog_realloc +EXPORT_SYMBOL_GPL vmlinux 0xede1e959 ata_pio_need_iordy +EXPORT_SYMBOL_GPL vmlinux 0xedf9012e vfs_removexattr +EXPORT_SYMBOL_GPL vmlinux 0xee15fc23 map_vm_area +EXPORT_SYMBOL_GPL vmlinux 0xee20ee6f is_skb_forwardable +EXPORT_SYMBOL_GPL vmlinux 0xee257432 phy_power_off +EXPORT_SYMBOL_GPL vmlinux 0xee311713 wm8997_patch +EXPORT_SYMBOL_GPL vmlinux 0xee5eb37a show_class_attr_string +EXPORT_SYMBOL_GPL vmlinux 0xee6209e8 __pci_reset_function +EXPORT_SYMBOL_GPL vmlinux 0xee68a2bb of_get_videomode +EXPORT_SYMBOL_GPL vmlinux 0xee6b71c4 syscon_regmap_lookup_by_compatible +EXPORT_SYMBOL_GPL vmlinux 0xee8ab439 regmap_attach_dev +EXPORT_SYMBOL_GPL vmlinux 0xee9550d2 rio_mport_read_config_16 +EXPORT_SYMBOL_GPL vmlinux 0xee9aec94 wm831x_reg_unlock +EXPORT_SYMBOL_GPL vmlinux 0xeea48781 dev_pm_opp_get_opp_count +EXPORT_SYMBOL_GPL vmlinux 0xeebb07d6 rio_request_outb_mbox +EXPORT_SYMBOL_GPL vmlinux 0xeebd981a mmc_switch +EXPORT_SYMBOL_GPL vmlinux 0xeed1ff52 crypto_aead_reqsize +EXPORT_SYMBOL_GPL vmlinux 0xeee68345 bitmap_resize +EXPORT_SYMBOL_GPL vmlinux 0xeeea9a56 fat_dir_empty +EXPORT_SYMBOL_GPL vmlinux 0xeef99d14 cpu_remove_dev_attr +EXPORT_SYMBOL_GPL vmlinux 0xef05ea58 spi_sync_locked +EXPORT_SYMBOL_GPL vmlinux 0xef0dff24 ata_sff_pause +EXPORT_SYMBOL_GPL vmlinux 0xef47c34a usb_get_hcd +EXPORT_SYMBOL_GPL vmlinux 0xef48f52e xfrm_audit_state_notfound +EXPORT_SYMBOL_GPL vmlinux 0xef4fcbca perf_pmu_migrate_context +EXPORT_SYMBOL_GPL vmlinux 0xef6c3f70 round_jiffies_up_relative +EXPORT_SYMBOL_GPL vmlinux 0xef6d007a sigset_from_compat +EXPORT_SYMBOL_GPL vmlinux 0xef740599 power_supply_changed +EXPORT_SYMBOL_GPL vmlinux 0xef825f0c relay_file_operations +EXPORT_SYMBOL_GPL vmlinux 0xef8c7850 pcap_adc_async +EXPORT_SYMBOL_GPL vmlinux 0xefa2c27d register_tracepoint_module_notifier +EXPORT_SYMBOL_GPL vmlinux 0xefb1c75f skb_tstamp_tx +EXPORT_SYMBOL_GPL vmlinux 0xeff8fb81 pm_runtime_enable +EXPORT_SYMBOL_GPL vmlinux 0xeffa6b8f __tracepoint_cpu_idle +EXPORT_SYMBOL_GPL vmlinux 0xf01e4adf gpiochip_is_requested +EXPORT_SYMBOL_GPL vmlinux 0xf03c072f __ftrace_vbprintk +EXPORT_SYMBOL_GPL vmlinux 0xf0727f12 ktime_get_raw_fast_ns +EXPORT_SYMBOL_GPL vmlinux 0xf073173f clockevents_config_and_register +EXPORT_SYMBOL_GPL vmlinux 0xf084a1ce regulator_put +EXPORT_SYMBOL_GPL vmlinux 0xf0944496 bdev_write_page +EXPORT_SYMBOL_GPL vmlinux 0xf09f60b5 power_supply_register +EXPORT_SYMBOL_GPL vmlinux 0xf0f5dbc2 timerqueue_iterate_next +EXPORT_SYMBOL_GPL vmlinux 0xf0ffbc65 ata_sff_hsm_move +EXPORT_SYMBOL_GPL vmlinux 0xf135854a __page_file_index +EXPORT_SYMBOL_GPL vmlinux 0xf1464f2a bpf_prog_destroy +EXPORT_SYMBOL_GPL vmlinux 0xf158f170 klist_add_tail +EXPORT_SYMBOL_GPL vmlinux 0xf15a5dc5 extcon_get_edev_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0xf16ef221 of_thermal_get_trip_points +EXPORT_SYMBOL_GPL vmlinux 0xf184d189 kernel_power_off +EXPORT_SYMBOL_GPL vmlinux 0xf1855179 regulator_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xf18ad0ee fuse_dev_operations +EXPORT_SYMBOL_GPL vmlinux 0xf1925cca scsi_queue_work +EXPORT_SYMBOL_GPL vmlinux 0xf1a4dfbc blk_end_request_err +EXPORT_SYMBOL_GPL vmlinux 0xf1a62b6f of_i8042_kbd_irq +EXPORT_SYMBOL_GPL vmlinux 0xf1b31314 delayacct_on +EXPORT_SYMBOL_GPL vmlinux 0xf1b5da4c __blk_run_queue_uncond +EXPORT_SYMBOL_GPL vmlinux 0xf1bbda95 crypto_unregister_akcipher +EXPORT_SYMBOL_GPL vmlinux 0xf1d5100c kvm_gfn_to_hva_cache_init +EXPORT_SYMBOL_GPL vmlinux 0xf1e0eab6 unregister_virtio_driver +EXPORT_SYMBOL_GPL vmlinux 0xf1e4edbf smpboot_register_percpu_thread +EXPORT_SYMBOL_GPL vmlinux 0xf1fde4dd hwrng_unregister +EXPORT_SYMBOL_GPL vmlinux 0xf2074e45 devm_kfree +EXPORT_SYMBOL_GPL vmlinux 0xf21be9e5 pm_generic_runtime_suspend +EXPORT_SYMBOL_GPL vmlinux 0xf21e1f9b disable_percpu_irq +EXPORT_SYMBOL_GPL vmlinux 0xf27977e2 async_synchronize_cookie_domain +EXPORT_SYMBOL_GPL vmlinux 0xf280fe24 inet_hash +EXPORT_SYMBOL_GPL vmlinux 0xf2bf9465 rio_dev_put +EXPORT_SYMBOL_GPL vmlinux 0xf2db0850 of_phy_get +EXPORT_SYMBOL_GPL vmlinux 0xf2f077cc pkey_id_type_name +EXPORT_SYMBOL_GPL vmlinux 0xf2f6d7ff tty_put_char +EXPORT_SYMBOL_GPL vmlinux 0xf2fca922 uart_parse_options +EXPORT_SYMBOL_GPL vmlinux 0xf3012f6c rh_free +EXPORT_SYMBOL_GPL vmlinux 0xf30e105d ezx_pcap_write +EXPORT_SYMBOL_GPL vmlinux 0xf31b3fd1 workqueue_set_max_active +EXPORT_SYMBOL_GPL vmlinux 0xf32e7940 blkcg_activate_policy +EXPORT_SYMBOL_GPL vmlinux 0xf331236f btree_geo32 +EXPORT_SYMBOL_GPL vmlinux 0xf33216b4 dma_get_any_slave_channel +EXPORT_SYMBOL_GPL vmlinux 0xf334d13d to_nd_desc +EXPORT_SYMBOL_GPL vmlinux 0xf33c1bab debugfs_create_x32 +EXPORT_SYMBOL_GPL vmlinux 0xf341abae debugfs_create_u16 +EXPORT_SYMBOL_GPL vmlinux 0xf3808cb1 get_state_synchronize_rcu +EXPORT_SYMBOL_GPL vmlinux 0xf38a6a55 rtc_irq_set_freq +EXPORT_SYMBOL_GPL vmlinux 0xf3a121bd regmap_async_complete_cb +EXPORT_SYMBOL_GPL vmlinux 0xf3afb816 crypto_ahash_setkey +EXPORT_SYMBOL_GPL vmlinux 0xf3b451ca kdb_poll_funcs +EXPORT_SYMBOL_GPL vmlinux 0xf3bcc9ea dm_internal_suspend_fast +EXPORT_SYMBOL_GPL vmlinux 0xf3cf0bb5 extcon_update_state +EXPORT_SYMBOL_GPL vmlinux 0xf3deb0eb powercap_unregister_zone +EXPORT_SYMBOL_GPL vmlinux 0xf3e308b1 thermal_zone_device_register +EXPORT_SYMBOL_GPL vmlinux 0xf3f18238 ktime_get_resolution_ns +EXPORT_SYMBOL_GPL vmlinux 0xf3f60f3d fsstack_copy_inode_size +EXPORT_SYMBOL_GPL vmlinux 0xf4000f4d adp5520_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0xf41a68bc security_inode_create +EXPORT_SYMBOL_GPL vmlinux 0xf422c9eb register_virtio_driver +EXPORT_SYMBOL_GPL vmlinux 0xf43337eb relay_reset +EXPORT_SYMBOL_GPL vmlinux 0xf4664320 gpiod_direction_output +EXPORT_SYMBOL_GPL vmlinux 0xf470f75c dev_pm_opp_enable +EXPORT_SYMBOL_GPL vmlinux 0xf48f59b9 pci_generic_config_read32 +EXPORT_SYMBOL_GPL vmlinux 0xf48fb693 nf_queue_entry_release_refs +EXPORT_SYMBOL_GPL vmlinux 0xf494f618 mmc_regulator_get_ocrmask +EXPORT_SYMBOL_GPL vmlinux 0xf497d659 usb_unlocked_enable_lpm +EXPORT_SYMBOL_GPL vmlinux 0xf499fdb2 rcu_barrier_bh +EXPORT_SYMBOL_GPL vmlinux 0xf4ab0b28 of_clk_get_parent_name +EXPORT_SYMBOL_GPL vmlinux 0xf4bcde71 __blk_end_request_err +EXPORT_SYMBOL_GPL vmlinux 0xf4bea276 rhashtable_insert_rehash +EXPORT_SYMBOL_GPL vmlinux 0xf4d50ed6 kvm_vcpu_gfn_to_pfn_atomic +EXPORT_SYMBOL_GPL vmlinux 0xf4da3546 kvmppc_init_lpid +EXPORT_SYMBOL_GPL vmlinux 0xf4e70a57 extcon_dev_free +EXPORT_SYMBOL_GPL vmlinux 0xf4fc2d6c __ring_buffer_alloc +EXPORT_SYMBOL_GPL vmlinux 0xf4ff92fe ata_bmdma_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0xf501c913 br_fdb_test_addr_hook +EXPORT_SYMBOL_GPL vmlinux 0xf50a2137 cpufreq_cpu_put +EXPORT_SYMBOL_GPL vmlinux 0xf5126595 transport_class_unregister +EXPORT_SYMBOL_GPL vmlinux 0xf52568bd pcie_port_bus_type +EXPORT_SYMBOL_GPL vmlinux 0xf52588be bio_clone_mddev +EXPORT_SYMBOL_GPL vmlinux 0xf5341f43 power_supply_unregister +EXPORT_SYMBOL_GPL vmlinux 0xf53d3e0e fuse_request_alloc +EXPORT_SYMBOL_GPL vmlinux 0xf54bd49b lcm +EXPORT_SYMBOL_GPL vmlinux 0xf553318d cpuidle_pause_and_lock +EXPORT_SYMBOL_GPL vmlinux 0xf562fd66 power_supply_set_battery_charged +EXPORT_SYMBOL_GPL vmlinux 0xf577eea6 flush_fp_to_thread +EXPORT_SYMBOL_GPL vmlinux 0xf57e24ab rio_get_device +EXPORT_SYMBOL_GPL vmlinux 0xf5a691cd invalidate_bh_lrus +EXPORT_SYMBOL_GPL vmlinux 0xf5bcf1b2 __cookie_v4_check +EXPORT_SYMBOL_GPL vmlinux 0xf5bdda67 relay_subbufs_consumed +EXPORT_SYMBOL_GPL vmlinux 0xf5d274ce fuse_conn_init +EXPORT_SYMBOL_GPL vmlinux 0xf5d8ac99 blkcipher_walk_virt +EXPORT_SYMBOL_GPL vmlinux 0xf5e7f053 rh_destroy +EXPORT_SYMBOL_GPL vmlinux 0xf5fc95e3 kvm_clear_guest_page +EXPORT_SYMBOL_GPL vmlinux 0xf61a29d3 kvm_vcpu_write_guest_page +EXPORT_SYMBOL_GPL vmlinux 0xf67157fc phy_init +EXPORT_SYMBOL_GPL vmlinux 0xf6af11b9 gen_pool_get +EXPORT_SYMBOL_GPL vmlinux 0xf6c072e9 of_fixed_clk_setup +EXPORT_SYMBOL_GPL vmlinux 0xf6d25a7e device_property_read_string_array +EXPORT_SYMBOL_GPL vmlinux 0xf6d6e7a4 crypto_remove_spawns +EXPORT_SYMBOL_GPL vmlinux 0xf6e874f5 ata_timing_merge +EXPORT_SYMBOL_GPL vmlinux 0xf6ecbc55 dma_get_slave_channel +EXPORT_SYMBOL_GPL vmlinux 0xf6f8d912 device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xf7045517 dio_end_io +EXPORT_SYMBOL_GPL vmlinux 0xf71c0aa2 regulator_set_mode +EXPORT_SYMBOL_GPL vmlinux 0xf7458767 tcp_ca_openreq_child +EXPORT_SYMBOL_GPL vmlinux 0xf7683e49 cpci_hp_unregister_controller +EXPORT_SYMBOL_GPL vmlinux 0xf77565b3 trace_output_call +EXPORT_SYMBOL_GPL vmlinux 0xf7822e0b transport_destroy_device +EXPORT_SYMBOL_GPL vmlinux 0xf798a3d4 __dev_forward_skb +EXPORT_SYMBOL_GPL vmlinux 0xf79fe1d3 unregister_trace_event +EXPORT_SYMBOL_GPL vmlinux 0xf7ad99a3 usb_hcd_pci_pm_ops +EXPORT_SYMBOL_GPL vmlinux 0xf7d7b9bb pci_stop_and_remove_bus_device_locked +EXPORT_SYMBOL_GPL vmlinux 0xf7e12716 dm_set_target_max_io_len +EXPORT_SYMBOL_GPL vmlinux 0xf81300fb dev_pm_qos_flags +EXPORT_SYMBOL_GPL vmlinux 0xf82f3657 work_on_cpu +EXPORT_SYMBOL_GPL vmlinux 0xf837e0eb unregister_kprobes +EXPORT_SYMBOL_GPL vmlinux 0xf83c8e02 device_create_bin_file +EXPORT_SYMBOL_GPL vmlinux 0xf842f260 ata_scsi_slave_destroy +EXPORT_SYMBOL_GPL vmlinux 0xf8607295 dma_release_channel +EXPORT_SYMBOL_GPL vmlinux 0xf87dea87 ip6_redirect +EXPORT_SYMBOL_GPL vmlinux 0xf8802492 print_stack_trace +EXPORT_SYMBOL_GPL vmlinux 0xf883901a rio_request_inb_dbell +EXPORT_SYMBOL_GPL vmlinux 0xf8b1648a crypto_register_shash +EXPORT_SYMBOL_GPL vmlinux 0xf8b567b8 subsys_interface_unregister +EXPORT_SYMBOL_GPL vmlinux 0xf8e398fc memstart_addr +EXPORT_SYMBOL_GPL vmlinux 0xf8f3a0fb ata_ratelimit +EXPORT_SYMBOL_GPL vmlinux 0xf8fe3d0b kmsg_dump_register +EXPORT_SYMBOL_GPL vmlinux 0xf8ff5621 __rt_mutex_init +EXPORT_SYMBOL_GPL vmlinux 0xf90a4cf8 anon_transport_class_register +EXPORT_SYMBOL_GPL vmlinux 0xf92ce956 kdb_printf +EXPORT_SYMBOL_GPL vmlinux 0xf932015f __raw_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xf937f5a5 preempt_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0xf95322f4 kthread_parkme +EXPORT_SYMBOL_GPL vmlinux 0xf9547a17 divider_recalc_rate +EXPORT_SYMBOL_GPL vmlinux 0xf9575a04 usb_sg_cancel +EXPORT_SYMBOL_GPL vmlinux 0xf96137d6 crypto_lookup_aead +EXPORT_SYMBOL_GPL vmlinux 0xf9792e51 smpboot_update_cpumask_percpu_thread +EXPORT_SYMBOL_GPL vmlinux 0xf9849e43 ohci_hub_status_data +EXPORT_SYMBOL_GPL vmlinux 0xf991c09f rcu_qs_ctr +EXPORT_SYMBOL_GPL vmlinux 0xf9a054b5 __round_jiffies +EXPORT_SYMBOL_GPL vmlinux 0xf9b18f79 xhci_run +EXPORT_SYMBOL_GPL vmlinux 0xf9c2da57 clkdev_create +EXPORT_SYMBOL_GPL vmlinux 0xf9ca3160 ata_id_xfermask +EXPORT_SYMBOL_GPL vmlinux 0xf9cb2968 dev_pm_opp_get_notifier +EXPORT_SYMBOL_GPL vmlinux 0xf9d0e956 fat_add_entries +EXPORT_SYMBOL_GPL vmlinux 0xf9fb143e ata_pci_remove_one +EXPORT_SYMBOL_GPL vmlinux 0xfa1eb910 unregister_syscore_ops +EXPORT_SYMBOL_GPL vmlinux 0xfa1f4662 scatterwalk_start +EXPORT_SYMBOL_GPL vmlinux 0xfa3827dc cpuidle_register +EXPORT_SYMBOL_GPL vmlinux 0xfa489330 sata_set_spd +EXPORT_SYMBOL_GPL vmlinux 0xfa836cfa led_classdev_unregister +EXPORT_SYMBOL_GPL vmlinux 0xfa901b31 compat_get_timespec +EXPORT_SYMBOL_GPL vmlinux 0xfa9f8f0d kobject_get_path +EXPORT_SYMBOL_GPL vmlinux 0xfab60503 klist_iter_init_node +EXPORT_SYMBOL_GPL vmlinux 0xfad47ddc task_user_regset_view +EXPORT_SYMBOL_GPL vmlinux 0xfadc28cc irq_find_mapping +EXPORT_SYMBOL_GPL vmlinux 0xfb07ccaa crypto_alloc_ahash +EXPORT_SYMBOL_GPL vmlinux 0xfb1f39c3 devm_regulator_get_optional +EXPORT_SYMBOL_GPL vmlinux 0xfb22bc6c cpu_bit_bitmap +EXPORT_SYMBOL_GPL vmlinux 0xfb32b30f ring_buffer_read_prepare_sync +EXPORT_SYMBOL_GPL vmlinux 0xfb3ade6d ata_bmdma_stop +EXPORT_SYMBOL_GPL vmlinux 0xfb3d0037 tpm_get_timeouts +EXPORT_SYMBOL_GPL vmlinux 0xfb52b77d __wake_up_locked +EXPORT_SYMBOL_GPL vmlinux 0xfb5ecae2 unregister_virtio_device +EXPORT_SYMBOL_GPL vmlinux 0xfb6eedf9 power_group_name +EXPORT_SYMBOL_GPL vmlinux 0xfb839134 ata_pci_device_suspend +EXPORT_SYMBOL_GPL vmlinux 0xfb9b416c ata_sas_slave_configure +EXPORT_SYMBOL_GPL vmlinux 0xfbbd41ca no_action +EXPORT_SYMBOL_GPL vmlinux 0xfbd42f48 kvm_vcpu_read_guest +EXPORT_SYMBOL_GPL vmlinux 0xfc03d97a page_is_ram +EXPORT_SYMBOL_GPL vmlinux 0xfc043269 ata_sas_port_resume +EXPORT_SYMBOL_GPL vmlinux 0xfc201b66 sprint_oid +EXPORT_SYMBOL_GPL vmlinux 0xfc306dca stmpe_disable +EXPORT_SYMBOL_GPL vmlinux 0xfc48f95d led_trigger_rename_static +EXPORT_SYMBOL_GPL vmlinux 0xfc4d8940 __put_net +EXPORT_SYMBOL_GPL vmlinux 0xfc5333b0 dev_pm_set_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0xfc60143d mnt_want_write_file +EXPORT_SYMBOL_GPL vmlinux 0xfc770c3f rtc_class_close +EXPORT_SYMBOL_GPL vmlinux 0xfc85586b regmap_update_bits_check_async +EXPORT_SYMBOL_GPL vmlinux 0xfc9a48c8 devres_get +EXPORT_SYMBOL_GPL vmlinux 0xfcce7757 blkg_prfill_stat +EXPORT_SYMBOL_GPL vmlinux 0xfcd7bc0b ring_buffer_empty +EXPORT_SYMBOL_GPL vmlinux 0xfcf88933 transport_configure_device +EXPORT_SYMBOL_GPL vmlinux 0xfcf8cee0 get_current_tty +EXPORT_SYMBOL_GPL vmlinux 0xfd0d2f85 class_dev_iter_init +EXPORT_SYMBOL_GPL vmlinux 0xfd19f0f9 gpiochip_request_own_desc +EXPORT_SYMBOL_GPL vmlinux 0xfd588d93 rio_register_driver +EXPORT_SYMBOL_GPL vmlinux 0xfd5a5fac of_pci_get_devfn +EXPORT_SYMBOL_GPL vmlinux 0xfd5d3dde elv_unregister +EXPORT_SYMBOL_GPL vmlinux 0xfd5e9fa4 sysfs_create_mount_point +EXPORT_SYMBOL_GPL vmlinux 0xfd7a50ea set_timer_slack +EXPORT_SYMBOL_GPL vmlinux 0xfd9d46d0 of_pci_address_to_resource +EXPORT_SYMBOL_GPL vmlinux 0xfdafa3c3 reservation_object_test_signaled_rcu +EXPORT_SYMBOL_GPL vmlinux 0xfdc65b72 ip6_append_data +EXPORT_SYMBOL_GPL vmlinux 0xfdd35f66 tps65912_reg_write +EXPORT_SYMBOL_GPL vmlinux 0xfddd7880 crypto_alloc_base +EXPORT_SYMBOL_GPL vmlinux 0xfe2b0119 kvm_vcpu_kick +EXPORT_SYMBOL_GPL vmlinux 0xfe3455a1 blkdev_ioctl +EXPORT_SYMBOL_GPL vmlinux 0xfe3ee4d3 ftrace_set_filter_ip +EXPORT_SYMBOL_GPL vmlinux 0xfe448a7b bpf_prog_select_runtime +EXPORT_SYMBOL_GPL vmlinux 0xfe583828 usb_hub_find_child +EXPORT_SYMBOL_GPL vmlinux 0xfe786717 regcache_mark_dirty +EXPORT_SYMBOL_GPL vmlinux 0xfe977b19 hwmon_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xfe990052 gpio_free +EXPORT_SYMBOL_GPL vmlinux 0xfe9fcba9 fwnode_get_named_gpiod +EXPORT_SYMBOL_GPL vmlinux 0xfea8b3bb spi_get_device_id +EXPORT_SYMBOL_GPL vmlinux 0xfeb45d43 of_address_to_resource +EXPORT_SYMBOL_GPL vmlinux 0xfec79439 devm_hwrng_register +EXPORT_SYMBOL_GPL vmlinux 0xfecdc4cb vfs_getxattr +EXPORT_SYMBOL_GPL vmlinux 0xfed11ed1 usb_mon_deregister +EXPORT_SYMBOL_GPL vmlinux 0xfed7e907 kvmppc_handle_store +EXPORT_SYMBOL_GPL vmlinux 0xfee29c69 cpci_hp_register_bus +EXPORT_SYMBOL_GPL vmlinux 0xfef1e175 crypto_shash_final +EXPORT_SYMBOL_GPL vmlinux 0xfef8a166 trace_current_buffer_lock_reserve +EXPORT_SYMBOL_GPL vmlinux 0xff00f97f gpiod_set_raw_array_value +EXPORT_SYMBOL_GPL vmlinux 0xff05fa13 vring_interrupt +EXPORT_SYMBOL_GPL vmlinux 0xff0a9793 mmc_app_cmd +EXPORT_SYMBOL_GPL vmlinux 0xff2584ac regmap_get_val_endian +EXPORT_SYMBOL_GPL vmlinux 0xff291ecf clk_unregister_divider +EXPORT_SYMBOL_GPL vmlinux 0xff44b3cf sdio_run_irqs +EXPORT_SYMBOL_GPL vmlinux 0xff5a8cfe cn_del_callback +EXPORT_SYMBOL_GPL vmlinux 0xff633558 vprintk_default +EXPORT_SYMBOL_GPL vmlinux 0xff729c56 pid_vnr +EXPORT_SYMBOL_GPL vmlinux 0xff7d96b0 get_task_pid +EXPORT_SYMBOL_GPL vmlinux 0xff8862d7 rh_get_stats +EXPORT_SYMBOL_GPL vmlinux 0xff8f5f81 swiotlb_tbl_sync_single +EXPORT_SYMBOL_GPL vmlinux 0xff90fe5d ata_pci_device_resume +EXPORT_SYMBOL_GPL vmlinux 0xffaf07ca crypto_alg_mod_lookup +EXPORT_SYMBOL_GPL vmlinux 0xffc0f693 uprobe_register +EXPORT_SYMBOL_GPL vmlinux 0xffc12356 pci_find_next_ext_capability --- linux-raspi2-4.2.0.orig/debian.master/abi/4.2.0-26.31/powerpc/powerpc64-emb.compiler +++ linux-raspi2-4.2.0/debian.master/abi/4.2.0-26.31/powerpc/powerpc64-emb.compiler @@ -0,0 +1 @@ +GCC: (Ubuntu 5.2.1-22ubuntu2) 5.2.1 20151010 --- linux-raspi2-4.2.0.orig/debian.master/abi/4.2.0-26.31/powerpc/powerpc64-emb.modules +++ linux-raspi2-4.2.0/debian.master/abi/4.2.0-26.31/powerpc/powerpc64-emb.modules @@ -0,0 +1,4207 @@ +3c574_cs +3c589_cs +3c59x +3w-9xxx +3w-sas +3w-xxxx +6lowpan +6pack +8021q +8139cp +8139too +8250_dw +8255 +8255_pci +8390 +842 +842_compress +842_decompress +88pm800 +88pm805 +88pm80x +88pm80x_onkey +88pm8607 +88pm860x_battery +88pm860x_bl +88pm860x_charger +88pm860x_onkey +88pm860x-ts +9p +9pnet +9pnet_rdma +9pnet_virtio +a100u2w +a3d +a8293 +aacraid +aat2870_bl +aat2870-regulator +ab3100 +ab3100-otp +ac97_bus +acard-ahci +acecad +acenic +act200l-sir +act8865-regulator +act_bpf +act_connmark +act_csum +act_gact +act_ipt +actisys-sir +act_mirred +act_nat +act_pedit +act_police +act_simple +act_skbedit +act_vlan +ad2s1200 +ad2s1210 +ad2s90 +ad5064 +ad525x_dpot +ad525x_dpot-i2c +ad525x_dpot-spi +ad5360 +ad5380 +ad5398 +ad5421 +ad5446 +ad5449 +ad5504 +ad5624r_spi +ad5686 +ad5755 +ad5764 +ad5791 +ad5933 +ad714x +ad714x-i2c +ad714x-spi +ad7150 +ad7152 +ad7192 +ad7266 +ad7280a +ad7291 +ad7298 +ad7303 +ad7314 +ad7414 +ad7418 +ad7476 +ad7606 +ad7746 +ad7780 +ad7791 +ad7793 +ad7816 +ad7877 +ad7879 +ad7879-i2c +ad7879-spi +ad7887 +ad7923 +ad799x +ad8366 +ad9523 +ad9832 +ad9834 +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 +ade7753 +ade7754 +ade7758 +ade7759 +ade7854 +ade7854-i2c +ade7854-spi +adf4350 +adfs +adi +adis16060 +adis16080 +adis16130 +adis16136 +adis16201 +adis16203 +adis16204 +adis16209 +adis16220 +adis16240 +adis16260 +adis16400 +adis16480 +adis_lib +adjd_s311 +adl_pci6208 +adl_pci7x3x +adl_pci8164 +adl_pci9111 +adl_pci9118 +adm1021 +adm1025 +adm1026 +adm1029 +adm1031 +adm1275 +adm8211 +adm9240 +adp5520_bl +adp5520-keys +adp5588-keys +adp5589-keys +adp8860_bl +adp8870_bl +adq12b +ads1015 +ads7828 +ads7846 +ads7871 +ad_sigma_delta +adt7310 +adt7316 +adt7316-i2c +adt7316-spi +adt7410 +adt7411 +adt7462 +adt7470 +adt7475 +adt7x10 +adummy +adutux +adv7511 +adv7604 +adv7842 +advansys +adv_pci1710 +adv_pci1723 +adv_pci1724 +adv_pci_dio +adxl34x +adxl34x-i2c +adxl34x-spi +adxrs450 +af9013 +af9033 +af_alg +affs +af_key +af_packet_diag +af-rxrpc +ah4 +ah6 +aha152x_cs +ahci +ahci_ceva +ahci_platform +aic79xx +aic7xxx +aic94xx +aio_aio12_8 +aio_iiro_16 +aiptek +aircable +airo +airo_cs +airspy +ak8975 +al3320a +algif_aead +algif_hash +algif_rng +algif_skcipher +ali-ircc +alim7101_wdt +altera-ci +altera_jtaguart +altera_ps2 +altera-stapl +altera_tse +altera_uart +alx +am53c974 +amc6821 +amd +amd5536udc +amd8111e +amdgpu +amplc_dio200 +amplc_dio200_common +amplc_dio200_pci +amplc_pc236 +amplc_pc236_common +amplc_pc263 +amplc_pci224 +amplc_pci230 +amplc_pci236 +amplc_pci263 +ams369fg06 +analog +anatop-regulator +ansi_cprng +anubis +aoe +apbps2 +apds9300 +apds9802als +apds990x +appledisplay +appletalk +appletouch +applicom +ar1021_i2c +ar5523 +ar7part +arc4 +arc_emac +arcmsr +arcnet +arc_ps2 +arc-rawmode +arc-rimi +arc_uart +arizona-haptics +arizona-i2c +arizona-ldo1 +arizona-micsupp +arizona-spi +ark3116 +arkfb +arptable_filter +arp_tables +arpt_mangle +as102_fe +as3711_bl +as3711-regulator +as3722-regulator +as3935 +as5011 +asc7621 +asix +ast +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 +ath3k +ath5k +ath6kl_core +ath6kl_sdio +ath6kl_usb +ath9k +ath9k_common +ath9k_htc +ath9k_hw +ati_remote +ati_remote2 +atl1 +atl1c +atl1e +atl2 +atm +atmel +atmel_cs +atmel-hlcdc +atmel_mxt_ts +atmel_pci +atmtcp +atp870u +atusb +atxp1 +atyfb +au0828 +au8522_common +au8522_decoder +au8522_dig +aufs +auo_k1900fb +auo_k1901fb +auo_k190x +auo-pixcir-ts +authenc +authencesn +auth_rpcgss +autofs4 +avma1_cs +avm_cs +avmfritz +ax25 +ax88179_178a +axnet_cs +axp20x-pek +axp20x-regulator +axp288_adc +axp288_charger +axp288_fuel_gauge +b1 +b1dma +b1pci +b1pcmcia +b2c2-flexcop +b2c2-flexcop-pci +b2c2-flexcop-usb +b43 +b43legacy +b44 +bas_gigaset +batman-adv +baycom_par +baycom_ser_fdx +baycom_ser_hdx +bcache +bch +bcm203x +bcm3510 +bcm590xx +bcm590xx-regulator +bcm5974 +bcm7xxx +bcm87xx +bcma +bcma-hcd +bcm-keypad +bcmsysport +bd6107 +bdc +bdc_pci +be2iscsi +be2net +befs +belkin_sa +bfa +bfs +bfusb +bh1750 +bh1770glc +bh1780gli +binfmt_misc +block2mtd +blocklayoutdriver +blowfish_common +blowfish_generic +bluecard_cs +bluetooth +bluetooth_6lowpan +bma150 +bma180 +bmc150-accel +bmc150_magn +bmg160 +bmp085-i2c +bmp085-spi +bmp280 +bna +bnep +bnx2 +bnx2fc +bnx2i +bnx2x +bonding +bpa10x +bpck +bpqether +bq2415x_charger +bq24190_charger +bq24257_charger +bq24735-charger +bq25890_charger +bq27x00_battery +br2684 +brcmfmac +brcmsmac +brcmutil +bridge +br_netfilter +broadcom +broadsheetfb +bsd_comp +bt3c_cs +bt878 +btbcm +btcoexist +btintel +btmrvl +btmrvl_sdio +btrfs +btrtl +btsdio +bttv +btuart_cs +btusb +btwilink +bu21013_ts +budget +budget-av +budget-ci +budget-core +budget-patch +c4 +c67x00 +c6xdigio +caam +caamalg +caamhash +caam_jr +caamrng +cachefiles +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-raw +cap11xx +capi +capidrv +capmode +carl9170 +carminefb +cassini +cast5_generic +cast6_generic +cast_common +catc +cb710 +cb710-mmc +cb_das16_cs +cb_pcidas +cb_pcidas64 +cb_pcidda +cb_pcimdas +cb_pcimdda +cc10001_adc +cc2520 +cc770 +cc770_isa +cc770_platform +c_can +c_can_pci +c_can_platform +cciss +ccm +cdc-acm +cdc_eem +cdc_ether +cdc_mbim +cdc_ncm +cdc-phonet +cdc_subset +cdc-wdm +ceph +cfg80211 +cfi_cmdset_0001 +cfi_cmdset_0002 +cfi_cmdset_0020 +cfi_probe +cfi_util +cfspi_slave +ch +ch341 +ch7006 +chacha20_generic +chacha20poly1305 +chaoskey +chipone_icn8318 +chipreg +chnl_net +cicada +cifs +ci_hdrc +ci_hdrc_imx +ci_hdrc_msm +ci_hdrc_pci +ci_hdrc_usb2 +ci_hdrc_zevio +cirrus +cirrusfb +clip +clk-cdce706 +clk-cdce925 +clk-max77686 +clk-max77802 +clk-palmas +clk-pwm +clk-rk808 +clk-s2mps11 +clk-si5351 +clk-si570 +clk-twl6040 +clk-wm831x +cls_basic +cls_bpf +cls_cgroup +cls_flow +cls_flower +cls_fw +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_cs +com20020-pci +com90io +com90xx +comedi +comedi_8254 +comedi_8255 +comedi_bond +comedi_isadma +comedi_parport +comedi_pci +comedi_pcmcia +comedi_test +comedi_usb +comm +configfs +contec_pci_dio +cordic +core +cp210x +cpc925_edac +cpia2 +cpsw_ale +cramfs +crc32 +crc7 +crc8 +crc-ccitt +crc-itu-t +cros_ec +cros_ec_devs +cros_ec_i2c +cros_ec_keyb +cros_ec_spi +cryptd +cryptoloop +crypto_null +crypto_user +cs5345 +cs53l32a +csiostor +ctr +cts +cuse +cw1200_core +cw1200_wlan_sdio +cw1200_wlan_spi +cx18 +cx18-alsa +cx22700 +cx22702 +cx231xx +cx231xx-alsa +cx231xx-dvb +cx2341x +cx23885 +cx24110 +cx24113 +cx24116 +cx24117 +cx24120 +cx24123 +cx25821 +cx25821-alsa +cx25840 +cx82310_eth +cx8800 +cx8802 +cx88-alsa +cx88-blackbird +cx88-dvb +cx88-vp3054-i2c +cx88xx +cxacru +cxd2099 +cxd2820r +cxgb +cxgb3 +cxgb3i +cxgb4 +cxgb4i +cxgb4vf +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 +da9030_battery +da9034-ts +da903x +da903x_bl +da9052-battery +da9052_bl +da9052-hwmon +da9052_onkey +da9052-regulator +da9052_tsi +da9052_wdt +da9055-hwmon +da9055_onkey +da9055-regulator +da9055_wdt +da9063_onkey +da9063-regulator +da9063_wdt +da9150-charger +da9150-core +da9150-gpadc +da9210-regulator +da9211-regulator +dac02 +DAC960 +daqboard2000 +das08 +das08_cs +das08_isa +das08_pci +das16 +das16m1 +das1800 +das6402 +das800 +davicom +db9 +dc395x +dccp +dccp_diag +dccp_ipv4 +dccp_ipv6 +dccp_probe +ddbridge +de2104x +de4x5 +decnet +deflate +defxx +denali +denali_dt +denali_pci +des_generic +designware_i2s +dgap +dgnc +dht11 +dib0070 +dib0090 +dib3000mb +dib3000mc +dib7000m +dib7000p +dib8000 +dibx000_common +digi_acceleport +digicolor-usart +diskonchip +divacapi +divadidd +diva_idi +diva_mnt +divas +dl2k +dlci +dlm +dln2 +dm1105 +dm9601 +dm-bio-prison +dm-bufio +dm-cache +dm-cache-cleaner +dm-cache-mq +dm-cache-smq +dm-crypt +dm-delay +dm-era +dmfe +dm-flakey +dm-log +dm-log-userspace +dm-log-writes +dmm32at +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-verity +dmx3191d +dm-zero +dnet +dn_rtmsg +docg3 +docg4 +dp83867 +drbd +drbg +drm +drm_kms_helper +drv260x +drv2665 +drv2667 +drx39xyj +drxd +drxk +ds1621 +ds1682 +ds1wm +ds2482 +ds2490 +ds2760_battery +ds2780_battery +ds2781_battery +ds2782_battery +ds3000 +ds620 +dsbr100 +dscc4 +dss1_divert +dst +dst_ca +dstr +dt2801 +dt2811 +dt2814 +dt2815 +dt2817 +dt282x +dt3000 +dt3155 +dt9812 +dtl1_cs +dummy +dummy-irq +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-digitv +dvb-usb-dtt200u +dvb-usb-dtv5100 +dvb-usb-dvbsky +dvb-usb-dw2102 +dvb-usb-ec168 +dvb-usb-friio +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_v2 +dvb-usb-vp702x +dvb-usb-vp7045 +dwc3 +dwc3-pci +dw_dmac +dw_dmac_core +dw_dmac_pci +dwmac-generic +dwmac-ipq806x +dwmac-lpc18xx +dwmac-meson +dwmac-rk +dwmac-socfpga +dwmac-sti +dwmac-sunxi +dw_wdt +dyna_pci10xx +dynapro +e100 +e1000 +e1000e +e3x0-button +e4000 +earth-pt1 +earth-pt3 +eata +ebt_802_3 +ebtable_broute +ebtable_filter +ebtable_nat +ebtables +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 +ec100 +echainiv +echo +edac_core +edt-ft5x06 +eeprom +eeprom_93cx6 +eeprom_93xx46 +eeti_ts +efs +egalax_ts +ehset +elan_i2c +elants_i2c +elo +elsa_cs +em28xx +em28xx-alsa +em28xx-dvb +em28xx-rc +em28xx-v4l +emac_arc +emac_rockchip +emc1403 +emc2103 +emc6w201 +em_canid +em_cmp +emi26 +emi62 +em_ipset +em_meta +em_nbyte +empeg +ems_pci +ems_pcmcia +ems_usb +em_text +emu10k1-gp +em_u32 +enc28j60 +enclosure +eni +enic +epat +epia +epic100 +eql +esas2r +esd_usb2 +esi-sir +esp4 +esp6 +esp_scsi +et1011c +et131x +ethoc +evbug +exofs +extcon-adc-jack +extcon-arizona +extcon-axp288 +extcon-gpio +extcon-max14577 +extcon-max77693 +extcon-max77843 +extcon-max8997 +extcon-palmas +extcon-rt8973a +extcon-sm5502 +extcon-usb-gpio +ezusb +f2fs +f75375s +f81232 +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_ssd1289 +fb_ssd1306 +fb_ssd1331 +fb_ssd1351 +fb_st7735r +fbtft +fbtft_device +fb_tinylcd +fb_tls8204 +fb_uc1701 +fb_upd161704 +fb_watterott +fc0011 +fc0012 +fc0013 +fc2580 +fcoe +fcrypt +fdomain +fdomain_cs +fealnx +ff-memless +fid +firedtv +firewire-core +firewire-net +firewire-ohci +firewire-sbp2 +firewire-serial +fit2 +fit3 +fixed +fl512 +fld +flexcan +flexfb +floppy +fm10k +fm801-gp +fmc +fmc-chardev +fmc-fakedev +fmc-trivial +fmc-write-eeprom +fm_drv +fmvj18x_cs +forcedeth +fore_200e +fotg210-hcd +fotg210-udc +fou +freevxfs +friq +frpw +fsa9480 +fscache +fsl-corenet-cf +fsl-diu-fb +fsldma +fsl-edma +fsl_elbc_nand +fsl_hypervisor +fsl_ifc_nand +fsl_lpuart +fsl_pq_mdio +fsl_usb2_udc +ft1000 +ft1000_pcmcia +ftdi-elan +ftdi_sio +ftl +fujitsu_ts +fusbh200-hcd +g450_pll +g760a +g762 +g_acm_ms +gadgetfs +gamecon +gameport +garmin_gps +garp +g_audio +g_cdc +gcm +g_dbgp +gdmtty +gdmulte +gdmwm +gdth +generic +generic-adc-battery +generic_bl +genet +geneve +geneve_core +gen_probe +genwqe_card +g_ether +gf128mul +gf2k +g_ffs +gfs2 +ghash-generic +g_hid +gianfar_driver +gianfar_ptp +gigaset +girbil-sir +gl518sm +gl520sm +gl620a +gluebi +g_mass_storage +g_midi +g_ncm +g_nokia +go7007 +go7007-loader +go7007-usb +goku_udc +goodix +gp2ap002a00f +gp2ap020a00f +gpio +gpio-74x164 +gpio-74xx-mmio +gpio-addr-flash +gpio-adnp +gpio-adp5520 +gpio-adp5588 +gpio-altera +gpio-amd8111 +gpio-arizona +gpio_backlight +gpio-beeper +gpio-charger +gpio-crystalcove +gpio-da9052 +gpio-da9055 +gpio-dln2 +gpio-dwapb +gpio-fan +gpio-generic +gpio-grgpio +gpio-ir-recv +gpio-janz-ttl +gpio-kempld +gpio_keys +gpio_keys_polled +gpio-lp3943 +gpio-max7300 +gpio-max7301 +gpio-max730x +gpio-max732x +gpio-mc33880 +gpio-mcp23s08 +gpio-ml-ioh +gpio_mouse +gpio-pca953x +gpio-pcf857x +gpio-rdc321x +gpio-regulator +gpio-sch311x +gpio-syscon +gpio_tilt_polled +gpio-tps65912 +gpio-twl4030 +gpio-twl6040 +gpio-ucb1400 +gpio-viperboard +gpio-vx855 +gpio_wdt +gpio-wm831x +gpio-wm8350 +gpio-wm8994 +g_printer +grace +grcan +gre +grip +grip_mp +gr_udc +gsc_hpdi +g_serial +gs_fpga +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 +gs_usb +gtco +guillemot +gunze +g_webcam +gxt4500 +g_zero +hackrf +hamachi +hampshire +hangcheck-timer +hanwang +hci +hci_uart +hci_vhci +hdlc +hdlc_cisco +hdlcdrv +hdlc_fr +hdlc_ppp +hdlc_raw +hdlc_raw_eth +hdlc_x25 +hdpvr +he +hexium_gemini +hexium_orion +hfc4s8s_l1 +hfcmulti +hfcpci +hfcsusb +hfc_usb +hfs +hfsplus +hi6421-pmic-core +hi6421-regulator +hid +hid-a4tech +hid-apple +hid-appleir +hid-aureal +hid-axff +hid-belkin +hid-betopff +hid-cherry +hid-chicony +hid-cp2112 +hid-cypress +hid-dr +hid-elecom +hid-elo +hid-emsff +hid-ezkey +hid-gaff +hid-generic +hid-gt683r +hid-gyration +hid-holtekff +hid-holtek-kbd +hid-holtek-mouse +hid-icade +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 +hidp +hid-penmount +hid-petalynx +hid-picolcd +hid-pl +hid-plantronics +hid-primax +hid-prodikeys +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-iio-common +hid-sensor-incl-3d +hid-sensor-magn-3d +hid-sensor-press +hid-sensor-prox +hid-sensor-rotation +hid-sensor-trigger +hid-sjoy +hid-sony +hid-speedlink +hid-steelseries +hid-sunplus +hid-thingm +hid-tivo +hid-tmff +hid-topseed +hid-twinhan +hid-uclogic +hid-waltop +hid-wiimote +hid-xinmo +hid-zpff +hid-zydacron +hih6130 +hisax +hisax_fcpcipnp +hisax_isac +hisax_st5481 +hisi504_nand +hmc5843_core +hmc5843_i2c +hmc5843_spi +hmc6352 +hopper +hostap +hostap_cs +hostap_pci +hostap_plx +hp100 +hpfs +hpilo +hpsa +hptiop +hsi +hsi_char +hso +hsr +hsu_dma +hsu_dma_pci +htc-pasic3 +htu21 +huawei_cdc_ncm +hwa-hc +hwa-rc +hwmon-vid +hx8357 +hysdn +i1480-dfu-usb +i1480-est +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-cros-ec-tunnel +i2c-designware-core +i2c-designware-pci +i2c-designware-platform +i2c-diolan-u2c +i2c-dln2 +i2c-gpio +i2c-hid +i2c-i801 +i2c-isch +i2c-kempld +i2c-matroxfb +i2c-mpc +i2c-mux +i2c-mux-gpio +i2c-mux-pca9541 +i2c-mux-pca954x +i2c-nforce2 +i2c-ocores +i2c-parport +i2c-parport-light +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 +i40e +i40evf +i5k_amb +i6300esb +i740fb +i82092 +ib_addr +ib_cm +ib_core +ib_ipoib +ib_iser +ib_isert +ib_mad +ibmaem +ibmpex +ib_mthca +ib_qib +ib_sa +ib_srp +ib_srpt +ib_ucm +ib_umad +ib_uverbs +icplus +icp_multi +ics932s401 +ideapad_slidebar +idma64 +idmouse +idt77252 +idtcps +idt_gen2 +ieee802154 +ieee802154_6lowpan +ieee802154_socket +ifb +iforce +igb +igbvf +igorplugusb +iguanair +iio_dummy +iio_hwmon +iio-trig-interrupt +iio-trig-periodic-rtc +iio-trig-sysfs +ii_pci20kc +ili210x +ili922x +ili9320 +imm +imon +ims-pcu +imx074 +imx_thermal +ina209 +ina2xx +industrialio +industrialio-triggered-buffer +inet_diag +inexio +inftl +initio +input-leds +input-polldev +int51x1 +intel_vr_nor +interact +interval_tree_test +inv-mpu6050 +ioc4 +io_edgeport +io_ti +iowarrior +ip6_gre +ip6table_filter +ip6table_mangle +ip6table_nat +ip6table_raw +ip6_tables +ip6table_security +ip6t_ah +ip6t_eui64 +ip6t_frag +ip6t_hbh +ip6t_ipv6header +ip6t_MASQUERADE +ip6t_mh +ip6t_NPT +ip6t_REJECT +ip6t_rpfilter +ip6t_rt +ip6t_SYNPROXY +ip6_tunnel +ip6_udp_tunnel +ip6_vti +ipack +ipaq +ipcomp +ipcomp6 +ipddp +ipg +ip_gre +iphase +ipheth +ipip +ipmi_devintf +ipmi_msghandler +ipmi_poweroff +ipmi_si +ipmi_ssif +ipmi_watchdog +ipoctal +ipr +ips +ip_set +ip_set_bitmap_ip +ip_set_bitmap_ipmac +ip_set_bitmap_port +ip_set_hash_ip +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 +iptable_filter +iptable_mangle +iptable_nat +iptable_raw +ip_tables +iptable_security +ipt_ah +ipt_CLUSTERIP +ipt_ECN +ipt_MASQUERADE +ipt_REJECT +ipt_rpfilter +ipt_SYNPROXY +ip_tunnel +ipvlan +ip_vs +ip_vs_dh +ip_vs_fo +ip_vs_ftp +ip_vs_lblc +ip_vs_lblcr +ip_vs_lc +ip_vs_nq +ip_vs_pe_sip +ip_vs_rr +ip_vs_sed +ip_vs_sh +ip_vs_wlc +ip_vs_wrr +ip_vti +ipw +ipw2100 +ipw2200 +ipwireless +ipx +ircomm +ircomm-tty +irda +irda-usb +ir-hix5hd2 +ir-jvc-decoder +ir-kbd-i2c +irlan +ir-lirc-codec +ir-mce_kbd-decoder +ir-nec-decoder +irnet +ir-rc5-decoder +ir-rc6-decoder +ir-sanyo-decoder +ir-sharp-decoder +ir-sony-decoder +irtty-sir +ir-usb +ir-xmp-decoder +iscsi_boot_sysfs +iscsi_target_mod +iscsi_tcp +isdn +isdn_bsdcomp +isdnhdlc +isicom +isight_firmware +isl29003 +isl29018 +isl29020 +isl29028 +isl29125 +isl6271a-regulator +isl6405 +isl6421 +isl6423 +isl9305 +isofs +isp116x-hcd +isp1362-hcd +isp1704_charger +isp1760 +it913x +itd1000 +itg3200 +iuu_phoenix +ivtv +ivtv-alsa +ivtvfb +iw_c2 +iw_cm +iw_cxgb3 +iw_cxgb4 +iwl3945 +iwl4965 +iwldvm +iwlegacy +iwlmvm +iwlwifi +iw_nes +ix2505v +ixgb +ixgbe +ixgbevf +janz-cmodio +janz-ican3 +jc42 +jedec_probe +jffs2 +jfs +jitterentropy_rng +jmb38x_ms +jme +joydev +joydump +jr3_pci +jsa1212 +jsm +kafs +kalmia +kaweth +kbic +kbtab +kcomedilib +ke_counter +kempld-core +kempld_wdt +kernelcapi +keyspan +keyspan_pda +keyspan_remote +kfifo_buf +khazad +kingsun-sir +kl5kusb105 +kmx61 +ko2iblnd +kobil_sct +ks0108 +ks8842 +ks8851 +ks8851_mll +ks959-sir +ksdazzle-sir +ksocklnd +ksz884x +ktti +kvaser_pci +kvaser_usb +kxcjk-1013 +kxsd9 +kxtj9 +kyrofb +l1oip +l2tp_core +l2tp_debugfs +l2tp_eth +l2tp_ip +l2tp_ip6 +l2tp_netlink +l2tp_ppp +l4f00242t03 +l64781 +lanai +lapb +lapbether +latch-addr-flash +lattice-ecp3-config +lcd +ld9040 +ldusb +lec +led-class-flash +leds-88pm860x +leds-adp5520 +leds-bcm6328 +leds-bcm6358 +leds-bd2802 +leds-blinkm +leds-da903x +leds-da9052 +leds-dac124s085 +leds-gpio +leds-ktd2692 +leds-lm3530 +leds-lm3533 +leds-lm355x +leds-lm3642 +leds-lp3944 +leds-lp8788 +leds-lp8860 +leds-lt3593 +leds-max77693 +leds-max8997 +leds-mc13783 +leds-menf21bmc +leds-pca9532 +leds-pca955x +leds-pca963x +leds-pm8941-wled +leds-pwm +leds-regulator +leds-tca6507 +leds-tlc591xx +leds-wm831x-status +leds-wm8350 +ledtrig-backlight +ledtrig-camera +ledtrig-default-on +ledtrig-gpio +ledtrig-heartbeat +ledtrig-oneshot +ledtrig-timer +ledtrig-transient +legousbtower +lg2160 +lgdt3305 +lgdt3306a +lgdt330x +lgs8gxx +lg-vl600 +lib80211 +lib80211_crypt_ccmp +lib80211_crypt_tkip +lib80211_crypt_wep +libahci +libahci_platform +libceph +libcfs +libcomposite +libcrc32c +libcxgbi +libertas +libertas_cs +libertas_sdio +libertas_spi +libertas_tf +libertas_tf_usb +libfc +libfcoe +libipw +libiscsi +libiscsi_tcp +libore +libosd +libsas +lightning +lineage-pem +linear +liquidio +lirc_bt829 +lirc_dev +lirc_imon +lirc_parallel +lirc_sasem +lirc_serial +lirc_sir +lirc_zilog +lis3l02dq +lis3lv02d +lis3lv02d_i2c +lis3lv02d_spi +litelink-sir +lkkbd +llc +llc2 +llite_lloop +ll_temac +lm25066 +lm3533-als +lm3533_bl +lm3533-core +lm3533-ctrlbank +lm3630a_bl +lm3639_bl +lm63 +lm70 +lm73 +lm75 +lm77 +lm78 +lm80 +lm83 +lm8323 +lm8333 +lm85 +lm87 +lm90 +lm92 +lm93 +lm95234 +lm95241 +lm95245 +lms283gf05 +lms501kf03 +lmv +lnbp21 +lnbp22 +lnet +lnet_selftest +lockd +locktorture +lov +lp +lp3943 +lp3971 +lp3972 +lp855x_bl +lp8727_charger +lp872x +lp8755 +lp8788_adc +lp8788_bl +lp8788-buck +lp8788-charger +lp8788-ldo +lpc_ich +lpc_sch +lpddr_cmds +lpfc +lru_cache +lrw +ltc2941-battery-gauge +ltc2945 +ltc2978 +ltc3589 +ltc4151 +ltc4215 +ltc4222 +ltc4245 +ltc4260 +ltc4261 +ltr501 +ltv350qv +lustre +lv5207lp +lvstest +lxt +lz4 +lz4_compress +lz4hc +lz4hc_compress +m25p80 +m2m-deinterlace +m52790 +m62332 +m88ds3103 +m88rs2000 +m88rs6000t +ma600-sir +mac80211 +mac80211_hwsim +mac802154 +macb +mac-celtic +mac-centeuro +mac-croatian +mac-cyrillic +mac-gaelic +mac-greek +mac_hid +mac-iceland +mac-inuit +mac-roman +mac-romanian +mac-turkish +macvlan +macvtap +mag3110 +magellan +mailbox-altera +mantis +mantis_core +map_absent +map_funcs +map_ram +map_rom +marvell +matrix-keymap +matrix_keypad +matroxfb_accel +matroxfb_base +matroxfb_crtc2 +matroxfb_DAC1064 +matroxfb_g450 +matroxfb_maven +matroxfb_misc +matroxfb_Ti3026 +matrox_w1 +max1027 +max1111 +max11801_ts +max1363 +max14577 +max14577_charger +max1586 +max16064 +max16065 +max1619 +max1668 +max17040_battery +max17042_battery +max197 +max2165 +max3100 +max3421-hcd +max34440 +max517 +max5821 +max63xx_wdt +max6639 +max6642 +max6650 +max6697 +max6875 +max7359_keypad +max77686 +max77693 +max77693_charger +max77693-haptic +max77802 +max77843 +max77843-haptic +max8649 +max8660 +max8688 +max8903_charger +max8907 +max8907-regulator +max8925_bl +max8925_onkey +max8925_power +max8925-regulator +max8952 +max8973-regulator +max8997 +max8997_charger +max8997_haptic +max8998 +max8998_charger +mb862xxfb +mb86a16 +mb86a20s +mc13783-adc +mc13783-pwrbutton +mc13783-regulator +mc13783_ts +mc13892-regulator +mc13xxx-core +mc13xxx-i2c +mc13xxx-regulator-core +mc13xxx-spi +mc44s803 +m_can +mcb +mcb-pci +mceusb +mcp2120-sir +mcp251x +mcp3021 +mcp320x +mcp3422 +mcp4725 +mcp4922 +mcryptd +mcs5000_ts +mcs7780 +mcs7830 +mcs_touchkey +mct_u232 +md4 +md5-ppc +mdc +mdc800 +md-cluster +mdio +mdio-bcm-unimac +mdio-bitbang +mdio-gpio +mdio-mux +mdio-mux-gpio +mdio-mux-mmioreg +mdio-octeon +me4000 +me_daq +media +megaraid +megaraid_mbox +megaraid_mm +megaraid_sas +memstick +mena21_wdt +menf21bmc +menf21bmc_hwmon +menf21bmc_wdt +men_z135_uart +men_z188_adc +metronomefb +metro-usb +mf6x4 +mga +mgc +michael_mic +micrel +microread +microread_i2c +microtek +mii +minix +mip6 +mISDN_core +mISDN_dsp +mISDNinfineon +mISDNipac +mISDNisar +mite +mk712 +mkiss +mlx4_core +mlx4_en +mlx4_ib +mlx5_core +mlx5_ib +mlx90614 +mma8450 +mma8452 +mma9551 +mma9551_core +mma9553 +mmc35240 +mmc_block +mmc_spi +mms114 +mn88472 +mn88473 +mos7720 +mos7840 +moxa +mpc624 +mpc85xx_edac +mpl115 +mpl3115 +mpls_gso +mpls_router +mpoa +mpr121_touchkey +mpt2sas +mpt3sas +mptbase +mptctl +mptfc +mptlan +mptsas +mptscsih +mptspi +mpu3050 +mrf24j40 +mrp +ms5611_core +ms5611_i2c +ms5611_spi +ms_block +msdos +msi001 +msi2500 +msp3400 +mspro_block +mt2060 +mt2063 +mt20xx +mt2131 +mt2266 +mt29f_spinand +mt312 +mt352 +mt6397-core +mt6397-regulator +mt7601u +mt9m001 +mt9m111 +mt9t031 +mt9t112 +mt9v011 +mt9v022 +mtd +mtd_blkdevs +mtdblock +mtdblock_ro +mtd_dataflash +mtdoops +mtdram +mtdswap +mtip32xx +mtk-sd +mtouch +multipath +multiq3 +musb_hdrc +mvmdio +mvsas +mv_u3d_core +mv_udc +mvumi +mwifiex +mwifiex_pcie +mwifiex_sdio +mwifiex_usb +mwl8k +mxb +mxl111sf-demod +mxl111sf-tuner +mxl301rf +mxl5005s +mxl5007t +mxser +mxuport +myri10ge +nand +nand_bch +nand_ecc +nand_ids +nandsim +national +natsemi +nau7802 +navman +nbd +nci +nci_uart +ncpfs +nct7802 +nct7904 +nd_blk +nd_btt +nd_pmem +ne2k-pci +neofb +net1080 +net2272 +net2280 +netconsole +netjet +netlink_diag +netrom +netxen_nic +newtonkbd +nfc +nfc_digital +nfcmrvl +nfcmrvl_uart +nfcmrvl_usb +nf_conntrack +nf_conntrack_amanda +nf_conntrack_broadcast +nf_conntrack_ftp +nf_conntrack_h323 +nf_conntrack_ipv4 +nf_conntrack_ipv6 +nf_conntrack_irc +nf_conntrack_netbios_ns +nf_conntrack_netlink +nf_conntrack_pptp +nf_conntrack_proto_dccp +nf_conntrack_proto_gre +nf_conntrack_proto_sctp +nf_conntrack_proto_udplite +nf_conntrack_sane +nf_conntrack_sip +nf_conntrack_snmp +nf_conntrack_tftp +nfcsim +nfcwilink +nf_defrag_ipv4 +nf_defrag_ipv6 +nf_log_arp +nf_log_bridge +nf_log_common +nf_log_ipv4 +nf_log_ipv6 +nf_nat +nf_nat_amanda +nf_nat_ftp +nf_nat_h323 +nf_nat_ipv4 +nf_nat_ipv6 +nf_nat_irc +nf_nat_masquerade_ipv4 +nf_nat_masquerade_ipv6 +nf_nat_pptp +nf_nat_proto_dccp +nf_nat_proto_gre +nf_nat_proto_sctp +nf_nat_proto_udplite +nf_nat_redirect +nf_nat_sip +nf_nat_snmp_basic +nf_nat_tftp +nfnetlink +nfnetlink_acct +nfnetlink_cthelper +nfnetlink_cttimeout +nfnetlink_log +nfnetlink_queue +nf_reject_ipv4 +nf_reject_ipv6 +nfs +nfs_acl +nfsd +nfs_layout_flexfiles +nfs_layout_nfsv41_files +nfsv2 +nfsv3 +nfsv4 +nf_synproxy_core +nf_tables +nf_tables_arp +nf_tables_bridge +nf_tables_inet +nf_tables_ipv4 +nf_tables_ipv6 +nf_tables_netdev +nft_chain_nat_ipv4 +nft_chain_nat_ipv6 +nft_chain_route_ipv4 +nft_chain_route_ipv6 +nft_compat +nft_counter +nft_ct +nft_exthdr +nft_hash +nftl +nft_limit +nft_log +nft_masq +nft_masq_ipv4 +nft_masq_ipv6 +nft_meta +nft_meta_bridge +nft_nat +nft_queue +nft_rbtree +nft_redir +nft_redir_ipv4 +nft_redir_ipv6 +nft_reject +nft_reject_bridge +nft_reject_inet +nft_reject_ipv4 +nft_reject_ipv6 +ngene +n_gsm +nhc_dest +nhc_fragment +nhc_hop +nhc_ipv6 +nhc_mobility +nhc_routing +nhc_udp +n_hdlc +ni_6527 +ni_65xx +ni_660x +ni_670x +ni_at_a2150 +ni_at_ao +ni_atmio +ni_atmio16d +nicpf +nicstar +nicvf +ni_daq_700 +ni_daq_dio24 +ni_labpc +ni_labpc_common +ni_labpc_cs +ni_labpc_isadma +ni_labpc_pci +nilfs2 +ni_mio_cs +ni_pcidio +ni_pcimio +ni_tio +ni_tiocmd +niu +ni_usb6501 +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 +nosy +notifier-error-inject +nouveau +nozomi +nps_enet +n_r3964 +ns558 +ns83820 +nsc-ircc +ntb +ntb_netdev +ntb_pingpong +ntb_tool +ntb_transport +ntc_thermistor +ntfs +n_tracerouter +n_tracesink +null_blk +nvidiafb +nvme +nxp-nci +nxp-nci_i2c +nxt200x +nxt6000 +obdclass +obdecho +objlayoutdriver +ocfb +ocfs2 +ocfs2_dlm +ocfs2_dlmfs +ocfs2_nodemanager +ocfs2_stackglue +ocfs2_stack_o2cb +ocfs2_stack_user +ocrdma +of_mmc_spi +ofpart +of_xilinx_wdt +old_belkin-sir +omap4-keypad +omfs +omninet +on20 +on26 +onenand +opencores-kbd +openvswitch +oprofile +opticon +option +or51132 +or51211 +orinoco +orinoco_cs +orinoco_nortel +orinoco_plx +orinoco_tmd +orinoco_usb +osc +osd +osdblk +osst +oti6858 +ov2640 +ov5642 +ov6650 +ov7640 +ov7670 +ov772x +ov9640 +ov9740 +overlay +oxu210hp-hcd +ozwpan +p54common +p54pci +p54spi +p54usb +p8022 +p8023 +palmas-pwrbutton +palmas-regulator +pandora_bl +panel +panel-ld9040 +panel-s6e8aa0 +panel-sharp-lq101r1sx01 +panel-simple +paride +parkbd +parport +parport_ax88796 +parport_cs +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_pcmcia +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 +pc300too +pcap_keys +pcap-regulator +pcap_ts +pcbc +pcd +pcf50633 +pcf50633-adc +pcf50633-backlight +pcf50633-charger +pcf50633-gpio +pcf50633-input +pcf50633-regulator +pcf8574_keypad +pcf8591 +pch_udc +pci +pci200syn +pcips2 +pci-stub +pcl711 +pcl724 +pcl726 +pcl730 +pcl812 +pcl816 +pcl818 +pcm3724 +pcmad +pcmcia +pcmcia_core +pcmciamtd +pcmcia_rsrc +pcmda12 +pcmmio +pcmuio +pcnet32 +pcnet_cs +pcrypt +pcwd_pci +pcwd_usb +pd +pd6729 +pda_power +pdc_adma +peak_pci +peak_pcmcia +peak_usb +pegasus +penmount +percpu_test +pf +pfuze100-regulator +pg +phantom +phonet +phram +phy-bcm-kona-usb2 +phy-exynos-usb2 +phy-gpio-vbus-usb +phy-isp1301 +phy-pxa-28nm-hsic +phy-pxa-28nm-usb2 +physmap +physmap_of +phy-tahvo +phy-tusb1210 +pixcir_i2c_ts +pkcs7_message +pkcs7_test_key +pktcdvd +pktgen +pl2303 +platform_lcd +plat_nand +plat-ram +plip +plusb +pluto2 +plx_pci +pm2fb +pm3fb +pm80xx +pmbus +pmbus_core +pmc551 +pmcraid +pm-notifier-error-inject +pn533 +pn544 +pn544_i2c +pn_pep +poly1305_generic +port100 +powermate +powr1220 +ppa +ppdev +ppp_async +ppp_deflate +ppp_mppe +pppoatm +pppoe +pppox +ppp_synctty +pps_core +pps-gpio +pps-ldisc +pps_parport +pptp +prism2_usb +ps2mult +ps8622 +psmouse +psnap +pt +ptlrpc +ptn3460 +ptp +pvrusb2 +pwc +pwm-atmel-hlcdc +pwm-beeper +pwm_bl +pwm-fan +pwm-fsl-ftm +pwm-lp3943 +pwm-pca9685 +pwm-regulator +pwm-twl +pwm-twl-led +pxa27x_udc +qcaspi +qcaux +qcom-spmi-iadc +qcom_spmi-regulator +qcom-spmi-temp-alarm +qcom-spmi-vadc +qcserial +qinfo_probe +qla1280 +qla2xxx +qla3xxx +qla4xxx +qlcnic +qlge +qlogic_cs +qlogicfas408 +qm1d1c0042 +qmi_wwan +qnx4 +qnx6 +qoriq-cpufreq +qsemi +qt1010 +qt1070 +qt2160 +quatech2 +quatech_daqp_cs +quota_tree +quota_v1 +quota_v2 +qxl +r128 +r592 +r6040 +r8152 +r8169 +r8188eu +r8192e_pci +r8192u_usb +r820t +r852 +r8712u +r8723au +r8a66597-hcd +r8a66597-udc +radeon +radeonfb +radio-bcm2048 +radio-i2c-si470x +radio-keene +radio-ma901 +radio-maxiradio +radio-mr800 +radio-platform-si4713 +radio-raremono +radio-shark +radio-si476x +radio-tea5764 +radio-usb-si470x +radio-usb-si4713 +radio-wl1273 +raid0 +raid1 +raid10 +raid456 +raid6_pq +raid6test +raid_class +ramoops +raw +ray_cs +rbd +rbtree_test +rc5t583-regulator +rc-adstech-dvb-t-pci +rc-alink-dtu-m +rc-anysee +rc-apac-viewcomp +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-behold +rc-behold-columbus +rc-budget-ci-old +rc-cinergy +rc-cinergy-1400 +rc-core +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-dvbsky +rc-em-terratec +rc-encore-enltv +rc-encore-enltv2 +rc-encore-enltv-fm53 +rc-evga-indtube +rc-eztv +rc-flydvb +rc-flyvideo +rc-fusionhdtv-mce +rc-gadmei-rm008z +rc-genius-tvgo-a11mce +rc-gotview7135 +rc-hauppauge +rc-imon-mce +rc-imon-pad +rc-iodata-bctv7e +rc-it913x-v1 +rc-it913x-v2 +rc-kaiomy +rc-kworld-315u +rc-kworld-pc150u +rc-kworld-plus-tv-analog +rc-leadtek-y04g0051 +rc-lirc +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-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-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-twinhan1027 +rc-twinhan-dtv-cab-ci +rc-videomate-m1f +rc-videomate-s350 +rc-videomate-tv-pvr +rc-winfast +rc-winfast-usbii-deluxe +rdc321x-southbridge +rdma_cm +rdma_ucm +rds +rds_rdma +rds_tcp +realtek +redboot +redrat3 +reed_solomon +regmap-spmi +regulator-haptic +reiserfs +remoteproc +retu-mfd +retu-pwrbutton +retu_wdt +rfc1051 +rfc1201 +rfcomm +rfd_ftl +rfkill-gpio +rfkill-regulator +rio500 +rionet +rio-scan +rivafb +rj54n1cb0c +rk808 +rk808-regulator +rmd128 +rmd160 +rmd256 +rmd320 +rn5t618 +rn5t618-regulator +rn5t618_wdt +rndis_host +rndis_wlan +rocket +romfs +rose +rotary_encoder +rp2 +rpcrdma +rpcsec_gss_krb5 +rsa_generic +rsi_91x +rsi_sdio +rsi_usb +rsxx +rt2400pci +rt2500pci +rt2500usb +rt2800lib +rt2800mmio +rt2800pci +rt2800usb +rt2x00lib +rt2x00mmio +rt2x00pci +rt2x00usb +rt5033 +rt5033_battery +rt5033-regulator +rt61pci +rt73usb +rt9455_charger +rtc-88pm80x +rtc-88pm860x +rtc-ab3100 +rtc-ab-b5ze-s3 +rtc-abx80x +rtc-as3722 +rtc-bq32k +rtc-bq4802 +rtc-cmos +rtc_cmos_setup +rtc-da9052 +rtc-da9055 +rtc-da9063 +rtc-ds1286 +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-ds3234 +rtc-em3027 +rtc-fm3130 +rtc-generic +rtc-hid-sensor-time +rtc-hym8563 +rtc-isl12022 +rtc-isl12057 +rtc-isl1208 +rtc-lp8788 +rtc-m41t80 +rtc-m41t93 +rtc-m41t94 +rtc-m48t35 +rtc-m48t59 +rtc-m48t86 +rtc-max6900 +rtc-max6902 +rtc-max77686 +rtc-max77802 +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-pcf8563 +rtc-pcf8583 +rtc-r9701 +rtc-rc5t583 +rtc-rk808 +rtc-rp5c01 +rtc-rs5c348 +rtc-rs5c372 +rtc-rv3029c2 +rtc-rx4581 +rtc-rx8025 +rtc-rx8581 +rtc-s35390a +rtc-s5m +rtc-snvs +rtc-stk17ta8 +rtc-tps6586x +rtc-tps65910 +rtc-tps80031 +rtc-twl +rtc-v3020 +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 +rtl8723ae +rtl8723be +rtl8723-common +rtl8821ae +rtllib +rtllib_crypt_ccmp +rtllib_crypt_tkip +rtllib_crypt_wep +rtl_pci +rtl_usb +rtlwifi +rts5208 +rtsx_pci +rtsx_pci_ms +rtsx_pci_sdmmc +rtsx_usb +rtsx_usb_ms +rtsx_usb_sdmmc +rx51_battery +rxkad +s1d13xxxfb +s2250 +s2255drv +s2io +s2mpa01 +s2mps11 +s3fb +s526 +s5h1409 +s5h1411 +s5h1420 +s5m8767 +s626 +s6e63m0 +s921 +saa6588 +saa6752hs +saa7115 +saa7127 +saa7134 +saa7134-alsa +saa7134-dvb +saa7134-empress +saa7134-go7007 +saa7146 +saa7146_vv +saa7164 +saa717x +saa7706h +safe_serial +salsa20_generic +samsung-keypad +samsung-sxgbe +sata_fsl +sata_inic162x +sata_mv +sata_nv +sata_promise +sata_qstor +sata_sil +sata_sil24 +sata_sis +sata_sx4 +sata_uli +sata_via +sata_vsc +savage +savagefb +sbp_target +sbs-battery +sc16is7xx +sc92031 +sca3000 +sch_atm +sch_cbq +sch_choke +sch_codel +sch_drr +sch_dsmark +sch_fq +sch_fq_codel +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_tbf +sch_teql +scsi_debug +scsi_dh +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_probe +sdhci +sdhci_f_sdh30 +sdhci-of-arasan +sdhci-of-esdhc +sdhci-of-hlwd +sdhci-pci +sdhci-pltfm +sdio_uart +sdricoh_cs +sedlbauer_cs +seed +sensorhub +seqiv +ser_gigaset +serial2002 +serial_cs +serio_raw +sermouse +serpent_generic +serport +ses +sfc +sha1-powerpc +shark2 +shpchp +sht15 +sht21 +shtc1 +sh_veu +si2157 +si2165 +si2168 +si21xx +si4713 +si476x-core +si7005 +si7020 +sidewinder +sierra +sierra_net +sil164 +sir-dev +sis +sis190 +sis5595 +sis900 +sisfb +sisusbvga +sit +sja1000 +sja1000_isa +sja1000_platform +skd +skfp +skge +sky2 +sky81452 +sky81452-backlight +sky81452-regulator +sl811_cs +sl811-hcd +slcan +slip +slram +sm501 +sm501fb +sm750fb +sm7xxfb +smb347-charger +smc91c92_cs +sm_common +sm_ftl +smipcie +smm665 +smsc +smsc47m192 +smsc75xx +smsc911x +smsc9420 +smsc95xx +smsc-ircc2 +smscufx +smsdvb +smsmdtv +smssdio +smsusb +snd +snd-ac97-codec +snd-ad1889 +snd-ak4113 +snd-ak4114 +snd-ak4117 +snd-ak4xxx-adda +snd-ali5451 +snd-aloop +snd-als300 +snd-als4000 +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-firewire-lib +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-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-pcm-oss +snd-pcxhr +snd-pdaudiocf +snd-portman2x4 +snd-pt2258 +snd-rawmidi +snd-riptide +snd-rme32 +snd-rme96 +snd-rme9652 +snd-sb-common +snd-scs1x +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-ac97 +snd-soc-adau1701 +snd-soc-ak4104 +snd-soc-ak4554 +snd-soc-ak4642 +snd-soc-ak5386 +snd-soc-alc5623 +snd-soc-core +snd-soc-cs35l32 +snd-soc-cs4265 +snd-soc-cs4270 +snd-soc-cs4271 +snd-soc-cs4271-i2c +snd-soc-cs4271-spi +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-es8328 +snd-soc-fsl-asrc +snd-soc-fsl-esai +snd-soc-fsl-sai +snd-soc-fsl-spdif +snd-soc-fsl-ssi +snd-soc-hdmi-codec +snd-soc-imx-audmux +snd-soc-pcm1681 +snd-soc-pcm1792a-codec +snd-soc-pcm512x +snd-soc-pcm512x-i2c +snd-soc-pcm512x-spi +snd-soc-rt5631 +snd-soc-sgtl5000 +snd-soc-si476x +snd-soc-sigmadsp +snd-soc-sigmadsp-i2c +snd-soc-simple-card +snd-soc-spdif-rx +snd-soc-spdif-tx +snd-soc-ssm2602 +snd-soc-ssm2602-i2c +snd-soc-ssm2602-spi +snd-soc-ssm4567 +snd-soc-sta32x +snd-soc-sta350 +snd-soc-tas2552 +snd-soc-tas5086 +snd-soc-tas571x +snd-soc-tfa9879 +snd-soc-tlv320aic23 +snd-soc-tlv320aic23-i2c +snd-soc-tlv320aic23-spi +snd-soc-tlv320aic31xx +snd-soc-tlv320aic3x +snd-soc-tpa6130a2 +snd-soc-ts3a227e +snd-soc-wm8510 +snd-soc-wm8523 +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-wm8804 +snd-soc-wm8804-i2c +snd-soc-wm8804-spi +snd-soc-wm8903 +snd-soc-wm8962 +snd-soc-wm8978 +snd-soc-xtfpga-i2s +snd-sonicvibes +snd-timer +snd-trident +snd-ua101 +snd-usb-6fire +snd-usb-audio +snd-usb-caiaq +snd-usb-hiface +snd-usb-line6 +snd-usbmidi-lib +snd-usb-pod +snd-usb-podhd +snd-usb-toneport +snd-usb-usx2y +snd-usb-variax +snd-util-mem +snd-via82xx +snd-via82xx-modem +snd-virmidi +snd-virtuoso +snd-vx222 +snd-vx-lib +snd-vxpocket +snd-ymfpci +snic +soc_button_array +soc_camera +soc_camera_platform +soc_mediabus +softdog +softing +softing_cs +solo6x10 +solos-pci +sony-btf-mpx +soundcore +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 +spectrum_cs +speedfax +speedtch +spi-altera +spi-bitbang +spi-butterfly +spi-cadence +spidev +spi-dln2 +spi-dw +spi-dw-midpci +spi-dw-mmio +spi-gpio +spi_ks8995 +spi-lm70llp +spi-nor +spi-oc-tiny +spi-pxa2xx-pci +spi-pxa2xx-platform +spi-sc18is602 +spi-tle62x0 +spi-xcomm +spi-zynqmp-gqspi +spmi +squashfs +sr9700 +sr9800 +ssb +ssb-hcd +ssd1307fb +ssfdc +ssp_accel_sensor +ssp_gyro_sensor +ssp_iio +sst25l +ssu100 +st +st1232 +st21nfca_hci +st21nfca_i2c +st_accel +st_accel_i2c +st_accel_spi +starfire +stb0899 +stb6000 +stb6100 +st_drv +ste10Xp +ste_modem_rproc +stex +st_gyro +st_gyro_i2c +st_gyro_spi +stinger +stir4200 +stk1160 +stk3310 +stk8312 +stk8ba50 +stkwebcam +st_magn +st_magn_i2c +st_magn_spi +stmmac +stmmac-platform +stmpe-keypad +stmpe-ts +st-nci +st-nci_i2c +stowaway +stp +st_pressure +st_pressure_i2c +st_pressure_spi +streamzap +st_sensors +st_sensors_i2c +st_sensors_spi +stv0288 +stv0297 +stv0299 +stv0367 +stv0900 +stv090x +stv6110 +stv6110x +sundance +sungem +sungem_phy +sunhme +suni +sunkbd +sunrpc +sur40 +svgalib +sx8 +sx8654 +sx9500 +sym53c500_cs +sym53c8xx +symbolserial +synaptics_i2c +synaptics_i2c_rmi4 +synaptics_usb +synclink +synclink_cs +synclink_gt +synclinkmp +sysv +t1pci +t5403 +talitos +target_core_file +target_core_iblock +target_core_mod +target_core_pscsi +target_core_user +tc3589x-keypad +tc74 +tc90522 +tca6416-keypad +tca8418_keypad +tcm_fc +tcm_loop +tcm_qla2xxx +tcm_usb_gadget +tcp_bic +tcp_cdg +tcp_dctcp +tcp_diag +tcp_highspeed +tcp_htcp +tcp_hybla +tcp_illinois +tcp_lp +tcp_probe +tcp_scalable +tcp_vegas +tcp_veno +tcp_westwood +tcp_yeah +tcrypt +tcs3414 +tcs3472 +tda10021 +tda10023 +tda10048 +tda1004x +tda10071 +tda10086 +tda18212 +tda18218 +tda18271 +tda18271c2dd +tda665x +tda7432 +tda8083 +tda8261 +tda826x +tda827x +tda8290 +tda9840 +tda9887 +tda998x +tdfx +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 +tekram-sir +teles_cs +test_bpf +test_firmware +test-hexdump +test-kstrtox +test_module +test_power +test-string_helpers +test_udelay +test_user_copy +tg3 +tgr192 +thmc50 +thunder_bgx +thunderbolt +ti-adc081c +ti-adc128s052 +ti_am335x_adc +ti_am335x_tsc +ti_am335x_tscadc +ti_dac7512 +tifm_7xx1 +tifm_core +tifm_ms +tifm_sd +timeriomem-rng +tipc +ti_usb_3410_5052 +tlan +tm6000 +tm6000-alsa +tm6000-dvb +tmdc +tmp006 +tmp102 +tmp103 +tmp401 +tmp421 +toim3232-sir +torture +toshsd +touchit213 +touchright +touchwin +tpci200 +tpm_atmel +tpm_i2c_atmel +tpm_i2c_infineon +tpm_i2c_nuvoton +tpm-rng +tpm_st33zp24 +tpm_st33zp24_i2c +tpm_st33zp24_spi +tps40422 +tps51632-regulator +tps6105x +tps6105x-regulator +tps62360-regulator +tps65010 +tps65023-regulator +tps6507x +tps6507x-regulator +tps6507x-ts +tps65090-charger +tps65090-regulator +tps65217 +tps65217_bl +tps65217-regulator +tps65218 +tps65218-pwrbutton +tps65218-regulator +tps6524x-regulator +tps6586x-regulator +tps65910-regulator +tps65912-regulator +tps80031-regulator +trancevibrator +trf7970a +tridentfb +ts2020 +ts_bm +tsc2005 +tsc2007 +tsc40 +ts_fsm +tsi568 +tsi57x +tsi721_mport +ts_kmp +tsl2550 +tsl2563 +tsl2583 +tsl2x7x_core +tsl4531 +ttm +ttpci-eeprom +ttusb_dec +ttusbdecfe +ttusbir +tua6100 +tua9001 +tulip +tuner +tuner-simple +tuner-types +tuner-xc2028 +tunnel4 +tunnel6 +turbografx +tvaudio +tveeprom +tvp5150 +tw2804 +tw68 +tw9903 +tw9906 +tw9910 +twidjoy +twl4030_charger +twl4030_keypad +twl4030-madc +twl4030_madc_battery +twl4030-madc-hwmon +twl4030-pwrbutton +twl4030-vibra +twl4030_wdt +twl6030-gpadc +twl6040-vibra +twl-regulator +twofish_common +twofish_generic +typhoon +u132-hcd +uas +ubi +ubifs +ucb1400_core +ucb1400_ts +ucd9000 +ucd9200 +uda1342 +udc-core +udc-xilinx +udf +udl +udp_diag +udp_tunnel +ueagle-atm +u_ether +ufs +ufshcd +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 +uli526x +ulpi +umc +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 +unioxx5 +unix_diag +upd64031a +upd64083 +usb3503 +usb_8dev +usb8xxx +usbatm +usb_debug +usbdux +usbduxfast +usbduxsigma +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_uac1 +usb_f_uac2 +usb_f_uvc +usb_gigaset +usbhid +usbip-core +usbip-host +usbkbd +usblcd +usbled +usblp +usbmisc_imx +usbmon +usbmouse +usbnet +usbserial +usb-serial-simple +usbsevseg +usb-storage +usbtest +usbtmc +usbtouchscreen +usbtv +usbvision +usb_wwan +usdhi6rol0 +u_serial +userspace-consumer +ushc +uss720 +uvcvideo +uvesafb +uwb +v4l2-common +v4l2-dv-timings +v4l2-flash-led-class +v4l2-mem2mem +vcan +vcnl4000 +ves1820 +ves1x93 +veth +vf610_adc +vga16fb +vgastate +vgem +vgg2432a4 +vhci-hcd +vhost +vhost_net +vhost_scsi +via +via686a +via-ircc +via-rhine +via-sdmmc +via-velocity +videobuf2-core +videobuf2-dma-contig +videobuf2-dma-sg +videobuf2-dvb +videobuf2-memops +videobuf2-vmalloc +videobuf-core +videobuf-dma-sg +videobuf-dvb +videobuf-vmalloc +videodev +vim2m +viperboard +viperboard_adc +virt-dma +virtio-gpu +virtio_input +virtio-rng +virtio_scsi +virtual +visor +vitesse +vivid +vlsi_ir +vmac +vme_pio2 +vme_tsi148 +vme_user +vme_vmivme7805 +vmk80xx +vmwgfx +vmxnet3 +vp27smpx +vport-geneve +vport-gre +vport-vxlan +vringh +vsock +vsxxxaa +vt6655_stage +vt6656_stage +vt8231 +vt8623fb +vub300 +vx855 +vxge +vxlan +w1_bq27000 +w1_ds2406 +w1_ds2408 +w1_ds2413 +w1_ds2423 +w1_ds2431 +w1_ds2433 +w1_ds2760 +w1_ds2780 +w1_ds2781 +w1_ds28e04 +w1-gpio +w1_smem +w1_therm +w5100 +w5300 +w6692 +w83781d +w83791d +w83792d +w83793 +w83795 +w83977af_ir +w83l785ts +w83l786ng +wacom +wacom_i2c +wacom_serial4 +wacom_w8001 +walkera0701 +wanxl +warrior +wbsd +wcn36xx +wd719x +wdt87xx_i2c +wdt_pci +whci +whci-hcd +whc-rc +whiteheat +wil6210 +wimax +winbond-840 +windfarm_core +wire +wishbone-serial +wl1251 +wl1251_sdio +wl1251_spi +wl1273-core +wl12xx +wl18xx +wl3501_cs +wlcore +wlcore_sdio +wlcore_spi +wm831x_backup +wm831x_bl +wm831x-dcdc +wm831x-hwmon +wm831x-isink +wm831x-ldo +wm831x-on +wm831x_power +wm831x-ts +wm831x_wdt +wm8350-hwmon +wm8350_power +wm8350-regulator +wm8350_wdt +wm8400-regulator +wm8739 +wm8775 +wm8994-core +wm8994-irq +wm8994-regmap +wm8994-regulator +wm97xx-ts +wp512 +wusb-cbaf +wusbcore +wusb-wa +x25 +x25_asy +xc4000 +xc5000 +xcbc +xfrm4_mode_beet +xfrm4_mode_transport +xfrm4_mode_tunnel +xfrm4_tunnel +xfrm6_mode_beet +xfrm6_mode_ro +xfrm6_mode_transport +xfrm6_mode_tunnel +xfrm6_tunnel +xfrm_algo +xfrm_ipcomp +xfrm_user +xfs +xgifb +xhci-plat-hcd +xilinx_ps2 +xilinx-tpg +xilinx_uartps +xilinx-video +xilinx-vtc +xillybus_core +xillybus_of +xillybus_pcie +xirc2ps_cs +xircom_cb +xor +xpad +xsens_mt +x_tables +xt_addrtype +xt_AUDIT +xt_bpf +xt_cgroup +xt_CHECKSUM +xt_CLASSIFY +xt_cluster +xt_comment +xt_connbytes +xt_connlabel +xt_connlimit +xt_connmark +xt_CONNSECMARK +xt_conntrack +xt_cpu +xt_CT +xt_dccp +xt_devgroup +xt_dscp +xt_DSCP +xt_ecn +xt_esp +xt_hashlimit +xt_helper +xt_hl +xt_HL +xt_HMARK +xt_IDLETIMER +xt_ipcomp +xt_iprange +xt_ipvs +xtkbd +xt_l2tp +xt_LED +xt_length +xt_limit +xt_LOG +xt_mac +xt_mark +xt_multiport +xt_nat +xt_NETMAP +xt_nfacct +xt_NFLOG +xt_NFQUEUE +xt_osf +xt_owner +xt_physdev +xt_pkttype +xt_policy +xt_quota +xt_rateest +xt_RATEEST +xt_realm +xt_recent +xt_REDIRECT +xts +xt_sctp +xt_SECMARK +xt_set +xt_socket +xt_state +xt_statistic +xt_string +xt_tcpmss +xt_TCPMSS +xt_TCPOPTSTRIP +xt_tcpudp +xt_TEE +xt_time +xt_TPROXY +xt_TRACE +xt_u32 +xusbatm +xz_dec_test +yam +yealink +yellowfin +yenta_socket +yurex +zaurus +zd1201 +zd1211rw +zforce_ts +zhenhua +zl10036 +zl10039 +zl10353 +zl6100 +zlib +zr364xx +zram --- linux-raspi2-4.2.0.orig/debian.master/abi/4.2.0-26.31/powerpc/powerpc64-smp +++ linux-raspi2-4.2.0/debian.master/abi/4.2.0-26.31/powerpc/powerpc64-smp @@ -0,0 +1,18623 @@ +EXPORT_SYMBOL arch/powerpc/platforms/pseries/hvcserver 0x048d27cc hvcs_register_connection +EXPORT_SYMBOL arch/powerpc/platforms/pseries/hvcserver 0x536d329b hvcs_get_partner_info +EXPORT_SYMBOL arch/powerpc/platforms/pseries/hvcserver 0xc39c3704 hvcs_free_partner_info +EXPORT_SYMBOL arch/powerpc/platforms/pseries/hvcserver 0xd0a02396 hvcs_free_connection +EXPORT_SYMBOL crypto/gf128mul 0x0c2f123f gf128mul_4k_bbe +EXPORT_SYMBOL crypto/gf128mul 0x1068004b gf128mul_bbe +EXPORT_SYMBOL crypto/gf128mul 0x2f2889a0 gf128mul_init_64k_lle +EXPORT_SYMBOL crypto/gf128mul 0x3755f990 gf128mul_init_64k_bbe +EXPORT_SYMBOL crypto/gf128mul 0x384ef9ce gf128mul_64k_bbe +EXPORT_SYMBOL crypto/gf128mul 0x56af0dbd gf128mul_x_ble +EXPORT_SYMBOL crypto/gf128mul 0x83581089 gf128mul_init_4k_lle +EXPORT_SYMBOL crypto/gf128mul 0x9b2560b9 gf128mul_init_4k_bbe +EXPORT_SYMBOL crypto/gf128mul 0x9e13f6f6 gf128mul_lle +EXPORT_SYMBOL crypto/gf128mul 0xbd17a0df gf128mul_4k_lle +EXPORT_SYMBOL crypto/gf128mul 0xc0890413 gf128mul_64k_lle +EXPORT_SYMBOL crypto/gf128mul 0xd60736ec gf128mul_free_64k +EXPORT_SYMBOL crypto/mcryptd 0x6310e901 mcryptd_arm_flusher +EXPORT_SYMBOL crypto/xor 0x5b6c00e6 xor_blocks +EXPORT_SYMBOL drivers/atm/suni 0x8b05d1ff suni_init +EXPORT_SYMBOL drivers/bcma/bcma 0x0b287c39 bcma_core_irq +EXPORT_SYMBOL drivers/bcma/bcma 0x71725dc1 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 0x0787e95d pi_connect +EXPORT_SYMBOL drivers/block/paride/paride 0x4267110a pi_register_driver +EXPORT_SYMBOL drivers/block/paride/paride 0x52d0070d pi_schedule_claimed +EXPORT_SYMBOL drivers/block/paride/paride 0x5db3c059 pi_init +EXPORT_SYMBOL drivers/block/paride/paride 0x7a8aa930 pi_release +EXPORT_SYMBOL drivers/block/paride/paride 0x81bc8702 pi_write_regr +EXPORT_SYMBOL drivers/block/paride/paride 0x971824d7 pi_write_block +EXPORT_SYMBOL drivers/block/paride/paride 0x984511cb paride_unregister +EXPORT_SYMBOL drivers/block/paride/paride 0x9aa08663 pi_read_regr +EXPORT_SYMBOL drivers/block/paride/paride 0xb21ba07d pi_unregister_driver +EXPORT_SYMBOL drivers/block/paride/paride 0xb5a154dc paride_register +EXPORT_SYMBOL drivers/block/paride/paride 0xbb965f36 pi_disconnect +EXPORT_SYMBOL drivers/block/paride/paride 0xcd1c6f2c pi_read_block +EXPORT_SYMBOL drivers/block/paride/paride 0xfbd9cfe5 pi_do_claimed +EXPORT_SYMBOL drivers/bluetooth/btbcm 0x0c51e590 btbcm_patchram +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x1348760d ipmi_request_settime +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x16dcec76 ipmi_set_my_address +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x17aa8d2a ipmi_smi_add_proc_entry +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x1a10c898 ipmi_set_maintenance_mode +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x1aba5db8 ipmi_unregister_smi +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x1fae3bac ipmi_addr_src_to_str +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x2f7e748c ipmi_register_smi +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x3516487e ipmi_smi_watcher_unregister +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x40f2b10c ipmi_alloc_smi_msg +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x423b776a ipmi_create_user +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x4c971bec ipmi_smi_msg_received +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x524f6f51 ipmi_get_my_address +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x5e80f37c ipmi_unregister_for_cmd +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x5fcdcc05 ipmi_get_my_LUN +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x67cb9784 ipmi_poll_interface +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x78fd36e7 ipmi_request_supply_msgs +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x7f4fded1 ipmi_smi_watcher_register +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x804f922a ipmi_addr_length +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x8c8ee770 ipmi_destroy_user +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x96cbcc81 ipmi_get_version +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xa2a98b91 ipmi_get_maintenance_mode +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xd69f8567 ipmi_set_gets_events +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xe0fa83f2 ipmi_register_for_cmd +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xe4f4665b ipmi_validate_addr +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xe6ab72a6 ipmi_set_my_LUN +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xe75e164e ipmi_get_smi_info +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xf2576cb9 ipmi_smi_watchdog_pretimeout +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xfcb77cfd ipmi_free_recv_msg +EXPORT_SYMBOL drivers/char/tpm/st33zp24/tpm_st33zp24 0x41ba7aba st33zp24_pm_suspend +EXPORT_SYMBOL drivers/char/tpm/st33zp24/tpm_st33zp24 0x4dafb9dc st33zp24_remove +EXPORT_SYMBOL drivers/char/tpm/st33zp24/tpm_st33zp24 0x58a2e6db st33zp24_pm_resume +EXPORT_SYMBOL drivers/char/tpm/st33zp24/tpm_st33zp24 0x89c71618 st33zp24_probe +EXPORT_SYMBOL drivers/char/xillybus/xillybus_core 0x25978d50 xillybus_isr +EXPORT_SYMBOL drivers/char/xillybus/xillybus_core 0x2ad2de19 xillybus_endpoint_discovery +EXPORT_SYMBOL drivers/char/xillybus/xillybus_core 0x90bacee2 xillybus_endpoint_remove +EXPORT_SYMBOL drivers/char/xillybus/xillybus_core 0xd89a9562 xillybus_init_endpoint +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0x19971519 dw_dma_cyclic_start +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0x6108f836 dw_dma_cyclic_stop +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0x873efe6c dw_dma_cyclic_free +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0xb6378ceb dw_dma_get_src_addr +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0xc0f488f3 dw_dma_cyclic_prep +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0xe42cd6c5 dw_dma_get_dst_addr +EXPORT_SYMBOL drivers/edac/edac_core 0x3aae6fa4 edac_mc_find +EXPORT_SYMBOL drivers/firewire/firewire-core 0x00eadd03 fw_schedule_bus_reset +EXPORT_SYMBOL drivers/firewire/firewire-core 0x04d0f641 fw_core_remove_descriptor +EXPORT_SYMBOL drivers/firewire/firewire-core 0x084f6a40 fw_iso_buffer_init +EXPORT_SYMBOL drivers/firewire/firewire-core 0x0f7d6af8 fw_csr_string +EXPORT_SYMBOL drivers/firewire/firewire-core 0x148edd74 fw_core_handle_response +EXPORT_SYMBOL drivers/firewire/firewire-core 0x16e91e21 fw_csr_iterator_next +EXPORT_SYMBOL drivers/firewire/firewire-core 0x1c2f24b6 fw_iso_context_destroy +EXPORT_SYMBOL drivers/firewire/firewire-core 0x2062f48a fw_iso_context_queue +EXPORT_SYMBOL drivers/firewire/firewire-core 0x20c82098 fw_cancel_transaction +EXPORT_SYMBOL drivers/firewire/firewire-core 0x23442394 fw_fill_response +EXPORT_SYMBOL drivers/firewire/firewire-core 0x2885fec5 fw_get_request_speed +EXPORT_SYMBOL drivers/firewire/firewire-core 0x3c56ef91 fw_workqueue +EXPORT_SYMBOL drivers/firewire/firewire-core 0x47cbc080 fw_iso_resource_manage +EXPORT_SYMBOL drivers/firewire/firewire-core 0x4fa2324e fw_send_request +EXPORT_SYMBOL drivers/firewire/firewire-core 0x5c0b826f fw_card_initialize +EXPORT_SYMBOL drivers/firewire/firewire-core 0x616fc2ac fw_core_handle_request +EXPORT_SYMBOL drivers/firewire/firewire-core 0x645b715f fw_core_add_descriptor +EXPORT_SYMBOL drivers/firewire/firewire-core 0x65c9438b fw_csr_iterator_init +EXPORT_SYMBOL drivers/firewire/firewire-core 0x69eb6e58 fw_core_handle_bus_reset +EXPORT_SYMBOL drivers/firewire/firewire-core 0x6d1abb64 fw_iso_context_stop +EXPORT_SYMBOL drivers/firewire/firewire-core 0x86468d44 fw_rcode_string +EXPORT_SYMBOL drivers/firewire/firewire-core 0x86bba5a9 fw_iso_buffer_destroy +EXPORT_SYMBOL drivers/firewire/firewire-core 0x90863005 fw_high_memory_region +EXPORT_SYMBOL drivers/firewire/firewire-core 0x92e4c33c fw_card_add +EXPORT_SYMBOL drivers/firewire/firewire-core 0x987e6535 fw_send_response +EXPORT_SYMBOL drivers/firewire/firewire-core 0xa9034a42 fw_run_transaction +EXPORT_SYMBOL drivers/firewire/firewire-core 0xb11494b5 fw_bus_type +EXPORT_SYMBOL drivers/firewire/firewire-core 0xb6c4ec77 fw_iso_context_create +EXPORT_SYMBOL drivers/firewire/firewire-core 0xb6c6a6d7 fw_iso_context_flush_completions +EXPORT_SYMBOL drivers/firewire/firewire-core 0xb7c0ff0e fw_core_add_address_handler +EXPORT_SYMBOL drivers/firewire/firewire-core 0xc3276267 fw_core_remove_address_handler +EXPORT_SYMBOL drivers/firewire/firewire-core 0xca250237 fw_device_enable_phys_dma +EXPORT_SYMBOL drivers/firewire/firewire-core 0xd49b797d fw_iso_context_start +EXPORT_SYMBOL drivers/firewire/firewire-core 0xd4d65b68 fw_iso_context_queue_flush +EXPORT_SYMBOL drivers/firewire/firewire-core 0xfb319486 fw_core_remove_card +EXPORT_SYMBOL drivers/fmc/fmc 0x074edbb0 fmc_find_sdb_device +EXPORT_SYMBOL drivers/fmc/fmc 0x324adc73 fmc_device_unregister +EXPORT_SYMBOL drivers/fmc/fmc 0x46a8d483 fmc_free_sdb_tree +EXPORT_SYMBOL drivers/fmc/fmc 0x5621d61a fmc_driver_unregister +EXPORT_SYMBOL drivers/fmc/fmc 0x66afb07a fmc_scan_sdb_tree +EXPORT_SYMBOL drivers/fmc/fmc 0x8918cbc8 fmc_reprogram +EXPORT_SYMBOL drivers/fmc/fmc 0x8bc57622 fmc_device_register_n +EXPORT_SYMBOL drivers/fmc/fmc 0xa8dba816 fmc_device_unregister_n +EXPORT_SYMBOL drivers/fmc/fmc 0xcdf0225a fmc_show_sdb_tree +EXPORT_SYMBOL drivers/fmc/fmc 0xd9851efc fmc_device_register +EXPORT_SYMBOL drivers/fmc/fmc 0xefb4bb11 fmc_driver_register +EXPORT_SYMBOL drivers/gpu/drm/drm 0x000681fa drm_send_vblank_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0x006b26d8 drm_legacy_addmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x01e9147c drm_vblank_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x02efc40d drm_handle_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0x035d0114 drm_debugfs_create_files +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0388956f drm_bridge_disable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x03a6fccf drm_noop +EXPORT_SYMBOL drivers/gpu/drm/drm 0x03c9c523 drm_atomic_state_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x03e35417 drm_mode_group_init_legacy_group +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0a72f765 drm_clflush_virt_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0ae4b94c drm_ht_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0d6484da drm_edid_to_eld +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0e435325 drm_calc_timestamping_constants +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0e91deaf of_drm_find_panel +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0e9d7996 drm_agp_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0fa1722f drm_mode_parse_command_line_for_connector +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 0x11d66ed4 drm_open +EXPORT_SYMBOL drivers/gpu/drm/drm 0x13fc7360 drm_vblank_count_and_time +EXPORT_SYMBOL drivers/gpu/drm/drm 0x14a9a178 drm_get_format_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x15427faf drm_gem_prime_handle_to_fd +EXPORT_SYMBOL drivers/gpu/drm/drm 0x156ec846 drm_mode_set_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1623e744 drm_property_add_enum +EXPORT_SYMBOL drivers/gpu/drm/drm 0x16374148 drm_ati_pcigart_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x17096e97 drm_atomic_plane_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x17192373 drm_get_edid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x17f625dd drm_gem_get_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0x183f36af drm_encoder_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1934f2d7 drm_get_pci_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0x19441050 drm_bridge_mode_set +EXPORT_SYMBOL drivers/gpu/drm/drm 0x194eadaa drm_edid_header_is_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x19e4430f drm_flip_work_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1a546ddd drm_mm_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1a770ac3 drm_detect_hdmi_monitor +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1b378bfe drm_framebuffer_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1b5f3fa6 drm_plane_index +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1bd3cbd6 drm_flip_work_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1bfb274e drm_connector_unplug_all +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1cbd02a2 drm_mode_set_crtcinfo +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1d01df21 drm_gem_mmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1d4ecd97 drm_legacy_ioremap_wc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1d7eb89e drm_atomic_get_crtc_state +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1d804f2e drm_atomic_crtc_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1dd71f7a drm_err +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1e41eb58 drm_mode_create_dvi_i_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1f065f98 drm_crtc_index +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1fed964a drm_gtf_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x20645642 drm_debug +EXPORT_SYMBOL drivers/gpu/drm/drm 0x20a217ac drm_legacy_idlelock_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x21011623 drm_mode_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2289aad6 drm_framebuffer_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x22acaf62 drm_get_cea_aspect_ratio +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2391698a drm_mode_plane_set_obj_prop +EXPORT_SYMBOL drivers/gpu/drm/drm 0x23e966ad drm_hdmi_avi_infoframe_from_display_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2431b0fb drm_poll +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2582b841 drm_legacy_rmmap_locked +EXPORT_SYMBOL drivers/gpu/drm/drm 0x284d9bb8 drm_i2c_encoder_mode_set +EXPORT_SYMBOL drivers/gpu/drm/drm 0x29a010e6 drm_mm_insert_node_in_range_generic +EXPORT_SYMBOL drivers/gpu/drm/drm 0x29af94a9 drm_connector_index +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2a4cf933 drm_panel_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2af09841 drm_plane_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2b0448f8 drm_i2c_encoder_detect +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2b61afc8 drm_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2d3bd6a2 drm_modeset_lock_interruptible +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2d50570f drm_rect_calc_hscale +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2e005ac7 drm_atomic_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2e7a4300 drm_rgb_quant_range_selectable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x30139616 drm_property_create_blob +EXPORT_SYMBOL drivers/gpu/drm/drm 0x302d76d4 drm_modeset_backoff +EXPORT_SYMBOL drivers/gpu/drm/drm 0x31da9043 drm_connector_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3734199c drm_legacy_rmmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x374ae9ae drm_mode_config_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x37ebe743 drm_mm_replace_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3819c7d6 drm_bridge_post_disable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x38a4f7ae drm_format_num_planes +EXPORT_SYMBOL drivers/gpu/drm/drm 0x38ef30fc drm_vblank_count +EXPORT_SYMBOL drivers/gpu/drm/drm 0x39e0d852 drm_dev_unref +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3ac1fef9 drm_mode_legacy_fb_format +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3b9d009a drm_format_plane_cpp +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3ba9645c drm_gem_mmap_obj +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3d1c2037 drm_dev_register +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3eb37b9d drm_ht_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3ed12c8f drm_gem_prime_fd_to_handle +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4158b994 drm_legacy_addbufs_agp +EXPORT_SYMBOL drivers/gpu/drm/drm 0x415f324b drm_calc_vbltimestamp_from_scanoutpos +EXPORT_SYMBOL drivers/gpu/drm/drm 0x42c77bf3 drm_legacy_idlelock_take +EXPORT_SYMBOL drivers/gpu/drm/drm 0x42f157bc drm_agp_unbind +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4301dd71 drm_mode_set_config_internal +EXPORT_SYMBOL drivers/gpu/drm/drm 0x438639ef drm_i2c_encoder_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4408347b drm_warn_on_modeset_not_all_locked +EXPORT_SYMBOL drivers/gpu/drm/drm 0x44214923 drm_vma_node_revoke +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4533f880 drm_i2c_encoder_dpms +EXPORT_SYMBOL drivers/gpu/drm/drm 0x45a78bbd drm_pci_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x46212d30 drm_property_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4671344f drm_flip_work_queue_task +EXPORT_SYMBOL drivers/gpu/drm/drm 0x471fc565 drm_object_property_set_value +EXPORT_SYMBOL drivers/gpu/drm/drm 0x47985862 drm_i2c_encoder_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x48dca004 drm_mode_connector_list_update +EXPORT_SYMBOL drivers/gpu/drm/drm 0x490cfb78 drm_mm_reserve_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4a24632a drm_gem_prime_export +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4c511235 drm_edid_is_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4c6aa41a drm_gem_dumb_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4d0ee8ec drm_crtc_vblank_reset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4d312dc9 drm_mode_prune_invalid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4e84b8b9 drm_property_create_object +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4ea1f5a2 drm_gem_object_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4f3b03bd drm_irq_install +EXPORT_SYMBOL drivers/gpu/drm/drm 0x50e28c07 drm_edid_to_sad +EXPORT_SYMBOL drivers/gpu/drm/drm 0x50f1ac68 drm_mode_connector_set_path_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x51db353a drm_vma_offset_manager_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x51de6375 drm_property_create_bitmask +EXPORT_SYMBOL drivers/gpu/drm/drm 0x526f6f71 drm_rect_calc_hscale_relaxed +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5360a509 drm_connector_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x54081a1c drm_property_unreference_blob +EXPORT_SYMBOL drivers/gpu/drm/drm 0x557f9110 drm_mode_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5644014a drm_framebuffer_unregister_private +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5692ba20 drm_mode_object_find +EXPORT_SYMBOL drivers/gpu/drm/drm 0x57b6efe3 drm_ioctl_flags +EXPORT_SYMBOL drivers/gpu/drm/drm 0x57dc4b3a drm_crtc_vblank_off +EXPORT_SYMBOL drivers/gpu/drm/drm 0x59ef50f0 drm_edid_block_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5b99572c drm_master_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5bb6ec1c drm_modeset_lock_all +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5c79e76f drm_add_modes_noedid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5cc17c03 drm_atomic_connector_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5ccc37b5 drm_crtc_handle_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5d7318dc drm_global_item_ref +EXPORT_SYMBOL drivers/gpu/drm/drm 0x601dac41 drm_gem_object_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x629c05e1 drm_clflush_sg +EXPORT_SYMBOL drivers/gpu/drm/drm 0x63f753b9 drm_prime_pages_to_sg +EXPORT_SYMBOL drivers/gpu/drm/drm 0x64cb6ffd drm_object_attach_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6586a2b6 drm_mode_hsync +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6711fc09 drm_mm_dump_table +EXPORT_SYMBOL drivers/gpu/drm/drm 0x672d209e drm_av_sync_delay +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6732731b drm_legacy_addbufs_pci +EXPORT_SYMBOL drivers/gpu/drm/drm 0x67633846 drm_mm_insert_node_generic +EXPORT_SYMBOL drivers/gpu/drm/drm 0x67fcea51 drm_vblank_off +EXPORT_SYMBOL drivers/gpu/drm/drm 0x685589ba drm_panel_attach +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6862194c drm_bridge_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x68b34069 drm_plane_force_disable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x68ed607c drm_flip_work_queue +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6900d335 drm_rect_clip_scaled +EXPORT_SYMBOL drivers/gpu/drm/drm 0x69c1750d drm_dev_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6cd5ee14 drm_connector_unregister +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6ce6b0eb drm_bridge_pre_enable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6e30ba8e drm_rect_rotate_inv +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6e8efd41 drm_connector_register +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6e9a8cc1 drm_modeset_drop_locks +EXPORT_SYMBOL drivers/gpu/drm/drm 0x704bf914 drm_flip_work_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x70f9bc59 drm_mode_create_dirty_info_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7318315e drm_vma_offset_lookup_locked +EXPORT_SYMBOL drivers/gpu/drm/drm 0x73a05a47 drm_mode_equal_no_clocks_no_stereo +EXPORT_SYMBOL drivers/gpu/drm/drm 0x74d3287d drm_gem_object_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x75b93910 drm_legacy_ioremap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7605f22a drm_prime_sg_to_page_addr_arrays +EXPORT_SYMBOL drivers/gpu/drm/drm 0x76121a3a drm_gem_put_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0x77b5a81e drm_universal_plane_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x77e36675 drm_i2c_encoder_restore +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7892ebab drm_framebuffer_lookup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7a17e475 drm_prime_gem_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7ad578e0 drm_vblank_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7af329ef drm_crtc_check_viewport +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7b142cfd drm_atomic_set_mode_prop_for_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7bf381c2 drm_i2c_encoder_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7c1a4e2f drm_atomic_add_affected_planes +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7e13670e drm_atomic_check_only +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7eba01cb drm_atomic_legacy_backoff +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7f8cf3d2 drm_sysfs_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8039e2e3 drm_panel_detach +EXPORT_SYMBOL drivers/gpu/drm/drm 0x803a27ef drm_ati_pcigart_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x809ede10 drm_platform_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x82c2998f drm_flip_work_allocate_task +EXPORT_SYMBOL drivers/gpu/drm/drm 0x837c85bb drm_vma_offset_manager_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x843ce655 drm_mode_connector_attach_encoder +EXPORT_SYMBOL drivers/gpu/drm/drm 0x869678b0 drm_plane_from_index +EXPORT_SYMBOL drivers/gpu/drm/drm 0x871ab41a drm_rect_intersect +EXPORT_SYMBOL drivers/gpu/drm/drm 0x87cef0a6 drm_modeset_acquire_fini +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8804d644 drm_bridge_enable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x89d8f158 drm_vblank_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8a6ecbc5 drm_vblank_on +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8ae6223f drm_select_eld +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8b49148c drm_mode_create_rotation_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8cee4a2d drm_mode_duplicate +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8de13715 drm_format_vert_chroma_subsampling +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8eff9111 drm_ht_find_item +EXPORT_SYMBOL drivers/gpu/drm/drm 0x909cb04e drm_atomic_add_affected_connectors +EXPORT_SYMBOL drivers/gpu/drm/drm 0x910b7ad3 drm_gem_handle_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x91344434 drm_atomic_set_crtc_for_connector +EXPORT_SYMBOL drivers/gpu/drm/drm 0x91770dc8 drm_mode_vrefresh +EXPORT_SYMBOL drivers/gpu/drm/drm 0x918fa4a6 drm_master_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0x91fec1cc drm_rect_calc_vscale +EXPORT_SYMBOL drivers/gpu/drm/drm 0x92408488 drm_mm_scan_add_block +EXPORT_SYMBOL drivers/gpu/drm/drm 0x93484b5d drm_vma_node_is_allowed +EXPORT_SYMBOL drivers/gpu/drm/drm 0x93d24a7e drm_wait_one_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0x94160666 drm_gem_private_object_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x949c5066 drm_dev_unregister +EXPORT_SYMBOL drivers/gpu/drm/drm 0x95ac2910 drm_i2c_encoder_mode_fixup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x96a8f3ff drm_property_create_bool +EXPORT_SYMBOL drivers/gpu/drm/drm 0x97033c4a drm_platform_set_busid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x976b2e00 drm_mode_probed_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9772f1c9 drm_crtc_get_hv_timing +EXPORT_SYMBOL drivers/gpu/drm/drm 0x97eaf5bb drm_crtc_vblank_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9826cf51 drm_bridge_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0x99059509 drm_pci_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x991c9bb9 drm_crtc_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9972db48 drm_rect_calc_vscale_relaxed +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9ade52de drm_legacy_getsarea +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9cf350c2 drm_agp_enable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9d134515 drm_crtc_vblank_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9e4b5cdc drm_crtc_send_vblank_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9e6e13ec drm_atomic_set_crtc_for_plane +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9f147b7b drm_cvt_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9f84e095 drm_mode_config_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa0804314 drm_agp_bind +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa0ee21a2 drm_mode_create_from_cmdline_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa1221f91 drm_atomic_set_mode_for_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa14bc74f drm_atomic_state_clear +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa1c9c5da drm_display_info_set_bus_formats +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa1fc3821 drm_reinit_primary_mode_group +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa28078b2 drm_edid_duplicate +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa4466414 drm_mm_remove_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa48381b9 drm_gem_object_lookup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa4c9cf88 drm_modeset_unlock_all +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa531d023 drm_mode_create_scaling_mode_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa64e5eff drm_framebuffer_unreference +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa6e9922a drm_gem_vm_open +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa7a58c24 drm_atomic_state_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa85e2cee drm_add_edid_modes +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa96acfcb drm_rect_debug_print +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa9773751 drm_unplug_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa991c33c drm_mode_validate_basic +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb053adda drm_rect_rotate +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb206a937 drm_mode_create_suggested_offset_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb3115783 drm_vblank_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb313f25b drm_mode_validate_size +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb3f4e0e6 drm_framebuffer_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb3ffedf4 drm_ioctl +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb5540008 drm_global_item_unref +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb5603909 drm_mode_config_reset +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb56d8c67 drm_mode_equal +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb623bd2c drm_agp_acquire +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb683c665 drm_gem_prime_import +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb83e80dd drm_dev_set_unique +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb8d9560f drm_encoder_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb9a4ca33 drm_agp_bind_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbac03ccb drm_vblank_pre_modeset +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbaff5d2b drm_gem_handle_delete +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbbb8b541 drm_gem_vm_close +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbbea127a drm_property_lookup_blob +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbd04e191 drm_property_reference_blob +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbd33adf6 drm_property_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbd451695 drm_of_find_possible_crtcs +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbd747493 drm_gem_free_mmap_offset +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbe730898 drm_mode_find_dmt +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbf29bd92 drm_agp_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc099780b drm_atomic_connectors_for_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc0b5fc31 drm_clflush_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc1c14346 drm_modeset_unlock +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc219c72c drm_debugfs_remove_files +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc2a84b6a drm_agp_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc2bffd10 drm_panel_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc349bacc drm_atomic_get_connector_state +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc360e7e2 drm_ut_debug_printk +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc36f39df drm_gem_dmabuf_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc37b7d63 drm_crtc_vblank_count +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc3bb1a9f drm_mode_create_tile_group +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc3d3f1bf drm_atomic_get_plane_state +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc49abdf8 drm_plane_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc4efb4fa drm_modeset_unlock_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc548316e drm_legacy_ioremapfree +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc5bbe4c0 drm_legacy_mmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0xca0593eb drm_hdmi_vendor_infoframe_from_display_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0xca45efbc drm_format_horz_chroma_subsampling +EXPORT_SYMBOL drivers/gpu/drm/drm 0xca5c7790 drm_mm_init_scan_with_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcac22e7e drm_vma_offset_lookup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xccef09bf drm_modeset_lock_all_crtcs +EXPORT_SYMBOL drivers/gpu/drm/drm 0xccf36fa1 drm_modeset_lock_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcd0fc417 drm_ht_just_insert_please +EXPORT_SYMBOL drivers/gpu/drm/drm 0xce21a716 drm_crtc_init_with_planes +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcf61097f drm_panel_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd0a4c054 drm_mode_get_tile_group +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd2335101 drm_fb_get_bpp_depth +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd29e2d70 drm_agp_info +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd3c3150a drm_atomic_state_default_clear +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd4bd08b9 drm_gem_create_mmap_offset +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd52b1d11 drm_mm_init_scan +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd6574e4c drm_pci_exit +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd70c8470 drm_mm_debug_table +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd7adf71e drm_pcie_get_speed_cap_mask +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd81143ca drm_vma_node_allow +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd8f87a87 drm_set_preferred_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd938ba7e drm_pci_set_busid +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd99c7141 drm_mode_connector_set_tile_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd9a58d1d drm_mode_copy +EXPORT_SYMBOL drivers/gpu/drm/drm 0xda53790f drm_bridge_mode_fixup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdbb5a9f5 drm_ht_remove_item +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdd150721 drm_mm_takedown +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdf5a6dcf drm_atomic_state_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdf666902 drm_rotation_simplify +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdf73982f drm_vblank_post_modeset +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdfe0c5f7 drm_modeset_backoff_interruptible +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdfe8ffc9 drm_mode_crtc_set_gamma_size +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe2a531bd drm_atomic_set_fb_for_plane +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe2ffd7a5 drm_vma_offset_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe51d89b5 drm_mm_clean +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe674537c drm_match_cea_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe69a2d1c drm_atomic_async_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe7197773 drm_ht_insert_item +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe7c0ef75 drm_dev_ref +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe7c96bc0 drm_property_create_enum +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe8d22a1b drm_irq_uninstall +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe8e2d138 drm_atomic_state_default_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe9339d2f drm_object_property_get_value +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe9fc5903 drm_mode_create_aspect_ratio_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xea689422 drm_framebuffer_reference +EXPORT_SYMBOL drivers/gpu/drm/drm 0xeb033e98 drm_gtf_mode_complex +EXPORT_SYMBOL drivers/gpu/drm/drm 0xeb15bf5d drm_compat_ioctl +EXPORT_SYMBOL drivers/gpu/drm/drm 0xedef548a __drm_modeset_lock_all +EXPORT_SYMBOL drivers/gpu/drm/drm 0xef689c6c drm_mode_debug_printmodeline +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf080b422 drm_crtc_vblank_on +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf117749e drm_property_create_signed_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf1421d13 drm_mode_sort +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf168d602 drm_mode_create_tv_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf176d35f drm_pci_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf1b098be drm_vma_offset_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf2d1bbbb drm_probe_ddc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf3898981 drm_put_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf456cf05 of_drm_find_bridge +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf4a17ee5 drm_gem_create_mmap_offset_size +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf4f684cd drm_i2c_encoder_save +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf5501d0a drm_mode_connector_update_edid_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf8abda33 drm_crtc_wait_one_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf8b8b981 drm_modeset_lock +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf953d207 drm_read +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf98bd08b drm_modeset_legacy_acquire_ctx +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfa15985f drm_modeset_acquire_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfcf54a4f drm_mm_scan_remove_block +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfd063935 drm_edid_to_speaker_allocation +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfd72fd34 drm_i2c_encoder_prepare +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfe88c582 drm_property_create_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0xff318819 drm_bridge_attach +EXPORT_SYMBOL drivers/gpu/drm/drm 0xffc6c87a drm_detect_monitor_audio +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x04086fcc drm_dp_mst_dump_topology +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x04eaa838 drm_fb_helper_prepare +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x098e47d2 drm_dp_link_train_clock_recovery_delay +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x09b4a89e drm_helper_mode_fill_fb_struct +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0bf16725 drm_fb_helper_add_one_connector +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0da54883 drm_dp_dpcd_read_link_status +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0e20ca55 drm_helper_disable_unused_functions +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0f63ee3d drm_has_preferred_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0f96ec70 drm_dp_clock_recovery_ok +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x163251c8 drm_dp_link_train_channel_eq_delay +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x1636895f drm_fb_helper_pan_display +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x1ba1efcb drm_atomic_helper_crtc_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x1bfbdc71 drm_atomic_helper_check_modeset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x1f2ea7e5 drm_kms_helper_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x277af312 drm_dp_mst_topology_mgr_suspend +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x28435623 drm_helper_encoder_in_use +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x28cb4e7b drm_atomic_helper_update_legacy_modeset_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2f8d6c80 drm_atomic_helper_connector_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x345569e8 drm_helper_probe_single_connector_modes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x34871adf drm_dp_channel_eq_ok +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x35a3442c drm_plane_helper_disable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3ee7b5ee drm_helper_crtc_mode_set +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3fde0e8e drm_atomic_helper_prepare_planes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3fe9e5c5 drm_dp_find_vcpi_slots +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4acc0e92 drm_fb_helper_debug_enter +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4bbc15f2 __drm_atomic_helper_connector_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4e45a98c drm_fb_helper_set_par +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x517ff91d drm_atomic_helper_commit_planes_on_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x590e4def drm_dp_mst_topology_mgr_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5a556a3b drm_dp_mst_reset_vcpi_slots +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5b50231b drm_helper_crtc_mode_set_base +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5baefa58 drm_atomic_helper_set_config +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5bd8a916 drm_kms_helper_poll_enable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5fa4e1ca drm_atomic_helper_page_flip +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x606db96c drm_dp_aux_unregister +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6403aa9f drm_helper_crtc_in_use +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6701c595 drm_primary_helper_disable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x67c23e2b drm_fb_helper_blank +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x68b84383 drm_atomic_helper_crtc_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6f99b5cd drm_dp_dpcd_write +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x706b61e4 drm_primary_helper_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x70d21648 drm_kms_helper_poll_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x711a004a drm_dp_link_rate_to_bw_code +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x78d4fd27 drm_dp_link_power_down +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7a03a7d2 drm_dp_mst_topology_mgr_resume +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7a415138 drm_helper_resume_force_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7a80e8f8 drm_helper_hpd_irq_event +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7f9603ad drm_dp_aux_register +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x81ee6163 drm_atomic_helper_plane_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x82e1bb25 drm_kms_helper_poll_fini +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x84e924ba drm_dp_get_adjust_request_pre_emphasis +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x87cdd9c5 drm_dp_mst_allocate_vcpi +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x88ebdb1a drm_atomic_helper_plane_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8f2c71a4 drm_dp_mst_deallocate_vcpi +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x908f2a97 drm_dp_mst_get_edid +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x93cbc1f8 drm_dp_link_configure +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x957f3778 drm_dp_mst_topology_mgr_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x95d1404c __drm_atomic_helper_crtc_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9e4f2d41 drm_helper_move_panel_connectors_to_head +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa00737c4 __drm_atomic_helper_plane_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa152352c drm_helper_connector_dpms +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa47826e4 drm_dp_calc_pbn_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa740a1d4 drm_primary_helper_funcs +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa77858bb drm_dp_get_adjust_request_voltage +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa8d6809d drm_dp_bw_code_to_link_rate +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa91eaf2e drm_fb_helper_setcmap +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xaa4e04a1 drm_dp_link_probe +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xac813491 drm_atomic_helper_connector_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xacf37fd6 drm_kms_helper_poll_disable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xad0ed381 drm_atomic_helper_commit_planes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xad459d48 drm_atomic_helper_update_plane +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb001ea41 drm_atomic_helper_check +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb09164ff drm_fb_helper_debug_leave +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb0f10702 drm_atomic_helper_connector_dpms +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb3921360 __drm_atomic_helper_connector_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb4340538 drm_atomic_helper_swap_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb72ea059 drm_atomic_helper_plane_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb87789df drm_atomic_helper_commit_modeset_disables +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb9096fa4 drm_dp_update_payload_part1 +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xba329f09 drm_atomic_helper_plane_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xbc0d8040 drm_helper_probe_single_connector_modes_nomerge +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xbe8afeb3 drm_dp_mst_detect_port +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc288fd8c drm_atomic_helper_check_planes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc31515de drm_crtc_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc442cb4b drm_atomic_helper_wait_for_vblanks +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc67c6f94 drm_fb_helper_remove_one_connector +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc725c950 drm_dp_mst_hpd_irq +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc9072d0c drm_fb_helper_check_var +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc9dff338 drm_crtc_helper_set_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xca2773e7 drm_atomic_helper_connector_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xcd80e87e drm_fb_helper_restore_fbdev_mode_unlocked +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xcfd84c6a drm_dp_update_payload_part2 +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xcfe42fc0 drm_atomic_helper_commit +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd049e7c1 drm_fb_helper_initial_config +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd238a889 drm_fb_helper_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd883b2d0 drm_fb_helper_fill_var +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xdf1d629f drm_fb_helper_fill_fix +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe0046493 drm_atomic_helper_connector_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe27f193f drm_atomic_helper_crtc_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe2fdb0ab __drm_atomic_helper_crtc_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe3be434a drm_primary_helper_update +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe3eb87d3 drm_fb_helper_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe40cc969 drm_crtc_helper_set_config +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe5660e3f drm_dp_check_act_status +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe8996b24 drm_dp_dpcd_read +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xec779c0f drm_pick_cmdline_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xedbec807 drm_atomic_helper_disable_plane +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xefd28901 drm_atomic_helper_crtc_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf0b42153 drm_plane_helper_check_update +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf1aef3e0 drm_dp_mst_topology_mgr_set_mst +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf50bc042 drm_fb_helper_fini +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf5dfa024 drm_atomic_helper_commit_modeset_enables +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf6445529 drm_dp_mst_get_vcpi_slots +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xfac1b90f drm_dp_link_power_up +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xfb09101c drm_atomic_helper_cleanup_planes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xfb9344ba drm_plane_helper_update +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xfc45634e __drm_atomic_helper_plane_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xff22bf06 drm_fb_helper_single_add_all_connectors +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x0165bda9 ttm_tt_fini +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x016a8ed4 ttm_mem_global_alloc +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x023ba616 ttm_tt_bind +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x0f3fa76c ttm_object_device_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x1720819f ttm_bo_init_mm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x1729225a ttm_bo_kmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x1b420314 ttm_dma_tt_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x25922527 ttm_bo_clean_mm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x285211b2 ttm_bo_move_accel_cleanup +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x2b54aa9a ttm_object_file_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x3003361a ttm_bo_unref +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x33004fe9 ttm_bo_manager_func +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x3440dcda ttm_bo_wait +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x38f5782e ttm_page_alloc_debugfs +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x485a5bc0 ttm_ref_object_add +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x486e569f ttm_agp_tt_populate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x493690c9 ttm_bo_synccpu_write_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x4b6b538e ttm_eu_backoff_reservation +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x4e8dd264 ttm_bo_global_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x564e1aee ttm_bo_global_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x56791297 ttm_prime_object_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x5a8fdfea ttm_vt_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x5b468f27 ttm_bo_validate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x5c365d33 ttm_mem_io_reserve +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x5c80a21a ttm_mem_io_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x6052860c ttm_round_pot +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x65ab1c36 ttm_bo_synccpu_write_grab +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x7d55da85 ttm_read_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x7fa2bbb8 ttm_bo_swapout_all +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x80d86f0e ttm_object_device_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x834c551f ttm_bo_move_ttm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x84a13931 ttm_write_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x87bb4c0f ttm_eu_reserve_buffers +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x880a15ad ttm_base_object_lookup +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x89a443de ttm_write_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x8d14adbf ttm_io_prot +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x8ecc7a83 ttm_bo_device_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x909f27d4 ttm_mem_global_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x9154513d ttm_bo_acc_size +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x94894449 ttm_base_object_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x976c186c ttm_bo_device_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x998e45c0 ttm_ref_object_base_unref +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x9a20ca0e ttm_bo_create +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x9c7c6810 ttm_fbdev_mmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xa2a129fd ttm_suspend_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xa31093bf ttm_eu_fence_buffer_objects +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xa73de2a9 ttm_vt_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xa931dda1 ttm_bo_dma_acc_size +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xa9a7f5d9 ttm_bo_mem_put +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xaa4de51e ttm_bo_kunmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xad244d74 ttm_bo_evict_mm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xaf2b6a4a ttm_bo_move_memcpy +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xb05d3515 ttm_mem_global_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xb83c6470 ttm_lock_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xbe206609 ttm_agp_tt_create +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xbfe70089 ttm_pool_populate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xc26a6e98 ttm_tt_set_placement_caching +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xc5f0c2da ttm_read_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xc64fc669 ttm_dma_tt_fini +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xc6b12a8f ttm_tt_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xc996b8f0 ttm_agp_tt_unpopulate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xcb20b378 ttm_bo_unmap_virtual +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xccaa0e70 ttm_pool_unpopulate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xce6e43a8 ttm_base_object_lookup_for_ref +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xcf67c299 ttm_ref_object_exists +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xd1afbee4 ttm_mem_global_free +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xd5d96b81 ttm_bo_del_sub_from_lru +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xd708961c ttm_bo_unlock_delayed_workqueue +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xd77cff73 ttm_mem_io_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xd7f51742 ttm_suspend_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xd8edb115 ttm_base_object_unref +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xe0fcf05a ttm_bo_add_to_lru +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xf56c3fae ttm_bo_lock_delayed_workqueue +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xf905e0fa ttm_bo_mem_space +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xfa673e42 ttm_bo_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xfbc2c5ec ttm_object_file_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xfc0eca9f ttm_mem_io_free +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xfe1efc46 ttm_bo_mmap +EXPORT_SYMBOL drivers/hwmon/hwmon-vid 0x0903c239 vid_from_reg +EXPORT_SYMBOL drivers/hwmon/hwmon-vid 0xef1c781c vid_which_vrm +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-bit 0x4fffef55 i2c_bit_algo +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-bit 0x8e16dab6 i2c_bit_add_bus +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-bit 0xe3b9acad i2c_bit_add_numbered_bus +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-pca 0x484914b0 i2c_pca_add_numbered_bus +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-pca 0xef3b9644 i2c_pca_add_bus +EXPORT_SYMBOL drivers/i2c/busses/i2c-amd756 0x0af0d9f3 amd756_smbus +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x0cebb55d mma9551_read_config_byte +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x124ffff3 mma9551_read_version +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x1f404b39 mma9551_write_config_word +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x24398f91 mma9551_set_power_state +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x259e39c7 mma9551_read_status_word +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x41ef446c mma9551_read_accel_scale +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x4b923d9e mma9551_read_config_word +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x52473220 mma9551_app_reset +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x59ddf949 mma9551_read_config_words +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x60b25816 mma9551_read_accel_chan +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x6bb35f81 mma9551_write_config_words +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x6be90bca mma9551_read_status_byte +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x6c9107fa mma9551_update_config_bits +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x7ca80a44 mma9551_write_config_byte +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x8f435f24 mma9551_read_status_words +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x9f361c92 mma9551_set_device_state +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xbcd7fe96 mma9551_sleep +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xdf425e65 mma9551_gpio_config +EXPORT_SYMBOL drivers/iio/accel/st_accel 0x220da37a st_accel_common_remove +EXPORT_SYMBOL drivers/iio/accel/st_accel 0xe3dae4ea st_accel_common_probe +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x08c84701 hid_sensor_read_samp_freq_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x1f2a3ef7 hid_sensor_parse_common_attributes +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x4064f20e hid_sensor_write_raw_hyst_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x641f6ae9 hid_sensor_write_samp_freq_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0xc83a92bf hid_sensor_format_scale +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0xfabb442e hid_sensor_read_poll_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0xfaf388d3 hid_sensor_read_raw_hyst_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-trigger 0x4befbe3f hid_sensor_setup_trigger +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-trigger 0x73f05d28 hid_sensor_power_state +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-trigger 0x8304ba77 hid_sensor_pm_ops +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-trigger 0xedb06ac5 hid_sensor_remove_trigger +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0x17d65f88 ssp_get_sensor_delay +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0xb6fc124f ssp_register_consumer +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0xbc5d1693 ssp_change_delay +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0xbd589d84 ssp_enable_sensor +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0xe0df1866 ssp_disable_sensor +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/ssp_iio 0x1f103b14 ssp_common_buffer_postdisable +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/ssp_iio 0x7c0f4af6 ssp_common_buffer_postenable +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/ssp_iio 0xef0b9c88 ssp_common_process_data +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x05e2b62b st_sensors_set_enable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x074d7047 st_sensors_trigger_handler +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x10a8ba95 st_sensors_power_enable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x2b30e226 st_sensors_set_dataready_irq +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x443a4983 st_sensors_set_fullscale_by_gain +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x4aad2408 st_sensors_read_info_raw +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x700d2f19 st_sensors_set_odr +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x82da08e0 st_sensors_power_disable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x9097df1c st_sensors_get_buffer_element +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xa17a7781 st_sensors_deallocate_trigger +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xa9c440f8 st_sensors_set_axis_enable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xb5cde3d7 st_sensors_init_sensor +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xc78cd332 st_sensors_sysfs_sampling_frequency_avail +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xd1d40db5 st_sensors_check_device_support +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xd4b2ba9f st_sensors_sysfs_scale_avail +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xf477d5a5 st_sensors_allocate_trigger +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors_i2c 0x5f9eb8ca st_sensors_i2c_configure +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors_i2c 0xc29e3c7c st_sensors_of_i2c_probe +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors_spi 0xb215556f st_sensors_spi_configure +EXPORT_SYMBOL drivers/iio/gyro/st_gyro 0x91795b56 st_gyro_common_remove +EXPORT_SYMBOL drivers/iio/gyro/st_gyro 0xc089bd5a st_gyro_common_probe +EXPORT_SYMBOL drivers/iio/imu/adis_lib 0x2281a690 adis_debugfs_reg_access +EXPORT_SYMBOL drivers/iio/imu/adis_lib 0xe711326e adis_enable_irq +EXPORT_SYMBOL drivers/iio/industrialio 0x01ddb3fa iio_push_event +EXPORT_SYMBOL drivers/iio/industrialio 0x047b4fe1 iio_read_const_attr +EXPORT_SYMBOL drivers/iio/industrialio 0x2d6bcdcb iio_trigger_generic_data_rdy_poll +EXPORT_SYMBOL drivers/iio/industrialio 0x31b63e78 iio_trigger_poll_chained +EXPORT_SYMBOL drivers/iio/industrialio 0x37e8d84b iio_device_free +EXPORT_SYMBOL drivers/iio/industrialio 0x3be3d347 iio_device_unregister +EXPORT_SYMBOL drivers/iio/industrialio 0x525a3c52 iio_trigger_register +EXPORT_SYMBOL drivers/iio/industrialio 0x580da6e6 iio_trigger_poll +EXPORT_SYMBOL drivers/iio/industrialio 0x821aa194 iio_buffer_init +EXPORT_SYMBOL drivers/iio/industrialio 0x8c54dce4 iio_triggered_buffer_predisable +EXPORT_SYMBOL drivers/iio/industrialio 0x8f76a832 iio_triggered_buffer_postenable +EXPORT_SYMBOL drivers/iio/industrialio 0xc07fcbfd iio_device_alloc +EXPORT_SYMBOL drivers/iio/industrialio 0xcfbfb4cc iio_trigger_unregister +EXPORT_SYMBOL drivers/iio/industrialio 0xd53f95e7 iio_trigger_free +EXPORT_SYMBOL drivers/iio/industrialio 0xdedf8bdf iio_bus_type +EXPORT_SYMBOL drivers/iio/industrialio 0xdf76bbeb iio_pollfunc_store_time +EXPORT_SYMBOL drivers/iio/industrialio 0xe5fbdced iio_trigger_alloc +EXPORT_SYMBOL drivers/iio/industrialio 0xea57acb6 iio_device_register +EXPORT_SYMBOL drivers/iio/industrialio 0xf932f5b4 iio_trigger_notify_done +EXPORT_SYMBOL drivers/iio/industrialio-triggered-buffer 0x0d94a80f iio_triggered_buffer_cleanup +EXPORT_SYMBOL drivers/iio/industrialio-triggered-buffer 0x2cb1ce2b iio_triggered_buffer_setup +EXPORT_SYMBOL drivers/iio/kfifo_buf 0x20e0e7cc devm_iio_kfifo_free +EXPORT_SYMBOL drivers/iio/kfifo_buf 0x34490e34 iio_kfifo_allocate +EXPORT_SYMBOL drivers/iio/kfifo_buf 0x6c538ff6 devm_iio_kfifo_allocate +EXPORT_SYMBOL drivers/iio/kfifo_buf 0xdf985d10 iio_kfifo_free +EXPORT_SYMBOL drivers/iio/magnetometer/st_magn 0x14e964d1 st_magn_common_remove +EXPORT_SYMBOL drivers/iio/magnetometer/st_magn 0x3586e208 st_magn_common_probe +EXPORT_SYMBOL drivers/iio/pressure/ms5611_core 0x2f3cc5be ms5611_probe +EXPORT_SYMBOL drivers/iio/pressure/st_pressure 0x230e2b92 st_press_common_probe +EXPORT_SYMBOL drivers/iio/pressure/st_pressure 0x7c138ebb st_press_common_remove +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x049ace30 rdma_addr_find_smac_by_sgid +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x04b8b6d7 rdma_translate_ip +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x1c3c0ad3 rdma_addr_size +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x1ea5767b rdma_addr_register_client +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x273f4cca rdma_addr_cancel +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x32a8402c rdma_addr_unregister_client +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x59252c9d rdma_resolve_ip +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0xde8e719e rdma_copy_addr +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0xf029eb25 rdma_addr_find_dmac_by_grh +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x0d472bb0 cm_class +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x14db840f ib_send_cm_drep +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x1ece0b18 ib_cm_notify +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x3dfdaade ib_cm_listen +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x455339ef ib_send_cm_rej +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x4dc6b107 ib_send_cm_sidr_req +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x5210e64b ib_send_cm_sidr_rep +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x707d1d83 ib_send_cm_req +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x7393919e ib_send_cm_dreq +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x793bc751 ib_send_cm_mra +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x8ded023b ib_destroy_cm_id +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x9d3c7fb2 ib_create_cm_id +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x9ec93a6a ib_send_cm_apr +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xab55f127 ib_send_cm_rtu +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xc5fb4fc0 ib_send_cm_lap +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xd90924b5 ib_send_cm_rep +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xf4a59573 ib_cm_init_qp_attr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x01286d0e ib_set_client_data +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0301c28e ib_query_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0768fd64 ib_dealloc_xrcd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x08460d25 ibnl_put_msg +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0c1b9ac1 ib_ud_header_unpack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x16160b5e ib_destroy_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x178f6abb ib_dereg_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1857ae07 ib_find_cached_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1e491a04 ib_unmap_fmr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1eef2e1c ib_close_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x22f3cf93 ib_pack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x253b0311 ib_destroy_flow +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2761f57e ib_destroy_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2d34e089 ibnl_put_attr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2ed6e386 ib_ud_header_pack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x3643b5e3 ib_reg_phys_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x38001c0e ib_free_fast_reg_page_list +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x3e0b2d24 ib_create_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x3f38535a ib_find_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x43722c6f ib_alloc_fast_reg_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x472499c5 ib_create_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x496c6914 ib_unregister_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x4e5a359c ib_resize_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x4f616883 ib_alloc_fast_reg_page_list +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x4fa2f25e ib_create_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x50dbc447 ib_flush_fmr_pool +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x51017c45 ib_register_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x530e7770 ib_alloc_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x533379e6 ib_alloc_fmr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x554d103e ib_query_port +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5611cdea rdma_node_get_transport +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5e21b2e9 ib_alloc_xrcd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x62434e32 ib_init_ah_from_wc +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x641881f1 ib_modify_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x64284089 ib_query_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x65694de8 ib_find_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6834ba8a ib_query_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x69945984 ib_dealloc_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6a121d14 ib_get_cached_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6a351e17 ibnl_unicast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6c2cd867 ib_create_fmr_pool +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6cf22f02 ib_modify_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6e030e26 ib_modify_qp_is_ok +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7203241d ib_query_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x752ef93b ib_destroy_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7561f413 ib_check_mr_status +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x75a20091 ib_query_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x78675cf1 ib_umem_odp_map_dma_pages +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7ba8e352 rdma_port_get_link_layer +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7e81d284 ib_umem_release +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x80a453c0 ibnl_add_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x8296942f ib_destroy_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x8873fcfb ib_fmr_pool_map_phys +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x8b1a0b5b ib_resolve_eth_l2_attrs +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x8e3028c4 ib_umem_odp_unmap_dma_pages +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x8f5359d7 ib_attach_mcast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x92677d32 ib_alloc_mw +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x9476459d ib_create_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x949c5acc ib_destroy_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x94de8972 ibnl_multicast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x96f5e6bc ib_umem_get +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x982a3a40 ib_fmr_pool_unmap +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x9ad2907f ib_umem_copy_from +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa203b101 ib_umem_page_count +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa432baf6 ib_unpack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa51cbaf3 ib_get_dma_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xaa73234a ib_dealloc_fmr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xab0a3467 mult_to_ib_rate +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb1c99537 ib_query_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb926d96e ib_modify_port +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb93a52b0 ib_rate_to_mbps +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xbadd8259 ib_rate_to_mult +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xbc159506 ib_alloc_pd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xbc2656d1 ib_dealloc_mw +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc1792461 ib_modify_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc2622016 ib_open_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc2671485 ib_create_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc32b59ff ib_destroy_fmr_pool +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc67f14a5 ibnl_remove_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc7031a71 ib_find_cached_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xcfa2a09f ib_event_msg +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd07b8322 ib_query_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd13fd3e8 ib_register_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd83c94fb ib_get_cached_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xdb1ef51d ib_register_event_handler +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xdb9fc11a ib_rereg_phys_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xdbb1710c ib_modify_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe0c62138 ib_unregister_event_handler +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe31a5790 ib_get_cached_lmc +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe3f53b66 ib_find_exact_cached_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe4aeedb3 ib_modify_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe5840ec6 ib_wc_status_msg +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xef3ec2db ib_create_ah_from_wc +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf11ad724 ib_dispatch_event +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf560bb78 ib_dealloc_pd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf8be5e99 ib_detach_mcast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xfb38029d ib_create_flow +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xfc150956 ib_ud_header_init +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xfc40e51a ib_get_client_data +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xfef242b3 ib_unregister_device +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x2b7d9ed7 ib_modify_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x2f0ea69e ib_response_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x3081f0cb ib_cancel_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x374a1474 ib_unregister_mad_agent +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x38a5a874 ib_create_send_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x3edba91e ib_process_mad_wc +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x6dadf071 ib_free_recv_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x6f077fcf ib_get_mad_data_offset +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x7b5d4b7a ib_is_mad_class_rmpp +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x95d220be ib_register_mad_agent +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x9c777dbb ib_register_mad_snoop +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x9eb1426f ib_post_send_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xa9baf52d ib_get_rmpp_segment +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xc4fa5aa9 ib_mad_kernel_rmpp_agent +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xd0d9842b ib_free_send_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xe48e2083 ib_redirect_mad_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x0a2b6d80 ib_sa_service_rec_query +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x2255ba27 ib_init_ah_from_mcmember +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x22f07253 ib_sa_unpack_path +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x448993f7 ib_sa_join_multicast +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x5328d7a6 ib_sa_register_client +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x576fdbac ib_sa_free_multicast +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x92abda5e ib_init_ah_from_path +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x9a1cd50d ib_sa_unregister_client +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xccc50520 ib_sa_guid_info_rec_query +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xda0d50ec ib_sa_cancel_query +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xddc330e7 ib_sa_pack_path +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xe09e3d97 ib_sa_path_rec_get +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xf60d8964 ib_sa_get_mcmember_rec +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x2569d757 ib_copy_path_rec_to_user +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x52a6ce77 ib_copy_ah_attr_to_user +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x7971c00e ib_copy_qp_attr_to_user +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0xe350f2aa ib_copy_path_rec_from_user +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x08cdd462 iw_cm_listen +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x0ff9f042 iwpm_remove_mapinfo +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x1d489db5 iwpm_add_mapping_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x252755cf iw_cm_init_qp_attr +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x3d5fdf59 iw_cm_disconnect +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x43061878 iwpm_add_and_query_mapping_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x44ca0d42 iwpm_remote_info_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x47564b37 iw_cm_connect +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x50111224 iwpm_register_pid_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x5da59312 iwpm_register_pid +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x6968573d iwpm_add_mapping +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x6a1d1dfd iwpm_mapping_error_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x6c74c344 iwpm_get_remote_info +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x904609a0 iwpm_remove_mapping +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x91a914d6 iwpm_init +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x9327be67 iwpm_exit +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x99edf901 iwpm_valid_pid +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xbd91941a iw_create_cm_id +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xbf601f5b iw_cm_accept +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xc013cd52 iw_cm_reject +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xca65de64 iw_destroy_cm_id +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xd2017b26 iwpm_mapping_info_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xd447b24a iwpm_create_mapinfo +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xe647526d iwpm_ack_mapping_info_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xf380aa0f iwpm_add_and_query_mapping +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x1d6103ca rdma_notify +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x257a492b rdma_join_multicast +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x29c2d42c rdma_create_qp +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x2bd1d178 rdma_destroy_qp +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x4465ab8b rdma_init_qp_attr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x4a80d85c rdma_create_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x528a5db2 rdma_bind_addr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x78472fc1 rdma_set_reuseaddr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x793456f1 rdma_resolve_route +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x7f900496 rdma_set_ib_paths +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x8693b7eb rdma_resolve_addr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x907df803 rdma_event_msg +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xa1460387 rdma_get_service_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xa274d07f rdma_leave_multicast +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xaa8b1fc1 rdma_reject +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xab2fa47f rdma_listen +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xb55a3e14 rdma_set_afonly +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xb76d81b0 rdma_connect +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xd6b85f6f rdma_set_service_type +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xd7cbea5f rdma_accept +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xdc3e7ab0 rdma_disconnect +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xef03749b rdma_destroy_id +EXPORT_SYMBOL drivers/input/gameport/gameport 0x05805637 gameport_start_polling +EXPORT_SYMBOL drivers/input/gameport/gameport 0x248f39d6 gameport_close +EXPORT_SYMBOL drivers/input/gameport/gameport 0x5a28a068 gameport_set_phys +EXPORT_SYMBOL drivers/input/gameport/gameport 0x861fe7e0 gameport_unregister_driver +EXPORT_SYMBOL drivers/input/gameport/gameport 0x86283f4b __gameport_register_driver +EXPORT_SYMBOL drivers/input/gameport/gameport 0x9ade7bdf __gameport_register_port +EXPORT_SYMBOL drivers/input/gameport/gameport 0xb1898426 gameport_unregister_port +EXPORT_SYMBOL drivers/input/gameport/gameport 0xf0b7d1ac gameport_open +EXPORT_SYMBOL drivers/input/gameport/gameport 0xf999c54e gameport_stop_polling +EXPORT_SYMBOL drivers/input/input-polldev 0x2d48fd95 input_unregister_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0x2ecb00b1 input_register_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0xb33e6290 input_allocate_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0xd35abbde devm_input_allocate_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0xef219c27 input_free_polled_device +EXPORT_SYMBOL drivers/input/matrix-keymap 0x1fd38db8 matrix_keypad_build_keymap +EXPORT_SYMBOL drivers/input/misc/ad714x 0x032f6e3a ad714x_probe +EXPORT_SYMBOL drivers/input/misc/ad714x 0x73b538fc ad714x_enable +EXPORT_SYMBOL drivers/input/misc/ad714x 0x76c88888 ad714x_disable +EXPORT_SYMBOL drivers/input/misc/ad714x 0x789954c5 ad714x_remove +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 0xb7fc8697 cma3000_init +EXPORT_SYMBOL drivers/input/misc/cma3000_d0x 0xca3f100a cma3000_suspend +EXPORT_SYMBOL drivers/input/sparse-keymap 0x0b705e15 sparse_keymap_entry_from_scancode +EXPORT_SYMBOL drivers/input/sparse-keymap 0x3e510fbc sparse_keymap_free +EXPORT_SYMBOL drivers/input/sparse-keymap 0x8b92430b sparse_keymap_report_event +EXPORT_SYMBOL drivers/input/sparse-keymap 0xa4a1e9bf sparse_keymap_report_entry +EXPORT_SYMBOL drivers/input/sparse-keymap 0xbdb95402 sparse_keymap_entry_from_keycode +EXPORT_SYMBOL drivers/input/sparse-keymap 0xe2a8a97e sparse_keymap_setup +EXPORT_SYMBOL drivers/input/touchscreen/ad7879 0x97f83edf ad7879_remove +EXPORT_SYMBOL drivers/input/touchscreen/ad7879 0xd7b39d4d ad7879_probe +EXPORT_SYMBOL drivers/input/touchscreen/ad7879 0xddb5ce46 ad7879_pm_ops +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x04403fcf unregister_capi_driver +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x09816e35 capi_ctr_down +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x14f2aa5a capi20_get_version +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x2b8eab1f capilib_free_ncci +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x2baa6586 capilib_new_ncci +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x31c24aa4 capi20_isinstalled +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x46140539 detach_capi_ctr +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x48e2f06c capi20_put_message +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x50b33ca4 capi_cmsg2message +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x6057c6f3 capi_message2cmsg +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x62e32d43 capilib_data_b3_conf +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x639e462c capi20_register +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x6f1cd488 capi_ctr_resume_output +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x71e8d5ba capilib_data_b3_req +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x7292ab34 cdebbuf_free +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x72a25a72 capi_cmsg2str +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x7a33596c capi20_get_serial +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x7e6f1307 capi20_get_manufacturer +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x8623a3ce capi_ctr_handle_message +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x8e8dfa79 capi20_release +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x8f699913 capilib_release +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x9f823278 register_capi_driver +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xa0e6bda0 attach_capi_ctr +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xaa165d27 capilib_release_appl +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xb19fda8d capi_cmd2str +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xb60e5e5f capi_cmsg_header +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xbce2ed8a capi_ctr_ready +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xc42d9ec1 capi20_manufacturer +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xe19a11ac capi20_get_profile +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xfd552f7a capi_message2str +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xffa11aac capi_ctr_suspend_output +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x0488ed5e b1_parse_version +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x0f2529b9 avmcard_dma_free +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x25948a57 b1_load_firmware +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x2926f4b0 b1ctl_proc_fops +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x53f8644a b1_register_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x64490bfc b1_alloc_card +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x71f819da b1_release_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x85f09690 b1_irq_table +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x91851ff4 b1_load_config +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x969edd12 b1_loaded +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x9a55ae44 b1_send_message +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x9f165289 avmcard_dma_alloc +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xc7025a9e b1_load_t4file +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xdfd28376 b1_detect +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xeba9b232 b1_free_card +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xfa10fee4 b1_interrupt +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xfcaf5a5c b1_reset_ctr +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xff7ed957 b1_getrevision +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x2600f359 t1pci_detect +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x664c2cfb b1dma_reset +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x6c5d2624 b1dma_load_firmware +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x713e28f8 b1dma_register_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x99db6fcd b1dma_release_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xb02daed9 b1dma_reset_ctr +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xd6f9f1ea b1dma_interrupt +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xef81ece2 b1dmactl_proc_fops +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xf482e8df b1dma_send_message +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xfdf22923 b1pciv4_detect +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1pcmcia 0x29562993 b1pcmcia_delcard +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1pcmcia 0xaec3240e b1pcmcia_addcard_m1 +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1pcmcia 0xea620116 b1pcmcia_addcard_m2 +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1pcmcia 0xf14bf8b1 b1pcmcia_addcard_b1 +EXPORT_SYMBOL drivers/isdn/hardware/eicon/divadidd 0x2974ead1 DIVA_DIDD_Read +EXPORT_SYMBOL drivers/isdn/hardware/eicon/divadidd 0x7ab59853 proc_net_eicon +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0x1d79148d mISDNisac_irq +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0x63364a31 mISDNisac_init +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0xa03e5ffe mISDNipac_irq +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0xa993b25e mISDNipac_init +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNisar 0x0ca5754b mISDNisar_init +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNisar 0x8686c361 mISDNisar_irq +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x07f4f2ce hisax_unregister +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x148f0c99 FsmFree +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x698f1a6d hisax_init_pcmcia +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x6fe1ca04 FsmDelTimer +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x93a64734 FsmChangeState +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x9df0cd27 FsmEvent +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x9f987c85 FsmRestartTimer +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0xa1bc94b9 FsmInitTimer +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0xee93522c hisax_register +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0xf0a16657 FsmNew +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0xfc27303b HiSax_closecard +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x09f2750f isac_irq +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x0fff845a isac_init +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x1cd31309 isacsx_irq +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x3f3b323a isac_d_l2l1 +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x793495c7 isac_setup +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x8bbfe30d isacsx_setup +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0x80b964b6 isdn_ppp_register_compressor +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0x8cefc821 register_isdn +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0xf0fb4822 isdn_ppp_unregister_compressor +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0xfa06820f isdn_register_divert +EXPORT_SYMBOL drivers/isdn/i4l/isdnhdlc 0x3b71e4fc isdnhdlc_decode +EXPORT_SYMBOL drivers/isdn/i4l/isdnhdlc 0x59cc8a7e isdnhdlc_out_init +EXPORT_SYMBOL drivers/isdn/i4l/isdnhdlc 0x8ee38862 isdnhdlc_rcv_init +EXPORT_SYMBOL drivers/isdn/i4l/isdnhdlc 0xfd9d4c09 isdnhdlc_encode +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x02364220 get_next_bframe +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x06fcebef mISDN_FsmDelTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x186ce091 mISDN_unregister_Bprotocol +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x1b0efc0b bchannel_get_rxbuf +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x1cf196fb mISDN_FsmAddTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x1e51436a queue_ch_frame +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x2348cc3c mISDN_FsmFree +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x2518c37a create_l1 +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x28ae3dbf mISDN_initbchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x28e61e64 mISDN_ctrl_bchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x29fa5b43 mISDN_FsmRestartTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x36ec1940 mISDN_FsmInitTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x4270319c mISDN_register_Bprotocol +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x47e15f9d mISDNDevName4ch +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x48af6d8d recv_Bchannel_skb +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x4a720ebc bchannel_senddata +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x4c35526e 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 0x5bd71815 get_next_dframe +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x5d245a8e recv_Dchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x85bcf537 mISDN_initdchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x8a4e99fb mISDN_clock_update +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xaab37b2d mISDN_freebchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xac209bd4 mISDN_freedchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xad50f481 mISDN_unregister_device +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xba2481b3 dchannel_senddata +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xc3401729 mISDN_register_clock +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xd1468dc5 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 0xe8f617eb mISDN_unregister_clock +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xf5218100 recv_Bchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xf62b078f recv_Dchannel_skb +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xf9e7832f mISDN_FsmNew +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xfac2be58 mISDN_register_device +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_dsp 0x01087af0 mISDN_dsp_element_unregister +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_dsp 0x60721da7 dsp_audio_law_to_s32 +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_dsp 0xa215f1b2 dsp_audio_s16_to_law +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_dsp 0xb98308d8 mISDN_dsp_element_register +EXPORT_SYMBOL drivers/md/bcache/bcache 0x1d89bd11 bch_btree_sort_partial +EXPORT_SYMBOL drivers/md/bcache/bcache 0x1f529ce8 bch_bset_build_written_tree +EXPORT_SYMBOL drivers/md/bcache/bcache 0x26481f26 bch_btree_sort_lazy +EXPORT_SYMBOL drivers/md/bcache/bcache 0x3c07f669 closure_sub +EXPORT_SYMBOL drivers/md/bcache/bcache 0x440b4830 bch_btree_iter_next +EXPORT_SYMBOL drivers/md/bcache/bcache 0x44a37d62 bch_btree_iter_init +EXPORT_SYMBOL drivers/md/bcache/bcache 0x53c73969 closure_put +EXPORT_SYMBOL drivers/md/bcache/bcache 0x5b59b856 bch_btree_insert_key +EXPORT_SYMBOL drivers/md/bcache/bcache 0x73fd989a closure_sync +EXPORT_SYMBOL drivers/md/bcache/bcache 0x7daccb73 bch_btree_keys_alloc +EXPORT_SYMBOL drivers/md/bcache/bcache 0x8833b0e8 bch_btree_keys_free +EXPORT_SYMBOL drivers/md/bcache/bcache 0x97612435 closure_wait +EXPORT_SYMBOL drivers/md/bcache/bcache 0xa3c5c702 bch_bset_fix_invalidated_key +EXPORT_SYMBOL drivers/md/bcache/bcache 0xca5df778 __bch_bset_search +EXPORT_SYMBOL drivers/md/bcache/bcache 0xce47a6d9 bch_btree_keys_init +EXPORT_SYMBOL drivers/md/bcache/bcache 0xd2813054 bch_bset_insert +EXPORT_SYMBOL drivers/md/bcache/bcache 0xdf892351 bch_bkey_try_merge +EXPORT_SYMBOL drivers/md/bcache/bcache 0xe3c17af1 __closure_wake_up +EXPORT_SYMBOL drivers/md/bcache/bcache 0xe67c2d16 bch_bset_sort_state_init +EXPORT_SYMBOL drivers/md/bcache/bcache 0xec6f33d0 bch_bset_init_next +EXPORT_SYMBOL drivers/md/dm-bufio 0x268682d2 dm_bufio_forget +EXPORT_SYMBOL drivers/md/dm-bufio 0x72f07bf4 dm_bufio_set_minimum_buffers +EXPORT_SYMBOL drivers/md/dm-log 0x45870628 dm_dirty_log_destroy +EXPORT_SYMBOL drivers/md/dm-log 0x46e57c68 dm_dirty_log_type_unregister +EXPORT_SYMBOL drivers/md/dm-log 0x47b12fd5 dm_dirty_log_create +EXPORT_SYMBOL drivers/md/dm-log 0xf731cdca dm_dirty_log_type_register +EXPORT_SYMBOL drivers/md/dm-snapshot 0x23ff3e1d dm_snap_origin +EXPORT_SYMBOL drivers/md/dm-snapshot 0x4da4e600 dm_exception_store_type_unregister +EXPORT_SYMBOL drivers/md/dm-snapshot 0xc162e49a dm_exception_store_create +EXPORT_SYMBOL drivers/md/dm-snapshot 0xcceebeee dm_exception_store_destroy +EXPORT_SYMBOL drivers/md/dm-snapshot 0xd2c117a8 dm_exception_store_type_register +EXPORT_SYMBOL drivers/md/dm-snapshot 0xfc6446bf dm_snap_cow +EXPORT_SYMBOL drivers/md/raid456 0xba297d96 raid5_set_cache_size +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x2057ae7d flexcop_sram_ctrl +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x2279fc08 flexcop_device_exit +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x25c0efec flexcop_device_kmalloc +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x7641cea5 flexcop_dump_reg +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x829a139f flexcop_wan_set_speed +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xa244fbbd flexcop_pid_feed_control +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xa8f9d3c3 flexcop_i2c_request +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xac87e04a flexcop_sram_set_dest +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xbe722f2b flexcop_pass_dmx_data +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xc60fa897 flexcop_pass_dmx_packets +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xc8301565 flexcop_device_initialize +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xd9e7cf0f flexcop_device_kfree +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xec96be41 flexcop_eeprom_check_mac_addr +EXPORT_SYMBOL drivers/media/common/cx2341x 0x1ca0c084 cx2341x_log_status +EXPORT_SYMBOL drivers/media/common/cx2341x 0x2f25eee2 cx2341x_update +EXPORT_SYMBOL drivers/media/common/cx2341x 0x30cb4cd7 cx2341x_ext_ctrls +EXPORT_SYMBOL drivers/media/common/cx2341x 0x3ca16d58 cx2341x_handler_init +EXPORT_SYMBOL drivers/media/common/cx2341x 0x3db8be82 cx2341x_ctrl_query +EXPORT_SYMBOL drivers/media/common/cx2341x 0x88059b01 cx2341x_handler_set_busy +EXPORT_SYMBOL drivers/media/common/cx2341x 0xbbc0ac9a cx2341x_handler_setup +EXPORT_SYMBOL drivers/media/common/cx2341x 0xc184ec1e cx2341x_ctrl_get_menu +EXPORT_SYMBOL drivers/media/common/cx2341x 0xcf76ce95 cx2341x_fill_defaults +EXPORT_SYMBOL drivers/media/common/cx2341x 0xcf8b77a4 cx2341x_mpeg_ctrls +EXPORT_SYMBOL drivers/media/common/cx2341x 0xe67a6734 cx2341x_handler_set_50hz +EXPORT_SYMBOL drivers/media/common/cypress_firmware 0x22d20117 cypress_load_firmware +EXPORT_SYMBOL drivers/media/common/tveeprom 0x2a991d0f tveeprom_read +EXPORT_SYMBOL drivers/media/common/tveeprom 0xb119afec tveeprom_hauppauge_analog +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x06f86fea dvb_dmx_swfilter_204 +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x0e22988d dvb_net_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x1162a984 dvb_register_frontend +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x16ad7902 dvb_ca_en50221_frda_irq +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x1b3af03c dvb_dmxdev_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x32706276 dvb_ringbuffer_read +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x3a6b8e6a dvb_unregister_device +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x4aff6851 dvb_frontend_detach +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x4e407569 dvb_generic_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x5af5f813 dvb_register_device +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x5c0ea535 dvb_ringbuffer_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x69ea3339 dvb_frontend_resume +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x70af1058 dvb_ringbuffer_empty +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x74a5a698 dvb_filter_pes2ts_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x77b17ae9 dvb_dmxdev_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x7869f9cf dvb_generic_open +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x78db694b dvb_ringbuffer_write +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x7d327455 dvb_dmx_swfilter +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x7f4f9b54 dvb_ringbuffer_flush +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x80e3832d dvb_filter_get_ac3info +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x85a5e7d3 dvb_ringbuffer_avail +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x8b80e405 dvb_ca_en50221_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x906ab9fb dvb_frontend_suspend +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x96a00dda dvb_ca_en50221_camready_irq +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x9fb9987b dvb_generic_ioctl +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xa20356a8 dvb_unregister_adapter +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xac4ca1b0 intlog2 +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xb7591160 dvb_register_adapter +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xbc17a1b8 dvb_dmx_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xbd00a81c dvb_ca_en50221_camchange_irq +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xbfe161c5 dvb_unregister_frontend +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xc8b5b3f0 dvb_dmx_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xcb88c99d dvb_dmx_swfilter_raw +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xcf589e8c dvb_ringbuffer_free +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xd8f7184c dvb_ringbuffer_flush_spinlock_wakeup +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xdd513bce dvb_ca_en50221_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xe463fc4f dvb_frontend_reinitialise +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xe5ae8707 intlog10 +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xe5b644e5 dvb_dmx_swfilter_packets +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xf28e7431 dvb_ringbuffer_read_user +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xf821d629 dvb_frontend_sleep_until +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xf826deb0 dvb_filter_pes2ts +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xfae5fd60 dvb_net_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xfbaa7e01 dvb_ringbuffer_write_user +EXPORT_SYMBOL drivers/media/dvb-frontends/a8293 0xddd9b6f3 a8293_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/af9013 0xeaace467 af9013_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/atbm8830 0xa9655c91 atbm8830_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x38da93cb au8522_analog_i2c_gate_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x3d354ef8 au8522_i2c_gate_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x557f6db3 au8522_release_state +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x56b7e8a6 au8522_get_state +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x5e3bee2a au8522_init +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x922adefb au8522_readreg +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x9b639a2b au8522_sleep +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0xdec59e57 au8522_led_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0xf41b3591 au8522_writereg +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_dig 0x112033d9 au8522_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/bcm3510 0xe0866d06 bcm3510_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx22700 0xcd5bdb3c cx22700_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx22702 0x2bc8f8d5 cx22702_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24110 0x02c217e0 cx24110_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24113 0x73f92966 cx24113_agc_callback +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24113 0xa65a1013 cx24113_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24116 0xe5feadbb cx24116_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24120 0x2ba9099c cx24120_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24123 0x0190d71c cx24123_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24123 0xc821b706 cx24123_get_tuner_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/cxd2820r 0x8a228c73 cxd2820r_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0x5f40f142 dib0070_get_rf_output +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0x79b4a8ab dib0070_wbd_offset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0x92387f57 dib0070_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0x9af4d169 dib0070_set_rf_output +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0xb8a2829c dib0070_ctrl_agc_filter +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x1be4c3dc dib0090_set_tune_state +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x58095a25 dib0090_pwm_gain_reset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x5bda461e dib0090_register +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x7372e03a dib0090_set_dc_servo +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x8008c9af dib0090_get_tune_state +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x924141d9 dib0090_set_switch +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xa15d4f4a dib0090_get_wbd_target +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xb7d31599 dib0090_fw_register +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xc8131ccd dib0090_set_vga +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xdada6533 dib0090_update_rframp_7090 +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xdb70f39b dib0090_gain_control +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xdd3f9fb2 dib0090_dcc_freq +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xe64a47bc dib0090_update_tuning_table_7090 +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xf0f7c510 dib0090_get_wbd_offset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xfd86bd06 dib0090_get_current_gain +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mb 0x7ed31243 dib3000mb_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x3bfb0f8a dib3000mc_pid_control +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x48d4fcb0 dib3000mc_pid_parse +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x9bb894a1 dib3000mc_i2c_enumeration +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0xba32674a dib3000mc_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0xda63a650 dib3000mc_set_config +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0xf6812e97 dib3000mc_get_tuner_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0x74dfaf57 dib7000m_get_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0xb9e02409 dib7000m_pid_filter +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0xbbbded8a dib7000m_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0xf750d9b3 dib7000m_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0x26271f6f dib7000p_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x07d0e478 dib8000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0x0bec418e dibx000_get_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0x41f0288f dibx000_init_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0x72d25de8 dibx000_exit_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0x9a835758 dibx000_reset_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0xad3ad91c systime +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0xc796b89a dibx000_i2c_set_speed +EXPORT_SYMBOL drivers/media/dvb-frontends/drx39xyj/drx39xyj 0xdab2512a drx39xxj_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/drxd 0x193c5df2 drxd_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/drxk 0x7935dfc2 drxk_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ds3000 0xa7cf3b14 ds3000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dvb-pll 0xc5fb231a dvb_pll_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ec100 0x3c796a67 ec100_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/isl6405 0x39af04d9 isl6405_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/isl6421 0x05fe659e isl6421_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/isl6423 0x168f4f9e isl6423_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/itd1000 0x0c2577e8 itd1000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ix2505v 0xf86b8eae ix2505v_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/l64781 0xd5c582ff l64781_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lg2160 0x56ab1dff lg2160_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgdt3305 0x50266b04 lgdt3305_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgdt3306a 0x4105db3d lgdt3306a_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgdt330x 0x723ffee4 lgdt330x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgs8gxx 0x6302a1ab lgs8gxx_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lnbp21 0x2e3b80c9 lnbp21_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lnbp21 0xdb281020 lnbh24_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lnbp22 0x4f6657ae lnbp22_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/m88ds3103 0x38f5a06e m88ds3103_get_agc_pwm +EXPORT_SYMBOL drivers/media/dvb-frontends/m88ds3103 0xc731c97d m88ds3103_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/m88rs2000 0xa213b18b m88rs2000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mb86a16 0xc008fdf9 mb86a16_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mb86a20s 0x1b9be14f mb86a20s_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mt312 0x1bcd8095 mt312_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mt352 0x8c199927 mt352_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/nxt200x 0x56f2e078 nxt200x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/nxt6000 0x1f5f196e nxt6000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/or51132 0xed2c104d or51132_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/or51211 0x30c67a5f or51211_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1409 0x52c0aa75 s5h1409_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1411 0x08328831 s5h1411_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1420 0x8824b520 s5h1420_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1420 0xd36247aa s5h1420_get_tuner_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/s921 0xf687b82b s921_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/si2165 0x5ce81755 si2165_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/si21xx 0x949f9a0a si21xx_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/sp8870 0xee7460c0 sp8870_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/sp887x 0xbdc1a201 sp887x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stb0899 0x289bf40e stb0899_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stb6000 0x515d5c51 stb6000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stb6100 0x88dc8379 stb6100_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0288 0xe65cec4d stv0288_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0297 0xfa227178 stv0297_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0299 0xac4c9bf3 stv0299_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0367 0xa0bb1d41 stv0367cab_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0367 0xa3e2255b stv0367ter_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0900 0xf3b14bc3 stv0900_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv090x 0xb29dcf05 stv090x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv6110 0x7b33f795 stv6110_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv6110x 0xba0c223d stv6110x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10021 0xb0068b04 tda10021_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10023 0x8873960c tda10023_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10048 0x3754610e tda10048_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda1004x 0x809d0ec1 tda10045_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda1004x 0xb488a6a9 tda10046_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10071 0x8ab4e410 tda10071_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10086 0x768be43d tda10086_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda665x 0xe81e8c4c tda665x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda8083 0xa0e1db60 tda8083_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda8261 0x81af8c31 tda8261_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda826x 0x7ce5e4c1 tda826x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ts2020 0x7379e416 ts2020_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tua6100 0x9a97c190 tua6100_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ves1820 0xf06c8ef6 ves1820_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ves1x93 0x1a6221b8 ves1x93_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/zl10036 0xdd0b0a72 zl10036_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/zl10039 0xa8cdef9c zl10039_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/zl10353 0x79efdc1c zl10353_attach +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x31d7795e flexcop_dma_xfer_control +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x4fb08113 flexcop_dma_config +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x6ac66891 flexcop_dma_config_timer +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x72e230dc flexcop_dma_free +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x77026d6e flexcop_dma_control_timer_irq +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x7b28a916 flexcop_dma_control_size_irq +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0xd2f7bb43 flexcop_dma_allocate +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0x1b9f2f20 bt878_device_control +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0x5f8c5362 bt878_stop +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0x90e7c3a0 bt878 +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0x9a346f2f bt878_start +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0xd5d0bdef bt878_num +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0x05046b23 bttv_sub_unregister +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0x11dc4b6d bttv_gpio_enable +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0x25bbd3c8 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 0xe6a55ebc bttv_sub_register +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x271da8f6 dst_pio_disable +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x39711ef1 dst_error_bailout +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x50df837b read_dst +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x6079365b dst_attach +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x62b90310 dst_wait_dst_ready +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x766f2c54 dst_comm_init +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xc4d0e4de rdc_reset_state +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xe94b8c9c dst_check_sum +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xf117a943 dst_error_recovery +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xfec2514f write_dst +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst_ca 0x70b4bd27 dst_ca_attach +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x2cdea06d cx18_reset_ir_gpio +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x732a7d82 cx18_release_stream +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x74a8f549 cx18_ext_init +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x7619d091 cx18_stop_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x9e40a6f0 cx18_claim_stream +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0xc40e1f29 cx18_start_v4l2_encode_stream +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/cx23885/altera-ci 0xf52e8e6b altera_ci_init +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x02380c8d cx25821_riscmem_alloc +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x3e2466d5 cx25821_risc_databuffer_audio +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x6f57045c cx25821_sram_channel_dump_audio +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x784853c3 cx25821_print_irqbits +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x9cf552b5 cx25821_dev_get +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xa2d947eb cx25821_dev_unregister +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xc5d38741 cx25821_sram_channels +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xe5e5de2f cx25821_sram_channel_setup_audio +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xfd2f91b7 cx25821_set_gpiopin_direction +EXPORT_SYMBOL drivers/media/pci/cx88/cx88-vp3054-i2c 0x4a2bc015 vp3054_i2c_remove +EXPORT_SYMBOL drivers/media/pci/cx88/cx88-vp3054-i2c 0xcb193541 vp3054_i2c_probe +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0x159abf7d cx88_set_freq +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0x1d21d678 cx88_enum_input +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0x574457a8 cx88_video_mux +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0x5e400f0b cx88_querycap +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x34989a80 cx8802_cancel_buffers +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x48aadb9e cx8802_register_driver +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x77142f57 cx8802_start_dma +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x9d576385 cx8802_buf_prepare +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0xa3338647 cx8802_unregister_driver +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0xb7c0e247 cx8802_get_driver +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0xeed2c113 cx8802_buf_queue +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x0bb163bb cx88_risc_buffer +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x1670fbc7 cx88_ir_stop +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x17dba8cc cx88_core_irq +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x27a3e872 cx88_sram_channel_setup +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x2a117998 cx88_get_stereo +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x346c7249 cx88_core_put +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x40d676e2 cx88_core_get +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x4216fc84 cx88_sram_channels +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x44447ada cx88_set_stereo +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x492792fc cx88_dsp_detect_stereo_sap +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x5c09dc2e cx88_wakeup +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x6141c8c5 cx88_tuner_callback +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x62d79561 cx88_ir_start +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x6bc88af1 cx88_set_tvaudio +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x7642ed3c cx88_print_irqbits +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x845ed0f2 cx88_shutdown +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x872385a1 cx88_reset +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x8b2f21b1 cx88_set_scale +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x904b8696 cx88_audio_thread +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xd8119e94 cx88_risc_databuffer +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xd9bf7710 cx88_set_tvnorm +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xe5dabf74 cx88_newstation +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xebf440d2 cx88_sram_channel_dump +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xefc1e1e5 cx88_vdev_init +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x1177e516 ivtv_udma_prepare +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x14f67530 ivtv_debug +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x407d8e2b ivtv_stop_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x5f8476af ivtv_firmware_check +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x6a621f04 ivtv_api +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x813412f9 ivtv_udma_unmap +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x82bc63e5 ivtv_vapi_result +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x8af8f6b8 ivtv_clear_irq_mask +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x8c49f626 ivtv_start_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x9ac51102 ivtv_init_on_first_open +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x9ca44ede ivtv_release_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x9d7b81f6 ivtv_claim_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xab2d89c6 ivtv_reset_ir_gpio +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xb9ce21eb ivtv_ext_init +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xcbe39100 ivtv_set_irq_mask +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xdffa1f4b ivtv_vapi +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xf16021c6 ivtv_udma_setup +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xf438b692 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 0x5177721d saa_dsp_writel +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x6a4a9914 saa7134_devlist_lock +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x75c66969 saa7134_boards +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x98d3982a saa7134_set_dmabits +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xa019e614 saa7134_dmasound_exit +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xb3d520ba saa7134_ts_register +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xb5be7500 saa7134_set_gpio +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xb6204e5f saa7134_pgtable_free +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xb99ff730 saa7134_dmasound_init +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xda85e316 saa7134_pgtable_build +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xdd44ffc1 saa7134_pgtable_alloc +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xe4e1b1e4 saa7134_tvaudio_setmute +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xf32852fd saa7134_ts_unregister +EXPORT_SYMBOL drivers/media/pci/ttpci/ttpci-eeprom 0x2088c817 ttpci_eeprom_parse_mac +EXPORT_SYMBOL drivers/media/pci/ttpci/ttpci-eeprom 0xc3e4c127 ttpci_eeprom_decode_mac +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x15e2097e soc_camera_apply_board_flags +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0xa7e8b5ca soc_camera_host_unregister +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0xad5b60ba soc_camera_power_off +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0xb39098bd soc_camera_power_init +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0xcd3fd4ce soc_camera_power_on +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0xce58346f soc_camera_xlate_by_fourcc +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0xf098b431 soc_camera_host_register +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0x25c52d97 soc_mbus_samples_per_pixel +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0x2863728e soc_mbus_image_size +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0x29f5a98b soc_mbus_get_fmtdesc +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0x5f3e3558 soc_mbus_bytes_per_line +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0xc8b28da5 soc_mbus_config_compatible +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0xdc5dafe2 soc_mbus_find_fmtdesc +EXPORT_SYMBOL drivers/media/radio/tea575x 0x22acf886 snd_tea575x_g_tuner +EXPORT_SYMBOL drivers/media/radio/tea575x 0x4c336d80 snd_tea575x_exit +EXPORT_SYMBOL drivers/media/radio/tea575x 0x778eea31 snd_tea575x_init +EXPORT_SYMBOL drivers/media/radio/tea575x 0xa7f220cf snd_tea575x_s_hw_freq_seek +EXPORT_SYMBOL drivers/media/radio/tea575x 0xa88918a9 snd_tea575x_set_freq +EXPORT_SYMBOL drivers/media/radio/tea575x 0xe9701a34 snd_tea575x_hw_init +EXPORT_SYMBOL drivers/media/radio/tea575x 0xf95e1acd snd_tea575x_enum_freq_bands +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x04dca738 lirc_unregister_driver +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x314c766e lirc_dev_fop_open +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x32cccdb8 lirc_dev_fop_poll +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x39aa5800 lirc_register_driver +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x4a677801 lirc_dev_fop_read +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0xaa89a0be lirc_get_pdata +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0xde620fc9 lirc_dev_fop_close +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0xea8a3036 lirc_dev_fop_ioctl +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0xfd924e18 lirc_dev_fop_write +EXPORT_SYMBOL drivers/media/rc/rc-core 0x18a972a8 ir_raw_handler_unregister +EXPORT_SYMBOL drivers/media/rc/rc-core 0x79539365 ir_raw_handler_register +EXPORT_SYMBOL drivers/media/tuners/fc0011 0x8f66af01 fc0011_attach +EXPORT_SYMBOL drivers/media/tuners/fc0012 0x5cef9fc6 fc0012_attach +EXPORT_SYMBOL drivers/media/tuners/fc0013 0x0cabec6d fc0013_rc_cal_reset +EXPORT_SYMBOL drivers/media/tuners/fc0013 0xc234eea6 fc0013_attach +EXPORT_SYMBOL drivers/media/tuners/fc0013 0xff9b38e0 fc0013_rc_cal_add +EXPORT_SYMBOL drivers/media/tuners/max2165 0xe303b50d max2165_attach +EXPORT_SYMBOL drivers/media/tuners/mc44s803 0xa862888d mc44s803_attach +EXPORT_SYMBOL drivers/media/tuners/mt2060 0xa4b8efec mt2060_attach +EXPORT_SYMBOL drivers/media/tuners/mt2131 0x9cf058c9 mt2131_attach +EXPORT_SYMBOL drivers/media/tuners/mt2266 0x0cdb1494 mt2266_attach +EXPORT_SYMBOL drivers/media/tuners/mxl5005s 0x437f09fd mxl5005s_attach +EXPORT_SYMBOL drivers/media/tuners/qt1010 0x757417be qt1010_attach +EXPORT_SYMBOL drivers/media/tuners/tda18218 0xea16ef0c tda18218_attach +EXPORT_SYMBOL drivers/media/tuners/tuner-types 0x0cb4b189 tuners +EXPORT_SYMBOL drivers/media/tuners/tuner-types 0xc2821775 tuner_count +EXPORT_SYMBOL drivers/media/tuners/tuner-xc2028 0x1de126c8 xc2028_attach +EXPORT_SYMBOL drivers/media/tuners/xc4000 0x3488d61f xc4000_attach +EXPORT_SYMBOL drivers/media/tuners/xc5000 0x20c26ff9 xc5000_attach +EXPORT_SYMBOL drivers/media/usb/cx231xx/cx231xx 0x63af743c cx231xx_unregister_extension +EXPORT_SYMBOL drivers/media/usb/cx231xx/cx231xx 0x666b6b67 cx231xx_register_extension +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x16f694a8 dvb_usbv2_resume +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x6b8b8720 dvb_usbv2_generic_rw_locked +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x8088f1f9 dvb_usbv2_generic_write_locked +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0xa793f0fe dvb_usbv2_suspend +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0xb5ca0205 dvb_usbv2_reset_resume +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0xbd0046ab dvb_usbv2_generic_rw +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0xc5e5971a dvb_usbv2_disconnect +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0xddbd2cfe dvb_usbv2_generic_write +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0xfece385f dvb_usbv2_probe +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x3834c83e usb_cypress_load_firmware +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x7ff409fe dvb_usb_generic_write +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x89d0267c dvb_usb_get_hexline +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x9475421d dvb_usb_device_exit +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x9c3e405e dvb_usb_device_init +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x9f7ada66 dvb_usb_nec_rc_key_to_event +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0xb2e331cd dvb_usb_generic_rw +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-af9005-remote 0x13e247e0 rc_map_af9005_table +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-af9005-remote 0x96211eff 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 0x0b9a90f7 dibusb_power_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x20f2a707 dibusb2_0_power_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x34fcb871 dibusb_dib3000mc_frontend_attach +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x68eee79e dibusb_pid_filter +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x6a62a5e8 dibusb_i2c_algo +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x7dff4415 dibusb_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x87bb37f7 dibusb_read_eeprom_byte +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x9ce8ebb1 dibusb_dib3000mc_tuner_attach +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xb47559e0 rc_map_dibusb_table +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xc152df24 dibusb_streaming_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xd42e2890 dibusb2_0_streaming_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xee983aa0 dibusb_rc_query +EXPORT_SYMBOL drivers/media/usb/em28xx/em28xx 0x04f9256a em28xx_unregister_extension +EXPORT_SYMBOL drivers/media/usb/em28xx/em28xx 0x93969691 em28xx_register_extension +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x369375ca go7007_alloc +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x41fe3c50 go7007_boot_encoder +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x49208d94 go7007_parse_video_stream +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x4f013bf0 go7007_snd_init +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0xbd1e295f go7007_read_interrupt +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0xc133fa30 go7007_read_addr +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0xce35d173 go7007_snd_remove +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0xf126add5 go7007_register_encoder +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0xf9edabe6 go7007_update_board +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x03e4f4df gspca_coarse_grained_expo_autogain +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x23c2b914 gspca_suspend +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x4bfe2121 gspca_frame_add +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x5d38abd9 gspca_resume +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x73eed03c gspca_dev_probe2 +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x9670af2c gspca_debug +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0xb01c7d3e gspca_dev_probe +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0xc471bad2 gspca_expo_autogain +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0xe4212b0c gspca_disconnect +EXPORT_SYMBOL drivers/media/usb/tm6000/tm6000 0xa686df34 tm6000_init_digital_mode +EXPORT_SYMBOL drivers/media/usb/tm6000/tm6000 0xa6b80c24 tm6000_register_extension +EXPORT_SYMBOL drivers/media/usb/tm6000/tm6000 0xfdc8676f tm6000_unregister_extension +EXPORT_SYMBOL drivers/media/usb/ttusb-dec/ttusbdecfe 0x9332fa89 ttusbdecfe_dvbt_attach +EXPORT_SYMBOL drivers/media/usb/ttusb-dec/ttusbdecfe 0xb8f5fb43 ttusbdecfe_dvbs_attach +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-common 0xabe27502 v4l2_ctrl_query_fill +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-mem2mem 0x243b1565 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 0xf2d99488 v4l2_m2m_job_finish +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-mem2mem 0xfa83bf5a v4l2_m2m_get_vq +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0x0d766acc videobuf_dvb_register_bus +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0x247b423a videobuf_dvb_find_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0x4264b61b videobuf_dvb_alloc_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0x48a6fa5f videobuf_dvb_unregister_bus +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0x7349eb04 videobuf_dvb_get_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0x8affd968 videobuf_dvb_dealloc_frontends +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-core 0x3d2cabb4 vb2_querybuf +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0x17ee7b87 vb2_dvb_alloc_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0x1a0cfdb5 vb2_dvb_register_bus +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0x4ff7893c vb2_dvb_unregister_bus +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0x515a3291 vb2_dvb_find_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0xaa06cd9b vb2_dvb_dealloc_frontends +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0xc6b585b2 vb2_dvb_get_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x0121851c __v4l2_ctrl_s_ctrl_string +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x015eb536 video_device_alloc +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x0614dd5a v4l2_video_std_frame_period +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x08d77c7c v4l2_ctrl_new_custom +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x0aa9da05 v4l2_clk_register +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x0d711ed4 v4l2_ctrl_add_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x1226eceb v4l2_subdev_queryctrl +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 0x1b5c0864 v4l2_ctrl_merge +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x1e8befc4 v4l2_async_notifier_register +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x20cbffc6 v4l2_subdev_init +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x2342f1ae v4l2_prio_open +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x260d8c3d v4l2_ctrl_cluster +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x2924b819 v4l2_of_alloc_parse_endpoint +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x2a5da755 __v4l2_ctrl_s_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x2fa7ffc8 v4l2_querymenu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x34b48819 v4l2_clk_unregister +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x3544ec27 v4l2_ctrl_grab +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x36847d11 v4l2_ctrl_get_int_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x381434f3 video_device_release +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 0x3efc0768 v4l2_of_parse_link +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x41ea26ef v4l2_try_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x447bbd71 v4l2_ctrl_subdev_subscribe_event +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x455ff5b5 v4l2_ctrl_subdev_log_status +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x45a44c24 v4l2_ctrl_fill +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x47ebf219 v4l2_clk_enable +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x495426ee v4l2_ctrl_get_name +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x4b77c88d v4l2_ctrl_replace +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x4f5b2862 v4l2_ctrl_new_std_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x54e73eec video_devdata +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x55925292 v4l2_ctrl_g_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x562bcfa9 v4l2_of_put_link +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x56ca7b48 v4l2_ctrl_handler_free +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x5a688d66 v4l2_clk_get_rate +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x61da4b0a v4l2_ctrl_handler_setup +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x63c0b03e v4l2_subdev_s_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x6890aaec v4l2_ctrl_handler_init_class +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x6a8ce9c8 v4l2_s_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x6f59b98b v4l2_clk_put +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x71388366 v4l2_ctrl_add_handler +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x7697d47c video_unregister_device +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x78a73352 v4l2_g_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x78f2758f v4l2_ctrl_sub_ev_ops +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x7980318f v4l2_ctrl_subscribe_event +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x7a3cd015 v4l2_ctrl_get_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x7d16951d v4l2_ctrl_new_std +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x7d605ec2 v4l2_of_parse_endpoint +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x8106095a v4l2_prio_max +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x829c6328 __v4l2_ctrl_s_ctrl_int64 +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x82abd367 v4l2_ctrl_auto_cluster +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x85fd7f14 v4l2_clk_get +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x89103312 v4l2_ctrl_radio_filter +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x8bf3627c v4l2_async_register_subdev +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x917e91a1 v4l2_subdev_g_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xa0d52d42 v4l2_clk_set_rate +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xa389de24 v4l2_ctrl_new_int_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xa638a006 v4l2_query_ext_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xa756182e v4l2_queryctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xa8c5401d v4l2_ctrl_g_ctrl_int64 +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xaa5b7ad9 v4l2_async_unregister_subdev +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xaa8be718 v4l2_ctrl_handler_log_status +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xaecff85c v4l2_async_notifier_unregister +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb1d0d29c video_usercopy +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb39ae2a4 v4l2_subdev_g_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb61d5b2a __v4l2_ctrl_modify_range +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb77b0159 v4l2_prio_init +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb82749bd v4l2_subdev_s_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xbc5671dc v4l_printk_ioctl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xbe40f31d v4l2_clk_disable +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xc142858a v4l2_s_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xc1e4d62a v4l2_ctrl_log_status +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xc840b63d video_device_release_empty +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xcda04a5b v4l2_prio_close +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xd48dc0ac v4l2_subdev_try_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xd6f5bb6d v4l2_ctrl_notify +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xd8facd2a v4l2_ctrl_poll +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xd9fe926f v4l2_clk_unregister_fixed +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe0398422 __v4l2_clk_register_fixed +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe2b92059 v4l2_video_std_construct +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xea154495 v4l2_ctrl_find +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xef06f995 v4l2_ctrl_new_std_menu_items +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xefb49175 v4l2_of_free_endpoint +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf207ec0f __video_register_device +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf3251e7b v4l2_norm_to_name +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf6fbfd10 v4l2_g_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf78e387f video_ioctl2 +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xfa4ee1c2 v4l2_subdev_querymenu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xfb338df1 v4l2_ctrl_activate +EXPORT_SYMBOL drivers/memstick/core/memstick 0x10df073c memstick_alloc_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x1874151a memstick_add_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x28f10d6e memstick_suspend_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x39dc441c memstick_unregister_driver +EXPORT_SYMBOL drivers/memstick/core/memstick 0x40ee62e3 memstick_remove_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x5d820a02 memstick_init_req_sg +EXPORT_SYMBOL drivers/memstick/core/memstick 0x8de3d3b1 memstick_resume_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0xa3492aea memstick_detect_change +EXPORT_SYMBOL drivers/memstick/core/memstick 0xb18e594c memstick_next_req +EXPORT_SYMBOL drivers/memstick/core/memstick 0xc67f7a03 memstick_set_rw_addr +EXPORT_SYMBOL drivers/memstick/core/memstick 0xdb7fd77a memstick_new_req +EXPORT_SYMBOL drivers/memstick/core/memstick 0xdc07e67e memstick_init_req +EXPORT_SYMBOL drivers/memstick/core/memstick 0xe39c705b memstick_register_driver +EXPORT_SYMBOL drivers/memstick/core/memstick 0xfb51d0ac memstick_free_host +EXPORT_SYMBOL drivers/memstick/host/r592 0x52f1b23b memstick_debug_get_tpc_name +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x008b2156 mpt_verify_adapter +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x1257508b mpt_put_msg_frame +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x16edb604 mpt_send_handshake_request +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x2009bd2c mpt_free_fw_memory +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x213f33db mpt_alloc_fw_memory +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x2c03dbc6 mpt_Soft_Hard_ResetHandler +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x3aebdea0 mpt_device_driver_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x424e84dc mpt_halt_firmware +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x4526289b mpt_event_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x4b10da77 mpt_set_taskmgmt_in_progress_flag +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x502108d0 mpt_fwfault_debug +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x5fb0348d mpt_HardResetHandler +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x636d56d3 mpt_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x6e168b60 mpt_resume +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x779f4376 mpt_clear_taskmgmt_in_progress_flag +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x7d34ceed mptbase_sas_persist_operation +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x90b4c7f7 mpt_detach +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x9c3006d5 mpt_attach +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x9f8b32f4 mpt_put_msg_frame_hi_pri +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xa2598abc mpt_suspend +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xa2be36aa mpt_findImVolumes +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xc0e69f82 mpt_device_driver_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xc47c22e8 mpt_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xc8f2abf0 mpt_raid_phys_disk_get_num_paths +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xcee0d872 mpt_GetIocState +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xd9a92a75 mpt_reset_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xdd805159 ioc_list +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xddabae10 mpt_raid_phys_disk_pg0 +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xde1f88c8 mpt_reset_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xdf1ce245 mpt_event_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xe259c085 mpt_get_msg_frame +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xedf2dad7 mpt_free_msg_frame +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xf544f6ef mpt_print_ioc_summary +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xf943d263 mpt_config +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xfb7f32f0 mpt_raid_phys_disk_pg1 +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x0391f52c mptscsih_ioc_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x173ec8bf mptscsih_taskmgmt_complete +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x2078cd2d mptscsih_IssueTaskMgmt +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x294c2075 mptscsih_show_info +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x2a6e26f8 mptscsih_shutdown +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x2c0275ee mptscsih_flush_running_cmds +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x36f360b7 mptscsih_slave_destroy +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x3938d4e3 mptscsih_slave_configure +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x48ddabfd mptscsih_get_scsi_lookup +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x57f70564 mptscsih_resume +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x597a92b1 mptscsih_event_process +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x6b368010 mptscsih_host_attrs +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x6dc96019 mptscsih_remove +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x784b5cf9 mptscsih_io_done +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x784f1aef mptscsih_is_phys_disk +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x798f0129 mptscsih_bus_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x7c564cbe mptscsih_raid_id_to_num +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x840de225 mptscsih_info +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x854540f1 mptscsih_bios_param +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x8a413cb7 mptscsih_abort +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x9ebac93e mptscsih_dev_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xa8098b66 mptscsih_qcmd +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xb49fc977 mptscsih_taskmgmt_response_code +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xbf03f65a mptscsih_change_queue_depth +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xc7d1488f mptscsih_suspend +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xcab90ef7 mptscsih_scandv_complete +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xf8bf8182 mptscsih_host_reset +EXPORT_SYMBOL drivers/mfd/cros_ec 0x18f6d17e cros_ec_suspend +EXPORT_SYMBOL drivers/mfd/cros_ec 0x59e2d611 cros_ec_register +EXPORT_SYMBOL drivers/mfd/cros_ec 0x5ac688da cros_ec_resume +EXPORT_SYMBOL drivers/mfd/cros_ec 0x76a35628 cros_ec_remove +EXPORT_SYMBOL drivers/mfd/dln2 0x04f92995 dln2_transfer +EXPORT_SYMBOL drivers/mfd/dln2 0x2e3f0b09 dln2_unregister_event_cb +EXPORT_SYMBOL drivers/mfd/dln2 0xff856aea dln2_register_event_cb +EXPORT_SYMBOL drivers/mfd/htc-pasic3 0x21d36660 pasic3_read_register +EXPORT_SYMBOL drivers/mfd/htc-pasic3 0xb82b4909 pasic3_write_register +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x0df4a29b mc13xxx_reg_read +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x17ea1458 mc13xxx_reg_rmw +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x181d3b90 mc13xxx_irq_unmask +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x33813d8e mc13xxx_lock +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x35f3eaea mc13xxx_unlock +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x435d9c13 mc13xxx_irq_request +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x6584bc8d mc13xxx_irq_free +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xa626a3e8 mc13xxx_reg_write +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xab0412e3 mc13xxx_get_flags +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xb4e736cc mc13xxx_irq_mask +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xd40712c4 mc13xxx_irq_status +EXPORT_SYMBOL drivers/mfd/tps6105x 0x10588f4b tps6105x_get +EXPORT_SYMBOL drivers/mfd/tps6105x 0x43e2682f tps6105x_set +EXPORT_SYMBOL drivers/mfd/tps6105x 0x654f2e20 tps6105x_mask_and_set +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-irq 0xb7bc0b19 wm8994_irq_init +EXPORT_SYMBOL drivers/mfd/wm8994-irq 0xfa24615a wm8994_irq_exit +EXPORT_SYMBOL drivers/mfd/wm8994-regmap 0x53958065 wm8994_base_regmap_config +EXPORT_SYMBOL drivers/mfd/wm8994-regmap 0x5c89ad5a wm8994_regmap_config +EXPORT_SYMBOL drivers/mfd/wm8994-regmap 0x6eb316c3 wm8958_regmap_config +EXPORT_SYMBOL drivers/mfd/wm8994-regmap 0xf1d114ee wm1811_regmap_config +EXPORT_SYMBOL drivers/misc/ad525x_dpot 0x99369b47 ad_dpot_probe +EXPORT_SYMBOL drivers/misc/ad525x_dpot 0xa112e7b4 ad_dpot_remove +EXPORT_SYMBOL drivers/misc/altera-stapl/altera-stapl 0xfefe536e altera_init +EXPORT_SYMBOL drivers/misc/c2port/core 0x15347d8b c2port_device_register +EXPORT_SYMBOL drivers/misc/c2port/core 0x3fb188f9 c2port_device_unregister +EXPORT_SYMBOL drivers/misc/ioc4 0x08c14e2e ioc4_register_submodule +EXPORT_SYMBOL drivers/misc/ioc4 0x88aee06d ioc4_unregister_submodule +EXPORT_SYMBOL drivers/misc/tifm_core 0x0bcd8f3f tifm_alloc_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0x1bd270e3 tifm_alloc_device +EXPORT_SYMBOL drivers/misc/tifm_core 0x3efc09bb tifm_unregister_driver +EXPORT_SYMBOL drivers/misc/tifm_core 0x44133db1 tifm_unmap_sg +EXPORT_SYMBOL drivers/misc/tifm_core 0x66426c53 tifm_add_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0x76fd380f tifm_register_driver +EXPORT_SYMBOL drivers/misc/tifm_core 0x8cf3f092 tifm_map_sg +EXPORT_SYMBOL drivers/misc/tifm_core 0xa40c84e1 tifm_eject +EXPORT_SYMBOL drivers/misc/tifm_core 0xa8c2ec46 tifm_queue_work +EXPORT_SYMBOL drivers/misc/tifm_core 0xae803805 tifm_remove_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0xc75e6316 tifm_has_ms_pif +EXPORT_SYMBOL drivers/misc/tifm_core 0xece8f0db tifm_free_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0xf8f469c4 tifm_free_device +EXPORT_SYMBOL drivers/mmc/card/mmc_block 0x790ffc84 mmc_cleanup_queue +EXPORT_SYMBOL drivers/mmc/host/of_mmc_spi 0x07c87ee4 mmc_spi_put_pdata +EXPORT_SYMBOL drivers/mmc/host/of_mmc_spi 0x5712ecd9 mmc_spi_get_pdata +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x33499d37 cfi_send_gen_cmd +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x3d5d2fc0 cfi_merge_status +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x4e709c9a cfi_build_cmd +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x57ca061d cfi_fixup +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x84881263 cfi_varsize_frob +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0xa9b3eb4e cfi_read_pri +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0xbab49d40 cfi_build_cmd_addr +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0xff9fa623 cfi_udelay +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0x014a8840 map_destroy +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0x6f411e35 register_mtd_chip_driver +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0x7df84623 unregister_mtd_chip_driver +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0xbc7edd6c do_map_probe +EXPORT_SYMBOL drivers/mtd/chips/gen_probe 0xac213107 mtd_do_chip_probe +EXPORT_SYMBOL drivers/mtd/lpddr/lpddr_cmds 0x59e746d0 lpddr_cmdset +EXPORT_SYMBOL drivers/mtd/maps/map_funcs 0xd5cd0562 simple_map_init +EXPORT_SYMBOL drivers/mtd/mtd 0xc588f3b8 mtd_concat_destroy +EXPORT_SYMBOL drivers/mtd/mtd 0xcc470230 mtd_concat_create +EXPORT_SYMBOL drivers/mtd/nand/denali 0x46bbedfc denali_remove +EXPORT_SYMBOL drivers/mtd/nand/denali 0xe2d306fa denali_init +EXPORT_SYMBOL drivers/mtd/nand/nand 0x04105af0 nand_scan +EXPORT_SYMBOL drivers/mtd/nand/nand 0x720414cf nand_scan_ident +EXPORT_SYMBOL drivers/mtd/nand/nand 0x9807aa87 nand_scan_tail +EXPORT_SYMBOL drivers/mtd/nand/nand 0xbb314385 nand_lock +EXPORT_SYMBOL drivers/mtd/nand/nand 0xc37f000e nand_scan_bbt +EXPORT_SYMBOL drivers/mtd/nand/nand 0xe260aeb4 nand_unlock +EXPORT_SYMBOL drivers/mtd/nand/nand 0xef859391 onfi_async_timing_mode_to_sdr_timings +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0x6c9f2d17 nand_bch_init +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0x70097aa0 nand_bch_free +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0xd5f79c27 nand_bch_calculate_ecc +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0xdb02bf01 nand_bch_correct_data +EXPORT_SYMBOL drivers/mtd/nand/nand_ecc 0x014c8fb9 nand_correct_data +EXPORT_SYMBOL drivers/mtd/nand/nand_ecc 0x3132ee65 __nand_calculate_ecc +EXPORT_SYMBOL drivers/mtd/nand/nand_ecc 0xb4b94377 __nand_correct_data +EXPORT_SYMBOL drivers/mtd/nand/nand_ecc 0xdd6072fd nand_calculate_ecc +EXPORT_SYMBOL drivers/mtd/nand/nand_ids 0x8cfcf75c nand_flash_ids +EXPORT_SYMBOL drivers/mtd/nand/nand_ids 0xa336feb7 nand_manuf_ids +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0x62c1aeda flexonenand_region +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0xace9c499 onenand_scan_bbt +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0xb7e75856 onenand_addr +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0xd3e87550 onenand_default_bbt +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x03bebc95 alloc_arcdev +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x1bd21715 arcnet_timeout +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x2055eec6 arc_bcast_proto +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x6444b0b8 arcnet_close +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x6534792a arcnet_debug +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x895c3dcf arc_proto_default +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x91a313a2 arcnet_unregister_proto +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xa3479faf arcnet_open +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xa8baad0d arc_proto_map +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xc2673c7e arc_raw_proto +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xddf5d59e arcnet_send_packet +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xecb730b0 arcnet_interrupt +EXPORT_SYMBOL drivers/net/arcnet/com20020 0x83a303b4 com20020_found +EXPORT_SYMBOL drivers/net/arcnet/com20020 0xa7e893fd com20020_check +EXPORT_SYMBOL drivers/net/arcnet/com20020 0xceff7c0f com20020_netdev_ops +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x119721ac ei_interrupt +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x1c71aad6 ei_get_stats +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x5005ff12 ei_netdev_ops +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x52f2d2b0 ei_poll +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x6d4eb58b ei_open +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x70860b05 ei_close +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x88ef5d5a ei_set_multicast_list +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xa632c486 ei_tx_timeout +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xf9a3225b __alloc_ei_netdev +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xfc11e86d ei_start_xmit +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xfd96e249 NS8390_init +EXPORT_SYMBOL drivers/net/ethernet/broadcom/bnx2x/bnx2x 0x40e9dec5 bnx2x_schedule_sp_rtnl +EXPORT_SYMBOL drivers/net/ethernet/broadcom/cnic 0x636af174 cnic_unregister_driver +EXPORT_SYMBOL drivers/net/ethernet/broadcom/cnic 0x8790321b cnic_register_driver +EXPORT_SYMBOL drivers/net/ethernet/cavium/thunder/thunder_bgx 0x285bde59 bgx_get_rx_stats +EXPORT_SYMBOL drivers/net/ethernet/cavium/thunder/thunder_bgx 0x42264715 bgx_get_lmac_count +EXPORT_SYMBOL drivers/net/ethernet/cavium/thunder/thunder_bgx 0x6dc1648d bgx_get_lmac_mac +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 0xe48ca42a bgx_get_tx_stats +EXPORT_SYMBOL drivers/net/ethernet/cavium/thunder/thunder_bgx 0xf101d1b2 bgx_get_lmac_link_state +EXPORT_SYMBOL drivers/net/ethernet/cavium/thunder/thunder_bgx 0xf9508980 bgx_set_lmac_mac +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x03674b52 cxgb3_insert_tid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x0cc1fe53 t3_l2t_send_event +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x10717545 t3_register_cpl_handler +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x12058c56 cxgb3_queue_tid_release +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x16bbdeb6 cxgb3_ofld_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x38525d99 cxgb3_alloc_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x4a7df320 cxgb3_unregister_client +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x590fd659 cxgb3_free_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x69d2e2b9 t3_l2e_free +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x9251a388 cxgb3_alloc_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xb6f156fc t3_l2t_get +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xcd9c1021 cxgb3_remove_tid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xce0f6114 cxgb3_register_client +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xde931949 cxgb3_free_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xe39fb066 t3_l2t_send_slow +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xef5a1182 dev2t3cdev +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x05462d73 cxgb4_select_ntuple +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x09d8fab0 cxgb4_alloc_sftid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x11325a06 cxgb4_l2t_release +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x1971588a cxgb4_l2t_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x1cf73763 cxgb4_create_server_filter +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x2af6af08 cxgb4_read_sge_timestamp +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x2bd9a105 cxgb4_free_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x39327e0d cxgb4_create_server +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x3bacc2d8 cxgb4_port_idx +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x3d029604 cxgb4_iscsi_init +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x4480221e cxgb4_clip_release +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x46342998 cxgb4_remove_server +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x48ac5e92 cxgb4_ofld_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x50ee5c07 cxgb4_best_aligned_mtu +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x56268c54 cxgb4_l2t_get +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x5a89639e cxgb4_free_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x6c5575b6 cxgb4_clip_get +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x6edb437a cxgb4_dcb_enabled +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x7316367a cxgb4_register_uld +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x773f3bba cxgb4_port_viid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x8416156a cxgb4_flush_eq_cache +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xa0a6bd57 cxgb4_get_tcp_stats +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xa0a7110e cxgb4_remove_tid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xa10bf610 cxgb4_create_server6 +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xa2925913 cxgb4_sync_txq_pidx +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xa3035303 cxgb4_alloc_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xa4faa7f7 t4_cleanup_clip_tbl +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xa950591c cxgb4_read_tpte +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xab28b8b7 cxgb4_dbfifo_count +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xc3bc4bd4 cxgb4_bar2_sge_qregs +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xc4a37035 cxgb4_update_root_dev_clip +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xd00e5a36 cxgb4_unregister_uld +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xd1fb77f6 cxgb4_remove_server_filter +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xd69a0294 cxgb4_best_mtu +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xd69c6b7d cxgb4_port_chan +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xfb40022c cxgb4_pktgl_to_skb +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xff4c31f8 cxgb4_alloc_atid +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0x0e712340 vnic_dev_get_res +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0x10faab5d vnic_dev_register +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0x4f650da7 vnic_dev_get_res_count +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0x9196d804 vnic_dev_unregister +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0xd138a0ed enic_api_devcmd_proxy_by_index +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0xef3f4c72 vnic_dev_get_pdev +EXPORT_SYMBOL drivers/net/ethernet/emulex/benet/be2net 0x9b9f34aa be_roce_register_driver +EXPORT_SYMBOL drivers/net/ethernet/emulex/benet/be2net 0xbab62e22 be_roce_mcc_cmd +EXPORT_SYMBOL drivers/net/ethernet/emulex/benet/be2net 0xeb8b9363 be_roce_unregister_driver +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x146c74c7 mlx4_SET_PORT_BEACON +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x22afd675 mlx4_get_cpu_rmap +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4045f9d6 mlx4_is_slave_active +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x40ea0213 mlx4_get_slave_node_guid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x43ffc7d6 mlx4_ALLOCATE_VPP_set +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x460034a2 mlx4_get_slave_port_state +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4ebc8377 mlx4_gen_slaves_port_mgt_ev +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x526480d9 mlx4_SET_PORT_VXLAN +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x53db01bc mlx4_assign_eq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x55379d6d set_and_calc_slave_port_state +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x58af4ecf mlx4_get_module_info +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5a4403e0 mlx4_put_slave_node_guid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6c022e54 mlx4_eq_get_irq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6e451862 mlx4_SET_PORT_general +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7a70cf8b mlx4_sync_pkey_table +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7ec33980 mlx4_tunnel_steer_add +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7f1028fa mlx4_SET_PORT_fcs_check +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x851eab63 mlx4_SET_PORT_qpn_calc +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x878fd463 mlx4_gen_guid_change_eqe +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8dec50d7 mlx4_gen_pkey_eqe +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x909f17c7 mlx4_get_eqs_per_port +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x966bca14 mlx4_is_eq_shared +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x980b635f mlx4_get_parav_qkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9ed3bd19 mlx4_get_slave_from_roce_gid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xae6676a9 mlx4_SET_PORT_SCHEDULER +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbe62ab2c mlx4_SET_MCAST_FLTR +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd28c8f15 mlx4_SET_VPORT_QOS_get +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd8ebd3a8 mlx4_get_slave_pkey_gid_tbl_len +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xdc8dac62 mlx4_is_eq_vector_valid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe0eed698 mlx4_SET_PORT_PRIO2TC +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe5e82b93 mlx4_get_roce_gid_from_slave +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe97f1f0e mlx4_SET_VPORT_QOS_set +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xea4c46c6 mlx4_gen_port_state_change_eqe +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xecc16877 mlx4_ALLOCATE_VPP_get +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xeec08efb mlx4_release_eq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf0ab5f56 mlx4_test_interrupts +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x0691fea4 mlx5_core_destroy_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x0857aabd mlx5_get_flow_table_id +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x0eb7287e mlx5_del_flow_table_entry +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x10f3a82e mlx5_vector2eqn +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x183345c0 mlx5_core_query_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x1915241f mlx5_core_dealloc_pd +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x1e6de08f mlx5_create_flow_table +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x2a6dbb73 mlx5_unregister_interface +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x3af7674f mlx5_core_modify_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x3d2eb2b9 mlx5_core_query_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x3e7f2585 mlx5_cmd_exec +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x42c55f77 mlx5_cmd_alloc_uar +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x49a037d8 mlx5_core_query_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x56e52765 mlx5_alloc_map_uar +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x5ac30cb8 mlx5_cmd_init +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x5aed9429 mlx5_register_interface +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x5cb7af02 mlx5_query_nic_vport_mac_address +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x60b15d60 mlx5_debugfs_root +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x642e59db mlx5_core_create_psv +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x6d20cb1a mlx5_core_create_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x6d8ef234 mlx5_cmd_exec_cb +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x74a5b8ef mlx5_core_get_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x7af93971 mlx5_unmap_free_uar +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x7cf11e2a mlx5_get_protocol_dev +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x7dcf31ae mlx5_query_vport_state +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x7f9c1301 mlx5_core_query_vendor_id +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x87eb62dc mlx5_core_arm_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x8a773b0f mlx5_core_destroy_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x8d8350c3 mlx5_core_create_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x9787bc1c mlx5_cmd_comp_handler +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x9a37e4c8 mlx5_core_attach_mcg +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xba3269ae mlx5_cmd_free_uar +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xbd4af835 mlx5_core_dump_fill_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xceace9c4 mlx5_cmd_cleanup +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xdd5f8415 mlx5_core_detach_mcg +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe6af33e4 mlx5_destroy_flow_table +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf3ba4f4a mlx5_core_alloc_pd +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xfb18ab16 mlx5_core_create_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xfb3c48e8 mlx5_core_destroy_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xfbae9a16 mlx5_core_destroy_psv +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xfc728a49 mlx5_add_flow_table_entry +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x1ebf6aca hdlcdrv_receiver +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x2d3b28ea hdlcdrv_transmitter +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x30d3e9d9 hdlcdrv_arbitrate +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0xa2b73f6f hdlcdrv_register +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0xd726e4f1 hdlcdrv_unregister +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x07c125b7 sirdev_put_instance +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x2adf07fc sirdev_receive +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x361c8060 sirdev_write_complete +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x37420276 sirdev_set_dtr_rts +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x5db98b87 sirdev_get_instance +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x602f3f9b sirdev_raw_write +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xc1bb6e56 sirdev_raw_read +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xc3754ba7 irda_register_dongle +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xce76e415 sirdev_set_dongle +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xebeef9b1 irda_unregister_dongle +EXPORT_SYMBOL drivers/net/mdio 0x22bce513 mdio_mii_ioctl +EXPORT_SYMBOL drivers/net/mdio 0x43e4defc mdio45_nway_restart +EXPORT_SYMBOL drivers/net/mdio 0x7577f992 mdio_set_flag +EXPORT_SYMBOL drivers/net/mdio 0xa1a29548 mdio45_probe +EXPORT_SYMBOL drivers/net/mdio 0xc6b1163f mdio45_links_ok +EXPORT_SYMBOL drivers/net/mdio 0xddc98749 mdio45_ethtool_gset_npage +EXPORT_SYMBOL drivers/net/mii 0x0e455c98 mii_ethtool_sset +EXPORT_SYMBOL drivers/net/mii 0x1402a362 mii_link_ok +EXPORT_SYMBOL drivers/net/mii 0x157efd3c mii_ethtool_gset +EXPORT_SYMBOL drivers/net/mii 0x2285955c generic_mii_ioctl +EXPORT_SYMBOL drivers/net/mii 0x522eb1b8 mii_nway_restart +EXPORT_SYMBOL drivers/net/mii 0x93324344 mii_check_gmii_support +EXPORT_SYMBOL drivers/net/mii 0xabdfb024 mii_check_link +EXPORT_SYMBOL drivers/net/mii 0xfbe66cc8 mii_check_media +EXPORT_SYMBOL drivers/net/phy/mdio-bitbang 0x6226a443 alloc_mdio_bitbang +EXPORT_SYMBOL drivers/net/phy/mdio-bitbang 0xd8961b7e free_mdio_bitbang +EXPORT_SYMBOL drivers/net/phy/mdio-octeon 0x8a1d5c26 octeon_mdiobus_force_mod_depencency +EXPORT_SYMBOL drivers/net/phy/vitesse 0x312c6444 vsc824x_add_skew +EXPORT_SYMBOL drivers/net/ppp/pppox 0x1e6cf9ac pppox_unbind_sock +EXPORT_SYMBOL drivers/net/ppp/pppox 0x618838aa pppox_ioctl +EXPORT_SYMBOL drivers/net/ppp/pppox 0x6ad6ff50 register_pppox_proto +EXPORT_SYMBOL drivers/net/ppp/pppox 0xe0ff7a18 unregister_pppox_proto +EXPORT_SYMBOL drivers/net/sungem_phy 0x2654f442 sungem_phy_probe +EXPORT_SYMBOL drivers/net/team/team 0x03bf3438 team_modeop_port_enter +EXPORT_SYMBOL drivers/net/team/team 0x0976f0c2 team_options_unregister +EXPORT_SYMBOL drivers/net/team/team 0x5d496c31 team_option_inst_set_change +EXPORT_SYMBOL drivers/net/team/team 0x60b9d1bf team_mode_unregister +EXPORT_SYMBOL drivers/net/team/team 0x747ca897 team_modeop_port_change_dev_addr +EXPORT_SYMBOL drivers/net/team/team 0x963f046b team_mode_register +EXPORT_SYMBOL drivers/net/team/team 0x9bb07911 team_options_register +EXPORT_SYMBOL drivers/net/team/team 0xe7d0a376 team_options_change_check +EXPORT_SYMBOL drivers/net/usb/usbnet 0x8bbbe6b6 usbnet_link_change +EXPORT_SYMBOL drivers/net/usb/usbnet 0x8c8a0244 usbnet_manage_power +EXPORT_SYMBOL drivers/net/usb/usbnet 0xe3c81e42 usbnet_device_suggests_idle +EXPORT_SYMBOL drivers/net/wan/hdlc 0x1572b3f1 hdlc_ioctl +EXPORT_SYMBOL drivers/net/wan/hdlc 0x1d36edb3 hdlc_open +EXPORT_SYMBOL drivers/net/wan/hdlc 0x2f5fe25d attach_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0x48c32d4d unregister_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0x5e0dd428 detach_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0x7035d5b2 hdlc_close +EXPORT_SYMBOL drivers/net/wan/hdlc 0x71fac327 register_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0x79e4222e hdlc_change_mtu +EXPORT_SYMBOL drivers/net/wan/hdlc 0x9271c43a unregister_hdlc_device +EXPORT_SYMBOL drivers/net/wan/hdlc 0xb3a7f4c8 hdlc_start_xmit +EXPORT_SYMBOL drivers/net/wan/hdlc 0xf13ad36f alloc_hdlcdev +EXPORT_SYMBOL drivers/net/wimax/i2400m/i2400m 0x1104cbf1 i2400m_unknown_barker +EXPORT_SYMBOL drivers/net/wireless/airo 0x2d032874 stop_airo_card +EXPORT_SYMBOL drivers/net/wireless/airo 0x5516e145 init_airo_card +EXPORT_SYMBOL drivers/net/wireless/airo 0x5fd58e78 reset_airo_card +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x30f9599e dfs_pattern_detector_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x319c6026 ath_is_49ghz_allowed +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x35e94de9 ath_key_config +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x68eb710a ath_hw_get_listen_time +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x8379b775 ath_hw_keyreset +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x8ca9bbba ath_is_mybeacon +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x9723c8e4 ath_hw_setbssidmask +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x9df62433 ath_regd_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xa31ac5b0 ath_rxbuf_alloc +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xaafdb617 ath_is_world_regd +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xbe083fb9 ath_printk +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xc6641330 ath_key_delete +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xc6cf7e9b ath_hw_cycle_counters_update +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xe1a4ae65 ath_reg_notifier_apply +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xfb4de67a ath_regd_get_band_ctl +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x1485528c ath10k_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x19217d7a ath10k_core_start +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x2a01df6c ath10k_print_driver_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x33e9f0bf ath10k_core_create +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x36fd2e7e ath10k_err +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x374ea06b ath10k_core_stop +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x442a4dd4 ath10k_warn +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x791365a9 ath10k_core_unregister +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xb3a5ac53 ath10k_debug_get_new_fw_crash_data +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xb45c81ce ath10k_core_register +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xbfd64116 ath10k_core_destroy +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x099ce276 ath6kl_core_destroy +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x22716fbe ath6kl_core_rx_complete +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x25a0e005 ath6kl_hif_intr_bh_handler +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x546f8d1d ath6kl_core_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x5c230b6d ath6kl_cfg80211_resume +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x773cd008 ath6kl_cfg80211_suspend +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x7b317424 ath6kl_printk +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x80a09613 ath6kl_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x91cfb84a ath6kl_hif_rw_comp_handler +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x9af74987 ath6kl_core_create +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x9ba1d5dc ath6kl_core_tx_complete +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xa6f66cc1 ath6kl_warn +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xb0323333 ath6kl_core_cleanup +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xc385aa09 ath6kl_stop_txrx +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xcb014460 ath6kl_err +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x0a8b5957 ath9k_cmn_debug_recv +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x2d15177d ath9k_cmn_debug_stat_rx +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x3641d3f5 ath9k_cmn_get_channel +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x404d526a ath9k_cmn_process_rssi +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x560b71ab ath_cmn_process_fft +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x58dab5df ath9k_cmn_rx_accept +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x6062139e ath9k_cmn_get_hw_crypto_keytype +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x62b45a76 ath9k_cmn_setup_ht_cap +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x6d1f710e ath9k_cmn_spectral_scan_trigger +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x79ff4d7b ath9k_cmn_beacon_config_adhoc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x7c14af26 ath9k_cmn_rx_skb_postprocess +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x7e760879 ath9k_cmn_beacon_config_ap +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x8768150f ath9k_cmn_debug_modal_eeprom +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x898cecd9 ath9k_cmn_debug_base_eeprom +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x89d87335 ath9k_cmn_update_txpow +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xa33def7e ath9k_cmn_spectral_init_debug +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xb48aed0f ath9k_cmn_beacon_config_sta +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xb63469a2 ath9k_cmn_init_channels_rates +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xbd6e1df5 ath9k_cmn_debug_phy_err +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xbe3f291e ath9k_cmn_spectral_deinit_debug +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xc43e1a39 ath9k_cmn_init_crypto +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xc4455200 ath9k_cmn_spectral_scan_config +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xc755c60f ath9k_cmn_process_rate +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xd2981357 ath9k_cmn_count_streams +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xee4a0d4d ath9k_cmn_reload_chainmask +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0215f8e3 ath9k_hw_init_global_settings +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x04055705 ath9k_hw_stop_dma_queue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0660ffee ath9k_hw_setrxabort +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x06af83bd ar9003_paprd_create_curve +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x08506802 ath_gen_timer_free +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x09e31ed0 ath9k_hw_disable_mib_counters +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0a88831d ath9k_hw_init_btcoex_hw +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0e2ab9f6 ath9k_hw_phy_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x13f789dd ath9k_hw_setpower +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x17eec4c6 ath9k_hw_setopmode +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x19b18017 ath9k_hw_abort_tx_dma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1a9b6065 ath9k_hw_putrxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1b176d12 ar9003_hw_bb_watchdog_check +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1be01ed8 ath9k_hw_disable_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x22f14a92 ar9003_paprd_setup_gain_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x290ad7d4 ath9k_hw_releasetxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x294e5956 ath9k_hw_enable_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x296e32a4 ath9k_hw_numtxpending +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2bde4dd1 ath9k_hw_gettsf32 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2c0d97bc ar9003_mci_cleanup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2c714b85 ath9k_hw_getchan_noise +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2ce8dde6 ar9003_hw_bb_watchdog_dbg_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2ebad9a2 ath9k_hw_gen_timer_start +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x35dd6300 ath9k_hw_startpcureceive +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x36cc0490 ath9k_hw_abortpcurecv +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x40cd3c4b ath9k_hw_kill_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x41c468a6 ath9k_hw_gettsf64 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x456a669a ath9k_hw_setrxfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x46c0a811 ath9k_hw_reset +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x48bc578b ar9003_mci_get_next_gpm_offset +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4a434357 ath9k_hw_btcoex_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4b9fca6e ath9k_hw_request_gpio +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4c6d0258 ath9k_hw_rxprocdesc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4de275a5 ath9k_hw_ani_monitor +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4e84430a ath9k_hw_check_nav +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x501b0dd1 ath9k_hw_btcoex_set_weight +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x5682d8a0 ath9k_hw_write_associd +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x583067c8 ath_gen_timer_alloc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x5ab12c43 ar9003_is_paprd_enabled +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x616670f3 ath9k_hw_addrxbuf_edma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6170039a ath9k_hw_btcoex_init_2wire +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x63e9fa03 ath9k_hw_btcoex_init_scheme +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x64cf6642 ath9k_hw_setup_statusring +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6983e415 ath9k_hw_beaconq_setup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x69955aed ath9k_hw_wow_enable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6dc37551 ath9k_hw_updatetxtriglevel +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6dec34e4 ath9k_hw_stopdmarecv +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6e779a42 ath9k_hw_set_sta_beacon_timers +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6f6f562a ath9k_hw_bstuck_nfcal +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x701164ed ath9k_hw_set_txq_props +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x72e8d9eb ath9k_hw_beaconinit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7348d87e ath9k_hw_wait +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x73df2793 ath9k_hw_wow_apply_pattern +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x749688bf ath9k_hw_get_txq_props +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x762a30c6 ath9k_hw_set_tx_filter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x77523309 ath9k_hw_process_rxdesc_edma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x78e864d0 ath9k_hw_computetxtime +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x79b92064 ar9003_mci_setup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x89165eae ath9k_hw_deinit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x891dfb1e ath9k_hw_settsf64 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8be18176 ath9k_hw_set_rx_bufsize +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8c829e92 ath9k_hw_getrxfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x904e2964 ath9k_hw_txstart +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x942d29e7 ath9k_hw_puttxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x946a18c9 ath9k_hw_set_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x954e9352 ar9003_paprd_init_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9ac13277 ath9k_hw_setantenna +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa79e1291 ath9k_hw_setuprxdesc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa8c80dff ath9k_hw_reset_calvalid +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa9375d3f ath9k_hw_cfg_output +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa9ac36b6 ath9k_hw_set_tsfadjust +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xaa786344 ar9003_paprd_enable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xaaddc679 ath9k_hw_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xac5002f5 ar9003_mci_send_wlan_channels +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xac54055d ath9k_hw_set_gpio +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xacaa55a0 ath9k_hw_intrpend +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xacd8f85e ath9k_hw_cfg_gpio_input +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb0ead0e9 ath9k_hw_btcoex_set_concur_txprio +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb25d0170 ath9k_hw_reset_tsf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb38c8941 ath9k_hw_getnf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb8cd4d35 ath9k_hw_wow_wakeup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc073cf4f ath9k_hw_btcoex_init_mci +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc2ed13bd ath_gen_timer_isr +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc50fb2e4 ath9k_hw_resettxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc8bdfa8b ath9k_hw_btcoex_init_3wire +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc96bb4f1 ath9k_hw_gpio_get +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xcd9e1ebe ath9k_hw_set_txpowerlimit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xcf5e07bd ath9k_hw_gettxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd0aa81bb ath9k_hw_check_alive +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd4d9bcf2 ath9k_hw_setuptxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd4fe75b0 ath9k_hw_gen_timer_stop +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd584a289 ar9003_mci_set_bt_version +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xdee75d7c ar9003_mci_state +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xdfecb589 ath9k_hw_name +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe26081bf ath9k_hw_btcoex_enable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe2b868d9 ath9k_hw_setmcastfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe38d0f7d ath9k_hw_btcoex_bt_stomp +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe6510221 ar9003_mci_send_message +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe87d6851 ath9k_hw_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe8aa42b6 ar9003_hw_disable_phy_restart +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf2a47915 ar9003_mci_get_interrupt +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xfabfc85a ar9003_paprd_is_done +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xfaee1efa ar9003_paprd_populate_single_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xfcfc8de5 ar9003_get_pll_sqsum_dvc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xffd02408 ath9k_hw_get_tsf_offset +EXPORT_SYMBOL drivers/net/wireless/atmel 0x1be6c98a atmel_open +EXPORT_SYMBOL drivers/net/wireless/atmel 0x7e0c3571 init_atmel_card +EXPORT_SYMBOL drivers/net/wireless/atmel 0xd4042e70 stop_atmel_card +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x042bc37f brcmu_pkt_buf_get_skb +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x3f2988a1 brcmu_dotrev_str +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x5e3bdc22 brcmu_pktq_mlen +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x5ea65c2f brcmu_pktq_pdeq_tail +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x6d0070b2 brcmu_pktq_mdeq +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x7e14294d brcmu_pktq_pflush +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x8e037386 brcmu_pktq_penq +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x95e6071d brcmu_pktq_init +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x9f4b5dcf brcmu_d11_attach +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xa0e10e26 brcmu_pktq_pdeq +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xb538bf43 brcmu_pkt_buf_free_skb +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xc9a2d7b5 brcmu_pktq_peek_tail +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xd261b8a6 brcmu_boardrev_str +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xd94dd03f brcmu_pktq_pdeq_match +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xddb7d718 brcmu_pktq_penq_head +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xe6ca849a brcmu_pktq_flush +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x0c8fc8dc prism2_update_comms_qual +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x1723ac32 hostap_set_multicast_list_queue +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x1e912a7d hostap_setup_dev +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x25ecfcb2 hostap_handle_sta_tx_exc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x32f6b387 hostap_info_process +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x4413039b hostap_remove_proc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x55acd76d hostap_set_encryption +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x56e26657 hostap_free_data +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x57910e19 hostap_check_sta_fw_version +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x6b7fb91a hostap_remove_interface +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x763ed775 hostap_80211_rx +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x7e76649a hostap_info_init +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x8891afbf hostap_set_antsel +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x902b550b hostap_init_ap_proc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x90395417 hostap_get_porttype +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x9f341a77 hostap_add_interface +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xa12ad27f hostap_dump_tx_header +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xb0c02868 hostap_set_hostapd +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xb2a945e0 hostap_dump_rx_header +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xb4b77c8b hostap_80211_get_hdrlen +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xbb939423 hostap_master_start_xmit +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xbe4d7aba hostap_80211_ops +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xd89f4bdf hostap_set_roaming +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xe34606c1 hostap_init_data +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xede52f53 hostap_set_string +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xf1e36878 hostap_set_hostapd_sta +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xf20df056 hostap_set_word +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xf5d3dcf0 hostap_init_proc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xfa38b115 hostap_set_auth_algs +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x0e4bcd75 libipw_channel_to_freq +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x17557ecf libipw_txb_free +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x21c29b30 libipw_get_channel_flags +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x3aaf37f4 libipw_get_channel +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x40c82d1f libipw_freq_to_channel +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x41019835 libipw_channel_to_index +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x5513ec5f libipw_set_geo +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x5c7f3564 alloc_libipw +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x5d312218 libipw_is_valid_channel +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x5dadbb6b libipw_wx_set_encodeext +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x8a2f1661 libipw_wx_get_scan +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x91a02db0 libipw_xmit +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xa48a60e1 libipw_rx +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xbfde690c libipw_rx_mgt +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xcea66814 libipw_networks_age +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xd189db19 libipw_wx_set_encode +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xe45458b2 libipw_wx_get_encodeext +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xea3f43ea libipw_change_mtu +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xed007bc1 libipw_wx_get_encode +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xf8b17291 libipw_get_geo +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xfe7ac3a1 free_libipw +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x073673b3 il_check_rxon_cmd +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x07483180 il_power_initialize +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x081c628b il_poll_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x08b998ee il_send_lq_cmd +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x0f2c7896 il_setup_watchdog +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x10b8560c il_dbgfs_register +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x14231b35 il_setup_rx_scan_handlers +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x1442742d il_init_scan_params +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x152b88d7 il_tx_cmd_complete +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x15f801c1 il_send_bt_config +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x16783033 il_pm_ops +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x1944107a il_get_channel_info +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x1a406e5e il_write_targ_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x1b705170 il_tx_queue_unmap +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x1c947842 il_cmd_queue_free +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x1cc20107 il_leds_exit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x21227833 il_power_update_mode +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x2844b60d il_update_stats +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x29057e0d il_apm_stop +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x291c2e81 il_send_cmd_sync +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x2ac9d4c3 il_eeprom_query_addr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x2f330cde il_apm_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x30965453 il_txq_update_write_ptr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x3a2ec531 il_get_passive_dwell_time +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x3a7c28a9 il_is_ht40_tx_allowed +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x3d842dd3 il_rx_queue_update_write_ptr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x3e15debd il_clear_ucode_stations +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x3e4a8784 il_set_tx_power +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x43598755 il_send_stats_request +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x443b406f il_dbgfs_unregister +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4a479289 il_send_cmd +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4aa39103 il_get_cmd_string +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4ce6bd1e _il_poll_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x5269f548 il_hdl_pm_debug_stats +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x52b7d044 il_hdl_error +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x564c6740 il_debug_level +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x596c4908 il_irq_handle_error +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x5bf5ffe0 il_mac_config +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x5cac1f0b il_scan_cancel +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x5e29f9f7 il_eeprom_free +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x5fd3428f il_mac_add_interface +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x66a99c6f il_wr_prph +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x68b616b4 il_tx_cmd_protection +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x6ae238c6 il_set_rxon_channel +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x6b2f2846 il_set_decrypted_flag +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x6b82dd0a il_send_cmd_pdu +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x6f970bb3 il_mac_hw_scan +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x7be02a54 il_connection_init_rx_config +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x8224d9c8 il_set_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x84aea8b8 il_mac_reset_tsf +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x86381e2f il_rd_prph +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x8a0c6b29 il_cancel_scan_deferred_work +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x8ac01fb0 il_set_rate +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x906cbcfc il_force_reset +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x90c611e8 il_free_geos +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x911e2111 il_alloc_txq_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x99e6f329 il_rx_queue_alloc +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x9b469d9d il_restore_stations +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x9c1fda0b il_clear_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x9c4c9f0e il_usecs_to_beacons +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x9def9994 il_eeprom_query16 +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x9f878197 il_init_geos +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa19a16d0 il_tx_queue_reset +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa3c94532 il_add_beacon_time +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa9e309ef il_get_single_channel_number +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xab79614e il_setup_scan_deferred_work +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xac1b3c55 il_send_add_sta +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xac31f71a il_hdl_csa +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xaf772c87 il_leds_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb7b6d612 il_scan_cancel_timeout +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb7bd33ff il_isr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb8a0f4fe il_hdl_pm_sleep +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb96f6535 il_mac_sta_remove +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xbceafbf7 il_fill_probe_req +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xbd1bd319 il_set_flags_for_band +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xbe38c275 _il_apm_stop +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xbf62c04b il_mac_flush +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc008c863 il_init_channel_map +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc39cf12c il_bg_watchdog +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc3be2b91 il_get_active_dwell_time +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc5c84714 il_mac_change_interface +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc6a5e701 il_full_rxon_required +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xcb125b0e il_free_txq_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xcb4e884f il_send_cmd_pdu_async +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xcc80c7a7 il_mac_conf_tx +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xcdd53a94 il_mac_remove_interface +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xce576d58 il_read_targ_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xcee0df9a il_add_station_common +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd4df37fa il_mac_bss_info_changed +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd530e6a7 il_tx_queue_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd8c4d20a il_get_lowest_plcp +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe435493a il_queue_space +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe9ff6b50 il_hdl_spectrum_measurement +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xec64819a il_eeprom_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xecbe2417 il_chswitch_done +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xeeb23290 il_rx_queue_space +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf1e7aea9 il_get_free_ucode_key_idx +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf31fe9c1 il_set_rxon_hwcrypto +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf501278b il_bcast_addr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf5796421 il_tx_queue_free +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf71b4e6f il_cmd_queue_unmap +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf77a9243 il_send_rxon_timing +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf77ac513 il_set_rxon_ht +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xfabe1f4d il_free_channel_map +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x2f7b7e55 __tracepoint_iwlwifi_dev_ucode_wrap_event +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x3b9d00d6 __tracepoint_iwlwifi_dev_ioread32 +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x779dd6f5 __tracepoint_iwlwifi_dev_iowrite32 +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x85c1bb84 __tracepoint_iwlwifi_dev_iowrite8 +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x963a6f8a __tracepoint_iwlwifi_dev_ucode_error +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0xb8f7026f __tracepoint_iwlwifi_dev_ucode_cont_event +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0xf9ec6bdd __tracepoint_iwlwifi_dev_ucode_event +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x18e520f1 orinoco_if_del +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x215b728d orinoco_open +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x21b8633d orinoco_down +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x4970df87 __orinoco_ev_rx +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x510bdf20 orinoco_stop +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x51f03195 orinoco_up +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x578aa699 free_orinocodev +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x5dea5bf1 hermes_struct_init +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x6b51259c orinoco_init +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x707210c5 orinoco_set_multicast_list +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x8ef582a9 orinoco_change_mtu +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xb07d7bcc alloc_orinocodev +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xd48287cb orinoco_if_add +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xdd5ddc2d __orinoco_ev_info +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xdeb4c94a orinoco_tx_timeout +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xe6d46bd1 orinoco_process_xmit_skb +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xf0286320 orinoco_get_stats +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xffe27bca orinoco_interrupt +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/btcoexist/btcoexist 0xdb5c225d rtl_btc_get_ops_pointer +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x00f95005 rtl92c_dm_init +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x02fdfa1e rtl92c_download_fw +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x05401e21 rtl92c_phy_rf_config +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x06d61af8 rtl92c_phy_sw_chnl +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x13552142 _rtl92c_phy_fw_rf_serial_write +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x182f7e2a _rtl92c_phy_rf_serial_read +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x211946f5 rtl92c_firmware_selfreset +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x321ad92c _rtl92c_phy_dbm_to_txpwr_idx +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x3ffdf6c7 rtl92c_phy_set_io +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x44155cf3 rtl92c_dm_check_txpower_tracking +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x472007f5 rtl92c_bt_rssi_state_change +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x48cb2f92 rtl92c_phy_set_txpower_level +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x49619328 rtl92c_fill_h2c_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x52f8fc77 _rtl92c_phy_rf_serial_write +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x6401cde5 rtl92c_phy_set_bb_reg +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x6ae8978e _rtl92c_phy_txpwr_idx_to_dbm +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x6f92298a rtl92c_phy_query_bb_reg +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x6fef0f6a rtl92c_dm_bt_coexist +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x7a084c54 rtl92c_phy_ap_calibrate +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x7c834eac _rtl92c_phy_set_rf_sleep +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x864a22be rtl8192_phy_check_is_legal_rfpath +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x8c3aa40b rtl92c_phy_set_io_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x8c60756b rtl92ce_phy_set_rf_on +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x92b24f95 rtl92c_set_fw_pwrmode_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x92e250fe rtl92c_dm_init_rate_adaptive_mask +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xa3bb89ca rtl92c_phy_lc_calibrate +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xa8608033 rtl92c_phy_set_bw_mode +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xb0644ca8 rtl92c_dm_watchdog +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xb3314d48 _rtl92c_phy_calculate_bit_shift +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xbee47c8b _rtl92c_phy_fw_rf_serial_read +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xc056e02c rtl92c_dm_rf_saving +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xcaf23991 _rtl92c_phy_bb8192c_config_parafile +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xcfeb1941 rtl92c_dm_write_dig +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xd1e86e77 rtl92c_dm_init_edca_turbo +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xd237f312 rtl92c_phy_update_txpower_dbm +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xdab9a603 rtl92c_set_fw_rsvdpagepkt +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xdc8ffa8f _rtl92c_store_pwrIndex_diffrate_offset +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xdf52441f rtl92c_phy_sw_chnl_callback +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xe05ab659 _rtl92c_phy_init_bb_rf_register_definition +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xe1b88adf rtl92c_phy_iq_calibrate +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xef1d0d02 rtl92c_set_fw_joinbss_report_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xf47d2c43 rtl92c_phy_set_rfpath_switch +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x6fb9f06f rtl8723_fill_dummy +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_pci 0x17187f60 rtl_pci_probe +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_pci 0x3cf5c3eb rtl_pci_resume +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_pci 0x8344ba88 rtl_pci_suspend +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_pci 0xb65cb050 rtl_pci_disconnect +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_usb 0x156fbb70 rtl_usb_probe +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_usb 0x244c6860 rtl_usb_disconnect +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_usb 0x54661ea2 rtl_usb_suspend +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_usb 0xa05d23a8 rtl_usb_resume +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x207fbb70 rtl_evm_db_to_percentage +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x25888b59 rtl_signal_scale_mapping +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x2bb2b8c5 rtl_ps_set_rf_state +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x35a4ee76 rtl_cmd_send_packet +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x36e3d668 rtl_wowlan_fw_cb +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x402396a2 rtl_dm_diginit +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x406fe2d0 rtl_cam_empty_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x4618a466 rtl_cam_add_one_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x5286e07b rtlwifi_rate_mapping +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x5345b48f rtl_cam_get_free_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x54dd0ff9 rtl_ps_disable_nic +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x5ec1f58c efuse_one_byte_read +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x636fe436 rtl_rfreg_delay +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x6577073d rtl_send_smps_action +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x6aa40ee6 rtl_cam_delete_one_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x7868a93b rtl_get_tcb_desc +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x78db7bda rtl_ps_enable_nic +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x79188a02 rtl_query_rxpwrpercentage +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x82a62750 rtl_hal_pwrseqcmdparsing +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x82a748a0 rtl_process_phyinfo +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x8f5cc490 rtl_cam_mark_invalid +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x980848e2 rtl_addr_delay +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x9c1d9428 efuse_read_1byte +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xa6fe7913 rtl_lps_leave +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xc644dd01 rtl_init_rfkill +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xd091a3c8 rtl_fw_cb +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xd1f58354 rtl_lps_enter +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xd5210ee9 efuse_shadow_read +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xe01cb810 rtl_phy_scan_operation_backup +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xf49c85b0 rtl_cam_reset_all_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xf7200368 rtl_efuse_shadow_map_update +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xfb2b0cce rtl_bb_delay +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xfc2b9549 rtl_cam_del_entry +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0x2424ec8c wlcore_calc_packet_alignment +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0x5c788b32 wl1271_free_tx_id +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0x634b00f1 wl12xx_is_dummy_packet +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0x6c27e206 wlcore_tx_complete +EXPORT_SYMBOL drivers/nfc/microread/microread 0x19fd90c9 microread_remove +EXPORT_SYMBOL drivers/nfc/microread/microread 0xc60aa00b microread_probe +EXPORT_SYMBOL drivers/nfc/nxp-nci/nxp-nci 0x1c5b6d4b nxp_nci_remove +EXPORT_SYMBOL drivers/nfc/nxp-nci/nxp-nci 0x3ccb0682 nxp_nci_probe +EXPORT_SYMBOL drivers/nfc/nxp-nci/nxp-nci 0xe23e527b nxp_nci_fw_recv_frame +EXPORT_SYMBOL drivers/nfc/pn544/pn544 0xbc83a963 pn544_hci_probe +EXPORT_SYMBOL drivers/nfc/pn544/pn544 0xd201e061 pn544_hci_remove +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x0320e658 ndlc_open +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x2d6f47c1 st_nci_se_init +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x51f0571f st_nci_se_io +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x79c6d1c8 ndlc_send +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x919d9cf9 ndlc_close +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x9343bac6 ndlc_remove +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x9a8895c5 ndlc_probe +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0xbfa6bd7b ndlc_recv +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0xd87b329e st_nci_se_deinit +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x27149454 st21nfca_im_send_atr_req +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x28899db6 st21nfca_hci_enable_se +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x2b38c22b st21nfca_dep_event_received +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x30616cba st21nfca_se_deinit +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x4a403a65 st21nfca_dep_init +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x4bea47a8 st21nfca_hci_probe +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x52a64aff st21nfca_tm_send_dep_res +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x66d6b023 st21nfca_hci_remove +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x77306d0f st21nfca_dep_deinit +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xa4711fbb st21nfca_hci_se_io +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xc1969ede st21nfca_hci_disable_se +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xe1dc6a27 st21nfca_im_send_dep_req +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xe4200986 st21nfca_hci_discover_se +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xe781c6ed st21nfca_se_init +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xfb15ddb8 st21nfca_apdu_reader_event_received +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xfff363ad st21nfca_connectivity_event_received +EXPORT_SYMBOL drivers/ntb/ntb 0x276ca68e ntb_clear_ctx +EXPORT_SYMBOL drivers/ntb/ntb 0x7fab64bb ntb_unregister_device +EXPORT_SYMBOL drivers/ntb/ntb 0x84468ce3 __ntb_register_client +EXPORT_SYMBOL drivers/ntb/ntb 0x981f298e ntb_db_event +EXPORT_SYMBOL drivers/ntb/ntb 0x9f45ebde ntb_unregister_client +EXPORT_SYMBOL drivers/ntb/ntb 0xc25e3ccc ntb_register_device +EXPORT_SYMBOL drivers/ntb/ntb 0xc834a1e3 ntb_set_ctx +EXPORT_SYMBOL drivers/ntb/ntb 0xf1f127ad ntb_link_event +EXPORT_SYMBOL drivers/nvdimm/nd_btt 0x2a6498b8 nvdimm_namespace_attach_btt +EXPORT_SYMBOL drivers/nvdimm/nd_btt 0x52d13ab0 nvdimm_namespace_detach_btt +EXPORT_SYMBOL drivers/parport/parport 0x0a83cae0 parport_ieee1284_ecp_write_data +EXPORT_SYMBOL drivers/parport/parport 0x21247c5a parport_wait_peripheral +EXPORT_SYMBOL drivers/parport/parport 0x31d32bad parport_del_port +EXPORT_SYMBOL drivers/parport/parport 0x34d7d8cc parport_ieee1284_epp_read_data +EXPORT_SYMBOL drivers/parport/parport 0x3697ebff parport_ieee1284_epp_write_addr +EXPORT_SYMBOL drivers/parport/parport 0x3d11fd61 parport_read +EXPORT_SYMBOL drivers/parport/parport 0x3e86070b parport_write +EXPORT_SYMBOL drivers/parport/parport 0x4143bb4d parport_ieee1284_read_byte +EXPORT_SYMBOL drivers/parport/parport 0x48775674 parport_negotiate +EXPORT_SYMBOL drivers/parport/parport 0x48fc3000 parport_register_dev_model +EXPORT_SYMBOL drivers/parport/parport 0x4d2a941b parport_ieee1284_interrupt +EXPORT_SYMBOL drivers/parport/parport 0x5b3d56a8 parport_claim_or_block +EXPORT_SYMBOL drivers/parport/parport 0x5e3a3912 parport_irq_handler +EXPORT_SYMBOL drivers/parport/parport 0x60d2f367 parport_ieee1284_read_nibble +EXPORT_SYMBOL drivers/parport/parport 0x64ff825d parport_register_device +EXPORT_SYMBOL drivers/parport/parport 0x66663c87 parport_register_port +EXPORT_SYMBOL drivers/parport/parport 0x6dde2549 parport_put_port +EXPORT_SYMBOL drivers/parport/parport 0x6e64a331 parport_release +EXPORT_SYMBOL drivers/parport/parport 0x76fcd35b __parport_register_driver +EXPORT_SYMBOL drivers/parport/parport 0x86b6120e parport_ieee1284_ecp_read_data +EXPORT_SYMBOL drivers/parport/parport 0x9adb25d8 parport_announce_port +EXPORT_SYMBOL drivers/parport/parport 0xba2daeaf parport_find_number +EXPORT_SYMBOL drivers/parport/parport 0xbca96735 parport_ieee1284_epp_read_addr +EXPORT_SYMBOL drivers/parport/parport 0xc512383e parport_find_base +EXPORT_SYMBOL drivers/parport/parport 0xc5858075 parport_set_timeout +EXPORT_SYMBOL drivers/parport/parport 0xcc152d99 parport_unregister_driver +EXPORT_SYMBOL drivers/parport/parport 0xcd75e0d1 parport_remove_port +EXPORT_SYMBOL drivers/parport/parport 0xce4f8063 parport_ieee1284_ecp_write_addr +EXPORT_SYMBOL drivers/parport/parport 0xd085de34 parport_get_port +EXPORT_SYMBOL drivers/parport/parport 0xd4fc9286 parport_claim +EXPORT_SYMBOL drivers/parport/parport 0xd80973fc parport_wait_event +EXPORT_SYMBOL drivers/parport/parport 0xddb8b3ac parport_ieee1284_write_compat +EXPORT_SYMBOL drivers/parport/parport 0xee9b532d parport_unregister_device +EXPORT_SYMBOL drivers/parport/parport 0xf25ba17c parport_ieee1284_epp_write_data +EXPORT_SYMBOL drivers/parport/parport_pc 0x25e3b071 parport_pc_unregister_port +EXPORT_SYMBOL drivers/parport/parport_pc 0x89be6f6a parport_pc_probe_port +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x003c7bcc pcmcia_read_config_byte +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x0f27fc89 pcmcia_loop_config +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x20cb7401 pcmcia_write_config_byte +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x2a55fea0 pcmcia_request_io +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x37690833 pcmcia_release_window +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x4837cabe pcmcia_request_window +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x4fd7f2a3 pcmcia_fixup_vpp +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x56cb1c38 pcmcia_enable_device +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x70cf228b pcmcia_map_mem_page +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x7274dd70 pcmcia_request_irq +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x72fef8cd pcmcia_loop_tuple +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x742f5665 pcmcia_parse_tuple +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x8ff7997f pcmcia_dev_present +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x94ab5934 pcmcia_unregister_driver +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xa7f453a9 pcmcia_get_mac_from_cis +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xa851c74d pcmcia_register_driver +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xbe68c8db pcmcia_fixup_iowidth +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xd5702a20 pcmcia_disable_device +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xd5bb1c55 __pcmcia_request_exclusive_irq +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xdd61d799 pcmcia_get_tuple +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x13861a8b pcmcia_register_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x212db8d2 pcmcia_socket_list +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x2283676c pcmcia_unregister_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x3422d723 pcmcia_parse_uevents +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x46b23034 pcmcia_put_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x554a65fa pcmcia_parse_events +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x95dcf4ad pcmcia_get_socket_by_nr +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xac57a065 pcmcia_socket_list_rwsem +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xc3176872 pccard_register_pcmcia +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xcf97f3bd dead_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xd84e0ece pcmcia_socket_class +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xeb3554b2 pcmcia_get_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xef9a35f5 pcmcia_reset_card +EXPORT_SYMBOL drivers/pcmcia/pcmcia_rsrc 0x5cc078f7 pccard_nonstatic_ops +EXPORT_SYMBOL drivers/pcmcia/pcmcia_rsrc 0xaef4b028 pccard_static_ops +EXPORT_SYMBOL drivers/pps/pps_core 0x0514d756 pps_register_source +EXPORT_SYMBOL drivers/pps/pps_core 0x1adeb465 pps_unregister_source +EXPORT_SYMBOL drivers/pps/pps_core 0x1cd7ffe0 pps_lookup_dev +EXPORT_SYMBOL drivers/pps/pps_core 0xe197f212 pps_event +EXPORT_SYMBOL drivers/ptp/ptp 0x0f7c8242 ptp_clock_register +EXPORT_SYMBOL drivers/ptp/ptp 0x4b2558f0 ptp_clock_index +EXPORT_SYMBOL drivers/ptp/ptp 0x58d9b255 ptp_clock_unregister +EXPORT_SYMBOL drivers/ptp/ptp 0x6472314e ptp_find_pin +EXPORT_SYMBOL drivers/ptp/ptp 0xd86c3d39 ptp_clock_event +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x0ad04158 rproc_shutdown +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x1b1afa1a rproc_get_by_phandle +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x7d43b68a rproc_add +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0xa658aabb rproc_da_to_va +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0xb6e55d7b rproc_put +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0xc65548db rproc_del +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0xe2fdf07b rproc_vq_interrupt +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0xe9162798 rproc_boot +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0xea802487 rproc_report_crash +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0xf577a941 rproc_alloc +EXPORT_SYMBOL drivers/rtc/rtc-ds1685 0xc71ef552 ds1685_rtc_poweroff +EXPORT_SYMBOL drivers/scsi/esp_scsi 0x1242ec5d scsi_esp_unregister +EXPORT_SYMBOL drivers/scsi/esp_scsi 0x4a29ab38 scsi_esp_intr +EXPORT_SYMBOL drivers/scsi/esp_scsi 0x81334414 scsi_esp_template +EXPORT_SYMBOL drivers/scsi/esp_scsi 0x850e0cda scsi_esp_register +EXPORT_SYMBOL drivers/scsi/esp_scsi 0xd3142a03 scsi_esp_cmd +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x1682e0f5 fcoe_ctlr_set_fip_mode +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x2665bde6 fcoe_ctlr_destroy +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x3311ff08 fcoe_ctlr_els_send +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x4d41f8b2 fcoe_ctlr_destroy_store +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x5431e052 fcoe_transport_detach +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x5f52acbc fcoe_transport_attach +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x9b19af1c fcoe_ctlr_recv +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xd3966f12 fcoe_ctlr_link_down +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xeb1b53b7 fcoe_ctlr_link_up +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xedd5884f fcoe_fcf_get_selected +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xef38efe3 fcoe_ctlr_init +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xfafbde04 fcoe_ctlr_recv_flogi +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x05e2d771 fc_exch_mgr_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x07c8bd8f fc_frame_crc_check +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x10a709fe fc_get_host_port_state +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x21f70306 fc_lport_iterate +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x2279f141 fc_exch_mgr_list_clone +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x22b90986 fc_exch_mgr_del +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x2b00a751 fc_frame_alloc_fill +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x317b7ecb fc_eh_abort +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x334163c8 fc_exch_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x3591a8fe fc_lport_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x36e5fbaf fc_cpu_mask +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x37129dba fc_linkup +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x39354bc9 fc_exch_mgr_free +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x3e7e67d4 _fc_frame_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x4206116a fc_lport_bsg_request +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x48c59890 fc_slave_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x4c516249 fc_queuecommand +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x53f5460f fc_fc4_register_provider +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x5bb30ee3 fc_get_host_speed +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x61196947 fc_get_host_stats +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x61bdf30e fc_exch_mgr_add +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x658e8b31 fc_lport_logo_resp +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x6717f220 fc_lport_flogi_resp +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x67186498 fc_disc_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x6e300054 fc_fcp_destroy +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x6e582c5a fc_set_rport_loss_tmo +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x777e0089 fc_exch_update_stats +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x80665475 fc_linkdown +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x819f57e8 fc_lport_notifier_head +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x86133460 fc_lport_destroy +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x861c9810 fc_fc4_deregister_provider +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x8bbb9337 fc_fabric_login +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x8c6d3dbc fc_fill_hdr +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x915a32d2 fc_lport_set_local_id +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x941efcfc fc_lport_config +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x973a5b2e fc_fill_reply_hdr +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x9ac5267d fc_fcp_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x9b233924 fc_vport_setlink +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x9d37a90f fc_rport_terminate_io +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xa8e73291 fc_elsct_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xaf062bd3 fc_exch_recv +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xb085e532 fc_vport_id_lookup +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xb8c7f59c fc_fabric_logoff +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xc5c2a460 fc_eh_host_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xc7e6309c fc_exch_mgr_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xcc1fac42 libfc_vport_create +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xcf0de9aa fc_set_mfs +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xd876c8a7 fc_eh_device_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xd8d1a861 fc_elsct_send +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xe2c926ab fc_lport_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xecf7cb9a fc_disc_config +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xffaee3d1 fc_rport_init +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x3d1fc142 sas_prep_resume_ha +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x78afd757 sas_resume_ha +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x8a87e724 try_test_sas_gpio_gp_bit +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0xa7156038 sas_wait_eh +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0xd954bc02 sas_suspend_ha +EXPORT_SYMBOL drivers/scsi/megaraid/megaraid_mm 0x2250c66e mraid_mm_adapter_app_handle +EXPORT_SYMBOL drivers/scsi/megaraid/megaraid_mm 0x512c956d mraid_mm_unregister_adp +EXPORT_SYMBOL drivers/scsi/megaraid/megaraid_mm 0xeb6caaf7 mraid_mm_register_adp +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x0608c813 osd_req_write_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x06cfb985 osd_execute_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x0c17edb1 osd_sec_init_nosec_doall_caps +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x15d34e5c osd_dev_fini +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x1d5beb68 osd_req_flush_obsd +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x2a267a2d osd_req_create_partition +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x2d602e7d osd_req_flush_object +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x2fae874e osd_req_list_partition_objects +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x4b6d7f88 osd_req_read_sg +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x57865def osd_req_flush_partition +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x5cb14d00 osd_req_add_get_attr_page +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x5d3ef869 osd_req_read_sg_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x68c6f201 osd_req_add_set_attr_list +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x6b91c30d osd_req_decode_get_attr_list +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x7213bfc7 osd_req_list_partition_collections +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x77e88eed osd_req_list_collection_objects +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x7d5164d6 osd_req_write_sg +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x85ea2ad9 osd_req_remove_object +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x870b53da osd_req_decode_sense_full +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x8ab9b4ba osd_req_read +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xa088476b osd_req_flush_collection +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xa1cd05ec osd_end_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xa408c8bc osd_req_format +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xa9efe6e5 osd_finalize_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xb0009a33 osd_req_read_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xb5d3a5ce osd_req_list_dev_partitions +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xb91dfcf6 osd_execute_request_async +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xb9d5ce15 osd_req_remove_partition +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xc17f671c osd_auto_detect_ver +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xc87dad3e osd_req_add_get_attr_list +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xd1dbb881 osd_req_write_sg_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xdb673a65 osd_req_set_attributes +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xe584264c osd_start_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xe78c458d osd_dev_init +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xeebf3826 osd_req_write +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xf4328e0a osd_req_create_object +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xfd7f82f0 osd_req_get_attributes +EXPORT_SYMBOL drivers/scsi/osd/osd 0x0ff83a98 osduld_device_same +EXPORT_SYMBOL drivers/scsi/osd/osd 0x2eee6de5 osduld_put_device +EXPORT_SYMBOL drivers/scsi/osd/osd 0x450e50db osduld_path_lookup +EXPORT_SYMBOL drivers/scsi/osd/osd 0x5fc48609 osduld_unregister_test +EXPORT_SYMBOL drivers/scsi/osd/osd 0x6da13332 osduld_device_info +EXPORT_SYMBOL drivers/scsi/osd/osd 0xbc157420 osduld_info_lookup +EXPORT_SYMBOL drivers/scsi/osd/osd 0xbf21d6da osduld_register_test +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x1bd348ca qlt_lport_deregister +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x272fe0e8 qlt_free_cmd +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x52847f33 qlt_abort_cmd +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x5628b73c qlt_free_mcmd +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x5d4ff58f qlt_stop_phase2 +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x6c127248 qlt_lport_register +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x6d37c3e9 qlt_rdy_to_xfer +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x6de5798a qlt_xmit_tm_rsp +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x7df46d92 qlt_xmit_response +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x8d399ef7 qlt_enable_vha +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x925077be qlt_unreg_sess +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xdaff095e qlt_stop_phase1 +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x1a646547 qlogicfas408_abort +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x1f55cd70 qlogicfas408_ihandl +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x3fd8cd71 qlogicfas408_detect +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x750768af qlogicfas408_info +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0xbe41b0d6 qlogicfas408_bus_reset +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0xe49b17c8 qlogicfas408_disable_ints +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0xe76b3b20 qlogicfas408_get_chip_type +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0xeaa70a54 qlogicfas408_queuecommand +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0xf2b95199 qlogicfas408_setup +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0xfc0239e3 qlogicfas408_biosparam +EXPORT_SYMBOL drivers/scsi/raid_class 0x5d454f0e raid_class_attach +EXPORT_SYMBOL drivers/scsi/raid_class 0x9c706a9e raid_component_add +EXPORT_SYMBOL drivers/scsi/raid_class 0xa007844f raid_class_release +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x0bb1d444 fc_host_post_event +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x23d6d30a fc_host_post_vendor_event +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x2a1aad59 fc_remote_port_rolechg +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x3a24c989 fc_remote_port_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x44d74f84 fc_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x4d15a9dc fc_remove_host +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x536231c9 scsi_is_fc_vport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x653af788 fc_remote_port_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x7954b1ea fc_get_event_number +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x8069d2a1 fc_vport_create +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x9ac480ae fc_block_scsi_eh +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xbcce4363 fc_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xc902b1eb fc_vport_terminate +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xd4c2bf12 scsi_is_fc_rport +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x02631fd7 sas_phy_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x071da978 sas_port_get_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x0a801967 sas_port_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x0e78c0cf sas_port_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x0f1707f5 sas_end_device_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x11b2d779 sas_phy_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x166f23a9 sas_expander_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x23149281 scsi_is_sas_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x2a15a03e sas_remove_children +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x37688768 sas_read_port_mode_page +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x4591fdf1 sas_rphy_remove +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x46c991a2 scsi_is_sas_port +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x56058c36 sas_rphy_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x5d9741b8 sas_remove_host +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x6314f4c2 sas_port_add_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x642f9080 sas_port_mark_backlink +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x75b6e514 sas_phy_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x763ed96e sas_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x77775faf sas_phy_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x7911e8f7 sas_rphy_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x818fb6ca sas_rphy_unlink +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x8793d792 sas_port_delete_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xa10de5f3 sas_port_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xa55d54be sas_port_alloc_num +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xa9bfebd0 sas_port_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xd5b5734c sas_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xf8f13eca scsi_is_sas_rphy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xfa0e9445 sas_rphy_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x3686ea09 spi_print_msg +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x44cd3a4b spi_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0xad55143c spi_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0xcb5316c2 spi_dv_device +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0xde6588ec spi_display_xfer_agreement +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0xfe288817 spi_schedule_dv_device +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0x2ba71c0f ufshcd_runtime_suspend +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0x4f01f3c5 ufshcd_runtime_idle +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0x572997c6 ufshcd_system_resume +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0x60cddb17 ufshcd_runtime_resume +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0x6a879a66 ufshcd_alloc_host +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0xda441a01 ufshcd_system_suspend +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0xf0ac047a ufshcd_shutdown +EXPORT_SYMBOL drivers/ssb/ssb 0x030b7ebb ssb_pcihost_register +EXPORT_SYMBOL drivers/ssb/ssb 0x0394fcb1 ssb_bus_sdiobus_register +EXPORT_SYMBOL drivers/ssb/ssb 0x0b816198 __ssb_driver_register +EXPORT_SYMBOL drivers/ssb/ssb 0x107064ea ssb_chipco_gpio_control +EXPORT_SYMBOL drivers/ssb/ssb 0x12b32415 ssb_commit_settings +EXPORT_SYMBOL drivers/ssb/ssb 0x45346a33 ssb_bus_powerup +EXPORT_SYMBOL drivers/ssb/ssb 0x48c52992 ssb_clockspeed +EXPORT_SYMBOL drivers/ssb/ssb 0x581d6fd6 ssb_bus_may_powerdown +EXPORT_SYMBOL drivers/ssb/ssb 0x7a3c8b76 ssb_set_devtypedata +EXPORT_SYMBOL drivers/ssb/ssb 0x94c5bc80 ssb_device_is_enabled +EXPORT_SYMBOL drivers/ssb/ssb 0x9dcd5bbe ssb_pmu_set_ldo_voltage +EXPORT_SYMBOL drivers/ssb/ssb 0xaa74b949 ssb_bus_unregister +EXPORT_SYMBOL drivers/ssb/ssb 0xb753b652 ssb_pmu_set_ldo_paref +EXPORT_SYMBOL drivers/ssb/ssb 0xba93543b ssb_bus_suspend +EXPORT_SYMBOL drivers/ssb/ssb 0xc0512e0f ssb_admatch_base +EXPORT_SYMBOL drivers/ssb/ssb 0xc2d5acb5 ssb_bus_pcibus_register +EXPORT_SYMBOL drivers/ssb/ssb 0xccdc5f07 ssb_bus_resume +EXPORT_SYMBOL drivers/ssb/ssb 0xd481192b ssb_admatch_size +EXPORT_SYMBOL drivers/ssb/ssb 0xdd143f40 ssb_pcicore_dev_irqvecs_enable +EXPORT_SYMBOL drivers/ssb/ssb 0xe4a7d885 ssb_driver_unregister +EXPORT_SYMBOL drivers/ssb/ssb 0xe8f7a414 ssb_device_disable +EXPORT_SYMBOL drivers/ssb/ssb 0xf046659b ssb_dma_translation +EXPORT_SYMBOL drivers/ssb/ssb 0xfc5c6a74 ssb_device_enable +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x032002df fbtft_write_reg16_bus16 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x0dc81467 fbtft_init_display +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x0e1f57b7 fbtft_register_framebuffer +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x27c0fd8f fbtft_write_vmem16_bus9 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x309cc1f4 fbtft_write_reg16_bus8 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x386939d1 fbtft_probe_common +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x391d6ea9 fbtft_read_spi +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x52bf415a fbtft_write_gpio16_wr_latched +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x666008e0 fbtft_write_vmem16_bus16 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x6b09f0c3 fbtft_write_spi_emulate_9 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x6e0ac820 fbtft_dbg_hex +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x79019fd8 fbtft_write_vmem8_bus8 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x79484f14 fbtft_framebuffer_release +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x8e5765fd fbtft_write_gpio16_wr +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x9334c181 fbtft_register_backlight +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x95feedaa fbtft_remove_common +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x9692010c fbtft_write_vmem16_bus8 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xa19b9d17 fbtft_write_spi +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xae98ac80 fbtft_unregister_backlight +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xc1b3778a fbtft_write_gpio8_wr +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xce0b2e7e fbtft_unregister_framebuffer +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xe643bbf9 fbtft_write_reg8_bus8 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xf711c6d8 fbtft_write_reg8_bus9 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xf91b7f58 fbtft_framebuffer_alloc +EXPORT_SYMBOL drivers/staging/fwserial/firewire-serial 0x9125233d fwtty_port_put +EXPORT_SYMBOL drivers/staging/fwserial/firewire-serial 0x9ca27a4c fwtty_port_get +EXPORT_SYMBOL drivers/staging/iio/addac/adt7316 0x7d24cab1 adt7316_probe +EXPORT_SYMBOL drivers/staging/iio/magnetometer/hmc5843_core 0x0bbce63e hmc5843_common_probe +EXPORT_SYMBOL drivers/staging/iio/magnetometer/hmc5843_core 0x7c9b7858 hmc5843_common_suspend +EXPORT_SYMBOL drivers/staging/iio/magnetometer/hmc5843_core 0xcb4cac55 hmc5843_common_resume +EXPORT_SYMBOL drivers/staging/iio/magnetometer/hmc5843_core 0xd038272e hmc5843_common_remove +EXPORT_SYMBOL drivers/staging/iio/meter/ade7854 0x052e1198 ade7854_remove +EXPORT_SYMBOL drivers/staging/iio/meter/ade7854 0x680d526e ade7854_probe +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x0038fc36 lnet_net2ni +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x10e634ca lnet_sock_listen +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x1366b7ac LNetSetLazyPortal +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x16108a12 lnet_finalize +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x19670622 LNetNIInit +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x1b191752 lnet_msgtyp2str +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x1ea7beec lnet_sock_write +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x1ee5f15e lnet_ipif_query +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x1fe16fd5 LNetGet +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x204b8151 lnet_counters_reset +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x2aa9953d lnet_cpt_of_nid +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x2ac93e90 lnet_connect_console_error +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x33202a6c LNetGetId +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x33fccbc4 lnet_register_lnd +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x360376d0 lnet_sock_setbuf +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x3c779ee0 LNetPut +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x3c948c05 lnet_create_reply_msg +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x3f4f5b46 LNetNIFini +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x4195e79b lnet_notify +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x473ad33b LNetDist +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x49993ea3 lnet_extract_iov +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x52b7ec53 lnet_set_reply_msg_len +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x570b6bec lnet_kiov_nob +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x57f10bfc lnet_extract_kiov +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x58a1ca89 LNetMDUnlink +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x5fee352c lnet_acceptor_timeout +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x61f784b2 LNetClearLazyPortal +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x64cdea3a LNetCtl +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x66d449b1 lnet_ipif_enumerate +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x6f7be171 LNetEQGet +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x71d11615 lnet_parse +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x722c76e5 LNetMDAttach +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x7d59a7fe LNetMEInsert +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x7d6b2b59 lnet_copy_iov2kiov +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x854ab844 LNetEQWait +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x9a94fe2c lnet_connect +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x9b9ebbad lnet_copy_kiov2kiov +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x9de986d3 LNetEQAlloc +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xa3c30ebb lnet_unregister_lnd +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xa56de08d lnet_ipif_free_enumeration +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xaa414970 LNetMEUnlink +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xaa9b477e LNetMDBind +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xadfbb266 lnet_sock_read +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xb13f3c21 lnet_copy_kiov2iov +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xb20da2b1 lnet_copy_iov2iov +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xb75f7953 LNetEQFree +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xba5566d2 lnet_acceptor_port +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xbf0760a2 LNetMEAttach +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xd23ef1eb lnet_sock_accept +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xd2fcc54f lnet_sock_connect +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xd7c50cb9 lnet_init +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xe8124744 lnet_fini +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xefae51b8 the_lnet +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xf0218673 lnet_sock_getaddr +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xf1b316bf LNetSnprintHandle +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xf5dc6337 lnet_iov_nob +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xfa106804 lnet_counters_get +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xfaf253c0 lnet_sock_getbuf +EXPORT_SYMBOL drivers/staging/lustre/lnet/selftest/lnet_selftest 0x078db139 lstcon_ioctl_entry +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0x1c4bb5f9 LU_OBF_FID +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0x2ce1b908 client_fid_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0x375e6f8d LUSTRE_BFL_FID +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0x37a14bc0 client_fid_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0x58e494e7 seq_client_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0x5c7de41d seq_client_get_seq +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0x9f955bbc seq_client_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0xa851213e seq_client_flush +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0xae61cff5 LU_DOT_LUSTRE_FID +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0xc997a02f LUSTRE_SEQ_SPACE_RANGE +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0xecee2727 LUSTRE_SEQ_ZERO_RANGE +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0xeea5adea seq_client_alloc_fid +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0x0d43f980 fld_client_lookup +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0x1aa7c967 fld_client_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0x303ba4ae fld_client_debugfs_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0x7d9e7504 fld_client_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0xa06be114 fld_client_del_target +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0xb80b8766 fld_client_flush +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0xfb788cdb fld_client_add_target +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x000c507f libcfs_debug_dumplog +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x01db5172 cfs_percpt_atomic_summary +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x03c7ae5b cfs_percpt_atomic_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x0430e4bf cfs_hash_debug_header +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x06401e01 cfs_hash_is_empty +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x069f9bb2 cfs_wi_schedule +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x06b4f415 cfs_cpt_set_cpumask +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x08917712 cfs_hash_for_each_key +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x08ada613 libcfs_console_backoff +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x0aae8493 cfs_cpt_number +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x0b4b1546 libcfs_lnd2modname +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x0de6c369 cfs_cap_lower +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x0f5eff79 cfs_percpt_number +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x0f7fcd44 cfs_cpt_set_nodemask +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x123b6908 cfs_hash_bd_findadd_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x12c54b77 cfs_hash_findadd_unique +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x13550229 lbug_with_loc +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x17ac7833 libcfs_deregister_ioctl +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x1a60d439 cfs_parse_nidlist +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x1c97b722 cfs_cpt_set_node +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x1d41c4c0 cfs_hash_bd_lookup_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x1e8cdb47 cfs_race_waitq +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x20ef56fc cfs_cpt_set_cpu +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x21568600 cfs_cpt_of_cpu +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x24b69672 cfs_hash_debug_str +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x2663147a __cfs_fail_timeout_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x2771fd3d cfs_cpt_unset_nodemask +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x277e62bd cfs_hash_for_each_empty +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x27b6d3ba cfs_ip_addr_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x29aafd0c cfs_hash_hlist_for_each +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x2a641ef9 cfs_hash_dual_bd_unlock +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x2adae33e cfs_init_timer +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x2dbe54b2 cfs_trimwhite +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x2fb7eae8 cfs_hash_bd_finddel_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x2fe97a46 cfs_wi_sched_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x31fc5082 cfs_crypto_hash_update +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x32ae7fbc cfs_cpt_unset_cpu +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x334b6e24 libcfs_kkuc_group_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x361e82d4 cfs_firststr +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x377f93fb cfs_srand +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x3848f4de cfs_cpt_unset_cpumask +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x389ca502 libcfs_debug_mb +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x39385fd2 cfs_percpt_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x39fdcd2b libcfs_debug_set_level +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x3c1285bd libcfs_subsystem_debug +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x3d5e6098 cfs_race_state +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x3e5e7727 cfs_hash_rehash_cancel_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x3ef0d90c libcfs_kkuc_group_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x4062f92b libcfs_run_lbug_upcall +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x4087e2b4 cfs_hash_putref +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x411db754 cfs_crypto_hash_final +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x42b8c87e cfs_crypto_hash_update_page +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x44839bbb cfs_rand +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x468bace1 cfs_hash_rehash_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x48f163c6 libcfs_str2anynid +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x4a95faa2 cfs_timer_deadline +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x4a99af72 cfs_clear_sigpending +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x4b982291 cfs_hash_bd_peek_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x4f1f2fa5 cfs_crypto_hash_digest +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x50345570 libcfs_str2net +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x5051b6d2 portal_enter_debugger +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x509d38b0 libcfs_net2str +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x53e92adb cfs_cpt_table_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x54fd9a71 cfs_percpt_index +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x58a7ee00 libcfs_catastrophe +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x5946ec2b cfs_percpt_current +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x5a892b2b cfs_percpt_lock_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x5b20921a cfs_hash_for_each_nolock +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x5c013b81 cfs_expr_list_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x5dce9e80 libcfs_lnd2str +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x62289d65 cfs_array_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x63b4967a cfs_hash_lookup +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x64685fef libcfs_console_min_delay +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x6564c55b libcfs_console_max_delay +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x65dd9f0c libcfs_run_upcall +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x67398404 cfs_wi_sched_destroy +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x677a5bd2 cfs_cpt_online +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x6a59b79b cfs_cpt_unset_node +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x6c4cadc8 cfs_hash_for_each +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x6c905b5f libcfs_watchdog_ratelimit +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x6f808ab7 libcfs_kkuc_msg_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x71f662a3 libcfs_debug +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x72f4e5f9 cfs_hash_bd_move_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x7562cd14 cfs_hash_del_key +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x771695b1 cfs_hash_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x785b7372 cfs_hash_dual_bd_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x7a47b94d cfs_hash_size_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x7a63872e cfs_timer_disarm +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x7b0b748a cfs_ip_addr_parse +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x7c73bc4b cfs_hash_rehash +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x7e6f6485 cfs_ip_addr_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x7fda989d cfs_fail_loc +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x8151c3aa cfs_cap_raised +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x83d795e4 cfs_match_nid +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x857aaea7 libcfs_register_ioctl +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x865483a9 libcfs_kvzalloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x87f3bb87 cfs_hash_del +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x8840f591 cfs_block_allsigs +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x890ef1fb libcfs_kvzalloc_cpt +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x8ab81255 cfs_cpt_nodemask +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x8c85e4e6 cfs_crypto_hash_speed +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x91504e8b libcfs_kmemory +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x92e7c30b cfs_cpt_current +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x940ed192 libcfs_stack +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x949221dc cfs_hash_cond_del +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x95620e8c cfs_wi_deschedule +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x97b0b9bc cfs_enter_debugger +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x9879b229 cfs_get_random_bytes +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x9c6d26c0 cfs_cpt_table_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x9e420643 cfs_restore_sigs +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x9e8fb7ad cfs_percpt_unlock +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x9f82f712 cfs_trace_copyout_string +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xa2b68b2a cfs_array_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xa6b9dee6 libcfs_kkuc_group_rem +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xa6ff1e5c cfs_cpt_spread_node +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xa8a489ea cfs_cpt_table_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xa9088531 cfs_expr_list_values +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xa9c0ca61 cfs_timer_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xa9dc74e2 cfs_trace_copyin_string +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xb00dfd91 cfs_hash_dual_bd_findadd_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xb8c52b1b cfs_timer_done +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xbab4f34e cfs_timer_arm +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xbab577e8 cfs_hash_for_each_safe +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xbf7a37f1 cfs_signal_pending +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xc0ea7fc0 cfs_expr_list_parse +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xc1708189 cfs_hash_dual_bd_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xc1a4f1b0 cfs_percpt_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xc1b20836 cfs_hash_add_unique +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xc2dfd791 libcfs_console_ratelimit +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xc39fd2f9 libcfs_panic_on_lbug +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xc49b1c62 cfs_percpt_atomic_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xcb385db9 libcfs_debug_binary +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xcb6ff89a cfs_cpt_table +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xcc20e694 libcfs_nid2str +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xccc45639 cfs_free_nidlist +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xcd38904c cfs_wi_exit +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xce1a88f2 libcfs_arch_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xcf61bacb __cfs_fail_check_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xcf678304 cfs_hash_bd_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xd0aa642a cfs_hash_rehash_key +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xd2965f33 cfs_hash_bd_del_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xd48d8f72 cfs_hash_dual_bd_lookup_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xd6a52be3 libcfs_printk +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xd7bbf963 cfs_hash_dual_bd_finddel_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xd7c4f765 add_wait_queue_exclusive_head +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xd96f406d cfs_cap_raise +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xde17bb8d libcfs_isknown_lnd +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xde9c00c4 cfs_cpt_weight +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xdf2789c0 cfs_curproc_cap_pack +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xdfecb98d cfs_block_sigs +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xe262a6e2 cfs_timer_is_armed +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xe2f91ce3 libcfs_debug_msg +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xe3bf6897 cfs_percpt_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xe75794eb cfs_cpt_bind +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xe7b54314 libcfs_arch_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xea411f63 cfs_block_sigsinv +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xec1f56d5 libcfs_str2nid +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xeceac781 cfs_fail_val +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xeed48ba7 cfs_hash_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xf3565b71 libcfs_debug_vmsg2 +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xf440bb38 libcfs_kkuc_group_foreach +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xf5e4a175 cfs_hash_bd_add_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xf8a8644b libcfs_id2str +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xf94025d1 libcfs_str2lnd +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xfa4531a2 cfs_cpt_clear +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xfacb8667 cfs_hash_getref +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xfd493ddf cfs_cpt_cpumask +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xfe565fa9 cfs_crypto_hash_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xffcad24b cfs_percpt_lock_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/llite/lustre 0x0f6f90bd ll_iocontrol_register +EXPORT_SYMBOL drivers/staging/lustre/lustre/llite/lustre 0x44bda8d4 ll_osscapa_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/llite/lustre 0x88868c1f ll_stats_ops_tally +EXPORT_SYMBOL drivers/staging/lustre/lustre/llite/lustre 0xcd3cde92 ll_iocontrol_unregister +EXPORT_SYMBOL drivers/staging/lustre/lustre/llite/lustre 0xf311b05e ll_direct_rw_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/lov/lov 0x016acea5 lov_read_and_clear_async_rc +EXPORT_SYMBOL drivers/staging/lustre/lustre/lov/lov 0x0750b605 lov_stripe_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/lov/lov 0x16245358 lov_device_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/lov/lov 0x6f44d1a4 lov_lsm_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/lov/lov 0x7d17f319 lov_stripe_unlock +EXPORT_SYMBOL drivers/staging/lustre/lustre/lov/lov 0xb2773e10 lov_lsm_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/mdc/mdc 0x0df21540 it_set_disposition +EXPORT_SYMBOL drivers/staging/lustre/lustre/mdc/mdc 0x5919b6d6 it_clear_disposition +EXPORT_SYMBOL drivers/staging/lustre/lustre/mdc/mdc 0x5ef8417d it_disposition +EXPORT_SYMBOL drivers/staging/lustre/lustre/mdc/mdc 0xfe26c5a6 it_open_error +EXPORT_SYMBOL drivers/staging/lustre/lustre/mgc/mgc 0xdc287f95 mgc_fsname2resid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x008c5f31 cl_object_attr_unlock +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x01665e34 class_parse_net +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x019e146b cl_page_discard +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0212c101 obdo_from_inode +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x03087e5c obd_export_evict_by_nid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x035852d0 lustre_swab_llog_rec +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x03613527 iattr_from_obdo +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x03615c2f cl_page_list_disown +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x03b37a9c lu_kmem_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x03ee03ca llog_init_handle +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x04cd1333 lu_env_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x057f6d4b class_find_old_param +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0608793d lu_object_put_nocache +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x065af2c4 lprocfs_rd_timeouts +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0697cb37 lprocfs_rd_server_uuid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x07aa68bb lustre_swab_lustre_cfg +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x07d45876 obdo_set_parent_fid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x083942ff class_del_profile +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0849a180 lu_site_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0873c741 cl_env_nested_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x08b47771 llog_declare_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0ab898b5 obdo_cpu_to_le +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0b4996c1 cl_lock_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0b513ee7 obd_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0c378d79 lustre_swab_llog_hdr +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0c3b6acb lu_context_exit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0c8bb99d lu_context_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0ca6e3cf cl_page_clip +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0f809965 cl_lock_signal +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x10da3ff6 cl_io_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x10e21e12 dt_try_as_dir +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x11495519 lprocfs_write_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x117f74a8 cl_sync_io_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x11d259a2 cl_page_assume +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x123e5b5b dt_directory_features +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x12b658fa lprocfs_seq_release +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x12d8df34 dt_index_walk +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x137704e6 lprocfs_single_release +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x145f86ac cl_page_top +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x147792fb lustre_process_log +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1491dc30 lu_context_tags_clear +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x15a73327 dump_exports +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x15da38d4 obd_export_evict_by_uuid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x163ada8d cl_page_lookup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x184d2375 __llog_ctxt_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x18d43a76 lu_stack_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x191ce0a3 cl_lock_get_trust +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1922aec9 class_connect +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1968354d ldebugfs_add_simple +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x196c90b1 cl_lock_mutex_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1a851843 lu_device_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1a9a5322 class_unlink_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1abe72e3 lu_context_key_degister_many +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1b4e8e20 dt_lookup_dir +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1b5c6386 cl_page_vmpage +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1b80d5d6 cl_page_list_own +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1ba5ca7d llog_backup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1de052ce cl_page_list_discard +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1e53b2f2 dt_store_resolve +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1e7c59d2 cl_index +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1f521cdc cl_page_is_under_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x206ddc54 cl_req_prep +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x21b14f9a cl_io_is_going +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x221826f1 class_parse_nid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x225b75ee cl_lock_error +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x22b2709e lu_device_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x23be526c obdo_from_md +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x24e1671d lprocfs_counter_sub +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2519d3cf cl_offset +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2547efae lustre_uuid_to_peer +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x26c6aee7 cl_req_page_done +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x26d03723 dump_lniobuf +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x26e97603 cl_lock_unhold +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x275cdc7a cl_env_reexit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x27ed03e6 class_uuid2obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2859fbce lu_env_refill +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x286860f5 class_handle_free_cb +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2868916d cl_io_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x28b033a2 cl_lock_slice_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x297cf5e0 class_handle2object +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2ad4abec dt_key +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2ae1cd79 kuc_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2b2d0acb lprocfs_wr_uint +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2cb5004d dt_device_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2df974b2 cl_env_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2e811df2 lprocfs_rd_atomic +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2f542ed2 dt_txn_callback_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3082bab0 lu_object_find_at +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x31a5907c class_config_llog_handler +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3211c3ab cl_wait +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3242ed35 obdo_cachep +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3283bde9 cl_object_header_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x32b03a24 lustre_register_kill_super_cb +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x32ba7a38 dt_quota_slv_features +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3381ff60 cl_lock_enclosure +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x33c151e3 lu_buf_realloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x369be015 obdo_le_to_cpu +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x36a81b82 cl_io_lock_alloc_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3703633c cl_site_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x37107881 cl_lock_intransit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x375d7ce7 cl_page_list_del +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3762f975 ldebugfs_add_symlink +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x37d219d9 class_exp2obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x37ed6e4b at_early_margin +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3829c9f9 obdo_from_iattr +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x388f4fa2 lprocfs_rd_name +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x38fb0c90 class_match_param +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x38fb563d cl_object_find +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x39595d02 dt_read +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3979b135 cl_pages_prune +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3a115f41 cl_page_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3ac11e01 cl_env_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3b007c50 cl_page_disown +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3b6ca82a cl_page_flush +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3bcbdc4b lprocfs_stats_alloc_one +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3c638d13 cl_unuse +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3d26967d class_process_proc_param +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3da2aa39 lprocfs_alloc_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3eab7bfe LU_BUF_NULL +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3f25c782 obd_max_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3f3351e6 lu_context_key_revive_many +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3f9d3415 dt_declare_version_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x40efced0 dt_index_read +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x417e1215 cl_queue_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x423942ca cl_page_list_unmap +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x42baa825 cl_lock_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x43977034 class_import_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x441328bd cl_type_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x452f559a lu_buf_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4562f4f3 cl_env_peek +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x46106340 llog_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x471f2d68 cl_page_list_assume +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x474ed5bd lustre_swab_ll_fid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x47b35f7d statfs_unpack +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x482d3cb5 capa_cachep +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x49476dbd cl_page_list_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x494cfb52 lustre_acl_xattr_merge2ext +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x497ba138 class_destroy_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x49a0f6ea lustre_posix_acl_xattr_2ext +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x49f565f4 lu_object_add_top +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4a58e4e4 obdo_from_la +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4a6d3586 lu_env_refill_by_tags +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4aa22043 cl_page_own_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4aae7b2c cl_object_header_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4ac58713 obd_connect_flags2str +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4b58939d cl_2queue_discard +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4bd2c613 cl_lock_enqueue_wait +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4be78e28 llog_cat_init_and_process +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4c190aad lprocfs_find_named_value +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4c4c700b obd_alloc_fail +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4c500b2d class_devices_in_group +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4d13458b kuc_len +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4d8d6dfa lprocfs_counter_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x508f0c92 cl_object_kill +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x50b1efdd lu_object_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x50c7fc36 ptlrpc_put_connection_superhack +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x518ceb2d class_detach +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x51f5f2a3 cl_lock_is_intransit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x521ab350 llog_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5329552a class_disconnect_exports +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x53fdd2b3 obdo_to_inode +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x540d6ba3 lu_context_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x541bb9f3 cl_lock_closure_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x543d88f6 class_num2obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x544a5167 la_from_obdo +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x54738349 ldebugfs_register +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x54885f87 ldlm_timeout +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x54cd257b class_incref +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x54d373a4 lu_site_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x557e7b14 lustre_posix_acl_xattr_filter +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x558bec27 obd_ioctl_getdata +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x561ad046 cl_io_rw_advance +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x564e9d44 init_capa_hash +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x56507402 cl_lock_delete +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x56891b59 cl_page_list_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x56a36923 class_new_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x56e94dfe cl_lock_closure_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5706a7e1 cl_io_iter_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x570d09ae lustre_swab_lu_fid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x57ea02ad cl_page_is_owned +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x57f99ffe llog_process_or_fork +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x582b013d dt_quota_glb_features +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5850e0e8 lprocfs_obd_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x589af935 cl_io_lock_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x59343dd3 ldebugfs_obd_seq_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5953bbeb cl_sync_io_note +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x59e35865 class_conn2cliimp +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5a20d896 obd_memory_max +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5b0f8d96 cl_page_unassume +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5bc022c5 lprocfs_dt_rd_filestotal +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5bdcec63 md_from_obdo +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5c0e341e cl_page_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5c2f1f69 lu_context_key_revive +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5ca1e74a lu_object_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5d34ae0d cl_lock_mode_name +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5e654407 lprocfs_free_obd_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5e93341f lprocfs_oh_sum +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5f227ca3 lu_context_key_quiesce_many +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5f7563dc dt_record_write +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5fe97b73 block_debug_check +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6033b908 obdo_cmp_md +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x604785c4 lprocfs_rd_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x60dc4656 cl_wait_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x60e4fafa class_decref +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x624ffe24 lprocfs_counter_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x631fd7b9 lustre_ext_acl_xattr_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x63331d86 lu_cdebug_printer +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6418e2a7 lu_context_key_register_many +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x648a7f66 lprocfs_free_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x64c0f945 llog_sync +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x661280a4 class_conn2export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6734adbd lprocfs_read_frac_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x67399323 cl_io_slice_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x675244fa dt_otable_features +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6761f3cf cl_object_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x67c137bd cl_2queue_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6830c3f7 lu_dev_add_linkage +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6890d175 lustre_get_jobid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x68ac6987 class_manual_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x68ddca5c cl_lock_hold_release +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6955c0c3 lprocfs_rd_state +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x698b61fc cl_lvb2attr +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x69c42114 at_min +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6a9362a8 lprocfs_init_mps_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6ab64264 llog_cat_declare_add_rec +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6ac6508d cl_lock_mutex_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6b190250 cl_env_unplant +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6cf2963b cl_sync_io_wait +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6e535219 cl_page_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x726e005d dt_txn_hook_commit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x742559b1 class_unregister_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x74339ea5 cl_page_list_splice +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7519f618 lprocfs_init_ldlm_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x752032d0 cl_lock_descr_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x752f71a8 class_get_profile +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x756a77f3 class_parse_nid_quiet +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x75a96842 llog_open_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x76e51608 cl_vmpage_page +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x76ff48ef cl_lock_at +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7703acf4 lprocfs_free_md_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x77385a8c llog_process +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7741a2ed class_register_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x77673bc9 cl_lock_peek +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x77d2089a class_name2dev +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x77ed88ea lu_object_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7802fcd7 lustre_swab_llogd_conn_body +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x78495e08 llog_thread_key +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x789796a1 obd_zombie_barrier +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x78f4bd4d lprocfs_seq_read_frac_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7a2ad355 dt_version_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7a8abc1d ldebugfs_remove +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7abb229d cl_page_gang_lookup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7b43c5cc cl_page_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7b4fc57b at_max +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7b53636b class_put_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7bc12d2a lprocfs_init_ops_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7c70274a cl_locks_prune +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7e67f006 lprocfs_obd_rd_max_pages_per_rpc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7edcafa0 cl_env_reenter +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7f169034 cl_io_unlock +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7f7d7cd9 lu_buf_check_and_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7fe5561a obd_dirty_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8031efb8 lprocfs_dt_rd_kbytestotal +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x806cc497 class_add_uuid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x80958223 lu_device_type_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x80fc0ab6 lu_object_header_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x81742d89 obd_ioctl_popdata +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x81aae2f3 cl_lock_discard_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x81eca1d1 dt_device_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x82ecba8a class_disconnect +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x831f656c class_process_config +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x838e4270 llog_cat_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8424e538 obdo_refresh_inode +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8446b9a8 obdo_to_ioobj +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8489f086 obd_alloc_fail_rate +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x849e5385 obd_update_maxusage +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8503c454 lu_buf_check_and_grow +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x852f85dc cl_page_header_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8553b369 obd_memory +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x85bd8c4e llog_declare_write_rec +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x86226f98 cl_enqueue_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x86a86bf0 cl_req_slice_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x86e622c2 lprocfs_wr_atomic +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x88b87068 lprocfs_stats_collect +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x891054f1 lprocfs_clear_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x89590ea9 class_new_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8a870166 llog_cat_reverse_process +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8aa2c358 lprocfs_dt_rd_blksize +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8b5f4057 lu_context_tags_update +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8ba6e479 lustre_swab_lu_seq_range +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8bd9ed75 cl_page_list_move +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8d39b085 lu_context_key_quiesce +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8d42203d cl_page_prep +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8d658ed0 capa_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8e10e6d6 server_name2svname +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8e23bda8 class_export_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8f67314c obd_dump_on_eviction +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8f96c91e lustre_common_put_super +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8fc04ee9 lprocfs_rd_conn_uuid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x902b12db cl_io_sub_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x90b25dcb lu_context_key_degister +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x90e053ac lu_context_key_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9186fd07 lprocfs_rd_uint +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x919a3142 lu_site_purge +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x91a1d9a4 class_handle_hash +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x91d69653 ldebugfs_register_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x91f09545 cl_page_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x92e58479 obd_dump_on_timeout +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x93859814 lprocfs_oh_tally +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x93b46468 lu_session_tags_clear +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x93d6a17a cl_2queue_assume +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9512d507 lustre_acl_xattr_merge2posix +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x955f5220 ldlm_timeout_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x95735c6c at_extra +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x963494be dt_locate_at +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9664cac4 cl_page_delete +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x96be2d6f llog_cancel_rec +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x96f1cec2 cl_use_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9720ca20 cl_lock_hold +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9767adce class_uuid2dev +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x977120b9 cl_page_find_sub +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x97d03783 at_history +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x99456bd9 cl_page_make_ready +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x99b35f27 _debug_capa +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9b1ed9d8 obd_jobid_var +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9b4c6f82 dt_version_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9c40aa9a cl_object_has_locks +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9dbb17b6 lprocfs_dt_rd_kbytesfree +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9e03cedb lustre_end_log +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9e3fb502 cl_page_completion +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9eaf3a47 class_import_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9f254e41 lprocfs_alloc_obd_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9f6bc28b obd_max_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9ff46fef llog_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa01c281f cl_lock_release +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa0d2411e llog_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa160da4a lu_object_header_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa278f7ef cl_lock_ext_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa3068d38 lu_dev_del_linkage +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa5092d9f cl_object_prune +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa5fb234f lprocfs_write_frac_u64_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa6314266 class_connected_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa674c241 kuc_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa67e7c4d cl_io_submit_sync +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa6da27e0 cl_lock_state_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa77007e8 class_name2obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa7b20226 cl_2queue_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa7e16614 lu_kmem_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa82a3dd1 class_handle_unhash +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa8aa6a73 ldebugfs_seq_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa941638a cl_lock_weigh +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xaa21b7a0 lustre_register_quota_process_config +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xaab01512 cl_2queue_init_page +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xab1f3bee obd_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xabe83dec cl_io_rw_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xabee892f cl_lock_hold_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xabf45922 capa_decrypt_id +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xac7abb7d cl_stack_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xac7f1596 kuc_ptr +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xad52cd6b cl_page_is_vmlocked +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xae25a884 cl_lock_is_mutexed +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xafb465e2 dt_object_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb01963a6 class_uuid_unparse +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb03cc4f4 class_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb068eab1 llog_is_empty +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb11c6cec dt_record_read +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb1b89b6d class_attach +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb269cf91 cl_env_nested_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb35519ed lustre_swab_cfg_marker +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb3c51243 cl_object_attr_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb407b482 cl_page_find +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb4194e66 lu_device_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb41998cd lustre_cfg_rename +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb4f8ee63 lprocfs_read_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb635af9e dt_acct_features +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb6ba5dd5 kuc_ispayload +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb73263c8 lustre_register_client_fill_super +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb743ec6a dt_mode_to_dft +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb781d0c5 dt_object_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb7830729 capa_cpy +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb93d0436 cl_io_top +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb9ab10b2 lu_object_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xba985283 lustre_register_client_process_config +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbacac922 lprocfs_write_frac_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbbcb0181 lu_context_enter +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbc436a0d obdo_cpy_md +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbc6b9633 llog_write +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbc9f2f16 cl_lock_modify +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbcbb3fcd cl_site_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbcd236e9 lu_object_assign_fid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbd8b1023 cl_conf_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbe34cfb3 cl_page_cache_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbebea8c6 cl_req_page_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbed9487e llog_declare_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbf2f7341 cl_page_size +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbf451051 llog_open +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbfac341f cl_object_attr_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbfcaa7fa llog_reverse_process +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc015d875 cl_req_attr_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc0954007 lprocfs_oh_clear +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc0bf7ef2 obd_debug_peer_on_timeout +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc18d06cf lu_buf_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc1ca33e5 cl_unuse_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc1ef7da5 lu_object_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc44bb303 cl_object_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc579fb06 lprocfs_at_hist_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc585dabb obd_devs +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc5a97c9b class_export_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc63b68d6 lu_object_anon +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc6d7141c cl_io_loop +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc7cb890d cl_lock_descr_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc7f0fe33 cl_io_prepare_write +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc8be2f8a lu_site_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcb055811 cl_object_glimpse +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcb0ab67f obd_max_dirty_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcb481c44 cl_io_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcbcad88b class_config_parse_llog +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcce27b2d llog_write_rec +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcd2be20e dt_txn_hook_start +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcd7537ee get_devices_count +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xce5cebd8 capa_lookup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcf307062 cl_io_end +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcf500a74 cl_lock_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcfcf3893 cl_lock_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd00959b1 lu_env_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd08827c0 server_name2fsname +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd0abbe16 cl_io_read_page +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd0e72ff8 cl_lock_user_del +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd10aa042 lustre_swab_llog_id +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd3347677 cl_lock_extransit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd3b3f55d cl_req_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd450588b cl_page_at +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd540e058 cl_enqueue +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd5dc3c86 lu_object_find +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd5e0e11a lprocfs_rd_connect_flags +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd6d4e42b cl_lock_mutex_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd6e86626 class_search_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd70fe669 lustre_swab_llogd_body +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd78edefd llog_cat_add_rec +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd7bc8654 obd_timeout +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd7bfbc9c lprocfs_dt_rd_filesfree +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd7f7b340 cl_lock_mode_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd92a103c class_config_dump_llog +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd9ad24cf lu_object_unhash +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xda211613 cl_lock_user_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xda5b1ced class_find_param +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdac644c8 lustre_posix_acl_xattr_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdb13dce1 capa_list +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdbbaf9d9 dt_find_or_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdbdf08cb class_exp2cliimp +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdc556099 obd_exports_barrier +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdc76ba26 capa_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdcc40af0 class_check_uuid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xde66e48d cl_page_unmap +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xde7d985b obd_dirty_transit_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdead36fe class_handle_hash_back +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdf32bde3 lu_object_invariant +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe028cf84 capa_encrypt_id +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe02cb5f3 cl_lock_closure_build +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe06624b5 cl_page_slice_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe0bbe62a lu_device_type_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe0cbfc77 llog_cat_process_or_fork +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe1473763 dt_txn_callback_del +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe23d2487 lprocfs_obd_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe29a7df4 cl_attr2lvb +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe2eb4470 class_get_next_param +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe44a77d7 lu_context_refill +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe4b122fd cl_page_list_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe539c598 llog_erase +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe53d54f7 cl_page_own +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe59d67d9 class_fail_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe5eef818 class_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe608d703 dt_store_open +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe6730290 lprocfs_exp_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe7151af4 class_find_client_obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe76c427e llog_exist +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe7d83236 cleanup_capa_hash +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe8991404 cl_io_iter_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe8ae15ed lprocfs_rd_u64 +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe8e84c32 class_match_nid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe94e09c7 llog_cat_cancel_records +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xeacec47c lprocfs_oh_tally_log2 +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xeaf8680a lu_object_locate +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xeb37f45f lprocfs_alloc_md_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xebe5790f llog_copy_handler +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xec7d6b85 obd_timeout_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xed69c117 lu_site_stats_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xee68bc29 lu_session_tags_update +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xeeeb79fa do_lcfg +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xef002fd8 llog_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xef76f858 block_debug_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xef8f6ffe cl_req_completion +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xeff8af64 cl_object_top +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf01e2527 server_name2index +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf0321460 class_conn2obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf0aef90c lu_object_header_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf130b962 llog_close +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf1ef7d74 cl_io_start +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf27c138b cl_object_attr_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf2fd6695 statfs_pack +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf3bc5b9d dt_lfsck_features +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf3e85051 cl_io_submit_rw +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf4408dbb cl_lock_disclosure +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf490d5f9 class_del_profiles +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf525fd66 lu_object_find_slice +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf5288958 cl_lock_request +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf5b7a511 obd_export_nid2str +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf60d4659 capa_count +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf6414538 lu_site_init_finish +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf646e2b5 cl_env_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf679fc36 cl_env_implant +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf6f391a1 class_add_conn +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf7020831 lprocfs_dt_rd_kbytesavail +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf73bbbf1 cl_lock_nr_mutexed +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf7fe11c0 dt_txn_hook_stop +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf88e7c36 cl_io_commit_write +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfa0dedac cl_io_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfa144ac0 cl_lock_state_wait +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfa2a349b class_get_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfa813748 class_disconnect_stale_exports +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfa813d06 capa_hmac +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfb0432cd lu_context_key_register +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfbd5a0cf ldebugfs_add_vars +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfbdb7837 llog_cat_close +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfbea0098 lu_types_stop +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfc7f18d0 obd_pages_max +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfd68d17a class_notify_sptlrpc_conf +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfdbe1557 lprocfs_write_u64_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfdea37e6 cl_site_stats_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfe4f24e4 lu_device_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfe58dcd0 cl_2queue_disown +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfebd9ec4 cl_lock_at_pgoff +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xff57e92d class_match_net +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xff68f2a5 llog_cat_process +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xffd52d6c cl_2queue_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfffc1f11 lustre_swab_ost_id +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x00763a24 ptlrpc_lprocfs_unregister_obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x00a9beb0 ldlm_namespace_dump +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x00cb99c1 RQF_LDLM_INTENT_GETXATTR +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x00d95039 ptlrpcd_decref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0199116b ldlm_pool_get_clv +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x01d6ef7f ldlm_pools_recalc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x01e28a10 lprocfs_rd_pinger_recov +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x02573312 client_obd_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x03334c15 ptlrpc_buf_need_swab +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x03751a02 lustre_pack_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x03d2d9c7 ptlrpc_set_destroy +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x048b59d5 lustre_msg_set_handle +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0515f93b RQF_FLD_QUERY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x05de25b0 ptlrpc_request_set_replen +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x06b3942b lustre_swab_lov_user_md_objects +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x071fc74a RQF_LDLM_ENQUEUE_LVB +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x07605c7d interval_find +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x08bb2d27 lustre_swab_obd_ioobj +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x095587d0 lustre_msg_buflen +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0a3130b0 RMF_MDT_EPOCH +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0ac252b2 lustre_msg_set_jobid +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0ac54708 lustre_errno_hton +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0bcacb5d RMF_MDS_HSM_USER_ITEM +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0c27bc44 ptlrpc_unregister_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0c2d9c43 lustre_swab_lip_header +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0c3c8d11 ptlrpc_replay_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0c751853 ldlm_cli_cancel_unused_resource +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0cf343dd RQF_LDLM_INTENT_BASIC +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0d849ef7 ptlrpc_req_finished +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0ddb1b6f ptlrpc_register_service +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0f2ae33a ptlrpc_check_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0f5090f6 sptlrpc_cli_ctx_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0fd367d6 ldlm_replay_locks +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x10f18f20 interval_iterate_reverse +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x115017f6 req_layout_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x11528509 ldlm_lock_fail_match_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x12b6f5a3 ptlrpc_connection_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1396c6dc ptlrpc_pinger_add_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x14708afc lustre_swab_mdt_rec_reint +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1483eca4 ldlm_lock_addref_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1489a14c ptlrpc_unregister_bulk +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x14d192db lustre_msg_size +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x15a3e4db RMF_GETINFO_VAL +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x172fb86d lustre_msg_hdr_size +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1747d8b3 ldlm_lockname +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x17950f60 RQF_SEC_CTX +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1801d9aa ldlm_pool_set_clv +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x19108a0f RQF_OST_DISCONNECT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x19c08934 RQF_LDLM_INTENT_CREATE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1a6a3ce9 RQF_OST_GET_INFO_LAST_ID +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1a9b76aa RMF_OBD_QUOTACTL +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1abd3258 RMF_SETINFO_VAL +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1ace4b5f RQF_LDLM_BL_CALLBACK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1ad6c330 RMF_EAVALS +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1bae0270 interval_iterate +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1be21715 lustre_msg_size_v2 +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1c245883 ldlm_cli_enqueue +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1c300d8e lustre_msg_get_slv +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1d043548 lustre_msg_set_op_flags +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1d341e4e ldlm_lock_allow_match_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1dbbd76a ldlm_lock_convert +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1dc2051d RMF_SEQ_OPC +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1de9c288 lustre_swab_layout_intent +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1e8e48a4 sptlrpc_flavor_has_bulk +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1eb2a65f RQF_OST_GETATTR +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1ee46b51 lustre_init_msg_v2 +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1ee9eb3c RQF_MDS_QUOTACTL +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1faf4359 client_connect_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1fcbdfc3 req_capsule_server_grow +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2096f5b5 RQF_OST_SET_GRANT_INFO +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x20d6b82c RQF_LDLM_INTENT_QUOTA +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x21314989 ptlrpc_request_committed +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x218a36ce ldlm_cli_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x219391ec RMF_EAVALS_LENS +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2317a241 ptlrpc_send_error +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x233790b5 RMF_OST_BODY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x237e7938 ptlrpc_at_set_req_timeout +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x244e5558 lustre_msg_get_version +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x24aafdba RMF_MGS_TARGET_INFO +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2585a629 RMF_SEQ_RANGE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2587513c RQF_LDLM_CP_CALLBACK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x25a3b3b7 ptlrpc_activate_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x269554ce RQF_LDLM_INTENT_GETATTR +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x26f99d16 RQF_MGS_CONFIG_READ +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2730ccda req_capsule_has_field +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x27d41c52 ptlrpcd_alloc_work +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x27ff21cf ptlrpc_request_bufs_pack +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x285e5b99 lustre_msg_set_conn_cnt +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x29e0869a sptlrpc_get_hash_name +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2a63a472 lustre_swab_ptlrpc_body +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2a884f67 ptlrpc_request_alloc_pack +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2b103edf ldlm_cancel_resource_local +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2b1dab05 req_capsule_extend +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2c00c60d ptlrpc_sample_next_xid +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2ca92fa8 ldlm_lock_decref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2ccd5b87 ldlm_cli_cancel_list_local +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2d56f168 ptlrpc_pinger_ir_up +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2d798316 RMF_MGS_CONFIG_RES +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2e4562fe RQF_LLOG_ORIGIN_HANDLE_CREATE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2e4ca396 RQF_LDLM_INTENT_UNLINK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2ecd7515 lustre_msg_check_version +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2f0e4f87 RQF_OST_QUOTACTL +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2f793215 lustre_swab_ost_body +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2fab3539 lustre_swab_ost_lvb_v1 +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2fd2f737 lustre_msg_set_limit +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2fe2dd6a ldlm_pool_get_limit +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x301d4fcd RQF_MDS_READPAGE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x302937e0 RQF_MDS_CONNECT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3060b9c6 sptlrpc_rule_set_expand +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x306a83b9 sptlrpc_import_flush_my_ctx +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x31838cb4 RMF_IDX_INFO +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3261b862 RQF_OST_SYNC +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3287635a ptlrpc_pinger_sending_on_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x33bb7761 ldlm_typename +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x33f67204 sptlrpc_cli_ctx_expire +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x34ab1223 ldlm_namespace_new +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x35939a3d lustre_swab_fiemap +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3633b1a0 ptlrpc_lprocfs_register_obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x382a024e ptlrpc_unregister_service +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3835ab4b RQF_LLOG_ORIGIN_CONNECT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3858fb94 RMF_OBD_STATFS +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x38c01799 RQF_LDLM_CALLBACK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x38fce533 lustre_msg_set_versions +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x39f60a5f RMF_OST_ID +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3a1e4bcb __lustre_unpack_msg +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3a28f832 ptlrpc_unpack_rep_msg +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3a4d2040 ldlm_lock_change_resource +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3ab90f6e lustre_msg_bufcount +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3ac00716 lustre_swab_hsm_user_state +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3b6b7cba dump_ioo +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3bedb0c7 RMF_LLOGD_CONN_BODY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3c63e62b RQF_MDS_REINT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3c8b16ab lustre_swab_ost_lvb +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3ca50f33 RQF_MDS_HSM_CT_REGISTER +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3cc885b7 req_capsule_client_dump +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3d36ecd3 __ldlm_handle2lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3d394518 ldlm_pool_del +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3d3fbbcb sptlrpc_sec_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3d45c94c ldlm_resource_unlink_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3d7dc5f9 ldlm_pools_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3dc47695 lustre_msg_get_magic +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3f034caf lustre_msg_get_status +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3f752e78 RQF_MDS_STATFS +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3fa409dd sptlrpc_cli_ctx_wakeup +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x41008cef RQF_LDLM_CANCEL +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4153af82 ptlrpc_request_alloc_pool +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x41a9ef0c ldlm_init_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x43168488 RQF_MDS_RELEASE_CLOSE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4317450c ldlm_pool_set_limit +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x43705ee4 RQF_LOG_CANCEL +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x43d78816 lprocfs_wr_evict_client +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x43d7efc8 lustre_msg_set_transno +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x44036eda RQF_MDS_GET_INFO +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x440c2a71 RMF_FIEMAP_VAL +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4481591d RQF_OST_SET_INFO_LAST_FID +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x45d05893 lustre_swab_lustre_capa +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x45e30cea lustre_swab_ldlm_intent +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x46f9110c _debug_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x47f5e903 RMF_MDS_HSM_REQUEST +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x498c03c5 lustre_msg_set_last_xid +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x49e69766 ldlm_flock_completion_ast +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4a03924a ldlm_lock_allow_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4a5a2416 RMF_DLM_REQ +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4a79c33e ptlrpc_recover_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4bd0b786 req_capsule_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4cc2f41a ldlm_lock_fail_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4d7580d0 lustre_swab_hsm_user_item +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4d8a4fa2 ptlrpc_pinger_del_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4e1706e5 lustre_msg_buf +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4e696b96 ptlrpcd_queue_work +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4eb03a6f ptlrpcd_destroy_work +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4f766c3b lustre_swab_generic_32s +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4fbeb68d ptlrpc_register_bulk +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x50443f6a ptlrpc_init_client +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x508ed0b2 ldlm_lock_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x50dd74f8 RMF_STRING +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x518fc36e sptlrpc_target_update_exp_flavor +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x51e1068a ldlm_resource_putref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x526cf544 ldlm_lock2desc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x52c62150 RMF_RCS +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x53411557 RMF_DLM_REP +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x537c8068 ldlm_cli_cancel_unused +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x53a4a004 bulk_sec_desc_unpack +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x54ae5021 ldlm_lock_addref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x555eb7fe RQF_MDS_HSM_STATE_SET +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x564a4717 ldlm_pool_set_slv +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5684c426 sptlrpc_enc_pool_put_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x568a589c ldlm_lock_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x576a4b49 req_capsule_server_sized_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x588035b4 RMF_UPDATE_REPLY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x595ab175 lustre_swab_obd_quotactl +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x596582bf RMF_GETINFO_VALLEN +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x59bc165f sptlrpc_gc_add_sec +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5a057439 interval_search +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5af0d02a ldlm_lock_dump_handle +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5b2a8c3b ptlrpc_deactivate_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5b6ba895 lustre_packed_msg_size +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5b7dc5c4 sptlrpc_cli_unwrap_bulk_read +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5c6a3a83 RQF_SEQ_QUERY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5ca1b491 lustre_swab_close_data +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5caae213 ptlrpc_next_xid +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5cb645fb ldlm_resource_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5dc4a3d4 ptlrpc_error +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5e0b19b1 RMF_CLUUID +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5e2b7558 lustre_msghdr_get_flags +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5e6f435d RQF_OST_BRW_READ +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5e80f899 RQF_LLOG_ORIGIN_HANDLE_READ_HEADER +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5ec3284d RQF_MDS_HSM_CT_UNREGISTER +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5ef831ee lustre_msg_get_handle +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5f96ccdd ptlrpc_connection_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5fc9a455 RMF_CLOSE_DATA +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x600d8c3f llog_client_ops +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6042bc15 RQF_MDS_REINT_RENAME +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x604e2505 RMF_SWAP_LAYOUTS +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x607ec932 lustre_msg_set_buflen +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x60cd26ad RQF_MDS_REINT_CREATE_SYM +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x60ee0166 ptlrpc_prep_bulk_imp +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x61646e1b RQF_MDS_SWAP_LAYOUTS +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x618ad203 RQF_OST_GET_INFO_LAST_FID +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6199490c req_capsule_client_sized_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x62aaae3f RQF_MDS_HSM_REQUEST +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6315dd4c RMF_LLOGD_BODY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x63459d01 ptlrpc_start_threads +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6352a62d ldlm_get_ref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x64780be1 target_send_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x647b6e48 lustre_swab_ldlm_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x653723dc RMF_LOGCOOKIES +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x657b00b7 ptlrpc_init_rq_pool +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x65c22e3a sptlrpc_cli_enlarge_reqbuf +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x660d7682 ldlm_register_intent +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x66c95ccc sptlrpc_get_bulk_checksum +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x67c189ce sptlrpc_cli_unwrap_bulk_write +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x683243bf ptlrpc_set_next_timeout +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6836fdb4 req_capsule_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x685eeaba RMF_DLM_GL_DESC +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x68cb2541 interval_is_overlapped +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x68f49e5e ptlrpc_expired_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6912990a RQF_OST_QUOTACHECK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x696ba811 lustre_msg_get_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x69c9f04d RQF_MDS_REINT_LINK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6a3785c9 RMF_EADATA +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6b3d9304 ptlrpc_prep_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6b555e35 lprocfs_wr_pinger_recov +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6c57bbf6 dump_obdo +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6d72828c sptlrpc_conf_log_update_end +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6d7931cc RQF_UPDATE_OBJ +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6e861b18 ptlrpc_buf_set_swabbed +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6ed20499 ldlm_revalidate_lock_handle +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6efa82b0 RQF_MGS_TARGET_REG +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6f1e2cf8 ldlm_cli_update_pool +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6f6dc736 lustre_swab_mdt_remote_perm +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6fb92092 sptlrpc_flavor2name_bulk +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x703538e4 lustre_swab_hsm_current_action +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x70668f1b ptlrpc_cleanup_client +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7148b5d3 ptlrpc_resend +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x72103d90 __ptlrpc_free_bulk +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x723d43b6 sptlrpc_rule_set_dump +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x725a892c RQF_MDS_REINT_OPEN +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x72d4a9e7 target_pack_pool_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x73e4e5c9 ptlrpc_add_rqs_to_pool +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x74840056 lustre_msg_set_status +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7533c3d3 ldlm_init_flock_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x75a2c40d ldlm_put_ref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x75cf15ad ptlrpc_queue_wait +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x76b728e5 lustre_swab_update_buf +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x77840c82 sptlrpc_rule_set_choose +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x77efdab7 sptlrpc_cli_wrap_bulk +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x78bf9136 lustre_swab_ldlm_lock_desc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7a4e5576 ptlrpc_cleanup_imp +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7a5bc0f2 ptlrpc_disconnect_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7a832f10 RMF_CONN +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7ad08123 sec2target_str +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7b158da4 lustre_swab_ldlm_request +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7b438020 ptlrpc_wake_delayed +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7bbf8001 RMF_MDT_BODY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7c4c6107 RQF_LDLM_CONVERT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7c622c33 ldlm_cli_cancel_list +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7c775310 req_capsule_client_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7d1ecd7f RQF_LDLM_INTENT_LAYOUT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7d41a8b9 RQF_QUOTA_DQACQ +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7d6807c8 ldlm_glimpse_ast +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7dc0e7cd RMF_QUOTA_BODY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7dfb3c18 lustre_msg_clear_flags +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7f4925d8 interval_expand +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7f4c99b1 ldlm_expired_completion_wait +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7f5a1cc7 lustre_msg_set_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7f634e22 req_capsule_server_pack +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7f6d2357 lustre_msg_is_v1 +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x80a9e8c3 lustre_msg_get_last_xid +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x80d6b3ba ptlrpcd_add_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x80ecb4e3 RMF_MDS_HSM_CURRENT_ACTION +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8148b428 ldlm_lock2handle +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x817d7f1f lustre_msg_add_flags +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x82021b24 lprocfs_wr_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x826d3c4f RQF_LDLM_GL_CALLBACK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x82acd736 ldlm_pool_get_lvf +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x837480aa ldlm_pool_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x837efb00 RMF_NAME +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x84e5e3d5 do_set_info_async +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x85135801 RMF_DLM_LVB +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x85a9e0d8 RMF_FID +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x85eecf67 sptlrpc_get_hash_alg +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x863db6eb RMF_HSM_USER_STATE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8656a1ad ptlrpc_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x866c7da3 llog_initiator_connect +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x86fa8c3b ldlm_cli_convert +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8760beaf lustre_swab_ldlm_policy_data +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x876c2551 RMF_GETINFO_KEY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x87bf7b3c sptlrpc_get_next_secid +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8872f3d2 RMF_SETINFO_KEY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x88fff52d RMF_CAPA2 +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x895d84d2 req_capsule_server_dump +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x89f9edf7 RQF_MDS_REINT_SETXATTR +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8a1ea476 lustre_swab_hsm_state_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8a257736 RQF_MDS_HSM_STATE_GET +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8a4345b1 ptlrpc_set_add_cb +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8a5eea3b ldlm_namespace_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8ac440fa ptlrpc_uuid_to_connection +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8af92e52 sptlrpc_cli_ctx_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8afdaa30 ldlm_cli_enqueue_local +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8b60badf req_capsule_server_sized_swab_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8b854254 lustre_swab_mgs_config_res +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8cb71d4b RQF_MDS_REINT_CREATE_SLAVE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8ce06a2b ptlrpc_commit_replies +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8d77ea75 lustre_msg_set_flags +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8da3fca7 lustre_msg_add_version +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8e2fbe5e ptlrpc_init_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8e9abe4d RMF_GENERIC_DATA +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8f0aceac RQF_MDS_HSM_ACTION +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8f57796c sptlrpc_sec_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8fec0451 lustre_msg_get_limit +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x905127ee ptlrpc_connect_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9088943b ldlm_namespace_foreach +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x90b4cfe0 req_capsule_init_area +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x919c4ce3 RMF_OBD_ID +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x91b12964 ldlm_resource_iterate +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x91cf58d3 RQF_MDS_PIN +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9228392f lustre_swab_mdt_body +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9379e772 ptlrpc_invalidate_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x937b1ee0 lustre_swab_mdt_ioepoch +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x940bbbae sptlrpc_sec_destroy +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9553c633 RQF_LDLM_INTENT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x955e094c lprocfs_wr_ping +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9575ea16 ldlm_destroy_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x95d08f0c lustre_swab_mgs_target_info +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9660ace0 RMF_FLD_MDFLD +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x967bfd52 RQF_OBD_PING +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x96e6e14b req_capsule_field_present +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9798f2f1 RQF_MDS_GETATTR +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x980fcfdc ptlrpc_connection_addref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x98dd9f13 ptlrpc_request_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x993ff4d7 client_destroy_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9999cf7a dump_ost_body +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9a10d6a3 ptlrpc_nrs_policy_unregister +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9a1f8999 req_capsule_client_swab_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9a258886 RQF_MDS_GETSTATUS +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9a6f2f6d lustre_msg_set_opc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9ac0b2e1 sptlrpc_unregister_policy +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9b88f6ce RMF_NIOBUF_REMOTE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9bb14905 ptlrpc_stop_all_threads +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9bb5198b RQF_MDS_CLOSE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9cf865f0 ldlm_pool_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9d7ea314 sptlrpc_pack_user_desc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9e2fe0f8 req_capsule_server_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9e767c3c ptlrpcd_wake +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9e8a204a ldlm_cli_enqueue_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9fb088f1 lustre_swab_lov_mds_md +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9fb75e5f sptlrpc_enc_pool_get_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa0b8b85b ptlrpc_req_finished_with_imp_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa0f09929 lustre_pack_request +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa10f0d3d RMF_UPDATE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa163f4c3 dump_rniobuf +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa2244636 RQF_MDS_GETATTR_NAME +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa22c0086 ldlm_error2errno +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa3d2a6ee RMF_CAPA1 +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa42b2a94 ptlrpc_schedule_difficult_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa47787ef RMF_PTLRPC_BODY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa4a2d089 RQF_OST_PUNCH +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa4bea5ef lustre_swab_lmv_user_md +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa5458dad ldlm_lock_decref_and_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa568c62f ldlm_resource_foreach +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa5880075 ldlm_errno2error +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa66888dd ptlrpcd_add_rqset +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa6c436ca RQF_MDS_WRITEPAGE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa7b1ba60 ptlrpc_resend_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa7d55cc3 RQF_MDS_REINT_CREATE_RMT_ACL +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa7e360b1 RMF_OBD_IOOBJ +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa7ec567d RMF_CONNECT_DATA +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa81d206a sptlrpc_target_sec_part +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa84d3d18 sptlrpc_conf_client_adapt +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa93a48cc ldlm_prep_elc_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa9704f80 lustre_msg_get_last_committed +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa9c4658e lustre_swab_lov_user_md_v3 +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa9edf09d RQF_OBD_IDX_READ +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xaa49547c ptlrpc_prep_req_pool +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xab0ed578 ldlm_completion_ast_async +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xabac0749 client_disconnect_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xabe6ee0b ldlm_pool_shrink +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xacc6fbda sptlrpc_svc_ctx_invalidate +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xacd6a7d7 lustre_swab_ost_last_id +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xaddc3979 lustre_swab_lustre_capa_key +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xae9de7f4 ptlrpc_add_timeout_client +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xaf4e9658 RQF_MDS_SYNC +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xaf50a0d6 RMF_HSM_STATE_SET +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xafa17bec ldlm_namespace_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb0751fa4 RQF_LLOG_ORIGIN_HANDLE_DESTROY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb0fdaecd ldlm_namespace_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb12e5660 ptlrpc_set_import_active +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb145cbbb sptlrpc_gc_del_sec +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb1b43d8a dump_rcs +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb27c2374 lustre_msg_get_jobid +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb291473d lustre_msg_early_size +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb2d82bda ptlrpc_retain_replayable_request +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb4a7ecf3 lustre_msg_add_op_flags +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb512ebc2 sptlrpc_parse_flavor +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb61cb95a RQF_MDS_GETXATTR +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb68476df interval_erase +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb6aafd03 RQF_MDS_DONE_WRITING +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb7b38189 RMF_MDT_MD +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb7fa3cc8 RMF_LLOG_LOG_HDR +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb8387e4f ptlrpc_nrs_policy_register +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb89d2e0d client_import_find_conn +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb903634e RQF_OST_CONNECT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb94e0e5d lustre_pack_reply_flags +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb97251fc sptlrpc_import_sec_ref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb9b19223 req_capsule_get_size +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb9b631cf lustre_swab_mgs_config_body +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbaa76097 lustre_msg_string +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbb9298ce client_import_add_conn +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbc1370dc lustre_shrink_msg +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbcbdaece sptlrpc_import_flush_all_ctx +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbd83bc44 RQF_OBD_SET_INFO +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbe47bc7e ping_evictor_start +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbef769cc RQF_CONNECT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbf7ed5c8 ptlrpc_request_addref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbf98b86f RQF_MDS_QUOTACHECK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbffd4313 RQF_OST_BRW_WRITE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc016a2d6 ptl_send_rpc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc069cb1d ldlm_pool_get_slv +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc06c4670 lustre_msg_get_versions +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc0867da7 RMF_REC_REINT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc0cdf55e RMF_MGS_SEND_PARAM +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc185958d req_capsule_other_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc2986d28 lustre_swab_ldlm_res_id +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc2b1af57 RQF_MGS_SET_INFO +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc2be922a RMF_SYMTGT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc2f021d9 ldlm_lock_downgrade +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc53d54b2 req_capsule_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc559a634 RMF_LAYOUT_INTENT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc60a60e1 RQF_OST_STATFS +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc6191470 ptlrpc_unpack_req_msg +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc669b5a9 ldlm_completion_ast +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc694be4b RQF_LLOG_ORIGIN_HANDLE_PREV_BLOCK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc763fabc sptlrpc_process_config +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc78a5464 ptlrpc_free_rq_pool +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc79b9c67 ldlm_pools_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc7ca8257 RQF_MDS_REINT_SETATTR +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc7e47564 ptlrpc_interrupted_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc823095a ldlm_enqueue_pack +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc88afadf req_capsule_shrink +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc8c3af01 ldlm_cli_cancel_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc8f586a9 ptlrpc_connection_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc91bddeb lustre_free_reply_state +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc959c2f9 lock_res_and_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xca5a81ec ptlrpc_pinger_ir_down +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xcb16107d ptlrpc_set_wait +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xcb2cc0cf lustre_swab_lquota_lvb +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xcb2ceaff sptlrpc_secflags2str +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xcccacc22 ptlrpc_hpreq_handler +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xcdb783e8 ptlrpc_save_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xce1a0b3e sptlrpc_lprocfs_cliobd_attach +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xce1a689b sptlrpc_enc_pool_add_user +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xce86066d lustre_msg_set_slv +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xcec513c9 RQF_MDS_UNPIN +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xced015be sptlrpc_rule_set_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xcf9963db lustre_msg_get_op_flags +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xcf9aab6a RQF_MDS_DISCONNECT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd104770a ldlm_blocking_ast +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd17a5da2 ptlrpc_fail_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd2983334 lustre_swab_swap_layouts +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd2e0d4eb lustre_msg_get_opc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd3dae408 ldlm_it2str +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd609a339 ldlm_lock_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd67a5d7b lustre_swab_update_reply_buf +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd68fed52 ptlrpc_service_health_check +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd69e0a27 RQF_MDS_IS_SUBDIR +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd6c3ebfb RMF_FIEMAP_KEY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd7910326 lustre_swab_obd_statfs +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd7b2a6e6 ptlrpc_request_pack +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd8b91b3e lustre_swab_lov_desc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd8e5c940 sptlrpc_target_export_check +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd8f06300 RQF_MDS_HSM_PROGRESS +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd9017471 ptlrpc_set_add_new_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd9523c49 ldlm_pool_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd9561861 RQF_LDLM_INTENT_OPEN +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xda1cf25b unlock_res_and_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xdb1fb0a2 RQF_MDS_REINT_CREATE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xdb9d5a6a lustre_swab_niobuf_remote +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xdcac36b3 req_capsule_set_size +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xdd0ffb04 sptlrpc_flavor2name +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xdd30d7bf RMF_ACL +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xdd4ff9a3 lustre_pack_reply_v2 +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xddc40a85 lustre_msg_get_flags +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xde12d36b RMF_MDS_HSM_ARCHIVE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xde555d70 sptlrpc_enc_pool_del_user +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xdee87192 sptlrpc_conf_log_update_begin +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xdf29bdc2 ptlrpc_reconnect_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xdf68be71 __ptlrpc_prep_bulk_page +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xdf701ae7 lustre_swab_fid2path +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe0cc694c RQF_LLOG_ORIGIN_HANDLE_NEXT_BLOCK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe0da8df1 ldlm_extent_shift_kms +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe178d589 ptlrpc_request_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe1fa4faf ptlrpc_set_add_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe2534fe2 ldlm_namespace_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe2a19aa6 target_print_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe3068394 ptlrpc_obd_ping +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe3244cbe sptlrpc_gc_add_ctx +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe36f5ed6 ptlrpc_send_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe40e0a50 lustre_msg_get_transno +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe57bd972 sptlrpc_current_user_desc_size +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe5e8169b lustre_errno_ntoh +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe643998e RQF_OST_SETATTR +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe6f0dc96 RQF_OST_CREATE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe7062b5f RMF_U32 +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe7512278 ptlrpcd_addref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe85b6da3 lustre_swab_obdo +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe99d4a2f ptlrpc_req_set_repsize +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xeabac4fc sptlrpc_rule_set_merge +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xeb9ad09c client_obd_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xebb64e68 req_layout_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xec226f66 ping_evictor_stop +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xec939a00 RQF_MDS_REINT_UNLINK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xecace5c1 RQF_OST_GET_INFO_GENERIC +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xed1c10d6 ptlrpc_connection_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xed443043 client_import_del_conn +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xedcb740d sptlrpc_name2flavor_base +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xee4956b6 sptlrpc_req_replace_dead_ctx +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xee4c9ba8 ptlrpc_req_xid +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xef1aeca9 RMF_FLD_OPC +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xefb2e3f6 ptlrpc_lprocfs_brw +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf0241d6e lustre_swab_hsm_progress_kernel +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf0d52b5f ptlrpc_pinger_suppress_pings +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf1300275 _sptlrpc_enlarge_msg_inplace +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf229c7ab req_capsule_filled_sizes +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf23b5398 ptlrpc_abort_inflight +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf277c125 RQF_OST_GET_INFO_FIEMAP +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf27d49dc sptlrpc_target_choose_flavor +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf2fc92be sptlrpc_register_policy +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf346b1be _ldlm_lock_debug +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf35f132b lustre_swab_ldlm_resource_desc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf3d44370 RQF_OST_DESTROY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf43540b9 lustre_swab_mgs_nidtbl_entry +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf45085e1 sptlrpc_conf_log_stop +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf51f57b3 ldlm_pool_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf5582295 ldlm_reprocess_all_ns +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf55c033b RMF_MGS_CONFIG_BODY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf584a16b sptlrpc_part2name +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf596e9ae sptlrpc_conf_log_start +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf607fc23 sptlrpc_flavor2name_base +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf617ab8a lustre_msg_get_conn_cnt +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf6364481 ldlm_prep_enqueue_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf64765be ptlrpc_mark_interrupted +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf697b756 ldlm_dump_all_namespaces +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf7408f84 lustre_swab_hsm_request +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf7ba40c0 RMF_MDS_HSM_PROGRESS +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf85cb27e sptlrpc_parse_rule +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf870fed9 RQF_LDLM_GL_DESC_CALLBACK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf9051bd6 RQF_QC_CALLBACK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf91f6506 req_capsule_server_swab_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf94e41e0 deuuidify +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf973aa93 lustre_swab_lov_user_md_v1 +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf99cf693 ldlm_destroy_flock_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf9ee11e2 lustre_msg_set_last_committed +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf9f72dfc RMF_TGTUUID +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xfa51688d interval_insert +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xfb444a98 ptlrpc_prep_fcset +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xfc2fa83f ptlrpc_del_timeout_client +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xfd148bf8 RMF_LDLM_INTENT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xfd3e79a6 ldlm_get_enq_timeout +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xfde7e6de ldlm_lock_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xfee792bb ldlm_blocking_ast_nocheck +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xff02a0e9 ldlm_lock_set_data +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xff2b5341 ptlrpc_prep_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xff7aa338 ptlrpc_restart_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xffc807e8 sptlrpc_unpack_user_desc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xffe29c3f RQF_LDLM_ENQUEUE +EXPORT_SYMBOL drivers/staging/media/cxd2099/cxd2099 0x51a87fcb cxd2099_attach +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x0a755a12 rtllib_wx_set_encode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x0cd3af68 rtllib_wx_get_name +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x1bf21695 rtllib_ps_tx_ack +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x1dc89a1f dot11d_init +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x25913135 rtllib_wx_get_power +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x2b75cf35 RemovePeerTS +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x2bb04d12 HT_update_self_and_peer_setting +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x33667577 rtllib_wpa_supplicant_ioctl +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x36b3ca31 rtllib_legal_channel +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x37500f31 rtllib_wx_get_wap +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x3a816f6e rtllib_wx_set_rawtx +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x401c536d rtllib_DisableIntelPromiscuousMode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x410f40e6 rtllib_reset_queue +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x468957a6 rtllib_start_scan_syncro +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x4cfc4bd3 rtllib_MgntDisconnect +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x54ea38c1 rtllib_wx_set_gen_ie +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x56f6ed49 rtllib_wx_get_freq +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x5dc6614c rtllib_EnableIntelPromiscuousMode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x63301f5a rtllib_xmit +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x65964c48 rtllib_wx_set_rts +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x67e1bfe0 rtllib_sta_ps_send_null_frame +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x6f781477 rtllib_wx_set_freq +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x708b666e rtllib_wx_get_essid +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x7232ec2c rtllib_act_scanning +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x73deec4f Dot11d_Channelmap +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x8cc27354 rtllib_softmac_start_protocol +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x8fd13259 rtllib_wx_get_encode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x96d280c8 rtllib_wx_get_rate +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x9cc57c21 notify_wx_assoc_event +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x9ea2415f rtllib_start_send_beacons +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xa2a8db67 rtllib_wx_set_auth +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xaf5c79f6 rtllib_wx_set_rate +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xb1d3f53c rtllib_wx_set_essid +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xb213d729 rtllib_wx_set_encode_ext +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xb834b784 rtllib_rx +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xba1af3d2 rtllib_wx_set_wap +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xbe1420f2 rt_global_debug_component +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xc33825ab rtllib_wx_set_scan +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xd22bdd50 rtllib_wx_get_mode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xd31aadaf rtllib_wx_set_mlme +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xd5d2de9f rtllib_stop_send_beacons +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xd9c433ca free_rtllib +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xdbb129f2 rtllib_softmac_stop_protocol +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xdf78f620 rtllib_wlan_frequencies +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xe22ac859 rtllib_stop_scan_syncro +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xe48658f5 alloc_rtllib +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xe4c9a267 rtllib_wx_set_power +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xe85ee02f rtllib_stop_scan +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xe8dcb0ab rtllib_wx_get_rts +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xeba5246e rtllib_wx_set_mode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xf60fe8a1 rtllib_get_beacon +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xfab6dc95 rtllib_wx_get_scan +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x0536474e ieee80211_softmac_stop_protocol_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x0f099f61 ieee80211_is_54g_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x14841a72 Dot11d_Init +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x1fd17c6f HTUpdateSelfAndPeerSetting +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x21334755 ieee80211_wx_set_encode_ext_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x249ee7c2 ieee80211_wx_get_scan_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x2523c8e5 ieee80211_start_scan_syncro_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x25b8d57d ieee80211_get_beacon_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x264a80d8 ieee80211_wx_set_rts_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x375962d6 ieee80211_wx_set_freq_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x37d6b609 ToLegalChannel +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x3f10225b ieee80211_wx_set_mlme_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x3f340847 ieee80211_txb_free_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x428f45fb ieee80211_wx_get_wap_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x45012247 notify_wx_assoc_event_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x53f5171e ieee80211_wx_get_mode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x54c8deb0 IsLegalChannel +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x55f13639 ieee80211_rx_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x56043902 ieee80211_stop_scan_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x5ea19407 ieee80211_wx_get_rate_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x5ee9a352 Dot11d_UpdateCountryIe +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x61ea895d ieee80211_is_shortslot_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x62e2f208 ieee80211_wx_set_gen_ie_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x677401bf ieee80211_softmac_start_protocol_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x688c311c Dot11d_Reset +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x6c31a746 ieee80211_wx_get_encode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x6cb5325c ieee80211_wpa_supplicant_ioctl_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x6fd88d30 SendDisassociation_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x72fe40f9 DOT11D_GetMaxTxPwrInDbm +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x74573e7e ieee80211_disassociate_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x7560a767 ieee80211_wx_set_encode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x7c435b6d ieee80211_wake_queue_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x878e2f7d ieee80211_softmac_scan_syncro_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x89af0cf9 ieee80211_wx_set_wap_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x8e685c9d DOT11D_ScanComplete +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x8efa1b95 ieee80211_stop_send_beacons_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x90ada02e ieee80211_softmac_xmit_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xa2bd9509 ieee80211_start_send_beacons_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xa42177c1 ieee80211_send_probe_requests_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xa6cec026 ieee80211_wx_get_name_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xb064d562 ieee80211_wx_set_rate_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xb3e48cb1 ieee80211_ps_tx_ack_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xbd30567b ieee80211_wx_set_mode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xc073beda ieee80211_rx_mgt_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xc370a43e ieee80211_wlan_frequencies_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xca5ba6a7 ieee80211_wx_set_scan_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xd5499bb3 ieee80211_wx_set_rawtx_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xd718be14 ieee80211_wx_get_essid_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xd99c23b3 ieee80211_wx_get_freq_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xdebacb2c ieee80211_wx_get_power_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xdfd489f5 ieee80211_stop_queue_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xe38c9bba ieee80211_wx_set_power_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xea2eee82 ieee80211_wx_set_essid_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xed6ac9da ieee80211_wx_get_rts_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xf91b7817 ieee80211_wx_set_auth_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xfe764bdb ieee80211_wx_get_encode_ext_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xff43e338 ieee80211_reset_queue_rsl +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x0737f2ba iscsit_setup_nop_out +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x087bd3f0 iscsit_build_logout_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x0f6e05bd iscsit_process_text_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x153c2258 iscsit_find_cmd_from_itt +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x168a361f iscsit_cause_connection_reinstatement +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x20ddc062 iscsit_build_rsp_pdu +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x2b43b51e iscsit_handle_logout_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x4936007f iscsit_check_dataout_payload +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x50008446 iscsit_set_unsoliticed_dataout +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x6c6cfd42 iscsit_process_scsi_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x72aa5cb1 iscsit_logout_post_handler +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x7ad4bc31 iscsit_tmr_post_handler +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x7f2bc931 iscsit_build_task_mgt_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x884302ac iscsit_allocate_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x8fb739c9 iscsit_register_transport +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x9bb39504 iscsit_handle_task_mgt_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x9f78b3a0 iscsit_stop_dataout_timer +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x9fbe068e iscsit_check_dataout_hdr +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xa2931b04 iscsit_build_reject +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xaae0f6b7 iscsit_build_text_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xb55d60a8 iscsit_unregister_transport +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xcb340834 iscsit_increment_maxcmdsn +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xcd52db79 iscsit_process_nop_out +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xd3040cc1 iscsit_setup_scsi_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xdb6c73d2 iscsit_build_nopin_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xddff1d98 iscsit_release_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xe24ad759 iscsit_sequence_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xe5de7ea0 iscsit_setup_text_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x02de3b18 transport_set_vpd_ident +EXPORT_SYMBOL drivers/target/target_core_mod 0x034d5cdd sbc_get_write_same_sectors +EXPORT_SYMBOL drivers/target/target_core_mod 0x036b3071 target_submit_cmd_map_sgls +EXPORT_SYMBOL drivers/target/target_core_mod 0x0c8a1497 core_alua_check_nonop_delay +EXPORT_SYMBOL drivers/target/target_core_mod 0x0f240aa3 passthrough_attrib_attrs +EXPORT_SYMBOL drivers/target/target_core_mod 0x116872cd core_tpg_check_initiator_node_acl +EXPORT_SYMBOL drivers/target/target_core_mod 0x1454b601 transport_deregister_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x14fafcc0 transport_lookup_tmr_lun +EXPORT_SYMBOL drivers/target/target_core_mod 0x1800cfd3 sbc_get_device_type +EXPORT_SYMBOL drivers/target/target_core_mod 0x225f1bf2 transport_generic_handle_tmr +EXPORT_SYMBOL drivers/target/target_core_mod 0x236c4180 core_tpg_set_initiator_node_tag +EXPORT_SYMBOL drivers/target/target_core_mod 0x24dafead transport_alloc_session_tags +EXPORT_SYMBOL drivers/target/target_core_mod 0x262066db target_submit_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x27fccdba target_backend_unregister +EXPORT_SYMBOL drivers/target/target_core_mod 0x2b52c018 transport_init_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x2c5a5816 spc_parse_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0x2d58477f target_show_dynamic_sessions +EXPORT_SYMBOL drivers/target/target_core_mod 0x38f46e69 transport_generic_free_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x3fac3fdc target_execute_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x47da99bd target_setup_cmd_from_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0x4bc8974c transport_register_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x5385e4f3 core_tpg_register +EXPORT_SYMBOL drivers/target/target_core_mod 0x5a87a80c target_put_sess_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x6511d650 transport_free_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x6812c71f target_complete_cmd_with_length +EXPORT_SYMBOL drivers/target/target_core_mod 0x69e9ef8d core_tpg_set_initiator_node_queue_depth +EXPORT_SYMBOL drivers/target/target_core_mod 0x70cbf883 spc_emulate_evpd_83 +EXPORT_SYMBOL drivers/target/target_core_mod 0x7168bd1d transport_deregister_session_configfs +EXPORT_SYMBOL drivers/target/target_core_mod 0x730189e1 transport_wait_for_tasks +EXPORT_SYMBOL drivers/target/target_core_mod 0x7395575e target_register_template +EXPORT_SYMBOL drivers/target/target_core_mod 0x79d01103 spc_emulate_report_luns +EXPORT_SYMBOL drivers/target/target_core_mod 0x7dbada9d transport_set_vpd_ident_type +EXPORT_SYMBOL drivers/target/target_core_mod 0x7f3dc75c target_get_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x85aa880c transport_set_vpd_assoc +EXPORT_SYMBOL drivers/target/target_core_mod 0x8820688d transport_generic_new_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x903eb201 transport_init_se_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x90761393 sbc_parse_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0x9560096b core_tpg_deregister +EXPORT_SYMBOL drivers/target/target_core_mod 0x969c9ac0 core_tmr_alloc_req +EXPORT_SYMBOL drivers/target/target_core_mod 0x96bd91b6 target_undepend_item +EXPORT_SYMBOL drivers/target/target_core_mod 0x96cdf497 target_sess_cmd_list_set_waiting +EXPORT_SYMBOL drivers/target/target_core_mod 0x9816a134 sbc_dif_copy_prot +EXPORT_SYMBOL drivers/target/target_core_mod 0x9a9ba6f2 target_wait_for_sess_cmds +EXPORT_SYMBOL drivers/target/target_core_mod 0xa0e481b8 transport_check_aborted_status +EXPORT_SYMBOL drivers/target/target_core_mod 0xaeea2844 target_depend_item +EXPORT_SYMBOL drivers/target/target_core_mod 0xb2dcdf0d transport_init_session_tags +EXPORT_SYMBOL drivers/target/target_core_mod 0xb74ee7ee transport_handle_cdb_direct +EXPORT_SYMBOL drivers/target/target_core_mod 0xb76aa0c2 sbc_dif_verify +EXPORT_SYMBOL drivers/target/target_core_mod 0xbcd6d415 transport_lookup_cmd_lun +EXPORT_SYMBOL drivers/target/target_core_mod 0xc099caed target_lun_is_rdonly +EXPORT_SYMBOL drivers/target/target_core_mod 0xc1675d10 transport_kmap_data_sg +EXPORT_SYMBOL drivers/target/target_core_mod 0xc3b33aaf target_complete_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xc3df2fc2 target_get_sess_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xc4fafcb0 spc_emulate_inquiry_std +EXPORT_SYMBOL drivers/target/target_core_mod 0xcb2cced6 transport_generic_request_failure +EXPORT_SYMBOL drivers/target/target_core_mod 0xd56dbe35 core_tpg_get_initiator_node_acl +EXPORT_SYMBOL drivers/target/target_core_mod 0xd7b35096 target_unregister_template +EXPORT_SYMBOL drivers/target/target_core_mod 0xe0c73e7e passthrough_parse_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0xe2a74285 __transport_register_session +EXPORT_SYMBOL drivers/target/target_core_mod 0xe4a3e673 target_put_session +EXPORT_SYMBOL drivers/target/target_core_mod 0xe4e5c0bd transport_kunmap_data_sg +EXPORT_SYMBOL drivers/target/target_core_mod 0xf01621c7 transport_set_vpd_proto_id +EXPORT_SYMBOL drivers/target/target_core_mod 0xf3d138c9 target_submit_tmr +EXPORT_SYMBOL drivers/target/target_core_mod 0xf81117f1 transport_send_check_condition_and_sense +EXPORT_SYMBOL drivers/target/target_core_mod 0xf919216b sbc_attrib_attrs +EXPORT_SYMBOL drivers/target/target_core_mod 0xfdd4334a transport_backend_register +EXPORT_SYMBOL drivers/target/target_core_mod 0xfe032984 target_nacl_find_deve +EXPORT_SYMBOL drivers/usb/class/cdc-wdm 0xc4544a78 usb_cdc_wdm_register +EXPORT_SYMBOL drivers/usb/gadget/function/usb_f_uvc 0x92e9ebac uvc_set_trace_param +EXPORT_SYMBOL drivers/usb/gadget/libcomposite 0x2f770564 usb_os_desc_prepare_interf_dir +EXPORT_SYMBOL drivers/usb/host/sl811-hcd 0xaf470dbc sl811h_driver +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x3eeee0bc usb_wwan_dtr_rts +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x41b81805 usb_wwan_write +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x483b412d usb_wwan_write_room +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x5872b6b8 usb_wwan_tiocmget +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x5faddee7 usb_wwan_open +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x6532fc3b usb_wwan_close +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x786e939d usb_wwan_port_remove +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x7d5ea14d usb_wwan_resume +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x958f0d5d usb_wwan_tiocmset +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xda7635b6 usb_wwan_suspend +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xea27e8cd usb_wwan_ioctl +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xffae8bbe usb_wwan_chars_in_buffer +EXPORT_SYMBOL drivers/usb/serial/usbserial 0x20fe95ea usb_serial_suspend +EXPORT_SYMBOL drivers/usb/serial/usbserial 0xa7e7ce70 usb_serial_resume +EXPORT_SYMBOL drivers/vhost/vringh 0x0fd987f7 vringh_abandon_user +EXPORT_SYMBOL drivers/vhost/vringh 0x14397bb5 vringh_notify_disable_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x32da6f89 vringh_notify_enable_user +EXPORT_SYMBOL drivers/vhost/vringh 0x39c9d7a5 vringh_complete_multi_user +EXPORT_SYMBOL drivers/vhost/vringh 0x3b304ebb vringh_iov_push_user +EXPORT_SYMBOL drivers/vhost/vringh 0x3c71c418 vringh_getdesc_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x4311cd91 vringh_iov_pull_user +EXPORT_SYMBOL drivers/vhost/vringh 0x4f384f8b vringh_need_notify_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x58abf4ed vringh_init_user +EXPORT_SYMBOL drivers/vhost/vringh 0x5fedea44 vringh_getdesc_user +EXPORT_SYMBOL drivers/vhost/vringh 0x6432894b vringh_init_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x8d080d03 vringh_need_notify_user +EXPORT_SYMBOL drivers/vhost/vringh 0x95e62337 vringh_abandon_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x97fa07e9 vringh_iov_push_kern +EXPORT_SYMBOL drivers/vhost/vringh 0xb4b63575 vringh_notify_enable_kern +EXPORT_SYMBOL drivers/vhost/vringh 0xc578f0f7 vringh_complete_user +EXPORT_SYMBOL drivers/vhost/vringh 0xd355e031 vringh_complete_kern +EXPORT_SYMBOL drivers/vhost/vringh 0xd609393d vringh_notify_disable_user +EXPORT_SYMBOL drivers/vhost/vringh 0xde804bb9 vringh_iov_pull_kern +EXPORT_SYMBOL drivers/video/backlight/lcd 0x6251c574 lcd_device_register +EXPORT_SYMBOL drivers/video/backlight/lcd 0x96fe7f18 devm_lcd_device_register +EXPORT_SYMBOL drivers/video/backlight/lcd 0xe98a53e1 lcd_device_unregister +EXPORT_SYMBOL drivers/video/backlight/lcd 0xfc357edd 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 0x3f2725be svga_tilecopy +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x49b1fe54 svga_settile +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x4ab38ef2 svga_set_default_crt_regs +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x5c8d0ad3 svga_tileblit +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x6e4adb1e svga_check_timings +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x80f24d95 svga_wcrt_multi +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x84c161f0 svga_tilefill +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x8de63fb4 svga_set_timings +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x9d18b01d svga_get_tilemax +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xd1429fca svga_wseq_multi +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xd22ca511 svga_set_default_atc_regs +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xe28d2a49 svga_set_default_gfx_regs +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xe5a29c0c svga_tilecursor +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xeea7eed7 svga_get_caps +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xef774f5d svga_compute_pll +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xf2db5956 svga_match_format +EXPORT_SYMBOL drivers/video/fbdev/cyber2000fb 0x0cc3ede5 cyber2000fb_detach +EXPORT_SYMBOL drivers/video/fbdev/cyber2000fb 0x30a421a7 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/matrox/g450_pll 0x3e9739d2 g450_mnp2f +EXPORT_SYMBOL drivers/video/fbdev/matrox/g450_pll 0x48e677b1 matroxfb_g450_setclk +EXPORT_SYMBOL drivers/video/fbdev/matrox/g450_pll 0x5624d4fb matroxfb_g450_setpll_cond +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_DAC1064 0x25dc1b51 DAC1064_global_restore +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_DAC1064 0xa3c69945 matrox_mystique +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_DAC1064 0xc7e29711 matrox_G100 +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_DAC1064 0xd0a9b921 DAC1064_global_init +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_Ti3026 0x57011d27 matrox_millennium +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_accel 0xe895b121 matrox_cfbX_init +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_base 0x0c36bcb8 matroxfb_unregister_driver +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_base 0x66c7513e matroxfb_enable_irq +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_base 0xb29c1b18 matroxfb_register_driver +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_base 0xf7746297 matroxfb_wait_for_sync +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_g450 0x12393250 matroxfb_g450_connect +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_g450 0xf2868b2a matroxfb_g450_shutdown +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0x25cf8049 matroxfb_PLL_calcclock +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0x4b9dc823 matroxfb_DAC_in +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0x88664b0f matroxfb_DAC_out +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0x99c6e385 matroxfb_vgaHWinit +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0xad72cb75 matroxfb_vgaHWrestore +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0xcdc90c64 matroxfb_var2my +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0xcfb0ce59 matroxfb_read_pins +EXPORT_SYMBOL drivers/video/fbdev/mb862xx/mb862xxfb 0x1e4ee887 mb862xxfb_init_accel +EXPORT_SYMBOL drivers/video/fbdev/sis/sisfb 0x3037658e sis_malloc +EXPORT_SYMBOL drivers/video/fbdev/sis/sisfb 0x454a3cf0 sis_free +EXPORT_SYMBOL drivers/video/vgastate 0x686de290 restore_vga +EXPORT_SYMBOL drivers/video/vgastate 0xe7a2620e save_vga +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0x33bc5fcf w1_ds2760_store_eeprom +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0x93c82243 w1_ds2760_write +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0xbbc8c714 w1_ds2760_read +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0xe5642b3a w1_ds2760_recall_eeprom +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2780 0x4b7e5897 w1_ds2780_io +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2780 0x8eb7daa1 w1_ds2780_eeprom_cmd +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2781 0x0b8f41f3 w1_ds2781_eeprom_cmd +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2781 0x32595f9c w1_ds2781_io +EXPORT_SYMBOL drivers/w1/wire 0x91b7c1e6 w1_register_family +EXPORT_SYMBOL drivers/w1/wire 0x9394ac6c w1_remove_master_device +EXPORT_SYMBOL drivers/w1/wire 0xb3da5f78 w1_add_master_device +EXPORT_SYMBOL drivers/w1/wire 0xdfada65d w1_unregister_family +EXPORT_SYMBOL fs/configfs/configfs 0x0801cf11 config_item_set_name +EXPORT_SYMBOL fs/configfs/configfs 0x1dcdb21b configfs_register_subsystem +EXPORT_SYMBOL fs/configfs/configfs 0x224cfb18 config_item_init_type_name +EXPORT_SYMBOL fs/configfs/configfs 0x43d63540 config_item_get +EXPORT_SYMBOL fs/configfs/configfs 0x4557c198 config_group_init_type_name +EXPORT_SYMBOL fs/configfs/configfs 0x65d22b14 configfs_unregister_subsystem +EXPORT_SYMBOL fs/configfs/configfs 0x6ad6c958 config_item_put +EXPORT_SYMBOL fs/configfs/configfs 0xbca1e8bd config_group_init +EXPORT_SYMBOL fs/configfs/configfs 0xd2715316 configfs_undepend_item +EXPORT_SYMBOL fs/configfs/configfs 0xf0dd6bc4 configfs_depend_item +EXPORT_SYMBOL fs/configfs/configfs 0xfd7892d8 config_group_find_item +EXPORT_SYMBOL fs/exofs/libore 0x18def66a ore_write +EXPORT_SYMBOL fs/exofs/libore 0x28806871 ore_verify_layout +EXPORT_SYMBOL fs/exofs/libore 0x408d6679 ore_get_io_state +EXPORT_SYMBOL fs/exofs/libore 0x4527e170 ore_calc_stripe_info +EXPORT_SYMBOL fs/exofs/libore 0x4c6b056d extract_attr_from_ios +EXPORT_SYMBOL fs/exofs/libore 0x73acb03d ore_check_io +EXPORT_SYMBOL fs/exofs/libore 0x75f7c380 ore_put_io_state +EXPORT_SYMBOL fs/exofs/libore 0xa3d2a634 g_attr_logical_length +EXPORT_SYMBOL fs/exofs/libore 0xb0a8aa50 ore_truncate +EXPORT_SYMBOL fs/exofs/libore 0xb3a5339a ore_get_rw_state +EXPORT_SYMBOL fs/exofs/libore 0xb4f4fb07 ore_read +EXPORT_SYMBOL fs/exofs/libore 0xc56682fd ore_remove +EXPORT_SYMBOL fs/exofs/libore 0xc8777664 ore_create +EXPORT_SYMBOL fs/fscache/fscache 0x00eb2d3a fscache_init_cache +EXPORT_SYMBOL fs/fscache/fscache 0x107ef073 __fscache_alloc_page +EXPORT_SYMBOL fs/fscache/fscache 0x1d186ccc fscache_object_init +EXPORT_SYMBOL fs/fscache/fscache 0x2cd5de1c __fscache_maybe_release_page +EXPORT_SYMBOL fs/fscache/fscache 0x2ec9501d fscache_put_operation +EXPORT_SYMBOL fs/fscache/fscache 0x35b22d01 fscache_mark_page_cached +EXPORT_SYMBOL fs/fscache/fscache 0x39e14aac __fscache_attr_changed +EXPORT_SYMBOL fs/fscache/fscache 0x3a7d22f1 fscache_obtained_object +EXPORT_SYMBOL fs/fscache/fscache 0x3ede43f1 __fscache_uncache_page +EXPORT_SYMBOL fs/fscache/fscache 0x4a67a873 fscache_enqueue_operation +EXPORT_SYMBOL fs/fscache/fscache 0x4ace1b4e fscache_object_destroy +EXPORT_SYMBOL fs/fscache/fscache 0x5126519e __fscache_write_page +EXPORT_SYMBOL fs/fscache/fscache 0x51e92700 __fscache_readpages_cancel +EXPORT_SYMBOL fs/fscache/fscache 0x56a11944 fscache_operation_init +EXPORT_SYMBOL fs/fscache/fscache 0x58257581 __fscache_wait_on_page_write +EXPORT_SYMBOL fs/fscache/fscache 0x59d6856c fscache_object_lookup_negative +EXPORT_SYMBOL fs/fscache/fscache 0x59e06c57 fscache_fsdef_index +EXPORT_SYMBOL fs/fscache/fscache 0x6dd41bd9 __fscache_read_or_alloc_pages +EXPORT_SYMBOL fs/fscache/fscache 0x72453d95 fscache_cache_cleared_wq +EXPORT_SYMBOL fs/fscache/fscache 0x731633d9 __fscache_unregister_netfs +EXPORT_SYMBOL fs/fscache/fscache 0x74530ecd fscache_op_debug_id +EXPORT_SYMBOL fs/fscache/fscache 0x7478f371 __fscache_register_netfs +EXPORT_SYMBOL fs/fscache/fscache 0x7e8b25e7 __fscache_uncache_all_inode_pages +EXPORT_SYMBOL fs/fscache/fscache 0x7ff1a0f3 __fscache_relinquish_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x8247ca15 fscache_object_retrying_stale +EXPORT_SYMBOL fs/fscache/fscache 0x83e0413e __fscache_disable_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x8c8f3c2a __fscache_update_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x91f0c508 fscache_object_mark_killed +EXPORT_SYMBOL fs/fscache/fscache 0x98c183d2 __fscache_read_or_alloc_page +EXPORT_SYMBOL fs/fscache/fscache 0xa7df54f4 __fscache_wait_on_invalidate +EXPORT_SYMBOL fs/fscache/fscache 0xb46bbdc3 fscache_add_cache +EXPORT_SYMBOL fs/fscache/fscache 0xb4a52f9e __fscache_check_page_write +EXPORT_SYMBOL fs/fscache/fscache 0xb54dabf9 __fscache_enable_cookie +EXPORT_SYMBOL fs/fscache/fscache 0xba21a3ff fscache_io_error +EXPORT_SYMBOL fs/fscache/fscache 0xbac9107e __fscache_invalidate +EXPORT_SYMBOL fs/fscache/fscache 0xcb1241e7 fscache_op_complete +EXPORT_SYMBOL fs/fscache/fscache 0xd180584b __fscache_check_consistency +EXPORT_SYMBOL fs/fscache/fscache 0xd90b19c1 fscache_check_aux +EXPORT_SYMBOL fs/fscache/fscache 0xe07068b7 fscache_mark_pages_cached +EXPORT_SYMBOL fs/fscache/fscache 0xf03aa58e __fscache_acquire_cookie +EXPORT_SYMBOL fs/fscache/fscache 0xf1dac9c2 fscache_withdraw_cache +EXPORT_SYMBOL fs/ocfs2/cluster/ocfs2_nodemanager 0xbfd7d7a2 o2hb_global_heartbeat_active +EXPORT_SYMBOL fs/quota/quota_tree 0x09493af7 qtree_delete_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0x8d46acf5 qtree_entry_unused +EXPORT_SYMBOL fs/quota/quota_tree 0xc4ce32cc qtree_read_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0xcb5d09bb qtree_release_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0xfa460afe qtree_write_dquot +EXPORT_SYMBOL lib/cordic 0x434bfd07 cordic_calc_iq +EXPORT_SYMBOL lib/crc-ccitt 0x1a703ba1 crc_ccitt +EXPORT_SYMBOL lib/crc-ccitt 0x75811312 crc_ccitt_table +EXPORT_SYMBOL lib/crc-itu-t 0x6d356209 crc_itu_t +EXPORT_SYMBOL lib/crc-itu-t 0xd29b009f crc_itu_t_table +EXPORT_SYMBOL lib/crc7 0x56329ecc crc7_be +EXPORT_SYMBOL lib/crc7 0x7a222007 crc7_be_syndrome_table +EXPORT_SYMBOL lib/crc8 0xab9ad613 crc8_populate_lsb +EXPORT_SYMBOL lib/crc8 0xd09b2cba crc8 +EXPORT_SYMBOL lib/crc8 0xd4534d80 crc8_populate_msb +EXPORT_SYMBOL lib/libcrc32c 0x27000b29 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 0x3e84b981 lc_seq_printf_stats +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 0x57fd8ebc lc_seq_dump_details +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 0xefec290a lc_find +EXPORT_SYMBOL lib/lru_cache 0xfd525ec7 lc_put +EXPORT_SYMBOL lib/lz4/lz4_compress 0x0c222eb5 lz4_compress +EXPORT_SYMBOL lib/lz4/lz4hc_compress 0x682a23e0 lz4hc_compress +EXPORT_SYMBOL lib/raid6/raid6_pq 0x0bd662f6 raid6_gfmul +EXPORT_SYMBOL lib/raid6/raid6_pq 0x15fe0cd3 raid6_gfexp +EXPORT_SYMBOL lib/raid6/raid6_pq 0x5ba93f9d raid6_gfinv +EXPORT_SYMBOL lib/raid6/raid6_pq 0x7456cc61 raid6_empty_zero_page +EXPORT_SYMBOL lib/raid6/raid6_pq 0xce45a6f1 raid6_gfexi +EXPORT_SYMBOL lib/raid6/raid6_pq 0xd9e91f83 raid6_vgfmul +EXPORT_SYMBOL net/6lowpan/6lowpan 0x18f44913 lowpan_nhc_del +EXPORT_SYMBOL net/6lowpan/6lowpan 0xb6d86962 lowpan_nhc_add +EXPORT_SYMBOL net/802/p8022 0x2c237160 register_8022_client +EXPORT_SYMBOL net/802/p8022 0x7a54f642 unregister_8022_client +EXPORT_SYMBOL net/802/p8023 0x5c65f654 destroy_8023_client +EXPORT_SYMBOL net/802/p8023 0x9a1fc2a2 make_8023_client +EXPORT_SYMBOL net/802/psnap 0x9195ca08 unregister_snap_client +EXPORT_SYMBOL net/802/psnap 0xdd839350 register_snap_client +EXPORT_SYMBOL net/9p/9pnet 0x008391d6 p9_client_create_dotl +EXPORT_SYMBOL net/9p/9pnet 0x046c2437 p9stat_read +EXPORT_SYMBOL net/9p/9pnet 0x0ac84502 p9_client_clunk +EXPORT_SYMBOL net/9p/9pnet 0x1015bddd p9_client_rename +EXPORT_SYMBOL net/9p/9pnet 0x135f68a1 p9_client_attach +EXPORT_SYMBOL net/9p/9pnet 0x13dae70d p9_client_readlink +EXPORT_SYMBOL net/9p/9pnet 0x1d15a2cd p9_client_open +EXPORT_SYMBOL net/9p/9pnet 0x1e83b0af p9_client_setattr +EXPORT_SYMBOL net/9p/9pnet 0x1f1517e0 p9_is_proto_dotl +EXPORT_SYMBOL net/9p/9pnet 0x2d98f08a p9_client_mknod_dotl +EXPORT_SYMBOL net/9p/9pnet 0x32b3d70d p9_client_statfs +EXPORT_SYMBOL net/9p/9pnet 0x35d1e27e p9_idpool_get +EXPORT_SYMBOL net/9p/9pnet 0x3aeaa2d6 p9_parse_header +EXPORT_SYMBOL net/9p/9pnet 0x3caad9e1 p9_client_mkdir_dotl +EXPORT_SYMBOL net/9p/9pnet 0x3d73a797 p9_errstr2errno +EXPORT_SYMBOL net/9p/9pnet 0x44d2c2c0 p9stat_free +EXPORT_SYMBOL net/9p/9pnet 0x53d58a07 p9dirent_read +EXPORT_SYMBOL net/9p/9pnet 0x5b03f412 p9_client_lock_dotl +EXPORT_SYMBOL net/9p/9pnet 0x5ede5733 p9_client_renameat +EXPORT_SYMBOL net/9p/9pnet 0x5f6783eb v9fs_get_default_trans +EXPORT_SYMBOL net/9p/9pnet 0x630627b4 p9_client_fsync +EXPORT_SYMBOL net/9p/9pnet 0x63d4eb3d p9_client_stat +EXPORT_SYMBOL net/9p/9pnet 0x67b06ab0 p9_client_link +EXPORT_SYMBOL net/9p/9pnet 0x67fd0b57 p9_client_readdir +EXPORT_SYMBOL net/9p/9pnet 0x6ac88d1f p9_client_read +EXPORT_SYMBOL net/9p/9pnet 0x7682bbaa p9_client_getlock_dotl +EXPORT_SYMBOL net/9p/9pnet 0x891d7d8b p9_client_create +EXPORT_SYMBOL net/9p/9pnet 0x8b388905 v9fs_register_trans +EXPORT_SYMBOL net/9p/9pnet 0x974a999e p9_client_fcreate +EXPORT_SYMBOL net/9p/9pnet 0x98e4d45b v9fs_unregister_trans +EXPORT_SYMBOL net/9p/9pnet 0x9f6ffb00 v9fs_get_trans_by_name +EXPORT_SYMBOL net/9p/9pnet 0xaf7dcf64 p9_client_begin_disconnect +EXPORT_SYMBOL net/9p/9pnet 0xbb4099bb p9_is_proto_dotu +EXPORT_SYMBOL net/9p/9pnet 0xbbc28192 p9_tag_lookup +EXPORT_SYMBOL net/9p/9pnet 0xbc3b91db p9_release_pages +EXPORT_SYMBOL net/9p/9pnet 0xbda17b20 p9_client_cb +EXPORT_SYMBOL net/9p/9pnet 0xc5db54a9 p9_idpool_destroy +EXPORT_SYMBOL net/9p/9pnet 0xd9b4af2f p9_client_getattr_dotl +EXPORT_SYMBOL net/9p/9pnet 0xdd95afad p9_client_write +EXPORT_SYMBOL net/9p/9pnet 0xde13e2a1 p9_client_remove +EXPORT_SYMBOL net/9p/9pnet 0xe58a3360 p9_error_init +EXPORT_SYMBOL net/9p/9pnet 0xe5dba22d p9_client_unlinkat +EXPORT_SYMBOL net/9p/9pnet 0xe79cf1bf p9_client_symlink +EXPORT_SYMBOL net/9p/9pnet 0xf4a111d8 p9_idpool_create +EXPORT_SYMBOL net/9p/9pnet 0xf7d5e6d8 p9_client_wstat +EXPORT_SYMBOL net/9p/9pnet 0xf7e245b7 p9_client_destroy +EXPORT_SYMBOL net/9p/9pnet 0xf8097211 p9_client_disconnect +EXPORT_SYMBOL net/9p/9pnet 0xf84f2022 p9_idpool_put +EXPORT_SYMBOL net/9p/9pnet 0xfa3a1a36 p9_client_walk +EXPORT_SYMBOL net/9p/9pnet 0xfd40c79d p9_idpool_check +EXPORT_SYMBOL net/appletalk/appletalk 0x83dc5435 aarp_send_ddp +EXPORT_SYMBOL net/appletalk/appletalk 0x8e68ef28 atrtr_get_dev +EXPORT_SYMBOL net/appletalk/appletalk 0x90b6c88f atalk_find_dev_addr +EXPORT_SYMBOL net/appletalk/appletalk 0xb5012b86 alloc_ltalkdev +EXPORT_SYMBOL net/atm/atm 0x204c5f29 atm_dev_lookup +EXPORT_SYMBOL net/atm/atm 0x252ce6bb atm_dev_deregister +EXPORT_SYMBOL net/atm/atm 0x2cc2d52d vcc_hash +EXPORT_SYMBOL net/atm/atm 0x4443d399 atm_proc_root +EXPORT_SYMBOL net/atm/atm 0x4c4c4a59 atm_dev_register +EXPORT_SYMBOL net/atm/atm 0x4f84a1f7 deregister_atm_ioctl +EXPORT_SYMBOL net/atm/atm 0x5f90d7a9 register_atm_ioctl +EXPORT_SYMBOL net/atm/atm 0x86336ab8 atm_dev_signal_change +EXPORT_SYMBOL net/atm/atm 0x863d6cd7 atm_charge +EXPORT_SYMBOL net/atm/atm 0x887c3f11 atm_init_aal5 +EXPORT_SYMBOL net/atm/atm 0x9feaf287 sonet_subtract_stats +EXPORT_SYMBOL net/atm/atm 0xaa024146 sonet_copy_stats +EXPORT_SYMBOL net/atm/atm 0xb7306aea vcc_release_async +EXPORT_SYMBOL net/atm/atm 0xbef21f5c atm_alloc_charge +EXPORT_SYMBOL net/atm/atm 0xca87b453 vcc_sklist_lock +EXPORT_SYMBOL net/atm/atm 0xd996e16c atm_dev_release_vccs +EXPORT_SYMBOL net/atm/atm 0xdb3e54ef vcc_insert_socket +EXPORT_SYMBOL net/atm/atm 0xeae934b3 vcc_process_recv_queue +EXPORT_SYMBOL net/atm/atm 0xf49bc67a atm_pcr_goal +EXPORT_SYMBOL net/ax25/ax25 0x0450fedf ax25_linkfail_register +EXPORT_SYMBOL net/ax25/ax25 0x242852b9 ax25_uid_policy +EXPORT_SYMBOL net/ax25/ax25 0x28ba989b ax25_listen_register +EXPORT_SYMBOL net/ax25/ax25 0x3afee63e ax25_findbyuid +EXPORT_SYMBOL net/ax25/ax25 0x4502c65a asc2ax +EXPORT_SYMBOL net/ax25/ax25 0x53dea1ff ax2asc +EXPORT_SYMBOL net/ax25/ax25 0x82d123a7 ax25_linkfail_release +EXPORT_SYMBOL net/ax25/ax25 0x8ede9e26 ax25_protocol_release +EXPORT_SYMBOL net/ax25/ax25 0x90e314ef ax25_find_cb +EXPORT_SYMBOL net/ax25/ax25 0xa7f3015b ax25_display_timer +EXPORT_SYMBOL net/ax25/ax25 0xc112ceb1 ax25_ip_xmit +EXPORT_SYMBOL net/ax25/ax25 0xc1444946 ax25cmp +EXPORT_SYMBOL net/ax25/ax25 0xd43ecbf1 null_ax25_address +EXPORT_SYMBOL net/ax25/ax25 0xe97ccb7f ax25_header_ops +EXPORT_SYMBOL net/ax25/ax25 0xf3303125 ax25_listen_release +EXPORT_SYMBOL net/ax25/ax25 0xfcbd699f ax25_send_frame +EXPORT_SYMBOL net/bluetooth/bluetooth 0x0235e3db l2cap_conn_put +EXPORT_SYMBOL net/bluetooth/bluetooth 0x02b26158 bt_sock_stream_recvmsg +EXPORT_SYMBOL net/bluetooth/bluetooth 0x0d234a94 hci_register_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x0e3124bc bt_accept_unlink +EXPORT_SYMBOL net/bluetooth/bluetooth 0x15374cac hci_mgmt_chan_unregister +EXPORT_SYMBOL net/bluetooth/bluetooth 0x19ee64ad bt_sock_reclassify_lock +EXPORT_SYMBOL net/bluetooth/bluetooth 0x1b92c3e4 l2cap_conn_get +EXPORT_SYMBOL net/bluetooth/bluetooth 0x1e36242a hci_get_route +EXPORT_SYMBOL net/bluetooth/bluetooth 0x2c206ebc bt_accept_enqueue +EXPORT_SYMBOL net/bluetooth/bluetooth 0x2ca5fb9c hci_unregister_cb +EXPORT_SYMBOL net/bluetooth/bluetooth 0x2faceb54 bt_accept_dequeue +EXPORT_SYMBOL net/bluetooth/bluetooth 0x32e220af bt_sock_recvmsg +EXPORT_SYMBOL net/bluetooth/bluetooth 0x33a1840c hci_recv_frame +EXPORT_SYMBOL net/bluetooth/bluetooth 0x3ace1e32 l2cap_is_socket +EXPORT_SYMBOL net/bluetooth/bluetooth 0x3b8b0e08 hci_suspend_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x3caa2c85 bt_sock_wait_ready +EXPORT_SYMBOL net/bluetooth/bluetooth 0x3ede9afe bt_sock_wait_state +EXPORT_SYMBOL net/bluetooth/bluetooth 0x452d9ecb hci_conn_check_secure +EXPORT_SYMBOL net/bluetooth/bluetooth 0x47022514 bt_err +EXPORT_SYMBOL net/bluetooth/bluetooth 0x4e38fd5b __hci_cmd_sync +EXPORT_SYMBOL net/bluetooth/bluetooth 0x511eb992 bt_procfs_cleanup +EXPORT_SYMBOL net/bluetooth/bluetooth 0x5418f373 hci_resume_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x559a0681 hci_mgmt_chan_register +EXPORT_SYMBOL net/bluetooth/bluetooth 0x672ee558 bt_sock_register +EXPORT_SYMBOL net/bluetooth/bluetooth 0x6ac3d5d1 bt_sock_ioctl +EXPORT_SYMBOL net/bluetooth/bluetooth 0x6f458f79 bt_sock_unlink +EXPORT_SYMBOL net/bluetooth/bluetooth 0x8fea24bd bt_sock_unregister +EXPORT_SYMBOL net/bluetooth/bluetooth 0x91c9a325 bt_to_errno +EXPORT_SYMBOL net/bluetooth/bluetooth 0x95d93419 hci_register_cb +EXPORT_SYMBOL net/bluetooth/bluetooth 0x9e6d3b6d bt_procfs_init +EXPORT_SYMBOL net/bluetooth/bluetooth 0xa0705fdc hci_unregister_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xa5f4e07b l2cap_unregister_user +EXPORT_SYMBOL net/bluetooth/bluetooth 0xa778ddbf hci_conn_switch_role +EXPORT_SYMBOL net/bluetooth/bluetooth 0xaa1a9a42 __hci_cmd_sync_ev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xaac09e47 hci_conn_security +EXPORT_SYMBOL net/bluetooth/bluetooth 0xc23df2e4 l2cap_register_user +EXPORT_SYMBOL net/bluetooth/bluetooth 0xc557be33 hci_reset_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xcc1fb551 baswap +EXPORT_SYMBOL net/bluetooth/bluetooth 0xd1fa85ea bt_sock_link +EXPORT_SYMBOL net/bluetooth/bluetooth 0xd4f6d6e2 bt_sock_poll +EXPORT_SYMBOL net/bluetooth/bluetooth 0xd7442057 bt_info +EXPORT_SYMBOL net/bluetooth/bluetooth 0xee01367b hci_alloc_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xf45bd6ba l2cap_chan_close +EXPORT_SYMBOL net/bluetooth/bluetooth 0xfbe386a9 hci_free_dev +EXPORT_SYMBOL net/bridge/bridge 0x0ff743a8 br_should_route_hook +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0x27534d51 ebt_register_table +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0x2ed72607 ebt_do_table +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0xad09b15c ebt_unregister_table +EXPORT_SYMBOL net/caif/caif 0x01856002 cfcnfg_add_phy_layer +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 0x4a237e57 cfpkt_tonative +EXPORT_SYMBOL net/caif/caif 0x6a44fc70 cfpkt_extr_head +EXPORT_SYMBOL net/caif/caif 0x71c29086 caif_connect_client +EXPORT_SYMBOL net/caif/caif 0x839ddb7b cfcnfg_set_phy_state +EXPORT_SYMBOL net/caif/caif 0x8499dd7f get_cfcnfg +EXPORT_SYMBOL net/caif/caif 0x8d5c05b3 caif_disconnect_client +EXPORT_SYMBOL net/caif/caif 0x92cd9c86 caif_enroll_dev +EXPORT_SYMBOL net/caif/caif 0x966d7de2 cfpkt_add_head +EXPORT_SYMBOL net/caif/caif 0x9e3e305d cfpkt_set_prio +EXPORT_SYMBOL net/caif/caif 0xb7b6874e caif_free_client +EXPORT_SYMBOL net/can/can 0x0c0b6df0 can_ioctl +EXPORT_SYMBOL net/can/can 0x2fcc8fbd can_send +EXPORT_SYMBOL net/can/can 0x613e4a49 can_proto_register +EXPORT_SYMBOL net/can/can 0x6563ca02 can_rx_unregister +EXPORT_SYMBOL net/can/can 0x7733d97c can_proto_unregister +EXPORT_SYMBOL net/can/can 0xb9c05735 can_rx_register +EXPORT_SYMBOL net/ceph/libceph 0x012cf26e osd_req_op_alloc_hint_init +EXPORT_SYMBOL net/ceph/libceph 0x0253f9da ceph_client_id +EXPORT_SYMBOL net/ceph/libceph 0x03430fe4 ceph_auth_verify_authorizer_reply +EXPORT_SYMBOL net/ceph/libceph 0x08071fa6 ceph_osdc_readpages +EXPORT_SYMBOL net/ceph/libceph 0x09290ab3 ceph_debugfs_init +EXPORT_SYMBOL net/ceph/libceph 0x0a6613da ceph_con_keepalive +EXPORT_SYMBOL net/ceph/libceph 0x100034ec ceph_osdc_cancel_request +EXPORT_SYMBOL net/ceph/libceph 0x167bcd2b osd_req_op_extent_update +EXPORT_SYMBOL net/ceph/libceph 0x195bf5f8 ceph_put_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x1b18db21 ceph_alloc_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x20d151cb ceph_osdc_setup +EXPORT_SYMBOL net/ceph/libceph 0x21c60751 ceph_pagelist_free_reserve +EXPORT_SYMBOL net/ceph/libceph 0x221655bb ceph_monc_init +EXPORT_SYMBOL net/ceph/libceph 0x2452468a ceph_monc_wait_osdmap +EXPORT_SYMBOL net/ceph/libceph 0x24d897df ceph_pagelist_release +EXPORT_SYMBOL net/ceph/libceph 0x25440e42 osd_req_op_cls_request_data_pagelist +EXPORT_SYMBOL net/ceph/libceph 0x2db717f3 ceph_destroy_options +EXPORT_SYMBOL net/ceph/libceph 0x2eddbc14 ceph_osdc_build_request +EXPORT_SYMBOL net/ceph/libceph 0x317aaf14 osd_req_op_extent_osd_data_pagelist +EXPORT_SYMBOL net/ceph/libceph 0x34e4b121 ceph_monc_got_mdsmap +EXPORT_SYMBOL net/ceph/libceph 0x3528aa9d ceph_osdc_sync +EXPORT_SYMBOL net/ceph/libceph 0x38f34a60 ceph_compare_options +EXPORT_SYMBOL net/ceph/libceph 0x39259797 osd_req_op_raw_data_in_pages +EXPORT_SYMBOL net/ceph/libceph 0x3abec91f ceph_pr_addr +EXPORT_SYMBOL net/ceph/libceph 0x3d478e48 ceph_osdc_get_request +EXPORT_SYMBOL net/ceph/libceph 0x3d724b90 ceph_osdc_set_request_linger +EXPORT_SYMBOL net/ceph/libceph 0x3eb35b2e ceph_monc_open_session +EXPORT_SYMBOL net/ceph/libceph 0x3f688151 ceph_put_snap_context +EXPORT_SYMBOL net/ceph/libceph 0x419cb09b ceph_pagelist_truncate +EXPORT_SYMBOL net/ceph/libceph 0x43146a8c ceph_msg_new +EXPORT_SYMBOL net/ceph/libceph 0x43e458f6 ceph_file_part +EXPORT_SYMBOL net/ceph/libceph 0x43efd647 ceph_calc_file_object_mapping +EXPORT_SYMBOL net/ceph/libceph 0x43fadd22 ceph_check_fsid +EXPORT_SYMBOL net/ceph/libceph 0x4431e994 osd_req_op_extent_osd_data_bio +EXPORT_SYMBOL net/ceph/libceph 0x466b85b8 libceph_compatible +EXPORT_SYMBOL net/ceph/libceph 0x4bcd5892 ceph_msg_data_add_bio +EXPORT_SYMBOL net/ceph/libceph 0x4f045a51 ceph_auth_is_authenticated +EXPORT_SYMBOL net/ceph/libceph 0x510d4cd5 osd_req_op_cls_request_data_pages +EXPORT_SYMBOL net/ceph/libceph 0x51c87b80 ceph_auth_invalidate_authorizer +EXPORT_SYMBOL net/ceph/libceph 0x5379cea3 ceph_caps_for_mode +EXPORT_SYMBOL net/ceph/libceph 0x554e198d ceph_osdc_wait_request +EXPORT_SYMBOL net/ceph/libceph 0x564848e1 ceph_open_session +EXPORT_SYMBOL net/ceph/libceph 0x57baf885 ceph_str_hash +EXPORT_SYMBOL net/ceph/libceph 0x63758856 ceph_str_hash_name +EXPORT_SYMBOL net/ceph/libceph 0x639fc978 osd_req_op_cls_init +EXPORT_SYMBOL net/ceph/libceph 0x64ec6fb2 ceph_osdc_start_request +EXPORT_SYMBOL net/ceph/libceph 0x6b2e3bcd ceph_get_snap_context +EXPORT_SYMBOL net/ceph/libceph 0x6d00fc45 ceph_pg_poolid_by_name +EXPORT_SYMBOL net/ceph/libceph 0x6e5e3285 ceph_msg_get +EXPORT_SYMBOL net/ceph/libceph 0x6fcdafef ceph_buffer_new +EXPORT_SYMBOL net/ceph/libceph 0x6ff3c3f7 ceph_msg_put +EXPORT_SYMBOL net/ceph/libceph 0x72ac6bb1 ceph_con_open +EXPORT_SYMBOL net/ceph/libceph 0x73053a0b ceph_osdc_put_event +EXPORT_SYMBOL net/ceph/libceph 0x78102509 ceph_monc_do_statfs +EXPORT_SYMBOL net/ceph/libceph 0x7b62d833 ceph_osdc_put_request +EXPORT_SYMBOL net/ceph/libceph 0x7c93c92a ceph_zero_page_vector_range +EXPORT_SYMBOL net/ceph/libceph 0x809f8862 ceph_release_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x83409202 ceph_msg_dump +EXPORT_SYMBOL net/ceph/libceph 0x851744fa ceph_pg_pool_name_by_id +EXPORT_SYMBOL net/ceph/libceph 0x8bae82d7 ceph_oloc_oid_to_pg +EXPORT_SYMBOL net/ceph/libceph 0x8c6d27d6 ceph_auth_destroy_authorizer +EXPORT_SYMBOL net/ceph/libceph 0x8d79ca0f ceph_con_init +EXPORT_SYMBOL net/ceph/libceph 0x8f333534 ceph_get_direct_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x94dff172 osd_req_op_cls_response_data_pages +EXPORT_SYMBOL net/ceph/libceph 0x99e36571 ceph_osdc_cleanup +EXPORT_SYMBOL net/ceph/libceph 0x9da4f761 ceph_create_client +EXPORT_SYMBOL net/ceph/libceph 0x9f534f4d ceph_buffer_release +EXPORT_SYMBOL net/ceph/libceph 0xa12b8bca ceph_osdc_create_event +EXPORT_SYMBOL net/ceph/libceph 0xa18f25e0 osd_req_op_extent_osd_data_pages +EXPORT_SYMBOL net/ceph/libceph 0xa97d86bd osd_req_op_extent_osd_data +EXPORT_SYMBOL net/ceph/libceph 0xadfb7ed0 ceph_msg_data_add_pages +EXPORT_SYMBOL net/ceph/libceph 0xae3515ba ceph_create_snap_context +EXPORT_SYMBOL net/ceph/libceph 0xafb8a407 ceph_msgr_flush +EXPORT_SYMBOL net/ceph/libceph 0xb3b3be61 ceph_copy_from_page_vector +EXPORT_SYMBOL net/ceph/libceph 0xb54676fa ceph_msg_type_name +EXPORT_SYMBOL net/ceph/libceph 0xb6081d6d ceph_msgr_exit +EXPORT_SYMBOL net/ceph/libceph 0xb650f500 ceph_auth_update_authorizer +EXPORT_SYMBOL net/ceph/libceph 0xb8e0bfd6 ceph_copy_user_to_page_vector +EXPORT_SYMBOL net/ceph/libceph 0xb955361a osd_req_op_init +EXPORT_SYMBOL net/ceph/libceph 0xbb316b90 osd_req_op_watch_init +EXPORT_SYMBOL net/ceph/libceph 0xbf52a208 ceph_messenger_init +EXPORT_SYMBOL net/ceph/libceph 0xc09b7d2c osd_req_op_xattr_init +EXPORT_SYMBOL net/ceph/libceph 0xc276b2d3 ceph_osdc_new_request +EXPORT_SYMBOL net/ceph/libceph 0xc4a80955 ceph_debugfs_cleanup +EXPORT_SYMBOL net/ceph/libceph 0xc594af93 osd_req_op_extent_init +EXPORT_SYMBOL net/ceph/libceph 0xc72ad377 ceph_monc_do_get_version +EXPORT_SYMBOL net/ceph/libceph 0xc9f82b38 ceph_msgr_init +EXPORT_SYMBOL net/ceph/libceph 0xcb50a624 ceph_parse_ips +EXPORT_SYMBOL net/ceph/libceph 0xcb52d7a7 ceph_calc_pg_primary +EXPORT_SYMBOL net/ceph/libceph 0xcd45e77d ceph_print_client_options +EXPORT_SYMBOL net/ceph/libceph 0xd28cfe9a ceph_copy_to_page_vector +EXPORT_SYMBOL net/ceph/libceph 0xd2c107bb ceph_flags_to_mode +EXPORT_SYMBOL net/ceph/libceph 0xd4ac51ff ceph_destroy_client +EXPORT_SYMBOL net/ceph/libceph 0xd4b005c9 __ceph_open_session +EXPORT_SYMBOL net/ceph/libceph 0xd72a7861 ceph_con_close +EXPORT_SYMBOL net/ceph/libceph 0xd7acd83f ceph_pagelist_set_cursor +EXPORT_SYMBOL net/ceph/libceph 0xd97575e2 ceph_monc_stop +EXPORT_SYMBOL net/ceph/libceph 0xdd59d80e ceph_osdc_alloc_request +EXPORT_SYMBOL net/ceph/libceph 0xdd8e7550 ceph_parse_options +EXPORT_SYMBOL net/ceph/libceph 0xe3b042ca ceph_pagelist_append +EXPORT_SYMBOL net/ceph/libceph 0xe4384dd1 ceph_messenger_fini +EXPORT_SYMBOL net/ceph/libceph 0xe5ab8c56 ceph_con_send +EXPORT_SYMBOL net/ceph/libceph 0xe6a719c4 ceph_monc_validate_auth +EXPORT_SYMBOL net/ceph/libceph 0xec45c23c ceph_auth_create_authorizer +EXPORT_SYMBOL net/ceph/libceph 0xed28ff6d ceph_osdc_flush_notifies +EXPORT_SYMBOL net/ceph/libceph 0xed95acba osd_req_op_cls_response_data +EXPORT_SYMBOL net/ceph/libceph 0xef6b1871 ceph_monc_request_next_osdmap +EXPORT_SYMBOL net/ceph/libceph 0xf199a462 ceph_osdc_writepages +EXPORT_SYMBOL net/ceph/libceph 0xf35cb4d9 ceph_pagelist_reserve +EXPORT_SYMBOL net/ceph/libceph 0xf66439a4 ceph_osdc_cancel_event +EXPORT_SYMBOL net/ceph/libceph 0xfab0452e ceph_msg_data_add_pagelist +EXPORT_SYMBOL net/dccp/dccp_ipv4 0x8690e0fd dccp_req_err +EXPORT_SYMBOL net/dccp/dccp_ipv4 0xe9358d36 dccp_syn_ack_timeout +EXPORT_SYMBOL net/ieee802154/6lowpan/ieee802154_6lowpan 0x983fef49 lowpan_frag_rcv +EXPORT_SYMBOL net/ieee802154/ieee802154 0x029af0d6 wpan_phy_find +EXPORT_SYMBOL net/ieee802154/ieee802154 0x1db52690 wpan_phy_free +EXPORT_SYMBOL net/ieee802154/ieee802154 0x512d2fa8 wpan_phy_new +EXPORT_SYMBOL net/ieee802154/ieee802154 0x772af06b wpan_phy_unregister +EXPORT_SYMBOL net/ieee802154/ieee802154 0xa4621daf wpan_phy_for_each +EXPORT_SYMBOL net/ieee802154/ieee802154 0xd73e9d7d wpan_phy_register +EXPORT_SYMBOL net/ipv4/fou 0x03916fe4 gue_encap_hlen +EXPORT_SYMBOL net/ipv4/fou 0x12947f51 fou_build_header +EXPORT_SYMBOL net/ipv4/fou 0x7a8411a2 fou_encap_hlen +EXPORT_SYMBOL net/ipv4/fou 0xe700c9ae gue_build_header +EXPORT_SYMBOL net/ipv4/ip_tunnel 0x3542b157 ip_tunnel_encap_del_ops +EXPORT_SYMBOL net/ipv4/ip_tunnel 0x551769c4 ip_tunnel_encap_add_ops +EXPORT_SYMBOL net/ipv4/ip_tunnel 0x86c580b2 ip_tunnel_encap +EXPORT_SYMBOL net/ipv4/ip_tunnel 0xaa2c910e ip_tunnel_dst_reset_all +EXPORT_SYMBOL net/ipv4/ip_tunnel 0xcd811e1d ip_tunnel_get_iflink +EXPORT_SYMBOL net/ipv4/ip_tunnel 0xfbcac522 ip_tunnel_get_link_net +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0xae78b6d6 arpt_unregister_table +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0xb0982bbc arpt_do_table +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0xbff6e396 arpt_register_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0x01c0f165 ipt_do_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0x3122fa1d ipt_unregister_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0x4e08031c ipt_register_table +EXPORT_SYMBOL net/ipv4/tunnel4 0x11bdef69 xfrm4_tunnel_register +EXPORT_SYMBOL net/ipv4/tunnel4 0xbe97f8ac xfrm4_tunnel_deregister +EXPORT_SYMBOL net/ipv4/udp_tunnel 0xbe3c6ef7 udp_sock_create4 +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0x0321bce0 ip6_tnl_get_link_net +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0x29ecdbfd ip6_tnl_get_iflink +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0xc95e698a ip6_tnl_parse_tlv_enc_lim +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0xfadb3b0f ip6_tnl_get_cap +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0x4e750428 ip6t_register_table +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0x623ac580 ip6t_do_table +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0x6f1d64a2 ip6t_unregister_table +EXPORT_SYMBOL net/ipv6/tunnel6 0x5e746115 xfrm6_tunnel_register +EXPORT_SYMBOL net/ipv6/tunnel6 0xdc932bd4 xfrm6_tunnel_deregister +EXPORT_SYMBOL net/ipv6/xfrm6_tunnel 0xa9970a3e xfrm6_tunnel_spi_lookup +EXPORT_SYMBOL net/ipv6/xfrm6_tunnel 0xef56661c xfrm6_tunnel_alloc_spi +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x0f06eb4d ircomm_connect_response +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x2d645d14 ircomm_data_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x4b3adbc7 ircomm_connect_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x69affe88 ircomm_flow_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x6eb6dc3b ircomm_control_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x76dc1a44 ircomm_disconnect_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x9a6bfc58 ircomm_close +EXPORT_SYMBOL net/irda/ircomm/ircomm 0xf410edc4 ircomm_open +EXPORT_SYMBOL net/irda/irda 0x0017a693 irttp_dup +EXPORT_SYMBOL net/irda/irda 0x0064e0ea hashbin_get_first +EXPORT_SYMBOL net/irda/irda 0x06a3ee58 irias_new_integer_value +EXPORT_SYMBOL net/irda/irda 0x07d3647c irlmp_register_service +EXPORT_SYMBOL net/irda/irda 0x16694e30 irlap_close +EXPORT_SYMBOL net/irda/irda 0x1a8f5fbc iriap_getvaluebyclass_request +EXPORT_SYMBOL net/irda/irda 0x1e6cade0 irias_add_integer_attrib +EXPORT_SYMBOL net/irda/irda 0x2c46214b irttp_data_request +EXPORT_SYMBOL net/irda/irda 0x2c90b1e8 irlap_open +EXPORT_SYMBOL net/irda/irda 0x33cbe2c6 proc_irda +EXPORT_SYMBOL net/irda/irda 0x39f65efd irttp_udata_request +EXPORT_SYMBOL net/irda/irda 0x3e56064f hashbin_new +EXPORT_SYMBOL net/irda/irda 0x448b8aaa irda_qos_bits_to_value +EXPORT_SYMBOL net/irda/irda 0x455277b6 irlmp_open_lsap +EXPORT_SYMBOL net/irda/irda 0x460a7367 irttp_disconnect_request +EXPORT_SYMBOL net/irda/irda 0x46c1c4a2 irlmp_unregister_service +EXPORT_SYMBOL net/irda/irda 0x4de82cc6 alloc_irdadev +EXPORT_SYMBOL net/irda/irda 0x594c6ae2 async_unwrap_char +EXPORT_SYMBOL net/irda/irda 0x5b387474 irlmp_close_lsap +EXPORT_SYMBOL net/irda/irda 0x5f6bc195 iriap_open +EXPORT_SYMBOL net/irda/irda 0x601bda46 hashbin_remove +EXPORT_SYMBOL net/irda/irda 0x6b043eba irda_init_max_qos_capabilies +EXPORT_SYMBOL net/irda/irda 0x6b5fbcef hashbin_get_next +EXPORT_SYMBOL net/irda/irda 0x6caac767 irttp_flow_request +EXPORT_SYMBOL net/irda/irda 0x6e0ab3c7 irias_add_string_attrib +EXPORT_SYMBOL net/irda/irda 0x7042bc54 irlmp_register_client +EXPORT_SYMBOL net/irda/irda 0x763e54a4 irlmp_unregister_client +EXPORT_SYMBOL net/irda/irda 0x765490d1 irttp_close_tsap +EXPORT_SYMBOL net/irda/irda 0x78c63de8 irlmp_disconnect_request +EXPORT_SYMBOL net/irda/irda 0x7957f728 irlmp_update_client +EXPORT_SYMBOL net/irda/irda 0x7f52a8bf irda_param_insert +EXPORT_SYMBOL net/irda/irda 0x85d88217 irias_delete_object +EXPORT_SYMBOL net/irda/irda 0x8ddc7987 irttp_connect_response +EXPORT_SYMBOL net/irda/irda 0x91815586 irda_param_pack +EXPORT_SYMBOL net/irda/irda 0x94a824db irda_param_extract_all +EXPORT_SYMBOL net/irda/irda 0x95a0bb94 irda_device_set_media_busy +EXPORT_SYMBOL net/irda/irda 0x97bad1b5 irda_notify_init +EXPORT_SYMBOL net/irda/irda 0x9df4918c irttp_connect_request +EXPORT_SYMBOL net/irda/irda 0xa1d41e58 hashbin_delete +EXPORT_SYMBOL net/irda/irda 0xaa557515 irias_new_object +EXPORT_SYMBOL net/irda/irda 0xb3d4f534 irlmp_connect_response +EXPORT_SYMBOL net/irda/irda 0xb9394173 irias_delete_value +EXPORT_SYMBOL net/irda/irda 0xbc9e7b00 irlmp_data_request +EXPORT_SYMBOL net/irda/irda 0xbcd3ef13 irias_object_change_attribute +EXPORT_SYMBOL net/irda/irda 0xbe40ace9 irlmp_discovery_request +EXPORT_SYMBOL net/irda/irda 0xc68e43be irias_add_octseq_attrib +EXPORT_SYMBOL net/irda/irda 0xc8877fc0 irttp_open_tsap +EXPORT_SYMBOL net/irda/irda 0xca0cafa0 async_wrap_skb +EXPORT_SYMBOL net/irda/irda 0xcead7dbb hashbin_find +EXPORT_SYMBOL net/irda/irda 0xd2108314 hashbin_insert +EXPORT_SYMBOL net/irda/irda 0xd6deeaae irda_setup_dma +EXPORT_SYMBOL net/irda/irda 0xde4c6b3c irlmp_service_to_hint +EXPORT_SYMBOL net/irda/irda 0xe30cb135 irlmp_connect_request +EXPORT_SYMBOL net/irda/irda 0xe3463529 hashbin_lock_find +EXPORT_SYMBOL net/irda/irda 0xe3bde43e irias_insert_object +EXPORT_SYMBOL net/irda/irda 0xedd521c2 irlmp_get_discoveries +EXPORT_SYMBOL net/irda/irda 0xf0a694a1 irias_find_object +EXPORT_SYMBOL net/irda/irda 0xf2111a59 iriap_close +EXPORT_SYMBOL net/irda/irda 0xf5876b95 hashbin_remove_this +EXPORT_SYMBOL net/l2tp/l2tp_core 0x5eb968c3 l2tp_recv_common +EXPORT_SYMBOL net/lapb/lapb 0x7c8bb0c9 lapb_register +EXPORT_SYMBOL net/lapb/lapb 0x7e7c08b8 lapb_data_received +EXPORT_SYMBOL net/lapb/lapb 0x9542dbe3 lapb_unregister +EXPORT_SYMBOL net/lapb/lapb 0xa3c3f100 lapb_setparms +EXPORT_SYMBOL net/lapb/lapb 0xd2bfb570 lapb_connect_request +EXPORT_SYMBOL net/lapb/lapb 0xdb88f65e lapb_getparms +EXPORT_SYMBOL net/lapb/lapb 0xe7544d43 lapb_disconnect_request +EXPORT_SYMBOL net/lapb/lapb 0xf2cafef6 lapb_data_request +EXPORT_SYMBOL net/llc/llc 0x049cca20 llc_add_pack +EXPORT_SYMBOL net/llc/llc 0x38b92846 llc_remove_pack +EXPORT_SYMBOL net/llc/llc 0x46ebd714 llc_build_and_send_ui_pkt +EXPORT_SYMBOL net/llc/llc 0x52d7b2fd llc_sap_list +EXPORT_SYMBOL net/llc/llc 0x660fdd13 llc_sap_open +EXPORT_SYMBOL net/llc/llc 0x67e8a40d llc_sap_find +EXPORT_SYMBOL net/llc/llc 0xc08e6b0d llc_set_station_handler +EXPORT_SYMBOL net/llc/llc 0xcfd9062c llc_mac_hdr_init +EXPORT_SYMBOL net/llc/llc 0xf230802b llc_sap_close +EXPORT_SYMBOL net/mac80211/mac80211 0x0418d628 ieee80211_sta_set_buffered +EXPORT_SYMBOL net/mac80211/mac80211 0x05003a5c rate_control_set_rates +EXPORT_SYMBOL net/mac80211/mac80211 0x0ac21265 __ieee80211_get_rx_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0x0bd609f2 ieee80211_get_key_tx_seq +EXPORT_SYMBOL net/mac80211/mac80211 0x10ab91ba ieee80211_reserve_tid +EXPORT_SYMBOL net/mac80211/mac80211 0x162e93f1 ieee80211_radar_detected +EXPORT_SYMBOL net/mac80211/mac80211 0x1a345db3 ieee80211_sta_eosp +EXPORT_SYMBOL net/mac80211/mac80211 0x1ad30353 ieee80211_report_wowlan_wakeup +EXPORT_SYMBOL net/mac80211/mac80211 0x282cd25c ieee80211_queue_delayed_work +EXPORT_SYMBOL net/mac80211/mac80211 0x28682cbc ieee80211_start_rx_ba_session_offl +EXPORT_SYMBOL net/mac80211/mac80211 0x28abfa1b ieee80211_stop_rx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0x2e4590ec ieee80211_sched_scan_stopped +EXPORT_SYMBOL net/mac80211/mac80211 0x2f846bdc ieee80211_queue_stopped +EXPORT_SYMBOL net/mac80211/mac80211 0x3792ab9f wiphy_to_ieee80211_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x3927b2c8 ieee80211_stop_tx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0x402cb26d ieee80211_tx_prepare_skb +EXPORT_SYMBOL net/mac80211/mac80211 0x407323b3 ieee80211_start_tx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0x419c0202 ieee80211_get_tkip_p1k_iv +EXPORT_SYMBOL net/mac80211/mac80211 0x42577f4a ieee80211_tx_status_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0x43c1c23a ieee80211_get_tkip_p2k +EXPORT_SYMBOL net/mac80211/mac80211 0x4690cce5 ieee80211_find_sta +EXPORT_SYMBOL net/mac80211/mac80211 0x48d39a2f ieee80211_tdls_oper_request +EXPORT_SYMBOL net/mac80211/mac80211 0x4c2b011a ieee80211_get_tkip_rx_p1k +EXPORT_SYMBOL net/mac80211/mac80211 0x50da6b1c ieee80211_register_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x54cc3d04 ieee80211_nullfunc_get +EXPORT_SYMBOL net/mac80211/mac80211 0x55f97e4f ieee80211_get_key_rx_seq +EXPORT_SYMBOL net/mac80211/mac80211 0x5682db51 ieee80211_get_buffered_bc +EXPORT_SYMBOL net/mac80211/mac80211 0x651cc863 ieee80211_beacon_loss +EXPORT_SYMBOL net/mac80211/mac80211 0x676150a6 ieee80211_csa_is_complete +EXPORT_SYMBOL net/mac80211/mac80211 0x680a6190 ieee80211_proberesp_get +EXPORT_SYMBOL net/mac80211/mac80211 0x6dd1c42a __ieee80211_create_tpt_led_trigger +EXPORT_SYMBOL net/mac80211/mac80211 0x6ff7aa3b ieee80211_unregister_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x70bad5e6 ieee80211_ctstoself_duration +EXPORT_SYMBOL net/mac80211/mac80211 0x76afb72b ieee80211_rx +EXPORT_SYMBOL net/mac80211/mac80211 0x7735e39c ieee80211_generic_frame_duration +EXPORT_SYMBOL net/mac80211/mac80211 0x77ea65c4 ieee80211_update_p2p_noa +EXPORT_SYMBOL net/mac80211/mac80211 0x7a7311c1 ieee80211_tx_dequeue +EXPORT_SYMBOL net/mac80211/mac80211 0x7d2f10cd ieee80211_connection_loss +EXPORT_SYMBOL net/mac80211/mac80211 0x8075014f ieee80211_beacon_get_tim +EXPORT_SYMBOL net/mac80211/mac80211 0x85adeff3 ieee80211_start_tx_ba_cb_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0x85f7fddd ieee80211_stop_queues +EXPORT_SYMBOL net/mac80211/mac80211 0x88cd83ef ieee80211_stop_queue +EXPORT_SYMBOL net/mac80211/mac80211 0x89472c57 ieee80211_ap_probereq_get +EXPORT_SYMBOL net/mac80211/mac80211 0x8ac47e73 ieee80211_csa_update_counter +EXPORT_SYMBOL net/mac80211/mac80211 0x8dd291b0 rate_control_send_low +EXPORT_SYMBOL net/mac80211/mac80211 0x9280b21c __ieee80211_get_assoc_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0x9290d027 ieee80211_report_low_ack +EXPORT_SYMBOL net/mac80211/mac80211 0x92c14ca9 ieee80211_beacon_get_template +EXPORT_SYMBOL net/mac80211/mac80211 0x962bdde8 ieee80211_aes_cmac_calculate_k1_k2 +EXPORT_SYMBOL net/mac80211/mac80211 0x98137b83 ieee80211_cqm_beacon_loss_notify +EXPORT_SYMBOL net/mac80211/mac80211 0x9824254e ieee80211_unreserve_tid +EXPORT_SYMBOL net/mac80211/mac80211 0xac8f3a48 ieee80211_sta_ps_transition +EXPORT_SYMBOL net/mac80211/mac80211 0xada7f915 ieee80211_rate_control_unregister +EXPORT_SYMBOL net/mac80211/mac80211 0xb0df6e7e ieee80211_tx_status_noskb +EXPORT_SYMBOL net/mac80211/mac80211 0xb191abac __ieee80211_get_tx_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0xb2211d93 ieee80211_pspoll_get +EXPORT_SYMBOL net/mac80211/mac80211 0xb2e09a0e ieee80211_free_hw +EXPORT_SYMBOL net/mac80211/mac80211 0xb8652388 ieee80211_rate_control_register +EXPORT_SYMBOL net/mac80211/mac80211 0xbe7a8025 ieee80211_chswitch_done +EXPORT_SYMBOL net/mac80211/mac80211 0xbff8f46b ieee80211_ctstoself_get +EXPORT_SYMBOL net/mac80211/mac80211 0xc19e099c ieee80211_sched_scan_results +EXPORT_SYMBOL net/mac80211/mac80211 0xc5c547c6 ieee80211_rts_get +EXPORT_SYMBOL net/mac80211/mac80211 0xca821371 ieee80211_sta_block_awake +EXPORT_SYMBOL net/mac80211/mac80211 0xcafcc83d ieee80211_disable_rssi_reports +EXPORT_SYMBOL net/mac80211/mac80211 0xcc6e4fcf ieee80211_wake_queues +EXPORT_SYMBOL net/mac80211/mac80211 0xce9d140b ieee80211_stop_rx_ba_session_offl +EXPORT_SYMBOL net/mac80211/mac80211 0xd18cd762 ieee80211_free_txskb +EXPORT_SYMBOL net/mac80211/mac80211 0xd43f6336 ieee80211_tx_status +EXPORT_SYMBOL net/mac80211/mac80211 0xd72625cb ieee80211_parse_p2p_noa +EXPORT_SYMBOL net/mac80211/mac80211 0xd76cb0c7 ieee80211_alloc_hw_nm +EXPORT_SYMBOL net/mac80211/mac80211 0xd9a11ff7 ieee80211_cqm_rssi_notify +EXPORT_SYMBOL net/mac80211/mac80211 0xdcaa8961 __ieee80211_get_radio_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0xe4bdd82a ieee80211_send_bar +EXPORT_SYMBOL net/mac80211/mac80211 0xe4ebf6a3 ieee80211_get_tx_rates +EXPORT_SYMBOL net/mac80211/mac80211 0xe82afef1 ieee80211_scan_completed +EXPORT_SYMBOL net/mac80211/mac80211 0xe8b32eb9 ieee80211_stop_tx_ba_cb_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0xed15539f ieee80211_queue_work +EXPORT_SYMBOL net/mac80211/mac80211 0xede4a653 ieee80211_rx_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0xedef8f18 ieee80211_csa_finish +EXPORT_SYMBOL net/mac80211/mac80211 0xeec21c4e ieee80211_probereq_get +EXPORT_SYMBOL net/mac80211/mac80211 0xefb5ae7a ieee80211_enable_rssi_reports +EXPORT_SYMBOL net/mac80211/mac80211 0xf59dd4e6 ieee80211_restart_hw +EXPORT_SYMBOL net/mac80211/mac80211 0xf6efb62f ieee80211_wake_queue +EXPORT_SYMBOL net/mac80211/mac80211 0xfbe5fcb0 ieee80211_rts_duration +EXPORT_SYMBOL net/mac80211/mac80211 0xfd85990e ieee80211_iter_keys +EXPORT_SYMBOL net/mac802154/mac802154 0x48d852c4 ieee802154_register_hw +EXPORT_SYMBOL net/mac802154/mac802154 0x830dcb6b ieee802154_wake_queue +EXPORT_SYMBOL net/mac802154/mac802154 0x8a4f4d48 ieee802154_unregister_hw +EXPORT_SYMBOL net/mac802154/mac802154 0x8ba82dc4 ieee802154_stop_queue +EXPORT_SYMBOL net/mac802154/mac802154 0xac1e8dd6 ieee802154_free_hw +EXPORT_SYMBOL net/mac802154/mac802154 0xca7acc8e ieee802154_rx_irqsafe +EXPORT_SYMBOL net/mac802154/mac802154 0xf17901a9 ieee802154_rx +EXPORT_SYMBOL net/mac802154/mac802154 0xf4dc576d ieee802154_xmit_complete +EXPORT_SYMBOL net/mac802154/mac802154 0xfb6b0e15 ieee802154_alloc_hw +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x03b7a6ad register_ip_vs_app +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x56faace9 unregister_ip_vs_app +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x6535ea74 ip_vs_scheduler_err +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x68ca0c7e ip_vs_conn_put +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x6b6dbba5 register_ip_vs_app_inc +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x7067b005 unregister_ip_vs_scheduler +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x7dcc9878 ip_vs_tcp_conn_listen +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x9ee0d94b ip_vs_conn_in_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xa1371c27 register_ip_vs_scheduler +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xb0db9d57 ip_vs_proto_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xc136b40b ip_vs_conn_out_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xc2aad8a5 ip_vs_nfct_expect_related +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xd831a1a2 ip_vs_proto_name +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xf016dec7 ip_vs_conn_new +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xf51a1975 ip_vs_proto_data_get +EXPORT_SYMBOL net/netfilter/nf_conntrack 0x31cdc43c __nf_ct_ext_destroy +EXPORT_SYMBOL net/netfilter/nf_conntrack 0x36f03587 __nf_ct_ext_add_length +EXPORT_SYMBOL net/netfilter/nf_conntrack 0x5b5255f9 nf_conntrack_untracked +EXPORT_SYMBOL net/netfilter/nf_conntrack_pptp 0x827cc6a1 pptp_msg_name +EXPORT_SYMBOL net/netfilter/nf_nat 0x1618b8db nf_nat_used_tuple +EXPORT_SYMBOL net/netfilter/nf_nat 0x4e440c94 __nf_nat_mangle_tcp_packet +EXPORT_SYMBOL net/netfilter/nf_nat 0x613abf18 nf_nat_setup_info +EXPORT_SYMBOL net/netfilter/nf_nat 0x76badfb2 nf_nat_mangle_udp_packet +EXPORT_SYMBOL net/netfilter/nf_nat 0x76db6af7 nf_nat_follow_master +EXPORT_SYMBOL net/netfilter/nf_nat 0x91bcedcd nf_xfrm_me_harder +EXPORT_SYMBOL net/netfilter/x_tables 0x06c6bde0 xt_find_target +EXPORT_SYMBOL net/netfilter/x_tables 0x148d5f4c xt_register_match +EXPORT_SYMBOL net/netfilter/x_tables 0x18d36782 xt_register_target +EXPORT_SYMBOL net/netfilter/x_tables 0x253e8b44 xt_compat_init_offsets +EXPORT_SYMBOL net/netfilter/x_tables 0x331b0ced xt_unregister_target +EXPORT_SYMBOL net/netfilter/x_tables 0x36054a30 xt_register_matches +EXPORT_SYMBOL net/netfilter/x_tables 0x482d26fd xt_alloc_table_info +EXPORT_SYMBOL net/netfilter/x_tables 0x6cae7e82 xt_register_targets +EXPORT_SYMBOL net/netfilter/x_tables 0x811b683c xt_find_match +EXPORT_SYMBOL net/netfilter/x_tables 0xcd1160ad xt_unregister_matches +EXPORT_SYMBOL net/netfilter/x_tables 0xd1a21986 xt_free_table_info +EXPORT_SYMBOL net/netfilter/x_tables 0xe2eb8551 xt_unregister_targets +EXPORT_SYMBOL net/netfilter/x_tables 0xf99f5282 xt_unregister_match +EXPORT_SYMBOL net/nfc/hci/hci 0x2541ef5c nfc_hci_set_param +EXPORT_SYMBOL net/nfc/hci/hci 0x42a6a2ae nfc_hci_allocate_device +EXPORT_SYMBOL net/nfc/hci/hci 0x43028a27 nfc_hci_result_to_errno +EXPORT_SYMBOL net/nfc/hci/hci 0x48eb30e1 nfc_hci_recv_frame +EXPORT_SYMBOL net/nfc/hci/hci 0x4d938818 nfc_hci_register_device +EXPORT_SYMBOL net/nfc/hci/hci 0x60635123 nfc_hci_send_cmd +EXPORT_SYMBOL net/nfc/hci/hci 0x76f24403 nfc_hci_free_device +EXPORT_SYMBOL net/nfc/hci/hci 0x7d60d007 nfc_hci_unregister_device +EXPORT_SYMBOL net/nfc/hci/hci 0x93809c1c nfc_hci_set_clientdata +EXPORT_SYMBOL net/nfc/hci/hci 0x9a34261a nfc_hci_send_event +EXPORT_SYMBOL net/nfc/hci/hci 0xa8a28d35 nfc_hci_target_discovered +EXPORT_SYMBOL net/nfc/hci/hci 0xae663752 nfc_hci_send_cmd_async +EXPORT_SYMBOL net/nfc/hci/hci 0xb3209bcf nfc_hci_connect_gate +EXPORT_SYMBOL net/nfc/hci/hci 0xbca0b4fd nfc_hci_sak_to_protocol +EXPORT_SYMBOL net/nfc/hci/hci 0xc71c545b nfc_hci_driver_failure +EXPORT_SYMBOL net/nfc/hci/hci 0xdafb270d nfc_hci_reset_pipes +EXPORT_SYMBOL net/nfc/hci/hci 0xdd601fe0 nfc_hci_get_param +EXPORT_SYMBOL net/nfc/hci/hci 0xddc800d9 nfc_hci_get_clientdata +EXPORT_SYMBOL net/nfc/hci/hci 0xe58b2543 nfc_hci_disconnect_gate +EXPORT_SYMBOL net/nfc/hci/hci 0xf48b4d0e nfc_hci_reset_pipes_per_host +EXPORT_SYMBOL net/nfc/hci/hci 0xffef0e4b nfc_hci_disconnect_all_gates +EXPORT_SYMBOL net/nfc/nci/nci 0x08b5e1bb nci_hci_set_param +EXPORT_SYMBOL net/nfc/nci/nci 0x169ed2a8 nci_recv_frame +EXPORT_SYMBOL net/nfc/nci/nci 0x2628609c nci_core_conn_close +EXPORT_SYMBOL net/nfc/nci/nci 0x2b550c7a nci_core_conn_create +EXPORT_SYMBOL net/nfc/nci/nci 0x2f427b4b nci_hci_get_param +EXPORT_SYMBOL net/nfc/nci/nci 0x30125084 nci_hci_send_cmd +EXPORT_SYMBOL net/nfc/nci/nci 0x33616a86 nci_free_device +EXPORT_SYMBOL net/nfc/nci/nci 0x4d89cf9d nci_nfcee_mode_set +EXPORT_SYMBOL net/nfc/nci/nci 0x5122e275 nci_register_device +EXPORT_SYMBOL net/nfc/nci/nci 0x5c1cbf78 nci_unregister_device +EXPORT_SYMBOL net/nfc/nci/nci 0x82199f32 nci_prop_cmd +EXPORT_SYMBOL net/nfc/nci/nci 0x94b732bb nci_allocate_device +EXPORT_SYMBOL net/nfc/nci/nci 0x98cff4d1 nci_hci_dev_session_init +EXPORT_SYMBOL net/nfc/nci/nci 0x9a771d88 nci_hci_open_pipe +EXPORT_SYMBOL net/nfc/nci/nci 0xba490602 nci_to_errno +EXPORT_SYMBOL net/nfc/nci/nci 0xdb3de497 nci_hci_connect_gate +EXPORT_SYMBOL net/nfc/nci/nci 0xf033486f nci_nfcee_discover +EXPORT_SYMBOL net/nfc/nci/nci 0xf0f78fae nci_set_config +EXPORT_SYMBOL net/nfc/nci/nci 0xf22bcb79 nci_req_complete +EXPORT_SYMBOL net/nfc/nci/nci 0xfff583a7 nci_hci_send_event +EXPORT_SYMBOL net/nfc/nfc 0x0782e8f1 nfc_proto_unregister +EXPORT_SYMBOL net/nfc/nfc 0x2129d603 nfc_send_to_raw_sock +EXPORT_SYMBOL net/nfc/nfc 0x3c74a41b nfc_get_local_general_bytes +EXPORT_SYMBOL net/nfc/nfc 0x3d66140c nfc_dep_link_is_up +EXPORT_SYMBOL net/nfc/nfc 0x40decbc2 nfc_targets_found +EXPORT_SYMBOL net/nfc/nfc 0x4ff3975f nfc_find_se +EXPORT_SYMBOL net/nfc/nfc 0x52244f4e nfc_remove_se +EXPORT_SYMBOL net/nfc/nfc 0x67a47cc9 nfc_tm_deactivated +EXPORT_SYMBOL net/nfc/nfc 0x69a3a093 nfc_target_lost +EXPORT_SYMBOL net/nfc/nfc 0x69e8a316 nfc_se_transaction +EXPORT_SYMBOL net/nfc/nfc 0x72614051 nfc_allocate_device +EXPORT_SYMBOL net/nfc/nfc 0x7304bcb1 nfc_alloc_recv_skb +EXPORT_SYMBOL net/nfc/nfc 0x81202e0d nfc_add_se +EXPORT_SYMBOL net/nfc/nfc 0x88ff3c77 nfc_tm_data_received +EXPORT_SYMBOL net/nfc/nfc 0x96e74338 nfc_class +EXPORT_SYMBOL net/nfc/nfc 0x9766cee4 nfc_unregister_device +EXPORT_SYMBOL net/nfc/nfc 0xb85ff143 nfc_tm_activated +EXPORT_SYMBOL net/nfc/nfc 0xc4e3eed8 nfc_set_remote_general_bytes +EXPORT_SYMBOL net/nfc/nfc 0xc6de5dbd nfc_fw_download_done +EXPORT_SYMBOL net/nfc/nfc 0xcad68a24 nfc_register_device +EXPORT_SYMBOL net/nfc/nfc 0xd3e6d93c nfc_driver_failure +EXPORT_SYMBOL net/nfc/nfc 0xd7b53aeb nfc_proto_register +EXPORT_SYMBOL net/nfc/nfc_digital 0x7813fda6 nfc_digital_free_device +EXPORT_SYMBOL net/nfc/nfc_digital 0xd33c21bb nfc_digital_unregister_device +EXPORT_SYMBOL net/nfc/nfc_digital 0xf7085fc5 nfc_digital_register_device +EXPORT_SYMBOL net/nfc/nfc_digital 0xfcc25213 nfc_digital_allocate_device +EXPORT_SYMBOL net/phonet/phonet 0x207925d3 phonet_proto_unregister +EXPORT_SYMBOL net/phonet/phonet 0x28df7446 phonet_proto_register +EXPORT_SYMBOL net/phonet/phonet 0x4861fc5c pn_skb_send +EXPORT_SYMBOL net/phonet/phonet 0x48c85286 phonet_stream_ops +EXPORT_SYMBOL net/phonet/phonet 0x49857935 pn_sock_get_port +EXPORT_SYMBOL net/phonet/phonet 0x55af213f pn_sock_hash +EXPORT_SYMBOL net/phonet/phonet 0x9e51532b phonet_header_ops +EXPORT_SYMBOL net/phonet/phonet 0xf9f0c80b pn_sock_unhash +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x171e4b38 rxrpc_kernel_get_error_number +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x2caacc35 rxrpc_kernel_begin_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x41e5df42 rxrpc_kernel_is_data_last +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x60828442 rxrpc_kernel_abort_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x6f49f9c3 rxrpc_kernel_data_delivered +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x9e1867a5 key_type_rxrpc +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xa77759e5 rxrpc_kernel_free_skb +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xa7ddf4c3 rxrpc_get_null_key +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xb53cf0c9 rxrpc_kernel_send_data +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xb680dba6 rxrpc_kernel_end_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xca2ecb8c rxrpc_kernel_intercept_rx_messages +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xde009c16 rxrpc_kernel_reject_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xe2e721f6 rxrpc_get_server_data_key +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xf0fd4ea9 rxrpc_kernel_accept_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xf629f47f rxrpc_kernel_get_abort_code +EXPORT_SYMBOL net/sctp/sctp 0x2c5a559c sctp_do_peeloff +EXPORT_SYMBOL net/sunrpc/auth_gss/auth_rpcgss 0x4c7d7c05 gss_mech_put +EXPORT_SYMBOL net/sunrpc/auth_gss/auth_rpcgss 0x9a12f8a0 gss_mech_get +EXPORT_SYMBOL net/sunrpc/auth_gss/auth_rpcgss 0xb7eacd40 gss_pseudoflavor_to_service +EXPORT_SYMBOL net/sunrpc/sunrpc 0x132c9d8c svc_pool_stats_open +EXPORT_SYMBOL net/sunrpc/sunrpc 0x4f5f3b6e xdr_truncate_encode +EXPORT_SYMBOL net/sunrpc/sunrpc 0x9da218e9 xdr_restrict_buflen +EXPORT_SYMBOL net/wimax/wimax 0x6f6de0bf wimax_rfkill +EXPORT_SYMBOL net/wimax/wimax 0xbce54093 wimax_reset +EXPORT_SYMBOL net/wireless/cfg80211 0x026745ab cfg80211_ft_event +EXPORT_SYMBOL net/wireless/cfg80211 0x02768a11 __cfg80211_alloc_reply_skb +EXPORT_SYMBOL net/wireless/cfg80211 0x081f4f21 cfg80211_del_sta_sinfo +EXPORT_SYMBOL net/wireless/cfg80211 0x09c64fbd ieee80211_frequency_to_channel +EXPORT_SYMBOL net/wireless/cfg80211 0x0b3fa0c8 cfg80211_check_combinations +EXPORT_SYMBOL net/wireless/cfg80211 0x0d92458c cfg80211_rx_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0x14204948 cfg80211_sched_scan_stopped +EXPORT_SYMBOL net/wireless/cfg80211 0x1495d96a cfg80211_rx_unprot_mlme_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0x1808afac cfg80211_rx_spurious_frame +EXPORT_SYMBOL net/wireless/cfg80211 0x1879fcbd bridge_tunnel_header +EXPORT_SYMBOL net/wireless/cfg80211 0x19723e4a __cfg80211_alloc_event_skb +EXPORT_SYMBOL net/wireless/cfg80211 0x19e03378 cfg80211_get_p2p_attr +EXPORT_SYMBOL net/wireless/cfg80211 0x1bb39163 cfg80211_rx_mlme_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0x1c825a32 cfg80211_connect_result +EXPORT_SYMBOL net/wireless/cfg80211 0x21396490 wiphy_free +EXPORT_SYMBOL net/wireless/cfg80211 0x23d79c52 cfg80211_rx_unexpected_4addr_frame +EXPORT_SYMBOL net/wireless/cfg80211 0x2c740ba2 cfg80211_cqm_pktloss_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x2d3d6b7b cfg80211_get_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x2e55ac28 cfg80211_tdls_oper_request +EXPORT_SYMBOL net/wireless/cfg80211 0x3297dc84 cfg80211_put_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x32fc8d09 ieee80211_data_to_8023 +EXPORT_SYMBOL net/wireless/cfg80211 0x335d2c09 regulatory_set_wiphy_regd_sync_rtnl +EXPORT_SYMBOL net/wireless/cfg80211 0x3489f2d2 __cfg80211_send_event_skb +EXPORT_SYMBOL net/wireless/cfg80211 0x34a65520 cfg80211_report_wowlan_wakeup +EXPORT_SYMBOL net/wireless/cfg80211 0x34e40749 cfg80211_conn_failed +EXPORT_SYMBOL net/wireless/cfg80211 0x38f8c69f cfg80211_sched_scan_results +EXPORT_SYMBOL net/wireless/cfg80211 0x3af77bc3 cfg80211_notify_new_peer_candidate +EXPORT_SYMBOL net/wireless/cfg80211 0x3d411436 cfg80211_michael_mic_failure +EXPORT_SYMBOL net/wireless/cfg80211 0x3d470c4d cfg80211_chandef_compatible +EXPORT_SYMBOL net/wireless/cfg80211 0x3e285fec cfg80211_chandef_valid +EXPORT_SYMBOL net/wireless/cfg80211 0x421924a3 cfg80211_cac_event +EXPORT_SYMBOL net/wireless/cfg80211 0x421c9651 cfg80211_unregister_wdev +EXPORT_SYMBOL net/wireless/cfg80211 0x495457ff cfg80211_calculate_bitrate +EXPORT_SYMBOL net/wireless/cfg80211 0x4dde2118 cfg80211_radar_event +EXPORT_SYMBOL net/wireless/cfg80211 0x50214c28 ieee80211_bss_get_ie +EXPORT_SYMBOL net/wireless/cfg80211 0x541165b0 cfg80211_get_station +EXPORT_SYMBOL net/wireless/cfg80211 0x54452d6f freq_reg_info +EXPORT_SYMBOL net/wireless/cfg80211 0x5b37e138 cfg80211_pmksa_candidate_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x67067472 cfg80211_chandef_dfs_required +EXPORT_SYMBOL net/wireless/cfg80211 0x69b18f43 rfc1042_header +EXPORT_SYMBOL net/wireless/cfg80211 0x6b74362d cfg80211_report_obss_beacon +EXPORT_SYMBOL net/wireless/cfg80211 0x6bddfb27 wiphy_rfkill_start_polling +EXPORT_SYMBOL net/wireless/cfg80211 0x6d6cb9ad ieee80211_operating_class_to_band +EXPORT_SYMBOL net/wireless/cfg80211 0x70fc78ed cfg80211_reg_can_beacon +EXPORT_SYMBOL net/wireless/cfg80211 0x770a20ea cfg80211_tx_mlme_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0x7826830c cfg80211_stop_iface +EXPORT_SYMBOL net/wireless/cfg80211 0x79e2e851 cfg80211_remain_on_channel_expired +EXPORT_SYMBOL net/wireless/cfg80211 0x7aa82900 cfg80211_ch_switch_started_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x7e3d0f1c wiphy_apply_custom_regulatory +EXPORT_SYMBOL net/wireless/cfg80211 0x7ef39823 ieee80211_hdrlen +EXPORT_SYMBOL net/wireless/cfg80211 0x7f47ebf8 cfg80211_classify8021d +EXPORT_SYMBOL net/wireless/cfg80211 0x7fe1a403 cfg80211_find_ie +EXPORT_SYMBOL net/wireless/cfg80211 0x81e22744 cfg80211_unlink_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x836b4526 cfg80211_mgmt_tx_status +EXPORT_SYMBOL net/wireless/cfg80211 0x839f5abc ieee80211_get_num_supported_channels +EXPORT_SYMBOL net/wireless/cfg80211 0x84221c76 ieee80211_get_hdrlen_from_skb +EXPORT_SYMBOL net/wireless/cfg80211 0x8492a430 ieee80211_get_response_rate +EXPORT_SYMBOL net/wireless/cfg80211 0x85582c05 regulatory_hint +EXPORT_SYMBOL net/wireless/cfg80211 0x876cbf10 cfg80211_rx_assoc_resp +EXPORT_SYMBOL net/wireless/cfg80211 0x8a7062a5 ieee80211_mandatory_rates +EXPORT_SYMBOL net/wireless/cfg80211 0x8bd83d28 cfg80211_get_drvinfo +EXPORT_SYMBOL net/wireless/cfg80211 0x8fa9429d wiphy_register +EXPORT_SYMBOL net/wireless/cfg80211 0x9058287f cfg80211_scan_done +EXPORT_SYMBOL net/wireless/cfg80211 0x91d7a142 ieee80211_ie_split_ric +EXPORT_SYMBOL net/wireless/cfg80211 0x9340239f cfg80211_ref_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x982e6b6d ieee80211_radiotap_iterator_init +EXPORT_SYMBOL net/wireless/cfg80211 0x9cc199c6 cfg80211_roamed_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x9f47d9d4 wiphy_rfkill_set_hw_state +EXPORT_SYMBOL net/wireless/cfg80211 0xa041e657 cfg80211_ch_switch_notify +EXPORT_SYMBOL net/wireless/cfg80211 0xa1425906 ieee80211_channel_to_frequency +EXPORT_SYMBOL net/wireless/cfg80211 0xa197b1ff ieee80211_get_mesh_hdrlen +EXPORT_SYMBOL net/wireless/cfg80211 0xa1e135be wiphy_unregister +EXPORT_SYMBOL net/wireless/cfg80211 0xa5e4e22a cfg80211_iter_combinations +EXPORT_SYMBOL net/wireless/cfg80211 0xa7d70c56 cfg80211_probe_status +EXPORT_SYMBOL net/wireless/cfg80211 0xb733d54b ieee80211_data_from_8023 +EXPORT_SYMBOL net/wireless/cfg80211 0xb7cd6ba8 cfg80211_crit_proto_stopped +EXPORT_SYMBOL net/wireless/cfg80211 0xb9b09877 cfg80211_inform_bss_width +EXPORT_SYMBOL net/wireless/cfg80211 0xbe9aee64 cfg80211_disconnected +EXPORT_SYMBOL net/wireless/cfg80211 0xc2b5a0f3 cfg80211_reg_can_beacon_relax +EXPORT_SYMBOL net/wireless/cfg80211 0xc4e9b087 cfg80211_cqm_txe_notify +EXPORT_SYMBOL net/wireless/cfg80211 0xc63f1b81 ieee80211_radiotap_iterator_next +EXPORT_SYMBOL net/wireless/cfg80211 0xc6c30bd6 cfg80211_check_station_change +EXPORT_SYMBOL net/wireless/cfg80211 0xc8078c09 cfg80211_ready_on_channel +EXPORT_SYMBOL net/wireless/cfg80211 0xc90fde22 ieee80211_chandef_to_operating_class +EXPORT_SYMBOL net/wireless/cfg80211 0xcb759793 ieee80211_amsdu_to_8023s +EXPORT_SYMBOL net/wireless/cfg80211 0xcd2eb7e8 cfg80211_cqm_beacon_loss_notify +EXPORT_SYMBOL net/wireless/cfg80211 0xceea2bd8 cfg80211_roamed +EXPORT_SYMBOL net/wireless/cfg80211 0xd06dad0f cfg80211_assoc_timeout +EXPORT_SYMBOL net/wireless/cfg80211 0xd1cc975c cfg80211_gtk_rekey_notify +EXPORT_SYMBOL net/wireless/cfg80211 0xd2aea09b cfg80211_inform_bss_width_frame +EXPORT_SYMBOL net/wireless/cfg80211 0xd50b0a22 ieee80211_ie_split +EXPORT_SYMBOL net/wireless/cfg80211 0xd67d67d4 regulatory_set_wiphy_regd +EXPORT_SYMBOL net/wireless/cfg80211 0xdba126c1 reg_initiator_name +EXPORT_SYMBOL net/wireless/cfg80211 0xe555eabb wiphy_rfkill_stop_polling +EXPORT_SYMBOL net/wireless/cfg80211 0xe6722a82 __ieee80211_get_channel +EXPORT_SYMBOL net/wireless/cfg80211 0xe8d58e44 cfg80211_auth_timeout +EXPORT_SYMBOL net/wireless/cfg80211 0xe94289b8 cfg80211_cqm_rssi_notify +EXPORT_SYMBOL net/wireless/cfg80211 0xeae448fe cfg80211_ibss_joined +EXPORT_SYMBOL net/wireless/cfg80211 0xebc68f9b cfg80211_sched_scan_stopped_rtnl +EXPORT_SYMBOL net/wireless/cfg80211 0xefc56354 cfg80211_chandef_create +EXPORT_SYMBOL net/wireless/cfg80211 0xf1bd8aa9 cfg80211_new_sta +EXPORT_SYMBOL net/wireless/cfg80211 0xf1f8dc66 cfg80211_chandef_usable +EXPORT_SYMBOL net/wireless/cfg80211 0xf9a4df5e wiphy_new_nm +EXPORT_SYMBOL net/wireless/cfg80211 0xfed4d591 cfg80211_find_vendor_ie +EXPORT_SYMBOL net/wireless/lib80211 0x37a9af59 lib80211_unregister_crypto_ops +EXPORT_SYMBOL net/wireless/lib80211 0x76e6f9db lib80211_get_crypto_ops +EXPORT_SYMBOL net/wireless/lib80211 0x9bc49c2b lib80211_crypt_delayed_deinit +EXPORT_SYMBOL net/wireless/lib80211 0xaecbc0e5 lib80211_register_crypto_ops +EXPORT_SYMBOL net/wireless/lib80211 0xcd40d84c lib80211_crypt_info_init +EXPORT_SYMBOL net/wireless/lib80211 0xfc3201f0 lib80211_crypt_info_free +EXPORT_SYMBOL sound/ac97_bus 0xca818491 ac97_bus_type +EXPORT_SYMBOL sound/core/oss/snd-mixer-oss 0xf1c436b9 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 0x637dcf0d 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 0x6c2ac9f1 snd_seq_kernel_client_enqueue_blocking +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 0xcac0a3be snd_seq_kernel_client_enqueue +EXPORT_SYMBOL sound/core/seq/snd-seq 0xda82ed4a snd_seq_create_kernel_client +EXPORT_SYMBOL sound/core/seq/snd-seq 0xe2158bf3 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-device 0x091def1c snd_seq_autoload_exit +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0x370a0736 snd_seq_autoload_init +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0x50110efd snd_seq_device_new +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0x6339b6d0 snd_seq_device_load_drivers +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 0xf0a1fdb3 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 0xd7c7afcc snd_midi_event_encode +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0xe60fb228 snd_midi_event_reset_decode +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0xecbde43c snd_midi_event_encode_byte +EXPORT_SYMBOL sound/core/seq/snd-seq-virmidi 0x1a0e7476 snd_virmidi_new +EXPORT_SYMBOL sound/core/snd 0x03fce3de snd_ctl_free_one +EXPORT_SYMBOL sound/core/snd 0x0877364d snd_unregister_oss_device +EXPORT_SYMBOL sound/core/snd 0x0b97c591 _snd_ctl_add_slave +EXPORT_SYMBOL sound/core/snd 0x100d7cd2 snd_ctl_new1 +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 0x223169ff snd_card_new +EXPORT_SYMBOL sound/core/snd 0x225ec877 snd_cards +EXPORT_SYMBOL sound/core/snd 0x24a94b26 snd_info_get_line +EXPORT_SYMBOL sound/core/snd 0x25b9ab12 snd_register_oss_device +EXPORT_SYMBOL sound/core/snd 0x25d6e033 snd_ctl_unregister_ioctl_compat +EXPORT_SYMBOL sound/core/snd 0x2ae3deaa release_and_free_resource +EXPORT_SYMBOL sound/core/snd 0x2b053368 snd_card_register +EXPORT_SYMBOL sound/core/snd 0x2ed4acd6 snd_card_file_remove +EXPORT_SYMBOL sound/core/snd 0x2fbbd978 snd_ctl_find_numid +EXPORT_SYMBOL sound/core/snd 0x318f466d snd_card_set_id +EXPORT_SYMBOL sound/core/snd 0x31a2dec0 snd_pci_quirk_lookup +EXPORT_SYMBOL sound/core/snd 0x32f7f36f snd_component_add +EXPORT_SYMBOL sound/core/snd 0x342a2354 copy_to_user_fromio +EXPORT_SYMBOL sound/core/snd 0x3971b4df snd_ecards_limit +EXPORT_SYMBOL sound/core/snd 0x40570f70 snd_info_create_card_entry +EXPORT_SYMBOL sound/core/snd 0x463365f4 snd_ctl_add +EXPORT_SYMBOL sound/core/snd 0x4a3ea5c0 snd_request_card +EXPORT_SYMBOL sound/core/snd 0x4a881ee1 snd_ctl_rename_id +EXPORT_SYMBOL sound/core/snd 0x4d97aff3 snd_unregister_device +EXPORT_SYMBOL sound/core/snd 0x4e11a0b8 snd_ctl_find_id +EXPORT_SYMBOL sound/core/snd 0x53a668c6 snd_ctl_replace +EXPORT_SYMBOL sound/core/snd 0x5ac771af snd_card_disconnect +EXPORT_SYMBOL sound/core/snd 0x5b00b774 snd_ctl_remove +EXPORT_SYMBOL sound/core/snd 0x5ee6cee7 snd_ctl_make_virtual_master +EXPORT_SYMBOL sound/core/snd 0x6404b258 snd_ctl_boolean_stereo_info +EXPORT_SYMBOL sound/core/snd 0x652243cb snd_ctl_register_ioctl +EXPORT_SYMBOL sound/core/snd 0x6636c750 snd_seq_root +EXPORT_SYMBOL sound/core/snd 0x690cdb76 snd_info_create_module_entry +EXPORT_SYMBOL sound/core/snd 0x70c15ac1 snd_dma_disable +EXPORT_SYMBOL sound/core/snd 0x71e6af9f snd_jack_set_key +EXPORT_SYMBOL sound/core/snd 0x744b770a snd_ctl_unregister_ioctl +EXPORT_SYMBOL sound/core/snd 0x7a8411d7 snd_card_file_add +EXPORT_SYMBOL sound/core/snd 0x81b69e41 snd_ctl_enum_info +EXPORT_SYMBOL sound/core/snd 0x81ca66c5 snd_ctl_notify +EXPORT_SYMBOL sound/core/snd 0x8a7740f4 snd_register_device +EXPORT_SYMBOL sound/core/snd 0x8df3789f snd_oss_info_register +EXPORT_SYMBOL sound/core/snd 0x8f595b11 snd_major +EXPORT_SYMBOL sound/core/snd 0x9932fcf4 snd_device_free +EXPORT_SYMBOL sound/core/snd 0x9cbcb8d6 snd_jack_add_new_kctl +EXPORT_SYMBOL sound/core/snd 0x9e13c835 snd_card_free +EXPORT_SYMBOL sound/core/snd 0x9e6d79f8 snd_info_get_str +EXPORT_SYMBOL sound/core/snd 0xa0fd2427 snd_pci_quirk_lookup_id +EXPORT_SYMBOL sound/core/snd 0xa9529e17 snd_ctl_remove_id +EXPORT_SYMBOL sound/core/snd 0xacd01471 snd_ctl_register_ioctl_compat +EXPORT_SYMBOL sound/core/snd 0xad530fa0 snd_device_register +EXPORT_SYMBOL sound/core/snd 0xb2e5ae4a snd_lookup_minor_data +EXPORT_SYMBOL sound/core/snd 0xc42f9161 snd_device_new +EXPORT_SYMBOL sound/core/snd 0xc8b88242 snd_jack_new +EXPORT_SYMBOL sound/core/snd 0xc9fb04ca snd_jack_report +EXPORT_SYMBOL sound/core/snd 0xcae87698 snd_mixer_oss_notify_callback +EXPORT_SYMBOL sound/core/snd 0xce8c63f5 snd_card_free_when_closed +EXPORT_SYMBOL sound/core/snd 0xd6e3528c snd_power_wait +EXPORT_SYMBOL sound/core/snd 0xe42d874f snd_jack_set_parent +EXPORT_SYMBOL sound/core/snd 0xec6ded6b snd_ctl_boolean_mono_info +EXPORT_SYMBOL sound/core/snd 0xf35c4c14 snd_info_free_entry +EXPORT_SYMBOL sound/core/snd 0xf3794f84 snd_info_register +EXPORT_SYMBOL sound/core/snd 0xfffd89db copy_from_user_toio +EXPORT_SYMBOL sound/core/snd-hwdep 0x8d27cf64 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 0x05387b00 snd_pcm_notify +EXPORT_SYMBOL sound/core/snd-pcm 0x05446a5f snd_pcm_lib_read +EXPORT_SYMBOL sound/core/snd-pcm 0x06b310c9 snd_free_pages +EXPORT_SYMBOL sound/core/snd-pcm 0x16e90b95 snd_pcm_hw_constraint_pow2 +EXPORT_SYMBOL sound/core/snd-pcm 0x1ae09e42 snd_pcm_period_elapsed +EXPORT_SYMBOL sound/core/snd-pcm 0x1d027e4b snd_pcm_format_signed +EXPORT_SYMBOL sound/core/snd-pcm 0x1e82838c snd_pcm_lib_free_vmalloc_buffer +EXPORT_SYMBOL sound/core/snd-pcm 0x263ac3ba snd_pcm_lib_write +EXPORT_SYMBOL sound/core/snd-pcm 0x26c4fcc2 snd_pcm_lib_free_pages +EXPORT_SYMBOL sound/core/snd-pcm 0x290da280 snd_dma_free_pages +EXPORT_SYMBOL sound/core/snd-pcm 0x3185db34 snd_pcm_lib_mmap_iomem +EXPORT_SYMBOL sound/core/snd-pcm 0x342fe860 snd_pcm_new +EXPORT_SYMBOL sound/core/snd-pcm 0x35482e6d snd_dma_alloc_pages_fallback +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 0x4125f998 snd_pcm_release_substream +EXPORT_SYMBOL sound/core/snd-pcm 0x49519836 snd_pcm_hw_constraint_msbits +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 0x5898dcba snd_malloc_pages +EXPORT_SYMBOL sound/core/snd-pcm 0x5d79a073 snd_pcm_hw_constraint_mask64 +EXPORT_SYMBOL sound/core/snd-pcm 0x5e7f4920 snd_pcm_format_set_silence +EXPORT_SYMBOL sound/core/snd-pcm 0x602f2c22 snd_pcm_open_substream +EXPORT_SYMBOL sound/core/snd-pcm 0x650f8603 snd_pcm_format_silence_64 +EXPORT_SYMBOL sound/core/snd-pcm 0x6815c89a snd_pcm_hw_rule_add +EXPORT_SYMBOL sound/core/snd-pcm 0x68a24153 snd_pcm_format_physical_width +EXPORT_SYMBOL sound/core/snd-pcm 0x6b97fae6 snd_pcm_hw_param_first +EXPORT_SYMBOL sound/core/snd-pcm 0x6c550d31 snd_pcm_suspend +EXPORT_SYMBOL sound/core/snd-pcm 0x6e3c3eb0 snd_pcm_lib_preallocate_pages_for_all +EXPORT_SYMBOL sound/core/snd-pcm 0x6ef8fcd8 snd_pcm_format_linear +EXPORT_SYMBOL sound/core/snd-pcm 0x70e3b9f0 snd_pcm_lib_malloc_pages +EXPORT_SYMBOL sound/core/snd-pcm 0x72f5565f snd_pcm_lib_get_vmalloc_page +EXPORT_SYMBOL sound/core/snd-pcm 0x834dc955 snd_pcm_format_size +EXPORT_SYMBOL sound/core/snd-pcm 0x881f5f7f snd_pcm_mmap_data +EXPORT_SYMBOL sound/core/snd-pcm 0x8f33ffca snd_pcm_set_sync +EXPORT_SYMBOL sound/core/snd-pcm 0x92a0a082 snd_pcm_set_ops +EXPORT_SYMBOL sound/core/snd-pcm 0x94098ff8 snd_interval_list +EXPORT_SYMBOL sound/core/snd-pcm 0x9650316b snd_pcm_hw_rule_noresample +EXPORT_SYMBOL sound/core/snd-pcm 0x984a51a2 snd_pcm_lib_readv +EXPORT_SYMBOL sound/core/snd-pcm 0x9a34acec snd_pcm_hw_constraint_integer +EXPORT_SYMBOL sound/core/snd-pcm 0x9a3a3314 snd_pcm_new_internal +EXPORT_SYMBOL sound/core/snd-pcm 0x9d9e2aff snd_pcm_hw_constraint_ranges +EXPORT_SYMBOL sound/core/snd-pcm 0xa61aa028 snd_pcm_format_unsigned +EXPORT_SYMBOL sound/core/snd-pcm 0xb24ea033 snd_pcm_stop +EXPORT_SYMBOL sound/core/snd-pcm 0xb9638db4 snd_pcm_rate_to_rate_bit +EXPORT_SYMBOL sound/core/snd-pcm 0xba95eacb snd_pcm_suspend_all +EXPORT_SYMBOL sound/core/snd-pcm 0xbaf8a6ff snd_pcm_hw_refine +EXPORT_SYMBOL sound/core/snd-pcm 0xc99a4ef3 snd_pcm_hw_constraint_ratnums +EXPORT_SYMBOL sound/core/snd-pcm 0xd364b0ef _snd_pcm_lib_alloc_vmalloc_buffer +EXPORT_SYMBOL sound/core/snd-pcm 0xd41ded28 snd_pcm_lib_preallocate_pages +EXPORT_SYMBOL sound/core/snd-pcm 0xd5ebda06 snd_pcm_kernel_ioctl +EXPORT_SYMBOL sound/core/snd-pcm 0xd6d3cf7f snd_dma_alloc_pages +EXPORT_SYMBOL sound/core/snd-pcm 0xd8b53c5c snd_pcm_hw_param_last +EXPORT_SYMBOL sound/core/snd-pcm 0xdabba57b snd_pcm_new_stream +EXPORT_SYMBOL sound/core/snd-pcm 0xdc68a24c snd_pcm_lib_ioctl +EXPORT_SYMBOL sound/core/snd-pcm 0xe56a9336 snd_pcm_format_width +EXPORT_SYMBOL sound/core/snd-pcm 0xed654958 snd_pcm_hw_constraint_list +EXPORT_SYMBOL sound/core/snd-pcm 0xf0fe701a snd_pcm_limit_hw_rates +EXPORT_SYMBOL sound/core/snd-pcm 0xf3797152 snd_interval_ratnum +EXPORT_SYMBOL sound/core/snd-pcm 0xf46324ef snd_pcm_lib_writev +EXPORT_SYMBOL sound/core/snd-pcm 0xf4cd27e5 snd_pcm_lib_preallocate_free_for_all +EXPORT_SYMBOL sound/core/snd-pcm 0xf4eb4d14 snd_pcm_hw_constraint_minmax +EXPORT_SYMBOL sound/core/snd-pcm 0xfde07fa4 snd_pcm_hw_constraint_ratdens +EXPORT_SYMBOL sound/core/snd-pcm 0xff6104d0 snd_pcm_rate_bit_to_rate +EXPORT_SYMBOL sound/core/snd-pcm 0xffd70670 snd_pcm_hw_constraint_step +EXPORT_SYMBOL sound/core/snd-rawmidi 0x02a42614 snd_rawmidi_receive +EXPORT_SYMBOL sound/core/snd-rawmidi 0x3a4e3430 snd_rawmidi_output_params +EXPORT_SYMBOL sound/core/snd-rawmidi 0x3faf1339 snd_rawmidi_info_select +EXPORT_SYMBOL sound/core/snd-rawmidi 0x6b619cfe snd_rawmidi_set_ops +EXPORT_SYMBOL sound/core/snd-rawmidi 0x6fe65fa1 snd_rawmidi_transmit +EXPORT_SYMBOL sound/core/snd-rawmidi 0x79f14974 snd_rawmidi_drain_input +EXPORT_SYMBOL sound/core/snd-rawmidi 0x7e7814e2 snd_rawmidi_input_params +EXPORT_SYMBOL sound/core/snd-rawmidi 0x8d104c07 snd_rawmidi_kernel_read +EXPORT_SYMBOL sound/core/snd-rawmidi 0x92850e46 snd_rawmidi_drop_output +EXPORT_SYMBOL sound/core/snd-rawmidi 0x933e4bd9 snd_rawmidi_kernel_open +EXPORT_SYMBOL sound/core/snd-rawmidi 0xa1849516 snd_rawmidi_transmit_empty +EXPORT_SYMBOL sound/core/snd-rawmidi 0xadc3ebe0 snd_rawmidi_drain_output +EXPORT_SYMBOL sound/core/snd-rawmidi 0xb3e87946 snd_rawmidi_transmit_peek +EXPORT_SYMBOL sound/core/snd-rawmidi 0xc828c344 snd_rawmidi_kernel_write +EXPORT_SYMBOL sound/core/snd-rawmidi 0xd1abd3a0 snd_rawmidi_new +EXPORT_SYMBOL sound/core/snd-rawmidi 0xde121bb9 snd_rawmidi_transmit_ack +EXPORT_SYMBOL sound/core/snd-rawmidi 0xfc837ad8 snd_rawmidi_kernel_release +EXPORT_SYMBOL sound/core/snd-timer 0x173e7fdd snd_timer_interrupt +EXPORT_SYMBOL sound/core/snd-timer 0x1adf44f5 snd_timer_close +EXPORT_SYMBOL sound/core/snd-timer 0x3574bc30 snd_timer_global_free +EXPORT_SYMBOL sound/core/snd-timer 0x3738d985 snd_timer_stop +EXPORT_SYMBOL sound/core/snd-timer 0x391f8b6b snd_timer_global_register +EXPORT_SYMBOL sound/core/snd-timer 0x41ac5c03 snd_timer_continue +EXPORT_SYMBOL sound/core/snd-timer 0x656ea007 snd_timer_new +EXPORT_SYMBOL sound/core/snd-timer 0x6aea91b5 snd_timer_start +EXPORT_SYMBOL sound/core/snd-timer 0xa4a033b7 snd_timer_notify +EXPORT_SYMBOL sound/core/snd-timer 0xc7b8fa4d snd_timer_resolution +EXPORT_SYMBOL sound/core/snd-timer 0xda09b86c snd_timer_global_new +EXPORT_SYMBOL sound/core/snd-timer 0xe4bc557e snd_timer_open +EXPORT_SYMBOL sound/core/snd-timer 0xf0fc7b48 snd_timer_pause +EXPORT_SYMBOL sound/drivers/mpu401/snd-mpu401-uart 0x6d0627bd 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 0x088a71e4 snd_opl3_timer_new +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x1779ab64 snd_opl3_hwdep_new +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x4fb70dc6 snd_opl3_new +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x893cc04a snd_opl3_interrupt +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x96bd9722 snd_opl3_reset +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xa1f2ae38 snd_opl3_create +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xda3f915c snd_opl3_find_patch +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xec4cf45e snd_opl3_init +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xf45ffac2 snd_opl3_load_patch +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x1f644ebe 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 0x2bfaab8c snd_vx_dsp_boot +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x32e81fb8 snd_vx_dsp_load +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x3fecfb33 snd_vx_create +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x96ecd37a snd_vx_free_firmware +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xa393f4d7 snd_vx_check_reg_bit +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xae017ee0 snd_vx_suspend +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xc3b1f240 snd_vx_resume +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xe21d633d snd_vx_setup_firmware +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xf1f04d23 snd_vx_irq_handler +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x010b59fc amdtp_stream_stop +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x02c3fbe7 cmp_connection_check_used +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x048a1eb5 iso_packets_buffer_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x1651a228 avc_general_get_sig_fmt +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x1d12dd33 amdtp_stream_add_pcm_hw_constraints +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x1dac6fe8 fw_iso_resources_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x20254e45 amdtp_syt_intervals +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x2aeea3a5 fcp_bus_reset +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x2fbd7f3d fw_iso_resources_allocate +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x53ca18e8 amdtp_rate_table +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x5822a931 avc_general_get_plug_info +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x592d8cc6 avc_general_set_sig_fmt +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x6616edc3 amdtp_stream_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x694b349e fw_iso_resources_update +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x71947dae amdtp_stream_set_parameters +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x73ed1bb7 amdtp_stream_pcm_pointer +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x78b5584a amdtp_stream_pcm_prepare +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xa187582a cmp_connection_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xa4b2cb8b cmp_connection_break +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xaafc0754 amdtp_stream_pcm_abort +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xac576952 fw_iso_resources_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xb0c4ea74 fw_iso_resources_free +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xb54b18d7 amdtp_stream_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xb56a0914 amdtp_stream_update +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xbaf87535 amdtp_stream_get_max_payload +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xc53c8f23 amdtp_stream_set_pcm_format +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xca161a7a iso_packets_buffer_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xd843b1e0 cmp_connection_establish +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xd9cb58ce fcp_avc_transaction +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xddbe6afc amdtp_stream_start +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xe9c93301 cmp_connection_update +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xf99568f6 cmp_connection_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xffb8ab3f snd_fw_transaction +EXPORT_SYMBOL sound/i2c/other/snd-ak4113 0x213682f1 snd_ak4113_suspend +EXPORT_SYMBOL sound/i2c/other/snd-ak4113 0xeb91caf2 snd_ak4113_resume +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x0b4f64aa snd_ak4114_create +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x3dccc9ff snd_ak4114_reinit +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x5b836482 snd_ak4114_build +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x7aa018b7 snd_ak4114_reg_write +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0xb9005252 snd_ak4114_check_rate_and_errors +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0xe24e0880 snd_ak4114_suspend +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0xe3c734ff snd_ak4114_external_rate +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0xffe55ea2 snd_ak4114_resume +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0x1e41081d snd_ak4117_check_rate_and_errors +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0x44141d90 snd_ak4117_external_rate +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0x467bac5d snd_ak4117_create +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0x625b58cc snd_ak4117_reinit +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0xbe30a271 snd_ak4117_reg_write +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0xffa192f4 snd_ak4117_build +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0x1383cdfb snd_akm4xxx_build_controls +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0x267fce3c snd_akm4xxx_write +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0x66138b94 snd_akm4xxx_reset +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0xf6bcedfd snd_akm4xxx_init +EXPORT_SYMBOL sound/i2c/other/snd-pt2258 0x56c10d40 snd_pt2258_build_controls +EXPORT_SYMBOL sound/i2c/other/snd-pt2258 0xb0aaf2d6 snd_pt2258_reset +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x1a69a2a3 snd_cs8427_create +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x38f92011 snd_cs8427_init +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x41a5c3ee snd_cs8427_reg_write +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x86821840 snd_cs8427_iec958_build +EXPORT_SYMBOL sound/i2c/snd-cs8427 0xa8543c9c snd_cs8427_iec958_pcm +EXPORT_SYMBOL sound/i2c/snd-cs8427 0xa9ce05be snd_cs8427_iec958_active +EXPORT_SYMBOL sound/i2c/snd-i2c 0x00ea9f92 snd_i2c_sendbytes +EXPORT_SYMBOL sound/i2c/snd-i2c 0x10ecda35 snd_i2c_probeaddr +EXPORT_SYMBOL sound/i2c/snd-i2c 0x21d05889 snd_i2c_device_free +EXPORT_SYMBOL sound/i2c/snd-i2c 0x3b779c15 snd_i2c_bus_create +EXPORT_SYMBOL sound/i2c/snd-i2c 0xd4471308 snd_i2c_readbytes +EXPORT_SYMBOL sound/i2c/snd-i2c 0xd60ca6be snd_i2c_device_create +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x01c79290 snd_sbmixer_read +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x08814d5b snd_sbmixer_suspend +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x2375cf5a snd_sbmixer_add_ctl +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x3f4d4683 snd_sbdsp_create +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x60d16b1e snd_sbdsp_get_byte +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x8dee32da snd_sbmixer_resume +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x93bfd911 snd_sbdsp_command +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0xbb2dd1d0 snd_sbmixer_new +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0xec4c092b snd_sbdsp_reset +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0xf5d34b74 snd_sbmixer_write +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x0e818042 snd_ac97_set_rate +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x2fc671c0 snd_ac97_get_short_name +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x3763951f snd_ac97_mixer +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x484282fb snd_ac97_pcm_open +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x4d3cd8d6 snd_ac97_resume +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x6c3ea168 snd_ac97_update_bits +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x6db0c2eb snd_ac97_bus +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x8a3e4160 snd_ac97_pcm_double_rate_rules +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x9a25b5a0 snd_ac97_read +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xb34229ce snd_ac97_write +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xc2ceb97f snd_ac97_pcm_close +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xd9b61149 snd_ac97_update_power +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xe01b4d34 snd_ac97_update +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xe234a0f9 snd_ac97_pcm_assign +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xe29b8f05 snd_ac97_suspend +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xe3047062 snd_ac97_tune_hardware +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xe94544d3 snd_ac97_write_cache +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x1e11ddb3 snd_emu10k1_voice_alloc +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x6741eba8 snd_emu10k1_ptr_read +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x6ab718de snd_emu10k1_synth_copy_from_user +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x77a8a51e snd_emu10k1_voice_free +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x934766f8 snd_emu10k1_memblk_map +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xb452f92b snd_emu10k1_synth_alloc +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xc4bd8ee8 snd_emu10k1_synth_free +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xd2fec140 snd_emu10k1_synth_bzero +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xf82b9503 snd_emu10k1_ptr_write +EXPORT_SYMBOL sound/pci/ice1712/snd-ice17xx-ak4xxx 0x8707e034 snd_ice1712_akm4xxx_free +EXPORT_SYMBOL sound/pci/ice1712/snd-ice17xx-ak4xxx 0xe0905c62 snd_ice1712_akm4xxx_init +EXPORT_SYMBOL sound/pci/ice1712/snd-ice17xx-ak4xxx 0xeb647bcf snd_ice1712_akm4xxx_build_controls +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x097b49ee oxygen_read32 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x113e5b40 oxygen_write_spi +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x1d4130d1 oxygen_write16 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x2f364ff3 oxygen_read8 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x30e7fcd4 oxygen_reset_uart +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x3476fe29 oxygen_pci_pm +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x35abb139 oxygen_pci_probe +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x36cf6105 oxygen_read16 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x42585cf0 oxygen_pci_remove +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x6dd382d5 oxygen_write32_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x7cf87a97 oxygen_write_ac97_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x84415c35 oxygen_write_ac97 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x8f37ef28 oxygen_write32 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xa48ce788 oxygen_write8_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xa7bee981 oxygen_update_dac_routing +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xcf15ad94 oxygen_write8 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xdfc02a97 oxygen_write16_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xe3e39312 oxygen_pci_shutdown +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xe589aba8 oxygen_write_uart +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xe7dd3259 oxygen_read_ac97 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xf13842a1 oxygen_write_i2c +EXPORT_SYMBOL sound/pci/trident/snd-trident 0x2b618948 snd_trident_start_voice +EXPORT_SYMBOL sound/pci/trident/snd-trident 0x512e3c7c snd_trident_alloc_voice +EXPORT_SYMBOL sound/pci/trident/snd-trident 0x5a1abcb4 snd_trident_stop_voice +EXPORT_SYMBOL sound/pci/trident/snd-trident 0x9b40437e snd_trident_write_voice_regs +EXPORT_SYMBOL sound/pci/trident/snd-trident 0xc91d3a78 snd_trident_free_voice +EXPORT_SYMBOL sound/soc/codecs/snd-soc-tlv320aic23 0x01f2c4fe tlv320aic23_regmap +EXPORT_SYMBOL sound/soc/codecs/snd-soc-tlv320aic23 0x0906d32c tlv320aic23_probe +EXPORT_SYMBOL sound/soc/snd-soc-core 0xba11e0d5 snd_soc_alloc_ac97_codec +EXPORT_SYMBOL sound/soundcore 0x08ec8c48 register_sound_special_device +EXPORT_SYMBOL sound/soundcore 0x2cb79b68 sound_class +EXPORT_SYMBOL sound/soundcore 0x548db4fa register_sound_midi +EXPORT_SYMBOL sound/soundcore 0x7afc9d8a unregister_sound_mixer +EXPORT_SYMBOL sound/soundcore 0x8a91eb19 register_sound_special +EXPORT_SYMBOL sound/soundcore 0x99c95fa5 unregister_sound_special +EXPORT_SYMBOL sound/soundcore 0xcd083b10 unregister_sound_dsp +EXPORT_SYMBOL sound/soundcore 0xd0393f1f register_sound_dsp +EXPORT_SYMBOL sound/soundcore 0xf61f2027 register_sound_mixer +EXPORT_SYMBOL sound/soundcore 0xfdab6de3 unregister_sound_midi +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x1a4cdc4b snd_emux_terminate_all +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x21d7d65a snd_emux_free +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x465617bd snd_emux_lock_voice +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x63524d1b 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 0x9f7f052e snd_emux_new +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0xa9e87a37 snd_emux_register +EXPORT_SYMBOL sound/synth/snd-util-mem 0x1c04b023 snd_util_memhdr_new +EXPORT_SYMBOL sound/synth/snd-util-mem 0x33b6d95d __snd_util_mem_alloc +EXPORT_SYMBOL sound/synth/snd-util-mem 0x526c051f snd_util_mem_free +EXPORT_SYMBOL sound/synth/snd-util-mem 0x68365b3d __snd_util_memblk_new +EXPORT_SYMBOL sound/synth/snd-util-mem 0xa41b4ad8 snd_util_mem_alloc +EXPORT_SYMBOL sound/synth/snd-util-mem 0xb7888492 snd_util_mem_avail +EXPORT_SYMBOL sound/synth/snd-util-mem 0xc23467a9 snd_util_memhdr_free +EXPORT_SYMBOL sound/synth/snd-util-mem 0xcad4d998 __snd_util_mem_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 0xd26f70a5 snd_usbmidi_create +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0xd9d2bb03 snd_usbmidi_disconnect +EXPORT_SYMBOL vmlinux 0x000051cb dev_printk_emit +EXPORT_SYMBOL vmlinux 0x0008205c tty_port_open +EXPORT_SYMBOL vmlinux 0x0013b0c0 xfrm_lookup +EXPORT_SYMBOL vmlinux 0x00237e51 of_graph_parse_endpoint +EXPORT_SYMBOL vmlinux 0x0042206d vme_register_bridge +EXPORT_SYMBOL vmlinux 0x0045d34e mdiobus_unregister +EXPORT_SYMBOL vmlinux 0x004bd578 jbd2_journal_revoke +EXPORT_SYMBOL vmlinux 0x0051c49c blk_mq_start_stopped_hw_queues +EXPORT_SYMBOL vmlinux 0x005a4975 cpu_possible_mask +EXPORT_SYMBOL vmlinux 0x00645cfb pm860x_reg_read +EXPORT_SYMBOL vmlinux 0x0070cd1f queue_delayed_work_on +EXPORT_SYMBOL vmlinux 0x00774f78 blk_queue_free_tags +EXPORT_SYMBOL vmlinux 0x0087a2fa netif_carrier_on +EXPORT_SYMBOL vmlinux 0x00916542 pci_set_power_state +EXPORT_SYMBOL vmlinux 0x00a35cd3 generic_block_bmap +EXPORT_SYMBOL vmlinux 0x00b8a192 kill_anon_super +EXPORT_SYMBOL vmlinux 0x00bf8167 skb_copy +EXPORT_SYMBOL vmlinux 0x00d7e722 vme_lm_count +EXPORT_SYMBOL vmlinux 0x01000e51 schedule +EXPORT_SYMBOL vmlinux 0x0101d5b1 ip_idents_reserve +EXPORT_SYMBOL vmlinux 0x0103a683 pci_bus_read_config_dword +EXPORT_SYMBOL vmlinux 0x011a4166 bprm_change_interp +EXPORT_SYMBOL vmlinux 0x0120c10d of_device_is_big_endian +EXPORT_SYMBOL vmlinux 0x0122f95e _lv1_get_spe_irq_outlet +EXPORT_SYMBOL vmlinux 0x01240ae2 from_kuid_munged +EXPORT_SYMBOL vmlinux 0x012a97fc xor_altivec_4 +EXPORT_SYMBOL vmlinux 0x012f9c0c param_ops_charp +EXPORT_SYMBOL vmlinux 0x0148dd1d get_disk +EXPORT_SYMBOL vmlinux 0x0156b3e8 pci_reenable_device +EXPORT_SYMBOL vmlinux 0x016cf0a5 kernel_sendpage +EXPORT_SYMBOL vmlinux 0x016e5c2a mod_timer +EXPORT_SYMBOL vmlinux 0x0173f615 skb_checksum +EXPORT_SYMBOL vmlinux 0x018c421e tty_port_hangup +EXPORT_SYMBOL vmlinux 0x018d9919 _lv1_set_lpm_interrupt_mask +EXPORT_SYMBOL vmlinux 0x018f2d64 security_path_chmod +EXPORT_SYMBOL vmlinux 0x019eb9b1 dquot_disable +EXPORT_SYMBOL vmlinux 0x01b30a26 xfrm4_prepare_output +EXPORT_SYMBOL vmlinux 0x01c5031f pci_release_regions +EXPORT_SYMBOL vmlinux 0x01c9f06a bioset_free +EXPORT_SYMBOL vmlinux 0x01d07879 bioset_integrity_create +EXPORT_SYMBOL vmlinux 0x01d4d1b1 inet_dgram_connect +EXPORT_SYMBOL vmlinux 0x01de868b blk_mq_init_allocated_queue +EXPORT_SYMBOL vmlinux 0x01ee9ca8 dev_get_stats +EXPORT_SYMBOL vmlinux 0x020d18d7 _lv1_set_lpm_debug_bus_control +EXPORT_SYMBOL vmlinux 0x02304b4a jbd2_journal_blocks_per_page +EXPORT_SYMBOL vmlinux 0x023a074a hvc_get_chars +EXPORT_SYMBOL vmlinux 0x023bb75a tso_build_hdr +EXPORT_SYMBOL vmlinux 0x024bf827 radix_tree_gang_lookup_tag_slot +EXPORT_SYMBOL vmlinux 0x02524e4c __cleancache_init_fs +EXPORT_SYMBOL vmlinux 0x02559b05 ppp_register_compressor +EXPORT_SYMBOL vmlinux 0x02649054 security_sock_rcv_skb +EXPORT_SYMBOL vmlinux 0x0274dc2b netif_get_num_default_rss_queues +EXPORT_SYMBOL vmlinux 0x027d5499 _lv1_did_update_interrupt_mask +EXPORT_SYMBOL vmlinux 0x02903aa2 __skb_tx_hash +EXPORT_SYMBOL vmlinux 0x0294a437 vfs_setpos +EXPORT_SYMBOL vmlinux 0x029b6d71 genphy_read_status +EXPORT_SYMBOL vmlinux 0x02a18c74 nf_conntrack_destroy +EXPORT_SYMBOL vmlinux 0x02a6ce5a crc16_table +EXPORT_SYMBOL vmlinux 0x02ac5fcf sync_blockdev +EXPORT_SYMBOL vmlinux 0x02ad1392 fsnotify_add_mark +EXPORT_SYMBOL vmlinux 0x02ad511b mmc_request_done +EXPORT_SYMBOL vmlinux 0x02b26912 register_md_cluster_operations +EXPORT_SYMBOL vmlinux 0x02d2c853 sk_ns_capable +EXPORT_SYMBOL vmlinux 0x02e8c641 sock_common_setsockopt +EXPORT_SYMBOL vmlinux 0x02ea111e scsi_driverbyte_string +EXPORT_SYMBOL vmlinux 0x03145ec8 pci_dev_driver +EXPORT_SYMBOL vmlinux 0x0319074c dcache_dir_lseek +EXPORT_SYMBOL vmlinux 0x031dc65e pasemi_dma_free_chan +EXPORT_SYMBOL vmlinux 0x032552f8 scsi_print_command +EXPORT_SYMBOL vmlinux 0x0334da4e scsi_command_size_tbl +EXPORT_SYMBOL vmlinux 0x0352d29b nf_register_hook +EXPORT_SYMBOL vmlinux 0x03592ea0 security_unix_stream_connect +EXPORT_SYMBOL vmlinux 0x0366307a console_suspend_enabled +EXPORT_SYMBOL vmlinux 0x03740860 input_mt_assign_slots +EXPORT_SYMBOL vmlinux 0x037a0cba kfree +EXPORT_SYMBOL vmlinux 0x038ce25d nf_ct_attach +EXPORT_SYMBOL vmlinux 0x039ba716 dump_skip +EXPORT_SYMBOL vmlinux 0x03ad5240 __dev_getfirstbyhwtype +EXPORT_SYMBOL vmlinux 0x03b635c0 alloc_etherdev_mqs +EXPORT_SYMBOL vmlinux 0x03c8c8fb agp_generic_alloc_by_type +EXPORT_SYMBOL vmlinux 0x03ea6662 adjust_managed_page_count +EXPORT_SYMBOL vmlinux 0x03ebda85 dns_query +EXPORT_SYMBOL vmlinux 0x03f4d6f9 of_get_next_child +EXPORT_SYMBOL vmlinux 0x03fd2571 vm_unmap_ram +EXPORT_SYMBOL vmlinux 0x04074f48 ioremap +EXPORT_SYMBOL vmlinux 0x041555aa ip6_expire_frag_queue +EXPORT_SYMBOL vmlinux 0x0422fe4a inet_csk_timer_bug_msg +EXPORT_SYMBOL vmlinux 0x043e40d3 i8042_install_filter +EXPORT_SYMBOL vmlinux 0x0440a533 _lv1_net_remove_multicast_address +EXPORT_SYMBOL vmlinux 0x04482cdb __refrigerator +EXPORT_SYMBOL vmlinux 0x04543b07 neigh_seq_next +EXPORT_SYMBOL vmlinux 0x04584cf2 bio_add_page +EXPORT_SYMBOL vmlinux 0x046522df jbd2_journal_destroy +EXPORT_SYMBOL vmlinux 0x04729537 pcix_set_mmrbc +EXPORT_SYMBOL vmlinux 0x04874a1e bio_integrity_endio +EXPORT_SYMBOL vmlinux 0x0487f831 fb_find_best_display +EXPORT_SYMBOL vmlinux 0x04a5d3c1 cdrom_open +EXPORT_SYMBOL vmlinux 0x04b73369 filemap_fault +EXPORT_SYMBOL vmlinux 0x04be3b2c sock_create +EXPORT_SYMBOL vmlinux 0x04e78622 fb_show_logo +EXPORT_SYMBOL vmlinux 0x04ea56f9 _kstrtol +EXPORT_SYMBOL vmlinux 0x04ea5d10 ksize +EXPORT_SYMBOL vmlinux 0x04ff0cba __blk_end_request +EXPORT_SYMBOL vmlinux 0x05186ca4 flush_icache_range +EXPORT_SYMBOL vmlinux 0x051fa124 key_task_permission +EXPORT_SYMBOL vmlinux 0x05207e7e scsi_host_alloc +EXPORT_SYMBOL vmlinux 0x05240ee7 percpu_counter_batch +EXPORT_SYMBOL vmlinux 0x0530dede _raw_write_trylock +EXPORT_SYMBOL vmlinux 0x0533a217 xfrm_unregister_type +EXPORT_SYMBOL vmlinux 0x0540b32a cpu_core_map +EXPORT_SYMBOL vmlinux 0x0541bdda elevator_init +EXPORT_SYMBOL vmlinux 0x054a40d0 __tracepoint_fence_emit +EXPORT_SYMBOL vmlinux 0x054dabe4 mnt_drop_write_file +EXPORT_SYMBOL vmlinux 0x055c8559 __kfifo_dma_in_prepare_r +EXPORT_SYMBOL vmlinux 0x05707bda init_task +EXPORT_SYMBOL vmlinux 0x0572f705 sock_release +EXPORT_SYMBOL vmlinux 0x057cfd85 elv_dispatch_sort +EXPORT_SYMBOL vmlinux 0x05a08bee simple_transaction_read +EXPORT_SYMBOL vmlinux 0x05a514a1 _insl_ns +EXPORT_SYMBOL vmlinux 0x05a6ba42 page_readlink +EXPORT_SYMBOL vmlinux 0x05b47498 jbd2_journal_flush +EXPORT_SYMBOL vmlinux 0x05bdcfd3 register_md_personality +EXPORT_SYMBOL vmlinux 0x05c56422 __skb_flow_get_ports +EXPORT_SYMBOL vmlinux 0x05f31001 pmac_register_agp_pm +EXPORT_SYMBOL vmlinux 0x061651be strcat +EXPORT_SYMBOL vmlinux 0x06214628 __kfree_skb +EXPORT_SYMBOL vmlinux 0x063187f4 dquot_quota_on +EXPORT_SYMBOL vmlinux 0x0634100a bitmap_parselist_user +EXPORT_SYMBOL vmlinux 0x064553e1 jbd2_journal_load +EXPORT_SYMBOL vmlinux 0x06456aff _lv1_get_virtual_address_space_id_of_ppe +EXPORT_SYMBOL vmlinux 0x06524282 blk_mq_start_request +EXPORT_SYMBOL vmlinux 0x065caed3 free_user_ns +EXPORT_SYMBOL vmlinux 0x067d8d35 security_release_secctx +EXPORT_SYMBOL vmlinux 0x068d556e dev_get_by_name +EXPORT_SYMBOL vmlinux 0x069504f9 md_write_start +EXPORT_SYMBOL vmlinux 0x069c6493 dev_mc_add_excl +EXPORT_SYMBOL vmlinux 0x06d39d4d of_n_addr_cells +EXPORT_SYMBOL vmlinux 0x06fe3b14 default_grn +EXPORT_SYMBOL vmlinux 0x071040bf ip_ct_attach +EXPORT_SYMBOL vmlinux 0x0727c4f3 iowrite8 +EXPORT_SYMBOL vmlinux 0x072f901c vme_master_rmw +EXPORT_SYMBOL vmlinux 0x07321256 cros_ec_check_result +EXPORT_SYMBOL vmlinux 0x07366faa seq_vprintf +EXPORT_SYMBOL vmlinux 0x07479c4b scsi_remove_host +EXPORT_SYMBOL vmlinux 0x074e2277 ioctl_by_bdev +EXPORT_SYMBOL vmlinux 0x074e9213 down_killable +EXPORT_SYMBOL vmlinux 0x075e56fd pci_set_dma_max_seg_size +EXPORT_SYMBOL vmlinux 0x077b6e8b copy_page_from_iter +EXPORT_SYMBOL vmlinux 0x0785ce50 mipi_dsi_dcs_write +EXPORT_SYMBOL vmlinux 0x0799c662 t10_pi_type3_ip +EXPORT_SYMBOL vmlinux 0x07a23a6f register_netdevice +EXPORT_SYMBOL vmlinux 0x07a890c8 fb_alloc_cmap +EXPORT_SYMBOL vmlinux 0x07cb3c87 netdev_update_features +EXPORT_SYMBOL vmlinux 0x07cc4a5d printk_timed_ratelimit +EXPORT_SYMBOL vmlinux 0x07cfbf0d register_key_type +EXPORT_SYMBOL vmlinux 0x07ef213a pasemi_dma_free_fun +EXPORT_SYMBOL vmlinux 0x07f8ee15 _lv1_unmap_device_dma_region +EXPORT_SYMBOL vmlinux 0x0802e128 _dev_info +EXPORT_SYMBOL vmlinux 0x082546de request_firmware +EXPORT_SYMBOL vmlinux 0x082c3213 pci_root_buses +EXPORT_SYMBOL vmlinux 0x083aef95 filemap_flush +EXPORT_SYMBOL vmlinux 0x083eb21c rfkill_unregister +EXPORT_SYMBOL vmlinux 0x085ab4f1 generic_write_checks +EXPORT_SYMBOL vmlinux 0x086121c7 mmc_set_blockcount +EXPORT_SYMBOL vmlinux 0x087a6d14 vio_enable_interrupts +EXPORT_SYMBOL vmlinux 0x08a0efce posix_lock_file +EXPORT_SYMBOL vmlinux 0x08a690d7 dev_emerg +EXPORT_SYMBOL vmlinux 0x08acca51 kfree_put_link +EXPORT_SYMBOL vmlinux 0x08b1f771 genphy_setup_forced +EXPORT_SYMBOL vmlinux 0x08cc5357 set_device_ro +EXPORT_SYMBOL vmlinux 0x08ea69e7 mipi_dsi_packet_format_is_long +EXPORT_SYMBOL vmlinux 0x09083df2 elv_rb_del +EXPORT_SYMBOL vmlinux 0x09188e5a file_open_root +EXPORT_SYMBOL vmlinux 0x0942c5df skb_realloc_headroom +EXPORT_SYMBOL vmlinux 0x094f1484 dm_unregister_target +EXPORT_SYMBOL vmlinux 0x09580deb init_timer_key +EXPORT_SYMBOL vmlinux 0x096341c2 _lv1_connect_irq_plug_ext +EXPORT_SYMBOL vmlinux 0x098b71c6 fb_dealloc_cmap +EXPORT_SYMBOL vmlinux 0x0999bc89 genlmsg_multicast_allns +EXPORT_SYMBOL vmlinux 0x09c05441 tcp_conn_request +EXPORT_SYMBOL vmlinux 0x09c55cec schedule_timeout_interruptible +EXPORT_SYMBOL vmlinux 0x09c67afb flex_array_get +EXPORT_SYMBOL vmlinux 0x09c779b1 neigh_direct_output +EXPORT_SYMBOL vmlinux 0x09c8eb55 font_vga_8x16 +EXPORT_SYMBOL vmlinux 0x09d44df9 in_lock_functions +EXPORT_SYMBOL vmlinux 0x09d4b3e6 fasync_helper +EXPORT_SYMBOL vmlinux 0x09ddd1ae __inode_sub_bytes +EXPORT_SYMBOL vmlinux 0x09f6d9bd blk_queue_softirq_done +EXPORT_SYMBOL vmlinux 0x0a1a7213 elv_register_queue +EXPORT_SYMBOL vmlinux 0x0a2369e3 dcb_setapp +EXPORT_SYMBOL vmlinux 0x0a23ed92 d_hash_and_lookup +EXPORT_SYMBOL vmlinux 0x0a2487e0 unblock_all_signals +EXPORT_SYMBOL vmlinux 0x0a292872 reservation_seqcount_class +EXPORT_SYMBOL vmlinux 0x0a2b5593 tcp_get_cookie_sock +EXPORT_SYMBOL vmlinux 0x0a2c56a7 xfrm_policy_flush +EXPORT_SYMBOL vmlinux 0x0a3d0644 cpu_online_mask +EXPORT_SYMBOL vmlinux 0x0a57863e cancel_delayed_work_sync +EXPORT_SYMBOL vmlinux 0x0a6ee856 user_path_at_empty +EXPORT_SYMBOL vmlinux 0x0a71ce5f con_set_default_unimap +EXPORT_SYMBOL vmlinux 0x0a770832 register_memory_notifier +EXPORT_SYMBOL vmlinux 0x0a793930 write_inode_now +EXPORT_SYMBOL vmlinux 0x0aa309cf synchronize_hardirq +EXPORT_SYMBOL vmlinux 0x0aa3b224 no_llseek +EXPORT_SYMBOL vmlinux 0x0aaa73d3 setup_new_exec +EXPORT_SYMBOL vmlinux 0x0aaab7ea genlmsg_put +EXPORT_SYMBOL vmlinux 0x0aae7d7d genphy_soft_reset +EXPORT_SYMBOL vmlinux 0x0ab3bf06 netdev_has_upper_dev +EXPORT_SYMBOL vmlinux 0x0ac3389f ppp_input_error +EXPORT_SYMBOL vmlinux 0x0acf7679 dma_issue_pending_all +EXPORT_SYMBOL vmlinux 0x0af8544e __neigh_event_send +EXPORT_SYMBOL vmlinux 0x0b0d888b icmpv6_err_convert +EXPORT_SYMBOL vmlinux 0x0b1b7be1 twl6040_set_pll +EXPORT_SYMBOL vmlinux 0x0b1beb31 vmalloc_32_user +EXPORT_SYMBOL vmlinux 0x0b2685c5 jbd2_log_wait_commit +EXPORT_SYMBOL vmlinux 0x0b2e1ec7 h_get_mpp +EXPORT_SYMBOL vmlinux 0x0b742fd7 simple_strtol +EXPORT_SYMBOL vmlinux 0x0b9bd4c5 param_set_copystring +EXPORT_SYMBOL vmlinux 0x0bbc5908 gen_estimator_active +EXPORT_SYMBOL vmlinux 0x0bc05d7d find_inode_nowait +EXPORT_SYMBOL vmlinux 0x0bc0d928 scsi_init_io +EXPORT_SYMBOL vmlinux 0x0bc477a2 irq_set_irq_type +EXPORT_SYMBOL vmlinux 0x0bf99bf7 xfrm_policy_walk +EXPORT_SYMBOL vmlinux 0x0c1aafc1 kernel_sock_shutdown +EXPORT_SYMBOL vmlinux 0x0c1ad162 _lv1_net_start_rx_dma +EXPORT_SYMBOL vmlinux 0x0c21d019 flush_delayed_work +EXPORT_SYMBOL vmlinux 0x0c24e781 phy_ethtool_get_wol +EXPORT_SYMBOL vmlinux 0x0c4503c6 blk_mq_alloc_tag_set +EXPORT_SYMBOL vmlinux 0x0c45fc96 vfs_lstat +EXPORT_SYMBOL vmlinux 0x0c58a8cd netdev_increment_features +EXPORT_SYMBOL vmlinux 0x0c6bdc3f vme_master_read +EXPORT_SYMBOL vmlinux 0x0c80af34 ata_port_printk +EXPORT_SYMBOL vmlinux 0x0ca0c882 twl6030_interrupt_mask +EXPORT_SYMBOL vmlinux 0x0cae232b utf16s_to_utf8s +EXPORT_SYMBOL vmlinux 0x0cb21282 dm_get_device +EXPORT_SYMBOL vmlinux 0x0cc4e770 input_mt_get_slot_by_key +EXPORT_SYMBOL vmlinux 0x0cc61390 elevator_alloc +EXPORT_SYMBOL vmlinux 0x0cf9327a bio_clone_fast +EXPORT_SYMBOL vmlinux 0x0d022c5d skb_kill_datagram +EXPORT_SYMBOL vmlinux 0x0d04bcf0 current_fs_time +EXPORT_SYMBOL vmlinux 0x0d1fe973 finish_no_open +EXPORT_SYMBOL vmlinux 0x0d3c9168 blk_rq_count_integrity_sg +EXPORT_SYMBOL vmlinux 0x0d44af4f make_kuid +EXPORT_SYMBOL vmlinux 0x0d45fffe shrink_dcache_parent +EXPORT_SYMBOL vmlinux 0x0d53e512 inode_reclaim_rsv_space +EXPORT_SYMBOL vmlinux 0x0d542439 __ipv6_addr_type +EXPORT_SYMBOL vmlinux 0x0d61eeee __bitmap_subset +EXPORT_SYMBOL vmlinux 0x0d6c963c copy_from_user +EXPORT_SYMBOL vmlinux 0x0d8a4e80 sk_net_capable +EXPORT_SYMBOL vmlinux 0x0d95f03b agp_collect_device_status +EXPORT_SYMBOL vmlinux 0x0d981547 tcf_action_dump_1 +EXPORT_SYMBOL vmlinux 0x0da10ec3 security_sock_graft +EXPORT_SYMBOL vmlinux 0x0dc0ace0 idr_find_slowpath +EXPORT_SYMBOL vmlinux 0x0dea23a2 vfs_unlink +EXPORT_SYMBOL vmlinux 0x0df3e049 pcim_iounmap +EXPORT_SYMBOL vmlinux 0x0e08c617 filp_open +EXPORT_SYMBOL vmlinux 0x0e0a1afd tcp_v4_destroy_sock +EXPORT_SYMBOL vmlinux 0x0e204259 __devm_request_region +EXPORT_SYMBOL vmlinux 0x0e4f4d0d pnv_pci_get_phb_node +EXPORT_SYMBOL vmlinux 0x0e4f9517 phy_print_status +EXPORT_SYMBOL vmlinux 0x0e6da44a set_normalized_timespec +EXPORT_SYMBOL vmlinux 0x0e7c32a1 sock_no_getname +EXPORT_SYMBOL vmlinux 0x0e84773f flush_dcache_icache_page +EXPORT_SYMBOL vmlinux 0x0e8f30f6 _raw_write_lock_irq +EXPORT_SYMBOL vmlinux 0x0e91fd08 inode_dio_wait +EXPORT_SYMBOL vmlinux 0x0e9b42ba sk_stream_kill_queues +EXPORT_SYMBOL vmlinux 0x0ec5babe vme_dma_free +EXPORT_SYMBOL vmlinux 0x0ed8c029 of_get_property +EXPORT_SYMBOL vmlinux 0x0ef63f52 bio_integrity_trim +EXPORT_SYMBOL vmlinux 0x0efcbb1b set_current_groups +EXPORT_SYMBOL vmlinux 0x0f05a3f4 phy_suspend +EXPORT_SYMBOL vmlinux 0x0f25e8be scsi_device_put +EXPORT_SYMBOL vmlinux 0x0f26e7b9 ps3_dma_region_create +EXPORT_SYMBOL vmlinux 0x0f300c3f dev_mc_del_global +EXPORT_SYMBOL vmlinux 0x0f41f57d ethtool_op_get_ts_info +EXPORT_SYMBOL vmlinux 0x0f4c91ed ns_to_timespec +EXPORT_SYMBOL vmlinux 0x0f4ebb1c __pskb_copy_fclone +EXPORT_SYMBOL vmlinux 0x0f561d3a filp_close +EXPORT_SYMBOL vmlinux 0x0f5faa7e wait_for_completion_io_timeout +EXPORT_SYMBOL vmlinux 0x0f60b594 key_alloc +EXPORT_SYMBOL vmlinux 0x0f62cf60 security_path_symlink +EXPORT_SYMBOL vmlinux 0x0f6558ff jbd2_journal_update_sb_errno +EXPORT_SYMBOL vmlinux 0x0f6a3b5c string_get_size +EXPORT_SYMBOL vmlinux 0x0f7c469e follow_down +EXPORT_SYMBOL vmlinux 0x0f7c9819 debugfs_create_automount +EXPORT_SYMBOL vmlinux 0x0f7cdb21 __fib6_flush_trees +EXPORT_SYMBOL vmlinux 0x0f9dd248 input_mt_destroy_slots +EXPORT_SYMBOL vmlinux 0x0fa807fb jbd2__journal_restart +EXPORT_SYMBOL vmlinux 0x0faef0ed __tasklet_schedule +EXPORT_SYMBOL vmlinux 0x0fb2f8a4 mktime64 +EXPORT_SYMBOL vmlinux 0x0fc2831c security_path_truncate +EXPORT_SYMBOL vmlinux 0x0fc85dc3 kvmppc_hv_find_lock_hpte +EXPORT_SYMBOL vmlinux 0x0fdc9e9b of_find_node_by_name +EXPORT_SYMBOL vmlinux 0x0fdf9eae __dev_kfree_skb_any +EXPORT_SYMBOL vmlinux 0x0ff07c4f param_set_charp +EXPORT_SYMBOL vmlinux 0x0ff108db md_write_end +EXPORT_SYMBOL vmlinux 0x0ff8e632 kernel_param_unlock +EXPORT_SYMBOL vmlinux 0x0ffde8d9 thaw_bdev +EXPORT_SYMBOL vmlinux 0x100ecbc0 tty_check_change +EXPORT_SYMBOL vmlinux 0x104adbb4 dev_get_phys_port_id +EXPORT_SYMBOL vmlinux 0x105dfbb5 pcim_iomap_table +EXPORT_SYMBOL vmlinux 0x105eafbe eth_gro_complete +EXPORT_SYMBOL vmlinux 0x106bd2aa pci_alloc_dev +EXPORT_SYMBOL vmlinux 0x106c2a8d sock_dequeue_err_skb +EXPORT_SYMBOL vmlinux 0x106d8cf6 xfrm4_rcv_encap +EXPORT_SYMBOL vmlinux 0x107e5878 zlib_inflateEnd +EXPORT_SYMBOL vmlinux 0x10950ee1 radix_tree_tag_clear +EXPORT_SYMBOL vmlinux 0x109f1f8b dev_trans_start +EXPORT_SYMBOL vmlinux 0x10a9f4c2 textsearch_find_continuous +EXPORT_SYMBOL vmlinux 0x10daa7bc vfs_rmdir +EXPORT_SYMBOL vmlinux 0x10e4c2bd blk_integrity_compare +EXPORT_SYMBOL vmlinux 0x10ee20bb default_blu +EXPORT_SYMBOL vmlinux 0x10f207e8 __blockdev_direct_IO +EXPORT_SYMBOL vmlinux 0x10feb4a4 sg_miter_skip +EXPORT_SYMBOL vmlinux 0x11089ac7 _ctype +EXPORT_SYMBOL vmlinux 0x11273857 flush_signals +EXPORT_SYMBOL vmlinux 0x1136f71c skb_trim +EXPORT_SYMBOL vmlinux 0x11372e02 dm_io +EXPORT_SYMBOL vmlinux 0x113b94bc kill_litter_super +EXPORT_SYMBOL vmlinux 0x1143b1a6 tty_register_ldisc +EXPORT_SYMBOL vmlinux 0x1154851f pci_enable_device +EXPORT_SYMBOL vmlinux 0x115c9619 get_cached_acl +EXPORT_SYMBOL vmlinux 0x1163f0a7 blk_max_low_pfn +EXPORT_SYMBOL vmlinux 0x117093be qdisc_class_hash_init +EXPORT_SYMBOL vmlinux 0x1171b635 _lv1_delete_lpm_event_bookmark +EXPORT_SYMBOL vmlinux 0x117817bc iunique +EXPORT_SYMBOL vmlinux 0x1182d83a cpuidle_disable +EXPORT_SYMBOL vmlinux 0x11899a7a tty_register_device +EXPORT_SYMBOL vmlinux 0x118a5e56 blk_limits_io_min +EXPORT_SYMBOL vmlinux 0x11a044f6 mod_timer_pinned +EXPORT_SYMBOL vmlinux 0x11b06383 generic_block_fiemap +EXPORT_SYMBOL vmlinux 0x11b1682b try_to_writeback_inodes_sb +EXPORT_SYMBOL vmlinux 0x11b40dc1 xfrm_policy_insert +EXPORT_SYMBOL vmlinux 0x11e07d98 generic_file_direct_write +EXPORT_SYMBOL vmlinux 0x11f2f5a1 devm_devfreq_register_opp_notifier +EXPORT_SYMBOL vmlinux 0x11f7ed4c hex_to_bin +EXPORT_SYMBOL vmlinux 0x12015bd0 dst_destroy +EXPORT_SYMBOL vmlinux 0x120b336a __rb_insert_augmented +EXPORT_SYMBOL vmlinux 0x120d67d4 unregister_memory_isolate_notifier +EXPORT_SYMBOL vmlinux 0x120fc6b1 kstrdup_const +EXPORT_SYMBOL vmlinux 0x123f82f3 getrawmonotonic64 +EXPORT_SYMBOL vmlinux 0x125acfec vlan_uses_dev +EXPORT_SYMBOL vmlinux 0x12a38747 usleep_range +EXPORT_SYMBOL vmlinux 0x12a82a21 mount_ns +EXPORT_SYMBOL vmlinux 0x12cb6622 _lv1_map_device_dma_region +EXPORT_SYMBOL vmlinux 0x12dfeb12 vprintk_emit +EXPORT_SYMBOL vmlinux 0x12e5ef0c rtas_set_power_level +EXPORT_SYMBOL vmlinux 0x12ee3947 pci_clear_mwi +EXPORT_SYMBOL vmlinux 0x12f19be4 scsi_report_bus_reset +EXPORT_SYMBOL vmlinux 0x13215eac mem_section +EXPORT_SYMBOL vmlinux 0x13243d4b wl1251_get_platform_data +EXPORT_SYMBOL vmlinux 0x132b0db7 dm_kcopyd_copy +EXPORT_SYMBOL vmlinux 0x132cf3a2 put_io_context +EXPORT_SYMBOL vmlinux 0x13307fde vsscanf +EXPORT_SYMBOL vmlinux 0x134ce302 genphy_update_link +EXPORT_SYMBOL vmlinux 0x1354490f __test_set_page_writeback +EXPORT_SYMBOL vmlinux 0x13672d77 skb_checksum_help +EXPORT_SYMBOL vmlinux 0x1367bcae macio_enable_devres +EXPORT_SYMBOL vmlinux 0x136fa2e5 nf_setsockopt +EXPORT_SYMBOL vmlinux 0x1385fb13 __serio_register_driver +EXPORT_SYMBOL vmlinux 0x13a64cb7 scsi_host_set_state +EXPORT_SYMBOL vmlinux 0x13c1d3cf macio_release_resources +EXPORT_SYMBOL vmlinux 0x13d0adf7 __kfifo_out +EXPORT_SYMBOL vmlinux 0x13f42152 system_entering_hibernation +EXPORT_SYMBOL vmlinux 0x13f53da6 CMO_PageSize +EXPORT_SYMBOL vmlinux 0x141284eb __inet_hash +EXPORT_SYMBOL vmlinux 0x141fe5fd pasemi_read_iob_reg +EXPORT_SYMBOL vmlinux 0x1467d9de scsi_cmd_get_serial +EXPORT_SYMBOL vmlinux 0x1486e306 dcbnl_cee_notify +EXPORT_SYMBOL vmlinux 0x149d8f42 crypto_sha512_finup +EXPORT_SYMBOL vmlinux 0x14a14817 pSeries_enable_reloc_on_exc +EXPORT_SYMBOL vmlinux 0x14a68768 get_user_pages_unlocked +EXPORT_SYMBOL vmlinux 0x14a78b23 nvdimm_bus_unlock +EXPORT_SYMBOL vmlinux 0x14aaebcd dmam_alloc_noncoherent +EXPORT_SYMBOL vmlinux 0x14b640fa dev_mc_sync +EXPORT_SYMBOL vmlinux 0x14b7968c mount_subtree +EXPORT_SYMBOL vmlinux 0x14ce8149 abx500_remove_ops +EXPORT_SYMBOL vmlinux 0x14d21d72 bio_get_nr_vecs +EXPORT_SYMBOL vmlinux 0x14d54567 dst_release +EXPORT_SYMBOL vmlinux 0x14d59837 netdev_all_upper_get_next_dev_rcu +EXPORT_SYMBOL vmlinux 0x14e12e78 sock_common_recvmsg +EXPORT_SYMBOL vmlinux 0x15070641 dev_get_by_name_rcu +EXPORT_SYMBOL vmlinux 0x151592c4 _lv1_invalidate_htab_entries +EXPORT_SYMBOL vmlinux 0x153bba6f alloc_pages_current +EXPORT_SYMBOL vmlinux 0x154c6338 dm_kcopyd_client_destroy +EXPORT_SYMBOL vmlinux 0x154df344 passthru_features_check +EXPORT_SYMBOL vmlinux 0x155020c8 pci_iounmap +EXPORT_SYMBOL vmlinux 0x1556defc rwsem_down_read_failed +EXPORT_SYMBOL vmlinux 0x15bafe29 unregister_md_cluster_operations +EXPORT_SYMBOL vmlinux 0x15d3fd60 prepare_to_wait_event +EXPORT_SYMBOL vmlinux 0x15e2be79 inet_shutdown +EXPORT_SYMBOL vmlinux 0x15f92c81 pcim_iomap +EXPORT_SYMBOL vmlinux 0x160bd45c rtas_token +EXPORT_SYMBOL vmlinux 0x160ef3c9 nla_put +EXPORT_SYMBOL vmlinux 0x161d3560 lock_sock_fast +EXPORT_SYMBOL vmlinux 0x16344874 inc_nlink +EXPORT_SYMBOL vmlinux 0x16496931 set_create_files_as +EXPORT_SYMBOL vmlinux 0x1653d883 skb_push +EXPORT_SYMBOL vmlinux 0x166e8ac2 truncate_pagecache +EXPORT_SYMBOL vmlinux 0x167c5967 print_hex_dump +EXPORT_SYMBOL vmlinux 0x167d9b90 param_get_int +EXPORT_SYMBOL vmlinux 0x16927fc4 security_old_inode_init_security +EXPORT_SYMBOL vmlinux 0x16b327fa dump_align +EXPORT_SYMBOL vmlinux 0x16c813b9 qdisc_create_dflt +EXPORT_SYMBOL vmlinux 0x16dc9c01 nosteal_pipe_buf_ops +EXPORT_SYMBOL vmlinux 0x16f4d292 prepare_kernel_cred +EXPORT_SYMBOL vmlinux 0x16f980b6 tcp_initialize_rcv_mss +EXPORT_SYMBOL vmlinux 0x1706fb59 phy_ethtool_get_eee +EXPORT_SYMBOL vmlinux 0x1743414f __debugger_fault_handler +EXPORT_SYMBOL vmlinux 0x1746d436 pm860x_page_reg_write +EXPORT_SYMBOL vmlinux 0x175afbed agp_generic_free_by_type +EXPORT_SYMBOL vmlinux 0x17648396 dev_base_lock +EXPORT_SYMBOL vmlinux 0x177fe4fe dcbnl_ieee_notify +EXPORT_SYMBOL vmlinux 0x178446a2 xfrm6_protocol_register +EXPORT_SYMBOL vmlinux 0x1785d452 xfrm_state_flush +EXPORT_SYMBOL vmlinux 0x17872477 kobject_put +EXPORT_SYMBOL vmlinux 0x178b9a5b inet_csk_reset_keepalive_timer +EXPORT_SYMBOL vmlinux 0x1793f685 radix_tree_tagged +EXPORT_SYMBOL vmlinux 0x1795ebeb ping_prot +EXPORT_SYMBOL vmlinux 0x1797461f tcp_sendpage +EXPORT_SYMBOL vmlinux 0x17b1125d gen_kill_estimator +EXPORT_SYMBOL vmlinux 0x17b1c041 pci_enable_msix_range +EXPORT_SYMBOL vmlinux 0x17b57c65 macio_dev_put +EXPORT_SYMBOL vmlinux 0x17cb8c79 _lv1_read_htab_entries +EXPORT_SYMBOL vmlinux 0x17d0766e unregister_binfmt +EXPORT_SYMBOL vmlinux 0x17deb5f0 ip_check_defrag +EXPORT_SYMBOL vmlinux 0x17e28473 fsl_upm_run_pattern +EXPORT_SYMBOL vmlinux 0x17f341a0 i8042_lock_chip +EXPORT_SYMBOL vmlinux 0x17f6bd70 nobh_truncate_page +EXPORT_SYMBOL vmlinux 0x18005372 kernel_accept +EXPORT_SYMBOL vmlinux 0x18104146 nlmsg_notify +EXPORT_SYMBOL vmlinux 0x181d15e1 twl6040_clear_bits +EXPORT_SYMBOL vmlinux 0x181f5aa5 sb_set_blocksize +EXPORT_SYMBOL vmlinux 0x1829d188 wait_woken +EXPORT_SYMBOL vmlinux 0x182f50af _lv1_open_device +EXPORT_SYMBOL vmlinux 0x183fa88b mempool_alloc_slab +EXPORT_SYMBOL vmlinux 0x184b82fb mmc_vddrange_to_ocrmask +EXPORT_SYMBOL vmlinux 0x1857aa39 proc_dointvec +EXPORT_SYMBOL vmlinux 0x185fc359 d_instantiate_unique +EXPORT_SYMBOL vmlinux 0x186046a0 dquot_commit +EXPORT_SYMBOL vmlinux 0x1868d658 pci_request_selected_regions_exclusive +EXPORT_SYMBOL vmlinux 0x187142c0 dcb_getapp +EXPORT_SYMBOL vmlinux 0x187a74d7 __blk_run_queue +EXPORT_SYMBOL vmlinux 0x188a3dfb timespec_trunc +EXPORT_SYMBOL vmlinux 0x189868d7 get_random_bytes_arch +EXPORT_SYMBOL vmlinux 0x18a6cdf1 filemap_map_pages +EXPORT_SYMBOL vmlinux 0x18b658ec do_SAK +EXPORT_SYMBOL vmlinux 0x18c5ac49 ilookup5_nowait +EXPORT_SYMBOL vmlinux 0x18c98205 _lv1_destruct_virtual_address_space +EXPORT_SYMBOL vmlinux 0x18e09d84 thermal_cdev_update +EXPORT_SYMBOL vmlinux 0x18fd6a4a macio_unregister_driver +EXPORT_SYMBOL vmlinux 0x1911b9d7 phy_mac_interrupt +EXPORT_SYMBOL vmlinux 0x19294fb6 from_kprojid +EXPORT_SYMBOL vmlinux 0x194ea590 tcf_destroy_chain +EXPORT_SYMBOL vmlinux 0x1955d4fe twl6040_power +EXPORT_SYMBOL vmlinux 0x196bbb00 xfrm_input_unregister_afinfo +EXPORT_SYMBOL vmlinux 0x196c86b7 param_ops_invbool +EXPORT_SYMBOL vmlinux 0x1973cee0 of_mdiobus_register +EXPORT_SYMBOL vmlinux 0x19741ff9 giveup_fpu +EXPORT_SYMBOL vmlinux 0x198b4816 max8925_bulk_write +EXPORT_SYMBOL vmlinux 0x199ec4fb arch_spin_unlock_wait +EXPORT_SYMBOL vmlinux 0x199ed0cd net_disable_timestamp +EXPORT_SYMBOL vmlinux 0x19ba1dc7 fence_enable_sw_signaling +EXPORT_SYMBOL vmlinux 0x19bd383b security_secmark_refcount_dec +EXPORT_SYMBOL vmlinux 0x19c968d1 pasemi_dma_start_chan +EXPORT_SYMBOL vmlinux 0x19ce5a46 inet_accept +EXPORT_SYMBOL vmlinux 0x19f7f5cb xfrm_lookup_route +EXPORT_SYMBOL vmlinux 0x1a00fa2a dev_add_offload +EXPORT_SYMBOL vmlinux 0x1a142b51 lease_modify +EXPORT_SYMBOL vmlinux 0x1a27d0a1 neigh_connected_output +EXPORT_SYMBOL vmlinux 0x1a449855 phy_init_eee +EXPORT_SYMBOL vmlinux 0x1a76defb cpufreq_power_cooling_register +EXPORT_SYMBOL vmlinux 0x1a91663d pasemi_dma_free_buf +EXPORT_SYMBOL vmlinux 0x1a97c58e abx500_mask_and_set_register_interruptible +EXPORT_SYMBOL vmlinux 0x1ab913b9 zerocopy_sg_from_iter +EXPORT_SYMBOL vmlinux 0x1ac5d3cb strcspn +EXPORT_SYMBOL vmlinux 0x1ae9b312 pci_iomap +EXPORT_SYMBOL vmlinux 0x1af3cd1c scsi_cmd_blk_ioctl +EXPORT_SYMBOL vmlinux 0x1af62a99 panic_notifier_list +EXPORT_SYMBOL vmlinux 0x1b015d25 bitmap_parselist +EXPORT_SYMBOL vmlinux 0x1b06a209 blk_set_default_limits +EXPORT_SYMBOL vmlinux 0x1b08c56c __napi_alloc_skb +EXPORT_SYMBOL vmlinux 0x1b094a6f ndo_dflt_fdb_dump +EXPORT_SYMBOL vmlinux 0x1b0e218b vfs_write +EXPORT_SYMBOL vmlinux 0x1b0f3d73 devm_devfreq_add_device +EXPORT_SYMBOL vmlinux 0x1b132009 rename_lock +EXPORT_SYMBOL vmlinux 0x1b1e1088 sg_nents +EXPORT_SYMBOL vmlinux 0x1b2e647a param_get_bool +EXPORT_SYMBOL vmlinux 0x1b625d33 enable_kernel_vsx +EXPORT_SYMBOL vmlinux 0x1b6314fd in_aton +EXPORT_SYMBOL vmlinux 0x1b82fefa md_unplug +EXPORT_SYMBOL vmlinux 0x1b878aa9 mipi_dsi_dcs_nop +EXPORT_SYMBOL vmlinux 0x1b8b95ad i8042_unlock_chip +EXPORT_SYMBOL vmlinux 0x1b9f973a unlock_two_nondirectories +EXPORT_SYMBOL vmlinux 0x1ba04649 __block_page_mkwrite +EXPORT_SYMBOL vmlinux 0x1ba93677 vmalloc_to_page +EXPORT_SYMBOL vmlinux 0x1bb31047 add_timer +EXPORT_SYMBOL vmlinux 0x1bb865e8 generic_pipe_buf_steal +EXPORT_SYMBOL vmlinux 0x1bc4ff03 tty_termios_hw_change +EXPORT_SYMBOL vmlinux 0x1bd2afc9 blk_integrity_register +EXPORT_SYMBOL vmlinux 0x1bfec830 __iounmap_at +EXPORT_SYMBOL vmlinux 0x1c168001 tcf_em_tree_validate +EXPORT_SYMBOL vmlinux 0x1c1cf0e2 mmc_gpiod_request_cd_irq +EXPORT_SYMBOL vmlinux 0x1c200a7d pasemi_dma_stop_chan +EXPORT_SYMBOL vmlinux 0x1c33375f iov_iter_get_pages +EXPORT_SYMBOL vmlinux 0x1c3e02e4 memcmp +EXPORT_SYMBOL vmlinux 0x1c4dab93 _lv1_connect_irq_plug +EXPORT_SYMBOL vmlinux 0x1c5b2c15 pmu_wait_complete +EXPORT_SYMBOL vmlinux 0x1c79b8e4 tcf_register_action +EXPORT_SYMBOL vmlinux 0x1c7d3f31 nd_namespace_blk_validate +EXPORT_SYMBOL vmlinux 0x1c80de9c ip_send_check +EXPORT_SYMBOL vmlinux 0x1c8755b3 sk_stream_wait_memory +EXPORT_SYMBOL vmlinux 0x1ca19c18 unregister_nls +EXPORT_SYMBOL vmlinux 0x1caa8132 pcie_set_mps +EXPORT_SYMBOL vmlinux 0x1cd16b13 cap_mmap_file +EXPORT_SYMBOL vmlinux 0x1cdcfdcd dentry_path_raw +EXPORT_SYMBOL vmlinux 0x1cdeb143 of_get_cpu_node +EXPORT_SYMBOL vmlinux 0x1d1056e5 crc32_be +EXPORT_SYMBOL vmlinux 0x1d13779e of_platform_device_create +EXPORT_SYMBOL vmlinux 0x1d223a44 blkdev_issue_flush +EXPORT_SYMBOL vmlinux 0x1d2462a2 dma_common_mmap +EXPORT_SYMBOL vmlinux 0x1d3e59bf nvdimm_bus_lock +EXPORT_SYMBOL vmlinux 0x1d4750bc _lv1_stop_lpm +EXPORT_SYMBOL vmlinux 0x1d58413e xfrm_input_resume +EXPORT_SYMBOL vmlinux 0x1d97c0b0 blk_rq_map_integrity_sg +EXPORT_SYMBOL vmlinux 0x1da685ca kmem_cache_size +EXPORT_SYMBOL vmlinux 0x1daee28a percpu_counter_destroy +EXPORT_SYMBOL vmlinux 0x1dbc4d0c proc_dointvec_jiffies +EXPORT_SYMBOL vmlinux 0x1dc36131 fb_destroy_modedb +EXPORT_SYMBOL vmlinux 0x1dc6e555 xfrm_policy_alloc +EXPORT_SYMBOL vmlinux 0x1dcc9569 nla_append +EXPORT_SYMBOL vmlinux 0x1dd571e6 fb_copy_cmap +EXPORT_SYMBOL vmlinux 0x1dee16e2 pcim_pin_device +EXPORT_SYMBOL vmlinux 0x1deebf22 agp_generic_alloc_pages +EXPORT_SYMBOL vmlinux 0x1df28ed6 neigh_resolve_output +EXPORT_SYMBOL vmlinux 0x1df4a776 notify_change +EXPORT_SYMBOL vmlinux 0x1e06b77c blk_mq_can_queue +EXPORT_SYMBOL vmlinux 0x1e18888d seq_file_path +EXPORT_SYMBOL vmlinux 0x1e26be3b get_anon_bdev +EXPORT_SYMBOL vmlinux 0x1e3bc8be get_unmapped_area +EXPORT_SYMBOL vmlinux 0x1e3f674d sock_no_socketpair +EXPORT_SYMBOL vmlinux 0x1e5ae600 get_user_pages +EXPORT_SYMBOL vmlinux 0x1e651c4c __elv_add_request +EXPORT_SYMBOL vmlinux 0x1e6d26a8 strstr +EXPORT_SYMBOL vmlinux 0x1e6d64d9 mmc_can_secure_erase_trim +EXPORT_SYMBOL vmlinux 0x1e833b41 pcie_port_service_unregister +EXPORT_SYMBOL vmlinux 0x1e9a851f security_dentry_init_security +EXPORT_SYMBOL vmlinux 0x1e9edfb7 seq_hlist_start_head_rcu +EXPORT_SYMBOL vmlinux 0x1ee3e5da proc_symlink +EXPORT_SYMBOL vmlinux 0x1ee784ce dcache_dir_open +EXPORT_SYMBOL vmlinux 0x1ef3c380 init_buffer +EXPORT_SYMBOL vmlinux 0x1f149bf9 pipe_unlock +EXPORT_SYMBOL vmlinux 0x1f2ec7d5 fbcon_set_bitops +EXPORT_SYMBOL vmlinux 0x1f5103cd d_find_alias +EXPORT_SYMBOL vmlinux 0x1f6ce67a sg_pcopy_to_buffer +EXPORT_SYMBOL vmlinux 0x1fbd16da ip_tos2prio +EXPORT_SYMBOL vmlinux 0x1fd07fff kdb_grepping_flag +EXPORT_SYMBOL vmlinux 0x1fe7b4ab pasemi_write_dma_reg +EXPORT_SYMBOL vmlinux 0x1fe912f1 netdev_alloc_frag +EXPORT_SYMBOL vmlinux 0x1fe9f800 unregister_cpu_notifier +EXPORT_SYMBOL vmlinux 0x1fedf0f4 __request_region +EXPORT_SYMBOL vmlinux 0x20000329 simple_strtoul +EXPORT_SYMBOL vmlinux 0x200b2041 in6addr_any +EXPORT_SYMBOL vmlinux 0x20146bbf xfrm_policy_unregister_afinfo +EXPORT_SYMBOL vmlinux 0x201494ee _lv1_net_set_interrupt_mask +EXPORT_SYMBOL vmlinux 0x2021220c devm_request_threaded_irq +EXPORT_SYMBOL vmlinux 0x2023d240 pci_fixup_cardbus +EXPORT_SYMBOL vmlinux 0x2032a66f ps3_dma_region_free +EXPORT_SYMBOL vmlinux 0x204c19f5 tcp_alloc_md5sig_pool +EXPORT_SYMBOL vmlinux 0x2072ee9b request_threaded_irq +EXPORT_SYMBOL vmlinux 0x2073b8f2 inet_listen +EXPORT_SYMBOL vmlinux 0x20a789ac irq_set_chip_data +EXPORT_SYMBOL vmlinux 0x20c55ae0 sscanf +EXPORT_SYMBOL vmlinux 0x20ca6558 abort_creds +EXPORT_SYMBOL vmlinux 0x20d10c82 keyring_search +EXPORT_SYMBOL vmlinux 0x20df5a3d vme_dma_pci_attribute +EXPORT_SYMBOL vmlinux 0x21183bea file_update_time +EXPORT_SYMBOL vmlinux 0x211f68f1 getnstimeofday64 +EXPORT_SYMBOL vmlinux 0x2123b3dd devfreq_remove_governor +EXPORT_SYMBOL vmlinux 0x213603bf pasemi_dma_free_ring +EXPORT_SYMBOL vmlinux 0x2159b135 sock_no_ioctl +EXPORT_SYMBOL vmlinux 0x2169ad10 pm8606_osc_disable +EXPORT_SYMBOL vmlinux 0x2176ca66 scsi_ioctl_reset +EXPORT_SYMBOL vmlinux 0x217d733e check_disk_size_change +EXPORT_SYMBOL vmlinux 0x21a74976 blk_get_queue +EXPORT_SYMBOL vmlinux 0x21de4554 bdev_stack_limits +EXPORT_SYMBOL vmlinux 0x21df74d9 bitmap_set +EXPORT_SYMBOL vmlinux 0x21f19335 fence_remove_callback +EXPORT_SYMBOL vmlinux 0x21fcb517 jbd2_journal_free_reserved +EXPORT_SYMBOL vmlinux 0x21fd22d2 generic_removexattr +EXPORT_SYMBOL vmlinux 0x22170025 dm_kobject_release +EXPORT_SYMBOL vmlinux 0x222e7ce2 sysfs_streq +EXPORT_SYMBOL vmlinux 0x2256cc87 __ethtool_get_settings +EXPORT_SYMBOL vmlinux 0x225e4ac6 inet6_bind +EXPORT_SYMBOL vmlinux 0x225ebee6 _lv1_destruct_lpm +EXPORT_SYMBOL vmlinux 0x226d04a8 phy_attach +EXPORT_SYMBOL vmlinux 0x2276db98 kstrtoint +EXPORT_SYMBOL vmlinux 0x2278e94b slhc_remember +EXPORT_SYMBOL vmlinux 0x22b325d5 kd_mksound +EXPORT_SYMBOL vmlinux 0x22ca51fe dev_err +EXPORT_SYMBOL vmlinux 0x22cb5daf free_task +EXPORT_SYMBOL vmlinux 0x22d3dcca inode_get_bytes +EXPORT_SYMBOL vmlinux 0x22e055dc inet_put_port +EXPORT_SYMBOL vmlinux 0x22f11b30 noop_fsync +EXPORT_SYMBOL vmlinux 0x231d4001 fb_edid_add_monspecs +EXPORT_SYMBOL vmlinux 0x23227f96 of_match_node +EXPORT_SYMBOL vmlinux 0x233917d1 mac_vmode_to_var +EXPORT_SYMBOL vmlinux 0x2349d9db pcibus_to_node +EXPORT_SYMBOL vmlinux 0x235e90f3 __wake_up_bit +EXPORT_SYMBOL vmlinux 0x237a8bb8 netdev_notice +EXPORT_SYMBOL vmlinux 0x23996945 devm_gpiod_put +EXPORT_SYMBOL vmlinux 0x23a574fd security_secmark_relabel_packet +EXPORT_SYMBOL vmlinux 0x23a5ce3e dev_mc_sync_multiple +EXPORT_SYMBOL vmlinux 0x23b8bc8e jbd2_journal_forget +EXPORT_SYMBOL vmlinux 0x23b9d6e2 mangle_path +EXPORT_SYMBOL vmlinux 0x23c9891c kstrtoint_from_user +EXPORT_SYMBOL vmlinux 0x23e9fa84 sys_fillrect +EXPORT_SYMBOL vmlinux 0x23ecb5b7 dentry_open +EXPORT_SYMBOL vmlinux 0x23f11cc2 scsi_target_quiesce +EXPORT_SYMBOL vmlinux 0x23f2243d mempool_free +EXPORT_SYMBOL vmlinux 0x23f3a95a dquot_quotactl_ops +EXPORT_SYMBOL vmlinux 0x23f4ea6a jbd2_journal_init_dev +EXPORT_SYMBOL vmlinux 0x23fd3028 vmalloc_node +EXPORT_SYMBOL vmlinux 0x24212d86 __frontswap_invalidate_page +EXPORT_SYMBOL vmlinux 0x24428be5 strncpy_from_user +EXPORT_SYMBOL vmlinux 0x245236c3 elevator_change +EXPORT_SYMBOL vmlinux 0x2459bbcc console_set_on_cmdline +EXPORT_SYMBOL vmlinux 0x2482e688 vsprintf +EXPORT_SYMBOL vmlinux 0x2484adc3 __kfifo_to_user_r +EXPORT_SYMBOL vmlinux 0x24855cba __percpu_counter_compare +EXPORT_SYMBOL vmlinux 0x24a40ea1 __serio_register_port +EXPORT_SYMBOL vmlinux 0x24ac6baf blk_queue_resize_tags +EXPORT_SYMBOL vmlinux 0x24b2753f netpoll_send_udp +EXPORT_SYMBOL vmlinux 0x24bf2fa2 swiotlb_unmap_sg +EXPORT_SYMBOL vmlinux 0x24bfa8bb set_cached_acl +EXPORT_SYMBOL vmlinux 0x24ca5dd8 mdiobus_write +EXPORT_SYMBOL vmlinux 0x24cfd438 _lv1_copy_lpm_trace_buffer +EXPORT_SYMBOL vmlinux 0x24d6b4a6 cur_cpu_spec +EXPORT_SYMBOL vmlinux 0x24dbb140 pcie_capability_read_word +EXPORT_SYMBOL vmlinux 0x24f00380 ida_init +EXPORT_SYMBOL vmlinux 0x24fdac79 wake_bit_function +EXPORT_SYMBOL vmlinux 0x25277497 rfkill_register +EXPORT_SYMBOL vmlinux 0x252e6aab module_put +EXPORT_SYMBOL vmlinux 0x25522a0e pci_request_region_exclusive +EXPORT_SYMBOL vmlinux 0x2555769c pci_setup_cardbus +EXPORT_SYMBOL vmlinux 0x255e96bb sock_no_shutdown +EXPORT_SYMBOL vmlinux 0x25702a50 nf_unregister_hook +EXPORT_SYMBOL vmlinux 0x2570a138 reservation_seqcount_string +EXPORT_SYMBOL vmlinux 0x25820c64 fs_overflowuid +EXPORT_SYMBOL vmlinux 0x25ad9738 register_shrinker +EXPORT_SYMBOL vmlinux 0x25b67f7f security_inode_listsecurity +EXPORT_SYMBOL vmlinux 0x25b6b8f7 _lv1_set_spe_transition_notifier +EXPORT_SYMBOL vmlinux 0x25c39b26 skb_free_datagram +EXPORT_SYMBOL vmlinux 0x25d980a3 neigh_event_ns +EXPORT_SYMBOL vmlinux 0x25e8ed29 sg_nents_for_len +EXPORT_SYMBOL vmlinux 0x25e9d4bd resource_list_free +EXPORT_SYMBOL vmlinux 0x25ebb213 cdrom_number_of_slots +EXPORT_SYMBOL vmlinux 0x25fa0b26 mb_cache_shrink +EXPORT_SYMBOL vmlinux 0x2604196e misc_register +EXPORT_SYMBOL vmlinux 0x260755ba of_iomap +EXPORT_SYMBOL vmlinux 0x2607cd85 mipi_dsi_dcs_set_tear_on +EXPORT_SYMBOL vmlinux 0x260bc394 flush_icache_user_range +EXPORT_SYMBOL vmlinux 0x260df5fe inode_add_rsv_space +EXPORT_SYMBOL vmlinux 0x263beb75 ecryptfs_get_versions +EXPORT_SYMBOL vmlinux 0x26477c07 __vmalloc +EXPORT_SYMBOL vmlinux 0x2650d835 sysctl_ip_early_demux +EXPORT_SYMBOL vmlinux 0x2665d53a key_create_or_update +EXPORT_SYMBOL vmlinux 0x267158d8 eth_commit_mac_addr_change +EXPORT_SYMBOL vmlinux 0x26b760c4 slhc_init +EXPORT_SYMBOL vmlinux 0x26e298e0 unregister_memory_notifier +EXPORT_SYMBOL vmlinux 0x26e76fb8 sysctl_udp_wmem_min +EXPORT_SYMBOL vmlinux 0x26e83a25 clear_inode +EXPORT_SYMBOL vmlinux 0x2704045a pnv_cxl_alloc_hwirq_ranges +EXPORT_SYMBOL vmlinux 0x271a6bc7 blk_mq_stop_hw_queues +EXPORT_SYMBOL vmlinux 0x2720f014 sock_no_mmap +EXPORT_SYMBOL vmlinux 0x274d08dc __kfifo_dma_out_prepare +EXPORT_SYMBOL vmlinux 0x275acd43 sock_no_accept +EXPORT_SYMBOL vmlinux 0x275ace87 nvdimm_namespace_common_probe +EXPORT_SYMBOL vmlinux 0x27646df3 start_thread +EXPORT_SYMBOL vmlinux 0x2771d7ff ida_get_new_above +EXPORT_SYMBOL vmlinux 0x277a5a94 gen_replace_estimator +EXPORT_SYMBOL vmlinux 0x27864d57 memparse +EXPORT_SYMBOL vmlinux 0x27866435 security_xfrm_state_alloc +EXPORT_SYMBOL vmlinux 0x278a6c8f skb_make_writable +EXPORT_SYMBOL vmlinux 0x2796288c single_open_size +EXPORT_SYMBOL vmlinux 0x279bae0f flow_get_u32_dst +EXPORT_SYMBOL vmlinux 0x279c9823 vfs_readf +EXPORT_SYMBOL vmlinux 0x27bbf221 disable_irq_nosync +EXPORT_SYMBOL vmlinux 0x27bf3453 fd_install +EXPORT_SYMBOL vmlinux 0x27c690a9 __inet6_lookup_established +EXPORT_SYMBOL vmlinux 0x27c77a9a mmc_retune_timer_stop +EXPORT_SYMBOL vmlinux 0x27e1a049 printk +EXPORT_SYMBOL vmlinux 0x27e5e8e4 reqsk_queue_hash_req +EXPORT_SYMBOL vmlinux 0x280f1a6f rtnl_create_link +EXPORT_SYMBOL vmlinux 0x281823c5 __kfifo_out_peek +EXPORT_SYMBOL vmlinux 0x28202d1b mpage_readpage +EXPORT_SYMBOL vmlinux 0x28235a1b write_dirty_buffer +EXPORT_SYMBOL vmlinux 0x28318305 snprintf +EXPORT_SYMBOL vmlinux 0x2848e0c9 kdb_current_task +EXPORT_SYMBOL vmlinux 0x285970d6 delete_from_page_cache +EXPORT_SYMBOL vmlinux 0x285d1186 kernel_listen +EXPORT_SYMBOL vmlinux 0x289db3ee idr_remove +EXPORT_SYMBOL vmlinux 0x28a1bd25 filemap_fdatawait +EXPORT_SYMBOL vmlinux 0x28a2b29f radix_tree_range_tag_if_tagged +EXPORT_SYMBOL vmlinux 0x28a2ed02 scsi_build_sense_buffer +EXPORT_SYMBOL vmlinux 0x28a7beba __percpu_counter_init +EXPORT_SYMBOL vmlinux 0x28abfe6e scsi_kmap_atomic_sg +EXPORT_SYMBOL vmlinux 0x28e3675d da903x_query_status +EXPORT_SYMBOL vmlinux 0x29026c16 blk_mq_stop_hw_queue +EXPORT_SYMBOL vmlinux 0x290702fe request_firmware_nowait +EXPORT_SYMBOL vmlinux 0x290dbb4f generic_writepages +EXPORT_SYMBOL vmlinux 0x29144b53 sock_kfree_s +EXPORT_SYMBOL vmlinux 0x2932dffa simple_release_fs +EXPORT_SYMBOL vmlinux 0x293c0b6b bdi_destroy +EXPORT_SYMBOL vmlinux 0x294216aa iov_iter_zero +EXPORT_SYMBOL vmlinux 0x2951ed01 scsi_is_target_device +EXPORT_SYMBOL vmlinux 0x29537c9e alloc_chrdev_region +EXPORT_SYMBOL vmlinux 0x2954beae vfs_fsync_range +EXPORT_SYMBOL vmlinux 0x297df93d dump_emit +EXPORT_SYMBOL vmlinux 0x2994cfb5 scsi_scan_host +EXPORT_SYMBOL vmlinux 0x299cd515 blkdev_get_by_path +EXPORT_SYMBOL vmlinux 0x299e4189 capable_wrt_inode_uidgid +EXPORT_SYMBOL vmlinux 0x29ab5f35 qdisc_list_del +EXPORT_SYMBOL vmlinux 0x29c8023a d_move +EXPORT_SYMBOL vmlinux 0x29cacdaf jbd2_journal_restart +EXPORT_SYMBOL vmlinux 0x29cb2041 bio_init +EXPORT_SYMBOL vmlinux 0x29cf9947 mmc_gpiod_request_cd +EXPORT_SYMBOL vmlinux 0x29d478eb napi_complete_done +EXPORT_SYMBOL vmlinux 0x2a1c7160 register_gifconf +EXPORT_SYMBOL vmlinux 0x2a303d4d check_signature +EXPORT_SYMBOL vmlinux 0x2a32200e submit_bio +EXPORT_SYMBOL vmlinux 0x2a37d074 dma_pool_free +EXPORT_SYMBOL vmlinux 0x2a3a4f23 inet_rtx_syn_ack +EXPORT_SYMBOL vmlinux 0x2a4fefda netif_stacked_transfer_operstate +EXPORT_SYMBOL vmlinux 0x2a52ed63 __d_drop +EXPORT_SYMBOL vmlinux 0x2a8f968c swiotlb_dma_mapping_error +EXPORT_SYMBOL vmlinux 0x2aa5a49e scsi_register_interface +EXPORT_SYMBOL vmlinux 0x2aad35de mb_cache_destroy +EXPORT_SYMBOL vmlinux 0x2aae4116 md_cluster_ops +EXPORT_SYMBOL vmlinux 0x2ab06319 seq_puts +EXPORT_SYMBOL vmlinux 0x2acf0feb vfs_fstat +EXPORT_SYMBOL vmlinux 0x2adb0902 sdev_disable_disk_events +EXPORT_SYMBOL vmlinux 0x2ae20dbd skb_mac_gso_segment +EXPORT_SYMBOL vmlinux 0x2ae79bb5 dev_driver_string +EXPORT_SYMBOL vmlinux 0x2aeed8a2 vme_dma_list_free +EXPORT_SYMBOL vmlinux 0x2b078563 serial8250_do_pm +EXPORT_SYMBOL vmlinux 0x2b0ba2b0 scsi_sense_desc_find +EXPORT_SYMBOL vmlinux 0x2b186205 mmc_free_host +EXPORT_SYMBOL vmlinux 0x2b2311f2 phy_disconnect +EXPORT_SYMBOL vmlinux 0x2b28f2af pci_bus_type +EXPORT_SYMBOL vmlinux 0x2b2ce78b kstrtos8 +EXPORT_SYMBOL vmlinux 0x2b3f5e1b ata_scsi_cmd_error_handler +EXPORT_SYMBOL vmlinux 0x2b4991ec xmon +EXPORT_SYMBOL vmlinux 0x2b8e11d4 udp_proc_register +EXPORT_SYMBOL vmlinux 0x2b91ae80 dev_queue_xmit_accel +EXPORT_SYMBOL vmlinux 0x2b97e053 generic_getxattr +EXPORT_SYMBOL vmlinux 0x2b9da7a4 genl_lock +EXPORT_SYMBOL vmlinux 0x2ba707a8 sysctl_tcp_low_latency +EXPORT_SYMBOL vmlinux 0x2bb7b022 pci_disable_msi +EXPORT_SYMBOL vmlinux 0x2bc7d901 input_get_keycode +EXPORT_SYMBOL vmlinux 0x2bca9484 mipi_dsi_dcs_set_page_address +EXPORT_SYMBOL vmlinux 0x2bce5115 i2c_smbus_write_byte_data +EXPORT_SYMBOL vmlinux 0x2befa863 napi_disable +EXPORT_SYMBOL vmlinux 0x2bfbcbff padata_alloc_possible +EXPORT_SYMBOL vmlinux 0x2bfda4c9 napi_gro_flush +EXPORT_SYMBOL vmlinux 0x2bfe6770 __sk_dst_check +EXPORT_SYMBOL vmlinux 0x2c1cd4a4 cpu_present_mask +EXPORT_SYMBOL vmlinux 0x2c256e1f input_scancode_to_scalar +EXPORT_SYMBOL vmlinux 0x2c25a525 set_wb_congested +EXPORT_SYMBOL vmlinux 0x2c262816 fsnotify_put_group +EXPORT_SYMBOL vmlinux 0x2c421e49 pagecache_isize_extended +EXPORT_SYMBOL vmlinux 0x2c4c7997 _lv1_construct_lpm +EXPORT_SYMBOL vmlinux 0x2c73918e __skb_get_hash +EXPORT_SYMBOL vmlinux 0x2c7b1fca down_timeout +EXPORT_SYMBOL vmlinux 0x2c900d91 cpufreq_put_global_kobject +EXPORT_SYMBOL vmlinux 0x2cb6ed5a tcp_make_synack +EXPORT_SYMBOL vmlinux 0x2cb7bf57 inet_frag_kill +EXPORT_SYMBOL vmlinux 0x2cd1f84c tcp_rcv_state_process +EXPORT_SYMBOL vmlinux 0x2cd7a51b block_read_full_page +EXPORT_SYMBOL vmlinux 0x2cf007c8 i2c_add_adapter +EXPORT_SYMBOL vmlinux 0x2cf73cb7 kstrtoll_from_user +EXPORT_SYMBOL vmlinux 0x2d140a58 genl_unlock +EXPORT_SYMBOL vmlinux 0x2d163612 tcp_child_process +EXPORT_SYMBOL vmlinux 0x2d30596c from_kqid_munged +EXPORT_SYMBOL vmlinux 0x2d3385d3 system_wq +EXPORT_SYMBOL vmlinux 0x2d3b781f i2c_smbus_write_word_data +EXPORT_SYMBOL vmlinux 0x2d4ca811 pnv_cxl_release_hwirq_ranges +EXPORT_SYMBOL vmlinux 0x2d51ad13 bio_endio +EXPORT_SYMBOL vmlinux 0x2d7d2767 _lv1_set_lpm_group_control +EXPORT_SYMBOL vmlinux 0x2d9283ba sock_no_poll +EXPORT_SYMBOL vmlinux 0x2d92890e tcp_v4_do_rcv +EXPORT_SYMBOL vmlinux 0x2dabb557 security_d_instantiate +EXPORT_SYMBOL vmlinux 0x2db1e0c6 dql_init +EXPORT_SYMBOL vmlinux 0x2dcfea6e register_console +EXPORT_SYMBOL vmlinux 0x2deda4a1 security_sk_classify_flow +EXPORT_SYMBOL vmlinux 0x2e0d2f7f queue_work_on +EXPORT_SYMBOL vmlinux 0x2e2b40d2 strncat +EXPORT_SYMBOL vmlinux 0x2e2ce9e0 sysctl_tcp_syncookies +EXPORT_SYMBOL vmlinux 0x2e68d2ed max8925_reg_write +EXPORT_SYMBOL vmlinux 0x2e792be4 vc_cons +EXPORT_SYMBOL vmlinux 0x2e8ccc7a skb_clone +EXPORT_SYMBOL vmlinux 0x2e8ffc15 scsi_block_requests +EXPORT_SYMBOL vmlinux 0x2e92c128 unlock_buffer +EXPORT_SYMBOL vmlinux 0x2e93495e _lv1_write_htab_entry +EXPORT_SYMBOL vmlinux 0x2ec97670 tcp_init_sock +EXPORT_SYMBOL vmlinux 0x2ee4337f smu_queue_cmd +EXPORT_SYMBOL vmlinux 0x2ee653cb __cleancache_get_page +EXPORT_SYMBOL vmlinux 0x2ef63ad6 scsi_dev_info_list_del_keyed +EXPORT_SYMBOL vmlinux 0x2ef7282e seq_put_decimal_ll +EXPORT_SYMBOL vmlinux 0x2f03fc4b security_secmark_refcount_inc +EXPORT_SYMBOL vmlinux 0x2f064b55 allocate_resource +EXPORT_SYMBOL vmlinux 0x2f1641f2 get_super_thawed +EXPORT_SYMBOL vmlinux 0x2f1d4c87 dquot_quota_off +EXPORT_SYMBOL vmlinux 0x2f287f0d copy_to_user +EXPORT_SYMBOL vmlinux 0x2f3ae8fe scsi_unregister +EXPORT_SYMBOL vmlinux 0x2f3b91b6 bio_integrity_alloc +EXPORT_SYMBOL vmlinux 0x2f463da1 __alloc_page_frag +EXPORT_SYMBOL vmlinux 0x2f6586b7 compat_nf_getsockopt +EXPORT_SYMBOL vmlinux 0x2f75f1ca down_write_trylock +EXPORT_SYMBOL vmlinux 0x2f776a12 mutex_lock_interruptible +EXPORT_SYMBOL vmlinux 0x2f85e70e ip_generic_getfrag +EXPORT_SYMBOL vmlinux 0x2fae96de rtas_data_buf_lock +EXPORT_SYMBOL vmlinux 0x2fb0cbb0 sk_dst_check +EXPORT_SYMBOL vmlinux 0x2fb6de5d add_device_randomness +EXPORT_SYMBOL vmlinux 0x2fbabea4 put_cmsg +EXPORT_SYMBOL vmlinux 0x2fc07e8d input_mt_drop_unused +EXPORT_SYMBOL vmlinux 0x2fc61f17 pci_disable_device +EXPORT_SYMBOL vmlinux 0x2fcc1ff2 set_anon_super +EXPORT_SYMBOL vmlinux 0x2fe252cc unregister_inet6addr_notifier +EXPORT_SYMBOL vmlinux 0x300f380e twl6040_get_sysclk +EXPORT_SYMBOL vmlinux 0x3019f9f9 blk_mq_run_hw_queues +EXPORT_SYMBOL vmlinux 0x30226ddf agp_device_command +EXPORT_SYMBOL vmlinux 0x302c7202 tcf_em_tree_dump +EXPORT_SYMBOL vmlinux 0x303041c6 udp_flow_hashrnd +EXPORT_SYMBOL vmlinux 0x303041fa pci_claim_resource +EXPORT_SYMBOL vmlinux 0x30326112 dev_set_mtu +EXPORT_SYMBOL vmlinux 0x30407eeb nd_btt_probe +EXPORT_SYMBOL vmlinux 0x307c2fd0 generic_check_addressable +EXPORT_SYMBOL vmlinux 0x307ca555 sock_kzfree_s +EXPORT_SYMBOL vmlinux 0x3085250e blk_stop_queue +EXPORT_SYMBOL vmlinux 0x308fbb66 dst_cow_metrics_generic +EXPORT_SYMBOL vmlinux 0x3096be16 names_cachep +EXPORT_SYMBOL vmlinux 0x30a80826 __kfifo_from_user +EXPORT_SYMBOL vmlinux 0x30b82519 dquot_set_dqblk +EXPORT_SYMBOL vmlinux 0x30b8b35c cpu_to_chip_id +EXPORT_SYMBOL vmlinux 0x30d5dd24 get_phy_device +EXPORT_SYMBOL vmlinux 0x30e9d14d generic_file_splice_read +EXPORT_SYMBOL vmlinux 0x3102d70b frontswap_curr_pages +EXPORT_SYMBOL vmlinux 0x311c631c blk_rq_init +EXPORT_SYMBOL vmlinux 0x312cfaf2 _lv1_disable_logical_spe +EXPORT_SYMBOL vmlinux 0x3131f7b8 nf_register_sockopt +EXPORT_SYMBOL vmlinux 0x3135c917 mmc_can_erase +EXPORT_SYMBOL vmlinux 0x31416ec4 ilookup +EXPORT_SYMBOL vmlinux 0x3145216f pci_dev_present +EXPORT_SYMBOL vmlinux 0x3147857d default_red +EXPORT_SYMBOL vmlinux 0x315d09e6 udp_ioctl +EXPORT_SYMBOL vmlinux 0x315fee56 seq_escape +EXPORT_SYMBOL vmlinux 0x3160e185 scsi_cmd_ioctl +EXPORT_SYMBOL vmlinux 0x3174bd79 bitmap_clear +EXPORT_SYMBOL vmlinux 0x31854461 dquot_quota_sync +EXPORT_SYMBOL vmlinux 0x319e0726 __tracepoint_kmalloc +EXPORT_SYMBOL vmlinux 0x31b7f300 _lv1_set_lpm_signal +EXPORT_SYMBOL vmlinux 0x31bee2e0 inode_owner_or_capable +EXPORT_SYMBOL vmlinux 0x31cd509a _lv1_net_control +EXPORT_SYMBOL vmlinux 0x31cd995b store_fp_state +EXPORT_SYMBOL vmlinux 0x31cd9c19 compat_ipv6_setsockopt +EXPORT_SYMBOL vmlinux 0x31db3198 out_of_line_wait_on_bit +EXPORT_SYMBOL vmlinux 0x31f588e4 ip6_find_1stfragopt +EXPORT_SYMBOL vmlinux 0x322bafc9 vfs_getattr +EXPORT_SYMBOL vmlinux 0x3231f13e of_parse_phandle_with_args +EXPORT_SYMBOL vmlinux 0x323b1838 napi_gro_receive +EXPORT_SYMBOL vmlinux 0x323beb78 mmc_can_trim +EXPORT_SYMBOL vmlinux 0x327b9c1b pmu_poll_adb +EXPORT_SYMBOL vmlinux 0x329b48f8 compat_ipv6_getsockopt +EXPORT_SYMBOL vmlinux 0x329dbddd filemap_write_and_wait_range +EXPORT_SYMBOL vmlinux 0x329e9808 sk_stream_wait_connect +EXPORT_SYMBOL vmlinux 0x32abc3b8 kern_path_mountpoint +EXPORT_SYMBOL vmlinux 0x32bbcf09 input_mt_report_slot_state +EXPORT_SYMBOL vmlinux 0x32bfc96b xfrm4_protocol_register +EXPORT_SYMBOL vmlinux 0x32c9333b bio_unmap_user +EXPORT_SYMBOL vmlinux 0x32ce2295 truncate_pagecache_range +EXPORT_SYMBOL vmlinux 0x32d51717 simple_getattr +EXPORT_SYMBOL vmlinux 0x3303a51f kthread_bind +EXPORT_SYMBOL vmlinux 0x331ef318 i2c_master_send +EXPORT_SYMBOL vmlinux 0x33349a63 pci_msi_vec_count +EXPORT_SYMBOL vmlinux 0x333cb37c __kfifo_dma_out_prepare_r +EXPORT_SYMBOL vmlinux 0x33427563 blk_integrity_merge_bio +EXPORT_SYMBOL vmlinux 0x33503e36 vio_disable_interrupts +EXPORT_SYMBOL vmlinux 0x3355e569 clocksource_unregister +EXPORT_SYMBOL vmlinux 0x33674cc4 scsi_eh_finish_cmd +EXPORT_SYMBOL vmlinux 0x3388b09f nf_getsockopt +EXPORT_SYMBOL vmlinux 0x33a5f099 mmc_interrupt_hpi +EXPORT_SYMBOL vmlinux 0x33a65fc0 dquot_release +EXPORT_SYMBOL vmlinux 0x33b75687 dma_direct_ops +EXPORT_SYMBOL vmlinux 0x33b84f74 copy_page +EXPORT_SYMBOL vmlinux 0x33bdafae pcibios_fixup_bus +EXPORT_SYMBOL vmlinux 0x33c352ca sock_common_getsockopt +EXPORT_SYMBOL vmlinux 0x33c7435c prandom_u32_state +EXPORT_SYMBOL vmlinux 0x33cbd557 tty_port_tty_set +EXPORT_SYMBOL vmlinux 0x33cd3ffe __init_rwsem +EXPORT_SYMBOL vmlinux 0x33f0768c cpufreq_quick_get_max +EXPORT_SYMBOL vmlinux 0x33f0e6c3 get_user_pages_locked +EXPORT_SYMBOL vmlinux 0x33fcf44a __kfifo_out_r +EXPORT_SYMBOL vmlinux 0x340e448c cros_ec_prepare_tx +EXPORT_SYMBOL vmlinux 0x34184afe current_kernel_time +EXPORT_SYMBOL vmlinux 0x34368133 elv_unregister_queue +EXPORT_SYMBOL vmlinux 0x344adbd5 init_cdrom_command +EXPORT_SYMBOL vmlinux 0x344cb545 alloc_skb_with_frags +EXPORT_SYMBOL vmlinux 0x344e28d9 eth_header_cache +EXPORT_SYMBOL vmlinux 0x3451475f km_report +EXPORT_SYMBOL vmlinux 0x3459689c __sock_tx_timestamp +EXPORT_SYMBOL vmlinux 0x3465caa3 cpu_maps_update_begin +EXPORT_SYMBOL vmlinux 0x347013de nla_validate +EXPORT_SYMBOL vmlinux 0x34988cda vio_get_attribute +EXPORT_SYMBOL vmlinux 0x349cba85 strchr +EXPORT_SYMBOL vmlinux 0x349ce844 kfree_skb_partial +EXPORT_SYMBOL vmlinux 0x34aba078 tcp_shutdown +EXPORT_SYMBOL vmlinux 0x34bb2b6d udp_prot +EXPORT_SYMBOL vmlinux 0x34f3484e security_tun_dev_attach_queue +EXPORT_SYMBOL vmlinux 0x34f52dbd scsi_dma_unmap +EXPORT_SYMBOL vmlinux 0x35069d60 dev_addr_flush +EXPORT_SYMBOL vmlinux 0x3508e442 dev_uc_unsync +EXPORT_SYMBOL vmlinux 0x3517383e register_reboot_notifier +EXPORT_SYMBOL vmlinux 0x35271de6 d_delete +EXPORT_SYMBOL vmlinux 0x352827c6 of_phy_find_device +EXPORT_SYMBOL vmlinux 0x352b4481 ppp_register_net_channel +EXPORT_SYMBOL vmlinux 0x352be2db bio_integrity_advance +EXPORT_SYMBOL vmlinux 0x3530679c of_translate_dma_address +EXPORT_SYMBOL vmlinux 0x3539f11b match_strlcpy +EXPORT_SYMBOL vmlinux 0x354414d6 bio_alloc_pages +EXPORT_SYMBOL vmlinux 0x354576c4 __hw_addr_unsync_dev +EXPORT_SYMBOL vmlinux 0x3548117a pci_stop_and_remove_bus_device +EXPORT_SYMBOL vmlinux 0x354da425 km_state_notify +EXPORT_SYMBOL vmlinux 0x356461c8 rtc_time64_to_tm +EXPORT_SYMBOL vmlinux 0x3564c050 bioset_integrity_free +EXPORT_SYMBOL vmlinux 0x3576d035 dev_get_flags +EXPORT_SYMBOL vmlinux 0x35910982 iov_iter_copy_from_user_atomic +EXPORT_SYMBOL vmlinux 0x359c94e4 netdev_state_change +EXPORT_SYMBOL vmlinux 0x35a88f28 zlib_inflateInit2 +EXPORT_SYMBOL vmlinux 0x35b546e9 sock_get_timestamp +EXPORT_SYMBOL vmlinux 0x35c2b0a9 of_mm_gpiochip_remove +EXPORT_SYMBOL vmlinux 0x35c32767 xor_altivec_2 +EXPORT_SYMBOL vmlinux 0x35d954d8 iw_handler_set_spy +EXPORT_SYMBOL vmlinux 0x3615a866 flow_cache_init +EXPORT_SYMBOL vmlinux 0x3618cb2d ida_destroy +EXPORT_SYMBOL vmlinux 0x362c602e set_groups +EXPORT_SYMBOL vmlinux 0x362eb621 md_register_thread +EXPORT_SYMBOL vmlinux 0x3649aa38 i2c_use_client +EXPORT_SYMBOL vmlinux 0x36585371 skb_put +EXPORT_SYMBOL vmlinux 0x365cc822 bdevname +EXPORT_SYMBOL vmlinux 0x366f6d27 idr_destroy +EXPORT_SYMBOL vmlinux 0x3696b43b blk_init_queue_node +EXPORT_SYMBOL vmlinux 0x369e1115 kstrtou8_from_user +EXPORT_SYMBOL vmlinux 0x36b0e732 try_wait_for_completion +EXPORT_SYMBOL vmlinux 0x36b33f84 crypto_sha256_finup +EXPORT_SYMBOL vmlinux 0x36b862fe scsicam_bios_param +EXPORT_SYMBOL vmlinux 0x36bd681b groups_alloc +EXPORT_SYMBOL vmlinux 0x36e70d69 blk_queue_chunk_sectors +EXPORT_SYMBOL vmlinux 0x371902e9 _lv1_get_lpm_interrupt_status +EXPORT_SYMBOL vmlinux 0x371d2130 check_legacy_ioport +EXPORT_SYMBOL vmlinux 0x372fd54d mach_powermac +EXPORT_SYMBOL vmlinux 0x37344510 proc_dointvec_ms_jiffies +EXPORT_SYMBOL vmlinux 0x37383edd rtas_get_power_level +EXPORT_SYMBOL vmlinux 0x373fd7b3 __dev_get_by_flags +EXPORT_SYMBOL vmlinux 0x37404240 crypto_sha512_update +EXPORT_SYMBOL vmlinux 0x3744cf36 vmalloc_to_pfn +EXPORT_SYMBOL vmlinux 0x37547fdc __vfs_write +EXPORT_SYMBOL vmlinux 0x375c2e80 cdev_alloc +EXPORT_SYMBOL vmlinux 0x377465f1 vme_master_mmap +EXPORT_SYMBOL vmlinux 0x37900dd5 irq_to_desc +EXPORT_SYMBOL vmlinux 0x379b3642 tcf_hash_check +EXPORT_SYMBOL vmlinux 0x37a3c987 param_get_string +EXPORT_SYMBOL vmlinux 0x37ac6158 netdev_master_upper_dev_link +EXPORT_SYMBOL vmlinux 0x37af3190 dm_table_run_md_queue_async +EXPORT_SYMBOL vmlinux 0x37befc70 jiffies_to_msecs +EXPORT_SYMBOL vmlinux 0x37e0153d flex_array_prealloc +EXPORT_SYMBOL vmlinux 0x37e0156c set_binfmt +EXPORT_SYMBOL vmlinux 0x37e9fcd3 generic_readlink +EXPORT_SYMBOL vmlinux 0x380167af skb_recv_datagram +EXPORT_SYMBOL vmlinux 0x380a0bf2 write_cache_pages +EXPORT_SYMBOL vmlinux 0x381a798a setup_max_cpus +EXPORT_SYMBOL vmlinux 0x382777ab _lv1_gpu_context_allocate +EXPORT_SYMBOL vmlinux 0x382bc5d5 netdev_features_change +EXPORT_SYMBOL vmlinux 0x383f8c57 security_mmap_file +EXPORT_SYMBOL vmlinux 0x384e7fb3 compat_sock_common_setsockopt +EXPORT_SYMBOL vmlinux 0x385199de agp_generic_create_gatt_table +EXPORT_SYMBOL vmlinux 0x38869d88 kstat +EXPORT_SYMBOL vmlinux 0x388aa066 tcp_v4_md5_lookup +EXPORT_SYMBOL vmlinux 0x389a1522 skb_copy_and_csum_bits +EXPORT_SYMBOL vmlinux 0x389b7c83 down_read_trylock +EXPORT_SYMBOL vmlinux 0x38a71b7e pci_free_resource_list +EXPORT_SYMBOL vmlinux 0x38a7d2b7 abx500_get_chip_id +EXPORT_SYMBOL vmlinux 0x38a96eee udplite_prot +EXPORT_SYMBOL vmlinux 0x38a9f7c5 in6addr_loopback +EXPORT_SYMBOL vmlinux 0x38af23d7 blk_limits_max_hw_sectors +EXPORT_SYMBOL vmlinux 0x38b825d1 idr_replace +EXPORT_SYMBOL vmlinux 0x38c26737 xfrm_register_km +EXPORT_SYMBOL vmlinux 0x38fb9933 tty_std_termios +EXPORT_SYMBOL vmlinux 0x390757bc md_finish_reshape +EXPORT_SYMBOL vmlinux 0x391db749 posix_acl_from_xattr +EXPORT_SYMBOL vmlinux 0x39293d92 mipi_dsi_generic_read +EXPORT_SYMBOL vmlinux 0x39304958 sock_wake_async +EXPORT_SYMBOL vmlinux 0x3939f8f0 rfkill_pause_polling +EXPORT_SYMBOL vmlinux 0x393d4de9 crc32_le +EXPORT_SYMBOL vmlinux 0x393fdfd6 seq_putc +EXPORT_SYMBOL vmlinux 0x39461d6a in_egroup_p +EXPORT_SYMBOL vmlinux 0x3955fcf6 __kfifo_in_r +EXPORT_SYMBOL vmlinux 0x39732482 trace_print_symbols_seq +EXPORT_SYMBOL vmlinux 0x39744039 mmc_of_parse +EXPORT_SYMBOL vmlinux 0x39861f81 elv_rq_merge_ok +EXPORT_SYMBOL vmlinux 0x39991865 icmp_global_allow +EXPORT_SYMBOL vmlinux 0x399ad043 __kfifo_dma_out_finish_r +EXPORT_SYMBOL vmlinux 0x39a47e1f eth_gro_receive +EXPORT_SYMBOL vmlinux 0x39b52d19 __bitmap_and +EXPORT_SYMBOL vmlinux 0x39bf6a59 gnet_stats_copy_rate_est +EXPORT_SYMBOL vmlinux 0x39c8e6b9 inet_frag_find +EXPORT_SYMBOL vmlinux 0x39cb73be tty_devnum +EXPORT_SYMBOL vmlinux 0x39cd1f61 simple_nosetlease +EXPORT_SYMBOL vmlinux 0x39cdf63c wait_for_completion_interruptible +EXPORT_SYMBOL vmlinux 0x39d418d5 mount_pseudo +EXPORT_SYMBOL vmlinux 0x39e6b051 register_cdrom +EXPORT_SYMBOL vmlinux 0x39ed5b2e pm860x_page_bulk_read +EXPORT_SYMBOL vmlinux 0x3a04782a netdev_boot_setup_check +EXPORT_SYMBOL vmlinux 0x3a050a28 mmc_wait_for_app_cmd +EXPORT_SYMBOL vmlinux 0x3a08252d insert_inode_locked4 +EXPORT_SYMBOL vmlinux 0x3a4384ed sg_alloc_table_from_pages +EXPORT_SYMBOL vmlinux 0x3a51bb5f uart_resume_port +EXPORT_SYMBOL vmlinux 0x3a5e9cf4 of_phy_connect +EXPORT_SYMBOL vmlinux 0x3a5fca72 fb_set_var +EXPORT_SYMBOL vmlinux 0x3a6186f1 ppp_unregister_channel +EXPORT_SYMBOL vmlinux 0x3a9b6fb9 blk_unregister_region +EXPORT_SYMBOL vmlinux 0x3ab0633b __lock_buffer +EXPORT_SYMBOL vmlinux 0x3ab64362 proc_remove +EXPORT_SYMBOL vmlinux 0x3adf454a pci_add_new_bus +EXPORT_SYMBOL vmlinux 0x3ae82c8b pci_set_mwi +EXPORT_SYMBOL vmlinux 0x3b03ecdc iget_failed +EXPORT_SYMBOL vmlinux 0x3b0af480 sk_capable +EXPORT_SYMBOL vmlinux 0x3b1485e4 blk_end_request_all +EXPORT_SYMBOL vmlinux 0x3b2f46e7 padata_do_parallel +EXPORT_SYMBOL vmlinux 0x3b44fdc5 md_unregister_thread +EXPORT_SYMBOL vmlinux 0x3b502926 jbd2_journal_set_features +EXPORT_SYMBOL vmlinux 0x3b5cf1d5 free_buffer_head +EXPORT_SYMBOL vmlinux 0x3b615a21 wait_for_completion_killable +EXPORT_SYMBOL vmlinux 0x3b644591 __bitmap_shift_left +EXPORT_SYMBOL vmlinux 0x3b80eecc blk_queue_find_tag +EXPORT_SYMBOL vmlinux 0x3bc64db1 jbd2_journal_begin_ordered_truncate +EXPORT_SYMBOL vmlinux 0x3bf60812 d_invalidate +EXPORT_SYMBOL vmlinux 0x3c063d73 twl6040_reg_read +EXPORT_SYMBOL vmlinux 0x3c0bf2bc kernel_read +EXPORT_SYMBOL vmlinux 0x3c139848 nf_log_register +EXPORT_SYMBOL vmlinux 0x3c298e1d simple_pin_fs +EXPORT_SYMBOL vmlinux 0x3c2aaa6c __alloc_skb +EXPORT_SYMBOL vmlinux 0x3c31030b blk_get_backing_dev_info +EXPORT_SYMBOL vmlinux 0x3c3fce39 __local_bh_enable_ip +EXPORT_SYMBOL vmlinux 0x3c483012 radix_tree_delete +EXPORT_SYMBOL vmlinux 0x3c58a334 scmd_printk +EXPORT_SYMBOL vmlinux 0x3c6864d9 kmalloc_caches +EXPORT_SYMBOL vmlinux 0x3c6d0fe3 elevator_exit +EXPORT_SYMBOL vmlinux 0x3c76079e generic_write_end +EXPORT_SYMBOL vmlinux 0x3c790d72 pagevec_lookup +EXPORT_SYMBOL vmlinux 0x3c80c06c kstrtoull +EXPORT_SYMBOL vmlinux 0x3c9e041a mipi_dsi_detach +EXPORT_SYMBOL vmlinux 0x3cbe6041 create_empty_buffers +EXPORT_SYMBOL vmlinux 0x3cc3ae49 mapping_tagged +EXPORT_SYMBOL vmlinux 0x3cc4b0dc lg_lock_init +EXPORT_SYMBOL vmlinux 0x3ce4ca6f disable_irq +EXPORT_SYMBOL vmlinux 0x3cf86d3d bio_phys_segments +EXPORT_SYMBOL vmlinux 0x3cffa8b6 blk_init_allocated_queue +EXPORT_SYMBOL vmlinux 0x3d0a4d4b may_umount +EXPORT_SYMBOL vmlinux 0x3d1adda8 cpufreq_get_policy +EXPORT_SYMBOL vmlinux 0x3d1d9a0a proto_unregister +EXPORT_SYMBOL vmlinux 0x3d2fb6d4 tty_hung_up_p +EXPORT_SYMBOL vmlinux 0x3d45b5f2 of_find_i2c_device_by_node +EXPORT_SYMBOL vmlinux 0x3d5430ff twl6040_reg_write +EXPORT_SYMBOL vmlinux 0x3d696dda inet6_del_protocol +EXPORT_SYMBOL vmlinux 0x3da941dc sock_queue_rcv_skb +EXPORT_SYMBOL vmlinux 0x3db38cdf may_umount_tree +EXPORT_SYMBOL vmlinux 0x3dbef38e qdisc_tree_decrease_qlen +EXPORT_SYMBOL vmlinux 0x3dbf36c9 sg_copy_buffer +EXPORT_SYMBOL vmlinux 0x3dc02a4e flex_array_free_parts +EXPORT_SYMBOL vmlinux 0x3dcb88a0 irq_set_handler_data +EXPORT_SYMBOL vmlinux 0x3dd43b81 max8998_write_reg +EXPORT_SYMBOL vmlinux 0x3dd43c06 pci_scan_slot +EXPORT_SYMBOL vmlinux 0x3de81f7e __destroy_inode +EXPORT_SYMBOL vmlinux 0x3dec5110 load_nls_default +EXPORT_SYMBOL vmlinux 0x3dfc897c seq_hlist_start_head +EXPORT_SYMBOL vmlinux 0x3e286dca _lv1_get_rtc +EXPORT_SYMBOL vmlinux 0x3e2bcdb9 get_fs_type +EXPORT_SYMBOL vmlinux 0x3e2d5d0b agp_backend_acquire +EXPORT_SYMBOL vmlinux 0x3e38ad90 iov_iter_single_seg_count +EXPORT_SYMBOL vmlinux 0x3e403ccc d_path +EXPORT_SYMBOL vmlinux 0x3e600940 sk_common_release +EXPORT_SYMBOL vmlinux 0x3e752d0d input_mt_init_slots +EXPORT_SYMBOL vmlinux 0x3e7ef19c dump_page +EXPORT_SYMBOL vmlinux 0x3e882943 pcibios_align_resource +EXPORT_SYMBOL vmlinux 0x3e8b8d7d iget5_locked +EXPORT_SYMBOL vmlinux 0x3e8f0c21 bio_put +EXPORT_SYMBOL vmlinux 0x3e9110fa __hw_addr_unsync +EXPORT_SYMBOL vmlinux 0x3e95083c vme_slave_get +EXPORT_SYMBOL vmlinux 0x3ea28893 srp_rport_get +EXPORT_SYMBOL vmlinux 0x3ea89feb dquot_writeback_dquots +EXPORT_SYMBOL vmlinux 0x3eaa2016 dev_getbyhwaddr_rcu +EXPORT_SYMBOL vmlinux 0x3eabc76f mmc_can_sanitize +EXPORT_SYMBOL vmlinux 0x3eac7a14 scsi_device_set_state +EXPORT_SYMBOL vmlinux 0x3ed78ced blk_mq_kick_requeue_list +EXPORT_SYMBOL vmlinux 0x3ee116b4 blk_complete_request +EXPORT_SYMBOL vmlinux 0x3ee7a2c4 skb_vlan_push +EXPORT_SYMBOL vmlinux 0x3eff0d74 jbd2_trans_will_send_data_barrier +EXPORT_SYMBOL vmlinux 0x3f0546a8 ioread32_rep +EXPORT_SYMBOL vmlinux 0x3f06a656 _lv1_construct_event_receive_port +EXPORT_SYMBOL vmlinux 0x3f14e50c block_truncate_page +EXPORT_SYMBOL vmlinux 0x3f1a7870 scsi_dma_map +EXPORT_SYMBOL vmlinux 0x3f2ba69c d_add_ci +EXPORT_SYMBOL vmlinux 0x3f3b8db7 sync_dirty_buffer +EXPORT_SYMBOL vmlinux 0x3f406a3b enable_kernel_altivec +EXPORT_SYMBOL vmlinux 0x3f4547a7 put_unused_fd +EXPORT_SYMBOL vmlinux 0x3f4def56 mb_cache_entry_find_next +EXPORT_SYMBOL vmlinux 0x3f5a331f set_nlink +EXPORT_SYMBOL vmlinux 0x3f5ae1da fsync_bdev +EXPORT_SYMBOL vmlinux 0x3f6e4a16 scsi_host_get +EXPORT_SYMBOL vmlinux 0x3f87d19e get_empty_filp +EXPORT_SYMBOL vmlinux 0x3f98f261 generic_key_instantiate +EXPORT_SYMBOL vmlinux 0x3fa02b7e ps2_end_command +EXPORT_SYMBOL vmlinux 0x3fbfd6ed _lv1_gpu_open +EXPORT_SYMBOL vmlinux 0x3fe0d1c0 slhc_free +EXPORT_SYMBOL vmlinux 0x3fe138da mmc_gpio_set_cd_isr +EXPORT_SYMBOL vmlinux 0x3fe2ccbe memweight +EXPORT_SYMBOL vmlinux 0x3fec048f sg_next +EXPORT_SYMBOL vmlinux 0x3ff56285 mmc_align_data_size +EXPORT_SYMBOL vmlinux 0x3ff8e495 lg_local_unlock_cpu +EXPORT_SYMBOL vmlinux 0x4000db86 inet_get_local_port_range +EXPORT_SYMBOL vmlinux 0x400d9deb bio_integrity_prep +EXPORT_SYMBOL vmlinux 0x402b8281 __request_module +EXPORT_SYMBOL vmlinux 0x405b6e05 srp_parse_tmo +EXPORT_SYMBOL vmlinux 0x405c1144 get_seconds +EXPORT_SYMBOL vmlinux 0x40973662 sysctl_udp_mem +EXPORT_SYMBOL vmlinux 0x409dda65 icmpv6_send +EXPORT_SYMBOL vmlinux 0x40a1b996 generic_cont_expand_simple +EXPORT_SYMBOL vmlinux 0x40a27c37 scsi_dev_info_remove_list +EXPORT_SYMBOL vmlinux 0x40a9b349 vzalloc +EXPORT_SYMBOL vmlinux 0x40aec42c pci_match_id +EXPORT_SYMBOL vmlinux 0x40c01859 gen_pool_best_fit +EXPORT_SYMBOL vmlinux 0x40c7247c si_meminfo +EXPORT_SYMBOL vmlinux 0x40d04664 console_trylock +EXPORT_SYMBOL vmlinux 0x40d0bff2 fb_set_suspend +EXPORT_SYMBOL vmlinux 0x40d59096 unregister_restart_handler +EXPORT_SYMBOL vmlinux 0x4101b122 nonseekable_open +EXPORT_SYMBOL vmlinux 0x412560e3 __qdisc_calculate_pkt_len +EXPORT_SYMBOL vmlinux 0x41361807 _lv1_get_logical_ppe_id +EXPORT_SYMBOL vmlinux 0x413d39df udp_lib_getsockopt +EXPORT_SYMBOL vmlinux 0x41482d8b strndup_user +EXPORT_SYMBOL vmlinux 0x4159c38f ioremap_wc +EXPORT_SYMBOL vmlinux 0x416cc0aa vm_map_ram +EXPORT_SYMBOL vmlinux 0x41710a72 textsearch_register +EXPORT_SYMBOL vmlinux 0x41763f88 phy_device_register +EXPORT_SYMBOL vmlinux 0x4188d439 neigh_rand_reach_time +EXPORT_SYMBOL vmlinux 0x4193867a uart_write_wakeup +EXPORT_SYMBOL vmlinux 0x419915f4 __ww_mutex_lock_interruptible +EXPORT_SYMBOL vmlinux 0x41afccee arp_tbl +EXPORT_SYMBOL vmlinux 0x41b692e2 dcb_ieee_setapp +EXPORT_SYMBOL vmlinux 0x41dbf4de _lv1_start_lpm +EXPORT_SYMBOL vmlinux 0x42160169 flush_workqueue +EXPORT_SYMBOL vmlinux 0x422b0ab5 blk_queue_make_request +EXPORT_SYMBOL vmlinux 0x422eac02 sched_autogroup_create_attach +EXPORT_SYMBOL vmlinux 0x4248ae3c single_task_running +EXPORT_SYMBOL vmlinux 0x424d3620 zlib_inflateIncomp +EXPORT_SYMBOL vmlinux 0x42595e58 vgacon_text_force +EXPORT_SYMBOL vmlinux 0x42622fad simple_lookup +EXPORT_SYMBOL vmlinux 0x426d60f0 pcim_iomap_regions +EXPORT_SYMBOL vmlinux 0x4296f5e9 udp_add_offload +EXPORT_SYMBOL vmlinux 0x42a1b208 gen_pool_first_fit +EXPORT_SYMBOL vmlinux 0x42b13724 do_splice_to +EXPORT_SYMBOL vmlinux 0x4302d0eb free_pages +EXPORT_SYMBOL vmlinux 0x43093719 register_filesystem +EXPORT_SYMBOL vmlinux 0x4311540a __scsi_add_device +EXPORT_SYMBOL vmlinux 0x431b5cc6 xfrm_input_register_afinfo +EXPORT_SYMBOL vmlinux 0x43226caa fb_prepare_logo +EXPORT_SYMBOL vmlinux 0x4333b720 give_up_console +EXPORT_SYMBOL vmlinux 0x4351577a fb_parse_edid +EXPORT_SYMBOL vmlinux 0x436c2179 iowrite32 +EXPORT_SYMBOL vmlinux 0x43701273 __mod_zone_page_state +EXPORT_SYMBOL vmlinux 0x4377484e fib_default_rule_pref +EXPORT_SYMBOL vmlinux 0x43780933 input_alloc_absinfo +EXPORT_SYMBOL vmlinux 0x43785a80 sync_mapping_buffers +EXPORT_SYMBOL vmlinux 0x437f460c __dquot_transfer +EXPORT_SYMBOL vmlinux 0x4383f8c9 param_set_invbool +EXPORT_SYMBOL vmlinux 0x4385a8ab pci_wake_from_d3 +EXPORT_SYMBOL vmlinux 0x438610bd security_tun_dev_alloc_security +EXPORT_SYMBOL vmlinux 0x438907f7 set_disk_ro +EXPORT_SYMBOL vmlinux 0x438b28e0 dquot_quota_on_mount +EXPORT_SYMBOL vmlinux 0x439ac01a key_unlink +EXPORT_SYMBOL vmlinux 0x43a01f90 complete_all +EXPORT_SYMBOL vmlinux 0x43a998c1 blk_queue_dma_pad +EXPORT_SYMBOL vmlinux 0x43ab90be skb_split +EXPORT_SYMBOL vmlinux 0x43ac7129 generic_file_fsync +EXPORT_SYMBOL vmlinux 0x43b6a624 blk_put_queue +EXPORT_SYMBOL vmlinux 0x43d27ca0 vme_irq_request +EXPORT_SYMBOL vmlinux 0x43f23311 dm_table_get_md +EXPORT_SYMBOL vmlinux 0x44039843 touch_buffer +EXPORT_SYMBOL vmlinux 0x4411c503 prandom_seed +EXPORT_SYMBOL vmlinux 0x442349b8 poll_schedule_timeout +EXPORT_SYMBOL vmlinux 0x44372223 fb_find_mode +EXPORT_SYMBOL vmlinux 0x445c8c37 simple_statfs +EXPORT_SYMBOL vmlinux 0x448eac3e kmemdup +EXPORT_SYMBOL vmlinux 0x44b1d426 __dynamic_pr_debug +EXPORT_SYMBOL vmlinux 0x44e9a829 match_token +EXPORT_SYMBOL vmlinux 0x44eb192e wait_for_completion +EXPORT_SYMBOL vmlinux 0x44ee07c3 set_page_dirty_lock +EXPORT_SYMBOL vmlinux 0x44ff8967 simple_symlink_inode_operations +EXPORT_SYMBOL vmlinux 0x45017ea4 i2c_register_driver +EXPORT_SYMBOL vmlinux 0x45260b63 __dax_fault +EXPORT_SYMBOL vmlinux 0x453c8403 pci_msi_enabled +EXPORT_SYMBOL vmlinux 0x454adc5f pci_enable_device_mem +EXPORT_SYMBOL vmlinux 0x4564459b _lv1_set_virtual_uart_param +EXPORT_SYMBOL vmlinux 0x456a6a86 tty_driver_flush_buffer +EXPORT_SYMBOL vmlinux 0x4578f528 __kfifo_to_user +EXPORT_SYMBOL vmlinux 0x457bfbfa of_root +EXPORT_SYMBOL vmlinux 0x45951c3a blk_requeue_request +EXPORT_SYMBOL vmlinux 0x459c4f06 init_net +EXPORT_SYMBOL vmlinux 0x45a55ec8 __iounmap +EXPORT_SYMBOL vmlinux 0x45a6be13 cpufreq_sysfs_remove_file +EXPORT_SYMBOL vmlinux 0x45a765cf pci_add_resource +EXPORT_SYMBOL vmlinux 0x45aefc43 dentry_needs_remove_privs +EXPORT_SYMBOL vmlinux 0x45b05454 kfree_skb_list +EXPORT_SYMBOL vmlinux 0x45b2c00a d_walk +EXPORT_SYMBOL vmlinux 0x45cfe80b pasemi_dma_free_flag +EXPORT_SYMBOL vmlinux 0x45e67546 serio_close +EXPORT_SYMBOL vmlinux 0x45ec311f blk_mq_requeue_request +EXPORT_SYMBOL vmlinux 0x45f4c8cf seq_write +EXPORT_SYMBOL vmlinux 0x460033d8 sk_free +EXPORT_SYMBOL vmlinux 0x4612c59d down_trylock +EXPORT_SYMBOL vmlinux 0x461ac773 kstrtol_from_user +EXPORT_SYMBOL vmlinux 0x461ebfa0 __copy_tofrom_user +EXPORT_SYMBOL vmlinux 0x4622eb32 sdev_enable_disk_events +EXPORT_SYMBOL vmlinux 0x462cf524 __tty_alloc_driver +EXPORT_SYMBOL vmlinux 0x4633ea05 reservation_object_add_shared_fence +EXPORT_SYMBOL vmlinux 0x465cab34 secure_ipv6_port_ephemeral +EXPORT_SYMBOL vmlinux 0x466035ca soft_cursor +EXPORT_SYMBOL vmlinux 0x46649cd1 vme_lm_set +EXPORT_SYMBOL vmlinux 0x466c14a7 __delay +EXPORT_SYMBOL vmlinux 0x467c08fc xfrm_init_state +EXPORT_SYMBOL vmlinux 0x467df16d netdev_rss_key_fill +EXPORT_SYMBOL vmlinux 0x46892235 __sk_mem_reclaim +EXPORT_SYMBOL vmlinux 0x46a35f18 tty_unregister_driver +EXPORT_SYMBOL vmlinux 0x46a4ef2c netdev_bonding_info_change +EXPORT_SYMBOL vmlinux 0x46ad58d9 mmc_wait_for_cmd +EXPORT_SYMBOL vmlinux 0x46afd532 on_each_cpu_mask +EXPORT_SYMBOL vmlinux 0x46bcc9c9 request_key +EXPORT_SYMBOL vmlinux 0x46c47fb6 __node_distance +EXPORT_SYMBOL vmlinux 0x46ce8683 bio_integrity_add_page +EXPORT_SYMBOL vmlinux 0x46d12956 wait_for_completion_interruptible_timeout +EXPORT_SYMBOL vmlinux 0x46feb099 dm_read_arg +EXPORT_SYMBOL vmlinux 0x471329df ip_mc_dec_group +EXPORT_SYMBOL vmlinux 0x472c8339 __netlink_dump_start +EXPORT_SYMBOL vmlinux 0x47368660 input_release_device +EXPORT_SYMBOL vmlinux 0x47416e14 cpu_rmap_add +EXPORT_SYMBOL vmlinux 0x47608718 fence_init +EXPORT_SYMBOL vmlinux 0x476fc393 inet_ioctl +EXPORT_SYMBOL vmlinux 0x4789ac32 dm_kcopyd_zero +EXPORT_SYMBOL vmlinux 0x47939e0d __tasklet_hi_schedule +EXPORT_SYMBOL vmlinux 0x479c3c86 find_next_zero_bit +EXPORT_SYMBOL vmlinux 0x47b38ef2 page_cache_next_hole +EXPORT_SYMBOL vmlinux 0x47e315bf __bforget +EXPORT_SYMBOL vmlinux 0x47eb6b6a address_space_init_once +EXPORT_SYMBOL vmlinux 0x47ec87ff swiotlb_sync_sg_for_cpu +EXPORT_SYMBOL vmlinux 0x47fd3c70 blk_mq_init_queue +EXPORT_SYMBOL vmlinux 0x47ff2591 jbd2_journal_release_jbd_inode +EXPORT_SYMBOL vmlinux 0x4805edb9 inet_offloads +EXPORT_SYMBOL vmlinux 0x4815f22b _lv1_gpu_attribute +EXPORT_SYMBOL vmlinux 0x481b6b87 inet_select_addr +EXPORT_SYMBOL vmlinux 0x481cb6e1 block_page_mkwrite +EXPORT_SYMBOL vmlinux 0x481db4a3 inet6_ioctl +EXPORT_SYMBOL vmlinux 0x4828a659 sock_create_kern +EXPORT_SYMBOL vmlinux 0x4829a47e memcpy +EXPORT_SYMBOL vmlinux 0x483685dd param_ops_bint +EXPORT_SYMBOL vmlinux 0x48372ea4 mmc_remove_host +EXPORT_SYMBOL vmlinux 0x48404b9a remove_wait_queue +EXPORT_SYMBOL vmlinux 0x4841bdee strnchr +EXPORT_SYMBOL vmlinux 0x4843a1b9 _lv1_delete_repository_node +EXPORT_SYMBOL vmlinux 0x4859b8bb rtc_year_days +EXPORT_SYMBOL vmlinux 0x4872abf3 vio_unregister_driver +EXPORT_SYMBOL vmlinux 0x4875859e kernel_recvmsg +EXPORT_SYMBOL vmlinux 0x4881efab pmac_get_partition +EXPORT_SYMBOL vmlinux 0x48839395 tty_port_close_start +EXPORT_SYMBOL vmlinux 0x48a10f13 compat_tcp_getsockopt +EXPORT_SYMBOL vmlinux 0x48a9bdd3 netdev_class_create_file_ns +EXPORT_SYMBOL vmlinux 0x48b92d79 mipi_dsi_dcs_get_power_mode +EXPORT_SYMBOL vmlinux 0x48b99a13 vme_lm_free +EXPORT_SYMBOL vmlinux 0x48db1ffe inet_sendpage +EXPORT_SYMBOL vmlinux 0x48e9943e phy_drivers_unregister +EXPORT_SYMBOL vmlinux 0x48ec2652 srp_rport_put +EXPORT_SYMBOL vmlinux 0x49045426 icmp_err_convert +EXPORT_SYMBOL vmlinux 0x4921f7a8 put_disk +EXPORT_SYMBOL vmlinux 0x4932bd7d blk_mq_unique_tag +EXPORT_SYMBOL vmlinux 0x49432aa2 fifo_set_limit +EXPORT_SYMBOL vmlinux 0x4944fbe0 cfb_fillrect +EXPORT_SYMBOL vmlinux 0x4949b270 kernel_param_lock +EXPORT_SYMBOL vmlinux 0x4954692f pci_iomap_range +EXPORT_SYMBOL vmlinux 0x4956150a freeze_super +EXPORT_SYMBOL vmlinux 0x495c96f8 posix_acl_init +EXPORT_SYMBOL vmlinux 0x495ec6eb pasemi_dma_alloc_buf +EXPORT_SYMBOL vmlinux 0x49603fb8 security_sb_copy_data +EXPORT_SYMBOL vmlinux 0x4961d670 __breadahead +EXPORT_SYMBOL vmlinux 0x49818d3f dquot_claim_space_nodirty +EXPORT_SYMBOL vmlinux 0x4982413e remap_pfn_range +EXPORT_SYMBOL vmlinux 0x4992a94d phy_ethtool_set_eee +EXPORT_SYMBOL vmlinux 0x49b07aec tcp_select_initial_window +EXPORT_SYMBOL vmlinux 0x49c13a55 bio_integrity_enabled +EXPORT_SYMBOL vmlinux 0x49d80bfa d_find_any_alias +EXPORT_SYMBOL vmlinux 0x49e1d108 dentry_unhash +EXPORT_SYMBOL vmlinux 0x49f3c18a blk_queue_max_segments +EXPORT_SYMBOL vmlinux 0x49f71442 dev_close_many +EXPORT_SYMBOL vmlinux 0x4a0b4b4f end_buffer_async_write +EXPORT_SYMBOL vmlinux 0x4a3ade6d tc_classify +EXPORT_SYMBOL vmlinux 0x4a649fc9 tty_wait_until_sent +EXPORT_SYMBOL vmlinux 0x4a77ec61 __check_sticky +EXPORT_SYMBOL vmlinux 0x4a833eeb devm_request_any_context_irq +EXPORT_SYMBOL vmlinux 0x4a8f0d41 sock_init_data +EXPORT_SYMBOL vmlinux 0x4a93590d sk_stream_write_space +EXPORT_SYMBOL vmlinux 0x4aa53464 sk_stop_timer +EXPORT_SYMBOL vmlinux 0x4aa75e4c pci_request_regions_exclusive +EXPORT_SYMBOL vmlinux 0x4aa9fba6 dev_uc_sync_multiple +EXPORT_SYMBOL vmlinux 0x4aab6a92 blk_queue_max_write_same_sectors +EXPORT_SYMBOL vmlinux 0x4abbe3c2 vm_brk +EXPORT_SYMBOL vmlinux 0x4ac366d1 max8925_set_bits +EXPORT_SYMBOL vmlinux 0x4ac64da4 _lv1_select_virtual_address_space +EXPORT_SYMBOL vmlinux 0x4acd93d3 release_resource +EXPORT_SYMBOL vmlinux 0x4ad2a57a opal_event_request +EXPORT_SYMBOL vmlinux 0x4ae6453a pci_bus_size_bridges +EXPORT_SYMBOL vmlinux 0x4aeee04f mmc_can_discard +EXPORT_SYMBOL vmlinux 0x4afc9c49 inc_zone_page_state +EXPORT_SYMBOL vmlinux 0x4afe9a77 scsi_partsize +EXPORT_SYMBOL vmlinux 0x4b020794 input_reset_device +EXPORT_SYMBOL vmlinux 0x4b068c1d tty_throttle +EXPORT_SYMBOL vmlinux 0x4b085dbf agp3_generic_configure +EXPORT_SYMBOL vmlinux 0x4b3cb349 _lv1_destruct_io_irq_outlet +EXPORT_SYMBOL vmlinux 0x4b4cc934 cfb_imageblit +EXPORT_SYMBOL vmlinux 0x4b5fd49e dm_kcopyd_do_callback +EXPORT_SYMBOL vmlinux 0x4b6c66bd zero_fill_bio +EXPORT_SYMBOL vmlinux 0x4b6fcddc _lv1_set_spe_interrupt_mask +EXPORT_SYMBOL vmlinux 0x4b6ff20b uart_update_timeout +EXPORT_SYMBOL vmlinux 0x4b7286db peernet2id_alloc +EXPORT_SYMBOL vmlinux 0x4b73dee2 led_blink_set +EXPORT_SYMBOL vmlinux 0x4b8326ff ida_remove +EXPORT_SYMBOL vmlinux 0x4b8a5c75 __lock_page +EXPORT_SYMBOL vmlinux 0x4baf35a7 vme_master_get +EXPORT_SYMBOL vmlinux 0x4bca54e4 noop_qdisc +EXPORT_SYMBOL vmlinux 0x4bd9c768 scsi_change_queue_depth +EXPORT_SYMBOL vmlinux 0x4bdb631f ipv6_push_nfrag_opts +EXPORT_SYMBOL vmlinux 0x4be3d598 dev_warn +EXPORT_SYMBOL vmlinux 0x4bed99b3 __percpu_counter_add +EXPORT_SYMBOL vmlinux 0x4bf893e5 phy_init_hw +EXPORT_SYMBOL vmlinux 0x4bff212a blk_mq_start_hw_queues +EXPORT_SYMBOL vmlinux 0x4c06adc4 vme_irq_handler +EXPORT_SYMBOL vmlinux 0x4c092663 alloc_file +EXPORT_SYMBOL vmlinux 0x4c0f313a sock_efree +EXPORT_SYMBOL vmlinux 0x4c11435a _raw_read_lock_bh +EXPORT_SYMBOL vmlinux 0x4c346a53 kvasprintf +EXPORT_SYMBOL vmlinux 0x4c3c73aa vfs_fsync +EXPORT_SYMBOL vmlinux 0x4c5fdfd1 iov_iter_init +EXPORT_SYMBOL vmlinux 0x4c8154ba xfrm6_rcv_cb +EXPORT_SYMBOL vmlinux 0x4c9e4dd5 brioctl_set +EXPORT_SYMBOL vmlinux 0x4ca9669f scnprintf +EXPORT_SYMBOL vmlinux 0x4cb0e988 gen_pool_dma_alloc +EXPORT_SYMBOL vmlinux 0x4cb7036e jbd2_journal_dirty_metadata +EXPORT_SYMBOL vmlinux 0x4cc01186 unregister_key_type +EXPORT_SYMBOL vmlinux 0x4cdb3178 ns_to_timeval +EXPORT_SYMBOL vmlinux 0x4d294bb4 bit_wait_io +EXPORT_SYMBOL vmlinux 0x4d53e6ab ipv6_sock_mc_join +EXPORT_SYMBOL vmlinux 0x4d5dbdb8 pci_get_device +EXPORT_SYMBOL vmlinux 0x4d63d2cb dmaengine_get_unmap_data +EXPORT_SYMBOL vmlinux 0x4d63f173 __ip_select_ident +EXPORT_SYMBOL vmlinux 0x4d644407 flush_old_exec +EXPORT_SYMBOL vmlinux 0x4d7163a7 __get_user_pages_unlocked +EXPORT_SYMBOL vmlinux 0x4d791953 mempool_resize +EXPORT_SYMBOL vmlinux 0x4d974b9c register_sysrq_key +EXPORT_SYMBOL vmlinux 0x4d9b652b rb_erase +EXPORT_SYMBOL vmlinux 0x4dae616f sock_wfree +EXPORT_SYMBOL vmlinux 0x4dc3fbb3 nf_hook_slow +EXPORT_SYMBOL vmlinux 0x4dd2507d pci_disable_link_state +EXPORT_SYMBOL vmlinux 0x4de34a07 cpu_rmap_put +EXPORT_SYMBOL vmlinux 0x4df119fa __bitmap_parse +EXPORT_SYMBOL vmlinux 0x4e3567f7 match_int +EXPORT_SYMBOL vmlinux 0x4e68e9be rb_next_postorder +EXPORT_SYMBOL vmlinux 0x4e6e8ea7 fg_console +EXPORT_SYMBOL vmlinux 0x4e825460 generic_update_time +EXPORT_SYMBOL vmlinux 0x4e8933da compat_sock_get_timestamp +EXPORT_SYMBOL vmlinux 0x4e9be4af padata_register_cpumask_notifier +EXPORT_SYMBOL vmlinux 0x4e9dffb5 ip_fast_csum +EXPORT_SYMBOL vmlinux 0x4ea963d3 inode_claim_rsv_space +EXPORT_SYMBOL vmlinux 0x4ebc0317 skb_free_datagram_locked +EXPORT_SYMBOL vmlinux 0x4ecd527e of_get_ddr_timings +EXPORT_SYMBOL vmlinux 0x4ecd60d7 swiotlb_sync_sg_for_device +EXPORT_SYMBOL vmlinux 0x4edd72f7 block_all_signals +EXPORT_SYMBOL vmlinux 0x4ee4f1fa file_path +EXPORT_SYMBOL vmlinux 0x4eef5c9d dev_disable_lro +EXPORT_SYMBOL vmlinux 0x4efbe3a9 of_get_named_gpio_flags +EXPORT_SYMBOL vmlinux 0x4f051e72 sk_reset_timer +EXPORT_SYMBOL vmlinux 0x4f0bf1e4 inet6_del_offload +EXPORT_SYMBOL vmlinux 0x4f12aa44 kset_unregister +EXPORT_SYMBOL vmlinux 0x4f1cd128 security_tun_dev_create +EXPORT_SYMBOL vmlinux 0x4f2250ba rtc_tm_to_time64 +EXPORT_SYMBOL vmlinux 0x4f269f27 nf_register_hooks +EXPORT_SYMBOL vmlinux 0x4f2f8859 udp_lib_unhash +EXPORT_SYMBOL vmlinux 0x4f391d0e nla_parse +EXPORT_SYMBOL vmlinux 0x4f50a4e0 devm_ioremap_resource +EXPORT_SYMBOL vmlinux 0x4f55237d vmap +EXPORT_SYMBOL vmlinux 0x4f664db6 _lv1_insert_htab_entry +EXPORT_SYMBOL vmlinux 0x4f68e5c9 do_gettimeofday +EXPORT_SYMBOL vmlinux 0x4f6fb2ce ___pskb_trim +EXPORT_SYMBOL vmlinux 0x4f7675c5 param_get_byte +EXPORT_SYMBOL vmlinux 0x4f892cfd dev_getfirstbyhwtype +EXPORT_SYMBOL vmlinux 0x4f9f6c0d i2c_master_recv +EXPORT_SYMBOL vmlinux 0x4fad35e4 inet_csk_init_xmit_timers +EXPORT_SYMBOL vmlinux 0x4fbbd668 mmc_add_host +EXPORT_SYMBOL vmlinux 0x4fc25793 simple_readpage +EXPORT_SYMBOL vmlinux 0x4fc27554 of_find_i2c_adapter_by_node +EXPORT_SYMBOL vmlinux 0x4fdee897 i8042_command +EXPORT_SYMBOL vmlinux 0x4fe2e265 security_inode_permission +EXPORT_SYMBOL vmlinux 0x50097088 security_tun_dev_free_security +EXPORT_SYMBOL vmlinux 0x5018d93a dev_remove_pack +EXPORT_SYMBOL vmlinux 0x502172ec have_submounts +EXPORT_SYMBOL vmlinux 0x5035164a page_symlink_inode_operations +EXPORT_SYMBOL vmlinux 0x50383200 mutex_trylock +EXPORT_SYMBOL vmlinux 0x50410bbb prepare_binprm +EXPORT_SYMBOL vmlinux 0x504d2ec0 skb_copy_bits +EXPORT_SYMBOL vmlinux 0x505027a8 vme_unregister_bridge +EXPORT_SYMBOL vmlinux 0x505b1867 console_stop +EXPORT_SYMBOL vmlinux 0x5063df40 __posix_acl_create +EXPORT_SYMBOL vmlinux 0x50811777 devm_ioremap +EXPORT_SYMBOL vmlinux 0x509b671f __frontswap_load +EXPORT_SYMBOL vmlinux 0x50a7dce0 decrementer_clockevent +EXPORT_SYMBOL vmlinux 0x50a90e8d bsearch +EXPORT_SYMBOL vmlinux 0x50ba769a kblockd_schedule_work +EXPORT_SYMBOL vmlinux 0x50cd5042 framebuffer_release +EXPORT_SYMBOL vmlinux 0x50ded37c __posix_acl_chmod +EXPORT_SYMBOL vmlinux 0x50eb8d52 __ww_mutex_lock +EXPORT_SYMBOL vmlinux 0x50f6f768 blk_queue_max_segment_size +EXPORT_SYMBOL vmlinux 0x51164ad9 cmdline_parts_set +EXPORT_SYMBOL vmlinux 0x5118c382 secure_dccp_sequence_number +EXPORT_SYMBOL vmlinux 0x51255d44 get_mm_exe_file +EXPORT_SYMBOL vmlinux 0x512bd78f i8042_check_port_owner +EXPORT_SYMBOL vmlinux 0x519b0da3 finish_wait +EXPORT_SYMBOL vmlinux 0x51c5d8c0 nd_iostat_end +EXPORT_SYMBOL vmlinux 0x51cfb47f d_instantiate_no_diralias +EXPORT_SYMBOL vmlinux 0x51de7a70 wait_for_key_construction +EXPORT_SYMBOL vmlinux 0x51e15d32 ip_route_me_harder +EXPORT_SYMBOL vmlinux 0x51e505ae skb_add_rx_frag +EXPORT_SYMBOL vmlinux 0x51f90ce1 __cleancache_invalidate_fs +EXPORT_SYMBOL vmlinux 0x51f921c3 make_bad_inode +EXPORT_SYMBOL vmlinux 0x51fac71b mntget +EXPORT_SYMBOL vmlinux 0x52026cdf security_sb_parse_opts_str +EXPORT_SYMBOL vmlinux 0x521b36b5 qdisc_put_rtab +EXPORT_SYMBOL vmlinux 0x522407ab blk_rq_map_sg +EXPORT_SYMBOL vmlinux 0x52318f59 blk_recount_segments +EXPORT_SYMBOL vmlinux 0x5234e102 netif_device_detach +EXPORT_SYMBOL vmlinux 0x523c29e4 dentry_update_name_case +EXPORT_SYMBOL vmlinux 0x52428cc8 parent_mem_cgroup +EXPORT_SYMBOL vmlinux 0x527830ff pmac_xpram_read +EXPORT_SYMBOL vmlinux 0x52852d05 ppc_md +EXPORT_SYMBOL vmlinux 0x52867a25 skb_tx_error +EXPORT_SYMBOL vmlinux 0x52983a4f vme_master_write +EXPORT_SYMBOL vmlinux 0x52a1edc3 neigh_ifdown +EXPORT_SYMBOL vmlinux 0x52a8f8f4 dcb_ieee_getapp_mask +EXPORT_SYMBOL vmlinux 0x52d4ea80 of_find_mipi_dsi_device_by_node +EXPORT_SYMBOL vmlinux 0x52e3fa05 _lv1_allocate_memory +EXPORT_SYMBOL vmlinux 0x52ed9192 ppp_output_wakeup +EXPORT_SYMBOL vmlinux 0x530afbe2 dev_uc_sync +EXPORT_SYMBOL vmlinux 0x530b1e98 pm_suspend +EXPORT_SYMBOL vmlinux 0x531aa2c3 netlink_net_capable +EXPORT_SYMBOL vmlinux 0x53326531 mempool_alloc_pages +EXPORT_SYMBOL vmlinux 0x5339f5f8 _lv1_read_virtual_uart +EXPORT_SYMBOL vmlinux 0x53429092 kthread_stop +EXPORT_SYMBOL vmlinux 0x535c8308 vme_dma_pattern_attribute +EXPORT_SYMBOL vmlinux 0x535f6ebd dmam_free_noncoherent +EXPORT_SYMBOL vmlinux 0x5365ef1b d_prune_aliases +EXPORT_SYMBOL vmlinux 0x5367423e sk_send_sigurg +EXPORT_SYMBOL vmlinux 0x536c238f devm_input_allocate_device +EXPORT_SYMBOL vmlinux 0x536cc847 memcg_kmem_enabled_key +EXPORT_SYMBOL vmlinux 0x536dc875 dev_vprintk_emit +EXPORT_SYMBOL vmlinux 0x53724691 abx500_set_register_interruptible +EXPORT_SYMBOL vmlinux 0x5377e556 hex2bin +EXPORT_SYMBOL vmlinux 0x5379d816 i2c_smbus_read_byte_data +EXPORT_SYMBOL vmlinux 0x53819c35 tty_hangup +EXPORT_SYMBOL vmlinux 0x539af73c __sg_alloc_table +EXPORT_SYMBOL vmlinux 0x53a986b5 override_creds +EXPORT_SYMBOL vmlinux 0x53c44aa0 skb_copy_and_csum_datagram_msg +EXPORT_SYMBOL vmlinux 0x53d03f2b blk_mq_add_to_requeue_list +EXPORT_SYMBOL vmlinux 0x53dce0b6 dev_load +EXPORT_SYMBOL vmlinux 0x53e8560f vme_new_dma_list +EXPORT_SYMBOL vmlinux 0x53ebab1b _outsl_ns +EXPORT_SYMBOL vmlinux 0x53f3525b scsi_eh_prep_cmnd +EXPORT_SYMBOL vmlinux 0x5409775b free_irq_cpu_rmap +EXPORT_SYMBOL vmlinux 0x5412c7c7 up +EXPORT_SYMBOL vmlinux 0x54245b39 kstrtoull_from_user +EXPORT_SYMBOL vmlinux 0x542e88b8 tcf_hash_create +EXPORT_SYMBOL vmlinux 0x543ef284 seq_hlist_start +EXPORT_SYMBOL vmlinux 0x545dcee3 phy_connect_direct +EXPORT_SYMBOL vmlinux 0x545f5e88 skb_append_datato_frags +EXPORT_SYMBOL vmlinux 0x54906dbf cdrom_check_events +EXPORT_SYMBOL vmlinux 0x549f063e netif_tx_wake_queue +EXPORT_SYMBOL vmlinux 0x54a9db5f _kstrtoul +EXPORT_SYMBOL vmlinux 0x54aa33b4 release_sock +EXPORT_SYMBOL vmlinux 0x54af3ee1 pci_set_master +EXPORT_SYMBOL vmlinux 0x54c256e0 vme_check_window +EXPORT_SYMBOL vmlinux 0x54e6fcdd net_enable_timestamp +EXPORT_SYMBOL vmlinux 0x551bd071 __rb_erase_color +EXPORT_SYMBOL vmlinux 0x5541ea93 on_each_cpu +EXPORT_SYMBOL vmlinux 0x5561d07a read_cache_pages +EXPORT_SYMBOL vmlinux 0x5567c227 kernel_cpustat +EXPORT_SYMBOL vmlinux 0x5568c553 complete +EXPORT_SYMBOL vmlinux 0x5577ef9e udp_table +EXPORT_SYMBOL vmlinux 0x557b3dd8 _lv1_gpu_close +EXPORT_SYMBOL vmlinux 0x558cd679 sock_diag_put_filterinfo +EXPORT_SYMBOL vmlinux 0x5593c525 tcp_splice_read +EXPORT_SYMBOL vmlinux 0x55993129 __get_page_tail +EXPORT_SYMBOL vmlinux 0x559dae93 elv_add_request +EXPORT_SYMBOL vmlinux 0x55b42735 swiotlb_map_sg_attrs +EXPORT_SYMBOL vmlinux 0x55d481c9 hdmi_infoframe_unpack +EXPORT_SYMBOL vmlinux 0x55f070bc km_policy_expired +EXPORT_SYMBOL vmlinux 0x55f26b8a generic_setlease +EXPORT_SYMBOL vmlinux 0x55f5019b __kmalloc_node +EXPORT_SYMBOL vmlinux 0x56147775 vfs_mkdir +EXPORT_SYMBOL vmlinux 0x56318f23 devm_ioremap_wc +EXPORT_SYMBOL vmlinux 0x5635a60a vmalloc_user +EXPORT_SYMBOL vmlinux 0x564adbed gnet_stats_copy_basic +EXPORT_SYMBOL vmlinux 0x564e8c7d ilookup5 +EXPORT_SYMBOL vmlinux 0x5662516e follow_pfn +EXPORT_SYMBOL vmlinux 0x567f2016 param_set_ushort +EXPORT_SYMBOL vmlinux 0x568356eb netif_rx +EXPORT_SYMBOL vmlinux 0x568804ee _lv1_destruct_event_receive_port +EXPORT_SYMBOL vmlinux 0x56a10763 csum_tcpudp_magic +EXPORT_SYMBOL vmlinux 0x56c2b95b rtas_progress +EXPORT_SYMBOL vmlinux 0x56c8799d scsi_kunmap_atomic_sg +EXPORT_SYMBOL vmlinux 0x56d192af sync_filesystem +EXPORT_SYMBOL vmlinux 0x56d34e18 padata_set_cpumask +EXPORT_SYMBOL vmlinux 0x56ddd997 smp_call_function_many +EXPORT_SYMBOL vmlinux 0x56f49492 dmam_free_coherent +EXPORT_SYMBOL vmlinux 0x56f6c7de lockref_get_not_zero +EXPORT_SYMBOL vmlinux 0x57073f69 d_splice_alias +EXPORT_SYMBOL vmlinux 0x572647d6 get_mce_fault_addr +EXPORT_SYMBOL vmlinux 0x572e85d4 blk_lookup_devt +EXPORT_SYMBOL vmlinux 0x5748fe55 udp_seq_open +EXPORT_SYMBOL vmlinux 0x574c2e74 bitmap_release_region +EXPORT_SYMBOL vmlinux 0x57575f08 dmaengine_put +EXPORT_SYMBOL vmlinux 0x57674fd7 __sw_hweight16 +EXPORT_SYMBOL vmlinux 0x577d2b1a __scsi_device_lookup_by_target +EXPORT_SYMBOL vmlinux 0x577d35f3 hdmi_avi_infoframe_pack +EXPORT_SYMBOL vmlinux 0x5792f848 strlcpy +EXPORT_SYMBOL vmlinux 0x579bab50 _lv1_gpu_memory_free +EXPORT_SYMBOL vmlinux 0x57a1f385 disk_stack_limits +EXPORT_SYMBOL vmlinux 0x57da7fbb i2c_verify_adapter +EXPORT_SYMBOL vmlinux 0x57e34e05 pci_dev_get +EXPORT_SYMBOL vmlinux 0x57e4af61 bdi_register_dev +EXPORT_SYMBOL vmlinux 0x57f916cc i2c_smbus_read_word_data +EXPORT_SYMBOL vmlinux 0x581eff6c elv_rb_latter_request +EXPORT_SYMBOL vmlinux 0x581f98da zlib_inflate +EXPORT_SYMBOL vmlinux 0x5838f6c9 rtc_valid_tm +EXPORT_SYMBOL vmlinux 0x5853ae04 pagevec_lookup_tag +EXPORT_SYMBOL vmlinux 0x5857b225 ioread16_rep +EXPORT_SYMBOL vmlinux 0x586d6e86 fget_raw +EXPORT_SYMBOL vmlinux 0x587616f1 vfs_fstatat +EXPORT_SYMBOL vmlinux 0x5883e1d1 param_get_long +EXPORT_SYMBOL vmlinux 0x58862d75 uart_add_one_port +EXPORT_SYMBOL vmlinux 0x588ae8ba agp_create_memory +EXPORT_SYMBOL vmlinux 0x58b73bc7 match_wildcard +EXPORT_SYMBOL vmlinux 0x58ba3815 would_dump +EXPORT_SYMBOL vmlinux 0x58c07827 set_bh_page +EXPORT_SYMBOL vmlinux 0x58c334c7 noop_llseek +EXPORT_SYMBOL vmlinux 0x58e1f357 keyring_clear +EXPORT_SYMBOL vmlinux 0x58efe726 iov_iter_alignment +EXPORT_SYMBOL vmlinux 0x5919d49c __mmc_claim_host +EXPORT_SYMBOL vmlinux 0x59256ae0 blk_end_request_cur +EXPORT_SYMBOL vmlinux 0x59267dad scsi_test_unit_ready +EXPORT_SYMBOL vmlinux 0x5933e18e audit_log +EXPORT_SYMBOL vmlinux 0x5944d1da scsi_print_sense_hdr +EXPORT_SYMBOL vmlinux 0x594a2111 pnv_cxl_ioda_msi_setup +EXPORT_SYMBOL vmlinux 0x594bf15b ioport_map +EXPORT_SYMBOL vmlinux 0x595033ed netlink_capable +EXPORT_SYMBOL vmlinux 0x595c1a10 tcp_init_xmit_timers +EXPORT_SYMBOL vmlinux 0x595d0946 empty_zero_page +EXPORT_SYMBOL vmlinux 0x5967c929 __tracepoint_kmem_cache_alloc_node +EXPORT_SYMBOL vmlinux 0x598e4904 mod_timer_pending +EXPORT_SYMBOL vmlinux 0x5999a991 xfrm_unregister_km +EXPORT_SYMBOL vmlinux 0x59aa14cf fence_release +EXPORT_SYMBOL vmlinux 0x59abe920 simple_follow_link +EXPORT_SYMBOL vmlinux 0x59b3378a completion_done +EXPORT_SYMBOL vmlinux 0x59be5235 csum_and_copy_from_iter +EXPORT_SYMBOL vmlinux 0x5a025f7b arch_local_irq_restore +EXPORT_SYMBOL vmlinux 0x5a0672c9 kernel_getsockname +EXPORT_SYMBOL vmlinux 0x5a0aaa12 proc_doulongvec_ms_jiffies_minmax +EXPORT_SYMBOL vmlinux 0x5a0b73d0 zlib_deflateInit2 +EXPORT_SYMBOL vmlinux 0x5a129c9e blk_queue_alignment_offset +EXPORT_SYMBOL vmlinux 0x5a2b9a25 xfrm_input +EXPORT_SYMBOL vmlinux 0x5a2cda3e trace_print_hex_seq +EXPORT_SYMBOL vmlinux 0x5a3c6fb6 pci_get_subsys +EXPORT_SYMBOL vmlinux 0x5a47d7f4 param_ops_byte +EXPORT_SYMBOL vmlinux 0x5a4a27f1 jbd2_journal_try_to_free_buffers +EXPORT_SYMBOL vmlinux 0x5a5196c0 blk_fetch_request +EXPORT_SYMBOL vmlinux 0x5a5b6f8f lru_cache_add_file +EXPORT_SYMBOL vmlinux 0x5a700c4a dquot_drop +EXPORT_SYMBOL vmlinux 0x5a921311 strncmp +EXPORT_SYMBOL vmlinux 0x5a9f1d63 memmove +EXPORT_SYMBOL vmlinux 0x5aa4fc4e block_commit_write +EXPORT_SYMBOL vmlinux 0x5aaa41c1 twl6040_set_bits +EXPORT_SYMBOL vmlinux 0x5ab161af inetdev_by_index +EXPORT_SYMBOL vmlinux 0x5ab86ca0 tcp_prot +EXPORT_SYMBOL vmlinux 0x5acf8bc3 scsi_free_host_dev +EXPORT_SYMBOL vmlinux 0x5ad51423 dev_addr_del +EXPORT_SYMBOL vmlinux 0x5ad8471e secpath_dup +EXPORT_SYMBOL vmlinux 0x5af26415 i2c_smbus_write_i2c_block_data +EXPORT_SYMBOL vmlinux 0x5aff4177 vme_lm_get +EXPORT_SYMBOL vmlinux 0x5b2c340d pm_vt_switch_required +EXPORT_SYMBOL vmlinux 0x5b43f1f1 rtas_service_present +EXPORT_SYMBOL vmlinux 0x5b56860c vm_munmap +EXPORT_SYMBOL vmlinux 0x5b67ccf7 proc_set_user +EXPORT_SYMBOL vmlinux 0x5b80260e ip_mc_inc_group +EXPORT_SYMBOL vmlinux 0x5b9828c5 dma_spin_lock +EXPORT_SYMBOL vmlinux 0x5bc10524 printk_emit +EXPORT_SYMBOL vmlinux 0x5bf9dace wait_on_page_bit +EXPORT_SYMBOL vmlinux 0x5c0f2d36 devm_ioport_map +EXPORT_SYMBOL vmlinux 0x5c2dadb5 blk_mq_end_request +EXPORT_SYMBOL vmlinux 0x5c32b97d icmp_send +EXPORT_SYMBOL vmlinux 0x5c37f319 _raw_spin_unlock_irqrestore +EXPORT_SYMBOL vmlinux 0x5c44b3bd xfrm_policy_delete +EXPORT_SYMBOL vmlinux 0x5c5e486b pcie_capability_clear_and_set_dword +EXPORT_SYMBOL vmlinux 0x5c64bcb0 kobject_get +EXPORT_SYMBOL vmlinux 0x5c6663b3 do_truncate +EXPORT_SYMBOL vmlinux 0x5c66d4b0 pci_bus_read_config_byte +EXPORT_SYMBOL vmlinux 0x5c688862 dm_put_table_device +EXPORT_SYMBOL vmlinux 0x5c7ecca5 jbd2_journal_get_create_access +EXPORT_SYMBOL vmlinux 0x5c809cf2 copy_page_to_iter +EXPORT_SYMBOL vmlinux 0x5c9a8be9 wireless_send_event +EXPORT_SYMBOL vmlinux 0x5cb6a6a6 blk_start_request +EXPORT_SYMBOL vmlinux 0x5cbb1e32 nf_ip6_checksum +EXPORT_SYMBOL vmlinux 0x5cc32bdc bitmap_copy_le +EXPORT_SYMBOL vmlinux 0x5ccc9045 _lv1_close_device +EXPORT_SYMBOL vmlinux 0x5cdaeba9 scsi_device_lookup_by_target +EXPORT_SYMBOL vmlinux 0x5ce18407 xfrm_state_walk_done +EXPORT_SYMBOL vmlinux 0x5ceecace serial8250_register_8250_port +EXPORT_SYMBOL vmlinux 0x5cf30e10 __debugger_ipi +EXPORT_SYMBOL vmlinux 0x5cf53ce2 input_free_minor +EXPORT_SYMBOL vmlinux 0x5d05042e sock_edemux +EXPORT_SYMBOL vmlinux 0x5d11c69b of_find_device_by_node +EXPORT_SYMBOL vmlinux 0x5d550c4d scsi_sd_probe_domain +EXPORT_SYMBOL vmlinux 0x5d579bfd param_get_ulong +EXPORT_SYMBOL vmlinux 0x5d61e3ab tty_set_operations +EXPORT_SYMBOL vmlinux 0x5d64616b blkdev_get +EXPORT_SYMBOL vmlinux 0x5d894e51 xfrm_init_replay +EXPORT_SYMBOL vmlinux 0x5dbe9712 md_error +EXPORT_SYMBOL vmlinux 0x5dcf6196 is_nd_btt +EXPORT_SYMBOL vmlinux 0x5e2eca01 mdiobus_alloc_size +EXPORT_SYMBOL vmlinux 0x5e3a8a9c __wake_up +EXPORT_SYMBOL vmlinux 0x5e5b80a2 jbd2_journal_extend +EXPORT_SYMBOL vmlinux 0x5e869b16 fib_default_rule_add +EXPORT_SYMBOL vmlinux 0x5e8dc212 posix_acl_to_xattr +EXPORT_SYMBOL vmlinux 0x5e95b1cd current_umask +EXPORT_SYMBOL vmlinux 0x5eb13695 submit_bh +EXPORT_SYMBOL vmlinux 0x5eb24829 dm_shift_arg +EXPORT_SYMBOL vmlinux 0x5ed040b0 pm_set_vt_switch +EXPORT_SYMBOL vmlinux 0x5ed65a51 sdev_prefix_printk +EXPORT_SYMBOL vmlinux 0x5eddb914 lockref_put_return +EXPORT_SYMBOL vmlinux 0x5f005368 kstrtou8 +EXPORT_SYMBOL vmlinux 0x5f0392e7 agp_bind_memory +EXPORT_SYMBOL vmlinux 0x5f098b2a in6addr_interfacelocal_allrouters +EXPORT_SYMBOL vmlinux 0x5f482242 blk_queue_start_tag +EXPORT_SYMBOL vmlinux 0x5f8a2728 isa_io_base +EXPORT_SYMBOL vmlinux 0x5f9280e0 free_inode_nonrcu +EXPORT_SYMBOL vmlinux 0x5fbbacdc __dev_get_by_index +EXPORT_SYMBOL vmlinux 0x5fbf6767 qdisc_class_hash_grow +EXPORT_SYMBOL vmlinux 0x5fc9387c mpage_writepage +EXPORT_SYMBOL vmlinux 0x5fda0227 vfs_stat +EXPORT_SYMBOL vmlinux 0x5fdee823 netdev_lower_get_next +EXPORT_SYMBOL vmlinux 0x5fdf37ea nf_register_queue_handler +EXPORT_SYMBOL vmlinux 0x5fe07cbe neigh_seq_stop +EXPORT_SYMBOL vmlinux 0x5fe57b95 blk_integrity_merge_rq +EXPORT_SYMBOL vmlinux 0x600683d3 do_unblank_screen +EXPORT_SYMBOL vmlinux 0x601a0133 netdev_change_features +EXPORT_SYMBOL vmlinux 0x601f665f dm_io_client_create +EXPORT_SYMBOL vmlinux 0x60352082 register_inet6addr_notifier +EXPORT_SYMBOL vmlinux 0x603a1226 phy_mii_ioctl +EXPORT_SYMBOL vmlinux 0x603a762d vio_cmo_set_dev_desired +EXPORT_SYMBOL vmlinux 0x604d7e7d seq_printf +EXPORT_SYMBOL vmlinux 0x60685894 ps3_sb_event_receive_port_setup +EXPORT_SYMBOL vmlinux 0x606d0b09 secure_tcpv6_sequence_number +EXPORT_SYMBOL vmlinux 0x606e57ee inet_csk_prepare_forced_close +EXPORT_SYMBOL vmlinux 0x607b1f42 __devm_gpiod_get +EXPORT_SYMBOL vmlinux 0x6091644e flow_keys_dissector +EXPORT_SYMBOL vmlinux 0x609eb36e vio_unregister_device +EXPORT_SYMBOL vmlinux 0x609f1c7e synchronize_net +EXPORT_SYMBOL vmlinux 0x60b2d48a key_link +EXPORT_SYMBOL vmlinux 0x60df1e3b posix_acl_equiv_mode +EXPORT_SYMBOL vmlinux 0x60e71dcd set_blocksize +EXPORT_SYMBOL vmlinux 0x60fbefce update_devfreq +EXPORT_SYMBOL vmlinux 0x611e0467 lease_get_mtime +EXPORT_SYMBOL vmlinux 0x61229b10 node_to_cpumask_map +EXPORT_SYMBOL vmlinux 0x6128b5fc __printk_ratelimit +EXPORT_SYMBOL vmlinux 0x612a7c5c vfs_rename +EXPORT_SYMBOL vmlinux 0x612de5d3 mmc_start_req +EXPORT_SYMBOL vmlinux 0x613ea40d mmc_of_parse_voltage +EXPORT_SYMBOL vmlinux 0x61432dbd tty_schedule_flip +EXPORT_SYMBOL vmlinux 0x6148dd4b pci_bus_write_config_word +EXPORT_SYMBOL vmlinux 0x614bb773 radix_tree_insert +EXPORT_SYMBOL vmlinux 0x61517e74 tcp_req_err +EXPORT_SYMBOL vmlinux 0x61522f14 rwsem_wake +EXPORT_SYMBOL vmlinux 0x6160aaf5 phy_get_eee_err +EXPORT_SYMBOL vmlinux 0x618911fc numa_node +EXPORT_SYMBOL vmlinux 0x61897db0 d_alloc +EXPORT_SYMBOL vmlinux 0x619cb7dd simple_read_from_buffer +EXPORT_SYMBOL vmlinux 0x619e3632 generic_error_remove_page +EXPORT_SYMBOL vmlinux 0x61a4487c _lv1_gpu_device_unmap +EXPORT_SYMBOL vmlinux 0x61a728a5 mount_nodev +EXPORT_SYMBOL vmlinux 0x61a7c82d ps2_handle_response +EXPORT_SYMBOL vmlinux 0x61af0838 blk_queue_bounce_limit +EXPORT_SYMBOL vmlinux 0x61b7b126 simple_strtoull +EXPORT_SYMBOL vmlinux 0x61c6a3a1 skb_find_text +EXPORT_SYMBOL vmlinux 0x61dcdcd3 _lv1_pause +EXPORT_SYMBOL vmlinux 0x61dcf24a trace_print_flags_seq +EXPORT_SYMBOL vmlinux 0x61eef2c9 _insb +EXPORT_SYMBOL vmlinux 0x6214aef2 cpufreq_unregister_notifier +EXPORT_SYMBOL vmlinux 0x621b091e genl_unregister_family +EXPORT_SYMBOL vmlinux 0x6224db7b vlan_dev_vlan_id +EXPORT_SYMBOL vmlinux 0x6225637e md5_transform +EXPORT_SYMBOL vmlinux 0x6228676d pcibios_bus_to_resource +EXPORT_SYMBOL vmlinux 0x6228c21f smp_call_function_single +EXPORT_SYMBOL vmlinux 0x6248d076 padata_start +EXPORT_SYMBOL vmlinux 0x62538167 slhc_toss +EXPORT_SYMBOL vmlinux 0x626dcf98 dquot_scan_active +EXPORT_SYMBOL vmlinux 0x62737e1d sock_unregister +EXPORT_SYMBOL vmlinux 0x62827bec security_secctx_to_secid +EXPORT_SYMBOL vmlinux 0x62849ac7 dev_valid_name +EXPORT_SYMBOL vmlinux 0x6294cd89 ps2_drain +EXPORT_SYMBOL vmlinux 0x62a40338 blk_init_queue +EXPORT_SYMBOL vmlinux 0x62b6a32d ps3_dma_region_init +EXPORT_SYMBOL vmlinux 0x62bcc9ad elv_rb_former_request +EXPORT_SYMBOL vmlinux 0x62fb5b7a to_nd_btt +EXPORT_SYMBOL vmlinux 0x62ffa9eb iw_handler_get_spy +EXPORT_SYMBOL vmlinux 0x63080371 input_allocate_device +EXPORT_SYMBOL vmlinux 0x630b5e6f tcp_timewait_state_process +EXPORT_SYMBOL vmlinux 0x630b7186 dev_get_by_index +EXPORT_SYMBOL vmlinux 0x63187451 pcie_aspm_support_enabled +EXPORT_SYMBOL vmlinux 0x63231951 gen_pool_create +EXPORT_SYMBOL vmlinux 0x6337ad4d inode_needs_sync +EXPORT_SYMBOL vmlinux 0x633952e6 phy_ethtool_set_wol +EXPORT_SYMBOL vmlinux 0x63396aec __debugger_break_match +EXPORT_SYMBOL vmlinux 0x633ca6d1 of_phy_register_fixed_link +EXPORT_SYMBOL vmlinux 0x633ef833 __skb_checksum_complete_head +EXPORT_SYMBOL vmlinux 0x635a35fe lock_sock_nested +EXPORT_SYMBOL vmlinux 0x635b9406 padata_do_serial +EXPORT_SYMBOL vmlinux 0x6360d639 cpu_all_bits +EXPORT_SYMBOL vmlinux 0x6373b503 of_device_get_match_data +EXPORT_SYMBOL vmlinux 0x6375dc37 proto_register +EXPORT_SYMBOL vmlinux 0x63a05daa ip6_dst_hoplimit +EXPORT_SYMBOL vmlinux 0x63a7c28c bitmap_find_free_region +EXPORT_SYMBOL vmlinux 0x63b38a7b scsi_unblock_requests +EXPORT_SYMBOL vmlinux 0x63b58ef5 security_path_mknod +EXPORT_SYMBOL vmlinux 0x63b84a2b make_kprojid +EXPORT_SYMBOL vmlinux 0x63c4d61f __bitmap_weight +EXPORT_SYMBOL vmlinux 0x63cce2a5 dev_mc_del +EXPORT_SYMBOL vmlinux 0x63eb9355 panic_blink +EXPORT_SYMBOL vmlinux 0x63f75920 _lv1_construct_virtual_address_space +EXPORT_SYMBOL vmlinux 0x63faf325 __xfrm_policy_check +EXPORT_SYMBOL vmlinux 0x63fc232f strlen_user +EXPORT_SYMBOL vmlinux 0x6403e338 tcp_memory_pressure +EXPORT_SYMBOL vmlinux 0x64127b67 bitmap_find_next_zero_area_off +EXPORT_SYMBOL vmlinux 0x641cc365 compat_sock_common_getsockopt +EXPORT_SYMBOL vmlinux 0x6431f570 __generic_file_fsync +EXPORT_SYMBOL vmlinux 0x643d8e50 sock_alloc_send_skb +EXPORT_SYMBOL vmlinux 0x6458c180 key_validate +EXPORT_SYMBOL vmlinux 0x6459725d of_get_parent +EXPORT_SYMBOL vmlinux 0x646c78c3 mmc_erase +EXPORT_SYMBOL vmlinux 0x646cc6ab pmu_poll +EXPORT_SYMBOL vmlinux 0x6498b205 buffer_migrate_page +EXPORT_SYMBOL vmlinux 0x64999478 congestion_wait +EXPORT_SYMBOL vmlinux 0x64a6baa2 devm_gpiod_put_array +EXPORT_SYMBOL vmlinux 0x64bbc288 string_unescape +EXPORT_SYMBOL vmlinux 0x64be0648 generic_shutdown_super +EXPORT_SYMBOL vmlinux 0x64c57872 __neigh_create +EXPORT_SYMBOL vmlinux 0x64c953ef tcf_em_unregister +EXPORT_SYMBOL vmlinux 0x64d5e636 mmc_can_reset +EXPORT_SYMBOL vmlinux 0x64d8efbc vm_insert_page +EXPORT_SYMBOL vmlinux 0x65048f58 msi_bitmap_free_hwirqs +EXPORT_SYMBOL vmlinux 0x6513a3fa fb_get_color_depth +EXPORT_SYMBOL vmlinux 0x651997e3 devm_gpio_free +EXPORT_SYMBOL vmlinux 0x651a4139 test_taint +EXPORT_SYMBOL vmlinux 0x652ce9aa nla_memcmp +EXPORT_SYMBOL vmlinux 0x65362b82 tcp_md5_do_del +EXPORT_SYMBOL vmlinux 0x65408378 zlib_inflate_blob +EXPORT_SYMBOL vmlinux 0x6554a23c netlink_rcv_skb +EXPORT_SYMBOL vmlinux 0x656c1a0e string_escape_mem +EXPORT_SYMBOL vmlinux 0x65845119 udp_set_csum +EXPORT_SYMBOL vmlinux 0x658eca5d __nd_iostat_start +EXPORT_SYMBOL vmlinux 0x65a3d652 dput +EXPORT_SYMBOL vmlinux 0x65b1c0cb phy_find_first +EXPORT_SYMBOL vmlinux 0x65bb58a2 _raw_read_trylock +EXPORT_SYMBOL vmlinux 0x65be237d tcp_getsockopt +EXPORT_SYMBOL vmlinux 0x65c446de uart_remove_one_port +EXPORT_SYMBOL vmlinux 0x65c64dd4 arp_xmit +EXPORT_SYMBOL vmlinux 0x65cca230 iov_iter_fault_in_readable +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 0x65ecfe76 module_refcount +EXPORT_SYMBOL vmlinux 0x65f26f7c pci_disable_link_state_locked +EXPORT_SYMBOL vmlinux 0x65f3ad9a fb_videomode_to_var +EXPORT_SYMBOL vmlinux 0x6612b488 vfs_create +EXPORT_SYMBOL vmlinux 0x662cbd4a sock_recvmsg +EXPORT_SYMBOL vmlinux 0x6632614d i2c_verify_client +EXPORT_SYMBOL vmlinux 0x665a58b1 __nla_put_nohdr +EXPORT_SYMBOL vmlinux 0x66754be3 gen_new_estimator +EXPORT_SYMBOL vmlinux 0x669263d0 netpoll_send_skb_on_dev +EXPORT_SYMBOL vmlinux 0x669a843b get_io_context +EXPORT_SYMBOL vmlinux 0x66aa726d d_drop +EXPORT_SYMBOL vmlinux 0x66ad1cb3 _lv1_set_lpm_general_control +EXPORT_SYMBOL vmlinux 0x66b4028a nf_unregister_sockopt +EXPORT_SYMBOL vmlinux 0x66b8e838 con_is_bound +EXPORT_SYMBOL vmlinux 0x66cbf14b pmac_xpram_write +EXPORT_SYMBOL vmlinux 0x66e30b82 registered_fb +EXPORT_SYMBOL vmlinux 0x66edb38d vlan_vid_del +EXPORT_SYMBOL vmlinux 0x66f1a43b xfrm4_protocol_deregister +EXPORT_SYMBOL vmlinux 0x66f9d718 uart_suspend_port +EXPORT_SYMBOL vmlinux 0x6726e08f tty_unregister_device +EXPORT_SYMBOL vmlinux 0x672c6c77 thaw_super +EXPORT_SYMBOL vmlinux 0x67358689 xfrm6_prepare_output +EXPORT_SYMBOL vmlinux 0x67373689 pci_find_hose_for_OF_device +EXPORT_SYMBOL vmlinux 0x673f815e agp_bridges +EXPORT_SYMBOL vmlinux 0x67426655 security_path_rmdir +EXPORT_SYMBOL vmlinux 0x674bb7d5 netpoll_poll_enable +EXPORT_SYMBOL vmlinux 0x674fb4a1 phy_register_fixup_for_id +EXPORT_SYMBOL vmlinux 0x67604a6b __dynamic_dev_dbg +EXPORT_SYMBOL vmlinux 0x67733cf4 mb_cache_create +EXPORT_SYMBOL vmlinux 0x679e83ee textsearch_destroy +EXPORT_SYMBOL vmlinux 0x67b78eb3 seq_hlist_next_rcu +EXPORT_SYMBOL vmlinux 0x67d0f186 of_find_all_nodes +EXPORT_SYMBOL vmlinux 0x67fe2faf inet_add_offload +EXPORT_SYMBOL vmlinux 0x680775d9 dma_sync_wait +EXPORT_SYMBOL vmlinux 0x6808b453 __unregister_cpu_notifier +EXPORT_SYMBOL vmlinux 0x6818c2f5 swiotlb_map_sg +EXPORT_SYMBOL vmlinux 0x68228f21 __remove_inode_hash +EXPORT_SYMBOL vmlinux 0x68253561 proc_set_size +EXPORT_SYMBOL vmlinux 0x682a89ae sock_create_lite +EXPORT_SYMBOL vmlinux 0x682cd6e1 kernel_getpeername +EXPORT_SYMBOL vmlinux 0x684c7cdc bdi_register +EXPORT_SYMBOL vmlinux 0x68578422 nf_nat_decode_session_hook +EXPORT_SYMBOL vmlinux 0x685a650d flush_dcache_page +EXPORT_SYMBOL vmlinux 0x68609857 complete_and_exit +EXPORT_SYMBOL vmlinux 0x687b6a16 kdbgetsymval +EXPORT_SYMBOL vmlinux 0x687e26a9 swiotlb_sync_single_for_device +EXPORT_SYMBOL vmlinux 0x6885adef sync_inodes_sb +EXPORT_SYMBOL vmlinux 0x6888ca25 dst_discard_sk +EXPORT_SYMBOL vmlinux 0x6895295a tcp_read_sock +EXPORT_SYMBOL vmlinux 0x68a19df4 tcp_sync_mss +EXPORT_SYMBOL vmlinux 0x68b83ac6 posix_acl_alloc +EXPORT_SYMBOL vmlinux 0x68bc60ab param_set_long +EXPORT_SYMBOL vmlinux 0x68da20b4 __vfs_read +EXPORT_SYMBOL vmlinux 0x68dff4ed pcie_capability_read_dword +EXPORT_SYMBOL vmlinux 0x68e1ef51 smu_present +EXPORT_SYMBOL vmlinux 0x690d1ffd forget_all_cached_acls +EXPORT_SYMBOL vmlinux 0x6914373d param_set_ullong +EXPORT_SYMBOL vmlinux 0x6925ce64 blk_mq_complete_request +EXPORT_SYMBOL vmlinux 0x6930ddb5 mmc_flush_cache +EXPORT_SYMBOL vmlinux 0x693d970c del_gendisk +EXPORT_SYMBOL vmlinux 0x694ed0d4 vme_slave_request +EXPORT_SYMBOL vmlinux 0x69650b96 vlan_dev_real_dev +EXPORT_SYMBOL vmlinux 0x6969c1ba xfrm6_find_1stfragopt +EXPORT_SYMBOL vmlinux 0x6971447a rtc_month_days +EXPORT_SYMBOL vmlinux 0x6982c3c0 netif_device_attach +EXPORT_SYMBOL vmlinux 0x698b6bec vlan_vid_add +EXPORT_SYMBOL vmlinux 0x6990c2ee neigh_sysctl_unregister +EXPORT_SYMBOL vmlinux 0x699ccbf8 _lv1_deconfigure_virtual_uart_irq +EXPORT_SYMBOL vmlinux 0x69a0ca7d iowrite16be +EXPORT_SYMBOL vmlinux 0x69a358a6 iomem_resource +EXPORT_SYMBOL vmlinux 0x69ad2f20 kstrtouint +EXPORT_SYMBOL vmlinux 0x69cc441f inet_csk_clear_xmit_timers +EXPORT_SYMBOL vmlinux 0x6a037cf1 mempool_kfree +EXPORT_SYMBOL vmlinux 0x6a0b6f9e __skb_flow_dissect +EXPORT_SYMBOL vmlinux 0x6a25c803 set_security_override +EXPORT_SYMBOL vmlinux 0x6a2e193d kiocb_set_cancel_fn +EXPORT_SYMBOL vmlinux 0x6a2f3dff kernel_getsockopt +EXPORT_SYMBOL vmlinux 0x6a5059f1 nf_log_unbind_pf +EXPORT_SYMBOL vmlinux 0x6a5ecb18 unregister_module_notifier +EXPORT_SYMBOL vmlinux 0x6a5fa363 sigprocmask +EXPORT_SYMBOL vmlinux 0x6a740c54 gen_pool_for_each_chunk +EXPORT_SYMBOL vmlinux 0x6a76f3ac blk_iopoll_enable +EXPORT_SYMBOL vmlinux 0x6acafd5b cookie_timestamp_decode +EXPORT_SYMBOL vmlinux 0x6acb973d iowrite32be +EXPORT_SYMBOL vmlinux 0x6ad901a8 pcim_enable_device +EXPORT_SYMBOL vmlinux 0x6ae6b952 km_policy_notify +EXPORT_SYMBOL vmlinux 0x6aeefac4 zlib_deflateReset +EXPORT_SYMBOL vmlinux 0x6af36548 max8998_bulk_read +EXPORT_SYMBOL vmlinux 0x6af4b1b3 xfrm_dst_ifdown +EXPORT_SYMBOL vmlinux 0x6af9a3d0 udp6_set_csum +EXPORT_SYMBOL vmlinux 0x6aff8baf genphy_aneg_done +EXPORT_SYMBOL vmlinux 0x6b06fdce delayed_work_timer_fn +EXPORT_SYMBOL vmlinux 0x6b1b67d3 __bdevname +EXPORT_SYMBOL vmlinux 0x6b2dc060 dump_stack +EXPORT_SYMBOL vmlinux 0x6b358cab _lv1_read_repository_node +EXPORT_SYMBOL vmlinux 0x6b387694 _lv1_end_of_interrupt_ext +EXPORT_SYMBOL vmlinux 0x6b43d14e user_path_create +EXPORT_SYMBOL vmlinux 0x6b589a6e _lv1_net_add_multicast_address +EXPORT_SYMBOL vmlinux 0x6b5d74cd scm_detach_fds +EXPORT_SYMBOL vmlinux 0x6b5dfe73 __debugger_bpt +EXPORT_SYMBOL vmlinux 0x6b5e0465 fsnotify_get_group +EXPORT_SYMBOL vmlinux 0x6b5f2c6c jbd2_journal_start +EXPORT_SYMBOL vmlinux 0x6b60d1b8 mutex_lock +EXPORT_SYMBOL vmlinux 0x6b640864 nla_strlcpy +EXPORT_SYMBOL vmlinux 0x6b66c889 fence_free +EXPORT_SYMBOL vmlinux 0x6b6f0c4b _lv1_create_repository_node +EXPORT_SYMBOL vmlinux 0x6bc3fbc0 __unregister_chrdev +EXPORT_SYMBOL vmlinux 0x6bd23b2c of_parse_phandle_with_fixed_args +EXPORT_SYMBOL vmlinux 0x6bd8325b rps_may_expire_flow +EXPORT_SYMBOL vmlinux 0x6bdcfd99 qdisc_class_hash_remove +EXPORT_SYMBOL vmlinux 0x6be6ddb6 clear_nlink +EXPORT_SYMBOL vmlinux 0x6c09c2a4 del_timer +EXPORT_SYMBOL vmlinux 0x6c46a181 xfrm6_protocol_deregister +EXPORT_SYMBOL vmlinux 0x6c4b581a ip6_xmit +EXPORT_SYMBOL vmlinux 0x6c51a836 sysctl_tcp_notsent_lowat +EXPORT_SYMBOL vmlinux 0x6c528f18 rawv6_mh_filter_register +EXPORT_SYMBOL vmlinux 0x6c5e34ee fget +EXPORT_SYMBOL vmlinux 0x6c5f3f82 devm_release_resource +EXPORT_SYMBOL vmlinux 0x6c61ce70 num_registered_fb +EXPORT_SYMBOL vmlinux 0x6c702af7 sysctl_udp_rmem_min +EXPORT_SYMBOL vmlinux 0x6c7e85eb ip_mc_check_igmp +EXPORT_SYMBOL vmlinux 0x6c83851b qdisc_reset +EXPORT_SYMBOL vmlinux 0x6c857b3d abx500_startup_irq_enabled +EXPORT_SYMBOL vmlinux 0x6c95f0cf __mark_inode_dirty +EXPORT_SYMBOL vmlinux 0x6cad8595 mipi_dsi_host_register +EXPORT_SYMBOL vmlinux 0x6cae03b1 page_follow_link_light +EXPORT_SYMBOL vmlinux 0x6cb0c50d __blk_end_request_cur +EXPORT_SYMBOL vmlinux 0x6cb37127 flex_array_clear +EXPORT_SYMBOL vmlinux 0x6cc31d44 locks_copy_conflock +EXPORT_SYMBOL vmlinux 0x6cf2842e inet6_unregister_icmp_sender +EXPORT_SYMBOL vmlinux 0x6d01989c udp6_csum_init +EXPORT_SYMBOL vmlinux 0x6d0f1f89 dm_table_get_mode +EXPORT_SYMBOL vmlinux 0x6d14aa96 kernel_sock_ioctl +EXPORT_SYMBOL vmlinux 0x6d1743eb _lv1_get_total_execution_time +EXPORT_SYMBOL vmlinux 0x6d24f436 md_done_sync +EXPORT_SYMBOL vmlinux 0x6d294e43 clock_t_to_jiffies +EXPORT_SYMBOL vmlinux 0x6d2f0ee2 blk_dump_rq_flags +EXPORT_SYMBOL vmlinux 0x6d31313a revalidate_disk +EXPORT_SYMBOL vmlinux 0x6d740223 flex_array_put +EXPORT_SYMBOL vmlinux 0x6da928f4 _insw_ns +EXPORT_SYMBOL vmlinux 0x6dc00f26 forget_cached_acl +EXPORT_SYMBOL vmlinux 0x6dd5876e elv_dispatch_add_tail +EXPORT_SYMBOL vmlinux 0x6de95b09 blk_sync_queue +EXPORT_SYMBOL vmlinux 0x6def2db2 half_md4_transform +EXPORT_SYMBOL vmlinux 0x6df1aaf1 kernel_sigaction +EXPORT_SYMBOL vmlinux 0x6e01f01a ab3100_event_register +EXPORT_SYMBOL vmlinux 0x6e0b6388 dquot_reclaim_space_nodirty +EXPORT_SYMBOL vmlinux 0x6e10cf02 neigh_app_ns +EXPORT_SYMBOL vmlinux 0x6e13b428 input_open_device +EXPORT_SYMBOL vmlinux 0x6e14f743 nf_log_bind_pf +EXPORT_SYMBOL vmlinux 0x6e5067b4 jbd2_journal_ack_err +EXPORT_SYMBOL vmlinux 0x6e527050 scsi_get_host_dev +EXPORT_SYMBOL vmlinux 0x6e5e9638 get_pci_dma_ops +EXPORT_SYMBOL vmlinux 0x6e629be5 __ps2_command +EXPORT_SYMBOL vmlinux 0x6e6f87fa nf_reinject +EXPORT_SYMBOL vmlinux 0x6e720ff2 rtnl_unlock +EXPORT_SYMBOL vmlinux 0x6e7f0fd2 cmdline_parts_parse +EXPORT_SYMBOL vmlinux 0x6e80b594 ps2_command +EXPORT_SYMBOL vmlinux 0x6e9dd606 __symbol_put +EXPORT_SYMBOL vmlinux 0x6eaae796 bdi_setup_and_register +EXPORT_SYMBOL vmlinux 0x6eafceb2 bio_map_kern +EXPORT_SYMBOL vmlinux 0x6eb1744b netif_set_real_num_rx_queues +EXPORT_SYMBOL vmlinux 0x6eb4f6cd blk_finish_request +EXPORT_SYMBOL vmlinux 0x6eb5c0c5 __scsi_alloc_queue +EXPORT_SYMBOL vmlinux 0x6ec1554f pci_bus_put +EXPORT_SYMBOL vmlinux 0x6ecd3e37 kill_bdev +EXPORT_SYMBOL vmlinux 0x6ed8aace neigh_update +EXPORT_SYMBOL vmlinux 0x6f17a0f9 proc_mkdir_mode +EXPORT_SYMBOL vmlinux 0x6f20960a full_name_hash +EXPORT_SYMBOL vmlinux 0x6f2f8f94 ppp_unregister_compressor +EXPORT_SYMBOL vmlinux 0x6f429914 generic_permission +EXPORT_SYMBOL vmlinux 0x6f5ba9c6 sock_rfree +EXPORT_SYMBOL vmlinux 0x6f73ebae vme_irq_generate +EXPORT_SYMBOL vmlinux 0x6f7c9628 swiotlb_free_coherent +EXPORT_SYMBOL vmlinux 0x6f88effb hdmi_avi_infoframe_init +EXPORT_SYMBOL vmlinux 0x6f98622e ip4_datagram_connect +EXPORT_SYMBOL vmlinux 0x6fa331ed _lv1_construct_io_irq_outlet +EXPORT_SYMBOL vmlinux 0x6fbf07cd __free_page_frag +EXPORT_SYMBOL vmlinux 0x6fcb87a1 touch_softlockup_watchdog +EXPORT_SYMBOL vmlinux 0x6ff1a982 qdisc_watchdog_cancel +EXPORT_SYMBOL vmlinux 0x6ff907af acl_by_type +EXPORT_SYMBOL vmlinux 0x6ffe6e8c generic_delete_inode +EXPORT_SYMBOL vmlinux 0x7003b4d7 eth_validate_addr +EXPORT_SYMBOL vmlinux 0x701699b2 _lv1_set_spe_privilege_state_area_1_register +EXPORT_SYMBOL vmlinux 0x70170bb0 giveup_altivec +EXPORT_SYMBOL vmlinux 0x7034c0f7 pci_get_class +EXPORT_SYMBOL vmlinux 0x704a0d2d blk_run_queue_async +EXPORT_SYMBOL vmlinux 0x70523a7a __cond_resched_softirq +EXPORT_SYMBOL vmlinux 0x70530d37 xfrm_state_add +EXPORT_SYMBOL vmlinux 0x7054a3e4 request_dma +EXPORT_SYMBOL vmlinux 0x706d051c del_timer_sync +EXPORT_SYMBOL vmlinux 0x7070a598 invalidate_partition +EXPORT_SYMBOL vmlinux 0x7072bb40 tcp_prequeue +EXPORT_SYMBOL vmlinux 0x707f43f6 __ctzdi2 +EXPORT_SYMBOL vmlinux 0x70913ac5 do_splice_from +EXPORT_SYMBOL vmlinux 0x7091bafe srp_start_tl_fail_timers +EXPORT_SYMBOL vmlinux 0x709c9702 devm_gen_pool_create +EXPORT_SYMBOL vmlinux 0x70a661f8 inet6_unregister_protosw +EXPORT_SYMBOL vmlinux 0x70c513fd netdev_upper_get_next_dev_rcu +EXPORT_SYMBOL vmlinux 0x70e5b245 input_register_handler +EXPORT_SYMBOL vmlinux 0x70e67190 __find_get_block +EXPORT_SYMBOL vmlinux 0x70e7c648 dev_uc_del +EXPORT_SYMBOL vmlinux 0x70e8d976 dquot_acquire +EXPORT_SYMBOL vmlinux 0x70f86c70 pmu_queue_request +EXPORT_SYMBOL vmlinux 0x70f96f88 glob_match +EXPORT_SYMBOL vmlinux 0x7112642c irq_set_chip +EXPORT_SYMBOL vmlinux 0x7129e5f8 hex_asc +EXPORT_SYMBOL vmlinux 0x7146706e tcp_syn_ack_timeout +EXPORT_SYMBOL vmlinux 0x71481359 blk_integrity_unregister +EXPORT_SYMBOL vmlinux 0x7152ace4 agp_alloc_page_array +EXPORT_SYMBOL vmlinux 0x716b5a81 xfrm_spd_getinfo +EXPORT_SYMBOL vmlinux 0x7171121c overflowgid +EXPORT_SYMBOL vmlinux 0x7179abae input_set_abs_params +EXPORT_SYMBOL vmlinux 0x71a50dbc register_blkdev +EXPORT_SYMBOL vmlinux 0x71a672ef dmam_pool_destroy +EXPORT_SYMBOL vmlinux 0x71dae5df __dev_remove_pack +EXPORT_SYMBOL vmlinux 0x723bdd36 fb_validate_mode +EXPORT_SYMBOL vmlinux 0x7265880a generic_file_read_iter +EXPORT_SYMBOL vmlinux 0x727ae5fd jbd2_complete_transaction +EXPORT_SYMBOL vmlinux 0x728035e0 __xfrm_state_delete +EXPORT_SYMBOL vmlinux 0x7289baa4 cros_ec_cmd_xfer +EXPORT_SYMBOL vmlinux 0x728ac04d iterate_supers_type +EXPORT_SYMBOL vmlinux 0x7294e942 request_key_async_with_auxdata +EXPORT_SYMBOL vmlinux 0x729b4a83 _lv1_get_spe_all_interrupt_statuses +EXPORT_SYMBOL vmlinux 0x72a618c2 devfreq_monitor_resume +EXPORT_SYMBOL vmlinux 0x72b243d4 free_dma +EXPORT_SYMBOL vmlinux 0x72b6fa56 fence_wait_timeout +EXPORT_SYMBOL vmlinux 0x72c98139 __arch_hweight64 +EXPORT_SYMBOL vmlinux 0x72ca64c5 tty_port_alloc_xmit_buf +EXPORT_SYMBOL vmlinux 0x72dc85d0 backlight_force_update +EXPORT_SYMBOL vmlinux 0x72e130a8 netpoll_cleanup +EXPORT_SYMBOL vmlinux 0x72ea7b2d scsi_device_type +EXPORT_SYMBOL vmlinux 0x7315a4e9 twl6030_mmc_card_detect_config +EXPORT_SYMBOL vmlinux 0x7315a9d8 bio_uncopy_user +EXPORT_SYMBOL vmlinux 0x731a747a pci_io_base +EXPORT_SYMBOL vmlinux 0x732255ca register_qdisc +EXPORT_SYMBOL vmlinux 0x73258857 sg_miter_start +EXPORT_SYMBOL vmlinux 0x73310a36 skb_store_bits +EXPORT_SYMBOL vmlinux 0x73361a25 crypto_sha1_update +EXPORT_SYMBOL vmlinux 0x733c3b54 kasprintf +EXPORT_SYMBOL vmlinux 0x733d8207 jbd2__journal_start +EXPORT_SYMBOL vmlinux 0x7342a4c2 eth_change_mtu +EXPORT_SYMBOL vmlinux 0x73486a3b dec_zone_page_state +EXPORT_SYMBOL vmlinux 0x735d8503 add_wait_queue +EXPORT_SYMBOL vmlinux 0x735fbad4 of_mdio_parse_addr +EXPORT_SYMBOL vmlinux 0x736dcfbf __devm_gpiod_get_optional +EXPORT_SYMBOL vmlinux 0x73710a3e dqstats +EXPORT_SYMBOL vmlinux 0x7397e98d pcie_set_readrq +EXPORT_SYMBOL vmlinux 0x73aa7450 wireless_spy_update +EXPORT_SYMBOL vmlinux 0x73aaf5df iov_iter_advance +EXPORT_SYMBOL vmlinux 0x73bbad18 simple_link +EXPORT_SYMBOL vmlinux 0x740047d6 inet_unregister_protosw +EXPORT_SYMBOL vmlinux 0x74026e2b iter_file_splice_write +EXPORT_SYMBOL vmlinux 0x7410aba2 strreplace +EXPORT_SYMBOL vmlinux 0x74219ab5 of_platform_bus_probe +EXPORT_SYMBOL vmlinux 0x742c3d49 skb_get_hash_perturb +EXPORT_SYMBOL vmlinux 0x7454b817 from_kgid +EXPORT_SYMBOL vmlinux 0x745d0ff6 make_kgid +EXPORT_SYMBOL vmlinux 0x747195f0 hdmi_vendor_infoframe_init +EXPORT_SYMBOL vmlinux 0x7485e15e unregister_chrdev_region +EXPORT_SYMBOL vmlinux 0x749c3e96 __mutex_init +EXPORT_SYMBOL vmlinux 0x74b095a5 get_gendisk +EXPORT_SYMBOL vmlinux 0x74b43587 mmc_calc_max_discard +EXPORT_SYMBOL vmlinux 0x74b84fe5 writeback_inodes_sb_nr +EXPORT_SYMBOL vmlinux 0x74c01f17 netdev_lower_get_next_private +EXPORT_SYMBOL vmlinux 0x74c134b9 __sw_hweight32 +EXPORT_SYMBOL vmlinux 0x74e5ff1a udpv6_encap_enable +EXPORT_SYMBOL vmlinux 0x74f8fa0c rt6_lookup +EXPORT_SYMBOL vmlinux 0x74fe8730 sys_ctrler +EXPORT_SYMBOL vmlinux 0x751a8af0 ata_link_printk +EXPORT_SYMBOL vmlinux 0x75244e8b vme_unregister_driver +EXPORT_SYMBOL vmlinux 0x7532588a alloc_pages_exact +EXPORT_SYMBOL vmlinux 0x7538b132 agp_off +EXPORT_SYMBOL vmlinux 0x756c786e _lv1_connect_interrupt_event_receive_port +EXPORT_SYMBOL vmlinux 0x756fc162 __xfrm_init_state +EXPORT_SYMBOL vmlinux 0x75754995 _lv1_storage_check_async_status +EXPORT_SYMBOL vmlinux 0x7577019e dev_add_pack +EXPORT_SYMBOL vmlinux 0x758390a7 inet_csk_destroy_sock +EXPORT_SYMBOL vmlinux 0x75994700 add_wait_queue_exclusive +EXPORT_SYMBOL vmlinux 0x759e6fb5 inode_add_bytes +EXPORT_SYMBOL vmlinux 0x759fe33c dev_activate +EXPORT_SYMBOL vmlinux 0x75a05e28 serial8250_do_set_termios +EXPORT_SYMBOL vmlinux 0x75accf66 tty_register_driver +EXPORT_SYMBOL vmlinux 0x75b17be9 km_state_expired +EXPORT_SYMBOL vmlinux 0x75b62c15 neigh_for_each +EXPORT_SYMBOL vmlinux 0x75bda77a seq_hlist_next +EXPORT_SYMBOL vmlinux 0x75bdea12 iommu_area_alloc +EXPORT_SYMBOL vmlinux 0x75be6702 register_sysctl_paths +EXPORT_SYMBOL vmlinux 0x75c41684 pskb_expand_head +EXPORT_SYMBOL vmlinux 0x75c87caf locks_remove_posix +EXPORT_SYMBOL vmlinux 0x75ceb6ce ipv6_dev_get_saddr +EXPORT_SYMBOL vmlinux 0x75e4f5aa pasemi_read_mac_reg +EXPORT_SYMBOL vmlinux 0x760a0f4f yield +EXPORT_SYMBOL vmlinux 0x760a7ca1 xfrm_policy_byid +EXPORT_SYMBOL vmlinux 0x760af084 dmam_pool_create +EXPORT_SYMBOL vmlinux 0x7610509b pci_bus_write_config_dword +EXPORT_SYMBOL vmlinux 0x76197537 xfrm4_rcv +EXPORT_SYMBOL vmlinux 0x761a49d6 of_get_pci_address +EXPORT_SYMBOL vmlinux 0x7634e11e mipi_dsi_dcs_write_buffer +EXPORT_SYMBOL vmlinux 0x76429922 arp_create +EXPORT_SYMBOL vmlinux 0x7645af6f sg_pcopy_from_buffer +EXPORT_SYMBOL vmlinux 0x7647726c handle_sysrq +EXPORT_SYMBOL vmlinux 0x764bd77c request_resource +EXPORT_SYMBOL vmlinux 0x764e2224 _lv1_disconnect_irq_plug_ext +EXPORT_SYMBOL vmlinux 0x765eeae5 block_is_partially_uptodate +EXPORT_SYMBOL vmlinux 0x765ff474 crc_t10dif_generic +EXPORT_SYMBOL vmlinux 0x76649e17 __dev_get_by_name +EXPORT_SYMBOL vmlinux 0x768b832f pci_pme_capable +EXPORT_SYMBOL vmlinux 0x76b6c7c8 __napi_schedule_irqoff +EXPORT_SYMBOL vmlinux 0x76bdb9cc tcf_unregister_action +EXPORT_SYMBOL vmlinux 0x76bf99e8 vme_bus_type +EXPORT_SYMBOL vmlinux 0x76d3cd60 laptop_mode +EXPORT_SYMBOL vmlinux 0x76d451c4 add_taint +EXPORT_SYMBOL vmlinux 0x77034ec5 unregister_console +EXPORT_SYMBOL vmlinux 0x77144936 _lv1_disconnect_irq_plug +EXPORT_SYMBOL vmlinux 0x771cf835 dma_pool_alloc +EXPORT_SYMBOL vmlinux 0x773fa409 __kfifo_dma_in_finish_r +EXPORT_SYMBOL vmlinux 0x77595555 dev_addr_init +EXPORT_SYMBOL vmlinux 0x7761d34c pci_msix_vec_count +EXPORT_SYMBOL vmlinux 0x7763a22b blk_stack_limits +EXPORT_SYMBOL vmlinux 0x777f92a6 inet6_add_protocol +EXPORT_SYMBOL vmlinux 0x778400d7 mdiobus_register +EXPORT_SYMBOL vmlinux 0x778cc3e7 send_sig_info +EXPORT_SYMBOL vmlinux 0x7791485c generic_pipe_buf_confirm +EXPORT_SYMBOL vmlinux 0x779a18af kstrtoll +EXPORT_SYMBOL vmlinux 0x77a7a908 __starget_for_each_device +EXPORT_SYMBOL vmlinux 0x77b04cee put_tty_driver +EXPORT_SYMBOL vmlinux 0x77bc13a0 strim +EXPORT_SYMBOL vmlinux 0x77dc0108 tcp_v4_send_check +EXPORT_SYMBOL vmlinux 0x77de66de agp_free_memory +EXPORT_SYMBOL vmlinux 0x77e7fe5c sock_setsockopt +EXPORT_SYMBOL vmlinux 0x77e83329 inet_csk_accept +EXPORT_SYMBOL vmlinux 0x77ee0ac8 padata_stop +EXPORT_SYMBOL vmlinux 0x7830b04f hvc_put_chars +EXPORT_SYMBOL vmlinux 0x783b3563 wake_up_atomic_t +EXPORT_SYMBOL vmlinux 0x7843874b kobject_init +EXPORT_SYMBOL vmlinux 0x7846af3e __kfifo_len_r +EXPORT_SYMBOL vmlinux 0x784a287d read_cache_page +EXPORT_SYMBOL vmlinux 0x7880c781 dm_kcopyd_prepare_callback +EXPORT_SYMBOL vmlinux 0x789542ac __kernel_write +EXPORT_SYMBOL vmlinux 0x789a17f7 _lv1_destruct_logical_spe +EXPORT_SYMBOL vmlinux 0x789affb1 frontswap_tmem_exclusive_gets +EXPORT_SYMBOL vmlinux 0x78a9e905 _numa_mem_ +EXPORT_SYMBOL vmlinux 0x78b37a44 serio_reconnect +EXPORT_SYMBOL vmlinux 0x78df6bd7 no_pci_devices +EXPORT_SYMBOL vmlinux 0x78ff3c06 keyring_alloc +EXPORT_SYMBOL vmlinux 0x79119e4e ps2_begin_command +EXPORT_SYMBOL vmlinux 0x79399378 nf_afinfo +EXPORT_SYMBOL vmlinux 0x794bdc5d tcp_seq_open +EXPORT_SYMBOL vmlinux 0x794f5e8c pci_get_domain_bus_and_slot +EXPORT_SYMBOL vmlinux 0x796c7fb1 security_inode_init_security +EXPORT_SYMBOL vmlinux 0x796fc5ce scsi_get_sense_info_fld +EXPORT_SYMBOL vmlinux 0x7971d19c fbcon_set_rotate +EXPORT_SYMBOL vmlinux 0x797335eb dev_set_mac_address +EXPORT_SYMBOL vmlinux 0x7984eefc key_update +EXPORT_SYMBOL vmlinux 0x7985d043 radix_tree_tag_set +EXPORT_SYMBOL vmlinux 0x798f96dc inet_frags_init +EXPORT_SYMBOL vmlinux 0x79a33f85 vme_get_size +EXPORT_SYMBOL vmlinux 0x79aa04a2 get_random_bytes +EXPORT_SYMBOL vmlinux 0x79bd7790 dup_iter +EXPORT_SYMBOL vmlinux 0x79def561 netdev_lower_get_first_private_rcu +EXPORT_SYMBOL vmlinux 0x79e38e8a nf_log_trace +EXPORT_SYMBOL vmlinux 0x79fc8ccf sock_i_ino +EXPORT_SYMBOL vmlinux 0x7a148868 ndo_dflt_fdb_del +EXPORT_SYMBOL vmlinux 0x7a27c184 ewma_init +EXPORT_SYMBOL vmlinux 0x7a2bbf7a __xfrm_route_forward +EXPORT_SYMBOL vmlinux 0x7a4497db kzfree +EXPORT_SYMBOL vmlinux 0x7a555a03 d_obtain_root +EXPORT_SYMBOL vmlinux 0x7a61922c bio_copy_kern +EXPORT_SYMBOL vmlinux 0x7a6cdedc do_settimeofday64 +EXPORT_SYMBOL vmlinux 0x7a925833 cpufreq_get_global_kobject +EXPORT_SYMBOL vmlinux 0x7aa1756e kvfree +EXPORT_SYMBOL vmlinux 0x7aa9e259 _lv1_map_htab +EXPORT_SYMBOL vmlinux 0x7ab88a45 system_freezing_cnt +EXPORT_SYMBOL vmlinux 0x7ab9d7e8 security_path_chown +EXPORT_SYMBOL vmlinux 0x7ad050b9 qid_lt +EXPORT_SYMBOL vmlinux 0x7add44b5 posix_acl_valid +EXPORT_SYMBOL vmlinux 0x7ae06bef stop_tty +EXPORT_SYMBOL vmlinux 0x7ae0c4ab sock_no_sendpage +EXPORT_SYMBOL vmlinux 0x7b0b2657 uart_match_port +EXPORT_SYMBOL vmlinux 0x7b16235f hdmi_vendor_infoframe_pack +EXPORT_SYMBOL vmlinux 0x7b2aef6c __krealloc +EXPORT_SYMBOL vmlinux 0x7b2f5a52 udp_poll +EXPORT_SYMBOL vmlinux 0x7b387d55 ps2_init +EXPORT_SYMBOL vmlinux 0x7b449511 unregister_cdrom +EXPORT_SYMBOL vmlinux 0x7b506846 i2c_transfer +EXPORT_SYMBOL vmlinux 0x7b76c6d3 pnv_cxl_alloc_hwirqs +EXPORT_SYMBOL vmlinux 0x7b7ef632 ndo_dflt_fdb_add +EXPORT_SYMBOL vmlinux 0x7ba46273 rtnl_configure_link +EXPORT_SYMBOL vmlinux 0x7ba6d878 submit_bio_wait +EXPORT_SYMBOL vmlinux 0x7bac7e43 generic_show_options +EXPORT_SYMBOL vmlinux 0x7bb756cc neigh_proc_dointvec_jiffies +EXPORT_SYMBOL vmlinux 0x7bb8644d fb_class +EXPORT_SYMBOL vmlinux 0x7bef58df wait_iff_congested +EXPORT_SYMBOL vmlinux 0x7c003aef _raw_read_lock_irq +EXPORT_SYMBOL vmlinux 0x7c1372e8 panic +EXPORT_SYMBOL vmlinux 0x7c158a42 skb_checksum_setup +EXPORT_SYMBOL vmlinux 0x7c173634 __bitmap_complement +EXPORT_SYMBOL vmlinux 0x7c1d1454 bh_submit_read +EXPORT_SYMBOL vmlinux 0x7c267999 input_flush_device +EXPORT_SYMBOL vmlinux 0x7c27156c rtas_online_cpus_mask +EXPORT_SYMBOL vmlinux 0x7c2d098f krealloc +EXPORT_SYMBOL vmlinux 0x7c46233a cpufreq_quick_get +EXPORT_SYMBOL vmlinux 0x7c5ba0bd commit_creds +EXPORT_SYMBOL vmlinux 0x7c61340c __release_region +EXPORT_SYMBOL vmlinux 0x7c6d7fed register_sysctl +EXPORT_SYMBOL vmlinux 0x7c8727b0 blk_queue_update_dma_alignment +EXPORT_SYMBOL vmlinux 0x7c9291d1 csum_partial_copy_generic +EXPORT_SYMBOL vmlinux 0x7c98845d twl_i2c_read +EXPORT_SYMBOL vmlinux 0x7c9e3f58 mmc_wait_for_req +EXPORT_SYMBOL vmlinux 0x7ca1b501 pagecache_write_end +EXPORT_SYMBOL vmlinux 0x7cacf296 param_set_byte +EXPORT_SYMBOL vmlinux 0x7cb1ae69 cpu_down +EXPORT_SYMBOL vmlinux 0x7cbd4aaa agp_enable +EXPORT_SYMBOL vmlinux 0x7cdcef5d param_array_ops +EXPORT_SYMBOL vmlinux 0x7ce0f514 pci_bus_assign_resources +EXPORT_SYMBOL vmlinux 0x7ce18c9f from_kqid +EXPORT_SYMBOL vmlinux 0x7ce5b327 downgrade_write +EXPORT_SYMBOL vmlinux 0x7cf35220 vme_master_free +EXPORT_SYMBOL vmlinux 0x7cfeb61c block_write_begin +EXPORT_SYMBOL vmlinux 0x7d004ffd crypto_sha1_finup +EXPORT_SYMBOL vmlinux 0x7d0db45c jiffies_to_clock_t +EXPORT_SYMBOL vmlinux 0x7d11c268 jiffies +EXPORT_SYMBOL vmlinux 0x7d1d0e53 deactivate_super +EXPORT_SYMBOL vmlinux 0x7d599502 t10_pi_type1_ip +EXPORT_SYMBOL vmlinux 0x7d705738 blk_start_plug +EXPORT_SYMBOL vmlinux 0x7d8759a8 dqput +EXPORT_SYMBOL vmlinux 0x7d8e3468 of_io_request_and_map +EXPORT_SYMBOL vmlinux 0x7dc97879 rtas_get_error_log_max +EXPORT_SYMBOL vmlinux 0x7dca5036 dev_uc_init +EXPORT_SYMBOL vmlinux 0x7dd063dc __generic_block_fiemap +EXPORT_SYMBOL vmlinux 0x7dde544c devfreq_recommended_opp +EXPORT_SYMBOL vmlinux 0x7deff673 dm_consume_args +EXPORT_SYMBOL vmlinux 0x7df1e32d tty_chars_in_buffer +EXPORT_SYMBOL vmlinux 0x7e04be4d mipi_dsi_dcs_enter_sleep_mode +EXPORT_SYMBOL vmlinux 0x7e0e66f7 phy_register_fixup +EXPORT_SYMBOL vmlinux 0x7e1057aa tty_unthrottle +EXPORT_SYMBOL vmlinux 0x7e3b8bc7 unregister_md_personality +EXPORT_SYMBOL vmlinux 0x7e42eb5a __pskb_pull_tail +EXPORT_SYMBOL vmlinux 0x7e5687b4 inet6_register_icmp_sender +EXPORT_SYMBOL vmlinux 0x7e69f0ac devfreq_add_governor +EXPORT_SYMBOL vmlinux 0x7e81a3f2 of_get_mac_address +EXPORT_SYMBOL vmlinux 0x7e87227e slhc_compress +EXPORT_SYMBOL vmlinux 0x7e87e8bf blk_post_runtime_resume +EXPORT_SYMBOL vmlinux 0x7e9e67db xfrm_state_insert +EXPORT_SYMBOL vmlinux 0x7ecdcefc zpool_unregister_driver +EXPORT_SYMBOL vmlinux 0x7ecf4494 scsi_device_quiesce +EXPORT_SYMBOL vmlinux 0x7ed0978e call_usermodehelper_setup +EXPORT_SYMBOL vmlinux 0x7edf769b I_BDEV +EXPORT_SYMBOL vmlinux 0x7ee6d93a nsecs_to_jiffies64 +EXPORT_SYMBOL vmlinux 0x7ef513d0 ipv4_specific +EXPORT_SYMBOL vmlinux 0x7f02188f __msecs_to_jiffies +EXPORT_SYMBOL vmlinux 0x7f09bcce writeback_inodes_sb +EXPORT_SYMBOL vmlinux 0x7f20afbb file_ns_capable +EXPORT_SYMBOL vmlinux 0x7f24de73 jiffies_to_usecs +EXPORT_SYMBOL vmlinux 0x7f26883f alloc_fcdev +EXPORT_SYMBOL vmlinux 0x7f2b8da6 migrate_page +EXPORT_SYMBOL vmlinux 0x7f2cb86e dma_async_tx_descriptor_init +EXPORT_SYMBOL vmlinux 0x7f3a9268 of_parse_phandle +EXPORT_SYMBOL vmlinux 0x7f51b525 __getblk_slow +EXPORT_SYMBOL vmlinux 0x7f62a045 cpu_maps_update_done +EXPORT_SYMBOL vmlinux 0x7f66c92d of_translate_address +EXPORT_SYMBOL vmlinux 0x7f685317 done_path_create +EXPORT_SYMBOL vmlinux 0x7f7f548d ip6_route_output +EXPORT_SYMBOL vmlinux 0x7f900d0c pm8606_osc_enable +EXPORT_SYMBOL vmlinux 0x7f9d1f92 jbd2_journal_force_commit +EXPORT_SYMBOL vmlinux 0x7f9e4654 iterate_mounts +EXPORT_SYMBOL vmlinux 0x7fae7cde pci_release_region +EXPORT_SYMBOL vmlinux 0x7fbd10d2 radix_tree_next_chunk +EXPORT_SYMBOL vmlinux 0x7fd1a127 jbd2_journal_check_available_features +EXPORT_SYMBOL vmlinux 0x7fe32873 rb_replace_node +EXPORT_SYMBOL vmlinux 0x7fe38f48 sg_copy_to_buffer +EXPORT_SYMBOL vmlinux 0x7fe9a060 _lv1_net_stop_tx_dma +EXPORT_SYMBOL vmlinux 0x803ba5c8 cdrom_ioctl +EXPORT_SYMBOL vmlinux 0x804084e1 bio_alloc_bioset +EXPORT_SYMBOL vmlinux 0x8049985c udp_del_offload +EXPORT_SYMBOL vmlinux 0x805ea3e5 tty_insert_flip_string_flags +EXPORT_SYMBOL vmlinux 0x8068c15c kblockd_schedule_delayed_work +EXPORT_SYMBOL vmlinux 0x80791a8c radix_tree_gang_lookup_slot +EXPORT_SYMBOL vmlinux 0x809f67d0 __register_binfmt +EXPORT_SYMBOL vmlinux 0x80ca5026 _bin2bcd +EXPORT_SYMBOL vmlinux 0x80d68d3e fb_register_client +EXPORT_SYMBOL vmlinux 0x80e7f301 tcp_md5_do_lookup +EXPORT_SYMBOL vmlinux 0x80f90e3a twl6040_get_vibralr_status +EXPORT_SYMBOL vmlinux 0x810c3f99 mipi_dsi_dcs_get_pixel_format +EXPORT_SYMBOL vmlinux 0x812e5f38 dcb_ieee_delapp +EXPORT_SYMBOL vmlinux 0x814e7730 nf_ct_destroy +EXPORT_SYMBOL vmlinux 0x81533963 sysfs_format_mac +EXPORT_SYMBOL vmlinux 0x815b5dd4 match_octal +EXPORT_SYMBOL vmlinux 0x816014dc nla_put_nohdr +EXPORT_SYMBOL vmlinux 0x8167c332 simple_dname +EXPORT_SYMBOL vmlinux 0x816eb734 ata_print_version +EXPORT_SYMBOL vmlinux 0x817f06a3 of_get_ibm_chip_id +EXPORT_SYMBOL vmlinux 0x81a07f4e _atomic_dec_and_lock +EXPORT_SYMBOL vmlinux 0x81a109ce of_find_matching_node_and_match +EXPORT_SYMBOL vmlinux 0x81a81997 ipv6_skip_exthdr +EXPORT_SYMBOL vmlinux 0x81b6f188 tcp_gro_complete +EXPORT_SYMBOL vmlinux 0x81c0a84f rtas_set_indicator +EXPORT_SYMBOL vmlinux 0x81d9f7f2 _lv1_put_iopte +EXPORT_SYMBOL vmlinux 0x81db6ebb xz_dec_reset +EXPORT_SYMBOL vmlinux 0x81ddd762 jbd2_journal_file_inode +EXPORT_SYMBOL vmlinux 0x81eddb76 __inode_permission +EXPORT_SYMBOL vmlinux 0x81ffcd25 kernel_connect +EXPORT_SYMBOL vmlinux 0x82072614 tasklet_kill +EXPORT_SYMBOL vmlinux 0x8208e68b pci_scan_single_device +EXPORT_SYMBOL vmlinux 0x820e60c4 scsi_device_lookup +EXPORT_SYMBOL vmlinux 0x822c5a8c fence_add_callback +EXPORT_SYMBOL vmlinux 0x822d6667 mdio_bus_type +EXPORT_SYMBOL vmlinux 0x82458f7f radix_tree_delete_item +EXPORT_SYMBOL vmlinux 0x824d7bf6 skb_copy_and_csum_dev +EXPORT_SYMBOL vmlinux 0x82701365 int_to_scsilun +EXPORT_SYMBOL vmlinux 0x828062b1 __frontswap_init +EXPORT_SYMBOL vmlinux 0x82871b60 dmt_modes +EXPORT_SYMBOL vmlinux 0x82875d08 __dst_destroy_metrics_generic +EXPORT_SYMBOL vmlinux 0x829ab6e1 skb_copy_datagram_iter +EXPORT_SYMBOL vmlinux 0x82acfb70 blk_iopoll_sched +EXPORT_SYMBOL vmlinux 0x82c2fcbc scsi_verify_blk_ioctl +EXPORT_SYMBOL vmlinux 0x82c5bc51 find_vma +EXPORT_SYMBOL vmlinux 0x82e5a238 vm_get_page_prot +EXPORT_SYMBOL vmlinux 0x82e7cb75 phy_detach +EXPORT_SYMBOL vmlinux 0x82f83834 mem_cgroup_begin_page_stat +EXPORT_SYMBOL vmlinux 0x8302718c vme_dma_list_exec +EXPORT_SYMBOL vmlinux 0x8304733a blk_set_stacking_limits +EXPORT_SYMBOL vmlinux 0x8311c0a8 blk_rq_map_user_iov +EXPORT_SYMBOL vmlinux 0x8312f39a sock_from_file +EXPORT_SYMBOL vmlinux 0x832b0828 inet_reqsk_alloc +EXPORT_SYMBOL vmlinux 0x83333b98 netdev_class_remove_file_ns +EXPORT_SYMBOL vmlinux 0x833c8c30 input_set_capability +EXPORT_SYMBOL vmlinux 0x8341ce62 scsi_mode_sense +EXPORT_SYMBOL vmlinux 0x835df158 __skb_checksum_complete +EXPORT_SYMBOL vmlinux 0x836aadff blk_put_request +EXPORT_SYMBOL vmlinux 0x8372be5c simple_rmdir +EXPORT_SYMBOL vmlinux 0x839430b2 __register_cpu_notifier +EXPORT_SYMBOL vmlinux 0x839e2d8b qdisc_watchdog_schedule_ns +EXPORT_SYMBOL vmlinux 0x83a7cf03 genphy_suspend +EXPORT_SYMBOL vmlinux 0x83a8eba1 tcp_sendmsg +EXPORT_SYMBOL vmlinux 0x83b009ea xfrm_state_walk_init +EXPORT_SYMBOL vmlinux 0x83c52fba xfrm4_protocol_init +EXPORT_SYMBOL vmlinux 0x83ec4975 blk_queue_max_discard_sectors +EXPORT_SYMBOL vmlinux 0x844e3767 radix_tree_lookup +EXPORT_SYMBOL vmlinux 0x845124e0 ps3_mm_phys_to_lpar +EXPORT_SYMBOL vmlinux 0x8473d644 eth_prepare_mac_addr_change +EXPORT_SYMBOL vmlinux 0x8491eed1 padata_alloc +EXPORT_SYMBOL vmlinux 0x849fe807 csum_and_copy_from_user +EXPORT_SYMBOL vmlinux 0x84a55ae5 ipv6_sock_mc_drop +EXPORT_SYMBOL vmlinux 0x84a57c75 vme_bus_num +EXPORT_SYMBOL vmlinux 0x84bd69bf dq_data_lock +EXPORT_SYMBOL vmlinux 0x84bed7f3 sync_inode_metadata +EXPORT_SYMBOL vmlinux 0x84c647ed scsi_add_host_with_dma +EXPORT_SYMBOL vmlinux 0x84c76245 neigh_seq_start +EXPORT_SYMBOL vmlinux 0x84cad464 of_match_device +EXPORT_SYMBOL vmlinux 0x84ceac2c kmem_cache_alloc_node +EXPORT_SYMBOL vmlinux 0x84f4893f led_update_brightness +EXPORT_SYMBOL vmlinux 0x84fcd5a7 phy_resume +EXPORT_SYMBOL vmlinux 0x84ffea8b idr_preload +EXPORT_SYMBOL vmlinux 0x8500416c agp_allocate_memory +EXPORT_SYMBOL vmlinux 0x850a969c alloc_anon_inode +EXPORT_SYMBOL vmlinux 0x850f48ff xfrm_state_lookup +EXPORT_SYMBOL vmlinux 0x85116596 i2c_get_adapter +EXPORT_SYMBOL vmlinux 0x8526ed73 dev_uc_flush +EXPORT_SYMBOL vmlinux 0x85344d0c bd_set_size +EXPORT_SYMBOL vmlinux 0x8546fcf4 machine_id +EXPORT_SYMBOL vmlinux 0x8550c7fe simple_empty +EXPORT_SYMBOL vmlinux 0x85670f1d rtnl_is_locked +EXPORT_SYMBOL vmlinux 0x859769d6 nd_region_to_nstype +EXPORT_SYMBOL vmlinux 0x8597eb47 plpar_hcall +EXPORT_SYMBOL vmlinux 0x85ae6052 trace_print_array_seq +EXPORT_SYMBOL vmlinux 0x85b5e625 rfkill_set_states +EXPORT_SYMBOL vmlinux 0x85bc1813 param_ops_int +EXPORT_SYMBOL vmlinux 0x85d908b7 register_quota_format +EXPORT_SYMBOL vmlinux 0x85df9b6c strsep +EXPORT_SYMBOL vmlinux 0x85ebbde4 pci_release_selected_regions +EXPORT_SYMBOL vmlinux 0x85efc7e0 zero_pfn +EXPORT_SYMBOL vmlinux 0x85f10a10 update_region +EXPORT_SYMBOL vmlinux 0x85f6bef0 force_sig +EXPORT_SYMBOL vmlinux 0x85fb6cb0 kill_block_super +EXPORT_SYMBOL vmlinux 0x860d10cb pci_set_dma_seg_boundary +EXPORT_SYMBOL vmlinux 0x864a2ca0 param_ops_short +EXPORT_SYMBOL vmlinux 0x865029ac __hw_addr_sync +EXPORT_SYMBOL vmlinux 0x8664f62e cpufreq_update_policy +EXPORT_SYMBOL vmlinux 0x868acba5 get_options +EXPORT_SYMBOL vmlinux 0x86b916e4 fddi_change_mtu +EXPORT_SYMBOL vmlinux 0x86c68053 dev_set_allmulti +EXPORT_SYMBOL vmlinux 0x86db1cbb rtas_flash_term_hook +EXPORT_SYMBOL vmlinux 0x86deb630 devm_ioremap_nocache +EXPORT_SYMBOL vmlinux 0x86e0204e __blk_mq_end_request +EXPORT_SYMBOL vmlinux 0x86eae037 pci_bus_read_dev_vendor_id +EXPORT_SYMBOL vmlinux 0x86fb9b05 bitmap_parse_user +EXPORT_SYMBOL vmlinux 0x8702405c tty_driver_kref_put +EXPORT_SYMBOL vmlinux 0x871a3727 ab3100_event_unregister +EXPORT_SYMBOL vmlinux 0x871c0a7e fiemap_check_flags +EXPORT_SYMBOL vmlinux 0x873a53ea __arch_hweight8 +EXPORT_SYMBOL vmlinux 0x874af9c8 rtnl_unicast +EXPORT_SYMBOL vmlinux 0x87797fd4 sock_no_bind +EXPORT_SYMBOL vmlinux 0x878a74d2 skb_dequeue +EXPORT_SYMBOL vmlinux 0x878ab3ce sysctl_tcp_adv_win_scale +EXPORT_SYMBOL vmlinux 0x879a146e simple_fill_super +EXPORT_SYMBOL vmlinux 0x87a5261e __scsi_device_lookup +EXPORT_SYMBOL vmlinux 0x87a636ca dmam_alloc_coherent +EXPORT_SYMBOL vmlinux 0x87bd7b17 security_inode_notifysecctx +EXPORT_SYMBOL vmlinux 0x87d000be dev_change_flags +EXPORT_SYMBOL vmlinux 0x87e351a5 blk_queue_io_min +EXPORT_SYMBOL vmlinux 0x87f509a8 truncate_inode_pages_range +EXPORT_SYMBOL vmlinux 0x880da1b1 _lv1_get_logical_partition_id +EXPORT_SYMBOL vmlinux 0x882db37f neigh_proc_dointvec +EXPORT_SYMBOL vmlinux 0x885446f3 mark_page_accessed +EXPORT_SYMBOL vmlinux 0x88625e87 abx500_get_register_page_interruptible +EXPORT_SYMBOL vmlinux 0x88753556 bitmap_unplug +EXPORT_SYMBOL vmlinux 0x887fa47e __getnstimeofday64 +EXPORT_SYMBOL vmlinux 0x888dfb44 mntput +EXPORT_SYMBOL vmlinux 0x88971fb5 param_get_short +EXPORT_SYMBOL vmlinux 0x889888fa tty_port_init +EXPORT_SYMBOL vmlinux 0x88b545bb security_path_unlink +EXPORT_SYMBOL vmlinux 0x88c2e599 tso_start +EXPORT_SYMBOL vmlinux 0x88d0bb98 jbd2_journal_init_jbd_inode +EXPORT_SYMBOL vmlinux 0x88da2eaf __skb_checksum +EXPORT_SYMBOL vmlinux 0x88e450b2 pci_enable_msi_range +EXPORT_SYMBOL vmlinux 0x88f2f60b inet6_release +EXPORT_SYMBOL vmlinux 0x88f722be tcp_v4_md5_hash_skb +EXPORT_SYMBOL vmlinux 0x89026552 vio_h_cop_sync +EXPORT_SYMBOL vmlinux 0x891bef26 vm_stat +EXPORT_SYMBOL vmlinux 0x891fbb10 mempool_destroy +EXPORT_SYMBOL vmlinux 0x8946dd07 tty_do_resize +EXPORT_SYMBOL vmlinux 0x895108f3 proc_dostring +EXPORT_SYMBOL vmlinux 0x895577b0 numa_cpu_lookup_table +EXPORT_SYMBOL vmlinux 0x89797060 _raw_read_lock +EXPORT_SYMBOL vmlinux 0x897d31df tcp_check_req +EXPORT_SYMBOL vmlinux 0x89808f20 of_find_net_device_by_node +EXPORT_SYMBOL vmlinux 0x89817e5e audit_log_task_info +EXPORT_SYMBOL vmlinux 0x898f2024 netdev_warn +EXPORT_SYMBOL vmlinux 0x89afe34e __kfifo_dma_in_prepare +EXPORT_SYMBOL vmlinux 0x89b5ef90 unregister_quota_format +EXPORT_SYMBOL vmlinux 0x89be5a88 dcache_readdir +EXPORT_SYMBOL vmlinux 0x89c5a8be smu_get_sdb_partition +EXPORT_SYMBOL vmlinux 0x89ccd967 jbd2_journal_set_triggers +EXPORT_SYMBOL vmlinux 0x89d5538d fb_pad_aligned_buffer +EXPORT_SYMBOL vmlinux 0x89fff7db skb_clone_sk +EXPORT_SYMBOL vmlinux 0x8a06c546 unregister_qdisc +EXPORT_SYMBOL vmlinux 0x8a104a63 ipv6_chk_custom_prefix +EXPORT_SYMBOL vmlinux 0x8a134840 __devm_release_region +EXPORT_SYMBOL vmlinux 0x8a166e9c bitmap_startwrite +EXPORT_SYMBOL vmlinux 0x8a1ab4ee timeval_to_jiffies +EXPORT_SYMBOL vmlinux 0x8a1ada4a revert_creds +EXPORT_SYMBOL vmlinux 0x8a2d421f of_create_pci_dev +EXPORT_SYMBOL vmlinux 0x8a3f10ff sk_stream_error +EXPORT_SYMBOL vmlinux 0x8a3f5047 posix_unblock_lock +EXPORT_SYMBOL vmlinux 0x8a490c90 rfkill_set_sw_state +EXPORT_SYMBOL vmlinux 0x8a4b4f49 netdev_crit +EXPORT_SYMBOL vmlinux 0x8a51d565 quota_send_warning +EXPORT_SYMBOL vmlinux 0x8a529a5a ps3_sb_event_receive_port_destroy +EXPORT_SYMBOL vmlinux 0x8a5c5fb6 dev_notice +EXPORT_SYMBOL vmlinux 0x8a6af65c kstrtoul_from_user +EXPORT_SYMBOL vmlinux 0x8a6e05de tcf_hash_insert +EXPORT_SYMBOL vmlinux 0x8a7d1c31 high_memory +EXPORT_SYMBOL vmlinux 0x8a7dae72 skb_copy_expand +EXPORT_SYMBOL vmlinux 0x8a7f2639 pmac_resume_agp_for_card +EXPORT_SYMBOL vmlinux 0x8a99a016 mempool_free_slab +EXPORT_SYMBOL vmlinux 0x8a9cef2a _lv1_allocate_device_dma_region +EXPORT_SYMBOL vmlinux 0x8ab65186 mmc_power_save_host +EXPORT_SYMBOL vmlinux 0x8ad61258 dev_close +EXPORT_SYMBOL vmlinux 0x8add4ba7 vm_insert_mixed +EXPORT_SYMBOL vmlinux 0x8ade14a1 input_event +EXPORT_SYMBOL vmlinux 0x8ae9dfc3 __pci_enable_wake +EXPORT_SYMBOL vmlinux 0x8aff839f param_get_invbool +EXPORT_SYMBOL vmlinux 0x8b07c40b __brelse +EXPORT_SYMBOL vmlinux 0x8b35e873 sg_last +EXPORT_SYMBOL vmlinux 0x8b43159b register_cpu_notifier +EXPORT_SYMBOL vmlinux 0x8b618d08 overflowuid +EXPORT_SYMBOL vmlinux 0x8b8059bd in_group_p +EXPORT_SYMBOL vmlinux 0x8b9588f3 kmem_cache_destroy +EXPORT_SYMBOL vmlinux 0x8ba97755 __bio_clone_fast +EXPORT_SYMBOL vmlinux 0x8bb10f93 atomic_dec_and_mutex_lock +EXPORT_SYMBOL vmlinux 0x8bbfb599 kfree_skb +EXPORT_SYMBOL vmlinux 0x8bc7e852 f_setown +EXPORT_SYMBOL vmlinux 0x8be94431 textsearch_unregister +EXPORT_SYMBOL vmlinux 0x8bf1e03d udp_push_pending_frames +EXPORT_SYMBOL vmlinux 0x8bf2ae1f fsl_lbc_addr +EXPORT_SYMBOL vmlinux 0x8bf65b8c vfs_whiteout +EXPORT_SYMBOL vmlinux 0x8bfe6647 poll_initwait +EXPORT_SYMBOL vmlinux 0x8c121cd7 devm_iounmap +EXPORT_SYMBOL vmlinux 0x8c13b580 unregister_framebuffer +EXPORT_SYMBOL vmlinux 0x8c183cbe iowrite16 +EXPORT_SYMBOL vmlinux 0x8c275b5b param_ops_ullong +EXPORT_SYMBOL vmlinux 0x8c58139e bdev_read_only +EXPORT_SYMBOL vmlinux 0x8c637d43 irq_cpu_rmap_add +EXPORT_SYMBOL vmlinux 0x8c85cd32 bio_split +EXPORT_SYMBOL vmlinux 0x8c8d79c0 _lv1_gpu_context_iomap +EXPORT_SYMBOL vmlinux 0x8c917c62 abx500_get_register_interruptible +EXPORT_SYMBOL vmlinux 0x8c9a749f __quota_error +EXPORT_SYMBOL vmlinux 0x8c9e1cd2 misc_deregister +EXPORT_SYMBOL vmlinux 0x8cb21fc8 backlight_device_register +EXPORT_SYMBOL vmlinux 0x8cb39f62 of_find_node_by_type +EXPORT_SYMBOL vmlinux 0x8cbd1399 blkdev_reread_part +EXPORT_SYMBOL vmlinux 0x8cc79cab iowrite16_rep +EXPORT_SYMBOL vmlinux 0x8ceb65f8 simple_dentry_operations +EXPORT_SYMBOL vmlinux 0x8cfd24c5 cdrom_mode_select +EXPORT_SYMBOL vmlinux 0x8d015dd4 __bswapdi2 +EXPORT_SYMBOL vmlinux 0x8d094c4c inet6_add_offload +EXPORT_SYMBOL vmlinux 0x8d0bd2a0 up_read +EXPORT_SYMBOL vmlinux 0x8d22ca80 devm_kvasprintf +EXPORT_SYMBOL vmlinux 0x8d489deb vga_client_register +EXPORT_SYMBOL vmlinux 0x8d506d8e in6_dev_finish_destroy +EXPORT_SYMBOL vmlinux 0x8d551bef sysctl_tcp_rmem +EXPORT_SYMBOL vmlinux 0x8d55bb8a qid_eq +EXPORT_SYMBOL vmlinux 0x8d73278e hex_asc_upper +EXPORT_SYMBOL vmlinux 0x8d944cbb copy_in_user +EXPORT_SYMBOL vmlinux 0x8d9d7420 scsi_host_lookup +EXPORT_SYMBOL vmlinux 0x8d9fa09f mutex_unlock +EXPORT_SYMBOL vmlinux 0x8da55c34 dev_mc_flush +EXPORT_SYMBOL vmlinux 0x8dadd07c end_buffer_read_sync +EXPORT_SYMBOL vmlinux 0x8dbf865e blk_mq_map_queue +EXPORT_SYMBOL vmlinux 0x8dcb112d genphy_config_init +EXPORT_SYMBOL vmlinux 0x8ddbaf53 of_graph_get_port_by_id +EXPORT_SYMBOL vmlinux 0x8de0b5ac mempool_create +EXPORT_SYMBOL vmlinux 0x8de2fbc5 _lv1_get_virtual_uart_param +EXPORT_SYMBOL vmlinux 0x8deb0fc8 find_get_pages_tag +EXPORT_SYMBOL vmlinux 0x8df92f66 memchr_inv +EXPORT_SYMBOL vmlinux 0x8e099a45 pagecache_get_page +EXPORT_SYMBOL vmlinux 0x8e09eed0 tcp_enter_cwr +EXPORT_SYMBOL vmlinux 0x8e0c191b find_get_entry +EXPORT_SYMBOL vmlinux 0x8e26b629 __nla_reserve_nohdr +EXPORT_SYMBOL vmlinux 0x8e2bdf53 tcp_proc_unregister +EXPORT_SYMBOL vmlinux 0x8e3dbaff kobject_del +EXPORT_SYMBOL vmlinux 0x8e6debb8 sock_alloc_file +EXPORT_SYMBOL vmlinux 0x8e8252a5 __register_nls +EXPORT_SYMBOL vmlinux 0x8ea5e798 gnet_stats_start_copy_compat +EXPORT_SYMBOL vmlinux 0x8ea8cb8c nf_ip_checksum +EXPORT_SYMBOL vmlinux 0x8ec04552 _raw_spin_trylock_bh +EXPORT_SYMBOL vmlinux 0x8eea1bc9 smu_poll +EXPORT_SYMBOL vmlinux 0x8ef1a105 remap_vmalloc_range_partial +EXPORT_SYMBOL vmlinux 0x8ef705e0 __alloc_pages_nodemask +EXPORT_SYMBOL vmlinux 0x8f3820a1 vfs_read +EXPORT_SYMBOL vmlinux 0x8f3e53fc nf_log_packet +EXPORT_SYMBOL vmlinux 0x8f52a6af vlan_ioctl_set +EXPORT_SYMBOL vmlinux 0x8f5fec87 dquot_get_dqblk +EXPORT_SYMBOL vmlinux 0x8f710b60 led_set_brightness +EXPORT_SYMBOL vmlinux 0x8f7b0ee4 import_iovec +EXPORT_SYMBOL vmlinux 0x8f85f835 prepare_to_wait_exclusive +EXPORT_SYMBOL vmlinux 0x8f97b9d3 pci_domain_nr +EXPORT_SYMBOL vmlinux 0x8f9d0a1e scsi_register_driver +EXPORT_SYMBOL vmlinux 0x8fc15bf6 iommu_tbl_range_free +EXPORT_SYMBOL vmlinux 0x8fc80a05 __get_user_pages +EXPORT_SYMBOL vmlinux 0x8fe45842 __neigh_set_probe_once +EXPORT_SYMBOL vmlinux 0x9009e742 empty_aops +EXPORT_SYMBOL vmlinux 0x90153052 dquot_set_dqinfo +EXPORT_SYMBOL vmlinux 0x903851ea pci_scan_bridge +EXPORT_SYMBOL vmlinux 0x903c7ec6 vlan_vids_add_by_dev +EXPORT_SYMBOL vmlinux 0x904826a8 call_usermodehelper_exec +EXPORT_SYMBOL vmlinux 0x904ac213 devm_backlight_device_unregister +EXPORT_SYMBOL vmlinux 0x905f1d2f km_is_alive +EXPORT_SYMBOL vmlinux 0x9088d636 inet_sk_rx_dst_set +EXPORT_SYMBOL vmlinux 0x9099f4e9 compat_ip_getsockopt +EXPORT_SYMBOL vmlinux 0x90a62ba4 compat_mc_setsockopt +EXPORT_SYMBOL vmlinux 0x90b5e19f devm_backlight_device_register +EXPORT_SYMBOL vmlinux 0x90c8d932 sget +EXPORT_SYMBOL vmlinux 0x90cab02a mb_cache_entry_release +EXPORT_SYMBOL vmlinux 0x90d676b5 fifo_create_dflt +EXPORT_SYMBOL vmlinux 0x90d975cc pci_request_region +EXPORT_SYMBOL vmlinux 0x90ddbaef max8925_bulk_read +EXPORT_SYMBOL vmlinux 0x90e1fdb9 vfs_path_lookup +EXPORT_SYMBOL vmlinux 0x9100f08b blk_delay_queue +EXPORT_SYMBOL vmlinux 0x91201cef _lv1_enable_logical_spe +EXPORT_SYMBOL vmlinux 0x912557ce rtas_busy_delay +EXPORT_SYMBOL vmlinux 0x913011c4 touchscreen_parse_of_params +EXPORT_SYMBOL vmlinux 0x913f3497 proc_mkdir +EXPORT_SYMBOL vmlinux 0x91417ff1 mipi_dsi_dcs_read +EXPORT_SYMBOL vmlinux 0x91439b00 pci_clear_master +EXPORT_SYMBOL vmlinux 0x91463b1d kstrtos16 +EXPORT_SYMBOL vmlinux 0x915e1208 tb_ticks_per_usec +EXPORT_SYMBOL vmlinux 0x9166fada strncpy +EXPORT_SYMBOL vmlinux 0x9168c033 rtas_get_sensor +EXPORT_SYMBOL vmlinux 0x916f2a11 devm_request_resource +EXPORT_SYMBOL vmlinux 0x91715312 sprintf +EXPORT_SYMBOL vmlinux 0x918fc8fd __blk_end_request_all +EXPORT_SYMBOL vmlinux 0x919d1163 tty_termios_baud_rate +EXPORT_SYMBOL vmlinux 0x91ac822f vscnprintf +EXPORT_SYMBOL vmlinux 0x91b9fb69 get_cached_acl_rcu +EXPORT_SYMBOL vmlinux 0x91c4feca _lv1_unmap_htab +EXPORT_SYMBOL vmlinux 0x91c95418 fddi_type_trans +EXPORT_SYMBOL vmlinux 0x91d6b3fc input_set_keycode +EXPORT_SYMBOL vmlinux 0x91d85e34 request_key_async +EXPORT_SYMBOL vmlinux 0x91e0cb73 of_phy_attach +EXPORT_SYMBOL vmlinux 0x91f8cab0 xfrm6_input_addr +EXPORT_SYMBOL vmlinux 0x92377518 flow_cache_lookup +EXPORT_SYMBOL vmlinux 0x923b1276 dmaengine_get +EXPORT_SYMBOL vmlinux 0x923d62d1 block_write_end +EXPORT_SYMBOL vmlinux 0x923e1405 ppp_dev_name +EXPORT_SYMBOL vmlinux 0x9291cd3b memdup_user +EXPORT_SYMBOL vmlinux 0x92a9c60c time_to_tm +EXPORT_SYMBOL vmlinux 0x92d0d722 pci_platform_rom +EXPORT_SYMBOL vmlinux 0x92d543bb d_rehash +EXPORT_SYMBOL vmlinux 0x92d87b62 elv_rb_find +EXPORT_SYMBOL vmlinux 0x92e4d2fe flow_hash_from_keys +EXPORT_SYMBOL vmlinux 0x92e87bca phy_start_interrupts +EXPORT_SYMBOL vmlinux 0x92f17d4d tcp_proto_cgroup +EXPORT_SYMBOL vmlinux 0x92fa5abb vme_lm_detach +EXPORT_SYMBOL vmlinux 0x92fbe07e of_cpufreq_power_cooling_register +EXPORT_SYMBOL vmlinux 0x93022ba6 __scsi_format_command +EXPORT_SYMBOL vmlinux 0x9305f8e6 cpufreq_get +EXPORT_SYMBOL vmlinux 0x93077c35 fbcon_rotate_ud +EXPORT_SYMBOL vmlinux 0x930dc726 inet_recvmsg +EXPORT_SYMBOL vmlinux 0x93337e9d memory_cgrp_subsys +EXPORT_SYMBOL vmlinux 0x9335fea9 mipi_dsi_driver_register_full +EXPORT_SYMBOL vmlinux 0x93448c57 screen_info +EXPORT_SYMBOL vmlinux 0x93463a7b dev_mc_init +EXPORT_SYMBOL vmlinux 0x93507f1c _lv1_gpu_memory_allocate +EXPORT_SYMBOL vmlinux 0x9366510f skb_prepare_seq_read +EXPORT_SYMBOL vmlinux 0x937733e3 qid_valid +EXPORT_SYMBOL vmlinux 0x93898a48 pci_try_set_mwi +EXPORT_SYMBOL vmlinux 0x939db98e from_kgid_munged +EXPORT_SYMBOL vmlinux 0x93abefa4 vm_iomap_memory +EXPORT_SYMBOL vmlinux 0x93b359dc __netlink_ns_capable +EXPORT_SYMBOL vmlinux 0x93b3fc74 register_dcbevent_notifier +EXPORT_SYMBOL vmlinux 0x93c5d4f2 pfifo_qdisc_ops +EXPORT_SYMBOL vmlinux 0x93fbb068 blk_queue_max_hw_sectors +EXPORT_SYMBOL vmlinux 0x93fca811 __get_free_pages +EXPORT_SYMBOL vmlinux 0x9402a6a5 scsilun_to_int +EXPORT_SYMBOL vmlinux 0x943dc80f csum_and_copy_to_user +EXPORT_SYMBOL vmlinux 0x9451e527 shrink_dcache_sb +EXPORT_SYMBOL vmlinux 0x9454ab76 tty_vhangup +EXPORT_SYMBOL vmlinux 0x945a9e3d md_cluster_mod +EXPORT_SYMBOL vmlinux 0x945de4af nvdimm_revalidate_disk +EXPORT_SYMBOL vmlinux 0x9460b334 scsi_rescan_device +EXPORT_SYMBOL vmlinux 0x94665cc3 __tcf_em_tree_match +EXPORT_SYMBOL vmlinux 0x94961283 vunmap +EXPORT_SYMBOL vmlinux 0x94977c5a netif_rx_ni +EXPORT_SYMBOL vmlinux 0x94a1c788 blk_peek_request +EXPORT_SYMBOL vmlinux 0x94bede6a nd_device_register +EXPORT_SYMBOL vmlinux 0x94c42506 max8998_read_reg +EXPORT_SYMBOL vmlinux 0x94f86da8 devm_get_gpiod_from_child +EXPORT_SYMBOL vmlinux 0x9514151a _mcount +EXPORT_SYMBOL vmlinux 0x9515a41a agp_generic_destroy_page +EXPORT_SYMBOL vmlinux 0x9524b0ae _outsb +EXPORT_SYMBOL vmlinux 0x952f8a9e end_page_writeback +EXPORT_SYMBOL vmlinux 0x9545af6d tasklet_init +EXPORT_SYMBOL vmlinux 0x956b00fe xfrm_state_walk +EXPORT_SYMBOL vmlinux 0x957087d3 __ip4_datagram_connect +EXPORT_SYMBOL vmlinux 0x957585d2 phy_device_create +EXPORT_SYMBOL vmlinux 0x9577531e blk_alloc_queue_node +EXPORT_SYMBOL vmlinux 0x9583890c netdev_printk +EXPORT_SYMBOL vmlinux 0x95a0bbfb simple_open +EXPORT_SYMBOL vmlinux 0x95ab57e5 __set_page_dirty_nobuffers +EXPORT_SYMBOL vmlinux 0x95ac8140 cdrom_get_last_written +EXPORT_SYMBOL vmlinux 0x95c523b9 filemap_page_mkwrite +EXPORT_SYMBOL vmlinux 0x95cbe372 jbd2_journal_abort +EXPORT_SYMBOL vmlinux 0x95ffa42c page_symlink +EXPORT_SYMBOL vmlinux 0x96182958 security_sb_clone_mnt_opts +EXPORT_SYMBOL vmlinux 0x9628c0ab generic_pipe_buf_release +EXPORT_SYMBOL vmlinux 0x9636c70f lock_fb_info +EXPORT_SYMBOL vmlinux 0x96375184 posix_acl_chmod +EXPORT_SYMBOL vmlinux 0x96578b2f i2c_clients_command +EXPORT_SYMBOL vmlinux 0x9666f86a of_device_register +EXPORT_SYMBOL vmlinux 0x968a0c6f inet_sock_destruct +EXPORT_SYMBOL vmlinux 0x9694af68 __page_symlink +EXPORT_SYMBOL vmlinux 0x969987fc lockref_get_not_dead +EXPORT_SYMBOL vmlinux 0x96a756f7 lock_rename +EXPORT_SYMBOL vmlinux 0x96b29254 strncasecmp +EXPORT_SYMBOL vmlinux 0x96b69483 mipi_dsi_dcs_exit_sleep_mode +EXPORT_SYMBOL vmlinux 0x96cd2b04 scsi_sense_key_string +EXPORT_SYMBOL vmlinux 0x96e35bb0 mpage_readpages +EXPORT_SYMBOL vmlinux 0x9738bf6b of_mdio_find_bus +EXPORT_SYMBOL vmlinux 0x9748927f _outsw_ns +EXPORT_SYMBOL vmlinux 0x97540a2b inetpeer_invalidate_tree +EXPORT_SYMBOL vmlinux 0x9754ec10 radix_tree_preload +EXPORT_SYMBOL vmlinux 0x9756c8b4 iov_iter_bvec +EXPORT_SYMBOL vmlinux 0x976133a3 generic_file_write_iter +EXPORT_SYMBOL vmlinux 0x976e014f _lv1_map_device_mmio_region +EXPORT_SYMBOL vmlinux 0x97868aef __kfifo_alloc +EXPORT_SYMBOL vmlinux 0x978f63cd mipi_dsi_set_maximum_return_packet_size +EXPORT_SYMBOL vmlinux 0x97999817 rfkill_set_hw_state +EXPORT_SYMBOL vmlinux 0x97a57333 crc_t10dif_update +EXPORT_SYMBOL vmlinux 0x97ba1af0 tcp_hashinfo +EXPORT_SYMBOL vmlinux 0x97cf6852 scsi_execute_req_flags +EXPORT_SYMBOL vmlinux 0x97e3c7f6 tcp_v4_mtu_reduced +EXPORT_SYMBOL vmlinux 0x97f03d6f vio_cmo_entitlement_update +EXPORT_SYMBOL vmlinux 0x97fdbc21 filemap_fdatawrite_range +EXPORT_SYMBOL vmlinux 0x98177648 _lv1_set_lpm_interval +EXPORT_SYMBOL vmlinux 0x9829fc11 __kfifo_out_peek_r +EXPORT_SYMBOL vmlinux 0x982e4c5b devm_free_irq +EXPORT_SYMBOL vmlinux 0x983b3570 serio_rescan +EXPORT_SYMBOL vmlinux 0x986e6135 fb_pad_unaligned_buffer +EXPORT_SYMBOL vmlinux 0x9878b292 udp_sendmsg +EXPORT_SYMBOL vmlinux 0x987fc124 neigh_proc_dointvec_ms_jiffies +EXPORT_SYMBOL vmlinux 0x9898fb63 __cleancache_invalidate_inode +EXPORT_SYMBOL vmlinux 0x989fddd4 fbcon_rotate_ccw +EXPORT_SYMBOL vmlinux 0x98c68c41 __gnet_stats_copy_basic +EXPORT_SYMBOL vmlinux 0x98c9c612 blk_register_region +EXPORT_SYMBOL vmlinux 0x98cf60b3 strlen +EXPORT_SYMBOL vmlinux 0x98d018b6 truncate_setsize +EXPORT_SYMBOL vmlinux 0x99195078 vsnprintf +EXPORT_SYMBOL vmlinux 0x991bee21 skb_dequeue_tail +EXPORT_SYMBOL vmlinux 0x991fe32f giveup_vsx +EXPORT_SYMBOL vmlinux 0x992efb0b mark_buffer_dirty +EXPORT_SYMBOL vmlinux 0x9930c610 vm_insert_pfn +EXPORT_SYMBOL vmlinux 0x9939eba0 backlight_unregister_notifier +EXPORT_SYMBOL vmlinux 0x994527bb devm_gpiod_get_array_optional +EXPORT_SYMBOL vmlinux 0x994a10b1 read_dev_sector +EXPORT_SYMBOL vmlinux 0x99517682 udp_encap_enable +EXPORT_SYMBOL vmlinux 0x99591a7a ipv6_ext_hdr +EXPORT_SYMBOL vmlinux 0x995d23c0 input_handler_for_each_handle +EXPORT_SYMBOL vmlinux 0x99696521 kern_path +EXPORT_SYMBOL vmlinux 0x996b3772 agp_generic_free_gatt_table +EXPORT_SYMBOL vmlinux 0x996c4ff2 skb_abort_seq_read +EXPORT_SYMBOL vmlinux 0x998f28e6 iov_iter_get_pages_alloc +EXPORT_SYMBOL vmlinux 0x9994c0ca ps2_is_keyboard_id +EXPORT_SYMBOL vmlinux 0x99964a02 start_tty +EXPORT_SYMBOL vmlinux 0x9999f94f vfs_iter_read +EXPORT_SYMBOL vmlinux 0x999e8297 vfree +EXPORT_SYMBOL vmlinux 0x99afe916 _raw_write_unlock_bh +EXPORT_SYMBOL vmlinux 0x99c24cfe _lv1_free_device_dma_region +EXPORT_SYMBOL vmlinux 0x99c2b106 cpufreq_global_kobject +EXPORT_SYMBOL vmlinux 0x99cdc86b sysctl_tcp_reordering +EXPORT_SYMBOL vmlinux 0x99d3a43c dm_table_get_size +EXPORT_SYMBOL vmlinux 0x99daa9bf try_offline_node +EXPORT_SYMBOL vmlinux 0x99e32056 blk_queue_dma_alignment +EXPORT_SYMBOL vmlinux 0x99e348c6 ip6_route_me_harder +EXPORT_SYMBOL vmlinux 0x99edaff4 serio_interrupt +EXPORT_SYMBOL vmlinux 0x9a034f21 set_page_dirty +EXPORT_SYMBOL vmlinux 0x9a1dfd65 strpbrk +EXPORT_SYMBOL vmlinux 0x9a1fc4b4 jiffies_to_timeval +EXPORT_SYMBOL vmlinux 0x9a1ffb92 _lv1_clear_spe_interrupt_status +EXPORT_SYMBOL vmlinux 0x9a275f50 of_get_child_by_name +EXPORT_SYMBOL vmlinux 0x9a5a3c71 bio_chain +EXPORT_SYMBOL vmlinux 0x9a5ffc64 __tracepoint_kmem_cache_alloc +EXPORT_SYMBOL vmlinux 0x9a6c2531 pasemi_dma_init +EXPORT_SYMBOL vmlinux 0x9a8c874b invalidate_mapping_pages +EXPORT_SYMBOL vmlinux 0x9ae78494 inode_permission +EXPORT_SYMBOL vmlinux 0x9aeb07e8 vme_lm_attach +EXPORT_SYMBOL vmlinux 0x9af6ce4f param_ops_uint +EXPORT_SYMBOL vmlinux 0x9b1cc826 __mem_cgroup_count_vm_event +EXPORT_SYMBOL vmlinux 0x9b2f5e66 mipi_dsi_attach +EXPORT_SYMBOL vmlinux 0x9b33e0d7 unregister_dcbevent_notifier +EXPORT_SYMBOL vmlinux 0x9b388444 get_zeroed_page +EXPORT_SYMBOL vmlinux 0x9b6540cf tcp_openreq_init_rwin +EXPORT_SYMBOL vmlinux 0x9b7d7d94 bitmap_end_sync +EXPORT_SYMBOL vmlinux 0x9b9e05f9 alloc_cpu_rmap +EXPORT_SYMBOL vmlinux 0x9ba4842c uart_unregister_driver +EXPORT_SYMBOL vmlinux 0x9ba7089d argv_split +EXPORT_SYMBOL vmlinux 0x9ba947c2 tcp_close +EXPORT_SYMBOL vmlinux 0x9bb9ebc3 sockfd_lookup +EXPORT_SYMBOL vmlinux 0x9be7bde4 security_tun_dev_attach +EXPORT_SYMBOL vmlinux 0x9bf7a52f __nla_reserve +EXPORT_SYMBOL vmlinux 0x9c0e0050 dev_alert +EXPORT_SYMBOL vmlinux 0x9c2cee8e cdev_add +EXPORT_SYMBOL vmlinux 0x9c2d857d jbd2_journal_check_used_features +EXPORT_SYMBOL vmlinux 0x9c491f60 sg_alloc_table +EXPORT_SYMBOL vmlinux 0x9c8a05ef mdiobus_read +EXPORT_SYMBOL vmlinux 0x9cab34a6 rfkill_set_led_trigger_name +EXPORT_SYMBOL vmlinux 0x9cb191b9 path_put +EXPORT_SYMBOL vmlinux 0x9cd8a14d jbd2_journal_init_inode +EXPORT_SYMBOL vmlinux 0x9d0d6206 unregister_netdevice_notifier +EXPORT_SYMBOL vmlinux 0x9d105893 pci_map_rom +EXPORT_SYMBOL vmlinux 0x9d14983a ppc_enable_pmcs +EXPORT_SYMBOL vmlinux 0x9d3aa376 blk_iopoll_init +EXPORT_SYMBOL vmlinux 0x9d3d47e4 mipi_dsi_generic_write +EXPORT_SYMBOL vmlinux 0x9d5663bb vfs_readv +EXPORT_SYMBOL vmlinux 0x9d60ad68 pci_bus_set_ops +EXPORT_SYMBOL vmlinux 0x9d6a54c2 flex_array_get_ptr +EXPORT_SYMBOL vmlinux 0x9d778392 blk_queue_io_opt +EXPORT_SYMBOL vmlinux 0x9d7ce8dd _raw_spin_trylock +EXPORT_SYMBOL vmlinux 0x9d8ecb4f generic_file_llseek_size +EXPORT_SYMBOL vmlinux 0x9d9dfc18 load_fp_state +EXPORT_SYMBOL vmlinux 0x9da05e10 mipi_dsi_create_packet +EXPORT_SYMBOL vmlinux 0x9db6e68c bdi_set_max_ratio +EXPORT_SYMBOL vmlinux 0x9db7be81 reservation_object_reserve_shared +EXPORT_SYMBOL vmlinux 0x9dbc8e5a blk_alloc_queue +EXPORT_SYMBOL vmlinux 0x9dc7b64d ipv6_mc_check_mld +EXPORT_SYMBOL vmlinux 0x9e0c711d vzalloc_node +EXPORT_SYMBOL vmlinux 0x9e2f8c90 lz4_decompress_unknownoutputsize +EXPORT_SYMBOL vmlinux 0x9e3198f0 xfrm_state_delete_tunnel +EXPORT_SYMBOL vmlinux 0x9e4faeef dm_io_client_destroy +EXPORT_SYMBOL vmlinux 0x9e5b21d4 agp_generic_alloc_page +EXPORT_SYMBOL vmlinux 0x9e61bb05 set_freezable +EXPORT_SYMBOL vmlinux 0x9e638633 macio_dev_get +EXPORT_SYMBOL vmlinux 0x9e6bb5e9 md_flush_request +EXPORT_SYMBOL vmlinux 0x9e763530 reciprocal_value +EXPORT_SYMBOL vmlinux 0x9e97375d rtas_busy_delay_time +EXPORT_SYMBOL vmlinux 0x9ebd4c04 adjust_resource +EXPORT_SYMBOL vmlinux 0x9ece35dd seq_put_decimal_ull +EXPORT_SYMBOL vmlinux 0x9ecfa805 scsi_print_sense +EXPORT_SYMBOL vmlinux 0x9ee78669 _lv1_write_virtual_uart +EXPORT_SYMBOL vmlinux 0x9effb51b inet_sk_rebuild_header +EXPORT_SYMBOL vmlinux 0x9f13ae99 dquot_transfer +EXPORT_SYMBOL vmlinux 0x9f150f11 __sb_end_write +EXPORT_SYMBOL vmlinux 0x9f273551 rawv6_mh_filter_unregister +EXPORT_SYMBOL vmlinux 0x9f281ab0 jbd2_journal_lock_updates +EXPORT_SYMBOL vmlinux 0x9f46ced8 __sw_hweight64 +EXPORT_SYMBOL vmlinux 0x9f7c1be8 skb_flow_dissector_init +EXPORT_SYMBOL vmlinux 0x9f911629 idr_alloc_cyclic +EXPORT_SYMBOL vmlinux 0x9f984513 strrchr +EXPORT_SYMBOL vmlinux 0x9f9e5959 simple_transaction_set +EXPORT_SYMBOL vmlinux 0x9fa3bd98 xfrm_policy_walk_done +EXPORT_SYMBOL vmlinux 0x9fd8303c __sk_backlog_rcv +EXPORT_SYMBOL vmlinux 0x9fdecc31 unregister_netdevice_many +EXPORT_SYMBOL vmlinux 0x9ffa3a75 netdev_max_backlog +EXPORT_SYMBOL vmlinux 0x9ffd3b13 xfrm_register_mode +EXPORT_SYMBOL vmlinux 0xa02bd0df ndisc_mc_map +EXPORT_SYMBOL vmlinux 0xa02ffac1 d_lookup +EXPORT_SYMBOL vmlinux 0xa0436e98 in6addr_linklocal_allnodes +EXPORT_SYMBOL vmlinux 0xa04a01bd qdisc_class_hash_insert +EXPORT_SYMBOL vmlinux 0xa04a4250 sk_page_frag_refill +EXPORT_SYMBOL vmlinux 0xa056e103 pci_request_regions +EXPORT_SYMBOL vmlinux 0xa05c03df mempool_kmalloc +EXPORT_SYMBOL vmlinux 0xa05d01b2 mipi_dsi_driver_unregister +EXPORT_SYMBOL vmlinux 0xa068cf32 scsi_add_device +EXPORT_SYMBOL vmlinux 0xa07a37f0 memchr +EXPORT_SYMBOL vmlinux 0xa07ed110 xz_dec_init +EXPORT_SYMBOL vmlinux 0xa084749a __bitmap_or +EXPORT_SYMBOL vmlinux 0xa0a6d6b8 twl6030_mmc_card_detect +EXPORT_SYMBOL vmlinux 0xa0adbf93 i2c_smbus_write_byte +EXPORT_SYMBOL vmlinux 0xa0b04675 vmalloc_32 +EXPORT_SYMBOL vmlinux 0xa0b2d5e3 kern_unmount +EXPORT_SYMBOL vmlinux 0xa0bb29a7 generic_read_dir +EXPORT_SYMBOL vmlinux 0xa0be2957 jbd2_journal_wipe +EXPORT_SYMBOL vmlinux 0xa0dad88e netdev_adjacent_get_private +EXPORT_SYMBOL vmlinux 0xa0de74a6 blk_init_tags +EXPORT_SYMBOL vmlinux 0xa0ebd14c sysctl_tcp_mem +EXPORT_SYMBOL vmlinux 0xa0fbac79 wake_up_bit +EXPORT_SYMBOL vmlinux 0xa0fdfee1 xfrm_find_acq +EXPORT_SYMBOL vmlinux 0xa0ff74d6 udp_memory_allocated +EXPORT_SYMBOL vmlinux 0xa108be30 __frontswap_store +EXPORT_SYMBOL vmlinux 0xa108eb4d sysctl_optmem_max +EXPORT_SYMBOL vmlinux 0xa10a0b10 invalidate_inode_buffers +EXPORT_SYMBOL vmlinux 0xa120d33c tty_unregister_ldisc +EXPORT_SYMBOL vmlinux 0xa121451d ata_dev_printk +EXPORT_SYMBOL vmlinux 0xa13b8ec4 blk_execute_rq +EXPORT_SYMBOL vmlinux 0xa1415618 twl6030_interrupt_unmask +EXPORT_SYMBOL vmlinux 0xa1459f7e dev_get_phys_port_name +EXPORT_SYMBOL vmlinux 0xa14f3d8c ewma_add +EXPORT_SYMBOL vmlinux 0xa165fdb5 ipv6_setsockopt +EXPORT_SYMBOL vmlinux 0xa1668e4d devfreq_register_opp_notifier +EXPORT_SYMBOL vmlinux 0xa19f44cf request_key_with_auxdata +EXPORT_SYMBOL vmlinux 0xa1b759ce fb_add_videomode +EXPORT_SYMBOL vmlinux 0xa1c76e0a _cond_resched +EXPORT_SYMBOL vmlinux 0xa1c7cafb bitmap_close_sync +EXPORT_SYMBOL vmlinux 0xa1c99385 __init_waitqueue_head +EXPORT_SYMBOL vmlinux 0xa1ea2868 cros_ec_query_all +EXPORT_SYMBOL vmlinux 0xa1f8fe75 wait_for_completion_killable_timeout +EXPORT_SYMBOL vmlinux 0xa202a8e5 kmalloc_order_trace +EXPORT_SYMBOL vmlinux 0xa209451c bitmap_fold +EXPORT_SYMBOL vmlinux 0xa2127cdc pasemi_dma_alloc_flag +EXPORT_SYMBOL vmlinux 0xa214f345 mmc_put_card +EXPORT_SYMBOL vmlinux 0xa23d34f5 blk_rq_set_block_pc +EXPORT_SYMBOL vmlinux 0xa2465322 _lv1_get_version_info +EXPORT_SYMBOL vmlinux 0xa24969ac devfreq_resume_device +EXPORT_SYMBOL vmlinux 0xa24b5e15 napi_get_frags +EXPORT_SYMBOL vmlinux 0xa25d0748 redirty_page_for_writepage +EXPORT_SYMBOL vmlinux 0xa26f9fdd mmc_gpio_get_ro +EXPORT_SYMBOL vmlinux 0xa26fed62 blk_mq_alloc_request +EXPORT_SYMBOL vmlinux 0xa2848c50 ecryptfs_get_auth_tok_key +EXPORT_SYMBOL vmlinux 0xa28a5601 neigh_changeaddr +EXPORT_SYMBOL vmlinux 0xa296cfe8 end_buffer_write_sync +EXPORT_SYMBOL vmlinux 0xa2a335bd vme_alloc_consistent +EXPORT_SYMBOL vmlinux 0xa2bbed37 crash_shutdown_register +EXPORT_SYMBOL vmlinux 0xa2cac362 jbd2_journal_stop +EXPORT_SYMBOL vmlinux 0xa2f04796 msi_bitmap_alloc_hwirqs +EXPORT_SYMBOL vmlinux 0xa2fbe249 sk_stream_wait_close +EXPORT_SYMBOL vmlinux 0xa2fdbcbe fence_default_wait +EXPORT_SYMBOL vmlinux 0xa303d1ff dm_ratelimit_state +EXPORT_SYMBOL vmlinux 0xa31310da get_agp_version +EXPORT_SYMBOL vmlinux 0xa31a2560 of_scan_pci_bridge +EXPORT_SYMBOL vmlinux 0xa31bdf07 vme_master_set +EXPORT_SYMBOL vmlinux 0xa31f2673 mark_buffer_dirty_inode +EXPORT_SYMBOL vmlinux 0xa3372a61 bio_flush_dcache_pages +EXPORT_SYMBOL vmlinux 0xa3401eeb netdev_alert +EXPORT_SYMBOL vmlinux 0xa348667b sys_copyarea +EXPORT_SYMBOL vmlinux 0xa352c823 locks_free_lock +EXPORT_SYMBOL vmlinux 0xa368734d truncate_inode_pages_final +EXPORT_SYMBOL vmlinux 0xa37f643d xfrm_sad_getinfo +EXPORT_SYMBOL vmlinux 0xa38fcac6 pcim_iounmap_regions +EXPORT_SYMBOL vmlinux 0xa39b4cf2 udelay +EXPORT_SYMBOL vmlinux 0xa3abc422 abort_exclusive_wait +EXPORT_SYMBOL vmlinux 0xa3b72890 pci_find_parent_resource +EXPORT_SYMBOL vmlinux 0xa3b99e91 dev_loopback_xmit +EXPORT_SYMBOL vmlinux 0xa3f416bf tty_port_close +EXPORT_SYMBOL vmlinux 0xa3fc3d50 __tracepoint_module_get +EXPORT_SYMBOL vmlinux 0xa3fda078 pci_request_selected_regions +EXPORT_SYMBOL vmlinux 0xa41a331f cancel_dirty_page +EXPORT_SYMBOL vmlinux 0xa4380725 pci_select_bars +EXPORT_SYMBOL vmlinux 0xa44cc6fd pcie_capability_clear_and_set_word +EXPORT_SYMBOL vmlinux 0xa4511467 crc16 +EXPORT_SYMBOL vmlinux 0xa4537853 agp_unbind_memory +EXPORT_SYMBOL vmlinux 0xa45f0d0d bio_add_pc_page +EXPORT_SYMBOL vmlinux 0xa4701e9e timekeeping_inject_offset +EXPORT_SYMBOL vmlinux 0xa47428e4 simple_transaction_release +EXPORT_SYMBOL vmlinux 0xa480c04b _lv1_gpu_context_attribute +EXPORT_SYMBOL vmlinux 0xa48e5c36 xfrm_alloc_spi +EXPORT_SYMBOL vmlinux 0xa4a94d26 find_next_bit_le +EXPORT_SYMBOL vmlinux 0xa4b45ea5 out_of_line_wait_on_bit_lock +EXPORT_SYMBOL vmlinux 0xa4b94fea iowrite8_rep +EXPORT_SYMBOL vmlinux 0xa4bed8b7 devfreq_unregister_opp_notifier +EXPORT_SYMBOL vmlinux 0xa4d4f0e6 global_cache_flush +EXPORT_SYMBOL vmlinux 0xa4d78b9d block_write_full_page +EXPORT_SYMBOL vmlinux 0xa4fa3710 rtnetlink_put_metrics +EXPORT_SYMBOL vmlinux 0xa5526619 rb_insert_color +EXPORT_SYMBOL vmlinux 0xa558f2cf of_device_is_available +EXPORT_SYMBOL vmlinux 0xa55c6830 register_sysctl_table +EXPORT_SYMBOL vmlinux 0xa5617777 led_blink_set_oneshot +EXPORT_SYMBOL vmlinux 0xa56b334d d_instantiate +EXPORT_SYMBOL vmlinux 0xa56b8ab2 flex_array_free +EXPORT_SYMBOL vmlinux 0xa590f09d mmc_set_data_timeout +EXPORT_SYMBOL vmlinux 0xa598b893 neigh_parms_alloc +EXPORT_SYMBOL vmlinux 0xa598e29c vesa_modes +EXPORT_SYMBOL vmlinux 0xa5a51eee __crc32c_le +EXPORT_SYMBOL vmlinux 0xa5b890a2 phy_register_fixup_for_uid +EXPORT_SYMBOL vmlinux 0xa5c9be1c vme_dma_list_add +EXPORT_SYMBOL vmlinux 0xa5cf6338 vio_find_node +EXPORT_SYMBOL vmlinux 0xa5fc9207 inet_del_offload +EXPORT_SYMBOL vmlinux 0xa63322c6 hdmi_audio_infoframe_pack +EXPORT_SYMBOL vmlinux 0xa650713f netpoll_parse_options +EXPORT_SYMBOL vmlinux 0xa65139f6 cont_write_begin +EXPORT_SYMBOL vmlinux 0xa65972b8 _memcpy_toio +EXPORT_SYMBOL vmlinux 0xa6711594 truncate_inode_pages +EXPORT_SYMBOL vmlinux 0xa675804c utf8s_to_utf16s +EXPORT_SYMBOL vmlinux 0xa681fe88 generate_random_uuid +EXPORT_SYMBOL vmlinux 0xa68cdafe jbd2_journal_start_reserved +EXPORT_SYMBOL vmlinux 0xa6b2b186 pcie_capability_write_dword +EXPORT_SYMBOL vmlinux 0xa6c0f13a __i2c_transfer +EXPORT_SYMBOL vmlinux 0xa6cb5724 from_kuid +EXPORT_SYMBOL vmlinux 0xa6ce472f cpu_rmap_update +EXPORT_SYMBOL vmlinux 0xa6dd825d sync_inode +EXPORT_SYMBOL vmlinux 0xa6e9d6a7 complete_request_key +EXPORT_SYMBOL vmlinux 0xa6f5a2d0 agp_put_bridge +EXPORT_SYMBOL vmlinux 0xa6ffec60 woken_wake_function +EXPORT_SYMBOL vmlinux 0xa7032584 param_set_ulong +EXPORT_SYMBOL vmlinux 0xa720678c lg_global_lock +EXPORT_SYMBOL vmlinux 0xa72a0f5b nr_online_nodes +EXPORT_SYMBOL vmlinux 0xa735db59 prandom_u32 +EXPORT_SYMBOL vmlinux 0xa742a962 udp_lib_setsockopt +EXPORT_SYMBOL vmlinux 0xa74f4e9b ida_simple_get +EXPORT_SYMBOL vmlinux 0xa76adb90 path_get +EXPORT_SYMBOL vmlinux 0xa788977d kern_path_create +EXPORT_SYMBOL vmlinux 0xa78d9eb7 slhc_uncompress +EXPORT_SYMBOL vmlinux 0xa79803e6 neigh_parms_release +EXPORT_SYMBOL vmlinux 0xa7aa37e8 sock_queue_err_skb +EXPORT_SYMBOL vmlinux 0xa7af5f74 of_gpio_simple_xlate +EXPORT_SYMBOL vmlinux 0xa7bad8b3 default_llseek +EXPORT_SYMBOL vmlinux 0xa7d70878 inet_dgram_ops +EXPORT_SYMBOL vmlinux 0xa7da6f43 agp_find_bridge +EXPORT_SYMBOL vmlinux 0xa8062e14 blk_rq_map_kern +EXPORT_SYMBOL vmlinux 0xa81a8751 netlink_set_err +EXPORT_SYMBOL vmlinux 0xa8232c78 strtobool +EXPORT_SYMBOL vmlinux 0xa829cb00 __dquot_free_space +EXPORT_SYMBOL vmlinux 0xa82c311f vm_mmap +EXPORT_SYMBOL vmlinux 0xa843805a get_unused_fd_flags +EXPORT_SYMBOL vmlinux 0xa848fd01 copy_from_iter_nocache +EXPORT_SYMBOL vmlinux 0xa85e94e9 __vio_register_driver +EXPORT_SYMBOL vmlinux 0xa8721b97 system_state +EXPORT_SYMBOL vmlinux 0xa8753d9a remap_vmalloc_range +EXPORT_SYMBOL vmlinux 0xa8a24fca eth_header_cache_update +EXPORT_SYMBOL vmlinux 0xa8b397c8 tty_flip_buffer_push +EXPORT_SYMBOL vmlinux 0xa8cbb18e inet_release +EXPORT_SYMBOL vmlinux 0xa8ced546 _lv1_net_set_interrupt_status_indicator +EXPORT_SYMBOL vmlinux 0xa8e9a7a1 skb_vlan_pop +EXPORT_SYMBOL vmlinux 0xa8f45332 of_node_get +EXPORT_SYMBOL vmlinux 0xa8fafe47 padata_add_cpu +EXPORT_SYMBOL vmlinux 0xa8fef7bb security_unix_may_send +EXPORT_SYMBOL vmlinux 0xa9002953 sg_miter_stop +EXPORT_SYMBOL vmlinux 0xa90b5977 mark_buffer_async_write +EXPORT_SYMBOL vmlinux 0xa9121272 pm860x_bulk_write +EXPORT_SYMBOL vmlinux 0xa9168676 xmit_recursion +EXPORT_SYMBOL vmlinux 0xa916b694 strnlen +EXPORT_SYMBOL vmlinux 0xa91c77b6 _lv1_end_of_interrupt +EXPORT_SYMBOL vmlinux 0xa9273e1a epapr_hypercall_start +EXPORT_SYMBOL vmlinux 0xa9279188 mb_cache_entry_insert +EXPORT_SYMBOL vmlinux 0xa93ba88e proc_doulongvec_minmax +EXPORT_SYMBOL vmlinux 0xa9564d6d pci_find_capability +EXPORT_SYMBOL vmlinux 0xa976957d bitmap_remap +EXPORT_SYMBOL vmlinux 0xa98a98a4 netdev_upper_dev_unlink +EXPORT_SYMBOL vmlinux 0xa99b39c2 prandom_bytes +EXPORT_SYMBOL vmlinux 0xa99b9b28 single_release +EXPORT_SYMBOL vmlinux 0xa9ac4bb0 uart_register_driver +EXPORT_SYMBOL vmlinux 0xa9c63b69 security_xfrm_policy_free +EXPORT_SYMBOL vmlinux 0xa9f36db9 srp_reconnect_rport +EXPORT_SYMBOL vmlinux 0xaa0073b7 __net_get_random_once +EXPORT_SYMBOL vmlinux 0xaa0edca8 pasemi_dma_alloc_fun +EXPORT_SYMBOL vmlinux 0xaa2389c2 do_splice_direct +EXPORT_SYMBOL vmlinux 0xaa2ee567 nvdimm_namespace_disk_name +EXPORT_SYMBOL vmlinux 0xaa307225 simple_unlink +EXPORT_SYMBOL vmlinux 0xaa46e87e lg_local_unlock +EXPORT_SYMBOL vmlinux 0xaa54356e swiotlb_dma_supported +EXPORT_SYMBOL vmlinux 0xaa651351 xfrm_garbage_collect +EXPORT_SYMBOL vmlinux 0xaa6ca62d kobject_add +EXPORT_SYMBOL vmlinux 0xaa6e4df5 _raw_write_lock_irqsave +EXPORT_SYMBOL vmlinux 0xaa6f23ad rfkill_get_led_trigger_name +EXPORT_SYMBOL vmlinux 0xaa9fd857 pci_unregister_driver +EXPORT_SYMBOL vmlinux 0xaad0ae78 __bitmap_shift_right +EXPORT_SYMBOL vmlinux 0xaad6d92f rfkill_init_sw_state +EXPORT_SYMBOL vmlinux 0xaadc5359 devfreq_monitor_suspend +EXPORT_SYMBOL vmlinux 0xaae25c36 blkdev_issue_write_same +EXPORT_SYMBOL vmlinux 0xaaf15afd of_graph_get_remote_port_parent +EXPORT_SYMBOL vmlinux 0xaafdc258 strcasecmp +EXPORT_SYMBOL vmlinux 0xab048e95 seq_release_private +EXPORT_SYMBOL vmlinux 0xab0d5bf1 tcp_md5_hash_header +EXPORT_SYMBOL vmlinux 0xab44d1de of_mm_gpiochip_add +EXPORT_SYMBOL vmlinux 0xab66f611 _lv1_set_lpm_trigger_control +EXPORT_SYMBOL vmlinux 0xab6bde28 sysctl_max_syn_backlog +EXPORT_SYMBOL vmlinux 0xab728061 __sk_mem_schedule +EXPORT_SYMBOL vmlinux 0xab781570 fb_get_options +EXPORT_SYMBOL vmlinux 0xab797fc5 xfrm_state_alloc +EXPORT_SYMBOL vmlinux 0xab7ac14a tty_port_free_xmit_buf +EXPORT_SYMBOL vmlinux 0xab7dada6 skb_queue_head +EXPORT_SYMBOL vmlinux 0xab92ad1e sched_autogroup_detach +EXPORT_SYMBOL vmlinux 0xabae2fc6 __wait_on_bit +EXPORT_SYMBOL vmlinux 0xabc52890 pci_assign_resource +EXPORT_SYMBOL vmlinux 0xabc6dd63 cpufreq_sysfs_create_file +EXPORT_SYMBOL vmlinux 0xabcaa577 free_anon_bdev +EXPORT_SYMBOL vmlinux 0xabef7316 __task_pid_nr_ns +EXPORT_SYMBOL vmlinux 0xabf481c5 tty_port_raise_dtr_rts +EXPORT_SYMBOL vmlinux 0xabfd3fdd unmap_mapping_range +EXPORT_SYMBOL vmlinux 0xac0ba8c1 blk_iopoll_disable +EXPORT_SYMBOL vmlinux 0xac0cd62c vme_master_request +EXPORT_SYMBOL vmlinux 0xac1a55be unregister_reboot_notifier +EXPORT_SYMBOL vmlinux 0xac1b6432 netdev_info +EXPORT_SYMBOL vmlinux 0xac1fecc4 blk_run_queue +EXPORT_SYMBOL vmlinux 0xac26b820 _raw_write_lock +EXPORT_SYMBOL vmlinux 0xac332806 __neigh_for_each_release +EXPORT_SYMBOL vmlinux 0xac43a61d new_inode +EXPORT_SYMBOL vmlinux 0xac7da89f nf_log_set +EXPORT_SYMBOL vmlinux 0xac7fb707 dev_uc_add_excl +EXPORT_SYMBOL vmlinux 0xac913c8b dget_parent +EXPORT_SYMBOL vmlinux 0xaca0fa5c neigh_lookup_nodev +EXPORT_SYMBOL vmlinux 0xacab29b7 seq_hlist_start_percpu +EXPORT_SYMBOL vmlinux 0xacbacd7c scsi_execute +EXPORT_SYMBOL vmlinux 0xacc5b5d2 csum_ipv6_magic +EXPORT_SYMBOL vmlinux 0xacc7fa05 remove_arg_zero +EXPORT_SYMBOL vmlinux 0xacc9c18c vfs_mknod +EXPORT_SYMBOL vmlinux 0xaccabc6a in4_pton +EXPORT_SYMBOL vmlinux 0xacd14ab8 _lv1_construct_logical_spe +EXPORT_SYMBOL vmlinux 0xacd81eb3 jbd2_inode_cache +EXPORT_SYMBOL vmlinux 0xacdc6572 dev_set_group +EXPORT_SYMBOL vmlinux 0xacf4d843 match_strdup +EXPORT_SYMBOL vmlinux 0xad01744f kstrtos8_from_user +EXPORT_SYMBOL vmlinux 0xad0413d4 match_hex +EXPORT_SYMBOL vmlinux 0xad11e85a sock_no_getsockopt +EXPORT_SYMBOL vmlinux 0xad164875 kstrtos16_from_user +EXPORT_SYMBOL vmlinux 0xad184994 put_page +EXPORT_SYMBOL vmlinux 0xad18b4de ip_defrag +EXPORT_SYMBOL vmlinux 0xad1b87ce account_page_dirtied +EXPORT_SYMBOL vmlinux 0xad1ca9eb kernel_bind +EXPORT_SYMBOL vmlinux 0xad2455ec down_read +EXPORT_SYMBOL vmlinux 0xad3876d7 copy_to_iter +EXPORT_SYMBOL vmlinux 0xad396f82 devfreq_interval_update +EXPORT_SYMBOL vmlinux 0xad50cebb i8253_lock +EXPORT_SYMBOL vmlinux 0xad5a08a3 tcp_v4_conn_request +EXPORT_SYMBOL vmlinux 0xad84bef8 dm_table_event +EXPORT_SYMBOL vmlinux 0xada8c864 starget_for_each_device +EXPORT_SYMBOL vmlinux 0xadaa34f1 __f_setown +EXPORT_SYMBOL vmlinux 0xadb21637 scm_fp_dup +EXPORT_SYMBOL vmlinux 0xadb359c7 tso_build_data +EXPORT_SYMBOL vmlinux 0xadb7b1f8 blk_cleanup_queue +EXPORT_SYMBOL vmlinux 0xadc5a63f xfrm_state_check_expire +EXPORT_SYMBOL vmlinux 0xadd08d52 __put_cred +EXPORT_SYMBOL vmlinux 0xadd665a9 inet_proto_csum_replace16 +EXPORT_SYMBOL vmlinux 0xadd89254 pcie_get_mps +EXPORT_SYMBOL vmlinux 0xadeffe25 _lv1_gpu_context_intr +EXPORT_SYMBOL vmlinux 0xadf63519 __page_cache_alloc +EXPORT_SYMBOL vmlinux 0xadfdfcef __bitmap_andnot +EXPORT_SYMBOL vmlinux 0xae03d669 cpufreq_generic_suspend +EXPORT_SYMBOL vmlinux 0xae13acc9 pm860x_set_bits +EXPORT_SYMBOL vmlinux 0xae180e26 sock_recv_errqueue +EXPORT_SYMBOL vmlinux 0xae200e2f mmc_fixup_device +EXPORT_SYMBOL vmlinux 0xae358236 fence_signal +EXPORT_SYMBOL vmlinux 0xae393793 phy_write_mmd_indirect +EXPORT_SYMBOL vmlinux 0xae545f06 _raw_write_unlock_irqrestore +EXPORT_SYMBOL vmlinux 0xae69ec7f mnt_set_expiry +EXPORT_SYMBOL vmlinux 0xae6bd1f8 scsi_target_resume +EXPORT_SYMBOL vmlinux 0xae729e59 security_req_classify_flow +EXPORT_SYMBOL vmlinux 0xae7926b9 mmc_stop_bkops +EXPORT_SYMBOL vmlinux 0xae861647 nobh_write_begin +EXPORT_SYMBOL vmlinux 0xaec647f7 inet_frags_exit_net +EXPORT_SYMBOL vmlinux 0xaeccf846 ether_setup +EXPORT_SYMBOL vmlinux 0xaecf86f1 kset_register +EXPORT_SYMBOL vmlinux 0xaf013d9f mfd_add_devices +EXPORT_SYMBOL vmlinux 0xaf063510 _raw_spin_lock_bh +EXPORT_SYMBOL vmlinux 0xaf0c2c78 release_firmware +EXPORT_SYMBOL vmlinux 0xaf11fc9e eeh_dev_release +EXPORT_SYMBOL vmlinux 0xaf2d872c prepare_to_wait +EXPORT_SYMBOL vmlinux 0xaf3dd7dc scsi_logging_level +EXPORT_SYMBOL vmlinux 0xaf54b410 d_set_fallthru +EXPORT_SYMBOL vmlinux 0xaf6ae696 kstrndup +EXPORT_SYMBOL vmlinux 0xaf7ffaa4 scsi_remove_target +EXPORT_SYMBOL vmlinux 0xaf8ed796 of_phy_is_fixed_link +EXPORT_SYMBOL vmlinux 0xaf9340a7 tcf_hash_new_index +EXPORT_SYMBOL vmlinux 0xafa982f3 pci_bus_find_capability +EXPORT_SYMBOL vmlinux 0xafac7396 __devm_gpiod_get_index_optional +EXPORT_SYMBOL vmlinux 0xafbc4c25 param_set_bool +EXPORT_SYMBOL vmlinux 0xafc25ec1 scsi_host_put +EXPORT_SYMBOL vmlinux 0xafc29457 blk_rq_map_user +EXPORT_SYMBOL vmlinux 0xafff3d1d mempool_alloc +EXPORT_SYMBOL vmlinux 0xb0141af5 mmc_set_blocklen +EXPORT_SYMBOL vmlinux 0xb014afea generic_file_open +EXPORT_SYMBOL vmlinux 0xb0239bc3 dev_remove_offload +EXPORT_SYMBOL vmlinux 0xb0351395 blk_queue_unprep_rq +EXPORT_SYMBOL vmlinux 0xb037be7a tcp_v4_syn_recv_sock +EXPORT_SYMBOL vmlinux 0xb03cc222 touch_atime +EXPORT_SYMBOL vmlinux 0xb03fc652 pci_fixup_device +EXPORT_SYMBOL vmlinux 0xb04241b4 ida_simple_remove +EXPORT_SYMBOL vmlinux 0xb05dddb0 of_device_is_compatible +EXPORT_SYMBOL vmlinux 0xb05e6773 generic_file_mmap +EXPORT_SYMBOL vmlinux 0xb05fc310 sysctl_rmem_max +EXPORT_SYMBOL vmlinux 0xb0638ed8 blk_make_request +EXPORT_SYMBOL vmlinux 0xb06c11ea sock_get_timestampns +EXPORT_SYMBOL vmlinux 0xb072df30 t10_pi_type1_crc +EXPORT_SYMBOL vmlinux 0xb077455d pci_disable_msix +EXPORT_SYMBOL vmlinux 0xb093d374 fb_get_buffer_offset +EXPORT_SYMBOL vmlinux 0xb09509b6 iw_handler_set_thrspy +EXPORT_SYMBOL vmlinux 0xb0a0da0c rational_best_approximation +EXPORT_SYMBOL vmlinux 0xb0a5f200 nf_log_unregister +EXPORT_SYMBOL vmlinux 0xb0bdea10 md_reload_sb +EXPORT_SYMBOL vmlinux 0xb0e10781 get_option +EXPORT_SYMBOL vmlinux 0xb12cbacb fb_unregister_client +EXPORT_SYMBOL vmlinux 0xb1366c19 bdget +EXPORT_SYMBOL vmlinux 0xb1446117 kmem_cache_shrink +EXPORT_SYMBOL vmlinux 0xb147a855 dql_reset +EXPORT_SYMBOL vmlinux 0xb14d4e51 iov_iter_npages +EXPORT_SYMBOL vmlinux 0xb15bd8fa tb_ticks_per_sec +EXPORT_SYMBOL vmlinux 0xb15cb614 security_xfrm_policy_alloc +EXPORT_SYMBOL vmlinux 0xb1645a2e sg_free_table +EXPORT_SYMBOL vmlinux 0xb165ef45 __irq_regs +EXPORT_SYMBOL vmlinux 0xb17a3fc8 __skb_get_hash_flowi4 +EXPORT_SYMBOL vmlinux 0xb18d56c4 rfkill_alloc +EXPORT_SYMBOL vmlinux 0xb1a638a8 dcache_dir_close +EXPORT_SYMBOL vmlinux 0xb1b599ac devfreq_add_device +EXPORT_SYMBOL vmlinux 0xb1c3a01a oops_in_progress +EXPORT_SYMBOL vmlinux 0xb1c6e787 wait_for_completion_timeout +EXPORT_SYMBOL vmlinux 0xb1cf44df fb_find_best_mode +EXPORT_SYMBOL vmlinux 0xb20cdded cdrom_media_changed +EXPORT_SYMBOL vmlinux 0xb210979e blkdev_issue_zeroout +EXPORT_SYMBOL vmlinux 0xb237f4e7 redraw_screen +EXPORT_SYMBOL vmlinux 0xb2480791 clear_user_page +EXPORT_SYMBOL vmlinux 0xb2682405 utf8_to_utf32 +EXPORT_SYMBOL vmlinux 0xb28cc7db copy_strings_kernel +EXPORT_SYMBOL vmlinux 0xb2ac1951 key_instantiate_and_link +EXPORT_SYMBOL vmlinux 0xb2b49738 simple_transaction_get +EXPORT_SYMBOL vmlinux 0xb2bb93d0 blk_queue_logical_block_size +EXPORT_SYMBOL vmlinux 0xb2be6e92 netdev_stats_to_stats64 +EXPORT_SYMBOL vmlinux 0xb2c39718 inet_csk_reqsk_queue_drop +EXPORT_SYMBOL vmlinux 0xb3382494 fence_signal_locked +EXPORT_SYMBOL vmlinux 0xb346aab8 get_super +EXPORT_SYMBOL vmlinux 0xb3548811 __inet_stream_connect +EXPORT_SYMBOL vmlinux 0xb35a94c1 i8042_remove_filter +EXPORT_SYMBOL vmlinux 0xb375327d md_set_array_sectors +EXPORT_SYMBOL vmlinux 0xb38225f2 param_ops_long +EXPORT_SYMBOL vmlinux 0xb38332e0 ip_options_compile +EXPORT_SYMBOL vmlinux 0xb3bf73df cpu_active_mask +EXPORT_SYMBOL vmlinux 0xb3cfd5b8 simple_dir_inode_operations +EXPORT_SYMBOL vmlinux 0xb3d2c76d scsi_hostbyte_string +EXPORT_SYMBOL vmlinux 0xb3de4e6b agp3_generic_tlbflush +EXPORT_SYMBOL vmlinux 0xb3e0469e pcim_iomap_regions_request_all +EXPORT_SYMBOL vmlinux 0xb3f7646e kthread_should_stop +EXPORT_SYMBOL vmlinux 0xb423dba1 console_blanked +EXPORT_SYMBOL vmlinux 0xb42c1e93 skb_copy_datagram_from_iter +EXPORT_SYMBOL vmlinux 0xb4309a60 nf_log_unset +EXPORT_SYMBOL vmlinux 0xb45fb800 swiotlb_unmap_sg_attrs +EXPORT_SYMBOL vmlinux 0xb4709322 scsi_dev_info_add_list +EXPORT_SYMBOL vmlinux 0xb470f1da mfd_remove_devices +EXPORT_SYMBOL vmlinux 0xb47189b5 reservation_ww_class +EXPORT_SYMBOL vmlinux 0xb473e2c2 lockref_get +EXPORT_SYMBOL vmlinux 0xb480e88b kmem_cache_alloc +EXPORT_SYMBOL vmlinux 0xb4fdc9ab tcf_hash_cleanup +EXPORT_SYMBOL vmlinux 0xb4ff9fa4 pci_back_from_sleep +EXPORT_SYMBOL vmlinux 0xb5270844 bio_integrity_clone +EXPORT_SYMBOL vmlinux 0xb53913da dquot_initialize +EXPORT_SYMBOL vmlinux 0xb53dddf8 md_update_sb +EXPORT_SYMBOL vmlinux 0xb5482412 input_register_handle +EXPORT_SYMBOL vmlinux 0xb54c274c down_write +EXPORT_SYMBOL vmlinux 0xb56bfd9e smu_spinwait_cmd +EXPORT_SYMBOL vmlinux 0xb57343c2 frontswap_shrink +EXPORT_SYMBOL vmlinux 0xb585713c netlink_unicast +EXPORT_SYMBOL vmlinux 0xb58e70cd eth_header +EXPORT_SYMBOL vmlinux 0xb5a459dc unregister_blkdev +EXPORT_SYMBOL vmlinux 0xb5a6a229 sk_mc_loop +EXPORT_SYMBOL vmlinux 0xb5aa7165 dma_pool_destroy +EXPORT_SYMBOL vmlinux 0xb5aaf73e netlink_kernel_release +EXPORT_SYMBOL vmlinux 0xb5d2e1d8 inet_sendmsg +EXPORT_SYMBOL vmlinux 0xb5d672f4 should_remove_suid +EXPORT_SYMBOL vmlinux 0xb5de13ed d_make_root +EXPORT_SYMBOL vmlinux 0xb5e179ea skb_append +EXPORT_SYMBOL vmlinux 0xb61a509c rtnl_link_get_net +EXPORT_SYMBOL vmlinux 0xb61eef9f __set_page_dirty_buffers +EXPORT_SYMBOL vmlinux 0xb6244511 sg_init_one +EXPORT_SYMBOL vmlinux 0xb6245e63 filemap_fdatawait_range +EXPORT_SYMBOL vmlinux 0xb62ec32f tcp_parse_options +EXPORT_SYMBOL vmlinux 0xb62f3985 cdev_init +EXPORT_SYMBOL vmlinux 0xb6472370 gnet_stats_start_copy +EXPORT_SYMBOL vmlinux 0xb65e6ea8 phy_stop +EXPORT_SYMBOL vmlinux 0xb678366f int_sqrt +EXPORT_SYMBOL vmlinux 0xb68bfa9d node_states +EXPORT_SYMBOL vmlinux 0xb6936ffe _bcd2bin +EXPORT_SYMBOL vmlinux 0xb6a68816 find_last_bit +EXPORT_SYMBOL vmlinux 0xb6ae386e locks_mandatory_area +EXPORT_SYMBOL vmlinux 0xb6b33884 poll_freewait +EXPORT_SYMBOL vmlinux 0xb6c5cb58 ipv6_chk_addr +EXPORT_SYMBOL vmlinux 0xb6ce7d72 hdmi_infoframe_log +EXPORT_SYMBOL vmlinux 0xb6d7d943 mach_pseries +EXPORT_SYMBOL vmlinux 0xb6d9a6c8 input_inject_event +EXPORT_SYMBOL vmlinux 0xb70e2c9e devm_devfreq_unregister_opp_notifier +EXPORT_SYMBOL vmlinux 0xb7488905 scsi_normalize_sense +EXPORT_SYMBOL vmlinux 0xb7522367 abx500_register_ops +EXPORT_SYMBOL vmlinux 0xb76f7b4a is_bad_inode +EXPORT_SYMBOL vmlinux 0xb7704c34 default_qdisc_ops +EXPORT_SYMBOL vmlinux 0xb77131b1 psched_ratecfg_precompute +EXPORT_SYMBOL vmlinux 0xb781a799 inet_addr_type +EXPORT_SYMBOL vmlinux 0xb78b6c41 tcp_simple_retransmit +EXPORT_SYMBOL vmlinux 0xb79d95af cdev_del +EXPORT_SYMBOL vmlinux 0xb7e91bac phy_start_aneg +EXPORT_SYMBOL vmlinux 0xb8031935 genl_notify +EXPORT_SYMBOL vmlinux 0xb80571da gnet_stats_copy_queue +EXPORT_SYMBOL vmlinux 0xb80e3e30 key_put +EXPORT_SYMBOL vmlinux 0xb819ab1e of_find_compatible_node +EXPORT_SYMBOL vmlinux 0xb832eb34 nd_integrity_init +EXPORT_SYMBOL vmlinux 0xb84edf0e security_inode_readlink +EXPORT_SYMBOL vmlinux 0xb859acf2 default_file_splice_read +EXPORT_SYMBOL vmlinux 0xb86123be _lv1_write_repository_node +EXPORT_SYMBOL vmlinux 0xb86f54d4 dev_change_carrier +EXPORT_SYMBOL vmlinux 0xb874b87a __clzsi2 +EXPORT_SYMBOL vmlinux 0xb8a1c851 generic_setxattr +EXPORT_SYMBOL vmlinux 0xb8a30c7e _lv1_add_lpm_event_bookmark +EXPORT_SYMBOL vmlinux 0xb8a49ad9 macio_request_resource +EXPORT_SYMBOL vmlinux 0xb8a868af jbd2_journal_get_undo_access +EXPORT_SYMBOL vmlinux 0xb8b2d7e3 ip_mc_leave_group +EXPORT_SYMBOL vmlinux 0xb8d439d8 dst_alloc +EXPORT_SYMBOL vmlinux 0xb8ea2998 xfrm_state_delete +EXPORT_SYMBOL vmlinux 0xb907513f unpoison_memory +EXPORT_SYMBOL vmlinux 0xb91b1a6e __skb_gso_segment +EXPORT_SYMBOL vmlinux 0xb927d698 mark_info_dirty +EXPORT_SYMBOL vmlinux 0xb94b9d64 loop_register_transfer +EXPORT_SYMBOL vmlinux 0xb94c8fa5 tty_port_lower_dtr_rts +EXPORT_SYMBOL vmlinux 0xb977f9c7 vfs_getxattr_alloc +EXPORT_SYMBOL vmlinux 0xb9903ade jbd2_journal_clear_err +EXPORT_SYMBOL vmlinux 0xb99799b7 inet_proto_csum_replace4 +EXPORT_SYMBOL vmlinux 0xb9ad3565 is_nvdimm_bus_locked +EXPORT_SYMBOL vmlinux 0xb9c51c2e skb_pull +EXPORT_SYMBOL vmlinux 0xb9e8e2cc in6addr_sitelocal_allrouters +EXPORT_SYMBOL vmlinux 0xb9f36b55 fixed_size_llseek +EXPORT_SYMBOL vmlinux 0xb9fd6fbd vfs_getattr_nosec +EXPORT_SYMBOL vmlinux 0xba04d1da security_sb_set_mnt_opts +EXPORT_SYMBOL vmlinux 0xba122a2c smu_done_complete +EXPORT_SYMBOL vmlinux 0xba2fbc94 key_revoke +EXPORT_SYMBOL vmlinux 0xba2ffec2 rps_sock_flow_table +EXPORT_SYMBOL vmlinux 0xba483945 tcf_em_tree_destroy +EXPORT_SYMBOL vmlinux 0xba48ea70 of_find_node_opts_by_path +EXPORT_SYMBOL vmlinux 0xba497f13 loops_per_jiffy +EXPORT_SYMBOL vmlinux 0xba4aa72c param_get_ushort +EXPORT_SYMBOL vmlinux 0xba54d2f9 bmap +EXPORT_SYMBOL vmlinux 0xba5bd416 rtas +EXPORT_SYMBOL vmlinux 0xba626c68 sock_register +EXPORT_SYMBOL vmlinux 0xba86ccf5 clear_wb_congested +EXPORT_SYMBOL vmlinux 0xba917109 mach_powernv +EXPORT_SYMBOL vmlinux 0xbaa91693 xfrm_unregister_mode +EXPORT_SYMBOL vmlinux 0xbaa9acc2 agp_bridge +EXPORT_SYMBOL vmlinux 0xbaaebfee netdev_notify_peers +EXPORT_SYMBOL vmlinux 0xbab0e29a kill_pgrp +EXPORT_SYMBOL vmlinux 0xbad5d349 phy_connect +EXPORT_SYMBOL vmlinux 0xbb0540aa zlib_inflateReset +EXPORT_SYMBOL vmlinux 0xbb1e2c7e fbcon_rotate_cw +EXPORT_SYMBOL vmlinux 0xbb34134a iov_shorten +EXPORT_SYMBOL vmlinux 0xbb35675b __bitmap_intersects +EXPORT_SYMBOL vmlinux 0xbb4e54c9 alloc_netdev_mqs +EXPORT_SYMBOL vmlinux 0xbb4f4766 simple_write_to_buffer +EXPORT_SYMBOL vmlinux 0xbb5d343d xfrm_get_acqseq +EXPORT_SYMBOL vmlinux 0xbb642aa5 lro_receive_skb +EXPORT_SYMBOL vmlinux 0xbb747ff7 cad_pid +EXPORT_SYMBOL vmlinux 0xbb7be68e skb_insert +EXPORT_SYMBOL vmlinux 0xbb99125c get_default_font +EXPORT_SYMBOL vmlinux 0xbb9ce961 invalidate_bdev +EXPORT_SYMBOL vmlinux 0xbbaeb559 memcg_socket_limit_enabled +EXPORT_SYMBOL vmlinux 0xbbb6b412 unregister_sysctl_table +EXPORT_SYMBOL vmlinux 0xbbd76e57 bit_wait +EXPORT_SYMBOL vmlinux 0xbbd9f670 cookie_ecn_ok +EXPORT_SYMBOL vmlinux 0xbbdd3a66 node_data +EXPORT_SYMBOL vmlinux 0xbbeb52f3 __getblk_gfp +EXPORT_SYMBOL vmlinux 0xbbf38a72 nla_reserve_nohdr +EXPORT_SYMBOL vmlinux 0xbc01e5a8 vfs_iter_write +EXPORT_SYMBOL vmlinux 0xbc2f8f07 tcp_md5_do_add +EXPORT_SYMBOL vmlinux 0xbc316de4 tty_termios_input_baud_rate +EXPORT_SYMBOL vmlinux 0xbc3d808f tcf_exts_validate +EXPORT_SYMBOL vmlinux 0xbc42ff3d mdiobus_scan +EXPORT_SYMBOL vmlinux 0xbc56550d input_close_device +EXPORT_SYMBOL vmlinux 0xbc641a23 __skb_warn_lro_forwarding +EXPORT_SYMBOL vmlinux 0xbc64ad01 vfs_symlink +EXPORT_SYMBOL vmlinux 0xbc982b06 eeh_subsystem_flags +EXPORT_SYMBOL vmlinux 0xbc9f0b5c gen_pool_add_virt +EXPORT_SYMBOL vmlinux 0xbcc308bb strnlen_user +EXPORT_SYMBOL vmlinux 0xbcc746cb flow_cache_fini +EXPORT_SYMBOL vmlinux 0xbcf150f9 xor_altivec_5 +EXPORT_SYMBOL vmlinux 0xbd12c1dc pnv_phb_to_cxl_mode +EXPORT_SYMBOL vmlinux 0xbd1ca4ec bioset_create +EXPORT_SYMBOL vmlinux 0xbd2f666b blk_queue_bounce +EXPORT_SYMBOL vmlinux 0xbd451c0e seq_release +EXPORT_SYMBOL vmlinux 0xbd462b55 __kfifo_init +EXPORT_SYMBOL vmlinux 0xbd5ce32f agp_alloc_bridge +EXPORT_SYMBOL vmlinux 0xbd78304f mach_ps3 +EXPORT_SYMBOL vmlinux 0xbd803510 tcp_parse_md5sig_option +EXPORT_SYMBOL vmlinux 0xbd8cfa15 pasemi_write_mac_reg +EXPORT_SYMBOL vmlinux 0xbd9074b1 blk_finish_plug +EXPORT_SYMBOL vmlinux 0xbda0a55a xfrm_state_lookup_byaddr +EXPORT_SYMBOL vmlinux 0xbda1d8fc tcp_init_cgroup +EXPORT_SYMBOL vmlinux 0xbdd92cfc __hw_addr_sync_dev +EXPORT_SYMBOL vmlinux 0xbde5ace8 __per_cpu_offset +EXPORT_SYMBOL vmlinux 0xbde8c944 __xfrm_state_destroy +EXPORT_SYMBOL vmlinux 0xbe18ca32 clocksource_change_rating +EXPORT_SYMBOL vmlinux 0xbe1bb112 bitmap_onto +EXPORT_SYMBOL vmlinux 0xbe3509fd phy_start +EXPORT_SYMBOL vmlinux 0xbe6aef80 mutex_lock_killable +EXPORT_SYMBOL vmlinux 0xbe8caa91 free_netdev +EXPORT_SYMBOL vmlinux 0xbe9cb8aa inet_csk_delete_keepalive_timer +EXPORT_SYMBOL vmlinux 0xbeae5cd7 devfreq_remove_device +EXPORT_SYMBOL vmlinux 0xbeba7a57 netdev_master_upper_dev_get_rcu +EXPORT_SYMBOL vmlinux 0xbed31a53 pm_vt_switch_unregister +EXPORT_SYMBOL vmlinux 0xbee0207a __napi_schedule +EXPORT_SYMBOL vmlinux 0xbee1862f kmalloc_dma_caches +EXPORT_SYMBOL vmlinux 0xbef43296 console_conditional_schedule +EXPORT_SYMBOL vmlinux 0xbf0a7059 d_alloc_pseudo +EXPORT_SYMBOL vmlinux 0xbf1b5680 of_get_min_tck +EXPORT_SYMBOL vmlinux 0xbf216940 devfreq_monitor_start +EXPORT_SYMBOL vmlinux 0xbf354f1c account_page_redirty +EXPORT_SYMBOL vmlinux 0xbf55ca92 ip6_frag_init +EXPORT_SYMBOL vmlinux 0xbf67f075 blk_free_tags +EXPORT_SYMBOL vmlinux 0xbf791d2c kernel_write +EXPORT_SYMBOL vmlinux 0xbf7fd2f5 schedule_timeout_killable +EXPORT_SYMBOL vmlinux 0xbf84ca1c vme_dma_request +EXPORT_SYMBOL vmlinux 0xbf8a7453 __frontswap_test +EXPORT_SYMBOL vmlinux 0xbf8ba54a vprintk +EXPORT_SYMBOL vmlinux 0xbf925c42 idr_init +EXPORT_SYMBOL vmlinux 0xbf93d88f devm_gpio_request +EXPORT_SYMBOL vmlinux 0xbf97ed66 pneigh_enqueue +EXPORT_SYMBOL vmlinux 0xbf9859e0 serio_unregister_port +EXPORT_SYMBOL vmlinux 0xbf9bcc8d __cap_empty_set +EXPORT_SYMBOL vmlinux 0xbfabfe59 __debugger_iabr_match +EXPORT_SYMBOL vmlinux 0xbfb8b0b7 _raw_read_lock_irqsave +EXPORT_SYMBOL vmlinux 0xbfc177bc iowrite32_rep +EXPORT_SYMBOL vmlinux 0xbfd57daa phy_driver_register +EXPORT_SYMBOL vmlinux 0xbfee3ad5 loop_unregister_transfer +EXPORT_SYMBOL vmlinux 0xbff8182c plpar_hcall_norets +EXPORT_SYMBOL vmlinux 0xc03a1b66 __bread_gfp +EXPORT_SYMBOL vmlinux 0xc0763484 rfkill_blocked +EXPORT_SYMBOL vmlinux 0xc0823e4c twl_i2c_write +EXPORT_SYMBOL vmlinux 0xc08451e5 netdev_lower_get_next_private_rcu +EXPORT_SYMBOL vmlinux 0xc08af016 of_get_address +EXPORT_SYMBOL vmlinux 0xc0a3d105 find_next_bit +EXPORT_SYMBOL vmlinux 0xc0b80aee __inc_zone_page_state +EXPORT_SYMBOL vmlinux 0xc0c1c7ab of_find_node_with_property +EXPORT_SYMBOL vmlinux 0xc0cb1185 inode_newsize_ok +EXPORT_SYMBOL vmlinux 0xc0cb9640 of_graph_get_endpoint_by_regs +EXPORT_SYMBOL vmlinux 0xc0eca39e save_mount_options +EXPORT_SYMBOL vmlinux 0xc0ff791d simple_write_begin +EXPORT_SYMBOL vmlinux 0xc10b00f9 tcp_release_cb +EXPORT_SYMBOL vmlinux 0xc119e1db tcp_poll +EXPORT_SYMBOL vmlinux 0xc11a6153 skb_pad +EXPORT_SYMBOL vmlinux 0xc120eea4 inode_sub_rsv_space +EXPORT_SYMBOL vmlinux 0xc13511d7 cpumask_next_and +EXPORT_SYMBOL vmlinux 0xc13a10dc flex_array_alloc +EXPORT_SYMBOL vmlinux 0xc14a9042 unlock_new_inode +EXPORT_SYMBOL vmlinux 0xc157f004 mfd_cell_disable +EXPORT_SYMBOL vmlinux 0xc15a44c6 memzero_explicit +EXPORT_SYMBOL vmlinux 0xc17efc16 dquot_get_state +EXPORT_SYMBOL vmlinux 0xc19f1cdf del_random_ready_callback +EXPORT_SYMBOL vmlinux 0xc1b601c0 blk_mq_all_tag_busy_iter +EXPORT_SYMBOL vmlinux 0xc1c8194d add_disk +EXPORT_SYMBOL vmlinux 0xc1d864ef pcie_capability_write_word +EXPORT_SYMBOL vmlinux 0xc1d8cfaf __fdget +EXPORT_SYMBOL vmlinux 0xc1dc2bad generic_end_io_acct +EXPORT_SYMBOL vmlinux 0xc1dc3a14 __tcf_hash_release +EXPORT_SYMBOL vmlinux 0xc1ddf0c7 vga_get +EXPORT_SYMBOL vmlinux 0xc1e11fb4 pcix_get_mmrbc +EXPORT_SYMBOL vmlinux 0xc1e50c0b rtnl_nla_parse_ifla +EXPORT_SYMBOL vmlinux 0xc1f5f5ae write_one_page +EXPORT_SYMBOL vmlinux 0xc2074cbb blk_start_queue +EXPORT_SYMBOL vmlinux 0xc20d1267 i2c_smbus_read_block_data +EXPORT_SYMBOL vmlinux 0xc217b990 mipi_dsi_dcs_set_display_on +EXPORT_SYMBOL vmlinux 0xc22654a2 insert_inode_locked +EXPORT_SYMBOL vmlinux 0xc2337786 netif_wake_subqueue +EXPORT_SYMBOL vmlinux 0xc2424641 agp3_generic_cleanup +EXPORT_SYMBOL vmlinux 0xc24271cb gen_pool_alloc +EXPORT_SYMBOL vmlinux 0xc248381f md_integrity_register +EXPORT_SYMBOL vmlinux 0xc250a457 param_get_uint +EXPORT_SYMBOL vmlinux 0xc25c153f register_tcf_proto_ops +EXPORT_SYMBOL vmlinux 0xc25e52ce inode_sub_bytes +EXPORT_SYMBOL vmlinux 0xc28bb7d5 skb_unlink +EXPORT_SYMBOL vmlinux 0xc29bf967 strspn +EXPORT_SYMBOL vmlinux 0xc2b1af46 xfrm6_rcv_spi +EXPORT_SYMBOL vmlinux 0xc2e587d1 reset_devices +EXPORT_SYMBOL vmlinux 0xc2f5189f dquot_file_open +EXPORT_SYMBOL vmlinux 0xc2f9c045 timespec_to_jiffies +EXPORT_SYMBOL vmlinux 0xc2fb9ee1 _lv1_shutdown_logical_partition +EXPORT_SYMBOL vmlinux 0xc310b981 strnstr +EXPORT_SYMBOL vmlinux 0xc321ce2a agp_generic_mask_memory +EXPORT_SYMBOL vmlinux 0xc36e71c7 tty_unlock +EXPORT_SYMBOL vmlinux 0xc371702d ns_capable +EXPORT_SYMBOL vmlinux 0xc387ab05 find_lock_entry +EXPORT_SYMBOL vmlinux 0xc39049c3 try_module_get +EXPORT_SYMBOL vmlinux 0xc3b2b99b __cleancache_init_shared_fs +EXPORT_SYMBOL vmlinux 0xc3c2be91 mipi_dsi_packet_format_is_short +EXPORT_SYMBOL vmlinux 0xc402deab console_start +EXPORT_SYMBOL vmlinux 0xc40d7447 blk_rq_unmap_user +EXPORT_SYMBOL vmlinux 0xc41460e3 mmc_get_card +EXPORT_SYMBOL vmlinux 0xc41f1696 _lv1_configure_virtual_uart_irq +EXPORT_SYMBOL vmlinux 0xc42a1aa7 blk_mq_abort_requeue_list +EXPORT_SYMBOL vmlinux 0xc437bcf4 seq_open_private +EXPORT_SYMBOL vmlinux 0xc43c8a94 set_security_override_from_ctx +EXPORT_SYMBOL vmlinux 0xc43edec9 load_nls +EXPORT_SYMBOL vmlinux 0xc4524726 try_to_writeback_inodes_sb_nr +EXPORT_SYMBOL vmlinux 0xc45755de find_next_zero_bit_le +EXPORT_SYMBOL vmlinux 0xc474f695 tty_free_termios +EXPORT_SYMBOL vmlinux 0xc478b8f8 sock_sendmsg +EXPORT_SYMBOL vmlinux 0xc47cdf9c _raw_write_lock_bh +EXPORT_SYMBOL vmlinux 0xc48307db lz4_decompress +EXPORT_SYMBOL vmlinux 0xc499ae1e kstrdup +EXPORT_SYMBOL vmlinux 0xc4abe0a7 generic_pipe_buf_get +EXPORT_SYMBOL vmlinux 0xc4b927e6 devm_gpio_request_one +EXPORT_SYMBOL vmlinux 0xc4e32e50 param_set_bint +EXPORT_SYMBOL vmlinux 0xc5089620 _lv1_stop_ppe_periodic_tracer +EXPORT_SYMBOL vmlinux 0xc52e3907 seq_pad +EXPORT_SYMBOL vmlinux 0xc5422a41 inet_confirm_addr +EXPORT_SYMBOL vmlinux 0xc5534d64 ioread16 +EXPORT_SYMBOL vmlinux 0xc5588575 mipi_dsi_dcs_soft_reset +EXPORT_SYMBOL vmlinux 0xc55c2a9d inode_sb_list_lock +EXPORT_SYMBOL vmlinux 0xc55de23c percpu_counter_set +EXPORT_SYMBOL vmlinux 0xc56b550f sg_miter_next +EXPORT_SYMBOL vmlinux 0xc58b15db of_node_put +EXPORT_SYMBOL vmlinux 0xc599a772 security_xfrm_state_delete +EXPORT_SYMBOL vmlinux 0xc5ad26f7 dev_printk +EXPORT_SYMBOL vmlinux 0xc5b514cc bitmap_endwrite +EXPORT_SYMBOL vmlinux 0xc5b69509 netdev_master_upper_dev_link_private +EXPORT_SYMBOL vmlinux 0xc5c95da6 security_inode_setsecctx +EXPORT_SYMBOL vmlinux 0xc5d9c46c agp_try_unsupported_boot +EXPORT_SYMBOL vmlinux 0xc5db0d89 input_mt_report_pointer_emulation +EXPORT_SYMBOL vmlinux 0xc5e131ea serio_unregister_child_port +EXPORT_SYMBOL vmlinux 0xc5e2224a blk_mq_tag_to_rq +EXPORT_SYMBOL vmlinux 0xc5e3e4d4 pci_scan_bus +EXPORT_SYMBOL vmlinux 0xc5f5fdb4 open_check_o_direct +EXPORT_SYMBOL vmlinux 0xc5fdef94 call_usermodehelper +EXPORT_SYMBOL vmlinux 0xc5fea617 ipv6_find_hdr +EXPORT_SYMBOL vmlinux 0xc61a069e nvdimm_namespace_capacity +EXPORT_SYMBOL vmlinux 0xc631580a console_unlock +EXPORT_SYMBOL vmlinux 0xc63bcbd5 eth_type_trans +EXPORT_SYMBOL vmlinux 0xc64e1dee ip_getsockopt +EXPORT_SYMBOL vmlinux 0xc65abeb7 agp3_generic_sizes +EXPORT_SYMBOL vmlinux 0xc6616ed1 inet_dev_addr_type +EXPORT_SYMBOL vmlinux 0xc663b075 __ioremap +EXPORT_SYMBOL vmlinux 0xc666a132 crc_t10dif +EXPORT_SYMBOL vmlinux 0xc6772da2 radix_tree_lookup_slot +EXPORT_SYMBOL vmlinux 0xc67c8641 sk_filter +EXPORT_SYMBOL vmlinux 0xc6ad8d41 twl6040_get_pll +EXPORT_SYMBOL vmlinux 0xc6b22c71 __percpu_counter_sum +EXPORT_SYMBOL vmlinux 0xc6c55c57 bio_reset +EXPORT_SYMBOL vmlinux 0xc6cb465a __kfifo_max_r +EXPORT_SYMBOL vmlinux 0xc6cbbc89 capable +EXPORT_SYMBOL vmlinux 0xc6e7b7e8 __scm_send +EXPORT_SYMBOL vmlinux 0xc70436f0 __ip_dev_find +EXPORT_SYMBOL vmlinux 0xc7208c3a serial8250_resume_port +EXPORT_SYMBOL vmlinux 0xc726a85d netpoll_print_options +EXPORT_SYMBOL vmlinux 0xc72f0b34 nd_btt_sb_checksum +EXPORT_SYMBOL vmlinux 0xc7563db8 twl_set_regcache_bypass +EXPORT_SYMBOL vmlinux 0xc7635da2 jbd2_journal_force_commit_nested +EXPORT_SYMBOL vmlinux 0xc77ae2d8 mipi_dsi_host_unregister +EXPORT_SYMBOL vmlinux 0xc781bd9f rfkill_resume_polling +EXPORT_SYMBOL vmlinux 0xc7856a3d inet6addr_notifier_call_chain +EXPORT_SYMBOL vmlinux 0xc7898275 flex_array_shrink +EXPORT_SYMBOL vmlinux 0xc7910c45 inet_peer_xrlim_allow +EXPORT_SYMBOL vmlinux 0xc79bcd36 dm_vcalloc +EXPORT_SYMBOL vmlinux 0xc7a4fbed rtnl_lock +EXPORT_SYMBOL vmlinux 0xc7b5711d d_set_d_op +EXPORT_SYMBOL vmlinux 0xc7bd94f2 vme_irq_free +EXPORT_SYMBOL vmlinux 0xc7e080f5 qdisc_watchdog_init +EXPORT_SYMBOL vmlinux 0xc7f39b15 irq_stat +EXPORT_SYMBOL vmlinux 0xc7fd876b netif_set_xps_queue +EXPORT_SYMBOL vmlinux 0xc7ff63ab tcp_get_md5sig_pool +EXPORT_SYMBOL vmlinux 0xc801d3c2 crypto_sha256_update +EXPORT_SYMBOL vmlinux 0xc83b4d5b posix_acl_from_mode +EXPORT_SYMBOL vmlinux 0xc83f5cfc cmdline_parts_find +EXPORT_SYMBOL vmlinux 0xc84a0a7e seq_hlist_start_rcu +EXPORT_SYMBOL vmlinux 0xc84c0026 posix_test_lock +EXPORT_SYMBOL vmlinux 0xc85442ca bdgrab +EXPORT_SYMBOL vmlinux 0xc8571bcb idr_for_each +EXPORT_SYMBOL vmlinux 0xc8697bfa netif_carrier_off +EXPORT_SYMBOL vmlinux 0xc872fd85 in6addr_interfacelocal_allnodes +EXPORT_SYMBOL vmlinux 0xc874906e scsi_device_resume +EXPORT_SYMBOL vmlinux 0xc876033f xfrm_policy_destroy +EXPORT_SYMBOL vmlinux 0xc887b99a filemap_write_and_wait +EXPORT_SYMBOL vmlinux 0xc88d332e inet_frag_maybe_warn_overflow +EXPORT_SYMBOL vmlinux 0xc890c008 zlib_deflateEnd +EXPORT_SYMBOL vmlinux 0xc897c382 sg_init_table +EXPORT_SYMBOL vmlinux 0xc8a91f5b cpumask_local_spread +EXPORT_SYMBOL vmlinux 0xc8b1799b scsi_get_device_flags_keyed +EXPORT_SYMBOL vmlinux 0xc8b57c27 autoremove_wake_function +EXPORT_SYMBOL vmlinux 0xc8cb8055 ip_cmsg_recv_offset +EXPORT_SYMBOL vmlinux 0xc8e31d75 _lv1_configure_irq_state_bitmap +EXPORT_SYMBOL vmlinux 0xc8f92858 pci_dev_put +EXPORT_SYMBOL vmlinux 0xc8fe5dd6 netdev_emerg +EXPORT_SYMBOL vmlinux 0xc911b9d5 eth_get_headlen +EXPORT_SYMBOL vmlinux 0xc919f934 blk_mq_free_tag_set +EXPORT_SYMBOL vmlinux 0xc91ffbca tag_pages_for_writeback +EXPORT_SYMBOL vmlinux 0xc93fbc54 wait_for_completion_io +EXPORT_SYMBOL vmlinux 0xc94ebb82 get_acl +EXPORT_SYMBOL vmlinux 0xc9513ad9 i2c_del_adapter +EXPORT_SYMBOL vmlinux 0xc9597e44 security_file_permission +EXPORT_SYMBOL vmlinux 0xc9634df9 in6addr_linklocal_allrouters +EXPORT_SYMBOL vmlinux 0xc96c6f13 compat_tcp_setsockopt +EXPORT_SYMBOL vmlinux 0xc96ed143 qdisc_destroy +EXPORT_SYMBOL vmlinux 0xc978479a xz_dec_run +EXPORT_SYMBOL vmlinux 0xc97bb956 component_match_add +EXPORT_SYMBOL vmlinux 0xc99e2a55 twl_rev +EXPORT_SYMBOL vmlinux 0xc9b77979 input_grab_device +EXPORT_SYMBOL vmlinux 0xc9d186d5 inode_set_flags +EXPORT_SYMBOL vmlinux 0xc9e5671f cfb_copyarea +EXPORT_SYMBOL vmlinux 0xc9eaf54f udp_flush_pending_frames +EXPORT_SYMBOL vmlinux 0xc9fb677a tcf_action_exec +EXPORT_SYMBOL vmlinux 0xc9fbae6c devfreq_monitor_stop +EXPORT_SYMBOL vmlinux 0xc9fc598d pasemi_read_dma_reg +EXPORT_SYMBOL vmlinux 0xca034e9d ppp_input +EXPORT_SYMBOL vmlinux 0xca056a3b pci_wait_for_pending_transaction +EXPORT_SYMBOL vmlinux 0xca060570 up_write +EXPORT_SYMBOL vmlinux 0xca0f4667 readlink_copy +EXPORT_SYMBOL vmlinux 0xca2093f9 xfrm_user_policy +EXPORT_SYMBOL vmlinux 0xca228a40 inet6_offloads +EXPORT_SYMBOL vmlinux 0xca2b1cd6 ida_pre_get +EXPORT_SYMBOL vmlinux 0xca36095e max8998_update_reg +EXPORT_SYMBOL vmlinux 0xca3b28c6 store_vr_state +EXPORT_SYMBOL vmlinux 0xca464f0a dev_get_nest_level +EXPORT_SYMBOL vmlinux 0xca56b0b1 gnet_stats_copy_app +EXPORT_SYMBOL vmlinux 0xca56cf17 __sb_start_write +EXPORT_SYMBOL vmlinux 0xca57d1eb agp_backend_release +EXPORT_SYMBOL vmlinux 0xca589972 netif_schedule_queue +EXPORT_SYMBOL vmlinux 0xca5ee09a vme_free_consistent +EXPORT_SYMBOL vmlinux 0xca6a08dc mipi_dsi_dcs_set_pixel_format +EXPORT_SYMBOL vmlinux 0xca758c73 __xfrm_decode_session +EXPORT_SYMBOL vmlinux 0xca809fb1 md_wait_for_blocked_rdev +EXPORT_SYMBOL vmlinux 0xca825895 pmu_suspend +EXPORT_SYMBOL vmlinux 0xca832efe kmalloc_order +EXPORT_SYMBOL vmlinux 0xca9360b5 rb_next +EXPORT_SYMBOL vmlinux 0xcaabf3f9 pasemi_write_iob_reg +EXPORT_SYMBOL vmlinux 0xcab13a9c sb_min_blocksize +EXPORT_SYMBOL vmlinux 0xcab6ceb1 __netif_schedule +EXPORT_SYMBOL vmlinux 0xcace6297 idr_is_empty +EXPORT_SYMBOL vmlinux 0xcadd6c42 blk_mq_start_hw_queue +EXPORT_SYMBOL vmlinux 0xcae72d76 seq_lseek +EXPORT_SYMBOL vmlinux 0xcaea0df9 unregister_tcf_proto_ops +EXPORT_SYMBOL vmlinux 0xcaf2c603 scsi_sd_pm_domain +EXPORT_SYMBOL vmlinux 0xcb0288ea ledtrig_cpu +EXPORT_SYMBOL vmlinux 0xcb0ba716 arp_send +EXPORT_SYMBOL vmlinux 0xcb118d5a blk_queue_physical_block_size +EXPORT_SYMBOL vmlinux 0xcb1b4d49 tty_lock +EXPORT_SYMBOL vmlinux 0xcb39297a d_tmpfile +EXPORT_SYMBOL vmlinux 0xcb3cd265 skb_vlan_untag +EXPORT_SYMBOL vmlinux 0xcb49e134 of_device_unregister +EXPORT_SYMBOL vmlinux 0xcb562113 vga_put +EXPORT_SYMBOL vmlinux 0xcb936989 hdmi_infoframe_pack +EXPORT_SYMBOL vmlinux 0xcb977f6f tcp_ioctl +EXPORT_SYMBOL vmlinux 0xcbaac0af __devm_gpiod_get_index +EXPORT_SYMBOL vmlinux 0xcbbf0a6f audit_log_task_context +EXPORT_SYMBOL vmlinux 0xcbc1c861 bitmap_cond_end_sync +EXPORT_SYMBOL vmlinux 0xcbc3b94e eeh_check_failure +EXPORT_SYMBOL vmlinux 0xcbc9557f unregister_sysrq_key +EXPORT_SYMBOL vmlinux 0xcbe8b038 _lv1_configure_execution_time_variable +EXPORT_SYMBOL vmlinux 0xcbf0732e mount_single +EXPORT_SYMBOL vmlinux 0xcbf3d584 follow_down_one +EXPORT_SYMBOL vmlinux 0xcbf44e28 ps2_cmd_aborted +EXPORT_SYMBOL vmlinux 0xcc067eb9 mac_find_mode +EXPORT_SYMBOL vmlinux 0xcc17504d _raw_read_unlock_irqrestore +EXPORT_SYMBOL vmlinux 0xcc248d26 serial8250_suspend_port +EXPORT_SYMBOL vmlinux 0xcc313a7d sk_wait_data +EXPORT_SYMBOL vmlinux 0xcc5005fe msleep_interruptible +EXPORT_SYMBOL vmlinux 0xcc778cc3 __tracepoint_fence_annotate_wait_on +EXPORT_SYMBOL vmlinux 0xcc7e6ed1 dma_set_mask +EXPORT_SYMBOL vmlinux 0xcc89afcb pci_find_bus +EXPORT_SYMBOL vmlinux 0xcc89c246 pasemi_dma_alloc_chan +EXPORT_SYMBOL vmlinux 0xcc904da7 mb_cache_entry_find_first +EXPORT_SYMBOL vmlinux 0xcc928749 inet_stream_ops +EXPORT_SYMBOL vmlinux 0xcc99c0f7 tcp_recvmsg +EXPORT_SYMBOL vmlinux 0xccc21f5e input_get_new_minor +EXPORT_SYMBOL vmlinux 0xcce6e60c dma_iommu_ops +EXPORT_SYMBOL vmlinux 0xccedbc64 md_reap_sync_thread +EXPORT_SYMBOL vmlinux 0xcd0529c7 _raw_spin_lock_irq +EXPORT_SYMBOL vmlinux 0xcd0d1f6d inet_frags_fini +EXPORT_SYMBOL vmlinux 0xcd16cebd inode_change_ok +EXPORT_SYMBOL vmlinux 0xcd20667a kstrtou16_from_user +EXPORT_SYMBOL vmlinux 0xcd279169 nla_find +EXPORT_SYMBOL vmlinux 0xcd44ae77 clear_page_dirty_for_io +EXPORT_SYMBOL vmlinux 0xcd456812 n_tty_compat_ioctl_helper +EXPORT_SYMBOL vmlinux 0xcd57f7b0 radix_tree_tag_get +EXPORT_SYMBOL vmlinux 0xcd61f983 unlock_page +EXPORT_SYMBOL vmlinux 0xcd65ef61 key_reject_and_link +EXPORT_SYMBOL vmlinux 0xcd72957d xfrm_prepare_input +EXPORT_SYMBOL vmlinux 0xcd75a0e9 fsl_lbc_ctrl_dev +EXPORT_SYMBOL vmlinux 0xcd769f62 _lv1_gpu_device_map +EXPORT_SYMBOL vmlinux 0xcd7ede2a seqno_fence_ops +EXPORT_SYMBOL vmlinux 0xcd86c87f __cond_resched_lock +EXPORT_SYMBOL vmlinux 0xcd8d36f4 flow_get_u32_src +EXPORT_SYMBOL vmlinux 0xcd8dcf80 jbd2_log_start_commit +EXPORT_SYMBOL vmlinux 0xcda5e84e d_genocide +EXPORT_SYMBOL vmlinux 0xcdad5d61 of_dev_put +EXPORT_SYMBOL vmlinux 0xcdc39c9e security_ismaclabel +EXPORT_SYMBOL vmlinux 0xcdd427cc mod_zone_page_state +EXPORT_SYMBOL vmlinux 0xce14ecb5 xfrm_state_unregister_afinfo +EXPORT_SYMBOL vmlinux 0xce16bd94 rc5t583_ext_power_req_config +EXPORT_SYMBOL vmlinux 0xce26dd9e netif_receive_skb_sk +EXPORT_SYMBOL vmlinux 0xce2840e7 irq_set_irq_wake +EXPORT_SYMBOL vmlinux 0xce3b3f09 profile_pc +EXPORT_SYMBOL vmlinux 0xce409cda pmac_set_early_video_resume +EXPORT_SYMBOL vmlinux 0xce40b801 fsnotify_alloc_group +EXPORT_SYMBOL vmlinux 0xce45332a blk_get_request +EXPORT_SYMBOL vmlinux 0xce4e47b6 __kfifo_skip_r +EXPORT_SYMBOL vmlinux 0xce5ac24f zlib_inflate_workspacesize +EXPORT_SYMBOL vmlinux 0xce606253 unregister_filesystem +EXPORT_SYMBOL vmlinux 0xce6bcda4 i2c_smbus_xfer +EXPORT_SYMBOL vmlinux 0xce7850e1 crc32_le_shift +EXPORT_SYMBOL vmlinux 0xce8d74e8 input_unregister_handle +EXPORT_SYMBOL vmlinux 0xce9e875b udp_disconnect +EXPORT_SYMBOL vmlinux 0xceab0311 strchrnul +EXPORT_SYMBOL vmlinux 0xceae504f cmdline_parts_free +EXPORT_SYMBOL vmlinux 0xceb9b63c csum_and_copy_to_iter +EXPORT_SYMBOL vmlinux 0xced777cb proc_dointvec_minmax +EXPORT_SYMBOL vmlinux 0xcef51982 kstrtou16 +EXPORT_SYMBOL vmlinux 0xcefb73bb max8998_bulk_write +EXPORT_SYMBOL vmlinux 0xcefcd99a serial8250_unregister_port +EXPORT_SYMBOL vmlinux 0xcf265e28 __genl_register_family +EXPORT_SYMBOL vmlinux 0xcf274cbe compat_ip_setsockopt +EXPORT_SYMBOL vmlinux 0xcf383841 sock_i_uid +EXPORT_SYMBOL vmlinux 0xcf56387c inode_init_owner +EXPORT_SYMBOL vmlinux 0xcf581efa __cleancache_invalidate_page +EXPORT_SYMBOL vmlinux 0xcf638063 dquot_mark_dquot_dirty +EXPORT_SYMBOL vmlinux 0xcf6eea2e kernel_setsockopt +EXPORT_SYMBOL vmlinux 0xcf7839fd i2c_put_adapter +EXPORT_SYMBOL vmlinux 0xcf7bb085 __nlmsg_put +EXPORT_SYMBOL vmlinux 0xcf8a2bac read_cache_page_gfp +EXPORT_SYMBOL vmlinux 0xcfb27441 bio_copy_data +EXPORT_SYMBOL vmlinux 0xcfb7d5a0 cpu_sibling_map +EXPORT_SYMBOL vmlinux 0xcfccb0a8 framebuffer_alloc +EXPORT_SYMBOL vmlinux 0xcfd330b6 lro_flush_all +EXPORT_SYMBOL vmlinux 0xcfe7907a page_put_link +EXPORT_SYMBOL vmlinux 0xd047a2c6 dquot_quotactl_sysfile_ops +EXPORT_SYMBOL vmlinux 0xd0513320 tcf_em_register +EXPORT_SYMBOL vmlinux 0xd05931ec _lv1_set_lpm_counter_control +EXPORT_SYMBOL vmlinux 0xd0720a17 on_each_cpu_cond +EXPORT_SYMBOL vmlinux 0xd076638d netif_napi_del +EXPORT_SYMBOL vmlinux 0xd08f1b60 scsi_bios_ptable +EXPORT_SYMBOL vmlinux 0xd08f6239 sg_copy_from_buffer +EXPORT_SYMBOL vmlinux 0xd09b0199 fence_context_alloc +EXPORT_SYMBOL vmlinux 0xd0a19484 tcp_v4_connect +EXPORT_SYMBOL vmlinux 0xd0a2847c sha_init +EXPORT_SYMBOL vmlinux 0xd0a6ec3d phy_ethtool_sset +EXPORT_SYMBOL vmlinux 0xd0a91bab skip_spaces +EXPORT_SYMBOL vmlinux 0xd0b192df phy_driver_unregister +EXPORT_SYMBOL vmlinux 0xd0d26f56 unmap_underlying_metadata +EXPORT_SYMBOL vmlinux 0xd0ee38b8 schedule_timeout_uninterruptible +EXPORT_SYMBOL vmlinux 0xd0f36f0d audit_log_format +EXPORT_SYMBOL vmlinux 0xd0f4a52b iget_locked +EXPORT_SYMBOL vmlinux 0xd0fb7cd4 __tasklet_hi_schedule_first +EXPORT_SYMBOL vmlinux 0xd0fef3b2 agp_free_key +EXPORT_SYMBOL vmlinux 0xd115e2a3 note_scsi_host +EXPORT_SYMBOL vmlinux 0xd1262886 rtas_data_buf +EXPORT_SYMBOL vmlinux 0xd13b5bfa tty_write_room +EXPORT_SYMBOL vmlinux 0xd14072fb param_ops_ulong +EXPORT_SYMBOL vmlinux 0xd14fe6d9 iterate_fd +EXPORT_SYMBOL vmlinux 0xd16a165b inet_stream_connect +EXPORT_SYMBOL vmlinux 0xd177bb11 send_sig +EXPORT_SYMBOL vmlinux 0xd17ef836 gro_find_complete_by_type +EXPORT_SYMBOL vmlinux 0xd1816f32 frontswap_writethrough +EXPORT_SYMBOL vmlinux 0xd192c931 ip_mc_join_group +EXPORT_SYMBOL vmlinux 0xd1ce5143 vfs_statfs +EXPORT_SYMBOL vmlinux 0xd1cf161a bdi_init +EXPORT_SYMBOL vmlinux 0xd1d87e92 scsi_mlreturn_string +EXPORT_SYMBOL vmlinux 0xd1e740ef macio_request_resources +EXPORT_SYMBOL vmlinux 0xd1e95470 simple_rename +EXPORT_SYMBOL vmlinux 0xd1ea70e4 i2c_del_driver +EXPORT_SYMBOL vmlinux 0xd1f418c7 of_n_size_cells +EXPORT_SYMBOL vmlinux 0xd1fe8ebb _lv1_get_spe_interrupt_status +EXPORT_SYMBOL vmlinux 0xd220cf8a jiffies_to_timespec +EXPORT_SYMBOL vmlinux 0xd237941b remove_proc_entry +EXPORT_SYMBOL vmlinux 0xd251d7b0 security_socket_getpeersec_dgram +EXPORT_SYMBOL vmlinux 0xd2555f19 jiffies_64_to_clock_t +EXPORT_SYMBOL vmlinux 0xd258da6a __blkdev_reread_part +EXPORT_SYMBOL vmlinux 0xd25d4f74 console_blank_hook +EXPORT_SYMBOL vmlinux 0xd263ea56 tcp_setsockopt +EXPORT_SYMBOL vmlinux 0xd266133e unregister_shrinker +EXPORT_SYMBOL vmlinux 0xd27b25dd blk_check_plugged +EXPORT_SYMBOL vmlinux 0xd2a5b93c rwsem_downgrade_wake +EXPORT_SYMBOL vmlinux 0xd2b09ce5 __kmalloc +EXPORT_SYMBOL vmlinux 0xd2c1ddc0 lock_two_nondirectories +EXPORT_SYMBOL vmlinux 0xd2c8fd4d inet_add_protocol +EXPORT_SYMBOL vmlinux 0xd2da1048 register_netdevice_notifier +EXPORT_SYMBOL vmlinux 0xd2dbc330 register_framebuffer +EXPORT_SYMBOL vmlinux 0xd2e007af padata_unregister_cpumask_notifier +EXPORT_SYMBOL vmlinux 0xd2e56185 pmac_suspend_agp_for_card +EXPORT_SYMBOL vmlinux 0xd2ef2638 smu_cmdbuf_abs +EXPORT_SYMBOL vmlinux 0xd2f9b2eb neigh_table_clear +EXPORT_SYMBOL vmlinux 0xd31ccb06 of_machine_is_compatible +EXPORT_SYMBOL vmlinux 0xd3262f66 iput +EXPORT_SYMBOL vmlinux 0xd33f61f1 blk_queue_prep_rq +EXPORT_SYMBOL vmlinux 0xd34125fe netlink_ack +EXPORT_SYMBOL vmlinux 0xd3496230 block_invalidatepage +EXPORT_SYMBOL vmlinux 0xd349becc xfrm6_rcv +EXPORT_SYMBOL vmlinux 0xd3516587 __free_pages +EXPORT_SYMBOL vmlinux 0xd36e3d59 prandom_bytes_state +EXPORT_SYMBOL vmlinux 0xd3771ea0 pci_lost_interrupt +EXPORT_SYMBOL vmlinux 0xd37ac4b0 fs_bio_set +EXPORT_SYMBOL vmlinux 0xd3a9957a eth_mac_addr +EXPORT_SYMBOL vmlinux 0xd3ad1aaa inode_init_always +EXPORT_SYMBOL vmlinux 0xd3b234ad proc_create_data +EXPORT_SYMBOL vmlinux 0xd3d54b77 iommu_tbl_range_alloc +EXPORT_SYMBOL vmlinux 0xd3fa3b66 xfrm4_rcv_cb +EXPORT_SYMBOL vmlinux 0xd3ff8c03 padata_remove_cpu +EXPORT_SYMBOL vmlinux 0xd409383c pmu_request +EXPORT_SYMBOL vmlinux 0xd409a441 jbd2_journal_errno +EXPORT_SYMBOL vmlinux 0xd40cc9d0 copy_from_iter +EXPORT_SYMBOL vmlinux 0xd41e7eae of_find_node_by_phandle +EXPORT_SYMBOL vmlinux 0xd42b5818 simple_write_end +EXPORT_SYMBOL vmlinux 0xd42e788d con_copy_unimap +EXPORT_SYMBOL vmlinux 0xd44b7e21 to_tm +EXPORT_SYMBOL vmlinux 0xd450c80c qdisc_warn_nonwc +EXPORT_SYMBOL vmlinux 0xd45cc6ca bin2hex +EXPORT_SYMBOL vmlinux 0xd460d215 agp_generic_alloc_user +EXPORT_SYMBOL vmlinux 0xd46b7102 of_graph_get_remote_port +EXPORT_SYMBOL vmlinux 0xd4730551 agp_copy_info +EXPORT_SYMBOL vmlinux 0xd4786466 xfrm_policy_register_afinfo +EXPORT_SYMBOL vmlinux 0xd48fdeef dql_completed +EXPORT_SYMBOL vmlinux 0xd49e3f53 filemap_fdatawrite +EXPORT_SYMBOL vmlinux 0xd4bad67a netdev_lower_dev_get_private +EXPORT_SYMBOL vmlinux 0xd4c515bf bh_uptodate_or_lock +EXPORT_SYMBOL vmlinux 0xd52909d9 scsi_register +EXPORT_SYMBOL vmlinux 0xd5349752 mipi_dsi_dcs_set_column_address +EXPORT_SYMBOL vmlinux 0xd54f41ce try_to_del_timer_sync +EXPORT_SYMBOL vmlinux 0xd55b2abb dev_graft_qdisc +EXPORT_SYMBOL vmlinux 0xd591cf03 max8925_reg_read +EXPORT_SYMBOL vmlinux 0xd591eb4a pci_read_vpd +EXPORT_SYMBOL vmlinux 0xd598f87e frontswap_register_ops +EXPORT_SYMBOL vmlinux 0xd5a72947 pci_choose_state +EXPORT_SYMBOL vmlinux 0xd5b5538a ipv6_chk_addr_and_flags +EXPORT_SYMBOL vmlinux 0xd5d5c936 udp_proc_unregister +EXPORT_SYMBOL vmlinux 0xd5e1d719 _lv1_set_ppe_periodic_tracer_frequency +EXPORT_SYMBOL vmlinux 0xd5ea2542 iov_iter_kvec +EXPORT_SYMBOL vmlinux 0xd5f3b4e2 netif_tx_stop_all_queues +EXPORT_SYMBOL vmlinux 0xd60123ab build_skb +EXPORT_SYMBOL vmlinux 0xd607b094 setattr_copy +EXPORT_SYMBOL vmlinux 0xd6100908 ip_options_rcv_srr +EXPORT_SYMBOL vmlinux 0xd61342d7 bioset_create_nobvec +EXPORT_SYMBOL vmlinux 0xd616683a ecryptfs_fill_auth_tok +EXPORT_SYMBOL vmlinux 0xd6267e0e bitmap_start_sync +EXPORT_SYMBOL vmlinux 0xd62b73d5 __skb_gro_checksum_complete +EXPORT_SYMBOL vmlinux 0xd62c833f schedule_timeout +EXPORT_SYMBOL vmlinux 0xd6356dae PDE_DATA +EXPORT_SYMBOL vmlinux 0xd648e564 fb_match_mode +EXPORT_SYMBOL vmlinux 0xd64d33ab blk_queue_merge_bvec +EXPORT_SYMBOL vmlinux 0xd6543d16 generic_file_llseek +EXPORT_SYMBOL vmlinux 0xd65fc11c mb_cache_entry_alloc +EXPORT_SYMBOL vmlinux 0xd663d747 rtnl_set_sk_err +EXPORT_SYMBOL vmlinux 0xd66e3e88 of_get_next_available_child +EXPORT_SYMBOL vmlinux 0xd688716b dm_kcopyd_client_create +EXPORT_SYMBOL vmlinux 0xd690563e fsnotify_init_mark +EXPORT_SYMBOL vmlinux 0xd69a59d1 tso_count_descs +EXPORT_SYMBOL vmlinux 0xd6afea11 dquot_enable +EXPORT_SYMBOL vmlinux 0xd6c18f8f unlock_rename +EXPORT_SYMBOL vmlinux 0xd6d45d05 vme_lm_request +EXPORT_SYMBOL vmlinux 0xd6d63e9d lg_local_lock_cpu +EXPORT_SYMBOL vmlinux 0xd6dc821e inet6_getname +EXPORT_SYMBOL vmlinux 0xd6edf811 _lv1_release_memory +EXPORT_SYMBOL vmlinux 0xd6ee688f vmalloc +EXPORT_SYMBOL vmlinux 0xd6f05c87 ihold +EXPORT_SYMBOL vmlinux 0xd6f96a1f __dynamic_netdev_dbg +EXPORT_SYMBOL vmlinux 0xd6fd4053 __arch_hweight32 +EXPORT_SYMBOL vmlinux 0xd71cc493 tcp_md5_hash_key +EXPORT_SYMBOL vmlinux 0xd72ce077 blk_pm_runtime_init +EXPORT_SYMBOL vmlinux 0xd72e1cfc _lv1_set_lpm_spr_trigger +EXPORT_SYMBOL vmlinux 0xd75c79df smp_call_function +EXPORT_SYMBOL vmlinux 0xd75f42b2 blk_limits_io_opt +EXPORT_SYMBOL vmlinux 0xd7615081 module_layout +EXPORT_SYMBOL vmlinux 0xd761a383 ioremap_prot +EXPORT_SYMBOL vmlinux 0xd7685722 km_new_mapping +EXPORT_SYMBOL vmlinux 0xd7821730 page_zero_new_buffers +EXPORT_SYMBOL vmlinux 0xd786c0ea plpar_hcall9 +EXPORT_SYMBOL vmlinux 0xd78e6f89 security_skb_classify_flow +EXPORT_SYMBOL vmlinux 0xd7ac76da __cleancache_put_page +EXPORT_SYMBOL vmlinux 0xd7cc3f9e mdiobus_free +EXPORT_SYMBOL vmlinux 0xd7dc354c replace_mount_options +EXPORT_SYMBOL vmlinux 0xd7e56a4e simple_strtoll +EXPORT_SYMBOL vmlinux 0xd7ea7094 nf_unregister_queue_handler +EXPORT_SYMBOL vmlinux 0xd7f7f315 vlan_vids_del_by_dev +EXPORT_SYMBOL vmlinux 0xd822d0fa pci_pme_active +EXPORT_SYMBOL vmlinux 0xd838226a pnv_cxl_get_irq_count +EXPORT_SYMBOL vmlinux 0xd84ef8e9 __block_write_begin +EXPORT_SYMBOL vmlinux 0xd852b02e tc_classify_compat +EXPORT_SYMBOL vmlinux 0xd86803c6 sock_no_connect +EXPORT_SYMBOL vmlinux 0xd8727dc6 inet6_register_protosw +EXPORT_SYMBOL vmlinux 0xd88b3515 dev_set_promiscuity +EXPORT_SYMBOL vmlinux 0xd89472e6 xfrm_state_lookup_byspi +EXPORT_SYMBOL vmlinux 0xd89692a3 nla_reserve +EXPORT_SYMBOL vmlinux 0xd89da37f movable_zone +EXPORT_SYMBOL vmlinux 0xd89f6332 generic_fillattr +EXPORT_SYMBOL vmlinux 0xd8a03893 scsi_report_opcode +EXPORT_SYMBOL vmlinux 0xd8a994eb scsi_extd_sense_format +EXPORT_SYMBOL vmlinux 0xd8aea3ee ioc_lookup_icq +EXPORT_SYMBOL vmlinux 0xd8b1c543 inet_getname +EXPORT_SYMBOL vmlinux 0xd8b8edcc mount_bdev +EXPORT_SYMBOL vmlinux 0xd8ded085 radix_tree_maybe_preload +EXPORT_SYMBOL vmlinux 0xd8df8aba zpool_register_driver +EXPORT_SYMBOL vmlinux 0xd8e484f0 register_chrdev_region +EXPORT_SYMBOL vmlinux 0xd90de835 tty_port_put +EXPORT_SYMBOL vmlinux 0xd90ecf1a pipe_lock +EXPORT_SYMBOL vmlinux 0xd91ffc95 pm860x_bulk_read +EXPORT_SYMBOL vmlinux 0xd9226426 pci_get_slot +EXPORT_SYMBOL vmlinux 0xd94efdad fb_blank +EXPORT_SYMBOL vmlinux 0xd94fc197 tcp_mtup_init +EXPORT_SYMBOL vmlinux 0xd950646c dev_open +EXPORT_SYMBOL vmlinux 0xd957cb58 tty_kref_put +EXPORT_SYMBOL vmlinux 0xd9646800 agp_generic_enable +EXPORT_SYMBOL vmlinux 0xd96c8059 pci_enable_device_io +EXPORT_SYMBOL vmlinux 0xd975bd2c of_device_alloc +EXPORT_SYMBOL vmlinux 0xd97945b0 unlink_framebuffer +EXPORT_SYMBOL vmlinux 0xd97e955f dev_mc_add_global +EXPORT_SYMBOL vmlinux 0xd982f61a vc_resize +EXPORT_SYMBOL vmlinux 0xd985dc99 mempool_free_pages +EXPORT_SYMBOL vmlinux 0xd98da505 pci_bus_alloc_resource +EXPORT_SYMBOL vmlinux 0xd9a3771c pagecache_write_begin +EXPORT_SYMBOL vmlinux 0xd9bac924 tty_termios_copy_hw +EXPORT_SYMBOL vmlinux 0xd9c2083d tcp_enter_memory_pressure +EXPORT_SYMBOL vmlinux 0xd9d3e308 wake_up_process +EXPORT_SYMBOL vmlinux 0xd9d4d09d _lv1_release_io_segment +EXPORT_SYMBOL vmlinux 0xd9d8fd16 register_restart_handler +EXPORT_SYMBOL vmlinux 0xd9e617c0 seq_path +EXPORT_SYMBOL vmlinux 0xd9e9d2bc netlink_broadcast_filtered +EXPORT_SYMBOL vmlinux 0xd9f9ac5a __pagevec_lru_add +EXPORT_SYMBOL vmlinux 0xda0f5234 rtas_offline_cpus_mask +EXPORT_SYMBOL vmlinux 0xda11a8ba simple_setattr +EXPORT_SYMBOL vmlinux 0xda3d10a8 security_tun_dev_open +EXPORT_SYMBOL vmlinux 0xda452440 dev_alloc_name +EXPORT_SYMBOL vmlinux 0xda5ac0e7 blk_queue_invalidate_tags +EXPORT_SYMBOL vmlinux 0xda7ca6cb fb_mode_is_equal +EXPORT_SYMBOL vmlinux 0xda7e4e48 bio_integrity_free +EXPORT_SYMBOL vmlinux 0xda837818 netpoll_poll_disable +EXPORT_SYMBOL vmlinux 0xda8af7ad fb_find_nearest_mode +EXPORT_SYMBOL vmlinux 0xdabc1ea8 fsl_lbc_find +EXPORT_SYMBOL vmlinux 0xdabd6cd9 vfs_llseek +EXPORT_SYMBOL vmlinux 0xdac115ed tcf_exts_change +EXPORT_SYMBOL vmlinux 0xdac4913a bitmap_allocate_region +EXPORT_SYMBOL vmlinux 0xdac545b9 lockref_get_or_lock +EXPORT_SYMBOL vmlinux 0xdad716f1 seq_open +EXPORT_SYMBOL vmlinux 0xdaea6e0d mfd_clone_cell +EXPORT_SYMBOL vmlinux 0xdaf0c7e1 fb_pan_display +EXPORT_SYMBOL vmlinux 0xdb01198e fsl_upm_find +EXPORT_SYMBOL vmlinux 0xdb3bcca6 cancel_delayed_work +EXPORT_SYMBOL vmlinux 0xdb68bbad rfkill_destroy +EXPORT_SYMBOL vmlinux 0xdb760f52 __kfifo_free +EXPORT_SYMBOL vmlinux 0xdbaea56b swiotlb_sync_single_for_cpu +EXPORT_SYMBOL vmlinux 0xdbb09bac try_to_release_page +EXPORT_SYMBOL vmlinux 0xdbb4619b mmc_register_driver +EXPORT_SYMBOL vmlinux 0xdbb92dc5 ww_mutex_unlock +EXPORT_SYMBOL vmlinux 0xdbbd24a2 pcix_get_max_mmrbc +EXPORT_SYMBOL vmlinux 0xdbd2d932 dma_pool_create +EXPORT_SYMBOL vmlinux 0xdbd6392f scsi_ioctl +EXPORT_SYMBOL vmlinux 0xdbe33e5c blk_queue_segment_boundary +EXPORT_SYMBOL vmlinux 0xdbed5d81 neigh_table_init +EXPORT_SYMBOL vmlinux 0xdc047fc4 scsi_dev_info_list_add_keyed +EXPORT_SYMBOL vmlinux 0xdc0521e8 devm_ioport_unmap +EXPORT_SYMBOL vmlinux 0xdc0ae9ba blk_queue_end_tag +EXPORT_SYMBOL vmlinux 0xdc14eda7 pci_pci_problems +EXPORT_SYMBOL vmlinux 0xdc240b94 xfrm_policy_bysel_ctx +EXPORT_SYMBOL vmlinux 0xdc3442f6 __register_chrdev +EXPORT_SYMBOL vmlinux 0xdc3c41a8 __crypto_memneq +EXPORT_SYMBOL vmlinux 0xdc3fcbc9 __sw_hweight8 +EXPORT_SYMBOL vmlinux 0xdc41911b __splice_from_pipe +EXPORT_SYMBOL vmlinux 0xdc444c9c skb_checksum_trimmed +EXPORT_SYMBOL vmlinux 0xdc512134 backlight_register_notifier +EXPORT_SYMBOL vmlinux 0xdc5e67d9 param_get_ullong +EXPORT_SYMBOL vmlinux 0xdc69088c ethtool_op_get_link +EXPORT_SYMBOL vmlinux 0xdc8fa2e4 ipv6_chk_prefix +EXPORT_SYMBOL vmlinux 0xdc9193e9 mb_cache_entry_get +EXPORT_SYMBOL vmlinux 0xdc9498dd down +EXPORT_SYMBOL vmlinux 0xdcb0349b sys_close +EXPORT_SYMBOL vmlinux 0xdcb6604d to_ndd +EXPORT_SYMBOL vmlinux 0xdcb764ad memset +EXPORT_SYMBOL vmlinux 0xdccec673 d_alloc_name +EXPORT_SYMBOL vmlinux 0xdcdea472 security_inode_getsecctx +EXPORT_SYMBOL vmlinux 0xdcefb9a5 pmu_resume +EXPORT_SYMBOL vmlinux 0xdd1f41b5 sock_kmalloc +EXPORT_SYMBOL vmlinux 0xdd290866 ppp_register_channel +EXPORT_SYMBOL vmlinux 0xdd483fed n_tty_ioctl_helper +EXPORT_SYMBOL vmlinux 0xdd498cff tcp_try_fastopen +EXPORT_SYMBOL vmlinux 0xdd51de1c devfreq_suspend_device +EXPORT_SYMBOL vmlinux 0xdd63e91c sock_wmalloc +EXPORT_SYMBOL vmlinux 0xdd6702af cdrom_mode_sense +EXPORT_SYMBOL vmlinux 0xdd7ac67e inet_register_protosw +EXPORT_SYMBOL vmlinux 0xdd9030af current_stack_pointer +EXPORT_SYMBOL vmlinux 0xdd955144 __debugger +EXPORT_SYMBOL vmlinux 0xdd96610c macio_release_resource +EXPORT_SYMBOL vmlinux 0xddb3769b lockref_mark_dead +EXPORT_SYMBOL vmlinux 0xddb6a858 key_invalidate +EXPORT_SYMBOL vmlinux 0xddca441b ip_route_input_noref +EXPORT_SYMBOL vmlinux 0xddcabc24 sys_imageblit +EXPORT_SYMBOL vmlinux 0xddec1d0d tty_insert_flip_string_fixed_flag +EXPORT_SYMBOL vmlinux 0xde1ada50 dma_common_get_sgtable +EXPORT_SYMBOL vmlinux 0xde20bf58 datagram_poll +EXPORT_SYMBOL vmlinux 0xde324309 follow_up +EXPORT_SYMBOL vmlinux 0xde48e9ca _raw_spin_lock +EXPORT_SYMBOL vmlinux 0xde4d12be phy_ethtool_gset +EXPORT_SYMBOL vmlinux 0xde6151db tcp_memory_allocated +EXPORT_SYMBOL vmlinux 0xde6500df input_register_device +EXPORT_SYMBOL vmlinux 0xde783883 pSeries_disable_reloc_on_exc +EXPORT_SYMBOL vmlinux 0xde806336 fixed_phy_update_state +EXPORT_SYMBOL vmlinux 0xde91448c load_vr_state +EXPORT_SYMBOL vmlinux 0xde9360ba totalram_pages +EXPORT_SYMBOL vmlinux 0xde9b17ed agp3_generic_fetch_size +EXPORT_SYMBOL vmlinux 0xde9b55e3 trace_raw_output_prep +EXPORT_SYMBOL vmlinux 0xdeb2037b dquot_destroy +EXPORT_SYMBOL vmlinux 0xded521fe pm860x_reg_write +EXPORT_SYMBOL vmlinux 0xdedb3998 sk_prot_clear_portaddr_nulls +EXPORT_SYMBOL vmlinux 0xdeefa7b4 generic_perform_write +EXPORT_SYMBOL vmlinux 0xdefee621 ip_do_fragment +EXPORT_SYMBOL vmlinux 0xdf09ec17 __devcgroup_inode_permission +EXPORT_SYMBOL vmlinux 0xdf2c2742 rb_last +EXPORT_SYMBOL vmlinux 0xdf2f55ca call_netdevice_notifiers +EXPORT_SYMBOL vmlinux 0xdf3798bc __wait_on_buffer +EXPORT_SYMBOL vmlinux 0xdf379ff4 security_task_getsecid +EXPORT_SYMBOL vmlinux 0xdf40cab9 simple_dir_operations +EXPORT_SYMBOL vmlinux 0xdf456779 ipv6_select_ident +EXPORT_SYMBOL vmlinux 0xdf54a8f7 netlink_unregister_notifier +EXPORT_SYMBOL vmlinux 0xdf60cc27 __print_symbol +EXPORT_SYMBOL vmlinux 0xdf60fc83 _lv1_net_start_tx_dma +EXPORT_SYMBOL vmlinux 0xdf812ea0 sock_alloc_send_pskb +EXPORT_SYMBOL vmlinux 0xdf929370 fs_overflowgid +EXPORT_SYMBOL vmlinux 0xdf935019 vga_con +EXPORT_SYMBOL vmlinux 0xdf9ea392 pci_restore_state +EXPORT_SYMBOL vmlinux 0xdfa3e775 remove_proc_subtree +EXPORT_SYMBOL vmlinux 0xdfa4f403 uart_get_baud_rate +EXPORT_SYMBOL vmlinux 0xdfbd6159 nf_unregister_hooks +EXPORT_SYMBOL vmlinux 0xdfd2eef8 add_to_page_cache_locked +EXPORT_SYMBOL vmlinux 0xdff905e5 vme_slave_free +EXPORT_SYMBOL vmlinux 0xe00b9f20 scsi_remove_device +EXPORT_SYMBOL vmlinux 0xe028020b netdev_upper_dev_link +EXPORT_SYMBOL vmlinux 0xe047eb25 unload_nls +EXPORT_SYMBOL vmlinux 0xe04f7caa dm_read_arg_group +EXPORT_SYMBOL vmlinux 0xe0569864 padata_set_cpumasks +EXPORT_SYMBOL vmlinux 0xe06141e9 security_sk_clone +EXPORT_SYMBOL vmlinux 0xe075d6eb iter_div_u64_rem +EXPORT_SYMBOL vmlinux 0xe07c693a netlink_broadcast +EXPORT_SYMBOL vmlinux 0xe07d8555 serio_unregister_driver +EXPORT_SYMBOL vmlinux 0xe083e246 gen_pool_first_fit_order_align +EXPORT_SYMBOL vmlinux 0xe09eda66 alloc_buffer_head +EXPORT_SYMBOL vmlinux 0xe0b13336 argv_free +EXPORT_SYMBOL vmlinux 0xe0ecd9d4 mmc_gpio_request_ro +EXPORT_SYMBOL vmlinux 0xe0f7ac4e md_integrity_add_rdev +EXPORT_SYMBOL vmlinux 0xe108ebc7 __sync_dirty_buffer +EXPORT_SYMBOL vmlinux 0xe10f1cdf i2c_smbus_read_byte +EXPORT_SYMBOL vmlinux 0xe113bbbc csum_partial +EXPORT_SYMBOL vmlinux 0xe1172b6d path_is_under +EXPORT_SYMBOL vmlinux 0xe11b7ebc tcf_hash_search +EXPORT_SYMBOL vmlinux 0xe1215678 phys_mem_access_prot +EXPORT_SYMBOL vmlinux 0xe150dd6e blk_queue_init_tags +EXPORT_SYMBOL vmlinux 0xe1761617 security_inet_conn_request +EXPORT_SYMBOL vmlinux 0xe1786c32 make_flow_keys_digest +EXPORT_SYMBOL vmlinux 0xe17ff763 skb_try_coalesce +EXPORT_SYMBOL vmlinux 0xe1820bd4 phy_drivers_register +EXPORT_SYMBOL vmlinux 0xe1853711 scsi_device_get +EXPORT_SYMBOL vmlinux 0xe187566d softnet_data +EXPORT_SYMBOL vmlinux 0xe19b8e62 kmem_cache_alloc_trace +EXPORT_SYMBOL vmlinux 0xe1fa38a6 inode_set_bytes +EXPORT_SYMBOL vmlinux 0xe200f872 secure_dccpv6_sequence_number +EXPORT_SYMBOL vmlinux 0xe20372ae radix_tree_gang_lookup +EXPORT_SYMBOL vmlinux 0xe20c63e7 _lv1_unmap_device_mmio_region +EXPORT_SYMBOL vmlinux 0xe2202a0a __netdev_alloc_skb +EXPORT_SYMBOL vmlinux 0xe220ceb8 __debugger_sstep +EXPORT_SYMBOL vmlinux 0xe2304303 mac_map_monitor_sense +EXPORT_SYMBOL vmlinux 0xe23ae481 blk_iopoll_complete +EXPORT_SYMBOL vmlinux 0xe23bcbe5 posix_lock_inode_wait +EXPORT_SYMBOL vmlinux 0xe24d3a97 jiffies_64 +EXPORT_SYMBOL vmlinux 0xe24d83b0 fsnotify_destroy_mark +EXPORT_SYMBOL vmlinux 0xe25ad8ca dm_put_device +EXPORT_SYMBOL vmlinux 0xe26cb8cc pci_enable_msix +EXPORT_SYMBOL vmlinux 0xe29ae430 jbd2_journal_get_write_access +EXPORT_SYMBOL vmlinux 0xe29b99d7 always_delete_dentry +EXPORT_SYMBOL vmlinux 0xe29e1d0e out_of_line_wait_on_atomic_t +EXPORT_SYMBOL vmlinux 0xe2be5498 lg_global_unlock +EXPORT_SYMBOL vmlinux 0xe2d5255a strcmp +EXPORT_SYMBOL vmlinux 0xe2ea9ec7 nobh_writepage +EXPORT_SYMBOL vmlinux 0xe2f425e7 rps_cpu_mask +EXPORT_SYMBOL vmlinux 0xe2f7092e input_unregister_device +EXPORT_SYMBOL vmlinux 0xe316d240 flock_lock_inode_wait +EXPORT_SYMBOL vmlinux 0xe316f4ef dma_async_device_unregister +EXPORT_SYMBOL vmlinux 0xe35404a0 blk_pre_runtime_suspend +EXPORT_SYMBOL vmlinux 0xe3a53f4c sort +EXPORT_SYMBOL vmlinux 0xe3a54cdb inet_del_protocol +EXPORT_SYMBOL vmlinux 0xe3c9ab68 d_obtain_alias +EXPORT_SYMBOL vmlinux 0xe3d228f5 paca +EXPORT_SYMBOL vmlinux 0xe3d6f284 fb_find_mode_cvt +EXPORT_SYMBOL vmlinux 0xe3e23834 finish_open +EXPORT_SYMBOL vmlinux 0xe3e8f13b dquot_commit_info +EXPORT_SYMBOL vmlinux 0xe44f80fc serial8250_set_isa_configurator +EXPORT_SYMBOL vmlinux 0xe4526691 check_disk_change +EXPORT_SYMBOL vmlinux 0xe45c6e3d mmc_alloc_host +EXPORT_SYMBOL vmlinux 0xe4706f86 sock_no_recvmsg +EXPORT_SYMBOL vmlinux 0xe484e35f ioread32 +EXPORT_SYMBOL vmlinux 0xe487e8bf key_payload_reserve +EXPORT_SYMBOL vmlinux 0xe490202f __scm_destroy +EXPORT_SYMBOL vmlinux 0xe4a3e7bc pid_task +EXPORT_SYMBOL vmlinux 0xe4bee033 nd_region_release_lane +EXPORT_SYMBOL vmlinux 0xe4c5c4c0 bio_advance +EXPORT_SYMBOL vmlinux 0xe4c7e916 udp_lib_rehash +EXPORT_SYMBOL vmlinux 0xe4d61437 handle_edge_irq +EXPORT_SYMBOL vmlinux 0xe4f373d1 fbcon_set_tileops +EXPORT_SYMBOL vmlinux 0xe4f51655 blk_queue_stack_limits +EXPORT_SYMBOL vmlinux 0xe4fe8ca1 _raw_spin_unlock_bh +EXPORT_SYMBOL vmlinux 0xe503ff7b setup_arg_pages +EXPORT_SYMBOL vmlinux 0xe5183c52 cleancache_register_ops +EXPORT_SYMBOL vmlinux 0xe523ad75 synchronize_irq +EXPORT_SYMBOL vmlinux 0xe52e76c7 inet6_protos +EXPORT_SYMBOL vmlinux 0xe534b71b seq_read +EXPORT_SYMBOL vmlinux 0xe54b3dbe pci_bus_read_config_word +EXPORT_SYMBOL vmlinux 0xe55c8cb0 generic_listxattr +EXPORT_SYMBOL vmlinux 0xe5655960 locks_init_lock +EXPORT_SYMBOL vmlinux 0xe569a414 mmc_unregister_driver +EXPORT_SYMBOL vmlinux 0xe56a97cc sk_alloc +EXPORT_SYMBOL vmlinux 0xe5734810 __wait_on_bit_lock +EXPORT_SYMBOL vmlinux 0xe57878a1 in6_pton +EXPORT_SYMBOL vmlinux 0xe57d3e5f skb_orphan_partial +EXPORT_SYMBOL vmlinux 0xe57f23e3 dev_get_iflink +EXPORT_SYMBOL vmlinux 0xe5867808 dlci_ioctl_set +EXPORT_SYMBOL vmlinux 0xe591a37e of_dev_get +EXPORT_SYMBOL vmlinux 0xe5a74825 iw_handler_get_thrspy +EXPORT_SYMBOL vmlinux 0xe5c78a99 do_blank_screen +EXPORT_SYMBOL vmlinux 0xe5df2457 scsi_print_result +EXPORT_SYMBOL vmlinux 0xe5ed5467 xfrm_policy_walk_init +EXPORT_SYMBOL vmlinux 0xe60988ac _lv1_query_logical_partition_address_region_info +EXPORT_SYMBOL vmlinux 0xe620aa6c register_netdev +EXPORT_SYMBOL vmlinux 0xe62acb4b dev_addr_add +EXPORT_SYMBOL vmlinux 0xe6300f14 mach_maple +EXPORT_SYMBOL vmlinux 0xe6397ba5 drop_super +EXPORT_SYMBOL vmlinux 0xe65291ac __pci_register_driver +EXPORT_SYMBOL vmlinux 0xe656e047 validate_sp +EXPORT_SYMBOL vmlinux 0xe66c5bf7 abx500_event_registers_startup_state_get +EXPORT_SYMBOL vmlinux 0xe6756b8d skb_seq_read +EXPORT_SYMBOL vmlinux 0xe67701f0 add_random_ready_callback +EXPORT_SYMBOL vmlinux 0xe67ede6b linkwatch_fire_event +EXPORT_SYMBOL vmlinux 0xe68610d0 get_thermal_instance +EXPORT_SYMBOL vmlinux 0xe697d108 __blk_iopoll_complete +EXPORT_SYMBOL vmlinux 0xe69a9df4 hdmi_spd_infoframe_pack +EXPORT_SYMBOL vmlinux 0xe6a9495d of_count_phandle_with_args +EXPORT_SYMBOL vmlinux 0xe6abd9b5 ps2_handle_ack +EXPORT_SYMBOL vmlinux 0xe6be8eab scsi_report_device_reset +EXPORT_SYMBOL vmlinux 0xe6fbe430 can_do_mlock +EXPORT_SYMBOL vmlinux 0xe70e7860 md_check_no_bitmap +EXPORT_SYMBOL vmlinux 0xe730251d kill_pid +EXPORT_SYMBOL vmlinux 0xe739de1e tcp_rcv_established +EXPORT_SYMBOL vmlinux 0xe74aa406 _lv1_set_dabr +EXPORT_SYMBOL vmlinux 0xe77a0237 ipv6_getsockopt +EXPORT_SYMBOL vmlinux 0xe7834dc2 pcie_get_minimum_link +EXPORT_SYMBOL vmlinux 0xe78ab5fa mmc_power_restore_host +EXPORT_SYMBOL vmlinux 0xe78c7ab7 powerpc_debugfs_root +EXPORT_SYMBOL vmlinux 0xe7a664c4 nf_hooks +EXPORT_SYMBOL vmlinux 0xe7a81967 audit_log_secctx +EXPORT_SYMBOL vmlinux 0xe7b3ea7d security_path_link +EXPORT_SYMBOL vmlinux 0xe7c80795 pci_bus_write_config_byte +EXPORT_SYMBOL vmlinux 0xe7cd99b7 smu_queue_simple +EXPORT_SYMBOL vmlinux 0xe7ce7439 _memcpy_fromio +EXPORT_SYMBOL vmlinux 0xe7d4daac seq_list_next +EXPORT_SYMBOL vmlinux 0xe7e237cb locks_copy_lock +EXPORT_SYMBOL vmlinux 0xe7f21841 blk_mq_delay_queue +EXPORT_SYMBOL vmlinux 0xe808ba24 scsi_eh_restore_cmnd +EXPORT_SYMBOL vmlinux 0xe815cc85 dquot_resume +EXPORT_SYMBOL vmlinux 0xe81ef1dd remove_conflicting_framebuffers +EXPORT_SYMBOL vmlinux 0xe8214184 tcf_exts_destroy +EXPORT_SYMBOL vmlinux 0xe82cc752 tcp_sockets_allocated +EXPORT_SYMBOL vmlinux 0xe833fa77 gen_pool_virt_to_phys +EXPORT_SYMBOL vmlinux 0xe85895d6 fb_firmware_edid +EXPORT_SYMBOL vmlinux 0xe8725cb1 genphy_restart_aneg +EXPORT_SYMBOL vmlinux 0xe877f4fd dquot_free_inode +EXPORT_SYMBOL vmlinux 0xe886d755 tcp_rtx_synack +EXPORT_SYMBOL vmlinux 0xe893fee7 mem_cgroup_end_page_stat +EXPORT_SYMBOL vmlinux 0xe8bea3bc qdisc_put_stab +EXPORT_SYMBOL vmlinux 0xe8c438f3 proc_dointvec_userhz_jiffies +EXPORT_SYMBOL vmlinux 0xe8ed2c47 ll_rw_block +EXPORT_SYMBOL vmlinux 0xe8f23c90 freezing_slow_path +EXPORT_SYMBOL vmlinux 0xe8ff51c9 mmc_gpiod_request_ro +EXPORT_SYMBOL vmlinux 0xe910ba3c jbd2_journal_invalidatepage +EXPORT_SYMBOL vmlinux 0xe914e41e strcpy +EXPORT_SYMBOL vmlinux 0xe9378d58 idr_get_next +EXPORT_SYMBOL vmlinux 0xe944d175 tty_port_tty_get +EXPORT_SYMBOL vmlinux 0xe953b21f get_next_ino +EXPORT_SYMBOL vmlinux 0xe9590c15 netif_skb_features +EXPORT_SYMBOL vmlinux 0xe9aeecd6 eth_header_parse +EXPORT_SYMBOL vmlinux 0xe9e4a836 tcp_md5_hash_skb_data +EXPORT_SYMBOL vmlinux 0xe9f7149c zlib_deflate_workspacesize +EXPORT_SYMBOL vmlinux 0xe9f985e9 mmc_detect_card_removed +EXPORT_SYMBOL vmlinux 0xea054b22 nla_policy_len +EXPORT_SYMBOL vmlinux 0xea091efe compat_sock_get_timestampns +EXPORT_SYMBOL vmlinux 0xea124d3c agp_generic_insert_memory +EXPORT_SYMBOL vmlinux 0xea16dd4c tcp_destroy_cgroup +EXPORT_SYMBOL vmlinux 0xea1a3e98 scsi_track_queue_full +EXPORT_SYMBOL vmlinux 0xea1ffe3a __vlan_find_dev_deep_rcu +EXPORT_SYMBOL vmlinux 0xea263d15 grab_cache_page_write_begin +EXPORT_SYMBOL vmlinux 0xea3c4dea netdev_err +EXPORT_SYMBOL vmlinux 0xea57c09f task_tgid_nr_ns +EXPORT_SYMBOL vmlinux 0xea5d903b alloc_disk +EXPORT_SYMBOL vmlinux 0xea6e69f5 xfrm_stateonly_find +EXPORT_SYMBOL vmlinux 0xea71d156 xfrm_state_update +EXPORT_SYMBOL vmlinux 0xea796f35 loop_backing_file +EXPORT_SYMBOL vmlinux 0xea7a42f9 __sg_free_table +EXPORT_SYMBOL vmlinux 0xea968c96 ___ratelimit +EXPORT_SYMBOL vmlinux 0xea98dad4 mmc_gpio_get_cd +EXPORT_SYMBOL vmlinux 0xeaf69a07 tcp_create_openreq_child +EXPORT_SYMBOL vmlinux 0xeb0ef4ff tty_name +EXPORT_SYMBOL vmlinux 0xeb126994 dm_register_target +EXPORT_SYMBOL vmlinux 0xeb2aec84 dev_uc_add +EXPORT_SYMBOL vmlinux 0xeb35c732 deactivate_locked_super +EXPORT_SYMBOL vmlinux 0xeb37101c audit_log_end +EXPORT_SYMBOL vmlinux 0xeb44339a free_pages_exact +EXPORT_SYMBOL vmlinux 0xeb5807b0 blk_queue_update_dma_pad +EXPORT_SYMBOL vmlinux 0xeb5accdf dev_crit +EXPORT_SYMBOL vmlinux 0xeb66bd73 consume_skb +EXPORT_SYMBOL vmlinux 0xeb75b87e pneigh_lookup +EXPORT_SYMBOL vmlinux 0xeb8c7b7b cxl_use_count +EXPORT_SYMBOL vmlinux 0xeb95127d __skb_recv_datagram +EXPORT_SYMBOL vmlinux 0xeba051a3 dev_mc_unsync +EXPORT_SYMBOL vmlinux 0xeba2a1f7 rtas_indicator_present +EXPORT_SYMBOL vmlinux 0xebcab3a6 ppc_pci_io +EXPORT_SYMBOL vmlinux 0xec1552b2 igrab +EXPORT_SYMBOL vmlinux 0xec30765a _lv1_allocate_io_segment +EXPORT_SYMBOL vmlinux 0xec53d717 gro_find_receive_by_type +EXPORT_SYMBOL vmlinux 0xec568e16 find_get_pages_contig +EXPORT_SYMBOL vmlinux 0xec8184c2 padata_free +EXPORT_SYMBOL vmlinux 0xecabc3fa nd_device_unregister +EXPORT_SYMBOL vmlinux 0xecbb3310 netif_napi_add +EXPORT_SYMBOL vmlinux 0xecbb926f xor_altivec_3 +EXPORT_SYMBOL vmlinux 0xecc9d0ea param_get_charp +EXPORT_SYMBOL vmlinux 0xece784c2 rb_first +EXPORT_SYMBOL vmlinux 0xece8c73f xfrm_register_type +EXPORT_SYMBOL vmlinux 0xed1c0941 install_exec_creds +EXPORT_SYMBOL vmlinux 0xed3462cd phy_attach_direct +EXPORT_SYMBOL vmlinux 0xed34b295 input_mt_report_finger_count +EXPORT_SYMBOL vmlinux 0xed3bab3a sk_receive_skb +EXPORT_SYMBOL vmlinux 0xed47fbf8 dma_async_device_register +EXPORT_SYMBOL vmlinux 0xed4ae186 agp_generic_remove_memory +EXPORT_SYMBOL vmlinux 0xed4f8e66 blkdev_put +EXPORT_SYMBOL vmlinux 0xed5224a9 tcp_connect +EXPORT_SYMBOL vmlinux 0xed532921 rtmsg_ifinfo +EXPORT_SYMBOL vmlinux 0xed597524 qdisc_get_rtab +EXPORT_SYMBOL vmlinux 0xed5a62ec jbd2_journal_start_commit +EXPORT_SYMBOL vmlinux 0xed652427 _lv1_set_interrupt_mask +EXPORT_SYMBOL vmlinux 0xed70bcf5 xfrm_state_register_afinfo +EXPORT_SYMBOL vmlinux 0xed7d1e38 kmem_cache_create +EXPORT_SYMBOL vmlinux 0xed8768e3 blkdev_fsync +EXPORT_SYMBOL vmlinux 0xed963da7 alloc_fddidev +EXPORT_SYMBOL vmlinux 0xed9f9a20 __ctzsi2 +EXPORT_SYMBOL vmlinux 0xedb72a06 drop_nlink +EXPORT_SYMBOL vmlinux 0xedbaee5e nla_strcmp +EXPORT_SYMBOL vmlinux 0xedc03953 iounmap +EXPORT_SYMBOL vmlinux 0xedc410d0 udplite_table +EXPORT_SYMBOL vmlinux 0xedd58442 mmc_start_bkops +EXPORT_SYMBOL vmlinux 0xedddc93b i2c_release_client +EXPORT_SYMBOL vmlinux 0xedf0030a __invalidate_device +EXPORT_SYMBOL vmlinux 0xedf0b48c _lv1_storage_get_async_status +EXPORT_SYMBOL vmlinux 0xee1e92c5 __module_get +EXPORT_SYMBOL vmlinux 0xee2d0fc7 _local_bh_enable +EXPORT_SYMBOL vmlinux 0xee518a38 vfs_writev +EXPORT_SYMBOL vmlinux 0xee589ae9 security_path_mkdir +EXPORT_SYMBOL vmlinux 0xee591867 kill_fasync +EXPORT_SYMBOL vmlinux 0xee59b3b4 ata_std_end_eh +EXPORT_SYMBOL vmlinux 0xee5bb20b _lv1_panic +EXPORT_SYMBOL vmlinux 0xee5dc755 freeze_bdev +EXPORT_SYMBOL vmlinux 0xee6b8477 scsi_is_host_device +EXPORT_SYMBOL vmlinux 0xee7611c2 agp_generic_type_to_mask_type +EXPORT_SYMBOL vmlinux 0xee78cb4d ip_setsockopt +EXPORT_SYMBOL vmlinux 0xee84286f param_ops_bool +EXPORT_SYMBOL vmlinux 0xee8f0b0d bdput +EXPORT_SYMBOL vmlinux 0xee9174c5 _lv1_storage_read +EXPORT_SYMBOL vmlinux 0xee91879b rb_first_postorder +EXPORT_SYMBOL vmlinux 0xeea9dbaf bitmap_bitremap +EXPORT_SYMBOL vmlinux 0xeeb5bd3b __tracepoint_kfree +EXPORT_SYMBOL vmlinux 0xeedcd473 generic_make_request +EXPORT_SYMBOL vmlinux 0xeee481f5 buffer_check_dirty_writeback +EXPORT_SYMBOL vmlinux 0xeee9aac4 i2c_smbus_write_block_data +EXPORT_SYMBOL vmlinux 0xeef161aa groups_free +EXPORT_SYMBOL vmlinux 0xeeffb903 phy_read_mmd_indirect +EXPORT_SYMBOL vmlinux 0xef306342 __napi_complete +EXPORT_SYMBOL vmlinux 0xef389b56 skb_queue_tail +EXPORT_SYMBOL vmlinux 0xef66bdf6 pci_scan_root_bus +EXPORT_SYMBOL vmlinux 0xef6c582a __scsi_iterate_devices +EXPORT_SYMBOL vmlinux 0xef8f8b24 set_user_nice +EXPORT_SYMBOL vmlinux 0xef954ccd jbd2_journal_clear_features +EXPORT_SYMBOL vmlinux 0xef971636 dev_deactivate +EXPORT_SYMBOL vmlinux 0xefa53ab7 vme_slot_num +EXPORT_SYMBOL vmlinux 0xefaab44a in_dev_finish_destroy +EXPORT_SYMBOL vmlinux 0xefc2e54d _lv1_storage_send_device_command +EXPORT_SYMBOL vmlinux 0xefd1624a vme_dma_free_attribute +EXPORT_SYMBOL vmlinux 0xefdd4d31 dqget +EXPORT_SYMBOL vmlinux 0xefdd70ce security_secid_to_secctx +EXPORT_SYMBOL vmlinux 0xefde1bbe flush_dcache_range +EXPORT_SYMBOL vmlinux 0xf0009fee put_pages_list +EXPORT_SYMBOL vmlinux 0xf00f161c compat_mc_getsockopt +EXPORT_SYMBOL vmlinux 0xf0187927 __sg_page_iter_next +EXPORT_SYMBOL vmlinux 0xf04cfdeb devm_devfreq_remove_device +EXPORT_SYMBOL vmlinux 0xf05ffa15 fb_var_to_videomode +EXPORT_SYMBOL vmlinux 0xf065f629 ioread16be +EXPORT_SYMBOL vmlinux 0xf067257c register_memory_isolate_notifier +EXPORT_SYMBOL vmlinux 0xf06f1837 md_check_recovery +EXPORT_SYMBOL vmlinux 0xf0780844 mfd_cell_enable +EXPORT_SYMBOL vmlinux 0xf0781652 km_query +EXPORT_SYMBOL vmlinux 0xf07bf06b inet_frag_destroy +EXPORT_SYMBOL vmlinux 0xf07fe9a0 lockref_put_or_lock +EXPORT_SYMBOL vmlinux 0xf07fe9a4 md_wakeup_thread +EXPORT_SYMBOL vmlinux 0xf08082c5 gnet_stats_finish_copy +EXPORT_SYMBOL vmlinux 0xf08c67de napi_alloc_frag +EXPORT_SYMBOL vmlinux 0xf08f561d init_special_inode +EXPORT_SYMBOL vmlinux 0xf09de776 get_random_int +EXPORT_SYMBOL vmlinux 0xf0a8237a radix_tree_gang_lookup_tag +EXPORT_SYMBOL vmlinux 0xf0b454cd devm_gpiod_get_array +EXPORT_SYMBOL vmlinux 0xf0c4121f generic_start_io_acct +EXPORT_SYMBOL vmlinux 0xf0d2f84a _lv1_gpu_context_free +EXPORT_SYMBOL vmlinux 0xf0d7bca6 sock_update_memcg +EXPORT_SYMBOL vmlinux 0xf0e9423d swiotlb_alloc_coherent +EXPORT_SYMBOL vmlinux 0xf0ef15b4 list_sort +EXPORT_SYMBOL vmlinux 0xf10526ac verify_spi_info +EXPORT_SYMBOL vmlinux 0xf10d5716 unregister_netdev +EXPORT_SYMBOL vmlinux 0xf10de535 ioread8 +EXPORT_SYMBOL vmlinux 0xf110e033 mipi_dsi_dcs_set_display_off +EXPORT_SYMBOL vmlinux 0xf1111414 user_revoke +EXPORT_SYMBOL vmlinux 0xf11cd6ce down_interruptible +EXPORT_SYMBOL vmlinux 0xf1205e2e file_remove_privs +EXPORT_SYMBOL vmlinux 0xf12e6cc4 skb_page_frag_refill +EXPORT_SYMBOL vmlinux 0xf134bfa4 __nla_put +EXPORT_SYMBOL vmlinux 0xf147dcb2 hdmi_spd_infoframe_init +EXPORT_SYMBOL vmlinux 0xf16f92f5 reservation_object_add_excl_fence +EXPORT_SYMBOL vmlinux 0xf16f9b00 single_open +EXPORT_SYMBOL vmlinux 0xf183189b __ioremap_at +EXPORT_SYMBOL vmlinux 0xf18a6cf1 from_kprojid_munged +EXPORT_SYMBOL vmlinux 0xf195c682 fb_invert_cmaps +EXPORT_SYMBOL vmlinux 0xf1969a8e __usecs_to_jiffies +EXPORT_SYMBOL vmlinux 0xf1c64913 mpage_writepages +EXPORT_SYMBOL vmlinux 0xf1db1704 nla_memcpy +EXPORT_SYMBOL vmlinux 0xf1e06df1 gen_pool_set_algo +EXPORT_SYMBOL vmlinux 0xf1e62b48 pci_remove_bus +EXPORT_SYMBOL vmlinux 0xf1e98c74 avenrun +EXPORT_SYMBOL vmlinux 0xf1f3dd30 param_set_int +EXPORT_SYMBOL vmlinux 0xf2001b59 scsi_command_normalize_sense +EXPORT_SYMBOL vmlinux 0xf20dabd8 free_irq +EXPORT_SYMBOL vmlinux 0xf214fcb3 skb_coalesce_rx_frag +EXPORT_SYMBOL vmlinux 0xf22881e8 lg_local_lock +EXPORT_SYMBOL vmlinux 0xf234edf1 xfrm_find_acq_byseq +EXPORT_SYMBOL vmlinux 0xf23fcb99 __kfifo_in +EXPORT_SYMBOL vmlinux 0xf241b569 xfrm_policy_hash_rebuild +EXPORT_SYMBOL vmlinux 0xf242cf0f bfifo_qdisc_ops +EXPORT_SYMBOL vmlinux 0xf2456818 textsearch_prepare +EXPORT_SYMBOL vmlinux 0xf245738e blk_mq_tag_busy_iter +EXPORT_SYMBOL vmlinux 0xf249be70 audit_log_start +EXPORT_SYMBOL vmlinux 0xf24c0920 mmc_hw_reset +EXPORT_SYMBOL vmlinux 0xf24dcaa8 _lv1_net_stop_rx_dma +EXPORT_SYMBOL vmlinux 0xf26eaafb tty_port_close_end +EXPORT_SYMBOL vmlinux 0xf2730ead page_waitqueue +EXPORT_SYMBOL vmlinux 0xf2741816 tty_port_carrier_raised +EXPORT_SYMBOL vmlinux 0xf27a1375 sock_no_listen +EXPORT_SYMBOL vmlinux 0xf27ee2de bdget_disk +EXPORT_SYMBOL vmlinux 0xf2886c9a read_code +EXPORT_SYMBOL vmlinux 0xf28abd05 blk_integrity_is_initialized +EXPORT_SYMBOL vmlinux 0xf2a0af8f backlight_device_registered +EXPORT_SYMBOL vmlinux 0xf2a2b163 resource_list_create_entry +EXPORT_SYMBOL vmlinux 0xf2c43f3f zlib_deflate +EXPORT_SYMBOL vmlinux 0xf2e049e5 inet_bind +EXPORT_SYMBOL vmlinux 0xf30d1036 _lv1_start_ppe_periodic_tracer +EXPORT_SYMBOL vmlinux 0xf313da4e sha_transform +EXPORT_SYMBOL vmlinux 0xf3216bb7 pcibios_resource_to_bus +EXPORT_SYMBOL vmlinux 0xf322a206 bit_waitqueue +EXPORT_SYMBOL vmlinux 0xf329965d blk_post_runtime_suspend +EXPORT_SYMBOL vmlinux 0xf3341268 __clear_user +EXPORT_SYMBOL vmlinux 0xf343fe43 neigh_xmit +EXPORT_SYMBOL vmlinux 0xf346231f seq_list_start_head +EXPORT_SYMBOL vmlinux 0xf34cc1b5 scsi_scan_target +EXPORT_SYMBOL vmlinux 0xf353a698 register_module_notifier +EXPORT_SYMBOL vmlinux 0xf3546430 skb_queue_purge +EXPORT_SYMBOL vmlinux 0xf357db8d pasemi_dma_set_flag +EXPORT_SYMBOL vmlinux 0xf36e9ac8 splice_direct_to_actor +EXPORT_SYMBOL vmlinux 0xf387c8a8 vga_set_legacy_decoding +EXPORT_SYMBOL vmlinux 0xf389fe60 __hw_addr_init +EXPORT_SYMBOL vmlinux 0xf38d1376 __secpath_destroy +EXPORT_SYMBOL vmlinux 0xf38f4439 __generic_file_write_iter +EXPORT_SYMBOL vmlinux 0xf390f511 free_page_put_link +EXPORT_SYMBOL vmlinux 0xf3916987 global_cursor_default +EXPORT_SYMBOL vmlinux 0xf3c8bd31 nobh_write_end +EXPORT_SYMBOL vmlinux 0xf3dfae9e ppp_unit_number +EXPORT_SYMBOL vmlinux 0xf3e55121 unregister_netdevice_queue +EXPORT_SYMBOL vmlinux 0xf3e6402e __bitmap_equal +EXPORT_SYMBOL vmlinux 0xf417bd94 macio_register_driver +EXPORT_SYMBOL vmlinux 0xf419fcc1 dev_get_by_index_rcu +EXPORT_SYMBOL vmlinux 0xf4236b06 param_set_uint +EXPORT_SYMBOL vmlinux 0xf42d9734 tcp_proc_register +EXPORT_SYMBOL vmlinux 0xf441ac43 ioread8_rep +EXPORT_SYMBOL vmlinux 0xf4486039 ps2_sendbyte +EXPORT_SYMBOL vmlinux 0xf448b560 tty_port_block_til_ready +EXPORT_SYMBOL vmlinux 0xf46b1b83 kernel_sendmsg +EXPORT_SYMBOL vmlinux 0xf474c21c bitmap_print_to_pagebuf +EXPORT_SYMBOL vmlinux 0xf474fdcb kfree_const +EXPORT_SYMBOL vmlinux 0xf4810a02 scsi_set_medium_removal +EXPORT_SYMBOL vmlinux 0xf484c57d mb_cache_entry_free +EXPORT_SYMBOL vmlinux 0xf49968a4 input_free_device +EXPORT_SYMBOL vmlinux 0xf4bdbeb9 __frontswap_invalidate_area +EXPORT_SYMBOL vmlinux 0xf4d5a9c6 search_binary_handler +EXPORT_SYMBOL vmlinux 0xf4f14de6 rtnl_trylock +EXPORT_SYMBOL vmlinux 0xf50a5438 bio_clone_bioset +EXPORT_SYMBOL vmlinux 0xf515a229 cdrom_release +EXPORT_SYMBOL vmlinux 0xf51ae235 touch_nmi_watchdog +EXPORT_SYMBOL vmlinux 0xf51bf88b nf_hooks_needed +EXPORT_SYMBOL vmlinux 0xf5222143 _raw_spin_lock_irqsave +EXPORT_SYMBOL vmlinux 0xf53d4c26 qdisc_class_hash_destroy +EXPORT_SYMBOL vmlinux 0xf53df0a5 gen_pool_free +EXPORT_SYMBOL vmlinux 0xf55b3b3d __arch_hweight16 +EXPORT_SYMBOL vmlinux 0xf5771b10 genphy_config_aneg +EXPORT_SYMBOL vmlinux 0xf57ce176 netpoll_setup +EXPORT_SYMBOL vmlinux 0xf594c55c __break_lease +EXPORT_SYMBOL vmlinux 0xf5a085c4 gen_pool_destroy +EXPORT_SYMBOL vmlinux 0xf5a10e25 vme_slave_set +EXPORT_SYMBOL vmlinux 0xf5a62ecc _memset_io +EXPORT_SYMBOL vmlinux 0xf5accea7 of_get_next_parent +EXPORT_SYMBOL vmlinux 0xf5ae9fb2 try_to_free_buffers +EXPORT_SYMBOL vmlinux 0xf5c2d34d hdmi_audio_infoframe_init +EXPORT_SYMBOL vmlinux 0xf5ce095c netlink_ns_capable +EXPORT_SYMBOL vmlinux 0xf5dd9143 input_unregister_handler +EXPORT_SYMBOL vmlinux 0xf5e1558d crash_shutdown_unregister +EXPORT_SYMBOL vmlinux 0xf5eb86ea blk_verify_command +EXPORT_SYMBOL vmlinux 0xf5ecd1f9 genphy_resume +EXPORT_SYMBOL vmlinux 0xf5f2597c pnv_cxl_release_hwirqs +EXPORT_SYMBOL vmlinux 0xf5f542da cdrom_get_media_event +EXPORT_SYMBOL vmlinux 0xf5f8705f nd_region_acquire_lane +EXPORT_SYMBOL vmlinux 0xf60b6341 ip_queue_xmit +EXPORT_SYMBOL vmlinux 0xf612bc6a balance_dirty_pages_ratelimited +EXPORT_SYMBOL vmlinux 0xf6213e12 pasemi_dma_clear_flag +EXPORT_SYMBOL vmlinux 0xf625dc73 tcf_exts_dump +EXPORT_SYMBOL vmlinux 0xf629c67f tcf_hash_destroy +EXPORT_SYMBOL vmlinux 0xf635bd6f security_path_rename +EXPORT_SYMBOL vmlinux 0xf6388c56 sysctl_ip_default_ttl +EXPORT_SYMBOL vmlinux 0xf6770391 mac_pton +EXPORT_SYMBOL vmlinux 0xf678c3e7 iterate_dir +EXPORT_SYMBOL vmlinux 0xf67adea4 rtnl_notify +EXPORT_SYMBOL vmlinux 0xf68285c0 register_inetaddr_notifier +EXPORT_SYMBOL vmlinux 0xf6831e2c netdev_rx_csum_fault +EXPORT_SYMBOL vmlinux 0xf68687be __sg_page_iter_start +EXPORT_SYMBOL vmlinux 0xf68fef91 of_find_property +EXPORT_SYMBOL vmlinux 0xf6b00816 mmc_gpio_request_cd +EXPORT_SYMBOL vmlinux 0xf6b5846e udp_lib_get_port +EXPORT_SYMBOL vmlinux 0xf6bb4729 color_table +EXPORT_SYMBOL vmlinux 0xf6c58be8 pci_save_state +EXPORT_SYMBOL vmlinux 0xf6d75ca3 mmc_release_host +EXPORT_SYMBOL vmlinux 0xf6ebc03b net_ratelimit +EXPORT_SYMBOL vmlinux 0xf6ecb763 _lv1_send_event_locally +EXPORT_SYMBOL vmlinux 0xf6fc8791 __bitmap_xor +EXPORT_SYMBOL vmlinux 0xf7289d14 __tracepoint_kmem_cache_free +EXPORT_SYMBOL vmlinux 0xf74a3603 key_type_keyring +EXPORT_SYMBOL vmlinux 0xf7584a9c find_font +EXPORT_SYMBOL vmlinux 0xf7694a8f __dst_free +EXPORT_SYMBOL vmlinux 0xf76fe6bb fput +EXPORT_SYMBOL vmlinux 0xf795dae7 compat_nf_setsockopt +EXPORT_SYMBOL vmlinux 0xf7a11f4e vfs_link +EXPORT_SYMBOL vmlinux 0xf7a88615 phy_device_free +EXPORT_SYMBOL vmlinux 0xf7ac2f0f dquot_operations +EXPORT_SYMBOL vmlinux 0xf7adcaf3 __tracepoint_kmalloc_node +EXPORT_SYMBOL vmlinux 0xf7bac0ec _lv1_set_lpm_counter +EXPORT_SYMBOL vmlinux 0xf8004bfd _lv1_disconnect_interrupt_event_receive_port +EXPORT_SYMBOL vmlinux 0xf801c869 dev_mc_add +EXPORT_SYMBOL vmlinux 0xf8039a52 __dev_kfree_skb_irq +EXPORT_SYMBOL vmlinux 0xf8097ca1 sock_no_sendmsg +EXPORT_SYMBOL vmlinux 0xf811e69d scsi_eh_flush_done_q +EXPORT_SYMBOL vmlinux 0xf812cff6 memscan +EXPORT_SYMBOL vmlinux 0xf827cb83 free_reserved_area +EXPORT_SYMBOL vmlinux 0xf82abc1d isa_dma_bridge_buggy +EXPORT_SYMBOL vmlinux 0xf82ec573 rb_prev +EXPORT_SYMBOL vmlinux 0xf83f537a iov_iter_fault_in_multipages_readable +EXPORT_SYMBOL vmlinux 0xf84e38ea inet_twsk_deschedule +EXPORT_SYMBOL vmlinux 0xf84f6601 mipi_dsi_dcs_set_tear_off +EXPORT_SYMBOL vmlinux 0xf85ff0b8 pci_find_next_bus +EXPORT_SYMBOL vmlinux 0xf86cb02f lookup_bdev +EXPORT_SYMBOL vmlinux 0xf884fd26 input_mt_sync_frame +EXPORT_SYMBOL vmlinux 0xf8b13d98 tcf_exts_dump_stats +EXPORT_SYMBOL vmlinux 0xf8d04f09 __crc32c_le_shift +EXPORT_SYMBOL vmlinux 0xf8d11435 pci_write_vpd +EXPORT_SYMBOL vmlinux 0xf8db3ac0 sock_no_setsockopt +EXPORT_SYMBOL vmlinux 0xf8dc5bb4 i2c_smbus_read_i2c_block_data +EXPORT_SYMBOL vmlinux 0xf908db59 mmc_erase_group_aligned +EXPORT_SYMBOL vmlinux 0xf90cfc9c __dec_zone_page_state +EXPORT_SYMBOL vmlinux 0xf91177a9 __skb_get_hash_flowi6 +EXPORT_SYMBOL vmlinux 0xf927286e fb_set_cmap +EXPORT_SYMBOL vmlinux 0xf9282452 ip6_frag_match +EXPORT_SYMBOL vmlinux 0xf967b275 fsnotify_put_mark +EXPORT_SYMBOL vmlinux 0xf97f809a tty_port_destroy +EXPORT_SYMBOL vmlinux 0xf992c7f2 netdev_refcnt_read +EXPORT_SYMBOL vmlinux 0xf9a04937 agp_generic_destroy_pages +EXPORT_SYMBOL vmlinux 0xf9a482f9 msleep +EXPORT_SYMBOL vmlinux 0xf9b2100d tcp_disconnect +EXPORT_SYMBOL vmlinux 0xf9c0b663 strlcat +EXPORT_SYMBOL vmlinux 0xf9e9756b pcie_get_readrq +EXPORT_SYMBOL vmlinux 0xf9f4bde3 put_filp +EXPORT_SYMBOL vmlinux 0xf9f9f729 iommu_tbl_pool_init +EXPORT_SYMBOL vmlinux 0xf9fc2a66 dma_find_channel +EXPORT_SYMBOL vmlinux 0xfa0d4353 backlight_device_unregister +EXPORT_SYMBOL vmlinux 0xfa599bb2 netlink_register_notifier +EXPORT_SYMBOL vmlinux 0xfa683c65 vfs_writef +EXPORT_SYMBOL vmlinux 0xfa84e069 __pagevec_release +EXPORT_SYMBOL vmlinux 0xfac8865f sysctl_wmem_max +EXPORT_SYMBOL vmlinux 0xfac998a8 param_ops_string +EXPORT_SYMBOL vmlinux 0xfacd8e72 vme_dma_vme_attribute +EXPORT_SYMBOL vmlinux 0xfadb5750 pmu_unlock +EXPORT_SYMBOL vmlinux 0xfaddd4ce open_exec +EXPORT_SYMBOL vmlinux 0xfae67b1f cap_mmap_addr +EXPORT_SYMBOL vmlinux 0xfae9a32f page_cache_prev_hole +EXPORT_SYMBOL vmlinux 0xfafcde83 qdisc_list_add +EXPORT_SYMBOL vmlinux 0xfb0cecfd vm_event_states +EXPORT_SYMBOL vmlinux 0xfb10ec73 vme_register_driver +EXPORT_SYMBOL vmlinux 0xfb232557 pci_unmap_rom +EXPORT_SYMBOL vmlinux 0xfb5a9c3f __netlink_kernel_create +EXPORT_SYMBOL vmlinux 0xfb5ae643 inode_init_once +EXPORT_SYMBOL vmlinux 0xfb5cba7a kmem_cache_free +EXPORT_SYMBOL vmlinux 0xfb6af58d recalc_sigpending +EXPORT_SYMBOL vmlinux 0xfb701e57 serio_open +EXPORT_SYMBOL vmlinux 0xfb77ca06 uart_get_divisor +EXPORT_SYMBOL vmlinux 0xfb85e1fe __nd_driver_register +EXPORT_SYMBOL vmlinux 0xfb94103e __clzdi2 +EXPORT_SYMBOL vmlinux 0xfbaaf01e console_lock +EXPORT_SYMBOL vmlinux 0xfbc4f89e io_schedule_timeout +EXPORT_SYMBOL vmlinux 0xfc02b7ad sysctl_tcp_wmem +EXPORT_SYMBOL vmlinux 0xfc10c1c1 kobject_set_name +EXPORT_SYMBOL vmlinux 0xfc1d5a9c vlan_dev_vlan_proto +EXPORT_SYMBOL vmlinux 0xfc2fbf9c skb_ensure_writable +EXPORT_SYMBOL vmlinux 0xfc37af7e vio_register_device_node +EXPORT_SYMBOL vmlinux 0xfc39e32f ioport_unmap +EXPORT_SYMBOL vmlinux 0xfc3b160f mempool_create_node +EXPORT_SYMBOL vmlinux 0xfc47fd58 seq_dentry +EXPORT_SYMBOL vmlinux 0xfc4a451f netdev_master_upper_dev_get +EXPORT_SYMBOL vmlinux 0xfc8342d7 mmc_detect_change +EXPORT_SYMBOL vmlinux 0xfc886bb0 kthread_create_on_node +EXPORT_SYMBOL vmlinux 0xfc9e42cd pci_bus_get +EXPORT_SYMBOL vmlinux 0xfca87901 pci_bus_add_devices +EXPORT_SYMBOL vmlinux 0xfcb926cd kstrtouint_from_user +EXPORT_SYMBOL vmlinux 0xfcbea7c5 jbd2_journal_unlock_updates +EXPORT_SYMBOL vmlinux 0xfcc2a43c utf32_to_utf8 +EXPORT_SYMBOL vmlinux 0xfcc97510 napi_gro_frags +EXPORT_SYMBOL vmlinux 0xfccdafab pci_prepare_to_sleep +EXPORT_SYMBOL vmlinux 0xfce7c335 generic_ro_fops +EXPORT_SYMBOL vmlinux 0xfcec0987 enable_irq +EXPORT_SYMBOL vmlinux 0xfcfa03ff fb_videomode_to_modelist +EXPORT_SYMBOL vmlinux 0xfd070370 __dquot_alloc_space +EXPORT_SYMBOL vmlinux 0xfd114b7b ppp_channel_index +EXPORT_SYMBOL vmlinux 0xfd1c21ef get_task_io_context +EXPORT_SYMBOL vmlinux 0xfd221bc5 mach_pasemi +EXPORT_SYMBOL vmlinux 0xfd22e92e blk_end_request +EXPORT_SYMBOL vmlinux 0xfd47cc26 dquot_alloc_inode +EXPORT_SYMBOL vmlinux 0xfd610190 blk_pre_runtime_resume +EXPORT_SYMBOL vmlinux 0xfd61a20a param_set_short +EXPORT_SYMBOL vmlinux 0xfd85c6fb rwsem_down_write_failed +EXPORT_SYMBOL vmlinux 0xfd898d47 tty_mutex +EXPORT_SYMBOL vmlinux 0xfd99623a ip_frag_ecn_table +EXPORT_SYMBOL vmlinux 0xfda9a85f of_graph_get_next_endpoint +EXPORT_SYMBOL vmlinux 0xfdb218cf netif_set_real_num_tx_queues +EXPORT_SYMBOL vmlinux 0xfdb6cedc _raw_read_unlock_bh +EXPORT_SYMBOL vmlinux 0xfdb9b629 ioread32be +EXPORT_SYMBOL vmlinux 0xfdba1f41 blkdev_get_by_dev +EXPORT_SYMBOL vmlinux 0xfdba7e3b t10_pi_type3_crc +EXPORT_SYMBOL vmlinux 0xfdbe0288 pci_add_resource_offset +EXPORT_SYMBOL vmlinux 0xfdc96ed1 __sock_create +EXPORT_SYMBOL vmlinux 0xfdce47fc kmem_cache_alloc_node_trace +EXPORT_SYMBOL vmlinux 0xfde7b7ec phy_stop_interrupts +EXPORT_SYMBOL vmlinux 0xfded48ed enable_kernel_fp +EXPORT_SYMBOL vmlinux 0xfdfc0b3b fiemap_fill_next_extent +EXPORT_SYMBOL vmlinux 0xfdffccf3 vga_tryget +EXPORT_SYMBOL vmlinux 0xfe029963 unregister_inetaddr_notifier +EXPORT_SYMBOL vmlinux 0xfe17047b kblockd_schedule_delayed_work_on +EXPORT_SYMBOL vmlinux 0xfe18b697 scsi_is_sdev_device +EXPORT_SYMBOL vmlinux 0xfe26fc7c nr_node_ids +EXPORT_SYMBOL vmlinux 0xfe2b5e83 fb_get_mode +EXPORT_SYMBOL vmlinux 0xfe2e2d1a lookup_one_len +EXPORT_SYMBOL vmlinux 0xfe4cb4b5 _lv1_storage_write +EXPORT_SYMBOL vmlinux 0xfe5d4bb2 sys_tz +EXPORT_SYMBOL vmlinux 0xfe727d98 dquot_alloc +EXPORT_SYMBOL vmlinux 0xfe7c4287 nr_cpu_ids +EXPORT_SYMBOL vmlinux 0xfe916dc6 hex_dump_to_buffer +EXPORT_SYMBOL vmlinux 0xfe926de2 mmc_read_bkops_status +EXPORT_SYMBOL vmlinux 0xfea6c372 generic_file_readonly_mmap +EXPORT_SYMBOL vmlinux 0xfeb9ceba prepare_creds +EXPORT_SYMBOL vmlinux 0xfec3eff2 alloc_disk_node +EXPORT_SYMBOL vmlinux 0xfec9cbc1 __module_put_and_exit +EXPORT_SYMBOL vmlinux 0xfed221d9 pasemi_dma_alloc_ring +EXPORT_SYMBOL vmlinux 0xfed40b15 scsi_block_when_processing_errors +EXPORT_SYMBOL vmlinux 0xfedcdb60 seq_hlist_next_percpu +EXPORT_SYMBOL vmlinux 0xfeebc7c4 __kfifo_from_user_r +EXPORT_SYMBOL vmlinux 0xff0a028b neigh_destroy +EXPORT_SYMBOL vmlinux 0xff1765c7 rtas_call +EXPORT_SYMBOL vmlinux 0xff1e9dd8 seq_list_start +EXPORT_SYMBOL vmlinux 0xff21dd4b dev_queue_xmit_sk +EXPORT_SYMBOL vmlinux 0xff21e53f of_find_backlight_by_node +EXPORT_SYMBOL vmlinux 0xff2c3562 get_tz_trend +EXPORT_SYMBOL vmlinux 0xff3fcb33 elv_rb_add +EXPORT_SYMBOL vmlinux 0xff55efe5 neigh_lookup +EXPORT_SYMBOL vmlinux 0xff6878cf fb_default_cmap +EXPORT_SYMBOL vmlinux 0xff6d16ab __scsi_print_sense +EXPORT_SYMBOL vmlinux 0xff7559e4 ioport_resource +EXPORT_SYMBOL vmlinux 0xff9437b2 generic_splice_sendpage +EXPORT_SYMBOL vmlinux 0xff96eae6 __insert_inode_hash +EXPORT_SYMBOL vmlinux 0xff9ca065 fb_edid_to_monspecs +EXPORT_SYMBOL vmlinux 0xff9f86d7 release_pages +EXPORT_SYMBOL vmlinux 0xffa75f4b __seq_open_private +EXPORT_SYMBOL vmlinux 0xffabc8f0 neigh_sysctl_register +EXPORT_SYMBOL vmlinux 0xffd5a395 default_wake_function +EXPORT_SYMBOL vmlinux 0xffe833fe pcie_port_service_register +EXPORT_SYMBOL vmlinux 0xfff45653 param_ops_ushort +EXPORT_SYMBOL vmlinux 0xfff535f3 blkdev_issue_discard +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x00089eb4 kvm_vcpu_gfn_to_hva +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x01dd0740 kvm_vcpu_mark_page_dirty +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x0c8a8430 kvm_flush_remote_tlbs +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x0e4de394 kvm_read_guest +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x19606cf2 kvmppc_h_logical_ci_load +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x1c071627 kvmppc_prepare_to_enter +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x1c4ad4b5 __tracepoint_kvm_ppc_instr +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x20de5193 kvm_disable_largepages +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x248128ad kvmppc_st +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x25e45766 kvm_vcpu_on_spin +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x27046576 kvm_exit +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x2783326c kvmppc_core_dequeue_dec +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x280f59bb gfn_to_hva_memslot +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x2b0da161 kvm_put_kvm +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x2ef3c219 kvm_irq_has_notifier +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x306c1c10 kvmppc_core_queue_program +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x3395f6da kvmppc_sanity_check +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x368db93f kvmppc_set_msr +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x3c46727f mark_page_dirty +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x3e1f72e0 kvm_vcpu_cache +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x3edd68a4 kvm_vcpu_gfn_to_pfn +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x403d9da0 gfn_to_pfn_atomic +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x43b5cb5b kvm_init +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x4839c4a6 kvmppc_load_last_inst +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x485cd7f6 kvm_rebooting +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x48f8a926 kvm_vcpu_read_guest_atomic +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x4924f20f kvmppc_unfixup_split_real +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x543ff0d7 kvm_read_guest_atomic +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x592e1eea kvm_vcpu_gfn_to_pfn_atomic +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x5db6a17a kvm_unmap_hva +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x669da1fd kvm_set_pfn_dirty +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x67e6581d kvm_is_visible_gfn +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x6a0e00fd kvm_get_kvm +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x6df3d283 gfn_to_pfn +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x6f372baf kvmppc_book3s_queue_irqprio +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x6fac9d50 kvm_vcpu_uninit +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x6fb8d786 kvmppc_pr_ops +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x71d0750d gfn_to_hva +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x74c16ba8 kvm_vcpu_block +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x7677bc28 kvm_write_guest +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x77348908 kvm_io_bus_write +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x77a87a0f kvm_clear_guest +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x7aa64803 kvm_release_pfn_clean +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x7b4deef5 gfn_to_pfn_prot +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x7d71625c gfn_to_page +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x81c88c35 kvm_vcpu_gfn_to_page +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x82796184 kvmppc_xics_hcall +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x82ae4a70 kvm_release_page_dirty +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x84233a7d kvmppc_kvm_pv +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x85a5a4b2 __gfn_to_pfn_memslot +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x8da01274 kvm_get_pfn +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x8e1cd06f kvm_set_pfn_accessed +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x938defb5 kvmppc_gpa_to_pfn +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x944dbe75 gfn_to_pfn_memslot_atomic +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x9b0b5e76 __kvm_set_memory_region +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xa0184739 kvmppc_hv_ops +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xa0d631fa kvm_release_page_clean +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xa89f9715 kvm_clear_guest_page +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xa8e5566b gfn_to_pfn_memslot +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xab59d373 kvmppc_free_lpid +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xac56f6d3 gfn_to_memslot +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xae5c4fd9 kvmppc_handle_store +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xb3ba6151 kvm_vcpu_read_guest +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xb7e5fee3 kvmppc_h_logical_ci_store +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xb9ca02d2 kvmppc_ld +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xbb7f15e9 kvm_read_guest_page +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xbc4c3fab kvm_vcpu_write_guest_page +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xbe879a79 kvm_vcpu_read_guest_page +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xc013e76c gfn_to_page_many_atomic +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xc70e4b59 kvmppc_claim_lpid +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xca714855 kvm_vcpu_yield_to +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xcbd2d3bd kvm_set_memory_region +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xcc44961f kvmppc_alloc_lpid +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xd0641371 kvm_get_dirty_log +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xd0cdfb8f kvm_debugfs_dir +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xd39741db kvm_write_guest_page +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xd886baad kvmppc_emulate_mmio +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xdb4a664c kvm_gfn_to_hva_cache_init +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xdd6e3ffb kvm_vcpu_kick +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xe025d18b kvmppc_core_pending_dec +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xe3d65506 kvm_vcpu_write_guest +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xe435577d kvmppc_rtas_hcall +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xe5f8bc8f kvm_vcpu_init +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xea8e49c8 kvm_read_guest_cached +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xecbfeafd kvmppc_core_prepare_to_enter +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xf2e8b3a1 kvm_write_guest_cached +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xf4da3546 kvmppc_init_lpid +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xf65a87b6 kvmppc_handle_load +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xf835875c kvmppc_core_queue_dec +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm-pr 0x5636b407 kvmppc_emulate_instruction +EXPORT_SYMBOL_GPL arch/powerpc/platforms/cell/spufs/spufs 0x03b61919 spu_restore +EXPORT_SYMBOL_GPL arch/powerpc/platforms/cell/spufs/spufs 0xf43785ca spu_save +EXPORT_SYMBOL_GPL arch/powerpc/platforms/cell/spufs/spufs 0xf70c7430 spufs_context_fops +EXPORT_SYMBOL_GPL crypto/af_alg 0x236b0112 af_alg_register_type +EXPORT_SYMBOL_GPL crypto/af_alg 0x44ac3410 af_alg_release +EXPORT_SYMBOL_GPL crypto/af_alg 0x5426f2c4 af_alg_cmsg_send +EXPORT_SYMBOL_GPL crypto/af_alg 0x561ed7ce af_alg_make_sg +EXPORT_SYMBOL_GPL crypto/af_alg 0x561fe173 af_alg_accept +EXPORT_SYMBOL_GPL crypto/af_alg 0x58716898 af_alg_wait_for_completion +EXPORT_SYMBOL_GPL crypto/af_alg 0x8394a917 af_alg_unregister_type +EXPORT_SYMBOL_GPL crypto/af_alg 0x901d3a48 af_alg_complete +EXPORT_SYMBOL_GPL crypto/af_alg 0xa4fbf9e2 af_alg_free_sg +EXPORT_SYMBOL_GPL crypto/af_alg 0xc2d5621f af_alg_link_sg +EXPORT_SYMBOL_GPL crypto/asymmetric_keys/pkcs7_message 0x1c8f3d8f pkcs7_parse_message +EXPORT_SYMBOL_GPL crypto/asymmetric_keys/pkcs7_message 0x70af7434 pkcs7_validate_trust +EXPORT_SYMBOL_GPL crypto/asymmetric_keys/pkcs7_message 0xbe82ff95 pkcs7_get_content_data +EXPORT_SYMBOL_GPL crypto/asymmetric_keys/pkcs7_message 0xcc45da99 pkcs7_free_message +EXPORT_SYMBOL_GPL crypto/asymmetric_keys/pkcs7_message 0xe9ff17e6 pkcs7_verify +EXPORT_SYMBOL_GPL crypto/async_tx/async_memcpy 0xd3813471 async_memcpy +EXPORT_SYMBOL_GPL crypto/async_tx/async_pq 0xe69a1560 async_gen_syndrome +EXPORT_SYMBOL_GPL crypto/async_tx/async_pq 0xeece54f8 async_syndrome_val +EXPORT_SYMBOL_GPL crypto/async_tx/async_raid6_recov 0x0e40f10e async_raid6_2data_recov +EXPORT_SYMBOL_GPL crypto/async_tx/async_raid6_recov 0xe09ff5f7 async_raid6_datap_recov +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0x38e7cca0 __async_tx_find_channel +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0x8659c3bc async_tx_quiesce +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0xac549b6b async_tx_submit +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0xd315597e async_trigger_callback +EXPORT_SYMBOL_GPL crypto/async_tx/async_xor 0x530c72ff async_xor_val +EXPORT_SYMBOL_GPL crypto/async_tx/async_xor 0xf5f42451 async_xor +EXPORT_SYMBOL_GPL crypto/authenc 0x587ef278 crypto_authenc_extractkeys +EXPORT_SYMBOL_GPL crypto/blowfish_common 0xa420a190 blowfish_setkey +EXPORT_SYMBOL_GPL crypto/cast5_generic 0x16ecf462 cast5_setkey +EXPORT_SYMBOL_GPL crypto/cast5_generic 0x27278ca9 __cast5_encrypt +EXPORT_SYMBOL_GPL crypto/cast5_generic 0x4a2a3ca6 __cast5_decrypt +EXPORT_SYMBOL_GPL crypto/cast6_generic 0x1291971c __cast6_setkey +EXPORT_SYMBOL_GPL crypto/cast6_generic 0x1e2c961f __cast6_decrypt +EXPORT_SYMBOL_GPL crypto/cast6_generic 0x8f04034a __cast6_encrypt +EXPORT_SYMBOL_GPL crypto/cast6_generic 0xfa619e6b cast6_setkey +EXPORT_SYMBOL_GPL crypto/cast_common 0x08aa6fb7 cast_s1 +EXPORT_SYMBOL_GPL crypto/cast_common 0x0c5fbf8a cast_s3 +EXPORT_SYMBOL_GPL crypto/cast_common 0xe39dd4b4 cast_s2 +EXPORT_SYMBOL_GPL crypto/cast_common 0xee83a4f3 cast_s4 +EXPORT_SYMBOL_GPL crypto/cryptd 0x253bbe42 cryptd_aead_child +EXPORT_SYMBOL_GPL crypto/cryptd 0x63d069b9 cryptd_alloc_ablkcipher +EXPORT_SYMBOL_GPL crypto/cryptd 0x691b2907 cryptd_alloc_ahash +EXPORT_SYMBOL_GPL crypto/cryptd 0x70fd88c3 cryptd_ahash_child +EXPORT_SYMBOL_GPL crypto/cryptd 0x770df81d cryptd_alloc_aead +EXPORT_SYMBOL_GPL crypto/cryptd 0x7ef114e6 cryptd_shash_desc +EXPORT_SYMBOL_GPL crypto/cryptd 0xb030ea09 cryptd_ablkcipher_child +EXPORT_SYMBOL_GPL crypto/cryptd 0xc6b6e6b5 cryptd_free_aead +EXPORT_SYMBOL_GPL crypto/cryptd 0xd1a7dc11 cryptd_free_ahash +EXPORT_SYMBOL_GPL crypto/cryptd 0xff40d36e cryptd_free_ablkcipher +EXPORT_SYMBOL_GPL crypto/crypto_null 0x21cd536a crypto_put_default_null_skcipher +EXPORT_SYMBOL_GPL crypto/crypto_null 0x5925c04d crypto_get_default_null_skcipher +EXPORT_SYMBOL_GPL crypto/des_generic 0xcfd9a2c0 des_ekey +EXPORT_SYMBOL_GPL crypto/des_generic 0xf8c78d49 __des3_ede_setkey +EXPORT_SYMBOL_GPL crypto/lrw 0x3864eb66 lrw_free_table +EXPORT_SYMBOL_GPL crypto/lrw 0xa759bf74 lrw_crypt +EXPORT_SYMBOL_GPL crypto/lrw 0xcd074900 lrw_init_table +EXPORT_SYMBOL_GPL crypto/mcryptd 0x14a0a5ec mcryptd_alloc_ahash +EXPORT_SYMBOL_GPL crypto/mcryptd 0x1f1bf0f1 shash_ahash_mcryptd_update +EXPORT_SYMBOL_GPL crypto/mcryptd 0x216ea1b7 shash_ahash_mcryptd_finup +EXPORT_SYMBOL_GPL crypto/mcryptd 0x44a66ec7 mcryptd_shash_desc +EXPORT_SYMBOL_GPL crypto/mcryptd 0x8347667c mcryptd_flusher +EXPORT_SYMBOL_GPL crypto/mcryptd 0x94d8b60b mcryptd_free_ahash +EXPORT_SYMBOL_GPL crypto/mcryptd 0xdc7dcea6 mcryptd_ahash_child +EXPORT_SYMBOL_GPL crypto/mcryptd 0xe591d609 shash_ahash_mcryptd_digest +EXPORT_SYMBOL_GPL crypto/mcryptd 0xf7ee769b shash_ahash_mcryptd_final +EXPORT_SYMBOL_GPL crypto/rsa_generic 0xadc25bd8 rsa_parse_key +EXPORT_SYMBOL_GPL crypto/rsa_generic 0xf1b141d1 rsa_free_key +EXPORT_SYMBOL_GPL crypto/serpent_generic 0x5ddb33e9 __serpent_encrypt +EXPORT_SYMBOL_GPL crypto/serpent_generic 0x77b39cb4 __serpent_setkey +EXPORT_SYMBOL_GPL crypto/serpent_generic 0x8a1a99ad __serpent_decrypt +EXPORT_SYMBOL_GPL crypto/serpent_generic 0xe3be96fe serpent_setkey +EXPORT_SYMBOL_GPL crypto/twofish_common 0x6c3229bb __twofish_setkey +EXPORT_SYMBOL_GPL crypto/twofish_common 0xcc2655f9 twofish_setkey +EXPORT_SYMBOL_GPL crypto/xts 0xbdf47894 xts_crypt +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x0ff22a3f ahci_fill_cmd_slot +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x14eb9d70 ahci_do_softreset +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x19cdeb53 ahci_stop_engine +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x1de28f98 ahci_dev_classify +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x337069a1 ahci_shost_attrs +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x3bb1a451 ahci_start_fis_rx +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x4647f0c4 ahci_sdev_attrs +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x46d02510 ahci_reset_em +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x4e5c1b2f ahci_pmp_retry_srst_ops +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x7203a129 ahci_start_engine +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x7433d7f6 ahci_kick_engine +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x7c80ebbb ahci_error_handler +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x801e9717 ahci_reset_controller +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x8ba854ac ahci_em_messages +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x8fccfa95 ahci_ops +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xa49f32c9 ahci_qc_issue +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xa7a14130 ahci_save_initial_config +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xacd2d42f ahci_print_info +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xdb5e30da ahci_host_activate +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xdb601212 ahci_check_ready +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xe2b9ca0a ahci_init_controller +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xe76c54a3 ahci_port_resume +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xea50dad3 ahci_ignore_sss +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xfbfa4aad ahci_set_em_messages +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x02616a36 ahci_platform_init_host +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x13bdbb57 ahci_platform_enable_clks +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x4f77f527 ahci_platform_enable_resources +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x5b05918f ahci_platform_suspend_host +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x5faf4ffe ahci_platform_get_resources +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x6f18937b ahci_platform_enable_regulators +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x8704cb6a ahci_platform_ops +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x8d5d7fe6 ahci_platform_disable_regulators +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x8fa369d9 ahci_platform_resume_host +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0xb2c19b01 ahci_platform_disable_clks +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0xb2e17cee ahci_platform_disable_resources +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0xd46e88eb ahci_platform_suspend +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0xf0ec0bbb ahci_platform_resume +EXPORT_SYMBOL_GPL drivers/ata/pata_platform 0x16268a68 __pata_platform_probe +EXPORT_SYMBOL_GPL drivers/ata/pata_sis 0xefe0e563 sis_info133_for_sata +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-spmi 0x53e83d1f regmap_init_spmi_ext +EXPORT_SYMBOL_GPL drivers/base/regmap/regmap-spmi 0x6407fe29 devm_regmap_init_spmi_base +EXPORT_SYMBOL_GPL drivers/base/regmap/regmap-spmi 0xb7e23331 devm_regmap_init_spmi_ext +EXPORT_SYMBOL_GPL drivers/base/regmap/regmap-spmi 0xb835f9e8 regmap_init_spmi_base +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x00d3d92b bcma_host_pci_irq_ctl +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x0c8b51f6 bcma_core_is_enabled +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x2cf69a7d bcma_core_set_clockmode +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x4acdded8 bcma_pmu_get_bus_clock +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x4e170cb1 bcma_host_pci_up +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x51005910 bcma_chipco_chipctl_maskset +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x53176edb bcma_chipco_get_alp_clock +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x6438ac8b bcma_driver_unregister +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x79b37aab bcma_core_disable +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x7b7d4ad1 bcma_chipco_pll_read +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x7d3f5bba bcma_chipco_gpio_control +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x7e6e6ab9 bcma_core_pci_power_save +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x82e07ba1 __bcma_driver_register +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x8af08dac bcma_host_pci_down +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x8d272db8 bcma_chipco_pll_write +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x9345eb59 bcma_core_enable +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x9fd97f01 bcma_find_core_unit +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xa9e29025 bcma_chipco_regctl_maskset +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xc32c0f02 bcma_chipco_pll_maskset +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xc885a36d bcma_chipco_gpio_outen +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xd3f1404b bcma_chipco_b_mii_write +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xdc71a0b9 bcma_pmu_spuravoid_pllupdate +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xddc0b239 bcma_core_pll_ctl +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xf9febd5d bcma_chipco_gpio_out +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0x36424e00 btbcm_finalize +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0x70a3b380 btbcm_setup_apple +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0x865f021e btbcm_set_bdaddr +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0x87953bbc btbcm_initialize +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0x949ab639 btbcm_check_bdaddr +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0xea627b46 btbcm_setup_patchram +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0x412890f8 btintel_check_bdaddr +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0xa8e0df31 btintel_set_bdaddr +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x00419d14 btmrvl_pscan_window_reporting +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x15821898 btmrvl_send_hscfg_cmd +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x2e301ac2 btmrvl_remove_card +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x62804df2 btmrvl_enable_hs +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x64f16118 btmrvl_process_event +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x794204a9 btmrvl_enable_ps +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x9e44cf21 btmrvl_interrupt +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xc6768e99 btmrvl_register_hdev +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xe788c86d btmrvl_add_card +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xecd4015e btmrvl_check_evtpkt +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xf4a2a7d6 btmrvl_send_module_cfg_cmd +EXPORT_SYMBOL_GPL drivers/bluetooth/btrtl 0x520e97f5 btrtl_setup_realtek +EXPORT_SYMBOL_GPL drivers/crypto/nx/nx-compress 0x209cb959 nx842_crypto_exit +EXPORT_SYMBOL_GPL drivers/crypto/nx/nx-compress 0x3bbe8d01 nx842_crypto_decompress +EXPORT_SYMBOL_GPL drivers/crypto/nx/nx-compress 0x809800cd nx842_crypto_compress +EXPORT_SYMBOL_GPL drivers/crypto/nx/nx-compress 0xf3b8e342 nx842_crypto_init +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0x43adfaf5 dw_dma_filter +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0x5c877619 dw_dma_disable +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0xa192d346 dw_dma_enable +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0xb2500654 dw_dma_probe +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0xfec36c00 dw_dma_remove +EXPORT_SYMBOL_GPL drivers/dma/hsu/hsu_dma 0x32661af1 hsu_dma_remove +EXPORT_SYMBOL_GPL drivers/dma/hsu/hsu_dma 0x55abc9b7 hsu_dma_probe +EXPORT_SYMBOL_GPL drivers/dma/hsu/hsu_dma 0x55d8f7d9 hsu_dma_irq +EXPORT_SYMBOL_GPL drivers/dma/virt-dma 0x2bf53dbc vchan_tx_submit +EXPORT_SYMBOL_GPL drivers/dma/virt-dma 0x2efef8e9 vchan_init +EXPORT_SYMBOL_GPL drivers/dma/virt-dma 0x77b2b518 vchan_find_desc +EXPORT_SYMBOL_GPL drivers/dma/virt-dma 0x79e6bdfc vchan_dma_desc_free_list +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x05da3e85 edac_mc_add_mc_with_groups +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x0c32ff8a edac_pci_alloc_index +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x25aa979c edac_pci_alloc_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x2c8dd6b8 edac_mem_types +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x4d5a14a3 edac_pci_free_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x4df19b3e edac_device_del_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x5bbc9632 find_mci_by_dev +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x5e6afc11 edac_pci_add_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x632237f6 edac_pci_create_generic_ctl +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x6ccab0d5 edac_mc_handle_error +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x6e3ff83a edac_device_alloc_index +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x7185bde5 edac_device_alloc_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x7d1ee169 edac_mc_find_csrow_by_page +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x7ef72ac7 edac_device_handle_ce +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x8bcf8e4d edac_pci_handle_pe +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x8c52cedf edac_pci_handle_npe +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x98eddabd edac_pci_del_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xa2855e55 edac_mc_free +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xa795d21c edac_pci_reset_delay_period +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xb49054df edac_pci_release_generic_ctl +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xb67a636a edac_mc_alloc +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xc0dcb59e edac_layer_name +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xc5d00850 edac_mc_del_mc +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xda97bbf4 edac_raw_mc_handle_error +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xe1f4c20a edac_device_free_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xeeedce9a edac_device_handle_ue +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xfbcf32a6 edac_device_add_device +EXPORT_SYMBOL_GPL drivers/firewire/firewire-core 0xf4ade51f fw_card_release +EXPORT_SYMBOL_GPL drivers/gpio/gpio-generic 0x725a8c36 bgpio_remove +EXPORT_SYMBOL_GPL drivers/gpio/gpio-generic 0xadbb5786 bgpio_init +EXPORT_SYMBOL_GPL drivers/gpio/gpio-max730x 0x21836645 __max730x_probe +EXPORT_SYMBOL_GPL drivers/gpio/gpio-max730x 0x76a7b9e1 __max730x_remove +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x0db7f024 drm_class_device_register +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x5facaf9c of_get_drm_display_mode +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x71f4ebd8 drm_display_mode_to_videomode +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x832283a7 drm_class_device_unregister +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xa579d52c drm_display_mode_from_videomode +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xa9e8390a drm_do_get_edid +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0x6adf436b ttm_prime_fd_to_handle +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0x7961ccc1 ttm_dma_page_alloc_debugfs +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0x8ea29e32 ttm_dma_populate +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0x95ff9bce ttm_dma_unpopulate +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0xce36343e ttm_prime_handle_to_fd +EXPORT_SYMBOL_GPL drivers/hid/hid 0x0169c96e hidinput_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x05495392 hid_debug +EXPORT_SYMBOL_GPL drivers/hid/hid 0x09cc0a79 hid_output_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x111fcb5c hid_dump_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x17cfad66 hid_debug_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0x1a79cfd4 hid_dump_input +EXPORT_SYMBOL_GPL drivers/hid/hid 0x1c7b36f9 hid_report_raw_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0x208d1a38 hid_dump_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0x30f2129d hid_open_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x33bd8761 hid_resolv_usage +EXPORT_SYMBOL_GPL drivers/hid/hid 0x46ed1907 hid_check_keys_pressed +EXPORT_SYMBOL_GPL drivers/hid/hid 0x4906a967 hid_snto32 +EXPORT_SYMBOL_GPL drivers/hid/hid 0x4bce6685 hid_field_extract +EXPORT_SYMBOL_GPL drivers/hid/hid 0x52425add hid_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x5458192b hidinput_count_leds +EXPORT_SYMBOL_GPL drivers/hid/hid 0x58460877 hidinput_find_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0x5eba629a hidinput_calc_abs_res +EXPORT_SYMBOL_GPL drivers/hid/hid 0x6e316880 hidraw_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x70adba74 hid_input_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x856ee5bd hid_set_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0x86f24060 hid_parse_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x9489dd13 __hid_request +EXPORT_SYMBOL_GPL drivers/hid/hid 0x9b36936a hid_register_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0xaac09a80 hid_unregister_driver +EXPORT_SYMBOL_GPL drivers/hid/hid 0xad147eed hid_allocate_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0xad77daa5 hidinput_report_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0xb463f38b hidinput_get_led_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0xb50ece21 hid_add_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0xcaa22492 __hid_register_driver +EXPORT_SYMBOL_GPL drivers/hid/hid 0xd4137dac hid_alloc_report_buf +EXPORT_SYMBOL_GPL drivers/hid/hid 0xdc33ee9b hidraw_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0xddd9b82e hid_ignore +EXPORT_SYMBOL_GPL drivers/hid/hid 0xe0fc253c hid_dump_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0xe8215a0a hidraw_report_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0xe8348ad3 hid_destroy_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0xf3a25224 hidinput_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0xf43bc307 hid_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0xf5ea3b49 hid_validate_values +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat 0x2f622ea1 roccat_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat 0x86e35f9d roccat_connect +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat 0x8c4181ec roccat_report_event +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x6904fee9 roccat_common2_send +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x7b47261a roccat_common2_receive +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x821f5bbb roccat_common2_sysfs_read +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x841c0a4f roccat_common2_send_with_status +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x8cc18db4 roccat_common2_sysfs_write +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0xa30dad39 roccat_common2_device_init_struct +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x2b35ae1b sensor_hub_input_attr_get_raw_value +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x4e1e39bd sensor_hub_set_feature +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x71d96e25 sensor_hub_register_callback +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x80b2e2b2 sensor_hub_input_get_attribute_info +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x85a5240a sensor_hub_remove_callback +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0xa24b0883 sensor_hub_device_open +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0xc6c57e36 hid_sensor_get_usage_index +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0xde652fcd sensor_hub_get_feature +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0xebae959d sensor_hub_device_close +EXPORT_SYMBOL_GPL drivers/hid/usbhid/usbhid 0x01fd453e usbhid_lookup_quirk +EXPORT_SYMBOL_GPL drivers/hid/usbhid/usbhid 0xc190337f hiddev_hid_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x08a00215 hsi_register_port_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x094dd4f1 hsi_release_port +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x0f0ae1fb hsi_get_channel_id_by_name +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x193f4712 hsi_port_unregister_clients +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x24ae3914 hsi_alloc_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x45bf0109 hsi_claim_port +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x45cb5dde hsi_unregister_port_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x5646cffb hsi_put_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x6f119c52 hsi_add_clients_from_dt +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x9c55d7cc hsi_remove_client +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xa62f1598 hsi_free_msg +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xabe59d19 hsi_alloc_msg +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xc1c5db8a hsi_unregister_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xc40ba3be hsi_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xd1ca20b1 hsi_register_client_driver +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xd2dda316 hsi_async +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xe27e6d57 hsi_new_client +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xe8b2fda3 hsi_register_controller +EXPORT_SYMBOL_GPL drivers/hwmon/adt7x10 0x0d74159b adt7x10_probe +EXPORT_SYMBOL_GPL drivers/hwmon/adt7x10 0x6906bda5 adt7x10_dev_pm_ops +EXPORT_SYMBOL_GPL drivers/hwmon/adt7x10 0xc8a597a1 adt7x10_remove +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x10b9d585 pmbus_regulator_ops +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x1889e75a pmbus_check_word_register +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x51cf7063 pmbus_do_remove +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x6677adf0 pmbus_write_byte_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x675b1dd2 pmbus_check_byte_register +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x8ea7a4fe pmbus_clear_faults +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x93e57167 pmbus_write_word_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x96deec3e pmbus_write_byte +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x99d79431 pmbus_do_probe +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x9a63a06e pmbus_set_page +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x9e8933bb pmbus_read_word_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xc172bba8 pmbus_get_driver_info +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xd52aeba7 pmbus_clear_cache +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xd8861e97 pmbus_read_byte_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xe1a40295 pmbus_update_byte_data +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x10ddcfda i2c_dw_is_enabled +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x1d3e9893 i2c_dw_xfer +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x33848c74 i2c_dw_disable_int +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x48991790 i2c_dw_disable +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x5bb1170b i2c_dw_isr +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x6399cd3b i2c_dw_clear_int +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x8cd8a788 i2c_dw_func +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0xb4a2fe2d i2c_dw_read_comp_param +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0xb4cc2034 i2c_dw_enable +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0xbeaf325d i2c_dw_init +EXPORT_SYMBOL_GPL drivers/i2c/i2c-mux 0x82c2389e i2c_add_mux_adapter +EXPORT_SYMBOL_GPL drivers/i2c/i2c-mux 0xf5d17612 i2c_del_mux_adapter +EXPORT_SYMBOL_GPL drivers/i2c/i2c-smbus 0x2393353b i2c_handle_smbus_alert +EXPORT_SYMBOL_GPL drivers/i2c/i2c-smbus 0x4a850ceb i2c_setup_smbus_alert +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x1ca21198 ad_sd_validate_trigger +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x3264df71 ad_sd_setup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x4010357e ad_sd_calibrate_all +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x533b525f ad_sd_cleanup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x53f17ea0 ad_sd_init +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x6e1f20eb ad_sd_set_comm +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xb0738e0d ad_sd_write_reg +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xec38eedf ad_sd_read_reg +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xf5dc241b ad_sigma_delta_single_conversion +EXPORT_SYMBOL_GPL drivers/iio/adc/twl4030-madc 0x4362dc66 twl4030_get_madc_conversion +EXPORT_SYMBOL_GPL drivers/iio/adc/twl4030-madc 0xb1be4a75 twl4030_madc_conversion +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x0090de45 adis_init +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x0c5d23bb adis_initial_startup +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x3d88631a adis_single_conversion +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x5010a5b1 adis_check_status +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x5a5d290e adis_cleanup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x829a8c48 adis_write_reg +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x8b9f2a82 adis_read_reg +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x9a56ac22 adis_setup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xa18d08e3 adis_remove_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xa846ac35 adis_reset +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xa974deb3 adis_probe_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xb0408b4e adis_update_scan_mode +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x06de465e iio_convert_raw_to_processed +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x1b9a4ef2 iio_read_channel_average_raw +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x267c0508 iio_channel_release_all_cb +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x26f6b499 iio_str_to_fixpoint +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x29c8cc34 iio_scan_mask_query +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x2a1fab3c iio_channel_stop_all_cb +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x2a9331fa iio_get_channel_type +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x3e53d47d iio_buffer_put +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x48b17d9a iio_dealloc_pollfunc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x49886026 iio_enum_write +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x4fd3916b iio_validate_scan_mask_onehot +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x5584834e iio_enum_available_read +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x5d08f35d iio_push_to_buffers +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x60b816ae iio_update_buffers +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x647598cb iio_map_array_unregister +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x6c34eca4 devm_iio_trigger_alloc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x7034eff1 devm_iio_device_unregister +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x7790465f iio_channel_get_all_cb +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x7a711aef iio_channel_start_all_cb +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x7bc4928f iio_channel_cb_get_channels +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x7c0fc26b devm_iio_device_alloc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x7dbac8bc iio_alloc_pollfunc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x894de3d8 iio_buffer_get +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x8b0d0a4b iio_channel_release +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x8b668371 iio_channel_get +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x9ca54149 iio_enum_read +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xa1bdd9b7 iio_channel_get_all +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xb3f5c383 iio_read_channel_processed +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xba1e4307 iio_update_demux +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xbb777506 devm_iio_device_register +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xc254d907 iio_write_channel_raw +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xccd7b5fc iio_map_array_register +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xcd55a16d devm_iio_device_free +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xdafccd9b iio_channel_release_all +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xde62e4ad devm_iio_trigger_free +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xe4efba69 iio_read_channel_raw +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xf514a1de iio_read_channel_scale +EXPORT_SYMBOL_GPL drivers/infiniband/core/ib_core 0xdbd019c4 ib_wq +EXPORT_SYMBOL_GPL drivers/input/ff-memless 0x9ecc739b input_ff_create_memless +EXPORT_SYMBOL_GPL drivers/input/matrix-keymap 0xd939f34b matrix_keypad_parse_of_params +EXPORT_SYMBOL_GPL drivers/input/misc/adxl34x 0x2e448795 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/touchscreen/cyttsp4_core 0x1ce6627b cyttsp4_probe +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp4_core 0x5b8d6ee0 cyttsp4_remove +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp4_core 0xff01025d cyttsp4_pm_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_core 0x6f44d379 cyttsp_probe +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_core 0x8a81012b cyttsp_remove +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_core 0xefc11d85 cyttsp_pm_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_i2c_common 0x0c8903b0 cyttsp_i2c_read_block_data +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_i2c_common 0xb2382d50 cyttsp_i2c_write_block_data +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x196c3d34 wm97xx_unregister_mach_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x4d0db357 wm97xx_set_suspend_mode +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x522a8c4c wm97xx_set_gpio +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x643392bf wm9713_codec +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x71c317a0 wm97xx_register_mach_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x8bb7abac wm97xx_get_gpio +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xa67cbe20 wm97xx_config_gpio +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xa8999221 wm9712_codec +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xb5278f7b wm9705_codec +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xc8eded95 wm97xx_reg_read +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xca9bfe9d wm97xx_reg_write +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xec4db6a0 wm97xx_read_aux_adc +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x50e36d0a ipack_bus_register +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x5fafad75 ipack_device_init +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x748d8755 ipack_driver_unregister +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x7637a57a ipack_bus_unregister +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x7908fc68 ipack_get_device +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x7d18a007 ipack_device_del +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0xc13414b2 ipack_device_add +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0xef7ddff8 ipack_put_device +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0xf24228f2 ipack_driver_register +EXPORT_SYMBOL_GPL drivers/isdn/capi/kernelcapi 0x23359aff unregister_capictr_notifier +EXPORT_SYMBOL_GPL drivers/isdn/capi/kernelcapi 0xce1414b2 register_capictr_notifier +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x1b3e6058 gigaset_handle_modem_response +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x1ee8069f gigaset_initdriver +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x25fcb173 gigaset_skb_sent +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x2e4b6f3b gigaset_fill_inbuf +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x3f384229 gigaset_blockdriver +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x454aa44f gigaset_debuglevel +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x465831b3 gigaset_add_event +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x4ccc8fb2 gigaset_shutdown +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x50ed5984 gigaset_if_receive +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x63a90e55 gigaset_skb_rcvd +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x6613b167 gigaset_freecs +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x882075ec gigaset_initcs +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x88230cf8 gigaset_m10x_send_skb +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x9d79580b gigaset_freedriver +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x9ec63dba gigaset_stop +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xa3151853 gigaset_dbg_buffer +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xd7915f45 gigaset_start +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xe4d50d0f gigaset_m10x_input +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xe983582d gigaset_isdn_rcv_err +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0x093a9a00 led_update_flash_brightness +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0x1a8433fe led_set_flash_timeout +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0x39054cb1 led_get_flash_fault +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0x7c393397 led_classdev_flash_register +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0x8cd8e4e6 led_classdev_flash_unregister +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0xf845d2aa led_set_flash_brightness +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 0x07119e22 wf_find_sensor +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0x0a0527be wf_register_client +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0x255bdc28 wf_get_sensor +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0x584e7886 wf_unregister_sensor +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0x75147afa wf_set_overtemp +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0x78e47117 wf_register_control +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0x909f7885 wf_register_sensor +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0x94765fac wf_critical_overtemp +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0xa2f19a49 wf_is_overtemp +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0xbcace2a5 wf_unregister_client +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0xc6e7f370 wf_put_control +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0xd684fd3c wf_find_control +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0xed82a14f wf_clear_overtemp +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0xefcd0daf wf_put_sensor +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0xf51108a0 wf_unregister_control +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0xf62414e4 wf_get_control +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_pid 0x9808f147 wf_pid_run +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_pid 0xb8ed5b2c wf_cpu_pid_init +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_pid 0xcd9a18ef wf_pid_init +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_pid 0xceda69f1 wf_cpu_pid_run +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_smu_sat 0xe05851d5 smu_sat_get_sdb_partition +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x038e1d2f mcb_unregister_driver +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x19a21ffa __mcb_register_driver +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x4b3f02ac mcb_request_mem +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x5e68c552 mcb_alloc_dev +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x8bf52ac0 mcb_release_mem +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x97593251 chameleon_parse_cells +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0xb95cd3b2 mcb_get_irq +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0xb9e8560c mcb_bus_get +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0xcc31320c mcb_release_bus +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0xcdbe1144 mcb_free_dev +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0xdca6714e mcb_alloc_bus +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0xea0627ef mcb_bus_put +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0xf09d12c7 mcb_bus_add_devices +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0xfa7a3651 mcb_device_register +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x0ec17d44 __tracepoint_bcache_bypass_congested +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x26062738 __tracepoint_bcache_alloc_fail +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x2fc380ce __tracepoint_bcache_invalidate +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x40c27b88 __tracepoint_bcache_cache_insert +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x4c49fc16 __tracepoint_bcache_btree_node_split +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x51a15737 __tracepoint_bcache_btree_set_root +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x616b6217 __tracepoint_bcache_read +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x6907ac0d __tracepoint_bcache_request_end +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x7be42a1c __tracepoint_bcache_journal_replay_key +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x7e532a71 __tracepoint_bcache_btree_cache_cannibalize +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x914361f4 __tracepoint_bcache_journal_entry_full +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x9272fb0f __tracepoint_bcache_read_retry +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x938cc2b2 __tracepoint_bcache_btree_insert_key +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xa649dd21 __tracepoint_bcache_btree_node_alloc +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xb157059f __tracepoint_bcache_gc_copy_collision +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xb317649e __tracepoint_bcache_btree_node_alloc_fail +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xb493772a __tracepoint_bcache_gc_start +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xb834c124 __tracepoint_bcache_btree_write +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xbb1fc0a4 __tracepoint_bcache_journal_full +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xbc4fcb1e __tracepoint_bcache_write +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xc1474d91 __tracepoint_bcache_btree_read +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xc379085a __tracepoint_bcache_bypass_sequential +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xc5aed8ad __tracepoint_bcache_writeback_collision +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xc7eda602 __tracepoint_bcache_btree_node_compact +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xce055cbe __tracepoint_bcache_btree_gc_coalesce +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xe20fe821 __tracepoint_bcache_gc_end +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xe24daf87 __tracepoint_bcache_gc_copy +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xe2ed0930 __tracepoint_bcache_btree_node_free +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xea2303e0 __tracepoint_bcache_journal_write +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xef1156ee __tracepoint_bcache_writeback +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xfc131205 __tracepoint_bcache_request_start +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 0x54221c22 dm_cell_release_no_holder +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x5e10a584 dm_cell_release +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x5ee7fbc8 dm_bio_prison_alloc_cell +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 0x8869ae43 dm_cell_error +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x90f6671f dm_cell_promote_or_release +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x9c3e13b6 dm_bio_detain +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 0xc2f9a386 dm_get_cell +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xca2e3a88 dm_deferred_entry_inc +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xd5e5fdb1 dm_bio_prison_free_cell +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xe78ce763 dm_cell_visit_release +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x0ad0dc4f dm_bufio_mark_buffer_dirty +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x6aba7f5e dm_bufio_get_block_number +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x6d3f57bd dm_bufio_get_client +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 0x9310ba06 dm_bufio_release_move +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x9c256008 dm_bufio_get_device_size +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xa1d2413a dm_bufio_read +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xa448e19f dm_bufio_prefetch +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xa82b2066 dm_bufio_write_dirty_buffers +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xafbda3f3 dm_bufio_new +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xc9a3422d dm_bufio_write_dirty_buffers_async +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xcbb1bae2 dm_bufio_get +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xd44521c8 dm_bufio_client_create +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xd4bddf5c dm_bufio_issue_flush +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-cache 0x09cbedb0 dm_cache_policy_unregister +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x0c82bed8 dm_cache_policy_register +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x10c83e65 dm_cache_policy_get_name +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x988ff644 dm_cache_policy_get_hint_size +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x9ae1ee84 dm_cache_policy_create +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x9b7efed5 dm_cache_policy_get_version +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xa0135e3f dm_cache_policy_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-multipath 0x3064fd5c dm_register_path_selector +EXPORT_SYMBOL_GPL drivers/md/dm-multipath 0x64860721 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 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 0x442b12bb dm_rh_delay +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x4430764e dm_rh_region_to_sector +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x45ab972a dm_rh_dec +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x6cc517a5 dm_region_hash_create +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x6d4ea28e 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 0x7daae386 dm_rh_inc_pending +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x9735dcb0 dm_rh_bio_to_region +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x9a0a0a35 dm_rh_dirty_log +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xa53387c7 dm_rh_flush +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xa68e1f06 dm_rh_get_state +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 0xfad9d53a dm_rh_get_region_size +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xfc62ef4e dm_rh_get_region_key +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 0x01445176 dm_btree_find_highest_key +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x0604db1b dm_btree_remove_leaves +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x17c36f29 dm_bm_checksum +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x1e3f728d dm_block_data +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x2025e954 dm_array_info_init +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x24fa6664 dm_bitset_set_bit +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x2c112836 dm_block_location +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 0x32b5f546 dm_array_empty +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 0x3ad0f55b dm_bm_flush +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x40f7bd91 dm_tm_inc +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x42dbdfc3 dm_tm_read_lock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x4360913e dm_btree_find_lowest_key +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x49b35849 dm_sm_disk_create +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x4ae1a336 dm_block_manager_create +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x55b4bd4d dm_tm_create_with_sm +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x5aed1dd7 dm_bitset_flush +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x5e6aea80 dm_btree_walk +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x62c1b9ee dm_array_walk +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 0x72289260 dm_block_manager_destroy +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x7657e859 dm_bitset_clear_bit +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 0x80c89b3d dm_tm_unlock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x827a42f4 dm_tm_open_with_sm +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x832bf228 dm_array_del +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x858c8d94 dm_array_set_value +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x89f1e1cc dm_btree_insert_notify +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 0x966a8838 dm_btree_lookup +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 0x9f624559 dm_sm_disk_open +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xa87c5b4d dm_array_resize +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xab96bd2d dm_bitset_test_bit +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xaee02382 dm_btree_empty +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xafeda29f dm_bm_write_lock_zero +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xb7bad799 dm_bm_unlock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xb9a6ecf8 dm_tm_dec +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xba47c03a dm_bitset_del +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xbd50ebbb dm_btree_del +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xca40abd5 dm_btree_insert +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xd041d62b dm_array_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 0xd29923fb dm_tm_shadow_block +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xed1e1f96 dm_btree_remove +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xed58cfa1 dm_bitset_empty +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xf12ec3cd dm_disk_bitset_init +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xf375d009 dm_bm_write_lock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xf5455120 dm_bm_read_lock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xffff2ac3 dm_bitset_resize +EXPORT_SYMBOL_GPL drivers/media/common/b2c2/b2c2-flexcop 0x66c0289a b2c2_flexcop_debug +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x00b5d22f saa7146_vfree_destroy_pgtable +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x04267ea2 saa7146_unregister_extension +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x243ab9c6 saa7146_wait_for_debi_done +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x3ba4c50c saa7146_setgpio +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x5a07daa2 saa7146_register_extension +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x621691bc saa7146_i2c_adapter_prepare +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xab2d5493 saa7146_vmalloc_build_pgtable +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xb32706f3 saa7146_pgtable_free +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xb73a7350 saa7146_pgtable_alloc +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xc9db4f2f saa7146_pgtable_build_single +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xe3cd9b5c saa7146_debug +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x13cb3714 saa7146_set_hps_source_and_sync +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x3117fbd4 saa7146_start_preview +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0xa219067d saa7146_unregister_device +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0xacbc5e84 saa7146_vv_release +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0xaf7b4adf saa7146_register_device +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0xc32c09ed saa7146_vv_init +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0xd1fe48b1 saa7146_stop_preview +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x02c65d94 sms_board_event +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x07928343 smscore_unregister_hotplug +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x21e36bf2 smscore_registry_getmode +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x37d91069 smsendian_handle_tx_message +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x391b378b smscore_start_device +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x45284ae9 smsendian_handle_rx_message +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x51d769c8 smscore_register_device +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x5eaa99d9 smscore_get_device_mode +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x5fdfb44d smscore_get_board_id +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x715434a3 smscore_register_client +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 0x95e030db sms_board_power +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x998b4bfc smscore_getbuffer +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x99a81ab3 smsclient_sendrequest +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x9c2225ed smscore_translate_msg +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x9fa4b355 sms_board_setup +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xa273a5a1 sms_board_lna_control +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xb9129777 sms_board_led_feedback +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xbbdb5c42 smscore_unregister_client +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xbbdda6a8 smscore_register_hotplug +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xd0ba8190 smscore_onresponse +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xe729da53 smscore_putbuffer +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xe9c9e333 smscore_set_board_id +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xffd574db smscore_unregister_device +EXPORT_SYMBOL_GPL drivers/media/dvb-frontends/as102_fe 0xe9e3a417 as102_attach +EXPORT_SYMBOL_GPL drivers/media/dvb-frontends/cx24117 0xc68937de cx24117_attach +EXPORT_SYMBOL_GPL drivers/media/dvb-frontends/tda18271c2dd 0xe0427770 tda18271c2dd_attach +EXPORT_SYMBOL_GPL drivers/media/media 0x03d29633 media_entity_create_link +EXPORT_SYMBOL_GPL drivers/media/media 0x131fd303 __media_entity_remove_links +EXPORT_SYMBOL_GPL drivers/media/media 0x29519eef media_device_register_entity +EXPORT_SYMBOL_GPL drivers/media/media 0x2f5f331e media_device_unregister_entity +EXPORT_SYMBOL_GPL drivers/media/media 0x34f0b9a1 __media_device_register +EXPORT_SYMBOL_GPL drivers/media/media 0x3666b243 media_entity_init +EXPORT_SYMBOL_GPL drivers/media/media 0x48e76309 media_entity_find_link +EXPORT_SYMBOL_GPL drivers/media/media 0x55a5cdd1 media_entity_remove_links +EXPORT_SYMBOL_GPL drivers/media/media 0x5b2238c1 media_entity_get +EXPORT_SYMBOL_GPL drivers/media/media 0x6c7dd552 media_entity_put +EXPORT_SYMBOL_GPL drivers/media/media 0x764d0e28 media_entity_pipeline_start +EXPORT_SYMBOL_GPL drivers/media/media 0x76fac6d5 media_entity_graph_walk_next +EXPORT_SYMBOL_GPL drivers/media/media 0x7f228248 media_device_unregister +EXPORT_SYMBOL_GPL drivers/media/media 0x9b74a20b media_entity_graph_walk_start +EXPORT_SYMBOL_GPL drivers/media/media 0xa969f461 media_entity_remote_pad +EXPORT_SYMBOL_GPL drivers/media/media 0xbc68e63e media_entity_setup_link +EXPORT_SYMBOL_GPL drivers/media/media 0xecfb9465 media_entity_pipeline_stop +EXPORT_SYMBOL_GPL drivers/media/media 0xf52550a9 media_entity_cleanup +EXPORT_SYMBOL_GPL drivers/media/pci/cx88/cx88xx 0xe3ff9e4e cx88_setup_xc3028 +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x021f1f0f mantis_ca_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x09a7e2ef mantis_ca_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x21bf21d0 mantis_dvb_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x275ec302 mantis_uart_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x2e3bff5e mantis_dvb_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x4a22d238 mantis_uart_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x4f1bfdc4 mantis_gpio_set_bits +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x63bcbcfc mantis_dma_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x6c386272 mantis_dma_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x71dfbdea mantis_frontend_power +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x895d9a66 mantis_pci_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x99d148ee mantis_get_mac +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xa15f5c9a mantis_frontend_soft_reset +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xa30b2fb4 mantis_pci_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xa6b6af9a mantis_stream_control +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xb45708ac mantis_input_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xd0f1b202 mantis_input_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xf1b4c134 mantis_i2c_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xfe301fba mantis_i2c_init +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x074ed30c saa7134_s_tuner +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x38af2f93 saa7134_s_frequency +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x40d807b9 saa7134_enum_input +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x423e91a0 saa7134_s_std +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x4d01cca6 saa7134_querystd +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x5482e6ca saa7134_ts_queue_setup +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x60ec9b93 saa7134_querycap +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x61371184 saa7134_ts_buffer_prepare +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x761178ca saa7134_g_std +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x7dc67296 saa7134_ts_start_streaming +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x94ccb554 saa7134_g_tuner +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x9e748bed saa7134_ts_buffer_init +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xc92ed58c saa7134_g_frequency +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xd74be107 saa7134_ts_stop_streaming +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xf4602e86 saa7134_vb2_buffer_queue +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xf5c8f3cf saa7134_g_input +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xf63e8226 saa7134_stop_streaming +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xfa4a7729 saa7134_s_input +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xfec169d2 saa7134_ts_qops +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x25af2f3c ttpci_budget_deinit +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x2c4b3aff ttpci_budget_debiread +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x415588cf 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 0x90d932ac ttpci_budget_init +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0xbea2b90b ttpci_budget_debiwrite +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0xc0060140 ttpci_budget_set_video_port +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0xd79211e4 ttpci_budget_init_hooks +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0x0b2585ce xvip_get_format_by_fourcc +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0x32fbf706 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 0x42d0b1cf xvip_enum_mbus_code +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0x490bd11c xvip_get_format_by_code +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0x5f39e607 xvip_of_get_format +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0x7857bcdb xvip_cleanup_resources +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0x9e174bed xvip_clr_or_set +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0xa2033ad6 xvip_init_resources +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0xa6bc31d9 xvip_enum_frame_size +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 0x4a3f07db xvtc_of_get +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-vtc 0xa8a0f912 xvtc_put +EXPORT_SYMBOL_GPL drivers/media/radio/shark2 0x13f190bc radio_tea5777_init +EXPORT_SYMBOL_GPL drivers/media/radio/shark2 0x62e496b2 radio_tea5777_exit +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x004c7ac7 rc_map_register +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x0d2082fd rc_register_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x14e154bf rc_open +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x4e9453e5 ir_raw_event_store_with_filter +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x553efb91 rc_core_debug +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x57816877 rc_close +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x583f2d2e ir_raw_event_store_edge +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x58a3c486 rc_free_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x5d1751ce rc_repeat +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x66aa9534 rc_keydown_notimeout +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x72fe3963 rc_allocate_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x7d8d349d ir_raw_event_store +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x7da50e47 rc_map_unregister +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x93e43a49 rc_map_get +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xac2ad439 rc_keydown +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xae823333 rc_g_keycode_from_table +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xb77326a0 ir_raw_event_handle +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xce005685 rc_unregister_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xfb4e4e83 ir_raw_event_set_idle +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xfdc710ee rc_keyup +EXPORT_SYMBOL_GPL drivers/media/tuners/mt2063 0x121067a5 mt2063_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/mt20xx 0x2e23e2b2 microtune_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/mxl5007t 0x6585a6cf mxl5007t_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/r820t 0x5d1f46f4 r820t_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda18271 0xc7252a77 tda18271_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda827x 0x9f35614e tda827x_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda8290 0x3b17d1e1 tda829x_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda8290 0x60b36ec2 tda829x_probe +EXPORT_SYMBOL_GPL drivers/media/tuners/tda9887 0xfd0298e6 tda9887_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5761 0x0716e1da tea5761_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5761 0x7f65df82 tea5761_autodetection +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5767 0x94cf85ef tea5767_autodetection +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5767 0xee984b84 tea5767_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tuner-simple 0x0401d14e simple_tuner_attach +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x017ea7c7 cx231xx_tuner_callback +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x0f3862d6 cx231xx_enable_i2c_port_3 +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x10dc9279 cx231xx_disable656 +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x20096546 cx231xx_uninit_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x35b2ba20 cx231xx_init_bulk +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x39b52710 cx231xx_dev_uninit +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x3d2b7dd1 is_fw_load +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x4ba97d11 cx231xx_unmute_audio +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x5b9bb793 cx231xx_set_mode +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x64d82a3c cx231xx_capture_start +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x71198064 cx231xx_demod_reset +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x78bcf3cb cx231xx_init_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x7ca984da cx231xx_init_vbi_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x8086b84a cx231xx_dev_init +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x90909dec cx231xx_enable656 +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xb3bcde73 cx231xx_send_gpio_cmd +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xb958e227 cx231xx_get_i2c_adap +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xd4157c10 cx231xx_set_alt_setting +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xdd11de32 cx231xx_send_usb_command +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xef91bb0a cx231xx_uninit_vbi_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xfc4a2e99 cx231xx_uninit_bulk +EXPORT_SYMBOL_GPL drivers/media/usb/dvb-usb-v2/mxl111sf-demod 0x6bae7078 mxl111sf_demod_attach +EXPORT_SYMBOL_GPL drivers/media/usb/dvb-usb-v2/mxl111sf-tuner 0x0b778f8a mxl111sf_tuner_attach +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x039137c6 em28xx_alloc_urbs +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x080d638d em28xx_find_led +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x1bdaf0d9 em28xx_write_regs +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x1f8ce2bb em28xx_set_mode +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x26484098 em28xx_read_reg +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x317df636 em28xx_init_usb_xfer +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x58636679 em28xx_write_ac97 +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x5f51bf72 em28xx_audio_analog_set +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x6061acf3 em28xx_gpio_set +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x656735ac em28xx_init_camera +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x6bee352b em28xx_setup_xc3028 +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x6d578f78 em28xx_boards +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x7f5dec57 em28xx_uninit_usb_xfer +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x7fc8652c em28xx_tuner_callback +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x865683c4 em28xx_write_reg_bits +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x8ad5750c em28xx_write_reg +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x92b52fbe em28xx_stop_urbs +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x99c5a7d3 em28xx_audio_setup +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xc412e6dc em28xx_toggle_reg_bits +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xcd75ef7f em28xx_free_device +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xdee9e19f em28xx_read_ac97 +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x2309a6d6 tm6000_xc5000_callback +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x49510558 tm6000_set_reg +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x89b611dd tm6000_debug +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x98006169 tm6000_set_reg_mask +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0xa6c35453 tm6000_get_reg +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0xcf2ee6e0 tm6000_set_audio_bitrate +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0xdff8e89d tm6000_tuner_callback +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x01c483a9 v4l2_get_timestamp +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x0b5ca0be v4l2_i2c_new_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x813f3de4 v4l2_find_nearest_format +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x9c6cf5e6 v4l2_i2c_subdev_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0xa592665a v4l2_i2c_new_subdev_board +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0xa678929d v4l2_spi_subdev_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0xe0c94d16 v4l2_i2c_subdev_addr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0xf2a353ac v4l2_i2c_tuner_addrs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0xf5ef842e v4l_bound_align_image +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0xfd926c0b v4l2_spi_new_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x08982d59 v4l2_match_dv_timings +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x4103badb v4l2_print_dv_timings +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x5491c182 v4l2_enum_dv_timings_cap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x67b8205b v4l2_detect_cvt +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x6f344bb9 v4l2_calc_aspect_ratio +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0xb0891da2 v4l2_dv_timings_presets +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0xdfa5a008 v4l2_valid_dv_timings +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0xf0e1988c v4l2_find_dv_timings_cap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0xf98d0f9d v4l2_detect_gtf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-flash-led-class 0x48c6fdcc v4l2_flash_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-flash-led-class 0xffcf3c53 v4l2_flash_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x09b27644 v4l2_m2m_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x0c0f7730 v4l2_m2m_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x12f858f4 v4l2_m2m_ioctl_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x13cd158e v4l2_m2m_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x17eb0eee v4l2_m2m_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x18b8be28 v4l2_m2m_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x1df8c87b v4l2_m2m_ioctl_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x2355fb23 v4l2_m2m_try_schedule +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x340c95b5 v4l2_m2m_next_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x39393702 v4l2_m2m_ioctl_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x3ab7a322 v4l2_m2m_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x53b78261 v4l2_m2m_ctx_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x54c6d5cd v4l2_m2m_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x69b5a777 v4l2_m2m_ioctl_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x6afc8a5f v4l2_m2m_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x71a40559 v4l2_m2m_fop_mmap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x73bfee4b v4l2_m2m_ioctl_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x80d6a9da v4l2_m2m_ioctl_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x83f3f020 v4l2_m2m_ctx_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x90614819 v4l2_m2m_ioctl_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xa4628658 v4l2_m2m_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xa67a8a89 v4l2_m2m_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xab7990cc v4l2_m2m_ioctl_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xb440a2a9 v4l2_m2m_ioctl_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xc50056dd v4l2_m2m_buf_remove +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xc6fca5ad v4l2_m2m_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xcf0eff4a v4l2_m2m_buf_queue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xdb7339c2 v4l2_m2m_fop_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xed758231 v4l2_m2m_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x101d8591 videobuf_read_start +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x15100062 videobuf_queue_core_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x164ce1bc videobuf_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x1e89fe68 videobuf_stop +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x23aab9b7 videobuf_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x28484d92 videobuf_queue_cancel +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x33b8cc71 videobuf_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x44ee0411 videobuf_mmap_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x4ed41018 videobuf_read_one +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x4f177c2e videobuf_next_field +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x4f9796cd videobuf_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x5f2eebe1 videobuf_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x60983bd7 videobuf_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x66c3f427 __videobuf_mmap_setup +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x6b265d2c videobuf_read_stop +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x75e0b8c8 videobuf_poll_stream +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x821a45b3 videobuf_iolock +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x8aa7483e videobuf_mmap_mapper +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x91edf484 videobuf_read_stream +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x9382698c videobuf_queue_to_vaddr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x9c11b97e videobuf_alloc_vb +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xb55ee54b videobuf_waiton +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xc58060c6 videobuf_queue_is_busy +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xf3a2b7d3 videobuf_mmap_setup +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x553a86d0 videobuf_sg_alloc +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x65c249be videobuf_dma_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x9af40e95 videobuf_queue_sg_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0xcdf8e6ee videobuf_dma_unmap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0xe1e5e268 videobuf_to_dma +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-vmalloc 0x74b684ed videobuf_queue_vmalloc_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-vmalloc 0xb5491a26 videobuf_vmalloc_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-vmalloc 0xedf26772 videobuf_to_vmalloc +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x04676241 vb2_ops_wait_prepare +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x16b6a5ed vb2_write +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x1cb2a38b vb2_ioctl_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x225a477d vb2_fop_read +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x27ea0f6f vb2_plane_cookie +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x369dfa81 vb2_wait_for_all_buffers +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x38621096 vb2_mmap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x3952abf9 vb2_ioctl_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x3f4890ce vb2_thread_start +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x4d01081d vb2_ioctl_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x51230387 vb2_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x53914a38 vb2_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x5528d5f1 vb2_plane_vaddr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x64583c95 vb2_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x66bdefad vb2_fop_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x6a50c1c5 vb2_buffer_done +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x6d1671f1 vb2_ioctl_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x71ce89c2 vb2_ioctl_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x7b1c6f99 vb2_ioctl_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x7dfae650 vb2_thread_stop +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x822979c6 vb2_fop_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x8445d844 vb2_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x8455e2e4 vb2_fop_write +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x8dd78d4c vb2_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x94ebc375 vb2_ops_wait_finish +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x99dc95d8 vb2_queue_error +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x9c6153c4 vb2_read +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xb2c2a9b7 vb2_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xb8efdd2e vb2_fop_mmap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xc029bde7 _vb2_fop_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xc80badd8 vb2_ioctl_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xcc71ce44 vb2_ioctl_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xcef1a24d vb2_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xd0f638fc vb2_queue_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xf01dcc03 vb2_ioctl_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xf4bb5596 vb2_discard_done +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xf9c8b9c0 vb2_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xfdcfa07f vb2_queue_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xfe88f4b5 vb2_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-contig 0xa6ace06c vb2_dma_contig_init_ctx +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-contig 0xe57f0426 vb2_dma_contig_cleanup_ctx +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-contig 0xe7a1c890 vb2_dma_contig_memops +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-sg 0x7bc02f35 vb2_dma_sg_init_ctx +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-sg 0xd30ec30f vb2_dma_sg_cleanup_ctx +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-sg 0xf4be5798 vb2_dma_sg_memops +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-memops 0x52a4b3ae vb2_put_vma +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-memops 0x87ffbacf vb2_get_vma +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-memops 0x9ce58734 vb2_common_vm_ops +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-memops 0xfc2d843c vb2_get_contig_userptr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-vmalloc 0x87fddf1c vb2_vmalloc_memops +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x00d9cf52 v4l2_event_unsubscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x2bcb9ae3 v4l2_device_unregister_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x2cb9c251 v4l2_subdev_link_validate_default +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x31dce86e v4l2_device_disconnect +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x32282d3b v4l2_event_unsubscribe_all +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x3454c703 v4l2_event_queue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x4071ff45 v4l2_event_dequeue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x4a7cafa4 v4l2_device_set_name +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x510bf241 v4l2_compat_ioctl32 +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x551d8590 v4l2_fh_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x56bb6772 v4l2_fh_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x5aad585a v4l2_fh_is_singular +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x7bca9142 v4l2_src_change_event_subscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x7e69ad3f v4l2_subdev_link_validate +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x8ea21d96 v4l2_device_register_subdev_nodes +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x8ef6a120 v4l2_event_subdev_unsubscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x9928c595 v4l2_device_register_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xc6bda65b v4l2_fh_del +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xc9e0d773 v4l2_event_queue_fh +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xdc801624 v4l2_event_subscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xdd741cfa v4l2_device_put +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xe2555f6a v4l2_device_unregister +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xee6cc21e v4l2_src_change_event_subdev_subscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xf380a7f8 v4l2_device_register +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xf4900962 v4l2_fh_open +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xf56e6b75 v4l2_fh_add +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xf6f47ac1 v4l2_event_pending +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xfc0b76c0 v4l2_fh_exit +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0x12ffa9b6 pm80x_init +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0x90994213 pm80x_regmap_config +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0xbdefe581 pm80x_pm_ops +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0xd99fd720 pm80x_deinit +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0x22d0c1dc da9150_set_bits +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0x3910d0e7 da9150_bulk_write +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0x91678305 da9150_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0xb768af45 da9150_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0xf05ee829 da9150_bulk_read +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x0582b699 kempld_read32 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x61bd7e96 kempld_write8 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x70c630f4 kempld_read16 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x9122e346 kempld_read8 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x91b7ed2e kempld_write32 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0xa6ff4040 kempld_get_mutex +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0xab5bdf6b kempld_write16 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0xbc6e71bf kempld_release_mutex +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0x600d26db lm3533_write +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0x8ff6ac1f lm3533_update +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0xd7a63a30 lm3533_read +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x0af447b4 lm3533_ctrlbank_set_pwm +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x17e70829 lm3533_ctrlbank_disable +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x44c7a43e lm3533_ctrlbank_get_pwm +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x6d92fa99 lm3533_ctrlbank_set_max_current +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x74458230 lm3533_ctrlbank_enable +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x7492e505 lm3533_ctrlbank_set_brightness +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x86187ef2 lm3533_ctrlbank_get_brightness +EXPORT_SYMBOL_GPL drivers/mfd/lp3943 0x17dc34e3 lp3943_update_bits +EXPORT_SYMBOL_GPL drivers/mfd/lp3943 0x9085cedd lp3943_write_byte +EXPORT_SYMBOL_GPL drivers/mfd/lp3943 0xd643d281 lp3943_read_byte +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x00ee2fe8 mc13xxx_common_exit +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x295c4320 mc13xxx_variant_mc13783 +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x3b53b648 mc13xxx_variant_mc34708 +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x69e60800 mc13xxx_variant_mc13892 +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0xa8af5fbe mc13xxx_adc_do_conversion +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0xc461fd64 mc13xxx_common_init +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x7acfd04b pcf50633_write_block +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xa4eea471 pcf50633_register_irq +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xb03c2e99 pcf50633_reg_clear_bits +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xb088ddc2 pcf50633_reg_set_bit_mask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xbb75aa51 pcf50633_free_irq +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xe15f088c pcf50633_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xe341b355 pcf50633_irq_unmask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xe3fd90e6 pcf50633_read_block +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xe8fd0916 pcf50633_irq_mask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xeb2c542f pcf50633_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xff123db8 pcf50633_irq_mask_get +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-adc 0x1365e192 pcf50633_adc_sync_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-adc 0x9524a4ac pcf50633_adc_async_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x4617f72c pcf50633_gpio_power_supply_set +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x4a4c5286 pcf50633_gpio_set +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x64c24ccf pcf50633_gpio_invert_get +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0xf22b7d90 pcf50633_gpio_get +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0xfe7485bc pcf50633_gpio_invert_set +EXPORT_SYMBOL_GPL drivers/mfd/retu-mfd 0x01a33234 retu_write +EXPORT_SYMBOL_GPL drivers/mfd/retu-mfd 0x4fca3918 retu_read +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x160dfc4d rtsx_pci_read_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x258ac0d7 rtsx_pci_write_ppbuf +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x27da6a7f rtsx_pci_send_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x29af318a rtsx_pci_card_exist +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x34ac96f0 rtsx_pci_card_power_off +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x35203466 rtsx_pci_card_exclusive_check +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x3ee12b48 rtsx_pci_dma_transfer +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x467ae709 rtsx_pci_write_phy_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x488a4f61 rtsx_pci_dma_unmap_sg +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x4edeafab rtsx_pci_switch_output_voltage +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x59cba889 rtsx_pci_start_run +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x691e6646 rtsx_pci_read_ppbuf +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x6e038fbc rtsx_pci_add_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x6fbf295f rtsx_pci_write_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x8c58b17f rtsx_pci_switch_clock +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x96ab1452 rtsx_pci_send_cmd_no_wait +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xa3aab636 rtsx_pci_card_pull_ctl_enable +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xb05661f4 rtsx_pci_read_phy_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xb4ba2f80 rtsx_pci_card_pull_ctl_disable +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xbf76531d rtsx_pci_transfer_data +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xc0b8b091 rtsx_pci_stop_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xc4ffabc2 rtsx_pci_complete_unfinished_transfer +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xde872de5 rtsx_pci_dma_map_sg +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xeee4e3c0 rtsx_pci_card_power_on +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x02831685 rtsx_usb_read_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x07310ff6 rtsx_usb_card_exclusive_check +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x413ce5b1 rtsx_usb_transfer_data +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x5cb0b157 rtsx_usb_ep0_write_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x691e355d rtsx_usb_write_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x8e25cced rtsx_usb_add_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0xa3bcb59f rtsx_usb_get_rsp +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0xc1de8954 rtsx_usb_switch_clock +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0xc95e7e09 rtsx_usb_get_card_status +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0xd5778598 rtsx_usb_read_ppbuf +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0xd638fb60 rtsx_usb_send_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0xd6eeccf1 rtsx_usb_ep0_read_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0xf7a570f3 rtsx_usb_write_ppbuf +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x01972f39 si476x_core_cmd_agc_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x0e256a05 si476x_core_cmd_set_property +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x1be16066 si476x_core_has_am +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x266cf2eb si476x_core_cmd_fm_seek_start +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x28111236 si476x_core_is_in_am_receiver_mode +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x2c55ea56 si476x_core_is_a_primary_tuner +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x2d2f421c si476x_core_cmd_am_tune_freq +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x2f5feb9b si476x_core_cmd_func_info +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x30d9c2e9 si476x_core_cmd_am_rsq_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x33c56ba2 si476x_core_cmd_fm_phase_div_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x490dda6d si476x_core_cmd_intb_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x4e0ba9ce si476x_core_has_diversity +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x540ed15e si476x_core_cmd_ic_link_gpo_ctl_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x5c460a15 devm_regmap_init_si476x +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x68d9d606 si476x_core_cmd_power_down +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x7535d25a si476x_core_cmd_am_acf_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x7894c496 si476x_core_cmd_fm_phase_diversity +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x7b40b5c7 si476x_core_stop +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x82fd95a8 si476x_core_cmd_fm_tune_freq +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x83466d51 si476x_core_set_power_state +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x85c695c6 si476x_core_cmd_dig_audio_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x97e2053b si476x_core_cmd_fm_acf_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x9f4ececc si476x_core_is_a_secondary_tuner +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xb190aa89 si476x_core_cmd_ana_audio_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xb8c7c41b si476x_core_is_powered_up +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xb9e3ebae si476x_core_cmd_am_seek_start +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xbd1ac785 si476x_core_cmd_get_property +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xbdd7add9 si476x_core_i2c_xfer +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xbe90103a si476x_core_cmd_zif_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xc70ee893 si476x_core_cmd_fm_rds_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xce96d3ac si476x_core_start +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xceb61d9b si476x_core_cmd_fm_rds_blockcount +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xdbc95292 si476x_core_cmd_fm_rsq_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xfe6be519 si476x_core_cmd_power_up +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x0cf12259 sm501_misc_control +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x41dbb0ad sm501_find_clock +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x425154c0 sm501_set_clock +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x8af3c4da sm501_unit_power +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0xcc0bf8d0 sm501_modify_reg +EXPORT_SYMBOL_GPL drivers/mfd/ti_am335x_tscadc 0x07d61990 am335x_tsc_se_adc_done +EXPORT_SYMBOL_GPL drivers/mfd/ti_am335x_tscadc 0x204138db am335x_tsc_se_clr +EXPORT_SYMBOL_GPL drivers/mfd/ti_am335x_tscadc 0x3837e3b6 am335x_tsc_se_set_cache +EXPORT_SYMBOL_GPL drivers/mfd/ti_am335x_tscadc 0xf8b6a227 am335x_tsc_se_set_once +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0x0bf10b2e tps65217_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0x0dc242fa tps65217_set_bits +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0xad7bac1d tps65217_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0xafb3f173 tps65217_clear_bits +EXPORT_SYMBOL_GPL drivers/mfd/tps65218 0x9dd8e101 tps65218_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/tps65218 0xa6f317d8 tps65218_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/tps65218 0xb95b4d02 tps65218_clear_bits +EXPORT_SYMBOL_GPL drivers/mfd/tps65218 0xd25949bb tps65218_set_bits +EXPORT_SYMBOL_GPL drivers/mfd/ucb1400_core 0x7bafee40 ucb1400_adc_read +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0x8908da9c cb710_pci_update_config_reg +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0xc9798b4b cb710_sg_dwiter_read_next_block +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0xe2339736 cb710_sg_dwiter_write_next_block +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0xe3ef0211 cb710_set_irq_handler +EXPORT_SYMBOL_GPL drivers/misc/cxl/cxl 0x009e61a9 cxl_pci_to_cfg_record +EXPORT_SYMBOL_GPL drivers/misc/cxl/cxl 0x10f47816 cxl_psa_map +EXPORT_SYMBOL_GPL drivers/misc/cxl/cxl 0x30756a99 cxl_map_afu_irq +EXPORT_SYMBOL_GPL drivers/misc/cxl/cxl 0x33fd97bf cxl_fd_ioctl +EXPORT_SYMBOL_GPL drivers/misc/cxl/cxl 0x469e0af8 cxl_fd_poll +EXPORT_SYMBOL_GPL drivers/misc/cxl/cxl 0x4e247a97 cxl_fd_open +EXPORT_SYMBOL_GPL drivers/misc/cxl/cxl 0x50aec30f cxl_release_context +EXPORT_SYMBOL_GPL drivers/misc/cxl/cxl 0x57967342 cxl_start_work +EXPORT_SYMBOL_GPL drivers/misc/cxl/cxl 0x65bdd102 cxl_process_element +EXPORT_SYMBOL_GPL drivers/misc/cxl/cxl 0x6af428fd cxl_perst_reloads_same_image +EXPORT_SYMBOL_GPL drivers/misc/cxl/cxl 0x8740bc47 cxl_psa_unmap +EXPORT_SYMBOL_GPL drivers/misc/cxl/cxl 0x97d6dc38 cxl_fd_release +EXPORT_SYMBOL_GPL drivers/misc/cxl/cxl 0x9a580ebb cxl_stop_context +EXPORT_SYMBOL_GPL drivers/misc/cxl/cxl 0xa1a4804a cxl_fd_mmap +EXPORT_SYMBOL_GPL drivers/misc/cxl/cxl 0xa2a6b7c4 cxl_pci_to_afu +EXPORT_SYMBOL_GPL drivers/misc/cxl/cxl 0xaf7944bf cxl_get_context +EXPORT_SYMBOL_GPL drivers/misc/cxl/cxl 0xb732008b cxl_dev_context_init +EXPORT_SYMBOL_GPL drivers/misc/cxl/cxl 0xbf5baf31 cxl_free_afu_irqs +EXPORT_SYMBOL_GPL drivers/misc/cxl/cxl 0xc4132f94 cxl_set_master +EXPORT_SYMBOL_GPL drivers/misc/cxl/cxl 0xd5a9fbea cxl_get_phys_dev +EXPORT_SYMBOL_GPL drivers/misc/cxl/cxl 0xd99ad655 cxl_afu_reset +EXPORT_SYMBOL_GPL drivers/misc/cxl/cxl 0xe2192fdd cxl_fd_read +EXPORT_SYMBOL_GPL drivers/misc/cxl/cxl 0xeac1efed cxl_start_context +EXPORT_SYMBOL_GPL drivers/misc/cxl/cxl 0xf55a755a cxl_allocate_afu_irqs +EXPORT_SYMBOL_GPL drivers/misc/cxl/cxl 0xfa58d1d3 cxl_fops_get_context +EXPORT_SYMBOL_GPL drivers/misc/cxl/cxl 0xfbf1d248 cxl_unmap_afu_irq +EXPORT_SYMBOL_GPL drivers/misc/cxl/cxl 0xff40159e cxl_get_fd +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0x1a1b5249 oslec_flush +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0x2feda75b oslec_hpf_tx +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0x3227a28e oslec_snapshot +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0x7dc9dddd oslec_adaption_mode +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0xb2c66001 oslec_create +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0xc8b5a524 oslec_free +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0xd370f679 oslec_update +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0x27cb133b eeprom_93cx6_multiread +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0x63d2ff63 eeprom_93cx6_wren +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0x793fc8de eeprom_93cx6_multireadb +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0x822222db eeprom_93cx6_write +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0x98bb5a22 eeprom_93cx6_read +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0xdb9ca14b eeprom_93cx6_readb +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x297a8e36 enclosure_register +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x4f7a0ae1 enclosure_unregister +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x78b1dd51 enclosure_remove_device +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x7eb5e62c enclosure_component_alloc +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x99b6632a enclosure_add_device +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0xb50fcd3a enclosure_for_each_device +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0xd85e9ef9 enclosure_component_register +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0xf35b2326 enclosure_find +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x34146230 lis3_dev +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x60693cf0 lis3lv02d_joystick_enable +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x61cb0e91 lis3lv02d_poweroff +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x62b43806 lis3lv02d_init_device +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x7a883c01 lis3lv02d_remove_fs +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x90bd867c lis3lv02d_poweron +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xb0a8dd42 lis3lv02d_joystick_disable +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xcf70fc5c lis3lv02d_init_dt +EXPORT_SYMBOL_GPL drivers/misc/ti-st/st_drv 0x5d394195 st_unregister +EXPORT_SYMBOL_GPL drivers/misc/ti-st/st_drv 0xda6c558a st_register +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x1351781b sdhci_send_command +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x15e46af9 sdhci_reset +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x1ef72327 sdhci_resume_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x3185bca6 sdhci_set_bus_width +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x4a1eaebb sdhci_free_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x55a58966 sdhci_runtime_resume_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x7335aba5 sdhci_add_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x8665cd1f sdhci_alloc_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x9b7bfc78 sdhci_set_uhs_signaling +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xac8ee5b5 sdhci_runtime_suspend_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xad1ec619 sdhci_suspend_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xb7b9ac75 sdhci_set_clock +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xbd82c087 sdhci_enable_irq_wakeups +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xe34ee3ea sdhci_remove_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x00775ffc sdhci_pltfm_pmops +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x339b5313 sdhci_pltfm_register +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x562ea0a4 sdhci_get_of_property +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x77d16479 sdhci_pltfm_free +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x82dc88e2 sdhci_pltfm_unregister +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0xa897bfcb sdhci_pltfm_suspend +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0xb1db5661 sdhci_pltfm_clk_get_max_clock +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0xf5f6f4c7 sdhci_pltfm_resume +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0xfd82454b sdhci_pltfm_init +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0x47faad9f cfi_cmdset_0200 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0x85cdade1 cfi_cmdset_0001 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0xbae48809 cfi_cmdset_0003 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0x136a072a cfi_cmdset_0002 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0x6d384cfa cfi_cmdset_0006 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0xe093c8ac cfi_cmdset_0701 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0020 0x34b77c7a cfi_cmdset_0020 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0x16ff478d cfi_qry_mode_on +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0x29ffb7ba cfi_qry_mode_off +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0xddd41555 cfi_qry_present +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x02788a31 mtd_device_unregister +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x0ed1e84f mtd_unpoint +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x1178de52 mtd_read_user_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x13fd2671 mtd_write_user_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x16769a61 mtd_block_isreserved +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x16ef454a mtd_is_locked +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x209009a5 register_mtd_parser +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x2130a663 mtd_add_partition +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x25cb94f4 mtd_block_isbad +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x2d124902 kill_mtd_super +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x35aa70db get_mtd_device_nm +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x3af3860c mtd_writev +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x46f0e425 mtd_unlock +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x5b8ec42f put_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x5dd2a102 mtd_write +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x7337c87a mtd_panic_write +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x76a5a46d mtd_read +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x79c5e37d __mtd_next_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x7e4214e5 register_mtd_user +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x85f51605 mtd_kmalloc_up_to +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x8a9620b8 mtd_read_fact_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x8b4d86ca mount_mtd +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xa1104b47 mtd_erase +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xa21051d1 mtd_device_parse_register +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xa2179301 mtd_get_fact_prot_info +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xa9dc7bf4 mtd_erase_callback +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xad793fbf mtd_read_oob +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xb4da514e mtd_block_markbad +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xb9755f23 deregister_mtd_parser +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xbf2f9c09 mtd_lock +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xc7926b01 mtd_point +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xc7b778a6 get_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xc8c90f9d mtd_table_mutex +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xce89a555 mtd_del_partition +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xd9bb4a1e __put_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xe182f2ba __get_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xe2537699 mtd_get_user_prot_info +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xebe75e56 mtd_is_partition +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xef56647c mtd_lock_user_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xf4f03ebb mtd_get_device_size +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xfd57dcbb unregister_mtd_user +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xfe146a70 mtd_get_unmapped_area +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0x2ee7d0a9 deregister_mtd_blktrans +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0x366e8747 del_mtd_blktrans_dev +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0x6ddc5cb4 add_mtd_blktrans_dev +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0xa1b57c49 mtd_blktrans_cease_background +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0xc5ed0fe4 register_mtd_blktrans +EXPORT_SYMBOL_GPL drivers/mtd/nand/nand 0x48f26654 nand_wait_ready +EXPORT_SYMBOL_GPL drivers/mtd/nand/nand 0x85a5028a nand_release +EXPORT_SYMBOL_GPL drivers/mtd/nand/sm_common 0xbf147ba5 sm_register_device +EXPORT_SYMBOL_GPL drivers/mtd/onenand/onenand 0x5c6d3ba5 onenand_release +EXPORT_SYMBOL_GPL drivers/mtd/onenand/onenand 0x6e801508 onenand_scan +EXPORT_SYMBOL_GPL drivers/mtd/spi-nor/spi-nor 0x4fb33aa8 spi_nor_scan +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x153b2b68 ubi_leb_write +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x2d693eab ubi_open_volume +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 0x4950ed29 ubi_get_volume_info +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x4ffe4c53 ubi_leb_unmap +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x55eb9728 ubi_leb_read +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x5cfdd22d ubi_get_device_info +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x760f3425 ubi_is_mapped +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x85a8ee76 ubi_unregister_volume_notifier +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x922f2bcf ubi_close_volume +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xb2c874ad ubi_leb_map +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xb4b1e46b ubi_open_volume_nm +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xb7fb31ff ubi_leb_change +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xbd31fcdf ubi_leb_erase +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xd291f8cd ubi_do_get_device_info +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xdf8fa5e9 ubi_leb_read_sg +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xe72a5951 ubi_open_volume_path +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xf5ee9ba8 ubi_register_volume_notifier +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x52cd0d3c register_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x87b9864a c_can_power_down +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0xad3fc0f0 c_can_power_up +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0xbffec061 alloc_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0xdcc835fb free_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0xdfcf4542 unregister_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x05f0c0cc devm_can_led_init +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x1fdf855a can_put_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x222c295a can_len2dlc +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x23bea3b3 can_get_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x25001cf6 can_led_event +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x25ee835d free_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x298c902c close_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x2a7ea841 alloc_canfd_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x2eb87ecd open_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x3dd44e17 can_free_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x3eb9b167 can_change_state +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x3f3ffb88 safe_candev_priv +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x4c203133 can_bus_off +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x7d3b7df9 alloc_can_err_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xa3868aa2 alloc_can_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xaeba6981 register_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xb346573b can_dlc2len +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xfa9a08bc can_change_mtu +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xfaab42db alloc_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xfebeb1b8 unregister_candev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0x2ce52f89 free_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0xc34d3a80 register_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0xceef33bd alloc_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0xcf3985fe unregister_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x0bfab7a1 free_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x49ebd0d2 sja1000_interrupt +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x5d87f1ba unregister_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0xb7e507ab register_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0xdfb58fc6 alloc_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/ethernet/arc/arc_emac 0x496f1ca3 arc_emac_probe +EXPORT_SYMBOL_GPL drivers/net/ethernet/arc/arc_emac 0x573e4ff4 arc_emac_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x007288a0 mlx4_get_admin_guid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0b3d4c39 mlx4_qp_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0d719606 mlx4_free_hwq_res +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x10f30948 mlx4_get_vf_stats +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x113e2e5d mlx4_unicast_detach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x11b77d63 __mlx4_unregister_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x18552916 mlx4_xrcd_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1cda4cca mlx4_fmr_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1e804ae4 mlx4_config_vxlan_port +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1f9f39c6 mlx4_set_admin_guid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1fc862b6 mlx4_unicast_promisc_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x20839042 mlx4_set_vf_spoofchk +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2459b400 mlx4_uar_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x24d6ce0d mlx4_get_base_gid_ix +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2576c5c2 mlx4_multicast_promisc_add +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2670c9cc mlx4_counter_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x26f1af8a mlx4_find_cached_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x28a61e8d mlx4_fmr_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x28caf2e9 mlx4_counter_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2d46f4c3 mlx4_phys_to_slaves_pport +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2ed2de41 mlx4_map_sw_to_hw_steering_id +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x31692264 mlx4_INIT_PORT +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x35399301 mlx4_slave_convert_port +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x361834b6 mlx4_get_internal_clock_params +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3631f3f6 mlx4_set_vf_link_state +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3a0c1938 mlx4_mw_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3aa5cb26 mlx4_srq_arm +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x422323ff mlx4_SYNC_TPT +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x42bf4d9e __mlx4_register_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x43e84d6e mlx4_get_active_ports +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x44534e81 mlx4_fmr_unmap +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x46f15a10 mlx4_hw_rule_sz +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x49bccb42 mlx4_unregister_interface +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4af0410b mlx4_qp_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4b4e7023 mlx4_mr_enable +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4ec2c10a mlx4_unbond +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x50494eb3 mlx4_db_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5510cf4a mlx4_srq_lookup +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x56df0d79 mlx4_vf_get_enable_smi_admin +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x577ba575 mlx4_flow_attach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x580cfa68 mlx4_bond +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5a618c10 mlx4_fmr_enable +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5fcfbb2b mlx4_register_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x613bf441 mlx4_buf_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x617880d1 mlx4_vf_set_enable_smi_admin +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x635d5a1a mlx4_unicast_attach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x636c2725 mlx4_mr_hw_change_access +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x667a85d0 mlx4_wol_read +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x683959a2 mlx4_CLOSE_PORT +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x69bffa2f mlx4_srq_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6d05cd6d mlx4_unicast_promisc_add +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6dedb8d9 mlx4_multicast_attach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6e4218c4 mlx4_register_interface +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6ffc554a mlx4_qp_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x739103f8 mlx4_cq_modify +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x73f184c7 mlx4_FLOW_STEERING_IB_UC_QP_RANGE +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x75c93cd1 mlx4_get_protocol_dev +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x75dd8a58 mlx4_mtt_cleanup +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x76d5216e mlx4_pd_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x779528f1 mlx4_bf_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7829900c mlx4_buf_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x78c239f6 mlx4_buf_write_mtt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7a5c056d mlx4_mr_hw_change_pd +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7ad08731 mlx4_read_clock +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7bcdbdbe mlx4_alloc_hwq_res +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7c738ab4 mlx4_update_qp +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x840ad8f0 mlx4_flow_detach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x88a42d7a mlx4_wol_write +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8ae5ca83 mlx4_multicast_detach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8c515d40 mlx4_config_dev_retrieval +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8cf62238 mlx4_get_vf_config +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x94778685 mlx4_mtt_addr +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x96a7434c mlx4_mtt_init +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x984eb904 mlx4_mr_hw_put_mpt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x985eff28 mlx4_qp_modify +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x987710e2 mlx4_srq_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9d519404 mlx4_get_default_counter_index +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9e72cc3d mlx4_mr_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9ec8850c mlx4_get_slave_default_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa015ce36 mlx4_get_counter_stats +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa19ae427 mlx4_cq_resize +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa27b5fd5 mlx4_unregister_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa48d7c5f mlx4_xrcd_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa5c0cf48 mlx4_qp_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa869e311 mlx4_write_mtt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa934918d mlx4_srq_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xad64f0ef mlx4_phys_to_slaves_pport_actv +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xaef52b5f mlx4_map_sw_to_hw_steering_mode +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xaeffe609 mlx4_free_cmd_mailbox +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xaf0f4035 mlx4_pd_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xaff20e80 mlx4_cq_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb12147b2 mlx4_vf_smi_enabled +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb289f3b2 mlx4_flow_steer_promisc_add +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb7c69e47 mlx4_set_vf_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xba704741 mlx4_qp_reserve_range +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc32c77d0 mlx4_phys_to_slave_port +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc3dc83fa mlx4_find_cached_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc87912d6 mlx4_mr_hw_get_mpt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xca23918a mlx4_map_phys_fmr +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xcc39d22d mlx4_multicast_promisc_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xcd6933fe mlx4_mw_enable +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd169931e mlx4_db_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd1c2098b mlx4_register_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd2a542f5 mlx4_flow_steer_promisc_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd2c9d944 mlx4_mr_hw_write_mpt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd4bdbd9a mlx4_mr_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd5ec90bf __mlx4_replace_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xdaaf496b mlx4_alloc_cmd_mailbox +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xdb914ee7 mlx4_cq_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xdc7d7ded mlx4_qp_release_range +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xded4d323 mlx4_ACCESS_PTYS_REG +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe30055bc mlx4_set_vf_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe55ee0fa mlx4_port_map_set +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xed8592e2 mlx4_qp_to_ready +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xeea2a4e5 mlx4_unregister_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xeed16c5c mlx4_mr_rereg_mem_write +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xef381ea7 __mlx4_cmd +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf314dd4a mlx4_bf_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf5acfc86 mlx4_uar_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf74c534c mlx4_mr_rereg_mem_cleanup +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xfb97be66 mlx4_mw_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xfc6baa2d mlx4_get_base_qpn +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xfd41fa53 mlx4_set_vf_rate +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x027a20cb mlx5_query_port_proto_admin +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x071e1a75 mlx5_query_hca_vport_pkey +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x07cd4580 mlx5_db_alloc_node +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x09543b3d mlx5_fill_page_array +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x1d7abc31 mlx5_db_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x216da77a mlx5_core_xrcd_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x2352a226 mlx5_core_qp_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x26f76725 mlx5_query_port_proto_oper +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x29b6e860 mlx5_core_xrcd_dealloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x3020d4fe mlx5_core_eq_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x36bb7b54 mlx5_query_port_ptys +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x39ca014d mlx5_query_port_admin_status +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x3a5dcca9 mlx5_core_mad_ifc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x41d05a2f mlx5_query_hca_vport_system_image_guid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x45843515 mlx5_core_page_fault_resume +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x61472a7e mlx5_query_port_proto_cap +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x6c089d54 mlx5_buf_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x6d1c3ebe mlx5_query_hca_vport_context +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x7183799f mlx5_create_map_eq +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x733063a0 mlx5_query_port_oper_mtu +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x743fbeac mlx5_query_hca_vport_node_guid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x800115dc mlx5_set_port_mtu +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x89619d5e mlx5_query_port_link_width_oper +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x8a7628b6 mlx5_query_hca_vport_gid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x8a88a5f2 mlx5_destroy_unmap_eq +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x9f891f3d mlx5_set_port_proto +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xb0fb8b67 mlx5_core_access_reg +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xb2e23618 mlx5_set_port_caps +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xca54125c mlx5_query_port_vl_hw_cap +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xcadd9025 mlx5_core_create_qp +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xcae89428 mlx5_query_port_max_mtu +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xcbae24a7 mlx5_set_port_admin_status +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xd02b3689 mlx5_buf_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe274b615 mlx5_core_qp_modify +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe8501d9c mlx5_db_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf811a9e1 mlx5_core_destroy_qp +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac 0x197569d8 stmmac_resume +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac 0x354a68a8 stmmac_dvr_probe +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac 0x7375e7ac stmmac_dvr_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac 0x81e7d999 stmmac_suspend +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac-platform 0x376dd6a9 stmmac_pltfr_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac-platform 0xd9772607 stmmac_pltfr_probe +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac-platform 0xe52f34a2 stmmac_pltfr_pm_ops +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x1bde8e3b cpsw_ale_add_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x1e390614 cpsw_ale_set_allmulti +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x245876fc cpsw_ale_create +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x2c4d3254 cpsw_ale_del_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x4294a50c cpsw_ale_control_set +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x47b2aed5 cpsw_ale_control_get +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x57c50b15 cpsw_ale_stop +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x7f63dc2f cpsw_ale_flush_multicast +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x8f77ddcf cpsw_ale_add_ucast +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x958876f1 cpsw_ale_del_mcast +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0xa6e6e339 cpsw_ale_dump +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0xa8664c3e cpsw_ale_del_ucast +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0xb43018f2 cpsw_ale_destroy +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0xcf8569ee cpsw_ale_add_mcast +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0xefab5322 cpsw_ale_start +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x2768ee37 macvlan_dellink +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x27eb4df8 macvlan_link_register +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x4f86670b macvlan_common_setup +EXPORT_SYMBOL_GPL drivers/net/macvlan 0xd7401dee macvlan_common_newlink +EXPORT_SYMBOL_GPL drivers/net/macvtap 0x323a1b6a macvtap_get_socket +EXPORT_SYMBOL_GPL drivers/net/phy/mdio-mux 0x4a52940c mdio_mux_init +EXPORT_SYMBOL_GPL drivers/net/phy/mdio-mux 0x6318757f mdio_mux_uninit +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0x12ea7f53 usbnet_cdc_bind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0x7a1213c9 usbnet_cdc_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0x8ef45a65 usbnet_cdc_status +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0xcc2b0a16 usbnet_generic_cdc_bind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x8809fae1 cdc_ncm_bind_common +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x969b9a8e cdc_ncm_tx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0xa37e0449 cdc_ncm_select_altsetting +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0xb61742a5 cdc_ncm_rx_verify_ndp16 +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0xb68dcd6d cdc_ncm_fill_tx_frame +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0xd2a5d707 cdc_ncm_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0xf04aa46a cdc_ncm_rx_verify_nth16 +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0xf57a4883 cdc_ncm_rx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x3ed30174 rndis_status +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x4647dcbc rndis_rx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x884531ee generic_rndis_bind +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x89f2edfd rndis_command +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x91bf025b rndis_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0xbf926910 rndis_tx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x000577d7 usbnet_tx_timeout +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x0173c279 usbnet_read_cmd_nopm +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x08724794 usbnet_set_msglevel +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x14c72546 usbnet_pause_rx +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x24af74fc usbnet_status_stop +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x287dee5e usbnet_get_ethernet_addr +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x2dbfa693 usbnet_status_start +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x38e14c52 usbnet_purge_paused_rxq +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x3cba7256 usbnet_defer_kevent +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x4a7c49cb usbnet_unlink_rx_urbs +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x51be004b usbnet_write_cmd_async +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x60afba45 usbnet_update_max_qlen +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x7a3e062e usbnet_start_xmit +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x7a9bcb54 usbnet_probe +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x8380177b usbnet_get_msglevel +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x84808605 usbnet_stop +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x89966f52 usbnet_resume +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x8b82bbfa usbnet_suspend +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x91bf5c3e usbnet_set_settings +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x9aa61035 usbnet_skb_return +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xa3bbeb07 usbnet_nway_reset +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xb2e5e855 usbnet_get_endpoints +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xb33b3962 usbnet_open +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xb63aa506 usbnet_get_link +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xbbcb5554 usbnet_write_cmd +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xbbf9caa3 usbnet_get_settings +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xc35da55a usbnet_disconnect +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xc680f72d usbnet_read_cmd +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xc8feaecc usbnet_get_drvinfo +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xdcd928ac usbnet_resume_rx +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xdee555d8 usbnet_change_mtu +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xff64d9f4 usbnet_write_cmd_nopm +EXPORT_SYMBOL_GPL drivers/net/vxlan 0x2424eef5 vxlan_sock_add +EXPORT_SYMBOL_GPL drivers/net/vxlan 0x8775a2ce vxlan_sock_release +EXPORT_SYMBOL_GPL drivers/net/vxlan 0xddf313a5 vxlan_xmit_skb +EXPORT_SYMBOL_GPL drivers/net/vxlan 0xfbb1297c vxlan_get_rx_port +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x3a997b13 i2400m_netdev_setup +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x41d985eb i2400m_rx +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x65dfb61b i2400m_init +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x6b90420a i2400m_setup +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x7a2bf38c i2400m_release +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x80035d91 i2400m_tx_msg_get +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x907e77aa i2400m_dev_reset_handle +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xa1d75755 i2400m_reset +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xa339f2ee i2400m_dev_bootstrap +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xb00b793c i2400m_bm_cmd_prepare +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xb7323581 i2400m_is_boot_barker +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xc8c34fb8 i2400m_post_reset +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xd890ac22 i2400m_pre_reset +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xe00ddc8b i2400m_tx +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xe993db2c i2400m_tx_msg_sent +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xf3a9bfc0 i2400m_cmd_enter_powersave +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xf73dd3d9 i2400m_error_recovery +EXPORT_SYMBOL_GPL drivers/net/wireless/cw1200/cw1200_core 0x2c3ac9e4 cw1200_can_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/cw1200/cw1200_core 0x646dea1e cw1200_core_release +EXPORT_SYMBOL_GPL drivers/net/wireless/cw1200/cw1200_core 0x860352d0 cw1200_irq_handler +EXPORT_SYMBOL_GPL drivers/net/wireless/cw1200/cw1200_core 0xc2ffa521 cw1200_core_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/ipw2x00/libipw 0xefebdf60 libipw_rx_any +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0x31ef39e8 il_dealloc_bcast_stations +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0x5da93309 _il_grab_nic_access +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0x67f73f45 il_mac_tx_last_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0x8eb51741 il_prep_station +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0xf2af401d il_remove_station +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x0d556623 iwl_abort_notification_waits +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x1291ef1b iwl_init_notification_wait +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x159b47ae __iwl_warn +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x16dccf6e iwl_poll_direct_bit +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x1ac36ff0 iwl_notification_wait_notify +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x22e6727a iwl_read_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x24d42a7a iwl_set_bits_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x2fee56c7 iwl_read_direct32 +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x35033c81 iwl_phy_db_free +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x3afa507e iwl_read_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x3d548dab iwl_remove_notification +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x3dd90599 __iwl_err +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x507bbbed iwl_set_bits_mask_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x51b657cd iwlwifi_mod_params +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x522a1971 iwl_poll_bit +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x544b6ced iwl_nvm_check_version +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x5c52e109 iwl_opmode_deregister +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x74a2ab3b iwl_write_direct32 +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x776221bf iwl_send_phy_db_data +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x7e4ddbfd iwl_parse_nvm_data +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x844ed4ac __iwl_dbg +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x8a18b858 iwl_clear_bits_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x8c5d5ab3 iwl_phy_db_set_section +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xaa6d08eb iwl_wait_notification +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xb8e3dcc7 __iwl_info +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xc67c31ed iwl_notification_wait_init +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xca26bbec iwl_force_nmi +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xcb127e5d iwl_parse_nvm_mcc_info +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xcca34326 iwl_opmode_register +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xcdc16729 iwl_parse_eeprom_data +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xedf1308c iwl_phy_db_init +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xf155c687 __iwl_crit +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xf1bffaaf iwl_write_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x21c71bba lbs_host_sleep_cfg +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x23ad66b3 lbs_start_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x32cb16d1 lbs_queue_event +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x3724597a __lbs_cmd +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x47d157cf lbs_cmd_copyback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x51166583 lbs_send_tx_feedback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x5fdf38b8 lbs_disablemesh +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x610ab5c0 lbs_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x742b9a2b lbs_process_rxed_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x86bed1c4 lbs_notify_command_response +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x8f6c073c lbs_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x949db1ab lbs_stop_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xa8b3b2c3 lbs_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xad34bf19 lbs_get_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xb432a40d lbs_get_firmware_async +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xbb1131c8 lbs_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xdd396037 lbs_host_to_card_done +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xf64277de lbs_debug +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x0836b53e lbtf_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x17978239 lbtf_cmd_copyback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x2eda7c92 lbtf_cmd_response_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x62c9eb6e __lbtf_cmd +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xc6b48906 lbtf_bcn_sent +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xc85e6899 lbtf_debug +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xdf49a346 lbtf_send_tx_feedback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xe64a5dfa lbtf_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xf60575f1 lbtf_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x03229705 mwifiex_add_virtual_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x0ad26b20 mwifiex_handle_rx_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x0cbf979e mwifiex_upload_device_dump +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x0f054bd8 mwifiex_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x31bd9748 mwifiex_alloc_dma_align_buf +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x34edbcd2 mwifiex_del_virtual_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x3d72c52e mwifiex_queue_main_work +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x4d0a80ea mwifiex_enable_hs +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x550b4ad5 mwifiex_write_data_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x8058d919 mwifiex_init_shutdown_fw +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x84c6a268 mwifiex_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x8d622117 mwifiex_cancel_hs +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xbd7c7847 mwifiex_drv_info_dump +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xc9d63513 mwifiex_deauthenticate_all +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xcde61c33 mwifiex_main_process +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xdd097ce4 mwifiex_disable_auto_ds +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xef6f3ef6 mwifiex_process_sleep_confirm_resp +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xf7facb25 mwifiex_process_hs_config +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x6d9b981e p54_init_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x747a6e0c p54_unregister_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x77fb74d1 p54_read_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x91e7f57d p54_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x9ae6290c p54_free_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xb3842f51 p54_free_skb +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xc34bec51 p54_parse_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xd69b6fd3 p54_parse_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xe5cf94f6 p54_register_common +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0x16a1a6f4 rsi_read_pkt +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0x7201b98a rsi_dbg +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0xa2e205b9 rsi_91x_init +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0xb339a337 rsi_mac80211_detach +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0xd97de3fe rsi_91x_deinit +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0xdb3ca0e5 rsi_zone_enabled +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x030fa4dc rt2800_conf_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x0750d5b7 rt2800_check_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x0756e283 rt2800_get_tsf +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x19f78def rt2800_rfkill_poll +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x1f138091 rt2800_efuse_detect +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x2f1d038c rt2800_config_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x311d1a8e rt2800_write_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x3332aff2 rt2800_disable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x33724e10 rt2800_wait_csr_ready +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x3667c9e6 rt2800_config_erp +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x3969712c rt2800_get_txwi_rxwi_size +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x3a2644c4 rt2800_txdone_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x3c44f804 rt2800_sta_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x53df0619 rt2800_enable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x561fcfd5 rt2800_process_rxwi +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x577047e2 rt2800_ampdu_action +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x8084e101 rt2800_write_tx_data +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x893364d6 rt2800_read_eeprom_efuse +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x8ac6876d rt2800_load_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x8b72f7ae rt2800_vco_calibration +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x93c53a84 rt2800_get_survey +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x9527a893 rt2800_clear_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x9b9bbb96 rt2800_reset_tuner +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x9dd8cbc5 rt2800_gain_calibration +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xa77b1d59 rt2800_mcu_request +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xae48ea84 rt2800_disable_wpdma +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xb3ad3a9b rt2800_config_shared_key +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xb49dffc5 rt2800_config_ant +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xc62e976f rt2800_config_filter +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xc9ca46f6 rt2800_probe_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xd086abf2 rt2800_config_pairwise_key +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xd8f61d6d rt2800_sta_add +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xdf0ffa45 rt2800_wait_wpdma_ready +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xe653ec48 rt2800_link_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xe6b488c5 rt2800_get_key_seq +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xf560fc69 rt2800_config +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xf7809979 rt2800_set_rts_threshold +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xff2ae2c5 rt2800_link_tuner +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x0fad1430 rt2800mmio_pretbtt_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x2412eccb rt2800mmio_queue_init +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x2505789d rt2800mmio_tbtt_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x3e452f8e rt2800mmio_start_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x5fa4db64 rt2800mmio_interrupt +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x7bc4ad7d rt2800mmio_get_entry_state +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x7fbf7962 rt2800mmio_stop_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x92c0bcd1 rt2800mmio_rxdone_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xac542ee6 rt2800mmio_init_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xb7000da0 rt2800mmio_toggle_irq +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xbb203092 rt2800mmio_get_txwi +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xc6005434 rt2800mmio_write_tx_desc +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xc675ba62 rt2800mmio_fill_rxdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xc6a1455e rt2800mmio_autowake_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xd0a5e267 rt2800mmio_init_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xdc177892 rt2800mmio_kick_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xe28f94c7 rt2800mmio_txstatus_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xf1107a82 rt2800mmio_enable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xfed4f9ba rt2800mmio_clear_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x07f59aeb rt2x00queue_map_txskb +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x094305f5 rt2x00mac_start +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x1ac7ba9d rt2x00mac_sta_add +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x215a56a2 rt2x00lib_beacondone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x248ed740 rt2x00mac_tx_frames_pending +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x277a6f20 rt2x00mac_flush +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x2c4a47fb rt2x00mac_bss_info_changed +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x3b98bd34 rt2x00lib_get_bssidx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x407e06b9 rt2x00mac_get_antenna +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x490a62ad rt2x00lib_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x49a461c7 rt2x00mac_sta_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x4c2a928d rt2x00mac_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x52cdcc24 rt2x00mac_sw_scan_start +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x544b642e rt2x00mac_get_ringparam +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x55f5d1ab rt2x00mac_configure_filter +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x6087a953 rt2x00mac_set_tim +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x6197707d rt2x00mac_rfkill_poll +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x61f0d9c0 rt2x00queue_start_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x640615c7 rt2x00queue_get_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x67b93a97 rt2x00lib_probe_dev +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x766107b0 rt2x00lib_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x7691af41 rt2x00lib_remove_dev +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x7ac67002 rt2x00mac_get_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x7c602f63 rt2x00mac_sw_scan_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x7fea4070 rt2x00lib_rxdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x84c1c2fd rt2x00queue_unpause_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xa07c8e0b rt2x00mac_remove_interface +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xaa1e5685 rt2x00mac_set_key +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xae6e418b rt2x00queue_start_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xb0bb4012 rt2x00mac_stop +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xb1e9ca15 rt2x00lib_pretbtt +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xb278f3e2 rt2x00lib_dmadone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xb4927844 rt2x00queue_flush_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xb66f8b5a rt2x00lib_txdone_noinfo +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xb9e580c4 rt2x00mac_config +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xba3ea088 rt2x00lib_dmastart +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xbdd34f4c rt2x00queue_unmap_skb +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xc8b58f58 rt2x00mac_set_antenna +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xc91d3aa1 rt2x00queue_stop_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xcee839dd rt2x00mac_add_interface +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xcfc13f5b rt2x00queue_stop_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xdffcc2d1 rt2x00queue_for_each_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xe56b4a7b rt2x00lib_txdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xed424527 rt2x00queue_pause_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xf090d756 rt2x00queue_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xfae34b8e rt2x00mac_conf_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0x21f5f566 rt2x00mmio_rxdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0xa6f1574e rt2x00mmio_initialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0xaa7b2f2d rt2x00mmio_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0xcbbdfc38 rt2x00mmio_regbusy_read +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0xd846959c rt2x00mmio_uninitialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0x03f7a940 rt2x00pci_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0x1531d97c rt2x00pci_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0x1bac0f8a rt2x00pci_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0xf730330c rt2x00pci_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x146b1379 rt2x00usb_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x2b8fdb8d rt2x00usb_uninitialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x39dc5403 rt2x00usb_watchdog +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x39f5743e rt2x00usb_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x46828866 rt2x00usb_disconnect +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x5b30206d rt2x00usb_regbusy_read +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x5d513c19 rt2x00usb_vendor_request_buff +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x6c4f479b rt2x00usb_vendor_req_buff_lock +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x96b3a6de rt2x00usb_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x9ac463e5 rt2x00usb_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xae3b52c7 rt2x00usb_vendor_request +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xb11c00b5 rt2x00usb_initialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xc564714f rt2x00usb_register_read_async +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xc85c9408 rt2x00usb_disable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xdf451eb0 rt2x00usb_kick_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xfdb778a5 rt2x00usb_clear_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x71b4f941 dm_savepowerindex +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x9b4e3e61 rtl92c_set_p2p_ps_offload_cmd +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xa8e08912 dm_restorepowerindex +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xe40c7df2 dm_writepowerindex +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x0689539e rtl8723_write_fw +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x23dbbdb4 rtl8723_dm_init_edca_turbo +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x268b3bc0 rtl8723_phy_save_mac_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x32e94191 rtl8723_phy_pi_mode_switch +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x3fb3c1b5 rtl8723_dm_init_dynamic_txpower +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x4fbd99a8 rtl8723_phy_reload_adda_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x51d8e4cd rtl8723_phy_set_bb_reg +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x60e1c53f rtl8723_phy_rf_serial_read +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x668094b6 rtl8723_download_fw +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x6cef6d44 rtl8723_phy_txpwr_idx_to_dbm +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x6fee3a6c rtl8723_phy_set_sw_chnl_cmdarray +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x74d3fa7c rtl8723_dm_init_dynamic_bb_powersaving +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x7b9322a3 rtl8723be_firmware_selfreset +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x92025e3e rtl8723_phy_mac_setting_calibration +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x99dbb65a rtl8723_phy_path_a_fill_iqk_matrix +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xa5cbdcb0 rtl8723_fw_page_write +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xacedd14f rtl8723_fw_free_to_go +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xaf4d6d94 rtl8723_phy_calculate_bit_shift +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xb057f7fa rtl8723_phy_path_adda_on +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xb4779680 rtl8723_cmd_send_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xb5579c90 rtl8723_save_adda_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xb66d7d79 rtl8723_phy_reload_mac_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xb6f5574b rtl8723_phy_rf_serial_write +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xbf512d24 rtl8723_phy_query_bb_reg +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xd56821de rtl8723_fw_block_write +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xe0b5412c rtl8723_enable_fw_download +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xe8549dfb rtl8723ae_firmware_selfreset +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xf9607e55 rtl8723_phy_init_bb_rf_reg_def +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xfb903125 rtl8723_phy_path_a_standby +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x0d0b6636 rtl_global_var +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x142b9eb4 read_efuse_byte +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x1d8dfc49 rtl_action_proc +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x241dedc1 rtl_tid_to_ac +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x2921a4d4 rtl_btc_status_false +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x422385ba rtl_deinit_core +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x4e1043cd rtl_swlps_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x561bc4c3 rtl_init_core +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x64e1831e rtl_is_special_data +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x671d6f08 rtl_dbgp_flag_init +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x6b4de810 rtl_lps_change_work_callback +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x7138a359 rtl_tx_mgmt_proc +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x7a8ee04d rtl_init_rx_config +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x89fe0378 rtl_recognize_peer +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x9b606a01 rtl_ips_nic_on +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xa75cc8fd rtl_p2p_info +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xae613cfd rtl_beacon_statistic +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xbf6ab513 rtl_ops +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xedad5e3c rtl_deinit_rfkill +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xeecc5a5e rtl_deinit_deferred_work +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xf7c941e1 rtl_attribute_group +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0x7e85b406 wl1251_alloc_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0xc5aad0ff wl1251_free_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0xc5f98807 wl1251_init_ieee80211 +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x1fc48894 wlcore_event_dummy_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x29f388f8 wl1271_acx_set_ht_capabilities +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x2bd18617 wl1271_ps_elp_wakeup +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x32dec697 wl1271_ps_elp_sleep +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x38434f34 wl1271_acx_init_mem_config +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x4338cc67 wlcore_scan_sched_scan_ssid_list +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x43ef9e0e wlcore_event_roc_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x49b1a1ac wlcore_event_ba_rx_constraint +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x4bfb90c6 wlcore_boot_upload_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x53dff67d wl12xx_debug_level +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x55a872bb wlcore_event_max_tx_failure +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x5e52e490 wlcore_event_soft_gemini_sense +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x64a3efed wlcore_set_scan_chan_params +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x6eb91973 wlcore_event_channel_switch +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x73966083 wlcore_boot_run_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x77092dcc wlcore_get_native_channel_type +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x7b097c30 wlcore_alloc_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x7b5de4af wl1271_cmd_send +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x7f6d481e wlcore_event_sched_scan_completed +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x8885824b wlcore_event_beacon_loss +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x89981201 wlcore_event_rssi_trigger +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x8a4b3ae6 wlcore_disable_interrupts +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x911ea1a8 wlcore_set_key +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x937bf46d wlcore_translate_addr +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x95815974 wlcore_free_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x9598ab11 wlcore_cmd_wait_for_event_or_timeout +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x9d1d8926 wl1271_tx_min_rate_get +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xa2c3622d wlcore_event_inactive_sta +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xaa254037 wlcore_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xabc9de0b wl12xx_acx_mem_cfg +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xb7d8d7d6 wlcore_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xb805a0fa wl1271_format_buffer +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xbeb4b41b wlcore_boot_upload_nvs +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xc274c0c0 wlcore_enable_interrupts +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xc5948c79 wlcore_scan_sched_scan_results +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xd1772932 wl1271_debugfs_update_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xd2867153 wlcore_disable_interrupts_nosync +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xd7d23024 wl1271_cmd_data_path +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xd9fd0be1 wl1271_acx_sleep_auth +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xea9e474b wl1271_cmd_test +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xec92d168 wl1271_cmd_configure +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xece9ad8d wl1271_tx_flush +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xf329d014 wlcore_synchronize_interrupts +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xf69b0f3d wlcore_set_partition +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xf7518e9f wl12xx_cmd_build_probe_req +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xf9fe1eab wl1271_acx_pm_config +EXPORT_SYMBOL_GPL drivers/nfc/nfcmrvl/nfcmrvl 0x01a7be50 nfcmrvl_parse_dt +EXPORT_SYMBOL_GPL drivers/nfc/nfcmrvl/nfcmrvl 0x65b0d89b nfcmrvl_nci_register_dev +EXPORT_SYMBOL_GPL drivers/nfc/nfcmrvl/nfcmrvl 0xbce3a6e9 nfcmrvl_nci_unregister_dev +EXPORT_SYMBOL_GPL drivers/nfc/nfcmrvl/nfcmrvl 0xd93f55a9 nfcmrvl_nci_recv_frame +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x20e27cd6 st_nci_disable_se +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x2197a30a st_nci_remove +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x2cb74226 st_nci_probe +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x4bbe2291 st_nci_hci_load_session +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x80e40c50 st_nci_hci_event_received +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0xa4ad9c4d st_nci_discover_se +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0xbdff4b89 st_nci_enable_se +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0xcc9f3f1c st_nci_hci_cmd_received +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 0x60df6c7b ntb_transport_register_client +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x82e6c13d ntb_transport_qp_num +EXPORT_SYMBOL_GPL drivers/ntb/ntb_transport 0x91dca11e ntb_transport_unregister_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 0xe7f80444 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/pci/hotplug/rpaphp 0x01cc7086 rpaphp_slot_head +EXPORT_SYMBOL_GPL drivers/pci/hotplug/rpaphp 0x59297866 rpaphp_deregister_slot +EXPORT_SYMBOL_GPL drivers/pci/hotplug/rpaphp 0x7fe8983d rpaphp_get_drc_props +EXPORT_SYMBOL_GPL drivers/pci/hotplug/rpaphp 0xe0092a5f rpaphp_add_slot +EXPORT_SYMBOL_GPL drivers/power/pcf50633-charger 0x565609ed pcf50633_mbc_get_status +EXPORT_SYMBOL_GPL drivers/power/pcf50633-charger 0x59ebcf9b pcf50633_mbc_get_usb_online_status +EXPORT_SYMBOL_GPL drivers/power/pcf50633-charger 0xc2dfcfa1 pcf50633_mbc_usb_curlim_set +EXPORT_SYMBOL_GPL drivers/ps3/ps3-lpm 0x003998ab ps3_write_ctr +EXPORT_SYMBOL_GPL drivers/ps3/ps3-lpm 0x0bdf50c4 ps3_disable_pm_interrupts +EXPORT_SYMBOL_GPL drivers/ps3/ps3-lpm 0x0e622920 ps3_write_pm07_control +EXPORT_SYMBOL_GPL drivers/ps3/ps3-lpm 0x181e55ab ps3_read_phys_ctr +EXPORT_SYMBOL_GPL drivers/ps3/ps3-lpm 0x1bcb88c1 ps3_write_pm +EXPORT_SYMBOL_GPL drivers/ps3/ps3-lpm 0x2abf1471 ps3_get_hw_thread_id +EXPORT_SYMBOL_GPL drivers/ps3/ps3-lpm 0x2b339635 ps3_disable_pm +EXPORT_SYMBOL_GPL drivers/ps3/ps3-lpm 0x3c71a6b2 ps3_set_ctr_size +EXPORT_SYMBOL_GPL drivers/ps3/ps3-lpm 0x4a24996f ps3_lpm_copy_tb_to_user +EXPORT_SYMBOL_GPL drivers/ps3/ps3-lpm 0x50488f64 ps3_lpm_close +EXPORT_SYMBOL_GPL drivers/ps3/ps3-lpm 0x58e642c1 ps3_lpm_copy_tb +EXPORT_SYMBOL_GPL drivers/ps3/ps3-lpm 0x59c54782 ps3_set_bookmark +EXPORT_SYMBOL_GPL drivers/ps3/ps3-lpm 0x5eca6711 ps3_get_ctr_size +EXPORT_SYMBOL_GPL drivers/ps3/ps3-lpm 0x60e3f0d7 ps3_read_ctr +EXPORT_SYMBOL_GPL drivers/ps3/ps3-lpm 0x6702a28c ps3_get_and_clear_pm_interrupts +EXPORT_SYMBOL_GPL drivers/ps3/ps3-lpm 0x69010c19 ps3_set_signal +EXPORT_SYMBOL_GPL drivers/ps3/ps3-lpm 0x70177200 ps3_write_phys_ctr +EXPORT_SYMBOL_GPL drivers/ps3/ps3-lpm 0xa76ee01d ps3_read_pm07_control +EXPORT_SYMBOL_GPL drivers/ps3/ps3-lpm 0xaa190bc1 ps3_read_pm +EXPORT_SYMBOL_GPL drivers/ps3/ps3-lpm 0xbb72a01c ps3_enable_pm_interrupts +EXPORT_SYMBOL_GPL drivers/ps3/ps3-lpm 0xce72c9c0 ps3_lpm_open +EXPORT_SYMBOL_GPL drivers/ps3/ps3-lpm 0xdddfc980 ps3_set_pm_bookmark +EXPORT_SYMBOL_GPL drivers/ps3/ps3-lpm 0xfae0ab68 ps3_enable_pm +EXPORT_SYMBOL_GPL drivers/ps3/ps3stor_lib 0x596ab37f ps3stor_teardown +EXPORT_SYMBOL_GPL drivers/ps3/ps3stor_lib 0x9431baf5 ps3stor_setup +EXPORT_SYMBOL_GPL drivers/ps3/ps3stor_lib 0xc1cd7d30 ps3stor_send_command +EXPORT_SYMBOL_GPL drivers/ps3/ps3stor_lib 0xc3fa9131 ps3stor_read_write_sectors +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x2af3f499 mc13xxx_parse_regulators_dt +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x611211e9 mc13xxx_regulator_ops +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x93da8c9a mc13xxx_fixed_regulator_ops +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0xa9ac22a9 mc13xxx_fixed_regulator_set_voltage +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0xb534a931 mc13xxx_get_num_regulators_dt +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x723e7c1f wm8350_register_regulator +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x811f11f2 wm8350_register_led +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x88844a86 wm8350_dcdc_set_slot +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0xc7f8ee30 wm8350_isink_set_flash +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0xe4e85b49 wm8350_ldo_set_slot +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0xef142ff1 wm8350_dcdc25_set_mode +EXPORT_SYMBOL_GPL drivers/regulator/wm8400-regulator 0x6324b049 wm8400_register_regulator +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x02facfb8 cxgbi_get_host_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x033e6206 cxgbi_get_conn_stats +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x0d0793a8 cxgbi_ep_disconnect +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x0efad196 cxgbi_device_register +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x18e3e772 cxgbi_sock_closed +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x2c7848ca cxgbi_conn_alloc_pdu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x3106526f cxgbi_create_conn +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x34608cda cxgbi_sock_fail_act_open +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x3a5c4389 cxgbi_ddp_page_size_factor +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x3f462048 cxgbi_ddp_ppod_set +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x41f7d0d8 cxgbi_ep_poll +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x42af123d cxgbi_sock_check_wr_invariants +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x436778d1 cxgbi_sock_rcv_wr_ack +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x4421d7d7 cxgbi_conn_xmit_pdu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x46b29840 cxgbi_sock_rcv_peer_close +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x4c2359a7 cxgbi_sock_rcv_close_conn_rpl +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x4ca8fd1e cxgbi_iscsi_init +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x5b662965 cxgbi_set_host_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x5dbb0f5f cxgbi_ep_connect +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x6627ed8d cxgbi_ddp_cleanup +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x6cfa3c0a cxgbi_conn_tx_open +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x719b06d0 cxgbi_sock_free_cpl_skbs +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x78116a99 cxgbi_cleanup_task +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x7e876a53 cxgbi_conn_init_pdu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x7fdb6004 cxgbi_device_unregister_all +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x80aa8835 cxgbi_sock_established +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x80edfa23 cxgbi_get_ep_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x8c2ba369 cxgbi_ddp_ppod_clear +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x94d275f1 cxgbi_sock_rcv_abort_rpl +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x9a0fda49 cxgbi_parse_pdu_itt +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xa0b52806 cxgbi_conn_pdu_ready +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xa4fbaa3d cxgbi_iscsi_cleanup +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xb0b9ddb9 cxgbi_sock_skb_entail +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xb27fc744 cxgbi_device_portmap_create +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xb4da3cbe cxgbi_create_session +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xb522b04c cxgbi_ddp_init +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xb6ac1aa9 cxgbi_sock_act_open_req_arp_failure +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xb71e177f cxgbi_bind_conn +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xbd302009 cxgbi_destroy_session +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xbffd2881 cxgbi_device_portmap_cleanup +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xc270546a cxgbi_set_conn_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xcb07e500 cxgbi_device_find_by_netdev +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xcee37079 cxgbi_sock_purge_wr_queue +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xd3a545e0 cxgbi_device_find_by_netdev_rcu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xd54f6595 cxgbi_device_find_by_lldev +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xd7905b9e cxgbi_hbas_add +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xe2df3fa7 cxgbi_hbas_remove +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xef346615 cxgbi_attr_is_visible +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xf7ea2287 cxgbi_device_unregister +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xfafb2295 cxgbi_sock_select_mss +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x24cde056 scsi_dh_attach +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x4f5a9d61 scsi_dh_detach +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x593a36c2 scsi_dh_handler_exist +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x7ccc52ca scsi_unregister_device_handler +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0xb8e94f46 scsi_dh_activate +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0xcfbe328c scsi_dh_attached_handler_name +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0xe53fd15e scsi_dh_set_params +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0xe8771b5e scsi_register_device_handler +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x0fb51275 fcoe_queue_timer +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x259cffb0 fcoe_get_lesb +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x2e483c6f fcoe_fcf_device_delete +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x374c1e1c fcoe_wwn_from_mac +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x3ebb4071 fcoe_get_paged_crc_eof +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x46541ef4 fcoe_ctlr_device_delete +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x479c2ba1 fcoe_fcf_device_add +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x4f6046fc fcoe_ctlr_get_lesb +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x58141da3 fcoe_libfc_config +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x599cb62c fcoe_start_io +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x5f4384c1 fcoe_check_wait_queue +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x6539123a fcoe_validate_vport_create +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x6e7d41fc fcoe_clean_pending_queue +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x8337721c fcoe_link_speed_update +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x84b3d915 fcoe_wwn_to_str +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x9a090ba2 __fcoe_get_lesb +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xaeeab8ff fcoe_ctlr_device_add +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xdd4920d1 fcoe_fc_crc +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xf2d1b437 fcoe_get_wwn +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x02486615 iscsi_boot_create_target +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x032f525e iscsi_boot_destroy_kset +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x2af277c3 iscsi_boot_create_ethernet +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x618b405f iscsi_boot_create_kset +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x8d0af4be iscsi_boot_create_host_kset +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0xb7bc8575 iscsi_boot_create_initiator +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x07076047 iscsi_eh_target_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x0d11db88 iscsi_host_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x12b2ad06 iscsi_switch_str_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x17c4152c iscsi_conn_stop +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x3bef2f73 iscsi_pool_init +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x3f2dc3e8 iscsi_session_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x408096b9 iscsi_eh_recover_target +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x4e60f83a iscsi_complete_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x5ed9ce8a iscsi_prep_data_out_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x6594f0f0 iscsi_conn_start +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x67741198 iscsi_session_recovery_timedout +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x69145507 iscsi_conn_failure +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x69dc9096 iscsi_host_set_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x6c0887b7 iscsi_eh_abort +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x800d11be iscsi_host_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x82afbffb iscsi_complete_scsi_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x841c508f iscsi_set_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x8b111bcf iscsi_host_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x8d303b1b iscsi_pool_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x8f26f40f iscsi_host_remove +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x8fafe4b8 iscsi_suspend_tx +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x9164caca iscsi_conn_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x9bf2eaae iscsi_requeue_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x9f490086 iscsi_session_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xa3415868 iscsi_target_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xa6f00025 iscsi_itt_to_ctask +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xa7af20fd __iscsi_get_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xb3ebc36a iscsi_eh_device_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xbf8c9136 iscsi_conn_get_addr_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xd1c585d9 iscsi_session_failure +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xd338d8ed iscsi_verify_itt +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xd64549fb iscsi_put_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xda8714f2 iscsi_queuecommand +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xe026855a iscsi_suspend_queue +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xe355852a iscsi_eh_session_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xe3894b4f __iscsi_put_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xe5f5bfb2 iscsi_conn_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xe6bfcaee iscsi_update_cmdsn +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xe86821c7 iscsi_conn_bind +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xe9aa8e6a iscsi_conn_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xeb4c0c1b iscsi_itt_to_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xf08e8d3b iscsi_conn_queue_work +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xf7134057 iscsi_session_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xf8235374 iscsi_host_add +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xf87528b6 iscsi_conn_send_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xfe24c357 __iscsi_complete_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x0c082d0a iscsi_segment_seek_sg +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x128dd9bd iscsi_tcp_r2tpool_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x3461589b iscsi_tcp_task_xmit +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x6e223039 iscsi_tcp_recv_segment_is_hdr +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x75ff81b3 iscsi_tcp_conn_get_stats +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x76869321 iscsi_tcp_recv_skb +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x7befeaa3 iscsi_tcp_segment_unmap +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x7c23eaf6 iscsi_tcp_task_init +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x8b866a70 iscsi_tcp_hdr_recv_prep +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x956e7627 iscsi_tcp_cleanup_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xa027da07 iscsi_tcp_dgst_header +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xa39da5d1 iscsi_tcp_conn_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xa5b998f7 iscsi_segment_init_linear +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xa901e0c3 iscsi_tcp_segment_done +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xc1dd60c6 iscsi_tcp_conn_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xc84c830e iscsi_tcp_set_max_r2t +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xf1086595 iscsi_tcp_r2tpool_free +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x02e4c9af sas_bios_param +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x2766283b sas_target_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x2ccb3e15 sas_slave_configure +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x2d015655 sas_register_ha +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x2f7bdc2b sas_ssp_task_response +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x362ef8ac sas_change_queue_depth +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x3dcaf3c9 sas_unregister_ha +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x5aa4c3de sas_eh_device_reset_handler +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x6f4b47b8 sas_queuecommand +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x7b644797 sas_eh_abort_handler +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x81f650e8 sas_alloc_slow_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x8e5fbc1e sas_alloc_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x922dc470 sas_task_abort +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xa7192c27 sas_domain_attach_transport +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xa784ccd0 sas_eh_bus_reset_handler +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xb76327f0 sas_drain_work +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xbca51856 sas_free_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xc3897455 sas_ata_schedule_reset +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xc3b586c6 sas_get_local_phy +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xcaddbe53 sas_target_destroy +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xcf4cba81 sas_domain_release_transport +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xd5767f61 sas_request_addr +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xda9f1fb2 sas_phy_reset +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xf4d2a838 sas_ioctl +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x01333116 iscsi_add_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x06df77ea iscsi_remove_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x0c10417d iscsi_host_for_each_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x0d9eb918 iscsi_unregister_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x1547dc8e iscsi_create_flashnode_sess +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x1591ae8b iscsi_alloc_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x18552d8a iscsi_find_flashnode_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x28d8800c iscsi_create_flashnode_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x35fa1a78 iscsi_create_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x3ba7cbe3 iscsi_destroy_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x3ed2c495 iscsi_ping_comp_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x3f6f2a63 iscsi_destroy_flashnode_sess +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x48d7208b iscsi_get_port_state_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x4da3eac5 iscsi_destroy_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x50ba7873 iscsi_create_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x5d2f521b iscsi_register_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x5ec4d1a5 iscsi_unblock_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x629d7dbd iscsi_create_iface +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x699fe53e iscsi_get_discovery_parent_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x71096596 iscsi_create_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x7e45bcb8 iscsi_conn_error_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x83125f8c iscsi_free_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x8493d9cf iscsi_is_flashnode_conn_dev +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x84a005f1 iscsi_get_router_state_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x8a75bafe iscsi_find_flashnode_sess +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x8c945b8d iscsi_conn_login_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x8da25786 iscsi_is_session_online +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xb03393ef iscsi_destroy_all_flashnode +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xb0437a34 iscsi_flashnode_bus_match +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xb2fb4a9f iscsi_scan_finished +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xb4bd9c2e iscsi_session_chkready +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xbc071179 iscsi_get_ipaddress_state_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xbcf7d9d3 iscsi_destroy_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xbd93c0be iscsi_is_session_dev +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xbdbadf15 iscsi_post_host_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xbf275787 iscsi_recv_pdu +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xc7429fca iscsi_destroy_iface +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xd2e01132 iscsi_offload_mesg +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xdb131f30 iscsi_block_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xdc64ed04 iscsi_block_scsi_eh +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xe60341c3 iscsi_get_port_speed_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xf11194d8 iscsi_lookup_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xf1c51e91 iscsi_session_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0x35d3ddfa sas_enable_tlr +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0x748d4fd4 sas_is_tlr_enabled +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0x8b9e6016 sas_tlr_supported +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0xd3f3d61b sas_disable_tlr +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_spi 0x0ef06974 spi_populate_ppr_msg +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_spi 0x2b5c9d8e 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/ufs/ufshcd 0x2b15478d ufshcd_init +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0x43ad41a6 ufshcd_remove +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0x5bd38289 ufshcd_dme_get_attr +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0xd18a970f ufshcd_dme_set_attr +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x5c9d6de6 spi_bitbang_cleanup +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x7002ff7b spi_bitbang_setup_transfer +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x8c62cc2e spi_bitbang_stop +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x9ff4633c spi_bitbang_start +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0xaa139df4 spi_bitbang_setup +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0x359f725f dw_spi_suspend_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0x686bfee4 dw_spi_remove_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0xa5f8dce9 dw_spi_resume_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0xeaf4d4e0 dw_spi_add_host +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x034305be spmi_driver_register +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x06268841 spmi_ext_register_writel +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x0bb91d46 spmi_ext_register_write +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x0c846ee4 spmi_ext_register_read +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x26fb88f4 spmi_device_alloc +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x3c02f14b spmi_register_read +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x41590b05 spmi_command_shutdown +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x41d207c7 spmi_register_zero_write +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x42d463cd spmi_command_wakeup +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x5d9fbdbb spmi_command_reset +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x698aa9d6 spmi_command_sleep +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x813fc5ed spmi_device_remove +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xaea58809 spmi_controller_alloc +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xaefc0dea spmi_device_add +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xaf81893f spmi_register_write +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xb373d201 spmi_controller_remove +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xbad63801 spmi_controller_add +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xd9d2ca08 spmi_ext_register_readl +EXPORT_SYMBOL_GPL drivers/ssb/ssb 0x94ad7c4b ssb_pmu_spuravoid_pllupdate +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x00d5eaec comedi_bytes_per_scan +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x06c089b1 comedi_set_spriv_auto_free +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x0cca9c89 comedi_buf_read_samples +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x0cd330f4 range_unknown +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x0f3e6e97 comedi_driver_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x130d7ede comedi_alloc_devpriv +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x19539138 comedi_load_firmware +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x21102f87 range_0_32mA +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x22bfd8ff comedi_nsamples_left +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x2f0ad9d3 range_bipolar5 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x3330dfd0 comedi_auto_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x3e9988af comedi_dio_insn_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x4236eaaf range_4_20mA +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x49c40d70 comedi_dev_get_from_minor +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x4acc96ee comedi_alloc_subdevices +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x4fe634f3 range_bipolar2_5 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x58416ac8 comedi_buf_read_alloc +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x6380a0c3 comedi_buf_read_n_available +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x6a8722c9 comedi_buf_write_alloc +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x6e090504 comedi_event +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x809fb7cc comedi_auto_unconfig +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x8113872c range_unipolar10 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x8630d29f comedi_set_hw_dev +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x9276968b comedi_alloc_spriv +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x94d588b0 comedi_nscans_left +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x96667942 __comedi_request_region +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xa66ddd32 comedi_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xb0c3b0ab comedi_buf_write_samples +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xb2766be8 comedi_handle_events +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xb679cebc range_0_20mA +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xb8dd8b8d comedi_is_subdevice_running +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xbac12d34 comedi_inc_scan_progress +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 0xbe47cb75 comedi_readback_insn_read +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xc26c344c comedi_check_chanlist +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xc5d956b4 comedi_dev_put +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xca0138b1 comedi_buf_write_free +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xd425da9d comedi_buf_read_free +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xd90cad59 comedi_dio_update_state +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xdb2044b2 range_unipolar5 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xdf9e6f3d comedi_alloc_subdev_readback +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xe0c44f80 comedi_legacy_detach +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xeb586e9c comedi_request_region +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xf1867913 comedi_timeout +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0x29a71d7d comedi_pci_auto_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0x5c3f2a36 comedi_pci_driver_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0x6363e26e comedi_pci_auto_unconfig +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0x8687254c comedi_pci_detach +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0xb6669f6c comedi_pci_disable +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0xbc3f8116 comedi_pci_enable +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0xe8127b8c comedi_pci_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0xfe44dcfa comedi_to_pci_dev +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pcmcia 0x112ed91d comedi_pcmcia_enable +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pcmcia 0x53aeb141 comedi_pcmcia_driver_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pcmcia 0x71949540 comedi_pcmcia_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pcmcia 0x97d4e72d comedi_pcmcia_auto_unconfig +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pcmcia 0x9a0a9ba9 comedi_pcmcia_disable +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pcmcia 0xb213b5e4 comedi_to_pcmcia_dev +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pcmcia 0xc4e4d740 comedi_pcmcia_auto_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0x24cc6668 comedi_to_usb_dev +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0x6db0d737 comedi_usb_auto_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0x93efa4f3 comedi_usb_driver_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0xad9d3347 comedi_usb_auto_unconfig +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0xcd23cc1b comedi_usb_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0xe56a08f6 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 0xe1b7cd4e addi_watchdog_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/amplc_dio200_common 0x572dacdd amplc_dio200_common_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/amplc_dio200_common 0x7194069c amplc_dio200_set_enhance +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/amplc_pc236_common 0x3feb908d amplc_pc236_common_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x0111de1d comedi_8254_update_divisors +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x0c3b9bcb comedi_8254_mm_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x286cfa18 comedi_8254_set_busy +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x2df1834f comedi_8254_read +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x31583b9e comedi_8254_load +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x4f708114 comedi_8254_cascade_ns_to_timer +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x5b3eaee3 comedi_8254_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x642a7477 comedi_8254_status +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x87dc9d78 comedi_8254_set_mode +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x921c8267 comedi_8254_subdevice_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0xc0469d4b comedi_8254_pacer_enable +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0xc495a564 comedi_8254_write +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0xda7cdc49 comedi_8254_ns_to_timer +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8255 0x6d16e3ba subdev_8255_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8255 0xaca381d5 subdev_8255_mm_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8255 0xc7a7d208 subdev_8255_regbase +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_isadma 0x0d68fcd9 comedi_isadma_poll +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 0x56501f21 comedi_isadma_alloc +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_isadma 0x6815a033 comedi_isadma_free +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_isadma 0xa3d01a85 comedi_isadma_program +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_isadma 0xa7ebb8a3 comedi_isadma_set_mode +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/das08 0x84f01a19 das08_common_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x0c55ea8f mite_free_ring +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x104a1535 mite_buf_change +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x11f7d64f mite_detach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x2aed3b8b mite_bytes_written_to_memory_lb +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x3053bcbe mite_sync_output_dma +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x346f3a59 mite_dma_disarm +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x3aaceb7b mite_bytes_read_from_memory_lb +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x42f61358 mite_bytes_read_from_memory_ub +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x52b7c3a8 mite_bytes_written_to_memory_ub +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x61e74d32 mite_sync_input_dma +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x6705d89f mite_alloc_ring +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x6b3cfc7c mite_dma_tcr +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xa12c2707 mite_alloc +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xa4a9f758 mite_setup2 +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xa7da14be mite_prep_dma +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xcf56991a mite_bytes_in_transit +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xd60f86f9 mite_request_channel_in_range +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xda1dd6c5 mite_get_status +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xdba3fcea mite_release_channel +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xdfb00dd8 mite_done +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xfe6dd0b8 mite_dma_arm +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_common 0xc8453125 labpc_common_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_common 0xf5021ba9 labpc_common_detach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_isadma 0x737eb3b4 labpc_drain_dma +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_isadma 0xb14117c9 labpc_handle_dma_status +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_isadma 0xc66aca11 labpc_free_dma_chan +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_isadma 0xc93d9fa2 labpc_init_dma_chan +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_isadma 0xf18d998b labpc_setup_dma +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x05beb0c3 ni_tio_insn_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x1c20dda2 ni_tio_set_gate_src +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x1ebced52 ni_gpct_device_construct +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x6c0f10fd ni_tio_insn_read +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0xc099d2a3 ni_tio_init_counter +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0xcaa66139 ni_gpct_device_destroy +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0xd7f89611 ni_tio_arm +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0xe7dcf2db ni_tio_insn_write +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0x050ab310 ni_tio_set_mite_channel +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0x27946034 ni_tio_cmd +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0x4e3a069f ni_tio_acknowledge +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0xaf3e1e7e ni_tio_cmdtest +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0xbf720820 ni_tio_handle_interrupt +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0xcec21af9 ni_tio_cancel +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x317ab3d5 comedi_dio_get_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x32edf719 comedi_find_subdevice_by_type +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x40cf7525 comedi_dio_bitfield2 +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x608d0ac9 comedi_get_n_channels +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0xbf5c1294 comedi_open +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0xd57137e0 comedi_dio_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0xd741236d comedi_close +EXPORT_SYMBOL_GPL drivers/staging/iio/addac/adt7316 0xeb79a87e adt7316_pm_ops +EXPORT_SYMBOL_GPL drivers/staging/lustre/lustre/obdclass/obdclass 0x2b3f2945 lustre_sysfs_ops +EXPORT_SYMBOL_GPL drivers/staging/lustre/lustre/obdclass/obdclass 0x6299d5d6 debugfs_lustre_root +EXPORT_SYMBOL_GPL drivers/staging/lustre/lustre/obdclass/obdclass 0xb5cc8e7a lustre_attr_show +EXPORT_SYMBOL_GPL drivers/staging/lustre/lustre/obdclass/obdclass 0xd695cf4c lustre_attr_store +EXPORT_SYMBOL_GPL drivers/staging/lustre/lustre/obdclass/obdclass 0xd7b864f5 lustre_kobj +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x0132ba0e spk_synth_flush +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x0544f089 spk_synth_immediate +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x0e81c76d spk_serial_out +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x0ef1d765 speakup_info +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x14f06fe7 spk_serial_in_nowait +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x1a8259e8 spk_var_show +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x27129f45 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 0x475e158a synth_request_region +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x759ff937 spk_synth_is_alive_nop +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x8e146195 synth_release_region +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x91c41d54 spk_do_catch_up +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x93d47721 synth_remove +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x9a888082 synth_buffer_getc +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xb35aaab9 speakup_event +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xb48956f8 synth_buffer_peek +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xbbd15a51 speakup_start_ttys +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xc766ae09 synth_printf +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xcbde3c39 synth_add +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xd1b551a2 spk_get_var +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xdad628eb spk_serial_synth_probe +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xdc86f66a spk_synth_is_alive_restart +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xe7cd4558 spk_serial_release +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xe7e810f8 spk_serial_in +EXPORT_SYMBOL_GPL drivers/tty/n_tracesink 0x585ebaac n_tracesink_datadrain +EXPORT_SYMBOL_GPL drivers/uio/uio 0x29ca3623 uio_event_notify +EXPORT_SYMBOL_GPL drivers/uio/uio 0xb2b938f1 uio_unregister_device +EXPORT_SYMBOL_GPL drivers/uio/uio 0xec9b3ecc __uio_register_device +EXPORT_SYMBOL_GPL drivers/usb/atm/usbatm 0x5940b5a2 usbatm_usb_disconnect +EXPORT_SYMBOL_GPL drivers/usb/atm/usbatm 0x656373ee usbatm_usb_probe +EXPORT_SYMBOL_GPL drivers/usb/chipidea/ci_hdrc 0x978d5e51 ci_hdrc_remove_device +EXPORT_SYMBOL_GPL drivers/usb/chipidea/ci_hdrc 0xc825edfb ci_hdrc_add_device +EXPORT_SYMBOL_GPL drivers/usb/chipidea/usbmisc_imx 0x0f44c350 imx_usbmisc_init +EXPORT_SYMBOL_GPL drivers/usb/chipidea/usbmisc_imx 0x9073fbcc imx_usbmisc_set_wakeup +EXPORT_SYMBOL_GPL drivers/usb/chipidea/usbmisc_imx 0xd386477e imx_usbmisc_init_post +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0x1221caf7 ulpi_register_driver +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0x19f10795 ulpi_unregister_driver +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0x3b665177 ulpi_register_interface +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0x828c2cb1 ulpi_unregister_interface +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0xb1d43dab ulpi_read +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0xe4b29eac ulpi_write +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x1e512215 gether_set_gadget +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x5ce5e185 gether_get_qmult +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x777a2e60 gether_connect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x81518ee6 gether_setup_name +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x8878cfa6 gether_cleanup +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x8dc6eb6b gether_set_qmult +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xa6ccd72e gether_set_host_addr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xc424aa62 gether_setup_name_default +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xc6aee1b5 gether_register_netdev +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xd4ad0a09 gether_get_host_addr_u8 +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xd99a0246 gether_get_host_addr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xda3bf4ae gether_set_dev_addr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xdf39e621 gether_get_dev_addr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xe2821aae gether_get_ifname +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xe7c0cd1f gether_disconnect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xff5701a4 gether_get_host_addr_cdc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0x2d4a192d gserial_connect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0x33bfdca2 gserial_alloc_line +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0x89263781 gs_free_req +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0xb6652875 gserial_free_line +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0xe6079b37 gserial_disconnect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0xf9e5ceeb gs_alloc_req +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_fs 0x0bccdc80 ffs_single_dev +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_fs 0xb06751fb ffs_name_dev +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_fs 0xb458a519 ffs_lock +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x066e2650 fsg_lun_open +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x08afe26b fsg_lun_close +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x0a5230df fsg_common_set_nluns +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x0c90fe3a fsg_common_remove_lun +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x13f5a8e6 fsg_show_file +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 0x1b1cc3af store_cdrom_address +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 0x1cf956ed fsg_show_nofua +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 0x2d10b6a7 fsg_common_create_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 0x3a050a0a fsg_store_ro +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 0x51707c29 fsg_common_run_thread +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 0x5674ae01 fsg_show_ro +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x5c98d047 fsg_store_file +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x5f128c4d fsg_lun_fsync_sub +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 0x90e2ed9c 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 0x977c3ca2 fsg_store_removable +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x99023bfc fsg_common_put +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 0x9bed291f fsg_show_cdrom +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x9dc025a5 fsg_common_free_luns +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xa46e6443 fsg_common_get +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 0xb3a43c55 fsg_show_removable +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 0xd3ae3b65 fsg_common_create_luns +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xd468f882 fsg_common_set_ops +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xd5c008ff fsg_store_cdrom +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xe4d1591e fsg_config_from_params +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xe740c5fc fsg_store_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 0x013cdf5f rndis_rm_hdr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x18f6ad06 rndis_set_param_vendor +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x19b7f1f8 rndis_free_response +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x1fcf28f3 rndis_set_param_medium +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x25dc34a1 rndis_set_param_dev +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x377d3350 rndis_uninit +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x52c5aec3 rndis_add_hdr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x68a0b77a rndis_msg_parser +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x76eeef79 rndis_deregister +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x7fc4dc32 rndis_get_next_response +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xb2a2914d rndis_signal_disconnect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xb544f2a2 rndis_set_host_mac +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xc4a1486f rndis_register +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xc915aeea rndis_signal_connect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xcb51e723 rndis_borrow_net +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x0dbdb312 usb_composite_setup_continue +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x0f0f3cf2 usb_ep_autoconfig_reset +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x173e82ba usb_ep_autoconfig_ss +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x1d20ca15 usb_gstrings_attach +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x22b9d0bb usb_assign_descriptors +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x252cc074 usb_composite_probe +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x25486a78 usb_get_function_instance +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x2c147131 usb_function_unregister +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x2e09263f usb_copy_descriptors +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x3034d8c5 usb_get_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x53cc9abc usb_put_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x5b892b25 usb_remove_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x5fe7c94d usb_composite_unregister +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x612754c4 config_ep_by_speed +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x671eb61a usb_string_ids_n +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x94d7075a usb_gadget_get_string +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x96bc05c3 usb_composite_overwrite_options +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x9c4f0fa1 unregister_gadget_item +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x9cc57976 usb_function_deactivate +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xa073382d alloc_ep_req +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xb5c716f4 usb_free_all_descriptors +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xbb90ac41 usb_function_activate +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xbbdb23d3 usb_ep_autoconfig +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xc2d23410 usb_put_function_instance +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xca03d1d6 usb_string_ids_tab +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xcf19d771 usb_function_register +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xd0542843 usb_add_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xd2ea2134 usb_descriptor_fillbuf +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xdec466ce usb_interface_id +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xe4379b4f usb_add_config_only +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xe45a0ef8 usb_string_id +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xf474a207 usb_gadget_config_buf +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xfacfc14f usb_add_config +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x042978b4 usb_del_gadget_udc +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x11649377 usb_add_gadget_udc +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x34688155 usb_gadget_udc_reset +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x352cf494 usb_gadget_giveback_request +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x5baad3df usb_gadget_unmap_request +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x6ff0a0a7 usb_add_gadget_udc_release +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x80c3edfb usb_gadget_set_state +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x8e828a48 usb_udc_attach_driver +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x9c961623 usb_gadget_map_request +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0xd4c04e4f usb_gadget_unregister_driver +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0xfd3573c3 usb_gadget_probe_driver +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0xff855b9e usb_udc_vbus_handler +EXPORT_SYMBOL_GPL drivers/usb/misc/ezusb 0x0da6f1cc ezusb_fx1_ihex_firmware_download +EXPORT_SYMBOL_GPL drivers/usb/misc/ezusb 0x9b4ab8f9 ezusb_fx1_set_reset +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x03bebd19 usb_ftdi_elan_edset_setup +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x252c952c usb_ftdi_elan_edset_empty +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x33f204fc usb_ftdi_elan_write_pcimem +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x340e52e7 usb_ftdi_elan_edset_flush +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x59c60a0e usb_ftdi_elan_edset_output +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x752d9352 usb_ftdi_elan_edset_input +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x767cab4d usb_ftdi_elan_edset_single +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x7e861c32 usb_ftdi_elan_read_pcimem +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x9957880a ftdi_elan_gone_away +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0x0892ae1a musb_writew +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0x56d31820 musb_writel +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0x72234dd6 musb_readw +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0x96919667 musb_readl +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0xac5f3d70 musb_readb +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0xcb32cb36 musb_writeb +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0xdcdca62c musb_interrupt +EXPORT_SYMBOL_GPL drivers/usb/phy/phy-isp1301 0xc5c0ed0b isp1301_get_client +EXPORT_SYMBOL_GPL drivers/usb/serial/usb_wwan 0x5a18ffd0 usb_wwan_port_probe +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x0a3fc628 usb_serial_generic_process_read_urb +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x1309891e usb_serial_register_drivers +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x1c7a15c9 usb_serial_generic_wait_until_sent +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x2317b0d7 usb_serial_handle_sysrq_char +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x4aa401d3 usb_serial_generic_write_bulk_callback +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x65007467 usb_serial_generic_tiocmiwait +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x6a2de0c5 usb_serial_handle_break +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x6aa1bef5 usb_serial_generic_unthrottle +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x6ac6eeb9 usb_serial_port_softint +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x78ccaeda usb_serial_generic_throttle +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x8179dfac usb_serial_generic_write +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x8401f9c5 usb_serial_deregister_drivers +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x9461f6e5 usb_serial_generic_resume +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x976192fe usb_serial_generic_write_start +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xc0657179 usb_serial_generic_read_bulk_callback +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xc2832056 usb_serial_generic_submit_read_urbs +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xca72d29d usb_serial_handle_dcd_change +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xcee9386d usb_serial_generic_close +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xd0cd6397 usb_serial_generic_open +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xd41b8335 usb_serial_generic_chars_in_buffer +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xf3c8abf9 usb_serial_generic_get_icount +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x1bc3edc2 usb_stor_sense_invalidCDB +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x256464c2 usb_stor_ctrl_transfer +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x2fee51a3 fill_inquiry_response +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x320f4cc0 usb_stor_bulk_srb +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x35b154ea usb_stor_Bulk_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x41c8c529 usb_stor_bulk_transfer_sg +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x461dce46 usb_stor_CB_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x55d0f72b usb_stor_set_xfer_buf +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x56098560 usb_stor_access_xfer_buf +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x5b1e42fb usb_stor_pre_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x5bd7182a usb_stor_reset_resume +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x656e0375 usb_stor_post_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x6e44c7f9 usb_stor_bulk_transfer_buf +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x8d176a75 usb_stor_clear_halt +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x9464e2c0 usb_stor_transparent_scsi_command +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x9c43bb30 usb_stor_probe2 +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xafb7e1cb usb_stor_control_msg +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xb558801a usb_stor_resume +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xbfd6eea3 usb_stor_suspend +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xcaddd8ed usb_stor_CB_transport +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xcf767836 usb_stor_host_template_init +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xd0a532fe usb_stor_probe1 +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xe2418e60 usb_stor_Bulk_transport +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xf0876e5c usb_stor_disconnect +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xfb5d027e usb_stor_adjust_quirks +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x1794ab93 usbip_alloc_iso_desc_pdu +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x1f43b3b2 usbip_dump_urb +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x33cb3743 usbip_stop_eh +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x4c33f1ef usbip_pack_pdu +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x532780d0 usbip_start_eh +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x54632818 usbip_recv_iso +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x78b72f44 usbip_debug_flag +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x9f040ab4 usbip_event_add +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xa812ef33 dev_attr_usbip_debug +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xc2b76a38 usbip_recv_xbuff +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xd02753dc usbip_header_correct_endian +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xd3409dd0 usbip_pad_iso +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xe1ea0586 usbip_dump_header +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xe768d44b usbip_recv +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xf213cad5 usbip_event_happened +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x0bd816f0 wa_process_errored_transfers_run +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x122f15ac wa_urb_enqueue_run +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x186ec02b __wa_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x2af817f2 rpipe_ep_disable +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x732389a2 wa_create +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xa1126e2b rpipe_clear_feature_stalled +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xc65d75c1 wa_urb_enqueue +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xcb55ad58 rpipe_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xce97ebe9 wa_dti_start +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xec911cad wa_urb_dequeue +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x028a3016 wusbhc_handle_dn +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x0bb6bf5e wusb_cluster_id_get +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x1d92133f wusbhc_b_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x3808892b wusbhc_create +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x4a9cfd61 wusbhc_rh_start_port_reset +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x55e88383 __wusb_dev_get_by_usb_dev +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x72235840 wusbhc_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x72728c52 wusbhc_chid_set +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x7f0b7631 wusb_dev_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x985a2c5d wusbhc_reset_all +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xaa2d323c wusbhc_rh_control +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xb6098db4 wusbhc_b_create +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xb725d128 wusb_cluster_id_put +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xca6663af wusbhc_rh_status_data +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xe0810041 wusbhc_mmcie_set +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xe27cc369 wusbhc_mmcie_rm +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xf770a6b4 wusbd +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xfe2e17d7 wusb_et_name +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xfef1a693 wusbhc_giveback_urb +EXPORT_SYMBOL_GPL drivers/uwb/i1480/dfu/i1480-dfu-usb 0x23d03eea i1480_cmd +EXPORT_SYMBOL_GPL drivers/uwb/i1480/dfu/i1480-dfu-usb 0x4b6f285d i1480_fw_upload +EXPORT_SYMBOL_GPL drivers/uwb/i1480/dfu/i1480-dfu-usb 0xcc01476e i1480_rceb_check +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x0b4c75cd umc_device_unregister +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x2e515122 umc_device_register +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x3772fa84 umc_match_pci_id +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x3eefe9e0 umc_driver_unregister +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x7377d151 umc_bus_type +EXPORT_SYMBOL_GPL drivers/uwb/umc 0xb8e6132b umc_controller_reset +EXPORT_SYMBOL_GPL drivers/uwb/umc 0xbb89598f __umc_driver_register +EXPORT_SYMBOL_GPL drivers/uwb/umc 0xcb76a524 umc_device_create +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x06d7558c uwb_radio_stop +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x0c465de1 uwb_rc_vcmd +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x0d78016e __uwb_addr_print +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x0fc02440 uwb_est_unregister +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x1da2a3b9 uwb_rc_dev_addr_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x2839a3d5 uwb_rc_neh_grok +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x286fd47c uwb_rc_rm +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x33cec09e uwb_pal_register +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x45450551 uwb_rc_put +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x4d57ae3c uwb_rsv_type_str +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x4e11ccca uwb_notifs_deregister +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x4fc8eb54 uwb_notifs_register +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x5a8953e5 uwb_rsv_terminate +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x5d6ec6a8 uwb_rc_alloc +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x603c388a uwb_rc_post_reset +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x6b95ed32 uwb_radio_start +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x70d58af5 uwb_rc_cmd +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x71181de9 uwb_rc_ie_rm +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x7eec9424 uwb_dev_for_each +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x816b9e92 uwb_est_register +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x8183ca2f uwb_rc_add +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x840e20cb uwb_dev_try_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x85de4f8d uwb_rc_ie_add +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x97c9f64b uwb_rc_init +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x98413234 uwb_rsv_state_str +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xa56d5984 uwb_rc_get_by_grandpa +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xa994c862 uwb_rc_cmd_async +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xac97316b uwb_ie_next +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xad9d672f uwb_rsv_create +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xb1f811db uwb_est_find_size +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xb50bbda6 __uwb_rc_try_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xb58fb93e uwb_rsv_destroy +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xcfaa55f3 uwb_rc_pre_reset +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xd48af85c uwb_rc_mac_addr_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xd51321cd uwb_rc_neh_error +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xdd1a9cd9 uwb_rc_reset_all +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xde028f15 uwb_rsv_get_usable_mas +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xe52eeae3 uwb_rsv_modify +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xe58d3581 uwb_pal_unregister +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xeee4f91e uwb_pal_init +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xf36d2a70 uwb_rsv_accept +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xfd08db80 uwb_rc_get_by_dev +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xfead2ca7 uwb_rsv_establish +EXPORT_SYMBOL_GPL drivers/uwb/whci 0x6d15fdbf whci_wait_for +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x252be5b3 vfio_del_group_dev +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x27189a42 vfio_unregister_iommu_driver +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x3567743b vfio_external_user_iommu_id +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x46ff664f vfio_register_iommu_driver +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x6f1e4a97 vfio_group_get_external_user +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x7a06ef88 vfio_device_get_from_dev +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x8d6bd89e 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_spapr_eeh 0x634ad3e3 vfio_spapr_pci_eeh_release +EXPORT_SYMBOL_GPL drivers/vfio/vfio_spapr_eeh 0xac0624b4 vfio_spapr_iommu_eeh_ioctl +EXPORT_SYMBOL_GPL drivers/vfio/vfio_spapr_eeh 0xe27df1c4 vfio_spapr_pci_eeh_open +EXPORT_SYMBOL_GPL drivers/vfio/vfio_virqfd 0x93157d3b vfio_virqfd_enable +EXPORT_SYMBOL_GPL drivers/vfio/vfio_virqfd 0xe758d46a vfio_virqfd_disable +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x13641eb3 vhost_enable_notify +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x196f0f84 vhost_log_access_ok +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x269f7a09 vhost_dev_reset_owner_prepare +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x2d31fcaa vhost_dev_set_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x2da4cb24 vhost_vq_access_ok +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x308678b9 vhost_dev_stop +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x335cba7b vhost_poll_stop +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x3a2b3dd1 vhost_discard_vq_desc +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x4a62bbc2 vhost_work_queue +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x51a3c463 vhost_vring_ioctl +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x5d28a017 vhost_signal +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x63b3b37d vhost_work_flush +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x647ee9b4 vhost_add_used_and_signal_n +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x6e22cff0 vhost_add_used +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x705b58ab vhost_get_vq_desc +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x73c5b6cc vhost_add_used_and_signal +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x8235ca74 vhost_log_write +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x83e338c4 vhost_dev_has_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xa007f681 vhost_dev_ioctl +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xa4f5c9f1 vhost_poll_start +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xae4c1740 vhost_dev_check_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xb0f81e37 vhost_work_init +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xc51a384c vhost_init_used +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xc86fd413 vhost_add_used_n +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xdb79925e vhost_dev_reset_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xef786966 vhost_dev_init +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xf488cf0b vhost_poll_init +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xf8d97e6c vhost_dev_cleanup +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xf9b76d66 vhost_poll_flush +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xfa57ba6a vhost_disable_notify +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xffde5c1e vhost_poll_queue +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x29f242af ili9320_resume +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x4f9a9651 ili9320_probe_spi +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x63a5637c ili9320_write_regs +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x74ea5647 ili9320_shutdown +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x7c07a864 ili9320_suspend +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0xb5b8303a ili9320_write +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0xdbca6129 ili9320_remove +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x0b810d01 auok190x_send_cmdargs_pixels_nowait +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x0debd5d4 auok190x_send_cmdargs_pixels +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x195fcd7d auok190x_pm +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x4323ed39 auok190x_common_remove +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x43785ef7 auok190x_common_probe +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x4f288552 auok190x_send_command +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x79af9733 auok190x_send_cmdargs_nowait +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x8311888c auok190x_read_cmdargs +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x8960406e auok190x_send_cmdargs +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0xfefc6385 auok190x_send_command_nowait +EXPORT_SYMBOL_GPL drivers/video/fbdev/core/fb_ddc 0xfa4888ff fb_ddc_read +EXPORT_SYMBOL_GPL drivers/video/fbdev/sis/sisfb 0x330f1274 sis_free_new +EXPORT_SYMBOL_GPL drivers/video/fbdev/sis/sisfb 0xa855c8d1 sis_malloc_new +EXPORT_SYMBOL_GPL drivers/w1/wire 0x0ad065b4 w1_read_block +EXPORT_SYMBOL_GPL drivers/w1/wire 0x260693d4 w1_touch_block +EXPORT_SYMBOL_GPL drivers/w1/wire 0x3d73e160 w1_write_8 +EXPORT_SYMBOL_GPL drivers/w1/wire 0x4608adcf w1_next_pullup +EXPORT_SYMBOL_GPL drivers/w1/wire 0x58344b61 w1_read_8 +EXPORT_SYMBOL_GPL drivers/w1/wire 0x5fa7f999 w1_reset_bus +EXPORT_SYMBOL_GPL drivers/w1/wire 0x7c2f2afb w1_calc_crc8 +EXPORT_SYMBOL_GPL drivers/w1/wire 0x8f5fc70c w1_write_block +EXPORT_SYMBOL_GPL drivers/w1/wire 0x9d6ddf98 w1_reset_select_slave +EXPORT_SYMBOL_GPL drivers/w1/wire 0xeb22d1f7 w1_reset_resume_command +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x10b11a73 dlm_posix_get +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x5a503b60 dlm_posix_unlock +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x8a23558e dlm_posix_lock +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x9321df95 dlm_lock +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xc6dc8c2f dlm_new_lockspace +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xcf9f3328 dlm_release_lockspace +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xdc583c08 dlm_unlock +EXPORT_SYMBOL_GPL fs/fscache/fscache 0x092cf98e fscache_object_sleep_till_congested +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x00146e57 nlmsvc_unlock_all_by_sb +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x034c930e lockd_down +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x3c86d78f nlmclnt_init +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x3d397cee nlmsvc_ops +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x75202a99 nlmclnt_done +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x77e35ccc nlmsvc_unlock_all_by_ip +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x87b96592 lockd_up +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x903b9205 nlmclnt_proc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0203d8cc nfs_mkdir +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0367760f nfs_fs_mount_common +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0491b35c nfs_drop_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x04a508db alloc_nfs_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x04b3329f nfs_sops +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x06e92c2d nfs_server_copy_userdata +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0b2ee073 nfs_fs_mount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0e4dcd43 nfs_file_mmap +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0ebd8845 nfs_create +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x11346a9b nfs_sb_deactive +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x12006a60 nfs_lock +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x12764c97 nfs_submount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x14391bec nfs_access_zap_cache +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x15268602 nfs_clone_sb_security +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x16614782 nfs_pageio_init +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x16a5739b nfs_server_insert_lists +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1a80ce7e nfs_fill_super +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1c85c615 nfs_init_server_rpcclient +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1cf47c6d nfs_access_add_cache +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x20a1c3e7 nfs_destroy_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x24219eda nfs_setattr_update_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2632cd36 nfs_file_release +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x26884ff7 nfs_alloc_fhandle +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x26aca7a3 nfs_put_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x26d11250 nfs_write_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x271fbfa0 nfs_file_splice_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2f86e7f4 nfs_mknod +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x34641dec nfs_statfs +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x36bfd2fb nfs_writeback_update_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x37dc3be6 nfs_wait_client_init_complete +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x38b5a6ff nfs_invalidate_atime +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x39ca66ab nfs_pageio_init_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x39e05ac3 nfs_idmap_cache_timeout +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3ab854dd nfs_file_set_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3bb58d7e nfs_rmdir +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3ca31f35 nfs_net_id +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3f2690f2 nfs_check_flags +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x405dc5ba nfs_generic_pg_test +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x40c12fb5 nfs_generic_pgio +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x42f2c81f nfs4_client_id_uniquifier +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x43731764 nfs_get_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x438b7b8f nfs_link +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x44bfbf0f nfs_file_flush +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x45c6aac9 nfs_pgio_header_free +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4ca7f270 nfs_initiate_pgio +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4cb9e001 recover_lost_locks +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4d1350df nfs_zap_acl_cache +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4f32db80 nfs_inode_attach_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x51892d61 nfs_callback_set_tcpport +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x52d9195e nfs4_fs_type +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x544280f2 nfs_request_remove_commit_list +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x550c7ddc nfs_init_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x567df63e nfs_dentry_operations +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x584b8482 nfs_inc_attr_generation_counter +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x593f708a nfs_initiate_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x599a6d9c nfs_rename +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5dcb2cb6 nfs_pageio_init_write +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5e1d863a nfs_sockaddr_match_ipaddr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x601cde50 nfs_commit_free +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6dd01d24 nfs_file_llseek +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6f60c90a nfs_show_devname +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6f76b2f2 nfs_force_lookup_revalidate +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7037c0e8 nfs_probe_fsinfo +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7056f11b nfs_unlink +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x75af1fb8 nfs_setsecurity +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x760614b9 nfs4_dentry_operations +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x762888fe nfs_close_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x76dae816 nfs_path +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x78d072ff nfs_flock +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x79b0969f nfs_lookup +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7c9722ba nfs_dreq_bytes_left +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7dc9c384 nfs_file_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7ed04b0c nfs_permission +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x83f3659e nfs_free_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x869e434a nfs_alloc_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8742f9e1 nfs_sb_active +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8e0fbd21 nfs_alloc_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x90a5530f nfsiod_workqueue +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x91cb8012 nfs_file_operations +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x91d1fe52 max_session_slots +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9205fcd1 nfs_clone_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x92168c6c nfs_instantiate +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x94d64685 __tracepoint_nfs_fsync_exit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9559191a nfs_may_open +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9b928a9a nfs_commitdata_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9f142195 nfs_setattr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa0b39647 nfs_create_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa27a5575 nfs4_label_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa312aab4 nfs_pgio_current_mirror +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa6496338 nfs_alloc_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa6609ad3 nfs_getattr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa6a6af46 nfs_fhget +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa6c865ee nfs_wait_bit_killable +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa8d2d1ce nfs_callback_tcpport +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa8e9e1ae send_implementation_id +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa8ea9f60 unregister_nfs_version +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa9c86e0f nfs_server_remove_lists +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xabc47138 nfs_init_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xac3fad88 nfs_pageio_reset_read_mds +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xac7c6c1d nfs_pgheader_init +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xac90755d __tracepoint_nfs_fsync_enter +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xacdd7745 nfs_do_submount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb1e23148 get_nfs_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb3952c0e nfs_try_mount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb46c9bdb nfs_sync_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb4ad7f36 nfs_clear_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb606e716 nfs_fattr_init +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb75dfbc1 nfs_pageio_reset_write_mds +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb7dce8a3 nfs_request_add_commit_list +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb7e6262b nfs_get_lock_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb9b3f490 nfs_post_op_update_inode_force_wcc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xba2073d0 nfs_file_fsync_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbc7e079c nfs_create_rpc_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbe436d7b nfs_atomic_open +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc058fbcf put_nfs_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc409231f nfs_request_add_commit_list_locked +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc4ff1e9f nfs_auth_info_match +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc50497f2 nfs_fs_type +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc5527d9b nfs_remount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc5ef47d5 nfs_init_timeout_values +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc63199ad nfs_umount_begin +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc6c86ecc nfs_access_set_mask +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc7b3aca4 nfs_init_cinfo +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc9d08154 nfs_set_sb_security +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xcd71412b nfs_symlink +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xcf3d3b14 nfs_show_stats +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd2513081 _nfs_display_fhandle_hash +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd5553881 nfs_commitdata_release +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd6278a30 nfs_fscache_open_file +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd7e184d6 nfs_kill_super +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd8e92e74 nfs_show_path +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdae9b5d7 nfs4_disable_idmapping +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdb8022db nfs_refresh_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdcbd8922 register_nfs_version +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdef3a20b nfs_revalidate_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe2e73deb nfs_pgio_data_destroy +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe44f51bb nfs_pgio_header_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe92c510d nfs_direct_set_resched_writes +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xecd38548 nfs_wb_all +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf007421c nfs_mark_client_ready +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf1b2d54f nfs_retry_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf613e3c7 nfs_free_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf726ee0e nfs_put_lock_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf7bb351c nfs_file_write +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf938c6ad nfs_show_options +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfa6ebbc5 nfs_post_op_update_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfb7ee006 nfs_alloc_fattr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfc619abd _nfs_display_fhandle +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfee5fef0 nfs_pageio_resend +EXPORT_SYMBOL_GPL fs/nfs/nfsv3 0xaa918b81 nfs3_set_ds_client +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x001a532e pnfs_read_done_resend_to_mds +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x03d1c43b pnfs_generic_pg_readpages +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x06c36816 __tracepoint_nfs4_pnfs_write +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x07fb8e13 pnfs_generic_recover_commit_reqs +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x082e1c52 nfs4_proc_getdeviceinfo +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x0857bc96 pnfs_ld_write_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x0c5b603c pnfs_layoutcommit_inode +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x0fb1c1ef pnfs_generic_pg_test +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x104922b9 nfs4_schedule_migration_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x10d80fde pnfs_generic_pg_cleanup +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x1175871f pnfs_write_done_resend_to_mds +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x15297680 pnfs_layout_mark_request_commit +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x170f3ed6 nfs41_maxgetdevinfo_overhead +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x1a875604 pnfs_nfs_generic_sync +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x1d5612ee nfs4_pnfs_ds_connect +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x205d3032 nfs4_schedule_lease_moved_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x2319dd6b _pnfs_return_layout +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x2701743f nfs4_schedule_stateid_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x2c1e4305 pnfs_error_mark_layout_for_return +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x2f0caa6f nfs_remove_bad_delegation +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x313a916c nfs40_setup_sequence +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x334842f5 nfs4_schedule_lease_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x34513ee4 nfs4_init_deviceid_node +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x3dfe6fe3 __tracepoint_nfs4_pnfs_read +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x471de0a9 __tracepoint_nfs4_pnfs_commit_ds +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x4e4bcf9b pnfs_generic_clear_request_commit +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x5106074d pnfs_set_layoutcommit +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x5513f5de pnfs_report_layoutstat +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x5c7f2504 pnfs_put_lseg_locked +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x5dd4d37a nfs4_schedule_session_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x6085edbd nfs_map_string_to_numeric +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x631d517e nfs41_setup_sequence +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x648b63f7 nfs4_put_deviceid_node +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x65d32f62 pnfs_generic_pg_writepages +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x65e7697d nfs4_decode_mp_ds_addr +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x6911e38f pnfs_register_layoutdriver +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x69d3558d pnfs_generic_rw_release +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x71b6546f pnfs_generic_sync +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x753c7d44 nfs4_pnfs_ds_put +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x83715a8f nfs4_find_get_deviceid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x83ae6aaa nfs4_pnfs_v3_ds_connect_unload +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x8a2e74be pnfs_update_layout +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x8d449a51 nfs4_delete_deviceid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x91179bef pnfs_generic_write_commit_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x93c9eff0 pnfs_destroy_layout +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x95a7c13b nfs4_pnfs_ds_add +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x9922cdb9 nfs4_test_deviceid_unavailable +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x9be5ff54 nfs4_mark_deviceid_unavailable +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x9e1b8b0e nfs4_sequence_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xa16837bc pnfs_put_lseg +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xa2347e42 pnfs_generic_pg_init_write +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xb76d9214 pnfs_read_resend_pnfs +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xbb0c76ef pnfs_generic_commit_pagelist +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xc2ce20ac pnfs_generic_pg_init_read +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xc5f3c84b pnfs_ld_read_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xd84ae9cb pnfs_generic_scan_commit_lists +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xdbbb35ac pnfs_unregister_layoutdriver +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xe31e427b pnfs_set_lo_fail +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xe35733d2 nfs4_set_rw_stateid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xebd2d97f nfs4_set_ds_client +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xed15fb41 nfs4_print_deviceid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xf21f940c nfs41_sequence_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xf3d8c0d5 nfs4_find_or_create_ds_client +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xf85a0e88 nfs4_init_ds_session +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xf999267e pnfs_generic_commit_release +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xffd9898c pnfs_generic_prepare_to_resend_writes +EXPORT_SYMBOL_GPL fs/nfs_common/grace 0x17ce645d locks_end_grace +EXPORT_SYMBOL_GPL fs/nfs_common/grace 0x369fa145 locks_start_grace +EXPORT_SYMBOL_GPL fs/nfs_common/grace 0xb916aa9d locks_in_grace +EXPORT_SYMBOL_GPL fs/nfs_common/nfs_acl 0x47c7a09a nfsacl_encode +EXPORT_SYMBOL_GPL fs/nfs_common/nfs_acl 0xdd537ccd nfsacl_decode +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x11736b03 __mlog_printk +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x171e82cb o2nm_node_get +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x1b89c6ee o2hb_fill_node_map +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x1d747ce3 o2hb_check_node_heartbeating +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x21f858b6 o2hb_unregister_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x320e1dfa o2hb_setup_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x36418553 o2net_send_message +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x36a28a9e 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 0x546a93e0 o2nm_get_node_by_ip +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x711059e2 o2nm_get_node_by_num +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x81a17396 mlog_and_bits +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xa1ae48e1 o2hb_check_node_heartbeating_no_sem +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xa82a8645 o2nm_this_node +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xa87bc9e7 o2nm_configured_node_map +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xae808bac o2net_register_handler +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xb11a41a3 o2hb_register_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xbaeb4700 o2hb_check_node_heartbeating_from_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xc3679d7b o2hb_get_all_regions +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xd60f2c6c o2hb_check_local_node_heartbeating +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xd859ac8c o2net_fill_node_map +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xdf46f5db o2nm_node_put +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/dlm/ocfs2_dlm 0x1a880256 dlmunlock +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x41e464e3 dlm_register_eviction_cb +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x5ba2c390 dlmlock +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x5d3c05c8 dlm_print_one_lock +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x686a26c9 dlm_register_domain +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x7a1211f8 dlm_setup_eviction_cb +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xbe173aa3 dlm_unregister_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 0xfb86b96f dlm_errname +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x269d63fd ocfs2_cluster_disconnect +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x316904e1 ocfs2_dlm_unlock +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x3bcef5f3 ocfs2_dlm_lock_status +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x40718c92 ocfs2_dlm_lock +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x4226705d ocfs2_dlm_dump_lksb +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x424241c9 ocfs2_dlm_lvb +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x4d3af7fa ocfs2_cluster_hangup +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x576d8fee ocfs2_stack_glue_unregister +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x60f4bcef ocfs2_dlm_lvb_valid +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x8a49af6d ocfs2_stack_glue_register +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x9ccafa05 ocfs2_cluster_this_node +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xa06fbc10 ocfs2_cluster_connect_agnostic +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xb900153d ocfs2_plock +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xbbc4ef97 ocfs2_stack_supports_plocks +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xbf9068ab ocfs2_cluster_connect +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xe40cffce ocfs2_stack_glue_set_max_proto_version +EXPORT_SYMBOL_GPL kernel/torture 0x0d2ab9e9 torture_shuffle_task_register +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 0x4c7529bd torture_shutdown_absorb +EXPORT_SYMBOL_GPL kernel/torture 0x52665f8b torture_random +EXPORT_SYMBOL_GPL kernel/torture 0x5346b23b torture_shuffle_cleanup +EXPORT_SYMBOL_GPL kernel/torture 0x5be17b25 _torture_create_kthread +EXPORT_SYMBOL_GPL kernel/torture 0x6364b2f0 stutter_wait +EXPORT_SYMBOL_GPL kernel/torture 0x679d9e50 torture_must_stop +EXPORT_SYMBOL_GPL kernel/torture 0x688e6a64 torture_cleanup_end +EXPORT_SYMBOL_GPL kernel/torture 0x6bdeda8f torture_onoff_init +EXPORT_SYMBOL_GPL kernel/torture 0x8b0e1d2f torture_shuffle_init +EXPORT_SYMBOL_GPL kernel/torture 0xc1361afc torture_onoff_cleanup +EXPORT_SYMBOL_GPL kernel/torture 0xc6527045 torture_init_begin +EXPORT_SYMBOL_GPL kernel/torture 0xc67a49d4 torture_cleanup_begin +EXPORT_SYMBOL_GPL kernel/torture 0xd14a77a9 _torture_stop_kthread +EXPORT_SYMBOL_GPL kernel/torture 0xdbc5277a torture_shutdown_init +EXPORT_SYMBOL_GPL kernel/torture 0xe6989fd3 torture_init_end +EXPORT_SYMBOL_GPL kernel/torture 0xe9ff1468 torture_stutter_init +EXPORT_SYMBOL_GPL kernel/torture 0xf6d34fb5 torture_kthread_stopping +EXPORT_SYMBOL_GPL lib/842/842_compress 0x1ce013cf sw842_compress +EXPORT_SYMBOL_GPL lib/842/842_decompress 0x0d22f116 sw842_decompress +EXPORT_SYMBOL_GPL lib/bch 0x231d70fc encode_bch +EXPORT_SYMBOL_GPL lib/bch 0x6b770f49 decode_bch +EXPORT_SYMBOL_GPL lib/bch 0x9463ff71 init_bch +EXPORT_SYMBOL_GPL lib/bch 0xbdf512de free_bch +EXPORT_SYMBOL_GPL lib/notifier-error-inject 0x56f510b7 notifier_err_inject_dir +EXPORT_SYMBOL_GPL lib/notifier-error-inject 0x85725c4b 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 0x201d8ea3 encode_rs8 +EXPORT_SYMBOL_GPL lib/reed_solomon/reed_solomon 0x29fa419f decode_rs8 +EXPORT_SYMBOL_GPL lib/reed_solomon/reed_solomon 0x300d7e57 free_rs +EXPORT_SYMBOL_GPL lib/reed_solomon/reed_solomon 0x6fbb3bd9 init_rs_non_canonical +EXPORT_SYMBOL_GPL lib/reed_solomon/reed_solomon 0xabda1e2e decode_rs16 +EXPORT_SYMBOL_GPL lib/reed_solomon/reed_solomon 0xb050f329 init_rs +EXPORT_SYMBOL_GPL net/6lowpan/6lowpan 0x960584eb lowpan_header_compress +EXPORT_SYMBOL_GPL net/6lowpan/6lowpan 0xbde173ce lowpan_header_decompress +EXPORT_SYMBOL_GPL net/802/garp 0x35355ce8 garp_request_join +EXPORT_SYMBOL_GPL net/802/garp 0x3c25dde4 garp_unregister_application +EXPORT_SYMBOL_GPL net/802/garp 0x7cb64a0e garp_register_application +EXPORT_SYMBOL_GPL net/802/garp 0x8143dd9a garp_init_applicant +EXPORT_SYMBOL_GPL net/802/garp 0xa58500d5 garp_uninit_applicant +EXPORT_SYMBOL_GPL net/802/garp 0xab9ec301 garp_request_leave +EXPORT_SYMBOL_GPL net/802/mrp 0x28d351e6 mrp_request_join +EXPORT_SYMBOL_GPL net/802/mrp 0xba3b0a5f mrp_uninit_applicant +EXPORT_SYMBOL_GPL net/802/mrp 0xbeab885a mrp_request_leave +EXPORT_SYMBOL_GPL net/802/mrp 0xc2688f03 mrp_register_application +EXPORT_SYMBOL_GPL net/802/mrp 0xcd523918 mrp_unregister_application +EXPORT_SYMBOL_GPL net/802/mrp 0xf88cd1fe mrp_init_applicant +EXPORT_SYMBOL_GPL net/802/stp 0x420c0887 stp_proto_unregister +EXPORT_SYMBOL_GPL net/802/stp 0xb3012ae1 stp_proto_register +EXPORT_SYMBOL_GPL net/9p/9pnet 0x0e08ab4e p9_client_xattrwalk +EXPORT_SYMBOL_GPL net/9p/9pnet 0x24f512df 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 0x46234bc4 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 0x15d0035d l2cap_chan_send +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x74067380 l2cap_chan_set_defaults +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x7cd12bbb l2cap_chan_connect +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0xb9b867aa l2cap_chan_del +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0xbdfb72fc bt_debugfs +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0xcf6cdbb8 l2cap_chan_put +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0xf141f181 l2cap_add_psm +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0xfd1a7af2 l2cap_chan_create +EXPORT_SYMBOL_GPL net/bridge/br_netfilter 0x0cb0f8b7 br_netfilter_enable +EXPORT_SYMBOL_GPL net/bridge/bridge 0x137e9571 nf_br_ops +EXPORT_SYMBOL_GPL net/bridge/bridge 0x13c887ce br_dev_queue_push_xmit +EXPORT_SYMBOL_GPL net/bridge/bridge 0x365ba165 br_multicast_list_adjacent +EXPORT_SYMBOL_GPL net/bridge/bridge 0x4233f3e6 br_multicast_has_querier_adjacent +EXPORT_SYMBOL_GPL net/bridge/bridge 0x5fe09367 br_handle_frame_finish +EXPORT_SYMBOL_GPL net/bridge/bridge 0x66aa9690 br_forward_finish +EXPORT_SYMBOL_GPL net/bridge/bridge 0x76f06c65 br_multicast_has_querier_anywhere +EXPORT_SYMBOL_GPL net/bridge/bridge 0xc9445b96 br_deliver +EXPORT_SYMBOL_GPL net/bridge/netfilter/nf_tables_bridge 0x8dcb549f nft_bridge_iphdr_validate +EXPORT_SYMBOL_GPL net/bridge/netfilter/nf_tables_bridge 0xf291eea6 nft_bridge_ip6hdr_validate +EXPORT_SYMBOL_GPL net/dccp/dccp 0x055c2e92 dccp_send_sync +EXPORT_SYMBOL_GPL net/dccp/dccp 0x14bd2784 dccp_death_row +EXPORT_SYMBOL_GPL net/dccp/dccp 0x16bca38e dccp_poll +EXPORT_SYMBOL_GPL net/dccp/dccp 0x17a37ba4 dccp_getsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0x17e536bb dccp_reqsk_send_ack +EXPORT_SYMBOL_GPL net/dccp/dccp 0x1d99d49a dccp_timestamp +EXPORT_SYMBOL_GPL net/dccp/dccp 0x1e860e09 dccp_make_response +EXPORT_SYMBOL_GPL net/dccp/dccp 0x201979d7 inet_dccp_listen +EXPORT_SYMBOL_GPL net/dccp/dccp 0x25727f29 dccp_sync_mss +EXPORT_SYMBOL_GPL net/dccp/dccp 0x2d097800 dccp_feat_nn_get +EXPORT_SYMBOL_GPL net/dccp/dccp 0x33e2e3ec compat_dccp_getsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0x4856e573 dccp_rcv_state_process +EXPORT_SYMBOL_GPL net/dccp/dccp 0x4b822545 dccp_setsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0x4cdd391d dccp_feat_list_purge +EXPORT_SYMBOL_GPL net/dccp/dccp 0x4ec35231 dccp_ackvec_parsed_add +EXPORT_SYMBOL_GPL net/dccp/dccp 0x592dc8bb dccp_done +EXPORT_SYMBOL_GPL net/dccp/dccp 0x59814a84 dccp_statistics +EXPORT_SYMBOL_GPL net/dccp/dccp 0x5e642ccc dccp_sendmsg +EXPORT_SYMBOL_GPL net/dccp/dccp 0x63c4e206 dccp_destroy_sock +EXPORT_SYMBOL_GPL net/dccp/dccp 0x6400b3b6 dccp_shutdown +EXPORT_SYMBOL_GPL net/dccp/dccp 0x68351504 dccp_rcv_established +EXPORT_SYMBOL_GPL net/dccp/dccp 0x730d5b96 dccp_init_sock +EXPORT_SYMBOL_GPL net/dccp/dccp 0x7553212d dccp_ioctl +EXPORT_SYMBOL_GPL net/dccp/dccp 0x86be7924 dccp_packet_name +EXPORT_SYMBOL_GPL net/dccp/dccp 0x8790c3e5 compat_dccp_setsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0x8a532420 dccp_check_req +EXPORT_SYMBOL_GPL net/dccp/dccp 0x9397dcab dccp_insert_option +EXPORT_SYMBOL_GPL net/dccp/dccp 0x9598d24d dccp_ackvec_parsed_cleanup +EXPORT_SYMBOL_GPL net/dccp/dccp 0x9b081d88 dccp_send_ack +EXPORT_SYMBOL_GPL net/dccp/dccp 0x9bc5af92 dccp_child_process +EXPORT_SYMBOL_GPL net/dccp/dccp 0xae17d48a dccp_reqsk_init +EXPORT_SYMBOL_GPL net/dccp/dccp 0xb106d1d2 dccp_ctl_make_reset +EXPORT_SYMBOL_GPL net/dccp/dccp 0xbd2ab7ae dccp_set_state +EXPORT_SYMBOL_GPL net/dccp/dccp 0xc0b7b890 dccp_orphan_count +EXPORT_SYMBOL_GPL net/dccp/dccp 0xc0c3739a dccp_recvmsg +EXPORT_SYMBOL_GPL net/dccp/dccp 0xc25b0229 dccp_close +EXPORT_SYMBOL_GPL net/dccp/dccp 0xd81e6fcc dccp_disconnect +EXPORT_SYMBOL_GPL net/dccp/dccp 0xe0383261 dccp_feat_signal_nn_change +EXPORT_SYMBOL_GPL net/dccp/dccp 0xe5256155 dccp_hashinfo +EXPORT_SYMBOL_GPL net/dccp/dccp 0xe9fb4e0c dccp_parse_options +EXPORT_SYMBOL_GPL net/dccp/dccp 0xf029121f dccp_connect +EXPORT_SYMBOL_GPL net/dccp/dccp 0xfd98b225 dccp_create_openreq_child +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x40806684 dccp_invalid_packet +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x57ab98ce dccp_v4_send_check +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x717c8b4c dccp_v4_conn_request +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x7df6751b dccp_v4_connect +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0xcf0ea4a4 dccp_v4_do_rcv +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0xef949917 dccp_v4_request_recv_sock +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0x8378a451 ieee802154_hdr_push +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0x8e574f0a ieee802154_hdr_peek_addrs +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0xaf704814 ieee802154_hdr_pull +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0xd58dfa29 ieee802154_max_payload +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0xee53c0c5 ieee802154_hdr_peek +EXPORT_SYMBOL_GPL net/ipv4/geneve_core 0x0d1ea71d geneve_sock_release +EXPORT_SYMBOL_GPL net/ipv4/geneve_core 0x3a888ee4 geneve_sock_add +EXPORT_SYMBOL_GPL net/ipv4/geneve_core 0xb3a2bd89 geneve_xmit_skb +EXPORT_SYMBOL_GPL net/ipv4/gre 0x17afaffe gre_cisco_unregister +EXPORT_SYMBOL_GPL net/ipv4/gre 0x24f50698 gre_del_protocol +EXPORT_SYMBOL_GPL net/ipv4/gre 0x2b175d5e gre_add_protocol +EXPORT_SYMBOL_GPL net/ipv4/gre 0x9909ec03 gre_build_header +EXPORT_SYMBOL_GPL net/ipv4/gre 0xd55998ed gre_cisco_register +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x08eb5342 inet_diag_unregister +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x163dfdaa inet_diag_bc_sk +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x277e9c28 inet_diag_dump_icsk +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x4fe3b237 inet_sk_diag_fill +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x5df2e23b inet_diag_dump_one_icsk +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0xc2a94abf inet_diag_register +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x1cdf76c8 ip_tunnel_xmit +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x284e11d9 ip_tunnel_changelink +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x2f89295e ip_tunnel_init +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x4a7783f4 ip_tunnel_ioctl +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x58a00a2a ip_tunnel_change_mtu +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x5b17916d ip_tunnel_newlink +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x73588279 ip_tunnel_setup +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x959c80db ip_tunnel_rcv +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xa3e4e430 ip_tunnel_delete_net +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xbdcd7dcf ip_tunnel_encap_setup +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xcd5863fe ip_tunnel_lookup +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xd259595f ip_tunnel_dellink +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xd7707d8e ip_tunnel_init_net +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xdd9284a5 ip_tunnel_uninit +EXPORT_SYMBOL_GPL net/ipv4/netfilter/arp_tables 0x987c7743 arpt_alloc_initial_table +EXPORT_SYMBOL_GPL net/ipv4/netfilter/ip_tables 0xebff1058 ipt_alloc_initial_table +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_defrag_ipv4 0x6b6c3d10 nf_defrag_ipv4_enable +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_ipv4 0x1ffcc24a nf_nat_ipv4_in +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_ipv4 0x6b6f363e nf_nat_ipv4_local_fn +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_ipv4 0xc46d4b86 nf_nat_ipv4_fn +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_ipv4 0xf95aaecb nf_nat_ipv4_out +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_ipv4 0xfdc545d5 nf_nat_icmp_reply_translation +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_masquerade_ipv4 0x3f5c468e nf_nat_masquerade_ipv4_unregister_notifier +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_masquerade_ipv4 0xd3e5ad95 nf_nat_masquerade_ipv4 +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_masquerade_ipv4 0xfedbf252 nf_nat_masquerade_ipv4_register_notifier +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_proto_gre 0x636b12c8 nf_nat_need_gre +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0x346edd70 nf_reject_ip_tcphdr_get +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0x6d40afe6 nf_reject_iphdr_put +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0xc2ce3ffd nf_send_reset +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0xcb6b2acd nf_reject_ip_tcphdr_put +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0xf7b3dbcf nf_send_unreach +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_tables_ipv4 0x9567bf9a nft_af_ipv4 +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x12f276e5 tcp_vegas_init +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x31417244 tcp_vegas_cwnd_event +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x35577af9 tcp_vegas_pkts_acked +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x43b4147d tcp_vegas_state +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0xeb9dbbe9 tcp_vegas_get_info +EXPORT_SYMBOL_GPL net/ipv4/udp_tunnel 0x19c7f067 setup_udp_tunnel_sock +EXPORT_SYMBOL_GPL net/ipv4/udp_tunnel 0x64dd80ad udp_tunnel_xmit_skb +EXPORT_SYMBOL_GPL net/ipv4/udp_tunnel 0x9b183a02 udp_tunnel_sock_release +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x0464a5ff ip6_tnl_xmit_ctl +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x72bdc36d ip6_tnl_dst_reset +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0xa56b39a3 ip6_tnl_dst_store +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0xb3314eed ip6_tnl_rcv_ctl +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0xd036da93 ip6_tnl_dst_check +EXPORT_SYMBOL_GPL net/ipv6/ip6_udp_tunnel 0x91d29548 udp_tunnel6_xmit_skb +EXPORT_SYMBOL_GPL net/ipv6/ip6_udp_tunnel 0xfb269a97 udp_sock_create6 +EXPORT_SYMBOL_GPL net/ipv6/netfilter/ip6_tables 0x5ea4b172 ip6t_alloc_initial_table +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_defrag_ipv6 0x6eb85693 nf_defrag_ipv6_enable +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_ipv6 0x04807186 nf_nat_ipv6_out +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_ipv6 0x3dbea612 nf_nat_ipv6_fn +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_ipv6 0x9caf47e4 nf_nat_icmpv6_reply_translation +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_ipv6 0xa4c09c03 nf_nat_ipv6_in +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_ipv6 0xe97ecdfd nf_nat_ipv6_local_fn +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_masquerade_ipv6 0x2293972c nf_nat_masquerade_ipv6_unregister_notifier +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_masquerade_ipv6 0x38d4401a nf_nat_masquerade_ipv6_register_notifier +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_masquerade_ipv6 0xa124970a nf_nat_masquerade_ipv6 +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0x698883cd nf_reject_ip6_tcphdr_put +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0x96154796 nf_reject_ip6_tcphdr_get +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0x993b6b4c nf_send_reset6 +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0xc3fe69b4 nf_send_unreach6 +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0xf319038b nf_reject_ip6hdr_put +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_tables_ipv6 0x2ec29d56 nft_af_ipv6 +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x030bf866 l2tp_udp_encap_recv +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x215d5937 l2tp_xmit_skb +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x23261929 l2tp_session_queue_purge +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x28e6f1c8 l2tp_session_find_nth +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x4e6ce7c3 l2tp_session_set_header_len +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x61182d27 l2tp_tunnel_delete +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x6512acc0 l2tp_session_create +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x6c52f80f l2tp_tunnel_closeall +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x90aeac6f l2tp_session_free +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x975aa09e l2tp_session_delete +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xa31ca0d2 l2tp_session_find +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xa7a5dffb l2tp_tunnel_find_nth +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xc063f64d l2tp_tunnel_find +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xd48d6d69 l2tp_session_find_by_ifname +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xd61ff55e __l2tp_session_unhash +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xffd82946 l2tp_tunnel_create +EXPORT_SYMBOL_GPL net/l2tp/l2tp_netlink 0x337f2432 l2tp_nl_unregister_ops +EXPORT_SYMBOL_GPL net/l2tp/l2tp_netlink 0x6bfcdba3 l2tp_nl_register_ops +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x1052c17f ieee80211_remain_on_channel_expired +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x11e1f72f ieee80211_set_key_rx_seq +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x1f216d2c ieee80211_set_key_tx_seq +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x47108200 ieee80211_ave_rssi +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x58a151ae ieee80211_remove_key +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x5c8f2dec ieee80211_iterate_stations_atomic +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x5ecaf9db ieee80211_napi_add +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x5f0732de ieee80211_vif_to_wdev +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x6df947c6 ieee80211_request_smps +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x81ddc680 ieee80211_iterate_active_interfaces_rtnl +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x82b4fc56 ieee80211_find_sta_by_ifaddr +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x93219677 ieee80211_iterate_interfaces +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x9858edb0 ieee80211_gtk_rekey_add +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x9a34a768 ieee80211_resume_disconnect +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xa0f07452 ieee80211_iterate_active_interfaces_atomic +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xa6640e17 wdev_to_ieee80211_vif +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xaca565d7 ieee80211_iter_chan_contexts_atomic +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xc0e05199 ieee80211_ready_on_channel +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xc638aa9d ieee80211_gtk_rekey_notify +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x0db2713c ip_set_get_byname +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x2134dbb5 ip_set_get_ip_port +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x27336c5a ip_set_add +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x3824d8a0 ip_set_get_ip4_port +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x397f6231 ip_set_free +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x436ffe41 ip_set_type_register +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x47530115 ip_set_type_unregister +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x47e2c237 ip_set_put_byindex +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x4b8cc79b ip_set_test +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x4d700250 ip_set_name_byindex +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x7924b6de ip_set_hostmask_map +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x7df1f5ef ip_set_get_extensions +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x81cd5ff5 ip_set_del +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 0xa2d623f3 ip_set_range_to_cidr +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xa5f803ae ip_set_put_extensions +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xa7733ac9 ip_set_nfnl_get_byindex +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xc96c6ea9 ip_set_nfnl_put +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xcc001bd9 ip_set_extensions +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xd8f25f98 ip_set_elem_len +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xf1520b01 ip_set_get_ip6_port +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xf3b4d4ae ip_set_alloc +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0x6c5e9f26 unregister_ip_vs_pe +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0x7d324d51 ip_vs_conn_in_get_proto +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0xa68370b5 register_ip_vs_pe +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0xfbc06bfc ip_vs_conn_out_get_proto +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x00e881c6 __nf_ct_kill_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x02bc1b18 nf_connlabels_replace +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x045072cd nf_ct_port_nla_policy +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x0b13da1b nf_ct_seq_offset +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x0e5f71ee nf_ct_extend_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x18da97b8 nf_conntrack_tuple_taken +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x1a70ed5a nf_ct_expect_init +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x1dddb625 nf_conntrack_l4proto_tcp6 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x248b864c nf_ct_l4proto_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x25e2ae4d nf_ct_l3proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x289c3714 nf_ct_alloc_hashtable +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x28abeacb nf_connlabel_set +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x28edd3f7 nf_ct_helper_expectfn_find_by_name +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x2936bab3 nf_ct_unexpect_related +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x2febd4a7 nf_conntrack_l4proto_tcp4 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x334850af nf_conntrack_in +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x37386cac nf_conntrack_hash_rnd +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x39c74586 nf_ct_l3protos +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3d01b87d nf_conntrack_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3f5b1415 nf_ct_port_nlattr_to_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3fea42c7 nf_ct_get_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x411cbd99 nf_conntrack_alter_reply +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x460c7da0 __nf_ct_l4proto_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x4706dd52 nf_ct_deliver_cached_events +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x496335d9 nf_ct_l3proto_pernet_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x4ad4d094 __nf_conntrack_helper_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x4cac4c14 nf_ct_remove_expectations +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x4ed25e09 nf_ct_expect_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x4ed86d15 nf_conntrack_unregister_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x4efa6ae3 nf_ct_port_tuple_to_nlattr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x50d98df3 nf_ct_l4proto_pernet_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x53e1c38b nf_ct_unlink_expect_report +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x54de7524 nf_conntrack_set_hashsize +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x54dfa574 nf_ct_helper_expectfn_find_by_symbol +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x5d05fc28 nf_ct_expect_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x62813e5c nf_ct_port_nlattr_tuple_size +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x636e3619 nf_connlabel_match +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x658974d7 nf_ct_l3proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x668080cc nf_ct_l4proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x66a10097 nf_ct_l3proto_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x693c3961 nf_ct_helper_hash +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6e224a7a need_conntrack +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6eb58098 seq_print_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x71f4c3c8 nf_ct_delete +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x722dd8e4 nf_conntrack_free +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x78f9b710 nf_ct_l3proto_try_module_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x7afc5334 nf_conntrack_l3proto_generic +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x7c0fb296 nf_ct_l3proto_pernet_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x7e8def50 nf_conntrack_helper_try_module_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8175b888 nf_conntrack_register_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x82a0978e nfnetlink_parse_nat_setup_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8466c116 nf_ct_tmpl_free +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x854a6209 nf_ct_seqadj_set +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8a66c4fc nf_conntrack_expect_lock +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8becaff2 nf_ct_helper_expectfn_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8dd36fdc nf_ct_seq_adjust +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8ffe7e89 nf_conntrack_htable_size +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x90ff6c9f nf_ct_invert_tuplepr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x91f163df nf_conntrack_l4proto_udp6 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x941f3755 nf_conntrack_hash_check_insert +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x949f10af nf_ct_expect_register_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa1b9e331 nf_conntrack_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa3c7015d nf_conntrack_l4proto_udp4 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa4a716bf nf_ct_l4proto_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xaaae6f01 __nf_ct_try_assign_helper +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xab3d1f95 nf_ct_untracked_status_or +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xab54dca3 nf_ct_helper_expectfn_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xad1bb027 nf_ct_free_hashtable +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xadf1a0d9 nf_ct_timeout_find_get_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xae5711a1 nf_ct_invert_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb1004e49 nf_ct_expect_unregister_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb602c57e nf_ct_l3proto_module_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb6f078ab nf_ct_get_tuplepr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb793bdb9 __nf_ct_expect_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xbf0aec92 nf_ct_expect_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc18ac88d nf_ct_expect_hsize +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc22b9cab nf_ct_helper_log +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc38e6015 nf_conntrack_helper_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc3df2057 nf_ct_iterate_cleanup +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc40f284c nf_ct_helper_hsize +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc5362946 nf_ct_tcp_seqadj_set +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc990339e nf_ct_seqadj_init +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xcfcbc453 __nf_conntrack_confirm +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd17acd9b nf_ct_helper_ext_add +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xdb36a8e2 nf_ct_timeout_put_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xe4f3afb0 nf_conntrack_helper_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xe833a498 __nf_ct_refresh_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xee2026f5 nf_ct_tmpl_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xee239f5f nf_ct_l4proto_pernet_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf38bcdf3 nf_conntrack_max +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf55b1f1c nf_ct_expect_related_report +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf6b14380 nf_ct_l4proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xfab17465 nf_ct_extend_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xff40b965 nf_conntrack_locks +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_amanda 0x371a4840 nf_nat_amanda_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_broadcast 0xd4e781a6 nf_conntrack_broadcast_help +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_ftp 0x18321576 nf_nat_ftp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x1e232b93 nat_t120_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x5769cb10 nat_h245_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x6a093acc nat_callforwarding_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x72da3626 get_h225_addr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x98ab31ff nat_q931_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x9ed4b447 set_h225_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xa37f6d85 set_ras_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xac298ddd nat_rtp_rtcp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xbadc615e set_h245_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xf1767891 set_sig_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_irc 0xf21e50a3 nf_nat_irc_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0x76033770 nf_nat_pptp_hook_inbound +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0x7c22b749 nf_nat_pptp_hook_expectfn +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0xcefbacfe nf_nat_pptp_hook_outbound +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0xf43f7fd6 nf_nat_pptp_hook_exp_gre +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_proto_gre 0x26a9d04e nf_ct_gre_keymap_add +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_proto_gre 0xfcfffb1b nf_ct_gre_keymap_destroy +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x034574e2 ct_sip_parse_address_param +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x4bd82ade ct_sip_get_header +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x4fadddcb ct_sip_get_sdp_header +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x669e2dc6 nf_nat_sip_hooks +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xae92bc29 ct_sip_parse_request +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xbeb848d8 ct_sip_parse_numerical_param +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xf5ff91bb ct_sip_parse_header_uri +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_snmp 0x6bf43ada nf_nat_snmp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_tftp 0x6a258b2e nf_nat_tftp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_log_common 0x0f66dcb7 nf_log_dump_udp_header +EXPORT_SYMBOL_GPL net/netfilter/nf_log_common 0xa71673ce nf_log_dump_sk_uid_gid +EXPORT_SYMBOL_GPL net/netfilter/nf_log_common 0xb8067945 nf_log_dump_packet_common +EXPORT_SYMBOL_GPL net/netfilter/nf_log_common 0xc4a4d83e nf_log_dump_tcp_header +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x08699781 nf_nat_packet +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x0d9bae4b nf_nat_l4proto_nlattr_to_range +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x131f636c nf_nat_l4proto_in_range +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x26e53118 nf_nat_l4proto_unique_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x33016733 nf_nat_l3proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x65d401f5 __nf_nat_l4proto_find +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x7bdb8902 nf_ct_nat_ext_add +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xa27987f5 nf_nat_l4proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xbbe05826 nf_nat_l3proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xcc7f56cc nf_nat_alloc_null_binding +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xd813d3de nf_nat_l4proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_nat_redirect 0x748f5029 nf_nat_redirect_ipv4 +EXPORT_SYMBOL_GPL net/netfilter/nf_nat_redirect 0xf4130f8f nf_nat_redirect_ipv6 +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x11a006b5 synproxy_check_timestamp_cookie +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x43bef3b3 synproxy_tstamp_adjust +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x5f339439 synproxy_build_options +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x90298227 synproxy_init_timestamp_cookie +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0xb42e336a synproxy_options_size +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0xd270686f synproxy_parse_options +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0xef7db50c synproxy_net_id +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x03d6ab0e nft_register_basechain +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x05c89a65 nft_register_expr +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x06dce8ed nft_register_chain_type +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x1e6b75a3 nft_parse_register +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x314a88f5 nft_set_gc_batch_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x3abf39ad nft_register_afinfo +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x401a78a0 nft_unregister_basechain +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x45613d16 nft_set_elem_destroy +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x528dd633 nft_dump_register +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x5778f241 nft_chain_validate_hooks +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x5fb2cde5 nft_unregister_expr +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x68088bee nft_data_uninit +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x7fc6bb0c nft_validate_register_store +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x8d94a2c8 nft_data_init +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x98d92e84 nft_do_chain +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xa0571946 nft_register_set +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xaa8e5cd9 nft_data_dump +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xbf63bb61 nft_set_gc_batch_release +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xc4e423a0 nft_unregister_chain_type +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xcf03e214 nft_chain_validate_dependency +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xd10ac760 nft_unregister_afinfo +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xd6760cec nft_unregister_set +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xe09dada2 nft_set_ext_types +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xed33c632 nft_validate_register_load +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x007bb31b nfnetlink_subsys_register +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x10565ca5 nfnetlink_unicast +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x17cb88c1 nfnetlink_alloc_skb +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x5ce3b588 nfnl_lock +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x693ddc1e nfnetlink_subsys_unregister +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x699cd6d0 nfnetlink_has_listeners +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x8336ffe4 nfnetlink_send +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x8ec344e4 nfnetlink_set_err +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xdb065657 nfnl_unlock +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0x0fc51cb0 nfnl_acct_update +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0x21f6bba6 nfnl_acct_find_get +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0xbecf5d14 nfnl_acct_put +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0xe35f2eff nfnl_acct_overquota +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_log 0xe11964b4 nfulnl_log_packet +EXPORT_SYMBOL_GPL net/netfilter/nft_masq 0x2682d6de nft_masq_init +EXPORT_SYMBOL_GPL net/netfilter/nft_masq 0xc691aa6c nft_masq_dump +EXPORT_SYMBOL_GPL net/netfilter/nft_masq 0xdfb60d45 nft_masq_validate +EXPORT_SYMBOL_GPL net/netfilter/nft_masq 0xe3b8ea21 nft_masq_policy +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0x269c67c2 nft_meta_set_eval +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0x3988ccd8 nft_meta_get_init +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0x920e03fc nft_meta_get_eval +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0xb80e8358 nft_meta_policy +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0xce3d197c nft_meta_set_dump +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0xecf8572f nft_meta_get_dump +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0xf7a276c4 nft_meta_set_init +EXPORT_SYMBOL_GPL net/netfilter/nft_redir 0x2eec1565 nft_redir_dump +EXPORT_SYMBOL_GPL net/netfilter/nft_redir 0xa5be1e1e nft_redir_policy +EXPORT_SYMBOL_GPL net/netfilter/nft_redir 0xb932cc23 nft_redir_validate +EXPORT_SYMBOL_GPL net/netfilter/nft_redir 0xf9468e5d nft_redir_init +EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0x0d09b37d nft_reject_dump +EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0x2857f648 nft_reject_init +EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0xa2db3c7f nft_reject_policy +EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0xddf15889 nft_reject_icmp_code +EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0xe8cdab4e nft_reject_icmpv6_code +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x089b823d xt_unregister_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x0c8c25b3 xt_compat_target_to_user +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x117378ac xt_hook_unlink +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x161d1417 xt_compat_unlock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x301c578d xt_compat_target_from_user +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x40728a63 xt_find_revision +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x4b78f907 xt_compat_match_offset +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x5b087199 xt_register_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x5f82f1f7 xt_compat_flush_offsets +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x691a6d69 xt_compat_calc_jump +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x807d2b2c xt_recseq +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x9bb3f2df xt_hook_link +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x9d268b50 xt_compat_match_to_user +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xa40fb209 xt_check_target +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xbbddef6c xt_request_find_target +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xbc7cd266 xt_table_unlock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xc10af312 xt_request_find_match +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xc2ca26a9 xt_find_table_lock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xc897b919 xt_replace_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xcb2b19b1 xt_compat_target_offset +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xd6e80927 xt_compat_match_from_user +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xd8588514 xt_proto_init +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xe0b4971b xt_compat_lock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xec24fd82 xt_compat_add_offset +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xf99feb12 xt_proto_fini +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xff93ee53 xt_check_match +EXPORT_SYMBOL_GPL net/netfilter/xt_RATEEST 0x00204983 xt_rateest_put +EXPORT_SYMBOL_GPL net/netfilter/xt_RATEEST 0x482b6a12 xt_rateest_lookup +EXPORT_SYMBOL_GPL net/nfc/nci/nci 0x3808fcb4 nci_spi_send +EXPORT_SYMBOL_GPL net/nfc/nci/nci 0xa413cde6 nci_spi_allocate_spi +EXPORT_SYMBOL_GPL net/nfc/nci/nci 0xbbe5fd00 nci_spi_read +EXPORT_SYMBOL_GPL net/nfc/nci/nci_uart 0x4abd0f43 nci_uart_register +EXPORT_SYMBOL_GPL net/nfc/nci/nci_uart 0x72c2c7f8 nci_uart_set_config +EXPORT_SYMBOL_GPL net/nfc/nci/nci_uart 0xb92cb5f7 nci_uart_unregister +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x13bf1fb2 ovs_vport_receive +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x82eda6b2 ovs_tunnel_get_egress_info +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0xac515271 ovs_vport_deferred_free +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0xacb5423c ovs_vport_alloc +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0xc7b2443d ovs_vport_free +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0xccf5a9f7 ovs_vport_ops_unregister +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0xd9672626 ovs_vport_ops_register +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0xda83411d ovs_net_id +EXPORT_SYMBOL_GPL net/rds/rds 0x00a467af rds_wq +EXPORT_SYMBOL_GPL net/rds/rds 0x04eecd07 rds_trans_register +EXPORT_SYMBOL_GPL net/rds/rds 0x17e1d518 rds_conn_create_outgoing +EXPORT_SYMBOL_GPL net/rds/rds 0x20c22347 rds_send_drop_acked +EXPORT_SYMBOL_GPL net/rds/rds 0x281ce9d7 rds_info_register_func +EXPORT_SYMBOL_GPL net/rds/rds 0x2c5c5514 rds_message_add_rdma_dest_extension +EXPORT_SYMBOL_GPL net/rds/rds 0x3101936e rds_message_add_extension +EXPORT_SYMBOL_GPL net/rds/rds 0x328a70d6 rds_conn_connect_if_down +EXPORT_SYMBOL_GPL net/rds/rds 0x36a9c3ed rds_conn_create +EXPORT_SYMBOL_GPL net/rds/rds 0x3b4fc0fc rds_page_remainder_alloc +EXPORT_SYMBOL_GPL net/rds/rds 0x3c8b8ea8 rds_page_copy_user +EXPORT_SYMBOL_GPL net/rds/rds 0x45a4710d rds_rdma_send_complete +EXPORT_SYMBOL_GPL net/rds/rds 0x50cbe7b3 rds_stats +EXPORT_SYMBOL_GPL net/rds/rds 0x5709d8bd rds_conn_drop +EXPORT_SYMBOL_GPL net/rds/rds 0x5f0c4cf5 rds_inc_init +EXPORT_SYMBOL_GPL net/rds/rds 0x63c6b44b rds_atomic_send_complete +EXPORT_SYMBOL_GPL net/rds/rds 0x66eaf605 rds_message_unmapped +EXPORT_SYMBOL_GPL net/rds/rds 0x69f660bb rds_conn_destroy +EXPORT_SYMBOL_GPL net/rds/rds 0x6ac3863a rds_cong_map_updated +EXPORT_SYMBOL_GPL net/rds/rds 0x6c96057a rds_message_put +EXPORT_SYMBOL_GPL net/rds/rds 0x73aac73d rds_message_populate_header +EXPORT_SYMBOL_GPL net/rds/rds 0x7bc62829 rds_stats_info_copy +EXPORT_SYMBOL_GPL net/rds/rds 0x7c87ee4c rds_inc_put +EXPORT_SYMBOL_GPL net/rds/rds 0x8284379f rds_trans_unregister +EXPORT_SYMBOL_GPL net/rds/rds 0x8a893a77 rds_recv_incoming +EXPORT_SYMBOL_GPL net/rds/rds 0x9f4b3f7b rds_for_each_conn_info +EXPORT_SYMBOL_GPL net/rds/rds 0xb5e4d4b8 rds_message_addref +EXPORT_SYMBOL_GPL net/rds/rds 0xba3d5087 rds_info_deregister_func +EXPORT_SYMBOL_GPL net/rds/rds 0xc2dab779 rds_info_copy +EXPORT_SYMBOL_GPL net/rds/rds 0xc6f15e1e rds_connect_complete +EXPORT_SYMBOL_GPL net/rds/rds 0xe06ccdc0 rds_send_get_message +EXPORT_SYMBOL_GPL net/rxrpc/af-rxrpc 0x4f004c34 rxrpc_unregister_security +EXPORT_SYMBOL_GPL net/rxrpc/af-rxrpc 0x99112704 rxrpc_register_security +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x00c52ef5 g_make_token_header +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x17a7476e gss_mech_unregister +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x331d1028 svcauth_gss_flavor +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x8d1a827e svcauth_gss_register_pseudoflavor +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x9f1c12d8 gss_mech_register +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xb5dea7ef g_token_size +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xf8b2ff6e g_verify_token_header +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x013b00ac rpcauth_stringify_acceptor +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x03958675 auth_domain_lookup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x03bb1335 svc_print_addr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x045834e9 rpcauth_get_pseudoflavor +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 0x08547428 xprt_adjust_cwnd +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x09101435 rpcauth_init_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0a6c9004 rpc_print_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0a92907e rpc_find_or_alloc_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0d9e13ed xprt_free +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0da06165 rpc_wake_up +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0e192e31 svc_exit_thread +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0eacfc00 xdr_read_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0f668ba9 svc_auth_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1154d2fd rpc_init_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x122ba614 xdr_init_encode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x12434923 rpc_clone_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x12be33b2 svc_sock_update_bufs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x15751da0 rpc_clnt_swap_deactivate +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x16071760 xdr_commit_encode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1771d608 xprt_wait_for_buffer_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x177c01ec rpc_wake_up_status +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x179c7525 rpc_call_null +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x199b3079 rpc_sleep_on_priority +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x19f520bd rpc_mkpipe_data +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1ac6f91c rpcauth_lookup_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1ceaea37 xprt_release_rqst_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1ebf771c xdr_decode_array2 +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1f19941f rpc_remove_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1f2a9970 rpc_ntop +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1fc84aba csum_partial_copy_to_xdr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x214253d9 xprt_alloc_slot +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x22210a65 rpc_create_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2251b5f9 rpc_run_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2374e324 xprt_disconnect_done +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x23b87a83 xdr_enter_page +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x24dc76ba xdr_buf_trim +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x28d6aa61 xprt_setup_backchannel +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2919b156 xdr_decode_string_inplace +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2bd44f33 bc_svc_process +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2cfa09b2 svc_auth_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2d3b423d rpc_protocol +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2eec63c9 xdr_encode_netobj +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2f029842 xdr_shift_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x31a89d59 rpc_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x31ec0782 xprt_release_xprt_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x33a40397 rpc_lookup_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x33ef659f svc_xprt_enqueue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x36add50b rpc_add_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x387e1639 rpc_pipefs_notifier_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3ae17cf3 cache_register_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3ead11f8 rpc_restart_call_prepare +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x40032ef5 svc_create_pooled +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x40ae7c3b rpc_net_ns +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x41ee602a xdr_decode_word +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x42b5a90b rpc_put_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x44fc02cd unix_domain_find +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x466ff55d svc_drop +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4671b7f3 svcauth_unix_set_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x478cb485 svc_process +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4aee3861 rpc_bind_new_program +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4b590c1a xprt_write_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4da83d6d rpc_setbufsize +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x50830077 rpc_malloc +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x52cac5e7 xprt_set_retrans_timeout_def +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x53445f68 nlm_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x540a7ef8 rpc_count_iostats_metrics +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x54a47091 svc_addsock +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x559c35c1 svc_reg_xprt_class +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x566a4c40 auth_domain_put +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x57403559 xdr_encode_word +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x57eabae9 svc_rpcb_setup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x59050095 xprt_register_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5b508c0f svc_create_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5bbd5296 xdr_terminate_string +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5bce0152 xdr_buf_read_netobj +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5be8cff2 rpc_count_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5c65789e svc_close_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x605b6987 rpcauth_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6341373e rpc_release_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6437a7c7 xdr_buf_subsegment +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x64c7afb1 rpc_call_start +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x65ca6fd0 svcauth_unix_purge +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x675f9fc5 xprt_alloc +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6b927669 xdr_reserve_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6c125127 write_bytes_to_xdr_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6dbbfa45 auth_domain_find +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6dfc9378 xprt_lock_and_alloc_slot +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6e406082 xprt_reserve_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6e576ab6 svc_find_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6ea88c7e xprt_lookup_rqst +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x71fa908a cache_flush +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x73290c96 rpc_put_task_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x73908951 xdr_stream_pos +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7517105f svc_xprt_copy_addrs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x76a61c50 sunrpc_cache_unregister_pipefs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x784c1c8d xprt_unregister_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7b26c36e xprt_release_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7bd0f174 sunrpc_cache_update +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7de53067 rpc_init_rtt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7f0b430f svc_xprt_init +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7fa54c66 xdr_write_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8049f24b svc_xprt_names +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x808c7348 svc_proc_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x80951b28 rpcauth_get_gssinfo +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x82abb200 rpc_pton +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x82c20e97 rpc_proc_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x843175eb rpc_mkpipe_dentry +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x863b209b rpcauth_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8899f434 rpcauth_generic_bind_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8a824292 sunrpc_init_cache_detail +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x915ba379 rpc_uaddr2sockaddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x92ba3f73 xdr_partial_copy_from_skb +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9742fd8a rpc_task_reset_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x98b75d64 rpcauth_list_flavors +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x99b07545 xprt_complete_rqst +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9ab1ad19 svc_destroy +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9ef449af rpc_init_priority_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa19289da rpc_exit +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa22b4f76 rpcauth_key_timeout_notify +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa2fe6df7 svc_recv +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa46fbf08 xdr_buf_from_iov +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa4ec9582 rpc_call_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa6e068dc rpc_killall_tasks +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa73f5aa3 svc_set_num_threads +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa80f3688 xdr_skb_read_bits +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa8ca50a1 svc_max_payload +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa8d9814f put_rpccred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xaa645cb8 cache_destroy_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xaaee9c07 rpc_d_lookup_sb +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xacb8c3de rpc_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xad1e83d7 rpc_peeraddr2str +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xaf5bf6ef nfs_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb22e9488 rpc_restart_call +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb303d5ec rpc_destroy_pipe_data +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb3a4b171 rpc_rmdir +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb417ed7f sunrpc_cache_register_pipefs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb4542f61 rpcauth_init_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb4af7def rpc_get_sb_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb51a3724 rpc_pipefs_notifier_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb5485f51 rpc_pipe_generic_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb7fc596e svc_authenticate +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb941c215 rpc_force_rebind +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbb54002b rpc_max_payload +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbc343988 rpc_call_sync +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbf99554a __rpc_wait_for_completion_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbf9d1b96 nfsd_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc0180955 rpc_proc_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc12435e3 rpc_calc_rto +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc166c47f svc_unreg_xprt_class +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc1e23046 rpc_lookup_machine_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc29bbb77 xprt_set_retrans_timeout_rtt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc3880471 xdr_decode_netobj +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc4111e6b sunrpc_cache_lookup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc59cc7a9 svc_set_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc8da8640 rpc_delay +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc8e96dea qword_addhex +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc96d1cbb xdr_inline_decode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xca6d625f svc_seq_show +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xca8d6636 rpc_wake_up_next +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcc6f6b33 svc_alien_sock +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcd48817f cache_unregister_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcdf1bcc1 cache_create_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcee467f3 xprt_load_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcf7e1544 rpc_unlink +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd245fde7 rpc_wake_up_first +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd331107a rpc_queue_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd4f15134 xdr_encode_array2 +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd579294b xdr_init_decode_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd63e735e read_bytes_from_xdr_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd7f3c3a8 rpc_free_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd85f9906 svc_shutdown_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd96b8365 xdr_set_scratch_buffer +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd9bd7f6d rpcauth_destroy_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdb030776 rpc_put_sb_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdd61e3bd svc_bind +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdd6b720e rpc_init_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xddba3438 _copy_from_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xddcbc21f sunrpc_cache_pipe_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe1ac2bb8 sunrpc_net_id +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe1b7812b svc_prepare_thread +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe359dcc8 rpcauth_lookupcred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe4b0c734 rpc_clnt_swap_activate +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe50a4c32 gssd_running +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe5919cb1 xdr_encode_opaque +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe5b012d3 rpc_clone_client_set_auth +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe704a02f xprt_destroy_backchannel +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe72e334d rpc_peeraddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe7a5588f rpc_alloc_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe963d139 svc_proc_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe97f4ce5 qword_get +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xea2f262d xdr_inline_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xeb0253dc cache_purge +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xeb671a57 rpcauth_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xed3b7fd2 sunrpc_destroy_cache_detail +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 0xef0c21e4 rpc_destroy_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xef5d3795 rpc_shutdown_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xef8805cd xdr_process_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf0801916 svc_xprt_put +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf14d3690 rpc_wake_up_queued_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf1d3421d rpc_lookup_cred_nonblock +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf29adc39 rpc_init_pipe_dir_head +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf2eb29e6 rpcb_getport_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf370b368 rpc_switch_client_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf3d3457c svc_wake_up +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf50a729e svc_reserve +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf6c79e93 rpc_get_timeout +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf7fbb1f5 svc_rpcb_cleanup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf8f9ca31 xprt_reserve_xprt_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf9bbfdc9 rpc_sleep_on +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf9d1164c rpc_free +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfbc53015 svc_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfd0a4270 rpc_localaddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfd36da35 xdr_init_decode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfde52ca4 cache_check +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfee060cf xprt_wake_pending_tasks +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xff7eb8a4 rpcauth_cred_key_to_expire +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x0c79d5ef vm_sockets_get_local_cid +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x0d171bf1 vsock_find_bound_socket +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x15c0c57c vsock_addr_init +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x2663cb64 vsock_addr_equals_addr +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x59d943c8 vsock_addr_cast +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x6060f0a3 vsock_find_connected_socket +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x65b6e033 __vsock_core_init +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x6838aa00 vsock_remove_bound +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x751ff010 vsock_addr_unbind +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x7f730c80 vsock_core_exit +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x876df80d vsock_enqueue_accept +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x95d7156a vsock_remove_pending +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x970b77bc vsock_pending_work +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x99274f47 vsock_add_pending +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x99d16df8 vsock_remove_connected +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xa2435bca vsock_insert_connected +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xbd0f699d vsock_addr_bound +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xc37d353f __vsock_create +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xd6483b56 vsock_stream_has_data +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xd95ac116 vsock_addr_validate +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xf3adae1e vsock_stream_has_space +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xfc80af39 vsock_for_each_connected_socket +EXPORT_SYMBOL_GPL net/wimax/wimax 0x0818162d wimax_state_get +EXPORT_SYMBOL_GPL net/wimax/wimax 0x17a109b1 wimax_msg_alloc +EXPORT_SYMBOL_GPL net/wimax/wimax 0x236e3347 wimax_msg_data_len +EXPORT_SYMBOL_GPL net/wimax/wimax 0x3e1c9ffb wimax_report_rfkill_sw +EXPORT_SYMBOL_GPL net/wimax/wimax 0x5a911d50 wimax_msg_send +EXPORT_SYMBOL_GPL net/wimax/wimax 0x63725361 wimax_msg +EXPORT_SYMBOL_GPL net/wimax/wimax 0x75b55331 wimax_dev_rm +EXPORT_SYMBOL_GPL net/wimax/wimax 0x7d775b5e wimax_dev_add +EXPORT_SYMBOL_GPL net/wimax/wimax 0x9390aaa3 wimax_state_change +EXPORT_SYMBOL_GPL net/wimax/wimax 0xb66e3b8d wimax_msg_data +EXPORT_SYMBOL_GPL net/wimax/wimax 0xc84f38ae wimax_dev_init +EXPORT_SYMBOL_GPL net/wimax/wimax 0xdd468601 wimax_report_rfkill_hw +EXPORT_SYMBOL_GPL net/wimax/wimax 0xeda49325 wimax_msg_len +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x16be654e cfg80211_wext_giwmode +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x29eded28 cfg80211_wext_siwmode +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x2ed0d607 cfg80211_wext_giwfrag +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x4a41c05f cfg80211_wext_siwscan +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x57a6d432 cfg80211_shutdown_all_interfaces +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x5dd9584c cfg80211_wext_giwrange +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x8736f97d cfg80211_wext_siwfrag +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xa5a4cd89 cfg80211_wext_siwrts +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xd2fc6099 cfg80211_wext_giwretry +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xd3897373 cfg80211_wext_giwname +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xd502e037 cfg80211_vendor_cmd_reply +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xf6071c73 cfg80211_wext_giwscan +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xff25e465 cfg80211_wext_giwrts +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 0x3bf471d7 xfrm_calg_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x47b34e60 xfrm_ealg_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x60b73277 xfrm_aead_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x7a8ca627 xfrm_count_pfkey_enc_supported +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x834ba96d xfrm_aalg_get_byid +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xa6e66685 xfrm_aalg_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xaa762fe2 xfrm_aalg_get_byidx +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xad1b60ed xfrm_calg_get_byid +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xdbfc35c8 xfrm_ealg_get_byidx +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xdfea3a6d xfrm_ealg_get_byid +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0x4df60b79 ipcomp_destroy +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0x6e2c0e03 ipcomp_input +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0xb4b56ba7 ipcomp_init_state +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0xd656f385 ipcomp_output +EXPORT_SYMBOL_GPL sound/aoa/core/snd-aoa 0x24eb9ec3 aoa_snd_ctl_add +EXPORT_SYMBOL_GPL sound/aoa/core/snd-aoa 0x347609b5 aoa_snd_device_new +EXPORT_SYMBOL_GPL sound/aoa/core/snd-aoa 0x47df2f09 aoa_fabric_register +EXPORT_SYMBOL_GPL sound/aoa/core/snd-aoa 0x9ce5a8b8 aoa_fabric_unregister +EXPORT_SYMBOL_GPL sound/aoa/core/snd-aoa 0xa135cb5a pmf_gpio_methods +EXPORT_SYMBOL_GPL sound/aoa/core/snd-aoa 0xbde8f958 aoa_codec_register +EXPORT_SYMBOL_GPL sound/aoa/core/snd-aoa 0xcd3604ca aoa_fabric_unlink_codec +EXPORT_SYMBOL_GPL sound/aoa/core/snd-aoa 0xe4122f43 ftr_gpio_methods +EXPORT_SYMBOL_GPL sound/aoa/core/snd-aoa 0xefa144b4 aoa_codec_unregister +EXPORT_SYMBOL_GPL sound/aoa/core/snd-aoa 0xf3c8fe3b aoa_get_card +EXPORT_SYMBOL_GPL sound/aoa/soundbus/snd-aoa-soundbus 0x078a86fa soundbus_remove_one +EXPORT_SYMBOL_GPL sound/aoa/soundbus/snd-aoa-soundbus 0x1406e991 soundbus_add_one +EXPORT_SYMBOL_GPL sound/aoa/soundbus/snd-aoa-soundbus 0x42ef62fa soundbus_dev_put +EXPORT_SYMBOL_GPL sound/aoa/soundbus/snd-aoa-soundbus 0x5ad23b53 soundbus_register_driver +EXPORT_SYMBOL_GPL sound/aoa/soundbus/snd-aoa-soundbus 0x6f5635b0 soundbus_unregister_driver +EXPORT_SYMBOL_GPL sound/aoa/soundbus/snd-aoa-soundbus 0x77458d1b soundbus_dev_get +EXPORT_SYMBOL_GPL sound/core/seq/snd-seq-device 0x7357121f __snd_seq_driver_register +EXPORT_SYMBOL_GPL sound/core/seq/snd-seq-device 0x98e21bf5 snd_seq_driver_unregister +EXPORT_SYMBOL_GPL sound/core/snd 0x80b42467 snd_ctl_activate_id +EXPORT_SYMBOL_GPL sound/core/snd 0x9c9883b9 snd_ctl_sync_vmaster +EXPORT_SYMBOL_GPL sound/core/snd 0xca854ce0 snd_ctl_get_preferred_subdevice +EXPORT_SYMBOL_GPL sound/core/snd 0xcbf64675 snd_device_initialize +EXPORT_SYMBOL_GPL sound/core/snd 0xd7e3e6c4 snd_device_disconnect +EXPORT_SYMBOL_GPL sound/core/snd 0xea65ff1c snd_card_add_dev_attr +EXPORT_SYMBOL_GPL sound/core/snd 0xf0519821 snd_ctl_add_vmaster_hook +EXPORT_SYMBOL_GPL sound/core/snd-compress 0x1282b268 snd_compress_new +EXPORT_SYMBOL_GPL sound/core/snd-compress 0x30e1d544 snd_compress_deregister +EXPORT_SYMBOL_GPL sound/core/snd-compress 0xc2b5b42e 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 0x2157846c snd_pcm_lib_default_mmap +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x312014ec snd_pcm_stop_xrun +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x47347186 snd_pcm_stream_unlock +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x5cdb208c snd_pcm_stream_unlock_irq +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x7552c913 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 0xbb56bb17 snd_pcm_add_chmap_ctls +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0xcf8f9826 _snd_pcm_stream_lock_irqsave +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0xd698b08f snd_pcm_stream_unlock_irqrestore +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0xe6780313 snd_pcm_stream_lock_irq +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x2ab92bdf snd_dmaengine_pcm_pointer_no_residue +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x2d6778eb snd_dmaengine_pcm_trigger +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x3b3102d1 snd_dmaengine_pcm_close_release_chan +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x4c616dd6 snd_dmaengine_pcm_set_config_from_dai_data +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x5cece264 snd_dmaengine_pcm_pointer +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x7570b018 snd_dmaengine_pcm_request_channel +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x912c0841 snd_dmaengine_pcm_get_chan +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0xb5af45e9 snd_dmaengine_pcm_close +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0xbc995986 snd_dmaengine_pcm_open +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0xed8cd1b5 snd_hwparams_to_dma_slave_config +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0xee8bab35 snd_dmaengine_pcm_open_request_chan +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x040315ef snd_hdac_stream_stop +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x0a546aa6 snd_hdac_override_parm +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x0b1a0796 snd_hdac_stream_release +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x0cb73c61 snd_hdac_bus_remove_device +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x0f0030d2 snd_hdac_stream_clear +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x0f4b6399 snd_hdac_bus_exec_verb_unlocked +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x109c5691 snd_hdac_bus_update_rirb +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x134f9cd0 _snd_hdac_read_parm +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x14bc76a2 snd_hdac_read +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x1649cb60 snd_hdac_device_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x1bde4bf9 hdac_get_device_id +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x1c4267da snd_hdac_regmap_write_raw +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x1e9fd5ab snd_hdac_dsp_prepare +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x2c083e1d snd_hdac_bus_alloc_stream_pages +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x2dbeb052 snd_hdac_link_power +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x2de84003 snd_hdac_stream_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x30552b72 snd_hdac_stream_start +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x30a21d2b snd_hdac_get_connections +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x317a5acc snd_hdac_regmap_exit +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x345bf5d9 snd_hdac_stream_sync_trigger +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x39154c93 snd_hdac_regmap_read_raw +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x39a3688f snd_hdac_dsp_cleanup +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x3f871c12 snd_hdac_read_parm_uncached +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x484ffdb5 snd_hdac_bus_enter_link_reset +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x49010a75 snd_hdac_stream_cleanup +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x4c2c59e3 snd_hdac_dsp_trigger +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x5915c634 snd_hdac_power_up_pm +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x62771a60 snd_hdac_bus_exec_verb +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x63083bc3 snd_hdac_bus_init_chip +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x6528ff91 snd_hdac_bus_get_response +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x69718a0f snd_hdac_bus_exit +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x81a0d000 snd_hdac_stream_set_params +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x8620969a snd_hda_bus_type +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x8cab3006 snd_hdac_refresh_widgets +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x8e9d7f44 snd_hdac_stream_reset +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x92485150 snd_hdac_bus_free_stream_pages +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x9a8e1877 snd_array_free +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x9cb62c81 snd_hdac_bus_queue_event +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xa2accdb5 snd_hdac_device_exit +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xa384f4ad snd_hdac_bus_handle_stream_irq +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xa89a85a8 snd_hdac_regmap_add_vendor_verb +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xa9e69824 snd_hdac_device_unregister +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xad678379 snd_hdac_regmap_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xae907e26 snd_hdac_bus_exit_link_reset +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xafce580a snd_hdac_stream_sync +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xb4fa92e7 snd_hdac_get_sub_nodes +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xbe00691d snd_hdac_is_supported_format +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xbe7dd7dc snd_array_new +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xbe925c73 snd_hdac_power_down_pm +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xbec310d0 snd_hdac_stream_assign +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xbfdd9305 snd_hdac_regmap_update_raw +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xc07e4cf7 snd_hdac_bus_init_cmd_io +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xc4baa117 snd_hdac_bus_send_cmd +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xc4e1298d snd_hdac_device_register +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xc71c3663 snd_hdac_stream_timecounter_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xc88ab42f snd_hdac_make_cmd +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xcf3749af snd_hdac_power_down +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xd48e57f6 snd_hdac_bus_stop_chip +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xdd9a804a snd_hdac_calc_stream_format +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xe22fcaa3 snd_hdac_query_supported_pcm +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xe2b32ed7 snd_hdac_exec_verb +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xe4582b13 snd_hdac_bus_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xe477e56c snd_hdac_power_up +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xe73c5fe3 snd_hdac_bus_stop_cmd_io +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xea0744a0 snd_hdac_stream_setup_periods +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xf903fcc9 snd_hdac_bus_add_device +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xfec2621e snd_hdac_stream_setup +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x1e4ae188 snd_ak4113_check_rate_and_errors +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x2bf12419 snd_ak4113_create +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x511c9f12 snd_ak4113_reinit +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x76f2a619 snd_ak4113_external_rate +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x809c75ba snd_ak4113_reg_write +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x96f4fc45 snd_ak4113_build +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x001b079e snd_hda_add_new_ctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x03acfb52 snd_hda_codec_amp_update +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x05210056 snd_hda_get_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 0x068dfdd7 snd_hda_attach_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x08e8cc26 hda_codec_driver_unregister +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x092d7cc2 snd_hda_codec_setup_stream +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0a6c3df4 snd_hda_pick_pin_fixup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0cdb31a1 snd_hda_mixer_amp_switch_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0d92d3dc snd_hda_get_conn_index +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0e62b8cd azx_get_position +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0ef46d5d snd_hda_jack_tbl_get_from_tag +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0fba66d2 azx_bus_init +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1005db7b snd_hda_codec_read +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x10a1f673 azx_init_streams +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1129d4e9 snd_hda_parse_pin_defcfg +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x13d2c9cd snd_hda_apply_verbs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x14214a16 snd_hda_codec_pcm_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x148098f1 snd_hda_get_hint +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x14ff7e39 snd_hda_multi_out_analog_open +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x15014b22 azx_stop_all_streams +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x15e95d65 __snd_hda_add_vmaster +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x164ab721 snd_hda_get_bool_hint +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x19394aa2 snd_hda_jack_detect_enable +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1d7abd38 __hda_codec_driver_register +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x20e7a33c snd_hda_find_mixer_ctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x25a52f3a snd_hda_jack_set_gating_jack +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x271357b1 snd_hda_multi_out_dig_close +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x27bd20d9 snd_hda_mixer_amp_switch_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2b7982a5 snd_hda_mixer_amp_switch_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2bfb9da1 snd_hda_check_amp_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x30c2e7d1 snd_hda_override_conn_list +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x313e2411 hda_get_autocfg_input_label +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3546f06f snd_hda_codec_amp_stereo +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x36bc43f6 snd_hda_codec_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x375cacd5 snd_hda_input_mux_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x38ce402b azx_interrupt +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3c2cb606 snd_hda_jack_add_kctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3d7790ba is_jack_detectable +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x410ac053 snd_hda_create_spdif_in_ctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4132b43a snd_hda_multi_out_dig_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4281b5a6 snd_hda_add_verbs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x46995465 snd_hda_apply_pincfgs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x480e6528 snd_hda_register_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x490dde9e snd_hda_get_int_hint +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x49202636 snd_hda_jack_add_kctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x49399b30 snd_hda_add_imux_item +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4beccda3 azx_codec_configure +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4d65e71d azx_init_chip +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4f5c7b3d snd_hda_codec_pcm_new +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x57616da7 snd_hda_correct_pin_ctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5d3a26a5 azx_stop_chip +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5e353c9f snd_hda_jack_unsol_event +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x60376fd1 snd_hda_apply_fixup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x616db43a snd_hda_unlock_devices +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6205c97c snd_hda_detach_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x62562b61 snd_hda_mixer_bind_switch_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x63578228 snd_hda_mixer_amp_switch_put_beep +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x683a0d9c snd_hda_add_vmaster_hook +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6a83e52d snd_hda_bind_sw +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6b5e54e9 snd_hda_codec_new +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6d6c3438 snd_hda_create_dig_out_ctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6e92891d snd_hda_mixer_bind_switch_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7160f74d snd_hda_mixer_amp_tlv +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x72dc17f1 snd_hda_codec_amp_init_stereo +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7438d9f2 snd_hda_sync_vmaster_hook +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x76dad447 snd_hda_spdif_out_of_nid +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x787e714b snd_hda_jack_poll_all +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7b094059 snd_hda_ctl_add +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7c571109 snd_hda_get_default_vref +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7d3b6cf2 snd_hda_set_vmaster_tlv +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7de2347d snd_hda_codec_set_pincfg +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7f3999ab snd_hda_codec_load_dsp_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x809974f8 snd_hda_create_spdif_share_sw +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8138b902 snd_hda_jack_detect_state +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8161fba4 snd_hda_enable_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8487404b snd_hda_codec_amp_init +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x894683db snd_hda_mixer_amp_switch_get_beep +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8a8f5bbe snd_hda_load_patch +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8e6e415e __snd_hda_codec_cleanup_stream +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x91619199 snd_hda_mixer_bind_ctls_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x92545e31 snd_hda_get_connections +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x94af7220 snd_hda_codec_write +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x962956aa query_amp_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x969f49fe snd_hda_codec_load_dsp_trigger +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x974e0917 snd_hda_spdif_ctls_unassign +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x988701f0 snd_hda_codec_load_dsp_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x989c798b snd_hda_sequence_write +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x99348fa6 snd_hda_jack_detect_enable_callback +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9d81da95 snd_hda_codec_eapd_power_filter +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9f417752 _snd_hda_set_pin_ctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa2827d76 snd_hda_get_jack_location +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa2dd6293 azx_free_streams +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa7faf0a5 snd_hda_pin_sense +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xaa37122b snd_hda_jack_set_dirty_all +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xaa46f5bd snd_hda_add_nid +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xac3523ea azx_get_pos_posbuf +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xaf691a1f snd_hda_multi_out_dig_open +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb6c3229d snd_hda_mixer_bind_ctls_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xba0780e1 snd_hda_mixer_bind_ctls_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xba42a8f5 azx_probe_codecs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xbb7e8019 snd_hda_override_amp_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xbd9428cc snd_hda_codec_set_pin_target +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xbe0619b3 snd_hda_jack_report_sync +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xbe583bf4 snd_hda_codec_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc0f43d90 snd_hda_check_amp_list_power +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc13cd9e0 snd_hda_codec_set_power_to_all +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc35c129a snd_hda_spdif_ctls_assign +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc4cc68df snd_hda_codec_configure +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc5dbfaee snd_hda_shutup_pins +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc5f11126 azx_get_pos_lpib +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc6434ad9 snd_hda_multi_out_analog_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc652fd69 snd_hda_get_jack_connectivity +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xcb301b6e snd_hda_get_jack_type +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xcbb6d394 snd_hda_codec_update_widgets +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd127a683 snd_hda_mixer_amp_volume_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd55bd366 snd_hda_input_mux_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd5fe1226 snd_hda_bind_vol +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xdd32eb7d snd_hda_codec_get_pin_target +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xdde304ff snd_hda_mixer_amp_volume_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe118de5d snd_pcm_2_1_chmaps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe20ddb51 snd_hda_pick_fixup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe691cc88 snd_hda_codec_get_pincfg +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xeb570781 snd_hda_multi_out_dig_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xeb5d0864 snd_hda_set_power_save +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xed20de4d snd_hda_mixer_bind_tlv +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xeda3a721 snd_print_pcm_bits +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf03a5c9f snd_hda_get_pin_label +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf1634d10 snd_hda_lock_devices +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf181ef5c snd_hda_multi_out_analog_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf4d37cdd snd_hda_enum_helper_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf7b58726 snd_hda_jack_tbl_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xfa41b7fb snd_hda_mixer_amp_volume_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x01b7d410 snd_hda_gen_spec_init +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x1975d98e snd_hda_gen_add_kctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x2b9a2477 snd_hda_gen_mic_autoswitch +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x4096a43f snd_hda_gen_build_controls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x42465416 snd_hda_gen_hp_automute +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x51085587 snd_hda_activate_path +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x571db1e3 snd_hda_gen_path_power_filter +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x5c8b7094 snd_hda_get_path_idx +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x5d9d1aaf snd_hda_gen_init +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x5e3cb446 snd_hda_parse_nid_path +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x6898d8a5 snd_hda_add_new_path +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 0x8b7acba1 snd_hda_get_path_from_idx +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xa2039169 snd_hda_get_nid_path +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xa50b3886 snd_hda_gen_update_outputs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xb17a5604 snd_hda_gen_fix_pin_power +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xc6bb4a66 snd_hda_gen_parse_auto_config +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xc8cd0053 snd_hda_gen_free +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xcaa37e4e snd_hda_gen_build_pcms +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xd3dc5d08 snd_hda_gen_stream_pm +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xeae82492 snd_hda_gen_check_power_status +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xeca912b6 snd_hda_gen_line_automute +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs4271 0x0c2fe1dd cs4271_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs4271 0x2fcba911 cs4271_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs4271 0x7d05786f cs4271_dt_ids +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42l51 0x0bd840ab cs42l51_regmap +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42l51 0x202b99fe cs42l51_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42l51 0x375ad98c cs42l51_of_match +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0x0245c4f2 cs42xx8_of_match +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0x2acd74fc cs42xx8_pm +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0x56838606 cs42xx8_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0x7cac7292 cs42888_data +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0xa2b223f0 cs42xx8_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0xcd3794c9 cs42448_data +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-es8328 0xea3b1ba0 es8328_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-es8328 0xffb8e803 es8328_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm512x 0x45afd0c5 pcm512x_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm512x 0x5b8c8af4 pcm512x_pm_ops +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm512x 0x8a0eb8dd pcm512x_remove +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm512x 0xe13563e1 pcm512x_regmap +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0x1d83c506 sigmadsp_reset +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0x2cafaf18 sigmadsp_setup +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0x62f2a00d sigmadsp_restrict_params +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0x9241360d sigmadsp_attach +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0xafd06747 devm_sigmadsp_init +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp-i2c 0x6e7275e9 devm_sigmadsp_init_i2c +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-ssm2602 0x3eb3d82f ssm2602_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-ssm2602 0xb5b8b870 ssm2602_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-tpa6130a2 0x098e2d80 tpa6130a2_add_controls +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-tpa6130a2 0xfbf7cc52 tpa6130a2_stereo_enable +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-ts3a227e 0xe43c589d ts3a227e_enable_jack_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8804 0x08444892 wm8804_pm +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8804 0x276f2bb1 wm8804_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8804 0x3f231b1b wm8804_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8804 0xf423227b wm8804_remove +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8903 0x347b0879 wm8903_mic_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8962 0x09665df5 wm8962_mic_detect +EXPORT_SYMBOL_GPL sound/soc/fsl/snd-soc-fsl-asrc 0xbe4b1862 fsl_asrc_platform +EXPORT_SYMBOL_GPL sound/soc/fsl/snd-soc-fsl-asrc 0xc2bea3c5 fsl_asrc_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/snd-soc-core 0x0166c374 devm_snd_soc_register_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x02af43c4 snd_soc_dai_set_tristate +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0444ca1d snd_soc_jack_add_gpiods +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x05a20a05 snd_dmaengine_pcm_prepare_slave_config +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x060b6f31 snd_soc_add_card_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x085a42fa snd_soc_get_volsw_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x096ad0ff snd_soc_card_get_kcontrol +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x09b3cecf snd_soc_set_ac97_ops_of_reset +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x09eabf55 snd_soc_get_strobe +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0d48afb0 snd_soc_put_xr_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0e5a3f81 snd_soc_set_runtime_hwparams +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x11023402 snd_soc_jack_get_type +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x14033bf4 snd_soc_suspend +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1593dcd4 snd_soc_dapm_sync +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x17308468 snd_soc_dapm_get_pin_status +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x18423537 snd_soc_register_card +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1860f43b snd_soc_unregister_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x195f1599 dapm_clock_event +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1b44206e snd_soc_of_parse_audio_routing +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1da9c09a snd_soc_add_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1db7ec4e snd_soc_dapm_nc_pin_unlocked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1dd0d18d snd_soc_dapm_ignore_suspend +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x21a0ed25 snd_soc_put_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x24c1f1c8 soc_ac97_ops +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2541a979 snd_soc_calc_frame_size +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x265881e0 snd_soc_jack_free_gpios +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2681b737 snd_soc_bytes_info +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x28edf564 snd_soc_register_component +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2bb4476b snd_soc_put_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2d5ea2f9 snd_soc_dapm_weak_routes +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2e5294ff snd_soc_of_parse_tdm_slot +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x38e64b26 snd_soc_of_parse_card_name +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3b2b3a6e snd_soc_jack_add_zones +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3d8c1fc1 snd_soc_dapm_mixer_update_power +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x416ee7d5 snd_soc_dai_set_bclk_ratio +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x41a8b04c snd_soc_get_pcm_runtime +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x41ccea9e snd_soc_jack_report +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x436da737 snd_soc_dpcm_can_be_params +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x43d11e19 snd_soc_put_strobe +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x48286094 snd_soc_dapm_info_pin_switch +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4a9ac48b snd_dmaengine_pcm_unregister +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4bca6687 snd_soc_dapm_free +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4d3589b9 snd_soc_dpcm_fe_can_update +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4efb5e67 snd_soc_pm_ops +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4fdcbf7c snd_soc_set_ac97_ops +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x502f9600 dapm_mark_endpoints_dirty +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x516ee240 snd_soc_unregister_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5432abeb snd_soc_codec_set_sysclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x576a724c devm_snd_soc_register_component +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x59da6710 snd_soc_dpcm_be_get_state +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x59f9dd15 snd_soc_component_write +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5baeccf3 snd_soc_limit_volume +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5bd3df24 snd_soc_of_parse_audio_simple_widgets +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5f0bf1ae snd_soc_dpcm_be_set_state +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x60666948 snd_soc_dpcm_get_substream +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x624f0074 snd_soc_jack_add_pins +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x63eb42f8 snd_soc_jack_notifier_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x64278846 snd_soc_dai_set_fmt +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6442ed26 snd_soc_component_read +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x66cf2748 snd_soc_free_ac97_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x66e9bd24 snd_soc_remove_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6796db50 snd_soc_component_update_bits_async +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x68f2c046 snd_soc_of_get_dai_name +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6bdc8bf3 snd_soc_get_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6c9651ee snd_soc_dapm_get_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6e925512 snd_soc_bytes_tlv_callback +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6e9f9033 snd_soc_dpcm_be_can_update +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6ec64b73 snd_soc_dapm_force_enable_pin_unlocked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x718f365e snd_soc_platform_read +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x71b98289 snd_soc_dai_set_sysclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x72de1235 snd_soc_dapm_put_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x75757520 snd_soc_register_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x76be81bf snd_soc_lookup_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x79dbbac1 snd_soc_of_get_dai_link_codecs +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7bbcf169 snd_soc_component_exit_regmap +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7da961df snd_soc_dapm_force_bias_level +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7e606130 snd_soc_calc_bclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7e895268 snd_soc_info_volsw_range +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x809ca5c3 snd_soc_dai_digital_mute +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x82b23755 snd_soc_bytes_put +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x831de012 snd_soc_poweroff +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x83b3cb17 snd_soc_add_dai_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x85cd5984 snd_soc_runtime_set_dai_fmt +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x86a61e41 snd_soc_dpcm_can_be_free_stop +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x88a255e1 snd_soc_dapm_disable_pin_unlocked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x91859bf2 snd_soc_cnew +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9430df6b snd_soc_dapm_new_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x95cee272 snd_soc_dapm_disable_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9893bd6c snd_soc_dapm_add_routes +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9bb90bb1 snd_soc_component_async_complete +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9df60678 snd_soc_register_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9f665113 snd_soc_dai_set_pll +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9fb9f493 snd_soc_get_volsw_range +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa11e5953 snd_soc_jack_add_gpios +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa1ad9ac3 snd_soc_test_bits +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa6ef2872 snd_soc_card_jack_new +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa6ff4534 snd_soc_dapm_put_pin_switch +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa99b1f0b snd_soc_info_volsw_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xaaec9374 devm_snd_soc_register_card +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xacee109e snd_soc_dapm_get_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xacff8a92 snd_soc_platform_write +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb0426ce4 snd_soc_bytes_info_ext +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb2fb3038 snd_soc_debugfs_root +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb6af0218 snd_soc_dapm_force_enable_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb84f934e snd_soc_dai_set_channel_map +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb8e34b3c snd_soc_new_ac97_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb9cf9824 snd_soc_dapm_kcontrol_dapm +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xba7fd614 snd_soc_add_component_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xbb5a2437 dapm_regulator_event +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xbdab10d4 snd_soc_component_update_bits +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc0083a3b snd_soc_dai_set_tdm_slot +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc0abd9f8 snd_soc_dapm_new_widgets +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc3c60e52 snd_soc_get_dai_substream +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc5f1cf84 snd_soc_jack_notifier_unregister +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc712dac5 snd_soc_codec_set_pll +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc8269f94 snd_soc_params_to_frame_size +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc9015f2c snd_soc_of_parse_daifmt +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xcaaad991 snd_soc_add_platform_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xcc8f56e0 devm_snd_dmaengine_pcm_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xce6add5f snd_soc_read +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xcee7087a dapm_kcontrol_get_value +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xcf43637e snd_soc_info_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xcfb04a0f snd_soc_get_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd16ce077 snd_soc_component_init_regmap +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd42a4aaf snd_soc_dapm_put_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd50e3388 snd_soc_unregister_card +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd51a29b5 dpcm_be_dai_trigger +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd5c59245 snd_soc_put_volsw_range +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd7de4eb2 snd_soc_bytes_get +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xda1e2575 snd_soc_unregister_component +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xdb9c02cd snd_soc_dapm_nc_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xdbfe8ea1 snd_soc_info_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xde477148 snd_soc_platform_trigger +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xdf6031fb snd_soc_dapm_del_routes +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe4f550b8 snd_soc_component_test_bits +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe758cb79 snd_soc_write +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe94ca2d4 snd_soc_get_xr_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xeb001df7 snd_soc_resume +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xeb711ae7 snd_soc_params_to_bclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xede226cc snd_soc_update_bits +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xee00ae90 snd_soc_dapm_sync_unlocked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xee27924c snd_soc_dapm_mux_update_power +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xeee7dfbe snd_soc_dapm_enable_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xef4ef6a6 snd_soc_dapm_get_pin_switch +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xefa7b3e1 snd_soc_add_codec_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf359625c snd_soc_dapm_enable_pin_unlocked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf5479bb6 snd_soc_put_volsw_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf67e4ab5 snd_soc_dai_set_clkdiv +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf76b548b snd_dmaengine_pcm_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xfe26f991 snd_soc_info_xr_sx +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x06150b1d line6_read_serial_number +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x1bb413a4 line6_alloc_sysex_buffer +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x202a1b1b line6_midi_id +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x21cf9ea6 line6_disconnect +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x33cce86f line6_write_data +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x5e33e37e line6_init_pcm +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x65b6f01d line6_probe +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x7705c26f line6_resume +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x89d46320 line6_version_request_async +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x8b6472b5 line6_init_midi +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x8ec973cd line6_start_timer +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x906ca62c line6_read_data +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x9d4705f4 line6_send_raw_message_async +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xbeb83ec5 line6_send_sysex_message +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xc57587c2 line6_pcm_release +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xfd7d4e24 line6_pcm_acquire +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xffc044e9 line6_suspend +EXPORT_SYMBOL_GPL vmlinux 0x00029f6b sdhci_pci_o2_resume +EXPORT_SYMBOL_GPL vmlinux 0x0008ebdb pci_reset_function +EXPORT_SYMBOL_GPL vmlinux 0x006820b4 pci_write_msi_msg +EXPORT_SYMBOL_GPL vmlinux 0x0070ef14 __tracepoint_rpm_idle +EXPORT_SYMBOL_GPL vmlinux 0x00749238 usb_disable_lpm +EXPORT_SYMBOL_GPL vmlinux 0x00798708 debugfs_create_size_t +EXPORT_SYMBOL_GPL vmlinux 0x009304b6 ata_tf_from_fis +EXPORT_SYMBOL_GPL vmlinux 0x00c8bb25 inet_csk_listen_stop +EXPORT_SYMBOL_GPL vmlinux 0x00d2589e max8997_write_reg +EXPORT_SYMBOL_GPL vmlinux 0x00d7edc3 gpiod_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x00da6301 user_preparse +EXPORT_SYMBOL_GPL vmlinux 0x00ea4d1e usb_hcd_is_primary_hcd +EXPORT_SYMBOL_GPL vmlinux 0x00ebcb5d ata_id_string +EXPORT_SYMBOL_GPL vmlinux 0x00f76124 __pm_runtime_idle +EXPORT_SYMBOL_GPL vmlinux 0x01010c6d klist_add_before +EXPORT_SYMBOL_GPL vmlinux 0x011cf028 regulator_suspend_finish +EXPORT_SYMBOL_GPL vmlinux 0x013c9376 regmap_update_bits_async +EXPORT_SYMBOL_GPL vmlinux 0x0156623c fat_alloc_new_dir +EXPORT_SYMBOL_GPL vmlinux 0x0172ef35 da9052_disable_irq +EXPORT_SYMBOL_GPL vmlinux 0x017afbb8 __pm_wakeup_event +EXPORT_SYMBOL_GPL vmlinux 0x019a5a1c irq_create_mapping +EXPORT_SYMBOL_GPL vmlinux 0x01a4fb1c max8997_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0x01a77cee netlink_remove_tap +EXPORT_SYMBOL_GPL vmlinux 0x01bd6c34 isa_bridge_pcidev +EXPORT_SYMBOL_GPL vmlinux 0x01c33e69 dma_buf_kmap_atomic +EXPORT_SYMBOL_GPL vmlinux 0x01ccb64b da9055_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0x01e14f10 crypto_unregister_rng +EXPORT_SYMBOL_GPL vmlinux 0x01e1a8de kgdb_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x01f5ef13 unregister_cxl_calls +EXPORT_SYMBOL_GPL vmlinux 0x01fbceaf rio_request_dma +EXPORT_SYMBOL_GPL vmlinux 0x0209e174 cpufreq_register_governor +EXPORT_SYMBOL_GPL vmlinux 0x021ebfda btree_update +EXPORT_SYMBOL_GPL vmlinux 0x02228de8 thermal_zone_of_sensor_register +EXPORT_SYMBOL_GPL vmlinux 0x026211e2 memory_failure_queue +EXPORT_SYMBOL_GPL vmlinux 0x028852e4 usb_add_phy +EXPORT_SYMBOL_GPL vmlinux 0x02c7727d sdio_enable_func +EXPORT_SYMBOL_GPL vmlinux 0x02d97a94 regcache_sync +EXPORT_SYMBOL_GPL vmlinux 0x02df941e pcibios_scan_phb +EXPORT_SYMBOL_GPL vmlinux 0x02fea2ae rcu_note_context_switch +EXPORT_SYMBOL_GPL vmlinux 0x03016cb7 seq_open_net +EXPORT_SYMBOL_GPL vmlinux 0x030f5e48 gpiod_direction_input +EXPORT_SYMBOL_GPL vmlinux 0x031481c5 ps3_vuart_port_driver_unregister +EXPORT_SYMBOL_GPL vmlinux 0x0321cdbf of_alias_get_highest_id +EXPORT_SYMBOL_GPL vmlinux 0x03226e7d crypto_unregister_algs +EXPORT_SYMBOL_GPL vmlinux 0x033832c7 usb_amd_hang_symptom_quirk +EXPORT_SYMBOL_GPL vmlinux 0x0343bdf1 __i2c_board_list +EXPORT_SYMBOL_GPL vmlinux 0x0345ffc0 dev_pm_set_dedicated_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0x034e6678 led_classdev_unregister +EXPORT_SYMBOL_GPL vmlinux 0x035eb97d unregister_spu_syscalls +EXPORT_SYMBOL_GPL vmlinux 0x0372d28a rio_attach_device +EXPORT_SYMBOL_GPL vmlinux 0x039fd867 trace_clock_global +EXPORT_SYMBOL_GPL vmlinux 0x03a3ff5b rtc_set_time +EXPORT_SYMBOL_GPL vmlinux 0x03bca677 anon_transport_class_unregister +EXPORT_SYMBOL_GPL vmlinux 0x03c7b39b usb_string +EXPORT_SYMBOL_GPL vmlinux 0x03cf1678 platform_device_add_resources +EXPORT_SYMBOL_GPL vmlinux 0x03d390bc device_set_wakeup_capable +EXPORT_SYMBOL_GPL vmlinux 0x03e3686c ata_timing_cycle2mode +EXPORT_SYMBOL_GPL vmlinux 0x03f74382 sysfs_create_mount_point +EXPORT_SYMBOL_GPL vmlinux 0x0402cbbf preempt_notifier_inc +EXPORT_SYMBOL_GPL vmlinux 0x041527ae hrtimer_init_sleeper +EXPORT_SYMBOL_GPL vmlinux 0x041e48e0 pcibios_claim_one_bus +EXPORT_SYMBOL_GPL vmlinux 0x042100cb thermal_zone_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x04281967 key_type_asymmetric +EXPORT_SYMBOL_GPL vmlinux 0x042a5266 led_trigger_register +EXPORT_SYMBOL_GPL vmlinux 0x042c5591 mpc8xxx_spi_rx_buf_u16 +EXPORT_SYMBOL_GPL vmlinux 0x04650143 pm_runtime_autosuspend_expiration +EXPORT_SYMBOL_GPL vmlinux 0x0465a073 regmap_reg_in_ranges +EXPORT_SYMBOL_GPL vmlinux 0x0466c315 regulator_unregister +EXPORT_SYMBOL_GPL vmlinux 0x04694cae crypto_alloc_instance2 +EXPORT_SYMBOL_GPL vmlinux 0x047193c4 wait_for_stable_page +EXPORT_SYMBOL_GPL vmlinux 0x047fdeed usb_alloc_urb +EXPORT_SYMBOL_GPL vmlinux 0x0480246e rio_request_inb_pwrite +EXPORT_SYMBOL_GPL vmlinux 0x048b5f8d twl4030_audio_get_mclk +EXPORT_SYMBOL_GPL vmlinux 0x048d0f9f ps3_mmio_region_init +EXPORT_SYMBOL_GPL vmlinux 0x048ed419 spi_get_device_id +EXPORT_SYMBOL_GPL vmlinux 0x04b5549c __cookie_v6_check +EXPORT_SYMBOL_GPL vmlinux 0x04b8e86e rhashtable_init +EXPORT_SYMBOL_GPL vmlinux 0x04c4c935 usb_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x04c4f603 mpi_get_buffer +EXPORT_SYMBOL_GPL vmlinux 0x04d7af04 debugfs_create_dir +EXPORT_SYMBOL_GPL vmlinux 0x04df8fbc lzo1x_decompress_safe +EXPORT_SYMBOL_GPL vmlinux 0x052a918f devm_phy_create +EXPORT_SYMBOL_GPL vmlinux 0x053494cb tpm_get_random +EXPORT_SYMBOL_GPL vmlinux 0x054e550b kernel_halt +EXPORT_SYMBOL_GPL vmlinux 0x0564a2e2 usb_enable_intel_xhci_ports +EXPORT_SYMBOL_GPL vmlinux 0x056899f0 of_property_read_string_helper +EXPORT_SYMBOL_GPL vmlinux 0x056a96b9 pid_vnr +EXPORT_SYMBOL_GPL vmlinux 0x05805373 trace_buffer_unlock_commit_regs +EXPORT_SYMBOL_GPL vmlinux 0x058b582a vt_get_leds +EXPORT_SYMBOL_GPL vmlinux 0x0594ef75 crypto_find_alg +EXPORT_SYMBOL_GPL vmlinux 0x05965f32 pci_assign_unassigned_bridge_resources +EXPORT_SYMBOL_GPL vmlinux 0x05a521f8 led_trigger_set_default +EXPORT_SYMBOL_GPL vmlinux 0x05d1fcac device_register +EXPORT_SYMBOL_GPL vmlinux 0x05d400b5 regulator_list_voltage +EXPORT_SYMBOL_GPL vmlinux 0x05e77102 simple_attr_open +EXPORT_SYMBOL_GPL vmlinux 0x05ec4cab of_property_count_elems_of_size +EXPORT_SYMBOL_GPL vmlinux 0x05f866e6 leds_list_lock +EXPORT_SYMBOL_GPL vmlinux 0x0608711c usb_sg_cancel +EXPORT_SYMBOL_GPL vmlinux 0x060be075 devm_remove_action +EXPORT_SYMBOL_GPL vmlinux 0x06153fab ip6_sk_redirect +EXPORT_SYMBOL_GPL vmlinux 0x061dee59 btree_remove +EXPORT_SYMBOL_GPL vmlinux 0x0623a478 dev_pm_domain_detach +EXPORT_SYMBOL_GPL vmlinux 0x0626da5f od_unregister_powersave_bias_handler +EXPORT_SYMBOL_GPL vmlinux 0x062ebbb3 __mmu_notifier_invalidate_range_end +EXPORT_SYMBOL_GPL vmlinux 0x0635dd2d PageHuge +EXPORT_SYMBOL_GPL vmlinux 0x064db9a5 mark_mounts_for_expiry +EXPORT_SYMBOL_GPL vmlinux 0x06581979 inet_csk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x065eb15d bsg_setup_queue +EXPORT_SYMBOL_GPL vmlinux 0x06838475 ps3_mmio_region_create +EXPORT_SYMBOL_GPL vmlinux 0x06aa9792 platform_bus +EXPORT_SYMBOL_GPL vmlinux 0x06b8f4e4 raw_seq_open +EXPORT_SYMBOL_GPL vmlinux 0x0709ccd9 pci_num_vf +EXPORT_SYMBOL_GPL vmlinux 0x070adc66 __pci_hp_register +EXPORT_SYMBOL_GPL vmlinux 0x072677ce ata_scsi_port_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x07324b32 ipv6_stub +EXPORT_SYMBOL_GPL vmlinux 0x073867f6 pci_bus_add_device +EXPORT_SYMBOL_GPL vmlinux 0x0739f429 x509_check_signature +EXPORT_SYMBOL_GPL vmlinux 0x075c3bbf regmap_write +EXPORT_SYMBOL_GPL vmlinux 0x0762403c edac_put_sysfs_subsys +EXPORT_SYMBOL_GPL vmlinux 0x0791be14 ata_bmdma32_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x07b21f85 kdb_get_kbd_char +EXPORT_SYMBOL_GPL vmlinux 0x07b52e38 rtnl_unregister +EXPORT_SYMBOL_GPL vmlinux 0x07cbb60a md_find_rdev_nr_rcu +EXPORT_SYMBOL_GPL vmlinux 0x07f636e3 devm_regmap_init_i2c +EXPORT_SYMBOL_GPL vmlinux 0x08156773 name_to_dev_t +EXPORT_SYMBOL_GPL vmlinux 0x081be97d gpiod_direction_output_raw +EXPORT_SYMBOL_GPL vmlinux 0x086ce894 regulator_set_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x08865f9b pci_remove_root_bus +EXPORT_SYMBOL_GPL vmlinux 0x08885241 of_get_pci_domain_nr +EXPORT_SYMBOL_GPL vmlinux 0x088bfa7e cancel_work_sync +EXPORT_SYMBOL_GPL vmlinux 0x0898dba0 usb_hcd_end_port_resume +EXPORT_SYMBOL_GPL vmlinux 0x08adcfdb key_type_logon +EXPORT_SYMBOL_GPL vmlinux 0x08bc0870 compat_put_timespec +EXPORT_SYMBOL_GPL vmlinux 0x08d91c22 mm_iommu_put +EXPORT_SYMBOL_GPL vmlinux 0x08dafc8f fixed_phy_register +EXPORT_SYMBOL_GPL vmlinux 0x08f0edcb usb_unlocked_enable_lpm +EXPORT_SYMBOL_GPL vmlinux 0x08fa4f5b bmp085_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0x08fe6ebe clockevents_unbind_device +EXPORT_SYMBOL_GPL vmlinux 0x0911e024 nd_region_attribute_group +EXPORT_SYMBOL_GPL vmlinux 0x091c824a machine_power_off +EXPORT_SYMBOL_GPL vmlinux 0x091eb9b4 round_jiffies +EXPORT_SYMBOL_GPL vmlinux 0x09437748 ring_buffer_read_events_cpu +EXPORT_SYMBOL_GPL vmlinux 0x09469482 kfree_call_rcu +EXPORT_SYMBOL_GPL vmlinux 0x0946fe3c pci_generic_config_write +EXPORT_SYMBOL_GPL vmlinux 0x0952af60 fb_videomode_from_videomode +EXPORT_SYMBOL_GPL vmlinux 0x09662705 of_overlay_create +EXPORT_SYMBOL_GPL vmlinux 0x09a671a2 ping_err +EXPORT_SYMBOL_GPL vmlinux 0x09a7660c ata_dummy_port_info +EXPORT_SYMBOL_GPL vmlinux 0x09a821f8 bus_register +EXPORT_SYMBOL_GPL vmlinux 0x09b38b7f of_resolve_phandles +EXPORT_SYMBOL_GPL vmlinux 0x09be5b0d pci_disable_pasid +EXPORT_SYMBOL_GPL vmlinux 0x09ced464 crypto_alloc_pcomp +EXPORT_SYMBOL_GPL vmlinux 0x09e1525f rtnl_af_unregister +EXPORT_SYMBOL_GPL vmlinux 0x0a0bfc91 __platform_create_bundle +EXPORT_SYMBOL_GPL vmlinux 0x0a202ac7 device_property_read_u32_array +EXPORT_SYMBOL_GPL vmlinux 0x0a51ae5b virq_to_hw +EXPORT_SYMBOL_GPL vmlinux 0x0a63a8ee of_regulator_match +EXPORT_SYMBOL_GPL vmlinux 0x0a7a7955 spu_invalidate_slbs +EXPORT_SYMBOL_GPL vmlinux 0x0a9ff5b1 aead_geniv_init +EXPORT_SYMBOL_GPL vmlinux 0x0aa411db __pm_runtime_disable +EXPORT_SYMBOL_GPL vmlinux 0x0abc228d dma_buf_mmap +EXPORT_SYMBOL_GPL vmlinux 0x0ad893e1 devfreq_event_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0x0ae28b6b ip_build_and_send_pkt +EXPORT_SYMBOL_GPL vmlinux 0x0ae51625 thermal_zone_of_sensor_unregister +EXPORT_SYMBOL_GPL vmlinux 0x0aea7148 crypto_nivaead_type +EXPORT_SYMBOL_GPL vmlinux 0x0b07abe2 unshare_fs_struct +EXPORT_SYMBOL_GPL vmlinux 0x0b130e95 hwmon_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x0b3744a1 ipv4_sk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x0b425424 fat_dir_empty +EXPORT_SYMBOL_GPL vmlinux 0x0b454824 bus_find_device +EXPORT_SYMBOL_GPL vmlinux 0x0b47dd22 md_rdev_init +EXPORT_SYMBOL_GPL vmlinux 0x0b6ae7ff pci_ats_queue_depth +EXPORT_SYMBOL_GPL vmlinux 0x0b71bb6f ata_sas_port_alloc +EXPORT_SYMBOL_GPL vmlinux 0x0b7f2100 ata_sff_data_xfer_noirq +EXPORT_SYMBOL_GPL vmlinux 0x0b9de969 sata_lpm_ignore_phy_events +EXPORT_SYMBOL_GPL vmlinux 0x0bfa3a19 rcu_idle_exit +EXPORT_SYMBOL_GPL vmlinux 0x0c0c015e ring_buffer_swap_cpu +EXPORT_SYMBOL_GPL vmlinux 0x0c2abfd4 xfrm_audit_state_replay_overflow +EXPORT_SYMBOL_GPL vmlinux 0x0c2cdbf1 synchronize_sched +EXPORT_SYMBOL_GPL vmlinux 0x0c40bafc ata_pci_remove_one +EXPORT_SYMBOL_GPL vmlinux 0x0c43925c virtqueue_get_used +EXPORT_SYMBOL_GPL vmlinux 0x0c806b85 get_hwpoison_page +EXPORT_SYMBOL_GPL vmlinux 0x0c87ef98 rio_get_comptag +EXPORT_SYMBOL_GPL vmlinux 0x0caf75d9 opal_flash_erase +EXPORT_SYMBOL_GPL vmlinux 0x0cb500d5 cpuidle_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x0cb5cec1 blk_lld_busy +EXPORT_SYMBOL_GPL vmlinux 0x0cbe5862 vfs_kern_mount +EXPORT_SYMBOL_GPL vmlinux 0x0cc1e40f crypto_it_tab +EXPORT_SYMBOL_GPL vmlinux 0x0ce3ee5a mmu_kernel_ssize +EXPORT_SYMBOL_GPL vmlinux 0x0d1d0627 virtqueue_enable_cb_delayed +EXPORT_SYMBOL_GPL vmlinux 0x0d4961de nf_log_buf_open +EXPORT_SYMBOL_GPL vmlinux 0x0d57200a tasklet_hrtimer_init +EXPORT_SYMBOL_GPL vmlinux 0x0d64e6c8 to_nd_region +EXPORT_SYMBOL_GPL vmlinux 0x0d73a952 GregorianDay +EXPORT_SYMBOL_GPL vmlinux 0x0d771653 ipv4_sk_redirect +EXPORT_SYMBOL_GPL vmlinux 0x0d7d4d70 rcu_batches_completed +EXPORT_SYMBOL_GPL vmlinux 0x0d7d7b52 __get_user_pages_fast +EXPORT_SYMBOL_GPL vmlinux 0x0d9d601d pm_generic_poweroff_noirq +EXPORT_SYMBOL_GPL vmlinux 0x0d9f4706 smu_get_ofdev +EXPORT_SYMBOL_GPL vmlinux 0x0db3f33e trace_event_reg +EXPORT_SYMBOL_GPL vmlinux 0x0dcd1d2e task_active_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0x0ddb1cd7 llist_reverse_order +EXPORT_SYMBOL_GPL vmlinux 0x0de06988 cpu_first_thread_of_core +EXPORT_SYMBOL_GPL vmlinux 0x0de1e568 srcu_init_notifier_head +EXPORT_SYMBOL_GPL vmlinux 0x0df53e57 rtc_update_irq +EXPORT_SYMBOL_GPL vmlinux 0x0e12246f rio_request_outb_dbell +EXPORT_SYMBOL_GPL vmlinux 0x0e42b81d powercap_register_zone +EXPORT_SYMBOL_GPL vmlinux 0x0e6db31e usb_create_shared_hcd +EXPORT_SYMBOL_GPL vmlinux 0x0e90386e ip6_sk_dst_lookup_flow +EXPORT_SYMBOL_GPL vmlinux 0x0e95387d system_trusted_keyring +EXPORT_SYMBOL_GPL vmlinux 0x0ea0aa35 ata_host_init +EXPORT_SYMBOL_GPL vmlinux 0x0ea41f64 pm_qos_add_request +EXPORT_SYMBOL_GPL vmlinux 0x0eb3d7bf of_dma_simple_xlate +EXPORT_SYMBOL_GPL vmlinux 0x0ec14ac1 fuse_sync_release +EXPORT_SYMBOL_GPL vmlinux 0x0ecb5906 register_ftrace_function +EXPORT_SYMBOL_GPL vmlinux 0x0ecb8d04 device_get_child_node_count +EXPORT_SYMBOL_GPL vmlinux 0x0ecf823a static_key_slow_dec +EXPORT_SYMBOL_GPL vmlinux 0x0ed344c6 md_kick_rdev_from_array +EXPORT_SYMBOL_GPL vmlinux 0x0ee02436 platform_device_add +EXPORT_SYMBOL_GPL vmlinux 0x0ee2c259 blk_add_driver_data +EXPORT_SYMBOL_GPL vmlinux 0x0f0b46c0 of_phy_get +EXPORT_SYMBOL_GPL vmlinux 0x0f1fc9cf pci_walk_bus +EXPORT_SYMBOL_GPL vmlinux 0x0f336d7f rcutorture_get_gp_data +EXPORT_SYMBOL_GPL vmlinux 0x0f3482f6 reservation_object_test_signaled_rcu +EXPORT_SYMBOL_GPL vmlinux 0x0f4ff0ae wm831x_reg_unlock +EXPORT_SYMBOL_GPL vmlinux 0x0f571b8f bus_sort_breadthfirst +EXPORT_SYMBOL_GPL vmlinux 0x0f5bcc2b crypto_shash_update +EXPORT_SYMBOL_GPL vmlinux 0x0f5d350d led_trigger_unregister +EXPORT_SYMBOL_GPL vmlinux 0x0f5db22a cpufreq_generic_frequency_table_verify +EXPORT_SYMBOL_GPL vmlinux 0x0f751aea input_event_from_user +EXPORT_SYMBOL_GPL vmlinux 0x0f76a932 wb_writeout_inc +EXPORT_SYMBOL_GPL vmlinux 0x0f7740d6 debugfs_create_blob +EXPORT_SYMBOL_GPL vmlinux 0x0f7c25f4 generic_fh_to_dentry +EXPORT_SYMBOL_GPL vmlinux 0x0f7dcec7 posix_acl_default_xattr_handler +EXPORT_SYMBOL_GPL vmlinux 0x0f80fbc6 kernfs_path +EXPORT_SYMBOL_GPL vmlinux 0x0fa5e310 lp8788_update_bits +EXPORT_SYMBOL_GPL vmlinux 0x0fc1798b use_mm +EXPORT_SYMBOL_GPL vmlinux 0x0fcf265d tcp_reno_ssthresh +EXPORT_SYMBOL_GPL vmlinux 0x0fd33293 skcipher_geniv_free +EXPORT_SYMBOL_GPL vmlinux 0x0fdbd295 __page_file_mapping +EXPORT_SYMBOL_GPL vmlinux 0x0ff8aaab rio_request_outb_mbox +EXPORT_SYMBOL_GPL vmlinux 0x0ffca6d2 pwmchip_add_with_polarity +EXPORT_SYMBOL_GPL vmlinux 0x100cfe92 i2c_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x10138352 tracing_on +EXPORT_SYMBOL_GPL vmlinux 0x103309fd __mmdrop +EXPORT_SYMBOL_GPL vmlinux 0x104d0c17 debugfs_remove +EXPORT_SYMBOL_GPL vmlinux 0x108c83c2 pm_generic_thaw_noirq +EXPORT_SYMBOL_GPL vmlinux 0x108fd09c nvdimm_bus_check_dimm_count +EXPORT_SYMBOL_GPL vmlinux 0x10c49d34 devm_regulator_bulk_get +EXPORT_SYMBOL_GPL vmlinux 0x10d23e7a nd_cmd_in_size +EXPORT_SYMBOL_GPL vmlinux 0x10d9b293 devres_release_group +EXPORT_SYMBOL_GPL vmlinux 0x10dd5199 hrtimer_forward +EXPORT_SYMBOL_GPL vmlinux 0x10ecc52c usb_amd_quirk_pll_enable +EXPORT_SYMBOL_GPL vmlinux 0x10f68e9d serial8250_do_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x1114011d threads_shift +EXPORT_SYMBOL_GPL vmlinux 0x1150a79b pstore_register +EXPORT_SYMBOL_GPL vmlinux 0x1152a158 subsys_dev_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x116c3897 gpiod_set_raw_array_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x11715484 __tracepoint_mc_event +EXPORT_SYMBOL_GPL vmlinux 0x1172ce54 rtc_ktime_to_tm +EXPORT_SYMBOL_GPL vmlinux 0x117c7305 hwpoison_filter_dev_major +EXPORT_SYMBOL_GPL vmlinux 0x11d1aff8 sata_link_debounce +EXPORT_SYMBOL_GPL vmlinux 0x11d84164 regulator_list_voltage_linear_range +EXPORT_SYMBOL_GPL vmlinux 0x11e1968e regmap_get_reg_stride +EXPORT_SYMBOL_GPL vmlinux 0x11fb9168 pm_generic_resume_early +EXPORT_SYMBOL_GPL vmlinux 0x11fd84b7 device_pm_wait_for_dev +EXPORT_SYMBOL_GPL vmlinux 0x12139b02 of_gen_pool_get +EXPORT_SYMBOL_GPL vmlinux 0x12197b88 of_mpc8xxx_spi_probe +EXPORT_SYMBOL_GPL vmlinux 0x121d958a unregister_die_notifier +EXPORT_SYMBOL_GPL vmlinux 0x124f2056 crypto_get_attr_type +EXPORT_SYMBOL_GPL vmlinux 0x1268f357 resume_device_irqs +EXPORT_SYMBOL_GPL vmlinux 0x12796aeb of_dma_request_slave_channel +EXPORT_SYMBOL_GPL vmlinux 0x127c8567 flush_altivec_to_thread +EXPORT_SYMBOL_GPL vmlinux 0x12b5193c fwnode_handle_put +EXPORT_SYMBOL_GPL vmlinux 0x131a5ed7 regmap_del_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0x131db64a system_long_wq +EXPORT_SYMBOL_GPL vmlinux 0x1327555b blk_mq_free_request +EXPORT_SYMBOL_GPL vmlinux 0x13337e67 ps3_close_hv_device +EXPORT_SYMBOL_GPL vmlinux 0x1333d8b3 ps3av_video_mode2res +EXPORT_SYMBOL_GPL vmlinux 0x133c861d of_scan_bus +EXPORT_SYMBOL_GPL vmlinux 0x136209db power_supply_reg_notifier +EXPORT_SYMBOL_GPL vmlinux 0x1366ffa8 regmap_init_spi +EXPORT_SYMBOL_GPL vmlinux 0x136a4ee6 btree_init +EXPORT_SYMBOL_GPL vmlinux 0x1389b780 gpiochip_find +EXPORT_SYMBOL_GPL vmlinux 0x1398a14a of_pci_range_parser_init +EXPORT_SYMBOL_GPL vmlinux 0x13ad647f scatterwalk_bytes_sglen +EXPORT_SYMBOL_GPL vmlinux 0x13ce87e8 asn1_ber_decoder +EXPORT_SYMBOL_GPL vmlinux 0x13d258fc get_dcookie +EXPORT_SYMBOL_GPL vmlinux 0x13e5ea13 __wake_up_sync +EXPORT_SYMBOL_GPL vmlinux 0x14064a0c device_create +EXPORT_SYMBOL_GPL vmlinux 0x141138ff nd_blk_region_set_provider_data +EXPORT_SYMBOL_GPL vmlinux 0x1412f1bf sata_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x14250bc8 cpufreq_frequency_table_target +EXPORT_SYMBOL_GPL vmlinux 0x1433cbc4 __tracepoint_wbc_writepage +EXPORT_SYMBOL_GPL vmlinux 0x145c33cf sdev_evt_send_simple +EXPORT_SYMBOL_GPL vmlinux 0x146064d6 regmap_field_alloc +EXPORT_SYMBOL_GPL vmlinux 0x1483f7ec anon_inode_getfd +EXPORT_SYMBOL_GPL vmlinux 0x148a56d9 gpiochip_set_chained_irqchip +EXPORT_SYMBOL_GPL vmlinux 0x149edad4 wm831x_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x14ae2f02 find_get_pid +EXPORT_SYMBOL_GPL vmlinux 0x14d2ca7f irq_setup_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x14db00ba devfreq_event_remove_edev +EXPORT_SYMBOL_GPL vmlinux 0x14e3ce61 xfrm_audit_state_notfound +EXPORT_SYMBOL_GPL vmlinux 0x14e8ca95 regulator_set_bypass_regmap +EXPORT_SYMBOL_GPL vmlinux 0x15094fb2 crypto_unregister_pcomp +EXPORT_SYMBOL_GPL vmlinux 0x15470ad9 dma_release_channel +EXPORT_SYMBOL_GPL vmlinux 0x155edb35 devm_free_pages +EXPORT_SYMBOL_GPL vmlinux 0x15892417 async_synchronize_cookie +EXPORT_SYMBOL_GPL vmlinux 0x15a4c5c4 sdio_get_host_pm_caps +EXPORT_SYMBOL_GPL vmlinux 0x15a7dc7e ata_host_activate +EXPORT_SYMBOL_GPL vmlinux 0x15b8b44d opal_async_wait_response +EXPORT_SYMBOL_GPL vmlinux 0x15ba6ce9 adp5520_write +EXPORT_SYMBOL_GPL vmlinux 0x15c21e5e nl_table_lock +EXPORT_SYMBOL_GPL vmlinux 0x15c723a5 virtqueue_is_broken +EXPORT_SYMBOL_GPL vmlinux 0x15dd83c4 perf_pmu_migrate_context +EXPORT_SYMBOL_GPL vmlinux 0x15efd446 rcu_batches_started +EXPORT_SYMBOL_GPL vmlinux 0x16000a3c dm_device_name +EXPORT_SYMBOL_GPL vmlinux 0x16233848 adp5520_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x1650bf27 rcutorture_record_progress +EXPORT_SYMBOL_GPL vmlinux 0x165ffb91 crypto_shash_finup +EXPORT_SYMBOL_GPL vmlinux 0x16a0abd6 pci_disable_pri +EXPORT_SYMBOL_GPL vmlinux 0x16b97a60 usb_reset_configuration +EXPORT_SYMBOL_GPL vmlinux 0x16cfa8b2 need_load_eval +EXPORT_SYMBOL_GPL vmlinux 0x16e3c683 virtqueue_add_outbuf +EXPORT_SYMBOL_GPL vmlinux 0x16fb1320 regulator_set_mode +EXPORT_SYMBOL_GPL vmlinux 0x1753a32f hash_digest_size +EXPORT_SYMBOL_GPL vmlinux 0x175ab2f0 device_wakeup_enable +EXPORT_SYMBOL_GPL vmlinux 0x175af5ff tty_encode_baud_rate +EXPORT_SYMBOL_GPL vmlinux 0x177c338d twl_get_version +EXPORT_SYMBOL_GPL vmlinux 0x17839215 sata_pmp_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x17c66fbc __rio_local_read_config_16 +EXPORT_SYMBOL_GPL vmlinux 0x17e9d564 rio_add_device +EXPORT_SYMBOL_GPL vmlinux 0x17eee13a ata_bmdma_irq_clear +EXPORT_SYMBOL_GPL vmlinux 0x1803d32f usb_deregister_dev +EXPORT_SYMBOL_GPL vmlinux 0x1829b9ed hwpoison_filter_memcg +EXPORT_SYMBOL_GPL vmlinux 0x1848d7d7 __tracepoint_rpm_resume +EXPORT_SYMBOL_GPL vmlinux 0x1853653c btree_alloc +EXPORT_SYMBOL_GPL vmlinux 0x18570516 pmac_i2c_xfer +EXPORT_SYMBOL_GPL vmlinux 0x18599590 pci_find_ext_capability +EXPORT_SYMBOL_GPL vmlinux 0x1861ddb2 gpiod_get_raw_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x1863c240 pm_generic_thaw_early +EXPORT_SYMBOL_GPL vmlinux 0x1866cec2 ring_buffer_size +EXPORT_SYMBOL_GPL vmlinux 0x1878f62b edac_err_assert +EXPORT_SYMBOL_GPL vmlinux 0x1880b611 bus_get_device_klist +EXPORT_SYMBOL_GPL vmlinux 0x189e80d6 crypto_ahash_final +EXPORT_SYMBOL_GPL vmlinux 0x189f874d powernv_get_random_long +EXPORT_SYMBOL_GPL vmlinux 0x18c4375f iommu_tce_xchg +EXPORT_SYMBOL_GPL vmlinux 0x18cacec3 of_prop_next_u32 +EXPORT_SYMBOL_GPL vmlinux 0x18e40e15 led_trigger_unregister_simple +EXPORT_SYMBOL_GPL vmlinux 0x1914d0ea pm_generic_resume_noirq +EXPORT_SYMBOL_GPL vmlinux 0x1928a2ff ata_pci_bmdma_init +EXPORT_SYMBOL_GPL vmlinux 0x1930f3b0 spi_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x193d48e0 trace_current_buffer_unlock_commit +EXPORT_SYMBOL_GPL vmlinux 0x194dd5f5 pkey_algo_name +EXPORT_SYMBOL_GPL vmlinux 0x19520395 usb_hub_claim_port +EXPORT_SYMBOL_GPL vmlinux 0x196bdbc8 platform_device_put +EXPORT_SYMBOL_GPL vmlinux 0x198aa1b7 __inet_lookup_established +EXPORT_SYMBOL_GPL vmlinux 0x198c9f1c debugfs_create_regset32 +EXPORT_SYMBOL_GPL vmlinux 0x19916130 devm_power_supply_register +EXPORT_SYMBOL_GPL vmlinux 0x1991ed6c devm_pwm_get +EXPORT_SYMBOL_GPL vmlinux 0x19a304ba usb_disabled +EXPORT_SYMBOL_GPL vmlinux 0x19b384a5 hash_algo_name +EXPORT_SYMBOL_GPL vmlinux 0x19b3fca0 aead_geniv_free +EXPORT_SYMBOL_GPL vmlinux 0x19bfbb49 pci_dev_run_wake +EXPORT_SYMBOL_GPL vmlinux 0x19c36eff of_irq_to_resource +EXPORT_SYMBOL_GPL vmlinux 0x1a005753 __blkg_prfill_u64 +EXPORT_SYMBOL_GPL vmlinux 0x1a35547a ehci_setup +EXPORT_SYMBOL_GPL vmlinux 0x1a680230 devfreq_event_enable_edev +EXPORT_SYMBOL_GPL vmlinux 0x1a6d36c8 scsi_flush_work +EXPORT_SYMBOL_GPL vmlinux 0x1a8c5907 btree_insert +EXPORT_SYMBOL_GPL vmlinux 0x1a967885 cpufreq_frequency_get_table +EXPORT_SYMBOL_GPL vmlinux 0x1a9f8ef2 cpuidle_get_cpu_driver +EXPORT_SYMBOL_GPL vmlinux 0x1aa4bf83 ip6_local_out_sk +EXPORT_SYMBOL_GPL vmlinux 0x1ab79f02 virtqueue_poll +EXPORT_SYMBOL_GPL vmlinux 0x1ac717e3 ps3_os_area_get_rtc_diff +EXPORT_SYMBOL_GPL vmlinux 0x1acef7d2 pm_freezing +EXPORT_SYMBOL_GPL vmlinux 0x1af59108 uhci_check_and_reset_hc +EXPORT_SYMBOL_GPL vmlinux 0x1b67bee1 crypto_chain +EXPORT_SYMBOL_GPL vmlinux 0x1b7e21e6 tpm2_calc_ordinal_duration +EXPORT_SYMBOL_GPL vmlinux 0x1b91c038 ping_hash +EXPORT_SYMBOL_GPL vmlinux 0x1b94cb89 phy_create +EXPORT_SYMBOL_GPL vmlinux 0x1b9664d1 __destroy_context +EXPORT_SYMBOL_GPL vmlinux 0x1b9aca3f jprobe_return +EXPORT_SYMBOL_GPL vmlinux 0x1baef118 ata_sff_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x1be18bad perf_event_read_value +EXPORT_SYMBOL_GPL vmlinux 0x1c004f5e skb_to_sgvec_nomark +EXPORT_SYMBOL_GPL vmlinux 0x1c02bd31 transport_configure_device +EXPORT_SYMBOL_GPL vmlinux 0x1c19904d ping_getfrag +EXPORT_SYMBOL_GPL vmlinux 0x1c2ad10a srcu_batches_completed +EXPORT_SYMBOL_GPL vmlinux 0x1c371eb9 aead_geniv_exit +EXPORT_SYMBOL_GPL vmlinux 0x1c5541bd cpufreq_boost_enabled +EXPORT_SYMBOL_GPL vmlinux 0x1c566469 list_lru_walk_one +EXPORT_SYMBOL_GPL vmlinux 0x1c5b1f28 irq_free_descs +EXPORT_SYMBOL_GPL vmlinux 0x1c67f56b __percpu_ida_init +EXPORT_SYMBOL_GPL vmlinux 0x1c72f32d usb_submit_urb +EXPORT_SYMBOL_GPL vmlinux 0x1c7df74c kvm_hv_vm_activated +EXPORT_SYMBOL_GPL vmlinux 0x1c80d27d btree_geo128 +EXPORT_SYMBOL_GPL vmlinux 0x1c84278f xfrm_audit_state_delete +EXPORT_SYMBOL_GPL vmlinux 0x1c87a811 __round_jiffies_up +EXPORT_SYMBOL_GPL vmlinux 0x1cb4787f bpf_prog_alloc +EXPORT_SYMBOL_GPL vmlinux 0x1cbf9139 tty_port_link_device +EXPORT_SYMBOL_GPL vmlinux 0x1cdb2147 zs_malloc +EXPORT_SYMBOL_GPL vmlinux 0x1cf82066 tcp_orphan_count +EXPORT_SYMBOL_GPL vmlinux 0x1d0168a4 dequeue_signal +EXPORT_SYMBOL_GPL vmlinux 0x1d0d79ed rhashtable_walk_exit +EXPORT_SYMBOL_GPL vmlinux 0x1d1bcc27 class_destroy +EXPORT_SYMBOL_GPL vmlinux 0x1d1bf5c2 vfs_test_lock +EXPORT_SYMBOL_GPL vmlinux 0x1d2f79e7 init_phb_dynamic +EXPORT_SYMBOL_GPL vmlinux 0x1d58ae14 lpddr2_jedec_timings +EXPORT_SYMBOL_GPL vmlinux 0x1d5c527b kthread_unpark +EXPORT_SYMBOL_GPL vmlinux 0x1d77b0f8 unix_socket_table +EXPORT_SYMBOL_GPL vmlinux 0x1d78c5f1 inet6_lookup_listener +EXPORT_SYMBOL_GPL vmlinux 0x1d7c0168 __ftrace_vprintk +EXPORT_SYMBOL_GPL vmlinux 0x1d92d756 do_unregister_con_driver +EXPORT_SYMBOL_GPL vmlinux 0x1dad6a69 pci_ignore_hotplug +EXPORT_SYMBOL_GPL vmlinux 0x1dc0be89 cpufreq_cpu_get +EXPORT_SYMBOL_GPL vmlinux 0x1dd3ef9d input_ff_event +EXPORT_SYMBOL_GPL vmlinux 0x1dd42378 ata_pci_device_resume +EXPORT_SYMBOL_GPL vmlinux 0x1ddcddb8 ata_pci_device_do_suspend +EXPORT_SYMBOL_GPL vmlinux 0x1df1c5fa wm8400_reset_codec_reg_cache +EXPORT_SYMBOL_GPL vmlinux 0x1df2ab86 ata_noop_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0x1dfbcf4c mpic_msgr_disable +EXPORT_SYMBOL_GPL vmlinux 0x1dfe82e6 rio_mport_class +EXPORT_SYMBOL_GPL vmlinux 0x1e000879 hwpoison_filter_enable +EXPORT_SYMBOL_GPL vmlinux 0x1e0d0262 bio_associate_current +EXPORT_SYMBOL_GPL vmlinux 0x1e0fb564 fwnode_property_read_u16_array +EXPORT_SYMBOL_GPL vmlinux 0x1e5b03dc pm_qos_add_notifier +EXPORT_SYMBOL_GPL vmlinux 0x1e7bbcb3 kernel_restart +EXPORT_SYMBOL_GPL vmlinux 0x1eb36730 devres_remove +EXPORT_SYMBOL_GPL vmlinux 0x1eb65588 usb_reset_device +EXPORT_SYMBOL_GPL vmlinux 0x1eb9516e round_jiffies_relative +EXPORT_SYMBOL_GPL vmlinux 0x1ebac2bd getboottime64 +EXPORT_SYMBOL_GPL vmlinux 0x1ebf6c2a pci_power_names +EXPORT_SYMBOL_GPL vmlinux 0x1edb662f perf_event_create_kernel_counter +EXPORT_SYMBOL_GPL vmlinux 0x1edc21cb hwpoison_filter_flags_mask +EXPORT_SYMBOL_GPL vmlinux 0x1f096516 ata_pci_device_suspend +EXPORT_SYMBOL_GPL vmlinux 0x1f1988f7 hwpoison_filter_flags_value +EXPORT_SYMBOL_GPL vmlinux 0x1f29f3d4 virtqueue_get_buf +EXPORT_SYMBOL_GPL vmlinux 0x1f2acdd8 pcibios_map_io_space +EXPORT_SYMBOL_GPL vmlinux 0x1f4e0ef9 rdev_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x1f563145 iommu_add_device +EXPORT_SYMBOL_GPL vmlinux 0x1f8544b8 panic_timeout +EXPORT_SYMBOL_GPL vmlinux 0x1f8db7f9 ring_buffer_overrun_cpu +EXPORT_SYMBOL_GPL vmlinux 0x1fb15629 find_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0x1fc40fbe pci_reset_slot +EXPORT_SYMBOL_GPL vmlinux 0x1fe970cb ps3_io_irq_setup +EXPORT_SYMBOL_GPL vmlinux 0x20007b75 __udp6_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x201ac626 arizona_dev_init +EXPORT_SYMBOL_GPL vmlinux 0x201df48b pm_stay_awake +EXPORT_SYMBOL_GPL vmlinux 0x2041c642 irq_get_domain_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x208df0eb disk_part_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0x209343e3 iommu_map +EXPORT_SYMBOL_GPL vmlinux 0x209ed4c0 skcipher_geniv_exit +EXPORT_SYMBOL_GPL vmlinux 0x20a2ff23 devm_kfree +EXPORT_SYMBOL_GPL vmlinux 0x20a3421b rio_get_asm +EXPORT_SYMBOL_GPL vmlinux 0x20aa6f51 cpuidle_enable_device +EXPORT_SYMBOL_GPL vmlinux 0x20b06f7d tcp_unregister_congestion_control +EXPORT_SYMBOL_GPL vmlinux 0x20c7ad5a cpci_hp_unregister_bus +EXPORT_SYMBOL_GPL vmlinux 0x211850f5 htab_hash_mask +EXPORT_SYMBOL_GPL vmlinux 0x211dbdea sata_set_spd +EXPORT_SYMBOL_GPL vmlinux 0x21639f36 rio_mport_read_config_16 +EXPORT_SYMBOL_GPL vmlinux 0x2168fe96 devm_power_supply_register_no_ws +EXPORT_SYMBOL_GPL vmlinux 0x2183a3bf tcp_done +EXPORT_SYMBOL_GPL vmlinux 0x219373db vfs_removexattr +EXPORT_SYMBOL_GPL vmlinux 0x21ac8b77 iommu_group_get_by_id +EXPORT_SYMBOL_GPL vmlinux 0x21b83c43 usb_find_alt_setting +EXPORT_SYMBOL_GPL vmlinux 0x21d31f13 sock_diag_unregister +EXPORT_SYMBOL_GPL vmlinux 0x21deb079 of_platform_populate +EXPORT_SYMBOL_GPL vmlinux 0x21fe73a3 irq_get_irq_data +EXPORT_SYMBOL_GPL vmlinux 0x22080a51 sysfs_create_bin_file +EXPORT_SYMBOL_GPL vmlinux 0x22136d87 sync_page_io +EXPORT_SYMBOL_GPL vmlinux 0x22206ba1 usb_alloc_dev +EXPORT_SYMBOL_GPL vmlinux 0x222aff00 screen_glyph +EXPORT_SYMBOL_GPL vmlinux 0x2249b85d crypto_init_ahash_spawn +EXPORT_SYMBOL_GPL vmlinux 0x224ab4ec exportfs_decode_fh +EXPORT_SYMBOL_GPL vmlinux 0x225f717f pm_generic_suspend +EXPORT_SYMBOL_GPL vmlinux 0x226fa589 usb_reset_endpoint +EXPORT_SYMBOL_GPL vmlinux 0x22720bae of_property_read_u64 +EXPORT_SYMBOL_GPL vmlinux 0x227eb0a0 gpio_to_desc +EXPORT_SYMBOL_GPL vmlinux 0x228f7099 usb_hcd_start_port_resume +EXPORT_SYMBOL_GPL vmlinux 0x2296c00d crypto_attr_u32 +EXPORT_SYMBOL_GPL vmlinux 0x22a18b55 pci_find_next_capability +EXPORT_SYMBOL_GPL vmlinux 0x22c01abd of_pci_find_child_device +EXPORT_SYMBOL_GPL vmlinux 0x22dea730 lp8788_read_byte +EXPORT_SYMBOL_GPL vmlinux 0x22e1bdc7 inet6_csk_addr2sockaddr +EXPORT_SYMBOL_GPL vmlinux 0x22facca3 regulator_bulk_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x230a9541 ata_bmdma_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x23352d4c crypto_register_ahash +EXPORT_SYMBOL_GPL vmlinux 0x235831a1 mmu_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x236ca6ec regulator_set_load +EXPORT_SYMBOL_GPL vmlinux 0x23759cfb kobject_create_and_add +EXPORT_SYMBOL_GPL vmlinux 0x2382060e dev_pm_qos_hide_latency_tolerance +EXPORT_SYMBOL_GPL vmlinux 0x23864ce7 cpuset_mem_spread_node +EXPORT_SYMBOL_GPL vmlinux 0x23aa8203 device_move +EXPORT_SYMBOL_GPL vmlinux 0x23abebad edac_get_sysfs_subsys +EXPORT_SYMBOL_GPL vmlinux 0x23c475f6 crypto_unregister_rngs +EXPORT_SYMBOL_GPL vmlinux 0x23cd27ff perf_pmu_unregister +EXPORT_SYMBOL_GPL vmlinux 0x23dfa187 usb_hub_release_port +EXPORT_SYMBOL_GPL vmlinux 0x23fe1dad tcp_ca_get_key_by_name +EXPORT_SYMBOL_GPL vmlinux 0x24011e14 vbin_printf +EXPORT_SYMBOL_GPL vmlinux 0x2414697a device_property_read_string_array +EXPORT_SYMBOL_GPL vmlinux 0x241f5a54 get_task_mm +EXPORT_SYMBOL_GPL vmlinux 0x243a4df0 crypto_unregister_template +EXPORT_SYMBOL_GPL vmlinux 0x243a9c83 eeh_iommu_group_to_pe +EXPORT_SYMBOL_GPL vmlinux 0x24457174 audit_enabled +EXPORT_SYMBOL_GPL vmlinux 0x2450db43 setup_irq +EXPORT_SYMBOL_GPL vmlinux 0x247cd3ec do_unbind_con_driver +EXPORT_SYMBOL_GPL vmlinux 0x247ef831 kdb_unregister +EXPORT_SYMBOL_GPL vmlinux 0x2494d76e debugfs_create_u32_array +EXPORT_SYMBOL_GPL vmlinux 0x24aac4d9 crypto_aes_expand_key +EXPORT_SYMBOL_GPL vmlinux 0x24ade574 pci_enable_pri +EXPORT_SYMBOL_GPL vmlinux 0x24b53df6 ehci_cf_port_reset_rwsem +EXPORT_SYMBOL_GPL vmlinux 0x24b793c1 pci_intx +EXPORT_SYMBOL_GPL vmlinux 0x24e25ffd nd_device_attribute_group +EXPORT_SYMBOL_GPL vmlinux 0x24eb7e32 leds_list +EXPORT_SYMBOL_GPL vmlinux 0x24f39c39 reset_control_reset +EXPORT_SYMBOL_GPL vmlinux 0x250ed960 shmem_add_seals +EXPORT_SYMBOL_GPL vmlinux 0x25285517 perf_tp_event +EXPORT_SYMBOL_GPL vmlinux 0x252883ee ata_pci_sff_init_one +EXPORT_SYMBOL_GPL vmlinux 0x25374df8 srp_release_transport +EXPORT_SYMBOL_GPL vmlinux 0x2549e808 wm8350_reg_unlock +EXPORT_SYMBOL_GPL vmlinux 0x2588c93e user_update +EXPORT_SYMBOL_GPL vmlinux 0x258ee194 rtc_irq_unregister +EXPORT_SYMBOL_GPL vmlinux 0x259dca4a rt_mutex_lock +EXPORT_SYMBOL_GPL vmlinux 0x25b7711c blk_abort_request +EXPORT_SYMBOL_GPL vmlinux 0x25be3cd3 nd_blk_region_to_dimm +EXPORT_SYMBOL_GPL vmlinux 0x25c62d8b usb_get_current_frame_number +EXPORT_SYMBOL_GPL vmlinux 0x25cc8751 pwm_can_sleep +EXPORT_SYMBOL_GPL vmlinux 0x25d04ee3 hrtimer_cancel +EXPORT_SYMBOL_GPL vmlinux 0x25e1ca68 ata_bmdma_dumb_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0x2610b845 rtc_class_open +EXPORT_SYMBOL_GPL vmlinux 0x262f20a8 local_clock +EXPORT_SYMBOL_GPL vmlinux 0x2630cc2d regulator_list_voltage_table +EXPORT_SYMBOL_GPL vmlinux 0x26439a31 clockevents_register_device +EXPORT_SYMBOL_GPL vmlinux 0x26520970 vm_memory_committed +EXPORT_SYMBOL_GPL vmlinux 0x266b7638 interval_tree_remove +EXPORT_SYMBOL_GPL vmlinux 0x26b2f34c ata_dev_disable +EXPORT_SYMBOL_GPL vmlinux 0x26b71fb4 ring_buffer_time_stamp +EXPORT_SYMBOL_GPL vmlinux 0x26c90ea4 scsi_eh_get_sense +EXPORT_SYMBOL_GPL vmlinux 0x26d9593d tps6586x_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0x26e356eb blk_queue_rq_timed_out +EXPORT_SYMBOL_GPL vmlinux 0x26e5c0ba pm_runtime_enable +EXPORT_SYMBOL_GPL vmlinux 0x26ef8955 spu_remove_dev_attr_group +EXPORT_SYMBOL_GPL vmlinux 0x26fa29c7 dm_suspended +EXPORT_SYMBOL_GPL vmlinux 0x2736b87f br_fdb_test_addr_hook +EXPORT_SYMBOL_GPL vmlinux 0x277426a5 iommu_capable +EXPORT_SYMBOL_GPL vmlinux 0x27a21084 pci_generic_config_read32 +EXPORT_SYMBOL_GPL vmlinux 0x27c0c4be eventfd_ctx_read +EXPORT_SYMBOL_GPL vmlinux 0x27c1e63f usb_amd_find_chipset_info +EXPORT_SYMBOL_GPL vmlinux 0x27d68cee of_pci_msi_chip_add +EXPORT_SYMBOL_GPL vmlinux 0x27f1dc31 usb_gen_phy_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x27f4f029 ftrace_set_global_filter +EXPORT_SYMBOL_GPL vmlinux 0x27fa66e1 nr_free_buffer_pages +EXPORT_SYMBOL_GPL vmlinux 0x2811da7a smpboot_unregister_percpu_thread +EXPORT_SYMBOL_GPL vmlinux 0x282c0fb1 spi_sync_locked +EXPORT_SYMBOL_GPL vmlinux 0x282cdabc usb_led_activity +EXPORT_SYMBOL_GPL vmlinux 0x282d811a __irq_domain_add +EXPORT_SYMBOL_GPL vmlinux 0x2836c0d6 ata_sas_port_start +EXPORT_SYMBOL_GPL vmlinux 0x28473e5e handle_fasteoi_irq +EXPORT_SYMBOL_GPL vmlinux 0x285cd713 devm_get_free_pages +EXPORT_SYMBOL_GPL vmlinux 0x28ff99a9 opal_prd_msg +EXPORT_SYMBOL_GPL vmlinux 0x2910867f tcp_get_info +EXPORT_SYMBOL_GPL vmlinux 0x2913de09 hrtimer_get_remaining +EXPORT_SYMBOL_GPL vmlinux 0x292af892 nvdimm_blk_region_create +EXPORT_SYMBOL_GPL vmlinux 0x29585088 serial8250_do_startup +EXPORT_SYMBOL_GPL vmlinux 0x295f0a30 scom_find_parent +EXPORT_SYMBOL_GPL vmlinux 0x2960b4c8 sdio_writeb_readb +EXPORT_SYMBOL_GPL vmlinux 0x29741a37 fuse_do_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x2974d10a device_remove_bin_file +EXPORT_SYMBOL_GPL vmlinux 0x29815811 pci_bus_resource_n +EXPORT_SYMBOL_GPL vmlinux 0x29846f78 regulator_get_mode +EXPORT_SYMBOL_GPL vmlinux 0x2985fadb fat_detach +EXPORT_SYMBOL_GPL vmlinux 0x29b262e9 unix_inq_len +EXPORT_SYMBOL_GPL vmlinux 0x29e11a89 regulator_put +EXPORT_SYMBOL_GPL vmlinux 0x2a5de2f4 to_of_pinfo +EXPORT_SYMBOL_GPL vmlinux 0x2a678a13 __suspend_report_result +EXPORT_SYMBOL_GPL vmlinux 0x2a74bb59 iommu_group_get +EXPORT_SYMBOL_GPL vmlinux 0x2a872400 kern_mount_data +EXPORT_SYMBOL_GPL vmlinux 0x2a94b068 ps3_vuart_write +EXPORT_SYMBOL_GPL vmlinux 0x2ab4f4dd ata_msleep +EXPORT_SYMBOL_GPL vmlinux 0x2ac4c9e6 blk_queue_dma_drain +EXPORT_SYMBOL_GPL vmlinux 0x2acf3057 rt_mutex_lock_interruptible +EXPORT_SYMBOL_GPL vmlinux 0x2ade6bd1 usb_put_phy +EXPORT_SYMBOL_GPL vmlinux 0x2ae49c79 bdev_write_page +EXPORT_SYMBOL_GPL vmlinux 0x2afcd46f power_supply_changed +EXPORT_SYMBOL_GPL vmlinux 0x2afcf4c2 devres_destroy +EXPORT_SYMBOL_GPL vmlinux 0x2b4147ed kvmppc_hcall_impl_hv_realmode +EXPORT_SYMBOL_GPL vmlinux 0x2b5ba177 devm_led_classdev_register +EXPORT_SYMBOL_GPL vmlinux 0x2b5c303b smp_send_reschedule +EXPORT_SYMBOL_GPL vmlinux 0x2b678ab3 __pm_runtime_resume +EXPORT_SYMBOL_GPL vmlinux 0x2b764cf3 ip6_datagram_connect_v6_only +EXPORT_SYMBOL_GPL vmlinux 0x2b8ffdd7 rio_mport_write_config_8 +EXPORT_SYMBOL_GPL vmlinux 0x2bb33854 pwmchip_add +EXPORT_SYMBOL_GPL vmlinux 0x2bb4ce12 gpiod_count +EXPORT_SYMBOL_GPL vmlinux 0x2bdb7f65 thermal_zone_device_register +EXPORT_SYMBOL_GPL vmlinux 0x2beeee3a power_supply_register_no_ws +EXPORT_SYMBOL_GPL vmlinux 0x2bfa985e nd_cmd_dimm_desc +EXPORT_SYMBOL_GPL vmlinux 0x2bfd7530 tpm_pm_resume +EXPORT_SYMBOL_GPL vmlinux 0x2c133868 bit_wait_io_timeout +EXPORT_SYMBOL_GPL vmlinux 0x2c208607 power_supply_is_system_supplied +EXPORT_SYMBOL_GPL vmlinux 0x2c3054f9 net_inc_ingress_queue +EXPORT_SYMBOL_GPL vmlinux 0x2c41b71c sata_scr_read +EXPORT_SYMBOL_GPL vmlinux 0x2c4b7743 usb_unlocked_disable_lpm +EXPORT_SYMBOL_GPL vmlinux 0x2c52be2b cpuidle_get_driver +EXPORT_SYMBOL_GPL vmlinux 0x2c5b5a9b power_supply_class +EXPORT_SYMBOL_GPL vmlinux 0x2c73a05e pmac_i2c_match_adapter +EXPORT_SYMBOL_GPL vmlinux 0x2c7db649 irq_dispose_mapping +EXPORT_SYMBOL_GPL vmlinux 0x2c97f8a2 of_reconfig_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x2c9bf2e1 netdev_set_default_ethtool_ops +EXPORT_SYMBOL_GPL vmlinux 0x2ca46d78 aead_geniv_alloc +EXPORT_SYMBOL_GPL vmlinux 0x2cb967d0 sysfs_update_group +EXPORT_SYMBOL_GPL vmlinux 0x2cc3e675 pmac_i2c_close +EXPORT_SYMBOL_GPL vmlinux 0x2ccb5b34 sdio_claim_irq +EXPORT_SYMBOL_GPL vmlinux 0x2cd88f51 kvm_hv_vm_deactivated +EXPORT_SYMBOL_GPL vmlinux 0x2cdc402e inet_csk_addr2sockaddr +EXPORT_SYMBOL_GPL vmlinux 0x2ce8aa54 cpuidle_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0x2ce98559 kcrypto_wq +EXPORT_SYMBOL_GPL vmlinux 0x2cea32ee unregister_oldmem_pfn_is_ram +EXPORT_SYMBOL_GPL vmlinux 0x2d0858b9 regulator_is_supported_voltage +EXPORT_SYMBOL_GPL vmlinux 0x2d0d72a4 of_dma_xlate_by_chan_id +EXPORT_SYMBOL_GPL vmlinux 0x2d1b02d2 usermodehelper_read_lock_wait +EXPORT_SYMBOL_GPL vmlinux 0x2d26241f sdio_release_host +EXPORT_SYMBOL_GPL vmlinux 0x2d3e3376 usb_interrupt_msg +EXPORT_SYMBOL_GPL vmlinux 0x2d41e6f5 __trace_puts +EXPORT_SYMBOL_GPL vmlinux 0x2d57c02f x509_request_asymmetric_key +EXPORT_SYMBOL_GPL vmlinux 0x2d588c85 kobject_uevent_env +EXPORT_SYMBOL_GPL vmlinux 0x2d59c954 edac_handlers +EXPORT_SYMBOL_GPL vmlinux 0x2db5c4bd virtio_device_freeze +EXPORT_SYMBOL_GPL vmlinux 0x2db92ba9 spi_async +EXPORT_SYMBOL_GPL vmlinux 0x2dbe7ab6 devm_extcon_dev_allocate +EXPORT_SYMBOL_GPL vmlinux 0x2dc577a6 device_destroy +EXPORT_SYMBOL_GPL vmlinux 0x2dc5a6d1 btree_last +EXPORT_SYMBOL_GPL vmlinux 0x2dca1698 filter_check_discard +EXPORT_SYMBOL_GPL vmlinux 0x2ddfe9ec rio_release_inb_dbell +EXPORT_SYMBOL_GPL vmlinux 0x2e177425 crypto_shash_final +EXPORT_SYMBOL_GPL vmlinux 0x2e1da9fb probe_kernel_read +EXPORT_SYMBOL_GPL vmlinux 0x2e2360b1 ftrace_set_global_notrace +EXPORT_SYMBOL_GPL vmlinux 0x2e2f1740 ring_buffer_record_disable_cpu +EXPORT_SYMBOL_GPL vmlinux 0x2e45b39b pm_runtime_set_memalloc_noio +EXPORT_SYMBOL_GPL vmlinux 0x2e49ad23 realmode_pfn_to_page +EXPORT_SYMBOL_GPL vmlinux 0x2e82a25e usb_enable_ltm +EXPORT_SYMBOL_GPL vmlinux 0x2e8633b2 register_virtio_device +EXPORT_SYMBOL_GPL vmlinux 0x2ea1e70d shash_free_instance +EXPORT_SYMBOL_GPL vmlinux 0x2ebe3135 cpu_is_hotpluggable +EXPORT_SYMBOL_GPL vmlinux 0x2ec4eee6 __tracepoint_suspend_resume +EXPORT_SYMBOL_GPL vmlinux 0x2ed273ed dma_request_slave_channel +EXPORT_SYMBOL_GPL vmlinux 0x2ed7d2f7 da903x_write +EXPORT_SYMBOL_GPL vmlinux 0x2ee6dd3a pci_restore_msi_state +EXPORT_SYMBOL_GPL vmlinux 0x2f0d9053 usb_otg_state_string +EXPORT_SYMBOL_GPL vmlinux 0x2f0eeddc sdio_readw +EXPORT_SYMBOL_GPL vmlinux 0x2f187878 ata_base_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x2f2b3aac of_usb_get_phy_mode +EXPORT_SYMBOL_GPL vmlinux 0x2f2fe125 md_allow_write +EXPORT_SYMBOL_GPL vmlinux 0x2f4113a2 dcookie_register +EXPORT_SYMBOL_GPL vmlinux 0x2f487aad of_console_check +EXPORT_SYMBOL_GPL vmlinux 0x2f5f1b40 ping_seq_start +EXPORT_SYMBOL_GPL vmlinux 0x2f72cbd2 rio_dma_prep_xfer +EXPORT_SYMBOL_GPL vmlinux 0x2f76b9cd sysfs_create_group +EXPORT_SYMBOL_GPL vmlinux 0x2f7a86a2 skb_to_sgvec +EXPORT_SYMBOL_GPL vmlinux 0x2f81e24b sdio_disable_func +EXPORT_SYMBOL_GPL vmlinux 0x2fa242e1 ps3_vuart_port_driver_register +EXPORT_SYMBOL_GPL vmlinux 0x2fbc37e3 pci_vfs_assigned +EXPORT_SYMBOL_GPL vmlinux 0x2fc0cfb2 inet_csk_search_req +EXPORT_SYMBOL_GPL vmlinux 0x2fc0e65c ata_pci_bmdma_clear_simplex +EXPORT_SYMBOL_GPL vmlinux 0x2fd8cba9 freeze_wake +EXPORT_SYMBOL_GPL vmlinux 0x2fe3230a sb800_prefetch +EXPORT_SYMBOL_GPL vmlinux 0x2ff1c352 nvdimm_bus_unregister +EXPORT_SYMBOL_GPL vmlinux 0x2ffb5ff7 btree_get_prev +EXPORT_SYMBOL_GPL vmlinux 0x301832fb opal_async_get_token_interruptible +EXPORT_SYMBOL_GPL vmlinux 0x302f2ffe usb_disable_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0x30639618 blkcipher_aead_walk_virt_block +EXPORT_SYMBOL_GPL vmlinux 0x309d62e7 devres_alloc +EXPORT_SYMBOL_GPL vmlinux 0x30c475cb regmap_raw_read +EXPORT_SYMBOL_GPL vmlinux 0x30ceade4 dm_internal_resume +EXPORT_SYMBOL_GPL vmlinux 0x30d24018 rio_map_inb_region +EXPORT_SYMBOL_GPL vmlinux 0x30df5df1 pcibios_finish_adding_to_bus +EXPORT_SYMBOL_GPL vmlinux 0x30e622d2 crypto_register_rngs +EXPORT_SYMBOL_GPL vmlinux 0x30f92478 scsi_internal_device_unblock +EXPORT_SYMBOL_GPL vmlinux 0x3101e1ad spi_new_device +EXPORT_SYMBOL_GPL vmlinux 0x3109b751 cpu_clock +EXPORT_SYMBOL_GPL vmlinux 0x310ce567 pcibios_add_pci_devices +EXPORT_SYMBOL_GPL vmlinux 0x3116c059 usb_bus_list_lock +EXPORT_SYMBOL_GPL vmlinux 0x3118c938 __mnt_is_readonly +EXPORT_SYMBOL_GPL vmlinux 0x311b4452 spu_priv1_ops +EXPORT_SYMBOL_GPL vmlinux 0x311b78c2 ps3_get_spe_id +EXPORT_SYMBOL_GPL vmlinux 0x31266931 con_debug_leave +EXPORT_SYMBOL_GPL vmlinux 0x3130ec17 exportfs_encode_inode_fh +EXPORT_SYMBOL_GPL vmlinux 0x314db818 thermal_zone_get_zone_by_name +EXPORT_SYMBOL_GPL vmlinux 0x314fddfc sysfs_create_files +EXPORT_SYMBOL_GPL vmlinux 0x31760f3e spi_write_then_read +EXPORT_SYMBOL_GPL vmlinux 0x3177679d max8997_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0x317b0639 driver_remove_file +EXPORT_SYMBOL_GPL vmlinux 0x31878e31 crypto_unregister_aead +EXPORT_SYMBOL_GPL vmlinux 0x318c6634 pwmchip_remove +EXPORT_SYMBOL_GPL vmlinux 0x3199ccc9 scsi_internal_device_block +EXPORT_SYMBOL_GPL vmlinux 0x31b3a824 inode_sb_list_add +EXPORT_SYMBOL_GPL vmlinux 0x31b673f3 usb_alloc_coherent +EXPORT_SYMBOL_GPL vmlinux 0x31bef441 opal_i2c_request +EXPORT_SYMBOL_GPL vmlinux 0x31c0c2d1 dm_put +EXPORT_SYMBOL_GPL vmlinux 0x31c7970f pciserial_suspend_ports +EXPORT_SYMBOL_GPL vmlinux 0x31ca95b9 ima_file_check +EXPORT_SYMBOL_GPL vmlinux 0x31d413cf __ata_ehi_push_desc +EXPORT_SYMBOL_GPL vmlinux 0x321bdbb1 compat_get_timeval +EXPORT_SYMBOL_GPL vmlinux 0x321fb87d pm_runtime_forbid +EXPORT_SYMBOL_GPL vmlinux 0x323d29fe pci_find_next_ht_capability +EXPORT_SYMBOL_GPL vmlinux 0x325a797a blk_trace_startstop +EXPORT_SYMBOL_GPL vmlinux 0x328995b5 tracing_generic_entry_update +EXPORT_SYMBOL_GPL vmlinux 0x329a7c40 regmap_read +EXPORT_SYMBOL_GPL vmlinux 0x32a9cdf8 pm_generic_poweroff +EXPORT_SYMBOL_GPL vmlinux 0x32ad54a7 crypto_register_akcipher +EXPORT_SYMBOL_GPL vmlinux 0x32bc0fcf preempt_notifier_dec +EXPORT_SYMBOL_GPL vmlinux 0x32bded08 __tracepoint_block_bio_remap +EXPORT_SYMBOL_GPL vmlinux 0x32c3cb4e class_compat_register +EXPORT_SYMBOL_GPL vmlinux 0x32c94304 fuse_file_poll +EXPORT_SYMBOL_GPL vmlinux 0x32d2305a stmpe_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x3309ea64 ps3av_audio_mute +EXPORT_SYMBOL_GPL vmlinux 0x330fbdb9 devm_kstrdup +EXPORT_SYMBOL_GPL vmlinux 0x33398de6 mmu_psize_defs +EXPORT_SYMBOL_GPL vmlinux 0x334d6c86 set_task_ioprio +EXPORT_SYMBOL_GPL vmlinux 0x3351c603 mbox_send_message +EXPORT_SYMBOL_GPL vmlinux 0x335c570f enable_percpu_irq +EXPORT_SYMBOL_GPL vmlinux 0x336154ca rcutorture_record_test_transition +EXPORT_SYMBOL_GPL vmlinux 0x337786fa usb_unpoison_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x33a8228d __i2c_board_lock +EXPORT_SYMBOL_GPL vmlinux 0x33d3a19f tty_wakeup +EXPORT_SYMBOL_GPL vmlinux 0x342238f0 mm_iommu_get +EXPORT_SYMBOL_GPL vmlinux 0x343c724f debugfs_create_x8 +EXPORT_SYMBOL_GPL vmlinux 0x34445697 blk_queue_bypass_start +EXPORT_SYMBOL_GPL vmlinux 0x34646153 inet_peer_base_init +EXPORT_SYMBOL_GPL vmlinux 0x3465fce6 __tracepoint_block_bio_complete +EXPORT_SYMBOL_GPL vmlinux 0x34675538 wakeup_source_destroy +EXPORT_SYMBOL_GPL vmlinux 0x346834ed wm8400_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x3475db28 shash_ahash_digest +EXPORT_SYMBOL_GPL vmlinux 0x347fd4b3 eventfd_ctx_get +EXPORT_SYMBOL_GPL vmlinux 0x34833a35 regmap_register_patch +EXPORT_SYMBOL_GPL vmlinux 0x34928a75 wakeup_source_drop +EXPORT_SYMBOL_GPL vmlinux 0x34951101 dev_pm_qos_expose_latency_tolerance +EXPORT_SYMBOL_GPL vmlinux 0x349ed492 blk_rq_prep_clone +EXPORT_SYMBOL_GPL vmlinux 0x34af0adf opal_ipmi_send +EXPORT_SYMBOL_GPL vmlinux 0x34b4264d scsi_autopm_get_device +EXPORT_SYMBOL_GPL vmlinux 0x34c44568 dm_disk +EXPORT_SYMBOL_GPL vmlinux 0x34d44300 tty_standard_install +EXPORT_SYMBOL_GPL vmlinux 0x34e9bf82 handle_level_irq +EXPORT_SYMBOL_GPL vmlinux 0x3502f445 crypto_register_algs +EXPORT_SYMBOL_GPL vmlinux 0x35176301 rcu_batches_completed_sched +EXPORT_SYMBOL_GPL vmlinux 0x3526f80e rdev_clear_badblocks +EXPORT_SYMBOL_GPL vmlinux 0x354e04dc fuse_request_alloc +EXPORT_SYMBOL_GPL vmlinux 0x35565fe5 blk_queue_rq_timeout +EXPORT_SYMBOL_GPL vmlinux 0x3568294c vring_new_virtqueue +EXPORT_SYMBOL_GPL vmlinux 0x35739cdd pci_check_and_mask_intx +EXPORT_SYMBOL_GPL vmlinux 0x358ff60f twl_get_hfclk_rate +EXPORT_SYMBOL_GPL vmlinux 0x3590464a crypto_spawn_tfm +EXPORT_SYMBOL_GPL vmlinux 0x359d831d rtc_irq_set_state +EXPORT_SYMBOL_GPL vmlinux 0x35a70432 iommu_detach_group +EXPORT_SYMBOL_GPL vmlinux 0x35aea0df dma_request_slave_channel_reason +EXPORT_SYMBOL_GPL vmlinux 0x35be8959 dev_forward_skb +EXPORT_SYMBOL_GPL vmlinux 0x35bf2acd nd_fletcher64 +EXPORT_SYMBOL_GPL vmlinux 0x35d80886 sysfs_remove_mount_point +EXPORT_SYMBOL_GPL vmlinux 0x35e216da ata_do_dev_read_id +EXPORT_SYMBOL_GPL vmlinux 0x35f10f43 nfq_ct_nat_hook +EXPORT_SYMBOL_GPL vmlinux 0x36033c8a regmap_parse_val +EXPORT_SYMBOL_GPL vmlinux 0x36075bb5 iommu_group_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x3618642b gpiochip_is_requested +EXPORT_SYMBOL_GPL vmlinux 0x361e2bcc save_stack_trace +EXPORT_SYMBOL_GPL vmlinux 0x36641f3d usb_match_id +EXPORT_SYMBOL_GPL vmlinux 0x36654f4a show_class_attr_string +EXPORT_SYMBOL_GPL vmlinux 0x366a04f1 wm8400_block_read +EXPORT_SYMBOL_GPL vmlinux 0x367cc7e7 regulator_bulk_force_disable +EXPORT_SYMBOL_GPL vmlinux 0x368f1fea static_key_slow_inc +EXPORT_SYMBOL_GPL vmlinux 0x369fcd70 tracing_snapshot +EXPORT_SYMBOL_GPL vmlinux 0x36a294b4 ipv6_dup_options +EXPORT_SYMBOL_GPL vmlinux 0x36b70011 gpiochip_request_own_desc +EXPORT_SYMBOL_GPL vmlinux 0x36bd8309 crypto_unregister_shash +EXPORT_SYMBOL_GPL vmlinux 0x36bda7b0 cpuidle_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0x36c83c7f serial8250_modem_status +EXPORT_SYMBOL_GPL vmlinux 0x36dab97f trace_clock_jiffies +EXPORT_SYMBOL_GPL vmlinux 0x36e389fc raw_unhash_sk +EXPORT_SYMBOL_GPL vmlinux 0x3700a756 tcp_twsk_destructor +EXPORT_SYMBOL_GPL vmlinux 0x3722d4a1 ftrace_set_filter_ip +EXPORT_SYMBOL_GPL vmlinux 0x37252fb1 regulator_map_voltage_iterate +EXPORT_SYMBOL_GPL vmlinux 0x374f6b2b gpiod_export +EXPORT_SYMBOL_GPL vmlinux 0x37578d04 fuse_get_req +EXPORT_SYMBOL_GPL vmlinux 0x3759cd9c devm_regulator_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x375a6b3b crypto_ahash_finup +EXPORT_SYMBOL_GPL vmlinux 0x37671327 inet6_csk_xmit +EXPORT_SYMBOL_GPL vmlinux 0x3783d71e wm5102_i2c_regmap +EXPORT_SYMBOL_GPL vmlinux 0x37a211c7 inet_hash +EXPORT_SYMBOL_GPL vmlinux 0x37a24e0b phy_create_lookup +EXPORT_SYMBOL_GPL vmlinux 0x37b78515 ata_bmdma_setup +EXPORT_SYMBOL_GPL vmlinux 0x37d167b0 sdio_writel +EXPORT_SYMBOL_GPL vmlinux 0x37d6cc07 cpufreq_driver_target +EXPORT_SYMBOL_GPL vmlinux 0x37eca7f4 firmware_kobj +EXPORT_SYMBOL_GPL vmlinux 0x37ef4a9d __srcu_read_unlock +EXPORT_SYMBOL_GPL vmlinux 0x37f44ca8 usb_phy_generic_register +EXPORT_SYMBOL_GPL vmlinux 0x37fad9b9 ipv6_opt_accepted +EXPORT_SYMBOL_GPL vmlinux 0x3833d9d2 regmap_irq_get_domain +EXPORT_SYMBOL_GPL vmlinux 0x38639300 of_overlay_destroy +EXPORT_SYMBOL_GPL vmlinux 0x3882edcf swiotlb_map_page +EXPORT_SYMBOL_GPL vmlinux 0x3887a667 ata_sff_wait_after_reset +EXPORT_SYMBOL_GPL vmlinux 0x3898b5dc unregister_virtio_driver +EXPORT_SYMBOL_GPL vmlinux 0x38a95714 bio_trim +EXPORT_SYMBOL_GPL vmlinux 0x38ab32e7 pnv_get_supported_cpuidle_states +EXPORT_SYMBOL_GPL vmlinux 0x38ab9ed3 transport_add_device +EXPORT_SYMBOL_GPL vmlinux 0x38d48fc2 regcache_sync_region +EXPORT_SYMBOL_GPL vmlinux 0x38da12b6 crypto_alloc_aead +EXPORT_SYMBOL_GPL vmlinux 0x38ed198f alarm_try_to_cancel +EXPORT_SYMBOL_GPL vmlinux 0x38f4d1c9 __pci_reset_function +EXPORT_SYMBOL_GPL vmlinux 0x391d9e71 bmp085_detect +EXPORT_SYMBOL_GPL vmlinux 0x393d3ba2 spi_bus_lock +EXPORT_SYMBOL_GPL vmlinux 0x396d5e05 pmf_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x39756396 dev_pm_qos_hide_latency_limit +EXPORT_SYMBOL_GPL vmlinux 0x39793987 exportfs_encode_fh +EXPORT_SYMBOL_GPL vmlinux 0x398d8313 cpufreq_generic_init +EXPORT_SYMBOL_GPL vmlinux 0x399693b1 fanout_mutex +EXPORT_SYMBOL_GPL vmlinux 0x39ca07cc maxim_charger_calc_reg_current +EXPORT_SYMBOL_GPL vmlinux 0x39e61495 nf_logger_request_module +EXPORT_SYMBOL_GPL vmlinux 0x39f61c73 acop_handle_fault +EXPORT_SYMBOL_GPL vmlinux 0x39f62860 wm8350_device_init +EXPORT_SYMBOL_GPL vmlinux 0x39fb0ee9 irq_find_host +EXPORT_SYMBOL_GPL vmlinux 0x39fee49a bmp085_remove +EXPORT_SYMBOL_GPL vmlinux 0x3a1551f0 __gpiod_get_optional +EXPORT_SYMBOL_GPL vmlinux 0x3a22a695 usb_set_device_state +EXPORT_SYMBOL_GPL vmlinux 0x3a26ed11 sched_clock +EXPORT_SYMBOL_GPL vmlinux 0x3a38dc65 memory_failure +EXPORT_SYMBOL_GPL vmlinux 0x3a4f6a32 ata_sff_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x3a523a56 usb_bulk_msg +EXPORT_SYMBOL_GPL vmlinux 0x3a536bd7 ring_buffer_read_finish +EXPORT_SYMBOL_GPL vmlinux 0x3a953c87 fwnode_property_read_u64_array +EXPORT_SYMBOL_GPL vmlinux 0x3a9be019 asymmetric_key_id_partial +EXPORT_SYMBOL_GPL vmlinux 0x3acdf325 twl4030_audio_enable_resource +EXPORT_SYMBOL_GPL vmlinux 0x3ad0e201 scatterwalk_copychunks +EXPORT_SYMBOL_GPL vmlinux 0x3ad797f6 iommu_detach_device +EXPORT_SYMBOL_GPL vmlinux 0x3ad873a5 hwmon_device_register_with_groups +EXPORT_SYMBOL_GPL vmlinux 0x3adafc57 crypto_aead_setauthsize +EXPORT_SYMBOL_GPL vmlinux 0x3adc5e6b crypto_shoot_alg +EXPORT_SYMBOL_GPL vmlinux 0x3afba1a4 blkg_conf_finish +EXPORT_SYMBOL_GPL vmlinux 0x3b042e1a regmap_update_bits_check_async +EXPORT_SYMBOL_GPL vmlinux 0x3b1c5afc ps3_vuart_irq_setup +EXPORT_SYMBOL_GPL vmlinux 0x3b1cc56c xfrm_audit_state_replay +EXPORT_SYMBOL_GPL vmlinux 0x3b2b4022 get_task_comm +EXPORT_SYMBOL_GPL vmlinux 0x3b33f61c devm_add_action +EXPORT_SYMBOL_GPL vmlinux 0x3b430991 wakeup_source_unregister +EXPORT_SYMBOL_GPL vmlinux 0x3b58338a spi_unregister_master +EXPORT_SYMBOL_GPL vmlinux 0x3b6e7315 rio_enable_rx_tx_port +EXPORT_SYMBOL_GPL vmlinux 0x3b6fb273 power_supply_unregister +EXPORT_SYMBOL_GPL vmlinux 0x3b74a373 virtqueue_disable_cb +EXPORT_SYMBOL_GPL vmlinux 0x3b83cca7 regmap_async_complete +EXPORT_SYMBOL_GPL vmlinux 0x3b993167 trace_seq_puts +EXPORT_SYMBOL_GPL vmlinux 0x3bbe97f8 skcipher_geniv_alloc +EXPORT_SYMBOL_GPL vmlinux 0x3bd77de1 phy_destroy +EXPORT_SYMBOL_GPL vmlinux 0x3be37014 regmap_fields_read +EXPORT_SYMBOL_GPL vmlinux 0x3c0008b6 ata_sff_check_status +EXPORT_SYMBOL_GPL vmlinux 0x3c12e5a3 fat_sync_inode +EXPORT_SYMBOL_GPL vmlinux 0x3c51ea7c opal_leds_get_ind +EXPORT_SYMBOL_GPL vmlinux 0x3c642c47 wm8350_gpio_config +EXPORT_SYMBOL_GPL vmlinux 0x3c7b1fc8 debugfs_create_bool +EXPORT_SYMBOL_GPL vmlinux 0x3c7e94dc set_primary_fwnode +EXPORT_SYMBOL_GPL vmlinux 0x3c9390db pci_vpd_find_tag +EXPORT_SYMBOL_GPL vmlinux 0x3c970829 transport_setup_device +EXPORT_SYMBOL_GPL vmlinux 0x3cb5a610 spi_finalize_current_transfer +EXPORT_SYMBOL_GPL vmlinux 0x3cc4a495 serial8250_do_set_mctrl +EXPORT_SYMBOL_GPL vmlinux 0x3cd06035 add_input_randomness +EXPORT_SYMBOL_GPL vmlinux 0x3cf69baf slice_get_unmapped_area +EXPORT_SYMBOL_GPL vmlinux 0x3d0c0486 pci_user_read_config_dword +EXPORT_SYMBOL_GPL vmlinux 0x3d128cbc blk_queue_flush_queueable +EXPORT_SYMBOL_GPL vmlinux 0x3d176dbd seq_release_net +EXPORT_SYMBOL_GPL vmlinux 0x3d26542c ata_sff_irq_on +EXPORT_SYMBOL_GPL vmlinux 0x3d2852fc syscon_regmap_lookup_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0x3d388324 dpm_resume_end +EXPORT_SYMBOL_GPL vmlinux 0x3d39ba0d wm5110_patch +EXPORT_SYMBOL_GPL vmlinux 0x3d4e5f32 raw_seq_start +EXPORT_SYMBOL_GPL vmlinux 0x3d5de2b9 dax_pfn_mkwrite +EXPORT_SYMBOL_GPL vmlinux 0x3d5fb7e7 devm_spi_register_master +EXPORT_SYMBOL_GPL vmlinux 0x3d612305 iommu_direction_to_tce_perm +EXPORT_SYMBOL_GPL vmlinux 0x3d6d0d58 wm5110_revd_irq +EXPORT_SYMBOL_GPL vmlinux 0x3d760cc8 find_symbol +EXPORT_SYMBOL_GPL vmlinux 0x3d78a57f blkcg_policy_unregister +EXPORT_SYMBOL_GPL vmlinux 0x3d94bdb4 srcu_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0x3da410db serial8250_handle_irq +EXPORT_SYMBOL_GPL vmlinux 0x3da6ebdd relay_flush +EXPORT_SYMBOL_GPL vmlinux 0x3dc526a9 arizona_of_match +EXPORT_SYMBOL_GPL vmlinux 0x3dc916b6 crypto_fl_tab +EXPORT_SYMBOL_GPL vmlinux 0x3de9cae1 crypto_remove_final +EXPORT_SYMBOL_GPL vmlinux 0x3df9750a of_reserved_mem_device_release +EXPORT_SYMBOL_GPL vmlinux 0x3dfc436e percpu_ref_kill_and_confirm +EXPORT_SYMBOL_GPL vmlinux 0x3e21b7ea dma_get_required_mask +EXPORT_SYMBOL_GPL vmlinux 0x3e267431 shmem_truncate_range +EXPORT_SYMBOL_GPL vmlinux 0x3e4e0f53 rdev_get_id +EXPORT_SYMBOL_GPL vmlinux 0x3e5e1937 rcu_batches_started_sched +EXPORT_SYMBOL_GPL vmlinux 0x3e60e6c7 init_dummy_netdev +EXPORT_SYMBOL_GPL vmlinux 0x3e7080cb mpi_read_from_buffer +EXPORT_SYMBOL_GPL vmlinux 0x3e74c7e4 devm_regmap_field_free +EXPORT_SYMBOL_GPL vmlinux 0x3e921b67 ip6_redirect +EXPORT_SYMBOL_GPL vmlinux 0x3e92503f cpufreq_cpu_put +EXPORT_SYMBOL_GPL vmlinux 0x3eaac448 crypto_lookup_aead +EXPORT_SYMBOL_GPL vmlinux 0x3edb4fba platform_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x3ee49fad gpiochip_lock_as_irq +EXPORT_SYMBOL_GPL vmlinux 0x3ef2db9c usb_driver_claim_interface +EXPORT_SYMBOL_GPL vmlinux 0x3ef8672e ata_wait_after_reset +EXPORT_SYMBOL_GPL vmlinux 0x3efb35c9 get_online_cpus +EXPORT_SYMBOL_GPL vmlinux 0x3f0d1757 usb_hcd_pci_remove +EXPORT_SYMBOL_GPL vmlinux 0x3f1c5d04 bsg_job_done +EXPORT_SYMBOL_GPL vmlinux 0x3f7430f1 of_dma_get_range +EXPORT_SYMBOL_GPL vmlinux 0x3f84cca5 subsys_dev_iter_next +EXPORT_SYMBOL_GPL vmlinux 0x3f9b3513 pmac_i2c_get_dev_addr +EXPORT_SYMBOL_GPL vmlinux 0x3fa5af9c nd_cmd_bus_desc +EXPORT_SYMBOL_GPL vmlinux 0x3fb14423 md_ack_all_badblocks +EXPORT_SYMBOL_GPL vmlinux 0x3fb371a3 ata_sff_tf_read +EXPORT_SYMBOL_GPL vmlinux 0x3fb77ab1 ipv6_proxy_select_ident +EXPORT_SYMBOL_GPL vmlinux 0x3fc72d3d __tracepoint_kfree_skb +EXPORT_SYMBOL_GPL vmlinux 0x3fdf0ea7 device_show_bool +EXPORT_SYMBOL_GPL vmlinux 0x3fef7431 register_kprobes +EXPORT_SYMBOL_GPL vmlinux 0x4018bd52 rt_mutex_timed_lock +EXPORT_SYMBOL_GPL vmlinux 0x402aa73d inet_csk_route_req +EXPORT_SYMBOL_GPL vmlinux 0x403f9529 gpio_request_one +EXPORT_SYMBOL_GPL vmlinux 0x4045c494 filter_match_preds +EXPORT_SYMBOL_GPL vmlinux 0x4049a14f sysfs_chmod_file +EXPORT_SYMBOL_GPL vmlinux 0x4065d168 pm_print_active_wakeup_sources +EXPORT_SYMBOL_GPL vmlinux 0x406c4cb1 hrtimer_resolution +EXPORT_SYMBOL_GPL vmlinux 0x408a48de pmac_i2c_get_bus_node +EXPORT_SYMBOL_GPL vmlinux 0x40af0dec ata_xfer_mode2mask +EXPORT_SYMBOL_GPL vmlinux 0x40d2bb1e ata_eh_thaw_port +EXPORT_SYMBOL_GPL vmlinux 0x40d2d128 unregister_kretprobes +EXPORT_SYMBOL_GPL vmlinux 0x40d46b21 crypto_ft_tab +EXPORT_SYMBOL_GPL vmlinux 0x40efaf5c nvdimm_bus_attribute_group +EXPORT_SYMBOL_GPL vmlinux 0x40f0683e reset_control_put +EXPORT_SYMBOL_GPL vmlinux 0x4107c562 gpiod_to_chip +EXPORT_SYMBOL_GPL vmlinux 0x410fbe46 crypto_blkcipher_type +EXPORT_SYMBOL_GPL vmlinux 0x413f7e17 alarm_init +EXPORT_SYMBOL_GPL vmlinux 0x41814cb8 dirty_writeback_interval +EXPORT_SYMBOL_GPL vmlinux 0x41b813a5 regulator_sync_voltage +EXPORT_SYMBOL_GPL vmlinux 0x41ea0e76 crypto_alloc_base +EXPORT_SYMBOL_GPL vmlinux 0x420e9786 trace_seq_putmem_hex +EXPORT_SYMBOL_GPL vmlinux 0x421671f4 thermal_zone_unbind_cooling_device +EXPORT_SYMBOL_GPL vmlinux 0x42288f14 __page_file_index +EXPORT_SYMBOL_GPL vmlinux 0x42365db9 ata_bmdma_port_start +EXPORT_SYMBOL_GPL vmlinux 0x42391593 wm8997_i2c_regmap +EXPORT_SYMBOL_GPL vmlinux 0x424acc6d scatterwalk_done +EXPORT_SYMBOL_GPL vmlinux 0x425f8c87 class_compat_create_link +EXPORT_SYMBOL_GPL vmlinux 0x427be830 rio_register_mport +EXPORT_SYMBOL_GPL vmlinux 0x42825ce2 rcu_scheduler_active +EXPORT_SYMBOL_GPL vmlinux 0x42aa99ef fat_search_long +EXPORT_SYMBOL_GPL vmlinux 0x42b88070 regulator_set_current_limit +EXPORT_SYMBOL_GPL vmlinux 0x42c562fb wm8350_clear_bits +EXPORT_SYMBOL_GPL vmlinux 0x42d22ffa rtc_read_time +EXPORT_SYMBOL_GPL vmlinux 0x431bf93c wm5110_irq +EXPORT_SYMBOL_GPL vmlinux 0x432702e6 mm_iommu_mapped_inc +EXPORT_SYMBOL_GPL vmlinux 0x4337677c rdev_set_badblocks +EXPORT_SYMBOL_GPL vmlinux 0x433b4ee3 usb_hcd_check_unlink_urb +EXPORT_SYMBOL_GPL vmlinux 0x4351204c devm_regulator_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x43558bd2 init_user_ns +EXPORT_SYMBOL_GPL vmlinux 0x43606e40 vma_kernel_pagesize +EXPORT_SYMBOL_GPL vmlinux 0x43619e1a scatterwalk_ffwd +EXPORT_SYMBOL_GPL vmlinux 0x43934ca8 unregister_wide_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x439af87b vga_default_device +EXPORT_SYMBOL_GPL vmlinux 0x43a53735 __alloc_workqueue_key +EXPORT_SYMBOL_GPL vmlinux 0x43cdbd29 skb_splice_bits +EXPORT_SYMBOL_GPL vmlinux 0x43d6cd04 mmput +EXPORT_SYMBOL_GPL vmlinux 0x43f1142e ata_sff_data_xfer32 +EXPORT_SYMBOL_GPL vmlinux 0x43f56e82 ata_xfer_mode2shift +EXPORT_SYMBOL_GPL vmlinux 0x4445fa33 usb_driver_set_configuration +EXPORT_SYMBOL_GPL vmlinux 0x4451a3de arizona_of_get_named_gpio +EXPORT_SYMBOL_GPL vmlinux 0x447b698c ata_dev_next +EXPORT_SYMBOL_GPL vmlinux 0x4484a5a4 wait_for_device_probe +EXPORT_SYMBOL_GPL vmlinux 0x4485f180 locks_alloc_lock +EXPORT_SYMBOL_GPL vmlinux 0x449c8398 scsi_queue_work +EXPORT_SYMBOL_GPL vmlinux 0x44a02bc2 pm_generic_runtime_resume +EXPORT_SYMBOL_GPL vmlinux 0x44bb5fcd rio_mport_write_config_16 +EXPORT_SYMBOL_GPL vmlinux 0x44bec1c9 sata_scr_write_flush +EXPORT_SYMBOL_GPL vmlinux 0x44d16448 mpc8xxx_spi_tx_buf_u32 +EXPORT_SYMBOL_GPL vmlinux 0x44d54efa power_supply_am_i_supplied +EXPORT_SYMBOL_GPL vmlinux 0x44de766e devm_extcon_dev_unregister +EXPORT_SYMBOL_GPL vmlinux 0x44efb245 force_sig_info +EXPORT_SYMBOL_GPL vmlinux 0x44f6f9ee to_nd_blk_region +EXPORT_SYMBOL_GPL vmlinux 0x44f725ee crypto_unregister_akcipher +EXPORT_SYMBOL_GPL vmlinux 0x44f961c1 single_release_net +EXPORT_SYMBOL_GPL vmlinux 0x450fb522 kmsg_dump_get_buffer +EXPORT_SYMBOL_GPL vmlinux 0x453420f6 ata_common_sdev_attrs +EXPORT_SYMBOL_GPL vmlinux 0x45465eba kobject_rename +EXPORT_SYMBOL_GPL vmlinux 0x456a6ddf devm_hwmon_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x456c9498 regulator_force_disable +EXPORT_SYMBOL_GPL vmlinux 0x457594fa crypto_alg_list +EXPORT_SYMBOL_GPL vmlinux 0x4582ad77 class_dev_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x458eaa2f call_srcu +EXPORT_SYMBOL_GPL vmlinux 0x45bf1ff3 crypto_inc +EXPORT_SYMBOL_GPL vmlinux 0x45c38d3e device_show_int +EXPORT_SYMBOL_GPL vmlinux 0x45ce0285 i2c_new_dummy +EXPORT_SYMBOL_GPL vmlinux 0x45f1f98f __add_pages +EXPORT_SYMBOL_GPL vmlinux 0x46013233 net_dec_ingress_queue +EXPORT_SYMBOL_GPL vmlinux 0x460f7531 wait_rcu_gp +EXPORT_SYMBOL_GPL vmlinux 0x46255d46 pwm_disable +EXPORT_SYMBOL_GPL vmlinux 0x463c66b2 spu_add_dev_attr_group +EXPORT_SYMBOL_GPL vmlinux 0x463d24ea ipv6_fixup_options +EXPORT_SYMBOL_GPL vmlinux 0x4656dece crypto_destroy_tfm +EXPORT_SYMBOL_GPL vmlinux 0x4658b2a1 sdhci_pci_o2_fujin2_pci_init +EXPORT_SYMBOL_GPL vmlinux 0x46647178 hrtimer_init +EXPORT_SYMBOL_GPL vmlinux 0x4672e88b __crypto_dequeue_request +EXPORT_SYMBOL_GPL vmlinux 0x467cc183 pci_add_dynid +EXPORT_SYMBOL_GPL vmlinux 0x4688c96a usb_scuttle_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x4688d7ec pvclock_gtod_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x468b28e5 __pci_reset_function_locked +EXPORT_SYMBOL_GPL vmlinux 0x469143c4 x509_free_certificate +EXPORT_SYMBOL_GPL vmlinux 0x4692705c blk_end_request_err +EXPORT_SYMBOL_GPL vmlinux 0x46a3d504 shmem_file_setup +EXPORT_SYMBOL_GPL vmlinux 0x46a6ed60 pci_user_write_config_byte +EXPORT_SYMBOL_GPL vmlinux 0x46d87b44 blkdev_write_iter +EXPORT_SYMBOL_GPL vmlinux 0x46d9f955 ps3_irq_plug_setup +EXPORT_SYMBOL_GPL vmlinux 0x46deee7e pci_assign_unassigned_bus_resources +EXPORT_SYMBOL_GPL vmlinux 0x46eea2cc iommu_iova_to_phys +EXPORT_SYMBOL_GPL vmlinux 0x4700273a stmpe_block_write +EXPORT_SYMBOL_GPL vmlinux 0x47018afc register_trace_event +EXPORT_SYMBOL_GPL vmlinux 0x470f318a tc3589x_block_write +EXPORT_SYMBOL_GPL vmlinux 0x4712fdce relay_file_operations +EXPORT_SYMBOL_GPL vmlinux 0x47229b5c gpio_request +EXPORT_SYMBOL_GPL vmlinux 0x4741db42 ps3av_set_audio_mode +EXPORT_SYMBOL_GPL vmlinux 0x47490c0b pmac_i2c_get_controller +EXPORT_SYMBOL_GPL vmlinux 0x4761f17c register_netevent_notifier +EXPORT_SYMBOL_GPL vmlinux 0x47637122 device_get_next_child_node +EXPORT_SYMBOL_GPL vmlinux 0x47884890 system_power_efficient_wq +EXPORT_SYMBOL_GPL vmlinux 0x4794149a ehci_hub_control +EXPORT_SYMBOL_GPL vmlinux 0x47aad3b9 have_governor_per_policy +EXPORT_SYMBOL_GPL vmlinux 0x47acddea ps3_sys_manager_set_wol +EXPORT_SYMBOL_GPL vmlinux 0x47af5f31 __rio_local_write_config_32 +EXPORT_SYMBOL_GPL vmlinux 0x47b7a595 tty_buffer_request_room +EXPORT_SYMBOL_GPL vmlinux 0x47baf583 inet6_destroy_sock +EXPORT_SYMBOL_GPL vmlinux 0x47ded78a devm_power_supply_get_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0x47faf38a devm_regulator_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x48068150 gpiod_set_raw_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x480915cc user_read +EXPORT_SYMBOL_GPL vmlinux 0x481c2cb0 look_up_OID +EXPORT_SYMBOL_GPL vmlinux 0x4868c3b4 rcu_batches_started_bh +EXPORT_SYMBOL_GPL vmlinux 0x486a8392 devm_extcon_dev_register +EXPORT_SYMBOL_GPL vmlinux 0x487c5d33 nf_log_buf_add +EXPORT_SYMBOL_GPL vmlinux 0x489b4400 ohci_hub_control +EXPORT_SYMBOL_GPL vmlinux 0x48d0d276 register_asymmetric_key_parser +EXPORT_SYMBOL_GPL vmlinux 0x48d128c0 mpc8xxx_spi_rx_buf_u32 +EXPORT_SYMBOL_GPL vmlinux 0x48f2549f gpiod_get_array +EXPORT_SYMBOL_GPL vmlinux 0x48f69535 led_stop_software_blink +EXPORT_SYMBOL_GPL vmlinux 0x4910c6d3 ata_sff_dev_select +EXPORT_SYMBOL_GPL vmlinux 0x4929c7b6 ohci_init_driver +EXPORT_SYMBOL_GPL vmlinux 0x49304cf9 rhashtable_insert_rehash +EXPORT_SYMBOL_GPL vmlinux 0x4937c255 devm_usb_get_phy_dev +EXPORT_SYMBOL_GPL vmlinux 0x4955b084 inet_csk_route_child_sock +EXPORT_SYMBOL_GPL vmlinux 0x4976d085 od_register_powersave_bias_handler +EXPORT_SYMBOL_GPL vmlinux 0x4985fab4 pm_wakeup_event +EXPORT_SYMBOL_GPL vmlinux 0x498d293a trace_buffer_unlock_commit +EXPORT_SYMBOL_GPL vmlinux 0x499043d3 crypto_init_queue +EXPORT_SYMBOL_GPL vmlinux 0x49a88fc9 ata_link_next +EXPORT_SYMBOL_GPL vmlinux 0x49aebf39 blk_rq_check_limits +EXPORT_SYMBOL_GPL vmlinux 0x49c6e57c of_irq_to_resource_table +EXPORT_SYMBOL_GPL vmlinux 0x49c95db4 devm_reset_control_get +EXPORT_SYMBOL_GPL vmlinux 0x49d1ecaa scom_controller +EXPORT_SYMBOL_GPL vmlinux 0x49e96999 cond_synchronize_rcu +EXPORT_SYMBOL_GPL vmlinux 0x49f4731c rio_mport_read_config_32 +EXPORT_SYMBOL_GPL vmlinux 0x49f4af81 sock_update_netprioidx +EXPORT_SYMBOL_GPL vmlinux 0x4a026413 mm_iommu_mapped_dec +EXPORT_SYMBOL_GPL vmlinux 0x4a16ee0f regmap_get_val_bytes +EXPORT_SYMBOL_GPL vmlinux 0x4a2d2c09 ata_sff_queue_pio_task +EXPORT_SYMBOL_GPL vmlinux 0x4a5944d3 rhashtable_walk_stop +EXPORT_SYMBOL_GPL vmlinux 0x4a90160e bprintf +EXPORT_SYMBOL_GPL vmlinux 0x4a96241f ata_host_alloc_pinfo +EXPORT_SYMBOL_GPL vmlinux 0x4aa39caf dpm_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0x4aa5c771 extcon_register_interest +EXPORT_SYMBOL_GPL vmlinux 0x4aadeb9a ring_buffer_alloc_read_page +EXPORT_SYMBOL_GPL vmlinux 0x4ab2103f devm_regulator_bulk_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x4abe6bb2 tpm_calc_ordinal_duration +EXPORT_SYMBOL_GPL vmlinux 0x4adb8004 fuse_put_request +EXPORT_SYMBOL_GPL vmlinux 0x4ae8c705 list_lru_count_node +EXPORT_SYMBOL_GPL vmlinux 0x4afb0105 unix_outq_len +EXPORT_SYMBOL_GPL vmlinux 0x4b24aa38 sk_clone_lock +EXPORT_SYMBOL_GPL vmlinux 0x4b282d72 ps3_sys_manager_register_ops +EXPORT_SYMBOL_GPL vmlinux 0x4b28e1b6 dma_wait_for_async_tx +EXPORT_SYMBOL_GPL vmlinux 0x4b2a8d25 dev_pm_put_subsys_data +EXPORT_SYMBOL_GPL vmlinux 0x4b2f1599 alarm_forward +EXPORT_SYMBOL_GPL vmlinux 0x4b5d8190 usb_register_dev +EXPORT_SYMBOL_GPL vmlinux 0x4b866c77 usb_sg_wait +EXPORT_SYMBOL_GPL vmlinux 0x4ba43a6a mbox_request_channel +EXPORT_SYMBOL_GPL vmlinux 0x4ba8d501 crypto_register_aeads +EXPORT_SYMBOL_GPL vmlinux 0x4ba96c04 pci_pasid_features +EXPORT_SYMBOL_GPL vmlinux 0x4bbaf25c save_stack_trace_tsk +EXPORT_SYMBOL_GPL vmlinux 0x4bd5956b __rt_mutex_init +EXPORT_SYMBOL_GPL vmlinux 0x4c18f773 ps3_os_area_set_rtc_diff +EXPORT_SYMBOL_GPL vmlinux 0x4c22aec4 ehci_adjust_port_wakeup_flags +EXPORT_SYMBOL_GPL vmlinux 0x4c4cbd98 spu_associate_mm +EXPORT_SYMBOL_GPL vmlinux 0x4c4d5ee7 devm_regulator_get_optional +EXPORT_SYMBOL_GPL vmlinux 0x4c4f85d8 component_master_add +EXPORT_SYMBOL_GPL vmlinux 0x4c602bf1 __blkg_release_rcu +EXPORT_SYMBOL_GPL vmlinux 0x4c645f9e static_key_slow_dec_deferred +EXPORT_SYMBOL_GPL vmlinux 0x4c6cd00b mmc_switch +EXPORT_SYMBOL_GPL vmlinux 0x4c759827 byte_rev_table +EXPORT_SYMBOL_GPL vmlinux 0x4c78a91a phy_pm_runtime_put_sync +EXPORT_SYMBOL_GPL vmlinux 0x4c9728d4 irq_domain_xlate_onecell +EXPORT_SYMBOL_GPL vmlinux 0x4ca639f2 ping_bind +EXPORT_SYMBOL_GPL vmlinux 0x4cb27289 __platform_driver_register +EXPORT_SYMBOL_GPL vmlinux 0x4ce6ab55 device_reprobe +EXPORT_SYMBOL_GPL vmlinux 0x4cf1f46c thermal_zone_device_update +EXPORT_SYMBOL_GPL vmlinux 0x4cf7efc7 i2c_new_probed_device +EXPORT_SYMBOL_GPL vmlinux 0x4d0015e2 cpu_hotplug_disable +EXPORT_SYMBOL_GPL vmlinux 0x4d0bd06a wm8350_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x4d15606d rio_mport_read_config_8 +EXPORT_SYMBOL_GPL vmlinux 0x4d161063 pm_relax +EXPORT_SYMBOL_GPL vmlinux 0x4d625657 posix_acl_access_xattr_handler +EXPORT_SYMBOL_GPL vmlinux 0x4d87a851 dax_do_io +EXPORT_SYMBOL_GPL vmlinux 0x4d9d316a genlmsg_new_unicast +EXPORT_SYMBOL_GPL vmlinux 0x4d9f769a regulator_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x4de17ab3 usb_state_string +EXPORT_SYMBOL_GPL vmlinux 0x4dec2361 hvc_poll +EXPORT_SYMBOL_GPL vmlinux 0x4e109192 ring_buffer_entries +EXPORT_SYMBOL_GPL vmlinux 0x4e242f5f pstore_cannot_block_path +EXPORT_SYMBOL_GPL vmlinux 0x4e4ea8cf agp_remove_bridge +EXPORT_SYMBOL_GPL vmlinux 0x4e9cc1db crypto_alg_mod_lookup +EXPORT_SYMBOL_GPL vmlinux 0x4ea37c5c inet_csk_reqsk_queue_hash_add +EXPORT_SYMBOL_GPL vmlinux 0x4eadccb8 dev_pm_qos_add_ancestor_request +EXPORT_SYMBOL_GPL vmlinux 0x4ec37e2a debugfs_create_u64 +EXPORT_SYMBOL_GPL vmlinux 0x4ec43cde usb_autopm_get_interface_no_resume +EXPORT_SYMBOL_GPL vmlinux 0x4ef5bcf4 perf_swevent_get_recursion_context +EXPORT_SYMBOL_GPL vmlinux 0x4f020dee public_key_verify_signature +EXPORT_SYMBOL_GPL vmlinux 0x4f0a4832 usb_match_one_id +EXPORT_SYMBOL_GPL vmlinux 0x4f5594da nd_cmd_out_size +EXPORT_SYMBOL_GPL vmlinux 0x4f5b7b01 wm8997_irq +EXPORT_SYMBOL_GPL vmlinux 0x4f5e6306 fb_deferred_io_fsync +EXPORT_SYMBOL_GPL vmlinux 0x4f6a07fe show_rcu_gp_kthreads +EXPORT_SYMBOL_GPL vmlinux 0x4f7e3736 usb_alloc_streams +EXPORT_SYMBOL_GPL vmlinux 0x4fa57371 usb_get_phy_dev +EXPORT_SYMBOL_GPL vmlinux 0x4fbd83bb tpm_do_selftest +EXPORT_SYMBOL_GPL vmlinux 0x4fd4e89d ring_buffer_empty_cpu +EXPORT_SYMBOL_GPL vmlinux 0x4fdc945d sata_deb_timing_normal +EXPORT_SYMBOL_GPL vmlinux 0x4fe1eddf unregister_netevent_notifier +EXPORT_SYMBOL_GPL vmlinux 0x4ff201a3 usb_get_hcd +EXPORT_SYMBOL_GPL vmlinux 0x4ff2bbe8 __dma_request_channel +EXPORT_SYMBOL_GPL vmlinux 0x50050525 ata_bmdma_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0x500af914 crypto_alloc_ablkcipher +EXPORT_SYMBOL_GPL vmlinux 0x500b3a98 dm_get_rq_mapinfo +EXPORT_SYMBOL_GPL vmlinux 0x500ecfaa of_irq_parse_pci +EXPORT_SYMBOL_GPL vmlinux 0x5025f60a of_get_regulator_init_data +EXPORT_SYMBOL_GPL vmlinux 0x50367726 tcp_ca_openreq_child +EXPORT_SYMBOL_GPL vmlinux 0x506dc341 usb_get_intf +EXPORT_SYMBOL_GPL vmlinux 0x5070c2c7 phy_init +EXPORT_SYMBOL_GPL vmlinux 0x507de8c6 add_memory +EXPORT_SYMBOL_GPL vmlinux 0x5083a529 devm_devfreq_event_add_edev +EXPORT_SYMBOL_GPL vmlinux 0x5086ac3a alg_test +EXPORT_SYMBOL_GPL vmlinux 0x5088ba36 pcie_port_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x5091b823 ring_buffer_read_start +EXPORT_SYMBOL_GPL vmlinux 0x5099133e blkcipher_walk_virt_block +EXPORT_SYMBOL_GPL vmlinux 0x50c390f7 __skb_tstamp_tx +EXPORT_SYMBOL_GPL vmlinux 0x50d3406a blk_execute_rq_nowait +EXPORT_SYMBOL_GPL vmlinux 0x50e65de2 devm_regulator_put +EXPORT_SYMBOL_GPL vmlinux 0x50e7193a __i2c_first_dynamic_bus_num +EXPORT_SYMBOL_GPL vmlinux 0x50f175cb gpiod_set_debounce +EXPORT_SYMBOL_GPL vmlinux 0x50fad434 round_jiffies_up +EXPORT_SYMBOL_GPL vmlinux 0x50fd2a71 regulator_enable +EXPORT_SYMBOL_GPL vmlinux 0x5104eaa2 sdio_set_host_pm_flags +EXPORT_SYMBOL_GPL vmlinux 0x51072741 blk_mq_freeze_queue_start +EXPORT_SYMBOL_GPL vmlinux 0x510e1c71 mm_iommu_lookup +EXPORT_SYMBOL_GPL vmlinux 0x511354e7 cm_notify_event +EXPORT_SYMBOL_GPL vmlinux 0x513d126d crypto_alloc_shash +EXPORT_SYMBOL_GPL vmlinux 0x518961a1 arizona_free_irq +EXPORT_SYMBOL_GPL vmlinux 0x51a80f11 arizona_dev_exit +EXPORT_SYMBOL_GPL vmlinux 0x51b65a26 rtc_lock +EXPORT_SYMBOL_GPL vmlinux 0x51dc6933 mpc8xxx_spi_tx_buf_u16 +EXPORT_SYMBOL_GPL vmlinux 0x51e2065d proc_mkdir_data +EXPORT_SYMBOL_GPL vmlinux 0x5205e64d disable_kprobe +EXPORT_SYMBOL_GPL vmlinux 0x52101367 ablkcipher_walk_phys +EXPORT_SYMBOL_GPL vmlinux 0x5210a5bf hsi_board_list +EXPORT_SYMBOL_GPL vmlinux 0x52210307 skb_zerocopy +EXPORT_SYMBOL_GPL vmlinux 0x522c5e99 crypto_larval_alloc +EXPORT_SYMBOL_GPL vmlinux 0x522f538b tpm_send +EXPORT_SYMBOL_GPL vmlinux 0x523906b5 pci_slots_kset +EXPORT_SYMBOL_GPL vmlinux 0x5270abff gpiochip_unlock_as_irq +EXPORT_SYMBOL_GPL vmlinux 0x5279ed1b inet_ctl_sock_create +EXPORT_SYMBOL_GPL vmlinux 0x52cfa9b1 pid_nr_ns +EXPORT_SYMBOL_GPL vmlinux 0x52cfdedd balloon_page_enqueue +EXPORT_SYMBOL_GPL vmlinux 0x52d4c4ac regulator_map_voltage_linear_range +EXPORT_SYMBOL_GPL vmlinux 0x52ec500b pci_disable_rom +EXPORT_SYMBOL_GPL vmlinux 0x52f1f605 blkcipher_walk_done +EXPORT_SYMBOL_GPL vmlinux 0x52f2d23f nf_queue_entry_release_refs +EXPORT_SYMBOL_GPL vmlinux 0x5306410e alarm_start_relative +EXPORT_SYMBOL_GPL vmlinux 0x5335dd11 atomic_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x5339fe44 iommu_domain_window_enable +EXPORT_SYMBOL_GPL vmlinux 0x5358fc36 ring_buffer_discard_commit +EXPORT_SYMBOL_GPL vmlinux 0x53614269 get_cpu_idle_time_us +EXPORT_SYMBOL_GPL vmlinux 0x53665855 device_add_property_set +EXPORT_SYMBOL_GPL vmlinux 0x536ba4e3 mddev_suspend +EXPORT_SYMBOL_GPL vmlinux 0x536bf08a pci_destroy_slot +EXPORT_SYMBOL_GPL vmlinux 0x537fadf8 dev_attr_link_power_management_policy +EXPORT_SYMBOL_GPL vmlinux 0x53981192 __rtnl_register +EXPORT_SYMBOL_GPL vmlinux 0x53a05f3d sysfs_create_file_ns +EXPORT_SYMBOL_GPL vmlinux 0x53b6b408 rhashtable_free_and_destroy +EXPORT_SYMBOL_GPL vmlinux 0x540ff177 fuse_do_open +EXPORT_SYMBOL_GPL vmlinux 0x541bb8ac debugfs_remove_recursive +EXPORT_SYMBOL_GPL vmlinux 0x541bd60a irq_work_run +EXPORT_SYMBOL_GPL vmlinux 0x54215db5 visitor64 +EXPORT_SYMBOL_GPL vmlinux 0x54232fab ndo_dflt_bridge_getlink +EXPORT_SYMBOL_GPL vmlinux 0x5425d145 bit_wait_timeout +EXPORT_SYMBOL_GPL vmlinux 0x54334628 cpu_remove_dev_attr_group +EXPORT_SYMBOL_GPL vmlinux 0x54458b56 hrtimer_try_to_cancel +EXPORT_SYMBOL_GPL vmlinux 0x545736e8 iommu_group_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0x545d8dda usb_mon_register +EXPORT_SYMBOL_GPL vmlinux 0x5460c8d8 fsnotify_get_cookie +EXPORT_SYMBOL_GPL vmlinux 0x546c5565 ppc_tb_freq +EXPORT_SYMBOL_GPL vmlinux 0x54740eb7 get_cpu_idle_time +EXPORT_SYMBOL_GPL vmlinux 0x549525ef handle_nested_irq +EXPORT_SYMBOL_GPL vmlinux 0x54c626c3 rio_set_port_lockout +EXPORT_SYMBOL_GPL vmlinux 0x54d46690 uart_parse_earlycon +EXPORT_SYMBOL_GPL vmlinux 0x553b49a4 cpufreq_get_driver_data +EXPORT_SYMBOL_GPL vmlinux 0x55417264 unregister_vt_notifier +EXPORT_SYMBOL_GPL vmlinux 0x5555130d fuse_dev_operations +EXPORT_SYMBOL_GPL vmlinux 0x555727ef get_task_pid +EXPORT_SYMBOL_GPL vmlinux 0x555d93de debugfs_create_u8 +EXPORT_SYMBOL_GPL vmlinux 0x5568e4b5 inet_csk_clone_lock +EXPORT_SYMBOL_GPL vmlinux 0x55784228 regmap_irq_get_virq +EXPORT_SYMBOL_GPL vmlinux 0x5588879e kvmppc_entry_trampoline +EXPORT_SYMBOL_GPL vmlinux 0x558c4407 regmap_init_mmio_clk +EXPORT_SYMBOL_GPL vmlinux 0x558d500b hwpoison_filter +EXPORT_SYMBOL_GPL vmlinux 0x55a52e69 pm_runtime_force_suspend +EXPORT_SYMBOL_GPL vmlinux 0x55b39a3e regmap_reinit_cache +EXPORT_SYMBOL_GPL vmlinux 0x55b9d393 part_round_stats +EXPORT_SYMBOL_GPL vmlinux 0x55c1864c wakeup_source_add +EXPORT_SYMBOL_GPL vmlinux 0x55f48a0a blk_unprep_request +EXPORT_SYMBOL_GPL vmlinux 0x55fb5c35 mpic_subsys +EXPORT_SYMBOL_GPL vmlinux 0x55fc6213 dma_buf_get +EXPORT_SYMBOL_GPL vmlinux 0x5602ff76 ehci_handshake +EXPORT_SYMBOL_GPL vmlinux 0x560a2d70 da903x_writes +EXPORT_SYMBOL_GPL vmlinux 0x560aa1db opal_tpo_write +EXPORT_SYMBOL_GPL vmlinux 0x5611cf02 crypto_register_aead +EXPORT_SYMBOL_GPL vmlinux 0x561cb6f2 pm_schedule_suspend +EXPORT_SYMBOL_GPL vmlinux 0x56256e8a orderly_poweroff +EXPORT_SYMBOL_GPL vmlinux 0x56310925 regulator_mode_to_status +EXPORT_SYMBOL_GPL vmlinux 0x5651e109 bus_get_kset +EXPORT_SYMBOL_GPL vmlinux 0x565b6892 uuid_le_gen +EXPORT_SYMBOL_GPL vmlinux 0x56886b19 scatterwalk_map +EXPORT_SYMBOL_GPL vmlinux 0x569a11a1 usb_autopm_put_interface_no_suspend +EXPORT_SYMBOL_GPL vmlinux 0x56a4b464 rhashtable_walk_next +EXPORT_SYMBOL_GPL vmlinux 0x56a7ebec init_srcu_struct +EXPORT_SYMBOL_GPL vmlinux 0x56d697ce cpu_up +EXPORT_SYMBOL_GPL vmlinux 0x56e75d47 klist_node_attached +EXPORT_SYMBOL_GPL vmlinux 0x56e75fe2 mbox_controller_unregister +EXPORT_SYMBOL_GPL vmlinux 0x56ef774f skb_segment +EXPORT_SYMBOL_GPL vmlinux 0x56f9c496 device_dma_is_coherent +EXPORT_SYMBOL_GPL vmlinux 0x57162340 sched_setattr +EXPORT_SYMBOL_GPL vmlinux 0x571f7378 blkg_stat_recursive_sum +EXPORT_SYMBOL_GPL vmlinux 0x57209ec0 tun_get_socket +EXPORT_SYMBOL_GPL vmlinux 0x57231f45 ring_buffer_record_on +EXPORT_SYMBOL_GPL vmlinux 0x5727847b crypto_alloc_akcipher +EXPORT_SYMBOL_GPL vmlinux 0x572b8dc3 rtnl_link_unregister +EXPORT_SYMBOL_GPL vmlinux 0x575c5f94 execute_in_process_context +EXPORT_SYMBOL_GPL vmlinux 0x576f4d1c mmu_notifier_unregister_no_release +EXPORT_SYMBOL_GPL vmlinux 0x5790e7a0 pci_unlock_rescan_remove +EXPORT_SYMBOL_GPL vmlinux 0x579c71a3 sdio_memcpy_toio +EXPORT_SYMBOL_GPL vmlinux 0x579e0bf5 rtnl_unregister_all +EXPORT_SYMBOL_GPL vmlinux 0x57a05dde iommu_flush_tce +EXPORT_SYMBOL_GPL vmlinux 0x57a8c0ed balloon_page_dequeue +EXPORT_SYMBOL_GPL vmlinux 0x57c39727 kdb_register_flags +EXPORT_SYMBOL_GPL vmlinux 0x57d7a430 ata_sas_queuecmd +EXPORT_SYMBOL_GPL vmlinux 0x57e53fc7 component_del +EXPORT_SYMBOL_GPL vmlinux 0x58130eb0 pci_enable_rom +EXPORT_SYMBOL_GPL vmlinux 0x58291b41 i2c_new_device +EXPORT_SYMBOL_GPL vmlinux 0x582c049d key_set_timeout +EXPORT_SYMBOL_GPL vmlinux 0x582e0d13 eeh_dev_open +EXPORT_SYMBOL_GPL vmlinux 0x5846d962 usb_free_urb +EXPORT_SYMBOL_GPL vmlinux 0x58678fd3 tty_buffer_lock_exclusive +EXPORT_SYMBOL_GPL vmlinux 0x586dbbeb wm8997_patch +EXPORT_SYMBOL_GPL vmlinux 0x5882b38a ftrace_set_filter +EXPORT_SYMBOL_GPL vmlinux 0x5884fd65 blocking_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0x5886f6d4 regulator_get_linear_step +EXPORT_SYMBOL_GPL vmlinux 0x588aac09 device_create_vargs +EXPORT_SYMBOL_GPL vmlinux 0x5892f832 release_pmc_hardware +EXPORT_SYMBOL_GPL vmlinux 0x589523e3 spu_switch_notify +EXPORT_SYMBOL_GPL vmlinux 0x58970ac9 __module_text_address +EXPORT_SYMBOL_GPL vmlinux 0x589be474 max8997_read_reg +EXPORT_SYMBOL_GPL vmlinux 0x589e4569 syscon_regmap_lookup_by_pdevname +EXPORT_SYMBOL_GPL vmlinux 0x589fb693 regmap_write_async +EXPORT_SYMBOL_GPL vmlinux 0x58a7a646 regmap_field_update_bits +EXPORT_SYMBOL_GPL vmlinux 0x58fca44a vfs_cancel_lock +EXPORT_SYMBOL_GPL vmlinux 0x58fe9409 rio_inb_pwrite_handler +EXPORT_SYMBOL_GPL vmlinux 0x5930468b rio_dma_prep_slave_sg +EXPORT_SYMBOL_GPL vmlinux 0x595ae4a0 rhashtable_walk_start +EXPORT_SYMBOL_GPL vmlinux 0x595c6b01 ata_bmdma_status +EXPORT_SYMBOL_GPL vmlinux 0x597e86e3 devm_regmap_init_mmio_clk +EXPORT_SYMBOL_GPL vmlinux 0x5981674c ping_seq_fops +EXPORT_SYMBOL_GPL vmlinux 0x59a0432d device_init_wakeup +EXPORT_SYMBOL_GPL vmlinux 0x59a19b84 iommu_domain_get_attr +EXPORT_SYMBOL_GPL vmlinux 0x59a276a5 device_set_wakeup_enable +EXPORT_SYMBOL_GPL vmlinux 0x59b2adbf input_ff_effect_from_user +EXPORT_SYMBOL_GPL vmlinux 0x59b596ea ahash_free_instance +EXPORT_SYMBOL_GPL vmlinux 0x59b659d4 devm_of_pwm_get +EXPORT_SYMBOL_GPL vmlinux 0x59de22a0 sysfs_create_link +EXPORT_SYMBOL_GPL vmlinux 0x59de3c77 swiotlb_tbl_map_single +EXPORT_SYMBOL_GPL vmlinux 0x59e2743e call_rcu_bh +EXPORT_SYMBOL_GPL vmlinux 0x59e503c8 device_remove_file +EXPORT_SYMBOL_GPL vmlinux 0x59eae699 ring_buffer_read_prepare +EXPORT_SYMBOL_GPL vmlinux 0x59eb96ef regcache_mark_dirty +EXPORT_SYMBOL_GPL vmlinux 0x5a01d61b rtc_irq_register +EXPORT_SYMBOL_GPL vmlinux 0x5a0434bf rtc_update_irq_enable +EXPORT_SYMBOL_GPL vmlinux 0x5a30682f inet_hashinfo_init +EXPORT_SYMBOL_GPL vmlinux 0x5a372d14 cpu_remove_dev_attr +EXPORT_SYMBOL_GPL vmlinux 0x5a3a06be fuse_direct_io +EXPORT_SYMBOL_GPL vmlinux 0x5a478f24 rio_dev_get +EXPORT_SYMBOL_GPL vmlinux 0x5a68565f pci_bus_max_busnr +EXPORT_SYMBOL_GPL vmlinux 0x5a726bc1 nf_unregister_afinfo +EXPORT_SYMBOL_GPL vmlinux 0x5a7bfe41 crypto_probing_notify +EXPORT_SYMBOL_GPL vmlinux 0x5a915298 xfrm_audit_policy_delete +EXPORT_SYMBOL_GPL vmlinux 0x5aa32afe power_supply_put +EXPORT_SYMBOL_GPL vmlinux 0x5acc1bc4 fat_get_dotdot_entry +EXPORT_SYMBOL_GPL vmlinux 0x5af8eea1 sdio_set_block_size +EXPORT_SYMBOL_GPL vmlinux 0x5b14b354 regulator_get_init_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x5ba0ab6c cpufreq_frequency_table_cpuinfo +EXPORT_SYMBOL_GPL vmlinux 0x5ba52bf5 of_reconfig_get_state_change +EXPORT_SYMBOL_GPL vmlinux 0x5bc3f6cf kvm_alloc_hpt +EXPORT_SYMBOL_GPL vmlinux 0x5bc465ea rhashtable_destroy +EXPORT_SYMBOL_GPL vmlinux 0x5bcc3e6a kobject_move +EXPORT_SYMBOL_GPL vmlinux 0x5bd0748f crypto_del_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x5bdbac4e rcu_unexpedite_gp +EXPORT_SYMBOL_GPL vmlinux 0x5c0df29c ata_port_desc +EXPORT_SYMBOL_GPL vmlinux 0x5c2689db register_virtio_driver +EXPORT_SYMBOL_GPL vmlinux 0x5c5a1b16 tick_broadcast_control +EXPORT_SYMBOL_GPL vmlinux 0x5ca3708c regmap_exit +EXPORT_SYMBOL_GPL vmlinux 0x5cabdced dev_pm_qos_remove_global_notifier +EXPORT_SYMBOL_GPL vmlinux 0x5caf81c9 pwm_request_from_chip +EXPORT_SYMBOL_GPL vmlinux 0x5cc1e754 crypto_register_shashes +EXPORT_SYMBOL_GPL vmlinux 0x5cc509a4 nsecs_to_jiffies +EXPORT_SYMBOL_GPL vmlinux 0x5cdcfdd9 regulator_bulk_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x5ce21511 blk_trace_remove +EXPORT_SYMBOL_GPL vmlinux 0x5cf8a882 __tracepoint_block_rq_remap +EXPORT_SYMBOL_GPL vmlinux 0x5d12e48f input_event_to_user +EXPORT_SYMBOL_GPL vmlinux 0x5d1bf53d irq_setup_alt_chip +EXPORT_SYMBOL_GPL vmlinux 0x5d2b9c6c sdhci_pci_o2_probe +EXPORT_SYMBOL_GPL vmlinux 0x5d3016f8 mpc8xxx_spi_probe +EXPORT_SYMBOL_GPL vmlinux 0x5d5733b0 sata_sff_hardreset +EXPORT_SYMBOL_GPL vmlinux 0x5d809dcb irq_gc_ack_set_bit +EXPORT_SYMBOL_GPL vmlinux 0x5d8a7594 bpf_prog_get +EXPORT_SYMBOL_GPL vmlinux 0x5da67adc zs_compact +EXPORT_SYMBOL_GPL vmlinux 0x5db1c1d3 __tracepoint_block_split +EXPORT_SYMBOL_GPL vmlinux 0x5dc46d04 fuse_get_req_for_background +EXPORT_SYMBOL_GPL vmlinux 0x5de472d7 ehci_reset +EXPORT_SYMBOL_GPL vmlinux 0x5de9a9ff debugfs_create_devm_seqfile +EXPORT_SYMBOL_GPL vmlinux 0x5e0cf3d3 uhci_reset_hc +EXPORT_SYMBOL_GPL vmlinux 0x5e19ab12 disk_map_sector_rcu +EXPORT_SYMBOL_GPL vmlinux 0x5e1a67d3 cpufreq_cooling_register +EXPORT_SYMBOL_GPL vmlinux 0x5e20969e cbe_spu_info +EXPORT_SYMBOL_GPL vmlinux 0x5e30db83 da9052_adc_manual_read +EXPORT_SYMBOL_GPL vmlinux 0x5e3f1d4a virtio_break_device +EXPORT_SYMBOL_GPL vmlinux 0x5e51cd74 swiotlb_nr_tbl +EXPORT_SYMBOL_GPL vmlinux 0x5e5200a4 to_nvdimm_bus +EXPORT_SYMBOL_GPL vmlinux 0x5e673c3d cn_add_callback +EXPORT_SYMBOL_GPL vmlinux 0x5e769986 ps3_os_area_get_av_multi_out +EXPORT_SYMBOL_GPL vmlinux 0x5e7b8b4a shmem_read_mapping_page_gfp +EXPORT_SYMBOL_GPL vmlinux 0x5e7e9202 i2c_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0x5eaae542 handle_simple_irq +EXPORT_SYMBOL_GPL vmlinux 0x5eacc0cf of_platform_depopulate +EXPORT_SYMBOL_GPL vmlinux 0x5ed04cd0 pmf_do_irq +EXPORT_SYMBOL_GPL vmlinux 0x5ed57511 rio_request_inb_dbell +EXPORT_SYMBOL_GPL vmlinux 0x5ee66c64 fl6_merge_options +EXPORT_SYMBOL_GPL vmlinux 0x5ee7542e reserve_pmc_hardware +EXPORT_SYMBOL_GPL vmlinux 0x5f224e27 of_pci_dma_configure +EXPORT_SYMBOL_GPL vmlinux 0x5f226035 mod_delayed_work_on +EXPORT_SYMBOL_GPL vmlinux 0x5f26921a scsi_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x5f29416d srcu_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x5f2a46a4 wbc_account_io +EXPORT_SYMBOL_GPL vmlinux 0x5f5c2f82 fuse_dev_free +EXPORT_SYMBOL_GPL vmlinux 0x5f5cde25 cpufreq_freq_transition_end +EXPORT_SYMBOL_GPL vmlinux 0x5f66945a zap_vma_ptes +EXPORT_SYMBOL_GPL vmlinux 0x5f745f17 rio_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x5f79a98b __tracepoint_napi_poll +EXPORT_SYMBOL_GPL vmlinux 0x5f931686 debugfs_rename +EXPORT_SYMBOL_GPL vmlinux 0x5f97924e swiotlb_tbl_unmap_single +EXPORT_SYMBOL_GPL vmlinux 0x5f983de1 platform_device_del +EXPORT_SYMBOL_GPL vmlinux 0x5fac063b dma_get_slave_channel +EXPORT_SYMBOL_GPL vmlinux 0x5fb80182 regulator_get_optional +EXPORT_SYMBOL_GPL vmlinux 0x5fc06574 ata_qc_complete +EXPORT_SYMBOL_GPL vmlinux 0x5fc5f6d2 usb_autopm_put_interface +EXPORT_SYMBOL_GPL vmlinux 0x60215c49 irq_set_chip_and_handler_name +EXPORT_SYMBOL_GPL vmlinux 0x60467b06 btree_grim_visitor +EXPORT_SYMBOL_GPL vmlinux 0x60506751 unmap_kernel_range_noflush +EXPORT_SYMBOL_GPL vmlinux 0x608b93c5 max8997_update_reg +EXPORT_SYMBOL_GPL vmlinux 0x60a13e90 rcu_barrier +EXPORT_SYMBOL_GPL vmlinux 0x60a32ea9 pm_power_off +EXPORT_SYMBOL_GPL vmlinux 0x60abbe05 bus_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0x60cca309 __srcu_read_lock +EXPORT_SYMBOL_GPL vmlinux 0x60cf7ff1 blk_mq_request_started +EXPORT_SYMBOL_GPL vmlinux 0x60e6e892 of_pci_range_parser_one +EXPORT_SYMBOL_GPL vmlinux 0x60ea9508 mm_kobj +EXPORT_SYMBOL_GPL vmlinux 0x60f08a2c crypto_spawn_tfm2 +EXPORT_SYMBOL_GPL vmlinux 0x61229e5f gpiod_set_array_value +EXPORT_SYMBOL_GPL vmlinux 0x612402cd posix_acl_create +EXPORT_SYMBOL_GPL vmlinux 0x61256fef irq_domain_associate_many +EXPORT_SYMBOL_GPL vmlinux 0x6144b75f fb_deferred_io_open +EXPORT_SYMBOL_GPL vmlinux 0x61618ce8 ata_pci_sff_prepare_host +EXPORT_SYMBOL_GPL vmlinux 0x6193c080 i2c_probe_func_quick_read +EXPORT_SYMBOL_GPL vmlinux 0x61a90c54 klist_add_head +EXPORT_SYMBOL_GPL vmlinux 0x61da453e subsys_interface_unregister +EXPORT_SYMBOL_GPL vmlinux 0x61db50d3 relay_open +EXPORT_SYMBOL_GPL vmlinux 0x61edf435 ps3_system_bus_driver_register +EXPORT_SYMBOL_GPL vmlinux 0x620538d9 cpufreq_table_validate_and_show +EXPORT_SYMBOL_GPL vmlinux 0x621f1b7a of_get_nand_on_flash_bbt +EXPORT_SYMBOL_GPL vmlinux 0x622c7922 register_oom_notifier +EXPORT_SYMBOL_GPL vmlinux 0x628b7f80 led_trigger_register_simple +EXPORT_SYMBOL_GPL vmlinux 0x628ebc1d bd_unlink_disk_holder +EXPORT_SYMBOL_GPL vmlinux 0x6296dd4f wm831x_reg_lock +EXPORT_SYMBOL_GPL vmlinux 0x62ba297b extcon_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x62bc614f ata_sff_lost_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x62d740a2 extcon_get_cable_state_ +EXPORT_SYMBOL_GPL vmlinux 0x63088682 usb_autopm_put_interface_async +EXPORT_SYMBOL_GPL vmlinux 0x6315760e __rtnl_af_unregister +EXPORT_SYMBOL_GPL vmlinux 0x632f52a3 sdio_claim_host +EXPORT_SYMBOL_GPL vmlinux 0x633dabc7 securityfs_create_dir +EXPORT_SYMBOL_GPL vmlinux 0x6393dc30 rhashtable_walk_init +EXPORT_SYMBOL_GPL vmlinux 0x6394e1dc tty_init_termios +EXPORT_SYMBOL_GPL vmlinux 0x63c7cf11 inet_putpeer +EXPORT_SYMBOL_GPL vmlinux 0x63dbd50d uart_handle_cts_change +EXPORT_SYMBOL_GPL vmlinux 0x63f139a1 i2c_generic_gpio_recovery +EXPORT_SYMBOL_GPL vmlinux 0x63f4ca8f sata_pmp_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x6409245f regmap_field_read +EXPORT_SYMBOL_GPL vmlinux 0x6410e160 ktime_mono_to_any +EXPORT_SYMBOL_GPL vmlinux 0x64112828 usb_init_urb +EXPORT_SYMBOL_GPL vmlinux 0x64344b63 pm_generic_suspend_noirq +EXPORT_SYMBOL_GPL vmlinux 0x6448d297 power_supply_set_battery_charged +EXPORT_SYMBOL_GPL vmlinux 0x6459fd7b component_add +EXPORT_SYMBOL_GPL vmlinux 0x645e5062 bus_rescan_devices +EXPORT_SYMBOL_GPL vmlinux 0x646c78f4 ata_sas_port_resume +EXPORT_SYMBOL_GPL vmlinux 0x646ff939 cgroup_attach_task_all +EXPORT_SYMBOL_GPL vmlinux 0x649afba5 sysfs_remove_file_ns +EXPORT_SYMBOL_GPL vmlinux 0x64bf524d dm_noflush_suspending +EXPORT_SYMBOL_GPL vmlinux 0x6535f405 usb_deregister_device_driver +EXPORT_SYMBOL_GPL vmlinux 0x655ccb79 devres_release +EXPORT_SYMBOL_GPL vmlinux 0x65610736 hvc_instantiate +EXPORT_SYMBOL_GPL vmlinux 0x6566fab6 device_create_file +EXPORT_SYMBOL_GPL vmlinux 0x657c3ab2 xhci_init_driver +EXPORT_SYMBOL_GPL vmlinux 0x65b1f27a kernfs_find_and_get_ns +EXPORT_SYMBOL_GPL vmlinux 0x65bbbc78 schedule_hrtimeout_range +EXPORT_SYMBOL_GPL vmlinux 0x65ccb6f0 call_netevent_notifiers +EXPORT_SYMBOL_GPL vmlinux 0x65e99164 usb_hub_clear_tt_buffer +EXPORT_SYMBOL_GPL vmlinux 0x65f5a154 is_skb_forwardable +EXPORT_SYMBOL_GPL vmlinux 0x661601de sprint_symbol +EXPORT_SYMBOL_GPL vmlinux 0x6636c3c9 irq_set_vcpu_affinity +EXPORT_SYMBOL_GPL vmlinux 0x66404ce5 ata_sff_prereset +EXPORT_SYMBOL_GPL vmlinux 0x6647852b ref_module +EXPORT_SYMBOL_GPL vmlinux 0x665af6ad usb_phy_generic_unregister +EXPORT_SYMBOL_GPL vmlinux 0x667a812c ps3av_set_video_mode +EXPORT_SYMBOL_GPL vmlinux 0x667b41ff devm_regulator_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x668402aa crypto_put_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x668cb16c devm_mdiobus_alloc_size +EXPORT_SYMBOL_GPL vmlinux 0x669e2c3f clockevent_delta2ns +EXPORT_SYMBOL_GPL vmlinux 0x669f8fc9 disk_get_part +EXPORT_SYMBOL_GPL vmlinux 0x66af03bf bdev_direct_access +EXPORT_SYMBOL_GPL vmlinux 0x66afb53b unix_table_lock +EXPORT_SYMBOL_GPL vmlinux 0x66c6b8a7 tcp_ca_get_name_by_key +EXPORT_SYMBOL_GPL vmlinux 0x66d4d01d regulator_get_current_limit +EXPORT_SYMBOL_GPL vmlinux 0x66d87d38 symbol_put_addr +EXPORT_SYMBOL_GPL vmlinux 0x66e3203d ata_std_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x66f952e0 fwnode_property_read_string +EXPORT_SYMBOL_GPL vmlinux 0x67149303 fat_attach +EXPORT_SYMBOL_GPL vmlinux 0x6733a749 ps3_vuart_read +EXPORT_SYMBOL_GPL vmlinux 0x6734f97f usb_hcd_unlink_urb_from_ep +EXPORT_SYMBOL_GPL vmlinux 0x673e9579 device_attach +EXPORT_SYMBOL_GPL vmlinux 0x674e13e1 public_key_destroy +EXPORT_SYMBOL_GPL vmlinux 0x674e1c2f inet6_sk_rebuild_header +EXPORT_SYMBOL_GPL vmlinux 0x6786c624 crypto_mod_put +EXPORT_SYMBOL_GPL vmlinux 0x678a4105 synchronize_srcu_expedited +EXPORT_SYMBOL_GPL vmlinux 0x67919f73 tcp_slow_start +EXPORT_SYMBOL_GPL vmlinux 0x67935f81 ata_host_alloc +EXPORT_SYMBOL_GPL vmlinux 0x67955ce6 profile_hits +EXPORT_SYMBOL_GPL vmlinux 0x67a09d4a driver_find_device +EXPORT_SYMBOL_GPL vmlinux 0x67a44e1c fuse_conn_put +EXPORT_SYMBOL_GPL vmlinux 0x67ab1803 cpuidle_unregister +EXPORT_SYMBOL_GPL vmlinux 0x67b61ea1 rio_mport_chk_dev_access +EXPORT_SYMBOL_GPL vmlinux 0x67b9c122 blk_mq_freeze_queue +EXPORT_SYMBOL_GPL vmlinux 0x67eda82b tps65912_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x67f106c0 pingv6_prot +EXPORT_SYMBOL_GPL vmlinux 0x67f554db sock_diag_unregister_inet_compat +EXPORT_SYMBOL_GPL vmlinux 0x68204af6 devfreq_event_get_edev_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0x6824c923 serial8250_tx_chars +EXPORT_SYMBOL_GPL vmlinux 0x682ee1f2 of_phy_provider_unregister +EXPORT_SYMBOL_GPL vmlinux 0x683b7dde blkg_rwstat_recursive_sum +EXPORT_SYMBOL_GPL vmlinux 0x6841e861 scsi_nl_sock +EXPORT_SYMBOL_GPL vmlinux 0x684f9848 iommu_domain_window_disable +EXPORT_SYMBOL_GPL vmlinux 0x6878df69 smpboot_update_cpumask_percpu_thread +EXPORT_SYMBOL_GPL vmlinux 0x687e1527 pci_enable_pasid +EXPORT_SYMBOL_GPL vmlinux 0x688335d5 iommu_domain_set_attr +EXPORT_SYMBOL_GPL vmlinux 0x68938350 nvdimm_create +EXPORT_SYMBOL_GPL vmlinux 0x689a7fe2 ata_sff_dma_pause +EXPORT_SYMBOL_GPL vmlinux 0x68c7b0a1 put_device +EXPORT_SYMBOL_GPL vmlinux 0x68ccb713 irq_set_default_host +EXPORT_SYMBOL_GPL vmlinux 0x68ebb3e6 device_property_read_u16_array +EXPORT_SYMBOL_GPL vmlinux 0x690b6b2f usb_hcd_pci_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x6921aa34 compat_put_timeval +EXPORT_SYMBOL_GPL vmlinux 0x69237ad4 da9052_disable_irq_nosync +EXPORT_SYMBOL_GPL vmlinux 0x6923ce63 irq_work_sync +EXPORT_SYMBOL_GPL vmlinux 0x6924134b simple_attr_read +EXPORT_SYMBOL_GPL vmlinux 0x69244682 scsi_autopm_put_device +EXPORT_SYMBOL_GPL vmlinux 0x69447467 ring_buffer_write +EXPORT_SYMBOL_GPL vmlinux 0x69790ef6 __init_new_context +EXPORT_SYMBOL_GPL vmlinux 0x697c5d0d tracing_snapshot_alloc +EXPORT_SYMBOL_GPL vmlinux 0x697cbbb4 threads_per_core +EXPORT_SYMBOL_GPL vmlinux 0x698557f3 __get_vm_area +EXPORT_SYMBOL_GPL vmlinux 0x698a899f ring_buffer_peek +EXPORT_SYMBOL_GPL vmlinux 0x698e00a9 key_type_encrypted +EXPORT_SYMBOL_GPL vmlinux 0x6996a278 srp_rport_del +EXPORT_SYMBOL_GPL vmlinux 0x69ee7656 crypto_register_shash +EXPORT_SYMBOL_GPL vmlinux 0x69f04812 component_unbind_all +EXPORT_SYMBOL_GPL vmlinux 0x6a080de6 regcache_drop_region +EXPORT_SYMBOL_GPL vmlinux 0x6a1733eb iommu_group_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x6a33d972 skb_pull_rcsum +EXPORT_SYMBOL_GPL vmlinux 0x6a4f623b mmu_notifier_synchronize +EXPORT_SYMBOL_GPL vmlinux 0x6a5fb566 rcu_sched_force_quiescent_state +EXPORT_SYMBOL_GPL vmlinux 0x6a6cafd2 ring_buffer_read_page +EXPORT_SYMBOL_GPL vmlinux 0x6a751007 wm8350_device_exit +EXPORT_SYMBOL_GPL vmlinux 0x6a8441be cpci_hp_start +EXPORT_SYMBOL_GPL vmlinux 0x6a855601 dev_pm_disable_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0x6a8a2fb8 da903x_reads +EXPORT_SYMBOL_GPL vmlinux 0x6abbdbb6 inet_twsk_schedule +EXPORT_SYMBOL_GPL vmlinux 0x6acb8d84 ppc64_caches +EXPORT_SYMBOL_GPL vmlinux 0x6b022cbb ata_port_freeze +EXPORT_SYMBOL_GPL vmlinux 0x6b099098 usb_set_configuration +EXPORT_SYMBOL_GPL vmlinux 0x6b16eafa pingv6_ops +EXPORT_SYMBOL_GPL vmlinux 0x6b1abbe1 __online_page_increment_counters +EXPORT_SYMBOL_GPL vmlinux 0x6b29a1fa ring_buffer_event_length +EXPORT_SYMBOL_GPL vmlinux 0x6b2d810d serial8250_get_port +EXPORT_SYMBOL_GPL vmlinux 0x6b2fc3b5 thermal_generate_netlink_event +EXPORT_SYMBOL_GPL vmlinux 0x6b32f816 devres_remove_group +EXPORT_SYMBOL_GPL vmlinux 0x6b3fa550 ata_pci_sff_init_host +EXPORT_SYMBOL_GPL vmlinux 0x6b56e6bb regmap_init +EXPORT_SYMBOL_GPL vmlinux 0x6b81c38b power_supply_unreg_notifier +EXPORT_SYMBOL_GPL vmlinux 0x6bceb881 of_pwm_get +EXPORT_SYMBOL_GPL vmlinux 0x6bd97431 pci_cleanup_aer_uncorrect_error_status +EXPORT_SYMBOL_GPL vmlinux 0x6c07d933 add_uevent_var +EXPORT_SYMBOL_GPL vmlinux 0x6c08f54c noop_backing_dev_info +EXPORT_SYMBOL_GPL vmlinux 0x6c1fa3d9 crypto_aead_setkey +EXPORT_SYMBOL_GPL vmlinux 0x6c232db3 bsg_register_queue +EXPORT_SYMBOL_GPL vmlinux 0x6c2bd6d0 regulator_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x6c4b5503 platform_device_alloc +EXPORT_SYMBOL_GPL vmlinux 0x6c4b6684 reset_control_assert +EXPORT_SYMBOL_GPL vmlinux 0x6c70edd2 bitmap_load +EXPORT_SYMBOL_GPL vmlinux 0x6ca4bf88 async_synchronize_full_domain +EXPORT_SYMBOL_GPL vmlinux 0x6caf037f sdio_writew +EXPORT_SYMBOL_GPL vmlinux 0x6cc13082 da903x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x6cc2fb2c opal_message_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0x6cd21997 ata_tf_to_fis +EXPORT_SYMBOL_GPL vmlinux 0x6ce612d6 srp_remove_host +EXPORT_SYMBOL_GPL vmlinux 0x6d0dcc0a pci_bus_sem +EXPORT_SYMBOL_GPL vmlinux 0x6d17f47e debugfs_create_x16 +EXPORT_SYMBOL_GPL vmlinux 0x6d197aa8 relay_subbufs_consumed +EXPORT_SYMBOL_GPL vmlinux 0x6d1b242b sdio_readb +EXPORT_SYMBOL_GPL vmlinux 0x6d274a9f devm_regulator_register +EXPORT_SYMBOL_GPL vmlinux 0x6d2d4b70 spu_init_channels +EXPORT_SYMBOL_GPL vmlinux 0x6d2fc5a6 net_namespace_list +EXPORT_SYMBOL_GPL vmlinux 0x6d4d2e38 console_drivers +EXPORT_SYMBOL_GPL vmlinux 0x6d6a447b debugfs_create_u32 +EXPORT_SYMBOL_GPL vmlinux 0x6d784f65 sysfs_add_file_to_group +EXPORT_SYMBOL_GPL vmlinux 0x6dc085f7 dev_attr_sw_activity +EXPORT_SYMBOL_GPL vmlinux 0x6de817df led_trigger_event +EXPORT_SYMBOL_GPL vmlinux 0x6dead7e7 usb_control_msg +EXPORT_SYMBOL_GPL vmlinux 0x6df6f483 dummy_con +EXPORT_SYMBOL_GPL vmlinux 0x6e010085 device_bind_driver +EXPORT_SYMBOL_GPL vmlinux 0x6e04a077 usb_bind_phy +EXPORT_SYMBOL_GPL vmlinux 0x6e2802c3 scsi_get_vpd_page +EXPORT_SYMBOL_GPL vmlinux 0x6e379526 kernstart_addr +EXPORT_SYMBOL_GPL vmlinux 0x6e479e43 tps6586x_get_version +EXPORT_SYMBOL_GPL vmlinux 0x6e52e953 wm831x_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0x6e5974a6 ata_std_sched_eh +EXPORT_SYMBOL_GPL vmlinux 0x6e5bf6f7 devres_close_group +EXPORT_SYMBOL_GPL vmlinux 0x6e5ccf85 alarm_restart +EXPORT_SYMBOL_GPL vmlinux 0x6e63172c securityfs_create_file +EXPORT_SYMBOL_GPL vmlinux 0x6e7943ec iommu_group_id +EXPORT_SYMBOL_GPL vmlinux 0x6e7e6006 crypto_larval_lookup +EXPORT_SYMBOL_GPL vmlinux 0x6e89a560 regmap_irq_chip_get_base +EXPORT_SYMBOL_GPL vmlinux 0x6e97bbe6 tpm2_probe +EXPORT_SYMBOL_GPL vmlinux 0x6eb041cd serial8250_request_dma +EXPORT_SYMBOL_GPL vmlinux 0x6ebc0869 devm_hwrng_unregister +EXPORT_SYMBOL_GPL vmlinux 0x6eed103f pmac_i2c_get_adapter +EXPORT_SYMBOL_GPL vmlinux 0x6f057de4 iommu_tce_put_param_check +EXPORT_SYMBOL_GPL vmlinux 0x6f07e47f hvc_alloc +EXPORT_SYMBOL_GPL vmlinux 0x6f0a3a8a usb_ifnum_to_if +EXPORT_SYMBOL_GPL vmlinux 0x6f1d9732 register_pernet_device +EXPORT_SYMBOL_GPL vmlinux 0x6f1ee69e kgdb_unregister_io_module +EXPORT_SYMBOL_GPL vmlinux 0x6f68d90f ata_std_bios_param +EXPORT_SYMBOL_GPL vmlinux 0x6f73e681 blk_queue_flush +EXPORT_SYMBOL_GPL vmlinux 0x6f763b81 iommu_group_remove_device +EXPORT_SYMBOL_GPL vmlinux 0x6f945c8c __find_linux_pte_or_hugepte +EXPORT_SYMBOL_GPL vmlinux 0x6fd3a093 usb_hub_find_child +EXPORT_SYMBOL_GPL vmlinux 0x6fddfa85 __sock_recv_timestamp +EXPORT_SYMBOL_GPL vmlinux 0x6fe3d8cf ktime_add_safe +EXPORT_SYMBOL_GPL vmlinux 0x6ff0b614 of_reset_control_get +EXPORT_SYMBOL_GPL vmlinux 0x6ff607b6 crypto_get_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x6ffcbd1f regulator_bulk_disable +EXPORT_SYMBOL_GPL vmlinux 0x7013923d devfreq_event_add_edev +EXPORT_SYMBOL_GPL vmlinux 0x701a9ad5 __put_task_struct +EXPORT_SYMBOL_GPL vmlinux 0x702df53a trace_event_buffer_commit +EXPORT_SYMBOL_GPL vmlinux 0x7079e4c8 module_mutex +EXPORT_SYMBOL_GPL vmlinux 0x707f1d20 ping_proc_unregister +EXPORT_SYMBOL_GPL vmlinux 0x707ff1bb ata_xfer_mask2mode +EXPORT_SYMBOL_GPL vmlinux 0x708aa9c5 of_phy_simple_xlate +EXPORT_SYMBOL_GPL vmlinux 0x70ab10b3 rio_mport_send_doorbell +EXPORT_SYMBOL_GPL vmlinux 0x70ad54ca dev_get_regmap +EXPORT_SYMBOL_GPL vmlinux 0x70c900aa sata_link_resume +EXPORT_SYMBOL_GPL vmlinux 0x70cc78b0 bio_associate_blkcg +EXPORT_SYMBOL_GPL vmlinux 0x70cf032f usb_hcd_irq +EXPORT_SYMBOL_GPL vmlinux 0x70f8a6a2 ip_route_output_flow +EXPORT_SYMBOL_GPL vmlinux 0x71011a95 pci_test_config_bits +EXPORT_SYMBOL_GPL vmlinux 0x710175cd unregister_pernet_device +EXPORT_SYMBOL_GPL vmlinux 0x710c73b6 crypto_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x71483ab7 usb_disable_xhci_ports +EXPORT_SYMBOL_GPL vmlinux 0x714c0388 arizona_clk32k_disable +EXPORT_SYMBOL_GPL vmlinux 0x716265c7 debugfs_initialized +EXPORT_SYMBOL_GPL vmlinux 0x7174301c __ip_route_output_key +EXPORT_SYMBOL_GPL vmlinux 0x7177a92f iommu_get_domain_for_dev +EXPORT_SYMBOL_GPL vmlinux 0x71ab3a9b mnt_drop_write +EXPORT_SYMBOL_GPL vmlinux 0x71bd01c0 crypto_shash_digest +EXPORT_SYMBOL_GPL vmlinux 0x71d48378 agp_add_bridge +EXPORT_SYMBOL_GPL vmlinux 0x71d497a3 ata_sff_softreset +EXPORT_SYMBOL_GPL vmlinux 0x71dc9998 crypto_il_tab +EXPORT_SYMBOL_GPL vmlinux 0x71e3dd38 regulator_set_voltage_time +EXPORT_SYMBOL_GPL vmlinux 0x71e95955 ip6_local_out +EXPORT_SYMBOL_GPL vmlinux 0x720c2860 dev_pm_qos_add_notifier +EXPORT_SYMBOL_GPL vmlinux 0x7245ffd9 restore_online_page_callback +EXPORT_SYMBOL_GPL vmlinux 0x72523832 of_modalias_node +EXPORT_SYMBOL_GPL vmlinux 0x726292b2 serial8250_rx_chars +EXPORT_SYMBOL_GPL vmlinux 0x727296fc usb_add_phy_dev +EXPORT_SYMBOL_GPL vmlinux 0x72741f25 trace_vbprintk +EXPORT_SYMBOL_GPL vmlinux 0x7278d328 all_vm_events +EXPORT_SYMBOL_GPL vmlinux 0x729aa4dd crypto_shash_setkey +EXPORT_SYMBOL_GPL vmlinux 0x72a4dac9 crypto_ahash_type +EXPORT_SYMBOL_GPL vmlinux 0x72a72b90 rtnl_link_register +EXPORT_SYMBOL_GPL vmlinux 0x72b4890e device_for_each_child +EXPORT_SYMBOL_GPL vmlinux 0x72ce089a pci_create_root_bus +EXPORT_SYMBOL_GPL vmlinux 0x72f47d20 alarm_forward_now +EXPORT_SYMBOL_GPL vmlinux 0x7302637d regmap_raw_write +EXPORT_SYMBOL_GPL vmlinux 0x7307dfb1 __blk_end_request_err +EXPORT_SYMBOL_GPL vmlinux 0x731de8b3 ata_cable_80wire +EXPORT_SYMBOL_GPL vmlinux 0x732e3333 x509_cert_parse +EXPORT_SYMBOL_GPL vmlinux 0x7335f1db usb_poison_urb +EXPORT_SYMBOL_GPL vmlinux 0x7336c698 usb_put_hcd +EXPORT_SYMBOL_GPL vmlinux 0x733c7f30 tps65912_clear_bits +EXPORT_SYMBOL_GPL vmlinux 0x734d2651 ata_platform_remove_one +EXPORT_SYMBOL_GPL vmlinux 0x73510609 fl6_update_dst +EXPORT_SYMBOL_GPL vmlinux 0x735da54c led_classdev_suspend +EXPORT_SYMBOL_GPL vmlinux 0x7365cc99 ata_sas_port_init +EXPORT_SYMBOL_GPL vmlinux 0x737098db pcie_bus_configure_settings +EXPORT_SYMBOL_GPL vmlinux 0x739aa1a1 pmac_i2c_setmode +EXPORT_SYMBOL_GPL vmlinux 0x73a48b4a ata_sff_std_ports +EXPORT_SYMBOL_GPL vmlinux 0x73acde40 skb_zerocopy_headlen +EXPORT_SYMBOL_GPL vmlinux 0x73b919b6 blkcg_policy_register +EXPORT_SYMBOL_GPL vmlinux 0x73c2554f __iowrite64_copy +EXPORT_SYMBOL_GPL vmlinux 0x73c832f2 ata_dev_classify +EXPORT_SYMBOL_GPL vmlinux 0x73d69364 ring_buffer_change_overwrite +EXPORT_SYMBOL_GPL vmlinux 0x7411bec4 netlink_add_tap +EXPORT_SYMBOL_GPL vmlinux 0x74229980 kvmppc_h_put_tce +EXPORT_SYMBOL_GPL vmlinux 0x7434a487 cpci_hp_register_controller +EXPORT_SYMBOL_GPL vmlinux 0x743a165e ata_pack_xfermask +EXPORT_SYMBOL_GPL vmlinux 0x7464ea38 dev_pm_qos_add_global_notifier +EXPORT_SYMBOL_GPL vmlinux 0x74836804 dev_pm_clear_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0x748c6b9e pci_hp_create_module_link +EXPORT_SYMBOL_GPL vmlinux 0x748d801a pcap_adc_sync +EXPORT_SYMBOL_GPL vmlinux 0x74921ce0 driver_for_each_device +EXPORT_SYMBOL_GPL vmlinux 0x74b5ea68 lcm_not_zero +EXPORT_SYMBOL_GPL vmlinux 0x74baf17a tracing_is_on +EXPORT_SYMBOL_GPL vmlinux 0x74bb1652 wm5102_spi_regmap +EXPORT_SYMBOL_GPL vmlinux 0x74bc6d4c device_property_present +EXPORT_SYMBOL_GPL vmlinux 0x74c15aff wait_for_tpm_stat +EXPORT_SYMBOL_GPL vmlinux 0x75133f6e visitor128 +EXPORT_SYMBOL_GPL vmlinux 0x7522f3ba irq_modify_status +EXPORT_SYMBOL_GPL vmlinux 0x75252e2e pci_try_reset_slot +EXPORT_SYMBOL_GPL vmlinux 0x7528a009 pm_runtime_allow +EXPORT_SYMBOL_GPL vmlinux 0x753fdf47 pmf_find_function +EXPORT_SYMBOL_GPL vmlinux 0x75611765 irq_create_strict_mappings +EXPORT_SYMBOL_GPL vmlinux 0x757b49d2 kmsg_dump_get_line +EXPORT_SYMBOL_GPL vmlinux 0x7588b455 kvmppc_clear_ref_hpte +EXPORT_SYMBOL_GPL vmlinux 0x758a782e blk_fill_rwbs +EXPORT_SYMBOL_GPL vmlinux 0x75ab1521 gov_queue_work +EXPORT_SYMBOL_GPL vmlinux 0x75b247ba sata_link_hardreset +EXPORT_SYMBOL_GPL vmlinux 0x75d17d0b pmac_i2c_open +EXPORT_SYMBOL_GPL vmlinux 0x75d20af3 ahash_register_instance +EXPORT_SYMBOL_GPL vmlinux 0x75daee9b blk_mq_tags_cpumask +EXPORT_SYMBOL_GPL vmlinux 0x75f2a044 usb_wait_anchor_empty_timeout +EXPORT_SYMBOL_GPL vmlinux 0x762c0858 klist_prev +EXPORT_SYMBOL_GPL vmlinux 0x76381721 usb_hcd_pci_pm_ops +EXPORT_SYMBOL_GPL vmlinux 0x76485da4 regulator_get_bypass_regmap +EXPORT_SYMBOL_GPL vmlinux 0x764b431e pm_generic_runtime_suspend +EXPORT_SYMBOL_GPL vmlinux 0x764d2f0f gpiod_put_array +EXPORT_SYMBOL_GPL vmlinux 0x7655e41d pm_generic_suspend_late +EXPORT_SYMBOL_GPL vmlinux 0x76586110 rio_release_outb_dbell +EXPORT_SYMBOL_GPL vmlinux 0x765f37ac of_css +EXPORT_SYMBOL_GPL vmlinux 0x76727884 devfreq_event_set_event +EXPORT_SYMBOL_GPL vmlinux 0x7681946c unregister_pm_notifier +EXPORT_SYMBOL_GPL vmlinux 0x769bc9fb __netpoll_cleanup +EXPORT_SYMBOL_GPL vmlinux 0x76dee223 pci_hp_deregister +EXPORT_SYMBOL_GPL vmlinux 0x76f3aa79 platform_get_resource_byname +EXPORT_SYMBOL_GPL vmlinux 0x7729cbdd task_handoff_register +EXPORT_SYMBOL_GPL vmlinux 0x7737ab64 inet_twsk_alloc +EXPORT_SYMBOL_GPL vmlinux 0x7754bc11 dm_hold +EXPORT_SYMBOL_GPL vmlinux 0x775dfd8d regmap_get_device +EXPORT_SYMBOL_GPL vmlinux 0x7763c4f6 crypto_mod_get +EXPORT_SYMBOL_GPL vmlinux 0x7774a456 regmap_add_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0x777b2c97 desc_to_gpio +EXPORT_SYMBOL_GPL vmlinux 0x778becea device_property_read_u8_array +EXPORT_SYMBOL_GPL vmlinux 0x7798fe6a of_pci_find_msi_chip_by_node +EXPORT_SYMBOL_GPL vmlinux 0x77bb6973 eeh_add_device_tree_late +EXPORT_SYMBOL_GPL vmlinux 0x77c65d3f ata_bmdma_port_intr +EXPORT_SYMBOL_GPL vmlinux 0x77ce23b2 get_governor_parent_kobj +EXPORT_SYMBOL_GPL vmlinux 0x77dd4e70 usb_queue_reset_device +EXPORT_SYMBOL_GPL vmlinux 0x77f3e4ab of_node_to_nid +EXPORT_SYMBOL_GPL vmlinux 0x77f666de tracepoint_probe_register +EXPORT_SYMBOL_GPL vmlinux 0x78143bf3 udp6_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x78263af0 pm_runtime_no_callbacks +EXPORT_SYMBOL_GPL vmlinux 0x785ddc31 md_rdev_clear +EXPORT_SYMBOL_GPL vmlinux 0x786fe1f2 tty_port_tty_wakeup +EXPORT_SYMBOL_GPL vmlinux 0x7870437a regulator_enable_regmap +EXPORT_SYMBOL_GPL vmlinux 0x78719337 tty_put_char +EXPORT_SYMBOL_GPL vmlinux 0x787c882b lzo1x_1_compress +EXPORT_SYMBOL_GPL vmlinux 0x78811cff adp5520_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0x78815cc6 cpu_device_create +EXPORT_SYMBOL_GPL vmlinux 0x789145e3 mpc8xxx_spi_tx_buf_u8 +EXPORT_SYMBOL_GPL vmlinux 0x789a931c blkcipher_walk_virt +EXPORT_SYMBOL_GPL vmlinux 0x789e3279 bus_find_device_by_name +EXPORT_SYMBOL_GPL vmlinux 0x789e76b2 device_find_child +EXPORT_SYMBOL_GPL vmlinux 0x78a6ca9f device_store_int +EXPORT_SYMBOL_GPL vmlinux 0x78ae8175 smp_call_function_single_async +EXPORT_SYMBOL_GPL vmlinux 0x78b30a3d gpiod_put +EXPORT_SYMBOL_GPL vmlinux 0x78c37c91 inet6_csk_bind_conflict +EXPORT_SYMBOL_GPL vmlinux 0x78d93c3c __bpf_prog_free +EXPORT_SYMBOL_GPL vmlinux 0x78db7b3a usb_clear_halt +EXPORT_SYMBOL_GPL vmlinux 0x78e71fa4 pci_reset_bus +EXPORT_SYMBOL_GPL vmlinux 0x78f1e0fe sock_prot_inuse_get +EXPORT_SYMBOL_GPL vmlinux 0x7926ca40 extcon_dev_free +EXPORT_SYMBOL_GPL vmlinux 0x79322f96 spu_remove_dev_attr +EXPORT_SYMBOL_GPL vmlinux 0x7941aeb1 mbox_client_txdone +EXPORT_SYMBOL_GPL vmlinux 0x7944e0fc tracing_off +EXPORT_SYMBOL_GPL vmlinux 0x7944f1ae crypto_create_tfm +EXPORT_SYMBOL_GPL vmlinux 0x794b7271 orderly_reboot +EXPORT_SYMBOL_GPL vmlinux 0x795b6af0 synchronize_srcu +EXPORT_SYMBOL_GPL vmlinux 0x795ec6b2 of_get_fb_videomode +EXPORT_SYMBOL_GPL vmlinux 0x796c2d48 dm_get_md +EXPORT_SYMBOL_GPL vmlinux 0x79747f6d inet_unhash +EXPORT_SYMBOL_GPL vmlinux 0x7993d9eb shash_attr_alg +EXPORT_SYMBOL_GPL vmlinux 0x799f13d1 rio_release_dma +EXPORT_SYMBOL_GPL vmlinux 0x79c79fe4 wm831x_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0x79defbe1 kthread_should_park +EXPORT_SYMBOL_GPL vmlinux 0x79ef27b5 task_cls_state +EXPORT_SYMBOL_GPL vmlinux 0x79f41d5b try_get_online_cpus +EXPORT_SYMBOL_GPL vmlinux 0x7a2c2f14 mm_iommu_find +EXPORT_SYMBOL_GPL vmlinux 0x7a2e4b44 ezx_pcap_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x7a32253a ata_dev_pair +EXPORT_SYMBOL_GPL vmlinux 0x7a4fc779 pci_user_write_config_dword +EXPORT_SYMBOL_GPL vmlinux 0x7a636735 wm8350_reg_lock +EXPORT_SYMBOL_GPL vmlinux 0x7a7fc019 wait_on_page_bit_killable_timeout +EXPORT_SYMBOL_GPL vmlinux 0x7a80f34b class_dev_iter_next +EXPORT_SYMBOL_GPL vmlinux 0x7a944007 rcu_idle_enter +EXPORT_SYMBOL_GPL vmlinux 0x7aa26f8a pskb_put +EXPORT_SYMBOL_GPL vmlinux 0x7ab12f22 vfs_fallocate +EXPORT_SYMBOL_GPL vmlinux 0x7ac16835 device_remove_file_self +EXPORT_SYMBOL_GPL vmlinux 0x7b0f1ab3 ring_buffer_free_read_page +EXPORT_SYMBOL_GPL vmlinux 0x7b1d544d edac_handler_set +EXPORT_SYMBOL_GPL vmlinux 0x7b4d6163 tcp_send_ack +EXPORT_SYMBOL_GPL vmlinux 0x7b5b201c of_irq_parse_raw +EXPORT_SYMBOL_GPL vmlinux 0x7b66fa18 sdio_f0_readb +EXPORT_SYMBOL_GPL vmlinux 0x7b70ed5c pm_qos_request_active +EXPORT_SYMBOL_GPL vmlinux 0x7b9b49e6 list_lru_walk_node +EXPORT_SYMBOL_GPL vmlinux 0x7bc756ae crypto_hash_walk_done +EXPORT_SYMBOL_GPL vmlinux 0x7be3a761 fuse_request_send_background +EXPORT_SYMBOL_GPL vmlinux 0x7c22945b virtqueue_notify +EXPORT_SYMBOL_GPL vmlinux 0x7c3140a4 ata_link_online +EXPORT_SYMBOL_GPL vmlinux 0x7c346357 pkey_algo +EXPORT_SYMBOL_GPL vmlinux 0x7c37bc89 pseries_ioei_notifier_list +EXPORT_SYMBOL_GPL vmlinux 0x7c40aeac devm_of_phy_get +EXPORT_SYMBOL_GPL vmlinux 0x7c5deffd blkg_lookup +EXPORT_SYMBOL_GPL vmlinux 0x7c7468ec ping_recvmsg +EXPORT_SYMBOL_GPL vmlinux 0x7c9f3e69 __tracepoint_add_device_to_group +EXPORT_SYMBOL_GPL vmlinux 0x7cc4655b __irq_set_handler +EXPORT_SYMBOL_GPL vmlinux 0x7cc7221a regulator_get_voltage +EXPORT_SYMBOL_GPL vmlinux 0x7cd6f042 cpufreq_get_current_driver +EXPORT_SYMBOL_GPL vmlinux 0x7ceaf0d5 generic_handle_irq +EXPORT_SYMBOL_GPL vmlinux 0x7d00c65b nd_synchronize +EXPORT_SYMBOL_GPL vmlinux 0x7d59dd46 pm_wq +EXPORT_SYMBOL_GPL vmlinux 0x7d5d51df tps6586x_writes +EXPORT_SYMBOL_GPL vmlinux 0x7d7ad7d1 extcon_get_cable_state +EXPORT_SYMBOL_GPL vmlinux 0x7d8358ff ata_do_set_mode +EXPORT_SYMBOL_GPL vmlinux 0x7d888a49 gpiod_set_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x7dab26b6 wm831x_isinkv_values +EXPORT_SYMBOL_GPL vmlinux 0x7dc59966 ip6_append_data +EXPORT_SYMBOL_GPL vmlinux 0x7dd37bd1 bdev_read_page +EXPORT_SYMBOL_GPL vmlinux 0x7dda30af unregister_tracepoint_module_notifier +EXPORT_SYMBOL_GPL vmlinux 0x7e17ba7b klist_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0x7e237e45 nf_ipv6_ops +EXPORT_SYMBOL_GPL vmlinux 0x7e3e4e0a scsi_eh_ready_devs +EXPORT_SYMBOL_GPL vmlinux 0x7e3f35f2 ps3_vuart_clear_rx_bytes +EXPORT_SYMBOL_GPL vmlinux 0x7e441990 subsys_virtual_register +EXPORT_SYMBOL_GPL vmlinux 0x7e44c4bd unix_peer_get +EXPORT_SYMBOL_GPL vmlinux 0x7e64181d usb_calc_bus_time +EXPORT_SYMBOL_GPL vmlinux 0x7ea1a2bc probe_kernel_write +EXPORT_SYMBOL_GPL vmlinux 0x7efdf498 platform_add_devices +EXPORT_SYMBOL_GPL vmlinux 0x7f008202 btree_lookup +EXPORT_SYMBOL_GPL vmlinux 0x7f13d491 pm_qos_remove_request +EXPORT_SYMBOL_GPL vmlinux 0x7f291edd nvdimm_pmem_region_create +EXPORT_SYMBOL_GPL vmlinux 0x7f39c48a dummy_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0x7f409b6c blk_mq_register_disk +EXPORT_SYMBOL_GPL vmlinux 0x7f438cef __rio_local_read_config_32 +EXPORT_SYMBOL_GPL vmlinux 0x7f489c0c __rio_local_write_config_16 +EXPORT_SYMBOL_GPL vmlinux 0x7f4deb8d ablkcipher_walk_done +EXPORT_SYMBOL_GPL vmlinux 0x7f52c522 ps3av_get_mode +EXPORT_SYMBOL_GPL vmlinux 0x7f5f4265 regulator_set_voltage +EXPORT_SYMBOL_GPL vmlinux 0x7f64503d spi_get_next_queued_message +EXPORT_SYMBOL_GPL vmlinux 0x7f7bc710 klist_next +EXPORT_SYMBOL_GPL vmlinux 0x7f7e8e4d subsys_dev_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0x7f943a92 dmaengine_unmap_put +EXPORT_SYMBOL_GPL vmlinux 0x7fb409fc xfrm_audit_state_add +EXPORT_SYMBOL_GPL vmlinux 0x7fb8f7c7 devm_mdiobus_free +EXPORT_SYMBOL_GPL vmlinux 0x7fc37055 tty_buffer_set_limit +EXPORT_SYMBOL_GPL vmlinux 0x7fe9ee05 usb_kill_urb +EXPORT_SYMBOL_GPL vmlinux 0x7ff71098 sata_async_notification +EXPORT_SYMBOL_GPL vmlinux 0x8004042f ata_sff_pause +EXPORT_SYMBOL_GPL vmlinux 0x80196daf anon_inode_getfile +EXPORT_SYMBOL_GPL vmlinux 0x802e1737 tty_buffer_unlock_exclusive +EXPORT_SYMBOL_GPL vmlinux 0x803ae85a usb_get_urb +EXPORT_SYMBOL_GPL vmlinux 0x80507f72 ps3av_audio_mute_analog +EXPORT_SYMBOL_GPL vmlinux 0x80528421 sata_scr_write +EXPORT_SYMBOL_GPL vmlinux 0x80543d5e tty_get_pgrp +EXPORT_SYMBOL_GPL vmlinux 0x8059140d pci_restore_ats_state +EXPORT_SYMBOL_GPL vmlinux 0x8065a4fc mmu_notifier_call_srcu +EXPORT_SYMBOL_GPL vmlinux 0x8068900a register_wide_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x80699085 sk_set_memalloc +EXPORT_SYMBOL_GPL vmlinux 0x8080694d dev_pm_qos_expose_flags +EXPORT_SYMBOL_GPL vmlinux 0x808ec1a3 crypto_alg_tested +EXPORT_SYMBOL_GPL vmlinux 0x8093a244 power_supply_external_power_changed +EXPORT_SYMBOL_GPL vmlinux 0x80c68137 nf_log_buf_close +EXPORT_SYMBOL_GPL vmlinux 0x80cf10c4 devfreq_event_disable_edev +EXPORT_SYMBOL_GPL vmlinux 0x80d3927f __tracepoint_block_unplug +EXPORT_SYMBOL_GPL vmlinux 0x80d5e57a mpi_free +EXPORT_SYMBOL_GPL vmlinux 0x80da21c9 ata_dummy_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x80f3268f __trace_printk +EXPORT_SYMBOL_GPL vmlinux 0x80fe241a led_trigger_store +EXPORT_SYMBOL_GPL vmlinux 0x81005461 spu_setup_kernel_slbs +EXPORT_SYMBOL_GPL vmlinux 0x8114467b cn_netlink_send_mult +EXPORT_SYMBOL_GPL vmlinux 0x8114b8d6 md_is_badblock +EXPORT_SYMBOL_GPL vmlinux 0x811c03aa ip4_datagram_release_cb +EXPORT_SYMBOL_GPL vmlinux 0x811dc334 usb_unregister_notify +EXPORT_SYMBOL_GPL vmlinux 0x81380aad rio_route_clr_table +EXPORT_SYMBOL_GPL vmlinux 0x81479b01 posix_timers_register_clock +EXPORT_SYMBOL_GPL vmlinux 0x8149ea54 ata_timing_find_mode +EXPORT_SYMBOL_GPL vmlinux 0x815a9fb7 devm_hwmon_device_register_with_groups +EXPORT_SYMBOL_GPL vmlinux 0x816995eb pci_intx_mask_supported +EXPORT_SYMBOL_GPL vmlinux 0x817f1e46 init_uts_ns +EXPORT_SYMBOL_GPL vmlinux 0x81bcb4c4 of_get_nand_bus_width +EXPORT_SYMBOL_GPL vmlinux 0x81c4a51b out_of_line_wait_on_bit_timeout +EXPORT_SYMBOL_GPL vmlinux 0x81e04588 uart_handle_dcd_change +EXPORT_SYMBOL_GPL vmlinux 0x8223bcba __tracepoint_xhci_dbg_quirks +EXPORT_SYMBOL_GPL vmlinux 0x8249b2a2 transport_destroy_device +EXPORT_SYMBOL_GPL vmlinux 0x82559387 pci_hp_remove_module_link +EXPORT_SYMBOL_GPL vmlinux 0x8274c3dd reset_control_get +EXPORT_SYMBOL_GPL vmlinux 0x82789c69 crypto_aes_set_key +EXPORT_SYMBOL_GPL vmlinux 0x827e5b3d rio_unlock_device +EXPORT_SYMBOL_GPL vmlinux 0x829ebe26 da903x_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0x82b94a45 sk_attach_filter +EXPORT_SYMBOL_GPL vmlinux 0x82d0feff sysfs_remove_file_from_group +EXPORT_SYMBOL_GPL vmlinux 0x82d5590d bpf_prog_create +EXPORT_SYMBOL_GPL vmlinux 0x82d79b51 sysctl_vfs_cache_pressure +EXPORT_SYMBOL_GPL vmlinux 0x82ddd80b regulator_allow_bypass +EXPORT_SYMBOL_GPL vmlinux 0x82f52d18 ata_host_detach +EXPORT_SYMBOL_GPL vmlinux 0x83102935 devm_phy_get +EXPORT_SYMBOL_GPL vmlinux 0x8333b380 phy_pm_runtime_put +EXPORT_SYMBOL_GPL vmlinux 0x834616bb sdev_evt_alloc +EXPORT_SYMBOL_GPL vmlinux 0x835232ec devfreq_event_get_edev_count +EXPORT_SYMBOL_GPL vmlinux 0x8359091d pci_load_saved_state +EXPORT_SYMBOL_GPL vmlinux 0x83612c9e remove_phb_dynamic +EXPORT_SYMBOL_GPL vmlinux 0x836350d7 iommu_attach_device +EXPORT_SYMBOL_GPL vmlinux 0x8368e35d component_master_add_child +EXPORT_SYMBOL_GPL vmlinux 0x836d61d0 atomic_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0x838b13e7 ring_buffer_free +EXPORT_SYMBOL_GPL vmlinux 0x838d24f5 cpufreq_freq_attr_scaling_boost_freqs +EXPORT_SYMBOL_GPL vmlinux 0x8398bd8d of_rescan_bus +EXPORT_SYMBOL_GPL vmlinux 0x839fb186 rio_route_get_entry +EXPORT_SYMBOL_GPL vmlinux 0x83a382ca bus_remove_file +EXPORT_SYMBOL_GPL vmlinux 0x83a4348b sdio_run_irqs +EXPORT_SYMBOL_GPL vmlinux 0x83b03b3c shmem_get_seals +EXPORT_SYMBOL_GPL vmlinux 0x83e1dee9 napi_hash_add +EXPORT_SYMBOL_GPL vmlinux 0x84306d74 gpiod_get_direction +EXPORT_SYMBOL_GPL vmlinux 0x844e2112 iommu_unmap +EXPORT_SYMBOL_GPL vmlinux 0x84536344 devm_regmap_init +EXPORT_SYMBOL_GPL vmlinux 0x8458783c fs_kobj +EXPORT_SYMBOL_GPL vmlinux 0x8481ddb0 virtio_config_changed +EXPORT_SYMBOL_GPL vmlinux 0x8487a2b6 flush_work +EXPORT_SYMBOL_GPL vmlinux 0x84e592b5 virtqueue_get_avail +EXPORT_SYMBOL_GPL vmlinux 0x84e6a356 tty_ldisc_flush +EXPORT_SYMBOL_GPL vmlinux 0x84e6bd76 param_ops_bool_enable_only +EXPORT_SYMBOL_GPL vmlinux 0x84eab362 tty_register_device_attr +EXPORT_SYMBOL_GPL vmlinux 0x85050965 __irq_alloc_descs +EXPORT_SYMBOL_GPL vmlinux 0x850d7645 get_net_ns_by_pid +EXPORT_SYMBOL_GPL vmlinux 0x850f2040 crypto_aead_reqsize +EXPORT_SYMBOL_GPL vmlinux 0x8520cc0d pwm_put +EXPORT_SYMBOL_GPL vmlinux 0x85216155 ezx_pcap_read +EXPORT_SYMBOL_GPL vmlinux 0x8521fc22 invalidate_inode_pages2 +EXPORT_SYMBOL_GPL vmlinux 0x853c4a6e attribute_container_find_class_device +EXPORT_SYMBOL_GPL vmlinux 0x8563215e default_iommu_map_sg +EXPORT_SYMBOL_GPL vmlinux 0x85952e26 xhci_run +EXPORT_SYMBOL_GPL vmlinux 0x85aef10d generic_access_phys +EXPORT_SYMBOL_GPL vmlinux 0x85b849d0 regmap_check_range_table +EXPORT_SYMBOL_GPL vmlinux 0x85b89e74 tty_port_tty_hangup +EXPORT_SYMBOL_GPL vmlinux 0x85c7f674 ring_buffer_normalize_time_stamp +EXPORT_SYMBOL_GPL vmlinux 0x85d0bcce blk_mq_cancel_requeue_work +EXPORT_SYMBOL_GPL vmlinux 0x85d61876 kobject_init_and_add +EXPORT_SYMBOL_GPL vmlinux 0x85f4b59e __blk_put_request +EXPORT_SYMBOL_GPL vmlinux 0x85f9b6f7 kernfs_notify +EXPORT_SYMBOL_GPL vmlinux 0x8644afa5 mmc_regulator_set_ocr +EXPORT_SYMBOL_GPL vmlinux 0x864b0859 wm831x_auxadc_read +EXPORT_SYMBOL_GPL vmlinux 0x864e0a3e mpc8xxx_spi_rx_buf_u8 +EXPORT_SYMBOL_GPL vmlinux 0x86786286 klist_add_behind +EXPORT_SYMBOL_GPL vmlinux 0x868784cb __symbol_get +EXPORT_SYMBOL_GPL vmlinux 0x86885a50 register_cxl_calls +EXPORT_SYMBOL_GPL vmlinux 0x86a5af0d reservation_object_wait_timeout_rcu +EXPORT_SYMBOL_GPL vmlinux 0x86bdf2d6 irq_domain_simple_ops +EXPORT_SYMBOL_GPL vmlinux 0x86e02215 dma_buf_export +EXPORT_SYMBOL_GPL vmlinux 0x86e74900 fuse_abort_conn +EXPORT_SYMBOL_GPL vmlinux 0x86f0d974 get_cached_msi_msg +EXPORT_SYMBOL_GPL vmlinux 0x86f6b99d synchronize_rcu_expedited +EXPORT_SYMBOL_GPL vmlinux 0x86f8c910 pcap_set_ts_bits +EXPORT_SYMBOL_GPL vmlinux 0x8702e548 process_srcu +EXPORT_SYMBOL_GPL vmlinux 0x8703f3ed irq_set_chained_handler_and_data +EXPORT_SYMBOL_GPL vmlinux 0x870d3f74 irq_create_of_mapping +EXPORT_SYMBOL_GPL vmlinux 0x87118621 mmu_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0x8720a08c regulator_map_voltage_ascend +EXPORT_SYMBOL_GPL vmlinux 0x8720bb9e fib_table_lookup +EXPORT_SYMBOL_GPL vmlinux 0x872a9979 pcibios_alloc_controller +EXPORT_SYMBOL_GPL vmlinux 0x873fbaea edac_atomic_assert_error +EXPORT_SYMBOL_GPL vmlinux 0x8746e3c8 dev_pm_domain_attach +EXPORT_SYMBOL_GPL vmlinux 0x8752da23 rio_mport_get_feature +EXPORT_SYMBOL_GPL vmlinux 0x875dce68 usb_choose_configuration +EXPORT_SYMBOL_GPL vmlinux 0x87e1e495 ata_bmdma_stop +EXPORT_SYMBOL_GPL vmlinux 0x87f9f807 fsnotify +EXPORT_SYMBOL_GPL vmlinux 0x8804af3d usb_anchor_suspend_wakeups +EXPORT_SYMBOL_GPL vmlinux 0x8810ad5e crypto_xor +EXPORT_SYMBOL_GPL vmlinux 0x8813a1c9 pci_device_is_present +EXPORT_SYMBOL_GPL vmlinux 0x882be72c event_triggers_call +EXPORT_SYMBOL_GPL vmlinux 0x883994c2 extcon_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x884b8898 simple_attr_release +EXPORT_SYMBOL_GPL vmlinux 0x8866086c user_describe +EXPORT_SYMBOL_GPL vmlinux 0x88ab6fe3 kgdb_active +EXPORT_SYMBOL_GPL vmlinux 0x88acf692 devm_devfreq_event_remove_edev +EXPORT_SYMBOL_GPL vmlinux 0x88b5647c trace_clock_local +EXPORT_SYMBOL_GPL vmlinux 0x88cfaf6a __cpufreq_driver_target +EXPORT_SYMBOL_GPL vmlinux 0x88d852ce key_type_trusted +EXPORT_SYMBOL_GPL vmlinux 0x88dd259a spi_alloc_master +EXPORT_SYMBOL_GPL vmlinux 0x8902530d pci_enable_sriov +EXPORT_SYMBOL_GPL vmlinux 0x8905678e bsg_request_fn +EXPORT_SYMBOL_GPL vmlinux 0x8924eb1e rcu_force_quiescent_state +EXPORT_SYMBOL_GPL vmlinux 0x892791b0 ipv6_recv_error +EXPORT_SYMBOL_GPL vmlinux 0x89455d8a phy_pm_runtime_get +EXPORT_SYMBOL_GPL vmlinux 0x89485687 iommu_group_put +EXPORT_SYMBOL_GPL vmlinux 0x89963373 mddev_resume +EXPORT_SYMBOL_GPL vmlinux 0x89a049a4 usb_debug_root +EXPORT_SYMBOL_GPL vmlinux 0x89ac1202 tps6586x_reads +EXPORT_SYMBOL_GPL vmlinux 0x89bbafc6 usb_register_notify +EXPORT_SYMBOL_GPL vmlinux 0x89ca5bd1 nfq_ct_hook +EXPORT_SYMBOL_GPL vmlinux 0x89dbf5b0 list_lru_destroy +EXPORT_SYMBOL_GPL vmlinux 0x89e2e069 pci_user_read_config_byte +EXPORT_SYMBOL_GPL vmlinux 0x89e8426f wm5110_spi_regmap +EXPORT_SYMBOL_GPL vmlinux 0x8a03e6c1 pci_store_saved_state +EXPORT_SYMBOL_GPL vmlinux 0x8a053f26 spi_alloc_device +EXPORT_SYMBOL_GPL vmlinux 0x8a07b350 get_cpu_device +EXPORT_SYMBOL_GPL vmlinux 0x8a47133e sock_gen_put +EXPORT_SYMBOL_GPL vmlinux 0x8a554a36 mpc8xxx_spi_strmode +EXPORT_SYMBOL_GPL vmlinux 0x8a785d61 reset_controller_register +EXPORT_SYMBOL_GPL vmlinux 0x8abacc47 get_max_files +EXPORT_SYMBOL_GPL vmlinux 0x8ada0f2c regulator_disable_regmap +EXPORT_SYMBOL_GPL vmlinux 0x8b1971e8 rio_get_device +EXPORT_SYMBOL_GPL vmlinux 0x8b1b2cbe posix_clock_unregister +EXPORT_SYMBOL_GPL vmlinux 0x8b3ac0b3 __pm_stay_awake +EXPORT_SYMBOL_GPL vmlinux 0x8b404b50 mmc_get_ext_csd +EXPORT_SYMBOL_GPL vmlinux 0x8b66b56e of_dma_router_register +EXPORT_SYMBOL_GPL vmlinux 0x8b70e8ea __wake_up_sync_key +EXPORT_SYMBOL_GPL vmlinux 0x8b7a61a6 blk_mq_free_hctx_request +EXPORT_SYMBOL_GPL vmlinux 0x8b7f9539 of_usb_get_dr_mode +EXPORT_SYMBOL_GPL vmlinux 0x8bdd2c38 iommu_attach_group +EXPORT_SYMBOL_GPL vmlinux 0x8be553cc ata_scsi_queuecmd +EXPORT_SYMBOL_GPL vmlinux 0x8c0215f2 pm_system_wakeup +EXPORT_SYMBOL_GPL vmlinux 0x8c03d20c destroy_workqueue +EXPORT_SYMBOL_GPL vmlinux 0x8c04efe1 pci_rescan_bus +EXPORT_SYMBOL_GPL vmlinux 0x8c1ed450 gpiod_export_link +EXPORT_SYMBOL_GPL vmlinux 0x8c38ef9c pcibios_find_pci_bus +EXPORT_SYMBOL_GPL vmlinux 0x8c446441 add_to_page_cache_lru +EXPORT_SYMBOL_GPL vmlinux 0x8c4a4211 pci_common_swizzle +EXPORT_SYMBOL_GPL vmlinux 0x8c646600 edac_report_status +EXPORT_SYMBOL_GPL vmlinux 0x8c743fb6 reset_control_status +EXPORT_SYMBOL_GPL vmlinux 0x8c80d6e4 pmac_low_i2c_lock +EXPORT_SYMBOL_GPL vmlinux 0x8c8b3d42 ata_qc_complete_multiple +EXPORT_SYMBOL_GPL vmlinux 0x8cb50e7f kobject_uevent +EXPORT_SYMBOL_GPL vmlinux 0x8cb647a9 relay_switch_subbuf +EXPORT_SYMBOL_GPL vmlinux 0x8cbd2d87 sdio_readsb +EXPORT_SYMBOL_GPL vmlinux 0x8cdd163b irq_alloc_domain_generic_chips +EXPORT_SYMBOL_GPL vmlinux 0x8cea765f memalloc_socks +EXPORT_SYMBOL_GPL vmlinux 0x8d190680 i2c_adapter_type +EXPORT_SYMBOL_GPL vmlinux 0x8d22bb58 iommu_group_alloc +EXPORT_SYMBOL_GPL vmlinux 0x8d383e1d ohci_setup +EXPORT_SYMBOL_GPL vmlinux 0x8d85367f smp_call_function_any +EXPORT_SYMBOL_GPL vmlinux 0x8d8a1e00 ipv4_redirect +EXPORT_SYMBOL_GPL vmlinux 0x8da52eee mbox_chan_txdone +EXPORT_SYMBOL_GPL vmlinux 0x8dbb5813 alarm_cancel +EXPORT_SYMBOL_GPL vmlinux 0x8dbf5a20 kvmppc_hv_entry_trampoline +EXPORT_SYMBOL_GPL vmlinux 0x8dc6da58 tpm_chip_unregister +EXPORT_SYMBOL_GPL vmlinux 0x8dfd5821 __cookie_v6_init_sequence +EXPORT_SYMBOL_GPL vmlinux 0x8e1bf62d subsys_find_device_by_id +EXPORT_SYMBOL_GPL vmlinux 0x8e2b25c2 videomode_from_timings +EXPORT_SYMBOL_GPL vmlinux 0x8e457b92 rio_unmap_inb_region +EXPORT_SYMBOL_GPL vmlinux 0x8e461752 cpu_add_dev_attr_group +EXPORT_SYMBOL_GPL vmlinux 0x8e8062c1 ata_ehi_clear_desc +EXPORT_SYMBOL_GPL vmlinux 0x8e8e15ff thermal_zone_bind_cooling_device +EXPORT_SYMBOL_GPL vmlinux 0x8eb3d954 usb_lock_device_for_reset +EXPORT_SYMBOL_GPL vmlinux 0x8ec56334 pm_generic_resume +EXPORT_SYMBOL_GPL vmlinux 0x8eec30e1 usb_autopm_get_interface +EXPORT_SYMBOL_GPL vmlinux 0x8f0748af rcu_expedite_gp +EXPORT_SYMBOL_GPL vmlinux 0x8f4314fc __inet_lookup_listener +EXPORT_SYMBOL_GPL vmlinux 0x8f4589f4 fuse_dev_alloc +EXPORT_SYMBOL_GPL vmlinux 0x8f62aac5 phy_power_on +EXPORT_SYMBOL_GPL vmlinux 0x8f6cee77 __round_jiffies_relative +EXPORT_SYMBOL_GPL vmlinux 0x8f73fbc3 clone_private_mount +EXPORT_SYMBOL_GPL vmlinux 0x8f788916 unregister_asymmetric_key_parser +EXPORT_SYMBOL_GPL vmlinux 0x8f795667 ata_eh_qc_complete +EXPORT_SYMBOL_GPL vmlinux 0x8f8648c1 virtqueue_get_vring_size +EXPORT_SYMBOL_GPL vmlinux 0x8f8ffd8d sysfs_remove_link +EXPORT_SYMBOL_GPL vmlinux 0x8fbe33bc remove_irq +EXPORT_SYMBOL_GPL vmlinux 0x8fc48cb0 srp_stop_rport_timers +EXPORT_SYMBOL_GPL vmlinux 0x8fc4c22b spi_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x8fc6b112 md_run +EXPORT_SYMBOL_GPL vmlinux 0x8fcbbdbe ping_rcv +EXPORT_SYMBOL_GPL vmlinux 0x8fd840cd percpu_ida_for_each_free +EXPORT_SYMBOL_GPL vmlinux 0x90331817 find_module +EXPORT_SYMBOL_GPL vmlinux 0x903b627c list_lru_isolate_move +EXPORT_SYMBOL_GPL vmlinux 0x904f71f8 uprobe_register +EXPORT_SYMBOL_GPL vmlinux 0x905356e9 ip6_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x9062c322 ring_buffer_consume +EXPORT_SYMBOL_GPL vmlinux 0x9077d5ea usb_kill_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x908e71c2 tty_port_install +EXPORT_SYMBOL_GPL vmlinux 0x909743a5 devres_get +EXPORT_SYMBOL_GPL vmlinux 0x90a1004a crypto_has_alg +EXPORT_SYMBOL_GPL vmlinux 0x90c511f5 of_pci_get_devfn +EXPORT_SYMBOL_GPL vmlinux 0x90c61aea kick_process +EXPORT_SYMBOL_GPL vmlinux 0x90d8bd2d devm_regmap_init_spi +EXPORT_SYMBOL_GPL vmlinux 0x9101a281 ata_cable_unknown +EXPORT_SYMBOL_GPL vmlinux 0x911b8437 ata_std_qc_defer +EXPORT_SYMBOL_GPL vmlinux 0x91327926 of_pci_address_to_resource +EXPORT_SYMBOL_GPL vmlinux 0x916f3970 led_trigger_show +EXPORT_SYMBOL_GPL vmlinux 0x9180d770 shake_page +EXPORT_SYMBOL_GPL vmlinux 0x918ad429 ring_buffer_lock_reserve +EXPORT_SYMBOL_GPL vmlinux 0x91c4dedf bitmap_resize +EXPORT_SYMBOL_GPL vmlinux 0x91c6e5b0 pcap_to_irq +EXPORT_SYMBOL_GPL vmlinux 0x91d8dab5 crypto_alg_lookup +EXPORT_SYMBOL_GPL vmlinux 0x91ddba01 rio_mport_get_efb +EXPORT_SYMBOL_GPL vmlinux 0x91ece51d mddev_init +EXPORT_SYMBOL_GPL vmlinux 0x91f137cc debugfs_create_file +EXPORT_SYMBOL_GPL vmlinux 0x920cc389 visitorl +EXPORT_SYMBOL_GPL vmlinux 0x923906b4 inet_csk_compat_getsockopt +EXPORT_SYMBOL_GPL vmlinux 0x924760b7 of_display_timings_exist +EXPORT_SYMBOL_GPL vmlinux 0x924c05a2 nf_queue_entry_get_refs +EXPORT_SYMBOL_GPL vmlinux 0x924c46f8 zs_unmap_object +EXPORT_SYMBOL_GPL vmlinux 0x924e7c0a device_create_with_groups +EXPORT_SYMBOL_GPL vmlinux 0x925690ac of_pwm_xlate_with_flags +EXPORT_SYMBOL_GPL vmlinux 0x926ab2c3 pci_load_and_free_saved_state +EXPORT_SYMBOL_GPL vmlinux 0x92752fe2 netdev_rx_handler_register +EXPORT_SYMBOL_GPL vmlinux 0x92892307 device_rename +EXPORT_SYMBOL_GPL vmlinux 0x92abd027 rt_mutex_destroy +EXPORT_SYMBOL_GPL vmlinux 0x92d31cfb fixed_phy_add +EXPORT_SYMBOL_GPL vmlinux 0x92db8f68 do_trace_rcu_torture_read +EXPORT_SYMBOL_GPL vmlinux 0x931f05d3 ktime_get_raw +EXPORT_SYMBOL_GPL vmlinux 0x93311080 opal_flash_read +EXPORT_SYMBOL_GPL vmlinux 0x93502b6d gpiod_unexport +EXPORT_SYMBOL_GPL vmlinux 0x93528996 hrtimer_active +EXPORT_SYMBOL_GPL vmlinux 0x935a07dc irq_map_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x938f7f47 __netpoll_setup +EXPORT_SYMBOL_GPL vmlinux 0x939b32c8 arizona_pm_ops +EXPORT_SYMBOL_GPL vmlinux 0x93a23a11 ata_host_resume +EXPORT_SYMBOL_GPL vmlinux 0x93c394b7 kvmppc_do_h_enter +EXPORT_SYMBOL_GPL vmlinux 0x93c6b2a2 tpm2_gen_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x93d11b9a tpm_pm_suspend +EXPORT_SYMBOL_GPL vmlinux 0x93d2b30b sysfs_create_groups +EXPORT_SYMBOL_GPL vmlinux 0x93ddcbf5 digsig_verify +EXPORT_SYMBOL_GPL vmlinux 0x93e64596 alloc_vm_area +EXPORT_SYMBOL_GPL vmlinux 0x93ea7750 pci_enable_pcie_error_reporting +EXPORT_SYMBOL_GPL vmlinux 0x941f2aaa eventfd_ctx_put +EXPORT_SYMBOL_GPL vmlinux 0x945cc9f2 rio_unregister_scan +EXPORT_SYMBOL_GPL vmlinux 0x945e65ba rtc_initialize_alarm +EXPORT_SYMBOL_GPL vmlinux 0x9477d224 elv_unregister +EXPORT_SYMBOL_GPL vmlinux 0x948dfbc7 fb_sys_read +EXPORT_SYMBOL_GPL vmlinux 0x949f7342 __alloc_percpu +EXPORT_SYMBOL_GPL vmlinux 0x94d972b7 unregister_kprobe +EXPORT_SYMBOL_GPL vmlinux 0x94ef4d05 cpci_hp_stop +EXPORT_SYMBOL_GPL vmlinux 0x94fc2bda eeh_add_sysfs_files +EXPORT_SYMBOL_GPL vmlinux 0x9504df26 irq_wake_thread +EXPORT_SYMBOL_GPL vmlinux 0x9505dcb5 ata_sff_data_xfer +EXPORT_SYMBOL_GPL vmlinux 0x952664c5 do_exit +EXPORT_SYMBOL_GPL vmlinux 0x953a11c4 sysfs_remove_files +EXPORT_SYMBOL_GPL vmlinux 0x953e1b9e ktime_get_real_seconds +EXPORT_SYMBOL_GPL vmlinux 0x955184da cpu_add_dev_attr +EXPORT_SYMBOL_GPL vmlinux 0x955b0e2e kthread_worker_fn +EXPORT_SYMBOL_GPL vmlinux 0x95651fc5 fwnode_get_named_gpiod +EXPORT_SYMBOL_GPL vmlinux 0x958df3ac zs_free +EXPORT_SYMBOL_GPL vmlinux 0x95ae3f2b cpu_subsys +EXPORT_SYMBOL_GPL vmlinux 0x95b3d50d dax_truncate_page +EXPORT_SYMBOL_GPL vmlinux 0x95bc9078 btree_free +EXPORT_SYMBOL_GPL vmlinux 0x95f001d3 device_for_each_child_reverse +EXPORT_SYMBOL_GPL vmlinux 0x95fb1135 bd_link_disk_holder +EXPORT_SYMBOL_GPL vmlinux 0x960ac6a5 extcon_dev_unregister +EXPORT_SYMBOL_GPL vmlinux 0x9610ef08 __platform_driver_probe +EXPORT_SYMBOL_GPL vmlinux 0x9612a65e eeh_dev_check_failure +EXPORT_SYMBOL_GPL vmlinux 0x962074bf eeh_pe_inject_err +EXPORT_SYMBOL_GPL vmlinux 0x9621849f ring_buffer_event_data +EXPORT_SYMBOL_GPL vmlinux 0x962b144a ip_local_out_sk +EXPORT_SYMBOL_GPL vmlinux 0x96554810 register_keyboard_notifier +EXPORT_SYMBOL_GPL vmlinux 0x965a78d5 threads_core_mask +EXPORT_SYMBOL_GPL vmlinux 0x965d2e04 crypto_lookup_skcipher +EXPORT_SYMBOL_GPL vmlinux 0x966093e8 mpc8xxx_spi_remove +EXPORT_SYMBOL_GPL vmlinux 0x968bf8c8 eeh_pe_get_state +EXPORT_SYMBOL_GPL vmlinux 0x9690ab6c adp5520_read +EXPORT_SYMBOL_GPL vmlinux 0x96a0c240 blk_insert_cloned_request +EXPORT_SYMBOL_GPL vmlinux 0x96afe266 pci_find_next_ext_capability +EXPORT_SYMBOL_GPL vmlinux 0x96b47854 cpufreq_cooling_unregister +EXPORT_SYMBOL_GPL vmlinux 0x96b801a9 trace_seq_bitmask +EXPORT_SYMBOL_GPL vmlinux 0x96de925b adp5520_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x96e2a4fb ps3_vuart_read_async +EXPORT_SYMBOL_GPL vmlinux 0x972763d6 crypto_init_spawn +EXPORT_SYMBOL_GPL vmlinux 0x9735f061 register_jprobes +EXPORT_SYMBOL_GPL vmlinux 0x9740cd93 iptunnel_pull_header +EXPORT_SYMBOL_GPL vmlinux 0x975519c1 asymmetric_key_id_same +EXPORT_SYMBOL_GPL vmlinux 0x9760478b sysfs_remove_groups +EXPORT_SYMBOL_GPL vmlinux 0x97681a4b copro_handle_mm_fault +EXPORT_SYMBOL_GPL vmlinux 0x9780c464 inet_twsk_purge +EXPORT_SYMBOL_GPL vmlinux 0x979c1770 kvmppc_invalidate_hpte +EXPORT_SYMBOL_GPL vmlinux 0x97d7d82b powercap_register_control_type +EXPORT_SYMBOL_GPL vmlinux 0x97de2b83 debug_locks_silent +EXPORT_SYMBOL_GPL vmlinux 0x97ec2924 power_supply_get_by_name +EXPORT_SYMBOL_GPL vmlinux 0x97f11151 n_tty_inherit_ops +EXPORT_SYMBOL_GPL vmlinux 0x97f68083 devm_led_classdev_unregister +EXPORT_SYMBOL_GPL vmlinux 0x9801ed0a trace_seq_putc +EXPORT_SYMBOL_GPL vmlinux 0x981a8bb3 class_interface_unregister +EXPORT_SYMBOL_GPL vmlinux 0x982cd486 __cookie_v4_init_sequence +EXPORT_SYMBOL_GPL vmlinux 0x9833bc0c hvc_kick +EXPORT_SYMBOL_GPL vmlinux 0x98435216 led_sysfs_disable +EXPORT_SYMBOL_GPL vmlinux 0x98503a63 mpi_alloc +EXPORT_SYMBOL_GPL vmlinux 0x9850659c device_del +EXPORT_SYMBOL_GPL vmlinux 0x9854d3b9 of_pci_get_host_bridge_resources +EXPORT_SYMBOL_GPL vmlinux 0x985696fe usb_unlink_urb +EXPORT_SYMBOL_GPL vmlinux 0x9879932b crypto_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x9883cfb5 replace_page_cache_page +EXPORT_SYMBOL_GPL vmlinux 0x98a02a70 register_jprobe +EXPORT_SYMBOL_GPL vmlinux 0x98c2b5fd skcipher_geniv_init +EXPORT_SYMBOL_GPL vmlinux 0x98e3ea5a crypto_register_rng +EXPORT_SYMBOL_GPL vmlinux 0x98fa1e20 dm_get_reserved_rq_based_ios +EXPORT_SYMBOL_GPL vmlinux 0x98fcf128 irq_work_queue_on +EXPORT_SYMBOL_GPL vmlinux 0x9924c496 __usb_get_extra_descriptor +EXPORT_SYMBOL_GPL vmlinux 0x992c1007 get_user_pages_fast +EXPORT_SYMBOL_GPL vmlinux 0x992d2e12 device_release_driver +EXPORT_SYMBOL_GPL vmlinux 0x993e40fd ip6_dst_lookup_flow +EXPORT_SYMBOL_GPL vmlinux 0x9942d416 single_open_net +EXPORT_SYMBOL_GPL vmlinux 0x995d1071 prof_on +EXPORT_SYMBOL_GPL vmlinux 0x9961dc36 ata_bmdma_start +EXPORT_SYMBOL_GPL vmlinux 0x996f5b3e phy_pm_runtime_allow +EXPORT_SYMBOL_GPL vmlinux 0x997c4347 unmap_kernel_range +EXPORT_SYMBOL_GPL vmlinux 0x998337f6 irq_gc_mask_set_bit +EXPORT_SYMBOL_GPL vmlinux 0x99840d00 timecounter_init +EXPORT_SYMBOL_GPL vmlinux 0x9987e6e9 opal_get_sensor_data +EXPORT_SYMBOL_GPL vmlinux 0x99883a14 device_initialize +EXPORT_SYMBOL_GPL vmlinux 0x99a9ff9a cpuidle_register_device +EXPORT_SYMBOL_GPL vmlinux 0x99b41bdd register_spu_syscalls +EXPORT_SYMBOL_GPL vmlinux 0x99be7391 wm831x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x99e28f10 __tracepoint_remove_device_from_group +EXPORT_SYMBOL_GPL vmlinux 0x99e3188d fat_time_unix2fat +EXPORT_SYMBOL_GPL vmlinux 0x99f5ae1a flush_vsx_to_thread +EXPORT_SYMBOL_GPL vmlinux 0x99ff8d08 opal_invalid_call +EXPORT_SYMBOL_GPL vmlinux 0x9a11a0fc crypto_attr_alg_name +EXPORT_SYMBOL_GPL vmlinux 0x9a35a3ed tty_port_register_device +EXPORT_SYMBOL_GPL vmlinux 0x9a49d937 __wake_up_locked_key +EXPORT_SYMBOL_GPL vmlinux 0x9a76e0bb blocking_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0x9a7cd86a crypto_aead_type +EXPORT_SYMBOL_GPL vmlinux 0x9a89dbf7 lpddr2_jedec_min_tck +EXPORT_SYMBOL_GPL vmlinux 0x9a989e66 uprobe_unregister +EXPORT_SYMBOL_GPL vmlinux 0x9aad6540 klist_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x9ac11b74 suspend_set_ops +EXPORT_SYMBOL_GPL vmlinux 0x9acf572a devres_add +EXPORT_SYMBOL_GPL vmlinux 0x9adf08c3 mmu_linear_psize +EXPORT_SYMBOL_GPL vmlinux 0x9ae1b448 ata_host_register +EXPORT_SYMBOL_GPL vmlinux 0x9aeacb87 ring_buffer_iter_empty +EXPORT_SYMBOL_GPL vmlinux 0x9afb7bd8 phy_pm_runtime_get_sync +EXPORT_SYMBOL_GPL vmlinux 0x9b01357b pm_generic_freeze +EXPORT_SYMBOL_GPL vmlinux 0x9b28ec12 usb_free_coherent +EXPORT_SYMBOL_GPL vmlinux 0x9b4975af regulator_list_hardware_vsel +EXPORT_SYMBOL_GPL vmlinux 0x9b4fef0b rio_lock_device +EXPORT_SYMBOL_GPL vmlinux 0x9b72b7df ata_pci_bmdma_init_one +EXPORT_SYMBOL_GPL vmlinux 0x9b97b1a6 devm_regulator_unregister +EXPORT_SYMBOL_GPL vmlinux 0x9ba2bb2b gpio_request_array +EXPORT_SYMBOL_GPL vmlinux 0x9ba48f81 regulator_get_exclusive +EXPORT_SYMBOL_GPL vmlinux 0x9baf52f3 flush_kthread_work +EXPORT_SYMBOL_GPL vmlinux 0x9bb65d37 md_new_event +EXPORT_SYMBOL_GPL vmlinux 0x9bb6a55a pci_disable_pcie_error_reporting +EXPORT_SYMBOL_GPL vmlinux 0x9bba6336 pwm_enable +EXPORT_SYMBOL_GPL vmlinux 0x9bca03ca ata_sff_queue_delayed_work +EXPORT_SYMBOL_GPL vmlinux 0x9bcf6375 serial8250_release_dma +EXPORT_SYMBOL_GPL vmlinux 0x9be36b11 __of_phy_provider_register +EXPORT_SYMBOL_GPL vmlinux 0x9be61ba1 irq_create_direct_mapping +EXPORT_SYMBOL_GPL vmlinux 0x9bece81b mpi_cmp_ui +EXPORT_SYMBOL_GPL vmlinux 0x9bf5ad05 __ablkcipher_walk_complete +EXPORT_SYMBOL_GPL vmlinux 0x9c47470a usb_hcd_pci_probe +EXPORT_SYMBOL_GPL vmlinux 0x9c86fef6 of_get_phy_mode +EXPORT_SYMBOL_GPL vmlinux 0x9c9a52e5 ehci_init_driver +EXPORT_SYMBOL_GPL vmlinux 0x9c9ad906 irq_domain_xlate_twocell +EXPORT_SYMBOL_GPL vmlinux 0x9ca7904d xfrm_audit_policy_add +EXPORT_SYMBOL_GPL vmlinux 0x9cc4f70a register_pm_notifier +EXPORT_SYMBOL_GPL vmlinux 0x9cd0fc2b phy_put +EXPORT_SYMBOL_GPL vmlinux 0x9ce7dcc8 ata_bmdma_post_internal_cmd +EXPORT_SYMBOL_GPL vmlinux 0x9cee57a0 zs_create_pool +EXPORT_SYMBOL_GPL vmlinux 0x9cf96cdb iommu_group_add_device +EXPORT_SYMBOL_GPL vmlinux 0x9cff7a97 sdio_readl +EXPORT_SYMBOL_GPL vmlinux 0x9d15612a ipv4_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x9d3a9767 usb_find_interface +EXPORT_SYMBOL_GPL vmlinux 0x9d8127a2 regulator_is_enabled_regmap +EXPORT_SYMBOL_GPL vmlinux 0x9d8310ce ata_port_wait_eh +EXPORT_SYMBOL_GPL vmlinux 0x9d84ea8d trace_seq_printf +EXPORT_SYMBOL_GPL vmlinux 0x9da8c0cf irq_remove_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x9dadbb88 cpufreq_boost_supported +EXPORT_SYMBOL_GPL vmlinux 0x9db4c7ee __audit_inode_child +EXPORT_SYMBOL_GPL vmlinux 0x9dd8ec67 platform_get_irq_byname +EXPORT_SYMBOL_GPL vmlinux 0x9df8e319 gpiochip_add +EXPORT_SYMBOL_GPL vmlinux 0x9e038119 power_supply_get_property +EXPORT_SYMBOL_GPL vmlinux 0x9e188c1b __online_page_free +EXPORT_SYMBOL_GPL vmlinux 0x9e24aa3c __remove_pages +EXPORT_SYMBOL_GPL vmlinux 0x9e39071f mnt_want_write +EXPORT_SYMBOL_GPL vmlinux 0x9e452aba dm_accept_partial_bio +EXPORT_SYMBOL_GPL vmlinux 0x9e472f5f snmp_fold_field +EXPORT_SYMBOL_GPL vmlinux 0x9e71047e inet_hash_connect +EXPORT_SYMBOL_GPL vmlinux 0x9e855bea cpufreq_generic_attr +EXPORT_SYMBOL_GPL vmlinux 0x9e96b985 dma_buf_put +EXPORT_SYMBOL_GPL vmlinux 0x9eab4291 rio_dev_put +EXPORT_SYMBOL_GPL vmlinux 0x9ec03a57 dma_buf_kmap +EXPORT_SYMBOL_GPL vmlinux 0x9ed554b3 unregister_keyboard_notifier +EXPORT_SYMBOL_GPL vmlinux 0x9ee777af pwm_free +EXPORT_SYMBOL_GPL vmlinux 0x9ef47599 crypto_alg_extsize +EXPORT_SYMBOL_GPL vmlinux 0x9ef50ec8 device_create_bin_file +EXPORT_SYMBOL_GPL vmlinux 0x9ef5c639 inet_ehash_locks_alloc +EXPORT_SYMBOL_GPL vmlinux 0x9f08d518 user_destroy +EXPORT_SYMBOL_GPL vmlinux 0x9f099cf6 x509_get_sig_params +EXPORT_SYMBOL_GPL vmlinux 0x9f0f71bc sched_setscheduler +EXPORT_SYMBOL_GPL vmlinux 0x9f140c0c tps6586x_write +EXPORT_SYMBOL_GPL vmlinux 0x9f566a1b tcp_cong_avoid_ai +EXPORT_SYMBOL_GPL vmlinux 0x9f728709 crypto_ahash_digest +EXPORT_SYMBOL_GPL vmlinux 0x9f7c55d3 sdio_writeb +EXPORT_SYMBOL_GPL vmlinux 0x9f90cc26 irq_domain_xlate_onetwocell +EXPORT_SYMBOL_GPL vmlinux 0x9f9b7c5b devm_of_phy_get_by_index +EXPORT_SYMBOL_GPL vmlinux 0x9fce80db fb_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x9fe939e1 mpi_powm +EXPORT_SYMBOL_GPL vmlinux 0xa045c7ec root_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa05a6a75 dma_buf_begin_cpu_access +EXPORT_SYMBOL_GPL vmlinux 0xa06a1595 ping_get_port +EXPORT_SYMBOL_GPL vmlinux 0xa084003e gen_pool_size +EXPORT_SYMBOL_GPL vmlinux 0xa091d10d fwnode_property_present +EXPORT_SYMBOL_GPL vmlinux 0xa0a27fff pci_address_to_pio +EXPORT_SYMBOL_GPL vmlinux 0xa0d17d3a __blkdev_driver_ioctl +EXPORT_SYMBOL_GPL vmlinux 0xa0db8f30 led_trigger_rename_static +EXPORT_SYMBOL_GPL vmlinux 0xa0dcf051 crypto_remove_spawns +EXPORT_SYMBOL_GPL vmlinux 0xa0e07b7d regulator_bulk_get +EXPORT_SYMBOL_GPL vmlinux 0xa0e6416f __ip6_local_out +EXPORT_SYMBOL_GPL vmlinux 0xa0ea1fad blockdev_superblock +EXPORT_SYMBOL_GPL vmlinux 0xa0fa151c srcu_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0xa111fa10 palmas_ext_control_req_config +EXPORT_SYMBOL_GPL vmlinux 0xa13cd9ed regmap_fields_update_bits +EXPORT_SYMBOL_GPL vmlinux 0xa15d06e0 mbox_controller_register +EXPORT_SYMBOL_GPL vmlinux 0xa165c780 __giveup_vsx +EXPORT_SYMBOL_GPL vmlinux 0xa1869aac of_property_read_u32_array +EXPORT_SYMBOL_GPL vmlinux 0xa18f9433 mpi_read_buffer +EXPORT_SYMBOL_GPL vmlinux 0xa1aafec6 napi_by_id +EXPORT_SYMBOL_GPL vmlinux 0xa1bd96c0 ps3_system_bus_driver_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa1cc638b sock_diag_register +EXPORT_SYMBOL_GPL vmlinux 0xa1d15f61 scsi_target_unblock +EXPORT_SYMBOL_GPL vmlinux 0xa1d6b9cf iommu_present +EXPORT_SYMBOL_GPL vmlinux 0xa1ed9c8b add_hwgenerator_randomness +EXPORT_SYMBOL_GPL vmlinux 0xa1f167ba register_user_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0xa20e925d cpufreq_register_driver +EXPORT_SYMBOL_GPL vmlinux 0xa20e9885 crypto_register_pcomp +EXPORT_SYMBOL_GPL vmlinux 0xa26d9b4f workqueue_congested +EXPORT_SYMBOL_GPL vmlinux 0xa2706cf1 usb_hcd_map_urb_for_dma +EXPORT_SYMBOL_GPL vmlinux 0xa27d42f0 power_supply_get_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0xa28d0373 bio_alloc_mddev +EXPORT_SYMBOL_GPL vmlinux 0xa2ac5519 percpu_ref_init +EXPORT_SYMBOL_GPL vmlinux 0xa2bafa40 interval_tree_insert +EXPORT_SYMBOL_GPL vmlinux 0xa2f7310e shash_register_instance +EXPORT_SYMBOL_GPL vmlinux 0xa3163fd2 bpf_prog_destroy +EXPORT_SYMBOL_GPL vmlinux 0xa31c4a3e usb_hcd_poll_rh_status +EXPORT_SYMBOL_GPL vmlinux 0xa32ca8f3 udp4_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0xa3622456 of_prop_next_string +EXPORT_SYMBOL_GPL vmlinux 0xa3700eba __rtnl_link_register +EXPORT_SYMBOL_GPL vmlinux 0xa38602cd drain_workqueue +EXPORT_SYMBOL_GPL vmlinux 0xa389a49a profile_event_register +EXPORT_SYMBOL_GPL vmlinux 0xa3a04602 btree_geo64 +EXPORT_SYMBOL_GPL vmlinux 0xa3a2d9af walk_system_ram_range +EXPORT_SYMBOL_GPL vmlinux 0xa3b958ce reset_hung_task_detector +EXPORT_SYMBOL_GPL vmlinux 0xa3cfb4fc da9052_free_irq +EXPORT_SYMBOL_GPL vmlinux 0xa3e6cff6 regulator_bulk_free +EXPORT_SYMBOL_GPL vmlinux 0xa3e6dfd8 pci_set_pcie_reset_state +EXPORT_SYMBOL_GPL vmlinux 0xa3e7c113 ring_buffer_iter_peek +EXPORT_SYMBOL_GPL vmlinux 0xa3faa662 ip6_dst_lookup +EXPORT_SYMBOL_GPL vmlinux 0xa40edbea ip6_datagram_connect +EXPORT_SYMBOL_GPL vmlinux 0xa436173f driver_create_file +EXPORT_SYMBOL_GPL vmlinux 0xa4442fc6 __fsnotify_parent +EXPORT_SYMBOL_GPL vmlinux 0xa48196c8 kdb_poll_idx +EXPORT_SYMBOL_GPL vmlinux 0xa4c26485 usb_set_interface +EXPORT_SYMBOL_GPL vmlinux 0xa4c7482c ata_port_schedule_eh +EXPORT_SYMBOL_GPL vmlinux 0xa50a78b3 pcibios_unmap_io_space +EXPORT_SYMBOL_GPL vmlinux 0xa50a9cf9 sdio_register_driver +EXPORT_SYMBOL_GPL vmlinux 0xa50b45bb ps3_free_mmio_region +EXPORT_SYMBOL_GPL vmlinux 0xa50f902b sdio_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0xa559643e device_show_ulong +EXPORT_SYMBOL_GPL vmlinux 0xa572443d unregister_virtio_device +EXPORT_SYMBOL_GPL vmlinux 0xa5768b67 powercap_unregister_control_type +EXPORT_SYMBOL_GPL vmlinux 0xa57809d2 class_find_device +EXPORT_SYMBOL_GPL vmlinux 0xa5a3df1b pm_generic_thaw +EXPORT_SYMBOL_GPL vmlinux 0xa5b00659 ppc_proc_freq +EXPORT_SYMBOL_GPL vmlinux 0xa5b5fb77 pm_runtime_barrier +EXPORT_SYMBOL_GPL vmlinux 0xa5b98d42 rio_mport_get_physefb +EXPORT_SYMBOL_GPL vmlinux 0xa5c49462 da903x_update +EXPORT_SYMBOL_GPL vmlinux 0xa5e407e4 wm5110_aod +EXPORT_SYMBOL_GPL vmlinux 0xa5efbf4c async_synchronize_full +EXPORT_SYMBOL_GPL vmlinux 0xa5efe460 usb_anchor_resume_wakeups +EXPORT_SYMBOL_GPL vmlinux 0xa608671c ip6_flush_pending_frames +EXPORT_SYMBOL_GPL vmlinux 0xa60ca9c1 ata_sff_freeze +EXPORT_SYMBOL_GPL vmlinux 0xa617dd7b __tracepoint_map +EXPORT_SYMBOL_GPL vmlinux 0xa61b75d1 get_device +EXPORT_SYMBOL_GPL vmlinux 0xa625110d kmsg_dump_rewind +EXPORT_SYMBOL_GPL vmlinux 0xa630338a call_filter_check_discard +EXPORT_SYMBOL_GPL vmlinux 0xa64545cd bus_set_iommu +EXPORT_SYMBOL_GPL vmlinux 0xa65ed638 kernfs_put +EXPORT_SYMBOL_GPL vmlinux 0xa668c519 kernfs_get +EXPORT_SYMBOL_GPL vmlinux 0xa66fef09 devm_regulator_get_exclusive +EXPORT_SYMBOL_GPL vmlinux 0xa689944c pci_try_reset_function +EXPORT_SYMBOL_GPL vmlinux 0xa692a343 sata_link_scr_lpm +EXPORT_SYMBOL_GPL vmlinux 0xa6b03bfd usb_hcd_unmap_urb_setup_for_dma +EXPORT_SYMBOL_GPL vmlinux 0xa6b21ef2 dpm_suspend_end +EXPORT_SYMBOL_GPL vmlinux 0xa6b53077 nd_blk_region_provider_data +EXPORT_SYMBOL_GPL vmlinux 0xa6e1a69d kick_all_cpus_sync +EXPORT_SYMBOL_GPL vmlinux 0xa6eded6c opal_xscom_read +EXPORT_SYMBOL_GPL vmlinux 0xa71b583e free_vm_area +EXPORT_SYMBOL_GPL vmlinux 0xa721bc3f opal_rtc_write +EXPORT_SYMBOL_GPL vmlinux 0xa7221ccc rtc_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa72eef3a rio_release_inb_mbox +EXPORT_SYMBOL_GPL vmlinux 0xa75312bc call_rcu_sched +EXPORT_SYMBOL_GPL vmlinux 0xa76b7820 pwm_get +EXPORT_SYMBOL_GPL vmlinux 0xa77269c2 list_lru_add +EXPORT_SYMBOL_GPL vmlinux 0xa7853495 pci_try_reset_bus +EXPORT_SYMBOL_GPL vmlinux 0xa797e819 led_trigger_remove +EXPORT_SYMBOL_GPL vmlinux 0xa7ad5d6e dm_path_uevent +EXPORT_SYMBOL_GPL vmlinux 0xa7d49223 locks_release_private +EXPORT_SYMBOL_GPL vmlinux 0xa7d7567f nvdimm_volatile_region_create +EXPORT_SYMBOL_GPL vmlinux 0xa7dc780e sata_pmp_qc_defer_cmd_switch +EXPORT_SYMBOL_GPL vmlinux 0xa7e50600 verify_signature +EXPORT_SYMBOL_GPL vmlinux 0xa8006680 dev_pm_qos_remove_request +EXPORT_SYMBOL_GPL vmlinux 0xa827d4fb pci_reset_bridge_secondary_bus +EXPORT_SYMBOL_GPL vmlinux 0xa829f274 pmf_unregister_irq_client +EXPORT_SYMBOL_GPL vmlinux 0xa835c063 trace_event_buffer_reserve +EXPORT_SYMBOL_GPL vmlinux 0xa851973a raw_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xa8912e45 nvdimm_attribute_group +EXPORT_SYMBOL_GPL vmlinux 0xa8ab5bd2 debugfs_create_symlink +EXPORT_SYMBOL_GPL vmlinux 0xa8b76a68 timecounter_cyc2time +EXPORT_SYMBOL_GPL vmlinux 0xa8b8dc1c __mmc_switch +EXPORT_SYMBOL_GPL vmlinux 0xa8ce732a thermal_cooling_device_register +EXPORT_SYMBOL_GPL vmlinux 0xa8e522d3 rio_route_add_entry +EXPORT_SYMBOL_GPL vmlinux 0xa91d74ab phy_pm_runtime_forbid +EXPORT_SYMBOL_GPL vmlinux 0xa925e478 __tracepoint_rpm_return_int +EXPORT_SYMBOL_GPL vmlinux 0xa92e1d36 rhashtable_insert_slow +EXPORT_SYMBOL_GPL vmlinux 0xa9320d27 ktime_get_seconds +EXPORT_SYMBOL_GPL vmlinux 0xa93271a5 gen_pool_avail +EXPORT_SYMBOL_GPL vmlinux 0xa9660dbf register_pernet_subsys +EXPORT_SYMBOL_GPL vmlinux 0xa9687f02 gpiod_get_value +EXPORT_SYMBOL_GPL vmlinux 0xa97c0856 da9052_request_irq +EXPORT_SYMBOL_GPL vmlinux 0xa980af16 RSA_public_key_algorithm +EXPORT_SYMBOL_GPL vmlinux 0xa98cdb36 ps3_get_firmware_version +EXPORT_SYMBOL_GPL vmlinux 0xa9a3679e ata_sg_init +EXPORT_SYMBOL_GPL vmlinux 0xa9a485d9 wm8997_aod +EXPORT_SYMBOL_GPL vmlinux 0xa9a5cbb9 rq_flush_dcache_pages +EXPORT_SYMBOL_GPL vmlinux 0xa9aa1b00 opal_poll_events +EXPORT_SYMBOL_GPL vmlinux 0xa9c1f9cf crypto_larval_kill +EXPORT_SYMBOL_GPL vmlinux 0xa9cdad36 virtqueue_detach_unused_buf +EXPORT_SYMBOL_GPL vmlinux 0xa9ce341e usb_show_dynids +EXPORT_SYMBOL_GPL vmlinux 0xa9d161f4 fib_rules_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa9e18049 task_handoff_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa9f0921c unregister_ftrace_function +EXPORT_SYMBOL_GPL vmlinux 0xa9fb73ba devm_rtc_device_register +EXPORT_SYMBOL_GPL vmlinux 0xaa004b81 user_free_preparse +EXPORT_SYMBOL_GPL vmlinux 0xaa022286 uart_set_options +EXPORT_SYMBOL_GPL vmlinux 0xaa1232de fb_deferred_io_init +EXPORT_SYMBOL_GPL vmlinux 0xaa26cfe9 pci_probe_reset_bus +EXPORT_SYMBOL_GPL vmlinux 0xaa3bf3c4 netdev_rx_handler_unregister +EXPORT_SYMBOL_GPL vmlinux 0xaa563ae3 input_ff_erase +EXPORT_SYMBOL_GPL vmlinux 0xaa76e3c5 tcp_twsk_unique +EXPORT_SYMBOL_GPL vmlinux 0xaa7a3ac9 skb_tstamp_tx +EXPORT_SYMBOL_GPL vmlinux 0xaa8a3165 pci_scan_child_bus +EXPORT_SYMBOL_GPL vmlinux 0xaaa918c9 ftrace_dump +EXPORT_SYMBOL_GPL vmlinux 0xaae1f050 reset_controller_unregister +EXPORT_SYMBOL_GPL vmlinux 0xaae630b7 sock_prot_inuse_add +EXPORT_SYMBOL_GPL vmlinux 0xaaef7655 of_dma_is_coherent +EXPORT_SYMBOL_GPL vmlinux 0xab14110a stop_machine +EXPORT_SYMBOL_GPL vmlinux 0xab252fe2 __pm_runtime_suspend +EXPORT_SYMBOL_GPL vmlinux 0xab29ad96 cpuidle_disable_device +EXPORT_SYMBOL_GPL vmlinux 0xab2b243d ps3_irq_plug_destroy +EXPORT_SYMBOL_GPL vmlinux 0xab3e96e0 sprint_OID +EXPORT_SYMBOL_GPL vmlinux 0xab418157 led_trigger_set +EXPORT_SYMBOL_GPL vmlinux 0xab54385c devm_extcon_dev_free +EXPORT_SYMBOL_GPL vmlinux 0xab567d31 percpu_ref_reinit +EXPORT_SYMBOL_GPL vmlinux 0xab5a5de4 fixed_phy_del +EXPORT_SYMBOL_GPL vmlinux 0xab61bbbd tty_mode_ioctl +EXPORT_SYMBOL_GPL vmlinux 0xab6babaf pm_qos_request +EXPORT_SYMBOL_GPL vmlinux 0xab7624cb rtc_read_alarm +EXPORT_SYMBOL_GPL vmlinux 0xab86b03e event_triggers_post_call +EXPORT_SYMBOL_GPL vmlinux 0xab8d2683 tpmm_chip_alloc +EXPORT_SYMBOL_GPL vmlinux 0xaba2db15 trace_seq_to_user +EXPORT_SYMBOL_GPL vmlinux 0xabc640f3 list_lru_isolate +EXPORT_SYMBOL_GPL vmlinux 0xabe1dbd1 apply_to_page_range +EXPORT_SYMBOL_GPL vmlinux 0xac0c1447 wakeup_source_register +EXPORT_SYMBOL_GPL vmlinux 0xac5122b8 ata_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0xac80acc3 regulator_disable +EXPORT_SYMBOL_GPL vmlinux 0xac974276 alarmtimer_get_rtcdev +EXPORT_SYMBOL_GPL vmlinux 0xaca78689 of_usb_host_tpl_support +EXPORT_SYMBOL_GPL vmlinux 0xacaaa235 of_property_read_string +EXPORT_SYMBOL_GPL vmlinux 0xacac44a6 stmpe_reg_write +EXPORT_SYMBOL_GPL vmlinux 0xacb2b6ed usb_driver_release_interface +EXPORT_SYMBOL_GPL vmlinux 0xacc5e757 devfreq_event_reset_event +EXPORT_SYMBOL_GPL vmlinux 0xacdf2e8e of_dma_controller_register +EXPORT_SYMBOL_GPL vmlinux 0xace5c0fc usb_bus_list +EXPORT_SYMBOL_GPL vmlinux 0xacec0137 devm_usb_put_phy +EXPORT_SYMBOL_GPL vmlinux 0xacfe997e powerpc_firmware_features +EXPORT_SYMBOL_GPL vmlinux 0xad15c2d8 thermal_zone_get_temp +EXPORT_SYMBOL_GPL vmlinux 0xad23131e dma_buf_kunmap +EXPORT_SYMBOL_GPL vmlinux 0xad23b81f class_compat_remove_link +EXPORT_SYMBOL_GPL vmlinux 0xad34a60b devm_kmalloc +EXPORT_SYMBOL_GPL vmlinux 0xad57a62c class_unregister +EXPORT_SYMBOL_GPL vmlinux 0xad58535c gpiochip_irqchip_add +EXPORT_SYMBOL_GPL vmlinux 0xad61c42f wm8350_block_write +EXPORT_SYMBOL_GPL vmlinux 0xad638a04 sg_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0xad65f033 splice_to_pipe +EXPORT_SYMBOL_GPL vmlinux 0xad7150f9 devm_regulator_get +EXPORT_SYMBOL_GPL vmlinux 0xad85c6b7 driver_attach +EXPORT_SYMBOL_GPL vmlinux 0xadbae5da tpm_gen_interrupt +EXPORT_SYMBOL_GPL vmlinux 0xadc785ec kgdb_register_io_module +EXPORT_SYMBOL_GPL vmlinux 0xadced42b security_kernel_fw_from_file +EXPORT_SYMBOL_GPL vmlinux 0xade64dc5 nvdimm_provider_data +EXPORT_SYMBOL_GPL vmlinux 0xade7857f for_each_kernel_tracepoint +EXPORT_SYMBOL_GPL vmlinux 0xaded9da1 perf_trace_buf_prepare +EXPORT_SYMBOL_GPL vmlinux 0xadf6aa4d tpm_pcr_read +EXPORT_SYMBOL_GPL vmlinux 0xae0ac4b1 tps65912_reg_read +EXPORT_SYMBOL_GPL vmlinux 0xae183fa8 usb_get_phy +EXPORT_SYMBOL_GPL vmlinux 0xae20012e trace_event_raw_init +EXPORT_SYMBOL_GPL vmlinux 0xae598015 __class_create +EXPORT_SYMBOL_GPL vmlinux 0xae69b1c1 usermodehelper_read_unlock +EXPORT_SYMBOL_GPL vmlinux 0xae6eaf93 hwpoison_filter_dev_minor +EXPORT_SYMBOL_GPL vmlinux 0xae7c231d mpi_cmp +EXPORT_SYMBOL_GPL vmlinux 0xae7e4231 of_irq_parse_one +EXPORT_SYMBOL_GPL vmlinux 0xae7f8dad ata_scsi_slave_destroy +EXPORT_SYMBOL_GPL vmlinux 0xae81922b of_overlay_destroy_all +EXPORT_SYMBOL_GPL vmlinux 0xae994288 scsi_ioctl_block_when_processing_errors +EXPORT_SYMBOL_GPL vmlinux 0xaec65aec rt_mutex_trylock +EXPORT_SYMBOL_GPL vmlinux 0xaec9921f hash_page +EXPORT_SYMBOL_GPL vmlinux 0xaefd1454 iommu_domain_alloc +EXPORT_SYMBOL_GPL vmlinux 0xaf054efd netlink_has_listeners +EXPORT_SYMBOL_GPL vmlinux 0xaf1a5dcd generic_fh_to_parent +EXPORT_SYMBOL_GPL vmlinux 0xaf20350a eventfd_fget +EXPORT_SYMBOL_GPL vmlinux 0xaf279112 opal_leds_set_ind +EXPORT_SYMBOL_GPL vmlinux 0xaf2e18dd perf_event_refresh +EXPORT_SYMBOL_GPL vmlinux 0xaf2e8b0a hrtimer_start_range_ns +EXPORT_SYMBOL_GPL vmlinux 0xaf541605 pcibios_remove_pci_devices +EXPORT_SYMBOL_GPL vmlinux 0xaf98f905 dma_buf_vunmap +EXPORT_SYMBOL_GPL vmlinux 0xafb56565 platform_device_add_data +EXPORT_SYMBOL_GPL vmlinux 0xafbe6c9e kvmppc_hwrng_present +EXPORT_SYMBOL_GPL vmlinux 0xafc3285b regmap_field_write +EXPORT_SYMBOL_GPL vmlinux 0xafcba2d1 of_alias_get_id +EXPORT_SYMBOL_GPL vmlinux 0xafdbfbcb wm831x_reg_write +EXPORT_SYMBOL_GPL vmlinux 0xb027e2d8 fuse_conn_init +EXPORT_SYMBOL_GPL vmlinux 0xb02e8619 bus_create_file +EXPORT_SYMBOL_GPL vmlinux 0xb0400c6b add_timer_on +EXPORT_SYMBOL_GPL vmlinux 0xb06e3601 ata_eh_qc_retry +EXPORT_SYMBOL_GPL vmlinux 0xb06f8131 init_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0xb0b85f47 ring_buffer_iter_reset +EXPORT_SYMBOL_GPL vmlinux 0xb0d1656c gpio_free_array +EXPORT_SYMBOL_GPL vmlinux 0xb0e4cc55 usb_block_urb +EXPORT_SYMBOL_GPL vmlinux 0xb0e6c221 fsstack_copy_inode_size +EXPORT_SYMBOL_GPL vmlinux 0xb10cadac eeh_add_device_tree_early +EXPORT_SYMBOL_GPL vmlinux 0xb1326d8f of_cpufreq_cooling_register +EXPORT_SYMBOL_GPL vmlinux 0xb13e0569 dma_buf_kunmap_atomic +EXPORT_SYMBOL_GPL vmlinux 0xb140d14c ring_buffer_read +EXPORT_SYMBOL_GPL vmlinux 0xb1425b32 dm_table_add_target_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xb14efefd pci_stop_root_bus +EXPORT_SYMBOL_GPL vmlinux 0xb1503e43 spu_add_dev_attr +EXPORT_SYMBOL_GPL vmlinux 0xb15937e9 devm_regmap_field_alloc +EXPORT_SYMBOL_GPL vmlinux 0xb15e06cc regulator_map_voltage_linear +EXPORT_SYMBOL_GPL vmlinux 0xb169c721 relay_close +EXPORT_SYMBOL_GPL vmlinux 0xb18429eb suspend_device_irqs +EXPORT_SYMBOL_GPL vmlinux 0xb1acbcce rcu_barrier_sched +EXPORT_SYMBOL_GPL vmlinux 0xb1bed25d dpm_resume_start +EXPORT_SYMBOL_GPL vmlinux 0xb1c0c1c2 async_schedule_domain +EXPORT_SYMBOL_GPL vmlinux 0xb1deacbc wm8350_read_auxadc +EXPORT_SYMBOL_GPL vmlinux 0xb1e25684 __trace_bputs +EXPORT_SYMBOL_GPL vmlinux 0xb1f04103 __srcu_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xb2172d9a security_inode_create +EXPORT_SYMBOL_GPL vmlinux 0xb21c8b2e blocking_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xb2210d64 reset_control_deassert +EXPORT_SYMBOL_GPL vmlinux 0xb22429e6 trace_print_bitmask_seq +EXPORT_SYMBOL_GPL vmlinux 0xb23934ba driver_find +EXPORT_SYMBOL_GPL vmlinux 0xb23b5d8b ping_close +EXPORT_SYMBOL_GPL vmlinux 0xb26051a6 ata_link_abort +EXPORT_SYMBOL_GPL vmlinux 0xb26a1add elfcorehdr_addr +EXPORT_SYMBOL_GPL vmlinux 0xb286f050 virtio_device_restore +EXPORT_SYMBOL_GPL vmlinux 0xb29da528 subsys_system_register +EXPORT_SYMBOL_GPL vmlinux 0xb2bf0482 lp8788_read_multi_bytes +EXPORT_SYMBOL_GPL vmlinux 0xb2e764e8 suspend_valid_only_mem +EXPORT_SYMBOL_GPL vmlinux 0xb30ca798 ata_sff_port_intr +EXPORT_SYMBOL_GPL vmlinux 0xb33efc2d tty_port_register_device_attr +EXPORT_SYMBOL_GPL vmlinux 0xb347bb2c work_busy +EXPORT_SYMBOL_GPL vmlinux 0xb348ba07 led_sysfs_enable +EXPORT_SYMBOL_GPL vmlinux 0xb34d3506 bpf_prog_free +EXPORT_SYMBOL_GPL vmlinux 0xb383b072 pci_sriov_get_totalvfs +EXPORT_SYMBOL_GPL vmlinux 0xb38b4af2 pm_generic_freeze_noirq +EXPORT_SYMBOL_GPL vmlinux 0xb394710e ata_port_pbar_desc +EXPORT_SYMBOL_GPL vmlinux 0xb3b9447d gpiochip_free_own_desc +EXPORT_SYMBOL_GPL vmlinux 0xb3d56b37 irq_domain_add_legacy +EXPORT_SYMBOL_GPL vmlinux 0xb3e1d6d3 rtnl_register +EXPORT_SYMBOL_GPL vmlinux 0xb3f4b3b9 __rio_local_read_config_8 +EXPORT_SYMBOL_GPL vmlinux 0xb42892dc spi_add_device +EXPORT_SYMBOL_GPL vmlinux 0xb4365058 rio_register_scan +EXPORT_SYMBOL_GPL vmlinux 0xb4869e50 __gpiod_get +EXPORT_SYMBOL_GPL vmlinux 0xb488588e tb_to_ns +EXPORT_SYMBOL_GPL vmlinux 0xb49b068d led_classdev_resume +EXPORT_SYMBOL_GPL vmlinux 0xb4b97c90 pvclock_gtod_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xb4e5d2d8 powercap_unregister_zone +EXPORT_SYMBOL_GPL vmlinux 0xb4ea7cf7 kgdb_connected +EXPORT_SYMBOL_GPL vmlinux 0xb4f24e84 sdio_align_size +EXPORT_SYMBOL_GPL vmlinux 0xb51fbd64 edac_op_state +EXPORT_SYMBOL_GPL vmlinux 0xb52428cb evm_inode_init_security +EXPORT_SYMBOL_GPL vmlinux 0xb53620d1 pci_vpd_find_info_keyword +EXPORT_SYMBOL_GPL vmlinux 0xb56c575c of_property_read_u32_index +EXPORT_SYMBOL_GPL vmlinux 0xb5848bae __iowrite32_copy +EXPORT_SYMBOL_GPL vmlinux 0xb58dcfa2 synchronize_sched_expedited +EXPORT_SYMBOL_GPL vmlinux 0xb5a0e11e lpddr2_jedec_addressing_table +EXPORT_SYMBOL_GPL vmlinux 0xb5aa10af atomic_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0xb5c092e3 dma_run_dependencies +EXPORT_SYMBOL_GPL vmlinux 0xb5c8edf4 btree_init_mempool +EXPORT_SYMBOL_GPL vmlinux 0xb5f17edf perf_register_guest_info_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xb60b5707 of_i8042_aux_irq +EXPORT_SYMBOL_GPL vmlinux 0xb6261484 register_die_notifier +EXPORT_SYMBOL_GPL vmlinux 0xb643c250 xics_wake_cpu +EXPORT_SYMBOL_GPL vmlinux 0xb64d5792 bsg_unregister_queue +EXPORT_SYMBOL_GPL vmlinux 0xb671764f evm_verifyxattr +EXPORT_SYMBOL_GPL vmlinux 0xb67cb476 blk_queue_bypass_end +EXPORT_SYMBOL_GPL vmlinux 0xb6a2c023 stmpe_enable +EXPORT_SYMBOL_GPL vmlinux 0xb6aeb661 ata_id_c_string +EXPORT_SYMBOL_GPL vmlinux 0xb6bc007a spu_sys_callback +EXPORT_SYMBOL_GPL vmlinux 0xb6de2e68 platform_driver_unregister +EXPORT_SYMBOL_GPL vmlinux 0xb6df5ac3 mmc_regulator_get_supply +EXPORT_SYMBOL_GPL vmlinux 0xb6e2e2a0 of_get_dma_window +EXPORT_SYMBOL_GPL vmlinux 0xb727e09a dbs_check_cpu +EXPORT_SYMBOL_GPL vmlinux 0xb733fc4c sysfs_add_link_to_group +EXPORT_SYMBOL_GPL vmlinux 0xb73bf667 xfrm_audit_state_notfound_simple +EXPORT_SYMBOL_GPL vmlinux 0xb749232a devm_pwm_put +EXPORT_SYMBOL_GPL vmlinux 0xb74a01b4 regmap_attach_dev +EXPORT_SYMBOL_GPL vmlinux 0xb7559579 gpiod_is_active_low +EXPORT_SYMBOL_GPL vmlinux 0xb77aef40 unregister_pernet_subsys +EXPORT_SYMBOL_GPL vmlinux 0xb7903e91 sock_diag_save_cookie +EXPORT_SYMBOL_GPL vmlinux 0xb7975c4b __inet_inherit_port +EXPORT_SYMBOL_GPL vmlinux 0xb7ab1385 phy_power_off +EXPORT_SYMBOL_GPL vmlinux 0xb7f77027 rtc_tm_to_ktime +EXPORT_SYMBOL_GPL vmlinux 0xb7f7a1ed fib_rules_lookup +EXPORT_SYMBOL_GPL vmlinux 0xb81a3e47 pci_sriov_set_totalvfs +EXPORT_SYMBOL_GPL vmlinux 0xb8436712 bus_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0xb84b1aae ps3_event_receive_port_setup +EXPORT_SYMBOL_GPL vmlinux 0xb864098e inet_csk_listen_start +EXPORT_SYMBOL_GPL vmlinux 0xb8cd3a7f nf_logger_put +EXPORT_SYMBOL_GPL vmlinux 0xb8d857d5 sock_diag_register_inet_compat +EXPORT_SYMBOL_GPL vmlinux 0xb8d8c9bb power_supply_register +EXPORT_SYMBOL_GPL vmlinux 0xb8e1f308 lp8788_write_byte +EXPORT_SYMBOL_GPL vmlinux 0xb903674c scatterwalk_map_and_copy +EXPORT_SYMBOL_GPL vmlinux 0xb908ed96 alarm_start +EXPORT_SYMBOL_GPL vmlinux 0xb911cd80 pci_find_ht_capability +EXPORT_SYMBOL_GPL vmlinux 0xb93353dd ata_sas_port_destroy +EXPORT_SYMBOL_GPL vmlinux 0xb938b029 sdhci_pci_o2_probe_slot +EXPORT_SYMBOL_GPL vmlinux 0xb94a4471 attribute_container_unregister +EXPORT_SYMBOL_GPL vmlinux 0xb94de068 percpu_ida_destroy +EXPORT_SYMBOL_GPL vmlinux 0xb96b672a inet_twsk_put +EXPORT_SYMBOL_GPL vmlinux 0xb984197e add_disk_randomness +EXPORT_SYMBOL_GPL vmlinux 0xb991f43d ata_sff_wait_ready +EXPORT_SYMBOL_GPL vmlinux 0xb99deb8b fat_scan +EXPORT_SYMBOL_GPL vmlinux 0xb9a1e71f tpm2_do_selftest +EXPORT_SYMBOL_GPL vmlinux 0xb9b9df41 usb_amd_dev_put +EXPORT_SYMBOL_GPL vmlinux 0xb9bbd523 ip6_datagram_send_ctl +EXPORT_SYMBOL_GPL vmlinux 0xb9c425de register_syscore_ops +EXPORT_SYMBOL_GPL vmlinux 0xb9d025c9 llist_del_first +EXPORT_SYMBOL_GPL vmlinux 0xb9e3d026 devm_hwrng_register +EXPORT_SYMBOL_GPL vmlinux 0xba01e9ee spi_finalize_current_message +EXPORT_SYMBOL_GPL vmlinux 0xba0f346b ata_sas_async_probe +EXPORT_SYMBOL_GPL vmlinux 0xba158769 rtas_cancel_event_scan +EXPORT_SYMBOL_GPL vmlinux 0xba1cffde class_dev_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0xba2b7f64 cpufreq_generic_get +EXPORT_SYMBOL_GPL vmlinux 0xba2d5b20 devres_find +EXPORT_SYMBOL_GPL vmlinux 0xba2d9ab8 arizona_request_irq +EXPORT_SYMBOL_GPL vmlinux 0xba2df6cf component_bind_all +EXPORT_SYMBOL_GPL vmlinux 0xba38a5e5 srp_attach_transport +EXPORT_SYMBOL_GPL vmlinux 0xba3f9dd7 regmap_update_bits +EXPORT_SYMBOL_GPL vmlinux 0xba569419 watchdog_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0xba687fea blk_update_request +EXPORT_SYMBOL_GPL vmlinux 0xba8bc393 __init_kthread_worker +EXPORT_SYMBOL_GPL vmlinux 0xbaad20d7 rtc_device_register +EXPORT_SYMBOL_GPL vmlinux 0xbab392ef of_dma_controller_free +EXPORT_SYMBOL_GPL vmlinux 0xbab9a9f0 maxim_charger_currents +EXPORT_SYMBOL_GPL vmlinux 0xbac48562 mbox_chan_received_data +EXPORT_SYMBOL_GPL vmlinux 0xbae222f5 swiotlb_unmap_page +EXPORT_SYMBOL_GPL vmlinux 0xbae2a81f to_nd_desc +EXPORT_SYMBOL_GPL vmlinux 0xbaed93b8 irq_domain_associate +EXPORT_SYMBOL_GPL vmlinux 0xbb007b5d early_find_capability +EXPORT_SYMBOL_GPL vmlinux 0xbb038ce4 perf_unregister_guest_info_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xbb0ab47b debug_locks +EXPORT_SYMBOL_GPL vmlinux 0xbb1b3bda device_store_bool +EXPORT_SYMBOL_GPL vmlinux 0xbb41cb0c ps3_system_bus_device_register +EXPORT_SYMBOL_GPL vmlinux 0xbb49aafe spu_64k_pages_available +EXPORT_SYMBOL_GPL vmlinux 0xbb5bf069 pwm_set_polarity +EXPORT_SYMBOL_GPL vmlinux 0xbb5f6cbc i2c_unlock_adapter +EXPORT_SYMBOL_GPL vmlinux 0xbb6752b4 devres_for_each_res +EXPORT_SYMBOL_GPL vmlinux 0xbb6f025a asymmetric_key_generate_id +EXPORT_SYMBOL_GPL vmlinux 0xbb84495d spi_async_locked +EXPORT_SYMBOL_GPL vmlinux 0xbb88882e elv_register +EXPORT_SYMBOL_GPL vmlinux 0xbb98ecbd __module_address +EXPORT_SYMBOL_GPL vmlinux 0xbb9c2e71 spu_management_ops +EXPORT_SYMBOL_GPL vmlinux 0xbb9e7630 sdev_evt_send +EXPORT_SYMBOL_GPL vmlinux 0xbbae48cb syscon_node_to_regmap +EXPORT_SYMBOL_GPL vmlinux 0xbbc6fca4 percpu_ida_free_tags +EXPORT_SYMBOL_GPL vmlinux 0xbbd1cc3e blkcg_deactivate_policy +EXPORT_SYMBOL_GPL vmlinux 0xbbd7dc4c dm_get_queue_limits +EXPORT_SYMBOL_GPL vmlinux 0xbbd85495 perf_pmu_register +EXPORT_SYMBOL_GPL vmlinux 0xbbf37059 wm8350_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xbbfc2f1d transport_class_register +EXPORT_SYMBOL_GPL vmlinux 0xbc0299e1 extcon_dev_register +EXPORT_SYMBOL_GPL vmlinux 0xbc3d252e vfs_getxattr +EXPORT_SYMBOL_GPL vmlinux 0xbc47fd49 __tracepoint_detach_device_from_domain +EXPORT_SYMBOL_GPL vmlinux 0xbc53aa8d of_irq_parse_and_map_pci +EXPORT_SYMBOL_GPL vmlinux 0xbc603464 __clocksource_update_freq_scale +EXPORT_SYMBOL_GPL vmlinux 0xbc63d80d input_ff_destroy +EXPORT_SYMBOL_GPL vmlinux 0xbc8b5db5 md_do_sync +EXPORT_SYMBOL_GPL vmlinux 0xbca73c23 ata_std_prereset +EXPORT_SYMBOL_GPL vmlinux 0xbcac6160 pm_qos_remove_notifier +EXPORT_SYMBOL_GPL vmlinux 0xbcc018c4 rdev_get_dev +EXPORT_SYMBOL_GPL vmlinux 0xbccfd4d8 register_oldmem_pfn_is_ram +EXPORT_SYMBOL_GPL vmlinux 0xbcd24304 crypto_register_template +EXPORT_SYMBOL_GPL vmlinux 0xbcdd5b99 iommu_group_set_name +EXPORT_SYMBOL_GPL vmlinux 0xbcef22b8 __lock_page_killable +EXPORT_SYMBOL_GPL vmlinux 0xbd0231a0 usb_put_dev +EXPORT_SYMBOL_GPL vmlinux 0xbd3fe1e3 disable_hardirq +EXPORT_SYMBOL_GPL vmlinux 0xbd49d2e5 skb_gso_transport_seglen +EXPORT_SYMBOL_GPL vmlinux 0xbd5cb8b9 ring_buffer_resize +EXPORT_SYMBOL_GPL vmlinux 0xbd671048 __alloc_percpu_gfp +EXPORT_SYMBOL_GPL vmlinux 0xbd9ef5ce tty_set_termios +EXPORT_SYMBOL_GPL vmlinux 0xbdc6b240 ata_sas_port_stop +EXPORT_SYMBOL_GPL vmlinux 0xbdccbafc __clocksource_register_scale +EXPORT_SYMBOL_GPL vmlinux 0xbdd295f0 trace_vprintk +EXPORT_SYMBOL_GPL vmlinux 0xbdd2f42a rcu_bh_force_quiescent_state +EXPORT_SYMBOL_GPL vmlinux 0xbde40466 subsys_interface_register +EXPORT_SYMBOL_GPL vmlinux 0xbde973e5 platform_device_register +EXPORT_SYMBOL_GPL vmlinux 0xbe1887e4 ata_unpack_xfermask +EXPORT_SYMBOL_GPL vmlinux 0xbe1e7e29 of_get_display_timing +EXPORT_SYMBOL_GPL vmlinux 0xbe1f5d9b crypto_hash_walk_first +EXPORT_SYMBOL_GPL vmlinux 0xbe2f47c9 usb_free_streams +EXPORT_SYMBOL_GPL vmlinux 0xbe355fe2 skb_scrub_packet +EXPORT_SYMBOL_GPL vmlinux 0xbe471cdf opal_rtc_read +EXPORT_SYMBOL_GPL vmlinux 0xbe64acbc dev_pm_qos_remove_notifier +EXPORT_SYMBOL_GPL vmlinux 0xbe687e88 wake_up_all_idle_cpus +EXPORT_SYMBOL_GPL vmlinux 0xbe705aaa securityfs_remove +EXPORT_SYMBOL_GPL vmlinux 0xbe81bd9a rtnl_put_cacheinfo +EXPORT_SYMBOL_GPL vmlinux 0xbe868975 dev_set_name +EXPORT_SYMBOL_GPL vmlinux 0xbe8d3224 nd_mapping_attribute_group +EXPORT_SYMBOL_GPL vmlinux 0xbe96dfd8 of_reconfig_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0xbea5ff1e static_key_initialized +EXPORT_SYMBOL_GPL vmlinux 0xbec15b5a irq_set_affinity_hint +EXPORT_SYMBOL_GPL vmlinux 0xbec8d1c8 analyse_instr +EXPORT_SYMBOL_GPL vmlinux 0xbedf52e4 dev_attr_em_message_type +EXPORT_SYMBOL_GPL vmlinux 0xbee21107 dm_internal_suspend_noflush +EXPORT_SYMBOL_GPL vmlinux 0xbf041102 register_vt_notifier +EXPORT_SYMBOL_GPL vmlinux 0xbf06ed80 __nvdimm_bus_register +EXPORT_SYMBOL_GPL vmlinux 0xbf0746f3 bus_for_each_drv +EXPORT_SYMBOL_GPL vmlinux 0xbf161eb8 pci_cfg_access_trylock +EXPORT_SYMBOL_GPL vmlinux 0xbf1cc04b tty_termios_encode_baud_rate +EXPORT_SYMBOL_GPL vmlinux 0xbf350344 spi_busnum_to_master +EXPORT_SYMBOL_GPL vmlinux 0xbf4c5bd9 kvmppc_do_h_remove +EXPORT_SYMBOL_GPL vmlinux 0xbf54141a pci_hp_add_bridge +EXPORT_SYMBOL_GPL vmlinux 0xbf7ea548 ata_sas_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0xbfb1db41 ptp_classify_raw +EXPORT_SYMBOL_GPL vmlinux 0xbfbc5434 pciserial_resume_ports +EXPORT_SYMBOL_GPL vmlinux 0xbfe5616d tick_broadcast_oneshot_control +EXPORT_SYMBOL_GPL vmlinux 0xbfe6c7b2 devres_open_group +EXPORT_SYMBOL_GPL vmlinux 0xbfe7ae68 __pm_runtime_set_status +EXPORT_SYMBOL_GPL vmlinux 0xbffde8ec compat_alloc_user_space +EXPORT_SYMBOL_GPL vmlinux 0xc02bec3c usb_unlink_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0xc046a1df driver_register +EXPORT_SYMBOL_GPL vmlinux 0xc04984bc ata_std_postreset +EXPORT_SYMBOL_GPL vmlinux 0xc04ce6fd napi_hash_del +EXPORT_SYMBOL_GPL vmlinux 0xc05fb6dd tcp_set_state +EXPORT_SYMBOL_GPL vmlinux 0xc061367e mpic_msgr_get +EXPORT_SYMBOL_GPL vmlinux 0xc065a455 cpu_core_index_of_thread +EXPORT_SYMBOL_GPL vmlinux 0xc065e3d1 kvmppc_add_revmap_chain +EXPORT_SYMBOL_GPL vmlinux 0xc07c9f01 fuse_request_send +EXPORT_SYMBOL_GPL vmlinux 0xc08647ff ring_buffer_bytes_cpu +EXPORT_SYMBOL_GPL vmlinux 0xc097e52d __root_device_register +EXPORT_SYMBOL_GPL vmlinux 0xc0a96e14 rcu_gp_is_expedited +EXPORT_SYMBOL_GPL vmlinux 0xc0c68b05 dma_buf_vmap +EXPORT_SYMBOL_GPL vmlinux 0xc0ccbba9 usb_register_device_driver +EXPORT_SYMBOL_GPL vmlinux 0xc0d26387 kmsg_dump_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc0d2f8fd ata_do_eh +EXPORT_SYMBOL_GPL vmlinux 0xc0df8865 timerqueue_add +EXPORT_SYMBOL_GPL vmlinux 0xc0f8fecc usb_store_new_id +EXPORT_SYMBOL_GPL vmlinux 0xc1094456 ata_scsi_slave_config +EXPORT_SYMBOL_GPL vmlinux 0xc10e2e5c hvc_remove +EXPORT_SYMBOL_GPL vmlinux 0xc1722616 cpci_hp_unregister_controller +EXPORT_SYMBOL_GPL vmlinux 0xc17515d7 usb_hcds_loaded +EXPORT_SYMBOL_GPL vmlinux 0xc17f90c1 fat_remove_entries +EXPORT_SYMBOL_GPL vmlinux 0xc1939d24 debugfs_print_regs32 +EXPORT_SYMBOL_GPL vmlinux 0xc19755a1 file_ra_state_init +EXPORT_SYMBOL_GPL vmlinux 0xc1a4d52b sdio_f0_writeb +EXPORT_SYMBOL_GPL vmlinux 0xc1b731be platform_get_resource +EXPORT_SYMBOL_GPL vmlinux 0xc1b963dc ip6_push_pending_frames +EXPORT_SYMBOL_GPL vmlinux 0xc1e8b128 pci_generic_config_read +EXPORT_SYMBOL_GPL vmlinux 0xc207e681 devm_usb_get_phy_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0xc2247823 pci_check_and_unmask_intx +EXPORT_SYMBOL_GPL vmlinux 0xc22a3091 vm_unmap_aliases +EXPORT_SYMBOL_GPL vmlinux 0xc246887f ping_unhash +EXPORT_SYMBOL_GPL vmlinux 0xc2519c57 ata_sas_slave_configure +EXPORT_SYMBOL_GPL vmlinux 0xc280fb46 kdb_register +EXPORT_SYMBOL_GPL vmlinux 0xc2aa61ea arizona_clk32k_enable +EXPORT_SYMBOL_GPL vmlinux 0xc2b68631 extcon_get_extcon_dev +EXPORT_SYMBOL_GPL vmlinux 0xc2bcc5f8 pci_reset_pri +EXPORT_SYMBOL_GPL vmlinux 0xc2c05c0e iommu_take_ownership +EXPORT_SYMBOL_GPL vmlinux 0xc2c25342 usb_poison_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0xc2e3a5dc extcon_set_cable_state +EXPORT_SYMBOL_GPL vmlinux 0xc2ff68dd blk_queue_lld_busy +EXPORT_SYMBOL_GPL vmlinux 0xc31052f7 __blkg_prfill_rwstat +EXPORT_SYMBOL_GPL vmlinux 0xc311c679 tracepoint_probe_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc316f998 dev_change_net_namespace +EXPORT_SYMBOL_GPL vmlinux 0xc31bd859 attribute_container_classdev_to_container +EXPORT_SYMBOL_GPL vmlinux 0xc3232b3d regmap_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0xc3246ccb set_online_page_callback +EXPORT_SYMBOL_GPL vmlinux 0xc329bd2f ata_sff_exec_command +EXPORT_SYMBOL_GPL vmlinux 0xc33ec8ae sysfs_remove_group +EXPORT_SYMBOL_GPL vmlinux 0xc341ae6d zs_map_object +EXPORT_SYMBOL_GPL vmlinux 0xc3504c11 sk_setup_caps +EXPORT_SYMBOL_GPL vmlinux 0xc357923c pm_qos_update_request +EXPORT_SYMBOL_GPL vmlinux 0xc37226a5 tpm_pcr_extend +EXPORT_SYMBOL_GPL vmlinux 0xc3830be8 dm_get_table_device +EXPORT_SYMBOL_GPL vmlinux 0xc385f488 platform_bus_type +EXPORT_SYMBOL_GPL vmlinux 0xc39da481 blk_trace_setup +EXPORT_SYMBOL_GPL vmlinux 0xc3d16287 xfrm_inner_extract_output +EXPORT_SYMBOL_GPL vmlinux 0xc3eefc07 ata_eh_analyze_ncq_error +EXPORT_SYMBOL_GPL vmlinux 0xc3f30242 usb_hcd_giveback_urb +EXPORT_SYMBOL_GPL vmlinux 0xc4097ecc power_supply_property_is_writeable +EXPORT_SYMBOL_GPL vmlinux 0xc413834d pmf_call_function +EXPORT_SYMBOL_GPL vmlinux 0xc4194a18 devm_kmemdup +EXPORT_SYMBOL_GPL vmlinux 0xc428068d sata_deb_timing_long +EXPORT_SYMBOL_GPL vmlinux 0xc44754fb nd_numa_attribute_group +EXPORT_SYMBOL_GPL vmlinux 0xc44fef03 kset_create_and_add +EXPORT_SYMBOL_GPL vmlinux 0xc454fc7b twl_get_type +EXPORT_SYMBOL_GPL vmlinux 0xc471c67a twl4030_audio_disable_resource +EXPORT_SYMBOL_GPL vmlinux 0xc4773d7f mbox_free_channel +EXPORT_SYMBOL_GPL vmlinux 0xc4869bfc pm_generic_freeze_late +EXPORT_SYMBOL_GPL vmlinux 0xc48b7ccf ata_mode_string +EXPORT_SYMBOL_GPL vmlinux 0xc49c809d rtc_irq_set_freq +EXPORT_SYMBOL_GPL vmlinux 0xc4a16a61 unregister_jprobe +EXPORT_SYMBOL_GPL vmlinux 0xc4cccca9 rio_mport_write_config_32 +EXPORT_SYMBOL_GPL vmlinux 0xc4e4d497 blkg_lookup_create +EXPORT_SYMBOL_GPL vmlinux 0xc4ec1c0f request_firmware_direct +EXPORT_SYMBOL_GPL vmlinux 0xc4fa0ca8 ipv6_find_tlv +EXPORT_SYMBOL_GPL vmlinux 0xc510a228 shash_ahash_update +EXPORT_SYMBOL_GPL vmlinux 0xc5191c44 regulator_set_voltage_sel_regmap +EXPORT_SYMBOL_GPL vmlinux 0xc521faea ohci_resume +EXPORT_SYMBOL_GPL vmlinux 0xc526257a eventfd_ctx_fileget +EXPORT_SYMBOL_GPL vmlinux 0xc5267bfe tcp_register_congestion_control +EXPORT_SYMBOL_GPL vmlinux 0xc542933a timecounter_read +EXPORT_SYMBOL_GPL vmlinux 0xc575c737 debug_locks_off +EXPORT_SYMBOL_GPL vmlinux 0xc5874082 hwmon_device_register +EXPORT_SYMBOL_GPL vmlinux 0xc5a0a3a6 reservation_object_get_fences_rcu +EXPORT_SYMBOL_GPL vmlinux 0xc5a1c470 fwnode_property_read_u8_array +EXPORT_SYMBOL_GPL vmlinux 0xc5a2c19f idr_alloc +EXPORT_SYMBOL_GPL vmlinux 0xc5a7b3ea of_address_to_resource +EXPORT_SYMBOL_GPL vmlinux 0xc5bceb30 shash_ahash_finup +EXPORT_SYMBOL_GPL vmlinux 0xc5d5fdbc pci_disable_ats +EXPORT_SYMBOL_GPL vmlinux 0xc606cd3c boot_cpuid +EXPORT_SYMBOL_GPL vmlinux 0xc617f82c unregister_oom_notifier +EXPORT_SYMBOL_GPL vmlinux 0xc61a8488 copro_calculate_slb +EXPORT_SYMBOL_GPL vmlinux 0xc63d847d ktime_get_mono_fast_ns +EXPORT_SYMBOL_GPL vmlinux 0xc65d3eed ring_buffer_entries_cpu +EXPORT_SYMBOL_GPL vmlinux 0xc66b77b1 iommu_group_set_iommudata +EXPORT_SYMBOL_GPL vmlinux 0xc66c2311 ps3_vuart_irq_destroy +EXPORT_SYMBOL_GPL vmlinux 0xc679741d cleanup_srcu_struct +EXPORT_SYMBOL_GPL vmlinux 0xc68aa252 __atomic_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xc69b7ee5 zs_destroy_pool +EXPORT_SYMBOL_GPL vmlinux 0xc6aa3c1b ata_eh_freeze_port +EXPORT_SYMBOL_GPL vmlinux 0xc6c69a8f opal_flash_write +EXPORT_SYMBOL_GPL vmlinux 0xc6de84ae sdio_memcpy_fromio +EXPORT_SYMBOL_GPL vmlinux 0xc6e2f79a percpu_ida_alloc +EXPORT_SYMBOL_GPL vmlinux 0xc6eea5a8 gpiod_set_array_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0xc705b11f nvdimm_name +EXPORT_SYMBOL_GPL vmlinux 0xc70a739d ata_pci_device_do_resume +EXPORT_SYMBOL_GPL vmlinux 0xc71ab05d extcon_update_state +EXPORT_SYMBOL_GPL vmlinux 0xc7267ba6 of_property_read_u16_array +EXPORT_SYMBOL_GPL vmlinux 0xc72e1233 __trace_bprintk +EXPORT_SYMBOL_GPL vmlinux 0xc72fd96b devm_of_phy_provider_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc740d068 xhci_suspend +EXPORT_SYMBOL_GPL vmlinux 0xc7628b2b security_inode_setattr +EXPORT_SYMBOL_GPL vmlinux 0xc771a5c7 virtqueue_add_inbuf +EXPORT_SYMBOL_GPL vmlinux 0xc7982365 xhci_resume +EXPORT_SYMBOL_GPL vmlinux 0xc7a1840e llist_add_batch +EXPORT_SYMBOL_GPL vmlinux 0xc7b97bf7 fb_bl_default_curve +EXPORT_SYMBOL_GPL vmlinux 0xc7c6391c mpi_set_buffer +EXPORT_SYMBOL_GPL vmlinux 0xc7db2053 __pm_runtime_use_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0xc7e39bca ring_buffer_dropped_events_cpu +EXPORT_SYMBOL_GPL vmlinux 0xc7ee6fd7 debugfs_create_file_size +EXPORT_SYMBOL_GPL vmlinux 0xc7f118b2 fuse_dev_release +EXPORT_SYMBOL_GPL vmlinux 0xc7f2f8c6 add_page_wait_queue +EXPORT_SYMBOL_GPL vmlinux 0xc7f64089 inet_csk_get_port +EXPORT_SYMBOL_GPL vmlinux 0xc7f9355d usb_wakeup_notification +EXPORT_SYMBOL_GPL vmlinux 0xc7f9497f vring_del_virtqueue +EXPORT_SYMBOL_GPL vmlinux 0xc7ff5b51 vfs_listxattr +EXPORT_SYMBOL_GPL vmlinux 0xc8372d5a relay_buf_full +EXPORT_SYMBOL_GPL vmlinux 0xc84b5a8d con_debug_enter +EXPORT_SYMBOL_GPL vmlinux 0xc8547cb2 virtqueue_kick +EXPORT_SYMBOL_GPL vmlinux 0xc87c1f84 ktime_get +EXPORT_SYMBOL_GPL vmlinux 0xc886d799 tps6586x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xc8896a5a __ata_change_queue_depth +EXPORT_SYMBOL_GPL vmlinux 0xc8add232 ring_buffer_record_disable +EXPORT_SYMBOL_GPL vmlinux 0xc8b3f292 crypto_unregister_alg +EXPORT_SYMBOL_GPL vmlinux 0xc8bd290f inode_congested +EXPORT_SYMBOL_GPL vmlinux 0xc8c2b464 ping_seq_next +EXPORT_SYMBOL_GPL vmlinux 0xc8de802f cn_netlink_send +EXPORT_SYMBOL_GPL vmlinux 0xc8f14649 ata_sff_qc_fill_rtf +EXPORT_SYMBOL_GPL vmlinux 0xc902e374 flush_fp_to_thread +EXPORT_SYMBOL_GPL vmlinux 0xc90432cb percpu_ida_free +EXPORT_SYMBOL_GPL vmlinux 0xc91277a1 kgdb_schedule_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0xc916ead4 iommu_tce_clear_param_check +EXPORT_SYMBOL_GPL vmlinux 0xc9561772 fb_destroy_modelist +EXPORT_SYMBOL_GPL vmlinux 0xc9641b48 visitor32 +EXPORT_SYMBOL_GPL vmlinux 0xc974f063 of_pci_msi_chip_remove +EXPORT_SYMBOL_GPL vmlinux 0xc97d1140 cpufreq_cooling_get_level +EXPORT_SYMBOL_GPL vmlinux 0xc9853c9f pci_create_slot +EXPORT_SYMBOL_GPL vmlinux 0xc98fe32a led_trigger_blink +EXPORT_SYMBOL_GPL vmlinux 0xc994f357 tpm2_startup +EXPORT_SYMBOL_GPL vmlinux 0xc9a26755 eeh_pe_set_option +EXPORT_SYMBOL_GPL vmlinux 0xc9a5e530 usb_get_status +EXPORT_SYMBOL_GPL vmlinux 0xc9b713b2 split_page +EXPORT_SYMBOL_GPL vmlinux 0xc9b9e88a list_lru_count_one +EXPORT_SYMBOL_GPL vmlinux 0xc9e068b9 regulator_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0xc9ec4e21 free_percpu +EXPORT_SYMBOL_GPL vmlinux 0xc9fd17b5 relay_reset +EXPORT_SYMBOL_GPL vmlinux 0xc9ff2148 tty_ldisc_ref_wait +EXPORT_SYMBOL_GPL vmlinux 0xca0f498c __dev_forward_skb +EXPORT_SYMBOL_GPL vmlinux 0xca3ad64f swiotlb_tbl_sync_single +EXPORT_SYMBOL_GPL vmlinux 0xca3c0f2c uart_insert_char +EXPORT_SYMBOL_GPL vmlinux 0xca404368 ata_scsi_simulate +EXPORT_SYMBOL_GPL vmlinux 0xca603ee0 trace_define_field +EXPORT_SYMBOL_GPL vmlinux 0xca7d8764 kthread_freezable_should_stop +EXPORT_SYMBOL_GPL vmlinux 0xca818dce usb_disable_ltm +EXPORT_SYMBOL_GPL vmlinux 0xca819694 __inet_twsk_hashdance +EXPORT_SYMBOL_GPL vmlinux 0xcaac7226 of_get_nand_ecc_mode +EXPORT_SYMBOL_GPL vmlinux 0xcaaed8b2 scsi_mode_select +EXPORT_SYMBOL_GPL vmlinux 0xcab118bd fat_getattr +EXPORT_SYMBOL_GPL vmlinux 0xcabe04de cpuidle_resume_and_unlock +EXPORT_SYMBOL_GPL vmlinux 0xcac9d35c pwm_config +EXPORT_SYMBOL_GPL vmlinux 0xcacab165 dev_coredumpm +EXPORT_SYMBOL_GPL vmlinux 0xcad08323 wm5110_i2c_regmap +EXPORT_SYMBOL_GPL vmlinux 0xcb0187b1 rio_request_inb_mbox +EXPORT_SYMBOL_GPL vmlinux 0xcb0dc1d7 cpufreq_freq_transition_begin +EXPORT_SYMBOL_GPL vmlinux 0xcb15eee9 sdhci_pci_get_data +EXPORT_SYMBOL_GPL vmlinux 0xcb469d2b ddebug_add_module +EXPORT_SYMBOL_GPL vmlinux 0xcb58008b pci_stop_and_remove_bus_device_locked +EXPORT_SYMBOL_GPL vmlinux 0xcb6471a7 crypto_ahash_setkey +EXPORT_SYMBOL_GPL vmlinux 0xcb6fe016 ps3_vuart_cancel_async +EXPORT_SYMBOL_GPL vmlinux 0xcb76ed9e blkcg_activate_policy +EXPORT_SYMBOL_GPL vmlinux 0xcb971fd7 class_remove_file_ns +EXPORT_SYMBOL_GPL vmlinux 0xcba220ce irq_generic_chip_ops +EXPORT_SYMBOL_GPL vmlinux 0xcbcd8745 sysfs_remove_device_from_node +EXPORT_SYMBOL_GPL vmlinux 0xcbded6cf to_nvdimm +EXPORT_SYMBOL_GPL vmlinux 0xcbe56bc2 zs_get_total_pages +EXPORT_SYMBOL_GPL vmlinux 0xcbee20b2 get_cpu_iowait_time_us +EXPORT_SYMBOL_GPL vmlinux 0xcbfe1267 blkcg_print_blkgs +EXPORT_SYMBOL_GPL vmlinux 0xcc0d746d trace_seq_vprintf +EXPORT_SYMBOL_GPL vmlinux 0xcc0f1009 power_supply_notifier +EXPORT_SYMBOL_GPL vmlinux 0xcc107a2e scsi_target_block +EXPORT_SYMBOL_GPL vmlinux 0xcc23267f __mnt_drop_write +EXPORT_SYMBOL_GPL vmlinux 0xcc2ba30d list_lru_del +EXPORT_SYMBOL_GPL vmlinux 0xcc36c4de spi_sync +EXPORT_SYMBOL_GPL vmlinux 0xcc761a37 input_ff_create +EXPORT_SYMBOL_GPL vmlinux 0xcc774bf0 get_slice_psize +EXPORT_SYMBOL_GPL vmlinux 0xcc7aebcc gpiod_get_array_optional +EXPORT_SYMBOL_GPL vmlinux 0xcc85fcb6 async_schedule +EXPORT_SYMBOL_GPL vmlinux 0xccabbb93 of_get_display_timings +EXPORT_SYMBOL_GPL vmlinux 0xccad762c set_cpus_allowed_ptr +EXPORT_SYMBOL_GPL vmlinux 0xcccfb2fa sata_deb_timing_hotplug +EXPORT_SYMBOL_GPL vmlinux 0xcce66f04 skb_append_pagefrags +EXPORT_SYMBOL_GPL vmlinux 0xcd0d4c9a dax_fault +EXPORT_SYMBOL_GPL vmlinux 0xcd1d0762 kvm_release_hpt +EXPORT_SYMBOL_GPL vmlinux 0xcd2bf17c tcp_peer_is_proven +EXPORT_SYMBOL_GPL vmlinux 0xcd36faff __rio_local_write_config_8 +EXPORT_SYMBOL_GPL vmlinux 0xcd66b01b regulator_get_hardware_vsel_register +EXPORT_SYMBOL_GPL vmlinux 0xcd826d97 ata_host_suspend +EXPORT_SYMBOL_GPL vmlinux 0xcd8e4a77 ping_queue_rcv_skb +EXPORT_SYMBOL_GPL vmlinux 0xcd91b127 system_highpri_wq +EXPORT_SYMBOL_GPL vmlinux 0xcd974f00 rcu_all_qs +EXPORT_SYMBOL_GPL vmlinux 0xcd999c64 wakeup_source_create +EXPORT_SYMBOL_GPL vmlinux 0xcdb56b04 scsi_schedule_eh +EXPORT_SYMBOL_GPL vmlinux 0xcdb6adcc ras_userspace_consumers +EXPORT_SYMBOL_GPL vmlinux 0xcdb7579d dio_end_io +EXPORT_SYMBOL_GPL vmlinux 0xcdc2eaf7 xattr_getsecurity +EXPORT_SYMBOL_GPL vmlinux 0xcdca3691 nr_irqs +EXPORT_SYMBOL_GPL vmlinux 0xce0dec10 pci_cfg_access_lock +EXPORT_SYMBOL_GPL vmlinux 0xce14cb14 led_classdev_register +EXPORT_SYMBOL_GPL vmlinux 0xce1570d3 blkdev_ioctl +EXPORT_SYMBOL_GPL vmlinux 0xce4a7b9a devm_rtc_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xce5356d6 regmap_async_complete_cb +EXPORT_SYMBOL_GPL vmlinux 0xce6a9d9a trace_current_buffer_discard_commit +EXPORT_SYMBOL_GPL vmlinux 0xce6db656 rcu_is_watching +EXPORT_SYMBOL_GPL vmlinux 0xce8e50fb crypto_register_alg +EXPORT_SYMBOL_GPL vmlinux 0xce8edc34 spu_switch_event_unregister +EXPORT_SYMBOL_GPL vmlinux 0xcea24d6e skb_cow_data +EXPORT_SYMBOL_GPL vmlinux 0xceb1f126 mpi_read_raw_data +EXPORT_SYMBOL_GPL vmlinux 0xcebab3f3 virtio_check_driver_offered_feature +EXPORT_SYMBOL_GPL vmlinux 0xcebbe52c __gpiod_get_index +EXPORT_SYMBOL_GPL vmlinux 0xcec78373 adp5520_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0xcee1641c kgdb_unregister_nmi_console +EXPORT_SYMBOL_GPL vmlinux 0xcf29b457 iptunnel_handle_offloads +EXPORT_SYMBOL_GPL vmlinux 0xcf54ea93 async_unregister_domain +EXPORT_SYMBOL_GPL vmlinux 0xcf62f540 fwnode_property_read_string_array +EXPORT_SYMBOL_GPL vmlinux 0xcf8d8786 skb_complete_tx_timestamp +EXPORT_SYMBOL_GPL vmlinux 0xcf8fecca gen_pool_get +EXPORT_SYMBOL_GPL vmlinux 0xcf931844 bmp085_probe +EXPORT_SYMBOL_GPL vmlinux 0xcf9404ce drop_cop +EXPORT_SYMBOL_GPL vmlinux 0xcf9bb831 inet_getpeer +EXPORT_SYMBOL_GPL vmlinux 0xcfa39eca __tracepoint_rpm_suspend +EXPORT_SYMBOL_GPL vmlinux 0xcfa78836 usb_hcd_platform_shutdown +EXPORT_SYMBOL_GPL vmlinux 0xcfb5871c irq_work_queue +EXPORT_SYMBOL_GPL vmlinux 0xcfc68341 synchronize_rcu_bh +EXPORT_SYMBOL_GPL vmlinux 0xcfd018e3 watchdog_register_device +EXPORT_SYMBOL_GPL vmlinux 0xd01afd3f opal_tpo_read +EXPORT_SYMBOL_GPL vmlinux 0xd0249e94 tps65912_reg_write +EXPORT_SYMBOL_GPL vmlinux 0xd03c7700 secure_ipv4_port_ephemeral +EXPORT_SYMBOL_GPL vmlinux 0xd0428072 ata_sff_hsm_move +EXPORT_SYMBOL_GPL vmlinux 0xd05a0f18 get_current_tty +EXPORT_SYMBOL_GPL vmlinux 0xd06524ba raw_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd067d3c5 system_freezable_power_efficient_wq +EXPORT_SYMBOL_GPL vmlinux 0xd069a8b0 iptunnel_xmit +EXPORT_SYMBOL_GPL vmlinux 0xd08bf9dd __crypto_alloc_tfm +EXPORT_SYMBOL_GPL vmlinux 0xd0b97998 regmap_get_max_register +EXPORT_SYMBOL_GPL vmlinux 0xd0c05159 emergency_restart +EXPORT_SYMBOL_GPL vmlinux 0xd1003523 ata_sff_tf_load +EXPORT_SYMBOL_GPL vmlinux 0xd12dc5e5 usb_unpoison_urb +EXPORT_SYMBOL_GPL vmlinux 0xd15804dd pci_generic_config_write32 +EXPORT_SYMBOL_GPL vmlinux 0xd16712f3 crypto_check_attr_type +EXPORT_SYMBOL_GPL vmlinux 0xd174c126 usb_enable_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0xd177fa6a ping_proc_register +EXPORT_SYMBOL_GPL vmlinux 0xd19e1817 rtc_class_close +EXPORT_SYMBOL_GPL vmlinux 0xd1c0bf7d dma_buf_attach +EXPORT_SYMBOL_GPL vmlinux 0xd1c0c2ee ata_dev_set_feature +EXPORT_SYMBOL_GPL vmlinux 0xd1cd7253 __hvc_resize +EXPORT_SYMBOL_GPL vmlinux 0xd1e9b562 vfs_setxattr +EXPORT_SYMBOL_GPL vmlinux 0xd1f2eee2 nf_logger_find_get +EXPORT_SYMBOL_GPL vmlinux 0xd1ffee76 kallsyms_on_each_symbol +EXPORT_SYMBOL_GPL vmlinux 0xd20bf6ba dcookie_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd213a0a1 spi_bus_unlock +EXPORT_SYMBOL_GPL vmlinux 0xd217e9e6 trace_set_clr_event +EXPORT_SYMBOL_GPL vmlinux 0xd219ad5f extcon_get_edev_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0xd227b602 usb_root_hub_lost_power +EXPORT_SYMBOL_GPL vmlinux 0xd23d4caf debugfs_create_x32 +EXPORT_SYMBOL_GPL vmlinux 0xd240fcaa debugfs_create_u16 +EXPORT_SYMBOL_GPL vmlinux 0xd249710d usb_deregister +EXPORT_SYMBOL_GPL vmlinux 0xd26bff48 __gpiod_get_index_optional +EXPORT_SYMBOL_GPL vmlinux 0xd273b1b1 __round_jiffies_up_relative +EXPORT_SYMBOL_GPL vmlinux 0xd2bcdb9a invalidate_inode_pages2_range +EXPORT_SYMBOL_GPL vmlinux 0xd2bfce58 power_supply_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0xd2edf4b7 ata_get_cmd_descript +EXPORT_SYMBOL_GPL vmlinux 0xd311a426 pci_cfg_access_unlock +EXPORT_SYMBOL_GPL vmlinux 0xd31ebb4b regulator_list_voltage_linear +EXPORT_SYMBOL_GPL vmlinux 0xd33b2300 __udp4_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0xd344ef98 device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd350eff6 da903x_read +EXPORT_SYMBOL_GPL vmlinux 0xd357e27b __rtnl_link_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd39156f2 blk_set_queue_dying +EXPORT_SYMBOL_GPL vmlinux 0xd399f206 gpiod_set_value +EXPORT_SYMBOL_GPL vmlinux 0xd3b0e357 dev_attr_unload_heads +EXPORT_SYMBOL_GPL vmlinux 0xd3e11b3b ata_link_offline +EXPORT_SYMBOL_GPL vmlinux 0xd4034828 system_freezable_wq +EXPORT_SYMBOL_GPL vmlinux 0xd40974bf iommu_release_ownership +EXPORT_SYMBOL_GPL vmlinux 0xd4191e69 irq_find_mapping +EXPORT_SYMBOL_GPL vmlinux 0xd419a73d dma_buf_end_cpu_access +EXPORT_SYMBOL_GPL vmlinux 0xd41fffab interval_tree_iter_first +EXPORT_SYMBOL_GPL vmlinux 0xd420b7ba perf_event_enable +EXPORT_SYMBOL_GPL vmlinux 0xd4311090 crypto_lookup_template +EXPORT_SYMBOL_GPL vmlinux 0xd4487fd5 snprint_stack_trace +EXPORT_SYMBOL_GPL vmlinux 0xd44a5eac kgdb_register_nmi_console +EXPORT_SYMBOL_GPL vmlinux 0xd473fdee pm_generic_restore_noirq +EXPORT_SYMBOL_GPL vmlinux 0xd47f1250 ata_pci_bmdma_prepare_host +EXPORT_SYMBOL_GPL vmlinux 0xd4838255 crypto_alloc_instance +EXPORT_SYMBOL_GPL vmlinux 0xd48fc814 xfrm_output +EXPORT_SYMBOL_GPL vmlinux 0xd49029e0 preempt_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd4a96c9c of_thermal_is_trip_valid +EXPORT_SYMBOL_GPL vmlinux 0xd4b515ea serial8250_rpm_get +EXPORT_SYMBOL_GPL vmlinux 0xd4c14632 system_unbound_wq +EXPORT_SYMBOL_GPL vmlinux 0xd4e16feb rio_register_driver +EXPORT_SYMBOL_GPL vmlinux 0xd4ef6694 sata_scr_valid +EXPORT_SYMBOL_GPL vmlinux 0xd52b4f7a key_type_user +EXPORT_SYMBOL_GPL vmlinux 0xd52cb142 usb_remove_hcd +EXPORT_SYMBOL_GPL vmlinux 0xd5493ec5 macio_find +EXPORT_SYMBOL_GPL vmlinux 0xd5596d48 opal_xscom_write +EXPORT_SYMBOL_GPL vmlinux 0xd55ad93b iommu_group_get_iommudata +EXPORT_SYMBOL_GPL vmlinux 0xd5662d6a tty_perform_flush +EXPORT_SYMBOL_GPL vmlinux 0xd5681cc5 disk_part_iter_next +EXPORT_SYMBOL_GPL vmlinux 0xd56b5f64 ktime_get_ts64 +EXPORT_SYMBOL_GPL vmlinux 0xd584f7a6 blk_mq_unfreeze_queue +EXPORT_SYMBOL_GPL vmlinux 0xd5b8d4b3 pmf_call_one +EXPORT_SYMBOL_GPL vmlinux 0xd5bd7dac ring_buffer_record_enable_cpu +EXPORT_SYMBOL_GPL vmlinux 0xd5c36c40 __tracepoint_attach_device_to_domain +EXPORT_SYMBOL_GPL vmlinux 0xd5d91be5 gpiod_direction_output +EXPORT_SYMBOL_GPL vmlinux 0xd5e6540f __pneigh_lookup +EXPORT_SYMBOL_GPL vmlinux 0xd5e82204 tps6586x_update +EXPORT_SYMBOL_GPL vmlinux 0xd5f69768 rtc_set_alarm +EXPORT_SYMBOL_GPL vmlinux 0xd5fd583c scom_map_device +EXPORT_SYMBOL_GPL vmlinux 0xd60656f9 dma_get_any_slave_channel +EXPORT_SYMBOL_GPL vmlinux 0xd60c99b5 rcu_batches_completed_bh +EXPORT_SYMBOL_GPL vmlinux 0xd61453d3 led_trigger_blink_oneshot +EXPORT_SYMBOL_GPL vmlinux 0xd61f207b crypto_ablkcipher_type +EXPORT_SYMBOL_GPL vmlinux 0xd634ecbf gpiod_set_raw_array_value +EXPORT_SYMBOL_GPL vmlinux 0xd646d820 handle_mm_fault +EXPORT_SYMBOL_GPL vmlinux 0xd64a92ff spu_get_profile_private_kref +EXPORT_SYMBOL_GPL vmlinux 0xd652b7e8 ata_sff_drain_fifo +EXPORT_SYMBOL_GPL vmlinux 0xd6615c90 blk_rq_unprep_clone +EXPORT_SYMBOL_GPL vmlinux 0xd67364f7 eventfd_ctx_fdget +EXPORT_SYMBOL_GPL vmlinux 0xd6895d4e crypto_unregister_ahash +EXPORT_SYMBOL_GPL vmlinux 0xd69b70dc sock_diag_put_meminfo +EXPORT_SYMBOL_GPL vmlinux 0xd6a0ad86 inverse_translate +EXPORT_SYMBOL_GPL vmlinux 0xd6a43677 opal_async_release_token +EXPORT_SYMBOL_GPL vmlinux 0xd6bc3ebe pmf_get_function +EXPORT_SYMBOL_GPL vmlinux 0xd6c25149 usb_autopm_get_interface_async +EXPORT_SYMBOL_GPL vmlinux 0xd6d703c9 ata_sff_postreset +EXPORT_SYMBOL_GPL vmlinux 0xd6d83103 crypto_unregister_shashes +EXPORT_SYMBOL_GPL vmlinux 0xd6e6c65c rio_release_outb_mbox +EXPORT_SYMBOL_GPL vmlinux 0xd6feefa5 agp_num_entries +EXPORT_SYMBOL_GPL vmlinux 0xd700d2ab regulator_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0xd705b4c7 schedule_hrtimeout +EXPORT_SYMBOL_GPL vmlinux 0xd70828c0 ata_cable_ignore +EXPORT_SYMBOL_GPL vmlinux 0xd7475a24 crypto_alloc_tfm +EXPORT_SYMBOL_GPL vmlinux 0xd75aeaa3 crypto_alg_sem +EXPORT_SYMBOL_GPL vmlinux 0xd765a8a5 blkcg_root +EXPORT_SYMBOL_GPL vmlinux 0xd768e985 regulator_has_full_constraints +EXPORT_SYMBOL_GPL vmlinux 0xd770ed6c iommu_set_fault_handler +EXPORT_SYMBOL_GPL vmlinux 0xd77c0bc8 klist_remove +EXPORT_SYMBOL_GPL vmlinux 0xd79ce2b5 dev_pm_enable_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0xd79ff298 tty_find_polling_driver +EXPORT_SYMBOL_GPL vmlinux 0xd7adb5ce skb_partial_csum_set +EXPORT_SYMBOL_GPL vmlinux 0xd7d79132 put_online_cpus +EXPORT_SYMBOL_GPL vmlinux 0xd7e4449e srcu_barrier +EXPORT_SYMBOL_GPL vmlinux 0xd7e841c7 edac_subsys +EXPORT_SYMBOL_GPL vmlinux 0xd7ed8ce4 cpufreq_unregister_governor +EXPORT_SYMBOL_GPL vmlinux 0xd81de62c ring_buffer_record_enable +EXPORT_SYMBOL_GPL vmlinux 0xd820c283 eventfd_ctx_remove_wait_queue +EXPORT_SYMBOL_GPL vmlinux 0xd8247a2f crypto_grab_skcipher +EXPORT_SYMBOL_GPL vmlinux 0xd8263870 mmu_slb_size +EXPORT_SYMBOL_GPL vmlinux 0xd828a786 unregister_jprobes +EXPORT_SYMBOL_GPL vmlinux 0xd845b458 fsstack_copy_attr_all +EXPORT_SYMBOL_GPL vmlinux 0xd8498f4d ps3av_mode_cs_info +EXPORT_SYMBOL_GPL vmlinux 0xd84cdf72 task_cgroup_path +EXPORT_SYMBOL_GPL vmlinux 0xd85e3920 irq_gc_mask_clr_bit +EXPORT_SYMBOL_GPL vmlinux 0xd8622707 modify_user_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0xd86f4aa4 __netlink_alloc_skb +EXPORT_SYMBOL_GPL vmlinux 0xd8708c52 crypto_grab_spawn +EXPORT_SYMBOL_GPL vmlinux 0xd87601cc ring_buffer_unlock_commit +EXPORT_SYMBOL_GPL vmlinux 0xd87fc0a0 usb_amd_prefetch_quirk +EXPORT_SYMBOL_GPL vmlinux 0xd8904275 rtnl_af_register +EXPORT_SYMBOL_GPL vmlinux 0xd892d6d1 __netpoll_free_async +EXPORT_SYMBOL_GPL vmlinux 0xd8954672 of_property_read_u8_array +EXPORT_SYMBOL_GPL vmlinux 0xd8b7bc5a stmpe_block_read +EXPORT_SYMBOL_GPL vmlinux 0xd8f4e2c4 bus_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd8f78e4f uart_console_write +EXPORT_SYMBOL_GPL vmlinux 0xd8fc0eb7 srp_rport_add +EXPORT_SYMBOL_GPL vmlinux 0xd90033f9 fwnode_property_read_u32_array +EXPORT_SYMBOL_GPL vmlinux 0xd9135243 regulator_get +EXPORT_SYMBOL_GPL vmlinux 0xd92de034 hash_page_mm +EXPORT_SYMBOL_GPL vmlinux 0xd93edc14 kobj_sysfs_ops +EXPORT_SYMBOL_GPL vmlinux 0xd942d353 ring_buffer_record_off +EXPORT_SYMBOL_GPL vmlinux 0xd947baa8 spi_master_resume +EXPORT_SYMBOL_GPL vmlinux 0xd9497b3c ps3_os_area_flash_register +EXPORT_SYMBOL_GPL vmlinux 0xd94aa457 display_timings_release +EXPORT_SYMBOL_GPL vmlinux 0xd96babb4 interval_tree_iter_next +EXPORT_SYMBOL_GPL vmlinux 0xd96bceea cpci_hp_register_bus +EXPORT_SYMBOL_GPL vmlinux 0xd96ca377 dm_send_uevents +EXPORT_SYMBOL_GPL vmlinux 0xd97878a7 mm_iommu_preregistered +EXPORT_SYMBOL_GPL vmlinux 0xd98a609c __sock_recv_ts_and_drops +EXPORT_SYMBOL_GPL vmlinux 0xd99fdc44 bitmap_copy_from_slot +EXPORT_SYMBOL_GPL vmlinux 0xd9a67468 md_stop_writes +EXPORT_SYMBOL_GPL vmlinux 0xd9bc648e pm_generic_poweroff_late +EXPORT_SYMBOL_GPL vmlinux 0xd9ecb670 ring_buffer_overruns +EXPORT_SYMBOL_GPL vmlinux 0xda0a4d22 mpic_msgr_enable +EXPORT_SYMBOL_GPL vmlinux 0xda10ddbb each_symbol_section +EXPORT_SYMBOL_GPL vmlinux 0xda15e892 public_key_subtype +EXPORT_SYMBOL_GPL vmlinux 0xda16bf10 usb_hcd_unmap_urb_for_dma +EXPORT_SYMBOL_GPL vmlinux 0xda1992cd ata_timing_compute +EXPORT_SYMBOL_GPL vmlinux 0xda6f43f3 dma_buf_unmap_attachment +EXPORT_SYMBOL_GPL vmlinux 0xdab85c3a gpiod_get_raw_value +EXPORT_SYMBOL_GPL vmlinux 0xdabe4707 irq_domain_remove +EXPORT_SYMBOL_GPL vmlinux 0xdabefb0a __online_page_set_limits +EXPORT_SYMBOL_GPL vmlinux 0xdad09ddd of_get_nand_ecc_strength +EXPORT_SYMBOL_GPL vmlinux 0xdad1de2c inet_csk_compat_setsockopt +EXPORT_SYMBOL_GPL vmlinux 0xdae10d8f crypto_unregister_instance +EXPORT_SYMBOL_GPL vmlinux 0xdae715e0 videomode_from_timing +EXPORT_SYMBOL_GPL vmlinux 0xdaed3073 timerqueue_del +EXPORT_SYMBOL_GPL vmlinux 0xdaf27017 blkdev_read_iter +EXPORT_SYMBOL_GPL vmlinux 0xdaf4dfb3 fb_mode_option +EXPORT_SYMBOL_GPL vmlinux 0xdb0ac13b ps3_compare_firmware_version +EXPORT_SYMBOL_GPL vmlinux 0xdb22aecc tcp_death_row +EXPORT_SYMBOL_GPL vmlinux 0xdb404f91 blkio_cgrp_subsys +EXPORT_SYMBOL_GPL vmlinux 0xdb5b078f usb_hcd_amd_remote_wakeup_quirk +EXPORT_SYMBOL_GPL vmlinux 0xdb636166 _submit_bh +EXPORT_SYMBOL_GPL vmlinux 0xdb8a1b3f usermodehelper_read_trylock +EXPORT_SYMBOL_GPL vmlinux 0xdb92c93d ping_init_sock +EXPORT_SYMBOL_GPL vmlinux 0xdb9c5876 xfrm_audit_state_icvfail +EXPORT_SYMBOL_GPL vmlinux 0xdbadc414 tps80031_ext_power_req_config +EXPORT_SYMBOL_GPL vmlinux 0xdbb698b7 find_extend_vma +EXPORT_SYMBOL_GPL vmlinux 0xdbba6e04 pmac_low_i2c_unlock +EXPORT_SYMBOL_GPL vmlinux 0xdbc0f3dd usb_hcd_link_urb_to_ep +EXPORT_SYMBOL_GPL vmlinux 0xdbccb21c wm8350_reg_read +EXPORT_SYMBOL_GPL vmlinux 0xdbcd2ad7 dev_pm_qos_hide_flags +EXPORT_SYMBOL_GPL vmlinux 0xdbd464be regmap_field_free +EXPORT_SYMBOL_GPL vmlinux 0xdbd821d4 anon_transport_class_register +EXPORT_SYMBOL_GPL vmlinux 0xdbf7cb70 mpi_get_nbits +EXPORT_SYMBOL_GPL vmlinux 0xdbf8466f usb_hcd_resume_root_hub +EXPORT_SYMBOL_GPL vmlinux 0xdc04a6e7 gpiod_get_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0xdc1c379d __list_lru_init +EXPORT_SYMBOL_GPL vmlinux 0xdc3f8f61 dma_buf_fd +EXPORT_SYMBOL_GPL vmlinux 0xdc4b02ca dma_buf_map_attachment +EXPORT_SYMBOL_GPL vmlinux 0xdc5da16a alloc_page_buffers +EXPORT_SYMBOL_GPL vmlinux 0xdc607381 trace_call_bpf +EXPORT_SYMBOL_GPL vmlinux 0xdc75b43f blk_add_request_payload +EXPORT_SYMBOL_GPL vmlinux 0xdc77eafd task_user_regset_view +EXPORT_SYMBOL_GPL vmlinux 0xdc825d6c usb_amd_quirk_pll_disable +EXPORT_SYMBOL_GPL vmlinux 0xdc8d5948 usb_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0xdc9073a2 pwm_set_chip_data +EXPORT_SYMBOL_GPL vmlinux 0xdc937864 spu_switch_event_register +EXPORT_SYMBOL_GPL vmlinux 0xdc97af2e syscore_suspend +EXPORT_SYMBOL_GPL vmlinux 0xdc9cbc6c pm_generic_restore_early +EXPORT_SYMBOL_GPL vmlinux 0xdc9fa232 raw_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0xdca406ad dax_clear_blocks +EXPORT_SYMBOL_GPL vmlinux 0xdcaca738 ohci_restart +EXPORT_SYMBOL_GPL vmlinux 0xdcc03ee3 pci_probe_reset_slot +EXPORT_SYMBOL_GPL vmlinux 0xdcc27cb8 usb_get_dev +EXPORT_SYMBOL_GPL vmlinux 0xdcce4bbd inet6_csk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0xdcd5b7f9 iommu_del_device +EXPORT_SYMBOL_GPL vmlinux 0xdcf37f2a vfs_lock_file +EXPORT_SYMBOL_GPL vmlinux 0xdd043eea ps3av_get_auto_mode +EXPORT_SYMBOL_GPL vmlinux 0xdd17ffec trace_clock +EXPORT_SYMBOL_GPL vmlinux 0xdd2db067 mnt_clone_write +EXPORT_SYMBOL_GPL vmlinux 0xdd2efc0f ring_buffer_reset_cpu +EXPORT_SYMBOL_GPL vmlinux 0xdd391eff profile_event_unregister +EXPORT_SYMBOL_GPL vmlinux 0xdd3f3cfc sdio_release_irq +EXPORT_SYMBOL_GPL vmlinux 0xdd572013 device_property_read_u64_array +EXPORT_SYMBOL_GPL vmlinux 0xdd57e2b5 percpu_ref_exit +EXPORT_SYMBOL_GPL vmlinux 0xdd5d7506 kill_pid_info_as_cred +EXPORT_SYMBOL_GPL vmlinux 0xdd66f642 tpm2_shutdown +EXPORT_SYMBOL_GPL vmlinux 0xdd729424 usb_anchor_empty +EXPORT_SYMBOL_GPL vmlinux 0xdd845e33 raw_seq_next +EXPORT_SYMBOL_GPL vmlinux 0xdda90109 xhci_dbg_trace +EXPORT_SYMBOL_GPL vmlinux 0xddb734a4 mmc_app_cmd +EXPORT_SYMBOL_GPL vmlinux 0xddb73c4c usb_sg_init +EXPORT_SYMBOL_GPL vmlinux 0xddbeeecc pci_lock_rescan_remove +EXPORT_SYMBOL_GPL vmlinux 0xddd58dc0 ring_buffer_reset +EXPORT_SYMBOL_GPL vmlinux 0xde0471e6 pci_set_cacheline_size +EXPORT_SYMBOL_GPL vmlinux 0xde25b90b devm_phy_destroy +EXPORT_SYMBOL_GPL vmlinux 0xde287721 crypto_init_shash_spawn +EXPORT_SYMBOL_GPL vmlinux 0xde32c6e0 ata_cable_sata +EXPORT_SYMBOL_GPL vmlinux 0xde3f10e4 fuse_conn_get +EXPORT_SYMBOL_GPL vmlinux 0xde45edd4 sysfs_remove_link_from_group +EXPORT_SYMBOL_GPL vmlinux 0xde9b17ca fat_setattr +EXPORT_SYMBOL_GPL vmlinux 0xdeab7270 clockevents_config_and_register +EXPORT_SYMBOL_GPL vmlinux 0xdef6fbda dev_pm_set_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0xdf02d7d6 pciserial_init_ports +EXPORT_SYMBOL_GPL vmlinux 0xdf0bcfaf virtqueue_kick_prepare +EXPORT_SYMBOL_GPL vmlinux 0xdf0e1b1c ahash_attr_alg +EXPORT_SYMBOL_GPL vmlinux 0xdf0f75c6 eventfd_signal +EXPORT_SYMBOL_GPL vmlinux 0xdf352c09 perf_event_release_kernel +EXPORT_SYMBOL_GPL vmlinux 0xdf4ed431 nl_table +EXPORT_SYMBOL_GPL vmlinux 0xdf7bda9a transport_remove_device +EXPORT_SYMBOL_GPL vmlinux 0xdf80476d trace_seq_putmem +EXPORT_SYMBOL_GPL vmlinux 0xdf84f982 trace_seq_path +EXPORT_SYMBOL_GPL vmlinux 0xdf87c9c7 rio_request_mport_dma +EXPORT_SYMBOL_GPL vmlinux 0xdf8c3f6f regmap_get_val_endian +EXPORT_SYMBOL_GPL vmlinux 0xdf93ca40 input_class +EXPORT_SYMBOL_GPL vmlinux 0xdf94c080 da9052_enable_irq +EXPORT_SYMBOL_GPL vmlinux 0xdfd4aa98 usb_put_intf +EXPORT_SYMBOL_GPL vmlinux 0xdfd71caf crypto_drop_spawn +EXPORT_SYMBOL_GPL vmlinux 0xdfdf9c10 __tracepoint_unmap +EXPORT_SYMBOL_GPL vmlinux 0xe007de41 kallsyms_lookup_name +EXPORT_SYMBOL_GPL vmlinux 0xe00f0d20 crypto_alloc_ahash +EXPORT_SYMBOL_GPL vmlinux 0xe011f817 ps3flash_bounce_buffer +EXPORT_SYMBOL_GPL vmlinux 0xe0276ece fat_build_inode +EXPORT_SYMBOL_GPL vmlinux 0xe02e2e7a __devm_of_phy_provider_register +EXPORT_SYMBOL_GPL vmlinux 0xe02eb6d0 ring_buffer_commit_overrun_cpu +EXPORT_SYMBOL_GPL vmlinux 0xe036b3e9 mpic_msgr_put +EXPORT_SYMBOL_GPL vmlinux 0xe089cfcc agp_memory_reserved +EXPORT_SYMBOL_GPL vmlinux 0xe09eb8f3 regcache_cache_bypass +EXPORT_SYMBOL_GPL vmlinux 0xe105576a device_add +EXPORT_SYMBOL_GPL vmlinux 0xe1157a39 fat_fill_super +EXPORT_SYMBOL_GPL vmlinux 0xe1165f8d pmf_put_function +EXPORT_SYMBOL_GPL vmlinux 0xe12c2518 sata_std_hardreset +EXPORT_SYMBOL_GPL vmlinux 0xe12d14f6 register_kretprobes +EXPORT_SYMBOL_GPL vmlinux 0xe13e9461 ata_ehi_push_desc +EXPORT_SYMBOL_GPL vmlinux 0xe1688f2e put_pid +EXPORT_SYMBOL_GPL vmlinux 0xe1775ee7 dm_get_reserved_bio_based_ios +EXPORT_SYMBOL_GPL vmlinux 0xe179fc1d blkg_prfill_stat +EXPORT_SYMBOL_GPL vmlinux 0xe198755a cpufreq_governor_dbs +EXPORT_SYMBOL_GPL vmlinux 0xe19fc092 ps3fb_videomemory +EXPORT_SYMBOL_GPL vmlinux 0xe1b8d236 phy_optional_get +EXPORT_SYMBOL_GPL vmlinux 0xe1bd6c99 rio_init_mports +EXPORT_SYMBOL_GPL vmlinux 0xe1d06438 dev_attr_em_message +EXPORT_SYMBOL_GPL vmlinux 0xe1f1778a dax_zero_page_range +EXPORT_SYMBOL_GPL vmlinux 0xe203d5ce tty_buffer_space_avail +EXPORT_SYMBOL_GPL vmlinux 0xe2196073 __inet_hash_nolisten +EXPORT_SYMBOL_GPL vmlinux 0xe225c382 of_thermal_get_trip_points +EXPORT_SYMBOL_GPL vmlinux 0xe23866e7 sk_clear_memalloc +EXPORT_SYMBOL_GPL vmlinux 0xe27a6633 regulator_bulk_enable +EXPORT_SYMBOL_GPL vmlinux 0xe28a1d1a sdhci_pci_spt_drive_strength +EXPORT_SYMBOL_GPL vmlinux 0xe2bf06ad ps3_gpu_mutex +EXPORT_SYMBOL_GPL vmlinux 0xe2ee68a6 unregister_trace_event +EXPORT_SYMBOL_GPL vmlinux 0xe2fc4a2f regulator_can_change_voltage +EXPORT_SYMBOL_GPL vmlinux 0xe3043ff9 request_any_context_irq +EXPORT_SYMBOL_GPL vmlinux 0xe31e27a8 rt_mutex_unlock +EXPORT_SYMBOL_GPL vmlinux 0xe3278515 regulator_count_voltages +EXPORT_SYMBOL_GPL vmlinux 0xe3283faa da903x_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0xe32fb230 alarm_expires_remaining +EXPORT_SYMBOL_GPL vmlinux 0xe33ff1eb sysfs_merge_group +EXPORT_SYMBOL_GPL vmlinux 0xe3442cbd pm_runtime_irq_safe +EXPORT_SYMBOL_GPL vmlinux 0xe357e69f pci_enable_ats +EXPORT_SYMBOL_GPL vmlinux 0xe382348c attribute_container_register +EXPORT_SYMBOL_GPL vmlinux 0xe384a102 usb_speed_string +EXPORT_SYMBOL_GPL vmlinux 0xe3c1cd68 irq_of_parse_and_map +EXPORT_SYMBOL_GPL vmlinux 0xe3ca5cfb ata_sas_sync_probe +EXPORT_SYMBOL_GPL vmlinux 0xe3cf7928 devm_phy_optional_get +EXPORT_SYMBOL_GPL vmlinux 0xe3d7750e btree_visitor +EXPORT_SYMBOL_GPL vmlinux 0xe3d8d82c pmf_do_functions +EXPORT_SYMBOL_GPL vmlinux 0xe3d908d4 register_net_sysctl +EXPORT_SYMBOL_GPL vmlinux 0xe3deb49e __sock_recv_wifi_status +EXPORT_SYMBOL_GPL vmlinux 0xe3df1a9f stmpe_reg_read +EXPORT_SYMBOL_GPL vmlinux 0xe3e9987d crypto_default_rng +EXPORT_SYMBOL_GPL vmlinux 0xe3fb56de bus_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xe429ad3d page_mkclean +EXPORT_SYMBOL_GPL vmlinux 0xe42d3304 usb_get_descriptor +EXPORT_SYMBOL_GPL vmlinux 0xe4309905 syscore_resume +EXPORT_SYMBOL_GPL vmlinux 0xe431cf9e kobject_get_path +EXPORT_SYMBOL_GPL vmlinux 0xe4329ad6 irq_set_affinity_notifier +EXPORT_SYMBOL_GPL vmlinux 0xe434ae3a ata_sff_dev_classify +EXPORT_SYMBOL_GPL vmlinux 0xe435674a ata_sas_port_suspend +EXPORT_SYMBOL_GPL vmlinux 0xe44935fe flush_kthread_worker +EXPORT_SYMBOL_GPL vmlinux 0xe4689576 ktime_get_with_offset +EXPORT_SYMBOL_GPL vmlinux 0xe477bda8 usb_enable_lpm +EXPORT_SYMBOL_GPL vmlinux 0xe47f66a7 fat_flush_inodes +EXPORT_SYMBOL_GPL vmlinux 0xe4844291 queue_kthread_work +EXPORT_SYMBOL_GPL vmlinux 0xe4881f42 pm_generic_restore +EXPORT_SYMBOL_GPL vmlinux 0xe4971ade tracing_alloc_snapshot +EXPORT_SYMBOL_GPL vmlinux 0xe4c031f8 btree_merge +EXPORT_SYMBOL_GPL vmlinux 0xe4c5d0a9 sysfs_remove_bin_file +EXPORT_SYMBOL_GPL vmlinux 0xe51c040f register_kprobe +EXPORT_SYMBOL_GPL vmlinux 0xe51d975b aead_register_instance +EXPORT_SYMBOL_GPL vmlinux 0xe521b3ac proc_get_parent_data +EXPORT_SYMBOL_GPL vmlinux 0xe543de07 regmap_multi_reg_write_bypassed +EXPORT_SYMBOL_GPL vmlinux 0xe5540302 enable_kprobe +EXPORT_SYMBOL_GPL vmlinux 0xe57239be pci_hp_change_slot_info +EXPORT_SYMBOL_GPL vmlinux 0xe5883bd9 class_compat_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe58a41cc ata_sff_busy_sleep +EXPORT_SYMBOL_GPL vmlinux 0xe58d142a crypto_enqueue_request +EXPORT_SYMBOL_GPL vmlinux 0xe58fb452 aer_irq +EXPORT_SYMBOL_GPL vmlinux 0xe59e05cf blkcipher_walk_phys +EXPORT_SYMBOL_GPL vmlinux 0xe5ed7290 wm8350_block_read +EXPORT_SYMBOL_GPL vmlinux 0xe6013e1d usb_create_hcd +EXPORT_SYMBOL_GPL vmlinux 0xe60b0946 ata_scsi_change_queue_depth +EXPORT_SYMBOL_GPL vmlinux 0xe616ea27 sk_detach_filter +EXPORT_SYMBOL_GPL vmlinux 0xe61c90e5 __mmu_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0xe61e3820 pci_max_pasids +EXPORT_SYMBOL_GPL vmlinux 0xe625c4d1 xfrm_output_resume +EXPORT_SYMBOL_GPL vmlinux 0xe62c4c12 class_interface_register +EXPORT_SYMBOL_GPL vmlinux 0xe651f76e selinux_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0xe671f33c pmac_i2c_get_channel +EXPORT_SYMBOL_GPL vmlinux 0xe67bd63d of_fdt_unflatten_tree +EXPORT_SYMBOL_GPL vmlinux 0xe69518c0 regmap_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0xe6a00123 __fib_lookup +EXPORT_SYMBOL_GPL vmlinux 0xe6c68334 ddebug_remove_module +EXPORT_SYMBOL_GPL vmlinux 0xe6d2a3bc gpiochip_remove +EXPORT_SYMBOL_GPL vmlinux 0xe6de736b ata_bmdma_port_ops +EXPORT_SYMBOL_GPL vmlinux 0xe6e1c5fe uuid_be_gen +EXPORT_SYMBOL_GPL vmlinux 0xe6ef4abf dm_internal_resume_fast +EXPORT_SYMBOL_GPL vmlinux 0xe6f01310 dev_pm_qos_add_request +EXPORT_SYMBOL_GPL vmlinux 0xe6f55b53 yield_to +EXPORT_SYMBOL_GPL vmlinux 0xe711df83 regulator_register +EXPORT_SYMBOL_GPL vmlinux 0xe769232e sprint_symbol_no_offset +EXPORT_SYMBOL_GPL vmlinux 0xe7923970 thermal_notify_framework +EXPORT_SYMBOL_GPL vmlinux 0xe7969823 i2c_add_numbered_adapter +EXPORT_SYMBOL_GPL vmlinux 0xe7bd4f45 regulator_get_voltage_sel_regmap +EXPORT_SYMBOL_GPL vmlinux 0xe7c530a8 platform_get_irq +EXPORT_SYMBOL_GPL vmlinux 0xe7d2b0e0 sock_diag_check_cookie +EXPORT_SYMBOL_GPL vmlinux 0xe7f18b3c threads_per_subcore +EXPORT_SYMBOL_GPL vmlinux 0xe7ffe877 pcpu_base_addr +EXPORT_SYMBOL_GPL vmlinux 0xe818107a rio_release_inb_pwrite +EXPORT_SYMBOL_GPL vmlinux 0xe818b32b ata_bmdma_interrupt +EXPORT_SYMBOL_GPL vmlinux 0xe82719d0 kthread_park +EXPORT_SYMBOL_GPL vmlinux 0xe839edd4 cpuidle_register +EXPORT_SYMBOL_GPL vmlinux 0xe84f6e5c pciserial_remove_ports +EXPORT_SYMBOL_GPL vmlinux 0xe855c676 posix_clock_register +EXPORT_SYMBOL_GPL vmlinux 0xe85c55e7 btree_destroy +EXPORT_SYMBOL_GPL vmlinux 0xe862c4b7 dpm_suspend_start +EXPORT_SYMBOL_GPL vmlinux 0xe86858ea mbox_client_peek_data +EXPORT_SYMBOL_GPL vmlinux 0xe89bd243 ata_sff_queue_work +EXPORT_SYMBOL_GPL vmlinux 0xe8a6bcdb devm_regulator_bulk_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0xe9117c8f tc3589x_reg_read +EXPORT_SYMBOL_GPL vmlinux 0xe923187d debugfs_create_atomic_t +EXPORT_SYMBOL_GPL vmlinux 0xe93e49c3 devres_free +EXPORT_SYMBOL_GPL vmlinux 0xe94274f8 tty_ldisc_deref +EXPORT_SYMBOL_GPL vmlinux 0xe9506579 iommu_tce_direction +EXPORT_SYMBOL_GPL vmlinux 0xe959b36a __mmu_notifier_invalidate_range_start +EXPORT_SYMBOL_GPL vmlinux 0xe96498c1 bio_clone_mddev +EXPORT_SYMBOL_GPL vmlinux 0xe97853f4 tc3589x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xe98006eb trace_seq_bprintf +EXPORT_SYMBOL_GPL vmlinux 0xe980e8cc ohci_suspend +EXPORT_SYMBOL_GPL vmlinux 0xe9922f8b spi_register_master +EXPORT_SYMBOL_GPL vmlinux 0xe9a496d4 vfs_truncate +EXPORT_SYMBOL_GPL vmlinux 0xe9ae6a13 inet6_csk_reqsk_queue_hash_add +EXPORT_SYMBOL_GPL vmlinux 0xe9c4b0ca xhci_gen_setup +EXPORT_SYMBOL_GPL vmlinux 0xe9d1b476 wm831x_device_shutdown +EXPORT_SYMBOL_GPL vmlinux 0xe9d1b7cf irq_to_pcap +EXPORT_SYMBOL_GPL vmlinux 0xe9d41919 mddev_unlock +EXPORT_SYMBOL_GPL vmlinux 0xe9dcb02e hwrng_register +EXPORT_SYMBOL_GPL vmlinux 0xe9e5f014 dm_set_target_max_io_len +EXPORT_SYMBOL_GPL vmlinux 0xe9ef237a dev_pm_qos_expose_latency_limit +EXPORT_SYMBOL_GPL vmlinux 0xe9f90306 regulator_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0xea06e8c9 __class_register +EXPORT_SYMBOL_GPL vmlinux 0xea11104f usb_unanchor_urb +EXPORT_SYMBOL_GPL vmlinux 0xea124bd1 gcd +EXPORT_SYMBOL_GPL vmlinux 0xea1bc252 extcon_set_state +EXPORT_SYMBOL_GPL vmlinux 0xea1efde5 ata_slave_link_init +EXPORT_SYMBOL_GPL vmlinux 0xea226a8c fb_deferred_io_cleanup +EXPORT_SYMBOL_GPL vmlinux 0xea3938f2 pci_disable_sriov +EXPORT_SYMBOL_GPL vmlinux 0xea418e0f atapi_cmd_type +EXPORT_SYMBOL_GPL vmlinux 0xea47ae3f thermal_of_cooling_device_register +EXPORT_SYMBOL_GPL vmlinux 0xea628c20 bstr_printf +EXPORT_SYMBOL_GPL vmlinux 0xea6aa5af raw_hash_sk +EXPORT_SYMBOL_GPL vmlinux 0xea9360d3 da9052_adc_read_temp +EXPORT_SYMBOL_GPL vmlinux 0xea9ca203 pci_ioremap_bar +EXPORT_SYMBOL_GPL vmlinux 0xea9fb7e1 stmpe_disable +EXPORT_SYMBOL_GPL vmlinux 0xeaa354c1 pci_user_write_config_word +EXPORT_SYMBOL_GPL vmlinux 0xeab5ea27 gpiod_to_irq +EXPORT_SYMBOL_GPL vmlinux 0xeacca9b8 ata_sff_qc_issue +EXPORT_SYMBOL_GPL vmlinux 0xeaf26c49 usb_anchor_urb +EXPORT_SYMBOL_GPL vmlinux 0xeb0f23da regmap_raw_write_async +EXPORT_SYMBOL_GPL vmlinux 0xeb235827 i2c_generic_scl_recovery +EXPORT_SYMBOL_GPL vmlinux 0xeb2a4098 bpf_prog_put +EXPORT_SYMBOL_GPL vmlinux 0xeb2ec38a inet6_lookup +EXPORT_SYMBOL_GPL vmlinux 0xeb4878d6 pmf_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0xeb510cc3 tty_ldisc_ref +EXPORT_SYMBOL_GPL vmlinux 0xeb708f28 device_property_read_string +EXPORT_SYMBOL_GPL vmlinux 0xeb7d183e jump_label_rate_limit +EXPORT_SYMBOL_GPL vmlinux 0xeb80e4b0 regmap_multi_reg_write +EXPORT_SYMBOL_GPL vmlinux 0xeb8ae736 klist_init +EXPORT_SYMBOL_GPL vmlinux 0xeba194c4 __pci_complete_power_transition +EXPORT_SYMBOL_GPL vmlinux 0xebacc984 input_ff_upload +EXPORT_SYMBOL_GPL vmlinux 0xebdb78dc iommu_domain_free +EXPORT_SYMBOL_GPL vmlinux 0xebec57c4 ring_buffer_oldest_event_ts +EXPORT_SYMBOL_GPL vmlinux 0xec136e39 vfs_setlease +EXPORT_SYMBOL_GPL vmlinux 0xec1b043e regulator_suspend_prepare +EXPORT_SYMBOL_GPL vmlinux 0xec25f967 klist_del +EXPORT_SYMBOL_GPL vmlinux 0xec44eeb4 net_ns_type_operations +EXPORT_SYMBOL_GPL vmlinux 0xec631f34 remove_memory +EXPORT_SYMBOL_GPL vmlinux 0xec6598cf crypto_attr_alg2 +EXPORT_SYMBOL_GPL vmlinux 0xec85ff7a udp4_hwcsum +EXPORT_SYMBOL_GPL vmlinux 0xec96d824 pcie_update_link_speed +EXPORT_SYMBOL_GPL vmlinux 0xecb2a3ec class_for_each_device +EXPORT_SYMBOL_GPL vmlinux 0xecd091d3 extcon_unregister_interest +EXPORT_SYMBOL_GPL vmlinux 0xecd8a481 dev_coredumpv +EXPORT_SYMBOL_GPL vmlinux 0xecd9e37e phy_remove_lookup +EXPORT_SYMBOL_GPL vmlinux 0xecdd17f5 usb_gen_phy_init +EXPORT_SYMBOL_GPL vmlinux 0xecf10b8a wm831x_auxadc_read_uv +EXPORT_SYMBOL_GPL vmlinux 0xed17b153 skb_complete_wifi_ack +EXPORT_SYMBOL_GPL vmlinux 0xed1e7a0f phy_get +EXPORT_SYMBOL_GPL vmlinux 0xed2cff73 ata_cable_40wire +EXPORT_SYMBOL_GPL vmlinux 0xed3183f7 pmac_i2c_find_bus +EXPORT_SYMBOL_GPL vmlinux 0xed81f82a __fsnotify_inode_delete +EXPORT_SYMBOL_GPL vmlinux 0xed83001e __pm_relax +EXPORT_SYMBOL_GPL vmlinux 0xed858345 arizona_set_irq_wake +EXPORT_SYMBOL_GPL vmlinux 0xed909647 usb_ep0_reinit +EXPORT_SYMBOL_GPL vmlinux 0xedb65fe1 ata_host_start +EXPORT_SYMBOL_GPL vmlinux 0xedc37e3f device_store_ulong +EXPORT_SYMBOL_GPL vmlinux 0xedcd95ea bpf_prog_realloc +EXPORT_SYMBOL_GPL vmlinux 0xeded9d94 tpm_chip_register +EXPORT_SYMBOL_GPL vmlinux 0xedef86cc usb_phy_set_event +EXPORT_SYMBOL_GPL vmlinux 0xedf04b43 trace_event_buffer_lock_reserve +EXPORT_SYMBOL_GPL vmlinux 0xee19d140 dev_pm_qos_update_request +EXPORT_SYMBOL_GPL vmlinux 0xee1d5ec0 thermal_cooling_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xee209a0e devm_usb_get_phy_by_node +EXPORT_SYMBOL_GPL vmlinux 0xee26b17a tc3589x_reg_write +EXPORT_SYMBOL_GPL vmlinux 0xee35d060 disk_part_iter_init +EXPORT_SYMBOL_GPL vmlinux 0xee379d7c __blk_run_queue_uncond +EXPORT_SYMBOL_GPL vmlinux 0xee68a2bb of_get_videomode +EXPORT_SYMBOL_GPL vmlinux 0xee6b71c4 syscon_regmap_lookup_by_compatible +EXPORT_SYMBOL_GPL vmlinux 0xee7cb868 irq_alloc_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0xee7e7d52 crypto_dequeue_request +EXPORT_SYMBOL_GPL vmlinux 0xee891cc0 srp_tmo_valid +EXPORT_SYMBOL_GPL vmlinux 0xee90ae0d crypto_unregister_aeads +EXPORT_SYMBOL_GPL vmlinux 0xee9dae50 find_vpid +EXPORT_SYMBOL_GPL vmlinux 0xeeb15bbd get_kernel_pages +EXPORT_SYMBOL_GPL vmlinux 0xeec0c7de fat_free_clusters +EXPORT_SYMBOL_GPL vmlinux 0xeec7aaa2 xfrm_local_error +EXPORT_SYMBOL_GPL vmlinux 0xef4dc5a8 map_vm_area +EXPORT_SYMBOL_GPL vmlinux 0xef5b96b6 i2c_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0xef6c3f70 round_jiffies_up_relative +EXPORT_SYMBOL_GPL vmlinux 0xef6d007a sigset_from_compat +EXPORT_SYMBOL_GPL vmlinux 0xef71a83d ehci_resume +EXPORT_SYMBOL_GPL vmlinux 0xef777ee0 mnt_want_write_file +EXPORT_SYMBOL_GPL vmlinux 0xef7d32e2 dev_pm_qos_flags +EXPORT_SYMBOL_GPL vmlinux 0xef7f730b fixed_phy_set_link_update +EXPORT_SYMBOL_GPL vmlinux 0xef8c7850 pcap_adc_async +EXPORT_SYMBOL_GPL vmlinux 0xefa2c27d register_tracepoint_module_notifier +EXPORT_SYMBOL_GPL vmlinux 0xefb9b219 eeh_pe_reset +EXPORT_SYMBOL_GPL vmlinux 0xefd1bdc5 serial8250_clear_and_reinit_fifos +EXPORT_SYMBOL_GPL vmlinux 0xefdf15ec copro_flush_all_slbs +EXPORT_SYMBOL_GPL vmlinux 0xeff3c550 tc3589x_block_read +EXPORT_SYMBOL_GPL vmlinux 0xeffa6b8f __tracepoint_cpu_idle +EXPORT_SYMBOL_GPL vmlinux 0xf0004ce3 pm_runtime_set_autosuspend_delay +EXPORT_SYMBOL_GPL vmlinux 0xf03c072f __ftrace_vbprintk +EXPORT_SYMBOL_GPL vmlinux 0xf04b0fdb regcache_cache_only +EXPORT_SYMBOL_GPL vmlinux 0xf04b1f9a regmap_fields_write +EXPORT_SYMBOL_GPL vmlinux 0xf0727f12 ktime_get_raw_fast_ns +EXPORT_SYMBOL_GPL vmlinux 0xf098dd15 cpu_bit_bitmap +EXPORT_SYMBOL_GPL vmlinux 0xf0ab7ad8 sysfs_add_device_to_node +EXPORT_SYMBOL_GPL vmlinux 0xf0ac35ea regulator_disable_deferred +EXPORT_SYMBOL_GPL vmlinux 0xf0c71757 usb_altnum_to_altsetting +EXPORT_SYMBOL_GPL vmlinux 0xf0f5dbc2 timerqueue_iterate_next +EXPORT_SYMBOL_GPL vmlinux 0xf0facf64 security_inode_mkdir +EXPORT_SYMBOL_GPL vmlinux 0xf1005c53 of_pci_parse_bus_range +EXPORT_SYMBOL_GPL vmlinux 0xf11ab631 ip6_datagram_recv_ctl +EXPORT_SYMBOL_GPL vmlinux 0xf11dffe9 ehci_suspend +EXPORT_SYMBOL_GPL vmlinux 0xf143c4e8 fb_sys_write +EXPORT_SYMBOL_GPL vmlinux 0xf15483fb get_net_ns_by_fd +EXPORT_SYMBOL_GPL vmlinux 0xf158f170 klist_add_tail +EXPORT_SYMBOL_GPL vmlinux 0xf184d189 kernel_power_off +EXPORT_SYMBOL_GPL vmlinux 0xf18b728c ata_scsi_unlock_native_capacity +EXPORT_SYMBOL_GPL vmlinux 0xf19476fe debugfs_create_x64 +EXPORT_SYMBOL_GPL vmlinux 0xf1a1832f component_master_del +EXPORT_SYMBOL_GPL vmlinux 0xf1a62b6f of_i8042_kbd_irq +EXPORT_SYMBOL_GPL vmlinux 0xf1b31314 delayacct_on +EXPORT_SYMBOL_GPL vmlinux 0xf1f49af4 ata_sff_thaw +EXPORT_SYMBOL_GPL vmlinux 0xf1fb8976 eeh_pe_configure +EXPORT_SYMBOL_GPL vmlinux 0xf1fde4dd hwrng_unregister +EXPORT_SYMBOL_GPL vmlinux 0xf20df5f7 pci_user_read_config_word +EXPORT_SYMBOL_GPL vmlinux 0xf21e1f9b disable_percpu_irq +EXPORT_SYMBOL_GPL vmlinux 0xf25c4c67 serial8250_rpm_put +EXPORT_SYMBOL_GPL vmlinux 0xf26085c3 nd_region_provider_data +EXPORT_SYMBOL_GPL vmlinux 0xf262b171 phy_exit +EXPORT_SYMBOL_GPL vmlinux 0xf26afbad pmac_i2c_adapter_to_bus +EXPORT_SYMBOL_GPL vmlinux 0xf27977e2 async_synchronize_cookie_domain +EXPORT_SYMBOL_GPL vmlinux 0xf2963eb7 of_property_read_u64_array +EXPORT_SYMBOL_GPL vmlinux 0xf2b169b1 virtqueue_add_sgs +EXPORT_SYMBOL_GPL vmlinux 0xf2dd6c80 platform_device_register_full +EXPORT_SYMBOL_GPL vmlinux 0xf2e70b8f skb_copy_ubufs +EXPORT_SYMBOL_GPL vmlinux 0xf2f077cc pkey_id_type_name +EXPORT_SYMBOL_GPL vmlinux 0xf2fca922 uart_parse_options +EXPORT_SYMBOL_GPL vmlinux 0xf30e105d ezx_pcap_write +EXPORT_SYMBOL_GPL vmlinux 0xf31b3fd1 workqueue_set_max_active +EXPORT_SYMBOL_GPL vmlinux 0xf331236f btree_geo32 +EXPORT_SYMBOL_GPL vmlinux 0xf3582f06 blkg_prfill_rwstat +EXPORT_SYMBOL_GPL vmlinux 0xf35d9b65 of_get_nand_ecc_step_size +EXPORT_SYMBOL_GPL vmlinux 0xf36e2d36 virtqueue_enable_cb +EXPORT_SYMBOL_GPL vmlinux 0xf3808cb1 get_state_synchronize_rcu +EXPORT_SYMBOL_GPL vmlinux 0xf38a4164 rio_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0xf38e5c94 of_property_match_string +EXPORT_SYMBOL_GPL vmlinux 0xf39b8b27 ohci_hub_status_data +EXPORT_SYMBOL_GPL vmlinux 0xf3a9c991 spi_master_suspend +EXPORT_SYMBOL_GPL vmlinux 0xf3b451ca kdb_poll_funcs +EXPORT_SYMBOL_GPL vmlinux 0xf3bcc9ea dm_internal_suspend_fast +EXPORT_SYMBOL_GPL vmlinux 0xf3dd6e54 device_reset +EXPORT_SYMBOL_GPL vmlinux 0xf3eb47be preempt_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0xf3edf2ec extcon_set_cable_state_ +EXPORT_SYMBOL_GPL vmlinux 0xf3f18238 ktime_get_resolution_ns +EXPORT_SYMBOL_GPL vmlinux 0xf3f9a5a4 i2c_lock_adapter +EXPORT_SYMBOL_GPL vmlinux 0xf4594703 cpufreq_show_cpus +EXPORT_SYMBOL_GPL vmlinux 0xf45fa543 wakeup_source_remove +EXPORT_SYMBOL_GPL vmlinux 0xf465459e of_usb_get_maximum_speed +EXPORT_SYMBOL_GPL vmlinux 0xf469c705 ps3_io_irq_destroy +EXPORT_SYMBOL_GPL vmlinux 0xf47f82a1 page_cache_sync_readahead +EXPORT_SYMBOL_GPL vmlinux 0xf494f618 mmc_regulator_get_ocrmask +EXPORT_SYMBOL_GPL vmlinux 0xf499fdb2 rcu_barrier_bh +EXPORT_SYMBOL_GPL vmlinux 0xf4af0d87 sdio_writesb +EXPORT_SYMBOL_GPL vmlinux 0xf4bcc1bc of_irq_get +EXPORT_SYMBOL_GPL vmlinux 0xf4fc2d6c __ring_buffer_alloc +EXPORT_SYMBOL_GPL vmlinux 0xf504b627 __mmu_notifier_invalidate_range +EXPORT_SYMBOL_GPL vmlinux 0xf51bf080 regmap_init_i2c +EXPORT_SYMBOL_GPL vmlinux 0xf520cfe5 arizona_of_get_type +EXPORT_SYMBOL_GPL vmlinux 0xf54bd49b lcm +EXPORT_SYMBOL_GPL vmlinux 0xf553318d cpuidle_pause_and_lock +EXPORT_SYMBOL_GPL vmlinux 0xf56382f9 tcp_reno_cong_avoid +EXPORT_SYMBOL_GPL vmlinux 0xf577aa23 ata_wait_register +EXPORT_SYMBOL_GPL vmlinux 0xf586cf02 inet_csk_bind_conflict +EXPORT_SYMBOL_GPL vmlinux 0xf5898eae of_thermal_get_ntrips +EXPORT_SYMBOL_GPL vmlinux 0xf594a741 crypto_givcipher_type +EXPORT_SYMBOL_GPL vmlinux 0xf5a691cd invalidate_bh_lrus +EXPORT_SYMBOL_GPL vmlinux 0xf5a97c92 crypto_alloc_rng +EXPORT_SYMBOL_GPL vmlinux 0xf5bcf1b2 __cookie_v4_check +EXPORT_SYMBOL_GPL vmlinux 0xf5cd205a virtqueue_enable_cb_prepare +EXPORT_SYMBOL_GPL vmlinux 0xf5ee25d9 sysfs_rename_link_ns +EXPORT_SYMBOL_GPL vmlinux 0xf5ef28ec devfreq_event_get_event +EXPORT_SYMBOL_GPL vmlinux 0xf5fa5976 dev_pm_get_subsys_data +EXPORT_SYMBOL_GPL vmlinux 0xf5fd9ea6 pwm_get_chip_data +EXPORT_SYMBOL_GPL vmlinux 0xf60215f8 crypto_tfm_in_queue +EXPORT_SYMBOL_GPL vmlinux 0xf6513392 dma_buf_detach +EXPORT_SYMBOL_GPL vmlinux 0xf68509d5 inet6_csk_search_req +EXPORT_SYMBOL_GPL vmlinux 0xf69be731 ata_port_abort +EXPORT_SYMBOL_GPL vmlinux 0xf6bb5f1b page_cache_async_readahead +EXPORT_SYMBOL_GPL vmlinux 0xf6c7e4fa inet6_hash_connect +EXPORT_SYMBOL_GPL vmlinux 0xf6c8dc62 cpu_hotplug_enable +EXPORT_SYMBOL_GPL vmlinux 0xf6e1498d ping_seq_stop +EXPORT_SYMBOL_GPL vmlinux 0xf6e874f5 ata_timing_merge +EXPORT_SYMBOL_GPL vmlinux 0xf71e87b2 cpufreq_frequency_table_verify +EXPORT_SYMBOL_GPL vmlinux 0xf73e3625 crypto_init_spawn2 +EXPORT_SYMBOL_GPL vmlinux 0xf74cb1bd ping_common_sendmsg +EXPORT_SYMBOL_GPL vmlinux 0xf74d0f52 sysfs_unmerge_group +EXPORT_SYMBOL_GPL vmlinux 0xf750d86b get_pid_task +EXPORT_SYMBOL_GPL vmlinux 0xf756dbfa devm_phy_put +EXPORT_SYMBOL_GPL vmlinux 0xf7576576 usb_add_hcd +EXPORT_SYMBOL_GPL vmlinux 0xf7608cdf __tracepoint_io_page_fault +EXPORT_SYMBOL_GPL vmlinux 0xf796161a unregister_kretprobe +EXPORT_SYMBOL_GPL vmlinux 0xf7ac81a9 spi_setup +EXPORT_SYMBOL_GPL vmlinux 0xf7c5ecfd irq_domain_add_simple +EXPORT_SYMBOL_GPL vmlinux 0xf7df651d crypto_rng_reset +EXPORT_SYMBOL_GPL vmlinux 0xf7f931d4 raw_seq_stop +EXPORT_SYMBOL_GPL vmlinux 0xf80fa484 i2c_recover_bus +EXPORT_SYMBOL_GPL vmlinux 0xf82f3657 work_on_cpu +EXPORT_SYMBOL_GPL vmlinux 0xf837e0eb unregister_kprobes +EXPORT_SYMBOL_GPL vmlinux 0xf838043a mmc_send_tuning +EXPORT_SYMBOL_GPL vmlinux 0xf86c8043 posix_timer_event +EXPORT_SYMBOL_GPL vmlinux 0xf86d8b0a regulator_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xf8780c32 ata_bmdma_qc_issue +EXPORT_SYMBOL_GPL vmlinux 0xf8802492 print_stack_trace +EXPORT_SYMBOL_GPL vmlinux 0xf88390e2 crypto_grab_aead +EXPORT_SYMBOL_GPL vmlinux 0xf884ced9 trace_output_call +EXPORT_SYMBOL_GPL vmlinux 0xf89a6f40 dma_get_slave_caps +EXPORT_SYMBOL_GPL vmlinux 0xf8e398fc memstart_addr +EXPORT_SYMBOL_GPL vmlinux 0xf8e6b564 hibernation_set_ops +EXPORT_SYMBOL_GPL vmlinux 0xf8f3a0fb ata_ratelimit +EXPORT_SYMBOL_GPL vmlinux 0xf8fe3d0b kmsg_dump_register +EXPORT_SYMBOL_GPL vmlinux 0xf9187cf3 pmf_register_irq_client +EXPORT_SYMBOL_GPL vmlinux 0xf92ce956 kdb_printf +EXPORT_SYMBOL_GPL vmlinux 0xf932015f __raw_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xf935e07c regmap_can_raw_write +EXPORT_SYMBOL_GPL vmlinux 0xf93c3aef md_stop +EXPORT_SYMBOL_GPL vmlinux 0xf9524a9c simple_attr_write +EXPORT_SYMBOL_GPL vmlinux 0xf95322f4 kthread_parkme +EXPORT_SYMBOL_GPL vmlinux 0xf9734bf3 __blocking_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xf97bc44f fat_add_entries +EXPORT_SYMBOL_GPL vmlinux 0xf97e75af unuse_mm +EXPORT_SYMBOL_GPL vmlinux 0xf98a9e21 ip6_sk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0xf98e07bc tps6586x_read +EXPORT_SYMBOL_GPL vmlinux 0xf991c09f rcu_qs_ctr +EXPORT_SYMBOL_GPL vmlinux 0xf99a08aa ftrace_set_notrace +EXPORT_SYMBOL_GPL vmlinux 0xf9a054b5 __round_jiffies +EXPORT_SYMBOL_GPL vmlinux 0xf9a89f57 register_kretprobe +EXPORT_SYMBOL_GPL vmlinux 0xf9b131fb do_take_over_console +EXPORT_SYMBOL_GPL vmlinux 0xf9b411bd vring_transport_features +EXPORT_SYMBOL_GPL vmlinux 0xf9ca3160 ata_id_xfermask +EXPORT_SYMBOL_GPL vmlinux 0xf9d8fb80 ata_pio_need_iordy +EXPORT_SYMBOL_GPL vmlinux 0xf9f27fc8 pm_runtime_force_resume +EXPORT_SYMBOL_GPL vmlinux 0xfa1eb910 unregister_syscore_ops +EXPORT_SYMBOL_GPL vmlinux 0xfa1f4662 scatterwalk_start +EXPORT_SYMBOL_GPL vmlinux 0xfa4cb304 power_supply_set_property +EXPORT_SYMBOL_GPL vmlinux 0xfa4e37dd regmap_update_bits_check +EXPORT_SYMBOL_GPL vmlinux 0xfa6f6beb fib_rules_register +EXPORT_SYMBOL_GPL vmlinux 0xfa7dfeb0 pwm_request +EXPORT_SYMBOL_GPL vmlinux 0xfa863040 kvmppc_h_get_tce +EXPORT_SYMBOL_GPL vmlinux 0xfa901b31 compat_get_timespec +EXPORT_SYMBOL_GPL vmlinux 0xfa984b60 kernel_kobj +EXPORT_SYMBOL_GPL vmlinux 0xfa9c0574 usb_hc_died +EXPORT_SYMBOL_GPL vmlinux 0xfab60503 klist_iter_init_node +EXPORT_SYMBOL_GPL vmlinux 0xfaecd5b1 ip6_route_lookup +EXPORT_SYMBOL_GPL vmlinux 0xfb13583d page_endio +EXPORT_SYMBOL_GPL vmlinux 0xfb23c209 gpiod_set_raw_value +EXPORT_SYMBOL_GPL vmlinux 0xfb32983b mbox_request_channel_byname +EXPORT_SYMBOL_GPL vmlinux 0xfb32b30f ring_buffer_read_prepare_sync +EXPORT_SYMBOL_GPL vmlinux 0xfb3a3896 of_dma_configure +EXPORT_SYMBOL_GPL vmlinux 0xfb3a54b6 regulator_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0xfb44a7a1 opal_ipmi_recv +EXPORT_SYMBOL_GPL vmlinux 0xfb525dfc pmac_i2c_get_type +EXPORT_SYMBOL_GPL vmlinux 0xfb52b77d __wake_up_locked +EXPORT_SYMBOL_GPL vmlinux 0xfb66d59b watchdog_init_timeout +EXPORT_SYMBOL_GPL vmlinux 0xfb6de94e __fat_fs_error +EXPORT_SYMBOL_GPL vmlinux 0xfb6dfddd crypto_register_instance +EXPORT_SYMBOL_GPL vmlinux 0xfb6eedf9 power_group_name +EXPORT_SYMBOL_GPL vmlinux 0xfb9966e4 param_set_bool_enable_only +EXPORT_SYMBOL_GPL vmlinux 0xfba9b8c4 class_create_file_ns +EXPORT_SYMBOL_GPL vmlinux 0xfbbd41ca no_action +EXPORT_SYMBOL_GPL vmlinux 0xfbd3a24d opal_message_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0xfbfcdc2b ps3_sys_manager_get_wol +EXPORT_SYMBOL_GPL vmlinux 0xfc03d97a page_is_ram +EXPORT_SYMBOL_GPL vmlinux 0xfc201b66 sprint_oid +EXPORT_SYMBOL_GPL vmlinux 0xfc354e3e da9052_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0xfc3b9319 component_master_add_with_match +EXPORT_SYMBOL_GPL vmlinux 0xfc552ceb usb_get_from_anchor +EXPORT_SYMBOL_GPL vmlinux 0xfc99596a mddev_congested +EXPORT_SYMBOL_GPL vmlinux 0xfca44dd4 transport_class_unregister +EXPORT_SYMBOL_GPL vmlinux 0xfcb0196b skb_morph +EXPORT_SYMBOL_GPL vmlinux 0xfcb52e0b devm_kasprintf +EXPORT_SYMBOL_GPL vmlinux 0xfcbeed25 unregister_net_sysctl_table +EXPORT_SYMBOL_GPL vmlinux 0xfcd7bc0b ring_buffer_empty +EXPORT_SYMBOL_GPL vmlinux 0xfcffb4e1 pmac_i2c_get_flags +EXPORT_SYMBOL_GPL vmlinux 0xfd0f0335 smpboot_register_percpu_thread +EXPORT_SYMBOL_GPL vmlinux 0xfd293dee ata_bmdma_port_start32 +EXPORT_SYMBOL_GPL vmlinux 0xfd2df900 use_cop +EXPORT_SYMBOL_GPL vmlinux 0xfd32ed71 cpufreq_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0xfd35d084 ata_pci_sff_activate_host +EXPORT_SYMBOL_GPL vmlinux 0xfd53d631 power_supply_powers +EXPORT_SYMBOL_GPL vmlinux 0xfd7a50ea set_timer_slack +EXPORT_SYMBOL_GPL vmlinux 0xfd91c6e0 rtc_alarm_irq_enable +EXPORT_SYMBOL_GPL vmlinux 0xfd9522c5 get_kernel_page +EXPORT_SYMBOL_GPL vmlinux 0xfdd60964 of_reserved_mem_device_init +EXPORT_SYMBOL_GPL vmlinux 0xfddd285f mm_iommu_ua_to_hpa +EXPORT_SYMBOL_GPL vmlinux 0xfdf4e7c8 da903x_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xfdf53cf3 nf_register_afinfo +EXPORT_SYMBOL_GPL vmlinux 0xfe09994b wakeup_source_prepare +EXPORT_SYMBOL_GPL vmlinux 0xfe23caef cpufreq_freq_attr_scaling_available_freqs +EXPORT_SYMBOL_GPL vmlinux 0xfe24ec30 put_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0xfe27ff09 usb_remove_phy +EXPORT_SYMBOL_GPL vmlinux 0xfe34f290 blocking_notifier_chain_cond_register +EXPORT_SYMBOL_GPL vmlinux 0xfe42b02c unregister_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0xfe448a7b bpf_prog_select_runtime +EXPORT_SYMBOL_GPL vmlinux 0xfe52a5bc blkg_conf_prep +EXPORT_SYMBOL_GPL vmlinux 0xfe5c7b1a perf_event_disable +EXPORT_SYMBOL_GPL vmlinux 0xfe883a47 usb_phy_gen_create_phy +EXPORT_SYMBOL_GPL vmlinux 0xfe990052 gpio_free +EXPORT_SYMBOL_GPL vmlinux 0xfea14900 ip_tunnel_get_stats64 +EXPORT_SYMBOL_GPL vmlinux 0xfeb23a45 ps3_open_hv_device +EXPORT_SYMBOL_GPL vmlinux 0xfec59237 cpufreq_frequency_table_get_index +EXPORT_SYMBOL_GPL vmlinux 0xfec8e91d tcp_fetch_timewait_stamp +EXPORT_SYMBOL_GPL vmlinux 0xfecaeb90 crypto_ahash_walk_first +EXPORT_SYMBOL_GPL vmlinux 0xfed11ed1 usb_mon_deregister +EXPORT_SYMBOL_GPL vmlinux 0xfeea0749 regulator_set_voltage_time_sel +EXPORT_SYMBOL_GPL vmlinux 0xfeea1a2a ata_sff_error_handler +EXPORT_SYMBOL_GPL vmlinux 0xfeed3f29 blk_rq_err_bytes +EXPORT_SYMBOL_GPL vmlinux 0xfef8a166 trace_current_buffer_lock_reserve +EXPORT_SYMBOL_GPL vmlinux 0xfefd95f4 tty_prepare_flip_string +EXPORT_SYMBOL_GPL vmlinux 0xff05fa13 vring_interrupt +EXPORT_SYMBOL_GPL vmlinux 0xff0dacff ps3av_video_mute +EXPORT_SYMBOL_GPL vmlinux 0xff15b75e tpm_get_timeouts +EXPORT_SYMBOL_GPL vmlinux 0xff164785 __put_net +EXPORT_SYMBOL_GPL vmlinux 0xff18624e device_wakeup_disable +EXPORT_SYMBOL_GPL vmlinux 0xff2f7ec9 sysfs_notify +EXPORT_SYMBOL_GPL vmlinux 0xff398aec fl6_sock_lookup +EXPORT_SYMBOL_GPL vmlinux 0xff5a8cfe cn_del_callback +EXPORT_SYMBOL_GPL vmlinux 0xff633558 vprintk_default +EXPORT_SYMBOL_GPL vmlinux 0xff7f199a driver_unregister +EXPORT_SYMBOL_GPL vmlinux 0xff918072 stmpe_set_altfunc +EXPORT_SYMBOL_GPL vmlinux 0xff9446fb spu_set_profile_private_kref +EXPORT_SYMBOL_GPL vmlinux 0xffb1cbe7 devm_usb_get_phy +EXPORT_SYMBOL_GPL vmlinux 0xffb71578 rio_local_get_device_id +EXPORT_SYMBOL_GPL vmlinux 0xffdecb48 tps6586x_irq_get_virq +EXPORT_SYMBOL_GPL vmlinux 0xffe07244 __trace_note_message --- linux-raspi2-4.2.0.orig/debian.master/abi/4.2.0-26.31/powerpc/powerpc64-smp.compiler +++ linux-raspi2-4.2.0/debian.master/abi/4.2.0-26.31/powerpc/powerpc64-smp.compiler @@ -0,0 +1 @@ +GCC: (Ubuntu 5.2.1-22ubuntu2) 5.2.1 20151010 --- linux-raspi2-4.2.0.orig/debian.master/abi/4.2.0-26.31/powerpc/powerpc64-smp.modules +++ linux-raspi2-4.2.0/debian.master/abi/4.2.0-26.31/powerpc/powerpc64-smp.modules @@ -0,0 +1,4255 @@ +3c574_cs +3c589_cs +3c59x +3w-9xxx +3w-sas +3w-xxxx +6lowpan +6pack +8021q +8139cp +8139too +8250_dw +8255 +8255_pci +8390 +842 +842_compress +842_decompress +88pm800 +88pm805 +88pm80x +88pm80x_onkey +88pm8607 +88pm860x_battery +88pm860x_bl +88pm860x_charger +88pm860x_onkey +88pm860x-ts +9p +9pnet +9pnet_rdma +9pnet_virtio +a100u2w +a3d +a8293 +aacraid +aat2870_bl +aat2870-regulator +ab3100 +ab3100-otp +ac97_bus +acard-ahci +acecad +acenic +act200l-sir +act8865-regulator +act_bpf +act_connmark +act_csum +act_gact +act_ipt +actisys-sir +act_mirred +act_nat +act_pedit +act_police +act_simple +act_skbedit +act_vlan +ad2s1200 +ad2s1210 +ad2s90 +ad5064 +ad525x_dpot +ad525x_dpot-i2c +ad525x_dpot-spi +ad5360 +ad5380 +ad5398 +ad5421 +ad5446 +ad5449 +ad5504 +ad5624r_spi +ad5686 +ad5755 +ad5764 +ad5791 +ad5933 +ad714x +ad714x-i2c +ad714x-spi +ad7150 +ad7152 +ad7192 +ad7266 +ad7280a +ad7291 +ad7298 +ad7303 +ad7314 +ad7414 +ad7418 +ad7476 +ad7606 +ad7746 +ad7780 +ad7791 +ad7793 +ad7816 +ad7877 +ad7879 +ad7879-i2c +ad7879-spi +ad7887 +ad7923 +ad799x +ad8366 +ad9523 +ad9832 +ad9834 +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 +ade7753 +ade7754 +ade7758 +ade7759 +ade7854 +ade7854-i2c +ade7854-spi +adf4350 +adfs +adi +adis16060 +adis16080 +adis16130 +adis16136 +adis16201 +adis16203 +adis16204 +adis16209 +adis16220 +adis16240 +adis16260 +adis16400 +adis16480 +adis_lib +adjd_s311 +adl_pci6208 +adl_pci7x3x +adl_pci8164 +adl_pci9111 +adl_pci9118 +adm1021 +adm1025 +adm1026 +adm1029 +adm1031 +adm1275 +adm8211 +adm9240 +adp5520_bl +adp5520-keys +adp5588-keys +adp5589-keys +adp8860_bl +adp8870_bl +adq12b +ads1015 +ads7828 +ads7846 +ads7871 +ad_sigma_delta +adt7310 +adt7316 +adt7316-i2c +adt7316-spi +adt7410 +adt7411 +adt7462 +adt7470 +adt7475 +adt7x10 +adummy +adutux +adv7511 +adv7604 +adv7842 +advansys +adv_pci1710 +adv_pci1723 +adv_pci1724 +adv_pci_dio +adxl34x +adxl34x-i2c +adxl34x-spi +adxrs450 +af9013 +af9033 +af_alg +affs +af_key +af_packet_diag +af-rxrpc +ah4 +ah6 +aha152x_cs +ahci +ahci_ceva +ahci_platform +aic79xx +aic7xxx +aic94xx +aio_aio12_8 +aio_iiro_16 +aiptek +aircable +airo +airo_cs +airport +airspy +ak8975 +al3320a +algif_aead +algif_hash +algif_rng +algif_skcipher +ali-ircc +alim7101_wdt +altera-ci +altera_jtaguart +altera_ps2 +altera-stapl +altera_tse +altera_uart +alx +am53c974 +amc6821 +amd +amd5536udc +amd8111e +amd8111_edac +amd8131_edac +amdgpu +amd-rng +amplc_dio200 +amplc_dio200_common +amplc_dio200_pci +amplc_pc236 +amplc_pc236_common +amplc_pc263 +amplc_pci224 +amplc_pci230 +amplc_pci236 +amplc_pci263 +ams369fg06 +analog +anatop-regulator +ansi_cprng +anubis +aoe +apbps2 +apds9300 +apds9802als +apds990x +appledisplay +appletalk +appletouch +applicom +ar1021_i2c +ar5523 +ar7part +arc4 +arc_emac +arcmsr +arcnet +arc_ps2 +arc-rawmode +arc-rimi +arc_uart +arizona-haptics +arizona-i2c +arizona-ldo1 +arizona-micsupp +arizona-spi +ark3116 +arkfb +arptable_filter +arp_tables +arpt_mangle +as102_fe +as3711_bl +as3711-regulator +as3722-regulator +as3935 +as5011 +asc7621 +asix +ast +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 +ath3k +ath5k +ath6kl_core +ath6kl_sdio +ath6kl_usb +ath9k +ath9k_common +ath9k_htc +ath9k_hw +ati_remote +ati_remote2 +atl1 +atl1c +atl1e +atl2 +atm +atmel +atmel_cs +atmel-hlcdc +atmel_mxt_ts +atmel_pci +atmtcp +atp870u +atusb +atxp1 +atyfb +au0828 +au8522_common +au8522_decoder +au8522_dig +aufs +auo_k1900fb +auo_k1901fb +auo_k190x +auo-pixcir-ts +authenc +authencesn +auth_rpcgss +autofs4 +avma1_cs +avm_cs +avmfritz +ax25 +ax88179_178a +axnet_cs +axp20x-pek +axp20x-regulator +axp288_adc +axp288_charger +axp288_fuel_gauge +b1 +b1dma +b1pci +b1pcmcia +b2c2-flexcop +b2c2-flexcop-pci +b2c2-flexcop-usb +b43 +b43legacy +b44 +bas_gigaset +batman-adv +baycom_par +baycom_ser_fdx +baycom_ser_hdx +bcache +bch +bcm203x +bcm3510 +bcm590xx +bcm590xx-regulator +bcm5974 +bcm7xxx +bcm87xx +bcma +bcma-hcd +bcmsysport +bd6107 +bdc +bdc_pci +be2iscsi +be2net +befs +belkin_sa +bfa +bfs +bfusb +bh1750 +bh1770glc +bh1780gli +binfmt_misc +block2mtd +blocklayoutdriver +blowfish_common +blowfish_generic +bluecard_cs +bluetooth +bluetooth_6lowpan +bma150 +bma180 +bmc150-accel +bmc150_magn +bmg160 +bmp085-i2c +bmp085-spi +bmp280 +bna +bnep +bnx2 +bnx2fc +bnx2i +bnx2x +bonding +bpa10x +bpck +bpqether +bq2415x_charger +bq24190_charger +bq24257_charger +bq24735-charger +bq25890_charger +bq27x00_battery +br2684 +brcmfmac +brcmsmac +brcmutil +bridge +br_netfilter +broadcom +broadsheetfb +bsd_comp +bsr +bt3c_cs +bt878 +btbcm +btcoexist +btintel +btmrvl +btmrvl_sdio +btrfs +btrtl +btsdio +bttv +btuart_cs +btusb +btwilink +bu21013_ts +budget +budget-av +budget-ci +budget-core +budget-patch +c4 +c67x00 +c6xdigio +cachefiles +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-raw +cap11xx +capi +capidrv +capmode +carl9170 +carminefb +cassini +cast5_generic +cast6_generic +cast_common +catc +cb710 +cb710-mmc +cb_das16_cs +cb_pcidas +cb_pcidas64 +cb_pcidda +cb_pcimdas +cb_pcimdda +cc2520 +cc770 +cc770_isa +cc770_platform +c_can +c_can_pci +c_can_platform +cciss +ccm +cdc-acm +cdc_eem +cdc_ether +cdc_mbim +cdc_ncm +cdc-phonet +cdc_subset +cdc-wdm +ceph +cfg80211 +cfi_cmdset_0001 +cfi_cmdset_0002 +cfi_cmdset_0020 +cfi_probe +cfi_util +cfspi_slave +ch +ch341 +ch7006 +chacha20_generic +chacha20poly1305 +chaoskey +chipone_icn8318 +chipreg +chnl_net +cicada +cifs +ci_hdrc +ci_hdrc_imx +ci_hdrc_msm +ci_hdrc_pci +ci_hdrc_usb2 +ci_hdrc_zevio +cirrus +cirrusfb +clip +cls_basic +cls_bpf +cls_cgroup +cls_flow +cls_flower +cls_fw +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_cs +com20020-pci +com90io +com90xx +comedi +comedi_8254 +comedi_8255 +comedi_bond +comedi_isadma +comedi_parport +comedi_pci +comedi_pcmcia +comedi_test +comedi_usb +comm +configfs +contec_pci_dio +cordic +core +cp210x +cpc925_edac +cpia2 +cpsw_ale +cpufreq_spudemand +cpu-notifier-error-inject +cramfs +crc32 +crc7 +crc8 +crc-ccitt +crc-itu-t +cros_ec +cros_ec_devs +cros_ec_i2c +cros_ec_keyb +cros_ec_spi +cryptd +cryptoloop +crypto_null +crypto_user +cs5345 +cs53l32a +csiostor +ctr +cts +cuse +cw1200_core +cw1200_wlan_sdio +cw1200_wlan_spi +cx18 +cx18-alsa +cx22700 +cx22702 +cx231xx +cx231xx-alsa +cx231xx-dvb +cx2341x +cx23885 +cx24110 +cx24113 +cx24116 +cx24117 +cx24120 +cx24123 +cx25821 +cx25821-alsa +cx25840 +cx82310_eth +cx8800 +cx8802 +cx88-alsa +cx88-blackbird +cx88-dvb +cx88-vp3054-i2c +cx88xx +cxacru +cxd2099 +cxd2820r +cxgb +cxgb3 +cxgb3i +cxgb4 +cxgb4i +cxgb4vf +cxl +cxlflash +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 +da9030_battery +da9034-ts +da903x +da903x_bl +da9052-battery +da9052_bl +da9052-hwmon +da9052_onkey +da9052-regulator +da9052_tsi +da9052_wdt +da9055-hwmon +da9055_onkey +da9055-regulator +da9055_wdt +da9063_onkey +da9063-regulator +da9063_wdt +da9150-charger +da9150-core +da9150-gpadc +da9210-regulator +da9211-regulator +dac02 +DAC960 +daqboard2000 +das08 +das08_cs +das08_isa +das08_pci +das16 +das16m1 +das1800 +das6402 +das800 +davicom +db9 +dc395x +dccp +dccp_diag +dccp_ipv4 +dccp_ipv6 +dccp_probe +ddbridge +de2104x +de4x5 +decnet +deflate +defxx +denali +denali_pci +des_generic +dgap +dgnc +dht11 +dib0070 +dib0090 +dib3000mb +dib3000mc +dib7000m +dib7000p +dib8000 +dibx000_common +digi_acceleport +digicolor-usart +diskonchip +divacapi +divadidd +diva_idi +diva_mnt +divas +dl2k +dlci +dlm +dln2 +dm1105 +dm9601 +dm-bio-prison +dm-bufio +dm-cache +dm-cache-cleaner +dm-cache-mq +dm-cache-smq +dm-crypt +dm-delay +dm-era +dmfe +dm-flakey +dm-log +dm-log-userspace +dm-log-writes +dmm32at +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-verity +dmx3191d +dm-zero +dnet +dn_rtmsg +docg3 +docg4 +dp83867 +drbd +drbg +drm +drm_kms_helper +drv260x +drv2665 +drv2667 +drx39xyj +drxd +drxk +ds1621 +ds1682 +ds1wm +ds2482 +ds2490 +ds2760_battery +ds2780_battery +ds2781_battery +ds2782_battery +ds3000 +ds620 +dsbr100 +dscc4 +dss1_divert +dst +dst_ca +dstr +dt2801 +dt2811 +dt2814 +dt2815 +dt2817 +dt282x +dt3000 +dt3155 +dt9812 +dtl1_cs +dummy +dummy-irq +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-digitv +dvb-usb-dtt200u +dvb-usb-dtv5100 +dvb-usb-dvbsky +dvb-usb-dw2102 +dvb-usb-ec168 +dvb-usb-friio +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_v2 +dvb-usb-vp702x +dvb-usb-vp7045 +dwc3 +dwc3-pci +dw_dmac +dw_dmac_core +dw_dmac_pci +dwmac-generic +dwmac-ipq806x +dwmac-lpc18xx +dwmac-meson +dwmac-rk +dwmac-socfpga +dwmac-sti +dwmac-sunxi +dw_wdt +dyna_pci10xx +dynapro +e100 +e1000 +e1000e +e3x0-button +e4000 +earth-pt1 +earth-pt3 +eata +ebt_802_3 +ebtable_broute +ebtable_filter +ebtable_nat +ebtables +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 +ec100 +echainiv +echo +edac_core +edt-ft5x06 +eeprom +eeprom_93cx6 +eeprom_93xx46 +eeti_ts +efs +egalax_ts +ehset +elan_i2c +elants_i2c +electra_cf +elo +elsa_cs +em28xx +em28xx-alsa +em28xx-dvb +em28xx-rc +em28xx-v4l +emac_arc +emac_rockchip +emc1403 +emc2103 +emc6w201 +em_canid +em_cmp +emi26 +emi62 +em_ipset +em_meta +em_nbyte +empeg +ems_pci +ems_pcmcia +ems_usb +em_text +emu10k1-gp +em_u32 +enc28j60 +enclosure +eni +enic +epat +epia +epic100 +eql +esas2r +esd_usb2 +esi-sir +esp4 +esp6 +esp_scsi +et1011c +et131x +ethoc +evbug +exofs +extcon-adc-jack +extcon-arizona +extcon-axp288 +extcon-gpio +extcon-max14577 +extcon-max77693 +extcon-max77843 +extcon-max8997 +extcon-palmas +extcon-rt8973a +extcon-sm5502 +extcon-usb-gpio +ezusb +f2fs +f75375s +f81232 +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_ssd1289 +fb_ssd1306 +fb_ssd1331 +fb_ssd1351 +fb_st7735r +fbtft +fbtft_device +fb_tinylcd +fb_tls8204 +fb_uc1701 +fb_upd161704 +fb_watterott +fc0011 +fc0012 +fc0013 +fc2580 +fcoe +fcrypt +fdomain +fdomain_cs +fealnx +ff-memless +fid +firedtv +firewire-core +firewire-net +firewire-ohci +firewire-sbp2 +firewire-serial +fit2 +fit3 +fixed +fl512 +fld +flexcan +flexfb +floppy +fm10k +fm801-gp +fmc +fmc-chardev +fmc-fakedev +fmc-trivial +fmc-write-eeprom +fm_drv +fmvj18x_cs +forcedeth +fore_200e +fotg210-hcd +fotg210-udc +fou +freevxfs +friq +frpw +fsa9480 +fscache +fsl-edma +fsl_elbc_nand +fsl_lpuart +ft1000 +ft1000_pcmcia +ftdi-elan +ftdi_sio +ftl +fujitsu_ts +fusbh200-hcd +g450_pll +g760a +g762 +g_acm_ms +gadgetfs +gamecon +gameport +garmin_gps +garp +g_audio +g_cdc +gcm +g_dbgp +gdmtty +gdmulte +gdmwm +gdth +generic +generic-adc-battery +generic_bl +genet +geneve +geneve_core +gen_probe +genwqe_card +g_ether +gf128mul +gf2k +g_ffs +gfs2 +ghash-generic +g_hid +gigaset +girbil-sir +gl518sm +gl520sm +gl620a +gluebi +g_mass_storage +g_midi +g_ncm +g_nokia +go7007 +go7007-loader +go7007-usb +goku_udc +goodix +gp2ap002a00f +gp2ap020a00f +gpio +gpio-74x164 +gpio-74xx-mmio +gpio-addr-flash +gpio-adnp +gpio-adp5520 +gpio-adp5588 +gpio-altera +gpio-amd8111 +gpio-arizona +gpio_backlight +gpio-beeper +gpio-charger +gpio-crystalcove +gpio-da9052 +gpio-da9055 +gpio-dln2 +gpio-dwapb +gpio-fan +gpio-generic +gpio-grgpio +gpio-ir-recv +gpio-janz-ttl +gpio-kempld +gpio_keys +gpio_keys_polled +gpio-lp3943 +gpio-max7300 +gpio-max7301 +gpio-max730x +gpio-max732x +gpio-mc33880 +gpio-mcp23s08 +gpio_mdio +gpio-ml-ioh +gpio_mouse +gpio-pca953x +gpio-pcf857x +gpio-rdc321x +gpio-regulator +gpio-sch311x +gpio-syscon +gpio_tilt_polled +gpio-tps65912 +gpio-twl4030 +gpio-twl6040 +gpio-ucb1400 +gpio-viperboard +gpio-vx855 +gpio_wdt +gpio-wm831x +gpio-wm8350 +gpio-wm8994 +g_printer +grace +grcan +gre +grip +grip_mp +gr_udc +gsc_hpdi +g_serial +gs_fpga +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 +gs_usb +gtco +guillemot +gunze +g_webcam +gxt4500 +g_zero +hackrf +hamachi +hampshire +hangcheck-timer +hanwang +hci +hci_uart +hci_vhci +hdlc +hdlc_cisco +hdlcdrv +hdlc_fr +hdlc_ppp +hdlc_raw +hdlc_raw_eth +hdlc_x25 +hdpvr +he +hexium_gemini +hexium_orion +hfc4s8s_l1 +hfcmulti +hfcpci +hfcsusb +hfc_usb +hfs +hfsplus +hi6421-pmic-core +hi6421-regulator +hid +hid-a4tech +hid-apple +hid-appleir +hid-aureal +hid-axff +hid-belkin +hid-betopff +hid-cherry +hid-chicony +hid-cp2112 +hid-cypress +hid-dr +hid-elecom +hid-elo +hid-emsff +hid-ezkey +hid-gaff +hid-generic +hid-gt683r +hid-gyration +hid-holtekff +hid-holtek-kbd +hid-holtek-mouse +hid-icade +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 +hidp +hid-penmount +hid-petalynx +hid-picolcd +hid-pl +hid-plantronics +hid-primax +hid-prodikeys +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-iio-common +hid-sensor-incl-3d +hid-sensor-magn-3d +hid-sensor-press +hid-sensor-prox +hid-sensor-rotation +hid-sensor-trigger +hid-sjoy +hid-sony +hid-speedlink +hid-steelseries +hid-sunplus +hid-thingm +hid-tivo +hid-tmff +hid-topseed +hid-twinhan +hid-uclogic +hid-waltop +hid-wiimote +hid-xinmo +hid-zpff +hid-zydacron +hih6130 +hisax +hisax_fcpcipnp +hisax_isac +hisax_st5481 +hisi504_nand +hmc5843_core +hmc5843_i2c +hmc5843_spi +hmc6352 +hopper +hostap +hostap_cs +hostap_pci +hostap_plx +hp100 +hpfs +hpilo +hpsa +hptiop +hsi +hsi_char +hso +hsr +hsu_dma +hsu_dma_pci +htc-pasic3 +htu21 +huawei_cdc_ncm +hvcs +hvcserver +hwa-hc +hwa-rc +hwmon-vid +hwpoison-inject +hx8357 +hysdn +i1480-dfu-usb +i1480-est +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-cros-ec-tunnel +i2c-designware-core +i2c-designware-pci +i2c-designware-platform +i2c-diolan-u2c +i2c-dln2 +i2c-gpio +i2c-hid +i2c-i801 +i2c-isch +i2c-kempld +i2c-matroxfb +i2c-mpc +i2c-mux +i2c-mux-gpio +i2c-mux-pca9541 +i2c-mux-pca954x +i2c-nforce2 +i2c-ocores +i2c-parport +i2c-parport-light +i2c-pasemi +i2c-pca-platform +i2c-piix4 +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 +i40e +i40evf +i5k_amb +i6300esb +i740fb +i82092 +ib_addr +ib_cm +ib_core +ib_ipoib +ib_iser +ib_isert +ib_mad +ibmaem +ibmpex +ibmpowernv +ib_mthca +ibmveth +ibmvfc +ib_qib +ib_sa +ib_srp +ib_srpt +ib_ucm +ib_umad +ib_uverbs +icom +icplus +icp_multi +ics932s401 +ideapad_slidebar +idma64 +idmouse +idt77252 +idtcps +idt_gen2 +ieee802154 +ieee802154_6lowpan +ieee802154_socket +ifb +iforce +igb +igbvf +igorplugusb +iguanair +iio_dummy +iio_hwmon +iio-trig-interrupt +iio-trig-periodic-rtc +iio-trig-sysfs +ii_pci20kc +ili210x +ili922x +ili9320 +imm +imon +ims-pcu +imx074 +imx_thermal +ina209 +ina2xx +industrialio +industrialio-triggered-buffer +inet_diag +inexio +inftl +initio +input-leds +input-polldev +int51x1 +intel_vr_nor +interact +interval_tree_test +inv-mpu6050 +ioc4 +io_edgeport +io_ti +iowarrior +ip6_gre +ip6table_filter +ip6table_mangle +ip6table_nat +ip6table_raw +ip6_tables +ip6table_security +ip6t_ah +ip6t_eui64 +ip6t_frag +ip6t_hbh +ip6t_ipv6header +ip6t_MASQUERADE +ip6t_mh +ip6t_NPT +ip6t_REJECT +ip6t_rpfilter +ip6t_rt +ip6t_SYNPROXY +ip6_tunnel +ip6_udp_tunnel +ip6_vti +ipack +ipaq +ipcomp +ipcomp6 +ipddp +ipg +ip_gre +iphase +ipheth +ipip +ipmi_devintf +ipmi_msghandler +ipmi_powernv +ipmi_poweroff +ipmi_si +ipmi_ssif +ipmi_watchdog +ipoctal +ipr +ips +ip_set +ip_set_bitmap_ip +ip_set_bitmap_ipmac +ip_set_bitmap_port +ip_set_hash_ip +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 +iptable_filter +iptable_mangle +iptable_nat +iptable_raw +ip_tables +iptable_security +ipt_ah +ipt_CLUSTERIP +ipt_ECN +ipt_MASQUERADE +ipt_REJECT +ipt_rpfilter +ipt_SYNPROXY +ip_tunnel +ipvlan +ip_vs +ip_vs_dh +ip_vs_fo +ip_vs_ftp +ip_vs_lblc +ip_vs_lblcr +ip_vs_lc +ip_vs_nq +ip_vs_pe_sip +ip_vs_rr +ip_vs_sed +ip_vs_sh +ip_vs_wlc +ip_vs_wrr +ip_vti +ipw +ipw2100 +ipw2200 +ipwireless +ipx +ircomm +ircomm-tty +irda +irda-usb +ir-hix5hd2 +ir-jvc-decoder +ir-kbd-i2c +irlan +ir-lirc-codec +ir-mce_kbd-decoder +ir-nec-decoder +irnet +ir-rc5-decoder +ir-rc6-decoder +ir-sanyo-decoder +ir-sharp-decoder +ir-sony-decoder +irtty-sir +ir-usb +ir-xmp-decoder +iscsi_boot_sysfs +iscsi_target_mod +iscsi_tcp +isdn +isdn_bsdcomp +isdnhdlc +isicom +isight_firmware +isl29003 +isl29018 +isl29020 +isl29028 +isl29125 +isl6271a-regulator +isl6405 +isl6421 +isl6423 +isl9305 +isofs +isp116x-hcd +isp1362-hcd +isp1704_charger +isp1760 +it913x +itd1000 +itg3200 +iuu_phoenix +ivtv +ivtv-alsa +ivtvfb +iw_c2 +iw_cm +iw_cxgb3 +iw_cxgb4 +iwl3945 +iwl4965 +iwldvm +iwlegacy +iwlmvm +iwlwifi +iw_nes +ix2505v +ixgb +ixgbe +ixgbevf +janz-cmodio +janz-ican3 +jc42 +jedec_probe +jffs2 +jfs +jitterentropy_rng +jmb38x_ms +jme +joydev +joydump +jr3_pci +jsa1212 +jsm +kafs +kalmia +kaweth +kbic +kbtab +kcomedilib +ke_counter +kempld-core +kempld_wdt +kernelcapi +keyspan +keyspan_pda +keyspan_remote +kfifo_buf +khazad +kingsun-sir +kl5kusb105 +kmx61 +ko2iblnd +kobil_sct +ks0108 +ks8842 +ks8851 +ks8851_mll +ks959-sir +ksdazzle-sir +ksocklnd +ksz884x +ktti +kvaser_pci +kvaser_usb +kvm +kvm-hv +kvm-pr +kxcjk-1013 +kxsd9 +kxtj9 +kyrofb +l1oip +l2tp_core +l2tp_debugfs +l2tp_eth +l2tp_ip +l2tp_ip6 +l2tp_netlink +l2tp_ppp +l4f00242t03 +l64781 +lanai +lapb +lapbether +latch-addr-flash +lattice-ecp3-config +lcd +ld9040 +ldusb +lec +led-class-flash +leds-88pm860x +leds-adp5520 +leds-bcm6328 +leds-bcm6358 +leds-bd2802 +leds-blinkm +leds-da903x +leds-da9052 +leds-dac124s085 +leds-gpio +leds-ktd2692 +leds-lm3530 +leds-lm3533 +leds-lm355x +leds-lm3642 +leds-lp3944 +leds-lp8788 +leds-lp8860 +leds-lt3593 +leds-max77693 +leds-max8997 +leds-mc13783 +leds-menf21bmc +leds-pca9532 +leds-pca955x +leds-pca963x +leds-pm8941-wled +leds-powernv +leds-pwm +leds-regulator +leds-tca6507 +leds-tlc591xx +leds-wm831x-status +leds-wm8350 +ledtrig-backlight +ledtrig-camera +ledtrig-default-on +ledtrig-gpio +ledtrig-heartbeat +ledtrig-oneshot +ledtrig-timer +ledtrig-transient +legousbtower +lg2160 +lgdt3305 +lgdt3306a +lgdt330x +lgs8gxx +lg-vl600 +lib80211 +lib80211_crypt_ccmp +lib80211_crypt_tkip +lib80211_crypt_wep +libahci +libahci_platform +libceph +libcfs +libcomposite +libcrc32c +libcxgbi +libertas +libertas_cs +libertas_sdio +libertas_spi +libertas_tf +libertas_tf_usb +libfc +libfcoe +libipw +libiscsi +libiscsi_tcp +libore +libosd +libsas +lightning +lineage-pem +linear +liquidio +lirc_bt829 +lirc_dev +lirc_imon +lirc_parallel +lirc_sasem +lirc_serial +lirc_sir +lirc_zilog +lis3l02dq +lis3lv02d +lis3lv02d_i2c +lis3lv02d_spi +litelink-sir +lkkbd +llc +llc2 +llite_lloop +ll_temac +lm25066 +lm3533-als +lm3533_bl +lm3533-core +lm3533-ctrlbank +lm3630a_bl +lm3639_bl +lm63 +lm70 +lm73 +lm75 +lm77 +lm78 +lm80 +lm83 +lm8323 +lm8333 +lm85 +lm87 +lm90 +lm92 +lm93 +lm95234 +lm95241 +lm95245 +lms283gf05 +lms501kf03 +lmv +lnbp21 +lnbp22 +lnet +lnet_selftest +lockd +locktorture +lov +lp +lp3943 +lp3971 +lp3972 +lp855x_bl +lp8727_charger +lp872x +lp8755 +lp8788_adc +lp8788_bl +lp8788-buck +lp8788-charger +lp8788-ldo +lpc_ich +lpc_sch +lpddr_cmds +lpfc +lru_cache +lrw +ltc2941-battery-gauge +ltc2945 +ltc2978 +ltc3589 +ltc4151 +ltc4215 +ltc4222 +ltc4245 +ltc4260 +ltc4261 +ltr501 +ltv350qv +lustre +lv5207lp +lvstest +lxt +lz4 +lz4_compress +lz4hc +lz4hc_compress +m25p80 +m2m-deinterlace +m52790 +m62332 +m88ds3103 +m88rs2000 +m88rs6000t +ma600-sir +mac80211 +mac80211_hwsim +mac802154 +macb +mac-celtic +mac-centeuro +mac-croatian +mac-cyrillic +mac-gaelic +mac-greek +mac_hid +mac-iceland +mac-inuit +mac-roman +mac-romanian +mac-turkish +macvlan +macvtap +mag3110 +magellan +mailbox-altera +mantis +mantis_core +map_absent +map_funcs +map_ram +map_rom +marvell +matrix-keymap +matrix_keypad +matroxfb_accel +matroxfb_base +matroxfb_crtc2 +matroxfb_DAC1064 +matroxfb_g450 +matroxfb_maven +matroxfb_misc +matroxfb_Ti3026 +matrox_w1 +max1027 +max1111 +max11801_ts +max1363 +max14577 +max14577_charger +max1586 +max16064 +max16065 +max1619 +max1668 +max17040_battery +max17042_battery +max197 +max2165 +max3100 +max3421-hcd +max34440 +max517 +max5821 +max63xx_wdt +max6639 +max6642 +max6650 +max6697 +max6875 +max7359_keypad +max77686 +max77693 +max77693_charger +max77693-haptic +max77802 +max77843 +max77843-haptic +max8649 +max8660 +max8688 +max8903_charger +max8907 +max8907-regulator +max8925_bl +max8925_onkey +max8925_power +max8925-regulator +max8952 +max8973-regulator +max8997 +max8997_charger +max8997_haptic +max8998 +max8998_charger +mb862xxfb +mb86a16 +mb86a20s +mc13783-adc +mc13783-pwrbutton +mc13783-regulator +mc13783_ts +mc13892-regulator +mc13xxx-core +mc13xxx-i2c +mc13xxx-regulator-core +mc13xxx-spi +mc44s803 +m_can +mcb +mcb-pci +mceusb +mcp2120-sir +mcp251x +mcp3021 +mcp320x +mcp3422 +mcp4725 +mcp4922 +mcryptd +mcs5000_ts +mcs7780 +mcs7830 +mcs_touchkey +mct_u232 +md4 +md5-ppc +mdc +mdc800 +md-cluster +mdio +mdio-bcm-unimac +mdio-bitbang +mdio-gpio +mdio-mux +mdio-mux-gpio +mdio-mux-mmioreg +mdio-octeon +me4000 +me_daq +media +megaraid +megaraid_mbox +megaraid_mm +megaraid_sas +memory-notifier-error-inject +memstick +mena21_wdt +menf21bmc +menf21bmc_hwmon +menf21bmc_wdt +men_z135_uart +men_z188_adc +metronomefb +metro-usb +mf6x4 +mga +mgc +michael_mic +micrel +microread +microread_i2c +microtek +mii +minix +mip6 +mISDN_core +mISDN_dsp +mISDNinfineon +mISDNipac +mISDNisar +mite +mk712 +mkiss +mlx4_core +mlx4_en +mlx4_ib +mlx5_core +mlx5_ib +mlx90614 +mma8450 +mma8452 +mma9551 +mma9551_core +mma9553 +mmc35240 +mmc_block +mmc_spi +mms114 +mn88472 +mn88473 +mos7720 +mos7840 +moxa +mpc624 +mpl115 +mpl3115 +mpls_gso +mpls_router +mpoa +mpr121_touchkey +mpt2sas +mpt3sas +mptbase +mptctl +mptfc +mptlan +mptsas +mptscsih +mptspi +mpu3050 +mrf24j40 +mrp +ms5611_core +ms5611_i2c +ms5611_spi +ms_block +msdos +msi001 +msi2500 +msp3400 +mspro_block +mt2060 +mt2063 +mt20xx +mt2131 +mt2266 +mt29f_spinand +mt312 +mt352 +mt6397-core +mt6397-regulator +mt7601u +mt9m001 +mt9m111 +mt9t031 +mt9t112 +mt9v011 +mt9v022 +mtd +mtd_blkdevs +mtdblock +mtdblock_ro +mtd_dataflash +mtdoops +mtdram +mtdswap +mtip32xx +mtk-sd +mtouch +multipath +multiq3 +musb_hdrc +mvmdio +mvsas +mv_u3d_core +mv_udc +mvumi +mwifiex +mwifiex_pcie +mwifiex_sdio +mwifiex_usb +mwl8k +mxb +mxl111sf-demod +mxl111sf-tuner +mxl301rf +mxl5005s +mxl5007t +mxser +mxuport +myri10ge +nand +nand_bch +nand_ecc +nand_ids +nandsim +national +natsemi +nau7802 +navman +nbd +nci +nci_uart +ncpfs +nct7802 +nct7904 +nd_blk +nd_btt +nd_pmem +ne2k-pci +neofb +net1080 +net2272 +net2280 +netconsole +netjet +netlink_diag +netrom +netxen_nic +newtonkbd +nfc +nfc_digital +nfcmrvl +nfcmrvl_uart +nfcmrvl_usb +nf_conntrack +nf_conntrack_amanda +nf_conntrack_broadcast +nf_conntrack_ftp +nf_conntrack_h323 +nf_conntrack_ipv4 +nf_conntrack_ipv6 +nf_conntrack_irc +nf_conntrack_netbios_ns +nf_conntrack_netlink +nf_conntrack_pptp +nf_conntrack_proto_dccp +nf_conntrack_proto_gre +nf_conntrack_proto_sctp +nf_conntrack_proto_udplite +nf_conntrack_sane +nf_conntrack_sip +nf_conntrack_snmp +nf_conntrack_tftp +nfcsim +nfcwilink +nf_defrag_ipv4 +nf_defrag_ipv6 +nf_log_arp +nf_log_bridge +nf_log_common +nf_log_ipv4 +nf_log_ipv6 +nf_nat +nf_nat_amanda +nf_nat_ftp +nf_nat_h323 +nf_nat_ipv4 +nf_nat_ipv6 +nf_nat_irc +nf_nat_masquerade_ipv4 +nf_nat_masquerade_ipv6 +nf_nat_pptp +nf_nat_proto_dccp +nf_nat_proto_gre +nf_nat_proto_sctp +nf_nat_proto_udplite +nf_nat_redirect +nf_nat_sip +nf_nat_snmp_basic +nf_nat_tftp +nfnetlink +nfnetlink_acct +nfnetlink_cthelper +nfnetlink_cttimeout +nfnetlink_log +nfnetlink_queue +nf_reject_ipv4 +nf_reject_ipv6 +nfs +nfs_acl +nfsd +nfs_layout_flexfiles +nfs_layout_nfsv41_files +nfsv2 +nfsv3 +nfsv4 +nf_synproxy_core +nf_tables +nf_tables_arp +nf_tables_bridge +nf_tables_inet +nf_tables_ipv4 +nf_tables_ipv6 +nf_tables_netdev +nft_chain_nat_ipv4 +nft_chain_nat_ipv6 +nft_chain_route_ipv4 +nft_chain_route_ipv6 +nft_compat +nft_counter +nft_ct +nft_exthdr +nft_hash +nftl +nft_limit +nft_log +nft_masq +nft_masq_ipv4 +nft_masq_ipv6 +nft_meta +nft_meta_bridge +nft_nat +nft_queue +nft_rbtree +nft_redir +nft_redir_ipv4 +nft_redir_ipv6 +nft_reject +nft_reject_bridge +nft_reject_inet +nft_reject_ipv4 +nft_reject_ipv6 +ngene +n_gsm +nhc_dest +nhc_fragment +nhc_hop +nhc_ipv6 +nhc_mobility +nhc_routing +nhc_udp +n_hdlc +ni_6527 +ni_65xx +ni_660x +ni_670x +ni_at_a2150 +ni_at_ao +ni_atmio +ni_atmio16d +nicpf +nicstar +nicvf +ni_daq_700 +ni_daq_dio24 +ni_labpc +ni_labpc_common +ni_labpc_cs +ni_labpc_isadma +ni_labpc_pci +nilfs2 +ni_mio_cs +ni_pcidio +ni_pcimio +ni_tio +ni_tiocmd +niu +ni_usb6501 +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 +nosy +notifier-error-inject +nouveau +nozomi +nps_enet +n_r3964 +ns558 +ns83820 +nsc-ircc +ntb +ntb_netdev +ntb_pingpong +ntb_tool +ntb_transport +ntc_thermistor +ntfs +n_tracerouter +n_tracesink +null_blk +nvidiafb +nvme +nx-compress +nx-compress-powernv +nx-compress-pseries +nx-crypto +nxp-nci +nxp-nci_i2c +nxt200x +nxt6000 +obdclass +obdecho +objlayoutdriver +ocfb +ocfs2 +ocfs2_dlm +ocfs2_dlmfs +ocfs2_nodemanager +ocfs2_stackglue +ocfs2_stack_o2cb +ocfs2_stack_user +ocrdma +of_mmc_spi +ofpart +of_xilinx_wdt +old_belkin-sir +omap4-keypad +omfs +omninet +on20 +on26 +onenand +opal-prd +opencores-kbd +openvswitch +oprofile +opticon +option +or51132 +or51211 +orinoco +orinoco_cs +orinoco_nortel +orinoco_plx +orinoco_tmd +orinoco_usb +osc +osd +osdblk +osst +oti6858 +ov2640 +ov5642 +ov6650 +ov7640 +ov7670 +ov772x +ov9640 +ov9740 +overlay +oxu210hp-hcd +ozwpan +p54common +p54pci +p54spi +p54usb +p8022 +p8023 +palmas-pwrbutton +palmas-regulator +pandora_bl +panel +panel-ld9040 +panel-s6e8aa0 +panel-sharp-lq101r1sx01 +panel-simple +paride +parkbd +parport +parport_ax88796 +parport_cs +parport_pc +parport_serial +pasemi_edac +pasemi_nand +pasemi-rng +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_pcmcia +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 +pc300too +pcap_keys +pcap-regulator +pcap_ts +pcbc +pcd +pcf50633 +pcf50633-adc +pcf50633-backlight +pcf50633-charger +pcf50633-gpio +pcf50633-input +pcf50633-regulator +pcf8574_keypad +pcf8591 +pch_udc +pci +pci200syn +pcips2 +pci-stub +pcl711 +pcl724 +pcl726 +pcl730 +pcl812 +pcl816 +pcl818 +pcm3724 +pcmad +pcmcia +pcmcia_core +pcmciamtd +pcmcia_rsrc +pcmda12 +pcmmio +pcmuio +pcnet32 +pcnet_cs +pcrypt +pcspkr +pcwd_pci +pcwd_usb +pd +pd6729 +pda_power +pdc_adma +peak_pci +peak_pcmcia +peak_usb +pegasus +penmount +percpu_test +pf +pfuze100-regulator +pg +phantom +phonet +phram +phy-bcm-kona-usb2 +phy-exynos-usb2 +phy-gpio-vbus-usb +phy-isp1301 +phy-pxa-28nm-hsic +phy-pxa-28nm-usb2 +physmap +physmap_of +phy-tahvo +phy-tusb1210 +pixcir_i2c_ts +pkcs7_message +pkcs7_test_key +pktcdvd +pktgen +pl2303 +platform_lcd +plat_nand +plat-ram +plip +plusb +pluto2 +plx_pci +pm2fb +pm3fb +pm80xx +pmbus +pmbus_core +pmc551 +pmcraid +pm-notifier-error-inject +pn533 +pn544 +pn544_i2c +pn_pep +poly1305_generic +port100 +powermate +powernv_flash +powernv-rng +powr1220 +ppa +ppdev +ppp_async +ppp_deflate +ppp_mppe +pppoatm +pppoe +pppox +ppp_synctty +pps_core +pps-gpio +pps-ldisc +pps_parport +pptp +prism2_usb +ps2mult +ps3disk +ps3flash +ps3_gelic +ps3-lpm +ps3rom +ps3stor_lib +ps3vram +ps8622 +pseries_energy +pseries-rng +psmouse +psnap +pt +ptlrpc +ptn3460 +ptp +pvrusb2 +pwc +pwm-beeper +pwm_bl +pwm-fan +pwm-fsl-ftm +pwm-lp3943 +pwm-pca9685 +pwm-regulator +pwm-twl +pwm-twl-led +pxa27x_udc +qcaspi +qcaux +qcom-spmi-iadc +qcom_spmi-regulator +qcom-spmi-temp-alarm +qcom-spmi-vadc +qcserial +qinfo_probe +qla1280 +qla2xxx +qla3xxx +qla4xxx +qlcnic +qlge +qlogic_cs +qlogicfas408 +qm1d1c0042 +qmi_wwan +qnx4 +qnx6 +qsemi +qt1010 +qt1070 +qt2160 +quatech2 +quatech_daqp_cs +quota_tree +quota_v1 +quota_v2 +qxl +r128 +r592 +r6040 +r8152 +r8169 +r8188eu +r8192e_pci +r8192u_usb +r820t +r852 +r8712u +r8723au +r8a66597-hcd +r8a66597-udc +rack-meter +radeon +radeonfb +radio-bcm2048 +radio-i2c-si470x +radio-keene +radio-ma901 +radio-maxiradio +radio-mr800 +radio-platform-si4713 +radio-raremono +radio-shark +radio-si476x +radio-tea5764 +radio-usb-si470x +radio-usb-si4713 +radio-wl1273 +raid0 +raid1 +raid10 +raid456 +raid6_pq +raid6test +raid_class +ramoops +raw +ray_cs +rbd +rbtree_test +rc5t583-regulator +rc-adstech-dvb-t-pci +rc-alink-dtu-m +rc-anysee +rc-apac-viewcomp +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-behold +rc-behold-columbus +rc-budget-ci-old +rc-cinergy +rc-cinergy-1400 +rc-core +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-dvbsky +rc-em-terratec +rc-encore-enltv +rc-encore-enltv2 +rc-encore-enltv-fm53 +rc-evga-indtube +rc-eztv +rc-flydvb +rc-flyvideo +rc-fusionhdtv-mce +rc-gadmei-rm008z +rc-genius-tvgo-a11mce +rc-gotview7135 +rc-hauppauge +rc-imon-mce +rc-imon-pad +rc-iodata-bctv7e +rc-it913x-v1 +rc-it913x-v2 +rc-kaiomy +rc-kworld-315u +rc-kworld-pc150u +rc-kworld-plus-tv-analog +rc-leadtek-y04g0051 +rc-lirc +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-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-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-twinhan1027 +rc-twinhan-dtv-cab-ci +rc-videomate-m1f +rc-videomate-s350 +rc-videomate-tv-pvr +rc-winfast +rc-winfast-usbii-deluxe +rdc321x-southbridge +rdma_cm +rdma_ucm +rds +rds_rdma +rds_tcp +realtek +redboot +redrat3 +reed_solomon +regmap-spmi +regulator-haptic +reiserfs +remoteproc +retu-mfd +retu-pwrbutton +retu_wdt +rfc1051 +rfc1201 +rfcomm +rfd_ftl +rfkill-gpio +rfkill-regulator +rio500 +rionet +rio-scan +rivafb +rj54n1cb0c +rk808 +rk808-regulator +rmd128 +rmd160 +rmd256 +rmd320 +rn5t618 +rn5t618-regulator +rn5t618_wdt +rndis_host +rndis_wlan +rocket +romfs +rose +rotary_encoder +rp2 +rpadlpar_io +rpaphp +rpcrdma +rpcsec_gss_krb5 +rsa_generic +rsi_91x +rsi_sdio +rsi_usb +rsxx +rt2400pci +rt2500pci +rt2500usb +rt2800lib +rt2800mmio +rt2800pci +rt2800usb +rt2x00lib +rt2x00mmio +rt2x00pci +rt2x00usb +rt5033 +rt5033_battery +rt5033-regulator +rt61pci +rt73usb +rt9455_charger +rtas_flash +rtc-88pm80x +rtc-88pm860x +rtc-ab3100 +rtc-ab-b5ze-s3 +rtc-abx80x +rtc-as3722 +rtc-bq32k +rtc-bq4802 +rtc-cmos +rtc_cmos_setup +rtc-da9052 +rtc-da9055 +rtc-da9063 +rtc-ds1286 +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-ds3234 +rtc-em3027 +rtc-fm3130 +rtc-generic +rtc-hid-sensor-time +rtc-hym8563 +rtc-isl12022 +rtc-isl12057 +rtc-isl1208 +rtc-lp8788 +rtc-m41t80 +rtc-m41t93 +rtc-m41t94 +rtc-m48t35 +rtc-m48t59 +rtc-m48t86 +rtc-max6900 +rtc-max6902 +rtc-max77686 +rtc-max77802 +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-pcf8563 +rtc-pcf8583 +rtc-ps3 +rtc-r9701 +rtc-rc5t583 +rtc-rk808 +rtc-rp5c01 +rtc-rs5c348 +rtc-rs5c372 +rtc-rv3029c2 +rtc-rx4581 +rtc-rx8025 +rtc-rx8581 +rtc-s35390a +rtc-s5m +rtc-snvs +rtc-stk17ta8 +rtc-tps6586x +rtc-tps65910 +rtc-tps80031 +rtc-twl +rtc-v3020 +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 +rtl8723ae +rtl8723be +rtl8723-common +rtl8821ae +rtllib +rtllib_crypt_ccmp +rtllib_crypt_tkip +rtllib_crypt_wep +rtl_pci +rtl_usb +rtlwifi +rts5208 +rtsx_pci +rtsx_pci_ms +rtsx_pci_sdmmc +rtsx_usb +rtsx_usb_ms +rtsx_usb_sdmmc +rx51_battery +rxkad +s1d13xxxfb +s2250 +s2255drv +s2io +s2mpa01 +s2mps11 +s3fb +s526 +s5h1409 +s5h1411 +s5h1420 +s5m8767 +s626 +s6e63m0 +s921 +saa6588 +saa6752hs +saa7115 +saa7127 +saa7134 +saa7134-alsa +saa7134-dvb +saa7134-empress +saa7134-go7007 +saa7146 +saa7146_vv +saa7164 +saa717x +saa7706h +safe_serial +salsa20_generic +samsung-sxgbe +sata_inic162x +sata_mv +sata_nv +sata_promise +sata_qstor +sata_sil +sata_sil24 +sata_sis +sata_sx4 +sata_uli +sata_via +sata_vsc +savage +savagefb +sbp_target +sbs-battery +sc16is7xx +sc92031 +sca3000 +scanlog +sch_atm +sch_cbq +sch_choke +sch_codel +sch_drr +sch_dsmark +sch_fq +sch_fq_codel +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_tbf +sch_teql +scsi_debug +scsi_dh +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_probe +sdhci +sdhci_f_sdh30 +sdhci-of-arasan +sdhci-of-esdhc +sdhci-of-hlwd +sdhci-pci +sdhci-pltfm +sdio_uart +sdricoh_cs +sedlbauer_cs +seed +sensorhub +seqiv +ser_gigaset +serial2002 +serial_cs +serio_raw +sermouse +serpent_generic +serport +ses +sfc +sha1-powerpc +shark2 +shpchp +sht15 +sht21 +shtc1 +sh_veu +si2157 +si2165 +si2168 +si21xx +si4713 +si476x-core +si7005 +si7020 +sidewinder +sierra +sierra_net +sil164 +sir-dev +sis +sis190 +sis5595 +sis900 +sisfb +sisusbvga +sit +sja1000 +sja1000_isa +sja1000_platform +skd +skfp +skge +sky2 +sky81452 +sky81452-backlight +sky81452-regulator +sl811_cs +sl811-hcd +slcan +slip +slram +sm501 +sm501fb +sm750fb +sm7xxfb +smb347-charger +smc91c92_cs +sm_common +sm_ftl +smipcie +smm665 +smsc +smsc47m192 +smsc75xx +smsc911x +smsc9420 +smsc95xx +smsc-ircc2 +smscufx +smsdvb +smsmdtv +smssdio +smsusb +snd +snd-ac97-codec +snd-ad1889 +snd-ak4113 +snd-ak4114 +snd-ak4117 +snd-ak4xxx-adda +snd-ali5451 +snd-aloop +snd-als300 +snd-als4000 +snd-aoa +snd-aoa-codec-onyx +snd-aoa-codec-tas +snd-aoa-codec-toonie +snd-aoa-fabric-layout +snd-aoa-i2sbus +snd-aoa-soundbus +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-firewire-lib +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-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-pcm-oss +snd-pcxhr +snd-pdaudiocf +snd-portman2x4 +snd-powermac +snd_ps3 +snd-pt2258 +snd-rawmidi +snd-riptide +snd-rme32 +snd-rme96 +snd-rme9652 +snd-sb-common +snd-scs1x +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-ac97 +snd-soc-adau1701 +snd-soc-ak4104 +snd-soc-ak4554 +snd-soc-ak4642 +snd-soc-ak5386 +snd-soc-alc5623 +snd-soc-core +snd-soc-cs35l32 +snd-soc-cs4265 +snd-soc-cs4270 +snd-soc-cs4271 +snd-soc-cs4271-i2c +snd-soc-cs4271-spi +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-es8328 +snd-soc-fsl-asrc +snd-soc-fsl-esai +snd-soc-fsl-sai +snd-soc-fsl-spdif +snd-soc-fsl-ssi +snd-soc-hdmi-codec +snd-soc-imx-audmux +snd-soc-pcm1681 +snd-soc-pcm1792a-codec +snd-soc-pcm512x +snd-soc-pcm512x-i2c +snd-soc-pcm512x-spi +snd-soc-rt5631 +snd-soc-sgtl5000 +snd-soc-si476x +snd-soc-sigmadsp +snd-soc-sigmadsp-i2c +snd-soc-simple-card +snd-soc-spdif-rx +snd-soc-spdif-tx +snd-soc-ssm2602 +snd-soc-ssm2602-i2c +snd-soc-ssm2602-spi +snd-soc-ssm4567 +snd-soc-sta32x +snd-soc-sta350 +snd-soc-tas2552 +snd-soc-tas5086 +snd-soc-tas571x +snd-soc-tfa9879 +snd-soc-tlv320aic23 +snd-soc-tlv320aic23-i2c +snd-soc-tlv320aic23-spi +snd-soc-tlv320aic31xx +snd-soc-tlv320aic3x +snd-soc-tpa6130a2 +snd-soc-ts3a227e +snd-soc-wm8510 +snd-soc-wm8523 +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-wm8804 +snd-soc-wm8804-i2c +snd-soc-wm8804-spi +snd-soc-wm8903 +snd-soc-wm8962 +snd-soc-wm8978 +snd-soc-xtfpga-i2s +snd-sonicvibes +snd-timer +snd-trident +snd-ua101 +snd-usb-6fire +snd-usb-audio +snd-usb-caiaq +snd-usb-hiface +snd-usb-line6 +snd-usbmidi-lib +snd-usb-pod +snd-usb-podhd +snd-usb-toneport +snd-usb-usx2y +snd-usb-variax +snd-util-mem +snd-via82xx +snd-via82xx-modem +snd-virmidi +snd-virtuoso +snd-vx222 +snd-vx-lib +snd-vxpocket +snd-ymfpci +snic +soc_button_array +soc_camera +soc_camera_platform +soc_mediabus +softdog +softing +softing_cs +solo6x10 +solos-pci +sony-btf-mpx +soundcore +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 +spectrum_cs +speedfax +speedtch +spi-altera +spi-bitbang +spi-butterfly +spi-cadence +spidev +spi-dln2 +spi-dw +spi-dw-midpci +spi-dw-mmio +spi-gpio +spi_ks8995 +spi-lm70llp +spi-nor +spi-oc-tiny +spi-pxa2xx-platform +spi-sc18is602 +spi-tle62x0 +spi-xcomm +spi-zynqmp-gqspi +spmi +spufs +squashfs +sr9700 +sr9800 +ssb +ssb-hcd +ssd1307fb +ssfdc +ssp_accel_sensor +ssp_gyro_sensor +ssp_iio +sst25l +ssu100 +st +st1232 +st21nfca_hci +st21nfca_i2c +st_accel +st_accel_i2c +st_accel_spi +starfire +stb0899 +stb6000 +stb6100 +st_drv +ste10Xp +ste_modem_rproc +stex +st_gyro +st_gyro_i2c +st_gyro_spi +stinger +stir4200 +stk1160 +stk3310 +stk8312 +stk8ba50 +stkwebcam +st_magn +st_magn_i2c +st_magn_spi +stmmac +stmmac-platform +stmpe-keypad +stmpe-ts +st-nci +st-nci_i2c +stowaway +stp +st_pressure +st_pressure_i2c +st_pressure_spi +streamzap +st_sensors +st_sensors_i2c +st_sensors_spi +stv0288 +stv0297 +stv0299 +stv0367 +stv0900 +stv090x +stv6110 +stv6110x +sundance +sungem +sungem_phy +sunhme +suni +sunkbd +sunrpc +sur40 +svgalib +sx8 +sx8654 +sx9500 +sym53c500_cs +sym53c8xx +symbolserial +synaptics_i2c +synaptics_i2c_rmi4 +synaptics_usb +synclink +synclink_cs +synclink_gt +synclinkmp +sysv +t1pci +t5403 +target_core_file +target_core_iblock +target_core_mod +target_core_pscsi +target_core_user +tc3589x-keypad +tc74 +tc90522 +tca6416-keypad +tca8418_keypad +tcm_fc +tcm_loop +tcm_qla2xxx +tcm_usb_gadget +tcp_bic +tcp_cdg +tcp_dctcp +tcp_diag +tcp_highspeed +tcp_htcp +tcp_hybla +tcp_illinois +tcp_lp +tcp_probe +tcp_scalable +tcp_vegas +tcp_veno +tcp_westwood +tcp_yeah +tcrypt +tcs3414 +tcs3472 +tda10021 +tda10023 +tda10048 +tda1004x +tda10071 +tda10086 +tda18212 +tda18218 +tda18271 +tda18271c2dd +tda665x +tda7432 +tda8083 +tda8261 +tda826x +tda827x +tda8290 +tda9840 +tda9887 +tda998x +tdfx +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 +tekram-sir +teles_cs +test_bpf +test_firmware +test-hexdump +test-kstrtox +test_module +test_power +test-string_helpers +test_udelay +test_user_copy +tg3 +tgr192 +thmc50 +thunder_bgx +thunderbolt +ti-adc081c +ti-adc128s052 +ti_am335x_adc +ti_am335x_tsc +ti_am335x_tscadc +ti_dac7512 +tifm_7xx1 +tifm_core +tifm_ms +tifm_sd +timeriomem-rng +tipc +ti_usb_3410_5052 +tlan +tm6000 +tm6000-alsa +tm6000-dvb +tmdc +tmp006 +tmp102 +tmp103 +tmp401 +tmp421 +toim3232-sir +torture +toshsd +touchit213 +touchright +touchwin +tpci200 +tpm_atmel +tpm_i2c_atmel +tpm_i2c_infineon +tpm_i2c_nuvoton +tpm-rng +tpm_st33zp24 +tpm_st33zp24_i2c +tpm_st33zp24_spi +tps40422 +tps51632-regulator +tps6105x +tps6105x-regulator +tps62360-regulator +tps65010 +tps65023-regulator +tps6507x +tps6507x-regulator +tps6507x-ts +tps65090-charger +tps65090-regulator +tps65217 +tps65217_bl +tps65217-regulator +tps65218 +tps65218-pwrbutton +tps65218-regulator +tps6524x-regulator +tps6586x-regulator +tps65910-regulator +tps65912-regulator +tps80031-regulator +trancevibrator +trf7970a +tridentfb +ts2020 +ts_bm +tsc2005 +tsc2007 +tsc40 +ts_fsm +tsi568 +tsi57x +tsi721_mport +ts_kmp +tsl2550 +tsl2563 +tsl2583 +tsl2x7x_core +tsl4531 +ttm +ttpci-eeprom +ttusb_dec +ttusbdecfe +ttusbir +tua6100 +tua9001 +tulip +tuner +tuner-simple +tuner-types +tuner-xc2028 +tunnel4 +tunnel6 +turbografx +tvaudio +tveeprom +tvp5150 +tw2804 +tw68 +tw9903 +tw9906 +tw9910 +twidjoy +twl4030_charger +twl4030_keypad +twl4030-madc +twl4030_madc_battery +twl4030-madc-hwmon +twl4030-pwrbutton +twl4030-vibra +twl4030_wdt +twl6030-gpadc +twl6040-vibra +twl-regulator +twofish_common +twofish_generic +typhoon +u132-hcd +uas +ubi +ubifs +ucb1400_core +ucb1400_ts +ucd9000 +ucd9200 +uda1342 +udc-core +udc-xilinx +udf +udl +udlfb +udp_diag +udp_tunnel +ueagle-atm +u_ether +ufs +ufshcd +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 +uli526x +ulpi +umc +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 +uninorth-agp +unioxx5 +unix_diag +upd64031a +upd64083 +usb3503 +usb_8dev +usb8xxx +usbatm +usb_debug +usbdux +usbduxfast +usbduxsigma +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_uac1 +usb_f_uac2 +usb_f_uvc +usb_gigaset +usbhid +usbip-core +usbip-host +usbkbd +usblcd +usbled +usblp +usbmisc_imx +usbmon +usbmouse +usbnet +usbserial +usb-serial-simple +usbsevseg +usb-storage +usbtest +usbtmc +usbtouchscreen +usbtv +usbvision +usb_wwan +usdhi6rol0 +u_serial +userspace-consumer +ushc +uss720 +uvcvideo +uvesafb +uwb +v4l2-common +v4l2-dv-timings +v4l2-flash-led-class +v4l2-mem2mem +vcan +vcnl4000 +ves1820 +ves1x93 +veth +vf610_adc +vfio +vfio_iommu_spapr_tce +vfio-pci +vfio_spapr_eeh +vfio_virqfd +vga16fb +vgastate +vgem +vgg2432a4 +vhci-hcd +vhost +vhost_net +vhost_scsi +via +via686a +via-ircc +via-rhine +via-sdmmc +via-velocity +videobuf2-core +videobuf2-dma-contig +videobuf2-dma-sg +videobuf2-dvb +videobuf2-memops +videobuf2-vmalloc +videobuf-core +videobuf-dma-sg +videobuf-dvb +videobuf-vmalloc +videodev +vim2m +viperboard +viperboard_adc +virt-dma +virtio-gpu +virtio_input +virtio-rng +virtio_scsi +virtual +visor +vitesse +vivid +vlsi_ir +vmac +vme_pio2 +vme_tsi148 +vme_user +vme_vmivme7805 +vmk80xx +vmwgfx +vmx-crypto +vmxnet3 +vp27smpx +vport-geneve +vport-gre +vport-vxlan +vringh +vsock +vsxxxaa +vt6655_stage +vt6656_stage +vt8231 +vt8623fb +vub300 +vx855 +vxge +vxlan +w1_bq27000 +w1_ds2406 +w1_ds2408 +w1_ds2413 +w1_ds2423 +w1_ds2431 +w1_ds2433 +w1_ds2760 +w1_ds2780 +w1_ds2781 +w1_ds28e04 +w1-gpio +w1_smem +w1_therm +w5100 +w5300 +w6692 +w83781d +w83791d +w83792d +w83793 +w83795 +w83977af_ir +w83l785ts +w83l786ng +wacom +wacom_i2c +wacom_serial4 +wacom_w8001 +walkera0701 +wanxl +warrior +wbsd +wcn36xx +wd719x +wdrtas +wdt87xx_i2c +wdt_pci +whci +whci-hcd +whc-rc +whiteheat +wil6210 +wimax +winbond-840 +windfarm_ad7417_sensor +windfarm_core +windfarm_cpufreq_clamp +windfarm_fcu_controls +windfarm_lm75_sensor +windfarm_lm87_sensor +windfarm_max6690_sensor +windfarm_pid +windfarm_pm112 +windfarm_pm121 +windfarm_pm72 +windfarm_pm81 +windfarm_pm91 +windfarm_rm31 +windfarm_smu_controls +windfarm_smu_sat +windfarm_smu_sensors +wire +wishbone-serial +wl1251 +wl1251_sdio +wl1251_spi +wl1273-core +wl12xx +wl18xx +wl3501_cs +wlcore +wlcore_sdio +wlcore_spi +wm831x_backup +wm831x_bl +wm831x-dcdc +wm831x-hwmon +wm831x-isink +wm831x-ldo +wm831x-on +wm831x_power +wm831x-ts +wm831x_wdt +wm8350-hwmon +wm8350_power +wm8350-regulator +wm8350_wdt +wm8400-regulator +wm8739 +wm8775 +wm8994-core +wm8994-irq +wm8994-regmap +wm8994-regulator +wm97xx-ts +wp512 +wusb-cbaf +wusbcore +wusb-wa +x25 +x25_asy +xc4000 +xc5000 +xcbc +xfrm4_mode_beet +xfrm4_mode_transport +xfrm4_mode_tunnel +xfrm4_tunnel +xfrm6_mode_beet +xfrm6_mode_ro +xfrm6_mode_transport +xfrm6_mode_tunnel +xfrm6_tunnel +xfrm_algo +xfrm_ipcomp +xfrm_user +xfs +xgifb +xhci-plat-hcd +xilinx_ps2 +xilinx-tpg +xilinx_uartps +xilinx-video +xilinx-vtc +xillybus_core +xillybus_of +xillybus_pcie +xirc2ps_cs +xircom_cb +xor +xpad +xsens_mt +x_tables +xt_addrtype +xt_AUDIT +xt_bpf +xt_cgroup +xt_CHECKSUM +xt_CLASSIFY +xt_cluster +xt_comment +xt_connbytes +xt_connlabel +xt_connlimit +xt_connmark +xt_CONNSECMARK +xt_conntrack +xt_cpu +xt_CT +xt_dccp +xt_devgroup +xt_dscp +xt_DSCP +xt_ecn +xt_esp +xt_hashlimit +xt_helper +xt_hl +xt_HL +xt_HMARK +xt_IDLETIMER +xt_ipcomp +xt_iprange +xt_ipvs +xtkbd +xt_l2tp +xt_LED +xt_length +xt_limit +xt_LOG +xt_mac +xt_mark +xt_multiport +xt_nat +xt_NETMAP +xt_nfacct +xt_NFLOG +xt_NFQUEUE +xt_osf +xt_owner +xt_physdev +xt_pkttype +xt_policy +xt_quota +xt_rateest +xt_RATEEST +xt_realm +xt_recent +xt_REDIRECT +xts +xt_sctp +xt_SECMARK +xt_set +xt_socket +xt_state +xt_statistic +xt_string +xt_tcpmss +xt_TCPMSS +xt_TCPOPTSTRIP +xt_tcpudp +xt_TEE +xt_time +xt_TPROXY +xt_TRACE +xt_u32 +xusbatm +xz_dec_test +yam +yealink +yellowfin +yenta_socket +yurex +zaurus +zd1201 +zd1211rw +zforce_ts +zhenhua +zl10036 +zl10039 +zl10353 +zl6100 +zlib +zr364xx +zram --- linux-raspi2-4.2.0.orig/debian.master/abi/4.2.0-26.31/ppc64el/generic +++ linux-raspi2-4.2.0/debian.master/abi/4.2.0-26.31/ppc64el/generic @@ -0,0 +1,18229 @@ +EXPORT_SYMBOL arch/powerpc/platforms/pseries/hvcserver 0x048d27cc hvcs_register_connection +EXPORT_SYMBOL arch/powerpc/platforms/pseries/hvcserver 0x536d329b hvcs_get_partner_info +EXPORT_SYMBOL arch/powerpc/platforms/pseries/hvcserver 0xc39c3704 hvcs_free_partner_info +EXPORT_SYMBOL arch/powerpc/platforms/pseries/hvcserver 0xd0a02396 hvcs_free_connection +EXPORT_SYMBOL crypto/gf128mul 0x0c2f123f gf128mul_4k_bbe +EXPORT_SYMBOL crypto/gf128mul 0x1068004b gf128mul_bbe +EXPORT_SYMBOL crypto/gf128mul 0x2f2889a0 gf128mul_init_64k_lle +EXPORT_SYMBOL crypto/gf128mul 0x3755f990 gf128mul_init_64k_bbe +EXPORT_SYMBOL crypto/gf128mul 0x384ef9ce gf128mul_64k_bbe +EXPORT_SYMBOL crypto/gf128mul 0x56af0dbd gf128mul_x_ble +EXPORT_SYMBOL crypto/gf128mul 0x83581089 gf128mul_init_4k_lle +EXPORT_SYMBOL crypto/gf128mul 0x9b2560b9 gf128mul_init_4k_bbe +EXPORT_SYMBOL crypto/gf128mul 0x9e13f6f6 gf128mul_lle +EXPORT_SYMBOL crypto/gf128mul 0xbd17a0df gf128mul_4k_lle +EXPORT_SYMBOL crypto/gf128mul 0xc0890413 gf128mul_64k_lle +EXPORT_SYMBOL crypto/gf128mul 0xd60736ec gf128mul_free_64k +EXPORT_SYMBOL crypto/mcryptd 0x6310e901 mcryptd_arm_flusher +EXPORT_SYMBOL crypto/xor 0x5b6c00e6 xor_blocks +EXPORT_SYMBOL drivers/atm/suni 0xf2dd15b5 suni_init +EXPORT_SYMBOL drivers/bcma/bcma 0x092129a3 bcma_core_irq +EXPORT_SYMBOL drivers/bcma/bcma 0x6eec596b 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 0x03d63265 paride_unregister +EXPORT_SYMBOL drivers/block/paride/paride 0x0d26e780 pi_do_claimed +EXPORT_SYMBOL drivers/block/paride/paride 0x1aad2678 pi_release +EXPORT_SYMBOL drivers/block/paride/paride 0x3110851c pi_disconnect +EXPORT_SYMBOL drivers/block/paride/paride 0x4267110a pi_register_driver +EXPORT_SYMBOL drivers/block/paride/paride 0x6c243125 paride_register +EXPORT_SYMBOL drivers/block/paride/paride 0x783fdb64 pi_schedule_claimed +EXPORT_SYMBOL drivers/block/paride/paride 0x88a550fa pi_read_block +EXPORT_SYMBOL drivers/block/paride/paride 0x92fe1fbe pi_connect +EXPORT_SYMBOL drivers/block/paride/paride 0x9f74b530 pi_read_regr +EXPORT_SYMBOL drivers/block/paride/paride 0xac277ee7 pi_init +EXPORT_SYMBOL drivers/block/paride/paride 0xb21ba07d pi_unregister_driver +EXPORT_SYMBOL drivers/block/paride/paride 0xc950ed4d pi_write_block +EXPORT_SYMBOL drivers/block/paride/paride 0xfb328999 pi_write_regr +EXPORT_SYMBOL drivers/bluetooth/btbcm 0x65a9a75e btbcm_patchram +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x00b7ebfc ipmi_register_smi +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x1348760d ipmi_request_settime +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x16dcec76 ipmi_set_my_address +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x1a10c898 ipmi_set_maintenance_mode +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x1aba5db8 ipmi_unregister_smi +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x1fae3bac ipmi_addr_src_to_str +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x40f2b10c ipmi_alloc_smi_msg +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x423b776a ipmi_create_user +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x4c971bec ipmi_smi_msg_received +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x524f6f51 ipmi_get_my_address +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x5e80f37c ipmi_unregister_for_cmd +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x5fcdcc05 ipmi_get_my_LUN +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x67cb9784 ipmi_poll_interface +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x78fd36e7 ipmi_request_supply_msgs +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x804f922a ipmi_addr_length +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x87067a10 ipmi_smi_add_proc_entry +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x872da742 ipmi_smi_watcher_unregister +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x8c8ee770 ipmi_destroy_user +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x96cbcc81 ipmi_get_version +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xa2a98b91 ipmi_get_maintenance_mode +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xb75ac7bc ipmi_get_smi_info +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xd5b13f34 ipmi_smi_watcher_register +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xd69f8567 ipmi_set_gets_events +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xe0fa83f2 ipmi_register_for_cmd +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xe4f4665b ipmi_validate_addr +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xe6ab72a6 ipmi_set_my_LUN +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xf2576cb9 ipmi_smi_watchdog_pretimeout +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xfcb77cfd ipmi_free_recv_msg +EXPORT_SYMBOL drivers/char/tpm/st33zp24/tpm_st33zp24 0x043e3e0c st33zp24_probe +EXPORT_SYMBOL drivers/char/tpm/st33zp24/tpm_st33zp24 0x0b656d08 st33zp24_remove +EXPORT_SYMBOL drivers/char/tpm/st33zp24/tpm_st33zp24 0x30dd9d89 st33zp24_pm_suspend +EXPORT_SYMBOL drivers/char/tpm/st33zp24/tpm_st33zp24 0x61e7244b st33zp24_pm_resume +EXPORT_SYMBOL drivers/char/xillybus/xillybus_core 0x25978d50 xillybus_isr +EXPORT_SYMBOL drivers/char/xillybus/xillybus_core 0x29a74abd xillybus_init_endpoint +EXPORT_SYMBOL drivers/char/xillybus/xillybus_core 0x30a5086f xillybus_endpoint_discovery +EXPORT_SYMBOL drivers/char/xillybus/xillybus_core 0x983d9b1e xillybus_endpoint_remove +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0x288110d2 dw_dma_cyclic_prep +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0x605ba2c6 dw_dma_get_dst_addr +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0x89e29284 dw_dma_cyclic_start +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0x8d8579f6 dw_dma_cyclic_stop +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0x8f03aa73 dw_dma_cyclic_free +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0xe1e5ae46 dw_dma_get_src_addr +EXPORT_SYMBOL drivers/edac/edac_core 0xde9ccaea edac_mc_find +EXPORT_SYMBOL drivers/firewire/firewire-core 0x033f6607 fw_core_add_address_handler +EXPORT_SYMBOL drivers/firewire/firewire-core 0x04d0f641 fw_core_remove_descriptor +EXPORT_SYMBOL drivers/firewire/firewire-core 0x08dbeb2d fw_bus_type +EXPORT_SYMBOL drivers/firewire/firewire-core 0x0ac64745 fw_core_handle_bus_reset +EXPORT_SYMBOL drivers/firewire/firewire-core 0x0f7d6af8 fw_csr_string +EXPORT_SYMBOL drivers/firewire/firewire-core 0x14240183 fw_schedule_bus_reset +EXPORT_SYMBOL drivers/firewire/firewire-core 0x16aae0f8 fw_iso_context_create +EXPORT_SYMBOL drivers/firewire/firewire-core 0x16e91e21 fw_csr_iterator_next +EXPORT_SYMBOL drivers/firewire/firewire-core 0x18478c42 fw_core_handle_request +EXPORT_SYMBOL drivers/firewire/firewire-core 0x1bcbeb41 fw_iso_buffer_destroy +EXPORT_SYMBOL drivers/firewire/firewire-core 0x1c7adeff fw_core_remove_address_handler +EXPORT_SYMBOL drivers/firewire/firewire-core 0x2885fec5 fw_get_request_speed +EXPORT_SYMBOL drivers/firewire/firewire-core 0x28e27591 fw_iso_resource_manage +EXPORT_SYMBOL drivers/firewire/firewire-core 0x2ab6def1 fw_send_response +EXPORT_SYMBOL drivers/firewire/firewire-core 0x35301d74 fw_fill_response +EXPORT_SYMBOL drivers/firewire/firewire-core 0x37da7b69 fw_iso_context_start +EXPORT_SYMBOL drivers/firewire/firewire-core 0x3c56ef91 fw_workqueue +EXPORT_SYMBOL drivers/firewire/firewire-core 0x40728ae5 fw_card_initialize +EXPORT_SYMBOL drivers/firewire/firewire-core 0x491a13cc fw_iso_buffer_init +EXPORT_SYMBOL drivers/firewire/firewire-core 0x4a4a7317 fw_card_add +EXPORT_SYMBOL drivers/firewire/firewire-core 0x54fa4fad fw_iso_context_destroy +EXPORT_SYMBOL drivers/firewire/firewire-core 0x5a165f32 fw_iso_context_flush_completions +EXPORT_SYMBOL drivers/firewire/firewire-core 0x645b715f fw_core_add_descriptor +EXPORT_SYMBOL drivers/firewire/firewire-core 0x65c9438b fw_csr_iterator_init +EXPORT_SYMBOL drivers/firewire/firewire-core 0x771b8e2b fw_device_enable_phys_dma +EXPORT_SYMBOL drivers/firewire/firewire-core 0x86468d44 fw_rcode_string +EXPORT_SYMBOL drivers/firewire/firewire-core 0x90863005 fw_high_memory_region +EXPORT_SYMBOL drivers/firewire/firewire-core 0x94cd3886 fw_core_handle_response +EXPORT_SYMBOL drivers/firewire/firewire-core 0x9f117033 fw_iso_context_stop +EXPORT_SYMBOL drivers/firewire/firewire-core 0xab1b439e fw_iso_context_queue +EXPORT_SYMBOL drivers/firewire/firewire-core 0xc0abaddb fw_core_remove_card +EXPORT_SYMBOL drivers/firewire/firewire-core 0xe7834ab0 fw_cancel_transaction +EXPORT_SYMBOL drivers/firewire/firewire-core 0xe9b33043 fw_run_transaction +EXPORT_SYMBOL drivers/firewire/firewire-core 0xee0a39c1 fw_send_request +EXPORT_SYMBOL drivers/firewire/firewire-core 0xfed07539 fw_iso_context_queue_flush +EXPORT_SYMBOL drivers/fmc/fmc 0x27d9f00b fmc_driver_unregister +EXPORT_SYMBOL drivers/fmc/fmc 0x2ce152a2 fmc_device_register +EXPORT_SYMBOL drivers/fmc/fmc 0x2e78cf5c fmc_scan_sdb_tree +EXPORT_SYMBOL drivers/fmc/fmc 0x37216774 fmc_driver_register +EXPORT_SYMBOL drivers/fmc/fmc 0x6a25e9ce fmc_device_unregister_n +EXPORT_SYMBOL drivers/fmc/fmc 0x6e31ea8b fmc_reprogram +EXPORT_SYMBOL drivers/fmc/fmc 0x7ecfdfc6 fmc_free_sdb_tree +EXPORT_SYMBOL drivers/fmc/fmc 0x8310b4b8 fmc_show_sdb_tree +EXPORT_SYMBOL drivers/fmc/fmc 0xa5c6dfc5 fmc_device_register_n +EXPORT_SYMBOL drivers/fmc/fmc 0xd6d5887f fmc_find_sdb_device +EXPORT_SYMBOL drivers/fmc/fmc 0xf3f47d51 fmc_device_unregister +EXPORT_SYMBOL drivers/gpu/drm/drm 0x01860136 drm_vblank_post_modeset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0261d08d drm_modeset_lock_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x029d14ff drm_wait_one_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0x041e7277 drm_gtf_mode_complex +EXPORT_SYMBOL drivers/gpu/drm/drm 0x069bba03 drm_property_create_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0x07a31c68 drm_i2c_encoder_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x08497f62 drm_dev_set_unique +EXPORT_SYMBOL drivers/gpu/drm/drm 0x09df98c8 drm_universal_plane_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0a72f765 drm_clflush_virt_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0ae4b94c drm_ht_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0b7f33e4 drm_crtc_send_vblank_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0bf69972 drm_agp_unbind +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0d37a8a8 drm_of_find_possible_crtcs +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0e8d6574 drm_debugfs_remove_files +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0e9e24ac drm_calc_vbltimestamp_from_scanoutpos +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 0x11b1d01f drm_i2c_encoder_mode_fixup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x122f216e drm_i2c_encoder_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x125df4a5 drm_property_create_object +EXPORT_SYMBOL drivers/gpu/drm/drm 0x13d0162b drm_crtc_get_hv_timing +EXPORT_SYMBOL drivers/gpu/drm/drm 0x14a9a178 drm_get_format_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x14b94d62 drm_crtc_init_with_planes +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1532327a drm_crtc_vblank_off +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1534f729 drm_hdmi_vendor_infoframe_from_display_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x169ba7dc drm_av_sync_delay +EXPORT_SYMBOL drivers/gpu/drm/drm 0x176308e2 drm_vma_node_revoke +EXPORT_SYMBOL drivers/gpu/drm/drm 0x17f61d15 drm_framebuffer_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x186c2fa2 drm_gem_handle_delete +EXPORT_SYMBOL drivers/gpu/drm/drm 0x187cb35a of_drm_find_panel +EXPORT_SYMBOL drivers/gpu/drm/drm 0x194eadaa drm_edid_header_is_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x199c7962 drm_warn_on_modeset_not_all_locked +EXPORT_SYMBOL drivers/gpu/drm/drm 0x19e4430f drm_flip_work_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1a1018c9 drm_i2c_encoder_prepare +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1a4af73a drm_encoder_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1a546ddd drm_mm_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1a770ac3 drm_detect_hdmi_monitor +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1b79364b drm_mode_group_init_legacy_group +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1bd3cbd6 drm_flip_work_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1c38aeb7 drm_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1da8d8f8 drm_atomic_set_fb_for_plane +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1dd71f7a drm_err +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1de4f7a1 drm_match_cea_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1eba4846 drm_atomic_get_plane_state +EXPORT_SYMBOL drivers/gpu/drm/drm 0x20645642 drm_debug +EXPORT_SYMBOL drivers/gpu/drm/drm 0x217a517b drm_crtc_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x22811384 drm_atomic_add_affected_connectors +EXPORT_SYMBOL drivers/gpu/drm/drm 0x22acaf62 drm_get_cea_aspect_ratio +EXPORT_SYMBOL drivers/gpu/drm/drm 0x232fe047 drm_property_lookup_blob +EXPORT_SYMBOL drivers/gpu/drm/drm 0x23a5fdd1 drm_property_create_bitmask +EXPORT_SYMBOL drivers/gpu/drm/drm 0x249d5c9a drm_property_unreference_blob +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2527475a drm_atomic_state_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x273771aa drm_mode_object_find +EXPORT_SYMBOL drivers/gpu/drm/drm 0x27aaf830 drm_panel_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0x27cdb16e drm_legacy_addmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2823b161 drm_legacy_mmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x28b6b548 drm_mode_equal_no_clocks_no_stereo +EXPORT_SYMBOL drivers/gpu/drm/drm 0x28cadd2d drm_calc_timestamping_constants +EXPORT_SYMBOL drivers/gpu/drm/drm 0x28f5fb26 drm_atomic_add_affected_planes +EXPORT_SYMBOL drivers/gpu/drm/drm 0x29a010e6 drm_mm_insert_node_in_range_generic +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2c601f45 drm_atomic_check_only +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2d50570f drm_rect_calc_hscale +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2d5e172b drm_connector_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2e7a4300 drm_rgb_quant_range_selectable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2effe991 drm_crtc_vblank_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2f79baea drm_mode_find_dmt +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2f7f59b2 drm_mode_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3081e8ca drm_mode_prune_invalid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x30ed4ce5 drm_gem_dmabuf_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3106f083 drm_crtc_check_viewport +EXPORT_SYMBOL drivers/gpu/drm/drm 0x310f69b5 drm_mm_dump_table +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3159b7e3 drm_noop +EXPORT_SYMBOL drivers/gpu/drm/drm 0x31a345a2 drm_panel_detach +EXPORT_SYMBOL drivers/gpu/drm/drm 0x323cbf37 drm_gem_mmap_obj +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3293d5d0 drm_property_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3358821c drm_framebuffer_reference +EXPORT_SYMBOL drivers/gpu/drm/drm 0x34dc45c7 drm_object_attach_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x353d5a82 drm_panel_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x36686eb0 drm_mode_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x37b11f27 drm_mode_connector_attach_encoder +EXPORT_SYMBOL drivers/gpu/drm/drm 0x37ebe743 drm_mm_replace_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0x38786f36 drm_plane_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x38a4f7ae drm_format_num_planes +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3920d4cf drm_dev_unref +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3ac1fef9 drm_mode_legacy_fb_format +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3b97c01b drm_modeset_unlock_all +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3b9d009a drm_format_plane_cpp +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3bacccbf drm_mode_parse_command_line_for_connector +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3c219912 drm_gem_private_object_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3d13d3c9 drm_mode_debug_printmodeline +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3dad07c2 drm_mode_copy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3dc3c1c2 drm_modeset_lock_interruptible +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3e9ffeb5 drm_sysfs_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3eb37b9d drm_ht_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3eecdd1b drm_gem_handle_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3ef9126b drm_atomic_connectors_for_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x40e9e49c drm_vblank_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4157b155 drm_atomic_set_crtc_for_plane +EXPORT_SYMBOL drivers/gpu/drm/drm 0x418ec637 drm_object_property_set_value +EXPORT_SYMBOL drivers/gpu/drm/drm 0x42584f43 drm_read +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4311e683 drm_mode_hsync +EXPORT_SYMBOL drivers/gpu/drm/drm 0x435804b1 drm_legacy_ioremapfree +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4599cf61 drm_mode_vrefresh +EXPORT_SYMBOL drivers/gpu/drm/drm 0x46371dc7 drm_i2c_encoder_dpms +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4644cc65 drm_legacy_addbufs_pci +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4671344f drm_flip_work_queue_task +EXPORT_SYMBOL drivers/gpu/drm/drm 0x46f4740c drm_mode_get_tile_group +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4835657b drm_modeset_drop_locks +EXPORT_SYMBOL drivers/gpu/drm/drm 0x48e426c9 drm_agp_bind_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0x490cfb78 drm_mm_reserve_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0x499aa141 drm_mode_set_config_internal +EXPORT_SYMBOL drivers/gpu/drm/drm 0x49a591f7 drm_gem_prime_import +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4aaf9887 drm_crtc_vblank_reset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4ad65f49 drm_mode_create_tile_group +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4c100ee9 drm_vblank_off +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4c511235 drm_edid_is_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4d3f4c47 drm_vblank_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4dc23deb drm_agp_enable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4ea1f5a2 drm_gem_object_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4fba9ee6 drm_gem_object_lookup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4fd4d700 drm_prime_pages_to_sg +EXPORT_SYMBOL drivers/gpu/drm/drm 0x50289380 drm_vblank_count_and_time +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5083396e drm_agp_acquire +EXPORT_SYMBOL drivers/gpu/drm/drm 0x50e28c07 drm_edid_to_sad +EXPORT_SYMBOL drivers/gpu/drm/drm 0x516a65ed drm_gem_vm_open +EXPORT_SYMBOL drivers/gpu/drm/drm 0x51db353a drm_vma_offset_manager_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x525072ed drm_mode_create_from_cmdline_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x526f6f71 drm_rect_calc_hscale_relaxed +EXPORT_SYMBOL drivers/gpu/drm/drm 0x52c574b2 drm_pcie_get_speed_cap_mask +EXPORT_SYMBOL drivers/gpu/drm/drm 0x52f6a2fa drm_crtc_vblank_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5464cc19 drm_bridge_post_disable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x54abe641 drm_mode_crtc_set_gamma_size +EXPORT_SYMBOL drivers/gpu/drm/drm 0x55e94eda drm_plane_from_index +EXPORT_SYMBOL drivers/gpu/drm/drm 0x56df3fe6 drm_mode_connector_update_edid_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x570974c3 drm_plane_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x57b6efe3 drm_ioctl_flags +EXPORT_SYMBOL drivers/gpu/drm/drm 0x583a0b1f drm_send_vblank_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0x58585ed0 drm_modeset_backoff +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5904f273 drm_modeset_lock +EXPORT_SYMBOL drivers/gpu/drm/drm 0x59e0833e drm_legacy_rmmap_locked +EXPORT_SYMBOL drivers/gpu/drm/drm 0x59ef50f0 drm_edid_block_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5b99d002 drm_vblank_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5bab5431 drm_gem_mmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5be50fe5 drm_i2c_encoder_mode_set +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5c879402 drm_gem_prime_export +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5d7318dc drm_global_item_ref +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5ea4d48f drm_framebuffer_unregister_private +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5ed8ebad drm_crtc_vblank_count +EXPORT_SYMBOL drivers/gpu/drm/drm 0x60ad7c0a drm_framebuffer_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x60d03245 drm_property_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6108f7f9 drm_gem_dumb_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6150fccb drm_bridge_enable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x61807a41 drm_clflush_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0x61da83c8 drm_unplug_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0x629c05e1 drm_clflush_sg +EXPORT_SYMBOL drivers/gpu/drm/drm 0x638f0e86 drm_crtc_wait_one_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0x644b471a drm_pci_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x64d120ab drm_mode_validate_basic +EXPORT_SYMBOL drivers/gpu/drm/drm 0x661e89dc drm_connector_unregister +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6651e9fc drm_mode_create_rotation_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x665df2f1 drm_handle_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0x66cf255d drm_connector_index +EXPORT_SYMBOL drivers/gpu/drm/drm 0x67633846 drm_mm_insert_node_generic +EXPORT_SYMBOL drivers/gpu/drm/drm 0x68ed607c drm_flip_work_queue +EXPORT_SYMBOL drivers/gpu/drm/drm 0x68ffb411 drm_bridge_pre_enable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6900d335 drm_rect_clip_scaled +EXPORT_SYMBOL drivers/gpu/drm/drm 0x692296c8 drm_property_create_enum +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6a47296a drm_encoder_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6acf430b drm_mode_validate_size +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6cf2ff57 drm_mode_connector_list_update +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6d2652fc drm_atomic_state_default_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6e30ba8e drm_rect_rotate_inv +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6ef80c9a drm_agp_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6f7d8644 drm_atomic_state_default_clear +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7002f87d drm_mode_create_aspect_ratio_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x704bf914 drm_flip_work_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x706a1468 drm_gem_object_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x72a2053d drm_master_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7318315e drm_vma_offset_lookup_locked +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7340ae85 drm_vblank_count +EXPORT_SYMBOL drivers/gpu/drm/drm 0x73aff891 drm_mode_equal +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7732e66f drm_modeset_unlock +EXPORT_SYMBOL drivers/gpu/drm/drm 0x77e9c648 drm_modeset_legacy_acquire_ctx +EXPORT_SYMBOL drivers/gpu/drm/drm 0x78eedc8c drm_crtc_index +EXPORT_SYMBOL drivers/gpu/drm/drm 0x79e9a677 drm_panel_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7b8063bf drm_dev_ref +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7cf8e8bb drm_vblank_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7dcb46f3 drm_plane_index +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7f0b472d drm_gem_free_mmap_offset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7f9a2417 drm_connector_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7ff66797 drm_irq_uninstall +EXPORT_SYMBOL drivers/gpu/drm/drm 0x80797523 drm_hdmi_avi_infoframe_from_display_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x810aa37c drm_add_edid_modes +EXPORT_SYMBOL drivers/gpu/drm/drm 0x81ab9ae4 drm_poll +EXPORT_SYMBOL drivers/gpu/drm/drm 0x82ae93f6 drm_select_eld +EXPORT_SYMBOL drivers/gpu/drm/drm 0x82c2998f drm_flip_work_allocate_task +EXPORT_SYMBOL drivers/gpu/drm/drm 0x836cea3a drm_property_create_signed_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0x837c85bb drm_vma_offset_manager_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x850515f3 drm_mode_create_suggested_offset_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0x857cd15b drm_panel_attach +EXPORT_SYMBOL drivers/gpu/drm/drm 0x86093e6b drm_atomic_set_mode_prop_for_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x86691cc2 drm_atomic_plane_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x86bf72ef drm_vblank_on +EXPORT_SYMBOL drivers/gpu/drm/drm 0x87089bb0 drm_ati_pcigart_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x871ab41a drm_rect_intersect +EXPORT_SYMBOL drivers/gpu/drm/drm 0x87769629 drm_vma_node_allow +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8a85a0aa drm_mode_create_dvi_i_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8d3858f7 drm_agp_bind +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8d4c4b1e drm_mode_config_reset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8de13715 drm_format_vert_chroma_subsampling +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8ef6e9fd drm_debugfs_create_files +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8eff9111 drm_ht_find_item +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8f11844b drm_agp_info +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8f8ebbcf drm_gem_create_mmap_offset_size +EXPORT_SYMBOL drivers/gpu/drm/drm 0x90f97082 drm_put_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0x91fec1cc drm_rect_calc_vscale +EXPORT_SYMBOL drivers/gpu/drm/drm 0x92408488 drm_mm_scan_add_block +EXPORT_SYMBOL drivers/gpu/drm/drm 0x925c8a11 drm_bridge_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x956df886 drm_open +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9582897c drm_property_create_bool +EXPORT_SYMBOL drivers/gpu/drm/drm 0x959f019a drm_i2c_encoder_detect +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9602f119 drm_modeset_unlock_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x98bff4e4 drm_connector_register +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9972db48 drm_rect_calc_vscale_relaxed +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9da453b9 drm_pci_exit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9db00424 drm_gem_create_mmap_offset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9ec1c033 drm_gem_prime_handle_to_fd +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9f795732 drm_connector_unplug_all +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa0b5d4e1 drm_legacy_idlelock_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa13fbd53 drm_dev_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa1778ce8 drm_gtf_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa1c9c5da drm_display_info_set_bus_formats +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa22ac20b drm_dev_unregister +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa28078b2 drm_edid_duplicate +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa2ea024a drm_atomic_async_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa4466414 drm_mm_remove_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa7d8db5a drm_cvt_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa9276754 drm_property_add_enum +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa96acfcb drm_rect_debug_print +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa9cf605d drm_platform_set_busid +EXPORT_SYMBOL drivers/gpu/drm/drm 0xaad660d3 drm_property_reference_blob +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb053adda drm_rect_rotate +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb05bf8b4 drm_mode_set_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb15272ea drm_ati_pcigart_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb197607d drm_bridge_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb29f90e0 drm_legacy_getsarea +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb42a3e2c drm_compat_ioctl +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb4881040 drm_atomic_get_connector_state +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb5540008 drm_global_item_unref +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb68d3a9f drm_mode_probed_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb6d7b6fb drm_get_pci_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbb54c190 drm_modeset_lock_all +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbbd0fb50 drm_add_modes_noedid +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbc73daa6 drm_legacy_ioremap_wc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc0bf96d3 drm_mode_duplicate +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc10c832c drm_gem_vm_close +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc1119cc8 drm_modeset_lock_all_crtcs +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc1d4dc8c drm_plane_force_disable +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc33b7e17 drm_edid_to_eld +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc360e7e2 drm_ut_debug_printk +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc38ca46d drm_vblank_pre_modeset +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc4157bdf drm_crtc_vblank_on +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc4929c51 drm_crtc_handle_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc642d951 drm_atomic_get_crtc_state +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc6eccce1 drm_atomic_state_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc8616eee drm_prime_sg_to_page_addr_arrays +EXPORT_SYMBOL drivers/gpu/drm/drm 0xca45efbc drm_format_horz_chroma_subsampling +EXPORT_SYMBOL drivers/gpu/drm/drm 0xca5c7790 drm_mm_init_scan_with_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0xca94ec4f drm_gem_prime_fd_to_handle +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcac22e7e drm_vma_offset_lookup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcb6a0f22 drm_platform_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcd0fc417 drm_ht_just_insert_please +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcd1366e0 drm_mode_config_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xce1eab4d drm_mode_plane_set_obj_prop +EXPORT_SYMBOL drivers/gpu/drm/drm 0xce2e83de drm_object_property_get_value +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcefdfb2a drm_mode_create_dirty_info_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd04e9558 drm_mode_connector_set_tile_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd1df28d0 drm_vma_node_is_allowed +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd2335101 drm_fb_get_bpp_depth +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd29d1db2 drm_mode_connector_set_path_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd2e73570 drm_bridge_disable +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd3a7a35c drm_mode_config_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd52b1d11 drm_mm_init_scan +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd5d02cc2 drm_bridge_mode_set +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd6a8f8c4 drm_legacy_ioremap +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd70c8470 drm_mm_debug_table +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd7d94908 drm_reinit_primary_mode_group +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd99cd486 drm_mode_set_crtcinfo +EXPORT_SYMBOL drivers/gpu/drm/drm 0xda7223e3 drm_property_create_blob +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdb5ab14a __drm_modeset_lock_all +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdbb5a9f5 drm_ht_remove_item +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdd150721 drm_mm_takedown +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdd8c2d0f drm_agp_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0xded7d9d7 drm_irq_install +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdf666902 drm_rotation_simplify +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe1174aed drm_framebuffer_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe1f92c34 drm_master_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe2ffd7a5 drm_vma_offset_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe313e972 of_drm_find_bridge +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe4812314 drm_atomic_state_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe51d89b5 drm_mm_clean +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe625d594 drm_legacy_addbufs_agp +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe65ac04a drm_get_edid +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe681e637 drm_framebuffer_unreference +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe7197773 drm_ht_insert_item +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe7c85c6c drm_atomic_crtc_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe7eba255 drm_atomic_connector_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe8755c15 drm_pci_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe8ae9155 drm_set_preferred_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe8dc3775 drm_modeset_acquire_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe9334641 drm_gem_get_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe98350e2 drm_probe_ddc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xea14a80f drm_modeset_backoff_interruptible +EXPORT_SYMBOL drivers/gpu/drm/drm 0xea2535f6 drm_framebuffer_lookup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xead4ab7f drm_gem_put_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0xec03bd5d drm_pci_set_busid +EXPORT_SYMBOL drivers/gpu/drm/drm 0xec6d43c5 drm_pci_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xed66df82 drm_atomic_legacy_backoff +EXPORT_SYMBOL drivers/gpu/drm/drm 0xeeabffa6 drm_i2c_encoder_restore +EXPORT_SYMBOL drivers/gpu/drm/drm 0xefe2e433 drm_atomic_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf01e40e1 drm_i2c_encoder_save +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf0a36f9c drm_mode_create_scaling_mode_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf1421d13 drm_mode_sort +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf1b098be drm_vma_offset_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf1f20cbd drm_atomic_set_mode_for_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf204218a drm_agp_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf35eaa13 drm_bridge_attach +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf483a791 drm_legacy_rmmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf6299c1c drm_legacy_idlelock_take +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf629da5c drm_modeset_acquire_fini +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf643344c drm_atomic_set_crtc_for_connector +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf65cace7 drm_i2c_encoder_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf9000884 drm_dev_register +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf9197746 drm_ioctl +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfb1726fa drm_mode_create_tv_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfb514057 drm_gem_object_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfbf928bf drm_atomic_state_clear +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfcf54a4f drm_mm_scan_remove_block +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfd063935 drm_edid_to_speaker_allocation +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfeb1c6f2 drm_prime_gem_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0xffc25edf drm_bridge_mode_fixup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xffc6c87a drm_detect_monitor_audio +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x006ec8e4 drm_pick_cmdline_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x00ac1a60 drm_dp_update_payload_part2 +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x06066bd3 drm_helper_crtc_in_use +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x098e47d2 drm_dp_link_train_clock_recovery_delay +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0e7e018c drm_atomic_helper_set_config +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0f15d639 drm_dp_mst_dump_topology +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0f96ec70 drm_dp_clock_recovery_ok +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x10e606dd drm_fb_helper_single_add_all_connectors +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x1141dc7c drm_atomic_helper_crtc_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x11f5bdad __drm_atomic_helper_crtc_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x163251c8 drm_dp_link_train_channel_eq_delay +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x198d495d drm_fb_helper_blank +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x1ae126bb drm_atomic_helper_prepare_planes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x1b3d037f drm_fb_helper_set_par +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x20bc8bf5 __drm_atomic_helper_connector_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x21a1ce0f drm_atomic_helper_page_flip +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x23779194 drm_kms_helper_poll_disable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2844e48b drm_crtc_helper_set_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x28482ee9 drm_atomic_helper_plane_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x28b4c302 drm_dp_find_vcpi_slots +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x29c45e37 drm_primary_helper_update +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2c27d6d6 drm_helper_crtc_mode_set_base +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2c527e4d drm_fb_helper_fini +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2d672d2e drm_dp_link_configure +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2ee606ab drm_fb_helper_initial_config +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x33ca221f drm_helper_hpd_irq_event +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x33cea4a3 drm_fb_helper_debug_leave +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x34871adf drm_dp_channel_eq_ok +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3857cc99 drm_has_preferred_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x388f8f8f drm_atomic_helper_plane_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x39a1c1b5 drm_plane_helper_disable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x39e67694 drm_crtc_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3cda821c drm_helper_encoder_in_use +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3f513f97 drm_fb_helper_fill_fix +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3fe8282a drm_helper_probe_single_connector_modes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x42bf3f79 drm_dp_mst_topology_mgr_set_mst +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x449cc482 drm_dp_mst_allocate_vcpi +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x45806100 drm_primary_helper_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x465528cb drm_fb_helper_debug_enter +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x499ab933 drm_plane_helper_update +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4ebf29bd drm_dp_dpcd_read_link_status +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4f18514c drm_atomic_helper_cleanup_planes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x51166f7d drm_fb_helper_pan_display +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x53bf0e9f drm_atomic_helper_commit_planes_on_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x54b5d012 drm_atomic_helper_check_planes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5a59635b drm_fb_helper_prepare +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x62f76fb7 __drm_atomic_helper_plane_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x63b553e2 drm_atomic_helper_swap_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x63bdf2bc drm_kms_helper_poll_enable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x65b3694f drm_dp_update_payload_part1 +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x68d7d63a drm_atomic_helper_commit_planes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6aadb6d5 drm_atomic_helper_wait_for_vblanks +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x711a004a drm_dp_link_rate_to_bw_code +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x71495098 drm_fb_helper_remove_one_connector +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x73e92286 drm_dp_aux_register +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x752cba13 drm_helper_connector_dpms +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x752ec1e1 drm_atomic_helper_connector_dpms +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x77a1b4f9 drm_atomic_helper_check_modeset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x784fbf4d drm_helper_mode_fill_fb_struct +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7d1f3a3e drm_dp_mst_topology_mgr_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7fa89607 drm_fb_helper_restore_fbdev_mode_unlocked +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x81b17052 drm_kms_helper_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x84642471 drm_dp_mst_deallocate_vcpi +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x84e23802 drm_atomic_helper_crtc_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x84e924ba drm_dp_get_adjust_request_pre_emphasis +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x852ed987 drm_atomic_helper_connector_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x86522a65 drm_fb_helper_fill_var +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8711c8ee drm_fb_helper_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8891649e drm_dp_dpcd_write +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x899d7164 drm_dp_link_power_up +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8a199948 drm_dp_mst_detect_port +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8cff54f4 drm_dp_dpcd_read +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8e9fd892 drm_helper_crtc_mode_set +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x90aa5899 __drm_atomic_helper_crtc_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x90e480dc drm_atomic_helper_commit_modeset_enables +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x912d4096 drm_atomic_helper_update_legacy_modeset_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x923ffb3b drm_dp_mst_reset_vcpi_slots +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x93dacff0 drm_atomic_helper_update_plane +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x944b2597 drm_dp_mst_get_vcpi_slots +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x956569c6 drm_dp_mst_topology_mgr_suspend +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x95b966e5 drm_kms_helper_poll_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9a995d88 drm_dp_mst_get_edid +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9de8c786 drm_dp_link_power_down +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa1ddc2d7 __drm_atomic_helper_plane_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa365d188 drm_atomic_helper_connector_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa47826e4 drm_dp_calc_pbn_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa686463c drm_atomic_helper_crtc_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa696b439 drm_plane_helper_check_update +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa718166d drm_fb_helper_check_var +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa77858bb drm_dp_get_adjust_request_voltage +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa8d6809d drm_dp_bw_code_to_link_rate +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xaa0a934c drm_primary_helper_funcs +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xad49e37e drm_dp_check_act_status +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb2d21e1d drm_helper_move_panel_connectors_to_head +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb7c31344 drm_crtc_helper_set_config +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xbc27dbcc drm_dp_mst_topology_mgr_resume +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xbf6564d2 drm_primary_helper_disable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xbfef3289 drm_dp_link_probe +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc5130524 drm_fb_helper_add_one_connector +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc636815b drm_atomic_helper_disable_plane +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc74d8f7f drm_helper_resume_force_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc89ddc4a drm_atomic_helper_commit +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd0ba5918 drm_atomic_helper_plane_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd34f0c97 drm_atomic_helper_commit_modeset_disables +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd62d013f drm_dp_mst_hpd_irq +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd8a82b18 drm_atomic_helper_plane_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd9533c7a drm_helper_probe_single_connector_modes_nomerge +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xdb1cf671 drm_kms_helper_poll_fini +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xdd64ce81 drm_atomic_helper_crtc_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe2427cbb drm_dp_mst_topology_mgr_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe4043c6a drm_atomic_helper_connector_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe418dfc8 drm_fb_helper_setcmap +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe7d745c8 drm_atomic_helper_connector_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe7dcfc93 drm_dp_aux_unregister +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe89c0761 drm_atomic_helper_check +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xead30307 __drm_atomic_helper_connector_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xebfc687f drm_fb_helper_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xfc0c1eb3 drm_helper_disable_unused_functions +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x016dbd08 ttm_mem_io_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x0f238c94 ttm_bo_move_accel_cleanup +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x2b54aa9a ttm_object_file_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x2bf8c446 ttm_bo_evict_mm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x305c528f ttm_tt_bind +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x3519abfd ttm_eu_reserve_buffers +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x36abd43f ttm_agp_tt_unpopulate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x372c1d6b ttm_bo_mem_put +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x42ce345b ttm_mem_global_alloc +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x42d0bb99 ttm_pool_unpopulate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x43d100a7 ttm_agp_tt_populate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x485a5bc0 ttm_ref_object_add +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x4ca0e50d ttm_eu_backoff_reservation +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x4e8dd264 ttm_bo_global_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x51907657 ttm_bo_dma_acc_size +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x564e1aee ttm_bo_global_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x5a8fdfea ttm_vt_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x5d1be5fc ttm_pool_populate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x6052860c ttm_round_pot +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x657cd3b1 ttm_bo_device_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x661be4e8 ttm_bo_lock_delayed_workqueue +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x66f67839 ttm_tt_fini +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x682eb532 ttm_dma_tt_fini +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x6af86571 ttm_eu_fence_buffer_objects +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x7949359e ttm_bo_mmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x7a87a380 ttm_bo_kmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x7d55da85 ttm_read_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x7da23d29 ttm_bo_move_memcpy +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x8054beb5 ttm_page_alloc_debugfs +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x80d86f0e ttm_object_device_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x816a75db ttm_bo_device_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x84a13931 ttm_write_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x85eaa403 ttm_bo_clean_mm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x880a15ad ttm_base_object_lookup +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x888a23a5 ttm_bo_kunmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x89a443de ttm_write_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x8a7fb772 ttm_tt_set_placement_caching +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x8d14adbf ttm_io_prot +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x90ae0089 ttm_bo_acc_size +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x91ea7f25 ttm_dma_tt_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x94894449 ttm_base_object_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x97b4f233 ttm_bo_mem_space +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x998e45c0 ttm_ref_object_base_unref +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x9b689ed3 ttm_object_device_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xa2a129fd ttm_suspend_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xa44f2d43 ttm_fbdev_mmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xa45b33fd ttm_bo_synccpu_write_grab +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xa73de2a9 ttm_vt_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xab8c8b6c ttm_tt_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xb4d47ec2 ttm_bo_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xb83c6470 ttm_lock_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xbb83fd4a ttm_agp_tt_create +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xbcd87d6e ttm_mem_io_reserve +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xbd03eb54 ttm_bo_create +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xbe81c908 ttm_bo_init_mm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xbfec5494 ttm_bo_del_sub_from_lru +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xc536b199 ttm_prime_object_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xc5d7d160 ttm_bo_manager_func +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xc5f0c2da ttm_read_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xcbd287e0 ttm_mem_global_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xcccee22a ttm_bo_wait +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xce6e43a8 ttm_base_object_lookup_for_ref +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xcf67c299 ttm_ref_object_exists +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xd7f51742 ttm_suspend_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xd8edb115 ttm_base_object_unref +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xdcf62457 ttm_bo_validate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xe1b67f63 ttm_mem_global_free +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xe7fc697d ttm_bo_unmap_virtual +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xe998cb61 ttm_bo_move_ttm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xea3d1041 ttm_bo_synccpu_write_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xeae10248 ttm_bo_add_to_lru +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xf4145289 ttm_bo_unref +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xf5783ceb ttm_bo_unlock_delayed_workqueue +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xf6fe9c32 ttm_mem_global_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xf9b61071 ttm_bo_swapout_all +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xfb2660d6 ttm_mem_io_free +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xfbc2c5ec ttm_object_file_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xfbdd13ee ttm_mem_io_lock +EXPORT_SYMBOL drivers/hwmon/hwmon-vid 0x0903c239 vid_from_reg +EXPORT_SYMBOL drivers/hwmon/hwmon-vid 0xef1c781c vid_which_vrm +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-bit 0x6f96c414 i2c_bit_algo +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-bit 0x86d0f384 i2c_bit_add_bus +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-bit 0x90f4a818 i2c_bit_add_numbered_bus +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-pca 0x7b4efb0a i2c_pca_add_numbered_bus +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-pca 0xdd7ac557 i2c_pca_add_bus +EXPORT_SYMBOL drivers/i2c/busses/i2c-amd756 0xcafd8a92 amd756_smbus +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x0773f66c mma9551_write_config_byte +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x0c6e24a7 mma9551_read_status_word +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x13ebfa42 mma9551_read_config_byte +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x268f72ef mma9551_write_config_word +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x41ef446c mma9551_read_accel_scale +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x50837dcd mma9551_gpio_config +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x8624fc7f mma9551_update_config_bits +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x8cacd474 mma9551_app_reset +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x9a152054 mma9551_read_accel_chan +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x9c6e769a mma9551_set_power_state +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xa53c3f2c mma9551_read_version +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xb1a622df mma9551_write_config_words +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xb8e276c4 mma9551_set_device_state +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xbcd7fe96 mma9551_sleep +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xbde61c43 mma9551_read_config_words +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xc4e2202d mma9551_read_status_byte +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xc52efc57 mma9551_read_status_words +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xd1b451b4 mma9551_read_config_word +EXPORT_SYMBOL drivers/iio/accel/st_accel 0x08fba659 st_accel_common_remove +EXPORT_SYMBOL drivers/iio/accel/st_accel 0x9a624fe5 st_accel_common_probe +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x0e23c482 hid_sensor_write_raw_hyst_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x6865273d hid_sensor_read_raw_hyst_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x997e6904 hid_sensor_parse_common_attributes +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0xb283555a hid_sensor_read_poll_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0xc83a92bf hid_sensor_format_scale +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0xea450c59 hid_sensor_write_samp_freq_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0xeeedff00 hid_sensor_read_samp_freq_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-trigger 0x4c72b6b2 hid_sensor_remove_trigger +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-trigger 0x8eec7479 hid_sensor_pm_ops +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-trigger 0xafa82cf6 hid_sensor_setup_trigger +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-trigger 0xdf9bc415 hid_sensor_power_state +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0x57b568c5 ssp_disable_sensor +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0x94ba7611 ssp_get_sensor_delay +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0xa7c44902 ssp_register_consumer +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0xac8cc980 ssp_change_delay +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0xb7b36b81 ssp_enable_sensor +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/ssp_iio 0x289e96d0 ssp_common_process_data +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/ssp_iio 0x8537c55e ssp_common_buffer_postenable +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/ssp_iio 0xc1907314 ssp_common_buffer_postdisable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x0239a1cf st_sensors_check_device_support +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x074d7047 st_sensors_trigger_handler +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x135fbd8a st_sensors_read_info_raw +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x1e33614f st_sensors_set_axis_enable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x57438e25 st_sensors_set_fullscale_by_gain +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x60883962 st_sensors_deallocate_trigger +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x852e4b28 st_sensors_sysfs_sampling_frequency_avail +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x8f973ab5 st_sensors_sysfs_scale_avail +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x90383e5c st_sensors_get_buffer_element +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x919f9a83 st_sensors_set_enable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x9ad9cdb8 st_sensors_init_sensor +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xc3c3219a st_sensors_set_odr +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xc56927d1 st_sensors_allocate_trigger +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xcec0a218 st_sensors_power_disable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xcfa582fb st_sensors_power_enable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xfc40a193 st_sensors_set_dataready_irq +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors_i2c 0x32f23ecf st_sensors_of_i2c_probe +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors_i2c 0x7116d525 st_sensors_i2c_configure +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors_spi 0x2284aebe st_sensors_spi_configure +EXPORT_SYMBOL drivers/iio/gyro/st_gyro 0x56357c82 st_gyro_common_remove +EXPORT_SYMBOL drivers/iio/gyro/st_gyro 0x671eabd9 st_gyro_common_probe +EXPORT_SYMBOL drivers/iio/imu/adis_lib 0x1b02279b adis_enable_irq +EXPORT_SYMBOL drivers/iio/imu/adis_lib 0xae1d6eb5 adis_debugfs_reg_access +EXPORT_SYMBOL drivers/iio/industrialio 0x0d4f32c0 iio_trigger_notify_done +EXPORT_SYMBOL drivers/iio/industrialio 0x1d2c0ef2 iio_trigger_poll +EXPORT_SYMBOL drivers/iio/industrialio 0x28b2d8a2 iio_triggered_buffer_predisable +EXPORT_SYMBOL drivers/iio/industrialio 0x29a9a465 iio_device_free +EXPORT_SYMBOL drivers/iio/industrialio 0x2d6bcdcb iio_trigger_generic_data_rdy_poll +EXPORT_SYMBOL drivers/iio/industrialio 0x2e96f5cd iio_device_alloc +EXPORT_SYMBOL drivers/iio/industrialio 0x56ada803 iio_triggered_buffer_postenable +EXPORT_SYMBOL drivers/iio/industrialio 0x586bddb6 iio_trigger_alloc +EXPORT_SYMBOL drivers/iio/industrialio 0x61212f7c iio_trigger_register +EXPORT_SYMBOL drivers/iio/industrialio 0x72c58fe3 iio_trigger_unregister +EXPORT_SYMBOL drivers/iio/industrialio 0x778886e4 iio_push_event +EXPORT_SYMBOL drivers/iio/industrialio 0x8cb1e052 iio_trigger_poll_chained +EXPORT_SYMBOL drivers/iio/industrialio 0x8d8ad742 iio_trigger_free +EXPORT_SYMBOL drivers/iio/industrialio 0xa64a3231 iio_bus_type +EXPORT_SYMBOL drivers/iio/industrialio 0xae580b2e iio_buffer_init +EXPORT_SYMBOL drivers/iio/industrialio 0xbf85f73a iio_device_unregister +EXPORT_SYMBOL drivers/iio/industrialio 0xd4518287 iio_read_const_attr +EXPORT_SYMBOL drivers/iio/industrialio 0xdf76bbeb iio_pollfunc_store_time +EXPORT_SYMBOL drivers/iio/industrialio 0xe98bc5a2 iio_device_register +EXPORT_SYMBOL drivers/iio/industrialio-triggered-buffer 0xc795851d iio_triggered_buffer_cleanup +EXPORT_SYMBOL drivers/iio/industrialio-triggered-buffer 0xdd903825 iio_triggered_buffer_setup +EXPORT_SYMBOL drivers/iio/kfifo_buf 0x2d6a8e37 devm_iio_kfifo_allocate +EXPORT_SYMBOL drivers/iio/kfifo_buf 0x4889702b iio_kfifo_allocate +EXPORT_SYMBOL drivers/iio/kfifo_buf 0x98a52eef iio_kfifo_free +EXPORT_SYMBOL drivers/iio/kfifo_buf 0x9d53eabe devm_iio_kfifo_free +EXPORT_SYMBOL drivers/iio/magnetometer/st_magn 0x35b58513 st_magn_common_remove +EXPORT_SYMBOL drivers/iio/magnetometer/st_magn 0xe18be3c4 st_magn_common_probe +EXPORT_SYMBOL drivers/iio/pressure/ms5611_core 0xfa91fdc0 ms5611_probe +EXPORT_SYMBOL drivers/iio/pressure/st_pressure 0x8c8594db st_press_common_probe +EXPORT_SYMBOL drivers/iio/pressure/st_pressure 0xc98c5c29 st_press_common_remove +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x049ace30 rdma_addr_find_smac_by_sgid +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x04b8b6d7 rdma_translate_ip +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x1c3c0ad3 rdma_addr_size +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x1ea5767b rdma_addr_register_client +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x273f4cca rdma_addr_cancel +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x32a8402c rdma_addr_unregister_client +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x569892df rdma_copy_addr +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x59252c9d rdma_resolve_ip +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0xf029eb25 rdma_addr_find_dmac_by_grh +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x05c0c1de ib_send_cm_sidr_req +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x152f8bcb ib_cm_listen +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x1f3a5d87 ib_send_cm_sidr_rep +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x2dee5760 ib_send_cm_rep +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x33793866 ib_send_cm_dreq +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x5dc36b48 ib_send_cm_req +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x6043ccfd cm_class +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x74aaf75b ib_send_cm_drep +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x76d636d8 ib_send_cm_lap +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xa6f85c10 ib_destroy_cm_id +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xaadea71a ib_send_cm_mra +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xaee3a690 ib_send_cm_apr +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xc853d179 ib_send_cm_rej +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xd1e44089 ib_cm_init_qp_attr +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xe8264ec7 ib_cm_notify +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xea1c9b3d ib_create_cm_id +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xeff9eac5 ib_send_cm_rtu +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0495e7cc ib_destroy_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x05cff49d ib_create_ah_from_wc +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0a7b2af9 ibnl_put_msg +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0c1b9ac1 ib_ud_header_unpack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0cdb8cd4 ib_query_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0d5c2d40 ibnl_unicast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1220bebd ib_query_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x136ff735 ib_close_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x17c3c87c ib_create_flow +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x18016827 ib_destroy_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1c211359 ib_unregister_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1e491a04 ib_unmap_fmr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x20eff603 ib_find_cached_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x22f3cf93 ib_pack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x28da533d ib_unregister_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2ccb243b ib_register_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2ed6e386 ib_ud_header_pack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2f0fdc70 ib_resolve_eth_l2_attrs +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x38e83c2e ib_umem_release +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x47ffaf9d ib_alloc_pd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x488e56ea ib_find_exact_cached_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x4af96726 ib_umem_page_count +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x4bbe1e74 ib_destroy_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x4c792607 ib_umem_copy_from +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x4ec73db0 ib_modify_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x50dbc447 ib_flush_fmr_pool +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x533e8ed2 ib_query_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5375804a ib_dealloc_mw +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5611cdea rdma_node_get_transport +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x56d0ccd2 ib_destroy_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x56f36f18 ib_umem_get +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x58ce866e ib_dispatch_event +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5e1e14e5 ibnl_add_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x66ec0bd1 ibnl_put_attr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6800aba8 ib_init_ah_from_wc +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x68e372ee ib_modify_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x69481962 ib_find_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x69d983ff ib_alloc_fast_reg_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6b4a9a21 ib_find_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6e030e26 ib_modify_qp_is_ok +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x727c6054 ib_query_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x75eb6607 ib_attach_mcast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7ca56104 ib_create_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7da15dd6 ib_modify_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7eb7f9c4 ib_dealloc_xrcd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x814a5bee ib_set_client_data +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x83dc3b3f ib_modify_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x875d6010 ib_create_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x8b007f36 ib_find_cached_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x932f1481 ib_reg_phys_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x93be7c6c ib_destroy_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x979d91e6 ibnl_multicast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x9a444bbc ib_create_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x9b761d2c ib_alloc_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x9cfbe0b7 ib_dealloc_fmr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x9d3cdd1f ib_alloc_mw +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa08c4b06 ib_create_fmr_pool +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa432baf6 ib_unpack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa6ba3a20 ib_open_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa82cde84 ib_detach_mcast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa984935f ib_register_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xaa3724e2 ib_alloc_fmr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xab0a3467 mult_to_ib_rate +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xabf64c96 ib_modify_port +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xaf5690f7 ib_query_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb158cdc6 ib_destroy_flow +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb3036c47 ib_check_mr_status +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb35aab12 ib_dealloc_pd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb93a52b0 ib_rate_to_mbps +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xbadd8259 ib_rate_to_mult +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc236d032 ib_unregister_event_handler +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc32b59ff ib_destroy_fmr_pool +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc5058cfc ib_dealloc_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc5726f8c ib_get_cached_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc67f14a5 ibnl_remove_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xca97eaf4 ib_get_cached_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xcfa2a09f ib_event_msg +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xcfe06a2d ib_resize_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd093a6f0 ib_get_dma_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd3089f74 ib_create_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xdaea022e ib_get_client_data +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xdba22f22 ib_register_event_handler +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xdeae33ca ib_umem_odp_map_dma_pages +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe1ba2bdc ib_fmr_pool_unmap +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe578cf8e ib_query_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe5840ec6 ib_wc_status_msg +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe935f609 ib_get_cached_lmc +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xeaa8cac7 ib_alloc_xrcd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xec80edce ib_alloc_fast_reg_page_list +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xedd9cc14 ib_query_port +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf1bb7bd6 ib_modify_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf2a3759b ib_umem_odp_unmap_dma_pages +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf3bdea0a ib_free_fast_reg_page_list +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf6663899 rdma_port_get_link_layer +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf81d869e ib_query_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf859c95c ib_rereg_phys_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf99e486e ib_fmr_pool_map_phys +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xfc150956 ib_ud_header_init +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xfc1715cf ib_create_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xfcc791e8 ib_dereg_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x0a1cba62 ib_free_send_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x138b219d ib_create_send_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x2a9a97f3 ib_unregister_mad_agent +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x2d3288d7 ib_modify_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x2f0ea69e ib_response_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x3ea31010 ib_register_mad_snoop +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x4ae3c17c ib_post_send_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x61eef6fe ib_cancel_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x6f077fcf ib_get_mad_data_offset +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x6f954534 ib_redirect_mad_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x7292bd21 ib_mad_kernel_rmpp_agent +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x7b5d4b7a ib_is_mad_class_rmpp +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xae792fae ib_free_recv_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xb8f81177 ib_process_mad_wc +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xd143d351 ib_register_mad_agent +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xf321dc36 ib_get_rmpp_segment +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x064d063f ib_init_ah_from_path +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x22f07253 ib_sa_unpack_path +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x4287b921 ib_sa_join_multicast +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x4be28843 ib_sa_get_mcmember_rec +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x52bbef94 ib_sa_path_rec_get +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x5328d7a6 ib_sa_register_client +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x576fdbac ib_sa_free_multicast +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x9a1cd50d ib_sa_unregister_client +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xa3ac5a33 ib_sa_guid_info_rec_query +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xbb941c19 ib_init_ah_from_mcmember +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xcebac927 ib_sa_service_rec_query +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xda0d50ec ib_sa_cancel_query +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xddc330e7 ib_sa_pack_path +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x2569d757 ib_copy_path_rec_to_user +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x52a6ce77 ib_copy_ah_attr_to_user +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x7971c00e ib_copy_qp_attr_to_user +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0xe350f2aa ib_copy_path_rec_from_user +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x0ac0bba8 iwpm_remote_info_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x0ff9f042 iwpm_remove_mapinfo +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x1cfe21d9 iw_cm_accept +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x47b3d320 iwpm_mapping_info_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x47e42fdf iwpm_mapping_error_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x5b1d6656 iwpm_ack_mapping_info_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x5da59312 iwpm_register_pid +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x6968573d iwpm_add_mapping +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x6c74c344 iwpm_get_remote_info +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x72865af6 iw_cm_listen +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x741fcbf9 iwpm_add_mapping_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x8c94cd33 iw_destroy_cm_id +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x904609a0 iwpm_remove_mapping +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x91a914d6 iwpm_init +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x9327be67 iwpm_exit +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x99edf901 iwpm_valid_pid +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xb16be6b6 iw_cm_init_qp_attr +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xb691462b iw_cm_connect +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xb6a9d611 iw_cm_reject +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xb793bc87 iw_create_cm_id +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xc73dfd3a iwpm_register_pid_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xd119daf7 iwpm_add_and_query_mapping_cb +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xd447b24a iwpm_create_mapinfo +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xec60e16f iw_cm_disconnect +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xf380aa0f iwpm_add_and_query_mapping +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x2a0bbb73 rdma_create_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x3c980eec rdma_resolve_route +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x50586abd rdma_leave_multicast +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x6322684b rdma_reject +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x70d5f123 rdma_get_service_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x72f72fb7 rdma_bind_addr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x738af4a6 rdma_init_qp_attr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x78f7e8b5 rdma_join_multicast +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x853e39c3 rdma_destroy_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x8c1c2879 rdma_set_service_type +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x907df803 rdma_event_msg +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x91876b12 rdma_connect +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x91a4214e rdma_accept +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xa93dfedd rdma_set_reuseaddr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xb491acde rdma_set_afonly +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xc49ac464 rdma_set_ib_paths +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xd5cc239d rdma_notify +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xded9d42c rdma_destroy_qp +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xe0645752 rdma_disconnect +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xe4127dd8 rdma_listen +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xf2eebee5 rdma_create_qp +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xf6d7c27e rdma_resolve_addr +EXPORT_SYMBOL drivers/input/gameport/gameport 0x05b68b8f gameport_stop_polling +EXPORT_SYMBOL drivers/input/gameport/gameport 0x356e15ec gameport_open +EXPORT_SYMBOL drivers/input/gameport/gameport 0x40d94228 __gameport_register_driver +EXPORT_SYMBOL drivers/input/gameport/gameport 0x5bd0655b gameport_start_polling +EXPORT_SYMBOL drivers/input/gameport/gameport 0x68084462 gameport_unregister_port +EXPORT_SYMBOL drivers/input/gameport/gameport 0x73f8d64b gameport_close +EXPORT_SYMBOL drivers/input/gameport/gameport 0xd46f5bed gameport_set_phys +EXPORT_SYMBOL drivers/input/gameport/gameport 0xdbd104ba gameport_unregister_driver +EXPORT_SYMBOL drivers/input/gameport/gameport 0xe984ca2a __gameport_register_port +EXPORT_SYMBOL drivers/input/input-polldev 0x040d7db1 input_free_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0x082e0406 input_unregister_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0x23ff969e input_allocate_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0x7ad778a9 devm_input_allocate_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0xbcf1c405 input_register_polled_device +EXPORT_SYMBOL drivers/input/matrix-keymap 0xb5480fe7 matrix_keypad_build_keymap +EXPORT_SYMBOL drivers/input/misc/ad714x 0x14bcb40f ad714x_enable +EXPORT_SYMBOL drivers/input/misc/ad714x 0x7d90cf3c ad714x_probe +EXPORT_SYMBOL drivers/input/misc/ad714x 0xc5141c05 ad714x_remove +EXPORT_SYMBOL drivers/input/misc/ad714x 0xe64749d6 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 0x8ea8ce33 cma3000_init +EXPORT_SYMBOL drivers/input/misc/cma3000_d0x 0xca3f100a cma3000_suspend +EXPORT_SYMBOL drivers/input/sparse-keymap 0x648fde48 sparse_keymap_entry_from_scancode +EXPORT_SYMBOL drivers/input/sparse-keymap 0xa2cc33d7 sparse_keymap_report_entry +EXPORT_SYMBOL drivers/input/sparse-keymap 0xa56251ff sparse_keymap_entry_from_keycode +EXPORT_SYMBOL drivers/input/sparse-keymap 0xdc3bc0a4 sparse_keymap_setup +EXPORT_SYMBOL drivers/input/sparse-keymap 0xdc8def32 sparse_keymap_report_event +EXPORT_SYMBOL drivers/input/sparse-keymap 0xf1beccdc sparse_keymap_free +EXPORT_SYMBOL drivers/input/touchscreen/ad7879 0x56d822dc ad7879_probe +EXPORT_SYMBOL drivers/input/touchscreen/ad7879 0x7eea81a8 ad7879_pm_ops +EXPORT_SYMBOL drivers/input/touchscreen/ad7879 0x97f83edf ad7879_remove +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x04403fcf unregister_capi_driver +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x0adec864 capi20_put_message +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x14f2aa5a capi20_get_version +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x29e12ef5 capi_ctr_resume_output +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x2b8eab1f capilib_free_ncci +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x2baa6586 capilib_new_ncci +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x31c24aa4 capi20_isinstalled +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x50b33ca4 capi_cmsg2message +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x604c744e capi_ctr_down +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x6057c6f3 capi_message2cmsg +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x62e32d43 capilib_data_b3_conf +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x65c7062d detach_capi_ctr +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x71e8d5ba capilib_data_b3_req +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x7292ab34 cdebbuf_free +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x72a25a72 capi_cmsg2str +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x7a33596c capi20_get_serial +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x7b01b951 capi_ctr_suspend_output +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x7e6f1307 capi20_get_manufacturer +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x8f699913 capilib_release +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x94866417 capi20_register +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x9f823278 register_capi_driver +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xaa165d27 capilib_release_appl +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xaed1e7e1 capi_ctr_handle_message +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xb19fda8d capi_cmd2str +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xb60e5e5f capi_cmsg_header +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xba351b45 capi20_release +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xc42d9ec1 capi20_manufacturer +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xd8d6c575 attach_capi_ctr +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xe19a11ac capi20_get_profile +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xfd552f7a capi_message2str +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xff4a3b92 capi_ctr_ready +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x009c6f13 avmcard_dma_alloc +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x07b9b097 b1_load_t4file +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x09e15187 b1_register_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x2936be02 b1_load_firmware +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x362e46ef b1_parse_version +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x4d3d2e7d b1_free_card +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x4ea85722 b1ctl_proc_fops +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x51dc94ad b1_reset_ctr +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x5d3565bf b1_release_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x8173ad90 b1_loaded +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x85f09690 b1_irq_table +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xad819800 b1_alloc_card +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xba775f06 avmcard_dma_free +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xc2b4d106 b1_getrevision +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xdfd28376 b1_detect +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xef6fcef0 b1_load_config +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xf084f9af b1_send_message +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xfa10fee4 b1_interrupt +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x04576c77 b1dma_release_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x2308c3f6 b1dma_register_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x24bdfc22 b1dma_send_message +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x66eab567 b1dmactl_proc_fops +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x78ea6e23 b1dma_reset +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xbb5afc89 t1pci_detect +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xd6f9f1ea b1dma_interrupt +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xda8986a6 b1dma_reset_ctr +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xea4ac37e b1dma_load_firmware +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xf7f75073 b1pciv4_detect +EXPORT_SYMBOL drivers/isdn/hardware/eicon/divadidd 0x2974ead1 DIVA_DIDD_Read +EXPORT_SYMBOL drivers/isdn/hardware/eicon/divadidd 0x7ab59853 proc_net_eicon +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0x7ecd0343 mISDNisac_init +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0x9f1a1fda mISDNipac_init +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0xad689f4c mISDNisac_irq +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0xd6613391 mISDNipac_irq +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNisar 0x9d94f2f7 mISDNisar_irq +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNisar 0xa24ae825 mISDNisar_init +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x07f4f2ce hisax_unregister +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x0b544534 hisax_init_pcmcia +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x148f0c99 FsmFree +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x6fe1ca04 FsmDelTimer +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x93a64734 FsmChangeState +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x9df0cd27 FsmEvent +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x9f987c85 FsmRestartTimer +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0xa1bc94b9 FsmInitTimer +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0xee93522c hisax_register +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0xf0a16657 FsmNew +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0xfc27303b HiSax_closecard +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x3a6898b2 isacsx_irq +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x3f3b323a isac_d_l2l1 +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x7ec8cf2f isac_irq +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x9bdf05ea isacsx_setup +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0xaa3f714a isac_setup +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0xca3b06b3 isac_init +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0x3a8d63e4 isdn_ppp_register_compressor +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0xce064b3b isdn_ppp_unregister_compressor +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0xd79b587f register_isdn +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0xfa06820f isdn_register_divert +EXPORT_SYMBOL drivers/isdn/i4l/isdnhdlc 0x3b71e4fc isdnhdlc_decode +EXPORT_SYMBOL drivers/isdn/i4l/isdnhdlc 0x59cc8a7e isdnhdlc_out_init +EXPORT_SYMBOL drivers/isdn/i4l/isdnhdlc 0x8ee38862 isdnhdlc_rcv_init +EXPORT_SYMBOL drivers/isdn/i4l/isdnhdlc 0xfd9d4c09 isdnhdlc_encode +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x06fcebef mISDN_FsmDelTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x08557098 dchannel_senddata +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x0f68c519 recv_Echannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x194bacd3 create_l1 +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x1cf196fb mISDN_FsmAddTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x2348cc3c mISDN_FsmFree +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x29fa5b43 mISDN_FsmRestartTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x36ec1940 mISDN_FsmInitTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x38e4aa34 bchannel_get_rxbuf +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x39afbeaa mISDN_unregister_Bprotocol +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x4e9c70c6 mISDN_freebchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x4ffbd344 mISDN_register_Bprotocol +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x50c2230c mISDN_FsmChangeState +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x53db7539 mISDNDevName4ch +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x563289c3 get_next_bframe +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x588886a6 l1_event +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x6d3b08d0 recv_Dchannel_skb +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x746a9df2 queue_ch_frame +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x761e906c recv_Bchannel_skb +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x77e80780 mISDN_initdchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x80d749d7 mISDN_freedchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x8a4e99fb mISDN_clock_update +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x8e753866 recv_Bchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x90d8732d mISDN_initbchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x93aa443a recv_Dchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x944851aa mISDN_unregister_device +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x952cd606 mISDN_register_device +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xaac3e2b0 bchannel_senddata +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xc3401729 mISDN_register_clock +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 0xdc657510 mISDN_clear_bchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xde68e4ce mISDN_ctrl_bchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xe4e9cbe7 get_next_dframe +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xe8f617eb mISDN_unregister_clock +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xf9e7832f mISDN_FsmNew +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_dsp 0x01087af0 mISDN_dsp_element_unregister +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_dsp 0x60721da7 dsp_audio_law_to_s32 +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_dsp 0xa215f1b2 dsp_audio_s16_to_law +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_dsp 0xb98308d8 mISDN_dsp_element_register +EXPORT_SYMBOL drivers/md/bcache/bcache 0x0dedb25a closure_sync +EXPORT_SYMBOL drivers/md/bcache/bcache 0x1d89bd11 bch_btree_sort_partial +EXPORT_SYMBOL drivers/md/bcache/bcache 0x1f529ce8 bch_bset_build_written_tree +EXPORT_SYMBOL drivers/md/bcache/bcache 0x26481f26 bch_btree_sort_lazy +EXPORT_SYMBOL drivers/md/bcache/bcache 0x440b4830 bch_btree_iter_next +EXPORT_SYMBOL drivers/md/bcache/bcache 0x44a37d62 bch_btree_iter_init +EXPORT_SYMBOL drivers/md/bcache/bcache 0x490dce05 closure_put +EXPORT_SYMBOL drivers/md/bcache/bcache 0x5b59b856 bch_btree_insert_key +EXPORT_SYMBOL drivers/md/bcache/bcache 0x7daccb73 bch_btree_keys_alloc +EXPORT_SYMBOL drivers/md/bcache/bcache 0x8833b0e8 bch_btree_keys_free +EXPORT_SYMBOL drivers/md/bcache/bcache 0xa2eca6bd closure_sub +EXPORT_SYMBOL drivers/md/bcache/bcache 0xa3c5c702 bch_bset_fix_invalidated_key +EXPORT_SYMBOL drivers/md/bcache/bcache 0xc12c3b2f closure_wait +EXPORT_SYMBOL drivers/md/bcache/bcache 0xca5df778 __bch_bset_search +EXPORT_SYMBOL drivers/md/bcache/bcache 0xce47a6d9 bch_btree_keys_init +EXPORT_SYMBOL drivers/md/bcache/bcache 0xd2813054 bch_bset_insert +EXPORT_SYMBOL drivers/md/bcache/bcache 0xdf892351 bch_bkey_try_merge +EXPORT_SYMBOL drivers/md/bcache/bcache 0xe3c17af1 __closure_wake_up +EXPORT_SYMBOL drivers/md/bcache/bcache 0xe67c2d16 bch_bset_sort_state_init +EXPORT_SYMBOL drivers/md/bcache/bcache 0xec6f33d0 bch_bset_init_next +EXPORT_SYMBOL drivers/md/dm-bufio 0x268682d2 dm_bufio_forget +EXPORT_SYMBOL drivers/md/dm-bufio 0x72f07bf4 dm_bufio_set_minimum_buffers +EXPORT_SYMBOL drivers/md/dm-log 0x3eb84dcc dm_dirty_log_type_register +EXPORT_SYMBOL drivers/md/dm-log 0x777f0707 dm_dirty_log_create +EXPORT_SYMBOL drivers/md/dm-log 0xe6fa1cbe dm_dirty_log_destroy +EXPORT_SYMBOL drivers/md/dm-log 0xf334edd1 dm_dirty_log_type_unregister +EXPORT_SYMBOL drivers/md/dm-snapshot 0x434db64f dm_exception_store_type_unregister +EXPORT_SYMBOL drivers/md/dm-snapshot 0x4d77bd25 dm_exception_store_destroy +EXPORT_SYMBOL drivers/md/dm-snapshot 0x53962fe2 dm_exception_store_type_register +EXPORT_SYMBOL drivers/md/dm-snapshot 0x53f08dae dm_snap_cow +EXPORT_SYMBOL drivers/md/dm-snapshot 0xc482766c dm_exception_store_create +EXPORT_SYMBOL drivers/md/dm-snapshot 0xe177ae2d dm_snap_origin +EXPORT_SYMBOL drivers/md/raid456 0x57773538 raid5_set_cache_size +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x0907a32f flexcop_pass_dmx_data +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x347aef99 flexcop_pass_dmx_packets +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x575d3201 flexcop_device_exit +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x5bdc608b flexcop_pid_feed_control +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x7fe75df3 flexcop_sram_ctrl +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xd06e847e flexcop_device_kfree +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xd3f6181f flexcop_dump_reg +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xdfe7fd33 flexcop_sram_set_dest +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xe92ca176 flexcop_i2c_request +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xe9e74880 flexcop_device_kmalloc +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xedce63f6 flexcop_wan_set_speed +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xf6f39f7d flexcop_eeprom_check_mac_addr +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xfdb543d2 flexcop_device_initialize +EXPORT_SYMBOL drivers/media/common/cx2341x 0x1ca0c084 cx2341x_log_status +EXPORT_SYMBOL drivers/media/common/cx2341x 0x2f25eee2 cx2341x_update +EXPORT_SYMBOL drivers/media/common/cx2341x 0x30cb4cd7 cx2341x_ext_ctrls +EXPORT_SYMBOL drivers/media/common/cx2341x 0x3db8be82 cx2341x_ctrl_query +EXPORT_SYMBOL drivers/media/common/cx2341x 0x52ed1950 cx2341x_handler_init +EXPORT_SYMBOL drivers/media/common/cx2341x 0x7f55b684 cx2341x_handler_set_50hz +EXPORT_SYMBOL drivers/media/common/cx2341x 0x85ecf219 cx2341x_handler_set_busy +EXPORT_SYMBOL drivers/media/common/cx2341x 0xb45469f9 cx2341x_handler_setup +EXPORT_SYMBOL drivers/media/common/cx2341x 0xc184ec1e cx2341x_ctrl_get_menu +EXPORT_SYMBOL drivers/media/common/cx2341x 0xcf76ce95 cx2341x_fill_defaults +EXPORT_SYMBOL drivers/media/common/cx2341x 0xcf8b77a4 cx2341x_mpeg_ctrls +EXPORT_SYMBOL drivers/media/common/cypress_firmware 0x12719251 cypress_load_firmware +EXPORT_SYMBOL drivers/media/common/tveeprom 0x80f715a3 tveeprom_read +EXPORT_SYMBOL drivers/media/common/tveeprom 0xd7136dae tveeprom_hauppauge_analog +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x020353a0 dvb_register_device +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x03f811a2 dvb_dmxdev_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x06347ed5 dvb_dmx_swfilter_204 +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x08cb298a dvb_ca_en50221_frda_irq +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x10c5b97b dvb_register_adapter +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x2d80f73b dvb_dmx_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x2f823d7f dvb_net_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x32706276 dvb_ringbuffer_read +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x3b2bd78b dvb_register_frontend +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x3da16f5e dvb_generic_ioctl +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x3f9c26c7 dvb_ca_en50221_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x4b8990ee dvb_net_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x4c95dec0 dvb_frontend_resume +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x5611fc8a dvb_dmx_swfilter_raw +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x5c0ea535 dvb_ringbuffer_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x61367ef9 dvb_ca_en50221_camready_irq +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x70af1058 dvb_ringbuffer_empty +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x74a5a698 dvb_filter_pes2ts_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x7805d49b dvb_ca_en50221_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x78db694b dvb_ringbuffer_write +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x7a783d64 dvb_unregister_adapter +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x7b4a196f dvb_dmx_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x7f4f9b54 dvb_ringbuffer_flush +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x80d54638 dvb_unregister_frontend +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x80e3832d dvb_filter_get_ac3info +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x85a5e7d3 dvb_ringbuffer_avail +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x8697c96b dvb_dmxdev_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x90c831e5 dvb_dmx_swfilter_packets +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xa2e15322 dvb_ca_en50221_camchange_irq +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xac4ca1b0 intlog2 +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xbdb5a52d dvb_dmx_swfilter +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xbdd7212b dvb_generic_open +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xc01cc146 dvb_frontend_detach +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xcf589e8c dvb_ringbuffer_free +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xd8f7184c dvb_ringbuffer_flush_spinlock_wakeup +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xde59517e dvb_generic_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xe42c22fc dvb_frontend_reinitialise +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xe5ae8707 intlog10 +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xf25e6ee8 dvb_unregister_device +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xf28e7431 dvb_ringbuffer_read_user +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xf821d629 dvb_frontend_sleep_until +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xf826deb0 dvb_filter_pes2ts +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xfbaa7e01 dvb_ringbuffer_write_user +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xfc83d3a0 dvb_frontend_suspend +EXPORT_SYMBOL drivers/media/dvb-frontends/a8293 0x45b173cd a8293_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/af9013 0x3238047f af9013_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/atbm8830 0x2a1be966 atbm8830_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x4d637137 au8522_analog_i2c_gate_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x5209b711 au8522_get_state +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x780cdbdb au8522_release_state +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x82249716 au8522_init +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0xa0d3d161 au8522_writereg +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0xad8c5830 au8522_readreg +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0xc4113b1f au8522_sleep +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0xcde6de53 au8522_i2c_gate_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0xdc46ffeb au8522_led_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_dig 0x2e64ef66 au8522_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/bcm3510 0xfdaff901 bcm3510_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx22700 0x5a63c432 cx22700_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx22702 0x81034dff cx22702_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24110 0x95fa08ee cx24110_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24113 0xabc1e828 cx24113_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24113 0xffe88276 cx24113_agc_callback +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24116 0x77b79175 cx24116_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24120 0x9af49e4b cx24120_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24123 0x69af230d cx24123_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24123 0x809c94b4 cx24123_get_tuner_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/cxd2820r 0xf703200c cxd2820r_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0x0025af0b dib0070_ctrl_agc_filter +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0x0d5204dd dib0070_wbd_offset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0x274a363c dib0070_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0x3c8e30d8 dib0070_get_rf_output +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0xeae0367f dib0070_set_rf_output +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x2464fbc4 dib0090_set_dc_servo +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x51b13edc dib0090_gain_control +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x5fae3833 dib0090_fw_register +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x68e76795 dib0090_get_wbd_offset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x73fd3cb5 dib0090_pwm_gain_reset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x7411d303 dib0090_get_wbd_target +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x74aa7adf dib0090_update_tuning_table_7090 +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x8e92cce8 dib0090_dcc_freq +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x90ca9476 dib0090_register +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xbbb7b193 dib0090_set_vga +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xe455f116 dib0090_get_current_gain +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xe5416fc8 dib0090_update_rframp_7090 +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xe7c4a6b4 dib0090_set_tune_state +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xf0f7af6a dib0090_set_switch +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xf4be3a32 dib0090_get_tune_state +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mb 0x96104982 dib3000mb_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x76a4bbf1 dib3000mc_get_tuner_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x948b21f6 dib3000mc_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0xa7bd135a dib3000mc_i2c_enumeration +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0xd7e0a0ae dib3000mc_set_config +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0xd8ccacb0 dib3000mc_pid_control +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0xf267b112 dib3000mc_pid_parse +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0x621c0b4d dib7000m_pid_filter +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0x71143fb1 dib7000m_get_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0xbd19564a dib7000m_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0xdcbdca70 dib7000m_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0x9fbaccad dib7000p_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0x1ea352b1 dib8000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0x05fe6ec6 dibx000_i2c_set_speed +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0x07b1c6c3 dibx000_exit_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0x0a3d881e dibx000_init_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0x8e686328 dibx000_get_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0xad3ad91c systime +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0xfef1eba5 dibx000_reset_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/drx39xyj/drx39xyj 0x14d90396 drx39xxj_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/drxd 0x49ca4b35 drxd_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/drxk 0xcf4537f1 drxk_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ds3000 0xb6a4118f ds3000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dvb-pll 0x23f288aa dvb_pll_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ec100 0xf123340d ec100_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/isl6405 0x582af171 isl6405_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/isl6421 0xce79dfb9 isl6421_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/isl6423 0x62ec6c8d isl6423_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/itd1000 0xcddc0286 itd1000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ix2505v 0x11e241c2 ix2505v_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/l64781 0xc604b07b l64781_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lg2160 0x00d5eec4 lg2160_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgdt3305 0x0782bef2 lgdt3305_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgdt3306a 0x848ab1ea lgdt3306a_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgdt330x 0xae999c8f lgdt330x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgs8gxx 0xab5c02d5 lgs8gxx_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lnbp21 0x35226bfe lnbh24_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lnbp21 0xac8ceda2 lnbp21_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lnbp22 0xc1d26c08 lnbp22_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/m88ds3103 0x3f7fc318 m88ds3103_get_agc_pwm +EXPORT_SYMBOL drivers/media/dvb-frontends/m88ds3103 0xc5420d10 m88ds3103_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/m88rs2000 0xf29bcf32 m88rs2000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mb86a16 0xaeca879f mb86a16_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mb86a20s 0x4205d344 mb86a20s_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mt312 0x30ee5140 mt312_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mt352 0xc690bcab mt352_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/nxt200x 0x9edc1896 nxt200x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/nxt6000 0x441c6eb7 nxt6000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/or51132 0x2502e8a3 or51132_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/or51211 0x8f0d91fe or51211_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1409 0x8a544a6d s5h1409_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1411 0x3b3bcf04 s5h1411_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1420 0x10742f85 s5h1420_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1420 0x9bdf6418 s5h1420_get_tuner_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/s921 0xa673b834 s921_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/si2165 0x8d5377bd si2165_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/si21xx 0x3e542f20 si21xx_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/sp8870 0x0e82d3c7 sp8870_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/sp887x 0x5d371106 sp887x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stb0899 0xed310325 stb0899_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stb6000 0xf35a22b7 stb6000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stb6100 0x59171dfa stb6100_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0288 0x6b53693d stv0288_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0297 0x038b1f4a stv0297_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0299 0x670370f9 stv0299_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0367 0xcd205f3d stv0367ter_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0367 0xce796727 stv0367cab_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0900 0xe500317d stv0900_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv090x 0xa60765c7 stv090x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv6110 0x6b82aa09 stv6110_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv6110x 0x14b7acec stv6110x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10021 0x6466aae4 tda10021_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10023 0xd8fbe8b5 tda10023_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10048 0x4e1cdc8e tda10048_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda1004x 0x4eb0cfe0 tda10045_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda1004x 0x7aa56788 tda10046_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10071 0x44ea7623 tda10071_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10086 0x9f022b51 tda10086_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda665x 0x8953e710 tda665x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda8083 0x37d9c46e tda8083_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda8261 0xeb779337 tda8261_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda826x 0xbd31f347 tda826x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ts2020 0x1266699f ts2020_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tua6100 0x3890bf76 tua6100_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ves1820 0x5d95b930 ves1820_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ves1x93 0x43fc13b3 ves1x93_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/zl10036 0x061ec375 zl10036_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/zl10039 0xc8c27bbf zl10039_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/zl10353 0x18b98a78 zl10353_attach +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x11a53cd5 flexcop_dma_control_timer_irq +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x61a3a213 flexcop_dma_free +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x78f10885 flexcop_dma_allocate +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0x8729e489 flexcop_dma_xfer_control +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0xa2ed664b flexcop_dma_config +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0xb2ccd81c flexcop_dma_control_size_irq +EXPORT_SYMBOL drivers/media/pci/b2c2/b2c2-flexcop-pci 0xeb72c2ee flexcop_dma_config_timer +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0x7ac74d4e bt878_stop +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0xa660c550 bt878_device_control +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0xc141a211 bt878 +EXPORT_SYMBOL drivers/media/pci/bt8xx/bt878 0xc1f592f8 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 0x5037545a 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 0xc0d24432 bttv_sub_register +EXPORT_SYMBOL drivers/media/pci/bt8xx/bttv 0xe60ee7ef bttv_get_pcidev +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x50236878 read_dst +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x6ba026f1 dst_error_recovery +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x86c79bf9 dst_error_bailout +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x928ee3e0 dst_wait_dst_ready +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0x987d828e dst_pio_disable +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xad129ac6 rdc_reset_state +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xad237322 write_dst +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xd83aacf7 dst_attach +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xe94b8c9c dst_check_sum +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst 0xee2c66c7 dst_comm_init +EXPORT_SYMBOL drivers/media/pci/bt8xx/dst_ca 0x81466e93 dst_ca_attach +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x11d507f5 cx18_ext_init +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x2cdea06d cx18_reset_ir_gpio +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x2fb96533 cx18_claim_stream +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x754b7576 cx18_stop_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0x88366792 cx18_start_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/cx18/cx18 0xff4187ae cx18_release_stream +EXPORT_SYMBOL drivers/media/pci/cx23885/altera-ci 0x0398c436 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 0x41c6ec2a cx25821_sram_channel_dump_audio +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x701ec609 cx25821_dev_unregister +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x784853c3 cx25821_print_irqbits +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0x8892dfdb cx25821_sram_channel_setup_audio +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xc3ad2222 cx25821_risc_databuffer_audio +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xc5d38741 cx25821_sram_channels +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xcf3993e0 cx25821_dev_get +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xdec18ff2 cx25821_set_gpiopin_direction +EXPORT_SYMBOL drivers/media/pci/cx25821/cx25821 0xf038742d cx25821_riscmem_alloc +EXPORT_SYMBOL drivers/media/pci/cx88/cx88-vp3054-i2c 0xa06b5388 vp3054_i2c_probe +EXPORT_SYMBOL drivers/media/pci/cx88/cx88-vp3054-i2c 0xced1d316 vp3054_i2c_remove +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0x237923b0 cx88_querycap +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0x45e5829e cx88_video_mux +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0x5cda97c3 cx88_set_freq +EXPORT_SYMBOL drivers/media/pci/cx88/cx8800 0xef537960 cx88_enum_input +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x091a2b48 cx8802_buf_prepare +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x31804531 cx8802_get_driver +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x66ef409a cx8802_cancel_buffers +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0x69e9a97a cx8802_buf_queue +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0xd492e88c cx8802_unregister_driver +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0xd7631008 cx8802_start_dma +EXPORT_SYMBOL drivers/media/pci/cx88/cx8802 0xe13b9352 cx8802_register_driver +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x100ad384 cx88_ir_start +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x1bcd28b3 cx88_dsp_detect_stereo_sap +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x1e4a1f3e cx88_risc_databuffer +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x2751b0a2 cx88_vdev_init +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x3966fa3e cx88_set_scale +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x4216fc84 cx88_sram_channels +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x4578a1bf cx88_set_tvaudio +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x4de70aee cx88_ir_stop +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x6141c8c5 cx88_tuner_callback +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x666a8a54 cx88_sram_channel_dump +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x673ee3fa cx88_reset +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x7642ed3c cx88_print_irqbits +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x7bf331a7 cx88_set_stereo +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x904b8696 cx88_audio_thread +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x9534f2a0 cx88_sram_channel_setup +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0x9f39c1db cx88_core_irq +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xc63d9db3 cx88_core_get +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xc8c5e147 cx88_shutdown +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xd0c404d4 cx88_set_tvnorm +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xd70529a9 cx88_get_stereo +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xdc0572ab cx88_wakeup +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xed9e5690 cx88_risc_buffer +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xf00e5ecb cx88_newstation +EXPORT_SYMBOL drivers/media/pci/cx88/cx88xx 0xfa3a9854 cx88_core_put +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x14f67530 ivtv_debug +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x2300761c ivtv_reset_ir_gpio +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x259bfba4 ivtv_udma_prepare +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x2716ea04 ivtv_ext_init +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x3817b063 ivtv_set_irq_mask +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x4ae155bf ivtv_udma_alloc +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x5a4af19e ivtv_vapi_result +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x5c1a88d8 ivtv_stop_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x5fc1908a ivtv_init_on_first_open +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x6006a785 ivtv_udma_unmap +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x809897bb ivtv_firmware_check +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x94924a4b ivtv_udma_setup +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x97b529cb ivtv_clear_irq_mask +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0x9a20dedc ivtv_api +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xa4ec4b65 ivtv_vapi +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xb7c4d63a ivtv_release_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xc5381505 ivtv_start_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/pci/ivtv/ivtv 0xd92c643b ivtv_claim_stream +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x04e83446 saa7134_tuner_callback +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x07aa07f2 saa7134_set_gpio +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x1211df5d saa7134_devlist +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x1e2814e1 saa7134_pgtable_free +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x1eae671c saa7134_ts_register +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x4dfd817d saa7134_pgtable_alloc +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x75c66969 saa7134_boards +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x8d5b709a saa7134_pgtable_build +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0x8eaf8513 saa7134_dmasound_exit +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xc565563a saa7134_dmasound_init +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xd7cf3deb saa7134_set_dmabits +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xe7591283 saa_dsp_writel +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xe9821d80 saa7134_devlist_lock +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xef48bfed saa7134_ts_unregister +EXPORT_SYMBOL drivers/media/pci/saa7134/saa7134 0xfc592702 saa7134_tvaudio_setmute +EXPORT_SYMBOL drivers/media/pci/ttpci/ttpci-eeprom 0x72a3bca8 ttpci_eeprom_parse_mac +EXPORT_SYMBOL drivers/media/pci/ttpci/ttpci-eeprom 0xc3e4c127 ttpci_eeprom_decode_mac +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x1e74be8a soc_camera_host_register +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x5a32bce2 soc_camera_apply_board_flags +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x79059b2c soc_camera_power_on +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x794ac4a4 soc_camera_power_init +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0xa67c5a69 soc_camera_xlate_by_fourcc +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0xaa83cbcc soc_camera_host_unregister +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0xabb70d6e soc_camera_power_off +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0x25c52d97 soc_mbus_samples_per_pixel +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0x2863728e soc_mbus_image_size +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0x29f5a98b soc_mbus_get_fmtdesc +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0x5f3e3558 soc_mbus_bytes_per_line +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0xc8b28da5 soc_mbus_config_compatible +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0xdc5dafe2 soc_mbus_find_fmtdesc +EXPORT_SYMBOL drivers/media/radio/tea575x 0x2700d372 snd_tea575x_g_tuner +EXPORT_SYMBOL drivers/media/radio/tea575x 0x5c6e7ee0 snd_tea575x_exit +EXPORT_SYMBOL drivers/media/radio/tea575x 0x5f2af447 snd_tea575x_init +EXPORT_SYMBOL drivers/media/radio/tea575x 0x9b2527df snd_tea575x_set_freq +EXPORT_SYMBOL drivers/media/radio/tea575x 0xa5aecde3 snd_tea575x_enum_freq_bands +EXPORT_SYMBOL drivers/media/radio/tea575x 0xf480dc60 snd_tea575x_s_hw_freq_seek +EXPORT_SYMBOL drivers/media/radio/tea575x 0xff425947 snd_tea575x_hw_init +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x04dca738 lirc_unregister_driver +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x2ccefc36 lirc_get_pdata +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x31541ec1 lirc_dev_fop_read +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x42229522 lirc_dev_fop_write +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x5e61e9ad lirc_dev_fop_close +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x630dee2d lirc_dev_fop_poll +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x917559ad lirc_register_driver +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x9ee2c87f lirc_dev_fop_ioctl +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0xafdf2610 lirc_dev_fop_open +EXPORT_SYMBOL drivers/media/rc/rc-core 0x75059ad7 ir_raw_handler_register +EXPORT_SYMBOL drivers/media/rc/rc-core 0x889ae259 ir_raw_handler_unregister +EXPORT_SYMBOL drivers/media/tuners/fc0011 0x2fb82d58 fc0011_attach +EXPORT_SYMBOL drivers/media/tuners/fc0012 0xc29623f1 fc0012_attach +EXPORT_SYMBOL drivers/media/tuners/fc0013 0x021bed52 fc0013_rc_cal_add +EXPORT_SYMBOL drivers/media/tuners/fc0013 0x96f78cbf fc0013_rc_cal_reset +EXPORT_SYMBOL drivers/media/tuners/fc0013 0xb1af82c4 fc0013_attach +EXPORT_SYMBOL drivers/media/tuners/max2165 0xce0ca971 max2165_attach +EXPORT_SYMBOL drivers/media/tuners/mc44s803 0x3fe9cf37 mc44s803_attach +EXPORT_SYMBOL drivers/media/tuners/mt2060 0x15be9d30 mt2060_attach +EXPORT_SYMBOL drivers/media/tuners/mt2131 0x2df62a15 mt2131_attach +EXPORT_SYMBOL drivers/media/tuners/mt2266 0xb63e96d6 mt2266_attach +EXPORT_SYMBOL drivers/media/tuners/mxl5005s 0x22608474 mxl5005s_attach +EXPORT_SYMBOL drivers/media/tuners/qt1010 0xcf9195fc qt1010_attach +EXPORT_SYMBOL drivers/media/tuners/tda18218 0xfaa7b290 tda18218_attach +EXPORT_SYMBOL drivers/media/tuners/tuner-types 0x0cb4b189 tuners +EXPORT_SYMBOL drivers/media/tuners/tuner-types 0xc2821775 tuner_count +EXPORT_SYMBOL drivers/media/tuners/tuner-xc2028 0xb2a07257 xc2028_attach +EXPORT_SYMBOL drivers/media/tuners/xc4000 0x0781912a xc4000_attach +EXPORT_SYMBOL drivers/media/tuners/xc5000 0xb892f55c xc5000_attach +EXPORT_SYMBOL drivers/media/usb/cx231xx/cx231xx 0x17e39be2 cx231xx_register_extension +EXPORT_SYMBOL drivers/media/usb/cx231xx/cx231xx 0x3fbd3a9b cx231xx_unregister_extension +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x0505fe40 dvb_usbv2_reset_resume +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x22fb72bf dvb_usbv2_disconnect +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x5172b963 dvb_usbv2_resume +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x54cbdcd8 dvb_usbv2_generic_rw_locked +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x55032d52 dvb_usbv2_generic_rw +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x8bc2a75c dvb_usbv2_probe +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x91fc86f0 dvb_usbv2_suspend +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0xe0904548 dvb_usbv2_generic_write +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0xfdba410d dvb_usbv2_generic_write_locked +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x087e6e7f dvb_usb_generic_rw +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x5f73521d usb_cypress_load_firmware +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x6bcf9573 dvb_usb_get_hexline +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x7de3b9d0 dvb_usb_device_init +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x977e7bdb dvb_usb_nec_rc_key_to_event +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0xa4ee6904 dvb_usb_generic_write +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0xb2028525 dvb_usb_device_exit +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-af9005-remote 0x13e247e0 rc_map_af9005_table +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-af9005-remote 0x49b6f80f 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 0x10cbb3c5 dibusb2_0_power_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x4a5bf199 dibusb_read_eeprom_byte +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x5041e6fb dibusb_dib3000mc_tuner_attach +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x5c6388b8 dibusb_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x7d65ace8 dibusb_pid_filter +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xa9d0a928 dibusb_streaming_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xb47559e0 rc_map_dibusb_table +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xc04b465e dibusb_i2c_algo +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xcc080ba3 dibusb_power_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xd5b9c629 dibusb_dib3000mc_frontend_attach +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xd900efba dibusb2_0_streaming_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xdcf2e1cf dibusb_rc_query +EXPORT_SYMBOL drivers/media/usb/em28xx/em28xx 0x644c7138 em28xx_register_extension +EXPORT_SYMBOL drivers/media/usb/em28xx/em28xx 0x99a0c2b5 em28xx_unregister_extension +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x2239662d go7007_parse_video_stream +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x229a96dc go7007_read_addr +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x28e07d28 go7007_boot_encoder +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x2a7be10c go7007_snd_init +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x3b5a0a01 go7007_snd_remove +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x5583ed4f go7007_alloc +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x639e005b go7007_register_encoder +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x64c33557 go7007_read_interrupt +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0xe19f919d go7007_update_board +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x3bf36e32 gspca_coarse_grained_expo_autogain +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x40bfeeaa gspca_dev_probe2 +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x49cbc816 gspca_expo_autogain +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x51b7ef74 gspca_disconnect +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x776cedc9 gspca_dev_probe +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x8a036b85 gspca_suspend +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x9670af2c gspca_debug +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0xa3a7c71f gspca_frame_add +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0xe654b0ac gspca_resume +EXPORT_SYMBOL drivers/media/usb/tm6000/tm6000 0x0302f77b tm6000_init_digital_mode +EXPORT_SYMBOL drivers/media/usb/tm6000/tm6000 0xc061aad1 tm6000_register_extension +EXPORT_SYMBOL drivers/media/usb/tm6000/tm6000 0xfd0c43b5 tm6000_unregister_extension +EXPORT_SYMBOL drivers/media/usb/ttusb-dec/ttusbdecfe 0xc0940503 ttusbdecfe_dvbs_attach +EXPORT_SYMBOL drivers/media/usb/ttusb-dec/ttusbdecfe 0xeb5304c9 ttusbdecfe_dvbt_attach +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-common 0xabe27502 v4l2_ctrl_query_fill +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-mem2mem 0x3f1a2340 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 0x7ac88adf v4l2_m2m_job_finish +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-mem2mem 0xfa557d79 v4l2_m2m_get_vq +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0x138d86e0 videobuf_dvb_register_bus +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0x382329f3 videobuf_dvb_dealloc_frontends +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0x83c9d30f videobuf_dvb_get_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0x899227ce videobuf_dvb_alloc_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0xcf7b723a videobuf_dvb_find_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0xee0a34ef videobuf_dvb_unregister_bus +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-core 0x0f304960 vb2_querybuf +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0x19d8035f vb2_dvb_dealloc_frontends +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0x9b2e1bf1 vb2_dvb_alloc_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0xa4c9873c vb2_dvb_find_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0xb6a88daa vb2_dvb_get_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0xddffae26 vb2_dvb_unregister_bus +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-dvb 0xfdf3baec vb2_dvb_register_bus +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x0112d749 v4l2_ctrl_new_std_menu_items +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x04cdd93b v4l2_ctrl_subscribe_event +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x05af1dd5 v4l2_ctrl_subdev_log_status +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x0614dd5a v4l2_video_std_frame_period +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x07ef0f86 v4l2_g_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x086279d5 v4l2_of_parse_endpoint +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x0aeaeb53 v4l2_querymenu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x123959a1 v4l2_type_names +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x1576da89 v4l2_async_notifier_unregister +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x16244fe5 v4l2_prio_check +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x18174f45 v4l2_ctrl_grab +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x1b5c0864 v4l2_ctrl_merge +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x1e12576b v4l2_clk_enable +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x202b99df v4l2_clk_register +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x2342f1ae v4l2_prio_open +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x26b90711 video_device_release +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x293adea9 v4l2_ctrl_notify +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x3131c4df v4l2_subdev_init +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x35916dac v4l2_query_ext_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x36847d11 v4l2_ctrl_get_int_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x3981fd19 v4l2_ctrl_radio_filter +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 0x3d540517 v4l2_ctrl_handler_free +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x40b0753c v4l2_ctrl_add_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x41f64725 video_unregister_device +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x455ed8ef v4l2_s_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x45a44c24 v4l2_ctrl_fill +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x4808afb3 video_devdata +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x495426ee v4l2_ctrl_get_name +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x4b77c88d v4l2_ctrl_replace +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x4cea9738 v4l2_clk_unregister_fixed +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x4ed4bec1 v4l2_of_parse_link +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x519adfab __video_register_device +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x569327ca v4l2_of_free_endpoint +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x5c52790b v4l2_ctrl_new_std_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x5f8a7a1d __v4l2_ctrl_modify_range +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x62fd9859 v4l2_subdev_try_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x633f1dbb v4l2_async_notifier_register +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x64485f91 __v4l2_ctrl_s_ctrl_int64 +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x674e2989 v4l2_ctrl_find +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x681b4d18 v4l2_clk_get_rate +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x6e5c8fe8 v4l2_subdev_s_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x70e0e071 v4l2_s_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x742e235f v4l2_ctrl_cluster +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x7893cd51 v4l2_try_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x7a3cd015 v4l2_ctrl_get_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x7d212e06 v4l2_queryctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x7d9bee8f v4l2_subdev_queryctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x8106095a v4l2_prio_max +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x83b5b40f video_usercopy +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x856e90b3 v4l2_subdev_querymenu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x877e6ab9 v4l2_ctrl_handler_init_class +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x880c99cc v4l2_clk_get +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x8cca626f v4l2_ctrl_auto_cluster +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x8e00428a v4l2_ctrl_subdev_subscribe_event +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x8e3a632e v4l2_ctrl_activate +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x976c35f7 v4l2_subdev_g_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x9a9c0b61 video_ioctl2 +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x9b0991e8 video_device_alloc +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x9c265e8d v4l2_subdev_g_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xa033ba9a v4l2_subdev_s_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xa27848c8 v4l2_ctrl_poll +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb1d0d4ac v4l2_clk_disable +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb419b6c6 v4l2_of_alloc_parse_endpoint +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb77b0159 v4l2_prio_init +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb8c5ca24 __v4l2_clk_register_fixed +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xbc5671dc v4l_printk_ioctl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xbe8a1b28 v4l2_clk_put +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xc5f7b429 video_device_release_empty +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xc6ef1dae v4l2_ctrl_add_handler +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xc8a2d38a __v4l2_ctrl_s_ctrl_string +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xc9cf3ed4 v4l2_ctrl_sub_ev_ops +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xca5b269c v4l2_async_unregister_subdev +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xcd7e66da __v4l2_ctrl_s_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xcda04a5b v4l2_prio_close +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xd8c44cc3 v4l2_async_register_subdev +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xdd19a76a v4l2_of_put_link +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xddb324c0 v4l2_g_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe06cb110 v4l2_ctrl_new_std +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe2b92059 v4l2_video_std_construct +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe32f8861 v4l2_ctrl_new_custom +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe53e7271 v4l2_ctrl_handler_setup +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe59721e0 v4l2_ctrl_g_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe5b19c2c v4l2_clk_set_rate +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe9422f12 v4l2_clk_unregister +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe9c03b2d v4l2_ctrl_new_int_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf3251e7b v4l2_norm_to_name +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf5be7750 v4l2_ctrl_g_ctrl_int64 +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xfa13dd19 v4l2_ctrl_handler_log_status +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xfe37113d v4l2_ctrl_log_status +EXPORT_SYMBOL drivers/memstick/core/memstick 0x02634ee3 memstick_next_req +EXPORT_SYMBOL drivers/memstick/core/memstick 0x034da9a7 memstick_register_driver +EXPORT_SYMBOL drivers/memstick/core/memstick 0x04b46bb7 memstick_detect_change +EXPORT_SYMBOL drivers/memstick/core/memstick 0x459bb4c2 memstick_add_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x5d820a02 memstick_init_req_sg +EXPORT_SYMBOL drivers/memstick/core/memstick 0x61e564c7 memstick_unregister_driver +EXPORT_SYMBOL drivers/memstick/core/memstick 0x631b797e memstick_alloc_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x72789410 memstick_suspend_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x80ff0eda memstick_remove_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x8527c49a memstick_resume_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0xb623d985 memstick_new_req +EXPORT_SYMBOL drivers/memstick/core/memstick 0xc84c0d0d memstick_free_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0xdc07e67e memstick_init_req +EXPORT_SYMBOL drivers/memstick/core/memstick 0xf228c50c memstick_set_rw_addr +EXPORT_SYMBOL drivers/memstick/host/r592 0x52f1b23b memstick_debug_get_tpc_name +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x0c0b9890 mpt_resume +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x1b46a4f8 mpt_verify_adapter +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x22fbc801 mpt_attach +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x3abb1cfa mpt_suspend +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x44cb8557 mpt_set_taskmgmt_in_progress_flag +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x4526289b mpt_event_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x502108d0 mpt_fwfault_debug +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x5382b537 mpt_raid_phys_disk_get_num_paths +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x5638169b mpt_put_msg_frame +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x63491872 mpt_raid_phys_disk_pg1 +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x6fca6523 mpt_detach +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x7765433d mpt_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x78c6a717 mpt_put_msg_frame_hi_pri +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x791c033c mpt_config +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x82ad2460 mpt_halt_firmware +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x8924bf08 mpt_free_msg_frame +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x8ae7af27 mpt_send_handshake_request +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xac85643e mpt_event_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xb048142c mpt_print_ioc_summary +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xb079b6ce mpt_device_driver_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xb1e8ffff mpt_Soft_Hard_ResetHandler +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xbefaa27c mpt_raid_phys_disk_pg0 +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xc0e69f82 mpt_device_driver_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xc47c22e8 mpt_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xc98f033c mptbase_sas_persist_operation +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xceeda079 mpt_free_fw_memory +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xd9a92a75 mpt_reset_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xd9b7f1a4 mpt_clear_taskmgmt_in_progress_flag +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xdd805159 ioc_list +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xe2053edd mpt_alloc_fw_memory +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xe29a1c8b mpt_HardResetHandler +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xe4d94cb0 mpt_GetIocState +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xf02e2c89 mpt_get_msg_frame +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xf12633fd mpt_findImVolumes +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xf9418dd4 mpt_reset_register +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x00cf99b6 mptscsih_suspend +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x044b6c4b mptscsih_raid_id_to_num +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x10a38678 mptscsih_io_done +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x44465a26 mptscsih_slave_configure +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x508d2f71 mptscsih_resume +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x55093e53 mptscsih_IssueTaskMgmt +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x5a58ee9e mptscsih_get_scsi_lookup +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x5b83ae14 mptscsih_flush_running_cmds +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x5c877247 mptscsih_slave_destroy +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x6a508e42 mptscsih_dev_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x6e5f56d6 mptscsih_remove +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x90b3af9f mptscsih_shutdown +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x94d7f6ea mptscsih_info +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xa9cbc984 mptscsih_host_attrs +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xb019df1b mptscsih_bus_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xb414ea27 mptscsih_bios_param +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xbeb1e602 mptscsih_taskmgmt_complete +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xc5f63366 mptscsih_abort +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xc684fdd9 mptscsih_taskmgmt_response_code +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xd88d50da mptscsih_is_phys_disk +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xdfc1c340 mptscsih_ioc_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xe018bb25 mptscsih_show_info +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xe804f60a mptscsih_scandv_complete +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xf15165a7 mptscsih_change_queue_depth +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xf6ea9ee4 mptscsih_event_process +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xf820811a mptscsih_host_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xfdaa5683 mptscsih_qcmd +EXPORT_SYMBOL drivers/mfd/cros_ec 0x0088b96e cros_ec_suspend +EXPORT_SYMBOL drivers/mfd/cros_ec 0x4e04d8b8 cros_ec_remove +EXPORT_SYMBOL drivers/mfd/cros_ec 0x9ce11df4 cros_ec_resume +EXPORT_SYMBOL drivers/mfd/cros_ec 0xd1f1f023 cros_ec_register +EXPORT_SYMBOL drivers/mfd/dln2 0xaa33f3f9 dln2_transfer +EXPORT_SYMBOL drivers/mfd/dln2 0xba20c42c dln2_unregister_event_cb +EXPORT_SYMBOL drivers/mfd/dln2 0xec9e8c86 dln2_register_event_cb +EXPORT_SYMBOL drivers/mfd/htc-pasic3 0x23252361 pasic3_write_register +EXPORT_SYMBOL drivers/mfd/htc-pasic3 0x925bdee2 pasic3_read_register +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x2c341e8d mc13xxx_irq_unmask +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x36f7660b mc13xxx_lock +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x53c352a0 mc13xxx_reg_read +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x5a32c89a mc13xxx_irq_free +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x60811894 mc13xxx_irq_mask +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x8158658f mc13xxx_reg_rmw +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x9e3776ed mc13xxx_irq_status +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xabe4c426 mc13xxx_get_flags +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xafda3e60 mc13xxx_unlock +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xd4dae749 mc13xxx_reg_write +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xdca1209e mc13xxx_irq_request +EXPORT_SYMBOL drivers/mfd/tps6105x 0x303df614 tps6105x_set +EXPORT_SYMBOL drivers/mfd/tps6105x 0xa415a3f8 tps6105x_mask_and_set +EXPORT_SYMBOL drivers/mfd/tps6105x 0xa7d5d15f tps6105x_get +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-irq 0x3e368af0 wm8994_irq_exit +EXPORT_SYMBOL drivers/mfd/wm8994-irq 0xf79ad40e wm8994_irq_init +EXPORT_SYMBOL drivers/mfd/wm8994-regmap 0x53958065 wm8994_base_regmap_config +EXPORT_SYMBOL drivers/mfd/wm8994-regmap 0x5c89ad5a wm8994_regmap_config +EXPORT_SYMBOL drivers/mfd/wm8994-regmap 0x6eb316c3 wm8958_regmap_config +EXPORT_SYMBOL drivers/mfd/wm8994-regmap 0xf1d114ee wm1811_regmap_config +EXPORT_SYMBOL drivers/misc/ad525x_dpot 0x476be518 ad_dpot_remove +EXPORT_SYMBOL drivers/misc/ad525x_dpot 0xfd569162 ad_dpot_probe +EXPORT_SYMBOL drivers/misc/altera-stapl/altera-stapl 0xfefe536e altera_init +EXPORT_SYMBOL drivers/misc/c2port/core 0xae38f209 c2port_device_unregister +EXPORT_SYMBOL drivers/misc/c2port/core 0xb73f2b77 c2port_device_register +EXPORT_SYMBOL drivers/misc/ioc4 0x2d64d617 ioc4_register_submodule +EXPORT_SYMBOL drivers/misc/ioc4 0xae6e5bc8 ioc4_unregister_submodule +EXPORT_SYMBOL drivers/misc/tifm_core 0x329bda0f tifm_remove_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0x3e48abd2 tifm_alloc_device +EXPORT_SYMBOL drivers/misc/tifm_core 0x64e81909 tifm_eject +EXPORT_SYMBOL drivers/misc/tifm_core 0x7ca1d9dc tifm_register_driver +EXPORT_SYMBOL drivers/misc/tifm_core 0x8648df09 tifm_unmap_sg +EXPORT_SYMBOL drivers/misc/tifm_core 0x9ca5a508 tifm_map_sg +EXPORT_SYMBOL drivers/misc/tifm_core 0xa3c531bb tifm_free_device +EXPORT_SYMBOL drivers/misc/tifm_core 0xa835a0f0 tifm_free_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0xa8c2ec46 tifm_queue_work +EXPORT_SYMBOL drivers/misc/tifm_core 0xafeefac7 tifm_has_ms_pif +EXPORT_SYMBOL drivers/misc/tifm_core 0xbf8a11f1 tifm_alloc_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0xd4794d5a tifm_unregister_driver +EXPORT_SYMBOL drivers/misc/tifm_core 0xee3eb61f tifm_add_adapter +EXPORT_SYMBOL drivers/mmc/card/mmc_block 0xca494ceb mmc_cleanup_queue +EXPORT_SYMBOL drivers/mmc/host/of_mmc_spi 0x6418003b mmc_spi_get_pdata +EXPORT_SYMBOL drivers/mmc/host/of_mmc_spi 0xec7730cf mmc_spi_put_pdata +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x34ec345e cfi_merge_status +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x49549710 cfi_read_pri +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x4fffa661 cfi_fixup +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x9caad900 cfi_build_cmd +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0xa949bdaf cfi_build_cmd_addr +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0xb2192e12 cfi_varsize_frob +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0xc0eebfbb cfi_send_gen_cmd +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0xff9fa623 cfi_udelay +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0x2e63aa89 register_mtd_chip_driver +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0x400728c0 map_destroy +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0x9c2bca34 unregister_mtd_chip_driver +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0xd1154212 do_map_probe +EXPORT_SYMBOL drivers/mtd/chips/gen_probe 0x200a464a mtd_do_chip_probe +EXPORT_SYMBOL drivers/mtd/lpddr/lpddr_cmds 0x1f38afa7 lpddr_cmdset +EXPORT_SYMBOL drivers/mtd/maps/map_funcs 0x0d2657dd simple_map_init +EXPORT_SYMBOL drivers/mtd/mtd 0x17a34762 mtd_concat_create +EXPORT_SYMBOL drivers/mtd/mtd 0xe381477d mtd_concat_destroy +EXPORT_SYMBOL drivers/mtd/nand/denali 0xb49c0815 denali_remove +EXPORT_SYMBOL drivers/mtd/nand/denali 0xc7053b79 denali_init +EXPORT_SYMBOL drivers/mtd/nand/nand 0x0cc0cc87 nand_scan_tail +EXPORT_SYMBOL drivers/mtd/nand/nand 0x19e46ab6 nand_unlock +EXPORT_SYMBOL drivers/mtd/nand/nand 0x1ad0efdd nand_scan_bbt +EXPORT_SYMBOL drivers/mtd/nand/nand 0x5a7b9791 nand_scan +EXPORT_SYMBOL drivers/mtd/nand/nand 0x735cc1f7 nand_lock +EXPORT_SYMBOL drivers/mtd/nand/nand 0xaa82cbc4 nand_scan_ident +EXPORT_SYMBOL drivers/mtd/nand/nand 0xef859391 onfi_async_timing_mode_to_sdr_timings +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0x450f1d8d nand_bch_correct_data +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0x70097aa0 nand_bch_free +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0xbde6ac56 nand_bch_calculate_ecc +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0xfc171d41 nand_bch_init +EXPORT_SYMBOL drivers/mtd/nand/nand_ecc 0x3132ee65 __nand_calculate_ecc +EXPORT_SYMBOL drivers/mtd/nand/nand_ecc 0xb4b94377 __nand_correct_data +EXPORT_SYMBOL drivers/mtd/nand/nand_ecc 0xc9361383 nand_correct_data +EXPORT_SYMBOL drivers/mtd/nand/nand_ecc 0xf17f8139 nand_calculate_ecc +EXPORT_SYMBOL drivers/mtd/nand/nand_ids 0x8cfcf75c nand_flash_ids +EXPORT_SYMBOL drivers/mtd/nand/nand_ids 0xa336feb7 nand_manuf_ids +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0x8c3fdce0 onenand_addr +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0x8cb1edc6 onenand_scan_bbt +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0xa5e2133c onenand_default_bbt +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0xe91417f8 flexonenand_region +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x3546e89c arcnet_close +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x4e3bfdb0 arc_raw_proto +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x4fb285cf arcnet_timeout +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x6534792a arcnet_debug +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x7a308939 arcnet_unregister_proto +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x7da385de arc_proto_default +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x986af028 arcnet_open +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x994f6a7c arc_bcast_proto +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xa2a6f928 arc_proto_map +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xb63ddd5a alloc_arcdev +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xcb746643 arcnet_send_packet +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xecb730b0 arcnet_interrupt +EXPORT_SYMBOL drivers/net/arcnet/com20020 0x40c46215 com20020_found +EXPORT_SYMBOL drivers/net/arcnet/com20020 0x94b6e26f com20020_check +EXPORT_SYMBOL drivers/net/arcnet/com20020 0xf7382506 com20020_netdev_ops +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x119721ac ei_interrupt +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x1281898a ei_set_multicast_list +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x54bd8c37 ei_get_stats +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x558ffbc3 ei_poll +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x5c75c2d7 ei_open +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x6d04c436 __alloc_ei_netdev +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x74fc1c19 ei_start_xmit +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x93320c2d NS8390_init +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xafd7adb7 ei_netdev_ops +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xedb9ab9c ei_tx_timeout +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xf1b9918f ei_close +EXPORT_SYMBOL drivers/net/ethernet/broadcom/bnx2x/bnx2x 0x078985fa bnx2x_schedule_sp_rtnl +EXPORT_SYMBOL drivers/net/ethernet/broadcom/cnic 0x636af174 cnic_unregister_driver +EXPORT_SYMBOL drivers/net/ethernet/broadcom/cnic 0xf6acd4f6 cnic_register_driver +EXPORT_SYMBOL drivers/net/ethernet/cavium/thunder/thunder_bgx 0x285bde59 bgx_get_rx_stats +EXPORT_SYMBOL drivers/net/ethernet/cavium/thunder/thunder_bgx 0x42264715 bgx_get_lmac_count +EXPORT_SYMBOL drivers/net/ethernet/cavium/thunder/thunder_bgx 0x6dc1648d bgx_get_lmac_mac +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 0xe48ca42a bgx_get_tx_stats +EXPORT_SYMBOL drivers/net/ethernet/cavium/thunder/thunder_bgx 0xf101d1b2 bgx_get_lmac_link_state +EXPORT_SYMBOL drivers/net/ethernet/cavium/thunder/thunder_bgx 0xf9508980 bgx_set_lmac_mac +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x203da4b8 cxgb3_ofld_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x2d039ea7 cxgb3_remove_tid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x331a5a78 t3_register_cpl_handler +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x4388864d dev2t3cdev +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x444f5001 cxgb3_free_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x547bc3f2 t3_l2t_send_slow +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x54fda735 cxgb3_unregister_client +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x6e8d1179 cxgb3_alloc_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x6e8f7468 cxgb3_register_client +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xa0200294 t3_l2t_get +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xa468469b cxgb3_insert_tid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xc65fb3f0 cxgb3_queue_tid_release +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xdc4061b4 t3_l2e_free +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xe0b06487 cxgb3_alloc_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xe9aa9010 cxgb3_free_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xeb646335 t3_l2t_send_event +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x053fd92a cxgb4_port_chan +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x09d8fab0 cxgb4_alloc_sftid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x1363c1d6 cxgb4_read_tpte +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x1b3c2b26 cxgb4_l2t_get +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x2bd9a105 cxgb4_free_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x394e0236 cxgb4_l2t_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x4b267ba2 cxgb4_remove_server_filter +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x4d38a931 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 0x5a89639e cxgb4_free_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x5e5a2749 cxgb4_clip_release +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x62113836 cxgb4_l2t_release +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x6a448e18 cxgb4_flush_eq_cache +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x6ec4e27a cxgb4_pktgl_to_skb +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x7801657f cxgb4_iscsi_init +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x93ebe3a7 cxgb4_read_sge_timestamp +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x9f4b5818 cxgb4_dcb_enabled +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xa0a7110e cxgb4_remove_tid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xa2fb94bf cxgb4_select_ntuple +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xa3035303 cxgb4_alloc_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xa84f5f82 cxgb4_ofld_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xb094323c cxgb4_get_tcp_stats +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xb2916f32 cxgb4_bar2_sge_qregs +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xb33c074a cxgb4_register_uld +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xbc49d13b cxgb4_create_server +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xbcbe7be2 cxgb4_clip_get +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xcd7da046 cxgb4_sync_txq_pidx +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xd00e5a36 cxgb4_unregister_uld +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xd4f6d331 cxgb4_port_idx +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xd69a0294 cxgb4_best_mtu +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xde00773e cxgb4_update_root_dev_clip +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xe5fe7b7c cxgb4_remove_server +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xefedf731 t4_cleanup_clip_tbl +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xf13cc0c5 cxgb4_create_server6 +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xf7115902 cxgb4_dbfifo_count +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xff4c31f8 cxgb4_alloc_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xfffa3f5c cxgb4_port_viid +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0x0e712340 vnic_dev_get_res +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0x4bc67ac5 vnic_dev_register +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0x4f650da7 vnic_dev_get_res_count +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0x77f7ebfa vnic_dev_get_pdev +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0x9196d804 vnic_dev_unregister +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0xce0381a5 enic_api_devcmd_proxy_by_index +EXPORT_SYMBOL drivers/net/ethernet/emulex/benet/be2net 0x7c5ed56c be_roce_register_driver +EXPORT_SYMBOL drivers/net/ethernet/emulex/benet/be2net 0x8103911b be_roce_unregister_driver +EXPORT_SYMBOL drivers/net/ethernet/emulex/benet/be2net 0xbab62e22 be_roce_mcc_cmd +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x066300df mlx4_sync_pkey_table +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x110f83e7 mlx4_get_module_info +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1ab5bdff mlx4_get_slave_port_state +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2b2186e8 mlx4_release_eq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x309e4898 mlx4_ALLOCATE_VPP_set +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3840e6fb mlx4_SET_PORT_BEACON +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3bcf1cc2 mlx4_get_slave_node_guid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3f8f8884 mlx4_eq_get_irq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4a1cedab mlx4_get_slave_from_roce_gid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4e9b3fc5 mlx4_SET_PORT_PRIO2TC +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x50f431b7 mlx4_is_eq_vector_valid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5f9499e8 mlx4_get_slave_pkey_gid_tbl_len +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6e6c452b mlx4_gen_pkey_eqe +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x722fcf75 mlx4_SET_PORT_general +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x85359ee6 mlx4_gen_guid_change_eqe +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x857cff2f mlx4_get_parav_qkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8be82f3c mlx4_is_slave_active +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9679487e mlx4_SET_PORT_SCHEDULER +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa3ef2b00 mlx4_get_cpu_rmap +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa8706350 mlx4_put_slave_node_guid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xab6cc6a9 mlx4_gen_slaves_port_mgt_ev +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb46c2e25 mlx4_get_roce_gid_from_slave +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbbddee16 mlx4_SET_PORT_fcs_check +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbd0f72dc mlx4_SET_PORT_qpn_calc +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc2377977 mlx4_SET_PORT_VXLAN +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc261773d mlx4_get_eqs_per_port +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc4a769c5 mlx4_is_eq_shared +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc5411024 set_and_calc_slave_port_state +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc99ca335 mlx4_assign_eq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd7cea753 mlx4_SET_MCAST_FLTR +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd904d703 mlx4_SET_VPORT_QOS_set +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xdc466c6e mlx4_gen_port_state_change_eqe +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xef523780 mlx4_SET_VPORT_QOS_get +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf1ce9f63 mlx4_tunnel_steer_add +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf37f556c mlx4_ALLOCATE_VPP_get +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xfae9c9a1 mlx4_test_interrupts +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x0011987a mlx5_core_attach_mcg +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x03162913 mlx5_core_destroy_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x0857aabd mlx5_get_flow_table_id +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x0a937042 mlx5_core_modify_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x0eb7287e mlx5_del_flow_table_entry +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x10dad36a mlx5_create_flow_table +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x1d0a6ce5 mlx5_cmd_exec_cb +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x204d5c82 mlx5_unmap_free_uar +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x20b8b6e3 mlx5_cmd_free_uar +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x2fef1399 mlx5_cmd_cleanup +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x429bdf83 mlx5_core_create_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x440f72f6 mlx5_core_destroy_psv +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x452daebe mlx5_core_arm_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x472dc5ec mlx5_core_destroy_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x48624ae5 mlx5_core_query_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x639bd7e1 mlx5_query_nic_vport_mac_address +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x6dcefb87 mlx5_get_protocol_dev +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x7d7ccc8f mlx5_register_interface +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x80404564 mlx5_cmd_alloc_uar +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x85c6be9f mlx5_core_query_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x876fbf14 mlx5_cmd_exec +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x8d510623 mlx5_core_create_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x8eb91648 mlx5_core_destroy_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x9b98c693 mlx5_core_alloc_pd +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x9d2d4b3f mlx5_unregister_interface +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa02f8d36 mlx5_core_dump_fill_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa32c39c2 mlx5_cmd_init +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa4424f66 mlx5_core_query_vendor_id +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa60f9b38 mlx5_core_get_srq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa813c25a mlx5_alloc_map_uar +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xb1e5c228 mlx5_core_detach_mcg +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xb47a4681 mlx5_core_create_psv +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xc18cd653 mlx5_cmd_comp_handler +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xc25dc774 mlx5_core_query_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xc49d6b1a mlx5_debugfs_root +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xca574ef3 mlx5_core_create_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xcc6c1fb9 mlx5_core_dealloc_pd +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe6af33e4 mlx5_destroy_flow_table +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf639b8d3 mlx5_query_vport_state +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf7880531 mlx5_vector2eqn +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xfc728a49 mlx5_add_flow_table_entry +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x0ca17138 hdlcdrv_transmitter +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x2f4a08a2 hdlcdrv_unregister +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x7e4de9a1 hdlcdrv_arbitrate +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0xc5d75a42 hdlcdrv_register +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0xfe91a6e5 hdlcdrv_receiver +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x072299eb sirdev_set_dongle +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x33c75a32 sirdev_receive +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x353177ce irda_register_dongle +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x3bee7129 sirdev_raw_read +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x517e6e71 sirdev_raw_write +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x65b7ec18 sirdev_put_instance +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x84121dda sirdev_get_instance +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x93d4150a sirdev_write_complete +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xe706fcb7 irda_unregister_dongle +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xf4b1fba4 sirdev_set_dtr_rts +EXPORT_SYMBOL drivers/net/mdio 0x22bce513 mdio_mii_ioctl +EXPORT_SYMBOL drivers/net/mdio 0x43e4defc mdio45_nway_restart +EXPORT_SYMBOL drivers/net/mdio 0x7577f992 mdio_set_flag +EXPORT_SYMBOL drivers/net/mdio 0xa1a29548 mdio45_probe +EXPORT_SYMBOL drivers/net/mdio 0xc6b1163f mdio45_links_ok +EXPORT_SYMBOL drivers/net/mdio 0xddc98749 mdio45_ethtool_gset_npage +EXPORT_SYMBOL drivers/net/mii 0x0ea952a8 mii_ethtool_sset +EXPORT_SYMBOL drivers/net/mii 0x4ea2c32c generic_mii_ioctl +EXPORT_SYMBOL drivers/net/mii 0x67cc40b9 mii_check_link +EXPORT_SYMBOL drivers/net/mii 0x8175f94f mii_check_media +EXPORT_SYMBOL drivers/net/mii 0x981e8fab mii_nway_restart +EXPORT_SYMBOL drivers/net/mii 0x9e46f0c4 mii_ethtool_gset +EXPORT_SYMBOL drivers/net/mii 0xac3a2c03 mii_link_ok +EXPORT_SYMBOL drivers/net/mii 0xae539dc4 mii_check_gmii_support +EXPORT_SYMBOL drivers/net/phy/mdio-bitbang 0x4721eeba free_mdio_bitbang +EXPORT_SYMBOL drivers/net/phy/mdio-bitbang 0xa7c909aa alloc_mdio_bitbang +EXPORT_SYMBOL drivers/net/phy/mdio-octeon 0x8a1d5c26 octeon_mdiobus_force_mod_depencency +EXPORT_SYMBOL drivers/net/phy/vitesse 0x0d4e8e1f vsc824x_add_skew +EXPORT_SYMBOL drivers/net/ppp/pppox 0x04474190 pppox_unbind_sock +EXPORT_SYMBOL drivers/net/ppp/pppox 0x0ab15840 pppox_ioctl +EXPORT_SYMBOL drivers/net/ppp/pppox 0x6b1c83c4 register_pppox_proto +EXPORT_SYMBOL drivers/net/ppp/pppox 0xe0ff7a18 unregister_pppox_proto +EXPORT_SYMBOL drivers/net/sungem_phy 0xf34d2224 sungem_phy_probe +EXPORT_SYMBOL drivers/net/team/team 0x1aa75d1b team_options_unregister +EXPORT_SYMBOL drivers/net/team/team 0x205e297d team_options_register +EXPORT_SYMBOL drivers/net/team/team 0x2923b43d team_mode_register +EXPORT_SYMBOL drivers/net/team/team 0x3ae624e5 team_modeop_port_enter +EXPORT_SYMBOL drivers/net/team/team 0x52237970 team_mode_unregister +EXPORT_SYMBOL drivers/net/team/team 0x5d0df707 team_option_inst_set_change +EXPORT_SYMBOL drivers/net/team/team 0x89995845 team_options_change_check +EXPORT_SYMBOL drivers/net/team/team 0xf1206612 team_modeop_port_change_dev_addr +EXPORT_SYMBOL drivers/net/usb/usbnet 0x4db60029 usbnet_manage_power +EXPORT_SYMBOL drivers/net/usb/usbnet 0x72dcb931 usbnet_link_change +EXPORT_SYMBOL drivers/net/usb/usbnet 0xe1a643a2 usbnet_device_suggests_idle +EXPORT_SYMBOL drivers/net/wan/hdlc 0x0ccecfc9 hdlc_change_mtu +EXPORT_SYMBOL drivers/net/wan/hdlc 0x2824208b hdlc_ioctl +EXPORT_SYMBOL drivers/net/wan/hdlc 0x2b6bea54 attach_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0x3841d200 detach_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0x4e6a3612 hdlc_start_xmit +EXPORT_SYMBOL drivers/net/wan/hdlc 0x5a235ef8 unregister_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0x609a0faf hdlc_open +EXPORT_SYMBOL drivers/net/wan/hdlc 0x71dbb92f unregister_hdlc_device +EXPORT_SYMBOL drivers/net/wan/hdlc 0x7f8172f5 hdlc_close +EXPORT_SYMBOL drivers/net/wan/hdlc 0xce75c0a9 alloc_hdlcdev +EXPORT_SYMBOL drivers/net/wan/hdlc 0xeed9bf44 register_hdlc_protocol +EXPORT_SYMBOL drivers/net/wimax/i2400m/i2400m 0xecab705e i2400m_unknown_barker +EXPORT_SYMBOL drivers/net/wireless/airo 0x71bb81e6 init_airo_card +EXPORT_SYMBOL drivers/net/wireless/airo 0x7e1b3c82 stop_airo_card +EXPORT_SYMBOL drivers/net/wireless/airo 0xf0682339 reset_airo_card +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x070590d0 ath_rxbuf_alloc +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x074e2d4d ath_printk +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x1170728f ath_reg_notifier_apply +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x1a7cb22c ath_key_config +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x1dd88cd8 ath_hw_keyreset +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x319c6026 ath_is_49ghz_allowed +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x50de208d dfs_pattern_detector_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x5909e6c5 ath_hw_setbssidmask +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x7ab85787 ath_hw_cycle_counters_update +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x87a7d7f1 ath_key_delete +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xaafdb617 ath_is_world_regd +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xac5cd1f3 ath_hw_get_listen_time +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xc60a29ef ath_regd_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xed5fbd49 ath_is_mybeacon +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xfb4de67a ath_regd_get_band_ctl +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x096e815a ath10k_debug_get_new_fw_crash_data +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x197711fe ath10k_core_register +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x1f29433d ath10k_core_unregister +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x23a0a876 ath10k_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x7f0f1cf0 ath10k_core_create +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x8930132b ath10k_print_driver_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xa2e0f480 ath10k_core_stop +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xae40d4e6 ath10k_err +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xca8b832d ath10k_core_start +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xd07ece58 ath10k_core_destroy +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xeb06424c ath10k_warn +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x3d1cb657 ath6kl_hif_intr_bh_handler +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x4b520ab8 ath6kl_stop_txrx +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x524b78bf ath6kl_core_cleanup +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x59183122 ath6kl_core_rx_complete +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x6ebdd4d7 ath6kl_core_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x7b317424 ath6kl_printk +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x80a09613 ath6kl_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x91cfb84a ath6kl_hif_rw_comp_handler +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x9b0b31ad ath6kl_core_create +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xa6f66cc1 ath6kl_warn +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xb906f411 ath6kl_cfg80211_suspend +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xc9d80827 ath6kl_core_destroy +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xcb014460 ath6kl_err +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xcd488fd9 ath6kl_cfg80211_resume +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xcde47ebf ath6kl_core_tx_complete +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x1a88718a ath9k_cmn_beacon_config_adhoc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x1dd880d8 ath9k_cmn_process_rate +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x2d15177d ath9k_cmn_debug_stat_rx +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x2e67fafd ath9k_cmn_init_channels_rates +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x3569f4cb ath9k_cmn_debug_base_eeprom +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x4fbd2794 ath9k_cmn_spectral_init_debug +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x61123856 ath9k_cmn_get_channel +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x642d67d0 ath9k_cmn_debug_modal_eeprom +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x6dd5ee3c ath9k_cmn_update_txpow +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x766a03c9 ath9k_cmn_get_hw_crypto_keytype +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x77301ca8 ath9k_cmn_setup_ht_cap +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x8ade34f5 ath9k_cmn_spectral_scan_config +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x9d0f1aaa ath9k_cmn_reload_chainmask +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x9f1b4329 ath9k_cmn_beacon_config_ap +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xaa11d573 ath9k_cmn_process_rssi +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xb3042020 ath9k_cmn_debug_recv +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xb8da64d2 ath9k_cmn_init_crypto +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xc203cd18 ath9k_cmn_spectral_scan_trigger +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xcc6c5c76 ath_cmn_process_fft +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xd2981357 ath9k_cmn_count_streams +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xd9cfc125 ath9k_cmn_debug_phy_err +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xe8f2b775 ath9k_cmn_rx_skb_postprocess +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xf00aec2a ath9k_cmn_rx_accept +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xf8536b97 ath9k_cmn_beacon_config_sta +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xffbfc3a1 ath9k_cmn_spectral_deinit_debug +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x00529ec3 ar9003_paprd_init_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0231c8f9 ath9k_hw_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0420e249 ath9k_hw_getnf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x051dbdbc ath9k_hw_btcoex_bt_stomp +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0594c44a ath9k_hw_numtxpending +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x06d1288b ath9k_hw_releasetxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x07153887 ath9k_hw_process_rxdesc_edma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0b98cf2c ath9k_hw_set_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0b9b7f11 ath9k_hw_set_gpio +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0c9b19ea ath9k_hw_ani_monitor +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0ec3e118 ar9003_mci_set_bt_version +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1430d12d ar9003_mci_get_next_gpm_offset +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x191f4288 ath9k_hw_btcoex_init_scheme +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1aaa8686 ar9003_mci_cleanup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x23041c05 ar9003_paprd_is_done +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2f30b23f ath9k_hw_gen_timer_start +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x34c0eaf2 ath9k_hw_getrxfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x39e0e59c ath9k_hw_beaconinit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x3c07932c ar9003_paprd_create_curve +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x3eca0806 ath9k_hw_set_tsfadjust +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x425c8921 ar9003_mci_state +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4513f617 ath9k_hw_btcoex_set_weight +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x456443c4 ar9003_mci_send_message +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x45c309af ath9k_hw_btcoex_enable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x54343bb6 ath9k_hw_cfg_output +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x55c2081d ath9k_hw_enable_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x5730f0b7 ath9k_hw_setpower +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x5ad19d94 ath9k_hw_putrxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x5d8013cf ath9k_hw_wow_apply_pattern +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x5f47cfc5 ath9k_hw_intrpend +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x619e5ee4 ath9k_hw_set_tx_filter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x632eb9dc ath9k_hw_abort_tx_dma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x64186feb ath9k_hw_getchan_noise +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x656e079f ath9k_hw_stopdmarecv +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x662983f3 ar9003_mci_setup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x69c36bd6 ath9k_hw_btcoex_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6bf0c166 ath9k_hw_get_txq_props +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6ea879d7 ar9003_hw_bb_watchdog_dbg_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x76e9d969 ath9k_hw_bstuck_nfcal +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x778608fc ar9003_hw_disable_phy_restart +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7919c3aa ar9003_hw_bb_watchdog_check +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7be2e2bd ath9k_hw_btcoex_init_mci +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7eaf2d3a ath9k_hw_computetxtime +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x84a7652c ath9k_hw_wow_enable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x84e272c4 ath9k_hw_set_rx_bufsize +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x85e6b788 ath9k_hw_beaconq_setup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x869d5bcd ath9k_hw_init_btcoex_hw +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8ba243b5 ath9k_hw_set_txpowerlimit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8fafe6f8 ath9k_hw_reset_calvalid +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x915ab506 ath9k_hw_phy_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x91e03863 ath9k_hw_btcoex_init_2wire +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x920cef1e ath9k_hw_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x97fe49fc ath9k_hw_startpcureceive +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x99a50f6b ath9k_hw_gen_timer_stop +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9b7b93f4 ath9k_hw_setrxabort +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9de7489a ath9k_hw_rxprocdesc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9e75c0b1 ath9k_hw_setuptxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9f25a858 ath9k_hw_btcoex_set_concur_txprio +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa245ce68 ar9003_paprd_enable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa4ca2eb4 ar9003_mci_send_wlan_channels +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa54ce717 ath9k_hw_disable_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xabe64b2f ath9k_hw_gettxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xafca5bcc ath9k_hw_gettsf64 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb00882a6 ath9k_hw_init_global_settings +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb3ff949a ath_gen_timer_free +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb653447d ar9003_paprd_populate_single_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb75edd28 ath9k_hw_deinit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xba342fd2 ath9k_hw_updatetxtriglevel +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xbb135625 ath9k_hw_reset_tsf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xbdf4a521 ath_gen_timer_alloc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xbe18abe3 ath9k_hw_request_gpio +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xbfcb262d ath9k_hw_gpio_get +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc18556f4 ar9003_mci_get_interrupt +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc36eb7f3 ath9k_hw_settsf64 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc3e137fb ath9k_hw_check_alive +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc6e63e28 ath9k_hw_stop_dma_queue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc82060e0 ath9k_hw_gettsf32 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xcdd20010 ar9003_get_pll_sqsum_dvc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd12032eb ath9k_hw_kill_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd1e8874e ath9k_hw_check_nav +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd2360cc4 ath9k_hw_wow_wakeup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd3360e6d ar9003_is_paprd_enabled +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd5f3d054 ath9k_hw_reset +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd6aa698b ath9k_hw_name +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd95b0491 ath9k_hw_wait +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xdbe977ac ar9003_paprd_setup_gain_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xdc654764 ath9k_hw_puttxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xddf865b0 ath9k_hw_setuprxdesc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xdfa2779c ath9k_hw_setmcastfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xdfa38551 ath9k_hw_write_associd +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe039fc1e ath9k_hw_setup_statusring +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe1f0115b ath9k_hw_setopmode +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe6959820 ath9k_hw_set_txq_props +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe8891030 ath9k_hw_cfg_gpio_input +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xea132612 ath9k_hw_setantenna +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xeaeb3a2c ath9k_hw_btcoex_init_3wire +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xeb83c0e7 ath9k_hw_disable_mib_counters +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xebc20896 ath9k_hw_abortpcurecv +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xedc804c3 ath9k_hw_resettxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf49c7f06 ath9k_hw_addrxbuf_edma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf68f1164 ath9k_hw_set_sta_beacon_timers +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xfa1d82bf ath_gen_timer_isr +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xfa414298 ath9k_hw_txstart +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xfadcaedc ath9k_hw_setrxfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xffd02408 ath9k_hw_get_tsf_offset +EXPORT_SYMBOL drivers/net/wireless/atmel 0x3f63b2d9 stop_atmel_card +EXPORT_SYMBOL drivers/net/wireless/atmel 0x99154421 atmel_open +EXPORT_SYMBOL drivers/net/wireless/atmel 0xbe34d229 init_atmel_card +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x0da42def brcmu_pkt_buf_get_skb +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x2cc2061b brcmu_pktq_flush +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x3f2988a1 brcmu_dotrev_str +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x4c0c8927 brcmu_pktq_pdeq_tail +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x4da784cd brcmu_pktq_init +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x5380314e brcmu_pkt_buf_free_skb +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x56ebe68f brcmu_pktq_pdeq_match +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x6dceedb6 brcmu_pktq_penq +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x7f040a02 brcmu_pktq_pdeq +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x83f9aa57 brcmu_pktq_mlen +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x9f4b5dcf brcmu_d11_attach +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xa42a1f47 brcmu_pktq_pflush +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xcd2d5c35 brcmu_pktq_penq_head +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xd261b8a6 brcmu_boardrev_str +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xdedf4569 brcmu_pktq_mdeq +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xf7c2694c brcmu_pktq_peek_tail +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x00b703fa hostap_init_data +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x1723ac32 hostap_set_multicast_list_queue +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x26b6078f hostap_free_data +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x3424a7eb hostap_set_hostapd_sta +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x386de4d1 hostap_80211_ops +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x396f92e8 hostap_handle_sta_tx_exc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x4022b077 hostap_init_proc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x4ea13815 hostap_set_hostapd +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x531c449b hostap_get_porttype +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x59e2576d hostap_master_start_xmit +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x5ef1ebea hostap_set_string +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x5ff80bba hostap_init_ap_proc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x67bf2cf5 hostap_set_auth_algs +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x684c97a8 prism2_update_comms_qual +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x6c852a37 hostap_check_sta_fw_version +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x6f002be5 hostap_set_antsel +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x77ced910 hostap_remove_proc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x8327e6ec hostap_set_encryption +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xa12ad27f hostap_dump_tx_header +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xa5a0e5de hostap_info_init +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xb2a945e0 hostap_dump_rx_header +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xb2b609e5 hostap_80211_rx +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xb4b77c8b hostap_80211_get_hdrlen +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xcc87e4d0 hostap_set_word +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xd94ef3f5 hostap_set_roaming +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xda011286 hostap_remove_interface +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xf142831f hostap_info_process +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xfae2ce66 hostap_setup_dev +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xfb2aee66 hostap_add_interface +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x1784e83c libipw_channel_to_freq +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x1b5ad0ed libipw_rx +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x2a89887e libipw_wx_set_encode +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x2c1f1e61 libipw_wx_get_encode +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x377a9085 libipw_wx_get_scan +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x478ba284 libipw_is_valid_channel +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x4eef3ed2 libipw_channel_to_index +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x5d7ebe0f libipw_xmit +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x618dd087 libipw_freq_to_channel +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x697d64bf libipw_change_mtu +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x6fbbb363 free_libipw +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x79f04d5d alloc_libipw +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x8aeebfc9 libipw_wx_set_encodeext +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x8f842703 libipw_get_channel_flags +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x991c9105 libipw_get_geo +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xa3e3406f libipw_wx_get_encodeext +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xb31abe46 libipw_rx_mgt +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xc26e312f libipw_networks_age +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xccf1012e libipw_get_channel +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xe21d6d04 libipw_txb_free +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xf05e0c72 libipw_set_geo +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x0059ee6c il_set_decrypted_flag +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x0293a8dc il_read_targ_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x0351b78c il_eeprom_query_addr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x08d5a9c5 il_hdl_spectrum_measurement +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x0ab8f325 il_power_update_mode +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x0bee43d1 il_txq_update_write_ptr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x0c96fbe6 il_add_beacon_time +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x11a55bf6 il_tx_queue_unmap +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x130c21f1 _il_apm_stop +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x13f7ebd0 il_eeprom_query16 +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x15628722 il_mac_conf_tx +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x164f063e il_clear_ucode_stations +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x18746a8a il_hdl_pm_sleep +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x18908e24 il_update_stats +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x1a9772c9 il_set_rxon_ht +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x1bf106da il_send_cmd_pdu +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x1d4a6f44 il_init_channel_map +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x1d644b93 il_mac_change_interface +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x22bd6eec il_tx_cmd_complete +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x251932fc il_alloc_txq_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x25f5b3eb il_mac_sta_remove +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x26a9c0c9 il_send_cmd +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x27e2caa8 il_apm_stop +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x2ae9c8cb il_mac_remove_interface +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x2c48927d il_fill_probe_req +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x317c14d1 il_usecs_to_beacons +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x36d59620 il_wr_prph +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x376a204c il_tx_cmd_protection +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x390f023d il_send_cmd_sync +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x3af3d0b1 il_init_scan_params +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x3e28e7e0 il_get_lowest_plcp +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x423d0ffa il_send_lq_cmd +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x45bb5105 il_mac_config +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4aa39103 il_get_cmd_string +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4bb3afc5 il_restore_stations +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4d6b9ab3 il_tx_queue_reset +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4e26d62d il_rd_prph +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x501c1570 il_write_targ_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x501cdd64 il_cmd_queue_unmap +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x513f4891 il_get_active_dwell_time +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x5202034c il_hdl_pm_debug_stats +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x5564b4ee il_get_single_channel_number +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x55ece760 il_poll_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x564c6740 il_debug_level +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x57a2954b il_send_rxon_timing +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x590d4cac il_get_channel_info +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x5a3f17d5 il_apm_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x5dd8053d il_add_station_common +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x661cb09c il_power_initialize +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x6c4f6846 il_rx_queue_alloc +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x7544bfd8 il_setup_rx_scan_handlers +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x75ea59f8 il_mac_reset_tsf +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x775783f5 il_tx_queue_free +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x7b4ad3ef il_check_rxon_cmd +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x7b91777d il_free_txq_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x81a143c5 il_is_ht40_tx_allowed +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x860ab019 il_send_bt_config +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x87618199 il_rx_queue_update_write_ptr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x8b1529b0 il_hdl_error +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x945f0ef4 il_send_cmd_pdu_async +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x995789ac il_set_tx_power +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x9aba6c50 il_set_rate +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x9e1a3eb5 il_full_rxon_required +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa03e7950 il_set_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa191fc5d il_dbgfs_register +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa4f38efa il_free_channel_map +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa8aac62a il_chswitch_done +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xab0f7668 il_mac_flush +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xac0a4c8c _il_poll_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xae567d4b il_mac_bss_info_changed +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb177e9be il_rx_queue_space +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb4093002 il_get_passive_dwell_time +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb6564bb9 il_leds_exit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb6b7ef41 il_setup_watchdog +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb7bd33ff il_isr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb899562d il_dbgfs_unregister +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb9a79f4d il_irq_handle_error +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xbaf7ec0a il_force_reset +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xbea13e88 il_send_add_sta +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xbea650d6 il_mac_add_interface +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc39cf12c il_bg_watchdog +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc6dbc6bf il_set_rxon_hwcrypto +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc7fe2675 il_eeprom_free +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc8108aa2 il_mac_hw_scan +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc9248574 il_eeprom_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xcc757ac9 il_scan_cancel +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd00d26dc il_connection_init_rx_config +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd9af4e72 il_init_geos +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xdc156f0a il_tx_queue_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xdc382370 il_cancel_scan_deferred_work +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xde31d383 il_get_free_ucode_key_idx +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe3cad46b il_leds_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe435493a il_queue_space +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe5bea618 il_setup_scan_deferred_work +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe9b3fe7d il_free_geos +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xeb5011c5 il_set_flags_for_band +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xefa92f40 il_set_rxon_channel +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xefebd295 il_clear_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf43dfe02 il_scan_cancel_timeout +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf501278b il_bcast_addr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf7739605 il_cmd_queue_free +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xfb70c29e il_pm_ops +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xfb945764 il_hdl_csa +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xfe918236 il_send_stats_request +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x2f7b7e55 __tracepoint_iwlwifi_dev_ucode_wrap_event +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x3b9d00d6 __tracepoint_iwlwifi_dev_ioread32 +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x779dd6f5 __tracepoint_iwlwifi_dev_iowrite32 +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x85c1bb84 __tracepoint_iwlwifi_dev_iowrite8 +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x963a6f8a __tracepoint_iwlwifi_dev_ucode_error +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0xb8f7026f __tracepoint_iwlwifi_dev_ucode_cont_event +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0xf9ec6bdd __tracepoint_iwlwifi_dev_ucode_event +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x0146da7f orinoco_get_stats +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x121261b7 free_orinocodev +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x48ffe587 orinoco_if_add +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x507419dc orinoco_open +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x5169b39e alloc_orinocodev +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x5dea5bf1 hermes_struct_init +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x66e0503e orinoco_if_del +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x728f488a orinoco_tx_timeout +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xb378fbe6 orinoco_down +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xb771b660 orinoco_change_mtu +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xc516c020 orinoco_init +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xc9d01213 __orinoco_ev_rx +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xcc3cd29c orinoco_up +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xd81a6017 orinoco_stop +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xf13c9e41 orinoco_set_multicast_list +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xf3987535 orinoco_process_xmit_skb +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xf8052bae __orinoco_ev_info +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xffe27bca orinoco_interrupt +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/btcoexist/btcoexist 0x96619862 rtl_btc_get_ops_pointer +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x0037fe0c rtl92c_fill_h2c_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x07a5e82d rtl92c_phy_set_io_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x0ea1bfce rtl92c_dm_write_dig +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x17a57c15 _rtl92c_phy_txpwr_idx_to_dbm +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x1ff42e76 _rtl92c_phy_rf_serial_read +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x27bb7ece rtl92c_phy_iq_calibrate +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x2b7b0921 _rtl92c_phy_rf_serial_write +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x2bbcecb1 rtl92ce_phy_set_rf_on +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x312616ba rtl92c_firmware_selfreset +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x333be049 rtl92c_phy_set_io +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x36a994f3 _rtl92c_phy_dbm_to_txpwr_idx +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x4e189c15 rtl92c_set_fw_joinbss_report_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x4ec010a7 rtl92c_bt_rssi_state_change +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x5a9aa8b8 rtl92c_download_fw +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x5d9de32b rtl92c_set_fw_rsvdpagepkt +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x62ad8e61 rtl92c_phy_query_bb_reg +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x62f60cab rtl92c_phy_sw_chnl_callback +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x6449a776 rtl92c_phy_set_txpower_level +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x6781f102 rtl92c_dm_check_txpower_tracking +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x69c07e9a rtl92c_phy_set_bw_mode +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x7164fae9 rtl92c_phy_set_rfpath_switch +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x79a55fe7 rtl92c_phy_update_txpower_dbm +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x80a8252a _rtl92c_phy_fw_rf_serial_write +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x857ca901 rtl92c_phy_lc_calibrate +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x93b40ab7 rtl92c_dm_rf_saving +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x94ff0a7e rtl8192_phy_check_is_legal_rfpath +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x95719b57 _rtl92c_phy_set_rf_sleep +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x95ff6e97 _rtl92c_store_pwrIndex_diffrate_offset +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x99fc81b4 _rtl92c_phy_bb8192c_config_parafile +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x9faf582d rtl92c_dm_init_rate_adaptive_mask +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xa2b7463c rtl92c_dm_bt_coexist +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xa5039ffd rtl92c_dm_init +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xa914bb33 rtl92c_phy_rf_config +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xaa1e487f rtl92c_phy_sw_chnl +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xaa8777f1 _rtl92c_phy_fw_rf_serial_read +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xae7e2f59 rtl92c_set_fw_pwrmode_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xb3314d48 _rtl92c_phy_calculate_bit_shift +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xb6f54d6e rtl92c_phy_set_bb_reg +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xebb99067 rtl92c_dm_watchdog +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xf13db7c1 rtl92c_phy_ap_calibrate +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xf2b6af27 _rtl92c_phy_init_bb_rf_register_definition +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xfd954cb9 rtl92c_dm_init_edca_turbo +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x6fb9f06f rtl8723_fill_dummy +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_pci 0x353f08bf rtl_pci_disconnect +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_pci 0x3ad96dfe rtl_pci_resume +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_pci 0x840ad35e rtl_pci_probe +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_pci 0xc9f2d4f2 rtl_pci_suspend +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_usb 0x23c4b888 rtl_usb_resume +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_usb 0x93651634 rtl_usb_disconnect +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_usb 0x97c751a1 rtl_usb_suspend +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl_usb 0xcb675c8a rtl_usb_probe +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x02d465c1 rtl_rfreg_delay +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x0ba3fe97 rtl_get_tcb_desc +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x18ff8d32 rtl_init_rfkill +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x1fd9fd60 rtl_ps_set_rf_state +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x207fbb70 rtl_evm_db_to_percentage +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x32c30a24 rtl_cam_reset_all_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x3a811012 rtl_cmd_send_packet +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x512c5a0d rtl_process_phyinfo +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x6760042d rtl_fw_cb +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x694b378f rtl_cam_empty_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x6d4d2fbe rtl_cam_get_free_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x6e73058d rtl_cam_delete_one_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x79188a02 rtl_query_rxpwrpercentage +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x839ea047 rtl_cam_del_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x89108243 rtl_ps_disable_nic +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x97444117 rtl_hal_pwrseqcmdparsing +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x980848e2 rtl_addr_delay +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xa1c31188 efuse_one_byte_read +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xad43df6e rtl_cam_add_one_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xb0d8b511 rtl_wowlan_fw_cb +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xb13f377f rtl_lps_leave +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xb289c5bb rtl_efuse_shadow_map_update +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xb774b2ae rtlwifi_rate_mapping +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xbb61e7fb rtl_ps_enable_nic +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xc00fb22d rtl_phy_scan_operation_backup +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xc22ae4ef efuse_shadow_read +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xc5b91e3a rtl_send_smps_action +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xcf9bc2ea rtl_lps_enter +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xd1ba04cb rtl_dm_diginit +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xd3efb66b rtl_bb_delay +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xd3f0819f rtl_signal_scale_mapping +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xe803c25c efuse_read_1byte +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xef9cf2a7 rtl_cam_mark_invalid +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0x4f684e1b wlcore_calc_packet_alignment +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0x9c088512 wlcore_tx_complete +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0xe7c58bb9 wl1271_free_tx_id +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0xfa8bb37d wl12xx_is_dummy_packet +EXPORT_SYMBOL drivers/nfc/microread/microread 0x18d899ae microread_probe +EXPORT_SYMBOL drivers/nfc/microread/microread 0xc94cab8f microread_remove +EXPORT_SYMBOL drivers/nfc/nxp-nci/nxp-nci 0x65d68009 nxp_nci_remove +EXPORT_SYMBOL drivers/nfc/nxp-nci/nxp-nci 0x85b0c582 nxp_nci_fw_recv_frame +EXPORT_SYMBOL drivers/nfc/nxp-nci/nxp-nci 0xb9398579 nxp_nci_probe +EXPORT_SYMBOL drivers/nfc/pn544/pn544 0x3ec75f8f pn544_hci_remove +EXPORT_SYMBOL drivers/nfc/pn544/pn544 0x6b6b8922 pn544_hci_probe +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x033cb218 ndlc_open +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x6b7c5aea ndlc_close +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x7dab78d9 ndlc_remove +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x9734a39a st_nci_se_deinit +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0xae6aa307 ndlc_probe +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0xaea213eb ndlc_recv +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0xc66f867d st_nci_se_init +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0xcdc8bb16 ndlc_send +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0xe34c9dea st_nci_se_io +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x002cf180 st21nfca_se_deinit +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x1f293ff5 st21nfca_im_send_atr_req +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x2f3ed6f2 st21nfca_connectivity_event_received +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x439aa3aa st21nfca_hci_disable_se +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x4ab2e32b st21nfca_apdu_reader_event_received +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x649f98c6 st21nfca_hci_probe +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x96b64b15 st21nfca_dep_event_received +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x96be3ed0 st21nfca_dep_deinit +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xa8fecbe6 st21nfca_hci_discover_se +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xb4a0620b st21nfca_tm_send_dep_res +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xcdc71e45 st21nfca_dep_init +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xcedbe485 st21nfca_se_init +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xd00aceb4 st21nfca_im_send_dep_req +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xe04d8d02 st21nfca_hci_se_io +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xe27e7bc5 st21nfca_hci_remove +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xe855e9cc st21nfca_hci_enable_se +EXPORT_SYMBOL drivers/ntb/ntb 0x218454c8 ntb_db_event +EXPORT_SYMBOL drivers/ntb/ntb 0x67f84920 ntb_unregister_client +EXPORT_SYMBOL drivers/ntb/ntb 0x70457272 ntb_unregister_device +EXPORT_SYMBOL drivers/ntb/ntb 0x802e3dd7 ntb_set_ctx +EXPORT_SYMBOL drivers/ntb/ntb 0x8154f778 ntb_register_device +EXPORT_SYMBOL drivers/ntb/ntb 0xebfa1899 ntb_clear_ctx +EXPORT_SYMBOL drivers/ntb/ntb 0xf44115a6 ntb_link_event +EXPORT_SYMBOL drivers/ntb/ntb 0xfbeb57a1 __ntb_register_client +EXPORT_SYMBOL drivers/nvdimm/nd_btt 0xcaaff50d nvdimm_namespace_attach_btt +EXPORT_SYMBOL drivers/nvdimm/nd_btt 0xcc90d008 nvdimm_namespace_detach_btt +EXPORT_SYMBOL drivers/parport/parport 0x048bfdf1 parport_read +EXPORT_SYMBOL drivers/parport/parport 0x273372d8 parport_negotiate +EXPORT_SYMBOL drivers/parport/parport 0x2875f50f __parport_register_driver +EXPORT_SYMBOL drivers/parport/parport 0x336d7737 parport_wait_event +EXPORT_SYMBOL drivers/parport/parport 0x3de10b55 parport_write +EXPORT_SYMBOL drivers/parport/parport 0x3ebff5aa parport_ieee1284_read_byte +EXPORT_SYMBOL drivers/parport/parport 0x4364d773 parport_ieee1284_ecp_read_data +EXPORT_SYMBOL drivers/parport/parport 0x4b5cfa24 parport_ieee1284_epp_read_data +EXPORT_SYMBOL drivers/parport/parport 0x4d2a941b parport_ieee1284_interrupt +EXPORT_SYMBOL drivers/parport/parport 0x4face7ec parport_find_base +EXPORT_SYMBOL drivers/parport/parport 0x53fd856c parport_set_timeout +EXPORT_SYMBOL drivers/parport/parport 0x55f34257 parport_ieee1284_epp_write_addr +EXPORT_SYMBOL drivers/parport/parport 0x5c0ef024 parport_wait_peripheral +EXPORT_SYMBOL drivers/parport/parport 0x5c56582e parport_ieee1284_ecp_write_addr +EXPORT_SYMBOL drivers/parport/parport 0x5e3a3912 parport_irq_handler +EXPORT_SYMBOL drivers/parport/parport 0x74870884 parport_ieee1284_epp_read_addr +EXPORT_SYMBOL drivers/parport/parport 0x75e73c52 parport_get_port +EXPORT_SYMBOL drivers/parport/parport 0x9e08ec31 parport_find_number +EXPORT_SYMBOL drivers/parport/parport 0x9f3b4849 parport_ieee1284_write_compat +EXPORT_SYMBOL drivers/parport/parport 0xa079ccb1 parport_ieee1284_epp_write_data +EXPORT_SYMBOL drivers/parport/parport 0xa38b84ce parport_remove_port +EXPORT_SYMBOL drivers/parport/parport 0xa9dcd6c8 parport_ieee1284_ecp_write_data +EXPORT_SYMBOL drivers/parport/parport 0xae05b0f2 parport_register_device +EXPORT_SYMBOL drivers/parport/parport 0xc1aa8b9a parport_unregister_driver +EXPORT_SYMBOL drivers/parport/parport 0xc21d78da parport_register_dev_model +EXPORT_SYMBOL drivers/parport/parport 0xc38cae98 parport_register_port +EXPORT_SYMBOL drivers/parport/parport 0xc600fe1d parport_ieee1284_read_nibble +EXPORT_SYMBOL drivers/parport/parport 0xc6540308 parport_del_port +EXPORT_SYMBOL drivers/parport/parport 0xcd0224f3 parport_release +EXPORT_SYMBOL drivers/parport/parport 0xe1f65754 parport_put_port +EXPORT_SYMBOL drivers/parport/parport 0xf570a83b parport_claim_or_block +EXPORT_SYMBOL drivers/parport/parport 0xf7e3d3cb parport_claim +EXPORT_SYMBOL drivers/parport/parport 0xfd9268f2 parport_unregister_device +EXPORT_SYMBOL drivers/parport/parport 0xfeaa586f parport_announce_port +EXPORT_SYMBOL drivers/parport/parport_pc 0x2e46a985 parport_pc_probe_port +EXPORT_SYMBOL drivers/parport/parport_pc 0xed49a833 parport_pc_unregister_port +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x1ce612c2 rproc_alloc +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x4703e46c rproc_shutdown +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0x8415b8d3 rproc_put +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0xa4edb5ef rproc_get_by_phandle +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0xb3d6b9fe rproc_del +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0xd523a1e9 rproc_report_crash +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0xdcec5bf8 rproc_add +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0xe794926e rproc_da_to_va +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0xe9803826 rproc_vq_interrupt +EXPORT_SYMBOL drivers/remoteproc/remoteproc 0xea998954 rproc_boot +EXPORT_SYMBOL drivers/rtc/rtc-ds1685 0x5d4eaedb ds1685_rtc_poweroff +EXPORT_SYMBOL drivers/scsi/esp_scsi 0x41b81e28 scsi_esp_register +EXPORT_SYMBOL drivers/scsi/esp_scsi 0x4a29ab38 scsi_esp_intr +EXPORT_SYMBOL drivers/scsi/esp_scsi 0x77897acf scsi_esp_template +EXPORT_SYMBOL drivers/scsi/esp_scsi 0xa406dd2b scsi_esp_cmd +EXPORT_SYMBOL drivers/scsi/esp_scsi 0xe0094249 scsi_esp_unregister +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x04b08432 fcoe_ctlr_destroy_store +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x2bd70161 fcoe_ctlr_set_fip_mode +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x41442721 fcoe_ctlr_link_up +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x4f88fada fcoe_transport_detach +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x6dac7e49 fcoe_transport_attach +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x6fe4aa18 fcoe_fcf_get_selected +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x767b53bc fcoe_ctlr_link_down +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x8dbc560e fcoe_ctlr_recv_flogi +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x9cb8f588 fcoe_ctlr_destroy +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xc12afad3 fcoe_ctlr_recv +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xeaa4bf2a fcoe_ctlr_init +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xf425bc97 fcoe_ctlr_els_send +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x06474fa1 fc_exch_recv +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x070fdde5 fc_exch_mgr_list_clone +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x07c8bd8f fc_frame_crc_check +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x09e7df95 fc_vport_setlink +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x14bf89a9 fc_exch_mgr_add +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x192b8a19 fc_exch_mgr_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x1c0485f1 fc_rport_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x21865ec8 fc_eh_device_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x22a876d6 fc_lport_bsg_request +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x22b90986 fc_exch_mgr_del +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x24702eee fc_set_mfs +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x2b00a751 fc_frame_alloc_fill +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x33271903 fc_lport_iterate +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x36e5fbaf fc_cpu_mask +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x38fc9341 fc_fcp_destroy +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x3e7e67d4 _fc_frame_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x407b6dab fc_get_host_speed +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x4704b42c fc_disc_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x549528a2 fc_disc_config +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x5c94e1b7 fc_rport_terminate_io +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x658e8b31 fc_lport_logo_resp +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x6717f220 fc_lport_flogi_resp +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x67ab0226 fc_fc4_register_provider +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x6f0cfe45 fc_get_host_port_state +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x71ec0adf fc_slave_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x7455d993 fc_fabric_logoff +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x7c10a7cf fc_exch_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x7d00f878 fc_linkup +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x7fc40609 fc_lport_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x8279748a fc_elsct_send +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x84324497 fc_lport_notifier_head +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x885f5065 fc_get_host_stats +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x8c6d3dbc fc_fill_hdr +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x973a5b2e fc_fill_reply_hdr +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x97d66053 fc_linkdown +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x9f9d127c fc_lport_destroy +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xa4c2ed2b fc_queuecommand +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xb6e4375b libfc_vport_create +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xbb516060 fc_lport_set_local_id +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xbd928cc2 fc_fcp_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xc3c9da96 fc_exch_update_stats +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xca7e7e2b fc_vport_id_lookup +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xcd368b16 fc_lport_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xd29e6223 fc_lport_config +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xdd92bf60 fc_eh_abort +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xe20434c0 fc_fc4_deregister_provider +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xec1be6b6 fc_exch_mgr_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xef3d7306 fc_fabric_login +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xf2c136df fc_eh_host_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xf3a2fd46 fc_exch_mgr_free +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xf8652114 fc_elsct_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xfd3325f6 fc_set_rport_loss_tmo +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x3c62c3a1 sas_wait_eh +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x6fbbf65b sas_prep_resume_ha +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x744bfaff sas_suspend_ha +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x8a87e724 try_test_sas_gpio_gp_bit +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0xe8d02e84 sas_resume_ha +EXPORT_SYMBOL drivers/scsi/megaraid/megaraid_mm 0x2250c66e mraid_mm_adapter_app_handle +EXPORT_SYMBOL drivers/scsi/megaraid/megaraid_mm 0x512c956d mraid_mm_unregister_adp +EXPORT_SYMBOL drivers/scsi/megaraid/megaraid_mm 0xddd16a4b mraid_mm_register_adp +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x00859cf9 osd_req_flush_partition +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x0c17edb1 osd_sec_init_nosec_doall_caps +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x0f4be84b osd_req_create_partition +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x285fe5e0 osd_req_add_set_attr_list +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x35e3f316 osd_req_create_object +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x377c8ab8 osd_req_flush_object +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x3dce92ba osd_req_flush_collection +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x40cb1b16 osd_req_list_collection_objects +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x41e912bb osd_end_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x4250c98d osd_req_get_attributes +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x43b5c5e1 osd_req_read +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x500ecc6b osd_dev_fini +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x5d08921d osd_req_read_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x667bb8a0 osd_req_list_partition_objects +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x7d68c935 osd_start_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x7e62ea45 osd_execute_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x8062ed81 osd_req_write +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x82e74f1c osd_req_remove_partition +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x8727629b osd_req_format +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x88119bff osd_dev_init +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x9dff79b0 osd_req_read_sg +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xa3474348 osd_req_write_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xbd346ede osd_req_decode_sense_full +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xbe0169c0 osd_req_write_sg +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xbe66fd07 osd_req_write_sg_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xc60ff22a osd_finalize_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xcb76e473 osd_auto_detect_ver +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xcf584711 osd_req_set_attributes +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xd91c7423 osd_req_add_get_attr_page +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xdd954621 osd_req_flush_obsd +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xddd93065 osd_req_decode_get_attr_list +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xee296e83 osd_req_list_partition_collections +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xee40722b osd_req_read_sg_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xef74b566 osd_req_list_dev_partitions +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xfa3a54a0 osd_req_add_get_attr_list +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xfba8b15e osd_execute_request_async +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xff2d744c osd_req_remove_object +EXPORT_SYMBOL drivers/scsi/osd/osd 0x02892d3f osduld_device_info +EXPORT_SYMBOL drivers/scsi/osd/osd 0x12c4dc68 osduld_path_lookup +EXPORT_SYMBOL drivers/scsi/osd/osd 0x1512e226 osduld_info_lookup +EXPORT_SYMBOL drivers/scsi/osd/osd 0x191d421a osduld_register_test +EXPORT_SYMBOL drivers/scsi/osd/osd 0x5fc48609 osduld_unregister_test +EXPORT_SYMBOL drivers/scsi/osd/osd 0x8821669c osduld_device_same +EXPORT_SYMBOL drivers/scsi/osd/osd 0x9e45e219 osduld_put_device +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x13405506 qlt_free_cmd +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x371906e1 qlt_rdy_to_xfer +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x47acb7d5 qlt_lport_register +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x4c70d11a qlt_stop_phase1 +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x75b3e783 qlt_free_mcmd +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x7ce3d905 qlt_abort_cmd +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xaa44cee2 qlt_xmit_tm_rsp +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xbadc0618 qlt_lport_deregister +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xd2c877ac qlt_xmit_response +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xdce94a58 qlt_enable_vha +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xe4221af4 qlt_stop_phase2 +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xfacec6e9 qlt_unreg_sess +EXPORT_SYMBOL drivers/scsi/raid_class 0x9d3c3565 raid_class_attach +EXPORT_SYMBOL drivers/scsi/raid_class 0xac442ae2 raid_class_release +EXPORT_SYMBOL drivers/scsi/raid_class 0xe139ddb6 raid_component_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x0fe8b40b scsi_is_fc_rport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x1bbbf439 fc_block_scsi_eh +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x1ff6d30f fc_remote_port_rolechg +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x359846b5 fc_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x379ed19e fc_host_post_event +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x52a27bfd scsi_is_fc_vport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x5eb2ea1f fc_vport_terminate +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x6630162f fc_remote_port_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x674760e2 fc_remote_port_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x72dd8f0a fc_remove_host +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x7954b1ea fc_get_event_number +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xa0bdcdf5 fc_vport_create +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xc5a753aa fc_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xfb65b2f1 fc_host_post_vendor_event +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x118bb514 sas_port_add_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x1333ccb9 sas_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x212f6815 sas_end_device_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x2459ae39 sas_remove_children +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x289db677 scsi_is_sas_rphy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x3dd5e6a4 sas_port_alloc_num +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x471991ff sas_rphy_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x48885092 sas_phy_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x4ce6ff0a scsi_is_sas_port +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x4fcc61b0 sas_rphy_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x535cee0c sas_read_port_mode_page +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x54bd8065 sas_remove_host +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x55b8e143 sas_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x63deb676 sas_phy_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x66968943 sas_port_get_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x6c62ac3d sas_expander_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x6e7e9e0e sas_phy_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x8b128851 sas_phy_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x8d1eea09 scsi_is_sas_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x8f5251f0 sas_port_delete_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x9fc2a994 sas_port_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xa5889ece sas_port_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xae0c7f54 sas_rphy_unlink +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xbafefd10 sas_rphy_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xced4c4d2 sas_port_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xd5da83d6 sas_rphy_remove +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xe795583e sas_port_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xf004338d sas_port_mark_backlink +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x114a60e7 spi_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x2adb2990 spi_schedule_dv_device +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x3686ea09 spi_print_msg +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x4d7cac6c spi_display_xfer_agreement +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x85631b03 spi_dv_device +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0xee7709c7 spi_attach_transport +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0x14d4bf2a ufshcd_shutdown +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0x16c4fcb5 ufshcd_runtime_idle +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0x6b2743f9 ufshcd_runtime_resume +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0x7cf130e7 ufshcd_system_suspend +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0xbdf9c526 ufshcd_alloc_host +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0xd569ccde ufshcd_system_resume +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0xd945cb03 ufshcd_runtime_suspend +EXPORT_SYMBOL drivers/ssb/ssb 0x079a1fdb ssb_dma_translation +EXPORT_SYMBOL drivers/ssb/ssb 0x1d170ac5 ssb_pcicore_dev_irqvecs_enable +EXPORT_SYMBOL drivers/ssb/ssb 0x23632dda ssb_bus_suspend +EXPORT_SYMBOL drivers/ssb/ssb 0x2c7179ef ssb_bus_powerup +EXPORT_SYMBOL drivers/ssb/ssb 0x32c82da1 ssb_set_devtypedata +EXPORT_SYMBOL drivers/ssb/ssb 0x44217341 ssb_pmu_set_ldo_paref +EXPORT_SYMBOL drivers/ssb/ssb 0x53bebc97 ssb_bus_unregister +EXPORT_SYMBOL drivers/ssb/ssb 0x6b3dc95d ssb_device_enable +EXPORT_SYMBOL drivers/ssb/ssb 0x6c890780 ssb_bus_may_powerdown +EXPORT_SYMBOL drivers/ssb/ssb 0x708a1e6b ssb_clockspeed +EXPORT_SYMBOL drivers/ssb/ssb 0x857e9b74 ssb_device_is_enabled +EXPORT_SYMBOL drivers/ssb/ssb 0x94053f6f ssb_bus_resume +EXPORT_SYMBOL drivers/ssb/ssb 0xafddf10a ssb_pcihost_register +EXPORT_SYMBOL drivers/ssb/ssb 0xb44e8e0e ssb_commit_settings +EXPORT_SYMBOL drivers/ssb/ssb 0xc0512e0f ssb_admatch_base +EXPORT_SYMBOL drivers/ssb/ssb 0xcdf1e49e ssb_chipco_gpio_control +EXPORT_SYMBOL drivers/ssb/ssb 0xd481192b ssb_admatch_size +EXPORT_SYMBOL drivers/ssb/ssb 0xdec75042 ssb_driver_unregister +EXPORT_SYMBOL drivers/ssb/ssb 0xe824c13e __ssb_driver_register +EXPORT_SYMBOL drivers/ssb/ssb 0xec5049c4 ssb_pmu_set_ldo_voltage +EXPORT_SYMBOL drivers/ssb/ssb 0xecad80d3 ssb_device_disable +EXPORT_SYMBOL drivers/ssb/ssb 0xedc392bc ssb_bus_sdiobus_register +EXPORT_SYMBOL drivers/ssb/ssb 0xff3e2603 ssb_bus_pcibus_register +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x08b5b4cc fbtft_register_backlight +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x11875f29 fbtft_write_vmem8_bus8 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x140f225a fbtft_write_vmem16_bus8 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x4ed4dce0 fbtft_dbg_hex +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x55fd22dc fbtft_framebuffer_release +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x568dddaf fbtft_write_spi_emulate_9 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x5f5fb24a fbtft_write_reg8_bus9 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x675ecba2 fbtft_write_gpio16_wr +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x6e0a6989 fbtft_write_reg16_bus16 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x80ebce06 fbtft_framebuffer_alloc +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x8ba9ad04 fbtft_register_framebuffer +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x9094e0db fbtft_probe_common +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x962b0451 fbtft_write_gpio16_wr_latched +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xb53ffd64 fbtft_write_vmem16_bus9 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xb89d81af fbtft_write_vmem16_bus16 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xbbf2d65c fbtft_init_display +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xbd1c4419 fbtft_write_gpio8_wr +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xc5e18e3f fbtft_read_spi +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xccc52a55 fbtft_remove_common +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xd68b071f fbtft_write_reg16_bus8 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xed0c0d24 fbtft_write_spi +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xeeb52557 fbtft_write_reg8_bus8 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xef1a7ec5 fbtft_unregister_framebuffer +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xf08b5a82 fbtft_unregister_backlight +EXPORT_SYMBOL drivers/staging/fwserial/firewire-serial 0x96ebae38 fwtty_port_get +EXPORT_SYMBOL drivers/staging/fwserial/firewire-serial 0xb25c8b69 fwtty_port_put +EXPORT_SYMBOL drivers/staging/iio/addac/adt7316 0x68b17da9 adt7316_probe +EXPORT_SYMBOL drivers/staging/iio/magnetometer/hmc5843_core 0x3a06c505 hmc5843_common_suspend +EXPORT_SYMBOL drivers/staging/iio/magnetometer/hmc5843_core 0x688e4193 hmc5843_common_resume +EXPORT_SYMBOL drivers/staging/iio/magnetometer/hmc5843_core 0x93a544e1 hmc5843_common_probe +EXPORT_SYMBOL drivers/staging/iio/magnetometer/hmc5843_core 0xbbb91948 hmc5843_common_remove +EXPORT_SYMBOL drivers/staging/iio/meter/ade7854 0x83f6ea4c ade7854_remove +EXPORT_SYMBOL drivers/staging/iio/meter/ade7854 0xd965de9f ade7854_probe +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x0e10cb34 lnet_net2ni +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x1366b7ac LNetSetLazyPortal +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x1767b10c lnet_copy_iov2kiov +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x19670622 LNetNIInit +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x1b191752 lnet_msgtyp2str +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x1c5fdab8 lnet_finalize +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x1ee5f15e lnet_ipif_query +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x1f8bfad3 lnet_sock_getbuf +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x1fe16fd5 LNetGet +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x204b8151 lnet_counters_reset +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x2aa9953d lnet_cpt_of_nid +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x2ac93e90 lnet_connect_console_error +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x33202a6c LNetGetId +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x3c779ee0 LNetPut +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x3f4f5b46 LNetNIFini +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x473ad33b LNetDist +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x490400fa lnet_unregister_lnd +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x49993ea3 lnet_extract_iov +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x4a2f0828 the_lnet +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x52e467bf lnet_sock_connect +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x58a1ca89 LNetMDUnlink +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x5dd7ef82 lnet_connect +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x5fee352c lnet_acceptor_timeout +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x60337ddf lnet_sock_setbuf +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x61f784b2 LNetClearLazyPortal +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x64cdea3a LNetCtl +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x66d449b1 lnet_ipif_enumerate +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x6f7be171 LNetEQGet +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x722c76e5 LNetMDAttach +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x74011724 lnet_extract_kiov +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x7a53bbb2 lnet_parse +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x7b82d589 lnet_set_reply_msg_len +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x7d59a7fe LNetMEInsert +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x854ab844 LNetEQWait +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x8d92bef2 lnet_copy_kiov2iov +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x9de986d3 LNetEQAlloc +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x9fb17bfc lnet_sock_write +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xa56de08d lnet_ipif_free_enumeration +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xaa414970 LNetMEUnlink +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xaa9b477e LNetMDBind +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xb20da2b1 lnet_copy_iov2iov +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xb4d8d793 lnet_kiov_nob +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xb75f7953 LNetEQFree +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xba5566d2 lnet_acceptor_port +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xbf0760a2 LNetMEAttach +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xc3603614 lnet_notify +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xc3e491ec lnet_sock_read +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xc692d2d1 lnet_copy_kiov2kiov +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xcccaa176 lnet_register_lnd +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xd6c61a00 lnet_sock_accept +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xd784177e lnet_sock_getaddr +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xd7c50cb9 lnet_init +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xe4eff016 lnet_sock_listen +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xe7822364 lnet_create_reply_msg +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xe8124744 lnet_fini +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xf1b316bf LNetSnprintHandle +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xf5dc6337 lnet_iov_nob +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xfa106804 lnet_counters_get +EXPORT_SYMBOL drivers/staging/lustre/lnet/selftest/lnet_selftest 0x078db139 lstcon_ioctl_entry +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0x03370507 client_fid_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0x1c4bb5f9 LU_OBF_FID +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0x2ba11fc4 seq_client_alloc_fid +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0x320f63eb client_fid_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0x375e6f8d LUSTRE_BFL_FID +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0x494cdb78 seq_client_flush +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0x576d1e56 seq_client_get_seq +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0x9a31128b seq_client_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0xae61cff5 LU_DOT_LUSTRE_FID +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0xc997a02f LUSTRE_SEQ_SPACE_RANGE +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0xe0d09e5a seq_client_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0xecee2727 LUSTRE_SEQ_ZERO_RANGE +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0x2c1a0e5c fld_client_add_target +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0x4e51a565 fld_client_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0x8df61748 fld_client_lookup +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0x9a91c253 fld_client_flush +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0xa75027ac fld_client_debugfs_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0xb30cbf80 fld_client_del_target +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0xfd97cf8e fld_client_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x000c507f libcfs_debug_dumplog +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x01db5172 cfs_percpt_atomic_summary +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x06401e01 cfs_hash_is_empty +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x069f9bb2 cfs_wi_schedule +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x08917712 cfs_hash_for_each_key +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x08ada613 libcfs_console_backoff +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x0b4b1546 libcfs_lnd2modname +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x0cc98c73 cfs_cpt_weight +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x0de6c369 cfs_cap_lower +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x0e212fc1 cfs_hash_debug_str +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x0f5eff79 cfs_percpt_number +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x123b6908 cfs_hash_bd_findadd_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x12c54b77 cfs_hash_findadd_unique +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x13550229 lbug_with_loc +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x156bdc53 libcfs_kvzalloc_cpt +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x17ac7833 libcfs_deregister_ioctl +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x1a60d439 cfs_parse_nidlist +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x1bfac2ea cfs_cpt_set_nodemask +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x1d41c4c0 cfs_hash_bd_lookup_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x1d90d7b2 cfs_cpt_set_node +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x1e8cdb47 cfs_race_waitq +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x21e8366c cfs_cpt_set_cpu +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x2663147a __cfs_fail_timeout_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x277e62bd cfs_hash_for_each_empty +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x27b6d3ba cfs_ip_addr_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x2810bd15 cfs_cpt_clear +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x29aafd0c cfs_hash_hlist_for_each +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x2a641ef9 cfs_hash_dual_bd_unlock +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x2adae33e cfs_init_timer +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x2dbe54b2 cfs_trimwhite +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x2fb7eae8 cfs_hash_bd_finddel_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x31fc5082 cfs_crypto_hash_update +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x334df8ea cfs_wi_sched_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x33a91f2c cfs_cpt_unset_cpu +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x33f4f293 cfs_cpt_unset_nodemask +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x3502185c cfs_cpt_bind +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x361e82d4 cfs_firststr +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x3632c2be cfs_hash_debug_header +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x377f93fb cfs_srand +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x388386d7 cfs_cpt_cpumask +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x389ca502 libcfs_debug_mb +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x39fdcd2b libcfs_debug_set_level +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x3c1285bd libcfs_subsystem_debug +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x3d5e6098 cfs_race_state +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x3e5e7727 cfs_hash_rehash_cancel_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x3ef0d90c libcfs_kkuc_group_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x4062f92b libcfs_run_lbug_upcall +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x4087e2b4 cfs_hash_putref +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x40b24fbc cfs_cpt_current +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x411db754 cfs_crypto_hash_final +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x437d67a5 cfs_percpt_unlock +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x44839bbb cfs_rand +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x468bace1 cfs_hash_rehash_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x48f163c6 libcfs_str2anynid +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x4a95faa2 cfs_timer_deadline +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x4a99af72 cfs_clear_sigpending +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x4b982291 cfs_hash_bd_peek_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x4cc38566 cfs_crypto_hash_update_page +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x4eb478e9 libcfs_kkuc_msg_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x4f1f2fa5 cfs_crypto_hash_digest +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x50345570 libcfs_str2net +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x5051b6d2 portal_enter_debugger +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x509d38b0 libcfs_net2str +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x54fd9a71 cfs_percpt_index +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x55636c2e cfs_cpt_table_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x58a7ee00 libcfs_catastrophe +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x5946ec2b cfs_percpt_current +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x5b20921a cfs_hash_for_each_nolock +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x5c013b81 cfs_expr_list_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x5dce9e80 libcfs_lnd2str +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x62289d65 cfs_array_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x63b4967a cfs_hash_lookup +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x64685fef libcfs_console_min_delay +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x6564c55b libcfs_console_max_delay +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x65dd9f0c libcfs_run_upcall +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x67398404 cfs_wi_sched_destroy +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x6a738b2f cfs_cpt_nodemask +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x6b5ed70b cfs_cpt_unset_node +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x6c4cadc8 cfs_hash_for_each +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x6c905b5f libcfs_watchdog_ratelimit +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x71f662a3 libcfs_debug +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x72e42e76 cfs_cpt_number +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x72f4e5f9 cfs_hash_bd_move_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x74aa92eb cfs_cpt_spread_node +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x7562cd14 cfs_hash_del_key +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x771695b1 cfs_hash_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x785b7372 cfs_hash_dual_bd_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x7a47b94d cfs_hash_size_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x7a63872e cfs_timer_disarm +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x7b0b748a cfs_ip_addr_parse +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x7c73bc4b cfs_hash_rehash +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x7e6f6485 cfs_ip_addr_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x7fda989d cfs_fail_loc +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x8151c3aa cfs_cap_raised +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x82e71509 cfs_cpt_set_cpumask +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x83d795e4 cfs_match_nid +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x857aaea7 libcfs_register_ioctl +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x865483a9 libcfs_kvzalloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x87f3bb87 cfs_hash_del +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x8840f591 cfs_block_allsigs +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x8c85e4e6 cfs_crypto_hash_speed +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x91504e8b libcfs_kmemory +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x940ed192 libcfs_stack +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x949221dc cfs_hash_cond_del +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x95620e8c cfs_wi_deschedule +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x97b0b9bc cfs_enter_debugger +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x9879b229 cfs_get_random_bytes +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x9e420643 cfs_restore_sigs +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x9f82f712 cfs_trace_copyout_string +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xa2b68b2a cfs_array_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xa6b9dee6 libcfs_kkuc_group_rem +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xa9088531 cfs_expr_list_values +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xa9c0ca61 cfs_timer_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xa9dc74e2 cfs_trace_copyin_string +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xad8e3004 libcfs_kkuc_group_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xaf30d31c cfs_percpt_lock_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xb00dfd91 cfs_hash_dual_bd_findadd_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xb0d3e5c8 cfs_percpt_lock_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xb52fd765 cfs_cpt_online +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xb8c52b1b cfs_timer_done +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xbab4f34e cfs_timer_arm +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xbab577e8 cfs_hash_for_each_safe +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xbc1b15c2 cfs_cpt_unset_cpumask +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xbf7a37f1 cfs_signal_pending +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xc0ea7fc0 cfs_expr_list_parse +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xc1708189 cfs_hash_dual_bd_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xc1b20836 cfs_hash_add_unique +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xc2dfd791 libcfs_console_ratelimit +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xc39fd2f9 libcfs_panic_on_lbug +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xc49b1c62 cfs_percpt_atomic_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xc72eb745 cfs_percpt_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xca68980a cfs_cpt_table +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xcb385db9 libcfs_debug_binary +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xcc20e694 libcfs_nid2str +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xccc45639 cfs_free_nidlist +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xcd38904c cfs_wi_exit +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xce1a88f2 libcfs_arch_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xcf61bacb __cfs_fail_check_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xcf678304 cfs_hash_bd_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xd0aa642a cfs_hash_rehash_key +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xd19222ec cfs_percpt_atomic_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xd2965f33 cfs_hash_bd_del_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xd48d8f72 cfs_hash_dual_bd_lookup_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xd6a52be3 libcfs_printk +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xd7bbf963 cfs_hash_dual_bd_finddel_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xd7c4f765 add_wait_queue_exclusive_head +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xd96f406d cfs_cap_raise +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xde17bb8d libcfs_isknown_lnd +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xdf2789c0 cfs_curproc_cap_pack +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xdfecb98d cfs_block_sigs +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xe262a6e2 cfs_timer_is_armed +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xe2f91ce3 libcfs_debug_msg +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xe3bf6897 cfs_percpt_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xe4278c25 cfs_cpt_table_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xe4ca8fda cfs_percpt_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xe7b54314 libcfs_arch_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xea411f63 cfs_block_sigsinv +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xec1331dc cfs_cpt_table_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xec1f56d5 libcfs_str2nid +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xeceac781 cfs_fail_val +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xeed48ba7 cfs_hash_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xf3030ab7 cfs_cpt_of_cpu +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xf3565b71 libcfs_debug_vmsg2 +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xf440bb38 libcfs_kkuc_group_foreach +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xf5e4a175 cfs_hash_bd_add_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xf8a8644b libcfs_id2str +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xf94025d1 libcfs_str2lnd +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xfacb8667 cfs_hash_getref +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xfe565fa9 cfs_crypto_hash_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/llite/lustre 0x8d8e3b13 ll_stats_ops_tally +EXPORT_SYMBOL drivers/staging/lustre/lustre/llite/lustre 0xc5a53156 ll_direct_rw_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/llite/lustre 0xcd3cde92 ll_iocontrol_unregister +EXPORT_SYMBOL drivers/staging/lustre/lustre/llite/lustre 0xd8cecdd3 ll_osscapa_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/llite/lustre 0xee5ac275 ll_iocontrol_register +EXPORT_SYMBOL drivers/staging/lustre/lustre/lov/lov 0x0750b605 lov_stripe_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/lov/lov 0x1c1f8f84 lov_device_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/lov/lov 0x200e18a6 lov_lsm_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/lov/lov 0x37ac1bfc lov_lsm_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/lov/lov 0x7d17f319 lov_stripe_unlock +EXPORT_SYMBOL drivers/staging/lustre/lustre/lov/lov 0xbd51e04a lov_read_and_clear_async_rc +EXPORT_SYMBOL drivers/staging/lustre/lustre/mdc/mdc 0x0df21540 it_set_disposition +EXPORT_SYMBOL drivers/staging/lustre/lustre/mdc/mdc 0x5919b6d6 it_clear_disposition +EXPORT_SYMBOL drivers/staging/lustre/lustre/mdc/mdc 0x5ef8417d it_disposition +EXPORT_SYMBOL drivers/staging/lustre/lustre/mdc/mdc 0xfe26c5a6 it_open_error +EXPORT_SYMBOL drivers/staging/lustre/lustre/mgc/mgc 0xdc287f95 mgc_fsname2resid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x00c0501b cl_page_find_sub +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x012eecb8 dt_txn_hook_start +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x01665e34 class_parse_net +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x01a77b66 lustre_end_log +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x035852d0 lustre_swab_llog_rec +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x03b37a9c lu_kmem_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x04a8a700 capa_lookup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x04d71a81 class_devices_in_group +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x057876f6 cl_lock_hold +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x057f6d4b class_find_old_param +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x05f45893 llog_write +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x06ce47ca cl_lock_extransit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0728af9b cl_page_make_ready +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x07aa68bb lustre_swab_lustre_cfg +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x07ba3406 cl_lock_closure_build +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x07d45876 obdo_set_parent_fid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x083942ff class_del_profile +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x08a5d129 lprocfs_rd_conn_uuid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0ab898b5 obdo_cpu_to_le +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0ae7a73b __llog_ctxt_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0b2d1b46 cl_2queue_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0b513ee7 obd_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0bafe647 cl_conf_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0c378d79 lustre_swab_llog_hdr +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0cb6d0b4 cl_io_rw_advance +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0cd84302 lprocfs_rd_timeouts +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0e37f7c2 llog_open +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x10143ef4 class_connect +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x10d66f6e dt_try_as_dir +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x114073f3 llog_open_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x11495519 lprocfs_write_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x117f74a8 cl_sync_io_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x11c911bb cl_io_iter_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x123e5b5b dt_directory_features +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x12950035 cl_page_is_under_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1455d77a class_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1491dc30 lu_context_tags_clear +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x14d183a8 class_new_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x15284101 cl_page_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x16735e95 cl_site_stats_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x183dbcb6 llog_process +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x199fe225 cl_io_iter_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x19bdb72c cl_lock_request +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1a41dd9f dump_lniobuf +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1ae16af0 cl_page_cache_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1aed12b4 class_search_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1ceec6d7 lu_object_locate +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1d18021e cl_page_disown +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1d723388 dt_object_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1e61a80c lprocfs_single_release +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2218045d dt_locate_at +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x221826f1 class_parse_nid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x23dff054 llog_cat_init_and_process +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x24afa8db lu_context_key_revive +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x24e1671d lprocfs_counter_sub +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2547efae lustre_uuid_to_peer +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x27069895 cl_io_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x275cdc7a cl_env_reexit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x276690c2 cl_req_prep +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x27ac52a5 cl_object_attr_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x281864ca class_export_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x283e59a1 cl_page_list_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x286860f5 class_handle_free_cb +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x28dbffc5 class_name2obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x294c8a8a lprocfs_obd_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x297cf5e0 class_handle2object +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2ae1cd79 kuc_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2aec9d1e dt_store_open +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2be6212b class_new_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2e0d5ea3 lprocfs_at_hist_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2e6bebc5 llog_cat_process +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2f826ce4 cl_lock_ext_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2fd47c48 cl_lock_is_mutexed +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2fdb23e4 obdo_to_inode +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3086358c cl_lock_hold_release +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3091bf91 llog_exist +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x315615b2 llog_declare_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3196497b lprocfs_obd_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3242ed35 obdo_cachep +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3283bde9 cl_object_header_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3290b798 cl_lock_slice_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x32ba7a38 dt_quota_slv_features +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3391ca43 cl_offset +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x33c151e3 lu_buf_realloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x342c5648 lprocfs_obd_rd_max_pages_per_rpc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3436fc7a cl_lock_state_wait +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3458e01e class_uuid2obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3463a5f9 lprocfs_rd_state +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x34ac0808 cl_io_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x357b2a6b cl_lock_descr_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x35a4b63a lu_object_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x35d72a5a cl_page_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x360bcae2 cl_page_lookup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x369be015 obdo_le_to_cpu +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x372aaad4 cl_page_is_vmlocked +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x37ed6e4b at_early_margin +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x38de8727 lprocfs_rd_u64 +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x38fb0c90 class_match_param +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x39ce5035 cl_stack_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3a8f3117 obdo_from_inode +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3abe97e5 dump_exports +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3b026c93 lu_context_key_register_many +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3b29bcf1 class_fail_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3bcbdc4b lprocfs_stats_alloc_one +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3c0fe5e1 llog_cat_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3c91f7b0 cl_object_glimpse +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3da2aa39 lprocfs_alloc_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3e3fe4b3 class_config_parse_llog +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3eab7bfe LU_BUF_NULL +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3f1ef126 cl_io_top +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3f25c782 obd_max_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3fac4f5d cl_page_size +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3ff16f94 llog_cat_process_or_fork +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4003c160 cl_lock_user_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x408c8772 class_process_proc_param +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x41c2f6a1 dt_find_or_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x41f5fed7 llog_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x43091339 class_export_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x452f559a lu_buf_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4543ec48 cl_page_gang_lookup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x45c7c9e1 llog_cat_declare_add_rec +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x465785ca class_exp2cliimp +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x465cfada cl_io_start +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x47285650 cl_lock_enclosure +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x474ed5bd lustre_swab_ll_fid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x47733d30 dt_txn_hook_commit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x47b35f7d statfs_unpack +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x47b69bae cl_env_peek +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x482d3cb5 capa_cachep +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x494cfb52 lustre_acl_xattr_merge2ext +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x49a0f6ea lustre_posix_acl_xattr_2ext +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x49b49c05 cl_page_list_discard +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4a0b51dd cl_page_clip +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4a464a5e llog_copy_handler +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4a58e4e4 obdo_from_la +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4aae7b2c cl_object_header_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4ab784c5 cl_env_nested_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4ac58713 obd_connect_flags2str +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4c190aad lprocfs_find_named_value +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4c37e2ce lu_device_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4c4c700b obd_alloc_fail +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4ca38d17 lu_env_refill_by_tags +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4cb2e4ae cl_lock_intransit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4d13458b kuc_len +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4d5c07ca cl_lock_discard_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4d8d6dfa lprocfs_counter_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4da7a3b4 cl_io_prepare_write +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4db53352 capa_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4e448b64 lprocfs_rd_connect_flags +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4e9e0bf9 cl_io_rw_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x50c7fc36 ptlrpc_put_connection_superhack +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5232d3f9 class_incref +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x527b6cae cl_io_is_going +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x52ba7dbd lu_env_refill +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x544a5167 la_from_obdo +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x54885f87 ldlm_timeout +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x550f26ae lprocfs_wr_atomic +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x557e7b14 lustre_posix_acl_xattr_filter +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x558bec27 obd_ioctl_getdata +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x564e9d44 init_capa_hash +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x569666ac cl_lock_unhold +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x56a2afd9 dt_record_write +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x570d09ae lustre_swab_lu_fid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x582b013d dt_quota_glb_features +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5953bbeb cl_sync_io_note +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x59d5b63f cl_2queue_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x59dc31ff dt_record_read +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5a20d896 obd_memory_max +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5a2ad3d9 cl_io_lock_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5ab24ca0 lu_object_find +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5abb6dc8 lu_site_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5bc022c5 lprocfs_dt_rd_filestotal +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5cbd4081 cl_env_nested_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5cfa3fc1 cl_io_submit_rw +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5d34ae0d cl_lock_mode_name +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5dabf098 cl_page_unmap +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5e72b50d lu_context_key_revive_many +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5e93341f lprocfs_oh_sum +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5fe97b73 block_debug_check +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6033b908 obdo_cmp_md +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x603fa0aa dt_lookup_dir +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6088b429 class_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x60e640cd cl_sync_io_wait +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x617a0926 class_get_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x620c3278 llog_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x624ffe24 lprocfs_counter_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6257795e cl_vmpage_page +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x631fd7b9 lustre_ext_acl_xattr_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6334e5aa iattr_from_obdo +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x63388855 cl_page_list_own +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x636787aa cl_lock_closure_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x63b272a8 cl_lock_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x644b3396 llog_cat_close +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x648a7f66 lprocfs_free_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x64abdd62 dt_index_walk +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x64c9f7fd lu_env_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x65649f7f lustre_process_log +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x66165266 llog_erase +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x666e66a9 class_detach +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6734adbd lprocfs_read_frac_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x675244fa dt_otable_features +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x677da8d4 lu_dev_add_linkage +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x682747cb class_conn2export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6890d175 lustre_get_jobid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x68a5aeac class_config_llog_handler +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x698b61fc cl_lvb2attr +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x699e29b4 lustre_register_kill_super_cb +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x69a5d23d cl_io_unlock +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x69c42114 at_min +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6a9362a8 lprocfs_init_mps_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6ad76ea4 cl_page_list_move +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6cc7a45d lu_object_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6dfb4924 cl_object_find +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6e067b25 dt_txn_hook_stop +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6e947690 cl_lock_is_intransit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6f32b6ca obd_export_evict_by_nid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7022c9ef llog_sync +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x70fdf6c5 cl_lock_state_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7141964e class_unlink_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x71b6af4b lprocfs_exp_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x728677f1 lu_context_refill +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x72896662 cl_lock_descr_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x736d3a2a lu_context_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x73eb6082 llog_thread_key +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x742559b1 class_unregister_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7433ed90 cl_lock_user_del +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x74c8ff56 cl_enqueue +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7519f618 lprocfs_init_ldlm_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x752f71a8 class_get_profile +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x75564a69 class_conn2cliimp +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x756a77f3 class_parse_nid_quiet +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x75c1ace5 ldebugfs_register +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x76597e4e lu_device_type_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x767ea2a6 cl_unuse +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x768a2bad cl_site_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x76b76470 md_from_obdo +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x775fd2f9 lustre_register_client_fill_super +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x77ab3367 cl_lock_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x77d2089a class_name2dev +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7802fcd7 lustre_swab_llogd_conn_body +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x789796a1 obd_zombie_barrier +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x78d87003 cl_page_completion +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x79860b20 cl_2queue_assume +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7a790a18 llog_process_or_fork +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7b4fc57b at_max +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7bc12d2a lprocfs_init_ops_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7ca39539 cl_locks_prune +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7ce0dc90 lu_object_assign_fid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7d6cef22 lu_device_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7e3561b8 dt_txn_callback_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7edcafa0 cl_env_reenter +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7f070e4b lprocfs_seq_read_frac_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7f5094ca cl_page_list_splice +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7f7d7cd9 lu_buf_check_and_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7fe5561a obd_dirty_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x800b03c5 llog_cat_cancel_records +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8031efb8 lprocfs_dt_rd_kbytestotal +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x806cc497 class_add_uuid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x80d78a22 llog_backup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x80fc0ab6 lu_object_header_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x81742d89 obd_ioctl_popdata +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x82807e2e cl_env_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x82afc90d llog_cat_reverse_process +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x831f656c class_process_config +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8446b9a8 obdo_to_ioobj +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8489f086 obd_alloc_fail_rate +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x849e5385 obd_update_maxusage +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x84a7d614 class_exp2obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8503c454 lu_buf_check_and_grow +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8553b369 obd_memory +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x85f3b889 cl_lock_at +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8610144c cl_io_lock_alloc_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x88b87068 lprocfs_stats_collect +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x891054f1 lprocfs_clear_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8977b5c4 lu_object_find_at +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x89c39b89 lprocfs_rd_server_uuid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8aa2c358 lprocfs_dt_rd_blksize +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8aae434f cl_lock_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8b5f4057 lu_context_tags_update +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8b877003 cl_2queue_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8ba6e479 lustre_swab_lu_seq_range +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8be50fe4 cl_2queue_disown +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8ca0f31f cl_req_slice_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8d658ed0 capa_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8d9dd2c1 cl_lock_enqueue_wait +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8d9eb4e6 lu_object_unhash +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8e10e6d6 server_name2svname +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8e69392b cl_site_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8e90d697 cl_lock_closure_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8f2f9261 lu_object_put_nocache +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8f67314c obd_dump_on_eviction +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x90278d2c lu_context_key_quiesce_many +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x91a1d9a4 class_handle_hash +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x91bbb6a4 llog_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x91bd6322 cl_object_attr_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x92b586c4 obdo_from_md +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x92e58479 obd_dump_on_timeout +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x930d8e6d lu_context_key_degister_many +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x932d058c obd_exports_barrier +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9376251c cl_lock_release +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x93859814 lprocfs_oh_tally +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x93b46468 lu_session_tags_clear +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x94052371 cl_env_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x940d65b3 cl_object_attr_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9427a8bc lprocfs_free_obd_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x94cdcbc5 cl_page_flush +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9512d507 lustre_acl_xattr_merge2posix +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x954037e5 lu_device_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x955f5220 ldlm_timeout_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x95735c6c at_extra +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x96255ddf ldebugfs_seq_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x973e9a80 cl_object_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9767adce class_uuid2dev +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x97d03783 at_history +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x982c396b cl_page_unassume +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x99b35f27 _debug_capa +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9b13afb6 cl_unuse_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9b1ed9d8 obd_jobid_var +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9c6eb1d8 lu_object_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9c93000e cl_index +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9dbb17b6 lprocfs_dt_rd_kbytesfree +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9dff6d1f lustre_common_put_super +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9f6bc28b obd_max_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9f7aaa1a llog_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9fb32926 cl_page_slice_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa12429da lu_site_init_finish +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa160da4a lu_object_header_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa2538c6a cl_env_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa26fed41 cl_lock_mutex_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa2b00afc lu_dev_del_linkage +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa2d59e81 cl_queue_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa30692b0 class_manual_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa33062aa ldebugfs_obd_seq_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa399bcf1 cl_io_sub_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa415f6f6 cl_page_list_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa48957de cl_page_discard +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa54fd119 cl_object_kill +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa5fb234f lprocfs_write_frac_u64_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa674c241 kuc_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa6cbc177 cl_lock_hold_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa7e16614 lu_kmem_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa81c80b4 ldebugfs_add_simple +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa82a3dd1 class_handle_unhash +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa91bfac1 capa_cpy +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa96919e6 class_disconnect_exports +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xaa094fad llog_write_rec +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xaa21b7a0 lustre_register_quota_process_config +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xaa98d9c0 cl_io_end +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xab1f3bee obd_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xabd19452 cl_type_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xabf45922 capa_decrypt_id +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xac5a10f2 dt_txn_callback_del +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xac7f1596 kuc_ptr +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xadaa7962 lu_cdebug_printer +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xae5b5a7a cl_page_is_owned +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xae967337 lprocfs_rd_atomic +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xafd731c2 cl_page_list_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb01963a6 class_uuid_unparse +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb04622c0 dt_store_resolve +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb192759b dt_read +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb1b89b6d class_attach +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb2debff4 dt_version_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb35519ed lustre_swab_cfg_marker +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb37d7c4a cl_page_top +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb3a34e9d cl_page_own +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb41998cd lustre_cfg_rename +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb4269f73 cl_req_attr_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb434314b cl_page_list_unmap +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb45cc5b4 class_disconnect_stale_exports +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb47cac19 lprocfs_alloc_md_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb4ef0273 class_put_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb4f8ee63 lprocfs_read_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb5ea856d cl_io_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb635af9e dt_acct_features +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb6ba5dd5 kuc_ispayload +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb743ec6a dt_mode_to_dft +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb810dba6 cl_lock_at_pgoff +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb841b2d7 lu_context_key_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb84a1bba lprocfs_rd_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb8724d9b cl_object_attr_unlock +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb8a45eb3 dt_object_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb8c02a64 cl_lock_disclosure +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb8cd0209 lu_site_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb9caac2d class_connected_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb9cd0593 cl_wait_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb9f10c24 cl_lock_modify +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xba01ce2f cl_wait +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xba4dc13a llog_cancel_rec +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xba985283 lustre_register_client_process_config +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbacac922 lprocfs_write_frac_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbc436a0d obdo_cpy_md +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbd371d3b cl_lock_nr_mutexed +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbd4431e5 cl_page_own_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbe9758c9 lu_context_key_degister +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbeea99e5 lu_device_type_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbfc301e6 llog_is_empty +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc0954007 lprocfs_oh_clear +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc0bf7ef2 obd_debug_peer_on_timeout +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc0f5fe1a lu_object_anon +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc1167cbb cl_page_vmpage +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc18d06cf lu_buf_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc1f6f64b class_find_client_obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc267a47e lu_env_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc2cccd79 cl_io_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc2e3575f cl_page_assume +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc2ef657a ldebugfs_add_vars +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc3dcf621 cl_env_unplant +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc3ef43de cl_page_prep +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc40ade40 cl_object_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc42a59f9 cl_2queue_discard +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc49c4523 lu_context_key_register +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc5b030a2 cl_io_slice_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc62b54d0 cl_io_loop +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc8260a13 lu_object_add_top +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc8425940 cl_req_page_done +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc92a997f llog_reverse_process +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcaa75498 lu_site_purge +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcb0ab67f obd_max_dirty_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcb484196 cl_page_list_del +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcb70dd6a cl_req_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcc437059 cl_page_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcd7537ee get_devices_count +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcdb6cf15 class_register_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcdd0cdad obdo_refresh_inode +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xce2c0d12 dt_declare_version_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcf30743b dt_device_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcf7fa072 cl_page_list_disown +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcfc08534 dt_version_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd00f7f9d llog_cat_add_rec +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd08827c0 server_name2fsname +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd10aa042 lustre_swab_llog_id +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd14717cc lu_context_key_quiesce +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd18309a9 lu_context_exit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd2099d7d cl_use_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd21bb954 cl_pages_prune +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd263b44d class_import_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd28459c5 ldebugfs_add_symlink +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd2f0b4e8 cl_2queue_init_page +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd3436874 cl_lock_weigh +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd39e92fa cl_env_implant +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd4610b8d llog_close +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd4e63601 class_config_dump_llog +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd5a74434 lprocfs_rd_name +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd6cd37d7 cl_page_at +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd70fe669 lustre_swab_llogd_body +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd71b8e23 llog_init_handle +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd7bc8654 obd_timeout +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd7bfbc9c lprocfs_dt_rd_filesfree +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd7f7b340 cl_lock_mode_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd86b7e65 ldebugfs_remove +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd971f079 class_add_conn +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd9aad32f cl_lock_error +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xda5b1ced class_find_param +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdac644c8 lustre_posix_acl_xattr_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdb13dce1 capa_list +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdcc40af0 class_check_uuid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdd518df2 cl_lock_mutex_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xde1ffd35 class_import_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xde7d985b obd_dirty_transit_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdead36fe class_handle_hash_back +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdf751a2f dt_index_read +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe028cf84 capa_encrypt_id +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe1264437 cl_req_completion +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe130d39a cl_lock_signal +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe15dc79e cl_page_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe2206a0e obd_devs +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe29a7df4 cl_attr2lvb +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe2eb4470 class_get_next_param +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe335646c lu_object_invariant +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe3806682 lu_context_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe3a37ced dt_device_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe498e8f8 cl_enqueue_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe4ac2d1a lu_site_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe53f871f cl_lock_peek +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe5a43746 lprocfs_alloc_obd_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe61174c2 class_decref +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe7d83236 cleanup_capa_hash +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe815b0b2 lprocfs_wr_uint +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe8994774 lu_object_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe8e84c32 class_match_nid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe904d788 cl_page_delete +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe90c34c1 cl_lock_delete +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe90e6bfa cl_page_list_assume +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe9b97641 lprocfs_rd_uint +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xea74c054 cl_lock_mutex_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xeacec47c lprocfs_oh_tally_log2 +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xebf72633 class_num2obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xec2021c4 cl_object_prune +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xec7d6b85 obd_timeout_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xec92270f lu_object_find_slice +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xecb96798 dt_key +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xed51ef7d lprocfs_seq_release +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xee354690 lu_device_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xee68bc29 lu_session_tags_update +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xeec69c43 class_conn2obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xeeeb79fa do_lcfg +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xef761923 cl_object_top +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xef76f858 block_debug_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xefff4f13 lu_stack_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf01e2527 server_name2index +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf0530b74 lprocfs_free_md_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf0d1d7e9 ldebugfs_register_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf0f21b88 obdo_from_iattr +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf1319caa cl_lock_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf1748574 cl_req_page_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf215bcfa llog_declare_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf256b0f5 class_destroy_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf286a06d llog_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf2f43c76 llog_declare_write_rec +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf2fd6695 statfs_pack +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf3bc5b9d dt_lfsck_features +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf490d5f9 class_del_profiles +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf4ed9e69 cl_io_read_page +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf60d4659 capa_count +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf61aac19 cl_io_commit_write +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf63a535a class_disconnect +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf7020831 lprocfs_dt_rd_kbytesavail +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf772890f cl_io_submit_sync +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf7e35a1f cl_object_has_locks +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf8cee52b cl_page_find +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfa1e058c cl_lock_get_trust +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfa813d06 capa_hmac +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfa821a7f obd_export_evict_by_uuid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfa9a9317 lu_object_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfbea0098 lu_types_stop +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfc0046ad cl_page_header_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfc7930b1 obd_export_nid2str +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfc7f18d0 obd_pages_max +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfd68d17a class_notify_sptlrpc_conf +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfdbe1557 lprocfs_write_u64_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfdfa1ac4 lu_object_header_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfe210ac0 lu_context_enter +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfe543207 lu_site_stats_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfec15ab8 cl_page_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xff57e92d class_match_net +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfffc1f11 lustre_swab_ost_id +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x00360726 sptlrpc_cli_unwrap_bulk_write +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x006ae365 ptlrpc_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x00cb99c1 RQF_LDLM_INTENT_GETXATTR +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x00d95039 ptlrpcd_decref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x01a16046 req_capsule_extend +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x01d6ef7f ldlm_pools_recalc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x03298ca9 ptlrpc_service_health_check +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x03d2d9c7 ptlrpc_set_destroy +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x048b59d5 lustre_msg_set_handle +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0515f93b RQF_FLD_QUERY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x054ae2ac _ldlm_lock_debug +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x06b3942b lustre_swab_lov_user_md_objects +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x071fc74a RQF_LDLM_ENQUEUE_LVB +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x07605c7d interval_find +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0878c70a sptlrpc_register_policy +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x08bb2d27 lustre_swab_obd_ioobj +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0922379d ldlm_completion_ast_async +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x095587d0 lustre_msg_buflen +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0a3130b0 RMF_MDT_EPOCH +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0ac252b2 lustre_msg_set_jobid +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0ac54708 lustre_errno_hton +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0b6bcedd target_pack_pool_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0bcacb5d RMF_MDS_HSM_USER_ITEM +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0c2947fc ptlrpc_unregister_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0c2d9c43 lustre_swab_lip_header +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0cf343dd RQF_LDLM_INTENT_BASIC +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0dd1323c sptlrpc_enc_pool_put_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0f7e3a74 client_disconnect_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x10f18f20 interval_iterate_reverse +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x113a2b60 ptlrpc_req_finished_with_imp_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x115017f6 req_layout_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x12b6f5a3 ptlrpc_connection_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x12f55403 ldlm_namespace_foreach +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x14708afc lustre_swab_mdt_rec_reint +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x147ab38e req_capsule_get_size +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1483eca4 ldlm_lock_addref_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x14d192db lustre_msg_size +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1516ab02 req_capsule_other_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x155305e4 ptlrpc_fail_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x15a3e4db RMF_GETINFO_VAL +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x172fb86d lustre_msg_hdr_size +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1747d8b3 ldlm_lockname +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x17950f60 RQF_SEC_CTX +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x18cc34f3 sptlrpc_enc_pool_get_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x19108a0f RQF_OST_DISCONNECT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x19464ae1 ldlm_pool_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x19c08934 RQF_LDLM_INTENT_CREATE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1a6a3ce9 RQF_OST_GET_INFO_LAST_ID +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1a9b76aa RMF_OBD_QUOTACTL +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1abd3258 RMF_SETINFO_VAL +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1ace4b5f RQF_LDLM_BL_CALLBACK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1ad6c330 RMF_EAVALS +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1b863989 sptlrpc_lprocfs_cliobd_attach +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1bae0270 interval_iterate +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1bc89a54 ldlm_prep_enqueue_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1be21715 lustre_msg_size_v2 +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1c300d8e lustre_msg_get_slv +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1c53c579 ptlrpc_activate_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1cd09581 req_capsule_client_dump +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1d043548 lustre_msg_set_op_flags +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1dc2051d RMF_SEQ_OPC +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1de9c288 lustre_swab_layout_intent +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1e8e48a4 sptlrpc_flavor_has_bulk +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1eb2a65f RQF_OST_GETATTR +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1ee46b51 lustre_init_msg_v2 +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1ee9eb3c RQF_MDS_QUOTACTL +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1fb77c83 ldlm_lock_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2096f5b5 RQF_OST_SET_GRANT_INFO +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x20d6b82c RQF_LDLM_INTENT_QUOTA +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x218a36ce ldlm_cli_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x219391ec RMF_EAVALS_LENS +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x21acd3cc sptlrpc_import_flush_all_ctx +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x233790b5 RMF_OST_BODY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2423ae71 ldlm_lock_convert +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x244e5558 lustre_msg_get_version +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x24aafdba RMF_MGS_TARGET_INFO +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2585a629 RMF_SEQ_RANGE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2587513c RQF_LDLM_CP_CALLBACK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x25c3083c ptlrpc_register_bulk +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x269554ce RQF_LDLM_INTENT_GETATTR +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x26f99d16 RQF_MGS_CONFIG_READ +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x285e5b99 lustre_msg_set_conn_cnt +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x290a36f1 ldlm_pool_get_limit +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x298c5fd7 ptlrpc_register_service +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x29e0869a sptlrpc_get_hash_name +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2a63a472 lustre_swab_ptlrpc_body +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2b1565c3 sptlrpc_sec_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2b5dc187 ldlm_pool_del +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2c00c60d ptlrpc_sample_next_xid +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2ca92fa8 ldlm_lock_decref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2ccd5b87 ldlm_cli_cancel_list_local +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2d56f168 ptlrpc_pinger_ir_up +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2d798316 RMF_MGS_CONFIG_RES +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2d9b4844 req_capsule_server_sized_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2e4562fe RQF_LLOG_ORIGIN_HANDLE_CREATE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2e4ca396 RQF_LDLM_INTENT_UNLINK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2ecd7515 lustre_msg_check_version +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2ed9e518 ptlrpc_obd_ping +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2ee78f59 req_capsule_server_pack +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2f0e4f87 RQF_OST_QUOTACTL +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2f793215 lustre_swab_ost_body +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2fab3539 lustre_swab_ost_lvb_v1 +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2fd2f737 lustre_msg_set_limit +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x301d4fcd RQF_MDS_READPAGE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x302937e0 RQF_MDS_CONNECT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3060b9c6 sptlrpc_rule_set_expand +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3107f670 ptlrpc_check_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x31838cb4 RMF_IDX_INFO +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3261b862 RQF_OST_SYNC +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x33bb7761 ldlm_typename +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x340451d1 sptlrpc_target_export_check +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x35939a3d lustre_swab_fiemap +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x362df73c ldlm_pool_get_slv +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x36408373 ldlm_cli_enqueue +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3650d8bf llog_client_ops +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x379fd243 req_capsule_server_sized_swab_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3835ab4b RQF_LLOG_ORIGIN_CONNECT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x38526c56 ptlrpc_unpack_rep_msg +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3858fb94 RMF_OBD_STATFS +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x38c01799 RQF_LDLM_CALLBACK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x38fce533 lustre_msg_set_versions +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x39d1d532 ptlrpc_cleanup_imp +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x39f60a5f RMF_OST_ID +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3a1e4bcb __lustre_unpack_msg +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3aace465 ldlm_lock_fail_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3ab90f6e lustre_msg_bufcount +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3ac00716 lustre_swab_hsm_user_state +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3ac797fa ptlrpc_req_xid +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3b55ed6a _debug_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3b6b7cba dump_ioo +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3bedb0c7 RMF_LLOGD_CONN_BODY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3bf11683 ptlrpc_disconnect_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3c29c42b ldlm_cli_cancel_unused_resource +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3c63e62b RQF_MDS_REINT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3c8b16ab lustre_swab_ost_lvb +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3ca50f33 RQF_MDS_HSM_CT_REGISTER +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3d7dc5f9 ldlm_pools_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3dc47695 lustre_msg_get_magic +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3e6da8fc ptlrpc_recover_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3f034caf lustre_msg_get_status +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3f752e78 RQF_MDS_STATFS +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3fc39610 ptlrpc_buf_need_swab +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x41008cef RQF_LDLM_CANCEL +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x43053ae9 ldlm_pool_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x43168488 RQF_MDS_RELEASE_CLOSE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x43705ee4 RQF_LOG_CANCEL +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x43d7efc8 lustre_msg_set_transno +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x44036eda RQF_MDS_GET_INFO +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x440c2a71 RMF_FIEMAP_VAL +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4469fdc9 ptlrpc_set_add_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4481591d RQF_OST_SET_INFO_LAST_FID +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4524d995 target_send_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x45d05893 lustre_swab_lustre_capa +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x45e30cea lustre_swab_ldlm_intent +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x474db547 ldlm_lock_downgrade +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x47f5e903 RMF_MDS_HSM_REQUEST +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x485a931f do_set_info_async +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x48a2142e ldlm_enqueue_pack +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x491df459 ldlm_reprocess_all_ns +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x498c03c5 lustre_msg_set_last_xid +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4a5a2416 RMF_DLM_REQ +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4c563346 ptlrpc_mark_interrupted +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4d27cab4 ldlm_lock_fail_match_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4d6595c7 sptlrpc_gc_del_sec +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4d7580d0 lustre_swab_hsm_user_item +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4e11585f ptlrpc_pinger_del_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4e1706e5 lustre_msg_buf +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4e696b96 ptlrpcd_queue_work +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4eb03a6f ptlrpcd_destroy_work +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4f766c3b lustre_swab_generic_32s +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x50443f6a ptlrpc_init_client +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5099745e ptlrpc_prep_bulk_imp +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x50dd74f8 RMF_STRING +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x51468560 ptlrpcd_alloc_work +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x52250fc0 sptlrpc_get_bulk_checksum +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x52c62150 RMF_RCS +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x53411557 RMF_DLM_REP +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x53a4a004 bulk_sec_desc_unpack +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x54314e59 client_destroy_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x54ae5021 ldlm_lock_addref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x555eb7fe RQF_MDS_HSM_STATE_SET +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x55a3680e ptlrpc_error +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x571fc6fe sptlrpc_sec_destroy +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5782b974 ldlm_init_flock_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x57b62bc6 client_obd_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x588035b4 RMF_UPDATE_REPLY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x595ab175 lustre_swab_obd_quotactl +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x596582bf RMF_GETINFO_VALLEN +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5a057439 interval_search +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5af0d02a ldlm_lock_dump_handle +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5b6ba895 lustre_packed_msg_size +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5b7b11ae ldlm_lock2handle +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5c6a3a83 RQF_SEQ_QUERY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5ca1b491 lustre_swab_close_data +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5caae213 ptlrpc_next_xid +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5cfbbaf9 ldlm_prep_elc_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5d790905 req_capsule_client_swab_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5dbc791f ldlm_lock2desc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5e0b19b1 RMF_CLUUID +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5e2b7558 lustre_msghdr_get_flags +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5e6f435d RQF_OST_BRW_READ +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5e780076 ptlrpc_set_import_active +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5e80f899 RQF_LLOG_ORIGIN_HANDLE_READ_HEADER +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5ec3284d RQF_MDS_HSM_CT_UNREGISTER +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5ef831ee lustre_msg_get_handle +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5f012d87 ptlrpc_at_set_req_timeout +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5f96ccdd ptlrpc_connection_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5fc9a455 RMF_CLOSE_DATA +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5fd100ef req_capsule_filled_sizes +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6042bc15 RQF_MDS_REINT_RENAME +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6045031b client_obd_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x604e2505 RMF_SWAP_LAYOUTS +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x607ec932 lustre_msg_set_buflen +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x60cd26ad RQF_MDS_REINT_CREATE_SYM +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6146b6fb ptlrpc_buf_set_swabbed +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x61646e1b RQF_MDS_SWAP_LAYOUTS +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x618ad203 RQF_OST_GET_INFO_LAST_FID +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x62aaae3f RQF_MDS_HSM_REQUEST +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x62dbb658 ptlrpc_nrs_policy_unregister +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6315dd4c RMF_LLOGD_BODY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6352a62d ldlm_get_ref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x647b6e48 lustre_swab_ldlm_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x653723dc RMF_LOGCOOKIES +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x657b00b7 ptlrpc_init_rq_pool +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x658a2fc6 ldlm_namespace_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x668588ac ptlrpc_restart_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6703dbcb ptlrpc_lprocfs_register_obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x67377529 sptlrpc_target_update_exp_flavor +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x683243bf ptlrpc_set_next_timeout +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x68326375 ptl_send_rpc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x68511dbf ldlm_cli_cancel_list +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x685eeaba RMF_DLM_GL_DESC +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x68cb2541 interval_is_overlapped +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x68f49e5e ptlrpc_expired_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6912990a RQF_OST_QUOTACHECK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x696ba811 lustre_msg_get_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6972c28b client_connect_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x69c9f04d RQF_MDS_REINT_LINK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6a3785c9 RMF_EADATA +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6ade8385 ptlrpc_send_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6c57bbf6 dump_obdo +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6d72828c sptlrpc_conf_log_update_end +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6d7931cc RQF_UPDATE_OBJ +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6e3f141c ldlm_pool_set_slv +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6eb6a4a3 req_capsule_set_size +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6ed20499 ldlm_revalidate_lock_handle +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6efa82b0 RQF_MGS_TARGET_REG +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6f6dc736 lustre_swab_mdt_remote_perm +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6fb92092 sptlrpc_flavor2name_bulk +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x703538e4 lustre_swab_hsm_current_action +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x723d43b6 sptlrpc_rule_set_dump +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x725a892c RQF_MDS_REINT_OPEN +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x739139be sec2target_str +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x73e4e5c9 ptlrpc_add_rqs_to_pool +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x74840056 lustre_msg_set_status +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7507537c req_capsule_server_dump +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x757aa50f sptlrpc_cli_unwrap_bulk_read +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x75a2c40d ldlm_put_ref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x75ab1812 ldlm_namespace_dump +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x76b728e5 lustre_swab_update_buf +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7722fbd8 ldlm_namespace_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x77840c82 sptlrpc_rule_set_choose +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x78bf9136 lustre_swab_ldlm_lock_desc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7a832f10 RMF_CONN +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7a8a98b8 ptlrpc_deactivate_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7b158da4 lustre_swab_ldlm_request +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7bbf8001 RMF_MDT_BODY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7c3387a6 ptlrpc_set_add_new_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7c4c6107 RQF_LDLM_CONVERT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7cd66b5f ldlm_lock_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7d1ecd7f RQF_LDLM_INTENT_LAYOUT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7d41a8b9 RQF_QUOTA_DQACQ +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7d69f52a sptlrpc_conf_client_adapt +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7dc0e7cd RMF_QUOTA_BODY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7ddfafbe ldlm_cli_enqueue_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7dfb3c18 lustre_msg_clear_flags +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7ef9d93a lprocfs_wr_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7f4925d8 interval_expand +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7f4c99b1 ldlm_expired_completion_wait +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7f5a1cc7 lustre_msg_set_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7f60eb63 ptlrpc_request_alloc_pack +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7f6d2357 lustre_msg_is_v1 +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x804fe76d req_capsule_has_field +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x80a9e8c3 lustre_msg_get_last_xid +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x80e76455 ptlrpc_commit_replies +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x80ecb4e3 RMF_MDS_HSM_CURRENT_ACTION +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x817d7f1f lustre_msg_add_flags +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x81882031 req_capsule_server_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x82550bd4 ptlrpcd_add_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x826d3c4f RQF_LDLM_GL_CALLBACK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x82fa6120 lustre_pack_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8359b9ea sptlrpc_cli_ctx_wakeup +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x837efb00 RMF_NAME +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x83e67ac4 sptlrpc_cli_wrap_bulk +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x83f77bc0 ldlm_pool_get_clv +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x85135801 RMF_DLM_LVB +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x85a9e0d8 RMF_FID +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x85eecf67 sptlrpc_get_hash_alg +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8610fc0e ldlm_lock_allow_match_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x863db6eb RMF_HSM_USER_STATE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x86fa8c3b ldlm_cli_convert +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8760beaf lustre_swab_ldlm_policy_data +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x876c2551 RMF_GETINFO_KEY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x87bf7b3c sptlrpc_get_next_secid +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8872f3d2 RMF_SETINFO_KEY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x88cb1307 sptlrpc_gc_add_ctx +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x88d3554d ldlm_flock_completion_ast +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x88fff52d RMF_CAPA2 +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x895ed9e9 target_print_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x897286e9 req_capsule_shrink +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x89f9edf7 RQF_MDS_REINT_SETXATTR +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8a1ea476 lustre_swab_hsm_state_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8a257736 RQF_MDS_HSM_STATE_GET +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8a4345b1 ptlrpc_set_add_cb +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8ac0c257 ptlrpc_reconnect_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8ac440fa ptlrpc_uuid_to_connection +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8acf79f9 client_import_add_conn +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8b11e65b sptlrpc_sec_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8b49f9ef lustre_pack_reply_flags +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8b854254 lustre_swab_mgs_config_res +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8bfb1120 ldlm_resource_unlink_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8cb71d4b RQF_MDS_REINT_CREATE_SLAVE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8d77ea75 lustre_msg_set_flags +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8da3fca7 lustre_msg_add_version +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8daeb24e __ptlrpc_free_bulk +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8e9abe4d RMF_GENERIC_DATA +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8ea91fcd ldlm_pool_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8eefe06f ptlrpc_lprocfs_brw +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8f0aceac RQF_MDS_HSM_ACTION +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8f5ce0ef ptlrpc_prep_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8fca9cfe req_capsule_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8fec0451 lustre_msg_get_limit +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x90243309 ldlm_lock_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x90495eac req_capsule_server_swab_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x914c2343 ptlrpc_wake_delayed +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x919c4ce3 RMF_OBD_ID +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x91cf58d3 RQF_MDS_PIN +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9228392f lustre_swab_mdt_body +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x937b1ee0 lustre_swab_mdt_ioepoch +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9428760e __ptlrpc_prep_bulk_page +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9432e7b5 req_capsule_field_present +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x944e5d4c ptlrpc_pinger_add_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x94d21bc8 llog_initiator_connect +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9553c633 RQF_LDLM_INTENT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x95d08f0c lustre_swab_mgs_target_info +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9660ace0 RMF_FLD_MDFLD +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x967bfd52 RQF_OBD_PING +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x972b8562 ptlrpc_request_addref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9798f2f1 RQF_MDS_GETATTR +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x980fcfdc ptlrpc_connection_addref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9999cf7a dump_ost_body +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9a258886 RQF_MDS_GETSTATUS +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9a6f2f6d lustre_msg_set_opc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9a986f43 lustre_free_reply_state +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9b3dbce9 ldlm_namespace_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9b708655 ptlrpc_schedule_difficult_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9b88f6ce RMF_NIOBUF_REMOTE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9bb5198b RQF_MDS_CLOSE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9cbfb5e0 sptlrpc_import_sec_ref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9d7ea314 sptlrpc_pack_user_desc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9de06074 ldlm_resource_iterate +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9fb088f1 lustre_swab_lov_mds_md +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9ffeca60 ldlm_namespace_new +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa0fe6ff8 ldlm_cli_cancel_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa10f0d3d RMF_UPDATE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa163f4c3 dump_rniobuf +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa2244636 RQF_MDS_GETATTR_NAME +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa22c0086 ldlm_error2errno +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa3d2a6ee RMF_CAPA1 +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa41c764a req_capsule_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa47787ef RMF_PTLRPC_BODY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa4a2d089 RQF_OST_PUNCH +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa4bea5ef lustre_swab_lmv_user_md +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa4dccf20 lprocfs_wr_pinger_recov +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa5458dad ldlm_lock_decref_and_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa5880075 ldlm_errno2error +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa66888dd ptlrpcd_add_rqset +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa6c436ca RQF_MDS_WRITEPAGE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa7d55cc3 RQF_MDS_REINT_CREATE_RMT_ACL +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa7e360b1 RMF_OBD_IOOBJ +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa7ec567d RMF_CONNECT_DATA +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa90c8f89 sptlrpc_svc_ctx_invalidate +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa9704f80 lustre_msg_get_last_committed +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa9b370c7 ldlm_resource_putref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa9c4658e lustre_swab_lov_user_md_v3 +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa9edf09d RQF_OBD_IDX_READ +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xaa3b0623 ptlrpc_request_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xaa7620f5 ptlrpc_req_set_repsize +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xaac86fb7 ptlrpc_request_pack +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xab370e30 ldlm_pool_get_lvf +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xacb3b36d sptlrpc_cli_ctx_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xacc98f4f lustre_pack_reply_v2 +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xacd6a7d7 lustre_swab_ost_last_id +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xaddc3979 lustre_swab_lustre_capa_key +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xae04f5e9 ptlrpc_connect_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xae8aade4 ptlrpc_hpreq_handler +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xae9de7f4 ptlrpc_add_timeout_client +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xaedb1d35 ptlrpc_lprocfs_unregister_obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xaf4e9658 RQF_MDS_SYNC +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xaf50a0d6 RMF_HSM_STATE_SET +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xaf7730f4 sptlrpc_cli_enlarge_reqbuf +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xafaf7160 ptlrpc_prep_req_pool +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xafe9b048 ptlrpc_send_error +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb0032e29 ptlrpc_request_committed +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb0751fa4 RQF_LLOG_ORIGIN_HANDLE_DESTROY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb1b43d8a dump_rcs +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb27c2374 lustre_msg_get_jobid +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb291473d lustre_msg_early_size +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb4a7ecf3 lustre_msg_add_op_flags +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb512ebc2 sptlrpc_parse_flavor +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb61c54cf lprocfs_wr_ping +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb61cb95a RQF_MDS_GETXATTR +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb6366836 ldlm_blocking_ast_nocheck +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb68476df interval_erase +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb6aafd03 RQF_MDS_DONE_WRITING +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb6ce112d ldlm_cli_cancel_unused +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb7b38189 RMF_MDT_MD +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb7fa3cc8 RMF_LLOG_LOG_HDR +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb8b21d4e ptlrpc_init_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb903634e RQF_OST_CONNECT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb9b631cf lustre_swab_mgs_config_body +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbaa76097 lustre_msg_string +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbbc4c38a ldlm_cli_enqueue_local +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbc1370dc lustre_shrink_msg +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbd83bc44 RQF_OBD_SET_INFO +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbe47bc7e ping_evictor_start +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbef769cc RQF_CONNECT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbf8b6a75 ldlm_resource_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbf98b86f RQF_MDS_QUOTACHECK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbffd4313 RQF_OST_BRW_WRITE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc01b8654 req_capsule_init_area +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc06c4670 lustre_msg_get_versions +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc0867da7 RMF_REC_REINT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc0cdf55e RMF_MGS_SEND_PARAM +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc28be0d8 __ldlm_handle2lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc2986d28 lustre_swab_ldlm_res_id +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc2b1af57 RQF_MGS_SET_INFO +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc2be922a RMF_SYMTGT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc41281bf ldlm_destroy_flock_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc48cba4a req_capsule_client_sized_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc492211e lprocfs_wr_evict_client +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc559a634 RMF_LAYOUT_INTENT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc60a60e1 RQF_OST_STATFS +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc60f6407 ptlrpc_invalidate_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc694be4b RQF_LLOG_ORIGIN_HANDLE_PREV_BLOCK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc6d4e3d5 ldlm_extent_shift_kms +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc763fabc sptlrpc_process_config +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc78a5464 ptlrpc_free_rq_pool +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc79b9c67 ldlm_pools_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc7ca8257 RQF_MDS_REINT_SETATTR +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc7e47564 ptlrpc_interrupted_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc81834c9 ldlm_destroy_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc8cf96c0 ptlrpc_unregister_service +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc8f586a9 ptlrpc_connection_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc9747455 ldlm_register_intent +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xca2ab33f ptlrpc_replay_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xca5a81ec ptlrpc_pinger_ir_down +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xca612aaa sptlrpc_import_flush_my_ctx +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xcb16107d ptlrpc_set_wait +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xcb2cc0cf lustre_swab_lquota_lvb +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xcb2ceaff sptlrpc_secflags2str +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xcb4efaa0 ldlm_lock_allow_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xcd308e6c ptlrpc_request_alloc_pool +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xce1a689b sptlrpc_enc_pool_add_user +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xce86066d lustre_msg_set_slv +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xcec513c9 RQF_MDS_UNPIN +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xced015be sptlrpc_rule_set_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xcf9963db lustre_msg_get_op_flags +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xcf9aab6a RQF_MDS_DISCONNECT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd03b55b8 req_capsule_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd106ba77 sptlrpc_cli_ctx_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd2983334 lustre_swab_swap_layouts +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd2e0d4eb lustre_msg_get_opc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd31f6913 client_import_del_conn +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd3dae408 ldlm_it2str +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd67a5d7b lustre_swab_update_reply_buf +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd69e0a27 RQF_MDS_IS_SUBDIR +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd6c3ebfb RMF_FIEMAP_KEY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd74f03e9 ldlm_pool_set_limit +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd7910326 lustre_swab_obd_statfs +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd7bd6b07 lock_res_and_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd7e4f688 ptlrpc_start_threads +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd855e8d2 ldlm_cancel_resource_local +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd8b91b3e lustre_swab_lov_desc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd8f06300 RQF_MDS_HSM_PROGRESS +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd8f6d5d2 ldlm_blocking_ast +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd93c9afa ptlrpc_request_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd9561861 RQF_LDLM_INTENT_OPEN +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd961e622 ptlrpc_retain_replayable_request +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xdb1fb0a2 RQF_MDS_REINT_CREATE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xdb31a74a ldlm_resource_foreach +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xdb9d5a6a lustre_swab_niobuf_remote +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xdbd05b62 ldlm_cli_update_pool +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xdc4a4712 req_capsule_client_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xdc516b95 ldlm_replay_locks +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xdd0ffb04 sptlrpc_flavor2name +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xdd30d7bf RMF_ACL +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xddc40a85 lustre_msg_get_flags +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xde12d36b RMF_MDS_HSM_ARCHIVE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xde555d70 sptlrpc_enc_pool_del_user +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xde9acd09 ptlrpc_abort_inflight +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xdee87192 sptlrpc_conf_log_update_begin +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xdf701ae7 lustre_swab_fid2path +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xdfe6f63c ldlm_pool_set_clv +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe0cc694c RQF_LLOG_ORIGIN_HANDLE_NEXT_BLOCK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe128828a ldlm_pool_shrink +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe1a520ee ptlrpc_resend +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe24f5e76 ptlrpc_save_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe32163c5 sptlrpc_target_sec_part +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe38ea2b2 ldlm_init_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe40e0a50 lustre_msg_get_transno +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe57bd972 sptlrpc_current_user_desc_size +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe5e8169b lustre_errno_ntoh +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe5ee1e8a sptlrpc_gc_add_sec +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe643998e RQF_OST_SETATTR +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe67df16f ptlrpc_unpack_req_msg +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe6f0dc96 RQF_OST_CREATE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe7062b5f RMF_U32 +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe7512278 ptlrpcd_addref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe85b6da3 lustre_swab_obdo +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe8c983eb ldlm_get_enq_timeout +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe9a8803b ptlrpc_request_bufs_pack +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xeabac4fc sptlrpc_rule_set_merge +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xeb23e80d ldlm_namespace_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xebb64e68 req_layout_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xec226f66 ping_evictor_stop +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xec870266 ldlm_completion_ast +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xec939a00 RQF_MDS_REINT_UNLINK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xec966bd0 ldlm_pool_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xecace5c1 RQF_OST_GET_INFO_GENERIC +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xed1c10d6 ptlrpc_connection_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xed98578e req_capsule_server_grow +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xedcb740d sptlrpc_name2flavor_base +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xeecbfe28 ptlrpc_queue_wait +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xef137382 ptlrpc_pinger_sending_on_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xef1aeca9 RMF_FLD_OPC +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xef667d05 ptlrpc_resend_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf0241d6e lustre_swab_hsm_progress_kernel +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf0d52b5f ptlrpc_pinger_suppress_pings +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf121c068 ldlm_lock_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf1300275 _sptlrpc_enlarge_msg_inplace +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf277c125 RQF_OST_GET_INFO_FIEMAP +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf27d49dc sptlrpc_target_choose_flavor +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf2c6026e ptlrpc_nrs_policy_register +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf33174f8 ptlrpc_request_set_replen +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf34547b8 unlock_res_and_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf35f132b lustre_swab_ldlm_resource_desc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf3947ea4 ptlrpc_stop_all_threads +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf3d44370 RQF_OST_DESTROY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf43540b9 lustre_swab_mgs_nidtbl_entry +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf45085e1 sptlrpc_conf_log_stop +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf46a358b sptlrpc_cli_ctx_expire +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf52f05eb sptlrpc_req_replace_dead_ctx +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf55c033b RMF_MGS_CONFIG_BODY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf584a16b sptlrpc_part2name +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf596e9ae sptlrpc_conf_log_start +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf607fc23 sptlrpc_flavor2name_base +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf617ab8a lustre_msg_get_conn_cnt +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf68bff58 ptlrpcd_wake +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf697b756 ldlm_dump_all_namespaces +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf6b44ec4 ptlrpc_req_finished +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf7408f84 lustre_swab_hsm_request +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf7ba40c0 RMF_MDS_HSM_PROGRESS +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf8234e72 ldlm_glimpse_ast +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf85cb27e sptlrpc_parse_rule +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf870fed9 RQF_LDLM_GL_DESC_CALLBACK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf8ba27a4 ptlrpc_unregister_bulk +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf9051bd6 RQF_QC_CALLBACK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf94e41e0 deuuidify +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf973aa93 lustre_swab_lov_user_md_v1 +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf9ee11e2 lustre_msg_set_last_committed +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf9f72dfc RMF_TGTUUID +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xfa51688d interval_insert +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xfa5614df sptlrpc_unregister_policy +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xfb444a98 ptlrpc_prep_fcset +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xfc2fa83f ptlrpc_del_timeout_client +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xfd148bf8 RMF_LDLM_INTENT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xfdcec44e lprocfs_rd_pinger_recov +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xfeda0cb6 lustre_pack_request +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xff02a0e9 ldlm_lock_set_data +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xff2b5341 ptlrpc_prep_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xff5e9731 ldlm_lock_change_resource +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xff7111b9 client_import_find_conn +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xffa7b4dd ptlrpc_cleanup_client +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xffc807e8 sptlrpc_unpack_user_desc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xffe29c3f RQF_LDLM_ENQUEUE +EXPORT_SYMBOL drivers/staging/media/cxd2099/cxd2099 0xbb8206f1 cxd2099_attach +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x0423b075 rtllib_start_send_beacons +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x09d4fe32 rtllib_wpa_supplicant_ioctl +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x0c217def rtllib_wx_set_rts +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x0f234877 rtllib_start_scan_syncro +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x1cf291bd RemovePeerTS +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x229a24fe rtllib_MgntDisconnect +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x26ae4a11 notify_wx_assoc_event +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x303e228b rtllib_DisableIntelPromiscuousMode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x380a7c26 rtllib_act_scanning +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x39250f60 rtllib_wx_set_wap +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x4018eae5 rtllib_wx_get_name +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x405bf274 rtllib_wx_get_freq +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x414326c2 rtllib_wx_set_rawtx +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x4531d578 rtllib_wx_get_scan +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x4b39edd3 rtllib_legal_channel +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x4d9fd5e1 rtllib_wx_set_mlme +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x4ff1705d free_rtllib +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x5a2e2d28 rtllib_wx_set_freq +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x5aa822f0 rtllib_xmit +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x5f440a24 rtllib_wx_set_scan +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x6f026d6e rtllib_reset_queue +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x732d2ec2 rtllib_wx_get_encode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x734fe9aa rtllib_wx_set_encode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x7552afa1 rtllib_rx +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x763b57b3 alloc_rtllib +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x7e8aea82 rtllib_EnableIntelPromiscuousMode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x80b0e010 rtllib_wx_get_essid +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x87b109ce rtllib_wx_set_gen_ie +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x87d9c414 rtllib_wx_get_mode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x8a84ffeb rtllib_wx_set_auth +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x917fda65 HT_update_self_and_peer_setting +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x91889dd8 rtllib_stop_scan_syncro +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x931f4b00 rtllib_softmac_start_protocol +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x962e2e74 rtllib_wx_get_wap +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x9dac1b48 rtllib_wx_set_mode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xa32a5cfb rtllib_wx_get_rts +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xa83e724f rtllib_wx_set_encode_ext +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xaa7a30e1 Dot11d_Channelmap +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xaebbd400 rtllib_get_beacon +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xb08fc02d rtllib_wx_get_power +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xb71aae70 rtllib_sta_ps_send_null_frame +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xbe1420f2 rt_global_debug_component +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xc7970f3b rtllib_wx_set_rate +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xc93c5de2 rtllib_stop_send_beacons +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xd05676ce rtllib_softmac_stop_protocol +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xd248a82d rtllib_wx_set_power +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xd3969147 rtllib_stop_scan +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xdde2d067 rtllib_wx_get_rate +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xdf78f620 rtllib_wlan_frequencies +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xdff9eb08 rtllib_ps_tx_ack +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xe2778810 rtllib_wx_set_essid +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xe728a79a dot11d_init +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x0005f855 ieee80211_wx_set_essid_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x028cfc6a ieee80211_wx_set_mode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x0884f46b ieee80211_start_scan_syncro_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x0edbd0ed ieee80211_softmac_stop_protocol_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x0f099f61 ieee80211_is_54g_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x10fd296b ieee80211_wpa_supplicant_ioctl_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x15af7dbe ieee80211_wx_set_rate_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x1f215ecf ieee80211_wx_get_encode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x20feea23 ieee80211_stop_send_beacons_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x270bae5f ieee80211_start_send_beacons_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x276d979c ieee80211_wx_get_encode_ext_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x27a605cb ieee80211_softmac_xmit_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x27c11919 ieee80211_wx_get_power_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x2c5fc91d ieee80211_wx_set_gen_ie_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x2d38c2e1 ieee80211_wx_get_wap_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x335537f7 ieee80211_send_probe_requests_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x362d76d6 ieee80211_wx_get_name_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x3649a61e ieee80211_reset_queue_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x3706db2d ieee80211_stop_scan_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x3a7efdec Dot11d_UpdateCountryIe +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x3e2023bb ieee80211_wx_set_scan_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x3fdddb31 ieee80211_softmac_scan_syncro_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x47fc1f27 ieee80211_rx_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x491a1dc1 ieee80211_softmac_start_protocol_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x5329d6c6 ieee80211_wx_set_wap_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x54393666 IsLegalChannel +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x5553d194 ieee80211_get_beacon_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x56747771 Dot11d_Init +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x5b1dd09e ieee80211_wx_set_mlme_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x61ea895d ieee80211_is_shortslot_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x6350b99e ieee80211_wx_set_encode_ext_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x663df973 ieee80211_wx_set_encode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x6840d70c ieee80211_wx_set_freq_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x731ebaca HTUpdateSelfAndPeerSetting +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x79bc3d61 Dot11d_Reset +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x806aa212 SendDisassociation_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x930f2411 ieee80211_wake_queue_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x9b5487c4 ieee80211_wx_get_scan_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x9f8267e1 ieee80211_wx_get_rts_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xa1f6d22f ieee80211_disassociate_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xa7f85815 ieee80211_wx_get_mode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xab8b4924 ieee80211_txb_free_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xaf52bef6 ToLegalChannel +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xb0dbd9c1 ieee80211_wx_get_rate_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xc01ae05c ieee80211_wx_get_essid_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xc370a43e ieee80211_wlan_frequencies_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xcd347373 ieee80211_wx_get_freq_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xd6554fcd ieee80211_stop_queue_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xd7a6c64b ieee80211_rx_mgt_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xdd960bcd DOT11D_ScanComplete +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xdf97d4f0 ieee80211_wx_set_auth_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xe19373c6 ieee80211_wx_set_rts_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xe7de0110 ieee80211_wx_set_power_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xed47945c DOT11D_GetMaxTxPwrInDbm +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xf54631d3 ieee80211_ps_tx_ack_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xf8171a93 ieee80211_wx_set_rawtx_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xfa437656 notify_wx_assoc_event_rsl +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x0474a508 iscsit_check_dataout_payload +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x10665a64 iscsit_build_nopin_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x12fa5b1f iscsit_allocate_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x133bfb76 iscsit_cause_connection_reinstatement +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x14ad653e iscsit_handle_task_mgt_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x1df76e80 iscsit_setup_nop_out +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x272eadce iscsit_build_reject +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x31170827 iscsit_handle_logout_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x31959652 iscsit_set_unsoliticed_dataout +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x36fc41c3 iscsit_register_transport +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x3a1af36d iscsit_check_dataout_hdr +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x44187b3e iscsit_sequence_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x5b664f06 iscsit_stop_dataout_timer +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x61c7e9c8 iscsit_build_rsp_pdu +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x6786edd1 iscsit_build_text_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x6f6d106a iscsit_build_task_mgt_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x729c20b6 iscsit_process_text_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x819742dc iscsit_tmr_post_handler +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x82dbdb0f iscsit_unregister_transport +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x89e3c37a iscsit_setup_scsi_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x9676b96d iscsit_release_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x9d30a366 iscsit_process_scsi_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xa6e997d7 iscsit_increment_maxcmdsn +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xacb7cf63 iscsit_build_logout_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xc33ee2ba iscsit_setup_text_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xc5411039 iscsit_process_nop_out +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xd39bc8e6 iscsit_logout_post_handler +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xe00a45ff iscsit_find_cmd_from_itt +EXPORT_SYMBOL drivers/target/target_core_mod 0x00ae5bf0 transport_init_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x01248cd8 spc_emulate_inquiry_std +EXPORT_SYMBOL drivers/target/target_core_mod 0x02de3b18 transport_set_vpd_ident +EXPORT_SYMBOL drivers/target/target_core_mod 0x0432b137 sbc_get_write_same_sectors +EXPORT_SYMBOL drivers/target/target_core_mod 0x04bd6cf0 target_nacl_find_deve +EXPORT_SYMBOL drivers/target/target_core_mod 0x04d7fce0 target_get_sess_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x075605d2 target_unregister_template +EXPORT_SYMBOL drivers/target/target_core_mod 0x09c1aab4 target_wait_for_sess_cmds +EXPORT_SYMBOL drivers/target/target_core_mod 0x0cf9ad24 sbc_dif_verify +EXPORT_SYMBOL drivers/target/target_core_mod 0x0e74fbd0 target_submit_tmr +EXPORT_SYMBOL drivers/target/target_core_mod 0x0eff8c87 spc_emulate_report_luns +EXPORT_SYMBOL drivers/target/target_core_mod 0x27007c25 core_tpg_deregister +EXPORT_SYMBOL drivers/target/target_core_mod 0x2b3b4e04 target_complete_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x321c0d20 transport_deregister_session_configfs +EXPORT_SYMBOL drivers/target/target_core_mod 0x3735a8bb transport_lookup_tmr_lun +EXPORT_SYMBOL drivers/target/target_core_mod 0x37e328c8 spc_emulate_evpd_83 +EXPORT_SYMBOL drivers/target/target_core_mod 0x38650e42 target_put_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x3ac85311 transport_generic_request_failure +EXPORT_SYMBOL drivers/target/target_core_mod 0x43e18570 transport_alloc_session_tags +EXPORT_SYMBOL drivers/target/target_core_mod 0x490ea927 transport_check_aborted_status +EXPORT_SYMBOL drivers/target/target_core_mod 0x5374d463 sbc_dif_copy_prot +EXPORT_SYMBOL drivers/target/target_core_mod 0x54424f21 passthrough_parse_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0x5a918c14 transport_deregister_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x5d81969f target_depend_item +EXPORT_SYMBOL drivers/target/target_core_mod 0x61e2047b target_submit_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x651d5337 core_tmr_alloc_req +EXPORT_SYMBOL drivers/target/target_core_mod 0x6e6dfbe8 spc_parse_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0x70a53b80 target_put_sess_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x77ac0c42 core_tpg_set_initiator_node_queue_depth +EXPORT_SYMBOL drivers/target/target_core_mod 0x7dbada9d transport_set_vpd_ident_type +EXPORT_SYMBOL drivers/target/target_core_mod 0x7e2d3207 sbc_parse_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0x81eb201f transport_generic_handle_tmr +EXPORT_SYMBOL drivers/target/target_core_mod 0x821007fe sbc_get_device_type +EXPORT_SYMBOL drivers/target/target_core_mod 0x83694310 transport_send_check_condition_and_sense +EXPORT_SYMBOL drivers/target/target_core_mod 0x8427233e passthrough_attrib_attrs +EXPORT_SYMBOL drivers/target/target_core_mod 0x84c6a3d7 transport_handle_cdb_direct +EXPORT_SYMBOL drivers/target/target_core_mod 0x85aa880c transport_set_vpd_assoc +EXPORT_SYMBOL drivers/target/target_core_mod 0x89054e62 transport_backend_register +EXPORT_SYMBOL drivers/target/target_core_mod 0x8c905747 transport_generic_new_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x8df176e3 target_register_template +EXPORT_SYMBOL drivers/target/target_core_mod 0x92f2fa25 __transport_register_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x945483ee transport_kunmap_data_sg +EXPORT_SYMBOL drivers/target/target_core_mod 0x9bf40598 transport_init_se_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xa07d1c19 target_lun_is_rdonly +EXPORT_SYMBOL drivers/target/target_core_mod 0xa4895163 target_sess_cmd_list_set_waiting +EXPORT_SYMBOL drivers/target/target_core_mod 0xa8300116 target_show_dynamic_sessions +EXPORT_SYMBOL drivers/target/target_core_mod 0xa9220f57 core_tpg_register +EXPORT_SYMBOL drivers/target/target_core_mod 0xb36ef766 core_tpg_set_initiator_node_tag +EXPORT_SYMBOL drivers/target/target_core_mod 0xb8585ac1 core_tpg_get_initiator_node_acl +EXPORT_SYMBOL drivers/target/target_core_mod 0xc662ac44 sbc_attrib_attrs +EXPORT_SYMBOL drivers/target/target_core_mod 0xc6df1d20 core_tpg_check_initiator_node_acl +EXPORT_SYMBOL drivers/target/target_core_mod 0xcbdaf82f target_setup_cmd_from_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0xcffb06db transport_free_session +EXPORT_SYMBOL drivers/target/target_core_mod 0xd5c1558d core_alua_check_nonop_delay +EXPORT_SYMBOL drivers/target/target_core_mod 0xd7f461d1 transport_register_session +EXPORT_SYMBOL drivers/target/target_core_mod 0xdb715a81 target_execute_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xdec6a2d6 target_get_session +EXPORT_SYMBOL drivers/target/target_core_mod 0xe13ba69e target_backend_unregister +EXPORT_SYMBOL drivers/target/target_core_mod 0xe5e5f677 target_complete_cmd_with_length +EXPORT_SYMBOL drivers/target/target_core_mod 0xe5f88877 transport_lookup_cmd_lun +EXPORT_SYMBOL drivers/target/target_core_mod 0xefbf461d transport_init_session_tags +EXPORT_SYMBOL drivers/target/target_core_mod 0xefff069d target_undepend_item +EXPORT_SYMBOL drivers/target/target_core_mod 0xf01621c7 transport_set_vpd_proto_id +EXPORT_SYMBOL drivers/target/target_core_mod 0xf4526fd1 transport_generic_free_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xf755d0e8 target_submit_cmd_map_sgls +EXPORT_SYMBOL drivers/target/target_core_mod 0xfbdc4f41 transport_kmap_data_sg +EXPORT_SYMBOL drivers/target/target_core_mod 0xfc4e2257 transport_wait_for_tasks +EXPORT_SYMBOL drivers/usb/class/cdc-wdm 0x922e7548 usb_cdc_wdm_register +EXPORT_SYMBOL drivers/usb/gadget/function/usb_f_uvc 0x92e9ebac uvc_set_trace_param +EXPORT_SYMBOL drivers/usb/gadget/libcomposite 0x2f4da396 usb_os_desc_prepare_interf_dir +EXPORT_SYMBOL drivers/usb/host/sl811-hcd 0xba7cca1f sl811h_driver +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x08eedf22 usb_wwan_write_room +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x1488e988 usb_wwan_chars_in_buffer +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x3657483f usb_wwan_tiocmset +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x3816962e usb_wwan_suspend +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x63e56488 usb_wwan_ioctl +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x653eb3b3 usb_wwan_write +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x709ac022 usb_wwan_resume +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x72cd1eb0 usb_wwan_dtr_rts +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x75e6d87e usb_wwan_open +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x7c4f7354 usb_wwan_tiocmget +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x962fe086 usb_wwan_close +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xbc6abd13 usb_wwan_port_remove +EXPORT_SYMBOL drivers/usb/serial/usbserial 0xc97fa3fb usb_serial_suspend +EXPORT_SYMBOL drivers/usb/serial/usbserial 0xdc848d5c usb_serial_resume +EXPORT_SYMBOL drivers/vhost/vringh 0x0fd987f7 vringh_abandon_user +EXPORT_SYMBOL drivers/vhost/vringh 0x14397bb5 vringh_notify_disable_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x32da6f89 vringh_notify_enable_user +EXPORT_SYMBOL drivers/vhost/vringh 0x39c9d7a5 vringh_complete_multi_user +EXPORT_SYMBOL drivers/vhost/vringh 0x3b304ebb vringh_iov_push_user +EXPORT_SYMBOL drivers/vhost/vringh 0x3c71c418 vringh_getdesc_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x4311cd91 vringh_iov_pull_user +EXPORT_SYMBOL drivers/vhost/vringh 0x4f384f8b vringh_need_notify_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x58abf4ed vringh_init_user +EXPORT_SYMBOL drivers/vhost/vringh 0x5fedea44 vringh_getdesc_user +EXPORT_SYMBOL drivers/vhost/vringh 0x6432894b vringh_init_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x8d080d03 vringh_need_notify_user +EXPORT_SYMBOL drivers/vhost/vringh 0x95e62337 vringh_abandon_kern +EXPORT_SYMBOL drivers/vhost/vringh 0x97fa07e9 vringh_iov_push_kern +EXPORT_SYMBOL drivers/vhost/vringh 0xb4b63575 vringh_notify_enable_kern +EXPORT_SYMBOL drivers/vhost/vringh 0xc578f0f7 vringh_complete_user +EXPORT_SYMBOL drivers/vhost/vringh 0xd355e031 vringh_complete_kern +EXPORT_SYMBOL drivers/vhost/vringh 0xd609393d vringh_notify_disable_user +EXPORT_SYMBOL drivers/vhost/vringh 0xde804bb9 vringh_iov_pull_kern +EXPORT_SYMBOL drivers/video/backlight/lcd 0x1a5f438d lcd_device_unregister +EXPORT_SYMBOL drivers/video/backlight/lcd 0x7aaff7aa devm_lcd_device_unregister +EXPORT_SYMBOL drivers/video/backlight/lcd 0xcd86a77d devm_lcd_device_register +EXPORT_SYMBOL drivers/video/backlight/lcd 0xda32689f 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 0x316c5a6e svga_tilecopy +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x4ab38ef2 svga_set_default_crt_regs +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x6e4adb1e svga_check_timings +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x6e7f1ebc svga_settile +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x80f24d95 svga_wcrt_multi +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x8de63fb4 svga_set_timings +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0x98751238 svga_get_tilemax +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xa6ba4fcc svga_tilecursor +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xb3aede1c svga_tileblit +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xd1429fca svga_wseq_multi +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xd22ca511 svga_set_default_atc_regs +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xe0725e3d svga_tilefill +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xe28d2a49 svga_set_default_gfx_regs +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xeccdc6ad svga_get_caps +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xef774f5d svga_compute_pll +EXPORT_SYMBOL drivers/video/fbdev/core/svgalib 0xf2db5956 svga_match_format +EXPORT_SYMBOL drivers/video/fbdev/core/syscopyarea 0xd318f474 sys_copyarea +EXPORT_SYMBOL drivers/video/fbdev/core/sysfillrect 0x9139b13f sys_fillrect +EXPORT_SYMBOL drivers/video/fbdev/core/sysimgblt 0xe2b23b58 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 0x6447b62e cyber2000fb_attach +EXPORT_SYMBOL drivers/video/fbdev/cyber2000fb 0xb39f68d1 cyber2000fb_enable_extregs +EXPORT_SYMBOL drivers/video/fbdev/matrox/g450_pll 0x7fc10066 matroxfb_g450_setpll_cond +EXPORT_SYMBOL drivers/video/fbdev/matrox/g450_pll 0xa0be3c43 g450_mnp2f +EXPORT_SYMBOL drivers/video/fbdev/matrox/g450_pll 0xfdee7199 matroxfb_g450_setclk +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_DAC1064 0x085d913e matrox_G100 +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_DAC1064 0x2c45afa4 DAC1064_global_init +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_DAC1064 0x379c37c9 matrox_mystique +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_DAC1064 0x98757b06 DAC1064_global_restore +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_Ti3026 0xf159d0d5 matrox_millennium +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_accel 0x60dd6a45 matrox_cfbX_init +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_base 0x3ed55726 matroxfb_unregister_driver +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_base 0x4ebb6dea matroxfb_enable_irq +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_base 0x849a49ea matroxfb_register_driver +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_base 0xc11078ec matroxfb_wait_for_sync +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_g450 0x6dfe1558 matroxfb_g450_connect +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_g450 0xa71b29c4 matroxfb_g450_shutdown +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0x145ed482 matroxfb_vgaHWrestore +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0x25cf8049 matroxfb_PLL_calcclock +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0x4860536b matroxfb_read_pins +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0x52f525cb matroxfb_vgaHWinit +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0x7a9ba4f6 matroxfb_DAC_in +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0xcdc90c64 matroxfb_var2my +EXPORT_SYMBOL drivers/video/fbdev/matrox/matroxfb_misc 0xeab5d8df matroxfb_DAC_out +EXPORT_SYMBOL drivers/video/fbdev/mb862xx/mb862xxfb 0xee064d59 mb862xxfb_init_accel +EXPORT_SYMBOL drivers/video/fbdev/sis/sisfb 0x3037658e sis_malloc +EXPORT_SYMBOL drivers/video/fbdev/sis/sisfb 0x454a3cf0 sis_free +EXPORT_SYMBOL drivers/video/vgastate 0x686de290 restore_vga +EXPORT_SYMBOL drivers/video/vgastate 0xe7a2620e save_vga +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0x5f602fa5 w1_ds2760_store_eeprom +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0x6b65cbc2 w1_ds2760_write +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0x74a6d34c w1_ds2760_recall_eeprom +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0x81c8bb36 w1_ds2760_read +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2780 0x33d4751e w1_ds2780_io +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2780 0xf4ffbfbd w1_ds2780_eeprom_cmd +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2781 0x06957d60 w1_ds2781_eeprom_cmd +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2781 0xbdc0cdaa w1_ds2781_io +EXPORT_SYMBOL drivers/w1/wire 0x399dd162 w1_add_master_device +EXPORT_SYMBOL drivers/w1/wire 0x3b899691 w1_register_family +EXPORT_SYMBOL drivers/w1/wire 0x5b367bd1 w1_remove_master_device +EXPORT_SYMBOL drivers/w1/wire 0xbe7d371d w1_unregister_family +EXPORT_SYMBOL fs/configfs/configfs 0x2f0e1788 configfs_unregister_subsystem +EXPORT_SYMBOL fs/configfs/configfs 0x368faa03 config_item_init_type_name +EXPORT_SYMBOL fs/configfs/configfs 0x591f9ca9 config_item_get +EXPORT_SYMBOL fs/configfs/configfs 0x67098e2a config_item_set_name +EXPORT_SYMBOL fs/configfs/configfs 0x6746e807 configfs_depend_item +EXPORT_SYMBOL fs/configfs/configfs 0x7d2f7d34 config_item_put +EXPORT_SYMBOL fs/configfs/configfs 0x81966d7a config_group_init +EXPORT_SYMBOL fs/configfs/configfs 0x87a56490 config_group_init_type_name +EXPORT_SYMBOL fs/configfs/configfs 0x9ee15352 configfs_undepend_item +EXPORT_SYMBOL fs/configfs/configfs 0xc511a224 configfs_register_subsystem +EXPORT_SYMBOL fs/configfs/configfs 0xc8b9dc8f config_group_find_item +EXPORT_SYMBOL fs/exofs/libore 0x28806871 ore_verify_layout +EXPORT_SYMBOL fs/exofs/libore 0x3548fa3a ore_get_io_state +EXPORT_SYMBOL fs/exofs/libore 0x3e82fa84 extract_attr_from_ios +EXPORT_SYMBOL fs/exofs/libore 0x4383ea9f ore_read +EXPORT_SYMBOL fs/exofs/libore 0x4527e170 ore_calc_stripe_info +EXPORT_SYMBOL fs/exofs/libore 0x4c59412e ore_write +EXPORT_SYMBOL fs/exofs/libore 0x613571de ore_create +EXPORT_SYMBOL fs/exofs/libore 0x6b3d93d4 ore_remove +EXPORT_SYMBOL fs/exofs/libore 0x82b12b55 ore_get_rw_state +EXPORT_SYMBOL fs/exofs/libore 0x85124b09 ore_truncate +EXPORT_SYMBOL fs/exofs/libore 0xa3d2a634 g_attr_logical_length +EXPORT_SYMBOL fs/exofs/libore 0xc5bc1404 ore_put_io_state +EXPORT_SYMBOL fs/exofs/libore 0xe14f95fd ore_check_io +EXPORT_SYMBOL fs/fscache/fscache 0x0359cd82 fscache_object_destroy +EXPORT_SYMBOL fs/fscache/fscache 0x1fa0db00 fscache_io_error +EXPORT_SYMBOL fs/fscache/fscache 0x2282b463 __fscache_unregister_netfs +EXPORT_SYMBOL fs/fscache/fscache 0x290bf917 fscache_enqueue_operation +EXPORT_SYMBOL fs/fscache/fscache 0x2a00422e __fscache_write_page +EXPORT_SYMBOL fs/fscache/fscache 0x3074e174 fscache_mark_page_cached +EXPORT_SYMBOL fs/fscache/fscache 0x31465c88 __fscache_attr_changed +EXPORT_SYMBOL fs/fscache/fscache 0x33038a7e fscache_withdraw_cache +EXPORT_SYMBOL fs/fscache/fscache 0x4295860a fscache_check_aux +EXPORT_SYMBOL fs/fscache/fscache 0x44426ac1 fscache_obtained_object +EXPORT_SYMBOL fs/fscache/fscache 0x45a96cc4 __fscache_uncache_all_inode_pages +EXPORT_SYMBOL fs/fscache/fscache 0x5809409b __fscache_update_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x636dd317 fscache_operation_init +EXPORT_SYMBOL fs/fscache/fscache 0x7011d4c0 __fscache_readpages_cancel +EXPORT_SYMBOL fs/fscache/fscache 0x721f3208 __fscache_read_or_alloc_pages +EXPORT_SYMBOL fs/fscache/fscache 0x72453d95 fscache_cache_cleared_wq +EXPORT_SYMBOL fs/fscache/fscache 0x74530ecd fscache_op_debug_id +EXPORT_SYMBOL fs/fscache/fscache 0x7eb86bfd fscache_add_cache +EXPORT_SYMBOL fs/fscache/fscache 0x83af2a1c __fscache_check_page_write +EXPORT_SYMBOL fs/fscache/fscache 0x86ea7a44 __fscache_wait_on_invalidate +EXPORT_SYMBOL fs/fscache/fscache 0x881af48f fscache_op_complete +EXPORT_SYMBOL fs/fscache/fscache 0x8f364cd0 __fscache_enable_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x912f670d __fscache_uncache_page +EXPORT_SYMBOL fs/fscache/fscache 0x942be0e1 fscache_put_operation +EXPORT_SYMBOL fs/fscache/fscache 0x96737abb fscache_init_cache +EXPORT_SYMBOL fs/fscache/fscache 0x9bf4408a __fscache_read_or_alloc_page +EXPORT_SYMBOL fs/fscache/fscache 0x9ff4e519 __fscache_check_consistency +EXPORT_SYMBOL fs/fscache/fscache 0xa052044f fscache_fsdef_index +EXPORT_SYMBOL fs/fscache/fscache 0xa6750efd __fscache_invalidate +EXPORT_SYMBOL fs/fscache/fscache 0xa87e1efa __fscache_alloc_page +EXPORT_SYMBOL fs/fscache/fscache 0xa9bf621e fscache_object_init +EXPORT_SYMBOL fs/fscache/fscache 0xbe596728 fscache_mark_pages_cached +EXPORT_SYMBOL fs/fscache/fscache 0xc4c0535f fscache_object_retrying_stale +EXPORT_SYMBOL fs/fscache/fscache 0xc8418def fscache_object_lookup_negative +EXPORT_SYMBOL fs/fscache/fscache 0xca212ef2 __fscache_wait_on_page_write +EXPORT_SYMBOL fs/fscache/fscache 0xd58e6fec __fscache_disable_cookie +EXPORT_SYMBOL fs/fscache/fscache 0xd5e1a863 __fscache_relinquish_cookie +EXPORT_SYMBOL fs/fscache/fscache 0xd96d9e4c __fscache_maybe_release_page +EXPORT_SYMBOL fs/fscache/fscache 0xe6dcf449 fscache_object_mark_killed +EXPORT_SYMBOL fs/fscache/fscache 0xedb6a4e9 __fscache_register_netfs +EXPORT_SYMBOL fs/fscache/fscache 0xf7e2bd21 __fscache_acquire_cookie +EXPORT_SYMBOL fs/ocfs2/cluster/ocfs2_nodemanager 0xbfd7d7a2 o2hb_global_heartbeat_active +EXPORT_SYMBOL fs/quota/quota_tree 0x1c0a2d6b qtree_release_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0x78e53df0 qtree_delete_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0x93f1eb72 qtree_read_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0xb2976960 qtree_entry_unused +EXPORT_SYMBOL fs/quota/quota_tree 0xd9d1fad4 qtree_write_dquot +EXPORT_SYMBOL lib/cordic 0x434bfd07 cordic_calc_iq +EXPORT_SYMBOL lib/crc-ccitt 0x1a703ba1 crc_ccitt +EXPORT_SYMBOL lib/crc-ccitt 0x75811312 crc_ccitt_table +EXPORT_SYMBOL lib/crc-itu-t 0x6d356209 crc_itu_t +EXPORT_SYMBOL lib/crc-itu-t 0xd29b009f crc_itu_t_table +EXPORT_SYMBOL lib/crc7 0x56329ecc crc7_be +EXPORT_SYMBOL lib/crc7 0x7a222007 crc7_be_syndrome_table +EXPORT_SYMBOL lib/crc8 0xab9ad613 crc8_populate_lsb +EXPORT_SYMBOL lib/crc8 0xd09b2cba crc8 +EXPORT_SYMBOL lib/crc8 0xd4534d80 crc8_populate_msb +EXPORT_SYMBOL lib/libcrc32c 0x27000b29 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 0x482ed1a9 lc_seq_printf_stats +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 0xe74f4b86 lc_seq_dump_details +EXPORT_SYMBOL lib/lru_cache 0xefec290a lc_find +EXPORT_SYMBOL lib/lru_cache 0xfd525ec7 lc_put +EXPORT_SYMBOL lib/lz4/lz4_compress 0x0c222eb5 lz4_compress +EXPORT_SYMBOL lib/lz4/lz4hc_compress 0x682a23e0 lz4hc_compress +EXPORT_SYMBOL lib/raid6/raid6_pq 0x0bd662f6 raid6_gfmul +EXPORT_SYMBOL lib/raid6/raid6_pq 0x15fe0cd3 raid6_gfexp +EXPORT_SYMBOL lib/raid6/raid6_pq 0x5ba93f9d raid6_gfinv +EXPORT_SYMBOL lib/raid6/raid6_pq 0xce45a6f1 raid6_gfexi +EXPORT_SYMBOL lib/raid6/raid6_pq 0xd9e91f83 raid6_vgfmul +EXPORT_SYMBOL lib/raid6/raid6_pq 0xefc78e77 raid6_empty_zero_page +EXPORT_SYMBOL net/6lowpan/6lowpan 0x1a80bbba lowpan_nhc_add +EXPORT_SYMBOL net/6lowpan/6lowpan 0xf83c35b7 lowpan_nhc_del +EXPORT_SYMBOL net/802/p8022 0x46877674 register_8022_client +EXPORT_SYMBOL net/802/p8022 0xd152276a unregister_8022_client +EXPORT_SYMBOL net/802/p8023 0x0307cc5a destroy_8023_client +EXPORT_SYMBOL net/802/p8023 0x0de9005e make_8023_client +EXPORT_SYMBOL net/802/psnap 0x054b4802 unregister_snap_client +EXPORT_SYMBOL net/802/psnap 0xb1daae1b register_snap_client +EXPORT_SYMBOL net/9p/9pnet 0x039e3e32 p9_is_proto_dotl +EXPORT_SYMBOL net/9p/9pnet 0x046c2437 p9stat_read +EXPORT_SYMBOL net/9p/9pnet 0x075f1e9b p9_client_lock_dotl +EXPORT_SYMBOL net/9p/9pnet 0x0f5da90d p9_client_stat +EXPORT_SYMBOL net/9p/9pnet 0x1c28af98 p9_is_proto_dotu +EXPORT_SYMBOL net/9p/9pnet 0x2b3e285f p9_client_getattr_dotl +EXPORT_SYMBOL net/9p/9pnet 0x2b625e80 p9_client_readdir +EXPORT_SYMBOL net/9p/9pnet 0x33a52bc5 p9_client_readlink +EXPORT_SYMBOL net/9p/9pnet 0x35d1e27e p9_idpool_get +EXPORT_SYMBOL net/9p/9pnet 0x3aeaa2d6 p9_parse_header +EXPORT_SYMBOL net/9p/9pnet 0x3d73a797 p9_errstr2errno +EXPORT_SYMBOL net/9p/9pnet 0x44359cb9 p9_client_cb +EXPORT_SYMBOL net/9p/9pnet 0x44d2c2c0 p9stat_free +EXPORT_SYMBOL net/9p/9pnet 0x4b558884 p9_client_symlink +EXPORT_SYMBOL net/9p/9pnet 0x53d58a07 p9dirent_read +EXPORT_SYMBOL net/9p/9pnet 0x578d632d p9_client_read +EXPORT_SYMBOL net/9p/9pnet 0x5914cdfe p9_client_link +EXPORT_SYMBOL net/9p/9pnet 0x5fb34386 p9_client_attach +EXPORT_SYMBOL net/9p/9pnet 0x5fbee6f8 p9_client_getlock_dotl +EXPORT_SYMBOL net/9p/9pnet 0x6fc4113e p9_client_remove +EXPORT_SYMBOL net/9p/9pnet 0x72e0f684 p9_client_create_dotl +EXPORT_SYMBOL net/9p/9pnet 0x756ecc19 p9_client_walk +EXPORT_SYMBOL net/9p/9pnet 0x77841a95 p9_client_open +EXPORT_SYMBOL net/9p/9pnet 0x7973926d p9_client_clunk +EXPORT_SYMBOL net/9p/9pnet 0x870b8bb6 p9_client_rename +EXPORT_SYMBOL net/9p/9pnet 0x9157a574 p9_client_disconnect +EXPORT_SYMBOL net/9p/9pnet 0x91dca04b p9_tag_lookup +EXPORT_SYMBOL net/9p/9pnet 0xa33b65c5 p9_client_statfs +EXPORT_SYMBOL net/9p/9pnet 0xab051379 p9_client_destroy +EXPORT_SYMBOL net/9p/9pnet 0xab09c079 v9fs_register_trans +EXPORT_SYMBOL net/9p/9pnet 0xb1029b35 p9_client_fcreate +EXPORT_SYMBOL net/9p/9pnet 0xb51e7604 v9fs_unregister_trans +EXPORT_SYMBOL net/9p/9pnet 0xb90fad22 p9_client_unlinkat +EXPORT_SYMBOL net/9p/9pnet 0xb9b6b357 p9_client_renameat +EXPORT_SYMBOL net/9p/9pnet 0xbc3b91db p9_release_pages +EXPORT_SYMBOL net/9p/9pnet 0xbc52f8ba v9fs_get_default_trans +EXPORT_SYMBOL net/9p/9pnet 0xc5db54a9 p9_idpool_destroy +EXPORT_SYMBOL net/9p/9pnet 0xcb4417b6 p9_client_write +EXPORT_SYMBOL net/9p/9pnet 0xd2f5d88f p9_client_mknod_dotl +EXPORT_SYMBOL net/9p/9pnet 0xd5a6058f p9_client_create +EXPORT_SYMBOL net/9p/9pnet 0xe108b917 p9_client_wstat +EXPORT_SYMBOL net/9p/9pnet 0xe58a3360 p9_error_init +EXPORT_SYMBOL net/9p/9pnet 0xf4a111d8 p9_idpool_create +EXPORT_SYMBOL net/9p/9pnet 0xf84f2022 p9_idpool_put +EXPORT_SYMBOL net/9p/9pnet 0xf9060a21 p9_client_mkdir_dotl +EXPORT_SYMBOL net/9p/9pnet 0xfa7af539 p9_client_setattr +EXPORT_SYMBOL net/9p/9pnet 0xfb18dc94 v9fs_get_trans_by_name +EXPORT_SYMBOL net/9p/9pnet 0xfd40c79d p9_idpool_check +EXPORT_SYMBOL net/9p/9pnet 0xfeaa94a7 p9_client_fsync +EXPORT_SYMBOL net/9p/9pnet 0xffb0142f p9_client_begin_disconnect +EXPORT_SYMBOL net/appletalk/appletalk 0x0984c234 aarp_send_ddp +EXPORT_SYMBOL net/appletalk/appletalk 0x6206b443 atalk_find_dev_addr +EXPORT_SYMBOL net/appletalk/appletalk 0x694e2722 alloc_ltalkdev +EXPORT_SYMBOL net/appletalk/appletalk 0xa7337758 atrtr_get_dev +EXPORT_SYMBOL net/atm/atm 0x11f40f71 atm_dev_deregister +EXPORT_SYMBOL net/atm/atm 0x1eefdcdc atm_dev_release_vccs +EXPORT_SYMBOL net/atm/atm 0x2cc2d52d vcc_hash +EXPORT_SYMBOL net/atm/atm 0x30bfadc4 vcc_release_async +EXPORT_SYMBOL net/atm/atm 0x31c86481 vcc_process_recv_queue +EXPORT_SYMBOL net/atm/atm 0x3b3db63a atm_dev_register +EXPORT_SYMBOL net/atm/atm 0x3ebe9fc3 atm_charge +EXPORT_SYMBOL net/atm/atm 0x4443d399 atm_proc_root +EXPORT_SYMBOL net/atm/atm 0x5d4c14de atm_dev_signal_change +EXPORT_SYMBOL net/atm/atm 0x90af8f19 deregister_atm_ioctl +EXPORT_SYMBOL net/atm/atm 0x9dc3c6a1 atm_dev_lookup +EXPORT_SYMBOL net/atm/atm 0x9feaf287 sonet_subtract_stats +EXPORT_SYMBOL net/atm/atm 0xa5cc117e register_atm_ioctl +EXPORT_SYMBOL net/atm/atm 0xaa024146 sonet_copy_stats +EXPORT_SYMBOL net/atm/atm 0xb52625d9 vcc_insert_socket +EXPORT_SYMBOL net/atm/atm 0xca87b453 vcc_sklist_lock +EXPORT_SYMBOL net/atm/atm 0xd995cd11 atm_init_aal5 +EXPORT_SYMBOL net/atm/atm 0xf49bc67a atm_pcr_goal +EXPORT_SYMBOL net/atm/atm 0xf4f2db7a atm_alloc_charge +EXPORT_SYMBOL net/ax25/ax25 0x0c861a07 ax25_header_ops +EXPORT_SYMBOL net/ax25/ax25 0x20cc6125 ax25_listen_register +EXPORT_SYMBOL net/ax25/ax25 0x242852b9 ax25_uid_policy +EXPORT_SYMBOL net/ax25/ax25 0x3afee63e ax25_findbyuid +EXPORT_SYMBOL net/ax25/ax25 0x4502c65a asc2ax +EXPORT_SYMBOL net/ax25/ax25 0x53dea1ff ax2asc +EXPORT_SYMBOL net/ax25/ax25 0x75aec086 ax25_linkfail_register +EXPORT_SYMBOL net/ax25/ax25 0x80c5b55d ax25_find_cb +EXPORT_SYMBOL net/ax25/ax25 0x8ede9e26 ax25_protocol_release +EXPORT_SYMBOL net/ax25/ax25 0xa44035ff ax25_listen_release +EXPORT_SYMBOL net/ax25/ax25 0xa7f3015b ax25_display_timer +EXPORT_SYMBOL net/ax25/ax25 0xbd8e2f90 ax25_ip_xmit +EXPORT_SYMBOL net/ax25/ax25 0xc1444946 ax25cmp +EXPORT_SYMBOL net/ax25/ax25 0xc710c9b7 ax25_linkfail_release +EXPORT_SYMBOL net/ax25/ax25 0xd43ecbf1 null_ax25_address +EXPORT_SYMBOL net/ax25/ax25 0xda7641f0 ax25_send_frame +EXPORT_SYMBOL net/bluetooth/bluetooth 0x01c6d32f hci_alloc_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x03127f5b hci_mgmt_chan_register +EXPORT_SYMBOL net/bluetooth/bluetooth 0x065b677d bt_sock_reclassify_lock +EXPORT_SYMBOL net/bluetooth/bluetooth 0x1ed38cba bt_sock_link +EXPORT_SYMBOL net/bluetooth/bluetooth 0x2806b0cf hci_conn_security +EXPORT_SYMBOL net/bluetooth/bluetooth 0x284064c2 hci_get_route +EXPORT_SYMBOL net/bluetooth/bluetooth 0x2a342632 bt_sock_poll +EXPORT_SYMBOL net/bluetooth/bluetooth 0x2bff42a0 hci_reset_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x33a6ef84 l2cap_is_socket +EXPORT_SYMBOL net/bluetooth/bluetooth 0x3b0eb47b hci_unregister_cb +EXPORT_SYMBOL net/bluetooth/bluetooth 0x4530c1f4 hci_suspend_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x47022514 bt_err +EXPORT_SYMBOL net/bluetooth/bluetooth 0x475a1494 hci_register_cb +EXPORT_SYMBOL net/bluetooth/bluetooth 0x4a982cd5 bt_sock_register +EXPORT_SYMBOL net/bluetooth/bluetooth 0x61a9d510 bt_sock_recvmsg +EXPORT_SYMBOL net/bluetooth/bluetooth 0x6ffadabb l2cap_conn_put +EXPORT_SYMBOL net/bluetooth/bluetooth 0x7f80a3e6 bt_accept_dequeue +EXPORT_SYMBOL net/bluetooth/bluetooth 0x80d16ea3 hci_resume_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x824a6e1d __hci_cmd_sync_ev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x847dc476 bt_sock_unlink +EXPORT_SYMBOL net/bluetooth/bluetooth 0x86459c95 bt_accept_enqueue +EXPORT_SYMBOL net/bluetooth/bluetooth 0x8fea24bd bt_sock_unregister +EXPORT_SYMBOL net/bluetooth/bluetooth 0x91c9a325 bt_to_errno +EXPORT_SYMBOL net/bluetooth/bluetooth 0x9a0439cb hci_conn_switch_role +EXPORT_SYMBOL net/bluetooth/bluetooth 0xa84dfdba bt_sock_stream_recvmsg +EXPORT_SYMBOL net/bluetooth/bluetooth 0xa8fca4db hci_recv_frame +EXPORT_SYMBOL net/bluetooth/bluetooth 0xab7eeb44 bt_procfs_cleanup +EXPORT_SYMBOL net/bluetooth/bluetooth 0xacb730f7 hci_register_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xb6df16c4 bt_procfs_init +EXPORT_SYMBOL net/bluetooth/bluetooth 0xb70b0ce0 l2cap_conn_get +EXPORT_SYMBOL net/bluetooth/bluetooth 0xbbfe8882 bt_sock_wait_ready +EXPORT_SYMBOL net/bluetooth/bluetooth 0xc0f3c303 l2cap_chan_close +EXPORT_SYMBOL net/bluetooth/bluetooth 0xc17ba2ac hci_mgmt_chan_unregister +EXPORT_SYMBOL net/bluetooth/bluetooth 0xc8a9fa30 bt_sock_ioctl +EXPORT_SYMBOL net/bluetooth/bluetooth 0xc8e7bfdb bt_sock_wait_state +EXPORT_SYMBOL net/bluetooth/bluetooth 0xcc1fb551 baswap +EXPORT_SYMBOL net/bluetooth/bluetooth 0xcf0c0ea1 __hci_cmd_sync +EXPORT_SYMBOL net/bluetooth/bluetooth 0xd568203a bt_accept_unlink +EXPORT_SYMBOL net/bluetooth/bluetooth 0xd650bec7 hci_unregister_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xd7442057 bt_info +EXPORT_SYMBOL net/bluetooth/bluetooth 0xdb5a389b hci_free_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xdedd5a14 l2cap_register_user +EXPORT_SYMBOL net/bluetooth/bluetooth 0xe698e181 l2cap_unregister_user +EXPORT_SYMBOL net/bluetooth/bluetooth 0xfa9c32c1 hci_conn_check_secure +EXPORT_SYMBOL net/bridge/bridge 0xd57a30f1 br_should_route_hook +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0xa07f92eb ebt_unregister_table +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0xa6ebb86e ebt_do_table +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0xbac0f5a1 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 0x3e0a58be get_cfcnfg +EXPORT_SYMBOL net/caif/caif 0x496dd836 cfcnfg_add_phy_layer +EXPORT_SYMBOL net/caif/caif 0x4a237e57 cfpkt_tonative +EXPORT_SYMBOL net/caif/caif 0x6a44fc70 cfpkt_extr_head +EXPORT_SYMBOL net/caif/caif 0x839ddb7b cfcnfg_set_phy_state +EXPORT_SYMBOL net/caif/caif 0x87a726ba caif_disconnect_client +EXPORT_SYMBOL net/caif/caif 0x9530ccd8 caif_connect_client +EXPORT_SYMBOL net/caif/caif 0x966d7de2 cfpkt_add_head +EXPORT_SYMBOL net/caif/caif 0x9e3e305d cfpkt_set_prio +EXPORT_SYMBOL net/caif/caif 0xa1d1c6bd caif_enroll_dev +EXPORT_SYMBOL net/caif/caif 0xb7b6874e caif_free_client +EXPORT_SYMBOL net/can/can 0x284cd7b7 can_ioctl +EXPORT_SYMBOL net/can/can 0x28635b2b can_send +EXPORT_SYMBOL net/can/can 0x2f0f2206 can_proto_register +EXPORT_SYMBOL net/can/can 0x6e7c52c9 can_proto_unregister +EXPORT_SYMBOL net/can/can 0x90dc61f8 can_rx_unregister +EXPORT_SYMBOL net/can/can 0xb507ad75 can_rx_register +EXPORT_SYMBOL net/ceph/libceph 0x0158f4f4 osd_req_op_extent_osd_data_pagelist +EXPORT_SYMBOL net/ceph/libceph 0x0241b286 ceph_release_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x02781ad1 osd_req_op_cls_request_data_pagelist +EXPORT_SYMBOL net/ceph/libceph 0x02c7a665 ceph_msg_new +EXPORT_SYMBOL net/ceph/libceph 0x07273c57 ceph_destroy_client +EXPORT_SYMBOL net/ceph/libceph 0x08d07fc8 ceph_osdc_create_event +EXPORT_SYMBOL net/ceph/libceph 0x09290ab3 ceph_debugfs_init +EXPORT_SYMBOL net/ceph/libceph 0x128c76b7 ceph_osdc_sync +EXPORT_SYMBOL net/ceph/libceph 0x157d1086 ceph_msg_get +EXPORT_SYMBOL net/ceph/libceph 0x15f34882 ceph_osdc_cancel_event +EXPORT_SYMBOL net/ceph/libceph 0x16ecee82 ceph_print_client_options +EXPORT_SYMBOL net/ceph/libceph 0x18a912be osd_req_op_extent_osd_data_bio +EXPORT_SYMBOL net/ceph/libceph 0x1f2501df ceph_con_close +EXPORT_SYMBOL net/ceph/libceph 0x20d151cb ceph_osdc_setup +EXPORT_SYMBOL net/ceph/libceph 0x21c60751 ceph_pagelist_free_reserve +EXPORT_SYMBOL net/ceph/libceph 0x24d897df ceph_pagelist_release +EXPORT_SYMBOL net/ceph/libceph 0x26fbbf46 ceph_zero_page_vector_range +EXPORT_SYMBOL net/ceph/libceph 0x27bba305 ceph_monc_wait_osdmap +EXPORT_SYMBOL net/ceph/libceph 0x2a244ad0 ceph_auth_invalidate_authorizer +EXPORT_SYMBOL net/ceph/libceph 0x2db717f3 ceph_destroy_options +EXPORT_SYMBOL net/ceph/libceph 0x2e11d1f9 ceph_osdc_flush_notifies +EXPORT_SYMBOL net/ceph/libceph 0x31afb468 ceph_msg_data_add_pagelist +EXPORT_SYMBOL net/ceph/libceph 0x335010cc ceph_osdc_alloc_request +EXPORT_SYMBOL net/ceph/libceph 0x35feebe5 ceph_messenger_fini +EXPORT_SYMBOL net/ceph/libceph 0x36d83dee ceph_monc_stop +EXPORT_SYMBOL net/ceph/libceph 0x3abec91f ceph_pr_addr +EXPORT_SYMBOL net/ceph/libceph 0x3f688151 ceph_put_snap_context +EXPORT_SYMBOL net/ceph/libceph 0x3fc33e7b ceph_auth_create_authorizer +EXPORT_SYMBOL net/ceph/libceph 0x419cb09b ceph_pagelist_truncate +EXPORT_SYMBOL net/ceph/libceph 0x43e458f6 ceph_file_part +EXPORT_SYMBOL net/ceph/libceph 0x43efd647 ceph_calc_file_object_mapping +EXPORT_SYMBOL net/ceph/libceph 0x45ab33b0 ceph_osdc_put_event +EXPORT_SYMBOL net/ceph/libceph 0x46482c0f ceph_copy_user_to_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x466b85b8 libceph_compatible +EXPORT_SYMBOL net/ceph/libceph 0x4c84c037 osd_req_op_extent_init +EXPORT_SYMBOL net/ceph/libceph 0x4d35aea7 ceph_monc_validate_auth +EXPORT_SYMBOL net/ceph/libceph 0x4d89cc13 ceph_osdc_writepages +EXPORT_SYMBOL net/ceph/libceph 0x4e8569aa ceph_monc_request_next_osdmap +EXPORT_SYMBOL net/ceph/libceph 0x4fe3651f ceph_put_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x5379cea3 ceph_caps_for_mode +EXPORT_SYMBOL net/ceph/libceph 0x561504b9 osd_req_op_extent_update +EXPORT_SYMBOL net/ceph/libceph 0x570ff6a1 osd_req_op_extent_osd_data +EXPORT_SYMBOL net/ceph/libceph 0x57baf885 ceph_str_hash +EXPORT_SYMBOL net/ceph/libceph 0x58b2107c osd_req_op_cls_response_data_pages +EXPORT_SYMBOL net/ceph/libceph 0x5be77ea9 osd_req_op_cls_response_data +EXPORT_SYMBOL net/ceph/libceph 0x604bfb52 ceph_monc_init +EXPORT_SYMBOL net/ceph/libceph 0x63758856 ceph_str_hash_name +EXPORT_SYMBOL net/ceph/libceph 0x63e245a8 ceph_auth_is_authenticated +EXPORT_SYMBOL net/ceph/libceph 0x6680513a ceph_osdc_readpages +EXPORT_SYMBOL net/ceph/libceph 0x669d3857 ceph_calc_pg_primary +EXPORT_SYMBOL net/ceph/libceph 0x6a44d981 ceph_open_session +EXPORT_SYMBOL net/ceph/libceph 0x6b2e3bcd ceph_get_snap_context +EXPORT_SYMBOL net/ceph/libceph 0x6e065e77 ceph_osdc_wait_request +EXPORT_SYMBOL net/ceph/libceph 0x6fcdafef ceph_buffer_new +EXPORT_SYMBOL net/ceph/libceph 0x70f36d01 osd_req_op_cls_request_data_pages +EXPORT_SYMBOL net/ceph/libceph 0x75d24670 osd_req_op_xattr_init +EXPORT_SYMBOL net/ceph/libceph 0x77a4a607 ceph_pg_poolid_by_name +EXPORT_SYMBOL net/ceph/libceph 0x7bde9c54 ceph_check_fsid +EXPORT_SYMBOL net/ceph/libceph 0x7c08bd92 ceph_auth_destroy_authorizer +EXPORT_SYMBOL net/ceph/libceph 0x80854e71 ceph_alloc_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x81fbf192 ceph_osdc_cancel_request +EXPORT_SYMBOL net/ceph/libceph 0x82ae0b92 osd_req_op_init +EXPORT_SYMBOL net/ceph/libceph 0x857adef7 ceph_pg_pool_name_by_id +EXPORT_SYMBOL net/ceph/libceph 0x85e30099 ceph_oloc_oid_to_pg +EXPORT_SYMBOL net/ceph/libceph 0x88f77100 ceph_con_open +EXPORT_SYMBOL net/ceph/libceph 0x8b5c978a ceph_con_init +EXPORT_SYMBOL net/ceph/libceph 0x8cf17251 osd_req_op_extent_osd_data_pages +EXPORT_SYMBOL net/ceph/libceph 0x8debe410 ceph_copy_from_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x8e33e26f ceph_con_send +EXPORT_SYMBOL net/ceph/libceph 0x8e972119 ceph_msg_data_add_bio +EXPORT_SYMBOL net/ceph/libceph 0x94ec73fa osd_req_op_raw_data_in_pages +EXPORT_SYMBOL net/ceph/libceph 0x99e36571 ceph_osdc_cleanup +EXPORT_SYMBOL net/ceph/libceph 0x9db75948 ceph_compare_options +EXPORT_SYMBOL net/ceph/libceph 0x9f534f4d ceph_buffer_release +EXPORT_SYMBOL net/ceph/libceph 0xa30fa26c ceph_osdc_set_request_linger +EXPORT_SYMBOL net/ceph/libceph 0xa6675970 ceph_monc_do_get_version +EXPORT_SYMBOL net/ceph/libceph 0xa696cf73 ceph_msg_dump +EXPORT_SYMBOL net/ceph/libceph 0xa6f9500b ceph_copy_to_page_vector +EXPORT_SYMBOL net/ceph/libceph 0xadcdb4f0 ceph_osdc_new_request +EXPORT_SYMBOL net/ceph/libceph 0xae3515ba ceph_create_snap_context +EXPORT_SYMBOL net/ceph/libceph 0xaeabc2f2 ceph_messenger_init +EXPORT_SYMBOL net/ceph/libceph 0xafb8a407 ceph_msgr_flush +EXPORT_SYMBOL net/ceph/libceph 0xb024727e ceph_osdc_put_request +EXPORT_SYMBOL net/ceph/libceph 0xb54676fa ceph_msg_type_name +EXPORT_SYMBOL net/ceph/libceph 0xb6081d6d ceph_msgr_exit +EXPORT_SYMBOL net/ceph/libceph 0xc4a80955 ceph_debugfs_cleanup +EXPORT_SYMBOL net/ceph/libceph 0xc9f82b38 ceph_msgr_init +EXPORT_SYMBOL net/ceph/libceph 0xcade8061 ceph_monc_do_statfs +EXPORT_SYMBOL net/ceph/libceph 0xcb50a624 ceph_parse_ips +EXPORT_SYMBOL net/ceph/libceph 0xd24ed1b8 ceph_monc_open_session +EXPORT_SYMBOL net/ceph/libceph 0xd2c107bb ceph_flags_to_mode +EXPORT_SYMBOL net/ceph/libceph 0xd3c59999 ceph_osdc_build_request +EXPORT_SYMBOL net/ceph/libceph 0xd7acd83f ceph_pagelist_set_cursor +EXPORT_SYMBOL net/ceph/libceph 0xdb28acce ceph_con_keepalive +EXPORT_SYMBOL net/ceph/libceph 0xdd8e7550 ceph_parse_options +EXPORT_SYMBOL net/ceph/libceph 0xde5e8d68 ceph_monc_got_mdsmap +EXPORT_SYMBOL net/ceph/libceph 0xdef27f47 ceph_msg_put +EXPORT_SYMBOL net/ceph/libceph 0xe11f951d ceph_create_client +EXPORT_SYMBOL net/ceph/libceph 0xe3b042ca ceph_pagelist_append +EXPORT_SYMBOL net/ceph/libceph 0xe57a820c ceph_auth_update_authorizer +EXPORT_SYMBOL net/ceph/libceph 0xe5a1cd5f osd_req_op_watch_init +EXPORT_SYMBOL net/ceph/libceph 0xea293038 ceph_get_direct_page_vector +EXPORT_SYMBOL net/ceph/libceph 0xeb21fdfa ceph_msg_data_add_pages +EXPORT_SYMBOL net/ceph/libceph 0xeb5f7ae5 ceph_auth_verify_authorizer_reply +EXPORT_SYMBOL net/ceph/libceph 0xf35cb4d9 ceph_pagelist_reserve +EXPORT_SYMBOL net/ceph/libceph 0xf5adb8a3 ceph_osdc_start_request +EXPORT_SYMBOL net/ceph/libceph 0xf65b72ef ceph_osdc_get_request +EXPORT_SYMBOL net/ceph/libceph 0xf6a53eac ceph_client_id +EXPORT_SYMBOL net/ceph/libceph 0xfb18238a osd_req_op_alloc_hint_init +EXPORT_SYMBOL net/ceph/libceph 0xfbc9f4a8 osd_req_op_cls_init +EXPORT_SYMBOL net/ceph/libceph 0xfd03f16b __ceph_open_session +EXPORT_SYMBOL net/dccp/dccp_ipv4 0x2c739234 dccp_req_err +EXPORT_SYMBOL net/dccp/dccp_ipv4 0xec1fb9ee dccp_syn_ack_timeout +EXPORT_SYMBOL net/ieee802154/6lowpan/ieee802154_6lowpan 0x9e355c48 lowpan_frag_rcv +EXPORT_SYMBOL net/ieee802154/ieee802154 0x1bd91e37 wpan_phy_find +EXPORT_SYMBOL net/ieee802154/ieee802154 0x282cb649 wpan_phy_register +EXPORT_SYMBOL net/ieee802154/ieee802154 0x2bebcbd4 wpan_phy_unregister +EXPORT_SYMBOL net/ieee802154/ieee802154 0x6ce55d66 wpan_phy_for_each +EXPORT_SYMBOL net/ieee802154/ieee802154 0x7488f063 wpan_phy_new +EXPORT_SYMBOL net/ieee802154/ieee802154 0xc30883a2 wpan_phy_free +EXPORT_SYMBOL net/ipv4/fou 0x03916fe4 gue_encap_hlen +EXPORT_SYMBOL net/ipv4/fou 0x7a8411a2 fou_encap_hlen +EXPORT_SYMBOL net/ipv4/fou 0xe776446b gue_build_header +EXPORT_SYMBOL net/ipv4/fou 0xf43221b7 fou_build_header +EXPORT_SYMBOL net/ipv4/ip_tunnel 0x029fc01b ip_tunnel_get_iflink +EXPORT_SYMBOL net/ipv4/ip_tunnel 0x1466b5ba ip_tunnel_get_link_net +EXPORT_SYMBOL net/ipv4/ip_tunnel 0x347be5dc ip_tunnel_encap +EXPORT_SYMBOL net/ipv4/ip_tunnel 0x5b31d6fd ip_tunnel_encap_del_ops +EXPORT_SYMBOL net/ipv4/ip_tunnel 0x6a5a2088 ip_tunnel_dst_reset_all +EXPORT_SYMBOL net/ipv4/ip_tunnel 0x93ab7a84 ip_tunnel_encap_add_ops +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0x0846821b arpt_do_table +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0x19062ce5 arpt_unregister_table +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0xd16fbcab arpt_register_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0x51fdbc95 ipt_register_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0x951b6275 ipt_unregister_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0xf77a4952 ipt_do_table +EXPORT_SYMBOL net/ipv4/tunnel4 0x4fedcc63 xfrm4_tunnel_deregister +EXPORT_SYMBOL net/ipv4/tunnel4 0xd9e0cd33 xfrm4_tunnel_register +EXPORT_SYMBOL net/ipv4/udp_tunnel 0x9f8fc5fd udp_sock_create4 +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0x023024de ip6_tnl_get_cap +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0x35039318 ip6_tnl_get_iflink +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0x577f2acd ip6_tnl_parse_tlv_enc_lim +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0xdc7622c8 ip6_tnl_get_link_net +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0x04c7f80f ip6t_register_table +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0x8d719182 ip6t_do_table +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0xd1f21408 ip6t_unregister_table +EXPORT_SYMBOL net/ipv6/tunnel6 0x07bf8e48 xfrm6_tunnel_register +EXPORT_SYMBOL net/ipv6/tunnel6 0x6fe09bd7 xfrm6_tunnel_deregister +EXPORT_SYMBOL net/ipv6/xfrm6_tunnel 0x16c4e35b xfrm6_tunnel_spi_lookup +EXPORT_SYMBOL net/ipv6/xfrm6_tunnel 0xbddd381d xfrm6_tunnel_alloc_spi +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x2dcc55ec ircomm_control_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x438ade2d ircomm_close +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x529e1bc1 ircomm_data_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x53408703 ircomm_open +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x7cc1494e ircomm_connect_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0xe0a3c538 ircomm_disconnect_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0xe114df94 ircomm_flow_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0xf1608bf0 ircomm_connect_response +EXPORT_SYMBOL net/irda/irda 0x0064e0ea hashbin_get_first +EXPORT_SYMBOL net/irda/irda 0x06a3ee58 irias_new_integer_value +EXPORT_SYMBOL net/irda/irda 0x07d3647c irlmp_register_service +EXPORT_SYMBOL net/irda/irda 0x15ab3b7f irda_notify_init +EXPORT_SYMBOL net/irda/irda 0x182261fe iriap_close +EXPORT_SYMBOL net/irda/irda 0x1e6cade0 irias_add_integer_attrib +EXPORT_SYMBOL net/irda/irda 0x2391bae8 irttp_connect_response +EXPORT_SYMBOL net/irda/irda 0x33cbe2c6 proc_irda +EXPORT_SYMBOL net/irda/irda 0x3c7b7b30 irlmp_data_request +EXPORT_SYMBOL net/irda/irda 0x3e56064f hashbin_new +EXPORT_SYMBOL net/irda/irda 0x3fafe808 irttp_data_request +EXPORT_SYMBOL net/irda/irda 0x41951289 irlmp_disconnect_request +EXPORT_SYMBOL net/irda/irda 0x448b8aaa irda_qos_bits_to_value +EXPORT_SYMBOL net/irda/irda 0x46c1c4a2 irlmp_unregister_service +EXPORT_SYMBOL net/irda/irda 0x50026072 irttp_connect_request +EXPORT_SYMBOL net/irda/irda 0x5200df2a irttp_open_tsap +EXPORT_SYMBOL net/irda/irda 0x601bda46 hashbin_remove +EXPORT_SYMBOL net/irda/irda 0x60e515af irda_device_set_media_busy +EXPORT_SYMBOL net/irda/irda 0x60e56392 alloc_irdadev +EXPORT_SYMBOL net/irda/irda 0x685ba080 iriap_open +EXPORT_SYMBOL net/irda/irda 0x69fff46e async_wrap_skb +EXPORT_SYMBOL net/irda/irda 0x6b043eba irda_init_max_qos_capabilies +EXPORT_SYMBOL net/irda/irda 0x6b5fbcef hashbin_get_next +EXPORT_SYMBOL net/irda/irda 0x6c99e032 irlmp_connect_request +EXPORT_SYMBOL net/irda/irda 0x6e0ab3c7 irias_add_string_attrib +EXPORT_SYMBOL net/irda/irda 0x7042bc54 irlmp_register_client +EXPORT_SYMBOL net/irda/irda 0x763e54a4 irlmp_unregister_client +EXPORT_SYMBOL net/irda/irda 0x7957f728 irlmp_update_client +EXPORT_SYMBOL net/irda/irda 0x7f52a8bf irda_param_insert +EXPORT_SYMBOL net/irda/irda 0x80400642 irttp_udata_request +EXPORT_SYMBOL net/irda/irda 0x82f5d95b irlmp_open_lsap +EXPORT_SYMBOL net/irda/irda 0x85d88217 irias_delete_object +EXPORT_SYMBOL net/irda/irda 0x862c3c6e irttp_flow_request +EXPORT_SYMBOL net/irda/irda 0x91815586 irda_param_pack +EXPORT_SYMBOL net/irda/irda 0x94a824db irda_param_extract_all +EXPORT_SYMBOL net/irda/irda 0xa0fc407b iriap_getvaluebyclass_request +EXPORT_SYMBOL net/irda/irda 0xa1d41e58 hashbin_delete +EXPORT_SYMBOL net/irda/irda 0xaa557515 irias_new_object +EXPORT_SYMBOL net/irda/irda 0xaa6991a2 irlmp_close_lsap +EXPORT_SYMBOL net/irda/irda 0xb9394173 irias_delete_value +EXPORT_SYMBOL net/irda/irda 0xba0edeb5 irlap_close +EXPORT_SYMBOL net/irda/irda 0xbcd3ef13 irias_object_change_attribute +EXPORT_SYMBOL net/irda/irda 0xbe40ace9 irlmp_discovery_request +EXPORT_SYMBOL net/irda/irda 0xc1c25041 irlmp_connect_response +EXPORT_SYMBOL net/irda/irda 0xc68e43be irias_add_octseq_attrib +EXPORT_SYMBOL net/irda/irda 0xcead7dbb hashbin_find +EXPORT_SYMBOL net/irda/irda 0xd2108314 hashbin_insert +EXPORT_SYMBOL net/irda/irda 0xd6deeaae irda_setup_dma +EXPORT_SYMBOL net/irda/irda 0xd79a24de irttp_close_tsap +EXPORT_SYMBOL net/irda/irda 0xde4c6b3c irlmp_service_to_hint +EXPORT_SYMBOL net/irda/irda 0xdfc876a5 irttp_disconnect_request +EXPORT_SYMBOL net/irda/irda 0xe3463529 hashbin_lock_find +EXPORT_SYMBOL net/irda/irda 0xe3bde43e irias_insert_object +EXPORT_SYMBOL net/irda/irda 0xed6f9a17 irlap_open +EXPORT_SYMBOL net/irda/irda 0xedd521c2 irlmp_get_discoveries +EXPORT_SYMBOL net/irda/irda 0xf0a694a1 irias_find_object +EXPORT_SYMBOL net/irda/irda 0xf5876b95 hashbin_remove_this +EXPORT_SYMBOL net/irda/irda 0xf58cf261 async_unwrap_char +EXPORT_SYMBOL net/irda/irda 0xf953664a irttp_dup +EXPORT_SYMBOL net/l2tp/l2tp_core 0x9d662d5c l2tp_recv_common +EXPORT_SYMBOL net/lapb/lapb 0x0fe9ee0d lapb_disconnect_request +EXPORT_SYMBOL net/lapb/lapb 0x1f083769 lapb_unregister +EXPORT_SYMBOL net/lapb/lapb 0x63d774fc lapb_register +EXPORT_SYMBOL net/lapb/lapb 0x690c622c lapb_setparms +EXPORT_SYMBOL net/lapb/lapb 0x77101f9a lapb_data_received +EXPORT_SYMBOL net/lapb/lapb 0x7ffad84f lapb_data_request +EXPORT_SYMBOL net/lapb/lapb 0xcc376129 lapb_getparms +EXPORT_SYMBOL net/lapb/lapb 0xda303615 lapb_connect_request +EXPORT_SYMBOL net/llc/llc 0x105d3a19 llc_sap_close +EXPORT_SYMBOL net/llc/llc 0x38b92846 llc_remove_pack +EXPORT_SYMBOL net/llc/llc 0x3df325ad llc_set_station_handler +EXPORT_SYMBOL net/llc/llc 0x4232f95c llc_mac_hdr_init +EXPORT_SYMBOL net/llc/llc 0x52d7b2fd llc_sap_list +EXPORT_SYMBOL net/llc/llc 0x53bc54c2 llc_build_and_send_ui_pkt +EXPORT_SYMBOL net/llc/llc 0x70c6b7f8 llc_sap_open +EXPORT_SYMBOL net/llc/llc 0xa4cf181c llc_sap_find +EXPORT_SYMBOL net/llc/llc 0xeee7b2a0 llc_add_pack +EXPORT_SYMBOL net/mac80211/mac80211 0x00ea8e25 ieee80211_sta_block_awake +EXPORT_SYMBOL net/mac80211/mac80211 0x06d2958b ieee80211_tx_status_noskb +EXPORT_SYMBOL net/mac80211/mac80211 0x0bd609f2 ieee80211_get_key_tx_seq +EXPORT_SYMBOL net/mac80211/mac80211 0x0c1e56ac ieee80211_report_wowlan_wakeup +EXPORT_SYMBOL net/mac80211/mac80211 0x0c6d6f47 ieee80211_ctstoself_get +EXPORT_SYMBOL net/mac80211/mac80211 0x0ce6af2e ieee80211_csa_is_complete +EXPORT_SYMBOL net/mac80211/mac80211 0x0ddcc1ac ieee80211_reserve_tid +EXPORT_SYMBOL net/mac80211/mac80211 0x1ec6f439 ieee80211_proberesp_get +EXPORT_SYMBOL net/mac80211/mac80211 0x2143e5a1 ieee80211_stop_queues +EXPORT_SYMBOL net/mac80211/mac80211 0x2382d639 ieee80211_tdls_oper_request +EXPORT_SYMBOL net/mac80211/mac80211 0x27df191a ieee80211_register_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x29a8eb5a ieee80211_iter_keys +EXPORT_SYMBOL net/mac80211/mac80211 0x2ab3b59b ieee80211_pspoll_get +EXPORT_SYMBOL net/mac80211/mac80211 0x2b26ee6e ieee80211_beacon_loss +EXPORT_SYMBOL net/mac80211/mac80211 0x315b2c74 ieee80211_stop_queue +EXPORT_SYMBOL net/mac80211/mac80211 0x39cdcd40 __ieee80211_get_assoc_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0x3d0165d4 ieee80211_tx_status_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0x3ef71b62 ieee80211_report_low_ack +EXPORT_SYMBOL net/mac80211/mac80211 0x419c0202 ieee80211_get_tkip_p1k_iv +EXPORT_SYMBOL net/mac80211/mac80211 0x41e29060 ieee80211_free_txskb +EXPORT_SYMBOL net/mac80211/mac80211 0x44180444 ieee80211_nullfunc_get +EXPORT_SYMBOL net/mac80211/mac80211 0x4949b9ba ieee80211_queue_delayed_work +EXPORT_SYMBOL net/mac80211/mac80211 0x4c2b011a ieee80211_get_tkip_rx_p1k +EXPORT_SYMBOL net/mac80211/mac80211 0x4ffa5313 ieee80211_rate_control_register +EXPORT_SYMBOL net/mac80211/mac80211 0x51a5deaf rate_control_send_low +EXPORT_SYMBOL net/mac80211/mac80211 0x52b6e52c ieee80211_enable_rssi_reports +EXPORT_SYMBOL net/mac80211/mac80211 0x53898afc ieee80211_connection_loss +EXPORT_SYMBOL net/mac80211/mac80211 0x542c5e7b __ieee80211_create_tpt_led_trigger +EXPORT_SYMBOL net/mac80211/mac80211 0x55f97e4f ieee80211_get_key_rx_seq +EXPORT_SYMBOL net/mac80211/mac80211 0x58fbd271 ieee80211_queue_stopped +EXPORT_SYMBOL net/mac80211/mac80211 0x5f3c25f6 ieee80211_start_tx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0x64e2ad8a ieee80211_rts_duration +EXPORT_SYMBOL net/mac80211/mac80211 0x661658d8 ieee80211_unregister_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x664ba82d ieee80211_beacon_get_tim +EXPORT_SYMBOL net/mac80211/mac80211 0x675b8aae ieee80211_sched_scan_stopped +EXPORT_SYMBOL net/mac80211/mac80211 0x67d13e27 ieee80211_alloc_hw_nm +EXPORT_SYMBOL net/mac80211/mac80211 0x6c30738b ieee80211_restart_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x6de790f8 ieee80211_wake_queue +EXPORT_SYMBOL net/mac80211/mac80211 0x729e6696 ieee80211_tx_prepare_skb +EXPORT_SYMBOL net/mac80211/mac80211 0x763210f4 ieee80211_send_bar +EXPORT_SYMBOL net/mac80211/mac80211 0x77ea65c4 ieee80211_update_p2p_noa +EXPORT_SYMBOL net/mac80211/mac80211 0x7afc8e2c ieee80211_stop_tx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0x7ba0bd4d ieee80211_free_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x82642889 ieee80211_rts_get +EXPORT_SYMBOL net/mac80211/mac80211 0x8382da4b ieee80211_ap_probereq_get +EXPORT_SYMBOL net/mac80211/mac80211 0x83f53e90 ieee80211_ctstoself_duration +EXPORT_SYMBOL net/mac80211/mac80211 0x84691fc8 ieee80211_csa_finish +EXPORT_SYMBOL net/mac80211/mac80211 0x8f455fc6 ieee80211_sched_scan_results +EXPORT_SYMBOL net/mac80211/mac80211 0x94e3a6ab ieee80211_get_tx_rates +EXPORT_SYMBOL net/mac80211/mac80211 0x962bdde8 ieee80211_aes_cmac_calculate_k1_k2 +EXPORT_SYMBOL net/mac80211/mac80211 0x984297a6 ieee80211_rx +EXPORT_SYMBOL net/mac80211/mac80211 0x9ae37f3f ieee80211_sta_eosp +EXPORT_SYMBOL net/mac80211/mac80211 0x9fbbe66a ieee80211_unreserve_tid +EXPORT_SYMBOL net/mac80211/mac80211 0xa2564684 ieee80211_wake_queues +EXPORT_SYMBOL net/mac80211/mac80211 0xa5304035 ieee80211_probereq_get +EXPORT_SYMBOL net/mac80211/mac80211 0xa922cdf6 ieee80211_get_buffered_bc +EXPORT_SYMBOL net/mac80211/mac80211 0xab8da5c0 ieee80211_start_rx_ba_session_offl +EXPORT_SYMBOL net/mac80211/mac80211 0xae3368d9 ieee80211_rx_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0xaeed8219 ieee80211_get_tkip_p2k +EXPORT_SYMBOL net/mac80211/mac80211 0xb3109ade ieee80211_beacon_get_template +EXPORT_SYMBOL net/mac80211/mac80211 0xb3af12a3 wiphy_to_ieee80211_hw +EXPORT_SYMBOL net/mac80211/mac80211 0xb5e8f6db ieee80211_find_sta +EXPORT_SYMBOL net/mac80211/mac80211 0xb7198b5c ieee80211_rate_control_unregister +EXPORT_SYMBOL net/mac80211/mac80211 0xbc3e07b3 ieee80211_tx_status +EXPORT_SYMBOL net/mac80211/mac80211 0xbd6a94ca ieee80211_scan_completed +EXPORT_SYMBOL net/mac80211/mac80211 0xbe9a859d ieee80211_queue_work +EXPORT_SYMBOL net/mac80211/mac80211 0xc28444e2 ieee80211_csa_update_counter +EXPORT_SYMBOL net/mac80211/mac80211 0xc9d77686 ieee80211_stop_tx_ba_cb_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0xcb3353e3 ieee80211_start_tx_ba_cb_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0xcd821d08 ieee80211_radar_detected +EXPORT_SYMBOL net/mac80211/mac80211 0xd72625cb ieee80211_parse_p2p_noa +EXPORT_SYMBOL net/mac80211/mac80211 0xd75cc2b7 __ieee80211_get_radio_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0xd7778557 ieee80211_disable_rssi_reports +EXPORT_SYMBOL net/mac80211/mac80211 0xd8ede8f5 ieee80211_cqm_beacon_loss_notify +EXPORT_SYMBOL net/mac80211/mac80211 0xdb498468 ieee80211_generic_frame_duration +EXPORT_SYMBOL net/mac80211/mac80211 0xe2e1b9c9 ieee80211_tx_dequeue +EXPORT_SYMBOL net/mac80211/mac80211 0xe350f80c ieee80211_chswitch_done +EXPORT_SYMBOL net/mac80211/mac80211 0xe6ccd682 __ieee80211_get_rx_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0xe6e77598 ieee80211_stop_rx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0xec1d2811 ieee80211_sta_set_buffered +EXPORT_SYMBOL net/mac80211/mac80211 0xec232b89 ieee80211_sta_ps_transition +EXPORT_SYMBOL net/mac80211/mac80211 0xed2197d5 __ieee80211_get_tx_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0xf10972a4 ieee80211_cqm_rssi_notify +EXPORT_SYMBOL net/mac80211/mac80211 0xf250cb37 rate_control_set_rates +EXPORT_SYMBOL net/mac80211/mac80211 0xf803ec81 ieee80211_stop_rx_ba_session_offl +EXPORT_SYMBOL net/mac802154/mac802154 0x267d5a64 ieee802154_unregister_hw +EXPORT_SYMBOL net/mac802154/mac802154 0x2d280fe2 ieee802154_rx_irqsafe +EXPORT_SYMBOL net/mac802154/mac802154 0x304e7859 ieee802154_register_hw +EXPORT_SYMBOL net/mac802154/mac802154 0x3ddbe721 ieee802154_alloc_hw +EXPORT_SYMBOL net/mac802154/mac802154 0x4d6bf206 ieee802154_xmit_complete +EXPORT_SYMBOL net/mac802154/mac802154 0x8dcea626 ieee802154_rx +EXPORT_SYMBOL net/mac802154/mac802154 0xa3fa33c4 ieee802154_stop_queue +EXPORT_SYMBOL net/mac802154/mac802154 0xf7585018 ieee802154_free_hw +EXPORT_SYMBOL net/mac802154/mac802154 0xf8b3fe68 ieee802154_wake_queue +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x2a47fc99 ip_vs_conn_out_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x3803d2d6 ip_vs_tcp_conn_listen +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x42cb0209 ip_vs_conn_new +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x4ee13d54 register_ip_vs_app_inc +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x53f3dc36 ip_vs_scheduler_err +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x59474bc1 ip_vs_proto_data_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x76798007 ip_vs_conn_put +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x807bae75 unregister_ip_vs_scheduler +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xa6802cc9 ip_vs_proto_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xa96161dc register_ip_vs_app +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xcc8bc661 register_ip_vs_scheduler +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xd831a1a2 ip_vs_proto_name +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xe19e748e ip_vs_conn_in_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xe40edb7c unregister_ip_vs_app +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xe8f8be9a ip_vs_nfct_expect_related +EXPORT_SYMBOL net/netfilter/nf_conntrack 0x0986a155 __nf_ct_ext_destroy +EXPORT_SYMBOL net/netfilter/nf_conntrack 0x1187288e __nf_ct_ext_add_length +EXPORT_SYMBOL net/netfilter/nf_conntrack 0xbbb7c874 nf_conntrack_untracked +EXPORT_SYMBOL net/netfilter/nf_conntrack_pptp 0x827cc6a1 pptp_msg_name +EXPORT_SYMBOL net/netfilter/nf_nat 0x29e008b2 __nf_nat_mangle_tcp_packet +EXPORT_SYMBOL net/netfilter/nf_nat 0x6e458d91 nf_xfrm_me_harder +EXPORT_SYMBOL net/netfilter/nf_nat 0x744caeb8 nf_nat_setup_info +EXPORT_SYMBOL net/netfilter/nf_nat 0x8efc3a03 nf_nat_used_tuple +EXPORT_SYMBOL net/netfilter/nf_nat 0xb96c437d nf_nat_mangle_udp_packet +EXPORT_SYMBOL net/netfilter/nf_nat 0xbf28bb4b nf_nat_follow_master +EXPORT_SYMBOL net/netfilter/x_tables 0x253e8b44 xt_compat_init_offsets +EXPORT_SYMBOL net/netfilter/x_tables 0x30fe0cb5 xt_unregister_targets +EXPORT_SYMBOL net/netfilter/x_tables 0x3e6d7b17 xt_register_targets +EXPORT_SYMBOL net/netfilter/x_tables 0x482d26fd xt_alloc_table_info +EXPORT_SYMBOL net/netfilter/x_tables 0x74d2ea2a xt_find_target +EXPORT_SYMBOL net/netfilter/x_tables 0x7b8be3af xt_unregister_match +EXPORT_SYMBOL net/netfilter/x_tables 0xacfdc0a2 xt_unregister_target +EXPORT_SYMBOL net/netfilter/x_tables 0xb07e7b60 xt_unregister_matches +EXPORT_SYMBOL net/netfilter/x_tables 0xb9b08c1a xt_register_target +EXPORT_SYMBOL net/netfilter/x_tables 0xc8a336a4 xt_register_match +EXPORT_SYMBOL net/netfilter/x_tables 0xd1a21986 xt_free_table_info +EXPORT_SYMBOL net/netfilter/x_tables 0xeadba929 xt_find_match +EXPORT_SYMBOL net/netfilter/x_tables 0xf881eb68 xt_register_matches +EXPORT_SYMBOL net/nfc/hci/hci 0x038e919b nfc_hci_unregister_device +EXPORT_SYMBOL net/nfc/hci/hci 0x0b9a570c nfc_hci_disconnect_all_gates +EXPORT_SYMBOL net/nfc/hci/hci 0x155babe6 nfc_hci_connect_gate +EXPORT_SYMBOL net/nfc/hci/hci 0x1dc1acae nfc_hci_recv_frame +EXPORT_SYMBOL net/nfc/hci/hci 0x2c91591f nfc_hci_reset_pipes_per_host +EXPORT_SYMBOL net/nfc/hci/hci 0x38e49c09 nfc_hci_register_device +EXPORT_SYMBOL net/nfc/hci/hci 0x3904d1be nfc_hci_send_cmd_async +EXPORT_SYMBOL net/nfc/hci/hci 0x3a5fc750 nfc_hci_send_event +EXPORT_SYMBOL net/nfc/hci/hci 0x3fea175a nfc_hci_set_param +EXPORT_SYMBOL net/nfc/hci/hci 0x40bbe185 nfc_hci_target_discovered +EXPORT_SYMBOL net/nfc/hci/hci 0x43028a27 nfc_hci_result_to_errno +EXPORT_SYMBOL net/nfc/hci/hci 0x4fbebc5f nfc_hci_get_param +EXPORT_SYMBOL net/nfc/hci/hci 0x809ccea7 nfc_hci_allocate_device +EXPORT_SYMBOL net/nfc/hci/hci 0x9126fbd0 nfc_hci_driver_failure +EXPORT_SYMBOL net/nfc/hci/hci 0x9c46fded nfc_hci_free_device +EXPORT_SYMBOL net/nfc/hci/hci 0xa09e92d8 nfc_hci_get_clientdata +EXPORT_SYMBOL net/nfc/hci/hci 0xb2a357a5 nfc_hci_send_cmd +EXPORT_SYMBOL net/nfc/hci/hci 0xbc814da0 nfc_hci_set_clientdata +EXPORT_SYMBOL net/nfc/hci/hci 0xbca0b4fd nfc_hci_sak_to_protocol +EXPORT_SYMBOL net/nfc/hci/hci 0xe5323b53 nfc_hci_reset_pipes +EXPORT_SYMBOL net/nfc/hci/hci 0xeccf989f nfc_hci_disconnect_gate +EXPORT_SYMBOL net/nfc/nci/nci 0x1bdf450b nci_core_conn_close +EXPORT_SYMBOL net/nfc/nci/nci 0x1d867ad9 nci_nfcee_discover +EXPORT_SYMBOL net/nfc/nci/nci 0x1fbe9f69 nci_core_conn_create +EXPORT_SYMBOL net/nfc/nci/nci 0x57fed2e9 nci_register_device +EXPORT_SYMBOL net/nfc/nci/nci 0x67c28a05 nci_nfcee_mode_set +EXPORT_SYMBOL net/nfc/nci/nci 0x68c0a7c6 nci_prop_cmd +EXPORT_SYMBOL net/nfc/nci/nci 0x8075c2ba nci_unregister_device +EXPORT_SYMBOL net/nfc/nci/nci 0x82d420d4 nci_hci_send_cmd +EXPORT_SYMBOL net/nfc/nci/nci 0x85a0a399 nci_req_complete +EXPORT_SYMBOL net/nfc/nci/nci 0xba490602 nci_to_errno +EXPORT_SYMBOL net/nfc/nci/nci 0xc209c143 nci_hci_open_pipe +EXPORT_SYMBOL net/nfc/nci/nci 0xc8326eff nci_allocate_device +EXPORT_SYMBOL net/nfc/nci/nci 0xcce8d1fd nci_hci_get_param +EXPORT_SYMBOL net/nfc/nci/nci 0xd4951e39 nci_free_device +EXPORT_SYMBOL net/nfc/nci/nci 0xd6480e2f nci_hci_dev_session_init +EXPORT_SYMBOL net/nfc/nci/nci 0xda84be89 nci_hci_connect_gate +EXPORT_SYMBOL net/nfc/nci/nci 0xe1fbe56e nci_set_config +EXPORT_SYMBOL net/nfc/nci/nci 0xe2505446 nci_hci_set_param +EXPORT_SYMBOL net/nfc/nci/nci 0xe2db94be nci_recv_frame +EXPORT_SYMBOL net/nfc/nci/nci 0xfbce525e nci_hci_send_event +EXPORT_SYMBOL net/nfc/nfc 0x0089930c nfc_allocate_device +EXPORT_SYMBOL net/nfc/nfc 0x0288d942 nfc_set_remote_general_bytes +EXPORT_SYMBOL net/nfc/nfc 0x3577966d nfc_register_device +EXPORT_SYMBOL net/nfc/nfc 0x39919aa1 nfc_alloc_recv_skb +EXPORT_SYMBOL net/nfc/nfc 0x3b1a8fbd nfc_proto_register +EXPORT_SYMBOL net/nfc/nfc 0x3c7dc17a nfc_target_lost +EXPORT_SYMBOL net/nfc/nfc 0x49bf83ad nfc_targets_found +EXPORT_SYMBOL net/nfc/nfc 0x610bab36 nfc_get_local_general_bytes +EXPORT_SYMBOL net/nfc/nfc 0x650df2de nfc_remove_se +EXPORT_SYMBOL net/nfc/nfc 0x6b78c186 nfc_find_se +EXPORT_SYMBOL net/nfc/nfc 0x6c4c31b8 nfc_class +EXPORT_SYMBOL net/nfc/nfc 0x7c628130 nfc_unregister_device +EXPORT_SYMBOL net/nfc/nfc 0x80fa14ff nfc_proto_unregister +EXPORT_SYMBOL net/nfc/nfc 0x9f7dd48a nfc_se_transaction +EXPORT_SYMBOL net/nfc/nfc 0xa105b9c4 nfc_add_se +EXPORT_SYMBOL net/nfc/nfc 0xd29293a5 nfc_send_to_raw_sock +EXPORT_SYMBOL net/nfc/nfc 0xd3c0ef77 nfc_dep_link_is_up +EXPORT_SYMBOL net/nfc/nfc 0xd6e53ce9 nfc_tm_activated +EXPORT_SYMBOL net/nfc/nfc 0xdf628eef nfc_tm_data_received +EXPORT_SYMBOL net/nfc/nfc 0xe9d542fa nfc_driver_failure +EXPORT_SYMBOL net/nfc/nfc 0xeed87be3 nfc_fw_download_done +EXPORT_SYMBOL net/nfc/nfc 0xf6b66061 nfc_tm_deactivated +EXPORT_SYMBOL net/nfc/nfc_digital 0x30c44764 nfc_digital_free_device +EXPORT_SYMBOL net/nfc/nfc_digital 0x319041df nfc_digital_unregister_device +EXPORT_SYMBOL net/nfc/nfc_digital 0x563dcc71 nfc_digital_allocate_device +EXPORT_SYMBOL net/nfc/nfc_digital 0xe708b570 nfc_digital_register_device +EXPORT_SYMBOL net/phonet/phonet 0x2ad7bbcc phonet_proto_unregister +EXPORT_SYMBOL net/phonet/phonet 0x386b3b79 pn_sock_unhash +EXPORT_SYMBOL net/phonet/phonet 0x4a43af24 pn_skb_send +EXPORT_SYMBOL net/phonet/phonet 0x5df8c043 pn_sock_get_port +EXPORT_SYMBOL net/phonet/phonet 0x5e7c0101 pn_sock_hash +EXPORT_SYMBOL net/phonet/phonet 0xbc503a70 phonet_header_ops +EXPORT_SYMBOL net/phonet/phonet 0xd4a2784b phonet_proto_register +EXPORT_SYMBOL net/phonet/phonet 0xf3177cd4 phonet_stream_ops +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x125bd822 rxrpc_kernel_begin_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x1779e254 rxrpc_kernel_end_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x1c63856f rxrpc_kernel_intercept_rx_messages +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x28b7bd5d rxrpc_kernel_free_skb +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x28d19fa4 rxrpc_get_server_data_key +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x2bca2a8e rxrpc_kernel_send_data +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x522096bd rxrpc_get_null_key +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x5321cff5 rxrpc_kernel_abort_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x7a7e02fe rxrpc_kernel_get_abort_code +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x7eee2b10 rxrpc_kernel_data_delivered +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x9a192fd0 rxrpc_kernel_is_data_last +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xca6b6cfb rxrpc_kernel_get_error_number +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xd832632b key_type_rxrpc +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xe13a3199 rxrpc_kernel_reject_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xe6ca88e6 rxrpc_kernel_accept_call +EXPORT_SYMBOL net/sctp/sctp 0xc2028981 sctp_do_peeloff +EXPORT_SYMBOL net/sunrpc/auth_gss/auth_rpcgss 0x2f4e8e3a gss_mech_get +EXPORT_SYMBOL net/sunrpc/auth_gss/auth_rpcgss 0x4d395a78 gss_mech_put +EXPORT_SYMBOL net/sunrpc/auth_gss/auth_rpcgss 0xc514bbe2 gss_pseudoflavor_to_service +EXPORT_SYMBOL net/sunrpc/sunrpc 0x26e49dd2 xdr_truncate_encode +EXPORT_SYMBOL net/sunrpc/sunrpc 0x3b6adadc svc_pool_stats_open +EXPORT_SYMBOL net/sunrpc/sunrpc 0xc5c532e8 xdr_restrict_buflen +EXPORT_SYMBOL net/wimax/wimax 0x0200a35a wimax_reset +EXPORT_SYMBOL net/wimax/wimax 0x1eda8bef wimax_rfkill +EXPORT_SYMBOL net/wireless/cfg80211 0x01333b62 cfg80211_sched_scan_stopped_rtnl +EXPORT_SYMBOL net/wireless/cfg80211 0x014aacc0 regulatory_hint +EXPORT_SYMBOL net/wireless/cfg80211 0x0369bc0e wiphy_rfkill_set_hw_state +EXPORT_SYMBOL net/wireless/cfg80211 0x06f46e8b cfg80211_rx_unexpected_4addr_frame +EXPORT_SYMBOL net/wireless/cfg80211 0x09c64fbd ieee80211_frequency_to_channel +EXPORT_SYMBOL net/wireless/cfg80211 0x0c0b92c3 cfg80211_get_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x0efe0ff6 cfg80211_get_station +EXPORT_SYMBOL net/wireless/cfg80211 0x1271cf40 cfg80211_chandef_dfs_required +EXPORT_SYMBOL net/wireless/cfg80211 0x129ab427 ieee80211_get_num_supported_channels +EXPORT_SYMBOL net/wireless/cfg80211 0x14bb060f cfg80211_get_drvinfo +EXPORT_SYMBOL net/wireless/cfg80211 0x17797fc4 cfg80211_radar_event +EXPORT_SYMBOL net/wireless/cfg80211 0x1879fcbd bridge_tunnel_header +EXPORT_SYMBOL net/wireless/cfg80211 0x19d4b8e1 cfg80211_cqm_rssi_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x19e03378 cfg80211_get_p2p_attr +EXPORT_SYMBOL net/wireless/cfg80211 0x1c2bb5d7 wiphy_new_nm +EXPORT_SYMBOL net/wireless/cfg80211 0x1c57ca24 cfg80211_reg_can_beacon +EXPORT_SYMBOL net/wireless/cfg80211 0x1ea87586 ieee80211_amsdu_to_8023s +EXPORT_SYMBOL net/wireless/cfg80211 0x1eead014 ieee80211_data_to_8023 +EXPORT_SYMBOL net/wireless/cfg80211 0x22825f27 regulatory_set_wiphy_regd_sync_rtnl +EXPORT_SYMBOL net/wireless/cfg80211 0x243faf84 cfg80211_roamed_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x2506b23f cfg80211_unregister_wdev +EXPORT_SYMBOL net/wireless/cfg80211 0x26a83d89 cfg80211_rx_mlme_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0x2f48d7ce cfg80211_chandef_usable +EXPORT_SYMBOL net/wireless/cfg80211 0x3b81e865 cfg80211_auth_timeout +EXPORT_SYMBOL net/wireless/cfg80211 0x3d470c4d cfg80211_chandef_compatible +EXPORT_SYMBOL net/wireless/cfg80211 0x3d55dcb0 cfg80211_roamed +EXPORT_SYMBOL net/wireless/cfg80211 0x3e285fec cfg80211_chandef_valid +EXPORT_SYMBOL net/wireless/cfg80211 0x3f17c65f cfg80211_reg_can_beacon_relax +EXPORT_SYMBOL net/wireless/cfg80211 0x4227e8d1 cfg80211_remain_on_channel_expired +EXPORT_SYMBOL net/wireless/cfg80211 0x4275eabb cfg80211_sched_scan_results +EXPORT_SYMBOL net/wireless/cfg80211 0x43f589f2 regulatory_set_wiphy_regd +EXPORT_SYMBOL net/wireless/cfg80211 0x46cb2d50 cfg80211_cac_event +EXPORT_SYMBOL net/wireless/cfg80211 0x495457ff cfg80211_calculate_bitrate +EXPORT_SYMBOL net/wireless/cfg80211 0x50214c28 ieee80211_bss_get_ie +EXPORT_SYMBOL net/wireless/cfg80211 0x522d661b cfg80211_disconnected +EXPORT_SYMBOL net/wireless/cfg80211 0x5282d79d cfg80211_report_wowlan_wakeup +EXPORT_SYMBOL net/wireless/cfg80211 0x5a0befcf cfg80211_cqm_beacon_loss_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x5ac113e8 cfg80211_sched_scan_stopped +EXPORT_SYMBOL net/wireless/cfg80211 0x5c31d5c3 cfg80211_gtk_rekey_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x61bd4f71 cfg80211_iter_combinations +EXPORT_SYMBOL net/wireless/cfg80211 0x620fcf34 cfg80211_rx_unprot_mlme_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0x63816c83 cfg80211_cqm_txe_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x69b18f43 rfc1042_header +EXPORT_SYMBOL net/wireless/cfg80211 0x6d6cb9ad ieee80211_operating_class_to_band +EXPORT_SYMBOL net/wireless/cfg80211 0x6f208d55 cfg80211_mgmt_tx_status +EXPORT_SYMBOL net/wireless/cfg80211 0x772f43eb __cfg80211_alloc_event_skb +EXPORT_SYMBOL net/wireless/cfg80211 0x7c8c88c0 wiphy_rfkill_start_polling +EXPORT_SYMBOL net/wireless/cfg80211 0x7ef39823 ieee80211_hdrlen +EXPORT_SYMBOL net/wireless/cfg80211 0x7fa13c5d cfg80211_scan_done +EXPORT_SYMBOL net/wireless/cfg80211 0x7fe1a403 cfg80211_find_ie +EXPORT_SYMBOL net/wireless/cfg80211 0x7ff02363 wiphy_rfkill_stop_polling +EXPORT_SYMBOL net/wireless/cfg80211 0x8407e2a4 cfg80211_assoc_timeout +EXPORT_SYMBOL net/wireless/cfg80211 0x8492a430 ieee80211_get_response_rate +EXPORT_SYMBOL net/wireless/cfg80211 0x86734716 cfg80211_pmksa_candidate_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x8700442d cfg80211_stop_iface +EXPORT_SYMBOL net/wireless/cfg80211 0x880ebcee cfg80211_michael_mic_failure +EXPORT_SYMBOL net/wireless/cfg80211 0x8a7062a5 ieee80211_mandatory_rates +EXPORT_SYMBOL net/wireless/cfg80211 0x8a7e9301 ieee80211_data_from_8023 +EXPORT_SYMBOL net/wireless/cfg80211 0x8cf8c991 __cfg80211_alloc_reply_skb +EXPORT_SYMBOL net/wireless/cfg80211 0x8d048273 __cfg80211_send_event_skb +EXPORT_SYMBOL net/wireless/cfg80211 0x90aef7a9 cfg80211_ft_event +EXPORT_SYMBOL net/wireless/cfg80211 0x91d7a142 ieee80211_ie_split_ric +EXPORT_SYMBOL net/wireless/cfg80211 0x96b0c17d cfg80211_connect_result +EXPORT_SYMBOL net/wireless/cfg80211 0x982e6b6d ieee80211_radiotap_iterator_init +EXPORT_SYMBOL net/wireless/cfg80211 0x9fa9aa40 cfg80211_report_obss_beacon +EXPORT_SYMBOL net/wireless/cfg80211 0xa1425906 ieee80211_channel_to_frequency +EXPORT_SYMBOL net/wireless/cfg80211 0xa197b1ff ieee80211_get_mesh_hdrlen +EXPORT_SYMBOL net/wireless/cfg80211 0xa4e59bbf cfg80211_ch_switch_notify +EXPORT_SYMBOL net/wireless/cfg80211 0xa554b487 cfg80211_conn_failed +EXPORT_SYMBOL net/wireless/cfg80211 0xaabaa120 cfg80211_ch_switch_started_notify +EXPORT_SYMBOL net/wireless/cfg80211 0xac5c73de cfg80211_put_bss +EXPORT_SYMBOL net/wireless/cfg80211 0xacd772a9 cfg80211_tx_mlme_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0xb5ddf3a6 cfg80211_rx_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0xb8b586d8 ieee80211_get_hdrlen_from_skb +EXPORT_SYMBOL net/wireless/cfg80211 0xb922130e wiphy_free +EXPORT_SYMBOL net/wireless/cfg80211 0xba634636 cfg80211_unlink_bss +EXPORT_SYMBOL net/wireless/cfg80211 0xbafbd3c3 cfg80211_tdls_oper_request +EXPORT_SYMBOL net/wireless/cfg80211 0xbca9479c cfg80211_del_sta_sinfo +EXPORT_SYMBOL net/wireless/cfg80211 0xbee9a4da cfg80211_rx_assoc_resp +EXPORT_SYMBOL net/wireless/cfg80211 0xc498d09c cfg80211_rx_spurious_frame +EXPORT_SYMBOL net/wireless/cfg80211 0xc63f1b81 ieee80211_radiotap_iterator_next +EXPORT_SYMBOL net/wireless/cfg80211 0xc90fde22 ieee80211_chandef_to_operating_class +EXPORT_SYMBOL net/wireless/cfg80211 0xcae1832c cfg80211_check_station_change +EXPORT_SYMBOL net/wireless/cfg80211 0xcf676cbd cfg80211_classify8021d +EXPORT_SYMBOL net/wireless/cfg80211 0xd2a5ae42 freq_reg_info +EXPORT_SYMBOL net/wireless/cfg80211 0xd3d29a8d cfg80211_ready_on_channel +EXPORT_SYMBOL net/wireless/cfg80211 0xd50b0a22 ieee80211_ie_split +EXPORT_SYMBOL net/wireless/cfg80211 0xd56d078a cfg80211_ref_bss +EXPORT_SYMBOL net/wireless/cfg80211 0xda751466 cfg80211_notify_new_peer_candidate +EXPORT_SYMBOL net/wireless/cfg80211 0xdb48afae cfg80211_new_sta +EXPORT_SYMBOL net/wireless/cfg80211 0xdba126c1 reg_initiator_name +EXPORT_SYMBOL net/wireless/cfg80211 0xdd3be81e wiphy_register +EXPORT_SYMBOL net/wireless/cfg80211 0xe0996e1b __ieee80211_get_channel +EXPORT_SYMBOL net/wireless/cfg80211 0xe0c640ba cfg80211_check_combinations +EXPORT_SYMBOL net/wireless/cfg80211 0xe2f96b20 cfg80211_cqm_pktloss_notify +EXPORT_SYMBOL net/wireless/cfg80211 0xe3052b42 cfg80211_inform_bss_width_frame +EXPORT_SYMBOL net/wireless/cfg80211 0xe3c886c1 wiphy_apply_custom_regulatory +EXPORT_SYMBOL net/wireless/cfg80211 0xe416e87d cfg80211_ibss_joined +EXPORT_SYMBOL net/wireless/cfg80211 0xefc56354 cfg80211_chandef_create +EXPORT_SYMBOL net/wireless/cfg80211 0xf11251e8 cfg80211_inform_bss_width +EXPORT_SYMBOL net/wireless/cfg80211 0xf3a38a3d cfg80211_probe_status +EXPORT_SYMBOL net/wireless/cfg80211 0xf8fcee0c cfg80211_crit_proto_stopped +EXPORT_SYMBOL net/wireless/cfg80211 0xf914c98a wiphy_unregister +EXPORT_SYMBOL net/wireless/cfg80211 0xfed4d591 cfg80211_find_vendor_ie +EXPORT_SYMBOL net/wireless/lib80211 0x26c8947d lib80211_unregister_crypto_ops +EXPORT_SYMBOL net/wireless/lib80211 0x28d0d1a4 lib80211_crypt_info_free +EXPORT_SYMBOL net/wireless/lib80211 0x6933314a lib80211_crypt_delayed_deinit +EXPORT_SYMBOL net/wireless/lib80211 0x72da9323 lib80211_register_crypto_ops +EXPORT_SYMBOL net/wireless/lib80211 0xc188fa26 lib80211_crypt_info_init +EXPORT_SYMBOL net/wireless/lib80211 0xc961dbac lib80211_get_crypto_ops +EXPORT_SYMBOL sound/ac97_bus 0x9777d127 ac97_bus_type +EXPORT_SYMBOL sound/core/oss/snd-mixer-oss 0xa9049ada snd_mixer_oss_ioctl_card +EXPORT_SYMBOL sound/core/seq/snd-seq 0x034cd688 snd_seq_kernel_client_enqueue_blocking +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 0x92a42c27 snd_seq_kernel_client_write_poll +EXPORT_SYMBOL sound/core/seq/snd-seq 0x97aeac4e snd_seq_event_port_attach +EXPORT_SYMBOL sound/core/seq/snd-seq 0xa1cb720b 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 0xcac0a3be snd_seq_kernel_client_enqueue +EXPORT_SYMBOL sound/core/seq/snd-seq 0xe934da1d snd_seq_dump_var_event +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0x091def1c snd_seq_autoload_exit +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0x191b2cea snd_seq_device_new +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0x370a0736 snd_seq_autoload_init +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0x6339b6d0 snd_seq_device_load_drivers +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 0xf0a1fdb3 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 0xd7c7afcc snd_midi_event_encode +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0xe60fb228 snd_midi_event_reset_decode +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0xecbde43c snd_midi_event_encode_byte +EXPORT_SYMBOL sound/core/seq/snd-seq-virmidi 0x8f2b417f snd_virmidi_new +EXPORT_SYMBOL sound/core/snd 0x0aadaf66 snd_info_free_entry +EXPORT_SYMBOL sound/core/snd 0x0ed13f44 snd_card_set_id +EXPORT_SYMBOL sound/core/snd 0x111acf65 snd_info_register +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 0x2ae3deaa release_and_free_resource +EXPORT_SYMBOL sound/core/snd 0x2ecd9428 snd_ctl_find_numid +EXPORT_SYMBOL sound/core/snd 0x342a2354 copy_to_user_fromio +EXPORT_SYMBOL sound/core/snd 0x34852f58 snd_pci_quirk_lookup +EXPORT_SYMBOL sound/core/snd 0x38840a1b snd_ctl_remove_id +EXPORT_SYMBOL sound/core/snd 0x3971b4df snd_ecards_limit +EXPORT_SYMBOL sound/core/snd 0x3a82d3bc snd_card_file_remove +EXPORT_SYMBOL sound/core/snd 0x3be3614d snd_unregister_device +EXPORT_SYMBOL sound/core/snd 0x407ae12e snd_card_free +EXPORT_SYMBOL sound/core/snd 0x424a0a8c snd_component_add +EXPORT_SYMBOL sound/core/snd 0x464429e8 snd_jack_add_new_kctl +EXPORT_SYMBOL sound/core/snd 0x49e58d98 snd_ctl_free_one +EXPORT_SYMBOL sound/core/snd 0x4a3ea5c0 snd_request_card +EXPORT_SYMBOL sound/core/snd 0x4af3fca5 snd_ctl_register_ioctl_compat +EXPORT_SYMBOL sound/core/snd 0x4bce285c snd_card_free_when_closed +EXPORT_SYMBOL sound/core/snd 0x4c8600be snd_card_disconnect +EXPORT_SYMBOL sound/core/snd 0x4ff7d196 snd_jack_set_key +EXPORT_SYMBOL sound/core/snd 0x5b33e280 snd_device_register +EXPORT_SYMBOL sound/core/snd 0x5c6a34f9 snd_ctl_unregister_ioctl_compat +EXPORT_SYMBOL sound/core/snd 0x61999507 snd_ctl_boolean_stereo_info +EXPORT_SYMBOL sound/core/snd 0x6d3ee181 snd_jack_set_parent +EXPORT_SYMBOL sound/core/snd 0x70c15ac1 snd_dma_disable +EXPORT_SYMBOL sound/core/snd 0x73f80b7f snd_ctl_unregister_ioctl +EXPORT_SYMBOL sound/core/snd 0x796ec705 snd_ctl_make_virtual_master +EXPORT_SYMBOL sound/core/snd 0x80c22ac2 snd_jack_report +EXPORT_SYMBOL sound/core/snd 0x81b69e41 snd_ctl_enum_info +EXPORT_SYMBOL sound/core/snd 0x82b110c9 snd_seq_root +EXPORT_SYMBOL sound/core/snd 0x88474c1e snd_device_new +EXPORT_SYMBOL sound/core/snd 0x89c1b454 snd_ctl_replace +EXPORT_SYMBOL sound/core/snd 0x8df3789f snd_oss_info_register +EXPORT_SYMBOL sound/core/snd 0x8f595b11 snd_major +EXPORT_SYMBOL sound/core/snd 0x96087d92 snd_ctl_register_ioctl +EXPORT_SYMBOL sound/core/snd 0x97630a84 snd_mixer_oss_notify_callback +EXPORT_SYMBOL sound/core/snd 0x9a244661 snd_info_create_card_entry +EXPORT_SYMBOL sound/core/snd 0x9e6d79f8 snd_info_get_str +EXPORT_SYMBOL sound/core/snd 0xa0fd2427 snd_pci_quirk_lookup_id +EXPORT_SYMBOL sound/core/snd 0xa153559e snd_device_free +EXPORT_SYMBOL sound/core/snd 0xa60b8d59 _snd_ctl_add_slave +EXPORT_SYMBOL sound/core/snd 0xb2c4d979 snd_power_wait +EXPORT_SYMBOL sound/core/snd 0xb2e5ae4a snd_lookup_minor_data +EXPORT_SYMBOL sound/core/snd 0xb37f9267 snd_info_create_module_entry +EXPORT_SYMBOL sound/core/snd 0xb770b84a snd_cards +EXPORT_SYMBOL sound/core/snd 0xbd4da9c8 snd_ctl_add +EXPORT_SYMBOL sound/core/snd 0xbf589375 snd_register_oss_device +EXPORT_SYMBOL sound/core/snd 0xc81c28fc snd_ctl_rename_id +EXPORT_SYMBOL sound/core/snd 0xc8edc4d9 snd_ctl_remove +EXPORT_SYMBOL sound/core/snd 0xca3f0046 snd_ctl_find_id +EXPORT_SYMBOL sound/core/snd 0xd3305ed5 snd_jack_new +EXPORT_SYMBOL sound/core/snd 0xdca78cec snd_card_new +EXPORT_SYMBOL sound/core/snd 0xea05be1f snd_card_file_add +EXPORT_SYMBOL sound/core/snd 0xf3145310 snd_ctl_new1 +EXPORT_SYMBOL sound/core/snd 0xf43a2568 snd_card_register +EXPORT_SYMBOL sound/core/snd 0xf4955e9a snd_ctl_boolean_mono_info +EXPORT_SYMBOL sound/core/snd 0xf95efe4d snd_unregister_oss_device +EXPORT_SYMBOL sound/core/snd 0xf9c87129 snd_ctl_notify +EXPORT_SYMBOL sound/core/snd 0xfadba64c snd_register_device +EXPORT_SYMBOL sound/core/snd 0xfffd89db copy_from_user_toio +EXPORT_SYMBOL sound/core/snd-hwdep 0x3fb52b88 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 0x06b310c9 snd_free_pages +EXPORT_SYMBOL sound/core/snd-pcm 0x12bd010d snd_pcm_hw_rule_noresample +EXPORT_SYMBOL sound/core/snd-pcm 0x17cc3442 snd_pcm_lib_ioctl +EXPORT_SYMBOL sound/core/snd-pcm 0x1d027e4b snd_pcm_format_signed +EXPORT_SYMBOL sound/core/snd-pcm 0x1dc85251 snd_pcm_hw_constraint_pow2 +EXPORT_SYMBOL sound/core/snd-pcm 0x1f4b5878 snd_pcm_open_substream +EXPORT_SYMBOL sound/core/snd-pcm 0x2649e4e0 snd_pcm_kernel_ioctl +EXPORT_SYMBOL sound/core/snd-pcm 0x345eebd6 snd_pcm_hw_constraint_minmax +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 0x3c24d48b snd_pcm_lib_preallocate_pages_for_all +EXPORT_SYMBOL sound/core/snd-pcm 0x3c96da73 snd_pcm_new_internal +EXPORT_SYMBOL sound/core/snd-pcm 0x3e55a2b5 snd_pcm_hw_constraint_ranges +EXPORT_SYMBOL sound/core/snd-pcm 0x3f486ffd snd_pcm_lib_free_pages +EXPORT_SYMBOL sound/core/snd-pcm 0x432a8d64 snd_pcm_lib_free_vmalloc_buffer +EXPORT_SYMBOL sound/core/snd-pcm 0x4e3ddc67 snd_pcm_notify +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 0x5898dcba snd_malloc_pages +EXPORT_SYMBOL sound/core/snd-pcm 0x5b35af3a snd_pcm_stop +EXPORT_SYMBOL sound/core/snd-pcm 0x5e7f4920 snd_pcm_format_set_silence +EXPORT_SYMBOL sound/core/snd-pcm 0x5ec4de30 snd_pcm_hw_param_last +EXPORT_SYMBOL sound/core/snd-pcm 0x6033be9a snd_dma_alloc_pages_fallback +EXPORT_SYMBOL sound/core/snd-pcm 0x650f8603 snd_pcm_format_silence_64 +EXPORT_SYMBOL sound/core/snd-pcm 0x667174dc snd_dma_free_pages +EXPORT_SYMBOL sound/core/snd-pcm 0x6673def4 snd_pcm_lib_mmap_iomem +EXPORT_SYMBOL sound/core/snd-pcm 0x66cbeccf snd_pcm_lib_preallocate_pages +EXPORT_SYMBOL sound/core/snd-pcm 0x6805c349 snd_pcm_hw_refine +EXPORT_SYMBOL sound/core/snd-pcm 0x68a24153 snd_pcm_format_physical_width +EXPORT_SYMBOL sound/core/snd-pcm 0x6b990fae snd_pcm_release_substream +EXPORT_SYMBOL sound/core/snd-pcm 0x6ef8fcd8 snd_pcm_format_linear +EXPORT_SYMBOL sound/core/snd-pcm 0x73b0b3a7 snd_pcm_hw_rule_add +EXPORT_SYMBOL sound/core/snd-pcm 0x775a0a4c snd_pcm_suspend_all +EXPORT_SYMBOL sound/core/snd-pcm 0x834dc955 snd_pcm_format_size +EXPORT_SYMBOL sound/core/snd-pcm 0x8467eb4c snd_pcm_lib_writev +EXPORT_SYMBOL sound/core/snd-pcm 0x875b1cf2 snd_pcm_hw_constraint_step +EXPORT_SYMBOL sound/core/snd-pcm 0x8a854b98 snd_pcm_new_stream +EXPORT_SYMBOL sound/core/snd-pcm 0x8fbae3da snd_pcm_period_elapsed +EXPORT_SYMBOL sound/core/snd-pcm 0x94098ff8 snd_interval_list +EXPORT_SYMBOL sound/core/snd-pcm 0x96b3e133 snd_pcm_hw_constraint_ratnums +EXPORT_SYMBOL sound/core/snd-pcm 0x972f087c snd_pcm_lib_malloc_pages +EXPORT_SYMBOL sound/core/snd-pcm 0x9af3dcab _snd_pcm_lib_alloc_vmalloc_buffer +EXPORT_SYMBOL sound/core/snd-pcm 0x9d49cc63 snd_pcm_hw_constraint_integer +EXPORT_SYMBOL sound/core/snd-pcm 0xa3f08351 snd_pcm_lib_read +EXPORT_SYMBOL sound/core/snd-pcm 0xa51e0e97 snd_pcm_suspend +EXPORT_SYMBOL sound/core/snd-pcm 0xa61aa028 snd_pcm_format_unsigned +EXPORT_SYMBOL sound/core/snd-pcm 0xb0930eb7 snd_pcm_mmap_data +EXPORT_SYMBOL sound/core/snd-pcm 0xb5cd8905 snd_pcm_lib_write +EXPORT_SYMBOL sound/core/snd-pcm 0xb6da1eb1 snd_pcm_hw_constraint_mask64 +EXPORT_SYMBOL sound/core/snd-pcm 0xb83a70e1 snd_pcm_new +EXPORT_SYMBOL sound/core/snd-pcm 0xb9638db4 snd_pcm_rate_to_rate_bit +EXPORT_SYMBOL sound/core/snd-pcm 0xc7613319 snd_pcm_hw_constraint_msbits +EXPORT_SYMBOL sound/core/snd-pcm 0xc8123d94 snd_pcm_set_sync +EXPORT_SYMBOL sound/core/snd-pcm 0xcaa6ff69 snd_dma_alloc_pages +EXPORT_SYMBOL sound/core/snd-pcm 0xce848b7a snd_pcm_lib_preallocate_free_for_all +EXPORT_SYMBOL sound/core/snd-pcm 0xd28a5e90 snd_pcm_lib_get_vmalloc_page +EXPORT_SYMBOL sound/core/snd-pcm 0xd84d1b3f snd_pcm_set_ops +EXPORT_SYMBOL sound/core/snd-pcm 0xe56a9336 snd_pcm_format_width +EXPORT_SYMBOL sound/core/snd-pcm 0xe63b40fd snd_pcm_limit_hw_rates +EXPORT_SYMBOL sound/core/snd-pcm 0xeb22e620 snd_pcm_hw_param_first +EXPORT_SYMBOL sound/core/snd-pcm 0xed030d10 snd_pcm_hw_constraint_list +EXPORT_SYMBOL sound/core/snd-pcm 0xf364c743 snd_pcm_lib_readv +EXPORT_SYMBOL sound/core/snd-pcm 0xf3797152 snd_interval_ratnum +EXPORT_SYMBOL sound/core/snd-pcm 0xf8ab1559 snd_pcm_hw_constraint_ratdens +EXPORT_SYMBOL sound/core/snd-pcm 0xff6104d0 snd_pcm_rate_bit_to_rate +EXPORT_SYMBOL sound/core/snd-rawmidi 0x06537867 snd_rawmidi_drain_input +EXPORT_SYMBOL sound/core/snd-rawmidi 0x0bd70124 snd_rawmidi_info_select +EXPORT_SYMBOL sound/core/snd-rawmidi 0x28435295 snd_rawmidi_input_params +EXPORT_SYMBOL sound/core/snd-rawmidi 0x48a81b5c snd_rawmidi_set_ops +EXPORT_SYMBOL sound/core/snd-rawmidi 0x59c8997c snd_rawmidi_transmit_ack +EXPORT_SYMBOL sound/core/snd-rawmidi 0x5d84ca0e snd_rawmidi_new +EXPORT_SYMBOL sound/core/snd-rawmidi 0x6d3a8cab snd_rawmidi_transmit_empty +EXPORT_SYMBOL sound/core/snd-rawmidi 0x70924aa6 snd_rawmidi_kernel_release +EXPORT_SYMBOL sound/core/snd-rawmidi 0x8786dfbe snd_rawmidi_drain_output +EXPORT_SYMBOL sound/core/snd-rawmidi 0x88273418 snd_rawmidi_transmit_peek +EXPORT_SYMBOL sound/core/snd-rawmidi 0xa2249c4e snd_rawmidi_receive +EXPORT_SYMBOL sound/core/snd-rawmidi 0xa3a897e8 snd_rawmidi_kernel_read +EXPORT_SYMBOL sound/core/snd-rawmidi 0xb36c3cad snd_rawmidi_output_params +EXPORT_SYMBOL sound/core/snd-rawmidi 0xb48ad32e snd_rawmidi_transmit +EXPORT_SYMBOL sound/core/snd-rawmidi 0xc12b9d7f snd_rawmidi_kernel_open +EXPORT_SYMBOL sound/core/snd-rawmidi 0xc96c1168 snd_rawmidi_kernel_write +EXPORT_SYMBOL sound/core/snd-rawmidi 0xc9bec1f9 snd_rawmidi_drop_output +EXPORT_SYMBOL sound/core/snd-timer 0x054f5696 snd_timer_global_new +EXPORT_SYMBOL sound/core/snd-timer 0x125e843f snd_timer_resolution +EXPORT_SYMBOL sound/core/snd-timer 0x235778f6 snd_timer_notify +EXPORT_SYMBOL sound/core/snd-timer 0x3b6215ce snd_timer_close +EXPORT_SYMBOL sound/core/snd-timer 0x495b1435 snd_timer_interrupt +EXPORT_SYMBOL sound/core/snd-timer 0x6fdd1de6 snd_timer_open +EXPORT_SYMBOL sound/core/snd-timer 0x8c11678b snd_timer_pause +EXPORT_SYMBOL sound/core/snd-timer 0x8e91b203 snd_timer_stop +EXPORT_SYMBOL sound/core/snd-timer 0xaef72bd2 snd_timer_global_register +EXPORT_SYMBOL sound/core/snd-timer 0xb6df31e0 snd_timer_new +EXPORT_SYMBOL sound/core/snd-timer 0xd12bfb25 snd_timer_start +EXPORT_SYMBOL sound/core/snd-timer 0xe11f04b7 snd_timer_continue +EXPORT_SYMBOL sound/core/snd-timer 0xe361b894 snd_timer_global_free +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 0xf0837b85 snd_mpu401_uart_new +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x05060a19 snd_opl3_regmap +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x0900c92d snd_opl3_init +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x1314db6e snd_opl3_hwdep_new +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x152451fa snd_opl3_find_patch +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x4056102f snd_opl3_load_patch +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x53390ffa snd_opl3_reset +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x91763740 snd_opl3_timer_new +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xa00fb049 snd_opl3_interrupt +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xc516aff6 snd_opl3_new +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xcce3499a snd_opl3_create +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x226138b0 snd_vx_threaded_irq_handler +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x412e5e6d snd_vx_setup_firmware +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x4d2ac805 snd_vx_dsp_load +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x5d5288e1 snd_vx_load_boot_image +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x69d5f614 snd_vx_free_firmware +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xc074bbb9 snd_vx_suspend +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xc3931d71 snd_vx_check_reg_bit +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xe071c14f snd_vx_dsp_boot +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xe5836e7d snd_vx_resume +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xeef0741f snd_vx_create +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xf1f04d23 snd_vx_irq_handler +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x0392b8a8 amdtp_stream_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x0d6444d7 avc_general_get_sig_fmt +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x122d91d6 fw_iso_resources_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x140fa21c fcp_bus_reset +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x1866629d amdtp_stream_get_max_payload +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x1ae4b595 cmp_connection_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x20254e45 amdtp_syt_intervals +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x2af93f7c cmp_connection_check_used +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x3aec5af3 avc_general_set_sig_fmt +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x3b9faa87 amdtp_stream_pcm_prepare +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x3dc0fb02 fcp_avc_transaction +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x4c4768f5 amdtp_stream_pcm_pointer +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x53ca18e8 amdtp_rate_table +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x54bf30cf iso_packets_buffer_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x5bd3a569 cmp_connection_establish +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x5f1acc24 amdtp_stream_set_pcm_format +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x68f76d53 iso_packets_buffer_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x7afa2669 amdtp_stream_set_parameters +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x7f7a1f5d fw_iso_resources_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x83e710eb amdtp_stream_start +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x864ee486 fw_iso_resources_allocate +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x90dc6b0f amdtp_stream_pcm_abort +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x979eb1af avc_general_get_plug_info +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xb10d4f75 amdtp_stream_stop +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xb22144bc snd_fw_transaction +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xb97123a3 cmp_connection_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xc2f4a13c fw_iso_resources_update +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xe8ab2241 fw_iso_resources_free +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xec6ae21c cmp_connection_update +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xee179de7 cmp_connection_break +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xf0d38bef amdtp_stream_update +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xf74398a7 amdtp_stream_add_pcm_hw_constraints +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xf7cc477c amdtp_stream_init +EXPORT_SYMBOL sound/i2c/other/snd-ak4113 0x55b04852 snd_ak4113_suspend +EXPORT_SYMBOL sound/i2c/other/snd-ak4113 0xb8967851 snd_ak4113_resume +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x06d9bd41 snd_ak4114_reg_write +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x34f4a0ed snd_ak4114_create +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x4a7a8dd6 snd_ak4114_check_rate_and_errors +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x6b74a95a snd_ak4114_build +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x7601e734 snd_ak4114_suspend +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0xbc7010da snd_ak4114_resume +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0xbf5ca7c6 snd_ak4114_reinit +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0xc5f4c6ea snd_ak4114_external_rate +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0x11f7f49c snd_akm4xxx_reset +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0x2bce56bf snd_akm4xxx_write +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0x538aaf7f snd_akm4xxx_init +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0xa2772653 snd_akm4xxx_build_controls +EXPORT_SYMBOL sound/i2c/other/snd-pt2258 0x05327782 snd_pt2258_build_controls +EXPORT_SYMBOL sound/i2c/other/snd-pt2258 0xc3b2d4c0 snd_pt2258_reset +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x8c45935b snd_cs8427_create +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x93d99116 snd_cs8427_iec958_active +EXPORT_SYMBOL sound/i2c/snd-cs8427 0xaf80cecf snd_cs8427_iec958_pcm +EXPORT_SYMBOL sound/i2c/snd-cs8427 0xbf710c83 snd_cs8427_reg_write +EXPORT_SYMBOL sound/i2c/snd-cs8427 0xec10bf69 snd_cs8427_init +EXPORT_SYMBOL sound/i2c/snd-cs8427 0xfe3c6e67 snd_cs8427_iec958_build +EXPORT_SYMBOL sound/i2c/snd-i2c 0x8b79901e snd_i2c_sendbytes +EXPORT_SYMBOL sound/i2c/snd-i2c 0x99ff3121 snd_i2c_device_free +EXPORT_SYMBOL sound/i2c/snd-i2c 0x9ca73f82 snd_i2c_readbytes +EXPORT_SYMBOL sound/i2c/snd-i2c 0xb527fdfe snd_i2c_device_create +EXPORT_SYMBOL sound/i2c/snd-i2c 0xc9096a18 snd_i2c_probeaddr +EXPORT_SYMBOL sound/i2c/snd-i2c 0xcf5df00b snd_i2c_bus_create +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x142002f7 snd_sbmixer_write +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x19a022f6 snd_sbmixer_read +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x3233fdf7 snd_sbdsp_command +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x33dc3272 snd_sbmixer_suspend +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x3404fa48 snd_sbdsp_create +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x371ad660 snd_sbdsp_reset +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x4080782c snd_sbdsp_get_byte +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x51396a88 snd_sbmixer_new +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x87e1f70a snd_sbmixer_resume +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0xc0fd7cc4 snd_sbmixer_add_ctl +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x01623462 snd_ac97_tune_hardware +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x0612fd0b snd_ac97_pcm_double_rate_rules +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x0688fbe0 snd_ac97_read +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x11caf7e9 snd_ac97_write_cache +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x389af66e snd_ac97_resume +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x6825748a snd_ac97_pcm_close +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x89f899c0 snd_ac97_mixer +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x8c232a6c snd_ac97_get_short_name +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xa7b891b1 snd_ac97_suspend +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xad3beb9d snd_ac97_pcm_open +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xb205a01f snd_ac97_set_rate +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xcd56e19f snd_ac97_pcm_assign +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xcf7b094e snd_ac97_bus +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xdacfc0c7 snd_ac97_write +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xe429fd48 snd_ac97_update +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xea85e27e snd_ac97_update_bits +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xef9ecad5 snd_ac97_update_power +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x0cd457a2 snd_emu10k1_synth_alloc +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x632ae6c1 snd_emu10k1_memblk_map +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x758fac28 snd_emu10k1_voice_free +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x78f396a0 snd_emu10k1_ptr_write +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xdd570ca1 snd_emu10k1_synth_free +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xee64d559 snd_emu10k1_synth_bzero +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xfc3c9878 snd_emu10k1_voice_alloc +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xfc8f0296 snd_emu10k1_synth_copy_from_user +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xfd2d80e2 snd_emu10k1_ptr_read +EXPORT_SYMBOL sound/pci/ice1712/snd-ice17xx-ak4xxx 0xa50249f6 snd_ice1712_akm4xxx_init +EXPORT_SYMBOL sound/pci/ice1712/snd-ice17xx-ak4xxx 0xd9aa0dd5 snd_ice1712_akm4xxx_build_controls +EXPORT_SYMBOL sound/pci/ice1712/snd-ice17xx-ak4xxx 0xef820462 snd_ice1712_akm4xxx_free +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x03d1da65 oxygen_pci_shutdown +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x1f57044a oxygen_write16_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x267d0ace oxygen_write_ac97_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x2bf9f0e3 oxygen_read32 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x44e945e5 oxygen_write_uart +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x46b79f08 oxygen_write32_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x647d2c66 oxygen_write8_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x64cbf826 oxygen_pci_pm +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x6747adff oxygen_write_spi +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x709e0299 oxygen_write_i2c +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x7e90d0d9 oxygen_pci_remove +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x927ca5f6 oxygen_write_ac97 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x94c142d2 oxygen_write16 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xb910111a oxygen_read_ac97 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xc6672057 oxygen_update_dac_routing +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xcd9716a0 oxygen_reset_uart +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xd9acd42d oxygen_write8 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xdea90d78 oxygen_pci_probe +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xdf005361 oxygen_write32 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xebc30fc9 oxygen_read16 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xfe0fdf2f oxygen_read8 +EXPORT_SYMBOL sound/pci/trident/snd-trident 0x3d34d454 snd_trident_alloc_voice +EXPORT_SYMBOL sound/pci/trident/snd-trident 0x4a45329d snd_trident_free_voice +EXPORT_SYMBOL sound/pci/trident/snd-trident 0x4cd91c8e snd_trident_write_voice_regs +EXPORT_SYMBOL sound/pci/trident/snd-trident 0xc673f165 snd_trident_stop_voice +EXPORT_SYMBOL sound/pci/trident/snd-trident 0xfd8f6d44 snd_trident_start_voice +EXPORT_SYMBOL sound/soc/codecs/snd-soc-tlv320aic23 0x137c06f4 tlv320aic23_probe +EXPORT_SYMBOL sound/soc/codecs/snd-soc-tlv320aic23 0x32d1837d tlv320aic23_regmap +EXPORT_SYMBOL sound/soc/snd-soc-core 0x42d4c17e snd_soc_alloc_ac97_codec +EXPORT_SYMBOL sound/soundcore 0x16d4173b register_sound_midi +EXPORT_SYMBOL sound/soundcore 0x633515c6 register_sound_special +EXPORT_SYMBOL sound/soundcore 0x7afc9d8a unregister_sound_mixer +EXPORT_SYMBOL sound/soundcore 0x98c3f73d register_sound_special_device +EXPORT_SYMBOL sound/soundcore 0x99c95fa5 unregister_sound_special +EXPORT_SYMBOL sound/soundcore 0x9aa6a937 register_sound_dsp +EXPORT_SYMBOL sound/soundcore 0xbc7285d2 register_sound_mixer +EXPORT_SYMBOL sound/soundcore 0xcd083b10 unregister_sound_dsp +EXPORT_SYMBOL sound/soundcore 0xeed8b3e1 sound_class +EXPORT_SYMBOL sound/soundcore 0xfdab6de3 unregister_sound_midi +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x077c8b2a snd_emux_unlock_voice +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x13c97af7 snd_emux_new +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x18835113 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 0x9775132c snd_emux_register +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0xaf680871 snd_emux_free +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0xc8f41717 snd_emux_terminate_all +EXPORT_SYMBOL sound/synth/snd-util-mem 0x3edc98fd snd_util_mem_avail +EXPORT_SYMBOL sound/synth/snd-util-mem 0x5dac3488 snd_util_memhdr_new +EXPORT_SYMBOL sound/synth/snd-util-mem 0x68dd2957 __snd_util_memblk_new +EXPORT_SYMBOL sound/synth/snd-util-mem 0x9d1239b1 __snd_util_mem_free +EXPORT_SYMBOL sound/synth/snd-util-mem 0xd32d1145 snd_util_mem_free +EXPORT_SYMBOL sound/synth/snd-util-mem 0xd5aa86b4 snd_util_mem_alloc +EXPORT_SYMBOL sound/synth/snd-util-mem 0xe3fa9ca8 snd_util_memhdr_free +EXPORT_SYMBOL sound/synth/snd-util-mem 0xe8cae9a6 __snd_util_mem_alloc +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 0x9f3ef494 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 0x00000000 TOC. +EXPORT_SYMBOL vmlinux 0x0016fb13 get_pci_dma_ops +EXPORT_SYMBOL vmlinux 0x00322f56 phy_print_status +EXPORT_SYMBOL vmlinux 0x0037a9c9 ipv6_mc_check_mld +EXPORT_SYMBOL vmlinux 0x003cd4de jbd2__journal_start +EXPORT_SYMBOL vmlinux 0x00536ee8 tcp_child_process +EXPORT_SYMBOL vmlinux 0x0070cd1f queue_delayed_work_on +EXPORT_SYMBOL vmlinux 0x009d859b __break_lease +EXPORT_SYMBOL vmlinux 0x00d7e722 vme_lm_count +EXPORT_SYMBOL vmlinux 0x01000e51 schedule +EXPORT_SYMBOL vmlinux 0x0101d5b1 ip_idents_reserve +EXPORT_SYMBOL vmlinux 0x01126c5b __skb_gso_segment +EXPORT_SYMBOL vmlinux 0x0117e522 srp_start_tl_fail_timers +EXPORT_SYMBOL vmlinux 0x011de776 xfrm_state_delete +EXPORT_SYMBOL vmlinux 0x012968f4 set_nlink +EXPORT_SYMBOL vmlinux 0x012a97fc xor_altivec_4 +EXPORT_SYMBOL vmlinux 0x0131d0bc pci_enable_msi_range +EXPORT_SYMBOL vmlinux 0x016e5c2a mod_timer +EXPORT_SYMBOL vmlinux 0x016eb0de giveup_fpu +EXPORT_SYMBOL vmlinux 0x01790e94 csum_partial_copy +EXPORT_SYMBOL vmlinux 0x0180be03 iov_iter_get_pages_alloc +EXPORT_SYMBOL vmlinux 0x01da68d3 compat_ipv6_getsockopt +EXPORT_SYMBOL vmlinux 0x01f6fbdb filemap_fdatawrite +EXPORT_SYMBOL vmlinux 0x01fc7e34 padata_set_cpumask +EXPORT_SYMBOL vmlinux 0x02124474 ip_send_check +EXPORT_SYMBOL vmlinux 0x02192dd9 _dev_info +EXPORT_SYMBOL vmlinux 0x023a074a hvc_get_chars +EXPORT_SYMBOL vmlinux 0x0242ee17 bdev_read_only +EXPORT_SYMBOL vmlinux 0x024bf827 radix_tree_gang_lookup_tag_slot +EXPORT_SYMBOL vmlinux 0x02511e13 __skb_tx_hash +EXPORT_SYMBOL vmlinux 0x0257d11a filemap_page_mkwrite +EXPORT_SYMBOL vmlinux 0x025cd012 inet_dgram_ops +EXPORT_SYMBOL vmlinux 0x02649054 security_sock_rcv_skb +EXPORT_SYMBOL vmlinux 0x026cce42 scsi_device_put +EXPORT_SYMBOL vmlinux 0x0274dc2b netif_get_num_default_rss_queues +EXPORT_SYMBOL vmlinux 0x0292e735 fsnotify_init_mark +EXPORT_SYMBOL vmlinux 0x0298b8d5 mipi_dsi_generic_read +EXPORT_SYMBOL vmlinux 0x02a18c74 nf_conntrack_destroy +EXPORT_SYMBOL vmlinux 0x02a6ce5a crc16_table +EXPORT_SYMBOL vmlinux 0x02c063eb nf_log_packet +EXPORT_SYMBOL vmlinux 0x02c636c3 get_cached_acl_rcu +EXPORT_SYMBOL vmlinux 0x02ea111e scsi_driverbyte_string +EXPORT_SYMBOL vmlinux 0x02eb66e2 xfrm6_prepare_output +EXPORT_SYMBOL vmlinux 0x02f904a0 mipi_dsi_dcs_nop +EXPORT_SYMBOL vmlinux 0x0302b1e9 mntput +EXPORT_SYMBOL vmlinux 0x03056c54 request_firmware_nowait +EXPORT_SYMBOL vmlinux 0x030be2ab scsi_report_bus_reset +EXPORT_SYMBOL vmlinux 0x032f95f6 dquot_commit_info +EXPORT_SYMBOL vmlinux 0x0334da4e scsi_command_size_tbl +EXPORT_SYMBOL vmlinux 0x03592ea0 security_unix_stream_connect +EXPORT_SYMBOL vmlinux 0x0366307a console_suspend_enabled +EXPORT_SYMBOL vmlinux 0x0377a799 free_user_ns +EXPORT_SYMBOL vmlinux 0x037a0cba kfree +EXPORT_SYMBOL vmlinux 0x037d9418 __block_page_mkwrite +EXPORT_SYMBOL vmlinux 0x0388c424 vm_insert_pfn +EXPORT_SYMBOL vmlinux 0x038b4028 i2c_del_adapter +EXPORT_SYMBOL vmlinux 0x03a7d198 serial8250_register_8250_port +EXPORT_SYMBOL vmlinux 0x03ce3f01 d_path +EXPORT_SYMBOL vmlinux 0x03cfe901 elv_add_request +EXPORT_SYMBOL vmlinux 0x03d9ce0d __frontswap_test +EXPORT_SYMBOL vmlinux 0x03ebda85 dns_query +EXPORT_SYMBOL vmlinux 0x03fd2571 vm_unmap_ram +EXPORT_SYMBOL vmlinux 0x04074f48 ioremap +EXPORT_SYMBOL vmlinux 0x04080db5 abx500_get_chip_id +EXPORT_SYMBOL vmlinux 0x04112cc2 fsnotify_put_mark +EXPORT_SYMBOL vmlinux 0x04158f03 agp_generic_alloc_by_type +EXPORT_SYMBOL vmlinux 0x041edd0c filemap_fault +EXPORT_SYMBOL vmlinux 0x04213a0d dma_async_device_unregister +EXPORT_SYMBOL vmlinux 0x0422fe4a inet_csk_timer_bug_msg +EXPORT_SYMBOL vmlinux 0x0427b5e5 abx500_remove_ops +EXPORT_SYMBOL vmlinux 0x0439009b mmc_can_discard +EXPORT_SYMBOL vmlinux 0x04482cdb __refrigerator +EXPORT_SYMBOL vmlinux 0x0466d34f of_get_ibm_chip_id +EXPORT_SYMBOL vmlinux 0x046debc1 block_invalidatepage +EXPORT_SYMBOL vmlinux 0x047e2ebc audit_log_task_info +EXPORT_SYMBOL vmlinux 0x0487f831 fb_find_best_display +EXPORT_SYMBOL vmlinux 0x04905cc3 scsi_block_when_processing_errors +EXPORT_SYMBOL vmlinux 0x049ad7b2 nf_hook_slow +EXPORT_SYMBOL vmlinux 0x049fdc27 scsi_init_io +EXPORT_SYMBOL vmlinux 0x04a35973 unlock_buffer +EXPORT_SYMBOL vmlinux 0x04a79a27 tcp_get_md5sig_pool +EXPORT_SYMBOL vmlinux 0x04bfef6d dquot_disable +EXPORT_SYMBOL vmlinux 0x04d7d618 __scsi_device_lookup +EXPORT_SYMBOL vmlinux 0x04ea56f9 _kstrtol +EXPORT_SYMBOL vmlinux 0x04ea5d10 ksize +EXPORT_SYMBOL vmlinux 0x04f362ee skb_tx_error +EXPORT_SYMBOL vmlinux 0x050117ff ata_link_printk +EXPORT_SYMBOL vmlinux 0x050db17c inet_shutdown +EXPORT_SYMBOL vmlinux 0x05186ca4 flush_icache_range +EXPORT_SYMBOL vmlinux 0x051eaf3a __free_pages +EXPORT_SYMBOL vmlinux 0x05240ee7 percpu_counter_batch +EXPORT_SYMBOL vmlinux 0x0529d8dc proc_mkdir +EXPORT_SYMBOL vmlinux 0x0530dede _raw_write_trylock +EXPORT_SYMBOL vmlinux 0x05368f64 bdi_register +EXPORT_SYMBOL vmlinux 0x054a40d0 __tracepoint_fence_emit +EXPORT_SYMBOL vmlinux 0x055224ac blk_mq_abort_requeue_list +EXPORT_SYMBOL vmlinux 0x055c8559 __kfifo_dma_in_prepare_r +EXPORT_SYMBOL vmlinux 0x055dc149 vc_cons +EXPORT_SYMBOL vmlinux 0x05874066 ip_route_input_noref +EXPORT_SYMBOL vmlinux 0x058c05f8 __blk_run_queue +EXPORT_SYMBOL vmlinux 0x058c5050 kern_path +EXPORT_SYMBOL vmlinux 0x05a514a1 _insl_ns +EXPORT_SYMBOL vmlinux 0x05aff25d n_tty_compat_ioctl_helper +EXPORT_SYMBOL vmlinux 0x05c441c3 blkdev_get_by_path +EXPORT_SYMBOL vmlinux 0x05c554c7 kernel_bind +EXPORT_SYMBOL vmlinux 0x05d06e61 mipi_dsi_dcs_set_pixel_format +EXPORT_SYMBOL vmlinux 0x05e99235 tcp_rcv_state_process +EXPORT_SYMBOL vmlinux 0x061651be strcat +EXPORT_SYMBOL vmlinux 0x061b96e5 find_lock_entry +EXPORT_SYMBOL vmlinux 0x0629a515 twl6040_power +EXPORT_SYMBOL vmlinux 0x0634100a bitmap_parselist_user +EXPORT_SYMBOL vmlinux 0x064b8fc3 devfreq_add_device +EXPORT_SYMBOL vmlinux 0x064e458b ptp_find_pin +EXPORT_SYMBOL vmlinux 0x064f5862 __seq_open_private +EXPORT_SYMBOL vmlinux 0x066ff3ab pci_release_selected_regions +EXPORT_SYMBOL vmlinux 0x067d8d35 security_release_secctx +EXPORT_SYMBOL vmlinux 0x06a0f3d9 netif_carrier_off +EXPORT_SYMBOL vmlinux 0x06b8cfb3 i2c_smbus_read_i2c_block_data +EXPORT_SYMBOL vmlinux 0x06d19fff blk_run_queue +EXPORT_SYMBOL vmlinux 0x06db81e4 devm_ioport_map +EXPORT_SYMBOL vmlinux 0x06dc8f51 copy_to_iter +EXPORT_SYMBOL vmlinux 0x06e5d207 jbd2_journal_lock_updates +EXPORT_SYMBOL vmlinux 0x06eb502b ppp_unregister_channel +EXPORT_SYMBOL vmlinux 0x06fe3b14 default_grn +EXPORT_SYMBOL vmlinux 0x07015b9d write_inode_now +EXPORT_SYMBOL vmlinux 0x071e7559 netdev_notice +EXPORT_SYMBOL vmlinux 0x0727c4f3 iowrite8 +EXPORT_SYMBOL vmlinux 0x072f901c vme_master_rmw +EXPORT_SYMBOL vmlinux 0x074e9213 down_killable +EXPORT_SYMBOL vmlinux 0x074ff2a3 inet_frag_maybe_warn_overflow +EXPORT_SYMBOL vmlinux 0x07708251 ns_capable +EXPORT_SYMBOL vmlinux 0x077b387e blk_fetch_request +EXPORT_SYMBOL vmlinux 0x078e086d set_user_nice +EXPORT_SYMBOL vmlinux 0x07a890c8 fb_alloc_cmap +EXPORT_SYMBOL vmlinux 0x07cc4a5d printk_timed_ratelimit +EXPORT_SYMBOL vmlinux 0x07d30404 __dst_free +EXPORT_SYMBOL vmlinux 0x07d8312a sock_i_uid +EXPORT_SYMBOL vmlinux 0x07d99885 skb_copy_and_csum_datagram_msg +EXPORT_SYMBOL vmlinux 0x07d9a848 padata_do_serial +EXPORT_SYMBOL vmlinux 0x07e811b2 proc_set_size +EXPORT_SYMBOL vmlinux 0x08056e98 swiotlb_sync_sg_for_device +EXPORT_SYMBOL vmlinux 0x082c3213 pci_root_buses +EXPORT_SYMBOL vmlinux 0x083dc382 tcp_v4_md5_lookup +EXPORT_SYMBOL vmlinux 0x083eb21c rfkill_unregister +EXPORT_SYMBOL vmlinux 0x086a4c51 pcie_get_minimum_link +EXPORT_SYMBOL vmlinux 0x088652fd bh_submit_read +EXPORT_SYMBOL vmlinux 0x08ba4fb2 registered_fb +EXPORT_SYMBOL vmlinux 0x08e8185e iov_iter_bvec +EXPORT_SYMBOL vmlinux 0x08ea69e7 mipi_dsi_packet_format_is_long +EXPORT_SYMBOL vmlinux 0x09341349 posix_test_lock +EXPORT_SYMBOL vmlinux 0x09580deb init_timer_key +EXPORT_SYMBOL vmlinux 0x0985bdb5 get_tz_trend +EXPORT_SYMBOL vmlinux 0x098b71c6 fb_dealloc_cmap +EXPORT_SYMBOL vmlinux 0x099dd89e filemap_fdatawrite_range +EXPORT_SYMBOL vmlinux 0x09c55cec schedule_timeout_interruptible +EXPORT_SYMBOL vmlinux 0x09c8eb55 font_vga_8x16 +EXPORT_SYMBOL vmlinux 0x09d44df9 in_lock_functions +EXPORT_SYMBOL vmlinux 0x09ef576e request_firmware +EXPORT_SYMBOL vmlinux 0x09ff991f kmem_cache_size +EXPORT_SYMBOL vmlinux 0x0a2487e0 unblock_all_signals +EXPORT_SYMBOL vmlinux 0x0a292872 reservation_seqcount_class +EXPORT_SYMBOL vmlinux 0x0a2d13f8 xfrm_policy_alloc +EXPORT_SYMBOL vmlinux 0x0a34ba94 tcp_rcv_established +EXPORT_SYMBOL vmlinux 0x0a3b3640 block_read_full_page +EXPORT_SYMBOL vmlinux 0x0a57863e cancel_delayed_work_sync +EXPORT_SYMBOL vmlinux 0x0a5c3832 inet_bind +EXPORT_SYMBOL vmlinux 0x0a611f03 swiotlb_map_sg_attrs +EXPORT_SYMBOL vmlinux 0x0a770832 register_memory_notifier +EXPORT_SYMBOL vmlinux 0x0a82c90e xfrm_policy_destroy +EXPORT_SYMBOL vmlinux 0x0a853710 pci_set_dma_seg_boundary +EXPORT_SYMBOL vmlinux 0x0a97976d cont_write_begin +EXPORT_SYMBOL vmlinux 0x0a991a32 jbd2_journal_begin_ordered_truncate +EXPORT_SYMBOL vmlinux 0x0a9b257b neigh_sysctl_unregister +EXPORT_SYMBOL vmlinux 0x0aa309cf synchronize_hardirq +EXPORT_SYMBOL vmlinux 0x0aacd139 blk_mq_start_hw_queues +EXPORT_SYMBOL vmlinux 0x0aad6e35 pm860x_bulk_write +EXPORT_SYMBOL vmlinux 0x0ab1547c poll_freewait +EXPORT_SYMBOL vmlinux 0x0ab19d5a __pagevec_release +EXPORT_SYMBOL vmlinux 0x0acf7679 dma_issue_pending_all +EXPORT_SYMBOL vmlinux 0x0ad0f23e datagram_poll +EXPORT_SYMBOL vmlinux 0x0ae88b4c nf_unregister_sockopt +EXPORT_SYMBOL vmlinux 0x0af9aa04 of_dev_put +EXPORT_SYMBOL vmlinux 0x0b013e12 i2c_add_adapter +EXPORT_SYMBOL vmlinux 0x0b01d7c8 n_tty_ioctl_helper +EXPORT_SYMBOL vmlinux 0x0b0d888b icmpv6_err_convert +EXPORT_SYMBOL vmlinux 0x0b11239a tcp_syn_ack_timeout +EXPORT_SYMBOL vmlinux 0x0b1beb31 vmalloc_32_user +EXPORT_SYMBOL vmlinux 0x0b2d4d79 pcie_capability_clear_and_set_dword +EXPORT_SYMBOL vmlinux 0x0b2e1ec7 h_get_mpp +EXPORT_SYMBOL vmlinux 0x0b3cd8da up_read +EXPORT_SYMBOL vmlinux 0x0b70ece9 blk_alloc_queue_node +EXPORT_SYMBOL vmlinux 0x0b742fd7 simple_strtol +EXPORT_SYMBOL vmlinux 0x0bac31b9 kern_path_create +EXPORT_SYMBOL vmlinux 0x0bb31462 dev_printk +EXPORT_SYMBOL vmlinux 0x0bbc5908 gen_estimator_active +EXPORT_SYMBOL vmlinux 0x0bc477a2 irq_set_irq_type +EXPORT_SYMBOL vmlinux 0x0bf7198b pci_disable_link_state_locked +EXPORT_SYMBOL vmlinux 0x0bfa6900 inet_stream_connect +EXPORT_SYMBOL vmlinux 0x0bfbe9f9 vme_dma_list_free +EXPORT_SYMBOL vmlinux 0x0c030659 swiotlb_map_sg +EXPORT_SYMBOL vmlinux 0x0c21d019 flush_delayed_work +EXPORT_SYMBOL vmlinux 0x0c22e551 textsearch_prepare +EXPORT_SYMBOL vmlinux 0x0c257e23 may_umount +EXPORT_SYMBOL vmlinux 0x0c397dfe jbd2__journal_restart +EXPORT_SYMBOL vmlinux 0x0c45fc96 vfs_lstat +EXPORT_SYMBOL vmlinux 0x0c4cb5d1 vlan_dev_real_dev +EXPORT_SYMBOL vmlinux 0x0c58a8cd netdev_increment_features +EXPORT_SYMBOL vmlinux 0x0c6bc930 jbd2_journal_stop +EXPORT_SYMBOL vmlinux 0x0c6bdc3f vme_master_read +EXPORT_SYMBOL vmlinux 0x0c7579e0 xfrm_policy_walk +EXPORT_SYMBOL vmlinux 0x0c9699ef __sync_dirty_buffer +EXPORT_SYMBOL vmlinux 0x0c9fd9aa dquot_claim_space_nodirty +EXPORT_SYMBOL vmlinux 0x0ca09e47 sock_no_setsockopt +EXPORT_SYMBOL vmlinux 0x0ca0c882 twl6030_interrupt_mask +EXPORT_SYMBOL vmlinux 0x0cae232b utf16s_to_utf8s +EXPORT_SYMBOL vmlinux 0x0cb1dc70 blk_mq_stop_hw_queue +EXPORT_SYMBOL vmlinux 0x0cd57927 vio_register_device_node +EXPORT_SYMBOL vmlinux 0x0cf4e37b mmc_read_bkops_status +EXPORT_SYMBOL vmlinux 0x0d033267 twl6040_get_sysclk +EXPORT_SYMBOL vmlinux 0x0d10e2c1 block_truncate_page +EXPORT_SYMBOL vmlinux 0x0d4033ad __frontswap_load +EXPORT_SYMBOL vmlinux 0x0d4a5b9c scsi_command_normalize_sense +EXPORT_SYMBOL vmlinux 0x0d4d8b7d bio_endio +EXPORT_SYMBOL vmlinux 0x0d542439 __ipv6_addr_type +EXPORT_SYMBOL vmlinux 0x0d61eeee __bitmap_subset +EXPORT_SYMBOL vmlinux 0x0d6c963c copy_from_user +EXPORT_SYMBOL vmlinux 0x0d715d17 skb_checksum_setup +EXPORT_SYMBOL vmlinux 0x0da10ec3 security_sock_graft +EXPORT_SYMBOL vmlinux 0x0dc0ace0 idr_find_slowpath +EXPORT_SYMBOL vmlinux 0x0dc992f2 pcim_iomap_table +EXPORT_SYMBOL vmlinux 0x0dd06d9a cros_ec_check_result +EXPORT_SYMBOL vmlinux 0x0de26a61 unregister_filesystem +EXPORT_SYMBOL vmlinux 0x0dfc27f3 neigh_resolve_output +EXPORT_SYMBOL vmlinux 0x0e0280e5 __register_nls +EXPORT_SYMBOL vmlinux 0x0e088163 xfrm_state_lookup +EXPORT_SYMBOL vmlinux 0x0e211be0 input_mt_report_slot_state +EXPORT_SYMBOL vmlinux 0x0e6da44a set_normalized_timespec +EXPORT_SYMBOL vmlinux 0x0e7167ef simple_open +EXPORT_SYMBOL vmlinux 0x0e727b60 xfrm_input_register_afinfo +EXPORT_SYMBOL vmlinux 0x0e849e3e compat_mc_setsockopt +EXPORT_SYMBOL vmlinux 0x0e87600f qdisc_watchdog_cancel +EXPORT_SYMBOL vmlinux 0x0e8f30f6 _raw_write_lock_irq +EXPORT_SYMBOL vmlinux 0x0ebce778 pci_scan_bridge +EXPORT_SYMBOL vmlinux 0x0ec5babe vme_dma_free +EXPORT_SYMBOL vmlinux 0x0ee0a138 grab_cache_page_write_begin +EXPORT_SYMBOL vmlinux 0x0ee1444a dev_uc_init +EXPORT_SYMBOL vmlinux 0x0ee42d5a pci_request_regions_exclusive +EXPORT_SYMBOL vmlinux 0x0ef865d6 param_ops_ulong +EXPORT_SYMBOL vmlinux 0x0efcbb1b set_current_groups +EXPORT_SYMBOL vmlinux 0x0f1abc33 inc_zone_page_state +EXPORT_SYMBOL vmlinux 0x0f2699f0 get_phy_device +EXPORT_SYMBOL vmlinux 0x0f4c91ed ns_to_timespec +EXPORT_SYMBOL vmlinux 0x0f5faa7e wait_for_completion_io_timeout +EXPORT_SYMBOL vmlinux 0x0f6625bf nf_unregister_hook +EXPORT_SYMBOL vmlinux 0x0f6a3b5c string_get_size +EXPORT_SYMBOL vmlinux 0x0f6c05fb pci_add_new_bus +EXPORT_SYMBOL vmlinux 0x0f745746 vme_slot_num +EXPORT_SYMBOL vmlinux 0x0f7a6892 serial8250_do_set_termios +EXPORT_SYMBOL vmlinux 0x0f88d6d4 dev_remove_offload +EXPORT_SYMBOL vmlinux 0x0f91cdcd phy_connect_direct +EXPORT_SYMBOL vmlinux 0x0faef0ed __tasklet_schedule +EXPORT_SYMBOL vmlinux 0x0fb2f8a4 mktime64 +EXPORT_SYMBOL vmlinux 0x0ff2b602 slhc_compress +EXPORT_SYMBOL vmlinux 0x102a60c6 generic_write_checks +EXPORT_SYMBOL vmlinux 0x1054ae4e max8998_bulk_write +EXPORT_SYMBOL vmlinux 0x10645724 udp_lib_setsockopt +EXPORT_SYMBOL vmlinux 0x1067959a pm860x_reg_read +EXPORT_SYMBOL vmlinux 0x106a409c bio_phys_segments +EXPORT_SYMBOL vmlinux 0x1072a394 csum_partial_copy_from_user +EXPORT_SYMBOL vmlinux 0x107e5878 zlib_inflateEnd +EXPORT_SYMBOL vmlinux 0x108b55f3 skb_trim +EXPORT_SYMBOL vmlinux 0x10950ee1 radix_tree_tag_clear +EXPORT_SYMBOL vmlinux 0x10a865e9 get_user_pages +EXPORT_SYMBOL vmlinux 0x10aac037 pci_assign_resource +EXPORT_SYMBOL vmlinux 0x10ae0fba copy_from_iter_nocache +EXPORT_SYMBOL vmlinux 0x10b50109 skb_add_rx_frag +EXPORT_SYMBOL vmlinux 0x10bfc9d7 release_sock +EXPORT_SYMBOL vmlinux 0x10c73f28 irq_set_chip +EXPORT_SYMBOL vmlinux 0x10df4641 input_flush_device +EXPORT_SYMBOL vmlinux 0x10e608ac pci_bus_type +EXPORT_SYMBOL vmlinux 0x10ee20bb default_blu +EXPORT_SYMBOL vmlinux 0x11089ac7 _ctype +EXPORT_SYMBOL vmlinux 0x111e7cf0 follow_down_one +EXPORT_SYMBOL vmlinux 0x11257a57 __dquot_transfer +EXPORT_SYMBOL vmlinux 0x11297a8b inet_csk_init_xmit_timers +EXPORT_SYMBOL vmlinux 0x11459261 vio_enable_interrupts +EXPORT_SYMBOL vmlinux 0x114fc2eb __mod_zone_page_state +EXPORT_SYMBOL vmlinux 0x1158d06c mfd_cell_enable +EXPORT_SYMBOL vmlinux 0x1162cdf0 get_agp_version +EXPORT_SYMBOL vmlinux 0x1163f0a7 blk_max_low_pfn +EXPORT_SYMBOL vmlinux 0x117093be qdisc_class_hash_init +EXPORT_SYMBOL vmlinux 0x117298d8 max8998_read_reg +EXPORT_SYMBOL vmlinux 0x1182d83a cpuidle_disable +EXPORT_SYMBOL vmlinux 0x1183da97 bitmap_startwrite +EXPORT_SYMBOL vmlinux 0x118a5e56 blk_limits_io_min +EXPORT_SYMBOL vmlinux 0x11a044f6 mod_timer_pinned +EXPORT_SYMBOL vmlinux 0x11b4c114 tty_wait_until_sent +EXPORT_SYMBOL vmlinux 0x11c9c554 netpoll_send_udp +EXPORT_SYMBOL vmlinux 0x11f7ed4c hex_to_bin +EXPORT_SYMBOL vmlinux 0x11fecf40 tcp_rtx_synack +EXPORT_SYMBOL vmlinux 0x120b336a __rb_insert_augmented +EXPORT_SYMBOL vmlinux 0x120d67d4 unregister_memory_isolate_notifier +EXPORT_SYMBOL vmlinux 0x120fc6b1 kstrdup_const +EXPORT_SYMBOL vmlinux 0x1210a51e agp_collect_device_status +EXPORT_SYMBOL vmlinux 0x1211dc98 bio_clone_bioset +EXPORT_SYMBOL vmlinux 0x123f82f3 getrawmonotonic64 +EXPORT_SYMBOL vmlinux 0x1261dc10 xfrm_state_lookup_byspi +EXPORT_SYMBOL vmlinux 0x1271a86c dev_get_by_name_rcu +EXPORT_SYMBOL vmlinux 0x12791079 napi_gro_flush +EXPORT_SYMBOL vmlinux 0x127a5939 sched_autogroup_detach +EXPORT_SYMBOL vmlinux 0x127e1110 mmc_request_done +EXPORT_SYMBOL vmlinux 0x128e64a1 clear_inode +EXPORT_SYMBOL vmlinux 0x12a38747 usleep_range +EXPORT_SYMBOL vmlinux 0x12b8abe1 tty_set_operations +EXPORT_SYMBOL vmlinux 0x12c366e3 xfrm4_protocol_deregister +EXPORT_SYMBOL vmlinux 0x12cefcca blk_sync_queue +EXPORT_SYMBOL vmlinux 0x12dc2040 key_reject_and_link +EXPORT_SYMBOL vmlinux 0x12dfeb12 vprintk_emit +EXPORT_SYMBOL vmlinux 0x12e5ef0c rtas_set_power_level +EXPORT_SYMBOL vmlinux 0x13243d4b wl1251_get_platform_data +EXPORT_SYMBOL vmlinux 0x13307fde vsscanf +EXPORT_SYMBOL vmlinux 0x13330473 security_path_chmod +EXPORT_SYMBOL vmlinux 0x1344069d skb_append_datato_frags +EXPORT_SYMBOL vmlinux 0x13a73f73 rtnl_configure_link +EXPORT_SYMBOL vmlinux 0x13d0adf7 __kfifo_out +EXPORT_SYMBOL vmlinux 0x13ed3fbb jbd2_journal_ack_err +EXPORT_SYMBOL vmlinux 0x13f53da6 CMO_PageSize +EXPORT_SYMBOL vmlinux 0x14347167 ppc_md +EXPORT_SYMBOL vmlinux 0x1435dd53 mdiobus_write +EXPORT_SYMBOL vmlinux 0x145827e6 buffer_check_dirty_writeback +EXPORT_SYMBOL vmlinux 0x145d6603 key_payload_reserve +EXPORT_SYMBOL vmlinux 0x14859a8b do_splice_from +EXPORT_SYMBOL vmlinux 0x1487a0b2 pci_bus_read_config_word +EXPORT_SYMBOL vmlinux 0x1491985f register_framebuffer +EXPORT_SYMBOL vmlinux 0x149ed857 ab3100_event_unregister +EXPORT_SYMBOL vmlinux 0x14a14817 pSeries_enable_reloc_on_exc +EXPORT_SYMBOL vmlinux 0x14adbf21 __inet_stream_connect +EXPORT_SYMBOL vmlinux 0x14d5b3b5 ps2_cmd_aborted +EXPORT_SYMBOL vmlinux 0x14e23bd6 param_get_short +EXPORT_SYMBOL vmlinux 0x14e7b184 kill_fasync +EXPORT_SYMBOL vmlinux 0x15028eaa rwsem_down_read_failed +EXPORT_SYMBOL vmlinux 0x150d4a39 serio_open +EXPORT_SYMBOL vmlinux 0x151f922e tcp_md5_do_lookup +EXPORT_SYMBOL vmlinux 0x15268ca5 bioset_integrity_create +EXPORT_SYMBOL vmlinux 0x1526d1dd tty_port_tty_set +EXPORT_SYMBOL vmlinux 0x1530606d rtnetlink_put_metrics +EXPORT_SYMBOL vmlinux 0x1534ce12 nf_ip_checksum +EXPORT_SYMBOL vmlinux 0x154c0a10 sockfd_lookup +EXPORT_SYMBOL vmlinux 0x154c6338 dm_kcopyd_client_destroy +EXPORT_SYMBOL vmlinux 0x154e9c06 consume_skb +EXPORT_SYMBOL vmlinux 0x155e4818 bio_clone_fast +EXPORT_SYMBOL vmlinux 0x1578b265 jbd2_log_start_commit +EXPORT_SYMBOL vmlinux 0x157c5f9f dev_uc_sync +EXPORT_SYMBOL vmlinux 0x15bafe29 unregister_md_cluster_operations +EXPORT_SYMBOL vmlinux 0x15c274d0 __skb_get_hash +EXPORT_SYMBOL vmlinux 0x15d3fd60 prepare_to_wait_event +EXPORT_SYMBOL vmlinux 0x15f80eb5 inet6_del_offload +EXPORT_SYMBOL vmlinux 0x15fa03c4 sock_diag_put_filterinfo +EXPORT_SYMBOL vmlinux 0x160bd45c rtas_token +EXPORT_SYMBOL vmlinux 0x160ef3c9 nla_put +EXPORT_SYMBOL vmlinux 0x16102ffb textsearch_destroy +EXPORT_SYMBOL vmlinux 0x16155e4b genphy_resume +EXPORT_SYMBOL vmlinux 0x1658d22d pci_fixup_device +EXPORT_SYMBOL vmlinux 0x16763cb3 xfrm_prepare_input +EXPORT_SYMBOL vmlinux 0x167c5967 print_hex_dump +EXPORT_SYMBOL vmlinux 0x16808415 kset_unregister +EXPORT_SYMBOL vmlinux 0x168235e0 devm_request_resource +EXPORT_SYMBOL vmlinux 0x16a0c358 mach_pseries +EXPORT_SYMBOL vmlinux 0x16d153cb irq_to_desc +EXPORT_SYMBOL vmlinux 0x16d3f8ea ipv6_setsockopt +EXPORT_SYMBOL vmlinux 0x16da1797 bioset_create_nobvec +EXPORT_SYMBOL vmlinux 0x16eba284 phy_ethtool_get_wol +EXPORT_SYMBOL vmlinux 0x17075479 pci_disable_device +EXPORT_SYMBOL vmlinux 0x1719df7d crypto_sha1_finup +EXPORT_SYMBOL vmlinux 0x171bf8d4 sg_alloc_table_from_pages +EXPORT_SYMBOL vmlinux 0x173dfc9c pci_request_region +EXPORT_SYMBOL vmlinux 0x1743414f __debugger_fault_handler +EXPORT_SYMBOL vmlinux 0x17483d9b get_unmapped_area +EXPORT_SYMBOL vmlinux 0x175bf25a netdev_printk +EXPORT_SYMBOL vmlinux 0x175d78a2 dmam_pool_create +EXPORT_SYMBOL vmlinux 0x17601a68 unmap_mapping_range +EXPORT_SYMBOL vmlinux 0x1760912b blk_pre_runtime_suspend +EXPORT_SYMBOL vmlinux 0x17648396 dev_base_lock +EXPORT_SYMBOL vmlinux 0x177aa166 generic_file_fsync +EXPORT_SYMBOL vmlinux 0x1787215c __sk_mem_reclaim +EXPORT_SYMBOL vmlinux 0x1793f685 radix_tree_tagged +EXPORT_SYMBOL vmlinux 0x17a4e80e __inet_hash +EXPORT_SYMBOL vmlinux 0x17b1125d gen_kill_estimator +EXPORT_SYMBOL vmlinux 0x17d8f221 nf_nat_decode_session_hook +EXPORT_SYMBOL vmlinux 0x17e28473 fsl_upm_run_pattern +EXPORT_SYMBOL vmlinux 0x17ef0b51 i2c_smbus_write_byte +EXPORT_SYMBOL vmlinux 0x17f341a0 i8042_lock_chip +EXPORT_SYMBOL vmlinux 0x180c033b path_get +EXPORT_SYMBOL vmlinux 0x1813291f jbd2_journal_revoke +EXPORT_SYMBOL vmlinux 0x182721f0 pm_vt_switch_unregister +EXPORT_SYMBOL vmlinux 0x1829d188 wait_woken +EXPORT_SYMBOL vmlinux 0x183fa88b mempool_alloc_slab +EXPORT_SYMBOL vmlinux 0x184b82fb mmc_vddrange_to_ocrmask +EXPORT_SYMBOL vmlinux 0x1857aa39 proc_dointvec +EXPORT_SYMBOL vmlinux 0x185defa3 try_to_writeback_inodes_sb_nr +EXPORT_SYMBOL vmlinux 0x188a3dfb timespec_trunc +EXPORT_SYMBOL vmlinux 0x18957017 netlink_rcv_skb +EXPORT_SYMBOL vmlinux 0x189868d7 get_random_bytes_arch +EXPORT_SYMBOL vmlinux 0x189a40e4 kernel_getsockopt +EXPORT_SYMBOL vmlinux 0x193c1421 __dec_zone_page_state +EXPORT_SYMBOL vmlinux 0x1950fec8 mdiobus_unregister +EXPORT_SYMBOL vmlinux 0x19664b72 of_find_all_nodes +EXPORT_SYMBOL vmlinux 0x19722cb7 pci_bus_read_config_dword +EXPORT_SYMBOL vmlinux 0x197840ba mmc_of_parse_voltage +EXPORT_SYMBOL vmlinux 0x199007ea stop_tty +EXPORT_SYMBOL vmlinux 0x199ec4fb arch_spin_unlock_wait +EXPORT_SYMBOL vmlinux 0x199ed0cd net_disable_timestamp +EXPORT_SYMBOL vmlinux 0x19aac560 udp_seq_open +EXPORT_SYMBOL vmlinux 0x19acd1bc scsi_device_get +EXPORT_SYMBOL vmlinux 0x19ba1dc7 fence_enable_sw_signaling +EXPORT_SYMBOL vmlinux 0x19bd383b security_secmark_refcount_dec +EXPORT_SYMBOL vmlinux 0x19d15523 mutex_lock_killable +EXPORT_SYMBOL vmlinux 0x19d268c1 i2c_verify_adapter +EXPORT_SYMBOL vmlinux 0x19f3dce4 netdev_has_upper_dev +EXPORT_SYMBOL vmlinux 0x1a07aa13 scsi_remove_device +EXPORT_SYMBOL vmlinux 0x1a26a794 md_finish_reshape +EXPORT_SYMBOL vmlinux 0x1a314cad write_cache_pages +EXPORT_SYMBOL vmlinux 0x1a4af9f1 pcim_iomap_regions_request_all +EXPORT_SYMBOL vmlinux 0x1a526aa1 iov_iter_zero +EXPORT_SYMBOL vmlinux 0x1a5d393c skb_split +EXPORT_SYMBOL vmlinux 0x1a67109f of_n_size_cells +EXPORT_SYMBOL vmlinux 0x1a814f03 dput +EXPORT_SYMBOL vmlinux 0x1a912318 mmc_gpiod_request_cd_irq +EXPORT_SYMBOL vmlinux 0x1aa431cd tcp_v4_send_check +EXPORT_SYMBOL vmlinux 0x1aae3703 get_cached_acl +EXPORT_SYMBOL vmlinux 0x1ac329b8 __tty_alloc_driver +EXPORT_SYMBOL vmlinux 0x1ac5d3cb strcspn +EXPORT_SYMBOL vmlinux 0x1acd261e i2c_put_adapter +EXPORT_SYMBOL vmlinux 0x1ae91ae3 pci_restore_state +EXPORT_SYMBOL vmlinux 0x1aed58fc md_cluster_ops +EXPORT_SYMBOL vmlinux 0x1af62a99 panic_notifier_list +EXPORT_SYMBOL vmlinux 0x1b015d25 bitmap_parselist +EXPORT_SYMBOL vmlinux 0x1b06a209 blk_set_default_limits +EXPORT_SYMBOL vmlinux 0x1b07be79 sk_stream_wait_memory +EXPORT_SYMBOL vmlinux 0x1b09c34a wait_iff_congested +EXPORT_SYMBOL vmlinux 0x1b0d04e4 dmam_free_coherent +EXPORT_SYMBOL vmlinux 0x1b11949e bio_chain +EXPORT_SYMBOL vmlinux 0x1b12796b serio_rescan +EXPORT_SYMBOL vmlinux 0x1b132009 rename_lock +EXPORT_SYMBOL vmlinux 0x1b1aa866 pci_bus_read_config_byte +EXPORT_SYMBOL vmlinux 0x1b1e1088 sg_nents +EXPORT_SYMBOL vmlinux 0x1b27b43f t10_pi_type3_ip +EXPORT_SYMBOL vmlinux 0x1b625d33 enable_kernel_vsx +EXPORT_SYMBOL vmlinux 0x1b6314fd in_aton +EXPORT_SYMBOL vmlinux 0x1b6d49be jbd2_journal_free_reserved +EXPORT_SYMBOL vmlinux 0x1b804c9d fifo_set_limit +EXPORT_SYMBOL vmlinux 0x1b8233e3 mipi_dsi_generic_write +EXPORT_SYMBOL vmlinux 0x1b82fefa md_unplug +EXPORT_SYMBOL vmlinux 0x1b8b95ad i8042_unlock_chip +EXPORT_SYMBOL vmlinux 0x1b8f9828 mpage_readpages +EXPORT_SYMBOL vmlinux 0x1ba3d254 of_get_child_by_name +EXPORT_SYMBOL vmlinux 0x1bacc89e mipi_dsi_detach +EXPORT_SYMBOL vmlinux 0x1bb31047 add_timer +EXPORT_SYMBOL vmlinux 0x1bb96c3c __kernel_write +EXPORT_SYMBOL vmlinux 0x1bc4ff03 tty_termios_hw_change +EXPORT_SYMBOL vmlinux 0x1bceec0f generic_setlease +EXPORT_SYMBOL vmlinux 0x1bf62318 inet_sendpage +EXPORT_SYMBOL vmlinux 0x1bfec830 __iounmap_at +EXPORT_SYMBOL vmlinux 0x1c38f0e3 scsi_rescan_device +EXPORT_SYMBOL vmlinux 0x1c3bc6ce blk_put_queue +EXPORT_SYMBOL vmlinux 0x1c3e02e4 memcmp +EXPORT_SYMBOL vmlinux 0x1c4c470a inet_csk_prepare_forced_close +EXPORT_SYMBOL vmlinux 0x1ca47827 scsi_change_queue_depth +EXPORT_SYMBOL vmlinux 0x1ce1f268 devm_free_irq +EXPORT_SYMBOL vmlinux 0x1cee558d compat_mc_getsockopt +EXPORT_SYMBOL vmlinux 0x1d1056e5 crc32_be +EXPORT_SYMBOL vmlinux 0x1d1eef60 elv_rb_add +EXPORT_SYMBOL vmlinux 0x1d21ecdc __skb_flow_get_ports +EXPORT_SYMBOL vmlinux 0x1d5852e6 dev_get_stats +EXPORT_SYMBOL vmlinux 0x1d6e53db touchscreen_parse_of_params +EXPORT_SYMBOL vmlinux 0x1d832e9c md_wakeup_thread +EXPORT_SYMBOL vmlinux 0x1d90d888 blk_queue_start_tag +EXPORT_SYMBOL vmlinux 0x1d9e24b0 sock_create_kern +EXPORT_SYMBOL vmlinux 0x1da78e0c release_pages +EXPORT_SYMBOL vmlinux 0x1daee28a percpu_counter_destroy +EXPORT_SYMBOL vmlinux 0x1dbc4d0c proc_dointvec_jiffies +EXPORT_SYMBOL vmlinux 0x1dc36131 fb_destroy_modedb +EXPORT_SYMBOL vmlinux 0x1dc8ed84 mdio_bus_type +EXPORT_SYMBOL vmlinux 0x1dcc9569 nla_append +EXPORT_SYMBOL vmlinux 0x1dd571e6 fb_copy_cmap +EXPORT_SYMBOL vmlinux 0x1dda746d mmc_hw_reset +EXPORT_SYMBOL vmlinux 0x1de7c88e blk_rq_init +EXPORT_SYMBOL vmlinux 0x1df5e142 __dev_get_by_name +EXPORT_SYMBOL vmlinux 0x1e26be3b get_anon_bdev +EXPORT_SYMBOL vmlinux 0x1e3cf59c iput +EXPORT_SYMBOL vmlinux 0x1e3f5ce0 inet6_unregister_icmp_sender +EXPORT_SYMBOL vmlinux 0x1e5b3a76 ip_getsockopt +EXPORT_SYMBOL vmlinux 0x1e68cbde pci_bus_get +EXPORT_SYMBOL vmlinux 0x1e6d26a8 strstr +EXPORT_SYMBOL vmlinux 0x1e7390c5 key_unlink +EXPORT_SYMBOL vmlinux 0x1e782e25 blk_start_request +EXPORT_SYMBOL vmlinux 0x1e7e6d1c jbd2_journal_get_undo_access +EXPORT_SYMBOL vmlinux 0x1e87fe79 pci_lost_interrupt +EXPORT_SYMBOL vmlinux 0x1e9e57bb __scsi_alloc_queue +EXPORT_SYMBOL vmlinux 0x1e9edfb7 seq_hlist_start_head_rcu +EXPORT_SYMBOL vmlinux 0x1ec169b0 flock_lock_inode_wait +EXPORT_SYMBOL vmlinux 0x1ec63432 blk_stop_queue +EXPORT_SYMBOL vmlinux 0x1ed598e7 agp_generic_alloc_user +EXPORT_SYMBOL vmlinux 0x1ee275a5 tcp_v4_conn_request +EXPORT_SYMBOL vmlinux 0x1eef8744 set_device_ro +EXPORT_SYMBOL vmlinux 0x1ef47921 bio_get_nr_vecs +EXPORT_SYMBOL vmlinux 0x1ef89503 dev_remove_pack +EXPORT_SYMBOL vmlinux 0x1f08c153 dev_alert +EXPORT_SYMBOL vmlinux 0x1f1f9728 inode_sub_rsv_space +EXPORT_SYMBOL vmlinux 0x1f319058 __napi_complete +EXPORT_SYMBOL vmlinux 0x1f3de75b pci_disable_msix +EXPORT_SYMBOL vmlinux 0x1f56e6a4 ___pskb_trim +EXPORT_SYMBOL vmlinux 0x1f5f194a freeze_bdev +EXPORT_SYMBOL vmlinux 0x1f6ce67a sg_pcopy_to_buffer +EXPORT_SYMBOL vmlinux 0x1f6d5f30 memory_cgrp_subsys +EXPORT_SYMBOL vmlinux 0x1f6e120e twl6040_reg_read +EXPORT_SYMBOL vmlinux 0x1fad27dd scsi_target_resume +EXPORT_SYMBOL vmlinux 0x1fbd16da ip_tos2prio +EXPORT_SYMBOL vmlinux 0x1fd07fff kdb_grepping_flag +EXPORT_SYMBOL vmlinux 0x1fd9a6b1 __mark_inode_dirty +EXPORT_SYMBOL vmlinux 0x1fe912f1 netdev_alloc_frag +EXPORT_SYMBOL vmlinux 0x1fe9f800 unregister_cpu_notifier +EXPORT_SYMBOL vmlinux 0x1fedf0f4 __request_region +EXPORT_SYMBOL vmlinux 0x20000329 simple_strtoul +EXPORT_SYMBOL vmlinux 0x200b2041 in6addr_any +EXPORT_SYMBOL vmlinux 0x201224d1 sock_efree +EXPORT_SYMBOL vmlinux 0x201e2025 eth_prepare_mac_addr_change +EXPORT_SYMBOL vmlinux 0x2028b313 sock_setsockopt +EXPORT_SYMBOL vmlinux 0x204c19f5 tcp_alloc_md5sig_pool +EXPORT_SYMBOL vmlinux 0x205b296b serio_close +EXPORT_SYMBOL vmlinux 0x2072ee9b request_threaded_irq +EXPORT_SYMBOL vmlinux 0x209aee9a d_hash_and_lookup +EXPORT_SYMBOL vmlinux 0x20a789ac irq_set_chip_data +EXPORT_SYMBOL vmlinux 0x20afe47a vfs_iter_write +EXPORT_SYMBOL vmlinux 0x20b3d919 blk_put_request +EXPORT_SYMBOL vmlinux 0x20c55ae0 sscanf +EXPORT_SYMBOL vmlinux 0x20d7708c tcp_init_xmit_timers +EXPORT_SYMBOL vmlinux 0x20df5a3d vme_dma_pci_attribute +EXPORT_SYMBOL vmlinux 0x20eadeb6 ip_compute_csum +EXPORT_SYMBOL vmlinux 0x20f4f66c nonseekable_open +EXPORT_SYMBOL vmlinux 0x20f6e301 elevator_init +EXPORT_SYMBOL vmlinux 0x20fc2def lookup_bdev +EXPORT_SYMBOL vmlinux 0x20fdec9d mfd_remove_devices +EXPORT_SYMBOL vmlinux 0x21037b45 __dynamic_netdev_dbg +EXPORT_SYMBOL vmlinux 0x2114189e reservation_object_add_shared_fence +EXPORT_SYMBOL vmlinux 0x211827d4 inet_add_protocol +EXPORT_SYMBOL vmlinux 0x211bc116 console_start +EXPORT_SYMBOL vmlinux 0x211ddbdd ps2_sendbyte +EXPORT_SYMBOL vmlinux 0x211f68f1 getnstimeofday64 +EXPORT_SYMBOL vmlinux 0x21261ab2 dm_kcopyd_zero +EXPORT_SYMBOL vmlinux 0x217aa5f1 vme_slave_request +EXPORT_SYMBOL vmlinux 0x21873acd fs_bio_set +EXPORT_SYMBOL vmlinux 0x21bddef3 dquot_operations +EXPORT_SYMBOL vmlinux 0x21d77ed4 dm_register_target +EXPORT_SYMBOL vmlinux 0x21db8715 dev_mc_add_global +EXPORT_SYMBOL vmlinux 0x21df74d9 bitmap_set +EXPORT_SYMBOL vmlinux 0x21f19335 fence_remove_callback +EXPORT_SYMBOL vmlinux 0x21f7571a md_integrity_add_rdev +EXPORT_SYMBOL vmlinux 0x22289d57 scsi_register +EXPORT_SYMBOL vmlinux 0x222e7ce2 sysfs_streq +EXPORT_SYMBOL vmlinux 0x2240bdb8 nvdimm_bus_lock +EXPORT_SYMBOL vmlinux 0x22460e6d tty_driver_kref_put +EXPORT_SYMBOL vmlinux 0x2276db98 kstrtoint +EXPORT_SYMBOL vmlinux 0x2295bd01 gnet_stats_start_copy_compat +EXPORT_SYMBOL vmlinux 0x22a15a5b sk_reset_timer +EXPORT_SYMBOL vmlinux 0x22a36aae set_page_dirty_lock +EXPORT_SYMBOL vmlinux 0x22b325d5 kd_mksound +EXPORT_SYMBOL vmlinux 0x22b8b569 elevator_change +EXPORT_SYMBOL vmlinux 0x22c562e1 inet_listen +EXPORT_SYMBOL vmlinux 0x22cb8834 tty_flip_buffer_push +EXPORT_SYMBOL vmlinux 0x22e02168 blkdev_issue_zeroout +EXPORT_SYMBOL vmlinux 0x22f5876a in6_dev_finish_destroy +EXPORT_SYMBOL vmlinux 0x2306f5e9 of_find_backlight_by_node +EXPORT_SYMBOL vmlinux 0x231d4001 fb_edid_add_monspecs +EXPORT_SYMBOL vmlinux 0x23236218 blk_mq_unique_tag +EXPORT_SYMBOL vmlinux 0x232d0a2e replace_mount_options +EXPORT_SYMBOL vmlinux 0x2331ee51 blk_recount_segments +EXPORT_SYMBOL vmlinux 0x233917d1 mac_vmode_to_var +EXPORT_SYMBOL vmlinux 0x234a245f vme_dma_request +EXPORT_SYMBOL vmlinux 0x235e90f3 __wake_up_bit +EXPORT_SYMBOL vmlinux 0x2360b88c of_get_address +EXPORT_SYMBOL vmlinux 0x236de575 filemap_write_and_wait_range +EXPORT_SYMBOL vmlinux 0x23727957 seq_escape +EXPORT_SYMBOL vmlinux 0x23785948 pci_map_rom +EXPORT_SYMBOL vmlinux 0x23905e8f blk_mq_can_queue +EXPORT_SYMBOL vmlinux 0x23a36500 blk_mq_map_queue +EXPORT_SYMBOL vmlinux 0x23a574fd security_secmark_relabel_packet +EXPORT_SYMBOL vmlinux 0x23a65d10 tcp_md5_hash_key +EXPORT_SYMBOL vmlinux 0x23b9d6e2 mangle_path +EXPORT_SYMBOL vmlinux 0x23be9104 input_grab_device +EXPORT_SYMBOL vmlinux 0x23beb527 uart_register_driver +EXPORT_SYMBOL vmlinux 0x23c8f257 slhc_uncompress +EXPORT_SYMBOL vmlinux 0x23c9891c kstrtoint_from_user +EXPORT_SYMBOL vmlinux 0x23ce8b56 unlink_framebuffer +EXPORT_SYMBOL vmlinux 0x23cf97db vm_event_states +EXPORT_SYMBOL vmlinux 0x23de622b set_create_files_as +EXPORT_SYMBOL vmlinux 0x23f2243d mempool_free +EXPORT_SYMBOL vmlinux 0x23fd3028 vmalloc_node +EXPORT_SYMBOL vmlinux 0x2401dad9 scsi_execute +EXPORT_SYMBOL vmlinux 0x24212d86 __frontswap_invalidate_page +EXPORT_SYMBOL vmlinux 0x24232954 d_set_fallthru +EXPORT_SYMBOL vmlinux 0x24428be5 strncpy_from_user +EXPORT_SYMBOL vmlinux 0x244a13f2 jbd2_journal_try_to_free_buffers +EXPORT_SYMBOL vmlinux 0x2459bbcc console_set_on_cmdline +EXPORT_SYMBOL vmlinux 0x246c82ed km_query +EXPORT_SYMBOL vmlinux 0x247bd754 vfs_whiteout +EXPORT_SYMBOL vmlinux 0x2482e688 vsprintf +EXPORT_SYMBOL vmlinux 0x2484a982 elevator_exit +EXPORT_SYMBOL vmlinux 0x2484adc3 __kfifo_to_user_r +EXPORT_SYMBOL vmlinux 0x24855cba __percpu_counter_compare +EXPORT_SYMBOL vmlinux 0x24b33313 posix_lock_file +EXPORT_SYMBOL vmlinux 0x24b3cc4f seq_dentry +EXPORT_SYMBOL vmlinux 0x24cbb112 mmc_detect_change +EXPORT_SYMBOL vmlinux 0x24d23284 lock_rename +EXPORT_SYMBOL vmlinux 0x24d6b4a6 cur_cpu_spec +EXPORT_SYMBOL vmlinux 0x24f00380 ida_init +EXPORT_SYMBOL vmlinux 0x24fdac79 wake_bit_function +EXPORT_SYMBOL vmlinux 0x250f307d sk_stream_error +EXPORT_SYMBOL vmlinux 0x251632af netdev_boot_setup_check +EXPORT_SYMBOL vmlinux 0x251850b3 inet_reqsk_alloc +EXPORT_SYMBOL vmlinux 0x25277497 rfkill_register +EXPORT_SYMBOL vmlinux 0x254a54b3 input_mt_init_slots +EXPORT_SYMBOL vmlinux 0x256748c0 __init_rwsem +EXPORT_SYMBOL vmlinux 0x2570a138 reservation_seqcount_string +EXPORT_SYMBOL vmlinux 0x25784cf8 proc_mkdir_mode +EXPORT_SYMBOL vmlinux 0x25820c64 fs_overflowuid +EXPORT_SYMBOL vmlinux 0x258dae98 simple_transaction_read +EXPORT_SYMBOL vmlinux 0x25943706 gnet_stats_finish_copy +EXPORT_SYMBOL vmlinux 0x2598fae2 neigh_seq_stop +EXPORT_SYMBOL vmlinux 0x25ad9738 register_shrinker +EXPORT_SYMBOL vmlinux 0x25bd81d2 skb_kill_datagram +EXPORT_SYMBOL vmlinux 0x25c0636e max8998_bulk_read +EXPORT_SYMBOL vmlinux 0x25c64b32 blk_queue_stack_limits +EXPORT_SYMBOL vmlinux 0x25dda20e pci_enable_device +EXPORT_SYMBOL vmlinux 0x25e8ed29 sg_nents_for_len +EXPORT_SYMBOL vmlinux 0x25e9d4bd resource_list_free +EXPORT_SYMBOL vmlinux 0x25ef4fa7 unlock_page +EXPORT_SYMBOL vmlinux 0x261dd1e1 mmc_get_card +EXPORT_SYMBOL vmlinux 0x2625577f __vlan_find_dev_deep_rcu +EXPORT_SYMBOL vmlinux 0x26335594 blk_queue_free_tags +EXPORT_SYMBOL vmlinux 0x263beb75 ecryptfs_get_versions +EXPORT_SYMBOL vmlinux 0x26477c07 __vmalloc +EXPORT_SYMBOL vmlinux 0x2650d835 sysctl_ip_early_demux +EXPORT_SYMBOL vmlinux 0x265c0965 scsi_device_lookup +EXPORT_SYMBOL vmlinux 0x2665d53a key_create_or_update +EXPORT_SYMBOL vmlinux 0x268f73ee __scm_send +EXPORT_SYMBOL vmlinux 0x26af5675 pci_bus_write_config_word +EXPORT_SYMBOL vmlinux 0x26bc4687 nf_register_sockopt +EXPORT_SYMBOL vmlinux 0x26be4535 mmc_align_data_size +EXPORT_SYMBOL vmlinux 0x26d05726 sock_wake_async +EXPORT_SYMBOL vmlinux 0x26dacbda forget_all_cached_acls +EXPORT_SYMBOL vmlinux 0x26e298e0 unregister_memory_notifier +EXPORT_SYMBOL vmlinux 0x26e76fb8 sysctl_udp_wmem_min +EXPORT_SYMBOL vmlinux 0x26f2eb57 of_get_property +EXPORT_SYMBOL vmlinux 0x2702d481 simple_transaction_set +EXPORT_SYMBOL vmlinux 0x27116670 dev_get_by_name +EXPORT_SYMBOL vmlinux 0x274d08dc __kfifo_dma_out_prepare +EXPORT_SYMBOL vmlinux 0x27646df3 start_thread +EXPORT_SYMBOL vmlinux 0x27714263 blk_dump_rq_flags +EXPORT_SYMBOL vmlinux 0x2771d7ff ida_get_new_above +EXPORT_SYMBOL vmlinux 0x277a5a94 gen_replace_estimator +EXPORT_SYMBOL vmlinux 0x27864d57 memparse +EXPORT_SYMBOL vmlinux 0x27866435 security_xfrm_state_alloc +EXPORT_SYMBOL vmlinux 0x279bae0f flow_get_u32_dst +EXPORT_SYMBOL vmlinux 0x279f0ce1 writeback_inodes_sb_nr +EXPORT_SYMBOL vmlinux 0x27bbf221 disable_irq_nosync +EXPORT_SYMBOL vmlinux 0x27bda1ff cpu_rmap_update +EXPORT_SYMBOL vmlinux 0x27cebc25 ibmebus_unregister_driver +EXPORT_SYMBOL vmlinux 0x27d7c781 dst_discard_sk +EXPORT_SYMBOL vmlinux 0x27db63c2 ip_mc_join_group +EXPORT_SYMBOL vmlinux 0x27e1a049 printk +EXPORT_SYMBOL vmlinux 0x27e95efa vfs_rmdir +EXPORT_SYMBOL vmlinux 0x27fa69c5 nf_setsockopt +EXPORT_SYMBOL vmlinux 0x280b3219 of_match_device +EXPORT_SYMBOL vmlinux 0x281823c5 __kfifo_out_peek +EXPORT_SYMBOL vmlinux 0x28318305 snprintf +EXPORT_SYMBOL vmlinux 0x2839e03d cdev_init +EXPORT_SYMBOL vmlinux 0x28473473 mpage_writepage +EXPORT_SYMBOL vmlinux 0x2848853f devm_ioremap_wc +EXPORT_SYMBOL vmlinux 0x2854afa7 pci_set_master +EXPORT_SYMBOL vmlinux 0x289c7542 dev_getbyhwaddr_rcu +EXPORT_SYMBOL vmlinux 0x289db3ee idr_remove +EXPORT_SYMBOL vmlinux 0x28a2b29f radix_tree_range_tag_if_tagged +EXPORT_SYMBOL vmlinux 0x28a2ed02 scsi_build_sense_buffer +EXPORT_SYMBOL vmlinux 0x28a7beba __percpu_counter_init +EXPORT_SYMBOL vmlinux 0x28abfe6e scsi_kmap_atomic_sg +EXPORT_SYMBOL vmlinux 0x28d6430b __mmc_claim_host +EXPORT_SYMBOL vmlinux 0x292606fa skb_vlan_untag +EXPORT_SYMBOL vmlinux 0x29537c9e alloc_chrdev_region +EXPORT_SYMBOL vmlinux 0x2963c6a9 pcim_iounmap_regions +EXPORT_SYMBOL vmlinux 0x2969f001 uart_add_one_port +EXPORT_SYMBOL vmlinux 0x296e8add genlmsg_multicast_allns +EXPORT_SYMBOL vmlinux 0x2997fdbe tty_vhangup +EXPORT_SYMBOL vmlinux 0x29a780f5 pci_write_vpd +EXPORT_SYMBOL vmlinux 0x29bf7596 pci_choose_state +EXPORT_SYMBOL vmlinux 0x29edd8c3 rtas_online_cpus_mask +EXPORT_SYMBOL vmlinux 0x2a12d9a7 srp_reconnect_rport +EXPORT_SYMBOL vmlinux 0x2a188128 input_mt_sync_frame +EXPORT_SYMBOL vmlinux 0x2a199df4 xfrm_stateonly_find +EXPORT_SYMBOL vmlinux 0x2a1fa893 mmc_wait_for_cmd +EXPORT_SYMBOL vmlinux 0x2a2a23fe scsi_scan_host +EXPORT_SYMBOL vmlinux 0x2a303d4d check_signature +EXPORT_SYMBOL vmlinux 0x2a37d074 dma_pool_free +EXPORT_SYMBOL vmlinux 0x2a388907 __set_page_dirty_buffers +EXPORT_SYMBOL vmlinux 0x2a3b733b key_alloc +EXPORT_SYMBOL vmlinux 0x2a62cf99 inet_sk_rx_dst_set +EXPORT_SYMBOL vmlinux 0x2a7056f9 d_prune_aliases +EXPORT_SYMBOL vmlinux 0x2a77620d block_is_partially_uptodate +EXPORT_SYMBOL vmlinux 0x2a84dde9 kmem_cache_alloc_node_trace +EXPORT_SYMBOL vmlinux 0x2a924555 ppp_register_channel +EXPORT_SYMBOL vmlinux 0x2aad35de mb_cache_destroy +EXPORT_SYMBOL vmlinux 0x2ab70f21 xfrm_user_policy +EXPORT_SYMBOL vmlinux 0x2acf0feb vfs_fstat +EXPORT_SYMBOL vmlinux 0x2ae3e5e0 km_policy_expired +EXPORT_SYMBOL vmlinux 0x2ae9703a fbcon_set_tileops +EXPORT_SYMBOL vmlinux 0x2aea0489 __genl_register_family +EXPORT_SYMBOL vmlinux 0x2afff724 inet_add_offload +EXPORT_SYMBOL vmlinux 0x2b0ba2b0 scsi_sense_desc_find +EXPORT_SYMBOL vmlinux 0x2b1ccf3f scsi_register_driver +EXPORT_SYMBOL vmlinux 0x2b2ce78b kstrtos8 +EXPORT_SYMBOL vmlinux 0x2b438fb3 pci_find_parent_resource +EXPORT_SYMBOL vmlinux 0x2b4991ec xmon +EXPORT_SYMBOL vmlinux 0x2b532a3a agp_backend_acquire +EXPORT_SYMBOL vmlinux 0x2b9418b3 unlock_new_inode +EXPORT_SYMBOL vmlinux 0x2b9da7a4 genl_lock +EXPORT_SYMBOL vmlinux 0x2ba693e6 wireless_send_event +EXPORT_SYMBOL vmlinux 0x2ba707a8 sysctl_tcp_low_latency +EXPORT_SYMBOL vmlinux 0x2bb12955 tso_build_data +EXPORT_SYMBOL vmlinux 0x2bc344f9 ip_check_defrag +EXPORT_SYMBOL vmlinux 0x2bc59985 kernel_setsockopt +EXPORT_SYMBOL vmlinux 0x2bc79eed tcp_poll +EXPORT_SYMBOL vmlinux 0x2bcc71ea mpage_readpage +EXPORT_SYMBOL vmlinux 0x2bd4cb47 kernel_accept +EXPORT_SYMBOL vmlinux 0x2beab599 udplite_prot +EXPORT_SYMBOL vmlinux 0x2bf31da6 blk_get_request +EXPORT_SYMBOL vmlinux 0x2c080ee9 blk_init_queue_node +EXPORT_SYMBOL vmlinux 0x2c1cb74a jbd2_journal_update_sb_errno +EXPORT_SYMBOL vmlinux 0x2c256e1f input_scancode_to_scalar +EXPORT_SYMBOL vmlinux 0x2c376b2b filemap_flush +EXPORT_SYMBOL vmlinux 0x2c41bbc6 vfs_getattr +EXPORT_SYMBOL vmlinux 0x2c7b1fca down_timeout +EXPORT_SYMBOL vmlinux 0x2c900d91 cpufreq_put_global_kobject +EXPORT_SYMBOL vmlinux 0x2c91b95a __netdev_alloc_skb +EXPORT_SYMBOL vmlinux 0x2ccf0a27 blk_mq_free_tag_set +EXPORT_SYMBOL vmlinux 0x2cdc5627 max8925_set_bits +EXPORT_SYMBOL vmlinux 0x2ce91160 tcf_em_tree_validate +EXPORT_SYMBOL vmlinux 0x2ce9e01f poll_initwait +EXPORT_SYMBOL vmlinux 0x2cf57211 dentry_path_raw +EXPORT_SYMBOL vmlinux 0x2cf73cb7 kstrtoll_from_user +EXPORT_SYMBOL vmlinux 0x2d0372ed dquot_set_dqinfo +EXPORT_SYMBOL vmlinux 0x2d140a58 genl_unlock +EXPORT_SYMBOL vmlinux 0x2d172844 tty_unregister_device +EXPORT_SYMBOL vmlinux 0x2d30596c from_kqid_munged +EXPORT_SYMBOL vmlinux 0x2d305dbb sock_kzfree_s +EXPORT_SYMBOL vmlinux 0x2d32453a phy_ethtool_sset +EXPORT_SYMBOL vmlinux 0x2d3385d3 system_wq +EXPORT_SYMBOL vmlinux 0x2d4dac10 param_get_string +EXPORT_SYMBOL vmlinux 0x2d658be6 tty_chars_in_buffer +EXPORT_SYMBOL vmlinux 0x2d6e0807 sk_stream_write_space +EXPORT_SYMBOL vmlinux 0x2d722ab8 __netif_schedule +EXPORT_SYMBOL vmlinux 0x2db1e0c6 dql_init +EXPORT_SYMBOL vmlinux 0x2dcaac45 jbd2_journal_extend +EXPORT_SYMBOL vmlinux 0x2dcdbb36 dev_mc_sync_multiple +EXPORT_SYMBOL vmlinux 0x2de30489 of_get_next_child +EXPORT_SYMBOL vmlinux 0x2deda4a1 security_sk_classify_flow +EXPORT_SYMBOL vmlinux 0x2df1a0a2 key_revoke +EXPORT_SYMBOL vmlinux 0x2dfa2895 ip_mc_inc_group +EXPORT_SYMBOL vmlinux 0x2e0d2f7f queue_work_on +EXPORT_SYMBOL vmlinux 0x2e12a93b ibmebus_request_irq +EXPORT_SYMBOL vmlinux 0x2e1951c0 kobject_put +EXPORT_SYMBOL vmlinux 0x2e2b40d2 strncat +EXPORT_SYMBOL vmlinux 0x2e2bc959 vme_irq_free +EXPORT_SYMBOL vmlinux 0x2e2ce9e0 sysctl_tcp_syncookies +EXPORT_SYMBOL vmlinux 0x2e3b6dc9 filp_open +EXPORT_SYMBOL vmlinux 0x2e8550f4 pci_bus_size_bridges +EXPORT_SYMBOL vmlinux 0x2ef06736 trace_print_flags_seq +EXPORT_SYMBOL vmlinux 0x2ef63ad6 scsi_dev_info_list_del_keyed +EXPORT_SYMBOL vmlinux 0x2f03fc4b security_secmark_refcount_inc +EXPORT_SYMBOL vmlinux 0x2f064b55 allocate_resource +EXPORT_SYMBOL vmlinux 0x2f206a3c bio_split +EXPORT_SYMBOL vmlinux 0x2f287f0d copy_to_user +EXPORT_SYMBOL vmlinux 0x2f3d752d fb_get_buffer_offset +EXPORT_SYMBOL vmlinux 0x2f6f0c29 rps_may_expire_flow +EXPORT_SYMBOL vmlinux 0x2f749ea7 max8998_write_reg +EXPORT_SYMBOL vmlinux 0x2f7f6fa8 key_validate +EXPORT_SYMBOL vmlinux 0x2f874f96 __devm_gpiod_get_optional +EXPORT_SYMBOL vmlinux 0x2faa3f3c inet6_del_protocol +EXPORT_SYMBOL vmlinux 0x2fae96de rtas_data_buf_lock +EXPORT_SYMBOL vmlinux 0x2fb6de5d add_device_randomness +EXPORT_SYMBOL vmlinux 0x2fc3b304 __alloc_skb +EXPORT_SYMBOL vmlinux 0x2fcf4765 security_inode_init_security +EXPORT_SYMBOL vmlinux 0x2fd78f58 devm_request_any_context_irq +EXPORT_SYMBOL vmlinux 0x2fe252cc unregister_inet6addr_notifier +EXPORT_SYMBOL vmlinux 0x2fe99366 dentry_needs_remove_privs +EXPORT_SYMBOL vmlinux 0x301499da seq_lseek +EXPORT_SYMBOL vmlinux 0x30226ddf agp_device_command +EXPORT_SYMBOL vmlinux 0x303041c6 udp_flow_hashrnd +EXPORT_SYMBOL vmlinux 0x30354085 inode_dio_wait +EXPORT_SYMBOL vmlinux 0x304ad5a4 napi_gro_receive +EXPORT_SYMBOL vmlinux 0x30523f19 invalidate_inode_buffers +EXPORT_SYMBOL vmlinux 0x30661bec sched_autogroup_create_attach +EXPORT_SYMBOL vmlinux 0x30661cf7 flush_icache_user_range +EXPORT_SYMBOL vmlinux 0x307c2fd0 generic_check_addressable +EXPORT_SYMBOL vmlinux 0x30889bf4 ihold +EXPORT_SYMBOL vmlinux 0x3096be16 names_cachep +EXPORT_SYMBOL vmlinux 0x30a80826 __kfifo_from_user +EXPORT_SYMBOL vmlinux 0x30b170d0 security_path_rename +EXPORT_SYMBOL vmlinux 0x30b8b35c cpu_to_chip_id +EXPORT_SYMBOL vmlinux 0x30c744bd do_SAK +EXPORT_SYMBOL vmlinux 0x30cacdd6 file_path +EXPORT_SYMBOL vmlinux 0x30d5e132 nf_log_unregister +EXPORT_SYMBOL vmlinux 0x3102d70b frontswap_curr_pages +EXPORT_SYMBOL vmlinux 0x310eed2a dev_close +EXPORT_SYMBOL vmlinux 0x311189c8 d_instantiate_unique +EXPORT_SYMBOL vmlinux 0x31234fb7 blk_pre_runtime_resume +EXPORT_SYMBOL vmlinux 0x3126c47a kernel_connect +EXPORT_SYMBOL vmlinux 0x312b7be1 tcp_enter_memory_pressure +EXPORT_SYMBOL vmlinux 0x31432b6d find_get_pages_contig +EXPORT_SYMBOL vmlinux 0x3145216f pci_dev_present +EXPORT_SYMBOL vmlinux 0x3146f118 alloc_disk_node +EXPORT_SYMBOL vmlinux 0x3147857d default_red +EXPORT_SYMBOL vmlinux 0x315d16ff lock_fb_info +EXPORT_SYMBOL vmlinux 0x31702c41 netif_device_detach +EXPORT_SYMBOL vmlinux 0x3174bd79 bitmap_clear +EXPORT_SYMBOL vmlinux 0x3175c02b dcache_readdir +EXPORT_SYMBOL vmlinux 0x31764911 phy_get_eee_err +EXPORT_SYMBOL vmlinux 0x31890e13 submit_bio_wait +EXPORT_SYMBOL vmlinux 0x31995bd4 neigh_seq_next +EXPORT_SYMBOL vmlinux 0x319da626 i2c_smbus_read_byte +EXPORT_SYMBOL vmlinux 0x319e0726 __tracepoint_kmalloc +EXPORT_SYMBOL vmlinux 0x31bb7c5d dev_get_flags +EXPORT_SYMBOL vmlinux 0x31cd995b store_fp_state +EXPORT_SYMBOL vmlinux 0x31db3198 out_of_line_wait_on_bit +EXPORT_SYMBOL vmlinux 0x31e14b39 remap_vmalloc_range_partial +EXPORT_SYMBOL vmlinux 0x31e21333 blk_rq_map_integrity_sg +EXPORT_SYMBOL vmlinux 0x31fa6eb4 __cleancache_invalidate_inode +EXPORT_SYMBOL vmlinux 0x31faca22 twl6040_reg_write +EXPORT_SYMBOL vmlinux 0x321608a0 inet_release +EXPORT_SYMBOL vmlinux 0x32207a9f dev_crit +EXPORT_SYMBOL vmlinux 0x322c5cf9 inet_csk_clear_xmit_timers +EXPORT_SYMBOL vmlinux 0x32441646 fsnotify_get_group +EXPORT_SYMBOL vmlinux 0x3252e149 dst_release +EXPORT_SYMBOL vmlinux 0x3257566c send_sig +EXPORT_SYMBOL vmlinux 0x326657de sock_recvmsg +EXPORT_SYMBOL vmlinux 0x32789fc5 xfrm_register_km +EXPORT_SYMBOL vmlinux 0x32798169 downgrade_write +EXPORT_SYMBOL vmlinux 0x327d2eab account_page_dirtied +EXPORT_SYMBOL vmlinux 0x32b19499 kfree_put_link +EXPORT_SYMBOL vmlinux 0x32c1ebdd generic_shutdown_super +EXPORT_SYMBOL vmlinux 0x32e21798 xfrm_unregister_mode +EXPORT_SYMBOL vmlinux 0x32e5366f sg_miter_next +EXPORT_SYMBOL vmlinux 0x32f459be generic_write_end +EXPORT_SYMBOL vmlinux 0x333cb37c __kfifo_dma_out_prepare_r +EXPORT_SYMBOL vmlinux 0x3361696e sk_wait_data +EXPORT_SYMBOL vmlinux 0x33624801 padata_add_cpu +EXPORT_SYMBOL vmlinux 0x3369a0f9 neigh_update +EXPORT_SYMBOL vmlinux 0x33742f56 phy_register_fixup_for_uid +EXPORT_SYMBOL vmlinux 0x33843260 max8925_bulk_read +EXPORT_SYMBOL vmlinux 0x3386cd0f skb_copy_datagram_from_iter +EXPORT_SYMBOL vmlinux 0x3394a62d dm_kobject_release +EXPORT_SYMBOL vmlinux 0x33a6448f vme_bus_type +EXPORT_SYMBOL vmlinux 0x33ae40f4 proc_set_user +EXPORT_SYMBOL vmlinux 0x33b84f74 copy_page +EXPORT_SYMBOL vmlinux 0x33c7435c prandom_u32_state +EXPORT_SYMBOL vmlinux 0x33d01596 vfs_writev +EXPORT_SYMBOL vmlinux 0x33daeed5 vio_find_node +EXPORT_SYMBOL vmlinux 0x33ecf455 pm860x_page_bulk_read +EXPORT_SYMBOL vmlinux 0x33f0768c cpufreq_quick_get_max +EXPORT_SYMBOL vmlinux 0x33fcf44a __kfifo_out_r +EXPORT_SYMBOL vmlinux 0x340f6ed0 cfb_fillrect +EXPORT_SYMBOL vmlinux 0x34184afe current_kernel_time +EXPORT_SYMBOL vmlinux 0x341bf734 build_skb +EXPORT_SYMBOL vmlinux 0x3426f992 sk_ns_capable +EXPORT_SYMBOL vmlinux 0x3436192e of_phy_is_fixed_link +EXPORT_SYMBOL vmlinux 0x344140a2 tcp_ioctl +EXPORT_SYMBOL vmlinux 0x3465caa3 cpu_maps_update_begin +EXPORT_SYMBOL vmlinux 0x347013de nla_validate +EXPORT_SYMBOL vmlinux 0x348fd2a6 tcp_close +EXPORT_SYMBOL vmlinux 0x3496b78f of_dev_get +EXPORT_SYMBOL vmlinux 0x349cba85 strchr +EXPORT_SYMBOL vmlinux 0x34acd03a scsi_block_requests +EXPORT_SYMBOL vmlinux 0x34b3b5e5 udp_lib_unhash +EXPORT_SYMBOL vmlinux 0x34d799a4 prepare_binprm +EXPORT_SYMBOL vmlinux 0x34dd5a0a udp_ioctl +EXPORT_SYMBOL vmlinux 0x34f1c727 __dev_get_by_index +EXPORT_SYMBOL vmlinux 0x34f3484e security_tun_dev_attach_queue +EXPORT_SYMBOL vmlinux 0x3501d181 agp_generic_destroy_pages +EXPORT_SYMBOL vmlinux 0x350c210b create_empty_buffers +EXPORT_SYMBOL vmlinux 0x3510abea netif_napi_add +EXPORT_SYMBOL vmlinux 0x3517383e register_reboot_notifier +EXPORT_SYMBOL vmlinux 0x351f9bc8 skb_queue_purge +EXPORT_SYMBOL vmlinux 0x35309089 bmap +EXPORT_SYMBOL vmlinux 0x3532fe06 __dquot_free_space +EXPORT_SYMBOL vmlinux 0x3539f11b match_strlcpy +EXPORT_SYMBOL vmlinux 0x355c0c48 request_key +EXPORT_SYMBOL vmlinux 0x356461c8 rtc_time64_to_tm +EXPORT_SYMBOL vmlinux 0x35795d18 __scsi_device_lookup_by_target +EXPORT_SYMBOL vmlinux 0x357c37a4 may_umount_tree +EXPORT_SYMBOL vmlinux 0x358c1946 inet_sk_rebuild_header +EXPORT_SYMBOL vmlinux 0x35919d22 adjust_managed_page_count +EXPORT_SYMBOL vmlinux 0x35983b6c tcp_setsockopt +EXPORT_SYMBOL vmlinux 0x35a1ddfb inet_unregister_protosw +EXPORT_SYMBOL vmlinux 0x35a88f28 zlib_inflateInit2 +EXPORT_SYMBOL vmlinux 0x35ba72ce nlmsg_notify +EXPORT_SYMBOL vmlinux 0x35c32767 xor_altivec_2 +EXPORT_SYMBOL vmlinux 0x35e09980 flex_array_put +EXPORT_SYMBOL vmlinux 0x35e19515 dentry_update_name_case +EXPORT_SYMBOL vmlinux 0x35feac6b md_integrity_register +EXPORT_SYMBOL vmlinux 0x360675a3 tty_insert_flip_string_fixed_flag +EXPORT_SYMBOL vmlinux 0x3618cb2d ida_destroy +EXPORT_SYMBOL vmlinux 0x361f3428 nd_iostat_end +EXPORT_SYMBOL vmlinux 0x3668fd48 flex_array_free_parts +EXPORT_SYMBOL vmlinux 0x366f6d27 idr_destroy +EXPORT_SYMBOL vmlinux 0x367cc6c3 param_ops_bool +EXPORT_SYMBOL vmlinux 0x368d66d9 input_unregister_handle +EXPORT_SYMBOL vmlinux 0x369e1115 kstrtou8_from_user +EXPORT_SYMBOL vmlinux 0x36a1e210 kobject_add +EXPORT_SYMBOL vmlinux 0x36a80417 generic_block_bmap +EXPORT_SYMBOL vmlinux 0x36b0e732 try_wait_for_completion +EXPORT_SYMBOL vmlinux 0x36b66605 pcie_capability_write_dword +EXPORT_SYMBOL vmlinux 0x36bd681b groups_alloc +EXPORT_SYMBOL vmlinux 0x36cf300b kfree_skb_partial +EXPORT_SYMBOL vmlinux 0x36d293c2 tcf_exts_dump +EXPORT_SYMBOL vmlinux 0x36fd857b textsearch_register +EXPORT_SYMBOL vmlinux 0x37035c3c max8925_reg_read +EXPORT_SYMBOL vmlinux 0x37098fc1 unload_nls +EXPORT_SYMBOL vmlinux 0x371d2130 check_legacy_ioport +EXPORT_SYMBOL vmlinux 0x371e34b5 ppp_register_compressor +EXPORT_SYMBOL vmlinux 0x37283f9f agp_create_memory +EXPORT_SYMBOL vmlinux 0x37288b68 netdev_state_change +EXPORT_SYMBOL vmlinux 0x372d6ec9 fb_set_suspend +EXPORT_SYMBOL vmlinux 0x37344510 proc_dointvec_ms_jiffies +EXPORT_SYMBOL vmlinux 0x3734566a bioset_create +EXPORT_SYMBOL vmlinux 0x37383edd rtas_get_power_level +EXPORT_SYMBOL vmlinux 0x3744cf36 vmalloc_to_pfn +EXPORT_SYMBOL vmlinux 0x3750c282 of_root +EXPORT_SYMBOL vmlinux 0x375840e3 setup_arg_pages +EXPORT_SYMBOL vmlinux 0x376649ee dm_get_device +EXPORT_SYMBOL vmlinux 0x376a5c3d crypto_sha256_update +EXPORT_SYMBOL vmlinux 0x376b01e5 skb_seq_read +EXPORT_SYMBOL vmlinux 0x37acf3b8 d_lookup +EXPORT_SYMBOL vmlinux 0x37af3190 dm_table_run_md_queue_async +EXPORT_SYMBOL vmlinux 0x37befc70 jiffies_to_msecs +EXPORT_SYMBOL vmlinux 0x37c9e408 mipi_dsi_dcs_read +EXPORT_SYMBOL vmlinux 0x37cf7282 blk_mq_alloc_request +EXPORT_SYMBOL vmlinux 0x37d1609a generic_removexattr +EXPORT_SYMBOL vmlinux 0x37d26ecf blk_init_queue +EXPORT_SYMBOL vmlinux 0x381a798a setup_max_cpus +EXPORT_SYMBOL vmlinux 0x38225283 tcf_action_dump_1 +EXPORT_SYMBOL vmlinux 0x383261bf netdev_warn +EXPORT_SYMBOL vmlinux 0x38438947 blk_queue_bounce +EXPORT_SYMBOL vmlinux 0x3845e71b get_disk +EXPORT_SYMBOL vmlinux 0x3866c75c param_set_invbool +EXPORT_SYMBOL vmlinux 0x3869d0cb netdev_rx_csum_fault +EXPORT_SYMBOL vmlinux 0x38738142 __module_get +EXPORT_SYMBOL vmlinux 0x387674f9 pci_dev_put +EXPORT_SYMBOL vmlinux 0x3876a94c xfrm_garbage_collect +EXPORT_SYMBOL vmlinux 0x38846f71 save_mount_options +EXPORT_SYMBOL vmlinux 0x38869d88 kstat +EXPORT_SYMBOL vmlinux 0x388e970f agp_generic_alloc_page +EXPORT_SYMBOL vmlinux 0x3892f88e lease_modify +EXPORT_SYMBOL vmlinux 0x38a71b7e pci_free_resource_list +EXPORT_SYMBOL vmlinux 0x38a9f7c5 in6addr_loopback +EXPORT_SYMBOL vmlinux 0x38af23d7 blk_limits_max_hw_sectors +EXPORT_SYMBOL vmlinux 0x38b825d1 idr_replace +EXPORT_SYMBOL vmlinux 0x38e46277 mmc_detect_card_removed +EXPORT_SYMBOL vmlinux 0x38fb9933 tty_std_termios +EXPORT_SYMBOL vmlinux 0x38fcc2bf input_register_handler +EXPORT_SYMBOL vmlinux 0x3905606c scsi_print_command +EXPORT_SYMBOL vmlinux 0x390cf488 tcp_prot +EXPORT_SYMBOL vmlinux 0x390e0e74 inode_add_rsv_space +EXPORT_SYMBOL vmlinux 0x39369778 __cleancache_init_shared_fs +EXPORT_SYMBOL vmlinux 0x3939f8f0 rfkill_pause_polling +EXPORT_SYMBOL vmlinux 0x393d4de9 crc32_le +EXPORT_SYMBOL vmlinux 0x39461d6a in_egroup_p +EXPORT_SYMBOL vmlinux 0x3955c713 kobject_del +EXPORT_SYMBOL vmlinux 0x3955fcf6 __kfifo_in_r +EXPORT_SYMBOL vmlinux 0x3960db4c tcp_v4_do_rcv +EXPORT_SYMBOL vmlinux 0x39633653 security_sb_clone_mnt_opts +EXPORT_SYMBOL vmlinux 0x3965961f sg_miter_skip +EXPORT_SYMBOL vmlinux 0x396abf0d security_d_instantiate +EXPORT_SYMBOL vmlinux 0x39751d07 __vfs_read +EXPORT_SYMBOL vmlinux 0x39991865 icmp_global_allow +EXPORT_SYMBOL vmlinux 0x399ad043 __kfifo_dma_out_finish_r +EXPORT_SYMBOL vmlinux 0x39a2f07d fb_get_mode +EXPORT_SYMBOL vmlinux 0x39a756e4 devm_devfreq_register_opp_notifier +EXPORT_SYMBOL vmlinux 0x39b52d19 __bitmap_and +EXPORT_SYMBOL vmlinux 0x39cdf63c wait_for_completion_interruptible +EXPORT_SYMBOL vmlinux 0x39ffa596 phys_mem_access_prot +EXPORT_SYMBOL vmlinux 0x3a035d18 ip_mc_dec_group +EXPORT_SYMBOL vmlinux 0x3a04b019 udp_proc_register +EXPORT_SYMBOL vmlinux 0x3a3fc88a page_cache_next_hole +EXPORT_SYMBOL vmlinux 0x3a78341f skb_page_frag_refill +EXPORT_SYMBOL vmlinux 0x3a900210 sync_filesystem +EXPORT_SYMBOL vmlinux 0x3a9664ca pps_event +EXPORT_SYMBOL vmlinux 0x3a9a88f6 brioctl_set +EXPORT_SYMBOL vmlinux 0x3a9b6fb9 blk_unregister_region +EXPORT_SYMBOL vmlinux 0x3aad1fe8 neigh_table_init +EXPORT_SYMBOL vmlinux 0x3aea0ac8 sget +EXPORT_SYMBOL vmlinux 0x3afb82c9 unregister_cdrom +EXPORT_SYMBOL vmlinux 0x3aff148f vc_resize +EXPORT_SYMBOL vmlinux 0x3b1cddcf inet_frags_exit_net +EXPORT_SYMBOL vmlinux 0x3b315c47 agp_generic_free_gatt_table +EXPORT_SYMBOL vmlinux 0x3b48e853 inet_proto_csum_replace16 +EXPORT_SYMBOL vmlinux 0x3b52f5e5 key_instantiate_and_link +EXPORT_SYMBOL vmlinux 0x3b615a21 wait_for_completion_killable +EXPORT_SYMBOL vmlinux 0x3b644591 __bitmap_shift_left +EXPORT_SYMBOL vmlinux 0x3b8057e1 simple_rename +EXPORT_SYMBOL vmlinux 0x3b9eab0f ps2_init +EXPORT_SYMBOL vmlinux 0x3bbc3d62 alloc_fcdev +EXPORT_SYMBOL vmlinux 0x3bcacb9e dev_addr_del +EXPORT_SYMBOL vmlinux 0x3bea4faa rawv6_mh_filter_unregister +EXPORT_SYMBOL vmlinux 0x3c17280b ibmebus_bus_type +EXPORT_SYMBOL vmlinux 0x3c3fce39 __local_bh_enable_ip +EXPORT_SYMBOL vmlinux 0x3c42bf0e pci_scan_root_bus +EXPORT_SYMBOL vmlinux 0x3c43eac1 blk_integrity_merge_rq +EXPORT_SYMBOL vmlinux 0x3c483012 radix_tree_delete +EXPORT_SYMBOL vmlinux 0x3c6437a1 of_find_node_by_phandle +EXPORT_SYMBOL vmlinux 0x3c80c06c kstrtoull +EXPORT_SYMBOL vmlinux 0x3c8b225b lro_flush_all +EXPORT_SYMBOL vmlinux 0x3c995bf3 mac_find_mode +EXPORT_SYMBOL vmlinux 0x3ca84769 __secpath_destroy +EXPORT_SYMBOL vmlinux 0x3caab4f0 mfd_add_devices +EXPORT_SYMBOL vmlinux 0x3cc4b0dc lg_lock_init +EXPORT_SYMBOL vmlinux 0x3cdcf81f of_find_i2c_adapter_by_node +EXPORT_SYMBOL vmlinux 0x3ce4ca6f disable_irq +EXPORT_SYMBOL vmlinux 0x3cf24aed scsi_dma_map +EXPORT_SYMBOL vmlinux 0x3d44ade9 twl6030_mmc_card_detect +EXPORT_SYMBOL vmlinux 0x3d5acb03 ipv6_sock_mc_drop +EXPORT_SYMBOL vmlinux 0x3d6f7785 agp_generic_insert_memory +EXPORT_SYMBOL vmlinux 0x3d76fde6 iter_file_splice_write +EXPORT_SYMBOL vmlinux 0x3d785a3c fsnotify_add_mark +EXPORT_SYMBOL vmlinux 0x3d7ce073 copy_page_to_iter +EXPORT_SYMBOL vmlinux 0x3d9b4869 vio_disable_interrupts +EXPORT_SYMBOL vmlinux 0x3db42b6d vme_dma_list_add +EXPORT_SYMBOL vmlinux 0x3db5df35 skb_queue_tail +EXPORT_SYMBOL vmlinux 0x3db84634 vfs_getxattr_alloc +EXPORT_SYMBOL vmlinux 0x3dbf36c9 sg_copy_buffer +EXPORT_SYMBOL vmlinux 0x3dc93f1a xfrm_find_acq_byseq +EXPORT_SYMBOL vmlinux 0x3dc9e72b tcp_sendmsg +EXPORT_SYMBOL vmlinux 0x3dcb88a0 irq_set_handler_data +EXPORT_SYMBOL vmlinux 0x3dd751a1 sdev_disable_disk_events +EXPORT_SYMBOL vmlinux 0x3dfc897c seq_hlist_start_head +EXPORT_SYMBOL vmlinux 0x3e00a95b user_path_at_empty +EXPORT_SYMBOL vmlinux 0x3e051ac5 tcp_openreq_init_rwin +EXPORT_SYMBOL vmlinux 0x3e06f72e phy_mac_interrupt +EXPORT_SYMBOL vmlinux 0x3e5544f4 tcp_make_synack +EXPORT_SYMBOL vmlinux 0x3e6d91b2 vfs_fsync_range +EXPORT_SYMBOL vmlinux 0x3e80f1d4 eth_commit_mac_addr_change +EXPORT_SYMBOL vmlinux 0x3e882943 pcibios_align_resource +EXPORT_SYMBOL vmlinux 0x3e8a56d5 abx500_startup_irq_enabled +EXPORT_SYMBOL vmlinux 0x3e9110fa __hw_addr_unsync +EXPORT_SYMBOL vmlinux 0x3e95083c vme_slave_get +EXPORT_SYMBOL vmlinux 0x3ebc35f1 uart_suspend_port +EXPORT_SYMBOL vmlinux 0x3ed114a5 inet_ioctl +EXPORT_SYMBOL vmlinux 0x3ee15943 agp_free_memory +EXPORT_SYMBOL vmlinux 0x3eed8fad ip_do_fragment +EXPORT_SYMBOL vmlinux 0x3ef5ff73 qdisc_watchdog_schedule_ns +EXPORT_SYMBOL vmlinux 0x3ef87665 simple_getattr +EXPORT_SYMBOL vmlinux 0x3f0546a8 ioread32_rep +EXPORT_SYMBOL vmlinux 0x3f0fd8c4 prepare_creds +EXPORT_SYMBOL vmlinux 0x3f3d72c0 of_get_parent +EXPORT_SYMBOL vmlinux 0x3f406a3b enable_kernel_altivec +EXPORT_SYMBOL vmlinux 0x3f4547a7 put_unused_fd +EXPORT_SYMBOL vmlinux 0x3f5b8bd0 __blockdev_direct_IO +EXPORT_SYMBOL vmlinux 0x3f7cdd5d tty_port_hangup +EXPORT_SYMBOL vmlinux 0x3f8a9ab5 __blk_end_request +EXPORT_SYMBOL vmlinux 0x3f8e4d6e __blk_end_request_all +EXPORT_SYMBOL vmlinux 0x3fa3d8bc __cleancache_put_page +EXPORT_SYMBOL vmlinux 0x3faa256e do_splice_to +EXPORT_SYMBOL vmlinux 0x3fd0b644 __devcgroup_inode_permission +EXPORT_SYMBOL vmlinux 0x3fde2d51 default_llseek +EXPORT_SYMBOL vmlinux 0x3fdfda37 padata_alloc +EXPORT_SYMBOL vmlinux 0x3fdfe59c ps2_handle_ack +EXPORT_SYMBOL vmlinux 0x3fe2ccbe memweight +EXPORT_SYMBOL vmlinux 0x3fe86ff6 end_buffer_async_write +EXPORT_SYMBOL vmlinux 0x3fec048f sg_next +EXPORT_SYMBOL vmlinux 0x3ff06b98 follow_pfn +EXPORT_SYMBOL vmlinux 0x3ff8e495 lg_local_unlock_cpu +EXPORT_SYMBOL vmlinux 0x40054cf8 skb_clone_sk +EXPORT_SYMBOL vmlinux 0x402b8281 __request_module +EXPORT_SYMBOL vmlinux 0x40370453 ipv6_chk_prefix +EXPORT_SYMBOL vmlinux 0x4037f5dc ppp_input_error +EXPORT_SYMBOL vmlinux 0x403a9c3b uart_resume_port +EXPORT_SYMBOL vmlinux 0x40426bc1 lock_two_nondirectories +EXPORT_SYMBOL vmlinux 0x404aa289 md_check_no_bitmap +EXPORT_SYMBOL vmlinux 0x4056266e __set_page_dirty_nobuffers +EXPORT_SYMBOL vmlinux 0x405b6e05 srp_parse_tmo +EXPORT_SYMBOL vmlinux 0x405c1144 get_seconds +EXPORT_SYMBOL vmlinux 0x40973662 sysctl_udp_mem +EXPORT_SYMBOL vmlinux 0x409f58da sk_common_release +EXPORT_SYMBOL vmlinux 0x40a27c37 scsi_dev_info_remove_list +EXPORT_SYMBOL vmlinux 0x40a9b349 vzalloc +EXPORT_SYMBOL vmlinux 0x40a9e88c seq_path +EXPORT_SYMBOL vmlinux 0x40ba7b33 decrementer_clockevent +EXPORT_SYMBOL vmlinux 0x40c01859 gen_pool_best_fit +EXPORT_SYMBOL vmlinux 0x40c094d6 pci_unregister_driver +EXPORT_SYMBOL vmlinux 0x40c41e51 nobh_writepage +EXPORT_SYMBOL vmlinux 0x40c7247c si_meminfo +EXPORT_SYMBOL vmlinux 0x40d04664 console_trylock +EXPORT_SYMBOL vmlinux 0x40d59096 unregister_restart_handler +EXPORT_SYMBOL vmlinux 0x40e8c252 vlan_vid_del +EXPORT_SYMBOL vmlinux 0x40f2b927 dcache_dir_close +EXPORT_SYMBOL vmlinux 0x40fedf1d page_zero_new_buffers +EXPORT_SYMBOL vmlinux 0x41170881 nf_log_bind_pf +EXPORT_SYMBOL vmlinux 0x41194dfd inet_proto_csum_replace4 +EXPORT_SYMBOL vmlinux 0x4120f3a6 tcp_md5_hash_skb_data +EXPORT_SYMBOL vmlinux 0x41454aaf of_find_node_with_property +EXPORT_SYMBOL vmlinux 0x41482d8b strndup_user +EXPORT_SYMBOL vmlinux 0x4159c38f ioremap_wc +EXPORT_SYMBOL vmlinux 0x41728145 genphy_read_status +EXPORT_SYMBOL vmlinux 0x4187c557 netif_stacked_transfer_operstate +EXPORT_SYMBOL vmlinux 0x4187f5da init_special_inode +EXPORT_SYMBOL vmlinux 0x4188d439 neigh_rand_reach_time +EXPORT_SYMBOL vmlinux 0x41bd06eb d_find_alias +EXPORT_SYMBOL vmlinux 0x41c1e5ad lock_sock_fast +EXPORT_SYMBOL vmlinux 0x41caa262 vio_h_cop_sync +EXPORT_SYMBOL vmlinux 0x420e20e3 param_ops_uint +EXPORT_SYMBOL vmlinux 0x42160169 flush_workqueue +EXPORT_SYMBOL vmlinux 0x4217d443 pm8606_osc_disable +EXPORT_SYMBOL vmlinux 0x42245c87 __check_sticky +EXPORT_SYMBOL vmlinux 0x422b0b5d inet_offloads +EXPORT_SYMBOL vmlinux 0x4238ed22 tcp_disconnect +EXPORT_SYMBOL vmlinux 0x42476cb2 __breadahead +EXPORT_SYMBOL vmlinux 0x4248ae3c single_task_running +EXPORT_SYMBOL vmlinux 0x424a28f3 file_open_root +EXPORT_SYMBOL vmlinux 0x424d3620 zlib_inflateIncomp +EXPORT_SYMBOL vmlinux 0x42595e58 vgacon_text_force +EXPORT_SYMBOL vmlinux 0x427cdace tcf_action_exec +EXPORT_SYMBOL vmlinux 0x42942d94 sock_no_accept +EXPORT_SYMBOL vmlinux 0x429666b2 generic_file_splice_read +EXPORT_SYMBOL vmlinux 0x42a1b208 gen_pool_first_fit +EXPORT_SYMBOL vmlinux 0x42a247f8 pci_scan_bus +EXPORT_SYMBOL vmlinux 0x42a90bc0 compat_ipv6_setsockopt +EXPORT_SYMBOL vmlinux 0x42e4e3ce blkdev_reread_part +EXPORT_SYMBOL vmlinux 0x42f8bde1 dev_mc_unsync +EXPORT_SYMBOL vmlinux 0x43014235 vga_client_register +EXPORT_SYMBOL vmlinux 0x4302d0eb free_pages +EXPORT_SYMBOL vmlinux 0x4303313b sock_no_poll +EXPORT_SYMBOL vmlinux 0x431405cb compat_tcp_setsockopt +EXPORT_SYMBOL vmlinux 0x432c6444 km_policy_notify +EXPORT_SYMBOL vmlinux 0x4351577a fb_parse_edid +EXPORT_SYMBOL vmlinux 0x435f23cc mb_cache_entry_release +EXPORT_SYMBOL vmlinux 0x435f28bb gnet_stats_start_copy +EXPORT_SYMBOL vmlinux 0x436862f4 mntget +EXPORT_SYMBOL vmlinux 0x436c2179 iowrite32 +EXPORT_SYMBOL vmlinux 0x438610bd security_tun_dev_alloc_security +EXPORT_SYMBOL vmlinux 0x43a01f90 complete_all +EXPORT_SYMBOL vmlinux 0x43a0b34d of_find_i2c_device_by_node +EXPORT_SYMBOL vmlinux 0x43f23311 dm_table_get_md +EXPORT_SYMBOL vmlinux 0x43f921f9 __wait_on_buffer +EXPORT_SYMBOL vmlinux 0x44109c49 security_inode_notifysecctx +EXPORT_SYMBOL vmlinux 0x44113e12 padata_alloc_possible +EXPORT_SYMBOL vmlinux 0x441186b1 of_find_node_by_type +EXPORT_SYMBOL vmlinux 0x4411c503 prandom_seed +EXPORT_SYMBOL vmlinux 0x4418b307 swiotlb_free_coherent +EXPORT_SYMBOL vmlinux 0x4440f5f7 tcp_recvmsg +EXPORT_SYMBOL vmlinux 0x44484681 swiotlb_sync_single_for_cpu +EXPORT_SYMBOL vmlinux 0x44754e33 key_invalidate +EXPORT_SYMBOL vmlinux 0x447dcd8f dquot_scan_active +EXPORT_SYMBOL vmlinux 0x4482fd1b simple_dir_inode_operations +EXPORT_SYMBOL vmlinux 0x448eac3e kmemdup +EXPORT_SYMBOL vmlinux 0x44b1d426 __dynamic_pr_debug +EXPORT_SYMBOL vmlinux 0x44bbc7ca pcie_get_mps +EXPORT_SYMBOL vmlinux 0x44bdf73d phy_read_mmd_indirect +EXPORT_SYMBOL vmlinux 0x44bfcfc4 free_page_put_link +EXPORT_SYMBOL vmlinux 0x44dc4a3f __fib6_flush_trees +EXPORT_SYMBOL vmlinux 0x44e9a829 match_token +EXPORT_SYMBOL vmlinux 0x44eb192e wait_for_completion +EXPORT_SYMBOL vmlinux 0x44ec2108 truncate_pagecache +EXPORT_SYMBOL vmlinux 0x4504fd60 skb_mac_gso_segment +EXPORT_SYMBOL vmlinux 0x45170252 set_cached_acl +EXPORT_SYMBOL vmlinux 0x45239b9b devfreq_suspend_device +EXPORT_SYMBOL vmlinux 0x453c8403 pci_msi_enabled +EXPORT_SYMBOL vmlinux 0x4542795b set_blocksize +EXPORT_SYMBOL vmlinux 0x455a66ed dquot_quota_sync +EXPORT_SYMBOL vmlinux 0x457043d9 dev_set_mac_address +EXPORT_SYMBOL vmlinux 0x4578f528 __kfifo_to_user +EXPORT_SYMBOL vmlinux 0x4593a0c6 block_page_mkwrite +EXPORT_SYMBOL vmlinux 0x459e51b5 sk_page_frag_refill +EXPORT_SYMBOL vmlinux 0x45a55ec8 __iounmap +EXPORT_SYMBOL vmlinux 0x45a5e5d6 phy_stop_interrupts +EXPORT_SYMBOL vmlinux 0x45a6be13 cpufreq_sysfs_remove_file +EXPORT_SYMBOL vmlinux 0x45a765cf pci_add_resource +EXPORT_SYMBOL vmlinux 0x45c33015 scsi_remove_target +EXPORT_SYMBOL vmlinux 0x45e4b5d1 pcibios_fixup_bus +EXPORT_SYMBOL vmlinux 0x4606a1e4 __skb_get_hash_flowi6 +EXPORT_SYMBOL vmlinux 0x4612c59d down_trylock +EXPORT_SYMBOL vmlinux 0x461ac773 kstrtol_from_user +EXPORT_SYMBOL vmlinux 0x461e050b seq_open +EXPORT_SYMBOL vmlinux 0x461ebfa0 __copy_tofrom_user +EXPORT_SYMBOL vmlinux 0x461f4807 flush_signals +EXPORT_SYMBOL vmlinux 0x46212330 bio_integrity_clone +EXPORT_SYMBOL vmlinux 0x46439c04 init_net +EXPORT_SYMBOL vmlinux 0x4652b7e8 node_data +EXPORT_SYMBOL vmlinux 0x465cab34 secure_ipv6_port_ephemeral +EXPORT_SYMBOL vmlinux 0x46626b6f kernel_listen +EXPORT_SYMBOL vmlinux 0x46649cd1 vme_lm_set +EXPORT_SYMBOL vmlinux 0x466c14a7 __delay +EXPORT_SYMBOL vmlinux 0x466f4716 alloc_anon_inode +EXPORT_SYMBOL vmlinux 0x467df16d netdev_rss_key_fill +EXPORT_SYMBOL vmlinux 0x468cb7a3 mipi_dsi_dcs_get_pixel_format +EXPORT_SYMBOL vmlinux 0x46a0170e flex_array_get_ptr +EXPORT_SYMBOL vmlinux 0x46aec6b7 vfs_iter_read +EXPORT_SYMBOL vmlinux 0x46b2b3e9 ioctl_by_bdev +EXPORT_SYMBOL vmlinux 0x46c47fb6 __node_distance +EXPORT_SYMBOL vmlinux 0x46d12956 wait_for_completion_interruptible_timeout +EXPORT_SYMBOL vmlinux 0x46e3e17f pcibios_resource_to_bus +EXPORT_SYMBOL vmlinux 0x46feb099 dm_read_arg +EXPORT_SYMBOL vmlinux 0x4704e573 neigh_direct_output +EXPORT_SYMBOL vmlinux 0x4714189f xfrm_unregister_type +EXPORT_SYMBOL vmlinux 0x47416e14 cpu_rmap_add +EXPORT_SYMBOL vmlinux 0x47590be2 md_error +EXPORT_SYMBOL vmlinux 0x475b14e4 make_kprojid +EXPORT_SYMBOL vmlinux 0x47608718 fence_init +EXPORT_SYMBOL vmlinux 0x476868f6 blk_make_request +EXPORT_SYMBOL vmlinux 0x47870130 ip_route_me_harder +EXPORT_SYMBOL vmlinux 0x47939e0d __tasklet_hi_schedule +EXPORT_SYMBOL vmlinux 0x4794b1ba try_to_free_buffers +EXPORT_SYMBOL vmlinux 0x479c3c86 find_next_zero_bit +EXPORT_SYMBOL vmlinux 0x47a7b20a complete_request_key +EXPORT_SYMBOL vmlinux 0x47a8b7f3 iget_failed +EXPORT_SYMBOL vmlinux 0x47b9044c jbd2_journal_errno +EXPORT_SYMBOL vmlinux 0x47ce5218 sk_free +EXPORT_SYMBOL vmlinux 0x47d28a48 truncate_pagecache_range +EXPORT_SYMBOL vmlinux 0x47ed82d0 mmc_of_parse +EXPORT_SYMBOL vmlinux 0x480a094c generic_file_mmap +EXPORT_SYMBOL vmlinux 0x4814101d vga_put +EXPORT_SYMBOL vmlinux 0x481583ff fsl_lbc_ctrl_dev +EXPORT_SYMBOL vmlinux 0x4815beb6 xfrm_unregister_km +EXPORT_SYMBOL vmlinux 0x48166c1e scsi_verify_blk_ioctl +EXPORT_SYMBOL vmlinux 0x4821aa49 load_nls_default +EXPORT_SYMBOL vmlinux 0x4829a47e memcpy +EXPORT_SYMBOL vmlinux 0x482e43fb arp_tbl +EXPORT_SYMBOL vmlinux 0x483dd6ba kern_path_mountpoint +EXPORT_SYMBOL vmlinux 0x48404b9a remove_wait_queue +EXPORT_SYMBOL vmlinux 0x4841bdee strnchr +EXPORT_SYMBOL vmlinux 0x4854deeb ps2_drain +EXPORT_SYMBOL vmlinux 0x4859b8bb rtc_year_days +EXPORT_SYMBOL vmlinux 0x486249a3 netdev_crit +EXPORT_SYMBOL vmlinux 0x487561ed netdev_change_features +EXPORT_SYMBOL vmlinux 0x487c509e dquot_quotactl_ops +EXPORT_SYMBOL vmlinux 0x4890e558 debugfs_create_automount +EXPORT_SYMBOL vmlinux 0x48b99a13 vme_lm_free +EXPORT_SYMBOL vmlinux 0x48ba4f71 vm_insert_mixed +EXPORT_SYMBOL vmlinux 0x48e03514 pnv_cxl_get_irq_count +EXPORT_SYMBOL vmlinux 0x49045426 icmp_err_convert +EXPORT_SYMBOL vmlinux 0x4907bf87 compat_nf_getsockopt +EXPORT_SYMBOL vmlinux 0x490d0f27 md_check_recovery +EXPORT_SYMBOL vmlinux 0x491a8185 PDE_DATA +EXPORT_SYMBOL vmlinux 0x492f8f05 cancel_dirty_page +EXPORT_SYMBOL vmlinux 0x495c96f8 posix_acl_init +EXPORT_SYMBOL vmlinux 0x49603fb8 security_sb_copy_data +EXPORT_SYMBOL vmlinux 0x4970bdbe fbcon_set_bitops +EXPORT_SYMBOL vmlinux 0x4971a440 filemap_map_pages +EXPORT_SYMBOL vmlinux 0x4980cd73 __task_pid_nr_ns +EXPORT_SYMBOL vmlinux 0x4986a5b7 mmc_set_blocklen +EXPORT_SYMBOL vmlinux 0x498f5486 xfrm_init_state +EXPORT_SYMBOL vmlinux 0x499bfc6d __per_cpu_offset +EXPORT_SYMBOL vmlinux 0x49b07aec tcp_select_initial_window +EXPORT_SYMBOL vmlinux 0x49ca9060 __cleancache_get_page +EXPORT_SYMBOL vmlinux 0x49d133f0 __skb_recv_datagram +EXPORT_SYMBOL vmlinux 0x49f2a565 flow_cache_init +EXPORT_SYMBOL vmlinux 0x49f71442 dev_close_many +EXPORT_SYMBOL vmlinux 0x49fa0ab9 fget +EXPORT_SYMBOL vmlinux 0x4a05b553 mmc_add_host +EXPORT_SYMBOL vmlinux 0x4a3a2e20 netdev_lower_get_first_private_rcu +EXPORT_SYMBOL vmlinux 0x4a5de33f max8925_reg_write +EXPORT_SYMBOL vmlinux 0x4a5f698c tcp_v4_mtu_reduced +EXPORT_SYMBOL vmlinux 0x4a7b4ca0 nf_afinfo +EXPORT_SYMBOL vmlinux 0x4a7ee37b tty_kref_put +EXPORT_SYMBOL vmlinux 0x4a80986b bh_uptodate_or_lock +EXPORT_SYMBOL vmlinux 0x4a99e4b5 icmpv6_send +EXPORT_SYMBOL vmlinux 0x4abbe3c2 vm_brk +EXPORT_SYMBOL vmlinux 0x4acd93d3 release_resource +EXPORT_SYMBOL vmlinux 0x4ad2a57a opal_event_request +EXPORT_SYMBOL vmlinux 0x4ad9ee1e dev_warn +EXPORT_SYMBOL vmlinux 0x4afe9a77 scsi_partsize +EXPORT_SYMBOL vmlinux 0x4b085dbf agp3_generic_configure +EXPORT_SYMBOL vmlinux 0x4b421bf7 elv_register_queue +EXPORT_SYMBOL vmlinux 0x4b5fd49e dm_kcopyd_do_callback +EXPORT_SYMBOL vmlinux 0x4b669371 netdev_class_remove_file_ns +EXPORT_SYMBOL vmlinux 0x4b6757d1 mmc_power_restore_host +EXPORT_SYMBOL vmlinux 0x4b717e23 simple_symlink_inode_operations +EXPORT_SYMBOL vmlinux 0x4b8326ff ida_remove +EXPORT_SYMBOL vmlinux 0x4b91d995 tty_port_put +EXPORT_SYMBOL vmlinux 0x4b988b5a mmc_erase_group_aligned +EXPORT_SYMBOL vmlinux 0x4baf35a7 vme_master_get +EXPORT_SYMBOL vmlinux 0x4bb2d2cc bdi_destroy +EXPORT_SYMBOL vmlinux 0x4bbf980e starget_for_each_device +EXPORT_SYMBOL vmlinux 0x4bc81b1d input_handler_for_each_handle +EXPORT_SYMBOL vmlinux 0x4be928b6 md_register_thread +EXPORT_SYMBOL vmlinux 0x4bed99b3 __percpu_counter_add +EXPORT_SYMBOL vmlinux 0x4bf29d38 inet_csk_destroy_sock +EXPORT_SYMBOL vmlinux 0x4c0495e6 vme_bus_num +EXPORT_SYMBOL vmlinux 0x4c11435a _raw_read_lock_bh +EXPORT_SYMBOL vmlinux 0x4c12b10c truncate_inode_pages_final +EXPORT_SYMBOL vmlinux 0x4c2bdd98 phy_attach +EXPORT_SYMBOL vmlinux 0x4c2e1650 xfrm_init_replay +EXPORT_SYMBOL vmlinux 0x4c346a53 kvasprintf +EXPORT_SYMBOL vmlinux 0x4c483778 fbcon_rotate_cw +EXPORT_SYMBOL vmlinux 0x4c6a7eca xfrm_register_mode +EXPORT_SYMBOL vmlinux 0x4c8c81ae security_task_getsecid +EXPORT_SYMBOL vmlinux 0x4c8d61f6 scsi_print_sense +EXPORT_SYMBOL vmlinux 0x4ca46160 pipe_lock +EXPORT_SYMBOL vmlinux 0x4ca9669f scnprintf +EXPORT_SYMBOL vmlinux 0x4cae0d64 eth_gro_receive +EXPORT_SYMBOL vmlinux 0x4cb0e988 gen_pool_dma_alloc +EXPORT_SYMBOL vmlinux 0x4cb1bab3 kmem_cache_free +EXPORT_SYMBOL vmlinux 0x4cdb3178 ns_to_timeval +EXPORT_SYMBOL vmlinux 0x4cdcad9d qdisc_tree_decrease_qlen +EXPORT_SYMBOL vmlinux 0x4ce82707 remove_proc_entry +EXPORT_SYMBOL vmlinux 0x4ceb33b4 keyring_alloc +EXPORT_SYMBOL vmlinux 0x4ceee7d3 locks_copy_conflock +EXPORT_SYMBOL vmlinux 0x4d060f4b pneigh_enqueue +EXPORT_SYMBOL vmlinux 0x4d26003f read_cache_page_gfp +EXPORT_SYMBOL vmlinux 0x4d294bb4 bit_wait_io +EXPORT_SYMBOL vmlinux 0x4d31c47b of_node_get +EXPORT_SYMBOL vmlinux 0x4d449994 blkdev_get +EXPORT_SYMBOL vmlinux 0x4d4ac118 netpoll_parse_options +EXPORT_SYMBOL vmlinux 0x4d791953 mempool_resize +EXPORT_SYMBOL vmlinux 0x4d818237 write_dirty_buffer +EXPORT_SYMBOL vmlinux 0x4d8b516c skb_prepare_seq_read +EXPORT_SYMBOL vmlinux 0x4d974b9c register_sysrq_key +EXPORT_SYMBOL vmlinux 0x4d9b652b rb_erase +EXPORT_SYMBOL vmlinux 0x4da901b7 bio_integrity_free +EXPORT_SYMBOL vmlinux 0x4dc10533 fb_prepare_logo +EXPORT_SYMBOL vmlinux 0x4dd67683 tty_register_device +EXPORT_SYMBOL vmlinux 0x4de34a07 cpu_rmap_put +EXPORT_SYMBOL vmlinux 0x4de63cbc mipi_dsi_dcs_soft_reset +EXPORT_SYMBOL vmlinux 0x4df119fa __bitmap_parse +EXPORT_SYMBOL vmlinux 0x4df2a3a6 pcie_capability_write_word +EXPORT_SYMBOL vmlinux 0x4df81d69 mmc_gpio_request_cd +EXPORT_SYMBOL vmlinux 0x4e00cebb i8042_install_filter +EXPORT_SYMBOL vmlinux 0x4e04dd24 blk_integrity_is_initialized +EXPORT_SYMBOL vmlinux 0x4e0e3053 iw_handler_set_spy +EXPORT_SYMBOL vmlinux 0x4e1b4cd6 blk_init_tags +EXPORT_SYMBOL vmlinux 0x4e3567f7 match_int +EXPORT_SYMBOL vmlinux 0x4e43bea2 mdiobus_free +EXPORT_SYMBOL vmlinux 0x4e633837 inode_claim_rsv_space +EXPORT_SYMBOL vmlinux 0x4e68e9be rb_next_postorder +EXPORT_SYMBOL vmlinux 0x4e6e8ea7 fg_console +EXPORT_SYMBOL vmlinux 0x4e716ac1 vlan_ioctl_set +EXPORT_SYMBOL vmlinux 0x4e86ff49 devm_release_resource +EXPORT_SYMBOL vmlinux 0x4e8a3e9c of_phy_attach +EXPORT_SYMBOL vmlinux 0x4e8d0066 vga_set_legacy_decoding +EXPORT_SYMBOL vmlinux 0x4e9dffb5 ip_fast_csum +EXPORT_SYMBOL vmlinux 0x4e9f412e arp_send +EXPORT_SYMBOL vmlinux 0x4ec90034 ndo_dflt_fdb_dump +EXPORT_SYMBOL vmlinux 0x4ecbe253 register_netdev +EXPORT_SYMBOL vmlinux 0x4ecd527e of_get_ddr_timings +EXPORT_SYMBOL vmlinux 0x4edc40fc mach_powernv +EXPORT_SYMBOL vmlinux 0x4edd72f7 block_all_signals +EXPORT_SYMBOL vmlinux 0x4efb1018 sdev_prefix_printk +EXPORT_SYMBOL vmlinux 0x4f024e18 of_get_next_parent +EXPORT_SYMBOL vmlinux 0x4f02fa9c dev_notice +EXPORT_SYMBOL vmlinux 0x4f132f05 vm_map_ram +EXPORT_SYMBOL vmlinux 0x4f1cd128 security_tun_dev_create +EXPORT_SYMBOL vmlinux 0x4f1dcf66 dcb_getapp +EXPORT_SYMBOL vmlinux 0x4f2250ba rtc_tm_to_time64 +EXPORT_SYMBOL vmlinux 0x4f33123a path_put +EXPORT_SYMBOL vmlinux 0x4f391d0e nla_parse +EXPORT_SYMBOL vmlinux 0x4f476e96 init_cdrom_command +EXPORT_SYMBOL vmlinux 0x4f58b743 nd_integrity_init +EXPORT_SYMBOL vmlinux 0x4f68e5c9 do_gettimeofday +EXPORT_SYMBOL vmlinux 0x4f6a1fa3 md_cluster_mod +EXPORT_SYMBOL vmlinux 0x4f6f914e thaw_super +EXPORT_SYMBOL vmlinux 0x4f7a8bd0 tty_devnum +EXPORT_SYMBOL vmlinux 0x4f7ff928 register_cdrom +EXPORT_SYMBOL vmlinux 0x4f9952f7 genphy_soft_reset +EXPORT_SYMBOL vmlinux 0x4fa478de blk_get_queue +EXPORT_SYMBOL vmlinux 0x4fb9a86e set_disk_ro +EXPORT_SYMBOL vmlinux 0x4fcd0a27 pcie_capability_read_dword +EXPORT_SYMBOL vmlinux 0x4fcfbc9a __xfrm_route_forward +EXPORT_SYMBOL vmlinux 0x4fdee897 i8042_command +EXPORT_SYMBOL vmlinux 0x4fe35568 sock_kfree_s +EXPORT_SYMBOL vmlinux 0x4feea01b jbd2_journal_clear_features +EXPORT_SYMBOL vmlinux 0x50097088 security_tun_dev_free_security +EXPORT_SYMBOL vmlinux 0x5021440a dquot_commit +EXPORT_SYMBOL vmlinux 0x5021e6de param_set_byte +EXPORT_SYMBOL vmlinux 0x50305e3f agp_copy_info +EXPORT_SYMBOL vmlinux 0x5063df40 __posix_acl_create +EXPORT_SYMBOL vmlinux 0x506522be tcp_req_err +EXPORT_SYMBOL vmlinux 0x5072bd88 vlan_dev_vlan_id +EXPORT_SYMBOL vmlinux 0x507d822f d_obtain_alias +EXPORT_SYMBOL vmlinux 0x508d3247 kthread_bind +EXPORT_SYMBOL vmlinux 0x50a90e8d bsearch +EXPORT_SYMBOL vmlinux 0x50ba769a kblockd_schedule_work +EXPORT_SYMBOL vmlinux 0x50bc5039 dev_add_pack +EXPORT_SYMBOL vmlinux 0x50c51d70 request_key_async_with_auxdata +EXPORT_SYMBOL vmlinux 0x50c51e0e xfrm_lookup_route +EXPORT_SYMBOL vmlinux 0x50c5a341 blk_mq_requeue_request +EXPORT_SYMBOL vmlinux 0x50ccb346 of_translate_address +EXPORT_SYMBOL vmlinux 0x50da77e0 __blkdev_reread_part +EXPORT_SYMBOL vmlinux 0x50ded37c __posix_acl_chmod +EXPORT_SYMBOL vmlinux 0x50fa2c8f serial8250_do_pm +EXPORT_SYMBOL vmlinux 0x5112679a vlan_dev_vlan_proto +EXPORT_SYMBOL vmlinux 0x51164ad9 cmdline_parts_set +EXPORT_SYMBOL vmlinux 0x5118c382 secure_dccp_sequence_number +EXPORT_SYMBOL vmlinux 0x512c754c phy_attach_direct +EXPORT_SYMBOL vmlinux 0x5134c737 scsi_host_get +EXPORT_SYMBOL vmlinux 0x515ac220 skb_copy_and_csum_bits +EXPORT_SYMBOL vmlinux 0x515f9ab1 xfrm_state_add +EXPORT_SYMBOL vmlinux 0x51607a32 dm_put_device +EXPORT_SYMBOL vmlinux 0x5170bd3d input_event +EXPORT_SYMBOL vmlinux 0x517a4d07 backlight_force_update +EXPORT_SYMBOL vmlinux 0x517bf727 sock_get_timestamp +EXPORT_SYMBOL vmlinux 0x519b0da3 finish_wait +EXPORT_SYMBOL vmlinux 0x51d15c32 should_remove_suid +EXPORT_SYMBOL vmlinux 0x51e3a853 elevator_alloc +EXPORT_SYMBOL vmlinux 0x52026cdf security_sb_parse_opts_str +EXPORT_SYMBOL vmlinux 0x520c14b9 mutex_lock_interruptible +EXPORT_SYMBOL vmlinux 0x521b36b5 qdisc_put_rtab +EXPORT_SYMBOL vmlinux 0x52428cc8 parent_mem_cgroup +EXPORT_SYMBOL vmlinux 0x526e661b kmem_cache_create +EXPORT_SYMBOL vmlinux 0x52885b8f blk_queue_softirq_done +EXPORT_SYMBOL vmlinux 0x52983a4f vme_master_write +EXPORT_SYMBOL vmlinux 0x52a47ceb kernel_sock_shutdown +EXPORT_SYMBOL vmlinux 0x52a4deeb __i2c_transfer +EXPORT_SYMBOL vmlinux 0x52e32565 scsi_ioctl_reset +EXPORT_SYMBOL vmlinux 0x52e73d17 inet_frag_destroy +EXPORT_SYMBOL vmlinux 0x52f969b7 blk_complete_request +EXPORT_SYMBOL vmlinux 0x52fe5b25 vfs_write +EXPORT_SYMBOL vmlinux 0x530b1e98 pm_suspend +EXPORT_SYMBOL vmlinux 0x53197c18 page_cache_prev_hole +EXPORT_SYMBOL vmlinux 0x5324029a phy_suspend +EXPORT_SYMBOL vmlinux 0x53326531 mempool_alloc_pages +EXPORT_SYMBOL vmlinux 0x5359d60d ethtool_op_get_ts_info +EXPORT_SYMBOL vmlinux 0x535c8308 vme_dma_pattern_attribute +EXPORT_SYMBOL vmlinux 0x536cc847 memcg_kmem_enabled_key +EXPORT_SYMBOL vmlinux 0x53774f42 dev_alloc_name +EXPORT_SYMBOL vmlinux 0x5377e556 hex2bin +EXPORT_SYMBOL vmlinux 0x539a59d4 serio_unregister_driver +EXPORT_SYMBOL vmlinux 0x539af73c __sg_alloc_table +EXPORT_SYMBOL vmlinux 0x53a486c4 __ip4_datagram_connect +EXPORT_SYMBOL vmlinux 0x53c2cc75 pm860x_page_reg_write +EXPORT_SYMBOL vmlinux 0x53d0fd4b nf_log_unset +EXPORT_SYMBOL vmlinux 0x53d4b7cd giveup_vsx +EXPORT_SYMBOL vmlinux 0x53ebab1b _outsl_ns +EXPORT_SYMBOL vmlinux 0x53f22470 pci_wait_for_pending_transaction +EXPORT_SYMBOL vmlinux 0x5409775b free_irq_cpu_rmap +EXPORT_SYMBOL vmlinux 0x5412c7c7 up +EXPORT_SYMBOL vmlinux 0x5422bb47 vfs_rename +EXPORT_SYMBOL vmlinux 0x54245b39 kstrtoull_from_user +EXPORT_SYMBOL vmlinux 0x543ef284 seq_hlist_start +EXPORT_SYMBOL vmlinux 0x54486293 __elv_add_request +EXPORT_SYMBOL vmlinux 0x54502b84 pid_task +EXPORT_SYMBOL vmlinux 0x545a6681 no_llseek +EXPORT_SYMBOL vmlinux 0x54a9db5f _kstrtoul +EXPORT_SYMBOL vmlinux 0x54c256e0 vme_check_window +EXPORT_SYMBOL vmlinux 0x54e6fcdd net_enable_timestamp +EXPORT_SYMBOL vmlinux 0x55036f5c __dst_destroy_metrics_generic +EXPORT_SYMBOL vmlinux 0x55077b92 sk_prot_clear_portaddr_nulls +EXPORT_SYMBOL vmlinux 0x551bd071 __rb_erase_color +EXPORT_SYMBOL vmlinux 0x5534d1da __pci_enable_wake +EXPORT_SYMBOL vmlinux 0x553adb62 posix_acl_chmod +EXPORT_SYMBOL vmlinux 0x5541ea93 on_each_cpu +EXPORT_SYMBOL vmlinux 0x55495ab6 fddi_type_trans +EXPORT_SYMBOL vmlinux 0x554bc254 iget5_locked +EXPORT_SYMBOL vmlinux 0x554ec417 netif_device_attach +EXPORT_SYMBOL vmlinux 0x5567c227 kernel_cpustat +EXPORT_SYMBOL vmlinux 0x5568c553 complete +EXPORT_SYMBOL vmlinux 0x556ce452 devm_request_threaded_irq +EXPORT_SYMBOL vmlinux 0x556f30fc inet_addr_type +EXPORT_SYMBOL vmlinux 0x556f4193 frontswap_register_ops +EXPORT_SYMBOL vmlinux 0x55751042 inode_set_flags +EXPORT_SYMBOL vmlinux 0x5577ef9e udp_table +EXPORT_SYMBOL vmlinux 0x557cc0be ppp_register_net_channel +EXPORT_SYMBOL vmlinux 0x55d481c9 hdmi_infoframe_unpack +EXPORT_SYMBOL vmlinux 0x55dbbc77 cdrom_ioctl +EXPORT_SYMBOL vmlinux 0x55e0f264 jbd2_journal_check_available_features +EXPORT_SYMBOL vmlinux 0x55e2d896 inet_register_protosw +EXPORT_SYMBOL vmlinux 0x55e65c01 srp_rport_get +EXPORT_SYMBOL vmlinux 0x55f5019b __kmalloc_node +EXPORT_SYMBOL vmlinux 0x56087f13 blk_queue_dma_alignment +EXPORT_SYMBOL vmlinux 0x561c6f8a devfreq_monitor_resume +EXPORT_SYMBOL vmlinux 0x5635a60a vmalloc_user +EXPORT_SYMBOL vmlinux 0x563c86f0 scsi_bios_ptable +EXPORT_SYMBOL vmlinux 0x565dda50 alloc_skb_with_frags +EXPORT_SYMBOL vmlinux 0x5663273e scm_fp_dup +EXPORT_SYMBOL vmlinux 0x566d3db1 __inode_permission +EXPORT_SYMBOL vmlinux 0x5671f9aa __nd_iostat_start +EXPORT_SYMBOL vmlinux 0x5672e901 __dax_fault +EXPORT_SYMBOL vmlinux 0x567c29b9 eth_mac_addr +EXPORT_SYMBOL vmlinux 0x569467d8 __qdisc_calculate_pkt_len +EXPORT_SYMBOL vmlinux 0x56b4b0b2 check_disk_size_change +EXPORT_SYMBOL vmlinux 0x56c010f6 dev_uc_add_excl +EXPORT_SYMBOL vmlinux 0x56c2b95b rtas_progress +EXPORT_SYMBOL vmlinux 0x56c8799d scsi_kunmap_atomic_sg +EXPORT_SYMBOL vmlinux 0x56f24077 scsi_dma_unmap +EXPORT_SYMBOL vmlinux 0x56f6c7de lockref_get_not_zero +EXPORT_SYMBOL vmlinux 0x56fad16e scsi_print_result +EXPORT_SYMBOL vmlinux 0x5707289c freeze_super +EXPORT_SYMBOL vmlinux 0x570728d2 abx500_set_register_interruptible +EXPORT_SYMBOL vmlinux 0x570f8091 mmc_alloc_host +EXPORT_SYMBOL vmlinux 0x571213f8 __ww_mutex_lock_interruptible +EXPORT_SYMBOL vmlinux 0x571324fe disk_stack_limits +EXPORT_SYMBOL vmlinux 0x572647d6 get_mce_fault_addr +EXPORT_SYMBOL vmlinux 0x572e85d4 blk_lookup_devt +EXPORT_SYMBOL vmlinux 0x572f643a vme_irq_handler +EXPORT_SYMBOL vmlinux 0x57314f2c mount_bdev +EXPORT_SYMBOL vmlinux 0x57426be7 scsi_host_alloc +EXPORT_SYMBOL vmlinux 0x574a5f60 netlink_kernel_release +EXPORT_SYMBOL vmlinux 0x574c2e74 bitmap_release_region +EXPORT_SYMBOL vmlinux 0x574c6f77 xfrm_state_update +EXPORT_SYMBOL vmlinux 0x57575f08 dmaengine_put +EXPORT_SYMBOL vmlinux 0x575f0a52 sock_from_file +EXPORT_SYMBOL vmlinux 0x575f5ea7 xfrm_state_flush +EXPORT_SYMBOL vmlinux 0x57674fd7 __sw_hweight16 +EXPORT_SYMBOL vmlinux 0x577d35f3 hdmi_avi_infoframe_pack +EXPORT_SYMBOL vmlinux 0x577f57d5 led_set_brightness +EXPORT_SYMBOL vmlinux 0x5787fa3a phy_ethtool_set_eee +EXPORT_SYMBOL vmlinux 0x5792f848 strlcpy +EXPORT_SYMBOL vmlinux 0x579fc010 mfd_cell_disable +EXPORT_SYMBOL vmlinux 0x57ce39d5 elv_unregister_queue +EXPORT_SYMBOL vmlinux 0x57e5f0d0 tty_unregister_driver +EXPORT_SYMBOL vmlinux 0x57f6e745 kobject_init +EXPORT_SYMBOL vmlinux 0x580d32d4 mipi_dsi_dcs_write +EXPORT_SYMBOL vmlinux 0x5819def3 blk_integrity_merge_bio +EXPORT_SYMBOL vmlinux 0x581f98da zlib_inflate +EXPORT_SYMBOL vmlinux 0x582c1be3 skb_pad +EXPORT_SYMBOL vmlinux 0x5838f6c9 rtc_valid_tm +EXPORT_SYMBOL vmlinux 0x583e5401 xfrm6_rcv_spi +EXPORT_SYMBOL vmlinux 0x584466b4 netif_wake_subqueue +EXPORT_SYMBOL vmlinux 0x584d7288 thermal_cdev_update +EXPORT_SYMBOL vmlinux 0x584e8e08 bdevname +EXPORT_SYMBOL vmlinux 0x5857b225 ioread16_rep +EXPORT_SYMBOL vmlinux 0x585b4026 security_file_permission +EXPORT_SYMBOL vmlinux 0x5868d803 pci_set_dma_max_seg_size +EXPORT_SYMBOL vmlinux 0x586e5d65 da903x_query_status +EXPORT_SYMBOL vmlinux 0x587616f1 vfs_fstatat +EXPORT_SYMBOL vmlinux 0x589ffe99 dev_add_offload +EXPORT_SYMBOL vmlinux 0x58b73bc7 match_wildcard +EXPORT_SYMBOL vmlinux 0x5917625f sock_no_listen +EXPORT_SYMBOL vmlinux 0x59236f21 skb_push +EXPORT_SYMBOL vmlinux 0x594bf15b ioport_map +EXPORT_SYMBOL vmlinux 0x595d0946 empty_zero_page +EXPORT_SYMBOL vmlinux 0x5967943c ipv6_dev_get_saddr +EXPORT_SYMBOL vmlinux 0x5967c929 __tracepoint_kmem_cache_alloc_node +EXPORT_SYMBOL vmlinux 0x598386ce pcie_set_readrq +EXPORT_SYMBOL vmlinux 0x598dcc24 ata_port_printk +EXPORT_SYMBOL vmlinux 0x598e4904 mod_timer_pending +EXPORT_SYMBOL vmlinux 0x599a7753 xfrm6_rcv_cb +EXPORT_SYMBOL vmlinux 0x599d031c tcf_hash_insert +EXPORT_SYMBOL vmlinux 0x59aa14cf fence_release +EXPORT_SYMBOL vmlinux 0x59aa1652 __lock_page +EXPORT_SYMBOL vmlinux 0x59b3378a completion_done +EXPORT_SYMBOL vmlinux 0x59bf5963 xfrm_policy_register_afinfo +EXPORT_SYMBOL vmlinux 0x59cab52e skb_copy +EXPORT_SYMBOL vmlinux 0x59f23b8d param_ops_short +EXPORT_SYMBOL vmlinux 0x59f2e7f8 dquot_alloc_inode +EXPORT_SYMBOL vmlinux 0x5a025f7b arch_local_irq_restore +EXPORT_SYMBOL vmlinux 0x5a0aaa12 proc_doulongvec_ms_jiffies_minmax +EXPORT_SYMBOL vmlinux 0x5a0b73d0 zlib_deflateInit2 +EXPORT_SYMBOL vmlinux 0x5a1be442 dquot_get_dqblk +EXPORT_SYMBOL vmlinux 0x5a22345e vfs_create +EXPORT_SYMBOL vmlinux 0x5a40f11b padata_remove_cpu +EXPORT_SYMBOL vmlinux 0x5a6bc921 xfrm_state_delete_tunnel +EXPORT_SYMBOL vmlinux 0x5a78ebd5 compat_sock_get_timestampns +EXPORT_SYMBOL vmlinux 0x5a87e3f8 of_phy_connect +EXPORT_SYMBOL vmlinux 0x5a8ad2ce truncate_inode_pages_range +EXPORT_SYMBOL vmlinux 0x5a921311 strncmp +EXPORT_SYMBOL vmlinux 0x5a983fe6 free_inode_nonrcu +EXPORT_SYMBOL vmlinux 0x5a9bc54c request_key_with_auxdata +EXPORT_SYMBOL vmlinux 0x5a9f1d63 memmove +EXPORT_SYMBOL vmlinux 0x5acc120e iov_iter_fault_in_readable +EXPORT_SYMBOL vmlinux 0x5aff4177 vme_lm_get +EXPORT_SYMBOL vmlinux 0x5b070319 __find_get_block +EXPORT_SYMBOL vmlinux 0x5b2f740b __dev_get_by_flags +EXPORT_SYMBOL vmlinux 0x5b369534 unregister_netdev +EXPORT_SYMBOL vmlinux 0x5b43f1f1 rtas_service_present +EXPORT_SYMBOL vmlinux 0x5b44ca15 del_random_ready_callback +EXPORT_SYMBOL vmlinux 0x5b4d18de tcf_register_action +EXPORT_SYMBOL vmlinux 0x5b549700 do_splice_direct +EXPORT_SYMBOL vmlinux 0x5b56860c vm_munmap +EXPORT_SYMBOL vmlinux 0x5b73bfaa pm8606_osc_enable +EXPORT_SYMBOL vmlinux 0x5b74cad9 of_create_pci_dev +EXPORT_SYMBOL vmlinux 0x5b9828c5 dma_spin_lock +EXPORT_SYMBOL vmlinux 0x5bc10524 printk_emit +EXPORT_SYMBOL vmlinux 0x5bedf0ba __netlink_dump_start +EXPORT_SYMBOL vmlinux 0x5bf15518 kthread_create_on_node +EXPORT_SYMBOL vmlinux 0x5c151c54 add_to_page_cache_locked +EXPORT_SYMBOL vmlinux 0x5c1d9338 compat_ip_setsockopt +EXPORT_SYMBOL vmlinux 0x5c30ad69 dcb_setapp +EXPORT_SYMBOL vmlinux 0x5c36f0f7 write_one_page +EXPORT_SYMBOL vmlinux 0x5c37f319 _raw_spin_unlock_irqrestore +EXPORT_SYMBOL vmlinux 0x5c42117a mmc_start_bkops +EXPORT_SYMBOL vmlinux 0x5ca490ca rwsem_downgrade_wake +EXPORT_SYMBOL vmlinux 0x5ce4ca5d skb_free_datagram_locked +EXPORT_SYMBOL vmlinux 0x5cf30e10 __debugger_ipi +EXPORT_SYMBOL vmlinux 0x5cf53ce2 input_free_minor +EXPORT_SYMBOL vmlinux 0x5cf7d4e5 flush_dcache_icache_page +EXPORT_SYMBOL vmlinux 0x5d0a6181 sk_stream_wait_connect +EXPORT_SYMBOL vmlinux 0x5d320233 tty_hung_up_p +EXPORT_SYMBOL vmlinux 0x5d43856e pci_select_bars +EXPORT_SYMBOL vmlinux 0x5d541734 iget_locked +EXPORT_SYMBOL vmlinux 0x5d550c4d scsi_sd_probe_domain +EXPORT_SYMBOL vmlinux 0x5d62b16f skb_try_coalesce +EXPORT_SYMBOL vmlinux 0x5d686548 xfrm_dst_ifdown +EXPORT_SYMBOL vmlinux 0x5d7a197e vme_irq_generate +EXPORT_SYMBOL vmlinux 0x5da8b6b9 of_platform_bus_probe +EXPORT_SYMBOL vmlinux 0x5daa91e9 truncate_setsize +EXPORT_SYMBOL vmlinux 0x5dba60dc pci_enable_device_io +EXPORT_SYMBOL vmlinux 0x5dbbf727 copy_strings_kernel +EXPORT_SYMBOL vmlinux 0x5dc6d811 devm_kvasprintf +EXPORT_SYMBOL vmlinux 0x5dceb5ff generic_permission +EXPORT_SYMBOL vmlinux 0x5e336987 flex_array_prealloc +EXPORT_SYMBOL vmlinux 0x5e3a8a9c __wake_up +EXPORT_SYMBOL vmlinux 0x5e3ca42a xfrm_state_alloc +EXPORT_SYMBOL vmlinux 0x5e4910aa netdev_notify_peers +EXPORT_SYMBOL vmlinux 0x5e8310a6 set_page_dirty +EXPORT_SYMBOL vmlinux 0x5e88b82f mnt_set_expiry +EXPORT_SYMBOL vmlinux 0x5e927703 i2c_del_driver +EXPORT_SYMBOL vmlinux 0x5e95b1cd current_umask +EXPORT_SYMBOL vmlinux 0x5eaf30e4 blk_queue_max_write_same_sectors +EXPORT_SYMBOL vmlinux 0x5eb24829 dm_shift_arg +EXPORT_SYMBOL vmlinux 0x5ebb601a devfreq_interval_update +EXPORT_SYMBOL vmlinux 0x5ed040b0 pm_set_vt_switch +EXPORT_SYMBOL vmlinux 0x5ed63af6 blk_mq_end_request +EXPORT_SYMBOL vmlinux 0x5eddb914 lockref_put_return +EXPORT_SYMBOL vmlinux 0x5eddd498 fib_default_rule_add +EXPORT_SYMBOL vmlinux 0x5eecbb65 elv_rb_former_request +EXPORT_SYMBOL vmlinux 0x5f005368 kstrtou8 +EXPORT_SYMBOL vmlinux 0x5f06f70d netlink_broadcast_filtered +EXPORT_SYMBOL vmlinux 0x5f098b2a in6addr_interfacelocal_allrouters +EXPORT_SYMBOL vmlinux 0x5f12b05d skb_dequeue_tail +EXPORT_SYMBOL vmlinux 0x5f1da5e7 dquot_acquire +EXPORT_SYMBOL vmlinux 0x5f1e4e91 udp_add_offload +EXPORT_SYMBOL vmlinux 0x5f605fbf dev_get_phys_port_id +EXPORT_SYMBOL vmlinux 0x5f82404d inet_frags_fini +EXPORT_SYMBOL vmlinux 0x5f8a2728 isa_io_base +EXPORT_SYMBOL vmlinux 0x5f948cc3 vme_new_dma_list +EXPORT_SYMBOL vmlinux 0x5f9a525b pci_domain_nr +EXPORT_SYMBOL vmlinux 0x5fb0a502 flow_cache_lookup +EXPORT_SYMBOL vmlinux 0x5fd01586 simple_follow_link +EXPORT_SYMBOL vmlinux 0x5fda0227 vfs_stat +EXPORT_SYMBOL vmlinux 0x5fdc828a dma_pool_create +EXPORT_SYMBOL vmlinux 0x5fe40a05 pci_bus_alloc_resource +EXPORT_SYMBOL vmlinux 0x600683d3 do_unblank_screen +EXPORT_SYMBOL vmlinux 0x600b6f4a mutex_trylock +EXPORT_SYMBOL vmlinux 0x601f665f dm_io_client_create +EXPORT_SYMBOL vmlinux 0x602706e2 km_state_expired +EXPORT_SYMBOL vmlinux 0x60303968 udp_prot +EXPORT_SYMBOL vmlinux 0x6031af5e __alloc_pages_nodemask +EXPORT_SYMBOL vmlinux 0x60352082 register_inet6addr_notifier +EXPORT_SYMBOL vmlinux 0x605ca3e2 skb_checksum_help +EXPORT_SYMBOL vmlinux 0x606d0b09 secure_tcpv6_sequence_number +EXPORT_SYMBOL vmlinux 0x606e4af7 i2c_master_recv +EXPORT_SYMBOL vmlinux 0x6090845b __skb_get_hash_flowi4 +EXPORT_SYMBOL vmlinux 0x6091644e flow_keys_dissector +EXPORT_SYMBOL vmlinux 0x609f1c7e synchronize_net +EXPORT_SYMBOL vmlinux 0x60a87532 of_find_net_device_by_node +EXPORT_SYMBOL vmlinux 0x60cca1db giveup_altivec +EXPORT_SYMBOL vmlinux 0x60ddcc92 __sk_backlog_rcv +EXPORT_SYMBOL vmlinux 0x60df1e3b posix_acl_equiv_mode +EXPORT_SYMBOL vmlinux 0x60e0210d make_kgid +EXPORT_SYMBOL vmlinux 0x61096eba blk_queue_invalidate_tags +EXPORT_SYMBOL vmlinux 0x6128b5fc __printk_ratelimit +EXPORT_SYMBOL vmlinux 0x61308e81 genphy_update_link +EXPORT_SYMBOL vmlinux 0x61401575 simple_transaction_release +EXPORT_SYMBOL vmlinux 0x6141b518 ps2_end_command +EXPORT_SYMBOL vmlinux 0x614bb773 radix_tree_insert +EXPORT_SYMBOL vmlinux 0x615084d7 inet_stream_ops +EXPORT_SYMBOL vmlinux 0x616b81d2 blk_queue_prep_rq +EXPORT_SYMBOL vmlinux 0x618911fc numa_node +EXPORT_SYMBOL vmlinux 0x619cb7dd simple_read_from_buffer +EXPORT_SYMBOL vmlinux 0x61a7021b get_super_thawed +EXPORT_SYMBOL vmlinux 0x61af48b8 trace_print_array_seq +EXPORT_SYMBOL vmlinux 0x61b7b126 simple_strtoull +EXPORT_SYMBOL vmlinux 0x61c1b309 devm_devfreq_add_device +EXPORT_SYMBOL vmlinux 0x61da3ff2 tcp_timewait_state_process +EXPORT_SYMBOL vmlinux 0x61e7e75f t10_pi_type1_ip +EXPORT_SYMBOL vmlinux 0x61eef2c9 _insb +EXPORT_SYMBOL vmlinux 0x61fc6d33 of_node_put +EXPORT_SYMBOL vmlinux 0x6214aef2 cpufreq_unregister_notifier +EXPORT_SYMBOL vmlinux 0x621fcf8b sock_release +EXPORT_SYMBOL vmlinux 0x6225637e md5_transform +EXPORT_SYMBOL vmlinux 0x6228c21f smp_call_function_single +EXPORT_SYMBOL vmlinux 0x623d720b cdrom_mode_sense +EXPORT_SYMBOL vmlinux 0x624b3073 fb_firmware_edid +EXPORT_SYMBOL vmlinux 0x626fdee2 ip_mc_leave_group +EXPORT_SYMBOL vmlinux 0x62737e1d sock_unregister +EXPORT_SYMBOL vmlinux 0x62827bec security_secctx_to_secid +EXPORT_SYMBOL vmlinux 0x62849ac7 dev_valid_name +EXPORT_SYMBOL vmlinux 0x6295298b pci_set_power_state +EXPORT_SYMBOL vmlinux 0x62b6eaf4 csum_and_copy_to_iter +EXPORT_SYMBOL vmlinux 0x62b8ef69 __netlink_kernel_create +EXPORT_SYMBOL vmlinux 0x62d4d19f qdisc_list_add +EXPORT_SYMBOL vmlinux 0x62d4f881 pci_enable_msix +EXPORT_SYMBOL vmlinux 0x62f0d0ca compat_nf_setsockopt +EXPORT_SYMBOL vmlinux 0x62fb22aa rc5t583_ext_power_req_config +EXPORT_SYMBOL vmlinux 0x63018611 dev_mc_flush +EXPORT_SYMBOL vmlinux 0x6305655b d_delete +EXPORT_SYMBOL vmlinux 0x630d422e xfrm_state_insert +EXPORT_SYMBOL vmlinux 0x6311c6ec simple_link +EXPORT_SYMBOL vmlinux 0x63187451 pcie_aspm_support_enabled +EXPORT_SYMBOL vmlinux 0x63231951 gen_pool_create +EXPORT_SYMBOL vmlinux 0x63396aec __debugger_break_match +EXPORT_SYMBOL vmlinux 0x633e0405 __blk_mq_end_request +EXPORT_SYMBOL vmlinux 0x634904eb netdev_update_features +EXPORT_SYMBOL vmlinux 0x635316e8 input_get_keycode +EXPORT_SYMBOL vmlinux 0x6356c451 thaw_bdev +EXPORT_SYMBOL vmlinux 0x636e1c95 __sb_end_write +EXPORT_SYMBOL vmlinux 0x63a7c28c bitmap_find_free_region +EXPORT_SYMBOL vmlinux 0x63b2d1a8 module_refcount +EXPORT_SYMBOL vmlinux 0x63c02afe dentry_unhash +EXPORT_SYMBOL vmlinux 0x63c19c0d mmc_wait_for_app_cmd +EXPORT_SYMBOL vmlinux 0x63c4d61f __bitmap_weight +EXPORT_SYMBOL vmlinux 0x63c7b0d7 sock_alloc_file +EXPORT_SYMBOL vmlinux 0x63da5bc3 vfs_readf +EXPORT_SYMBOL vmlinux 0x63e26004 tty_port_open +EXPORT_SYMBOL vmlinux 0x63eb9355 panic_blink +EXPORT_SYMBOL vmlinux 0x63f99430 netif_carrier_on +EXPORT_SYMBOL vmlinux 0x63fb3a7e crypto_sha256_finup +EXPORT_SYMBOL vmlinux 0x63fc232f strlen_user +EXPORT_SYMBOL vmlinux 0x6403e338 tcp_memory_pressure +EXPORT_SYMBOL vmlinux 0x64127b67 bitmap_find_next_zero_area_off +EXPORT_SYMBOL vmlinux 0x64298d5d param_set_charp +EXPORT_SYMBOL vmlinux 0x644e8da4 elv_rb_latter_request +EXPORT_SYMBOL vmlinux 0x6455de3b xfrm_policy_bysel_ctx +EXPORT_SYMBOL vmlinux 0x6456c187 phy_drivers_register +EXPORT_SYMBOL vmlinux 0x6479f1ca scsi_print_sense_hdr +EXPORT_SYMBOL vmlinux 0x647db33a iterate_fd +EXPORT_SYMBOL vmlinux 0x648fac43 of_graph_get_remote_port_parent +EXPORT_SYMBOL vmlinux 0x64999478 congestion_wait +EXPORT_SYMBOL vmlinux 0x64bbc288 string_unescape +EXPORT_SYMBOL vmlinux 0x64db626d mutex_lock +EXPORT_SYMBOL vmlinux 0x64ed47a0 tty_port_alloc_xmit_buf +EXPORT_SYMBOL vmlinux 0x64fa4120 phy_device_free +EXPORT_SYMBOL vmlinux 0x64fe2809 pcie_capability_read_word +EXPORT_SYMBOL vmlinux 0x65048f58 msi_bitmap_free_hwirqs +EXPORT_SYMBOL vmlinux 0x6513a3fa fb_get_color_depth +EXPORT_SYMBOL vmlinux 0x651a4139 test_taint +EXPORT_SYMBOL vmlinux 0x651a8c60 inet_csk_accept +EXPORT_SYMBOL vmlinux 0x652ce9aa nla_memcmp +EXPORT_SYMBOL vmlinux 0x65359bf6 blk_queue_physical_block_size +EXPORT_SYMBOL vmlinux 0x65408378 zlib_inflate_blob +EXPORT_SYMBOL vmlinux 0x65614bf3 scsi_cmd_get_serial +EXPORT_SYMBOL vmlinux 0x656a49a0 km_state_notify +EXPORT_SYMBOL vmlinux 0x656c1a0e string_escape_mem +EXPORT_SYMBOL vmlinux 0x6572ed5b netif_set_xps_queue +EXPORT_SYMBOL vmlinux 0x6576e961 nvdimm_namespace_common_probe +EXPORT_SYMBOL vmlinux 0x65913539 __neigh_create +EXPORT_SYMBOL vmlinux 0x65b0ad82 blk_mq_add_to_requeue_list +EXPORT_SYMBOL vmlinux 0x65b3b762 of_device_unregister +EXPORT_SYMBOL vmlinux 0x65bb58a2 _raw_read_trylock +EXPORT_SYMBOL vmlinux 0x65c112cd vfs_fsync +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 0x65e2051f skb_make_writable +EXPORT_SYMBOL vmlinux 0x65f3ad9a fb_videomode_to_var +EXPORT_SYMBOL vmlinux 0x65fd3130 sk_send_sigurg +EXPORT_SYMBOL vmlinux 0x6601eff5 pm_vt_switch_required +EXPORT_SYMBOL vmlinux 0x660d8c11 dev_trans_start +EXPORT_SYMBOL vmlinux 0x66284888 vlan_vids_add_by_dev +EXPORT_SYMBOL vmlinux 0x6629b6c5 devm_gpio_free +EXPORT_SYMBOL vmlinux 0x665a58b1 __nla_put_nohdr +EXPORT_SYMBOL vmlinux 0x666f73df set_security_override +EXPORT_SYMBOL vmlinux 0x66721d46 max8998_update_reg +EXPORT_SYMBOL vmlinux 0x66754be3 gen_new_estimator +EXPORT_SYMBOL vmlinux 0x668a51f4 param_get_ushort +EXPORT_SYMBOL vmlinux 0x669f256d mnt_drop_write_file +EXPORT_SYMBOL vmlinux 0x66a5e700 netpoll_print_options +EXPORT_SYMBOL vmlinux 0x66a75518 inet6_register_protosw +EXPORT_SYMBOL vmlinux 0x671173e5 tty_port_lower_dtr_rts +EXPORT_SYMBOL vmlinux 0x6726e211 key_task_permission +EXPORT_SYMBOL vmlinux 0x672a4a4c of_n_addr_cells +EXPORT_SYMBOL vmlinux 0x6734a5fa register_netdevice +EXPORT_SYMBOL vmlinux 0x6739b2ae xfrm_policy_hash_rebuild +EXPORT_SYMBOL vmlinux 0x673f815e agp_bridges +EXPORT_SYMBOL vmlinux 0x6767805f __generic_file_fsync +EXPORT_SYMBOL vmlinux 0x6769da75 d_alloc +EXPORT_SYMBOL vmlinux 0x676c30bd mmc_gpiod_request_ro +EXPORT_SYMBOL vmlinux 0x67733cf4 mb_cache_create +EXPORT_SYMBOL vmlinux 0x678235e7 tcp_md5_do_add +EXPORT_SYMBOL vmlinux 0x679df748 unmap_underlying_metadata +EXPORT_SYMBOL vmlinux 0x67b78eb3 seq_hlist_next_rcu +EXPORT_SYMBOL vmlinux 0x67dcb66e vga_con +EXPORT_SYMBOL vmlinux 0x67f167e9 param_set_uint +EXPORT_SYMBOL vmlinux 0x680189e4 mmc_erase +EXPORT_SYMBOL vmlinux 0x6808b453 __unregister_cpu_notifier +EXPORT_SYMBOL vmlinux 0x6829d158 jbd2_log_wait_commit +EXPORT_SYMBOL vmlinux 0x6834626f dquot_get_state +EXPORT_SYMBOL vmlinux 0x68419b41 __sk_dst_check +EXPORT_SYMBOL vmlinux 0x684c458c ppp_output_wakeup +EXPORT_SYMBOL vmlinux 0x68609857 complete_and_exit +EXPORT_SYMBOL vmlinux 0x687b6a16 kdbgetsymval +EXPORT_SYMBOL vmlinux 0x68b83ac6 posix_acl_alloc +EXPORT_SYMBOL vmlinux 0x68b88cac blk_queue_io_opt +EXPORT_SYMBOL vmlinux 0x68b8f3e5 fd_install +EXPORT_SYMBOL vmlinux 0x68cfcbbe noop_llseek +EXPORT_SYMBOL vmlinux 0x68dc9def agp_alloc_page_array +EXPORT_SYMBOL vmlinux 0x68ffa1c1 from_kgid +EXPORT_SYMBOL vmlinux 0x6900d8dd dev_get_iflink +EXPORT_SYMBOL vmlinux 0x6912f08d napi_complete_done +EXPORT_SYMBOL vmlinux 0x69161bfc inode_set_bytes +EXPORT_SYMBOL vmlinux 0x691c21ba simple_readpage +EXPORT_SYMBOL vmlinux 0x69232f75 i2c_smbus_write_byte_data +EXPORT_SYMBOL vmlinux 0x695d7e43 scsi_free_host_dev +EXPORT_SYMBOL vmlinux 0x6971447a rtc_month_days +EXPORT_SYMBOL vmlinux 0x697254f2 inode_permission +EXPORT_SYMBOL vmlinux 0x69765cf0 alloc_netdev_mqs +EXPORT_SYMBOL vmlinux 0x697d9f44 genphy_aneg_done +EXPORT_SYMBOL vmlinux 0x69a0ca7d iowrite16be +EXPORT_SYMBOL vmlinux 0x69a358a6 iomem_resource +EXPORT_SYMBOL vmlinux 0x69ad2f20 kstrtouint +EXPORT_SYMBOL vmlinux 0x69cda4f0 follow_down +EXPORT_SYMBOL vmlinux 0x69df6b41 blk_requeue_request +EXPORT_SYMBOL vmlinux 0x69edd2d9 sock_recv_errqueue +EXPORT_SYMBOL vmlinux 0x69f32ac7 bitmap_end_sync +EXPORT_SYMBOL vmlinux 0x69f523f4 inet_sock_destruct +EXPORT_SYMBOL vmlinux 0x6a037cf1 mempool_kfree +EXPORT_SYMBOL vmlinux 0x6a291790 filemap_fdatawait_range +EXPORT_SYMBOL vmlinux 0x6a4b24ce kobject_set_name +EXPORT_SYMBOL vmlinux 0x6a5568cc of_get_pci_address +EXPORT_SYMBOL vmlinux 0x6a5ecb18 unregister_module_notifier +EXPORT_SYMBOL vmlinux 0x6a5fa363 sigprocmask +EXPORT_SYMBOL vmlinux 0x6a6737b2 page_symlink +EXPORT_SYMBOL vmlinux 0x6a740c54 gen_pool_for_each_chunk +EXPORT_SYMBOL vmlinux 0x6a76f3ac blk_iopoll_enable +EXPORT_SYMBOL vmlinux 0x6a8332b4 d_walk +EXPORT_SYMBOL vmlinux 0x6a8a4fe0 md_update_sb +EXPORT_SYMBOL vmlinux 0x6aa1c4a3 sock_no_sendmsg +EXPORT_SYMBOL vmlinux 0x6aba2b22 mmc_free_host +EXPORT_SYMBOL vmlinux 0x6abbdaea phy_resume +EXPORT_SYMBOL vmlinux 0x6acafd5b cookie_timestamp_decode +EXPORT_SYMBOL vmlinux 0x6acb973d iowrite32be +EXPORT_SYMBOL vmlinux 0x6ad80b67 sb_set_blocksize +EXPORT_SYMBOL vmlinux 0x6ae878af phy_mii_ioctl +EXPORT_SYMBOL vmlinux 0x6aeefac4 zlib_deflateReset +EXPORT_SYMBOL vmlinux 0x6aefef68 ip_options_compile +EXPORT_SYMBOL vmlinux 0x6af1f3fc __cleancache_init_fs +EXPORT_SYMBOL vmlinux 0x6afc9a3e xfrm_policy_insert +EXPORT_SYMBOL vmlinux 0x6aff8b05 kfree_skb +EXPORT_SYMBOL vmlinux 0x6b06fdce delayed_work_timer_fn +EXPORT_SYMBOL vmlinux 0x6b09562e __module_put_and_exit +EXPORT_SYMBOL vmlinux 0x6b1b67d3 __bdevname +EXPORT_SYMBOL vmlinux 0x6b1e918b capable_wrt_inode_uidgid +EXPORT_SYMBOL vmlinux 0x6b2dc060 dump_stack +EXPORT_SYMBOL vmlinux 0x6b2f8a1b dev_err +EXPORT_SYMBOL vmlinux 0x6b5270b3 neigh_destroy +EXPORT_SYMBOL vmlinux 0x6b5dfe73 __debugger_bpt +EXPORT_SYMBOL vmlinux 0x6b640864 nla_strlcpy +EXPORT_SYMBOL vmlinux 0x6b66c889 fence_free +EXPORT_SYMBOL vmlinux 0x6b746453 ptp_clock_index +EXPORT_SYMBOL vmlinux 0x6b75c046 scsi_cmd_blk_ioctl +EXPORT_SYMBOL vmlinux 0x6b7acb5e param_ops_long +EXPORT_SYMBOL vmlinux 0x6b92d2ac d_add_ci +EXPORT_SYMBOL vmlinux 0x6b94ea9d mmc_set_blockcount +EXPORT_SYMBOL vmlinux 0x6b9f1a6e generic_file_llseek_size +EXPORT_SYMBOL vmlinux 0x6bac371c follow_up +EXPORT_SYMBOL vmlinux 0x6bbb27d5 set_wb_congested +EXPORT_SYMBOL vmlinux 0x6bbb7c0a misc_register +EXPORT_SYMBOL vmlinux 0x6bc3fbc0 __unregister_chrdev +EXPORT_SYMBOL vmlinux 0x6bdcfd99 qdisc_class_hash_remove +EXPORT_SYMBOL vmlinux 0x6c09c2a4 del_timer +EXPORT_SYMBOL vmlinux 0x6c21d8b4 i2c_verify_client +EXPORT_SYMBOL vmlinux 0x6c2ccf19 phy_driver_register +EXPORT_SYMBOL vmlinux 0x6c39709a ip_setsockopt +EXPORT_SYMBOL vmlinux 0x6c4a7ddc make_bad_inode +EXPORT_SYMBOL vmlinux 0x6c512918 pci_unmap_rom +EXPORT_SYMBOL vmlinux 0x6c51a836 sysctl_tcp_notsent_lowat +EXPORT_SYMBOL vmlinux 0x6c61ce70 num_registered_fb +EXPORT_SYMBOL vmlinux 0x6c702af7 sysctl_udp_rmem_min +EXPORT_SYMBOL vmlinux 0x6c721cda pcim_enable_device +EXPORT_SYMBOL vmlinux 0x6cb0b5a7 skb_checksum +EXPORT_SYMBOL vmlinux 0x6cb6a049 skb_unlink +EXPORT_SYMBOL vmlinux 0x6ce09c1e dquot_file_open +EXPORT_SYMBOL vmlinux 0x6cea8eab down_write +EXPORT_SYMBOL vmlinux 0x6ced02fb register_console +EXPORT_SYMBOL vmlinux 0x6d02d01e of_platform_device_create +EXPORT_SYMBOL vmlinux 0x6d0d6ab7 simple_pin_fs +EXPORT_SYMBOL vmlinux 0x6d0f1f89 dm_table_get_mode +EXPORT_SYMBOL vmlinux 0x6d14ee7b register_md_personality +EXPORT_SYMBOL vmlinux 0x6d294e43 clock_t_to_jiffies +EXPORT_SYMBOL vmlinux 0x6d4f82c7 inet6_offloads +EXPORT_SYMBOL vmlinux 0x6d59d6d2 pnv_cxl_alloc_hwirqs +EXPORT_SYMBOL vmlinux 0x6d686815 tty_schedule_flip +EXPORT_SYMBOL vmlinux 0x6d6b2cd8 neigh_ifdown +EXPORT_SYMBOL vmlinux 0x6d93e2fe pci_reenable_device +EXPORT_SYMBOL vmlinux 0x6da928f4 _insw_ns +EXPORT_SYMBOL vmlinux 0x6ddcfbc8 remove_proc_subtree +EXPORT_SYMBOL vmlinux 0x6def2db2 half_md4_transform +EXPORT_SYMBOL vmlinux 0x6df1aaf1 kernel_sigaction +EXPORT_SYMBOL vmlinux 0x6df57e14 single_release +EXPORT_SYMBOL vmlinux 0x6dfed6f0 ip_defrag +EXPORT_SYMBOL vmlinux 0x6e066afa get_super +EXPORT_SYMBOL vmlinux 0x6e10f3fa bitmap_unplug +EXPORT_SYMBOL vmlinux 0x6e22c144 mb_cache_entry_get +EXPORT_SYMBOL vmlinux 0x6e6737e3 iommu_tbl_range_alloc +EXPORT_SYMBOL vmlinux 0x6e720ff2 rtnl_unlock +EXPORT_SYMBOL vmlinux 0x6e77ed65 uart_unregister_driver +EXPORT_SYMBOL vmlinux 0x6e7be160 submit_bio +EXPORT_SYMBOL vmlinux 0x6e7f0fd2 cmdline_parts_parse +EXPORT_SYMBOL vmlinux 0x6e844f75 blk_queue_max_segments +EXPORT_SYMBOL vmlinux 0x6e923839 clear_wb_congested +EXPORT_SYMBOL vmlinux 0x6e9dd606 __symbol_put +EXPORT_SYMBOL vmlinux 0x6ea81135 tcf_destroy_chain +EXPORT_SYMBOL vmlinux 0x6ecbb9f7 jbd2_journal_get_write_access +EXPORT_SYMBOL vmlinux 0x6ed38150 pci_bus_write_config_dword +EXPORT_SYMBOL vmlinux 0x6efa35bb serio_unregister_port +EXPORT_SYMBOL vmlinux 0x6f0c40bc security_path_symlink +EXPORT_SYMBOL vmlinux 0x6f20960a full_name_hash +EXPORT_SYMBOL vmlinux 0x6f2e3e62 bdget +EXPORT_SYMBOL vmlinux 0x6f32a092 drop_super +EXPORT_SYMBOL vmlinux 0x6f5a049c udp_disconnect +EXPORT_SYMBOL vmlinux 0x6f62f4ee sock_rfree +EXPORT_SYMBOL vmlinux 0x6f63c048 generic_getxattr +EXPORT_SYMBOL vmlinux 0x6f65d058 pnv_pci_get_phb_node +EXPORT_SYMBOL vmlinux 0x6f756b7c __xfrm_decode_session +EXPORT_SYMBOL vmlinux 0x6f88effb hdmi_avi_infoframe_init +EXPORT_SYMBOL vmlinux 0x6f8b6efd tcf_em_unregister +EXPORT_SYMBOL vmlinux 0x6f95eb4d md_wait_for_blocked_rdev +EXPORT_SYMBOL vmlinux 0x6fa33b1a inet_csk_reset_keepalive_timer +EXPORT_SYMBOL vmlinux 0x6fa48ff8 register_key_type +EXPORT_SYMBOL vmlinux 0x6fbf07cd __free_page_frag +EXPORT_SYMBOL vmlinux 0x6fcb87a1 touch_softlockup_watchdog +EXPORT_SYMBOL vmlinux 0x6fd16ed0 scsicam_bios_param +EXPORT_SYMBOL vmlinux 0x6fe039b0 call_usermodehelper_exec +EXPORT_SYMBOL vmlinux 0x6ffea9af generic_file_open +EXPORT_SYMBOL vmlinux 0x700360a8 dev_uc_add +EXPORT_SYMBOL vmlinux 0x7023f358 param_get_uint +EXPORT_SYMBOL vmlinux 0x70270428 jbd2_journal_load +EXPORT_SYMBOL vmlinux 0x7039fdc7 pnv_cxl_alloc_hwirq_ranges +EXPORT_SYMBOL vmlinux 0x70523a7a __cond_resched_softirq +EXPORT_SYMBOL vmlinux 0x7054a3e4 request_dma +EXPORT_SYMBOL vmlinux 0x70654f7a bio_alloc_bioset +EXPORT_SYMBOL vmlinux 0x706d051c del_timer_sync +EXPORT_SYMBOL vmlinux 0x70796ebb param_ops_int +EXPORT_SYMBOL vmlinux 0x707f43f6 __ctzdi2 +EXPORT_SYMBOL vmlinux 0x708bbf0a fixed_phy_update_state +EXPORT_SYMBOL vmlinux 0x709c9702 devm_gen_pool_create +EXPORT_SYMBOL vmlinux 0x709f403a remap_vmalloc_range +EXPORT_SYMBOL vmlinux 0x70bc0042 __get_page_tail +EXPORT_SYMBOL vmlinux 0x70c163bb blk_mq_init_queue +EXPORT_SYMBOL vmlinux 0x70c8cd7b tcf_hash_destroy +EXPORT_SYMBOL vmlinux 0x70dc79d5 bdi_set_max_ratio +EXPORT_SYMBOL vmlinux 0x70e23d7a unlock_two_nondirectories +EXPORT_SYMBOL vmlinux 0x70f802c3 sk_alloc +EXPORT_SYMBOL vmlinux 0x70f885e7 empty_aops +EXPORT_SYMBOL vmlinux 0x70f96f88 glob_match +EXPORT_SYMBOL vmlinux 0x711d554c zpool_unregister_driver +EXPORT_SYMBOL vmlinux 0x7129e5f8 hex_asc +EXPORT_SYMBOL vmlinux 0x712be9a7 xfrm6_find_1stfragopt +EXPORT_SYMBOL vmlinux 0x7156b77a devfreq_remove_governor +EXPORT_SYMBOL vmlinux 0x7159a07d is_bad_inode +EXPORT_SYMBOL vmlinux 0x7169fe9b ip_mc_check_igmp +EXPORT_SYMBOL vmlinux 0x7171121c overflowgid +EXPORT_SYMBOL vmlinux 0x717846e6 ptp_clock_event +EXPORT_SYMBOL vmlinux 0x719bb91f sk_net_capable +EXPORT_SYMBOL vmlinux 0x71a50dbc register_blkdev +EXPORT_SYMBOL vmlinux 0x71a672ef dmam_pool_destroy +EXPORT_SYMBOL vmlinux 0x71ac0175 user_revoke +EXPORT_SYMBOL vmlinux 0x71ad8897 __tcf_em_tree_match +EXPORT_SYMBOL vmlinux 0x71af006d input_mt_report_pointer_emulation +EXPORT_SYMBOL vmlinux 0x71b97792 tty_port_destroy +EXPORT_SYMBOL vmlinux 0x720348ff misc_deregister +EXPORT_SYMBOL vmlinux 0x721c9102 pcim_iounmap +EXPORT_SYMBOL vmlinux 0x72384c24 __brelse +EXPORT_SYMBOL vmlinux 0x72425e4c input_open_device +EXPORT_SYMBOL vmlinux 0x72600e91 __nd_driver_register +EXPORT_SYMBOL vmlinux 0x72707cbc agp_enable +EXPORT_SYMBOL vmlinux 0x729b004f nd_region_to_nstype +EXPORT_SYMBOL vmlinux 0x72a520c3 inode_sub_bytes +EXPORT_SYMBOL vmlinux 0x72b243d4 free_dma +EXPORT_SYMBOL vmlinux 0x72b6fa56 fence_wait_timeout +EXPORT_SYMBOL vmlinux 0x72c6c753 poll_schedule_timeout +EXPORT_SYMBOL vmlinux 0x72c751ca mdiobus_alloc_size +EXPORT_SYMBOL vmlinux 0x72c98139 __arch_hweight64 +EXPORT_SYMBOL vmlinux 0x72cc9599 gro_find_complete_by_type +EXPORT_SYMBOL vmlinux 0x72ea7b2d scsi_device_type +EXPORT_SYMBOL vmlinux 0x7315a4e9 twl6030_mmc_card_detect_config +EXPORT_SYMBOL vmlinux 0x731a747a pci_io_base +EXPORT_SYMBOL vmlinux 0x733c3b54 kasprintf +EXPORT_SYMBOL vmlinux 0x734c219b qdisc_watchdog_init +EXPORT_SYMBOL vmlinux 0x73501da8 of_translate_dma_address +EXPORT_SYMBOL vmlinux 0x735d8503 add_wait_queue +EXPORT_SYMBOL vmlinux 0x73710a3e dqstats +EXPORT_SYMBOL vmlinux 0x7377348c input_mt_get_slot_by_key +EXPORT_SYMBOL vmlinux 0x738d27f0 jbd2_journal_restart +EXPORT_SYMBOL vmlinux 0x73a0898a alloc_fddidev +EXPORT_SYMBOL vmlinux 0x73b05d09 dev_load +EXPORT_SYMBOL vmlinux 0x73bbeb43 dev_emerg +EXPORT_SYMBOL vmlinux 0x73c34ac6 __dev_kfree_skb_irq +EXPORT_SYMBOL vmlinux 0x73d666bc blk_mq_start_request +EXPORT_SYMBOL vmlinux 0x73eeca77 netlink_ack +EXPORT_SYMBOL vmlinux 0x73f27c62 ilookup5_nowait +EXPORT_SYMBOL vmlinux 0x74097327 arp_xmit +EXPORT_SYMBOL vmlinux 0x7410aba2 strreplace +EXPORT_SYMBOL vmlinux 0x743f3754 pci_pme_capable +EXPORT_SYMBOL vmlinux 0x744f466e cdrom_mode_select +EXPORT_SYMBOL vmlinux 0x747195f0 hdmi_vendor_infoframe_init +EXPORT_SYMBOL vmlinux 0x7485e15e unregister_chrdev_region +EXPORT_SYMBOL vmlinux 0x74933497 mmc_interrupt_hpi +EXPORT_SYMBOL vmlinux 0x74b7f4e6 phy_ethtool_set_wol +EXPORT_SYMBOL vmlinux 0x74b90e4d sock_init_data +EXPORT_SYMBOL vmlinux 0x74bc2b27 mmc_start_req +EXPORT_SYMBOL vmlinux 0x74c134b9 __sw_hweight32 +EXPORT_SYMBOL vmlinux 0x74e5ff1a udpv6_encap_enable +EXPORT_SYMBOL vmlinux 0x74f48a94 lease_get_mtime +EXPORT_SYMBOL vmlinux 0x74f70636 kdb_current_task +EXPORT_SYMBOL vmlinux 0x750342aa bitmap_start_sync +EXPORT_SYMBOL vmlinux 0x75065b9f eeh_dev_release +EXPORT_SYMBOL vmlinux 0x7532588a alloc_pages_exact +EXPORT_SYMBOL vmlinux 0x7538b132 agp_off +EXPORT_SYMBOL vmlinux 0x75498582 of_device_alloc +EXPORT_SYMBOL vmlinux 0x7551c140 pci_get_slot +EXPORT_SYMBOL vmlinux 0x758309c7 phy_device_register +EXPORT_SYMBOL vmlinux 0x758402be blkdev_put +EXPORT_SYMBOL vmlinux 0x75994700 add_wait_queue_exclusive +EXPORT_SYMBOL vmlinux 0x759d9429 posix_lock_inode_wait +EXPORT_SYMBOL vmlinux 0x75b6e4b8 ppp_unregister_compressor +EXPORT_SYMBOL vmlinux 0x75bda77a seq_hlist_next +EXPORT_SYMBOL vmlinux 0x75bdea12 iommu_area_alloc +EXPORT_SYMBOL vmlinux 0x75be6702 register_sysctl_paths +EXPORT_SYMBOL vmlinux 0x75c2f1ee pneigh_lookup +EXPORT_SYMBOL vmlinux 0x760a0f4f yield +EXPORT_SYMBOL vmlinux 0x76129353 fb_blank +EXPORT_SYMBOL vmlinux 0x762e2b9b cfb_copyarea +EXPORT_SYMBOL vmlinux 0x7644f400 inet_select_addr +EXPORT_SYMBOL vmlinux 0x7645af6f sg_pcopy_from_buffer +EXPORT_SYMBOL vmlinux 0x7647726c handle_sysrq +EXPORT_SYMBOL vmlinux 0x764a9c12 blk_mq_run_hw_queues +EXPORT_SYMBOL vmlinux 0x764bd77c request_resource +EXPORT_SYMBOL vmlinux 0x7654c398 mmc_can_secure_erase_trim +EXPORT_SYMBOL vmlinux 0x765ff474 crc_t10dif_generic +EXPORT_SYMBOL vmlinux 0x7697db29 up_write +EXPORT_SYMBOL vmlinux 0x76b59b33 cpu_sibling_map +EXPORT_SYMBOL vmlinux 0x76b61237 dquot_destroy +EXPORT_SYMBOL vmlinux 0x76bee166 input_free_device +EXPORT_SYMBOL vmlinux 0x76d3cd60 laptop_mode +EXPORT_SYMBOL vmlinux 0x76d451c4 add_taint +EXPORT_SYMBOL vmlinux 0x76ead173 generic_delete_inode +EXPORT_SYMBOL vmlinux 0x76f5fc11 kfree_skb_list +EXPORT_SYMBOL vmlinux 0x76f8d8c0 neigh_table_clear +EXPORT_SYMBOL vmlinux 0x7710277e simple_release_fs +EXPORT_SYMBOL vmlinux 0x77132c63 blk_rq_map_user +EXPORT_SYMBOL vmlinux 0x771b2737 jbd2_journal_set_triggers +EXPORT_SYMBOL vmlinux 0x771cf835 dma_pool_alloc +EXPORT_SYMBOL vmlinux 0x7726ae5a devm_get_gpiod_from_child +EXPORT_SYMBOL vmlinux 0x7728db34 kill_pid +EXPORT_SYMBOL vmlinux 0x772e91d7 lro_receive_skb +EXPORT_SYMBOL vmlinux 0x773fa409 __kfifo_dma_in_finish_r +EXPORT_SYMBOL vmlinux 0x774cda6d __vio_register_driver +EXPORT_SYMBOL vmlinux 0x7763a22b blk_stack_limits +EXPORT_SYMBOL vmlinux 0x7793dfb7 __remove_inode_hash +EXPORT_SYMBOL vmlinux 0x77958a03 dev_addr_add +EXPORT_SYMBOL vmlinux 0x779a18af kstrtoll +EXPORT_SYMBOL vmlinux 0x779dff29 __mem_cgroup_count_vm_event +EXPORT_SYMBOL vmlinux 0x77a0f8a0 inode_init_always +EXPORT_SYMBOL vmlinux 0x77bc13a0 strim +EXPORT_SYMBOL vmlinux 0x77da9c9a nd_region_acquire_lane +EXPORT_SYMBOL vmlinux 0x77f3bbee pcibus_to_node +EXPORT_SYMBOL vmlinux 0x77f3f1b5 unregister_console +EXPORT_SYMBOL vmlinux 0x77fdde41 of_device_is_big_endian +EXPORT_SYMBOL vmlinux 0x77fef02e phy_driver_unregister +EXPORT_SYMBOL vmlinux 0x782622e4 vfs_path_lookup +EXPORT_SYMBOL vmlinux 0x7830b04f hvc_put_chars +EXPORT_SYMBOL vmlinux 0x7833fe74 bio_integrity_endio +EXPORT_SYMBOL vmlinux 0x783a854b cdrom_open +EXPORT_SYMBOL vmlinux 0x783b3563 wake_up_atomic_t +EXPORT_SYMBOL vmlinux 0x7846af3e __kfifo_len_r +EXPORT_SYMBOL vmlinux 0x78470e56 dquot_mark_dquot_dirty +EXPORT_SYMBOL vmlinux 0x78538214 blk_queue_max_hw_sectors +EXPORT_SYMBOL vmlinux 0x786c20bc flush_dcache_page +EXPORT_SYMBOL vmlinux 0x78703382 I_BDEV +EXPORT_SYMBOL vmlinux 0x7871f572 devm_devfreq_unregister_opp_notifier +EXPORT_SYMBOL vmlinux 0x7880c781 dm_kcopyd_prepare_callback +EXPORT_SYMBOL vmlinux 0x78922604 sk_stop_timer +EXPORT_SYMBOL vmlinux 0x789affb1 frontswap_tmem_exclusive_gets +EXPORT_SYMBOL vmlinux 0x78a35287 crypto_sha1_update +EXPORT_SYMBOL vmlinux 0x78a9e905 _numa_mem_ +EXPORT_SYMBOL vmlinux 0x78b35ffa mod_zone_page_state +EXPORT_SYMBOL vmlinux 0x78b4032a down_write_trylock +EXPORT_SYMBOL vmlinux 0x78c44324 led_blink_set +EXPORT_SYMBOL vmlinux 0x78cf1ac0 xfrm_input +EXPORT_SYMBOL vmlinux 0x78df6bd7 no_pci_devices +EXPORT_SYMBOL vmlinux 0x7922b528 blk_execute_rq +EXPORT_SYMBOL vmlinux 0x7941a9e5 pci_setup_cardbus +EXPORT_SYMBOL vmlinux 0x79455bbf dquot_reclaim_space_nodirty +EXPORT_SYMBOL vmlinux 0x794abce7 blkdev_issue_flush +EXPORT_SYMBOL vmlinux 0x7968bb47 scsi_target_quiesce +EXPORT_SYMBOL vmlinux 0x796fc5ce scsi_get_sense_info_fld +EXPORT_SYMBOL vmlinux 0x7983f36e unregister_nls +EXPORT_SYMBOL vmlinux 0x7984eefc key_update +EXPORT_SYMBOL vmlinux 0x7985d043 radix_tree_tag_set +EXPORT_SYMBOL vmlinux 0x79879957 netdev_class_create_file_ns +EXPORT_SYMBOL vmlinux 0x79a33f85 vme_get_size +EXPORT_SYMBOL vmlinux 0x79aa04a2 get_random_bytes +EXPORT_SYMBOL vmlinux 0x79aeb462 free_buffer_head +EXPORT_SYMBOL vmlinux 0x79b3be28 cpufreq_get_policy +EXPORT_SYMBOL vmlinux 0x79b59c89 sock_alloc_send_skb +EXPORT_SYMBOL vmlinux 0x79b81736 devm_gpio_request +EXPORT_SYMBOL vmlinux 0x79d8e014 bio_reset +EXPORT_SYMBOL vmlinux 0x79da6dbe napi_disable +EXPORT_SYMBOL vmlinux 0x7a178799 xfrm6_input_addr +EXPORT_SYMBOL vmlinux 0x7a2253eb vmalloc_to_page +EXPORT_SYMBOL vmlinux 0x7a27c184 ewma_init +EXPORT_SYMBOL vmlinux 0x7a4497db kzfree +EXPORT_SYMBOL vmlinux 0x7a6020cc free_netdev +EXPORT_SYMBOL vmlinux 0x7a6cdedc do_settimeofday64 +EXPORT_SYMBOL vmlinux 0x7a925833 cpufreq_get_global_kobject +EXPORT_SYMBOL vmlinux 0x7aa1756e kvfree +EXPORT_SYMBOL vmlinux 0x7ab88a45 system_freezing_cnt +EXPORT_SYMBOL vmlinux 0x7ac297b5 update_region +EXPORT_SYMBOL vmlinux 0x7ac4516b skb_copy_bits +EXPORT_SYMBOL vmlinux 0x7ad050b9 qid_lt +EXPORT_SYMBOL vmlinux 0x7add44b5 posix_acl_valid +EXPORT_SYMBOL vmlinux 0x7b010489 posix_acl_to_xattr +EXPORT_SYMBOL vmlinux 0x7b16235f hdmi_vendor_infoframe_pack +EXPORT_SYMBOL vmlinux 0x7b26f42f dmam_alloc_noncoherent +EXPORT_SYMBOL vmlinux 0x7b2aef6c __krealloc +EXPORT_SYMBOL vmlinux 0x7b37ceec simple_write_end +EXPORT_SYMBOL vmlinux 0x7b7a73c2 i2c_smbus_write_i2c_block_data +EXPORT_SYMBOL vmlinux 0x7b8b4d52 agp_generic_free_by_type +EXPORT_SYMBOL vmlinux 0x7b94aa24 skb_append +EXPORT_SYMBOL vmlinux 0x7b9fa912 dump_page +EXPORT_SYMBOL vmlinux 0x7baa8723 __mutex_init +EXPORT_SYMBOL vmlinux 0x7baad972 vfs_unlink +EXPORT_SYMBOL vmlinux 0x7bb756cc neigh_proc_dointvec_jiffies +EXPORT_SYMBOL vmlinux 0x7bded96a mmc_gpio_get_ro +EXPORT_SYMBOL vmlinux 0x7bfb9c5e skb_pull +EXPORT_SYMBOL vmlinux 0x7c003aef _raw_read_lock_irq +EXPORT_SYMBOL vmlinux 0x7c1372e8 panic +EXPORT_SYMBOL vmlinux 0x7c173634 __bitmap_complement +EXPORT_SYMBOL vmlinux 0x7c1748a4 address_space_init_once +EXPORT_SYMBOL vmlinux 0x7c2bdfb1 netlink_unicast +EXPORT_SYMBOL vmlinux 0x7c2d098f krealloc +EXPORT_SYMBOL vmlinux 0x7c36b236 scsi_host_put +EXPORT_SYMBOL vmlinux 0x7c3ff9b1 cdrom_check_events +EXPORT_SYMBOL vmlinux 0x7c46233a cpufreq_quick_get +EXPORT_SYMBOL vmlinux 0x7c61340c __release_region +EXPORT_SYMBOL vmlinux 0x7c62e899 dqput +EXPORT_SYMBOL vmlinux 0x7c67906f inet_get_local_port_range +EXPORT_SYMBOL vmlinux 0x7c6d7fed register_sysctl +EXPORT_SYMBOL vmlinux 0x7c6e3cd0 agp_allocate_memory +EXPORT_SYMBOL vmlinux 0x7c881f23 tty_do_resize +EXPORT_SYMBOL vmlinux 0x7c98845d twl_i2c_read +EXPORT_SYMBOL vmlinux 0x7cb1ae69 cpu_down +EXPORT_SYMBOL vmlinux 0x7ce18c9f from_kqid +EXPORT_SYMBOL vmlinux 0x7cf35220 vme_master_free +EXPORT_SYMBOL vmlinux 0x7d0db45c jiffies_to_clock_t +EXPORT_SYMBOL vmlinux 0x7d0f4e91 udp_proc_unregister +EXPORT_SYMBOL vmlinux 0x7d11c268 jiffies +EXPORT_SYMBOL vmlinux 0x7d13f99f cdev_del +EXPORT_SYMBOL vmlinux 0x7d15ab0b dma_common_get_sgtable +EXPORT_SYMBOL vmlinux 0x7d25afe7 input_set_abs_params +EXPORT_SYMBOL vmlinux 0x7d4c12f4 import_iovec +EXPORT_SYMBOL vmlinux 0x7d52dada tty_register_driver +EXPORT_SYMBOL vmlinux 0x7d60a64e tcp_v4_connect +EXPORT_SYMBOL vmlinux 0x7d6ea188 ppp_unit_number +EXPORT_SYMBOL vmlinux 0x7d705738 blk_start_plug +EXPORT_SYMBOL vmlinux 0x7d80e4f0 phy_init_hw +EXPORT_SYMBOL vmlinux 0x7d9514c1 node_to_cpumask_map +EXPORT_SYMBOL vmlinux 0x7da9fbf6 vmap +EXPORT_SYMBOL vmlinux 0x7dbec2de sock_no_bind +EXPORT_SYMBOL vmlinux 0x7dc1eb43 pci_set_mwi +EXPORT_SYMBOL vmlinux 0x7dc97879 rtas_get_error_log_max +EXPORT_SYMBOL vmlinux 0x7dd0a046 d_alloc_name +EXPORT_SYMBOL vmlinux 0x7ddcac5c fbcon_rotate_ud +EXPORT_SYMBOL vmlinux 0x7deff673 dm_consume_args +EXPORT_SYMBOL vmlinux 0x7e1ee73a fixed_size_llseek +EXPORT_SYMBOL vmlinux 0x7e22ed5f skb_vlan_pop +EXPORT_SYMBOL vmlinux 0x7e4ff13c dev_uc_del +EXPORT_SYMBOL vmlinux 0x7e7a5b6f dst_destroy +EXPORT_SYMBOL vmlinux 0x7e7c4a59 kthread_stop +EXPORT_SYMBOL vmlinux 0x7e81fea4 iterate_mounts +EXPORT_SYMBOL vmlinux 0x7e91bbb0 unregister_qdisc +EXPORT_SYMBOL vmlinux 0x7e9a904f release_firmware +EXPORT_SYMBOL vmlinux 0x7ee6d93a nsecs_to_jiffies64 +EXPORT_SYMBOL vmlinux 0x7f02188f __msecs_to_jiffies +EXPORT_SYMBOL vmlinux 0x7f1a1f98 tcf_em_tree_dump +EXPORT_SYMBOL vmlinux 0x7f24de73 jiffies_to_usecs +EXPORT_SYMBOL vmlinux 0x7f32cd93 icmp_send +EXPORT_SYMBOL vmlinux 0x7f462d33 sock_wfree +EXPORT_SYMBOL vmlinux 0x7f48d37a ipv6_chk_addr_and_flags +EXPORT_SYMBOL vmlinux 0x7f62a045 cpu_maps_update_done +EXPORT_SYMBOL vmlinux 0x7f8d666a rwsem_down_write_failed +EXPORT_SYMBOL vmlinux 0x7f9cc089 nvdimm_bus_unlock +EXPORT_SYMBOL vmlinux 0x7fbd10d2 radix_tree_next_chunk +EXPORT_SYMBOL vmlinux 0x7fcd35c4 audit_log +EXPORT_SYMBOL vmlinux 0x7fdae689 of_device_is_available +EXPORT_SYMBOL vmlinux 0x7fe32873 rb_replace_node +EXPORT_SYMBOL vmlinux 0x7fe38f48 sg_copy_to_buffer +EXPORT_SYMBOL vmlinux 0x7fed96c6 netlink_set_err +EXPORT_SYMBOL vmlinux 0x7ff5383e cpu_active_mask +EXPORT_SYMBOL vmlinux 0x7ff5f2bc unregister_quota_format +EXPORT_SYMBOL vmlinux 0x7ffda9d3 tty_insert_flip_string_flags +EXPORT_SYMBOL vmlinux 0x80052889 block_commit_write +EXPORT_SYMBOL vmlinux 0x802e81dc zerocopy_sg_from_iter +EXPORT_SYMBOL vmlinux 0x8047efe7 flow_cache_fini +EXPORT_SYMBOL vmlinux 0x80625869 pps_lookup_dev +EXPORT_SYMBOL vmlinux 0x8068c15c kblockd_schedule_delayed_work +EXPORT_SYMBOL vmlinux 0x8071d1a8 cpu_all_bits +EXPORT_SYMBOL vmlinux 0x80791a8c radix_tree_gang_lookup_slot +EXPORT_SYMBOL vmlinux 0x80a20860 __alloc_page_frag +EXPORT_SYMBOL vmlinux 0x80b788dd __devm_gpiod_get_index +EXPORT_SYMBOL vmlinux 0x80ca5026 _bin2bcd +EXPORT_SYMBOL vmlinux 0x80d6363c keyring_clear +EXPORT_SYMBOL vmlinux 0x80d68d3e fb_register_client +EXPORT_SYMBOL vmlinux 0x80dcce5a pci_bus_add_devices +EXPORT_SYMBOL vmlinux 0x80fd274d call_usermodehelper_setup +EXPORT_SYMBOL vmlinux 0x811bb99d mount_ns +EXPORT_SYMBOL vmlinux 0x81248a95 pci_msi_vec_count +EXPORT_SYMBOL vmlinux 0x814e7730 nf_ct_destroy +EXPORT_SYMBOL vmlinux 0x81533963 sysfs_format_mac +EXPORT_SYMBOL vmlinux 0x8159d84d led_blink_set_oneshot +EXPORT_SYMBOL vmlinux 0x815b5dd4 match_octal +EXPORT_SYMBOL vmlinux 0x816014dc nla_put_nohdr +EXPORT_SYMBOL vmlinux 0x8171e406 pci_disable_msi +EXPORT_SYMBOL vmlinux 0x817cebc7 sock_create_lite +EXPORT_SYMBOL vmlinux 0x81a07f4e _atomic_dec_and_lock +EXPORT_SYMBOL vmlinux 0x81a27b1b mmc_flush_cache +EXPORT_SYMBOL vmlinux 0x81a88f25 tcp_enter_cwr +EXPORT_SYMBOL vmlinux 0x81ad4e4f seq_pad +EXPORT_SYMBOL vmlinux 0x81bd237c tty_lock +EXPORT_SYMBOL vmlinux 0x81c0a84f rtas_set_indicator +EXPORT_SYMBOL vmlinux 0x81d6308e sk_stream_kill_queues +EXPORT_SYMBOL vmlinux 0x81db6ebb xz_dec_reset +EXPORT_SYMBOL vmlinux 0x82072614 tasklet_kill +EXPORT_SYMBOL vmlinux 0x821c2b41 blk_end_request_all +EXPORT_SYMBOL vmlinux 0x821df22e scsi_device_set_state +EXPORT_SYMBOL vmlinux 0x822c5a8c fence_add_callback +EXPORT_SYMBOL vmlinux 0x82458f7f radix_tree_delete_item +EXPORT_SYMBOL vmlinux 0x82473404 cros_ec_query_all +EXPORT_SYMBOL vmlinux 0x8254233f tcf_hash_check +EXPORT_SYMBOL vmlinux 0x825dda7f sock_no_recvmsg +EXPORT_SYMBOL vmlinux 0x8265e70e generic_pipe_buf_get +EXPORT_SYMBOL vmlinux 0x82701365 int_to_scsilun +EXPORT_SYMBOL vmlinux 0x828062b1 __frontswap_init +EXPORT_SYMBOL vmlinux 0x82871b60 dmt_modes +EXPORT_SYMBOL vmlinux 0x82acfb70 blk_iopoll_sched +EXPORT_SYMBOL vmlinux 0x82bf3958 param_ops_byte +EXPORT_SYMBOL vmlinux 0x82c01b07 fb_pan_display +EXPORT_SYMBOL vmlinux 0x82c72b59 scmd_printk +EXPORT_SYMBOL vmlinux 0x82d2c263 override_creds +EXPORT_SYMBOL vmlinux 0x82d6b0d0 cpumask_next_and +EXPORT_SYMBOL vmlinux 0x82d763b4 __xfrm_init_state +EXPORT_SYMBOL vmlinux 0x82e5a238 vm_get_page_prot +EXPORT_SYMBOL vmlinux 0x82fc04f4 generic_file_readonly_mmap +EXPORT_SYMBOL vmlinux 0x8304733a blk_set_stacking_limits +EXPORT_SYMBOL vmlinux 0x834a685b mark_buffer_async_write +EXPORT_SYMBOL vmlinux 0x8355a057 sock_no_shutdown +EXPORT_SYMBOL vmlinux 0x835ad7b6 compat_sock_get_timestamp +EXPORT_SYMBOL vmlinux 0x839430b2 __register_cpu_notifier +EXPORT_SYMBOL vmlinux 0x83b009ea xfrm_state_walk_init +EXPORT_SYMBOL vmlinux 0x83c52fba xfrm4_protocol_init +EXPORT_SYMBOL vmlinux 0x841df920 nf_log_register +EXPORT_SYMBOL vmlinux 0x84252f3a tty_port_close_end +EXPORT_SYMBOL vmlinux 0x8433c501 unregister_netdevice_queue +EXPORT_SYMBOL vmlinux 0x84445063 page_readlink +EXPORT_SYMBOL vmlinux 0x844e3767 radix_tree_lookup +EXPORT_SYMBOL vmlinux 0x848a2fcf netdev_err +EXPORT_SYMBOL vmlinux 0x8496c126 mipi_dsi_dcs_get_power_mode +EXPORT_SYMBOL vmlinux 0x84bd69bf dq_data_lock +EXPORT_SYMBOL vmlinux 0x84e12bb5 put_disk +EXPORT_SYMBOL vmlinux 0x84ef2135 skb_ensure_writable +EXPORT_SYMBOL vmlinux 0x84f86f5e abx500_event_registers_startup_state_get +EXPORT_SYMBOL vmlinux 0x84ffea8b idr_preload +EXPORT_SYMBOL vmlinux 0x84fff8f3 try_module_get +EXPORT_SYMBOL vmlinux 0x850f3194 inet6_add_protocol +EXPORT_SYMBOL vmlinux 0x8511f928 lookup_one_len +EXPORT_SYMBOL vmlinux 0x8536076c scsi_scan_target +EXPORT_SYMBOL vmlinux 0x85670f1d rtnl_is_locked +EXPORT_SYMBOL vmlinux 0x857fd147 handle_edge_irq +EXPORT_SYMBOL vmlinux 0x8587c849 would_dump +EXPORT_SYMBOL vmlinux 0x85945a39 netdev_bonding_info_change +EXPORT_SYMBOL vmlinux 0x8597eb47 plpar_hcall +EXPORT_SYMBOL vmlinux 0x859b3e5d current_fs_time +EXPORT_SYMBOL vmlinux 0x85b5e625 rfkill_set_states +EXPORT_SYMBOL vmlinux 0x85d1bfdb xfrm_sad_getinfo +EXPORT_SYMBOL vmlinux 0x85df9b6c strsep +EXPORT_SYMBOL vmlinux 0x85efc7e0 zero_pfn +EXPORT_SYMBOL vmlinux 0x8603ef1d scsi_track_queue_full +EXPORT_SYMBOL vmlinux 0x86063956 pipe_unlock +EXPORT_SYMBOL vmlinux 0x862c4fb5 sync_inode +EXPORT_SYMBOL vmlinux 0x865029ac __hw_addr_sync +EXPORT_SYMBOL vmlinux 0x8664f62e cpufreq_update_policy +EXPORT_SYMBOL vmlinux 0x86722f21 i2c_get_adapter +EXPORT_SYMBOL vmlinux 0x867f52b2 __scsi_add_device +EXPORT_SYMBOL vmlinux 0x8685c07e jbd2_complete_transaction +EXPORT_SYMBOL vmlinux 0x868acba5 get_options +EXPORT_SYMBOL vmlinux 0x86a667ea devfreq_remove_device +EXPORT_SYMBOL vmlinux 0x86b7dbb3 dst_cow_metrics_generic +EXPORT_SYMBOL vmlinux 0x86db1cbb rtas_flash_term_hook +EXPORT_SYMBOL vmlinux 0x86f1391c sock_sendmsg +EXPORT_SYMBOL vmlinux 0x86fa95e5 scsi_is_sdev_device +EXPORT_SYMBOL vmlinux 0x86fb9b05 bitmap_parse_user +EXPORT_SYMBOL vmlinux 0x870641c4 task_tgid_nr_ns +EXPORT_SYMBOL vmlinux 0x871b8730 is_nvdimm_bus_locked +EXPORT_SYMBOL vmlinux 0x871c0a7e fiemap_check_flags +EXPORT_SYMBOL vmlinux 0x87223b95 d_make_root +EXPORT_SYMBOL vmlinux 0x873a53ea __arch_hweight8 +EXPORT_SYMBOL vmlinux 0x874c9f72 dcb_ieee_getapp_mask +EXPORT_SYMBOL vmlinux 0x8776cd0a vlan_uses_dev +EXPORT_SYMBOL vmlinux 0x878ab3ce sysctl_tcp_adv_win_scale +EXPORT_SYMBOL vmlinux 0x87969e35 cleancache_register_ops +EXPORT_SYMBOL vmlinux 0x87b04a9c locks_copy_lock +EXPORT_SYMBOL vmlinux 0x87dec223 lru_cache_add_file +EXPORT_SYMBOL vmlinux 0x882db37f neigh_proc_dointvec +EXPORT_SYMBOL vmlinux 0x885f2975 of_parse_phandle +EXPORT_SYMBOL vmlinux 0x88712b86 kernel_sendpage +EXPORT_SYMBOL vmlinux 0x887555e6 __dev_getfirstbyhwtype +EXPORT_SYMBOL vmlinux 0x88797336 qdisc_list_del +EXPORT_SYMBOL vmlinux 0x887cb795 tcf_exts_change +EXPORT_SYMBOL vmlinux 0x887fa47e __getnstimeofday64 +EXPORT_SYMBOL vmlinux 0x88aa481c ipv6_getsockopt +EXPORT_SYMBOL vmlinux 0x88d7d82c __neigh_set_probe_once +EXPORT_SYMBOL vmlinux 0x88f40266 ilookup +EXPORT_SYMBOL vmlinux 0x891bef26 vm_stat +EXPORT_SYMBOL vmlinux 0x891fbb10 mempool_destroy +EXPORT_SYMBOL vmlinux 0x892ca0b6 devm_backlight_device_unregister +EXPORT_SYMBOL vmlinux 0x895108f3 proc_dostring +EXPORT_SYMBOL vmlinux 0x895577b0 numa_cpu_lookup_table +EXPORT_SYMBOL vmlinux 0x89797060 _raw_read_lock +EXPORT_SYMBOL vmlinux 0x89afe34e __kfifo_dma_in_prepare +EXPORT_SYMBOL vmlinux 0x89cc3ec7 inode_init_once +EXPORT_SYMBOL vmlinux 0x89d5538d fb_pad_aligned_buffer +EXPORT_SYMBOL vmlinux 0x89df7d15 ip6_route_output +EXPORT_SYMBOL vmlinux 0x89eccd11 clear_nlink +EXPORT_SYMBOL vmlinux 0x8a18f316 arch_free_page +EXPORT_SYMBOL vmlinux 0x8a1ab4ee timeval_to_jiffies +EXPORT_SYMBOL vmlinux 0x8a1d750a netlink_broadcast +EXPORT_SYMBOL vmlinux 0x8a39102c __put_cred +EXPORT_SYMBOL vmlinux 0x8a461ff3 tcp_read_sock +EXPORT_SYMBOL vmlinux 0x8a490c90 rfkill_set_sw_state +EXPORT_SYMBOL vmlinux 0x8a51d565 quota_send_warning +EXPORT_SYMBOL vmlinux 0x8a5b0753 pci_bus_put +EXPORT_SYMBOL vmlinux 0x8a6af65c kstrtoul_from_user +EXPORT_SYMBOL vmlinux 0x8a7d1c31 high_memory +EXPORT_SYMBOL vmlinux 0x8a869f60 inet_frags_init +EXPORT_SYMBOL vmlinux 0x8a99a016 mempool_free_slab +EXPORT_SYMBOL vmlinux 0x8aa21877 nf_register_hook +EXPORT_SYMBOL vmlinux 0x8ab9f58b rawv6_mh_filter_register +EXPORT_SYMBOL vmlinux 0x8aed5546 blk_delay_queue +EXPORT_SYMBOL vmlinux 0x8b140fa3 generic_cont_expand_simple +EXPORT_SYMBOL vmlinux 0x8b151c7b inet_rtx_syn_ack +EXPORT_SYMBOL vmlinux 0x8b35e873 sg_last +EXPORT_SYMBOL vmlinux 0x8b40b5d8 xfrm4_protocol_register +EXPORT_SYMBOL vmlinux 0x8b43159b register_cpu_notifier +EXPORT_SYMBOL vmlinux 0x8b618d08 overflowuid +EXPORT_SYMBOL vmlinux 0x8b643f44 pci_iomap +EXPORT_SYMBOL vmlinux 0x8b6ddfe7 vfs_getattr_nosec +EXPORT_SYMBOL vmlinux 0x8b79bffe param_set_copystring +EXPORT_SYMBOL vmlinux 0x8b7c964d pps_unregister_source +EXPORT_SYMBOL vmlinux 0x8b7e47fc ipv6_push_nfrag_opts +EXPORT_SYMBOL vmlinux 0x8b8059bd in_group_p +EXPORT_SYMBOL vmlinux 0x8b8a3de5 blk_queue_update_dma_alignment +EXPORT_SYMBOL vmlinux 0x8bc15a0f fsync_bdev +EXPORT_SYMBOL vmlinux 0x8bcc5fe0 inet_csk_delete_keepalive_timer +EXPORT_SYMBOL vmlinux 0x8bd2cd7c cfb_imageblit +EXPORT_SYMBOL vmlinux 0x8bf2ae1f fsl_lbc_addr +EXPORT_SYMBOL vmlinux 0x8c183cbe iowrite16 +EXPORT_SYMBOL vmlinux 0x8c637d43 irq_cpu_rmap_add +EXPORT_SYMBOL vmlinux 0x8c738303 of_mdio_parse_addr +EXPORT_SYMBOL vmlinux 0x8cc79cab iowrite16_rep +EXPORT_SYMBOL vmlinux 0x8cd1f43e bio_copy_data +EXPORT_SYMBOL vmlinux 0x8cdfe78f forget_cached_acl +EXPORT_SYMBOL vmlinux 0x8cfbf961 devm_ioremap_nocache +EXPORT_SYMBOL vmlinux 0x8d015dd4 __bswapdi2 +EXPORT_SYMBOL vmlinux 0x8d08a802 tcp_proc_unregister +EXPORT_SYMBOL vmlinux 0x8d15c06d of_find_matching_node_and_match +EXPORT_SYMBOL vmlinux 0x8d1690d2 sock_alloc_send_pskb +EXPORT_SYMBOL vmlinux 0x8d38da48 security_path_unlink +EXPORT_SYMBOL vmlinux 0x8d39b561 bdi_setup_and_register +EXPORT_SYMBOL vmlinux 0x8d551bef sysctl_tcp_rmem +EXPORT_SYMBOL vmlinux 0x8d55bb8a qid_eq +EXPORT_SYMBOL vmlinux 0x8d5ae13d netif_set_real_num_tx_queues +EXPORT_SYMBOL vmlinux 0x8d73278e hex_asc_upper +EXPORT_SYMBOL vmlinux 0x8d8ace92 rtas +EXPORT_SYMBOL vmlinux 0x8d944cbb copy_in_user +EXPORT_SYMBOL vmlinux 0x8db16c04 end_buffer_read_sync +EXPORT_SYMBOL vmlinux 0x8dc689f4 agp_unbind_memory +EXPORT_SYMBOL vmlinux 0x8dce6ef5 dmaengine_get_unmap_data +EXPORT_SYMBOL vmlinux 0x8dda3891 iw_handler_get_thrspy +EXPORT_SYMBOL vmlinux 0x8de0b5ac mempool_create +EXPORT_SYMBOL vmlinux 0x8df92f66 memchr_inv +EXPORT_SYMBOL vmlinux 0x8e0094b3 tty_port_tty_get +EXPORT_SYMBOL vmlinux 0x8e26b629 __nla_reserve_nohdr +EXPORT_SYMBOL vmlinux 0x8e3207eb redirty_page_for_writepage +EXPORT_SYMBOL vmlinux 0x8e4b8bde give_up_console +EXPORT_SYMBOL vmlinux 0x8e65e1f6 phy_stop +EXPORT_SYMBOL vmlinux 0x8e6f02d2 eth_header_cache +EXPORT_SYMBOL vmlinux 0x8e88be94 agp_bridge +EXPORT_SYMBOL vmlinux 0x8ebc39b0 inet6_unregister_protosw +EXPORT_SYMBOL vmlinux 0x8ec04552 _raw_spin_trylock_bh +EXPORT_SYMBOL vmlinux 0x8ec4647b netif_rx +EXPORT_SYMBOL vmlinux 0x8ec6b524 __devm_release_region +EXPORT_SYMBOL vmlinux 0x8ed2ad30 crypto_sha512_update +EXPORT_SYMBOL vmlinux 0x8ed87027 vme_unregister_bridge +EXPORT_SYMBOL vmlinux 0x8efcf88f dev_uc_sync_multiple +EXPORT_SYMBOL vmlinux 0x8f0a4ef3 dev_set_promiscuity +EXPORT_SYMBOL vmlinux 0x8f482dc5 kernel_write +EXPORT_SYMBOL vmlinux 0x8f58509a mmc_gpio_get_cd +EXPORT_SYMBOL vmlinux 0x8f809e9b tag_pages_for_writeback +EXPORT_SYMBOL vmlinux 0x8f850e19 ip6_frag_match +EXPORT_SYMBOL vmlinux 0x8f85f835 prepare_to_wait_exclusive +EXPORT_SYMBOL vmlinux 0x8f88c56c kset_register +EXPORT_SYMBOL vmlinux 0x8f9f2d60 param_get_byte +EXPORT_SYMBOL vmlinux 0x8faafb81 read_code +EXPORT_SYMBOL vmlinux 0x8fbbe711 mipi_dsi_set_maximum_return_packet_size +EXPORT_SYMBOL vmlinux 0x8fc15bf6 iommu_tbl_range_free +EXPORT_SYMBOL vmlinux 0x8fc5073e agp_generic_mask_memory +EXPORT_SYMBOL vmlinux 0x8fc59f9b rtas_offline_cpus_mask +EXPORT_SYMBOL vmlinux 0x8fca6b51 inetdev_by_index +EXPORT_SYMBOL vmlinux 0x8fd14d5c genphy_config_aneg +EXPORT_SYMBOL vmlinux 0x8feb64ef lock_sock_nested +EXPORT_SYMBOL vmlinux 0x8ff59016 register_gifconf +EXPORT_SYMBOL vmlinux 0x902e6316 clear_user_page +EXPORT_SYMBOL vmlinux 0x902edcff textsearch_find_continuous +EXPORT_SYMBOL vmlinux 0x903f3682 alloc_disk +EXPORT_SYMBOL vmlinux 0x9049990c netpoll_cleanup +EXPORT_SYMBOL vmlinux 0x9058727a submit_bh +EXPORT_SYMBOL vmlinux 0x90689ec2 xfrm_state_walk_done +EXPORT_SYMBOL vmlinux 0x906ca8d3 mb_cache_entry_alloc +EXPORT_SYMBOL vmlinux 0x907ff065 tty_check_change +EXPORT_SYMBOL vmlinux 0x90948f95 sock_no_ioctl +EXPORT_SYMBOL vmlinux 0x90b55697 d_rehash +EXPORT_SYMBOL vmlinux 0x90ce6b71 param_ops_bint +EXPORT_SYMBOL vmlinux 0x90e0f0ae of_graph_get_endpoint_by_regs +EXPORT_SYMBOL vmlinux 0x90e9ac17 tty_free_termios +EXPORT_SYMBOL vmlinux 0x9103110f file_remove_privs +EXPORT_SYMBOL vmlinux 0x91114d36 tcp_getsockopt +EXPORT_SYMBOL vmlinux 0x91210a00 inet6_ioctl +EXPORT_SYMBOL vmlinux 0x9122e349 of_count_phandle_with_args +EXPORT_SYMBOL vmlinux 0x912557ce rtas_busy_delay +EXPORT_SYMBOL vmlinux 0x912c0ebe acl_by_type +EXPORT_SYMBOL vmlinux 0x91463b1d kstrtos16 +EXPORT_SYMBOL vmlinux 0x914f48ea genphy_setup_forced +EXPORT_SYMBOL vmlinux 0x915e1208 tb_ticks_per_usec +EXPORT_SYMBOL vmlinux 0x9163abc1 fddi_change_mtu +EXPORT_SYMBOL vmlinux 0x9166fada strncpy +EXPORT_SYMBOL vmlinux 0x9168c033 rtas_get_sensor +EXPORT_SYMBOL vmlinux 0x91715312 sprintf +EXPORT_SYMBOL vmlinux 0x919d1163 tty_termios_baud_rate +EXPORT_SYMBOL vmlinux 0x91a38365 fsnotify_destroy_mark +EXPORT_SYMBOL vmlinux 0x91a92482 from_kprojid_munged +EXPORT_SYMBOL vmlinux 0x91ac822f vscnprintf +EXPORT_SYMBOL vmlinux 0x91bad2a7 dev_mc_del_global +EXPORT_SYMBOL vmlinux 0x91c63532 i2c_smbus_read_word_data +EXPORT_SYMBOL vmlinux 0x91e78169 is_nd_btt +EXPORT_SYMBOL vmlinux 0x92358d91 pci_iounmap +EXPORT_SYMBOL vmlinux 0x923b1276 dmaengine_get +EXPORT_SYMBOL vmlinux 0x924f01c4 simple_setattr +EXPORT_SYMBOL vmlinux 0x926c5a24 dev_mc_add +EXPORT_SYMBOL vmlinux 0x928348d3 dev_mc_add_excl +EXPORT_SYMBOL vmlinux 0x92876169 input_mt_report_finger_count +EXPORT_SYMBOL vmlinux 0x9288eeab pci_remove_bus +EXPORT_SYMBOL vmlinux 0x928ca98b get_task_io_context +EXPORT_SYMBOL vmlinux 0x928cd4a6 tcp_check_req +EXPORT_SYMBOL vmlinux 0x928f3c3a generic_file_write_iter +EXPORT_SYMBOL vmlinux 0x9291cd3b memdup_user +EXPORT_SYMBOL vmlinux 0x92a2c8c4 jbd2_journal_clear_err +EXPORT_SYMBOL vmlinux 0x92a9355d sg_miter_start +EXPORT_SYMBOL vmlinux 0x92a9c60c time_to_tm +EXPORT_SYMBOL vmlinux 0x92aba257 xfrm_policy_walk_done +EXPORT_SYMBOL vmlinux 0x92ae91db blk_mq_stop_hw_queues +EXPORT_SYMBOL vmlinux 0x92b1920e page_follow_link_light +EXPORT_SYMBOL vmlinux 0x92e4d2fe flow_hash_from_keys +EXPORT_SYMBOL vmlinux 0x92ecb8a4 param_set_bint +EXPORT_SYMBOL vmlinux 0x92f17d4d tcp_proto_cgroup +EXPORT_SYMBOL vmlinux 0x92f28211 __cleancache_invalidate_page +EXPORT_SYMBOL vmlinux 0x92fa5abb vme_lm_detach +EXPORT_SYMBOL vmlinux 0x93022ba6 __scsi_format_command +EXPORT_SYMBOL vmlinux 0x9305f8e6 cpufreq_get +EXPORT_SYMBOL vmlinux 0x9308e701 pagecache_write_begin +EXPORT_SYMBOL vmlinux 0x930be08f devfreq_resume_device +EXPORT_SYMBOL vmlinux 0x931ae351 read_dev_sector +EXPORT_SYMBOL vmlinux 0x9325940e invalidate_partition +EXPORT_SYMBOL vmlinux 0x93448c57 screen_info +EXPORT_SYMBOL vmlinux 0x9354fcde ibmebus_free_irq +EXPORT_SYMBOL vmlinux 0x9362c4d2 inet_sendmsg +EXPORT_SYMBOL vmlinux 0x937733e3 qid_valid +EXPORT_SYMBOL vmlinux 0x937f4f5e seq_read +EXPORT_SYMBOL vmlinux 0x9382141d phy_detach +EXPORT_SYMBOL vmlinux 0x9385b4b3 dev_open +EXPORT_SYMBOL vmlinux 0x93860e9d mipi_dsi_dcs_write_buffer +EXPORT_SYMBOL vmlinux 0x93945c55 ping_prot +EXPORT_SYMBOL vmlinux 0x939a5e04 rfkill_alloc +EXPORT_SYMBOL vmlinux 0x93b3fc74 register_dcbevent_notifier +EXPORT_SYMBOL vmlinux 0x93c00bcd atomic_dec_and_mutex_lock +EXPORT_SYMBOL vmlinux 0x93c7d52d scsi_report_opcode +EXPORT_SYMBOL vmlinux 0x93df3acc pci_release_regions +EXPORT_SYMBOL vmlinux 0x93eeda8e linkwatch_fire_event +EXPORT_SYMBOL vmlinux 0x93f7b24b sg_miter_stop +EXPORT_SYMBOL vmlinux 0x93fca811 __get_free_pages +EXPORT_SYMBOL vmlinux 0x9402a6a5 scsilun_to_int +EXPORT_SYMBOL vmlinux 0x940fa9a4 pci_fixup_cardbus +EXPORT_SYMBOL vmlinux 0x943951cb sb_min_blocksize +EXPORT_SYMBOL vmlinux 0x94546196 swiotlb_sync_single_for_device +EXPORT_SYMBOL vmlinux 0x945b6b04 kill_anon_super +EXPORT_SYMBOL vmlinux 0x946dadee touch_buffer +EXPORT_SYMBOL vmlinux 0x9480a238 __tcf_hash_release +EXPORT_SYMBOL vmlinux 0x9487ae02 serio_unregister_child_port +EXPORT_SYMBOL vmlinux 0x94961283 vunmap +EXPORT_SYMBOL vmlinux 0x94982158 cdev_add +EXPORT_SYMBOL vmlinux 0x94a21236 ll_rw_block +EXPORT_SYMBOL vmlinux 0x94a4245d nf_log_trace +EXPORT_SYMBOL vmlinux 0x94aae878 alloc_pages_current +EXPORT_SYMBOL vmlinux 0x94b514ec __get_user_pages +EXPORT_SYMBOL vmlinux 0x94bec673 d_move +EXPORT_SYMBOL vmlinux 0x94de66c3 fb_find_mode +EXPORT_SYMBOL vmlinux 0x9514151a _mcount +EXPORT_SYMBOL vmlinux 0x9524b0ae _outsb +EXPORT_SYMBOL vmlinux 0x95414ef2 mark_buffer_dirty +EXPORT_SYMBOL vmlinux 0x9545af6d tasklet_init +EXPORT_SYMBOL vmlinux 0x954eec39 blk_queue_io_min +EXPORT_SYMBOL vmlinux 0x95587a96 dmam_alloc_coherent +EXPORT_SYMBOL vmlinux 0x95df80b0 simple_lookup +EXPORT_SYMBOL vmlinux 0x95f6f7f5 inet_frag_kill +EXPORT_SYMBOL vmlinux 0x9606fc4a inet6_protos +EXPORT_SYMBOL vmlinux 0x9608fa27 register_md_cluster_operations +EXPORT_SYMBOL vmlinux 0x9609f287 sync_inode_metadata +EXPORT_SYMBOL vmlinux 0x961262f0 register_quota_format +EXPORT_SYMBOL vmlinux 0x961cdb36 mipi_dsi_attach +EXPORT_SYMBOL vmlinux 0x969987fc lockref_get_not_dead +EXPORT_SYMBOL vmlinux 0x96a029b1 migrate_page +EXPORT_SYMBOL vmlinux 0x96b29254 strncasecmp +EXPORT_SYMBOL vmlinux 0x96cd2b04 scsi_sense_key_string +EXPORT_SYMBOL vmlinux 0x96eebc7c elv_dispatch_sort +EXPORT_SYMBOL vmlinux 0x970020e6 scsi_get_device_flags_keyed +EXPORT_SYMBOL vmlinux 0x97162c91 __getblk_gfp +EXPORT_SYMBOL vmlinux 0x97236f57 pm860x_bulk_read +EXPORT_SYMBOL vmlinux 0x9744cfa6 generic_make_request +EXPORT_SYMBOL vmlinux 0x9746b1f1 devm_gpiod_put_array +EXPORT_SYMBOL vmlinux 0x9748927f _outsw_ns +EXPORT_SYMBOL vmlinux 0x97540a2b inetpeer_invalidate_tree +EXPORT_SYMBOL vmlinux 0x9754ec10 radix_tree_preload +EXPORT_SYMBOL vmlinux 0x9760211d dev_disable_lro +EXPORT_SYMBOL vmlinux 0x97868aef __kfifo_alloc +EXPORT_SYMBOL vmlinux 0x97999817 rfkill_set_hw_state +EXPORT_SYMBOL vmlinux 0x97a57333 crc_t10dif_update +EXPORT_SYMBOL vmlinux 0x97ba1af0 tcp_hashinfo +EXPORT_SYMBOL vmlinux 0x97caa3fc of_device_get_match_data +EXPORT_SYMBOL vmlinux 0x97d101ed dcache_dir_open +EXPORT_SYMBOL vmlinux 0x97d22631 bdget_disk +EXPORT_SYMBOL vmlinux 0x97d62d1f pnv_cxl_release_hwirqs +EXPORT_SYMBOL vmlinux 0x97d7769a of_get_mac_address +EXPORT_SYMBOL vmlinux 0x97f03d6f vio_cmo_entitlement_update +EXPORT_SYMBOL vmlinux 0x9829fc11 __kfifo_out_peek_r +EXPORT_SYMBOL vmlinux 0x9830aea6 vga_tryget +EXPORT_SYMBOL vmlinux 0x983dd39a jbd2_journal_unlock_updates +EXPORT_SYMBOL vmlinux 0x98508297 agp_put_bridge +EXPORT_SYMBOL vmlinux 0x9853a170 swiotlb_dma_supported +EXPORT_SYMBOL vmlinux 0x986e6135 fb_pad_unaligned_buffer +EXPORT_SYMBOL vmlinux 0x987641a6 netdev_all_upper_get_next_dev_rcu +EXPORT_SYMBOL vmlinux 0x9877cc85 vga_get +EXPORT_SYMBOL vmlinux 0x987fc124 neigh_proc_dointvec_ms_jiffies +EXPORT_SYMBOL vmlinux 0x98988f34 validate_sp +EXPORT_SYMBOL vmlinux 0x98a6490f __test_set_page_writeback +EXPORT_SYMBOL vmlinux 0x98bcf987 rt6_lookup +EXPORT_SYMBOL vmlinux 0x98c68c41 __gnet_stats_copy_basic +EXPORT_SYMBOL vmlinux 0x98cf60b3 strlen +EXPORT_SYMBOL vmlinux 0x98f7f847 inet_accept +EXPORT_SYMBOL vmlinux 0x99195078 vsnprintf +EXPORT_SYMBOL vmlinux 0x9939eba0 backlight_unregister_notifier +EXPORT_SYMBOL vmlinux 0x99517682 udp_encap_enable +EXPORT_SYMBOL vmlinux 0x99591a7a ipv6_ext_hdr +EXPORT_SYMBOL vmlinux 0x995a9e2c tcp_parse_options +EXPORT_SYMBOL vmlinux 0x9964e48d fput +EXPORT_SYMBOL vmlinux 0x997e5b29 udp_lib_rehash +EXPORT_SYMBOL vmlinux 0x9994c0ca ps2_is_keyboard_id +EXPORT_SYMBOL vmlinux 0x9998b7db alloc_buffer_head +EXPORT_SYMBOL vmlinux 0x999b40a3 unregister_md_personality +EXPORT_SYMBOL vmlinux 0x999e8297 vfree +EXPORT_SYMBOL vmlinux 0x99a0b7f6 mb_cache_entry_insert +EXPORT_SYMBOL vmlinux 0x99aa558e of_find_compatible_node +EXPORT_SYMBOL vmlinux 0x99aa944e bioset_integrity_free +EXPORT_SYMBOL vmlinux 0x99afe916 _raw_write_unlock_bh +EXPORT_SYMBOL vmlinux 0x99ccf0b3 param_set_ulong +EXPORT_SYMBOL vmlinux 0x99cdc86b sysctl_tcp_reordering +EXPORT_SYMBOL vmlinux 0x99d26f7f kmem_cache_destroy +EXPORT_SYMBOL vmlinux 0x99d3a43c dm_table_get_size +EXPORT_SYMBOL vmlinux 0x99daa9bf try_offline_node +EXPORT_SYMBOL vmlinux 0x99dbf503 __generic_block_fiemap +EXPORT_SYMBOL vmlinux 0x99f5d2e3 inet6_add_offload +EXPORT_SYMBOL vmlinux 0x99fa4579 key_link +EXPORT_SYMBOL vmlinux 0x9a1dfd65 strpbrk +EXPORT_SYMBOL vmlinux 0x9a1fc4b4 jiffies_to_timeval +EXPORT_SYMBOL vmlinux 0x9a3de458 pci_wake_from_d3 +EXPORT_SYMBOL vmlinux 0x9a5ffc64 __tracepoint_kmem_cache_alloc +EXPORT_SYMBOL vmlinux 0x9a729d8a mark_buffer_dirty_inode +EXPORT_SYMBOL vmlinux 0x9a7d0890 __get_user_pages_unlocked +EXPORT_SYMBOL vmlinux 0x9a8f4623 tcf_hash_cleanup +EXPORT_SYMBOL vmlinux 0x9abe3466 nf_register_hooks +EXPORT_SYMBOL vmlinux 0x9aeb07e8 vme_lm_attach +EXPORT_SYMBOL vmlinux 0x9aeb27d4 inode_add_bytes +EXPORT_SYMBOL vmlinux 0x9b123622 jbd2_journal_set_features +EXPORT_SYMBOL vmlinux 0x9b1465e7 bio_advance +EXPORT_SYMBOL vmlinux 0x9b193bdf simple_rmdir +EXPORT_SYMBOL vmlinux 0x9b33e0d7 unregister_dcbevent_notifier +EXPORT_SYMBOL vmlinux 0x9b36091b blk_queue_dma_pad +EXPORT_SYMBOL vmlinux 0x9b388444 get_zeroed_page +EXPORT_SYMBOL vmlinux 0x9b39b1c1 __sk_mem_schedule +EXPORT_SYMBOL vmlinux 0x9b4a98b3 arp_create +EXPORT_SYMBOL vmlinux 0x9b868664 blk_get_backing_dev_info +EXPORT_SYMBOL vmlinux 0x9b943ce5 blk_queue_logical_block_size +EXPORT_SYMBOL vmlinux 0x9b9e05f9 alloc_cpu_rmap +EXPORT_SYMBOL vmlinux 0x9b9eda78 kernel_sock_ioctl +EXPORT_SYMBOL vmlinux 0x9b9f0c74 ipv6_chk_custom_prefix +EXPORT_SYMBOL vmlinux 0x9ba7089d argv_split +EXPORT_SYMBOL vmlinux 0x9badff0b tcf_exts_dump_stats +EXPORT_SYMBOL vmlinux 0x9bdd5168 fsnotify_alloc_group +EXPORT_SYMBOL vmlinux 0x9be7bde4 security_tun_dev_attach +EXPORT_SYMBOL vmlinux 0x9be81b23 get_fs_type +EXPORT_SYMBOL vmlinux 0x9bec31c5 bio_init +EXPORT_SYMBOL vmlinux 0x9bf1566f dev_uc_flush +EXPORT_SYMBOL vmlinux 0x9bf38768 sync_mapping_buffers +EXPORT_SYMBOL vmlinux 0x9bf432ab seq_put_decimal_ull +EXPORT_SYMBOL vmlinux 0x9bf7a52f __nla_reserve +EXPORT_SYMBOL vmlinux 0x9c048f2c blk_rq_unmap_user +EXPORT_SYMBOL vmlinux 0x9c20cbb0 dev_mc_del +EXPORT_SYMBOL vmlinux 0x9c491f60 sg_alloc_table +EXPORT_SYMBOL vmlinux 0x9c6e0011 blk_mq_init_allocated_queue +EXPORT_SYMBOL vmlinux 0x9c822cc5 pci_request_regions +EXPORT_SYMBOL vmlinux 0x9c91a2e3 d_instantiate_no_diralias +EXPORT_SYMBOL vmlinux 0x9c9f5397 dev_mc_init +EXPORT_SYMBOL vmlinux 0x9ca64680 nobh_truncate_page +EXPORT_SYMBOL vmlinux 0x9cab34a6 rfkill_set_led_trigger_name +EXPORT_SYMBOL vmlinux 0x9cb867e7 security_mmap_file +EXPORT_SYMBOL vmlinux 0x9d0d6206 unregister_netdevice_notifier +EXPORT_SYMBOL vmlinux 0x9d10d7d6 input_mt_assign_slots +EXPORT_SYMBOL vmlinux 0x9d14983a ppc_enable_pmcs +EXPORT_SYMBOL vmlinux 0x9d1d9816 nobh_write_end +EXPORT_SYMBOL vmlinux 0x9d2ce528 bdev_stack_limits +EXPORT_SYMBOL vmlinux 0x9d2cf566 pagecache_write_end +EXPORT_SYMBOL vmlinux 0x9d3aa376 blk_iopoll_init +EXPORT_SYMBOL vmlinux 0x9d7ce8dd _raw_spin_trylock +EXPORT_SYMBOL vmlinux 0x9d9ba3a1 inet_getname +EXPORT_SYMBOL vmlinux 0x9d9d3268 find_vma +EXPORT_SYMBOL vmlinux 0x9d9dfc18 load_fp_state +EXPORT_SYMBOL vmlinux 0x9da05e10 mipi_dsi_create_packet +EXPORT_SYMBOL vmlinux 0x9dcfb8ed inode_needs_sync +EXPORT_SYMBOL vmlinux 0x9dd993b0 jbd2_journal_force_commit +EXPORT_SYMBOL vmlinux 0x9dff2d71 xfrm_register_type +EXPORT_SYMBOL vmlinux 0x9e0c711d vzalloc_node +EXPORT_SYMBOL vmlinux 0x9e13b1ce netif_tx_stop_all_queues +EXPORT_SYMBOL vmlinux 0x9e2b9268 param_get_invbool +EXPORT_SYMBOL vmlinux 0x9e2f8c90 lz4_decompress_unknownoutputsize +EXPORT_SYMBOL vmlinux 0x9e311152 jbd2_journal_get_create_access +EXPORT_SYMBOL vmlinux 0x9e317754 scsi_set_medium_removal +EXPORT_SYMBOL vmlinux 0x9e35cca2 md_write_start +EXPORT_SYMBOL vmlinux 0x9e3a7b20 mipi_dsi_driver_unregister +EXPORT_SYMBOL vmlinux 0x9e472840 of_io_request_and_map +EXPORT_SYMBOL vmlinux 0x9e4faeef dm_io_client_destroy +EXPORT_SYMBOL vmlinux 0x9e508c4e of_get_named_gpio_flags +EXPORT_SYMBOL vmlinux 0x9e61bb05 set_freezable +EXPORT_SYMBOL vmlinux 0x9e6fff59 __generic_file_write_iter +EXPORT_SYMBOL vmlinux 0x9e763530 reciprocal_value +EXPORT_SYMBOL vmlinux 0x9e7e5526 eth_type_trans +EXPORT_SYMBOL vmlinux 0x9e97375d rtas_busy_delay_time +EXPORT_SYMBOL vmlinux 0x9eaad08a prepare_kernel_cred +EXPORT_SYMBOL vmlinux 0x9ebd4c04 adjust_resource +EXPORT_SYMBOL vmlinux 0x9ec625d6 xfrm4_rcv +EXPORT_SYMBOL vmlinux 0x9f0af2ed tty_port_raise_dtr_rts +EXPORT_SYMBOL vmlinux 0x9f129405 generic_setxattr +EXPORT_SYMBOL vmlinux 0x9f2c565a uart_match_port +EXPORT_SYMBOL vmlinux 0x9f455a46 kernel_getsockname +EXPORT_SYMBOL vmlinux 0x9f46ced8 __sw_hweight64 +EXPORT_SYMBOL vmlinux 0x9f4a565e dm_put_table_device +EXPORT_SYMBOL vmlinux 0x9f4f6167 sock_edemux +EXPORT_SYMBOL vmlinux 0x9f7c1be8 skb_flow_dissector_init +EXPORT_SYMBOL vmlinux 0x9f911629 idr_alloc_cyclic +EXPORT_SYMBOL vmlinux 0x9f984513 strrchr +EXPORT_SYMBOL vmlinux 0x9fc2bb39 simple_dname +EXPORT_SYMBOL vmlinux 0x9fd9d1e9 generic_perform_write +EXPORT_SYMBOL vmlinux 0x9fdecc31 unregister_netdevice_many +EXPORT_SYMBOL vmlinux 0x9ff828ce of_find_mipi_dsi_device_by_node +EXPORT_SYMBOL vmlinux 0x9ffa3a75 netdev_max_backlog +EXPORT_SYMBOL vmlinux 0x9fff72ec notify_change +EXPORT_SYMBOL vmlinux 0xa011be6d sock_common_setsockopt +EXPORT_SYMBOL vmlinux 0xa019c21c mipi_dsi_dcs_set_tear_off +EXPORT_SYMBOL vmlinux 0xa0436e98 in6addr_linklocal_allnodes +EXPORT_SYMBOL vmlinux 0xa04a01bd qdisc_class_hash_insert +EXPORT_SYMBOL vmlinux 0xa04bd406 generic_file_llseek +EXPORT_SYMBOL vmlinux 0xa05c03df mempool_kmalloc +EXPORT_SYMBOL vmlinux 0xa07a37f0 memchr +EXPORT_SYMBOL vmlinux 0xa07ed110 xz_dec_init +EXPORT_SYMBOL vmlinux 0xa084749a __bitmap_or +EXPORT_SYMBOL vmlinux 0xa094bd95 mipi_dsi_dcs_set_display_on +EXPORT_SYMBOL vmlinux 0xa0a0449e __nlmsg_put +EXPORT_SYMBOL vmlinux 0xa0b04675 vmalloc_32 +EXPORT_SYMBOL vmlinux 0xa0bd8189 dev_addr_flush +EXPORT_SYMBOL vmlinux 0xa0c31431 bio_integrity_advance +EXPORT_SYMBOL vmlinux 0xa0d75314 sock_common_getsockopt +EXPORT_SYMBOL vmlinux 0xa0dad88e netdev_adjacent_get_private +EXPORT_SYMBOL vmlinux 0xa0ebd14c sysctl_tcp_mem +EXPORT_SYMBOL vmlinux 0xa0f8183f dev_queue_xmit_sk +EXPORT_SYMBOL vmlinux 0xa0fbac79 wake_up_bit +EXPORT_SYMBOL vmlinux 0xa0ff74d6 udp_memory_allocated +EXPORT_SYMBOL vmlinux 0xa1055ef5 sock_get_timestampns +EXPORT_SYMBOL vmlinux 0xa107702b scsi_test_unit_ready +EXPORT_SYMBOL vmlinux 0xa108eb4d sysctl_optmem_max +EXPORT_SYMBOL vmlinux 0xa11bbbfc call_netdevice_notifiers +EXPORT_SYMBOL vmlinux 0xa120d33c tty_unregister_ldisc +EXPORT_SYMBOL vmlinux 0xa12d3cad fget_raw +EXPORT_SYMBOL vmlinux 0xa136eb88 generic_block_fiemap +EXPORT_SYMBOL vmlinux 0xa1391c37 __ethtool_get_settings +EXPORT_SYMBOL vmlinux 0xa139e1f6 vme_dma_list_exec +EXPORT_SYMBOL vmlinux 0xa13a6e2c __sock_tx_timestamp +EXPORT_SYMBOL vmlinux 0xa13b50c6 soft_cursor +EXPORT_SYMBOL vmlinux 0xa1415618 twl6030_interrupt_unmask +EXPORT_SYMBOL vmlinux 0xa14f3d8c ewma_add +EXPORT_SYMBOL vmlinux 0xa160b122 mmc_stop_bkops +EXPORT_SYMBOL vmlinux 0xa165c603 sk_mc_loop +EXPORT_SYMBOL vmlinux 0xa16cef40 pci_bus_read_dev_vendor_id +EXPORT_SYMBOL vmlinux 0xa182b3bd __scm_destroy +EXPORT_SYMBOL vmlinux 0xa1b12026 rtnl_notify +EXPORT_SYMBOL vmlinux 0xa1b759ce fb_add_videomode +EXPORT_SYMBOL vmlinux 0xa1bae9a4 input_register_device +EXPORT_SYMBOL vmlinux 0xa1c76e0a _cond_resched +EXPORT_SYMBOL vmlinux 0xa1c99385 __init_waitqueue_head +EXPORT_SYMBOL vmlinux 0xa1c9b469 force_sig +EXPORT_SYMBOL vmlinux 0xa1d119dc freezing_slow_path +EXPORT_SYMBOL vmlinux 0xa1e909db mmc_gpio_set_cd_isr +EXPORT_SYMBOL vmlinux 0xa1f8fe75 wait_for_completion_killable_timeout +EXPORT_SYMBOL vmlinux 0xa1fc83f4 xfrm_state_walk +EXPORT_SYMBOL vmlinux 0xa202a8e5 kmalloc_order_trace +EXPORT_SYMBOL vmlinux 0xa209451c bitmap_fold +EXPORT_SYMBOL vmlinux 0xa221b7d9 mem_section +EXPORT_SYMBOL vmlinux 0xa275a37b mmc_unregister_driver +EXPORT_SYMBOL vmlinux 0xa2798f80 put_io_context +EXPORT_SYMBOL vmlinux 0xa281535f pagevec_lookup_tag +EXPORT_SYMBOL vmlinux 0xa2848c50 ecryptfs_get_auth_tok_key +EXPORT_SYMBOL vmlinux 0xa291e1e7 read_cache_page +EXPORT_SYMBOL vmlinux 0xa2924f43 con_copy_unimap +EXPORT_SYMBOL vmlinux 0xa2a335bd vme_alloc_consistent +EXPORT_SYMBOL vmlinux 0xa2ae7971 dquot_enable +EXPORT_SYMBOL vmlinux 0xa2bbed37 crash_shutdown_register +EXPORT_SYMBOL vmlinux 0xa2dc521b generic_show_options +EXPORT_SYMBOL vmlinux 0xa2f04796 msi_bitmap_alloc_hwirqs +EXPORT_SYMBOL vmlinux 0xa2fdbcbe fence_default_wait +EXPORT_SYMBOL vmlinux 0xa303d1ff dm_ratelimit_state +EXPORT_SYMBOL vmlinux 0xa31b9149 fb_show_logo +EXPORT_SYMBOL vmlinux 0xa31bdf07 vme_master_set +EXPORT_SYMBOL vmlinux 0xa355e146 pci_disable_link_state +EXPORT_SYMBOL vmlinux 0xa364f870 param_array_ops +EXPORT_SYMBOL vmlinux 0xa3780344 ip_options_rcv_srr +EXPORT_SYMBOL vmlinux 0xa37af188 skb_store_bits +EXPORT_SYMBOL vmlinux 0xa39b4cf2 udelay +EXPORT_SYMBOL vmlinux 0xa3abc422 abort_exclusive_wait +EXPORT_SYMBOL vmlinux 0xa3b9d6e4 phy_drivers_unregister +EXPORT_SYMBOL vmlinux 0xa3e37c79 mmc_put_card +EXPORT_SYMBOL vmlinux 0xa3e60d19 qdisc_class_hash_grow +EXPORT_SYMBOL vmlinux 0xa3fc3d50 __tracepoint_module_get +EXPORT_SYMBOL vmlinux 0xa40536c9 vme_unregister_driver +EXPORT_SYMBOL vmlinux 0xa4080df1 vlan_vids_del_by_dev +EXPORT_SYMBOL vmlinux 0xa40b92c8 xfrm_state_register_afinfo +EXPORT_SYMBOL vmlinux 0xa419be49 tcp_v4_md5_hash_skb +EXPORT_SYMBOL vmlinux 0xa4287f70 vm_insert_page +EXPORT_SYMBOL vmlinux 0xa4511467 crc16 +EXPORT_SYMBOL vmlinux 0xa4675f74 generic_fillattr +EXPORT_SYMBOL vmlinux 0xa4701e9e timekeeping_inject_offset +EXPORT_SYMBOL vmlinux 0xa4775929 shrink_dcache_sb +EXPORT_SYMBOL vmlinux 0xa4857efa dcbnl_cee_notify +EXPORT_SYMBOL vmlinux 0xa49a52b7 add_random_ready_callback +EXPORT_SYMBOL vmlinux 0xa4a1da08 scsi_mode_sense +EXPORT_SYMBOL vmlinux 0xa4adc973 scsi_eh_restore_cmnd +EXPORT_SYMBOL vmlinux 0xa4b0ecb3 param_get_long +EXPORT_SYMBOL vmlinux 0xa4b41f68 dquot_transfer +EXPORT_SYMBOL vmlinux 0xa4b45ea5 out_of_line_wait_on_bit_lock +EXPORT_SYMBOL vmlinux 0xa4b94fea iowrite8_rep +EXPORT_SYMBOL vmlinux 0xa4bbb5e2 filemap_write_and_wait +EXPORT_SYMBOL vmlinux 0xa4d3ff28 __blk_end_request_cur +EXPORT_SYMBOL vmlinux 0xa4d4f0e6 global_cache_flush +EXPORT_SYMBOL vmlinux 0xa519171e softnet_data +EXPORT_SYMBOL vmlinux 0xa5526619 rb_insert_color +EXPORT_SYMBOL vmlinux 0xa55c6830 register_sysctl_table +EXPORT_SYMBOL vmlinux 0xa598e29c vesa_modes +EXPORT_SYMBOL vmlinux 0xa5a51eee __crc32c_le +EXPORT_SYMBOL vmlinux 0xa5b44c0b t10_pi_type1_crc +EXPORT_SYMBOL vmlinux 0xa5e07d84 padata_do_parallel +EXPORT_SYMBOL vmlinux 0xa5e714ad mount_nodev +EXPORT_SYMBOL vmlinux 0xa600d32f put_filp +EXPORT_SYMBOL vmlinux 0xa6141dd0 dev_uc_unsync +EXPORT_SYMBOL vmlinux 0xa619f06a kill_litter_super +EXPORT_SYMBOL vmlinux 0xa631df8a cpu_possible_mask +EXPORT_SYMBOL vmlinux 0xa63322c6 hdmi_audio_infoframe_pack +EXPORT_SYMBOL vmlinux 0xa6374484 reservation_object_reserve_shared +EXPORT_SYMBOL vmlinux 0xa63d85ab slhc_remember +EXPORT_SYMBOL vmlinux 0xa65972b8 _memcpy_toio +EXPORT_SYMBOL vmlinux 0xa675804c utf8s_to_utf16s +EXPORT_SYMBOL vmlinux 0xa681fe88 generate_random_uuid +EXPORT_SYMBOL vmlinux 0xa6a0b999 blk_mq_kick_requeue_list +EXPORT_SYMBOL vmlinux 0xa6c3a600 blk_run_queue_async +EXPORT_SYMBOL vmlinux 0xa6c77320 mipi_dsi_dcs_exit_sleep_mode +EXPORT_SYMBOL vmlinux 0xa6dc8d07 udp_lib_get_port +EXPORT_SYMBOL vmlinux 0xa6f22b72 inet_del_offload +EXPORT_SYMBOL vmlinux 0xa6ffec60 woken_wake_function +EXPORT_SYMBOL vmlinux 0xa70b9a8d padata_free +EXPORT_SYMBOL vmlinux 0xa715cddc cpufreq_power_cooling_register +EXPORT_SYMBOL vmlinux 0xa71b98e8 tc_classify +EXPORT_SYMBOL vmlinux 0xa720678c lg_global_lock +EXPORT_SYMBOL vmlinux 0xa72594f6 put_cmsg +EXPORT_SYMBOL vmlinux 0xa72a0f5b nr_online_nodes +EXPORT_SYMBOL vmlinux 0xa735db59 prandom_u32 +EXPORT_SYMBOL vmlinux 0xa74f4e9b ida_simple_get +EXPORT_SYMBOL vmlinux 0xa7519903 vme_irq_request +EXPORT_SYMBOL vmlinux 0xa766eff5 netpoll_setup +EXPORT_SYMBOL vmlinux 0xa7b076f6 md_flush_request +EXPORT_SYMBOL vmlinux 0xa7b6eca5 blk_mq_complete_request +EXPORT_SYMBOL vmlinux 0xa7d21da4 have_submounts +EXPORT_SYMBOL vmlinux 0xa7d564f6 blk_queue_make_request +EXPORT_SYMBOL vmlinux 0xa7dab9d4 copy_page_from_iter +EXPORT_SYMBOL vmlinux 0xa7e0b333 xfrm_state_check_expire +EXPORT_SYMBOL vmlinux 0xa7ed6b60 backlight_device_unregister +EXPORT_SYMBOL vmlinux 0xa7fa5042 tcp_init_sock +EXPORT_SYMBOL vmlinux 0xa80633fb d_obtain_root +EXPORT_SYMBOL vmlinux 0xa80a47a3 find_get_entry +EXPORT_SYMBOL vmlinux 0xa8135cf2 proto_unregister +EXPORT_SYMBOL vmlinux 0xa81e8716 dump_skip +EXPORT_SYMBOL vmlinux 0xa8232c78 strtobool +EXPORT_SYMBOL vmlinux 0xa836bdc4 of_find_property +EXPORT_SYMBOL vmlinux 0xa843805a get_unused_fd_flags +EXPORT_SYMBOL vmlinux 0xa85bffc1 pci_save_state +EXPORT_SYMBOL vmlinux 0xa8618dd1 put_tty_driver +EXPORT_SYMBOL vmlinux 0xa8721b97 system_state +EXPORT_SYMBOL vmlinux 0xa8812b86 netdev_lower_dev_get_private +EXPORT_SYMBOL vmlinux 0xa8be32ac blk_mq_tag_busy_iter +EXPORT_SYMBOL vmlinux 0xa8f70452 igrab +EXPORT_SYMBOL vmlinux 0xa8fb1edd passthru_features_check +EXPORT_SYMBOL vmlinux 0xa8fef7bb security_unix_may_send +EXPORT_SYMBOL vmlinux 0xa9138e1a seq_release +EXPORT_SYMBOL vmlinux 0xa9168676 xmit_recursion +EXPORT_SYMBOL vmlinux 0xa916b694 strnlen +EXPORT_SYMBOL vmlinux 0xa916fed5 unlock_rename +EXPORT_SYMBOL vmlinux 0xa9273e1a epapr_hypercall_start +EXPORT_SYMBOL vmlinux 0xa9382cc9 d_splice_alias +EXPORT_SYMBOL vmlinux 0xa93ba88e proc_doulongvec_minmax +EXPORT_SYMBOL vmlinux 0xa9487bb2 genphy_config_init +EXPORT_SYMBOL vmlinux 0xa95213e4 i2c_smbus_read_byte_data +EXPORT_SYMBOL vmlinux 0xa959b2e7 agp_bind_memory +EXPORT_SYMBOL vmlinux 0xa976957d bitmap_remap +EXPORT_SYMBOL vmlinux 0xa9927e52 in_dev_finish_destroy +EXPORT_SYMBOL vmlinux 0xa99b39c2 prandom_bytes +EXPORT_SYMBOL vmlinux 0xa9c63b69 security_xfrm_policy_free +EXPORT_SYMBOL vmlinux 0xa9d610e6 blk_queue_resize_tags +EXPORT_SYMBOL vmlinux 0xa9fd218e seq_puts +EXPORT_SYMBOL vmlinux 0xaa0073b7 __net_get_random_once +EXPORT_SYMBOL vmlinux 0xaa04c632 xfrm6_protocol_register +EXPORT_SYMBOL vmlinux 0xaa090986 pci_try_set_mwi +EXPORT_SYMBOL vmlinux 0xaa0bbbfe udp_flush_pending_frames +EXPORT_SYMBOL vmlinux 0xaa0f1c32 seq_put_decimal_ll +EXPORT_SYMBOL vmlinux 0xaa1103ab __pskb_copy_fclone +EXPORT_SYMBOL vmlinux 0xaa16c0ec seq_putc +EXPORT_SYMBOL vmlinux 0xaa293a2d blk_queue_end_tag +EXPORT_SYMBOL vmlinux 0xaa46e87e lg_local_unlock +EXPORT_SYMBOL vmlinux 0xaa58d33e kmalloc_caches +EXPORT_SYMBOL vmlinux 0xaa5c312e powerpc_debugfs_root +EXPORT_SYMBOL vmlinux 0xaa69877d __pskb_pull_tail +EXPORT_SYMBOL vmlinux 0xaa6cb721 netdev_upper_dev_link +EXPORT_SYMBOL vmlinux 0xaa6e4df5 _raw_write_lock_irqsave +EXPORT_SYMBOL vmlinux 0xaa6f23ad rfkill_get_led_trigger_name +EXPORT_SYMBOL vmlinux 0xaa878ea3 blk_free_tags +EXPORT_SYMBOL vmlinux 0xaabac385 fb_class +EXPORT_SYMBOL vmlinux 0xaabd2454 inet_frag_find +EXPORT_SYMBOL vmlinux 0xaac33234 km_report +EXPORT_SYMBOL vmlinux 0xaad0ae78 __bitmap_shift_right +EXPORT_SYMBOL vmlinux 0xaad6d92f rfkill_init_sw_state +EXPORT_SYMBOL vmlinux 0xaafdc258 strcasecmp +EXPORT_SYMBOL vmlinux 0xaafff639 inc_nlink +EXPORT_SYMBOL vmlinux 0xab0145c4 jbd2_journal_file_inode +EXPORT_SYMBOL vmlinux 0xab0c1dba always_delete_dentry +EXPORT_SYMBOL vmlinux 0xab0c35e7 simple_unlink +EXPORT_SYMBOL vmlinux 0xab12a40c skb_coalesce_rx_frag +EXPORT_SYMBOL vmlinux 0xab246053 xfrm_state_unregister_afinfo +EXPORT_SYMBOL vmlinux 0xab3c24ff page_waitqueue +EXPORT_SYMBOL vmlinux 0xab43e0ac mdiobus_read +EXPORT_SYMBOL vmlinux 0xab5b20c3 __hw_addr_sync_dev +EXPORT_SYMBOL vmlinux 0xab6bde28 sysctl_max_syn_backlog +EXPORT_SYMBOL vmlinux 0xab72c036 from_kuid +EXPORT_SYMBOL vmlinux 0xab765870 udp_sendmsg +EXPORT_SYMBOL vmlinux 0xab781570 fb_get_options +EXPORT_SYMBOL vmlinux 0xab83a490 search_binary_handler +EXPORT_SYMBOL vmlinux 0xabae2fc6 __wait_on_bit +EXPORT_SYMBOL vmlinux 0xabb2a17d blk_queue_init_tags +EXPORT_SYMBOL vmlinux 0xabb973af file_ns_capable +EXPORT_SYMBOL vmlinux 0xabc6dd63 cpufreq_sysfs_create_file +EXPORT_SYMBOL vmlinux 0xabcaa577 free_anon_bdev +EXPORT_SYMBOL vmlinux 0xabe4f831 tcp_v4_syn_recv_sock +EXPORT_SYMBOL vmlinux 0xabe6899c blk_pm_runtime_init +EXPORT_SYMBOL vmlinux 0xabe9410a tty_port_close +EXPORT_SYMBOL vmlinux 0xabf320ad mipi_dsi_dcs_set_column_address +EXPORT_SYMBOL vmlinux 0xac0ba8c1 blk_iopoll_disable +EXPORT_SYMBOL vmlinux 0xac0f8e07 xfrm_state_lookup_byaddr +EXPORT_SYMBOL vmlinux 0xac1a55be unregister_reboot_notifier +EXPORT_SYMBOL vmlinux 0xac26b820 _raw_write_lock +EXPORT_SYMBOL vmlinux 0xac600359 jbd2_journal_blocks_per_page +EXPORT_SYMBOL vmlinux 0xac6e3100 proto_register +EXPORT_SYMBOL vmlinux 0xac858288 dqget +EXPORT_SYMBOL vmlinux 0xaca9c7d5 __splice_from_pipe +EXPORT_SYMBOL vmlinux 0xacab29b7 seq_hlist_start_percpu +EXPORT_SYMBOL vmlinux 0xacb5e539 __serio_register_port +EXPORT_SYMBOL vmlinux 0xacbd27ce down_read +EXPORT_SYMBOL vmlinux 0xacc1d291 __vfs_write +EXPORT_SYMBOL vmlinux 0xacc5b5d2 csum_ipv6_magic +EXPORT_SYMBOL vmlinux 0xaccabc6a in4_pton +EXPORT_SYMBOL vmlinux 0xacd81eb3 jbd2_inode_cache +EXPORT_SYMBOL vmlinux 0xacf4d843 match_strdup +EXPORT_SYMBOL vmlinux 0xacff0adf eth_change_mtu +EXPORT_SYMBOL vmlinux 0xad01744f kstrtos8_from_user +EXPORT_SYMBOL vmlinux 0xad038c6d __kfree_skb +EXPORT_SYMBOL vmlinux 0xad0413d4 match_hex +EXPORT_SYMBOL vmlinux 0xad0d979f scsi_unblock_requests +EXPORT_SYMBOL vmlinux 0xad164875 kstrtos16_from_user +EXPORT_SYMBOL vmlinux 0xad1fcd08 param_set_bool +EXPORT_SYMBOL vmlinux 0xad22a215 mipi_dsi_dcs_enter_sleep_mode +EXPORT_SYMBOL vmlinux 0xad298cb7 dquot_set_dqblk +EXPORT_SYMBOL vmlinux 0xad4c1b51 flex_array_alloc +EXPORT_SYMBOL vmlinux 0xad50cebb i8253_lock +EXPORT_SYMBOL vmlinux 0xad6c2ecc devm_gpio_request_one +EXPORT_SYMBOL vmlinux 0xad84bef8 dm_table_event +EXPORT_SYMBOL vmlinux 0xad984b9e i2c_register_driver +EXPORT_SYMBOL vmlinux 0xad9f6c49 mb_cache_shrink +EXPORT_SYMBOL vmlinux 0xada22ad1 pcix_set_mmrbc +EXPORT_SYMBOL vmlinux 0xada5b1bc tcp_shutdown +EXPORT_SYMBOL vmlinux 0xadbad1a5 con_set_default_unimap +EXPORT_SYMBOL vmlinux 0xadbdeaf7 install_exec_creds +EXPORT_SYMBOL vmlinux 0xaddaaa15 param_set_ushort +EXPORT_SYMBOL vmlinux 0xade75203 pnv_phb_to_cxl_mode +EXPORT_SYMBOL vmlinux 0xadfdfcef __bitmap_andnot +EXPORT_SYMBOL vmlinux 0xae1284ab dma_direct_ops +EXPORT_SYMBOL vmlinux 0xae200e2f mmc_fixup_device +EXPORT_SYMBOL vmlinux 0xae358236 fence_signal +EXPORT_SYMBOL vmlinux 0xae4430a7 proc_symlink +EXPORT_SYMBOL vmlinux 0xae4682e6 blk_cleanup_queue +EXPORT_SYMBOL vmlinux 0xae4a1bda csum_tcpudp_nofold +EXPORT_SYMBOL vmlinux 0xae545f06 _raw_write_unlock_irqrestore +EXPORT_SYMBOL vmlinux 0xae67a7b4 compat_tcp_getsockopt +EXPORT_SYMBOL vmlinux 0xae72063b pnv_cxl_release_hwirq_ranges +EXPORT_SYMBOL vmlinux 0xae729e59 security_req_classify_flow +EXPORT_SYMBOL vmlinux 0xae74d6c1 __invalidate_device +EXPORT_SYMBOL vmlinux 0xaea2c11f mb_cache_entry_find_first +EXPORT_SYMBOL vmlinux 0xaeae3fb3 tcp_proc_register +EXPORT_SYMBOL vmlinux 0xaeb23ce7 jbd2_journal_invalidatepage +EXPORT_SYMBOL vmlinux 0xaec35db4 flex_array_free +EXPORT_SYMBOL vmlinux 0xaed3e893 cdrom_get_media_event +EXPORT_SYMBOL vmlinux 0xaeff529c netdev_features_change +EXPORT_SYMBOL vmlinux 0xaf063510 _raw_spin_lock_bh +EXPORT_SYMBOL vmlinux 0xaf10fc85 scsi_add_device +EXPORT_SYMBOL vmlinux 0xaf2d872c prepare_to_wait +EXPORT_SYMBOL vmlinux 0xaf3dd7dc scsi_logging_level +EXPORT_SYMBOL vmlinux 0xaf41419d swiotlb_dma_mapping_error +EXPORT_SYMBOL vmlinux 0xaf43b726 gnet_stats_copy_queue +EXPORT_SYMBOL vmlinux 0xaf54183a pcie_port_service_unregister +EXPORT_SYMBOL vmlinux 0xaf6ae696 kstrndup +EXPORT_SYMBOL vmlinux 0xaf9340a7 tcf_hash_new_index +EXPORT_SYMBOL vmlinux 0xaf9b6be1 __d_drop +EXPORT_SYMBOL vmlinux 0xafaa0efa param_get_charp +EXPORT_SYMBOL vmlinux 0xafaaeead __netlink_ns_capable +EXPORT_SYMBOL vmlinux 0xafe69910 agp_find_bridge +EXPORT_SYMBOL vmlinux 0xafead484 find_get_pages_tag +EXPORT_SYMBOL vmlinux 0xafff3d1d mempool_alloc +EXPORT_SYMBOL vmlinux 0xb0078974 vfs_mknod +EXPORT_SYMBOL vmlinux 0xb00d88bd kill_pgrp +EXPORT_SYMBOL vmlinux 0xb04241b4 ida_simple_remove +EXPORT_SYMBOL vmlinux 0xb04b2ea4 uart_write_wakeup +EXPORT_SYMBOL vmlinux 0xb05fc310 sysctl_rmem_max +EXPORT_SYMBOL vmlinux 0xb0760b99 __devm_request_region +EXPORT_SYMBOL vmlinux 0xb08de539 uart_remove_one_port +EXPORT_SYMBOL vmlinux 0xb0902fd5 dm_kcopyd_copy +EXPORT_SYMBOL vmlinux 0xb0a0da0c rational_best_approximation +EXPORT_SYMBOL vmlinux 0xb0a2bade phy_start_aneg +EXPORT_SYMBOL vmlinux 0xb0b49c08 tcp_release_cb +EXPORT_SYMBOL vmlinux 0xb0c5eac4 generic_key_instantiate +EXPORT_SYMBOL vmlinux 0xb0c9a9b2 vfs_llseek +EXPORT_SYMBOL vmlinux 0xb0e10781 get_option +EXPORT_SYMBOL vmlinux 0xb1024e8d pci_stop_and_remove_bus_device +EXPORT_SYMBOL vmlinux 0xb10d61e8 __dev_remove_pack +EXPORT_SYMBOL vmlinux 0xb11c5ba7 dma_find_channel +EXPORT_SYMBOL vmlinux 0xb1250db4 netpoll_poll_enable +EXPORT_SYMBOL vmlinux 0xb126ceff bio_integrity_alloc +EXPORT_SYMBOL vmlinux 0xb12cbacb fb_unregister_client +EXPORT_SYMBOL vmlinux 0xb1461875 pci_pme_active +EXPORT_SYMBOL vmlinux 0xb147a855 dql_reset +EXPORT_SYMBOL vmlinux 0xb1515784 padata_register_cpumask_notifier +EXPORT_SYMBOL vmlinux 0xb15bd8fa tb_ticks_per_sec +EXPORT_SYMBOL vmlinux 0xb15cb614 security_xfrm_policy_alloc +EXPORT_SYMBOL vmlinux 0xb1645a2e sg_free_table +EXPORT_SYMBOL vmlinux 0xb165ef45 __irq_regs +EXPORT_SYMBOL vmlinux 0xb186f479 phy_start_interrupts +EXPORT_SYMBOL vmlinux 0xb1bff53d __bforget +EXPORT_SYMBOL vmlinux 0xb1c3a01a oops_in_progress +EXPORT_SYMBOL vmlinux 0xb1c6e787 wait_for_completion_timeout +EXPORT_SYMBOL vmlinux 0xb1cf44df fb_find_best_mode +EXPORT_SYMBOL vmlinux 0xb1d944fe sk_capable +EXPORT_SYMBOL vmlinux 0xb1eb6fbe bio_add_page +EXPORT_SYMBOL vmlinux 0xb230bb65 jbd2_journal_destroy +EXPORT_SYMBOL vmlinux 0xb2336ef7 genl_unregister_family +EXPORT_SYMBOL vmlinux 0xb2520b8a pagecache_isize_extended +EXPORT_SYMBOL vmlinux 0xb258dfc1 down_read_trylock +EXPORT_SYMBOL vmlinux 0xb2682405 utf8_to_utf32 +EXPORT_SYMBOL vmlinux 0xb277f6dc devm_backlight_device_register +EXPORT_SYMBOL vmlinux 0xb29b5793 bdgrab +EXPORT_SYMBOL vmlinux 0xb29ed5ec abx500_get_register_page_interruptible +EXPORT_SYMBOL vmlinux 0xb2b46c67 max8925_bulk_write +EXPORT_SYMBOL vmlinux 0xb2be6e92 netdev_stats_to_stats64 +EXPORT_SYMBOL vmlinux 0xb2f24ed5 con_is_bound +EXPORT_SYMBOL vmlinux 0xb2f3a8d0 jbd2_journal_flush +EXPORT_SYMBOL vmlinux 0xb2f9ab07 security_inode_getsecctx +EXPORT_SYMBOL vmlinux 0xb321609c dev_get_phys_port_name +EXPORT_SYMBOL vmlinux 0xb337a580 i2c_master_send +EXPORT_SYMBOL vmlinux 0xb3382494 fence_signal_locked +EXPORT_SYMBOL vmlinux 0xb346f1bb fib_default_rule_pref +EXPORT_SYMBOL vmlinux 0xb36a6afd mipi_dsi_host_unregister +EXPORT_SYMBOL vmlinux 0xb3974d5f genlmsg_put +EXPORT_SYMBOL vmlinux 0xb39c51c9 blk_init_allocated_queue +EXPORT_SYMBOL vmlinux 0xb3d2c76d scsi_hostbyte_string +EXPORT_SYMBOL vmlinux 0xb3d59529 bitmap_close_sync +EXPORT_SYMBOL vmlinux 0xb3de1129 netdev_emerg +EXPORT_SYMBOL vmlinux 0xb3e8e4e1 tty_port_close_start +EXPORT_SYMBOL vmlinux 0xb3f7646e kthread_should_stop +EXPORT_SYMBOL vmlinux 0xb40632df uart_update_timeout +EXPORT_SYMBOL vmlinux 0xb423dba1 console_blanked +EXPORT_SYMBOL vmlinux 0xb42a296f alloc_etherdev_mqs +EXPORT_SYMBOL vmlinux 0xb436b67a md_set_array_sectors +EXPORT_SYMBOL vmlinux 0xb452f9e0 d_find_any_alias +EXPORT_SYMBOL vmlinux 0xb4709322 scsi_dev_info_add_list +EXPORT_SYMBOL vmlinux 0xb47189b5 reservation_ww_class +EXPORT_SYMBOL vmlinux 0xb473e2c2 lockref_get +EXPORT_SYMBOL vmlinux 0xb4a38b28 tty_port_init +EXPORT_SYMBOL vmlinux 0xb4ac6393 tcf_em_tree_destroy +EXPORT_SYMBOL vmlinux 0xb4cbc510 blk_queue_unprep_rq +EXPORT_SYMBOL vmlinux 0xb4cd6dcf nf_ct_attach +EXPORT_SYMBOL vmlinux 0xb4d123ff kernel_read +EXPORT_SYMBOL vmlinux 0xb4eb71c5 ip_ct_attach +EXPORT_SYMBOL vmlinux 0xb4fac5ca udp_del_offload +EXPORT_SYMBOL vmlinux 0xb50b0e9b do_truncate +EXPORT_SYMBOL vmlinux 0xb5267f13 get_user_pages_locked +EXPORT_SYMBOL vmlinux 0xb52f58bd tty_throttle +EXPORT_SYMBOL vmlinux 0xb5441b72 sock_create +EXPORT_SYMBOL vmlinux 0xb54c8276 dev_addr_init +EXPORT_SYMBOL vmlinux 0xb56ed687 abort_creds +EXPORT_SYMBOL vmlinux 0xb57343c2 frontswap_shrink +EXPORT_SYMBOL vmlinux 0xb575548f blk_rq_map_kern +EXPORT_SYMBOL vmlinux 0xb5a459dc unregister_blkdev +EXPORT_SYMBOL vmlinux 0xb5aa7165 dma_pool_destroy +EXPORT_SYMBOL vmlinux 0xb5ca1c46 slhc_free +EXPORT_SYMBOL vmlinux 0xb5f804b0 inet_put_port +EXPORT_SYMBOL vmlinux 0xb5fc1b61 neigh_seq_start +EXPORT_SYMBOL vmlinux 0xb5fe6729 sock_no_sendpage +EXPORT_SYMBOL vmlinux 0xb6150ffe mmc_wait_for_req +EXPORT_SYMBOL vmlinux 0xb6188cfd register_qdisc +EXPORT_SYMBOL vmlinux 0xb6244511 sg_init_one +EXPORT_SYMBOL vmlinux 0xb62ffa36 dquot_alloc +EXPORT_SYMBOL vmlinux 0xb63e727d wait_for_key_construction +EXPORT_SYMBOL vmlinux 0xb64bb177 pagecache_get_page +EXPORT_SYMBOL vmlinux 0xb6554a6d pm860x_reg_write +EXPORT_SYMBOL vmlinux 0xb6668a41 vfs_writef +EXPORT_SYMBOL vmlinux 0xb678366f int_sqrt +EXPORT_SYMBOL vmlinux 0xb68b9f65 xfrm6_protocol_deregister +EXPORT_SYMBOL vmlinux 0xb68bfa9d node_states +EXPORT_SYMBOL vmlinux 0xb6936ffe _bcd2bin +EXPORT_SYMBOL vmlinux 0xb6993857 tcp_conn_request +EXPORT_SYMBOL vmlinux 0xb69d2311 simple_dentry_operations +EXPORT_SYMBOL vmlinux 0xb6a68816 find_last_bit +EXPORT_SYMBOL vmlinux 0xb6ce7d72 hdmi_infoframe_log +EXPORT_SYMBOL vmlinux 0xb6db1cb7 of_mm_gpiochip_add +EXPORT_SYMBOL vmlinux 0xb6ff553e peernet2id_alloc +EXPORT_SYMBOL vmlinux 0xb7046de1 mmc_release_host +EXPORT_SYMBOL vmlinux 0xb714313e dm_unregister_target +EXPORT_SYMBOL vmlinux 0xb719bdca from_kgid_munged +EXPORT_SYMBOL vmlinux 0xb71aa575 backlight_device_register +EXPORT_SYMBOL vmlinux 0xb7256313 pci_find_next_bus +EXPORT_SYMBOL vmlinux 0xb7401b5e netif_rx_ni +EXPORT_SYMBOL vmlinux 0xb7433b71 clocksource_unregister +EXPORT_SYMBOL vmlinux 0xb7488905 scsi_normalize_sense +EXPORT_SYMBOL vmlinux 0xb753a547 of_get_cpu_node +EXPORT_SYMBOL vmlinux 0xb756f15f pskb_expand_head +EXPORT_SYMBOL vmlinux 0xb7695d83 iov_iter_get_pages +EXPORT_SYMBOL vmlinux 0xb77131b1 psched_ratecfg_precompute +EXPORT_SYMBOL vmlinux 0xb7725502 jbd2_journal_check_used_features +EXPORT_SYMBOL vmlinux 0xb77932eb flex_array_clear +EXPORT_SYMBOL vmlinux 0xb7825df4 pci_read_vpd +EXPORT_SYMBOL vmlinux 0xb78927a5 md_unregister_thread +EXPORT_SYMBOL vmlinux 0xb798128b dev_vprintk_emit +EXPORT_SYMBOL vmlinux 0xb7c02976 redraw_screen +EXPORT_SYMBOL vmlinux 0xb7cb2b01 netdev_alert +EXPORT_SYMBOL vmlinux 0xb7f40cb7 mutex_unlock +EXPORT_SYMBOL vmlinux 0xb812b619 mark_page_accessed +EXPORT_SYMBOL vmlinux 0xb8490823 i8042_remove_filter +EXPORT_SYMBOL vmlinux 0xb85f1530 input_allocate_device +EXPORT_SYMBOL vmlinux 0xb874b87a __clzsi2 +EXPORT_SYMBOL vmlinux 0xb878f3a7 crypto_sha512_finup +EXPORT_SYMBOL vmlinux 0xb894405c to_ndd +EXPORT_SYMBOL vmlinux 0xb89a77d6 devm_gpiod_put +EXPORT_SYMBOL vmlinux 0xb8a4d30b tty_unthrottle +EXPORT_SYMBOL vmlinux 0xb8af85b9 md_reap_sync_thread +EXPORT_SYMBOL vmlinux 0xb8dd531c phy_find_first +EXPORT_SYMBOL vmlinux 0xb8df22b0 xfrm_find_acq +EXPORT_SYMBOL vmlinux 0xb8e7b4dd get_acl +EXPORT_SYMBOL vmlinux 0xb8f39e35 __inode_sub_bytes +EXPORT_SYMBOL vmlinux 0xb8f7d4e9 kmem_cache_alloc_trace +EXPORT_SYMBOL vmlinux 0xb8fc3c9b bio_integrity_enabled +EXPORT_SYMBOL vmlinux 0xb907513f unpoison_memory +EXPORT_SYMBOL vmlinux 0xb90dc3c1 devm_input_allocate_device +EXPORT_SYMBOL vmlinux 0xb912824e tcf_em_register +EXPORT_SYMBOL vmlinux 0xb9185eab skb_vlan_push +EXPORT_SYMBOL vmlinux 0xb934ba95 jbd2_journal_start +EXPORT_SYMBOL vmlinux 0xb98a41e3 ata_dev_printk +EXPORT_SYMBOL vmlinux 0xb98ecc14 neigh_parms_alloc +EXPORT_SYMBOL vmlinux 0xb9b49049 udp_poll +EXPORT_SYMBOL vmlinux 0xb9bcd010 ip_cmsg_recv_offset +EXPORT_SYMBOL vmlinux 0xb9c06cb0 kiocb_set_cancel_fn +EXPORT_SYMBOL vmlinux 0xb9e6615f tcp_prequeue +EXPORT_SYMBOL vmlinux 0xb9e7233a get_thermal_instance +EXPORT_SYMBOL vmlinux 0xb9e8e2cc in6addr_sitelocal_allrouters +EXPORT_SYMBOL vmlinux 0xb9eb1a60 bio_integrity_add_page +EXPORT_SYMBOL vmlinux 0xba05451f input_inject_event +EXPORT_SYMBOL vmlinux 0xba1174eb ptp_clock_unregister +EXPORT_SYMBOL vmlinux 0xba1d1fe2 nf_reinject +EXPORT_SYMBOL vmlinux 0xba22a60c mmc_gpiod_request_cd +EXPORT_SYMBOL vmlinux 0xba22b65f security_inode_setsecctx +EXPORT_SYMBOL vmlinux 0xba2ef52c netlink_net_capable +EXPORT_SYMBOL vmlinux 0xba2ffec2 rps_sock_flow_table +EXPORT_SYMBOL vmlinux 0xba497f13 loops_per_jiffy +EXPORT_SYMBOL vmlinux 0xba958627 param_ops_invbool +EXPORT_SYMBOL vmlinux 0xbaabf95b sync_dirty_buffer +EXPORT_SYMBOL vmlinux 0xbabb2675 dquot_release +EXPORT_SYMBOL vmlinux 0xbac5a9e9 deactivate_super +EXPORT_SYMBOL vmlinux 0xbac62045 pci_find_bus +EXPORT_SYMBOL vmlinux 0xbad16ec2 posix_unblock_lock +EXPORT_SYMBOL vmlinux 0xbaf4b231 param_ops_ushort +EXPORT_SYMBOL vmlinux 0xbb0364d3 phy_register_fixup +EXPORT_SYMBOL vmlinux 0xbb0540aa zlib_inflateReset +EXPORT_SYMBOL vmlinux 0xbb0c0f32 tcp_init_cgroup +EXPORT_SYMBOL vmlinux 0xbb2abe84 neigh_for_each +EXPORT_SYMBOL vmlinux 0xbb33a6c9 d_set_d_op +EXPORT_SYMBOL vmlinux 0xbb34134a iov_shorten +EXPORT_SYMBOL vmlinux 0xbb35675b __bitmap_intersects +EXPORT_SYMBOL vmlinux 0xbb358b4f get_gendisk +EXPORT_SYMBOL vmlinux 0xbb494378 mmc_set_data_timeout +EXPORT_SYMBOL vmlinux 0xbb4f4766 simple_write_to_buffer +EXPORT_SYMBOL vmlinux 0xbb5a7119 simple_empty +EXPORT_SYMBOL vmlinux 0xbb5d343d xfrm_get_acqseq +EXPORT_SYMBOL vmlinux 0xbb849033 blk_integrity_compare +EXPORT_SYMBOL vmlinux 0xbb928401 dquot_resume +EXPORT_SYMBOL vmlinux 0xbb96a7e6 of_cpufreq_power_cooling_register +EXPORT_SYMBOL vmlinux 0xbb99125c get_default_font +EXPORT_SYMBOL vmlinux 0xbba388fe loop_backing_file +EXPORT_SYMBOL vmlinux 0xbba9b944 netdev_lower_get_next +EXPORT_SYMBOL vmlinux 0xbbaeb559 memcg_socket_limit_enabled +EXPORT_SYMBOL vmlinux 0xbbb6b412 unregister_sysctl_table +EXPORT_SYMBOL vmlinux 0xbbc0d4fd mmc_register_driver +EXPORT_SYMBOL vmlinux 0xbbd7616d del_gendisk +EXPORT_SYMBOL vmlinux 0xbbd76e57 bit_wait +EXPORT_SYMBOL vmlinux 0xbbd84d25 napi_get_frags +EXPORT_SYMBOL vmlinux 0xbbe41c66 wake_up_process +EXPORT_SYMBOL vmlinux 0xbbf38a72 nla_reserve_nohdr +EXPORT_SYMBOL vmlinux 0xbbf5b62c scsi_report_device_reset +EXPORT_SYMBOL vmlinux 0xbbfa3b23 nvdimm_namespace_capacity +EXPORT_SYMBOL vmlinux 0xbc0ecc5d tty_write_room +EXPORT_SYMBOL vmlinux 0xbc16b2b7 scsi_host_lookup +EXPORT_SYMBOL vmlinux 0xbc316de4 tty_termios_input_baud_rate +EXPORT_SYMBOL vmlinux 0xbc34232a to_nd_btt +EXPORT_SYMBOL vmlinux 0xbc40b4ff __sb_start_write +EXPORT_SYMBOL vmlinux 0xbc5d3ff1 nd_device_unregister +EXPORT_SYMBOL vmlinux 0xbc690d9c update_devfreq +EXPORT_SYMBOL vmlinux 0xbc884b56 napi_gro_frags +EXPORT_SYMBOL vmlinux 0xbc982b06 eeh_subsystem_flags +EXPORT_SYMBOL vmlinux 0xbc9f0b5c gen_pool_add_virt +EXPORT_SYMBOL vmlinux 0xbcbbc0bc input_unregister_handler +EXPORT_SYMBOL vmlinux 0xbcc308bb strnlen_user +EXPORT_SYMBOL vmlinux 0xbcc7ff6f mipi_dsi_host_register +EXPORT_SYMBOL vmlinux 0xbcd4a8ff of_parse_phandle_with_fixed_args +EXPORT_SYMBOL vmlinux 0xbcd79f30 fbcon_rotate_ccw +EXPORT_SYMBOL vmlinux 0xbcd9f8bf tcf_hash_create +EXPORT_SYMBOL vmlinux 0xbcdb5a32 insert_inode_locked +EXPORT_SYMBOL vmlinux 0xbce78fe6 phy_register_fixup_for_id +EXPORT_SYMBOL vmlinux 0xbcf150f9 xor_altivec_5 +EXPORT_SYMBOL vmlinux 0xbd04164d page_symlink_inode_operations +EXPORT_SYMBOL vmlinux 0xbd0f35a5 blk_finish_request +EXPORT_SYMBOL vmlinux 0xbd277d2a scsi_get_host_dev +EXPORT_SYMBOL vmlinux 0xbd41fa47 vio_unregister_device +EXPORT_SYMBOL vmlinux 0xbd462b55 __kfifo_init +EXPORT_SYMBOL vmlinux 0xbd585be5 skb_copy_and_csum_dev +EXPORT_SYMBOL vmlinux 0xbd9074b1 blk_finish_plug +EXPORT_SYMBOL vmlinux 0xbdcab8fc elv_rq_merge_ok +EXPORT_SYMBOL vmlinux 0xbddd48bb pfifo_qdisc_ops +EXPORT_SYMBOL vmlinux 0xbddeee15 ps2_command +EXPORT_SYMBOL vmlinux 0xbdf23d97 tty_driver_flush_buffer +EXPORT_SYMBOL vmlinux 0xbe1bb112 bitmap_onto +EXPORT_SYMBOL vmlinux 0xbe2df2d4 trace_print_hex_seq +EXPORT_SYMBOL vmlinux 0xbe332783 rtnl_create_link +EXPORT_SYMBOL vmlinux 0xbe36603e pci_bus_write_config_byte +EXPORT_SYMBOL vmlinux 0xbe6a98f1 i2c_release_client +EXPORT_SYMBOL vmlinux 0xbe6cc6cf sock_no_socketpair +EXPORT_SYMBOL vmlinux 0xbe73505c finish_open +EXPORT_SYMBOL vmlinux 0xbeb19097 pci_match_id +EXPORT_SYMBOL vmlinux 0xbeccaa83 xfrm_policy_flush +EXPORT_SYMBOL vmlinux 0xbef43296 console_conditional_schedule +EXPORT_SYMBOL vmlinux 0xbf0f97d7 ibmebus_register_driver +EXPORT_SYMBOL vmlinux 0xbf1b5680 of_get_min_tck +EXPORT_SYMBOL vmlinux 0xbf3503a9 generic_start_io_acct +EXPORT_SYMBOL vmlinux 0xbf72c2a8 pci_find_capability +EXPORT_SYMBOL vmlinux 0xbf7fd2f5 schedule_timeout_killable +EXPORT_SYMBOL vmlinux 0xbf8ba54a vprintk +EXPORT_SYMBOL vmlinux 0xbf925c42 idr_init +EXPORT_SYMBOL vmlinux 0xbf93410e bioset_free +EXPORT_SYMBOL vmlinux 0xbf9933d5 dma_common_mmap +EXPORT_SYMBOL vmlinux 0xbf9bcc8d __cap_empty_set +EXPORT_SYMBOL vmlinux 0xbfa51de5 vm_iomap_memory +EXPORT_SYMBOL vmlinux 0xbfabfe59 __debugger_iabr_match +EXPORT_SYMBOL vmlinux 0xbfb8b0b7 _raw_read_lock_irqsave +EXPORT_SYMBOL vmlinux 0xbfc177bc iowrite32_rep +EXPORT_SYMBOL vmlinux 0xbfc97537 generic_end_io_acct +EXPORT_SYMBOL vmlinux 0xbfc97cca param_ops_string +EXPORT_SYMBOL vmlinux 0xbfee3ad5 loop_unregister_transfer +EXPORT_SYMBOL vmlinux 0xbff8182c plpar_hcall_norets +EXPORT_SYMBOL vmlinux 0xc0121206 vfs_symlink +EXPORT_SYMBOL vmlinux 0xc0226f4d i2c_smbus_xfer +EXPORT_SYMBOL vmlinux 0xc044cab9 xfrm_policy_delete +EXPORT_SYMBOL vmlinux 0xc05bf6a6 input_set_capability +EXPORT_SYMBOL vmlinux 0xc066807d proc_create_data +EXPORT_SYMBOL vmlinux 0xc06ac719 audit_log_start +EXPORT_SYMBOL vmlinux 0xc0763484 rfkill_blocked +EXPORT_SYMBOL vmlinux 0xc0823e4c twl_i2c_write +EXPORT_SYMBOL vmlinux 0xc08fceea inode_reclaim_rsv_space +EXPORT_SYMBOL vmlinux 0xc0a3d105 find_next_bit +EXPORT_SYMBOL vmlinux 0xc0b42c73 of_iomap +EXPORT_SYMBOL vmlinux 0xc0e3cfc1 pci_enable_msix_range +EXPORT_SYMBOL vmlinux 0xc0e97902 end_page_writeback +EXPORT_SYMBOL vmlinux 0xc0f5ca34 skb_clone +EXPORT_SYMBOL vmlinux 0xc1273e97 __scsi_iterate_devices +EXPORT_SYMBOL vmlinux 0xc13dfba2 nd_device_register +EXPORT_SYMBOL vmlinux 0xc14f0144 mmc_can_reset +EXPORT_SYMBOL vmlinux 0xc15a44c6 memzero_explicit +EXPORT_SYMBOL vmlinux 0xc17394fe security_inode_listsecurity +EXPORT_SYMBOL vmlinux 0xc1adf0a8 phy_ethtool_get_eee +EXPORT_SYMBOL vmlinux 0xc1b08f90 __pagevec_lru_add +EXPORT_SYMBOL vmlinux 0xc1b27f89 tcp_get_cookie_sock +EXPORT_SYMBOL vmlinux 0xc1d0d5df vfs_readv +EXPORT_SYMBOL vmlinux 0xc1d8cfaf __fdget +EXPORT_SYMBOL vmlinux 0xc1d91983 kernel_param_unlock +EXPORT_SYMBOL vmlinux 0xc1e50c0b rtnl_nla_parse_ifla +EXPORT_SYMBOL vmlinux 0xc1eaa9e0 xfrm_spd_getinfo +EXPORT_SYMBOL vmlinux 0xc1ff31b7 xfrm4_rcv_cb +EXPORT_SYMBOL vmlinux 0xc204cfd8 twl6040_get_pll +EXPORT_SYMBOL vmlinux 0xc21e49e6 reqsk_queue_hash_req +EXPORT_SYMBOL vmlinux 0xc221275e security_path_chown +EXPORT_SYMBOL vmlinux 0xc221865e bprm_change_interp +EXPORT_SYMBOL vmlinux 0xc234c793 agp3_generic_tlbflush +EXPORT_SYMBOL vmlinux 0xc23cc756 dev_mc_sync +EXPORT_SYMBOL vmlinux 0xc2424641 agp3_generic_cleanup +EXPORT_SYMBOL vmlinux 0xc24271cb gen_pool_alloc +EXPORT_SYMBOL vmlinux 0xc2790651 blk_post_runtime_resume +EXPORT_SYMBOL vmlinux 0xc27a0809 devfreq_unregister_opp_notifier +EXPORT_SYMBOL vmlinux 0xc28ecdd7 tcp_simple_retransmit +EXPORT_SYMBOL vmlinux 0xc29bf967 strspn +EXPORT_SYMBOL vmlinux 0xc2d0c79c of_mdiobus_register +EXPORT_SYMBOL vmlinux 0xc2e2e067 __skb_checksum +EXPORT_SYMBOL vmlinux 0xc2e587d1 reset_devices +EXPORT_SYMBOL vmlinux 0xc2f56f20 tso_count_descs +EXPORT_SYMBOL vmlinux 0xc2f9c045 timespec_to_jiffies +EXPORT_SYMBOL vmlinux 0xc301baa4 padata_start +EXPORT_SYMBOL vmlinux 0xc302fcc4 param_set_int +EXPORT_SYMBOL vmlinux 0xc3078026 serial8250_set_isa_configurator +EXPORT_SYMBOL vmlinux 0xc307c864 ip6_route_me_harder +EXPORT_SYMBOL vmlinux 0xc310b981 strnstr +EXPORT_SYMBOL vmlinux 0xc314f9d4 seq_printf +EXPORT_SYMBOL vmlinux 0xc339758e vfs_link +EXPORT_SYMBOL vmlinux 0xc33fbbb3 bio_integrity_trim +EXPORT_SYMBOL vmlinux 0xc34125da blk_mq_delay_queue +EXPORT_SYMBOL vmlinux 0xc3457d2a rtnl_unicast +EXPORT_SYMBOL vmlinux 0xc3495079 put_page +EXPORT_SYMBOL vmlinux 0xc35b91a8 framebuffer_release +EXPORT_SYMBOL vmlinux 0xc35ff767 locks_free_lock +EXPORT_SYMBOL vmlinux 0xc37f5427 splice_direct_to_actor +EXPORT_SYMBOL vmlinux 0xc39e3d06 get_io_context +EXPORT_SYMBOL vmlinux 0xc3ad468b pps_register_source +EXPORT_SYMBOL vmlinux 0xc3b574bd wireless_spy_update +EXPORT_SYMBOL vmlinux 0xc3c2be91 mipi_dsi_packet_format_is_short +EXPORT_SYMBOL vmlinux 0xc430a632 dquot_initialize +EXPORT_SYMBOL vmlinux 0xc4648b92 jbd2_journal_abort +EXPORT_SYMBOL vmlinux 0xc469d8d7 bdi_register_dev +EXPORT_SYMBOL vmlinux 0xc47c767f __page_cache_alloc +EXPORT_SYMBOL vmlinux 0xc47cdf9c _raw_write_lock_bh +EXPORT_SYMBOL vmlinux 0xc48307db lz4_decompress +EXPORT_SYMBOL vmlinux 0xc499ae1e kstrdup +EXPORT_SYMBOL vmlinux 0xc4bb5364 devm_gpiod_get_array_optional +EXPORT_SYMBOL vmlinux 0xc4c82e46 netpoll_poll_disable +EXPORT_SYMBOL vmlinux 0xc4d7adff dev_set_group +EXPORT_SYMBOL vmlinux 0xc4e00842 netif_napi_del +EXPORT_SYMBOL vmlinux 0xc4f8e7fb elv_dispatch_add_tail +EXPORT_SYMBOL vmlinux 0xc5158e94 pci_iomap_range +EXPORT_SYMBOL vmlinux 0xc53c7783 mmc_can_erase +EXPORT_SYMBOL vmlinux 0xc547045d dump_align +EXPORT_SYMBOL vmlinux 0xc5475769 dma_async_tx_descriptor_init +EXPORT_SYMBOL vmlinux 0xc5534d64 ioread16 +EXPORT_SYMBOL vmlinux 0xc55c2a9d inode_sb_list_lock +EXPORT_SYMBOL vmlinux 0xc55de23c percpu_counter_set +EXPORT_SYMBOL vmlinux 0xc599a772 security_xfrm_state_delete +EXPORT_SYMBOL vmlinux 0xc5ce4670 xfrm_input_resume +EXPORT_SYMBOL vmlinux 0xc5d27940 seq_write +EXPORT_SYMBOL vmlinux 0xc5d9c46c agp_try_unsupported_boot +EXPORT_SYMBOL vmlinux 0xc5df6738 single_open +EXPORT_SYMBOL vmlinux 0xc5e767d0 dev_change_carrier +EXPORT_SYMBOL vmlinux 0xc5efbb20 mount_single +EXPORT_SYMBOL vmlinux 0xc5fdef94 call_usermodehelper +EXPORT_SYMBOL vmlinux 0xc6205cd2 cap_mmap_file +EXPORT_SYMBOL vmlinux 0xc620f232 sock_common_recvmsg +EXPORT_SYMBOL vmlinux 0xc6257380 nvdimm_revalidate_disk +EXPORT_SYMBOL vmlinux 0xc62720f2 ww_mutex_unlock +EXPORT_SYMBOL vmlinux 0xc631580a console_unlock +EXPORT_SYMBOL vmlinux 0xc63c180d param_get_bool +EXPORT_SYMBOL vmlinux 0xc65abeb7 agp3_generic_sizes +EXPORT_SYMBOL vmlinux 0xc663b075 __ioremap +EXPORT_SYMBOL vmlinux 0xc666a132 crc_t10dif +EXPORT_SYMBOL vmlinux 0xc668e036 setattr_copy +EXPORT_SYMBOL vmlinux 0xc67440bf sock_wmalloc +EXPORT_SYMBOL vmlinux 0xc6772da2 radix_tree_lookup_slot +EXPORT_SYMBOL vmlinux 0xc6774da5 cpu_online_mask +EXPORT_SYMBOL vmlinux 0xc6b22c71 __percpu_counter_sum +EXPORT_SYMBOL vmlinux 0xc6c3ecf4 clear_page_dirty_for_io +EXPORT_SYMBOL vmlinux 0xc6cb465a __kfifo_max_r +EXPORT_SYMBOL vmlinux 0xc6cbbc89 capable +EXPORT_SYMBOL vmlinux 0xc6cd8f93 genl_notify +EXPORT_SYMBOL vmlinux 0xc6d264d1 ioc_lookup_icq +EXPORT_SYMBOL vmlinux 0xc6db79e0 seq_open_private +EXPORT_SYMBOL vmlinux 0xc6f1e5e7 scsi_remove_host +EXPORT_SYMBOL vmlinux 0xc6f61fde mount_pseudo +EXPORT_SYMBOL vmlinux 0xc705a0a1 i2c_smbus_write_block_data +EXPORT_SYMBOL vmlinux 0xc7208c3a serial8250_resume_port +EXPORT_SYMBOL vmlinux 0xc72f0b34 nd_btt_sb_checksum +EXPORT_SYMBOL vmlinux 0xc73da648 setup_new_exec +EXPORT_SYMBOL vmlinux 0xc7563db8 twl_set_regcache_bypass +EXPORT_SYMBOL vmlinux 0xc766f18b kernel_param_lock +EXPORT_SYMBOL vmlinux 0xc767778a user_path_create +EXPORT_SYMBOL vmlinux 0xc770b8ff elv_rb_find +EXPORT_SYMBOL vmlinux 0xc77408c3 gnet_stats_copy_rate_est +EXPORT_SYMBOL vmlinux 0xc77c152e vfs_mkdir +EXPORT_SYMBOL vmlinux 0xc77e8748 of_find_node_by_name +EXPORT_SYMBOL vmlinux 0xc781bd9f rfkill_resume_polling +EXPORT_SYMBOL vmlinux 0xc7856a3d inet6addr_notifier_call_chain +EXPORT_SYMBOL vmlinux 0xc7910c45 inet_peer_xrlim_allow +EXPORT_SYMBOL vmlinux 0xc79bcd36 dm_vcalloc +EXPORT_SYMBOL vmlinux 0xc7a4fbed rtnl_lock +EXPORT_SYMBOL vmlinux 0xc7a52753 dst_alloc +EXPORT_SYMBOL vmlinux 0xc7b2616b block_write_full_page +EXPORT_SYMBOL vmlinux 0xc7c1030e generic_pipe_buf_steal +EXPORT_SYMBOL vmlinux 0xc7c4f0ac pnv_cxl_ioda_msi_setup +EXPORT_SYMBOL vmlinux 0xc7ce1d74 xfrm_lookup +EXPORT_SYMBOL vmlinux 0xc7dd0cc8 pci_msix_vec_count +EXPORT_SYMBOL vmlinux 0xc7dd5f22 qdisc_destroy +EXPORT_SYMBOL vmlinux 0xc7e9f5c6 key_type_keyring +EXPORT_SYMBOL vmlinux 0xc7f39b15 irq_stat +EXPORT_SYMBOL vmlinux 0xc7fd2095 __dquot_alloc_space +EXPORT_SYMBOL vmlinux 0xc8148350 gnet_stats_copy_app +EXPORT_SYMBOL vmlinux 0xc81bc98d ipv6_select_ident +EXPORT_SYMBOL vmlinux 0xc83b4d5b posix_acl_from_mode +EXPORT_SYMBOL vmlinux 0xc83e04e4 netdev_master_upper_dev_link +EXPORT_SYMBOL vmlinux 0xc83e7783 __lock_buffer +EXPORT_SYMBOL vmlinux 0xc83f5cfc cmdline_parts_find +EXPORT_SYMBOL vmlinux 0xc84a0a7e seq_hlist_start_rcu +EXPORT_SYMBOL vmlinux 0xc8519ddb mb_cache_entry_find_next +EXPORT_SYMBOL vmlinux 0xc851de45 security_sb_set_mnt_opts +EXPORT_SYMBOL vmlinux 0xc8571bcb idr_for_each +EXPORT_SYMBOL vmlinux 0xc8593bc8 phy_disconnect +EXPORT_SYMBOL vmlinux 0xc85a91a2 send_sig_info +EXPORT_SYMBOL vmlinux 0xc85e402c block_write_end +EXPORT_SYMBOL vmlinux 0xc872fd85 in6addr_interfacelocal_allnodes +EXPORT_SYMBOL vmlinux 0xc8813e80 check_disk_change +EXPORT_SYMBOL vmlinux 0xc8859e6e km_new_mapping +EXPORT_SYMBOL vmlinux 0xc88e32b8 netif_tx_wake_queue +EXPORT_SYMBOL vmlinux 0xc890c008 zlib_deflateEnd +EXPORT_SYMBOL vmlinux 0xc891a478 pcix_get_mmrbc +EXPORT_SYMBOL vmlinux 0xc897c382 sg_init_table +EXPORT_SYMBOL vmlinux 0xc8984328 try_to_release_page +EXPORT_SYMBOL vmlinux 0xc89aa188 ab3100_event_register +EXPORT_SYMBOL vmlinux 0xc8a91f5b cpumask_local_spread +EXPORT_SYMBOL vmlinux 0xc8b57c27 autoremove_wake_function +EXPORT_SYMBOL vmlinux 0xc90556f0 done_path_create +EXPORT_SYMBOL vmlinux 0xc906970e sock_no_connect +EXPORT_SYMBOL vmlinux 0xc90f514e sock_register +EXPORT_SYMBOL vmlinux 0xc911b9d5 eth_get_headlen +EXPORT_SYMBOL vmlinux 0xc9208dcc single_open_size +EXPORT_SYMBOL vmlinux 0xc927bf39 param_ops_ullong +EXPORT_SYMBOL vmlinux 0xc93fbc54 wait_for_completion_io +EXPORT_SYMBOL vmlinux 0xc9634df9 in6addr_linklocal_allrouters +EXPORT_SYMBOL vmlinux 0xc978479a xz_dec_run +EXPORT_SYMBOL vmlinux 0xc995f819 vme_lm_request +EXPORT_SYMBOL vmlinux 0xc99e2a55 twl_rev +EXPORT_SYMBOL vmlinux 0xc9bef276 mdiobus_scan +EXPORT_SYMBOL vmlinux 0xc9c18c79 unregister_framebuffer +EXPORT_SYMBOL vmlinux 0xc9cae38b tcf_hash_search +EXPORT_SYMBOL vmlinux 0xc9cb6774 mark_info_dirty +EXPORT_SYMBOL vmlinux 0xca0f4667 readlink_copy +EXPORT_SYMBOL vmlinux 0xca1239f0 iov_iter_fault_in_multipages_readable +EXPORT_SYMBOL vmlinux 0xca14c1ca unregister_key_type +EXPORT_SYMBOL vmlinux 0xca2b1cd6 ida_pre_get +EXPORT_SYMBOL vmlinux 0xca3b13af dcb_ieee_delapp +EXPORT_SYMBOL vmlinux 0xca3b28c6 store_vr_state +EXPORT_SYMBOL vmlinux 0xca432772 dev_change_flags +EXPORT_SYMBOL vmlinux 0xca4346b4 __xfrm_state_destroy +EXPORT_SYMBOL vmlinux 0xca43e37b ipv6_chk_addr +EXPORT_SYMBOL vmlinux 0xca5ee09a vme_free_consistent +EXPORT_SYMBOL vmlinux 0xca602ffa textsearch_unregister +EXPORT_SYMBOL vmlinux 0xca76df8f revalidate_disk +EXPORT_SYMBOL vmlinux 0xca832efe kmalloc_order +EXPORT_SYMBOL vmlinux 0xca8b24d1 __devm_gpiod_get +EXPORT_SYMBOL vmlinux 0xca8fca14 netif_skb_features +EXPORT_SYMBOL vmlinux 0xca9360b5 rb_next +EXPORT_SYMBOL vmlinux 0xcab097b3 blk_mq_tag_to_rq +EXPORT_SYMBOL vmlinux 0xcac7de7f dma_async_device_register +EXPORT_SYMBOL vmlinux 0xcace6297 idr_is_empty +EXPORT_SYMBOL vmlinux 0xcacedade mem_cgroup_begin_page_stat +EXPORT_SYMBOL vmlinux 0xcad095f1 of_device_register +EXPORT_SYMBOL vmlinux 0xcadb6465 simple_write_begin +EXPORT_SYMBOL vmlinux 0xcadd08d0 inode_get_bytes +EXPORT_SYMBOL vmlinux 0xcaf2c603 scsi_sd_pm_domain +EXPORT_SYMBOL vmlinux 0xcafc4965 kernel_sendmsg +EXPORT_SYMBOL vmlinux 0xcb0288ea ledtrig_cpu +EXPORT_SYMBOL vmlinux 0xcb38f452 netdev_master_upper_dev_link_private +EXPORT_SYMBOL vmlinux 0xcb521cf7 vme_master_mmap +EXPORT_SYMBOL vmlinux 0xcb7f0a1b __napi_alloc_skb +EXPORT_SYMBOL vmlinux 0xcb936989 hdmi_infoframe_pack +EXPORT_SYMBOL vmlinux 0xcb9faa2d blk_integrity_unregister +EXPORT_SYMBOL vmlinux 0xcba6cf8a devm_ioremap +EXPORT_SYMBOL vmlinux 0xcbb1a9c2 ip6_find_1stfragopt +EXPORT_SYMBOL vmlinux 0xcbb31ff2 security_old_inode_init_security +EXPORT_SYMBOL vmlinux 0xcbb6fd93 devfreq_add_governor +EXPORT_SYMBOL vmlinux 0xcbbd4b75 param_get_ulong +EXPORT_SYMBOL vmlinux 0xcbbf0a6f audit_log_task_context +EXPORT_SYMBOL vmlinux 0xcbc3b94e eeh_check_failure +EXPORT_SYMBOL vmlinux 0xcbc9557f unregister_sysrq_key +EXPORT_SYMBOL vmlinux 0xcbe1ffc9 find_inode_nowait +EXPORT_SYMBOL vmlinux 0xcc17504d _raw_read_unlock_irqrestore +EXPORT_SYMBOL vmlinux 0xcc1a7268 uart_get_divisor +EXPORT_SYMBOL vmlinux 0xcc215573 flex_array_shrink +EXPORT_SYMBOL vmlinux 0xcc248d26 serial8250_suspend_port +EXPORT_SYMBOL vmlinux 0xcc5005fe msleep_interruptible +EXPORT_SYMBOL vmlinux 0xcc62b6ae __inc_zone_page_state +EXPORT_SYMBOL vmlinux 0xcc778cc3 __tracepoint_fence_annotate_wait_on +EXPORT_SYMBOL vmlinux 0xcc82f987 dma_set_mask +EXPORT_SYMBOL vmlinux 0xcc854224 bitmap_endwrite +EXPORT_SYMBOL vmlinux 0xcc8f1a45 input_register_handle +EXPORT_SYMBOL vmlinux 0xcc95ce82 blk_rq_count_integrity_sg +EXPORT_SYMBOL vmlinux 0xcca2c320 ipv4_specific +EXPORT_SYMBOL vmlinux 0xcca4f8f7 tty_port_free_xmit_buf +EXPORT_SYMBOL vmlinux 0xccab9724 bio_uncopy_user +EXPORT_SYMBOL vmlinux 0xccaba6af kobject_get +EXPORT_SYMBOL vmlinux 0xccb31ee6 register_filesystem +EXPORT_SYMBOL vmlinux 0xccc21f5e input_get_new_minor +EXPORT_SYMBOL vmlinux 0xcccad2a3 sk_receive_skb +EXPORT_SYMBOL vmlinux 0xccd194c0 ppp_dev_name +EXPORT_SYMBOL vmlinux 0xccd3a7e0 from_kuid_munged +EXPORT_SYMBOL vmlinux 0xccea4985 shrink_dcache_parent +EXPORT_SYMBOL vmlinux 0xccfdbf06 of_graph_get_port_by_id +EXPORT_SYMBOL vmlinux 0xcd0529c7 _raw_spin_lock_irq +EXPORT_SYMBOL vmlinux 0xcd096af0 ipv6_sock_mc_join +EXPORT_SYMBOL vmlinux 0xcd20667a kstrtou16_from_user +EXPORT_SYMBOL vmlinux 0xcd279169 nla_find +EXPORT_SYMBOL vmlinux 0xcd57f7b0 radix_tree_tag_get +EXPORT_SYMBOL vmlinux 0xcd5c3d8f skb_orphan_partial +EXPORT_SYMBOL vmlinux 0xcd606c25 inet_csk_reqsk_queue_drop +EXPORT_SYMBOL vmlinux 0xcd6e14c2 balance_dirty_pages_ratelimited +EXPORT_SYMBOL vmlinux 0xcd7ede2a seqno_fence_ops +EXPORT_SYMBOL vmlinux 0xcd80cddb bio_map_kern +EXPORT_SYMBOL vmlinux 0xcd81389b locks_mandatory_area +EXPORT_SYMBOL vmlinux 0xcd86c87f __cond_resched_lock +EXPORT_SYMBOL vmlinux 0xcd8d36f4 flow_get_u32_src +EXPORT_SYMBOL vmlinux 0xcda462f6 nf_unregister_hooks +EXPORT_SYMBOL vmlinux 0xcdb8ca23 of_device_is_compatible +EXPORT_SYMBOL vmlinux 0xcdc39c9e security_ismaclabel +EXPORT_SYMBOL vmlinux 0xcde3f24c sock_kmalloc +EXPORT_SYMBOL vmlinux 0xcded4cb6 mmc_retune_timer_stop +EXPORT_SYMBOL vmlinux 0xcdf3d48e param_get_int +EXPORT_SYMBOL vmlinux 0xce142c25 fifo_create_dflt +EXPORT_SYMBOL vmlinux 0xce143d81 vme_register_driver +EXPORT_SYMBOL vmlinux 0xce2840e7 irq_set_irq_wake +EXPORT_SYMBOL vmlinux 0xce3a775b mipi_dsi_driver_register_full +EXPORT_SYMBOL vmlinux 0xce3b3f09 profile_pc +EXPORT_SYMBOL vmlinux 0xce3e5bf7 bio_unmap_user +EXPORT_SYMBOL vmlinux 0xce4e47b6 __kfifo_skip_r +EXPORT_SYMBOL vmlinux 0xce5ac24f zlib_inflate_workspacesize +EXPORT_SYMBOL vmlinux 0xce6bf996 skb_checksum_trimmed +EXPORT_SYMBOL vmlinux 0xce6d611d blk_rq_map_user_iov +EXPORT_SYMBOL vmlinux 0xce774940 mmc_can_trim +EXPORT_SYMBOL vmlinux 0xce7850e1 crc32_le_shift +EXPORT_SYMBOL vmlinux 0xce8d7431 __skb_gro_checksum_complete +EXPORT_SYMBOL vmlinux 0xce97ab42 pci_enable_device_mem +EXPORT_SYMBOL vmlinux 0xceab0311 strchrnul +EXPORT_SYMBOL vmlinux 0xceae504f cmdline_parts_free +EXPORT_SYMBOL vmlinux 0xcebd3479 simple_dir_operations +EXPORT_SYMBOL vmlinux 0xcec158f5 dev_graft_qdisc +EXPORT_SYMBOL vmlinux 0xced777cb proc_dointvec_minmax +EXPORT_SYMBOL vmlinux 0xcee83b0e swiotlb_unmap_sg_attrs +EXPORT_SYMBOL vmlinux 0xcef43890 ip6_xmit +EXPORT_SYMBOL vmlinux 0xcef4ef80 devfreq_monitor_start +EXPORT_SYMBOL vmlinux 0xcef51982 kstrtou16 +EXPORT_SYMBOL vmlinux 0xcefcd99a serial8250_unregister_port +EXPORT_SYMBOL vmlinux 0xcf00b942 of_find_node_opts_by_path +EXPORT_SYMBOL vmlinux 0xcf1437d3 compat_sock_common_setsockopt +EXPORT_SYMBOL vmlinux 0xcf193679 remap_pfn_range +EXPORT_SYMBOL vmlinux 0xcf25f1a1 iterate_supers_type +EXPORT_SYMBOL vmlinux 0xcf2bf269 of_graph_get_remote_port +EXPORT_SYMBOL vmlinux 0xcf47c69d set_binfmt +EXPORT_SYMBOL vmlinux 0xcf6a6abc fsnotify_put_group +EXPORT_SYMBOL vmlinux 0xcf7f228f get_user_pages_unlocked +EXPORT_SYMBOL vmlinux 0xcf8ac186 simple_fill_super +EXPORT_SYMBOL vmlinux 0xcf923af6 skb_find_text +EXPORT_SYMBOL vmlinux 0xcfa23fe4 cpufreq_global_kobject +EXPORT_SYMBOL vmlinux 0xcfcac09e netlink_ns_capable +EXPORT_SYMBOL vmlinux 0xcfdad2b6 block_write_begin +EXPORT_SYMBOL vmlinux 0xcff92ccc __skb_warn_lro_forwarding +EXPORT_SYMBOL vmlinux 0xcff9a926 touch_atime +EXPORT_SYMBOL vmlinux 0xd00f0bc1 seq_vprintf +EXPORT_SYMBOL vmlinux 0xd04e67ad make_kuid +EXPORT_SYMBOL vmlinux 0xd0720a17 on_each_cpu_cond +EXPORT_SYMBOL vmlinux 0xd076b9a5 __ps2_command +EXPORT_SYMBOL vmlinux 0xd081dce4 vfs_read +EXPORT_SYMBOL vmlinux 0xd08f6239 sg_copy_from_buffer +EXPORT_SYMBOL vmlinux 0xd09b0199 fence_context_alloc +EXPORT_SYMBOL vmlinux 0xd0a2847c sha_init +EXPORT_SYMBOL vmlinux 0xd0a91bab skip_spaces +EXPORT_SYMBOL vmlinux 0xd0b35afc pcie_capability_clear_and_set_word +EXPORT_SYMBOL vmlinux 0xd0c5c70f scsi_unregister +EXPORT_SYMBOL vmlinux 0xd0e795b5 param_set_ullong +EXPORT_SYMBOL vmlinux 0xd0ee38b8 schedule_timeout_uninterruptible +EXPORT_SYMBOL vmlinux 0xd0f36f0d audit_log_format +EXPORT_SYMBOL vmlinux 0xd0fb7cd4 __tasklet_hi_schedule_first +EXPORT_SYMBOL vmlinux 0xd0fef3b2 agp_free_key +EXPORT_SYMBOL vmlinux 0xd11a1bf2 drop_nlink +EXPORT_SYMBOL vmlinux 0xd11f7f13 qdisc_create_dflt +EXPORT_SYMBOL vmlinux 0xd1262886 rtas_data_buf +EXPORT_SYMBOL vmlinux 0xd12b33f8 jbd2_journal_start_reserved +EXPORT_SYMBOL vmlinux 0xd12d7f5c pcie_get_readrq +EXPORT_SYMBOL vmlinux 0xd13103f2 xfrm4_prepare_output +EXPORT_SYMBOL vmlinux 0xd14c2080 file_update_time +EXPORT_SYMBOL vmlinux 0xd1594ab9 tcp_splice_read +EXPORT_SYMBOL vmlinux 0xd1816f32 frontswap_writethrough +EXPORT_SYMBOL vmlinux 0xd1afb422 open_exec +EXPORT_SYMBOL vmlinux 0xd1b9b469 inet6_release +EXPORT_SYMBOL vmlinux 0xd1cec993 rtnl_link_get_net +EXPORT_SYMBOL vmlinux 0xd1d87e92 scsi_mlreturn_string +EXPORT_SYMBOL vmlinux 0xd1ff05d6 __insert_inode_hash +EXPORT_SYMBOL vmlinux 0xd20c3937 flex_array_get +EXPORT_SYMBOL vmlinux 0xd2120817 xfrm6_rcv +EXPORT_SYMBOL vmlinux 0xd2145cfc neigh_lookup +EXPORT_SYMBOL vmlinux 0xd21d4533 register_tcf_proto_ops +EXPORT_SYMBOL vmlinux 0xd220cf8a jiffies_to_timespec +EXPORT_SYMBOL vmlinux 0xd236610d tty_mutex +EXPORT_SYMBOL vmlinux 0xd251d7b0 security_socket_getpeersec_dgram +EXPORT_SYMBOL vmlinux 0xd2555f19 jiffies_64_to_clock_t +EXPORT_SYMBOL vmlinux 0xd25d4f74 console_blank_hook +EXPORT_SYMBOL vmlinux 0xd266133e unregister_shrinker +EXPORT_SYMBOL vmlinux 0xd27b25dd blk_check_plugged +EXPORT_SYMBOL vmlinux 0xd2b09ce5 __kmalloc +EXPORT_SYMBOL vmlinux 0xd2b9f2aa end_buffer_write_sync +EXPORT_SYMBOL vmlinux 0xd2c75bd9 padata_stop +EXPORT_SYMBOL vmlinux 0xd2da1048 register_netdevice_notifier +EXPORT_SYMBOL vmlinux 0xd2dab8aa phy_init_eee +EXPORT_SYMBOL vmlinux 0xd2e9eb8d tty_register_ldisc +EXPORT_SYMBOL vmlinux 0xd31ccb06 of_machine_is_compatible +EXPORT_SYMBOL vmlinux 0xd3328ab5 __ip_select_ident +EXPORT_SYMBOL vmlinux 0xd35a710e loop_register_transfer +EXPORT_SYMBOL vmlinux 0xd36e3d59 prandom_bytes_state +EXPORT_SYMBOL vmlinux 0xd387a02a inet6_bind +EXPORT_SYMBOL vmlinux 0xd3c0d925 pagevec_lookup +EXPORT_SYMBOL vmlinux 0xd3c58949 add_disk +EXPORT_SYMBOL vmlinux 0xd3c99880 mdiobus_register +EXPORT_SYMBOL vmlinux 0xd3cd1940 tcf_unregister_action +EXPORT_SYMBOL vmlinux 0xd3d2a2c4 devm_ioremap_resource +EXPORT_SYMBOL vmlinux 0xd3d40f7e kmem_cache_alloc +EXPORT_SYMBOL vmlinux 0xd3f9957b agp_generic_remove_memory +EXPORT_SYMBOL vmlinux 0xd406887c blk_queue_find_tag +EXPORT_SYMBOL vmlinux 0xd42a7e4a tcp_create_openreq_child +EXPORT_SYMBOL vmlinux 0xd449773f pci_get_class +EXPORT_SYMBOL vmlinux 0xd44b7e21 to_tm +EXPORT_SYMBOL vmlinux 0xd44f9187 devm_ioport_unmap +EXPORT_SYMBOL vmlinux 0xd45cc6ca bin2hex +EXPORT_SYMBOL vmlinux 0xd4625773 noop_qdisc +EXPORT_SYMBOL vmlinux 0xd47aa205 generic_pipe_buf_confirm +EXPORT_SYMBOL vmlinux 0xd48a68fe console_stop +EXPORT_SYMBOL vmlinux 0xd48fdeef dql_completed +EXPORT_SYMBOL vmlinux 0xd4c002c0 reservation_object_add_excl_fence +EXPORT_SYMBOL vmlinux 0xd4e40e04 skb_queue_head +EXPORT_SYMBOL vmlinux 0xd4edb280 rwsem_wake +EXPORT_SYMBOL vmlinux 0xd50312d7 nf_log_set +EXPORT_SYMBOL vmlinux 0xd50407ed blk_integrity_register +EXPORT_SYMBOL vmlinux 0xd54d198e cpufreq_generic_suspend +EXPORT_SYMBOL vmlinux 0xd54f41ce try_to_del_timer_sync +EXPORT_SYMBOL vmlinux 0xd5509202 jbd2_trans_will_send_data_barrier +EXPORT_SYMBOL vmlinux 0xd5b81fd8 security_path_rmdir +EXPORT_SYMBOL vmlinux 0xd5b8e547 blk_queue_merge_bvec +EXPORT_SYMBOL vmlinux 0xd5d49ee2 neigh_xmit +EXPORT_SYMBOL vmlinux 0xd5d5f456 netpoll_send_skb_on_dev +EXPORT_SYMBOL vmlinux 0xd603b2f2 devfreq_recommended_opp +EXPORT_SYMBOL vmlinux 0xd6147b72 blk_peek_request +EXPORT_SYMBOL vmlinux 0xd616683a ecryptfs_fill_auth_tok +EXPORT_SYMBOL vmlinux 0xd61e2266 inet_dgram_connect +EXPORT_SYMBOL vmlinux 0xd622583c inet_del_protocol +EXPORT_SYMBOL vmlinux 0xd6276832 __f_setown +EXPORT_SYMBOL vmlinux 0xd62960cc vfs_setpos +EXPORT_SYMBOL vmlinux 0xd62c833f schedule_timeout +EXPORT_SYMBOL vmlinux 0xd648e564 fb_match_mode +EXPORT_SYMBOL vmlinux 0xd65262ea nf_register_queue_handler +EXPORT_SYMBOL vmlinux 0xd687a15e tso_build_hdr +EXPORT_SYMBOL vmlinux 0xd688716b dm_kcopyd_client_create +EXPORT_SYMBOL vmlinux 0xd695a396 skb_recv_datagram +EXPORT_SYMBOL vmlinux 0xd6b85e44 netdev_lower_get_next_private +EXPORT_SYMBOL vmlinux 0xd6d63e9d lg_local_lock_cpu +EXPORT_SYMBOL vmlinux 0xd6d798a4 gnet_stats_copy_basic +EXPORT_SYMBOL vmlinux 0xd6eddced of_graph_get_next_endpoint +EXPORT_SYMBOL vmlinux 0xd6ee688f vmalloc +EXPORT_SYMBOL vmlinux 0xd6fd4053 __arch_hweight32 +EXPORT_SYMBOL vmlinux 0xd70e83d7 of_mm_gpiochip_remove +EXPORT_SYMBOL vmlinux 0xd7152904 netif_receive_skb_sk +EXPORT_SYMBOL vmlinux 0xd719ab86 vio_unregister_driver +EXPORT_SYMBOL vmlinux 0xd75c79df smp_call_function +EXPORT_SYMBOL vmlinux 0xd75f42b2 blk_limits_io_opt +EXPORT_SYMBOL vmlinux 0xd761a383 ioremap_prot +EXPORT_SYMBOL vmlinux 0xd786c0ea plpar_hcall9 +EXPORT_SYMBOL vmlinux 0xd78e6f89 security_skb_classify_flow +EXPORT_SYMBOL vmlinux 0xd7aca73d security_path_link +EXPORT_SYMBOL vmlinux 0xd7e56a4e simple_strtoll +EXPORT_SYMBOL vmlinux 0xd7e6c66a bio_flush_dcache_pages +EXPORT_SYMBOL vmlinux 0xd7e74bce mmc_calc_max_discard +EXPORT_SYMBOL vmlinux 0xd7ea7094 nf_unregister_queue_handler +EXPORT_SYMBOL vmlinux 0xd7f31eed tcp_initialize_rcv_mss +EXPORT_SYMBOL vmlinux 0xd800a985 mmc_gpio_request_ro +EXPORT_SYMBOL vmlinux 0xd805360d netdev_master_upper_dev_get_rcu +EXPORT_SYMBOL vmlinux 0xd8068ee8 dquot_drop +EXPORT_SYMBOL vmlinux 0xd818a707 padata_set_cpumasks +EXPORT_SYMBOL vmlinux 0xd836d05e vme_register_bridge +EXPORT_SYMBOL vmlinux 0xd83bcc59 mount_subtree +EXPORT_SYMBOL vmlinux 0xd83edb0d serio_interrupt +EXPORT_SYMBOL vmlinux 0xd85154a3 d_invalidate +EXPORT_SYMBOL vmlinux 0xd8548fab zero_fill_bio +EXPORT_SYMBOL vmlinux 0xd870ac15 blk_queue_alignment_offset +EXPORT_SYMBOL vmlinux 0xd8791137 tcp_v4_destroy_sock +EXPORT_SYMBOL vmlinux 0xd88674de bio_add_pc_page +EXPORT_SYMBOL vmlinux 0xd88bf315 dev_deactivate +EXPORT_SYMBOL vmlinux 0xd8934f3e rtmsg_ifinfo +EXPORT_SYMBOL vmlinux 0xd89692a3 nla_reserve +EXPORT_SYMBOL vmlinux 0xd89da37f movable_zone +EXPORT_SYMBOL vmlinux 0xd8a994eb scsi_extd_sense_format +EXPORT_SYMBOL vmlinux 0xd8b0570d sock_i_ino +EXPORT_SYMBOL vmlinux 0xd8b4551b tcp_seq_open +EXPORT_SYMBOL vmlinux 0xd8bd6b0b ppp_input +EXPORT_SYMBOL vmlinux 0xd8bf1602 dquot_free_inode +EXPORT_SYMBOL vmlinux 0xd8ded085 radix_tree_maybe_preload +EXPORT_SYMBOL vmlinux 0xd8e484f0 register_chrdev_region +EXPORT_SYMBOL vmlinux 0xd8e83fc3 kernel_recvmsg +EXPORT_SYMBOL vmlinux 0xd8ecaec0 cookie_ecn_ok +EXPORT_SYMBOL vmlinux 0xd8f7c8cc of_parse_phandle_with_args +EXPORT_SYMBOL vmlinux 0xd9278bdb dcb_ieee_setapp +EXPORT_SYMBOL vmlinux 0xd931172d dev_get_by_index_rcu +EXPORT_SYMBOL vmlinux 0xd975f796 neigh_connected_output +EXPORT_SYMBOL vmlinux 0xd985dc99 mempool_free_pages +EXPORT_SYMBOL vmlinux 0xd9bac924 tty_termios_copy_hw +EXPORT_SYMBOL vmlinux 0xd9d26d78 sock_no_getsockopt +EXPORT_SYMBOL vmlinux 0xd9d8fd16 register_restart_handler +EXPORT_SYMBOL vmlinux 0xd9e4e153 kvmppc_hv_find_lock_hpte +EXPORT_SYMBOL vmlinux 0xd9e673b2 vme_master_request +EXPORT_SYMBOL vmlinux 0xd9f1a8e4 iov_iter_alignment +EXPORT_SYMBOL vmlinux 0xd9f8130a jbd2_journal_start_commit +EXPORT_SYMBOL vmlinux 0xd9fea5fc mpage_writepages +EXPORT_SYMBOL vmlinux 0xda15fe71 netlink_capable +EXPORT_SYMBOL vmlinux 0xda24ef51 xfrm_policy_byid +EXPORT_SYMBOL vmlinux 0xda3d10a8 security_tun_dev_open +EXPORT_SYMBOL vmlinux 0xda441ebc dec_zone_page_state +EXPORT_SYMBOL vmlinux 0xda4af996 neigh_changeaddr +EXPORT_SYMBOL vmlinux 0xda4c64f3 swiotlb_alloc_coherent +EXPORT_SYMBOL vmlinux 0xda52e318 pci_bus_set_ops +EXPORT_SYMBOL vmlinux 0xda7ca6cb fb_mode_is_equal +EXPORT_SYMBOL vmlinux 0xda8af7ad fb_find_nearest_mode +EXPORT_SYMBOL vmlinux 0xdaab507f mipi_dsi_dcs_set_display_off +EXPORT_SYMBOL vmlinux 0xdabc1ea8 fsl_lbc_find +EXPORT_SYMBOL vmlinux 0xdac4913a bitmap_allocate_region +EXPORT_SYMBOL vmlinux 0xdac545b9 lockref_get_or_lock +EXPORT_SYMBOL vmlinux 0xdad5e341 xfrm4_rcv_encap +EXPORT_SYMBOL vmlinux 0xdaea6e0d mfd_clone_cell +EXPORT_SYMBOL vmlinux 0xdb01198e fsl_upm_find +EXPORT_SYMBOL vmlinux 0xdb154c7d qdisc_reset +EXPORT_SYMBOL vmlinux 0xdb1f736f default_file_splice_read +EXPORT_SYMBOL vmlinux 0xdb3bcca6 cancel_delayed_work +EXPORT_SYMBOL vmlinux 0xdb3cf8bb of_graph_parse_endpoint +EXPORT_SYMBOL vmlinux 0xdb68bbad rfkill_destroy +EXPORT_SYMBOL vmlinux 0xdb760f52 __kfifo_free +EXPORT_SYMBOL vmlinux 0xdb7d813a nd_region_release_lane +EXPORT_SYMBOL vmlinux 0xdb871f94 generic_file_read_iter +EXPORT_SYMBOL vmlinux 0xdbad21c7 __neigh_for_each_release +EXPORT_SYMBOL vmlinux 0xdbb8269c of_scan_pci_bridge +EXPORT_SYMBOL vmlinux 0xdbc2ac75 jbd2_journal_release_jbd_inode +EXPORT_SYMBOL vmlinux 0xdbcd2c7e inet_confirm_addr +EXPORT_SYMBOL vmlinux 0xdbd4a0e3 pci_get_device +EXPORT_SYMBOL vmlinux 0xdbd64ab9 pci_scan_slot +EXPORT_SYMBOL vmlinux 0xdbe24de3 km_is_alive +EXPORT_SYMBOL vmlinux 0xdc047fc4 scsi_dev_info_list_add_keyed +EXPORT_SYMBOL vmlinux 0xdc08b220 framebuffer_alloc +EXPORT_SYMBOL vmlinux 0xdc14eda7 pci_pci_problems +EXPORT_SYMBOL vmlinux 0xdc2b9ada devfreq_register_opp_notifier +EXPORT_SYMBOL vmlinux 0xdc2fa6df d_instantiate +EXPORT_SYMBOL vmlinux 0xdc340991 pci_request_selected_regions_exclusive +EXPORT_SYMBOL vmlinux 0xdc3c41a8 __crypto_memneq +EXPORT_SYMBOL vmlinux 0xdc3fcbc9 __sw_hweight8 +EXPORT_SYMBOL vmlinux 0xdc470233 skb_abort_seq_read +EXPORT_SYMBOL vmlinux 0xdc512134 backlight_register_notifier +EXPORT_SYMBOL vmlinux 0xdc51fa36 open_check_o_direct +EXPORT_SYMBOL vmlinux 0xdc54a38b bio_alloc_pages +EXPORT_SYMBOL vmlinux 0xdc5a5346 bfifo_qdisc_ops +EXPORT_SYMBOL vmlinux 0xdc9498dd down +EXPORT_SYMBOL vmlinux 0xdca0c9d5 zpool_register_driver +EXPORT_SYMBOL vmlinux 0xdcad3003 inode_newsize_ok +EXPORT_SYMBOL vmlinux 0xdcb0349b sys_close +EXPORT_SYMBOL vmlinux 0xdcb75f5d param_set_long +EXPORT_SYMBOL vmlinux 0xdcb764ad memset +EXPORT_SYMBOL vmlinux 0xdcbfed49 scsi_eh_prep_cmnd +EXPORT_SYMBOL vmlinux 0xdcc1482f __getblk_slow +EXPORT_SYMBOL vmlinux 0xdcc1a700 devm_gpiod_get_array +EXPORT_SYMBOL vmlinux 0xdccb8096 ip6_expire_frag_queue +EXPORT_SYMBOL vmlinux 0xdcd18232 blk_mq_start_hw_queue +EXPORT_SYMBOL vmlinux 0xdcfaa2a2 netdev_upper_dev_unlink +EXPORT_SYMBOL vmlinux 0xdd01ae46 input_mt_destroy_slots +EXPORT_SYMBOL vmlinux 0xdd0a0d7c ipv6_skip_exthdr +EXPORT_SYMBOL vmlinux 0xdd384090 cdrom_get_last_written +EXPORT_SYMBOL vmlinux 0xdd3a4dcf twl6040_set_pll +EXPORT_SYMBOL vmlinux 0xdd485740 deactivate_locked_super +EXPORT_SYMBOL vmlinux 0xdd497cc5 twl6040_get_vibralr_status +EXPORT_SYMBOL vmlinux 0xdd70a5fa generic_file_direct_write +EXPORT_SYMBOL vmlinux 0xdd728ed5 input_alloc_absinfo +EXPORT_SYMBOL vmlinux 0xdd80af54 request_key_async +EXPORT_SYMBOL vmlinux 0xdd839800 tc_classify_compat +EXPORT_SYMBOL vmlinux 0xdd9030af current_stack_pointer +EXPORT_SYMBOL vmlinux 0xdd955144 __debugger +EXPORT_SYMBOL vmlinux 0xdd96d39c of_gpio_simple_xlate +EXPORT_SYMBOL vmlinux 0xdda08c60 iov_iter_copy_from_user_atomic +EXPORT_SYMBOL vmlinux 0xddb3769b lockref_mark_dead +EXPORT_SYMBOL vmlinux 0xddc74f50 iw_handler_set_thrspy +EXPORT_SYMBOL vmlinux 0xde283c54 generic_listxattr +EXPORT_SYMBOL vmlinux 0xde2a154a iterate_dir +EXPORT_SYMBOL vmlinux 0xde48e9ca _raw_spin_lock +EXPORT_SYMBOL vmlinux 0xde497450 dquot_quotactl_sysfile_ops +EXPORT_SYMBOL vmlinux 0xde49bb59 security_path_truncate +EXPORT_SYMBOL vmlinux 0xde6151db tcp_memory_allocated +EXPORT_SYMBOL vmlinux 0xde697a4a __neigh_event_send +EXPORT_SYMBOL vmlinux 0xde6ed6f8 clocksource_change_rating +EXPORT_SYMBOL vmlinux 0xde715836 tcp_gro_complete +EXPORT_SYMBOL vmlinux 0xde783883 pSeries_disable_reloc_on_exc +EXPORT_SYMBOL vmlinux 0xde91448c load_vr_state +EXPORT_SYMBOL vmlinux 0xde9360ba totalram_pages +EXPORT_SYMBOL vmlinux 0xde978b21 param_ops_charp +EXPORT_SYMBOL vmlinux 0xde9b17ed agp3_generic_fetch_size +EXPORT_SYMBOL vmlinux 0xdebce072 vm_mmap +EXPORT_SYMBOL vmlinux 0xdecfe331 key_put +EXPORT_SYMBOL vmlinux 0xdee78efd sk_stream_wait_close +EXPORT_SYMBOL vmlinux 0xdef4e239 proc_remove +EXPORT_SYMBOL vmlinux 0xdef8899d __ww_mutex_lock +EXPORT_SYMBOL vmlinux 0xdf032e98 dev_set_allmulti +EXPORT_SYMBOL vmlinux 0xdf1450a8 blkdev_issue_write_same +EXPORT_SYMBOL vmlinux 0xdf29ec48 bitmap_cond_end_sync +EXPORT_SYMBOL vmlinux 0xdf2c2742 rb_last +EXPORT_SYMBOL vmlinux 0xdf3193ec pcie_port_service_register +EXPORT_SYMBOL vmlinux 0xdf54a8f7 netlink_unregister_notifier +EXPORT_SYMBOL vmlinux 0xdf55a0a2 md_done_sync +EXPORT_SYMBOL vmlinux 0xdf60cc27 __print_symbol +EXPORT_SYMBOL vmlinux 0xdf65df23 set_bh_page +EXPORT_SYMBOL vmlinux 0xdf7bfefa skb_get_hash_perturb +EXPORT_SYMBOL vmlinux 0xdf882bd3 phy_write_mmd_indirect +EXPORT_SYMBOL vmlinux 0xdf929370 fs_overflowgid +EXPORT_SYMBOL vmlinux 0xdfad859c __bio_clone_fast +EXPORT_SYMBOL vmlinux 0xdfbee87c dev_loopback_xmit +EXPORT_SYMBOL vmlinux 0xdfc5169b slhc_init +EXPORT_SYMBOL vmlinux 0xdfc7fa6a tcp_sync_mss +EXPORT_SYMBOL vmlinux 0xdfd4c3ac vio_get_attribute +EXPORT_SYMBOL vmlinux 0xdff905e5 vme_slave_free +EXPORT_SYMBOL vmlinux 0xe009afa2 tcp_connect +EXPORT_SYMBOL vmlinux 0xe04f7caa dm_read_arg_group +EXPORT_SYMBOL vmlinux 0xe05aa102 blk_queue_max_discard_sectors +EXPORT_SYMBOL vmlinux 0xe05caa2f pci_claim_resource +EXPORT_SYMBOL vmlinux 0xe06141e9 security_sk_clone +EXPORT_SYMBOL vmlinux 0xe075d6eb iter_div_u64_rem +EXPORT_SYMBOL vmlinux 0xe07963b9 pci_release_region +EXPORT_SYMBOL vmlinux 0xe083e246 gen_pool_first_fit_order_align +EXPORT_SYMBOL vmlinux 0xe0881f0a cdev_alloc +EXPORT_SYMBOL vmlinux 0xe099ea97 writeback_inodes_sb +EXPORT_SYMBOL vmlinux 0xe0a59ba6 path_is_under +EXPORT_SYMBOL vmlinux 0xe0b13336 argv_free +EXPORT_SYMBOL vmlinux 0xe0b704e7 __starget_for_each_device +EXPORT_SYMBOL vmlinux 0xe0e34941 ip6_dst_hoplimit +EXPORT_SYMBOL vmlinux 0xe10d441c generic_error_remove_page +EXPORT_SYMBOL vmlinux 0xe10d72e8 eth_gro_complete +EXPORT_SYMBOL vmlinux 0xe113bbbc csum_partial +EXPORT_SYMBOL vmlinux 0xe1170143 f_setown +EXPORT_SYMBOL vmlinux 0xe12c57bc ethtool_op_get_link +EXPORT_SYMBOL vmlinux 0xe143d100 start_tty +EXPORT_SYMBOL vmlinux 0xe1571b1a __xfrm_policy_check +EXPORT_SYMBOL vmlinux 0xe15d6b40 scsi_device_lookup_by_target +EXPORT_SYMBOL vmlinux 0xe1761617 security_inet_conn_request +EXPORT_SYMBOL vmlinux 0xe1764fa4 kmalloc_dma_caches +EXPORT_SYMBOL vmlinux 0xe1786c32 make_flow_keys_digest +EXPORT_SYMBOL vmlinux 0xe18b2729 tty_port_carrier_raised +EXPORT_SYMBOL vmlinux 0xe1b37857 dev_activate +EXPORT_SYMBOL vmlinux 0xe1be4869 security_path_mkdir +EXPORT_SYMBOL vmlinux 0xe1c78db4 fb_validate_mode +EXPORT_SYMBOL vmlinux 0xe1e58d99 padata_unregister_cpumask_notifier +EXPORT_SYMBOL vmlinux 0xe200f872 secure_dccpv6_sequence_number +EXPORT_SYMBOL vmlinux 0xe20372ae radix_tree_gang_lookup +EXPORT_SYMBOL vmlinux 0xe210b217 md_write_end +EXPORT_SYMBOL vmlinux 0xe220ceb8 __debugger_sstep +EXPORT_SYMBOL vmlinux 0xe22c83e6 scm_detach_fds +EXPORT_SYMBOL vmlinux 0xe2304303 mac_map_monitor_sense +EXPORT_SYMBOL vmlinux 0xe230e5d3 scsi_cmd_ioctl +EXPORT_SYMBOL vmlinux 0xe23ae481 blk_iopoll_complete +EXPORT_SYMBOL vmlinux 0xe23e0c75 gro_find_receive_by_type +EXPORT_SYMBOL vmlinux 0xe24d3a97 jiffies_64 +EXPORT_SYMBOL vmlinux 0xe27cd09f devm_iounmap +EXPORT_SYMBOL vmlinux 0xe28cd28f kern_unmount +EXPORT_SYMBOL vmlinux 0xe28d84b9 netdev_info +EXPORT_SYMBOL vmlinux 0xe29e1d0e out_of_line_wait_on_atomic_t +EXPORT_SYMBOL vmlinux 0xe29e58b1 account_page_redirty +EXPORT_SYMBOL vmlinux 0xe2a15099 pci_scan_single_device +EXPORT_SYMBOL vmlinux 0xe2be5498 lg_global_unlock +EXPORT_SYMBOL vmlinux 0xe2d5255a strcmp +EXPORT_SYMBOL vmlinux 0xe2d96c78 secpath_dup +EXPORT_SYMBOL vmlinux 0xe2dc8635 netdev_refcnt_read +EXPORT_SYMBOL vmlinux 0xe2e77594 sock_no_mmap +EXPORT_SYMBOL vmlinux 0xe2ee1c25 neigh_sysctl_register +EXPORT_SYMBOL vmlinux 0xe2f425e7 rps_cpu_mask +EXPORT_SYMBOL vmlinux 0xe304c2f0 security_path_mknod +EXPORT_SYMBOL vmlinux 0xe30a4119 cad_pid +EXPORT_SYMBOL vmlinux 0xe30ae269 of_mdio_find_bus +EXPORT_SYMBOL vmlinux 0xe30fb47b dmam_free_noncoherent +EXPORT_SYMBOL vmlinux 0xe314e8fb cpu_core_map +EXPORT_SYMBOL vmlinux 0xe31a058e netif_schedule_queue +EXPORT_SYMBOL vmlinux 0xe3397499 tcp_md5_hash_header +EXPORT_SYMBOL vmlinux 0xe3527e06 vlan_vid_add +EXPORT_SYMBOL vmlinux 0xe3648993 kill_bdev +EXPORT_SYMBOL vmlinux 0xe3727343 blkdev_get_by_dev +EXPORT_SYMBOL vmlinux 0xe375dae3 trace_print_symbols_seq +EXPORT_SYMBOL vmlinux 0xe378802b free_task +EXPORT_SYMBOL vmlinux 0xe38ced85 skb_copy_datagram_iter +EXPORT_SYMBOL vmlinux 0xe391a7f8 iov_iter_npages +EXPORT_SYMBOL vmlinux 0xe398ab5e vio_cmo_set_dev_desired +EXPORT_SYMBOL vmlinux 0xe3a53f4c sort +EXPORT_SYMBOL vmlinux 0xe3b1123b ps2_begin_command +EXPORT_SYMBOL vmlinux 0xe3d6f284 fb_find_mode_cvt +EXPORT_SYMBOL vmlinux 0xe3d7fcc6 pci_request_selected_regions +EXPORT_SYMBOL vmlinux 0xe3da24d2 swiotlb_unmap_sg +EXPORT_SYMBOL vmlinux 0xe3e0afd3 input_reset_device +EXPORT_SYMBOL vmlinux 0xe3eb4d96 __dynamic_dev_dbg +EXPORT_SYMBOL vmlinux 0xe3efc296 bdi_init +EXPORT_SYMBOL vmlinux 0xe3fb29a6 dup_iter +EXPORT_SYMBOL vmlinux 0xe3fbca46 pci_find_hose_for_OF_device +EXPORT_SYMBOL vmlinux 0xe40a8b9e udp6_csum_init +EXPORT_SYMBOL vmlinux 0xe42a405a unregister_tcf_proto_ops +EXPORT_SYMBOL vmlinux 0xe43def31 __xfrm_state_delete +EXPORT_SYMBOL vmlinux 0xe44308ec skb_copy_expand +EXPORT_SYMBOL vmlinux 0xe459719d dquot_quota_on_mount +EXPORT_SYMBOL vmlinux 0xe484e35f ioread32 +EXPORT_SYMBOL vmlinux 0xe4bb2144 bio_put +EXPORT_SYMBOL vmlinux 0xe4daf2d8 __bread_gfp +EXPORT_SYMBOL vmlinux 0xe4fe8ca1 _raw_spin_unlock_bh +EXPORT_SYMBOL vmlinux 0xe51667f7 agp_generic_destroy_page +EXPORT_SYMBOL vmlinux 0xe523ad75 synchronize_irq +EXPORT_SYMBOL vmlinux 0xe531478d devfreq_monitor_stop +EXPORT_SYMBOL vmlinux 0xe53a7e99 agp_generic_enable +EXPORT_SYMBOL vmlinux 0xe542d5d5 init_task +EXPORT_SYMBOL vmlinux 0xe5475df4 udp_push_pending_frames +EXPORT_SYMBOL vmlinux 0xe56f4987 __scsi_print_sense +EXPORT_SYMBOL vmlinux 0xe5734810 __wait_on_bit_lock +EXPORT_SYMBOL vmlinux 0xe57878a1 in6_pton +EXPORT_SYMBOL vmlinux 0xe5867808 dlci_ioctl_set +EXPORT_SYMBOL vmlinux 0xe59c7b66 dev_get_nest_level +EXPORT_SYMBOL vmlinux 0xe5bb4c7b __napi_schedule +EXPORT_SYMBOL vmlinux 0xe5bf2f3d simple_nosetlease +EXPORT_SYMBOL vmlinux 0xe5c78a99 do_blank_screen +EXPORT_SYMBOL vmlinux 0xe5d286ba dquot_writeback_dquots +EXPORT_SYMBOL vmlinux 0xe5dc2179 tty_unlock +EXPORT_SYMBOL vmlinux 0xe5ed5467 xfrm_policy_walk_init +EXPORT_SYMBOL vmlinux 0xe60ab681 d_tmpfile +EXPORT_SYMBOL vmlinux 0xe661e836 filemap_fdatawait +EXPORT_SYMBOL vmlinux 0xe66466b7 tty_port_block_til_ready +EXPORT_SYMBOL vmlinux 0xe66c5497 blkdev_issue_discard +EXPORT_SYMBOL vmlinux 0xe670a431 ilookup5 +EXPORT_SYMBOL vmlinux 0xe697d108 __blk_iopoll_complete +EXPORT_SYMBOL vmlinux 0xe69a9df4 hdmi_spd_infoframe_pack +EXPORT_SYMBOL vmlinux 0xe69db6a8 security_inode_readlink +EXPORT_SYMBOL vmlinux 0xe6a94cbd nf_getsockopt +EXPORT_SYMBOL vmlinux 0xe6c16f07 insert_inode_locked4 +EXPORT_SYMBOL vmlinux 0xe6e7f3ed __skb_flow_dissect +EXPORT_SYMBOL vmlinux 0xe6fbe430 can_do_mlock +EXPORT_SYMBOL vmlinux 0xe6feec2a pci_platform_rom +EXPORT_SYMBOL vmlinux 0xe738d604 ip4_datagram_connect +EXPORT_SYMBOL vmlinux 0xe7541dec kmem_cache_alloc_node +EXPORT_SYMBOL vmlinux 0xe7601bd9 tcf_exts_validate +EXPORT_SYMBOL vmlinux 0xe7a664c4 nf_hooks +EXPORT_SYMBOL vmlinux 0xe7a81967 audit_log_secctx +EXPORT_SYMBOL vmlinux 0xe7b2010e nd_namespace_blk_validate +EXPORT_SYMBOL vmlinux 0xe7b65484 tty_hangup +EXPORT_SYMBOL vmlinux 0xe7ce7439 _memcpy_fromio +EXPORT_SYMBOL vmlinux 0xe7d4daac seq_list_next +EXPORT_SYMBOL vmlinux 0xe7e5d787 __devm_gpiod_get_index_optional +EXPORT_SYMBOL vmlinux 0xe7e75edc trace_raw_output_prep +EXPORT_SYMBOL vmlinux 0xe7ec1cf0 phy_ethtool_gset +EXPORT_SYMBOL vmlinux 0xe7f97e42 __quota_error +EXPORT_SYMBOL vmlinux 0xe81ef1dd remove_conflicting_framebuffers +EXPORT_SYMBOL vmlinux 0xe81fc870 xfrm_alloc_spi +EXPORT_SYMBOL vmlinux 0xe8214184 tcf_exts_destroy +EXPORT_SYMBOL vmlinux 0xe82cc752 tcp_sockets_allocated +EXPORT_SYMBOL vmlinux 0xe82d58a8 sk_filter +EXPORT_SYMBOL vmlinux 0xe82f0a1a __ip_dev_find +EXPORT_SYMBOL vmlinux 0xe833fa77 gen_pool_virt_to_phys +EXPORT_SYMBOL vmlinux 0xe83662e7 ppp_channel_index +EXPORT_SYMBOL vmlinux 0xe84a54a0 filp_close +EXPORT_SYMBOL vmlinux 0xe863da07 mipi_dsi_dcs_set_tear_on +EXPORT_SYMBOL vmlinux 0xe8794ce1 slhc_toss +EXPORT_SYMBOL vmlinux 0xe87b269a uart_get_baud_rate +EXPORT_SYMBOL vmlinux 0xe87ced00 t10_pi_type3_crc +EXPORT_SYMBOL vmlinux 0xe880aa0d netif_set_real_num_rx_queues +EXPORT_SYMBOL vmlinux 0xe893fee7 mem_cgroup_end_page_stat +EXPORT_SYMBOL vmlinux 0xe899ed54 pci_alloc_dev +EXPORT_SYMBOL vmlinux 0xe8a959f4 posix_acl_from_xattr +EXPORT_SYMBOL vmlinux 0xe8bea3bc qdisc_put_stab +EXPORT_SYMBOL vmlinux 0xe8c438f3 proc_dointvec_userhz_jiffies +EXPORT_SYMBOL vmlinux 0xe8dcb437 __destroy_inode +EXPORT_SYMBOL vmlinux 0xe9138008 md_reload_sb +EXPORT_SYMBOL vmlinux 0xe914e41e strcpy +EXPORT_SYMBOL vmlinux 0xe9175da0 jbd2_journal_init_jbd_inode +EXPORT_SYMBOL vmlinux 0xe9378d58 idr_get_next +EXPORT_SYMBOL vmlinux 0xe948e4fd eth_header_parse +EXPORT_SYMBOL vmlinux 0xe953b21f get_next_ino +EXPORT_SYMBOL vmlinux 0xe957009b set_security_override_from_ctx +EXPORT_SYMBOL vmlinux 0xe96c832e pci_clear_master +EXPORT_SYMBOL vmlinux 0xe971876a on_each_cpu_mask +EXPORT_SYMBOL vmlinux 0xe982eaf9 sock_no_getname +EXPORT_SYMBOL vmlinux 0xe98340ab of_phy_find_device +EXPORT_SYMBOL vmlinux 0xe9be2840 scsi_eh_finish_cmd +EXPORT_SYMBOL vmlinux 0xe9d22358 of_match_node +EXPORT_SYMBOL vmlinux 0xe9d6ebe8 copy_from_iter +EXPORT_SYMBOL vmlinux 0xe9efff9f generic_splice_sendpage +EXPORT_SYMBOL vmlinux 0xe9f7149c zlib_deflate_workspacesize +EXPORT_SYMBOL vmlinux 0xe9fb30e3 wait_on_page_bit +EXPORT_SYMBOL vmlinux 0xea054b22 nla_policy_len +EXPORT_SYMBOL vmlinux 0xea126012 get_mm_exe_file +EXPORT_SYMBOL vmlinux 0xea16dd4c tcp_destroy_cgroup +EXPORT_SYMBOL vmlinux 0xea229687 load_nls +EXPORT_SYMBOL vmlinux 0xea2d1ec5 param_set_short +EXPORT_SYMBOL vmlinux 0xea4494e4 finish_no_open +EXPORT_SYMBOL vmlinux 0xea4b1e5d scsi_execute_req_flags +EXPORT_SYMBOL vmlinux 0xea6e056f ndo_dflt_fdb_add +EXPORT_SYMBOL vmlinux 0xea7a42f9 __sg_free_table +EXPORT_SYMBOL vmlinux 0xea85e3ad ps2_handle_response +EXPORT_SYMBOL vmlinux 0xea968c96 ___ratelimit +EXPORT_SYMBOL vmlinux 0xea987f44 simple_transaction_get +EXPORT_SYMBOL vmlinux 0xeaa4f861 dump_emit +EXPORT_SYMBOL vmlinux 0xeaa9f0bc abx500_get_register_interruptible +EXPORT_SYMBOL vmlinux 0xead0f97d skb_free_datagram +EXPORT_SYMBOL vmlinux 0xead15293 pcim_pin_device +EXPORT_SYMBOL vmlinux 0xead5089c input_release_device +EXPORT_SYMBOL vmlinux 0xeaf06597 bio_integrity_prep +EXPORT_SYMBOL vmlinux 0xeb176b17 inet6_getname +EXPORT_SYMBOL vmlinux 0xeb21d5f8 locks_remove_posix +EXPORT_SYMBOL vmlinux 0xeb37101c audit_log_end +EXPORT_SYMBOL vmlinux 0xeb3b095f sock_queue_rcv_skb +EXPORT_SYMBOL vmlinux 0xeb44339a free_pages_exact +EXPORT_SYMBOL vmlinux 0xeb58e0e6 new_inode +EXPORT_SYMBOL vmlinux 0xeb5d81db remove_arg_zero +EXPORT_SYMBOL vmlinux 0xeb86c92f blk_queue_update_dma_pad +EXPORT_SYMBOL vmlinux 0xeb8c7b7b cxl_use_count +EXPORT_SYMBOL vmlinux 0xeba2a1f7 rtas_indicator_present +EXPORT_SYMBOL vmlinux 0xebacbbc4 tso_start +EXPORT_SYMBOL vmlinux 0xebb30469 d_alloc_pseudo +EXPORT_SYMBOL vmlinux 0xebb6bb30 ipv6_find_hdr +EXPORT_SYMBOL vmlinux 0xebcab3a6 ppc_pci_io +EXPORT_SYMBOL vmlinux 0xebcdae47 twl6040_clear_bits +EXPORT_SYMBOL vmlinux 0xebdbd9b0 generic_ro_fops +EXPORT_SYMBOL vmlinux 0xebef5e6d generic_writepages +EXPORT_SYMBOL vmlinux 0xec1022a0 invalidate_bdev +EXPORT_SYMBOL vmlinux 0xec19c3fe input_set_keycode +EXPORT_SYMBOL vmlinux 0xec1da0f3 mmc_can_sanitize +EXPORT_SYMBOL vmlinux 0xec2ad6ee dev_set_mtu +EXPORT_SYMBOL vmlinux 0xec40a8e2 machine_id +EXPORT_SYMBOL vmlinux 0xec484b10 sk_dst_check +EXPORT_SYMBOL vmlinux 0xec4a33c9 scsi_device_resume +EXPORT_SYMBOL vmlinux 0xec78128c d_genocide +EXPORT_SYMBOL vmlinux 0xec7a26ff scsi_host_set_state +EXPORT_SYMBOL vmlinux 0xec7a7d94 security_inode_permission +EXPORT_SYMBOL vmlinux 0xec82271b jbd2_journal_force_commit_nested +EXPORT_SYMBOL vmlinux 0xecb96db4 inet_twsk_deschedule +EXPORT_SYMBOL vmlinux 0xecbb926f xor_altivec_3 +EXPORT_SYMBOL vmlinux 0xecc9bab0 devfreq_monitor_suspend +EXPORT_SYMBOL vmlinux 0xece34f82 noop_fsync +EXPORT_SYMBOL vmlinux 0xece784c2 rb_first +EXPORT_SYMBOL vmlinux 0xece9b4e9 blk_queue_bounce_limit +EXPORT_SYMBOL vmlinux 0xecfc7c8c jbd2_journal_wipe +EXPORT_SYMBOL vmlinux 0xecfe7df1 ptp_clock_register +EXPORT_SYMBOL vmlinux 0xed04e81a input_unregister_device +EXPORT_SYMBOL vmlinux 0xed0eecc9 blk_rq_map_sg +EXPORT_SYMBOL vmlinux 0xed26b63d page_put_link +EXPORT_SYMBOL vmlinux 0xed350810 eth_header +EXPORT_SYMBOL vmlinux 0xed421a68 __register_chrdev +EXPORT_SYMBOL vmlinux 0xed476ed1 alloc_file +EXPORT_SYMBOL vmlinux 0xed597524 qdisc_get_rtab +EXPORT_SYMBOL vmlinux 0xed74bbed blk_queue_chunk_sectors +EXPORT_SYMBOL vmlinux 0xed787f05 __skb_checksum_complete_head +EXPORT_SYMBOL vmlinux 0xed850cb1 unregister_binfmt +EXPORT_SYMBOL vmlinux 0xed867dc1 pcix_get_max_mmrbc +EXPORT_SYMBOL vmlinux 0xed9f9a20 __ctzsi2 +EXPORT_SYMBOL vmlinux 0xedbaee5e nla_strcmp +EXPORT_SYMBOL vmlinux 0xedc03953 iounmap +EXPORT_SYMBOL vmlinux 0xedc410d0 udplite_table +EXPORT_SYMBOL vmlinux 0xedc7ae43 netdev_upper_get_next_dev_rcu +EXPORT_SYMBOL vmlinux 0xede9f3e7 fb_set_cmap +EXPORT_SYMBOL vmlinux 0xedf094b2 dev_get_by_index +EXPORT_SYMBOL vmlinux 0xedf2449b ether_setup +EXPORT_SYMBOL vmlinux 0xee0100d4 skb_realloc_headroom +EXPORT_SYMBOL vmlinux 0xee14149e qdisc_warn_nonwc +EXPORT_SYMBOL vmlinux 0xee2d0fc7 _local_bh_enable +EXPORT_SYMBOL vmlinux 0xee2e6bd1 __sock_create +EXPORT_SYMBOL vmlinux 0xee781bb5 keyring_search +EXPORT_SYMBOL vmlinux 0xee91879b rb_first_postorder +EXPORT_SYMBOL vmlinux 0xeea9dbaf bitmap_bitremap +EXPORT_SYMBOL vmlinux 0xeeb571c3 xfrm_input_unregister_afinfo +EXPORT_SYMBOL vmlinux 0xeeb5bd3b __tracepoint_kfree +EXPORT_SYMBOL vmlinux 0xeeb93cb1 netdev_lower_get_next_private_rcu +EXPORT_SYMBOL vmlinux 0xeecb2ebd blk_register_region +EXPORT_SYMBOL vmlinux 0xeecd863b udp6_set_csum +EXPORT_SYMBOL vmlinux 0xeedec4f4 invalidate_mapping_pages +EXPORT_SYMBOL vmlinux 0xeef161aa groups_free +EXPORT_SYMBOL vmlinux 0xeeff6e44 pci_dev_get +EXPORT_SYMBOL vmlinux 0xef15a339 fb_set_var +EXPORT_SYMBOL vmlinux 0xef24b425 agp_alloc_bridge +EXPORT_SYMBOL vmlinux 0xef2b3b77 blk_end_request_cur +EXPORT_SYMBOL vmlinux 0xef31b58c truncate_inode_pages +EXPORT_SYMBOL vmlinux 0xef3d1a50 locks_init_lock +EXPORT_SYMBOL vmlinux 0xef404e86 blk_rq_set_block_pc +EXPORT_SYMBOL vmlinux 0xef679792 sdev_enable_disk_events +EXPORT_SYMBOL vmlinux 0xef97923d simple_statfs +EXPORT_SYMBOL vmlinux 0xef97c774 blk_mq_start_stopped_hw_queues +EXPORT_SYMBOL vmlinux 0xefc643d7 pci_get_domain_bus_and_slot +EXPORT_SYMBOL vmlinux 0xefd04679 dm_io +EXPORT_SYMBOL vmlinux 0xefd1624a vme_dma_free_attribute +EXPORT_SYMBOL vmlinux 0xefdd70ce security_secid_to_secctx +EXPORT_SYMBOL vmlinux 0xefde1bbe flush_dcache_range +EXPORT_SYMBOL vmlinux 0xefef569a scsi_ioctl +EXPORT_SYMBOL vmlinux 0xeff68a1f try_to_writeback_inodes_sb +EXPORT_SYMBOL vmlinux 0xeffc6ea3 neigh_lookup_nodev +EXPORT_SYMBOL vmlinux 0xf0009fee put_pages_list +EXPORT_SYMBOL vmlinux 0xf0187927 __sg_page_iter_next +EXPORT_SYMBOL vmlinux 0xf0233873 pci_request_region_exclusive +EXPORT_SYMBOL vmlinux 0xf02d98c5 pcibios_bus_to_resource +EXPORT_SYMBOL vmlinux 0xf031a56f delete_from_page_cache +EXPORT_SYMBOL vmlinux 0xf0335ddc i8042_check_port_owner +EXPORT_SYMBOL vmlinux 0xf040e37b elv_rb_del +EXPORT_SYMBOL vmlinux 0xf05ffa15 fb_var_to_videomode +EXPORT_SYMBOL vmlinux 0xf065f629 ioread16be +EXPORT_SYMBOL vmlinux 0xf067257c register_memory_isolate_notifier +EXPORT_SYMBOL vmlinux 0xf06b4286 pci_bus_assign_resources +EXPORT_SYMBOL vmlinux 0xf07fe9a0 lockref_put_or_lock +EXPORT_SYMBOL vmlinux 0xf0829501 get_empty_filp +EXPORT_SYMBOL vmlinux 0xf08a0e61 pci_prepare_to_sleep +EXPORT_SYMBOL vmlinux 0xf08c67de napi_alloc_frag +EXPORT_SYMBOL vmlinux 0xf0948625 eth_validate_addr +EXPORT_SYMBOL vmlinux 0xf09de776 get_random_int +EXPORT_SYMBOL vmlinux 0xf0a8237a radix_tree_gang_lookup_tag +EXPORT_SYMBOL vmlinux 0xf0c68531 pcie_set_mps +EXPORT_SYMBOL vmlinux 0xf0ed16d0 skb_dequeue +EXPORT_SYMBOL vmlinux 0xf0ef15b4 list_sort +EXPORT_SYMBOL vmlinux 0xf10526ac verify_spi_info +EXPORT_SYMBOL vmlinux 0xf1061b06 pm860x_set_bits +EXPORT_SYMBOL vmlinux 0xf10de535 ioread8 +EXPORT_SYMBOL vmlinux 0xf11cd6ce down_interruptible +EXPORT_SYMBOL vmlinux 0xf134bfa4 __nla_put +EXPORT_SYMBOL vmlinux 0xf13c7395 generic_pipe_buf_release +EXPORT_SYMBOL vmlinux 0xf13d925b ata_print_version +EXPORT_SYMBOL vmlinux 0xf147dcb2 hdmi_spd_infoframe_init +EXPORT_SYMBOL vmlinux 0xf1487956 __serio_register_driver +EXPORT_SYMBOL vmlinux 0xf1520481 sync_inodes_sb +EXPORT_SYMBOL vmlinux 0xf167e410 scsi_register_interface +EXPORT_SYMBOL vmlinux 0xf183189b __ioremap_at +EXPORT_SYMBOL vmlinux 0xf185b651 neigh_app_ns +EXPORT_SYMBOL vmlinux 0xf18e19b2 generic_update_time +EXPORT_SYMBOL vmlinux 0xf195c682 fb_invert_cmaps +EXPORT_SYMBOL vmlinux 0xf1969a8e __usecs_to_jiffies +EXPORT_SYMBOL vmlinux 0xf1b5f652 __block_write_begin +EXPORT_SYMBOL vmlinux 0xf1be223a fbcon_set_rotate +EXPORT_SYMBOL vmlinux 0xf1cc7bb1 blk_mq_alloc_tag_set +EXPORT_SYMBOL vmlinux 0xf1db1704 nla_memcpy +EXPORT_SYMBOL vmlinux 0xf1e06df1 gen_pool_set_algo +EXPORT_SYMBOL vmlinux 0xf1e4cef3 nvdimm_namespace_disk_name +EXPORT_SYMBOL vmlinux 0xf1e98c74 avenrun +EXPORT_SYMBOL vmlinux 0xf20dabd8 free_irq +EXPORT_SYMBOL vmlinux 0xf22017c9 seq_file_path +EXPORT_SYMBOL vmlinux 0xf222f339 i2c_use_client +EXPORT_SYMBOL vmlinux 0xf22881e8 lg_local_lock +EXPORT_SYMBOL vmlinux 0xf22c6d70 rtnl_set_sk_err +EXPORT_SYMBOL vmlinux 0xf233debf srp_rport_put +EXPORT_SYMBOL vmlinux 0xf234fa90 twl6040_set_bits +EXPORT_SYMBOL vmlinux 0xf23fcb99 __kfifo_in +EXPORT_SYMBOL vmlinux 0xf2408d3f phy_connect +EXPORT_SYMBOL vmlinux 0xf268375c dcache_dir_lseek +EXPORT_SYMBOL vmlinux 0xf27d39ad dget_parent +EXPORT_SYMBOL vmlinux 0xf2893f60 genphy_suspend +EXPORT_SYMBOL vmlinux 0xf2a0af8f backlight_device_registered +EXPORT_SYMBOL vmlinux 0xf2a2b163 resource_list_create_entry +EXPORT_SYMBOL vmlinux 0xf2c43f3f zlib_deflate +EXPORT_SYMBOL vmlinux 0xf2eaf36f ip_generic_getfrag +EXPORT_SYMBOL vmlinux 0xf313da4e sha_transform +EXPORT_SYMBOL vmlinux 0xf31b254e buffer_migrate_page +EXPORT_SYMBOL vmlinux 0xf31ce84b phy_start +EXPORT_SYMBOL vmlinux 0xf31fb06c __page_symlink +EXPORT_SYMBOL vmlinux 0xf322a206 bit_waitqueue +EXPORT_SYMBOL vmlinux 0xf32aa85c of_get_next_available_child +EXPORT_SYMBOL vmlinux 0xf3341268 __clear_user +EXPORT_SYMBOL vmlinux 0xf3439d8c udp_lib_getsockopt +EXPORT_SYMBOL vmlinux 0xf346231f seq_list_start_head +EXPORT_SYMBOL vmlinux 0xf34703c4 eth_header_cache_update +EXPORT_SYMBOL vmlinux 0xf353a698 register_module_notifier +EXPORT_SYMBOL vmlinux 0xf35ef840 abx500_mask_and_set_register_interruptible +EXPORT_SYMBOL vmlinux 0xf3678f2e phy_device_create +EXPORT_SYMBOL vmlinux 0xf36c9289 led_update_brightness +EXPORT_SYMBOL vmlinux 0xf36d3426 bdput +EXPORT_SYMBOL vmlinux 0xf36d81f8 blk_alloc_queue +EXPORT_SYMBOL vmlinux 0xf389fe60 __hw_addr_init +EXPORT_SYMBOL vmlinux 0xf3916987 global_cursor_default +EXPORT_SYMBOL vmlinux 0xf396cd21 tcp_parse_md5sig_option +EXPORT_SYMBOL vmlinux 0xf3e6402e __bitmap_equal +EXPORT_SYMBOL vmlinux 0xf3fdb879 inet_recvmsg +EXPORT_SYMBOL vmlinux 0xf4083e5d dev_driver_string +EXPORT_SYMBOL vmlinux 0xf4300cbd dquot_quota_off +EXPORT_SYMBOL vmlinux 0xf441ac43 ioread8_rep +EXPORT_SYMBOL vmlinux 0xf4653808 agp_generic_type_to_mask_type +EXPORT_SYMBOL vmlinux 0xf468c318 paca +EXPORT_SYMBOL vmlinux 0xf46afdf1 sock_update_memcg +EXPORT_SYMBOL vmlinux 0xf474c21c bitmap_print_to_pagebuf +EXPORT_SYMBOL vmlinux 0xf474fdcb kfree_const +EXPORT_SYMBOL vmlinux 0xf4751c28 cdrom_release +EXPORT_SYMBOL vmlinux 0xf4793e61 init_buffer +EXPORT_SYMBOL vmlinux 0xf48daea3 inode_owner_or_capable +EXPORT_SYMBOL vmlinux 0xf4920356 param_get_ullong +EXPORT_SYMBOL vmlinux 0xf49c3b85 __dev_kfree_skb_any +EXPORT_SYMBOL vmlinux 0xf4b6c639 generic_read_dir +EXPORT_SYMBOL vmlinux 0xf4bdbeb9 __frontswap_invalidate_area +EXPORT_SYMBOL vmlinux 0xf4ea1d8a blk_queue_segment_boundary +EXPORT_SYMBOL vmlinux 0xf4f14de6 rtnl_trylock +EXPORT_SYMBOL vmlinux 0xf4fc212b dev_queue_xmit_accel +EXPORT_SYMBOL vmlinux 0xf51ae235 touch_nmi_watchdog +EXPORT_SYMBOL vmlinux 0xf51bf88b nf_hooks_needed +EXPORT_SYMBOL vmlinux 0xf5222143 _raw_spin_lock_irqsave +EXPORT_SYMBOL vmlinux 0xf53c8361 dentry_open +EXPORT_SYMBOL vmlinux 0xf53d4c26 qdisc_class_hash_destroy +EXPORT_SYMBOL vmlinux 0xf53df0a5 gen_pool_free +EXPORT_SYMBOL vmlinux 0xf55b3b3d __arch_hweight16 +EXPORT_SYMBOL vmlinux 0xf58236f2 iunique +EXPORT_SYMBOL vmlinux 0xf593bdf0 sync_blockdev +EXPORT_SYMBOL vmlinux 0xf5a085c4 gen_pool_destroy +EXPORT_SYMBOL vmlinux 0xf5a10e25 vme_slave_set +EXPORT_SYMBOL vmlinux 0xf5a62ecc _memset_io +EXPORT_SYMBOL vmlinux 0xf5bd4d61 kernel_getpeername +EXPORT_SYMBOL vmlinux 0xf5c2d34d hdmi_audio_infoframe_init +EXPORT_SYMBOL vmlinux 0xf5e1558d crash_shutdown_unregister +EXPORT_SYMBOL vmlinux 0xf5eb86ea blk_verify_command +EXPORT_SYMBOL vmlinux 0xf5edfb99 i2c_clients_command +EXPORT_SYMBOL vmlinux 0xf5ff2bca dquot_quota_on +EXPORT_SYMBOL vmlinux 0xf607ea3c pci_back_from_sleep +EXPORT_SYMBOL vmlinux 0xf60ff683 nf_log_unbind_pf +EXPORT_SYMBOL vmlinux 0xf620663e tcp_md5_do_del +EXPORT_SYMBOL vmlinux 0xf62b388d pci_bus_find_capability +EXPORT_SYMBOL vmlinux 0xf6388c56 sysctl_ip_default_ttl +EXPORT_SYMBOL vmlinux 0xf6689515 __cleancache_invalidate_fs +EXPORT_SYMBOL vmlinux 0xf6770391 mac_pton +EXPORT_SYMBOL vmlinux 0xf67bda24 skb_put +EXPORT_SYMBOL vmlinux 0xf68285c0 register_inetaddr_notifier +EXPORT_SYMBOL vmlinux 0xf68687be __sg_page_iter_start +EXPORT_SYMBOL vmlinux 0xf6afb5ed iov_iter_single_seg_count +EXPORT_SYMBOL vmlinux 0xf6bb4729 color_table +EXPORT_SYMBOL vmlinux 0xf6d5710b jbd2_journal_init_dev +EXPORT_SYMBOL vmlinux 0xf6ebc03b net_ratelimit +EXPORT_SYMBOL vmlinux 0xf6f8e4a4 compat_ip_getsockopt +EXPORT_SYMBOL vmlinux 0xf6fc8791 __bitmap_xor +EXPORT_SYMBOL vmlinux 0xf6febc27 dev_getfirstbyhwtype +EXPORT_SYMBOL vmlinux 0xf705d9e1 input_close_device +EXPORT_SYMBOL vmlinux 0xf712e0b2 commit_creds +EXPORT_SYMBOL vmlinux 0xf71320cc mmc_power_save_host +EXPORT_SYMBOL vmlinux 0xf7289d14 __tracepoint_kmem_cache_free +EXPORT_SYMBOL vmlinux 0xf7584a9c find_font +EXPORT_SYMBOL vmlinux 0xf7638e70 d_drop +EXPORT_SYMBOL vmlinux 0xf78b0fb5 inet6_register_icmp_sender +EXPORT_SYMBOL vmlinux 0xf79e52aa module_put +EXPORT_SYMBOL vmlinux 0xf7adcaf3 __tracepoint_kmalloc_node +EXPORT_SYMBOL vmlinux 0xf7c08ed5 scsi_is_target_device +EXPORT_SYMBOL vmlinux 0xf7ca7ee3 generic_readlink +EXPORT_SYMBOL vmlinux 0xf7ef4b73 csum_and_copy_from_iter +EXPORT_SYMBOL vmlinux 0xf7f7a9d2 sock_queue_err_skb +EXPORT_SYMBOL vmlinux 0xf805d1e2 abx500_register_ops +EXPORT_SYMBOL vmlinux 0xf80ec483 ata_scsi_cmd_error_handler +EXPORT_SYMBOL vmlinux 0xf811e69d scsi_eh_flush_done_q +EXPORT_SYMBOL vmlinux 0xf812cff6 memscan +EXPORT_SYMBOL vmlinux 0xf81d940c neigh_event_ns +EXPORT_SYMBOL vmlinux 0xf8250d1d revert_creds +EXPORT_SYMBOL vmlinux 0xf827cb83 free_reserved_area +EXPORT_SYMBOL vmlinux 0xf82abc1d isa_dma_bridge_buggy +EXPORT_SYMBOL vmlinux 0xf82ec573 rb_prev +EXPORT_SYMBOL vmlinux 0xf8318ace __napi_schedule_irqoff +EXPORT_SYMBOL vmlinux 0xf844503a pci_get_subsys +EXPORT_SYMBOL vmlinux 0xf8592b48 dcbnl_ieee_notify +EXPORT_SYMBOL vmlinux 0xf866cec4 nobh_write_begin +EXPORT_SYMBOL vmlinux 0xf8960c40 iov_iter_kvec +EXPORT_SYMBOL vmlinux 0xf8ac1fff inode_init_owner +EXPORT_SYMBOL vmlinux 0xf8bd23ca from_kprojid +EXPORT_SYMBOL vmlinux 0xf8ca518a dma_iommu_ops +EXPORT_SYMBOL vmlinux 0xf8d04f09 __crc32c_le_shift +EXPORT_SYMBOL vmlinux 0xf8d09c38 kill_block_super +EXPORT_SYMBOL vmlinux 0xf8d953eb jbd2_journal_init_inode +EXPORT_SYMBOL vmlinux 0xf8ffecd4 tty_name +EXPORT_SYMBOL vmlinux 0xf9038bcf smp_call_function_many +EXPORT_SYMBOL vmlinux 0xf9134dc8 mapping_tagged +EXPORT_SYMBOL vmlinux 0xf9397f22 set_anon_super +EXPORT_SYMBOL vmlinux 0xf9402378 pci_dev_driver +EXPORT_SYMBOL vmlinux 0xf9474ef3 dev_printk_emit +EXPORT_SYMBOL vmlinux 0xf953c72c i2c_smbus_read_block_data +EXPORT_SYMBOL vmlinux 0xf955b7b1 scsi_is_host_device +EXPORT_SYMBOL vmlinux 0xf978fdd5 agp_backend_release +EXPORT_SYMBOL vmlinux 0xf97a990d scsi_device_quiesce +EXPORT_SYMBOL vmlinux 0xf97faeee __pci_register_driver +EXPORT_SYMBOL vmlinux 0xf98992fa blk_mq_all_tag_busy_iter +EXPORT_SYMBOL vmlinux 0xf9a482f9 msleep +EXPORT_SYMBOL vmlinux 0xf9c0b663 strlcat +EXPORT_SYMBOL vmlinux 0xf9cef909 iov_iter_init +EXPORT_SYMBOL vmlinux 0xf9f9f729 iommu_tbl_pool_init +EXPORT_SYMBOL vmlinux 0xfa3b74f4 module_layout +EXPORT_SYMBOL vmlinux 0xfa5545df cros_ec_cmd_xfer +EXPORT_SYMBOL vmlinux 0xfa599bb2 netlink_register_notifier +EXPORT_SYMBOL vmlinux 0xfa72f9e0 cros_ec_prepare_tx +EXPORT_SYMBOL vmlinux 0xfa7453f0 set_groups +EXPORT_SYMBOL vmlinux 0xfa7b7fd8 pci_clear_mwi +EXPORT_SYMBOL vmlinux 0xfa87112a ndo_dflt_fdb_del +EXPORT_SYMBOL vmlinux 0xfa88a774 swiotlb_sync_sg_for_cpu +EXPORT_SYMBOL vmlinux 0xfaa4172e neigh_parms_release +EXPORT_SYMBOL vmlinux 0xfac8865f sysctl_wmem_max +EXPORT_SYMBOL vmlinux 0xfaca24a7 cdrom_number_of_slots +EXPORT_SYMBOL vmlinux 0xfacd8e72 vme_dma_vme_attribute +EXPORT_SYMBOL vmlinux 0xfae67b1f cap_mmap_addr +EXPORT_SYMBOL vmlinux 0xfaf8b393 __hw_addr_unsync_dev +EXPORT_SYMBOL vmlinux 0xfb068e0b inode_change_ok +EXPORT_SYMBOL vmlinux 0xfb21e71f tcp_sendpage +EXPORT_SYMBOL vmlinux 0xfb220958 cdrom_media_changed +EXPORT_SYMBOL vmlinux 0xfb317227 of_find_device_by_node +EXPORT_SYMBOL vmlinux 0xfb3ceb32 netdev_master_upper_dev_get +EXPORT_SYMBOL vmlinux 0xfb4bb539 pcim_iomap +EXPORT_SYMBOL vmlinux 0xfb4c7c17 mmc_remove_host +EXPORT_SYMBOL vmlinux 0xfb6af58d recalc_sigpending +EXPORT_SYMBOL vmlinux 0xfb75f1a1 __inet6_lookup_established +EXPORT_SYMBOL vmlinux 0xfb94103e __clzdi2 +EXPORT_SYMBOL vmlinux 0xfb97af9b iov_iter_advance +EXPORT_SYMBOL vmlinux 0xfbaaf01e console_lock +EXPORT_SYMBOL vmlinux 0xfbc4f89e io_schedule_timeout +EXPORT_SYMBOL vmlinux 0xfbd83865 blk_post_runtime_suspend +EXPORT_SYMBOL vmlinux 0xfbdd4c01 cpu_present_mask +EXPORT_SYMBOL vmlinux 0xfbe650fd security_dentry_init_security +EXPORT_SYMBOL vmlinux 0xfbecd2c2 jbd2_journal_dirty_metadata +EXPORT_SYMBOL vmlinux 0xfbf58fd1 fasync_helper +EXPORT_SYMBOL vmlinux 0xfbf72988 tcp_mtup_init +EXPORT_SYMBOL vmlinux 0xfc02b7ad sysctl_tcp_wmem +EXPORT_SYMBOL vmlinux 0xfc04e131 scsi_add_host_with_dma +EXPORT_SYMBOL vmlinux 0xfc19d882 __register_binfmt +EXPORT_SYMBOL vmlinux 0xfc2a979e serio_reconnect +EXPORT_SYMBOL vmlinux 0xfc2d2439 blkdev_fsync +EXPORT_SYMBOL vmlinux 0xfc39e32f ioport_unmap +EXPORT_SYMBOL vmlinux 0xfc3b160f mempool_create_node +EXPORT_SYMBOL vmlinux 0xfc41a2b5 blk_end_request +EXPORT_SYMBOL vmlinux 0xfc6355f1 ata_std_end_eh +EXPORT_SYMBOL vmlinux 0xfc8f6026 ip6_frag_init +EXPORT_SYMBOL vmlinux 0xfcb926cd kstrtouint_from_user +EXPORT_SYMBOL vmlinux 0xfcc2a43c utf32_to_utf8 +EXPORT_SYMBOL vmlinux 0xfcec0987 enable_irq +EXPORT_SYMBOL vmlinux 0xfcef2d41 dma_sync_wait +EXPORT_SYMBOL vmlinux 0xfcfa03ff fb_videomode_to_modelist +EXPORT_SYMBOL vmlinux 0xfd0d2e9a skb_insert +EXPORT_SYMBOL vmlinux 0xfd1183f8 udp_set_csum +EXPORT_SYMBOL vmlinux 0xfd1ab02e inet_dev_addr_type +EXPORT_SYMBOL vmlinux 0xfd5c0283 input_mt_drop_unused +EXPORT_SYMBOL vmlinux 0xfd621b90 __skb_checksum_complete +EXPORT_SYMBOL vmlinux 0xfd622046 tcp_try_fastopen +EXPORT_SYMBOL vmlinux 0xfd663e1c nf_ip6_checksum +EXPORT_SYMBOL vmlinux 0xfd69ef4a of_phy_register_fixed_link +EXPORT_SYMBOL vmlinux 0xfd726a0f agp_generic_alloc_pages +EXPORT_SYMBOL vmlinux 0xfd99623a ip_frag_ecn_table +EXPORT_SYMBOL vmlinux 0xfda76460 i2c_smbus_write_word_data +EXPORT_SYMBOL vmlinux 0xfdae5017 blk_queue_max_segment_size +EXPORT_SYMBOL vmlinux 0xfdb6cedc _raw_read_unlock_bh +EXPORT_SYMBOL vmlinux 0xfdb9b629 ioread32be +EXPORT_SYMBOL vmlinux 0xfdbe0288 pci_add_resource_offset +EXPORT_SYMBOL vmlinux 0xfdbff600 flush_old_exec +EXPORT_SYMBOL vmlinux 0xfdc2f9d5 i2c_transfer +EXPORT_SYMBOL vmlinux 0xfdd36a40 ip_queue_xmit +EXPORT_SYMBOL vmlinux 0xfded48ed enable_kernel_fp +EXPORT_SYMBOL vmlinux 0xfdef7cab mb_cache_entry_free +EXPORT_SYMBOL vmlinux 0xfdfc0b3b fiemap_fill_next_extent +EXPORT_SYMBOL vmlinux 0xfe029963 unregister_inetaddr_notifier +EXPORT_SYMBOL vmlinux 0xfe152cc3 sock_dequeue_err_skb +EXPORT_SYMBOL vmlinux 0xfe17047b kblockd_schedule_delayed_work_on +EXPORT_SYMBOL vmlinux 0xfe26fc7c nr_node_ids +EXPORT_SYMBOL vmlinux 0xfe5d4bb2 sys_tz +EXPORT_SYMBOL vmlinux 0xfe7c4287 nr_cpu_ids +EXPORT_SYMBOL vmlinux 0xfe89eee9 genphy_restart_aneg +EXPORT_SYMBOL vmlinux 0xfe89f916 __frontswap_store +EXPORT_SYMBOL vmlinux 0xfe8f01fb agp_generic_create_gatt_table +EXPORT_SYMBOL vmlinux 0xfe916dc6 hex_dump_to_buffer +EXPORT_SYMBOL vmlinux 0xfe94e78a bio_copy_kern +EXPORT_SYMBOL vmlinux 0xfebba2af nd_btt_probe +EXPORT_SYMBOL vmlinux 0xfebc5c2f nosteal_pipe_buf_ops +EXPORT_SYMBOL vmlinux 0xfedcdb60 seq_hlist_next_percpu +EXPORT_SYMBOL vmlinux 0xfeebc7c4 __kfifo_from_user_r +EXPORT_SYMBOL vmlinux 0xfeff5424 compat_sock_common_getsockopt +EXPORT_SYMBOL vmlinux 0xff1765c7 rtas_call +EXPORT_SYMBOL vmlinux 0xff1d9a47 devm_devfreq_remove_device +EXPORT_SYMBOL vmlinux 0xff1e9dd8 seq_list_start +EXPORT_SYMBOL vmlinux 0xff2087b1 xfrm_policy_unregister_afinfo +EXPORT_SYMBOL vmlinux 0xff210858 default_qdisc_ops +EXPORT_SYMBOL vmlinux 0xff21911e vfs_statfs +EXPORT_SYMBOL vmlinux 0xff22f7ac blk_start_queue +EXPORT_SYMBOL vmlinux 0xff3067d9 jbd2_journal_forget +EXPORT_SYMBOL vmlinux 0xff360ad9 ndisc_mc_map +EXPORT_SYMBOL vmlinux 0xff5223e3 seq_release_private +EXPORT_SYMBOL vmlinux 0xff526a6b kmem_cache_shrink +EXPORT_SYMBOL vmlinux 0xff668255 bd_set_size +EXPORT_SYMBOL vmlinux 0xff6878cf fb_default_cmap +EXPORT_SYMBOL vmlinux 0xff7559e4 ioport_resource +EXPORT_SYMBOL vmlinux 0xff8b2b99 read_cache_pages +EXPORT_SYMBOL vmlinux 0xff8b8f6b mipi_dsi_dcs_set_page_address +EXPORT_SYMBOL vmlinux 0xff931b1f component_match_add +EXPORT_SYMBOL vmlinux 0xff9ca065 fb_edid_to_monspecs +EXPORT_SYMBOL vmlinux 0xffd5a395 default_wake_function +EXPORT_SYMBOL vmlinux 0xffdd3aeb pcim_iomap_regions +EXPORT_SYMBOL vmlinux 0xffe0c368 iw_handler_get_spy +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x0260999a kvmppc_unfixup_split_real +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x038d571a kvm_release_page_clean +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x043abd61 kvmppc_kvm_pv +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x0881c973 kvm_read_guest_atomic +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x0c59cfb0 kvmppc_core_dequeue_dec +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x0f6e1a67 kvm_vcpu_init +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x134c29c0 kvm_vcpu_gfn_to_hva +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x13cbf210 kvm_vcpu_uninit +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x1427c10a kvm_write_guest_cached +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x14dadc3c kvm_put_kvm +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x193dea1b kvm_flush_remote_tlbs +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x1c4ad4b5 __tracepoint_kvm_ppc_instr +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x1d2ebad1 kvm_read_guest_page +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x1d635f20 kvmppc_core_queue_program +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x1e759040 kvm_vcpu_kick +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x207a4257 kvm_get_dirty_log +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x20c709f8 kvm_vcpu_read_guest_atomic +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x20de5193 kvm_disable_largepages +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x22ed7bee kvmppc_load_last_inst +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x236037f7 kvm_io_bus_write +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x23a50911 kvm_vcpu_on_spin +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x27046576 kvm_exit +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x280f59bb gfn_to_hva_memslot +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x2da943e3 kvmppc_book3s_queue_irqprio +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x31c9daf0 gfn_to_pfn_atomic +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x3c800403 kvm_read_guest +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x3db96045 gfn_to_pfn_prot +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x3e1f72e0 kvm_vcpu_cache +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x3e90461f kvm_vcpu_write_guest_page +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x3f5684e3 kvmppc_emulate_mmio +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x40dd54e9 gfn_to_page +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x485cd7f6 kvm_rebooting +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x4970422f kvm_write_guest +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x4c23cedb kvmppc_core_pending_dec +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x4ea06fb3 kvm_release_page_dirty +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x53c182c2 kvm_get_kvm +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x546a2816 __kvm_set_memory_region +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x54f781d6 kvmppc_h_logical_ci_store +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x57c94b71 kvm_vcpu_read_guest +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x594d0b59 kvmppc_rtas_hcall +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x5c870751 kvm_vcpu_gfn_to_pfn +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x631d90a5 kvmppc_hv_ops +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x669da1fd kvm_set_pfn_dirty +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x695e21ea kvmppc_set_msr +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x6fa23d09 kvmppc_handle_load +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x70a18a01 kvmppc_gpa_to_pfn +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x76396165 kvm_set_memory_region +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x78f34f23 kvm_vcpu_read_guest_page +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x7aa64803 kvm_release_pfn_clean +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x7c14de82 kvmppc_sanity_check +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x80507d32 kvm_is_visible_gfn +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x85229d7a kvmppc_ld +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x85a5a4b2 __gfn_to_pfn_memslot +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x89b11f8a kvmppc_prepare_to_enter +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x8da01274 kvm_get_pfn +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x8e1cd06f kvm_set_pfn_accessed +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x935f68dc kvm_write_guest_page +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x944dbe75 gfn_to_pfn_memslot_atomic +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x9a23ac59 kvm_vcpu_gfn_to_pfn_atomic +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0x9f80bde3 kvm_debugfs_dir +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xa2cd7c89 kvmppc_xics_hcall +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xa2e20b28 mark_page_dirty +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xa8e5566b gfn_to_pfn_memslot +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xaaf7de24 gfn_to_hva +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xab59d373 kvmppc_free_lpid +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xacbd001a kvmppc_pr_ops +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xbe531a71 gfn_to_pfn +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xc1964b48 kvm_vcpu_write_guest +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xc581bc40 kvmppc_core_prepare_to_enter +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xc6b60715 kvm_init +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xc70e4b59 kvmppc_claim_lpid +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xcc44961f kvmppc_alloc_lpid +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xcf49613f kvm_vcpu_mark_page_dirty +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xd04cc6ec kvmppc_handle_store +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xd1420c4b kvm_unmap_hva +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xd295cef6 gfn_to_page_many_atomic +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xd84f0f0d kvm_gfn_to_hva_cache_init +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xd8563712 kvm_vcpu_yield_to +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xd8a2cbb8 kvm_vcpu_gfn_to_page +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xe13a2e51 kvmppc_h_logical_ci_load +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xec3bba7c kvm_clear_guest +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xeea040d9 gfn_to_memslot +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xeecdd53f kvmppc_st +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xf208b1a8 kvm_irq_has_notifier +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xf45e90de kvm_clear_guest_page +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xf4da3546 kvmppc_init_lpid +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xf848663b kvmppc_core_queue_dec +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xf928035e kvm_vcpu_block +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm 0xfda9290d kvm_read_guest_cached +EXPORT_SYMBOL_GPL arch/powerpc/kvm/kvm-pr 0xc2558cdc kvmppc_emulate_instruction +EXPORT_SYMBOL_GPL crypto/af_alg 0x18a2b274 af_alg_register_type +EXPORT_SYMBOL_GPL crypto/af_alg 0x2ae25493 af_alg_complete +EXPORT_SYMBOL_GPL crypto/af_alg 0x58716898 af_alg_wait_for_completion +EXPORT_SYMBOL_GPL crypto/af_alg 0x668e1647 af_alg_free_sg +EXPORT_SYMBOL_GPL crypto/af_alg 0x72583be5 af_alg_link_sg +EXPORT_SYMBOL_GPL crypto/af_alg 0xa75161f4 af_alg_release +EXPORT_SYMBOL_GPL crypto/af_alg 0xc5a0c752 af_alg_accept +EXPORT_SYMBOL_GPL crypto/af_alg 0xdaa5a149 af_alg_cmsg_send +EXPORT_SYMBOL_GPL crypto/af_alg 0xef90a7dd af_alg_make_sg +EXPORT_SYMBOL_GPL crypto/af_alg 0xfa008f7f af_alg_unregister_type +EXPORT_SYMBOL_GPL crypto/asymmetric_keys/pkcs7_message 0x1c8f3d8f pkcs7_parse_message +EXPORT_SYMBOL_GPL crypto/asymmetric_keys/pkcs7_message 0x70af7434 pkcs7_validate_trust +EXPORT_SYMBOL_GPL crypto/asymmetric_keys/pkcs7_message 0xbe82ff95 pkcs7_get_content_data +EXPORT_SYMBOL_GPL crypto/asymmetric_keys/pkcs7_message 0xcc45da99 pkcs7_free_message +EXPORT_SYMBOL_GPL crypto/asymmetric_keys/pkcs7_message 0xe9ff17e6 pkcs7_verify +EXPORT_SYMBOL_GPL crypto/async_tx/async_memcpy 0x0ce8aed7 async_memcpy +EXPORT_SYMBOL_GPL crypto/async_tx/async_pq 0x351e2161 async_syndrome_val +EXPORT_SYMBOL_GPL crypto/async_tx/async_pq 0xf01afe2b async_gen_syndrome +EXPORT_SYMBOL_GPL crypto/async_tx/async_raid6_recov 0x2a154ab0 async_raid6_2data_recov +EXPORT_SYMBOL_GPL crypto/async_tx/async_raid6_recov 0xd2a24f15 async_raid6_datap_recov +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0x2f9f62b2 __async_tx_find_channel +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0xf6e6ea67 async_tx_submit +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0xfd0b3934 async_trigger_callback +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0xfecaa5f5 async_tx_quiesce +EXPORT_SYMBOL_GPL crypto/async_tx/async_xor 0x9e66e17f async_xor +EXPORT_SYMBOL_GPL crypto/async_tx/async_xor 0xfb99614c async_xor_val +EXPORT_SYMBOL_GPL crypto/authenc 0x587ef278 crypto_authenc_extractkeys +EXPORT_SYMBOL_GPL crypto/blowfish_common 0x541219e6 blowfish_setkey +EXPORT_SYMBOL_GPL crypto/cast5_generic 0x27278ca9 __cast5_encrypt +EXPORT_SYMBOL_GPL crypto/cast5_generic 0x4a2a3ca6 __cast5_decrypt +EXPORT_SYMBOL_GPL crypto/cast5_generic 0xf7fadc81 cast5_setkey +EXPORT_SYMBOL_GPL crypto/cast6_generic 0x1291971c __cast6_setkey +EXPORT_SYMBOL_GPL crypto/cast6_generic 0x1e2c961f __cast6_decrypt +EXPORT_SYMBOL_GPL crypto/cast6_generic 0x6e42f6c8 cast6_setkey +EXPORT_SYMBOL_GPL crypto/cast6_generic 0x8f04034a __cast6_encrypt +EXPORT_SYMBOL_GPL crypto/cast_common 0x08aa6fb7 cast_s1 +EXPORT_SYMBOL_GPL crypto/cast_common 0x0c5fbf8a cast_s3 +EXPORT_SYMBOL_GPL crypto/cast_common 0xe39dd4b4 cast_s2 +EXPORT_SYMBOL_GPL crypto/cast_common 0xee83a4f3 cast_s4 +EXPORT_SYMBOL_GPL crypto/cryptd 0x49ba3f30 cryptd_aead_child +EXPORT_SYMBOL_GPL crypto/cryptd 0x5ccca4ce cryptd_ahash_child +EXPORT_SYMBOL_GPL crypto/cryptd 0x6f135e5a cryptd_free_ablkcipher +EXPORT_SYMBOL_GPL crypto/cryptd 0x859ae7f1 cryptd_alloc_ahash +EXPORT_SYMBOL_GPL crypto/cryptd 0x9775c705 cryptd_shash_desc +EXPORT_SYMBOL_GPL crypto/cryptd 0xb8debf7e cryptd_ablkcipher_child +EXPORT_SYMBOL_GPL crypto/cryptd 0xd626df64 cryptd_free_ahash +EXPORT_SYMBOL_GPL crypto/cryptd 0xd707259d cryptd_alloc_aead +EXPORT_SYMBOL_GPL crypto/cryptd 0xe8368969 cryptd_alloc_ablkcipher +EXPORT_SYMBOL_GPL crypto/cryptd 0xf933d36a cryptd_free_aead +EXPORT_SYMBOL_GPL crypto/crypto_null 0x21cd536a crypto_put_default_null_skcipher +EXPORT_SYMBOL_GPL crypto/crypto_null 0xd436766a crypto_get_default_null_skcipher +EXPORT_SYMBOL_GPL crypto/des_generic 0xcfd9a2c0 des_ekey +EXPORT_SYMBOL_GPL crypto/des_generic 0xf8c78d49 __des3_ede_setkey +EXPORT_SYMBOL_GPL crypto/lrw 0x3864eb66 lrw_free_table +EXPORT_SYMBOL_GPL crypto/lrw 0xc2a04b63 lrw_crypt +EXPORT_SYMBOL_GPL crypto/lrw 0xcd074900 lrw_init_table +EXPORT_SYMBOL_GPL crypto/mcryptd 0x018f87b1 mcryptd_free_ahash +EXPORT_SYMBOL_GPL crypto/mcryptd 0x315a56c6 shash_ahash_mcryptd_update +EXPORT_SYMBOL_GPL crypto/mcryptd 0x491f0a15 shash_ahash_mcryptd_finup +EXPORT_SYMBOL_GPL crypto/mcryptd 0x5b0bf039 mcryptd_ahash_child +EXPORT_SYMBOL_GPL crypto/mcryptd 0x7d4c59d6 mcryptd_shash_desc +EXPORT_SYMBOL_GPL crypto/mcryptd 0x82f68e7b shash_ahash_mcryptd_digest +EXPORT_SYMBOL_GPL crypto/mcryptd 0x8347667c mcryptd_flusher +EXPORT_SYMBOL_GPL crypto/mcryptd 0x9f229497 mcryptd_alloc_ahash +EXPORT_SYMBOL_GPL crypto/mcryptd 0xac035ce3 shash_ahash_mcryptd_final +EXPORT_SYMBOL_GPL crypto/rsa_generic 0xadc25bd8 rsa_parse_key +EXPORT_SYMBOL_GPL crypto/rsa_generic 0xf1b141d1 rsa_free_key +EXPORT_SYMBOL_GPL crypto/serpent_generic 0x5ddb33e9 __serpent_encrypt +EXPORT_SYMBOL_GPL crypto/serpent_generic 0x77b39cb4 __serpent_setkey +EXPORT_SYMBOL_GPL crypto/serpent_generic 0x8a1a99ad __serpent_decrypt +EXPORT_SYMBOL_GPL crypto/serpent_generic 0xbe27a8ca serpent_setkey +EXPORT_SYMBOL_GPL crypto/twofish_common 0x6c3229bb __twofish_setkey +EXPORT_SYMBOL_GPL crypto/twofish_common 0xcc52a277 twofish_setkey +EXPORT_SYMBOL_GPL crypto/xts 0x8d58d26d xts_crypt +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x1184aa74 ahci_pmp_retry_srst_ops +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x15217e94 ahci_kick_engine +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x338b36df ahci_reset_controller +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x38695c33 ahci_check_ready +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x3a44d1a0 ahci_reset_em +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x3f596a34 ahci_error_handler +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x413c4ae3 ahci_dev_classify +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x63caf518 ahci_shost_attrs +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x6ba5b95b ahci_save_initial_config +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x78ad6d2c ahci_host_activate +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x7a64e101 ahci_do_softreset +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x8ba854ac ahci_em_messages +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x8f2e8996 ahci_stop_engine +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x93f69422 ahci_fill_cmd_slot +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xac6daafa ahci_init_controller +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xd9a168ba ahci_start_fis_rx +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xd9aaf3a2 ahci_set_em_messages +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xdb2c9f35 ahci_ops +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xea50dad3 ahci_ignore_sss +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xf63461ef ahci_port_resume +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xf7cc925c ahci_qc_issue +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xf9aa75b4 ahci_sdev_attrs +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xfa0f2273 ahci_print_info +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xff1ef209 ahci_start_engine +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x0c5d984b ahci_platform_ops +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x2831e376 ahci_platform_resume_host +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x2df7223b ahci_platform_resume +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x4c767308 ahci_platform_disable_resources +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x63cd4bbd ahci_platform_disable_clks +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x6b54e2f9 ahci_platform_suspend +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0x81cd8374 ahci_platform_get_resources +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0xa4e9c818 ahci_platform_enable_clks +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0xa9dd4751 ahci_platform_disable_regulators +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0xadfab5e2 ahci_platform_enable_regulators +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0xb0a2d58e ahci_platform_enable_resources +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0xb0b4bd71 ahci_platform_suspend_host +EXPORT_SYMBOL_GPL drivers/ata/libahci_platform 0xd996398f ahci_platform_init_host +EXPORT_SYMBOL_GPL drivers/ata/pata_platform 0x27657e6f __pata_platform_probe +EXPORT_SYMBOL_GPL drivers/ata/pata_sis 0x479b7f48 sis_info133_for_sata +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-spmi 0x4b245a49 regmap_init_spmi_base +EXPORT_SYMBOL_GPL drivers/base/regmap/regmap-spmi 0x8d2cdbb8 devm_regmap_init_spmi_ext +EXPORT_SYMBOL_GPL drivers/base/regmap/regmap-spmi 0xe7fe4459 devm_regmap_init_spmi_base +EXPORT_SYMBOL_GPL drivers/base/regmap/regmap-spmi 0xebcb8b93 regmap_init_spmi_ext +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x17fe7442 bcma_chipco_b_mii_write +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x21774854 bcma_chipco_gpio_out +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x240d0036 bcma_chipco_pll_read +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x333e63ea bcma_host_pci_up +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x33f26253 __bcma_driver_register +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x3d40c945 bcma_pmu_get_bus_clock +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x410f9a68 bcma_core_enable +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x456a8806 bcma_chipco_get_alp_clock +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x530c3d36 bcma_core_disable +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x55fba343 bcma_chipco_pll_maskset +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x58804ecb bcma_chipco_gpio_control +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x5a77ece1 bcma_chipco_gpio_outen +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x69a99683 bcma_core_pll_ctl +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x701f67b9 bcma_core_pci_power_save +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x74a2d6ab bcma_host_pci_down +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x7da2d5c0 bcma_pmu_spuravoid_pllupdate +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x8256e168 bcma_core_is_enabled +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xa8aa67c0 bcma_core_set_clockmode +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xae3b2dec bcma_find_core_unit +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xb7ae6504 bcma_host_pci_irq_ctl +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xd6050e39 bcma_chipco_regctl_maskset +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xd7aa6550 bcma_chipco_chipctl_maskset +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xe27e91ac bcma_chipco_pll_write +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xf6f4e967 bcma_driver_unregister +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0x1cd2d166 btbcm_initialize +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0x3c16c8dc btbcm_setup_apple +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0x51d937d3 btbcm_finalize +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0x5a846d3e btbcm_set_bdaddr +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0xa1d3f507 btbcm_setup_patchram +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0xcc9b6c10 btbcm_check_bdaddr +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0x619bafe3 btintel_set_bdaddr +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0xb7279a36 btintel_check_bdaddr +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x0467c238 btmrvl_process_event +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x1d616c25 btmrvl_enable_hs +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x3e1330f3 btmrvl_enable_ps +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x3ebe4dbe btmrvl_send_hscfg_cmd +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x3fce3304 btmrvl_register_hdev +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x71441509 btmrvl_interrupt +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x7dc51299 btmrvl_send_module_cfg_cmd +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xcd927008 btmrvl_pscan_window_reporting +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xe9b57414 btmrvl_check_evtpkt +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xf82b6924 btmrvl_add_card +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xfc87092a btmrvl_remove_card +EXPORT_SYMBOL_GPL drivers/bluetooth/btrtl 0x41b6c9e0 btrtl_setup_realtek +EXPORT_SYMBOL_GPL drivers/crypto/nx/nx-compress 0x1fbc4fdb nx842_crypto_exit +EXPORT_SYMBOL_GPL drivers/crypto/nx/nx-compress 0x22a43792 nx842_crypto_decompress +EXPORT_SYMBOL_GPL drivers/crypto/nx/nx-compress 0x383042ff nx842_crypto_init +EXPORT_SYMBOL_GPL drivers/crypto/nx/nx-compress 0x5c2c93d3 nx842_crypto_compress +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0x0f06a83b dw_dma_remove +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0x20e002a9 dw_dma_probe +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0x5cbce33f dw_dma_enable +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0xe97c6a51 dw_dma_disable +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0xf2039894 dw_dma_filter +EXPORT_SYMBOL_GPL drivers/dma/hsu/hsu_dma 0x625623b9 hsu_dma_remove +EXPORT_SYMBOL_GPL drivers/dma/hsu/hsu_dma 0x9d85ef80 hsu_dma_irq +EXPORT_SYMBOL_GPL drivers/dma/hsu/hsu_dma 0xf459d748 hsu_dma_probe +EXPORT_SYMBOL_GPL drivers/dma/virt-dma 0x605e9d43 vchan_init +EXPORT_SYMBOL_GPL drivers/dma/virt-dma 0x8789e7db vchan_dma_desc_free_list +EXPORT_SYMBOL_GPL drivers/dma/virt-dma 0xc77e18e2 vchan_tx_submit +EXPORT_SYMBOL_GPL drivers/dma/virt-dma 0xd73547ea vchan_find_desc +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x088eaf6d edac_device_alloc_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x0b982a32 edac_raw_mc_handle_error +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x0c32ff8a edac_pci_alloc_index +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x0fa6499a edac_pci_free_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x17be71d0 edac_pci_handle_pe +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x25f0aaa3 edac_pci_release_generic_ctl +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x2c8dd6b8 edac_mem_types +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x2e370f6e edac_mc_del_mc +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x44751680 edac_mc_free +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x5e225ffa edac_pci_handle_npe +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x63fd81d5 edac_device_free_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x68da43d9 edac_device_handle_ue +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x6e3ff83a edac_device_alloc_index +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x87894ec5 edac_mc_handle_error +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x92ba748e edac_device_add_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x9a366c9e find_mci_by_dev +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x9d62cfcb edac_pci_add_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xa53aec10 edac_pci_create_generic_ctl +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xb053222a edac_pci_alloc_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xbaef24c4 edac_pci_del_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xbe320941 edac_mc_add_mc_with_groups +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xbeae7a97 edac_mc_find_csrow_by_page +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xc0dcb59e edac_layer_name +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xcc34cc05 edac_mc_alloc +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xcd95cd07 edac_device_handle_ce +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xe05a137c edac_pci_reset_delay_period +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xec34ab6d edac_device_del_device +EXPORT_SYMBOL_GPL drivers/firewire/firewire-core 0xf4ade51f fw_card_release +EXPORT_SYMBOL_GPL drivers/gpio/gpio-generic 0x0e6baf22 bgpio_init +EXPORT_SYMBOL_GPL drivers/gpio/gpio-generic 0xce2861a0 bgpio_remove +EXPORT_SYMBOL_GPL drivers/gpio/gpio-max730x 0x959c3df5 __max730x_remove +EXPORT_SYMBOL_GPL drivers/gpio/gpio-max730x 0x96fcbec4 __max730x_probe +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x222a55d5 of_get_drm_display_mode +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x5dc35442 drm_class_device_register +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x60add22e drm_display_mode_from_videomode +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xb65928a0 drm_do_get_edid +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xcbbd9300 drm_class_device_unregister +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xe8a71cf1 drm_display_mode_to_videomode +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0x01c5385a ttm_dma_populate +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0x6adf436b ttm_prime_fd_to_handle +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0x89f27616 ttm_dma_unpopulate +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0xce36343e ttm_prime_handle_to_fd +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0xfaae2e93 ttm_dma_page_alloc_debugfs +EXPORT_SYMBOL_GPL drivers/hid/hid 0x05495392 hid_debug +EXPORT_SYMBOL_GPL drivers/hid/hid 0x08ecf084 hid_check_keys_pressed +EXPORT_SYMBOL_GPL drivers/hid/hid 0x10a7fd44 hidinput_report_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0x1811b30e hid_destroy_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0x196736ce hid_ignore +EXPORT_SYMBOL_GPL drivers/hid/hid 0x31d053c7 hid_output_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x32ed1eee hid_dump_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x39857ddf hid_register_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x47caa818 hidraw_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x4906a967 hid_snto32 +EXPORT_SYMBOL_GPL drivers/hid/hid 0x4b4039b7 hidinput_count_leds +EXPORT_SYMBOL_GPL drivers/hid/hid 0x4e9890e9 __hid_request +EXPORT_SYMBOL_GPL drivers/hid/hid 0x53274c1e hidinput_get_led_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0x53d86cdd hidraw_report_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0x5d559e15 hid_allocate_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0x5d8996b2 hid_add_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0x6f6cadeb hidinput_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x6ffa2149 hid_set_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0x7eaa4312 hid_report_raw_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0x7eddb1ae hid_resolv_usage +EXPORT_SYMBOL_GPL drivers/hid/hid 0x84128a60 __hid_register_driver +EXPORT_SYMBOL_GPL drivers/hid/hid 0x87c6469b hid_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x8ce9899e hid_unregister_driver +EXPORT_SYMBOL_GPL drivers/hid/hid 0x8d4d37b0 hid_parse_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x8da80d12 hid_debug_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0x95f0d205 hidinput_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0xad0674ce hidinput_calc_abs_res +EXPORT_SYMBOL_GPL drivers/hid/hid 0xb00054f0 hid_input_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0xb06c7ce7 hid_open_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0xbb98243e hid_alloc_report_buf +EXPORT_SYMBOL_GPL drivers/hid/hid 0xc40ccd16 hid_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0xca0ced1c hidraw_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0xe14d0ec1 hid_validate_values +EXPORT_SYMBOL_GPL drivers/hid/hid 0xe71a3c0f hidinput_find_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0xec02a868 hid_dump_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0xedacf51a hid_dump_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0xf7a8324c hid_dump_input +EXPORT_SYMBOL_GPL drivers/hid/hid 0xfa946506 hid_field_extract +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat 0x2f622ea1 roccat_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat 0x3ab8fed6 roccat_connect +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat 0x8c4181ec roccat_report_event +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x1124b4ed roccat_common2_send +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x37ff47c6 roccat_common2_sysfs_read +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x3a93981d roccat_common2_send_with_status +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x565d82d8 roccat_common2_device_init_struct +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x6768ce21 roccat_common2_sysfs_write +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x77a0f88c roccat_common2_receive +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x3579137a sensor_hub_remove_callback +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x5968b1d6 sensor_hub_input_attr_get_raw_value +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x6745f968 sensor_hub_device_close +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x8bba7f7d sensor_hub_set_feature +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x96c806db sensor_hub_device_open +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0xa59f85fe sensor_hub_input_get_attribute_info +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0xd2d3bee1 hid_sensor_get_usage_index +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0xda3a149f sensor_hub_get_feature +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0xde480089 sensor_hub_register_callback +EXPORT_SYMBOL_GPL drivers/hid/usbhid/usbhid 0x01fd453e usbhid_lookup_quirk +EXPORT_SYMBOL_GPL drivers/hid/usbhid/usbhid 0xd6292635 hiddev_hid_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x06edf1c8 hsi_register_port_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x08d3fe14 hsi_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x0aa96754 hsi_add_clients_from_dt +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x10a5be47 hsi_alloc_msg +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x23a842cd hsi_remove_client +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x4ff5c2d1 hsi_async +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x546ab176 hsi_claim_port +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x598b754c hsi_port_unregister_clients +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x9435c957 hsi_unregister_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xa68554ea hsi_register_client_driver +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xab17aa17 hsi_free_msg +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xae1fac8c hsi_unregister_port_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xb6140b5a hsi_get_channel_id_by_name +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xbc1c837e hsi_register_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xe0fd57e0 hsi_new_client +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xe9d0d44e hsi_put_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xefd999f2 hsi_release_port +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xfb16d73d hsi_alloc_controller +EXPORT_SYMBOL_GPL drivers/hwmon/adt7x10 0x15d4f0d6 adt7x10_dev_pm_ops +EXPORT_SYMBOL_GPL drivers/hwmon/adt7x10 0x1c50c29c adt7x10_remove +EXPORT_SYMBOL_GPL drivers/hwmon/adt7x10 0x62e33949 adt7x10_probe +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x016781f7 pmbus_update_byte_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x0a96f935 pmbus_write_word_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x179749c7 pmbus_regulator_ops +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x1d5b247a pmbus_check_byte_register +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x25b721ba pmbus_read_word_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x48687cfc pmbus_read_byte_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x5a77a2e2 pmbus_write_byte_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x5f719f8b pmbus_do_probe +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x60711f70 pmbus_do_remove +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x92890034 pmbus_clear_cache +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xb85d6e7a pmbus_check_word_register +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xba34031c pmbus_get_driver_info +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xdd6d7e4e pmbus_set_page +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xf75254aa pmbus_clear_faults +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xf90a08ca pmbus_write_byte +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x15eaeeef i2c_dw_clear_int +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x1bd686ef i2c_dw_read_comp_param +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x21d51bc3 i2c_dw_is_enabled +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x4c6359cc i2c_dw_enable +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x501817ff i2c_dw_disable_int +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x514129de i2c_dw_xfer +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x551e5f12 i2c_dw_init +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x5af0fefa i2c_dw_func +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x5bb1170b i2c_dw_isr +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x616356ae i2c_dw_disable +EXPORT_SYMBOL_GPL drivers/i2c/i2c-mux 0x483a5c15 i2c_del_mux_adapter +EXPORT_SYMBOL_GPL drivers/i2c/i2c-mux 0xe0d0db91 i2c_add_mux_adapter +EXPORT_SYMBOL_GPL drivers/i2c/i2c-smbus 0x3d2274b5 i2c_setup_smbus_alert +EXPORT_SYMBOL_GPL drivers/i2c/i2c-smbus 0x82082784 i2c_handle_smbus_alert +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x57b598ae ad_sigma_delta_single_conversion +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x63d8b7bf ad_sd_read_reg +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x6df9a219 ad_sd_validate_trigger +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x7bf30171 ad_sd_init +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xa673f7fe ad_sd_set_comm +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xcb1c6dae ad_sd_setup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xcc6e147a ad_sd_calibrate_all +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xcd07bdfc ad_sd_write_reg +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xd18310ad ad_sd_cleanup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/adc/twl4030-madc 0x4362dc66 twl4030_get_madc_conversion +EXPORT_SYMBOL_GPL drivers/iio/adc/twl4030-madc 0xb1be4a75 twl4030_madc_conversion +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x062bc070 adis_update_scan_mode +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x20f0fc80 adis_initial_startup +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x269c3bc1 adis_probe_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x52ac6d2b adis_reset +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x5cb6c741 adis_write_reg +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x60c07748 adis_init +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x70d3bea7 adis_single_conversion +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x8176aecc adis_cleanup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x8692e07a adis_setup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x883e3fd8 adis_check_status +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xbe370b6f adis_remove_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xfb41f63c adis_read_reg +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x04f3418a iio_update_buffers +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x06de465e iio_convert_raw_to_processed +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x1b9a4ef2 iio_read_channel_average_raw +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x23fd6889 devm_iio_device_alloc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x267c0508 iio_channel_release_all_cb +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x26f6b499 iio_str_to_fixpoint +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x2a1fab3c iio_channel_stop_all_cb +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x2a9331fa iio_get_channel_type +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x2dfd54a9 devm_iio_device_unregister +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x4241a90f iio_update_demux +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x462339da iio_buffer_get +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x4f0cd04a iio_alloc_pollfunc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x551c88d3 devm_iio_trigger_alloc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x647598cb iio_map_array_unregister +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x7790465f iio_channel_get_all_cb +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x786528db devm_iio_device_register +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x7a711aef iio_channel_start_all_cb +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x7bc4928f iio_channel_cb_get_channels +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x871746d1 devm_iio_trigger_free +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x8b0d0a4b iio_channel_release +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x8b668371 iio_channel_get +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x92634a84 iio_enum_read +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x9c5e77fe devm_iio_device_free +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xa1bdd9b7 iio_channel_get_all +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xaef05d71 iio_enum_write +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xb3f5c383 iio_read_channel_processed +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xbc46f95f iio_enum_available_read +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xc254d907 iio_write_channel_raw +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xc35c5832 iio_push_to_buffers +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xccd7b5fc iio_map_array_register +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xd84fcc1e iio_dealloc_pollfunc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xdafccd9b iio_channel_release_all +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xe1d02124 iio_validate_scan_mask_onehot +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xe4efba69 iio_read_channel_raw +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xe707f8a6 iio_scan_mask_query +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xf24fe265 iio_buffer_put +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xf514a1de iio_read_channel_scale +EXPORT_SYMBOL_GPL drivers/infiniband/core/ib_core 0xdbd019c4 ib_wq +EXPORT_SYMBOL_GPL drivers/input/ff-memless 0xa023980f input_ff_create_memless +EXPORT_SYMBOL_GPL drivers/input/matrix-keymap 0xe0af43b5 matrix_keypad_parse_of_params +EXPORT_SYMBOL_GPL drivers/input/misc/adxl34x 0x039c3c01 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/touchscreen/cyttsp4_core 0x7f213f24 cyttsp4_probe +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp4_core 0xa28cae5c cyttsp4_pm_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp4_core 0xdf3c50d8 cyttsp4_remove +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_core 0x0a761e7f cyttsp_pm_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_core 0x4d3422ef cyttsp_remove +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_core 0xcc00a23f cyttsp_probe +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_i2c_common 0xb13c59ef cyttsp_i2c_read_block_data +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_i2c_common 0xbf38dbb0 cyttsp_i2c_write_block_data +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x08d49449 wm97xx_reg_write +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x0d76c655 wm97xx_config_gpio +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x15e732ea wm97xx_set_gpio +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x1eceb918 wm97xx_reg_read +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x25447c78 wm9713_codec +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x3a4d2b2c wm97xx_read_aux_adc +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xcd4257a1 wm97xx_set_suspend_mode +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xd6c515b9 wm97xx_get_gpio +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xe227c600 wm97xx_unregister_mach_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xe9ee7ce6 wm9712_codec +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xeaf6d22a wm97xx_register_mach_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xf45061bc wm9705_codec +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x18671f9b ipack_bus_register +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x468d6402 ipack_get_device +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x5fb78ffb ipack_device_del +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x70fba28e ipack_driver_register +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x71984dfb ipack_bus_unregister +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x7bb7de38 ipack_device_add +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x952c68fa ipack_driver_unregister +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0xc3d5d502 ipack_put_device +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0xd49b0c12 ipack_device_init +EXPORT_SYMBOL_GPL drivers/isdn/capi/kernelcapi 0x23359aff unregister_capictr_notifier +EXPORT_SYMBOL_GPL drivers/isdn/capi/kernelcapi 0xce1414b2 register_capictr_notifier +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x057b61a2 gigaset_m10x_send_skb +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x2dbf72e1 gigaset_m10x_input +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x3312e2e9 gigaset_skb_rcvd +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x391b8150 gigaset_initdriver +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x3c2601b5 gigaset_isdn_rcv_err +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x3f6e9b7f gigaset_start +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x454aa44f gigaset_debuglevel +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x4970f214 gigaset_stop +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x8bb01464 gigaset_initcs +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x93fa0323 gigaset_blockdriver +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x9e92c79a gigaset_freedriver +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x9ff5f2b2 gigaset_shutdown +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xa3151853 gigaset_dbg_buffer +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xafa07e2c gigaset_add_event +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xb02bccbe gigaset_handle_modem_response +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xbb2202b2 gigaset_skb_sent +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xf4f0c6de gigaset_fill_inbuf +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xf6966f2e gigaset_if_receive +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xff1715ac gigaset_freecs +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0x504fecae led_classdev_flash_register +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0x6a5a3c53 led_get_flash_fault +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0x78fb5558 led_classdev_flash_unregister +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0xd468a6a3 led_set_flash_brightness +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0xf06bf2ac led_set_flash_timeout +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0xf34f7312 led_update_flash_brightness +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 0x0ddf51e7 wf_get_control +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0x26eeeade wf_unregister_control +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0x2cf097a2 wf_put_control +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0x31d45b49 wf_register_control +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0x3cd1812d wf_unregister_sensor +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0x633f083d wf_get_sensor +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0x75147afa wf_set_overtemp +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0x94765fac wf_critical_overtemp +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0xa2f19a49 wf_is_overtemp +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0xa55b754f wf_find_sensor +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0xbcace2a5 wf_unregister_client +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0xd414622d wf_register_sensor +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0xd68df0c1 wf_find_control +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0xe6ff6a2b wf_put_sensor +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0xed82a14f wf_clear_overtemp +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x21f3dcfa mcb_get_irq +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x2550d437 __mcb_register_driver +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x2edb2586 mcb_bus_put +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x37b5fae0 mcb_request_mem +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x4dfd347f mcb_release_bus +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x6994c429 mcb_bus_get +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x8bf52ac0 mcb_release_mem +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x8c518271 mcb_alloc_dev +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x97593251 chameleon_parse_cells +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x9772d99b mcb_alloc_bus +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0xac221e60 mcb_device_register +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0xbe64cd87 mcb_bus_add_devices +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0xc0ec1706 mcb_free_dev +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0xf56e1d4e mcb_unregister_driver +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x0ec17d44 __tracepoint_bcache_bypass_congested +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x26062738 __tracepoint_bcache_alloc_fail +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x2fc380ce __tracepoint_bcache_invalidate +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x40c27b88 __tracepoint_bcache_cache_insert +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x4c49fc16 __tracepoint_bcache_btree_node_split +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x51a15737 __tracepoint_bcache_btree_set_root +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x616b6217 __tracepoint_bcache_read +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x6907ac0d __tracepoint_bcache_request_end +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x7be42a1c __tracepoint_bcache_journal_replay_key +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x7e532a71 __tracepoint_bcache_btree_cache_cannibalize +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x914361f4 __tracepoint_bcache_journal_entry_full +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x9272fb0f __tracepoint_bcache_read_retry +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x938cc2b2 __tracepoint_bcache_btree_insert_key +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xa649dd21 __tracepoint_bcache_btree_node_alloc +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xb157059f __tracepoint_bcache_gc_copy_collision +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xb317649e __tracepoint_bcache_btree_node_alloc_fail +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xb493772a __tracepoint_bcache_gc_start +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xb834c124 __tracepoint_bcache_btree_write +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xbb1fc0a4 __tracepoint_bcache_journal_full +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xbc4fcb1e __tracepoint_bcache_write +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xc1474d91 __tracepoint_bcache_btree_read +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xc379085a __tracepoint_bcache_bypass_sequential +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xc5aed8ad __tracepoint_bcache_writeback_collision +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xc7eda602 __tracepoint_bcache_btree_node_compact +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xce055cbe __tracepoint_bcache_btree_gc_coalesce +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xe20fe821 __tracepoint_bcache_gc_end +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xe24daf87 __tracepoint_bcache_gc_copy +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xe2ed0930 __tracepoint_bcache_btree_node_free +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xea2303e0 __tracepoint_bcache_journal_write +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xef1156ee __tracepoint_bcache_writeback +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xfc131205 __tracepoint_bcache_request_start +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x0481bae0 dm_cell_release +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x17dd39d6 dm_deferred_set_create +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x29bf1fb0 dm_cell_visit_release +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x2eb01e04 dm_deferred_set_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x39bcff18 dm_cell_promote_or_release +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x4c484f90 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 0x8ab0da15 dm_cell_release_no_holder +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x927c10aa dm_bio_prison_free_cell +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xa9e096e6 dm_bio_prison_alloc_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 0xccff82a4 dm_cell_error +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0xe9f16e09 dm_get_cell +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x0ad0dc4f dm_bufio_mark_buffer_dirty +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x6aba7f5e dm_bufio_get_block_number +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x6d3f57bd dm_bufio_get_client +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 0x9310ba06 dm_bufio_release_move +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x9c256008 dm_bufio_get_device_size +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xa1d2413a dm_bufio_read +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xa448e19f dm_bufio_prefetch +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xa82b2066 dm_bufio_write_dirty_buffers +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xafbda3f3 dm_bufio_new +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xb55e0c4b dm_bufio_client_create +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xc9a3422d dm_bufio_write_dirty_buffers_async +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xcbb1bae2 dm_bufio_get +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xd4bddf5c dm_bufio_issue_flush +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-cache 0x3c96d46b dm_cache_policy_register +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x73f9069d dm_cache_policy_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x8717aaff dm_cache_policy_get_version +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x9b8866a3 dm_cache_policy_get_hint_size +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xc12af784 dm_cache_policy_get_name +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xca17d659 dm_cache_policy_create +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xe0c1fbe3 dm_cache_policy_unregister +EXPORT_SYMBOL_GPL drivers/md/dm-multipath 0x7d5d345e dm_register_path_selector +EXPORT_SYMBOL_GPL drivers/md/dm-multipath 0xc64be74f 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 0x356b87cf dm_rh_dirty_log +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 0x3b57023a dm_region_hash_create +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x4430764e dm_rh_region_to_sector +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x45ab972a 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 0x81a9200b dm_rh_mark_nosync +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x87d170df dm_rh_inc_pending +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xa53387c7 dm_rh_flush +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xa68e1f06 dm_rh_get_state +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xa83588eb dm_rh_recovery_end +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xbd200025 dm_rh_bio_to_region +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 0xebccae53 dm_rh_delay +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xfad9d53a dm_rh_get_region_size +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xfc62ef4e dm_rh_get_region_key +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 0x01445176 dm_btree_find_highest_key +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x0604db1b dm_btree_remove_leaves +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x17c36f29 dm_bm_checksum +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x1e3f728d dm_block_data +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x2025e954 dm_array_info_init +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x24fa6664 dm_bitset_set_bit +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x2c112836 dm_block_location +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 0x32b5f546 dm_array_empty +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 0x3ad0f55b dm_bm_flush +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x40f7bd91 dm_tm_inc +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x42dbdfc3 dm_tm_read_lock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x4360913e dm_btree_find_lowest_key +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x45bdec1a dm_block_manager_create +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x49b35849 dm_sm_disk_create +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x55b4bd4d dm_tm_create_with_sm +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x5aed1dd7 dm_bitset_flush +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x5e6aea80 dm_btree_walk +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x62c1b9ee dm_array_walk +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 0x72289260 dm_block_manager_destroy +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x7657e859 dm_bitset_clear_bit +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 0x80c89b3d dm_tm_unlock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x827a42f4 dm_tm_open_with_sm +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x832bf228 dm_array_del +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x858c8d94 dm_array_set_value +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x89f1e1cc dm_btree_insert_notify +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 0x966a8838 dm_btree_lookup +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 0x9f624559 dm_sm_disk_open +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xa87c5b4d dm_array_resize +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xab96bd2d dm_bitset_test_bit +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xaee02382 dm_btree_empty +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xafeda29f dm_bm_write_lock_zero +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xb7bad799 dm_bm_unlock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xb9a6ecf8 dm_tm_dec +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xba47c03a dm_bitset_del +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xbd50ebbb dm_btree_del +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xca40abd5 dm_btree_insert +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xd041d62b dm_array_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 0xd29923fb dm_tm_shadow_block +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xed1e1f96 dm_btree_remove +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xed58cfa1 dm_bitset_empty +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xf12ec3cd dm_disk_bitset_init +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xf375d009 dm_bm_write_lock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xf5455120 dm_bm_read_lock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xffff2ac3 dm_bitset_resize +EXPORT_SYMBOL_GPL drivers/media/common/b2c2/b2c2-flexcop 0x66c0289a b2c2_flexcop_debug +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x160c7a70 saa7146_pgtable_alloc +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x2dcd5dd1 saa7146_vmalloc_build_pgtable +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x37a4af9d saa7146_vfree_destroy_pgtable +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x402caf17 saa7146_unregister_extension +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x51d0a083 saa7146_setgpio +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x53a13d0e saa7146_pgtable_free +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0x5ef4429b saa7146_register_extension +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xa79e6227 saa7146_pgtable_build_single +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xb7fedfbe saa7146_wait_for_debi_done +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xe3cd9b5c saa7146_debug +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146 0xfe7632a1 saa7146_i2c_adapter_prepare +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x3f1cac38 saa7146_vv_release +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x5d8cbea1 saa7146_stop_preview +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x6d97c881 saa7146_set_hps_source_and_sync +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0x9e61aba5 saa7146_start_preview +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0xa2391fe2 saa7146_vv_init +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0xc696a2b7 saa7146_register_device +EXPORT_SYMBOL_GPL drivers/media/common/saa7146/saa7146_vv 0xdb7740b5 saa7146_unregister_device +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x020f61fa smscore_unregister_device +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x1e5772f8 sms_board_led_feedback +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x21e36bf2 smscore_registry_getmode +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x27205360 smscore_unregister_hotplug +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x37d91069 smsendian_handle_tx_message +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x386acdd9 smscore_getbuffer +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x3e4b5231 smscore_putbuffer +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x45284ae9 smsendian_handle_rx_message +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x5313a6f7 sms_board_setup +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x5a0012eb sms_board_lna_control +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 0x8021d197 smscore_register_device +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x844539ae sms_get_board +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x94d730dc smscore_start_device +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x99a81ab3 smsclient_sendrequest +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x9c2225ed smscore_translate_msg +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x9ecce0af smscore_get_board_id +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xb65599ae smscore_set_board_id +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xbbdb5c42 smscore_unregister_client +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xc578f761 smscore_register_client +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xd5d97358 sms_board_event +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xd711fe41 smscore_get_device_mode +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xe2d13357 sms_board_power +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xf261baf8 smscore_onresponse +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xfb6bda50 smscore_register_hotplug +EXPORT_SYMBOL_GPL drivers/media/dvb-frontends/as102_fe 0x9d35930c as102_attach +EXPORT_SYMBOL_GPL drivers/media/dvb-frontends/cx24117 0x51b128d0 cx24117_attach +EXPORT_SYMBOL_GPL drivers/media/dvb-frontends/tda18271c2dd 0x3aa078cd tda18271c2dd_attach +EXPORT_SYMBOL_GPL drivers/media/media 0x0454ac47 media_entity_remove_links +EXPORT_SYMBOL_GPL drivers/media/media 0x1a7e3c88 media_entity_get +EXPORT_SYMBOL_GPL drivers/media/media 0x353a358e media_entity_cleanup +EXPORT_SYMBOL_GPL drivers/media/media 0x37df095c media_device_unregister +EXPORT_SYMBOL_GPL drivers/media/media 0x3b1ceeeb media_entity_remote_pad +EXPORT_SYMBOL_GPL drivers/media/media 0x41ad3974 media_entity_setup_link +EXPORT_SYMBOL_GPL drivers/media/media 0x4c386c0e media_entity_graph_walk_next +EXPORT_SYMBOL_GPL drivers/media/media 0x63733be1 media_entity_init +EXPORT_SYMBOL_GPL drivers/media/media 0x6fa35f57 media_device_register_entity +EXPORT_SYMBOL_GPL drivers/media/media 0x7a47bdab media_entity_graph_walk_start +EXPORT_SYMBOL_GPL drivers/media/media 0x83852189 __media_entity_remove_links +EXPORT_SYMBOL_GPL drivers/media/media 0x940e6780 media_entity_create_link +EXPORT_SYMBOL_GPL drivers/media/media 0x9bea9203 __media_device_register +EXPORT_SYMBOL_GPL drivers/media/media 0xb8c242aa media_entity_pipeline_start +EXPORT_SYMBOL_GPL drivers/media/media 0xc02928f7 media_entity_find_link +EXPORT_SYMBOL_GPL drivers/media/media 0xc3fad90e media_entity_put +EXPORT_SYMBOL_GPL drivers/media/media 0xcb0d2114 media_entity_pipeline_stop +EXPORT_SYMBOL_GPL drivers/media/media 0xf9bd525c media_device_unregister_entity +EXPORT_SYMBOL_GPL drivers/media/pci/cx88/cx88xx 0x82a1e840 cx88_setup_xc3028 +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x043ba45f mantis_stream_control +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x39454a39 mantis_get_mac +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x3d973802 mantis_ca_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x41b71202 mantis_pci_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x4e2f6273 mantis_gpio_set_bits +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x4f93c4e6 mantis_dma_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x61649692 mantis_i2c_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x66cc4e6e mantis_dvb_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x7c62a3fc mantis_ca_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x80ee80f2 mantis_dvb_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x8746580e mantis_i2c_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x940ae48d mantis_pci_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0x9b491ba9 mantis_input_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xa61c10aa mantis_input_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xa7eab5d1 mantis_frontend_power +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xa9b10a7a mantis_dma_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xbbcc8716 mantis_uart_init +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xd963976c mantis_uart_exit +EXPORT_SYMBOL_GPL drivers/media/pci/mantis/mantis_core 0xefa0df12 mantis_frontend_soft_reset +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x055b73a4 saa7134_vb2_buffer_queue +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x0a3d2e5e saa7134_s_std +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x0bcf2e94 saa7134_s_input +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x1afb9c52 saa7134_ts_buffer_prepare +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x1cf3ed14 saa7134_g_frequency +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x1eb56f44 saa7134_g_input +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x2eb88703 saa7134_s_frequency +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x342e5600 saa7134_g_tuner +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x375b635e saa7134_s_tuner +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x3b8b2959 saa7134_ts_stop_streaming +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x4f24234f saa7134_g_std +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x75d08f1a saa7134_querycap +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x806796e8 saa7134_ts_queue_setup +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x8b13264a saa7134_ts_qops +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0x961bd735 saa7134_querystd +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xc6227f24 saa7134_enum_input +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xdc64acaf saa7134_ts_buffer_init +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xeb7ba607 saa7134_stop_streaming +EXPORT_SYMBOL_GPL drivers/media/pci/saa7134/saa7134 0xf26348f2 saa7134_ts_start_streaming +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x1717fc59 ttpci_budget_init_hooks +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x48d87e43 ttpci_budget_debiwrite +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x58019a4f ttpci_budget_deinit +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x728dc8fd ttpci_budget_init +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x72bcaf13 ttpci_budget_set_video_port +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0x7948c222 budget_debug +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0xc6537594 ttpci_budget_irq10_handler +EXPORT_SYMBOL_GPL drivers/media/pci/ttpci/budget-core 0xdbff4aa4 ttpci_budget_debiread +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0x09e82629 xvip_clr_and_set +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0x0b2585ce xvip_get_format_by_fourcc +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0x271d6f7b xvip_enum_frame_size +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0x38dd447b xvip_init_resources +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0x3c7eb685 xvip_set_format_size +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0x490bd11c xvip_get_format_by_code +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0x7d7f8f3c xvip_of_get_format +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0xd4ecc501 xvip_cleanup_resources +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0xf2d73afc xvip_enum_mbus_code +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0xf85c0061 xvip_clr_or_set +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 0x774ddfbf xvtc_of_get +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-vtc 0xa8a0f912 xvtc_put +EXPORT_SYMBOL_GPL drivers/media/radio/shark2 0xd17eac3e radio_tea5777_init +EXPORT_SYMBOL_GPL drivers/media/radio/shark2 0xd38a7194 radio_tea5777_exit +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x004c7ac7 rc_map_register +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x09d1b758 rc_g_keycode_from_table +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x1706c35f ir_raw_event_set_idle +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x1e48e6c8 ir_raw_event_store_edge +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x1ece2b6e ir_raw_event_store +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x21a9ba90 rc_unregister_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x23ac88f5 ir_raw_event_handle +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x33784753 rc_free_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x4151f44a rc_keydown_notimeout +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x553efb91 rc_core_debug +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x70a7d06d rc_allocate_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x70bb33d0 rc_keyup +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x7da50e47 rc_map_unregister +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x93e43a49 rc_map_get +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x9bb98cf5 rc_keydown +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xa40352c4 rc_open +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xc0daa4a6 rc_close +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xcca2e37f rc_repeat +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xf02eaabf ir_raw_event_store_with_filter +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xfbeda8f0 rc_register_device +EXPORT_SYMBOL_GPL drivers/media/tuners/mt2063 0x859b201f mt2063_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/mt20xx 0x67e8a281 microtune_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/mxl5007t 0xc38b501e mxl5007t_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/r820t 0x88fca808 r820t_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda18271 0x4db4ceee tda18271_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda827x 0xcf22dd65 tda827x_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda8290 0x96a16c73 tda829x_probe +EXPORT_SYMBOL_GPL drivers/media/tuners/tda8290 0xb2f78c9b tda829x_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda9887 0x1a88e7a2 tda9887_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5761 0x671975f9 tea5761_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5761 0x8b4046f1 tea5761_autodetection +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5767 0x471c0837 tea5767_autodetection +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5767 0x8e97dfa7 tea5767_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tuner-simple 0x11506e5a simple_tuner_attach +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x017ea7c7 cx231xx_tuner_callback +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x0e38df89 cx231xx_disable656 +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x1824f44d cx231xx_dev_init +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x1ae25a07 cx231xx_send_gpio_cmd +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x2d339e6a cx231xx_enable656 +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x566d7cc0 cx231xx_init_bulk +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x58ac2c81 cx231xx_uninit_vbi_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x5f423e5c cx231xx_init_vbi_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x6249ca01 cx231xx_uninit_bulk +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x660c29b7 cx231xx_enable_i2c_port_3 +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x86d44af8 cx231xx_set_mode +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x8ec33da9 cx231xx_send_usb_command +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x97b3ab9e cx231xx_get_i2c_adap +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xabbe71b2 is_fw_load +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xb3aaffc2 cx231xx_unmute_audio +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xd68bff2e cx231xx_init_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xdf84f2da cx231xx_capture_start +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xe605dadd cx231xx_dev_uninit +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xe8bea8ae cx231xx_set_alt_setting +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xeeadfa40 cx231xx_uninit_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xf77a755a cx231xx_demod_reset +EXPORT_SYMBOL_GPL drivers/media/usb/dvb-usb-v2/mxl111sf-demod 0xeb45439d mxl111sf_demod_attach +EXPORT_SYMBOL_GPL drivers/media/usb/dvb-usb-v2/mxl111sf-tuner 0x61fe9c30 mxl111sf_tuner_attach +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x0484c726 em28xx_stop_urbs +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x1351abb1 em28xx_write_reg +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x143f6bbd em28xx_audio_setup +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x1c5435a6 em28xx_audio_analog_set +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x23e639a2 em28xx_write_ac97 +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x39447c74 em28xx_find_led +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x423280dd em28xx_alloc_urbs +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x66b8ad36 em28xx_gpio_set +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x6d578f78 em28xx_boards +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x74af63b7 em28xx_read_ac97 +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x7fa2d42f em28xx_write_reg_bits +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x7fc8652c em28xx_tuner_callback +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x8837a7f2 em28xx_toggle_reg_bits +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x8b3c20a0 em28xx_write_regs +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x97ecea32 em28xx_read_reg +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xb462e704 em28xx_init_camera +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xcd75ef7f em28xx_free_device +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xf06b487f em28xx_setup_xc3028 +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xf56c71d5 em28xx_uninit_usb_xfer +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xf6ede6eb em28xx_init_usb_xfer +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xfe76d7fd em28xx_set_mode +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x0425e709 tm6000_set_audio_bitrate +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x2309a6d6 tm6000_xc5000_callback +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x490cfc03 tm6000_set_reg_mask +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x89b611dd tm6000_debug +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0xc973b7d8 tm6000_get_reg +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0xdff8e89d tm6000_tuner_callback +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0xeb5cbdaf tm6000_set_reg +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x01c483a9 v4l2_get_timestamp +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x11777683 v4l2_i2c_new_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x60770a4c v4l2_i2c_subdev_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x813f3de4 v4l2_find_nearest_format +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0xab22c84f v4l2_i2c_new_subdev_board +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0xb1cd02d6 v4l2_i2c_subdev_addr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0xc0fbfcb8 v4l2_spi_subdev_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0xcfc7f924 v4l2_spi_new_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0xf2a353ac v4l2_i2c_tuner_addrs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0xf5ef842e v4l_bound_align_image +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x08982d59 v4l2_match_dv_timings +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x4103badb v4l2_print_dv_timings +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x5491c182 v4l2_enum_dv_timings_cap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x67b8205b v4l2_detect_cvt +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x6f344bb9 v4l2_calc_aspect_ratio +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0xb0891da2 v4l2_dv_timings_presets +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0xdfa5a008 v4l2_valid_dv_timings +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0xf0e1988c v4l2_find_dv_timings_cap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0xf98d0f9d v4l2_detect_gtf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-flash-led-class 0x22953698 v4l2_flash_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-flash-led-class 0xea556b8a v4l2_flash_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x01da591b v4l2_m2m_ioctl_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x029bf9d7 v4l2_m2m_ioctl_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x152c81bb v4l2_m2m_ioctl_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x17366af1 v4l2_m2m_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x17eb0eee v4l2_m2m_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x1b4d7c48 v4l2_m2m_buf_remove +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x226cdfe5 v4l2_m2m_ctx_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x2488cfd2 v4l2_m2m_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x3243871f v4l2_m2m_fop_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x32a12ab0 v4l2_m2m_buf_queue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x442c65a8 v4l2_m2m_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x4741ea35 v4l2_m2m_try_schedule +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x5588d531 v4l2_m2m_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x843ec73d v4l2_m2m_ctx_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x9a07073a v4l2_m2m_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xa259959c v4l2_m2m_ioctl_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xb5b838fa v4l2_m2m_ioctl_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xc376543f v4l2_m2m_ioctl_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xc6fca5ad v4l2_m2m_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xc92e36a8 v4l2_m2m_ioctl_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xc996879c v4l2_m2m_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xce50e59c v4l2_m2m_next_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xd1b1562f v4l2_m2m_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xd574a254 v4l2_m2m_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xdb8a86f2 v4l2_m2m_ioctl_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xdea1b76f v4l2_m2m_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xef6c320c v4l2_m2m_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xf3268172 v4l2_m2m_ioctl_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xf5742d93 v4l2_m2m_fop_mmap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x025e0b5f videobuf_read_one +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x06f8fc5b videobuf_read_stream +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x06fa126f videobuf_queue_cancel +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x0a9b9789 videobuf_waiton +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x14eb61d8 videobuf_read_start +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x27fb7ce1 videobuf_iolock +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x3204a56f videobuf_read_stop +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x415641e1 __videobuf_mmap_setup +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x4f296f28 videobuf_queue_to_vaddr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x6308a5d4 videobuf_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x74753d62 videobuf_mmap_mapper +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x7eb0faae videobuf_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x87cb3b62 videobuf_mmap_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x995df708 videobuf_stop +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x9bb93391 videobuf_alloc_vb +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xc29a3111 videobuf_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xc3ec52e5 videobuf_next_field +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xc660c502 videobuf_queue_is_busy +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xd16a0dcf videobuf_mmap_setup +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xda52dd41 videobuf_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xe31d62e3 videobuf_queue_core_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xe653e06c videobuf_poll_stream +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xeae81246 videobuf_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xfc0d11e8 videobuf_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x138e08ab 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 0x7a8af13d videobuf_to_dma +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0x9afdb870 videobuf_dma_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-dma-sg 0xdd7afefc videobuf_queue_sg_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-vmalloc 0x5ea19063 videobuf_queue_vmalloc_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-vmalloc 0x9eec1092 videobuf_vmalloc_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-vmalloc 0xea8523dc videobuf_to_vmalloc +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x10d3eae0 vb2_ioctl_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x17ae9091 vb2_ioctl_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x18cbd714 vb2_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x1b3d14ab vb2_fop_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x1cfccadd vb2_thread_start +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x2258d502 vb2_ioctl_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x30687857 vb2_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x30ac1436 vb2_ioctl_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x39f2c123 vb2_fop_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x452c168d vb2_discard_done +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x4873d9a8 vb2_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x4a2f3ec3 vb2_plane_cookie +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x4c0e8201 vb2_read +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x582eb4b9 vb2_ioctl_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x66306130 vb2_thread_stop +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x6c9fa28b vb2_ioctl_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x6ecf7835 vb2_ioctl_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x732c9190 _vb2_fop_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x7453c869 vb2_ioctl_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x7944e623 vb2_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x79f07c3f vb2_ops_wait_prepare +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x7b0646ee vb2_fop_write +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x8cf3962a vb2_mmap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x915a52d1 vb2_queue_error +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x926b173c vb2_buffer_done +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x9dc994b7 vb2_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xaaf07659 vb2_wait_for_all_buffers +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xad6bc809 vb2_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xbe55c5cb vb2_write +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xd2d174d1 vb2_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xd5d8743f vb2_ops_wait_finish +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xe08d7901 vb2_queue_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xe1a20929 vb2_ioctl_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xe1aeea63 vb2_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xe2915ee4 vb2_plane_vaddr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xe4354cea vb2_fop_read +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xed419036 vb2_fop_mmap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xf254ea53 vb2_queue_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xf5581a01 vb2_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-contig 0x06adfe81 vb2_dma_contig_memops +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-contig 0xe57f0426 vb2_dma_contig_cleanup_ctx +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-contig 0xe641ff78 vb2_dma_contig_init_ctx +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-sg 0x0311541d vb2_dma_sg_init_ctx +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-sg 0x327424d2 vb2_dma_sg_memops +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-sg 0xd30ec30f vb2_dma_sg_cleanup_ctx +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-memops 0x2115f6cb vb2_put_vma +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-memops 0x87ed25f9 vb2_get_vma +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-memops 0x92a8715d vb2_get_contig_userptr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-memops 0xdf859837 vb2_common_vm_ops +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-vmalloc 0x1132bde1 vb2_vmalloc_memops +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x02224cf2 v4l2_device_unregister +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x0c430c75 v4l2_src_change_event_subscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x0d93751a v4l2_event_unsubscribe_all +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x157cfe86 v4l2_device_put +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x1f021b84 v4l2_fh_del +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x25b5f43c v4l2_src_change_event_subdev_subscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x2943a1ac v4l2_subdev_link_validate_default +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x3f65a338 v4l2_fh_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x4bdda851 v4l2_compat_ioctl32 +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x5c2e5d18 v4l2_device_unregister_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x607ed4a3 v4l2_fh_add +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x60bfd0b3 v4l2_fh_is_singular +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x63dfaac6 v4l2_event_pending +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x72331f4c v4l2_fh_open +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x7521e8cc v4l2_subdev_link_validate +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x884b7d99 v4l2_event_unsubscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x9404b742 v4l2_event_subscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x94a231c5 v4l2_event_queue_fh +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x96f4afd6 v4l2_device_register +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x9e401015 v4l2_device_register_subdev_nodes +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xa6ec94f4 v4l2_event_dequeue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xbd84da05 v4l2_fh_exit +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xd1b6bc2e v4l2_event_queue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xe49937dd v4l2_event_subdev_unsubscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xeaec2bb9 v4l2_fh_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xeb3cf1c5 v4l2_device_register_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xf891860b v4l2_device_set_name +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xfe4203c8 v4l2_device_disconnect +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0x7e5cbe72 pm80x_pm_ops +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0x84d04ee7 pm80x_regmap_config +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0xbceca622 pm80x_init +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0xd99fd720 pm80x_deinit +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0x09f284d0 da9150_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0x3aa2e468 da9150_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0x5273d109 da9150_set_bits +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0xc2d1fa23 da9150_bulk_read +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0xcc07df83 da9150_bulk_write +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x2b0b492e kempld_read16 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x33dc2bfb kempld_get_mutex +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x4b50a82c kempld_release_mutex +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x63672c6e kempld_write8 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x7a0a8bfb kempld_read8 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0xa89d2bc1 kempld_write32 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0xce48288f kempld_read32 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0xdd806269 kempld_write16 +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0x21e2af5b lm3533_write +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0x3c447bbd lm3533_update +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0x89aeea03 lm3533_read +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x2f3503f8 lm3533_ctrlbank_disable +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0xa2626531 lm3533_ctrlbank_set_brightness +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0xa6238891 lm3533_ctrlbank_set_pwm +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0xc25ba99a lm3533_ctrlbank_set_max_current +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0xc80b6937 lm3533_ctrlbank_enable +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0xd3be1836 lm3533_ctrlbank_get_brightness +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0xf98fcdc4 lm3533_ctrlbank_get_pwm +EXPORT_SYMBOL_GPL drivers/mfd/lp3943 0x7d2b39b1 lp3943_read_byte +EXPORT_SYMBOL_GPL drivers/mfd/lp3943 0xc1d91f7e lp3943_update_bits +EXPORT_SYMBOL_GPL drivers/mfd/lp3943 0xc4fd8742 lp3943_write_byte +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x939c4183 mc13xxx_common_init +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x9f148f2f mc13xxx_variant_mc13892 +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0xcda13167 mc13xxx_variant_mc34708 +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0xd0186345 mc13xxx_adc_do_conversion +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0xdfaec40f mc13xxx_variant_mc13783 +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0xec9f0d74 mc13xxx_common_exit +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x5abd1363 pcf50633_free_irq +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x73004f2f pcf50633_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x7c4878e9 pcf50633_write_block +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x7dc17a3d pcf50633_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xbdc6e99c pcf50633_irq_mask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xcbf2f697 pcf50633_irq_mask_get +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xdb46bdde pcf50633_reg_clear_bits +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xeb3d6eea pcf50633_register_irq +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xeec1c5c0 pcf50633_reg_set_bit_mask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xf2a5c358 pcf50633_irq_unmask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xfa42faf9 pcf50633_read_block +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-adc 0x7a96f13d pcf50633_adc_async_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-adc 0xcae9c681 pcf50633_adc_sync_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x27efc144 pcf50633_gpio_set +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x344c9379 pcf50633_gpio_invert_set +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x7814adf9 pcf50633_gpio_invert_get +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0xb64a414b pcf50633_gpio_get +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0xf6b4c0ac pcf50633_gpio_power_supply_set +EXPORT_SYMBOL_GPL drivers/mfd/retu-mfd 0x01a33234 retu_write +EXPORT_SYMBOL_GPL drivers/mfd/retu-mfd 0x4fca3918 retu_read +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x27620c48 rtsx_pci_write_ppbuf +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x38d42f5b rtsx_pci_write_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x3bdd78db rtsx_pci_card_power_off +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x4155c826 rtsx_pci_transfer_data +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x471ec46d rtsx_pci_send_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x4c3ce04c rtsx_pci_dma_unmap_sg +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x4d434c31 rtsx_pci_card_pull_ctl_enable +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x4d498364 rtsx_pci_card_pull_ctl_disable +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x58e94e03 rtsx_pci_card_exclusive_check +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x5d2ffd86 rtsx_pci_card_power_on +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x6082d79e rtsx_pci_add_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x615d3be1 rtsx_pci_send_cmd_no_wait +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x6aa671ab rtsx_pci_card_exist +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x79004ad0 rtsx_pci_dma_transfer +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x94bab88b rtsx_pci_switch_output_voltage +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x969a792c rtsx_pci_write_phy_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xa1e5f756 rtsx_pci_read_ppbuf +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xb4e0533a rtsx_pci_read_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xb811f9ce rtsx_pci_dma_map_sg +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xbf243cd6 rtsx_pci_start_run +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xbfecbdb2 rtsx_pci_read_phy_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xd203b735 rtsx_pci_switch_clock +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xf687ec8e rtsx_pci_complete_unfinished_transfer +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xfa7b77bf rtsx_pci_stop_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x0f8772cb rtsx_usb_send_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x2224a597 rtsx_usb_write_ppbuf +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x26df9c24 rtsx_usb_read_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x37350b90 rtsx_usb_get_card_status +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x42aaac5a rtsx_usb_card_exclusive_check +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x432545fc rtsx_usb_switch_clock +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x443f2c4d rtsx_usb_get_rsp +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x660733b7 rtsx_usb_read_ppbuf +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0xd062b627 rtsx_usb_ep0_read_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0xdb985e52 rtsx_usb_write_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0xe8e86996 rtsx_usb_add_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0xf942b556 rtsx_usb_ep0_write_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0xfca074d7 rtsx_usb_transfer_data +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x03aa1388 si476x_core_cmd_power_down +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x0f06abc7 si476x_core_stop +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x182dc205 si476x_core_cmd_agc_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x2683337c si476x_core_cmd_fm_seek_start +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x41608b5b si476x_core_cmd_fm_phase_diversity +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x60d998bf si476x_core_i2c_xfer +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x617b05e0 si476x_core_cmd_func_info +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x6b4be820 si476x_core_cmd_intb_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x6c879c23 si476x_core_cmd_am_tune_freq +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x6f4f6519 si476x_core_cmd_power_up +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x70af2114 si476x_core_cmd_fm_rds_blockcount +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x7468ec54 si476x_core_has_diversity +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x7bba62c8 si476x_core_cmd_am_rsq_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x846a5757 si476x_core_cmd_zif_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x85dd9c58 si476x_core_cmd_ana_audio_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x935149aa si476x_core_cmd_set_property +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x996a55bc si476x_core_is_a_secondary_tuner +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x9cb5c273 si476x_core_set_power_state +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xa7fdb8d9 si476x_core_cmd_fm_rsq_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xac3bdb92 si476x_core_cmd_fm_phase_div_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xad14f01e si476x_core_cmd_am_seek_start +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xb4c857d4 devm_regmap_init_si476x +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xbdb59983 si476x_core_cmd_fm_acf_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xbe5e5aaa si476x_core_cmd_fm_rds_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xc3ec6a26 si476x_core_cmd_get_property +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xd1061272 si476x_core_is_a_primary_tuner +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xd14c1ef9 si476x_core_cmd_am_acf_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xd3a16fc9 si476x_core_is_powered_up +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xd5c9adcc si476x_core_start +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xe6b0b4f4 si476x_core_has_am +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xef7dd601 si476x_core_cmd_fm_tune_freq +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xf6087265 si476x_core_is_in_am_receiver_mode +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xf699925a si476x_core_cmd_ic_link_gpo_ctl_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xfd65aa88 si476x_core_cmd_dig_audio_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x0e732cc2 sm501_misc_control +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x1448dc09 sm501_modify_reg +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x1c9f192b sm501_unit_power +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x6062eb69 sm501_set_clock +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x8b12722c sm501_find_clock +EXPORT_SYMBOL_GPL drivers/mfd/ti_am335x_tscadc 0x2d8d2cbd am335x_tsc_se_set_cache +EXPORT_SYMBOL_GPL drivers/mfd/ti_am335x_tscadc 0x37061acf am335x_tsc_se_set_once +EXPORT_SYMBOL_GPL drivers/mfd/ti_am335x_tscadc 0x4041b3c5 am335x_tsc_se_adc_done +EXPORT_SYMBOL_GPL drivers/mfd/ti_am335x_tscadc 0x47e00dff am335x_tsc_se_clr +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0x953aed8b tps65217_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0xab7337cf tps65217_set_bits +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0xbc8473de tps65217_clear_bits +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0xd2d55ee2 tps65217_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/tps65218 0x1ab647ce tps65218_set_bits +EXPORT_SYMBOL_GPL drivers/mfd/tps65218 0x282d1ea4 tps65218_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/tps65218 0x9adc957c tps65218_clear_bits +EXPORT_SYMBOL_GPL drivers/mfd/tps65218 0xa168312e tps65218_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/ucb1400_core 0xc9b1b5fd ucb1400_adc_read +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0x13228545 cb710_sg_dwiter_write_next_block +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0x9da9d11b cb710_sg_dwiter_read_next_block +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0xc1749c0e cb710_set_irq_handler +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0xdca9908c cb710_pci_update_config_reg +EXPORT_SYMBOL_GPL drivers/misc/cxl/cxl 0x0a29b03a cxl_dev_context_init +EXPORT_SYMBOL_GPL drivers/misc/cxl/cxl 0x0be04bef cxl_stop_context +EXPORT_SYMBOL_GPL drivers/misc/cxl/cxl 0x10a331bb cxl_start_work +EXPORT_SYMBOL_GPL drivers/misc/cxl/cxl 0x14b9afb3 cxl_pci_to_cfg_record +EXPORT_SYMBOL_GPL drivers/misc/cxl/cxl 0x18e38fa7 cxl_free_afu_irqs +EXPORT_SYMBOL_GPL drivers/misc/cxl/cxl 0x2c5f14aa cxl_get_fd +EXPORT_SYMBOL_GPL drivers/misc/cxl/cxl 0x35896a4d cxl_unmap_afu_irq +EXPORT_SYMBOL_GPL drivers/misc/cxl/cxl 0x3e17f27a cxl_set_master +EXPORT_SYMBOL_GPL drivers/misc/cxl/cxl 0x3e3a4431 cxl_psa_map +EXPORT_SYMBOL_GPL drivers/misc/cxl/cxl 0x4d5995c0 cxl_fd_open +EXPORT_SYMBOL_GPL drivers/misc/cxl/cxl 0x63c60353 cxl_get_phys_dev +EXPORT_SYMBOL_GPL drivers/misc/cxl/cxl 0x644cb044 cxl_fd_read +EXPORT_SYMBOL_GPL drivers/misc/cxl/cxl 0x6592f209 cxl_map_afu_irq +EXPORT_SYMBOL_GPL drivers/misc/cxl/cxl 0x762d8556 cxl_fd_ioctl +EXPORT_SYMBOL_GPL drivers/misc/cxl/cxl 0x7c0fb2c7 cxl_fd_poll +EXPORT_SYMBOL_GPL drivers/misc/cxl/cxl 0x7d8e3311 cxl_allocate_afu_irqs +EXPORT_SYMBOL_GPL drivers/misc/cxl/cxl 0x8740bc47 cxl_psa_unmap +EXPORT_SYMBOL_GPL drivers/misc/cxl/cxl 0x9f662609 cxl_process_element +EXPORT_SYMBOL_GPL drivers/misc/cxl/cxl 0xa9a2fd1d cxl_get_context +EXPORT_SYMBOL_GPL drivers/misc/cxl/cxl 0xad06d977 cxl_release_context +EXPORT_SYMBOL_GPL drivers/misc/cxl/cxl 0xbc3ce6b4 cxl_afu_reset +EXPORT_SYMBOL_GPL drivers/misc/cxl/cxl 0xcb65df71 cxl_perst_reloads_same_image +EXPORT_SYMBOL_GPL drivers/misc/cxl/cxl 0xd20d6f0a cxl_pci_to_afu +EXPORT_SYMBOL_GPL drivers/misc/cxl/cxl 0xd4d4024b cxl_fops_get_context +EXPORT_SYMBOL_GPL drivers/misc/cxl/cxl 0xd74cce0b cxl_start_context +EXPORT_SYMBOL_GPL drivers/misc/cxl/cxl 0xef31bb3b cxl_fd_mmap +EXPORT_SYMBOL_GPL drivers/misc/cxl/cxl 0xf6bad1d4 cxl_fd_release +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0x1a1b5249 oslec_flush +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0x2feda75b oslec_hpf_tx +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0x3227a28e oslec_snapshot +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0x7dc9dddd oslec_adaption_mode +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0xb2c66001 oslec_create +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0xc8b5a524 oslec_free +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0xd370f679 oslec_update +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0x27cb133b eeprom_93cx6_multiread +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0x63d2ff63 eeprom_93cx6_wren +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0x793fc8de eeprom_93cx6_multireadb +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0x822222db eeprom_93cx6_write +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0x98bb5a22 eeprom_93cx6_read +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0xdb9ca14b eeprom_93cx6_readb +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x07aff2b3 enclosure_add_device +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x4336d609 enclosure_find +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x478d891e enclosure_component_alloc +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x7052c1bf enclosure_component_register +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x8d6629d8 enclosure_for_each_device +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0xb1ebcece enclosure_register +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0xf0e5e503 enclosure_remove_device +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0xfa9d39eb enclosure_unregister +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x00169ee0 lis3lv02d_poweron +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x08046dee lis3lv02d_joystick_enable +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x3499decc lis3lv02d_init_device +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x3756b0ad lis3lv02d_init_dt +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x3d992f07 lis3lv02d_remove_fs +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x506ebf43 lis3lv02d_poweroff +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x8091d43b lis3_dev +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xd751f870 lis3lv02d_joystick_disable +EXPORT_SYMBOL_GPL drivers/misc/ti-st/st_drv 0x5d394195 st_unregister +EXPORT_SYMBOL_GPL drivers/misc/ti-st/st_drv 0xda6c558a st_register +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x0b5fbb53 sdhci_alloc_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x17498178 sdhci_send_command +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x1b869034 sdhci_reset +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x1e30be75 sdhci_remove_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x228b4f56 sdhci_add_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x2e9fe526 sdhci_enable_irq_wakeups +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x4ab2376e sdhci_suspend_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x605b657c sdhci_runtime_resume_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x7c1be569 sdhci_set_clock +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xa1175531 sdhci_free_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xc9fa79e3 sdhci_runtime_suspend_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xd22330ef sdhci_set_uhs_signaling +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xea27a969 sdhci_set_bus_width +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xfb902f6b sdhci_resume_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x13b34bf7 sdhci_pltfm_free +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x185a7cc9 sdhci_pltfm_register +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x4e0baf7a sdhci_pltfm_pmops +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x608798cb sdhci_pltfm_suspend +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x6c96007d sdhci_pltfm_clk_get_max_clock +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x6f9556c7 sdhci_get_of_property +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x836081f7 sdhci_pltfm_resume +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x8bb72539 sdhci_pltfm_init +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0xf6ddcdb8 sdhci_pltfm_unregister +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0x091aa76a cfi_cmdset_0001 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0x36338282 cfi_cmdset_0003 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0xcb2da714 cfi_cmdset_0200 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0x5ebf60c9 cfi_cmdset_0701 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0xad46af4f cfi_cmdset_0002 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0xd314e49f cfi_cmdset_0006 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0020 0xb86076f1 cfi_cmdset_0020 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0x65a914bc cfi_qry_mode_on +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0x895294f6 cfi_qry_mode_off +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0x8c3fcf48 cfi_qry_present +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x048254fe unregister_mtd_user +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x089d4703 get_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x0da38f4b mtd_is_locked +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x1d4939e8 mtd_add_partition +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x1fe1ed2c mtd_write_user_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x2084bb02 mtd_get_unmapped_area +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x2290890d mtd_block_isbad +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x25820c8d put_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x2ebeda14 get_mtd_device_nm +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x35b87670 mtd_write +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x3b743a38 register_mtd_user +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x481e1402 mtd_read_user_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x58ef13c1 __get_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x5934f4ff mtd_unlock +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x618a0bdb mtd_kmalloc_up_to +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x69d9c9a2 mtd_block_markbad +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x6d5d57ff mtd_erase +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x7849ff65 mtd_read_oob +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x8cd71352 mtd_table_mutex +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x921f11e2 mtd_unpoint +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xa33141ba register_mtd_parser +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xa5ef1332 mtd_get_fact_prot_info +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xad0e782e mtd_del_partition +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xaf9a394a mtd_device_parse_register +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xb20e03cf mtd_panic_write +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xb6410790 deregister_mtd_parser +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xb6ed522d mtd_erase_callback +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xb9b86534 kill_mtd_super +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xc2f19a01 mtd_device_unregister +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xc815b165 mtd_lock_user_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xd2467a72 mtd_read_fact_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xd32e127d mtd_lock +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xd365c75b mtd_block_isreserved +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xd5d868d0 mtd_is_partition +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xd8beec4e mtd_writev +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xdd979942 mtd_get_device_size +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xe57f9cda __mtd_next_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xed3b8479 mount_mtd +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xee9ae71c mtd_point +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xeec1892c __put_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xf2b1c68e mtd_read +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xf5703a60 mtd_get_user_prot_info +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0x141fd9be deregister_mtd_blktrans +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0x212d89aa register_mtd_blktrans +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0x2af2dbf0 del_mtd_blktrans_dev +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0x6be2f76c mtd_blktrans_cease_background +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0xed3f01ae add_mtd_blktrans_dev +EXPORT_SYMBOL_GPL drivers/mtd/nand/nand 0x99497111 nand_wait_ready +EXPORT_SYMBOL_GPL drivers/mtd/nand/nand 0xfef170b6 nand_release +EXPORT_SYMBOL_GPL drivers/mtd/nand/sm_common 0xce7fa2d4 sm_register_device +EXPORT_SYMBOL_GPL drivers/mtd/onenand/onenand 0x58a84c48 onenand_release +EXPORT_SYMBOL_GPL drivers/mtd/onenand/onenand 0xef138917 onenand_scan +EXPORT_SYMBOL_GPL drivers/mtd/spi-nor/spi-nor 0x5903e57d spi_nor_scan +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x07028232 ubi_leb_write +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x0ad066e1 ubi_close_volume +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x13bb4660 ubi_leb_read_sg +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x1b7aeacf ubi_leb_read +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x3207b8e9 ubi_is_mapped +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x38e10c1d ubi_flush +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x3e9c0a8f ubi_open_volume_path +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x42801d20 ubi_sync +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x488f0b78 ubi_leb_change +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x4d644730 ubi_leb_unmap +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x5150d966 ubi_open_volume_nm +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x5cfdd22d ubi_get_device_info +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x85a8ee76 ubi_unregister_volume_notifier +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x86e8895c ubi_leb_erase +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x91020b11 ubi_get_volume_info +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x9abe1b3d ubi_open_volume +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xd61f8c12 ubi_leb_map +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xeccbfe51 ubi_do_get_device_info +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xf5ee9ba8 ubi_register_volume_notifier +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x0fd5ff57 c_can_power_down +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x116581a6 unregister_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x2bb6f452 free_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x7c2329e8 alloc_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x82b59e96 register_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0xdee058af c_can_power_up +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x222c295a can_len2dlc +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x3ba162d2 alloc_can_err_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x3fd99158 register_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x45f3137f unregister_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x4cfd7a2a can_change_mtu +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x503aca9f can_free_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x517e066a close_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x67d8d92b alloc_can_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x97eaa140 alloc_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x9c6ee0a1 can_get_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x9e7603f3 can_bus_off +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x9faf5c52 free_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xa47ed269 can_led_event +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xb346573b can_dlc2len +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xbedecd96 alloc_canfd_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xe2a250b7 devm_can_led_init +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xe4919c3d safe_candev_priv +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xf1744391 can_put_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xf18e7b29 can_change_state +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xf830c8c0 open_candev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0x3c5688bb unregister_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0x4563b96c register_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0x7b1c7848 alloc_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0xcc48bb13 free_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x0a2acc5a free_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x49ebd0d2 sja1000_interrupt +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x4c834164 register_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x5770b7d5 alloc_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0xd3246bb3 unregister_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/ethernet/arc/arc_emac 0x01c9064f arc_emac_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/arc/arc_emac 0x42b4e3a4 arc_emac_probe +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x01814c1e mlx4_get_internal_clock_params +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0881c72d mlx4_get_counter_stats +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0c6f9a95 mlx4_get_base_qpn +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x10805458 mlx4_map_sw_to_hw_steering_id +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x14dcef9c mlx4_unicast_promisc_add +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x18522ff1 mlx4_update_qp +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x18cab2f0 mlx4_fmr_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1d5f52ca __mlx4_unregister_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1f337819 mlx4_srq_lookup +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x206d479f mlx4_buf_write_mtt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x20a1cc48 mlx4_qp_modify +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2214686d mlx4_phys_to_slaves_pport +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x23222176 mlx4_set_vf_rate +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x24f46d6c mlx4_set_admin_guid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x24fd42db mlx4_phys_to_slaves_pport_actv +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x27052346 mlx4_set_vf_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x29da5fb8 mlx4_SYNC_TPT +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2bbdeab8 mlx4_map_phys_fmr +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x345fba47 mlx4_fmr_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x36710247 mlx4_bond +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3a345a3b mlx4_multicast_detach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3a492d23 mlx4_qp_reserve_range +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3aa7e83e mlx4_flow_detach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3dfbecd2 mlx4_unicast_promisc_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3f917ce5 mlx4_get_slave_default_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x40496190 mlx4_free_cmd_mailbox +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4179060b mlx4_slave_convert_port +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x44e18de6 mlx4_xrcd_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4559d5ad mlx4_get_admin_guid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x45af0bc3 mlx4_alloc_hwq_res +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4bde3d0d mlx4_qp_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4c36e2d8 mlx4_cq_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x518e77ff mlx4_hw_rule_sz +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x52d9e1c7 mlx4_register_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x55efaa34 mlx4_bf_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x55fdd07b mlx4_fmr_enable +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x566b9651 mlx4_read_clock +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x59c9f3c4 mlx4_mw_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5bfce904 mlx4_phys_to_slave_port +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5e3531f3 mlx4_qp_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6197508c mlx4_qp_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x625a589e mlx4_register_interface +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x639ae616 mlx4_srq_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x653f6e72 mlx4_mtt_addr +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6a5ed670 mlx4_wol_read +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6c9d86de mlx4_vf_get_enable_smi_admin +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6ed0c6ef mlx4_ACCESS_PTYS_REG +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x70506adc mlx4_multicast_promisc_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x70803df2 mlx4_buf_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7447cad6 mlx4_fmr_unmap +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x74b566dc mlx4_config_dev_retrieval +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x76bd076e mlx4_get_base_gid_ix +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x76c688ac mlx4_map_sw_to_hw_steering_mode +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x77bf5f72 mlx4_mr_hw_get_mpt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7be264f3 mlx4_mr_hw_put_mpt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x80cb3f3e mlx4_vf_set_enable_smi_admin +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8388ca40 __mlx4_replace_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x84582678 mlx4_get_active_ports +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8503f55e mlx4_qp_release_range +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x85b8b0b9 mlx4_mr_enable +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8936947e mlx4_vf_smi_enabled +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x89b12a24 mlx4_mr_hw_change_access +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x89b4a3fa mlx4_db_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8c0e2edf mlx4_cq_resize +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8c89ecaa mlx4_pd_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8d94ecdc mlx4_flow_attach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8d9f2acd mlx4_mr_rereg_mem_cleanup +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8f015c32 mlx4_set_vf_spoofchk +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x91a7dd0d mlx4_write_mtt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x951cea12 mlx4_port_map_set +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9712b2e4 mlx4_get_vf_stats +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x97fb4433 mlx4_db_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x98ef9ca6 mlx4_counter_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9c360abc mlx4_buf_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9c62367b mlx4_mtt_init +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9d533ed4 __mlx4_cmd +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9d6db395 mlx4_cq_modify +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9fea3462 mlx4_unregister_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa00a9639 mlx4_unicast_detach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa28db8e6 mlx4_find_cached_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa290304f mlx4_get_protocol_dev +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa33eb5fc mlx4_unbond +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa35667af mlx4_unregister_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa651d84f mlx4_multicast_attach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa8f473ea mlx4_uar_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa905c4eb mlx4_bf_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xaa0aac35 __mlx4_register_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xae90d88a mlx4_flow_steer_promisc_add +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb62f41c3 mlx4_set_vf_link_state +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb6aa1fab mlx4_register_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbb362846 mlx4_flow_steer_promisc_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbb79d5b1 mlx4_unregister_interface +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbd247608 mlx4_mr_rereg_mem_write +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbe9210dc mlx4_free_hwq_res +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc127de9e mlx4_uar_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc1e1ef1e mlx4_qp_to_ready +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc4caa8b8 mlx4_get_default_counter_index +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc605edb1 mlx4_CLOSE_PORT +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xca7593c6 mlx4_multicast_promisc_add +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xcbae1c3b mlx4_unicast_attach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xcffd3678 mlx4_config_vxlan_port +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd08e74f7 mlx4_mr_hw_write_mpt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd0923ff6 mlx4_mr_hw_change_pd +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd33549bf mlx4_cq_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd57bffbf mlx4_counter_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd5cfc3f5 mlx4_mw_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd874f75d mlx4_wol_write +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xde9aa8e0 mlx4_mtt_cleanup +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xdf15e699 mlx4_mr_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe2f31e84 mlx4_qp_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe5c05efc mlx4_mw_enable +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe8bc0bb9 mlx4_mr_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xea80b650 mlx4_get_vf_config +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf4a881bb mlx4_FLOW_STEERING_IB_UC_QP_RANGE +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf58d9305 mlx4_find_cached_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf6b55953 mlx4_INIT_PORT +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf7fce858 mlx4_alloc_cmd_mailbox +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf89500f8 mlx4_xrcd_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf9eb0aff mlx4_srq_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xfd4cf6cc mlx4_pd_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xfdc57c57 mlx4_srq_arm +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xfe80d941 mlx4_set_vf_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xff48a3c1 mlx4_srq_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x09543b3d mlx5_fill_page_array +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x09d2dd40 mlx5_core_qp_modify +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x178fb608 mlx5_buf_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x1e98dbf7 mlx5_query_hca_vport_context +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x24236cec mlx5_core_qp_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x2afc27e3 mlx5_buf_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x343a48d4 mlx5_query_port_oper_mtu +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x518b08a8 mlx5_core_destroy_qp +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x55ea0a03 mlx5_set_port_caps +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x5e52c9d4 mlx5_destroy_unmap_eq +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x5ff479f2 mlx5_db_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x62e91ae9 mlx5_set_port_proto +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x64dbff2d mlx5_core_page_fault_resume +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x665d31dc mlx5_core_access_reg +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x6b141bf4 mlx5_query_port_proto_oper +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x6e99966e mlx5_core_eq_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x7f51b036 mlx5_core_xrcd_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x833d34e3 mlx5_query_port_link_width_oper +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x881cf2fa mlx5_db_alloc_node +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x8873815b mlx5_query_port_max_mtu +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x9c2e028d mlx5_query_hca_vport_system_image_guid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xb2a7f0af mlx5_query_hca_vport_pkey +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xb6a89ca3 mlx5_core_mad_ifc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xb6e268d1 mlx5_core_create_qp +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xb6e3c410 mlx5_query_port_proto_cap +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xbaf483d7 mlx5_db_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xcc606f70 mlx5_query_port_proto_admin +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xcd94a359 mlx5_query_port_vl_hw_cap +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xce529a89 mlx5_create_map_eq +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xd1e36638 mlx5_query_port_admin_status +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xdd2acf28 mlx5_query_hca_vport_node_guid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe5de6973 mlx5_set_port_admin_status +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe827d422 mlx5_query_port_ptys +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xeb288343 mlx5_query_hca_vport_gid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xef6f426c mlx5_set_port_mtu +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf6089f32 mlx5_core_xrcd_dealloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac 0x579bddda stmmac_dvr_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac 0x5b03ae0d stmmac_resume +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac 0xd853ee63 stmmac_suspend +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac 0xf9bfc11c stmmac_dvr_probe +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac-platform 0x0bf05e24 stmmac_pltfr_probe +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac-platform 0xaaa70b54 stmmac_pltfr_pm_ops +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac-platform 0xc38e78d0 stmmac_pltfr_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x1b34bfe4 cpsw_ale_del_mcast +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x1db8cfb0 cpsw_ale_del_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x26be3490 cpsw_ale_create +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x5406bcd9 cpsw_ale_flush_multicast +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x64b46e94 cpsw_ale_add_ucast +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x69b0779f cpsw_ale_control_set +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x6c6209f2 cpsw_ale_control_get +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x814d7ce0 cpsw_ale_del_ucast +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0x8a21a9ae cpsw_ale_stop +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0xa2adf227 cpsw_ale_start +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0xa2bf6c0f cpsw_ale_destroy +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0xa7621179 cpsw_ale_dump +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0xc3f7110f cpsw_ale_add_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0xc61003bd cpsw_ale_set_allmulti +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/cpsw_ale 0xfd4fd314 cpsw_ale_add_mcast +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x784916ab macvlan_common_setup +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x8de962f1 macvlan_common_newlink +EXPORT_SYMBOL_GPL drivers/net/macvlan 0xb6b8a08b macvlan_link_register +EXPORT_SYMBOL_GPL drivers/net/macvlan 0xe0b04fec macvlan_dellink +EXPORT_SYMBOL_GPL drivers/net/macvtap 0xe744c8a7 macvtap_get_socket +EXPORT_SYMBOL_GPL drivers/net/phy/mdio-mux 0x6318757f mdio_mux_uninit +EXPORT_SYMBOL_GPL drivers/net/phy/mdio-mux 0xc7acd78f mdio_mux_init +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0x4d6c821e usbnet_cdc_status +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0x7cd82419 usbnet_cdc_bind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0x8dd9d29b usbnet_generic_cdc_bind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0xc663bc7f usbnet_cdc_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x04ca8093 cdc_ncm_tx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x06ffc570 cdc_ncm_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x2b6c75ae cdc_ncm_rx_verify_nth16 +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x4064d0d2 cdc_ncm_rx_verify_ndp16 +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x64939b6a cdc_ncm_bind_common +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0xad54c55f cdc_ncm_rx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0xaeb35752 cdc_ncm_fill_tx_frame +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0xe75a003c cdc_ncm_select_altsetting +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x02e021a0 generic_rndis_bind +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x61d39242 rndis_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0xae03c239 rndis_command +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0xbe01f3b1 rndis_rx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0xd4aea86c rndis_status +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0xf8916207 rndis_tx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x04a7cceb usbnet_tx_timeout +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x13473cfe usbnet_defer_kevent +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x13a0bf48 usbnet_suspend +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x179f4f0b usbnet_update_max_qlen +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x18f73a0e usbnet_probe +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x1ba94c8c usbnet_get_drvinfo +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x2573022c usbnet_unlink_rx_urbs +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x2acafdfd usbnet_set_msglevel +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x2ba92f74 usbnet_change_mtu +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x2cf257f4 usbnet_start_xmit +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x34f0b08a usbnet_resume_rx +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x3bcab8f8 usbnet_get_ethernet_addr +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x3f181b42 usbnet_get_settings +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x41fd76cc usbnet_stop +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x4c05677f usbnet_read_cmd_nopm +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x56485af7 usbnet_status_start +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x5bd2ec47 usbnet_write_cmd_nopm +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x62ac0533 usbnet_get_link +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x64c8bf32 usbnet_write_cmd +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x84d1346e usbnet_purge_paused_rxq +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x8e66f3aa usbnet_status_stop +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x92daf0fb usbnet_nway_reset +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x9870571d usbnet_read_cmd +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x9a05eba7 usbnet_skb_return +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xb0cfb28f usbnet_get_msglevel +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xb7e89dd4 usbnet_get_endpoints +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xc6f9ab37 usbnet_resume +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xc87e9a18 usbnet_disconnect +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xcd48489d usbnet_open +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xdf5c0ba5 usbnet_pause_rx +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xe9a261fc usbnet_set_settings +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xf41fe52c usbnet_write_cmd_async +EXPORT_SYMBOL_GPL drivers/net/vxlan 0x3ea8b2b2 vxlan_get_rx_port +EXPORT_SYMBOL_GPL drivers/net/vxlan 0xd651f658 vxlan_xmit_skb +EXPORT_SYMBOL_GPL drivers/net/vxlan 0xdf72b12c vxlan_sock_add +EXPORT_SYMBOL_GPL drivers/net/vxlan 0xeff2aa76 vxlan_sock_release +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x0171c27b i2400m_setup +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x01b47c49 i2400m_reset +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x0473abac i2400m_tx +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x095a4587 i2400m_dev_reset_handle +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x0c5f0f7e i2400m_dev_bootstrap +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x3963e3ca i2400m_rx +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x4525c1b3 i2400m_tx_msg_get +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x4ecd551b i2400m_pre_reset +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x5aac36d5 i2400m_netdev_setup +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x614727d2 i2400m_release +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xaa8ba5da i2400m_cmd_enter_powersave +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xaf120421 i2400m_is_boot_barker +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xb00b793c i2400m_bm_cmd_prepare +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xb3c4e082 i2400m_init +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xb813d4a1 i2400m_error_recovery +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xdda5eef7 i2400m_tx_msg_sent +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xfe22f2b2 i2400m_post_reset +EXPORT_SYMBOL_GPL drivers/net/wireless/cw1200/cw1200_core 0x0799a80c cw1200_irq_handler +EXPORT_SYMBOL_GPL drivers/net/wireless/cw1200/cw1200_core 0x673cd0b8 cw1200_core_release +EXPORT_SYMBOL_GPL drivers/net/wireless/cw1200/cw1200_core 0xc8698bfa cw1200_can_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/cw1200/cw1200_core 0xfc19be8f cw1200_core_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/ipw2x00/libipw 0x2780674e libipw_rx_any +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0x1f30e905 _il_grab_nic_access +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0x3db4fbbf il_remove_station +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0x535976da il_dealloc_bcast_stations +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0xb87ba161 il_prep_station +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0xce93d08a il_mac_tx_last_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x08f7e885 iwl_read_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x0d556623 iwl_abort_notification_waits +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x0f859899 iwl_poll_bit +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x1291ef1b iwl_init_notification_wait +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x1ac36ff0 iwl_notification_wait_notify +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x1b723815 iwl_read_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x35033c81 iwl_phy_db_free +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x3d548dab iwl_remove_notification +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x43d6dc57 __iwl_dbg +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x46d4e450 __iwl_info +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x49c6943b iwl_set_bits_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x4b8cbdee __iwl_err +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x4e0bd02e iwl_parse_nvm_mcc_info +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x51b51e1b __iwl_warn +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x51b657cd iwlwifi_mod_params +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x5b2e91ad iwl_phy_db_init +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x5c52e109 iwl_opmode_deregister +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x656c12b2 iwl_set_bits_mask_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x71e98545 __iwl_crit +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x776221bf iwl_send_phy_db_data +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x850382f9 iwl_read_direct32 +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0x8c5d5ab3 iwl_phy_db_set_section +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xa52ad79b iwl_poll_direct_bit +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xaa6d08eb iwl_wait_notification +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xbabb5d1f iwl_opmode_register +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xc0649a3f iwl_parse_eeprom_data +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xc5daa602 iwl_parse_nvm_data +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xc67c31ed iwl_notification_wait_init +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xd49053ec iwl_clear_bits_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xd8d56434 iwl_write_prph +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xf01edb8a iwl_write_direct32 +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xf3d63551 iwl_nvm_check_version +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlwifi/iwlwifi 0xffa3a06c iwl_force_nmi +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x0565ba26 lbs_get_firmware_async +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x2e196622 lbs_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x4098a0eb lbs_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x4d17095c lbs_start_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x5dfe14f2 lbs_notify_command_response +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x5fdf38b8 lbs_disablemesh +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x63e88531 lbs_send_tx_feedback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x7d20b879 lbs_queue_event +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x98c75cae __lbs_cmd +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xa14930db lbs_get_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xa26f122a lbs_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xa2b7bcaf lbs_process_rxed_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xb4fd7ad9 lbs_host_to_card_done +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xc930b6f9 lbs_host_sleep_cfg +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xcfd7aed7 lbs_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xd6f53dcf lbs_stop_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xe85c6cec lbs_cmd_copyback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xf64277de lbs_debug +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x1eb6c0b0 __lbtf_cmd +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x51f73196 lbtf_cmd_copyback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x548540d4 lbtf_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x621faeae lbtf_cmd_response_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xaf762e71 lbtf_bcn_sent +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xb0b56740 lbtf_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xc85e6899 lbtf_debug +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xd2af7f23 lbtf_send_tx_feedback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xe7ce4419 lbtf_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x075df9c9 mwifiex_add_virtual_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x07b33fea mwifiex_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x11c91f26 mwifiex_disable_auto_ds +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x31bd9748 mwifiex_alloc_dma_align_buf +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x379869c1 mwifiex_deauthenticate_all +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x3b60a0d0 mwifiex_drv_info_dump +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x451a91e5 mwifiex_handle_rx_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x538e1d35 mwifiex_queue_main_work +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x6846c68c mwifiex_upload_device_dump +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x68d02425 mwifiex_init_shutdown_fw +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x75167f08 mwifiex_process_hs_config +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x7acdfde7 mwifiex_process_sleep_confirm_resp +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x839d4817 mwifiex_cancel_hs +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xa74a67a7 mwifiex_main_process +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xb6c53af8 mwifiex_enable_hs +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xb7019350 mwifiex_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xd55aa272 mwifiex_write_data_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xeb993f56 mwifiex_del_virtual_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x3b45b357 p54_parse_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x48cee207 p54_parse_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x48f19ad4 p54_free_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x78d0b5c5 p54_init_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xba078b58 p54_unregister_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xd48f680c p54_free_skb +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xe2091ebc p54_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xf0927e7c p54_read_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xf6069047 p54_register_common +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0x44f4a389 rsi_91x_deinit +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0x55b9de6a rsi_read_pkt +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0x6b181221 rsi_91x_init +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0x7201b98a rsi_dbg +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0xdb3ca0e5 rsi_zone_enabled +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0xe2f9fa6e rsi_mac80211_detach +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x048d1ae0 rt2800_link_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x0c14497e rt2800_wait_csr_ready +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x0ea51477 rt2800_vco_calibration +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x25a24f6f rt2800_mcu_request +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x2a6bbbfb rt2800_config_filter +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x2f781cd8 rt2800_config_shared_key +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x308e6307 rt2800_write_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x3130b4bd rt2800_probe_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x329c8071 rt2800_set_rts_threshold +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x465f60cf rt2800_get_txwi_rxwi_size +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x4ecb37c0 rt2800_sta_add +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x4ed6ec55 rt2800_sta_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x5a2e9f4d rt2800_load_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x5b45b01f rt2800_ampdu_action +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x5ecf490c rt2800_get_survey +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x5fce887b rt2800_enable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x606bd1bc rt2800_config_ant +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x61db81c7 rt2800_config_pairwise_key +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x660182a5 rt2800_conf_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x7f49bfe3 rt2800_disable_wpdma +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x82f89dd4 rt2800_clear_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x8aaafdf0 rt2800_gain_calibration +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x90bcd74a rt2800_write_tx_data +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x984ab1c2 rt2800_config_erp +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x9d31742f rt2800_config +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xa6746ad7 rt2800_disable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xb357bbe8 rt2800_check_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xb4f6b929 rt2800_efuse_detect +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xbc5a5e23 rt2800_process_rxwi +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xca9848ad rt2800_reset_tuner +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xcc4c8c7a rt2800_wait_wpdma_ready +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xd5cad8bc rt2800_link_tuner +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xd653b3f5 rt2800_get_tsf +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xdefc26da rt2800_get_key_seq +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xe6f0a029 rt2800_txdone_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xe999af34 rt2800_config_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xef381743 rt2800_read_eeprom_efuse +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xff87bd6b rt2800_rfkill_poll +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x0fad1430 rt2800mmio_pretbtt_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x2505789d rt2800mmio_tbtt_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x2d85e1f9 rt2800mmio_write_tx_desc +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x2ebb3f51 rt2800mmio_clear_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x309f9a8a rt2800mmio_get_txwi +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x3d8bd714 rt2800mmio_fill_rxdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x5fa4db64 rt2800mmio_interrupt +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x636f4951 rt2800mmio_stop_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x704b75a8 rt2800mmio_start_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x73cd1537 rt2800mmio_init_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x86dea432 rt2800mmio_toggle_irq +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x91b2a9c1 rt2800mmio_init_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0x92c0bcd1 rt2800mmio_rxdone_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xab3f1772 rt2800mmio_enable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xc6a1455e rt2800mmio_autowake_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xce278c7d rt2800mmio_kick_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xe28f94c7 rt2800mmio_txstatus_tasklet +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xeef8ce59 rt2800mmio_queue_init +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800mmio 0xf0ac6ef3 rt2800mmio_get_entry_state +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x14e819ec rt2x00lib_beacondone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x1832ae8b rt2x00mac_start +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x19b71721 rt2x00mac_tx_frames_pending +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x1a81b9d5 rt2x00lib_dmadone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x1b835d7c rt2x00mac_config +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x269b9690 rt2x00mac_remove_interface +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x2e9bec34 rt2x00queue_unmap_skb +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x2f15f5ae rt2x00mac_get_antenna +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x38ad0247 rt2x00lib_txdone_noinfo +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x4365c9bc rt2x00lib_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x47c6f533 rt2x00mac_sta_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x4ebf99ec rt2x00lib_remove_dev +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x4f80e8c4 rt2x00queue_pause_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x539290bf rt2x00mac_stop +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x6290e415 rt2x00mac_bss_info_changed +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x67b4b064 rt2x00lib_get_bssidx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x768b5942 rt2x00lib_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x78492a0c rt2x00mac_flush +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x7ad60890 rt2x00queue_unpause_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x80d8c7e4 rt2x00queue_get_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x88c8bea4 rt2x00mac_sw_scan_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x9110682b rt2x00queue_start_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x91d2ae56 rt2x00lib_txdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x925b5daa rt2x00lib_rxdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x928d0393 rt2x00mac_configure_filter +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x92d9a40d rt2x00queue_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x972be5e5 rt2x00queue_stop_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x98c5be00 rt2x00mac_sta_add +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x994f1996 rt2x00mac_add_interface +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x9e3acea1 rt2x00mac_set_antenna +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xa2bee22f rt2x00queue_for_each_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xa41408a7 rt2x00mac_set_tim +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xa6c502c8 rt2x00mac_conf_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xb94bf492 rt2x00mac_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xb94ebe25 rt2x00queue_flush_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xbc1cb106 rt2x00lib_probe_dev +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xbcb34691 rt2x00queue_start_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xc65345ad rt2x00queue_stop_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xc662b46e rt2x00mac_sw_scan_start +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xcab720fe rt2x00mac_get_ringparam +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xcfe7dd16 rt2x00mac_set_key +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xd30db270 rt2x00lib_pretbtt +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xd51fc7b0 rt2x00lib_dmastart +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xd9caf7a6 rt2x00mac_get_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xdee3d3ce rt2x00queue_map_txskb +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xeda20196 rt2x00mac_rfkill_poll +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0x0294450e rt2x00mmio_rxdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0x624f3cb2 rt2x00mmio_initialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0x733dc496 rt2x00mmio_uninitialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0xb965c5dc rt2x00mmio_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00mmio 0xd64b5b25 rt2x00mmio_regbusy_read +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0x4efbb83e rt2x00pci_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0x754fb717 rt2x00pci_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0xa936acb9 rt2x00pci_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0xb778eb12 rt2x00pci_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x05f42512 rt2x00usb_vendor_request_buff +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x0c01b11a rt2x00usb_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x56b7affe rt2x00usb_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x5863f300 rt2x00usb_vendor_request +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x90a52e38 rt2x00usb_kick_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x91b30e60 rt2x00usb_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x9b6d1857 rt2x00usb_clear_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xa8aa680b rt2x00usb_uninitialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xa9bda680 rt2x00usb_watchdog +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xb0dfd4ed rt2x00usb_vendor_req_buff_lock +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xb2c70b50 rt2x00usb_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xbda8373b rt2x00usb_disconnect +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xca7898cd rt2x00usb_initialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xcf8ac80c rt2x00usb_disable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xe6b35f02 rt2x00usb_regbusy_read +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xeb7ad619 rt2x00usb_register_read_async +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x1e984d82 dm_savepowerindex +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x422f1153 dm_restorepowerindex +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x8cb20cf3 rtl92c_set_p2p_ps_offload_cmd +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xcd1e4d99 dm_writepowerindex +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x05352a91 rtl8723_phy_pi_mode_switch +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x0fcf2149 rtl8723_fw_block_write +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x16bd4e59 rtl8723_cmd_send_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x20ead094 rtl8723_fw_free_to_go +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x24ee7f87 rtl8723_dm_init_dynamic_txpower +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x2b6daad3 rtl8723_phy_path_adda_on +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x6fee3a6c rtl8723_phy_set_sw_chnl_cmdarray +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x70efdb7f rtl8723ae_firmware_selfreset +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x72af1d59 rtl8723_dm_init_edca_turbo +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x76a06dcf rtl8723_fw_page_write +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x76e85303 rtl8723_phy_rf_serial_read +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x850dbf78 rtl8723_phy_reload_mac_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x88dd3b4f rtl8723_write_fw +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x9309e7f0 rtl8723_enable_fw_download +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x969c4b39 rtl8723be_firmware_selfreset +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0x9a6d2952 rtl8723_download_fw +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xad5aaef4 rtl8723_phy_path_a_fill_iqk_matrix +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xaf4d6d94 rtl8723_phy_calculate_bit_shift +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xb6f6c9d7 rtl8723_dm_init_dynamic_bb_powersaving +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xbbe45c55 rtl8723_phy_init_bb_rf_reg_def +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xc41d3fc9 rtl8723_phy_rf_serial_write +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xc51a13ca rtl8723_phy_save_mac_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xc66c97a9 rtl8723_save_adda_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xce6dac8c rtl8723_phy_set_bb_reg +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xdd504e65 rtl8723_phy_query_bb_reg +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xdeea5324 rtl8723_phy_txpwr_idx_to_dbm +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xec0548b3 rtl8723_phy_mac_setting_calibration +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xf80bb7cf rtl8723_phy_reload_adda_registers +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtl8723com/rtl8723-common 0xfc6340cb rtl8723_phy_path_a_standby +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x0d0b6636 rtl_global_var +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x241dedc1 rtl_tid_to_ac +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x2921a4d4 rtl_btc_status_false +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x6b4de810 rtl_lps_change_work_callback +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x7441e31a rtl_swlps_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x7dcfda72 rtl_dbgp_flag_init +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x7f66a725 rtl_action_proc +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x836e3be5 rtl_attribute_group +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x88f2c046 rtl_is_special_data +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x8b366ae5 rtl_init_rx_config +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x98890396 rtl_deinit_core +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0x9dae8945 rtl_init_core +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xa0158120 rtl_ops +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xa5046dbe rtl_ips_nic_on +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xa596ba2f rtl_recognize_peer +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xae11431e read_efuse_byte +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xb7b758d1 rtl_p2p_info +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xbccceaa8 rtl_deinit_deferred_work +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xe6dc55e1 rtl_tx_mgmt_proc +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xf5ef6afe rtl_beacon_statistic +EXPORT_SYMBOL_GPL drivers/net/wireless/rtlwifi/rtlwifi 0xff90ce02 rtl_deinit_rfkill +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0x1a7b7e48 wl1251_alloc_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0x87a39c6c wl1251_free_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0xf6f0ca52 wl1251_init_ieee80211 +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x00e0e5a8 wlcore_event_roc_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x0440c8d1 wl1271_ps_elp_wakeup +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x05f3fcf6 wl1271_tx_flush +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x121ea121 wlcore_scan_sched_scan_ssid_list +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x19b6db3c wlcore_translate_addr +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x20b179d1 wlcore_set_partition +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x247b6a14 wlcore_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x29627532 wl1271_acx_sleep_auth +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x3d4299bc wl12xx_acx_mem_cfg +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x426c1919 wlcore_cmd_wait_for_event_or_timeout +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x48d808da wlcore_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x5147dcf6 wlcore_event_dummy_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x53dff67d wl12xx_debug_level +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x5924ef8d wl1271_ps_elp_sleep +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x5d35face wl1271_acx_pm_config +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x61d1bc35 wl1271_cmd_send +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x620abff7 wlcore_disable_interrupts +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x67940668 wl1271_cmd_test +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x712e87cf wlcore_boot_run_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x77092dcc wlcore_get_native_channel_type +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x78b8e8d6 wlcore_free_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x7bc2a8ed wlcore_event_max_tx_failure +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x8aa18d0d wlcore_event_sched_scan_completed +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x8ff4cf6d wlcore_boot_upload_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x92c47869 wlcore_disable_interrupts_nosync +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x949cc3c3 wlcore_synchronize_interrupts +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x9b22d46b wlcore_alloc_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x9b4a92c1 wlcore_event_rssi_trigger +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x9ef94a66 wlcore_event_soft_gemini_sense +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xa4124e95 wlcore_set_key +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xa79d0251 wlcore_scan_sched_scan_results +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xabd491ee wl1271_acx_init_mem_config +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xb805a0fa wl1271_format_buffer +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xba5ce041 wlcore_enable_interrupts +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xbc0ed550 wl1271_debugfs_update_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xc3f4f688 wl1271_tx_min_rate_get +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xd44a74be wl1271_acx_set_ht_capabilities +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xd8ef7c98 wlcore_event_inactive_sta +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xdb62432d wlcore_event_beacon_loss +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xdea9c35d wl12xx_cmd_build_probe_req +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xe2771544 wlcore_boot_upload_nvs +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xe574ae98 wlcore_event_ba_rx_constraint +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xe5f3e2fb wlcore_set_scan_chan_params +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xea7425f3 wl1271_cmd_configure +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xeae3d300 wl1271_cmd_data_path +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xf2377f9a wlcore_event_channel_switch +EXPORT_SYMBOL_GPL drivers/nfc/nfcmrvl/nfcmrvl 0x38c58a71 nfcmrvl_nci_register_dev +EXPORT_SYMBOL_GPL drivers/nfc/nfcmrvl/nfcmrvl 0x4f3d4d3e nfcmrvl_nci_unregister_dev +EXPORT_SYMBOL_GPL drivers/nfc/nfcmrvl/nfcmrvl 0x620b7817 nfcmrvl_parse_dt +EXPORT_SYMBOL_GPL drivers/nfc/nfcmrvl/nfcmrvl 0xf4a6dcee nfcmrvl_nci_recv_frame +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x0c0eb538 st_nci_hci_event_received +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x1f5c4863 st_nci_disable_se +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x2f5f6d0c st_nci_remove +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x44ff7452 st_nci_probe +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x970fc82a st_nci_hci_cmd_received +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0xaaead868 st_nci_enable_se +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0xb1411945 st_nci_discover_se +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0xfdc47353 st_nci_hci_load_session +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 0x39e2f0de ntb_transport_create_queue +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 0x5e384b2f ntb_transport_unregister_client +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 0xa89eeebc 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/pci/hotplug/rpaphp 0x01cc7086 rpaphp_slot_head +EXPORT_SYMBOL_GPL drivers/pci/hotplug/rpaphp 0x5d3a6b6e rpaphp_deregister_slot +EXPORT_SYMBOL_GPL drivers/pci/hotplug/rpaphp 0xba6755a4 rpaphp_get_drc_props +EXPORT_SYMBOL_GPL drivers/pci/hotplug/rpaphp 0xd2a3ae68 rpaphp_add_slot +EXPORT_SYMBOL_GPL drivers/power/pcf50633-charger 0x39dc7e1d pcf50633_mbc_get_usb_online_status +EXPORT_SYMBOL_GPL drivers/power/pcf50633-charger 0x6433ad99 pcf50633_mbc_get_status +EXPORT_SYMBOL_GPL drivers/power/pcf50633-charger 0x68a273d0 pcf50633_mbc_usb_curlim_set +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x1b1a7b65 mc13xxx_parse_regulators_dt +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x5ae4e42f mc13xxx_regulator_ops +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x5f8ced14 mc13xxx_fixed_regulator_ops +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x7ab1ed60 mc13xxx_fixed_regulator_set_voltage +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x88a7d2ad mc13xxx_get_num_regulators_dt +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x03298d18 wm8350_ldo_set_slot +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x19002b6c wm8350_register_led +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x636b727b wm8350_register_regulator +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0xa1370e70 wm8350_isink_set_flash +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0xbf1a4bc1 wm8350_dcdc25_set_mode +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0xd204b071 wm8350_dcdc_set_slot +EXPORT_SYMBOL_GPL drivers/regulator/wm8400-regulator 0xa67d618e wm8400_register_regulator +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x083435bb cxgbi_get_conn_stats +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x0c89310a cxgbi_device_portmap_create +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x1419b5e9 cxgbi_cleanup_task +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x19798c02 cxgbi_bind_conn +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x2c48a98a cxgbi_sock_skb_entail +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x367b77a6 cxgbi_ddp_cleanup +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x3a5c4389 cxgbi_ddp_page_size_factor +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x3fa5e414 cxgbi_device_register +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x43c1e924 cxgbi_ddp_init +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x46bb8912 cxgbi_device_find_by_lldev +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x4767ef69 cxgbi_sock_rcv_wr_ack +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x4779f776 cxgbi_device_find_by_netdev +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x4e68feaa cxgbi_ep_connect +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x50633d21 cxgbi_ep_disconnect +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x50f2c21e cxgbi_conn_alloc_pdu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x5830fb55 cxgbi_hbas_remove +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x5946e5ad cxgbi_conn_pdu_ready +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x64f6e4e7 cxgbi_get_host_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x6bf76045 cxgbi_iscsi_cleanup +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x70c8b0bf cxgbi_create_session +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x759ac1bf cxgbi_conn_tx_open +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x79c85bb2 cxgbi_sock_closed +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x7a527bea cxgbi_ddp_ppod_set +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x7fdb6004 cxgbi_device_unregister_all +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x80975cbf cxgbi_sock_select_mss +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x857c69c4 cxgbi_destroy_session +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x88c67ed2 cxgbi_sock_act_open_req_arp_failure +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x8c2ba369 cxgbi_ddp_ppod_clear +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x8e8e1330 cxgbi_sock_established +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x9296efa9 cxgbi_device_portmap_cleanup +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x98166a09 cxgbi_sock_rcv_abort_rpl +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x9f094833 cxgbi_sock_rcv_close_conn_rpl +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x9fec24f1 cxgbi_conn_init_pdu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xa088bff5 cxgbi_set_host_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xa209d069 cxgbi_set_conn_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xa33b5ec2 cxgbi_device_unregister +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xa7657cb9 cxgbi_hbas_add +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xaa0007dd cxgbi_get_ep_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xad923657 cxgbi_sock_rcv_peer_close +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xaf2c87bd cxgbi_create_conn +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xd46e9974 cxgbi_sock_fail_act_open +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xd4f15b93 cxgbi_parse_pdu_itt +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xd7e156cd cxgbi_device_find_by_netdev_rcu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xdbc9803d cxgbi_sock_free_cpl_skbs +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xdcc9c84a cxgbi_sock_check_wr_invariants +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xe923861c cxgbi_iscsi_init +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xef346615 cxgbi_attr_is_visible +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xfa8f5367 cxgbi_sock_purge_wr_queue +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xfdee339d cxgbi_conn_xmit_pdu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xff7d8f1e cxgbi_ep_poll +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x0ee8c205 scsi_dh_activate +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x3bd4fbc9 scsi_register_device_handler +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x593a36c2 scsi_dh_handler_exist +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x74bf9316 scsi_dh_attach +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x8f2553f0 scsi_dh_detach +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x9a4f74f4 scsi_dh_set_params +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0xa43ce310 scsi_dh_attached_handler_name +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0xee685b0e scsi_unregister_device_handler +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x040f567f fcoe_ctlr_get_lesb +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x0453a550 fcoe_fc_crc +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x0fb51275 fcoe_queue_timer +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x196b5687 fcoe_get_paged_crc_eof +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x25fca505 fcoe_validate_vport_create +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x2dfc4347 fcoe_ctlr_device_add +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x374c1e1c fcoe_wwn_from_mac +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x4f58cc7f fcoe_start_io +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x56db494d fcoe_check_wait_queue +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x7900681d fcoe_get_wwn +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x84b3d915 fcoe_wwn_to_str +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x9dbc70b8 fcoe_libfc_config +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x9fd65ee6 fcoe_fcf_device_add +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xa1dbfc91 fcoe_get_lesb +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xb23a297e __fcoe_get_lesb +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xbd8a6ee6 fcoe_link_speed_update +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xc4f3c6bd fcoe_ctlr_device_delete +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xeff5b4d3 fcoe_clean_pending_queue +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xfa21aecd fcoe_fcf_device_delete +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x29e5986f iscsi_boot_create_target +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x3c41409b iscsi_boot_destroy_kset +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x941a1a18 iscsi_boot_create_host_kset +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0xa5271209 iscsi_boot_create_ethernet +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0xcc827bbe iscsi_boot_create_initiator +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0xdab70846 iscsi_boot_create_kset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x090ce068 iscsi_conn_stop +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x09632a1f iscsi_conn_queue_work +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x12b2ad06 iscsi_switch_str_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x15d8a5f1 __iscsi_put_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x180de7ab iscsi_conn_start +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x24de3664 iscsi_verify_itt +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x319def31 iscsi_itt_to_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x3789ce01 iscsi_eh_session_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x3a26094b iscsi_host_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x3bef2f73 iscsi_pool_init +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x405b663d iscsi_complete_scsi_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x45644407 iscsi_conn_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x4e904e39 iscsi_session_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x5c095d3e iscsi_host_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x5d1cece2 iscsi_requeue_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x6112a172 iscsi_host_add +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x67fd971f iscsi_session_recovery_timedout +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x73c0d8d2 iscsi_eh_target_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x76a34d77 iscsi_complete_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x7b709243 iscsi_suspend_tx +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x7d911810 iscsi_itt_to_ctask +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x8d303b1b iscsi_pool_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x91428e75 __iscsi_get_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x9840d7d1 iscsi_session_failure +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x996ebf98 iscsi_conn_send_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x9ec141bd iscsi_session_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x9ecbe360 iscsi_session_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xa12b0964 iscsi_host_remove +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xb21c516d iscsi_update_cmdsn +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xb5462094 iscsi_set_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xba4b1150 iscsi_conn_failure +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xbf8c9136 iscsi_conn_get_addr_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xc36b9324 iscsi_prep_data_out_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xc3e5e08e iscsi_eh_abort +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xc4143c3f iscsi_conn_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xc6a42c14 iscsi_queuecommand +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xc6ccb8dc iscsi_conn_bind +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xc6e49eb5 iscsi_put_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xcafe39a2 iscsi_conn_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xe16be5db iscsi_host_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xec74d7f1 iscsi_host_set_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xedc997b0 iscsi_target_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xf41f9ea3 iscsi_eh_recover_target +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xf9a5e898 iscsi_suspend_queue +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xfbdc283a __iscsi_complete_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xfc5cc85c iscsi_eh_device_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x05061497 iscsi_tcp_r2tpool_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x120528e3 iscsi_tcp_r2tpool_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x28893763 iscsi_tcp_dgst_header +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x2eab7d6e iscsi_tcp_segment_unmap +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x38d27da8 iscsi_segment_init_linear +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x5c2b18a4 iscsi_tcp_task_init +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x6c773f3b iscsi_tcp_segment_done +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x706e3c60 iscsi_tcp_conn_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x709ab507 iscsi_tcp_cleanup_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x7fdfb71c iscsi_tcp_task_xmit +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x892ca5e2 iscsi_tcp_conn_get_stats +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x94f67f8e iscsi_tcp_set_max_r2t +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xd9b2f481 iscsi_tcp_recv_skb +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xe6c2cbd2 iscsi_tcp_conn_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xefa1677c iscsi_segment_seek_sg +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xf2b716cb iscsi_tcp_hdr_recv_prep +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xf635ac7a iscsi_tcp_recv_segment_is_hdr +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x071d84b1 sas_eh_bus_reset_handler +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x17b7e90a sas_target_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x19d402fb sas_task_abort +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x24d602ae sas_ata_schedule_reset +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x2d427cda sas_alloc_slow_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x39595b27 sas_queuecommand +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x4d87b17a sas_slave_configure +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x4ee6ec49 sas_ssp_task_response +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x5d21e9db sas_register_ha +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x6fa0c2aa sas_change_queue_depth +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x786cc2b9 sas_phy_reset +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x7a1349ed sas_get_local_phy +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xa35dd75a sas_ioctl +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xad3b4420 sas_alloc_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xb5b023f1 sas_eh_abort_handler +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xb6cee973 sas_eh_device_reset_handler +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xd200c72a sas_bios_param +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xd7e9fc4d sas_unregister_ha +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xd80f65ef sas_domain_release_transport +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xdea075af sas_domain_attach_transport +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xe16b5aa9 sas_free_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xe7a1bda6 sas_target_destroy +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xe7badae5 sas_drain_work +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xf3ca6f5c sas_request_addr +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x08c22e3e iscsi_create_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x0aac716c iscsi_find_flashnode_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x16696cda iscsi_unblock_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x29858145 iscsi_destroy_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x314fb654 iscsi_create_flashnode_sess +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x396e0183 iscsi_get_port_speed_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x41f57e1f iscsi_destroy_flashnode_sess +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x42cd3403 iscsi_register_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x4eb365f6 iscsi_unregister_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x4f641ed5 iscsi_add_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x55ec7051 iscsi_block_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x57eb4c98 iscsi_conn_error_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x596202df iscsi_scan_finished +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x5f738327 iscsi_flashnode_bus_match +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x64732617 iscsi_block_scsi_eh +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x6868d8c3 iscsi_is_flashnode_conn_dev +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x68eb807e iscsi_post_host_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x699fe53e iscsi_get_discovery_parent_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x75dc6cfa iscsi_free_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x8014cf4d iscsi_offload_mesg +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x8097deca iscsi_find_flashnode_sess +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x84a005f1 iscsi_get_router_state_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x88dadf70 iscsi_lookup_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x8b70f5c7 iscsi_destroy_iface +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x90623901 iscsi_remove_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x944f375e iscsi_create_flashnode_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x9b2d7341 iscsi_create_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x9fb430a8 iscsi_is_session_dev +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xa454d81a iscsi_get_port_state_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xb6038696 iscsi_create_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xbae16cbd iscsi_ping_comp_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xbbecff6b iscsi_alloc_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xbc071179 iscsi_get_ipaddress_state_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xc1a750c7 iscsi_session_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xc43f3d1b iscsi_destroy_all_flashnode +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xc6d95064 iscsi_conn_login_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xcd365ca7 iscsi_session_chkready +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xd240371b iscsi_host_for_each_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xd2e9c13a iscsi_create_iface +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xddea6c91 iscsi_destroy_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xeaa25e64 iscsi_destroy_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xf4511149 iscsi_is_session_online +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xf9431d99 iscsi_recv_pdu +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0x3dc301be sas_tlr_supported +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0x56cb2f39 sas_enable_tlr +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0x5e1a1a96 sas_disable_tlr +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0xb9ded1a3 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 0x2f4cd266 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/ufs/ufshcd 0x37d7607c ufshcd_init +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0xb1bf3981 ufshcd_dme_get_attr +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0xce834fa2 ufshcd_dme_set_attr +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0xfcb94013 ufshcd_remove +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x52a1e818 spi_bitbang_setup +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x72178e47 spi_bitbang_start +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0xc680cad5 spi_bitbang_setup_transfer +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0xc689dacf spi_bitbang_cleanup +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0xe714931e spi_bitbang_stop +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0x1bdaf1e0 dw_spi_suspend_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0xb90958ac dw_spi_add_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0xca5c62c2 dw_spi_remove_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0xe9eafb2f dw_spi_resume_host +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x0aecb1fb spmi_command_shutdown +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x0bba57a2 spmi_ext_register_read +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x189315f8 spmi_device_alloc +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x2d103ba6 spmi_controller_alloc +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x2f035504 spmi_register_read +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x310cd67f spmi_command_sleep +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x335c2107 spmi_ext_register_writel +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x36389336 spmi_driver_register +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x3fa1ea39 spmi_command_wakeup +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x4fabca1d spmi_ext_register_write +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x7474802b spmi_ext_register_readl +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x776d6715 spmi_controller_remove +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x82289f6c spmi_device_add +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xb361b3ac spmi_register_write +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xb3a3ab1f spmi_register_zero_write +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xc4edb0a4 spmi_command_reset +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xd398bd5b spmi_controller_add +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xe0cd8696 spmi_device_remove +EXPORT_SYMBOL_GPL drivers/ssb/ssb 0x3f2a5cf7 ssb_pmu_spuravoid_pllupdate +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x01b89bc8 comedi_load_firmware +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x0cd330f4 range_unknown +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x0f95d7bc comedi_alloc_subdevices +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x172f3553 comedi_auto_unconfig +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x21102f87 range_0_32mA +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x21a1ff7c comedi_dio_insn_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x225dee09 comedi_dev_put +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x2f0ad9d3 range_bipolar5 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x355c8993 comedi_buf_read_free +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x35c57b69 comedi_set_hw_dev +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x371c3b13 comedi_alloc_devpriv +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x4236eaaf range_4_20mA +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x4b0d1ec3 comedi_buf_write_free +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x4b21c192 comedi_buf_read_samples +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x4f3b9f60 comedi_driver_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x4fe634f3 range_bipolar2_5 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x54832a21 comedi_bytes_per_scan +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x60f41423 comedi_event +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x6c31067e comedi_inc_scan_progress +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x75c7dfc9 comedi_legacy_detach +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x7b7b24ee comedi_nscans_left +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x8113872c range_unipolar10 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x8c67db70 comedi_nsamples_left +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x95a0c484 comedi_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x9cec5003 comedi_alloc_subdev_readback +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xa5aa2bfa comedi_buf_read_alloc +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xa9ae419f comedi_dio_update_state +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xb15a1b66 __comedi_request_region +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xb4296b27 comedi_handle_events +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xb601e0e2 comedi_set_spriv_auto_free +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xb679cebc range_0_20mA +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xb744cfd9 comedi_is_subdevice_running +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 0xcebf2b99 comedi_buf_write_alloc +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xcf70f0a4 comedi_buf_write_samples +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xcf89fcce comedi_check_chanlist +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xda74822a comedi_timeout +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xdb2044b2 range_unipolar5 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xe59da7de comedi_readback_insn_read +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xe5c534c0 comedi_auto_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xeb5d6ffe comedi_buf_read_n_available +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xef05c545 comedi_alloc_spriv +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xefd34d5a comedi_dev_get_from_minor +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xf039d4db comedi_request_region +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0x06d0f1e8 comedi_pci_disable +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0x29702822 comedi_to_pci_dev +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0x4541dec4 comedi_pci_auto_unconfig +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0x53b27914 comedi_pci_auto_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0x9448aa34 comedi_pci_detach +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0x9b78eb99 comedi_pci_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0xbdde5b1d comedi_pci_enable +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_pci 0xc8562179 comedi_pci_driver_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0x0a646606 comedi_usb_auto_unconfig +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0x4c7b2e48 comedi_usb_auto_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0xba2fe075 comedi_to_usb_interface +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0xd19240d8 comedi_usb_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0xf81ed799 comedi_usb_driver_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0xffbdcc88 comedi_to_usb_dev +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/addi_watchdog 0x54e77523 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 0x0052f237 amplc_dio200_common_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/amplc_dio200_common 0x4ce496e2 amplc_dio200_set_enhance +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/amplc_pc236_common 0xde727b4b amplc_pc236_common_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x04f296f5 comedi_8254_mm_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x2b36acd8 comedi_8254_pacer_enable +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x45eff1db comedi_8254_ns_to_timer +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x4aaed001 comedi_8254_status +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x57f15617 comedi_8254_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x63bf8159 comedi_8254_cascade_ns_to_timer +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x706f200a comedi_8254_load +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x8957dac9 comedi_8254_subdevice_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x8d9a94f0 comedi_8254_set_mode +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0xa9d19e77 comedi_8254_set_busy +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0xb55ff9f8 comedi_8254_read +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0xe2bec340 comedi_8254_write +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0xe754443a comedi_8254_update_divisors +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8255 0x5bf78c81 subdev_8255_regbase +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8255 0x93075f5a subdev_8255_mm_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8255 0xca9cfe9b subdev_8255_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_isadma 0x0d68fcd9 comedi_isadma_poll +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_isadma 0x12fba874 comedi_isadma_disable +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_isadma 0x2e0e262b comedi_isadma_alloc +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_isadma 0x4a17474e comedi_isadma_disable_on_sample +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_isadma 0x6815a033 comedi_isadma_free +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_isadma 0xa3d01a85 comedi_isadma_program +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_isadma 0xa7ebb8a3 comedi_isadma_set_mode +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/das08 0x8dc6a03f das08_common_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x035daf40 mite_prep_dma +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x0b5db811 mite_sync_input_dma +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x2f284fdb mite_alloc +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x4f3e79c7 mite_dma_tcr +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x6b7b646d mite_buf_change +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x74452558 mite_bytes_written_to_memory_ub +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x79eb413b mite_detach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x7c7ebe53 mite_bytes_written_to_memory_lb +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x7e242a66 mite_free_ring +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x8a85ce34 mite_release_channel +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x936cc88f mite_done +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x97091a17 mite_bytes_in_transit +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0x977b84d2 mite_dma_disarm +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xa58efd1f mite_request_channel_in_range +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xac9bc059 mite_sync_output_dma +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xaea6ec46 mite_get_status +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xdaa2dafb mite_dma_arm +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xe6f364cd mite_bytes_read_from_memory_ub +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xeec8ffc6 mite_bytes_read_from_memory_lb +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xf3c5908b mite_setup2 +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/mite 0xf63e1568 mite_alloc_ring +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_common 0x103516da labpc_common_detach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_common 0x196c0a26 labpc_common_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_isadma 0x0456f365 labpc_drain_dma +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_isadma 0x539a1c80 labpc_setup_dma +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_isadma 0x5b55c008 labpc_free_dma_chan +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_isadma 0xb59f3430 labpc_handle_dma_status +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_isadma 0xdc6e3921 labpc_init_dma_chan +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x60ab7608 ni_tio_init_counter +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x66a88361 ni_gpct_device_construct +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x7e92b24f ni_tio_arm +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x7f881b95 ni_tio_insn_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x8a0298ea ni_tio_set_gate_src +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0xa68bee48 ni_tio_insn_read +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0xee34293e ni_gpct_device_destroy +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0xfa758483 ni_tio_insn_write +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0x43634633 ni_tio_acknowledge +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0x6f5cea3f ni_tio_set_mite_channel +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0x9ae677df ni_tio_handle_interrupt +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0xb96a4e37 ni_tio_cmdtest +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0xdf1c898f ni_tio_cmd +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0xf0dfadc8 ni_tio_cancel +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x095b00f6 comedi_get_n_channels +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x16a9e553 comedi_dio_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x243d5c09 comedi_find_subdevice_by_type +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x37a51949 comedi_dio_get_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x7d5c7975 comedi_open +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x88a77daf comedi_close +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0xa65097ef comedi_dio_bitfield2 +EXPORT_SYMBOL_GPL drivers/staging/iio/addac/adt7316 0x7ef9c26f adt7316_pm_ops +EXPORT_SYMBOL_GPL drivers/staging/lustre/lustre/obdclass/obdclass 0x58aabe1a lustre_kobj +EXPORT_SYMBOL_GPL drivers/staging/lustre/lustre/obdclass/obdclass 0x71c4db07 lustre_sysfs_ops +EXPORT_SYMBOL_GPL drivers/staging/lustre/lustre/obdclass/obdclass 0x9c9f5b4e lustre_attr_show +EXPORT_SYMBOL_GPL drivers/staging/lustre/lustre/obdclass/obdclass 0xb74f924e debugfs_lustre_root +EXPORT_SYMBOL_GPL drivers/staging/lustre/lustre/obdclass/obdclass 0xf27817aa lustre_attr_store +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x0e81c76d spk_serial_out +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x0ef1d765 speakup_info +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x14f06fe7 spk_serial_in_nowait +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x3578bf42 spk_synth_flush +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 0x475e158a synth_request_region +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x49e2ae61 spk_synth_is_alive_nop +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x4cb8b303 spk_var_show +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x4fb2ecf7 spk_var_store +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x65219467 spk_serial_synth_probe +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x6ae15e41 synth_add +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x7d734729 spk_synth_immediate +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x8e146195 synth_release_region +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x9a888082 synth_buffer_getc +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xa13dff24 spk_do_catch_up +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xb35aaab9 speakup_event +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xb48956f8 synth_buffer_peek +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xbbd15a51 speakup_start_ttys +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xc2bfe2e4 synth_remove +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xc56f2ec7 spk_synth_is_alive_restart +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xc766ae09 synth_printf +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xd1b551a2 spk_get_var +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xe7cd4558 spk_serial_release +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xe7e810f8 spk_serial_in +EXPORT_SYMBOL_GPL drivers/tty/n_tracesink 0x585ebaac n_tracesink_datadrain +EXPORT_SYMBOL_GPL drivers/uio/uio 0x07bf85cf uio_event_notify +EXPORT_SYMBOL_GPL drivers/uio/uio 0x60c78887 __uio_register_device +EXPORT_SYMBOL_GPL drivers/uio/uio 0xdb090af1 uio_unregister_device +EXPORT_SYMBOL_GPL drivers/usb/atm/usbatm 0x6407d874 usbatm_usb_disconnect +EXPORT_SYMBOL_GPL drivers/usb/atm/usbatm 0x9a041304 usbatm_usb_probe +EXPORT_SYMBOL_GPL drivers/usb/chipidea/ci_hdrc 0xb1d857c7 ci_hdrc_remove_device +EXPORT_SYMBOL_GPL drivers/usb/chipidea/ci_hdrc 0xd19bcbcf ci_hdrc_add_device +EXPORT_SYMBOL_GPL drivers/usb/chipidea/usbmisc_imx 0x5eceb60a imx_usbmisc_set_wakeup +EXPORT_SYMBOL_GPL drivers/usb/chipidea/usbmisc_imx 0x8eab81a3 imx_usbmisc_init_post +EXPORT_SYMBOL_GPL drivers/usb/chipidea/usbmisc_imx 0xbdac1bb0 imx_usbmisc_init +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0x04a1fc72 ulpi_write +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0x4348a1b0 ulpi_register_interface +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0x6d9e7b0a ulpi_unregister_driver +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0xafc96875 ulpi_unregister_interface +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0xbbbec194 ulpi_register_driver +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0xfee5c9e2 ulpi_read +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x0f21f3da gether_get_qmult +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x216fd58a gether_get_host_addr_u8 +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x327cca43 gether_setup_name_default +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x4746265a gether_register_netdev +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x671eb1b1 gether_set_gadget +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x675c1671 gether_disconnect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x6b7503a1 gether_set_dev_addr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x7ab6c00c gether_get_ifname +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x8878cfa6 gether_cleanup +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x9309450c gether_set_host_addr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0x97d5b40d gether_setup_name +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xaa42b667 gether_get_dev_addr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xda4a2739 gether_get_host_addr_cdc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xe39b5cf7 gether_get_host_addr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xf5082e08 gether_set_qmult +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_ether 0xfdec3294 gether_connect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0x0fb5b13d gserial_connect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0x33141c33 gserial_disconnect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0x33bfdca2 gserial_alloc_line +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0x89263781 gs_free_req +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0xb6652875 gserial_free_line +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/u_serial 0xf9e5ceeb gs_alloc_req +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_fs 0x02878ea0 ffs_lock +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_fs 0x654b36fa ffs_name_dev +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_fs 0xaf175149 ffs_single_dev +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x0a5230df fsg_common_set_nluns +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x0d5de7c9 fsg_show_file +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 0x174d757a fsg_show_cdrom +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x1b1cc3af store_cdrom_address +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 0x2d10b6a7 fsg_common_create_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 0x423845e4 fsg_ss_bulk_in_comp_desc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x423d414f fsg_store_file +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x471be22f fsg_store_cdrom +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x51707c29 fsg_common_run_thread +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x53dd4035 fsg_store_removable +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 0x58953535 fsg_lun_fsync_sub +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x59399b13 fsg_store_ro +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x68782318 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 0x7117462a fsg_show_nofua +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x791e0feb 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 0x7f0e9e3e fsg_show_ro +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 0x95cffb3e fsg_hs_bulk_in_desc +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0x99023bfc fsg_common_put +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 0x9dc025a5 fsg_common_free_luns +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xa2573405 fsg_store_nofua +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xa46e6443 fsg_common_get +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 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 0xc59eb294 fsg_show_removable +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xd3ae3b65 fsg_common_create_luns +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xd468f882 fsg_common_set_ops +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xe4d1591e fsg_config_from_params +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_mass_storage 0xea1153b8 fsg_common_remove_lun +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 0xfebd4e68 fsg_common_set_cdev +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x08324c8e rndis_add_hdr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x1f1cf83a rndis_msg_parser +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x32109d07 rndis_signal_connect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x33cb467f rndis_set_param_dev +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x343d8c6a rndis_set_param_vendor +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x487b40ae rndis_set_host_mac +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x7f970dd0 rndis_deregister +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x80da7452 rndis_rm_hdr +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x8546834a rndis_free_response +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0x9a726359 rndis_register +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xbc8a092e rndis_set_param_medium +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xbf07001a rndis_signal_disconnect +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xc71860ea rndis_uninit +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xcc6ab566 rndis_get_next_response +EXPORT_SYMBOL_GPL drivers/usb/gadget/function/usb_f_rndis 0xde12d713 rndis_borrow_net +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x0a9633ba usb_get_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x0f97fd29 config_ep_by_speed +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x19dbd1a4 usb_assign_descriptors +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x19f775eb usb_string_ids_n +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x1ae94353 usb_free_all_descriptors +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x275bd287 usb_interface_id +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x2e09263f usb_copy_descriptors +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x2f6d9bad usb_function_unregister +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x3457ee0b usb_function_activate +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x58ee32dc usb_composite_unregister +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x6b7b90a0 usb_function_register +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x755c4a70 usb_ep_autoconfig_reset +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x8eb0d5a8 unregister_gadget_item +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0x94d7075a usb_gadget_get_string +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xa073382d alloc_ep_req +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xa4234b19 usb_function_deactivate +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xa793a035 usb_add_config +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xa8143c26 usb_string_ids_tab +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xa95794df usb_string_id +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xbf4163c5 usb_ep_autoconfig_ss +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xbfedaea7 usb_put_function_instance +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xc1af1f79 usb_composite_setup_continue +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xc67ad266 usb_ep_autoconfig +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xca4266a2 usb_composite_overwrite_options +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xcc08ec34 usb_gstrings_attach +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xccef4f68 usb_get_function_instance +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xd1a7715f usb_add_config_only +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xd2ea2134 usb_descriptor_fillbuf +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xe25551eb usb_remove_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xe598c88d usb_put_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xecc3b583 usb_add_function +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xf474a207 usb_gadget_config_buf +EXPORT_SYMBOL_GPL drivers/usb/gadget/libcomposite 0xfd7afe76 usb_composite_probe +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x082bc205 usb_add_gadget_udc +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x0b0ba066 usb_gadget_map_request +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x125d8606 usb_gadget_udc_reset +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x1357a631 usb_gadget_probe_driver +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x352cf494 usb_gadget_giveback_request +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x3ac5c5a4 usb_udc_vbus_handler +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x648ea81e usb_add_gadget_udc_release +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x866c733d usb_gadget_set_state +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0x8b5a47a4 usb_gadget_unmap_request +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0xab96ef2f usb_gadget_unregister_driver +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0xc6aa1632 usb_del_gadget_udc +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc/udc-core 0xf5c6ca50 usb_udc_attach_driver +EXPORT_SYMBOL_GPL drivers/usb/misc/ezusb 0x1b78c00e ezusb_fx1_ihex_firmware_download +EXPORT_SYMBOL_GPL drivers/usb/misc/ezusb 0xfa031c81 ezusb_fx1_set_reset +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x4f6b40dc usb_ftdi_elan_write_pcimem +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x5c844314 usb_ftdi_elan_read_pcimem +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x60148ec1 usb_ftdi_elan_edset_empty +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x6627e217 usb_ftdi_elan_edset_flush +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x94021745 ftdi_elan_gone_away +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xc4f9a112 usb_ftdi_elan_edset_output +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xd1f4ce2e usb_ftdi_elan_edset_input +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xe5dceee9 usb_ftdi_elan_edset_single +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xfa1b1c3c usb_ftdi_elan_edset_setup +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0x0892ae1a musb_writew +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0x56d31820 musb_writel +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0x72234dd6 musb_readw +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0x96919667 musb_readl +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0xac5f3d70 musb_readb +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0xcb32cb36 musb_writeb +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0xeea342c7 musb_interrupt +EXPORT_SYMBOL_GPL drivers/usb/phy/phy-isp1301 0xd1b215aa isp1301_get_client +EXPORT_SYMBOL_GPL drivers/usb/serial/usb_wwan 0x4ca666ce usb_wwan_port_probe +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x27ec51c2 usb_serial_generic_write +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x2ce8bf45 usb_serial_generic_chars_in_buffer +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x2defbd44 usb_serial_generic_wait_until_sent +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x3641d326 usb_serial_generic_resume +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x37b35a85 usb_serial_generic_get_icount +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x4876687e usb_serial_generic_unthrottle +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x4dd55b62 usb_serial_port_softint +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x5f847df4 usb_serial_handle_sysrq_char +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x687015b7 usb_serial_generic_close +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x68e1ead0 usb_serial_generic_open +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x6b183a04 usb_serial_generic_write_bulk_callback +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x7456a464 usb_serial_generic_process_read_urb +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x830680f0 usb_serial_generic_throttle +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x837a2352 usb_serial_register_drivers +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x88fd4855 usb_serial_generic_submit_read_urbs +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x9a12cab7 usb_serial_generic_write_start +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xcba8135d usb_serial_handle_break +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xcf06b52d usb_serial_generic_tiocmiwait +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xe3142c70 usb_serial_generic_read_bulk_callback +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xf999f9d3 usb_serial_handle_dcd_change +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xfddd5bb9 usb_serial_deregister_drivers +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x071f256e usb_stor_resume +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x14093bb9 usb_stor_adjust_quirks +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x1bc3edc2 usb_stor_sense_invalidCDB +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x1bd001c1 usb_stor_clear_halt +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x22b5920e usb_stor_CB_transport +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x24cddb1a usb_stor_CB_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x2a395475 usb_stor_Bulk_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x30a34157 usb_stor_bulk_transfer_buf +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x32df7bd6 usb_stor_post_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x357e594d usb_stor_probe1 +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x3e0cb8d7 usb_stor_reset_resume +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x5ec5a272 usb_stor_bulk_srb +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x78aa3d5f usb_stor_transparent_scsi_command +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x7eadbeca usb_stor_host_template_init +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x7f0aa5b0 usb_stor_pre_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x7f23459e usb_stor_access_xfer_buf +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x9aac2504 usb_stor_probe2 +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xa366aa00 usb_stor_Bulk_transport +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xa42989b9 usb_stor_bulk_transfer_sg +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xaadda09c fill_inquiry_response +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xb7441967 usb_stor_disconnect +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xbd387c85 usb_stor_set_xfer_buf +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xc49a5266 usb_stor_control_msg +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xcbc0344b usb_stor_ctrl_transfer +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xfae074f8 usb_stor_suspend +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x2d04b96a usbip_start_eh +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x4002e4dc usbip_pad_iso +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x41d698e3 usbip_stop_eh +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x539df9e1 usbip_pack_pdu +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x56911b26 usbip_dump_urb +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x76b51382 usbip_recv_iso +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x78b72f44 usbip_debug_flag +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x7aa41085 dev_attr_usbip_debug +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x80ac45cc usbip_event_add +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xa0b99827 usbip_recv +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xcf049627 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 0xe1ea0586 usbip_dump_header +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xeb14399f usbip_event_happened +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xf8dd8ad0 usbip_recv_xbuff +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x0bb79248 wa_dti_start +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x0bd816f0 wa_process_errored_transfers_run +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x122f15ac wa_urb_enqueue_run +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x6866c9cd wa_urb_dequeue +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x940fca39 rpipe_clear_feature_stalled +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x96e75d5c rpipe_ep_disable +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xac8a38ff wa_create +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xcb1c5931 wa_urb_enqueue +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xcb55ad58 rpipe_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xe8ffd6ce __wa_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x0890c719 wusbhc_b_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x0bb6bf5e wusb_cluster_id_get +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x25ec2270 wusbhc_rh_status_data +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x36824489 wusbhc_chid_set +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x381c1a1a __wusb_dev_get_by_usb_dev +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x795d9592 wusbhc_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x7f0b7631 wusb_dev_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x7f63b96c wusbhc_mmcie_set +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x8df1c2ee wusbhc_create +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xad3d5799 wusbhc_rh_start_port_reset +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xb2b39f18 wusbhc_b_create +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xb725d128 wusb_cluster_id_put +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xc395256b wusbhc_handle_dn +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xc66569a2 wusbhc_giveback_urb +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xc995649a wusbhc_rh_control +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xd16d65e7 wusbhc_reset_all +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xd6ff4586 wusbhc_mmcie_rm +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xf770a6b4 wusbd +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xfe2e17d7 wusb_et_name +EXPORT_SYMBOL_GPL drivers/uwb/i1480/dfu/i1480-dfu-usb 0x925c00b7 i1480_cmd +EXPORT_SYMBOL_GPL drivers/uwb/i1480/dfu/i1480-dfu-usb 0xa317591d i1480_rceb_check +EXPORT_SYMBOL_GPL drivers/uwb/i1480/dfu/i1480-dfu-usb 0xd67bd1ed i1480_fw_upload +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x0f9a94cf umc_device_create +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x3003d266 umc_device_unregister +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x47745052 __umc_driver_register +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x8838ab3b umc_device_register +EXPORT_SYMBOL_GPL drivers/uwb/umc 0xa934c21a umc_match_pci_id +EXPORT_SYMBOL_GPL drivers/uwb/umc 0xd5768b14 umc_controller_reset +EXPORT_SYMBOL_GPL drivers/uwb/umc 0xee16e750 umc_bus_type +EXPORT_SYMBOL_GPL drivers/uwb/umc 0xf266eeca umc_driver_unregister +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x0135ea5a uwb_dev_try_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x04e622e5 uwb_rsv_establish +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x05e31baf uwb_rc_neh_error +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x0d78016e __uwb_addr_print +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x0fc02440 uwb_est_unregister +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x12e20429 uwb_rc_put +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x1315593f uwb_notifs_deregister +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x136c0c87 uwb_rc_add +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x2d41cc66 uwb_rc_cmd_async +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x34da041a uwb_rc_ie_add +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x37a9bc92 uwb_rc_mac_addr_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x380d6b44 uwb_rc_get_by_grandpa +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x42ec3969 uwb_rsv_modify +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x461f643a uwb_rc_init +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x4bbd83e9 uwb_rc_rm +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x4d57ae3c uwb_rsv_type_str +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x61d2b7f5 uwb_notifs_register +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x75272e4f uwb_rc_post_reset +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x7a17bd7f __uwb_rc_try_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x816b9e92 uwb_est_register +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x8ccfb740 uwb_rc_reset_all +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x8da85727 uwb_dev_for_each +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x98413234 uwb_rsv_state_str +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x9caf9f57 uwb_pal_unregister +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xa3231e8a uwb_rsv_create +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xa70c22ef uwb_pal_register +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xaa57e3c4 uwb_rsv_destroy +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xab58c640 uwb_rc_alloc +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xac97316b uwb_ie_next +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xb25e1cf4 uwb_est_find_size +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xbed6fdb2 uwb_pal_init +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xc01dd85b uwb_rc_dev_addr_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xc792700e uwb_rc_ie_rm +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xd25e6434 uwb_rc_neh_grok +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xd8a21987 uwb_rc_cmd +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xdbe19537 uwb_rsv_accept +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xe8497a97 uwb_rsv_get_usable_mas +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xe87104b5 uwb_radio_start +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xee2d1407 uwb_rc_vcmd +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xee325e1a uwb_rsv_terminate +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xf45e1edd uwb_radio_stop +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xf8b80102 uwb_rc_pre_reset +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xfe25c02e uwb_rc_get_by_dev +EXPORT_SYMBOL_GPL drivers/uwb/whci 0xf4010df8 whci_wait_for +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x0fbd1790 vfio_register_iommu_driver +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x3567743b vfio_external_user_iommu_id +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x624c7aed vfio_del_group_dev +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0x6843d4c8 vfio_group_get_external_user +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 0xb814e263 vfio_device_get_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 0xce6b9d80 vfio_unregister_iommu_driver +EXPORT_SYMBOL_GPL drivers/vfio/vfio 0xf9e946cd vfio_add_group_dev +EXPORT_SYMBOL_GPL drivers/vfio/vfio_spapr_eeh 0x08f6d02b vfio_spapr_pci_eeh_release +EXPORT_SYMBOL_GPL drivers/vfio/vfio_spapr_eeh 0x16317607 vfio_spapr_pci_eeh_open +EXPORT_SYMBOL_GPL drivers/vfio/vfio_spapr_eeh 0xac0624b4 vfio_spapr_iommu_eeh_ioctl +EXPORT_SYMBOL_GPL drivers/vfio/vfio_virqfd 0x1a5269bd vfio_virqfd_disable +EXPORT_SYMBOL_GPL drivers/vfio/vfio_virqfd 0x853f5bc5 vfio_virqfd_enable +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x0e0ba23e vhost_signal +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x16c3156e vhost_log_access_ok +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x1b666277 vhost_dev_init +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x269f7a09 vhost_dev_reset_owner_prepare +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x2769d706 vhost_log_write +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x292b14f9 vhost_work_flush +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x2afafb01 vhost_get_vq_desc +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x2d372deb vhost_poll_flush +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x40b5f9d2 vhost_dev_stop +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x41f3d3ff vhost_dev_ioctl +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x44e9e1f6 vhost_dev_check_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x473cf5a5 vhost_add_used +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x492729ed vhost_work_queue +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x49ea3a3a vhost_enable_notify +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x5957c35f vhost_dev_has_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x67c4dbe8 vhost_poll_start +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x6acba06e vhost_add_used_and_signal +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x70532032 vhost_dev_set_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x80e3962b vhost_disable_notify +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x975c1693 vhost_poll_stop +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xb0f81e37 vhost_work_init +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xb6cfc673 vhost_init_used +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xb878ac7f vhost_vq_access_ok +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xbd43aad2 vhost_dev_cleanup +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xbdfdd6a3 vhost_discard_vq_desc +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xca2e095d vhost_vring_ioctl +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xcf78eeb3 vhost_add_used_and_signal_n +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xd05928ba vhost_poll_queue +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xf4c26bf1 vhost_add_used_n +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xf5a0c13f vhost_dev_reset_owner +EXPORT_SYMBOL_GPL drivers/vhost/vhost 0xf6ad73a5 vhost_poll_init +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x341a38d0 ili9320_write_regs +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x4999f2ee ili9320_shutdown +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x5e991935 ili9320_resume +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0xbb8237d3 ili9320_remove +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0xf2e79375 ili9320_write +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0xf74f616e ili9320_suspend +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0xfa15fb8c ili9320_probe_spi +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x046dcfe8 auok190x_send_cmdargs_pixels +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x05464e0d auok190x_send_cmdargs_nowait +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x134310c0 auok190x_pm +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x22876879 auok190x_common_remove +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x2c2eb87f auok190x_send_command +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x3758741c auok190x_send_cmdargs +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x77bec04b auok190x_read_cmdargs +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x84e194ad auok190x_send_command_nowait +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0xb15165ca auok190x_send_cmdargs_pixels_nowait +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0xbf8e8e9d auok190x_common_probe +EXPORT_SYMBOL_GPL drivers/video/fbdev/core/fb_ddc 0xa6812717 fb_ddc_read +EXPORT_SYMBOL_GPL drivers/video/fbdev/core/fb_sys_fops 0x5a2aa334 fb_sys_write +EXPORT_SYMBOL_GPL drivers/video/fbdev/core/fb_sys_fops 0xf86e06ab fb_sys_read +EXPORT_SYMBOL_GPL drivers/video/fbdev/sis/sisfb 0x40f9ddb1 sis_malloc_new +EXPORT_SYMBOL_GPL drivers/video/fbdev/sis/sisfb 0x495221c2 sis_free_new +EXPORT_SYMBOL_GPL drivers/w1/wire 0x06f9d7ed w1_reset_resume_command +EXPORT_SYMBOL_GPL drivers/w1/wire 0x1296395a w1_write_8 +EXPORT_SYMBOL_GPL drivers/w1/wire 0x5149e0af w1_write_block +EXPORT_SYMBOL_GPL drivers/w1/wire 0x5fbab917 w1_touch_block +EXPORT_SYMBOL_GPL drivers/w1/wire 0x7c2f2afb w1_calc_crc8 +EXPORT_SYMBOL_GPL drivers/w1/wire 0xa78ee779 w1_reset_bus +EXPORT_SYMBOL_GPL drivers/w1/wire 0xaf6d7965 w1_reset_select_slave +EXPORT_SYMBOL_GPL drivers/w1/wire 0xb2ff0417 w1_read_block +EXPORT_SYMBOL_GPL drivers/w1/wire 0xb7747ced w1_next_pullup +EXPORT_SYMBOL_GPL drivers/w1/wire 0xd314ae26 w1_read_8 +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x7a009155 dlm_posix_lock +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x9321df95 dlm_lock +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xc6dc8c2f dlm_new_lockspace +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xc726f72e dlm_posix_get +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xcf9f3328 dlm_release_lockspace +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xdc583c08 dlm_unlock +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xf9c277a7 dlm_posix_unlock +EXPORT_SYMBOL_GPL fs/fscache/fscache 0x092cf98e fscache_object_sleep_till_congested +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x02673001 nlmsvc_unlock_all_by_sb +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x3b28895f nlmclnt_proc +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x77e35ccc nlmsvc_unlock_all_by_ip +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x7e96e477 nlmclnt_done +EXPORT_SYMBOL_GPL fs/lockd/lockd 0xa553fc8e nlmclnt_init +EXPORT_SYMBOL_GPL fs/lockd/lockd 0xaa609535 nlmsvc_ops +EXPORT_SYMBOL_GPL fs/lockd/lockd 0xbfec1892 lockd_up +EXPORT_SYMBOL_GPL fs/lockd/lockd 0xe4ed1296 lockd_down +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x00113ddd nfs_flock +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0122105a nfs_fs_mount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x027ef424 nfs_commit_free +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x038e745b nfs_free_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x03e5cdc4 nfs_close_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x07925d19 nfs_statfs +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0dfe084d nfs_file_mmap +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0e501481 nfs_clone_sb_security +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0f2423c5 nfs_inode_attach_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x13d524f1 nfs_submount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x17bf4f5a nfs_write_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x17cd41b6 nfs_setsecurity +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x18c41d8f nfs_get_lock_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1a4ada4d nfs_server_copy_userdata +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x21057fda nfs_access_set_mask +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x21917871 nfs_request_add_commit_list_locked +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x21a084b1 nfs_try_mount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2309566d nfs_lock +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x240aed29 nfs_setattr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x26884ff7 nfs_alloc_fhandle +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x28cdd11c nfs_free_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2c68599a nfs_file_release +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2e8a36fb nfs_pageio_reset_read_mds +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2f8f67e1 nfs_pageio_init +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x30f0e428 nfs4_dentry_operations +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x319ffaab nfs_file_splice_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x34c671d8 nfs_instantiate +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x34e79d43 nfs_sops +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3663d235 register_nfs_version +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x36eb7baa nfs_pageio_init_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x374b5298 nfs_link +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x39e05ac3 nfs_idmap_cache_timeout +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3a0b36ef nfs_alloc_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3addfcbc nfs_fs_type +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3ca31f35 nfs_net_id +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3f2690f2 nfs_check_flags +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3ff1ef25 nfs_sb_deactive +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x42f2c81f nfs4_client_id_uniquifier +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x43faefea nfs_pgio_header_free +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x44c73220 nfs_access_add_cache +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x45f4df15 nfs_clone_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x49201290 nfs_show_options +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4cb9e001 recover_lost_locks +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4eb42809 nfs_file_flush +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4fd7bd1b nfs_setattr_update_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x51892d61 nfs_callback_set_tcpport +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x51ca0cb0 nfs_kill_super +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x53006d44 nfs_permission +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x54e849df nfs_pageio_resend +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x55a7b483 nfs_refresh_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x56298fa0 nfs_pgio_current_mirror +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x56675d00 nfs_init_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x582c945c nfs_zap_acl_cache +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x584b8482 nfs_inc_attr_generation_counter +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x59893c09 nfs_retry_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5dd89b23 nfs_alloc_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5e1d863a nfs_sockaddr_match_ipaddr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x620e5bf3 nfs_pageio_init_write +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x66e8703b nfs_set_sb_security +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x69d5fe0c nfs_server_insert_lists +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6badf7b2 nfs_path +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7819e122 nfs_pageio_reset_write_mds +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x79e31131 nfs_rmdir +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7a1f22ed nfs_request_remove_commit_list +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7c8e8f4d nfs_unlink +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7c9722ba nfs_dreq_bytes_left +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7de57cb2 nfs_file_llseek +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7e121b3b nfs_mkdir +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7e3dfbc3 nfs_file_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7fa57e5d nfs_show_stats +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x849ae9be nfs_initiate_pgio +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x84a6c39a nfs_show_devname +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x860faefd nfs_atomic_open +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x874fbe41 put_nfs_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x87ebf76d nfs_alloc_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8a04ffdd nfs_generic_pgio +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8ea82b2b nfs_file_set_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x901d2619 nfs_show_path +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x90a5530f nfsiod_workqueue +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x90d7aa0f nfs_fs_mount_common +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x91d1fe52 max_session_slots +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x942a06b4 nfs_init_cinfo +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x94d64685 __tracepoint_nfs_fsync_exit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x962475ce nfs_get_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x97af6fcb nfs_wb_all +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9ae748ba nfs_create_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9d8320b7 nfs_remount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9f971559 alloc_nfs_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa276fe79 nfs4_label_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa609fdc1 nfs_commitdata_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa6c865ee nfs_wait_bit_killable +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa7ab1095 nfs_destroy_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa8b05abc nfs_may_open +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa8d2d1ce nfs_callback_tcpport +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa8e9e1ae send_implementation_id +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xaa5d6e36 nfs_sb_active +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xab994b54 nfs_post_op_update_inode_force_wcc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xac1c7302 nfs_wait_client_init_complete +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xac90755d __tracepoint_nfs_fsync_enter +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xad7e1f23 nfs_do_submount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb1b193c1 nfs_mknod +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb39be8c8 nfs_file_fsync_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb5d2d120 nfs_force_lookup_revalidate +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb606e716 nfs_fattr_init +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbb4ee889 nfs_post_op_update_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbd8538fc nfs_lookup +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbd9a5d85 nfs_put_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbe16905b nfs_umount_begin +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbe8a7408 nfs_generic_pg_test +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc1970944 nfs_file_operations +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc342aca2 nfs4_fs_type +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc48fdf67 nfs_revalidate_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc4ff1e9f nfs_auth_info_match +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc5ef47d5 nfs_init_timeout_values +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc67636c4 nfs_writeback_update_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc77890ff nfs_fscache_open_file +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc931b4e1 nfs_create +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc9331e91 nfs_dentry_operations +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc9df911a nfs_invalidate_atime +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xcd936f1b nfs_create_rpc_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xcdd2f6c6 nfs_file_write +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xcf30ce49 nfs_pgio_header_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xcf58dac4 nfs_mark_client_ready +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xcf6c11ba nfs_initiate_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd16f27a3 nfs_access_zap_cache +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd2127619 nfs_rename +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd2513081 _nfs_display_fhandle_hash +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd7600503 nfs_request_add_commit_list +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd9ab2118 nfs_sync_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdadbb7f8 nfs_drop_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdae9b5d7 nfs4_disable_idmapping +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdd14d27d get_nfs_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdf9137e7 nfs_server_remove_lists +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdf9ea201 nfs_clear_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe0907fc9 unregister_nfs_version +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe66688b5 nfs_pgio_data_destroy +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe8298ea8 nfs_put_lock_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe92c510d nfs_direct_set_resched_writes +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xeda9650a nfs_fill_super +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xee0e9a69 nfs_getattr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf0126dd8 nfs_init_server_rpcclient +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf341905a nfs_init_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf342b054 nfs_probe_fsinfo +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf46edc0a nfs_fhget +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf8db69cd nfs_symlink +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf979d500 nfs_pgheader_init +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfb7ee006 nfs_alloc_fattr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfc619abd _nfs_display_fhandle +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfddbd316 nfs_commitdata_release +EXPORT_SYMBOL_GPL fs/nfs/nfsv3 0x51788e6d nfs3_set_ds_client +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x04204a16 nfs4_schedule_session_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x04b83950 nfs4_init_deviceid_node +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x055d9500 nfs4_pnfs_ds_add +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x063153cb nfs4_proc_getdeviceinfo +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x06c36816 __tracepoint_nfs4_pnfs_write +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x104683d5 pnfs_generic_prepare_to_resend_writes +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x170f3ed6 nfs41_maxgetdevinfo_overhead +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x1b004301 nfs4_find_or_create_ds_client +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x2095a167 nfs4_put_deviceid_node +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x209db959 pnfs_generic_pg_writepages +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x26d7c8df pnfs_generic_pg_test +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x2917e74a pnfs_nfs_generic_sync +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x2ba2d972 _pnfs_return_layout +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x2ceb1944 pnfs_layout_mark_request_commit +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x338e3524 nfs41_sequence_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x3dfe6fe3 __tracepoint_nfs4_pnfs_read +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x3fc8cf5f nfs4_schedule_lease_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x3fecb911 pnfs_generic_pg_init_read +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x471de0a9 __tracepoint_nfs4_pnfs_commit_ds +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x48684d75 pnfs_read_done_resend_to_mds +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x5126030e pnfs_ld_read_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x51806961 pnfs_generic_scan_commit_lists +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x51d4507e nfs4_schedule_stateid_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x53bd89fb nfs4_pnfs_ds_connect +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x5ba8e57e pnfs_ld_write_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x6085edbd nfs_map_string_to_numeric +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x60c7de20 nfs4_pnfs_ds_put +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x696885c6 pnfs_put_lseg_locked +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x69d3558d pnfs_generic_rw_release +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x6e3a54e8 pnfs_generic_pg_cleanup +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x76a58795 nfs4_init_ds_session +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x7a44acb2 nfs4_test_deviceid_unavailable +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x7bd1ab02 pnfs_generic_commit_pagelist +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x83ae6aaa nfs4_pnfs_v3_ds_connect_unload +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x83b70aa0 pnfs_generic_write_commit_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x8ae6fc0c pnfs_generic_recover_commit_reqs +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x8bff494f nfs4_set_rw_stateid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x915e6635 pnfs_report_layoutstat +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x926dd7b4 nfs41_setup_sequence +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x92b60741 pnfs_set_layoutcommit +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x9648761b nfs4_decode_mp_ds_addr +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x96d1c5e8 nfs40_setup_sequence +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x96d73ee6 nfs4_sequence_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xa996f81b nfs4_schedule_lease_moved_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xaac081d2 nfs_remove_bad_delegation +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xabbe488c pnfs_generic_pg_init_write +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xac0cffce pnfs_read_resend_pnfs +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xacd732ee pnfs_update_layout +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xb1873784 nfs4_find_get_deviceid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xb1f35bb6 pnfs_layoutcommit_inode +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xb2f82d34 nfs4_mark_deviceid_unavailable +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xb906492b nfs4_delete_deviceid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xbbaa0243 nfs4_schedule_migration_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xc8b8a88d pnfs_generic_clear_request_commit +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xce00095d pnfs_generic_pg_readpages +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xd3332514 pnfs_generic_sync +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xd91c0bd4 pnfs_error_mark_layout_for_return +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xe460835b pnfs_put_lseg +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xe8f75b00 pnfs_set_lo_fail +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xe92a7b29 pnfs_destroy_layout +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xed15fb41 nfs4_print_deviceid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xf6b32224 pnfs_register_layoutdriver +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xf81a893f pnfs_write_done_resend_to_mds +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xf999267e pnfs_generic_commit_release +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xfd83fa59 pnfs_unregister_layoutdriver +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xff7eca57 nfs4_set_ds_client +EXPORT_SYMBOL_GPL fs/nfs_common/grace 0x17ce645d locks_end_grace +EXPORT_SYMBOL_GPL fs/nfs_common/grace 0xd570c24c locks_in_grace +EXPORT_SYMBOL_GPL fs/nfs_common/grace 0xdcb6437a locks_start_grace +EXPORT_SYMBOL_GPL fs/nfs_common/nfs_acl 0x99d8c291 nfsacl_decode +EXPORT_SYMBOL_GPL fs/nfs_common/nfs_acl 0xac255403 nfsacl_encode +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x11736b03 __mlog_printk +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x1b89c6ee o2hb_fill_node_map +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x1c9f5787 o2hb_register_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x1d747ce3 o2hb_check_node_heartbeating +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x26bacf0e o2hb_unregister_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x2c839201 o2hb_setup_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x36418553 o2net_send_message +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x36a28a9e o2net_send_message_vec +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x40b4749e o2nm_get_node_by_num +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x4900035b o2hb_stop_all_regions +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x58e044fe o2nm_node_get +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x81a17396 mlog_and_bits +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xa1ae48e1 o2hb_check_node_heartbeating_no_sem +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xa82a8645 o2nm_this_node +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xa87bc9e7 o2nm_configured_node_map +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xae808bac o2net_register_handler +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xbaeb4700 o2hb_check_node_heartbeating_from_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xc3679d7b o2hb_get_all_regions +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xd60f2c6c o2hb_check_local_node_heartbeating +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xd859ac8c o2net_fill_node_map +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xdcb6ac24 o2nm_node_put +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 0xf8103ffb o2nm_get_node_by_ip +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x187342f0 dlmunlock +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x249bca7d dlm_register_domain +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x3292f396 dlm_print_one_lock +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x7858de9e dlmlock +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x7a1211f8 dlm_setup_eviction_cb +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x83f30edb dlm_register_eviction_cb +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x99f749dc dlm_unregister_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 0xfb86b96f dlm_errname +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x269d63fd ocfs2_cluster_disconnect +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x316904e1 ocfs2_dlm_unlock +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x3bcef5f3 ocfs2_dlm_lock_status +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x40718c92 ocfs2_dlm_lock +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x4226705d ocfs2_dlm_dump_lksb +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x424241c9 ocfs2_dlm_lvb +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x4d3af7fa ocfs2_cluster_hangup +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x60f4bcef ocfs2_dlm_lvb_valid +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x8a78415d ocfs2_plock +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x9ccafa05 ocfs2_cluster_this_node +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xa06fbc10 ocfs2_cluster_connect_agnostic +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xb3d5b8cb ocfs2_stack_glue_register +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xbbc4ef97 ocfs2_stack_supports_plocks +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xbf9068ab ocfs2_cluster_connect +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xd572d81e ocfs2_stack_glue_unregister +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xe40cffce ocfs2_stack_glue_set_max_proto_version +EXPORT_SYMBOL_GPL kernel/torture 0x1b2fca48 torture_must_stop_irq +EXPORT_SYMBOL_GPL kernel/torture 0x1be7d8be torture_onoff_failures +EXPORT_SYMBOL_GPL kernel/torture 0x253a25c4 torture_shuffle_task_register +EXPORT_SYMBOL_GPL kernel/torture 0x3e9619f5 torture_onoff_stats +EXPORT_SYMBOL_GPL kernel/torture 0x4c7529bd torture_shutdown_absorb +EXPORT_SYMBOL_GPL kernel/torture 0x52665f8b torture_random +EXPORT_SYMBOL_GPL kernel/torture 0x5346b23b torture_shuffle_cleanup +EXPORT_SYMBOL_GPL kernel/torture 0x6364b2f0 stutter_wait +EXPORT_SYMBOL_GPL kernel/torture 0x679d9e50 torture_must_stop +EXPORT_SYMBOL_GPL kernel/torture 0x688e6a64 torture_cleanup_end +EXPORT_SYMBOL_GPL kernel/torture 0x6bdeda8f torture_onoff_init +EXPORT_SYMBOL_GPL kernel/torture 0x8b0e1d2f torture_shuffle_init +EXPORT_SYMBOL_GPL kernel/torture 0x8de6c5bd _torture_stop_kthread +EXPORT_SYMBOL_GPL kernel/torture 0xa987a9f2 _torture_create_kthread +EXPORT_SYMBOL_GPL kernel/torture 0xc1361afc torture_onoff_cleanup +EXPORT_SYMBOL_GPL kernel/torture 0xc6527045 torture_init_begin +EXPORT_SYMBOL_GPL kernel/torture 0xc67a49d4 torture_cleanup_begin +EXPORT_SYMBOL_GPL kernel/torture 0xdbc5277a torture_shutdown_init +EXPORT_SYMBOL_GPL kernel/torture 0xe6989fd3 torture_init_end +EXPORT_SYMBOL_GPL kernel/torture 0xe9ff1468 torture_stutter_init +EXPORT_SYMBOL_GPL kernel/torture 0xf6d34fb5 torture_kthread_stopping +EXPORT_SYMBOL_GPL lib/842/842_compress 0x1ce013cf sw842_compress +EXPORT_SYMBOL_GPL lib/842/842_decompress 0x0d22f116 sw842_decompress +EXPORT_SYMBOL_GPL lib/bch 0x231d70fc encode_bch +EXPORT_SYMBOL_GPL lib/bch 0x6b770f49 decode_bch +EXPORT_SYMBOL_GPL lib/bch 0x9463ff71 init_bch +EXPORT_SYMBOL_GPL lib/bch 0xbdf512de free_bch +EXPORT_SYMBOL_GPL lib/notifier-error-inject 0xab0c0be5 notifier_err_inject_dir +EXPORT_SYMBOL_GPL lib/notifier-error-inject 0xd330d6ad 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 0x201d8ea3 encode_rs8 +EXPORT_SYMBOL_GPL lib/reed_solomon/reed_solomon 0x29fa419f decode_rs8 +EXPORT_SYMBOL_GPL lib/reed_solomon/reed_solomon 0x300d7e57 free_rs +EXPORT_SYMBOL_GPL lib/reed_solomon/reed_solomon 0x6fbb3bd9 init_rs_non_canonical +EXPORT_SYMBOL_GPL lib/reed_solomon/reed_solomon 0xabda1e2e decode_rs16 +EXPORT_SYMBOL_GPL lib/reed_solomon/reed_solomon 0xb050f329 init_rs +EXPORT_SYMBOL_GPL net/6lowpan/6lowpan 0x14d5f1ed lowpan_header_decompress +EXPORT_SYMBOL_GPL net/6lowpan/6lowpan 0x830646d6 lowpan_header_compress +EXPORT_SYMBOL_GPL net/802/garp 0x3cf5aeaa garp_uninit_applicant +EXPORT_SYMBOL_GPL net/802/garp 0x47614abe garp_register_application +EXPORT_SYMBOL_GPL net/802/garp 0x79505c24 garp_init_applicant +EXPORT_SYMBOL_GPL net/802/garp 0x8b81a8fe garp_request_leave +EXPORT_SYMBOL_GPL net/802/garp 0xad268cb8 garp_unregister_application +EXPORT_SYMBOL_GPL net/802/garp 0xeb5f5031 garp_request_join +EXPORT_SYMBOL_GPL net/802/mrp 0x144c42d1 mrp_init_applicant +EXPORT_SYMBOL_GPL net/802/mrp 0x4d82e831 mrp_unregister_application +EXPORT_SYMBOL_GPL net/802/mrp 0xa6a5d6b7 mrp_request_leave +EXPORT_SYMBOL_GPL net/802/mrp 0xb6883a47 mrp_uninit_applicant +EXPORT_SYMBOL_GPL net/802/mrp 0xdbeb07dc mrp_register_application +EXPORT_SYMBOL_GPL net/802/mrp 0xe3bfeab3 mrp_request_join +EXPORT_SYMBOL_GPL net/802/stp 0x0edad0f1 stp_proto_unregister +EXPORT_SYMBOL_GPL net/802/stp 0xca0aacd4 stp_proto_register +EXPORT_SYMBOL_GPL net/9p/9pnet 0x151b6203 p9_client_xattrcreate +EXPORT_SYMBOL_GPL net/9p/9pnet 0x37ae7249 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 0xe8e51733 ax25_register_pid +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x1919954c l2cap_add_psm +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x59473993 l2cap_chan_put +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x99159507 l2cap_chan_create +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0xb3177ab4 bt_debugfs +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0xb8484c6f l2cap_chan_connect +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0xbd066b6e l2cap_chan_del +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0xd180735a l2cap_chan_set_defaults +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0xecf771c2 l2cap_chan_send +EXPORT_SYMBOL_GPL net/bridge/br_netfilter 0x0cb0f8b7 br_netfilter_enable +EXPORT_SYMBOL_GPL net/bridge/bridge 0x0d0a02b9 br_dev_queue_push_xmit +EXPORT_SYMBOL_GPL net/bridge/bridge 0x295e10a5 br_forward_finish +EXPORT_SYMBOL_GPL net/bridge/bridge 0x29fff257 br_handle_frame_finish +EXPORT_SYMBOL_GPL net/bridge/bridge 0x393d29ff br_multicast_list_adjacent +EXPORT_SYMBOL_GPL net/bridge/bridge 0xcabd9d1e br_multicast_has_querier_anywhere +EXPORT_SYMBOL_GPL net/bridge/bridge 0xdf8b0c29 nf_br_ops +EXPORT_SYMBOL_GPL net/bridge/bridge 0xe91f16d5 br_deliver +EXPORT_SYMBOL_GPL net/bridge/bridge 0xf2a9b91b br_multicast_has_querier_adjacent +EXPORT_SYMBOL_GPL net/bridge/netfilter/nf_tables_bridge 0x745fa44b nft_bridge_ip6hdr_validate +EXPORT_SYMBOL_GPL net/bridge/netfilter/nf_tables_bridge 0x8bb6de87 nft_bridge_iphdr_validate +EXPORT_SYMBOL_GPL net/dccp/dccp 0x00806df8 dccp_shutdown +EXPORT_SYMBOL_GPL net/dccp/dccp 0x0e60173c dccp_send_sync +EXPORT_SYMBOL_GPL net/dccp/dccp 0x14bd2784 dccp_death_row +EXPORT_SYMBOL_GPL net/dccp/dccp 0x15190af5 dccp_getsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0x1d99d49a dccp_timestamp +EXPORT_SYMBOL_GPL net/dccp/dccp 0x20ae91f7 dccp_setsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0x29459791 dccp_sendmsg +EXPORT_SYMBOL_GPL net/dccp/dccp 0x2b37f6ce dccp_poll +EXPORT_SYMBOL_GPL net/dccp/dccp 0x2fc9f147 dccp_insert_option +EXPORT_SYMBOL_GPL net/dccp/dccp 0x36b276ae inet_dccp_listen +EXPORT_SYMBOL_GPL net/dccp/dccp 0x3fd5b390 dccp_create_openreq_child +EXPORT_SYMBOL_GPL net/dccp/dccp 0x4cdd391d dccp_feat_list_purge +EXPORT_SYMBOL_GPL net/dccp/dccp 0x4ec35231 dccp_ackvec_parsed_add +EXPORT_SYMBOL_GPL net/dccp/dccp 0x513a50ee dccp_recvmsg +EXPORT_SYMBOL_GPL net/dccp/dccp 0x59814a84 dccp_statistics +EXPORT_SYMBOL_GPL net/dccp/dccp 0x6b4d8b35 dccp_done +EXPORT_SYMBOL_GPL net/dccp/dccp 0x7db7dbe4 dccp_feat_signal_nn_change +EXPORT_SYMBOL_GPL net/dccp/dccp 0x8218941d dccp_sync_mss +EXPORT_SYMBOL_GPL net/dccp/dccp 0x86be7924 dccp_packet_name +EXPORT_SYMBOL_GPL net/dccp/dccp 0x8b9bb31c dccp_child_process +EXPORT_SYMBOL_GPL net/dccp/dccp 0x8bd03e4f dccp_ioctl +EXPORT_SYMBOL_GPL net/dccp/dccp 0x8faee9b2 dccp_send_ack +EXPORT_SYMBOL_GPL net/dccp/dccp 0x9598d24d dccp_ackvec_parsed_cleanup +EXPORT_SYMBOL_GPL net/dccp/dccp 0xab8a13c6 dccp_set_state +EXPORT_SYMBOL_GPL net/dccp/dccp 0xac7d78e1 dccp_close +EXPORT_SYMBOL_GPL net/dccp/dccp 0xadb4c5b9 dccp_destroy_sock +EXPORT_SYMBOL_GPL net/dccp/dccp 0xb37260e1 dccp_reqsk_init +EXPORT_SYMBOL_GPL net/dccp/dccp 0xb83bd949 dccp_reqsk_send_ack +EXPORT_SYMBOL_GPL net/dccp/dccp 0xb9ba7079 dccp_connect +EXPORT_SYMBOL_GPL net/dccp/dccp 0xbd8ce91d dccp_parse_options +EXPORT_SYMBOL_GPL net/dccp/dccp 0xc0b7b890 dccp_orphan_count +EXPORT_SYMBOL_GPL net/dccp/dccp 0xc2518347 compat_dccp_setsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0xcb41d669 dccp_init_sock +EXPORT_SYMBOL_GPL net/dccp/dccp 0xce325b1b dccp_ctl_make_reset +EXPORT_SYMBOL_GPL net/dccp/dccp 0xd6c6e524 dccp_rcv_established +EXPORT_SYMBOL_GPL net/dccp/dccp 0xdf3c8f3d dccp_rcv_state_process +EXPORT_SYMBOL_GPL net/dccp/dccp 0xe35d1414 dccp_feat_nn_get +EXPORT_SYMBOL_GPL net/dccp/dccp 0xe5256155 dccp_hashinfo +EXPORT_SYMBOL_GPL net/dccp/dccp 0xe606aaac dccp_disconnect +EXPORT_SYMBOL_GPL net/dccp/dccp 0xe96945bc dccp_check_req +EXPORT_SYMBOL_GPL net/dccp/dccp 0xf3f96a63 dccp_make_response +EXPORT_SYMBOL_GPL net/dccp/dccp 0xf839ef48 compat_dccp_getsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x21d74155 dccp_v4_connect +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x48dbdb23 dccp_v4_conn_request +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x5831b75d dccp_v4_request_recv_sock +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x5c056a4b dccp_invalid_packet +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0xabf43251 dccp_v4_do_rcv +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0xede637e6 dccp_v4_send_check +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0x351272a3 ieee802154_hdr_pull +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0x4d7aef69 ieee802154_max_payload +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0xc2c0e979 ieee802154_hdr_peek +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0xc766e002 ieee802154_hdr_push +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0xfba2cd01 ieee802154_hdr_peek_addrs +EXPORT_SYMBOL_GPL net/ipv4/geneve_core 0x06499414 geneve_sock_release +EXPORT_SYMBOL_GPL net/ipv4/geneve_core 0x16c02d62 geneve_xmit_skb +EXPORT_SYMBOL_GPL net/ipv4/geneve_core 0x4661c983 geneve_sock_add +EXPORT_SYMBOL_GPL net/ipv4/gre 0x0871c95e gre_cisco_register +EXPORT_SYMBOL_GPL net/ipv4/gre 0x47bcc278 gre_del_protocol +EXPORT_SYMBOL_GPL net/ipv4/gre 0x4e69f786 gre_cisco_unregister +EXPORT_SYMBOL_GPL net/ipv4/gre 0x81ab73b7 gre_build_header +EXPORT_SYMBOL_GPL net/ipv4/gre 0xb05f64d3 gre_add_protocol +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x0935a6fe inet_diag_bc_sk +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x9e817aaf inet_diag_dump_one_icsk +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0xa49c4430 inet_sk_diag_fill +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0xcabc8a15 inet_diag_dump_icsk +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0xedb65050 inet_diag_register +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0xfd54eef5 inet_diag_unregister +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x13295cbd ip_tunnel_init +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x2dd5afc1 ip_tunnel_rcv +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x2ddbf243 ip_tunnel_lookup +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x40531a51 ip_tunnel_change_mtu +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x41e91780 ip_tunnel_setup +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x6cff30e0 ip_tunnel_uninit +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x799b6ca2 ip_tunnel_ioctl +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x7cbf41bb ip_tunnel_dellink +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xa04c2ba4 ip_tunnel_encap_setup +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xa7e728e2 ip_tunnel_xmit +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xae4bc811 ip_tunnel_init_net +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xd70c195d ip_tunnel_newlink +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xdf261a8a ip_tunnel_delete_net +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xf6a33beb ip_tunnel_changelink +EXPORT_SYMBOL_GPL net/ipv4/netfilter/arp_tables 0x6de77ba3 arpt_alloc_initial_table +EXPORT_SYMBOL_GPL net/ipv4/netfilter/ip_tables 0x9e5cda6f ipt_alloc_initial_table +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_defrag_ipv4 0x6b6c3d10 nf_defrag_ipv4_enable +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_ipv4 0x0ee48de9 nf_nat_icmp_reply_translation +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_ipv4 0x4ec17152 nf_nat_ipv4_out +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_ipv4 0xa9c8c99e nf_nat_ipv4_local_fn +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_ipv4 0xc9c0d660 nf_nat_ipv4_fn +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_ipv4 0xe44480d5 nf_nat_ipv4_in +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_masquerade_ipv4 0x3f5c468e nf_nat_masquerade_ipv4_unregister_notifier +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_masquerade_ipv4 0xc4fe12cc nf_nat_masquerade_ipv4 +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_masquerade_ipv4 0xfedbf252 nf_nat_masquerade_ipv4_register_notifier +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_proto_gre 0x636b12c8 nf_nat_need_gre +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0x0f4355da nf_reject_ip_tcphdr_get +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0x501fe0f1 nf_send_unreach +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0x88da41c2 nf_send_reset +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0x9d4c85ef nf_reject_iphdr_put +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0xdf6f1ae5 nf_reject_ip_tcphdr_put +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_tables_ipv4 0xf3a621c8 nft_af_ipv4 +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x893cb85c tcp_vegas_cwnd_event +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x8d17af87 tcp_vegas_state +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0xa888d430 tcp_vegas_pkts_acked +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0xaae7f000 tcp_vegas_init +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0xcfd02d2a tcp_vegas_get_info +EXPORT_SYMBOL_GPL net/ipv4/udp_tunnel 0x45d56915 udp_tunnel_sock_release +EXPORT_SYMBOL_GPL net/ipv4/udp_tunnel 0xb1cd1269 setup_udp_tunnel_sock +EXPORT_SYMBOL_GPL net/ipv4/udp_tunnel 0xc376b3fd udp_tunnel_xmit_skb +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x18ad0fc7 ip6_tnl_dst_check +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0xa5db38e0 ip6_tnl_dst_store +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0xadd89ea5 ip6_tnl_dst_reset +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0xcefcf3e1 ip6_tnl_xmit_ctl +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0xd684cc61 ip6_tnl_rcv_ctl +EXPORT_SYMBOL_GPL net/ipv6/ip6_udp_tunnel 0x698599e9 udp_sock_create6 +EXPORT_SYMBOL_GPL net/ipv6/ip6_udp_tunnel 0x7c344d8a udp_tunnel6_xmit_skb +EXPORT_SYMBOL_GPL net/ipv6/netfilter/ip6_tables 0x13944e1a ip6t_alloc_initial_table +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_defrag_ipv6 0x6eb85693 nf_defrag_ipv6_enable +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_ipv6 0x1e5cfa4f nf_nat_ipv6_fn +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_ipv6 0x39cf6106 nf_nat_ipv6_out +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_ipv6 0x85f11052 nf_nat_ipv6_local_fn +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_ipv6 0xa47161a3 nf_nat_ipv6_in +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_ipv6 0xacefee12 nf_nat_icmpv6_reply_translation +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_masquerade_ipv6 0x2293972c nf_nat_masquerade_ipv6_unregister_notifier +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_masquerade_ipv6 0x38d4401a nf_nat_masquerade_ipv6_register_notifier +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_masquerade_ipv6 0x54c33428 nf_nat_masquerade_ipv6 +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0x45f08383 nf_reject_ip6hdr_put +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0x777ed3be nf_send_reset6 +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0x9d7a4133 nf_reject_ip6_tcphdr_get +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0xaa3022d2 nf_reject_ip6_tcphdr_put +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0xafbe9f7a nf_send_unreach6 +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_tables_ipv6 0x2cd35cbe nft_af_ipv6 +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x07d53abe l2tp_tunnel_create +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x0e53dce4 l2tp_udp_encap_recv +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x28617438 l2tp_session_free +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x30765749 l2tp_tunnel_find +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x3222566e __l2tp_session_unhash +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x4ef662cd l2tp_session_find +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x6a272da9 l2tp_session_find_by_ifname +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x74dbd6bc l2tp_tunnel_closeall +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x761ad3b7 l2tp_session_create +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x7a756bf3 l2tp_tunnel_find_nth +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x89b621ba l2tp_session_find_nth +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x904370cd l2tp_xmit_skb +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x90a88e17 l2tp_tunnel_delete +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xc02155c9 l2tp_session_queue_purge +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xcb405723 l2tp_session_set_header_len +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xcde6d8d7 l2tp_session_delete +EXPORT_SYMBOL_GPL net/l2tp/l2tp_netlink 0x337f2432 l2tp_nl_unregister_ops +EXPORT_SYMBOL_GPL net/l2tp/l2tp_netlink 0xb22b7122 l2tp_nl_register_ops +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x0f5e3a62 ieee80211_find_sta_by_ifaddr +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x11e1f72f ieee80211_set_key_rx_seq +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x1f216d2c ieee80211_set_key_tx_seq +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x2302b89b ieee80211_request_smps +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x293a44b9 ieee80211_ave_rssi +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x38662e50 ieee80211_gtk_rekey_add +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x48112e2a ieee80211_resume_disconnect +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x58a151ae ieee80211_remove_key +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x62a9993a ieee80211_iter_chan_contexts_atomic +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x6788f8f6 ieee80211_ready_on_channel +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x70dbc0ef ieee80211_gtk_rekey_notify +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x71bd4004 ieee80211_iterate_stations_atomic +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x85207db4 ieee80211_vif_to_wdev +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x8798dcaf wdev_to_ieee80211_vif +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x9d33b00c ieee80211_remain_on_channel_expired +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xb226e35e ieee80211_iterate_active_interfaces_atomic +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xd198e079 ieee80211_napi_add +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xd5fac806 ieee80211_iterate_active_interfaces_rtnl +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xf8a50eaf ieee80211_iterate_interfaces +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x01dfe9eb ip_set_put_extensions +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x0a5f2233 ip_set_nfnl_get_byindex +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x23b453c8 ip_set_name_byindex +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x3147029b ip_set_elem_len +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x397f6231 ip_set_free +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x64dad50c ip_set_get_ip_port +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x6f088a65 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 0x7a04d43b ip_set_type_register +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x7cf860a5 ip_set_nfnl_put +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x81fff2d1 ip_set_netmask_map +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x891fedc2 ip_set_del +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x8b318189 ip_set_put_byindex +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x9977e2be ip_set_get_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 0xa2d623f3 ip_set_range_to_cidr +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xb3a31cae ip_set_test +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xb9731fc3 ip_set_add +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xcc001bd9 ip_set_extensions +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xdb3e1e88 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 0xf97084c9 ip_set_type_unregister +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xfc86d284 ip_set_get_byname +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0x2e320050 ip_vs_conn_out_get_proto +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0x9c97b75c unregister_ip_vs_pe +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0xef180573 ip_vs_conn_in_get_proto +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0xfe0fe47d register_ip_vs_pe +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x009fa230 nf_ct_l4proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x02bd0eed nf_conntrack_tuple_taken +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x045072cd nf_ct_port_nla_policy +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x04e4d5aa nf_ct_expect_register_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x153bd71e __nf_ct_try_assign_helper +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x15804850 nf_ct_delete +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x1825cc78 nf_ct_helper_expectfn_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x19023622 nf_ct_extend_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x1c0300c1 nf_ct_seq_offset +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x1c3f264a nf_ct_l4proto_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x21f22f26 nf_ct_helper_expectfn_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x2657e3e9 nf_ct_remove_expectations +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x289c3714 nf_ct_alloc_hashtable +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x2c4b899b nf_ct_seq_adjust +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x2c97f86b nf_conntrack_helper_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x2cc9bb7c nf_ct_helper_ext_add +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x305a3ef6 nfnetlink_parse_nat_setup_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x37386cac nf_conntrack_hash_rnd +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x39997ac2 nf_conntrack_hash_check_insert +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3b0fd4c5 seq_print_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3f528553 nf_ct_expect_unregister_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3f5b1415 nf_ct_port_nlattr_to_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x4058a97f nf_conntrack_helper_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x4c7fd473 nf_conntrack_alter_reply +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x4d97771c nf_ct_l4proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x4e7329f2 nf_ct_helper_expectfn_find_by_symbol +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x4efcafe5 nf_ct_timeout_put_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x4f179503 nf_ct_seqadj_init +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x5381b4f3 nf_ct_tcp_seqadj_set +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x55398ba5 nf_ct_expect_init +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x61e84a73 nf_connlabel_set +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x62813e5c nf_ct_port_nlattr_tuple_size +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x66d29456 __nf_ct_expect_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x693c3961 nf_ct_helper_hash +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6c9a4f5f nf_conntrack_set_hashsize +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6e224a7a need_conntrack +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x708573cd nf_conntrack_free +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x714304d1 nf_conntrack_register_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x71e3f34b nf_ct_get_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x78f9b710 nf_ct_l3proto_try_module_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x7ba8e84e nf_conntrack_unregister_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x7c36a6b3 nf_ct_unlink_expect_report +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x82df078e nf_ct_l4proto_pernet_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x82f04701 nf_ct_seqadj_set +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x84435733 nf_ct_unexpect_related +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8a66c4fc nf_conntrack_expect_lock +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8ffe7e89 nf_conntrack_htable_size +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x90ff6c9f nf_ct_invert_tuplepr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x917dec81 nf_ct_expect_related_report +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x95b99328 nf_ct_l4proto_pernet_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x98183d3a nf_ct_expect_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x98328ea6 nf_ct_l3proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x9baef0b5 nf_conntrack_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa2b4af81 nf_ct_helper_log +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa2c393c5 nf_ct_get_tuplepr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xab3d1f95 nf_ct_untracked_status_or +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xac5757b7 nf_ct_helper_expectfn_find_by_name +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xace0808d nf_ct_tmpl_free +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xad1bb027 nf_ct_free_hashtable +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xaeadb9eb nf_conntrack_helper_try_module_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb072df93 nf_conntrack_in +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb1c67c8f __nf_conntrack_helper_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb3247048 nf_ct_l4proto_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb602c57e nf_ct_l3proto_module_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb7dfe7cd nf_ct_l3proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xbb11bd16 nf_conntrack_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xbcfed3db nf_ct_iterate_cleanup +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xbda9cf90 nf_ct_l3proto_pernet_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xbe82019f nf_ct_l3proto_pernet_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc18ac88d nf_ct_expect_hsize +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc19d8e90 __nf_ct_refresh_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc40f284c nf_ct_helper_hsize +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc4fab2eb nf_ct_tmpl_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc6515a26 nf_ct_expect_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc8d5dbde nf_connlabels_replace +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xcb45c4c7 nf_ct_l3proto_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xcd243a5e nf_conntrack_l4proto_udp6 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd2e62761 nf_ct_l3protos +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xdc7be1e3 nf_conntrack_l4proto_tcp4 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xdfbc0596 nf_ct_deliver_cached_events +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xe0f029c4 nf_ct_invert_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xe2057727 nf_conntrack_l3proto_generic +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xe86cb6f6 __nf_conntrack_confirm +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xe88272b1 nf_ct_expect_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xeae00a09 nf_ct_timeout_find_get_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xee4d8361 nf_conntrack_l4proto_tcp6 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xef5a8170 nf_ct_port_tuple_to_nlattr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf0611fc9 __nf_ct_l4proto_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf0a145b9 __nf_ct_kill_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf38bcdf3 nf_conntrack_max +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xfeef7e19 nf_connlabel_match +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xff1258dc nf_conntrack_l4proto_udp4 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xff40b965 nf_conntrack_locks +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xffb01a75 nf_ct_extend_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_amanda 0xf03a5c07 nf_nat_amanda_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_broadcast 0x3ab92cc0 nf_conntrack_broadcast_help +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_ftp 0x883e1212 nf_nat_ftp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x0a5e298c nat_q931_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x1befffe3 nat_rtp_rtcp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x1ce9e867 nat_callforwarding_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x255e13a7 set_h245_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x33c767a4 set_sig_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x4cd28ad3 nat_t120_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x4fdf15d3 set_ras_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x68e52f72 nat_h245_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x6e07bd14 set_h225_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xc39215db get_h225_addr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_irc 0x0f97a0c9 nf_nat_irc_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0x23fde537 nf_nat_pptp_hook_exp_gre +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0x315d862f nf_nat_pptp_hook_expectfn +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0x3c3b9ed2 nf_nat_pptp_hook_inbound +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0xcbe36628 nf_nat_pptp_hook_outbound +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_proto_gre 0xb8ab81e7 nf_ct_gre_keymap_add +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_proto_gre 0xcd378855 nf_ct_gre_keymap_destroy +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x4c7388ba nf_nat_sip_hooks +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x55ec9c48 ct_sip_get_sdp_header +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x79b7fb57 ct_sip_parse_address_param +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x8c865031 ct_sip_parse_header_uri +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x91bf4f54 ct_sip_parse_request +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xcf523277 ct_sip_parse_numerical_param +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xfb3b5b42 ct_sip_get_header +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_snmp 0x1d5b579c nf_nat_snmp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_tftp 0xecb15f07 nf_nat_tftp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_log_common 0x00e9fbf4 nf_log_dump_tcp_header +EXPORT_SYMBOL_GPL net/netfilter/nf_log_common 0x1631b4b0 nf_log_dump_packet_common +EXPORT_SYMBOL_GPL net/netfilter/nf_log_common 0x39d8955c nf_log_dump_udp_header +EXPORT_SYMBOL_GPL net/netfilter/nf_log_common 0x3d9e93ca nf_log_dump_sk_uid_gid +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x0d9bae4b nf_nat_l4proto_nlattr_to_range +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x131f636c nf_nat_l4proto_in_range +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x181c94d6 nf_ct_nat_ext_add +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x2d74f678 nf_nat_l4proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x360f996b nf_nat_alloc_null_binding +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x5f24413a nf_nat_l4proto_unique_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x674c76fb nf_nat_l4proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x91b14e2e nf_nat_packet +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x9c663bf8 __nf_nat_l4proto_find +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xec281e18 nf_nat_l3proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xf77945f1 nf_nat_l3proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_nat_redirect 0x1b183a6a nf_nat_redirect_ipv6 +EXPORT_SYMBOL_GPL net/netfilter/nf_nat_redirect 0xb54bcfff nf_nat_redirect_ipv4 +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x11a006b5 synproxy_check_timestamp_cookie +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x45356d9d synproxy_parse_options +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x8841d39b synproxy_build_options +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x90298227 synproxy_init_timestamp_cookie +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0xb42e336a synproxy_options_size +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0xbed265cb synproxy_tstamp_adjust +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0xef7db50c synproxy_net_id +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x12626ba9 nft_validate_register_store +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x1e6b75a3 nft_parse_register +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x2891d28e nft_set_gc_batch_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x2e11903e nft_unregister_set +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x4f7c21d0 nft_register_afinfo +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x5778f241 nft_chain_validate_hooks +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x61ca0977 nft_set_elem_destroy +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x68088bee nft_data_uninit +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x753a5f88 nft_unregister_basechain +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x7a8f2c06 nft_dump_register +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x85fa5554 nft_do_chain +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x9616adb6 nft_unregister_chain_type +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xb75e23d4 nft_unregister_afinfo +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xbd50ed42 nft_data_dump +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xbf63bb61 nft_set_gc_batch_release +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xcf03e214 nft_chain_validate_dependency +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xd85efa77 nft_register_chain_type +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xdbcd2592 nft_register_set +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xdc659daf nft_register_basechain +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xe09dada2 nft_set_ext_types +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xe95738b7 nft_register_expr +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xed33c632 nft_validate_register_load +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xf2169d5b nft_unregister_expr +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xfbe55a65 nft_data_init +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x318ba80b nfnetlink_set_err +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x39960065 nfnetlink_unicast +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x4f692ed4 nfnetlink_alloc_skb +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x53bba37c nfnetlink_subsys_register +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x5ce3b588 nfnl_lock +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x779ecd71 nfnetlink_subsys_unregister +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xac5a761f nfnetlink_send +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xb121e332 nfnetlink_has_listeners +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xdb065657 nfnl_unlock +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0x21f6bba6 nfnl_acct_find_get +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0xbecf5d14 nfnl_acct_put +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0xc08d9f4a nfnl_acct_overquota +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0xcd4afd8d nfnl_acct_update +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_log 0xd3654e4e nfulnl_log_packet +EXPORT_SYMBOL_GPL net/netfilter/nft_masq 0x50eadf4f nft_masq_init +EXPORT_SYMBOL_GPL net/netfilter/nft_masq 0xa50393c6 nft_masq_validate +EXPORT_SYMBOL_GPL net/netfilter/nft_masq 0xac6a50d1 nft_masq_dump +EXPORT_SYMBOL_GPL net/netfilter/nft_masq 0xe3b8ea21 nft_masq_policy +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0x17b45cc0 nft_meta_set_dump +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0x35ff4dca nft_meta_get_eval +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0x660d56aa nft_meta_set_eval +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0x6df7ded8 nft_meta_get_dump +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0x844764f2 nft_meta_get_init +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0xb80e8358 nft_meta_policy +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0xd4465c33 nft_meta_set_init +EXPORT_SYMBOL_GPL net/netfilter/nft_redir 0x51045931 nft_redir_dump +EXPORT_SYMBOL_GPL net/netfilter/nft_redir 0x673b9179 nft_redir_validate +EXPORT_SYMBOL_GPL net/netfilter/nft_redir 0xa5be1e1e nft_redir_policy +EXPORT_SYMBOL_GPL net/netfilter/nft_redir 0xddb9ce2c nft_redir_init +EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0x096e8edd nft_reject_init +EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0xa2db3c7f nft_reject_policy +EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0xd0b5954e nft_reject_dump +EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0xddf15889 nft_reject_icmp_code +EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0xe8cdab4e nft_reject_icmpv6_code +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x161d1417 xt_compat_unlock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x19ef5d01 xt_check_target +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x1beeeaf7 xt_compat_target_to_user +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x2e661281 xt_compat_match_from_user +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x30031d53 xt_replace_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x40728a63 xt_find_revision +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x439c9567 xt_compat_match_to_user +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x51d357c7 xt_register_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x5aa90675 xt_unregister_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x5f82f1f7 xt_compat_flush_offsets +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x6031008a xt_request_find_match +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x63b0271b xt_proto_init +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x691a6d69 xt_compat_calc_jump +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x807d2b2c xt_recseq +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x8a68ba1c xt_compat_target_from_user +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x93a3fa39 xt_find_table_lock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xa897b7b2 xt_compat_target_offset +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xad9c9088 xt_request_find_target +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xbf970a38 xt_check_match +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xc12e7bdf xt_table_unlock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xd14aadb2 xt_compat_match_offset +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xe0b4971b xt_compat_lock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xe217229f xt_proto_fini +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xec24fd82 xt_compat_add_offset +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xf1055bfd xt_hook_unlink +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xf79d68b1 xt_hook_link +EXPORT_SYMBOL_GPL net/netfilter/xt_RATEEST 0x00204983 xt_rateest_put +EXPORT_SYMBOL_GPL net/netfilter/xt_RATEEST 0x482b6a12 xt_rateest_lookup +EXPORT_SYMBOL_GPL net/nfc/nci/nci 0x021b284e nci_spi_read +EXPORT_SYMBOL_GPL net/nfc/nci/nci 0x8bbb4e50 nci_spi_send +EXPORT_SYMBOL_GPL net/nfc/nci/nci 0xee0d5f5c nci_spi_allocate_spi +EXPORT_SYMBOL_GPL net/nfc/nci/nci_uart 0x87fa85bd nci_uart_unregister +EXPORT_SYMBOL_GPL net/nfc/nci/nci_uart 0xebbf00f4 nci_uart_register +EXPORT_SYMBOL_GPL net/nfc/nci/nci_uart 0xf3f6e358 nci_uart_set_config +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x181d2815 ovs_vport_alloc +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x2a68d9d5 ovs_vport_ops_unregister +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x4cffb169 ovs_vport_ops_register +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x591b81ad ovs_vport_receive +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0xb4884528 ovs_vport_free +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0xbb876404 ovs_vport_deferred_free +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0xc99b4c46 ovs_tunnel_get_egress_info +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0xda83411d ovs_net_id +EXPORT_SYMBOL_GPL net/rds/rds 0x00a467af rds_wq +EXPORT_SYMBOL_GPL net/rds/rds 0x09cff8b3 rds_inc_put +EXPORT_SYMBOL_GPL net/rds/rds 0x1d386cfe rds_message_addref +EXPORT_SYMBOL_GPL net/rds/rds 0x2954599f rds_recv_incoming +EXPORT_SYMBOL_GPL net/rds/rds 0x2c5c5514 rds_message_add_rdma_dest_extension +EXPORT_SYMBOL_GPL net/rds/rds 0x30720460 rds_conn_create +EXPORT_SYMBOL_GPL net/rds/rds 0x3101936e rds_message_add_extension +EXPORT_SYMBOL_GPL net/rds/rds 0x315ba4c4 rds_trans_unregister +EXPORT_SYMBOL_GPL net/rds/rds 0x349f8044 rds_connect_complete +EXPORT_SYMBOL_GPL net/rds/rds 0x3b4fc0fc rds_page_remainder_alloc +EXPORT_SYMBOL_GPL net/rds/rds 0x47ad88ba rds_atomic_send_complete +EXPORT_SYMBOL_GPL net/rds/rds 0x50cbe7b3 rds_stats +EXPORT_SYMBOL_GPL net/rds/rds 0x5e2637e7 rds_send_get_message +EXPORT_SYMBOL_GPL net/rds/rds 0x62c6eff3 rds_cong_map_updated +EXPORT_SYMBOL_GPL net/rds/rds 0x73aac73d rds_message_populate_header +EXPORT_SYMBOL_GPL net/rds/rds 0x7bc62829 rds_stats_info_copy +EXPORT_SYMBOL_GPL net/rds/rds 0x7e8534e0 rds_info_deregister_func +EXPORT_SYMBOL_GPL net/rds/rds 0x8f05c88c rds_conn_create_outgoing +EXPORT_SYMBOL_GPL net/rds/rds 0x9a65fd92 rds_rdma_send_complete +EXPORT_SYMBOL_GPL net/rds/rds 0x9fa07509 rds_page_copy_user +EXPORT_SYMBOL_GPL net/rds/rds 0xa6eae277 rds_info_register_func +EXPORT_SYMBOL_GPL net/rds/rds 0xacba1612 rds_conn_connect_if_down +EXPORT_SYMBOL_GPL net/rds/rds 0xbbe22425 rds_inc_init +EXPORT_SYMBOL_GPL net/rds/rds 0xc2dab779 rds_info_copy +EXPORT_SYMBOL_GPL net/rds/rds 0xc656a3c6 rds_conn_destroy +EXPORT_SYMBOL_GPL net/rds/rds 0xcec1d722 rds_message_put +EXPORT_SYMBOL_GPL net/rds/rds 0xdbb5f8e6 rds_trans_register +EXPORT_SYMBOL_GPL net/rds/rds 0xe6b2e5ab rds_for_each_conn_info +EXPORT_SYMBOL_GPL net/rds/rds 0xee5ddbf1 rds_conn_drop +EXPORT_SYMBOL_GPL net/rds/rds 0xef46791e rds_message_unmapped +EXPORT_SYMBOL_GPL net/rds/rds 0xf51b2e1c rds_send_drop_acked +EXPORT_SYMBOL_GPL net/rxrpc/af-rxrpc 0xc170bef1 rxrpc_unregister_security +EXPORT_SYMBOL_GPL net/rxrpc/af-rxrpc 0xf79e16d7 rxrpc_register_security +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x00c52ef5 g_make_token_header +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x610c83b5 gss_mech_register +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x76ba79ed svcauth_gss_flavor +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x8d1a827e svcauth_gss_register_pseudoflavor +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xb5dea7ef g_token_size +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xcf3c4a72 gss_mech_unregister +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xf8b2ff6e g_verify_token_header +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x01ee7342 xprt_alloc_slot +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x02b6ca74 svc_create_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0318e856 rpc_put_sb_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x03eb5e5a xdr_encode_array2 +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x04240fa2 xprt_release_rqst_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x045834e9 rpcauth_get_pseudoflavor +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0488c47c svc_drop +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x05d6632b sunrpc_cache_update +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 0x06b354ca xprt_wait_for_buffer_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x07f54599 rpc_count_iostats_metrics +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x08f6e676 sunrpc_cache_pipe_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x093b5fc6 cache_create_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0bb65779 rpc_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0ce0fd11 rpc_localaddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0d417554 rpc_restart_call +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0d782ed4 xdr_inline_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0da06165 rpc_wake_up +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0f668ba9 svc_auth_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x110e2845 svc_reserve +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x11d02c4c rpc_restart_call_prepare +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x14349cfc rpc_peeraddr2str +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x16a08a51 svc_rpcb_setup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1762aaf5 rpc_call_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x177c01ec rpc_wake_up_status +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x18ab74f9 rpc_call_sync +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1a4aeb44 rpc_wake_up_queued_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1aea156f rpc_net_ns +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1c78b25f sunrpc_cache_lookup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1e81f9ee rpc_pton +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1ea8e78d svc_reg_xprt_class +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1f2a9970 rpc_ntop +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1ffe8eca auth_domain_find +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x20c9f700 rpc_init_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2391f8b1 svc_seq_show +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x24b0f690 put_rpccred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x263f2446 rpc_unlink +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x285ae2c7 xdr_terminate_string +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2919b156 xdr_decode_string_inplace +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x29adba9b rpc_put_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2ad92492 rpc_init_pipe_dir_head +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2eec63c9 xdr_encode_netobj +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x313b0d94 rpcauth_cred_key_to_expire +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3149ac52 svc_proc_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3183ecbb cache_purge +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x31a89d59 rpc_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x32c37e91 xdr_init_decode_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x37e3eaf9 rpcauth_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x387e1639 rpc_pipefs_notifier_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x38f113e1 xdr_partial_copy_from_skb +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3b1edf66 sunrpc_cache_register_pipefs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3c52499c rpcauth_destroy_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3d898962 cache_destroy_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3e4c24cf rpc_sleep_on +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3fc4fc88 svc_wake_up +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x45f0361b rpc_setbufsize +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x46e37d0b svc_unreg_xprt_class +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x49456eed auth_domain_put +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x496249b9 csum_partial_copy_to_xdr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4d1c7a9e xdr_init_decode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4f13c7a2 xprt_alloc +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4f39eb54 rpc_call_null +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x507228e2 rpc_wake_up_next +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x50d6595e xdr_reserve_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x511dba37 xprt_reserve_xprt_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x53445f68 nlm_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5873017c rpc_alloc_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5a616909 rpcauth_generic_bind_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5af8828f rpc_shutdown_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5b101d9a rpc_d_lookup_sb +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5b5f9968 xprt_release_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5bfd00aa svc_recv +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5ddd83a9 rpc_proc_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5f494a78 rpc_release_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5fe67e0a svc_shutdown_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x61013506 xdr_write_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x63b39d89 rpc_peeraddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x64054e2c svc_rpcb_cleanup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x677d4987 _copy_from_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6b5ca55d svc_print_addr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6d5bdda6 xprt_free +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6d679425 rpcauth_key_timeout_notify +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6d7780e2 svc_prepare_thread +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6f248de8 rpc_lookup_cred_nonblock +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6f71df5a xdr_init_encode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x70546f6f svc_auth_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x711b441c xprt_unregister_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x71b9eebf sunrpc_cache_unregister_pipefs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x71fa908a cache_flush +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x74178dcd rpc_protocol +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x760f7408 __rpc_wait_for_completion_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x762bfc73 svc_xprt_put +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x770ecd8b write_bytes_to_xdr_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x787c389e gssd_running +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7ba75c3b xdr_process_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7cf39538 svc_sock_update_bufs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7de53067 rpc_init_rtt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7f18c04a rpc_get_timeout +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7f4d2518 xdr_set_scratch_buffer +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x800d0fb5 xdr_stream_pos +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x80951b28 rpcauth_get_gssinfo +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x80c37c27 xprt_reserve_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x81066e30 svc_addsock +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x839185a0 rpc_pipe_generic_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8499f87e xprt_disconnect_done +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x85e7b00d xdr_decode_word +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x871c5a2a rpc_rmdir +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8910e775 svc_process +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8b6991bf svc_proc_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8b8d5c22 xdr_commit_encode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8d68ffbf rpc_max_payload +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8e21a6a8 xdr_enter_page +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8eeee39d xdr_inline_decode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8f01cbe1 svc_exit_thread +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x91bd6216 rpc_remove_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x927e2c45 xdr_buf_read_netobj +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x931907a2 rpc_task_reset_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9402ee3c xprt_set_retrans_timeout_rtt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9497fac8 rpc_print_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x95233be9 xprt_wake_pending_tasks +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x953fd388 xdr_buf_subsegment +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x989e6980 xdr_buf_trim +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x98b75d64 rpcauth_list_flavors +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9d3e98f6 svc_xprt_init +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9d9051a7 svc_destroy +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9daa3f39 rpc_exit +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9ecd5f51 cache_register_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9ef449af rpc_init_priority_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9f154cb1 svc_set_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa1092912 rpc_malloc +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa2d17f5c rpcauth_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa4ac26e9 rpc_proc_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa7a2612f svc_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa843f4a2 rpcb_getport_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xab959df4 cache_unregister_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xaf5bf6ef nfs_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb0919383 rpc_lookup_machine_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb3591068 rpc_clnt_swap_deactivate +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb511b522 xprt_destroy_backchannel +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb51a3724 rpc_pipefs_notifier_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb62b1195 sunrpc_destroy_cache_detail +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb7ad7e0a svc_xprt_enqueue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb80b34bb rpc_clone_client_set_auth +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb84bf041 rpc_run_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb87b76b5 rpc_delay +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb8b8cf6f rpc_force_rebind +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb8c47771 rpc_lookup_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xba081521 svc_xprt_copy_addrs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbaed3c73 rpc_killall_tasks +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbbab517b svc_close_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbf9d1b96 nfsd_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbfc3e6ea read_bytes_from_xdr_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc0503beb svc_bind +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc097d3d3 bc_svc_process +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc112ba02 rpcauth_lookupcred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc12435e3 rpc_calc_rto +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc285d613 xprt_lookup_rqst +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc29ce1ac unix_domain_find +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc3880471 xdr_decode_netobj +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc6579202 rpc_call_start +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc6f887d9 rpc_add_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc83e6421 rpcauth_lookup_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc8448f20 xdr_shift_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc8e96dea qword_addhex +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcc476b8e sunrpc_init_cache_detail +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xccdfd66a rpc_mkpipe_dentry +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xce38ca70 rpc_destroy_pipe_data +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xce5de84f xdr_skb_read_bits +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcea9aabc svc_create_pooled +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcee467f3 xprt_load_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcf2f2fab xprt_setup_backchannel +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd027f8b8 xprt_lock_and_alloc_slot +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd08de5e9 rpcauth_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd39452c6 xprt_complete_rqst +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd3e569d1 xprt_adjust_cwnd +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd3e905e9 svc_max_payload +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd50b84fc rpc_mkpipe_data +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd535da98 rpc_queue_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd55bcbff xdr_encode_word +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd7f3c3a8 rpc_free_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd87c3880 xprt_register_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd9105dc6 auth_domain_lookup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd9b844ce rpc_clone_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdb89f294 xdr_decode_array2 +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdce03f0d rpc_sleep_on_priority +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdd1a0c21 rpc_switch_client_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdd6b720e rpc_init_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdf31a976 cache_check +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe193e9ab rpc_find_or_alloc_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe1ac2bb8 sunrpc_net_id +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe216908f xdr_read_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe2976469 svc_alien_sock +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe57941ba rpc_create_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe5919cb1 xdr_encode_opaque +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe6a884dc rpc_bind_new_program +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe6ee12fc svcauth_unix_set_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe7b7904f rpc_count_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe7ba7a79 svc_set_num_threads +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe896cd79 rpc_put_task_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe9513dc1 rpc_get_sb_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe97f4ce5 qword_get +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xeb58b71f rpcauth_init_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xec6a5be5 rpcauth_init_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xec772dab svc_xprt_names +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 0xef0c21e4 rpc_destroy_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf2e404f8 xprt_set_retrans_timeout_def +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf2f9917c rpcauth_stringify_acceptor +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf3f1a919 rpc_uaddr2sockaddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf442fde3 xprt_write_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf47bd691 rpc_clnt_swap_activate +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf750672d svc_find_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf7535ac1 svcauth_unix_purge +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf756b712 rpc_wake_up_first +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf820aacd svc_authenticate +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf9562013 xdr_buf_from_iov +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf9d1164c rpc_free +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfcda99e5 xprt_release_xprt_cong +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x0c79d5ef vm_sockets_get_local_cid +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x0c7ad78e vsock_remove_bound +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x15c0c57c vsock_addr_init +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x1c74ac2b vsock_remove_pending +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x2663cb64 vsock_addr_equals_addr +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x370e61a1 vsock_stream_has_space +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x3f6f9522 vsock_add_pending +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x59d943c8 vsock_addr_cast +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x59f73c65 vsock_stream_has_data +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x5a6583ce vsock_enqueue_accept +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x5b32e42c __vsock_core_init +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x6261a114 __vsock_create +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x751ff010 vsock_addr_unbind +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x76042c2f vsock_find_bound_socket +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x7f730c80 vsock_core_exit +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x8ed7e72e vsock_insert_connected +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x970b77bc vsock_pending_work +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xbcd8a59f vsock_remove_connected +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xbd0f699d vsock_addr_bound +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xc196c473 vsock_find_connected_socket +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xd95ac116 vsock_addr_validate +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xe0b636ee vsock_for_each_connected_socket +EXPORT_SYMBOL_GPL net/wimax/wimax 0x000d44b8 wimax_state_change +EXPORT_SYMBOL_GPL net/wimax/wimax 0x064b3088 wimax_dev_add +EXPORT_SYMBOL_GPL net/wimax/wimax 0x0abc09f2 wimax_msg_send +EXPORT_SYMBOL_GPL net/wimax/wimax 0x3726772d wimax_msg +EXPORT_SYMBOL_GPL net/wimax/wimax 0x5dd115ef wimax_dev_rm +EXPORT_SYMBOL_GPL net/wimax/wimax 0x779480c3 wimax_report_rfkill_hw +EXPORT_SYMBOL_GPL net/wimax/wimax 0x7f7574cb wimax_report_rfkill_sw +EXPORT_SYMBOL_GPL net/wimax/wimax 0x88d49078 wimax_msg_data_len +EXPORT_SYMBOL_GPL net/wimax/wimax 0xa7615517 wimax_msg_alloc +EXPORT_SYMBOL_GPL net/wimax/wimax 0xddfb5e40 wimax_dev_init +EXPORT_SYMBOL_GPL net/wimax/wimax 0xec8dec06 wimax_msg_data +EXPORT_SYMBOL_GPL net/wimax/wimax 0xf5e64d39 wimax_state_get +EXPORT_SYMBOL_GPL net/wimax/wimax 0xfe51f88e wimax_msg_len +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x0f5f9d44 cfg80211_vendor_cmd_reply +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x2b4bb1c3 cfg80211_shutdown_all_interfaces +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x34cd7820 cfg80211_wext_giwretry +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x7e8bf5bb cfg80211_wext_giwmode +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x820edc34 cfg80211_wext_giwfrag +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x85ff99aa cfg80211_wext_siwrts +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x99191292 cfg80211_wext_giwrange +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x9dd8f2fb cfg80211_wext_siwmode +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xb5b46642 cfg80211_wext_giwname +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xcacefe22 cfg80211_wext_siwfrag +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xe1474148 cfg80211_wext_siwscan +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xea4f8a5b cfg80211_wext_giwscan +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xf7ebc40d cfg80211_wext_giwrts +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 0x3bf471d7 xfrm_calg_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x47b34e60 xfrm_ealg_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x60b73277 xfrm_aead_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x7a8ca627 xfrm_count_pfkey_enc_supported +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x834ba96d xfrm_aalg_get_byid +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xa6e66685 xfrm_aalg_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xaa762fe2 xfrm_aalg_get_byidx +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xad1b60ed xfrm_calg_get_byid +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xdbfc35c8 xfrm_ealg_get_byidx +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xdfea3a6d xfrm_ealg_get_byid +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0x1966c94f ipcomp_output +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0x69a44ec6 ipcomp_init_state +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0x9f7ba03a ipcomp_input +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0xb46e0afd ipcomp_destroy +EXPORT_SYMBOL_GPL sound/core/seq/snd-seq-device 0x7996015f __snd_seq_driver_register +EXPORT_SYMBOL_GPL sound/core/seq/snd-seq-device 0x80ced549 snd_seq_driver_unregister +EXPORT_SYMBOL_GPL sound/core/snd 0x121b9332 snd_ctl_add_vmaster_hook +EXPORT_SYMBOL_GPL sound/core/snd 0x2064824d snd_device_disconnect +EXPORT_SYMBOL_GPL sound/core/snd 0x6169517e snd_ctl_sync_vmaster +EXPORT_SYMBOL_GPL sound/core/snd 0x633cbf0d snd_ctl_activate_id +EXPORT_SYMBOL_GPL sound/core/snd 0x7ad19504 snd_ctl_get_preferred_subdevice +EXPORT_SYMBOL_GPL sound/core/snd 0xf97ed2e7 snd_card_add_dev_attr +EXPORT_SYMBOL_GPL sound/core/snd 0xfb9c843a snd_device_initialize +EXPORT_SYMBOL_GPL sound/core/snd-compress 0x29f6bbc1 snd_compress_register +EXPORT_SYMBOL_GPL sound/core/snd-compress 0x792360e4 snd_compress_new +EXPORT_SYMBOL_GPL sound/core/snd-compress 0xe7c9ee9c snd_compress_deregister +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 0x1ac1970e snd_pcm_stream_unlock +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x1ae67479 _snd_pcm_stream_lock_irqsave +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x1d2ca51d snd_pcm_lib_default_mmap +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x6107511c snd_pcm_add_chmap_ctls +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x88e66708 snd_pcm_stream_lock +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x9927feb3 snd_pcm_stream_lock_irq +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 0xcd4c92b2 snd_pcm_stream_unlock_irq +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0xd0cb2640 snd_pcm_stop_xrun +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0xd5866373 snd_pcm_stream_unlock_irqrestore +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x14ec7820 snd_dmaengine_pcm_pointer_no_residue +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x1af60168 snd_dmaengine_pcm_get_chan +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x1d3f47e4 snd_dmaengine_pcm_set_config_from_dai_data +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x3dc5fb56 snd_dmaengine_pcm_request_channel +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x6e91828a snd_dmaengine_pcm_trigger +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x94f01c2f snd_hwparams_to_dma_slave_config +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x960d108e snd_dmaengine_pcm_open +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0x9bca80ee snd_dmaengine_pcm_pointer +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0xa188a131 snd_dmaengine_pcm_close +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0xc4f9f6c4 snd_dmaengine_pcm_open_request_chan +EXPORT_SYMBOL_GPL sound/core/snd-pcm-dmaengine 0xc8f2db64 snd_dmaengine_pcm_close_release_chan +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x05c9e97f snd_hdac_power_down +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x0785544a snd_hdac_device_unregister +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x08a83666 hdac_get_device_id +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x08d305f7 snd_hdac_read_parm_uncached +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x0a9dbdbd snd_hdac_override_parm +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x0ae485f2 snd_hda_bus_type +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x0b0fe8b6 snd_hdac_stream_set_params +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x13304ffa snd_hdac_exec_verb +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x1b367c33 snd_hdac_dsp_cleanup +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x1f305421 snd_hdac_bus_queue_event +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x2132ef54 snd_hdac_power_up_pm +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x22746d4b snd_hdac_link_power +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x2283bb5f snd_hdac_device_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x22e3a15a snd_hdac_power_down_pm +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x237d3ebf snd_hdac_regmap_exit +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x23d4000f snd_hdac_make_cmd +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x244443e8 snd_hdac_bus_update_rirb +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x282dff72 snd_hdac_bus_exec_verb_unlocked +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x2acfb613 snd_hdac_read +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x2fdb9072 snd_hdac_stream_stop +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x32a99302 snd_hdac_stream_release +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x33ecc789 snd_hdac_stream_timecounter_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x3b58aa5b snd_hdac_device_register +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x3e165cb2 snd_hdac_stream_assign +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x49804236 snd_hdac_dsp_trigger +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x5236be15 snd_hdac_stream_sync_trigger +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x52569d12 snd_hdac_stream_sync +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x5401ae2e snd_hdac_bus_init_chip +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x54c8c992 snd_hdac_bus_free_stream_pages +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x599eb324 snd_hdac_regmap_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x5de88c67 snd_hdac_stream_reset +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x63eb3a9b snd_hdac_regmap_add_vendor_verb +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x6e22fb48 snd_hdac_stream_setup +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x6e9840a0 snd_hdac_bus_remove_device +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x718b4de8 snd_hdac_refresh_widgets +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x772fe4dd snd_hdac_stream_cleanup +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x86a44d55 snd_hdac_stream_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x8ec8e05b snd_hdac_bus_stop_cmd_io +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x989b110c snd_hdac_get_sub_nodes +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x9a8e1877 snd_array_free +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x9f0aa2c9 snd_hdac_bus_stop_chip +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0x9f991e06 snd_hdac_get_connections +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xa0126ec9 snd_hdac_bus_add_device +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xa60967c0 snd_hdac_bus_exit_link_reset +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xa7eca718 snd_hdac_bus_send_cmd +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xb08b2442 _snd_hdac_read_parm +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xb27444a9 snd_hdac_bus_init +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xb341d3ae snd_hdac_stream_setup_periods +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xb7a5304b snd_hdac_bus_enter_link_reset +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xbe7dd7dc snd_array_new +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xc434c20a snd_hdac_query_supported_pcm +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xc68911b7 snd_hdac_stream_clear +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xcada08ca snd_hdac_bus_handle_stream_irq +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xcf80e062 snd_hdac_is_supported_format +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xdb2745c5 snd_hdac_bus_exec_verb +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xdd8fdc83 snd_hdac_bus_exit +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xdd9a804a snd_hdac_calc_stream_format +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xe69365df snd_hdac_bus_alloc_stream_pages +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xf19efe87 snd_hdac_regmap_update_raw +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xf24515e1 snd_hdac_dsp_prepare +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xf2b5e9ce snd_hdac_device_exit +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xf374b4b4 snd_hdac_regmap_write_raw +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xf6904f41 snd_hdac_bus_init_cmd_io +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xfa5c5de4 snd_hdac_regmap_read_raw +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xfb64d06f snd_hdac_bus_get_response +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xfc02fb3b snd_hdac_power_up +EXPORT_SYMBOL_GPL sound/hda/snd-hda-core 0xfc17c7f6 snd_hdac_stream_start +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x1a1dd7fc snd_ak4113_build +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x37b83210 snd_ak4113_check_rate_and_errors +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x51101609 snd_ak4113_external_rate +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x9188b25f snd_ak4113_reg_write +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x9ae0fc3d snd_ak4113_reinit +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0xc0db5c08 snd_ak4113_create +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x00dd9a20 snd_hda_codec_configure +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 0x0eb9fdb6 snd_hda_set_power_save +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0febf4a5 snd_hda_jack_tbl_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x10cda770 azx_codec_configure +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1113e7e6 snd_hda_apply_fixup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x14ebaca7 snd_hda_codec_read +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x183e5515 snd_hda_multi_out_dig_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x18db1b83 snd_hda_multi_out_analog_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1945f401 snd_hda_codec_write +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1fc14632 snd_hda_multi_out_analog_open +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x20144389 snd_hda_jack_set_gating_jack +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x20626318 snd_hda_jack_set_dirty_all +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x21e2395d snd_hda_codec_pcm_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x22676e88 snd_hda_find_mixer_ctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x227e2247 snd_hda_codec_amp_init_stereo +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x24484a0e snd_hda_multi_out_dig_close +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x27f1f93b snd_hda_register_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x28770012 azx_bus_init +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x28a56173 snd_hda_get_pin_label +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2c4ac0fe snd_hda_mixer_amp_volume_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2c5bcb49 snd_hda_bind_vol +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2e28d263 snd_hda_ctl_add +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2e38fce9 snd_hda_sequence_write +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2f0316e4 snd_hda_input_mux_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x35d37e5e snd_hda_codec_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x36f054b1 snd_hda_add_imux_item +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3710cee4 is_jack_detectable +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x375cacd5 snd_hda_input_mux_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x38ce402b azx_interrupt +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3cd9536c snd_hda_spdif_ctls_unassign +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3dae3474 snd_hda_enable_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3f2561ee snd_hda_codec_set_pin_target +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3f536fed snd_hda_add_new_ctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3f74f3a5 _snd_hda_set_pin_ctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3fb8648a azx_probe_codecs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4105039d snd_hda_spdif_ctls_assign +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x438bcb43 azx_get_pos_lpib +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x48620e27 azx_init_chip +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4921a8c4 snd_hda_add_vmaster_hook +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4d25959b snd_hda_codec_amp_update +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4f965d97 snd_hda_codec_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x50d87b10 hda_get_autocfg_input_label +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x54d3f725 snd_hda_codec_get_pin_target +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x574120fc snd_hda_enum_helper_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x58953674 snd_hda_mixer_amp_switch_get_beep +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5b82cea7 snd_hda_spdif_out_of_nid +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5c5aef6f snd_hda_get_default_vref +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5d225830 snd_hda_lock_devices +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x60a6180b snd_hda_unlock_devices +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6353fd43 snd_hda_add_nid +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6437e0df snd_hda_codec_eapd_power_filter +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x66a1c7d4 snd_hda_mixer_amp_volume_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x69d34dcf snd_hda_jack_tbl_get_from_tag +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6d16de7e snd_hda_mixer_amp_volume_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7131d5f6 snd_hda_codec_amp_init +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x741ae10f snd_hda_correct_pin_ctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7685e5b1 snd_hda_bind_sw +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x790ac4a0 snd_hda_apply_pincfgs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7b3c653e snd_hda_check_amp_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7f445a06 snd_hda_sync_vmaster_hook +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7fc92fed snd_hda_jack_add_kctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x817490c9 snd_hda_mixer_amp_switch_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x839b96d2 azx_stop_chip +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x83b58470 snd_hda_apply_verbs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x83c0ce60 snd_hda_mixer_amp_switch_put_beep +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8446b3eb snd_hda_multi_out_dig_open +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x853b8ea6 snd_hda_get_conn_index +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8596f69a snd_hda_get_bool_hint +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x85a2cd0f snd_hda_codec_new +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x884c5054 snd_hda_get_int_hint +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x894e692d query_amp_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8a295f82 azx_get_position +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8ac38963 snd_hda_mixer_amp_switch_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8e4e6b4e __snd_hda_codec_cleanup_stream +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x90062c93 snd_hda_codec_amp_stereo +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9290cc2d snd_hda_mixer_bind_ctls_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x92e27b81 snd_hda_jack_report_sync +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x92e30d82 snd_hda_multi_out_analog_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x940108d8 snd_hda_create_dig_out_ctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x96144bf4 snd_hda_codec_set_power_to_all +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x96cd19ac azx_stop_all_streams +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x98d483c5 snd_hda_mixer_bind_switch_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x98ed735a snd_hda_create_spdif_share_sw +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x991ab607 snd_hda_override_amp_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9927d587 snd_hda_mixer_bind_ctls_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9cd0dca9 snd_hda_set_vmaster_tlv +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9df06bcb snd_hda_check_amp_list_power +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9ea4bd67 snd_hda_codec_update_widgets +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9fba0689 snd_hda_detach_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa2827d76 snd_hda_get_jack_location +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xab021678 snd_hda_pin_sense +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb205f1e2 snd_hda_get_conn_list +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb413d4ec __hda_codec_driver_register +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb88fdb9e snd_hda_jack_detect_state +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xbee07491 snd_hda_codec_pcm_new +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc4cce21a snd_hda_parse_pin_defcfg +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc4d6d6f6 azx_init_streams +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc50252c0 snd_hda_codec_get_pincfg +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc5ea286e azx_get_pos_posbuf +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc652fd69 snd_hda_get_jack_connectivity +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc65b4ca7 snd_hda_jack_add_kctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc867f609 snd_hda_codec_setup_stream +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xcad61350 snd_hda_jack_poll_all +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xcb301b6e snd_hda_get_jack_type +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xcb5111ac snd_hda_get_connections +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xcb9f97e3 snd_hda_mixer_amp_switch_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd08f3c87 snd_hda_jack_unsol_event +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd23f84ef snd_hda_mixer_bind_switch_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd3ccd2ad snd_hda_mixer_bind_ctls_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd3f039b8 snd_hda_shutup_pins +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd6e9129f snd_hda_pick_fixup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xdba38c37 snd_hda_get_hint +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xdc3d5edb snd_hda_add_verbs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xdce00688 snd_hda_override_conn_list +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xdd916ecc snd_hda_codec_set_pincfg +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xdf6e0cc6 snd_hda_codec_load_dsp_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 0xe3a51732 hda_codec_driver_unregister +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe988ded4 snd_hda_jack_detect_enable +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xec2da7ed snd_hda_multi_out_dig_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xeda3a721 snd_print_pcm_bits +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xedca6b14 snd_hda_jack_detect_enable_callback +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xee2ac031 snd_hda_attach_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xeedd1b29 snd_hda_codec_load_dsp_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf255c112 snd_hda_mixer_amp_tlv +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf2a82bd8 __snd_hda_add_vmaster +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf2fa5e63 snd_hda_create_spdif_in_ctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf5385f7e snd_hda_pick_pin_fixup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf97890f8 azx_free_streams +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xfbfa2d2a snd_hda_mixer_bind_tlv +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xfc6fe83e snd_hda_load_patch +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xfff0d0c6 snd_hda_codec_load_dsp_trigger +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x05e47593 snd_hda_gen_hp_automute +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x05e899c3 snd_hda_gen_stream_pm +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x0618c367 snd_hda_gen_free +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x118c917e snd_hda_add_new_path +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x1bc7cc6d snd_hda_gen_init +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x21477ffd snd_hda_gen_mic_autoswitch +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x2478f6c5 snd_hda_gen_add_kctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x35d8fbd0 snd_hda_gen_fix_pin_power +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x36e6a51d snd_hda_gen_path_power_filter +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x41b66566 snd_hda_gen_spec_init +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x429b3402 snd_hda_get_path_idx +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x44559953 snd_hda_parse_nid_path +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x46ef414c snd_hda_gen_line_automute +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x4eb20ddc snd_hda_gen_build_controls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x63bb3895 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 0x871a6e44 hda_extra_out_badness +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x87233fcc snd_hda_get_path_from_idx +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0x8c660974 snd_hda_activate_path +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xacdcf2f8 snd_hda_gen_check_power_status +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xb1a61f67 snd_hda_gen_parse_auto_config +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xf9768f04 snd_hda_get_nid_path +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec-generic 0xfdf75c75 snd_hda_gen_update_outputs +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs4271 0x7d05786f cs4271_dt_ids +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs4271 0xa1d95880 cs4271_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs4271 0xd7dd8589 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 0xcb681d5c cs42l51_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42l51 0xce934b9e cs42l51_regmap +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 0xa365ab80 cs42xx8_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0xa8af8b5c cs42xx8_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0xad23b520 cs42xx8_pm +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0xcd3794c9 cs42448_data +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-es8328 0x07aec49b es8328_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-es8328 0x0f46caba es8328_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm512x 0x0f20a478 pcm512x_remove +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm512x 0x1442b843 pcm512x_pm_ops +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm512x 0x247e68d4 pcm512x_regmap +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm512x 0x90ce08ed pcm512x_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0x1a143429 sigmadsp_attach +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0x1e558479 devm_sigmadsp_init +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0x500e97ba sigmadsp_setup +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0xaac015ff sigmadsp_reset +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0xb484d5cc sigmadsp_restrict_params +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp-i2c 0xb9c96ee5 devm_sigmadsp_init_i2c +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-ssm2602 0x7e82d4e9 ssm2602_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-ssm2602 0xc09fd575 ssm2602_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-tpa6130a2 0x65cbb9cd tpa6130a2_stereo_enable +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-tpa6130a2 0xd4f9c990 tpa6130a2_add_controls +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-ts3a227e 0x27ed634b ts3a227e_enable_jack_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8804 0x61bb20fe wm8804_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8804 0xb06b60d7 wm8804_remove +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8804 0xdf790729 wm8804_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8804 0xee264603 wm8804_pm +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8903 0xc59022d3 wm8903_mic_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8962 0x6dd16686 wm8962_mic_detect +EXPORT_SYMBOL_GPL sound/soc/fsl/snd-soc-fsl-asrc 0x022a867c fsl_asrc_get_dma_channel +EXPORT_SYMBOL_GPL sound/soc/fsl/snd-soc-fsl-asrc 0xc7a697b4 fsl_asrc_platform +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/snd-soc-core 0x0148d288 snd_soc_dapm_add_routes +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0787b7ea dpcm_be_dai_trigger +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0b86ab95 snd_soc_put_volsw_range +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0d684159 snd_soc_cnew +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0d7939d4 snd_soc_dapm_new_widgets +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0e460569 snd_soc_dapm_force_enable_pin_unlocked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x174c5938 snd_soc_add_card_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1767b805 snd_soc_suspend +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x17a8ba63 snd_soc_dai_set_bclk_ratio +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1a31e61e snd_soc_platform_write +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1b400e05 snd_soc_dapm_enable_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1cb62b9a snd_soc_jack_add_zones +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1cf4fcc4 snd_soc_put_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2541a979 snd_soc_calc_frame_size +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x25bc4742 snd_soc_dai_set_pll +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x27e37d71 snd_soc_runtime_set_dai_fmt +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2b7f54c1 snd_soc_bytes_tlv_callback +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2fc336cc snd_soc_dapm_force_bias_level +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x33c88275 snd_soc_info_volsw_range +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x342a5d16 snd_soc_jack_add_gpios +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x34d0c281 snd_soc_dapm_get_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x36c25def snd_soc_dapm_force_enable_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x37450387 snd_soc_get_volsw_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x42acb633 snd_soc_dapm_nc_pin_unlocked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4569b2a7 snd_soc_dapm_weak_routes +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x45c9a6ba snd_soc_platform_trigger +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x480d21ee snd_soc_dapm_del_routes +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x48bb8618 snd_soc_bytes_get +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x49833a74 snd_soc_put_strobe +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x49953238 snd_soc_dai_set_channel_map +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x49eb121e snd_soc_get_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4a3c7b14 snd_soc_read +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4c349bf7 snd_soc_unregister_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4e2a98d3 snd_soc_remove_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5007f7d8 snd_soc_new_ac97_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x50dbf14d snd_soc_dapm_mux_update_power +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x543ce998 snd_soc_set_runtime_hwparams +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x583cd894 snd_soc_jack_report +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x587acbe4 snd_soc_limit_volume +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x605fd671 snd_soc_dai_set_clkdiv +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x60c95cb0 snd_dmaengine_pcm_unregister +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x60d94a9e snd_soc_dapm_put_pin_switch +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x61cd2f39 snd_soc_register_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x621900ed snd_soc_dpcm_fe_can_update +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x624964bb snd_soc_bytes_info_ext +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x63f3c431 devm_snd_soc_register_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x64ee58a1 snd_soc_debugfs_root +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6565a113 snd_soc_put_xr_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x67cde677 snd_soc_dai_set_tdm_slot +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x68f5dce0 snd_dmaengine_pcm_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6ada8c48 snd_soc_component_init_regmap +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6c7f05cc snd_soc_dpcm_get_substream +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x70b1b36c snd_soc_of_get_dai_link_codecs +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7268c2c0 snd_soc_of_get_dai_name +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x72a8c2cd devm_snd_soc_register_component +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x75469b65 snd_soc_add_codec_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x769eecba snd_soc_put_volsw_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x77e6f2a3 snd_soc_jack_add_gpiods +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x78b52fe0 snd_soc_update_bits +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7add4f9e snd_soc_dapm_disable_pin_unlocked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7d873212 snd_soc_jack_add_pins +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7e37def9 snd_soc_codec_set_pll +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7e606130 snd_soc_calc_bclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7f38fd0e devm_snd_soc_register_card +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7f46575b snd_soc_dapm_free +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7f99e655 snd_soc_jack_free_gpios +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x80bd48fa dapm_clock_event +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8134f9e6 snd_soc_add_component_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8ba385ce snd_soc_component_write +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8bef94c0 snd_soc_info_xr_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8c44cb00 snd_soc_unregister_card +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8d0d897d snd_soc_add_platform_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8ed985fd snd_soc_of_parse_audio_routing +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8f21dbda snd_soc_dapm_kcontrol_dapm +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x90660bde snd_soc_component_update_bits_async +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9147d198 snd_soc_dpcm_be_can_update +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x929e1b36 snd_soc_component_exit_regmap +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x99131987 snd_soc_dapm_get_pin_switch +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9aad53a6 snd_soc_dapm_disable_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9b3842d4 snd_soc_dapm_get_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9dc040d5 snd_soc_free_ac97_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9e22d7d8 snd_soc_component_update_bits +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9e4d0213 snd_soc_card_jack_new +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9e6e5510 snd_soc_info_volsw_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa03dabe6 snd_soc_resume +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa234686d dapm_regulator_event +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa2456935 snd_soc_dai_set_tristate +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa3000253 snd_soc_dai_set_sysclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa4ac92fb soc_ac97_ops +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xab2d18b5 snd_soc_dpcm_be_get_state +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xabade76e snd_soc_register_card +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xac403f14 snd_soc_component_async_complete +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xaccb5427 snd_soc_register_component +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xada35182 snd_soc_bytes_put +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xafaffb86 snd_soc_dapm_nc_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb489b01e snd_dmaengine_pcm_prepare_slave_config +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb4ff9005 snd_soc_test_bits +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb61183bf snd_soc_jack_get_type +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb7c4e0a1 snd_soc_of_parse_tdm_slot +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb7eba3a3 snd_soc_set_ac97_ops_of_reset +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xba0b600e snd_soc_dapm_ignore_suspend +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xba2ad41c snd_soc_get_dai_substream +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xba9ada58 snd_soc_dapm_info_pin_switch +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xbc3152d8 snd_soc_get_strobe +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xbe434b8f snd_soc_add_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc03d87a3 snd_soc_register_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc285f741 snd_soc_dai_digital_mute +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc411e60b snd_soc_poweroff +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc74911da snd_soc_of_parse_card_name +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc8269f94 snd_soc_params_to_frame_size +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc9f53999 snd_soc_dpcm_can_be_params +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xca9ed6a8 snd_soc_jack_notifier_unregister +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xcbf59b37 snd_soc_jack_notifier_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xcc0cb827 snd_soc_bytes_info +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xcdcb598e snd_soc_info_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xcf4e5e08 snd_soc_component_read +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xcf8e67cc snd_soc_dapm_sync_unlocked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd037d9a7 snd_soc_dapm_get_pin_status +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd3ec7732 snd_soc_pm_ops +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd4386ee4 snd_soc_dai_set_fmt +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd43a12e8 snd_soc_dpcm_can_be_free_stop +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd8c95a44 snd_soc_get_xr_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xde4c170a snd_soc_dapm_enable_pin_unlocked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe097e3f1 snd_soc_of_parse_audio_simple_widgets +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe0a4d6a2 snd_soc_of_parse_daifmt +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe1120dd3 snd_soc_set_ac97_ops +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe137f022 snd_soc_dapm_new_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe1445630 snd_soc_dapm_mixer_update_power +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe273cf35 dapm_mark_endpoints_dirty +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe4a79aa2 snd_soc_get_pcm_runtime +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe62fa176 devm_snd_dmaengine_pcm_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe8921985 dapm_kcontrol_get_value +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xeb2d8ce2 snd_soc_unregister_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xeb711ae7 snd_soc_params_to_bclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xedf85f6c snd_soc_dapm_put_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xee1508b2 snd_soc_card_get_kcontrol +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xefd23968 snd_soc_get_volsw_range +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf0622094 snd_soc_unregister_component +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf089c89a snd_soc_component_test_bits +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf447e949 snd_soc_put_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf4caf28c snd_soc_platform_read +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf515329e snd_soc_add_dai_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf62190eb snd_soc_info_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf80d6a60 snd_soc_dapm_sync +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf8a06e39 snd_soc_get_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf9f293dc snd_soc_lookup_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xfab1608d snd_soc_dpcm_be_set_state +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xfc3a4bb3 snd_soc_codec_set_sysclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xfdcef913 snd_soc_write +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xffaa2047 snd_soc_dapm_put_enum_double +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x0c12e084 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 0x21d5f3c4 line6_probe +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x240fc9c1 line6_read_data +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x405b0f88 line6_pcm_acquire +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x60433ef9 line6_init_midi +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x65c3a8a3 line6_suspend +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x87bfdd40 line6_init_pcm +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x8ec973cd line6_start_timer +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x9fba8f87 line6_disconnect +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xa345f020 line6_send_sysex_message +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xafd873b9 line6_send_raw_message_async +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xcc0336d2 line6_version_request_async +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xdf7705c4 line6_write_data +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xe0093ba7 line6_alloc_sysex_buffer +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xeb099fb1 line6_read_serial_number +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xf4f1e1ae line6_resume +EXPORT_SYMBOL_GPL vmlinux 0x00074696 phy_remove_lookup +EXPORT_SYMBOL_GPL vmlinux 0x0009ca8a led_trigger_blink_oneshot +EXPORT_SYMBOL_GPL vmlinux 0x001409e8 ata_eh_analyze_ncq_error +EXPORT_SYMBOL_GPL vmlinux 0x002bac96 cpufreq_cpu_get +EXPORT_SYMBOL_GPL vmlinux 0x003838ac pm_runtime_no_callbacks +EXPORT_SYMBOL_GPL vmlinux 0x00533357 wm831x_reg_lock +EXPORT_SYMBOL_GPL vmlinux 0x00603195 kernfs_put +EXPORT_SYMBOL_GPL vmlinux 0x006820b4 pci_write_msi_msg +EXPORT_SYMBOL_GPL vmlinux 0x006ba4db da903x_write +EXPORT_SYMBOL_GPL vmlinux 0x0070ef14 __tracepoint_rpm_idle +EXPORT_SYMBOL_GPL vmlinux 0x009304b6 ata_tf_from_fis +EXPORT_SYMBOL_GPL vmlinux 0x009862e2 dma_buf_fd +EXPORT_SYMBOL_GPL vmlinux 0x00b4234c fuse_conn_get +EXPORT_SYMBOL_GPL vmlinux 0x00da6301 user_preparse +EXPORT_SYMBOL_GPL vmlinux 0x00ebcb5d ata_id_string +EXPORT_SYMBOL_GPL vmlinux 0x00f42330 wm8350_clear_bits +EXPORT_SYMBOL_GPL vmlinux 0x01010c6d klist_add_before +EXPORT_SYMBOL_GPL vmlinux 0x01045aef devm_power_supply_get_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0x01157ef1 hwpoison_filter +EXPORT_SYMBOL_GPL vmlinux 0x011893d6 udp4_hwcsum +EXPORT_SYMBOL_GPL vmlinux 0x0119bf7d extcon_register_interest +EXPORT_SYMBOL_GPL vmlinux 0x011cf028 regulator_suspend_finish +EXPORT_SYMBOL_GPL vmlinux 0x01317db9 regmap_raw_write +EXPORT_SYMBOL_GPL vmlinux 0x014a3488 sdio_readl +EXPORT_SYMBOL_GPL vmlinux 0x014cbd63 power_supply_get_by_name +EXPORT_SYMBOL_GPL vmlinux 0x01531fbc ata_host_alloc +EXPORT_SYMBOL_GPL vmlinux 0x019765e2 phy_pm_runtime_get +EXPORT_SYMBOL_GPL vmlinux 0x01a0df29 srp_stop_rport_timers +EXPORT_SYMBOL_GPL vmlinux 0x01ce9d82 pci_user_read_config_byte +EXPORT_SYMBOL_GPL vmlinux 0x01e1a8de kgdb_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x0214ef8c sysfs_merge_group +EXPORT_SYMBOL_GPL vmlinux 0x021ebfda btree_update +EXPORT_SYMBOL_GPL vmlinux 0x02228de8 thermal_zone_of_sensor_register +EXPORT_SYMBOL_GPL vmlinux 0x026211e2 memory_failure_queue +EXPORT_SYMBOL_GPL vmlinux 0x026fca78 shmem_add_seals +EXPORT_SYMBOL_GPL vmlinux 0x0278422e blk_queue_lld_busy +EXPORT_SYMBOL_GPL vmlinux 0x02c5fa7d trace_seq_printf +EXPORT_SYMBOL_GPL vmlinux 0x02cb9ba6 power_supply_set_battery_charged +EXPORT_SYMBOL_GPL vmlinux 0x02fea2ae rcu_note_context_switch +EXPORT_SYMBOL_GPL vmlinux 0x0321cdbf of_alias_get_highest_id +EXPORT_SYMBOL_GPL vmlinux 0x032f6003 task_user_regset_view +EXPORT_SYMBOL_GPL vmlinux 0x033832c7 usb_amd_hang_symptom_quirk +EXPORT_SYMBOL_GPL vmlinux 0x03432bbe invalidate_inode_pages2_range +EXPORT_SYMBOL_GPL vmlinux 0x0343bdf1 __i2c_board_list +EXPORT_SYMBOL_GPL vmlinux 0x0345ffc0 dev_pm_set_dedicated_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0x0392e81b tps6586x_irq_get_virq +EXPORT_SYMBOL_GPL vmlinux 0x039fd867 trace_clock_global +EXPORT_SYMBOL_GPL vmlinux 0x03bc6f86 irq_create_direct_mapping +EXPORT_SYMBOL_GPL vmlinux 0x03bca677 anon_transport_class_unregister +EXPORT_SYMBOL_GPL vmlinux 0x03cd43f6 skcipher_geniv_free +EXPORT_SYMBOL_GPL vmlinux 0x03e07e20 fuse_sync_release +EXPORT_SYMBOL_GPL vmlinux 0x03e3686c ata_timing_cycle2mode +EXPORT_SYMBOL_GPL vmlinux 0x0402cbbf preempt_notifier_inc +EXPORT_SYMBOL_GPL vmlinux 0x0406c48c pm_runtime_forbid +EXPORT_SYMBOL_GPL vmlinux 0x04088f99 xfrm_audit_state_icvfail +EXPORT_SYMBOL_GPL vmlinux 0x0453f04f crypto_aes_set_key +EXPORT_SYMBOL_GPL vmlinux 0x0464e640 ping_close +EXPORT_SYMBOL_GPL vmlinux 0x0465a073 regmap_reg_in_ranges +EXPORT_SYMBOL_GPL vmlinux 0x0476c585 kvmppc_do_h_enter +EXPORT_SYMBOL_GPL vmlinux 0x048b5f8d twl4030_audio_get_mclk +EXPORT_SYMBOL_GPL vmlinux 0x049840e9 wait_for_tpm_stat +EXPORT_SYMBOL_GPL vmlinux 0x049a800c pci_check_and_mask_intx +EXPORT_SYMBOL_GPL vmlinux 0x04ba3eb3 cpufreq_frequency_table_target +EXPORT_SYMBOL_GPL vmlinux 0x04bdf50d tpm2_probe +EXPORT_SYMBOL_GPL vmlinux 0x04c4f603 mpi_get_buffer +EXPORT_SYMBOL_GPL vmlinux 0x04c8e559 isa_bridge_pcidev +EXPORT_SYMBOL_GPL vmlinux 0x04df8fbc lzo1x_decompress_safe +EXPORT_SYMBOL_GPL vmlinux 0x04e0cc17 regulator_get_voltage +EXPORT_SYMBOL_GPL vmlinux 0x0500644c irq_find_host +EXPORT_SYMBOL_GPL vmlinux 0x05125d8c i2c_add_numbered_adapter +EXPORT_SYMBOL_GPL vmlinux 0x05291349 modify_user_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x052fd481 crypto_spawn_tfm2 +EXPORT_SYMBOL_GPL vmlinux 0x053494cb tpm_get_random +EXPORT_SYMBOL_GPL vmlinux 0x054e550b kernel_halt +EXPORT_SYMBOL_GPL vmlinux 0x055b4303 regmap_add_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0x0568c3d7 driver_create_file +EXPORT_SYMBOL_GPL vmlinux 0x056fdaf4 device_property_read_u32_array +EXPORT_SYMBOL_GPL vmlinux 0x057f701d rio_mport_read_config_32 +EXPORT_SYMBOL_GPL vmlinux 0x05805373 trace_buffer_unlock_commit_regs +EXPORT_SYMBOL_GPL vmlinux 0x0582d8a7 extcon_set_state +EXPORT_SYMBOL_GPL vmlinux 0x058b582a vt_get_leds +EXPORT_SYMBOL_GPL vmlinux 0x059c0e24 input_ff_upload +EXPORT_SYMBOL_GPL vmlinux 0x05a851c1 __mmu_notifier_invalidate_range_end +EXPORT_SYMBOL_GPL vmlinux 0x05a9bb1e usb_hcd_unmap_urb_setup_for_dma +EXPORT_SYMBOL_GPL vmlinux 0x05bd6026 handle_mm_fault +EXPORT_SYMBOL_GPL vmlinux 0x05c8d1a5 __platform_driver_probe +EXPORT_SYMBOL_GPL vmlinux 0x05d17911 rio_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x061dee59 btree_remove +EXPORT_SYMBOL_GPL vmlinux 0x0626da5f od_unregister_powersave_bias_handler +EXPORT_SYMBOL_GPL vmlinux 0x063b5558 dax_zero_page_range +EXPORT_SYMBOL_GPL vmlinux 0x063e5af0 tty_port_install +EXPORT_SYMBOL_GPL vmlinux 0x0648c859 bus_rescan_devices +EXPORT_SYMBOL_GPL vmlinux 0x064db9a5 mark_mounts_for_expiry +EXPORT_SYMBOL_GPL vmlinux 0x0698a195 clockevents_config_and_register +EXPORT_SYMBOL_GPL vmlinux 0x06a93417 phy_init +EXPORT_SYMBOL_GPL vmlinux 0x06c4cbeb component_bind_all +EXPORT_SYMBOL_GPL vmlinux 0x06f508e1 xfrm_audit_policy_delete +EXPORT_SYMBOL_GPL vmlinux 0x070e3072 usb_driver_set_configuration +EXPORT_SYMBOL_GPL vmlinux 0x0736d7ce rio_mport_write_config_32 +EXPORT_SYMBOL_GPL vmlinux 0x0739f429 x509_check_signature +EXPORT_SYMBOL_GPL vmlinux 0x0743ed14 tps65912_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x07450fa5 rio_map_inb_region +EXPORT_SYMBOL_GPL vmlinux 0x074f864e rtc_irq_unregister +EXPORT_SYMBOL_GPL vmlinux 0x0762403c edac_put_sysfs_subsys +EXPORT_SYMBOL_GPL vmlinux 0x07b08a48 tty_ldisc_deref +EXPORT_SYMBOL_GPL vmlinux 0x07b21f85 kdb_get_kbd_char +EXPORT_SYMBOL_GPL vmlinux 0x07b52e38 rtnl_unregister +EXPORT_SYMBOL_GPL vmlinux 0x07bda162 ata_bmdma_start +EXPORT_SYMBOL_GPL vmlinux 0x0813a085 gpiod_set_raw_array_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x08156773 name_to_dev_t +EXPORT_SYMBOL_GPL vmlinux 0x08441930 yield_to +EXPORT_SYMBOL_GPL vmlinux 0x0848c766 regulator_set_voltage_sel_regmap +EXPORT_SYMBOL_GPL vmlinux 0x084f9ef3 key_type_encrypted +EXPORT_SYMBOL_GPL vmlinux 0x0859db53 subsys_find_device_by_id +EXPORT_SYMBOL_GPL vmlinux 0x086d9a5f regulator_can_change_voltage +EXPORT_SYMBOL_GPL vmlinux 0x088bfa7e cancel_work_sync +EXPORT_SYMBOL_GPL vmlinux 0x08a3c865 ata_pci_device_resume +EXPORT_SYMBOL_GPL vmlinux 0x08bc0870 compat_put_timespec +EXPORT_SYMBOL_GPL vmlinux 0x08d8b7c5 ahash_free_instance +EXPORT_SYMBOL_GPL vmlinux 0x08d91c22 mm_iommu_put +EXPORT_SYMBOL_GPL vmlinux 0x091241cc ata_sas_port_resume +EXPORT_SYMBOL_GPL vmlinux 0x09167ee6 usb_get_hcd +EXPORT_SYMBOL_GPL vmlinux 0x091c824a machine_power_off +EXPORT_SYMBOL_GPL vmlinux 0x091eb9b4 round_jiffies +EXPORT_SYMBOL_GPL vmlinux 0x09214784 tcp_reno_cong_avoid +EXPORT_SYMBOL_GPL vmlinux 0x09242820 ip6_route_lookup +EXPORT_SYMBOL_GPL vmlinux 0x0926ca5f tcp_unregister_congestion_control +EXPORT_SYMBOL_GPL vmlinux 0x0934adee mbox_client_peek_data +EXPORT_SYMBOL_GPL vmlinux 0x093bd6a6 sysfs_create_files +EXPORT_SYMBOL_GPL vmlinux 0x09437748 ring_buffer_read_events_cpu +EXPORT_SYMBOL_GPL vmlinux 0x09469482 kfree_call_rcu +EXPORT_SYMBOL_GPL vmlinux 0x0952af60 fb_videomode_from_videomode +EXPORT_SYMBOL_GPL vmlinux 0x09631a2a usb_get_from_anchor +EXPORT_SYMBOL_GPL vmlinux 0x097de936 regmap_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0x098bd429 hwmon_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x09901080 edac_subsys +EXPORT_SYMBOL_GPL vmlinux 0x0a18b1b5 rhashtable_insert_slow +EXPORT_SYMBOL_GPL vmlinux 0x0a25b712 rio_mport_get_efb +EXPORT_SYMBOL_GPL vmlinux 0x0a3dbfb2 rio_mport_read_config_8 +EXPORT_SYMBOL_GPL vmlinux 0x0a51ae5b virq_to_hw +EXPORT_SYMBOL_GPL vmlinux 0x0a808d11 debugfs_create_atomic_t +EXPORT_SYMBOL_GPL vmlinux 0x0a82e165 dev_change_net_namespace +EXPORT_SYMBOL_GPL vmlinux 0x0a8cd382 iommu_iova_to_phys +EXPORT_SYMBOL_GPL vmlinux 0x0a9724e3 hrtimer_init_sleeper +EXPORT_SYMBOL_GPL vmlinux 0x0ad86b82 wm8350_read_auxadc +EXPORT_SYMBOL_GPL vmlinux 0x0ae51625 thermal_zone_of_sensor_unregister +EXPORT_SYMBOL_GPL vmlinux 0x0aea21b4 of_get_nand_bus_width +EXPORT_SYMBOL_GPL vmlinux 0x0aec8b55 swiotlb_unmap_page +EXPORT_SYMBOL_GPL vmlinux 0x0b01328a platform_device_add +EXPORT_SYMBOL_GPL vmlinux 0x0b07abe2 unshare_fs_struct +EXPORT_SYMBOL_GPL vmlinux 0x0b34a5e9 xfrm_audit_policy_add +EXPORT_SYMBOL_GPL vmlinux 0x0b467d23 pci_enable_pasid +EXPORT_SYMBOL_GPL vmlinux 0x0b508f9d ohci_resume +EXPORT_SYMBOL_GPL vmlinux 0x0b634a98 crypto_init_ahash_spawn +EXPORT_SYMBOL_GPL vmlinux 0x0b942a88 sdhci_pci_o2_probe_slot +EXPORT_SYMBOL_GPL vmlinux 0x0be659e9 ata_sff_drain_fifo +EXPORT_SYMBOL_GPL vmlinux 0x0bf708cd blk_mq_request_started +EXPORT_SYMBOL_GPL vmlinux 0x0bfa3a19 rcu_idle_exit +EXPORT_SYMBOL_GPL vmlinux 0x0c0c015e ring_buffer_swap_cpu +EXPORT_SYMBOL_GPL vmlinux 0x0c1fc300 rtc_read_alarm +EXPORT_SYMBOL_GPL vmlinux 0x0c20f85e sysfs_create_file_ns +EXPORT_SYMBOL_GPL vmlinux 0x0c2be47c irq_domain_associate +EXPORT_SYMBOL_GPL vmlinux 0x0c2cdbf1 synchronize_sched +EXPORT_SYMBOL_GPL vmlinux 0x0c51d892 devm_get_free_pages +EXPORT_SYMBOL_GPL vmlinux 0x0c6852e7 vfs_fallocate +EXPORT_SYMBOL_GPL vmlinux 0x0c6b27cc led_trigger_unregister +EXPORT_SYMBOL_GPL vmlinux 0x0c8d210e irq_create_strict_mappings +EXPORT_SYMBOL_GPL vmlinux 0x0caf75d9 opal_flash_erase +EXPORT_SYMBOL_GPL vmlinux 0x0cc1e40f crypto_it_tab +EXPORT_SYMBOL_GPL vmlinux 0x0cc633ac devfreq_event_reset_event +EXPORT_SYMBOL_GPL vmlinux 0x0ce3ee5a mmu_kernel_ssize +EXPORT_SYMBOL_GPL vmlinux 0x0d0be1f7 ata_wait_register +EXPORT_SYMBOL_GPL vmlinux 0x0d13a7cf ata_sas_port_destroy +EXPORT_SYMBOL_GPL vmlinux 0x0d23d24c crypto_alg_sem +EXPORT_SYMBOL_GPL vmlinux 0x0d2bc7fa tty_get_pgrp +EXPORT_SYMBOL_GPL vmlinux 0x0d373a56 ref_module +EXPORT_SYMBOL_GPL vmlinux 0x0d4961de nf_log_buf_open +EXPORT_SYMBOL_GPL vmlinux 0x0d4af2a1 crypto_shoot_alg +EXPORT_SYMBOL_GPL vmlinux 0x0d4d0938 crypto_ahash_setkey +EXPORT_SYMBOL_GPL vmlinux 0x0d57200a tasklet_hrtimer_init +EXPORT_SYMBOL_GPL vmlinux 0x0d6dd75b perf_event_release_kernel +EXPORT_SYMBOL_GPL vmlinux 0x0d73a952 GregorianDay +EXPORT_SYMBOL_GPL vmlinux 0x0d79acf2 percpu_ida_destroy +EXPORT_SYMBOL_GPL vmlinux 0x0d7d4d70 rcu_batches_completed +EXPORT_SYMBOL_GPL vmlinux 0x0d8d5440 ata_eh_qc_complete +EXPORT_SYMBOL_GPL vmlinux 0x0d8d88c8 tty_ldisc_ref_wait +EXPORT_SYMBOL_GPL vmlinux 0x0d9d601d pm_generic_poweroff_noirq +EXPORT_SYMBOL_GPL vmlinux 0x0dbc605e ata_pci_sff_prepare_host +EXPORT_SYMBOL_GPL vmlinux 0x0ddb1cd7 llist_reverse_order +EXPORT_SYMBOL_GPL vmlinux 0x0de06988 cpu_first_thread_of_core +EXPORT_SYMBOL_GPL vmlinux 0x0df2bd74 simple_attr_write +EXPORT_SYMBOL_GPL vmlinux 0x0e0520f4 unregister_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x0e1cb3b7 kernfs_get +EXPORT_SYMBOL_GPL vmlinux 0x0e1d3770 shmem_read_mapping_page_gfp +EXPORT_SYMBOL_GPL vmlinux 0x0e218914 cpufreq_frequency_table_cpuinfo +EXPORT_SYMBOL_GPL vmlinux 0x0e230982 usb_hub_claim_port +EXPORT_SYMBOL_GPL vmlinux 0x0e579c07 virtio_check_driver_offered_feature +EXPORT_SYMBOL_GPL vmlinux 0x0e719bb2 regcache_mark_dirty +EXPORT_SYMBOL_GPL vmlinux 0x0e75c0e9 iommu_domain_alloc +EXPORT_SYMBOL_GPL vmlinux 0x0e7d196c sg_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x0e853e8f device_create_with_groups +EXPORT_SYMBOL_GPL vmlinux 0x0ea08f04 device_property_read_string_array +EXPORT_SYMBOL_GPL vmlinux 0x0ea41f64 pm_qos_add_request +EXPORT_SYMBOL_GPL vmlinux 0x0ecf823a static_key_slow_dec +EXPORT_SYMBOL_GPL vmlinux 0x0f2a5cec exportfs_encode_fh +EXPORT_SYMBOL_GPL vmlinux 0x0f336d7f rcutorture_get_gp_data +EXPORT_SYMBOL_GPL vmlinux 0x0f4c2eaa of_property_read_u8_array +EXPORT_SYMBOL_GPL vmlinux 0x0f5598a8 ata_link_abort +EXPORT_SYMBOL_GPL vmlinux 0x0f63da02 usb_hcd_start_port_resume +EXPORT_SYMBOL_GPL vmlinux 0x0f751aea input_event_from_user +EXPORT_SYMBOL_GPL vmlinux 0x0fb5a0c0 gpiod_get_raw_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x0fc6164e kobject_init_and_add +EXPORT_SYMBOL_GPL vmlinux 0x0fcd1746 crypto_ahash_walk_first +EXPORT_SYMBOL_GPL vmlinux 0x0fd2f9b5 inet6_hash_connect +EXPORT_SYMBOL_GPL vmlinux 0x0fe8c581 __pm_wakeup_event +EXPORT_SYMBOL_GPL vmlinux 0x0fea2dcd bsg_register_queue +EXPORT_SYMBOL_GPL vmlinux 0x0ffc1120 ping_seq_fops +EXPORT_SYMBOL_GPL vmlinux 0x100e97da led_trigger_show +EXPORT_SYMBOL_GPL vmlinux 0x10138352 tracing_on +EXPORT_SYMBOL_GPL vmlinux 0x1018d2e9 rio_local_get_device_id +EXPORT_SYMBOL_GPL vmlinux 0x10232869 sdio_writeb_readb +EXPORT_SYMBOL_GPL vmlinux 0x10775cca kvmppc_add_revmap_chain +EXPORT_SYMBOL_GPL vmlinux 0x108c83c2 pm_generic_thaw_noirq +EXPORT_SYMBOL_GPL vmlinux 0x1094bf54 tcp_done +EXPORT_SYMBOL_GPL vmlinux 0x10a137db mmput +EXPORT_SYMBOL_GPL vmlinux 0x10ab9f70 gpiod_get_array +EXPORT_SYMBOL_GPL vmlinux 0x10d9aae3 virtqueue_get_vring_size +EXPORT_SYMBOL_GPL vmlinux 0x10dd5199 hrtimer_forward +EXPORT_SYMBOL_GPL vmlinux 0x10ecc52c usb_amd_quirk_pll_enable +EXPORT_SYMBOL_GPL vmlinux 0x10f8f558 srcu_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0x10fe3218 dma_buf_unmap_attachment +EXPORT_SYMBOL_GPL vmlinux 0x1114011d threads_shift +EXPORT_SYMBOL_GPL vmlinux 0x1143bbf9 stmpe_enable +EXPORT_SYMBOL_GPL vmlinux 0x1143ecaa blk_add_request_payload +EXPORT_SYMBOL_GPL vmlinux 0x11690ab6 sdio_writeb +EXPORT_SYMBOL_GPL vmlinux 0x11715484 __tracepoint_mc_event +EXPORT_SYMBOL_GPL vmlinux 0x11727964 securityfs_create_dir +EXPORT_SYMBOL_GPL vmlinux 0x1172ce54 rtc_ktime_to_tm +EXPORT_SYMBOL_GPL vmlinux 0x117c7305 hwpoison_filter_dev_major +EXPORT_SYMBOL_GPL vmlinux 0x117d28e8 usb_sg_cancel +EXPORT_SYMBOL_GPL vmlinux 0x11e81aec bus_unregister +EXPORT_SYMBOL_GPL vmlinux 0x11fb9168 pm_generic_resume_early +EXPORT_SYMBOL_GPL vmlinux 0x12139b02 of_gen_pool_get +EXPORT_SYMBOL_GPL vmlinux 0x121d958a unregister_die_notifier +EXPORT_SYMBOL_GPL vmlinux 0x122475a6 blk_queue_rq_timed_out +EXPORT_SYMBOL_GPL vmlinux 0x12321985 pm_relax +EXPORT_SYMBOL_GPL vmlinux 0x12343911 scsi_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x1248f0a2 device_property_read_u64_array +EXPORT_SYMBOL_GPL vmlinux 0x124f0cb6 ipv6_proxy_select_ident +EXPORT_SYMBOL_GPL vmlinux 0x124f2056 crypto_get_attr_type +EXPORT_SYMBOL_GPL vmlinux 0x125062b4 tps65912_clear_bits +EXPORT_SYMBOL_GPL vmlinux 0x12550e89 irq_map_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x12618f89 __percpu_ida_init +EXPORT_SYMBOL_GPL vmlinux 0x1268f357 resume_device_irqs +EXPORT_SYMBOL_GPL vmlinux 0x126d4e37 gpiochip_remove +EXPORT_SYMBOL_GPL vmlinux 0x127fa490 udp6_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x12970ffc rio_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x12a85afd power_supply_changed +EXPORT_SYMBOL_GPL vmlinux 0x12ab921b register_user_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x12b0ebf6 usb_hcd_pci_pm_ops +EXPORT_SYMBOL_GPL vmlinux 0x12b5193c fwnode_handle_put +EXPORT_SYMBOL_GPL vmlinux 0x12cb6ab5 devm_phy_destroy +EXPORT_SYMBOL_GPL vmlinux 0x12e6c670 usb_bulk_msg +EXPORT_SYMBOL_GPL vmlinux 0x12e761ba reset_controller_register +EXPORT_SYMBOL_GPL vmlinux 0x130851c9 device_wakeup_disable +EXPORT_SYMBOL_GPL vmlinux 0x13116e55 driver_attach +EXPORT_SYMBOL_GPL vmlinux 0x131a4cc2 iommu_map +EXPORT_SYMBOL_GPL vmlinux 0x131a5ed7 regmap_del_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0x131db64a system_long_wq +EXPORT_SYMBOL_GPL vmlinux 0x131e009e regulator_enable_regmap +EXPORT_SYMBOL_GPL vmlinux 0x132d2102 part_round_stats +EXPORT_SYMBOL_GPL vmlinux 0x1345d342 i2c_lock_adapter +EXPORT_SYMBOL_GPL vmlinux 0x136209db power_supply_reg_notifier +EXPORT_SYMBOL_GPL vmlinux 0x13691df7 gpio_to_desc +EXPORT_SYMBOL_GPL vmlinux 0x136a4ee6 btree_init +EXPORT_SYMBOL_GPL vmlinux 0x1389da84 cpu_bit_bitmap +EXPORT_SYMBOL_GPL vmlinux 0x13907de9 i2c_recover_bus +EXPORT_SYMBOL_GPL vmlinux 0x13985f96 sata_lpm_ignore_phy_events +EXPORT_SYMBOL_GPL vmlinux 0x13a5a4fb rio_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0x13ad647f scatterwalk_bytes_sglen +EXPORT_SYMBOL_GPL vmlinux 0x13ce87e8 asn1_ber_decoder +EXPORT_SYMBOL_GPL vmlinux 0x13e5ea13 __wake_up_sync +EXPORT_SYMBOL_GPL vmlinux 0x1411147f clockevents_register_device +EXPORT_SYMBOL_GPL vmlinux 0x14153f42 rdev_set_badblocks +EXPORT_SYMBOL_GPL vmlinux 0x1433cbc4 __tracepoint_wbc_writepage +EXPORT_SYMBOL_GPL vmlinux 0x14378976 pci_common_swizzle +EXPORT_SYMBOL_GPL vmlinux 0x1442bff2 crypto_unregister_instance +EXPORT_SYMBOL_GPL vmlinux 0x1443d7e5 dma_buf_map_attachment +EXPORT_SYMBOL_GPL vmlinux 0x144da8d0 security_inode_mkdir +EXPORT_SYMBOL_GPL vmlinux 0x145b184b devm_spi_register_master +EXPORT_SYMBOL_GPL vmlinux 0x146abe01 pci_find_next_capability +EXPORT_SYMBOL_GPL vmlinux 0x146b5898 bmp085_remove +EXPORT_SYMBOL_GPL vmlinux 0x147bbf84 watchdog_register_device +EXPORT_SYMBOL_GPL vmlinux 0x147e1f0b irq_set_affinity_notifier +EXPORT_SYMBOL_GPL vmlinux 0x149428e8 regulator_get +EXPORT_SYMBOL_GPL vmlinux 0x1498457b dm_accept_partial_bio +EXPORT_SYMBOL_GPL vmlinux 0x14b4d962 devm_regulator_unregister +EXPORT_SYMBOL_GPL vmlinux 0x14f99d64 of_address_to_resource +EXPORT_SYMBOL_GPL vmlinux 0x15066a2c inet_csk_reqsk_queue_hash_add +EXPORT_SYMBOL_GPL vmlinux 0x150fbfaf pci_disable_pcie_error_reporting +EXPORT_SYMBOL_GPL vmlinux 0x1530bc8b security_inode_create +EXPORT_SYMBOL_GPL vmlinux 0x153787fc sk_attach_filter +EXPORT_SYMBOL_GPL vmlinux 0x155fd8ac stmpe_disable +EXPORT_SYMBOL_GPL vmlinux 0x1566bc63 pm_runtime_set_memalloc_noio +EXPORT_SYMBOL_GPL vmlinux 0x15807694 crypto_ablkcipher_type +EXPORT_SYMBOL_GPL vmlinux 0x15892417 async_synchronize_cookie +EXPORT_SYMBOL_GPL vmlinux 0x15b8b44d opal_async_wait_response +EXPORT_SYMBOL_GPL vmlinux 0x15c11e42 fat_free_clusters +EXPORT_SYMBOL_GPL vmlinux 0x15c21e5e nl_table_lock +EXPORT_SYMBOL_GPL vmlinux 0x15c37eb2 cpci_hp_register_controller +EXPORT_SYMBOL_GPL vmlinux 0x15ebb859 __blkdev_driver_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x15efd446 rcu_batches_started +EXPORT_SYMBOL_GPL vmlinux 0x16000a3c dm_device_name +EXPORT_SYMBOL_GPL vmlinux 0x16008b55 kernfs_notify +EXPORT_SYMBOL_GPL vmlinux 0x161f46d7 relay_file_operations +EXPORT_SYMBOL_GPL vmlinux 0x1650bf27 rcutorture_record_progress +EXPORT_SYMBOL_GPL vmlinux 0x16692d38 key_set_timeout +EXPORT_SYMBOL_GPL vmlinux 0x166e853d blk_set_queue_dying +EXPORT_SYMBOL_GPL vmlinux 0x168b6622 of_pci_get_host_bridge_resources +EXPORT_SYMBOL_GPL vmlinux 0x168f38f1 devm_hwmon_device_register_with_groups +EXPORT_SYMBOL_GPL vmlinux 0x16a109e0 regulator_put +EXPORT_SYMBOL_GPL vmlinux 0x16a76c41 fuse_abort_conn +EXPORT_SYMBOL_GPL vmlinux 0x16b1afd4 inet6_csk_xmit +EXPORT_SYMBOL_GPL vmlinux 0x16b6a096 ata_slave_link_init +EXPORT_SYMBOL_GPL vmlinux 0x16d55c18 of_property_read_u16_array +EXPORT_SYMBOL_GPL vmlinux 0x172ae8f1 usb_deregister_dev +EXPORT_SYMBOL_GPL vmlinux 0x17316ebe of_pci_address_to_resource +EXPORT_SYMBOL_GPL vmlinux 0x1753a32f hash_digest_size +EXPORT_SYMBOL_GPL vmlinux 0x177c338d twl_get_version +EXPORT_SYMBOL_GPL vmlinux 0x17866672 device_move +EXPORT_SYMBOL_GPL vmlinux 0x1798053c regmap_get_val_endian +EXPORT_SYMBOL_GPL vmlinux 0x17c963a0 regmap_register_patch +EXPORT_SYMBOL_GPL vmlinux 0x17e620b3 crypto_grab_skcipher +EXPORT_SYMBOL_GPL vmlinux 0x17eaf0c4 clockevents_unbind_device +EXPORT_SYMBOL_GPL vmlinux 0x1829b9ed hwpoison_filter_memcg +EXPORT_SYMBOL_GPL vmlinux 0x18441c0a bsg_unregister_queue +EXPORT_SYMBOL_GPL vmlinux 0x1848d7d7 __tracepoint_rpm_resume +EXPORT_SYMBOL_GPL vmlinux 0x184dad65 sdev_evt_send_simple +EXPORT_SYMBOL_GPL vmlinux 0x1853653c btree_alloc +EXPORT_SYMBOL_GPL vmlinux 0x1860eb4c devres_release +EXPORT_SYMBOL_GPL vmlinux 0x1863c240 pm_generic_thaw_early +EXPORT_SYMBOL_GPL vmlinux 0x1866cec2 ring_buffer_size +EXPORT_SYMBOL_GPL vmlinux 0x1878f62b edac_err_assert +EXPORT_SYMBOL_GPL vmlinux 0x189f874d powernv_get_random_long +EXPORT_SYMBOL_GPL vmlinux 0x18a7f918 iommu_unmap +EXPORT_SYMBOL_GPL vmlinux 0x18c4375f iommu_tce_xchg +EXPORT_SYMBOL_GPL vmlinux 0x18cb1f94 set_cpus_allowed_ptr +EXPORT_SYMBOL_GPL vmlinux 0x18e97b64 irq_gc_mask_clr_bit +EXPORT_SYMBOL_GPL vmlinux 0x18ee93c1 nvdimm_bus_attribute_group +EXPORT_SYMBOL_GPL vmlinux 0x190ad81a sdio_run_irqs +EXPORT_SYMBOL_GPL vmlinux 0x1914d0ea pm_generic_resume_noirq +EXPORT_SYMBOL_GPL vmlinux 0x1916477b usb_find_interface +EXPORT_SYMBOL_GPL vmlinux 0x1928c21e crypto_chain +EXPORT_SYMBOL_GPL vmlinux 0x193d48e0 trace_current_buffer_unlock_commit +EXPORT_SYMBOL_GPL vmlinux 0x194dd5f5 pkey_algo_name +EXPORT_SYMBOL_GPL vmlinux 0x196558cb devm_regmap_init_mmio_clk +EXPORT_SYMBOL_GPL vmlinux 0x19779661 regulator_set_mode +EXPORT_SYMBOL_GPL vmlinux 0x19911bcf of_irq_to_resource_table +EXPORT_SYMBOL_GPL vmlinux 0x199bb69f posix_timer_event +EXPORT_SYMBOL_GPL vmlinux 0x19a304ba usb_disabled +EXPORT_SYMBOL_GPL vmlinux 0x19b37d1b devres_destroy +EXPORT_SYMBOL_GPL vmlinux 0x19b384a5 hash_algo_name +EXPORT_SYMBOL_GPL vmlinux 0x19ec5738 gpiod_export_link +EXPORT_SYMBOL_GPL vmlinux 0x19f2fecc sdio_readw +EXPORT_SYMBOL_GPL vmlinux 0x1a154ea6 led_trigger_set +EXPORT_SYMBOL_GPL vmlinux 0x1a324fa0 each_symbol_section +EXPORT_SYMBOL_GPL vmlinux 0x1a3ca878 sock_gen_put +EXPORT_SYMBOL_GPL vmlinux 0x1a4194e1 ata_pci_bmdma_init_one +EXPORT_SYMBOL_GPL vmlinux 0x1a48c2c2 spi_async +EXPORT_SYMBOL_GPL vmlinux 0x1a4c7176 inet_twsk_put +EXPORT_SYMBOL_GPL vmlinux 0x1a8c1fa3 stmpe_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x1a8c5907 btree_insert +EXPORT_SYMBOL_GPL vmlinux 0x1a967885 cpufreq_frequency_get_table +EXPORT_SYMBOL_GPL vmlinux 0x1aa3ac88 pci_vfs_assigned +EXPORT_SYMBOL_GPL vmlinux 0x1ab24671 gpiod_unexport +EXPORT_SYMBOL_GPL vmlinux 0x1acef7d2 pm_freezing +EXPORT_SYMBOL_GPL vmlinux 0x1afedcac crypto_shash_update +EXPORT_SYMBOL_GPL vmlinux 0x1b00f5d6 crypto_register_pcomp +EXPORT_SYMBOL_GPL vmlinux 0x1b2a9ff0 crypto_create_tfm +EXPORT_SYMBOL_GPL vmlinux 0x1b2dc045 eeh_pe_set_option +EXPORT_SYMBOL_GPL vmlinux 0x1b590160 nvdimm_volatile_region_create +EXPORT_SYMBOL_GPL vmlinux 0x1b82a1ed pcibios_unmap_io_space +EXPORT_SYMBOL_GPL vmlinux 0x1b9664d1 __destroy_context +EXPORT_SYMBOL_GPL vmlinux 0x1b9aca3f jprobe_return +EXPORT_SYMBOL_GPL vmlinux 0x1bac0727 pci_find_ht_capability +EXPORT_SYMBOL_GPL vmlinux 0x1bbf8a4e napi_hash_del +EXPORT_SYMBOL_GPL vmlinux 0x1c02bd31 transport_configure_device +EXPORT_SYMBOL_GPL vmlinux 0x1c1215bd threads_core_mask +EXPORT_SYMBOL_GPL vmlinux 0x1c1e624f cpufreq_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x1c2ad10a srcu_batches_completed +EXPORT_SYMBOL_GPL vmlinux 0x1c32f7d5 srcu_init_notifier_head +EXPORT_SYMBOL_GPL vmlinux 0x1c5541bd cpufreq_boost_enabled +EXPORT_SYMBOL_GPL vmlinux 0x1c566469 list_lru_walk_one +EXPORT_SYMBOL_GPL vmlinux 0x1c5b1f28 irq_free_descs +EXPORT_SYMBOL_GPL vmlinux 0x1c5e8b35 phy_create +EXPORT_SYMBOL_GPL vmlinux 0x1c60f72e regulator_set_current_limit +EXPORT_SYMBOL_GPL vmlinux 0x1c7147c7 phy_pm_runtime_allow +EXPORT_SYMBOL_GPL vmlinux 0x1c72e3ee __class_create +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 0x1ca273be usb_create_shared_hcd +EXPORT_SYMBOL_GPL vmlinux 0x1ca9813a platform_device_alloc +EXPORT_SYMBOL_GPL vmlinux 0x1cb16135 regulator_map_voltage_linear_range +EXPORT_SYMBOL_GPL vmlinux 0x1cb4787f bpf_prog_alloc +EXPORT_SYMBOL_GPL vmlinux 0x1cb6a594 wm5102_spi_regmap +EXPORT_SYMBOL_GPL vmlinux 0x1cdb2147 zs_malloc +EXPORT_SYMBOL_GPL vmlinux 0x1cf82066 tcp_orphan_count +EXPORT_SYMBOL_GPL vmlinux 0x1d28e18d usb_phy_set_event +EXPORT_SYMBOL_GPL vmlinux 0x1d2db6ae irq_setup_alt_chip +EXPORT_SYMBOL_GPL vmlinux 0x1d2f9e0a ahash_attr_alg +EXPORT_SYMBOL_GPL vmlinux 0x1d58ae14 lpddr2_jedec_timings +EXPORT_SYMBOL_GPL vmlinux 0x1d5cfb6d dma_release_channel +EXPORT_SYMBOL_GPL vmlinux 0x1d6ff8b8 unregister_net_sysctl_table +EXPORT_SYMBOL_GPL vmlinux 0x1d77b0f8 unix_socket_table +EXPORT_SYMBOL_GPL vmlinux 0x1d7c0168 __ftrace_vprintk +EXPORT_SYMBOL_GPL vmlinux 0x1d86ebcc fwnode_get_named_gpiod +EXPORT_SYMBOL_GPL vmlinux 0x1d8e55fd serial8250_tx_chars +EXPORT_SYMBOL_GPL vmlinux 0x1dcf7ee3 page_cache_async_readahead +EXPORT_SYMBOL_GPL vmlinux 0x1decefa8 dax_pfn_mkwrite +EXPORT_SYMBOL_GPL vmlinux 0x1ded3533 get_net_ns_by_pid +EXPORT_SYMBOL_GPL vmlinux 0x1df5f7a2 crypto_unregister_rng +EXPORT_SYMBOL_GPL vmlinux 0x1e000879 hwpoison_filter_enable +EXPORT_SYMBOL_GPL vmlinux 0x1e08ba35 ehci_setup +EXPORT_SYMBOL_GPL vmlinux 0x1e0c6366 ping_unhash +EXPORT_SYMBOL_GPL vmlinux 0x1e0fb564 fwnode_property_read_u16_array +EXPORT_SYMBOL_GPL vmlinux 0x1e38e871 phy_create_lookup +EXPORT_SYMBOL_GPL vmlinux 0x1e5b03dc pm_qos_add_notifier +EXPORT_SYMBOL_GPL vmlinux 0x1e6a14de ata_sff_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x1e6da873 blk_rq_unprep_clone +EXPORT_SYMBOL_GPL vmlinux 0x1e7bbcb3 kernel_restart +EXPORT_SYMBOL_GPL vmlinux 0x1e85c072 thermal_generate_netlink_event +EXPORT_SYMBOL_GPL vmlinux 0x1e917a59 irq_domain_simple_ops +EXPORT_SYMBOL_GPL vmlinux 0x1eb9516e round_jiffies_relative +EXPORT_SYMBOL_GPL vmlinux 0x1eba0b8e kobject_uevent +EXPORT_SYMBOL_GPL vmlinux 0x1ebac2bd getboottime64 +EXPORT_SYMBOL_GPL vmlinux 0x1ebebce0 ip6_sk_redirect +EXPORT_SYMBOL_GPL vmlinux 0x1ebf6c2a pci_power_names +EXPORT_SYMBOL_GPL vmlinux 0x1ecaded9 ata_link_online +EXPORT_SYMBOL_GPL vmlinux 0x1edc21cb hwpoison_filter_flags_mask +EXPORT_SYMBOL_GPL vmlinux 0x1f054376 debugfs_create_u32 +EXPORT_SYMBOL_GPL vmlinux 0x1f1988f7 hwpoison_filter_flags_value +EXPORT_SYMBOL_GPL vmlinux 0x1f3abd14 eeh_pe_get_state +EXPORT_SYMBOL_GPL vmlinux 0x1f6b059f pci_disable_ats +EXPORT_SYMBOL_GPL vmlinux 0x1f78f373 debugfs_create_x16 +EXPORT_SYMBOL_GPL vmlinux 0x1f83f19f tty_standard_install +EXPORT_SYMBOL_GPL vmlinux 0x1f8544b8 panic_timeout +EXPORT_SYMBOL_GPL vmlinux 0x1f8db7f9 ring_buffer_overrun_cpu +EXPORT_SYMBOL_GPL vmlinux 0x1f92b333 mmu_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0x1f9fbb6a fat_search_long +EXPORT_SYMBOL_GPL vmlinux 0x1fa94d7d spi_busnum_to_master +EXPORT_SYMBOL_GPL vmlinux 0x1fb0cea3 da9052_disable_irq +EXPORT_SYMBOL_GPL vmlinux 0x1fd2fee6 ip_local_out_sk +EXPORT_SYMBOL_GPL vmlinux 0x1fd628c8 vma_kernel_pagesize +EXPORT_SYMBOL_GPL vmlinux 0x1fe10a99 i2c_probe_func_quick_read +EXPORT_SYMBOL_GPL vmlinux 0x1ff1dc0f get_slice_psize +EXPORT_SYMBOL_GPL vmlinux 0x200a0eee spi_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x2011ded4 sata_scr_valid +EXPORT_SYMBOL_GPL vmlinux 0x201de302 param_ops_bool_enable_only +EXPORT_SYMBOL_GPL vmlinux 0x2023d109 of_dma_request_slave_channel +EXPORT_SYMBOL_GPL vmlinux 0x2030b9f2 devres_remove +EXPORT_SYMBOL_GPL vmlinux 0x2048ecb7 sched_setattr +EXPORT_SYMBOL_GPL vmlinux 0x2069a89d serial8250_request_dma +EXPORT_SYMBOL_GPL vmlinux 0x206d4971 of_usb_get_phy_mode +EXPORT_SYMBOL_GPL vmlinux 0x2099d445 xfrm_audit_state_delete +EXPORT_SYMBOL_GPL vmlinux 0x20aa6f51 cpuidle_enable_device +EXPORT_SYMBOL_GPL vmlinux 0x20b6ab3f __pci_complete_power_transition +EXPORT_SYMBOL_GPL vmlinux 0x20c48b18 pci_try_reset_bus +EXPORT_SYMBOL_GPL vmlinux 0x20e27572 sdhci_pci_o2_fujin2_pci_init +EXPORT_SYMBOL_GPL vmlinux 0x20eaadfc regulator_bulk_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x211838ce pci_enable_sriov +EXPORT_SYMBOL_GPL vmlinux 0x211850f5 htab_hash_mask +EXPORT_SYMBOL_GPL vmlinux 0x212905e9 mpc8xxx_spi_tx_buf_u16 +EXPORT_SYMBOL_GPL vmlinux 0x21434853 usb_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0x2154eb78 devm_led_classdev_register +EXPORT_SYMBOL_GPL vmlinux 0x217dabb5 cpu_remove_dev_attr_group +EXPORT_SYMBOL_GPL vmlinux 0x218a48da thermal_zone_get_zone_by_name +EXPORT_SYMBOL_GPL vmlinux 0x218a5a8d pcibios_alloc_controller +EXPORT_SYMBOL_GPL vmlinux 0x21ac8b77 iommu_group_get_by_id +EXPORT_SYMBOL_GPL vmlinux 0x21c10956 sdio_claim_irq +EXPORT_SYMBOL_GPL vmlinux 0x21c46bc5 sb800_prefetch +EXPORT_SYMBOL_GPL vmlinux 0x21d73a12 __lock_page_killable +EXPORT_SYMBOL_GPL vmlinux 0x21e0ee5c regmap_reinit_cache +EXPORT_SYMBOL_GPL vmlinux 0x225f717f pm_generic_suspend +EXPORT_SYMBOL_GPL vmlinux 0x2283b19a usb_hcd_poll_rh_status +EXPORT_SYMBOL_GPL vmlinux 0x2295091c xfrm_output +EXPORT_SYMBOL_GPL vmlinux 0x2296c00d crypto_attr_u32 +EXPORT_SYMBOL_GPL vmlinux 0x22bba232 sysfs_create_link +EXPORT_SYMBOL_GPL vmlinux 0x22bca809 blk_rq_check_limits +EXPORT_SYMBOL_GPL vmlinux 0x22ca1170 set_task_ioprio +EXPORT_SYMBOL_GPL vmlinux 0x2304ea9b debugfs_print_regs32 +EXPORT_SYMBOL_GPL vmlinux 0x231ec982 __audit_inode_child +EXPORT_SYMBOL_GPL vmlinux 0x233cb208 use_mm +EXPORT_SYMBOL_GPL vmlinux 0x234bdecf devm_mdiobus_alloc_size +EXPORT_SYMBOL_GPL vmlinux 0x234ce904 crypto_tfm_in_queue +EXPORT_SYMBOL_GPL vmlinux 0x236a0a40 vfs_truncate +EXPORT_SYMBOL_GPL vmlinux 0x23864ce7 cpuset_mem_spread_node +EXPORT_SYMBOL_GPL vmlinux 0x238fe918 regmap_multi_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x23ae5f40 devm_usb_put_phy +EXPORT_SYMBOL_GPL vmlinux 0x23ba88ed dma_buf_begin_cpu_access +EXPORT_SYMBOL_GPL vmlinux 0x23d9f19e pci_ioremap_bar +EXPORT_SYMBOL_GPL vmlinux 0x23f19fac gpiod_set_value +EXPORT_SYMBOL_GPL vmlinux 0x23fe1dad tcp_ca_get_key_by_name +EXPORT_SYMBOL_GPL vmlinux 0x24011e14 vbin_printf +EXPORT_SYMBOL_GPL vmlinux 0x2406770f kobject_move +EXPORT_SYMBOL_GPL vmlinux 0x241ba419 cpu_device_create +EXPORT_SYMBOL_GPL vmlinux 0x2438898b regmap_field_read +EXPORT_SYMBOL_GPL vmlinux 0x24457174 audit_enabled +EXPORT_SYMBOL_GPL vmlinux 0x2460422a usb_hcd_pci_probe +EXPORT_SYMBOL_GPL vmlinux 0x2462fb40 ata_bmdma32_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x247ef831 kdb_unregister +EXPORT_SYMBOL_GPL vmlinux 0x24aac4d9 crypto_aes_expand_key +EXPORT_SYMBOL_GPL vmlinux 0x24c720c1 ata_sff_check_status +EXPORT_SYMBOL_GPL vmlinux 0x24e4a99e spi_get_device_id +EXPORT_SYMBOL_GPL vmlinux 0x24eb7e32 leds_list +EXPORT_SYMBOL_GPL vmlinux 0x24f39c39 reset_control_reset +EXPORT_SYMBOL_GPL vmlinux 0x2510d7e7 task_active_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0x251ea207 ata_sas_port_stop +EXPORT_SYMBOL_GPL vmlinux 0x254164af sock_prot_inuse_get +EXPORT_SYMBOL_GPL vmlinux 0x254cce6b trace_event_raw_init +EXPORT_SYMBOL_GPL vmlinux 0x25606719 blk_rq_err_bytes +EXPORT_SYMBOL_GPL vmlinux 0x2576c8a0 xattr_getsecurity +EXPORT_SYMBOL_GPL vmlinux 0x2578237d __pm_runtime_suspend +EXPORT_SYMBOL_GPL vmlinux 0x25822ea3 eeh_add_device_tree_late +EXPORT_SYMBOL_GPL vmlinux 0x2582cca7 tpm_chip_unregister +EXPORT_SYMBOL_GPL vmlinux 0x258813f5 ata_sff_port_intr +EXPORT_SYMBOL_GPL vmlinux 0x259dfb33 dummy_con +EXPORT_SYMBOL_GPL vmlinux 0x25a0794c ata_sas_port_init +EXPORT_SYMBOL_GPL vmlinux 0x25c986a9 led_trigger_rename_static +EXPORT_SYMBOL_GPL vmlinux 0x25d04a0e ata_pci_sff_init_host +EXPORT_SYMBOL_GPL vmlinux 0x25d04ee3 hrtimer_cancel +EXPORT_SYMBOL_GPL vmlinux 0x25fa53f7 register_kretprobe +EXPORT_SYMBOL_GPL vmlinux 0x262eb236 ata_port_wait_eh +EXPORT_SYMBOL_GPL vmlinux 0x262f20a8 local_clock +EXPORT_SYMBOL_GPL vmlinux 0x2635c824 __ata_ehi_push_desc +EXPORT_SYMBOL_GPL vmlinux 0x263c319c __netpoll_cleanup +EXPORT_SYMBOL_GPL vmlinux 0x26520970 vm_memory_committed +EXPORT_SYMBOL_GPL vmlinux 0x265831da ehci_reset +EXPORT_SYMBOL_GPL vmlinux 0x26634f5e bdev_write_page +EXPORT_SYMBOL_GPL vmlinux 0x2665bc8f thermal_zone_device_register +EXPORT_SYMBOL_GPL vmlinux 0x266b7638 interval_tree_remove +EXPORT_SYMBOL_GPL vmlinux 0x26857654 ata_port_schedule_eh +EXPORT_SYMBOL_GPL vmlinux 0x2699d78d usb_sg_wait +EXPORT_SYMBOL_GPL vmlinux 0x26a2d493 devm_reset_control_get +EXPORT_SYMBOL_GPL vmlinux 0x26b71fb4 ring_buffer_time_stamp +EXPORT_SYMBOL_GPL vmlinux 0x26c90ea4 scsi_eh_get_sense +EXPORT_SYMBOL_GPL vmlinux 0x26e1f974 virtqueue_detach_unused_buf +EXPORT_SYMBOL_GPL vmlinux 0x270257b5 virtqueue_add_inbuf +EXPORT_SYMBOL_GPL vmlinux 0x2702e621 sched_setscheduler +EXPORT_SYMBOL_GPL vmlinux 0x271d3e80 blkg_prfill_stat +EXPORT_SYMBOL_GPL vmlinux 0x272645f3 percpu_ida_free_tags +EXPORT_SYMBOL_GPL vmlinux 0x2753d1ce blk_mq_register_disk +EXPORT_SYMBOL_GPL vmlinux 0x27540488 device_register +EXPORT_SYMBOL_GPL vmlinux 0x27566486 ip6_datagram_connect_v6_only +EXPORT_SYMBOL_GPL vmlinux 0x2762dfde regmap_update_bits +EXPORT_SYMBOL_GPL vmlinux 0x27801578 kernfs_find_and_get_ns +EXPORT_SYMBOL_GPL vmlinux 0x27867fe3 blkcg_root +EXPORT_SYMBOL_GPL vmlinux 0x27c0c4be eventfd_ctx_read +EXPORT_SYMBOL_GPL vmlinux 0x27c1e63f usb_amd_find_chipset_info +EXPORT_SYMBOL_GPL vmlinux 0x27c736ff key_type_asymmetric +EXPORT_SYMBOL_GPL vmlinux 0x27e0b76d kernfs_path +EXPORT_SYMBOL_GPL vmlinux 0x27e3a838 ip6_datagram_send_ctl +EXPORT_SYMBOL_GPL vmlinux 0x27f4f029 ftrace_set_global_filter +EXPORT_SYMBOL_GPL vmlinux 0x27fa66e1 nr_free_buffer_pages +EXPORT_SYMBOL_GPL vmlinux 0x2802a885 pcibios_find_pci_bus +EXPORT_SYMBOL_GPL vmlinux 0x280b85b8 blkg_lookup +EXPORT_SYMBOL_GPL vmlinux 0x280c5c87 trace_seq_vprintf +EXPORT_SYMBOL_GPL vmlinux 0x2818edc6 eeh_pe_configure +EXPORT_SYMBOL_GPL vmlinux 0x281c2b43 of_phy_get +EXPORT_SYMBOL_GPL vmlinux 0x282432c8 usb_add_hcd +EXPORT_SYMBOL_GPL vmlinux 0x2827421a __sock_recv_ts_and_drops +EXPORT_SYMBOL_GPL vmlinux 0x282cdabc usb_led_activity +EXPORT_SYMBOL_GPL vmlinux 0x2863a9a3 dma_get_slave_channel +EXPORT_SYMBOL_GPL vmlinux 0x2869fae4 iommu_detach_device +EXPORT_SYMBOL_GPL vmlinux 0x2879bc40 inet6_csk_search_req +EXPORT_SYMBOL_GPL vmlinux 0x28aecc4a mmc_switch +EXPORT_SYMBOL_GPL vmlinux 0x28c53d9c irq_generic_chip_ops +EXPORT_SYMBOL_GPL vmlinux 0x28ff99a9 opal_prd_msg +EXPORT_SYMBOL_GPL vmlinux 0x2908ef6e inet_csk_route_child_sock +EXPORT_SYMBOL_GPL vmlinux 0x2913de09 hrtimer_get_remaining +EXPORT_SYMBOL_GPL vmlinux 0x291f6846 inet6_csk_bind_conflict +EXPORT_SYMBOL_GPL vmlinux 0x294cbb12 usb_get_phy +EXPORT_SYMBOL_GPL vmlinux 0x296c867f crypto_unregister_rngs +EXPORT_SYMBOL_GPL vmlinux 0x299e3cac cpci_hp_register_bus +EXPORT_SYMBOL_GPL vmlinux 0x299ec055 devres_remove_group +EXPORT_SYMBOL_GPL vmlinux 0x29b6e666 platform_device_register_full +EXPORT_SYMBOL_GPL vmlinux 0x29c8e131 rio_request_inb_pwrite +EXPORT_SYMBOL_GPL vmlinux 0x29d085cd ata_bmdma_post_internal_cmd +EXPORT_SYMBOL_GPL vmlinux 0x2a1dba74 to_nvdimm_bus +EXPORT_SYMBOL_GPL vmlinux 0x2a1e2ca4 phy_power_off +EXPORT_SYMBOL_GPL vmlinux 0x2a2d5003 spi_master_suspend +EXPORT_SYMBOL_GPL vmlinux 0x2a34a655 wm8997_i2c_regmap +EXPORT_SYMBOL_GPL vmlinux 0x2a678a13 __suspend_report_result +EXPORT_SYMBOL_GPL vmlinux 0x2a67f7da stop_machine +EXPORT_SYMBOL_GPL vmlinux 0x2a7674ad wm831x_reg_unlock +EXPORT_SYMBOL_GPL vmlinux 0x2a919dd8 rdev_get_id +EXPORT_SYMBOL_GPL vmlinux 0x2a9c9041 max8997_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0x2aa578ac mmu_notifier_unregister_no_release +EXPORT_SYMBOL_GPL vmlinux 0x2b085b40 devm_usb_get_phy_by_node +EXPORT_SYMBOL_GPL vmlinux 0x2b14c33e cpufreq_generic_attr +EXPORT_SYMBOL_GPL vmlinux 0x2b4147ed kvmppc_hcall_impl_hv_realmode +EXPORT_SYMBOL_GPL vmlinux 0x2b513eb1 shash_ahash_update +EXPORT_SYMBOL_GPL vmlinux 0x2b5c303b smp_send_reschedule +EXPORT_SYMBOL_GPL vmlinux 0x2b91a2cc component_master_del +EXPORT_SYMBOL_GPL vmlinux 0x2bbb4401 regulator_set_bypass_regmap +EXPORT_SYMBOL_GPL vmlinux 0x2bc0eeae ata_host_activate +EXPORT_SYMBOL_GPL vmlinux 0x2bcaaba8 skb_zerocopy +EXPORT_SYMBOL_GPL vmlinux 0x2bcda621 get_cpu_device +EXPORT_SYMBOL_GPL vmlinux 0x2bd818d3 regulator_map_voltage_ascend +EXPORT_SYMBOL_GPL vmlinux 0x2bfa985e nd_cmd_dimm_desc +EXPORT_SYMBOL_GPL vmlinux 0x2c03b7fc cm_notify_event +EXPORT_SYMBOL_GPL vmlinux 0x2c133868 bit_wait_io_timeout +EXPORT_SYMBOL_GPL vmlinux 0x2c208607 power_supply_is_system_supplied +EXPORT_SYMBOL_GPL vmlinux 0x2c28a076 rio_set_port_lockout +EXPORT_SYMBOL_GPL vmlinux 0x2c3054f9 net_inc_ingress_queue +EXPORT_SYMBOL_GPL vmlinux 0x2c48558d pci_add_dynid +EXPORT_SYMBOL_GPL vmlinux 0x2c661463 ohci_hub_control +EXPORT_SYMBOL_GPL vmlinux 0x2c73146c iommu_detach_group +EXPORT_SYMBOL_GPL vmlinux 0x2c7db649 irq_dispose_mapping +EXPORT_SYMBOL_GPL vmlinux 0x2c7fcb18 ata_sas_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x2c97f8a2 of_reconfig_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x2cbce667 devm_power_supply_register_no_ws +EXPORT_SYMBOL_GPL vmlinux 0x2cbf0f55 __module_address +EXPORT_SYMBOL_GPL vmlinux 0x2cd0f7bd virtio_break_device +EXPORT_SYMBOL_GPL vmlinux 0x2cd88f51 kvm_hv_vm_deactivated +EXPORT_SYMBOL_GPL vmlinux 0x2cdb0069 __pm_runtime_resume +EXPORT_SYMBOL_GPL vmlinux 0x2cdefa77 kernel_kobj +EXPORT_SYMBOL_GPL vmlinux 0x2ce98559 kcrypto_wq +EXPORT_SYMBOL_GPL vmlinux 0x2cea32ee unregister_oldmem_pfn_is_ram +EXPORT_SYMBOL_GPL vmlinux 0x2cf79d84 wm8350_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x2d017c19 extcon_get_extcon_dev +EXPORT_SYMBOL_GPL vmlinux 0x2d040248 ata_std_qc_defer +EXPORT_SYMBOL_GPL vmlinux 0x2d1b02d2 usermodehelper_read_lock_wait +EXPORT_SYMBOL_GPL vmlinux 0x2d41e6f5 __trace_puts +EXPORT_SYMBOL_GPL vmlinux 0x2d495a7a device_for_each_child +EXPORT_SYMBOL_GPL vmlinux 0x2d59c954 edac_handlers +EXPORT_SYMBOL_GPL vmlinux 0x2d5d5a8d relay_flush +EXPORT_SYMBOL_GPL vmlinux 0x2d67d484 mbox_controller_register +EXPORT_SYMBOL_GPL vmlinux 0x2d7b31c5 nf_register_afinfo +EXPORT_SYMBOL_GPL vmlinux 0x2d95d985 regulator_bulk_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x2db5f52c devm_regulator_get_optional +EXPORT_SYMBOL_GPL vmlinux 0x2dc5a6d1 btree_last +EXPORT_SYMBOL_GPL vmlinux 0x2dc7a456 raw_seq_stop +EXPORT_SYMBOL_GPL vmlinux 0x2dd319b5 iptunnel_handle_offloads +EXPORT_SYMBOL_GPL vmlinux 0x2dd6a014 of_usb_get_dr_mode +EXPORT_SYMBOL_GPL vmlinux 0x2de9ee49 mddev_congested +EXPORT_SYMBOL_GPL vmlinux 0x2e1aade3 sysfs_remove_bin_file +EXPORT_SYMBOL_GPL vmlinux 0x2e1da9fb probe_kernel_read +EXPORT_SYMBOL_GPL vmlinux 0x2e2360b1 ftrace_set_global_notrace +EXPORT_SYMBOL_GPL vmlinux 0x2e2f1740 ring_buffer_record_disable_cpu +EXPORT_SYMBOL_GPL vmlinux 0x2e39cddc ip_tunnel_get_stats64 +EXPORT_SYMBOL_GPL vmlinux 0x2e43b020 ata_wait_after_reset +EXPORT_SYMBOL_GPL vmlinux 0x2e8724bf module_mutex +EXPORT_SYMBOL_GPL vmlinux 0x2e988c4a devm_usb_get_phy +EXPORT_SYMBOL_GPL vmlinux 0x2e9ef7b1 __udp6_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x2ebe3135 cpu_is_hotpluggable +EXPORT_SYMBOL_GPL vmlinux 0x2ec4eee6 __tracepoint_suspend_resume +EXPORT_SYMBOL_GPL vmlinux 0x2ed628b3 extcon_dev_register +EXPORT_SYMBOL_GPL vmlinux 0x2ee1b59b ata_pci_sff_activate_host +EXPORT_SYMBOL_GPL vmlinux 0x2f0d9053 usb_otg_state_string +EXPORT_SYMBOL_GPL vmlinux 0x2f220d90 of_mpc8xxx_spi_probe +EXPORT_SYMBOL_GPL vmlinux 0x2f26ac0f regulator_bulk_free +EXPORT_SYMBOL_GPL vmlinux 0x2f3c4106 regulator_list_voltage_linear_range +EXPORT_SYMBOL_GPL vmlinux 0x2f4113a2 dcookie_register +EXPORT_SYMBOL_GPL vmlinux 0x2f58ce98 key_type_trusted +EXPORT_SYMBOL_GPL vmlinux 0x2f69a924 user_update +EXPORT_SYMBOL_GPL vmlinux 0x2f9a8c26 pci_device_is_present +EXPORT_SYMBOL_GPL vmlinux 0x2fb02c02 pci_try_reset_function +EXPORT_SYMBOL_GPL vmlinux 0x2fd0b4df tty_register_device_attr +EXPORT_SYMBOL_GPL vmlinux 0x2fd0f735 usb_alloc_streams +EXPORT_SYMBOL_GPL vmlinux 0x2fd30d5b is_skb_forwardable +EXPORT_SYMBOL_GPL vmlinux 0x2fd8cba9 freeze_wake +EXPORT_SYMBOL_GPL vmlinux 0x2fe0b310 fib_rules_lookup +EXPORT_SYMBOL_GPL vmlinux 0x2fe21c25 inet6_sk_rebuild_header +EXPORT_SYMBOL_GPL vmlinux 0x2ffb5ff7 btree_get_prev +EXPORT_SYMBOL_GPL vmlinux 0x301832fb opal_async_get_token_interruptible +EXPORT_SYMBOL_GPL vmlinux 0x302d4ad8 ata_sas_async_probe +EXPORT_SYMBOL_GPL vmlinux 0x30400c0c unregister_cxl_calls +EXPORT_SYMBOL_GPL vmlinux 0x30467403 sock_diag_unregister +EXPORT_SYMBOL_GPL vmlinux 0x305f815e smpboot_register_percpu_thread +EXPORT_SYMBOL_GPL vmlinux 0x3089b950 relay_switch_subbuf +EXPORT_SYMBOL_GPL vmlinux 0x30ceade4 dm_internal_resume +EXPORT_SYMBOL_GPL vmlinux 0x30cf6bdd ip6_dst_lookup_flow +EXPORT_SYMBOL_GPL vmlinux 0x3109b751 cpu_clock +EXPORT_SYMBOL_GPL vmlinux 0x31266931 con_debug_leave +EXPORT_SYMBOL_GPL vmlinux 0x313a2a0d da903x_update +EXPORT_SYMBOL_GPL vmlinux 0x315228fe powercap_register_zone +EXPORT_SYMBOL_GPL vmlinux 0x3163132f iommu_get_domain_for_dev +EXPORT_SYMBOL_GPL vmlinux 0x319f082f class_find_device +EXPORT_SYMBOL_GPL vmlinux 0x31aed867 ata_std_prereset +EXPORT_SYMBOL_GPL vmlinux 0x31bef441 opal_i2c_request +EXPORT_SYMBOL_GPL vmlinux 0x31c0c2d1 dm_put +EXPORT_SYMBOL_GPL vmlinux 0x31c7970f pciserial_suspend_ports +EXPORT_SYMBOL_GPL vmlinux 0x320db266 gpiochip_find +EXPORT_SYMBOL_GPL vmlinux 0x321bdbb1 compat_get_timeval +EXPORT_SYMBOL_GPL vmlinux 0x323d1bc3 blkdev_write_iter +EXPORT_SYMBOL_GPL vmlinux 0x32568ea0 usb_phy_generic_register +EXPORT_SYMBOL_GPL vmlinux 0x3274262f pcibios_add_pci_devices +EXPORT_SYMBOL_GPL vmlinux 0x327ee297 ping_hash +EXPORT_SYMBOL_GPL vmlinux 0x3282f617 device_set_wakeup_enable +EXPORT_SYMBOL_GPL vmlinux 0x328995b5 tracing_generic_entry_update +EXPORT_SYMBOL_GPL vmlinux 0x329d5da0 crypto_mod_get +EXPORT_SYMBOL_GPL vmlinux 0x32a7376a do_unregister_con_driver +EXPORT_SYMBOL_GPL vmlinux 0x32a9cdf8 pm_generic_poweroff +EXPORT_SYMBOL_GPL vmlinux 0x32b0a7db __sock_recv_wifi_status +EXPORT_SYMBOL_GPL vmlinux 0x32b4c7a8 hvc_alloc +EXPORT_SYMBOL_GPL vmlinux 0x32bc0fcf preempt_notifier_dec +EXPORT_SYMBOL_GPL vmlinux 0x32bded08 __tracepoint_block_bio_remap +EXPORT_SYMBOL_GPL vmlinux 0x32c3cb4e class_compat_register +EXPORT_SYMBOL_GPL vmlinux 0x32ff4228 pci_assign_unassigned_bus_resources +EXPORT_SYMBOL_GPL vmlinux 0x3311c6b2 __gpiod_get_optional +EXPORT_SYMBOL_GPL vmlinux 0x3315ed99 of_pwm_xlate_with_flags +EXPORT_SYMBOL_GPL vmlinux 0x33362d6f pci_test_config_bits +EXPORT_SYMBOL_GPL vmlinux 0x33398de6 mmu_psize_defs +EXPORT_SYMBOL_GPL vmlinux 0x3343d573 of_property_read_u64_array +EXPORT_SYMBOL_GPL vmlinux 0x335c570f enable_percpu_irq +EXPORT_SYMBOL_GPL vmlinux 0x336154ca rcutorture_record_test_transition +EXPORT_SYMBOL_GPL vmlinux 0x337786fa usb_unpoison_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x339963ae of_get_nand_ecc_strength +EXPORT_SYMBOL_GPL vmlinux 0x33c5ead5 extcon_unregister_interest +EXPORT_SYMBOL_GPL vmlinux 0x33c92d6f skcipher_geniv_alloc +EXPORT_SYMBOL_GPL vmlinux 0x33e2a32e queue_kthread_work +EXPORT_SYMBOL_GPL vmlinux 0x33e5ce71 blk_mq_freeze_queue_start +EXPORT_SYMBOL_GPL vmlinux 0x340eb033 pci_slots_kset +EXPORT_SYMBOL_GPL vmlinux 0x341989da con_debug_enter +EXPORT_SYMBOL_GPL vmlinux 0x342108d6 tun_get_socket +EXPORT_SYMBOL_GPL vmlinux 0x3421e399 i2c_generic_gpio_recovery +EXPORT_SYMBOL_GPL vmlinux 0x342238f0 mm_iommu_get +EXPORT_SYMBOL_GPL vmlinux 0x3432ed89 usb_sg_init +EXPORT_SYMBOL_GPL vmlinux 0x3452b1fc device_get_child_node_count +EXPORT_SYMBOL_GPL vmlinux 0x34646153 inet_peer_base_init +EXPORT_SYMBOL_GPL vmlinux 0x34651eaa pskb_put +EXPORT_SYMBOL_GPL vmlinux 0x3465fce6 __tracepoint_block_bio_complete +EXPORT_SYMBOL_GPL vmlinux 0x347a2087 ata_dev_next +EXPORT_SYMBOL_GPL vmlinux 0x347fd4b3 eventfd_ctx_get +EXPORT_SYMBOL_GPL vmlinux 0x34807df9 __netpoll_free_async +EXPORT_SYMBOL_GPL vmlinux 0x34881890 sdhci_pci_o2_probe +EXPORT_SYMBOL_GPL vmlinux 0x34a0679a swiotlb_tbl_map_single +EXPORT_SYMBOL_GPL vmlinux 0x34a5da8a __root_device_register +EXPORT_SYMBOL_GPL vmlinux 0x34a5f62b ata_pci_sff_init_one +EXPORT_SYMBOL_GPL vmlinux 0x34a8e5f5 of_get_nand_ecc_step_size +EXPORT_SYMBOL_GPL vmlinux 0x34af0adf opal_ipmi_send +EXPORT_SYMBOL_GPL vmlinux 0x34c3647e ata_port_desc +EXPORT_SYMBOL_GPL vmlinux 0x34d6a98e regulator_set_load +EXPORT_SYMBOL_GPL vmlinux 0x34d74004 nd_mapping_attribute_group +EXPORT_SYMBOL_GPL vmlinux 0x34dcc791 sdio_f0_readb +EXPORT_SYMBOL_GPL vmlinux 0x34ed7eb0 posix_timers_register_clock +EXPORT_SYMBOL_GPL vmlinux 0x350bf8a2 ata_bmdma_port_start32 +EXPORT_SYMBOL_GPL vmlinux 0x35176301 rcu_batches_completed_sched +EXPORT_SYMBOL_GPL vmlinux 0x351aaa79 skb_to_sgvec_nomark +EXPORT_SYMBOL_GPL vmlinux 0x351ae920 unix_outq_len +EXPORT_SYMBOL_GPL vmlinux 0x35542d82 kthread_unpark +EXPORT_SYMBOL_GPL vmlinux 0x35666802 rtc_set_time +EXPORT_SYMBOL_GPL vmlinux 0x356dac6a blk_queue_rq_timeout +EXPORT_SYMBOL_GPL vmlinux 0x358dce2d rio_attach_device +EXPORT_SYMBOL_GPL vmlinux 0x358ff60f twl_get_hfclk_rate +EXPORT_SYMBOL_GPL vmlinux 0x35942dc9 blk_mq_cancel_requeue_work +EXPORT_SYMBOL_GPL vmlinux 0x359f1813 usb_reset_device +EXPORT_SYMBOL_GPL vmlinux 0x35bf2acd nd_fletcher64 +EXPORT_SYMBOL_GPL vmlinux 0x35ca5250 virtqueue_get_used +EXPORT_SYMBOL_GPL vmlinux 0x35d6ade8 ata_ehi_push_desc +EXPORT_SYMBOL_GPL vmlinux 0x35f10f43 nfq_ct_nat_hook +EXPORT_SYMBOL_GPL vmlinux 0x35fc5ae8 usb_disable_lpm +EXPORT_SYMBOL_GPL vmlinux 0x35ff6cce blocking_notifier_chain_cond_register +EXPORT_SYMBOL_GPL vmlinux 0x3601a768 flush_fp_to_thread +EXPORT_SYMBOL_GPL vmlinux 0x36075bb5 iommu_group_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x3613c390 dev_pm_qos_flags +EXPORT_SYMBOL_GPL vmlinux 0x3615e6cc devm_regulator_bulk_get +EXPORT_SYMBOL_GPL vmlinux 0x361e2bcc save_stack_trace +EXPORT_SYMBOL_GPL vmlinux 0x36422748 devm_hwrng_unregister +EXPORT_SYMBOL_GPL vmlinux 0x3662f995 rio_request_inb_mbox +EXPORT_SYMBOL_GPL vmlinux 0x36763bf2 __ablkcipher_walk_complete +EXPORT_SYMBOL_GPL vmlinux 0x368f1fea static_key_slow_inc +EXPORT_SYMBOL_GPL vmlinux 0x369fcd70 tracing_snapshot +EXPORT_SYMBOL_GPL vmlinux 0x36aa2c3f nd_region_attribute_group +EXPORT_SYMBOL_GPL vmlinux 0x36adab60 trace_seq_path +EXPORT_SYMBOL_GPL vmlinux 0x36bda7b0 cpuidle_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0x36d6e46e gpiod_get_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x36dab97f trace_clock_jiffies +EXPORT_SYMBOL_GPL vmlinux 0x36f8bd76 sysfs_add_device_to_node +EXPORT_SYMBOL_GPL vmlinux 0x370d8ee0 of_dma_xlate_by_chan_id +EXPORT_SYMBOL_GPL vmlinux 0x373de98e iommu_domain_window_enable +EXPORT_SYMBOL_GPL vmlinux 0x374fc808 irq_domain_add_simple +EXPORT_SYMBOL_GPL vmlinux 0x37665e74 vfs_kern_mount +EXPORT_SYMBOL_GPL vmlinux 0x376ddaae blk_mq_freeze_queue +EXPORT_SYMBOL_GPL vmlinux 0x379350e0 extcon_set_cable_state_ +EXPORT_SYMBOL_GPL vmlinux 0x37ccf14a usb_free_coherent +EXPORT_SYMBOL_GPL vmlinux 0x37d11d97 kthread_park +EXPORT_SYMBOL_GPL vmlinux 0x37ef4a9d __srcu_read_unlock +EXPORT_SYMBOL_GPL vmlinux 0x38101f01 trace_output_call +EXPORT_SYMBOL_GPL vmlinux 0x381b1233 pci_stop_and_remove_bus_device_locked +EXPORT_SYMBOL_GPL vmlinux 0x38639300 of_overlay_destroy +EXPORT_SYMBOL_GPL vmlinux 0x38737b2a kvmppc_h_put_tce +EXPORT_SYMBOL_GPL vmlinux 0x387bf3fd bus_sort_breadthfirst +EXPORT_SYMBOL_GPL vmlinux 0x3882a606 of_dma_router_register +EXPORT_SYMBOL_GPL vmlinux 0x388b3b34 key_type_user +EXPORT_SYMBOL_GPL vmlinux 0x389db6f3 powercap_register_control_type +EXPORT_SYMBOL_GPL vmlinux 0x38a72d3e generic_fh_to_parent +EXPORT_SYMBOL_GPL vmlinux 0x38ab32e7 pnv_get_supported_cpuidle_states +EXPORT_SYMBOL_GPL vmlinux 0x38ab9ed3 transport_add_device +EXPORT_SYMBOL_GPL vmlinux 0x38b16ad2 adp5520_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x38ba3be2 regmap_init +EXPORT_SYMBOL_GPL vmlinux 0x38c59f52 blk_queue_bypass_end +EXPORT_SYMBOL_GPL vmlinux 0x38e1bd06 usb_get_current_frame_number +EXPORT_SYMBOL_GPL vmlinux 0x38e328a5 __online_page_free +EXPORT_SYMBOL_GPL vmlinux 0x38e4de90 device_destroy +EXPORT_SYMBOL_GPL vmlinux 0x38ed198f alarm_try_to_cancel +EXPORT_SYMBOL_GPL vmlinux 0x3906e7ee regmap_multi_reg_write_bypassed +EXPORT_SYMBOL_GPL vmlinux 0x3913ef29 devm_remove_action +EXPORT_SYMBOL_GPL vmlinux 0x3932bb4c led_classdev_suspend +EXPORT_SYMBOL_GPL vmlinux 0x394ade5d led_trigger_set_default +EXPORT_SYMBOL_GPL vmlinux 0x399b0c6e input_ff_event +EXPORT_SYMBOL_GPL vmlinux 0x39be80fd fb_deferred_io_init +EXPORT_SYMBOL_GPL vmlinux 0x39ca07cc maxim_charger_calc_reg_current +EXPORT_SYMBOL_GPL vmlinux 0x39d85017 regulator_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x39e61495 nf_logger_request_module +EXPORT_SYMBOL_GPL vmlinux 0x39ebcd61 napi_by_id +EXPORT_SYMBOL_GPL vmlinux 0x3a06b410 inet6_lookup +EXPORT_SYMBOL_GPL vmlinux 0x3a0edddd vring_transport_features +EXPORT_SYMBOL_GPL vmlinux 0x3a26ed11 sched_clock +EXPORT_SYMBOL_GPL vmlinux 0x3a38dc65 memory_failure +EXPORT_SYMBOL_GPL vmlinux 0x3a4f6a32 ata_sff_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x3a509c0a devfreq_event_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0x3a536bd7 ring_buffer_read_finish +EXPORT_SYMBOL_GPL vmlinux 0x3a648283 ehci_handshake +EXPORT_SYMBOL_GPL vmlinux 0x3a7eb6a7 irq_find_mapping +EXPORT_SYMBOL_GPL vmlinux 0x3a836846 __fsnotify_inode_delete +EXPORT_SYMBOL_GPL vmlinux 0x3a874fcd disk_part_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0x3a953c87 fwnode_property_read_u64_array +EXPORT_SYMBOL_GPL vmlinux 0x3a9be019 asymmetric_key_id_partial +EXPORT_SYMBOL_GPL vmlinux 0x3ab2de58 __platform_driver_register +EXPORT_SYMBOL_GPL vmlinux 0x3ac14009 pci_disable_pri +EXPORT_SYMBOL_GPL vmlinux 0x3acdf325 twl4030_audio_enable_resource +EXPORT_SYMBOL_GPL vmlinux 0x3ad0e201 scatterwalk_copychunks +EXPORT_SYMBOL_GPL vmlinux 0x3af713ad debugfs_create_size_t +EXPORT_SYMBOL_GPL vmlinux 0x3afc5978 of_usb_host_tpl_support +EXPORT_SYMBOL_GPL vmlinux 0x3b0d37a7 xhci_init_driver +EXPORT_SYMBOL_GPL vmlinux 0x3b0e95f4 __ip6_local_out +EXPORT_SYMBOL_GPL vmlinux 0x3b276a55 pci_find_ext_capability +EXPORT_SYMBOL_GPL vmlinux 0x3b7144e4 copro_handle_mm_fault +EXPORT_SYMBOL_GPL vmlinux 0x3b769677 pci_set_cacheline_size +EXPORT_SYMBOL_GPL vmlinux 0x3b816f87 trace_seq_putmem +EXPORT_SYMBOL_GPL vmlinux 0x3b85c1ce virtio_config_changed +EXPORT_SYMBOL_GPL vmlinux 0x3bc31d38 inet_csk_listen_stop +EXPORT_SYMBOL_GPL vmlinux 0x3bf72790 ata_link_next +EXPORT_SYMBOL_GPL vmlinux 0x3bf7b001 ping_seq_next +EXPORT_SYMBOL_GPL vmlinux 0x3bfc85e1 blk_queue_bypass_start +EXPORT_SYMBOL_GPL vmlinux 0x3c215f1d __mnt_is_readonly +EXPORT_SYMBOL_GPL vmlinux 0x3c280625 wakeup_source_prepare +EXPORT_SYMBOL_GPL vmlinux 0x3c2edeb1 crypto_nivaead_type +EXPORT_SYMBOL_GPL vmlinux 0x3c51ea7c opal_leds_get_ind +EXPORT_SYMBOL_GPL vmlinux 0x3c83d767 sysfs_remove_device_from_node +EXPORT_SYMBOL_GPL vmlinux 0x3c894236 fl6_sock_lookup +EXPORT_SYMBOL_GPL vmlinux 0x3c9390db pci_vpd_find_tag +EXPORT_SYMBOL_GPL vmlinux 0x3c970829 transport_setup_device +EXPORT_SYMBOL_GPL vmlinux 0x3ca68372 pci_enable_pri +EXPORT_SYMBOL_GPL vmlinux 0x3ca73b8d md_allow_write +EXPORT_SYMBOL_GPL vmlinux 0x3cac7927 debugfs_create_u64 +EXPORT_SYMBOL_GPL vmlinux 0x3cd06035 add_input_randomness +EXPORT_SYMBOL_GPL vmlinux 0x3cf5672b bio_clone_mddev +EXPORT_SYMBOL_GPL vmlinux 0x3cf61067 crypto_register_akcipher +EXPORT_SYMBOL_GPL vmlinux 0x3cf69baf slice_get_unmapped_area +EXPORT_SYMBOL_GPL vmlinux 0x3d03dfab ehci_resume +EXPORT_SYMBOL_GPL vmlinux 0x3d0b8417 wb_writeout_inc +EXPORT_SYMBOL_GPL vmlinux 0x3d13dd39 sdio_memcpy_fromio +EXPORT_SYMBOL_GPL vmlinux 0x3d388324 dpm_resume_end +EXPORT_SYMBOL_GPL vmlinux 0x3d612305 iommu_direction_to_tce_perm +EXPORT_SYMBOL_GPL vmlinux 0x3d698921 component_del +EXPORT_SYMBOL_GPL vmlinux 0x3d69ec01 usb_clear_halt +EXPORT_SYMBOL_GPL vmlinux 0x3d6d0d58 wm5110_revd_irq +EXPORT_SYMBOL_GPL vmlinux 0x3da190d6 rtc_initialize_alarm +EXPORT_SYMBOL_GPL vmlinux 0x3da61241 sock_diag_register +EXPORT_SYMBOL_GPL vmlinux 0x3dc526a9 arizona_of_match +EXPORT_SYMBOL_GPL vmlinux 0x3dc916b6 crypto_fl_tab +EXPORT_SYMBOL_GPL vmlinux 0x3dd07f3c ip6_dst_lookup +EXPORT_SYMBOL_GPL vmlinux 0x3de9cae1 crypto_remove_final +EXPORT_SYMBOL_GPL vmlinux 0x3dfbe7e6 bmp085_detect +EXPORT_SYMBOL_GPL vmlinux 0x3dfc436e percpu_ref_kill_and_confirm +EXPORT_SYMBOL_GPL vmlinux 0x3e0e2fe0 devm_phy_get +EXPORT_SYMBOL_GPL vmlinux 0x3e259239 smp_call_function_any +EXPORT_SYMBOL_GPL vmlinux 0x3e42885e usb_driver_claim_interface +EXPORT_SYMBOL_GPL vmlinux 0x3e543dd1 get_task_comm +EXPORT_SYMBOL_GPL vmlinux 0x3e5e1937 rcu_batches_started_sched +EXPORT_SYMBOL_GPL vmlinux 0x3e7080cb mpi_read_from_buffer +EXPORT_SYMBOL_GPL vmlinux 0x3e9081ee kobj_sysfs_ops +EXPORT_SYMBOL_GPL vmlinux 0x3eac8f3f of_rescan_bus +EXPORT_SYMBOL_GPL vmlinux 0x3eb1e66f perf_pmu_register +EXPORT_SYMBOL_GPL vmlinux 0x3ebe78df set_primary_fwnode +EXPORT_SYMBOL_GPL vmlinux 0x3ec968a3 usb_autopm_put_interface_async +EXPORT_SYMBOL_GPL vmlinux 0x3efb35c9 get_online_cpus +EXPORT_SYMBOL_GPL vmlinux 0x3f0c50b1 aead_geniv_free +EXPORT_SYMBOL_GPL vmlinux 0x3f35fe0c dev_attr_unload_heads +EXPORT_SYMBOL_GPL vmlinux 0x3f3cbc6f subsys_dev_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x3f575293 aead_register_instance +EXPORT_SYMBOL_GPL vmlinux 0x3fa5af9c nd_cmd_bus_desc +EXPORT_SYMBOL_GPL vmlinux 0x3fb14423 md_ack_all_badblocks +EXPORT_SYMBOL_GPL vmlinux 0x3fb2bd8a irq_set_affinity_hint +EXPORT_SYMBOL_GPL vmlinux 0x3fc72d3d __tracepoint_kfree_skb +EXPORT_SYMBOL_GPL vmlinux 0x3fef7431 register_kprobes +EXPORT_SYMBOL_GPL vmlinux 0x400758ff ip6_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x40085fa7 component_master_add_child +EXPORT_SYMBOL_GPL vmlinux 0x402f9f38 ip6_sk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x403f9529 gpio_request_one +EXPORT_SYMBOL_GPL vmlinux 0x4045c494 filter_match_preds +EXPORT_SYMBOL_GPL vmlinux 0x40640250 ftrace_set_filter +EXPORT_SYMBOL_GPL vmlinux 0x4065d168 pm_print_active_wakeup_sources +EXPORT_SYMBOL_GPL vmlinux 0x406c4cb1 hrtimer_resolution +EXPORT_SYMBOL_GPL vmlinux 0x409b6389 security_inode_setattr +EXPORT_SYMBOL_GPL vmlinux 0x409c08af blk_mq_unfreeze_queue +EXPORT_SYMBOL_GPL vmlinux 0x40a5d127 pci_create_root_bus +EXPORT_SYMBOL_GPL vmlinux 0x40a65c1c pm_stay_awake +EXPORT_SYMBOL_GPL vmlinux 0x40af0dec ata_xfer_mode2mask +EXPORT_SYMBOL_GPL vmlinux 0x40d46b21 crypto_ft_tab +EXPORT_SYMBOL_GPL vmlinux 0x40dec6eb fat_remove_entries +EXPORT_SYMBOL_GPL vmlinux 0x40e46a05 tty_port_tty_wakeup +EXPORT_SYMBOL_GPL vmlinux 0x40ea332f thermal_zone_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x40eee8e5 rtc_set_alarm +EXPORT_SYMBOL_GPL vmlinux 0x40f0683e reset_control_put +EXPORT_SYMBOL_GPL vmlinux 0x411b4cd5 sysfs_create_group +EXPORT_SYMBOL_GPL vmlinux 0x412cec62 register_virtio_driver +EXPORT_SYMBOL_GPL vmlinux 0x413f7e17 alarm_init +EXPORT_SYMBOL_GPL vmlinux 0x4143f278 init_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0x41629c30 ata_sff_busy_sleep +EXPORT_SYMBOL_GPL vmlinux 0x41814cb8 dirty_writeback_interval +EXPORT_SYMBOL_GPL vmlinux 0x4188d895 kill_pid_info_as_cred +EXPORT_SYMBOL_GPL vmlinux 0x41a6580c bus_get_kset +EXPORT_SYMBOL_GPL vmlinux 0x41abff38 disk_map_sector_rcu +EXPORT_SYMBOL_GPL vmlinux 0x41b5b132 irq_domain_add_legacy +EXPORT_SYMBOL_GPL vmlinux 0x41bdeb69 serial8250_rpm_put +EXPORT_SYMBOL_GPL vmlinux 0x41c47f9a dma_buf_end_cpu_access +EXPORT_SYMBOL_GPL vmlinux 0x41c9d2d0 add_page_wait_queue +EXPORT_SYMBOL_GPL vmlinux 0x41db3736 proc_mkdir_data +EXPORT_SYMBOL_GPL vmlinux 0x420638fc rtc_device_register +EXPORT_SYMBOL_GPL vmlinux 0x42163870 scsi_internal_device_unblock +EXPORT_SYMBOL_GPL vmlinux 0x424acc6d scatterwalk_done +EXPORT_SYMBOL_GPL vmlinux 0x425ccf19 __spin_yield +EXPORT_SYMBOL_GPL vmlinux 0x4278272d pci_cleanup_aer_uncorrect_error_status +EXPORT_SYMBOL_GPL vmlinux 0x42804f70 __rio_local_write_config_8 +EXPORT_SYMBOL_GPL vmlinux 0x42825ce2 rcu_scheduler_active +EXPORT_SYMBOL_GPL vmlinux 0x4282d9f5 cpu_subsys +EXPORT_SYMBOL_GPL vmlinux 0x4288f0c8 tc3589x_block_write +EXPORT_SYMBOL_GPL vmlinux 0x429bd53a rhashtable_walk_start +EXPORT_SYMBOL_GPL vmlinux 0x42b0309b regmap_write +EXPORT_SYMBOL_GPL vmlinux 0x42b6ac41 rtnl_link_unregister +EXPORT_SYMBOL_GPL vmlinux 0x42b80c72 debugfs_create_bool +EXPORT_SYMBOL_GPL vmlinux 0x42d51674 usb_find_alt_setting +EXPORT_SYMBOL_GPL vmlinux 0x42fe2799 rio_unlock_device +EXPORT_SYMBOL_GPL vmlinux 0x431bf93c wm5110_irq +EXPORT_SYMBOL_GPL vmlinux 0x43255a81 iommu_domain_set_attr +EXPORT_SYMBOL_GPL vmlinux 0x432702e6 mm_iommu_mapped_inc +EXPORT_SYMBOL_GPL vmlinux 0x4329366e power_supply_class +EXPORT_SYMBOL_GPL vmlinux 0x43619e1a scatterwalk_ffwd +EXPORT_SYMBOL_GPL vmlinux 0x438848b0 xhci_dbg_trace +EXPORT_SYMBOL_GPL vmlinux 0x43a53735 __alloc_workqueue_key +EXPORT_SYMBOL_GPL vmlinux 0x43ee61d3 unregister_trace_event +EXPORT_SYMBOL_GPL vmlinux 0x43f46fa9 usb_match_one_id +EXPORT_SYMBOL_GPL vmlinux 0x43f56e82 ata_xfer_mode2shift +EXPORT_SYMBOL_GPL vmlinux 0x4440375e regulator_list_voltage +EXPORT_SYMBOL_GPL vmlinux 0x44727096 ata_host_init +EXPORT_SYMBOL_GPL vmlinux 0x4484a5a4 wait_for_device_probe +EXPORT_SYMBOL_GPL vmlinux 0x44a02bc2 pm_generic_runtime_resume +EXPORT_SYMBOL_GPL vmlinux 0x450fb522 kmsg_dump_get_buffer +EXPORT_SYMBOL_GPL vmlinux 0x45347772 sk_setup_caps +EXPORT_SYMBOL_GPL vmlinux 0x45426d22 device_get_next_child_node +EXPORT_SYMBOL_GPL vmlinux 0x455cd023 regmap_get_device +EXPORT_SYMBOL_GPL vmlinux 0x457594fa crypto_alg_list +EXPORT_SYMBOL_GPL vmlinux 0x45759863 agp_add_bridge +EXPORT_SYMBOL_GPL vmlinux 0x457e5725 regulator_disable +EXPORT_SYMBOL_GPL vmlinux 0x458eaa2f call_srcu +EXPORT_SYMBOL_GPL vmlinux 0x45a4dd78 nvdimm_bus_check_dimm_count +EXPORT_SYMBOL_GPL vmlinux 0x45bf1ff3 crypto_inc +EXPORT_SYMBOL_GPL vmlinux 0x46013233 net_dec_ingress_queue +EXPORT_SYMBOL_GPL vmlinux 0x46057697 rhashtable_walk_next +EXPORT_SYMBOL_GPL vmlinux 0x460f7531 wait_rcu_gp +EXPORT_SYMBOL_GPL vmlinux 0x463d24ea ipv6_fixup_options +EXPORT_SYMBOL_GPL vmlinux 0x4660f625 usb_autopm_put_interface +EXPORT_SYMBOL_GPL vmlinux 0x46647178 hrtimer_init +EXPORT_SYMBOL_GPL vmlinux 0x4671c548 pm_wakeup_event +EXPORT_SYMBOL_GPL vmlinux 0x4672e88b __crypto_dequeue_request +EXPORT_SYMBOL_GPL vmlinux 0x467c6d06 md_rdev_init +EXPORT_SYMBOL_GPL vmlinux 0x4688c96a usb_scuttle_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x4688d7ec pvclock_gtod_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x469143c4 x509_free_certificate +EXPORT_SYMBOL_GPL vmlinux 0x46a814e0 aead_geniv_alloc +EXPORT_SYMBOL_GPL vmlinux 0x46aa7fd8 driver_unregister +EXPORT_SYMBOL_GPL vmlinux 0x46b2331c usb_put_intf +EXPORT_SYMBOL_GPL vmlinux 0x46ef627e ping_err +EXPORT_SYMBOL_GPL vmlinux 0x46f1b05e crypto_unregister_alg +EXPORT_SYMBOL_GPL vmlinux 0x4714807f sata_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x47229b5c gpio_request +EXPORT_SYMBOL_GPL vmlinux 0x473ba129 serial8250_get_port +EXPORT_SYMBOL_GPL vmlinux 0x4761f17c register_netevent_notifier +EXPORT_SYMBOL_GPL vmlinux 0x47638908 pci_reset_bridge_secondary_bus +EXPORT_SYMBOL_GPL vmlinux 0x476f0201 cpufreq_freq_attr_scaling_available_freqs +EXPORT_SYMBOL_GPL vmlinux 0x47873eb5 __gpiod_get_index +EXPORT_SYMBOL_GPL vmlinux 0x47884890 system_power_efficient_wq +EXPORT_SYMBOL_GPL vmlinux 0x4795726c md_kick_rdev_from_array +EXPORT_SYMBOL_GPL vmlinux 0x47aad3b9 have_governor_per_policy +EXPORT_SYMBOL_GPL vmlinux 0x480b7c21 ip6_local_out +EXPORT_SYMBOL_GPL vmlinux 0x481c2cb0 look_up_OID +EXPORT_SYMBOL_GPL vmlinux 0x4835d9c3 dax_clear_blocks +EXPORT_SYMBOL_GPL vmlinux 0x48382619 regulator_force_disable +EXPORT_SYMBOL_GPL vmlinux 0x484d72e6 crypto_mod_put +EXPORT_SYMBOL_GPL vmlinux 0x485b3ed1 __trace_note_message +EXPORT_SYMBOL_GPL vmlinux 0x4861b99a crypto_spawn_tfm +EXPORT_SYMBOL_GPL vmlinux 0x4861f92c crypto_lookup_skcipher +EXPORT_SYMBOL_GPL vmlinux 0x4864ef1b device_attach +EXPORT_SYMBOL_GPL vmlinux 0x4868c3b4 rcu_batches_started_bh +EXPORT_SYMBOL_GPL vmlinux 0x487c5d33 nf_log_buf_add +EXPORT_SYMBOL_GPL vmlinux 0x4883541a regulator_get_voltage_sel_regmap +EXPORT_SYMBOL_GPL vmlinux 0x489d37d3 user_read +EXPORT_SYMBOL_GPL vmlinux 0x48ccc97a tcp_get_info +EXPORT_SYMBOL_GPL vmlinux 0x48eb8a4e crypto_unregister_aead +EXPORT_SYMBOL_GPL vmlinux 0x491aa49f lp8788_write_byte +EXPORT_SYMBOL_GPL vmlinux 0x4922519f regulator_unregister +EXPORT_SYMBOL_GPL vmlinux 0x4934c4ae mpc8xxx_spi_rx_buf_u16 +EXPORT_SYMBOL_GPL vmlinux 0x49435502 extcon_get_cable_state +EXPORT_SYMBOL_GPL vmlinux 0x496899c8 inet_csk_compat_setsockopt +EXPORT_SYMBOL_GPL vmlinux 0x49695179 devm_pwm_get +EXPORT_SYMBOL_GPL vmlinux 0x4980aec1 virtqueue_enable_cb +EXPORT_SYMBOL_GPL vmlinux 0x498d293a trace_buffer_unlock_commit +EXPORT_SYMBOL_GPL vmlinux 0x499043d3 crypto_init_queue +EXPORT_SYMBOL_GPL vmlinux 0x49b2dd4d devres_get +EXPORT_SYMBOL_GPL vmlinux 0x49c3a6f3 pm_runtime_set_autosuspend_delay +EXPORT_SYMBOL_GPL vmlinux 0x49d00869 led_trigger_register +EXPORT_SYMBOL_GPL vmlinux 0x49d1e243 of_regulator_match +EXPORT_SYMBOL_GPL vmlinux 0x49e318a6 i2c_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0x49e96999 cond_synchronize_rcu +EXPORT_SYMBOL_GPL vmlinux 0x4a026413 mm_iommu_mapped_dec +EXPORT_SYMBOL_GPL vmlinux 0x4a233076 __platform_create_bundle +EXPORT_SYMBOL_GPL vmlinux 0x4a62645f dev_attr_link_power_management_policy +EXPORT_SYMBOL_GPL vmlinux 0x4a6d70d5 crypto_ahash_finup +EXPORT_SYMBOL_GPL vmlinux 0x4a7644aa wbc_account_io +EXPORT_SYMBOL_GPL vmlinux 0x4a90160e bprintf +EXPORT_SYMBOL_GPL vmlinux 0x4a97c914 param_set_bool_enable_only +EXPORT_SYMBOL_GPL vmlinux 0x4aa8d96e crypto_unregister_template +EXPORT_SYMBOL_GPL vmlinux 0x4aadeb9a ring_buffer_alloc_read_page +EXPORT_SYMBOL_GPL vmlinux 0x4ab47b46 rio_mport_chk_dev_access +EXPORT_SYMBOL_GPL vmlinux 0x4ab7e811 tps6586x_write +EXPORT_SYMBOL_GPL vmlinux 0x4abb79ca __get_user_pages_fast +EXPORT_SYMBOL_GPL vmlinux 0x4ace0ba5 posix_acl_create +EXPORT_SYMBOL_GPL vmlinux 0x4ae52dcb anon_inode_getfd +EXPORT_SYMBOL_GPL vmlinux 0x4ae8c705 list_lru_count_node +EXPORT_SYMBOL_GPL vmlinux 0x4afa44e6 of_pci_range_parser_init +EXPORT_SYMBOL_GPL vmlinux 0x4b0fdb0f power_supply_get_property +EXPORT_SYMBOL_GPL vmlinux 0x4b111edc pci_assign_unassigned_bridge_resources +EXPORT_SYMBOL_GPL vmlinux 0x4b15d869 class_dev_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x4b2f1599 alarm_forward +EXPORT_SYMBOL_GPL vmlinux 0x4b86b4af clockevent_delta2ns +EXPORT_SYMBOL_GPL vmlinux 0x4bd8114b ata_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x4bf22402 of_get_nand_ecc_mode +EXPORT_SYMBOL_GPL vmlinux 0x4bf4a3d3 file_ra_state_init +EXPORT_SYMBOL_GPL vmlinux 0x4bfacbb9 cpufreq_table_validate_and_show +EXPORT_SYMBOL_GPL vmlinux 0x4c07d46b usb_block_urb +EXPORT_SYMBOL_GPL vmlinux 0x4c1508d0 led_classdev_resume +EXPORT_SYMBOL_GPL vmlinux 0x4c42c727 device_add +EXPORT_SYMBOL_GPL vmlinux 0x4c602bf1 __blkg_release_rcu +EXPORT_SYMBOL_GPL vmlinux 0x4c602c22 pstore_register +EXPORT_SYMBOL_GPL vmlinux 0x4c645f9e static_key_slow_dec_deferred +EXPORT_SYMBOL_GPL vmlinux 0x4c64f24b dma_buf_kunmap +EXPORT_SYMBOL_GPL vmlinux 0x4c721b83 crypto_larval_kill +EXPORT_SYMBOL_GPL vmlinux 0x4c733ba6 nd_blk_region_to_dimm +EXPORT_SYMBOL_GPL vmlinux 0x4c759827 byte_rev_table +EXPORT_SYMBOL_GPL vmlinux 0x4c82d0e9 scsi_schedule_eh +EXPORT_SYMBOL_GPL vmlinux 0x4c8354ed regulator_bulk_disable +EXPORT_SYMBOL_GPL vmlinux 0x4c9515b6 ata_dummy_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x4c9a761a crypto_aead_setauthsize +EXPORT_SYMBOL_GPL vmlinux 0x4caa90c0 skb_complete_wifi_ack +EXPORT_SYMBOL_GPL vmlinux 0x4cf939fe trace_print_bitmask_seq +EXPORT_SYMBOL_GPL vmlinux 0x4d0015e2 cpu_hotplug_disable +EXPORT_SYMBOL_GPL vmlinux 0x4d14429c mpc8xxx_spi_rx_buf_u8 +EXPORT_SYMBOL_GPL vmlinux 0x4d26fc95 ata_bmdma_status +EXPORT_SYMBOL_GPL vmlinux 0x4d484034 da9052_adc_read_temp +EXPORT_SYMBOL_GPL vmlinux 0x4d4c7e74 nvdimm_bus_unregister +EXPORT_SYMBOL_GPL vmlinux 0x4d4e99b1 fat_get_dotdot_entry +EXPORT_SYMBOL_GPL vmlinux 0x4d599004 handle_level_irq +EXPORT_SYMBOL_GPL vmlinux 0x4d8be6ba uhci_reset_hc +EXPORT_SYMBOL_GPL vmlinux 0x4d92d3c0 nd_device_attribute_group +EXPORT_SYMBOL_GPL vmlinux 0x4de17ab3 usb_state_string +EXPORT_SYMBOL_GPL vmlinux 0x4e109192 ring_buffer_entries +EXPORT_SYMBOL_GPL vmlinux 0x4e1edb3f nf_queue_entry_release_refs +EXPORT_SYMBOL_GPL vmlinux 0x4e242f5f pstore_cannot_block_path +EXPORT_SYMBOL_GPL vmlinux 0x4e2e5f6b dma_run_dependencies +EXPORT_SYMBOL_GPL vmlinux 0x4e550c85 ata_port_freeze +EXPORT_SYMBOL_GPL vmlinux 0x4e5cafcb spi_bus_lock +EXPORT_SYMBOL_GPL vmlinux 0x4e671d77 class_for_each_device +EXPORT_SYMBOL_GPL vmlinux 0x4e6e3fb8 aead_geniv_init +EXPORT_SYMBOL_GPL vmlinux 0x4e9f537d blkcg_deactivate_policy +EXPORT_SYMBOL_GPL vmlinux 0x4eac092b gpiod_export +EXPORT_SYMBOL_GPL vmlinux 0x4eaedded crypto_register_alg +EXPORT_SYMBOL_GPL vmlinux 0x4ec3cb7c sock_diag_save_cookie +EXPORT_SYMBOL_GPL vmlinux 0x4edfb990 pci_reset_slot +EXPORT_SYMBOL_GPL vmlinux 0x4eea304a pm_schedule_suspend +EXPORT_SYMBOL_GPL vmlinux 0x4ef5bcf4 perf_swevent_get_recursion_context +EXPORT_SYMBOL_GPL vmlinux 0x4f020dee public_key_verify_signature +EXPORT_SYMBOL_GPL vmlinux 0x4f1788fe tty_buffer_request_room +EXPORT_SYMBOL_GPL vmlinux 0x4f22bd5a regulator_set_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x4f3d1dfe ata_sff_softreset +EXPORT_SYMBOL_GPL vmlinux 0x4f3ead73 rio_unmap_inb_region +EXPORT_SYMBOL_GPL vmlinux 0x4f5b7b01 wm8997_irq +EXPORT_SYMBOL_GPL vmlinux 0x4f6a07fe show_rcu_gp_kthreads +EXPORT_SYMBOL_GPL vmlinux 0x4f6ec8df mmc_get_ext_csd +EXPORT_SYMBOL_GPL vmlinux 0x4f7cb82d gpiochip_irqchip_add +EXPORT_SYMBOL_GPL vmlinux 0x4fb27c78 dma_buf_vmap +EXPORT_SYMBOL_GPL vmlinux 0x4fca6adf usb_mon_register +EXPORT_SYMBOL_GPL vmlinux 0x4fcbc989 device_reset +EXPORT_SYMBOL_GPL vmlinux 0x4fd4e89d ring_buffer_empty_cpu +EXPORT_SYMBOL_GPL vmlinux 0x4fdc945d sata_deb_timing_normal +EXPORT_SYMBOL_GPL vmlinux 0x4fe1eddf unregister_netevent_notifier +EXPORT_SYMBOL_GPL vmlinux 0x5005dd8b tty_put_char +EXPORT_SYMBOL_GPL vmlinux 0x500e6e74 __pneigh_lookup +EXPORT_SYMBOL_GPL vmlinux 0x5010c1bb sysfs_remove_file_ns +EXPORT_SYMBOL_GPL vmlinux 0x5033d9de iommu_domain_free +EXPORT_SYMBOL_GPL vmlinux 0x5039c4ab percpu_ida_for_each_free +EXPORT_SYMBOL_GPL vmlinux 0x5040a403 platform_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x5066d8fb page_mkclean +EXPORT_SYMBOL_GPL vmlinux 0x50797ab3 mbox_request_channel_byname +EXPORT_SYMBOL_GPL vmlinux 0x507de8c6 add_memory +EXPORT_SYMBOL_GPL vmlinux 0x5086ac3a alg_test +EXPORT_SYMBOL_GPL vmlinux 0x5091b823 ring_buffer_read_start +EXPORT_SYMBOL_GPL vmlinux 0x50a3a1f6 kvmppc_clear_ref_hpte +EXPORT_SYMBOL_GPL vmlinux 0x50a61c3d __init_kthread_worker +EXPORT_SYMBOL_GPL vmlinux 0x50a7478f set_online_page_callback +EXPORT_SYMBOL_GPL vmlinux 0x50e7193a __i2c_first_dynamic_bus_num +EXPORT_SYMBOL_GPL vmlinux 0x50fad434 round_jiffies_up +EXPORT_SYMBOL_GPL vmlinux 0x510a986c scsi_nl_sock +EXPORT_SYMBOL_GPL vmlinux 0x510e1c71 mm_iommu_lookup +EXPORT_SYMBOL_GPL vmlinux 0x5117476b xfrm_audit_state_add +EXPORT_SYMBOL_GPL vmlinux 0x511e8733 mpc8xxx_spi_tx_buf_u32 +EXPORT_SYMBOL_GPL vmlinux 0x514974c1 netdev_set_default_ethtool_ops +EXPORT_SYMBOL_GPL vmlinux 0x5166bc97 usb_hcd_amd_remote_wakeup_quirk +EXPORT_SYMBOL_GPL vmlinux 0x51883820 of_property_read_string +EXPORT_SYMBOL_GPL vmlinux 0x518b6ad5 rio_dma_prep_xfer +EXPORT_SYMBOL_GPL vmlinux 0x518d65e1 trace_seq_puts +EXPORT_SYMBOL_GPL vmlinux 0x519f28e0 dev_set_name +EXPORT_SYMBOL_GPL vmlinux 0x51b65a26 rtc_lock +EXPORT_SYMBOL_GPL vmlinux 0x51b93335 bus_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0x51fb4fe4 fsstack_copy_attr_all +EXPORT_SYMBOL_GPL vmlinux 0x5205e64d disable_kprobe +EXPORT_SYMBOL_GPL vmlinux 0x52070b0c spi_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x5210a5bf hsi_board_list +EXPORT_SYMBOL_GPL vmlinux 0x522bcefd ipv6_find_tlv +EXPORT_SYMBOL_GPL vmlinux 0x522f538b tpm_send +EXPORT_SYMBOL_GPL vmlinux 0x523c4aa0 devm_regmap_field_alloc +EXPORT_SYMBOL_GPL vmlinux 0x524bc906 get_kernel_page +EXPORT_SYMBOL_GPL vmlinux 0x5262e8eb __mmu_notifier_invalidate_range_start +EXPORT_SYMBOL_GPL vmlinux 0x5272d8bc __cookie_v4_check +EXPORT_SYMBOL_GPL vmlinux 0x5276b666 blkcg_print_blkgs +EXPORT_SYMBOL_GPL vmlinux 0x527ff042 pci_ats_queue_depth +EXPORT_SYMBOL_GPL vmlinux 0x529e1e5e rhashtable_insert_rehash +EXPORT_SYMBOL_GPL vmlinux 0x529fa741 ipv4_redirect +EXPORT_SYMBOL_GPL vmlinux 0x52a41251 __cookie_v4_init_sequence +EXPORT_SYMBOL_GPL vmlinux 0x52c2fc81 genlmsg_new_unicast +EXPORT_SYMBOL_GPL vmlinux 0x52cb7fcd ata_cable_80wire +EXPORT_SYMBOL_GPL vmlinux 0x52db2657 ata_sff_tf_read +EXPORT_SYMBOL_GPL vmlinux 0x52db2eb3 sata_link_scr_lpm +EXPORT_SYMBOL_GPL vmlinux 0x5306410e alarm_start_relative +EXPORT_SYMBOL_GPL vmlinux 0x53195544 __blkg_prfill_u64 +EXPORT_SYMBOL_GPL vmlinux 0x5335dd11 atomic_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x5336be89 pci_num_vf +EXPORT_SYMBOL_GPL vmlinux 0x5357f76c dax_do_io +EXPORT_SYMBOL_GPL vmlinux 0x5358fc36 ring_buffer_discard_commit +EXPORT_SYMBOL_GPL vmlinux 0x53614269 get_cpu_idle_time_us +EXPORT_SYMBOL_GPL vmlinux 0x537ae173 dev_pm_qos_expose_latency_tolerance +EXPORT_SYMBOL_GPL vmlinux 0x5381fc4d trace_define_field +EXPORT_SYMBOL_GPL vmlinux 0x53d52de6 copro_calculate_slb +EXPORT_SYMBOL_GPL vmlinux 0x53d823bc net_ns_type_operations +EXPORT_SYMBOL_GPL vmlinux 0x53ebcf85 input_class +EXPORT_SYMBOL_GPL vmlinux 0x53f2905c rt_mutex_destroy +EXPORT_SYMBOL_GPL vmlinux 0x540088e9 devm_regmap_init +EXPORT_SYMBOL_GPL vmlinux 0x5413bed8 vfs_setlease +EXPORT_SYMBOL_GPL vmlinux 0x541bd60a irq_work_run +EXPORT_SYMBOL_GPL vmlinux 0x54215db5 visitor64 +EXPORT_SYMBOL_GPL vmlinux 0x5425d145 bit_wait_timeout +EXPORT_SYMBOL_GPL vmlinux 0x542d3e39 bio_associate_current +EXPORT_SYMBOL_GPL vmlinux 0x542ee592 rio_mport_read_config_16 +EXPORT_SYMBOL_GPL vmlinux 0x543d5f1d rio_request_mport_dma +EXPORT_SYMBOL_GPL vmlinux 0x54458b56 hrtimer_try_to_cancel +EXPORT_SYMBOL_GPL vmlinux 0x5460c8d8 fsnotify_get_cookie +EXPORT_SYMBOL_GPL vmlinux 0x546c5565 ppc_tb_freq +EXPORT_SYMBOL_GPL vmlinux 0x54740eb7 get_cpu_idle_time +EXPORT_SYMBOL_GPL vmlinux 0x5476fcf5 inet_csk_listen_start +EXPORT_SYMBOL_GPL vmlinux 0x547fdf05 lp8788_read_byte +EXPORT_SYMBOL_GPL vmlinux 0x549525ef handle_nested_irq +EXPORT_SYMBOL_GPL vmlinux 0x549c9644 ata_sff_hsm_move +EXPORT_SYMBOL_GPL vmlinux 0x54a3fda5 class_compat_create_link +EXPORT_SYMBOL_GPL vmlinux 0x54d46690 uart_parse_earlycon +EXPORT_SYMBOL_GPL vmlinux 0x54ffb753 of_modalias_node +EXPORT_SYMBOL_GPL vmlinux 0x5504d8a9 pci_generic_config_write +EXPORT_SYMBOL_GPL vmlinux 0x55170856 spi_new_device +EXPORT_SYMBOL_GPL vmlinux 0x552934c5 srcu_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0x553b49a4 cpufreq_get_driver_data +EXPORT_SYMBOL_GPL vmlinux 0x55417264 unregister_vt_notifier +EXPORT_SYMBOL_GPL vmlinux 0x554377c9 regcache_sync +EXPORT_SYMBOL_GPL vmlinux 0x55455551 regulator_list_voltage_table +EXPORT_SYMBOL_GPL vmlinux 0x55559f01 mm_kobj +EXPORT_SYMBOL_GPL vmlinux 0x555f06dc crypto_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x557562fa ata_pci_bmdma_clear_simplex +EXPORT_SYMBOL_GPL vmlinux 0x55784228 regmap_irq_get_virq +EXPORT_SYMBOL_GPL vmlinux 0x5588879e kvmppc_entry_trampoline +EXPORT_SYMBOL_GPL vmlinux 0x55ee968f device_bind_driver +EXPORT_SYMBOL_GPL vmlinux 0x5607ec38 tpm2_calc_ordinal_duration +EXPORT_SYMBOL_GPL vmlinux 0x560aa1db opal_tpo_write +EXPORT_SYMBOL_GPL vmlinux 0x56256e8a orderly_poweroff +EXPORT_SYMBOL_GPL vmlinux 0x56310925 regulator_mode_to_status +EXPORT_SYMBOL_GPL vmlinux 0x563ee51b skcipher_geniv_exit +EXPORT_SYMBOL_GPL vmlinux 0x565b6892 uuid_le_gen +EXPORT_SYMBOL_GPL vmlinux 0x566a377f pci_hp_remove_module_link +EXPORT_SYMBOL_GPL vmlinux 0x567454cb blockdev_superblock +EXPORT_SYMBOL_GPL vmlinux 0x567e7891 __clocksource_update_freq_scale +EXPORT_SYMBOL_GPL vmlinux 0x56886b19 scatterwalk_map +EXPORT_SYMBOL_GPL vmlinux 0x56a74cfe crypto_attr_alg2 +EXPORT_SYMBOL_GPL vmlinux 0x56a7ebec init_srcu_struct +EXPORT_SYMBOL_GPL vmlinux 0x56b08e6e ip_route_output_flow +EXPORT_SYMBOL_GPL vmlinux 0x56c557bb nd_numa_attribute_group +EXPORT_SYMBOL_GPL vmlinux 0x56c59ff1 da903x_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x56c6452e uart_handle_dcd_change +EXPORT_SYMBOL_GPL vmlinux 0x56d508dc tcp_slow_start +EXPORT_SYMBOL_GPL vmlinux 0x56d697ce cpu_up +EXPORT_SYMBOL_GPL vmlinux 0x56e0283c wm831x_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x56e75d47 klist_node_attached +EXPORT_SYMBOL_GPL vmlinux 0x56f1619d usb_hub_release_port +EXPORT_SYMBOL_GPL vmlinux 0x57231f45 ring_buffer_record_on +EXPORT_SYMBOL_GPL vmlinux 0x57326307 flush_kthread_worker +EXPORT_SYMBOL_GPL vmlinux 0x575abc81 relay_open +EXPORT_SYMBOL_GPL vmlinux 0x575b35b6 percpu_ida_free +EXPORT_SYMBOL_GPL vmlinux 0x575c5f94 execute_in_process_context +EXPORT_SYMBOL_GPL vmlinux 0x575cc167 device_show_int +EXPORT_SYMBOL_GPL vmlinux 0x575cecb9 max8997_write_reg +EXPORT_SYMBOL_GPL vmlinux 0x578bd9bf ata_host_resume +EXPORT_SYMBOL_GPL vmlinux 0x5790e7a0 pci_unlock_rescan_remove +EXPORT_SYMBOL_GPL vmlinux 0x579e0bf5 rtnl_unregister_all +EXPORT_SYMBOL_GPL vmlinux 0x57a05dde iommu_flush_tce +EXPORT_SYMBOL_GPL vmlinux 0x57c39727 kdb_register_flags +EXPORT_SYMBOL_GPL vmlinux 0x57c8924e simple_attr_open +EXPORT_SYMBOL_GPL vmlinux 0x57c94d21 syscon_node_to_regmap +EXPORT_SYMBOL_GPL vmlinux 0x57e02761 fuse_request_alloc +EXPORT_SYMBOL_GPL vmlinux 0x580f6113 rio_request_dma +EXPORT_SYMBOL_GPL vmlinux 0x5846abac power_supply_external_power_changed +EXPORT_SYMBOL_GPL vmlinux 0x584c14eb wm8400_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x587e1677 iommu_capable +EXPORT_SYMBOL_GPL vmlinux 0x58857de9 to_of_pinfo +EXPORT_SYMBOL_GPL vmlinux 0x5892f832 release_pmc_hardware +EXPORT_SYMBOL_GPL vmlinux 0x589e4569 syscon_regmap_lookup_by_pdevname +EXPORT_SYMBOL_GPL vmlinux 0x58a9d869 gpiod_get_array_optional +EXPORT_SYMBOL_GPL vmlinux 0x58c8fcae blk_execute_rq_nowait +EXPORT_SYMBOL_GPL vmlinux 0x58cfc62f single_open_net +EXPORT_SYMBOL_GPL vmlinux 0x58eb3e5c vga_default_device +EXPORT_SYMBOL_GPL vmlinux 0x58fe9409 rio_inb_pwrite_handler +EXPORT_SYMBOL_GPL vmlinux 0x59346690 iommu_group_add_device +EXPORT_SYMBOL_GPL vmlinux 0x595f960b ping_bind +EXPORT_SYMBOL_GPL vmlinux 0x5960a255 debugfs_remove +EXPORT_SYMBOL_GPL vmlinux 0x5983f7e2 eventfd_fget +EXPORT_SYMBOL_GPL vmlinux 0x59a6c960 ip6_local_out_sk +EXPORT_SYMBOL_GPL vmlinux 0x59b2adbf input_ff_effect_from_user +EXPORT_SYMBOL_GPL vmlinux 0x59bb68be gpiod_set_raw_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x59c2910b wm8400_block_read +EXPORT_SYMBOL_GPL vmlinux 0x59e2743e call_rcu_bh +EXPORT_SYMBOL_GPL vmlinux 0x59eae699 ring_buffer_read_prepare +EXPORT_SYMBOL_GPL vmlinux 0x59f5bc8d phy_get +EXPORT_SYMBOL_GPL vmlinux 0x5a024ecd percpu_ida_alloc +EXPORT_SYMBOL_GPL vmlinux 0x5a074d01 wm8350_reg_unlock +EXPORT_SYMBOL_GPL vmlinux 0x5a11987d dev_pm_get_subsys_data +EXPORT_SYMBOL_GPL vmlinux 0x5a30682f inet_hashinfo_init +EXPORT_SYMBOL_GPL vmlinux 0x5a374ee8 of_get_dma_window +EXPORT_SYMBOL_GPL vmlinux 0x5a442015 blkdev_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x5a532735 tcp_register_congestion_control +EXPORT_SYMBOL_GPL vmlinux 0x5a5d8ef3 get_device +EXPORT_SYMBOL_GPL vmlinux 0x5a7bfe41 crypto_probing_notify +EXPORT_SYMBOL_GPL vmlinux 0x5a9e0da4 pci_probe_reset_slot +EXPORT_SYMBOL_GPL vmlinux 0x5aa76e8d spi_register_master +EXPORT_SYMBOL_GPL vmlinux 0x5ac0fb4d serial8250_handle_irq +EXPORT_SYMBOL_GPL vmlinux 0x5ad0822c page_endio +EXPORT_SYMBOL_GPL vmlinux 0x5b06e975 find_get_pid +EXPORT_SYMBOL_GPL vmlinux 0x5b0c3e71 netdev_rx_handler_unregister +EXPORT_SYMBOL_GPL vmlinux 0x5b14b354 regulator_get_init_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x5b292113 __dma_request_channel +EXPORT_SYMBOL_GPL vmlinux 0x5b39dbe8 default_iommu_map_sg +EXPORT_SYMBOL_GPL vmlinux 0x5b3bcd47 dm_set_target_max_io_len +EXPORT_SYMBOL_GPL vmlinux 0x5b4545fd bus_find_device +EXPORT_SYMBOL_GPL vmlinux 0x5b47b0c6 virtqueue_add_outbuf +EXPORT_SYMBOL_GPL vmlinux 0x5b891ece devm_devfreq_event_add_edev +EXPORT_SYMBOL_GPL vmlinux 0x5ba09c30 page_cache_sync_readahead +EXPORT_SYMBOL_GPL vmlinux 0x5ba54564 regulator_get_exclusive +EXPORT_SYMBOL_GPL vmlinux 0x5bc3f6cf kvm_alloc_hpt +EXPORT_SYMBOL_GPL vmlinux 0x5bc9425e ping_proc_unregister +EXPORT_SYMBOL_GPL vmlinux 0x5bd0748f crypto_del_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x5bdbac4e rcu_unexpedite_gp +EXPORT_SYMBOL_GPL vmlinux 0x5c032e26 regmap_write_async +EXPORT_SYMBOL_GPL vmlinux 0x5c0ec325 fuse_get_req_for_background +EXPORT_SYMBOL_GPL vmlinux 0x5c13ec49 gpiochip_lock_as_irq +EXPORT_SYMBOL_GPL vmlinux 0x5c149bb5 usb_poison_urb +EXPORT_SYMBOL_GPL vmlinux 0x5c1fc325 fat_attach +EXPORT_SYMBOL_GPL vmlinux 0x5c352614 ping_seq_start +EXPORT_SYMBOL_GPL vmlinux 0x5c376567 regulator_register +EXPORT_SYMBOL_GPL vmlinux 0x5c5a1b16 tick_broadcast_control +EXPORT_SYMBOL_GPL vmlinux 0x5c7f410c pci_bus_sem +EXPORT_SYMBOL_GPL vmlinux 0x5cabdced dev_pm_qos_remove_global_notifier +EXPORT_SYMBOL_GPL vmlinux 0x5cac54e4 ablkcipher_walk_done +EXPORT_SYMBOL_GPL vmlinux 0x5cb2ac4e get_net_ns_by_fd +EXPORT_SYMBOL_GPL vmlinux 0x5cc509a4 nsecs_to_jiffies +EXPORT_SYMBOL_GPL vmlinux 0x5cf374b2 edac_get_sysfs_subsys +EXPORT_SYMBOL_GPL vmlinux 0x5cf65e19 rt_mutex_lock_interruptible +EXPORT_SYMBOL_GPL vmlinux 0x5cf8a882 __tracepoint_block_rq_remap +EXPORT_SYMBOL_GPL vmlinux 0x5d12e48f input_event_to_user +EXPORT_SYMBOL_GPL vmlinux 0x5d17984f usb_hcd_link_urb_to_ep +EXPORT_SYMBOL_GPL vmlinux 0x5d478fc2 crypto_find_alg +EXPORT_SYMBOL_GPL vmlinux 0x5d6399ea cpufreq_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0x5d657160 dpm_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0x5d8a7594 bpf_prog_get +EXPORT_SYMBOL_GPL vmlinux 0x5da67adc zs_compact +EXPORT_SYMBOL_GPL vmlinux 0x5db1c1d3 __tracepoint_block_split +EXPORT_SYMBOL_GPL vmlinux 0x5dcbc3f0 of_pci_find_child_device +EXPORT_SYMBOL_GPL vmlinux 0x5dd64707 rio_register_scan +EXPORT_SYMBOL_GPL vmlinux 0x5dddd64c ata_bmdma_stop +EXPORT_SYMBOL_GPL vmlinux 0x5deb2fd0 pid_nr_ns +EXPORT_SYMBOL_GPL vmlinux 0x5e12b6b4 __online_page_increment_counters +EXPORT_SYMBOL_GPL vmlinux 0x5e23a47a skb_pull_rcsum +EXPORT_SYMBOL_GPL vmlinux 0x5e4f9c61 __rio_local_read_config_8 +EXPORT_SYMBOL_GPL vmlinux 0x5e51cd74 swiotlb_nr_tbl +EXPORT_SYMBOL_GPL vmlinux 0x5e83eb12 md_rdev_clear +EXPORT_SYMBOL_GPL vmlinux 0x5e909335 thermal_zone_get_temp +EXPORT_SYMBOL_GPL vmlinux 0x5ee1fd64 of_scan_bus +EXPORT_SYMBOL_GPL vmlinux 0x5ee7542e reserve_pmc_hardware +EXPORT_SYMBOL_GPL vmlinux 0x5f02487d ata_sff_irq_on +EXPORT_SYMBOL_GPL vmlinux 0x5f136d41 of_pci_range_parser_one +EXPORT_SYMBOL_GPL vmlinux 0x5f164c01 iommu_set_fault_handler +EXPORT_SYMBOL_GPL vmlinux 0x5f226035 mod_delayed_work_on +EXPORT_SYMBOL_GPL vmlinux 0x5f2930c7 uart_handle_cts_change +EXPORT_SYMBOL_GPL vmlinux 0x5f391052 early_find_capability +EXPORT_SYMBOL_GPL vmlinux 0x5f43cee7 fuse_do_open +EXPORT_SYMBOL_GPL vmlinux 0x5f741d9c dma_get_slave_caps +EXPORT_SYMBOL_GPL vmlinux 0x5f756ff6 pci_user_write_config_byte +EXPORT_SYMBOL_GPL vmlinux 0x5f79a98b __tracepoint_napi_poll +EXPORT_SYMBOL_GPL vmlinux 0x5f8e64d8 wm5102_i2c_regmap +EXPORT_SYMBOL_GPL vmlinux 0x5f9173f4 of_property_count_elems_of_size +EXPORT_SYMBOL_GPL vmlinux 0x5fd50348 virtqueue_kick +EXPORT_SYMBOL_GPL vmlinux 0x5ff6e902 wakeup_source_unregister +EXPORT_SYMBOL_GPL vmlinux 0x600c643c ohci_suspend +EXPORT_SYMBOL_GPL vmlinux 0x604645ce regulator_list_voltage_linear +EXPORT_SYMBOL_GPL vmlinux 0x60467b06 btree_grim_visitor +EXPORT_SYMBOL_GPL vmlinux 0x6047f7f5 disk_part_iter_next +EXPORT_SYMBOL_GPL vmlinux 0x60506751 unmap_kernel_range_noflush +EXPORT_SYMBOL_GPL vmlinux 0x60630ecd kset_create_and_add +EXPORT_SYMBOL_GPL vmlinux 0x606d4f6d devm_usb_get_phy_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0x60718bfc i2c_new_device +EXPORT_SYMBOL_GPL vmlinux 0x6071c852 subsys_virtual_register +EXPORT_SYMBOL_GPL vmlinux 0x608ba2ce mmc_regulator_get_supply +EXPORT_SYMBOL_GPL vmlinux 0x60a13e90 rcu_barrier +EXPORT_SYMBOL_GPL vmlinux 0x60a32ea9 pm_power_off +EXPORT_SYMBOL_GPL vmlinux 0x60a5a064 cpuidle_get_cpu_driver +EXPORT_SYMBOL_GPL vmlinux 0x60a714c8 shash_attr_alg +EXPORT_SYMBOL_GPL vmlinux 0x60af63d3 devm_led_classdev_unregister +EXPORT_SYMBOL_GPL vmlinux 0x60c8238e sdio_disable_func +EXPORT_SYMBOL_GPL vmlinux 0x60cbecf7 devfreq_event_get_edev_count +EXPORT_SYMBOL_GPL vmlinux 0x60cca309 __srcu_read_lock +EXPORT_SYMBOL_GPL vmlinux 0x60d11958 da9052_free_irq +EXPORT_SYMBOL_GPL vmlinux 0x60e0e5fe get_task_mm +EXPORT_SYMBOL_GPL vmlinux 0x6133d76c wm8350_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x617df643 of_get_regulator_init_data +EXPORT_SYMBOL_GPL vmlinux 0x6194f51b phy_pm_runtime_forbid +EXPORT_SYMBOL_GPL vmlinux 0x61995f4d scsi_mode_select +EXPORT_SYMBOL_GPL vmlinux 0x61a90c54 klist_add_head +EXPORT_SYMBOL_GPL vmlinux 0x6221b3a7 kobject_create_and_add +EXPORT_SYMBOL_GPL vmlinux 0x6222045d of_property_read_u32_array +EXPORT_SYMBOL_GPL vmlinux 0x62229cce add_to_page_cache_lru +EXPORT_SYMBOL_GPL vmlinux 0x622c7922 register_oom_notifier +EXPORT_SYMBOL_GPL vmlinux 0x623fdce5 ahash_register_instance +EXPORT_SYMBOL_GPL vmlinux 0x6248b5bd blkcg_activate_policy +EXPORT_SYMBOL_GPL vmlinux 0x626cbfd8 arizona_dev_exit +EXPORT_SYMBOL_GPL vmlinux 0x6277fbbe ipv6_stub +EXPORT_SYMBOL_GPL vmlinux 0x6283c77b irq_gc_ack_set_bit +EXPORT_SYMBOL_GPL vmlinux 0x62e91fb1 device_reprobe +EXPORT_SYMBOL_GPL vmlinux 0x62faeb1b crypto_lookup_template +EXPORT_SYMBOL_GPL vmlinux 0x62fb07af devm_mdiobus_free +EXPORT_SYMBOL_GPL vmlinux 0x63020e6a napi_hash_add +EXPORT_SYMBOL_GPL vmlinux 0x630457d6 gpiod_count +EXPORT_SYMBOL_GPL vmlinux 0x631762e0 xfrm_inner_extract_output +EXPORT_SYMBOL_GPL vmlinux 0x6318e11f mnt_drop_write +EXPORT_SYMBOL_GPL vmlinux 0x63412f8f tcp_set_state +EXPORT_SYMBOL_GPL vmlinux 0x63432b33 sysfs_create_groups +EXPORT_SYMBOL_GPL vmlinux 0x638ec816 ohci_init_driver +EXPORT_SYMBOL_GPL vmlinux 0x63c78666 ata_scsi_change_queue_depth +EXPORT_SYMBOL_GPL vmlinux 0x63c7cf11 inet_putpeer +EXPORT_SYMBOL_GPL vmlinux 0x63e20e9b power_supply_powers +EXPORT_SYMBOL_GPL vmlinux 0x63eb2098 inet_twsk_schedule +EXPORT_SYMBOL_GPL vmlinux 0x6410e160 ktime_mono_to_any +EXPORT_SYMBOL_GPL vmlinux 0x64309deb ip6_append_data +EXPORT_SYMBOL_GPL vmlinux 0x64344b63 pm_generic_suspend_noirq +EXPORT_SYMBOL_GPL vmlinux 0x644f78b7 ata_sff_dev_select +EXPORT_SYMBOL_GPL vmlinux 0x645226a0 fb_bl_default_curve +EXPORT_SYMBOL_GPL vmlinux 0x64680af5 pci_enable_pcie_error_reporting +EXPORT_SYMBOL_GPL vmlinux 0x64a762ca da9052_request_irq +EXPORT_SYMBOL_GPL vmlinux 0x64fdef1e posix_acl_default_xattr_handler +EXPORT_SYMBOL_GPL vmlinux 0x6551a43c nvdimm_pmem_region_create +EXPORT_SYMBOL_GPL vmlinux 0x65729a51 rtnl_register +EXPORT_SYMBOL_GPL vmlinux 0x657acc21 dev_pm_qos_add_request +EXPORT_SYMBOL_GPL vmlinux 0x658166d7 class_dev_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0x658aaafb filter_check_discard +EXPORT_SYMBOL_GPL vmlinux 0x65bbbc78 schedule_hrtimeout_range +EXPORT_SYMBOL_GPL vmlinux 0x65ccb6f0 call_netevent_notifiers +EXPORT_SYMBOL_GPL vmlinux 0x65d3fd27 blkcipher_walk_done +EXPORT_SYMBOL_GPL vmlinux 0x65ed0734 rhashtable_destroy +EXPORT_SYMBOL_GPL vmlinux 0x65fdd214 rhashtable_walk_init +EXPORT_SYMBOL_GPL vmlinux 0x6607aa1a unregister_virtio_device +EXPORT_SYMBOL_GPL vmlinux 0x661601de sprint_symbol +EXPORT_SYMBOL_GPL vmlinux 0x6636c3c9 irq_set_vcpu_affinity +EXPORT_SYMBOL_GPL vmlinux 0x664456f2 skb_splice_bits +EXPORT_SYMBOL_GPL vmlinux 0x664ce9bc crypto_givcipher_type +EXPORT_SYMBOL_GPL vmlinux 0x66780b0a platform_device_register +EXPORT_SYMBOL_GPL vmlinux 0x668402aa crypto_put_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x66983edc fb_deferred_io_fsync +EXPORT_SYMBOL_GPL vmlinux 0x66afb53b unix_table_lock +EXPORT_SYMBOL_GPL vmlinux 0x66c6b8a7 tcp_ca_get_name_by_key +EXPORT_SYMBOL_GPL vmlinux 0x66d87d38 symbol_put_addr +EXPORT_SYMBOL_GPL vmlinux 0x66dc7bef nd_cmd_out_size +EXPORT_SYMBOL_GPL vmlinux 0x66e7016d bd_link_disk_holder +EXPORT_SYMBOL_GPL vmlinux 0x66f952e0 fwnode_property_read_string +EXPORT_SYMBOL_GPL vmlinux 0x67060e6d ip6_datagram_recv_ctl +EXPORT_SYMBOL_GPL vmlinux 0x6748f9ea elv_unregister +EXPORT_SYMBOL_GPL vmlinux 0x67491e6e nf_unregister_afinfo +EXPORT_SYMBOL_GPL vmlinux 0x674d25d4 nd_cmd_in_size +EXPORT_SYMBOL_GPL vmlinux 0x674d70d7 mbox_client_txdone +EXPORT_SYMBOL_GPL vmlinux 0x674e13e1 public_key_destroy +EXPORT_SYMBOL_GPL vmlinux 0x674e4b4e md_new_event +EXPORT_SYMBOL_GPL vmlinux 0x6767a0dd regulator_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x676c59ea of_platform_depopulate +EXPORT_SYMBOL_GPL vmlinux 0x676d1ee1 tc3589x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x67858eac sdio_get_host_pm_caps +EXPORT_SYMBOL_GPL vmlinux 0x678a4105 synchronize_srcu_expedited +EXPORT_SYMBOL_GPL vmlinux 0x678de518 user_describe +EXPORT_SYMBOL_GPL vmlinux 0x678f1815 mnt_want_write +EXPORT_SYMBOL_GPL vmlinux 0x67955ce6 profile_hits +EXPORT_SYMBOL_GPL vmlinux 0x679694fc pci_generic_config_write32 +EXPORT_SYMBOL_GPL vmlinux 0x67aaefd5 cn_add_callback +EXPORT_SYMBOL_GPL vmlinux 0x67c494a2 pcibios_claim_one_bus +EXPORT_SYMBOL_GPL vmlinux 0x67ee3624 cpufreq_driver_target +EXPORT_SYMBOL_GPL vmlinux 0x67eee0b9 x509_request_asymmetric_key +EXPORT_SYMBOL_GPL vmlinux 0x68162f66 regmap_read +EXPORT_SYMBOL_GPL vmlinux 0x682f9fa5 ata_sff_freeze +EXPORT_SYMBOL_GPL vmlinux 0x682fd56b irq_set_default_host +EXPORT_SYMBOL_GPL vmlinux 0x684f8161 regmap_can_raw_write +EXPORT_SYMBOL_GPL vmlinux 0x6865bbc9 relay_buf_full +EXPORT_SYMBOL_GPL vmlinux 0x6888fd44 power_supply_unregister +EXPORT_SYMBOL_GPL vmlinux 0x6891a719 devm_of_phy_get +EXPORT_SYMBOL_GPL vmlinux 0x68aa6016 usb_get_dev +EXPORT_SYMBOL_GPL vmlinux 0x68af356f to_nvdimm +EXPORT_SYMBOL_GPL vmlinux 0x68e17924 devm_hwmon_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x68ea6c9e rhashtable_free_and_destroy +EXPORT_SYMBOL_GPL vmlinux 0x6913702d devres_alloc +EXPORT_SYMBOL_GPL vmlinux 0x69177de9 regulator_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x6921aa34 compat_put_timeval +EXPORT_SYMBOL_GPL vmlinux 0x6923ce63 irq_work_sync +EXPORT_SYMBOL_GPL vmlinux 0x69447467 ring_buffer_write +EXPORT_SYMBOL_GPL vmlinux 0x695a715d show_class_attr_string +EXPORT_SYMBOL_GPL vmlinux 0x695e38c8 need_load_eval +EXPORT_SYMBOL_GPL vmlinux 0x69772654 bus_remove_file +EXPORT_SYMBOL_GPL vmlinux 0x69790ef6 __init_new_context +EXPORT_SYMBOL_GPL vmlinux 0x697c5d0d tracing_snapshot_alloc +EXPORT_SYMBOL_GPL vmlinux 0x697cbbb4 threads_per_core +EXPORT_SYMBOL_GPL vmlinux 0x698a899f ring_buffer_peek +EXPORT_SYMBOL_GPL vmlinux 0x69916d4d virtio_device_restore +EXPORT_SYMBOL_GPL vmlinux 0x6a160f4b virtqueue_get_avail +EXPORT_SYMBOL_GPL vmlinux 0x6a1733eb iommu_group_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x6a39c798 spi_finalize_current_message +EXPORT_SYMBOL_GPL vmlinux 0x6a3c59bc mbox_chan_txdone +EXPORT_SYMBOL_GPL vmlinux 0x6a3d4a94 pci_cfg_access_unlock +EXPORT_SYMBOL_GPL vmlinux 0x6a4f623b mmu_notifier_synchronize +EXPORT_SYMBOL_GPL vmlinux 0x6a5d9f2a gpiochip_request_own_desc +EXPORT_SYMBOL_GPL vmlinux 0x6a5fb566 rcu_sched_force_quiescent_state +EXPORT_SYMBOL_GPL vmlinux 0x6a6cafd2 ring_buffer_read_page +EXPORT_SYMBOL_GPL vmlinux 0x6a7cf39a crypto_grab_spawn +EXPORT_SYMBOL_GPL vmlinux 0x6a8441be cpci_hp_start +EXPORT_SYMBOL_GPL vmlinux 0x6a855601 dev_pm_disable_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0x6aa8ac7a usb_autopm_put_interface_no_suspend +EXPORT_SYMBOL_GPL vmlinux 0x6ab76c8a regmap_exit +EXPORT_SYMBOL_GPL vmlinux 0x6acb8d84 ppc64_caches +EXPORT_SYMBOL_GPL vmlinux 0x6ae8522c sysfs_notify +EXPORT_SYMBOL_GPL vmlinux 0x6b28ce4d of_irq_parse_raw +EXPORT_SYMBOL_GPL vmlinux 0x6b29a1fa ring_buffer_event_length +EXPORT_SYMBOL_GPL vmlinux 0x6b2e84e8 nvdimm_name +EXPORT_SYMBOL_GPL vmlinux 0x6b3f89ea uart_insert_char +EXPORT_SYMBOL_GPL vmlinux 0x6b61049b sata_pmp_qc_defer_cmd_switch +EXPORT_SYMBOL_GPL vmlinux 0x6b7b16de __sock_recv_timestamp +EXPORT_SYMBOL_GPL vmlinux 0x6b81c38b power_supply_unreg_notifier +EXPORT_SYMBOL_GPL vmlinux 0x6b82813c cpu_remove_dev_attr +EXPORT_SYMBOL_GPL vmlinux 0x6b97c059 invalidate_inode_pages2 +EXPORT_SYMBOL_GPL vmlinux 0x6bece24a __inet_twsk_hashdance +EXPORT_SYMBOL_GPL vmlinux 0x6bfa3068 rtc_irq_register +EXPORT_SYMBOL_GPL vmlinux 0x6c0067bb pingv6_prot +EXPORT_SYMBOL_GPL vmlinux 0x6c07d933 add_uevent_var +EXPORT_SYMBOL_GPL vmlinux 0x6c212824 regulator_bulk_force_disable +EXPORT_SYMBOL_GPL vmlinux 0x6c271ca5 stmpe_block_write +EXPORT_SYMBOL_GPL vmlinux 0x6c48d112 i2c_adapter_type +EXPORT_SYMBOL_GPL vmlinux 0x6c4b6684 reset_control_assert +EXPORT_SYMBOL_GPL vmlinux 0x6c5ceac7 device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x6c80f7c0 led_trigger_store +EXPORT_SYMBOL_GPL vmlinux 0x6c848cc1 regulator_bulk_get +EXPORT_SYMBOL_GPL vmlinux 0x6c84da54 uprobe_unregister +EXPORT_SYMBOL_GPL vmlinux 0x6c8a9032 regulator_disable_regmap +EXPORT_SYMBOL_GPL vmlinux 0x6ca4bf88 async_synchronize_full_domain +EXPORT_SYMBOL_GPL vmlinux 0x6cb90387 crypto_grab_aead +EXPORT_SYMBOL_GPL vmlinux 0x6cc2fb2c opal_message_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0x6cc48a47 max8997_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0x6ccc38f0 usb_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x6cccfb2c serial8250_do_set_mctrl +EXPORT_SYMBOL_GPL vmlinux 0x6cd21997 ata_tf_to_fis +EXPORT_SYMBOL_GPL vmlinux 0x6ce211c7 usb_enable_ltm +EXPORT_SYMBOL_GPL vmlinux 0x6d14c538 bio_associate_blkcg +EXPORT_SYMBOL_GPL vmlinux 0x6d16bc07 elv_register +EXPORT_SYMBOL_GPL vmlinux 0x6d1beb90 input_ff_erase +EXPORT_SYMBOL_GPL vmlinux 0x6d2fc5a6 net_namespace_list +EXPORT_SYMBOL_GPL vmlinux 0x6d416aed of_pci_msi_chip_remove +EXPORT_SYMBOL_GPL vmlinux 0x6d53d6d0 devm_hwrng_register +EXPORT_SYMBOL_GPL vmlinux 0x6d5f2280 ip6_datagram_connect +EXPORT_SYMBOL_GPL vmlinux 0x6d785a1b virtqueue_disable_cb +EXPORT_SYMBOL_GPL vmlinux 0x6d9b77a7 da9055_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0x6db977ad debugfs_create_u32_array +EXPORT_SYMBOL_GPL vmlinux 0x6dbb8802 pci_walk_bus +EXPORT_SYMBOL_GPL vmlinux 0x6dd60f90 bus_set_iommu +EXPORT_SYMBOL_GPL vmlinux 0x6de88af5 nf_queue_entry_get_refs +EXPORT_SYMBOL_GPL vmlinux 0x6df1a477 dev_attr_em_message +EXPORT_SYMBOL_GPL vmlinux 0x6df77288 crypto_alg_extsize +EXPORT_SYMBOL_GPL vmlinux 0x6e04a077 usb_bind_phy +EXPORT_SYMBOL_GPL vmlinux 0x6e34b1e5 da903x_writes +EXPORT_SYMBOL_GPL vmlinux 0x6e379526 kernstart_addr +EXPORT_SYMBOL_GPL vmlinux 0x6e3c385c mpic_subsys +EXPORT_SYMBOL_GPL vmlinux 0x6e3d413d scsi_ioctl_block_when_processing_errors +EXPORT_SYMBOL_GPL vmlinux 0x6e3e4aa7 usb_hub_clear_tt_buffer +EXPORT_SYMBOL_GPL vmlinux 0x6e5ccf85 alarm_restart +EXPORT_SYMBOL_GPL vmlinux 0x6e5f01d7 __rio_local_read_config_32 +EXPORT_SYMBOL_GPL vmlinux 0x6e643f2a debugfs_create_blob +EXPORT_SYMBOL_GPL vmlinux 0x6e6b365e ata_pci_bmdma_init +EXPORT_SYMBOL_GPL vmlinux 0x6e7780f2 pcibios_remove_pci_devices +EXPORT_SYMBOL_GPL vmlinux 0x6e7943ec iommu_group_id +EXPORT_SYMBOL_GPL vmlinux 0x6e89a560 regmap_irq_chip_get_base +EXPORT_SYMBOL_GPL vmlinux 0x6e8ebd3b pci_ignore_hotplug +EXPORT_SYMBOL_GPL vmlinux 0x6edf5745 dma_buf_export +EXPORT_SYMBOL_GPL vmlinux 0x6ee74998 of_reserved_mem_device_release +EXPORT_SYMBOL_GPL vmlinux 0x6ef16725 sysfs_remove_file_from_group +EXPORT_SYMBOL_GPL vmlinux 0x6ef7b791 kobject_uevent_env +EXPORT_SYMBOL_GPL vmlinux 0x6f057de4 iommu_tce_put_param_check +EXPORT_SYMBOL_GPL vmlinux 0x6f1ee69e kgdb_unregister_io_module +EXPORT_SYMBOL_GPL vmlinux 0x6f265678 class_dev_iter_next +EXPORT_SYMBOL_GPL vmlinux 0x6f2bc5ed lp8788_update_bits +EXPORT_SYMBOL_GPL vmlinux 0x6f30b2ca exportfs_encode_inode_fh +EXPORT_SYMBOL_GPL vmlinux 0x6f31ea27 platform_device_add_data +EXPORT_SYMBOL_GPL vmlinux 0x6f341557 inet_csk_route_req +EXPORT_SYMBOL_GPL vmlinux 0x6f46851c pcie_update_link_speed +EXPORT_SYMBOL_GPL vmlinux 0x6f530454 skb_scrub_packet +EXPORT_SYMBOL_GPL vmlinux 0x6f7acfb4 sysfs_remove_groups +EXPORT_SYMBOL_GPL vmlinux 0x6f945c8c __find_linux_pte_or_hugepte +EXPORT_SYMBOL_GPL vmlinux 0x6fa10d28 __inet_lookup_established +EXPORT_SYMBOL_GPL vmlinux 0x6fb55d6a unregister_wide_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x6fccb3a1 ata_scsi_unlock_native_capacity +EXPORT_SYMBOL_GPL vmlinux 0x6fdab77d __put_task_struct +EXPORT_SYMBOL_GPL vmlinux 0x6fe3d8cf ktime_add_safe +EXPORT_SYMBOL_GPL vmlinux 0x6fe7484c rtc_irq_set_freq +EXPORT_SYMBOL_GPL vmlinux 0x6ff607b6 crypto_get_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x70127526 input_ff_create +EXPORT_SYMBOL_GPL vmlinux 0x7021fba1 crypto_alloc_akcipher +EXPORT_SYMBOL_GPL vmlinux 0x703369c9 __ata_change_queue_depth +EXPORT_SYMBOL_GPL vmlinux 0x70416913 vfs_getxattr +EXPORT_SYMBOL_GPL vmlinux 0x706eea3f arizona_of_get_named_gpio +EXPORT_SYMBOL_GPL vmlinux 0x706f6a8b regulator_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x7071a46c spi_get_next_queued_message +EXPORT_SYMBOL_GPL vmlinux 0x707ff1bb ata_xfer_mask2mode +EXPORT_SYMBOL_GPL vmlinux 0x7095af41 gpiod_set_array_value +EXPORT_SYMBOL_GPL vmlinux 0x70b984f2 skb_zerocopy_headlen +EXPORT_SYMBOL_GPL vmlinux 0x70bbf829 tpm_pm_suspend +EXPORT_SYMBOL_GPL vmlinux 0x70cf032f usb_hcd_irq +EXPORT_SYMBOL_GPL vmlinux 0x710c73b6 crypto_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x71321204 pci_enable_ats +EXPORT_SYMBOL_GPL vmlinux 0x71371a55 fat_build_inode +EXPORT_SYMBOL_GPL vmlinux 0x714ec0a2 __fat_fs_error +EXPORT_SYMBOL_GPL vmlinux 0x71530f6b pci_bus_add_device +EXPORT_SYMBOL_GPL vmlinux 0x716265c7 debugfs_initialized +EXPORT_SYMBOL_GPL vmlinux 0x7184ee99 tty_buffer_lock_exclusive +EXPORT_SYMBOL_GPL vmlinux 0x71b8de53 tty_port_tty_hangup +EXPORT_SYMBOL_GPL vmlinux 0x71cba80f of_fdt_unflatten_tree +EXPORT_SYMBOL_GPL vmlinux 0x71dc9998 crypto_il_tab +EXPORT_SYMBOL_GPL vmlinux 0x71f0da39 crypto_init_spawn +EXPORT_SYMBOL_GPL vmlinux 0x72356c90 mddev_init +EXPORT_SYMBOL_GPL vmlinux 0x724259bd sock_diag_register_inet_compat +EXPORT_SYMBOL_GPL vmlinux 0x726a0e0a regmap_update_bits_check_async +EXPORT_SYMBOL_GPL vmlinux 0x72741f25 trace_vbprintk +EXPORT_SYMBOL_GPL vmlinux 0x7278d328 all_vm_events +EXPORT_SYMBOL_GPL vmlinux 0x72b92943 trace_seq_bitmask +EXPORT_SYMBOL_GPL vmlinux 0x72cf667c rio_lock_device +EXPORT_SYMBOL_GPL vmlinux 0x72e077ee ata_host_start +EXPORT_SYMBOL_GPL vmlinux 0x72f07dd0 bpf_prog_create +EXPORT_SYMBOL_GPL vmlinux 0x72f47d20 alarm_forward_now +EXPORT_SYMBOL_GPL vmlinux 0x730237d3 device_pm_wait_for_dev +EXPORT_SYMBOL_GPL vmlinux 0x73133e6d fuse_dev_operations +EXPORT_SYMBOL_GPL vmlinux 0x7315320a usb_set_configuration +EXPORT_SYMBOL_GPL vmlinux 0x731e5d6c raw_unhash_sk +EXPORT_SYMBOL_GPL vmlinux 0x732e3333 x509_cert_parse +EXPORT_SYMBOL_GPL vmlinux 0x73510609 fl6_update_dst +EXPORT_SYMBOL_GPL vmlinux 0x736494ba dev_coredumpv +EXPORT_SYMBOL_GPL vmlinux 0x737099b8 pwm_put +EXPORT_SYMBOL_GPL vmlinux 0x73a48b4a ata_sff_std_ports +EXPORT_SYMBOL_GPL vmlinux 0x73a9d0fd ip4_datagram_release_cb +EXPORT_SYMBOL_GPL vmlinux 0x73c2554f __iowrite64_copy +EXPORT_SYMBOL_GPL vmlinux 0x73c6dac4 phy_power_on +EXPORT_SYMBOL_GPL vmlinux 0x73c832f2 ata_dev_classify +EXPORT_SYMBOL_GPL vmlinux 0x73c88fb1 iommu_attach_device +EXPORT_SYMBOL_GPL vmlinux 0x73cf81c2 to_nd_region +EXPORT_SYMBOL_GPL vmlinux 0x73d69364 ring_buffer_change_overwrite +EXPORT_SYMBOL_GPL vmlinux 0x74287df2 vfs_removexattr +EXPORT_SYMBOL_GPL vmlinux 0x743a165e ata_pack_xfermask +EXPORT_SYMBOL_GPL vmlinux 0x74441603 perf_pmu_migrate_context +EXPORT_SYMBOL_GPL vmlinux 0x744be8b3 __rio_local_write_config_16 +EXPORT_SYMBOL_GPL vmlinux 0x74597d95 rio_mport_write_config_8 +EXPORT_SYMBOL_GPL vmlinux 0x7464ea38 dev_pm_qos_add_global_notifier +EXPORT_SYMBOL_GPL vmlinux 0x7471ad28 crypto_alloc_tfm +EXPORT_SYMBOL_GPL vmlinux 0x74836804 dev_pm_clear_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0x748d801a pcap_adc_sync +EXPORT_SYMBOL_GPL vmlinux 0x74b5ea68 lcm_not_zero +EXPORT_SYMBOL_GPL vmlinux 0x74b8111d map_vm_area +EXPORT_SYMBOL_GPL vmlinux 0x74b9d8bc of_dma_controller_register +EXPORT_SYMBOL_GPL vmlinux 0x74baf17a tracing_is_on +EXPORT_SYMBOL_GPL vmlinux 0x74c92f4a wm831x_auxadc_read +EXPORT_SYMBOL_GPL vmlinux 0x74fb1f4a pci_store_saved_state +EXPORT_SYMBOL_GPL vmlinux 0x75133f6e visitor128 +EXPORT_SYMBOL_GPL vmlinux 0x75137766 pci_max_pasids +EXPORT_SYMBOL_GPL vmlinux 0x7522f3ba irq_modify_status +EXPORT_SYMBOL_GPL vmlinux 0x75271def spi_bus_unlock +EXPORT_SYMBOL_GPL vmlinux 0x752c2615 irq_domain_xlate_twocell +EXPORT_SYMBOL_GPL vmlinux 0x753fa267 led_classdev_register +EXPORT_SYMBOL_GPL vmlinux 0x755156b7 tty_init_termios +EXPORT_SYMBOL_GPL vmlinux 0x7560ff6e ata_bmdma_irq_clear +EXPORT_SYMBOL_GPL vmlinux 0x7578c8c8 attribute_container_unregister +EXPORT_SYMBOL_GPL vmlinux 0x757b49d2 kmsg_dump_get_line +EXPORT_SYMBOL_GPL vmlinux 0x758a782e blk_fill_rwbs +EXPORT_SYMBOL_GPL vmlinux 0x758f48cd power_supply_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x7592a2d7 device_for_each_child_reverse +EXPORT_SYMBOL_GPL vmlinux 0x75943692 save_stack_trace_tsk +EXPORT_SYMBOL_GPL vmlinux 0x75d9be7f platform_get_resource_byname +EXPORT_SYMBOL_GPL vmlinux 0x75dd3aad alloc_vm_area +EXPORT_SYMBOL_GPL vmlinux 0x75eed272 ata_noop_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0x75f2a044 usb_wait_anchor_empty_timeout +EXPORT_SYMBOL_GPL vmlinux 0x7600213a sdio_readsb +EXPORT_SYMBOL_GPL vmlinux 0x760385a8 platform_driver_unregister +EXPORT_SYMBOL_GPL vmlinux 0x76229df9 srp_rport_del +EXPORT_SYMBOL_GPL vmlinux 0x762c0858 klist_prev +EXPORT_SYMBOL_GPL vmlinux 0x764b431e pm_generic_runtime_suspend +EXPORT_SYMBOL_GPL vmlinux 0x7655e41d pm_generic_suspend_late +EXPORT_SYMBOL_GPL vmlinux 0x7678d7fb register_trace_event +EXPORT_SYMBOL_GPL vmlinux 0x7681946c unregister_pm_notifier +EXPORT_SYMBOL_GPL vmlinux 0x7699888e crypto_alloc_shash +EXPORT_SYMBOL_GPL vmlinux 0x769ef5e4 subsys_dev_iter_next +EXPORT_SYMBOL_GPL vmlinux 0x769f1f29 lp8788_read_multi_bytes +EXPORT_SYMBOL_GPL vmlinux 0x76bb9ddb usb_store_new_id +EXPORT_SYMBOL_GPL vmlinux 0x76bf6b8b crypto_blkcipher_type +EXPORT_SYMBOL_GPL vmlinux 0x76def170 irq_gc_mask_set_bit +EXPORT_SYMBOL_GPL vmlinux 0x7729cbdd task_handoff_register +EXPORT_SYMBOL_GPL vmlinux 0x7735e7dc ata_sff_tf_load +EXPORT_SYMBOL_GPL vmlinux 0x773ef193 fat_add_entries +EXPORT_SYMBOL_GPL vmlinux 0x7745da8a screen_glyph +EXPORT_SYMBOL_GPL vmlinux 0x774a6e12 fib_rules_unregister +EXPORT_SYMBOL_GPL vmlinux 0x77500e7d pcibios_finish_adding_to_bus +EXPORT_SYMBOL_GPL vmlinux 0x7754bc11 dm_hold +EXPORT_SYMBOL_GPL vmlinux 0x775830c8 anon_inode_getfile +EXPORT_SYMBOL_GPL vmlinux 0x7760287c usb_deregister +EXPORT_SYMBOL_GPL vmlinux 0x7780fa9b perf_event_read_value +EXPORT_SYMBOL_GPL vmlinux 0x77a2d9a9 vfs_cancel_lock +EXPORT_SYMBOL_GPL vmlinux 0x77c8116a devm_kfree +EXPORT_SYMBOL_GPL vmlinux 0x77f666de tracepoint_probe_register +EXPORT_SYMBOL_GPL vmlinux 0x7818ddd2 spi_write_then_read +EXPORT_SYMBOL_GPL vmlinux 0x7829c004 irq_domain_remove +EXPORT_SYMBOL_GPL vmlinux 0x78546a61 vfs_setxattr +EXPORT_SYMBOL_GPL vmlinux 0x7857bcd1 rtc_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x787c882b lzo1x_1_compress +EXPORT_SYMBOL_GPL vmlinux 0x78ae8175 smp_call_function_single_async +EXPORT_SYMBOL_GPL vmlinux 0x78b79a43 unregister_asymmetric_key_parser +EXPORT_SYMBOL_GPL vmlinux 0x78c0f5d1 pci_restore_msi_state +EXPORT_SYMBOL_GPL vmlinux 0x78d93c3c __bpf_prog_free +EXPORT_SYMBOL_GPL vmlinux 0x78f4f101 __rio_local_read_config_16 +EXPORT_SYMBOL_GPL vmlinux 0x78f6c96b md_do_sync +EXPORT_SYMBOL_GPL vmlinux 0x793c4a95 subsys_system_register +EXPORT_SYMBOL_GPL vmlinux 0x793de1e6 rhashtable_walk_stop +EXPORT_SYMBOL_GPL vmlinux 0x7943e333 tty_encode_baud_rate +EXPORT_SYMBOL_GPL vmlinux 0x7944e0fc tracing_off +EXPORT_SYMBOL_GPL vmlinux 0x7945452f ata_sff_wait_ready +EXPORT_SYMBOL_GPL vmlinux 0x7945cf89 wakeup_source_drop +EXPORT_SYMBOL_GPL vmlinux 0x794af55a da9052_adc_manual_read +EXPORT_SYMBOL_GPL vmlinux 0x794b7271 orderly_reboot +EXPORT_SYMBOL_GPL vmlinux 0x79523112 ip6_push_pending_frames +EXPORT_SYMBOL_GPL vmlinux 0x7958beb9 uhci_check_and_reset_hc +EXPORT_SYMBOL_GPL vmlinux 0x795b6af0 synchronize_srcu +EXPORT_SYMBOL_GPL vmlinux 0x796b10ba crypto_alloc_rng +EXPORT_SYMBOL_GPL vmlinux 0x796c2d48 dm_get_md +EXPORT_SYMBOL_GPL vmlinux 0x7994553e pci_user_write_config_dword +EXPORT_SYMBOL_GPL vmlinux 0x79b24349 regmap_raw_read +EXPORT_SYMBOL_GPL vmlinux 0x79bca8f7 pwmchip_remove +EXPORT_SYMBOL_GPL vmlinux 0x79c8e87b gov_queue_work +EXPORT_SYMBOL_GPL vmlinux 0x79d46ce9 sdio_enable_func +EXPORT_SYMBOL_GPL vmlinux 0x79ddf412 reservation_object_test_signaled_rcu +EXPORT_SYMBOL_GPL vmlinux 0x79defbe1 kthread_should_park +EXPORT_SYMBOL_GPL vmlinux 0x79f41d5b try_get_online_cpus +EXPORT_SYMBOL_GPL vmlinux 0x7a09cba6 crypto_shash_digest +EXPORT_SYMBOL_GPL vmlinux 0x7a0b7756 md_stop +EXPORT_SYMBOL_GPL vmlinux 0x7a0bba44 pci_create_slot +EXPORT_SYMBOL_GPL vmlinux 0x7a11fe3c inet6_destroy_sock +EXPORT_SYMBOL_GPL vmlinux 0x7a14dd5c spi_setup +EXPORT_SYMBOL_GPL vmlinux 0x7a240fbb ata_platform_remove_one +EXPORT_SYMBOL_GPL vmlinux 0x7a2c2f14 mm_iommu_find +EXPORT_SYMBOL_GPL vmlinux 0x7a2e4b44 ezx_pcap_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x7a51ce81 thermal_cooling_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x7a6590bc digsig_verify +EXPORT_SYMBOL_GPL vmlinux 0x7a944007 rcu_idle_enter +EXPORT_SYMBOL_GPL vmlinux 0x7b0f1ab3 ring_buffer_free_read_page +EXPORT_SYMBOL_GPL vmlinux 0x7b10b8d7 ata_scsi_queuecmd +EXPORT_SYMBOL_GPL vmlinux 0x7b1112c9 usb_free_streams +EXPORT_SYMBOL_GPL vmlinux 0x7b1d544d edac_handler_set +EXPORT_SYMBOL_GPL vmlinux 0x7b248511 blkg_conf_prep +EXPORT_SYMBOL_GPL vmlinux 0x7b258e71 handle_fasteoi_irq +EXPORT_SYMBOL_GPL vmlinux 0x7b350c37 evm_verifyxattr +EXPORT_SYMBOL_GPL vmlinux 0x7b3f734c crypto_unregister_algs +EXPORT_SYMBOL_GPL vmlinux 0x7b41bcf2 reset_controller_unregister +EXPORT_SYMBOL_GPL vmlinux 0x7b59f4e2 usb_ifnum_to_if +EXPORT_SYMBOL_GPL vmlinux 0x7b70ed5c pm_qos_request_active +EXPORT_SYMBOL_GPL vmlinux 0x7b9b49e6 list_lru_walk_node +EXPORT_SYMBOL_GPL vmlinux 0x7beb1c84 gpiod_to_chip +EXPORT_SYMBOL_GPL vmlinux 0x7c057427 fib_rules_register +EXPORT_SYMBOL_GPL vmlinux 0x7c06b0f9 irq_domain_xlate_onecell +EXPORT_SYMBOL_GPL vmlinux 0x7c0d1861 uprobe_register +EXPORT_SYMBOL_GPL vmlinux 0x7c172230 sata_link_hardreset +EXPORT_SYMBOL_GPL vmlinux 0x7c232066 cpu_add_dev_attr_group +EXPORT_SYMBOL_GPL vmlinux 0x7c2a2a5e alarmtimer_get_rtcdev +EXPORT_SYMBOL_GPL vmlinux 0x7c346357 pkey_algo +EXPORT_SYMBOL_GPL vmlinux 0x7c37bc89 pseries_ioei_notifier_list +EXPORT_SYMBOL_GPL vmlinux 0x7c47857d xfrm_audit_state_replay +EXPORT_SYMBOL_GPL vmlinux 0x7c6f3d66 dev_pm_qos_remove_notifier +EXPORT_SYMBOL_GPL vmlinux 0x7c7e7a69 platform_add_devices +EXPORT_SYMBOL_GPL vmlinux 0x7c86fba4 dummy_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0x7c8fecfa bsg_setup_queue +EXPORT_SYMBOL_GPL vmlinux 0x7c99c9de ata_qc_complete +EXPORT_SYMBOL_GPL vmlinux 0x7c9f3e69 __tracepoint_add_device_to_group +EXPORT_SYMBOL_GPL vmlinux 0x7cb2b49c __i2c_board_lock +EXPORT_SYMBOL_GPL vmlinux 0x7cd6f042 cpufreq_get_current_driver +EXPORT_SYMBOL_GPL vmlinux 0x7cd94bda devfreq_event_remove_edev +EXPORT_SYMBOL_GPL vmlinux 0x7ceaf0d5 generic_handle_irq +EXPORT_SYMBOL_GPL vmlinux 0x7d00c65b nd_synchronize +EXPORT_SYMBOL_GPL vmlinux 0x7d02306b mbox_chan_received_data +EXPORT_SYMBOL_GPL vmlinux 0x7d3024d8 usb_ep0_reinit +EXPORT_SYMBOL_GPL vmlinux 0x7d328cdf pci_disable_rom +EXPORT_SYMBOL_GPL vmlinux 0x7d3e0379 iommu_present +EXPORT_SYMBOL_GPL vmlinux 0x7d51a57e regulator_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x7d59dd46 pm_wq +EXPORT_SYMBOL_GPL vmlinux 0x7d8d1812 device_initialize +EXPORT_SYMBOL_GPL vmlinux 0x7dab26b6 wm831x_isinkv_values +EXPORT_SYMBOL_GPL vmlinux 0x7db94b2a rio_release_inb_mbox +EXPORT_SYMBOL_GPL vmlinux 0x7dcc6a0d crypto_alloc_ahash +EXPORT_SYMBOL_GPL vmlinux 0x7dda30af unregister_tracepoint_module_notifier +EXPORT_SYMBOL_GPL vmlinux 0x7de66e47 gpiod_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x7df45170 usb_set_device_state +EXPORT_SYMBOL_GPL vmlinux 0x7e018f06 regulator_set_voltage +EXPORT_SYMBOL_GPL vmlinux 0x7e17ba7b klist_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0x7e37c156 reset_control_get +EXPORT_SYMBOL_GPL vmlinux 0x7e436794 __mmu_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x7e64181d usb_calc_bus_time +EXPORT_SYMBOL_GPL vmlinux 0x7ea1a2bc probe_kernel_write +EXPORT_SYMBOL_GPL vmlinux 0x7ecad3db rio_dev_put +EXPORT_SYMBOL_GPL vmlinux 0x7edc0576 ata_sff_thaw +EXPORT_SYMBOL_GPL vmlinux 0x7f008202 btree_lookup +EXPORT_SYMBOL_GPL vmlinux 0x7f13d491 pm_qos_remove_request +EXPORT_SYMBOL_GPL vmlinux 0x7f1591b8 inet_csk_bind_conflict +EXPORT_SYMBOL_GPL vmlinux 0x7f6a4e99 zap_vma_ptes +EXPORT_SYMBOL_GPL vmlinux 0x7f7bc710 klist_next +EXPORT_SYMBOL_GPL vmlinux 0x7f8ae071 of_dma_configure +EXPORT_SYMBOL_GPL vmlinux 0x801c92e7 ipv4_sk_redirect +EXPORT_SYMBOL_GPL vmlinux 0x803ebb04 scsi_internal_device_block +EXPORT_SYMBOL_GPL vmlinux 0x80541959 kallsyms_on_each_symbol +EXPORT_SYMBOL_GPL vmlinux 0x805f3dc7 scsi_eh_ready_devs +EXPORT_SYMBOL_GPL vmlinux 0x8065a4fc mmu_notifier_call_srcu +EXPORT_SYMBOL_GPL vmlinux 0x80746048 posix_clock_register +EXPORT_SYMBOL_GPL vmlinux 0x80765afb hwmon_device_register_with_groups +EXPORT_SYMBOL_GPL vmlinux 0x807670bd trace_seq_bprintf +EXPORT_SYMBOL_GPL vmlinux 0x808ec1a3 crypto_alg_tested +EXPORT_SYMBOL_GPL vmlinux 0x8098c67f to_nd_desc +EXPORT_SYMBOL_GPL vmlinux 0x809c8962 ping_seq_stop +EXPORT_SYMBOL_GPL vmlinux 0x80a212fa rdev_get_dev +EXPORT_SYMBOL_GPL vmlinux 0x80b7f3c3 device_find_child +EXPORT_SYMBOL_GPL vmlinux 0x80c68137 nf_log_buf_close +EXPORT_SYMBOL_GPL vmlinux 0x80d2ec23 __blk_put_request +EXPORT_SYMBOL_GPL vmlinux 0x80d3927f __tracepoint_block_unplug +EXPORT_SYMBOL_GPL vmlinux 0x80d5e57a mpi_free +EXPORT_SYMBOL_GPL vmlinux 0x80f3268f __trace_printk +EXPORT_SYMBOL_GPL vmlinux 0x80f57575 irq_alloc_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x810f4ce2 irq_get_domain_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x8114467b cn_netlink_send_mult +EXPORT_SYMBOL_GPL vmlinux 0x8114b8d6 md_is_badblock +EXPORT_SYMBOL_GPL vmlinux 0x811dc334 usb_unregister_notify +EXPORT_SYMBOL_GPL vmlinux 0x812c749d put_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0x8135cb51 pwm_can_sleep +EXPORT_SYMBOL_GPL vmlinux 0x8149ea54 ata_timing_find_mode +EXPORT_SYMBOL_GPL vmlinux 0x81574391 inet_unhash +EXPORT_SYMBOL_GPL vmlinux 0x816500e0 wm8350_gpio_config +EXPORT_SYMBOL_GPL vmlinux 0x81899254 inet_csk_search_req +EXPORT_SYMBOL_GPL vmlinux 0x8199f369 __ip_route_output_key +EXPORT_SYMBOL_GPL vmlinux 0x81b86edc crypto_dequeue_request +EXPORT_SYMBOL_GPL vmlinux 0x81c38936 crypto_alloc_instance2 +EXPORT_SYMBOL_GPL vmlinux 0x81c4a51b out_of_line_wait_on_bit_timeout +EXPORT_SYMBOL_GPL vmlinux 0x81c82ebe usb_get_descriptor +EXPORT_SYMBOL_GPL vmlinux 0x81d26fde device_store_bool +EXPORT_SYMBOL_GPL vmlinux 0x81dd3d31 dev_get_regmap +EXPORT_SYMBOL_GPL vmlinux 0x81f1c8f3 tps6586x_read +EXPORT_SYMBOL_GPL vmlinux 0x81f8a2c3 ip6_redirect +EXPORT_SYMBOL_GPL vmlinux 0x81fb0e9b dma_get_required_mask +EXPORT_SYMBOL_GPL vmlinux 0x81fb77e6 regulator_count_voltages +EXPORT_SYMBOL_GPL vmlinux 0x8204e50f __rt_mutex_init +EXPORT_SYMBOL_GPL vmlinux 0x82116bc8 platform_get_irq +EXPORT_SYMBOL_GPL vmlinux 0x8223bcba __tracepoint_xhci_dbg_quirks +EXPORT_SYMBOL_GPL vmlinux 0x823beda3 __srcu_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x823ed477 input_ff_destroy +EXPORT_SYMBOL_GPL vmlinux 0x8249b2a2 transport_destroy_device +EXPORT_SYMBOL_GPL vmlinux 0x825ecf08 cpci_hp_unregister_controller +EXPORT_SYMBOL_GPL vmlinux 0x827f343c of_resolve_phandles +EXPORT_SYMBOL_GPL vmlinux 0x828847df pwm_set_chip_data +EXPORT_SYMBOL_GPL vmlinux 0x82908fb6 sysfs_rename_link_ns +EXPORT_SYMBOL_GPL vmlinux 0x82977949 crypto_larval_alloc +EXPORT_SYMBOL_GPL vmlinux 0x82a51a17 ata_pci_remove_one +EXPORT_SYMBOL_GPL vmlinux 0x82a794cb of_property_read_u32_index +EXPORT_SYMBOL_GPL vmlinux 0x82d79b51 sysctl_vfs_cache_pressure +EXPORT_SYMBOL_GPL vmlinux 0x83033993 udp4_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x830cf65d usb_hcd_is_primary_hcd +EXPORT_SYMBOL_GPL vmlinux 0x830fcbeb devm_rtc_device_register +EXPORT_SYMBOL_GPL vmlinux 0x831fbbbf tpm2_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x833494f3 device_show_ulong +EXPORT_SYMBOL_GPL vmlinux 0x834616bb sdev_evt_alloc +EXPORT_SYMBOL_GPL vmlinux 0x8347004c pid_vnr +EXPORT_SYMBOL_GPL vmlinux 0x835434e4 virtqueue_kick_prepare +EXPORT_SYMBOL_GPL vmlinux 0x8359ea7c tcp_send_ack +EXPORT_SYMBOL_GPL vmlinux 0x836922d7 pwmchip_add +EXPORT_SYMBOL_GPL vmlinux 0x836d61d0 atomic_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0x83750cc5 event_triggers_post_call +EXPORT_SYMBOL_GPL vmlinux 0x837996fb dev_pm_qos_remove_request +EXPORT_SYMBOL_GPL vmlinux 0x8383d086 platform_bus +EXPORT_SYMBOL_GPL vmlinux 0x838b13e7 ring_buffer_free +EXPORT_SYMBOL_GPL vmlinux 0x83a61308 eeh_add_sysfs_files +EXPORT_SYMBOL_GPL vmlinux 0x83c42a94 irq_remove_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x83c6ec07 bdev_read_page +EXPORT_SYMBOL_GPL vmlinux 0x83d3cc9b nfq_ct_hook +EXPORT_SYMBOL_GPL vmlinux 0x83dabc52 extcon_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x83f52b52 ata_port_abort +EXPORT_SYMBOL_GPL vmlinux 0x83fae9b7 of_property_read_string_helper +EXPORT_SYMBOL_GPL vmlinux 0x83fb71f3 debugfs_create_x64 +EXPORT_SYMBOL_GPL vmlinux 0x83fe7242 gpiod_direction_input +EXPORT_SYMBOL_GPL vmlinux 0x840ffa42 __giveup_vsx +EXPORT_SYMBOL_GPL vmlinux 0x84183241 pm_runtime_irq_safe +EXPORT_SYMBOL_GPL vmlinux 0x841cf44f dma_buf_kmap_atomic +EXPORT_SYMBOL_GPL vmlinux 0x8487a2b6 flush_work +EXPORT_SYMBOL_GPL vmlinux 0x84a2977c fuse_request_send_background +EXPORT_SYMBOL_GPL vmlinux 0x84aee451 crypto_register_shash +EXPORT_SYMBOL_GPL vmlinux 0x84c05d00 rio_request_outb_mbox +EXPORT_SYMBOL_GPL vmlinux 0x8504fb95 gpiod_put +EXPORT_SYMBOL_GPL vmlinux 0x85050965 __irq_alloc_descs +EXPORT_SYMBOL_GPL vmlinux 0x850e1b99 dm_send_uevents +EXPORT_SYMBOL_GPL vmlinux 0x85216155 ezx_pcap_read +EXPORT_SYMBOL_GPL vmlinux 0x853bea64 of_overlay_create +EXPORT_SYMBOL_GPL vmlinux 0x8552391a dma_buf_mmap +EXPORT_SYMBOL_GPL vmlinux 0x8563d1fa rdev_clear_badblocks +EXPORT_SYMBOL_GPL vmlinux 0x8575a72d inet6_csk_addr2sockaddr +EXPORT_SYMBOL_GPL vmlinux 0x857743dc pci_stop_root_bus +EXPORT_SYMBOL_GPL vmlinux 0x85780655 powercap_unregister_control_type +EXPORT_SYMBOL_GPL vmlinux 0x8579dba9 securityfs_create_file +EXPORT_SYMBOL_GPL vmlinux 0x8583a6df srp_attach_transport +EXPORT_SYMBOL_GPL vmlinux 0x8599df3a eeh_pe_inject_err +EXPORT_SYMBOL_GPL vmlinux 0x859af404 virtio_device_freeze +EXPORT_SYMBOL_GPL vmlinux 0x85aae0eb blk_insert_cloned_request +EXPORT_SYMBOL_GPL vmlinux 0x85c7f674 ring_buffer_normalize_time_stamp +EXPORT_SYMBOL_GPL vmlinux 0x86038463 irq_create_mapping +EXPORT_SYMBOL_GPL vmlinux 0x8616a2d8 ata_port_pbar_desc +EXPORT_SYMBOL_GPL vmlinux 0x861ea8bd xhci_suspend +EXPORT_SYMBOL_GPL vmlinux 0x863daff7 devm_regulator_bulk_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x864451fb register_ftrace_function +EXPORT_SYMBOL_GPL vmlinux 0x8646ee87 tpm2_do_selftest +EXPORT_SYMBOL_GPL vmlinux 0x864e5b8a mnt_want_write_file +EXPORT_SYMBOL_GPL vmlinux 0x865b2582 shash_ahash_digest +EXPORT_SYMBOL_GPL vmlinux 0x86786286 klist_add_behind +EXPORT_SYMBOL_GPL vmlinux 0x8686e857 pci_load_and_free_saved_state +EXPORT_SYMBOL_GPL vmlinux 0x868784cb __symbol_get +EXPORT_SYMBOL_GPL vmlinux 0x86bcec05 __pm_runtime_use_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0x86bf4877 wm8997_patch +EXPORT_SYMBOL_GPL vmlinux 0x86f0d974 get_cached_msi_msg +EXPORT_SYMBOL_GPL vmlinux 0x86f6b99d synchronize_rcu_expedited +EXPORT_SYMBOL_GPL vmlinux 0x86f8c910 pcap_set_ts_bits +EXPORT_SYMBOL_GPL vmlinux 0x8702e548 process_srcu +EXPORT_SYMBOL_GPL vmlinux 0x871c4275 ata_sff_qc_fill_rtf +EXPORT_SYMBOL_GPL vmlinux 0x872f8f24 pci_restore_ats_state +EXPORT_SYMBOL_GPL vmlinux 0x8737625a component_master_add +EXPORT_SYMBOL_GPL vmlinux 0x873fbaea edac_atomic_assert_error +EXPORT_SYMBOL_GPL vmlinux 0x874ea34f crypto_register_aead +EXPORT_SYMBOL_GPL vmlinux 0x877ae600 usb_hcd_pci_remove +EXPORT_SYMBOL_GPL vmlinux 0x87ad382e scsi_autopm_put_device +EXPORT_SYMBOL_GPL vmlinux 0x87b1ba80 shmem_truncate_range +EXPORT_SYMBOL_GPL vmlinux 0x87b6db4f ehci_init_driver +EXPORT_SYMBOL_GPL vmlinux 0x87fb24b9 __module_text_address +EXPORT_SYMBOL_GPL vmlinux 0x87fd99ea led_trigger_unregister_simple +EXPORT_SYMBOL_GPL vmlinux 0x87ffc397 scom_controller +EXPORT_SYMBOL_GPL vmlinux 0x8804af3d usb_anchor_suspend_wakeups +EXPORT_SYMBOL_GPL vmlinux 0x8810ad5e crypto_xor +EXPORT_SYMBOL_GPL vmlinux 0x883c2740 __cookie_v6_init_sequence +EXPORT_SYMBOL_GPL vmlinux 0x883e659b pci_hp_create_module_link +EXPORT_SYMBOL_GPL vmlinux 0x8846e949 virtqueue_enable_cb_delayed +EXPORT_SYMBOL_GPL vmlinux 0x886b9a75 flush_vsx_to_thread +EXPORT_SYMBOL_GPL vmlinux 0x888400eb blkg_lookup_create +EXPORT_SYMBOL_GPL vmlinux 0x88a78bde of_usb_get_maximum_speed +EXPORT_SYMBOL_GPL vmlinux 0x88ab2364 ata_sas_slave_configure +EXPORT_SYMBOL_GPL vmlinux 0x88ab6fe3 kgdb_active +EXPORT_SYMBOL_GPL vmlinux 0x88b5647c trace_clock_local +EXPORT_SYMBOL_GPL vmlinux 0x88e082b4 gpiod_set_array_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x88fbce63 sdio_release_irq +EXPORT_SYMBOL_GPL vmlinux 0x88ff049d pci_reset_function +EXPORT_SYMBOL_GPL vmlinux 0x89074c9d debugfs_create_x8 +EXPORT_SYMBOL_GPL vmlinux 0x8924eb1e rcu_force_quiescent_state +EXPORT_SYMBOL_GPL vmlinux 0x89485687 iommu_group_put +EXPORT_SYMBOL_GPL vmlinux 0x896ece9d fuse_dev_alloc +EXPORT_SYMBOL_GPL vmlinux 0x896fe3c0 __fsnotify_parent +EXPORT_SYMBOL_GPL vmlinux 0x8973c736 to_nd_blk_region +EXPORT_SYMBOL_GPL vmlinux 0x898b5e99 tty_ldisc_ref +EXPORT_SYMBOL_GPL vmlinux 0x899b1d30 gpiod_set_debounce +EXPORT_SYMBOL_GPL vmlinux 0x89a4afb6 dbs_check_cpu +EXPORT_SYMBOL_GPL vmlinux 0x89b5bea5 power_supply_am_i_supplied +EXPORT_SYMBOL_GPL vmlinux 0x89b6a7a4 blkg_rwstat_recursive_sum +EXPORT_SYMBOL_GPL vmlinux 0x89bbafc6 usb_register_notify +EXPORT_SYMBOL_GPL vmlinux 0x89ccd408 apply_to_page_range +EXPORT_SYMBOL_GPL vmlinux 0x89cfc920 of_reserved_mem_device_init +EXPORT_SYMBOL_GPL vmlinux 0x89dbf5b0 list_lru_destroy +EXPORT_SYMBOL_GPL vmlinux 0x89dfc685 driver_find +EXPORT_SYMBOL_GPL vmlinux 0x8a10fbb2 usb_unpoison_urb +EXPORT_SYMBOL_GPL vmlinux 0x8a1741c4 ip6_sk_dst_lookup_flow +EXPORT_SYMBOL_GPL vmlinux 0x8a213ec4 fs_kobj +EXPORT_SYMBOL_GPL vmlinux 0x8a324dcd cpuidle_register +EXPORT_SYMBOL_GPL vmlinux 0x8a3283ea tty_port_register_device +EXPORT_SYMBOL_GPL vmlinux 0x8a3542d0 of_pwm_get +EXPORT_SYMBOL_GPL vmlinux 0x8a417f32 devm_extcon_dev_register +EXPORT_SYMBOL_GPL vmlinux 0x8a554a36 mpc8xxx_spi_strmode +EXPORT_SYMBOL_GPL vmlinux 0x8a5df7ee nl_table +EXPORT_SYMBOL_GPL vmlinux 0x8a7f17d2 security_kernel_fw_from_file +EXPORT_SYMBOL_GPL vmlinux 0x8ab19f80 da9052_disable_irq_nosync +EXPORT_SYMBOL_GPL vmlinux 0x8abacc47 get_max_files +EXPORT_SYMBOL_GPL vmlinux 0x8ac04bb8 mmc_app_cmd +EXPORT_SYMBOL_GPL vmlinux 0x8ad0c3db of_irq_parse_and_map_pci +EXPORT_SYMBOL_GPL vmlinux 0x8af8c63a smpboot_update_cpumask_percpu_thread +EXPORT_SYMBOL_GPL vmlinux 0x8b2ff836 dev_attr_sw_activity +EXPORT_SYMBOL_GPL vmlinux 0x8b329b88 devfreq_event_enable_edev +EXPORT_SYMBOL_GPL vmlinux 0x8b3dc508 regmap_fields_update_bits +EXPORT_SYMBOL_GPL vmlinux 0x8b446486 nvdimm_blk_region_create +EXPORT_SYMBOL_GPL vmlinux 0x8b4a75ee devm_of_phy_get_by_index +EXPORT_SYMBOL_GPL vmlinux 0x8b4ef73e ata_scsi_slave_destroy +EXPORT_SYMBOL_GPL vmlinux 0x8b66cd1d usb_disable_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0x8b70e8ea __wake_up_sync_key +EXPORT_SYMBOL_GPL vmlinux 0x8b74c8f8 blk_mq_tags_cpumask +EXPORT_SYMBOL_GPL vmlinux 0x8b786dac bus_create_file +EXPORT_SYMBOL_GPL vmlinux 0x8bbef71e spi_alloc_device +EXPORT_SYMBOL_GPL vmlinux 0x8bce8e77 regmap_field_write +EXPORT_SYMBOL_GPL vmlinux 0x8bde65f6 of_reconfig_get_state_change +EXPORT_SYMBOL_GPL vmlinux 0x8c0215f2 pm_system_wakeup +EXPORT_SYMBOL_GPL vmlinux 0x8c03d20c destroy_workqueue +EXPORT_SYMBOL_GPL vmlinux 0x8c0d6634 devres_open_group +EXPORT_SYMBOL_GPL vmlinux 0x8c62c397 regcache_drop_region +EXPORT_SYMBOL_GPL vmlinux 0x8c646600 edac_report_status +EXPORT_SYMBOL_GPL vmlinux 0x8c699c57 spi_add_device +EXPORT_SYMBOL_GPL vmlinux 0x8c743fb6 reset_control_status +EXPORT_SYMBOL_GPL vmlinux 0x8c8b5a9f register_wide_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x8cea765f memalloc_socks +EXPORT_SYMBOL_GPL vmlinux 0x8ceecf80 tcp_twsk_unique +EXPORT_SYMBOL_GPL vmlinux 0x8d0c3f3d virtqueue_notify +EXPORT_SYMBOL_GPL vmlinux 0x8d1b0795 crypto_unregister_aeads +EXPORT_SYMBOL_GPL vmlinux 0x8d22bb58 iommu_group_alloc +EXPORT_SYMBOL_GPL vmlinux 0x8d320154 mpc8xxx_spi_remove +EXPORT_SYMBOL_GPL vmlinux 0x8d41596f __nvdimm_bus_register +EXPORT_SYMBOL_GPL vmlinux 0x8d697dd0 register_virtio_device +EXPORT_SYMBOL_GPL vmlinux 0x8d7a1b40 ip6_flush_pending_frames +EXPORT_SYMBOL_GPL vmlinux 0x8d982735 crypto_aead_setkey +EXPORT_SYMBOL_GPL vmlinux 0x8db646a0 pwm_request +EXPORT_SYMBOL_GPL vmlinux 0x8dbb5813 alarm_cancel +EXPORT_SYMBOL_GPL vmlinux 0x8dbf5a20 kvmppc_hv_entry_trampoline +EXPORT_SYMBOL_GPL vmlinux 0x8dc04306 rhashtable_walk_exit +EXPORT_SYMBOL_GPL vmlinux 0x8de2041c tpm_pm_resume +EXPORT_SYMBOL_GPL vmlinux 0x8de45c8d xfrm_audit_state_notfound +EXPORT_SYMBOL_GPL vmlinux 0x8e15a05c of_get_nand_on_flash_bbt +EXPORT_SYMBOL_GPL vmlinux 0x8e2b25c2 videomode_from_timings +EXPORT_SYMBOL_GPL vmlinux 0x8e586929 power_supply_register +EXPORT_SYMBOL_GPL vmlinux 0x8e6cb031 nvdimm_create +EXPORT_SYMBOL_GPL vmlinux 0x8e6f3090 mpc8xxx_spi_tx_buf_u8 +EXPORT_SYMBOL_GPL vmlinux 0x8e8ab893 __skb_tstamp_tx +EXPORT_SYMBOL_GPL vmlinux 0x8e9f341f ata_sff_wait_after_reset +EXPORT_SYMBOL_GPL vmlinux 0x8e9f7de8 devm_regulator_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x8eb220b5 srp_rport_add +EXPORT_SYMBOL_GPL vmlinux 0x8ec56334 pm_generic_resume +EXPORT_SYMBOL_GPL vmlinux 0x8ecc79d7 crypto_alloc_instance +EXPORT_SYMBOL_GPL vmlinux 0x8eead5aa pci_remove_root_bus +EXPORT_SYMBOL_GPL vmlinux 0x8efa4357 virtqueue_get_buf +EXPORT_SYMBOL_GPL vmlinux 0x8efb7c81 dev_pm_qos_expose_flags +EXPORT_SYMBOL_GPL vmlinux 0x8f0748af rcu_expedite_gp +EXPORT_SYMBOL_GPL vmlinux 0x8f37744e __rtnl_register +EXPORT_SYMBOL_GPL vmlinux 0x8f45032c securityfs_remove +EXPORT_SYMBOL_GPL vmlinux 0x8f5d7a86 ata_sff_data_xfer +EXPORT_SYMBOL_GPL vmlinux 0x8f622e06 sock_diag_check_cookie +EXPORT_SYMBOL_GPL vmlinux 0x8f6cee77 __round_jiffies_relative +EXPORT_SYMBOL_GPL vmlinux 0x8f8af78e blk_queue_flush_queueable +EXPORT_SYMBOL_GPL vmlinux 0x8fbe9ad6 hwmon_device_register +EXPORT_SYMBOL_GPL vmlinux 0x8fc46e42 ping_rcv +EXPORT_SYMBOL_GPL vmlinux 0x8fe0fc36 blk_queue_dma_drain +EXPORT_SYMBOL_GPL vmlinux 0x8fe7f96a rio_enable_rx_tx_port +EXPORT_SYMBOL_GPL vmlinux 0x8ff1efb8 regmap_get_max_register +EXPORT_SYMBOL_GPL vmlinux 0x90003969 fat_alloc_new_dir +EXPORT_SYMBOL_GPL vmlinux 0x90052c38 powercap_unregister_zone +EXPORT_SYMBOL_GPL vmlinux 0x903b627c list_lru_isolate_move +EXPORT_SYMBOL_GPL vmlinux 0x904a6301 extcon_dev_free +EXPORT_SYMBOL_GPL vmlinux 0x90597cf4 devm_kmalloc +EXPORT_SYMBOL_GPL vmlinux 0x90628fd2 da9052_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0x9062c322 ring_buffer_consume +EXPORT_SYMBOL_GPL vmlinux 0x906daab7 debugfs_create_file +EXPORT_SYMBOL_GPL vmlinux 0x9077d5ea usb_kill_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x90947405 ata_sff_exec_command +EXPORT_SYMBOL_GPL vmlinux 0x90a1004a crypto_has_alg +EXPORT_SYMBOL_GPL vmlinux 0x90a59ef2 devm_of_pwm_get +EXPORT_SYMBOL_GPL vmlinux 0x90e2f68b dev_pm_qos_hide_latency_limit +EXPORT_SYMBOL_GPL vmlinux 0x90ed73b6 pwm_free +EXPORT_SYMBOL_GPL vmlinux 0x90f58627 arizona_set_irq_wake +EXPORT_SYMBOL_GPL vmlinux 0x91304f63 xfrm_audit_state_replay_overflow +EXPORT_SYMBOL_GPL vmlinux 0x913e58d1 driver_for_each_device +EXPORT_SYMBOL_GPL vmlinux 0x9151f770 usb_deregister_device_driver +EXPORT_SYMBOL_GPL vmlinux 0x916c3f93 devm_regmap_init_i2c +EXPORT_SYMBOL_GPL vmlinux 0x917add20 usb_debug_root +EXPORT_SYMBOL_GPL vmlinux 0x918ad429 ring_buffer_lock_reserve +EXPORT_SYMBOL_GPL vmlinux 0x91af44b0 dev_pm_domain_attach +EXPORT_SYMBOL_GPL vmlinux 0x91bc6ff9 regmap_field_update_bits +EXPORT_SYMBOL_GPL vmlinux 0x91c47df4 skb_copy_ubufs +EXPORT_SYMBOL_GPL vmlinux 0x91c6e5b0 pcap_to_irq +EXPORT_SYMBOL_GPL vmlinux 0x91f2d3b5 subsys_interface_register +EXPORT_SYMBOL_GPL vmlinux 0x920cc389 visitorl +EXPORT_SYMBOL_GPL vmlinux 0x92105776 scsi_target_block +EXPORT_SYMBOL_GPL vmlinux 0x9211c35f ata_sg_init +EXPORT_SYMBOL_GPL vmlinux 0x9222df4f wm831x_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x924760b7 of_display_timings_exist +EXPORT_SYMBOL_GPL vmlinux 0x924c46f8 zs_unmap_object +EXPORT_SYMBOL_GPL vmlinux 0x924de4f7 ata_sas_sync_probe +EXPORT_SYMBOL_GPL vmlinux 0x928da91f pci_user_read_config_word +EXPORT_SYMBOL_GPL vmlinux 0x92bdad60 md_find_rdev_nr_rcu +EXPORT_SYMBOL_GPL vmlinux 0x92c0d3d6 cpufreq_cooling_register +EXPORT_SYMBOL_GPL vmlinux 0x92c7988d crypto_unregister_akcipher +EXPORT_SYMBOL_GPL vmlinux 0x92ca5376 cpufreq_generic_init +EXPORT_SYMBOL_GPL vmlinux 0x92d18102 seq_open_net +EXPORT_SYMBOL_GPL vmlinux 0x92d31cfb fixed_phy_add +EXPORT_SYMBOL_GPL vmlinux 0x92db8f68 do_trace_rcu_torture_read +EXPORT_SYMBOL_GPL vmlinux 0x92eaa814 of_phy_simple_xlate +EXPORT_SYMBOL_GPL vmlinux 0x930500e3 extcon_update_state +EXPORT_SYMBOL_GPL vmlinux 0x931f05d3 ktime_get_raw +EXPORT_SYMBOL_GPL vmlinux 0x932222db __inet_inherit_port +EXPORT_SYMBOL_GPL vmlinux 0x9323349c usb_string +EXPORT_SYMBOL_GPL vmlinux 0x93311080 opal_flash_read +EXPORT_SYMBOL_GPL vmlinux 0x9334064d phy_pm_runtime_get_sync +EXPORT_SYMBOL_GPL vmlinux 0x93528996 hrtimer_active +EXPORT_SYMBOL_GPL vmlinux 0x9369286b gpiod_get_value +EXPORT_SYMBOL_GPL vmlinux 0x936bb8e0 simple_attr_release +EXPORT_SYMBOL_GPL vmlinux 0x93e118cc tpm_gen_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x93fb505d ata_eh_qc_retry +EXPORT_SYMBOL_GPL vmlinux 0x941f2aaa eventfd_ctx_put +EXPORT_SYMBOL_GPL vmlinux 0x9435adbe regmap_field_free +EXPORT_SYMBOL_GPL vmlinux 0x945cbcd2 da903x_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0x948bdc6d nvdimm_provider_data +EXPORT_SYMBOL_GPL vmlinux 0x949a3e24 usb_gen_phy_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x949f7342 __alloc_percpu +EXPORT_SYMBOL_GPL vmlinux 0x94d972b7 unregister_kprobe +EXPORT_SYMBOL_GPL vmlinux 0x94d9ac5e fat_dir_empty +EXPORT_SYMBOL_GPL vmlinux 0x94ef4d05 cpci_hp_stop +EXPORT_SYMBOL_GPL vmlinux 0x9504df26 irq_wake_thread +EXPORT_SYMBOL_GPL vmlinux 0x952664c5 do_exit +EXPORT_SYMBOL_GPL vmlinux 0x952e17c1 phy_optional_get +EXPORT_SYMBOL_GPL vmlinux 0x953e1b9e ktime_get_real_seconds +EXPORT_SYMBOL_GPL vmlinux 0x954ba9c4 tcp_ca_openreq_child +EXPORT_SYMBOL_GPL vmlinux 0x955b0e2e kthread_worker_fn +EXPORT_SYMBOL_GPL vmlinux 0x9579560c blk_add_driver_data +EXPORT_SYMBOL_GPL vmlinux 0x958df3ac zs_free +EXPORT_SYMBOL_GPL vmlinux 0x959e1119 wm5110_patch +EXPORT_SYMBOL_GPL vmlinux 0x959f9fff i2c_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0x95a3dd3e reservation_object_get_fences_rcu +EXPORT_SYMBOL_GPL vmlinux 0x95bc46ef pwm_request_from_chip +EXPORT_SYMBOL_GPL vmlinux 0x95bc9078 btree_free +EXPORT_SYMBOL_GPL vmlinux 0x9616c144 ata_sff_queue_pio_task +EXPORT_SYMBOL_GPL vmlinux 0x9621849f ring_buffer_event_data +EXPORT_SYMBOL_GPL vmlinux 0x9624f164 sysfs_update_group +EXPORT_SYMBOL_GPL vmlinux 0x9628755e pci_enable_rom +EXPORT_SYMBOL_GPL vmlinux 0x963e0373 unuse_mm +EXPORT_SYMBOL_GPL vmlinux 0x96554810 register_keyboard_notifier +EXPORT_SYMBOL_GPL vmlinux 0x9666c4c4 of_prop_next_string +EXPORT_SYMBOL_GPL vmlinux 0x96955018 crypto_hash_walk_done +EXPORT_SYMBOL_GPL vmlinux 0x96a17607 ata_host_alloc_pinfo +EXPORT_SYMBOL_GPL vmlinux 0x96e0474d usb_hub_find_child +EXPORT_SYMBOL_GPL vmlinux 0x970a7374 perf_event_refresh +EXPORT_SYMBOL_GPL vmlinux 0x971586b0 devm_power_supply_register +EXPORT_SYMBOL_GPL vmlinux 0x9735f061 register_jprobes +EXPORT_SYMBOL_GPL vmlinux 0x973a3dac ata_dummy_port_info +EXPORT_SYMBOL_GPL vmlinux 0x97402f60 regmap_raw_write_async +EXPORT_SYMBOL_GPL vmlinux 0x97528cae ftrace_set_filter_ip +EXPORT_SYMBOL_GPL vmlinux 0x975519c1 asymmetric_key_id_same +EXPORT_SYMBOL_GPL vmlinux 0x975e45dc tty_perform_flush +EXPORT_SYMBOL_GPL vmlinux 0x9780c464 inet_twsk_purge +EXPORT_SYMBOL_GPL vmlinux 0x9797c94b ipv4_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x97aeb730 regmap_init_spi +EXPORT_SYMBOL_GPL vmlinux 0x97cfc36e wm8400_reset_codec_reg_cache +EXPORT_SYMBOL_GPL vmlinux 0x97da5e81 device_property_read_string +EXPORT_SYMBOL_GPL vmlinux 0x97de2b83 debug_locks_silent +EXPORT_SYMBOL_GPL vmlinux 0x97e7fd9f skb_cow_data +EXPORT_SYMBOL_GPL vmlinux 0x9807e9d4 blkcipher_aead_walk_virt_block +EXPORT_SYMBOL_GPL vmlinux 0x9830c3f9 bus_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x9833bc0c hvc_kick +EXPORT_SYMBOL_GPL vmlinux 0x98404e30 serial8250_do_startup +EXPORT_SYMBOL_GPL vmlinux 0x984a0b7a ftrace_set_notrace +EXPORT_SYMBOL_GPL vmlinux 0x98503a63 mpi_alloc +EXPORT_SYMBOL_GPL vmlinux 0x9870a9f6 devm_phy_create +EXPORT_SYMBOL_GPL vmlinux 0x9879932b crypto_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x987a1f86 perf_event_disable +EXPORT_SYMBOL_GPL vmlinux 0x9893fb56 __pci_hp_register +EXPORT_SYMBOL_GPL vmlinux 0x989f6425 get_task_pid +EXPORT_SYMBOL_GPL vmlinux 0x98a02a70 register_jprobe +EXPORT_SYMBOL_GPL vmlinux 0x98a46eb4 tpm_get_timeouts +EXPORT_SYMBOL_GPL vmlinux 0x98c15507 generic_fh_to_dentry +EXPORT_SYMBOL_GPL vmlinux 0x98cf4dbf usb_wakeup_notification +EXPORT_SYMBOL_GPL vmlinux 0x98d21097 usb_autopm_get_interface +EXPORT_SYMBOL_GPL vmlinux 0x98d7c7ee __get_vm_area +EXPORT_SYMBOL_GPL vmlinux 0x98f04e2a scom_map_device +EXPORT_SYMBOL_GPL vmlinux 0x98fa1e20 dm_get_reserved_rq_based_ios +EXPORT_SYMBOL_GPL vmlinux 0x98fcf128 irq_work_queue_on +EXPORT_SYMBOL_GPL vmlinux 0x9905b0dc crypto_init_shash_spawn +EXPORT_SYMBOL_GPL vmlinux 0x99240338 key_type_logon +EXPORT_SYMBOL_GPL vmlinux 0x9924c496 __usb_get_extra_descriptor +EXPORT_SYMBOL_GPL vmlinux 0x99403eaf adp5520_write +EXPORT_SYMBOL_GPL vmlinux 0x9941aa19 ipv6_recv_error +EXPORT_SYMBOL_GPL vmlinux 0x9944d94b pingv6_ops +EXPORT_SYMBOL_GPL vmlinux 0x9949aefa sdio_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x995d1071 prof_on +EXPORT_SYMBOL_GPL vmlinux 0x9973add9 __cookie_v6_check +EXPORT_SYMBOL_GPL vmlinux 0x997c4347 unmap_kernel_range +EXPORT_SYMBOL_GPL vmlinux 0x99840d00 timecounter_init +EXPORT_SYMBOL_GPL vmlinux 0x9987e6e9 opal_get_sensor_data +EXPORT_SYMBOL_GPL vmlinux 0x99a31491 debugfs_create_file_size +EXPORT_SYMBOL_GPL vmlinux 0x99a655fb pci_cfg_access_lock +EXPORT_SYMBOL_GPL vmlinux 0x99a9ff9a cpuidle_register_device +EXPORT_SYMBOL_GPL vmlinux 0x99cef793 ata_host_detach +EXPORT_SYMBOL_GPL vmlinux 0x99e28f10 __tracepoint_remove_device_from_group +EXPORT_SYMBOL_GPL vmlinux 0x99ff8d08 opal_invalid_call +EXPORT_SYMBOL_GPL vmlinux 0x9a058c06 class_destroy +EXPORT_SYMBOL_GPL vmlinux 0x9a06c963 blk_rq_prep_clone +EXPORT_SYMBOL_GPL vmlinux 0x9a0c4c23 usb_phy_gen_create_phy +EXPORT_SYMBOL_GPL vmlinux 0x9a11a0fc crypto_attr_alg_name +EXPORT_SYMBOL_GPL vmlinux 0x9a414220 wm8350_device_exit +EXPORT_SYMBOL_GPL vmlinux 0x9a44fe33 mbox_send_message +EXPORT_SYMBOL_GPL vmlinux 0x9a49d937 __wake_up_locked_key +EXPORT_SYMBOL_GPL vmlinux 0x9a54aafa ata_bmdma_setup +EXPORT_SYMBOL_GPL vmlinux 0x9a5accbd gpiod_get_direction +EXPORT_SYMBOL_GPL vmlinux 0x9a60c48e unregister_ftrace_function +EXPORT_SYMBOL_GPL vmlinux 0x9a72ea08 ata_sff_qc_issue +EXPORT_SYMBOL_GPL vmlinux 0x9a83b15c pci_bus_resource_n +EXPORT_SYMBOL_GPL vmlinux 0x9a89dbf7 lpddr2_jedec_min_tck +EXPORT_SYMBOL_GPL vmlinux 0x9a8dc838 pm_runtime_enable +EXPORT_SYMBOL_GPL vmlinux 0x9a9006e7 usb_altnum_to_altsetting +EXPORT_SYMBOL_GPL vmlinux 0x9aa9f745 rtc_class_open +EXPORT_SYMBOL_GPL vmlinux 0x9aad6540 klist_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x9ac11b74 suspend_set_ops +EXPORT_SYMBOL_GPL vmlinux 0x9adf08c3 mmu_linear_psize +EXPORT_SYMBOL_GPL vmlinux 0x9aeacb87 ring_buffer_iter_empty +EXPORT_SYMBOL_GPL vmlinux 0x9afc6cad usb_hcd_pci_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x9b01357b pm_generic_freeze +EXPORT_SYMBOL_GPL vmlinux 0x9b0e6c60 pci_generic_config_read32 +EXPORT_SYMBOL_GPL vmlinux 0x9b223c47 iommu_domain_get_attr +EXPORT_SYMBOL_GPL vmlinux 0x9b406458 preempt_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0x9b509189 watchdog_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0x9b8b41ce sysfs_create_mount_point +EXPORT_SYMBOL_GPL vmlinux 0x9ba2bb2b gpio_request_array +EXPORT_SYMBOL_GPL vmlinux 0x9ba8792b rio_release_dma +EXPORT_SYMBOL_GPL vmlinux 0x9bca03ca ata_sff_queue_delayed_work +EXPORT_SYMBOL_GPL vmlinux 0x9be66ab5 blkg_stat_recursive_sum +EXPORT_SYMBOL_GPL vmlinux 0x9bece81b mpi_cmp_ui +EXPORT_SYMBOL_GPL vmlinux 0x9c01d604 root_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x9c111cfb find_module +EXPORT_SYMBOL_GPL vmlinux 0x9c208e37 usb_hcd_unmap_urb_for_dma +EXPORT_SYMBOL_GPL vmlinux 0x9c32e50a gpiod_is_active_low +EXPORT_SYMBOL_GPL vmlinux 0x9c7083c8 __rio_local_write_config_32 +EXPORT_SYMBOL_GPL vmlinux 0x9c78f14c usb_reset_configuration +EXPORT_SYMBOL_GPL vmlinux 0x9c85c35b fsnotify +EXPORT_SYMBOL_GPL vmlinux 0x9cb0df4b trace_seq_putc +EXPORT_SYMBOL_GPL vmlinux 0x9cc4f70a register_pm_notifier +EXPORT_SYMBOL_GPL vmlinux 0x9ceb54a0 verify_signature +EXPORT_SYMBOL_GPL vmlinux 0x9cee57a0 zs_create_pool +EXPORT_SYMBOL_GPL vmlinux 0x9cf221f9 blk_mq_free_hctx_request +EXPORT_SYMBOL_GPL vmlinux 0x9cfb0bb8 blk_update_request +EXPORT_SYMBOL_GPL vmlinux 0x9d26b669 crypto_register_aeads +EXPORT_SYMBOL_GPL vmlinux 0x9d2dafb2 rtc_update_irq_enable +EXPORT_SYMBOL_GPL vmlinux 0x9d3b41d2 __inet_hash_nolisten +EXPORT_SYMBOL_GPL vmlinux 0x9dadbb88 cpufreq_boost_supported +EXPORT_SYMBOL_GPL vmlinux 0x9dd2fad5 sdio_writesb +EXPORT_SYMBOL_GPL vmlinux 0x9dda5f3a cpufreq_cooling_unregister +EXPORT_SYMBOL_GPL vmlinux 0x9e18f43d ohci_hub_status_data +EXPORT_SYMBOL_GPL vmlinux 0x9e434193 crypto_ahash_type +EXPORT_SYMBOL_GPL vmlinux 0x9e472f5f snmp_fold_field +EXPORT_SYMBOL_GPL vmlinux 0x9e7c0648 fat_fill_super +EXPORT_SYMBOL_GPL vmlinux 0x9eb02e53 scom_find_parent +EXPORT_SYMBOL_GPL vmlinux 0x9ebf2024 iommu_domain_window_disable +EXPORT_SYMBOL_GPL vmlinux 0x9ed554b3 unregister_keyboard_notifier +EXPORT_SYMBOL_GPL vmlinux 0x9ee221b0 ipv6_dup_options +EXPORT_SYMBOL_GPL vmlinux 0x9ef45f49 bsg_job_done +EXPORT_SYMBOL_GPL vmlinux 0x9ef5c639 inet_ehash_locks_alloc +EXPORT_SYMBOL_GPL vmlinux 0x9efe5b41 device_dma_is_coherent +EXPORT_SYMBOL_GPL vmlinux 0x9f099cf6 x509_get_sig_params +EXPORT_SYMBOL_GPL vmlinux 0x9f2e3a77 bus_get_device_klist +EXPORT_SYMBOL_GPL vmlinux 0x9f4e5127 component_master_add_with_match +EXPORT_SYMBOL_GPL vmlinux 0x9f64dee2 blk_end_request_err +EXPORT_SYMBOL_GPL vmlinux 0x9f9bc020 unregister_kretprobe +EXPORT_SYMBOL_GPL vmlinux 0x9f9d9dfc usb_put_dev +EXPORT_SYMBOL_GPL vmlinux 0x9fce80db fb_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x9fd06722 rio_dma_prep_slave_sg +EXPORT_SYMBOL_GPL vmlinux 0x9fd3b3d1 rtc_update_irq +EXPORT_SYMBOL_GPL vmlinux 0x9fe271a2 usb_set_interface +EXPORT_SYMBOL_GPL vmlinux 0x9fe939e1 mpi_powm +EXPORT_SYMBOL_GPL vmlinux 0xa00f6ca7 inode_congested +EXPORT_SYMBOL_GPL vmlinux 0xa02ffba7 debugfs_create_u16 +EXPORT_SYMBOL_GPL vmlinux 0xa033c64d pcie_bus_configure_settings +EXPORT_SYMBOL_GPL vmlinux 0xa0524ba2 debugfs_create_x32 +EXPORT_SYMBOL_GPL vmlinux 0xa06d52c2 of_pci_parse_bus_range +EXPORT_SYMBOL_GPL vmlinux 0xa07d3b59 sysfs_remove_files +EXPORT_SYMBOL_GPL vmlinux 0xa080a5d9 usb_hcd_map_urb_for_dma +EXPORT_SYMBOL_GPL vmlinux 0xa0830669 fat_detach +EXPORT_SYMBOL_GPL vmlinux 0xa084003e gen_pool_size +EXPORT_SYMBOL_GPL vmlinux 0xa091d10d fwnode_property_present +EXPORT_SYMBOL_GPL vmlinux 0xa0a27fff pci_address_to_pio +EXPORT_SYMBOL_GPL vmlinux 0xa0b3a96c scsi_flush_work +EXPORT_SYMBOL_GPL vmlinux 0xa0ddc5ef thermal_zone_unbind_cooling_device +EXPORT_SYMBOL_GPL vmlinux 0xa1354b9f trace_event_reg +EXPORT_SYMBOL_GPL vmlinux 0xa13f4a00 crypto_register_algs +EXPORT_SYMBOL_GPL vmlinux 0xa18f9433 mpi_read_buffer +EXPORT_SYMBOL_GPL vmlinux 0xa19f5e46 gpiochip_free_own_desc +EXPORT_SYMBOL_GPL vmlinux 0xa1acbf7c usb_unlink_urb +EXPORT_SYMBOL_GPL vmlinux 0xa1b552de trace_event_buffer_commit +EXPORT_SYMBOL_GPL vmlinux 0xa1d4c3d9 thermal_zone_device_update +EXPORT_SYMBOL_GPL vmlinux 0xa1ed9c8b add_hwgenerator_randomness +EXPORT_SYMBOL_GPL vmlinux 0xa1ef2d9e device_create_vargs +EXPORT_SYMBOL_GPL vmlinux 0xa21bc5c5 swiotlb_tbl_sync_single +EXPORT_SYMBOL_GPL vmlinux 0xa21d7e79 devm_usb_get_phy_dev +EXPORT_SYMBOL_GPL vmlinux 0xa22ab621 extcon_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0xa2409eb1 pci_hp_add_bridge +EXPORT_SYMBOL_GPL vmlinux 0xa240bc3e regulator_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0xa264dd2c bus_for_each_drv +EXPORT_SYMBOL_GPL vmlinux 0xa268817d led_stop_software_blink +EXPORT_SYMBOL_GPL vmlinux 0xa26bae14 fuse_request_send +EXPORT_SYMBOL_GPL vmlinux 0xa26bc9c7 usb_disable_xhci_ports +EXPORT_SYMBOL_GPL vmlinux 0xa26d9b4f workqueue_congested +EXPORT_SYMBOL_GPL vmlinux 0xa28c97b9 usb_anchor_urb +EXPORT_SYMBOL_GPL vmlinux 0xa2a9f183 ata_std_bios_param +EXPORT_SYMBOL_GPL vmlinux 0xa2ac5519 percpu_ref_init +EXPORT_SYMBOL_GPL vmlinux 0xa2b99a6d preempt_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0xa2bafa40 interval_tree_insert +EXPORT_SYMBOL_GPL vmlinux 0xa2c5881b of_get_pci_domain_nr +EXPORT_SYMBOL_GPL vmlinux 0xa2c90d9e tps6586x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xa2dd30e5 wm5110_i2c_regmap +EXPORT_SYMBOL_GPL vmlinux 0xa2fda1ee of_irq_parse_pci +EXPORT_SYMBOL_GPL vmlinux 0xa306563a regulator_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0xa33cdc64 inet_csk_addr2sockaddr +EXPORT_SYMBOL_GPL vmlinux 0xa366e66d rio_route_clr_table +EXPORT_SYMBOL_GPL vmlinux 0xa38602cd drain_workqueue +EXPORT_SYMBOL_GPL vmlinux 0xa389a49a profile_event_register +EXPORT_SYMBOL_GPL vmlinux 0xa3a04602 btree_geo64 +EXPORT_SYMBOL_GPL vmlinux 0xa3a2d9af walk_system_ram_range +EXPORT_SYMBOL_GPL vmlinux 0xa3adf446 crypto_alloc_aead +EXPORT_SYMBOL_GPL vmlinux 0xa3b958ce reset_hung_task_detector +EXPORT_SYMBOL_GPL vmlinux 0xa3d335f3 __online_page_set_limits +EXPORT_SYMBOL_GPL vmlinux 0xa3da957a debugfs_rename +EXPORT_SYMBOL_GPL vmlinux 0xa3e158ff dma_buf_get +EXPORT_SYMBOL_GPL vmlinux 0xa3e7c113 ring_buffer_iter_peek +EXPORT_SYMBOL_GPL vmlinux 0xa3eb8783 perf_pmu_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa3ec3065 regmap_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0xa46928f9 tcp_reno_ssthresh +EXPORT_SYMBOL_GPL vmlinux 0xa46d7480 get_dcookie +EXPORT_SYMBOL_GPL vmlinux 0xa48196c8 kdb_poll_idx +EXPORT_SYMBOL_GPL vmlinux 0xa4878c4a rio_mport_get_physefb +EXPORT_SYMBOL_GPL vmlinux 0xa48fb772 ata_eh_freeze_port +EXPORT_SYMBOL_GPL vmlinux 0xa49ed234 request_firmware_direct +EXPORT_SYMBOL_GPL vmlinux 0xa4c0d169 locks_release_private +EXPORT_SYMBOL_GPL vmlinux 0xa4ce53b7 virtqueue_is_broken +EXPORT_SYMBOL_GPL vmlinux 0xa4e54bb3 pci_check_and_unmask_intx +EXPORT_SYMBOL_GPL vmlinux 0xa4e9a316 srp_remove_host +EXPORT_SYMBOL_GPL vmlinux 0xa4ee524d blk_lld_busy +EXPORT_SYMBOL_GPL vmlinux 0xa4f9c345 class_remove_file_ns +EXPORT_SYMBOL_GPL vmlinux 0xa5000b84 crypto_alg_mod_lookup +EXPORT_SYMBOL_GPL vmlinux 0xa51af877 device_add_property_set +EXPORT_SYMBOL_GPL vmlinux 0xa52f3ff3 rio_add_device +EXPORT_SYMBOL_GPL vmlinux 0xa5574a0e usb_driver_release_interface +EXPORT_SYMBOL_GPL vmlinux 0xa56a1fe8 fat_scan +EXPORT_SYMBOL_GPL vmlinux 0xa5a3df1b pm_generic_thaw +EXPORT_SYMBOL_GPL vmlinux 0xa5b00659 ppc_proc_freq +EXPORT_SYMBOL_GPL vmlinux 0xa5d22b92 cpufreq_frequency_table_get_index +EXPORT_SYMBOL_GPL vmlinux 0xa5d278b2 vfs_lock_file +EXPORT_SYMBOL_GPL vmlinux 0xa5e407e4 wm5110_aod +EXPORT_SYMBOL_GPL vmlinux 0xa5eb284c driver_register +EXPORT_SYMBOL_GPL vmlinux 0xa5efbf4c async_synchronize_full +EXPORT_SYMBOL_GPL vmlinux 0xa5efe460 usb_anchor_resume_wakeups +EXPORT_SYMBOL_GPL vmlinux 0xa6007f50 blk_trace_setup +EXPORT_SYMBOL_GPL vmlinux 0xa60fbf6c trace_seq_putmem_hex +EXPORT_SYMBOL_GPL vmlinux 0xa6127b07 posix_acl_access_xattr_handler +EXPORT_SYMBOL_GPL vmlinux 0xa617dd7b __tracepoint_map +EXPORT_SYMBOL_GPL vmlinux 0xa625110d kmsg_dump_rewind +EXPORT_SYMBOL_GPL vmlinux 0xa637348f ata_bmdma_port_intr +EXPORT_SYMBOL_GPL vmlinux 0xa645524a blkcipher_walk_virt_block +EXPORT_SYMBOL_GPL vmlinux 0xa654174e __netpoll_setup +EXPORT_SYMBOL_GPL vmlinux 0xa6ace861 tpm_chip_register +EXPORT_SYMBOL_GPL vmlinux 0xa6b21ef2 dpm_suspend_end +EXPORT_SYMBOL_GPL vmlinux 0xa6c2816f devm_kasprintf +EXPORT_SYMBOL_GPL vmlinux 0xa6dcfc01 device_init_wakeup +EXPORT_SYMBOL_GPL vmlinux 0xa6e1a69d kick_all_cpus_sync +EXPORT_SYMBOL_GPL vmlinux 0xa6eded6c opal_xscom_read +EXPORT_SYMBOL_GPL vmlinux 0xa6fa3e5c srcu_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xa721bc3f opal_rtc_write +EXPORT_SYMBOL_GPL vmlinux 0xa748a7af power_supply_property_is_writeable +EXPORT_SYMBOL_GPL vmlinux 0xa75312bc call_rcu_sched +EXPORT_SYMBOL_GPL vmlinux 0xa76bfb34 __hvc_resize +EXPORT_SYMBOL_GPL vmlinux 0xa77269c2 list_lru_add +EXPORT_SYMBOL_GPL vmlinux 0xa7764038 tty_mode_ioctl +EXPORT_SYMBOL_GPL vmlinux 0xa7aa34a8 gpiod_to_irq +EXPORT_SYMBOL_GPL vmlinux 0xa7c60e55 mbox_controller_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa7d074b5 inode_sb_list_add +EXPORT_SYMBOL_GPL vmlinux 0xa7d208a2 unregister_pernet_device +EXPORT_SYMBOL_GPL vmlinux 0xa7d33223 ata_std_postreset +EXPORT_SYMBOL_GPL vmlinux 0xa7d33aea sysfs_chmod_file +EXPORT_SYMBOL_GPL vmlinux 0xa7e63440 attribute_container_find_class_device +EXPORT_SYMBOL_GPL vmlinux 0xa80d9a73 max8997_read_reg +EXPORT_SYMBOL_GPL vmlinux 0xa82620a8 ata_host_suspend +EXPORT_SYMBOL_GPL vmlinux 0xa8343baf raw_seq_open +EXPORT_SYMBOL_GPL vmlinux 0xa83f05d5 power_supply_put +EXPORT_SYMBOL_GPL vmlinux 0xa851973a raw_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xa85e33d1 ata_base_port_ops +EXPORT_SYMBOL_GPL vmlinux 0xa87ec895 sysfs_unmerge_group +EXPORT_SYMBOL_GPL vmlinux 0xa882676e tpm_calc_ordinal_duration +EXPORT_SYMBOL_GPL vmlinux 0xa8b76a68 timecounter_cyc2time +EXPORT_SYMBOL_GPL vmlinux 0xa8d7d0f5 rio_release_outb_mbox +EXPORT_SYMBOL_GPL vmlinux 0xa8e0f63b sdio_f0_writeb +EXPORT_SYMBOL_GPL vmlinux 0xa8f8b664 shake_page +EXPORT_SYMBOL_GPL vmlinux 0xa91a957b gpiochip_set_chained_irqchip +EXPORT_SYMBOL_GPL vmlinux 0xa925e478 __tracepoint_rpm_return_int +EXPORT_SYMBOL_GPL vmlinux 0xa9320d27 ktime_get_seconds +EXPORT_SYMBOL_GPL vmlinux 0xa93271a5 gen_pool_avail +EXPORT_SYMBOL_GPL vmlinux 0xa9498c65 usb_unlocked_disable_lpm +EXPORT_SYMBOL_GPL vmlinux 0xa94d3768 regulator_map_voltage_iterate +EXPORT_SYMBOL_GPL vmlinux 0xa97ca848 scsi_get_vpd_page +EXPORT_SYMBOL_GPL vmlinux 0xa980af16 RSA_public_key_algorithm +EXPORT_SYMBOL_GPL vmlinux 0xa9a485d9 wm8997_aod +EXPORT_SYMBOL_GPL vmlinux 0xa9aa1b00 opal_poll_events +EXPORT_SYMBOL_GPL vmlinux 0xa9bbb135 user_destroy +EXPORT_SYMBOL_GPL vmlinux 0xa9bd532f tcp_peer_is_proven +EXPORT_SYMBOL_GPL vmlinux 0xa9c345a9 tty_ldisc_flush +EXPORT_SYMBOL_GPL vmlinux 0xa9ce341e usb_show_dynids +EXPORT_SYMBOL_GPL vmlinux 0xa9e18049 task_handoff_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa9e93afe dev_coredumpm +EXPORT_SYMBOL_GPL vmlinux 0xa9efaac2 usb_get_intf +EXPORT_SYMBOL_GPL vmlinux 0xa9ff417f dev_pm_qos_hide_latency_tolerance +EXPORT_SYMBOL_GPL vmlinux 0xaa004b81 user_free_preparse +EXPORT_SYMBOL_GPL vmlinux 0xaa07c05f kvmppc_do_h_remove +EXPORT_SYMBOL_GPL vmlinux 0xaa1f43f0 dma_buf_kunmap_atomic +EXPORT_SYMBOL_GPL vmlinux 0xaa8e8121 sdio_writew +EXPORT_SYMBOL_GPL vmlinux 0xaa931e82 vring_new_virtqueue +EXPORT_SYMBOL_GPL vmlinux 0xaa9a2e43 blkdev_read_iter +EXPORT_SYMBOL_GPL vmlinux 0xaa9fcb3e md_stop_writes +EXPORT_SYMBOL_GPL vmlinux 0xaaa2274d tps65912_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xaaa918c9 ftrace_dump +EXPORT_SYMBOL_GPL vmlinux 0xaab80c9a devm_regulator_get_exclusive +EXPORT_SYMBOL_GPL vmlinux 0xaad44a15 dma_get_any_slave_channel +EXPORT_SYMBOL_GPL vmlinux 0xab1b50f8 crypto_shash_finup +EXPORT_SYMBOL_GPL vmlinux 0xab1e1090 ata_bmdma_port_ops +EXPORT_SYMBOL_GPL vmlinux 0xab29ad96 cpuidle_disable_device +EXPORT_SYMBOL_GPL vmlinux 0xab300f70 system_trusted_keyring +EXPORT_SYMBOL_GPL vmlinux 0xab3e96e0 sprint_OID +EXPORT_SYMBOL_GPL vmlinux 0xab452e0b devm_regulator_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0xab4c036e mbox_free_channel +EXPORT_SYMBOL_GPL vmlinux 0xab4f5b58 led_sysfs_disable +EXPORT_SYMBOL_GPL vmlinux 0xab567d31 percpu_ref_reinit +EXPORT_SYMBOL_GPL vmlinux 0xab5a5de4 fixed_phy_del +EXPORT_SYMBOL_GPL vmlinux 0xab6babaf pm_qos_request +EXPORT_SYMBOL_GPL vmlinux 0xab727c97 platform_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xabbe1068 dma_buf_detach +EXPORT_SYMBOL_GPL vmlinux 0xabc640f3 list_lru_isolate +EXPORT_SYMBOL_GPL vmlinux 0xabcd6341 fib_table_lookup +EXPORT_SYMBOL_GPL vmlinux 0xabdb623e hvc_poll +EXPORT_SYMBOL_GPL vmlinux 0xabf1d376 inet_csk_compat_getsockopt +EXPORT_SYMBOL_GPL vmlinux 0xac2bed0c ata_sff_lost_interrupt +EXPORT_SYMBOL_GPL vmlinux 0xac2e2a86 gpiod_set_raw_array_value +EXPORT_SYMBOL_GPL vmlinux 0xac7a86ee crypto_register_rngs +EXPORT_SYMBOL_GPL vmlinux 0xac997455 find_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0xace5c0fc usb_bus_list +EXPORT_SYMBOL_GPL vmlinux 0xacf02488 ata_std_sched_eh +EXPORT_SYMBOL_GPL vmlinux 0xacfe997e powerpc_firmware_features +EXPORT_SYMBOL_GPL vmlinux 0xad067ec6 sysfs_remove_link +EXPORT_SYMBOL_GPL vmlinux 0xad13a13d seq_release_net +EXPORT_SYMBOL_GPL vmlinux 0xad395ce3 devm_of_phy_provider_unregister +EXPORT_SYMBOL_GPL vmlinux 0xad8d2717 cpufreq_show_cpus +EXPORT_SYMBOL_GPL vmlinux 0xad8ff96f cpufreq_freq_attr_scaling_boost_freqs +EXPORT_SYMBOL_GPL vmlinux 0xad90d35d virtqueue_enable_cb_prepare +EXPORT_SYMBOL_GPL vmlinux 0xad9b684f sata_sff_hardreset +EXPORT_SYMBOL_GPL vmlinux 0xada40aca sysfs_remove_mount_point +EXPORT_SYMBOL_GPL vmlinux 0xadacf741 rtnl_af_register +EXPORT_SYMBOL_GPL vmlinux 0xadc1943f crypto_alloc_ablkcipher +EXPORT_SYMBOL_GPL vmlinux 0xadc6b795 vring_del_virtqueue +EXPORT_SYMBOL_GPL vmlinux 0xadc785ec kgdb_register_io_module +EXPORT_SYMBOL_GPL vmlinux 0xadd67401 adp5520_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xade7857f for_each_kernel_tracepoint +EXPORT_SYMBOL_GPL vmlinux 0xaded9da1 perf_trace_buf_prepare +EXPORT_SYMBOL_GPL vmlinux 0xadf6aa4d tpm_pcr_read +EXPORT_SYMBOL_GPL vmlinux 0xae12f83a rio_request_outb_dbell +EXPORT_SYMBOL_GPL vmlinux 0xae296fbc crypto_register_rng +EXPORT_SYMBOL_GPL vmlinux 0xae33d834 ata_pio_need_iordy +EXPORT_SYMBOL_GPL vmlinux 0xae447caf crypto_destroy_tfm +EXPORT_SYMBOL_GPL vmlinux 0xae5a7b4a of_reset_control_get +EXPORT_SYMBOL_GPL vmlinux 0xae60f9dd wm8350_block_write +EXPORT_SYMBOL_GPL vmlinux 0xae651655 sdio_release_host +EXPORT_SYMBOL_GPL vmlinux 0xae69b1c1 usermodehelper_read_unlock +EXPORT_SYMBOL_GPL vmlinux 0xae6eaf93 hwpoison_filter_dev_minor +EXPORT_SYMBOL_GPL vmlinux 0xae7c231d mpi_cmp +EXPORT_SYMBOL_GPL vmlinux 0xae7d1ffa devfreq_event_set_event +EXPORT_SYMBOL_GPL vmlinux 0xae81922b of_overlay_destroy_all +EXPORT_SYMBOL_GPL vmlinux 0xae8a66f3 get_pid_task +EXPORT_SYMBOL_GPL vmlinux 0xaeaed2eb netdev_rx_handler_register +EXPORT_SYMBOL_GPL vmlinux 0xaeb6fc7e wm831x_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0xaec45bb6 wakeup_source_remove +EXPORT_SYMBOL_GPL vmlinux 0xaec875a6 gpiod_set_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0xaec9921f hash_page +EXPORT_SYMBOL_GPL vmlinux 0xaf279112 opal_leds_set_ind +EXPORT_SYMBOL_GPL vmlinux 0xaf2e8b0a hrtimer_start_range_ns +EXPORT_SYMBOL_GPL vmlinux 0xaf2f124a raw_seq_next +EXPORT_SYMBOL_GPL vmlinux 0xaf47436b sock_update_netprioidx +EXPORT_SYMBOL_GPL vmlinux 0xaf4a270d ata_pci_device_do_resume +EXPORT_SYMBOL_GPL vmlinux 0xaf652903 replace_page_cache_page +EXPORT_SYMBOL_GPL vmlinux 0xaf6c04ff phy_exit +EXPORT_SYMBOL_GPL vmlinux 0xaf80a2f5 ehci_suspend +EXPORT_SYMBOL_GPL vmlinux 0xafab8daf rio_get_comptag +EXPORT_SYMBOL_GPL vmlinux 0xafbe6c9e kvmppc_hwrng_present +EXPORT_SYMBOL_GPL vmlinux 0xafdca3f1 driver_remove_file +EXPORT_SYMBOL_GPL vmlinux 0xafe2c488 mnt_clone_write +EXPORT_SYMBOL_GPL vmlinux 0xafec605c cpci_hp_unregister_bus +EXPORT_SYMBOL_GPL vmlinux 0xb023a590 srp_release_transport +EXPORT_SYMBOL_GPL vmlinux 0xb033ca05 pci_user_write_config_word +EXPORT_SYMBOL_GPL vmlinux 0xb0400c6b add_timer_on +EXPORT_SYMBOL_GPL vmlinux 0xb04d8faa irq_of_parse_and_map +EXPORT_SYMBOL_GPL vmlinux 0xb081340c wm831x_device_shutdown +EXPORT_SYMBOL_GPL vmlinux 0xb084de95 ping_common_sendmsg +EXPORT_SYMBOL_GPL vmlinux 0xb0883927 skb_segment +EXPORT_SYMBOL_GPL vmlinux 0xb092e203 scsi_target_unblock +EXPORT_SYMBOL_GPL vmlinux 0xb099105e kobject_get_path +EXPORT_SYMBOL_GPL vmlinux 0xb0b85f47 ring_buffer_iter_reset +EXPORT_SYMBOL_GPL vmlinux 0xb0cf24a1 tty_buffer_space_avail +EXPORT_SYMBOL_GPL vmlinux 0xb0d1656c gpio_free_array +EXPORT_SYMBOL_GPL vmlinux 0xb0fffa93 sata_set_spd +EXPORT_SYMBOL_GPL vmlinux 0xb1208e06 stmpe_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xb1290666 __rtnl_af_unregister +EXPORT_SYMBOL_GPL vmlinux 0xb12928e7 bitmap_resize +EXPORT_SYMBOL_GPL vmlinux 0xb140d14c ring_buffer_read +EXPORT_SYMBOL_GPL vmlinux 0xb1425b32 dm_table_add_target_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xb1769665 crypto_ahash_final +EXPORT_SYMBOL_GPL vmlinux 0xb17f828d usb_register_device_driver +EXPORT_SYMBOL_GPL vmlinux 0xb18429eb suspend_device_irqs +EXPORT_SYMBOL_GPL vmlinux 0xb1acbcce rcu_barrier_sched +EXPORT_SYMBOL_GPL vmlinux 0xb1bed25d dpm_resume_start +EXPORT_SYMBOL_GPL vmlinux 0xb1c0c1c2 async_schedule_domain +EXPORT_SYMBOL_GPL vmlinux 0xb1cb55b3 vfs_listxattr +EXPORT_SYMBOL_GPL vmlinux 0xb1e25684 __trace_bputs +EXPORT_SYMBOL_GPL vmlinux 0xb1e36e97 of_platform_populate +EXPORT_SYMBOL_GPL vmlinux 0xb1e93ad9 wait_for_stable_page +EXPORT_SYMBOL_GPL vmlinux 0xb2130e52 gpiod_get_raw_value +EXPORT_SYMBOL_GPL vmlinux 0xb2137593 dma_request_slave_channel_reason +EXPORT_SYMBOL_GPL vmlinux 0xb219ff87 usb_enable_lpm +EXPORT_SYMBOL_GPL vmlinux 0xb2210d64 reset_control_deassert +EXPORT_SYMBOL_GPL vmlinux 0xb2422839 irq_set_chip_and_handler_name +EXPORT_SYMBOL_GPL vmlinux 0xb2530c45 relay_reset +EXPORT_SYMBOL_GPL vmlinux 0xb26a1add elfcorehdr_addr +EXPORT_SYMBOL_GPL vmlinux 0xb26b1125 pwm_get_chip_data +EXPORT_SYMBOL_GPL vmlinux 0xb26e8cb1 dma_buf_kmap +EXPORT_SYMBOL_GPL vmlinux 0xb2a94cba irq_domain_xlate_onetwocell +EXPORT_SYMBOL_GPL vmlinux 0xb2aa154b arizona_of_get_type +EXPORT_SYMBOL_GPL vmlinux 0xb2ceae58 ata_sff_pause +EXPORT_SYMBOL_GPL vmlinux 0xb2e764e8 suspend_valid_only_mem +EXPORT_SYMBOL_GPL vmlinux 0xb2f58c34 cpu_add_dev_attr +EXPORT_SYMBOL_GPL vmlinux 0xb305926d ata_pci_device_suspend +EXPORT_SYMBOL_GPL vmlinux 0xb3136e49 usb_hcd_end_port_resume +EXPORT_SYMBOL_GPL vmlinux 0xb3183ce3 usb_remove_hcd +EXPORT_SYMBOL_GPL vmlinux 0xb31e5c94 rio_route_get_entry +EXPORT_SYMBOL_GPL vmlinux 0xb328cf4e regulator_set_voltage_time +EXPORT_SYMBOL_GPL vmlinux 0xb347bb2c work_busy +EXPORT_SYMBOL_GPL vmlinux 0xb34d3506 bpf_prog_free +EXPORT_SYMBOL_GPL vmlinux 0xb357323e fb_deferred_io_open +EXPORT_SYMBOL_GPL vmlinux 0xb36aed7f unregister_virtio_driver +EXPORT_SYMBOL_GPL vmlinux 0xb37c5481 rio_mport_get_feature +EXPORT_SYMBOL_GPL vmlinux 0xb37fc867 devm_pwm_put +EXPORT_SYMBOL_GPL vmlinux 0xb385c328 regulator_get_current_limit +EXPORT_SYMBOL_GPL vmlinux 0xb38b4af2 pm_generic_freeze_noirq +EXPORT_SYMBOL_GPL vmlinux 0xb3a7ffe9 bus_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xb3c20192 sata_pmp_error_handler +EXPORT_SYMBOL_GPL vmlinux 0xb3cfabb9 tty_find_polling_driver +EXPORT_SYMBOL_GPL vmlinux 0xb3e01989 unix_inq_len +EXPORT_SYMBOL_GPL vmlinux 0xb3e2ad80 of_prop_next_u32 +EXPORT_SYMBOL_GPL vmlinux 0xb3f94104 regmap_init_mmio_clk +EXPORT_SYMBOL_GPL vmlinux 0xb3ff3bfd spi_alloc_master +EXPORT_SYMBOL_GPL vmlinux 0xb415bd6e of_pci_dma_configure +EXPORT_SYMBOL_GPL vmlinux 0xb42d144f pci_sriov_get_totalvfs +EXPORT_SYMBOL_GPL vmlinux 0xb45d36d9 ata_sff_dev_classify +EXPORT_SYMBOL_GPL vmlinux 0xb488588e tb_to_ns +EXPORT_SYMBOL_GPL vmlinux 0xb4a1343d raw_hash_sk +EXPORT_SYMBOL_GPL vmlinux 0xb4b97c90 pvclock_gtod_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xb4ea7cf7 kgdb_connected +EXPORT_SYMBOL_GPL vmlinux 0xb51aaade tty_buffer_unlock_exclusive +EXPORT_SYMBOL_GPL vmlinux 0xb51fbd64 edac_op_state +EXPORT_SYMBOL_GPL vmlinux 0xb53620d1 pci_vpd_find_info_keyword +EXPORT_SYMBOL_GPL vmlinux 0xb54ab801 swiotlb_map_page +EXPORT_SYMBOL_GPL vmlinux 0xb556279a mddev_unlock +EXPORT_SYMBOL_GPL vmlinux 0xb5848bae __iowrite32_copy +EXPORT_SYMBOL_GPL vmlinux 0xb5865e22 sata_scr_read +EXPORT_SYMBOL_GPL vmlinux 0xb58dcfa2 synchronize_sched_expedited +EXPORT_SYMBOL_GPL vmlinux 0xb596d917 sk_clear_memalloc +EXPORT_SYMBOL_GPL vmlinux 0xb5a0e11e lpddr2_jedec_addressing_table +EXPORT_SYMBOL_GPL vmlinux 0xb5aa10af atomic_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0xb5b14572 regulator_disable_deferred +EXPORT_SYMBOL_GPL vmlinux 0xb5c8edf4 btree_init_mempool +EXPORT_SYMBOL_GPL vmlinux 0xb5f17edf perf_register_guest_info_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xb60b5707 of_i8042_aux_irq +EXPORT_SYMBOL_GPL vmlinux 0xb6122b13 devm_regulator_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xb6261484 register_die_notifier +EXPORT_SYMBOL_GPL vmlinux 0xb643c250 xics_wake_cpu +EXPORT_SYMBOL_GPL vmlinux 0xb64c6a90 fuse_direct_io +EXPORT_SYMBOL_GPL vmlinux 0xb6681374 crypto_unregister_shash +EXPORT_SYMBOL_GPL vmlinux 0xb672718f dma_wait_for_async_tx +EXPORT_SYMBOL_GPL vmlinux 0xb6730001 __page_file_index +EXPORT_SYMBOL_GPL vmlinux 0xb6773ea6 register_kretprobes +EXPORT_SYMBOL_GPL vmlinux 0xb6801b9e crypto_unregister_shashes +EXPORT_SYMBOL_GPL vmlinux 0xb6852802 pcibios_scan_phb +EXPORT_SYMBOL_GPL vmlinux 0xb6aeb661 ata_id_c_string +EXPORT_SYMBOL_GPL vmlinux 0xb6ca9b5e kvmppc_h_get_tce +EXPORT_SYMBOL_GPL vmlinux 0xb71c3fc6 inet6_csk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0xb728dd8c cpuidle_unregister +EXPORT_SYMBOL_GPL vmlinux 0xb728ee71 pci_find_next_ht_capability +EXPORT_SYMBOL_GPL vmlinux 0xb73cefd3 inet_ctl_sock_create +EXPORT_SYMBOL_GPL vmlinux 0xb7b3c419 tpm2_startup +EXPORT_SYMBOL_GPL vmlinux 0xb7c6192c ata_sff_error_handler +EXPORT_SYMBOL_GPL vmlinux 0xb7d8cd40 inet_csk_clone_lock +EXPORT_SYMBOL_GPL vmlinux 0xb7f77027 rtc_tm_to_ktime +EXPORT_SYMBOL_GPL vmlinux 0xb82d7097 skb_to_sgvec +EXPORT_SYMBOL_GPL vmlinux 0xb853c15d serial8250_rx_chars +EXPORT_SYMBOL_GPL vmlinux 0xb85e130e extcon_get_edev_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0xb86f679b attribute_container_register +EXPORT_SYMBOL_GPL vmlinux 0xb8815a3f of_get_phy_mode +EXPORT_SYMBOL_GPL vmlinux 0xb889c68d usb_hcd_unlink_urb_from_ep +EXPORT_SYMBOL_GPL vmlinux 0xb8944d49 rt_mutex_lock +EXPORT_SYMBOL_GPL vmlinux 0xb8b043ba alloc_page_buffers +EXPORT_SYMBOL_GPL vmlinux 0xb8cd3a7f nf_logger_put +EXPORT_SYMBOL_GPL vmlinux 0xb8de9469 __pm_relax +EXPORT_SYMBOL_GPL vmlinux 0xb8e3e0ad mbox_request_channel +EXPORT_SYMBOL_GPL vmlinux 0xb8eae018 devfreq_event_get_event +EXPORT_SYMBOL_GPL vmlinux 0xb8f416aa public_key_subtype +EXPORT_SYMBOL_GPL vmlinux 0xb8f975c6 pwm_set_polarity +EXPORT_SYMBOL_GPL vmlinux 0xb903674c scatterwalk_map_and_copy +EXPORT_SYMBOL_GPL vmlinux 0xb908ed96 alarm_start +EXPORT_SYMBOL_GPL vmlinux 0xb91b1dfb regulator_enable +EXPORT_SYMBOL_GPL vmlinux 0xb925a530 dev_pm_domain_detach +EXPORT_SYMBOL_GPL vmlinux 0xb93dffa6 tpm2_gen_interrupt +EXPORT_SYMBOL_GPL vmlinux 0xb956eb51 __gpiod_get_index_optional +EXPORT_SYMBOL_GPL vmlinux 0xb96c2f67 da903x_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0xb9a7aff1 devm_add_action +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 0xb9dfc3d8 rio_unregister_scan +EXPORT_SYMBOL_GPL vmlinux 0xba158769 rtas_cancel_event_scan +EXPORT_SYMBOL_GPL vmlinux 0xba288203 rio_route_add_entry +EXPORT_SYMBOL_GPL vmlinux 0xba2b7f64 cpufreq_generic_get +EXPORT_SYMBOL_GPL vmlinux 0xba35b1fe device_create_bin_file +EXPORT_SYMBOL_GPL vmlinux 0xba399e1a pci_disable_pasid +EXPORT_SYMBOL_GPL vmlinux 0xba49e96f ata_eh_thaw_port +EXPORT_SYMBOL_GPL vmlinux 0xba62010a usb_hcd_resume_root_hub +EXPORT_SYMBOL_GPL vmlinux 0xba9f65b4 crypto_register_shashes +EXPORT_SYMBOL_GPL vmlinux 0xbab97fda od_register_powersave_bias_handler +EXPORT_SYMBOL_GPL vmlinux 0xbab9a9f0 maxim_charger_currents +EXPORT_SYMBOL_GPL vmlinux 0xbaeeb557 class_create_file_ns +EXPORT_SYMBOL_GPL vmlinux 0xbb038ce4 perf_unregister_guest_info_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xbb0ab47b debug_locks +EXPORT_SYMBOL_GPL vmlinux 0xbb0ed26f crypto_register_instance +EXPORT_SYMBOL_GPL vmlinux 0xbb0efd85 tpm_do_selftest +EXPORT_SYMBOL_GPL vmlinux 0xbb5e7335 pwm_config +EXPORT_SYMBOL_GPL vmlinux 0xbb6f025a asymmetric_key_generate_id +EXPORT_SYMBOL_GPL vmlinux 0xbb75de8f regmap_get_val_bytes +EXPORT_SYMBOL_GPL vmlinux 0xbb77c230 sdio_set_block_size +EXPORT_SYMBOL_GPL vmlinux 0xbb8bf994 register_pernet_device +EXPORT_SYMBOL_GPL vmlinux 0xbb959859 firmware_kobj +EXPORT_SYMBOL_GPL vmlinux 0xbba20392 sata_link_resume +EXPORT_SYMBOL_GPL vmlinux 0xbba419c6 syscon_regmap_lookup_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0xbbd7dc4c dm_get_queue_limits +EXPORT_SYMBOL_GPL vmlinux 0xbbe01fe6 dma_buf_vunmap +EXPORT_SYMBOL_GPL vmlinux 0xbbefccf7 pci_user_read_config_dword +EXPORT_SYMBOL_GPL vmlinux 0xbbf51783 br_fdb_test_addr_hook +EXPORT_SYMBOL_GPL vmlinux 0xbbfb85b1 debugfs_create_devm_seqfile +EXPORT_SYMBOL_GPL vmlinux 0xbbfc2f1d transport_class_register +EXPORT_SYMBOL_GPL vmlinux 0xbc13a651 dio_end_io +EXPORT_SYMBOL_GPL vmlinux 0xbc1481d8 ehci_adjust_port_wakeup_flags +EXPORT_SYMBOL_GPL vmlinux 0xbc283ba0 crypto_hash_walk_first +EXPORT_SYMBOL_GPL vmlinux 0xbc2e2cb6 iptunnel_pull_header +EXPORT_SYMBOL_GPL vmlinux 0xbc32bdc1 device_del +EXPORT_SYMBOL_GPL vmlinux 0xbc459e4a blocking_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xbc47fd49 __tracepoint_detach_device_from_domain +EXPORT_SYMBOL_GPL vmlinux 0xbc581d36 bd_unlink_disk_holder +EXPORT_SYMBOL_GPL vmlinux 0xbc64bd02 kick_process +EXPORT_SYMBOL_GPL vmlinux 0xbc710b76 rio_release_outb_dbell +EXPORT_SYMBOL_GPL vmlinux 0xbc8888ea dev_attr_em_message_type +EXPORT_SYMBOL_GPL vmlinux 0xbc89f475 copro_flush_all_slbs +EXPORT_SYMBOL_GPL vmlinux 0xbcac6160 pm_qos_remove_notifier +EXPORT_SYMBOL_GPL vmlinux 0xbcbebcd1 blk_mq_free_request +EXPORT_SYMBOL_GPL vmlinux 0xbcc6036d exportfs_decode_fh +EXPORT_SYMBOL_GPL vmlinux 0xbccfd4d8 register_oldmem_pfn_is_ram +EXPORT_SYMBOL_GPL vmlinux 0xbcd4d5df tps6586x_update +EXPORT_SYMBOL_GPL vmlinux 0xbcdc40fb ping_proc_register +EXPORT_SYMBOL_GPL vmlinux 0xbcdd5b99 iommu_group_set_name +EXPORT_SYMBOL_GPL vmlinux 0xbcf232bc single_release_net +EXPORT_SYMBOL_GPL vmlinux 0xbd1fbc35 fuse_dev_release +EXPORT_SYMBOL_GPL vmlinux 0xbd3c9634 disk_get_part +EXPORT_SYMBOL_GPL vmlinux 0xbd3fe1e3 disable_hardirq +EXPORT_SYMBOL_GPL vmlinux 0xbd4a6c25 extcon_dev_unregister +EXPORT_SYMBOL_GPL vmlinux 0xbd4a7a58 rio_get_device +EXPORT_SYMBOL_GPL vmlinux 0xbd5cb8b9 ring_buffer_resize +EXPORT_SYMBOL_GPL vmlinux 0xbd65cfa2 get_user_pages_fast +EXPORT_SYMBOL_GPL vmlinux 0xbd671048 __alloc_percpu_gfp +EXPORT_SYMBOL_GPL vmlinux 0xbd6a5699 xhci_run +EXPORT_SYMBOL_GPL vmlinux 0xbd741195 of_dma_controller_free +EXPORT_SYMBOL_GPL vmlinux 0xbd862fbf ata_do_dev_read_id +EXPORT_SYMBOL_GPL vmlinux 0xbd9b2204 nd_blk_region_provider_data +EXPORT_SYMBOL_GPL vmlinux 0xbdc43f7d cpuidle_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0xbdd295f0 trace_vprintk +EXPORT_SYMBOL_GPL vmlinux 0xbdd2f42a rcu_bh_force_quiescent_state +EXPORT_SYMBOL_GPL vmlinux 0xbdfae124 fuse_dev_free +EXPORT_SYMBOL_GPL vmlinux 0xbe119031 ata_bmdma_port_start +EXPORT_SYMBOL_GPL vmlinux 0xbe183951 gpiochip_unlock_as_irq +EXPORT_SYMBOL_GPL vmlinux 0xbe1887e4 ata_unpack_xfermask +EXPORT_SYMBOL_GPL vmlinux 0xbe189894 clone_private_mount +EXPORT_SYMBOL_GPL vmlinux 0xbe1e7e29 of_get_display_timing +EXPORT_SYMBOL_GPL vmlinux 0xbe21c6f9 fuse_conn_init +EXPORT_SYMBOL_GPL vmlinux 0xbe3a60e0 fixed_phy_register +EXPORT_SYMBOL_GPL vmlinux 0xbe41be38 usb_autopm_get_interface_no_resume +EXPORT_SYMBOL_GPL vmlinux 0xbe471cdf opal_rtc_read +EXPORT_SYMBOL_GPL vmlinux 0xbe5441c9 eeh_add_device_tree_early +EXPORT_SYMBOL_GPL vmlinux 0xbe687e88 wake_up_all_idle_cpus +EXPORT_SYMBOL_GPL vmlinux 0xbe807992 usb_register_dev +EXPORT_SYMBOL_GPL vmlinux 0xbe89f30c task_cls_state +EXPORT_SYMBOL_GPL vmlinux 0xbe96dfd8 of_reconfig_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0xbe9a7316 relay_close +EXPORT_SYMBOL_GPL vmlinux 0xbea5ff1e static_key_initialized +EXPORT_SYMBOL_GPL vmlinux 0xbeae6c45 n_tty_inherit_ops +EXPORT_SYMBOL_GPL vmlinux 0xbebe0fd1 devres_find +EXPORT_SYMBOL_GPL vmlinux 0xbebeb95b pci_try_reset_slot +EXPORT_SYMBOL_GPL vmlinux 0xbec8d1c8 analyse_instr +EXPORT_SYMBOL_GPL vmlinux 0xbed43bf3 ata_bmdma_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0xbee21107 dm_internal_suspend_noflush +EXPORT_SYMBOL_GPL vmlinux 0xbee93d84 setup_irq +EXPORT_SYMBOL_GPL vmlinux 0xbefbb84c rtc_alarm_irq_enable +EXPORT_SYMBOL_GPL vmlinux 0xbf041102 register_vt_notifier +EXPORT_SYMBOL_GPL vmlinux 0xbf10b4d3 __irq_set_handler +EXPORT_SYMBOL_GPL vmlinux 0xbf1cc04b tty_termios_encode_baud_rate +EXPORT_SYMBOL_GPL vmlinux 0xbf272822 fixed_phy_set_link_update +EXPORT_SYMBOL_GPL vmlinux 0xbf50c30a dm_get_rq_mapinfo +EXPORT_SYMBOL_GPL vmlinux 0xbf5d8555 relay_subbufs_consumed +EXPORT_SYMBOL_GPL vmlinux 0xbfb1db41 ptp_classify_raw +EXPORT_SYMBOL_GPL vmlinux 0xbfbc5434 pciserial_resume_ports +EXPORT_SYMBOL_GPL vmlinux 0xbfca1918 skb_morph +EXPORT_SYMBOL_GPL vmlinux 0xbfe5616d tick_broadcast_oneshot_control +EXPORT_SYMBOL_GPL vmlinux 0xbffde8ec compat_alloc_user_space +EXPORT_SYMBOL_GPL vmlinux 0xc007509d ata_sas_port_suspend +EXPORT_SYMBOL_GPL vmlinux 0xc01abe50 skb_append_pagefrags +EXPORT_SYMBOL_GPL vmlinux 0xc028464c phy_destroy +EXPORT_SYMBOL_GPL vmlinux 0xc02bec3c usb_unlink_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0xc0576d2e blk_unprep_request +EXPORT_SYMBOL_GPL vmlinux 0xc0614c40 rio_mport_class +EXPORT_SYMBOL_GPL vmlinux 0xc065a455 cpu_core_index_of_thread +EXPORT_SYMBOL_GPL vmlinux 0xc08647ff ring_buffer_bytes_cpu +EXPORT_SYMBOL_GPL vmlinux 0xc0a96e14 rcu_gp_is_expedited +EXPORT_SYMBOL_GPL vmlinux 0xc0aaea5c uart_set_options +EXPORT_SYMBOL_GPL vmlinux 0xc0c4de2d ipv6_opt_accepted +EXPORT_SYMBOL_GPL vmlinux 0xc0d26387 kmsg_dump_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc0df8865 timerqueue_add +EXPORT_SYMBOL_GPL vmlinux 0xc0e0cad9 crypto_init_spawn2 +EXPORT_SYMBOL_GPL vmlinux 0xc0f4348c rdev_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0xc10ba9b4 of_get_fb_videomode +EXPORT_SYMBOL_GPL vmlinux 0xc1103204 i2c_new_dummy +EXPORT_SYMBOL_GPL vmlinux 0xc12604ce tcp_fetch_timewait_stamp +EXPORT_SYMBOL_GPL vmlinux 0xc172e43c ata_common_sdev_attrs +EXPORT_SYMBOL_GPL vmlinux 0xc17515d7 usb_hcds_loaded +EXPORT_SYMBOL_GPL vmlinux 0xc192d201 usb_kill_urb +EXPORT_SYMBOL_GPL vmlinux 0xc1a8da9e tps65912_reg_write +EXPORT_SYMBOL_GPL vmlinux 0xc1b04588 usb_hcd_platform_shutdown +EXPORT_SYMBOL_GPL vmlinux 0xc1b68f93 trace_seq_to_user +EXPORT_SYMBOL_GPL vmlinux 0xc1cc8c15 posix_clock_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc1dece3e wakeup_source_add +EXPORT_SYMBOL_GPL vmlinux 0xc202380c shash_ahash_finup +EXPORT_SYMBOL_GPL vmlinux 0xc20f8665 phy_pm_runtime_put_sync +EXPORT_SYMBOL_GPL vmlinux 0xc22a3091 vm_unmap_aliases +EXPORT_SYMBOL_GPL vmlinux 0xc22b490d crypto_drop_spawn +EXPORT_SYMBOL_GPL vmlinux 0xc2354b88 of_phy_provider_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc23daa3c pci_intx_mask_supported +EXPORT_SYMBOL_GPL vmlinux 0xc24dfe6d iommu_del_device +EXPORT_SYMBOL_GPL vmlinux 0xc25627fc ata_do_eh +EXPORT_SYMBOL_GPL vmlinux 0xc260a4b0 find_symbol +EXPORT_SYMBOL_GPL vmlinux 0xc280fb46 kdb_register +EXPORT_SYMBOL_GPL vmlinux 0xc29478d3 ping_get_port +EXPORT_SYMBOL_GPL vmlinux 0xc2adff0a dax_fault +EXPORT_SYMBOL_GPL vmlinux 0xc2b439b5 tty_prepare_flip_string +EXPORT_SYMBOL_GPL vmlinux 0xc2c05c0e iommu_take_ownership +EXPORT_SYMBOL_GPL vmlinux 0xc2c25342 usb_poison_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0xc2eece5d find_extend_vma +EXPORT_SYMBOL_GPL vmlinux 0xc2f80d9e __mmc_switch +EXPORT_SYMBOL_GPL vmlinux 0xc304eaee rtc_class_close +EXPORT_SYMBOL_GPL vmlinux 0xc311c679 tracepoint_probe_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc314dc48 usb_enable_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0xc321dde2 inet_hash_connect +EXPORT_SYMBOL_GPL vmlinux 0xc33b3795 inet6_csk_reqsk_queue_hash_add +EXPORT_SYMBOL_GPL vmlinux 0xc341ae6d zs_map_object +EXPORT_SYMBOL_GPL vmlinux 0xc3482fc6 sdio_readb +EXPORT_SYMBOL_GPL vmlinux 0xc357923c pm_qos_update_request +EXPORT_SYMBOL_GPL vmlinux 0xc37226a5 tpm_pcr_extend +EXPORT_SYMBOL_GPL vmlinux 0xc39d9ae0 tps80031_ext_power_req_config +EXPORT_SYMBOL_GPL vmlinux 0xc3bb9cd8 regcache_cache_only +EXPORT_SYMBOL_GPL vmlinux 0xc3d99349 ata_scsi_port_error_handler +EXPORT_SYMBOL_GPL vmlinux 0xc3dcca63 rio_release_inb_dbell +EXPORT_SYMBOL_GPL vmlinux 0xc3e49f70 pcie_port_bus_type +EXPORT_SYMBOL_GPL vmlinux 0xc3e6abcd tc3589x_block_read +EXPORT_SYMBOL_GPL vmlinux 0xc3ef0b34 __blocking_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xc4096213 of_pci_find_msi_chip_by_node +EXPORT_SYMBOL_GPL vmlinux 0xc40f91ad rio_mport_send_doorbell +EXPORT_SYMBOL_GPL vmlinux 0xc428068d sata_deb_timing_long +EXPORT_SYMBOL_GPL vmlinux 0xc454fc7b twl_get_type +EXPORT_SYMBOL_GPL vmlinux 0xc45e1ab9 serial8250_release_dma +EXPORT_SYMBOL_GPL vmlinux 0xc471c67a twl4030_audio_disable_resource +EXPORT_SYMBOL_GPL vmlinux 0xc4852baf pci_rescan_bus +EXPORT_SYMBOL_GPL vmlinux 0xc4869bfc pm_generic_freeze_late +EXPORT_SYMBOL_GPL vmlinux 0xc48b7ccf ata_mode_string +EXPORT_SYMBOL_GPL vmlinux 0xc48ca393 of_irq_to_resource +EXPORT_SYMBOL_GPL vmlinux 0xc4a16a61 unregister_jprobe +EXPORT_SYMBOL_GPL vmlinux 0xc4e493ef mddev_suspend +EXPORT_SYMBOL_GPL vmlinux 0xc4ec5e95 tty_port_register_device_attr +EXPORT_SYMBOL_GPL vmlinux 0xc4ef6ef4 blocking_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc51ee234 regulator_get_hardware_vsel_register +EXPORT_SYMBOL_GPL vmlinux 0xc53d1fc9 regulator_bulk_enable +EXPORT_SYMBOL_GPL vmlinux 0xc53fb5d0 perf_event_enable +EXPORT_SYMBOL_GPL vmlinux 0xc542933a timecounter_read +EXPORT_SYMBOL_GPL vmlinux 0xc553df4a ata_do_set_mode +EXPORT_SYMBOL_GPL vmlinux 0xc56106c3 __gpiod_get +EXPORT_SYMBOL_GPL vmlinux 0xc57512b1 gpiod_direction_output_raw +EXPORT_SYMBOL_GPL vmlinux 0xc575c737 debug_locks_off +EXPORT_SYMBOL_GPL vmlinux 0xc58f2c85 regmap_check_range_table +EXPORT_SYMBOL_GPL vmlinux 0xc5a1c470 fwnode_property_read_u8_array +EXPORT_SYMBOL_GPL vmlinux 0xc5a2c19f idr_alloc +EXPORT_SYMBOL_GPL vmlinux 0xc5e8fe0a dax_truncate_page +EXPORT_SYMBOL_GPL vmlinux 0xc606cd3c boot_cpuid +EXPORT_SYMBOL_GPL vmlinux 0xc617f82c unregister_oom_notifier +EXPORT_SYMBOL_GPL vmlinux 0xc63b8cf3 pci_dev_run_wake +EXPORT_SYMBOL_GPL vmlinux 0xc63d847d ktime_get_mono_fast_ns +EXPORT_SYMBOL_GPL vmlinux 0xc65c913b debugfs_create_symlink +EXPORT_SYMBOL_GPL vmlinux 0xc65d3eed ring_buffer_entries_cpu +EXPORT_SYMBOL_GPL vmlinux 0xc66b77b1 iommu_group_set_iommudata +EXPORT_SYMBOL_GPL vmlinux 0xc679741d cleanup_srcu_struct +EXPORT_SYMBOL_GPL vmlinux 0xc67ee220 device_wakeup_enable +EXPORT_SYMBOL_GPL vmlinux 0xc68aa252 __atomic_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xc68b4d65 kobject_rename +EXPORT_SYMBOL_GPL vmlinux 0xc68fe77b wm8350_block_read +EXPORT_SYMBOL_GPL vmlinux 0xc69b7ee5 zs_destroy_pool +EXPORT_SYMBOL_GPL vmlinux 0xc6aca3b4 device_create +EXPORT_SYMBOL_GPL vmlinux 0xc6b487b5 rtnl_link_register +EXPORT_SYMBOL_GPL vmlinux 0xc6b52534 wm8350_device_init +EXPORT_SYMBOL_GPL vmlinux 0xc6c4b27b tps6586x_get_version +EXPORT_SYMBOL_GPL vmlinux 0xc6c69a8f opal_flash_write +EXPORT_SYMBOL_GPL vmlinux 0xc6d8e9fd power_supply_register_no_ws +EXPORT_SYMBOL_GPL vmlinux 0xc6e297ce devres_release_group +EXPORT_SYMBOL_GPL vmlinux 0xc6f668f6 of_alias_get_id +EXPORT_SYMBOL_GPL vmlinux 0xc72e1233 __trace_bprintk +EXPORT_SYMBOL_GPL vmlinux 0xc7391363 usb_alloc_urb +EXPORT_SYMBOL_GPL vmlinux 0xc74abc4b crypto_alg_lookup +EXPORT_SYMBOL_GPL vmlinux 0xc757bdd3 dev_pm_qos_expose_latency_limit +EXPORT_SYMBOL_GPL vmlinux 0xc7600539 serial8250_modem_status +EXPORT_SYMBOL_GPL vmlinux 0xc789a4c4 ata_std_error_handler +EXPORT_SYMBOL_GPL vmlinux 0xc78ba6a2 device_property_read_u8_array +EXPORT_SYMBOL_GPL vmlinux 0xc7a0ccab agp_remove_bridge +EXPORT_SYMBOL_GPL vmlinux 0xc7a1840e llist_add_batch +EXPORT_SYMBOL_GPL vmlinux 0xc7afdeb4 dev_pm_put_subsys_data +EXPORT_SYMBOL_GPL vmlinux 0xc7b4cbc8 netlink_has_listeners +EXPORT_SYMBOL_GPL vmlinux 0xc7c6391c mpi_set_buffer +EXPORT_SYMBOL_GPL vmlinux 0xc7d09cf5 PageHuge +EXPORT_SYMBOL_GPL vmlinux 0xc7def777 ata_sff_postreset +EXPORT_SYMBOL_GPL vmlinux 0xc7e39bca ring_buffer_dropped_events_cpu +EXPORT_SYMBOL_GPL vmlinux 0xc7f7ccbf shmem_get_seals +EXPORT_SYMBOL_GPL vmlinux 0xc842ef7e perf_event_create_kernel_counter +EXPORT_SYMBOL_GPL vmlinux 0xc84ee95b aead_geniv_exit +EXPORT_SYMBOL_GPL vmlinux 0xc8645447 rio_dev_get +EXPORT_SYMBOL_GPL vmlinux 0xc87c1f84 ktime_get +EXPORT_SYMBOL_GPL vmlinux 0xc88ffbe4 devm_kstrdup +EXPORT_SYMBOL_GPL vmlinux 0xc8add232 ring_buffer_record_disable +EXPORT_SYMBOL_GPL vmlinux 0xc8de802f cn_netlink_send +EXPORT_SYMBOL_GPL vmlinux 0xc91277a1 kgdb_schedule_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0xc916ead4 iommu_tce_clear_param_check +EXPORT_SYMBOL_GPL vmlinux 0xc917bc06 pwmchip_add_with_polarity +EXPORT_SYMBOL_GPL vmlinux 0xc92cd954 ata_ehi_clear_desc +EXPORT_SYMBOL_GPL vmlinux 0xc93d0045 dev_pm_qos_add_ancestor_request +EXPORT_SYMBOL_GPL vmlinux 0xc93f4493 iommu_attach_group +EXPORT_SYMBOL_GPL vmlinux 0xc955b8f4 ata_dev_set_feature +EXPORT_SYMBOL_GPL vmlinux 0xc9561772 fb_destroy_modelist +EXPORT_SYMBOL_GPL vmlinux 0xc9641b48 visitor32 +EXPORT_SYMBOL_GPL vmlinux 0xc979ccbc inet_csk_get_port +EXPORT_SYMBOL_GPL vmlinux 0xc97d1140 cpufreq_cooling_get_level +EXPORT_SYMBOL_GPL vmlinux 0xc9ab983b debugfs_create_dir +EXPORT_SYMBOL_GPL vmlinux 0xc9ad1e8b i2c_new_probed_device +EXPORT_SYMBOL_GPL vmlinux 0xc9aeafa9 ata_sff_dma_pause +EXPORT_SYMBOL_GPL vmlinux 0xc9b9e88a list_lru_count_one +EXPORT_SYMBOL_GPL vmlinux 0xc9c08295 call_filter_check_discard +EXPORT_SYMBOL_GPL vmlinux 0xc9ec4e21 free_percpu +EXPORT_SYMBOL_GPL vmlinux 0xc9ef7ea8 pci_disable_sriov +EXPORT_SYMBOL_GPL vmlinux 0xca116378 crypto_unregister_ahash +EXPORT_SYMBOL_GPL vmlinux 0xca1230e1 adp5520_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0xca4f767c usb_enable_intel_xhci_ports +EXPORT_SYMBOL_GPL vmlinux 0xca73e4cb pcibios_map_io_space +EXPORT_SYMBOL_GPL vmlinux 0xca7425d2 bitmap_load +EXPORT_SYMBOL_GPL vmlinux 0xca79c7a7 usb_get_urb +EXPORT_SYMBOL_GPL vmlinux 0xca7d8764 kthread_freezable_should_stop +EXPORT_SYMBOL_GPL vmlinux 0xca826134 fsstack_copy_inode_size +EXPORT_SYMBOL_GPL vmlinux 0xca853f5a sdio_writel +EXPORT_SYMBOL_GPL vmlinux 0xcabe04de cpuidle_resume_and_unlock +EXPORT_SYMBOL_GPL vmlinux 0xcac7904e shash_free_instance +EXPORT_SYMBOL_GPL vmlinux 0xcaf140d9 eeh_dev_check_failure +EXPORT_SYMBOL_GPL vmlinux 0xcaffec92 ping_recvmsg +EXPORT_SYMBOL_GPL vmlinux 0xcb15eee9 sdhci_pci_get_data +EXPORT_SYMBOL_GPL vmlinux 0xcb3e69e6 usb_get_status +EXPORT_SYMBOL_GPL vmlinux 0xcb40a7f8 swiotlb_tbl_unmap_single +EXPORT_SYMBOL_GPL vmlinux 0xcb469d2b ddebug_add_module +EXPORT_SYMBOL_GPL vmlinux 0xcb54ad4d of_console_check +EXPORT_SYMBOL_GPL vmlinux 0xcb619d08 pci_destroy_slot +EXPORT_SYMBOL_GPL vmlinux 0xcbc626fe balloon_page_dequeue +EXPORT_SYMBOL_GPL vmlinux 0xcbe56bc2 zs_get_total_pages +EXPORT_SYMBOL_GPL vmlinux 0xcbee20b2 get_cpu_iowait_time_us +EXPORT_SYMBOL_GPL vmlinux 0xcc0f1009 power_supply_notifier +EXPORT_SYMBOL_GPL vmlinux 0xcc2ba30d list_lru_del +EXPORT_SYMBOL_GPL vmlinux 0xcc2e9989 dev_forward_skb +EXPORT_SYMBOL_GPL vmlinux 0xcc56b47d da9052_enable_irq +EXPORT_SYMBOL_GPL vmlinux 0xcc62066c reservation_object_wait_timeout_rcu +EXPORT_SYMBOL_GPL vmlinux 0xcc85fcb6 async_schedule +EXPORT_SYMBOL_GPL vmlinux 0xccabbb93 of_get_display_timings +EXPORT_SYMBOL_GPL vmlinux 0xcccfb2fa sata_deb_timing_hotplug +EXPORT_SYMBOL_GPL vmlinux 0xccd07327 gpiod_put_array +EXPORT_SYMBOL_GPL vmlinux 0xcd129848 fb_deferred_io_cleanup +EXPORT_SYMBOL_GPL vmlinux 0xcd1d0762 kvm_release_hpt +EXPORT_SYMBOL_GPL vmlinux 0xcd25ea58 usb_hcd_giveback_urb +EXPORT_SYMBOL_GPL vmlinux 0xcd25f96c regmap_update_bits_check +EXPORT_SYMBOL_GPL vmlinux 0xcd513509 pm_runtime_force_suspend +EXPORT_SYMBOL_GPL vmlinux 0xcd5e1f04 rtc_read_time +EXPORT_SYMBOL_GPL vmlinux 0xcd91b127 system_highpri_wq +EXPORT_SYMBOL_GPL vmlinux 0xcd974f00 rcu_all_qs +EXPORT_SYMBOL_GPL vmlinux 0xcda24705 locks_alloc_lock +EXPORT_SYMBOL_GPL vmlinux 0xcdb6adcc ras_userspace_consumers +EXPORT_SYMBOL_GPL vmlinux 0xcdc61c76 get_hwpoison_page +EXPORT_SYMBOL_GPL vmlinux 0xcdca3691 nr_irqs +EXPORT_SYMBOL_GPL vmlinux 0xcdf11e6b bitmap_copy_from_slot +EXPORT_SYMBOL_GPL vmlinux 0xcdf41888 regmap_init_i2c +EXPORT_SYMBOL_GPL vmlinux 0xce01c5de perf_tp_event +EXPORT_SYMBOL_GPL vmlinux 0xce24a48b crypto_aead_reqsize +EXPORT_SYMBOL_GPL vmlinux 0xce3bd7b1 dma_buf_attach +EXPORT_SYMBOL_GPL vmlinux 0xce49e3f8 wakeup_source_register +EXPORT_SYMBOL_GPL vmlinux 0xce69efca rhashtable_init +EXPORT_SYMBOL_GPL vmlinux 0xce6a9d9a trace_current_buffer_discard_commit +EXPORT_SYMBOL_GPL vmlinux 0xce6db656 rcu_is_watching +EXPORT_SYMBOL_GPL vmlinux 0xce8e0126 gpiochip_is_requested +EXPORT_SYMBOL_GPL vmlinux 0xcea138ce balloon_page_enqueue +EXPORT_SYMBOL_GPL vmlinux 0xceb1f126 mpi_read_raw_data +EXPORT_SYMBOL_GPL vmlinux 0xcecf2cd0 ata_msleep +EXPORT_SYMBOL_GPL vmlinux 0xcee1641c kgdb_unregister_nmi_console +EXPORT_SYMBOL_GPL vmlinux 0xcee69962 scsi_queue_work +EXPORT_SYMBOL_GPL vmlinux 0xcefb2947 thermal_notify_framework +EXPORT_SYMBOL_GPL vmlinux 0xcf010485 device_store_int +EXPORT_SYMBOL_GPL vmlinux 0xcf16b4d7 attribute_container_classdev_to_container +EXPORT_SYMBOL_GPL vmlinux 0xcf3135a7 _submit_bh +EXPORT_SYMBOL_GPL vmlinux 0xcf417bb6 sdio_claim_host +EXPORT_SYMBOL_GPL vmlinux 0xcf4ead7f netlink_remove_tap +EXPORT_SYMBOL_GPL vmlinux 0xcf54ea93 async_unregister_domain +EXPORT_SYMBOL_GPL vmlinux 0xcf62efd7 irq_create_of_mapping +EXPORT_SYMBOL_GPL vmlinux 0xcf62f540 fwnode_property_read_string_array +EXPORT_SYMBOL_GPL vmlinux 0xcf71dd37 sdio_memcpy_toio +EXPORT_SYMBOL_GPL vmlinux 0xcf8fecca gen_pool_get +EXPORT_SYMBOL_GPL vmlinux 0xcf9bb831 inet_getpeer +EXPORT_SYMBOL_GPL vmlinux 0xcfa39eca __tracepoint_rpm_suspend +EXPORT_SYMBOL_GPL vmlinux 0xcfaefad8 sdev_evt_send +EXPORT_SYMBOL_GPL vmlinux 0xcfb5871c irq_work_queue +EXPORT_SYMBOL_GPL vmlinux 0xcfc68341 synchronize_rcu_bh +EXPORT_SYMBOL_GPL vmlinux 0xcfd28c69 usb_phy_generic_unregister +EXPORT_SYMBOL_GPL vmlinux 0xcff1035d bio_alloc_mddev +EXPORT_SYMBOL_GPL vmlinux 0xcffa945d extcon_get_cable_state_ +EXPORT_SYMBOL_GPL vmlinux 0xd01afd3f opal_tpo_read +EXPORT_SYMBOL_GPL vmlinux 0xd01c8984 sk_set_memalloc +EXPORT_SYMBOL_GPL vmlinux 0xd03238f9 usb_queue_reset_device +EXPORT_SYMBOL_GPL vmlinux 0xd03c7700 secure_ipv4_port_ephemeral +EXPORT_SYMBOL_GPL vmlinux 0xd0454565 fuse_file_poll +EXPORT_SYMBOL_GPL vmlinux 0xd0461675 ata_bmdma_qc_issue +EXPORT_SYMBOL_GPL vmlinux 0xd06524ba raw_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd067d3c5 system_freezable_power_efficient_wq +EXPORT_SYMBOL_GPL vmlinux 0xd07741ba of_property_read_u64 +EXPORT_SYMBOL_GPL vmlinux 0xd07e232a bpf_prog_destroy +EXPORT_SYMBOL_GPL vmlinux 0xd07e935a blkcg_policy_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd0c05159 emergency_restart +EXPORT_SYMBOL_GPL vmlinux 0xd0c08330 max8997_update_reg +EXPORT_SYMBOL_GPL vmlinux 0xd0e12a03 eeh_dev_open +EXPORT_SYMBOL_GPL vmlinux 0xd1039095 pci_sriov_set_totalvfs +EXPORT_SYMBOL_GPL vmlinux 0xd10f5d0f sdio_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0xd143c235 device_set_wakeup_capable +EXPORT_SYMBOL_GPL vmlinux 0xd152875d regmap_async_complete_cb +EXPORT_SYMBOL_GPL vmlinux 0xd161b9aa of_irq_get +EXPORT_SYMBOL_GPL vmlinux 0xd16712f3 crypto_check_attr_type +EXPORT_SYMBOL_GPL vmlinux 0xd19794f1 usb_alloc_dev +EXPORT_SYMBOL_GPL vmlinux 0xd1b6d629 usb_unlocked_enable_lpm +EXPORT_SYMBOL_GPL vmlinux 0xd1f2eee2 nf_logger_find_get +EXPORT_SYMBOL_GPL vmlinux 0xd1f88873 __put_net +EXPORT_SYMBOL_GPL vmlinux 0xd206676f xhci_gen_setup +EXPORT_SYMBOL_GPL vmlinux 0xd20bf6ba dcookie_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd20d5ec2 sata_scr_write +EXPORT_SYMBOL_GPL vmlinux 0xd217e9e6 trace_set_clr_event +EXPORT_SYMBOL_GPL vmlinux 0xd235a708 regulator_get_linear_step +EXPORT_SYMBOL_GPL vmlinux 0xd273b1b1 __round_jiffies_up_relative +EXPORT_SYMBOL_GPL vmlinux 0xd28853f8 pci_cfg_access_trylock +EXPORT_SYMBOL_GPL vmlinux 0xd296eaa4 nf_ipv6_ops +EXPORT_SYMBOL_GPL vmlinux 0xd2edf4b7 ata_get_cmd_descript +EXPORT_SYMBOL_GPL vmlinux 0xd32948a0 fat_sync_inode +EXPORT_SYMBOL_GPL vmlinux 0xd351df2c bus_register +EXPORT_SYMBOL_GPL vmlinux 0xd3584fa0 spi_master_resume +EXPORT_SYMBOL_GPL vmlinux 0xd367d8a0 sysfs_add_file_to_group +EXPORT_SYMBOL_GPL vmlinux 0xd36e2bf0 regcache_cache_bypass +EXPORT_SYMBOL_GPL vmlinux 0xd3812488 unix_peer_get +EXPORT_SYMBOL_GPL vmlinux 0xd38f1793 __pm_stay_awake +EXPORT_SYMBOL_GPL vmlinux 0xd396068a of_cpufreq_cooling_register +EXPORT_SYMBOL_GPL vmlinux 0xd39944a3 ablkcipher_walk_phys +EXPORT_SYMBOL_GPL vmlinux 0xd3a82cb3 ping_init_sock +EXPORT_SYMBOL_GPL vmlinux 0xd3b065c5 of_node_to_nid +EXPORT_SYMBOL_GPL vmlinux 0xd3ce2594 crypto_alloc_base +EXPORT_SYMBOL_GPL vmlinux 0xd3d72946 iommu_group_remove_device +EXPORT_SYMBOL_GPL vmlinux 0xd3ec93aa blk_trace_startstop +EXPORT_SYMBOL_GPL vmlinux 0xd3f2129f evm_inode_init_security +EXPORT_SYMBOL_GPL vmlinux 0xd4034828 system_freezable_wq +EXPORT_SYMBOL_GPL vmlinux 0xd40974bf iommu_release_ownership +EXPORT_SYMBOL_GPL vmlinux 0xd41fffab interval_tree_iter_first +EXPORT_SYMBOL_GPL vmlinux 0xd4487fd5 snprint_stack_trace +EXPORT_SYMBOL_GPL vmlinux 0xd44a5eac kgdb_register_nmi_console +EXPORT_SYMBOL_GPL vmlinux 0xd44b5e55 pci_pasid_features +EXPORT_SYMBOL_GPL vmlinux 0xd4652fb3 device_show_bool +EXPORT_SYMBOL_GPL vmlinux 0xd473fdee pm_generic_restore_noirq +EXPORT_SYMBOL_GPL vmlinux 0xd49c1abd __blk_end_request_err +EXPORT_SYMBOL_GPL vmlinux 0xd49c3180 platform_device_put +EXPORT_SYMBOL_GPL vmlinux 0xd4a96c9c of_thermal_is_trip_valid +EXPORT_SYMBOL_GPL vmlinux 0xd4c14632 system_unbound_wq +EXPORT_SYMBOL_GPL vmlinux 0xd4cf5929 ipv4_sk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0xd4d24867 adp5520_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0xd5377505 rt_mutex_timed_lock +EXPORT_SYMBOL_GPL vmlinux 0xd5596d48 opal_xscom_write +EXPORT_SYMBOL_GPL vmlinux 0xd55ad93b iommu_group_get_iommudata +EXPORT_SYMBOL_GPL vmlinux 0xd563cee7 usb_free_urb +EXPORT_SYMBOL_GPL vmlinux 0xd56b5f64 ktime_get_ts64 +EXPORT_SYMBOL_GPL vmlinux 0xd5bd7dac ring_buffer_record_enable_cpu +EXPORT_SYMBOL_GPL vmlinux 0xd5c36c40 __tracepoint_attach_device_to_domain +EXPORT_SYMBOL_GPL vmlinux 0xd5d3ec86 eeh_iommu_group_to_pe +EXPORT_SYMBOL_GPL vmlinux 0xd5e763a4 fuse_get_req +EXPORT_SYMBOL_GPL vmlinux 0xd5f88fd2 led_classdev_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd60c99b5 rcu_batches_completed_bh +EXPORT_SYMBOL_GPL vmlinux 0xd611e118 cpufreq_cpu_put +EXPORT_SYMBOL_GPL vmlinux 0xd630765b regulator_is_supported_voltage +EXPORT_SYMBOL_GPL vmlinux 0xd657c7d8 sk_detach_filter +EXPORT_SYMBOL_GPL vmlinux 0xd665a738 dma_buf_put +EXPORT_SYMBOL_GPL vmlinux 0xd67364f7 eventfd_ctx_fdget +EXPORT_SYMBOL_GPL vmlinux 0xd675ede0 wm831x_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0xd679fe62 ata_timing_compute +EXPORT_SYMBOL_GPL vmlinux 0xd6a43677 opal_async_release_token +EXPORT_SYMBOL_GPL vmlinux 0xd6c5fb58 bsg_request_fn +EXPORT_SYMBOL_GPL vmlinux 0xd6feefa5 agp_num_entries +EXPORT_SYMBOL_GPL vmlinux 0xd701752b pwm_disable +EXPORT_SYMBOL_GPL vmlinux 0xd703844f xfrm_local_error +EXPORT_SYMBOL_GPL vmlinux 0xd705b4c7 schedule_hrtimeout +EXPORT_SYMBOL_GPL vmlinux 0xd714c422 dm_disk +EXPORT_SYMBOL_GPL vmlinux 0xd732bf62 ata_sas_port_start +EXPORT_SYMBOL_GPL vmlinux 0xd75a0173 arizona_dev_init +EXPORT_SYMBOL_GPL vmlinux 0xd75c7241 cpufreq_freq_transition_end +EXPORT_SYMBOL_GPL vmlinux 0xd768e985 regulator_has_full_constraints +EXPORT_SYMBOL_GPL vmlinux 0xd77c0bc8 klist_remove +EXPORT_SYMBOL_GPL vmlinux 0xd78299eb crypto_register_ahash +EXPORT_SYMBOL_GPL vmlinux 0xd7869b46 arizona_free_irq +EXPORT_SYMBOL_GPL vmlinux 0xd78ca37e class_interface_register +EXPORT_SYMBOL_GPL vmlinux 0xd79ce2b5 dev_pm_enable_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0xd7a61846 blkio_cgrp_subsys +EXPORT_SYMBOL_GPL vmlinux 0xd7ac59d7 led_trigger_remove +EXPORT_SYMBOL_GPL vmlinux 0xd7bba03c ata_cable_sata +EXPORT_SYMBOL_GPL vmlinux 0xd7c10441 pm_runtime_barrier +EXPORT_SYMBOL_GPL vmlinux 0xd7cec9dc __class_register +EXPORT_SYMBOL_GPL vmlinux 0xd7d79132 put_online_cpus +EXPORT_SYMBOL_GPL vmlinux 0xd7da7e3c shmem_file_setup +EXPORT_SYMBOL_GPL vmlinux 0xd7e4449e srcu_barrier +EXPORT_SYMBOL_GPL vmlinux 0xd7f63c1a ping_queue_rcv_skb +EXPORT_SYMBOL_GPL vmlinux 0xd7f83312 irq_alloc_domain_generic_chips +EXPORT_SYMBOL_GPL vmlinux 0xd81de62c ring_buffer_record_enable +EXPORT_SYMBOL_GPL vmlinux 0xd820c283 eventfd_ctx_remove_wait_queue +EXPORT_SYMBOL_GPL vmlinux 0xd8216e4b sysfs_add_link_to_group +EXPORT_SYMBOL_GPL vmlinux 0xd8263870 mmu_slb_size +EXPORT_SYMBOL_GPL vmlinux 0xd828a786 unregister_jprobes +EXPORT_SYMBOL_GPL vmlinux 0xd84dfc8f pci_reset_bus +EXPORT_SYMBOL_GPL vmlinux 0xd85f8be2 sata_async_notification +EXPORT_SYMBOL_GPL vmlinux 0xd87601cc ring_buffer_unlock_commit +EXPORT_SYMBOL_GPL vmlinux 0xd87fc0a0 usb_amd_prefetch_quirk +EXPORT_SYMBOL_GPL vmlinux 0xd8bd93fe register_net_sysctl +EXPORT_SYMBOL_GPL vmlinux 0xd8d27b1f gpiod_set_raw_value +EXPORT_SYMBOL_GPL vmlinux 0xd8f7109e inet_twsk_alloc +EXPORT_SYMBOL_GPL vmlinux 0xd90033f9 fwnode_property_read_u32_array +EXPORT_SYMBOL_GPL vmlinux 0xd921e1f7 devm_regulator_get +EXPORT_SYMBOL_GPL vmlinux 0xd93752d1 skb_tstamp_tx +EXPORT_SYMBOL_GPL vmlinux 0xd93ca21a phy_put +EXPORT_SYMBOL_GPL vmlinux 0xd942d353 ring_buffer_record_off +EXPORT_SYMBOL_GPL vmlinux 0xd945219b pm_runtime_autosuspend_expiration +EXPORT_SYMBOL_GPL vmlinux 0xd94aa457 display_timings_release +EXPORT_SYMBOL_GPL vmlinux 0xd96babb4 interval_tree_iter_next +EXPORT_SYMBOL_GPL vmlinux 0xd97878a7 mm_iommu_preregistered +EXPORT_SYMBOL_GPL vmlinux 0xd989a44b devfreq_event_get_edev_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0xd9bc648e pm_generic_poweroff_late +EXPORT_SYMBOL_GPL vmlinux 0xd9ecb670 ring_buffer_overruns +EXPORT_SYMBOL_GPL vmlinux 0xd9fc477e rio_release_inb_pwrite +EXPORT_SYMBOL_GPL vmlinux 0xda1bc465 realmode_pfn_to_page +EXPORT_SYMBOL_GPL vmlinux 0xda2001af cpufreq_frequency_table_verify +EXPORT_SYMBOL_GPL vmlinux 0xda22efcc regmap_update_bits_async +EXPORT_SYMBOL_GPL vmlinux 0xda3ee00f stmpe_reg_read +EXPORT_SYMBOL_GPL vmlinux 0xda4d15cf ata_host_register +EXPORT_SYMBOL_GPL vmlinux 0xda5f6746 pm_runtime_force_resume +EXPORT_SYMBOL_GPL vmlinux 0xda8c8e47 devfreq_event_add_edev +EXPORT_SYMBOL_GPL vmlinux 0xdadc14af shash_register_instance +EXPORT_SYMBOL_GPL vmlinux 0xdade3d4d ata_sas_port_alloc +EXPORT_SYMBOL_GPL vmlinux 0xdae715e0 videomode_from_timing +EXPORT_SYMBOL_GPL vmlinux 0xdaed3073 timerqueue_del +EXPORT_SYMBOL_GPL vmlinux 0xdaf4dfb3 fb_mode_option +EXPORT_SYMBOL_GPL vmlinux 0xdb063ecc spi_async_locked +EXPORT_SYMBOL_GPL vmlinux 0xdb22aecc tcp_death_row +EXPORT_SYMBOL_GPL vmlinux 0xdb45a148 serial8250_do_shutdown +EXPORT_SYMBOL_GPL vmlinux 0xdb807b5e leds_list_lock +EXPORT_SYMBOL_GPL vmlinux 0xdb8a1b3f usermodehelper_read_trylock +EXPORT_SYMBOL_GPL vmlinux 0xdbb5d038 nd_blk_region_set_provider_data +EXPORT_SYMBOL_GPL vmlinux 0xdbcac184 rtnl_af_unregister +EXPORT_SYMBOL_GPL vmlinux 0xdbcd31f8 tps6586x_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0xdbcf52c1 of_property_match_string +EXPORT_SYMBOL_GPL vmlinux 0xdbd821d4 anon_transport_class_register +EXPORT_SYMBOL_GPL vmlinux 0xdbd9ef20 adp5520_read +EXPORT_SYMBOL_GPL vmlinux 0xdbf2e141 devm_regulator_register +EXPORT_SYMBOL_GPL vmlinux 0xdbf7cb70 mpi_get_nbits +EXPORT_SYMBOL_GPL vmlinux 0xdbf869b6 console_drivers +EXPORT_SYMBOL_GPL vmlinux 0xdc162d9c device_remove_bin_file +EXPORT_SYMBOL_GPL vmlinux 0xdc1c379d __list_lru_init +EXPORT_SYMBOL_GPL vmlinux 0xdc1e0b60 do_unbind_con_driver +EXPORT_SYMBOL_GPL vmlinux 0xdc5cdc90 devm_kmemdup +EXPORT_SYMBOL_GPL vmlinux 0xdc607381 trace_call_bpf +EXPORT_SYMBOL_GPL vmlinux 0xdc69c3aa extcon_set_cable_state +EXPORT_SYMBOL_GPL vmlinux 0xdc825d6c usb_amd_quirk_pll_disable +EXPORT_SYMBOL_GPL vmlinux 0xdc8f122d noop_backing_dev_info +EXPORT_SYMBOL_GPL vmlinux 0xdc97af2e syscore_suspend +EXPORT_SYMBOL_GPL vmlinux 0xdc9af9f0 regmap_field_alloc +EXPORT_SYMBOL_GPL vmlinux 0xdc9cbc6c pm_generic_restore_early +EXPORT_SYMBOL_GPL vmlinux 0xdc9fa232 raw_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0xdca0e1e9 dm_noflush_suspending +EXPORT_SYMBOL_GPL vmlinux 0xdccf9348 usb_hcd_check_unlink_urb +EXPORT_SYMBOL_GPL vmlinux 0xdce0f7d0 iommu_group_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0xdce68843 crypto_ahash_digest +EXPORT_SYMBOL_GPL vmlinux 0xdcfab5ca arizona_pm_ops +EXPORT_SYMBOL_GPL vmlinux 0xdd088807 mddev_resume +EXPORT_SYMBOL_GPL vmlinux 0xdd17ffec trace_clock +EXPORT_SYMBOL_GPL vmlinux 0xdd2efc0f ring_buffer_reset_cpu +EXPORT_SYMBOL_GPL vmlinux 0xdd391eff profile_event_unregister +EXPORT_SYMBOL_GPL vmlinux 0xdd541d2f sata_std_hardreset +EXPORT_SYMBOL_GPL vmlinux 0xdd57e2b5 percpu_ref_exit +EXPORT_SYMBOL_GPL vmlinux 0xdd615512 subsys_dev_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0xdd65dfc2 subsys_interface_unregister +EXPORT_SYMBOL_GPL vmlinux 0xdd6ab18d tcp_twsk_destructor +EXPORT_SYMBOL_GPL vmlinux 0xdd6f249c spi_sync_locked +EXPORT_SYMBOL_GPL vmlinux 0xdd729424 usb_anchor_empty +EXPORT_SYMBOL_GPL vmlinux 0xdd7bda15 ehci_cf_port_reset_rwsem +EXPORT_SYMBOL_GPL vmlinux 0xdd8f8fd5 ndo_dflt_bridge_getlink +EXPORT_SYMBOL_GPL vmlinux 0xdd918884 device_property_present +EXPORT_SYMBOL_GPL vmlinux 0xdd9f9dae __add_pages +EXPORT_SYMBOL_GPL vmlinux 0xddbe31c2 platform_get_resource +EXPORT_SYMBOL_GPL vmlinux 0xddbeeecc pci_lock_rescan_remove +EXPORT_SYMBOL_GPL vmlinux 0xddd58dc0 ring_buffer_reset +EXPORT_SYMBOL_GPL vmlinux 0xdddca163 crypto_register_template +EXPORT_SYMBOL_GPL vmlinux 0xdddd88f9 virtqueue_poll +EXPORT_SYMBOL_GPL vmlinux 0xddefb9a5 spi_sync +EXPORT_SYMBOL_GPL vmlinux 0xde0332b1 netlink_add_tap +EXPORT_SYMBOL_GPL vmlinux 0xde15e77e __fib_lookup +EXPORT_SYMBOL_GPL vmlinux 0xde2d3441 inet6_lookup_listener +EXPORT_SYMBOL_GPL vmlinux 0xde3c4b54 ata_pci_device_do_suspend +EXPORT_SYMBOL_GPL vmlinux 0xde4c1441 hvc_instantiate +EXPORT_SYMBOL_GPL vmlinux 0xde57a753 kvmppc_invalidate_hpte +EXPORT_SYMBOL_GPL vmlinux 0xde748f6e usb_interrupt_msg +EXPORT_SYMBOL_GPL vmlinux 0xde91fe0d put_pid +EXPORT_SYMBOL_GPL vmlinux 0xdebe41b3 regcache_sync_region +EXPORT_SYMBOL_GPL vmlinux 0xded36209 usb_root_hub_lost_power +EXPORT_SYMBOL_GPL vmlinux 0xdedd3d73 irq_get_irq_data +EXPORT_SYMBOL_GPL vmlinux 0xdef6fbda dev_pm_set_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0xdf016a7d pci_reset_pri +EXPORT_SYMBOL_GPL vmlinux 0xdf0f75c6 eventfd_signal +EXPORT_SYMBOL_GPL vmlinux 0xdf4278db flush_kthread_work +EXPORT_SYMBOL_GPL vmlinux 0xdf4614b1 devm_regulator_put +EXPORT_SYMBOL_GPL vmlinux 0xdf7b9281 fuse_do_ioctl +EXPORT_SYMBOL_GPL vmlinux 0xdf7bda9a transport_remove_device +EXPORT_SYMBOL_GPL vmlinux 0xdf937381 stmpe_block_read +EXPORT_SYMBOL_GPL vmlinux 0xdf99c955 blkcipher_walk_virt +EXPORT_SYMBOL_GPL vmlinux 0xdf9c2654 sysfs_remove_group +EXPORT_SYMBOL_GPL vmlinux 0xdfad0755 of_irq_parse_one +EXPORT_SYMBOL_GPL vmlinux 0xdfb89cbd device_property_read_u16_array +EXPORT_SYMBOL_GPL vmlinux 0xdfdf9c10 __tracepoint_unmap +EXPORT_SYMBOL_GPL vmlinux 0xdfe8ab30 rtnl_put_cacheinfo +EXPORT_SYMBOL_GPL vmlinux 0xdff810f4 device_create_file +EXPORT_SYMBOL_GPL vmlinux 0xe007de41 kallsyms_lookup_name +EXPORT_SYMBOL_GPL vmlinux 0xe02eb6d0 ring_buffer_commit_overrun_cpu +EXPORT_SYMBOL_GPL vmlinux 0xe089cfcc agp_memory_reserved +EXPORT_SYMBOL_GPL vmlinux 0xe0bac873 fuse_conn_put +EXPORT_SYMBOL_GPL vmlinux 0xe0c32fd5 cpuidle_get_driver +EXPORT_SYMBOL_GPL vmlinux 0xe0c9f19d devm_phy_put +EXPORT_SYMBOL_GPL vmlinux 0xe0f0c3e3 restore_online_page_callback +EXPORT_SYMBOL_GPL vmlinux 0xe0f0f914 __rtnl_link_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe0f77156 bmp085_probe +EXPORT_SYMBOL_GPL vmlinux 0xe105452e usb_gen_phy_init +EXPORT_SYMBOL_GPL vmlinux 0xe10ccb86 regmap_fields_read +EXPORT_SYMBOL_GPL vmlinux 0xe133ea44 skb_gso_transport_seglen +EXPORT_SYMBOL_GPL vmlinux 0xe13d1729 regmap_attach_dev +EXPORT_SYMBOL_GPL vmlinux 0xe1415835 irq_domain_associate_many +EXPORT_SYMBOL_GPL vmlinux 0xe14b8b52 devm_regulator_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0xe156eeb6 iptunnel_xmit +EXPORT_SYMBOL_GPL vmlinux 0xe15a68bd pci_hp_change_slot_info +EXPORT_SYMBOL_GPL vmlinux 0xe15da8aa of_pci_get_devfn +EXPORT_SYMBOL_GPL vmlinux 0xe1775ee7 dm_get_reserved_bio_based_ios +EXPORT_SYMBOL_GPL vmlinux 0xe1811b66 devm_extcon_dev_free +EXPORT_SYMBOL_GPL vmlinux 0xe1bd6c99 rio_init_mports +EXPORT_SYMBOL_GPL vmlinux 0xe1d61905 sata_scr_write_flush +EXPORT_SYMBOL_GPL vmlinux 0xe1d7ae6d __dev_forward_skb +EXPORT_SYMBOL_GPL vmlinux 0xe1e5f1a9 wm5110_spi_regmap +EXPORT_SYMBOL_GPL vmlinux 0xe211eb21 __inet_lookup_listener +EXPORT_SYMBOL_GPL vmlinux 0xe225c382 of_thermal_get_trip_points +EXPORT_SYMBOL_GPL vmlinux 0xe237e0be blkg_prfill_rwstat +EXPORT_SYMBOL_GPL vmlinux 0xe23aad4a sk_clone_lock +EXPORT_SYMBOL_GPL vmlinux 0xe25cdf68 platform_device_del +EXPORT_SYMBOL_GPL vmlinux 0xe274aa71 add_disk_randomness +EXPORT_SYMBOL_GPL vmlinux 0xe28a1d1a sdhci_pci_spt_drive_strength +EXPORT_SYMBOL_GPL vmlinux 0xe28b6b8d regmap_parse_val +EXPORT_SYMBOL_GPL vmlinux 0xe2a76309 usb_create_hcd +EXPORT_SYMBOL_GPL vmlinux 0xe2ef7039 tps6586x_reads +EXPORT_SYMBOL_GPL vmlinux 0xe3043ff9 request_any_context_irq +EXPORT_SYMBOL_GPL vmlinux 0xe32d285f devm_regulator_bulk_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0xe32fb230 alarm_expires_remaining +EXPORT_SYMBOL_GPL vmlinux 0xe3479a00 wakeup_source_destroy +EXPORT_SYMBOL_GPL vmlinux 0xe35a68ad remove_irq +EXPORT_SYMBOL_GPL vmlinux 0xe37b7785 hash_page_mm +EXPORT_SYMBOL_GPL vmlinux 0xe384a102 usb_speed_string +EXPORT_SYMBOL_GPL vmlinux 0xe38f6f76 fat_getattr +EXPORT_SYMBOL_GPL vmlinux 0xe3b72b82 ata_sas_queuecmd +EXPORT_SYMBOL_GPL vmlinux 0xe3d5804f sdio_align_size +EXPORT_SYMBOL_GPL vmlinux 0xe3d7750e btree_visitor +EXPORT_SYMBOL_GPL vmlinux 0xe3daed74 ata_cable_40wire +EXPORT_SYMBOL_GPL vmlinux 0xe407a31b __udp4_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0xe40efbd2 ata_qc_complete_multiple +EXPORT_SYMBOL_GPL vmlinux 0xe418b154 xhci_resume +EXPORT_SYMBOL_GPL vmlinux 0xe41e49fd regulator_get_optional +EXPORT_SYMBOL_GPL vmlinux 0xe4309905 syscore_resume +EXPORT_SYMBOL_GPL vmlinux 0xe4324882 device_rename +EXPORT_SYMBOL_GPL vmlinux 0xe43c762c ata_dev_disable +EXPORT_SYMBOL_GPL vmlinux 0xe4689576 ktime_get_with_offset +EXPORT_SYMBOL_GPL vmlinux 0xe4881f42 pm_generic_restore +EXPORT_SYMBOL_GPL vmlinux 0xe4971ade tracing_alloc_snapshot +EXPORT_SYMBOL_GPL vmlinux 0xe4a7cf95 power_supply_get_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0xe4b678e1 irq_setup_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0xe4bc1fd0 of_pci_msi_chip_add +EXPORT_SYMBOL_GPL vmlinux 0xe4c031f8 btree_merge +EXPORT_SYMBOL_GPL vmlinux 0xe4c106b3 register_pernet_subsys +EXPORT_SYMBOL_GPL vmlinux 0xe4df5d9c usb_put_phy +EXPORT_SYMBOL_GPL vmlinux 0xe4ebb244 ohci_restart +EXPORT_SYMBOL_GPL vmlinux 0xe4f39a07 regulator_allow_bypass +EXPORT_SYMBOL_GPL vmlinux 0xe5002b9d usb_choose_configuration +EXPORT_SYMBOL_GPL vmlinux 0xe50e4046 crypto_aead_type +EXPORT_SYMBOL_GPL vmlinux 0xe51c040f register_kprobe +EXPORT_SYMBOL_GPL vmlinux 0xe529a6e3 led_sysfs_enable +EXPORT_SYMBOL_GPL vmlinux 0xe52ab595 usb_submit_urb +EXPORT_SYMBOL_GPL vmlinux 0xe5540302 enable_kprobe +EXPORT_SYMBOL_GPL vmlinux 0xe55cdeae register_asymmetric_key_parser +EXPORT_SYMBOL_GPL vmlinux 0xe5883bd9 class_compat_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe58fb452 aer_irq +EXPORT_SYMBOL_GPL vmlinux 0xe61bdfab virtqueue_add_sgs +EXPORT_SYMBOL_GPL vmlinux 0xe62eb43a spi_unregister_master +EXPORT_SYMBOL_GPL vmlinux 0xe651f76e selinux_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0xe67227f3 ata_cable_unknown +EXPORT_SYMBOL_GPL vmlinux 0xe69c00a4 tpmm_chip_alloc +EXPORT_SYMBOL_GPL vmlinux 0xe6a0f5b7 crypto_rng_reset +EXPORT_SYMBOL_GPL vmlinux 0xe6a9dfa2 do_take_over_console +EXPORT_SYMBOL_GPL vmlinux 0xe6c68334 ddebug_remove_module +EXPORT_SYMBOL_GPL vmlinux 0xe6c8dd38 __irq_domain_add +EXPORT_SYMBOL_GPL vmlinux 0xe6c95f97 rio_request_inb_dbell +EXPORT_SYMBOL_GPL vmlinux 0xe6e1c5fe uuid_be_gen +EXPORT_SYMBOL_GPL vmlinux 0xe6ef4abf dm_internal_resume_fast +EXPORT_SYMBOL_GPL vmlinux 0xe6efe3c2 cgroup_attach_task_all +EXPORT_SYMBOL_GPL vmlinux 0xe6fac6f1 dmaengine_unmap_put +EXPORT_SYMBOL_GPL vmlinux 0xe70e7a9e nvdimm_attribute_group +EXPORT_SYMBOL_GPL vmlinux 0xe70fee02 usb_init_urb +EXPORT_SYMBOL_GPL vmlinux 0xe7284c10 ata_sff_data_xfer_noirq +EXPORT_SYMBOL_GPL vmlinux 0xe769232e sprint_symbol_no_offset +EXPORT_SYMBOL_GPL vmlinux 0xe7900637 regulator_map_voltage_linear +EXPORT_SYMBOL_GPL vmlinux 0xe797acdf regmap_get_reg_stride +EXPORT_SYMBOL_GPL vmlinux 0xe7a362c8 ip_build_and_send_pkt +EXPORT_SYMBOL_GPL vmlinux 0xe7b16082 eventfd_ctx_fileget +EXPORT_SYMBOL_GPL vmlinux 0xe7b26326 __cpufreq_driver_target +EXPORT_SYMBOL_GPL vmlinux 0xe7d04d04 tty_set_termios +EXPORT_SYMBOL_GPL vmlinux 0xe7e9a64e of_css +EXPORT_SYMBOL_GPL vmlinux 0xe7f18b3c threads_per_subcore +EXPORT_SYMBOL_GPL vmlinux 0xe7ffe877 pcpu_base_addr +EXPORT_SYMBOL_GPL vmlinux 0xe818b32b ata_bmdma_interrupt +EXPORT_SYMBOL_GPL vmlinux 0xe82af4a9 task_cgroup_path +EXPORT_SYMBOL_GPL vmlinux 0xe84f6e5c pciserial_remove_ports +EXPORT_SYMBOL_GPL vmlinux 0xe857a719 event_triggers_call +EXPORT_SYMBOL_GPL vmlinux 0xe85c55e7 btree_destroy +EXPORT_SYMBOL_GPL vmlinux 0xe862c4b7 dpm_suspend_start +EXPORT_SYMBOL_GPL vmlinux 0xe866ad0c debugfs_create_u8 +EXPORT_SYMBOL_GPL vmlinux 0xe86dcf8e pci_scan_child_bus +EXPORT_SYMBOL_GPL vmlinux 0xe89bd243 ata_sff_queue_work +EXPORT_SYMBOL_GPL vmlinux 0xe89e5082 regmap_fields_write +EXPORT_SYMBOL_GPL vmlinux 0xe8a06d64 sdio_set_host_pm_flags +EXPORT_SYMBOL_GPL vmlinux 0xe8ad2149 sync_page_io +EXPORT_SYMBOL_GPL vmlinux 0xe8b9e8c8 devfreq_event_disable_edev +EXPORT_SYMBOL_GPL vmlinux 0xe8ddeacc rtc_irq_set_state +EXPORT_SYMBOL_GPL vmlinux 0xe905b210 __rtnl_link_register +EXPORT_SYMBOL_GPL vmlinux 0xe92f400d serial8250_rpm_get +EXPORT_SYMBOL_GPL vmlinux 0xe93e49c3 devres_free +EXPORT_SYMBOL_GPL vmlinux 0xe9506579 iommu_tce_direction +EXPORT_SYMBOL_GPL vmlinux 0xe96198a9 bus_find_device_by_name +EXPORT_SYMBOL_GPL vmlinux 0xe978e320 debugfs_create_regset32 +EXPORT_SYMBOL_GPL vmlinux 0xe9858d95 mpc8xxx_spi_probe +EXPORT_SYMBOL_GPL vmlinux 0xe9d1b7cf irq_to_pcap +EXPORT_SYMBOL_GPL vmlinux 0xe9dcb02e hwrng_register +EXPORT_SYMBOL_GPL vmlinux 0xea008220 ata_pci_bmdma_prepare_host +EXPORT_SYMBOL_GPL vmlinux 0xea124bd1 gcd +EXPORT_SYMBOL_GPL vmlinux 0xea1511e3 iommu_group_get +EXPORT_SYMBOL_GPL vmlinux 0xea2ac06b bmp085_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0xea418e0f atapi_cmd_type +EXPORT_SYMBOL_GPL vmlinux 0xea51af17 palmas_ext_control_req_config +EXPORT_SYMBOL_GPL vmlinux 0xea51d0a4 wm831x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xea628c20 bstr_printf +EXPORT_SYMBOL_GPL vmlinux 0xea637eea devm_extcon_dev_unregister +EXPORT_SYMBOL_GPL vmlinux 0xea8593e1 devm_phy_optional_get +EXPORT_SYMBOL_GPL vmlinux 0xea8edc70 register_cxl_calls +EXPORT_SYMBOL_GPL vmlinux 0xeac4dfa5 vfs_test_lock +EXPORT_SYMBOL_GPL vmlinux 0xead4c12c thermal_of_cooling_device_register +EXPORT_SYMBOL_GPL vmlinux 0xeae22d62 devm_devfreq_event_remove_edev +EXPORT_SYMBOL_GPL vmlinux 0xeaef229b pci_set_pcie_reset_state +EXPORT_SYMBOL_GPL vmlinux 0xeb07b4a8 usb_disable_ltm +EXPORT_SYMBOL_GPL vmlinux 0xeb2a4098 bpf_prog_put +EXPORT_SYMBOL_GPL vmlinux 0xeb35ad31 arizona_clk32k_disable +EXPORT_SYMBOL_GPL vmlinux 0xeb3f85f7 __crypto_alloc_tfm +EXPORT_SYMBOL_GPL vmlinux 0xeb455d4f __remove_pages +EXPORT_SYMBOL_GPL vmlinux 0xeb5e9781 put_device +EXPORT_SYMBOL_GPL vmlinux 0xeb6c0256 class_unregister +EXPORT_SYMBOL_GPL vmlinux 0xeb7d183e jump_label_rate_limit +EXPORT_SYMBOL_GPL vmlinux 0xeb81cb7a __pm_runtime_set_status +EXPORT_SYMBOL_GPL vmlinux 0xeb81d5ee crypto_lookup_aead +EXPORT_SYMBOL_GPL vmlinux 0xeb8ae736 klist_init +EXPORT_SYMBOL_GPL vmlinux 0xeb9a2a60 blkcipher_walk_phys +EXPORT_SYMBOL_GPL vmlinux 0xeba940d3 device_release_driver +EXPORT_SYMBOL_GPL vmlinux 0xebb1e5c9 usb_alloc_coherent +EXPORT_SYMBOL_GPL vmlinux 0xebc992b9 regulator_get_mode +EXPORT_SYMBOL_GPL vmlinux 0xebec57c4 ring_buffer_oldest_event_ts +EXPORT_SYMBOL_GPL vmlinux 0xec1b043e regulator_suspend_prepare +EXPORT_SYMBOL_GPL vmlinux 0xec21bd18 pci_generic_config_read +EXPORT_SYMBOL_GPL vmlinux 0xec25f967 klist_del +EXPORT_SYMBOL_GPL vmlinux 0xec631f34 remove_memory +EXPORT_SYMBOL_GPL vmlinux 0xec72f6ca dm_suspended +EXPORT_SYMBOL_GPL vmlinux 0xec7e9db3 tcp_cong_avoid_ai +EXPORT_SYMBOL_GPL vmlinux 0xeccdc394 pci_find_next_ext_capability +EXPORT_SYMBOL_GPL vmlinux 0xecd96cc2 skb_partial_csum_set +EXPORT_SYMBOL_GPL vmlinux 0xece9de76 devres_close_group +EXPORT_SYMBOL_GPL vmlinux 0xed089f44 led_trigger_blink +EXPORT_SYMBOL_GPL vmlinux 0xed46b626 blocking_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0xed5880b4 da903x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xed77e7d9 sata_link_debounce +EXPORT_SYMBOL_GPL vmlinux 0xeda635c3 mmc_regulator_set_ocr +EXPORT_SYMBOL_GPL vmlinux 0xedc485e8 rio_register_mport +EXPORT_SYMBOL_GPL vmlinux 0xedcd95ea bpf_prog_realloc +EXPORT_SYMBOL_GPL vmlinux 0xedd493b3 usb_bus_list_lock +EXPORT_SYMBOL_GPL vmlinux 0xeddc37d7 class_compat_remove_link +EXPORT_SYMBOL_GPL vmlinux 0xee0ccbf4 crypto_alloc_pcomp +EXPORT_SYMBOL_GPL vmlinux 0xee1564b3 tty_port_link_device +EXPORT_SYMBOL_GPL vmlinux 0xee1a5196 inverse_translate +EXPORT_SYMBOL_GPL vmlinux 0xee273a2a usb_unanchor_urb +EXPORT_SYMBOL_GPL vmlinux 0xee2c1381 __pci_reset_function_locked +EXPORT_SYMBOL_GPL vmlinux 0xee2d1a5b gpiochip_add +EXPORT_SYMBOL_GPL vmlinux 0xee3c3ca2 cpufreq_freq_transition_begin +EXPORT_SYMBOL_GPL vmlinux 0xee48257b led_trigger_register_simple +EXPORT_SYMBOL_GPL vmlinux 0xee4bf25a devres_add +EXPORT_SYMBOL_GPL vmlinux 0xee5cf8c2 serial8250_clear_and_reinit_fifos +EXPORT_SYMBOL_GPL vmlinux 0xee68a2bb of_get_videomode +EXPORT_SYMBOL_GPL vmlinux 0xee6b71c4 syscon_regmap_lookup_by_compatible +EXPORT_SYMBOL_GPL vmlinux 0xee891cc0 srp_tmo_valid +EXPORT_SYMBOL_GPL vmlinux 0xee8b6875 class_interface_unregister +EXPORT_SYMBOL_GPL vmlinux 0xee94ed96 thermal_cooling_device_register +EXPORT_SYMBOL_GPL vmlinux 0xeec158e1 devres_for_each_res +EXPORT_SYMBOL_GPL vmlinux 0xeec49726 wait_on_page_bit_killable_timeout +EXPORT_SYMBOL_GPL vmlinux 0xeed51d45 i2c_unlock_adapter +EXPORT_SYMBOL_GPL vmlinux 0xeed97b84 regulator_list_hardware_vsel +EXPORT_SYMBOL_GPL vmlinux 0xef236e0a wm8350_reg_write +EXPORT_SYMBOL_GPL vmlinux 0xef255aff pci_load_saved_state +EXPORT_SYMBOL_GPL vmlinux 0xef36c707 usb_hc_died +EXPORT_SYMBOL_GPL vmlinux 0xef3d8665 pci_probe_reset_bus +EXPORT_SYMBOL_GPL vmlinux 0xef3db6de ata_link_offline +EXPORT_SYMBOL_GPL vmlinux 0xef4a89b2 __blkg_prfill_rwstat +EXPORT_SYMBOL_GPL vmlinux 0xef4b2fbb fat_flush_inodes +EXPORT_SYMBOL_GPL vmlinux 0xef4fd145 remove_phb_dynamic +EXPORT_SYMBOL_GPL vmlinux 0xef5d3b99 devm_regmap_init_spi +EXPORT_SYMBOL_GPL vmlinux 0xef696f93 __mmdrop +EXPORT_SYMBOL_GPL vmlinux 0xef6c3f70 round_jiffies_up_relative +EXPORT_SYMBOL_GPL vmlinux 0xef6d007a sigset_from_compat +EXPORT_SYMBOL_GPL vmlinux 0xef7c32a7 devm_regmap_field_free +EXPORT_SYMBOL_GPL vmlinux 0xef7c5839 xfrm_audit_state_notfound_simple +EXPORT_SYMBOL_GPL vmlinux 0xef8c7850 pcap_adc_async +EXPORT_SYMBOL_GPL vmlinux 0xefa2c27d register_tracepoint_module_notifier +EXPORT_SYMBOL_GPL vmlinux 0xefae5743 md_run +EXPORT_SYMBOL_GPL vmlinux 0xefb0e679 sock_diag_put_meminfo +EXPORT_SYMBOL_GPL vmlinux 0xefcdbc3b get_governor_parent_kobj +EXPORT_SYMBOL_GPL vmlinux 0xefd4653a rt_mutex_unlock +EXPORT_SYMBOL_GPL vmlinux 0xefda31ce xfrm_output_resume +EXPORT_SYMBOL_GPL vmlinux 0xefebc48d generic_access_phys +EXPORT_SYMBOL_GPL vmlinux 0xeff748a4 __pci_reset_function +EXPORT_SYMBOL_GPL vmlinux 0xeffa6b8f __tracepoint_cpu_idle +EXPORT_SYMBOL_GPL vmlinux 0xf023456b arizona_clk32k_enable +EXPORT_SYMBOL_GPL vmlinux 0xf0275a41 eeh_pe_reset +EXPORT_SYMBOL_GPL vmlinux 0xf03c072f __ftrace_vbprintk +EXPORT_SYMBOL_GPL vmlinux 0xf03fa222 trace_event_buffer_reserve +EXPORT_SYMBOL_GPL vmlinux 0xf0727f12 ktime_get_raw_fast_ns +EXPORT_SYMBOL_GPL vmlinux 0xf0a253b6 init_dummy_netdev +EXPORT_SYMBOL_GPL vmlinux 0xf0a3c149 dequeue_signal +EXPORT_SYMBOL_GPL vmlinux 0xf0a3e310 regulator_sync_voltage +EXPORT_SYMBOL_GPL vmlinux 0xf0ab5f92 blk_queue_flush +EXPORT_SYMBOL_GPL vmlinux 0xf0f5dbc2 timerqueue_iterate_next +EXPORT_SYMBOL_GPL vmlinux 0xf10e49ee mmc_send_tuning +EXPORT_SYMBOL_GPL vmlinux 0xf124ee47 phy_pm_runtime_put +EXPORT_SYMBOL_GPL vmlinux 0xf145ed3c fanout_mutex +EXPORT_SYMBOL_GPL vmlinux 0xf158f170 klist_add_tail +EXPORT_SYMBOL_GPL vmlinux 0xf1609666 crypto_shash_final +EXPORT_SYMBOL_GPL vmlinux 0xf173ca16 pm_runtime_allow +EXPORT_SYMBOL_GPL vmlinux 0xf1809c7c rt_mutex_trylock +EXPORT_SYMBOL_GPL vmlinux 0xf18147a0 trace_event_buffer_lock_reserve +EXPORT_SYMBOL_GPL vmlinux 0xf184d189 kernel_power_off +EXPORT_SYMBOL_GPL vmlinux 0xf18ed606 unregister_kretprobes +EXPORT_SYMBOL_GPL vmlinux 0xf1a50d61 raw_seq_start +EXPORT_SYMBOL_GPL vmlinux 0xf1a6220c bio_trim +EXPORT_SYMBOL_GPL vmlinux 0xf1a62b6f of_i8042_kbd_irq +EXPORT_SYMBOL_GPL vmlinux 0xf1b31314 delayacct_on +EXPORT_SYMBOL_GPL vmlinux 0xf1ea02cf splice_to_pipe +EXPORT_SYMBOL_GPL vmlinux 0xf1fde4dd hwrng_unregister +EXPORT_SYMBOL_GPL vmlinux 0xf2042b2d crypto_shash_setkey +EXPORT_SYMBOL_GPL vmlinux 0xf2118d0b __mnt_drop_write +EXPORT_SYMBOL_GPL vmlinux 0xf21af4d3 pci_intx +EXPORT_SYMBOL_GPL vmlinux 0xf21c6deb sock_diag_unregister_inet_compat +EXPORT_SYMBOL_GPL vmlinux 0xf21e1f9b disable_percpu_irq +EXPORT_SYMBOL_GPL vmlinux 0xf27977e2 async_synchronize_cookie_domain +EXPORT_SYMBOL_GPL vmlinux 0xf290fbb8 ohci_setup +EXPORT_SYMBOL_GPL vmlinux 0xf2c1f540 bdev_direct_access +EXPORT_SYMBOL_GPL vmlinux 0xf2c8190d mpc8xxx_spi_rx_buf_u32 +EXPORT_SYMBOL_GPL vmlinux 0xf2f077cc pkey_id_type_name +EXPORT_SYMBOL_GPL vmlinux 0xf2fca922 uart_parse_options +EXPORT_SYMBOL_GPL vmlinux 0xf30e105d ezx_pcap_write +EXPORT_SYMBOL_GPL vmlinux 0xf31b3fd1 workqueue_set_max_active +EXPORT_SYMBOL_GPL vmlinux 0xf331236f btree_geo32 +EXPORT_SYMBOL_GPL vmlinux 0xf3456d45 skcipher_geniv_init +EXPORT_SYMBOL_GPL vmlinux 0xf3808cb1 get_state_synchronize_rcu +EXPORT_SYMBOL_GPL vmlinux 0xf3980f9d sock_prot_inuse_add +EXPORT_SYMBOL_GPL vmlinux 0xf39cd2d8 usb_get_phy_dev +EXPORT_SYMBOL_GPL vmlinux 0xf3a7c25a cpufreq_generic_frequency_table_verify +EXPORT_SYMBOL_GPL vmlinux 0xf3b339c7 pci_hp_deregister +EXPORT_SYMBOL_GPL vmlinux 0xf3b451ca kdb_poll_funcs +EXPORT_SYMBOL_GPL vmlinux 0xf3bcc9ea dm_internal_suspend_fast +EXPORT_SYMBOL_GPL vmlinux 0xf3cf8dae irq_set_chained_handler_and_data +EXPORT_SYMBOL_GPL vmlinux 0xf3dd3983 regulator_get_bypass_regmap +EXPORT_SYMBOL_GPL vmlinux 0xf3f18238 ktime_get_resolution_ns +EXPORT_SYMBOL_GPL vmlinux 0xf41394a4 driver_find_device +EXPORT_SYMBOL_GPL vmlinux 0xf41b6564 simple_attr_read +EXPORT_SYMBOL_GPL vmlinux 0xf424cc65 spi_finalize_current_transfer +EXPORT_SYMBOL_GPL vmlinux 0xf4277bfa usb_add_phy +EXPORT_SYMBOL_GPL vmlinux 0xf42d3454 dev_pm_qos_add_notifier +EXPORT_SYMBOL_GPL vmlinux 0xf447c949 inet_hash +EXPORT_SYMBOL_GPL vmlinux 0xf494f618 mmc_regulator_get_ocrmask +EXPORT_SYMBOL_GPL vmlinux 0xf499fdb2 rcu_barrier_bh +EXPORT_SYMBOL_GPL vmlinux 0xf4a10401 get_kernel_pages +EXPORT_SYMBOL_GPL vmlinux 0xf4cde032 scsi_autopm_get_device +EXPORT_SYMBOL_GPL vmlinux 0xf4d4ad08 nd_region_provider_data +EXPORT_SYMBOL_GPL vmlinux 0xf4f149d6 of_dma_get_range +EXPORT_SYMBOL_GPL vmlinux 0xf4f7da12 __of_phy_provider_register +EXPORT_SYMBOL_GPL vmlinux 0xf4fc2d6c __ring_buffer_alloc +EXPORT_SYMBOL_GPL vmlinux 0xf5047b76 iommu_add_device +EXPORT_SYMBOL_GPL vmlinux 0xf50fa33c ata_sff_data_xfer32 +EXPORT_SYMBOL_GPL vmlinux 0xf538418c split_page +EXPORT_SYMBOL_GPL vmlinux 0xf54bd49b lcm +EXPORT_SYMBOL_GPL vmlinux 0xf553318d cpuidle_pause_and_lock +EXPORT_SYMBOL_GPL vmlinux 0xf57a24a1 regulator_is_enabled_regmap +EXPORT_SYMBOL_GPL vmlinux 0xf5898eae of_thermal_get_ntrips +EXPORT_SYMBOL_GPL vmlinux 0xf5a4446d __blk_run_queue_uncond +EXPORT_SYMBOL_GPL vmlinux 0xf5a691cd invalidate_bh_lrus +EXPORT_SYMBOL_GPL vmlinux 0xf5b3894a rio_get_asm +EXPORT_SYMBOL_GPL vmlinux 0xf5b5a01a rq_flush_dcache_pages +EXPORT_SYMBOL_GPL vmlinux 0xf5b8ee4a ata_scsi_simulate +EXPORT_SYMBOL_GPL vmlinux 0xf5c3b46f device_store_ulong +EXPORT_SYMBOL_GPL vmlinux 0xf5c585aa handle_simple_irq +EXPORT_SYMBOL_GPL vmlinux 0xf5cb1625 sysfs_create_bin_file +EXPORT_SYMBOL_GPL vmlinux 0xf5d97c26 wakeup_source_create +EXPORT_SYMBOL_GPL vmlinux 0xf5db3e1b __pm_runtime_disable +EXPORT_SYMBOL_GPL vmlinux 0xf60f7563 flush_altivec_to_thread +EXPORT_SYMBOL_GPL vmlinux 0xf62a01c3 fl6_merge_options +EXPORT_SYMBOL_GPL vmlinux 0xf64aa57e disk_part_iter_init +EXPORT_SYMBOL_GPL vmlinux 0xf65dbc03 i2c_generic_scl_recovery +EXPORT_SYMBOL_GPL vmlinux 0xf6a13b97 ima_file_check +EXPORT_SYMBOL_GPL vmlinux 0xf6ada7ee wm831x_auxadc_read_uv +EXPORT_SYMBOL_GPL vmlinux 0xf6c4993f ehci_hub_control +EXPORT_SYMBOL_GPL vmlinux 0xf6c8dc62 cpu_hotplug_enable +EXPORT_SYMBOL_GPL vmlinux 0xf6d17c3b usb_control_msg +EXPORT_SYMBOL_GPL vmlinux 0xf6d57a1c usb_put_hcd +EXPORT_SYMBOL_GPL vmlinux 0xf6d82ab9 ata_bmdma_error_handler +EXPORT_SYMBOL_GPL vmlinux 0xf6de5118 pciserial_init_ports +EXPORT_SYMBOL_GPL vmlinux 0xf6e7ca13 devm_free_pages +EXPORT_SYMBOL_GPL vmlinux 0xf6e874f5 ata_timing_merge +EXPORT_SYMBOL_GPL vmlinux 0xf703ba5c component_add +EXPORT_SYMBOL_GPL vmlinux 0xf70479dd cpufreq_register_governor +EXPORT_SYMBOL_GPL vmlinux 0xf71d1912 rio_mport_write_config_16 +EXPORT_SYMBOL_GPL vmlinux 0xf7200eb0 cpuidle_register_driver +EXPORT_SYMBOL_GPL vmlinux 0xf7289107 dev_pm_qos_hide_flags +EXPORT_SYMBOL_GPL vmlinux 0xf7608cdf __tracepoint_io_page_fault +EXPORT_SYMBOL_GPL vmlinux 0xf765dd9e ata_sff_prereset +EXPORT_SYMBOL_GPL vmlinux 0xf7909076 __page_file_mapping +EXPORT_SYMBOL_GPL vmlinux 0xf7a32e24 blk_abort_request +EXPORT_SYMBOL_GPL vmlinux 0xf7c0cae6 component_unbind_all +EXPORT_SYMBOL_GPL vmlinux 0xf7daca14 __mmu_notifier_invalidate_range +EXPORT_SYMBOL_GPL vmlinux 0xf7f09086 uart_console_write +EXPORT_SYMBOL_GPL vmlinux 0xf7f4e851 crypto_enqueue_request +EXPORT_SYMBOL_GPL vmlinux 0xf829a455 fuse_put_request +EXPORT_SYMBOL_GPL vmlinux 0xf82f3657 work_on_cpu +EXPORT_SYMBOL_GPL vmlinux 0xf83632f1 mmu_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0xf837e0eb unregister_kprobes +EXPORT_SYMBOL_GPL vmlinux 0xf85959e3 crypto_remove_spawns +EXPORT_SYMBOL_GPL vmlinux 0xf8647f87 usb_reset_endpoint +EXPORT_SYMBOL_GPL vmlinux 0xf8802492 print_stack_trace +EXPORT_SYMBOL_GPL vmlinux 0xf883bba9 pwm_enable +EXPORT_SYMBOL_GPL vmlinux 0xf8979a64 pwm_get +EXPORT_SYMBOL_GPL vmlinux 0xf898f785 unregister_pernet_subsys +EXPORT_SYMBOL_GPL vmlinux 0xf8b54a3d find_vpid +EXPORT_SYMBOL_GPL vmlinux 0xf8e398fc memstart_addr +EXPORT_SYMBOL_GPL vmlinux 0xf8e3d593 stmpe_set_altfunc +EXPORT_SYMBOL_GPL vmlinux 0xf8e43775 crypto_unregister_pcomp +EXPORT_SYMBOL_GPL vmlinux 0xf8ec5dad pci_bus_max_busnr +EXPORT_SYMBOL_GPL vmlinux 0xf8f3a0fb ata_ratelimit +EXPORT_SYMBOL_GPL vmlinux 0xf8fe3d0b kmsg_dump_register +EXPORT_SYMBOL_GPL vmlinux 0xf909ffe9 sysfs_remove_link_from_group +EXPORT_SYMBOL_GPL vmlinux 0xf9235fb4 device_remove_file_self +EXPORT_SYMBOL_GPL vmlinux 0xf92645d0 arizona_request_irq +EXPORT_SYMBOL_GPL vmlinux 0xf92ce956 kdb_printf +EXPORT_SYMBOL_GPL vmlinux 0xf932015f __raw_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xf93b1d59 inet_csk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0xf95322f4 kthread_parkme +EXPORT_SYMBOL_GPL vmlinux 0xf991c09f rcu_qs_ctr +EXPORT_SYMBOL_GPL vmlinux 0xf997dbe7 blk_trace_remove +EXPORT_SYMBOL_GPL vmlinux 0xf9a054b5 __round_jiffies +EXPORT_SYMBOL_GPL vmlinux 0xf9aa09d1 ata_dev_pair +EXPORT_SYMBOL_GPL vmlinux 0xf9ca3160 ata_id_xfermask +EXPORT_SYMBOL_GPL vmlinux 0xf9d59442 dev_pm_qos_update_request +EXPORT_SYMBOL_GPL vmlinux 0xf9d78bcb tty_buffer_set_limit +EXPORT_SYMBOL_GPL vmlinux 0xf9dccc6a dm_path_uevent +EXPORT_SYMBOL_GPL vmlinux 0xf9e812f5 i2c_bus_type +EXPORT_SYMBOL_GPL vmlinux 0xfa0a3f11 da903x_read +EXPORT_SYMBOL_GPL vmlinux 0xfa1eb910 unregister_syscore_ops +EXPORT_SYMBOL_GPL vmlinux 0xfa1f4662 scatterwalk_start +EXPORT_SYMBOL_GPL vmlinux 0xfa23d2fd smpboot_unregister_percpu_thread +EXPORT_SYMBOL_GPL vmlinux 0xfa2f9233 __clocksource_register_scale +EXPORT_SYMBOL_GPL vmlinux 0xfa4969ad usb_lock_device_for_reset +EXPORT_SYMBOL_GPL vmlinux 0xfa4bd997 debugfs_remove_recursive +EXPORT_SYMBOL_GPL vmlinux 0xfa5fb82e device_remove_file +EXPORT_SYMBOL_GPL vmlinux 0xfa6967d3 init_uts_ns +EXPORT_SYMBOL_GPL vmlinux 0xfa6a88fb power_supply_set_property +EXPORT_SYMBOL_GPL vmlinux 0xfa901b31 compat_get_timespec +EXPORT_SYMBOL_GPL vmlinux 0xfa98db68 kern_mount_data +EXPORT_SYMBOL_GPL vmlinux 0xfab16d1d usb_add_phy_dev +EXPORT_SYMBOL_GPL vmlinux 0xfab60503 klist_iter_init_node +EXPORT_SYMBOL_GPL vmlinux 0xfad12ced gpiod_direction_output +EXPORT_SYMBOL_GPL vmlinux 0xfaf9913c init_user_ns +EXPORT_SYMBOL_GPL vmlinux 0xfb047f3f fat_setattr +EXPORT_SYMBOL_GPL vmlinux 0xfb0a0191 __devm_of_phy_provider_register +EXPORT_SYMBOL_GPL vmlinux 0xfb14fa85 regmap_async_complete +EXPORT_SYMBOL_GPL vmlinux 0xfb2ae4da of_dma_is_coherent +EXPORT_SYMBOL_GPL vmlinux 0xfb32b30f ring_buffer_read_prepare_sync +EXPORT_SYMBOL_GPL vmlinux 0xfb3a6496 blkg_conf_finish +EXPORT_SYMBOL_GPL vmlinux 0xfb44a7a1 opal_ipmi_recv +EXPORT_SYMBOL_GPL vmlinux 0xfb49efe6 free_vm_area +EXPORT_SYMBOL_GPL vmlinux 0xfb4d6909 sdhci_pci_o2_resume +EXPORT_SYMBOL_GPL vmlinux 0xfb52b77d __wake_up_locked +EXPORT_SYMBOL_GPL vmlinux 0xfb6eedf9 power_group_name +EXPORT_SYMBOL_GPL vmlinux 0xfb79a820 devm_extcon_dev_allocate +EXPORT_SYMBOL_GPL vmlinux 0xfb7cc122 tc3589x_reg_write +EXPORT_SYMBOL_GPL vmlinux 0xfb89d930 init_phb_dynamic +EXPORT_SYMBOL_GPL vmlinux 0xfbbd41ca no_action +EXPORT_SYMBOL_GPL vmlinux 0xfbd3a24d opal_message_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0xfbd86b7c cpufreq_governor_dbs +EXPORT_SYMBOL_GPL vmlinux 0xfbf87bc9 devm_rtc_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xfc03d97a page_is_ram +EXPORT_SYMBOL_GPL vmlinux 0xfc201b66 sprint_oid +EXPORT_SYMBOL_GPL vmlinux 0xfc53cd5b regulator_set_voltage_time_sel +EXPORT_SYMBOL_GPL vmlinux 0xfc5a1e7c thermal_zone_bind_cooling_device +EXPORT_SYMBOL_GPL vmlinux 0xfc5c9c53 platform_device_add_resources +EXPORT_SYMBOL_GPL vmlinux 0xfc78b3fc __netlink_alloc_skb +EXPORT_SYMBOL_GPL vmlinux 0xfc80f968 ata_bmdma_dumb_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0xfc8200c3 crypto_larval_lookup +EXPORT_SYMBOL_GPL vmlinux 0xfca43fd6 ping_getfrag +EXPORT_SYMBOL_GPL vmlinux 0xfca44dd4 transport_class_unregister +EXPORT_SYMBOL_GPL vmlinux 0xfccd91c2 skb_complete_tx_timestamp +EXPORT_SYMBOL_GPL vmlinux 0xfcd413ac platform_get_irq_byname +EXPORT_SYMBOL_GPL vmlinux 0xfcd7bc0b ring_buffer_empty +EXPORT_SYMBOL_GPL vmlinux 0xfd082fa7 wm8350_reg_lock +EXPORT_SYMBOL_GPL vmlinux 0xfd7a50ea set_timer_slack +EXPORT_SYMBOL_GPL vmlinux 0xfd7ce789 ata_cable_ignore +EXPORT_SYMBOL_GPL vmlinux 0xfd9da877 da903x_reads +EXPORT_SYMBOL_GPL vmlinux 0xfdb4e4b2 sata_pmp_port_ops +EXPORT_SYMBOL_GPL vmlinux 0xfdbc8a5e get_current_tty +EXPORT_SYMBOL_GPL vmlinux 0xfddd285f mm_iommu_ua_to_hpa +EXPORT_SYMBOL_GPL vmlinux 0xfdf900a1 hvc_remove +EXPORT_SYMBOL_GPL vmlinux 0xfe337689 usb_autopm_get_interface_async +EXPORT_SYMBOL_GPL vmlinux 0xfe41702b proc_get_parent_data +EXPORT_SYMBOL_GPL vmlinux 0xfe448a7b bpf_prog_select_runtime +EXPORT_SYMBOL_GPL vmlinux 0xfe48c66d usb_remove_phy +EXPORT_SYMBOL_GPL vmlinux 0xfe7a76f6 tty_wakeup +EXPORT_SYMBOL_GPL vmlinux 0xfe7d6746 regmap_irq_get_domain +EXPORT_SYMBOL_GPL vmlinux 0xfe990052 gpio_free +EXPORT_SYMBOL_GPL vmlinux 0xfed11ed1 usb_mon_deregister +EXPORT_SYMBOL_GPL vmlinux 0xfee6f7a9 cpufreq_unregister_governor +EXPORT_SYMBOL_GPL vmlinux 0xfef5858b tc3589x_reg_read +EXPORT_SYMBOL_GPL vmlinux 0xfef6f4b5 watchdog_init_timeout +EXPORT_SYMBOL_GPL vmlinux 0xfef8a166 trace_current_buffer_lock_reserve +EXPORT_SYMBOL_GPL vmlinux 0xfeff6eb1 ata_scsi_slave_config +EXPORT_SYMBOL_GPL vmlinux 0xff05fa13 vring_interrupt +EXPORT_SYMBOL_GPL vmlinux 0xff300fbf led_trigger_event +EXPORT_SYMBOL_GPL vmlinux 0xff4fafaa tps6586x_writes +EXPORT_SYMBOL_GPL vmlinux 0xff5a8cfe cn_del_callback +EXPORT_SYMBOL_GPL vmlinux 0xff61ce8b dma_request_slave_channel +EXPORT_SYMBOL_GPL vmlinux 0xff633558 vprintk_default +EXPORT_SYMBOL_GPL vmlinux 0xff6c09d5 usb_match_id +EXPORT_SYMBOL_GPL vmlinux 0xff8e95d2 of_dma_simple_xlate +EXPORT_SYMBOL_GPL vmlinux 0xff9a4a65 dm_get_table_device +EXPORT_SYMBOL_GPL vmlinux 0xffa401a8 desc_to_gpio +EXPORT_SYMBOL_GPL vmlinux 0xffcdc214 blkcg_policy_register +EXPORT_SYMBOL_GPL vmlinux 0xffce3d32 __pm_runtime_idle +EXPORT_SYMBOL_GPL vmlinux 0xffefeb30 fat_time_unix2fat --- linux-raspi2-4.2.0.orig/debian.master/abi/4.2.0-26.31/ppc64el/generic.compiler +++ linux-raspi2-4.2.0/debian.master/abi/4.2.0-26.31/ppc64el/generic.compiler @@ -0,0 +1 @@ +GCC: (Ubuntu 5.2.1-22ubuntu2) 5.2.1 20151010 --- linux-raspi2-4.2.0.orig/debian.master/abi/4.2.0-26.31/ppc64el/generic.modules +++ linux-raspi2-4.2.0/debian.master/abi/4.2.0-26.31/ppc64el/generic.modules @@ -0,0 +1,4147 @@ +3c59x +3w-9xxx +3w-sas +3w-xxxx +6lowpan +6pack +8021q +8139cp +8139too +8250_dw +8255 +8255_pci +8390 +842 +842_compress +842_decompress +88pm800 +88pm805 +88pm80x +88pm80x_onkey +88pm8607 +88pm860x_battery +88pm860x_bl +88pm860x_charger +88pm860x_onkey +88pm860x-ts +9p +9pnet +9pnet_rdma +9pnet_virtio +a100u2w +a3d +a8293 +aacraid +aat2870_bl +aat2870-regulator +ab3100 +ab3100-otp +ac97_bus +acard-ahci +acecad +acenic +act200l-sir +act8865-regulator +act_bpf +act_connmark +act_csum +act_gact +act_ipt +actisys-sir +act_mirred +act_nat +act_pedit +act_police +act_simple +act_skbedit +act_vlan +ad2s1200 +ad2s1210 +ad2s90 +ad5064 +ad525x_dpot +ad525x_dpot-i2c +ad525x_dpot-spi +ad5360 +ad5380 +ad5398 +ad5421 +ad5446 +ad5449 +ad5504 +ad5624r_spi +ad5686 +ad5755 +ad5764 +ad5791 +ad5933 +ad714x +ad714x-i2c +ad714x-spi +ad7150 +ad7152 +ad7192 +ad7266 +ad7280a +ad7291 +ad7298 +ad7303 +ad7314 +ad7414 +ad7418 +ad7476 +ad7606 +ad7746 +ad7780 +ad7791 +ad7793 +ad7816 +ad7877 +ad7879 +ad7879-i2c +ad7879-spi +ad7887 +ad7923 +ad799x +ad8366 +ad9523 +ad9832 +ad9834 +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 +ade7753 +ade7754 +ade7758 +ade7759 +ade7854 +ade7854-i2c +ade7854-spi +adf4350 +adfs +adi +adis16060 +adis16080 +adis16130 +adis16136 +adis16201 +adis16203 +adis16204 +adis16209 +adis16220 +adis16240 +adis16260 +adis16400 +adis16480 +adis_lib +adjd_s311 +adl_pci6208 +adl_pci7x3x +adl_pci8164 +adl_pci9111 +adl_pci9118 +adm1021 +adm1025 +adm1026 +adm1029 +adm1031 +adm1275 +adm8211 +adm9240 +adp5520_bl +adp5520-keys +adp5588-keys +adp5589-keys +adp8860_bl +adp8870_bl +adq12b +ads1015 +ads7828 +ads7846 +ads7871 +ad_sigma_delta +adt7310 +adt7316 +adt7316-i2c +adt7316-spi +adt7410 +adt7411 +adt7462 +adt7470 +adt7475 +adt7x10 +adummy +adutux +adv7511 +adv7604 +adv7842 +advansys +adv_pci1710 +adv_pci1723 +adv_pci1724 +adv_pci_dio +adxl34x +adxl34x-i2c +adxl34x-spi +adxrs450 +af9013 +af9033 +af_alg +affs +af_key +af_packet_diag +af-rxrpc +ah4 +ah6 +ahci +ahci_ceva +ahci_platform +aic79xx +aic7xxx +aic94xx +aio_aio12_8 +aio_iiro_16 +aiptek +aircable +airo +airspy +ak8975 +al3320a +algif_aead +algif_hash +algif_rng +algif_skcipher +ali-ircc +alim7101_wdt +altera-ci +altera_jtaguart +altera_ps2 +altera-stapl +altera_tse +altera_uart +alx +am53c974 +amc6821 +amd +amd5536udc +amd8111e +amdgpu +amplc_dio200 +amplc_dio200_common +amplc_dio200_pci +amplc_pc236 +amplc_pc236_common +amplc_pc263 +amplc_pci224 +amplc_pci230 +amplc_pci236 +amplc_pci263 +ams369fg06 +analog +anatop-regulator +ansi_cprng +anubis +aoe +apbps2 +apds9300 +apds9802als +apds990x +appledisplay +appletalk +appletouch +applicom +ar1021_i2c +ar5523 +ar7part +arc4 +arc_emac +arcmsr +arcnet +arc_ps2 +arc-rawmode +arc-rimi +arc_uart +arizona-haptics +arizona-i2c +arizona-ldo1 +arizona-micsupp +arizona-spi +ark3116 +arkfb +arptable_filter +arp_tables +arpt_mangle +as102_fe +as3711_bl +as3711-regulator +as3722-regulator +as3935 +as5011 +asc7621 +asix +ast +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 +ath3k +ath5k +ath6kl_core +ath6kl_sdio +ath6kl_usb +ath9k +ath9k_common +ath9k_htc +ath9k_hw +ati_remote +ati_remote2 +atl1 +atl1c +atl1e +atl2 +atm +atmel +atmel-hlcdc +atmel_mxt_ts +atmel_pci +atmtcp +atp870u +atusb +atxp1 +aty128fb +atyfb +au0828 +au8522_common +au8522_decoder +au8522_dig +aufs +auo_k1900fb +auo_k1901fb +auo_k190x +auo-pixcir-ts +authenc +authencesn +auth_rpcgss +autofs4 +avmfritz +ax25 +ax88179_178a +axp20x-pek +axp20x-regulator +axp288_adc +axp288_charger +axp288_fuel_gauge +b1 +b1dma +b1pci +b2c2-flexcop +b2c2-flexcop-pci +b2c2-flexcop-usb +b43 +b43legacy +b44 +bas_gigaset +batman-adv +baycom_par +baycom_ser_fdx +baycom_ser_hdx +bcache +bch +bcm203x +bcm3510 +bcm590xx +bcm590xx-regulator +bcm5974 +bcm7xxx +bcm87xx +bcma +bcma-hcd +bcmsysport +bd6107 +bdc +bdc_pci +be2iscsi +be2net +befs +belkin_sa +bfa +bfs +bfusb +bh1750 +bh1770glc +bh1780gli +binfmt_misc +block2mtd +blocklayoutdriver +blowfish_common +blowfish_generic +bluetooth +bluetooth_6lowpan +bma150 +bma180 +bmc150-accel +bmc150_magn +bmg160 +bmp085-i2c +bmp085-spi +bmp280 +bna +bnep +bnx2 +bnx2fc +bnx2i +bnx2x +bonding +bpa10x +bpck +bpqether +bq2415x_charger +bq24190_charger +bq24257_charger +bq24735-charger +bq25890_charger +bq27x00_battery +br2684 +brcmfmac +brcmsmac +brcmutil +bridge +br_netfilter +broadcom +broadsheetfb +bsd_comp +bsr +bt878 +btbcm +btcoexist +btintel +btmrvl +btmrvl_sdio +btrfs +btrtl +btsdio +bttv +btusb +btwilink +bu21013_ts +budget +budget-av +budget-ci +budget-core +budget-patch +c4 +c67x00 +c6xdigio +cachefiles +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-raw +cap11xx +capi +capidrv +capmode +carl9170 +carminefb +cassini +cast5_generic +cast6_generic +cast_common +catc +cb710 +cb710-mmc +cb_pcidas +cb_pcidas64 +cb_pcidda +cb_pcimdas +cb_pcimdda +cc2520 +cc770 +cc770_isa +cc770_platform +c_can +c_can_pci +c_can_platform +cciss +ccm +cdc-acm +cdc_eem +cdc_ether +cdc_mbim +cdc_ncm +cdc-phonet +cdc_subset +cdc-wdm +ceph +cfg80211 +cfi_cmdset_0001 +cfi_cmdset_0002 +cfi_cmdset_0020 +cfi_probe +cfi_util +cfspi_slave +ch +ch341 +ch7006 +chacha20_generic +chacha20poly1305 +chaoskey +chipone_icn8318 +chipreg +chnl_net +cicada +cifs +ci_hdrc +ci_hdrc_imx +ci_hdrc_msm +ci_hdrc_pci +ci_hdrc_usb2 +ci_hdrc_zevio +cirrus +cirrusfb +clip +cls_basic +cls_bpf +cls_cgroup +cls_flow +cls_flower +cls_fw +cls_route +cls_rsvp +cls_rsvp6 +cls_tcindex +cls_u32 +cm109 +cm32181 +cm3232 +cm3323 +cm36651 +cma3000_d0x +cma3000_d0x_i2c +cmac +cmdlinepart +cmm +cmtp +cnic +cobalt +cobra +coda +com20020 +com20020-pci +com90io +com90xx +comedi +comedi_8254 +comedi_8255 +comedi_bond +comedi_isadma +comedi_parport +comedi_pci +comedi_test +comedi_usb +comm +configfs +contec_pci_dio +cordic +core +cp210x +cpc925_edac +cpia2 +cpsw_ale +cpu-notifier-error-inject +cramfs +crc32 +crc7 +crc8 +crc-ccitt +crc-itu-t +cros_ec +cros_ec_devs +cros_ec_i2c +cros_ec_keyb +cros_ec_spi +cryptd +cryptoloop +crypto_null +crypto_user +cs5345 +cs53l32a +csiostor +ctr +cts +cuse +cw1200_core +cw1200_wlan_sdio +cw1200_wlan_spi +cx18 +cx18-alsa +cx22700 +cx22702 +cx231xx +cx231xx-alsa +cx231xx-dvb +cx2341x +cx23885 +cx24110 +cx24113 +cx24116 +cx24117 +cx24120 +cx24123 +cx25821 +cx25821-alsa +cx25840 +cx82310_eth +cx8800 +cx8802 +cx88-alsa +cx88-blackbird +cx88-dvb +cx88-vp3054-i2c +cx88xx +cxacru +cxd2099 +cxd2820r +cxgb +cxgb3 +cxgb3i +cxgb4 +cxgb4i +cxgb4vf +cxl +cxlflash +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 +da9030_battery +da9034-ts +da903x +da903x_bl +da9052-battery +da9052_bl +da9052-hwmon +da9052_onkey +da9052-regulator +da9052_tsi +da9052_wdt +da9055-hwmon +da9055_onkey +da9055-regulator +da9055_wdt +da9063_onkey +da9063-regulator +da9063_wdt +da9150-charger +da9150-core +da9150-gpadc +da9210-regulator +da9211-regulator +dac02 +DAC960 +daqboard2000 +das08 +das08_isa +das08_pci +das16 +das16m1 +das1800 +das6402 +das800 +davicom +db9 +dc395x +dccp +dccp_diag +dccp_ipv4 +dccp_ipv6 +dccp_probe +ddbridge +de2104x +de4x5 +decnet +deflate +defxx +denali +denali_pci +des_generic +dgap +dgnc +dht11 +dib0070 +dib0090 +dib3000mb +dib3000mc +dib7000m +dib7000p +dib8000 +dibx000_common +digi_acceleport +digicolor-usart +diskonchip +divacapi +divadidd +diva_idi +diva_mnt +divas +dl2k +dlci +dlm +dln2 +dm1105 +dm9601 +dm-bio-prison +dm-bufio +dm-cache +dm-cache-cleaner +dm-cache-mq +dm-cache-smq +dm-crypt +dm-delay +dm-era +dmfe +dm-flakey +dm-log +dm-log-userspace +dm-log-writes +dmm32at +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-verity +dmx3191d +dm-zero +dnet +dn_rtmsg +docg3 +docg4 +dp83867 +drbd +drbg +drm +drm_kms_helper +drv260x +drv2665 +drv2667 +drx39xyj +drxd +drxk +ds1621 +ds1682 +ds1wm +ds2482 +ds2490 +ds2760_battery +ds2780_battery +ds2781_battery +ds2782_battery +ds3000 +ds620 +dsbr100 +dscc4 +dss1_divert +dst +dst_ca +dstr +dt2801 +dt2811 +dt2814 +dt2815 +dt2817 +dt282x +dt3000 +dt3155 +dt9812 +dummy +dummy-irq +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-digitv +dvb-usb-dtt200u +dvb-usb-dtv5100 +dvb-usb-dvbsky +dvb-usb-dw2102 +dvb-usb-ec168 +dvb-usb-friio +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_v2 +dvb-usb-vp702x +dvb-usb-vp7045 +dwc3 +dwc3-pci +dw_dmac +dw_dmac_core +dw_dmac_pci +dwmac-generic +dwmac-ipq806x +dwmac-lpc18xx +dwmac-meson +dwmac-rk +dwmac-socfpga +dwmac-sti +dwmac-sunxi +dw_wdt +dyna_pci10xx +dynapro +e100 +e1000 +e1000e +e3x0-button +e4000 +earth-pt1 +earth-pt3 +eata +ebt_802_3 +ebtable_broute +ebtable_filter +ebtable_nat +ebtables +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 +ec100 +echainiv +echo +edac_core +edt-ft5x06 +eeprom +eeprom_93cx6 +eeprom_93xx46 +eeti_ts +efs +egalax_ts +ehci-platform +ehset +elan_i2c +elants_i2c +elo +em28xx +em28xx-alsa +em28xx-dvb +em28xx-rc +em28xx-v4l +emac_arc +emac_rockchip +emc1403 +emc2103 +emc6w201 +em_canid +em_cmp +emi26 +emi62 +em_ipset +em_meta +em_nbyte +empeg +ems_pci +ems_usb +em_text +emu10k1-gp +em_u32 +enc28j60 +enclosure +eni +enic +epat +epia +epic100 +eql +esas2r +esd_usb2 +esi-sir +esp4 +esp6 +esp_scsi +et1011c +et131x +ethoc +evbug +exofs +extcon-adc-jack +extcon-arizona +extcon-axp288 +extcon-gpio +extcon-max14577 +extcon-max77693 +extcon-max77843 +extcon-max8997 +extcon-palmas +extcon-rt8973a +extcon-sm5502 +extcon-usb-gpio +ezusb +f2fs +f75375s +f81232 +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_ssd1289 +fb_ssd1306 +fb_ssd1331 +fb_ssd1351 +fb_st7735r +fb_sys_fops +fbtft +fbtft_device +fb_tinylcd +fb_tls8204 +fb_uc1701 +fb_upd161704 +fb_watterott +fc0011 +fc0012 +fc0013 +fc2580 +fcoe +fcrypt +fdomain +fealnx +ff-memless +fid +firedtv +firewire-core +firewire-net +firewire-ohci +firewire-sbp2 +firewire-serial +fit2 +fit3 +fixed +fl512 +fld +flexcan +flexfb +floppy +fm10k +fm801-gp +fmc +fmc-chardev +fmc-fakedev +fmc-trivial +fmc-write-eeprom +fm_drv +forcedeth +fore_200e +fotg210-hcd +fotg210-udc +fou +freevxfs +friq +frpw +fsa9480 +fscache +fsl-edma +fsl_elbc_nand +fsl_lpuart +ft1000 +ftdi-elan +ftdi_sio +ftl +fujitsu_ts +fusbh200-hcd +g450_pll +g760a +g762 +g_acm_ms +gadgetfs +gamecon +gameport +garmin_gps +garp +g_audio +g_cdc +gcm +g_dbgp +gdmtty +gdmulte +gdmwm +gdth +generic +generic-adc-battery +generic_bl +genet +geneve +geneve_core +gen_probe +genwqe_card +g_ether +gf128mul +gf2k +g_ffs +gfs2 +ghash-generic +g_hid +gigaset +girbil-sir +gl518sm +gl520sm +gl620a +gluebi +g_mass_storage +g_midi +g_ncm +g_nokia +go7007 +go7007-loader +go7007-usb +goku_udc +goodix +gp2ap002a00f +gp2ap020a00f +gpio +gpio-74x164 +gpio-74xx-mmio +gpio-addr-flash +gpio-adnp +gpio-adp5520 +gpio-adp5588 +gpio-altera +gpio-amd8111 +gpio-arizona +gpio_backlight +gpio-beeper +gpio-charger +gpio-crystalcove +gpio-da9052 +gpio-da9055 +gpio-dln2 +gpio-dwapb +gpio-fan +gpio-generic +gpio-grgpio +gpio-ir-recv +gpio-janz-ttl +gpio-kempld +gpio_keys +gpio_keys_polled +gpio-lp3943 +gpio-max7300 +gpio-max7301 +gpio-max730x +gpio-max732x +gpio-mc33880 +gpio-mcp23s08 +gpio-ml-ioh +gpio_mouse +gpio-pca953x +gpio-pcf857x +gpio-rdc321x +gpio-regulator +gpio-sch311x +gpio-syscon +gpio_tilt_polled +gpio-tps65912 +gpio-twl4030 +gpio-twl6040 +gpio-ucb1400 +gpio-viperboard +gpio-vx855 +gpio_wdt +gpio-wm831x +gpio-wm8350 +gpio-wm8994 +g_printer +grace +grcan +gre +grip +grip_mp +gr_udc +gsc_hpdi +g_serial +gs_fpga +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 +gs_usb +gtco +guillemot +gunze +g_webcam +g_zero +hackrf +hamachi +hampshire +hangcheck-timer +hanwang +hci +hci_uart +hci_vhci +hdlc +hdlc_cisco +hdlcdrv +hdlc_fr +hdlc_ppp +hdlc_raw +hdlc_raw_eth +hdlc_x25 +hdpvr +he +hexium_gemini +hexium_orion +hfc4s8s_l1 +hfcmulti +hfcpci +hfcsusb +hfc_usb +hfs +hfsplus +hi6421-pmic-core +hi6421-regulator +hid +hid-a4tech +hid-apple +hid-appleir +hid-aureal +hid-axff +hid-belkin +hid-betopff +hid-cherry +hid-chicony +hid-cp2112 +hid-cypress +hid-dr +hid-elecom +hid-elo +hid-emsff +hid-ezkey +hid-gaff +hid-generic +hid-gt683r +hid-gyration +hid-holtekff +hid-holtek-kbd +hid-holtek-mouse +hid-icade +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 +hidp +hid-penmount +hid-petalynx +hid-picolcd +hid-pl +hid-plantronics +hid-primax +hid-prodikeys +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-iio-common +hid-sensor-incl-3d +hid-sensor-magn-3d +hid-sensor-press +hid-sensor-prox +hid-sensor-rotation +hid-sensor-trigger +hid-sjoy +hid-sony +hid-speedlink +hid-steelseries +hid-sunplus +hid-thingm +hid-tivo +hid-tmff +hid-topseed +hid-twinhan +hid-uclogic +hid-waltop +hid-wiimote +hid-xinmo +hid-zpff +hid-zydacron +hih6130 +hisax +hisax_fcpcipnp +hisax_isac +hisax_st5481 +hisi504_nand +hmc5843_core +hmc5843_i2c +hmc5843_spi +hmc6352 +hopper +hostap +hostap_pci +hostap_plx +hp100 +hpfs +hpilo +hpsa +hptiop +hsi +hsi_char +hso +hsr +hsu_dma +hsu_dma_pci +htc-pasic3 +htu21 +huawei_cdc_ncm +hvcs +hvcserver +hwa-hc +hwa-rc +hwmon-vid +hwpoison-inject +hx8357 +hysdn +i1480-dfu-usb +i1480-est +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-cros-ec-tunnel +i2c-designware-core +i2c-designware-pci +i2c-designware-platform +i2c-diolan-u2c +i2c-dln2 +i2c-gpio +i2c-hid +i2c-i801 +i2c-isch +i2c-kempld +i2c-matroxfb +i2c-mpc +i2c-mux +i2c-mux-gpio +i2c-mux-pca9541 +i2c-mux-pca954x +i2c-nforce2 +i2c-ocores +i2c-parport +i2c-parport-light +i2c-pca-platform +i2c-piix4 +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 +i40e +i40evf +i5k_amb +i6300esb +i740fb +ib_addr +ib_cm +ib_core +ib_ehca +ib_ipoib +ib_iser +ib_isert +ib_mad +ibmaem +ibmpex +ibmpowernv +ib_mthca +ibmvfc +ib_qib +ib_sa +ib_srp +ib_srpt +ib_ucm +ib_umad +ib_uverbs +icom +icplus +icp_multi +ics932s401 +ideapad_slidebar +idma64 +idmouse +idt77252 +idtcps +idt_gen2 +ieee802154 +ieee802154_6lowpan +ieee802154_socket +ifb +iforce +igb +igbvf +igorplugusb +iguanair +iio_dummy +iio_hwmon +iio-trig-interrupt +iio-trig-periodic-rtc +iio-trig-sysfs +ii_pci20kc +ili210x +ili922x +ili9320 +imm +imon +ims-pcu +imx074 +imx_thermal +ina209 +ina2xx +industrialio +industrialio-triggered-buffer +inet_diag +inexio +inftl +initio +input-leds +input-polldev +int51x1 +intel_vr_nor +interact +interval_tree_test +inv-mpu6050 +ioc4 +io_edgeport +io_ti +iowarrior +ip6_gre +ip6table_filter +ip6table_mangle +ip6table_nat +ip6table_raw +ip6_tables +ip6table_security +ip6t_ah +ip6t_eui64 +ip6t_frag +ip6t_hbh +ip6t_ipv6header +ip6t_MASQUERADE +ip6t_mh +ip6t_NPT +ip6t_REJECT +ip6t_rpfilter +ip6t_rt +ip6t_SYNPROXY +ip6_tunnel +ip6_udp_tunnel +ip6_vti +ipack +ipaq +ipcomp +ipcomp6 +ipddp +ipg +ip_gre +iphase +ipheth +ipip +ipmi_devintf +ipmi_msghandler +ipmi_powernv +ipmi_poweroff +ipmi_si +ipmi_ssif +ipmi_watchdog +ipoctal +ipr +ips +ip_set +ip_set_bitmap_ip +ip_set_bitmap_ipmac +ip_set_bitmap_port +ip_set_hash_ip +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 +iptable_filter +iptable_mangle +iptable_nat +iptable_raw +ip_tables +iptable_security +ipt_ah +ipt_CLUSTERIP +ipt_ECN +ipt_MASQUERADE +ipt_REJECT +ipt_rpfilter +ipt_SYNPROXY +ip_tunnel +ipvlan +ip_vs +ip_vs_dh +ip_vs_fo +ip_vs_ftp +ip_vs_lblc +ip_vs_lblcr +ip_vs_lc +ip_vs_nq +ip_vs_pe_sip +ip_vs_rr +ip_vs_sed +ip_vs_sh +ip_vs_wlc +ip_vs_wrr +ip_vti +ipw +ipw2100 +ipw2200 +ipx +ircomm +ircomm-tty +irda +irda-usb +ir-hix5hd2 +ir-jvc-decoder +ir-kbd-i2c +irlan +ir-lirc-codec +ir-mce_kbd-decoder +ir-nec-decoder +irnet +ir-rc5-decoder +ir-rc6-decoder +ir-sanyo-decoder +ir-sharp-decoder +ir-sony-decoder +irtty-sir +ir-usb +ir-xmp-decoder +iscsi_boot_sysfs +iscsi_target_mod +iscsi_tcp +isdn +isdn_bsdcomp +isdnhdlc +isicom +isight_firmware +isl29003 +isl29018 +isl29020 +isl29028 +isl29125 +isl6271a-regulator +isl6405 +isl6421 +isl6423 +isl9305 +isofs +isp116x-hcd +isp1362-hcd +isp1704_charger +isp1760 +it913x +itd1000 +itg3200 +iuu_phoenix +ivtv +ivtv-alsa +ivtvfb +iw_c2 +iw_cm +iw_cxgb3 +iw_cxgb4 +iwl3945 +iwl4965 +iwldvm +iwlegacy +iwlmvm +iwlwifi +iw_nes +ix2505v +ixgb +ixgbe +ixgbevf +janz-cmodio +janz-ican3 +jc42 +jedec_probe +jffs2 +jfs +jitterentropy_rng +jmb38x_ms +jme +joydev +joydump +jr3_pci +jsa1212 +jsm +kafs +kalmia +kaweth +kbic +kbtab +kcomedilib +ke_counter +kempld-core +kempld_wdt +kernelcapi +keyspan +keyspan_pda +keyspan_remote +kfifo_buf +khazad +kingsun-sir +kl5kusb105 +kmx61 +ko2iblnd +kobil_sct +ks0108 +ks8842 +ks8851 +ks8851_mll +ks959-sir +ksdazzle-sir +ksocklnd +ksz884x +ktti +kvaser_pci +kvaser_usb +kvm +kvm-hv +kvm-pr +kxcjk-1013 +kxsd9 +kxtj9 +kyrofb +l1oip +l2tp_core +l2tp_debugfs +l2tp_eth +l2tp_ip +l2tp_ip6 +l2tp_netlink +l2tp_ppp +l4f00242t03 +l64781 +lanai +lapb +lapbether +latch-addr-flash +lattice-ecp3-config +lcd +ld9040 +ldusb +lec +led-class-flash +leds-88pm860x +leds-adp5520 +leds-bcm6328 +leds-bcm6358 +leds-bd2802 +leds-blinkm +leds-da903x +leds-da9052 +leds-dac124s085 +leds-gpio +leds-ktd2692 +leds-lm3530 +leds-lm3533 +leds-lm355x +leds-lm3642 +leds-lp3944 +leds-lp8788 +leds-lp8860 +leds-lt3593 +leds-max77693 +leds-max8997 +leds-mc13783 +leds-menf21bmc +leds-pca9532 +leds-pca955x +leds-pca963x +leds-pm8941-wled +leds-powernv +leds-pwm +leds-regulator +leds-tca6507 +leds-tlc591xx +leds-wm831x-status +leds-wm8350 +ledtrig-backlight +ledtrig-camera +ledtrig-default-on +ledtrig-gpio +ledtrig-heartbeat +ledtrig-oneshot +ledtrig-timer +ledtrig-transient +legousbtower +lg2160 +lgdt3305 +lgdt3306a +lgdt330x +lgs8gxx +lg-vl600 +lib80211 +lib80211_crypt_ccmp +lib80211_crypt_tkip +lib80211_crypt_wep +libahci +libahci_platform +libceph +libcfs +libcomposite +libcrc32c +libcxgbi +libertas +libertas_sdio +libertas_spi +libertas_tf +libertas_tf_usb +libfc +libfcoe +libipw +libiscsi +libiscsi_tcp +libore +libosd +libsas +lightning +lineage-pem +linear +liquidio +lirc_bt829 +lirc_dev +lirc_imon +lirc_parallel +lirc_sasem +lirc_serial +lirc_sir +lirc_zilog +lis3l02dq +lis3lv02d +lis3lv02d_i2c +lis3lv02d_spi +litelink-sir +lkkbd +llc +llc2 +ll_temac +lm25066 +lm3533-als +lm3533_bl +lm3533-core +lm3533-ctrlbank +lm3630a_bl +lm3639_bl +lm63 +lm70 +lm73 +lm75 +lm77 +lm78 +lm80 +lm83 +lm8323 +lm8333 +lm85 +lm87 +lm90 +lm92 +lm93 +lm95234 +lm95241 +lm95245 +lms283gf05 +lms501kf03 +lmv +lnbp21 +lnbp22 +lnet +lnet_selftest +lockd +locktorture +lov +lp +lp3943 +lp3971 +lp3972 +lp855x_bl +lp8727_charger +lp872x +lp8755 +lp8788_adc +lp8788_bl +lp8788-buck +lp8788-charger +lp8788-ldo +lpc_ich +lpc_sch +lpddr_cmds +lpfc +lru_cache +lrw +ltc2941-battery-gauge +ltc2945 +ltc2978 +ltc3589 +ltc4151 +ltc4215 +ltc4222 +ltc4245 +ltc4260 +ltc4261 +ltr501 +ltv350qv +lustre +lv5207lp +lvstest +lxt +lz4 +lz4_compress +lz4hc +lz4hc_compress +m25p80 +m2m-deinterlace +m52790 +m62332 +m88ds3103 +m88rs2000 +m88rs6000t +ma600-sir +mac80211 +mac80211_hwsim +mac802154 +macb +mac-celtic +mac-centeuro +mac-croatian +mac-cyrillic +mac-gaelic +mac-greek +mac_hid +mac-iceland +mac-inuit +mac-roman +mac-romanian +mac-turkish +macvlan +macvtap +mag3110 +magellan +mailbox-altera +mantis +mantis_core +map_absent +map_funcs +map_ram +map_rom +marvell +matrix-keymap +matrix_keypad +matroxfb_accel +matroxfb_base +matroxfb_crtc2 +matroxfb_DAC1064 +matroxfb_g450 +matroxfb_maven +matroxfb_misc +matroxfb_Ti3026 +matrox_w1 +max1027 +max1111 +max11801_ts +max1363 +max14577 +max14577_charger +max1586 +max16064 +max16065 +max1619 +max1668 +max17040_battery +max17042_battery +max197 +max2165 +max3100 +max3421-hcd +max34440 +max517 +max5821 +max63xx_wdt +max6639 +max6642 +max6650 +max6697 +max6875 +max7359_keypad +max77686 +max77693 +max77693_charger +max77693-haptic +max77802 +max77843 +max77843-haptic +max8649 +max8660 +max8688 +max8903_charger +max8907 +max8907-regulator +max8925_bl +max8925_onkey +max8925_power +max8925-regulator +max8952 +max8973-regulator +max8997 +max8997_charger +max8997_haptic +max8998 +max8998_charger +mb862xxfb +mb86a16 +mb86a20s +mc13783-adc +mc13783-pwrbutton +mc13783-regulator +mc13783_ts +mc13892-regulator +mc13xxx-core +mc13xxx-i2c +mc13xxx-regulator-core +mc13xxx-spi +mc44s803 +m_can +mcb +mcb-pci +mceusb +mcp2120-sir +mcp251x +mcp3021 +mcp320x +mcp3422 +mcp4725 +mcp4922 +mcryptd +mcs5000_ts +mcs7780 +mcs7830 +mcs_touchkey +mct_u232 +md4 +md5-ppc +mdc +mdc800 +md-cluster +mdio +mdio-bcm-unimac +mdio-bitbang +mdio-gpio +mdio-mux +mdio-mux-gpio +mdio-mux-mmioreg +mdio-octeon +me4000 +me_daq +media +megaraid +megaraid_mbox +megaraid_mm +megaraid_sas +memory-notifier-error-inject +memstick +mena21_wdt +menf21bmc +menf21bmc_hwmon +menf21bmc_wdt +men_z135_uart +men_z188_adc +metronomefb +metro-usb +mf6x4 +mga +mgc +michael_mic +micrel +microread +microread_i2c +microtek +mii +minix +mip6 +mISDN_core +mISDN_dsp +mISDNinfineon +mISDNipac +mISDNisar +mite +mk712 +mkiss +mlx4_core +mlx4_en +mlx4_ib +mlx5_core +mlx5_ib +mlx90614 +mma8450 +mma8452 +mma9551 +mma9551_core +mma9553 +mmc35240 +mmc_block +mmc_spi +mms114 +mn88472 +mn88473 +mos7720 +mos7840 +moxa +mpc624 +mpl115 +mpl3115 +mpls_gso +mpls_router +mpoa +mpr121_touchkey +mpt2sas +mpt3sas +mptbase +mptctl +mptfc +mptlan +mptsas +mptscsih +mptspi +mpu3050 +mrf24j40 +mrp +ms5611_core +ms5611_i2c +ms5611_spi +ms_block +msdos +msi001 +msi2500 +msp3400 +mspro_block +mt2060 +mt2063 +mt20xx +mt2131 +mt2266 +mt29f_spinand +mt312 +mt352 +mt6397-core +mt6397-regulator +mt7601u +mt9m001 +mt9m111 +mt9t031 +mt9t112 +mt9v011 +mt9v022 +mtd +mtd_blkdevs +mtdblock +mtdblock_ro +mtd_dataflash +mtdoops +mtdram +mtdswap +mtip32xx +mtk-sd +mtouch +multipath +multiq3 +musb_hdrc +mvmdio +mvsas +mv_u3d_core +mv_udc +mvumi +mwifiex +mwifiex_pcie +mwifiex_sdio +mwifiex_usb +mwl8k +mxb +mxl111sf-demod +mxl111sf-tuner +mxl301rf +mxl5005s +mxl5007t +mxser +mxuport +myri10ge +nand +nand_bch +nand_ecc +nand_ids +nandsim +national +natsemi +nau7802 +navman +nbd +nci +nci_uart +ncpfs +nct7802 +nct7904 +nd_blk +nd_btt +nd_pmem +ne2k-pci +neofb +net1080 +net2272 +net2280 +netconsole +netjet +netlink_diag +netrom +netxen_nic +newtonkbd +nfc +nfc_digital +nfcmrvl +nfcmrvl_uart +nfcmrvl_usb +nf_conntrack +nf_conntrack_amanda +nf_conntrack_broadcast +nf_conntrack_ftp +nf_conntrack_h323 +nf_conntrack_ipv4 +nf_conntrack_ipv6 +nf_conntrack_irc +nf_conntrack_netbios_ns +nf_conntrack_netlink +nf_conntrack_pptp +nf_conntrack_proto_dccp +nf_conntrack_proto_gre +nf_conntrack_proto_sctp +nf_conntrack_proto_udplite +nf_conntrack_sane +nf_conntrack_sip +nf_conntrack_snmp +nf_conntrack_tftp +nfcsim +nfcwilink +nf_defrag_ipv4 +nf_defrag_ipv6 +nf_log_arp +nf_log_bridge +nf_log_common +nf_log_ipv4 +nf_log_ipv6 +nf_nat +nf_nat_amanda +nf_nat_ftp +nf_nat_h323 +nf_nat_ipv4 +nf_nat_ipv6 +nf_nat_irc +nf_nat_masquerade_ipv4 +nf_nat_masquerade_ipv6 +nf_nat_pptp +nf_nat_proto_dccp +nf_nat_proto_gre +nf_nat_proto_sctp +nf_nat_proto_udplite +nf_nat_redirect +nf_nat_sip +nf_nat_snmp_basic +nf_nat_tftp +nfnetlink +nfnetlink_acct +nfnetlink_cthelper +nfnetlink_cttimeout +nfnetlink_log +nfnetlink_queue +nf_reject_ipv4 +nf_reject_ipv6 +nfs +nfs_acl +nfsd +nfs_layout_flexfiles +nfs_layout_nfsv41_files +nfsv2 +nfsv3 +nfsv4 +nf_synproxy_core +nf_tables +nf_tables_arp +nf_tables_bridge +nf_tables_inet +nf_tables_ipv4 +nf_tables_ipv6 +nf_tables_netdev +nft_chain_nat_ipv4 +nft_chain_nat_ipv6 +nft_chain_route_ipv4 +nft_chain_route_ipv6 +nft_compat +nft_counter +nft_ct +nft_exthdr +nft_hash +nftl +nft_limit +nft_log +nft_masq +nft_masq_ipv4 +nft_masq_ipv6 +nft_meta +nft_meta_bridge +nft_nat +nft_queue +nft_rbtree +nft_redir +nft_redir_ipv4 +nft_redir_ipv6 +nft_reject +nft_reject_bridge +nft_reject_inet +nft_reject_ipv4 +nft_reject_ipv6 +ngene +n_gsm +nhc_dest +nhc_fragment +nhc_hop +nhc_ipv6 +nhc_mobility +nhc_routing +nhc_udp +n_hdlc +ni_6527 +ni_65xx +ni_660x +ni_670x +ni_at_a2150 +ni_at_ao +ni_atmio +ni_atmio16d +nicpf +nicstar +nicvf +ni_labpc +ni_labpc_common +ni_labpc_isadma +ni_labpc_pci +nilfs2 +ni_pcidio +ni_pcimio +ni_tio +ni_tiocmd +niu +ni_usb6501 +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 +nosy +notifier-error-inject +nouveau +nozomi +nps_enet +n_r3964 +ns558 +ns83820 +nsc-ircc +ntb +ntb_netdev +ntb_pingpong +ntb_tool +ntb_transport +ntc_thermistor +ntfs +n_tracerouter +n_tracesink +null_blk +nvidiafb +nvme +nx-compress +nx-compress-powernv +nx-compress-pseries +nxp-nci +nxp-nci_i2c +nxt200x +nxt6000 +obdclass +obdecho +objlayoutdriver +ocfb +ocfs2 +ocfs2_dlm +ocfs2_dlmfs +ocfs2_nodemanager +ocfs2_stackglue +ocfs2_stack_o2cb +ocfs2_stack_user +ocrdma +of_mmc_spi +ofpart +of_xilinx_wdt +ohci-platform +old_belkin-sir +omap4-keypad +omfs +omninet +on20 +on26 +onenand +opal-prd +opencores-kbd +openvswitch +oprofile +opticon +option +or51132 +or51211 +orinoco +orinoco_nortel +orinoco_plx +orinoco_tmd +orinoco_usb +osc +osd +osdblk +osst +oti6858 +ov2640 +ov5642 +ov6650 +ov7640 +ov7670 +ov772x +ov9640 +ov9740 +overlay +oxu210hp-hcd +ozwpan +p54common +p54pci +p54spi +p54usb +p8022 +p8023 +palmas-pwrbutton +palmas-regulator +pandora_bl +panel +panel-ld9040 +panel-s6e8aa0 +panel-sharp-lq101r1sx01 +panel-simple +paride +parkbd +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 +pc300too +pcap_keys +pcap-regulator +pcap_ts +pcbc +pcd +pcf50633 +pcf50633-adc +pcf50633-backlight +pcf50633-charger +pcf50633-gpio +pcf50633-input +pcf50633-regulator +pcf8574_keypad +pcf8591 +pch_udc +pci +pci200syn +pcips2 +pci-stub +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_usb +pegasus +penmount +percpu_test +pf +pfuze100-regulator +pg +phantom +phonet +phram +phy-bcm-kona-usb2 +phy-exynos-usb2 +phy-gpio-vbus-usb +phy-isp1301 +phy-pxa-28nm-hsic +phy-pxa-28nm-usb2 +physmap +physmap_of +phy-tahvo +phy-tusb1210 +pixcir_i2c_ts +pkcs7_message +pkcs7_test_key +pktcdvd +pktgen +pl2303 +platform_lcd +plat_nand +plat-ram +plip +plusb +pluto2 +plx_pci +pm2fb +pm3fb +pm80xx +pmbus +pmbus_core +pmc551 +pmcraid +pm-notifier-error-inject +pn533 +pn544 +pn544_i2c +pn_pep +poly1305_generic +port100 +powermate +powernv_flash +powernv-rng +powr1220 +ppa +ppdev +ppp_async +ppp_deflate +ppp_mppe +pppoatm +pppoe +pppox +ppp_synctty +pps-gpio +pps-ldisc +pps_parport +pptp +prism2_usb +ps2mult +ps8622 +pseries_energy +pseries-rng +psmouse +psnap +pt +ptlrpc +ptn3460 +pvrusb2 +pwc +pwm-beeper +pwm_bl +pwm-fan +pwm-fsl-ftm +pwm-lp3943 +pwm-pca9685 +pwm-regulator +pwm-twl +pwm-twl-led +pxa27x_udc +qcaspi +qcaux +qcom-spmi-iadc +qcom_spmi-regulator +qcom-spmi-temp-alarm +qcom-spmi-vadc +qcserial +qinfo_probe +qla1280 +qla2xxx +qla3xxx +qla4xxx +qlcnic +qlge +qm1d1c0042 +qmi_wwan +qnx4 +qnx6 +qsemi +qt1010 +qt1070 +qt2160 +quatech2 +quota_tree +quota_v1 +quota_v2 +qxl +r128 +r592 +r6040 +r8152 +r8169 +r8188eu +r8192e_pci +r8192u_usb +r820t +r852 +r8712u +r8723au +r8a66597-hcd +r8a66597-udc +radeon +radeonfb +radio-bcm2048 +radio-i2c-si470x +radio-keene +radio-ma901 +radio-maxiradio +radio-mr800 +radio-platform-si4713 +radio-raremono +radio-shark +radio-si476x +radio-tea5764 +radio-usb-si470x +radio-usb-si4713 +radio-wl1273 +raid0 +raid1 +raid10 +raid456 +raid6_pq +raid6test +raid_class +ramoops +raw +rbd +rbtree_test +rc5t583-regulator +rc-adstech-dvb-t-pci +rc-alink-dtu-m +rc-anysee +rc-apac-viewcomp +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-behold +rc-behold-columbus +rc-budget-ci-old +rc-cinergy +rc-cinergy-1400 +rc-core +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-dvbsky +rc-em-terratec +rc-encore-enltv +rc-encore-enltv2 +rc-encore-enltv-fm53 +rc-evga-indtube +rc-eztv +rc-flydvb +rc-flyvideo +rc-fusionhdtv-mce +rc-gadmei-rm008z +rc-genius-tvgo-a11mce +rc-gotview7135 +rc-hauppauge +rc-imon-mce +rc-imon-pad +rc-iodata-bctv7e +rc-it913x-v1 +rc-it913x-v2 +rc-kaiomy +rc-kworld-315u +rc-kworld-pc150u +rc-kworld-plus-tv-analog +rc-leadtek-y04g0051 +rc-lirc +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-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-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-twinhan1027 +rc-twinhan-dtv-cab-ci +rc-videomate-m1f +rc-videomate-s350 +rc-videomate-tv-pvr +rc-winfast +rc-winfast-usbii-deluxe +rdc321x-southbridge +rdma_cm +rdma_ucm +rds +rds_rdma +rds_tcp +realtek +redboot +redrat3 +reed_solomon +regmap-spmi +regulator-haptic +reiserfs +remoteproc +retu-mfd +retu-pwrbutton +retu_wdt +rfc1051 +rfc1201 +rfcomm +rfd_ftl +rfkill-gpio +rfkill-regulator +rio500 +rionet +rio-scan +rivafb +rj54n1cb0c +rk808 +rk808-regulator +rmd128 +rmd160 +rmd256 +rmd320 +rn5t618 +rn5t618-regulator +rn5t618_wdt +rndis_host +rndis_wlan +rocket +romfs +rose +rotary_encoder +rp2 +rpadlpar_io +rpaphp +rpcrdma +rpcsec_gss_krb5 +rsa_generic +rsi_91x +rsi_sdio +rsi_usb +rsxx +rt2400pci +rt2500pci +rt2500usb +rt2800lib +rt2800mmio +rt2800pci +rt2800usb +rt2x00lib +rt2x00mmio +rt2x00pci +rt2x00usb +rt5033 +rt5033_battery +rt5033-regulator +rt61pci +rt73usb +rt9455_charger +rtas_flash +rtc-88pm80x +rtc-88pm860x +rtc-ab3100 +rtc-ab-b5ze-s3 +rtc-abx80x +rtc-as3722 +rtc-bq32k +rtc-bq4802 +rtc-cmos +rtc_cmos_setup +rtc-da9052 +rtc-da9055 +rtc-da9063 +rtc-ds1286 +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-ds3234 +rtc-em3027 +rtc-fm3130 +rtc-generic +rtc-hid-sensor-time +rtc-hym8563 +rtc-isl12022 +rtc-isl12057 +rtc-isl1208 +rtc-lp8788 +rtc-m41t80 +rtc-m41t93 +rtc-m41t94 +rtc-m48t35 +rtc-m48t59 +rtc-m48t86 +rtc-max6900 +rtc-max6902 +rtc-max77686 +rtc-max77802 +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-pcf8563 +rtc-pcf8583 +rtc-r9701 +rtc-rc5t583 +rtc-rk808 +rtc-rp5c01 +rtc-rs5c348 +rtc-rs5c372 +rtc-rv3029c2 +rtc-rx4581 +rtc-rx8025 +rtc-rx8581 +rtc-s35390a +rtc-s5m +rtc-snvs +rtc-stk17ta8 +rtc-tps6586x +rtc-tps65910 +rtc-tps80031 +rtc-twl +rtc-v3020 +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 +rtl8723ae +rtl8723be +rtl8723-common +rtl8821ae +rtllib +rtllib_crypt_ccmp +rtllib_crypt_tkip +rtllib_crypt_wep +rtl_pci +rtl_usb +rtlwifi +rts5208 +rtsx_pci +rtsx_pci_ms +rtsx_pci_sdmmc +rtsx_usb +rtsx_usb_ms +rtsx_usb_sdmmc +rx51_battery +rxkad +s1d13xxxfb +s2250 +s2255drv +s2io +s2mpa01 +s2mps11 +s3fb +s526 +s5h1409 +s5h1411 +s5h1420 +s5m8767 +s626 +s6e63m0 +s921 +saa6588 +saa6752hs +saa7115 +saa7127 +saa7134 +saa7134-alsa +saa7134-dvb +saa7134-empress +saa7134-go7007 +saa7146 +saa7146_vv +saa7164 +saa717x +saa7706h +safe_serial +salsa20_generic +samsung-sxgbe +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 +savage +savagefb +sbp_target +sbs-battery +sc16is7xx +sc92031 +sca3000 +scanlog +sch_atm +sch_cbq +sch_choke +sch_codel +sch_drr +sch_dsmark +sch_fq +sch_fq_codel +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_tbf +sch_teql +scsi_debug +scsi_dh +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_probe +sdhci +sdhci_f_sdh30 +sdhci-of-arasan +sdhci-of-esdhc +sdhci-of-hlwd +sdhci-pci +sdhci-pltfm +sdio_uart +seed +sensorhub +seqiv +ser_gigaset +serial2002 +serio_raw +sermouse +serpent_generic +serport +ses +sfc +sha1-powerpc +shark2 +sht15 +sht21 +shtc1 +sh_veu +si2157 +si2165 +si2168 +si21xx +si4713 +si476x-core +si7005 +si7020 +sidewinder +sierra +sierra_net +sil164 +sir-dev +sis +sis190 +sis5595 +sis900 +sisfb +sisusbvga +sit +sja1000 +sja1000_isa +sja1000_platform +skd +skfp +skge +sky2 +sky81452 +sky81452-backlight +sky81452-regulator +sl811-hcd +slcan +slip +slram +sm501 +sm501fb +sm750fb +sm7xxfb +smb347-charger +sm_common +sm_ftl +smipcie +smm665 +smsc +smsc47m192 +smsc75xx +smsc911x +smsc9420 +smsc95xx +smsc-ircc2 +smscufx +smsdvb +smsmdtv +smssdio +smsusb +snd +snd-ac97-codec +snd-ad1889 +snd-ak4113 +snd-ak4114 +snd-ak4xxx-adda +snd-ali5451 +snd-aloop +snd-als300 +snd-als4000 +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-firewire-lib +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-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-pcm-oss +snd-pcxhr +snd-portman2x4 +snd-pt2258 +snd-rawmidi +snd-riptide +snd-rme32 +snd-rme96 +snd-rme9652 +snd-sb-common +snd-scs1x +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-ac97 +snd-soc-adau1701 +snd-soc-ak4104 +snd-soc-ak4554 +snd-soc-ak4642 +snd-soc-ak5386 +snd-soc-alc5623 +snd-soc-core +snd-soc-cs35l32 +snd-soc-cs4265 +snd-soc-cs4270 +snd-soc-cs4271 +snd-soc-cs4271-i2c +snd-soc-cs4271-spi +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-es8328 +snd-soc-fsl-asrc +snd-soc-fsl-esai +snd-soc-fsl-sai +snd-soc-fsl-spdif +snd-soc-fsl-ssi +snd-soc-hdmi-codec +snd-soc-imx-audmux +snd-soc-pcm1681 +snd-soc-pcm1792a-codec +snd-soc-pcm512x +snd-soc-pcm512x-i2c +snd-soc-pcm512x-spi +snd-soc-rt5631 +snd-soc-sgtl5000 +snd-soc-si476x +snd-soc-sigmadsp +snd-soc-sigmadsp-i2c +snd-soc-simple-card +snd-soc-spdif-rx +snd-soc-spdif-tx +snd-soc-ssm2602 +snd-soc-ssm2602-i2c +snd-soc-ssm2602-spi +snd-soc-ssm4567 +snd-soc-sta32x +snd-soc-sta350 +snd-soc-tas2552 +snd-soc-tas5086 +snd-soc-tas571x +snd-soc-tfa9879 +snd-soc-tlv320aic23 +snd-soc-tlv320aic23-i2c +snd-soc-tlv320aic23-spi +snd-soc-tlv320aic31xx +snd-soc-tlv320aic3x +snd-soc-tpa6130a2 +snd-soc-ts3a227e +snd-soc-wm8510 +snd-soc-wm8523 +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-wm8804 +snd-soc-wm8804-i2c +snd-soc-wm8804-spi +snd-soc-wm8903 +snd-soc-wm8962 +snd-soc-wm8978 +snd-soc-xtfpga-i2s +snd-sonicvibes +snd-timer +snd-trident +snd-ua101 +snd-usb-6fire +snd-usb-audio +snd-usb-caiaq +snd-usb-hiface +snd-usb-line6 +snd-usbmidi-lib +snd-usb-pod +snd-usb-podhd +snd-usb-toneport +snd-usb-usx2y +snd-usb-variax +snd-util-mem +snd-via82xx +snd-via82xx-modem +snd-virmidi +snd-virtuoso +snd-vx222 +snd-vx-lib +snd-ymfpci +snic +soc_button_array +soc_camera +soc_camera_platform +soc_mediabus +softdog +softing +solo6x10 +solos-pci +sony-btf-mpx +soundcore +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-bitbang +spi-butterfly +spi-cadence +spidev +spi-dln2 +spi-dw +spi-dw-midpci +spi-dw-mmio +spi-gpio +spi_ks8995 +spi-lm70llp +spi-nor +spi-oc-tiny +spi-pxa2xx-platform +spi-sc18is602 +spi-tle62x0 +spi-xcomm +spi-zynqmp-gqspi +spmi +squashfs +sr9700 +sr9800 +ssb +ssb-hcd +ssd1307fb +ssfdc +ssp_accel_sensor +ssp_gyro_sensor +ssp_iio +sst25l +sstfb +ssu100 +st +st1232 +st21nfca_hci +st21nfca_i2c +st_accel +st_accel_i2c +st_accel_spi +starfire +stb0899 +stb6000 +stb6100 +st_drv +ste10Xp +ste_modem_rproc +stex +st_gyro +st_gyro_i2c +st_gyro_spi +stinger +stir4200 +stk1160 +stk3310 +stk8312 +stk8ba50 +stkwebcam +st_magn +st_magn_i2c +st_magn_spi +stmmac +stmmac-platform +stmpe-keypad +stmpe-ts +st-nci +st-nci_i2c +stowaway +stp +st_pressure +st_pressure_i2c +st_pressure_spi +streamzap +st_sensors +st_sensors_i2c +st_sensors_spi +stv0288 +stv0297 +stv0299 +stv0367 +stv0900 +stv090x +stv6110 +stv6110x +sundance +sungem +sungem_phy +sunhme +suni +sunkbd +sunrpc +sur40 +svgalib +sx8 +sx8654 +sx9500 +sym53c8xx +symbolserial +synaptics_i2c +synaptics_i2c_rmi4 +synaptics_usb +synclink +synclink_gt +synclinkmp +syscopyarea +sysfillrect +sysimgblt +sysv +t1pci +t5403 +target_core_file +target_core_iblock +target_core_mod +target_core_pscsi +target_core_user +tc3589x-keypad +tc74 +tc90522 +tca6416-keypad +tca8418_keypad +tcm_fc +tcm_loop +tcm_qla2xxx +tcm_usb_gadget +tcp_bic +tcp_cdg +tcp_dctcp +tcp_diag +tcp_highspeed +tcp_htcp +tcp_hybla +tcp_illinois +tcp_lp +tcp_probe +tcp_scalable +tcp_vegas +tcp_veno +tcp_westwood +tcp_yeah +tcrypt +tcs3414 +tcs3472 +tda10021 +tda10023 +tda10048 +tda1004x +tda10071 +tda10086 +tda18212 +tda18218 +tda18271 +tda18271c2dd +tda665x +tda7432 +tda8083 +tda8261 +tda826x +tda827x +tda8290 +tda9840 +tda9887 +tda998x +tdfx +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 +tekram-sir +test_bpf +test_firmware +test-hexdump +test-kstrtox +test_module +test_power +test-string_helpers +test_udelay +test_user_copy +tgr192 +thmc50 +thunder_bgx +thunderbolt +ti-adc081c +ti-adc128s052 +ti_am335x_adc +ti_am335x_tsc +ti_am335x_tscadc +ti_dac7512 +tifm_7xx1 +tifm_core +tifm_ms +tifm_sd +timeriomem-rng +tipc +ti_usb_3410_5052 +tlan +tm6000 +tm6000-alsa +tm6000-dvb +tmdc +tmp006 +tmp102 +tmp103 +tmp401 +tmp421 +toim3232-sir +torture +toshsd +touchit213 +touchright +touchwin +tpci200 +tpm_atmel +tpm_i2c_atmel +tpm_i2c_infineon +tpm_i2c_nuvoton +tpm-rng +tpm_st33zp24 +tpm_st33zp24_i2c +tpm_st33zp24_spi +tps40422 +tps51632-regulator +tps6105x +tps6105x-regulator +tps62360-regulator +tps65010 +tps65023-regulator +tps6507x +tps6507x-regulator +tps6507x-ts +tps65090-charger +tps65090-regulator +tps65217 +tps65217_bl +tps65217-regulator +tps65218 +tps65218-pwrbutton +tps65218-regulator +tps6524x-regulator +tps6586x-regulator +tps65910-regulator +tps65912-regulator +tps80031-regulator +trancevibrator +trf7970a +tridentfb +ts2020 +ts_bm +tsc2005 +tsc2007 +tsc40 +ts_fsm +tsi568 +tsi57x +tsi721_mport +ts_kmp +tsl2550 +tsl2563 +tsl2583 +tsl2x7x_core +tsl4531 +ttm +ttpci-eeprom +ttusb_dec +ttusbdecfe +ttusbir +tua6100 +tua9001 +tulip +tuner +tuner-simple +tuner-types +tuner-xc2028 +tunnel4 +tunnel6 +turbografx +tvaudio +tveeprom +tvp5150 +tw2804 +tw68 +tw9903 +tw9906 +tw9910 +twidjoy +twl4030_charger +twl4030_keypad +twl4030-madc +twl4030_madc_battery +twl4030-madc-hwmon +twl4030-pwrbutton +twl4030-vibra +twl4030_wdt +twl6030-gpadc +twl6040-vibra +twl-regulator +twofish_common +twofish_generic +typhoon +u132-hcd +uas +ubi +ubifs +ucb1400_core +ucb1400_ts +ucd9000 +ucd9200 +uda1342 +udc-core +udc-xilinx +udf +udl +udlfb +udp_diag +udp_tunnel +ueagle-atm +u_ether +ufs +ufshcd +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 +uli526x +ulpi +umc +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 +unioxx5 +unix_diag +upd64031a +upd64083 +usb3503 +usb_8dev +usb8xxx +usbatm +usb_debug +usbdux +usbduxfast +usbduxsigma +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_uac1 +usb_f_uac2 +usb_f_uvc +usb_gigaset +usbhid +usbip-core +usbip-host +usbkbd +usblcd +usbled +usblp +usbmisc_imx +usbmon +usbmouse +usbnet +usbserial +usb-serial-simple +usbsevseg +usb-storage +usbtest +usbtmc +usbtouchscreen +usbtv +usbvision +usb_wwan +usdhi6rol0 +u_serial +userspace-consumer +ushc +uss720 +uvcvideo +uvesafb +uwb +v4l2-common +v4l2-dv-timings +v4l2-flash-led-class +v4l2-mem2mem +vcan +vcnl4000 +ves1820 +ves1x93 +veth +vf610_adc +vfio +vfio_iommu_spapr_tce +vfio-pci +vfio_spapr_eeh +vfio_virqfd +vga16fb +vgastate +vgem +vgg2432a4 +vhci-hcd +vhost +vhost_net +vhost_scsi +via +via686a +via-ircc +via-rhine +via-sdmmc +via-velocity +videobuf2-core +videobuf2-dma-contig +videobuf2-dma-sg +videobuf2-dvb +videobuf2-memops +videobuf2-vmalloc +videobuf-core +videobuf-dma-sg +videobuf-dvb +videobuf-vmalloc +videodev +vim2m +viperboard +viperboard_adc +virt-dma +virtio-gpu +virtio_input +virtio-rng +virtio_scsi +virtual +visor +vitesse +vivid +vlsi_ir +vmac +vme_pio2 +vme_tsi148 +vme_user +vme_vmivme7805 +vmk80xx +vmwgfx +vmx-crypto +vmxnet3 +vp27smpx +vport-geneve +vport-gre +vport-vxlan +vringh +vsock +vsxxxaa +vt6655_stage +vt6656_stage +vt8231 +vt8623fb +vub300 +vx855 +vxge +vxlan +w1_bq27000 +w1_ds2406 +w1_ds2408 +w1_ds2413 +w1_ds2423 +w1_ds2431 +w1_ds2433 +w1_ds2760 +w1_ds2780 +w1_ds2781 +w1_ds28e04 +w1-gpio +w1_smem +w1_therm +w5100 +w5300 +w6692 +w83781d +w83791d +w83792d +w83793 +w83795 +w83977af_ir +w83l785ts +w83l786ng +wacom +wacom_i2c +wacom_serial4 +wacom_w8001 +walkera0701 +wanxl +warrior +wbsd +wcn36xx +wd719x +wdrtas +wdt87xx_i2c +wdt_pci +whci +whci-hcd +whc-rc +whiteheat +wil6210 +wimax +winbond-840 +windfarm_core +wire +wishbone-serial +wl1251 +wl1251_sdio +wl1251_spi +wl1273-core +wl12xx +wl18xx +wlcore +wlcore_sdio +wlcore_spi +wm831x_backup +wm831x_bl +wm831x-dcdc +wm831x-hwmon +wm831x-isink +wm831x-ldo +wm831x-on +wm831x_power +wm831x-ts +wm831x_wdt +wm8350-hwmon +wm8350_power +wm8350-regulator +wm8350_wdt +wm8400-regulator +wm8739 +wm8775 +wm8994-core +wm8994-irq +wm8994-regmap +wm8994-regulator +wm97xx-ts +wp512 +wusb-cbaf +wusbcore +wusb-wa +x25 +x25_asy +xc4000 +xc5000 +xcbc +xfrm4_mode_beet +xfrm4_mode_transport +xfrm4_mode_tunnel +xfrm4_tunnel +xfrm6_mode_beet +xfrm6_mode_ro +xfrm6_mode_transport +xfrm6_mode_tunnel +xfrm6_tunnel +xfrm_algo +xfrm_ipcomp +xfrm_user +xfs +xgifb +xhci-plat-hcd +xilinx_ps2 +xilinx-tpg +xilinx_uartps +xilinx-video +xilinx-vtc +xillybus_core +xillybus_of +xillybus_pcie +xor +xpad +xsens_mt +x_tables +xt_addrtype +xt_AUDIT +xt_bpf +xt_cgroup +xt_CHECKSUM +xt_CLASSIFY +xt_cluster +xt_comment +xt_connbytes +xt_connlabel +xt_connlimit +xt_connmark +xt_CONNSECMARK +xt_conntrack +xt_cpu +xt_CT +xt_dccp +xt_devgroup +xt_dscp +xt_DSCP +xt_ecn +xt_esp +xt_hashlimit +xt_helper +xt_hl +xt_HL +xt_HMARK +xt_IDLETIMER +xt_ipcomp +xt_iprange +xt_ipvs +xtkbd +xt_l2tp +xt_LED +xt_length +xt_limit +xt_LOG +xt_mac +xt_mark +xt_multiport +xt_nat +xt_NETMAP +xt_nfacct +xt_NFLOG +xt_NFQUEUE +xt_osf +xt_owner +xt_physdev +xt_pkttype +xt_policy +xt_quota +xt_rateest +xt_RATEEST +xt_realm +xt_recent +xt_REDIRECT +xts +xt_sctp +xt_SECMARK +xt_set +xt_socket +xt_state +xt_statistic +xt_string +xt_tcpmss +xt_TCPMSS +xt_TCPOPTSTRIP +xt_tcpudp +xt_TEE +xt_time +xt_TPROXY +xt_TRACE +xt_u32 +xusbatm +xz_dec_test +yam +yealink +yellowfin +yurex +zaurus +zd1201 +zd1211rw +zforce_ts +zhenhua +zl10036 +zl10039 +zl10353 +zl6100 +zlib +zr364xx +zram --- linux-raspi2-4.2.0.orig/debian.master/changelog +++ linux-raspi2-4.2.0/debian.master/changelog @@ -0,0 +1,15404 @@ +linux (4.2.0-27.32) wily; urgency=low + + [ Brad Figg ] + + * Release Tracking Bug + - LP: #1536867 + + [ Andy Whitcroft ] + + * SAUCE: (no-up) add compat_uts_machine= kernel command line override + - LP: #1520627 + + [ Colin Ian King ] + + * SAUCE: (no-up) ACPI / tables: Add acpi_force_32bit_fadt_addr option to + force 32 bit FADT addresses + - LP: #1529381 + + [ Eric Dumazet ] + + * SAUCE: (no-up) udp: properly support MSG_PEEK with truncated buffers + - LP: #1527902 + + [ Guilherme G. Piccoli ] + + * SAUCE: powerpc/eeh: Validate arch in eeh_add_device_early() + - LP: #1486180 + + [ Tim Gardner ] + + * SAUCE: (no-up) Revert "[SCSI] libiscsi: Reduce locking contention in + fast path" + - LP: #1517142 + * [Config] Add DRM ast driver to udeb installer image + - LP: #1514711 + + [ Upstream Kernel Changes ] + + * net/mlx5e: Re-eanble client vlan TX acceleration + - LP: #1533249 + * net/mlx5e: Fix LSO vlan insertion + - LP: #1533249 + * net/mlx5e: Fix inline header size calculation + - LP: #1533249 + * net: usb: cdc_ncm: Adding Dell DW5812 LTE Verizon Mobile Broadband Card + - LP: #1533118 + * net: usb: cdc_ncm: Adding Dell DW5813 LTE AT&T Mobile Broadband Card + - LP: #1533118 + * powerpc/eeh: Fix recursive fenced PHB on Broadcom shiner adapter + - LP: #1532942 + + -- Brad Figg Thu, 21 Jan 2016 18:44:37 -0800 + +linux (4.2.0-26.31) wily; urgency=low + + [ Luis Henriques ] + + * Release Tracking Bug + - LP: #1535795 + * Merged back Ubuntu-4.2.0-25.30 + + -- Luis Henriques Tue, 19 Jan 2016 15:35:02 +0000 + +linux (4.2.0-25.30) wily; urgency=low + + [ Upstream Kernel Changes ] + + * KEYS: Fix keyring ref leak in join_session_keyring() + - LP: #1534887 + - CVE-2016-0728 + + -- Luis Henriques Mon, 18 Jan 2016 10:30:55 +0000 + +linux (4.2.0-24.29) wily; urgency=low + + [ Luis Henriques ] + + * Release Tracking Bug + - LP: #1532832 + + [ Eric Dumazet ] + + * SAUCE: (noup) net: fix IP early demux races + - LP: #1526946 + + [ Haiyang Zhang ] + + * SAUCE: hv_netvsc: Use simple parser for IPv4 and v6 headers + - LP: #1519917 + + [ Hui Wang ] + + * [Config] CONFIG_I2C_DESIGNWARE_BAYTRAIL=y, CONFIG_IOSF_MBI=y + - LP: #1527096 + + [ Upstream Kernel Changes ] + + * Revert "usb: dwc3: gadget: drop unnecessary loop when cleaning up TRBs" + - LP: #1524698 + * Revert "dm mpath: fix stalls when handling invalid ioctls" + - LP: #1532342 + * drm/fbdev: Return -EBUSY when oopsing + - LP: #1520427 + * irda: precedence bug in irlmp_seq_hb_idx() + - LP: #1524698 + * tipc: allow non-linear first fragment buffer + - LP: #1524698 + * tcp: remove improper preemption check in tcp_xmit_probe_skb() + - LP: #1524698 + * netlink: fix locking around NETLINK_LIST_MEMBERSHIPS + - LP: #1524698 + * qmi_wwan: add Sierra Wireless MC74xx/EM74xx + - LP: #1524698 + * macvtap: unbreak receiving of gro skb with frag list + - LP: #1524698 + * ppp: fix pppoe_dev deletion condition in pppoe_release() + - LP: #1524698 + * amd-xgbe: Use wmb before updating current descriptor count + - LP: #1524698 + * amd-xgbe: Fix race between access of desc and desc index + - LP: #1524698 + * net: fec: Remove unneeded use of IS_ERR_VALUE() macro + - LP: #1524698 + * ipv6: gre: support SIT encapsulation + - LP: #1524698 + * net: fec: normalize return value of pm_runtime_get_sync() in MDIO write + - LP: #1524698 + * fib_trie: leaf_walk_rcu should not compute key if key is less than + pn->key + - LP: #1524698 + * RDS-TCP: Recover correctly from pskb_pull()/pksb_trim() failure in + rds_tcp_data_recv + - LP: #1524698 + * net/mlx4: Copy/set only sizeof struct mlx4_eqe bytes + - LP: #1524698 + * tipc: linearize arriving NAME_DISTR and LINK_PROTO buffers + - LP: #1524698 + * ipv4: fix to not remove local route on link down + - LP: #1524698 + * ipv4: update RTNH_F_LINKDOWN flag on UP event + - LP: #1524698 + * stmmac: Correctly report PTP capabilities. + - LP: #1524698 + * ipmr: fix possible race resulting from improper usage of + IP_INC_STATS_BH() in preemptible context. + - LP: #1524698 + * sit: fix sit0 percpu double allocations + - LP: #1524698 + * sfc: push partner queue for skb->xmit_more + - LP: #1524698 + * net: avoid NULL deref in inet_ctl_sock_destroy() + - LP: #1524698 + * ipv6: clean up dev_snmp6 proc entry when we fail to initialize + inet6_dev + - LP: #1524698 + * ipv4: disable BH when changing ip local port range + - LP: #1524698 + * packet: race condition in packet_bind + - LP: #1524698 + * bonding: fix panic on non-ARPHRD_ETHER enslave failure + - LP: #1524698 + * net: fix a race in dst_release() + - LP: #1524698 + * ARM: 8426/1: dma-mapping: add missing range check in dma_mmap() + - LP: #1524698 + * ARM: 8427/1: dma-mapping: add support for offset parameter in + dma_mmap() + - LP: #1524698 + * ARM: common: edma: Fix channel parameter for irq callbacks + - LP: #1524698 + * ARM: dts: imx27.dtsi: change the clock information for usb + - LP: #1524698 + * ARM: tegra: paz00: use con_id's to refer GPIO's in gpiod_lookup table + - LP: #1524698 + * ARM: at91/dt: corrections to i2c1 declaration to sama5d4 + - LP: #1524698 + * ARM: at91: pm: at91_pm_suspend_in_sram() must be 8-byte aligned + - LP: #1524698 + * ARM: dts: Fix WLAN regression on omap5-uevm + - LP: #1524698 + * ARM: dts: sun6i: hummingbird: Fix VDD-CPU and VDD-GPU regulator names + - LP: #1524698 + * ARM: pxa: remove incorrect __init annotation on pxa27x_set_pwrmode + - LP: #1524698 + * MIPS: lantiq: add clk_round_rate() + - LP: #1524698 + * MIPS: CDMM: Add builtin_mips_cdmm_driver() macro + - LP: #1524698 + * MIPS: ath79: Fix the DDR control initialization on ar71xx and ar934x + - LP: #1524698 + * MIPS: KVM: Fix ASID restoration logic + - LP: #1524698 + * MIPS: KVM: Fix CACHE immediate offset sign extension + - LP: #1524698 + * MIPS: KVM: Uninit VCPU in vcpu_create error path + - LP: #1524698 + * kvm: x86: set KVM_REQ_EVENT when updating IRR + - LP: #1524698 + * kvm: x86: zero EFER on INIT + - LP: #1524698 + * KVM: x86: add read_phys to x86_emulate_ops + - LP: #1524698 + * KVM: x86: handle SMBASE as physical address in RSM + - LP: #1524698 + * KVM: x86: allow RSM from 64-bit mode + - LP: #1524698 + * KVM: x86: obey KVM_X86_QUIRK_CD_NW_CLEARED in kvm_set_cr0() + - LP: #1524698 + * x86/setup: Extend low identity map to cover whole kernel range + - LP: #1524698 + * x86/setup: Fix low identity map for >= 2GB kernel range + - LP: #1524698 + * x86/irq: Probe for PIC presence before allocating descs for legacy IRQs + - LP: #1524698 + * x86/cpu: Call verify_cpu() after having entered long mode too + - LP: #1524698 + * x86/cpu: Fix SMAP check in PVOPS environments + - LP: #1524698 + * x86/fpu: Fix get_xsave_addr() behavior under virtualization + - LP: #1524698 + * x86/fpu: Fix 32-bit signal frame handling + - LP: #1524698 + * x86/mpx: Do proper get_user() when running 32-bit binaries on 64-bit + kernels + - LP: #1524698 + * x86/mpx: Fix 32-bit address space calculation + - LP: #1524698 + * mac80211: Fix local deauth while associating + - LP: #1524698 + * mac80211: fix driver RSSI event calculations + - LP: #1524698 + * mac80211: allow null chandef in tracing + - LP: #1524698 + * mac80211: fix divide by zero when NOA update + - LP: #1524698 + * nl80211: Fix potential memory leak from parse_acl_data + - LP: #1524698 + * NFC: nci: Fix incorrect data chaining when sending data + - LP: #1524698 + * NFC: nci: Fix improper management of HCI return code + - LP: #1524698 + * NFC: nci: extract pipe value using NCI_HCP_MSG_GET_PIPE + - LP: #1524698 + * iwlwifi: pcie: fix (again) prepare card flow + - LP: #1524698 + * net: mvneta: Fix CPU_MAP registers initialisation + - LP: #1524698 + * net: mvneta: fix error path for building skb + - LP: #1524698 + * fs/proc, core/debug: Don't expose absolute kernel addresses via wchan + - LP: #1524698 + * clk: iproc: Fix PLL output frequency calculation + - LP: #1524698 + * clk: versatile-icst: fix memory leak + - LP: #1524698 + * mfd: twl6040: Fix deferred probe handling for clk32k + - LP: #1524698 + * mwifiex: fix mwifiex_rdeeprom_read() + - LP: #1524698 + * staging: rtl8712: Add device ID for Sitecom WLA2100 + - LP: #1524698 + * Bluetooth: hidp: fix device disconnect on idle timeout + - LP: #1524698 + * Bluetooth: ath3k: Add new AR3012 0930:021c id + - LP: #1502781, #1524698 + * Bluetooth: ath3k: Add support of AR3012 0cf3:817b device + - LP: #1506615, #1524698 + * Bluetooth: Fix removing connection parameters when unpairing + - LP: #1524698 + * can: Use correct type in sizeof() in nla_put() + - LP: #1524698 + * can: sja1000: clear interrupts on start + - LP: #1524698 + * arm64: Fix compat register mappings + - LP: #1524698 + * arm64: page-align sections for DEBUG_RODATA + - LP: #1524698 + * ath10k: use station's current operating mode from assoc request + - LP: #1524698 + * ath10k: fix invalid NSS for 4x4 devices + - LP: #1524698 + * KVM: s390: SCA must not cross page boundaries + - LP: #1524698 + * KVM: Provide function for VCPU lookup by id + - LP: #1524698 + * KVM: s390: fix wrong lookup of VCPUs by array index + - LP: #1524698 + * KVM: s390: avoid memory overwrites on emergency signal injection + - LP: #1524698 + * usb: gadget: net2280: restore ep_cfg after defect7374 workaround + - LP: #1524698 + * usb: gadget: atmel_usba_udc: Expose correct device speed + - LP: #1524698 + * usb: dwc3: gadget: let us set lower max_speed + - LP: #1524698 + * usb: chipidea: otg: gadget module load and unload support + - LP: #1524698 + * usb: dwc3: pci: Add the Synopsys HAPS AXI Product ID + - LP: #1524698 + * usb: dwc3: pci: Add the PCI Product ID for Synopsys USB 3.1 + - LP: #1524698 + * usb: dwc3: Support Synopsys USB 3.1 IP + - LP: #1524698 + * usb: dwc3: pci: Add platform data for Synopsys HAPS + - LP: #1524698 + * usb: dwc3: Add dis_enblslpm_quirk + - LP: #1524698 + * usb: dwc3: pci: Set enblslpm quirk for Synopsys platforms + - LP: #1524698 + * usb: chipidea: imx: refine clock operations to adapt for all platforms + - LP: #1524698 + * ALSA: usb: Add native DSD support for Aune X1S + - LP: #1524698 + * usb: ehci-orion: fix probe for !GENERIC_PHY + - LP: #1524698 + * usblp: do not set TASK_INTERRUPTIBLE before lock + - LP: #1524698 + * USB: qcserial: Add support for Quectel EC20 Mini PCIe module + - LP: #1524698 + * USB: qcserial: Fix support for HP lt4112 LTE/HSPA+ Gobi 4G Modem + - LP: #1524698 + * usb: musb: core: fix order of arguments to ulpi write callback + - LP: #1524698 + * USB: ti_usb_3410_5052: Add Honeywell HGI80 ID + - LP: #1524698 + * USB: serial: option: add support for Novatel MiFi USB620L + - LP: #1524698 + * USB: option: add XS Stick W100-2 from 4G Systems + - LP: #1524698 + * ALSA: usb-audio: add packet size quirk for the Medeli DD305 + - LP: #1524698 + * ALSA: usb-audio: prevent CH345 multiport output SysEx corruption + - LP: #1524698 + * ALSA: usb-audio: work around CH345 input SysEx corruption + - LP: #1524698 + * ttyFDC: Fix build problems due to use of module_{init,exit} + - LP: #1524698 + * tty: audit: Fix audit source + - LP: #1524698 + * tty: Fix tty_send_xchar() lock order inversion + - LP: #1524698 + * staging/lustre: use jiffies for lp_last_query times + - LP: #1524698 + * xen/events: Always allocate legacy interrupts on PV guests + - LP: #1524698 + * KVM: s390: enable SIMD only when no VCPUs were created + - LP: #1524698 + * tile: fix build failure + - LP: #1524698 + * Linux 4.2.7 + - LP: #1524698 + * powerpc/tm: Check for already reclaimed tasks + - LP: #1520411 + * powerpc/tm: Block signal return setting invalid MSR state + - LP: #1520411 + * af-unix: fix use-after-free with concurrent readers while splicing + - LP: #1527359 + * af_unix: don't append consumed skbs to sk_receive_queue + - LP: #1527359 + * af_unix: take receive queue lock while appending new skb + - LP: #1527359 + * unix: avoid use-after-free in ep_remove_wait_queue + - LP: #1527359 + * af-unix: passcred support for sendpage + - LP: #1527359 + * ipv6: Avoid creating RTF_CACHE from a rt that is not managed by fib6 + tree + - LP: #1527359 + * ipv6: Check expire on DST_NOCACHE route + - LP: #1527359 + * ipv6: Check rt->dst.from for the DST_NOCACHE route + - LP: #1527359 + * tools/net: Use include/uapi with __EXPORTED_HEADERS__ + - LP: #1527359 + * packet: do skb_probe_transport_header when we actually have data + - LP: #1527359 + * packet: always probe for transport header + - LP: #1527359 + * packet: only allow extra vlan len on ethernet devices + - LP: #1527359 + * packet: infer protocol from ethernet header if unset + - LP: #1527359 + * packet: fix tpacket_snd max frame len + - LP: #1527359 + * sctp: translate host order to network order when setting a hmacid + - LP: #1527359 + * net/mlx4_core: Fix sleeping while holding spinlock at + rem_slave_counters + - LP: #1527359 + * ip_tunnel: disable preemption when updating per-cpu tstats + - LP: #1527359 + * net: switchdev: fix return code of fdb_dump stub + - LP: #1527359 + * net: thunder: Check for driver data in nicvf_remove() + - LP: #1527359 + * snmp: Remove duplicate OUTMCAST stat increment + - LP: #1527359 + * net: qmi_wwan: add XS Stick W100-2 from 4G Systems + - LP: #1527359 + * tcp: md5: fix lockdep annotation + - LP: #1527359 + * tcp: disable Fast Open on timeouts after handshake + - LP: #1527359 + * tcp: fix potential huge kmalloc() calls in TCP_REPAIR + - LP: #1527359 + * tcp: initialize tp->copied_seq in case of cross SYN connection + - LP: #1527359 + * net, scm: fix PaX detected msg_controllen overflow in scm_detach_fds + - LP: #1527359 + * net: ipmr: fix static mfc/dev leaks on table destruction + - LP: #1527359 + * net: ip6mr: fix static mfc/dev leaks on table destruction + - LP: #1527359 + * broadcom: fix PHY_ID_BCM5481 entry in the id table + - LP: #1527359 + * ipv6: distinguish frag queues by device for multicast and link-local + packets + - LP: #1527359 + * RDS: fix race condition when sending a message on unbound socket + - LP: #1527359 + * bpf, array: fix heap out-of-bounds access when updating elements + - LP: #1527359 + * ipv6: add complete rcu protection around np->opt + - LP: #1527359 + * net/neighbour: fix crash at dumping device-agnostic proxy entries + - LP: #1527359 + * ipv6: sctp: implement sctp_v6_destroy_sock() + - LP: #1527359 + * net_sched: fix qdisc_tree_decrease_qlen() races + - LP: #1527359 + * via-rhine: fix VLAN receive handling regression. + - LP: #1527359 + * btrfs: fix resending received snapshot with parent + - LP: #1527359 + * Btrfs: fix file corruption and data loss after cloning inline extents + - LP: #1527359 + * Btrfs: fix truncation of compressed and inlined extents + - LP: #1527359 + * Btrfs: fix regression when running delayed references + - LP: #1527359 + * Btrfs: fix race leading to incorrect item deletion when dropping + extents + - LP: #1527359 + * Btrfs: fix race leading to BUG_ON when running delalloc for nodatacow + - LP: #1527359 + * Btrfs: fix race when listing an inode's xattrs + - LP: #1527359 + * btrfs: fix signed overflows in btrfs_sync_file + - LP: #1527359 + * rbd: don't put snap_context twice in rbd_queue_workfn() + - LP: #1527359 + * ext4 crypto: fix memory leak in ext4_bio_write_page() + - LP: #1527359 + * ext4 crypto: replace some BUG_ON()'s with error checks + - LP: #1527359 + * ext4: fix potential use after free in __ext4_journal_stop + - LP: #1527359 + * ext4, jbd2: ensure entering into panic after recording an error in + superblock + - LP: #1527359 + * firewire: ohci: fix JMicron JMB38x IT context discovery + - LP: #1527359 + * nfsd: serialize state seqid morphing operations + - LP: #1527359 + * nfsd: eliminate sending duplicate and repeated delegations + - LP: #1527359 + * debugfs: fix refcount imbalance in start_creating + - LP: #1527359 + * nfs4: start callback_ident at idr 1 + - LP: #1527359 + * nfs: if we have no valid attrs, then don't declare the attribute cache + valid + - LP: #1527359 + * ocfs2: fix umask ignored issue + - LP: #1527359 + * ceph: fix message length computation + - LP: #1527359 + * ALSA: hda/hdmi - apply Skylake fix-ups to Broxton display codec + - LP: #1527359 + * cobalt: fix Kconfig dependency + - LP: #1527359 + * Btrfs: fix regression running delayed references when using qgroups + - LP: #1527359 + * Linux 4.2.8 + - LP: #1527359 + * hv_netvsc: Wait for sub-channels to be processed during probe + - LP: #1519917 + * hv_netvsc: Add structs and handlers for VF messages + - LP: #1519917 + * Drivers: hv: vmbus: remove hv_synic_free_cpu() call from + hv_synic_cleanup() + - LP: #1519917 + * Drivers: hv: fcopy: dynamically allocate smsg_out in fcopy_send_data() + - LP: #1519917 + * Drivers: hv: balloon: Enable dynamic memory protocol negotiation with + Windows 10 hosts + - LP: #1519917 + * Drivers: hv: vmbus: Permit sending of packets without payload + - LP: #1519917 + * Drivers: hv: vmbus: fix typo in hv_port_info struct + - LP: #1519917 + * Drivers: hv: vmbus: don't send CHANNELMSG_UNLOAD on pre-Win2012R2 hosts + - LP: #1519917 + * mshyperv: fix recognition of Hyper-V guest crash MSR's + - LP: #1519917 + * Drivers: hv: vmbus: Consider ND NIC in binding channels to CPUs + - LP: #1519917 + * drivers:hv: Modify hv_vmbus to search for all MMIO ranges available. + - LP: #1519917 + * drivers:hv: Move MMIO range picking from hyper_fb to hv_vmbus + - LP: #1519917 + * Drivers: hv: vmbus: Improve the CPU affiliation for channels + - LP: #1519917 + * Drivers: hv: vmbus: Further improve CPU affiliation logic + - LP: #1519917 + * Drivers: hv_vmbus: Fix signal to host condition + - LP: #1519917 + * drivers/hv: Migrate to new 'set-state' interface + - LP: #1519917 + * Drivers: hv: vmbus: Implement a clocksource based on the TSC page + - LP: #1519917 + * Drivers: hv: vmbus: add a sysfs attr to show the binding of channel/VP + - LP: #1519917 + * tools: hv: add a python script lsvmbus to list VMBus devices + - LP: #1519917 + * Drivers: hv: vmbus: use cpu_hotplug_enable/disable + - LP: #1519917 + * net: Set sk_txhash from a random number + - LP: #1519917 + * hv_netvsc: Set vRSS with num_chn in RNDIS filter + - LP: #1519917 + * hv_netvsc: Implement set_channels ethtool op + - LP: #1519917 + * storvsc: be more picky about scmnd->sc_data_direction + - LP: #1519917 + * storvsc: use shost_for_each_device() instead of open coding + - LP: #1519917 + * hv_netvsc: Fix dereference of nvdev before check + - LP: #1519917 + * storvsc: Rather than look for sets of specific protocol versions, make + decisions based on ranges. + - LP: #1519917 + * storvsc: Use a single value to track protocol versions + - LP: #1519917 + * storvsc: Untangle the storage protocol negotiation from the vmbus + protocol negotiation. + - LP: #1519917 + * storvsc: use correct defaults for values determined by protocol + negotiation + - LP: #1519917 + * storvsc: use storage protocol version to determine storage capabilities + - LP: #1519917 + * storvsc: Allow write_same when host is windows 10 + - LP: #1519917 + * storvsc: Set the error code correctly in failure conditions + - LP: #1519917 + * cpu-hotplug: export cpu_hotplug_enable/cpu_hotplug_disable + - LP: #1519917 + * net: Add functions to get skb->hash based on flow structures + - LP: #1519917 + * flow_dissector: Move skb related functions to skbuff.h + - LP: #1519917 + * skbuff: Make __skb_set_sw_hash a general function + - LP: #1519917 + * flow_dissector: Add flags argument to skb_flow_dissector functions + - LP: #1519917 + * Drivers: hv: vmbus: fix init_vp_index() for reloading hv_netvsc + - LP: #1519917 + * x86/hyperv: Fix the build in the !CONFIG_KEXEC_CORE case + - LP: #1519917 + * rhashtable: Fix walker list corruption + - LP: #1526811 + * rhashtable: Kill harmless RCU warning in rhashtable_walk_init + - LP: #1526811 + * net/mlx5e: Max mtu comparison fix + - LP: #1528466 + * net/mlx4_en: Remove dependency between timestamping capability and + service_task + - LP: #1531132 + * net/mlx4_en: Fix HW timestamp init issue upon system startup + - LP: #1531132 + * crypto: nx-842 - Mask XERS0 bit in return value + - LP: #1529666 + * KVM: x86: Reload pit counters for all channels when restoring state + - LP: #1530956 + - CVE-2015-7513 + * mxc_nand: fix copy_spare + - LP: #1532342 + * drivers: usb :fsl: Implement Workaround for USB Erratum A007792 + - LP: #1532342 + * drivers: usb: fsl: Workaround for USB erratum-A005275 + - LP: #1532342 + * x86/xen: Do not clip xen_e820_map to xen_e820_map_entries when + sanitizing map + - LP: #1532342 + * drm/radeon: add quirk for MSI R7 370 + - LP: #1532342 + * drm/radeon: add quirk for ASUS R7 370 + - LP: #1532342 + * drm/radeon: fix quirk for MSI R7 370 Armor 2X + - LP: #1532342 + * pinctrl: single: dra7: remove PCS_QUIRK_SHARED_IRQ + - LP: #1532342 + * net: bcmgenet: Use correct dev_id for free_irq + - LP: #1532342 + * net: bcmgenet: Delay PHY initialization to bcmgenet_open() + - LP: #1532342 + * bridge: fix netlink max attr size + - LP: #1532342 + * ASoC: spear_pcm: Use devm_snd_dmaengine_pcm_register to fix resource + leak + - LP: #1532342 + * task_work: remove fifo ordering guarantee + - LP: #1532342 + * ebpf: fix fd refcount leaks related to maps in bpf syscall + - LP: #1532342 + * netlink, mmap: fix edge-case leakages in nf queue zero-copy + - LP: #1532342 + * scsi_dh: fix randconfig build error + - LP: #1532342 + * ARM: OMAP2+: board-generic: Remove stale of_irq macros + - LP: #1532342 + * vxlan: set needed headroom correctly + - LP: #1532342 + * ipv6: Fix IPsec pre-encap fragmentation check + - LP: #1532342 + * HID: core: Avoid uninitialized buffer access + - LP: #1532342 + * [media] v4l2-compat-ioctl32: fix alignment for ARM64 + - LP: #1532342 + * mtd: mtdpart: fix add_mtd_partitions error path + - LP: #1532342 + * [media] v4l2-ctrls: arrays are also considered compound controls + - LP: #1532342 + * [media] media: v4l2-ctrls: Fix 64bit support in get_ctrl() + - LP: #1532342 + * ubi: fastmap: Implement produce_free_peb() + - LP: #1532342 + * drm/i915: Only update the current userptr worker + - LP: #1532342 + * drm/i915: Fix userptr deadlock with aliased GTT mmappings + - LP: #1532342 + * integrity: prevent loading untrusted certificates on the IMA trusted + keyring + - LP: #1532342 + * f2fs crypto: allocate buffer for decrypting filename + - LP: #1532342 + * spi: ti-qspi: Fix data corruption seen on r/w stress test + - LP: #1532342 + * lockd: create NSM handles per net namespace + - LP: #1532342 + * iommu/vt-d: Fix ATSR handling for Root-Complex integrated endpoints + - LP: #1532342 + * iommu/arm-smmu: Fix error checking for ASID and VMID allocation + - LP: #1532342 + * jbd2: fix checkpoint list cleanup + - LP: #1532342 + * fix calculation of meta_bg descriptor backups + - LP: #1532342 + * vTPM: fix memory allocation flag for rtce buffer at kernel boot + - LP: #1532342 + * tpm, tpm_crb: fix unaligned read of the command buffer address + - LP: #1532342 + * tpm, tpm_tis: fix tpm_tis ACPI detection issue with TPM 2.0 + - LP: #1532342 + * drm/amdgpu/gfx8: set TC_WB_ACTION_EN in RELEASE_MEM packet + - LP: #1532342 + * spi: dw: explicitly free IRQ handler in dw_spi_remove_host() + - LP: #1532342 + * [media] media: vb2 dma-contig: Fully cache synchronise buffers in + prepare and finish + - LP: #1532342 + * [media] media: vb2 dma-sg: Fully cache synchronise buffers in prepare + and finish + - LP: #1532342 + * [media] media/v4l2-ctrls: fix setting autocluster to manual with + VIDIOC_S_CTRL + - LP: #1532342 + * i2c: at91: fix write transfers by clearing pending interrupt first + - LP: #1532342 + * spi: atmel: Fix DMA-setup for transfers with more than 8 bits per word + - LP: #1532342 + * ACPI: Use correct IRQ when uninstalling ACPI interrupt handler + - LP: #1532342 + * ACPI: Using correct irq when waiting for events + - LP: #1532342 + * ACPI / PM: Fix incorrect wakeup IRQ setting during suspend-to-idle + - LP: #1532342 + * i2c: at91: manage unexpected RXRDY flag when starting a transfer + - LP: #1532342 + * ALSA: hda/realtek - Dell XPS one ALC3260 speaker no sound after resume + back + - LP: #1532342 + * ALSA: hda - Disable 64bit address for Creative HDA controllers + - LP: #1532342 + * MAINTAINERS: Add public mailing list for ARC + - LP: #1532342 + * drm/amdgpu: add some additional CZ revisions + - LP: #1532342 + * spi/spi-xilinx: Fix race condition on last word read + - LP: #1532342 + * megaraid_sas: Expose TAPE drives unconditionally + - LP: #1532342 + * dm: initialize non-blk-mq queue data before queue is used + - LP: #1532342 + * mtd: blkdevs: fix potential deadlock + lockdep warnings + - LP: #1532342 + * drm/i915: add quirk to enable backlight on Dell Chromebook 11 (2015) + - LP: #1532342 + * crypto: algif_hash - Only export and import on sockets with data + - LP: #1532342 + * xtensa: fixes for configs without loop option + - LP: #1532342 + * drm/amdgpu: Make amdgpu_mn functions inline + - LP: #1532342 + * ALSA: hda - Fix lost 4k BDL boundary workaround + - LP: #1532342 + * tracing: Update instance_rmdir() to use tracefs_remove_recursive + - LP: #1532342 + * PCI: spear: Fix dw_pcie_cfg_read/write() usage + - LP: #1532342 + * megaraid_sas : SMAP restriction--do not access user memory from IOCTL + code + - LP: #1532342 + * xtensa: fix secondary core boot in SMP + - LP: #1532342 + * recordmcount: Fix endianness handling bug for nop_mcount + - LP: #1532342 + * recordmcount: arm64: Replace the ignored mcount call into nop + - LP: #1532342 + * KVM: VMX: fix SMEP and SMAP without EPT + - LP: #1532342 + * vfio: Fix bug in vfio_device_get_from_name() + - LP: #1532342 + * thermal: exynos: Fix unbalanced regulator disable on probe failure + - LP: #1532342 + * timers: Use proper base migration in add_timer_on() + - LP: #1532342 + * ALSA: hda - Apply pin fixup for HP ProBook 6550b + - LP: #1532342 + * tracefs: Fix refcount imbalance in start_creating() + - LP: #1532342 + * ALSA: hda - Add Intel Lewisburg device IDs Audio + - LP: #1532342 + * drm: Use userspace compatible type in fourcc_mod_code macro + - LP: #1532342 + * scsi: restart list search after unlock in scsi_remove_target + - LP: #1532342 + * toshiba_acpi: Initialize hotkey_event_type variable + - LP: #1532342 + * mm: slab: only move management objects off-slab for sizes larger than + KMALLOC_MIN_SIZE + - LP: #1532342 + * mm/oom_kill.c: reverse the order of setting TIF_MEMDIE and sending + SIGKILL + - LP: #1532342 + * memcg: fix thresholds for 32b architectures. + - LP: #1532342 + * arm64: bpf: fix div-by-zero case + - LP: #1532342 + * arm64: bpf: fix mod-by-zero case + - LP: #1532342 + * Input: elantech - add Fujitsu Lifebook U745 to force crc_enabled + - LP: #1532342 + * proc: actually make proc_fd_permission() thread-friendly + - LP: #1532342 + * printk: prevent userland from spoofing kernel messages + - LP: #1532342 + * lib/hexdump.c: truncate output in case of overflow + - LP: #1532342 + * fs, seqfile: always allow oom killer + - LP: #1532342 + * parisc: Fixes and cleanups in kernel uapi header files + - LP: #1532342 + * perf: Fix inherited events vs. tracepoint filters + - LP: #1532342 + * scsi_sysfs: Fix queue_ramp_up_period return code + - LP: #1532342 + * ideapad-laptop: Add Lenovo Yoga 900 to no_hw_rfkill dmi list + - LP: #1532342 + * storvsc: Don't set the SRB_FLAGS_QUEUE_ACTION_ENABLE flag + - LP: #1532342 + * drivers: of: of_reserved_mem: fixup the alignment with CMA setup + - LP: #1532342 + * drm/ast: Initialized data needed to map fbdev memory + - LP: #1532342 + * FS-Cache: Increase reference of parent after registering, netfs success + - LP: #1532342 + * FS-Cache: Don't override netfs's primary_index if registering failed + - LP: #1532342 + * FS-Cache: Handle a write to the page immediately beyond the EOF marker + - LP: #1532342 + * binfmt_elf: Don't clobber passed executable's file header + - LP: #1532342 + * fs/pipe.c: return error code rather than 0 in pipe_write() + - LP: #1532342 + * dax_io(): don't let non-error value escape via retval instead of EFAULT + - LP: #1532342 + * iio:magnetometer:bmc150_magn: sort entry alphabetically + - LP: #1532342 + * ALSA: pcm: remove structure member of 'struct snd_pcm_hwptr_log *' type + because this structure had been removed + - LP: #1532342 + * net-sysfs: get_netdev_queue_index() cleanup + - LP: #1532342 + * crypto: crc32c-pclmul - use .rodata instead of .rotata + - LP: #1532342 + * tools build: Fixup feature detection display function name + - LP: #1532342 + * wm831x_power: Use IRQF_ONESHOT to request threaded IRQs + - LP: #1532342 + * dmaengine: dw: convert to __ffs() + - LP: #1532342 + * tcp: call sk_mark_napi_id() on the child, not the listener + - LP: #1532342 + * [media] vivid: Fix iteration in driver removal path + - LP: #1532342 + * devres: fix a for loop bounds check + - LP: #1532342 + * netfilter: remove dead code + - LP: #1532342 + * ipv4: Fix ip_local_out_sk by passing the sk into __ip_local_out_sk + - LP: #1532342 + * ipv4: Fix ip_queue_xmit to pass sk into ip_local_out_sk + - LP: #1532342 + * i2c: img-scb: enable fencing for all versions of the ip + - LP: #1532342 + * i2c: img-scb: do dummy writes before fifo access + - LP: #1532342 + * i2c: img-scb: use DIV_ROUND_UP to round divisor values + - LP: #1532342 + * i2c: img-scb: fix LOW and HIGH period values for the SCL clock + - LP: #1532342 + * i2c: img-scb: Clear line and interrupt status before starting a + transfer + - LP: #1532342 + * i2c: img-scb: verify support for requested bit rate + - LP: #1532342 + * packet: fix match_fanout_group() + - LP: #1532342 + * hsi: fix double kfree + - LP: #1532342 + * hsi: omap_ssi_port: Prevent warning if cawake_gpio is not defined. + - LP: #1532342 + * regulator: arizona-ldo1: Fix handling of GPIO 0 + - LP: #1532342 + * ALSA: fireworks/bebob/oxfw/dice: enable to make as built-in + - LP: #1532342 + * drm: Fix return value of drm_framebuffer_init() + - LP: #1532342 + * ALSA: dice: correct variable types for __be32 data + - LP: #1532342 + * ALSA: dice: assign converted data to the same type of variable + - LP: #1532342 + * ALSA: fireworks: use u32 type for be32_to_cpup() macro + - LP: #1532342 + * ALSA: bebob: use correct type for __be32 data + - LP: #1532342 + * kconfig: Fix copy&paste error + - LP: #1532342 + * tcp: apply Kern's check on RTTs used for congestion control + - LP: #1532342 + * RDMA/cxgb4: re-fix 32-bit build warning + - LP: #1532342 + * IB/core: avoid 32-bit warning + - LP: #1532342 + * spi: omap2-mcspi: disable other channels CHCONF_FORCE in + prepare_message + - LP: #1532342 + * perf annotate: Fix 'annotate.use_offset' config variable usage + - LP: #1532342 + * sunrpc: avoid warning in gss_key_timeout + - LP: #1532342 + * MIPS: atomic: Fix comment describing atomic64_add_unless's return + value. + - LP: #1532342 + * DT: mmc: sh_mmcif: fix "compatible" property text + - LP: #1532342 + * netfilter: nf_nat_redirect: add missing NULL pointer check + - LP: #1532342 + * of/fdt: fix error checking for earlycon address + - LP: #1532342 + * netfilter: nfnetlink: don't probe module if it exists + - LP: #1532342 + * PCI: Set SR-IOV NumVFs to zero after enumeration + - LP: #1532342 + * sparc/PCI: Add mem64 resource parsing for root bus + - LP: #1532342 + * IB/core, cma: Make __attribute_const__ declarations sparse-friendly + - LP: #1532342 + * ipv6: no CHECKSUM_PARTIAL on MSG_MORE corked sockets + - LP: #1532342 + * cpufreq: arm_big_little: fix frequency check when bL switcher is active + - LP: #1532342 + * xprtrdma: Re-arm after missed events + - LP: #1532342 + * xprtrdma: Prevent loss of completion signals + - LP: #1532342 + * qmi_wwan: fix entry for HP lt4112 LTE/HSPA+ Gobi 4G Module + - LP: #1532342 + * tracepoints: Fix documentation of RCU lockdep checks + - LP: #1532342 + * net: fix percpu memory leaks + - LP: #1532342 + * ipv6: fix tunnel error handling + - LP: #1532342 + * vfio/platform: store mapped memory in region, instead of an on-stack + copy + - LP: #1532342 + * selftests: kprobe: Choose an always-defined function to probe + - LP: #1532342 + * selftests: Make scripts executable + - LP: #1532342 + * thermal: exynos: Fix first temperature read after registering sensor + - LP: #1532342 + * ipv4: fix a potential deadlock in mcast getsockopt() path + - LP: #1532342 + * perf trace: Fix documentation for -i + - LP: #1532342 + * rtc: ds1307: Fix alarm programming for mcp794xx + - LP: #1532342 + * NTB: fix 32-bit compiler warning + - LP: #1532342 + * tpm_tis: free irq after probing + - LP: #1532342 + * TPM: revert the list handling logic fixed in 398a1e7 + - LP: #1532342 + * mvneta: add FIXED_PHY dependency + - LP: #1532342 + * TPM: Avoid reference to potentially freed memory + - LP: #1532342 + * megaraid_sas: Make tape drives visible on PERC5 controllers + - LP: #1532342 + * ARC: Fix silly typo in MAINTAINERS file + - LP: #1532342 + * pppoe: fix memory corruption in padt work structure + - LP: #1532342 + * gre6: allow to update all parameters via rtnl + - LP: #1532342 + * atl1c: Improve driver not to do order 4 GFP_ATOMIC allocation + - LP: #1532342 + * ipv6: keep existing flags when setting IFA_F_OPTIMISTIC + - LP: #1532342 + * vxlan: fix incorrect RCO bit in VXLAN header + - LP: #1532342 + * sctp: use the same clock as if sock source timestamps were on + - LP: #1532342 + * sctp: update the netstamp_needed counter when copying sockets + - LP: #1532342 + * sctp: also copy sk_tsflags when copying the socket + - LP: #1532342 + * net: cdc_mbim: add "NDP to end" quirk for Huawei E3372 + - LP: #1532342 + * net: qca_spi: fix transmit queue timeout handling + - LP: #1532342 + * r8152: fix lockup when runtime PM is enabled + - LP: #1532342 + * ipv6: sctp: clone options to avoid use after free + - LP: #1532342 + * phy: micrel: Fix finding PHY properties in MAC node. + - LP: #1532342 + * net: add validation for the socket syscall protocol argument + - LP: #1532342 + * sh_eth: fix kernel oops in skb_put() + - LP: #1532342 + * pptp: verify sockaddr_len in pptp_bind() and pptp_connect() + - LP: #1532342 + * vlan: Fix untag operations of stacked vlans with REORDER_HEADER off + - LP: #1532342 + * skbuff: Fix offset error in skb_reorder_vlan_header + - LP: #1532342 + * net: check both type and procotol for tcp sockets + - LP: #1532342 + * net_sched: make qdisc_tree_decrease_qlen() work for non mq + - LP: #1532342 + * bluetooth: Validate socket address length in sco_sock_bind(). + - LP: #1532342 + * net: fix uninitialized variable issue + - LP: #1532342 + * ipv6: automatically enable stable privacy mode if stable_secret set + - LP: #1532342 + * rhashtable: Enforce minimum size on initial hash table + - LP: #1532342 + * gianfar: Don't enable RX Filer if not supported + - LP: #1532342 + * fou: clean up socket with kfree_rcu + - LP: #1532342 + * af_unix: Revert 'lock_interruptible' in stream receive code + - LP: #1532342 + * tcp: restore fastopen with no data in SYN packet + - LP: #1532342 + * KEYS: Fix race between read and revoke + - LP: #1532342 + * Linux 4.2.8-ckt1 + - LP: #1532342 + * xfs: give all workqueues rescuer threads + - LP: #1527062 + + -- Luis Henriques Mon, 11 Jan 2016 15:38:36 +0000 + +linux (4.2.0-23.28) wily; urgency=low + + [ Andy Whitcroft ] + + * Release Tracking Bug + - LP: #1529361 + + [ Upstream Kernel Changes ] + + * ovl: fix permission checking for setattr + - LP: #1528904 + - CVE-2015-8660 + + -- Andy Whitcroft Sat, 26 Dec 2015 09:42:47 +0000 + +linux (4.2.0-22.27) wily; urgency=low + + [ Kamal Mostafa ] + + * Release Tracking Bug + - LP: #1527391 + + [ Jann Horn ] + + * ptrace: being capable wrt a process requires mapped uids/gids + - LP: #1527374 + + -- Kamal Mostafa Thu, 17 Dec 2015 12:54:53 -0800 + +linux (4.2.0-22.26) wily; urgency=low + + [ Upstream Kernel Changes ] + + * xen: Add RING_COPY_REQUEST() + - CVE-2015-8550 + * xen-netback: don't use last request to determine minimum Tx credit + - CVE-2015-8550 + * xen-netback: use RING_COPY_REQUEST() throughout + - CVE-2015-8550 + * xen-blkback: only read request operation from shared ring once + - CVE-2015-8550 + * xen-blkback: read from indirect descriptors only once + - CVE-2015-8550 + * xen-scsiback: safely copy requests + - CVE-2015-8550 + * xen/pciback: Save xen_pci_op commands before processing it + - CVE-2015-8550 + * xen/pciback: Return error on XEN_PCI_OP_enable_msi when device has MSI + or MSI-X enabled + - CVE-2015-8551, CVE-2015-8552, CVE-2015-8553 + * xen/pciback: Return error on XEN_PCI_OP_enable_msix when device has MSI + or MSI-X enabled + - CVE-2015-8551, CVE-2015-8552, CVE-2015-8553 + * xen/pciback: Do not install an IRQ handler for MSI interrupts. + - CVE-2015-8551, CVE-2015-8552, CVE-2015-8553 + * xen/pciback: For XEN_PCI_OP_disable_msi[|x] only disable if device has + MSI(X) enabled. + - CVE-2015-8551, CVE-2015-8552, CVE-2015-8553 + * xen/pciback: Don't allow MSI-X ops if PCI_COMMAND_MEMORY is not set. + - CVE-2015-8551, CVE-2015-8552, CVE-2015-8553 + + -- Luis Henriques Wed, 16 Dec 2015 22:11:21 +0000 + +linux (4.2.0-21.25) wily; urgency=low + + [ Luis Henriques ] + + * Release Tracking Bug + - LP: #1522108 + + [ Upstream Kernel Changes ] + + * staging/dgnc: fix info leak in ioctl + - LP: #1509565 + - CVE-2015-7885 + * [media] media/vivid-osd: fix info leak in ioctl + - LP: #1509564 + - CVE-2015-7884 + * KEYS: Fix race between key destruction and finding a keyring by name + - LP: #1508856 + - CVE-2015-7872 + * KEYS: Fix crash when attempt to garbage collect an uninstantiated + keyring + - LP: #1508856 + - CVE-2015-7872 + * KEYS: Don't permit request_key() to construct a new keyring + - LP: #1508856 + - CVE-2015-7872 + * isdn_ppp: Add checks for allocation failure in isdn_ppp_open() + - LP: #1508329 + - CVE-2015-7799 + * ppp, slip: Validate VJ compression slot parameters completely + - LP: #1508329 + - CVE-2015-7799 + + -- Luis Henriques Wed, 02 Dec 2015 17:30:58 +0000 + +linux (4.2.0-20.24) wily; urgency=low + + [ Brad Figg ] + + * Release Tracking Bug + - LP: #1521753 + + [ Andy Whitcroft ] + + * [Tests] gcc-multilib does not exist on ppc64el + - LP: #1515541 + + [ Joseph Salisbury ] + + * SAUCE: scsi_sysfs: protect against double execution of + __scsi_remove_device() + - LP: #1509029 + + [ Manoj Kumar ] + + * SAUCE: (noup) cxlflash: Fix to escalate LINK_RESET also on port 1 + - LP: #1513583 + + [ Matthew R. Ochs ] + + * SAUCE: (noup) cxlflash: Fix to avoid virtual LUN failover failure + - LP: #1513583 + + [ Oren Givon ] + + * SAUCE: (noup) iwlwifi: Add new PCI IDs for the 8260 series + - LP: #1517375 + + [ Seth Forshee ] + + * [Config] CONFIG_DRM_AMDGPU_CIK=n + - LP: #1510405 + + [ Upstream Kernel Changes ] + + * net/mlx5e: Disable VLAN filter in promiscuous mode + - LP: #1514861 + * drivers: net: xgene: fix RGMII 10/100Mb mode + - LP: #1433290 + * HID: rmi: Disable scanning if the device is not a wake source + - LP: #1515503 + * HID: rmi: Set F01 interrupt enable register when not set + - LP: #1515503 + * net/mlx5e: Ethtool link speed setting fixes + - LP: #1517919 + * scsi_scan: don't dump trace when scsi_prep_async_scan() is called twice + - LP: #1517942 + * x86/ioapic: Disable interrupts when re-routing legacy IRQs + - LP: #1508593 + * xhci: Workaround to get Intel xHCI reset working more reliably + * megaraid_sas: Do not use PAGE_SIZE for max_sectors + - LP: #1475166 + * net: usb: cdc_ether: add Dell DW5580 as a mobile broadband adapter + - LP: #1513847 + * KVM: svm: unconditionally intercept #DB + - LP: #1520184 + - CVE-2015-8104 + + -- Brad Figg Tue, 01 Dec 2015 12:38:33 -0800 + +linux (4.2.0-19.23) wily; urgency=low + + [ Luis Henriques ] + + * Release Tracking Bug + - LP: #1515157 + + [ Andy Whitcroft ] + + * [Config] re-enable OSS support and blacklist + - LP: #1434842 + + [ dann frazier ] + + * Revert "[Config] CONFIG_ARM64_ERRATUM_843419=n" + - LP: #1502946 + + [ Paolo Pisati ] + + * [SRU] [Config] armhf: LEDS_TRIGGER_HEARTBEAT=y + - LP: #1510165 + + [ Tim Gardner ] + + * [Config] Add iscsi_ibft and iscsi_boot_sysfs to generic inclusion list + - LP: #1511006 + * [Config] CONFIG_AUFS_EXPORT=y + - LP: #1121699 + + [ Upstream Kernel Changes ] + + * Revert "KVM: x86: apply guest MTRR virtualization on host reserved + pages" + - LP: #1509886 + * Revert "KVM: SVM: use NPT page attributes" + - LP: #1509886 + * Revert "KVM: SVM: Sync g_pat with guest-written PAT value" + - LP: #1509886 + * Revert "cgroup: simplify threadgroup locking" + - LP: #1509886 + * Revert "sched, cgroup: replace signal_struct->group_rwsem with a global + percpu_rwsem" + - LP: #1509886 + * Revert "ARM64: unwind: Fix PC calculation" + - LP: #1514889 + * Revert "serial: 8250_dma: don't bother DMA with small transfers" + - LP: #1514889 + * Revert "md: allow a partially recovered device to be hot-added to an + array." + - LP: #1514889 + * arm64: Change memcpy in kernel to use the copy template file + - LP: #1508471 + * arm64: copy_to-from-in_user optimization using copy template + - LP: #1508471 + * Input: elan_i2c - enable ELAN0600 acpi panels + - LP: #1439111 + * e1000e: Fix tight loop implementation of systime read algorithm + * arm: KVM: Fix incorrect device to IPA mapping + - LP: #1509886 + * KVM: vmx: fix VPID is 0000H in non-root operation + - LP: #1509886 + * kvm: don't try to register to KVM_FAST_MMIO_BUS for non mmio eventfd + - LP: #1509886 + * kvm: fix zero length mmio searching + - LP: #1509886 + * kvm: factor out core eventfd assign/deassign logic + - LP: #1509886 + * kvm: fix double free for fast mmio eventfd + - LP: #1509886 + * arm: KVM: Disable virtual timer even if the guest is not using it + - LP: #1509886 + * kvm: svm: reset mmu on VCPU reset + - LP: #1509886 + * KVM: x86: trap AMD MSRs for the TSeg base and mask + - LP: #1509886 + * KVM: PPC: Book3S: Take the kvm->srcu lock in + kvmppc_h_logical_ci_load/store() + - LP: #1509886 + * KVM: PPC: Book3S HV: Pass the correct trap argument to + kvmhv_commence_exit + - LP: #1509886 + * time: Fix timekeeping_freqadjust()'s incorrect use of abs() instead of + abs64() + - LP: #1509886 + * target/iscsi: Fix np_ip bracket issue by removing np_ip + - LP: #1509886 + * scsi: fix scsi_error_handler vs. scsi_host_dev_release race + - LP: #1509886 + * target: Attach EXTENDED_COPY local I/O descriptors to xcopy_pt_sess + - LP: #1509886 + * target: Fix PR registration + APTPL RCU conversion regression + - LP: #1509886 + * iser-target: remove command with state ISTATE_REMOVE + - LP: #1509886 + * iser-target: Put the reference on commands waiting for unsol data + - LP: #1509886 + * toshiba_acpi: Fix hotkeys registration on some toshiba models + - LP: #1509886 + * perf/x86/intel: Fix constraint access + - LP: #1509886 + * locking/qspinlock/x86: Fix performance regression under unaccelerated + VMs + - LP: #1509886 + * locking/qspinlock/x86: Only emit the test-and-set fallback when + building guest support + - LP: #1509886 + * perf tools: Fix copying of /proc/kcore + - LP: #1509886 + * ARM: 8401/1: perf: Set affinity for PPI based PMUs + - LP: #1509886 + * perf hists: Update the column width for the "srcline" sort key + - LP: #1509886 + * perf stat: Get correct cpu id for print_aggr + - LP: #1509886 + * perf tools: Add missing forward declaration of struct map to + probe-event.h + - LP: #1509886 + * perf tools: Add empty Build files for architectures lacking them + - LP: #1509886 + * perf tools: Fix parse_events_add_pmu caller + - LP: #1509886 + * perf header: Fixup reading of HEADER_NRCPUS feature + - LP: #1509886 + * perf probe: Use existing routine to look for a kernel module by + dso->short_name + - LP: #1509886 + * ARCv2: [axs103_smp] Reduce clk for SMP FPGA configs + - LP: #1509886 + * watchdog: sunxi: fix activation of system reset + - LP: #1509886 + * watchdog: imgpdc: Unregister restart handler on remove + - LP: #1509886 + * sched: access local runqueue directly in single_task_running + - LP: #1509886 + * hwmon: (nct6775) Swap STEP_UP_TIME and STEP_DOWN_TIME registers for + most chips + - LP: #1509886 + * ARM: fix Thumb2 signal handling when ARMv6 is enabled + - LP: #1509886 + * ARM: 8429/1: disable GCC SRA optimization + - LP: #1509886 + * windfarm: decrement client count when unregistering + - LP: #1509886 + * ARM: 8425/1: kgdb: Don't try to stop the machine when setting + breakpoints + - LP: #1509886 + * ARM: dts: omap5-uevm.dts: fix i2c5 pinctrl offsets + - LP: #1509886 + * ARM: dts: omap3-beagle: make i2c3, ddc and tfp410 gpio work again + - LP: #1509886 + * ARM: pxa: ssp: Fix build error by removing originally incorrect DT + binding + - LP: #1509886 + * ARM: EXYNOS: reset Little cores when cpu is up + - LP: #1509886 + * ARM: dts: sunxi: Raise minimum CPU voltage for sun7i-a20 to meet SoC + specifications + - LP: #1509886 + * ARM: dts: Fix wrong clock binding for sysmmu_fimd1_1 on exynos5420 + - LP: #1509886 + * ARM: dts: fix usb pin control for imx-rex dts + - LP: #1509886 + * dax: fix O_DIRECT I/O to the last block of a blockdev + - LP: #1509886 + * blockdev: don't set S_DAX for misaligned partitions + - LP: #1509886 + * block: blkg_destroy_all() should clear q->root_blkg and ->root_rl.blkg + - LP: #1509886 + * dmaengine: at_xdmac: change block increment addressing mode + - LP: #1509886 + * dmaengine: at_xdmac: clean used descriptor + - LP: #1509886 + * dmaengine: dw: properly read DWC_PARAMS register + - LP: #1509886 + * dmaengine: at_xdmac: fix bug in prep_dma_cyclic + - LP: #1509886 + * dmaengine: pxa_dma: fix initial list move + - LP: #1509886 + * pmem: add proper fencing to pmem_rw_page() + - LP: #1509886 + * x86/apic: Serialize LVTT and TSC_DEADLINE writes + - LP: #1509886 + * x86/alternatives: Make optimize_nops() interrupt safe and synced + - LP: #1509886 + * x86/platform: Fix Geode LX timekeeping in the generic x86 build + - LP: #1509886 + * x86/ioapic: Force affinity setting in setup_ioapic_dest() + - LP: #1509886 + * x86/pci/intel_mid_pci: Work around for IRQ0 assignment + - LP: #1509886 + * x86/paravirt: Replace the paravirt nop with a bona fide empty function + - LP: #1509886 + * x86/nmi/64: Fix a paravirt stack-clobbering bug in the NMI code + - LP: #1509886 + * Use WARN_ON_ONCE for missing X86_FEATURE_NRIPS + - LP: #1509886 + * x86/efi: Fix boot crash by mapping EFI memmap entries bottom-up at + runtime, instead of top-down + - LP: #1509886 + * x86/kexec: Fix kexec crash in syscall kexec_file_load() + - LP: #1509886 + * x86/process: Add proper bound checks in 64bit get_wchan() + - LP: #1509886 + * x86/mm: Set NX on gap between __ex_table and rodata + - LP: #1509886 + * x86/xen: Support kexec/kdump in HVM guests by doing a soft reset + - LP: #1509886 + * leds:lp55xx: Correct Kconfig dependency for f/w user helper + - LP: #1509886 + * leds/led-class: Add missing put_device() + - LP: #1509886 + * sched/core: Fix TASK_DEAD race in finish_task_switch() + - LP: #1509886 + * s390/compat: correct uc_sigmask of the compat signal frame + - LP: #1509886 + * s390/boot/decompression: disable floating point in decompressor + - LP: #1509886 + * memcg: make mem_cgroup_read_stat() unsigned + - LP: #1509886 + * spi: Fix documentation of spi_alloc_master() + - LP: #1509886 + * spi: xtensa-xtfpga: fix register endianness + - LP: #1509886 + * spi: bcm2835: BUG: fix wrong use of PAGE_MASK + - LP: #1509886 + * spi: spi-pxa2xx: Check status register to determine if SSSR_TINT is + disabled + - LP: #1509886 + * spi: spidev: fix possible NULL dereference + - LP: #1509886 + * mm: migrate: hugetlb: putback destination hugepage to active list + - LP: #1509886 + * lib/iommu-common.c: do not try to deref a null iommu->lazy_flush() + pointer when n < pool->hint + - LP: #1509886 + * ocfs2/dlm: fix deadlock when dispatch assert master + - LP: #1509886 + * mm: hugetlbfs: skip shared VMAs when unmapping private pages to satisfy + a fault + - LP: #1509886 + * memcg: fix dirty page migration + - LP: #1509886 + * ALSA: hda/tegra - async probe for avoiding module loading deadlock + - LP: #1509886 + * ALSA: hda - Disable power_save_node for Thinkpads + - LP: #1509886 + * ALSA: synth: Fix conflicting OSS device registration on AWE32 + - LP: #1509886 + * ALSA: hda: Add dock support for ThinkPad T550 + - LP: #1509886 + * ALSA: hda - Apply SPDIF pin ctl to MacBookPro 12,1 + - LP: #1509886 + * ALSA: hda - Disable power_save_node for IDT 92HD73xx chips + - LP: #1509886 + * ASoC: pxa: pxa2xx-ac97: fix dma requestor lines + - LP: #1509886 + * ASoC: fix broken pxa SoC support + - LP: #1509886 + * ASoC: dwc: correct irq clear method + - LP: #1509886 + * ASoC: db1200: Fix DAI link format for db1300 and db1550 + - LP: #1509886 + * ASoC: sgtl5000: fix wrong register MIC_BIAS_VOLTAGE setup on probe + - LP: #1509886 + * ASoC: tas2552: fix dBscale-min declaration + - LP: #1509886 + * btrfs: skip waiting on ordered range for special files + - LP: #1509886 + * Btrfs: fix read corruption of compressed and shared extents + - LP: #1509886 + * Btrfs: update fix for read corruption of compressed and shared extents + - LP: #1509886 + * tools/lguest: Fix redefinition of struct virtio_pci_cfg_cap + - LP: #1509886 + * PCI: Fix devfn for VPD access through function 0 + - LP: #1509886 + * PCI: Use function 0 VPD for identical functions, regular VPD for others + - LP: #1509886 + * PCI: Clear IORESOURCE_UNSET when clipping a bridge window + - LP: #1509886 + * dm thin: disable discard support for thin devices if pool's is disabled + - LP: #1509886 + * dm crypt: constrain crypt device's max_segment_size to PAGE_SIZE + - LP: #1509886 + * ath10k: fix dma_mapping_error() handling + - LP: #1509886 + * svcrdma: Fix send_reply() scatter/gather set-up + - LP: #1509886 + * staging: ion: fix corruption of ion_import_dma_buf + - LP: #1509886 + * USB: option: add ZTE PIDs + - LP: #1509886 + * md/raid0: update queue parameter in a safer location. + - LP: #1509886 + * md/raid0: apply base queue limits *before* disk_stack_limits + - LP: #1509886 + * dm raid: fix round up of default region size + - LP: #1509886 + * netfilter: bridge: fix IPv6 packets not being bridged with + CONFIG_IPV6=n + - LP: #1509886 + * netfilter: nfnetlink: work around wrong endianess in res_id field + - LP: #1509886 + * netfilter: nf_tables: Use 32 bit addressing register from + nft_type_to_reg() + - LP: #1509886 + * netfilter: ipset: Out of bound access in hash:net* types fixed + - LP: #1509886 + * netfilter: ipset: Fixing unnamed union init + - LP: #1509886 + * netfilter: nf_log: wait for rcu grace after logger unregistration + - LP: #1509886 + * netfilter: nft_compat: skip family comparison in case of NFPROTO_UNSPEC + - LP: #1509886 + * netfilter: nf_log: don't zap all loggers on unregister + - LP: #1509886 + * regulator: core: Correct return value check in regulator_resolve_supply + - LP: #1509886 + * regulator: axp20x: Fix enable bit indexes for DCDC4 and DCDC5 + - LP: #1509886 + * regulator: core: Handle probe deferral from DT when resolving supplies + - LP: #1509886 + * Bluetooth: Delay check for conn->smp in smp_conn_security() + - LP: #1509886 + * nfs: fix v4.2 SEEK on files over 2 gigs + - LP: #1509886 + * NFS: Do cleanup before resetting pageio read/write to mds + - LP: #1509886 + * NFSv4: Recovery of recalled read delegations is broken + - LP: #1509886 + * nfs: fix pg_test page count calculation + - LP: #1509886 + * NFS: Fix a write performance regression + - LP: #1509886 + * Fix sec=krb5 on smb3 mounts + - LP: #1509886 + * disabling oplocks/leases via module parm enable_oplocks broken for SMB3 + - LP: #1509886 + * Do not fall back to SMBWriteX in set_file_size error cases + - LP: #1509886 + * drm/qxl: only report first monitor as connected if we have no state + - LP: #1509886 + * drm/qxl: recreate the primary surface when the bo is not primary + - LP: #1509886 + * drm/amdgpu: fix overflow on 32bit systems + - LP: #1509886 + * drm/amdgpu: Disable UVD PG + - LP: #1509886 + * drm/amdgpu: fix the UVD suspend sequence order + - LP: #1509886 + * drm/amdgpu: make UVD handle checking more strict + - LP: #1509886 + * drm/amdgpu: Fix max_vblank_count value for current display engines + - LP: #1509886 + * drm/amdgpu: Restore LCD backlight level on resume + - LP: #1509886 + * drm/i915/bios: handle MIPI Sequence Block v3+ gracefully + - LP: #1509886 + * drm: Reject DRI1 hw lock ioctl functions for kms drivers + - LP: #1509886 + * drm/radeon: Restore LCD backlight level on resume (>= R5xx) + - LP: #1509886 + * drm/dp/mst: fixup handling hotplug on port removal. + - LP: #1509886 + * drm/dp/mst: drop cancel work sync in the mstb destroy path (v2) + - LP: #1509886 + * xhci: give command abortion one more chance before killing xhci + - LP: #1509886 + * xhci: Move xhci_pme_quirk() behind #ifdef CONFIG_PM + - LP: #1509886 + * usb: xhci: lock mutex on xhci_stop + - LP: #1509886 + * usb: xhci: Clear XHCI_STATE_DYING on start + - LP: #1509886 + * usb: xhci: stop everything on the first call to xhci_stop + - LP: #1509886 + * usb: xhci: exit early in xhci_setup_device() if we're halted or dying + - LP: #1509886 + * xhci: change xhci 1.0 only restrictions to support xhci 1.1 + - LP: #1509886 + * xhci: init command timeout timer earlier to avoid deleting it + uninitialized + - LP: #1509886 + * usb: xhci: Add support for URB_ZERO_PACKET to bulk/sg transfers + - LP: #1509886 + * batman-adv: Make DAT capability changes atomic + - LP: #1509886 + * thermal: cpu_cooling: don't call kcalloc() under rcu_read_lock + - LP: #1509886 + * thermal: cpu_cooling: free power table on error or when unregistering + - LP: #1509886 + * hv: util: checking the wrong variable + - LP: #1509886 + * mmc: dw_mmc: handle data blocks > than 4kB if IDMAC is used + - LP: #1509886 + * usb: chipidea: imx: fix a typo for imx6sx + - LP: #1509886 + * cifs: use server timestamp for ntlmv2 authentication + - LP: #1509886 + * irqchip/atmel-aic5: Use per chip mask caches in mask/unmask() + - LP: #1509886 + * irqchip/gic-v3-its: Add missing cache flushes + - LP: #1509886 + * docs: update HOWTO for 3.x -> 4.x versioning + - LP: #1509886 + * extcon: Fix signedness bugs about break error handling + - LP: #1509886 + * extcon: Fix attached value returned by is_extcon_changed + - LP: #1509886 + * mtd: pxa3xx_nand: add a default chunk size + - LP: #1509886 + * mtd: nand: sunxi: fix sunxi_nand_chips_cleanup() + - LP: #1509886 + * mtd: nand: sunxi: fix OOB handling in ->write_xxx() functions + - LP: #1509886 + * hpsa: fix an sprintf() overflow in the reset handler + - LP: #1509886 + * PM / AVS: rockchip-io: depend on CONFIG_POWER_AVS + - LP: #1509886 + * device property: fix potential NULL pointer dereference + - LP: #1509886 + * ath10k: fix per-vif queue locking + - LP: #1509886 + * ath10k: reject 11b tx fragmentation configuration + - LP: #1509886 + * ath10k: fix peer limit enforcement + - LP: #1509886 + * ath10k: wake up offchannel queue properly + - LP: #1509886 + * ath10k: wake up queue upon vif creation + - LP: #1509886 + * pcmcia: sa11x0: fix missing clk_put() in sa11x0 socket drivers + - LP: #1509886 + * ipr: Enable SIS pipe commands for SIS-32 devices. + - LP: #1509886 + * regmap: debugfs: Ensure we don't underflow when printing access masks + - LP: #1509886 + * regmap: debugfs: Don't bother actually printing when calculating max + length + - LP: #1509886 + * security: fix typo in security_task_prctl + - LP: #1509886 + * usb: musb: dsps: fix polling in device-only mode + - LP: #1509886 + * usb: chipidea: udc: using the correct stall implementation + - LP: #1509886 + * usb: Use the USB_SS_MULT() macro to get the burst multiplier. + - LP: #1509886 + * usb: phy: phy-generic: Fix reset behaviour on legacy boot + - LP: #1509886 + * usb: musb: cppi41: allow it to work again + - LP: #1509886 + * USB: chaoskey read offset bug + - LP: #1509886 + * usb: Add device quirk for Logitech PTZ cameras + - LP: #1509886 + * USB: Add reset-resume quirk for two Plantronics usb headphones. + - LP: #1509886 + * crypto: marvell - properly handle CRYPTO_TFM_REQ_MAY_BACKLOG-flagged + requests + - LP: #1509886 + * cpu/cacheinfo: Fix teardown path + - LP: #1509886 + * cpufreq: dt: Tolerance applies on both sides of target voltage + - LP: #1509886 + * MIPS: Fix console output for Fulong2e system + - LP: #1509886 + * MIPS: bootmem: Fix mapstart calculation for contiguous maps + - LP: #1509886 + * MIPS: BPF: Avoid unreachable code on little endian + - LP: #1509886 + * MIPS: BPF: Fix build on pre-R2 little endian CPUs + - LP: #1509886 + * MIPS: dma-default: Fix 32-bit fall back to GFP_DMA + - LP: #1509886 + * MIPS: CPS: Stop dangling delay slot from has_mt. + - LP: #1509886 + * MIPS: CPS: Don't include MT code in non-MT kernels. + - LP: #1509886 + * MIPS: CPS: #ifdef on CONFIG_MIPS_MT_SMP rather than CONFIG_MIPS_MT + - LP: #1509886 + * batman-adv: Make NC capability changes atomic + - LP: #1509886 + * batman-adv: Make TT capability changes atomic + - LP: #1509886 + * batman-adv: Make MCAST capability changes atomic + - LP: #1509886 + * batman-adv: Fix potential synchronization issues in mcast tvlv handler + - LP: #1509886 + * batman-adv: Fix potentially broken skb network header access + - LP: #1509886 + * tools lib traceevent: Fix string handling in heterogeneous arch + environments + - LP: #1509886 + * powerpc/MSI: Fix race condition in tearing down MSI interrupts + - LP: #1509886 + * rsi: Fix possible leak when loading firmware + - LP: #1509886 + * UBIFS: Kill unneeded locking in ubifs_init_security + - LP: #1509886 + * UBI: Validate data_size + - LP: #1509886 + * UBI: return ENOSPC if no enough space available + - LP: #1509886 + * net: via/Kconfig: GENERIC_PCI_IOMAP required if PCI not selected + - LP: #1509886 + * iscsi-target: Avoid OFMarker + IFMarker negotiation + - LP: #1509886 + * mmc: core: Don't return an error for CD/WP GPIOs when GPIOLIB is unset + - LP: #1509886 + * mmc: core: fix dead loop of mmc_retune + - LP: #1509886 + * arm64/efi: Fix boot crash by not padding between EFI_MEMORY_RUNTIME + regions + - LP: #1509886 + * arm64: ftrace: fix function_graph tracer panic + - LP: #1509886 + * arm64: readahead: fault retry breaks mmap file read random detection + - LP: #1509886 + * m68k: Define asmlinkage_protect + - LP: #1509886 + * xen/blkback: free requests on disconnection + - LP: #1509886 + * net/xen-netfront: only napi_synchronize() if running + - LP: #1509886 + * igb: do not re-init SR-IOV during probe + - LP: #1509886 + * genirq: Fix race in register_irq_proc() + - LP: #1509886 + * clocksource: Fix abs() usage w/ 64bit values + - LP: #1509886 + * md/bitmap: don't pass -1 to bitmap_storage_alloc. + - LP: #1509886 + * nfs/filelayout: Fix NULL reference caused by double freeing of fh_array + - LP: #1509886 + * mmc: sdhci-pxav3: remove broken clock base quirk for Armada 38x sdhci + driver + - LP: #1509886 + * mmc: sdhci-pxav3: disable clock inversion for HS MMC cards + - LP: #1509886 + * mmc: sdhci-pxav3: fix error handling of armada_38x_quirks + - LP: #1509886 + * cpufreq: acpi_cpufreq: prevent crash on reading freqdomain_cpus + - LP: #1509886 + * clk: ti: fix dual-registration of uart4_ick + - LP: #1509886 + * clk: ti: clk-7xx: Remove hardwired ABE clock configuration + - LP: #1509886 + * clk: samsung: fix cpu clock's flags checking + - LP: #1509886 + * namei: results of d_is_negative() should be checked after dentry + revalidation + - LP: #1509886 + * dm: fix AB-BA deadlock in __dm_destroy() + - LP: #1509886 + * dm cache: fix NULL pointer when switching from cleaner policy + - LP: #1509886 + * staging: speakup: fix speakup-r regression + - LP: #1509886 + * tty: fix stall caused by missing memory barrier in drivers/tty/n_tty.c + - LP: #1509886 + * drivers/tty: require read access for controlling terminal + - LP: #1509886 + * serial: 8250: add uart_config entry for PORT_RT2880 + - LP: #1509886 + * serial: atmel: fix error path of probe function + - LP: #1509886 + * mm/slab: fix unexpected index mapping result of + kmalloc_size(INDEX_NODE+1) + - LP: #1509886 + * blk-mq: avoid setting hctx->tags->cpumask before allocation + - LP: #1509886 + * sched/preempt: Fix cond_resched_lock() and cond_resched_softirq() + - LP: #1509886 + * 3w-9xxx: don't unmap bounce buffered commands + - LP: #1509886 + * sched/preempt, xen: Use need_resched() instead of should_resched() + - LP: #1509886 + * sched/preempt, powerpc, kvm: Use need_resched() instead of + should_resched() + - LP: #1509886 + * Linux 4.2.4 + - LP: #1509886 + * namei: permit linking with CAP_FOWNER in userns + - LP: #1498162 + * iwlwifi: pci: add a few more PCI subvendor IDs for the 7265 series + - LP: #1510616 + * drm/nouveau/gem: return only valid domain when there's only one + - LP: #1510301 + * net/ibm/emac: bump version numbers for correct work with ethtool + - LP: #1511513 + * l2tp: protect tunnel->del_work by ref_count + - LP: #1511513 + * af_unix: Convert the unix_sk macro to an inline function for type + safety + - LP: #1511513 + * af_unix: return data from multiple SKBs on recv() with MSG_PEEK flag + - LP: #1511513 + * net/unix: fix logic about sk_peek_offset + - LP: #1511513 + * skbuff: Fix skb checksum flag on skb pull + - LP: #1511513 + * skbuff: Fix skb checksum partial check. + - LP: #1511513 + * net: dsa: fix preparation of a port STP update + - LP: #1511513 + * inet: fix races in reqsk_queue_hash_req() + - LP: #1511513 + * net: add pfmemalloc check in sk_add_backlog() + - LP: #1511513 + * ppp: don't override sk->sk_state in pppoe_flush_dev() + - LP: #1511513 + * inet: fix race in reqsk_queue_unlink() + - LP: #1511513 + * bpf: fix panic in SO_GET_FILTER with native ebpf programs + - LP: #1511513 + * ovs: do not allocate memory from offline numa node + - LP: #1511513 + * act_mirred: clear sender cpu before sending to tx + - LP: #1511513 + * bpf: clear sender_cpu before xmit + - LP: #1511513 + * ipv6: Don't call with rt6_uncached_list_flush_dev + - LP: #1511513 + * ethtool: Use kcalloc instead of kmalloc for ethtool_get_strings + - LP: #1511513 + * tipc: move fragment importance field to new header position + - LP: #1511513 + * netlink: Trim skb to alloc size to avoid MSG_TRUNC + - LP: #1511513 + * drm: Fix locking for sysfs dpms file + - LP: #1511513 + * crypto: sparc - initialize blkcipher.ivsize + - LP: #1511513 + * crypto: camellia_aesni_avx - Fix CPU feature checks + - LP: #1511513 + * crypto: ahash - ensure statesize is non-zero + - LP: #1511513 + * memcg: convert threshold to bytes + - LP: #1511513 + * btrfs: check unsupported filters in balance arguments + - LP: #1511513 + * btrfs: fix use after free iterating extrefs + - LP: #1511513 + * arm64: errata: use KBUILD_CFLAGS_MODULE for erratum #843419 + - LP: #1511513 + * ARM: ux500: simplify secondary CPU boot + - LP: #1511513 + * nfsd/blocklayout: accept any minlength + - LP: #1511513 + * mfd: max77843: Fix max77843_chg_init() return on error + - LP: #1511513 + * i2c: rcar: enable RuntimePM before registering to the core + - LP: #1511513 + * i2c: s3c2410: enable RuntimePM before registering to the core + - LP: #1511513 + * i2c: designware: Do not use parameters from ACPI on Dell Inspiron 7348 + - LP: #1511513 + * i2c: designware-platdrv: enable RuntimePM before registering to the + core + - LP: #1511513 + * workqueue: make sure delayed work run in local cpu + - LP: #1511513 + * KVM: x86: clean up kvm_arch_vcpu_runnable + - LP: #1511513 + * KVM: x86: fix SMI to halted VCPU + - LP: #1511513 + * KVM: x86: fix RSM into 64-bit protected mode + - LP: #1511513 + * drm/qxl: fix framebuffer dirty rectangle tracking. + - LP: #1511513 + * drm/nouveau/fbcon: take runpm reference when userspace has an open fd + - LP: #1511513 + * drm/dp/mst: make mst i2c transfer code more robust. + - LP: #1511513 + * drm/radeon: attach tile property to mst connector + - LP: #1511513 + * drm/radeon: add pm sysfs files late + - LP: #1511513 + * drm/amdgpu: add pm sysfs files late + - LP: #1511513 + * drm/amdgpu: fix num_crtc on CZ + - LP: #1511513 + * drm/amdgpu: check before checking pci bridge registers + - LP: #1511513 + * drm/amdgpu: Keep the pflip interrupts always enabled v7 + - LP: #1511513 + * dm thin: fix missing pool reference count decrement in pool_ctr error + path + - LP: #1511513 + * rbd: fix double free on rbd_dev->header_name + - LP: #1511513 + * timekeeping: Increment clock_was_set_seq in timekeeping_init() + - LP: #1511513 + * pinctrl: imx25: ensure that a pin with id i is at position i in the + info array + - LP: #1511513 + * arm64: Fix THP protection change logic + - LP: #1511513 + * svcrdma: handle rdma read with a non-zero initial page offset + - LP: #1511513 + * Linux 4.2.5 + - LP: #1511513 + * x86/vm86: Set thread.vm86 to NULL on fork/clone + - LP: #1499089 + * crypto: 842 - Add CRC and validation support + - LP: #1497878 + * mac80211: Fix hwflags debugfs file format + - LP: #1514889 + * ath9k: declare required extra tx headroom + - LP: #1514889 + * mmc: core: Fix init_card in 52Mhz + - LP: #1514889 + * iwlwifi: dvm: fix D3 firmware PN programming + - LP: #1514889 + * iwlwifi: fix firmware filename for 3160 + - LP: #1514889 + * rtlwifi: rtl8821ae: Fix system lockups on boot + - LP: #1514889 + * iwlwifi: mvm: clear csa countdown when AP is stopped + - LP: #1514889 + * iwlwifi: mvm: fix D3 CCMP TX PN assignment + - LP: #1514889 + * iwlwifi: mvm: fix D3 firmware PN programming + - LP: #1514889 + * iwlwifi: mvm: init card correctly on ctkill exit check + - LP: #1514889 + * iwlwifi: mvm: flush fw_dump_wk when mvm fails to start + - LP: #1514889 + * iommu/vt-d: fix range computation when making room for large pages + - LP: #1514889 + * iommu/amd: Fix BUG when faulting a PROT_NONE VMA + - LP: #1514889 + * iommu/amd: Don't clear DTE flags when modifying it + - LP: #1514889 + * powerpc/rtas: Validate rtas.entry before calling enter_rtas() + - LP: #1514889 + * drm: fix mutex leak in drm_dp_get_mst_branch_device + - LP: #1514889 + * drm: Correct arguments to list_tail_add in create blob ioctl + - LP: #1514889 + * drm: crtc: integer overflow in drm_property_create_blob() + - LP: #1514889 + * m88ds3103: use own reg update_bits() implementation + - LP: #1514889 + * si2157: Bounds check firmware + - LP: #1514889 + * si2168: Bounds check firmware + - LP: #1514889 + * rtl28xxu: fix control message flaws + - LP: #1514889 + * KVM: arm: use GIC support unconditionally + - LP: #1514889 + * ALSA: hdac: Explicitly add io.h + - LP: #1514889 + * ALSA: hda - Fix inverted internal mic on Lenovo G50-80 + - LP: #1504778, #1514889 + * ALSA: hda - Fix deadlock at error in building PCM + - LP: #1514889 + * ASoC: Add info callback for SX_TLV controls + - LP: #1514889 + * ASoC: wm8904: Correct number of EQ registers + - LP: #1514889 + * x86/efi: Fix multiple GOP device support + - LP: #1514889 + * x86/ioapic: Prevent NULL pointer dereference in setup_ioapic_dest() + - LP: #1514889 + * mm: make sendfile(2) killable + - LP: #1514889 + * fault-inject: fix inverted interval/probability values in printk + - LP: #1514889 + * tracing: Have stack tracer force RCU to be watching + - LP: #1514889 + * bus: arm-ccn: Fix irq affinity setting on CPU migration + - LP: #1514889 + * drm/radeon/dpm: don't add pwm attributes if DPM is disabled + - LP: #1514889 + * drm/amdgpu: add missing dpm check for KV dpm late init + - LP: #1514889 + * drm/i915: Flush pipecontrol post-sync writes + - LP: #1514889 + * drm/i915: Restore lost DPLL register write on gen2-4 + - LP: #1514889 + * drm/i915: Deny wrapping an userptr into a framebuffer + - LP: #1514889 + * drm/radeon: don't try to recreate sysfs entries on resume + - LP: #1514889 + * drm/amdgpu: don't try to recreate sysfs entries on resume + - LP: #1514889 + * drm/radeon: fix dpms when driver backlight control is disabled + - LP: #1514889 + * drm/radeon: move bl encoder assignment into bl init + - LP: #1514889 + * iio: mxs-lradc: Fix temperature offset + - LP: #1514889 + * iio: st_accel: fix interrupt handling on LIS3LV02 + - LP: #1514889 + * iio: accel: sca3000: memory corruption in sca3000_read_first_n_hw_rb() + - LP: #1514889 + * rbd: require stable pages if message data CRCs are enabled + - LP: #1514889 + * rbd: don't leak parent_spec in rbd_dev_probe_parent() + - LP: #1514889 + * rbd: prevent kernel stack blow up on rbd map + - LP: #1514889 + * ARM: EXYNOS: Fix double of_node_put() when parsing child power domains + - LP: #1514889 + * ARM: orion: Fix DSA platform device after mvmdio conversion + - LP: #1514889 + * ARM: mvebu: correct a385-db-ap compatible string + - LP: #1514889 + * ARM: dts: berlin: change BG2Q's USB PHY compatible + - LP: #1514889 + * ARM: dts: Fix audio card detection on Peach boards + - LP: #1514889 + * ARM: dts: imx7d: Fix UART2 base address + - LP: #1514889 + * ARM: dts: am57xx-beagle-x15: set VDD_SD to always-on + - LP: #1514889 + * ARM: ux500: modify initial levelshifter status + - LP: #1514889 + * ARM: OMAP1: fix incorrect INT_DMA_LCD + - LP: #1514889 + * ARM: 8445/1: fix vdsomunge not to depend on glibc specific byteswap.h + - LP: #1514889 + * ARM: 8449/1: fix bug in vdsomunge swab32 macro + - LP: #1514889 + * arm64: kernel: fix tcr_el1.t0sz restore on systems with extended idmap + - LP: #1514889 + * block: don't release bdi while request_queue has live references + - LP: #1514889 + * dm btree remove: fix a bug when rebalancing nodes after removal + - LP: #1514889 + * dm cache: the CLEAN_SHUTDOWN flag was not being set + - LP: #1514889 + * dm btree: fix leak of bufio-backed block in btree_split_beneath error + path + - LP: #1514889 + * nvme: fix 32-bit build warning + - LP: #1514889 + * USB: qcserial: add Sierra Wireless MC74xx/EM74xx + - LP: #1514889 + * i2c: mv64xxx: really allow I2C offloading + - LP: #1514889 + * clkdev: fix clk_add_alias() with a NULL alias device name + - LP: #1514889 + * fbcon: initialize blink interval before calling fb_set_par + - LP: #1514889 + * xhci: handle no ping response error properly + - LP: #1514889 + * xhci: Add spurious wakeup quirk for LynxPoint-LP controllers + - LP: #1514889 + * xen-blkfront: check for null drvdata in blkback_changed + (XenbusStateClosing) + - LP: #1514889 + * module: Fix locking in symbol_put_addr() + - LP: #1514889 + * PCI: Prevent out of bounds access in numa_node override + - LP: #1514889 + * ovl: free stack of paths in ovl_fill_super + - LP: #1514889 + * ovl: free lower_mnt array in ovl_put_super + - LP: #1514889 + * ovl: use O_LARGEFILE in ovl_copy_up() + - LP: #1514889 + * ovl: fix dentry reference leak + - LP: #1514889 + * ovl: fix open in stacked overlay + - LP: #1514889 + * Input: alps - only the Dell Latitude D420/430/620/630 have separate + stick button bits + - LP: #1514889 + * crypto: api - Only abort operations on fatal signal + - LP: #1514889 + * md/raid1: submit_bio_wait() returns 0 on success + - LP: #1514889 + * md/raid10: submit_bio_wait() returns 0 on success + - LP: #1514889 + * md/raid5: fix locking in handle_stripe_clean_event() + - LP: #1514889 + * EDAC, sb_edac: Fix TAD presence check for sbridge_mci_bind_devs() + - LP: #1514889 + * irqchip/tegra: Propagate IRQ type setting to parent + - LP: #1514889 + * mvsas: Fix NULL pointer dereference in mvs_slot_task_free + - LP: #1514889 + * netfilter: ipset: Fix sleeping memory allocation in atomic context + - LP: #1514889 + * btrfs: fix possible leak in btrfs_ioctl_balance() + - LP: #1514889 + * kvm: irqchip: fix memory leak + - LP: #1514889 + * thermal: exynos: Fix register read in TMU + - LP: #1514889 + * um: Fix kernel mode fault condition + - LP: #1514889 + * blk-mq: fix use-after-free in blk_mq_free_tag_set() + - LP: #1514889 + * IB/cm: Fix rb-tree duplicate free and use-after-free + - LP: #1514889 + * sched/deadline: Fix migration of SCHED_DEADLINE tasks + - LP: #1514889 + * cpufreq: intel_pstate: Fix divide by zero on Knights Landing (KNL) + - LP: #1514889 + * arm64: compat: fix stxr failure case in SWP emulation + - LP: #1514889 + * NVMe: Fix memory leak on retried commands + - LP: #1514889 + * drm/vmwgfx: Fix up user_dmabuf refcounting + - LP: #1514889 + * thp: use is_zero_pfn() only after pte_present() check + - LP: #1514889 + * pinctrl: baytrail: Serialize all register access + - LP: #1514889 + * pinctrl: baytrail: Use raw_spinlock for locking + - LP: #1514889 + * xen: fix backport of previous kexec patch + - LP: #1514889 + * Linux 4.2.6 + - LP: #1514889 + + -- Luis Henriques Wed, 11 Nov 2015 09:54:16 +0000 + +linux (4.2.0-18.22) wily; urgency=low + + [ Upstream Kernel Changes ] + + * KVM: x86: vmx: avoid guest->host DOS by intercepting #AC + - LP: #1513540 + - CVE-2015-5307 + + -- Luis Henriques Thu, 05 Nov 2015 21:31:53 +0000 + +linux (4.2.0-17.21) wily; urgency=low + + [ Brad Figg ] + + * Release Tracking Bug + - LP: #1509480 + + [ Joseph Salisbury ] + + * SAUCE: storvsc: use small sg_tablesize on x86 + - LP: #1495983 + + -- Brad Figg Fri, 23 Oct 2015 11:58:01 -0700 + +linux (4.2.0-17.20) wily; urgency=low + + [ Brad Figg ] + + * Release Tracking Bug + - LP: #1508993 + + [ Andy Whitcroft ] + + * [Debian] rebuild should only trigger for non-linux packages + - LP: #1498862 + * [Packaging] Provides: virtualbox-guest-modules when appropriate + - LP: #1434579, #1507588 + + [ Matthew R. Ochs ] + + * SAUCE: (noup) cxlflash: Fix to avoid lock instrumentation rejection + - LP: #1508541 + * SAUCE: (noup) cxlflash: Fix to avoid bypassing context cleanup + - LP: #1508541 + + [ Upstream Kernel Changes ] + + * HID: lenovo: Use constants for axes names + - LP: #1508178 + * HID: lenovo: Add missing return-value check + - LP: #1508178 + * HID: lenovo: Hide middle-button press until release + - LP: #1508178 + + -- Brad Figg Thu, 22 Oct 2015 07:59:42 -0700 + +linux (4.2.0-16.19) wily; urgency=low + + [ Tim Gardner ] + + * Release Tracking Bug + - LP: #1504143 + * [Config] CONFIG_X86_LEGACY_VM86=y, CONFIG_VM86=y for i386 + - LP: #1499089 + * [Config] CONFIG_MODIFY_LDT_SYSCALL=y + - LP: #1499089 + * SAUCE: intel_pstate: Allow manually forcing the use of HWP on Skylake-S + * [Config] CONFIG_ARM64_ERRATUM_843419=n + - LP: #1502946 + * [Config] CONFIG_CAVIUM_ERRATUM_22375=y, CONFIG_CAVIUM_ERRATUM_23154=y + + [ Christophe Lombard ] + + * SAUCE: (noup) cxl: Fix number of allocated pages in SPA + - LP: #1499849 + + [ Matthew R. Ochs ] + + * SAUCE: (noup) cxlflash: Fix to avoid corrupting port selection mask + + [ Robert Richter ] + + * SAUCE: (noup) irqchip/gicv3-its: Add range check for number of + allocated pages + * SAUCE: (noup) irqchip/gicv3: Workaround for Cavium ThunderX erratum + 23154 + * SAUCE: (noup) irqchip/gicv3-its: Read typer register outside the loop + * SAUCE: (noup) irqchip/gicv3-its: Add HW revision detection and + configuration + * SAUCE: (noup) irqchip/gicv3-its: Workaround for Cavium ThunderX errata + 22375, 24313 + + [ Upstream Kernel Changes ] + + * x86/compat: Define ARCH_WANT_OLD_COMPAT_IPC only for 32-bit compat + - LP: #1499089 + * x86/compat: Clean up HAVE_UID16 config + - LP: #1499089 + * x86/compat: Separate ia32 and x32 compat ABIs + - LP: #1499089 + * x86/entry/vm86: Clean up saved_fs/gs + - LP: #1499089 + * x86/entry/vm86: Preserve 'orig_ax' + - LP: #1499089 + * x86/entry/vm86: Move userspace accesses to do_sys_vm86() + - LP: #1499089 + * x86/kconfig/32: Rename CONFIG_VM86 and default it to 'n' + - LP: #1499089 + * x86/ldt: Make modify_ldt() optional + - LP: #1499089 + * x86/vm86: Move vm86 fields out of 'thread_struct' + - LP: #1499089 + * x86/vm86: Move fields from 'struct kernel_vm86_struct' to 'struct vm86' + - LP: #1499089 + * x86/vm86: Eliminate 'struct kernel_vm86_struct' + - LP: #1499089 + * x86/vm86: Use the normal pt_regs area for vm86 + - LP: #1499089 + * x86/vm86: Move the vm86 IRQ definitions to vm86.h + - LP: #1499089 + * x86/vm86: Clean up vm86.h includes + - LP: #1499089 + * x86/vm86: Rename vm86->vm86_info to user_vm86 + - LP: #1499089 + * x86/vm86: Rename vm86->v86flags and v86mask + - LP: #1499089 + * x86/selftests, x86/vm86: Improve entry_from_vm86 selftest + - LP: #1499089 + * selftests/x86/vm86: Fix entry_from_vm86 test on 64-bit kernels + - LP: #1499089 + * x86/vm86: Block non-root vm86(old) if mmap_min_addr != 0 + - LP: #1499089 + * x86/vm86: Fix the misleading CONFIG_VM86 Kconfig help text + - LP: #1499089 + * netfilter: conntrack: use nf_ct_tmpl_free in CT/synproxy error paths + - LP: #1503902 + + -- Tim Gardner Thu, 08 Oct 2015 08:37:53 -0400 + +linux (4.2.0-15.18) wily; urgency=low + + [ Tim Gardner ] + + * Release Tracking Bug + - LP: #1503692 + + [ Andy Whitcroft ] + + * Revert "SAUCE: aufs3: mmap: Fix races in madvise_remove() and sys_msync()" + Was incorrectly backported. + + [ Ben Hutchings ] + + * SAUCE: aufs3: mmap: Fix races in madvise_remove() and sys_msync() + - CVE-2015-7312 + + [ Tim Gardner ] + + * [Debian] config-check and prepare using ${DEBIAN}/config/annotations + Makes the LTS update script work better. + + -- Tim Gardner Wed, 07 Oct 2015 07:28:10 -0600 + +linux (4.2.0-15.17) wily; urgency=low + + [ Tim Gardner ] + + * Release Tracking Bug + - LP: #1503016 + * rebase to v4.2.3 + + [ Andrew Donnellan ] + + * SAUCE: cxl: fix leak of IRQ names in cxl_free_afu_irqs() + * SAUCE: cxl: fix leak of ctx->irq_bitmap when releasing context via + kernel API + * SAUCE: cxl: fix leak of ctx->mapping when releasing kernel API contexts + + [ Ben Hutchings ] + + * SAUCE: aufs3: mmap: Fix races in madvise_remove() and sys_msync() + - CVE-2015-7312 + + [ Dan Carpenter ] + + * SAUCE: (noup) cxlflash: a couple off by one bugs + - LP: #1499849 + + [ John Johansen ] + + * SAUCE: (no-up) apparmor: fix mount not handling disconnected paths + - LP: #1496430 + + [ Manoj Kumar ] + + * SAUCE: (noup) cxlflash: Fix to avoid invalid port_sel value + - LP: #1499849 + * SAUCE: (noup) cxlflash: Replace magic numbers with literals + - LP: #1499849 + * SAUCE: (noup) cxlflash: Fix read capacity timeout + - LP: #1499849 + * SAUCE: (noup) cxlflash: Fix to double the delay each time + - LP: #1499849 + * SAUCE: (noup) cxlflash: Fix to escalate to LINK_RESET on login timeout + - LP: #1499849 + + [ Matthew R. Ochs ] + + * SAUCE: (noup) cxlflash: Fix potential oops following LUN removal + - LP: #1499849 + * SAUCE: (noup) cxlflash: Fix data corruption when vLUN used over + multiple cards + - LP: #1499849 + * SAUCE: (noup) cxlflash: Fix to avoid sizeof(bool) + - LP: #1499849 + * SAUCE: (noup) cxlflash: Fix context encode mask width + - LP: #1499849 + * SAUCE: (noup) cxlflash: Fix to avoid CXL services during EEH + - LP: #1499849 + * SAUCE: (noup) cxlflash: Correct naming of limbo state and waitq + - LP: #1499849 + * SAUCE: (noup) cxlflash: Make functions static + - LP: #1499849 + * SAUCE: (noup) cxlflash: Refine host/device attributes + - LP: #1499849 + * SAUCE: (noup) cxlflash: Fix to avoid spamming the kernel log + - LP: #1499849 + * SAUCE: (noup) cxlflash: Fix to avoid stall while waiting on TMF + - LP: #1499849 + * SAUCE: (noup) cxlflash: Fix location of setting resid + - LP: #1499849 + * SAUCE: (noup) cxlflash: Fix host link up event handling + - LP: #1499849 + * SAUCE: (noup) cxlflash: Fix async interrupt bypass logic + - LP: #1499849 + * SAUCE: (noup) cxlflash: Remove dual port online dependency + - LP: #1499849 + * SAUCE: (noup) cxlflash: Fix AFU version access/storage and add check + - LP: #1499849 + * SAUCE: (noup) cxlflash: Correct usage of scsi_host_put() + - LP: #1499849 + * SAUCE: (noup) cxlflash: Fix to prevent workq from accessing freed + memory + - LP: #1499849 + * SAUCE: (noup) cxlflash: Correct behavior in device reset handler + following EEH + - LP: #1499849 + * SAUCE: (noup) cxlflash: Remove unnecessary scsi_block_requests + - LP: #1499849 + * SAUCE: (noup) cxlflash: Fix function prolog parameters and return codes + - LP: #1499849 + * SAUCE: (noup) cxlflash: Fix MMIO and endianness errors + - LP: #1499849 + * SAUCE: (noup) cxlflash: Fix to prevent EEH recovery failure + - LP: #1499849 + * SAUCE: (noup) cxlflash: Correct spelling, grammar, and alignment + mistakes + - LP: #1499849 + * SAUCE: (noup) cxlflash: Fix to prevent stale AFU RRQ + - LP: #1499849 + * SAUCE: (noup) MAINTAINERS: Add cxlflash driver + - LP: #1499849 + * SAUCE: (noup) cxlflash: Fix to avoid corrupting adapter fops + - LP: #1499849 + * SAUCE: (noup) cxlflash: Correct trace string + - LP: #1499849 + * SAUCE: (noup) cxlflash: Fix to avoid potential deadlock on EEH + - LP: #1499849 + * SAUCE: (noup) cxlflash: Fix to avoid leaving dangling interrupt + resources + - LP: #1499849 + + [ Philippe Bergheaud ] + + * SAUCE: cxl: Workaround malformed pcie packets on some cards + + [ Tim Gardner ] + + * [Config] CONFIG_CC_STACKPROTECTOR_STRONG=y + - LP: #1380025 + * [Config] Add MMC modules sufficient for net booting + - LP: #1502772 + + [ Upstream Kernel Changes ] + + * Initialize msg/shm IPC objects before doing ipc_addid() + * RDS: verify the underlying transport exists before creating a + connection + * cxl: abort cxl_pci_enable_device_hook() if PCI channel is offline + * cxl: Fix build failure due to -Wunused-variable behaviour change + * cxl: Fix lockdep warning while creating afu_err_buff attribute + * USB: whiteheat: fix potential null-deref at probe + - LP: #1478826 + - CVE-2015-5257 + * dcache: Handle escaped paths in prepend_path + - CVE-2015-2925 + * vfs: Test for and handle paths that are unreachable from their mnt_root + - CVE-2015-2925 + * hv_netvsc: Add support to set MTU reservation from guest side + - LP: #1494431 + * hv_netvsc: Add close of RNDIS filter into change mtu call + - LP: #1494431 + + -- Tim Gardner Sun, 04 Oct 2015 09:26:08 -0400 + +linux (4.2.0-14.16) wily; urgency=low + + [ Tim Gardner ] + + * Release Tracking Bug + - LP: #1501818 + * rebase to v4.2.2 + * [Config] CONFIG_RTC_DRV_XGENE=y + - LP: #1499869 + + [ Upstream Kernel Changes ] + + * mei: do not access freed cb in blocking write + - LP: #1494076 + * mei: bus: fix drivers and devices names confusion + - LP: #1494076 + * mei: bus: rename nfc.c to bus-fixup.c + - LP: #1494076 + * mei: bus: move driver api functions at the start of the file + - LP: #1494076 + * mei: bus: rename uevent handler to mei_cl_device_uevent + - LP: #1494076 + * mei: bus: don't enable events implicitly in device enable + - LP: #1494076 + * mei: bus: report if event registration failed + - LP: #1494076 + * mei: bus: revamp device matching + - LP: #1494076 + * mei: bus: revamp probe and remove functions + - LP: #1494076 + * mei: bus: add reference to bus device in struct mei_cl_client + - LP: #1494076 + * mei: bus: add me client device list infrastructure + - LP: #1494076 + * mei: bus: enable running fixup routines before device registration + - LP: #1494076 + * mei: bus: blacklist the nfc info client + - LP: #1494076 + * mei: bus: blacklist clients by number of connections + - LP: #1494076 + * mei: bus: simplify how we build nfc bus name + - LP: #1494076 + * mei: bus: link client devices instead of host clients + - LP: #1494076 + * mei: support for dynamic clients + - LP: #1494076 + * mei: disconnect on connection request timeout + - LP: #1494076 + * mei: define async notification hbm commands + - LP: #1494076 + * mei: implement async notification hbm messages + - LP: #1494076 + * mei: enable async event notifications only from hbm version 2.0 + - LP: #1494076 + * mei: add mei_cl_notify_request command + - LP: #1494076 + * mei: add a handler that waits for notification on event + - LP: #1494076 + * mei: add async event notification ioctls + - LP: #1494076 + * mei: support polling for event notification + - LP: #1494076 + * mei: implement fasync for event notification + - LP: #1494076 + * mei: bus: add and call callback on notify event + - LP: #1494076 + * mei: hbm: add new error code MEI_CL_CONN_NOT_ALLOWED + - LP: #1494076 + * mei: me: d0i3: add the control registers + - LP: #1494076 + * mei: me: d0i3: add flag to indicate D0i3 support + - LP: #1494076 + * mei: me: d0i3: enable d0i3 interrupts + - LP: #1494076 + * mei: hbm: reorganize the power gating responses + - LP: #1494076 + * mei: me: d0i3: add d0i3 enter/exit state machine + - LP: #1494076 + * mei: me: d0i3: move mei_me_hw_reset down in the file + - LP: #1494076 + * mei: me: d0i3: exit d0i3 on driver start and enter it on stop + - LP: #1494076 + * mei: me: add sunrise point device ids + - LP: #1494076 + * mei: hbm: bump supported HBM version to 2.0 + - LP: #1494076 + * mei: remove check on pm_runtime_active in __mei_cl_disconnect + - LP: #1494076 + * mei: fix debugfs files leak on error path + - LP: #1494076 + + [ Upstream Kernel Changes ] + + * rebase to v4.2.2 + - LP: #1492132 + + -- Tim Gardner Tue, 29 Sep 2015 09:02:13 -0700 + +linux (4.2.0-13.15) wily; urgency=low + + [ Tim Gardner ] + + * Release Tracking Bug + - LP: #1500894 + * [Config] Drop annotation for CONFIG_KVM_ARM_MAX_VCPUS + + [ Andre Przywara ] + + * SAUCE: KVM: arm/arm64: VGIC: don't track used LRs in the distributor + * SAUCE: KVM: extend struct kvm_msi to hold a 32-bit device ID + * SAUCE: KVM: arm/arm64: add emulation model specific destroy function + * SAUCE: KVM: arm/arm64: extend arch CAP checks to allow per-VM capabilities + * SAUCE: KVM: arm/arm64: make GIC frame address initialization model specific + * SAUCE: KVM: arm64: Introduce new MMIO region for the ITS base address + * SAUCE: KVM: arm64: handle ITS related GICv3 redistributor registers + * SAUCE: KVM: arm64: introduce ITS emulation file with stub functions + * SAUCE: KVM: arm64: implement basic ITS register handlers + * SAUCE: KVM: arm64: add data structures to model ITS interrupt translation + * SAUCE: KVM: arm64: handle pending bit for LPIs in ITS emulation + * SAUCE: KVM: arm64: sync LPI configuration and pending tables + * SAUCE: KVM: arm64: implement ITS command queue command handlers + * SAUCE: KVM: arm64: implement MSI injection in ITS emulation + * SAUCE: KVM: arm64: enable ITS emulation as a virtual MSI controller + + [ dann frazier ] + + * [Config] CONFIG_MDIO_OCTEON=m + * [Config] Enable NUMA on ARM64 + + [ Duc Dang ] + + * SAUCE: (no-up) MAINTAINERS: Add Applied Micro (APM) X-Gene Device Tree maintainer + * SAUCE: (no-up) arm64: dts: Add X-Gene v2 reboot driver dts node + * SAUCE: (no-up) arm64: dts: Add APM X-Gene 2 standby GPIO controller DTS entries + * SAUCE: (no-up) arm64: dts: Add poweroff device nodes for APM X-Gene 2 platform + + [ Eric Auger ] + + * SAUCE: KVM: api: pass the devid in the msi routing entry + * SAUCE: KVM: kvm_host: add devid in kvm_kernel_irq_routing_entry + * SAUCE: KVM: irqchip: convey devid to kvm_set_msi + * SAUCE: KVM: arm/arm64: enable irqchip routing + * SAUCE: KVM: arm/arm64: build a default routing table + * SAUCE: KVM: arm/arm64: enable MSI routing + * SAUCE: KVM: arm: enable KVM_SIGNAL_MSI and MSI routing + + [ Feng Kan ] + + * SAUCE: (no-up) Documentation: arm64: add SCU dts binding documentation to linux kernel + * SAUCE: (no-up) arm64: dts: Add X-Gene reboot driver dts node + * SAUCE: (no-up) arm64: dts: add APM Merlin Board device tree + * SAUCE: (no-up) Documentation: arm: pmu: Add Potenza PMU binding + * SAUCE: (no-up) arm64: dts: Add PMU node for APM X-Gene Storm SOC + + [ Ganapatrao Kulkarni ] + + * SAUCE: arm64, numa: adding numa support for arm64 platforms. + * SAUCE: Documentation: arm64/arm: dt bindings for numa. + * SAUCE: arm64, numa, dt: adding dt based numa support using dt node property arm, associativity + + [ Tai Nguyen ] + + * SAUCE: (no-up) power: reset: Add syscon poweroff device node for APM + X-Gene platform + + [ Upstream Kernel Changes ] + + * kexec: define kexec_in_progress in !CONFIG_KEXEC case + - LP: #1440103 + * Drivers: hv: vmbus: add special kexec handler + - LP: #1440103 + * Drivers: hv: don't do hypercalls when hypercall_page is NULL + - LP: #1440103 + * Drivers: hv: vmbus: add special crash handler + - LP: #1440103 + * Drivers: hv: vmbus: prefer 'die' notification chain to 'panic' + - LP: #1440103 + * Drivers: hv: kvp: check kzalloc return value + - LP: #1440103 + * tcp_cubic: better follow cubic curve after idle period + - LP: #1500218 + * net: mdio-octeon: Modify driver to work on both ThunderX and Octeon + * net: mdio-octeon: Fix octeon_mdiobus_probe function for return values + * s390/lib: export __delay + * ipmi:ssif: Add a module parm to specify that SMBus alerts don't work + * net: thunder: Factor out DT specific code in BGX + * net, thunder, bgx: Add support to get MAC address from ACPI. + * net: thunderx: Add receive error stats reporting via ethtool + * net: thunderx: mailboxes: remove code duplication + * net: thunderx: Receive hashing HW offload support + * net: thunderx: Support for HW VLAN stripping + * net: thunderx: Rework interrupt handling + * net: thunderx: Support for upto 96 queues for a VF + * net: thunderx: Support for internal loopback mode + * PCI: generic: Remove dependency on ARM-specific struct hw_pci + * PCI: Build setup-irq.o for arm64 + * PCI: generic: Add arm64 support + * of_pci_irq: Silence bogus "of_irq_parse_pci() failed ..." messages. + * cpufreq: powernv: Increase the verbosity of OCC console messages + * cpufreq : powernv: Report Pmax throttling if capped below nominal frequency + - LP: #1500672 + + [ Wang, Xiaolong ] + + * SAUCE: (noup) Disable HWP on Skylake-S processors. + + -- Tim Gardner Fri, 25 Sep 2015 11:19:08 -0600 + +linux (4.2.0-12.14) wily; urgency=low + + [ Tim Gardner ] + + * Release Tracking Bug + - LP: #1499712 + + [ Ben Pope ] + + * SAUCE: drivers/net/ethernet/atheros/alx: Add Killer E2400 device ID + - LP: #1498633 + + [ Knuth Posern ] + + * SAUCE: thunderbolt: Allow loading of module on recent Apple MacBooks + with thunderbolt 2 controller + - LP: #1497321 + + [ Laurent Dufour ] + + * SAUCE: powerpc/hvsi: Fix endianness issues in the HVSI driver + - LP: #1499357 + + [ Upstream Kernel Changes ] + + * x86/hyperv: Mark the Hyper-V TSC as unstable + - LP: #1498206 + * intel_pstate: fix PCT_TO_HWP macro + - LP: #1499040 + * perf/x86/intel/rapl: Add support for Knights Landing (KNL) + - LP: #1461370 + * drm/i915: Add audio pin sense / ELD callback + - LP: #1398277 + * drm/i915: Call audio pin/ELD notify function + - LP: #1398277 + * ALSA: hda - allow codecs to access the i915 pin/ELD callback + - LP: #1398277 + * ALSA: hda - Wake the codec up on pin/ELD notify events + - LP: #1398277 + * drm/i915: Add locks around audio component bind/unbind + - LP: #1398277 + * drm/i915: Drop port_mst_index parameter from pin/eld callback + - LP: #1398277 + + -- Tim Gardner Thu, 24 Sep 2015 09:19:23 -0600 + +linux (4.2.0-11.13) wily; urgency=low + + [ Tim Gardner ] + + * Release Tracking Bug + - LP: #1498170 + * [Config] updateconfigs, removed CONFIG_KVM_ARM_MAX_VCPUS + * rebase to v4.2.1 + + [ Upstream Kernel Changes ] + + * powercap / RAPL: Add support for Skylake H/S + - LP: #1398269 + * powercap / RAPL: Add support for Broadwell-H + - LP: #1398269 + * powercap / RAPL: disable the 2nd power limit properly + - LP: #1398269 + * thermal/powerclamp: add cpu id for Skylake u/y + * thermal/powerclamp: add cpu id for denlow platform + * arm/arm64: KVM: Remove 'config KVM_ARM_MAX_VCPUS' + + [ Upstream Kernel Changes ] + + * rebase to v4.2.1 + + -- Tim Gardner Wed, 16 Sep 2015 06:55:41 -0600 + +linux (4.2.0-10.12) wily; urgency=low + + [ Tim Gardner ] + + * Release Tracking Bug + - LP: #1496109 + + [ Paolo Pisati ] + + * [Config] armhf: ARM_KERNMEM_PERMS=y && DEBUG_RODATA=y + + [ Tim Gardner ] + + * [Config] CONFIG_LEDS_POWERNV=m + - LP: #1494735 + + [ Upstream Kernel Changes ] + + * intel_pstate: enable HWP per CPU + - LP: #1494073 + * intel_pstate: Fix possible overflow complained by Coverity + - LP: #1494073 + * intel_pstate: Add SKY-S support + - LP: #1494073 + * powerpc/powernv: Add OPAL interfaces for accessing and modifying system + LED states + - LP: #1494735 + * powerpc/powernv: Create LED platform device + - LP: #1494735 + * leds/powernv: Add driver for PowerNV platform + - LP: #1494735 + * powerpc/powernv: Fix mis-merge of OPAL support for LEDS driver + - LP: #1494735 + * powerpc/powernv: Enable LEDS support + - LP: #1494735 + + -- Tim Gardner Tue, 15 Sep 2015 08:29:16 -0600 + +linux (4.2.0-10.11) wily; urgency=low + + [ Andy Whitcroft ] + + * Release Tracking Bug + - LP: #1495208 + * No change rebuild to avoid issues with leading zero bytes on + internal module signing key. (see launchpad bug 1494943) + + [ Ming Lei ] + + * [Config] SERIAL_8250_DW=y for arm64 + + [ Upstream Kernel Changes ] + + * drm/i915: Move WaBarrierPerformanceFixDisable:skl to skl code from chv + code + - LP: #1484486 + * drm/i915/gen8: Add infrastructure to initialize WA batch buffers + - LP: #1484486 + * drm/i915/gen8: Re-order init pipe_control in lrc mode + - LP: #1484486 + * drm/i915/gen8: Add WaDisableCtxRestoreArbitration workaround + - LP: #1484486 + * drm/i915/gen8: Add WaFlushCoherentL3CacheLinesAtContextSwitch + workaround + - LP: #1484486 + * drm/i915: Bail out early if WA batch is not available for given Gen + - LP: #1484486 + * drm/i915/gen8: Add WaClearSlmSpaceAtContextSwitch workaround + - LP: #1484486 + * drm/i915: Update WaFlushCoherentL3CacheLinesAtContextSwitch + - LP: #1484486 + * drm/i915/gen9: Implement WaDisableKillLogic for gen 9 + - LP: #1484486 + * drm/i915: Enable WA batch buffers for Gen9 + - LP: #1484486 + * drm/i915/gen9: Add WaDisableCtxRestoreArbitration workaround + - LP: #1484486 + * drm/i915: Update wa_ctx_emit() macro as per kernel coding guidelines + - LP: #1484486 + * drm/i915/gen9: Add WaFlushCoherentL3CacheLinesAtContextSwitch + workaround + - LP: #1484486 + * drm/i915/gen9: Add + WaSetDisablePixMaskCammingAndRhwoInCommonSliceChicken + - LP: #1484486 + * drm/i915:skl: Add WaEnableGapsTsvCreditFix + - LP: #1484486 + * drm/i915/skl: revert duplicated WaBarrierPerformanceFixDisable:skl + - LP: #1484486 + * drm/i915/skl: Don't expose the top most plane on gen9 display + - LP: #1484486 + * drm/i915/skl WaDisableSbeCacheDispatchPortSharing + - LP: #1484486 + * drm/i915/skl: WaIgnoreDDIAStrap is forever, always init DDI A + - LP: #1484486 + * drm/i915: reduce indent in i9xx_hpd_irq_handler + - LP: #1484531 + * drm/i915: reduce duplicate conditions in i9xx_hpd_irq_handler + - LP: #1484531 + * drm/i915: reduce indent in intel_hpd_irq_handler + - LP: #1484531 + * drm/i915: group all hotplug related fields into a new struct in + dev_priv + - LP: #1484531 + * drm/i915: add for_each_hpd_pin to iterate over hotplug pins + - LP: #1484531 + * drm/i915: simplify conditions for skipping the 2nd hpd loop iterations + - LP: #1484531 + * drm/i915: put back the indent in intel_hpd_irq_handler + - LP: #1484531 + * drm/i915: merge the two hpd loops in intel_hpd_irq_handler to one + - LP: #1484531 + * drm/i915: simplify condition for digital port + - LP: #1484531 + * drm/i915: abstract away platform specific parts from hpd handling + - LP: #1484531 + * drm/i915: Handle HPD when it has actually occurred + - LP: #1484531 + * drm/i915: Set power domain for DDI-E + - LP: #1484531 + * drm/i915: Set alternate aux for DDI-E + - LP: #1484531 + * drm/i915/skl: enable DDI-E hotplug + - LP: #1484531 + * drm/i915/bxt: fix DDI PHY vswing scale value setting + - LP: #1494163 + * drm/i915/skl: Buffer translation improvements + - LP: #1494163 + * drm/i915: Per-DDI I_boost override + - LP: #1494163 + * drm/i915: fix VBT parsing for SDVO child device mapping + - LP: #1494163 + * drm/i915/bxt: edp1.4 Intermediate Freq support + - LP: #1494163 + * drm/i915: fix link rates reported for SKL + - LP: #1494163 + * drm/i915: Allow parsing of variable size child device entries from VBT + - LP: #1494163 + * drm/i915/skl: Update DDI buffer translation programming. + - LP: #1494163 + * drm/i915: Enable HDMI on DDI-E + - LP: #1484531 + * drm/i915/skl: Enable DDI-E + - LP: #1484531 + * drm/i915: eDP can be present on DDI-E + - LP: #1484531 + * drm/i915/skl: Adding DDI_E power well domain + - LP: #1484531 + * drm/i915: set CDCLK if DPLL0 enabled during resuming from S3 + - LP: #1490035 + * drm/i915: Split atomic wm update to pre and post variants + - LP: #1493746 + * drm/i915/skl: Drop the preliminary_hw_support flag + - LP: #1486868 + * drm/i915: set FDI translations to NULL on SKL + - LP: #1494163 + + -- Andy Whitcroft Sun, 13 Sep 2015 11:32:02 +0100 + +linux (4.2.0-9.9) wily; urgency=low + + [ Tim Gardner ] + + * Release Tracking Bug + - LP: #1493970 + * [Config] CONFIG_MFD_INTEL_LPSS=m + - LP: #1397876 + + [ dann frazier ] + + * [Config] Disable CONFIG_IPMI_SI_PROBE_DEFAULTS on armhf and arm64 + - LP: #1388952 + + [ Michael Ellerman ] + + * SAUCE: crypto: vmx - VMX crypto should depend on CONFIG_VSX + Fixes FTBS on 32 bit powerpc, patch sent upstream. + + [ Upstream Kernel Changes ] + + * thermal/powerclamp: add cpu id for skylake h/s + - LP: #1398269 + * perf/x86/intel/uncore: Add Broadwell-DE uncore support + - LP: #1397852 + * mfd: watchdog: iTCO_wdt: Expose watchdog properties using platform data + - LP: #1460905 + * i2c: i801: Create iTCO device on newer Intel PCHs + - LP: #1460905 + * watchdog: iTCO_wdt: Add support for TCO on Intel Sunrisepoint + - LP: #1460905 + * perf/x86: Add a native_perf_sched_clock_from_tsc() + - LP: #1397867 + * perf/x86/intel: Add support for PEBSv3 profiling + - LP: #1397867 + * perf/x86/intel/lbr: Allow time stamp for free running PEBSv3 + - LP: #1397867 + * x86: Add new MSRs and MSR bits used for Intel Skylake PMU support + - LP: #1397867 + * perf: Add cycles to branch_info + - LP: #1397867 + * perf/x86/intel/lbr: Add support for LBRv5 + - LP: #1397867 + * perf/x86/intel: Handle new arch perfmon v4 status bits + - LP: #1397867 + * perf/x86/intel: Move PMU ACK to after LBR read + - LP: #1397867 + * perf/x86/intel/lbr: Optimize v4 LBR unfreezing + - LP: #1397867 + * perf/x86/intel: Add Intel Skylake PMU support + - LP: #1397867 + * perf/x86/intel/lbr: Use correct index to save/restore LBR_INFO with + call stack + - LP: #1397867 + * perf/x86/intel/lbr: Limit LBR accesses to TOS in callstack mode + - LP: #1397867 + * perf/x86: Make merge_attr() global to use from perf_event_intel + - LP: #1397867 + * perf/x86/intel: Use 0x11 as extra reg test value + - LP: #1397867 + * perf tools: Add support for cycles, weight branch_info field + - LP: #1397867 + * perf report: Add flag for non ANY branch mode + - LP: #1397867 + * perf report: Add infrastructure for a cycles histogram + - LP: #1397867 + * perf report: Add processing for cycle histograms + - LP: #1397867 + * perf annotate: Compute IPC and basic block cycles + - LP: #1397867 + * perf annotate: Finally display IPC and cycle accounting + - LP: #1397867 + * perf top: Add branch annotation code to top + - LP: #1397867 + * perf report: Display cycles in branch sort mode + - LP: #1397867 + * perf annotate: Fix 32-bit compilation error in util/annotate.c + - LP: #1397867 + * PM / QoS: Make it possible to expose device latency tolerance to + userspace + - LP: #1460908 + * ACPI / PM: Attach ACPI power domain only once + - LP: #1460908 + * Driver core: wakeup the parent device before trying probe + - LP: #1460908 + * klist: implement klist_prev() + - LP: #1460908 + * driver core: implement device_for_each_child_reverse() + - LP: #1460908 + * mfd: make mfd_remove_devices() iterate in reverse order + - LP: #1460908 + * dmaengine: add a driver for Intel integrated DMA 64-bit + - LP: #1460908 + * mfd: Add support for Intel Sunrisepoint LPSS devices + - LP: #1460908 + * spi: pxa2xx: Add support for Intel Sunrisepoint + - LP: #1397876 + * spi: spi-pxa2xx: Remove unused legacy PXA DMA API channel numbers + - LP: #1397876 + * spi: pxa2xx: Add terminating entry for pxa2xx_spi_pci_compound_match + - LP: #1397876 + * spi: spi-pxa2xx: Remove unused legacy null dma buffer and allocation + for it + - LP: #1397876 + * intel_idle: Skylake Client Support + - LP: #1397877 + * powerpc/kernel: Switch to using MAX_ERRNO + - LP: #1458876 + * powerpc/kernel: Change the do_syscall_trace_enter() API + - LP: #1458876 + * powerpc: Drop unused syscall_get_error() + - LP: #1458876 + * powerpc: Don't negate error in syscall_set_return_value() + - LP: #1458876 + * powerpc: Rework syscall_get_arguments() so there is only one loop + - LP: #1458876 + * powerpc: Use orig_gpr3 in syscall_get_arguments() + - LP: #1458876 + * powerpc: Change syscall_get_nr() to return int + - LP: #1458876 + * powerpc/kernel: Add SIG_SYS support for compat tasks + - LP: #1458876 + * powerpc/kernel: Enable seccomp filter + - LP: #1458876 + * selftests/seccomp: Make seccomp tests work on big endian + - LP: #1458876 + * selftests/seccomp: Add powerpc support + - LP: #1458876 + * eCryptfs: Invalidate dcache entries when lower i_nlink is zero + + -- Tim Gardner Tue, 08 Sep 2015 19:17:57 -0600 + +linux (4.2.0-8.8) wily; urgency=low + + [ Tim Gardner ] + + * Release Tracking Bug + - LP: #1493357 + * [Config] CONFIG_CRYPTO_DEV_NX_COMPRESS_CRYPTO obsolete + - LP: #1488495 + * [Config] CONFIG_CXLFLASH=m + * [Config] CONFIG_CXL_EEH=y for ppc64el, powerpc64-smp + + + [ Andy Whitcroft ] + + * [Packaging] standardise on stage1 for the bootstrap stage in line with debian + * [Packaging] mark up control for stage1 + * [Config] kernel-versions -- clean up deps field + * [Config] s390x -- build linux-libc-dev + - LP: #1488653 + * [Packaging] control -- prepare for new kernel-wedge semantics + + [ Upstream Kernel Changes ] + + * crypto: vmx - Fixing AES-CTR counter bug + - LP: #1484519 + * crypto: vmx - Fixing GHASH Key issue on little endian + - LP: #1484519 + * powerpc: Uncomment and make enable_kernel_vsx() routine available + - LP: #1484519 + * crypto: vmx - Adding enable_kernel_vsx() to access VSX instructions + - LP: #1484519 + * crypto: nx - nx842_OF_upd_status should return ENODEV if device is not + 'okay' + - LP: #1488495 + * crypto: nx - rename nx842_{init, exit} to nx842_pseries_{init, exit} + - LP: #1488495 + * crypto: nx - do not emit extra output if status is disabled + - LP: #1488495 + * crypto: nx - reduce chattiness of platform drivers + - LP: #1488495 + * crypto: nx/842 - Fix context corruption + - LP: #1488495 + * crypto: nx - remove __init/__exit from VIO functions + - LP: #1488495 + * crypto: nx - remove pSeries NX 'status' field + - LP: #1488495 + * crypto: nx - move kzalloc() out of spinlock + - LP: #1488495 + * crypto: nx - don't register pSeries driver if ENODEV + - LP: #1488495 + * crypto: nx - use common code for both NX decompress success cases + - LP: #1488495 + * crypto: nx - merge nx-compress and nx-compress-crypto + - LP: #1488495 + * crypto: nx - rename nx-842-crypto.c to nx-842.c + - LP: #1488495 + * crypto: nx - make platform drivers directly register with crypto + - LP: #1488495 + * cxlflash: Base support for IBM CXL Flash Adapter + - LP: #1449121 + * cxlflash: Base error recovery support + - LP: #1449121 + * cxlflash: Superpipe support + - LP: #1449121 + * cxlflash: Virtual LUN support + - LP: #1449121 + * cxlflash: off by one bug in cxlflash_show_port_status() + - LP: #1449121 + * cxlflash: shift wrapping bug in afu_link_reset() + - LP: #1449121 + * cxlflash: Remove unused variable from queuecommand + - LP: #1449121 + * powerpc/powernv: move dma_get_required_mask from pnv_phb to + pci_controller_ops + * powerpc/eeh: Probe after unbalanced kref check + * misc: cxl: clean up afu_read_config() + * cxl: Add explicit precision specifiers + * cxl: use more common format specifier + * cxl: Destroy cxl_adapter_idr on module_exit + * cxl: Destroy afu->contexts_idr on release of an afu + * cxl: Don't ignore add_process_element() result when attaching context + * cxl: Compile with -Werror + * cxl: sparse: Make declarations static + * cxl: sparse: Silence iomem warning in debugfs file creation + * cxl: Convert MMIO read/write macros to inline functions + * cxl: Drop commands if the PCI channel is not in normal state + * cxl: Allocate and release the SPA with the AFU + * cxl: Make IRQ release idempotent + * cxl: Clean up adapter MMIO unmap path. + * cxl: Refactor adaptor init/teardown + * cxl: Refactor AFU init/teardown + * cxl: Don't remove AFUs/vPHBs in cxl_reset + * cxl: Allow the kernel to trust that an image won't change on PERST. + * cxl: EEH support + * cxl: Add CONFIG_CXL_EEH symbol + * cxl: Plug irq_bitmap getting leaked in cxl_context + * cxl: Add alternate MMIO error handling + * cxl: Allow release of contexts which have been OPENED but not STARTED + * cxl: Remove use of macro DEFINE_PCI_DEVICE_TABLE + * cxl: Release irqs if memory allocation fails + * cxl: Remove racy attempt to force EEH invocation in reset + * cxl: Fix + cleanup error paths in cxl_dev_context_init + * cxl: Fix force unmapping mmaps of contexts allocated through the kernel api + * cxl: Set up and enable PSL Timebase + + -- Tim Gardner Tue, 01 Sep 2015 07:38:43 -0600 + +linux (4.2.0-7.7) wily; urgency=low + + [ Tim Gardner ] + + * Release Tracking Bug + - LP: #1490564 + * rebase to v4.2 + + [ Wen Xiong ] + + * SAUCE: ipr: Byte swapping for device_id attribute in sysfs + - LP: #1453892 + + [ Upstream Kernel Changes ] + + * rebase to v4.2 + - LP: #1487345 + + -- Tim Gardner Wed, 26 Aug 2015 07:06:10 -0600 + +linux (4.2.0-6.6) wily; urgency=low + + [ Tim Gardner ] + + * Release Tracking Bug + - LP: #1488138 + + [ Andy Whitcroft ] + + * rebase to v4.2-rc8 + + [ Shilpasri G Bhat ] + + * SAUCE: cpufreq: powernv: Handle throttling due to Pmax capping at chip + level + - LP: #1480894 + * SAUCE: powerpc/powernv: Add definition of OPAL_MSG_OCC message type + - LP: #1480894 + * SAUCE: cpufreq: powernv: Register for OCC related opal_message + notification + - LP: #1480894 + * SAUCE: cpufreq: powernv: Call throttle_check() on receiving + OCC_THROTTLE + - LP: #1480894 + * SAUCE: cpufreq: powernv: Report Psafe only if PMSR.psafe_mode_active + bit is set + - LP: #1480894 + * SAUCE: cpufreq: powernv: Restore cpu frequency to policy->cur on + unthrottling + - LP: #1480894 + + [ Upstream Kernel Changes ] + + * rebase to v4.2-rc8 + - LP: #1483440 + - LP: #1484334 + + -- Tim Gardner Fri, 21 Aug 2015 07:12:11 -0600 + +linux (4.2.0-5.5) wily; urgency=low + + [ Tim Gardner ] + + * Release Tracking Bug + - LP: #1487173 + + [ Andy Whitcroft ] + + * [Packaging] correct spelling of probabaly on the tools packages + - LP: #1256822 + * rebase to v4.2-rc7 + + [ dann frazier ] + + * d-i: Add nicpf and nicvf to nic-modules + * d-i: Enable usb modules on arm64 + + [ Mahesh Salgaonkar ] + + * SAUCE: powerpc/powernv: display reason for Malfunction Alert HMI. + - LP: #1482343 + * SAUCE: powerpc/powernv: Pull all HMI events before panic. + - LP: #1482343 + * SAUCE: powerpc/powernv: Invoke opal_cec_reboot2() on unrecoverable + machine check errors. + - LP: #1482343 + * SAUCE: powerpc/powernv: Invoke opal_cec_reboot2() on unrecoverable HMI. + - LP: #1482343 + + [ Vipin K Parashar ] + + * SAUCE: powerpc/powernv: Add poweroff (EPOW, DPO) events support for + PowerNV platform + - LP: #1469771 + + [ Upstream Kernel Changes ] + + * rebase to v4.2-rc7 + + -- Tim Gardner Tue, 11 Aug 2015 09:48:40 -0600 + +linux (4.2.0-4.4) wily; urgency=low + + [ Tim Gardner ] + + * Release Tracking Bug + - LP: #1483677 + + [ Achiad Shochat ] + + * SAUCE: net/mlx5e: Support TX packet copy into WQE + * SAUCE: net/mlx5e: TX latency optimization to save DMA reads + * SAUCE: net/mlx5e: Cosmetics: use BIT() instead of "1 <<", and others + * SAUCE: net/mlx5e: Input IPSEC.SPI into the RX RSS hash function + + [ Adam Lee ] + + * SAUCE: serial: 8250_pci: Add support for Pericom PI7C9X795[1248] + - LP: #1480142 + + [ dann frazier ] + + * [Config] CONFIG_NR_CPUS=128 on arm64 + + [ Leann Ogasawara ] + + * [Config] d-i -- Add sfc to nic-modules udeb + - LP: #1481490 + + [ Saeed Mahameed ] + + * SAUCE: net/mlx5e: Support ETH_RSS_HASH_XOR + * SAUCE: net/mlx5e: Allocate DMA coherent memory on reader NUMA node + + [ Tim Gardner ] + + * [Config] CONFIG_X86_INTEL_MPX=y + - LP: #1460902 + * [Debian] change dependency on module-init-tools to kmod + - LP: #1481986 + * rebase to v4.2-rc6 + + [ Upstream Kernel Changes ] + + * rebase to v4.2-rc6 + + -- Tim Gardner Tue, 04 Aug 2015 16:59:45 -0600 + +linux (4.2.0-3.3) wily; urgency=low + + [ Tim Gardner ] + + * Release Tracking Bug + - LP: #1481462 + * SAUCE: workqueue: Make flush_workqueue() available again to non GPL modules + Fixes an FTBS for at least one DKMS package. + + -- Tim Gardner Tue, 04 Aug 2015 11:26:53 -0600 + +linux (4.2.0-2.2) wily; urgency=low + + [ Tim Gardner ] + + * Release Tracking Bug + - LP: #1481067 + * rebase to v4.2-rc5 + + [ Andy Whitcroft ] + + * [Packaging] module-inclusion -- commonise copy code and simplify + * [Packaging] module-inclusion -- add manual command entries + * [Packaging] module blacklists -- add support for manual blacklists + * [Packaging] do_common_tools should always be on + * [Packaging] initscripts need installing when making the package + * [Packaging] initscripts work around bug in debhelper systemd support + * [Config] exclude oss modules from linux-image + - LP: #1434842 + * hyper-v -- add hid and fb drivers to linux-virtual + - LP: #1444179 + * ubuntu: (no-squash) vbox -- infrastructure and updater + * ubuntu: vbox -- elide the new symlinks and reconstruct on clean: + - LP: #1426113 + * ubuntu: vbox -- update to 5.0.0-dfsg-1 + - LP: #1480879 + * SAUCE: vbox: follow v4.2 updates to follow_link()/put_link() API + * [Config] move vbox modules into linux-image + + [ Upstream Kernel Changes ] + + * rebase to v4.2-rc5 + - LP: #1478497 + - LP: #1477900 + + -- Andy Whitcroft Mon, 03 Aug 2015 12:20:10 +0100 + +linux (4.2.0-1.1~rc1) wily; urgency=low + + [ Andy Whitcroft ] + + * Release Tracking Bug + - LP: #1479903 + * Initial upload of v4.2 based kernel (currently v4.-rc4) + + [ Upstream Kernel Changes ] + + * rebase to v4.2-rc4 + - LP: #1476987 + - LP: #1476888 + * rebase to v4.2-rc3 + * rebase to v4.2-rc2 + * rebase to v4.2-rc1 + - LP: #1394368 + - LP: #1427680 + - LP: #1462614 + - LP: #1397021 + + -- Andy Whitcroft Thu, 30 Jul 2015 18:42:46 +0100 + +linux (4.1.0-3.3) wily; urgency=low + + [ Andy Whitcroft ] + + * Release Tracking Bug + - LP: #1478897 + + [ Colin Ian King ] + + * SAUCE: KEYS: ensure we free the assoc array edit if edit is valid + - CVE-2015-1333 + + [ Seth Forshee ] + + * SAUCE: overlayfs: Enable user namespace mounts for the "overlay" fstype + - LP: #1478578 + + [ Upstream Kernel Changes ] + + * sched/stop_machine: Fix deadlock between multiple stop_two_cpus() + - LP: #1461620 + * x86/nmi: Enable nested do_nmi() handling for 64-bit kernels + * x86/nmi/64: Remove asm code that saves cr2 + * x86/nmi/64: Switch stacks on userspace NMI entry + * x86/nmi/64: Reorder nested NMI checks + * x86/nmi/64: Use DF to avoid userspace RSP confusing nested NMI + detection + + -- Andy Whitcroft Tue, 28 Jul 2015 11:59:03 +0100 + +linux (4.1.0-2.4) wily; urgency=low + + [ Andy Whitcroft ] + + * SAUCE: overlayfs: when copying up and reading directories ensure + mounter had permissions V2 + - CVE-2015-1328 + + [ Leann Ogasawara ] + + * Release Tracking Bug + - LP: #1465419 + + -- Leann Ogasawara Mon, 15 Jun 2015 14:09:22 -0700 + +linux (4.1.0-2.2) wily; urgency=low + + [ Tim Gardner ] + + * rebase to v4.1.3 + * [Config] Add i40e[vf] to d-i + - LP: #1476393 + + [ Upstream Kernel Changes ] + + * rebase to v4.1.3 + - LP: #1427680 + - LP: #1462614 + - LP: #1394368 + + -- Tim Gardner Wed, 22 Jul 2015 09:13:02 -0600 + +linux (4.1.0-1.1) wily; urgency=low + + [ Andy Whitcroft ] + + * SAUCE: overlay: add backwards compatible overlayfs format support V3 + - LP: #1395877, #1410480 + * SAUCE: overlayfs: when copying up and reading directories ensure + mounter had permissions V2 + - CVE-2015-1328 + * [Packaging] fix up Vcs-Git: to point to launchpad + * [Config] correct linux-initramfs-tool virtual linkage + - LP: #1474810 + + [ Chris J Arges ] + + * [Config] Add dm-service-time to multipath-modules + - LP: #1469240 + * [Config] Add MTD_POWERNV_FLASH and OPAL_PRD + - LP: #1464560 + + [ Jay Vosburgh ] + + * SAUCE: fan: Proof of concept implementation (v2) + - LP: #1439706 + * SAUCE: fan: tunnel multiple mapping mode (v3) + - LP: #1470091 + + [ Leann Ogasawara ] + + * Revert "SAUCE: ext4: disable ext4_punch_hole for indirect filesystems" + * Revert "SAUCE: intel_pstate: inform user that thermald is worth + considering" + * Revert "SAUCE: Work around broken ACPI backlight on Dell Inspiron 5537" + * Revert "SAUCE: dm-crypt: never use write same" + * Release Tracking Bug + - LP: #1476333 + + [ Tim Gardner ] + + * Rebase to v4.1 + - LP: #1443371 + * [Config] Enable Apparmor + * [Config] CONFIG_OVERLAY_FS_V1=y + * [Config] DEFAULT_IOSCHED="deadline" for ppc64el + - LP: #1469829 + * [Config] CONFIG_VM86=n + - LP: #1473447 + * [Config] ACORN_PARTITION=n + - LP: #1453117 + + [ Timo Aaltonen ] + + * [Config] Disable CONFIG_DRM_I915_PRELIMINARY_HW_SUPPORT + - LP: #1473319 + + [ Upstream Kernel Changes ] + + * efi: efivar_create_sysfs_entry() should return negative error codes + * efi: Add esrt support + * x86, doc: Remove cmdline_size from list of fields to be filled in for + EFI handover + * efi/esrt: Fix some compiler warnings + * efi: dmi: List SMBIOS3 table before SMBIOS table + * efi: Add 'systab' information to Documentation/ABI + * ALSA: hda - restore the MIC FIXUP for some Dell machines + - LP: #1473560 + * mtd: powernv: Add powernv flash MTD abstraction driver + - LP: #1464560 + * powerpc/powernv: Expose OPAL APIs required by PRD interface + - LP: #1464560 + * powerpc/powernv: Add opal-prd channel + - LP: #1464560 + * powerpc/powernv: fix construction of opal PRD messages + - LP: #1464560 + * powerpc/include: Add opal-prd to installed uapi headers + - LP: #1464560 + * powerpc/powernv: Fix vma page prot flags in opal-prd driver + - LP: #1464560 + + -- Leann Ogasawara Mon, 20 Jul 2015 10:16:06 -0700 + +linux (4.0.0-2.4) wily; urgency=low + + [ Andy Whitcroft ] + + * SAUCE: overlayfs: when copying up and reading directories ensure + mounter had permissions V2 + - CVE-2015-1328 + + [ Leann Ogasawara ] + + * Release Tracking Bug + - LP: #1465419 + + -- Leann Ogasawara Mon, 15 Jun 2015 14:09:22 -0700 + +linux (4.0.0-1.2) wily; urgency=low + + [ Andy Whitcroft ] + + * SAUCE: overlay: add backwards compatible overlayfs format support V3 + - LP: #1395877, #1410480 + * [Config] enable CONFIG_OVERLAY_FS_V1 + + [ Tai Nguyen ] + + * SAUCE: power: reset: Add syscon reboot device node for APM X-Gene platform + - LP: #1463211 + + [ Tim Gardner ] + + * [Config] CONFIG_HIBERNATION=n for ppc64el + - LP: #1463836 + + -- Tim Gardner Fri, 12 Jun 2015 06:11:53 -0600 + +linux (4.0.0-1.1) wily; urgency=low + + [ Leann Ogasawara ] + + * Revert "md/raid0: fix bug with chunksize not a power of 2." + - LP: #1457510 + * powerpc/powernv: Check image loaded or not before calling flash + - LP: #1461553 + + [ Tim Gardner ] + + * [Config] armhf: CPUFREQ_DT=y + - LP: #1457781 + + [ Upstream Kernel Changes ] + + * rebase to v4.0.5 + - LP: #1429756 + - LP: #1452175 + - LP: #1454656 + - LP: #1447909 + - LP: #1446517 + - LP: #1428947 + - LP: #1410704 + - LP: #1412800 + - LP: #1400215 + - LP: #1411193 + - LP: #1412800 + - LP: #1408295 + - LP: #1436745 + + -- Leann Ogasawara Tue, 09 Jun 2015 05:58:46 -0700 + +linux (3.19.0-10.10) vivid; urgency=low + + [ Andy Whitcroft ] + + * [Packaging] control -- make element ordering deterministic + * [Config] allow dracult to support initramfs as well + - LP: #1109029 + * [Packaging] generate live watchdog blacklists + - LP: #1432837 + + [ Leann Ogasawara ] + + * [Config] CONFIG_KVM_GENERIC_DIRTYLOG_READ_PROTECT=y + - LP: #1397860 + * rebase to v3.19.2 + + [ Upstream Kernel Changes ] + + * thinkpad_acpi: support new BIOS version string pattern + - LP: #1417915 + * arm64: Invalidate the TLB corresponding to intermediate page table + levels + - LP: #1432546 + * perf tools: Support parsing parameterized events + - LP: #1430341 + * perf tools: Extend format_alias() to include event parameters + - LP: #1430341 + * perf Documentation: Add event parameters + - LP: #1430341 + * perf tools: Document parameterized and symbolic events + - LP: #1430341 + * perf: provide sysfs_show for struct perf_pmu_events_attr + - LP: #1430341 + * perf: add PMU_EVENT_ATTR_STRING() helper + - LP: #1430341 + * perf: define EVENT_DEFINE_RANGE_FORMAT_LITE helper + - LP: #1430341 + * powerpc/perf/hv-24x7: parse catalog and populate sysfs with events + - LP: #1430341 + * powerpc/perf/{hv-gpci, hv-common}: generate requests with counters + annotated + - LP: #1430341 + * powerpc/perf/hv-gpci: add the remaining gpci requests + - LP: #1430341 + * powerpc/perf/hv-24x7: Document sysfs event description entries + - LP: #1430341 + * powerpc/iommu: Remove IOMMU device references via bus notifier + - LP: #1425202 + * powerpc/pseries: Fix endian problems with LE migration + - LP: #1428351 + * intel_idle: support additional Broadwell model + - LP: #1400970 + * tools/power turbostat: support additional Broadwell model + - LP: #1400970 + * KVM: x86: flush TLB when D bit is manually changed. + - LP: #1397860 + * Optimize TLB flush in kvm_mmu_slot_remove_write_access. + - LP: #1397860 + * KVM: Add generic support for dirty page logging + - LP: #1397860 + * KVM: x86: switch to kvm_get_dirty_log_protect + - LP: #1397860 + * KVM: Rename kvm_arch_mmu_write_protect_pt_masked to be more generic for + log dirty + - LP: #1397860 + * KVM: MMU: Add mmu help functions to support PML + - LP: #1397860 + * KVM: MMU: Explicitly set D-bit for writable spte. + - LP: #1397860 + * KVM: x86: Change parameter of kvm_mmu_slot_remove_write_access + - LP: #1397860 + * KVM: x86: Add new dirty logging kvm_x86_ops for PML + - LP: #1397860 + * KVM: VMX: Add PML support in VMX + - LP: #1397860 + * HID: multitouch: add support of clickpads + * HID: multitouch: Add support for button type usage + + [ Upstream Kernel Changes ] + + * rebase to v3.19.2 + - LP: #1428947 + + -- Andy Whitcroft Mon, 23 Mar 2015 15:28:16 +0000 + +linux (3.19.0-9.9) vivid; urgency=low + + [ Leann Ogasawara ] + + * Release Tracking Bug + - LP: #1430930 + + [ Shachar Raindel ] + + * SAUCE: IB/core: Prevent integer overflow in ib_umem_get address + arithmetic + - LP: #1413741 + - CVE-2014-8159 + + -- Leann Ogasawara Wed, 11 Mar 2015 10:29:17 -0700 + +linux (3.19.0-8.8) vivid; urgency=low + + [ Andy Whitcroft ] + + * ubuntu: vbox -- elide the new symlinks and reconstruct on clean: + - LP: #1426113 + * rebase to stable v3.19.1 + + [ John Johansen ] + + * SAUCE: (no-up): apparmor: fix mediation of fs unix sockets + - LP: #1408833 + + [ Leann Ogasawara ] + + * Release Tracking Bug + - LP: #1429940 + + [ Upstream Kernel Changes ] + + * xen: correct bug in p2m list initialization + * net/mlx5_core: Fix configuration of log_uar_page_sz + - LP: #1419938 + * tpm/ibmvtpm: Additional LE support for tpm_ibmvtpm_send + - LP: #1420575 + * net/mlx4_core: Maintain a persistent memory for mlx4 device + - LP: #1422481 + * net/mlx4_core: Set device configuration data to be persistent across + reset + - LP: #1422481 + * net/mlx4_core: Refactor the catas flow to work per device + - LP: #1422481 + * net/mlx4_core: Enhance the catas flow to support device reset + - LP: #1422481 + * net/mlx4_core: Activate reset flow upon fatal command cases + - LP: #1422481 + * net/mlx4_core: Manage interface state for Reset flow cases + - LP: #1422481 + * net/mlx4_core: Handle AER flow properly + - LP: #1422481 + * net/mlx4_core: Enable device recovery flow with SRIOV + - LP: #1422481 + * net/mlx4_core: Reset flow activation upon SRIOV fatal command cases + - LP: #1422481 + * tg3: Hold tp->lock before calling tg3_halt() from tg3_init_one() + - LP: #1428111 + * rebase to v3.19.1 + - LP: #1410704 + - LP: #1411193 + - LP: #1400215 + + -- Leann Ogasawara Mon, 09 Mar 2015 10:08:29 -0700 + +linux (3.19.0-7.7) vivid; urgency=low + + [ Andy Whitcroft ] + + * Release Tracking Bug + - LP: #1426013 + + [ Upstream Kernel Changes ] + + * x86/irq: Fix regression caused by commit b568b8601f05 + * cxl: Fix leaking interrupts if attach process fails + - LP: #1415102 + * cxl: Early return from cxl_handle_fault for a shut down context + - LP: #1415102 + * cxl: Disable AFU debug flag + - LP: #1415102 + * cxl: Disable SPAP register when freeing SPA + - LP: #1415102 + * cxl: remove redundant increment of hwirq + - LP: #1415102 + * cxl: Add tracepoints + - LP: #1415102 + * cxl: Update CXL ABI documentation + - LP: #1415102 + * cxl: Use image state defaults for reloading FPGA + - LP: #1415102 + * cxl: Add image control to sysfs + - LP: #1415102 + * cxl: Enable CAPP recovery + - LP: #1415102 + * cxl: Add ability to reset the card + - LP: #1415102 + * cxl: Fix device_node reference counting + - LP: #1415102 + * cxl: Export optional AFU configuration record in sysfs + - LP: #1415102 + * cxl: Fail AFU initialisation if an invalid configuration record is + found + - LP: #1415102 + * cxl: Add missing return statement after handling AFU errror + - LP: #1415102 + * powerpc/eeh: Introduce flag EEH_PE_REMOVED + - LP: #1415102 + * powerpc/eeh: Allow to set maximal frozen times + - LP: #1415102 + * HID: i2c-hid: Limit reads to wMaxInputLength bytes for input events + + -- Andy Whitcroft Thu, 26 Feb 2015 16:00:18 +0000 + +linux (3.19.0-6.6) vivid; urgency=low + + [ Andy Whitcroft ] + + * systemd -- fix hyper-v units to be non-forking + - LP: #1401525 + * [Config] move vbox modules into linux-image + * ubuntu: vbox -- update to 4.3.22-dfsg-1 + + [ Brad Figg ] + + * SAUCE: DEP8 test to run our regression tests + + [ Paolo Pisati ] + + * [Config] I2C_CHARDEV=y + - LP: #1417032 + + [ Upstream Kernel Changes ] + + * PCI: Fix infinite loop with ROM image of size 0 + * tpm: Fix NULL return in tpm_ibmvtpm_get_desired_dma + * Bluetooth: ath3k: workaround the compatibility issue with xHCI + controller + - LP: #1400215 + + -- Andy Whitcroft Thu, 19 Feb 2015 12:44:43 +0000 + +linux (3.19.0-5.5) vivid; urgency=low + + [ Andy Whitcroft ] + + * [Config] CONFIG_FA_DUMP=y + - LP: #1415562 + * ubuntu: (no-squash) vbox -- infrastructure and updater + * ubuntu: vbox -- update to 4.3.20-dfsg-1ubuntu1 + * rebase to v3.19 final + + [ Chris J Arges ] + + * [Config] Add ibmvfc to d-i + - LP: #1416001 + * SAUCE: ext4: disable ext4_punch_hole for indirect filesystems + - LP: #1292234 + + [ Upstream Kernel Changes ] + + * rebase to v3.19 + + -- Andy Whitcroft Mon, 09 Feb 2015 10:41:11 +0000 + +linux (3.19.0-4.4) vivid; urgency=low + + [ Andy Whitcroft ] + + * [Config] apply Kernel hacking >> Tracers config defaults + * hyper-v -- fix comment handing in /etc/network/interfaces + - LP: #1413020 + * rebase to v3.19-rc7 + * updateconfigs following rebase to v3.19-rc7 + + [ Ben Hutchings ] + + * SAUCE: rtsx_usb_ms: Use msleep_interruptible() in polling loop + - LP: #1413149 + + [ Upstream Kernel Changes ] + + * rebase to v3.19-rc7 + + -- Andy Whitcroft Mon, 02 Feb 2015 17:03:07 +0200 + +linux (3.19.0-3.3) vivid; urgency=low + + [ Andy Whitcroft ] + + * [Debian] arm64 -- build ubuntu drivers + - LP: #1411284 + * [Packaging] config-check -- add support for enforced annotations + * [Config] annotations -- switch to ENFORCED annotations + * [Packaging] config-check -- drop support for enforce file + * [Packaging] enforce -- drop empty enforce file + * rebase to v3.19-rc5 + * [Config] add modules removed due to tighter dependencies + * [Config] updateconfigs following rebase to v3.19-rc5 + * [Config] enforce CONFIG_FHANDLE=y + - LP: #1412543 + * [Packaging] hyper-v -- daemons now require -n for non-forking startup + - LP: #1408355 + * [Config] CONFIG_DEBUG_INFO_SPLIT=n + - LP: #1413646 + * [Config] apply Device Drivers >> Character devices >> IPMI top-level + message handler config defaults + * [Config] apply Device Drivers >> Character devices >> Serial drivers + config defaults + * [Config] apply Device Drivers >> GPIO Support config defaults + * [Config] apply Device Drivers >> Graphics support >> Direct Rendering + Manager >> Direct Rendering Manager (XFree86 4.1.0 and higher DRI + support) config defaults + * [Config] apply Device Drivers >> Graphics support >> Frame buffer + Devices >> Support for frame buffer devices config defaults + * [Config] apply Device Drivers >> HID support >> HID bus support >> + Special HID drivers config defaults + * [Config] apply Device Drivers >> Hardware Monitoring support config + defaults + * [Config] apply Device Drivers >> I2C support >> I2C support >> I2C + Hardware Bus support config defaults + * [Config] apply Device Drivers >> Industrial I/O support >> Analog to + digital converters config defaults + * [Config] apply Device Drivers >> Industrial I/O support >> Humidity + sensors config defaults + * [Config] apply Device Drivers >> Industrial I/O support >> Pressure + sensors config defaults + * [Config] apply Device Drivers >> Input device support >> Generic input + layer (needed for keyboard, mouse, ...) >> Mice config defaults + * [Config] apply Device Drivers >> Input device support >> Generic input + layer (needed for keyboard, mouse, ...) >> Touchscreens config defaults + * [Config] apply Device Drivers >> LED Support >> LED Class Support + config defaults + * [Config] apply Device Drivers >> MMC/SD/SDIO card support config + defaults + * [Config] apply Device Drivers >> Multifunction device drivers config + defaults + * [Config] apply Device Drivers >> Multimedia support >> Cameras/video + grabbers support >> Media test drivers config defaults + * [Config] apply Device Drivers >> Multimedia support >> Media PCI + Adapters config defaults + * [Config] apply Device Drivers >> Multimedia support >> Remote + Controller devices config defaults + * [Config] apply Device Drivers >> Network device support >> Distributed + Switch Architecture drivers config defaults + * [Config] apply Device Drivers >> Network device support >> Network core + driver support config defaults + * [Config] apply Device Drivers >> Network device support >> Wireless LAN + >> Hermes chipset 802.11b support (Orinoco/Prism2/Symbol) config + defaults + * [Config] apply Device Drivers >> Network device support >> Wireless LAN + >> Intel PRO/Wireless 2200BG and 2915ABG Network Connection config + defaults + * [Config] apply Device Drivers >> PHY Subsystem config defaults + * [Config] apply Device Drivers >> Pin controllers config defaults + * [Config] apply Device Drivers >> SPI support config defaults + * [Config] apply Device Drivers >> Sound card support >> Advanced Linux + Sound Architecture >> ALSA for SoC audio support config defaults + * [Config] apply Device Drivers >> Sound card support >> Advanced Linux + Sound Architecture >> FireWire sound devices config defaults + * [Config] apply Device Drivers >> Sound card support >> Advanced Linux + Sound Architecture >> HD-Audio config defaults + * [Config] apply Device Drivers >> Staging drivers >> Lustre file system + client support config defaults + * [Config] apply Device Drivers >> Staging drivers >> Media staging + drivers config defaults + * [Config] apply Device Drivers >> USB support >> USB Gadget Support >> + USB Gadget Drivers >> USB functions configurable through configfs + config defaults + * [Config] apply Device Drivers >> USB support >> USB Gadget Support >> + USB Peripheral Controller config defaults + * [Config] apply Networking support >> NFC subsystem support >> Near + Field Communication (NFC) devices config defaults + * [Config] apply Networking support >> Networking options >> Network + packet filtering framework (Netfilter) >> Core Netfilter Configuration + >> Netfilter nf_tables support config defaults + * [Config] apply Networking support >> Networking options >> QoS and/or + fair queueing >> Actions config defaults + * [Config] apply Networking support >> Networking options >> TCP/IP + networking config defaults + * [Config] apply Networking support >> Wireless >> Generic IEEE 802.11 + Networking Stack (mac80211) config defaults + * [Config] apply Device Drivers >> Input device support >> Generic input + layer (needed for keyboard, mouse, ...) >> Keyboards config defaults + * [Config] apply Device Drivers >> Input device support >> Generic input + layer (needed for keyboard, mouse, ...) >> Mice config defaults + * [Config] apply Device Drivers >> Pulse-Width Modulation (PWM) Support + config defaults + * [Config] apply Networking support >> Networking options >> Network + packet filtering framework (Netfilter) >> IP: Netfilter Configuration + >> IPv4 NAT config defaults + * [Config] apply Networking support >> Networking options >> Network + packet filtering framework (Netfilter) >> IPv6: Netfilter Configuration + >> IPv6 NAT config defaults + * [Config] apply Kernel hacking >> Kernel debugging config defaults + * [Config] apply General setup >> Timers subsystem >> Timer tick handling + config defaults + * SAUCE: arm64 -- psci tell the compiler which registers we are needing + values in + - LP: #1414002 + * [Config] apply Device Drivers >> Network device support >> Wireless LAN + >> Intel Wireless WiFi Next Gen AGN - Wireless-N/Advanced-N/Ultimate-N + (iwlwifi) config defaults + * [Config] apply Device Drivers >> Real Time Clock config defaults + * [Config] apply Device Drivers >> SCSI device support >> SCSI device + support >> SCSI low-level drivers config defaults + * [Config] apply General setup >> CPU/Task time and stats accounting >> + Cputime accounting config defaults + * [Config] apply Device Drivers >> Mailbox Hardware Support config + defaults + * rebase to v3.19-rc6 + * [Config] updateconfigs following rebase to v3.19-rc6 + + [ Kamal Mostafa ] + + * [Packaging] force "dpkg-source -I -i" behavior + + [ Leann Ogasawara ] + + * [Config] Disable CONFIG_USB_OTG + - LP: #1411295 + + [ Upstream Kernel Changes ] + + * overlay: add backwards compatible overlayfs format support (fixes) + - LP: #1410480 + + [ Upstream Kernel Changes ] + + * rebase to v3.19-rc5 + * rebase to v3.19-rc6 + + -- Andy Whitcroft Mon, 26 Jan 2015 11:37:39 +0000 + +linux (3.19.0-2.2) vivid; urgency=low + + [ Andy Whitcroft ] + + * rebase to v3.19-rc4 + * [Config] updateconfigs following rebase to v3.19-rc4 + * [Packaging] install all dtb files + - LP: #1408002 + * [Config] switch on "all" dtbs + - LP: #1408002 + + [ Colin Ian King ] + + * SAUCE: drivers/rtc/interface.c: ignore exprired times when enqueing new + timers + - LP: #1333569 + + [ Joseph Salisbury ] + + * [Config] Enable CONFIG_N_GSM as module. + - LP: #1404670 + + [ K. Y. Srinivasan ] + + * SAUCE: storvsc: force SPC-3 compliance on win8 and win8 r2 hosts + - LP: #1406867 + + [ Steve McIntyre ] + + * SAUCE: efi: Expose underlying UEFI firmware platform size to userland + - LP: #1409750 + + [ Upstream Kernel Changes ] + + * rebase to v3.19-rc4 + + -- Andy Whitcroft Tue, 13 Jan 2015 12:35:58 +0000 + +linux (3.19.0-1.1) vivid; urgency=low + + [ Andy Whitcroft ] + + * Revert "SAUCE: AUFS -- aufs3-standalone.patch" + * Revert "SAUCE: AUFS -- aufs3-mmap.patch" + * Revert "SAUCE: AUFS -- aufs3-base.patch" + * ubuntu: AUFS3 -- follow switch to vfs_fallocate + * rebase to v3.19-rc1 + * rebase to v3.19-rc2 + * [Config] defaultconfigs following rebase to v3.19-rc2 + * ubuntu: aufs3 -- follow rename of d_child + * ubuntu: aufs3 -- follow switch to d_splice_alias + * ubuntu: aufs3 -- follow switch to get_unused_fd_flags() + * ubuntu: aufs3 -- follow rename for d_alias + * apparmor -- follow change to this_cpu_ptr + * disable module checks for rebase + * ubuntu: AUFS -- substrate: aufs3-base.patch + * ubuntu: AUFS -- substrate: aufs3-mmap.patch + * ubuntu: AUFS -- substrate: aufs3-standalone.patch + * ubuntu: AUFS -- update to 92ad9cc8bd289bf8e59b6bd8d83137d8e1a58c1c + * [Configs] updateconfigs following aufs update + * v3.19 series start + * rebase to v3.19-rc3 + * [Configs] updateconfigs following rebase to v3.19-rc3 + * [Packaging] uploadnum should be the remainder of the version + - LP: #1407755 + * [Packaging] handle dts directories + - LP: #1408004 + * [Config] follow move of arm64 dts' into vendor directories + + [ Upstream Kernel Changes ] + + * arm64: optimized copy_to_user and copy_from_user assembly code + - LP: #1400349 + * iommu/ipmmu-vmsa: follow flag switch to IOMMU_NOEXEC + + [ Upstream Kernel Changes ] + + * rebase to v3.19-rc1 + - LP: #1173681 + * rebase to v3.19-rc2 + * rebase to v3.19-rc3 + + -- Andy Whitcroft Tue, 06 Jan 2015 14:30:02 +0000 + +linux (3.18.0-7.8) vivid; urgency=low + + [ Leann Ogasawara ] + + * Release Tracking Bug + - LP: #1401590 + + [ John Johansen ] + + * SAUCE: (no-up) apparmor: Sync to apparmor3 - RC1 snapshot + - LP: #1362199 + * SAUCE: Revert: fix: only allow a single threaded process to ... + - LP: #1371310 + * SAUCE: (no-up) fix: bad unix_addr_fs macro + - LP: #1390223 + * SAUCE: (no-up) apparmor: add parameter to control whether policy + hashing is used + - LP: #1383886 + * [config] set apparmor config options + + [ Seth Forshee ] + + * [Config] CONFIG_FW_LOADER_USER_HELPER_FALLBACK=n + - LP: #1398458 + + [ Upstream Kernel Changes ] + + * mfd: rtsx: Fix PM suspend for 5227 & 5249 + - LP: #1359052 + * mmc: sdhci-pci-o2micro: Fix Dell E5440 issue + - LP: #1346067 + + -- Leann Ogasawara Thu, 11 Dec 2014 08:36:36 -0800 + +linux (3.18.0-6.7) vivid; urgency=low + + [ Andy Whitcroft ] + + * Revert "SAUCE: (no-up) arm64: optimized copy_to_user and copy_from_user + assembly code" + - LP: #1398596 + * rebase to v3.18 + + [ Chris J Arges ] + + * [Config] CONFIG_PCIEASPM_DEBUG=y + - LP: #1398544 + + [ Paolo Pisati ] + + * [Config] armhf: VIRTIO_[BALLOON|MMIO]=y + - LP: #1396470 + + [ Upstream Kernel Changes ] + + * drivers:scsi:storvsc: Fix a bug in handling ring buffer failures that + may result in I/O freeze + - LP: #1400289 + + [ Upstream Kernel Changes ] + + * rebase to v3.18 + + -- Leann Ogasawara Mon, 08 Dec 2014 09:15:17 -0800 + +linux (3.18.0-5.6) vivid; urgency=low + + [ Leann Ogasawara ] + + * Release Tracking Bug + - LP: #1398109 + + [ Andy Whitcroft ] + + * [Config] CONFIG_SCSI_MQ_DEFAULT=n + - LP: #1397061 + * rebase to v3.18-rc7 + + [ Chris J Arges ] + + * [Config] CONFIG_SCOM_DEBUGFS=y for powerpc/powerpc64-smp + ppc64el/generic + - LP: #1395855 + + [ Upstream Kernel Changes ] + + * rebase to v3.18-rc7 + - LP: #1389497 + + -- Leann Ogasawara Mon, 01 Dec 2014 10:09:09 -0800 + +linux (3.18.0-4.5) vivid; urgency=low + + [ Leann Ogasawara ] + + * Release Tracking Bug + - LP: #1395891 + + [ Andy Whitcroft ] + + * rebase to v3.18-rc6 + * [Config] update configs following rebase to v3.18-rc6 + * [Config] enable overlayfs v1 support + + [ Tim Gardner ] + + * rebase to v3.18-rc5 + + [ Upstream Kernel Changes ] + + * overlay: add backwards compatible overlayfs format support + - LP: #1395877 + + [ Upstream Kernel Changes ] + + * rebase to v3.18-rc5 + * rebase to v3.18-rc6 + + -- Leann Ogasawara Mon, 24 Nov 2014 13:12:48 -0800 + +linux (3.18.0-3.4) vivid; urgency=low + + [ Andy Whitcroft ] + + * Revert "[Config] CONFIG_AUFS_FS=n for FTBS" + * Revert "SAUCE: AUFS -- update to + dcf336a754c86d5ee1c3d50699fd75c586d037cb" + * Revert "SAUCE: aufs3 -- (no-up) aufs3-standalone.patch" + * Revert "SAUCE: aufs3 -- (no-up) aufs3-base.patch" + * [Config] amd64 is now the indep architecture + * [Debian] basic hook support + * SAUCE: AUFS -- aufs3-base.patch + * SAUCE: AUFS -- aufs3-mmap.patch + * SAUCE: AUFS -- aufs3-standalone.patch + * ubuntu: AUFS -- update to 9d5c349d5c452170b8e813d86956f896a0aef170 + * [Config] updateconfigs following aufs3 update + * SAUCE: AUFS (no-squash): basic framework and update machinary -- part 2 + + [ dann frazier ] + + * [Config] Disable CONFIG_IPMI_SI_PROBE_DEFAULTS on armhf and arm64 + - LP: #1388952 + * [Config] disable CONFIG_ARM64_RANDOMIZE_TEXT_OFFSET + * [Config] Disable CONFIG_RCU_USER_QS on arm64 + + [ Tim Gardner ] + + * rebase to v3.18-rc4 + + [ Upstream Kernel Changes ] + + * rebase to v3.18-rc4 + - LP: #1389497 + - LP: #1387128 + + -- Andy Whitcroft Tue, 11 Nov 2014 17:16:13 +0000 + +linux (3.18.0-2.2) vivid; urgency=low + + [ Tim Gardner ] + + * SAUCE: nft_reject_bridge.c: Include net/ip6_checksum.h + + [ Upstream Kernel Changes ] + + * rebase to v3.18-rc3 + + -- Tim Gardner Mon, 03 Nov 2014 06:09:06 -0700 + +linux (3.18.0-1.1) vivid; urgency=low + + [ Andy Whitcroft ] + + * Revert "[Config] Switch kernel to vmlinuz (from vmlinux) on ppc64el" + * [Config] tools -- only build common tools when enabled + * [Config] follow rename of DEB_BUILD_PROFILES + * [Config] linux-image-extra is additive to linux-image + - LP: #1375310 + * [Config] linux-image-extra postrm is not needed on purge + * [Config] enable cloud tools on i386 + - LP: #1367399 + + [ Marc Dietrich ] + + * [Config] arm/tegra/d-i: framebuffer and usb support for Tegra SoCs + + [ Paolo Pisati ] + + * [Config] armhf: REGULATOR_TWL4030=y + * [Config] armhf: disable JUMP_LABEL + - LP: #1378856 + + [ Tim Gardner ] + + * rebase to v3.17-rc2 + * updateconfigs + * [Config] CONFIG_NFC_ST21NFCB=n + * [Config] Added net/6lowpan/* to generic inclusion list + * [Config] Add arm64 to enforcer CONFIG_CC_STACKPROTECTOR + * rebase to v3.17-rc3 + * rebase to v3.17-rc4 + * rebase to v3.17-rc5 + * [Config] armhf: USB_[E|O]HCI_EXYNOS=y + * [Config] CONFIG_XMON=y + - LP: #1365655 + * [Config] CONFIG_KVM_BOOK3S_64=m for ppc64el + - LP: #1362514 + * [Config] CONFIG_KVM_BOOK3S_64_HV=m + - LP: #1362514 + * [Config] CONFIG_DMA_CMA=n + - LP: #1362261 + * [Config] Add mpt3sas to d-i + - LP: #1368907 + * [Debian] set do_*_tools after stage1 or bootstrap is determined + - LP: #1370211 + * [Config] CONFIG_USB_OHCI_HCD_PCI=y + - LP: #1244176 + * rebase to v3.17-rc6 + * SAUCE: usbip: Update include path + * [Debian] usbip tools packaging + - LP: #898003 + * [Config] Enable usbip tools + - LP: #898003 + * [Config] CONFIG_CRASH_DUMP=n for powerpc-smp + - LP: #1363180 + * [Config] Correct annotation regarding CONFIG_DMA_CMA + - LP: #1362261 + * [Config] CONFIG_SND_HDA_INTEL=n for ppc64el + - LP: #1374438 + * [Config] CONFIG_HOTPLUG_PCI_SHPC=n for ppc64el + - LP: #1374440 + * [Debian] Don't fail if a symlink already exists + * rebase to v3.17-rc7 + * [Config] CONFIG_HOTPLUG_PCI_PCIE=n for ppc64el + - LP: #1374440 + * rebase to v3.17 + * rebase to v3.18-rc1 + * [Config] CONFIG_AUFS_FS=n for FTBS + * Enable vivid + * [Config] CONFIG_SOUND_OSS_CORE_PRECLAIM=n + - LP: #1385510 + * rebase to v3.18-rc2 + * [Debian] Fix linux-doc dangling symlinks + - LP: #661306 + * CONFIG_MODULE_COMPRESS=n + * [Config] dropped scsi_tgt from generic inclusion list + * [Config] Added drivers/uio to generic inclusion list + * [Config] CONFIG_PATA_MACIO=y + - LP: #1378894 + * [Config] CONFIG_DRM_BOCHS=n + * [Debian] install usbipd + - LP: #898003 + + [ Upstream Kernel Changes ] + + * rebase to v3.18-rc2 + + [ Upstream Kernel Changes ] + + * rebase to v3.18-rc1 + - LP: #1316518 + - LP: #1371591 + - LP: #1357928 + + [ Upstream Kernel Changes ] + + * rebase to v3.17 + + [ Upstream Kernel Changes ] + + * rebase to v3.17-rc7 + + [ Upstream Kernel Changes ] + + * rebase to v3.17-rc6 + + [ Upstream Kernel Changes ] + + * rebase to v3.17-rc5 + + [ Upstream Kernel Changes ] + + * rebase to v3.17-rc4 + + [ Upstream Kernel Changes ] + + * rebase to v3.17-rc3 + + [ Upstream Kernel Changes ] + + * rebase to v3.17-rc2 + - LP: #1358116 + - LP: #1350148 + - LP: #1334950 + - LP: #1329580 + - LP: #1329580 + - LP: #1329580 + + [ Upstream Kernel Changes ] + + * rebase to v3.17-rc2 + + -- Tim Gardner Tue, 26 Aug 2014 10:36:19 -0600 + +linux (3.17.0-0.0) utopic; urgency=medium + + * Empty entry + + -- Tim Gardner Tue, 26 Aug 2014 10:34:44 -0600 + +linux (3.16.0-11.16) utopic; urgency=low + + [ Mauricio Faria de Oliveira ] + + * [Config] Switch kernel to vmlinuz (from vmlinux) on ppc64el + - LP: #1358920 + + [ Peter Zijlstra ] + + * SAUCE: (no-up) mmu_notifier: add call_srcu and sync function for listener to delay call and sync + - LP: #1361300 + + [ Tim Gardner ] + + * [Config] CONFIG_ZPOOL=y + - LP: #1360428 + * Release Tracking Bug + - LP: #1361308 + + [ Upstream Kernel Changes ] + + * Revert "net/mlx4_en: Fix bad use of dev_id" + - LP: #1347012 + * net/mlx4_en: Reduce memory consumption on kdump kernel + - LP: #1347012 + * net/mlx4_en: Fix mac_hash database inconsistency + - LP: #1347012 + * net/mlx4_en: Disable blueflame using ethtool private flags + - LP: #1347012 + * net/mlx4_en: current_mac isn't updated in port up + - LP: #1347012 + * net/mlx4_core: Use low memory profile on kdump kernel + - LP: #1347012 + * Drivers: scsi: storvsc: Change the limits to reflect the values on the host + - LP: #1347169 + * Drivers: scsi: storvsc: Set cmd_per_lun to reflect value supported by the Host + - LP: #1347169 + * Drivers: scsi: storvsc: Filter commands based on the storage protocol version + - LP: #1347169 + * Drivers: scsi: storvsc: Fix a bug in handling VMBUS protocol version + - LP: #1347169 + * Drivers: scsi: storvsc: Implement a eh_timed_out handler + - LP: #1347169 + * drivers: scsi: storvsc: Set srb_flags in all cases + - LP: #1347169 + * drivers: scsi: storvsc: Correctly handle TEST_UNIT_READY failure + - LP: #1347169 + * namespaces: Use task_lock and not rcu to protect nsproxy + - LP: #1328088 + * net: xgene: Check negative return value of xgene_enet_get_ring_size() + * mm/zbud: change zbud_alloc size type to size_t + - LP: #1360428 + * mm/zpool: implement common zpool api to zbud/zsmalloc + - LP: #1360428 + * mm/zpool: zbud/zsmalloc implement zpool + - LP: #1360428 + * mm/zpool: update zswap to use zpool + - LP: #1360428 + * ideapad-laptop: Change Lenovo Yoga 2 series rfkill handling + - LP: #1341296 + * iommu/amd: Fix for pasid initialization + - LP: #1361300 + * iommu/amd: Moving PPR fault flags macros definitions + - LP: #1361300 + * iommu/amd: Drop oprofile dependency + - LP: #1361300 + * iommu/amd: Fix typo in amd_iommu_v2 driver + - LP: #1361300 + * iommu/amd: Don't call mmu_notifer_unregister in __unbind_pasid + - LP: #1361300 + * iommu/amd: Don't free pasid_state in mn_release path + - LP: #1361300 + * iommu/amd: Get rid of __unbind_pasid + - LP: #1361300 + * iommu/amd: Drop pasid_state reference in ppr_notifer error path + - LP: #1361300 + * iommu/amd: Add pasid_state->invalid flag + - LP: #1361300 + * iommu/amd: Don't hold a reference to mm_struct + - LP: #1361300 + * iommu/amd: Don't hold a reference to task_struct + - LP: #1361300 + * iommu/amd: Don't call the inv_ctx_cb when pasid is not set up + - LP: #1361300 + * iommu/amd: Don't set pasid_state->mm to NULL in unbind_pasid + - LP: #1361300 + * iommu/amd: Remove change_pte mmu_notifier call-back + - LP: #1361300 + * iommu/amd: Fix device_state reference counting + - LP: #1361300 + * iommu/amd: Fix 2 typos in comments + - LP: #1361300 + + -- Tim Gardner Fri, 22 Aug 2014 08:45:54 -0400 + +linux (3.16.0-10.15) utopic; urgency=low + + [ dann frazier ] + + * [debian] Fix regression with ABI subversions and backport + + [ Feng Kan ] + + * SAUCE: (no-up) irqchip:gic: change access of gicc_ctrl register to read + modify write. + - LP: #1357527 + * SAUCE: (no-up) arm64: optimized copy_to_user and copy_from_user + assembly code + - LP: #1358949 + + [ Stefan Bader ] + + * SAUCE: bcache: prevent crash on changing writeback_running + - LP: #1357295 + + [ Tim Gardner ] + + * [Config] CONFIG_XFRM_STATISTICS=y + * [Config] CONFIG_SECURITY_NETWORK_XFRM=y + * [Config] CONFIG_SENSORS_IBMPOWERNV=m + - LP: #1353005 + * Release Tracking Bug + - LP: #1359783 + + [ Upstream Kernel Changes ] + + * intel_idle: Broadwell support + - LP: #1256170 + * powerpc/book3s: Add basic infrastructure to handle HMI in Linux. + - LP: #1357108 + * powerpc/powernv: Invoke opal call to handle hmi. + - LP: #1357108 + * powerpc/book3s: handle HMIs for cpus in nap mode. + - LP: #1357108 + * powerpc/book3s: Fix endianess issue for HMI handling on napping cpus. + - LP: #1357108 + * powerpc: Add smp_mb() to arch_spin_is_locked() + - LP: #1358569 + * powerpc: Add smp_mb()s to arch_spin_unlock_wait() + - LP: #1358569 + * hwmon: (powerpc/powernv) hwmon driver for power, fan rpm, voltage and + temperature + - LP: #1353005 + * tools/testing/selftests/ptrace/peeksiginfo.c: add PAGE_SIZE definition + - LP: #1358855 + * printk: Add function to return log buffer address and size + - LP: #1359423 + * powerpc/powernv: Interface to register/unregister opal dump region + - LP: #1359423 + * bcache: fix crash on shutdown in passthrough mode + - LP: #1357295 + * bcache: fix uninterruptible sleep in writeback thread + - LP: #1357295 + + [ Vinayak Kale ] + + * SAUCE: (no-up) dt-bindings: Add Potenza PMU binding + - LP: #1357527 + * SAUCE: (no-up) arm64: dts: Add PMU node for APM X-Gene Storm SOC + - LP: #1357527 + + -- Tim Gardner Fri, 15 Aug 2014 12:34:33 -0600 + +linux (3.16.0-9.14) utopic; urgency=low + + [ Tim Gardner ] + + * Release Tracking Bug + - LP: #1357370 + + [ Serge Hallyn ] + + * SAUCE: Overlayfs: allow unprivileged mounts + - LP: #1357025 + + [ Upstream Kernel Changes ] + + * MAINTAINERS: Add entry for APM X-Gene SoC ethernet driver + * Documentation: dts: Add bindings for APM X-Gene SoC ethernet driver + * dts: Add bindings for APM X-Gene SoC ethernet driver + * drivers: net: Add APM X-Gene SoC ethernet driver support. + * powerpc/thp: Add write barrier after updating the valid bit + - LP: #1357014 + * powerpc/thp: Don't recompute vsid and ssize in loop on invalidate + - LP: #1357014 + * powerpc/thp: Invalidate old 64K based hash page mapping before insert + of 4k pte + - LP: #1357014 + * powerpc/thp: Handle combo pages in invalidate + - LP: #1357014 + * powerpc/thp: Invalidate with vpn in loop + - LP: #1357014 + * powerpc/thp: Use ACCESS_ONCE when loading pmdp + - LP: #1357014 + * powerpc/mm: Use read barrier when creating real_pte + - LP: #1357014 + * powerpc/thp: Add tracepoints to track hugepage invalidate + - LP: #1357014 + * rebase to v3.16.1 + + -- Tim Gardner Thu, 14 Aug 2014 08:18:02 -0400 + +linux (3.16.0-8.13) utopic; urgency=low + + [ Tim Gardner ] + + * Release Tracking Bug + - LP: #1356403 + + [ dann frazier ] + + * [debian] Allow for package revisions condusive for branching + + [ Upstream Kernel Changes ] + + * ahci_xgene: Fix the watermark threshold for the APM X-Gene SATA host controller driver. + - LP: #1350087 + * ahci_xgene: Use correct OOB tunning parameters for APM X-Gene SoC AHCI SATA Host controller driver. + - LP: #1350087 + * powerpc/powernv: Enable M64 aperatus for PHB3 + - LP: #1355469 + * powerpc: Fail remap_4k_pfn() if PFN doesn't fit inside PTE + - LP: #1352994 + * powerpc: Add machine_early_initcall() + - LP: #1352640 + * powerpc/powernv: Switch powernv drivers to use machine_xxx_initcall() + - LP: #1352640 + * powerpc/eeh: Avoid event on passed PE + - LP: #1352640 + * powerpc/eeh: EEH support for VFIO PCI device + - LP: #1352640 + * powerpc/eeh: sysfs entries lost + - LP: #1352640 + * powerpc/powernv: Fix IOMMU table for VFIO dev + - LP: #1352640 + * powerpc/eeh: Fetch IOMMU table in reliable way + - LP: #1352640 + * powerpc/eeh: Refactor EEH flag accessors + - LP: #1352640 + * powerpc/eeh: Selectively enable IO for error log + - LP: #1352640 + * powerpc/eeh: Reduce lines of log dump + - LP: #1352640 + * powerpc/eeh: Replace pr_warning() with pr_warn() + - LP: #1352640 + * powerpc/eeh: Make diag-data not endian dependent + - LP: #1352640 + * powerpc/eeh: Aux PE data for error log + - LP: #1352640 + * PCI: Support BAR sizes up to 128GB + - LP: #1352640 + * powerpc/powernv: Allow to freeze PE + - LP: #1352640 + * powerpc/powernv: Split ioda_eeh_get_state() + - LP: #1352640 + * powerpc/powernv: Handle compound PE + - LP: #1352640 + * powerpc/powernv: Handle compound PE for EEH + - LP: #1352640 + * powerpc/powernv: Handle compound PE in config accessors + - LP: #1352640 + * mnt: Only change user settable mount flags in remount + - LP: #1356318 + - CVE-2014-5206 + * mnt: Move the test for MNT_LOCK_READONLY from change_mount_flags into do_remount + - LP: #1356318 + - CVE-2014-5206 + * mnt: Correct permission checks in do_remount + - LP: #1356323 + - CVE-2014-5207 + * mnt: Change the default remount atime from relatime to the existing value + - LP: #1356323 + - CVE-2014-5207 + + -- Tim Gardner Sun, 10 Aug 2014 09:10:51 -0600 + +linux (3.16.0-7.12) utopic; urgency=low + + [ Andy Whitcroft ] + + * rebase to v3.16 final + * [Config] d-i -- add virtio_scsi to virtio-modules + - LP: #1342000 + + [ dann frazier ] + + * [Packaging] Fix 'printchanges' to work with versions containing '+' + + [ Tim Gardner ] + + * [Config] CONFIG_MICROCODE=y + - LP: #1084373 + * [Config] CONFIG_CONTEXT_TRACKING_FORCE=n + - LP: #1349028 + * [Config] Add hv_balloon to d-i virtio-modules + - LP: #1292216 + * Release Tracking Bug + - LP: #1354530 + + [ Upstream Kernel Changes ] + + * rebase to v3.16 + + -- Tim Gardner Tue, 29 Jul 2014 09:55:15 -0400 + +linux (3.16.0-6.11) utopic; urgency=low + + [ Paolo Pisati ] + + * [Config] armhf: MXS_DMA=y && MTD_NAND_GPMI_NAND=m + * [Config] armhf: KEYBOARD_IMX=m + * [Config] armhf: build cubox & imx6 DTBs + * [Config] armhf: RTC_DRV_PCF8523=y + + [ Tim Gardner ] + + * [Config] CONFIG_KEYS_DEBUG_PROC_KEYS=y + - LP: #1344405 + * [Config] CONFIG_SCSI_IPR_TRACE=y, CONFIG_SCSI_IPR_DUMP=y + - LP: #1343109 + * Release Tracking Bug + - LP: #1349196 + + [ Upstream Kernel Changes ] + + * rebase to v3.16-rc7 + + -- Tim Gardner Thu, 24 Jul 2014 09:08:55 -0400 + +linux (3.16.0-5.10) utopic; urgency=low + + [ Tim Gardner ] + + * Release Tracking Bug + - LP: #1346298 + * [Config] CONFIG_GPIO_SYSFS=y + - LP: #1342153 + * rebase to v3.16-rc6 + + [ Paolo Pisati ] + + * [Config] enable ARCH_MVEBU* + * [Config] AHCI_MVEBU=m + * [Config] ARMADA_THERMAL=y + * [Config] ARM_ARMADA_370_XP_CPUIDLE=y + * [Config] CRYPTO_DEV_MV_CESA=m + * [Config] I2C_MV64XXX=m + * [Config] MMC_MVSDIO=m + * [Config] MMC_SDHCI_DOVE=m + * [Config] MTD_NAND_ORION=m + * [Config] MTD_NAND_PXA3xx=m + * [Config] MVNETA=m + * [Config] MV_XOR=y + * [Config] ORION_WATCHDOG=m + * [Config] PCI_MVEBU=y + * [Config] RTC_DRV_MV=y + * [Config] SND_KIRKWOOD_SOC*=m + * [Config] SPI_ORION=m + * [Config] USB_XHCI_MVEBU=m + * [Config] armhf: build all Armada and Dove DTBs + * [Config] armhf: SERIAL_8250_DW=y + + [ Upstream Kernel Changes ] + + * rebase to v3.16-rc6 + + -- Tim Gardner Tue, 15 Jul 2014 07:49:42 -0400 + +linux (3.16.0-4.9) utopic; urgency=low + + [ Tim Gardner ] + + * Release Tracking Bug + - LP: #1341543 + + [ Upstream Kernel Changes ] + + * rebase to v3.16-rc5 + + -- Tim Gardner Sun, 13 Jul 2014 21:30:27 -0400 + +linux (3.16.0-3.8) utopic; urgency=low + + [ Tim Gardner ] + + * Release Tracking Bug + - LP: #1340091 + + -- Tim Gardner Thu, 10 Jul 2014 10:06:47 +0100 + +linux (3.16.0-2.7) utopic; urgency=low + + [ Andy Whitcroft ] + + * ubuntu: aufs3 -- avoid aufs3-mmap.patch include hell for arm64 + ubuntu: aufs3 -- (no-up) aufs3-mmap.patch + + -- Tim Gardner Wed, 09 Jul 2014 16:16:28 +0100 + +linux (3.16.0-2.6) utopic; urgency=low + + [ Andy Whitcroft ] + + * Revert "ubuntu: aufs3 -- (no-up) aufs3-mmap.patch" + Fixes FTBS. + + -- Tim Gardner Tue, 08 Jul 2014 17:29:26 +0100 + +linux (3.16.0-2.5) utopic; urgency=low + + [ Andy Whitcroft ] + + * ubuntu -- fix basic format for ubuntu/Makefile + * ubuntu: AUFS (no-squash): basic framework and update machinary + * ubuntu: aufs3 -- update update scripting + * ubuntu: aufs3 -- (no-up) aufs3-base.patch + * ubuntu: aufs3 -- (no-up) aufs3-mmap.patch + * ubuntu: aufs3 -- (no-up) aufs3-standalone.patch + * ubuntu: AUFS -- update to dcf336a754c86d5ee1c3d50699fd75c586d037cb + * [Configs] AUFS configs + * ubuntu: aufs3 -- reenable + + [ Tim Gardner ] + + * CONFIG_LATENCYTOP=n + + -- Tim Gardner Tue, 08 Jul 2014 15:27:35 +0100 + +linux (3.16.0-2.4) utopic; urgency=low + + [ Andy Whitcroft ] + + * [Config] flip VIRTIO*=y + * [Config] commonise CONFIG_SWIOTLB=y + * [Config] apply Bus options (PCI etc.) >> PCI support config defaults + * [Config] apply Device Drivers >> ATA/ATAPI/MFM/RLL support (DEPRECATED) + config defaults + * [Config] apply Device Drivers >> Block devices config defaults + * [Config] apply Device Drivers >> Character devices config defaults + * [Config] apply Device Drivers >> DMA Engine support config defaults + * [Config] apply Device Drivers >> EDAC (Error Detection And Correction) + reporting config defaults + * [Config] apply Device Drivers >> Graphics support >> Direct Rendering + Manager >> Direct Rendering Manager (XFree86 4.1.0 and higher DRI + support) config defaults + * [Config] apply Device Drivers >> GPIO Support config defaults + * [Config] apply Device Drivers >> Graphics support >> Console display + driver support config defaults + * [Config] apply Device Drivers >> IIO staging drivers >> Accelerometers + config defaults + * [Config] apply Device Drivers >> IOMMU Hardware Support config defaults + * [Config] apply Device Drivers >> Input device support >> Generic input + layer (needed for keyboard, mouse, ...) >> Miscellaneous devices config + defaults + * [Config] apply Device Drivers >> Input device support >> Hardware I/O + ports config defaults + * [Config] apply Device Drivers >> LED Support >> LED Class Support + config defaults + * [Config] apply Device Drivers >> Hardware Spinlock drivers config + defaults + * [Config] apply Device Drivers >> Multimedia support >> Cameras/video + grabbers support config defaults + * [Config] apply Security options config defaults + * [Config] apply Networking options >> Network packet filtering framework + (Netfilter) >> Core Netfilter Configuration config defaults + * [Config] apply Device Drivers >> MMC/SD/SDIO card support config + defaults + * [Config] apply Device Drivers >> Graphics support >> Frame buffer + Devices >> Support for frame buffer devices config defaults + * [Config] apply Power management and ACPI options >> CPU Frequency + scaling config defaults + * [Config] apply Processor type and features config defaults + * [Config] apply Partition Types config defaults + * [Config] apply Power management and ACPI options config defaults + * [Config] apply Device Drivers >> InfiniBand support config defaults + * [Config] apply Device Drivers >> Misc devices config defaults + * [Config] apply Device Drivers >> Multifunction device drivers config + defaults + * [Config] apply Device Drivers >> SCSI device support >> SCSI device + support >> SCSI low-level drivers config defaults + * [Config] apply Device Drivers >> Network device support >> Ethernet + driver support config defaults + * [Config] apply Device Drivers >> Network device support >> Network core + driver support config defaults + * [Config] apply Device Drivers >> Network device support >> PHY Device + support and infrastructure config defaults + * [Config] apply File systems >> Network File Systems config defaults + * [Config] apply Device Drivers >> Input device support >> Generic input + layer (needed for keyboard, mouse, ...) >> Touchscreens config defaults + * [Config] apply Device Drivers >> Memory Technology Device (MTD) support + >> NAND Device Support config defaults + * [Config] apply Device Drivers >> Network device support >> Wireless LAN + >> Ralink driver support config defaults + * [Config] apply Device Drivers >> Staging drivers config defaults + * [Config] apply Cryptographic API >> Hardware crypto devices config + defaults + * [Config] apply Device Drivers >> Macintosh device drivers config + defaults + * [Config] apply Device Drivers >> Network device support >> Wireless LAN + config defaults + * [Config] apply Device Drivers >> PPS support config defaults + * [Config] apply Device Drivers >> Sound card support config defaults + * [Config] apply Networking support >> RF switch subsystem support config + defaults + * [Config] apply Library routines config defaults + * [Config] apply Device Drivers >> CODEC drivers config defaults + * [Config] apply Device Drivers >> PHY Subsystem config defaults + * [Config] apply Device Drivers >> Pulse-Width Modulation (PWM) Support + config defaults + * [Config] apply Kernel hacking >> Tracers config defaults + * [Config] apply Kernel hacking >> Runtime Testing config defaults + * [Config] apply Kernel hacking >> Architecture: powerpc config defaults + * [Config] apply Device Drivers >> USB support config defaults + * [Config] apply Device Drivers >> Power supply class support config + defaults + * [Config] apply Device Drivers >> USB Network Adapters config defaults + * [Config] apply General setup >> IRQ subsystem config defaults + * [Config] apply General setup config defaults + * [Config] apply File systems >> Miscellaneous filesystems config + defaults + * [Config] apply File systems config defaults + * [Config] apply Device Drivers >> Userspace I/O drivers config defaults + * [Config] apply Device Drivers >> Virtio drivers config defaults + * [Config] apply Device Drivers >> USB Peripheral Controller config + defaults + * [Config] apply Device Drivers >> SCSI device support >> SCSI device + support >> SCSI Transports config defaults + * [Config] apply Device Drivers >> Real Time Clock config defaults + * [Config] apply Device Drivers >> Serial ATA and Parallel ATA drivers + (libata) config defaults + * [Config] apply Device Drivers >> SoC Audio for Freescale CPUs config + defaults + * [Config] apply Device Drivers >> Voltage and Current Regulator Support + config defaults + * [Config] apply Device Drivers >> USB Physical Layer drivers config + defaults + * [Config] apply Device Drivers >> Watchdog Timer Support config defaults + * [Config] powerpc-powerpc-e500mc FTBFS -- CONFIG_CRASH_DUMP=n + * [Config] powerpc-powerpc64-emb FTBFS -- CONFIG_IMA=n + * [Config] powerpc-powerpc64-emb FTBFS -- CONFIG_HIBERNATION=n + CONFIG_HOTPLUG_CPU=n + * [Config] ppc64el-generic FTBFS -- CONFIG_LUSTRE_FS=n + * [Config] drivers/message/fusion needs scsi_transport_spi in virtual + * [Config] drivers/acpi/acpi_ipmi.ko needs + drivers/char/ipmi/ipmi_msghandler.ko in virtual + * [Config] armhf-* FTBFS -- CONFIG_STACK_TRACER=n + CONFIG_FUNCTION_TRACER=n + * [Config] ignore modules changing following major config changes + + [ Tim Gardner ] + + * rebase to v3.16-rc4 + + [ Upstream Kernel Changes ] + + * rebase to v3.16-rc4 + - LP: #1297581 + + -- Andy Whitcroft Thu, 03 Jul 2014 11:00:43 +0100 + +linux (3.16.0-1.3) utopic; urgency=low + + [ Andy Whitcroft ] + + * Revert "Disable do_tools_perf for FTBS" + * SAUCE: fix perf_regs definitions for arm64 + + [ Paolo Pisati ] + + * [Config] armhf: ARCH_EXYNOS5* support + * [Config] armhf: CPU_IDLE=y and ARM_EXYNOS_CPUIDLE=y + * [Config] armhf: EXYNOS_THERMAL=y + * [Config] armhf: EXYNOS_IOMMU=y + * [Config] armhf: EXYNOS_ADC=m + * [Config] armhf: EXYNOS_I2C_EXYNOS5=m + * [Config] armhf: MMC_SDHCI_S3C=m + * [Config] armhf: PCI_EXYNOS=y + * [Config] armhf: PHY_EXYNOS5250_SATA=y + * [Config] armhf: USB_[E|O]HCI_EXYNOS=y && SAMSUNG_USBPHY=y + * [Config] armhf: PWM_SAMSUNG=m + * [Config] armhf: RTC_DRV_S3C=y + * [Config] armhf: S3C2410_WATCHDOG=m + * [Config] armhf: MMC_DW_EXYNOS=m + * [Config] armhf: SERIAL_SAMSUNG=y + * [Config] armhf: SND_SOC_SAMSUNG=m + * [Config] armhf: SPI_S3C64XX=m + * [Config] armhf: EXYNOS_VIDEO=y and VIDEO_SAMSUNG*=m + * [Config] armhf: FB_S3C=m + * [Config] armhf: build all Exynos 5 DTBs + * [Config] armhf: disable CPUFREQ_EXYNOS + + [ Tim Gardner ] + + * rebase to v3.16-rc3 + + [ Upstream Kernel Changes ] + + * rebase to v3.16-rc3 + - LP: #1331915 + + -- Tim Gardner Tue, 24 Jun 2014 08:58:09 -0600 + +linux (3.16.0-0.2) utopic; urgency=low + + [ Tim Gardner ] + + * Revert "SAUCE: intel_pstate -- toggle default to disable" + - LP: #1333322 + * CONFIG_BOOKE_WDT=y + * Disable do_tools_perf for FTBS (just until I can figure it out) + + -- Tim Gardner Mon, 23 Jun 2014 13:37:53 -0600 + +linux (3.16.0-0.1) utopic; urgency=low + + [ Tim Gardner ] + + * Release Tracking Bug + - LP: #1333265 + + [ Andy Whitcroft ] + + * [Config] cloud-tools -- add systemd units + - LP: #1329027 + + [ dann frazier ] + + * [Config] CONFIG_RTC_DRV_XGENE=y for arm64 + * [Config] CONFIG_NET_XGENE=m for arm64 + * [Config] Restrict CONFIG_POWER_RESET_SYSCON to arm64 only + + [ Feng Kan ] + + * SAUCE: (no-up) arm64: dts: Add X-Gene reboot driver dts node + * SAUCE: (no-up) Add documentation for generic SYSCON reboot driver. + * SAUCE: (no-up) Select reboot driver for X-Gene platform. + + [ Iyappan Subramanian ] + + * SAUCE: (no-up) MAINTAINERS: Add entry for APM X-Gene SoC ethernet driver + * SAUCE: (no-up) Documentation: dts: Add bindings for APM X-Gene SoC ethernet driver + * SAUCE: (no-up) dts: Add bindings for APM X-Gene SoC ethernet driver + * SAUCE: (no-up) drivers: net: Add APM X-Gene SoC ethernet driver support. + + [ Tim Gardner ] + + * updateconfigs + * Fix arm64 crypto Makefile + * [Config] CONFIG_BOOKE_WDT=n for FTBS + * [Debian] Add UTS_UBUNTU_RELEASE_ABI to utsrelease.h + - LP: #1327619 + * Disabled powerpc64-emb for FTBS + * [Config] CONFIG_DRM_TEGRA=m + * [Config] CONFIG_CMA_SIZE_MBYTES=64 + * rebase to v3.16-rc2 + * Clean up generic.inclusion-list warnings + + [ Upstream Kernel Changes ] + + * rebase to v3.16-rc2 + - LP: #1328587 + - LP: #1319291 + - LP: #1310512 + - LP: #1310512 + - LP: #1305480 + + -- Tim Gardner Thu, 12 Jun 2014 12:26:09 +0000 + +linux (3.15.0-6.11) utopic; urgency=low + + [ Adam Conrad ] + + * Enable building the sata-modules udeb on ppc64el. + - LP: #1323980 + * [Packaging] Set bootloader and loader on ppc64el to grub + + [ Adam Lee ] + + * SAUCE: (no-up) rtlwifi: rtl8723be: disable MSI interrupts mode + - LP: #1310512, #1320070 + + [ Alex Hung ] + + * SAUCE: (no-up) dell-led: add mic mute led interface + - LP: #1308297 + + [ Andy Whitcroft ] + + * [Config] d-i -- add hyperv_keyboard to serial-modules udeb + - LP: #1285434 + * [Config] tools -- enable cpupower on ppc64el + * [Config] ppc64el -- enable perf tools + * [Config] powerpc -- enable perf tools + * [Config] ppc64el -- reduce MAX_ORDER with 64k pages + * [Config] arm64 -- enable tools + - LP: #1326050 + * [Config] switch hyper-keyboard to virtual + - LP: #1325306 + * [Config] fix up Breaks/Replaces on linux-cloud-tools-common to fix + upgrades + * SAUCE: kvm: BIOS disabled kvm support should be a warning + - LP: #1300247 + * SAUCE: nouveau: missing outputs should be warnings + - LP: #1300244 + * [Config] d-i -- add nvme devices to block-modules udeb + - LP: #1303710 + + [ Anton Blanchard ] + + * SAUCE: (no-up) powerpc: 64bit sendfile is capped at 2GB + - LP: #1328230 + + [ Colin Ian King ] + + * SAUCE: intel_pstate: inform user that thermald is worth considering + + [ Dave Chiluk ] + + * [Config] Enable CONFIG_IP_VS_IPV6=y + - LP: #1300739 + + [ Paolo Pisati ] + + * [Config] build vexpress a9 dtb + - LP: #1303657 + + [ Tetsuo Handa ] + + * SAUCE: kthread: Do not leave kthread_create() immediately upon SIGKILL. + + [ Tim Gardner ] + + * Release Tracking Bug + - LP: #1329045 + * [Debian] Treat vdso install as an environment variable + - LP: #1325713 + * [Config] Treat vdso install as an environment variable + - LP: #1325713 + * [config] Set IPMI suppoort default to "y" + * [Config] powerpc -- CONFIG_SCSI_IBMVSCSI=y + * [Config] CONFIG_RT_GROUP_SCHED=n + - LP: #1284731 + * [Config] ppc64el -- switch to 64K system pages + * [Config] CONFIG_MICROCODE_EARLY=y + * [Config] SND_DAVINCI_SOC && SND_AM33XX_SOC_EVM =m + * [Config] armhf: DRM_TILCDC=m + * SAUCE: (no-up) mei_me: Add module parameter to disable MSI + * [Config] arm64: KVM=y + * [Config] armhf: LEDS_TRIGGER_HEARTBEAT=y + * [Config] armhf: generic: disable CPU_IDLE + * [Config] armhf: CPU_FREQ=y + * [Config] Add new mlx modules to d-i + * [Config] Added Muti-Arch support for linux-headers-PKGVER-ABINUM, linux-tools-common, and linux-cloud-tools-common + - LP: #1295112 + * [Config] CONFIG_EXYNOS_ADC=n, CONFIG_HW_RANDOM_EXYNOS=n, CONFIG_MMC_DW_EXYNOS=n, CONFIG_USB_DWC3_EXYNOS=n + - LP: #1294353 + * [Config] CONFIG_ABX500_CORE=y for ppc64el + * [Config] CONFIG_ALX=m for powerpc + * [Config] CONFIG_ACENIC_OMIT_TIGON_I=n for ppc64el + * [Config] CONFIG_ACORN_PARTITION_*=n for ppc64el + * [Config] CONFIG_ANDROID=n for powerpc + * [Config] CONFIG_ASYNC_RAID6_TEST=m for ppc64el + * [Config] CONFIG_BIG_KEYS=y for ppc64el + * [Config] CONFIG_BSD_PROCESS_ACCT=y for ppc64el + * rebase to v3.15 + * [Config] CONFIG_PHY_XGENE=y + * [Config] CONFIG_MLX4_DEBUG=y + - LP: #1328256 + * [Config] CONFIG_POWERNV_CPUFREQ=y for powerpc, ppc64el + - LP: #1324571 + * [Config] CONFIG_BLK_DEV_SR_VENDOR=n for ppc64el + * [Config] CONFIG_CFG80211=m for ppc64el + * [Config] CONFIG_CHARGER_BQ24190=m for powerpc + * [Config] CONFIG_CHARGER_BQ24735=m for powerpc + * [Config] CONFIG_EXPERT=y for ppc64el + * [Config] CONFIG_ATA_SFF=y on ppc64el + * [Config] CONFIG_ATA_GENERIC=y for ppc64el, powerpc + * [Config] CONFIG_CHR_DEV_ST=m for ppc64el + * [Config] CONFIG_CHECKPOINT_RESTORE=y for ppc64el + * [Config] CONFIG_CHELSIO_T1_1G=y for ppc64el + * [Config] CONFIG_CHR_DEV_OSST=m for ppc64el + * [Config] CONFIG_CHR_DEV_SCH=m for ppc64el + * [Config] CONFIG_CPU_FREQ_STAT=y for powerpc + * [Config] CONFIG_DDR=y for ppc64el + * [Config] CONFIG_DEBUG_BUGVERBOSE=y for powerpc + * [Config] CONFIG_E100=m, CONFIG_E1000=m, CONFIG_E1000E=m for ppc64el + * [Config] CONFIG_EZX_PCAP=n for all arches + * [Config] CONFIG_DYNAMIC_DEBUG=y for powerpc + * [Config] CONFIG_ENABLE_MUST_CHECK=n for ppc64el + * [Config] CONFIG_ENABLE_WARN_DEPRECATED=n for ppc64el + * [Config] CONFIG_FB_3DFX=m for all arches + * [Config] CONFIG_FB_MATROX=m for ppc64el + * [Config] CONFIG_FB_RADEON=m for ppc64el + * [Config] CONFIG_FB_SAVAGE_I2C=y for all arches + * [Config] CONFIG_FIREWIRE=m for ppc64el + * [Config] CONFIG_FTR_FIXUP_SELFTEST=n for ppc64el + * [Config] CONFIG_HAMRADIO=y for ppc64el + * [Config] CONFIG_I2C_CHARDEV=m for ppc64el + * [Config] CONFIG_I2C_MUX=m for ppc64el + * [Config] CONFIG_I2C_STUB=m for ppc64el + * [Config] CONFIG_I2O=m for ppc64el + * [Config] CONFIG_INET_XFRM_MODE_BEET=m, CONFIG_INET_XFRM_MODE_TRANSPORT=m, CONFIG_INET_XFRM_MODE_TUNNEL=m for ppc64el + * [Config] CONFIG_INFINIBAND_IPOIB_DEBUG=n, CONFIG_INFINIBAND_MTHCA_DEBUG=n for ppc64el + * [Config] CONFIG_INFINIBAND_NES=m, CONFIG_INFINIBAND_OCRDMA=m, CONFIG_INFINIBAND_QIB=m for ppc64el + * [Config] CONFIG_INPUT_FF_MEMLESS=m for ppc64el + * [Config] CONFIG_INTERVAL_TREE_TEST=m for ppc64el + * [Config] CONFIG_IPACK_BUS=m for ppc64el + * [Config] CONFIG_ISDN=y for ppc64el + * [Config] CONFIG_ISO9660_FS=m for ppc64el + * [Config] CONFIG_KGDB=y for ppc64el + * [Config] CONFIG_KVM_GUEST=y for ppc64el + * [Config] CONFIG_L2TP_V3=y for powerpc + * [Config] CONFIG_MAILBOX=y for ppc64el + * [Config] CONFIG_MD_LINEAR=m, CONFIG_MD_RAID0=m, CONFIG_MD_RAID1=m for ppc64el + * [Config] CONFIG_MEDIA_SUPPORT=m for ppc64el + * [Config] CONFIG_MEMORY=y for ppc64el + * [Config] CONFIG_MEMSTICK=m for ppc64el + * [Config] CONFIG_MFD_SM501_GPIO=n for ppc64el + * [Config] CONFIG_MMC_BLOCK=m for ppc64el + * [Config] CONFIG_MOUSE_PS2=m for ppc64el + * [Config] CONFIG_NET_9P=m for ppc64el + * [Config] CONFIG_MSDOS_FS=m for ppc64el + * [Config] CONFIG_MSI_BITMAP_SELFTEST=n for ppc64el + * [Config] CONFIG_MTD=m for arm64 + * [Config] CONFIG_NETCONSOLE=m for ppc64el + * [Config] CONFIG_NETFILTER_XT_TARGET_NOTRACK=m for ppc64el + * [Config] CONFIG_NET_IPIP=m for ppc64el + * [Config] CONFIG_NET_TEAM=m for all arches + * [Config] CONFIG_NFC=m for ppc64el + * [Config] CONFIG_NL80211_TESTMODE=n for all arches + * [Config] CONFIG_NLS_CODEPAGE_437=y for powerpc + * [Config] CONFIG_NLS_ASCII=m, CONFIG_NLS_ISO8859_1=m, CONFIG_NLS_UTF8=m for ppc64el + * [Config] CONFIG_NOP_USB_XCEIV=m for ppc64el + * [Config] CONFIG_NOTIFIER_ERROR_INJECTION=m for ppc64el + * [Config] CONFIG_OPROFILE=m for ppc64el + * [Config] CONFIG_PARPORT_1284=y for ppc64el + * [Config] CONFIG_PARPORT_AX88796=m, CONFIG_PARPORT_PC_FIFO=y, CONFIG_PARPORT_SERIAL=m for ppc64el + * [Config] CONFIG_8723AU_P2P=n + * [Config] CONFIG_PCI_IOV=y, CONFIG_PCI_PASID=y, CONFIG_PCI_PRI=y, CONFIG_PCI_REALLOC_ENABLE_AUTO=y, CONFIG_PCI_STUB=m for ppc64el + * [Config] CONFIG_PCNET32=m for ppc64el + * [Config] CONFIG_SCSI_DH_EMC=m for ppc64el + * [Config] CONFIG_SCSI_DH_HP_SW=m for ppc64el + * [Config] CONFIG_SCSI_FC_ATTRS=m for ppc64el + * [Config] CONFIG_SCSI_IPR=m for ppc64el + * [Config] CONFIG_SCSI_LOGGING=y for ppc64el + * [Config] CONFIG_SCSI_OSD_INITIATOR=m for ppc64el + * [Config] CONFIG_SCSI_SCAN_ASYNC=y for ppc64el + * [Config] CONFIG_SCSI_SYM53C8XX_2=m for ppc64el + * [Config] CONFIG_XILINX_LL_TEMAC=m for powerpc + * [Config] CONFIG_WQ_POWER_EFFICIENT_DEFAULT=y for ppc64el + * [Config] CONFIG_WLAN=y for arm64 + * [Config] CONFIG_VORTEX=m for ppc64el + * [Config] CONFIG_WIMAX=m for ppc64el + * [Config] CONFIG_WATCHDOG=y for ppc64el + * [Config] CONFIG_VIRT_DRIVERS=y for ppc64el + * [Config] CONFIG_VERSION_SIGNATURE="" for powerpc64-emb + * [Config] CONFIG_UWB=m for ppc64el + * [Config] CONFIG_USB_STORAGE=y + * [Config] CONFIG_SATA_AHCI_PLATFORM=y for armhf + * [Config] CONFIG_HID_RMI=m + * [Config] CONFIG_HVC_DCC=n + - LP: #1303657 + + [ Upstream Kernel Changes ] + + * mm/numa: Remove BUG_ON() in __handle_mm_fault() + - LP: #1323165 + * powerpc/powernv: Add calls to support little endian host + - LP: #1327400 + * HID: rmi: introduce RMI driver for Synaptics touchpads + * HID: rmi: do not stop the device at the end of probe + * HID: rmi: check for the existence of some optional queries before reading query 12 + * HID: rmi: do not fetch more than 16 bytes in a query + * HID: rmi: fix wrong struct field name + * HID: rmi: fix masks for x and w_x data + * HID: rmi: do not handle touchscreens through hid-rmi + * ALSA: pcm: 'BUG:' message unnecessarily triggers kerneloops + - LP: #1305480 + * rebase to v3.15 + + -- Tim Gardner Tue, 03 Jun 2014 17:02:49 +0000 + +linux (3.15.0-5.10) utopic; urgency=low + + [ Tim Gardner ] + + * Release Tracking Bug + - LP: #1325596 + * [Config] CONFIG_POWERNV_CPUFREQ=y for ppc64el + * rebase to v3.15-rc8 + + [ Upstream Kernel Changes ] + + * rebase to v3.15-rc8 + + -- Tim Gardner Mon, 02 Jun 2014 12:59:34 +0000 + +linux (3.15.0-4.9) utopic; urgency=low + + * no change rebuild to fix embeded debhelper. + + -- Andy Whitcroft Thu, 29 May 2014 12:41:58 +0100 + +linux (3.15.0-4.8) utopic; urgency=low + + [ Andy Whitcroft ] + + * Release Tracking Bug + - LP: #1324107 + * [Config] enable SECURITY_APPARMOR_UNCONFINED_INIT + + [ Javier Martinez Canillas ] + + * SAUCE: (no-up) apparmor: fix bug that constantly spam the console + - LP: #1323526 + + [ John Johansen ] + + * SAUCE: (no-up) apparmor: Sync to apparmor3 - alpha6 snapshot + - LP: #1323528 + * SAUCE: (no-up) apparmor: fix apparmor spams log with warning message + - LP: #1308761 + * SAUCE: (no-up) apparmor: fix refcount bug in apparmor pivotroot + - LP: #1308765 + * SAUCE: (no-up): apparmor: fix apparmor refcount bug in apparmor_kill + - LP: #1308764 + * SAUCE: (no-up): apparmor: use custom write_is_locked macro + - LP: #1323530 + + [ Kamal Mostafa ] + + * [Config] add debian/gbp.conf + + [ Tim Gardner ] + + * [Config] CONFIG_SATA_AHCI=m for ppc64el + - LP: #1323980 + + -- Andy Whitcroft Wed, 28 May 2014 12:47:17 +0100 + +linux (3.15.0-3.7) utopic; urgency=low + + [ Tim Gardner ] + + * Release Tracking Bug + - LP: #1323189 + + [ Andy Whitcroft ] + + * [Config] autopkgtest -- need fakeroot for tests + + [ Upstream Kernel Changes ] + + * rebase to v3.15-rc7 + + -- Tim Gardner Mon, 26 May 2014 08:12:50 +0200 + +linux (3.15.0-2.6) utopic; urgency=low + + [ Andy Whitcroft ] + + * [Config] remove the kernel-image firmware list on clean + + [ Martin Pitt ] + + * [Config] autopkgtest -- switch to significantly faster rebuild + + [ Stefan Bader ] + + * [Config]: Add missing modules to inclusion list + + [ Tim Gardner ] + + * [debian] Dynamically generate the kernel-image udebs firmware list + * [d-i] firmware/kernel-image is generated + * rebase to v3.15-rc6 + * Release Tracking Bug + - LP: #1322251 + + [ Upstream Kernel Changes ] + + * rebase to v3.15-rc6 + - LP: #1297581 + + -- Tim Gardner Wed, 21 May 2014 10:51:29 -0700 + +linux (3.15.0-1.5) utopic; urgency=low + + [ Tim Gardner ] + + * [Config] Add apm-mustang.dtb to kernel-image udeb + + -- Tim Gardner Mon, 19 May 2014 14:47:42 -0700 + +linux (3.15.0-1.4) utopic; urgency=low + + [ Andy Whitcroft ] + + * Revert "SAUCE: (no-up) hv -- bodge hv_vss_daemon so it can use the + local linux/hyperv.h" + * Revert "SAUCE: (no-up) hv -- bodge hv_kvp_daemon so it can use the + local linux/hyperv.h" + * [Packaging] tools -- hv tools build correctly against the built headers + * [Packaging] cloud-tools -- add the hv_fcopy_daemon to the package + * cloud-tools -- pull in init scripts for Hyper-V daemons + * cloud-tools -- detect Hyper-V VM to avoid starting + * cloud-tools -- update IF_NAME to DEVICE in hv_* scripts + - LP: #1295401 + * [Config] cloud-tools: reenable cloud-tools + + -- Andy Whitcroft Sun, 18 May 2014 19:21:04 +0100 + +linux (3.15.0-1.3) utopic; urgency=low + + [ Andy Whitcroft ] + + * [Packaging] ppc64el is a powerpc kernel arch and needs its quirks + - LP: #1318848 + + [ Ben Collins ] + + * [Config] Switch to grub-ieee1275 as recommended on book3e systems + - LP: #1318629 + + [ Tim Gardner ] + + * [Config] CONFIG_FSL_PAMU=n + - LP: #1311738 + * Release Tracking Bug + - LP: #1320239 + + -- Tim Gardner Fri, 16 May 2014 07:37:07 -0600 + +linux (3.15.0-1.2) utopic; urgency=low + + [ Tim Gardner ] + + * Release Tracking Bug + - LP: #1318171 + * Add rpcsec_gss_krb5 to generic inclusion list + - LP: #769527 + * rebase to v3.15-rc5 + + [ Upstream Kernel Changes ] + + * rebase to v3.15-rc5 + - LP: #1297581 + + -- Tim Gardner Tue, 06 May 2014 15:20:10 -0500 + +linux (3.15.0-0.1) utopic; urgency=low + + [ Upstream Kernel Changes ] + + * rebase to v3.15-rc4 + - LP: #1297581 + - LP: #1297581 + - LP: #1305133 + - LP: #1297581 + - LP: #1297581 + - LP: #871808 + - LP: #1260303 + - LP: #1268468 + - LP: #1248116 + - LP: #1211920 + - LP: #1259790 + - LP: #1259437 + - LP: #1259435 + - LP: #1268468 + + -- Tim Gardner Fri, 07 Feb 2014 09:35:13 -0700 + +linux (3.15.0-0.0) utopic; urgency=low + + * Initial version for 3.15. + + -- Andy Whitcroft Fri, 02 May 2014 15:06:39 +0100 + +linux (3.13.0-8.27) trusty; urgency=low + + [ John Johansen ] + + * SAUCE: Add config option to disable new apparmor 3 semantics + -LP: #1270215 + + [ Tim Gardner ] + + * [debian] Fix indep_hdrs_pkg_name + - LP: #1134441 + * Update lttng to 00808267d3ba7cdcddfed7bec7e62a40463c1307 Version 2.4.0-rc3 + * Enabled lttng build + * Don't build lttng for armhf + lttng hates gcc-4.8 for armhf + * Release Tracking Bug + - LP: #1277309 + + [ Upstream Kernel Changes ] + + * rebase to v3.13.2 + - LP: #1260303 + - LP: #1260303 + - LP: #1268468 + + -- Tim Gardner Thu, 06 Feb 2014 09:25:51 -0700 + +linux (3.13.0-7.26) trusty; urgency=low + + [ John Johansen ] + + * SAUCE: apparmor: fix uninitialized lsm_audit membe + - LP: #1268727 + * Add config option to optionally enable new apparmor 3 semantics + + [ Tim Gardner ] + + * [Config] Add lowlatency to getabis + * [Config] CONFIG_SECURITY_APPARMOR_AA3_SEMANTICS=y + - LP: #1270215 + * Release Tracking Bug + - LP: #1276810 + + [ Upstream Kernel Changes ] + + * x86, x32: Correct invalid use of user timespec in the kernel + - LP: #1274349 + - CVE-2014-0038 + + -- Tim Gardner Wed, 05 Feb 2014 15:49:44 -0500 + +linux (3.13.0-7.25) trusty; urgency=low + + [ Andy Whitcroft ] + + * Revert "SAUCE: fix fmd headers" + * SAUCE: fix fmd headers + + -- Andy Whitcroft Tue, 04 Feb 2014 09:36:09 +0000 + +linux (3.13.0-7.24) trusty; urgency=low + + [ Stefan Bader ] + + * [Config] Make vmwgfx driver enable the framebuffer device + + [ Tim Gardner ] + + * rebase to v3.13.1 + * [Config] CONFIG_NFS_FS=m for ppc64el + * [Config] CONFIG_X86_SYSFB=n + https://lists.ubuntu.com/archives/kernel-team/2014-February/038166.html + * Release Tracking Bug + - LP: #1275898 + + [ Upstream Kernel Changes ] + + * i2c: piix4: Add support for AMD ML and CZ SMBus changes + - LP: #1272525 + * i2c: piix4: Use different message for AMD Auxiliary SMBus Controller + - LP: #1272525 + * mm: ignore VM_SOFTDIRTY on VMA merging + - LP: #1274917 + * drm/radeon: disable dpm on BTC + - LP: #1266984 + + [ Upstream Kernel Changes ] + + * rebase to v3.13.1 + + -- Tim Gardner Thu, 30 Jan 2014 15:24:48 +0000 + +linux (3.13.0-6.23) trusty; urgency=low + + [ Andy Whitcroft ] + + * [Config] fix up architecture for linux-tools + + -- Andy Whitcroft Thu, 30 Jan 2014 09:00:41 +0000 + +linux (3.13.0-6.22) trusty; urgency=low + + [ Andy Whitcroft ] + + * [Packaging] limit linux-udebs- to matching arch + * [Config] powerpc -- disable perf to fix FTBFS + * [Config] ppc64el -- fix up missing udebs + + -- Andy Whitcroft Wed, 29 Jan 2014 16:00:28 +0000 + +linux (3.13.0-6.21) trusty; urgency=low + + [ Andy Fleming ] + + * SAUCE: net: Add support for handling queueing in hardware + * SAUCE: of_mdio: Add of_phy_attach function + * SAUCE: phylib: Add generic 10G driver + * SAUCE: phylib: Support attaching to gen10g_driver + * SAUCE: phylib: Add Clause 45 read/write functions + + [ Andy Whitcroft ] + + * SAUCE: fix fmd headers + * [Packaging] lowlatency -- merge out of tree flavours + * SAUCE: allow IRQs to be irq-threaded by default via config + * [Config]: enable CONFIG_IRQ_FORCED_THREADING_DEFAULT for lowlatency + * [Config] powerpc -- fix up Build-depends: + * Release Tracking Bug + - LP: #1273747 + + [ Ben Collins ] + + * SAUCE: PPC: PCI: Fix pcibios_io_space_offset() so it works for 32-bit + ptr/64-bit rsrcs + * SAUCE: Revert "phy: vitesse make vsc824x_add_skew static" + * SAUCE: Fixup freescale usb phy driver to work on ppc64 + * SAUCE: xgmac_mdio: Silence read errors + * SAUCE: Provide booke stub for kvmppc_is_bigendian() + * SAUCE: Fix stack overflow on ppc32 + * SAUCE: Use resource_size_t instead of long for PCI resource address + * SAUCE: net/phy: Export function for use by dpaa_eth + * [Packaging] powerpc -- merge out of tree powerpc arch + + [ Bjorn Helgaas ] + + * SAUCE: Revert "EISA: Log device resources in dmesg" + - LP: #1251816 + * SAUCE: Revert "EISA: Initialize device before its resources" + - LP: #1251816 + + [ Emil Medve ] + + * SAUCE: phylib: Minimum hack to get the generic 10G PHY driver to work + with 10G "fixed-link"s + + [ Kumar Gala ] + + * SAUCE: fsl_qbman: Add drivers for Freescale DPAA Qman & Bman + * SAUCE: fsl_pme2: Add support for DPAA PME + * SAUCE: fmd: FMD14 integration + * SAUCE: dpaa_eth: Ethernet driver for Freescale QorIQ DPA Architecture + * SAUCE: powerpc/85xx: Add DPAA/networking support for CoreNet + + [ Madalin Bucur ] + + * SAUCE: net/flow: remove sleeping and deferral mechanism from + flow_cache_flush + * SAUCE: net/phy: abort genphy_read_status when link changes during speed + and duplex reading + + [ Stefan Bader ] + + * [Config] move some VMWare related modules into main package + - LP: #1271669 + + [ Tim Gardner ] + + * [Config] Add r815x to nic-modules + - LP: #1273735 + * [Config] CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y + - LP: #239479 + + [ Upstream Kernel Changes ] + + * mmc: sdhci-pci: break out definitions to header file + - LP: #1239938 + * mmc: sdhci-pci: add support of O2Micro/BayHubTech SD hosts + - LP: #1239938 + * powerpc/book3e: rename interrupt_end_book3e with __end_interrupts + * powerpc/book3e: support CONFIG_RELOCATABLE + * book3e/kexec/kdump: enable kexec for kernel + * book3e/kexec/kdump: create a 1:1 TLB mapping + * book3e/kexec/kdump: introduce a kexec kernel flag + * book3e/kexec/kdump: implement ppc64 kexec specfic + * book3e/kexec/kdump: redefine VIRT_PHYS_OFFSET + * book3e/kexec/kdump: recover "r4 = 0" to create the initial TLB + + -- Andy Whitcroft Tue, 28 Jan 2014 22:59:46 +0000 + +linux (3.13.0-5.20) trusty; urgency=low + + [ Andy Whitcroft ] + + * [Packaging] tools -- do not make symlinks when not making packages + * [Packaging] tools -- tidy up control.stub.in ordering + * [Packaging] tools -- tools-common is shared and not conditional + * rebase to v3.13 + + [ Dirk Brandewie ] + + * SAUCE: intel_pstate: Add setting voltage value for baytrail P states. + + [ KY Srinivasan ] + + * SAUCE: Drivers: hv: vmbus: Specify the target CPU that should receive + notification + + [ Upstream Kernel Changes ] + + * rebase to v3.13 + - LP: #1270603 + + -- Andy Whitcroft Fri, 17 Jan 2014 15:45:31 +0000 + +linux (3.13.0-4.19) trusty; urgency=low + + [ Andy Whitcroft ] + + * [Config] libunwind8-dev is now available for ppc64el + * [Packaging] tools -- make cpupower optional + * [Packaging] tools -- enable correctly for x86 + + [ Tim Gardner ] + + * Release Tracking Bug + - LP: #1269872 + + [ Upstream Kernel Changes ] + + * SAUCE: ARM: OMAP: hwmod: Add SYSC offsets for AES IP + * SAUCE: ARM: OMAP4: hwmod: Add hwmod data for AES IP + * SAUCE: OMAP: AM33xx: hwmod: Correct AES module SYSC type + * SAUCE: crypto: omap-aes: add error check for pm_runtime_get_sync + + [ Upstream Kernel Changes ] + + * rebase to 85ce70fdf48aa290b4845311c2dd815d7f8d1fa5 + + -- Tim Gardner Wed, 15 Jan 2014 13:23:05 +0000 + +linux (3.13.0-3.18) trusty; urgency=low + + [ Andy Whitcroft ] + + * rebase to v3.13-rc8 + * [Packaging] efi -- allow EFI signatures on any arch + + [ Tim Gardner ] + + * [Config] Fix vcs-git path + * Release Tracking Bug + - LP: #1268683 + + [ Upstream Kernel Changes ] + + * rebase to v3.13-rc8 + + -- Andy Whitcroft Sun, 12 Jan 2014 11:58:01 +0000 + +linux (3.13.0-2.17) trusty; urgency=low + + [ Andy Whitcroft ] + + * Release Tracking Bug + - LP: #1267809 + * [Config] apply Platform support>>CPUIdle driver>>CPU Idle config + defaults + * [Config] apply Platform support>>CPU Frequency scaling config defaults + * [Config] CONFIG_PARIDE_EPATC8=y + * [Config] apply Device Drivers >> Broadcom specific AMBA config defaults + * [Config] apply Bus options >> PCI support >> RapidIO support >> RapidIO + Switch drivers config defaults + * [Config] apply Cryptographic API config defaults + * [Config] apply Device Drivers >> Common Clock Framework config defaults + * [Config] apply Device Drivers >> Distributed Switch Architecture + drivers config defaults + * [Config] apply Device Drivers >> Graphics support >> Backlight & LCD + device support config defaults + * [Config] apply Device Drivers >> Graphics support >> Support for frame + buffer devices >> Bootup logo config defaults + * annotations -- update in tree annotations + * [Config] apply Bus options >> PCI support >> RapidIO support config + defaults + * [Config] CONFIG_POWER_AVS=y CONFIG_RESET_CONTROLLER=y + * [Config] apply Device Drivers >> 1-wire Bus Masters config defaults + * [Config] apply CAN Device Drivers >> Platform CAN drivers with Netlink + support config defaults + * [Config] apply Device Drivers >> Character devices >> Serial drivers + config defaults + * [Config] apply Device Drivers >> Generic Thermal sysfs driver config + defaults + * [Config] apply Device Drivers >> Character devices >> TPM Hardware + Support config defaults + * [Config] apply Device Drivers >> Character devices config defaults + * [Config] apply Device Drivers >> HID support >> USB HID support >> USB + HID transport layer config defaults + * [Config] apply Device Drivers >> HID support >> HID bus support config + defaults + * [Config] apply Device Drivers >> HID support >> USB HID support config + defaults + * annotations -- update in tree annotations + * [Config] apply Device Drivers >> GPIO Support config defaults + * [Config] update configs for apparmour update + + [ John Johansen ] + + * SAUCE: (no-up) apparmor: Sync to apparmor 3 - alpha 4 snapshot + * SAUCE: apparmor: fix unix domain sockets to be mediated on connection + - LP: #1208988 + * SAUCE: apparmor: allocate path lookup buffers during init + - LP: #1208988 + * SAUCE: (no-up) apparmor: Fix tasks not subject to, reloaded policy + - LP: #1236455 + + [ Tim Gardner ] + + * Revert "[Debian] getabis: Preface module with package name" + * [Config] Added ppc64el to getabis + * [packaging] Bump ABI for every new release + + -- Andy Whitcroft Fri, 10 Jan 2014 11:48:39 +0000 + +linux (3.13.0-1.16) trusty; urgency=low + + * First 3.13 upload. + * Release tracker + - LP: #1266852 + + -- Tim Gardner Tue, 07 Jan 2014 09:21:26 -0700 + +linux (3.13.0-0.15) trusty; urgency=low + + [ Tim Gardner ] + + * rebase to v3.13-rc7 + + [ Upstream Kernel Changes ] + + * rebase to v3.13-rc7 + + -- Tim Gardner Sun, 05 Jan 2014 06:13:33 -0700 + +linux (3.13.0-0.14) trusty; urgency=low + + [ Andy Whitcroft ] + + * rebase to 7a262d2ed9fa42fad8c4f243f8025580b58cf2f6 + + [ Tim Gardner ] + + * Remove ubuntu/dm-raid4-5 in favor of CONFIG_MD_RAID456 + * Update lttng to Version 2.4.0-rc2 + * lttng: Disabled trace_kvm_async_pf_completed + * [Config] CONFIG_IMA=y + - LP: #1244627 + + [ Upstream Kernel Changes ] + + * rebase to 7a262d2ed9fa42fad8c4f243f8025580b58cf2f6 + + -- Tim Gardner Thu, 02 Jan 2014 12:57:13 -0700 + +linux (3.13.0-0.13) trusty; urgency=low + + [ Andy Whitcroft ] + + * ubuntu: aufs3 -- (no-up) aufs3-base.patch + * ubuntu: aufs3 -- (no-up) aufs3-mmap.patch + * ubuntu: aufs3 -- (no-up) aufs3-standalone.patch + * ubuntu: AUFS (no-squash): basic framework and update machinary + * ubuntu: AUFS -- update to 7b136a27b021da9010d8b6c101939dd298e46be7 + * ubuntu: aufs3 -- enable + * ubuntu: aufs3 -- update configs + + -- Andy Whitcroft Thu, 02 Jan 2014 09:41:02 +0000 + +linux (3.13.0-0.12) trusty; urgency=low + + [ Upstream Kernel Changes ] + + * rebase to v3.13-rc6 + + -- Tim Gardner Tue, 31 Dec 2013 06:16:03 -0700 + +linux (3.13.0-0.11) trusty; urgency=low + + [ Andy Whitcroft ] + + * SAUCE: suspicious unlocked ->status reading and writing in ipc/sem.c + * [Config] ppc64el -- initial defconfig based -generic flavour + * [Config] initial defconfig for ppc64el + * [Config] ubuntuise ppc64el config + * [Config] ubuntuise ppc64el config part 2 + * [Config] d-i -- update empty udebs list + * [Config] ppc64el -- split extras package + + [ Anton Blanchard ] + + * SAUCE: KVM: PPC: Book3S HV: Add little-endian guest support + + [ Benjamin Herrenschmidt ] + + * SAUCE: powerpc/powernv: Add calls to support little endian + + [ Cédric Le Goater ] + + * SAUCE: KVM: PPC: Book3S: add helper routine to load guest instructions + * SAUCE: KVM: PPC: Book3S: add helper routines to detect endian order + * SAUCE: KVM: PPC: Book3S: MMIO emulation support for little endian + guests + + [ Paul E. McKenney ] + + * SAUCE: powerpc: Make 64-bit non-VMX copy_tofrom_user() bi-endian + + -- Andy Whitcroft Fri, 27 Dec 2013 16:48:55 +0000 + +linux (3.13.0-0.10) trusty; urgency=low + + [ Andy Whitcroft ] + + * rebase to v3.13-rc5 + * [Config] updateconfigs following rebase to v3.13-rc5 + + [ Upstream Kernel Changes ] + + * rebase to v3.13-rc5 + - LP: #1260303 + - LP: #1260303 + - LP: #1260225 + + -- Andy Whitcroft Mon, 23 Dec 2013 12:48:28 +0000 + +linux (3.13.0-0.9) trusty; urgency=low + + [ Andy Whitcroft ] + + * [Config] d-i -- allow missing firmware + + -- Andy Whitcroft Fri, 20 Dec 2013 17:57:06 +0000 + +linux (3.13.0-0.8) trusty; urgency=low + + [ Andy Whitcroft ] + + * [Config] annotations -- first pass over entire config + * [Config] drop libunwind8-dev from Build-Depends for ppc64el + + [ Tim Gardner ] + + * [Config] Add arm64 device tree files + - LP: #1262901 + + -- Andy Whitcroft Thu, 19 Dec 2013 18:36:43 +0000 + +linux (3.13.0-0.7) trusty; urgency=low + + [ Rajesh B Prathipati ] + + * SAUCE: powerpc: Make unaligned accesses endian-safe for powerpc + + [ Tim Gardner ] + + * [Config] CONFIG_REGULATOR_S2MPS11=n for FTBS + + [ Upstream Kernel Changes ] + + * rebase to v3.13-rc4 + - LP: #1259790 + - LP: #1259437 + - LP: #1259435 + + -- Tim Gardner Fri, 13 Dec 2013 07:56:34 -0700 + +linux (3.13.0-0.6) trusty; urgency=low + + [ Paolo Pisati ] + + * [Config] armhf: arm64: VIRTIO_[BLK|MMIO|NET|CONSOLE|BALLOON]=y + * [Config] i386: amd64: VIRTIO_CONSOLE=y + + [ Tim Gardner ] + + * [Config] CONFIG_TRANSPARENT_HUGEPAGE_ALWAYS=y + + -- Tim Gardner Sun, 08 Dec 2013 09:22:01 -0700 + +linux (3.13.0-0.5) trusty; urgency=low + + [ Andy Whitcroft ] + + * correct bug listing for v3.13-rc2 rebase + * [Config] ppc64el -- create linux-libc-dev + * [Debian] Improve tools version message + - LP: #1257715 + + [ Serge Hallyn ] + + * SAUCE: fork: Allow CLONE_PARENT after setns(CLONE_NEWPID)] + - LP: #1248590 + * SAUCE: vfs: Fix a regression in mounting proc + + [ Tim Gardner ] + + * [Config] Build-in ohci-pci + - LP: #1244176 + * Rebase to v3.13-rc3 + + [ Upstream Kernel Changes ] + + * Revert "Revert "fork: unify and tighten up CLONE_NEWUSER/CLONE_NEWPID + checks"" + - LP: #1248590 + + [ Upstream Kernel Changes ] + + * rebase to v3.13-rc3 + - LP: #1256840 + - LP: #1256212 + + -- Tim Gardner Sat, 07 Dec 2013 07:55:39 -0700 + +linux (3.13.0-0.4) trusty; urgency=low + + [ Tim Gardner ] + + * Rebase to v3.13-rc2 + + [ Upstream Kernel Changes ] + + * rebase to v3.13-rc2 + + -- Tim Gardner Fri, 29 Nov 2013 23:54:05 -0500 + +linux (3.13.0-0.3) trusty; urgency=low + + [ Andy Whitcroft ] + + * Revert "SAUCE: Fix DocBook FTBS" + + [ Tim Gardner ] + + * [Debian] Re-sign modules after debug objcopy + - LP: #1253155 + * [Config] CONFIG_EXT4_USE_FOR_EXT23=y + + [ Upstream Kernel Changes ] + + * doc: fix generation of device-drivers + * rebase to b975dc3689fc6a3718ad288ce080924f9cb7e176 + + -- Tim Gardner Tue, 26 Nov 2013 12:24:42 -0700 + +linux (3.13.0-0.2) trusty; urgency=low + + [ Tim Gardner ] + + * SAUCE: Fix DocBook FTBS + + -- Tim Gardner Mon, 25 Nov 2013 13:24:15 -0700 + +linux (3.13.0-0.1) trusty; urgency=low + + [ Upstream Kernel Changes ] + + * rebase to 7e3528c3660a2e8602abc7858b0994d611f74bc3 + + -- Tim Gardner Tue, 12 Nov 2013 07:28:53 -0700 + +linux (3.13.0-0.0) trusty; urgency=low + + * Major release bump. + + -- Andy Whitcroft Tue, 12 Nov 2013 21:37:52 +0000 + +linux (3.12.0-2.7) trusty; urgency=low + + * Fixed armhf ABI build failure. + * Release tracker + - LP: #1249477 + + -- Tim Gardner Fri, 08 Nov 2013 16:22:45 -0700 + +linux (3.12.0-2.6) trusty; urgency=low + + [ Joseph Salisbury ] + + * SAUCE: tg3: Add support for new 57786 device id. + - LP: #1242610 + + [ Tim Gardner ] + + * [Config] CONFIG_OABI_COMPAT=n + * [Config] add the wandboard to shipped dtb + - LP: #1249421 + * Release tracker + - LP: #1249477 + + -- Tim Gardner Fri, 08 Nov 2013 12:23:18 -0700 + +linux (3.12.0-2.5) trusty; urgency=low + + [ Andy Whitcroft ] + + * rebase to mainline v3.12 + * [Config] updateconfigs following rebase to v3.12 + * postinst -- improve relative symlink detection with missing files + - LP: #1248053 + * postinst -- fix unchanged link detection + * [Config] update configs following addition of apparmor fixes + + [ Anthony Wong ] + + * SAUCE: Work around broken ACPI backlight on Dell Inspiron 5537 + - LP: #1231305 + + [ John Johansen ] + + * SAUCE: (no-up) apparmor: Sync to apparmor 3 - alpha 4 snapshot + * SAUCE: apparmor: fix unix domain sockets to be mediated on connection + - LP: #1208988 + * SAUCE: apparmor: allocate path lookup buffers during init + - LP: #1208988 + + [ Tim Gardner ] + + * [Config] Remove superfluous ubuntu/lttng-modules + + [ Upstream Kernel Changes ] + + * Revert "fork: unify and tighten up CLONE_NEWUSER/CLONE_NEWPID checks" + - LP: #1248590 + + [ Upstream Kernel Changes ] + + * rebase to v3.12 + - LP: #1222850 + + [ Adam Conrad ] + * etc/getabis: Fetch arm64/generic abis as well + + -- Andy Whitcroft Wed, 06 Nov 2013 21:00:21 +0000 + +linux (3.12.0-1.3) trusty; urgency=low + + [ Andy Whitcroft ] + + * [Config] arm64 -- add arch to the configuration handlers + * [Config] arm64 -- add generic flavour + * [Config] arm64 -- default config + * [Config] arm64 -- fix up various FTBFS config options + * SAUCE: arm64: export __copy_in_user to modules + * [Config] arm64 -- disable ABI/module checks + * [Config] arm64 -- enforcer -- add arm64 to the enforcer + * [Config] arm64 -- enable udebs for arm64 + + [ Colin Watson ] + + * [Config] Clean up various udeb Provides + + [ Paolo Pisati ] + + * [Config] AHCI_IMX=y + * [Config] build imx*-wandboard dtbs + + [ Serge Hallyn ] + + * SAUCE: device_cgroup: remove can_attach + + [ Tim Gardner ] + + * rebase to v3.12-rc7 + * SAUCE: KVM: Fix modprobe failure for kvm_intel/kvm_amd + * Release tracker + - LP: #1245932 + + [ Upstream Kernel Changes ] + + * rebase to v3.12-rc7 + - LP: #1180881 + - LP: #1180881 + - LP: #1217957 + + -- Tim Gardner Sun, 27 Oct 2013 22:08:55 -0600 + +linux (3.12.0-0.2) trusty; urgency=low + + [ Andy Whitcroft ] + + * Revert "SAUCE: (no-up) scsi: hyper-v storage -- mark as preferring READ + CAPACITY (16) at SPC-2" + * Revert "SAUCE: (no-up) scsi: hyper-v storage -- mark as VPD capable at + SPC-2" + * Revert "SAUCE: (no-up) scsi: add scsi device flag to request READ + CAPACITY (16) be preferred" + * Revert "SAUCE: (no-up) scsi: add scsi device flag to request VPD pages + be used at SPC-2" + * Revert "overlayfs: Update to v19" + * Revert "ubuntu: overlayfs v18 -- -- overlayfs: implement show_options" + * Revert "ubuntu: overlayfs v18 -- -- overlayfs: add statfs support" + * Revert "ubuntu: overlayfs v18 -- -- overlay filesystem" + * Revert "ubuntu: overlayfs v18 -- -- vfs: introduce + clone_private_mount()" + * Revert "ubuntu: overlayfs v18 -- -- vfs: export do_splice_direct() to + modules" + * Revert "ubuntu: overlayfs v18 -- -- overlay: overlay filesystem + documentation" + * ubuntu: overlayfs v20 -- overlayfs: add statfs support + * [Config] fix linux-libc-dev generation for arm64 + * [Config] fix linux-libc-dev generation for x32 + * [Config] add linux-libc-dev generation for ppc64el + + [ Erez Zadok ] + + * ubuntu: overlayfs v20 -- overlayfs: implement show_options + + [ Miklos Szeredi ] + + * ubuntu: overlayfs v20 -- vfs: add i_op->dentry_open() + * ubuntu: overlayfs v20 -- vfs: export do_splice_direct() to modules + * ubuntu: overlayfs v20 -- vfs: export __inode_permission() to modules + * ubuntu: overlayfs v20 -- vfs: introduce clone_private_mount() + * ubuntu: overlayfs v20 -- overlay filesystem + * ubuntu: overlayfs v20 -- fs: limit filesystem stacking depth + + [ Neil Brown ] + + * ubuntu: overlayfs v20 -- overlay: overlay filesystem documentation + + [ Paolo Pisati ] + + * [Config] arm: VIRTIO_[BLK|NET|MMIO]=y + + [ Seth Forshee ] + + * SAUCE: (no-up) ACPI: Disable Windows 8 compatibility for some Lenovo + ThinkPads + - LP: #1183856 + + [ Tim Gardner ] + + * [Config] CONFIG_CRYPTO_CRCT10DIF=y, CONFIG_CRYPTO_CRCT10DIF_PCLMUL=m + * rebase to v3.12-rc2 + * updateconfigs + * [Config] disable CONFIG_FB_VESA enforcer check + * [Config] Disable lttng for FTBS + * rebase to v3.12-rc3 + * rebase to v3.12-rc4 + * [Config] CONFIG_ANDROID=n + - LP: #1235161 + * [Config] CONFIG_L2TP_V3=y + - LP: #1235914 + * [Config] CONFIG_USB_OTG=n for all arches + * Release tracker + - LP: #1242811 + + [ Upstream Kernel Changes ] + + * scsi: hyper-v storsvc switch up to SPC-3 + + * rebase to v3.12-rc6 + - LP: #1235977 + - LP: #1235523 + - LP: #1239392 + - LP: #1227491 + + * rebase to v3.12-rc3 + - LP: #1231931 + + * rebase to v3.12-rc2 + - LP: #1213820 + - LP: #1213055 + - LP: #1198030 + + -- Tim Gardner Mon, 23 Sep 2013 07:41:07 -0600 + +linux (3.11.0-8.15) saucy; urgency=low + + [ Tim Gardner ] + + * Release tracker + - LP: #1227969 + + * Update lttng + Updated to git://git.lttng.org/lttng-modules.git 9998f5216f4641a79e158135 + Version 2.3.0+ + + [ Upstream Kernel Changes ] + + * igb: Add additional get_phy_id call for i354 devices + - LP: #1219619 + * igb: Read flow control for i350 from correct EEPROM section + - LP: #1219619 + * timekeeping: Fix HRTICK related deadlock from ntp lock changes + Required for lttng update. + + -- Tim Gardner Thu, 19 Sep 2013 07:41:49 -0600 + +linux (3.11.0-7.14) saucy; urgency=low + + [ Andy Whitcroft ] + + * [Packaging] sort out linux-tools naming + - LP: #1205284 + * [Packaging] linux-tools: switch to common generic version helper + + [ Paolo Pisati ] + + * [Config] highbank: ecx1000: CPU_IDLE causes instabilities, disable it + + [ Tim Gardner ] + + * Release tracker + - LP: #1226160 + + [ Tony Lindgren ] + + * SAUCE: ARM: dts: Fix muxing and regulator for wl12xx on the SDIO bus + for pandaboard + + [ Upstream Kernel Changes ] + + * USB: handle LPM errors during device suspend correctly + - LP: #1011415 + * usb: don't check pm qos NO_POWER_OFF flag in usb_port_suspend() + - LP: #1011415 + * usb: Don't fail port power resume on device disconnect. + - LP: #1011415 + + [ Upstream Kernel Changes ] + + * rebase to v3.11.1 + + -- Tim Gardner Wed, 11 Sep 2013 07:30:17 -0600 + +linux (3.11.0-7.13) saucy; urgency=low + + * Release tracker + - LP: #1223545 + + [ Andy Whitcroft ] + + * SAUCE: (no-up) scsi: add scsi device flag to request VPD pages be used at SPC-2 + - LP: #1223499 + * SAUCE: (no-up) scsi: add scsi device flag to request READ CAPACITY (16) be preferred + - LP: #1223499 + * SAUCE: (no-up) scsi: hyper-v storage -- mark as VPD capable at SPC-2 + - LP: #1223499 + * SAUCE: (no-up) scsi: hyper-v storage -- mark as preferring READ CAPACITY (16) at SPC-2 + - LP: #1223499 + + [ Maximiliano Curia ] + + * SAUCE: (no-up) Only let characters through when there are active readers. + - LP: #1208740 + + [ Tim Gardner ] + + * [Debian] getabis: Commit new ABI directory, remove the old + * [Config] CONFIG_EFIVAR_FS=y + - LP: #1223195 + * [Config] CONFIG_EFI_VARS_PSTORE=m, + CONFIG_EFI_VARS_PSTORE_DEFAULT_DISABLE=n + * SAUCE: (no-up) USB: input: cm109.c: Convert high volume dev_err() to dev_err_ratelimited() + - LP: #1222850 + + [ Upstream Kernel Changes ] + + * Intel xhci: refactor EHCI/xHCI port switching + - LP: #1210858 + + -- Tim Gardner Tue, 10 Sep 2013 09:00:19 -0600 + +linux (3.11.0-6.12) saucy; urgency=low + + * Release tracker + - LP: #1222893 + + [ Andy Whitcroft ] + + * Revert "ubuntu: (no-squash) AUFS3 -- aufs3-standalone.patch" + * Revert "ubuntu: (no-squash) AUFS3 -- aufs3-base.patch" + * ubuntu: (no-squash) AUFS3 -- aufs3-base.patch + * ubuntu: (no-squash) AUFS3 -- aufs3-standalone.patch + - LP: #1222407 + + [ Paolo Pisati ] + + * [Config] restore mmc boot on panda + + [ Tyler Hicks ] + + * SAUCE: apparmor: Use shash crypto API interface for profile hashes + - LP: #1216294 + + [ Upstream Kernel Changes ] + + * net: calxedaxgmac: remove NETIF_F_FRAGLIST setting + * net: calxedaxgmac: read correct field in xgmac_desc_get_buf_len + * net: calxedaxgmac: fix race between xgmac_tx_complete and xgmac_tx_err + * net: calxedaxgmac: fix possible skb free before tx complete + * net: calxedaxgmac: update ring buffer tx_head after barriers + * net: calxedaxgmac: fix race with tx queue stop/wake + * net: calxedaxgmac: enable interrupts after napi_enable + * net: calxedaxgmac: fix various errors in xgmac_set_rx_mode + * net: calxedaxgmac: remove some unused statistic counters + * net: calxedaxgmac: fix rx DMA mapping API size mismatches + * net: calxedaxgmac: fix xgmac_xmit DMA mapping error handling + * mfd: rtsx: Read vendor setting from config space + - LP: #1201698 + + -- Tim Gardner Mon, 09 Sep 2013 07:21:06 -0600 + +linux (3.11.0-5.11) saucy; urgency=low + + * Release tracker + - LP: #1221886 + + [ Adam Lee ] + + * SAUCE: Bluetooth: Add support for 04ca:2007 + - LP: #1153448 + * SAUCE: Bluetooth: Add support for 105b:e065 + - LP: #1161261 + + [ Gavin Guo ] + + * SAUCE: Bluetooth: Add support for Broadcom 413c:8143 + - LP: #1166113 + + [ Upstream Kernel Changes ] + + * igb: Reset the link when EEE setting changed + - LP: #1219619 + * igb: Read register for latch_on without return value + - LP: #1219619 + * igb: Added rcu_lock to avoid race + - LP: #1219619 + * igb: don't allow SR-IOV without MSI-X + - LP: #1219619 + * igb: Update MTU so that it is always at least a standard frame size + - LP: #1219619 + * igb: Refactor of init_nvm_params + - LP: #1219619 + * igb: Refactor NVM read functions to accommodate devices with no flash + - LP: #1219619 + * igb: Add device support for flashless SKU of i210 device + - LP: #1219619 + * igb: Fix get_fw_version function for all parts + - LP: #1219619 + * igb: Add macro for size of RETA indirection table + - LP: #1219619 + * igb: Expose RSS indirection table for ethtool + - LP: #1219619 + * igb: Don't look for a PBA in the iNVM when flashless + - LP: #1219619 + * igb: Implementation of 1-sec delay for i210 devices + - LP: #1219619 + * igb: New PHY_ID for i354 device + - LP: #1219619 + * igb: M88E1543 PHY downshift implementation + - LP: #1219619 + * igb: No PHPM support in i354 devices + - LP: #1219619 + * igb: Support to get 2_5G link status for appropriate media type + - LP: #1219619 + * igb: Get speed and duplex for 1G non_copper devices + - LP: #1219619 + * igb: Implementation to report advertised/supported link on i354 devices + - LP: #1219619 + * igb: Update version number + - LP: #1219619 + * Bluetooth: Take proper tty_struct references + - LP: #1189998 + * Bluetooth: Remove the device from the list in the destructor + - LP: #1189998 + * Bluetooth: Move the tty initialization and cleanup out of open/close + - LP: #1189998 + * Bluetooth: Implement .activate, .shutdown and .carrier_raised methods + - LP: #1189998 + * Bluetooth: Fix the reference counting of tty_port + - LP: #1189998 + * Bluetooth: Purge the dlc->tx_queue to avoid circular dependency + - LP: #1189998 + + [ Wen-chien Jesse Sung ] + + * SAUCE: Bluetooth: Support for loading broadcom patchram firmware + - LP: #1065400 + * SAUCE: Bluetooth: Add support for 13d3:3388 and 13d3:3389 + - LP: #1065400 + + -- Tim Gardner Thu, 05 Sep 2013 08:06:17 -0600 + +linux (3.11.0-5.10) saucy; urgency=low + + [ Andy Whitcroft ] + + * Release tracker + - LP: #1220222 + * Revert "[Config] Fix ubuntu directoy Kbuilds" + * Revert "aufs update dropped some Kbuild files" + * Revert "ubuntu: AUFS -- follow rename of loop.h into drivers/block" + * Revert "ubuntu: AUFS -- update to + 8e503d4142c189ed6c47a2177ad2cd058e8d340e" + * Revert "ubuntu: (no-squash) AUFS3 -- aufs3-standalone.patch" + * Revert "ubuntu: (no-squash) AUFS3 -- aufs3-base.patch" + * rebase to v3.11 final + * [Config] clean up ubuntu/Kconfig and ubuntu/Makefile + * ubuntu: AUFS (no-squash): basic framework and update machinary + * ubuntu: (no-squash) AUFS3 -- aufs3-base.patch + * ubuntu: (no-squash) AUFS3 -- aufs3-standalone.patch + * ubuntu: AUFS -- update to 5ac5fe26a90a818218310e208d17688fddb07622 + * ubuntu: (no-squash) AUFS -- enable aufs + * ubuntu: AUFS -- fix remaining d_count references to use accessor + * ubuntu: lttng -- follow rename of pid_ns + * SAUCE: disable stack-protector for ARM compressed bootloader + + [ Paolo Pisati ] + + * [Config] ARM_ATAG_DTB_COMPAT=y + + [ Rob Herring ] + + * [Config] Enable KVM and virtio for armhf generic-lpae + + [ Tim Gardner ] + + * [Config] CONFIG_ARPD=y + * [Config] CONFIG_ZSWAP=y + - LP: #1215379 + + [ Upstream Kernel Changes ] + + * uvcvideo: quirk PROBE_DEF for Dell SP2008WFP monitor. + - LP: #1217957 + * ARM: use phys_addr_t for DMA zone sizes + * ARM: highbank: enable DMA zone for LPAE + * ARM: highbank: select ARCH_HAS_HOLES_MEMORYMODEL + * ARM: highbank: select required errata work-arounds + * DMA: fix AMBA PL08x compilation issue with 64bit DMA address type + * DMA: fix printk warning in AMBA PL08x DMA driver + * ARM: highbank: select ARCH_DMA_ADDR_T_64BIT for LPAE + * ARM: move outer_cache declaration out of ifdef + * ARM: highbank: avoid L2 cache smc calls when PL310 is not present + * ARM: highbank: clean-up some unused includes + * ARM: xen: only set pm function ptrs for Xen guests + + [ Upstream Kernel Changes ] + + * rebase to v3.11 + + -- Andy Whitcroft Tue, 03 Sep 2013 17:08:06 +0100 + +linux (3.11.0-4.9) saucy; urgency=low + + [ Tim Gardner ] + + * rebase to v3.11-rc7 + * Release tracker + - LP: #1216962 + + [ Upstream Kernel Changes ] + + * mwifiex: do not create AP and P2P interfaces upon driver loading + - LP: #1212720 + + -- Tim Gardner Mon, 26 Aug 2013 06:25:35 -0600 + +linux (3.11.0-3.8) saucy; urgency=low + + [ Johannes Berg ] + + * SAUCE: mac80211: ignore (E)CSA in probe response frames + - LP: #1201470 + + -- Tim Gardner Fri, 23 Aug 2013 09:47:36 -0600 + +linux (3.11.0-3.7) saucy; urgency=low + + [ Tim Gardner ] + + * SAUCE: (no-up) hv_vss_daemon -- prevent self-daemonising to allow + upstart to track + * SAUCE: (no-up) hv -- bodge hv_vss_daemon so it can use the local + linux/hyperv.h + * SAUCE: hv: Add vss daemon to Makefile + * [Debian] Add hv_vss_daemon to tools package + - LP: #1213282 + * [Config] Fix ubuntu directoy Kbuilds + - LP: #1181755 + + -- Tim Gardner Tue, 20 Aug 2013 08:34:05 -0600 + +linux (3.11.0-3.6) saucy; urgency=low + + [ Andy Whitcroft ] + + * [Packaging] tools: conditionalise x86 and hyper-v tools sensibly + * [Config] tools: enable x86 and hyper-v + + [ John Johansen ] + + * Revert "SAUCE: (no-up) apparmor: Sync to apparmor 3 dev stable + snapshot" + * Revert "SAUCE: (no-up) apparmor: fix apparmor module status for none + root users" + * SAUCE: (no-up) apparmor: Sync to apparmor 3 - alpha 4 snapshot + + [ Joseph Salisbury ] + + * SAUCE: (no-up) intel_ips: blacklist ASUSTek G60JX laptops + - LP: #1210848 + + [ Kamal Mostafa ] + + * [debian] tools: ship 'cpupower' in linux-tools + - LP: #1158668 + * [Config] Build-dep on libpci-dev for cpu tools + - LP: #1158668 + + [ Tim Gardner ] + + * rebase to v3.11-rc6 + * Release tracker + - LP: #1213941 + + -- Tim Gardner Fri, 16 Aug 2013 07:02:07 -0600 + +linux (3.11.0-2.5) saucy; urgency=low + + [ Tim Gardner ] + + * [Config] CONFIG_PM_DEBUG=y + - LP: #1210539 + * rebase to v3.11-rc5 + * Release tracker + - LP: #1211378 + + -- Tim Gardner Mon, 12 Aug 2013 06:10:39 -0600 + +linux (3.11.0-1.4) saucy; urgency=low + + [ Tim Gardner ] + + * Bump ABI when making changes to the inclusion list lest + you cause conflicts with existing installed kernel + packages. + - LP: #1210331 + + -- Tim Gardner Fri, 09 Aug 2013 03:03:51 +0100 + +linux (3.11.0-0.3) saucy; urgency=low + + [ Tim Gardner ] + + * [Config] Include rbd and kvm in the virtual inclusion list + - LP: #1206961 + * [Config] Removed obsolete inclusion list entries + + -- Tim Gardner Tue, 06 Aug 2013 08:52:14 +0100 + +linux (3.11.0-0.2) saucy; urgency=low + + [ Bruce Allan ] + + * SAUCE: (no-up) e1000e: fix I217/I218 PHY initialization flow + - LP: #1206757 + * SAUCE: (no-up) e1000e: enable support for new device IDs + - LP: #1206757 + + [ John Johansen ] + + * SAUCE: (no-up) apparmor: Sync to apparmor 3 dev stable snapshot + + [ Paolo Pisati ] + + * build vexpress a15 dtb + * [Config] disable Broadcom bcm support (ARCH_BCM) + * [Config] disable Allwinner a1x support (ARCH_SUNXI) + * [Config] disable WonderMedia WM8850 support (ARCH_WM8850) + * [Config] disable Rockchip support (ARCH_ROCKCHIP) + * [Config] disable STMicroelectronics STiH41x SOCs (ARCH_STI) + * [Config] disable TI Keystone, AM43xx and OMAP5 support + * [Config] ARM_APPENDED_DTB=y + + [ Tim Gardner ] + + * rebase to v3.11-rc4 + * overlayfs: Update to v19 + * [Config] Enable overlayfs + * SAUCE: Fix lttng compile errors + + [ Upstream Kernel Changes ] + + * rebase to v3.11-rc4 + - LP: #1163720 + - LP: #1162026 + - LP: #1195636 + - LP: #1195597 + - LP: #1180409 + - LP: #1168430 + + -- Tim Gardner Sun, 04 Aug 2013 03:45:31 -0600 + +linux (3.11.0-0.1) saucy; urgency=low + + [ Upstream Kernel Changes ] + + * rebase to 64ccccf8525fee499625b517c0faadf784c79e93 + - LP: #1163720 + - LP: #1162026 + - LP: #1195636 + - LP: #1195597 + - LP: #1180409 + - LP: #1168430 + + -- Tim Gardner Mon, 08 Jul 2013 08:50:46 -0600 + +linux (3.10.0-2.10) saucy; urgency=low + + [ Andy Whitcroft ] + + * [Config] CONFIG_INTEL_MEI*=m + - LP: #1196155 + * [Config] CONFIG_DEBUG_INFO=y + + [ Stephen Warren ] + + * [Config] fix Calxeda xgmac module filename + + [ Upstream Kernel Changes ] + + * Revert "serial: 8250_pci: add support for another kind of NetMos + Technology PCI 9835 Multi-I/O Controller" + - LP: #1190967 + * mfd: lpc_ich: Add support for Intel Avoton SoC + - LP: #1196658 + + -- Andy Whitcroft Fri, 05 Jul 2013 18:08:02 +0100 + +linux (3.10.0-2.9) saucy; urgency=low + + [ Andy Whitcroft ] + + * rebase to v3.10 + + [ John Johansen ] + + * Revert "SAUCE: (no-up) apparmor: Fix quieting of audit messages for + network mediation" + * Revert "SAUCE: (no-up) apparmor: Fix compile warnings" + * Revert "SAUCE: (no-up) AppArmor: basic networking rules" + * Revert "SAUCE: (no-up) apparmor: Add the ability to mediate mount" + * Revert "SAUCE: (no-up) AppArmor: Add profile introspection file to + interface" + * Revert "SAUCE: (no-up) AppArmor: Disable Add PR_{GET,SET}_NO_NEW_PRIVS + to prevent execve from granting privs" + * SAUCE: (no-up) apparmor: Sync to apparmor 3 dev stable snapshot + + [ Upstream Kernel Changes ] + + * rebase to v3.10 + + -- Andy Whitcroft Mon, 01 Jul 2013 17:42:29 +0100 + +linux (3.10.0-1.8) saucy; urgency=low + + [ Andy Whitcroft ] + + * Release Tracking Bug + - LP: #1195717 + + [ Andy Whitcroft ] + + * Revert "ubuntu: overlayfs -- follow change to do_splice_direct + interface" + * Revert "ubuntu: overlayfs -- expose do_splice_direct prototype" + * Revert "SAUCE: ubuntu: overlayfs -- ovl_path_open should not take path + reference" + * Revert "ubuntu: overlayfs -- add FS_ALIAS" + * Revert "ubuntu: overlayfs -- + overlayfs-copy-up-i_uid-i_gid-from-the-underlying-inode" + * Revert "ubuntu: overlayfs -- ovl-switch-to-inode_permission" + * Revert "ubuntu: overlayfs -- vfs-export-inode_permission-to-modules" + * Revert "ubuntu: overlayfs -- overlayfs-create-new-inode-in-ovl_link" + * Revert "ubuntu: overlayfs -- + overlayfs-fix-possible-leak-in-ovl_new_inode" + * Revert "ubuntu: overlayfs -- fs-limit-filesystem-stacking-depth" + * Revert "ubuntu: overlayfs -- overlay-overlay-filesystem-documentation" + * Revert "ubuntu: overlayfs -- overlayfs-implement-show_options" + * Revert "ubuntu: overlayfs -- overlayfs-add-statfs-support" + * Revert "ubuntu: overlayfs -- overlay filesystem" + * Revert "ubuntu: overlayfs -- vfs-introduce-clone_private_mount" + * Revert "ubuntu: overlayfs -- vfs-export-do_splice_direct-to-modules" + * Revert "ubuntu: overlayfs -- vfs-add-i_op-dentry_open" + * ubuntu: overlayfs v18 -- -- overlayfs: add statfs support + + [ Erez Zadok ] + + * ubuntu: overlayfs v18 -- -- overlayfs: implement show_options + + [ Miklos Szeredi ] + + * ubuntu: overlayfs v18 -- -- vfs: add i_op->dentry_open() + * ubuntu: overlayfs v18 -- -- vfs: export do_splice_direct() to modules + * ubuntu: overlayfs v18 -- -- vfs: export __inode_permission() to modules + * ubuntu: overlayfs v18 -- -- vfs: introduce clone_private_mount() + * ubuntu: overlayfs v18 -- -- overlay filesystem + * ubuntu: overlayfs v18 -- -- fs: limit filesystem stacking depth + + [ Neil Brown ] + + * ubuntu: overlayfs v18 -- -- overlay: overlay filesystem documentation + + [ Tim Gardner ] + + * [Config] CONFIG_SUNRPC_DEBUG=y + - LP: #1127319 + + -- Andy Whitcroft Fri, 28 Jun 2013 10:26:52 +0100 + +linux (3.10.0-0.7) saucy; urgency=low + + [ Andy Whitcroft ] + + * autopkgtest: switch Depends: to build-essential + + -- Andy Whitcroft Tue, 25 Jun 2013 08:40:55 +0100 + +linux (3.10.0-0.6) saucy; urgency=low + + [ Andy Whitcroft ] + + * [Config] enable CONFIG_ARCH_TEGRA to fix FTBFS on armhf + * SAUCE: ubuntu: overlayfs -- ovl_path_open should not take path reference + - LP: #1098378 + * ubuntu: AUFS -- update to 4f14cef47eb7c23eda7198931fbab1040866b6ee + * ubuntu: overlayfs -- expose do_splice_direct prototype + * ubuntu: overlayfs -- follow change to do_splice_direct interface + * [Config] flip CONFIG_NO_HZ_FULL_ALL off as it is overheating machines + - LP: #1192691 + + [ Stefan Bader ] + + * (d-i) Add dm-snapshot to md-modules + - LP: #1191726 + + [ Tim Gardner ] + + * Release tracker + - LP: #1194149 + * [Config] CONFIG_WIL6210=n for armhf + * [Config] d-i: Add calxedaxgmac to nic-modules + - LP: #1192358 + * [debian] Use dh_strip + - LP: #1192759 + * [Config] Enable perf for armhf + * do_tools=false when cross compiling + * [Config] CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS=y + - LP: #1108082 + + [ Upstream Kernel Changes ] + + * nsp32: switch reset delay to msleep() as it is tooo long + * alx: add a simple AR816x/AR817x device driver + Plucked from linux-next. replaces ubuntu/alx in favor of + 'to be merged' version in 3.11. + * rebase to v3.10-rc7 + - LP: #1189363 + + -- Tim Gardner Sat, 22 Jun 2013 18:10:31 -0600 + +linux (3.10.0-0.5) saucy; urgency=low + + [ Andy Whitcroft ] + + * rebase to v3.10-rc6 + * [Config] updateconfigs following rebase to v3.10-rc6 + + [ Upstream Kernel Changes ] + + * rebase to v3.10-rc6 + + -- Andy Whitcroft Mon, 17 Jun 2013 11:12:39 +0100 + +linux (3.10.0-0.4) saucy; urgency=low + + [ Andy Whitcroft ] + + * [Config] updateconfigs following rebase to v3.10-rc4 + + -- Andy Whitcroft Mon, 10 Jun 2013 11:42:28 +0100 + +linux (3.10.0-0.3) saucy; urgency=low + + [ Andy Whitcroft ] + + * rebase to v3.10-rc5 + + [ Upstream Kernel Changes ] + + * rebase to v3.10-rc5 + - LP: #1186170 + + -- Andy Whitcroft Mon, 10 Jun 2013 09:23:31 +0100 + +linux (3.10.0-0.2) saucy; urgency=low + + [ Andy Whitcroft ] + + * rebase to v3.10-rc4 + * [Config] CONFIG_BINFMT_SCRIPT=y to fix booting initramfs scripts + * [Config] enable SND_PCM_DEBUG SND_PCM_XRUN_DEBUG + - LP: #1187744 + * [Config] enforce CONFIG_BINFMT_SCRIPT=y + + [ Dave Chiluk ] + + * SAUCE: ncpfs: fix rmdir returns Device or resource busy + - LP: #1035226 + + [ Tim Gardner ] + + * rebase to v3.10-rc3 + * [Config] sparc be gone + * [Config] ia64 be gone + * d-i: block-modules provides nbd-modules + + [ Upstream Kernel Changes ] + + * rebase to v3.10-rc4 + * rebase to v3.10-rc3 + + -- Tim Gardner Tue, 28 May 2013 06:16:46 -0600 + +linux (3.10.0-0.1) saucy; urgency=low + + [ Tim Gardner ] + + * UBUNTU: Disabled lttng + * UBUNTU: Disable aufs for FTBS + * UBUNTU: Disabled alx + * UBUNTU: alx: rename NETIF_F_HW_VLAN_* feature flags to NETIF_F_HW_VLAN_CTAG_* + * UBUNTU: rebase to v3.10-rc2 + * UBUNTU: SAUCE: uvcvideo: quirk PROBE_DEF for Alienware X51 OmniVision webcam + + [ Andy Whitcroft ] + + * UBUNTU: [Config] update standards version to 3.9.4.0 + * UBUNTU: [Config] squash duplicate package description (long and short) + * UBUNTU: [Config] fix up Vcs-git: to point to saucy + * UBUNTU: [Config] drop depenancy on util-linux as is Essential + * UBUNTU: [Config] drop redundant Build-Conficts: + + [ Upstream Kernel Changes ] + + * rebase to v3.10-rc2 + - LP: #1180351 + + [ Upstream Kernel Changes ] + + * rebase to v3.10-rc1 + - LP: #1172151 + - LP: #1089795 + - LP: #1167270 + - LP: #1128840 + + -- Tim Gardner Tue, 14 May 2013 13:41:07 -0600 + +linux (3.10.0-0.0) saucy; urgency=low + + * Dummy + + -- Tim Gardner Thu, 09 May 2013 20:30:40 +0100 + +linux (3.9.0-2.6) saucy; urgency=low + + [ Tim Gardner ] + + * rebase to v3.9.2 + + -- Tim Gardner Thu, 09 May 2013 20:30:40 +0100 + +linux (3.9.0-1.5) saucy; urgency=low + + [ Tim Gardner ] + + * rebase to v3.9.1 + + -- Tim Gardner Wed, 08 May 2013 12:49:45 -0400 + +linux (3.9.0-0.4) saucy; urgency=low + + [ Andy Whitcroft ] + + * ubuntu: overlayfs -- add FS_ALIAS + + [ Tim Gardner ] + + * Added lttng + - LP: #1175784 + + -- Tim Gardner Thu, 02 May 2013 17:17:13 -0400 + +linux (3.9.0-0.3) saucy; urgency=low + + [ Upstream Kernel Changes ] + + * rebase to v3.9 + + -- Tim Gardner Mon, 29 Apr 2013 18:20:00 -0400 + +linux (3.9.0-0.2) saucy; urgency=low + + [ Tim Gardner ] + + * Enable extras packaging for amd64/i386. + Fixes build depenencies with brittany and linux-meta. + + -- Tim Gardner Mon, 29 Apr 2013 05:37:01 -0600 + +linux (3.9.0-0.1) saucy; urgency=low + + [ Upstream Kernel Changes ] + + * rebase to v3.9-rc8 + + [ Upstream Kernel Changes ] + + * rebase to v3.9-rc7 + - LP: #1128840 + + [ Upstream Kernel Changes ] + + * rebase to v3.9-rc6 + + [ Upstream Kernel Changes ] + + * rebase to v3.9-rc5 + + [ Upstream Kernel Changes ] + + * rebase to v3.8-rc4 + - LP: #1095315 + - LP: #886975 + - LP: #1086921 + + [ Upstream Kernel Changes ] + + * rebase to v3.9-rc3 + - LP: #1155016 + - LP: #1103594 + + [ Upstream Kernel Changes ] + + * rebase to v3.9-rc2 + + [ Upstream Kernel Changes ] + + * rebase to v3.9-rc1 + - LP: #901105 + - LP: #961286 + - LP: #1011792 + - LP: #1128934 + - LP: #886975 + - LP: #978807 + + -- Tim Gardner Wed, 20 Feb 2013 09:12:39 -0700 + +linux (3.8.0-7.14) raring; urgency=low + + [ Andy Whitcroft ] + + * [Config] CONFIG_RCU_USER_QS=n + * [Config] CONFIG_MTD_ONENAND_SIM=n + * annotations: add annotations for CONFIG_CC_STACKPROTECTOR + + [ Upstream Kernel Changes ] + + * rebase to v3.8 + + [Tim Gardner] + + * Release Tracking Bug + - LP: #1130111 + * UBUNTU: SAUCE: rt2x00: rt2x00pci_regbusy_read() - only print register access failure once + - LP: #1128840 + + -- Tim Gardner Mon, 18 Feb 2013 09:25:56 -0700 + +linux (3.8.0-6.13) raring; urgency=low + + [Tim Gardner] + + * Release Tracking Bug + - LP: #1125364 + * Add ahci modules to d-i + - LP: #1124415 + + + [ Chris Wilson ] + + * SAUCE: drm/i915: Wait for pending flips to complete before tearing down + the encoders + - LP: #1097315 + + -- Tim Gardner Wed, 13 Feb 2013 12:16:48 -0700 + +linux (3.8.0-6.12) raring; urgency=low + + [Tim Gardner] + + * perf: NO_LIBPERL=1 + * Fix linux-headers dependency + * Release Tracking Bug + - LP: #1124362 + + [ Andy Whitcroft ] + + * [Config] enable CONFIG_AUFS_EXPORT to allow nfs exports + - LP: #1121699 + + [ Daniel Vetter ] + + * SAUCE: drm/i915: write backlight harder + - LP: #954661 + + -- Tim Gardner Wed, 13 Feb 2013 10:25:11 -0700 + +linux (3.8.0-6.11) raring; urgency=low + + [Tim Gardner] + + * Release Tracking Bug + - LP: #1122071 + * rebase to v3.8-rc7 + * Add libaudit-dev as a build dependency + * Build perf with NO_LIBPYTHON=1 to avoid a python build dependency. + + [ Leann Ogasawara ] + + * [Config] Remove CONFIG_SATA_AHCI annotation + + -- Tim Gardner Fri, 08 Feb 2013 07:41:13 -0500 + +linux (3.8.0-5.10) raring; urgency=low + + [Tim Gardner] + + * Release Tracking Bug + - LP: #1118568 + + * Bump ABI to fix install issue with 3.8.0-4.8. + Moving drivers/ata/*ahci* to linux-image caused an + install conflict with linux-image-extras without an + ABI bump. + + [ Jan Beulich ] + + * SAUCE: xen-pciback: rate limit error messages from + xen_pcibk_enable_msi{, x}() + - LP: #1117336 + - CVE-2013-0231 + + -- Tim Gardner Thu, 07 Feb 2013 05:38:12 -0700 + +linux (3.8.0-4.9) raring; urgency=low + + [ Herton Ronaldo Krzesinski ] + + * d-i: Add mellanox ethernet drivers to nic-modules + - LP: #1015339 + + [ Joseph Salisbury ] + + * SAUCE: ACPI: Add DMI entry for Sony VGN-FW41E_H + - LP: #1113547 + + [ Kamal Mostafa ] + + * SAUCE: alx driver import script + + [ Qualcomm Atheros, Inc ] + + * SAUCE: alx: Update to heads/master + + [ Tim Gardner ] + + * Release Tracking Bug + - LP: #1117673 + + * [debian] Remove dangling symlink from headers package + - LP: #1112442 + * [config] CONFIG_ALX=m + * [Config] Add alx to d-i nic-modules + * [Config] CONFIG_SATA_AHCI=m + - LP: #1056563 + + -- Leann Ogasawara Tue, 05 Feb 2013 05:54:32 -0800 + +linux (3.8.0-4.8) raring; urgency=low + + [ Allen Ibara ] + + * SAUCE: imx6: dts: Add IMX6Q AHCI support + + [ Andy Whitcroft ] + + * rebase to v3.8-rc6 + * updateconfigs following rebase to v3.8-rc6 + + [Leann Ogasawara] + + * Release Tracking Bug + - LP: #1112573 + + [ Paolo Pisati ] + + * SAUCE: imx6: enable sata clk if SATA_AHCI_PLATFORM + * [Config] SERIAL_AMBA_PL011=y (vexpress serial console) + * [Config] MMC_ARMMMCI=y (vexpress mmc) + * [Config] FB_ARMCLCD=y (vexpress framebuffer) + + [ Seth Forshee ] + + * [Config] CONFIG_MAC80211_MESSAGE_TRACING=y + + [ Upstream Kernel Changes ] + + * rebase to v3.8-rc6 + - LP: #1107477 + + -- Leann Ogasawara Fri, 01 Feb 2013 07:20:59 -0800 + +linux (3.8.0-3.7) raring; urgency=low + + [ Andy Green ] + + * SAUCE: ARM: OMAP2+: add cpu id register to MAC address helper + * SAUCE: ARM: omap2 add mac address allocation register api + * SAUCE: ARM: omap2 panda register ethernet and wlan for automatic mac + allocation + + [ Leann Ogasawara ] + + * rebase to v3.8-rc5 + * Release Tracking Bug + - LP: #1111486 + + [ Paolo Pisati ] + + * SAUCE: davinci: vpss: compilation fix + * [Config] enable TI OMAP4 support (Pandaboard/ES) + * [Config] OMAP_USB2=y (since TWL6030_USB depends on it) + * [Config] enable Freescale IMX6 support (SabreLite) + * [Config] SERIAL_IMX_CONSOLE=y + * [Config] MMC_*_IMX=y + * [Config] disable USB_SUSPEND + * [Config] USB_MXS_PHY=y + * [Config] USB_CHIPIDEA=y + * SAUCE: DTB: add support for multiple DTBs + * SAUCE: DTB: build imx6q-sabrelite + * SAUCE: DTB: build beaglexm + * SAUCE: DTB: build panda/panda es + * [Config] disable CPU_FREQ + * [Config] PANEL_TFP410=y (video DVI output) + * [Config] SND_OMAP_SOC*=y + * [Config] SND_IMX_SOC*=y + * [Config] I2C_IMX=y + * [Config] SPI_IMX=m + + [ Stefan Bader ] + + * [Config] Move 9p modules into generic package + - LP: #1107658 + + [ Tony Lindgren ] + + * SAUCE: ARM: OMAP2+: Limit omap initcalls to omap only on multiplatform + kernels + * SAUCE: ARM: OMAP2+: Use omap initcalls + * SAUCE: ARM: OMAP: Fix i2c cmdline initcall for multiplatform + * SAUCE: ARM: OMAP: Fix dmaengine init for multiplatform + * SAUCE: ARM: OMAP2+: Add multiplatform debug_ll support + * SAUCE: ARM: OMAP2+: Disable code that currently does not work with + multiplaform + * SAUCE: ARM: OMAP2+: Enable ARCH_MULTIPLATFORM support + * SAUCE: ARM: OMAP2+: Add minimal support for booting vexpress + * SAUCE: ARM: OMAP2+: Remove now obsolete uncompress.h and debug-macro.S + + [ Upstream Kernel Changes ] + + * rebase to v3.8-rc5 + - LP: #1096789 + + -- Leann Ogasawara Thu, 31 Jan 2013 06:44:52 -0800 + +linux (3.8.0-2.6) raring; urgency=low + + [ Adam Conrad ] + + * Fix up linux-tools -> SRCPKGNAME-tools rename + + [ Andy Whitcroft ] + + * [Config] re-disable CONFIG_SOUND_OSS + - LP: #1105230 + + [ Arend van Spriel ] + + * SAUCE: brcmsmac: fix tx status processing + + [Leann Ogasawara] + + * Release Tracking Bug + - LP: #1105104 + + -- Leann Ogasawara Fri, 25 Jan 2013 11:56:30 -0800 + +linux (3.8.0-1.5) raring; urgency=low + + [Tim Gardner] + + * Release Tracking Bug + - LP: #1101235 + + [ Dudley Du ] + + * SAUCE: Input: add support for Cypress PS/2 Trackpads + - LP: #978807 + + [ Kamal Mostafa ] + + * SAUCE: Input: increase struct ps2dev cmdbuf[] to 8 bytes + * SAUCE: Input: Cypress PS/2 Trackpad simulated multitouch + * [Config] Add CONFIG_PS2_CYPRESS + + [ Tim Gardner ] + + * rebase to v3.8-rc4 + + [ Upstream Kernel Changes ] + + * rebase to v3.8-rc4 + - LP: #1095315 + - LP: #886975 + - LP: #1086921 + + -- Leann Ogasawara Thu, 17 Jan 2013 10:50:22 -0800 + +linux (3.8.0-0.4) raring; urgency=low + + [ Leann Ogasawara ] + + * [Config] Update CONFIG_TOUCHSCREEN_EGALAX build annotation + * [Config] Update CONFIG_IIO build annotation + * [Config] Update CONFIG_TOUCHSCREEN_EETI annotation + * [Config] Remove CONFIG_SPI_DW_MMIO annotation + * [Config] Remove CONFIG_SPI_PL022 annotation + * [Config] Update CONFIG_EZX_PCAP annotation + * [Config] Update CONFIG_SENSORS_AK8975 annotation + * [Config] Disable CONFIG_DRM_MGAG200 + - LP: #1042903 + + -- Leann Ogasawara Mon, 14 Jan 2013 10:01:50 -0800 + +linux (3.8.0-0.3) raring; urgency=low + + [ Andy Whitcroft ] + + * Revert "SAUCE: (no-up) trace: add trace events for open(), exec() and + uselib()" + + [ Scott James Remnant ] + + * SAUCE: (no-up) trace: add trace events for open(), exec() and uselib() + (for v3.7+) + - LP: #1085766, #462111 + + -- Andy Whitcroft Fri, 11 Jan 2013 16:57:27 +0000 + +linux (3.8.0-0.2) raring; urgency=low + + [ Tim Gardner ] + + * [packaging] Add macro to selectively disable building perf + * [packaging] Cannot depend on universe package libaudit-dev + + -- Tim Gardner Thu, 10 Jan 2013 12:43:24 -0700 + +linux (3.8.0-0.1) raring; urgency=low + + + [ Upstream Kernel Changes ] + + * rebase to v3.8-rc3 + - LP: #1096789 + + [ Upstream Kernel Changes ] + + * rebase to v3.8-rc2 + - LP: #1082357 + - LP: #1075882 + + -- Andy Whitcroft Mon, 17 Dec 2012 10:35:09 +0000 + +linux (3.7.0-7.15) raring; urgency=low + + [ Chris J Arges ] + + * SAUCE: add eeprom_bad_csum_allow module parameter + - LP: #1070182 + + [ Leann Ogasawara ] + + * Add ceph to linux-image for virtual instances + - LP: #1063784 + + [ Serge Hallyn ] + + * SAUCE: net: dev_change_net_namespace: send a KOBJ_REMOVED/KOBJ_ADD + + [ Tim Gardner ] + + * [Config] CONFIG_SLUB_DEBUG=y + - LP: #1090308 + + [ Upstream Kernel Changes ] + + * Revert "[SCSI] sd: Implement support for WRITE SAME" + - LP: #1089818 + + -- Leann Ogasawara Wed, 12 Dec 2012 06:50:20 -0800 + +linux (3.7.0-6.14) raring; urgency=low + + [ Andy Whitcroft ] + + * [Config] annotations: all new annotations scheme including defaults + * [Configs] apply annotation updates to main configs (top section) + + [ Leann Ogasawara ] + + * Revert "SAUCE: include and for mmc_core arm + build" + * Revert "SAUCE: [arm] fixup __aeabi_uldivmod undefined build error" + * Temporarily disable module check for build + + [ Stefan Bader ] + + * ubuntu: dm-raid45: Adapt to upstream interface changes + * Re-enable build of dm-raid45 + + [ Tim Gardner ] + + * SAUCE: Moved scripts/fw-to-ihex.sh to debian/scripts/misc + * SAUCE: ACPICA: Fix ACPI mutex object allocation memory leak on error + * SAUCE: drm: Fix possible EDID memory allocation oops + * SAUCE: ttm: Fix possible _manager memory allocation oops + * SAUCE: iwlwifi: iwlagn_request_scan: Fix check for priv->scan_request + * SAUCE: i915: intel_set_mode: Reduce stack allocation from 500 bytes to + 2 pointers + + [ Tomas Hozza ] + + * SAUCE: tools: hv: Netlink source address validation allows DoS + - LP: #1084777 + - CVE-2012-5532 + + [ Upstream Kernel Changes ] + + * rebase to v3.7 + + -- Leann Ogasawara Wed, 05 Dec 2012 14:11:12 -0800 + +linux (3.7.0-5.13) raring; urgency=low + + [ Lino Sanfilippo ] + + * SAUCE: inotify, fanotify: replace fsnotify_put_group() with + fsnotify_destroy_group() + - LP: #922906 + * SAUCE: fsnotify: introduce fsnotify_get_group() + - LP: #922906 + * SAUCE: fsnotify: use reference counting for groups + - LP: #922906 + * SAUCE: fsnotify: take groups mark_lock before mark lock + - LP: #922906 + * SAUCE: fanotify: add an extra flag to mark_remove_from_mask that + indicates wheather a mark should be destroyed + - LP: #922906 + * SAUCE: fsnotify: use a mutex instead of a spinlock to protect a groups + mark list + - LP: #922906 + * SAUCE: fsnotify: pass group to fsnotify_destroy_mark() + - LP: #922906 + * SAUCE: fsnotify: introduce locked versions of fsnotify_add_mark() and + fsnotify_remove_mark() + - LP: #922906 + * SAUCE: fsnotify: dont put marks on temporary list when clearing marks + by group + - LP: #922906 + * SAUCE: fsnotify: change locking order + - LP: #922906 + + [ Tim Gardner ] + + * [Config] CONFIG_NFC_LLCP=y + * [Config] get-firmware: Filter new files through fwinfo + * [Config] CONFIG_MTD_NAND_DOCG4=m for all arches + * [Config] CONFIG_DRM_EXYNOS_HDMI=y + * [Config] CONFIG_XEN=y for all arches + * [Config] CONFIG_SND_OMAP_SOC_ZOOM2=m + * [Config] CONFIG_MMC_DW_EXYNOS=m + * [Config] CONFIG_GPIO_ADNP=m + * [Config] find-obsolete-firmware: Use correct path + * rebase to v3.7-rc8 + - LP: #1084640 + + [ Upstream Kernel Changes ] + + * Revert "VFS: don't do protected {sym,hard}links by default" + - LP: #1084192 + + -- Tim Gardner Wed, 28 Nov 2012 16:07:08 +0000 + +linux (3.7.0-4.12) raring; urgency=low + + [ Tim Gardner ] + + * Revert "[Config] Use -j1 for headers_install" + * Revert "[Config] install-arch-headers needs a valid config" + Strayed into the weeds in search of the root cause of the periodic + build failure. + Fixes powerpc FTBS introduced in -4.11. + * [Config] hmake -j1 + The kernel makefile appears to have parallel dependency + problems for the install_headers target. This appears to be root + cause for a periodic build failure on N-way machines. + + -- Leann Ogasawara Tue, 27 Nov 2012 12:33:06 -0800 + +linux (3.7.0-4.11) raring; urgency=low + + [ Tim Gardner ] + + * [Config] Use -j1 for headers_install + Also fixes a powerpc FTBS introduced by + "[Config] install-arch-headers needs a valid config". + + -- Tim Gardner Tue, 27 Nov 2012 10:19:30 -0700 + +linux (3.7.0-4.10) raring; urgency=low + + [ Andy Whitcroft ] + + * [Config] add rebuild-test support for autopkgtest + - LP: #1081500 + * [tests] move build tests out of the way + - LP: #1081500 + * [tests] add an autopkgtest rebuild test + - LP: #1081500 + + [ Tim Gardner ] + + * rebase to v3.7-rc7 + * SAUCE: Remove emi62 files duplicated in linux-firmware + * SAUCE: Remove sb16 files duplicated in linux-firmware + * SAUCE: Remove whiteheat files duplicated in linux-firmware + * SAUCE: Remove yamaha files duplicated in linux-firmware + * SAUCE: Remove dsp56k files used only by m68k + * SAUCE: firmware: Remove last vestiges of dabusb + * SAUCE: Remove vicam files duplicated in linux-firmware + * [Config] install-arch-headers needs a valid config + + [ Upstream Kernel Changes ] + + * rebase to v3.7-rc7 + - LP: #1076840 + - LP: #1081466 + + -- Leann Ogasawara Wed, 21 Nov 2012 06:07:23 -0800 + +linux (3.7.0-3.9) raring; urgency=low + + [ Leann Ogasawara ] + + * [Config] Enable CONFIG_X86_CPUFREQ_NFORCE2=y + - LP: #1079900 + * Add nfsv3 to nfs-modules udeb + + [ Paolo Pisati ] + + * [Config] SND_OMAP_SOC*=y + - LP: #1019321 + + [ Stefan Bader ] + + * SAUCE: (no-up) xen/netfront: handle compound page fragments on transmit + - LP: #1078926 + + [ Tim Gardner ] + + * Revert "SAUCE: SECCOMP: audit: always report seccomp violations" + - LP: #1079469 + * Revert "SAUCE: omap3 clocks .dev_id = NULL" + * rebase to v3.7-rc6 + * SAUCE: script to detect obsolete firmware + * SAUCE: Remove yam files duplicated in linux-firmware + * SAUCE: Remove tehuti files duplicated in linux-firmware + * SAUCE: Remove matrox files duplicated in linux-firmware + * SAUCE: Remove cxgb3 files duplicated in linux-firmware + * SAUCE: Remove r128 files duplicated in linux-firmware + * SAUCE: Remove acenic files duplicated in linux-firmware + * SAUCE: Remove keyspan files duplicated in linux-firmware + * SAUCE: Remove sun files duplicated in linux-firmware + * SAUCE: Remove radeon files duplicated in linux-firmware + * SAUCE: Update bnx2x firmware to 7.8.2.0 + * [Config] generic.inclusion-list: econet has disappeared + + [ Upstream Kernel Changes ] + + * seccomp: forcing auditing of kill condition + - LP: #1079469 + * rebase to v3.7-rc6 + + -- Leann Ogasawara Tue, 20 Nov 2012 12:28:55 -0800 + +linux (3.7.0-2.8) raring; urgency=low + + [ Andy Whitcroft ] + + * Revert "overlayfs: disable until FTBS is fixed" + * Revert "ubuntu: overlayfs" + * Revert "ubuntu: AUFS" + * ubuntu: overlayfs -- overlayfs: add statfs support + * ubuntu: overlayfs -- ovl: switch to __inode_permission() + * ubuntu: overlayfs -- overlayfs: copy up i_uid/i_gid from the underlying + inode + - LP: #944386 + * ubuntu: AUFS (no-squash): basic framework and update machinary + * ubuntu: AUFS (no-squash) -- aufs3-base.patch + * ubuntu: AUFS (no-squash) -- aufs3-standalone.patch + * ubuntu: AUFS: aufs-update -- follow the uapi header changes + * ubuntu: AUFS -- update to f2873474324d0a31af4340554b9715f51331bc7f + * ubuntu: AUFS (no-squash) -- reenable + - LP: #1079193 + + [ Erez Zadok ] + + * ubuntu: overlayfs -- overlayfs: implement show_options + + [ Miklos Szeredi ] + + * ubuntu: overlayfs -- vfs: add i_op->dentry_open() + * ubuntu: overlayfs -- vfs: export do_splice_direct() to modules + * ubuntu: overlayfs -- vfs: introduce clone_private_mount() + * ubuntu: overlayfs -- overlay filesystem + * ubuntu: overlayfs -- fs: limit filesystem stacking depth + * ubuntu: overlayfs -- vfs: export __inode_permission() to modules + + [ Neil Brown ] + + * ubuntu: overlayfs -- overlay: overlay filesystem documentation + + [ Robin Dong ] + + * ubuntu: overlayfs -- overlayfs: fix possible leak in ovl_new_inode + * ubuntu: overlayfs -- overlayfs: create new inode in ovl_link + + -- Andy Whitcroft Thu, 15 Nov 2012 13:35:12 +0000 + +linux (3.7.0-1.7) raring; urgency=low + + [ Tim Gardner ] + + * [Config] Drop dependency on libaudit-dev + Its a universe package which causes an FTBS on the builders. + libaudit-dev is not strictly required for the perf tools build. + + -- Tim Gardner Wed, 14 Nov 2012 10:08:13 -0700 + +linux (3.7.0-1.6) raring; urgency=low + + [ Andy Whitcroft ] + + * [Config] enforce -- switch CONFIG_NVRAM to more readable form + * [Config] better encode the CONFIG_NVRAM constaint + * enforcer -- fix debugging output + + [ Ben Collins ] + + * [Config] Add custom_override rule to allow for alternate kernel + file/install + * [Config] Use SRCPKGNAME as prefix for indep linux headers package + + [ Tim Gardner ] + + * [Config] Dropped armel + * Drop highbank from ABI fetch list + * [Config] Use dh_prep instead of 'dh_clean -k' + * [Config] Build depend on libaudit-dev, libunwind8-dev for tools + * [Config] Document binary-indep dependency chain + * rebase to v3.7-rc5 + + [ Upstream Kernel Changes ] + + * rebase to v3.7-rc5 + + -- Tim Gardner Tue, 13 Nov 2012 07:13:37 -0500 + +linux (3.7.0-0.5) raring; urgency=low + + [ Tim Gardner ] + + * [Config] CONFIG_AMD_IOMMU_V2=m + - LP: #1071520 + * [Config] CONFIG_MTD_ONENAND_SIM=n for armel + Fixes FTBS + + -- Tim Gardner Thu, 08 Nov 2012 15:45:39 -0500 + +linux (3.7.0-0.4) raring; urgency=low + + [ Ben Collins ] + + * [Config] Update enforce rule for CONFIG_NVRAM to better suit flavours + + [ Tim Gardner ] + + * [Config] do_tools=false for arm + + -- Tim Gardner Thu, 08 Nov 2012 05:39:51 -0700 + +linux (3.7.0-0.3) raring; urgency=low + + [ Tim Gardner ] + + * [Config] CONFIG_DRM_EXYNOS_HDMI=n for armhf + * [Config] CONFIG_MTD_NAND_DOCG4=n for armel/armhf + * [Config] Drop highbank harder + + -- Tim Gardner Wed, 07 Nov 2012 18:11:45 +0000 + +linux (3.7.0-0.2) raring; urgency=low + + [ Andy Whitcroft ] + + * [Config] add fs/udf to linux-image to support DVD/CD formats in virtual + instances + - LP: #1066921 + * [Config] drop highbank builds + + [ Jeremy Kerr ] + + * SAUCE: efivarfs: Implement exclusive access for {get, set}_variable + - LP: #1063061 + + [ Leann Ogasawara ] + + * Reinstate dropped.txt from Ubuntu-3.7.0-0.1-rc1 + + [ Tim Gardner ] + + * [Config] Dropped powerpc/ppc64 in favour of the community kernel + * [Config] CONFIG_MODULE_SIG=y for amd64,i386, and highbank + * rebase to v3.7-rc4 + * SAUCE: MODSIGN: Emit error for incorrectly signed module + + [ Upstream Kernel Changes ] + + * rebase to v3.7-rc4 + + -- Tim Gardner Mon, 05 Nov 2012 05:35:41 -0700 + +linux (3.7.0-0.1) raring; urgency=low + + + [ Upstream Kernel Changes ] + + * rebase to v3.7-rc3 + - LP: #1056078 + + [ Upstream Kernel Changes ] + + * rebase to v3.7-rc2 + - LP: #1060729 + - LP: #1059523 + - LP: #1006690 + - LP: #1049623 + - LP: #1046512 + - LP: #1052499 + - LP: #1037642 + - LP: #559939 + - LP: #1052460 + - LP: #939161 + - LP: #1046734 + + -- Tim Gardner Tue, 02 Oct 2012 08:13:07 -0600 + +linux (3.6.0-0.1) UNRELEASED; urgency=low + + + [ Upstream Kernel Changes ] + + * rebase to v3.6 + + [ Upstream Kernel Changes ] + + * rebase to v3.6-rc7 + + [ Upstream Kernel Changes ] + + * rebase to v3.6-rc6 + - LP: #1000424 + + [ Upstream Kernel Changes ] + + * rebase to v3.6-rc5 + - LP: #1040077 + + [ Upstream Kernel Changes ] + + * rebase to v3.6-rc4 + + [ Upstream Kernel Changes ] + + * rebase to v3.6-rc3 + - LP: #1038651 + - LP: #1034779 + + -- Leann Ogasawara Tue, 24 Jul 2012 06:37:09 -0700 + +linux (3.5.0-6.6) quantal-proposed; urgency=low + + [ Andy Whitcroft ] + + * [Config] CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION enable IPv6 + experimental features + * SAUCE: highbank -- export clock functions for modules + * [Config] highbank -- reenable CONFIG_TOUCHSCREEN_W90X900 + * [Config] highbank -- renenable CONFIG_SERIO_AMBAKMI + * [Config] highbank -- reenable CONFIG_RFKILL_GPIO + * [Config] highbank -- reenable CONFIG_MMC_SDHCI_PXAV3 + * [Config] highbank -- reenable CONFIG_MMC_SDHCI_PXAV3 + * [Config] highbank -- reenable CONFIG_KEYBOARD_SAMSUNG + * [Config] highbank -- reenable CONFIG_FB_ARMCLCD + * [Config] highbank -- reenable CONFIG_DW_DMAC + * [Config] highbank -- reenable CONFIG_USB_R8A66597_HCD + * [Config] highbank -- reenable CONFIG_USB_MV_UDC + * [Config] highbank -- reenable CONFIG_USB_DWC3 + * [Config] highbank -- reenable CONFIG_SATA_MV + * [Config] highbank -- reenable CONFIG_PATA_ARASAN_CF + * [Config] highbank -- CONFIG_CAN_C_CAN_PLATFORM + * [Config] highbank -- reenable CONFIG_MMC_ARMMMCI + * [Config] highbank -- reenable CONFIG_SERIAL_AMBA_PL010 + * [Config] highbank -- reenable CONFIG_ATMEL_PWM + * [Config] highbank -- enable CONFIG_CHECKPOINT_RESTORE + * [Config] highbank -- enable CONFIG_EXPERT + * [Config] highbank -- enable CONFIG_CHECKPOINT_RESTORE + * [Config] enable CONFIG_USB_DYNAMIC_MINORS + * [Config] enable CONFIG_USB_EHCI_TT_NEWSCHED + * [Config] enable CONFIG_USB_ETH_EEM + * [Config] enable CONFIG_USB_HCD_BCMA/CONFIG_USB_HCD_SSB + * [Config] disable CONFIG_USB_M66592 + * [Config] enable CONFIG_USB_NET2272 + * [Config] enable CONFIG_USB_R8A66597 + * [Config] annotate: CONFIG_USB_OMAP not required for our h/w + * [Config] set CONFIG_USB_MUSB_HDRC=m for omap + * [Config] annotate: CONFIG_USB_G_MULTI fix rule + * [Config] CONFIG_USB_GPIO_VBUS=m for OMAP + * [Config] Enable CONFIG_DRM_AST/_CIRRUS_QEMU/_MGAG200 + * [Config] sync configuration armhf omap -> armel omap + * [Config] annotate: CONFIG_IIO triggers build failures on OMAP4 + * [Config] disable CONFIG_OMAP_IOVMM is deprecated + + [ Bryan Wu ] + + * [Config] change default IO scheduler from CFQ to Deadline + + [ Leann Ogasawara ] + + * Revert "[Config] Temporarily disable CONFIG_MV643XX_ETH on powerpc" + * [Config] Disable CONFIG_MOUSE_INPORT + + [ Tim Gardner ] + + * SAUCE: firmware: Update bnx2x to current firmware version 7.2.51 + * [Config] Add bnx2x firmware to nic-modules udeb + * SAUCE: Add script to convert firmware to ihex format + * SAUCE: firmware: Upgrade bnx2 to current versions + * [Config] Add tigon firmware to nic-modules udeb + * [Config] CONFIG_EARLY_PRINTK_DBGP=y + - LP: #1026761 + * SAUCE: Remove redundant cis firmware + * SAUCE: Remove redundant emi26 firmware + * SAUCE: Remove redundant ttusb-budget firmware + * SAUCE: Remove redundant sun/cassini firmware + * SAUCE: Remove redundant ositech/Xilinx7OD firmware + * SAUCE: Remove redundant 3com/typhoon.bin firmware + * SAUCE: Remove redundant yamaha/ds1 firmware + * SAUCE: Remove redundant keyspan_pda firmware + * rebase to v3.5 + + [ Upstream Kernel Changes ] + + * rebase to v3.5 + - LP: #1027828 + + -- Leann Ogasawara Mon, 23 Jul 2012 05:57:04 -0700 + +linux (3.5.0-5.5) quantal-proposed; urgency=low + + [ Andy Whitcroft ] + + * [Config] annotations: initial import of configuration annotations + + [ Bryan Wu ] + + * [Config] enforcer -- add CONFIG_I2C_DESIGNWARE_PLATFORM enforce checker + + [ Leann Ogasawara ] + + * Rebase to v3.5-rc7 + + [ Manoj Iyer ] + + * SAUCE: Bluetooth: btusb: Add vendor specific ID (0a5c:21f4) BCM20702A0 + - LP: #1010281 + + [ Tim Gardner ] + + * [Config] enable CONFIG_I2C_HELPER_AUTO for all flavours as policy + expects + * [Config] CONFIG_I2O_CONFIG_OLD_IOCTL=n + * [Config] CONFIG_BRIDGE_EBT_ULOG=n + * [Config] CONFIG_IP_NF_QUEUE=n + * [Config] CONFIG_MTD_DOC2000=n + * [Config] CONFIG_PRINT_QUOTA_WARNING=n + * [Config] CONFIG_PRISM54=n + * [Config] CONFIG_SCx200_I2C=n + * [Config] CONFIG_USB_ANNOUNCE_NEW_DEVICES=y + + [ Upstream Kernel Changes ] + + * rebase to v3.5-rc7 + + -- Leann Ogasawara Mon, 16 Jul 2012 15:38:41 -0700 + +linux (3.5.0-4.4) quantal-proposed; urgency=low + + [ Andy Whitcroft ] + + * [Packaging] getabis should be extracting all packages + - LP: #1021174 + * [Config] getabis -- series uses linux-image-extra + - LP: #1021174 + * rebase to v3.5-rc6 + + [ Bryan Wu ] + + * [Config] built-in CONFIG_MICREL_PHY as other PHY drivers for all + flavours + * [Config] sync CONFIG_MOUSE_PS2_ config for all flavours + + [ Leann Ogasawara ] + + * [Config] Enable CONFIG_RT2800USB_RT35XX and CONFIG_RT2800USB_RT53XX + - LP: #1019561 + + [ Paolo Pisati ] + + * [Config] SND_OMAP_SOC, SND_OMAP_SOC_MCBSP and SND_OMAP_SOC_OMAP3_BEAGLE =y + - LP: #1019321 + + [ Stefan Bader ] + + * SAUCE: (pre-up) net: dont use __netdev_alloc_skb for bounce buffer + - LP: #1018456 + * (config) Disable ACPI_PROCFS_POWER + + [ Tim Gardner ] + + * [Config] CONFIG_ACPI_BGRT=y + * Extract firmware module info during getabi + - LP: #1021174 + + [ Upstream Kernel Changes ] + + * rebase to v3.5-rc6 + + -- Leann Ogasawara Mon, 09 Jul 2012 08:50:20 -0700 + +linux (3.5.0-3.3) quantal-proposed; urgency=low + + [ Andy Whitcroft ] + + * [Config] enable CONFIG_MEMTEST=y + - LP: #1004535 + * [Config] config-check: add support for a cut operation + * [Config] enforcer -- switch to cut where appropriate + + [ Leann Ogasawara ] + + * Rebase to v3.5-rc5 + * [Config] Updateconfigs after rebase to v3.5-rc5 + + [ Luis Henriques ] + + * SAUCE: ocfs2: Fix NULL pointer dereferrence in + __ocfs2_change_file_space + - LP: #1006012 + + [ Seth Forshee ] + + * SAUCE: (drop after 3.5) drm/i915: ignore pipe select bit when checking + for LVDS register initialization + - LP: #1012800 + + [ Upstream Kernel Changes ] + + * rebase to v3.5-rc5 + - LP: #1013183 + - LP: #1017017 + - LP: #884652 + + -- Leann Ogasawara Mon, 02 Jul 2012 06:41:58 -0700 + +linux (3.5.0-2.2) quantal-proposed; urgency=low + + [ Andy Whitcroft ] + + * rebase to v3.5-rc4 + + [ Arend van Spriel ] + + * SAUCE: (drop after 3.5) brcmsmac: fix NULL pointer crash in + brcms_c_regd_init() + - LP: #950320 + + [ Bryan Wu ] + + * [Config] Sync CONFIG_CGROUP_MEM_RES_CTLR_SWAP for ARM + + [ Chris J Arges ] + + * PACKAGING: add .gnu_debuglink sections to .ko files + - LP: #669641 + + [ Leann Ogasawara ] + + * d-i: Add hid-generic to input-modules + - LP: #1017879 + + [ Ming Lei ] + + * SAUCE: Revert "mmc: omap_hsmmc: Enable Auto CMD12" + - LP: #1017717, #225 + + [ Paolo Pisati ] + + * SAUCE: Revert "Fix OMAP EHCI suspend/resume failure (i693)" + - LP: #1017718 + * [Config] Disable generic USB_EHCI_HCD_PLATFORM on omap3 + + [ Seth Forshee ] + + * SAUCE: (drop after 3.5) brcm80211: smac: don't set up tx power limits + during initialization + - LP: #950320 + * SAUCE: (drop after 3.5) brcm80211: smac: always set channel specified + by mac80211 + - LP: #950320 + * SAUCE: (drop after 3.5) brcm80211: smac: remove unused code for 40MHz + channels + - LP: #950320 + * SAUCE: (drop after 3.5) brcm80211: smac: clean up channel.c + - LP: #950320 + * SAUCE: (drop after 3.5) brcm80211: smac: inform mac80211 of the X2 + regulatory domain + - LP: #950320 + * SAUCE: (drop after 3.5) brcm80211: smac: enable/disable radio on + regulatory updates + - LP: #950320 + * SAUCE: (drop after 3.5) brcm80211: smac: use mac80211 channel data for + tx power limits + - LP: #950320 + * SAUCE: (drop after 3.5) brcm80211: smac: don't validate channels + against internal regulatory data + - LP: #950320 + * SAUCE: (drop after 3.5) brcm80211: smac: use current regulatory domain + when checking whether OFDM is allowed + - LP: #950320 + + [ Tim Gardner ] + + * [Config] Enable CONFIG_CGROUPS for highbank + - LP: #1014692 + * [Config] FB_OMAP*=y and PANEL_TFP410=y + + [ Upstream Kernel Changes ] + + * rebase to v3.5-rc4 + + -- Leann Ogasawara Tue, 26 Jun 2012 06:21:05 -0700 + +linux (3.5.0-1.1) quantal-proposed; urgency=low + + [ Andy Whitcroft ] + + * [Config] highbank -- enable CONFIG_RFKILL=y and CONFIG_CAN=m + + [ Leann Ogasawara ] + + * Rebase to v3.5-rc1 + * [Config] Remove USB_DEVICEFS from the config enforcer + * [Config] Updateconfigs after rebase to v3.5-rc1 + * [Config] Temporarily disable CONFIG_MACH_NOKIA_RX51 on arm + * [Config] Temporarily disable CONFIG_TOUCHSCREEN_EETI on arm + * [Config] Temporarily disable CONFIG_TOUCHSCREEN_EGALAX on arm + * [Config] Temporarily disable CONFIG_EZX_PCAP on arm + * [Config] Temporarily disable CONFIG_LIS3L02DQ on arm + * [Config] Temporarily disable CONFIG_TI_CPSW on arm + * [Config] Temporarily disable CONFIG_GPIO_EM on arm + * [Config] Temporarily disable CONFIG_SERIAL_8250_EM on armhf + * [Config] Temporarily disable CONFIG_STMMAC_ETH on armhf + * [Config] Temporarily disable CONFIG_HW_RANDOM_ATMEL on armhf + * Rebase to v3.5-rc2 + * [Config] Updateconfigs after rebase to v3.5-rc2 + * [Config] Temporarily disable CONFIG_MV643XX_ETH on powerpc + * Rebase to v3.5-rc3 + * [Config] Updateconfigs after rebase to v3.5-rc3 + + [ Paul Mundt ] + + * SAUCE: fix bug.h's inclusion of kernel.h + + [ Stefan Bader ] + + * SAUCE: Fix compile failures of dm-raid45 + * [Config] Enable dm-raid45 + * Move dependency on crda to extra package + - LP: #657901 + * SAUCE: Mask CR4 writes on older Xen hypervisors + + [ Upstream Kernel Changes ] + + * rebase to v3.5-rc3 + - LP: #993162 + - LP: #925577 + * rebase to v3.5-rc2 + * rebase to v3.5-rc1 + - LP: #955892 + - LP: #978038 + - LP: #987371 + - LP: #929545 + - LP: #942316 + - LP: #903853 + + -- Leann Ogasawara Fri, 08 Jun 2012 14:28:46 -0700 + +linux (3.4.0-5.11) quantal-proposed; urgency=low + + [ Leann Ogasawara ] + + * [Config] Disable CONFIG_ARM_LPAE + - LP: #1009061 + + [ Oleksij Rempel ] + + * SAUCE: b43: do not call ieee80211_unregister_hw if we are not registred + - LP: #1008905 + + [ Paolo Pisati ] + + * [Config] omap3: MFD_OMAP_USB_HOST is usb host in omap2+. + - LP: #1009061 + + -- Leann Ogasawara Tue, 05 Jun 2012 08:06:28 -0700 + +linux (3.4.0-4.10) quantal; urgency=low + + [ Leann Ogasawara ] + + * Temporarily disable ABI and module check + + -- Leann Ogasawara Mon, 04 Jun 2012 20:27:31 -0700 + +linux (3.4.0-4.9) quantal; urgency=low + + [ Andy Whitcroft ] + + * [Config] fix config split to avoid the shared config + * [Config] updateconfigs following split config fix + * [Config] linux-image-extras needs full postinst + * [Config] CONFIG_BLK_DEV_NVME commonise across architectures + * [Config] CONFIG_HP_WATCHDOG enable as module + * [Config] CONFIG_PDC_ADMA is not boot essential + * [Config] CONFIG_XEN_ACPI_PROCESSOR should be enabled on x86 + * [Config] CONFIG_VT6655/CONFIG_VT6656=m + * [Config] CONFIG_TRANZPORT=m commonise + * [Config] CONFIG_R3964=m commonise + * [Config] CONFIG_SCSI_DH=m commonise + * [Config] CONFIG_SCSI_IBMVSCSIS=m commonise + * [Config] CONFIG_AMD_PHY=y phys are not autoloadable + * [Config] CONFIG_SCSI_QLA_ISCSI=m commonise + * [Config] CONFIG_SCSI_SPI_ATTR=m commonise + * [Config] CONFIG_USB_SN9C102 is deprecated disable + * [Config] CONFIG_USB_SI470X=m commonise + * [Config] CONFIG_USB_ET61X251=m commonise + * [Config] CONFIG_RTS_PSTOR=m commonise + * [Config] CONFIG_SCANLOG=m commonise + * [Config] CONFIG_SCSI_SYM53C8XX_2=m commonise + * [Config] CONFIG_SM_FTL=m commonise + * [Config] CONFIG_SOLO6X10=m commonise + * [Config] CONFIG_SND_PCM_OSS=n using pulseaudio emulation instead + * [Config] CONFIG_SPI_DESIGNWARE=m commonise + * [Config] CONFIG_SPI_SPIDEV=m commonise + * [Config] CONFIG_TABLET_USB_WACOM=m commonise + * [Config] CONFIG_TPS65010=m commonise + * [Config] CONFIG_STE10XP=y commonise + * [Config] CONFIG_X25_ASY=m commonise + * [Config] CONFIG_USB_MON=m commonise + * [Config] CONFIG_VME_BUS=m commonise + * [Config] CONFIG_W35UND=m commonise + * [Config] -CONFIG_TCG_TPM=y commonise + * [Config] highbank -- commonise filesystems + * [Config] highbank -- commonise subsystems + * [Config] highbank -- commonise network protocols + * [Config] highbank -- commonise input drivers + * [Config] highbank -- commonise CRYPTO options + * [Config] highbank -- commonise HID options + * [Config] highbank -- commonise sensors options + * [Config] highbank -- commonise EXPORTFS/FHANDLE + * [Config] highbank -- commonise CONFIG_CRYPTO_LZO + * [Config] highbank -- commonise ENCRYPTED_KEYS + * [Config] highbank -- commonise CONFIG_ATALK + * [Config] highbank -- commonise INET/INET6 + * [Config] highbank -- commonise NLS + * [Config] highbank -- commonise BLK/CHR + * [Config] highbank -- CONFIG_EXT2_FS=y boot essential on highbank + * [Config] highbank -- commonise INET/INET6 part 2 + * [Config] highbank -- commonise PHY settings + * [Config] highbank -- commonise CRC settings + * [Config] highbank -- commonise BINFMT settings + * [Config] highbank -- commonise DM settings + * [Config] highbank -- commonise RTC_DRV settings + * [Config] highbank -- commonise KEYBOARD/MOUSE settings + * [Config] highbank -- commonise USB settings + * [Config] highbank -- commonise GPIO settings + * [Config] highbank -- commonise I2C settings + * [Config] highbank -- commonise numerous subsystem selectors + * [Config] highbank -- commonise A-C modules missmatches + * [Config] highbank -- commonise D-F modules missmatches + * [Config] CONFIG_AUDIT_LOGINUID_IMMUTABLE incompatible with upstart + * [Config] highbank -- commonise G-I modules missmatches + * [Config] highbank -- commonise J-L modules missmatches + * [Config] highbank -- commonise M modules missmatches + * [Config] highbank -- commonise N-P modules missmatches + * [Config] highbank -- commonise Q-R modules missmatches + * [Config] highbank -- commonise S modules missmatches -- part 1 + * [Config] highbank -- commonise S modules missmatches -- part 2 + * [Config] highbank -- commonise T modules missmatches + * [Config] highbank -- commonise U-Z modules missmatches + + [ Ike Panhc ] + + * [Config] add highbank flavour + - LP: #1000831 + + [ Mark Langsdorf ] + + * SAUCE: arm highbank: add support for pl320-ipc driver + - LP: #1000831 + + [ Rob Herring ] + + * SAUCE: input: add a key driver for highbank + - LP: #1000831 + * SAUCE: ARM: highbank: Add smc calls to enable/disable the L2 + - LP: #1000831 + * SAUCE: force DMA buffers to non-bufferable on highbank + - LP: #1000831 + * SAUCE: net: calxedaxgmac: fix net timeout recovery + - LP: #1000831 + + [ Tim Gardner ] + + * [Config] CONFIG_IWLWIFI_EXPERIMENTAL_MFP=n + * [Config] CONFIG_PCI_REALLOC_ENABLE_AUTO=y + * [Config] CONFIG_CIFS_EXPERIMENTAL has disappeared + * [Config] Homogenize CIFS configs across all arches + * [Config] armhf should not be skipabi or skipmodules + - LP: #1006913 + + -- Leann Ogasawara Mon, 04 Jun 2012 05:52:49 -0700 + +linux (3.4.0-3.8) quantal; urgency=low + + [ Andy Whitcroft ] + + * [Config] include include/generated/compile.h + - LP: #942569 + * [Config] fix up postinst to ensure we know which error is which + - LP: #1002388 + + [ Herton Ronaldo Krzesinski ] + + * SAUCE: async_populate_rootfs: fix build warnings + - LP: #1003417 + + [ John Johansen ] + + * Revert "SAUCE: AppArmor: Add the ability to mediate mount" + * SAUCE: apparmor: Add the ability to mediate mount + * SAUCE: AppArmor: basic networking rules + * SAUCE: apparmor: fix profile lookup for unconfined + - LP: #978038, #987371 + * SAUCE: apparmor: fix long path failure due to disconnected path + - LP: #955892 + + [ Mario Limonciello ] + + * SAUCE: dell-laptop: rfkill blacklist Dell XPS 13z, 15 + - LP: #901410 + + [ Stefan Bader ] + + * (config) Built-in xen-acpi-processor + + [ Tim Gardner ] + + * [Config] CONFIG_NET_DSA=m + - LP: #1004148 + * [Config] Ensure CONFIG_XEN_ACPI_PROCESSOR=y for amd64 + + -- Leann Ogasawara Fri, 25 May 2012 11:38:33 -0700 + +linux (3.4.0-3.7) quantal; urgency=low + + [ Andy Whitcroft ] + + * [Config] drop the virtual flavour in favour of a split generic et al + * [Config] enforcer -- drop IDLE enforcement + * [Config] enable CONFIG_SCSI_VIRTIO=m for amd64 + * [Config] updateconfigs following removal of -virtual + + [ Leann Ogasawara ] + + * Rebase to v3.4 + + [ Seth Forshee ] + + * [Config] disable CONFIG_B43_BCMA_EXTRA + + [ Tim Gardner ] + + * [Config] Check for extras when building udebs + * [Config] Collapsed generic-pae into generic [i386] + + [ Upstream Kernel Changes ] + + * rebase to v3.4 + + -- Leann Ogasawara Mon, 21 May 2012 07:23:47 -0700 + +linux (3.4.0-2.6) quantal; urgency=low + + [ Andy Whitcroft ] + + * Revert "ubuntu: overlayfs -- overlayfs: update touch_atime() usage" + * Revert "ubuntu: overlayfs -- overlayfs: switch from d_alloc_root() to + d_make_root()" + * Revert "ubuntu: overlayfs -- overlayfs: follow header cleanup" + * Revert "ubuntu: overlayfs -- overlayfs: apply device cgroup and + security permissions to overlay files" + * Revert "ubuntu: overlayfs -- fs: limit filesystem stacking depth" + * Revert "ubuntu: overlayfs -- overlay: overlay filesystem documentation" + * Revert "ubuntu: overlayfs -- overlayfs: implement show_options" + * Revert "ubuntu: overlayfs -- overlayfs: add statfs support" + * Revert "ubuntu: overlayfs -- overlay filesystem" + * Revert "ubuntu: overlayfs -- vfs: introduce clone_private_mount()" + * Revert "ubuntu: overlayfs -- vfs: export do_splice_direct() to modules" + * Revert "ubuntu: overlayfs -- vfs: add i_op->open()" + * Revert "ubuntu: overlayfs -- vfs: pass struct path to __dentry_open()" + * ubuntu: overlayfs -- overlayfs: add statfs support + * ubuntu: overlayfs -- inode_only_permission: export inode level + permissions checks + * ubuntu: overlayfs -- overlayfs: switch to use inode_only_permissions + + [ Erez Zadok ] + + * ubuntu: overlayfs -- overlayfs: implement show_options + + [ Miklos Szeredi ] + + * ubuntu: overlayfs -- vfs: pass struct path to __dentry_open() + * ubuntu: overlayfs -- vfs: add i_op->open() + * ubuntu: overlayfs -- vfs: export do_splice_direct() to modules + * ubuntu: overlayfs -- vfs: introduce clone_private_mount() + * ubuntu: overlayfs -- overlay filesystem + * ubuntu: overlayfs -- fs: limit filesystem stacking depth + + [ Neil Brown ] + + * ubuntu: overlayfs -- overlay: overlay filesystem documentation + + [ Robin Dong ] + + * ubuntu: overlayfs -- overlayfs: fix possible leak in ovl_new_inode + * ubuntu: overlayfs -- overlayfs: create new inode in ovl_link + + [ Tim Gardner ] + + * [Config] perarch and indep tools builds need separate build directories + * Prevent upgrading a non-PAE CPU + * perf is not parallel build safe + + -- Leann Ogasawara Wed, 16 May 2012 08:43:18 -0700 + +linux (3.4.0-2.5) quantal; urgency=low + + [ Andy Whitcroft ] + + * [Config] perarch and indep tools builds need separate build directories + + [ Tim Gardner ] + + * Prevent upgrading a non-PAE CPU + * [Config] build debug + * [Config] perf tools are not parallel build safe + + -- Leann Ogasawara Tue, 15 May 2012 11:37:53 -0700 + +linux (3.4.0-2.4) quantal; urgency=low + + [ Leann Ogasawara ] + + * Revert "SAUCE: fsam7400: use UMH_WAIT_PROC consistently" + * Revert "ubuntu: fsam7400 select CHECK_SIGNATURE and depend on X86" + * Revert "ubuntu: fsam7400: Depend on CHECK_SIGNATURE" + * Revert "ubuntu: fsam7400 -- Cleanup Makefile" + * Revert "ubuntu: fsam7400 -- kill switch for Fujitsu Siemens Amilo M + 7400" + * Revert "ubuntu: omnibook: fix source file newline" + * Revert "ubuntu: omnibook -- update BOM" + * Revert "SAUCE: Make CONFIG_{OMNIBOOK, AVERATEC_5100P, PACKARDBELL_E5} + depend on X86" + * Revert "ubuntu: omnibook -- Added missing BOM file" + * Revert "ubuntu: omnibook -- support Toshiba (HP) netbooks" + * Revert "ubuntu: nx-emu - i386: mmap randomization for executable + mappings" + * Revert "SAUCE: disable_nx should not be in __cpuinitdata section for + X86_32" + * Revert "ubuntu: nx-emu - i386: NX emulation" + * Revert "ubuntu: rfkill drivers -- version 1.3" + * Temporarily disable module check + * [Config] Remove CONFIG_FSAM7400 + * [Config] Remove CONFIG_OMNIBOOK + * [Config] Update configs + * Rebase to v3.4-rc7 + * SAUCE: genirq: export handle_edge_irq() and irq_to_desc() + + [ Tim Gardner ] + + * Updated generic-pae description + * Rebase to v3.4-rc6 + * install-tools depends on build targets + + [ Upstream Kernel Changes ] + + * kconfig: in debug mode some 0 length message prints occur + * rebase to v3.4-rc7 + * rebase to v3.3-rc6 + + -- Leann Ogasawara Mon, 14 May 2012 08:22:56 -0700 + +linux (3.4.0-1.3) quantal; urgency=low + + [ Andy Whitcroft ] + + * [Config] control.stub is an intermediate product not a dependancy + - LP: #992414 + + [ Leann Ogasawara ] + + * remove i386 generic from getabis + + [ Upstream Kernel Changes ] + + * (pre-stable) b43: only reload config after successful initialization + - LP: #950295 + + -- Leann Ogasawara Wed, 02 May 2012 09:48:14 -0700 + +linux (3.4.0-1.2) quantal; urgency=low + + [ Andy Whitcroft ] + + * [Config] add build depends for flex, bison and pkg-config + + -- Andy Whitcroft Tue, 01 May 2012 13:15:41 +0100 + +linux (3.4.0-1.1) quantal; urgency=low + + [ Andy Whitcroft ] + + * ubuntu: overlayfs -- overlayfs: apply device cgroup and security + permissions to overlay files + - LP: #915941, #918212 + - CVE-2012-0055 + + [ Leann Ogasawara ] + + * Open Q + * Rebase to v3.4-rc5 + * [Config] Temporarily disable CONFIG_TOUCHSCREEN_EETI on arm + * [Config] Temporarily disable CONFIG_TOUCHSCREEN_EGALAX on arm + * [Config] Temporarily disable CONFIG_EZX_PCAP on arm + * [Config] Temporarily disable CONFIG_MFD_OMAP_USB_HOST on arm + * [Config] Temporarily disable CONFIG_LIS3L02DQ on arm + * [Config] Temporarily disable CONFIG_USB_EHCI_HCD_PLATFORM on arm + * [Config] Temporarily disable CONFIG_TI_CPSW on arm + * [Config] Temporarily disable CONFIG_AX88796 on arm + + [ Upstream Kernel Changes ] + + * vfs: pass struct path to __dentry_open() + * vfs: add i_op->open() + * vfs: export do_splice_direct() to modules + * vfs: introduce clone_private_mount() + * overlay filesystem + * overlayfs: add statfs support + * overlayfs: implement show_options + * overlay: overlay filesystem documentation + * fs: limit filesystem stacking depth + * overlayfs: follow header cleanup + * overlayfs: switch from d_alloc_root() to d_make_root() + * overlayfs: update touch_atime() usage + * rebase to v3.4-rc5 + - LP: #950490 + * rebase to v3.4-rc4 + * rebase to v3.4-rc3 + * rebase to v3.4-rc2 + * rebase to v3.4-rc1 + * rebase to v3.3 + * rebase to v3.3-rc7 + * rebase to v3.3-rc6 + * rebase to v3.3-rc5 + * rebase to v3.3-rc4 + - LP: #900802 + - LP: #930842 + * rebase to v3.3-rc3 + - LP: #924320 + - LP: #923316 + - LP: #923409 + - LP: #918254 + * rebase to v3.3-rc2 + * rebase to v3.3-rc1 + - LP: #795823 + - LP: #909419 + - LP: #910792 + - LP: #878701 + - LP: #724831 + + -- Leann Ogasawara Wed, 25 Jan 2012 06:50:04 -0800 + +linux (3.2.0-10.18) precise; urgency=low + + [ Tim Gardner ] + + * SAUCE: ecryptfs: Print inode on metadata error + + [ Upstream Kernel Changes ] + + * Revert "proc: enable writing to /proc/pid/mem" + - LP: #919115 + - CVE-2012-0056 + * (pre-stable) ALSA: HDA: Use LPIB position fix for Macbook Pro 7, 1 + - LP: #909419 + + -- Andy Whitcroft Tue, 24 Jan 2012 10:15:12 +0000 + +linux (3.2.0-10.17) precise; urgency=low + + [ Andy Whitcroft ] + + * Revert "SAUCE: overlayfs -- fs: limit filesystem stacking depth" + * Revert "SAUCE: overlayfs -- overlay: overlay filesystem documentation" + * Revert "SAUCE: overlayfs -- overlayfs: implement show_options" + * Revert "SAUCE: overlayfs -- overlayfs: add statfs support" + * Revert "SAUCE: overlayfs -- overlay filesystem" + * Revert "SAUCE: overlayfs -- vfs: introduce clone_private_mount()" + * Revert "SAUCE: overlayfs -- vfs: export do_splice_direct() to modules" + * Revert "SAUCE: overlayfs -- vfs: add i_op->open()" + * ensure debian/ is not excluded from git by default + * add new scripting to handle buglinks in rebases + * ubuntu: overlayfs -- overlayfs: add statfs support + * ubuntu: overlayfs -- overlayfs: apply device cgroup and security + permissions to overlay files + - LP: #915941, #918212 + - CVE-2012-0055 + + [ Erez Zadok ] + + * ubuntu: overlayfs -- overlayfs: implement show_options + + [ Leann Ogasawara ] + + * Revert "SAUCE: dmar: disable if ricoh multifunction detected" + * [Config] Disable CONFIG_INTEL_IOMMU_DEFAULT_ON + - LP: #907377, #911236 + * [Config] Enable CONFIG_IRQ_REMAP + + [ Miklos Szeredi ] + + * ubuntu: overlayfs -- vfs: pass struct path to __dentry_open() + * ubuntu: overlayfs -- vfs: add i_op->open() + * ubuntu: overlayfs -- vfs: export do_splice_direct() to modules + * ubuntu: overlayfs -- vfs: introduce clone_private_mount() + * ubuntu: overlayfs -- overlay filesystem + * ubuntu: overlayfs -- fs: limit filesystem stacking depth + + [ Neil Brown ] + + * ubuntu: overlayfs -- overlay: overlay filesystem documentation + + [ Upstream Kernel Changes ] + + * (pre-stable) x86/PCI: amd: factor out MMCONFIG discovery + - LP: #647043 + * (pre-stable) PNP: work around Dell 1536/1546 BIOS MMCONFIG bug that + breaks USB + - LP: #647043 + + -- Leann Ogasawara Mon, 16 Jan 2012 07:10:08 -0800 + +linux (3.2.0-9.16) precise; urgency=low + + [ Andy Whitcroft ] + + * [Config] Enable numerous CONFIG_VIDEO_* cards on ARM + * [Config] pull ARM sound modules =m + * [Config] CONFIG_RTC_DRV_TEST is for testing only + * [Config] CONFIG_USB_DUMMY_HCD is testing only + * [Config] CONFIG_USB_FILE_STORAGE is deprecated + + [ Leann Ogasawara ] + + * Revert "[Config] Temporarily disable CONFIG_CAN_TI_HECC on armel" + * [Config] Enable CONFIG_HW_RANDOM_PASEMI=m + * [Config] Enable CONFIG_MMC_TMIO=m + * [Config] Enable CONFIG_MTD_NAND_FSL_ELBC=m + * [Config] Enable CONFIG_ISI=m + * [Config] Enable CONFIG_MMC=y + * [Config] Enable CONFIG_LIRC_PARALLEL=m + * [Config] Enable CONFIG_MAC_EMUMOUSEBTN=m + * [Config] Enable CONFIG_CHR_DEV_SG=y + * [Config] Enable CONFIG_GPIO_PCA953X=m + * [Config] Enable CONFIG_GPIO_TWL4030=m + * [Config] Enable CONFIG_INET_DIAG=m + * [Config] Enable CONFIG_NLS_ISO8859_1=m + * [Config] Enable CONFIG_NVRAM=m + * [Config] Enable CONFIG_SLIP=m + * [Config] Enable CONFIG_PC300TOO=m + * [Config] Enable CONFIG_TUN=y + * [Config] Enable CONFIG_NET_CLS_CGROUP=m + * [Config] Enable CONFIG_THERMAL=y + * [Config] Enable CONFIG_PPP=y + * [Config] Enable CONFIG_PCI_STUB=m + * Rebase to v3.2.1 + * [Config] Enable CONFIG_RTL8192E=m + * [Config] Enable CONFIG_RTS5139=m + + [ Stefan Bader ] + + * [Config] Make CONFIG_VIRTIO_(NET|BLK)=y + + [ Upstream Kernel Changes ] + + * ARM: restart: add restart hook to machine_desc record + * ARM: restart: allow platforms more flexibility specifying restart mode + * ARM: restart: move reboot failure handing into machine_restart() + * ARM: restart: remove argument to setup_mm_for_reboot() + * ARM: 7159/1: OMAP: Introduce local common.h files + * ARM: restart: only perform setup for restart when soft-restarting + * ARM: 7189/1: OMAP3: Fix build break in cpuidle34xx.c because of irq + function + * ARM: idmap: populate identity map pgd at init time using .init.text + * ARM: suspend: use idmap_pgd instead of suspend_pgd + * ARM: proc-*.S: place cpu_reset functions into .idmap.text section + * ARM: idmap: use idmap_pgd when setting up mm for reboot + * ARM: head.S: only include __turn_mmu_on in the initial identity mapping + * ARM: SMP: use idmap_pgd for mapping MMU enable during secondary booting + * ARM: 7194/1: OMAP: Fix build after a merge between v3.2-rc4 and ARM + restart changes + * ARM: lib: add call_with_stack function for safely changing stack + * ARM: reset: implement soft_restart for jumping to a physical address + * ARM: stop: execute platform callback from cpu_stop code + * ARM: kexec: use soft_restart for branching to the reboot buffer + * ARM: restart: omap: use new restart hook + * topdown mmap support + - LP: #861296 + + [ Upstream Kernel Changes ] + + * Rebase to v3.2.1 + + -- Leann Ogasawara Fri, 13 Jan 2012 20:32:08 +0100 + +linux (3.2.0-8.15) precise; urgency=low + + [ Leann Ogasawara ] + + * [Config] Disable CONFIG_ACPI_PROCFS + * Remove server from getabis + * Temporarily disable module check + * [Config] Disable CONFIG_MTD_TESTS + * [Config] Disable CONFIG_X86_E_POWERSAVER + * [Config] Set CONFIG_ARCNET=m + * [Config] Enable CONFIG_ATM_DUMMY=m + * [Config] Enable CONFIG_BLK_DEV_MD=y + * ubuntu: fsam7400 select CHECK_SIGNATURE and depend on X86 + * [Config] Enable CONFIG_BLK_DEV_SD=y + * [Config] Enable CONFIG_BLK_DEV_SR=y + * [Config] Enable CONFIG_BLK_DEV_UB=m + * [Config] Enable CONFIG_COPS=m + * [Config] Enable CONFIG_DVB_USB_EC168=m + * [Config] Enable CONFIG_ENC28J60=m + * [Config] Enable CONFIG_FB_UVESA=m + * [Config] Enable CONFIG_FB_ATY=m + * [Config] Enable CONFIG_BROADCOM_PHY=y + * [Config] Enable CONFIG_CICADA_PHY=y + * [Config] Enable CONFIG_DAVICOM_PHY=y + * [Config] Enable CONFIG_ICPLUS_PHY=y + * [Config] Enable CONFIG_LSI_ET1011C_PHY=y + * [Config] Enable CONFIG_LXT_PHY=y + * [Config] Enable CONFIG_MARVELL_PHY=y + * [Config] Enable CONFIG_NATIONAL_PHY=y + * [Config] Enable CONFIG_QSEMI_PHY=y + * [Config] Enable CONFIG_SMSC_PHY=y + * [Config] Enable CONFIG_VITESSE_PHY=y + * Add 3w-sas to scsi-modules + - LP: #776542 + + [ Mathieu Trudel-Lapierre ] + + * SAUCE: ipv6: make the net.ipv6.conf.all.use_tempaddr sysctl propagate + to interface settings + + [ Paolo Pisati ] + + * Revert "SAUCE: omap3: beagle: if rev unknown, assume xM revision C" + - LP: #912199 + * Revert "SAUCE: omap3: beagle: detect new xM revision B" + - LP: #912199 + * Revert "SAUCE: omap3: beaglexm: fix DVI initialization" + - LP: #912199 + + [ Upstream Kernel Changes ] + + * Bluetooth: Add support for BCM20702A0 [0a5c:21e3] + - LP: #906832 + + -- Leann Ogasawara Fri, 06 Jan 2012 10:02:03 -0800 + +linux (3.2.0-8.14) precise; urgency=low + + [ Andy Whitcroft ] + + * [Config] enable CONFIG_SND_USB_6FIRE + - LP: #912197 + * rebase to mainline v3.2 final release + * updateconfigs following rebase to v3.2 final + * ubuntu: AUFS -- add BOM and automated update script + * ubuntu: AUFS -- include the aufs_types.h file in linux-libc-headers + - LP: #684666 + * ubuntu: AUFS -- update aufs-update to track new locations of headers + * ubuntu: AUFS -- clean up the aufs updater and BOM + * ubuntu: AUFS -- documentation on updating aufs2 + * ubuntu: AUFS -- aufs3-base.patch + * ubuntu: AUFS -- aufs3-standalone.patch + * ubuntu: AUFS -- fix undefined __devcgroup_inode_permission + * ubuntu: AUFS -- fix undefined security_path_link + * ubuntu: AUFS -- update to 4cf5db36bcd9748e8e7270022f295f84d1fc2245 + * ubuntu: AUFS -- updateconfigs following update + * ubuntu: AUFS -- suppress benign plink warning messages + - LP: #621195 + * ubuntu: AUFS -- enable in config and makefile + * ubuntu: AUFS -- disable in favor of overlayfs + * [Config] linux-virtual -- should include the extX modules + - LP: #912308 + + [ Tyler Hicks ] + + * SAUCE: eCryptfs: Improve statfs reporting + - LP: #885744 + + [ Upstream Kernel Changes ] + + * rebase to upstream v3.2 + + -- Leann Ogasawara Mon, 26 Dec 2011 20:24:30 -0800 + +linux (3.2.0-7.13) precise; urgency=low + + [ Upstream Kernel Changes ] + + * rebase to upstream 3.2-rc7 + + -- Leann Ogasawara Mon, 19 Dec 2011 09:14:34 -0800 + +linux (3.2.0-6.12) precise; urgency=low + + [ Upstream Kernel Changes ] + + * rebase to upstream v3.2-rc6 + + -- Leann Ogasawara Fri, 16 Dec 2011 10:19:02 -0800 + +linux (3.2.0-5.11) precise; urgency=low + + [ Andy Whitcroft ] + + * enforcer -- allow arch and flavour predicates to take lists + * enforcer -- simplify armel/armhf specific options + * enforcer -- fix incorrectly specified flavour matches + + [ Leann Ogasawara ] + + * [Config] Disable IRQ_REMAP + * [Config] Enable CONFIG_SENSORS_LM95245=m + * [Config] Enable CONFIG_SENSORS_MAX1668=m + * [Config] Enable CONFIG_SENSORS_NTC_THERMISTOR=m + * [Config] Enable CONFIG_SENSORS_MAX6639=m + * [Config] Enable CONFIG_SENSORS_MAX6642=m + * [Config] Enable CONFIG_SENSORS_LINEAGE=m + * [Config] Enable CONFIG_CRYPTO_SALSA20=m + * [Config] Enable CONFIG_PATA_TOSHIBA=m + * [Config] Enable CONFIG_POHMELFS=m + * [Config] Enable CONFIG_NET_PACKET_ENGINE=y + * [Config] Enable CONFIG_PATA_OPTI=m + * add overlayfs to virtual inclusion list + - LP: #903897 + * add veth to virtual inclusion list + - LP: #903897 + * SAUCE: resolve WARNING: at drivers/block/floppy.c:2929 do_fd_request + + [ Paolo Pisati ] + + * [Config] DEFAULT_MMAP_MIN_ADDR=32k on arm + - LP: #903346 + + [ Tim Gardner ] + + * [Config] CONFIG_LOCKUP_DETECTOR=y + - LP: #903615 + + [ Upstream Kernel Changes ] + + * rebase to upstream 55b02d2f + + -- Leann Ogasawara Mon, 12 Dec 2011 07:08:10 -0800 + +linux (3.2.0-4.10) precise; urgency=low + + [ Kyle McMartin ] + + * SAUCE: dmar: disable if ricoh multifunction detected + - LP: #894070 + + [ Seth Forshee ] + + * SAUCE: dell-wmi: Demote unknown WMI event message to pr_debug + - LP: #581312 + + [ Tim Gardner ] + + * Start new release, Bump ABI, rebase to 3.2-rc5 + + [ Leann Ogasawara ] + + * [Config] Enable CONFIG_SENSORS_AK8975=m + + -- Tim Gardner Sat, 10 Dec 2011 08:57:04 -0700 + +linux (3.2.0-3.9) precise; urgency=low + + [ Andy Whitcroft ] + + * SAUCE: ext4: correct partial write discard size calculation + - LP: #894768 + + [ Leann Ogasawara ] + + * Revert "SAUCE: x86, microcode, AMD: Restrict microcode reporting" + - LP: #892615 + + [ Matthew Garrett ] + + * SAUCE: pci: Rework ASPM disable code + + [ Upstream Kernel Changes ] + + * x86: Fix boot failures on older AMD CPU's + - LP: #892615 + * EHCI : Fix a regression in the ISO scheduler + - LP: #899165 + + -- Leann Ogasawara Mon, 05 Dec 2011 10:37:36 -0800 + +linux (3.2.0-3.8) precise; urgency=low + + [ Andy Whitcroft ] + + * armhf -- add d-i configuration + * armhf -- disable ABI checks for armhf + * armhf -- add arch to getabis config + + -- Andy Whitcroft Sat, 03 Dec 2011 14:22:52 +0000 + +linux (3.2.0-3.7) precise; urgency=low + + [ Stefan Bader ] + + * SAUCE: x86/paravirt: PTE updates in k(un)map_atomic need to be + synchronous, regardless of lazy_mmu mode + - LP: #854050 + + [ Tim Gardner ] + + * rebase to v3.2-rc4 + + -- Leann Ogasawara Fri, 02 Dec 2011 11:53:56 -0800 + +linux (3.2.0-2.6) precise; urgency=low + + [ Andy Whitcroft ] + + * armhf -- fix omap flavour to build on armhf + * [Config] CONFIG_PATA_MACIO=y to fix MAC qemu boot + + [ Borislav Petkov ] + + * SAUCE: x86, microcode, AMD: Restrict microcode reporting + - LP: #892615 + + [ Colin Watson ] + + * Add pata_macio to pata-modules + + [ Tim Gardner ] + + * [Config] Prefer crda over wireless-crda + * [Config] Fix virtual inclusion list. + - LP: #897795 + + -- Leann Ogasawara Wed, 30 Nov 2011 06:09:35 -0800 + +linux (3.2.0-2.5) precise; urgency=low + + [ Paolo Pisati ] + + * [Config] PANEL_DVI=y + + -- Leann Ogasawara Mon, 28 Nov 2011 09:13:24 -0800 + +linux (3.2.0-2.4) precise; urgency=low + + [ Andy Whitcroft ] + + * rebase to v3.2-rc3 + + [ Leann Ogasawara ] + + * Revert "SAUCE: xen: Do not use pv spinlocks on HVM" + * Revert "fix ERROR: __devcgroup_inode_permission undefined" + * Revert "olpc_dcon_xo_1_5 needs delay.h" + * Revert "olpc_dcon_xo_1 needs delay.h" + * rebase to 6fe4c6d4 + * [Config] updateconfigs after rebase to 6fe4c6d4 + + [ Tim Gardner ] + + * [Config] Replace wireless-crda with crda,wireless-regdb + - LP: #856421 + * [Config] Relax the dependencies on crda + + [ Upstream Kernel Changes ] + + * (pre-stable) HID: bump maximum global item tag report size to 96 bytes + - LP: #724831 + * Ubuntu: remove coreutils|fileutils package dependency + - LP: #892814 + * iio: iio_event_getfd -- fix ev_int build failure + + [ Upstream Kernel Changes ] + + * Rebase to v3.2-rc3 + + -- Andy Whitcroft Thu, 24 Nov 2011 16:20:45 +0000 + +linux (3.2.0-1.3) precise; urgency=low + + [ Upstream Kernel Changes ] + + * Ubuntu: Add ext2 to fs-core-modules + - LP: #893395 + + -- Leann Ogasawara Mon, 21 Nov 2011 20:42:33 -0800 + +linux (3.2.0-1.2) precise; urgency=low + + [ Andy Whitcroft ] + + * [Config] enable CONFIG_NFC and associated devices + * SAUCE: allow brcmsmac and b43 to both build + + [ Soren Hansen ] + + * Add ixgbe driver to d-i + - LP: #891969 + + -- Leann Ogasawara Mon, 21 Nov 2011 08:33:46 -0800 + +linux (3.2.0-1.1) precise; urgency=low + [ Andy Whitcroft ] + + * armhf -- enable armhf and create the first flavours + * SAUCE: ensure root is ready before running usermodehelpers in it + * [Config] enforcer -- ensure CONFIG_FAT_FS is built-in on arm + + [ Leann Ogasawara ] + + * Temporarily ignore module check + * [Config] Enable PCI_IOV on powerpc + * [Config] Temporarily disable CONFIG_PASEMI_MAC on powerpc + * rebase to v3.2-rc2 + * SAUCE: include for cpuidle34xx arm build + * SAUCE: include for linux/mtd/map.h arm build + * SAUCE: include and for mmc_core arm build + * SAUCE: select ARM_AMBA if OMAP3_EMU + * [Config] updateconfigs after select ARM_AMBA + * [Config] Temporarily disable CONFIG_KVM_BOOK3S_32 on powerpc + * [Config] Enable CONFIG_EXT2_FS=m + * [Config] Build in CONFIG_SATA_AHCI=y + * Resolve linux-image-extra's install dependency + + [ Seth Forshee ] + + * [Config] Enable EVENT_POWER_TRACING_DEPRECATED=y for powertop + * SAUCE: (drop after 3.2) Input: ALPS - move protocol information to + Documentation + * SAUCE: (drop after 3.2) Input: ALPS - add protocol version field in + alps_model_info + * SAUCE: (drop after 3.2) Input: ALPS - remove assumptions about packet + size + * SAUCE: (drop after 3.2) Input: ALPS - add support for protocol versions + 3 and 4 + * SAUCE: (drop after 3.2) Input: ALPS - add semi-MT support for v3 + protocol + * SAUCE: (drop after 3.2) Input: ALPS - add documentation for protocol + versions 3 and 4 + + [ Stefan Bader ] + + * [Config] Built-in xen-netfront and xen-blkfront + * Fix build of dm-raid45 and re-enable it + + [ Tim Gardner ] + + * [Config] CONFIG_USB_XHCI_HCD=y + - LP: #886167 + * [Config] CONFIG_R6040=m + - LP: #650899 + * SAUCE: Add a new entry (413c:8197) to Bluetooth USB device ID table + - LP: #854399 + * [Config] Consolidated amd64 server flavour into generic + * [Config] updateconfigs after rebase to 3.2-rc1 + * [Config] Disabled dm-raid4-5 + * [Config] Disabled ndiswrapper + * [Config] Disable vt6656 + * [Config] exclude ppp-modules for virtual flavour + * [Config] CONFIG_MEMSTICK_R592=m + - LP: #238208 + + [ Upstream Kernel Changes ] + + * CHROMIUM: seccomp_filter: new mode with configurable syscall filters + - LP: #887780 + * CHROMIUM: seccomp_filter: add process state reporting + - LP: #887780 + * CHROMIUM: seccomp_filter: Document what seccomp_filter is and how it + works. + - LP: #887780 + * CHROMIUM: x86: add HAVE_SECCOMP_FILTER and seccomp_execve + - LP: #887780 + * CHROMIUM: arm: select HAVE_SECCOMP_FILTER + - LP: #887780 + * CHROMIUM: seccomp_filters: move to btrees + * CHROMIUM: enable CONFIG_BTREE + * CHROMIUM: seccomp_filter: kill NR_syscall references + * CHROMIUM: seccomp_filters: guard all ftrace wrapper code + * CHROMIUM: seccomp_filters: clean up warnings; kref mistake + * CHROMIUM: seccomp_filter: remove "skip" from copy and add drop helper + * CHROMIUM: seccomp_filter: allow CAP_SYS_ADMIN management of execve + * CHROMIUM: seccomp_filter: inheritance documentation + * CHROMIUM: seccomp_filter: make inherited filters composable + * CHROMIUM: Fix seccomp_t compile error + - LP: #887780 + * CHROMIUM: Fix kref usage + - LP: #887780 + * CHROMIUM: enable CONFIG_SECCOMP_FILTER and CONFIG_HAVE_SECCOMP_FILTER + * rebase to v3.2-rc2 + + -- Leann Ogasawara Mon, 31 Oct 2011 09:24:39 -0400 + +linux (3.1.0-2.3) precise; urgency=low + + [ Tim Gardner ] + + * Add postinit and postrm scripts to the extras package + - LP: #882120 + + -- Leann Ogasawara Fri, 28 Oct 2011 12:48:33 -0700 + +linux (3.1.0-2.2) precise; urgency=low + + [ Andy Whitcroft ] + + * debian: add locking to protect debian/files from parallel update + + [ Leann Ogasawara ] + + * rebase to v3.1 + + [ Upstream Kernel Changes ] + + * rebase to v3.1 + + -- Leann Ogasawara Wed, 19 Oct 2011 07:12:38 -0700 + +linux (3.1.0-1.1) precise; urgency=low + + [ Andiry Xu ] + + * SAUCE: (drop during 3.2 merge) xHCI: AMD isoc link TRB chain bit quirk + - LP: #872811 + + [ Andy Whitcroft ] + + * Revert "ubuntu: compcache -- follow changes to bd_claim/bd_release" + - LP: #832694 + * Revert "ubuntu: compcache -- version 0.5.3" + - LP: #832694 + * [Config] standardise CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP=m + * [Config] Enable CONFIG_MACVTAP=m + - LP: #822601 + * record the compiler in the ABI and check for inconsistant builds + * [Config] move ECRYPT_FS back to =y for all architectures + - LP: #827197 + * [Config] enable CONFIG_DRM_VMWGFX=m + - LP: #698009 + * [Config] re-fix ECRYPT_FS=y + - LP: #827197 + * enforcer -- ensure we have CONFIG_ECRYPT_FS=y + - LP: #827197 + * [Config] dropping compcache configuration options + * [Config] standardise on HZ=250 + * SAUCE: headers_install: fix #include "..." usage for userspace + - LP: #824377 + * make module-inclusion selection retain the left overs + * add a new linux-image-extras package for virtual + + [ Colin Watson ] + + * Deliver more Atheros, Ralink, and iwlagn NIC drivers to d-i + + [ edwin_rong ] + + * SAUCE: Staging: add driver for Realtek RTS5139 cardreader + - LP: #824273 + + [ Greg Kroah-Hartman ] + + * SAUCE: staging: rts5139: add vmalloc.h to some files to fix the build. + - LP: #824273 + + [ Jesse Sung ] + + * SAUCE: Unregister input device only if it is registered + - LP: #839238 + + [ Jiri Kosina ] + + * SAUCE: HID: add MacBookAir4, 2 to hid_have_special_driver[] + + [ Joshua V. Dillon ] + + * SAUCE: HID: add support for MacBookAir4,2 keyboard. + + [ Kees Cook ] + + * [Config] enable and enforce SECCOMP_FILTER on x86 + + [ Keng-Yu Lin ] + + * [Config] Enable CONFIG_RTS5139=m on i386/amd64 + - LP: #824273 + + [ Leann Ogasawara ] + + * Revert "ubuntu: overlayfs -- ovl: make lower mount read-only" + * Revert "ubuntu: overlayfs -- fs: limit filesystem stacking depth" + * Revert "ubuntu: overlayfs -- ovl: improve stack use of lookup and + readdir" + * Revert "ubuntu: overlayfs -- ovl: fix overlayfs over overlayfs" + * Revert "ubuntu: overlayfs -- overlayfs: implement show_options" + * Revert "ubuntu: overlayfs -- overlayfs: add statfs support" + * Revert "ubuntu: overlayfs -- overlay filesystem" + * Revert "ubuntu: overlayfs -- overlay: overlay filesystem documentation" + * Revert "SAUCE: ARM: OMAP: Add macros for comparing silicon revision" + * Revert "SAUCE: OMAP: DSS2: check for both cpu type and revision, rather + than just revision" + * Revert "SAUCE: OMAP: DSS2: enable hsclk in dsi_pll_init for OMAP36XX" + * Revert "ubuntu: fsam7400 disable driver" + - LP: #876030 + * rebase to v3.1-rc1 + * [Config] updateconfigs after rebase to v3.1-rc1 + * rebase to v3.1-rc2 + * [Config] Updateconfigs after rebase to v3.1-rc2 + * ubuntu: Yama - update calls to generic_permission() and + inode->i_op->permission() + * ubuntu: ndiswrapper -- remove netdev_priv macro + * ubuntu: aufs -- Temporarily disable due to build failure + * [Config] Diable INTEL_MID_PTI on armel + * [Config] Temporarily disable CONFIG_FTMAC100 on armel + * [Config] Temporarily disable CONFIG_FTGMAC100 on armel + * [Config] Temporarily disable CONFIG_CAN_TI_HECC on armel + * [Config] Temporarily disable CONFIG_VIDEO_OMAP2_VOUT on armel + * [Config] Set CONFIG_DM_MIRROR=m on amd64, i386, and arm + * [Config] Set CONFIG_DM_MULTIPATH=m on amd64, i386, and arm + * [Config] Set CONFIG_DM_SNAPSHOT=m on amd64, i386, and arm + * [Config] Enable CONFIG_EDAC_AMD8111=m on powerpc + * [Config] Enable CONFIG_EDAC_AMD8131=m on powerpc + * [Config] Enable CONFIG_EDAC_CPC925=m on powerpc + * [Config] Enable CONFIG_EDAC_PASEMI=m on powerpc + * [Config] Enable CONFIG_ECHO=m on powerpc + * [Config] Enable CONFIG_ET131X=m on powerpc + * [Config] Set CONFIG_FB_MATROX=m + * [Config] Enable CONFIG_FB_UDL=m on powerpc + * [Config] Set CONFIG_FB_VIRTUAL=n + * [Config] Enable CONFIG_FB_VGA16=m on powerpc + * [Config] Enable CONFIG_GPIO_MAX732X=m on arm + * [Config] Enable CONFIG_GPIO_PCF857X=m on arm + * [Config] Set CONFIG_HOTPLUG_PCI_FAKE=m + * [Config] Enable CONFIG_HOTPLUG_PCI=y on powerpc + * [Config] Enable CONFIG_HOTPLUG_PCI_CPCI=y on powerpc + * [Config] Enable CONFIG_HP_ILO=m on powerpc-smp + * [Config] Enable CONFIG_I2C_PASEMI=m on powerpc + * [Config] Enable CONFIG_IBM_BSR=m on powerpc + * [Config] Enable CONFIG_IBMVETH=m on powerpc + * [Config] Enable CONFIG_IDE_PHISON=m on powerpc + * [Config] Enable CONFIG_IGB=m on powerpc + * [Config] Enable CONFIG_IIO=m on powerpc + * [Config] Enable CONFIG_INFINIBAND_NES=m + * [Config] Enable CONFIG_IPMI_HANDLER=m on arm + * [Config] Enable CONFIG_IWL3945=m on powerpc + * [Config] Disable CONFIG_KVM_BOOK3S_64 + * [Config] Enable CONFIG_LAPBETHER=m on arm + * [Config] Enable CONFIG_LEDS_GPIO=m on powerpc + * [Config] Enable CONFIG_LEDS_CLEVO_MAIL=m all arch's + * [Config] Enable CONFIG_LEDS_PCA9532=m on powerpc + * [Config] Enable CONFIG_LEDS_PCA955X=m on powerpc + * [Config] Enable CONFIG_LEDS_TRIGGER_DEFAULT_ON=m on powerpc + * [Config] Set CONFIG_LEDS_TRIGGER_HEARTBEAT=m on arm and powerpc + * [Config] Set CONFIG_LEDS_TRIGGER_TIMER=m on powerpc + * [Config] Enable CONFIG_LINE6_USB=m on arm and powerpc + * [Config] Enable CONFIG_MEMSTICK=m on arm + * [Config] Enable CONFIG_MTD_AFS_PARTS=m on arm + * [Config] Enable CONFIG_MTD_ALAUDA=m on arm + * [Config] Enable CONFIG_MTD_AR7_PARTS=m on arm + * [Config] Enable CONFIG_MTD_ARM_INTEGRATOR=m on arm + * [Config] Enable CONFIG_MOXA_SMARTIO=m on powerpc + * [Config] Enable CONFIG_MTD_DATAFLASH=m on arm + * [Config] Enable CONFIG_MTD_GPIO_ADDR=m on arm + * [Config] Enable CONFIG_MTD_IMPA7=m on arm + * [Config] Enable CONFIG_MTD_NAND_GPIO=m on arm + * [Config] Enable CONFIG_MTD_NAND_NANDSIM=m on arm + * [Config] Enable CONFIG_MTD_NAND_PASEMI=m on powerpc + * [Config] Enable CONFIG_MTD_NAND_PLATFORM=m on arm + * [Config] Enable CONFIG_MTD_NAND_TMIO=m on arm + * [Config] Enable CONFIG_MTD_SST25L=m on arm + * [Config] Enable CONFIG_NET_CLS_CGROUP=y on arm + * [Config] Enable CONFIG_NET_CLS_FLOW=m on arm + * [Config] Enable CONFIG_NET_CLS_U32=m on arm + * [Config] Enable CONFIG_NET_DCCPPROBE=m on arm + * [Config] Enable CONFIG_NET_SCH_INGRESS=m on arm + * [Config] Enable CONFIG_NET_TCPPROBE=m on arm + * [Config] Enable CONFIG_PASEMI_MAC=m on powerpc + * [Config] Enable CONFIG_PATA_NS87410=m on powerpc + * [Config] Enable CONFIG_I2C_GPIO=m on powerpc64-smp + * [Config] Enable CONFIG_PANEL=m on powerpc + * [Config] Enable CONFIG_PATA_CMD640_PCI=m on powerpc + * SAUCE: x86: reboot: Make Dell Latitude E6520 use reboot=pci + - LP: #833705 + * [Config] Add CONFIG_EFI_VARS=y to the enforcer + - LP: #837332 + * [Config] Update CONFIG_EFI_VARS enforcer check + * [Config] Add aufs to virtual flavor inclusion list + - LP: #844159 + * SAUCE: x86: reboot: Make Dell Optiplex 790 use reboot=pci + - LP: #818933 + * SAUCE: x86: reboot: Make Dell Optiplex 990 use reboot=pci + - LP: #768039 + * SAUCE: x86: reboot: Make Dell Latitude E6220 use reboot=pci + - LP: #838402 + * [Config] Add igbvf to the virtual flavor inclusion list + - LP: #794570 + * [Config] Add ixgbevf to the virtual inclusion list + - LP: #872411 + * [Config] Transition -generic and -server to be identical + * rebase to v3.1-rc10 + + [ Luke Yelavich ] + + * [Config] Disable legacy IDE drivers on powerpc + + [ Ming Lei ] + + * SAUCE: fireware: add NO_MSI quirks for o2micro controller + - LP: #801719 + * SAUCE: ata_piix: make DVD Drive recognisable on systems with Intel + Sandybridge chipsets(v2) + - LP: #737388, #782389, #794642 + + [ Paolo Pisati ] + + * [Config] Compile-in vfat support for armel + - LP: #853783 + + [ Randy Dunlap ] + + * SAUCE: staging: fix rts5139 depends & build + - LP: #824273 + + [ Rene Bolldorf ] + + * SAUCE: (drop after 3.0) ideapad: Check if acpi already handle backlight + power in 'ideapad_backlight_notify_power' to avoid a page fault + + [ Seth Forshee ] + + * SAUCE: (no-up) Input: elantech - Add v3 hardware support + - LP: #681904 + * SAUCE: (drop after 3.1) usb_storage: Don't freeze in usb-stor-scan + - LP: #810020 + + [ Stefan Bader ] + + * (config) Package macvlan and macvtap for virtual + * [Config] Force perf to use libiberty for demangling + - LP: #783660 + * SAUCE: xen: Do not use pv spinlocks on HVM + - LP: #838026 + + [ Tim Gardner ] + + * [Config] Clean up tools rules + * [Config] Package x86_energy_perf_policy and turbostat + - LP: #797556 + * rebase to v3.1-rc3 + * [Config] Simplify binary-udebs dependencies + * [Config] kernel preparation cannot be parallelized + * [Config] Linearize module/abi checks + * [Config] Linearize and simplify tree preparation rules + * [Config] Build kernel image in parallel with modules + * [Config] Set concurrency for kmake invocations + * [Config] Improve install-arch-headers speed + * [Config] Fix binary-perarch dependencies + * [Config] Removed stamp-flavours target + * [Config] Serialize binary indep targets + * [Config] Use build stamp directly + * [Config] Restore prepare-% target + * rebase to v3.1-rc4 + * rebase to v3.1-rc5 + * [Config] Disable makedumpfile for i386/amd64 + * rebase to v3.1-rc6 + * [Config] Fix binary-% build target + * rebase to v3.1-rc7 + * rebase to v3.1-rc8 + * SAUCE: Add a new entry (413c:8197) to Bluetooth USB device ID table + - LP: #854399 + * [Config] Enable ftrace support in the mac80211 layer + - LP: #865171 + * rebase to v3.1-rc9 + * SAUCE: usb/core/devio.c: Check for printer class specific request + - LP: #872711 + + [ Upstream Kernel Changes ] + + * overlay filesystem + * overlayfs: add statfs support + * overlayfs: implement show_options + * overlay: overlay filesystem documentation + * fs: limit filesystem stacking depth + + [ Will Drewry ] + + * SAUCE: seccomp_filter: new mode with configurable syscall filters + * SAUCE: seccomp_filter: add process state reporting + * SAUCE: seccomp_filter: Document what seccomp_filter is and how it + works. + * SAUCE: seccomp_filter: add HAVE_SECCOMP_FILTER and seccomp_execve + + [ Upstream Kernel Changes ] + + * rebase to v3.1-rc1 + * rebase to v3.1-rc2 + * rebase to v3.1-rc3 + +CONFIG_BLK_DEV_BSGLIB=y + +CONFIG_BLK_DEV_LOOP_MIN_COUNT=8 + -CONFIG_VIDEO_OMAP2_VOUT_VRFB=y + * rebase to v3.1-rc4 + * rebase to v3.1-rc5 + * rebase to v3.1-rc6 + * rebase to v3.1-rc7 + * rebase to v3.1-rc8 + * rebase to v3.1-rc9 + * rebase to v3.1-rc10 + + -- Leann Ogasawara Wed, 10 Aug 2011 15:43:38 -0700 + +linux (3.1.0-1.0) oneiric; urgency=low + + [ Leann Ogasawara ] + + * Open P-series + + -- Leann Ogasawara Wed, 10 Aug 2011 13:42:40 -0700 + +linux (3.0.0-8.10) oneiric; urgency=low + + [ Adam Jackson ] + + * SAUCE: drm/i915/pch: Fix integer math bugs in panel fitting + - LP: #753994 + + [ John Johansen ] + + * [Config] Enable missing IPv6 options + + [ Leann Ogasawara ] + + * [Config] Disable config IWLWIFI_DEVICE_SVTOOL + - LP: #819925 + * Rebase to 3.0.1 + + [ Upstream Kernel Changes ] + + * x86, intel, power: Correct the MSR_IA32_ENERGY_PERF_BIAS message + * ALSA: hda - Turn on extra EAPDs on Conexant codecs + - LP: #783582 + * KVM: Remove SMEP bit from CR4_RESERVED_BITS + - LP: #796476 + * KVM: Add SMEP support when setting CR4 + - LP: #796476 + * KVM: Mask function7 ebx against host capability word9 + - LP: #796476 + * KVM: Add instruction fetch checking when walking guest page table + - LP: #796476 + + [ Upstream Kernel Changes ] + + * rebase to v3.0.1 + + -- Leann Ogasawara Fri, 05 Aug 2011 11:32:25 -0700 + +linux (3.0.0-7.9) oneiric; urgency=low + + [ Andy Whitcroft ] + + * Revert "[Upstream] add local prefix to oss local change_bits" + * Revert "SAUCE: add tracing for user initiated readahead requests" + * Revert "SAUCE: vfs: Add a trace point in the mark_inode_dirty function" + * Revert "SAUCE: Input: ALPS - Enable Intellimouse mode for Lenovo + Zhaoyang E47" + * Revert "SAUCE: fix documentation strings for struct input_keymap_entry" + * Revert "SAUCE: vt -- fix handoff numbering to 1..n and add range checks + (grub)" + * Revert "SAUCE: vt -- fix handoff numbering to 1..n and add range + checks" + * Revert "SAUCE: vt -- allow grub to request automatic vt_handoff" + * Revert "SAUCE: vt -- maintain bootloader screen mode and content until + vt switch" + * [Config] enable CONFIG_MTRR_SANITIZER_ENABLE_DEFAULT=1 + - LP: #816035 + * ubuntu: Yama: if an underlying filesystem provides a permissions op use + it + * SAUCE: (no-up) add tracing for user initiated readahead requests + * SAUCE: vt -- maintain bootloader screen mode and content until vt + switch + * SAUCE: vt -- allow grub to request automatic vt_handoff + + [ Arjan van de Ven ] + + * SAUCE: (no-up) vfs: Add a trace point in the mark_inode_dirty function + + [ Kees Cook ] + + * Revert "SAUCE: (no-up) Disable building the ACPI debugfs source" + * [Config] enforce ACPI_CUSTOM_METHOD disabled + + [ Keng-Yu Lin ] + + * SAUCE: (no-up) Input: ALPS - Enable Intellimouse mode for Lenovo + Zhaoyang E47 + - LP: #632884, #803005 + + [ Leann Ogasawara ] + + * [Config] Enable CONFIG_BLK_DEV_CMD64X=m on powerpc + - LP: #513131 + * [Config] Enable CONFIG_RT2800PCI_RT53XX=y + - LP: #815064 + + [ Rezwanul Kabir ] + + * SAUCE: (no-up) Add support for Intellimouse Mode in ALPS touchpad on + Dell E2 series Laptops + - LP: #632884 + + [ Upstream Kernel Changes ] + + * Revert "yama: if an underlying filesystem provides a permissions op use + it" + * Revert "Add support for Intellimouse Mode in ALPS touchpad on Dell E2 + series Laptops" + * Revert "tty: include linux/slab.h for kfree" + * Revert "gpio/ml_ioh_gpio: include linux/slab.h for kfree" + * Revert "pch_dma: add include/slab.h for kfree" + * mmc: Added quirks for Ricoh 1180:e823 lower base clock frequency + - LP: #773524 + * oss: rename local change_bits to avoid powerpc bitsops.h definition + + -- Leann Ogasawara Mon, 25 Jul 2011 09:08:01 -0700 + +linux (3.0.0-7.8) oneiric; urgency=low + + [ Andy Whitcroft ] + + * ubuntu: overlayfs -- overlayfs: add statfs support + * [Config] enable CONFIG_OVERLAYFS + + [ Erez Zadok ] + + * ubuntu: overlayfs -- overlayfs: implement show_options + + [ Leann Ogasawara ] + + * [Config] Enable CONFIG_ALIM7101_WDT=m on powerpc + * [Config] Enable CONFIG_ASUS_OLED=m on powerpc + * [Config] Disable CONFIG_ATM_DUMMY on arm + * [Config] Enable CONFIG_BLK_DEV_DRBD=m on powerpc + * Temporarily disable module check on arm + * Rebase to 3.0 final + * [Config] Enable CONFIG_CAN_TI_HECC=m on arm + * [Config] Set CONFIG_CDROM_PKTCDVD=m on amd64 and i386 + * [Config] Enable CONFIG_CRYPTO_CCM=m on powerpc + * [Config] Enable CONFIG_CRYPTO_DEV_HIFN_795X=m on powerpc + * [Config] Enable CONFIG_CRYPTO_GCM=m on powerpc + * [Config] Set CRYPTO_LZO=m on powerpc64-smp + * [Config] Enable CONFIG_DM9000=m on arm + * [Config] Set CONFIG_DISPLAY_SUPPORT=m on arm + * [Config] Enable CONFIG_DL2K=m on amd64 and i386 + + [ Miklos Szeredi ] + + * ubuntu: overlayfs -- vfs: add i_op->open() + * ubuntu: overlayfs -- vfs: export do_splice_direct() to modules + * ubuntu: overlayfs -- vfs: introduce clone_private_mount() + * ubuntu: overlayfs -- overlay filesystem + * ubuntu: overlayfs -- ovl: fix overlayfs over overlayfs + * ubuntu: overlayfs -- ovl: improve stack use of lookup and readdir + * ubuntu: overlayfs -- fs: limit filesystem stacking depth + * ubuntu: overlayfs -- ovl: make lower mount read-only + + [ Neil Brown ] + + * ubuntu: overlayfs -- overlay: overlay filesystem documentation + + [ Tim Gardner ] + + * [Config] Add enic/fnic to udebs + - LP: #801610 + + [ Upstream Kernel Changes ] + + * yama: if an underlying filesystem provides a permissions op use it + + [ Major Kernel Changes ] + + * Rebase to 3.0 final + + -- Leann Ogasawara Thu, 21 Jul 2011 07:01:32 -0700 + +linux (3.0.0-6.7) oneiric; urgency=low + + [ Eagon Yager ] + + * [Config] Fix misspelled 'skipmodule' in arm makefile. + + [ Keng-Yu Lin ] + + * SAUCE: Input: ALPS - Enable Intellimouse mode for Lenovo Zhaoyang E47 + - LP: #632884, #803005 + + [ Leann Ogasawara ] + + * Revert "[Config] Temporarily disable CONFIG_SMC91X on armel-omap" + * Revert "[Config] Temporarily Disable CONFIG_BRCMSMAC on arm" + * Revert "[Config] Temporarily Disable CONFIG_RTL8192SE on powerpc" + * Revert "[Config] Temporarily Disable CONFIG_RTL8192SE on arm" + * Revert "[Config] Temporarily disable CONFIG_BRCMSMAC on powerpc" + * [Config] Set CONFIG_ACPI_PCI_SLOT=m + * [Config] Set CONFIG_ACPI_SBS=m + * [Config] Set CONFIG_ACPI_WMI=m + * [Config] Set CONFIG_AD7150=m on arm + * [Config] Set CONFIG_AD7152=m on arm + * [Config] Drop CONFIG_GPIO_S5PV210 + * [Config] Drop CONFIG_GPIO_S5PC100 + * [Config] Drop CONFIG_GPIO_PLAT_SAMSUNG + * [Config] Drop CONFIG_GPIO_EXYNOS4 + + [ Stefan Bader ] + + * SAUCE: Re-enable RODATA for i386 virtual + - LP: #809838 + + [ Upstream Kernel Changes ] + + * Revert "Quirk to fix suspend/resume on Lenovo Edge 11,13,14,15" + * (drop after 3.0.0) acer-wmi: Add support for Aspire 1830 wlan hotkey + - LP: #771758 + + -- Leann Ogasawara Wed, 20 Jul 2011 06:36:02 -0700 + +linux (3.0.0-5.6) oneiric; urgency=low + + [ Tim Gardner ] + + * [Config] CONFIG_RTL8192CU=m + * Rebase to -rc7 + + -- Tim Gardner Mon, 11 Jul 2011 22:13:50 +0100 + +linux (3.0.0-4.5) oneiric; urgency=low + + [ Ming Lei ] + + * SAUCE: fix yama_ptracer_del lockdep warning + - LP: #791019 + + [ Seth Forshee ] + + * SAUCE: (drop after 3.0) asus-wmi: Add callback for hotkey filtering + * SAUCE: (drop after 3.0) eeepc-wmi: Add support for T101MT Home/Express Gate key + * SAUCE: (drop after 3.0) asus-wmi: Enable autorepeat for hotkey input device + * [Config] CONFIG_{ASUS,ASUS_NB,EEEPC}_WMI=m + - LP: #805218 + + [ Tim Gardner ] + + * [Config] updateconfigs after rebase to -rc6+ + Rebased against 4dd1b49c6d215dc41ce50c80b4868388b93f31a3 + * Adopt a 3 digit verion, e.g., 3.0.0-x.x + * Revert "UBUNTU: add dependancies for module-init-tools" + This dependency is no longer required for a 3 digit version. + + -- Tim Gardner Tue, 05 Jul 2011 14:03:04 +0100 + +linux (3.0-3.4) oneiric; urgency=low + + [ Keng-Yu Lin ] + + * SAUCE: Revert: "dell-laptop: Toggle the unsupported hardware + killswitch" + - LP: #775281 + + [ Leann Ogasawara ] + + * rebase to v3.0-rc5 + * [Config] updateconfigs after rebase to 3.0-rc5 + + [ Tim Gardner ] + + * [Config] Remove ubuntu/rtl8192se + * [Config] Added armel ABI files + * [Config] Removed armel versatile flavour + * [Config] CONFIG_INTEL_MEI=m + - LP: #716867 + + [ Upstream Kernel Changes ] + + * ALSA: hda - Enable auto-parser as default for Conexant codecs + + [ Upstream Kernel Changes ] + + * rebase to v3.0-rc5 + + -- Leann Ogasawara Thu, 30 Jun 2011 14:27:10 +0100 + +linux (3.0-2.3) oneiric; urgency=low + + [ Andy Whitcroft ] + + * ubuntu: AUFS -- update to 0e2bafab74f0d1463383faeb93f9fc5eb8c2c54e + + [ Leann Ogasawara ] + + * rebase to v3.0-rc4 + * [Config] updateconfigs after rebase to 3.0-rc4 + * fix ERROR: __devcgroup_inode_permission undefined + + [ Stefan Bader ] + + * SAUCE: iscsitarget: Remove driver from the kernel + + [ Tim Gardner ] + + * SAUCE: rtl8192se: Force a build for a 2.6/3.0 kernel + * [Config] Add grub-efi as a recommended bootloader for server and + generic + - LP: #800910 + + [ Upstream Kernel Changes ] + + * Fix node_start/end_pfn() definition for mm/page_cgroup.c + + [ Leann Ogasawara ] + + * rebase to v3.0-rc4 + + -- Leann Ogasawara Fri, 24 Jun 2011 11:51:12 -0700 + +linux (3.0-1.2) oneiric; urgency=low + + [ Andy Whitcroft ] + + * [Config] enable CONFIG_CAN_CALC_BITTIMING + + [ Leann Ogasawara ] + + * rebase to v3.0-rc3 + * [Config] updateconfigs after rebase to 3.0-rc3 + + [ Upstream Kernel Changes ] + + * perf: clear out make flags when calling kernel make kernelver + + [ Leann Ogasawara ] + + * rebase to v3.0-rc3 + + -- Leann Ogasawara Tue, 14 Jun 2011 07:25:35 -0700 + +linux (3.0-0.1) oneiric; urgency=low + + [ Andy Whitcroft ] + + * use the packaging version in the kernel + * use the kernels idea of its version for version_signature + * add dependancies for module-init-tools + * update control files to version 3 + * printchanges/insertchanges allow override of prev_release + * correct Vcs-Git: to point to oneiric + + [ Leann Ogasawara ] + + * rebase to v3.0-rc1 + * [Config] updateconfigs after rebase to 3.0-rc1 + * ubuntu: dm-raid4-5 fix up build failure + * [Config] Temporarily Disable CONFIG_GPIO_EXYNOS4 on arm + * [Config] Temporarily Disable CONFIG_GPIO_PLAT_SAMSUNG on arm + * [Config] Temporarily Disable CONFIG_GPIO_S5PC100 on arm + * [Config] Temporarily Disable CONFIG_GPIO_S5PV210 on arm + * [Config] Temporarily disable CONFIG_BRCMSMAC on powerpc + * [Config] Temporarily Disable CONFIG_BRCMSMAC on arm + * [Config] Temporarily Disable CONFIG_RTL8192SE on arm + * [Config] Temporarily Disable CONFIG_RTL8192SE on powerpc + * [Config] Temporarily disable CONFIG_SMC91X on armel-omap + * rebase to v3.0-rc2 + + [ Manoj Iyer ] + + * SAUCE: mmc: Enable MMC card reader for RICOH [1180:e823] + - LP: #790754 + + [ Upstream Kernel Changes ] + + * Revert "x86 idle: EXPORT_SYMBOL(default_idle, pm_idle) only when APM + demands it" + * drm/i915: fix regression after clock gating init split + + [ Major Kernel Changes ] + + * rebase from v2.6.39 to v3.0-rc1 + * rebase from v3.0-rc1 to v3.0-rc2 + + -- Andy Whitcroft Thu, 09 Jun 2011 15:18:33 +0100 + +linux (2.6.39-3.10) oneiric; urgency=low + + [ Colin Ian King ] + + * SAUCE: S3 early resume debug via keyboard LEDs + + [ Ingo Molnar ] + + * ubuntu: nx-emu - i386: NX emulation + * ubuntu: nx-emu - i386: mmap randomization for executable mappings + + [ Leann Ogasawara ] + + * Revert "[Config] Disable CONFIG_FT1000 on powerpc64-smp" + * Revert "[Config] Disable CONFIG_DM_RAID45" + * [Config] enable CONFIG_BRCMFMAC=y + * [Config] enable CONFIG_MDIO_BITBANG=m across all arch's and flavors + * [Config] enable CONFIG_VIDEO_OUTPUT_CONTROL=m on armel-omap + + [ Robert Nelson ] + + * SAUCE: omap3: beagle: detect new xM revision B + - LP: #770679 + * SAUCE: omap3: beagle: detect new xM revision C + - LP: #770679 + * SAUCE: omap3: beagle: if rev unknown, assume xM revision C + - LP: #770679 + + [ Stefan Bader ] + + * SAUCE: Convert dm-raid45 to new block plugging + + -- Leann Ogasawara Mon, 23 May 2011 11:46:43 -0700 + +linux (2.6.39-3.9) oneiric; urgency=low + + [ Leann Ogasawara ] + + * [Config] Disable CONFIG_SCSI_LPFC_DEBUG_FS + * rebase to v2.6.39 + * [Config] enable CONFIG_LLC2=m across all arch's and flavours + * [Config] enable CONFIG_INPUT_APANEL=m + + [ Thomas Schlichter ] + + * SAUCE: vesafb: mtrr module parameter is uint, not bool + - LP: #778043 + * SAUCE: vesafb: enable mtrr WC by default + - LP: #778043 + + [ Major Kernel Changes ] + + * rebase from v2.6.39-rc7 to v2.6.39 + + -- Andy Whitcroft Fri, 20 May 2011 09:52:32 +0100 + +linux (2.6.39-2.8) oneiric; urgency=low + + [ Andy Whitcroft ] + + * Revert "ubuntu: AUFS -- aufs2-standalone.patch aufs2.1-37" + * Revert "ubuntu: AUFS -- aufs2-base.patch aufs2.1-37" + * Revert "[Config] Disable CONFIG_AUFS_FS" + * ubuntu: AUFS -- aufs2-base.patch aufs2.1-39 + * ubuntu: AUFS -- aufs2-standalone.patch aufs2.1-39 + * ubuntu: AUFS -- update to c6b76974311efc5bf3eddf921cd015b6aae46935 + * ubuntu: AUFS -- clean up the aufs updater and BOM + * ubuntu: AUFS -- documentation on updating aufs2 + + [ Kees Cook ] + + * ubuntu: Yama - LSM hooks + * ubuntu: Yama - create task_free security callback + * ubuntu: Yama - add ptrace relationship tracking interface + * ubuntu: Yama - unconditionally chain to Yama LSM + + [ Leann Ogasawara ] + + * Revert "SAUCE: Fix drivers/staging/easycap FTBS" + * Revert "[Config] Disable CONFIG_EASYCAP" + * ubuntu: fsam7400 disable driver + * ubuntu: omnibook disable driver + * ubuntu: rfkill disable driver + + [ Tim Gardner ] + + * SAUCE: Fix extra reference in fb_open() + + -- Leann Ogasawara Mon, 16 May 2011 09:23:56 -0700 + +linux (2.6.39-2.7) oneiric; urgency=low + + [ Leann Ogasawara ] + + * rebase to v2.6.39-rc7 + + [ Major Kernel Changes ] + + * rebase from v2.6.39-rc6 to v2.6.39-rc7 + + -- Leann Ogasawara Tue, 10 May 2011 10:18:28 +0200 + +linux (2.6.39-1.6) oneiric; urgency=low + + [ Leann Ogasawara ] + + * rebase to v2.6.39-rc6 + * SAUCE: [arm] fixup __aeabi_uldivmod undefined build error + + [ Tim Gardner ] + + * [Config] updateconfigs after rebase to 2.6.39-rc6 + + [ Major Kernel Changes ] + + * rebase from v2.6.39-rc5 to v2.6.39-rc6 + - LP: #740126 + + -- Leann Ogasawara Thu, 05 May 2011 09:46:12 -0700 + +linux (2.6.39-0.5) oneiric; urgency=low + + [ Herton Ronaldo Krzesinski ] + + * SAUCE: Revert "x86, hibernate: Initialize mmu_cr4_features during boot" + - LP: #764758 + + [ Leann Ogasawara ] + + * rebase to v2.6.39-rc5 + * [Config] updateconfigs following rebase to v2.6.39-rc5 + + [ Paolo Pisati ] + + * [Config] s/USB_MUSB_TUSB6010/USB_MUSB_OMAP2PLUS/ on omap3 to get musb + - LP: #759913 + + [ Stefan Bader ] + + * Include nls_iso8859-1 for virtual images + - LP: #732046 + + [ Major Kernel Changes ] + + * rebase from v2.6.39-rc4 to v2.6.39-rc5 + + -- Leann Ogasawara Wed, 27 Apr 2011 06:39:42 -0700 + +linux (2.6.39-0.4) oneiric; urgency=low + + [ Leann Ogasawara ] + + * rebase to v2.6.39-rc4 + * [Config] updateconfigs following rebase to v2.6.39-rc4 + * fixup powerpc implicit declaration of function + 'crash_kexec_wait_realmode' + * [Config] Disable CONFIG_FT1000 on powerpc64-smp + + [ Tim Gardner ] + + * [Config] CONFIG_TRANSPARENT_HUGEPAGE=y + - LP: #769503 + * [Config] Add cachefiles.ko to virtual flavour + - LP: #770430 + + [ Major Kernel Changes ] + + * rebase from v2.6.39-rc3 to v2.6.39-rc4 + + -- Leann Ogasawara Tue, 19 Apr 2011 06:25:20 -0700 + +linux (2.6.39-0.3) oneiric; urgency=low + + [ Leann Ogasawara ] + + * rebase to v2.6.39-rc3 + * crash_kexec_wait_realmode() undefined when !SMP + + [ Tim Gardner ] + + * [Config] CONFIG_PM_ADVANCED_DEBUG=y for i386/amd64 + - LP: #632327 + + [ Major Kernel Changes ] + + * rebase from v2.6.39-rc2 to v2.6.39-rc3 + + -- Leann Ogasawara Tue, 12 Apr 2011 06:52:24 -0700 + +linux (2.6.39-0.2) oneiric; urgency=low + + [ Gustavo F. Padovan ] + + * SAUCE: Revert "Bluetooth: Add new PID for Atheros 3011" + - LP: #720949 + + [ John Johansen ] + + * AppArmor: Fix masking of capabilities in complain mode + - LP: #748656 + + [ Leann Ogasawara ] + + * rebase to v2.6.39-rc2 + * [Config] updateconfigs following rebase to v2.6.39-rc2 + * hv_mouse needs delay.h + * olpc_dcon_xo_1 needs delay.h + * olpc_dcon_xo_1_5 needs delay.h + * Update dropped.txt for Oneiric + + [ Steve Langasek ] + + * [Config] Make linux-libc-dev coinstallable under multiarch + - LP: #750585 + + [ Upstream Kernel Changes ] + + * x86, hibernate: Initialize mmu_cr4_features during boot + - LP: #752870 + + [ Major Kernel Changes ] + + * rebase from v2.6.39-rc1 to v2.6.39-rc2 + + -- Leann Ogasawara Wed, 06 Apr 2011 11:04:15 -0700 + +linux (2.6.39-0.1) oneiric; urgency=low + + [ Brad Figg ] + + * [Config] Set CONFIG_NR_CPUS=256 for amd64 generic + - LP: #737124 + + [ Henrik Rydberg ] + + * SAUCE: HID: hid-ntrig: add support for 1b96:0006 model + * SAUCE: HID: ntrig: fix suspend/resume on recent models + + [ Herton Ronaldo Krzesinski ] + + * SAUCE: (drop after 2.6.39) v4l: make sure drivers supply a zeroed + struct v4l2_subdev + - LP: #745213 + + [ Kees Cook ] + + * [Config] packaging: adjust perms on vmlinuz as well + * SAUCE: nx-emu: further clarify dmesg reporting + - LP: #745181 + + [ Leann Ogasawara ] + + * rebase to v2.6.39-rc1 + * [Config] updateconfigs following rebase to v2.6.39-rc1 + * [Config] Disable CONFIG_DM_RAID45 + * [Config] Disable CONFIG_SCSI_ISCSITARGET + * [Config] Disable CONFIG_EASYCAP + * [Config] Disable CONFIG_AUFS_FS + * update bnx2 firmware files in d-i/firmware/nic-modules + * xhci-pci.c resolve implicit declaration of kzalloc + * [Config] Enable CONFIG_DRM_PSB for only x86 + * [Config] Enable CONFIG_RTS_PSTOR for only x86 + * mfd/asic3: Fix typo, s/irq_data/data/ + + [ Luke Yelavich ] + + * [Config] Disable CONFIG_CRASH_DUMP on 32-bit powerpc kernels + - LP: #745358 + * [Config] Disable CONFIG_DRM_RADEON_KMS on powerpc kernels + * [Config] Build some framebuffer drivers as modules for powerpc kernels. + + [ Manoj Iyer ] + + * SAUCE: thinkpad-acpi: module autoloading for newer Lenovo ThinkPads. + - LP: #745217 + + [ Tim Gardner ] + + * SAUCE: INR_OPEN=4096 + - LP: #663090 + * SAUCE: Increase the default hard limit for open FDs to 4096 + - LP: #663090 + + [ Upstream Kernel Changes ] + + * (drop after 2.6.39-rc1) arm: versatile : Fix typo introduced in irq + namespace cleanup + * (drop after 2.6.39-rc1) [media] staging: altera-jtag needs delay.h + * ALSA: pcm: fix infinite loop in snd_pcm_update_hw_ptr0() + + [ Major Kernel Changes ] + + * rebase from v2.6.38 to v2.6.39-rc1 + + -- Leann Ogasawara Thu, 31 Mar 2011 12:50:10 -0700 + +linux (2.6.39-0.0) oneiric; urgency=low + + [ Leann Ogasawara ] + + * Open Oneiric + + -- Leann Ogasawara Thu, 31 Mar 2011 12:29:23 -0700 + +linux (2.6.38-7.39) natty; urgency=low + + [ Leann Ogasawara ] + + * No change upload. This is just to rebuild with gcc-4.5.2-7ubuntu1. + + -- Leann Ogasawara Thu, 24 Mar 2011 09:27:45 -0700 + +linux (2.6.38-7.38) natty; urgency=low + + [ Leann Ogasawara ] + + * No change upload take 2. 2.6.38-7.37 was accidentally uploaded before + gcc-4.5.2-6ubuntu5 finished building on all arches. + + -- Leann Ogasawara Tue, 22 Mar 2011 06:12:47 -0700 + +linux (2.6.38-7.37) natty; urgency=low + + [ Leann Ogasawara ] + + * No change upload. This is just to rebuild with gcc-4.5.2-6ubuntu5. + + -- Leann Ogasawara Sun, 20 Mar 2011 16:02:48 -0700 + +linux (2.6.38-7.36) natty; urgency=low + + [ Andy Whitcroft ] + + * Revert "SAUCE: KLUDGE: work around failed 'shrink-wrap' compiler + optimisation" + * purge last vestiges of maverick + * [Config] switch CONFIG_FB_VESA back to module + + [ Chris Wilson ] + + * SAUCE: drm/i915: Fix pipelined fencing + - LP: #717114 + + [ Loïc Minier ] + + * Include nls_cp437 module in virtual for fat + - LP: #732046 + * Support arch= cross-compilation for any arch + * Fix couple of typos in 0-common-vars.mk + * Enforce DEFAULT_MMAP_MIN_ADDR on armhf + * Add armhf to Debian -> Linux arch map + * Add initial armhf.mk + * Enable common packages for armhf + + [ Upstream Kernel Changes ] + + * Yama: fix default relationship to check thread group + - LP: #737676 + + -- Andy Whitcroft Fri, 18 Mar 2011 18:18:02 +0000 + +linux (2.6.38-7.35) natty; urgency=low + + [ Andy Whitcroft ] + + * rebase to 2fbfac4e053861925fa3fffcdc327649b09af54c + * rebase fixes bug #715330 + * [Config] disable CONFIG_SCSI_QLA_ISCSI for powerpc 32bit to fix FTBS + * rebase to v2.6.38 final + + [ Herton Ronaldo Krzesinski ] + + * SAUCE: Apply OPTION_BLACKLIST_SENDSETUP also for ZTE MF626 + - LP: #636091 + + [ Tim Gardner ] + + * [Confg] CONFIG_BOOT_PRINTK_DELAY=y + + [ Upstream Kernel Changes ] + + * Yama: use thread group leader when creating match + - LP: #729839 + * (drop after 2.6.38) ahci: AHCI mode SATA patch for Intel Patsburg SATA + RAID controller + - LP: #735240 + * (drop after v2.6.38) x86, quirk: Fix SB600 revision check + + [ Major Kernel Changes ] + + * rebase from v2.6.38-rc8 to v2.6.38 final + - LP: #715330 + + -- Andy Whitcroft Tue, 15 Mar 2011 19:04:19 +0000 + +linux (2.6.38-6.34) natty; urgency=low + + [ Andy Whitcroft ] + + * [Config] normalise CONFIG_INTEL_TXT + * SAUCE: KLUDGE: work around failed 'shrink-wrap' compiler optimisation + - LP: #730860 + * rebase to mainline v2.6.38-rc8 + + [ Major Kernel Changes ] + + * rebase from v2.6.38-rc7 + fb62c00a6d8942775abc23d1621db1252e2d93d1 + to v2.6.38-rc8 + + -- Andy Whitcroft Tue, 08 Mar 2011 11:54:48 +0000 + +linux (2.6.38-6.33) natty; urgency=low + + [ Andy Whitcroft ] + + * d-i -- enable speakup-modules udeb + - LP: #672699 + * rebase to 493f3358cb289ccf716c5a14fa5bb52ab75943e5 + * [Config] debian PPC64 configuration + * [Config] cleanup powerpc config fixing unexpected inconsistancies + * [Config] resync ppc64 configuration + * SAUCE: match up ENTRY/END naming for 32/64 bit + * rebase to fb62c00a6d8942775abc23d1621db1252e2d93d1 + * [Config] update configs after rebase to + fb62c00a6d8942775abc23d1621db1252e2d93d1 + * [Config] pps_gen_parport no longer built + + [ Corentin Chary ] + + * SAUCE: (drop after 2.6.38) eeepc-wmi: reorder keymap + - LP: #689393 + * SAUCE: (drop after 2.6.38) eeepc-wmi: add wlan key found on 1015P + - LP: #689393 + + [ John Johansen ] + + * SAUCE: Fix aufs calling of security_path_mknod + - LP: #724456 + + [ Kees Cook ] + + * SAUCE: proc: hide kernel addresses via %pK in /proc//stack + + [ Tim Gardner ] + + * rebase to 2.6.38-rc7 + + [ Upstream Kernel Changes ] + + * Revert "drm/i915: fix corruptions on i8xx due to relaxed fencing" + + [ Major Kernel Changes ] + + * rebase from v2.6.38-rc6 to v2.6.38-rc7 + + fb62c00a6d8942775abc23d1621db1252e2d93d1 + - LP: #721389 + - LP: #722925 + - LP: #723672 + - LP: #723676 + - LP: #715318 + + -- Andy Whitcroft Mon, 07 Mar 2011 15:33:17 +0000 + +linux (2.6.38-5.32) natty; urgency=low + + [ Andy Whitcroft ] + + * rebase to mainline 6f576d57f1fa0d6026b495d8746d56d949989161 + * [Config] updateconfigs following rebase to v2.6.38-rc6 + * [Config] enable CONFIG_DMAR + - LP: #552311 + + [ Upstream Kernel Changes ] + + * drm/i915: skip FDI & PCH enabling for DP_A + - LP: #561802, #600453, #681877 + + [ Major Kernel Changes ] + + * rebase from v2.6.38-rc5 to v2.6.38-rc6 + - LP: #718402 + - LP: #719524 + - LP: #721126 + - LP: #719691 + - LP: #722689 + - LP: #722310 + + -- Andy Whitcroft Tue, 22 Feb 2011 13:28:39 +0000 + +linux (2.6.38-4.31) natty; urgency=low + + [ Andy Whitcroft ] + + * add in bugs closed by upstream patches pulled in by rebases + * rebase to 795abaf1e4e188c4171e3cd3dbb11a9fcacaf505 + * [Config] enable CONFIG_VSX to allow use of vector instuctions + * resync with maverick 98defa1c5773a3d7e4c524967eb01d5bae035816 + * rebase to mainline v2.6.38-rc5 + * SAUCE: ecryptfs: read on a directory should return EISDIR if not + supported + - LP: #719691 + + [ Colin Ian King ] + + * SAUCE: Dell All-In-One: Remove need for Dell module alias + + [ Manoj Iyer ] + + * SAUCE: (drop after 2.6.38) add ricoh 0xe823 pci id. + - LP: #717435 + + [ Tim Gardner ] + + * [Config] CONFIG_CRYPTO_CRC32C_INTEL=y + + [ Upstream Kernel Changes ] + + * Quirk to fix suspend/resume on Lenovo Edge 11,13,14,15 + - LP: #702434 + * vfs: fix BUG_ON() in fs/namei.c:1461 + + [ Vladislav P ] + + * SAUCE: Release BTM while sleeping to avoid deadlock. + - LP: #713837 + + [ Major Kernel Changes ] + + * rebase from v2.6.38-rc4 to v2.6.38-rc5 + - LP: #579276 + - LP: #715877 + - LP: #713769 + - LP: #716811 + * resync with Maverick Ubuntu-2.6.35-27.47 + + -- Andy Whitcroft Fri, 11 Feb 2011 17:24:09 +0000 + +linux (2.6.38-3.30) natty; urgency=low + + [ Andy Whitcroft ] + + * rebase to v2.6.38-rc4 + * ppc64 -- add basic architecture + * ubuntu: AUFS -- update to 65835da20b77c98fb538c9114fc31f5de1328230 + + [ Colin Ian King ] + + * SAUCE: Add WMI hotkeys support for Dell All-In-One series + - LP: #676997 + * SAUCE: Add WMI hotkeys support for another Dell All-In-One series + - LP: #701530 + * SAUCE: Dell WMI: Use sparse keymaps and tidy up code. + - LP: #701530 + + [ Dan Rosenberg ] + + * SAUCE: (drop after 2.6.38) Convert net %p usage %pK + + [ Kees Cook ] + + * Revert "SAUCE: kernel: make /proc/kallsyms mode 400 to reduce ease of + attacking" + * SAUCE: (drop after 2.6.38) use %pK for /proc/kallsyms and /proc/modules + + [ Tim Gardner ] + + * [Config] CONFIG_BLK_CGROUP=y + - LP: #706394 + * [Config] CONFIG_DELL_WMI_AIO=m + + [ Upstream Kernel Changes ] + + * drm/i915/lvds: Restore dithering on native modes for gen2/3 + - LP: #711568 + + [ Upstream Kernel Changes ] + + * rebase from v2.6.38-rc3 to v2.6.38-rc4. + - LP: #701271 + - LP: #708521 + - LP: #710371 + + -- Andy Whitcroft Tue, 08 Feb 2011 02:07:18 +0000 + +linux (2.6.38-2.29) natty; urgency=low + + [ Andy Whitcroft ] + + * rebase to 1f0324caefd39985e9fe052fac97da31694db31e + * [Config] updateconfigs following rebase to + 1f0324caefd39985e9fe052fac97da31694db31e + * rebase to 70d1f365568e0cdbc9f4ab92428e1830fdb09ab0 + * [Config] reenable HIBERNATE + - LP: #710877 + * rebase to v2.6.38-rc3 + * [Config] reenable CONFIG_CRASH_DUMP + + [ Kamal Mostafa ] + + * SAUCE: rtl8192se: fix source file perms + * SAUCE: rtl8192se: fix source file newline + * SAUCE: omnibook: fix source file newline + + [ Kees Cook ] + + * [Config] packaging: really make System.map mode 0600 + + [ Ricardo Salveti de Araujo ] + + * SAUCE: OMAP3630: PM: don't warn the user with a trace in case of + PM34XX_ERRATUM + + [ Soren Hansen ] + + * SAUCE: nbd: Remove module-level ioctl mutex + + [ Tim Gardner ] + + * SAUCE: Disable building the ACPI debugfs source + + [ Upstream Kernel Changes ] + + * Set physical start and alignment 1M for virtual i386 + - LP: #710754 + + [ Upstream Kernel Changes ] + + * rebase from v2.6.38-rc2 + c723fdab8aa728dc2bf0da6a0de8bb9c3f588d84 + to v2.6.38-rc3 + - LP: #707902 + + -- Andy Whitcroft Fri, 28 Jan 2011 16:30:32 +0000 + +linux (2.6.38-1.28) natty; urgency=low + + [ Andy Whitcroft ] + + * ubuntu: AUFS -- update to b1cee06249dfa0ab30951e7f06490a75c155b620 + + [ Ricardo Salveti de Araujo ] + + * SAUCE: omap3: beaglexm: fix DVI initialization + * [Config] omap: move CONFIG_PANEL_GENERIC_DPI to build in to make + display work at Beagle + + -- Andy Whitcroft Fri, 28 Jan 2011 10:51:57 +0000 + +linux (2.6.38-1.27) natty; urgency=low + + [ Andy Whitcroft ] + + * ubuntu: AUFS -- update aufs-update to track new locations of headers + * ubuntu: AUFS -- update to c5021514085a5d96364e096dbd34cadb2251abfd + * SAUCE: ensure root is ready before running usermodehelpers in it + * correct the Vcs linkage to point to natty + * rebase to linux tip e78bf5e6cbe837daa6ab628a5f679548742994d3 + * [Config] update configs following rebase + e78bf5e6cbe837daa6ab628a5f679548742994d3 + * SAUCE: Yama: follow changes to generic_permission + * ubuntu: compcache -- follow changes to bd_claim/bd_release + * ubuntu: iscsitarget -- follow changes to open_bdev_exclusive + * ubuntu: ndiswrapper -- fix interaction between __packed and packed + * ubuntu: AUFS -- update to 806051bcbeec27748aae2b7957726a4e63ff308e + * update package version to match payload version + * rebase to e6f597a1425b5af64917be3448b29e2d5a585ac8 + * rebase to v2.6.38-rc1 + * [Config] updateconfigs following rebase to v2.6.38-rc1 + * SAUCE: x86 fix up jiffies/jiffies_64 handling + * rebase to linus tip 2b1caf6ed7b888c95a1909d343799672731651a5 + * [Config] updateconfigs following rebase to + 2b1caf6ed7b888c95a1909d343799672731651a5 + * [Config] disable CONFIG_TRANSPARENT_HUGEPAGE to fix i386 boot crashes + * ubuntu: AUFS -- suppress benign plink warning messages + - LP: #621195 + * [Config] CONFIG_NR_CPUS=256 for amd64 -server flavour + * rebase to v2.6.38-rc2 + * rebase to mainline d315777b32a4696feb86f2a0c9e9f39c94683649 + * rebase to c723fdab8aa728dc2bf0da6a0de8bb9c3f588d84 + * [Config] update configs following rebase to + c723fdab8aa728dc2bf0da6a0de8bb9c3f588d84 + * [Config] disable CONFIG_AD7152 to fix FTBS on armel versatile + * [Config] disable CONFIG_AD7150 to fix FTBS on armel versatile + * [Config] disable CONFIG_RTL8192CE to fix FTBS on armel omap + * [Config] disable CONFIG_MANTIS_CORE to fix FTBS on armel versatile + + [ Kees Cook ] + + * SAUCE: kernel: make /proc/kallsyms mode 400 to reduce ease of attacking + + [ Stefan Bader ] + + * Temporarily disable RODATA for virtual i386 + - LP: #699828 + + [ Tim Gardner ] + + * [Config] CONFIG_NLS_DEFAULT=utf8 + - LP: #683690 + * [Config] CONFIG_HIBERNATION=n + * update bnx2 firmware files in d-i/firmware/nic-modules + + [ Upstream Kernel Changes ] + + * Revert "drm/radeon/bo: add some fallback placements for VRAM only + objects." + * packaging: make System.map mode 0600 + * thinkpad_acpi: Always report scancodes for hotkeys + - LP: #702407 + * sched: tg->se->load should be initialised to tg->shares + * Input: sysrq -- ensure sysrq_enabled and __sysrq_enabled are consistent + * brcm80211: include linux/slab.h for kfree + * pch_dma: add include/slab.h for kfree + * i2c-eg20t: include linux/slab.h for kfree + * gpio/ml_ioh_gpio: include linux/slab.h for kfree + * tty: include linux/slab.h for kfree + * winbond: include linux/delay.h for mdelay et al + + [ Upstream Kernel Changes ] + + * mark the start of v2.6.38 versioning + * rebase v2.6.37 to v2.6.38-rc2 + c723fdab8aa728dc2bf0da6a0de8bb9c3f588d84 + - LP: #689886 + - LP: #702125 + - LP: #608775 + - LP: #215802 + - LP: #686333 + - LP: #677830 + - LP: #677652 + - LP: #696493 + - LP: #697240 + - LP: #689036 + - LP: #705323 + - LP: #686692 + + -- Andy Whitcroft Sun, 09 Jan 2011 13:44:52 +0000 + +linux (2.6.37-12.26) natty; urgency=low + + [ Andy Whitcroft ] + + * rebase to v2.6.37-rc8 + * [Config] armel -- reenable omap flavour + * [Config] disable CONFIG_MACH_OMAP3517EVM to fix FTBS on armel omap + * [Config] disable CONFIG_GPIO_VX855 to fix FTBS on omap armel + * [Config] disable CONFIG_WESTBRIDGE_ASTORIA to fix FTBS on omap armel + * [Config] disable CONFIG_TI_DAVINCI_EMAC to fix FTBS on omap armel + * rebase to mainline 989d873fc5b6a96695b97738dea8d9f02a60f8ab + * [Config] track missing modules + * rebase to v2.6.37 final + + [ Chase Douglas ] + + * SAUCE: (drop after 2.6.37) HID: magicmouse: Don't report REL_{X, Y} for + Magic Trackpad + + [ Stefan Bader ] + + * Revert "SAUCE: blkfront: default to sd devices" + - LP: #684875 + + [ Tim Gardner ] + + * Revert "SAUCE: (no-up) libata: Ignore HPA by default." + - LP: #380138 + * [Config] Added autofs4.ko to -virtual flavour + - LP: #692917 + + [ Upstream Kernel Changes ] + + * Add support for Intellimouse Mode in ALPS touchpad on Dell E2 series + Laptops + - LP: #632884 + + [ Upstream Kernel Changes ] + + * rebase to v2.6.37-rc8 + * rebase to mainline 989d873fc5b6a96695b97738dea8d9f02a60f8ab + * rebase to v2.6.37 final + + -- Andy Whitcroft Thu, 23 Dec 2010 18:34:13 +0000 + +linux (2.6.37-11.25) natty; urgency=low + + [ Andy Whitcroft ] + + * [Config] d-i -- add hpsa to the list of block devices + - LP: #684304 + * [Config] add vmw-balloon driver to -virtual flavour + - LP: #592039 + * rebase to v2.6.37-rc7 + + [ Upstream Kernel Changes ] + + * rebase to v2.6.37-rc7 + + -- Andy Whitcroft Tue, 21 Dec 2010 13:35:28 +0000 + +linux (2.6.37-10.24) natty; urgency=low + + [ Andy Whitcroft ] + + * rebase to v2.6.37-rc6 + * updateconfigs following rebase to v2.6.37-rc6 + + [ Upstream Kernel Changes ] + + * rebase to v2.6.37-rc6 + + -- Andy Whitcroft Thu, 16 Dec 2010 12:34:19 +0000 + +linux (2.6.37-9.23) natty; urgency=low + + [ Andy Whitcroft ] + + * SAUCE: vt -- fix handoff numbering to 1..n and add range checks + - LP: #689606 + * SAUCE: vt -- fix handoff numbering to 1..n and add range checks (grub) + - LP: #689606 + + [ Kees Cook ] + + * SAUCE: RO/NX protection for loadable kernel, fix ftrace + - LP: #690190 + + -- Andy Whitcroft Wed, 15 Dec 2010 19:29:57 +0000 + +linux (2.6.37-9.22) natty; urgency=low + + [ Andy Whitcroft ] + + * rebase to v2.6.35-rc5 + * [Config] updateconfigs following rebase to v2.6.37-rc5 + * (no-up) add support for installed header files to ubuntu directory + - LP: #684666 + * ubuntu: AUFS -- include the aufs_types.h file in linux-libc-headers + - LP: #684666 + * ubuntu: dm-raid4-5 -- follow changes to bio flags + * ubuntu: dm-raid4-5 -- re-enable + * ubuntu: omnibook -- update BOM + * ubuntu: ndiswrapper -- update BOM to match actual version + * ubuntu: ndiswrapper -- follow removal of the BKL and locked ioctl + * ubuntu: ndiswrapper -- re-enable + * ubuntu: iscsitarget -- re-instate copy_io_context + * ubuntu: iscsitarget -- follow changes to semaphore initialisation + * ubuntu: iscsitarget -- convert NIPQUAD to %pI4 + * ubuntu: iscsitarget -- re-enable + + [ Kees Cook ] + + * [Config] update config for CONFIG_DEBUG_SET_MODULE_RONX + + [ Manoj Iyer ] + + * SAUCE: Enable jack sense for Thinkpad Edge 13 + - LP: #685015 + + [ Tim Gardner ] + + * [Config] CONFIG_9P_FSCACHE=y,CONFIG_9P_FS_POSIX_ACL=y + * [Config] CONFIG_CRYPTO_CRC32C=y + - LP: #681819 + * [Config] CONFIG_9P_FSCACHE=n + * [Config] Add nfsd modules to -virtual flavour + - LP: #688070 + + [ Upstream Kernel Changes ] + + * Revert "Staging: zram: work around oops due to startup ordering snafu" + * NFS: Fix panic after nfs_umount() + - LP: #683938 + * x86: Add NX protection for kernel data + * x86: Add RO/NX protection for loadable kernel modules + * x86: Resume trampoline must be executable + * x86: RO/NX protection for loadable kernel, jump_table fix + + [ Upstream Kernel Changes ] + + * rebase to v2.6.37-rc5 + + -- Andy Whitcroft Thu, 09 Dec 2010 18:15:35 +0000 + +linux (2.6.37-8.21) natty; urgency=low + + [ Andy Whitcroft ] + + * Revert "ubuntu: AUFS -- include the aufs_types.h file in + linux-libc-headers" + * Revert "(no-up) add support for installed header files to ubuntu + directory" + + -- Andy Whitcroft Sun, 05 Dec 2010 17:33:28 +0000 + +linux (2.6.37-8.20) natty; urgency=low + + [ Andy Whitcroft ] + + * Revert "[Upstream] drivers/serial/mfd.c: Fix ARM compile error" + * Revert "SAUCE: Nouveau: Disable acceleration on MacBook Pros" + * Revert "SAUCE: Nouveau: Add quirk framework to disable acceleration" + * Revert "SAUCE: i915 -- disable powersave by default" + * SAUCE: enable Marvell 9128 PCIe SATA controller + - LP: #658521 + * [Config] evtchn has been renamed + * (no-up) add support for installed header files to ubuntu directory + - LP: #684666 + * ubuntu: AUFS -- include the aufs_types.h file in linux-libc-headers + - LP: #684666 + + [ Tim Gardner ] + + * [Config] MISS: evtchn, NEW : xen-evtchn + * rebase to v2.6.37-rc4 + + [ Upstream Kernel Changes ] + + * drm/i915: Clean conflicting modesetting registers upon init + - LP: #683775 + * rebase to v2.6.37-rc4 + + -- Andy Whitcroft Fri, 03 Dec 2010 18:42:07 +0000 + +linux (2.6.37-7.19) natty; urgency=low + + [ Tim Gardner ] + + * [Config] Add bnx2 firmware to nic-modules udeb + - LP: #676245 + + -- Andy Whitcroft Fri, 26 Nov 2010 17:53:45 +0000 + +linux (2.6.37-7.18) natty; urgency=low + + [ Andy Whitcroft ] + + * Revert "[Upstream] USB: option: Remove duplicate AMOI_VENDOR_ID" + * Revert "SAUCE: Add extra headers to linux-libc-dev" + * Revert "SAUCE: Enable speedstep for sonoma processors." + * [Config] enable CONFIG_BT_HCIUART_ATH3K + * [Config] enable CONFIG_IWLWIFI_DEBUGFS + * [Config] standardise CONFIG_MII + * [Config] standardise CONFIG_PRISM2_USB + * [Config] standardise CONFIG_SCSI_QLA_ISCSI + * [Config] build in CONFIG_AGP + * [Config] build in CONFIG_AGP_INTEL + * [Config] build in CONFIG_AGP_AMD + * [Config] build in CONFIG_AGP_AMD64 + * [Config] build in CONFIG_AGP_NVIDIA + * [Config] build in CONFIG_AGP_VIA + * [Config] disable CONFIG_SCSI_QLA_ISCSI for FTBS (arm) + * (no-up): document the new ## scheme + * [Config] harmonise CONFIG_SERIAL_8250_NR_UARTS + * [Config] update CONFIG_SERIAL_8250_RUNTIME_UARTS=32 + - LP: #675453 + + [ Mathieu J. Poirier ] + + * SAUCE: ARM: Adding vdd_sdi regulator supply to OMAP3EVM + + [ Upstream Kernel Changes ] + + * nx-emu: fix inverted report of disable_nx + + -- Andy Whitcroft Tue, 23 Nov 2010 21:00:39 +0000 + +linux (2.6.37-6.17) natty; urgency=low + + [ Andy Whitcroft ] + + * Revert "ubuntu: AUFS -- aufs2-standalone.patch + aufs2.1-36-UNRELEASED-20101103" + * Revert "ubuntu: AUFS -- aufs2-base.patch + aufs2.1-36-UNRELEASED-20101103" + * [Config] standardise CONFIG_BT + * [Config] standardise CONFIG_IRDA + * [Config] standardise CONFIG_LAPB + * [Config] standardise CONFIG_RDS + * [Config] standardise CONFIG_RFKILL + * [Config] standardise CONFIG_TIPC + * [Config] standardise CONFIG_X25 + * [Config] standardise CONFIG_INPUT_EVDEV + * [Config] standardise CONFIG_INPUT_JOYDEV + * [Config] standardise CONFIG_INPUT_JOYSTICK + * [Config] standardise CONFIG_INPUT_TOUCHSCREEN + * [Config] CONFIG_INPUT_TOUCHSCREEN=n for FTBS (arm) + * [Config] CONFIG_IRDA=n for FTBS (arm) + * ubuntu: AUFS -- aufs2-base.patch aufs2.1-37 + * ubuntu: AUFS -- aufs2-standalone.patch aufs2.1-37 + * ubuntu: AUFS -- update to 097bf62d6f49619359d34bf17f242df38562489a + + [ Tim Gardner ] + + * SAUCE: Fix drivers/staging/easycap FTBS + * [Config] CONFIG_EASYCAP=m after fixing FTBS + + [ Upstream Kernel Changes ] + + * Revert "x86: Add NX protection for kernel data" + + -- Andy Whitcroft Mon, 22 Nov 2010 18:09:10 +0000 + +linux (2.6.37-6.16) natty; urgency=low + + [ Andy Whitcroft ] + + * Revert "[Config] update config for CONFIG_DEBUG_SET_MODULE_RONX" + * rebase to v2.6.37-rc3 + + [ Tim Gardner ] + + * [Config] CONFIG_SCHED_AUTOGROUP=y + + [ Upstream Kernel Changes ] + + * Revert "x86: Add RO/NX protection for loadable kernel modules" + * sched: automated per session task groups + * rebase to v2.6.37-rc3 + + -- Andy Whitcroft Mon, 22 Nov 2010 10:11:13 +0000 + +linux (2.6.37-6.15) natty; urgency=low + + [ Andy Whitcroft ] + + * [Config] standardise CONFIG_CEPH_FS + * [Config] standardise CONFIG_SCSI_LPFC_DEBUG_FS + * [Config] standardise CONFIG_SCSI_PROC_FS + * [Config] standardise CONFIG_UBIFS_FS + * [Config] standardise CONFIG_USB_GADGET_DEBUG_FS + + [ Kees Cook ] + + * [Config] update config for CONFIG_DEBUG_SET_MODULE_RONX + + [ Manoj Iyer ] + + * SAUCE: Enable jack sense for Thinkpad Edge 11 + - LP: #677210 + * SAUCE: enable rfkill for rtl8192se driver + - LP: #640992 + + [ Tim Gardner ] + + * [Config] CONFIG_EASYCAP=n for FTBS + * Rebase to v2.6.32-rc2+git + + [ Upstream Kernel Changes ] + + * x86: Fix improper large page preservation + * x86: Add NX protection for kernel data + * x86: Add RO/NX protection for loadable kernel modules + + [ Upstream Kernel Changes ] + + * Rebase to Linus 2.6.37-rc2+git + + -- Andy Whitcroft Sat, 20 Nov 2010 11:40:00 +0000 + +linux (2.6.37-5.14) natty; urgency=low + + [ Upstream Kernel Changes ] + + * PCI: fix offset check for sysfs mmapped files + - LP: #676963 + + -- Andy Whitcroft Thu, 18 Nov 2010 18:12:27 +0000 + +linux (2.6.37-5.13) natty; urgency=low + + [ Andy Whitcroft ] + + * rebased to v2.6.37-rc2 + * updateconfigs following rebase to v2.6.37-rc2 + + [ Tim Gardner ] + + * [Config] Added NFS and related modules to virtual flavour + - LP: #659084 + + [ Upstream Kernel Changes ] + + * x86, cpu: Rename verify_cpu_64.S to verify_cpu.S + * x86, cpu: Clear XD_DISABLED flag on Intel to regain NX + * x86, cpu: Call verify_cpu during 32bit CPU startup + * x86, cpu: Only CPU features determine NX capabilities + + [ Upstream Changes ] + + * rebased to v2.67.37-rc2 + + -- Andy Whitcroft Tue, 16 Nov 2010 13:13:29 +0000 + +linux (2.6.37-4.12) natty; urgency=low + + [ Andy Whitcroft ] + + * Revert "[Upstream] HID: magicmouse: add param for scroll speed" + * Revert "[Upstream] HID: magicmouse: properly account for scroll + movement in state" + * Revert "[Upstream] HID: magicmouse: disable and add module param for + scroll acceleration" + * Revert "[Upstream] HID: magicmouse: scroll on entire surface, not just + middle of mouse" + + [ Henrik Rydberg ] + + * SAUCE: hid: ntrig: remove sysfs nodes + * SAUCE: hid: ntrig: Setup input filtering manually + * SAUCE: hid: ntrig: New ghost-filtering event logic + + [ Manoj Iyer ] + + * SAUCE: Added quirk to recognize GE0301 3G modem as an interface. + - LP: #348861 + + [ Upstream Kernel Changes ] + + * Revert "mmc: fix all hangs related to mmc/sd card insert/removal during + suspend/resume" + * Revert "[ARM] implement arch_randomize_brk()" + * Revert "ARM: stack protector: change the canary value per task" + * Revert "ARM: initial stack protector (-fstack-protector) support" + * Revert "ALSA: hda - Handle pin NID 0x1a on ALC259/269" + * Revert "ALSA: hda - Handle missing NID 0x1b on ALC259 codec" + * Revert "perf probe: Add kernel source path option" + * hid: ntrig: Support single-touch devices + * hid: ntrig: Mask pen switch events + * net: rtnetlink.h -- only include linux/netdevice.h when used by the + kernel + - LP: #673073 + * Fix userspace build of linux/fs.h + + -- Andy Whitcroft Mon, 15 Nov 2010 19:31:44 +0000 + +linux (2.6.37-3.11) natty; urgency=low + + [ Andy Whitcroft ] + + * Revert "ubuntu: AUFS -- update to + b37c575759dc4535ccc03241c584ad5fe69e3b25" + * Revert "ubuntu: AUFS -- track changes to the arguements to fop fsync()" + * Revert "ubuntu: AUFS -- update to standalone 2.6.35-rcN as at 20100601" + * Revert "ubuntu: AUFS -- update to standalone 2.6.34 as at 20100601" + * Revert "ubuntu: AUFS -- aufs2 base patch for linux-2.6.34" + * [Config] Disable intel_idle for -virtual kernels + - LP: #651370 + * [Config] enforcer -- ensure we never enable CONFIG_IMA + * debian -- pass the correct flavour name when checking configs + * [Config] enforcer -- ensure CONFIG_INTEL_IDLE is off for -virtual + * [Config] ensure CONFIG_IPV6=y for powerpc + * [Config] enforcer -- ensure CONFIG_IPV6=y + * ubuntu: AUFS -- aufs2-base.patch aufs2.1-36-UNRELEASED-20101103 + * ubuntu: AUFS -- aufs2-standalone.patch aufs2.1-36-UNRELEASED-20101103 + * ubuntu: AUFS -- update to aufs2.1-36-UNRELEASED-20101103 + * ubuntu: AUFS -- re-enable + * ubuntu: AUFS -- track changes to work queue initialisation + * ubuntu: AUFS -- track changes to llseek in v2.6.37-rc1 + * SAUCE: fbcon -- fix race between open and removal of framebuffers + * SAUCE: fbcon -- fix OOPs triggered by race prevention fixes + - LP: #614008 + * SAUCE: drm -- stop early access to drm devices + + [ Jeremy Kerr ] + + * [Config] Build-in powermac ZILOG serial driver + - LP: #673346 + + [ Kees Cook ] + + * SAUCE: nx-emu: use upstream ASLR when possible + + [ Tim Gardner ] + + * [Config] Use correct be2iscsi module name in d-i/modules/scsi-modules + - LP: #628776 + + [ Upstream Kernel Changes ] + + * i386: NX emulation + * nx-emu: drop exec-shield sysctl, merge with disable_nx + * nx-emu: standardize boottime message prefix + * mmap randomization for executable mappings on 32-bit + * exec-randomization: brk away from exec rand area + + -- Andy Whitcroft Thu, 11 Nov 2010 23:46:37 +0000 + +linux (2.6.37-2.10) natty; urgency=low + + [ Andy Whitcroft ] + + * reinstate armel config changes: + * [Config] CONFIG_GPIO_PCH=n for armel FTBS + * [Config] CONFIG_GPIO_VX855=n for armel FTBS + + -- Andy Whitcroft Wed, 03 Nov 2010 22:20:35 +0000 + +linux (2.6.37-2.9) natty; urgency=low + + [ Andy Whitcroft ] + + * config -- fix genportsconfig + * [Config] move powerpc over from ports to distro + * bump master version number to match contained kernel + * SAUCE: fix documentation strings for struct input_keymap_entry + * usb: gadget: goku_udc: add registered flag bit + + -- Andy Whitcroft Tue, 02 Nov 2010 15:14:11 +0000 + +linux (2.6.36-2.8) natty; urgency=low + + [ Tim Gardner ] + + * [Config]: fix changed CONFIG_SYSFS_DEPRECATED_V2 enforcement rules + * [Config]: TWL4030_CORE=n for FTBS + * [Config]: CONFIG_ATH6K_LEGACY=n for FTBS + * [Config]: CONFIG_SOLO6X10=n for FTBS + * [Config]: CONFIG_GPIO_PCH=n for armel FTBS + * [Config]: CONFIG_GPIO_VX855=n for armel FTBS + * [Config]: CONFIG_DRM_NOUVEAU=n for armel FTBS + * [Config]: CONFIG_LINE6_USB=n for armel FTBS + * [Config]: CONFIG_SENSORS_AK8975=n for armel FTBS + * [Config]: CONFIG_I2C_I801=n for armel FTBS + * UBUNTU: SAUCE: AppArmor: Fix unpack of network tables. + * AppArmor: compatibility patch for v5 interface + * AppArmor: compatibility patch for v5 network controll + * Dropped (pre-stable): input: Support Clickpad devices in ClickZone mode + * Dropped: UBUNTU: SAUCE: libata: Add ALPM power state accounting to the AHCI driver + * Dropped: UBUNTU: SAUCE: Added quirk to recognize GE0301 3G modem as an interface. + * Dropped: hid: 3m: Convert to MT slots + * Dropped: HID: magicmouse: don't allow hidinput to initialize the device + * Dropped: HID: magicmouse: simplify touch data bit manipulation + * Dropped: HID: magicmouse: simplify touch down logic + * Dropped: HID: magicmouse: enable Magic Trackpad support + * Dropped: UBUNTU: SAUCE: hid: ntrig: remove sysfs nodes + * Dropped: UBUNTU: SAUCE: hid: ntrig: Setup input filtering manually + * Dropped: UBUNTU: SAUCE: hid: ntrig: New ghost-filtering event logic + * Dropped: UBUNTU: SAUCE: hid: ntrig: identify firmware version (wiggled) + * Dropped: UBUNTU: (pre-stable): input: Support Clickpad devices in ClickZone mode + * Dropped: UBUNTU: SAUCE: KMS: cache the EDID information of the LVDS + * Dropped: UBUNTU: SAUCE: fbcon -- fix race between open and removal of framebuffers + * Dropped: UBUNTU: SAUCE: fbcon -- fix OOPs triggered by race prevention fixes + * Dropped: UBUNTU: SAUCE: x86: implement cs-limit nx-emulation for ia32 + * Dropped: UBUNTU: SAUCE: x86: more tightly confine cs-limit nx-emulation to ia32 only + * Dropped: UBUNTU: SAUCE: [um] Don't use nx_enabled under UML + * Dropped: UBUNTU: SAUCE: x86: brk away from exec rand area + + [ Upstream Kernel Changes ] + + * rebased against 2.6.27-rc1 + + -- Tim Gardner Fri, 22 Oct 2010 19:35:05 -0600 + +linux (2.6.36-1.7) natty; urgency=low + + [ Andy Whitcroft ] + + * rebased to v2.6.36 final + * [Config] update configs following rebase to v2.6.36 final + * [Config] update ports configs following rebase to v2.6.36 final + + [ Upstream Kernel Changes ] + + * rebased to v2.6.36 final + + -- Andy Whitcroft Thu, 21 Oct 2010 14:28:57 +0100 + +linux (2.6.36-1.6) natty; urgency=low + + [ Upstream Kernel Changes ] + + * drop broadcom staging driver preview: + * Revert "Staging: Add initial release of brcm80211 - Broadcom 802.11n + wireless LAN driver." + + -- Andy Whitcroft Wed, 20 Oct 2010 10:41:25 +0100 + +linux (2.6.36-1.5) natty; urgency=low + + [ Andy Whitcroft ] + + * rebase to v2.6.36-rc8 + * updateconfigs following rebase to v2.6.36-rc8 + * updateportsconfigs following rebase to v2.6.36-rc8 + * config -- simplify the kernelconfig interface + * config -- add new config mode 'dumpconfigs' + + [ Tim Gardner ] + + * Simplify the use of CROSS_COMPILER + + [ Upstream Kernel Changes ] + + * drop broadcom staging driver preview: + * Revert "staging: brcm80211: Make compiling of brcm80211.ko and + brcmfmac.ko mutually exclusive." + * Revert "staging: brcm80211: Fix compile issue when BRCM80211_PCI is not + set." + * Revert "Staging: brcm80211: remove driver specific -W options" + * Revert "Staging: brcm80211: clean up makefile cflag lines" + * Revert "staging: brcm80211: add fullmac driver" + * Revert "staging: brcm80211: use string native library" + * Revert "staging: brcm80211: use native ctype library" + * Revert "staging: brcm80211: fix remaining checkpatch errors." + * Revert "staging: brcm80211: fix "ERROR: trailing whitespace."" + * Revert "staging: brcm80211: fix "ERROR: spaces required around that + ..."" + * Revert "staging: brcm80211: fix "ERROR: spaces prohibited around that + ':' ..."" + * Revert "staging: brcm80211: fix "ERROR: space required before that + ..."" + * Revert "staging: brcm80211: fix "ERROR: space required after that ..."" + * Revert "staging: brcm80211: fix "ERROR: space required after that close + brace"" + * Revert "staging: brcm80211: fix "ERROR: space prohibited before + ...close square bracket"" + * Revert "staging: brcm80211: fix "ERROR: space prohibited after that + ..."" + * Revert "staging: brcm80211: fix "ERROR: need consistent spacing around + '*'"" + * Revert "staging: brcm80211: fix 'ERROR: "(foo*)" should be "(foo *)"'" + * Revert "staging: brcm80211: fix "ERROR: Macros w/ mult. statements ... + do - while loop"" + * Revert "staging: brcm80211: fix "ERROR: Macros w/ complex values ... + parenthesis"" + * Revert "staging: brcm80211: fix "ERROR: do not initialise statics to 0 + or NULL"" + * Revert "staging: brcm80211: fix "ERROR: do not initialise globals to 0 + or NULL"" + * Revert "staging: brcm80211: fix "ERROR: while should follow close brace + '}'"" + * Revert "staging: brcm80211: fix "ERROR: that open brace { ... prev + line"" + * Revert "staging: brcm80211: fix "ERROR: trailing statements should be + on next line"" + * Revert "staging: brcm80211: fix "ERROR: do not use assignment in if + condition"" + * Revert "staging: brcm80211: fix "ERROR: return is not a function, + paren..."" + * Revert "staging: brcm80211: fix "ERROR: open brace '{' following + function dec..."" + * Revert "staging: brcm80211: fix 'ERROR: "foo * bar" should be "foo + *bar"'" + * Revert "staging: brcm80211: Fix URLs for firmware files." + * Revert "staging: brcm80211: use '%pM' format to print MAC address" + * Revert "staging: brcm80211: Add contact info to TODO list." + * Revert "staging: brcm80211: Fix some initialisation failure paths" + * Export dump_{write,seek} to binary loader modules + * rebase to v2.6.36-rc8. + + -- Andy Whitcroft Tue, 19 Oct 2010 18:58:11 +0100 + +linux (2.6.36-0.4) natty; urgency=low + + [ Andy Whitcroft ] + + * SAUCE: perf: increase stack footprint to avoid stack-protector warning + (fixes FTBS on powerpc) + + -- Andy Whitcroft Thu, 14 Oct 2010 13:16:16 +0100 + +linux (2.6.36-0.3) natty; urgency=low + + [ Andy Whitcroft ] + + * [Config] disable CONFIG_SCSI_QLA_ISCSI to fix FTBS on powerpc + + -- Andy Whitcroft Thu, 14 Oct 2010 03:01:30 +0100 + +linux (2.6.36-0.2) natty; urgency=low + + [ Andy Whitcroft ] + + * [Config] updateportsconfigs following rebase to 2.6.36-rc7 + (fix FTBS on powerpc) + + -- Andy Whitcroft Wed, 13 Oct 2010 23:25:12 +0100 + +linux (2.6.36-0.1) natty; urgency=low + + [ Andy Whitcroft ] + + * reduce disk usage during buildd builds + - LP: #645653 + * [Config] enforcer -- ensure CONFIG_INIT_PASS_ALL_PARAMS is y + * [Config] armel -- drop omap flavour + + [ Tim Gardner ] + + * Added dropped patch list + * more dropped patches + * [Config] Disable aufs, dmraid-4.5, ndis-wrapper + * [Config] Add support for cross compiling armel + * [Config] CONFIG_SCSI_QLA_ISCSI=n for armel + * [Upstream] drivers/serial/mfd.c: Fix ARM compile error + * [Config]: updateconfigs after adding brcm80211 + * staging: brcm80211: Fix Makefile syntax error + * rebased to v2.6.36-rc7 + + [ Upstream Kernel Changes ] + + * (upstream) IPS driver: don't toggle CPU turbo on unsupported CPUs + * (upstream) IPS driver: verify BIOS provided limits + * intel_ips: Print MCP limit exceeded values. + * Staging: Add initial release of brcm80211 - Broadcom 802.11n wireless + LAN driver. + * staging: brcm80211: Fix some initialisation failure paths + * staging: brcm80211: Add contact info to TODO list. + * staging: brcm80211: use '%pM' format to print MAC address + * staging: brcm80211: Fix URLs for firmware files. + * staging: brcm80211: fix 'ERROR: "foo * bar" should be "foo *bar"' + * staging: brcm80211: fix "ERROR: open brace '{' following function + dec..." + * staging: brcm80211: fix "ERROR: return is not a function, paren..." + * staging: brcm80211: fix "ERROR: do not use assignment in if condition" + * staging: brcm80211: fix "ERROR: trailing statements should be on next + line" + * staging: brcm80211: fix "ERROR: that open brace { ... prev line" + * staging: brcm80211: fix "ERROR: while should follow close brace '}'" + * staging: brcm80211: fix "ERROR: do not initialise globals to 0 or NULL" + * staging: brcm80211: fix "ERROR: do not initialise statics to 0 or NULL" + * staging: brcm80211: fix "ERROR: Macros w/ complex values ... + parenthesis" + * staging: brcm80211: fix "ERROR: Macros w/ mult. statements ... do - + while loop" + * staging: brcm80211: fix 'ERROR: "(foo*)" should be "(foo *)"' + * staging: brcm80211: fix "ERROR: need consistent spacing around '*'" + * staging: brcm80211: fix "ERROR: space prohibited after that ..." + * staging: brcm80211: fix "ERROR: space prohibited before ...close square + bracket" + * staging: brcm80211: fix "ERROR: space required after that close brace" + * staging: brcm80211: fix "ERROR: space required after that ..." + * staging: brcm80211: fix "ERROR: space required before that ..." + * staging: brcm80211: fix "ERROR: spaces prohibited around that ':' ..." + * staging: brcm80211: fix "ERROR: spaces required around that ..." + * staging: brcm80211: fix "ERROR: trailing whitespace." + * staging: brcm80211: fix remaining checkpatch errors. + * staging: brcm80211: use native ctype library + * staging: brcm80211: use string native library + * staging: brcm80211: add fullmac driver + * Staging: brcm80211: clean up makefile cflag lines + * Staging: brcm80211: remove driver specific -W options + * staging: brcm80211: Fix compile issue when BRCM80211_PCI is not set. + * staging: brcm80211: Make compiling of brcm80211.ko and brcmfmac.ko + mutually exclusive. + + -- Andy Whitcroft Tue, 12 Oct 2010 16:00:27 +0100 + +linux (2.6.35-22.33) maverick; urgency=low + + [ Andy Whitcroft ] + + * Revert "SAUCE: Add support for Intellimouse Mode in ALPS touchpad on + Dell E2 series Laptops" + - LP: #641320 + + [ Brian Rogers ] + + * SAUCE: ir-core: Fix null dereferences in the protocols sysfs interface + - LP: #624701 + + [ Christopher James Halse Rogers ] + + * SAUCE: Nouveau: Add quirk framework to disable acceleration + - LP: #544088, #546393 + * SAUCE: Nouveau: Disable acceleration on MacBook Pros + - LP: #546393 + + [ John Johansen ] + + * Revert "SAUCE: AppArmor: allow newer tools to load policy on older + kernels" + * SAUCE: AppArmor: allow newer tools to load policy on older kernels + - LP: #639758 + + [ Mathieu J. Poirier ] + + * SAUCE: Adding vdd_sdi regulator supply to OMAP3EVM + + [ Upstream Kernel Changes ] + + * ALSA: HDA: Enable internal speaker on Dell M101z + - LP: #640254 + + -- Leann Ogasawara Fri, 17 Sep 2010 13:21:28 -0700 + +linux (2.6.35-22.32) maverick; urgency=low + + [ Arjan van de Ven ] + + * SAUCE: libata: Add ALPM power state accounting to the AHCI driver + + [ David Henningsson ] + + * SAUCE: ALSA: HDA: Enable internal mic on Dell E6410 and Dell E6510 + - LP: #605047, #628961 + + [ John Johansen ] + + * [Upstream] AppArmor: Fix splitting an fqname into separate namespace + and profile names + - LP: #615947 + * [Upstream] AppArmor: Fix locking from removal of profile namespace + - LP: #615947 + * SAUCE: AppArmor: allow newer tools to load policy on older kernels + - LP: #639758 + * SAUCE: Improve Amazon EBS performance for EC2 + - LP: #634316 + + [ Leann Ogasawara ] + + * Revert "SAUCE: i915 KMS -- blacklist i855" + * Revert "SAUCE: i915 KMS -- blacklist i845g" + * Revert "SAUCE: i915 KMS -- blacklist i830" + * Revert "SAUCE: i915 KMS -- support disabling KMS for known broken + devices" + * execute module-inclusion within a subshell + - LP: #621175 + + [ Upstream Kernel Changes ] + + * (pre-stable) bounce: call flush_dcache_page() after bounce_copy_vec() + - LP: #633227 + * (pre-stable) drm/i915: don't enable self-refresh on Ironlake + - LP: #629711 + * (pre-stable) mm: Move vma_stack_continue into mm.h + * x86, hwmon: Fix unsafe smp_processor_id() in thermal_throttle_add_dev + - LP: #601073 + * PM / Runtime: Make runtime_status attribute not debug-only (v. 2) + * PM / Runtime: Add runtime PM statistics (v3) + * compat: Make compat_alloc_user_space() incorporate the access_ok() + - CVE-2010-3081 + * x86-64, compat: Test %rax for the syscall number, not %eax + - CVE-2010-3301 + * x86-64, compat: Retruncate rax after ia32 syscall entry tracing + - CVE-2010-3301 + + -- Leann Ogasawara Tue, 14 Sep 2010 08:46:49 -0700 + +linux (2.6.35-21.31) maverick; urgency=low + + [ Andy Whitcroft ] + + * bodge linux-libc-dev package version due to ti-omap4 error + * linux-libc-dev -- ensure we can only build this on debian.master + + -- Leann Ogasawara Mon, 13 Sep 2010 09:54:31 -0700 + +linux (2.6.35-21.30) maverick; urgency=low + + [ Andy Whitcroft ] + + * SAUCE: fbcon -- fix OOPs triggered by race prevention fixes + - LP: #614008 + + [ Daniel Lezcano ] + + * SAUCE: fix compilation warning when CONFIG_SECURITY is not set + + [ Henrik Rydberg ] + + * SAUCE: Input: wacom - add fuzz parameters to features + * SAUCE: Input: wacom - collect device quirks into single function + * SAUCE: Input: wacom - add support for the Bamboo Touch trackpad + * SAUCE: Input: wacom - add a quirk for low resolution Bamboo devices + * SAUCE: hid: ntrig: Remove unused device ids + * SAUCE: hid: ntrig: remove sysfs nodes + * SAUCE: hid: ntrig: Correct logic for quirks + * SAUCE: hid: ntrig: zero-initialize ntrig struct + * SAUCE: hid: ntrig: Setup input filtering manually + * SAUCE: hid: ntrig: New ghost-filtering event logic + + [ Leann Ogasawara ] + + * SAUCE: ndiswrapper: Initialize buffer index and check its value + - LP: #613796 + + [ Manoj Iyer ] + + * SAUCE: Add support for Intellimouse Mode in ALPS touchpad on Dell E2 + series Laptops + - LP: #632884 + + [ Ping Cheng ] + + * SAUCE: Input: wacom - parse the Bamboo device family + + [ Rafi Rubin ] + + * SAUCE: hid: ntrig: identify firmware version (wiggled) + + [ Tim Gardner ] + + * [Config] CONFIG_NL80211_TESTMODE=n + + [ Upstream Kernel Changes ] + + * Revert "input: mt: Add support for the Bamboo Touch trackpad" + * e1000e: initial support for 82579 LOMs + * e1000e: correct MAC-PHY interconnect register offset for 82579 + * (pre-stable) ALSA: hda - Add a new hp-laptop model for Conexant 5066, + tested on HP G60 + - LP: #587388 + * DSS2: Don't power off a panel twice + - LP: #588243 + * mmc: build fix: mmc_pm_notify is only available with CONFIG_PM=y + * Input: i8042 - reset keyboard controller wehen resuming from S2R + - LP: #86820 + * ALSA: hda - Fix beep frequency on IDT 92HD73xx and 92HD71Bxx codecs + - LP: #414795 + * agp/intel: Support the extended physical addressing bits on + Sandybridge. + - LP: #632488 + * drm/i915,intel_agp: Add support for Sandybridge D0 + - LP: #632488 + * (pre-stable) intel_agp,i915: Add more sandybridge graphics device ids + - LP: #632488 + * mmc: omap: fix for bus width which improves SD card's peformance. + + -- Leann Ogasawara Tue, 07 Sep 2010 09:58:52 -0700 + +linux (2.6.35-20.29) maverick; urgency=low + + [ Andy Whitcroft ] + + * SAUCE: i915 KMS -- support disabling KMS for known broken devices + - LP: #563277 + * SAUCE: i915 KMS -- blacklist i830 + - LP: #542208, #563277 + * SAUCE: i915 KMS -- blacklist i845g + - LP: #541492, #563277 + * SAUCE: i915 KMS -- blacklist i855 + - LP: #511001, #541511, #563277 + + [ Leann Ogasawara ] + + * [Config] Enable CONFIG_SENSORS_PKGTEMP=m + - LP: #601073 + * ARM: Temporarily disable module check for armel + * rebase to v2.6.35.4 + * [Config] update configs following rebase to v2.6.35.4 + + [ Ricardo Salveti de Araujo ] + + * [Config] Change CONFIG_LEDS_TRIGGER_HEARTBEAT from module to built-in + in Omap + + [ Tim Gardner ] + + * [Config] Added be2net, be2scsi to udebs + - LP: #628776 + + [ Upstream Kernel Changes ] + + * x86, cpu: Package Level Thermal Control, Power Limit Notification + definitions + - LP: #601073 + * x86, hwmon: Package Level Thermal/Power: pkgtemp hwmon driver + - LP: #601073 + * x86, hwmon: Package Level Thermal/Power: thermal throttling handler + - LP: #601073 + * x86, hwmon: Package Level Thermal/Power: power limit + - LP: #601073 + * x86, hwmon: Package Level Thermal/Power: pkgtemp documentation + - LP: #601073 + * hid: 3m: Adjust to sequential MT HID protocol + * hid: 3m: Convert to MT slots + * hid: 3m: Correct touchscreen emulation + * hid: 3m: Adjust major / minor axes to scale + * input: bcm5974: Adjust major / minor to scale + * HID: magicmouse: don't allow hidinput to initialize the device + * HID: magicmouse: simplify multitouch feature request + * HID: magicmouse: simplify touch data bit manipulation + * HID: magicmouse: simplify touch down logic + * HID: magicmouse: remove timestamp logic + * HID: magicmouse: enable Magic Trackpad support + * HID: magicmouse: Adjust major / minor axes to scale + * mmc: fix all hangs related to mmc/sd card insert/removal during + suspend/resume + - LP: #477106 + * drm/i915: fix VGA plane disable for Ironlake+ + - LP: #602281 + + -- Leann Ogasawara Mon, 30 Aug 2010 08:38:01 -0700 + +linux (2.6.35-19.28) maverick; urgency=low + + [ Leann Ogasawara ] + + * No changes from 2.6.35-19.27. Some armel udebs were accidentally deleted + from the archive and a no-change rebuild was attempted. However, the ABI + did not get bumped and resulted in build failures for 2.6.35-19.27. Fix + up the ABI and re-upload. + + -- Leann Ogasawara Sat, 28 Aug 2010 16:42:27 -0700 + +linux (2.6.35-19.27) maverick; urgency=low + + [ Leann Ogasawara ] + + * No changes from 2.6.35-19.26. Some armel udebs were accidentally deleted + from the archive. + + -- Leann Ogasawara Fri, 27 Aug 2010 08:58:35 -0700 + +linux (2.6.35-19.26) maverick; urgency=low + + [ Upstream Kernel Changes ] + + * ARM: OMAP: Beagle: revision detection + * ARM: OMAP: Beagle: only Cx boards use pin 23 for write protect + * ARM: OMAP: Beagle: no gpio_wp pin connection on xM + + -- Leann Ogasawara Thu, 26 Aug 2010 09:15:09 -0700 + +linux (2.6.35-19.25) maverick; urgency=low + + [ Jarod Wilson ] + + * SAUCE: Bring in staging/lirc from 2.6.36 + - LP: #609234 + * SAUCE: Update ir-core to linuxtv/other which should be merged for + 2.6.36. + - LP: #609234 + * SAUCE: Fix memleaks in imon and mceusb drivers + - LP: #609234 + * SAUCE: Bring in streamzap support from linuxtv/other + - LP: #609234 + + [ Mario Limonciello ] + + * Remove ubuntu/lirc in favor of staging/lirc from 2.6.36 + - LP: #609234 + + [ Mathieu J. Poirier ] + + * SAUCE: ARM: adding i2c eeprom driver to read EDID + - LP: #608279 + + [ Upstream Kernel Changes ] + + * intel_idle: disable module support + - LP: #615265 + * (pre-stable) ALSA: hda - Ensure codec patch files are checked for the + correct codec ID + * (pre-stable) ALSA: hda - Rename iMic to Int Mic on Lenovo NB0763 + - LP: #605101 + * (pre-stable) ALSA: HDA: Use model=auto for LG R510 + - LP: #495134 + * (pre-stable) ALSA: HDA: Add Sony VAIO quirk for ALC269 + - LP: #519066 + * (pre-stable) ALSA: HDA: Fix front mic on Dell Precision M6500 + - LP: #519066 + * input: mt: Initialize slots to unused (rev2) + * input: mt: Add support for the Bamboo Touch trackpad + * hid: Add a hid quirk for input sync override + + -- Leann Ogasawara Mon, 23 Aug 2010 12:42:52 -0700 + +linux (2.6.35-18.24) maverick; urgency=low + + [ Colin Watson ] + + * Pass DEB_MAINT_PARAMS to hook scripts + + [ Leann Ogasawara ] + + * [Config] Add CONFIG_INPUT_UINPUT=y to config enforcer + - LP: #584812 + * rebase to v2.6.35.3 + + [ Upstream Kernel Changes ] + + * (pre-stable) dell-wmi: Add support for eject key on Dell Studio 1555 + - LP: #609234 + * can: add limit for nframes and clean up signed/unsigned variables + - CVE-2010-2959 + * drm: Initialize ioctl struct when no user data is present + - CVE-2010-2803 + * ARM: initial stack protector (-fstack-protector) support + * ARM: stack protector: change the canary value per task + * [ARM] implement arch_randomize_brk() + * [ARM] add address randomization to mmap() + * ARM: fix ASLR of PIE executables + + -- Leann Ogasawara Sun, 22 Aug 2010 19:22:04 -0700 + +linux (2.6.35-17.23) maverick; urgency=low + + [ Jeremy Kerr ] + + * [Config] build-in uinput module + - LP: #584812 + + [ Leann Ogasawara ] + + * Revert "[Config] [FTBS] ia64: Temporarily disable CONFIG_CEPH_FS" + * Revert "[Config] [FTBS] ia64: Temporarily disable gpiolib" + * Revert "[Config] [FTBS] sparc: Temporarily disable + CONFIG_MTD_NAND_DENALI" + * Revert "[Config] [FTBS] sparc: Temporarily disable + CONFIG_MFD_JANZ_CMODIO" + * Revert "[Config] [FTBS] sparc: Temporarily disable + CONFIG_INFINIBAND_QIB" + * [Config] Enable INTEL_IPS + - LP: #601057 + * Remove ia64 support + * [Config] Update portsconfigs after removing ia64 support + * Remove sparc support + * [Config] Update portsconfigs after removing sparc support + + [ Linus Torvalds ] + + * (pre-stable) mm: fix page table unmap for stack guard page properly + + [ Mathieu J. Poirier ] + + * SAUCE: (no-up) ARM: Resetting power_mode to its original value. + - LP: #591941 + + [ Upstream Kernel Changes ] + + * timer: add on-stack deferrable timer interfaces + - LP: #601057 + * x86 platform driver: intelligent power sharing driver + - LP: #601057 + * IPS driver: add GPU busy and turbo checking + - LP: #601057 + * X86: intel_ips, check for kzalloc properly + - LP: #601057 + * ips driver: make it less chatty + - LP: #601057 + + -- Leann Ogasawara Tue, 17 Aug 2010 09:38:08 -0700 + +linux (2.6.35-16.22) maverick; urgency=low + + [ Andy Whitcroft ] + + * debian -- more agressivly clean up after depmod on purge + - LP: #618591 + + [ Henrik Rydberg ] + + * SAUCE: hid: 3m: Simplify touchsreen emulation logic + + [ Leann Ogasawara ] + + * ubuntu: iscsitarget -- version 1.4.20.2 + * ubuntu: rtl8192se -- update to version 0017.0507.2010 + * rebase to v2.6.35.2 + * [Config] update configs following rebase to v2.6.35.2 + * [Config] update ports configs following rebase to v2.6.35.2 + + [ Luke Yelavich ] + + * [Config] Enable new firewire stack on powerpc + + [ Mathieu J. Poirier ] + + * SAUCE: (drop after 2.6.35) ARM: Using gpmc function to init nand flash. + - LP: #608266 + + -- Leann Ogasawara Thu, 12 Aug 2010 09:58:01 -0700 + +linux (2.6.35-15.21) maverick; urgency=low + + [ Luke Yelavich ] + + * [Config] CONFIG_SND_USB_UA101=m for all architectures + + [ Upstream Kernel Changes ] + + * Input: introduce MT event slots + * Input: document the MT event slot protocol + * (pre-stable) sched: Revert nohz_ratelimit() for now + * (pre-stable) drm/radeon/kms: add missing copy from user + - LP: #606081 + + [ Leann Ogasawara ] + + * rebase to v2.6.35.1 + + -- Leann Ogasawara Mon, 09 Aug 2010 09:24:04 -0700 + +linux (2.6.35-14.20) maverick; urgency=low + + [ Andy Whitcroft ] + + * update Vcs-Git to point to maverick repo + * debian -- include the debian packaging in the -source package + - LP: #608674 + * select debian source format 1.0 + * add support for building selected stages of kernel + - LP: #603087 + * cleanup conditional dependancy handling + - LP: #603087 + + [ Upstream Kernel Changes ] + + * ALSA: hda - Handle missing NID 0x1b on ALC259 codec + - LP: #582199, #586418, #588031 + * ALSA: hda - Handle pin NID 0x1a on ALC259/269 + - LP: #582199, #586418, #588031 + * sched: Revert nohz_ratelimit() for now + + -- Leann Ogasawara Tue, 03 Aug 2010 08:46:47 -0700 + +linux (2.6.35-14.19) maverick; urgency=low + + [ Leann Ogasawara ] + + * rebase to v2.6.35 + + -- Leann Ogasawara Sun, 01 Aug 2010 10:35:56 -0700 + +linux (2.6.35-13.18) maverick; urgency=low + + [ Andy Whitcroft ] + + * SAUCE: (no-up) Modularize vesafb -- fix initialisation + * SAUCE: add tracing for user initiated readahead requests + * SAUCE: vt -- maintain bootloader screen mode and content until vt + switch + * SAUCE: vt -- allow grub to request automatic vt_handoff + * SAUCE: fbcon -- fix race between open and removal of framebuffers + * SAUCE: drm -- stop early access to drm devices + + [ Bryan Wu ] + + * CONFIG: compile in OTG driver and Transceiver driver + - LP: #566645 + * remove OTG modules from modules list file + + [ John Johansen ] + + * SAUCE: AppArmor: -- sync to AppArmor mainline 2010-07-27 + - LP: #581525, #599450 + * SAUCE: AppArmor: -- sync to AppArmor mainline 2010-07-29 + * SAUCE: AppArmor 2.4 compatibility patch + * SAUCE: AppArmor: Allow dfa backward compatibility with broken userspace + * SAUCE: fix pv-ops for legacy Xen + * SAUCE: blkfront: default to sd devices + * [Config] Build in drivers required for Xen pv-ops + + [ Leann Ogasawara ] + + * Revert "[Upstream] i915: Use the correct mask to detect i830 aperture + size." + + [ Lee Jones ] + + * SAUCE: ARM: OMAP: Add macros for comparing silicon revision + - LP: #608095 + * SAUCE: OMAP: DSS2: check for both cpu type and revision, rather than + just revision + - LP: #608095 + * SAUCE: OMAP: DSS2: enable hsclk in dsi_pll_init for OMAP36XX + - LP: #608095 + * SAUCE: ARM: OMAP: Beagle: support twl gpio differences on xM + - LP: #608095 + + [ Upstream Kernel Changes ] + + * agp/intel: Use the correct mask to detect i830 aperture size. + - LP: #597075 + + -- Leann Ogasawara Fri, 30 Jul 2010 15:46:59 -0700 + +linux (2.6.35-12.17) maverick; urgency=low + + [ Leann Ogasawara ] + + * rebase to v2.6.35-rc6 + * [Config] update configs following rebase to v2.6.35-rc6 + * [Config] update ports configs following rebase to v2.6.35-rc6 + * SAUCE: [FTBS] armel: define KEY_F10 and KEYF11 + + [ Leann Ogasawara ] + + * rebase to v2.6.35-rc6 + + -- Leann Ogasawara Fri, 23 Jul 2010 16:16:38 +0200 + +linux (2.6.35-11.16) maverick; urgency=low + + [ Leann Ogasawara ] + + * Bump ABI for new compiler update + + -- Leann Ogasawara Fri, 23 Jul 2010 10:24:58 +0200 + +linux (2.6.35-10.15) maverick; urgency=low + + [ Leann Ogasawara ] + + * Revert "SAUCE: ensure vga16fb loads if no other driver claims the VGA + device" + * [Config] Enable CONFIG_M686=y + - LP: #592495 + + [ Upstream Kernel Changes ] + + * tracing: Add alignment to syscall metadata declarations + + -- Leann Ogasawara Tue, 20 Jul 2010 18:18:49 +0200 + +linux (2.6.35-9.14) maverick; urgency=low + + [ Andy Whitcroft ] + + * ubuntu: AUFS -- add BOM and automated update script + * ubuntu: AUFS -- update to b37c575759dc4535ccc03241c584ad5fe69e3b25 + + [ John Johansen ] + + * [Config] Enable DRBD as a module + + [ Kees Cook ] + + * SAUCE: Yama: verify inode is symlink to avoid bind mounts + - LP: #604407 + + [ Leann Ogasawara ] + + * [Config] Disable CONFIG_DRM_VMWGFX (staging driver) + - LP: #606139 + * [Config] ports: Disable CONFIG_DRM_VMWGFX (staging driver) + - LP: #606139 + * [Config] Enable CONFIG_DEBUG_STRICT_USER_COPY_CHECKS=y + * [Config] ports: Enable CONFIG_DEBUG_STRICT_USER_COPY_CHECKS=y + + [ Lee Jones ] + + * Stop ARM boards crashing when CUPS is loaded + - LP: #601226 + + [ Upstream Kernel Changes ] + + * perf probe: Support tracing an entry of array + * perf probe: Support static and global variables + + -- Leann Ogasawara Fri, 16 Jul 2010 14:38:17 -0700 + +linux (2.6.35-8.13) maverick; urgency=low + + [ Kees Cook ] + + * SAUCE: Yama: check PTRACE using thread group leader + * SAUCE: Yama: search for PTRACE exceptions via thread group leader + - LP: #603716 + + [ Leann Ogasawara ] + + * rebase to v2.6.35-rc5 + * [Config] update configs following rebase to v2.6.35-rc5 + + [ Nicolas Pitre ] + + * SAUCE: make ndiswrapper available on X86 only + + [ Tim Gardner ] + + * [Config] Added ums-cypress to udeb + - LP: #576066 + * SAUCE: fix build error with CONFIG_BLK_DEV_INITRD=n + * [Config] CONFIG_NDISWRAPPER=m across all configs + + [ Upstream Kernel Changes ] + + * HID: magicmouse: report last touch up + * rebase to 2.6.35-rc5 + + -- Leann Ogasawara Tue, 13 Jul 2010 18:57:59 -0700 + +linux (2.6.35-7.12) maverick; urgency=low + + [ Tim Gardner ] + + * [Upstream] i915: Use the correct mask to detect i830 aperture size. + - LP: #597075 + + [ Upstream Kernel Changes ] + + * (drop after 2.6.35) drm/radeon/kms: add ioport register access + (squashed) + + -- Tim Gardner Thu, 08 Jul 2010 09:53:13 -0600 + +linux (2.6.35-7.11) maverick; urgency=low + + [ Tim Gardner ] + + * [Config] CONFIG_X86_MRST=n + + [ Upstream Kernel Changes ] + + * (drop after 2.6.35-rc5) writeback: remove writeback_inodes_wbc + * (drop after 2.6.35-rc5) writeback: split writeback_inodes_wb + * (drop after 2.6.35-rc5) writeback: simplify the write back thread queue + + -- Tim Gardner Tue, 06 Jul 2010 18:39:08 -0600 + +linux (2.6.35-7.10) maverick; urgency=low + + [ Kees Cook ] + + * SAUCE: security: create task_free security callback + * SAUCE: Yama: add PTRACE exception tracking and interface + * SAUCE: security: unconditionally chain to Yama LSM + * Revert "SAUCE: ptrace: restrict ptrace scope to children" + * Revert "SAUCE: fs: block hardlinks to non-accessible sources" + * Revert "SAUCE: fs: block cross-uid sticky symlinks" + * [Upstream] security: Yama LSM + * [Config] Enable CONFIG_SECURITY_YAMA=y + + [ Tim Gardner ] + + * [Config] updateconfigs/updateportsconfigs after rebase to 2.6.35-rc4 + + [ Upstream Kernel Changes ] + + * rebase to 2.6.35-rc4 + + -- Leann Ogasawara Thu, 01 Jul 2010 08:55:57 -0700 + +linux (2.6.35-6.9) maverick; urgency=low + + [ Tim Gardner ] + + * [Upstream] direct_splice_actor() should not use pos in sd + - LP: #588861 + + -- Leann Ogasawara Mon, 28 Jun 2010 12:35:49 -0700 + +linux (2.6.35-6.8) maverick; urgency=low + + [ Mathieu J. Poirier ] + + * ARM: Adding regulator supply for vdds_sdi. + - LP: #597904 + + -- Leann Ogasawara Sun, 27 Jun 2010 16:34:43 -0700 + +linux (2.6.35-6.7) maverick; urgency=low + + [ Alberto Milone ] + + * [Upstream] Add support for the ATIF ACPI method to the radeon driver + + [ Chase Douglas ] + + * [Upstream] HID: magicmouse: scroll on entire surface, not just middle + of mouse + * [Upstream] HID: magicmouse: disable and add module param for scroll + acceleration + * [Upstream] HID: magicmouse: properly account for scroll movement in + state + * [Upstream] HID: magicmouse: add param for scroll speed + * [Upstream] HID: magicmouse: enable horizontal scrolling + + [ Henrik Rydberg ] + + * [Upstream] Input: evdev - convert to dynamic event buffer + * [Upstream] Input: evdev - use driver hint to compute size of event + buffer + * [Upstream] Input: bcm5974 - set the average number of events per MT + event packet + * [Upstream] Input: hid-input - use a larger event buffer for MT devices + * [Upstream] Input: evdev - never leave the client buffer empty after + write + + [ John Johansen ] + + * SAUCE: AppArmor: -- mainline 2010-06-23 + * SAUCE: AppArmor 2.4 compatibility patch + * SAUCE: fs: block hardlinks to non-accessible sources AppArmor portion + + [ Leann Ogasawara ] + + * [Config] Enable CONFIG_INTR_REMAP=y + - LP: #597091 + * [Config] Enable CONFIG_X86_X2APIC + - LP: #597091 + + [ Mathieu J. Poirier ] + + * [Config] ARM: Turning off CONFIG_CPU_IDLE on omap + - LP: #594382 + + -- Leann Ogasawara Thu, 24 Jun 2010 12:19:48 -0700 + +linux (2.6.35-5.6) maverick; urgency=low + + [ Amit Kucheria ] + + * [Config] update omap flavour description + + [ Andy Whitcroft ] + + * update to ubuntu-debian:508b7aa34b578c0d1e51bfb571f2bfb824dc65ac + - LP: #570500, #576274 + * SAUCE: add option to hand off all kernel parameters to init + - LP: #586386 + * [Config] enable passing all kernel command line to init + - LP: #586386 + * [Config] disable CONFIG_VMI + - LP: #537601 + * [Config] enable CONFIG_IPV6_SIT_6RD + - LP: #591869 + * [Config] enable CONFIG_VMWARE_BALOON as module + - LP: #592039 + + [ Leann Ogasawara ] + + * Revert "SAUCE: pm: Config option to disable handling of console during + suspend/resume" + - LP: #594885 + * [Config] Remove CONFIG_PM_DISABLE_CONSOLE + * [Config] ports: enable passing all kernel command line to init + - LP: #586386 + * [Config] Enable CONFIG_FB_VESA=y for x86 + * [Config] Add CONFIG_FRAMEBUFFER_CONSOLE=y to config enforcer + * [Config] Add CONFIG_FB_VESA=y for x86 to config enforcer + * [Config] Enable CONFIG_TASK_DELAY_ACCT=y + - LP: #493156 + + [ Mathieu Poirier ] + + * ARM: Adding MosChip MCS7830 to nic-usb + - LP: #584920 + + [ Upstream Kernel Changes ] + + * Revert "[Upstream] docbook: need xmldoclinks for all doc types" + * docbook: need xmldoclinks for all doc types + * perf probe: Add kernel source path option + + -- Leann Ogasawara Thu, 17 Jun 2010 08:05:29 -0700 + +linux (2.6.35-4.5) maverick; urgency=low + + [ Leann Ogasawara ] + + * Revert "[Upstream] (evdev) Use driver hint to compute the evdev buffer + size (rev2)" + * Revert "[Upstream] (evdev) Convert to dynamic event buffer (rev4)" + * Revert "[Upstream] (evdev) Use multi-reader buffer to save space + (rev4)" + * Revert "SAUCE: drivers: Remove some duplicate device entries in various + modules" + * [Upstream] USB: option: Remove duplicate AMOI_VENDOR_ID + * [Upstream] Revert "USB: Adding support for HTC Smartphones to ipaq" + * [Upstream] p54usb: Comment out duplicate Medion MD40900 device id + + [ Tim Gardner ] + + * [Config] CONFIG_NFS_FSCACHE=y + - LP: #440522 + * [Config] CONFIG_FSCACHE_STATS=y, CONFIG_FSCACHE_HISTOGRAM=y + - LP: #440522 + + -- Leann Ogasawara Wed, 16 Jun 2010 08:43:07 -0700 + +linux (2.6.35-3.4) maverick; urgency=low + + [ Andy Whitcroft ] + + * debian -- ensure the version number is clean + + [ Henrik Rydberg ] + + * [Upstream] Introduce MT event slots (rev 5) + * [Upstream] Document the MT event slot protocol (rev5) + * [Upstream] (evdev) Use multi-reader buffer to save space (rev4) + * [Upstream] (evdev) Convert to dynamic event buffer (rev4) + * [Upstream] (evdev) Use driver hint to compute the evdev buffer size + (rev2) + + [ Leann Ogasawara ] + + * Revert "SAUCE: Add MODULE_ALIAS for Dell WMI module" + * Revert "SAUCE: hostap: send events on data interface as well as master + interface" + * Revert "Fix webcam having USB ID 0ac8:303b" + * Revert "SAUCE: toshiba_acpi -- pull in current -dev version of driver" + * rebase to v2.6.35-rc3 + + [ Maxim Levitsky ] + + * [Config] Enable new Smartmedia/xD translation layer + - LP: #202490 + + [ Upstream Kernel Changes ] + + * net: fix deliver_no_wcard regression on loopback device + + [ Upstream changes ] + + * rebased to v2.6.35-rc3 + + -- Leann Ogasawara Thu, 10 Jun 2010 16:15:22 -0700 + +linux (2.6.35-2.3) maverick; urgency=low + + [ Bryan Wu ] + + * CONFIG: enforce -- make sure we disable CONFIG_LOCALVERSION_AUTO + + [ Leann Ogasawara ] + + * [Config] armel: Enable CONFIG_BNX2=m + * [Config] ports: Enable CONFIG_BNX2X=m + * SAUCE: armel: define get_dma_ops to fix FTBS + + [ Tim Gardner ] + + * [Upstream] net: Print num_rx_queues imbalance warning only when there + are allocated queues + - LP: #591416 + + -- Leann Ogasawara Wed, 09 Jun 2010 08:27:41 -0700 + +linux (2.6.35-2.2) maverick; urgency=low + + [ Andy Whitcroft ] + + * [Config] d-i: make armel configuration versatile flavour specific + - LP: #588805 + * [Config] d-i: enable .udebs for omap flavour + - LP: #588805 + + [ Kees Cook ] + + * ptrace: limit scope to attach only (allow read) + - LP: #589656 + + [ Leann Ogasawara ] + + * rebase to v2.6.35-rc2 + * [Config] update configs following rebase to v2.6.35-rc2 + * [Config] update port configs following rebase to v2.6.35-rc2 + + [ Lee Jones ] + + * Enable perf to be more helpful when perf_ does not exist. + - LP: #570500 + * 'fdr editconfig' modification. Easily skip over unwanted menuconfigs. + + [ Tim Gardner ] + + * [Config] Update bnx2 udeb firmware files + - LP: #589304 + + [ Upstream changes ] + + * rebased to v2.6.35-rc2 + + -- Leann Ogasawara Mon, 07 Jun 2010 09:45:04 -0700 + +linux (2.6.35-1.1) maverick; urgency=low + + [ Andy Whitcroft ] + + * ubuntu: AUFS -- update to standalone 2.6.35-rcN as at 20100601 + - LP: #587888 + * ubuntu: AUFS -- track changes to the arguements to fop fsync() + + [ Leann Ogasawara ] + + * rebase to v2.6.35-rc1 + * [Config] update configs following rebase to v2.6.35-rc1 + * [Config] update port configs following rebase to v2.6.35-rc1 + * SAUCE: lirc: rename usb_buffer_alloc() and usb_buffer_free() + * SAUCE: ndiswrapper: rename usb_buffer_alloc() and usb_buffer_free() + * SAUCE: ndiswrapper: convert multicast list to list_head + * [Config] [FTBS] armel: Temporarily disable CONFIG_GPIO_JANZ_TTL + * [Config] [FTBS] ia64: Temporarily disable gpiolib + * [Config] [FTBS] ia64: Temporarily disable CONFIG_CEPH_FS + * [Config] [FTBS] sparc: Temporarily disable CONFIG_INFINIBAND_QIB + * [Config] [FTBS] sparc: Temporarily disable CONFIG_MFD_JANZ_CMODIO + * [Config] [FTBS] armel: Temporarily disable CONFIG_MFD_JANZ_CMODIO + * [Config] [FTBS] armel: Temporarily disable CONFIG_DT3155 + * [Config] [FTBS] sparc: Temporarily disable CONFIG_MTD_NAND_DENALI + * [Config] [FTBS] armel: Temporarily disable bnx2 + * [Config] [FTBS] armel: Temporarily disable CONFIG_SERIAL_UARTLITE + * SAUCE: [FTBS] armel: Don't include asm/agp.h for ttm + * SAUCE: [FTBS] armel: include linux/dma-mapping.h + * SAUCE: [FTBS] armel: replace omap_set_gpio_debounce with + gpio_set_debounce + + [ Upstream Kernel Changes ] + + * of/usb: fix build error due to of_node pointer move + * n2_crypto: Fix build after of_device/of_platform_driver changes. + * powerpc/fsl-booke: fix the case where we are not in the first page + * powerpc/fsl-booke: Move the entry setup code into a seperate file + * powerpc/kexec: Add support for FSL-BookE + * greth: Fix build after OF device conversions. + + [ Upstream changes ] + + * rebased to v2.6.35-rc1 + + -- Leann Ogasawara Fri, 04 Jun 2010 23:01:52 -0700 + +linux (2.6.35-1.0) UNRELEASED; urgency=low + + [ Leann Ogasawara ] + + * Null entry. + + -- Leann Ogasawara Wed, 02 Jun 2010 15:17:41 -0700 + +linux (2.6.34-5.14) maverick; urgency=low + + [ Tim Gardner ] + + * [Config] Added module inclusion support + * [Config] Added virtual flavour module inclusion list and d-i package + definitions + + -- Leann Ogasawara Wed, 02 Jun 2010 12:58:14 -0700 + +linux (2.6.34-5.13) maverick; urgency=low + + [ Andy Whitcroft ] + + * Revert "ubuntu: AUFS -- aufs2 20091209" + * Revert "ubuntu: AUFS -- export various core functions + (aufs2-standalone.patch)" + * Revert "ubuntu: AUFS -- export various core functions + (aufs2-base.patch)" + * ubuntu: AUFS -- aufs2 base patch for linux-2.6.34 + - LP: #587888 + * ubuntu: AUFS -- aufs2 standalone patch for linux-2.6.34 + - LP: #587888 + * ubuntu: AUFS -- update to standalone 2.6.34 as at 20100601 + - LP: #587888 + * [Config] AUFS -- enable aufs options + - LP: #587888 + + -- Leann Ogasawara Tue, 01 Jun 2010 08:56:43 -0700 + +linux (2.6.34-5.12) maverick; urgency=low + + [ Andy Whitcroft ] + + * enforce -- ensure SYSFS compatibility is disabled + + [ Chase Douglas ] + + * build with libdw-dev for perf probe symbol support + * maverick ftrace configuration changes + + [ Kees Cook ] + + * Revert "SAUCE: x86: brk away from exec rand area" + * Revert "SAUCE: [um] Don't use nx_enabled under UML" + * Revert "SAUCE: [x86] implement cs-limit nx-emulation for ia32" + * SAUCE: x86: implement cs-limit nx-emulation for ia32 + - LP: #369978 + * SAUCE: x86: more tightly confine cs-limit nx-emulation to ia32 only + * SAUCE: x86: brk away from exec rand area + - LP: #452175 + * SAUCE: ptrace: restrict ptrace scope to children + + [ Leann Ogasawara ] + + * Add new omap flavour to getabis + * [Config] Enable CONFIG_FRAMEBUFFER_CONSOLE=y for all archs + - LP: #585490 + * build/modules: Temorarily add ignore.modules + * ubuntu: iscsitarget -- version 1.4.20.1 + + [ Loïc Minier ] + + * SAUCE: [um] Don't use nx_enabled under UML + - LP: #524849 + + -- Leann Ogasawara Fri, 28 May 2010 08:27:17 -0700 + +linux (2.6.34-4.11) maverick; urgency=low + + [ Amit Kucheria ] + + * SAUCE: omap: remove calls to usb_nop_xceiv_register from board files + * [Config] Add support for OMAP-mainline flavour + + [ Andy Whitcroft ] + + * SAUCE: powerpc: fix compile error when ptrace.h is included from + userspace + - LP: #583733 + + [ Chase Douglas ] + + * Revert "SAUCE: Don't register vga16fb framebuffer if other framebuffers + are present" + * Revert "SAUCE: Disable function tracing after hitting __schedule_bug" + * Revert "SAUCE: drm/i915: don't change DRM configuration when releasing + load detect pipe" + + [ Kees Cook ] + + * SAUCE: fs: block cross-uid sticky symlinks + * SAUCE: fs: block hardlinks to non-accessible sources + + [ Koen Kooi ] + + * SAUCE: board-omap3-beagle: add DSS2 support + + [ Leann Ogasawara ] + + * Revert "staging/go7007 -- disable" + * Revert "[Config] staging/winbond -- disable" + * Revert "Disable 4MB page tables for Atom, work around errata AAE44" + * Revert "SAUCE: sync before umount to reduce time taken by ext4 umount" + * Revert "SAUCE: Enable an e1000e Intel Corporation 82567 Gigabit + controller" + * Revert "SAUCE: Fix MODULE_IMPORT/MODULE_EXPORT" + * Revert "SAUCE: Created MODULE_EXPORT/MODULE_IMPORT macros" + * Revert "SAUCE: input/mouse/alps: Do not call psmouse_reset() for alps" + * Revert "SAUCE: r8169: disable TSO by default for RTL8111/8168B + chipsets." + * Revert "[Upstream] b43: Declare all possible firmware files." + * Revert "add Breaks: against hardy lvm2" + * Revert "SAUCE: Guest OS does not recognize a lun with non zero target + id on Vmware ESX Server" + * Revert "SAUCE: Catch nonsense keycodes and silently ignore" + * [Config] Enable CONFIG_ECRYPT_FS=y for ports + * [Config] Enable CONFIG_USB=y for armel and sparc + * [Config] Enable CONFIG_SCSI=y for ia64 and sparc + * [Config] Enable CONFIG_RFKILL=y for ports + * [Config] Enable CONFIG_ATH9K_DEBUGFS=y + * [Config] Enable CONFIG_IWMC3200TOP_DEBUGFS=y + * [Config] Enable CONFIG_RCU_FAST_NO_HZ=y + * [Config] Enable CONFIG_IWLWIFI_DEVICE_TRACING=y + * [Config] Enable CONFIG_LIBERTAS_MESH=y + * [Config] Enable CONFIG_MMC_RICOH_MMC=y + * [Config] CONFIG_RT2800USB_UNKNOWN=y + * [Config] Enable CONFIG_VGA_SWITCHEROO=y + * [Config] Enable CONFIG_CEPH_FS=m + * [Config] Enable CONFIG_CRYPTO_PCRYPT=m + * [Config] Enable CONFIG_EEEPC_WMI=m + * [Config] Enable CONFIG_RT2800PCI=m + * [Config] Enable CONFIG_SCSI_HPSA=m + * [Config] Enable CONFIG_VHOST_NET=m + * [Config] Disable CONFIG_SND_HDA_INPUT_BEEP_MODE by default + - LP: #582350 + * [Config] Disable CONFIG_SOUND_OSS* and CONFIG_SND_*OSS + - LP: #579300 + * [Config] Enable CONFIG_PCIEASPM=y + - LP: #333990 + * [Config] updateconfigs for OMAP flavour + + [ Loïc Minier ] + + * Enable perf tools on armel + + [ Tim Gardner ] + + * SAUCE: Updated ndiswrapper to 1.56 + - LP: #582555 + * [Config] Added virtual flavour + * [Config] Remove support for sub-flavours + * [Config] Removed amd64 preempt flavour + * [Config] updateconfigs, updateportsconfigs after flavour munging + + -- Leann Ogasawara Tue, 25 May 2010 09:34:55 -0700 + +linux (2.6.34-3.10) maverick; urgency=low + + [ Leann Ogasawara ] + + * rebase to v2.6.34 + + [ Upstream changes ] + + * rebased to v2.6.34 + + -- Leann Ogasawara Tue, 18 May 2010 17:35:35 -0700 + +linux (2.6.34-2.9) maverick; urgency=low + + [ Leann Ogasawara ] + + * [Config] [FTBS] Disable comedi for armel + + -- Leann Ogasawara Thu, 13 May 2010 23:20:55 +0200 + +linux (2.6.34-2.8) maverick; urgency=low + + [ Leann Ogasawara ] + + * Drop lpia + * [Config] [FTBS] disable KVM + * [Config] [FTBS] disable ipr for armel + + -- Leann Ogasawara Thu, 13 May 2010 16:07:52 +0200 + +linux (2.6.34-2.7) maverick; urgency=low + + [ Leann Ogasawara ] + + * [Config] disable CONFIG_SCSI_IPR on powerpc + * [Config] Remove 386 flavour per UDS discussion + + -- Leann Ogasawara Wed, 12 May 2010 18:26:43 +0200 + +linux (2.6.34-1.6) maverick; urgency=low + + [ Chase Douglas ] + + * enforce CONFIG_TMPFS_POSIX_ACL=y + - LP: #575940 + * don't force module dependency checking + - LP: #577029 + + [ Kees Cook ] + + * SAUCE: mmap_min_addr check CAP_SYS_RAWIO only for write + - LP: #568844 + + [ Leann Ogasawara ] + + * Revert "SAUCE: ata: blacklist FUJITSU MHW2160BH PL" + * rebase to v2.6.34-rc7 + * [Config] update configs following rebase to v2.6.34-rc7 + * [Config] update port configs following rebase to v2.6.34-rc7 + * Add btrfs to the udebs + + [ Tim Gardner ] + + * [Config] Add atl1c to nic-modules udeb + - LP: #557130 + + [ Upstream changes ] + + * rebased to v2.6.34-rc7 + + -- Leann Ogasawara Tue, 11 May 2010 11:29:08 +0200 + +linux (2.6.34-1.5) UNRELEASED; urgency=low + + [ Leann Ogasawara ] + + * rebase to v2.6.34-rc6 + * [Config] update configs following rebase to v2.6.34-rc6 + * [Config] update port configs following rebase to v2.6.34-rc6 + + [ Upstream changes ] + + * rebased to v2.6.34-rc6 + + -- Leann Ogasawara Fri, 30 Apr 2010 15:54:05 +0100 + +linux (2.6.34-1.4) UNRELEASED; urgency=low + + [ Leann Ogasawara ] + + * rebase to v2.6.34-rc5 + * [Config] update ports configs following rebase to v2.6.34-rc5 + + [ Upstream changes ] + + * rebased to v2.6.34-rc5 + + -- Leann Ogasawara Thu, 22 Apr 2010 15:36:12 -0700 + +linux (2.6.34-1.3) UNRELEASED; urgency=low + + [ Leann Ogasawara ] + + * rebase to v2.6.34-rc4 + * [Config] update configs following rebase to v2.6.34-rc4 + * [Config] update port configs following rebase to v2.6.34-rc4 + * ubuntu: dm-raid4-5 -- update to compile with 2.6.34-rc4 + + [ Upstream changes ] + + * rebased to v2.6.34-rc4 + + -- Leann Ogasawara Tue, 13 Apr 2010 18:33:44 -0700 + +linux (2.6.34-1.2) UNRELEASED; urgency=low + + [ Leann Ogasawara ] + + * Temorarily disable building linux-doc + * rebase to v2.6.34-rc3 + * [Config] update configs following rebase to v2.6.34-rc3 + * [Config] update port configs following rebase to v2.6.34-rc3 + + [ Upstream changes ] + + * rebased to v2.6.34-rc3 + + -- Leann Ogasawara Tue, 30 Mar 2010 16:55:44 -0700 + +linux (2.6.34-1.1) UNRELEASED; urgency=low + + [ Leann Ogasawara ] + + * rebase to v2.6.34-rc2 + * ubuntu: dm-raid4-5 -- update to compile with 2.6.34-rc2 + * [Config] update port configs following rebase to v2.6.34-rc2 + * [Config] update configs following rebase to v2.6.34-rc2 + + [ Upstream changes ] + + * rebased to v2.6.34-rc2 + + -- Leann Ogasawara Wed, 24 Mar 2010 23:00:39 -0700 + +linux (2.6.33-1.1) UNRELEASED; urgency=low + + [ Leann Ogasawara ] + + * ubuntu: dm-raid4-5 -- update to compile with 2.6.33 + * ubuntu: lirc -- drop explicit include of linux/autoconf.h + * ubuntu: lirc -- pass kfifo to kfifo_alloc and move spinlock + * ubuntu: lirc -- rename kfifo_put and kfifo_get + * ubuntu: iscsitarget -- rename daddr inet_sock field + * rebased to v2.6.33 + * [Config] update configs following rebase to v2.6.33 + * [Config] update ports configs following rebase to v2.6.33 + + [ Upstream changes ] + + * rebased to v2.6.33 + + -- Leann Ogasawara Tue, 23 Mar 2010 03:55:46 -0700 + +linux (2.6.33-0.0) UNRELEASED; urgency=low + + [ Leann Ogasawara ] + + * Null entry. + + -- Leann Ogasawara Wed, 17 Mar 2010 07:48:56 -0700 + +linux (2.6.32-16.25) lucid; urgency=low + + [ Andy Whitcroft ] + + * linux-tools -- move to Suggests: with explicit seeding + - LP: #534635 + + [ Tim Gardner ] + + * [Config] CONFIG_HID=m + + [ Upstream Kernel Changes ] + + * (pre-stable) sched: Fix SMT scheduler regression in + find_busiest_queue() + * KVM: introduce kvm_vcpu_on_spin + * KVM: VMX: Add support for Pause-Loop Exiting + + -- Andy Whitcroft Tue, 09 Mar 2010 14:13:51 +0000 + +linux (2.6.32-16.24) lucid; urgency=low + + [ Andy Whitcroft ] + + * armel -- perf userspace does not support arm + * ia64 -- libelf-dev/binutils-dev to not provide necessary libraries + + -- Andy Whitcroft Sat, 06 Mar 2010 11:42:12 +0000 + +linux (2.6.32-16.23) lucid; urgency=low + + [ Andy Whitcroft ] + + * SAUCE: PM report driver and device suspend/resume times -- move config + * update to standards version 3.8.4.0 + * printenv -- expose all of the package selectors + * source package -- cleanup source content control + * doc package -- ensure we do build package content on buildd + * lintian -- correct the address in the debian/copyright + * lintian -- update debhelper package version dependancy + * lintian -- fix ghostscript dependancy + * lintian -- add required misc:Depends + * lintian -- move our debhelper compat level to debian/compat + * perf -- build the kernel carried tools + * perf -- add linux-tools carrying the version switches and manuals + * SAUCE: fix up Kconfig for staging drivers + * [Config] enable NOUVEAU etc following drm backport + * update DRM to mainline v2.6.33 + * [Config] Remove AppArmor config options that no longer exist (ports) + * [Config] updateportsconfigs following drm update + + [ John Johansen ] + + * ubuntu: AppArmor -- update to mainline 2010-03-04 + * SAUCE: AppArmor: Reintroduce AppArmor 2.4 compatibility + * SAUCE: AppArmor: replace strim with strstrip for 2.6.32 kernels + * [Config] Remove AppArmor config options that no longer exist + + [ Manoj Iyer ] + + * ubuntu: rtl8192se -- version 2010-0115,0014 + - LP: #530275 + * [Config] added CONFIG_RTL8192SE module. + - LP: #530275 + + [ Tim Gardner ] + + * [Config] Added vmw_pvscsi to d-i/scsi-modules + - LP: #531017 + * [Upstream] netfilter: xt_recent: Add an entry reaper + + [ Upstream Kernel Changes ] + + * Revert "KVM: x86 emulator: Check CPL level during privilege instruction + emulation" + * Revert "KVM: x86 emulator: Fix popf emulation" + * Revert "KVM: x86 emulator: Check IOPL level during io instruction + emulation" + * Revert "KVM: x86 emulator: Add Virtual-8086 mode of emulation" + * Revert "KVM: fix memory access during x86 emulation." + * Add vlan (8021.Q) module package for d-i. + * (pre-stable) drm/i915: blacklist lid status: Sony VGN-BX196VP, Dell + Inspiron 700m + - LP: #515246 + * [Upstream] docbook: need xmldoclinks for all doc types + * x86: set_personality_ia32() misses force_personality32 + * lib: Introduce generic list_sort function + * drm/nv50: Implement ctxprog/state generation. + * drm/nv50: Remove redundant/incorrect ctxvals initialisation. + * (pre-stable) drm/i915: blacklist lid status: Sony VGN-BX196VP, Dell + Inspiron 700m + - LP: #515246 + + -- Andy Whitcroft Fri, 05 Mar 2010 15:40:38 +0000 + +linux (2.6.32-15.22) lucid; urgency=low + + [ Andy Whitcroft ] + + * Revert "[Config] added new config option CONFIG_SR_REPORT_TIME_LIMIT" + * Revert "SAUCE: PM report driver and device suspend/resume times." + * [Config] set CONFIG_SR_REPORT_TIME_LIMIT + + [ Manoj Iyer ] + + * SAUCE: PM report driver and device suspend/resume times. + + -- Andy Whitcroft Tue, 02 Mar 2010 01:35:37 +0000 + +linux (2.6.32-15.21) lucid; urgency=low + + [ Andy Whitcroft ] + + * Revert "(pre-stable) drm/i915: Increase fb alignment to 64k" + * Revert "[Config] lenovo-sl-laptop -- enable" + * Revert "ubuntu: lenovo-sl-laptop -- git tip (b19a08f81f)" + * armel -- cramfs module will no longer be built + * d-i -- make all modules optional + * rename the debug packages to match archive standard + - LP: #527837 + * lenovo-sl-laptop is no longer built + + [ Colin Ian King ] + + * Disable 4MB page tables for Atom, work around errata AAE44 + - LP: #523112 + + [ Colin Watson ] + + * ubuntu: dm-raid4-5: Depend on XOR_BLOCKS + * ubuntu: fsam7400: Depend on CHECK_SIGNATURE + + [ Jesse Barnes ] + + * SAUCE: drm/i915: don't change DRM configuration when releasing load + detect pipe + - LP: #488328 + + [ Loïc Minier ] + + * [Config] armel Update versatile initrd configs + - LP: #524893 + * SAUCE: [um] Don't use nx_enabled under UML + - LP: #524849 + + [ Manoj Iyer ] + + * [Config] added new config option CONFIG_SR_REPORT_TIME_LIMIT + + [ Mario Limonciello ] + + * SAUCE: v3 - Add Dell Business Class Netbook LED driver + + [ Rafael J. Wysocki ] + + * SAUCE: PM report driver and device suspend/resume times. + + [ Surbhi Palande ] + + * Revert "[Upstream] e1000e: enhance frame fragment detection" + - CVE-2009-4538 + * Revert "[Upstream] e1000: enhance frame fragment detection" + - CVE-2009-4536 + + [ Tim Gardner ] + + * [Config] Enabled CONFIG_LEDS_DELL_NETBOOKS=m + * SAUCE: (pre-stable) netfilter: xt_recent: fix buffer overflow + * SAUCE: (pre-stable) netfilter: xt_recent: fix false match + + [ Upstream Kernel Changes ] + + * Revert "(pre-stable) eCryptfs: Add getattr function" + * Fix potential crash with sys_move_pages + * futex_lock_pi() key refcnt fix + * futex: Handle user space corruption gracefully + * futex: Handle futex value corruption gracefully + * Fix race in tty_fasync() properly + * hwmon: (w83781d) Request I/O ports individually for probing + * hwmon: (lm78) Request I/O ports individually for probing + * hwmon: (adt7462) Wrong ADT7462_VOLT_COUNT + * ALSA: ctxfi - fix PTP address initialization + * drm/i915: disable hotplug detect before Ironlake CRT detect + * drm/i915: enable self-refresh on 965 + * drm/i915: Disable SR when more than one pipe is enabled + * drm/i915: Fix DDC on some systems by clearing BIOS GMBUS setup. + * drm/i915: Add HP nx9020/SamsungSX20S to ACPI LID quirk list + * drm/i915: Fix the incorrect DMI string for Samsung SX20S laptop + * drm/i915: Add MALATA PC-81005 to ACPI LID quirk list + * usb: r8a66597-hcd: Flush the D-cache for the pipe-in transfer buffers. + * i2c-tiny-usb: Fix on big-endian systems + * drm/i915: handle FBC and self-refresh better + * drm/i915: Increase fb alignment to 64k + * drm/i915: Update write_domains on active list after flush. + * regulator: Fix display of null constraints for regulators + * ALSA: hda-intel: Avoid divide by zero crash + * CPUFREQ: Fix use after free of struct powernow_k8_data + * freeze_bdev: don't deactivate successfully frozen MS_RDONLY sb + * cciss: Make cciss_seq_show handle holes in the h->drv[] array + * ioat: fix infinite timeout checking in ioat2_quiesce + * resource: add helpers for fetching rlimits + * fs/exec.c: restrict initial stack space expansion to rlimit + * cifs: fix length calculation for converted unicode readdir names + * NFS: Fix a reference leak in nfs_wb_cancel_page() + * NFS: Try to commit unstable writes in nfs_release_page() + * NFSv4: Don't allow posix locking against servers that don't support it + * NFSv4: Ensure that the NFSv4 locking can recover from stateid errors + * NFS: Fix an Oops when truncating a file + * NFS: Fix a umount race + * NFS: Fix a bug in nfs_fscache_release_page() + * NFS: Fix the mapping of the NFSERR_SERVERFAULT error + * md: fix 'degraded' calculation when starting a reshape. + * V4L/DVB: dvb-core: fix initialization of feeds list in demux filter + * Export the symbol of getboottime and mmonotonic_to_bootbased + * kvmclock: count total_sleep_time when updating guest clock + * KVM: PIT: control word is write-only + * tpm_infineon: fix suspend/resume handler for pnp_driver + * amd64_edac: Do not falsely trigger kerneloops + * netfilter: nf_conntrack: fix memory corruption with multiple namespaces + * netfilter: nf_conntrack: per netns nf_conntrack_cachep + * netfilter: nf_conntrack: restrict runtime expect hashsize modifications + * netfilter: xtables: compat out of scope fix + * netfilter: nf_conntrack: fix hash resizing with namespaces + * drm/i915: remove full registers dump debug + * drm/i915: add i915_lp_ring_sync helper + * drm/i915: Don't wait interruptible for possible plane buffer flush + * dasd: remove strings from s390dbf + * crypto: padlock-sha - Add import/export support + * wmi: Free the allocated acpi objects through wmi_get_event_data + * dell-wmi, hp-wmi, msi-wmi: check wmi_get_event_data() return value + * /dev/mem: introduce size_inside_page() + * devmem: check vmalloc address on kmem read/write + * devmem: fix kmem write bug on memory holes + * SCSI: mptfusion : mptscsih_abort return value should be SUCCESS instead + of value 0. + * sh: Couple kernel and user write page perm bits for CONFIG_X2TLB + * ALSA: hda - use WARN_ON_ONCE() for zero-division detection + * dst: call cond_resched() in dst_gc_task() + * ALSA: hda - Improved MacBook (Pro) 5,1 / 5,2 support + * befs: fix leak + * rtc-fm3130: add missing braces + * Call flush_dcache_page after PIO data transfers in libata-sff.c + * ahci: add Acer G725 to broken suspend list + * pktgen: Fix freezing problem + * x86/amd-iommu: Fix IOMMU-API initialization for iommu=pt + * x86/amd-iommu: Fix deassignment of a device from the pt_domain + * x86: Re-get cfg_new in case reuse/move irq_desc + * Staging: fix rtl8187se compilation errors with mac80211 + * ALSA: usb-audio - Avoid Oops after disconnect + * serial: 8250: add serial transmitter fully empty test + * sysfs: sysfs_sd_setattr set iattrs unconditionally + * class: Free the class private data in class_release + * USB: usbfs: only copy the actual data received + * USB: usbfs: properly clean up the as structure on error paths + * rtl8187: Add new device ID + * ACPI: Add NULL pointer check in acpi_bus_start + * ACPI: fix High cpu temperature with 2.6.32 + * drm/radeon/kms: use udelay for short delays + * NFS: Too many GETATTR and ACCESS calls after direct I/O + * eCryptfs: Add getattr function + * b43: Fix throughput regression + * ath9k: Fix sequence numbers for PAE frames + * mac80211: Fix probe request filtering in IBSS mode + * iwlwifi: Fix to set correct ht configuration + * dm stripe: avoid divide by zero with invalid stripe count + * dm log: userspace fix overhead_size calcuations + * Linux 2.6.32.9 + * sfc: Fix SFE4002 initialisation + * sfc: Fix sign of efx_mcdi_poll_reboot() error in efx_mcdi_poll() + * sfc: SFE4002/SFN4112F: Widen temperature and voltage tolerances + * (pre-stable) HID: handle joysticks with large number of buttons + - LP: #492056 + * (pre-stable) HID: extend mask for BUTTON usage page + - LP: #492056 + * PM: Measure device suspend and resume times + * e1000: enhance frame fragment detection + - CVE-2009-4536 + * e1000e: enhance frame fragment detection + - CVE-2009-4538 + * KVM: fix memory access during x86 emulation. + - CVE-2010-0306 + * KVM: x86 emulator: Add Virtual-8086 mode of emulation + - CVE-2010-0306 + * KVM: x86 emulator: Check IOPL level during io instruction emulation + - CVE-2010-0306 + * KVM: x86 emulator: Fix popf emulation + - CVE-2010-0306 + * KVM: x86 emulator: Check CPL level during privilege instruction + emulation + - CVE-2010-0306 + * Input: wacom - ensure the device is initialized properly upon resume + * Input: wacom - add defines for packet lengths of various devices + * Input: wacom - add support for new LCD tablets + - LP: #516777 + + -- Andy Whitcroft Mon, 01 Mar 2010 22:56:28 +0000 + +linux (2.6.32-14.20) lucid; urgency=low + + [ Andy Whitcroft ] + + * rebuild following the GCC update to match compiler for out of tree modules + * Revert "[Config] drbd -- enable" + * Revert "ubuntu: drbd -- version 8.3.1" + * SAUCE: khubd -- switch USB product/manufacturer/serial handling to RCU + - LP: #510937 + + -- Andy Whitcroft Fri, 19 Feb 2010 18:47:18 +0000 + +linux (2.6.32-14.19) lucid; urgency=low + + [ Andy Whitcroft ] + + * ensure we build the source package contents when enabled + - LP: #522308 + * [Config] enable CONFIG_X86_MCE_XEON75XX + * SAUCE: AppArmor -- add linux/kref.h for struct kref + * [Config] enable CONFIG_HID_ORTEK + * enable udeb generation for arm versatile flavour + - LP: #522515 + + [ John Johansen ] + + * ubuntu: AppArmor -- update to mainline 2010-02-18 + - LP: #439560, #496110, #507069 + + [ Johnathon Harris ] + + * SAUCE: HID: add support for Ortek WKB-2000 + - LP: #405390 + + [ Upstream Kernel Changes ] + + * tpm_tis: TPM_STS_DATA_EXPECT workaround + - LP: #490487 + * x86, mce: Xeon75xx specific interface to get corrected memory error + information + * x86, mce: Rename cpu_specific_poll to mce_cpu_specific_poll + * x86, mce: Make xeon75xx memory driver dependent on PCI + * drm/edid: Unify detailed block parsing between base and extension + blocks + - LP: #500999 + * (pre-stable) eCryptfs: Add getattr function + - LP: #390833 + + -- Andy Whitcroft Thu, 18 Feb 2010 19:22:02 +0000 + +linux (2.6.32-13.18) lucid; urgency=low + + [ Andy Whitcroft ] + + * Revert "enforcer -- make the enforcement configuration common" + * Revert "(pre-stable) Input: ALPS - add interleaved protocol support + (Dell E6x00 series)" + * Revert "(pre-stable) driver-core: fix devtmpfs crash on s390" + * Revert "(pre-stable) Driver-Core: devtmpfs - set root directory mode to + 0755" + * Revert "SAUCE: Adds support for COMPAL JHL90 webcam" + * Revert "SAUCE: fix kernel oops in VirtualBox during paravirt patching" + * Revert "SAUCE: make fc transport removal of target configurable" + * enforcer -- make the enforcement configuration common + * getabis -- add preempt flavour to the list + * [Config] enforce DEVTMPFS options + * [Config] armel -- cleanup to-be builtin modules + * [Config] cleanup ports configs + * [Config] enable CRYPTO_GHASH_CLMUL_NI_INTEL + - LP: #485536 + * add printdebian target to find branch target + * distclean -- do not remove debian.env + * [Config] generic-pae switch to M586TSC + - LP: #519448 + * git-ubuntu-log -- commonise duplicated log handling + * git-ubuntu-log -- tighten up Bug: NNNN matching + * git-ubuntu-log -- sort the bug numbers + + [ Chris Wilson ] + + * (pre-stable) drm/i915: Increase fb alignment to 64k + - LP: #404064 + + [ Eric Miao ] + + * arm -- enable ubuntu/ directory + + [ Huang Ying ] + + * SAUCE: crypto: ghash - Add PCLMULQDQ accelerated implementation + * SAUCE: crypto: ghash-intel - Fix building failure on x86_32 + + [ Loïc Minier ] + + * [Config] cleanup preempt configuration + * [Config] versatile: Fix video output + - LP: #517594 + * [Config] armel DEFAULT_MMAP_MIN_ADDR=32768 + * [Config] Large update to armel/versatile + * [Config] versatile: Add RTC support + * [Config] armel: Enable NEON + * [Config] versatile: Builtin MMC support + * [Config] versatile Builtin SCSI controller + * [Config] armel Disable dma_cache_sync callers + * [Config] armel Disable asm/time.h users + * [Config] armel Disable out of range udelay() + * [Config] armel Disable flush_cache_range() users + * [Config] armel -- Enable ubuntu/ drivers + + [ Steve Conklin ] + + * SAUCE: drm/i915: Add display hotplug event on Ironlake + * SAUCE: drm/i915: Add ACPI OpRegion support for Ironlake + + [ Upstream Kernel Changes ] + + * Revert "[Upstream]: oprofile/x86: add Xeon 7500 series support" + * Revert "Revert "[Bluetooth] Eliminate checks for impossible conditions + in IRQ handler"" + * clockevent: Don't remove broadcast device when cpu is dead + * clockevents: Add missing include to pacify sparse + * ACPI: don't cond_resched if irq is disabled + * be2net: Add support for next generation of BladeEngine device. + * be2net: Add the new PCI IDs to PCI_DEVICE_TABLE. + * mpt2sas: New device SAS2208 support is added + * ar9170: Add support for D-Link DWA 160 A2 + * powerpc/fsl: Add PCI device ids for new QoirQ chips + * davinci: dm646x: Add support for 3.x silicon revision + * Input: ALPS - add interleaved protocol support (Dell E6x00 series) + * Driver-Core: devtmpfs - set root directory mode to 0755 + * driver-core: fix devtmpfs crash on s390 + * vfs: get_sb_single() - do not pass options twice + * ALSA: hda - Add PCI IDs for Nvidia G2xx-series + * V4L/DVB (13569): smsusb: add autodetection support for five additional + Hauppauge USB IDs + * USB: mos7840: add device IDs for B&B electronics devices + * USB: ftdi_sio: add USB device ID's for B&B Electronics line + * V4L/DVB (13168): Add support for Asus Europa Hybrid DVB-T card (SAA7134 + SubVendor ID: 0x1043 Device ID: 0x4847) + * iTCO_wdt: Add support for Intel Ibex Peak + * atl1c:use common_task instead of reset_task and link_chg_task + * atl1e:disable NETIF_F_TSO6 for hardware limit + * V4L/DVB (13680a): DocBook/media: copy images after building HTML + * V4L/DVB (13680b): DocBook/media: create links for included sources + * netfilter: xtables: fix conntrack match v1 ipt-save output + * partitions: read whole sector with EFI GPT header + * partitions: use sector size for EFI GPT + * ALSA: ice1724 - Patch for suspend/resume for ESI Juli@ + * sched: Fix isolcpus boot option + * sched: Fix missing sched tunable recalculation on cpu add/remove + * nohz: Prevent clocksource wrapping during idle + * nfsd: Fix sort_pacl in fs/nfsd/nf4acl.c to actually sort groups + * timers, init: Limit the number of per cpu calibration bootup messages + * PCI: Always set prefetchable base/limit upper32 registers + * iscsi class: modify handling of replacement timeout + * NFS: Revert default r/wsize behavior + * HID: fixup quirk for NCR devices + * scsi_devinfo: update Hitachi entries (v2) + * scsi_dh: create sysfs file, dh_state for all SCSI disk devices + * scsi_transport_fc: remove invalid BUG_ON + * lpfc: fix hang on SGI ia64 platform + * libfc: fix typo in retry check on received PRLI + * libfc: fix ddp in fc_fcp for 0 xid + * fcoe: remove redundant checking of netdev->netdev_ops + * libfc: Fix wrong scsi return status under FC_DATA_UNDRUN + * libfc: lport: fix minor documentation errors + * libfc: don't WARN_ON in lport_timeout for RESET state + * fcoe: initialize return value in fcoe_destroy + * libfc: Fix frags in frame exceeding SKB_MAX_FRAGS in fc_fcp_send_data + * libfc: fix memory corruption caused by double frees and bad error + handling + * libfc: fix free of fc_rport_priv with timer pending + * libfc: remote port gets stuck in restart state without really + restarting + * fcoe, libfc: fix an libfc issue with queue ramp down in libfc + * fcoe: Fix checking san mac address + * fcoe: Fix getting san mac for VLAN interface + * qlge: Remove explicit setting of PCI Dev CTL reg. + * qlge: Set PCIE max read request size. + * qlge: Don't fail open when port is not initialized. + * qlge: Add handler for DCBX firmware event. + * qlge: Bonding fix for mode 6. + * PCI: AER: fix aer inject result in kernel oops + * DMI: allow omitting ident strings in DMI tables + * Input: i8042 - remove identification strings from DMI tables + * Input: i8042 - add Gigabyte M1022M to the noloop list + * Input: i8042 - add Dritek quirk for Acer Aspire 5610. + * ALSA: hda - select IbexPeak handler for Calpella + * ALSA: hda - Fix quirk for Maxdata obook4-1 + * ALSA: hda - Add missing Line-Out and PCM switches as slave + * iTCO_wdt.c - cleanup chipset documentation + * iTCO_wdt: add PCI ID for the Intel EP80579 (Tolapai) SoC + * iTCO_wdt: Add Intel Cougar Point and PCH DeviceIDs + * ahci: disable SNotification capability for ich8 + * ata_piix: fix MWDMA handling on PIIX3 + * md: fix small irregularity with start_ro module parameter + * V4L/DVB (13826): uvcvideo: Fix controls blacklisting + * cio: fix double free in case of probe failure + * cio: dont panic in non-fatal conditions + * netiucv: displayed TX bytes value much too high + * ipc ns: fix memory leak (idr) + * ALSA: hda - Fix HP T5735 automute + * hwmon: (fschmd) Fix a memleak on multiple opens of /dev/watchdog + * UBI: fix memory leak in update path + * UBI: initialise update marker + * ASoC: fix a memory-leak in wm8903 + * mac80211: check that ieee80211_set_power_mgmt only handles STA + interfaces. + * cfg80211: fix channel setting for wext + * KVM: S390: fix potential array overrun in intercept handling + * KVM: only allow one gsi per fd + * KVM: Fix race between APIC TMR and IRR + * KVM: MMU: bail out pagewalk on kvm_read_guest error + * KVM: x86: Fix host_mapping_level() + * KVM: x86: Fix probable memory leak of vcpu->arch.mce_banks + * KVM: x86: Fix leak of free lapic date in kvm_arch_vcpu_init() + * KVM: fix lock imbalance in kvm_*_irq_source_id() + * KVM: only clear irq_source_id if irqchip is present + * IPoIB: Clear ipoib_neigh.dgid in ipoib_neigh_alloc() + * x86: Reenable TSC sync check at boot, even with NONSTOP_TSC + * ACPI: enable C2 and Turbo-mode on Nehalem notebooks on A/C + - LP: #516325 + * iwlwifi: Fix throughput stall issue in HT mode for 5000 + * fnctl: f_modown should call write_lock_irqsave/restore + * x86, msr/cpuid: Pass the number of minors when unregistering MSR and + CPUID drivers. + * Linux 2.6.32.7 + * scsi_lib: Fix bug in completion of bidi commands + * mptsas: Fix issue with chain pools allocation on katmai + * mm: add new 'read_cache_page_gfp()' helper function + * drm/i915: Selectively enable self-reclaim + * firewire: ohci: fix crashes with TSB43AB23 on 64bit systems + * S390: fix single stepped svcs with TRACE_IRQFLAGS=y + * x86: Set hotpluggable nodes in nodes_possible_map + * x86: Remove "x86 CPU features in debugfs" (CONFIG_X86_CPU_DEBUG) + * libata: retry FS IOs even if it has failed with AC_ERR_INVALID + * zcrypt: Do not remove coprocessor for error 8/72 + * dasd: fix possible NULL pointer errors + * ACPI: Add a generic API for _OSC -v2 + * ACPI: Add platform-wide _OSC support. + * ACPI: fix OSC regression that caused aer and pciehp not to load + * ACPI: Advertise to BIOS in _OSC: _OST on _PPC changes + * UBI: fix volume creation input checking + * e1000/e1000e: don't use small hardware rx buffers + * drm/i915: Reload hangcheck timer too for Ironlake + * Fix a leak in affs_fill_super() + * Fix failure exits in bfs_fill_super() + * fix oops in fs/9p late mount failure + * fix leak in romfs_fill_super() + * Fix remount races with symlink handling in affs + * fix affs parse_options() + * Fix failure exit in ipathfs + * mm: fix migratetype bug which slowed swapping + * FDPIC: Respect PT_GNU_STACK exec protection markings when creating + NOMMU stack + * Split 'flush_old_exec' into two functions + * sparc: TIF_ABI_PENDING bit removal + * x86: get rid of the insane TIF_ABI_PENDING bit + * Input: winbond-cir - remove dmesg spam + * x86: Disable HPET MSI on ATI SB700/SB800 + * iwlwifi: set default aggregation frame count limit to 31 + * drm/i915: only enable hotplug for detected outputs + * firewire: core: add_descriptor size check + * SECURITY: selinux, fix update_rlimit_cpu parameter + * regulator: Specify REGULATOR_CHANGE_STATUS for WM835x LED constraints + * x86: Add Dell OptiPlex 760 reboot quirk + - LP: #488319 + * x86: Add quirk for Intel DG45FC board to avoid low memory corruption + * x86/amd-iommu: Fix possible integer overflow + * clocksource: fix compilation if no GENERIC_TIME + * tcp: update the netstamp_needed counter when cloning sockets + * sky2: Fix oops in sky2_xmit_frame() after TX timeout + * net: restore ip source validation + * af_packet: Don't use skb after dev_queue_xmit() + * ax25: netrom: rose: Fix timer oopses + * KVM: allow userspace to adjust kvmclock offset + * oprofile/x86: add Xeon 7500 series support + * oprofile/x86: fix crash when profiling more than 28 events + * libata: retry link resume if necessary + * mm: percpu-vmap fix RCU list walking + * mm: purge fragmented percpu vmap blocks + * block: fix bio_add_page for non trivial merge_bvec_fn case + * Fix 'flush_old_exec()/setup_new_exec()' split + * random: drop weird m_time/a_time manipulation + * random: Remove unused inode variable + * block: fix bugs in bio-integrity mempool usage + * usb: r8a66597-hdc disable interrupts fix + * connector: Delete buggy notification code. + * be2net: Bug fix to support newer generation of BE ASIC + * be2net: Fix memset() arg ordering. + * mm: flush dcache before writing into page to avoid alias + * mac80211: fix NULL pointer dereference when ftrace is enabled + * imxfb: correct location of callbacks in suspend and resume + * mx3fb: some debug and initialisation fixes + * starfire: clean up properly if firmware loading fails + * kernel/cred.c: use kmem_cache_free + * uartlite: fix crash when using as console + * pktcdvd: removing device does not remove its sysfs dir + * ath9k: fix eeprom INI values override for 2GHz-only cards + * ath9k: fix beacon slot/buffer leak + * powerpc: TIF_ABI_PENDING bit removal + * NET: fix oops at bootime in sysctl code + * Linux 2.6.32.8 + + -- Andy Whitcroft Wed, 10 Feb 2010 18:56:52 +0000 + +linux (2.6.32-12.17) lucid; urgency=low + + [ Andy Whitcroft ] + + * restore linux-image prefix -- master + * enforce -- we require SELINUX enabled -- master + * enforce -- ensure APPARMOR is our default LSM -- master + * make doc package completely optional -- master + * make source package completely optional -- master + * make linux-libc-dev completly optional -- master + * convert package disable to a deps list -- master + * allow common headers to switch from indep to arch -- master + * convert binary package disable to a deps list -- master + * add configuration option for a full source build tree -- master + * add support for uImage kernels in package control scripts + * getabis -- cleanup and parameterise repository list -- master + * getabis -- move configuration to etc/getabi -- master + * kernelconfig -- move configuration to etc -- master + * rules -- make debian/debian.env master for branch name + * set the current branch name -- master + * pull back common debian.master files into debian -- master + * enforcer -- make the enforcement configuration common + * insert-changes -- correctly link to debian/rules in DROOT + + [ Colin Watson ] + + * future-proof ddeb handling against buildd changes + + [ Eric Miao ] + + * SAUCE: Make CONFIG_{OMNIBOOK, AVERATEC_5100P, PACKARDBELL_E5} depend on + X86 + + [ Loïc Minier ] + + * Add modules.builtin.bin to prerm rm list + - LP: #516584 + + [ Tim Gardner ] + + * [Config] Implement the amd64 preempt flavour + + [ Upstream Kernel Changes ] + + * syslog: distinguish between /proc/kmsg and syscalls + - LP: #515623 + * sfc: Fix polling for slow MCDI operations + * sfc: Fix conditions for MDIO self-test + * sfc: QT202x: Remove unreliable MMD check at initialisation + * sfc: Add workspace for GMAC bug workaround to MCDI MAC_STATS buffer + * sfc: Use fixed-size buffers for MCDI NVRAM requests + + -- Andy Whitcroft Fri, 05 Feb 2010 07:09:31 +0000 + +linux (2.6.32-12.16) lucid; urgency=low + + [ Andy Whitcroft ] + + * Revert "SAUCE: acpi battery -- delay first lookup of the battery until + first use" + * SAUCE: acpi battery -- move first lookup asynchronous + - LP: #507211 + * [Config] update configs to cleanup generic configs + * [Config] disable CONFIG_X86_CPU_DEBUG for amd64 + * [Config] enable USER_NS + - LP: #480739, #509808 + + [ Heiko Carstens ] + + * (pre-stable) driver-core: fix devtmpfs crash on s390 + - LP: #512370 + + [ John Johansen ] + + * [Config] for server and virtual flavours make CONFIG_SCSI_SYM53C8XX_2=y + - LP: #494565 + * [Config] VIRTIO=y for server/virtual flavours + - LP: #494565 + + [ Kay Sievers ] + + * (pre-stable) Driver-Core: devtmpfs - set root directory mode to 0755 + - LP: #512370 + + [ Kees Cook ] + + * SAUCE: x86: brk away from exec rand area + - LP: #452175 + + [ Leann Ogasawara ] + + * [Upstream] e1000: enhance frame fragment detection + - CVE-2009-4536 + * [Upstream] e1000e: enhance frame fragment detection + - CVE-2009-4538 + + [ Sebastian Kapfer ] + + * (pre-stable) Input: ALPS - add interleaved protocol support (Dell E6x00 + series) + - LP: #296610 + + [ Upstream Kernel Changes ] + + * inotify: do not reuse watch descriptors + - LP: #485556 + * inotify: only warn once for inotify problems + * revert "drivers/video/s3c-fb.c: fix clock setting for Samsung SoC + Framebuffer" + * memcg: ensure list is empty at rmdir + * drm/i915: remove loop in Ironlake interrupt handler + * block: Fix incorrect reporting of partition alignment + * x86, mce: Thermal monitoring depends on APIC being enabled + * futexes: Remove rw parameter from get_futex_key() + * page allocator: update NR_FREE_PAGES only when necessary + * x86, apic: use physical mode for IBM summit platforms + * edac: i5000_edac critical fix panic out of bounds + * x86: SGI UV: Fix mapping of MMIO registers + * mfd: WM835x GPIO direction register is not locked + * mfd: Correct WM835x ISINK ramp time defines + * ALSA: hda - Fix missing capture mixer for ALC861/660 codecs + * V4L/DVB (13868): gspca - sn9c20x: Fix test of unsigned. + * reiserfs: truncate blocks not used by a write + * HID: add device IDs for new model of Apple Wireless Keyboard + * PCI/cardbus: Add a fixup hook and fix powerpc + * Input: pmouse - move Sentelic probe down the list + * asus-laptop: add Lenovo SL hotkey support + * sched: Fix cpu_clock() in NMIs, on !CONFIG_HAVE_UNSTABLE_SCHED_CLOCK + * sparc64: Fix NMI programming when perf events are active. + * sparc64: Fix Niagara2 perf event handling. + * i2c: Do not use device name after device_unregister + * i2c/pca: Don't use *_interruptible + * serial/8250_pnp: add a new Fujitsu Wacom Tablet PC device + * sched: Fix task priority bug + * vfs: Fix vmtruncate() regression + * Linux 2.6.32.5 + * x86, msr/cpuid: Register enough minors for the MSR and CPUID drivers + * V4L/DVB (13900): gspca - sunplus: Fix bridge exchanges. + * Staging: asus_oled: fix oops in 2.6.32.2 + * Staging: hv: fix smp problems in the hyperv core code + * tty: fix race in tty_fasync + * ecryptfs: use after free + * ecryptfs: initialize private persistent file before dereferencing + pointer + * nozomi: quick fix for the close/close bug + * serial: 8250_pnp: use wildcard for serial Wacom tablets + * usb: serial: fix memory leak in generic driver + * USB: fix bitmask merge error + * USB: Don't use GFP_KERNEL while we cannot reset a storage device + * USB: EHCI: fix handling of unusual interrupt intervals + * USB: EHCI & UHCI: fix race between root-hub suspend and port resume + * USB: add missing delay during remote wakeup + * USB: add speed values for USB 3.0 and wireless controllers + * ACPI: EC: Accelerate query execution + * ACPI: EC: Add wait for irq storm + * SCSI: enclosure: fix oops while iterating enclosure_status array + * drm/i915: Read the response after issuing DDC bus switch command + * drm/i915: try another possible DDC bus for the SDVO device with + multiple outputs + * block: bdev_stack_limits wrapper + * DM: Fix device mapper topology stacking + * x86/PCI/PAT: return EINVAL for pci mmap WC request for !pat_enabled + * USB: fix usbstorage for 2770:915d delivers no FAT + * vmalloc: remove BUG_ON due to racy counting of VM_LAZY_FREE + * perf timechart: Use tid not pid for COMM change + * perf events: Dont report side-band events on each cpu for + per-task-per-cpu events + * perf: Honour event state for aux stream data + * Linux 2.6.32.6 + + -- Andy Whitcroft Wed, 27 Jan 2010 16:40:23 +0000 + +linux (2.6.32-11.15) lucid; urgency=low + + [ Andy Whitcroft ] + + * Revert "(pre-stable) drm/radeon/kms: fix crtc vblank update for r600" + * Revert "(pre-stable) sched: Fix balance vs hotplug race" + * Revert "[Upstream] acerhdf: Limit modalias matching to supported + boards" + * Revert "[Upstream] mmc: prevent dangling block device from accessing + stale queues" + * Revert "SAUCE: Fix nx_enable reporting" + * Revert "SAUCE: [x86] fix report of cs-limit nx-emulation" + * Revert "SAUCE: [x86] implement cs-limit nx-emulation for ia32" + * SAUCE: i915 -- disable powersave by default + - LP: #492392 + + [ Kees Cook ] + + * SAUCE: [x86] implement cs-limit nx-emulation for ia32 + - LP: #369978 + * SAUCE: [x86] fix report of cs-limit nx-emulation + - LP: #454285 + * SAUCE: Fix nx_enable reporting + - LP: #454285 + + [ Tim Gardner ] + + * [Upstream] b43: Declare all possible firmware files. + - LP: #488636 + * [Config] updateconfigs after adding pvscsi + - LP: #497156 + * [Config] CONFIG_BT=m + + [ Upstream Kernel Changes ] + + * Revert "x86: Side-step lguest problem by only building cmpxchg8b_emu + for pre-Pentium" + * SCSI: ipr: fix EEH recovery + * SCSI: qla2xxx: dpc thread can execute before scsi host has been added + * SCSI: st: fix mdata->page_order handling + * SCSI: fc class: fix fc_transport_init error handling + * sched: Fix task_hot() test order + * x86, cpuid: Add "volatile" to asm in native_cpuid() + * sched: Select_task_rq_fair() must honour SD_LOAD_BALANCE + * clockevents: Prevent clockevent_devices list corruption on cpu hotplug + * pata_hpt3x2n: fix clock turnaround + * pata_cmd64x: fix overclocking of UDMA0-2 modes + * ASoC: wm8974: fix a wrong bit definition + * sound: sgio2audio/pdaudiocf/usb-audio: initialize PCM buffer + * ALSA: hda - Fix missing capsrc_nids for ALC88x + * acerhdf: limit modalias matching to supported + - LP: #435958 + * ACPI: EC: Fix MSI DMI detection + * ACPI: Use the return result of ACPI lid notifier chain correctly + * powerpc: Handle VSX alignment faults correctly in little-endian mode + * ASoC: Do not write to invalid registers on the wm9712. + * drm/radeon: fix build on 64-bit with some compilers. + * USB: emi62: fix crash when trying to load EMI 6|2 firmware + * USB: option: support hi speed for modem Haier CE100 + * USB: Fix a bug on appledisplay.c regarding signedness + * USB: musb: gadget_ep0: avoid SetupEnd interrupt + * Bluetooth: Prevent ill-timed autosuspend in USB driver + * USB: rename usb_configure_device + * USB: fix bugs in usb_(de)authorize_device + * drivers/net/usb: Correct code taking the size of a pointer + * x86: SGI UV: Fix writes to led registers on remote uv hubs + * md: Fix unfortunate interaction with evms + * dma: at_hdmac: correct incompatible type for argument 1 of + 'spin_lock_bh' + * dma-debug: Do not add notifier when dma debugging is disabled. + * dma-debug: Fix bug causing build warning + * cifs: NULL out tcon, pSesInfo, and srvTcp pointers when chasing DFS + referrals + * x86/amd-iommu: Fix initialization failure panic + * ioat3: fix p-disabled q-continuation + * ioat2,3: put channel hardware in known state at init + * KVM: MMU: remove prefault from invlpg handler + * KVM: LAPIC: make sure IRR bitmap is scanned after vm load + * Libertas: fix buffer overflow in lbs_get_essid() + * iwmc3200wifi: fix array out-of-boundary access + * mac80211: fix propagation of failed hardware reconfigurations + * mac80211: fix WMM AP settings application + * mac80211: Fix IBSS merge + * cfg80211: fix race between deauth and assoc response + * ath5k: fix SWI calibration interrupt storm + * ath9k: wake hardware for interface IBSS/AP/Mesh removal + * ath9k: Fix TX queue draining + * ath9k: fix missed error codes in the tx status check + * ath9k: wake hardware during AMPDU TX actions + * ath9k: fix suspend by waking device prior to stop + * ath9k_hw: Fix possible OOB array indexing in gen_timer_index[] on + 64-bit + * ath9k_hw: Fix AR_GPIO_INPUT_EN_VAL_BT_PRIORITY_BB and its shift value + in 0x4054 + * iwl3945: disable power save + * iwl3945: fix panic in iwl3945 driver + * iwlwifi: fix EEPROM/OTP reading endian annotations and a bug + * iwlwifi: fix more eeprom endian bugs + * iwlwifi: fix 40MHz operation setting on cards that do not allow it + * mac80211: fix race with suspend and dynamic_ps_disable_work + * NOMMU: Optimise away the {dac_,}mmap_min_addr tests + * 'sysctl_max_map_count' should be non-negative + * kernel/sysctl.c: fix the incomplete part of + sysctl_max_map_count-should-be-non-negative.patch + * V4L/DVB (13596): ov511.c typo: lock => unlock + * x86/ptrace: make genregs[32]_get/set more robust + * memcg: avoid oom-killing innocent task in case of use_hierarchy + * e100: Fix broken cbs accounting due to missing memset. + * ipv6: reassembly: use seperate reassembly queues for conntrack and + local delivery + * netfilter: fix crashes in bridge netfilter caused by fragment jumps + * hwmon: (sht15) Off-by-one error in array index + incorrect constants + * b43: avoid PPC fault during resume + * Keys: KEYCTL_SESSION_TO_PARENT needs TIF_NOTIFY_RESUME architecture + support + * sched: Fix balance vs hotplug race + * drm/radeon/kms: fix crtc vblank update for r600 + * drm: disable all the possible outputs/crtcs before entering KMS mode + * S390: dasd: support DIAG access for read-only devices + * xen: fix is_disconnected_device/exists_disconnected_device + * xen: improvement to wait_for_devices() + * xen: wait up to 5 minutes for device connetion + * orinoco: fix GFP_KERNEL in orinoco_set_key with interrupts disabled + * udf: Try harder when looking for VAT inode + * Add unlocked version of inode_add_bytes() function + * quota: decouple fs reserved space from quota reservation + * ext4: Convert to generic reserved quota's space management. + * ext4: fix sleep inside spinlock issue with quota and dealloc (#14739) + * x86, msr: Unify rdmsr_on_cpus/wrmsr_on_cpus + * cpumask: use modern cpumask style in drivers/edac/amd64_edac.c + * amd64_edac: unify MCGCTL ECC switching + * x86, msr: Add support for non-contiguous cpumasks + * x86, msr: msrs_alloc/free for CONFIG_SMP=n + * amd64_edac: fix driver instance freeing + * amd64_edac: make driver loading more robust + * amd64_edac: fix forcing module load/unload + * sched: Sched_rt_periodic_timer vs cpu hotplug + * ext4: Update documentation to correct the inode_readahead_blks option + name + * lguest: fix bug in setting guest GDT entry + * vmscan: do not evict inactive pages when skipping an active list scan + * ksm: fix mlockfreed to munlocked + * rt2x00: Disable powersaving for rt61pci and rt2800pci. + * generic_permission: MAY_OPEN is not write access + * Linux 2.6.32.3 + * untangle the do_mremap() mess + * fasync: split 'fasync_helper()' into separate add/remove functions + * ASoC: fix params_rate() macro use in several codecs + * modules: Skip empty sections when exporting section notes + * exofs: simple_write_end does not mark_inode_dirty + * nfsd: make sure data is on disk before calling ->fsync + * sunrpc: fix peername failed on closed listener + * SUNRPC: Fix up an error return value in + gss_import_sec_context_kerberos() + * SUNRPC: Fix the return value in gss_import_sec_context() + * sunrpc: on successful gss error pipe write, don't return error + * drm/i915: Update LVDS connector status when receiving ACPI LID event + * drm/i915: fix order of fence release wrt flushing + * drm/i915: Permit pinning whilst the device is 'suspended' + * drm: remove address mask param for drm_pci_alloc() + * drm/i915: Enable/disable the dithering for LVDS based on VBT setting + * drm/i915: Make the BPC in FDI rx/transcoder be consistent with that in + pipeconf on Ironlake + * drm/i915: Select the correct BPC for LVDS on Ironlake + * drm/i915: fix unused var + * rtc_cmos: convert shutdown to new pnp_driver->shutdown + * drivers/cpuidle/governors/menu.c: fix undefined reference to + `__udivdi3' + * cgroups: fix 2.6.32 regression causing BUG_ON() in cgroup_diput() + * lib/rational.c needs module.h + * dma-debug: allow DMA_BIDIRECTIONAL mappings to be synced with + DMA_FROM_DEVICE and + * kernel/signal.c: fix kernel information leak with print-fatal-signals=1 + * mmc_block: add dev_t initialization check + * mmc_block: fix probe error cleanup bug + * mmc_block: fix queue cleanup + * ALSA: hda - Fix ALC861-VD capture source mixer + * ALSA: ac97: Add Dell Dimension 2400 to Headphone/Line Jack Sense + blacklist + * ALSA: atiixp: Specify codec for Foxconn RC4107MA-RS2 + - LP: #498863 + * ASoC: Fix WM8350 DSP mode B configuration + * netfilter: ebtables: enforce CAP_NET_ADMIN + * netfilter: nf_ct_ftp: fix out of bounds read in update_nl_seq() + * hwmon: (coretemp) Fix TjMax for Atom N450/D410/D510 CPUs + * hwmon: (adt7462) Fix pin 28 monitoring + * quota: Fix dquot_transfer for filesystems different from ext4 + * xen: fix hang on suspend. + * iwlwifi: fix iwl_queue_used bug when read_ptr == write_ptr + * ath5k: Fix eeprom checksum check for custom sized eeproms + * cfg80211: fix syntax error on user regulatory hints + * iwl: off by one bug + * mac80211: add missing sanity checks for action frames + * drm/i915: remove render reclock support + * libertas: Remove carrier signaling from the scan code + * kernel/sysctl.c: fix stable merge error in NOMMU mmap_min_addr + * mac80211: fix skb buffering issue (and fixes to that) + * fix braindamage in audit_tree.c untag_chunk() + * fix more leaks in audit_tree.c tag_chunk() + * module: handle ppc64 relocating kcrctabs when CONFIG_RELOCATABLE=y + * ipv6: skb_dst() can be NULL in ipv6_hop_jumbo(). + * agp/intel-agp: Clear entire GTT on startup + * Linux 2.6.32.4 + * ethtool: Add reset operation + * gro: Name the GRO result enumeration type + * gro: Change all receive functions to return GRO result codes + * sfc: 10Xpress: Initialise pause advertising flags + * sfc: 10Xpress: Report support for pause frames + * sfc: Remove redundant header gmii.h + * sfc: Remove redundant hardware initialisation + * sfc: Rename Falcon-specific board code and types + * sfc: Remove boards.h, moving last remaining declaration to falcon.h + * sfc: Remove versioned bitfield macros + * sfc: Move RX data FIFO thresholds out of struct efx_nic_type + * sfc: Update hardware definitions for Siena + * sfc: Rename register I/O header and functions used by both Falcon and + Siena + * sfc: Eliminate indirect lookups of queue size constants + * sfc: Define DMA address mask explicitly in terms of descriptor field + width + * sfc: Move all TX DMA length limiting into tx.c + * sfc: Change order of device removal to reverse of probe order + * sfc: Remove declarations of nonexistent functions + * sfc: Move efx_xmit_done() declaration into correct stanza + * sfc: Move shared members of struct falcon_nic_data into struct efx_nic + * sfc: Maintain interrupt moderation values in ticks, not microseconds + * sfc: Removed kernel-doc for nonexistent member of efx_phy_operations + * sfc: Remove pointless abstraction of memory BAR number + * sfc: Remove incorrect assertion from efx_pci_remove_main() + * sfc: Remove unnecessary tests of efx->membase + * sfc: Move MTD probe after netdev registration and name allocation + * sfc: Remove unused code for non-autoneg speed/duplex switching + * sfc: Rename 'xfp' file and functions to reflect reality + * sfc: Really allow RX checksum offload to be disabled + * sfc: Feed GRO result into RX allocation policy and interrupt moderation + * sfc: Enable heuristic selection between page and skb RX buffers + * sfc: Remove pointless abstraction of memory BAR number (2) + * sfc: Remove redundant gotos from __efx_rx_packet() + * sfc: Remove ridiculously paranoid assertions + * sfc: Move assertions and buffer cleanup earlier in efx_rx_packet_lro() + * sfc: Record RX queue number on GRO path + * sfc: SFT9001: Reset LED configuration correctly after blinking + * sfc: Use a single blink implementation + * sfc: Rename efx_board::init_leds to init_phy and use for SFN4111T + * sfc: Make board information explicitly Falcon-specific + * sfc: Move definition of struct falcon_nic_data into falcon.h + * sfc: Move struct falcon_board into struct falcon_nic_data + * sfc: Move all I2C stuff into struct falcon_board + * sfc: Gather link state fields in struct efx_nic into new struct + efx_link_state + * sfc: Remove unnecessary casts to struct sk_buff * + * sfc: Remove redundant efx_xmit() function + * sfc: Combine high-level header files + * sfc: Log interrupt and reset type names, not numbers + * sfc: Fix descriptor cache sizes + * sfc: Treat all MAC registers as 128-bit + * sfc: Strengthen EFX_ASSERT_RESET_SERIALISED + * sfc: Comment corrections + * sfc: Remove unused constant + * sfc: Clean up struct falcon_board and struct falcon_board_data + * sfc: Fix bugs in RX queue flushing + * sfc: Remove unused function efx_flush_queues() + * sfc: Only switch Falcon MAC clocks as necessary + * sfc: Hold MAC lock for longer in efx_init_port() + * sfc: Split MAC stats DMA initiation and completion + * sfc: Move Falcon board/PHY/MAC monitoring code to falcon.c + * sfc: Simplify XMAC link polling + * sfc: Change MAC promiscuity and multicast hash at the same time + * sfc: Move inline comment into kernel-doc + * sfc: Do not set net_device::trans_start in self-test + * sfc: Simplify PHY polling + * sfc: QT202x: Reset before reading PHY id + * sfc: Replace MDIO spinlock with mutex + * sfc: Always start Falcon using the XMAC + * sfc: Limit some hardware workarounds to Falcon + * sfc: Remove EFX_WORKAROUND_9141 macro + * sfc: Remove another unused workaround macro + * sfc: Remove some redundant whitespace + * sfc: Decouple NIC revision number from Falcon PCI revision number + * sfc: Move descriptor cache base addresses to struct efx_nic_type + * sfc: Clean up RX event handling + * sfc: Remove redundant writes to INT_ADR_KER + * sfc: Remove duplicate hardware structure definitions + * sfc: Turn pause frame generation on and off at the MAC, not the RX FIFO + * sfc: Move Falcon NIC operations to efx_nic_type + * sfc: Refactor link configuration + * sfc: Generalise link state monitoring + * sfc: Add power-management and wake-on-LAN support + * sfc: Implement ethtool reset operation + * sfc: Add efx_nic_type operation for register self-test + * sfc: Add efx_nic_type operation for NVRAM self-test + * sfc: Add efx_nic_type operation for identity LED control + * sfc: Separate shared NIC code from Falcon-specific and rename + accordingly + * sfc: Fold falcon_probe_nic_variant() into falcon_probe_nic() + * sfc: Extend loopback mode enumeration + * sfc: Remove static PHY data and enumerations + * sfc: Extend MTD driver for use with new NICs + * sfc: Allow for additional checksum offload features + * sfc: Rename falcon.h to nic.h + * sfc: Move shared NIC code from falcon.c to new source file nic.c + * sfc: Add firmware protocol definitions (MCDI) + * sfc: Add support for SFC9000 family (1) + * sfc: Add support for SFC9000 family (2) + * sfc: Implement TSO for TCP/IPv6 + * sfc: Update version, copyright dates, authors + * drivers/net/sfc: Correct code taking the size of a pointer + * sfc: Move PHY software state initialisation from init() into probe() + * sfc: Include XGXS in XMAC link status check except in XGMII loopback + * sfc: Fix DMA mapping cleanup in case of an error in TSO + * sfc: QT2025C: Work around PHY bug + * sfc: QT2025C: Switch into self-configure mode when not in loopback + * sfc: QT2025C: Work around PHY firmware initialisation bug + * sfc: QT2025C: Add error message for suspected bad SFP+ cables + * sfc: Disable TX descriptor prefetch watchdog + * [SCSI] vmw_pvscsi: SCSI driver for VMware's virtual HBA. + - LP: #497156 + + -- Andy Whitcroft Tue, 19 Jan 2010 16:12:47 +0000 + +linux (2.6.32-10.14) lucid; urgency=low + + [ Alex Deucher ] + + * SAUCE: drm/radeon/kms: fix LVDS setup on r4xx + - LP: #493795 + + [ Andy Whitcroft ] + + * Revert "(pre-stable) acpi: Use the ARB_DISABLE for the CPU which model + id is less than 0x0f." + * config-check -- ensure the checks get run at build time + * config-check -- check the processed config during updateconfigs + * config-check -- CONFIG_SECCOMP may not be present + * TUN is now built in ignore + * SAUCE: acpi battery -- delay first lookup of the battery until first + use + * SAUCE: async_populate_rootfs: move rootfs init earlier + * ubuntu: AppArmor -- update to mainline 2010-01-06 + * SAUCE: move RLIMIT_CORE pipe dumper marker to 1 + - LP: #498525 + + [ Dave Airlie ] + + * (pre-stable) drm/radeon/kms: fix crtc vblank update for r600 + + [ Leann Ogasawara ] + + * Add asix to nic-usb-modules file + - LP: #499785 + + [ Peter Zijlstra ] + + * (pre-stable) sched: Fix balance vs hotplug race + + [ Tim Gardner ] + + * [Config] Enable CONFIG_FUNCTION_TRACER + - LP: #497989 + * [Config] Drop lpia from getabis + * [Config] Build in TUN/TAP driver + - LP: #499491 + * [Config] DH_COMPAT=5 + + [ Upstream Kernel Changes ] + + * Revert "(pre-stable) drm/i915: Avoid NULL dereference with + component_only tv_modes" + * Revert "(pre-stable) drm/i915: Fix sync to vblank when VGA output is + turned off" + * USB: usb-storage: fix bug in fill_inquiry + * USB: option: add pid for ZTE + * firewire: ohci: handle receive packets with a data length of zero + * rcu: Prepare for synchronization fixes: clean up for non-NO_HZ handling + of ->completed counter + * rcu: Fix synchronization for rcu_process_gp_end() uses of ->completed + counter + * rcu: Fix note_new_gpnum() uses of ->gpnum + * rcu: Remove inline from forward-referenced functions + * perf_event: Fix invalid type in ioctl definition + * perf_event: Initialize data.period in perf_swevent_hrtimer() + * perf: Don't free perf_mmap_data until work has been done + * PM / Runtime: Fix lockdep warning in __pm_runtime_set_status() + * sched: Check for an idle shared cache in select_task_rq_fair() + * sched: Fix affinity logic in select_task_rq_fair() + * sched: Rate-limit newidle + * sched: Fix and clean up rate-limit newidle code + * x86/amd-iommu: attach devices to pre-allocated domains early + * x86/amd-iommu: un__init iommu_setup_msi + * x86, Calgary IOMMU quirk: Find nearest matching Calgary while walking + up the PCI tree + * x86: Fix iommu=nodac parameter handling + * x86: GART: pci-gart_64.c: Use correct length in strncmp + * x86: ASUS P4S800 reboot=bios quirk + - LP: #366682 + * x86, apic: Enable lapic nmi watchdog on AMD Family 11h + * ssb: Fix range check in sprom write + * ath5k: allow setting txpower to 0 + * ath5k: enable EEPROM checksum check + * hrtimer: Fix /proc/timer_list regression + * ALSA: hrtimer - Fix lock-up + * ALSA: hda - Terradici HDA controllers does not support 64-bit mode + * KVM: x86 emulator: limit instructions to 15 bytes + * KVM: s390: Fix prefix register checking in arch/s390/kvm/sigp.c + * KVM: s390: Make psw available on all exits, not just a subset + * KVM: fix irq_source_id size verification + * KVM: x86: include pvclock MSRs in msrs_to_save + * x86: Prevent GCC 4.4.x (pentium-mmx et al) function prologue wreckage + * x86: Use -maccumulate-outgoing-args for sane mcount prologues + * x86, mce: don't restart timer if disabled + * x86/mce: Set up timer unconditionally + * x86: SGI UV: Fix BAU initialization + * x86: Fix duplicated UV BAU interrupt vector + * x86: Add new Intel CPU cache size descriptors + * x86: Fix typo in Intel CPU cache size descriptor + * pata_hpt{37x|3x2n}: fix timing register masks (take 2) + * s390: clear high-order bits of registers after sam64 + * V4L/DVB: Fix test in copy_reg_bits() + * bsdacct: fix uid/gid misreporting + * UBI: flush wl before clearing update marker + * jbd2: don't wipe the journal on a failed journal checksum + * USB: xhci: Add correct email and files to MAINTAINERS entry. + * USB: musb_gadget_ep0: fix unhandled endpoint 0 IRQs, again + * USB: option.c: add support for D-Link DWM-162-U5 + * USB: usbtmc: repeat usb_bulk_msg until whole message is transfered + * USB: usb-storage: add BAD_SENSE flag + * USB: Close usb_find_interface race v3 + * pxa/em-x270: fix usb hub power up/reset sequence + * hfs: fix a potential buffer overflow + * SUNRPC: IS_ERR/PTR_ERR confusion + * NFS: Fix nfs_migrate_page() + * md/bitmap: protect against bitmap removal while being updated. + * futex: Take mmap_sem for get_user_pages in fault_in_user_writeable + * devpts_get_tty() should validate inode + * debugfs: fix create mutex racy fops and private data + * Driver core: fix race in dev_driver_string + * Serial: Do not read IIR in serial8250_start_tx when UART_BUG_TXEN + * mac80211: Fix bug in computing crc over dynamic IEs in beacon + * mac80211: Fixed bug in mesh portal paths + * mac80211: Revert 'Use correct sign for mesh active path refresh' + * mac80211: fix scan abort sanity checks + * wireless: correctly report signal value for IEEE80211_HW_SIGNAL_UNSPEC + * rtl8187: Fix wrong rfkill switch mask for some models + * x86: Fix bogus warning in apic_noop.apic_write() + * mm: hugetlb: fix hugepage memory leak in mincore() + * mm: hugetlb: fix hugepage memory leak in walk_page_range() + * powerpc/windfarm: Add detection for second cpu pump + * powerpc/therm_adt746x: Record pwm invert bit at module load time] + * powerpc: Fix usage of 64-bit instruction in 32-bit altivec code + * drm/radeon/kms: Add quirk for HIS X1300 board + * drm/radeon/kms: handle vblanks properly with dpms on + * drm/radeon/kms: fix legacy crtc2 dpms + * drm/radeon/kms: fix vram setup on rs600 + * drm/radeon/kms: rs6xx/rs740: clamp vram to aperture size + * drm/ttm: Fix build failure due to missing struct page + * drm/i915: Set the error code after failing to insert new offset into mm + ht. + * drm/i915: Add the missing clonemask for display port on Ironlake + * xen/xenbus: make DEVICE_ATTR()s static + * xen: re-register runstate area earlier on resume. + * xen: restore runstate_info even if !have_vcpu_info_placement + * xen: correctly restore pfn_to_mfn_list_list after resume + * xen: register timer interrupt with IRQF_TIMER + * xen: register runstate on secondary CPUs + * xen: don't call dpm_resume_noirq() with interrupts disabled. + * xen: register runstate info for boot CPU early + * xen: call clock resume notifier on all CPUs + * xen: improve error handling in do_suspend. + * xen: don't leak IRQs over suspend/resume. + * xen: use iret for return from 64b kernel to 32b usermode + * xen: explicitly create/destroy stop_machine workqueues outside + suspend/resume region. + * Xen balloon: fix totalram_pages counting. + * xen: try harder to balloon up under memory pressure. + * dm exception store: free tmp_store on persistent flag error + * dm snapshot: only take lock for statustype info not table + * dm crypt: move private iv fields to structs + * dm crypt: restructure essiv error path + * dm: avoid _hash_lock deadlock + * dm snapshot: cope with chunk size larger than origin + * dm crypt: separate essiv allocation from initialisation + * dm crypt: make wipe message also wipe essiv key + * slc90e66: fix UDMA handling + * tcp: Stalling connections: Fix timeout calculation routine + * ip_fragment: also adjust skb->truesize for packets not owned by a + socket + * b44 WOL setup: one-bit-off stack corruption kernel panic fix + * sparc64: Don't specify IRQF_SHARED for LDC interrupts. + * sparc64: Fix overly strict range type matching for PCI devices. + * sparc64: Fix stack debugging IRQ stack regression. + * sparc: Set UTS_MACHINE correctly. + * b43legacy: avoid PPC fault during resume + * tracing: Fix event format export + * ath9k: Fix TX hang poll routine + * ath9k: fix processing of TX PS null data frames + * ath9k: Fix maximum tx fifo settings for single stream devices + * ath9k: fix tx status reporting + * mac80211: Fix dynamic power save for scanning. + * drm/i915: Fix sync to vblank when VGA output is turned off + * memcg: fix memory.memsw.usage_in_bytes for root cgroup + * thinkpad-acpi: fix default brightness_mode for R50e/R51 + * thinkpad-acpi: preserve rfkill state across suspend/resume + * ipw2100: fix rebooting hang with driver loaded + * matroxfb: fix problems with display stability + * acerhdf: add new BIOS versions + * asus-laptop: change light sens default values. + * vmalloc: conditionalize build of pcpu_get_vm_areas() + * ACPI: Use the ARB_DISABLE for the CPU which model id is less than 0x0f. + * net: Fix userspace RTM_NEWLINK notifications. + * ext3: Fix data / filesystem corruption when write fails to copy data + * V4L/DVB (13116): gspca - ov519: Webcam 041e:4067 added. + * bcm63xx_enet: fix compilation failure after get_stats_count removal + * x86: Under BIOS control, restore AP's APIC_LVTTHMR to the BSP value + * drm/i915: Avoid NULL dereference with component_only tv_modes + * drm/i915: PineView only has LVDS and CRT ports + * drm/i915: Fix LVDS stability issue on Ironlake + * mm: sigbus instead of abusing oom + * ipvs: zero usvc and udest + * jffs2: Fix long-standing bug with symlink garbage collection. + * intel-iommu: Detect DMAR in hyperspace at probe time. + * intel-iommu: Apply BIOS sanity checks for interrupt remapping too. + * intel-iommu: Check for an RMRR which ends before it starts. + * intel-iommu: Fix oops with intel_iommu=igfx_off + * intel-iommu: ignore page table validation in pass through mode + * netfilter: xtables: document minimal required version + * perf_event: Fix incorrect range check on cpu number + * implement early_io{re,un}map for ia64 + * Linux 2.6.32.2 + + -- Andy Whitcroft Thu, 07 Jan 2010 15:28:43 +0000 + +linux (2.6.32-9.13) lucid; urgency=low + + [ Andy Whitcroft ] + + * [Config] enable CONFIG_B43_PHY_LP + - LP: #493059 + * include modules.builtin in the binary debs + * config-check -- add a configuration enforcer + * config-check -- add a unit-test suite to the checker + * [Config] Enable CONFIG_SYN_COOKIES for versatile + * [Config] Enable CONFIG_SECURITY_SMACK for ports + * [Config] Enable CONFIG_SECURITY_FILE_CAPABILITIES for ports + * [Config] Disable CONFIG_COMPAT_BRK for ports + * getabis -- add armel versatile to the list + + [ Brad Figg ] + + * SAUCE: Increase the default prealloc buffer for HDA audio devices + (non-modem) + + [ Manoj Iyer ] + + * ubuntu: onmibook -- Added missing BOM file + + [ Tim Gardner ] + + * ubuntu: fsam7400 -- Cleanup Makefile + + [ Upstream Kernel Changes ] + + * Revert "ext4: Fix insufficient checks in EXT4_IOC_MOVE_EXT" + * signal: Fix alternate signal stack check + * SCSI: scsi_lib_dma: fix bug with dma maps on nested scsi objects + * SCSI: osd_protocol.h: Add missing #include + * SCSI: megaraid_sas: fix 64 bit sense pointer truncation + * ext4: fix potential buffer head leak when add_dirent_to_buf() returns + ENOSPC + * ext4: avoid divide by zero when trying to mount a corrupted file system + * ext4: fix the returned block count if EXT4_IOC_MOVE_EXT fails + * ext4: fix lock order problem in ext4_move_extents() + * ext4: fix possible recursive locking warning in EXT4_IOC_MOVE_EXT + * ext4: plug a buffer_head leak in an error path of ext4_iget() + * ext4: make sure directory and symlink blocks are revoked + * ext4: fix i_flags access in ext4_da_writepages_trans_blocks() + * ext4: journal all modifications in ext4_xattr_set_handle + * ext4: don't update the superblock in ext4_statfs() + * ext4: fix uninit block bitmap initialization when s_meta_first_bg is + non-zero + * ext4: fix block validity checks so they work correctly with meta_bg + * ext4: avoid issuing unnecessary barriers + * ext4: fix error handling in ext4_ind_get_blocks() + * ext4: make trim/discard optional (and off by default) + * ext4: make "norecovery" an alias for "noload" + * ext4: Fix double-free of blocks with EXT4_IOC_MOVE_EXT + * ext4: initialize moved_len before calling ext4_move_extents() + * ext4: move_extent_per_page() cleanup + * jbd2: Add ENOMEM checking in and for + jbd2_journal_write_metadata_buffer() + * ext4: Return the PTR_ERR of the correct pointer in + setup_new_group_blocks() + * ext4: Avoid data / filesystem corruption when write fails to copy data + * ext4: wait for log to commit when umounting + * ext4: remove blocks from inode prealloc list on failure + * ext4: ext4_get_reserved_space() must return bytes instead of blocks + * ext4: quota macros cleanup + * ext4: fix incorrect block reservation on quota transfer. + * ext4: Wait for proper transaction commit on fsync + * ext4: Fix insufficient checks in EXT4_IOC_MOVE_EXT + * ext4: Fix potential fiemap deadlock (mmap_sem vs. i_data_sem) + * Linux 2.6.32.1 + * kbuild: generate modules.builtin + * (pre-stable) drm/i915: Fix sync to vblank when VGA output is turned off + - LP: #494461 + * (pre-stable) drm/i915: Avoid NULL dereference with component_only + tv_modes + - LP: #494045 + + [ Zhao Yakui ] + + * (pre-stable) acpi: Use the ARB_DISABLE for the CPU which model id is + less than 0x0f. + - LP: #481765 + + -- Andy Whitcroft Thu, 17 Dec 2009 15:41:21 +0000 + +linux (2.6.32-8.12) lucid; urgency=low + + [ Andy Whitcroft ] + + * SAUCE: AppArmor -- add linux/err.h for ERR_PTR + + -- Andy Whitcroft Sat, 12 Dec 2009 10:56:16 +0000 + +linux (2.6.32-8.11) lucid; urgency=low + + [ Andy Whitcroft ] + + * Revert "SAUCE: default ATI Radeon KMS to off until userspace catches + up" + * Revert "SAUCE: AppArmor: Fix oops there is no tracer and doing unsafe + transition." + * Revert "SAUCE: AppArmor: Fix refcounting bug causing leak of creds" + * Revert "SAUCE: AppArmor: Fix cap audit_caching preemption disabling" + * Revert "SAUCE: AppArmor: Fix Oops when in apparmor_bprm_set_creds" + * Revert "SAUCE: AppArmor: Fix oops after profile removal" + * Revert "SAUCE: AppArmor: AppArmor disallows truncate of deleted files." + * Revert "SAUCE: AppArmor: AppArmor fails to audit change_hat correctly" + * Revert "SAUCE: AppArmor: Policy load and replacement can fail to alloc + mem" + * Revert "SAUCE: AppArmor: AppArmor wrongly reports allow perms as + denied" + * Revert "SAUCE: AppArmor: Fix mediation of "deleted" paths" + * Revert "SAUCE: AppArmor: Fix off by 2 error in getprocattr mem + allocation" + * Revert "SAUCE: AppArmor: Set error code after structure + initialization." + * Revert "AppArmor -- fix pstrace_may_access rename" + * Revert "ubuntu: AppArmor security module" + * Revert "SAUCE: Add config option to set a default LSM" + * Revert "ubuntu: fsam7400 -- sw kill switch driver" + * Revert "[Config] fsam7400 -- enable" + * Revert "[Config] AUFS -- enable" + * Revert "ubuntu: AUFS -- aufs2-30 20090727" + * Revert "ubuntu: AUFS -- export various core functions -- fixes" + * Revert "ubuntu: AUFS -- export various core functions" + * Revert "[Config] ubuntu/iscsitarget -- disable" + * Revert "[Config] iscsitarget -- enable" + * Revert "ubuntu: iscsitarget -- SVN revision r214" + * update Vcs-Git to point to the correct repository + - LP: #493589 + * update build environment overrides to lucid + - LP: #493589 + * [Config] enable CONFIG_DEVTMPFS + * [Config] update all configs following AppArmor 2009-12-08 update + * SAUCE: isapnp_init: make isa PNP scans occur async + * [Config] fsam7400 -- enable + * [Config] omnibook -- enable + * [Config] cleanup CONFIG_AUDIT + * ubuntu: AUFS -- export various core functions (aufs2-base.patch) + * ubuntu: AUFS -- export various core functions (aufs2-standalone.patch) + * ubuntu: AUFS -- aufs2 20091209 + * [Config] AUFS -- enable + * [Config] iscsitarget -- enable + + [ Arjan van de Ven ] + + * SAUCE: KMS: cache the EDID information of the LVDS + + [ Colin Watson ] + + * bnx2: update d-i firmware filenames + - LP: #494052 + * add cdc_ether to nic-usb-modules udeb + - LP: #495060 + + [ John Johansen ] + + * ubuntu: AppArmor -- mainline 2009-10-08 + + [ Manoj Iyer ] + + * ubuntu: fsam7400 -- kill switch for Fujitsu Siemens Amilo M 7400 + * ubuntu: omnibook -- support Toshiba (HP) netbooks + * ubuntu: iscsitarget --- version 1.4.19 + - LP: #494693 + + [ Surbhi Palande ] + + * SAUCE: Make populate_rootfs asynchronous + + [ Tim Gardner ] + + * Parallelize flavour builds and packaging + * [Config] Enable CONFIG_KSM + + [ Upstream Kernel Changes ] + + * Config option to set a default LSM + * LSM: Add security_path_chroot(). + * LSM: Add security_path_chroot(). + * LSM: Move security_path_chmod()/security_path_chown() to after + mutex_lock(). + * ext4: Fix insufficient checks in EXT4_IOC_MOVE_EXT + + -- Andy Whitcroft Fri, 11 Dec 2009 17:45:19 +0000 + +linux (2.6.32-7.10) lucid; urgency=low + + [ Andy Whitcroft ] + + * [Config] disable CONFIG_THUMB2_KERNEL to fix arm FTBFS + + -- Andy Whitcroft Sun, 06 Dec 2009 12:56:48 +0000 + +linux (2.6.32-7.9) lucid; urgency=low + + [ Andy Whitcroft ] + + * SAUCE: set /proc/acpi/video/*/DOS to 4 by default + - LP: #458982 + * SAUCE: ensure vga16fb loads if no other driver claims the VGA device + * [Config] update configs following versatile switch to V7 + * rebased to v2.6.32 + * [Config] update configs following rebase to v2.6.32 + * [Config] update ports configs following rebase to v2.6.32 + * SAUCE: default ATI Radeon KMS to off until userspace catches up + + [ Arjan van de Ven ] + + * SAUCE: vfs: Add a trace point in the mark_inode_dirty function + + [ Leann Ogasawara ] + + * [SCSI] megaraid_sas: remove sysfs poll_mode_io world writeable + permissions + - CVE-2009-3939 + + [ Loic Minier ] + + * SAUCE: select a v7 CPU for versatile + + [ Takashi Iwai ] + + * SAUCE: ALSA: hda - Add power on/off counter + + [ Upstream changes ] + + * rebased to v2.6.32 + + -- Andy Whitcroft Fri, 04 Dec 2009 10:44:50 +0000 + +linux (2.6.32-6.8) lucid; urgency=low + + [ Andy Whitcroft ] + + * [Config] disable SSB devices for armel + + -- Andy Whitcroft Sat, 28 Nov 2009 12:16:40 +0000 + +linux (2.6.32-6.7) lucid; urgency=low + + [ Andy Whitcroft ] + + * Revert "SAUCE: default ATI Radeon KMS to off until userspace catches up" + * Revert "SAUCE: Dell XPS710 reboot quirk" + * Revert "SAUCE: Link acpi-cpufreq.o first" + * Revert "SAUCE: LPIA Logical reset of USB port on resume" + * Revert "SAUCE: LPIA Reboot fix for Intel Crownbeach development boards" + * Revert "SAUCE: Enable HDMI audio codec on Studio XPS 1340" + * Revert "SAUCE: Dell laptop digital mic does not work, PCI 1028:0271" + * Revert "Add Dell Dimension 9200 reboot quirk" + * Revert "SAUCE: Correctly blacklist Thinkpad r40e in ACPI" + * Revert "SAUCE: tulip: Define ULI PCI ID's" + * Revert "SAUCE: Lower warning level of some PCI messages" + * Revert "mac80211: fix two issues in debugfs" + Drop a number of known redundant commits as identified in the Ubuntu + delta review blueprint. + + * reenable armel versatile flavour + * [Config] disable CONFIG_USB_DEVICEFS + + [ Tim Gardner ] + + * [Config] udeb: Add squashfs to fs-core-modules + - LP: #352615 + * [Config] Create a real squashfs udeb + - LP: #352615 + + + -- Andy Whitcroft Fri, 27 Nov 2009 17:31:16 +0000 + +linux (2.6.32-5.6) lucid; urgency=low + + [ Andy Whitcroft ] + + * rebase to v2.6.32-rc8 + * update configs following rebase to v2.6.32-rc8 + * update ports configs since rebase to v2.6.32-rc8 + * [Config] enable cgroup options + - LP: #480739 + + [ Upstream Kernel Changes ] + + * rebase to v2.6.32-rc8 + + -- Andy Whitcroft Mon, 23 Nov 2009 11:16:14 +0000 + +linux (2.6.32-4.5) lucid; urgency=low + + [ Andy Whitcroft ] + + * [Config] SERIO_LIBPS2 and SERIO_I8042 must match + * rebase to v2.6.32-rc7 + * resync with Karmic proposed + + [ John Johansen ] + + * SAUCE: AppArmor: Fix oops after profile removal + - LP: #475619 + * SAUCE: AppArmor: Fix Oops when in apparmor_bprm_set_creds + - LP: #437258 + * SAUCE: AppArmor: Fix cap audit_caching preemption disabling + - LP: #479102 + * SAUCE: AppArmor: Fix refcounting bug causing leak of creds + - LP: #479115 + * SAUCE: AppArmor: Fix oops there is no tracer and doing unsafe + transition. + - LP: #480112 + + [ Ubuntu Changes ] + + * resync with Karmic proposed (ddbc670a86a3dee18541a3734149f250ff307adf) + + [ Upstream Kernel Changes ] + + * rebase to v2.6.32-rc7 + + -- Andy Whitcroft Fri, 13 Nov 2009 11:35:13 +0000 + +linux (2.6.32-3.4) lucid; urgency=low + + [ Andy Whitcroft ] + + * [Config] SERIO_LIBPS2 and SERIO_I8042 must match + * [Upstream] add local prefix to oss local change_bits + + [ Upstream Kernel Changes ] + + * mtd/maps: gpio-addr-flash: pull in linux/ headers rather than asm/ + * mtd/maps: gpio-addr-flash: depend on GPIO arch support + + -- Andy Whitcroft Wed, 11 Nov 2009 14:47:04 +0000 + +linux (2.6.32-3.3) lucid; urgency=low + + [ Andy Whitcroft ] + + * rebase to v2.6.32-rc6 + * [Config] update configs following rebase to v2.6.32-rc6 + * [Config] update ports configs following rebase to v2.6.32-rc6 + * resync with Karmic Ubuntu-2.6.31-15.49 + * [Config] add module ignores for broken drivers + + [ John Johansen ] + + * SAUCE: AppArmor: AppArmor wrongly reports allow perms as denied + - LP: #453335 + * SAUCE: AppArmor: Policy load and replacement can fail to alloc mem + - LP: #458299 + * SAUCE: AppArmor: AppArmor fails to audit change_hat correctly + - LP: #462824 + * SAUCE: AppArmor: AppArmor disallows truncate of deleted files. + - LP: #451375 + + [ Kees Cook ] + + * SAUCE: Fix nx_enable reporting + - LP: #454285 + + [ Scott James Remnant ] + + * Revert "SAUCE: trace: add trace_event for the open() syscall" + * SAUCE: trace: add trace events for open(), exec() and uselib() + - LP: #462111 + + [ Stefan Bader ] + + * SAUCE: Fix sub-flavour script to not stop on missing directories + - LP: #453073 + + [ Ubuntu Changes ] + + * resync with Karmic Ubuntu-2.6.31-15.49 + + [ Upstream Kernel Changes ] + + * rebase to v2.6.32-rc6 + - LP: #464552 + + -- Andy Whitcroft Tue, 10 Nov 2009 15:00:57 +0000 + +linux (2.6.32-2.2) lucid; urgency=low + + [ Andy Whitcroft ] + + * install the full changelog with the binary package + * changelog -- explicitly note rebases and clean history + * reinstate armel.mk with no flavours + - LP: #449637 + * [Upstream] block: silently error unsupported empty barriers too + - LP: #420423 + * [Config] udate configs following karmic resync + * [Config] update ports configs following karmic resync + * [Upstream] lirc -- follow removal of .id element + + [ Colin Watson ] + + * Use section 'admin' rather than 'base' + * Add more e100 firmware to nic-modules + - LP: #451872 + * Add qla1280 firmware to scsi-modules + - LP: #381037 + + [ John Johansen ] + + * SAUCE: AppArmor: Set error code after structure initialization. + - LP: #427948 + * SAUCE: AppArmor: Fix off by 2 error in getprocattr mem allocation + - LP: #446595 + * SAUCE: AppArmor: Fix mediation of "deleted" paths + + [ Kees Cook ] + + * SAUCE: [x86] fix report of cs-limit nx-emulation + - LP: #454285 + + [ Leann Ogasawara ] + + * SAUCE: (drop after 2.6.31) input: Add support for filtering input + events + - LP: #430809 + * SAUCE: (drop after 2.6.31) dell-laptop: Trigger rfkill updates on wifi + toggle switch press + - LP: #430809 + + [ Luke Yelavich ] + + * SAUCE: Add sr_mod to the scsi-modules udeb for powerpc + * [Config] Add sd_mod to scsi-modules udeb for powerpc + + [ Mario Limonciello ] + + * SAUCE: Update to LIRC 0.8.6 + - LP: #432678 + * SAUCE: dell-laptop: Store the HW switch status internally rather than + requerying every time + - LP: #430809 + * SAUCE: dell-laptop: Blacklist machines not supporting dell-laptop + - LP: #430809 + + [ Stefan Bader ] + + * [Upstream] acerhdf: Limit modalias matching to supported boards + - LP: #435958 + + [ Tim Gardner ] + + * [Upstream] i915: Fix i2c init message + - LP: #409361 + * [Config] Add sym53c8xx.ko to virtual sub-flavour + - LP: #439415 + * [Config] Add d101m_ucode.bin to d-i/firmware/nic-modules + - LP: #439456 + * [Config] Set default I/O scheduler back to CFQ for desktop flavours + - LP: #381300 + * SAUCE: Created MODULE_EXPORT/MODULE_IMPORT macros + - LP: #430694 + * SAUCE: Use MODULE_IMPORT macro to tie intel_agp to i915 + - LP: #430694 + * [Config] CONFIG_GFS2_FS_LOCKING_DLM=y + - LP: #416325 + * SAUCE: Fix MODULE_IMPORT/MODULE_EXPORT + - LP: #430694 + * SAUCE: Raise the default console 'quiet' level to 2 + * [Config] CONFIG_X86_PAT=y + * [Config] Add armel arch to linux-libc-dev arches. + - LP: #449637 + * [Config] CONFIG_X86_MCE + * [Upstream] (drop after 2.6.31) Input: synaptics - add another Protege + M300 to rate blacklist + - LP: #433801 + + [ Upstream Kernel Changes ] + + * sgi-gru: Fix kernel stack buffer overrun, CVE-2009-2584 + * drm/i915: Fix FDI M/N setting according with correct color depth + - LP: #416792 + + -- Andy Whitcroft Thu, 22 Oct 2009 16:53:33 +0100 + +linux (2.6.32-1.1) lucid; urgency=low + + [ Andy Whitcroft ] + + * rebase to v2.6.32-rc3 + * [Config] update configs following rebase to 2.6.32-rc3 + * [Config] update ports configs following rebase to 2.6.32-rc3 + * AppArmor -- fix pstrace_may_access rename + * staging/android -- disable + * ubuntu: dm-raid-45 -- update to compile with 2.6.32 + * ubuntu: drbd -- disable + * staging/comdi -- disable + * staging/go7007 -- disable + * [Config] staging/winbond -- disable + * [Config] ubuntu/iscsitarget -- disable + * [d-i] cbc and ecb are builtin make them optional in udebs + * rebase to v2.6.32-rc5 + * [Config] update configs following rebase to v2.6.32-rc5 + * [Config] update ports configs following rebase to v2.6.31-rc5 + + [ Tim Gardner ] + + * [Config] Add cpio as a build dependency. + + [ Upstream Kernel Changes ] + + * rebase to v2.6.32-rc3 + * rebase to v2.6.32-rc5 + + -- Andy Whitcroft Mon, 05 Oct 2009 15:48:58 +0100 + +linux (2.6.31-11.37) karmic; urgency=low + + [ Tim Gardner ] + + * [Config] Increase kernel log buffer to 256K for amd64 flavours + - LP: #424810 + * [Config] Set HZ=100 for amd64 flavours + - LP: #438234 + * [Upstream] e1000e: Emit notice instead of an error when + pci_enable_pcie_error_reporting() fails + - LP: #436370 + + [ Upstream Kernel Changes ] + + * n_tty: honor opost flag for echoes + * n_tty: move echoctl check and clean up logic + - LP: #438310 + + * Revert "[Upstream] drm/i915: Check that the relocation points to within + the target" - Use upstream cherry-pick. + * drm/i915: Check that the relocation points to within the target + - LP: #429241 + + * drm/i915: fix tiling on IGDNG + * drm/i915: add B43 chipset support + * agp/intel: Add B43 chipset support + Intel request from kernel team mailing list. + + * HID: completely remove apple mightymouse from blacklist + - LP: #428111 + + -- Tim Gardner Mon, 28 Sep 2009 11:47:29 -0600 + +linux (2.6.31-11.36) karmic; urgency=low + + [ Brian Rogers ] + + * SAUCE: (drop after 2.6.31) em28xx: ir-kbd-i2c init data needs a + persistent object + * SAUCE: (drop after 2.6.31) saa7134: ir-kbd-i2c init data needs a + persistent object + + [ Takashi Iwai ] + + * [Upstream] ALSA: hda - Add another entry for Nvidia HDMI device + - LP: #416482 + + [ Tyler Hicks ] + + * SAUCE: (drop after 2.6.31) eCryptfs: Prevent lower dentry from going + negative during unlink + + [ Upstream Kernel Changes ] + + * sg: fix oops in the error path in sg_build_indirect() + * mpt2sas : Rescan topology from Interrupt context instead of work thread + * mpt2sas: Prevent sending command to FW while Host Reset + * mpt2sas: setting SDEV into RUNNING state from Interrupt context + * mpt2sas: Raid 10 Volume is showing as Raid 1E in dmesg + * SCSI: fix oops during scsi scanning + * SCSI: libsrp: fix memory leak in srp_ring_free() + * cfg80211: fix looping soft lockup in find_ie() + * ath5k: write PCU registers on initial reset + * binfmt_elf: fix PT_INTERP bss handling + * TPM: Fixup boot probe timeout for tpm_tis driver + * md: Fix "strchr" [drivers/md/dm-log-userspace.ko] undefined! + * x86/amd-iommu: fix broken check in amd_iommu_flush_all_devices + * fix undefined reference to user_shm_unlock + * perf_counter: Fix buffer overflow in perf_copy_attr() + * perf_counter: Start counting time enabled when group leader gets + enabled + * powerpc/perf_counters: Reduce stack usage of power_check_constraints + * powerpc: Fix bug where perf_counters breaks oprofile + * powerpc/ps3: Workaround for flash memory I/O error + * block: don't assume device has a request list backing in nr_requests + store + * agp/intel: remove restore in resume + * ALSA: cs46xx - Fix minimum period size + * ASoC: Fix WM835x Out4 capture enumeration + * sound: oxygen: work around MCE when changing volume + * mlx4_core: Allocate and map sufficient ICM memory for EQ context + * perf stat: Change noise calculation to use stddev + * x86: Fix x86_model test in es7000_apic_is_cluster() + * x86/i386: Make sure stack-protector segment base is cache aligned + * PCI: apply nv_msi_ht_cap_quirk on resume too + * x86, pat: Fix cacheflush address in change_page_attr_set_clr() + * ARM: 5691/1: fix cache aliasing issues between kmap() and kmap_atomic() + with highmem + * KVM guest: do not batch pte updates from interrupt context + * KVM: Fix coalesced interrupt reporting in IOAPIC + * KVM: VMX: Check cpl before emulating debug register access + * KVM guest: fix bogus wallclock physical address calculation + * KVM: x86: Disallow hypercalls for guest callers in rings > 0 + * KVM: VMX: Fix cr8 exiting control clobbering by EPT + * KVM: x86 emulator: Implement zero-extended immediate decoding + * KVM: MMU: make __kvm_mmu_free_some_pages handle empty list + * KVM: x86 emulator: fix jmp far decoding (opcode 0xea) + * KVM: limit lapic periodic timer frequency + * libata: fix off-by-one error in ata_tf_read_block() + * PCI quirk: update 82576 device ids in SR-IOV quirks list + * PCI: Unhide the SMBus on the Compaq Evo D510 USDT + * powerpc/pseries: Fix to handle slb resize across migration + * Linux 2.6.31.1 + + -- Tim Gardner Thu, 24 Sep 2009 13:04:28 -0600 + +linux (2.6.31-10.35) karmic; urgency=low + + [ Amit Kucheria ] + + * Disable CONFIG_UEVENT_HELPER_PATH + + [ Andy Whitcroft ] + + * [Config] Enable CONFIG_USB_GADGET_DUMMY_HCD + * remove the tlsup driver + * remove lmpcm logitech driver support + + [ Bryan Wu ] + + * Add 3 missing files to prerm remove file list + - LP: #345623, #415832 + + [ Chris Wilson ] + + * [Upstream] drm/i915: Check that the relocation points to within the + target + - LP: #429241 + + [ Luke Yelavich ] + + * [Config] Set CONFIG_EXT4_FS=y on ports architectures + + [ Manoj Iyer ] + + * SAUCE: Added quirk to recognize GE0301 3G modem as an interface. + - LP: #348861 + + [ Tim Gardner ] + + * Revert "[Upstream] ACPI: Add Thinkpad W500, W700, & W700ds to OSI(Linux) white-list" + * Revert "[Upstream] ACPI: Add Thinkpad R400 & Thinkpad R500 to OSI(Linux) white-list" + * Revert "[Upstream] ACPI: Add Thinkpad X300 & Thinkpad X301 to OSI(Linux) white-list" + * Revert "[Upstream] ACPI: Add Thinkpad X200, X200s, X200t to OSI(Linux) white-list" + * Revert "[Upstream] ACPI: Add Thinkpad T400 & Thinkpad T500 to OSI(Linux) white-list" + Upstream suggests that this is not the right approach. + + * [Config] Set default I/O scheduler to DEADLINE + CFQ seems to have some load related problems which are often exacerbated by sreadahead. + - LP: #381300 + + [ ubuntu@tjworld.net ] + + * SAUCE: ipw2200: Enable LED by default + - LP: #21367 + + [ Upstream Kernel Changes ] + + * ALSA: hda - Add support for new AMD HD audio devices + - LP: #430564 + + -- Andy Whitcroft Wed, 16 Sep 2009 15:37:49 +0100 + +linux (2.6.31-10.34) karmic; urgency=low + + [ Ted Tso ] + + * [Upstream] ext3: Don't update superblock write time when filesystem is + read-only + - LP: #427822 + + -- Tim Gardner Tue, 15 Sep 2009 16:00:45 -0600 + +linux (2.6.31-10.33) karmic; urgency=low + + [ Leann Ogasawara ] + + * [Upstream] dvb-usb: fix tuning with Cinergy T2 + - LP: #421258 + + [ Tim Gardner ] + + * [Config] Unconditionally copy files from sub-flavours lists. + (really, really fix it this time) + - LP: #423426 + * [Config] Set CONFIG_CACHEFILES=m for all flavours + + [ Upstream Kernel Changes ] + + * ext4: Don't update superblock write time when filesystem is read-only + - LP: #427822 + + -- Tim Gardner Tue, 15 Sep 2009 07:50:21 -0600 + +linux (2.6.31-10.32) karmic; urgency=low + + [ Eric Miao ] + + * [Config] enable module support for memory stick + - LP: #159951 + + [ Tim Gardner ] + + * [Config] Unconditionally copy files from sub-flavours lists. + - LP: #423426 + + -- Tim Gardner Thu, 10 Sep 2009 15:57:55 -0600 + +linux (2.6.31-10.31) karmic; urgency=low + + [ Andy Whitcroft ] + + * rebase to v2.6.31 final + + [ Colin Watson ] + + * [Config] Recommend grub-pc in linux-image + - LP: #385741 + + [ Ike Panhc ] + + * [Upstream] Pull latest update of lenovo-sl-laptop + + [ Peter Feuerer ] + + * [Upstream] (drop after 2.6.31) acerhdf: fix fan control for AOA150 + model + - LP: #426691 + + [ Tim Gardner ] + + * [Config] De-macro some package names. + + [ Upstream Changes ] + + * rebase to 2.6.31 final. + + -- Andy Whitcroft Thu, 10 Sep 2009 09:38:10 +0100 + +linux (2.6.31-10.30) karmic; urgency=low + + [ Amit Kucheria ] + + * [Config] Enable CONFIG_USB_DEVICEFS + - LP: #417748 + * [Config] Populate the config-update template a bit more + + [ Andy Whitcroft ] + + * rebase to v2.6.31-rc9 + * [Config] update configs following rebase to v2.6.31-rc9 + * [Config] update ports configs following rebase to v2.6.31-rc9 + + [ Colin Ian King ] + + * SAUCE: wireless: hostap, fix oops due to early probing interrupt + - LP: #254837 + + [ Jerone Young ] + + * [Upstream] ACPI: Add Thinkpad T400 & Thinkpad T500 to OSI(Linux) + white-list + - LP: #281732 + * [Upstream] ACPI: Add Thinkpad X200, X200s, X200t to OSI(Linux) + white-list + - LP: #281732 + * [Upstream] ACPI: Add Thinkpad X300 & Thinkpad X301 to OSI(Linux) + white-list + - LP: #281732 + * [Upstream] ACPI: Add Thinkpad R400 & Thinkpad R500 to OSI(Linux) + white-list + - LP: #281732 + * [Upstream] ACPI: Add Thinkpad W500, W700, & W700ds to OSI(Linux) + white-list + - LP: #281732 + + [ John Johansen ] + + * SAUCE: AppArmor: Fix profile attachment for regexp based profile names + - LP: #419308 + * SAUCE: AppArmor: Return the correct error codes on profile + addition/removal + - LP: #408473 + * SAUCE: AppArmor: Fix OOPS in profile listing, and display full list + - LP: #408454 + * SAUCE: AppArmor: Fix mapping of pux to new internal permission format + - LP: #419222 + * SAUCE: AppArmor: Fix change_profile failure + - LP: #401931 + * SAUCE: AppArmor: Tell git to ignore generated include files + - LP: #419505 + + [ Stefan Bader ] + + * [Upstream] acpi: video: Loosen strictness of video bus detection code + - LP: #333386 + * SAUCE: Remove ov511 driver from ubuntu subdirectory + + [ Tim Gardner ] + + * [Config] Exclude char-modules from non-x86 udeb creation + * SAUCE: Notify the ACPI call chain of AC events + * [Config] CONFIG_SATA_VIA=m + - LP: #403385 + * [Config] Build in all phylib support modules. + * [Config] Don't fail when sub-flavour files are missing + - LP: #423426 + * [Config] Set CONFIG_LSM_MMAP_MIN_ADDR=0 + - LP: #423513 + + [ Upstream ] + + * Rebased against v2.6.31-rc9 + + -- Andy Whitcroft Mon, 07 Sep 2009 11:33:45 +0100 + +linux (2.6.31-9.29) karmic; urgency=low + + [ Leann Ogasawara ] + + * [Upstream] agp/intel: support for new chip variant of IGDNG mobile + - LP: #419993 + * [Config] d-i/modules: Add new char-modules file, initialize with + intel-agp + - LP: #420605 + + [ Upstream ] + + * Rebased against 2.6.31-rc8 plus some inotify regression patches: + up through git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git + adda766193ea1cf3137484a9521972d080d0b7af. + + -- Tim Gardner Fri, 28 Aug 2009 06:31:30 -0600 + +linux (2.6.31-8.28) karmic; urgency=low + + [ Ike Panhc ] + + * [Config] Let nic-shared-modules depends on crypto-modules + - LP: #360966 + + [ Leann Ogasawara ] + + * [Upstream] (drop after 2.6.31) drm/i915: increase default latency + constant + - LP: #412492 + + [ Mario Limonciello ] + + * [Upstream]: (drop after 2.6.31) dell-laptop: don't change softblock + status if HW switch is disabled + - LP: #418721 + * [Upstream]: (drop after 2.6.31) compal-laptop: Add support for known + Compal made Dell laptops + * [Upstream]: (drop after 2.6.31) compal-laptop: Replace sysfs support + with rfkill support + + [ Tim Gardner ] + + * [Config] Add acpiphp to virtual sub-flavour + - LP: #364916 + * Drop KSM patch set for now because of instabilities with encrypted swap. + - LP: #418781 + + -- Tim Gardner Wed, 26 Aug 2009 08:14:26 -0600 + +linux (2.6.31-7.27) karmic; urgency=low + + [ Tim Gardner ] + + * [Config] updateconfigs updateportsconfigs after 2.6.31-rc7 rebase + * SAUCE: (drop after 2.6.31) Added KSM from mmotm-2009-08-20-19-18 + Replaces previous ksm patches from 2.6.31-6.25 + * [Config] KSM=y + + [ Upstream ] + + * Rebased against v2.6.31-rc7 + + -- Tim Gardner Sat, 22 Aug 2009 20:32:11 -0600 + +linux (2.6.31-6.26) karmic; urgency=low + + [ Andy Whitcroft ] + + * [Config] enable CONFIG_AUFS_BR_RAMFS + - LP: #414738 + * split out debian directory ready for abstraction + * add printdebian target to find branch target + * abstracted debian -- debian/files is not abstracted + * abstracted debian -- packages must be built in debian/ + * abstracted debian -- kernel-wedge needs to work in debian/ + * abstracted debian -- ensure we install the copyright file + * abstracted-debian -- drop the debian directories from headers + * abstracted-debian -- drop the debian directories from headers part 2 + * SAUCE: ubuntu-insert-changes -- follow abstracted debian + * [Upstream] aoe: ensure we initialise the request_queue correctly V2 + - LP: #410198 + + [ Luke Yelavich ] + + * [Config] Ports: Disable CONFIG_CPU_FREQ_DEBUG on powerpc-smp + * [Config] Ports: Re-enable windfarm modules on powerpc64-smp + - LP: #413150 + * [Config] Ports: Build all cpu frequency scaling governors into ports + kernels + * [Config] Ports: Build ext2 and ext3 modules into ports kernels + * [Config] Ports: CONFIG_PACKET=y for all ports kernels + * [Config] Ports: Enable PS3 network driver + + [ Stefan Bader ] + + * abstracted debian -- call $(DEBIAN)/rules using make + + [ Tim Gardner ] + + * [Config] Abstract the debian directory + * SAUCE: Improve error reporting in postinst + - LP: #358564 + + -- Tim Gardner Sun, 16 Aug 2009 20:33:28 -0600 + +linux (2.6.31-6.25) karmic; urgency=low + + [ Andy Whitcroft ] + + * script to generate Ubuntu changes from changelog + * [Config] standardise ANDROID options + * [Config] standardise CONFIG_ATM as module + * [Config] standardise CONFIG_LIB80211 as module + * [Config] disable CONFIG_PRINT_QUOTA_WARNING + * [Config] set CONFIG_CRAMFS as module + * [Config] enable CONFIG_DAB and modules + * [Config] set CONFIG_MAC80211_HWSIM as module + * [Config] set CONFIG_NET_CLS_FLOW as module + * [Config] set CONFIG_NF_CONNTRACK_SANE as module + * [Config] set CONFIG_NF_CT_PROTO_DCCP as module + * [Config] set CONFIG_RTC_DRV_DS1511 as module + * [Config] set CONFIG_RTC_DRV_R9701 as module + * [Config] set CONFIG_RTC_DRV_S35390A as module + * [Config] set CONFIG_TOIM3232_DONGLE as module + * [Config] standardise CONFIG_USB_MIDI_GADGET as module + * [Config] standardise CONFIG_USB_G_PRINTER as module + * [Config] standardise CONFIG_USB_SERIAL_IR as module + * [Config] set CONFIG_USB_SERIAL_IUU as module + * [Config] standardise CONFIG_USB_STORAGE_CYPRESS_ATACB as module + * [Config] standardise CONFIG_USB_STORAGE_ONETOUCH as module + * cleanup remains of dm-loop + * drop thinkpad ec and smapi support + * drop appleir + * [Config] update configs following rebase to v2.6.31-rc6 + * rebase to v2.6.31-rc6 + + [ Hugh Dickins ] + + * SAUCE: ksm patch 1, drop after 2.6.31 + * SAUCE: ksm patch 2, drop after 2.6.31 + * SAUCE: ksm patch 3, drop after 2.6.31 + * SAUCE: ksm patch 4, drop after 2.6.31 + * SAUCE: ksm patch 5, drop after 2.6.31 + * SAUCE: ksm patch 7, drop after 2.6.31 + + [ Izik Eidus ] + + * SAUCE: ksm patch 0, drop after 2.6.31 + * SAUCE: ksm patch 6, drop after 2.6.31 + * SAUCE: ksm patch 8, drop after 2.6.31 + * SAUCE: ksm patch 9, drop after 2.6.31 + + [ Luke Yelavich ] + + * [Config] Ports: Re-add PS3 modules to udebs + + [ Michael Casadevall ] + + * [Config] Update SPARC config and d-i files to reflect what can be built + + [ Tim Gardner ] + + * [Config] Removed armel package support + * [Config] Enabled CONFIG_KSM=y + + [ Upstream Kernel Changes ] + + * Rebased against v2.6.31-rc6 + * ARM: Cleanup: Revert "ARM: Add more cache memory types macros" + * ARM: Cleanup: Revert "Do not use OOB with MLC NAND" + * ARM: Cleanup: Revert "ARM: Make ARM arch aware of ubuntu/ drivers" + * ARM: Cleanup: Revert "ARM: IMX51: Make video capture drivers compile" + * ARM: Cleanup: Revert "ARM: IMX51: Fix isl29003 HWMON driver for i2c + changes" + * ARM: Cleanup: Revert "ARM: IMX51: IPU irq handler deadlock fix" + * ARM: Cleanup: Revert "ARM: IMX51: Babbage 2.5 needs a different system + revision" + * ARM: Cleanup: Revert "ARM: IMX51: Compile-in the IMX51 cpufreq driver + by default" + * ARM: Cleanup: Revert "ARM: IMX51: Enable ZONE_DMA for ARCH_MXC" + * ARM: Cleanup: Revert "ARM: IMX51: Make ARCH_MXC auto-enable + ARCH_MXC_CANONICAL" + * ARM: Cleanup: Revert "ARM: IMX51: Unconditionally disable + CONFIG_GPIOLIB" + * ARM: Cleanup: Revert "ARM: IMX51: Minimal changes for USB to work on + 2.6.31" + * ARM: Cleanup: Revert "ARM: IMX51: Fix plat-mxc/timer.c to handle imx51" + * ARM: Cleanup: Revert "ARM: IMX51: Make it compile." + * ARM: Cleanup: Revert "ARM: IMX51: Clean-up the craziness of including + mxc_uart.h _everywhere_" + * ARM: Cleanup: Revert "ARM: IMX51: Move board-mx51* header files to the + correct location" + * ARM: Cleanup: Revert "ARM: IMX51: Changed from snd_card_new to + snd_card_create" + * ARM: Cleanup: Revert "ARM: IMX51: Fix up merge error in Kconfig" + * ARM: Cleanup: Revert "ARM: IMX51: mxc_timer_init prototype" + * ARM: Cleanup: Revert "ARM: IMX51: Removed the mxc_gpio_port structure." + * ARM: Cleanup: Revert "ARM: IMX51: Added external declaration for + mxc_map_io." + * ARM: Cleanup: Revert "ARM: IMX51: Get to bus_id by calling dev_name." + * ARM: Cleanup: Revert "ARM: IMX51: Get to bus_id by calling dev_name." + * ARM: Cleanup: Revert "ARM: IMX51: snd_soc_machine structure replaced + with snd_soc_card." + * ARM: Cleanup: Revert "ARM: IMX51: codec structure was moved to the card + structure" + * ARM: Cleanup: Revert "ARM: IMX51: Hack to add defines for + DMA_MODE_READ/WRITE/MASK" + * ARM: Cleanup: Revert "ARM: IMX51: Add SoC and board support for + Freescale mx51 platform" + * Driver core: add new device to bus's list before probing + * [Upstream] (drop after 2.6.31) ALSA: hda - Reduce click noise at + power-saving + - LP: #381693, #399750, #380892 + + -- Andy Whitcroft Fri, 14 Aug 2009 11:32:23 +0100 + +linux (2.6.31-5.24) karmic; urgency=low + + [ Amit Kucheria ] + + * ARM: IMX51: Make video capture drivers compile + * [Config] IMX51: Config updates + + [ Andy Whitcroft ] + + * remove leftovers of dm-bbr + + [ Leann Ogasawara ] + + * Add pata_cs5535 to pata-modules + - LP: #318805 + + [ Luke Yelavich ] + + * [Config] CONFIG_PPC64=y for powerpc64-smp + * [Config] Set the maximum number of CPUs to 1024 for powerpc64-smp + * [Config] CONFIG_PPC_PS3=y for powerpc64-smp + * [Config] CONFIG_PPC_MAPLE=y on powerpc64-smp + * [Config] CONFIG_PPC_PASEMI=y on powerpc64-smp + * [Config] CONFIG_CPU_FREQ_PMAC64=y on powerpc64-smp + * [Config] Enable all PS3 drivers in powerpc64-smp + + [ Mario Limonciello ] + + * LIRC -- fix lirc-i2c 2.6.31 compilation + + [ Matthew Garrett ] + + * [Upstream] dell-laptop: Fix rfkill state queries + + [ Tim Gardner ] + + * [Config] Ignore armel ABI and module changes + * [Config] Update configs after rebase against 2.6.31-rc5 + + [ Upstream ] + + * Rebased to 2.6.31-rc5 + + -- Andy Whitcroft Tue, 28 Jul 2009 10:10:09 +0100 + +linux (2.6.31-4.23) karmic; urgency=low + + [ Andy Whitcroft ] + + * AUFS -- update to aufs2-30 20090727 + * [Config] enable AUFS FUSE support + + [ Luke Yelavich ] + + * [Config] CONFIG_JFS_FS=m on sparc + + [ Tim Gardner ] + + * [Upstream] dell-laptop: Fix rfkill state setting. + + -- Andy Whitcroft Mon, 27 Jul 2009 11:11:47 +0100 + +linux (2.6.31-4.22) karmic; urgency=low + + [ Amit Kucheria ] + + * ARM: IMX51: Add SoC and board support for Freescale mx51 platform + * ARM: IMX51: Move board-mx51* header files to the correct location + * ARM: IMX51: Clean-up the craziness of including mxc_uart.h _everywhere_ + * ARM: IMX51: Make it compile. + * ARM: IMX51: Unconditionally disable CONFIG_GPIOLIB + * ARM: IMX51: Make ARCH_MXC auto-enable ARCH_MXC_CANONICAL + * ARM: IMX51: Enable ZONE_DMA for ARCH_MXC + * ARM: IMX51: Compile-in the IMX51 cpufreq driver by default + * ARM: IMX51: Fix isl29003 HWMON driver for i2c changes + * ARM: USB: musb: Refer to musb_otg_timer_func under correct #ifdef + * ARM: staging: udlfb: Add vmalloc.h include + * UBUNTU [Config]: Bring imx51 config upto date with other flavours + + [ Brad Figg ] + + * ARM: IMX51: Hack to add defines for DMA_MODE_READ/WRITE/MASK + * ARM: IMX51: codec structure was moved to the card structure + * ARM: IMX51: snd_soc_machine structure replaced with snd_soc_card. + * ARM: IMX51: Get to bus_id by calling dev_name. + * ARM: IMX51: Get to bus_id by calling dev_name. + * ARM: IMX51: Added external declaration for mxc_map_io. + * ARM: IMX51: Removed the mxc_gpio_port structure. + * ARM: IMX51: mxc_timer_init prototype + * ARM: IMX51: Fix up merge error in Kconfig + * ARM: IMX51: Changed from snd_card_new to snd_card_create + + [ Dinh Nguyen ] + + * ARM: IMX51: Fix plat-mxc/timer.c to handle imx51 + * ARM: IMX51: Minimal changes for USB to work on 2.6.31 + * ARM: IMX51: Babbage 2.5 needs a different system revision + * ARM: IMX51: IPU irq handler deadlock fix + + [ Tim Gardner ] + + * [Config] Enabled CONFIG_CAN=m + - LP: #327243 + * [Config] Enabled CONFIG_SERIAL=m + - LP: #397189 + + -- Tim Gardner Fri, 24 Jul 2009 06:19:10 -0600 + +linux (2.6.31-4.21) karmic; urgency=low + + [ Amit Kucheria ] + + * dm-raid-4-5: Add missing brackets around test_bit() + + [ John Johansen ] + + * AppArmor: Fix change_profile failing lpn401931 + * AppArmor: Fix determination of forced AUDIT messages. + * AppArmor: Fix oops in auditing of the policy interface offset + + -- Andy Whitcroft Thu, 23 Jul 2009 19:18:30 +0100 + +linux (2.6.31-4.20) karmic; urgency=low + + [ Andy Whitcroft ] + + * SAUCE: iscsitarget -- update to SVN revision r214 + * SAUCE: iscsitarget -- renable driver + * [Config] consolidate lpia/lpia and i386/generic configs + * [Config] enable CRYPTO modules for all architectures + * [Config] enable cryptoloop + * [Config] enable various filesystems for armel + * [Config] sync i386 generic and generic-pae + * [Config] add the 386 (486 processors and above) flavour + * [Config] re-set DEFAULT_MMAP_MIN_ADDR + - LP: #399914 + * add genconfigs/genportsconfigs to extract the built configs + * updateconfigs -- alter concatenation order allow easier updates + * intelfb -- INTELFB now conflicts with DRM_I915 + * printchanges -- rebase tree does not have stable tags use changelog + * AppArmor: fix argument size missmatch on 64 bit builds + + [ Ike Panhc ] + + * Ship bnx2x firmware in nic-modules udeb + - LP: #360966 + + [ Jeff Mahoney ] + + * AppArmor: fix build failure on ia64 + + [ John Johansen ] + + * AppArmour: ensure apparmor enabled parmater is off if AppArmor fails to + initialize. + * AppArmour: fix auditing of domain transitions to include target profile + information + * AppArmor: fix C99 violation + * AppArmor: revert reporting of create to write permission. + * SAUCE: Add config option to set a default LSM + * [Config] enable AppArmor by default + * AppArmor: Fix NULL pointer dereference oops in profile attachment. + + [ Keith Packard ] + + * SAUCE: drm/i915: Allow frame buffers up to 4096x4096 on 915/945 class + hardware + - LP: #351756 + + [ Luke Yelavich ] + + * [Config] add .o files found in arch/powerpc/lib to all powerpc kernel + header packages + - LP: #355344 + + [ Michael Casadevall ] + + * [Config] update SPARC config files to allow success build + + [ Scott James Remnant ] + + * SAUCE: trace: add trace_event for the open() syscall + + [ Stefan Bader ] + + * SAUCE: jfs: Fix early release of acl in jfs_get_acl + - LP: #396780 + + [ Tim Gardner ] + + * [Upstream] Fix Soltech TA12 volume hotkeys not sending key release + - LP: #397499 + * [Upstream] USB Option driver - Add USB ID for Novatel MC727/U727/USB727 + refresh + - LP: #365291 + * [Config] SSB/B44 are common across all arches/flavours. + + [ Upstream ] + + * Rebased to 2.6.31-rc4 + + -- Andy Whitcroft Thu, 23 Jul 2009 08:41:39 +0100 + +linux (2.6.31-3.19) karmic; urgency=low + + [ Andy Whitcroft ] + + * Revert "[Config] Disabled NDISWRAPPER" + * ndiswrapper -- fix i386 compilation failures on cmpxchg8b + * AUFS -- export various core functions + * AUFS -- export various core functions -- fixes + * AUFS -- core filesystem + * AUFS -- track changes in v2.6.31 + * [Config] Enable AUFS + * droppped 'iwl3945: do not send scan command if channel count zero' as it + is already upstream but failed to auto-drop on rebase. + + [ Eric Paris ] + + * SAUCE: fsnotify: use def_bool in kconfig instead of letting the user + choose + * SAUCE: inotify: check filename before dropping repeat events + * SAUCE: fsnotify: fix inotify tail drop check with path entries + + -- Andy Whitcroft Tue, 14 Jul 2009 12:52:55 +0100 + +linux (2.6.31-3.18) karmic; urgency=low + + [ Andy Whitcroft ] + + * Revert "Add splice-2.6.23.patch from AUFS to export a symbol needed by + AUFS" + * Revert "Add put_filp.patch from AUFS to export a symbol needed by AUFS" + * Revert "Add sec_perm-2.6.24.patch from AUFS - export + security_inode_permission" + * clear out left over AUFS files and modifications + + [ Luke Yelavich ] + + * [Config] Enable CONFIG_USB_ISP116X_HCD on sparc + * SAUCE: Explicitly include header files to allow apparmor to build on + powerpc + * [Config] Enable CONFIG_BLK_DEV_IDECD on powerpc + + [ Tim Gardner ] + + * [Config] Dropped ubuntu/misc/wireless/acx + * [Config] Disabled NDISWRAPPER until the compile issues are fixed. + + [ Upstream ] + + * Rebased to 2.6.31-rc3 + + -- Andy Whitcroft Fri, 10 Jul 2009 18:59:33 +0100 + +linux (2.6.31-2.17) karmic; urgency=low + + [ Andy Whitcroft ] + + * [Config] CONFIG_BLK_DEV_CRYPTOLOOP=m for sparc + * compcache -- remove redundant Kconfig entries part 2 + * compcache -- clean up CCFLAGS declarations + * [Config] enable AppArmor + * AppArmor: fix operator precidence issue in as_path_link + + [ John Johansen ] + + * AppArmor security module + * AppArmor: Correct mapping of file permissions. + * AppArmor: Turn auditing of ptrace on + + [ Luke Yelavich ] + + * [Config] disable CONFIG_DM_RAID45 on powerpc + + -- Andy Whitcroft Fri, 10 Jul 2009 15:02:05 +0100 + +linux (2.6.31-2.16) karmic; urgency=low + + [ Andy Whitcroft ] + + * compcache -- remove redundant Kconfig entries + added ignore and ignore.modules for all arches since the compcache update + changes the modules names as well as some compcache ABI values. + + [ Manoj Iyer ] + + * SAUCE: updated dm-raid45 module version to 2009.04.24 (2.6.30-rc3) + * SAUCE: update compcache version to 0.5.3 + + [ Tim Gardner ] + + * [Config]: Fix sparc FTBS by adding ignore.modules + + -- Tim Gardner Mon, 06 Jul 2009 13:35:29 -0600 + +linux (2.6.31-2.15) karmic; urgency=low + + [ Andy Whitcroft ] + + * SAUCE: default ATI Radeon KMS to off until userspace catches up + * [Config] Update configs following rebase to 2.6.31-rc2 + * [Config] update ports configs following update to 2.6.31-rc2 + + [ Luke Yelavich ] + + * [Config] powerpc - Disable CONFIG_RDS + + [ Matt Zimmerman ] + + * Rename linux-doc-PKGVER to linux-doc and clean up its description + - LP: #382115 + + [ Upstream Kernel Changes ] + + * rebased to mainline 2.6.31-rc2 + + -- Andy Whitcroft Sat, 04 Jul 2009 17:39:13 +0100 + +linux (2.6.31-1.14) karmic; urgency=low + + [ Andy Whitcroft ] + + * update ndiswrapper to 1.55 + * remove leftovers of gfs + * [Config] powerpc: enable CONFIG_PPC_DISABLE_WERROR + + [ Luke Yelavich ] + + * [Config] re-enable and build the ide-pmac driver into powerpc kernels + * [Config] Build the ServerWorks Frodo / Apple K2 SATA driver into the + kernel + + [ Manoj Iyer ] + + * Remove snd-bt-sco ubuntu driver + + [ Michael Casadevall ] + + * [Config] updates ia64 config and d-i folders to allow succesful build + * [Config] Update powerpc and sparc for 2.6.31 + + [ Upstream Kernel Changes ] + + * intel-iommu: fix Identity Mapping to be arch independent + - LP: #384695 + * ACPI: video: prevent NULL deref in acpi_get_pci_dev() + + -- Andy Whitcroft Tue, 30 Jun 2009 17:47:32 +0100 + +linux (2.6.31-1.13) karmic; urgency=low + + [ Andy Whitcroft ] + + * REBASE: rebased to mainline 2.6.31-rc1 + - "UBUNTU: SAUCE: UHCI USB quirk for resume" + no longer applies, using deprecated interfaces, LPIA only, dropped + - "UBUNTU: SAUCE: Mask off garbage in Dell WMI scan code data" + changes now upstream, dropped + * [Config] Update configs following rebase to 2.6.31-rc1 + * [Config] update ports configs following update to 2.6.31-rc1 + + * [Config] disable broken staging driver CONFIG_STLC45XX + * SAUCE: fix compcache to use updates accessors + * [Config] disable staging driver CONFIG_VT6655 + * SAUCE: fix DRDB to use updates accessors + * [Disable] ndiswrapper needs update + * [Disable] LIRC I2C needs update + * [Disable] CONFIG_LENOVO_SL_LAPTOP needs update + * [Config] disable I2C_DESIGNWARE does not compile + * [Config] disable CONFIG_TLSUP for lpia + * [Config] disable CONFIG_FB_UDL for arm + * SAUCE: disable adding scsi headers to linux-libc-dev + + [ Mario Limonciello ] + + * SAUCE: Add LIRC drivers + + -- Andy Whitcroft Thu, 25 Jun 2009 12:06:22 +0100 + +linux (2.6.30-10.12) karmic; urgency=low + + [ Andy Whitcroft ] + + * [Config] split out the ports configs into their own family + * [Config] update configs following introduction of ports family + + [ Upstream Kernel Changes ] + + * Revert "Rename linux-doc-PKGVER to linux-doc and clean up its + description". Fixes linux-doc package name conflicts for now. + - LP: #382115 + + -- Tim Gardner Mon, 22 Jun 2009 09:17:14 -0600 + +linux (2.6.30-10.11) karmic; urgency=low + + [ Amit Kucheria ] + + * [Config] Comment splitconfig.pl and misc cleanup + * [Config] Rename all configs to the new naming scheme + * [Config] Splitconfig rework + * [Config] Rename scripts/misc/oldconfig to kernelconfig + * [Config] Fix build system for new config split + * [Config] Run updateconfigs after the splitconfig rework + + [ Andy Whitcroft ] + + * Revert "SAUCE: Default to i915.modeset=0 if CONFIG_DRM_I915_KMS=y" + * [Config] standardise CONFIG_STAGING=y + * [Config] standardise CONFIG_RD_LZMA=y + * [Config] CONFIG_PCI_IOV=y + * [Config] CONFIG_PCI_STUB=m + * [Config] merge kernel configs more agressively + + [ Colin Watson ] + + * [Config] Run kernel-wedge in $(builddir) rather than at the top level + * [Config] Add support for including firmware in udebs + * [Config] Ship bnx2 firmware in nic-modules udeb + - LP: #384861 + + [ Luke Yelavich ] + + * [Config] ports - Import of ports architectures into kernel packaging + infrastructure + * [Config] ports - Do not update ports kernel configurations by default + * [Config] ports - Disable ABI checking for ports architectures + * [Config] ports - Build drivers in ubuntu sub-directory on powerpc + * [Config] ports - Add control.d/vars.* files for ports architectures + * [Config] ports - Add ports architectures for linux-libc-dev + * [Config] ports - Create powerpc specific message-modules and + block-modules udebs + * [Config] ports - Add configuration files for ports architectures + + [ Manoj Iyer ] + + * [Config] Enable CONFIG_BLK_DEV_AEC62XX=m for amd64 and i386 + - LP: #329864 + + [ Michael Casadevall ] + + * [Config] ports - Fix compression of kernels + + [ Stefan Bader ] + + * [Upstream] mmc: prevent dangling block device from accessing stale + queues + - LP: #383668 + + [ Tim Gardner ] + + * [Config] Recommend grub-pc in linux-image + - LP: #385741 + * [Config] Implement i386 generic and generic-pae flavours + * [Config] ports - Add control info after integrating ports arches + * [Config] Removed auto-generated files from git + * [Config] Added netxen_nic to nic-modules + - LP: #389603 + + [ Matt Zimmerman ] + + * Rename linux-doc-PKGVER to linux-doc and clean up its description + - LP: #382115 + + -- Tim Gardner Mon, 15 Jun 2009 14:38:26 -0600 + +linux (2.6.30-9.10) karmic; urgency=low + + [ Andy Whitcroft ] + + * [Config] CONFIG_SECURITY_TOMOYO=y (amd64, i386, lpia) + * [Config] CONFIG_KEXEC_JUMP=y (amd64, lpia) + * [Config] CONFIG_LENOVO_SL_LAPTOP=m (amd64, lpia) + * [Config] CONFIG_POHMELFS_CRYPTO=y (i386, amd64) + * [Config] CONFIG_SERIAL_MAX3100=m (i386, amd64, lpia) + * [Config] CONFIG_VIDEO_GO7007=m (amd64, i386) + + [ Upstream Kernel Changes ] + + * rebased to 2.6.30 final + + -- Andy Whitcroft Fri, 05 Jun 2009 11:42:53 +0100 + +linux (2.6.30-8.9) karmic; urgency=low + + [ Andy Whitcroft ] + + * Config update removed the following options: + CONFIG_EDAC_AMD8111=m + CONFIG_EDAC_AMD8131=m + + [ Upstream Kernel Changes ] + + * rebased to 2.6.30-rc8 + + -- Andy Whitcroft Wed, 03 Jun 2009 09:21:13 +0100 + +linux (2.6.30-7.8) karmic; urgency=low + + [ Andy Whitcroft ] + + * Enabled NEW configration options: + Paravirtualization layer for spinlocks (PARAVIRT_SPINLOCKS) [N/y/?] Y + Cisco FNIC Driver (FCOE_FNIC) [N/m/y/?] M + + [ Upstream Kernel Changes ] + + * rebased to 2.6.30-rc7 + + -- Andy Whitcroft Sat, 23 May 2009 23:47:24 +0100 + +linux (2.6.30-6.7) karmic; urgency=low + + [ Andy Whitcroft ] + + * Dropped: UBUNTU: SAUCE: input: Blacklist digitizers from joydev.c (now + upstream) + + [ Upstream Kernel Changes ] + + * rebased to 2.6.30-rc6 + + -- Andy Whitcroft Mon, 18 May 2009 18:05:54 +0100 + +linux (2.6.30-5.6) karmic; urgency=low + + [ Tim Gardner ] + + * [Config] Enable Keyspan USB serial device firmware in kernel module + - LP: #334285 + + [ Upstream Kernel Changes ] + + * rebased to 2.6.30-rc5 + + -- Tim Gardner Mon, 11 May 2009 12:02:16 -0600 + +linux (2.6.30-4.5) karmic; urgency=low + + [ Colin Watson ] + + * Build-Conflict with findutils (= 4.4.1-1ubuntu1), to avoid + /usr/include/asm/* going missing + - LP: #373214 + + -- Stefan Bader Fri, 08 May 2009 11:09:08 +0200 + +linux (2.6.30-3.4) karmic; urgency=low + + [ Kees Cook ] + + * SAUCE: [x86] implement cs-limit nx-emulation for ia32 + - LP: #369978 + + [ Stefan Bader ] + + * SAUCE: input: Blacklist digitizers from joydev.c + - LP: #300143 + + -- Tim Gardner Fri, 01 May 2009 14:00:42 -0600 + +linux (2.6.30-2.3) karmic; urgency=low + + [ Tim Gardner ] + + * [Config] Enabled CC_STACKPROTECTOR=y for all x86en + - LP: #369152 + * SAUCE: Default to i915_modeset=0 if CONFIG_DRM_I915_KMS=y + * [Config] CONFIG_DRM_I915_KMS=y + * [Config] Set CONFIG_SECURITY_DEFAULT_MMAP_MIN_ADDR to appropriate ARCH + minimums + + [ Upstream Kernel Changes ] + + * rebased to 2.6.30-rc4 + + -- Tim Gardner Thu, 30 Apr 2009 09:17:05 -0600 + +linux (2.6.30-1.2) karmic; urgency=low + + [ Tim Gardner ] + + * [Config] armel: disable staging drivers, fixes FTBS + * [Config] armel imx51: Disable CONFIG_MTD_NAND_MXC, fixes FTBS + + [ Upstream Kernel Changes ] + + * mpt2sas: Change reset_type enum to avoid namespace collision. + Submitted upstream. + + -- Tim Gardner Tue, 28 Apr 2009 16:54:41 -0600 + +linux (2.6.30-1.1) karmic; urgency=low + + * Initial release after rebasing against v2.6.30-rc3 + + -- Tim Gardner Thu, 12 Mar 2009 19:16:07 -0600 + --- linux-raspi2-4.2.0.orig/debian.master/changelog.historical +++ linux-raspi2-4.2.0/debian.master/changelog.historical @@ -0,0 +1,4171 @@ + +linux (2.6.28-9.31) jaunty; urgency=low + + [ Andy Whitcroft ] + + * SAUCE: cpufreq-nforce2: probe failures are not errors + - LP: #332170 + * SAUCE: mmc: add MODALIAS linkage for MMC/SD devices + - LP: #30335 + * remove test-suspend script + - LP: #333856 + + [ Kees Cook ] + + * handle relative paths in modules.dep + Fixes 2.6.28-9.30 FTBS. + + [ Upstream Kernel Changes ] + + * ricoh_mmc: Handle newer models of Ricoh controllers + + -- Tim Gardner Wed, 11 Mar 2009 08:19:24 -0600 + +linux (2.6.28-9.30) jaunty; urgency=low + + [ Amit Kucheria ] + + * ARM:mx51 Add SoC and board support for mx51 platforms + * ARM:mx51 Add CONFIG_ARCH_MXC_CANONICAL to disable parts of Freescale's + code + * MMC: Add support for 8-bit cards + * Add ARM:MX51 SoC support to the build system + * ARM: Make ARM arch aware of ubuntu/ drivers + * ARM: Add imx51 configuration + * Disable d-i modules for imx51 and mv78xx0 + * Disable Apparmor on boot for ARM + * Updating imx51 config + + [ Jason Liu ] + + * Do not use OOB with MLC NAND + + [ Richard Zhu ] + + * Support the eMMC4.3 card + + [ Rob Herring ] + + * ARM: Add more cache memory types macros + + [ Tim Gardner ] + + * Set CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y for i386/amd64/lpia + + [ Manoj Iyer ] + + * Enable CONFIG_RTL8187SE=m + + [ Upstream Kernel Changes ] + + * USB: EHCI: slow down ITD reuse + - LP: #329437 + + -- Tim Gardner Sun, 08 Mar 2009 14:14:15 -0600 + +linux (2.6.28-9.29) jaunty; urgency=low + + [ Andy Whitcroft ] + + * link-headers -- only link directories which do not already exist + - LP: #315252 + + [ Daniel Marjamäki ] + + * SAUCE: (drop after 2.6.28) netxen: fix memory leak in + drivers/net/netxen_nic_init.c + - LP: #330813 + + [ Dhananjay Phadke ] + + * SAUCE: (drop after 2.6.28) netxen: fix endianness in firmware commands + - LP: #330813 + * SAUCE: (drop after 2.6.28) netxen: fix ipv6 offload and tx cleanup + - LP: #330813 + * SAUCE: (drop after 2.6.28) netxen: fix link speed reporting for some + boards + - LP: #330813 + * SAUCE: (drop after 2.6.28) netxen: firmware init fix + - LP: #330813 + * SAUCE: (drop after 2.6.28) netxen: cleanup mac list on driver unload + - LP: #330813 + * SAUCE: (drop after 2.6.28) netxen: hold tx lock while sending firmware + commands + - LP: #330813 + * SAUCE: (drop after 2.6.28) netxen: handle dma mapping failures + - LP: #330813 + * SAUCE: (drop after 2.6.28) netxen: avoid invalid iounmap + - LP: #330813 + * SAUCE: (drop after 2.6.28) netxen: include ipv6.h (fixes build failure) + - LP: #330813 + * SAUCE: (drop after 2.6.28) netxen: fix vlan tso/checksum offload + - LP: #330813 + * SAUCE: (drop after 2.6.28) netxen: reduce memory footprint + - LP: #330813 + * SAUCE: (drop after 2.6.28) netxen: revert jumbo ringsize + - LP: #330813 + * SAUCE: (drop after 2.6.28) netxen: fix msi-x interrupt handling + - LP: #330813 + * SAUCE: (drop after 2.6.28) netxen: remove pcie workaround + - LP: #330813 + + [ Hannes Eder ] + + * SAUCE: (drop after 2.6.28) drivers/net/netxen: fix sparse warnings: use + NULL pointer instead of plain integer + - LP: #330813 + + [ Huaxu Wan ] + + * SAUCE: report rfkill changes event if interface is down + - LP: #193970 + + [ Tim Gardner ] + + * MV78XX0 must specify a target in the vars definition. + + [ Upstream Kernel Changes ] + + * Revert "ext4: wait on all pending commits in ext4_sync_fs()" + * jbd2: Fix return value of jbd2_journal_start_commit() + * jbd2: Avoid possible NULL dereference in + jbd2_journal_begin_ordered_truncate() + * ext4: Fix to read empty directory blocks correctly in 64k + * ext4: Fix lockdep warning + * ext4: Initialize preallocation list_head's properly + * ext4: Implement range_cyclic in ext4_da_writepages instead of + write_cache_pages + * ext4: Fix NULL dereference in ext4_ext_migrate()'s error handling + * ext4: Add fallback for find_group_flex + * ext4: Fix deadlock in ext4_write_begin() and ext4_da_write_begin() + * Added mv78xx0 flavor + + -- Tim Gardner Fri, 06 Mar 2009 06:13:31 -0700 + +linux (2.6.28-8.28) jaunty; urgency=low + + [ Alexey Starikovskiy ] + + * SAUCE: ACPI: EC: Limit workaround for ASUS notebooks even more + - LP: #288385 + + [ Scott James Remnant ] + + * SAUCE: Auto-load esp module when device opened. + * SAUCE: Auto-load bridge module when socket opened. + * SAUCE: Auto-load af_netlink module when socket opened. + * SAUCE: Auto-load wanrouter module when socket opened. + * SAUCE: Auto-load ip_queue module when socket opened. + * SAUCE: Auto-load ip6_queue module when socket opened. + * SAUCE: Auto-load cn module when socket opened. + * SAUCE: Auto-load scsi_transport_iscsi module when socket opened. + * SAUCE: Auto-load ftl module when device opened. + * SAUCE: Auto-load pcd module when device opened. + * SAUCE: Auto-load pf module when device opened. + * SAUCE: Auto-load nftl module when device opened. + * SAUCE: Auto-load mousedev module when psaux device opened. + * SAUCE: Auto-load mousedev module when /dev/input/mice opened. + * SAUCE: Auto-load rng-core module when device opened. + * SAUCE: Auto-load openprom module when device opened. + * SAUCE: Auto-load applicom module when device opened. + * SAUCE: Auto-load toshiba module when device opened. + * SAUCE: Auto-load cyclades module when device opened. + * SAUCE: Auto-load riscom8 module when device opened. + * SAUCE: Auto-load specialix module when device opened. + * SAUCE: Auto-load videodev module when device opened. + * SAUCE: Auto-load i2c_dev module when device opened. + * SAUCE: Auto-load mtdchar module when device opened. + * SAUCE: Auto-load pt module when device opened. + * SAUCE: Auto-load pg module when device opened. + * SAUCE: Auto-load cdc_acm module when device opened. + * SAUCE: Auto-load msr module when device opened. + * SAUCE: Auto-load cpuid module when device opened. + * SAUCE: quickcam: Enable double-buffering by default + * SAUCE: libata: Ignore HPA by default. + * SAUCE: hostap: Change initial operation mode to managed (infra) + * SAUCE: floppy: Provide a PnP device table in the module. + - LP: #255651 + * SAUCE: Auto-load mwave module when device opened. + * Build CONFIG_FUSE_FS into kernel, not as module. + + [ Stefan Bader ] + + * Enable build of ext4 as a module on LPIA + - LP: #331848 + + [ Tim Gardner ] + + * Update configs to fix LPIA FTBS + + -- Tim Gardner Thu, 05 Mar 2009 10:43:24 -0700 + +linux (2.6.28-8.27) jaunty; urgency=low + + [ Amit Kucheria ] + + * Updating configs (arm:ixp4xx) + + [ Andy Whitcroft ] + + * SAUCE: enable Intel HDMI output + + [ Manoj Iyer ] + + * SAUCE: Added quirk for Linksys WUSB600N USB wifi-n networking adapter + - LP: #323473 + + [ Steve Beattie ] + + * fix apparmor memory leak on unlinked file ops + - LP: #329489 + + [ Tim Gardner ] + + * SAUCE: Dell XPS710 reboot quirk + - LP: #323592 + * SAUCE: (drop after 2.6.28) ieee80211: Add infrastructure to obsolete + scan results + - LP: #336055 + * Add modules.order to the linux-image package. + + [ Upstream Kernel Changes ] + + * iwlwifi: fix time interval misuse in iwl_poll_{direct_}bit + * x86: only scan the root bus in early PCI quirks + - LP: #267295 + * ALSA: hda - Intel HDMI audio support + * ALSA: hda - Fix unused function in patch_intelhdmi.c + * ALSA: handle SiI1392 HDMI codec in patch_intelhdmi.c + * ALSA: hda-intel: reorder HDMI audio enabling sequence + * ALSA: introduce snd_print_pcm_rates() + * ALSA: create hda_eld.c for ELD routines and proc interface + * ALSA: ELD proc interface for HDMI sinks + * ALSA: hda: make standalone hdmi_fill_audio_infoframe() + * ALSA: hda: make global snd_print_channel_allocation() + * ALSA: hda: HDMI channel allocations for audio infoframe + * ALSA: hda: HDMI channel mapping cleanups + * ALSA: hda: minor code cleanups + * ALSA: hda: rename sink_eld to hdmi_eld + * ALSA: hda - Release ELD proc file + * ALSA: hda - minor HDMI code cleanups + * ALSA: hda - report selected CA index for Audio InfoFrame + * ALSA: hda - Add Intel vendor id string + + -- Tim Gardner Wed, 25 Feb 2009 14:23:46 -0700 + +linux (2.6.28-8.26) jaunty; urgency=low + + [ Amit Kucheria ] + + * Updating configs (armel:ixp4xx) + - LP: #331510 + + [ Tim Gardner ] + + * Add more missing modules + + -- Tim Gardner Tue, 24 Feb 2009 06:58:53 -0700 + +linux (2.6.28-8.25) jaunty; urgency=low + + [ Scott James Remnant ] + + * SAUCE: Prefer powernow-k8 to acpi-cpufreq + * Change CONFIG_X86_P4_CLOCKMOD to be a module again. + + [ Tim Gardner ] + + * Revert "SAUCE: (revert before 2.6.28.y update) ext4: Initialize the new + group descriptor when resizing the filesystem" + * Revert "SAUCE: (revert before 2.6.28.y update) ext4: Add sanity check + to make_indexed_dir" + * Revert "SAUCE: (revert before 2.6.28.y update) ext4: only use + i_size_high for regular files" + * Revert "SAUCE: (revert before 2.6.28.y update) ext4: Add sanity checks + for the superblock before mounting the filesystem" + * Revert "SAUCE: (revert before 2.6.28.y update) ext4: Fix + s_dirty_blocks_counter if block allocation failed with nodelalloc" + * Revert "SAUCE: (revert before 2.6.28.y update) ext4: Init the complete + page while building buddy cache" + * Revert "SAUCE: (revert before 2.6.28.y update) ext4: Don't allow new + groups to be added during block allocation" + * Revert "SAUCE: (revert before 2.6.28.y update) ext4: mark the + blocks/inode bitmap beyond end of group as used" + * Revert "SAUCE: (revert before 2.6.28.y update) ext4: Use new + buffer_head flag to check uninit group bitmaps initialization" + * Revert "SAUCE: (revert before 2.6.28.y update) ext4: Fix the race + between read_inode_bitmap() and ext4_new_inode()" + * Revert "SAUCE: (revert before 2.6.28.y update) ext4: Fix race between + read_block_bitmap() and mark_diskspace_used()" + * Revert "SAUCE: (revert before 2.6.28.y update) ext4: don't use blocks + freed but not yet committed in buddy cache init" + * Revert "SAUCE: (revert before 2.6.28.y update) ext4: cleanup mballoc + header files" + * Revert "SAUCE: (revert before 2.6.28.y update) ext4: Use + EXT4_GROUP_INFO_NEED_INIT_BIT during resize" + * Revert "SAUCE: (revert before 2.6.28.y update) ext4: Add blocks added + during resize to bitmap" + * Revert "SAUCE: (revert before 2.6.28.y update) ext4: Don't overwrite + allocation_context ac_status" + * Revert "SAUCE: (revert before 2.6.28.y update) jbd2: Add barrier not + supported test to journal_wait_on_commit_record" + * Revert "SAUCE: (revert before 2.6.28.y update) ext4: Widen type of + ext4_sb_info.s_mb_maxs[]" + * Revert "SAUCE: (revert before 2.6.28.y update) ext4: avoid ext4_error + when mounting a fs with a single bg" + * Revert "SAUCE: (revert before 2.6.28.y update) ext4: Fix the delalloc + writepages to allocate blocks at the right offset." + * Revert "SAUCE: (revert before 2.6.28.y update) ext4: tone down + ext4_da_writepages warnings" + * Revert "SAUCE: (revert before 2.6.28.y update) ext4: Add support for + non-native signed/unsigned htree hash algorithms" + * Enabled X86_ACPI_CPUFREQ=y + + [ Upstream Kernel Changes ] + + * ath9k: quiet harmless ForceXPAon messages + - LP: #321474 + * [WATCHDOG] iTCO_wdt: fix SMI_EN regression 2 + - LP: #314050 + * pid: implement ns_of_pid + * mqueue: fix si_pid value in mqueue do_notify() + * powerpc/vsx: Fix VSX alignment handler for regs 32-63 + * sata_nv: give up hardreset on nf2 + * Fix Intel IOMMU write-buffer flushing + * SCSI: libiscsi: fix iscsi pool leak + * x86/cpa: make sure cpa is safe to call in lazy mmu mode + * sched: SCHED_OTHER vs SCHED_IDLE isolation + * x86, vm86: fix preemption bug + * Add support for VT6415 PCIE PATA IDE Host Controller + * ext2/xip: refuse to change xip flag during remount with busy inodes + * 3c505: do not set pcb->data.raw beyond its size + * Bluetooth: Fix TX error path in btsdio driver + * ext4: Add support for non-native signed/unsigned htree hash algorithms + * ext4: tone down ext4_da_writepages warnings + * ext4: Fix the delalloc writepages to allocate blocks at the right + offset. + * ext4: avoid ext4_error when mounting a fs with a single bg + * ext4: Widen type of ext4_sb_info.s_mb_maxs[] + * jbd2: Add barrier not supported test to journal_wait_on_commit_record + * ext4: Don't overwrite allocation_context ac_status + * ext4: Add blocks added during resize to bitmap + * ext4: Use EXT4_GROUP_INFO_NEED_INIT_BIT during resize + * ext4: cleanup mballoc header files + * ext4: don't use blocks freed but not yet committed in buddy cache init + * ext4: Fix race between read_block_bitmap() and mark_diskspace_used() + * ext4: Fix the race between read_inode_bitmap() and ext4_new_inode() + * ext4: Use new buffer_head flag to check uninit group bitmaps + initialization + * ext4: mark the blocks/inode bitmap beyond end of group as used + * ext4: Don't allow new groups to be added during block allocation + * ext4: Init the complete page while building buddy cache + * ext4: Fix s_dirty_blocks_counter if block allocation failed with + nodelalloc + * ext4: Add sanity checks for the superblock before mounting the + filesystem + * ext4: only use i_size_high for regular files + * ext4: Add sanity check to make_indexed_dir + * ext4: Initialize the new group descriptor when resizing the filesystem + * Fix longstanding "error: storage size of '__mod_dmi_device_table' isn't + known" + * Linux 2.6.28.7 + + -- Tim Gardner Thu, 19 Feb 2009 06:45:55 -0700 + +linux (2.6.28-8.24) jaunty; urgency=low + + [ Scott James Remnant ] + + * Change CPU_FREQ_DEFAULT_GOV_ONDEMAND to y + * SAUCE: Link acpi-cpufreq.o first + + [ Tim Gardner ] + + * Build in CPU Frequency scaling drivers + + -- Tim Gardner Wed, 18 Feb 2009 06:12:24 -0700 + +linux (2.6.28-8.23) jaunty; urgency=low + + [ Andy Whitcroft ] + + * include the kernel configuration in the sub-flavour images + - LP: #328859 + + [ Tim Gardner ] + + * Revert "SAUCE: (drop after 2.6.28) [eCryptfs] Regression in unencrypted + filename symlinks" in favor of upstream commit. + * Fix compile issues with qc-usb + * SAUCE: (remove after 2.6.28) V4L/DVB (10216): saa7127: fix broken + S-Video with saa7129 + - LP: #329267 + + [ Upstream Kernel Changes ] + + * Subject:SAUCE: LP#193970 iwlagn: fix hw-rfkill while the interface is + down + - LP: #193970 + * x86, vmi: put a missing paravirt_release_pmd in pgd_dtor + * nbd: fix I/O hang on disconnected nbds + * mac80211: restrict to AP in outgoing interface heuristic + * w1: w1 temp calculation overflow fix + * zd1211rw: adding 0ace:0xa211 as a ZD1211 device + * zd1211rw: treat MAXIM_NEW_RF(0x08) as UW2453_RF(0x09) for TP-Link + WN322/422G + * parport: parport_serial, don't bind netmos ibm 0299 + * syscall define: fix uml compile bug + * kernel-doc: fix syscall wrapper processing + * Fix page writeback thinko, causing Berkeley DB slowdown + * write-back: fix nr_to_write counter + * writeback: fix break condition + * mm: rearrange exit_mmap() to unlock before arch_exit_mmap + * powerpc/fsl-booke: Fix mapping functions to use phys_addr_t + * lockd: fix regression in lockd's handling of blocked locks + * sctp: Fix crc32c calculations on big-endian arhes. + * sctp: Correctly start rtx timer on new packet transmissions. + * sctp: Properly timestamp outgoing data chunks for rtx purposes + * net: Fix frag_list handling in skb_seq_read + * net: Fix OOPS in skb_seq_read(). + * drivers/net/skfp: if !capable(CAP_NET_ADMIN): inverted logic + * ipv4: fix infinite retry loop in IP-Config + * net: Fix userland breakage wrt. linux/if_tunnel.h + * net: packet socket packet_lookup_frame fix + * packet: Avoid lock_sock in mmap handler + * sungem: Soft lockup in sungem on Netra AC200 when switching interface + up + * udp: Fix UDP short packet false positive + * udp: increments sk_drops in __udp_queue_rcv_skb() + * ipv6: Disallow rediculious flowlabel option sizes. + * ipv6: Copy cork options in ip6_append_data + * net: 4 bytes kernel memory disclosure in SO_BSDCOMPAT gsopt try #2 + * sky2: fix hard hang with netconsoling and iface going up + * tun: Add some missing TUN compat ioctl translations. + * tun: Fix unicast filter overflow + * virtio_net: Fix MAX_PACKET_LEN to support 802.1Q VLANs + * tcp: splice as many packets as possible at once + * tcp: Fix length tcp_splice_data_recv passes to skb_splice_bits. + * sparc: Enable syscall wrappers for 64-bit (CVE-2009-0029) + * sparc64: Annotate sparc64 specific syscalls with SYSCALL_DEFINEx() + * ALSA: hda - Add missing terminator in slave dig-out array + * ALSA: mtpav - Fix initial value for input hwport + * HID: adjust report descriptor fixup for MS 1028 receiver + * ide/libata: fix ata_id_is_cfa() (take 4) + * libata: fix EH device failure handling + * netfilter: fix tuple inversion for Node information request + * netfilter: xt_sctp: sctp chunk mapping doesn't work + * x86: microcode_amd: fix wrong handling of equivalent CPU id + * ide-cd: fix DMA for non bio-backed requests + * net: Fix data corruption when splicing from sockets. + * Linux 2.6.28.6 + * eCryptfs: Regression in unencrypted filename symlinks + + -- Tim Gardner Mon, 16 Feb 2009 06:43:51 -0700 + +linux (2.6.28-8.22) jaunty; urgency=low + + [ Amit Kucheria ] + + * Remove perm-blacklist + + [ Andy Whitcroft ] + + * SAUCE: psmouse/synaptics: ensure we reset the device on resume + - LP: #317270 + + [ Tim Gardner ] + + * Add lpia to getabi script + * SAUCE: tracer for sreadahead + + -- Amit Kucheria Fri, 13 Feb 2009 15:23:21 +0200 + +linux (2.6.28-8.21) jaunty; urgency=low + + [ Andy Whitcroft ] + + * SAUCE: switch the Asus Pundit P1-AH2 to old acpi sleep ordering + - LP: #327267 + + [ Tim Gardner ] + + * Added LPIA arch support + * Added libdrm-dev as a 'Replaces' to linux-libc-dev + * SAUCE: LPIA support for 9202 HDA Sigmatel codec + * SAUCE: Add an X86_LPIA Kconfig option + * SAUCE: UHCI USB quirk for resume + * SAUCE: LPIA Reboot fix for Intel Crownbeach development boards + * SAUCE: LPIA Logical reset of USB port on resume + * Set CONFIG_WIRELESS_OLD_REGULATORY=n, added wireless-crda + as an install dependency. + + [ Upstream Kernel Changes ] + + * Revert "Revert "x86, early_ioremap: fix fencepost error"" + - LP: #312554 + * drm/i915: capture last_vblank count at IRQ uninstall time too + - LP: #320813 + * drm/i915: add get_vblank_counter function for GM45 + - LP: #320813 + * Staging: comedi: fix Kbuild + * Staging: meilhaus: fix Kbuild + * Staging: android: binder: fix arm build errors + * Staging: android: timed_gpio: Fix build to build on kernels after + 2.6.25. + * Staging: android: fix build error on 64bit boxes + * Staging: android: Add lowmemorykiller documentation. + * Staging: android: task_get_unused_fd_flags: fix the wrong usage of + tsk->signal + * staging: agnx: drivers/staging/agnx/agnx.h needs + * Staging: usbip: usbip_start_threads(): handle kernel_thread failure + * Staging: poch: fix verification of memory area + * Documentation: move DMA-mapping.txt to Doc/PCI/ + * sgi-xp: fix writing past the end of kzalloc()'d space + * do_wp_page: fix regression with execute in place + * wait: prevent exclusive waiter starvation + * shm: fix shmctl(SHM_INFO) lockup with !CONFIG_SHMEM + * revert "rlimit: permit setting RLIMIT_NOFILE to RLIM_INFINITY" + * prevent kprobes from catching spurious page faults + * sound: usb-audio: handle wMaxPacketSize for FIXED_ENDPOINT devices + * md: Ensure an md array never has too many devices. + * md: Fix a bug in linear.c causing which_dev() to return the wrong + device. + * ACPI: Enable bit 11 in _PDC to advertise hw coord + * ACPI: dock: Don't eval _STA on every show_docked sysfs read + * ieee1394: ohci1394: increase AT req. retries, fix ack_busy_X from + Panasonic camcorders and others + * firewire: ohci: increase AT req. retries, fix ack_busy_X from Panasonic + camcorders and others + * firewire: sbp2: fix DMA mapping leak on the failure path + * firewire: sbp2: add workarounds for 2nd and 3rd generation iPods + * ieee1394: sbp2: add workarounds for 2nd and 3rd generation iPods + * module: remove over-zealous check in __module_get() + * x86: APIC: enable workaround on AMD Fam10h CPUs + * eeepc-laptop: fix oops when changing backlight brightness during + eeepc-laptop init + * eeepc-laptop: Add support for extended hotkeys + * e1000: fix bug with shared interrupt during reset + * e1000: Fix PCI enable to honor the need_ioport flag + * agp/intel: Fix broken ® symbol in device name. + * ALSA: hda - Add quirk for FSC Amilo Xi2550 + * ALSA: hda - Add missing COEF initialization for ALC887 + * ALSA: hda - Add missing initialization for ALC272 + * asus_acpi: Add R1F support + * panasonic-laptop: fix X[ ARRAY_SIZE(X) ] + * ACPI: Skip the first two elements in the _BCL package + * ACPI: proc_dir_entry 'video/VGA' already registered + * ACPI: disable ACPI cleanly when bad RSDP found + * ACPICA: Fix table entry truncation calculation + * PCI: properly clean up ASPM link state on device remove + * PCI: return error on failure to read PCI ROMs + * seq_file: move traverse so it can be used from seq_read + * seq_file: fix big-enough lseek() + read() + * serial: set correct baud_base for Oxford Semiconductor Ltd EXSYS + EX-41092 Dual 16950 Serial adapter + * Add support for '8-port RS-232 MIC-3620 from advantech' + * mm: fix error case in mlock downgrade reversion + * elf core dump: fix get_user use + * ACPI: video: Fix reversed brightness behavior on ThinkPad SL series + * ipw2200: fix scanning while associated + * XFS: set b_error from bio error in xfs_buf_bio_end_io + * Revert USB: option: add Pantech cards + * USB: option: New mobile broadband modems to be supported + * USB: new id for ti_usb_3410_5052 driver + * USB: two more usb ids for ti_usb_3410_5052 + * USB: usb-storage: add Pentax to the bad-vendor list + * sata_via: Add VT8261 support + * nbd: do not allow two clients at the same time + * sctp: Fix another socket race during accept/peeloff + * Linux 2.6.28.5 + + -- Tim Gardner Mon, 09 Feb 2009 16:11:28 -0700 + +linux (2.6.28-7.20) jaunty; urgency=low + + [ Tim Gardner ] + + * SAUCE: Input: atkbd - Samsung NC10 key repeat fix + + [ Upstream Kernel Changes ] + + * Manually revert "mlock: downgrade mmap sem while populating mlocked + regions" + * xen: make sysfs files behave as their names suggest + * sata_mv: fix 8-port timeouts on 508x/6081 chips + * m68knommu: set NO_DMA + * PCI/MSI: bugfix/utilize for msi_capability_init() + * x86: use early clobbers in usercopy*.c + * netfilter: ctnetlink: fix scheduling while atomic + * orinoco: move kmalloc(..., GFP_KERNEL) outside spinlock in + orinoco_ioctl_set_genie + * fbdev/atyfb: Fix DSP config on some PowerMacs & PowerBooks + * kmalloc: return NULL instead of link failure + * sata_nv: rename nv_nf2_hardreset() + * sata_nv: fix MCP5x reset + * sata_nv: ck804 has borked hardreset too + * Fix memory corruption in console selection + * Add enable_ms to jsm driver + * nfsd: only set file_lock.fl_lmops in nfsd4_lockt if a stateowner is + found + * nfsd: Ensure nfsv4 calls the underlying filesystem on LOCKT + * iwlwifi: fix rs_get_rate WARN_ON() + * p54: fix lm87 checksum endianness + * p54: fix p54_read_eeprom to cope with tx_hdr_len + * p54usb: rewriting rx/tx routines to make use of usb_anchor's facilities + * minstrel: fix warning if lowest supported rate index is not 0 + * PCI: irq and pci_ids patch for Intel Tigerpoint DeviceIDs + * cpuidle: Add decaying history logic to menu idle predictor + * ACPI: Avoid array address overflow when _CST MWAIT hint bits are set + * video: always update the brightness when poking "brightness" + * Newly inserted battery might differ from one just removed, so update of + battery info fields is required. + * ACPI: Do not modify SCI_EN directly + * dlm: initialize file_lock struct in GETLK before copying conflicting + lock + * sata_mv: Fix chip type for Hightpoint RocketRaid 1740/1742 + * ACPICA: Allow multiple backslash prefix in namepaths + * Linux 2.6.28.4 + + -- Tim Gardner Sat, 07 Feb 2009 18:53:42 -0700 + +linux (2.6.28-7.19) jaunty; urgency=low + + * Fix missing modules FTBS + + -- Tim Gardner Thu, 05 Feb 2009 15:28:15 -0700 + +linux (2.6.28-7.18) jaunty; urgency=low + + [ Alok Kataria ] + + * SAUCE: (drop after 2.6.29) x86: add a synthetic TSC_RELIABLE feature + bit + - LP: #319945 + * SAUCE: (drop after 2.6.29) x86: add X86_FEATURE_HYPERVISOR feature bit + - LP: #319945 + * SAUCE: (drop after 2.6.29) x86: Hypervisor detection and get tsc_freq + from hypervisor + - LP: #319945 + * SAUCE: (drop after 2.6.29) x86: Add a synthetic TSC_RELIABLE feature + bit. + - LP: #319945 + * SAUCE: (drop after 2.6.29) x86: Skip verification by the watchdog for + TSC clocksource. + - LP: #319945 + * SAUCE: (drop after 2.6.29) x86: VMware: Fix vmware_get_tsc code + - LP: #319945 + * SAUCE: (drop after 2.6.29) x86: vmware: look for DMI string in the + product serial key + - LP: #319945 + + [ Andy Whitcroft ] + + * SAUCE: toshiba_acpi -- pull in current -dev version of driver + - LP: #269831 + * SAUCE: toshiba_acpi -- add acpi hotkey kernel thread + - LP: #269831 + * move toshiba laptops back from tlsup to toshiba_acpi + - LP: #269831 + + [ Aneesh Kumar K.V ] + + * SAUCE: (revert before 2.6.28.y update) ext4: Fix the delalloc + writepages to allocate blocks at the right offset. + * SAUCE: (revert before 2.6.28.y update) ext4: avoid ext4_error when + mounting a fs with a single bg + * SAUCE: (revert before 2.6.28.y update) ext4: Don't overwrite + allocation_context ac_status + * SAUCE: (revert before 2.6.28.y update) ext4: Add blocks added during + resize to bitmap + * SAUCE: (revert before 2.6.28.y update) ext4: Use + EXT4_GROUP_INFO_NEED_INIT_BIT during resize + * SAUCE: (revert before 2.6.28.y update) ext4: cleanup mballoc header + files + * SAUCE: (revert before 2.6.28.y update) ext4: don't use blocks freed but + not yet committed in buddy cache init + * SAUCE: (revert before 2.6.28.y update) ext4: Fix race between + read_block_bitmap() and mark_diskspace_used() + * SAUCE: (revert before 2.6.28.y update) ext4: Fix the race between + read_inode_bitmap() and ext4_new_inode() + * SAUCE: (revert before 2.6.28.y update) ext4: Use new buffer_head flag + to check uninit group bitmaps initialization + * SAUCE: (revert before 2.6.28.y update) ext4: mark the blocks/inode + bitmap beyond end of group as used + * SAUCE: (revert before 2.6.28.y update) ext4: Don't allow new groups to + be added during block allocation + * SAUCE: (revert before 2.6.28.y update) ext4: Init the complete page + while building buddy cache + * SAUCE: (revert before 2.6.28.y update) ext4: Fix s_dirty_blocks_counter + if block allocation failed with nodelalloc + + [ Hannes Eder ] + + * SAUCE: (drop after 2.6.29) x86: vmware - fix sparse warnings + - LP: #319945 + + [ Luke Yelavich ] + + * hid modules have hyphens instead of underscores in their names + + [ Mark Fasheh ] + + * SAUCE: (revert before 2.6.28.y update) jbd2: Add BH_JBDPrivateStart + + [ Theodore Ts'o ] + + * SAUCE: (revert before 2.6.28.y update) ext4: Add support for non-native + signed/unsigned htree hash algorithms + * SAUCE: (revert before 2.6.28.y update) ext4: tone down + ext4_da_writepages warnings + * SAUCE: (revert before 2.6.28.y update) jbd2: Add barrier not supported + test to journal_wait_on_commit_record + * SAUCE: (revert before 2.6.28.y update) ext4: Add sanity checks for the + superblock before mounting the filesystem + * SAUCE: (revert before 2.6.28.y update) ext4: only use i_size_high for + regular files + * SAUCE: (revert before 2.6.28.y update) ext4: Add sanity check to + make_indexed_dir + * SAUCE: (revert before 2.6.28.y update) jbd2: On a __journal_expect() + assertion failure printk "JBD2", not "EXT3-fs" + * SAUCE: (revert before 2.6.28.y update) ext4: Initialize the new group + descriptor when resizing the filesystem + + [ Tyler Hicks ] + + * SAUCE: (drop after 2.6.28) [eCryptfs] Regression in unencrypted + filename symlinks + - LP: #322532 + + [ Upstream Kernel Changes ] + + * Input: atkbd - broaden the Dell DMI signatures + - LP: #261721 + * ti_usb_3410_5052: support alternate firmware + * ath5k: fix mesh point operation + * mac80211: decrement ref count to netdev after launching mesh discovery + * inotify: clean up inotify_read and fix locking problems + * fuse: destroy bdi on umount + * fuse: fix missing fput on error + * fuse: fix NULL deref in fuse_file_alloc() + * x86, mm: fix pte_free() + * klist.c: bit 0 in pointer can't be used as flag + * sysfs: fix problems with binary files + * x86: fix page attribute corruption with cpa() + * USB: fix toggle mismatch in disable_endpoint paths + * sound: virtuoso: enable UART on Xonar HDAV1.3 + * USB: usbmon: Implement compat_ioctl + * USB: fix char-device disconnect handling + * USB: storage: add unusual devs entry + * alpha: nautilus - fix compile failure with gcc-4.3 + * alpha: fix vmalloc breakage + * resources: skip sanity check of busy resources + * rtl8187: Add termination packet to prevent stall + * it821x: Add ultra_mask quirk for Vortex86SX + * libata: pata_via: support VX855, future chips whose IDE controller use + 0x0571 + * serial_8250: support for Sealevel Systems Model 7803 COMM+8 + * drm: stash AGP include under the do-we-have-AGP ifdef + * Fix OOPS in mmap_region() when merging adjacent VM_LOCKED file segments + * bnx2x: Block nvram access when the device is inactive + * ext3: Add sanity check to make_indexed_dir + * rtl8187: Fix error in setting OFDM power settings for RTL8187L + * epoll: drop max_user_instances and rely only on max_user_watches + * gpiolib: fix request related issue + * sgi-xpc: Remove NULL pointer dereference. + * sgi-xpc: ensure flags are updated before bte_copy + * include/linux: Add bsg.h to the Kernel exported headers + * ALSA: hda - Fix PCM reference NID for STAC/IDT analog outputs + * ALSA: hda - add another MacBook Pro 4, 1 subsystem ID + * ALSA: hda - Add quirk for HP DV6700 laptop + * crypto: authenc - Fix zero-length IV crash + * crypto: ccm - Fix handling of null assoc data + * x86, pat: fix reserve_memtype() for legacy 1MB range + * x86, pat: fix PTE corruption issue while mapping RAM using /dev/mem + * PCI hotplug: fix lock imbalance in pciehp + * dmaengine: fix dependency chaining + * NET: net_namespace, fix lock imbalance + * relay: fix lock imbalance in relay_late_setup_files + * Linux 2.6.28.3 + * ALSA: Enable SPDIF output on ALC655 + * ALSA: hda - Add ASUS V1Sn support + * ALSA: hda - support detecting HD Audio devices with PCI class code + * ALSA: hda: alc883 model for ASUS P5Q-EM boards + * ALSA: hda - Add quirk for MSI 7260 mobo + * ALSA: hda - Add quirk for Sony VAIO VGN-SR19XN + * ALSA: oxygen: add Claro halo support + * ALSA: hda - Add a new function to seek for a codec ID + * ALSA: patch_sigmatel: Add missing Gateway entries and autodetection + * ALSA: hda - More fixes on Gateway entries + * ALSA: hda - Add MCP67 HDMI support + * ALSA: hda - fix name for ALC1200 + * LSA: hda - Add HP Acacia detection + * ALSA: hda - Add quirk for HP 2230s + * ALSA: hda - Add quirk for Dell Inspiron Mini9 + * ALSA: hda - add support for Intel DX58SO board + * ALSA: hda - Fix silent headphone output on Panasonic CF-74 + * ALSA: USB quirk for Logitech Quickcam Pro 9000 name + * ALSA: hda - add quirks for some 82801H variants to use ALC883_MITAC + + [ Yasunori Goto ] + + * SAUCE: (revert before 2.6.28.y update) ext4: Widen type of + ext4_sb_info.s_mb_maxs[] + + -- Tim Gardner Mon, 02 Feb 2009 23:07:13 -0700 + +linux (2.6.28-6.17) jaunty; urgency=low + + [ Amit Kucheria ] + + * Updating configs: ARMEL/versatile + + -- Amit Kucheria Fri, 30 Jan 2009 13:36:59 +0200 + +linux (2.6.28-6.16) jaunty; urgency=low + + [ Luke Yelavich ] + + * Add hid quirks to input-modules udeb + + [ Tim Gardner ] + + * Revert "[arm] Fix kexec on ARM by properly calling the relocation + function". This patch was deemed 'bogus' by Russell King on the + ARM mailing list. + + [ Upstream Kernel Changes ] + + * PCI: keep ASPM link state consistent throughout PCIe hierarchy + * security: introduce missing kfree + * rt2x00: add USB ID for the Linksys WUSB200. + * p54usb: Add USB ID for Thomson Speedtouch 121g + * lib/idr.c: use kmem_cache_zalloc() for the idr_layer cache + * sgi-xp: eliminate false detection of no heartbeat + * sched: fix update_min_vruntime + * IA64: Turn on CONFIG_HAVE_UNSTABLE_CLOCK + * sound: virtuoso: do not overwrite EEPROM on Xonar D2/D2X + * ALSA: hda - Add quirk for another HP dv5 + * ALSA: hda - Fix HP dv5 mic input + * ALSA: hda - Don't reset HP pinctl in patch_sigmatel.c + * ALSA: hda - make laptop-eapd model back for AD1986A + * drivers/net/irda/irda-usb.c: fix buffer overflow + * usb-storage: add last-sector hacks + * usb-storage: set CAPACITY_HEURISTICS flag for bad vendors + * pkt_sched: sch_htb: Fix deadlock in hrtimers triggered by HTB + * ipv6: Fix fib6_dump_table walker leak + * sctp: Avoid memory overflow while FWD-TSN chunk is received with bad + stream ID + * pkt_sched: cls_u32: Fix locking in u32_change() + * r6040: fix wrong logic in mdio code + * r6040: save and restore MIER correctly in the interrupt routine + * r6040: bump release number to 0.19 + * tcp: don't mask EOF and socket errors on nonblocking splice receive + * p54usb: fix traffic stalls / packet drop + * netfilter: x_tables: fix match/target revision lookup + * netfilter: ebtables: fix inversion in match code + * netfilter: nf_conntrack: fix ICMP/ICMPv6 timeout sysctls on big-endian + * dell_rbu: use scnprintf() instead of less secure sprintf() + * powerpc: is_hugepage_only_range() must account for both 4kB and 64kB + slices + * hwmon: (abituguru3) Fix CONFIG_DMI=n fallback to probe + * mm: write_cache_pages cyclic fix + * mm: write_cache_pages early loop termination + * mm: write_cache_pages writepage error fix + * mm: write_cache_pages integrity fix + * mm: write_cache_pages cleanups + * mm: write_cache_pages optimise page cleaning + * mm: write_cache_pages terminate quickly + * mm: write_cache_pages more terminate quickly + * mm: do_sync_mapping_range integrity fix + * mm: direct IO starvation improvement + * fs: remove WB_SYNC_HOLD + * fs: sync_sb_inodes fix + * fs: sys_sync fix + * Linux 2.6.28.2 + + -- Tim Gardner Sun, 25 Jan 2009 13:36:16 -0700 + +linux (2.6.28-5.15) jaunty; urgency=low + + [ Tim Gardner ] + + * Revert "Enabled CONFIG_PID_NS=y for i386/amd64" + Somehow this commit also reverted the 7 prior commits (which is bad). + * Enabled CONFIG_PID_NS=y for i386/amd64 (version 2) + + -- Tim Gardner Thu, 22 Jan 2009 13:48:34 -0700 + +linux (2.6.28-5.14) jaunty; urgency=low + + [ Ben Collins ] + + * lirc_gpio: Forward ported to current kernel (jaunty) + * configs: Enable LIRC_GPIO on 64-bit/32-bit x86 + - LP: #298791 + + [ Jeff Layton ] + + * SAUCE: cifs: make sure we allocate enough storage for socket address + - LP: #318565 + + [ Tim Gardner ] + + * check-abi: Return success when ABI skip is requested and no ABI files exist. + This ought to fix the armel FTBS. + + -- Tim Gardner Thu, 22 Jan 2009 06:42:49 -0700 + +linux (2.6.28-5.13) jaunty; urgency=low + + [ Andy Whitcroft ] + + * Revert "SAUCE: don't use buggy _BCL/_BCM/_BQC for backlight control" + + [ Tim Gardner ] + + * Fix udeb generation breakage caused by the previous armel versatile + flavour config update. + + -- Tim Gardner Wed, 21 Jan 2009 12:38:35 -0700 + +linux (2.6.28-5.12) jaunty; urgency=low + + [ Ante ] + + * Update drbd to 8.3.0 + + [ Dave Airlie ] + + * i915/drm: provide compat defines for userspace for certain struct + + [ Eric Anholt ] + + * drm/i915: Don't double-unpin buffers if we take a signal in + * drm/i915: Don't complain when interrupted while pinning in execbuffers. + * drm/i915: Don't allow objects to get bound while VT switched. + + [ Jani Monoses ] + + * Fix webcam having USB ID 0ac8:303b + - LP: #292086 + + [ Jesse Barnes ] + + * drm/i915: set vblank enabled flag correctly across IRQ + * drm/i915: don't enable vblanks on disabled pipes + + [ Michael Casadevall ] + + * [arm] Fix kexec on ARM by properly calling the relocation function + + [ Tim Gardner ] + + * Enabled CONFIG_PID_NS=y for i386/amd64 + * SAUCE: Increase ATA_TMOUT_PMP_SRST_WAIT to 5 seconds. + - LP: #318978 + * Update armel versatile config + - LP: #314789 + * Enabled CONFIG_RT2860=m for i386/amd64 + * Enabled CONFIG_RT2870=m for i386/amd64 + + [ Upstream Kernel Changes ] + + * Input: atkbd - add keyboard quirk for HP Pavilion ZV6100 laptop + - LP: #291878 + * ALSA: hda - Add quirk for another HP dv7 + * ALSA: hda - Add quirk for HP6730B laptop + * ALSA: caiaq - Fix Oops with MIDI + * ALSA: hda - Fix typos for AD1882 codecs + * x86: fix intel x86_64 llc_shared_map/cpu_llc_id anomolies + * x86: default to SWIOTLB=y on x86_64 + * CIFS: make sure that DFS pathnames are properly formed + * ring-buffer: prevent false positive warning + * ring-buffer: fix dangling commit race + * iwlwifi: use GFP_KERNEL to allocate Rx SKB memory + * tx493[89]ide: Fix length for __ide_flush_dcache_range + * tx4939ide: Do not use zero count PRD entry + * SCSI: eata: fix the data buffer accessors conversion regression + * USB: emi26: fix oops on load + * x86, UV: remove erroneous BAU initialization + * x86: fix incorrect __read_mostly on _boot_cpu_pda + * vmalloc.c: fix flushing in vmap_page_range() + * fs: symlink write_begin allocation context fix + * cgroups: fix a race between cgroup_clone and umount + * dm raid1: fix error count + * dm log: fix dm_io_client leak on error paths + * minix: fix add link's wrong position calculation + * md: fix bitmap-on-external-file bug. + * sched_clock: prevent scd->clock from moving backwards, take #2 + * devices cgroup: allow mkfifo + * SCSI: aha152x_cs: Fix regression that keeps driver from using shared + interrupts + * ioat: fix self test for multi-channel case + * USB: isp1760: use a specific PLX bridge instead of any bdridge + * USB: isp1760: Fix probe in PCI glue code + * USB: unusual_devs.h additions for Pentax K10D + * inotify: fix type errors in interfaces + * Move compat system call declarations to compat header file + * Convert all system calls to return a long + * Rename old_readdir to sys_old_readdir + * Remove __attribute__((weak)) from sys_pipe/sys_pipe2 + * Make sys_pselect7 static + * Make sys_syslog a conditional system call + * System call wrapper infrastructure + * powerpc: Enable syscall wrappers for 64-bit + * s390: enable system call wrappers + * System call wrapper special cases + * System call wrappers part 01 + * System call wrappers part 02 + * System call wrappers part 03 + * System call wrappers part 04 + * System call wrappers part 05 + * System call wrappers part 06 + * System call wrappers part 07 + * System call wrappers part 08 + * System call wrappers part 09 + * System call wrappers part 10 + * System call wrappers part 11 + * System call wrappers part 12 + * System call wrappers part 13 + * System call wrappers part 14 + * System call wrappers part 15 + * System call wrappers part 16 + * System call wrappers part 17 + * System call wrappers part 18 + * System call wrappers part 19 + * System call wrappers part 20 + * System call wrappers part 21 + * System call wrappers part 22 + * System call wrappers part 23 + * System call wrappers part 24 + * System call wrappers part 25 + * System call wrappers part 26 + * System call wrappers part 27 + * System call wrappers part 28 + * System call wrappers part 29 + * System call wrappers part 30 + * System call wrappers part 31 + * System call wrappers part 32 + * System call wrappers part 33 + * s390 specific system call wrappers + * x86: fix RIP printout in early_idt_handler + * Fix timeouts in sys_pselect7 + * USB: another unusual_devs entry for another bad Argosy storage device + * USB: storage: extend unusual range for 067b:3507 + * USB: storage: recognizing and enabling Nokia 5200 cell phoes + * HID: fix error condition propagation in hid-sony driver + * fix switch_names() breakage in short-to-short case + * nfs: remove redundant tests on reading new pages + * eCryptfs: check readlink result was not an error before using it + * mvsas: increase port type detection delay to suit Seagate's 10k6 drive ST3450856SS 0003 + * x86: avoid theoretical vmalloc fault loop + * ath9k: enable RXing of beacons on STA/IBSS + * mm lockless pagecache barrier fix + * powerpc: Disable Collaborative Memory Manager for kdump + * ibmvfc: Delay NPIV login retry and add retries + * ibmvfc: Improve async event handling + * getrusage: RUSAGE_THREAD should return ru_utime and ru_stime + * ath5k: ignore the return value of ath5k_hw_noise_floor_calibration + * mm: fix assertion + * XFS: truncate readdir offsets to signed 32 bit values + * Linux 2.6.28.1 + * eCryptfs: Filename Encryption: Tag 70 packets + * eCryptfs: Filename Encryption: Header updates + * eCryptfs: Filename Encryption: Encoding and encryption functions + * eCryptfs: Filename Encryption: filldir, lookup, and readlink + * eCryptfs: Filename Encryption: mount option + * eCryptfs: Replace %Z with %z + * eCryptfs: Fix data types (int/size_t) + * eCryptfs: kerneldoc for ecryptfs_parse_tag_70_packet() + * eCryptfs: Clean up ecryptfs_decode_from_filename() + * fs/ecryptfs/inode.c: cleanup kerneldoc + * staging-p80211: Kill directly reference of netdev->priv + * staging-slicoss: Kill directly reference of netdev->priv + * staging-winbond: Kill directly reference of netdev->priv + * Staging: go7007: fixes due to video_usercopy api change + * Staging: go7007: fixes due v4l2_file_operations api change + * staging: correct dubious use of !x & y + * Staging: w35und: make wb35_probe() and wb35_disconnect() funtions static + * Staging: w35und: remove unused wb35_open() and wb35_close() functions + * Staging: w35und: use msleep() and udelay() + * Staging: w35und: remove the no-op pa_stall_execution macro + * Staging: w35und: purb typedef removal + * Staging: w35und: reg queue struct typedef removal + * Staging: w35und: wb35reg struct typedef removal + * Staging: w35und: padapter struct typedef removal + * Staging: w35und: merge wblinux struct to adapter + * Staging: w35und: wb35_probe() cleanup + * Staging: w35und: remove usb_submit_urb wrapper function + * Staging: w35und: remove usb_alloc_urb wrapper function + * w35und: remove dead code from wbusb_f.h + * Staging: w35und: remove true/false boolean macros + * Staging: w35und: OS_MEMORY_ALLOC wrapper removal + * Staging: w35und: usb_put_dev() is missing from wb35_disconnect() + * Staging: w35und: remove macro magic from MLME_GetNextPacket() + * Staging: w35und: plug memory leak in wbsoft_tx() + * Staging: w35und: move supported band initialization out of wb35_probe() + * Staging: w35und: remove timer wrappers + * Staging: w35und: remove atomic op wrappers + * Staging: w35und: remove memcpy/memcmp wrappers + * Staging: w35und: remove abs() and BIT() macros + * Staging: w35und: remove unused macros from common.h + * Staging: w35und: remove unused link status code + * Staging: w35und: #include cleanup + * Staging: w35und: remove some dead code + * Staging: w35und: move source files to one directory + * Staging: w35und: move struct wbsoft_priv to core.h and use it + * Staging: w35und: remove ->adapter from struct _HW_DATA_T + * Staging: w35und: clean up adapter.h a bit + * Staging: w35und: merge struct wb35_adapter to struct wbsoft_priv + * Staging: w35und: remove global struct ieee80211_hw + * Staging: w35und: inline DRIVER_AUTHOR and DRIVER_DESC macros + * Staging: w35und: clean up wblinux.c a bit + * Staging: w35und: remove unused ->ShutDowned member from struct + LOCAL_PARA + * Staging: w35und: move global wbsoft_enabled to struct wbsoft_priv + * Staging: w35und: move packet_came() to wb35rx.c + * Staging: w35und: remove ->skb_array from struct wbsoft_priv + * Staging: w35und: remove ->shutdown from struct wbsoft_priv + * Staging: w35und: make functions local to mds.c static + * Staging: w35und: make functions local to mlmetxrx.c static + * Staging: w35und: remove dead code from mto.c + * Staging: w35und: make functions local to wb35rx.c static + * Staging: w35und: make functions local to wb35tx.c static + * Staging: w35und: remove dead code from wbhal.c + * Staging: w35und: remove rxisr.c as dead code + * Staging: w35und: fix Kconfig + * Staging: w35und: fix config build warnings + * Staging: wlan-ng: Remove PCI/PLX/PCMCIA files. + * Staging: wlan-ng: Update Help text to mention prism3 devices. + * Staging: wlan-ng: Delete PCI/PLX/PCMCIA-specific code. + * Staging: wlan-ng: Make wlan-ng use WEXT mode by default. + * Staging: wlan-ng: Eliminate more <2.6 kernel support. + * Staging: wlan-ng: Eliminate all backwards-compatibility for <2.6.13 kernels. + * Staging: wlan-ng: Eliminate a boatload of tertiaryAP-only code. + * Staging: wlan-ng: Remove AP-only code from MLME functions. + * Staging: wlan-ng: Get rid of the MTU tests in the rx conversion path. + * Staging: wlan-ng: Eliminate one more rx mtu test. + * Staging: wlan-ng: Eliminate local 'version.h' + * Staging: wlan-ng: Eliminate usage of procfs. + * Staging: wlan-ng: Use standard kernel integer (u32/s32/etc) types. + * Staging: wlan-ng: Eliminate all backwards-compatible kernel code. + * Staging: wlan-ng: Wireless Extension support is mandatory. + * Staging: wlan-ng: use WIRELESS_EXT, not CONFIG_WIRELESS_EXT + * Staging: wlan-ng: Delete a large pile of now-unused code. + * Staging: wlan-ng: Delete a pile of unused mibs. And fix WEXT SET_TXPOWER. + * Staging: wlan-ng: Consolidate wlan-ng into a single module. + * Staging: wlan-ng: Purge all MIBs not used internally. + * Staging: wlan-ng: p80211netdev.c fix netdev alloc to prevent oops on device start + * Staging: wlan-ng: prism2_usb.c always enable the card in probe_usb + * Staging: wlan-ng: hfa384x_usb.c use newest version of 384x_drvr_start + * Staging: wlan-ng: p80211wext.c add latest changes & remove extra nulls from wext_handlers + * Staging: wlan-ng: p80211wext don't set default key id twice + * Staging: wlan-ng: hfa384x_usbin_callback: check for hardware removed + * Staging: wlan-ng: p80211conv.c copy code from wlan-ng-devel branch to not drop packets + * Staging: wlan-ng: remove unused #include + * Staging: wlan-ng: p80211wext.c: use ARRAY_SIZE + * Staging: wlan-ng: fix compiler warnings + * Staging: wlan-ng: skb_p80211_to_ether() - payload_length is unsigned, check before subtraction + * Staging: at76_usb: update drivers/staging/at76_usb w/ mac80211 port + * Staging: at76_usb: fix build breakage + * Staging: at76_usb: remove compiler warnings + * Staging: at76_usb: fix up all remaining checkpatch.pl warnings + * Staging: at76_usb: cleanup dma on stack issues + * Staging: poch: Block size bug fix + * Staging: poch: Update TODO list + * Staging: poch: Correct pages from bytes. + * Staging: poch: minor fixes + * Staging: poch: Fix build warnings + * Staging: poch: Rx control register init + * Staging: poch: Fix user space protocol syncing + * Staging: poch: Fine grained locking + * Staging: sxg: remove typedefs + * Staging: sxg: break the build in a cleaner way when !x86 + * Staging: sxg: update README + * staging: struct device - replace bus_id with dev_name(), dev_set_name() + * Staging: echo: remove typedefs + * Staging: echo: Lindent drivers/staging/echo + * Staging: go7007: saa7134 updates + * Staging: go7007: add sensoray 2250/2251 support + * Staging: go7007: Convert driver to use video_ioctl2 + * Staging: go7007: annotate code pointers + * Staging: go7007: fix minor build warnings + * Staging: go7007: small cleanup + * Staging: go7007: add some more v4l2 ioctls + * Staging: et131x: Cleanup et131x_debug.h defines + * Staging: et131x: fix build failure + * Staging: et131x: remove unused variable in et1310_tx.c + * Staging: usbip: cleanup kerneldoc + * Staging: slicoss: use kzalloc + * Staging: slicoss: use correct type for memory allcations + * Staging: slicoss: use request_firmware + * Staging: add agnx wireless driver + * Staging: agnx: fix build errors due to ssid removal + * Staging: agnx: fix build errors due to rate control API changes + * Staging: agnx: fix build warnings + * Staging: add otus Atheros wireless network driver + * Staging: otus: fix netdev->priv usage + * Staging: otus: fix name clash + * Staging: otus: fix urb callback function type + * Staging: otus: remove dependence on kernel version + * Staging: add rt2860 wireless driver + * Staging: rt2860: disable root hack for reading files + * Staging: rt2860: fix up netdev->priv usage + * Staging: rt2860: use standard bit-reverse function + * Staging: rt2860: Fix minor compiler warnings + * Staging: rt2860: enable WPA_SUPPLICANT support + * Staging: Add ServerEngines benet 10Gb ethernet driver + * Staging: benet: fix netif api breakage + * Staging: benet: fix up netdev->priv change + * Staging: benet: build is broken unless CONFIG_NETPOLL is enabled + * Staging: benet: patch to remove subdirectories + * Staging: benet: fix build errors when CONFIG_NETPOLL is off + * Staging: benet: fix build error. + * Staging: benet: patch to use offsetof() instead of AMAP_BYTE_OFFSET() + * Staging: benet: fix problems reported by checkpatch + * Staging: benet: cleanup a check while posting rx buffers + * Staging: add comedi core + * Staging: comedi: fix up a lot of checkpatch.pl warnings + * Staging: comedi: fix checkpatch.pl errors in comedi_fops.c + * Staging: comedi: fix build error in comedilib.h + * Staging: comedi: add kcomedilib to the tree + * Staging: comedi: set up infrastructure for individual drivers + * Staging: comedi: add local copy of interrupt.h + * Staging: comedi: add pci and usb wrapper header files + * Staging: comedi: comedi driver common function module + * Staging: comedi: add mite comedi pci driver + * Staging: comedi: add usb usbdux driver + * Staging: comedi: add usb usbduxfast driver + * Staging: comedi: add usb dt9812 driver + * Staging: comedi: add comedi_bond driver + * Staging: comedi: add comedi_test driver + * Staging: comedi: add comedi_parport driver + * Staging: comedi: dt9812: fix up a lot of coding style issues + * Staging: comedi: dt9812: remove dt9812.h + * Staging: comedi: dt9812: remove typedefs + * Staging: comedi: dt9812: fix sparse warnings + * Staging: comedi: usbdux: remove kernel version checks + * Staging: comedi: usbdux: code style cleanups + * Staging: comedi: usbdux: remove // comments + * Staging: comedi: usbdux: fix up printk calls + * Staging: comedi: usbdux: remove checkpatch.pl warnings + * Staging: comedi: usbdux: remove typedef + * Staging: comedi: usbdux: remove comedi usb wrappers + * Staging: comedi: usbduxfast: remove comedi usb wrappers + * Staging: comedi: dt9812: remove #ifdef that is not needed + * Staging: comedi: remove usb wrappers + * Staging: comedi: remove PCI wrappers + * Staging: comedi: add icp_multi driver + * Staging: comedi: add me4000 driver + * Staging: comedi: fix checkpatch.pl issues in comedi_bond.c + * Staging: comedi: fix checkpatch.pl issues in comedi_fc.c + * Staging: comedi: remove typedefs from comedi_bond.c + * Staging: comedi: fix sparse issues in comedi_bond.c + * Staging: comedi: fix checkpatch.pl issues in comedi_test.c + * Staging: comedi: fix sparse issues in comedi_test.c + * Staging: comedi: remove typedefs from comedi_test.c + * Staging: comedi: fix comedi_parport.c checkpatch.pl issues. + * Staging: comedi: fix comedi_fc.h checkpatch.pl issues. + * Staging: comedi: fix comedi_pci.h checkpatch.pl issues. + * Staging: comedi: comedi_pci.h: remove unneeded wrapper + * Staging: comedi: comedi_pci.h: remove comedi_pci_enable_no_regions + * Staging: comedi: comedi_pci.h: remove comedi_pci_disable_no_regions + * Staging: comedi: add s626 driver + * Staging: comedi: add rtd520 driver + * Staging: comedi: add me_daq driver + * Staging: comedi: me_daq: fix checkpatch.pl issues + * Staging: comedi: me_daq: remove typedefs + * Staging: comedi: me_daq: fix sparse issues + * Staging: comedi: fix checkpatch.pl warning in interrupt.h + * Staging: comedi: fix build if CONFIG_PROC_FS is not set + * Staging: add asus_oled driver + * Staging: asus_oled: fix build dependancy + * Staging: Add the Meilhaus ME-IDS driver package + * Staging: meilhaus: fix __symbol_get problems + * Staging: add lcd-panel driver + * Staging: panel: major checkpatch cleanup + * Staging: panel: remove ifdefs and code for pre-2.6 kernels + * Staging: panel: remove support for smartcards + * Staging: add Driver for Altera PCI Express Chaining DMA reference design + * Staging: add rtl8187se driver + * Staging: rtl8187se: remove unneeded files + * Staging: rtl8187se: make the built module be the proper name + * Staging: rtl8187se: remove duplicate pci ids + * Staging: me4000: switch to list_for_each*() + * Staging: usbip: switch to list_for_each_entry() + * Staging: add princeton instruments usb camera driver + * Staging: add mimio xi driver + * Staging: add rt2870 wireless driver + * Staging: rt2870: disable root hack for reading files + * Staging: rt2870: fix up netdev->priv usage + * Staging: add frontier tranzport and alphatrack drivers + * Staging: frontier: remove unused alphatrack_sysfs.c file + * Staging: frontier: fix compiler warnings + * Staging: add epl stack + * Staging: epl: run Lindent on all kernel/*.h files + * Staging: epl: run Lindent on all user/*.h files + * Staging: epl: run Lindent on *.h files + * Staging: epl: run Lindent on *.c files + * Staging: epl: hr timers all run in hard irq context now + * Staging: epl: fix netdev->priv b0rkage + * Staging: add android framework + * Staging: android: add binder driver + * Staging: android: binder: Fix gcc warnings about improper format specifiers for size_t in printk + * staging: android: binder: Fix use of euid + * Staging: android: add logging driver + * Staging: android: add ram_console driver + * Staging: android: add timed_gpio driver + * Staging: android: timed_gpio: Rename android_timed_gpio to timed_gpio + * Staging: android: remove dummy android.c driver + * Staging: android: add lowmemorykiller driver + * Staging: android: binder: fix build errors + * staging: __FUNCTION__ is gcc-specific, use __func__ + * V4L/DVB (10176a): Switch remaining clear_user_page users over to + clear_user_highpage + + [ Zhenyu Wang ] + + * agp/intel: add support for G41 chipset + + -- Tim Gardner Sun, 18 Jan 2009 20:22:54 -0700 + +linux (2.6.28-4.11) jaunty; urgency=low + + [ Mario Limonciello ] + + * SAUCE: Enable HDMI audio codec on Studio XPS 1340 + - LP: #309508 + + [ Tim Gardner ] + + * Fix armel d-i FTBSs + + [ Upstream Kernel Changes ] + + * USB: re-enable interface after driver unbinds + + -- Tim Gardner Tue, 13 Jan 2009 16:33:08 -0700 + +linux (2.6.28-4.10) jaunty; urgency=low + + [ Andy Whitcroft ] + + * update kernel bootloader recommends: to prefer grub + - LP: #314004 + * SAUCE: don't use buggy _BCL/_BCM/_BQC for backlight control + - LP: #311716 + * SAUCE: test-suspend -- add the suspend test scripts + - LP: #316419 + + [ Colin Watson ] + + * Enable udebs for armel + + [ Tim Gardner ] + + * SAUCE: Dell laptop digital mic does not work, PCI 1028:0271 + - LP: #309508 + * Enable CIFS_XATTR=y and CONFIG_CIFS_POSIX=y + - LP: #220658 + + -- Tim Gardner Thu, 08 Jan 2009 10:38:22 -0700 + +linux (2.6.28-4.9) jaunty; urgency=low + + [ Tim Gardner ] + + * Restore DM_CRYPT, AES, ECB, and CBC as modules. This fixes + some installer issues with encrypted /home and Private directories. + * Take one more stab at building armel without module or ABI errors. + + -- Tim Gardner Tue, 06 Jan 2009 08:38:23 -0700 + +linux (2.6.28-4.8) jaunty; urgency=low + + * Fix i386/amd64 FTBS by ignoring all module and ABI changes, + not something you would normally do, but I'm sure the ABI + has not changed. This will probably also allow the ARM builds to complete. + + -- Tim Gardner Mon, 05 Jan 2009 14:42:58 -0700 + +linux (2.6.28-4.7) jaunty; urgency=low + + [ Tim Gardner ] + + * Enable CONFIG_ATH5K=m for i386/amd64 + - LP: #306719 + * Build all i386/amd64 AGP/DRM components as modules. + - LP: #312721 + * git commands are now installed outside the default $PATH + Use 'git CMD' instead of 'git-CMD'. + * Build in most PATA/SATA drivers. This should allow most i386/amd64 systems to boot + without an initramfs, though some support work is still required in initramfs-tools + and grub. + - LP: #311730 + + -- Tim Gardner Fri, 02 Jan 2009 07:33:09 -0700 + +linux (2.6.28-4.6) jaunty; urgency=low + + [ Tim Gardner ] + + * Enable CONFIG_X86_E_POWERSAVER=m for i386 generic + - LP: #237405 + * Build i386 AGP drivers as modules + - LP: #312721 + * Build i386 DRM as a module + - LP: #312721 + + [ Upstream Kernel Changes ] + + * drm/i915: Add missing userland definitions for gem init/execbuffer. + - LP: #308387 + + -- Tim Gardner Mon, 29 Dec 2008 09:16:47 -0700 + +linux (2.6.28-4.5) jaunty; urgency=low + + [ Andy Whitcroft ] + + * clean up module dependancy information on package removal/purge + - LP: #300773 + + [ Tim Gardner ] + + * Update iscsitarget to 0.4.17 + * Build in ext{234} + * Build in Crypto modules AES, CBC, ECB + * Build in ACPI AC,BATTERY,BUTTON,FAN,PCI_SLOT,PROCESSOR,SBS,THERMAL,WMI + * Build in AGP intel,via,sis,ali,amd,amd64,efficeon,nvidia,sworks + * Build in ata,dev_dm,dev_loop,dev_md,dev_sd,dev_sr + * Build in BT l2cap,rfcomm,sco + * Reduce CONFIG_LEGACY_PTY_COUNT to 0 + * Build in CDROM_PKTCDVD and CHR_DEV_SG + * Build in CPU_FREQ + GOV_CONSERVATIVE,GOV_ONDEMAND,GOV_POWERSAVE,GOV_USERSPACE,STAT,TABLE + * Build in DM CRYPT,MIRROR,MULTIPATH,SNAPSHOT + * Build in DRM + * Build in HID + * Build in HOTPLUG PCI,PCIE + * Build in I2C + * Build in IEEE1394 OHCI1394 + * Build in INPUT EVDEV + * Build in IPV6 + * Build in MMC + * Build in PACKET + * Enable both IEEE1394 (Firewire) stacks as modules + - LP: #276463 + * Disable SUNRPC_REGISTER_V4 + - LP: #306016 + * Enable dm-raid4-5 + - LP: #309378 + * Build in PPP + * Build in RFKILL + * Build in USB SERIAL + + [ Upstream Kernel Changes ] + + * Rebased to v2.6.28 + + -- Tim Gardner Thu, 18 Dec 2008 21:18:44 -0700 + +linux (2.6.28-3.4) jaunty; urgency=low + + [ Tim Gardner ] + + * Build ecryptfs into the kernel + - LP: #302870 + * Deprecated gnbd + + [ Upstream Kernel Changes ] + + * Rebased to v2.6.28-rc8 + + -- Tim Gardner Wed, 10 Dec 2008 22:45:13 -0700 + +linux (2.6.28-2.3) jaunty; urgency=low + + [ Andy Whitcroft ] + + * update the templates so that we have spaces following the title line + + [ Tim Gardner ] + + * Add upload number to kernel version signature. This has the side effect + of renaming kernel packages back to the original way, e.g., without '-ub' + in the name. + + -- Tim Gardner Thu, 04 Dec 2008 12:18:31 -0700 + +linux (2.6.28-2.2) jaunty; urgency=low + + [ Andy Whitcroft ] + + * Revert "SAUCE: (no-up) version: Implement version_signature proc file." + * SAUCE: (no-up) version: Implement version_signature proc file. + * SAUCE: serial: RS485 ioctl structure uses __u32 include linux/types.h + - LP: #303711 + + [ Tim Gardner ] + + * UBUNTU: Removed CONFIG_DRM_VIA_CHROME9 since it is upstream. + * UBUNTU: Removed ubuntu/via_chrome9 + + [ Upstream Kernel Changes ] + + * Rebased to v2.6.28-rc7 + + -- Tim Gardner Tue, 02 Dec 2008 07:33:32 -0700 + +linux (2.6.28-1.1) jaunty; urgency=low + + [ Amit Kucheria ] + + * SAUCE: make fc transport removal of target configurable + * SAUCE: pm: Config option to disable handling of console during + suspend/resume + * SAUCE: Adds support for COMPAL JHL90 webcam + * Map armel to arm to all editconfigs to work correctly + * Add armel to getabis for completeness sake + * Add -ub to our versioning to allow kerneloops.org to identify us + + [ Andy Whitcroft ] + + * Fix Vcs-Git path for the kernel repository. + - LP: #296915 + + [ Ben Collins ] + + * SAUCE: Lower warning level of some PCI messages + - LP: #159241 + * SAUCE: input/mouse/alps: Do not call psmouse_reset() for alps + * SAUCE: tulip: Let dmfe handle davicom on non-sparc + * SAUCE: tulip: Define ULI PCI ID's + * SAUCE: (no-up) version: Implement version_signature proc file. + * SAUCE: (no-up) connector.h: Add idx/val for drbd + * SAUCE: (no-up) swap: Add notify_swap_entry_free callback for compcache + * SAUCE: drivers: Remove some duplicate device entries in various modules + * SAUCE: (no-up) [AppArmor] merge with upstream subversion r1291 + * SAUCE: (no-up) Enable ubuntu extra subdirectory + * SAUCE: (no-up) ACPI: initramfs DSDT override support + * ubuntu: Add drbd module + * ubuntu: Add iscsitarget module + * ubuntu: Add BOM for iscsitarget + * ubuntu: Add squashfs driver + * SAUCE: (no-up) Check for squashfs superblock in initramfs mounting. + * ubuntu: Add aufs module + * ubuntu: Added atl2 driver + * ubuntu: Added et131x driver + * ubuntu: Add dm-raid4-5 driver + * ubuntu: Add ndiswrapper driver + * ubuntu: Added ram backed compressed swap module (compcache) + * ubuntu: Add misc drivers from hardy lum + * ubuntu: Add heci driver 3.2.0.24 + * ubuntu: Add ov511 and bt-sco drivers + * ubuntu: Add acx, prism2_usb wireless drivers + * ubuntu: Add at76 driver to build + * ubuntu: Add fsam7400 sw kill switch driver + * ubuntu: Added qc-usb driver + * ubuntu: e1000e: Upgraded module to 0.4.1.7 + * ubuntu: Added rfkill drivers + * ubuntu: VIA - Add VIA DRM Chrome9 3D engine + * ubuntu: unionfs: Added v1.4 module from hardy + * ubuntu: Add LIRC driver + * ubuntu: Add GFS driver + * ubuntu: New tlsup driver for toshiba laptops + * SAUCE: (no-up) Export lookup_has for aufs + * SAUCE: (no-up) Modularize vesafb + * ubuntu: Config files + * Disable some modules that need porting to 2.6.28 + * ubuntu: Fixup headers creation to include arch/*/include + * ubuntu/module-check: Ignore comment lines + + [ Chuck Short ] + + * SAUCE: ata: blacklist FUJITSU MHW2160BH PL + + [ cking ] + + * SAUCE: Enable speedstep for sonoma processors. + + [ Colin Ian King ] + + * ubuntu: Add dm-loop + * SAUCE: cx88: Support Leadtek WinFast DTV2000 H version J. + * SAUCE: fix kernel oops in VirtualBox during paravirt patching + * SAUCE: qc-usb: Enable Logitech QuickCam Messenger + * SAUCE: appleir: Enable driver for new MacBook Pro + + [ Colin Watson ] + + * Enable configfs, fuse, jfs, reiserfs, and xfs for armel + * Extend debian/d-i/ modules handling to make armel easier to support + * Create udebs for armel + + [ Fabio M. Di Nitto ] + + * ubuntu: update GFS Cluster File System + + [ Kees Cook ] + + * SAUCE: AppArmor: update to upstream subversion r1302 + + [ Leann Ogasawara ] + + * Add automatic model setting for Samsung Q45 + * Add Dell Dimension 9200 reboot quirk + + [ Mackenzie Morgan ] + + * SAUCE: Add quirk for ASUS Z37E to make sound audible after resume + + [ Matthew Garrett ] + + * SAUCE: hostap: send events on data interface as well as master + interface + + [ Michael Frey (Senior Manager, MID ] + + * SAUCE: Send HCI_RESET for Broadcomm 2046 + + [ Michael Haas ] + + * add proper aufs source tree from 20080922 + * Fix AUFS compilation in vfsub.c + * Add splice-2.6.23.patch from AUFS to export a symbol needed by AUFS + * Add put_filp.patch from AUFS to export a symbol needed by AUFS + * Add deny_write_access.patch from AUFS - export deny_write_access + * Add sec_perm-2.6.24.patch from AUFS - export security_inode_permission + * make sure TMPFS_MAGIC is defined in AUFS Makefile + * SAUCE: Revert aufs changes from AppArmor merge + + [ Mohamed Abbas ] + + * SAUCE: iwlagn -- fix rfkill when on when driver loaded + + [ Phillip Lougher ] + + * SAUCE: r8169: disable TSO by default for RTL8111/8168B chipsets. + + [ Stefan Bader ] + + * SAUCE: (no-up) Export dm_disk function of device-mapper + * SAUCE: Restore VT fonts on switch + * SAUCE: mmc: Increase power_up deleay to fix TI readers + * gfs1: GFS1 can't create more than 4kb file + * uvcvideo: Commit streaming parameters when enabling the video stream. + + [ Tim Gardner ] + + * SAUCE: Add extra headers to linux-libc-dev + * SAUCE: Catch nonsense keycodes and silently ignore + * SAUCE: Added support for HDAPS on various ThinkPads from Lenovo and IBM + * SAUCE: Guest OS does not recognize a lun with non zero target id on + Vmware ESX Server + * SAUCE: (no-up) Take care of orinoco_cs overlap with hostap_cs + * ubuntu: Add GNBD driver + * SAUCE: e1000e: Map NV RAM dynamically only when needed. + * SAUCE: Correctly blacklist Thinkpad r40e in ACPI + * SAUCE: Update Wacom tablet driver to 1.49 + * SAUCE: Fix Wacom tablet 1.49 porting errors + * SAUCE: Enable an e1000e Intel Corporation 82567 Gigabit controller + * SAUCE: Fix Oops in wlan_setup + * SAUCE: ipw2200: change default policy for auto-associate + * Dell Wireless 365 needs BTUSB_RESET quirk. + * ndiswrapper remote buffer overflows on long ESSIDs (CVE 2008-4395) + * Disabled ubuntu/e1000e config + + [ Upstream Kernel Changes ] + + * Revert "[Bluetooth] Eliminate checks for impossible conditions in IRQ + handler" + * Revert "x86, early_ioremap: fix fencepost error" + * mac80211: fix two issues in debugfs + * iwl3945: do not send scan command if channel count zero + + -- Ben Collins Fri, 07 Nov 2008 09:37:42 -0700 + +linux (2.6.27-8.17) intrepid-proposed; urgency=low + + [ John W. Linville ] + + * SAUCE: iwlagn: avoid sleep in softirq context + -LP: #286285 + + [ Tim Gardner ] + + * Dell Wireless 365 needs BTUSB_RESET quirk. + - LP: #293670 + * SAUCE: ALSA: hda: make a STAC_DELL_EQ option (version 2) + - LP: #293271 + + [ Upstream Kernel Changes ] + + * iwlagn: downgrade BUG_ON in interrupt + * Input: atkbd - expand Latitude's force release quirk to other Dells + * fbcon_set_all_vcs: fix kernel crash when switching the rotated consoles + * modules: fix module "notes" kobject leak + * Driver core: Fix cleanup in device_create_vargs(). + * Driver core: Clarify device cleanup. + * ath9k/mac80211: disallow fragmentation in ath9k, report to userspace + * md: Fix rdev_size_store with size == 0 + * xfs: fix remount rw with unrecognized options + * OHCI: Allow broken controllers to auto-stop + * USB: OHCI: fix endless polling behavior + * USB: Fix s3c2410_udc usb speed handling + * USB: EHCI: log a warning if ehci-hcd is not loaded first + * usb gadget: cdc ethernet notification bugfix + * usb: musb_hdrc build fixes + * drm/i915: fix ioremap of a user address for non-root (CVE-2008-3831) + * DVB: au0828: add support for another USB id for Hauppauge HVR950Q + * DVB: sms1xxx: support two new revisions of the Hauppauge WinTV + MiniStick + * security: avoid calling a NULL function pointer in + drivers/video/tvaudio.c + * Linux 2.6.27.3 + -LP: #294152 + + * gpiolib: fix oops in gpio_get_value_cansleep() + * edac cell: fix incorrect edac_mode + * x86 ACPI: fix breakage of resume on 64-bit UP systems with SMP kernel + * sched: fix the wrong mask_len + * USB: cdc-wdm: make module autoload work + * USB: don't rebind drivers after failed resume or reset + * USB: fix memory leak in cdc-acm + * USB: Speedtouch: add pre_reset and post_reset routines + * dm kcopyd: avoid queue shuffle + * dm snapshot: fix primary_pe race + * amd_iommu: fix nasty bug that caused ILLEGAL_DEVICE_TABLE_ENTRY errors + * CIFS: fix saving of resume key before CIFSFindNext + * netfilter: xt_iprange: fix range inversion match + * netfilter: snmp nat leaks memory in case of failure + * netfilter: restore lost ifdef guarding defrag exception + * anon_vma_prepare: properly lock even newly allocated entries + * hvc_console: Fix free_irq in spinlocked section + * ACPI Suspend: Enable ACPI during resume if SCI_EN is not set + * ACPI suspend: Blacklist HP xw4600 Workstation for old code ordering + * ACPI suspend: Always use the 32-bit waking vector + * proc: fix vma display mismatch between /proc/pid/{maps,smaps} + * SCSI: scsi_dh: add Dell product information into rdac device handler + * PCI hotplug: cpqphp: fix kernel NULL pointer dereference + * V4L/DVB (9300): pvrusb2: Fix deadlock problem + * Linux 2.6.27.4 + -LP: #294155 + + -- Tim Gardner Tue, 04 Nov 2008 12:16:07 -0700 + +linux (2.6.27-7.16) intrepid-security; urgency=low + + [ Tim Gardner ] + + * ndiswrapper remote buffer overflows on long ESSIDs (CVE 2008-4395) + - LP: #275860 + + [ Upstream Kernel Changes ] + + * ext[234]: Avoid printk floods in the face of directory corruption + (CVE-2008-3528) + + -- Tim Gardner Mon, 03 Nov 2008 13:34:42 -0700 + +linux (2.6.27-7.15) intrepid-security; urgency=low + + [ Upstream Kernel Changes ] + + * tcp: Restore ordering of TCP options for the sake of inter-operability + - LP: #264019 + + -- Tim Gardner Mon, 27 Oct 2008 19:28:06 -0600 + +linux (2.6.27-7.14) intrepid; urgency=low + + [ Tim Gardner ] + + * Disable ath5k in 2.6.27 + - LP: #288148 + + -- Tim Gardner Thu, 23 Oct 2008 07:40:43 -0600 + +linux (2.6.27-7.13) intrepid; urgency=low + + [ Stefan Bader ] + + * gfs1: GFS1 can't create more than 4kb file + + [ Tim Gardner ] + + * Revert "SAUCE: x86: Reserve FIRST_DEVICE_VECTOR in used_vectors + bitmap.". Use upstream commit to avoid future conflicts. + * Revert "STABLE queue: mac80211: fix two issues in debugfs". + Use upstream commit to avoid future conflicts. + * Revert "x86, early_ioremap: fix fencepost error" + Use upstream commit to avoid future conflicts. + + [ Upstream Kernel Changes ] + + * sched_rt.c: resch needed in rt_rq_enqueue() for the root rt_rq + * x86: Reserve FIRST_DEVICE_VECTOR in used_vectors bitmap. + * mac80211: fix two issues in debugfs + * Fix barrier fail detection in XFS + * tty: Termios locking - sort out real_tty confusions and lock reads + * CIFS: make sure we have the right resume info before calling + CIFSFindNext + * rfkill: update LEDs for all state changes + * libertas: clear current command on card removal + * b43legacy: Fix failure in rate-adjustment mechanism + * x86, early_ioremap: fix fencepost error + * x86: SB450: skip IRQ0 override if it is not routed to INT2 of IOAPIC + * x86: improve UP kernel when CPU-hotplug and SMP is enabled + * sky2: Fix WOL regression + * netdrvr: atl1e: Don't take the mdio_lock in atl1e_probe + * Linux 2.6.27.2 + + [ Amit Kucheria ] + + * Ubuntu: agp: Fix stolen memory counting on G4X. + -LP: 285572 + + [ Scott Remnant ] + + * add MODULE_ALIAS to load ipmi_devintf with ipmi_si + + -- Tim Gardner Sun, 19 Oct 2008 10:06:21 -0600 + +linux (2.6.27-7.12) intrepid; urgency=low + + [ Chuck Short ] + + * xen: Add xen modules to virtual flavours. + + [ Mario Limonciello ] + + * SAUCE: Add back in lost commit for Apple BT Wireless Keyboard + - LP: #162083 + + [ Tim Gardner ] + + * Remove depmod created files from packages. + - LP: #250511 + * Changed default TCP congestion algorithm to 'cubic' (again) + - LP: #278801 + * Update configs for 'disable CONFIG_DYNAMIC_FTRACE' + - LP: #263555 + + [ Upstream Kernel Changes ] + + * x86: register a platform RTC device if PNP doesn't describe it + * disable CONFIG_DYNAMIC_FTRACE due to possible memory corruption on + module unload + + -- Tim Gardner Fri, 17 Oct 2008 11:25:39 -0600 + +linux (2.6.27-7.11) intrepid; urgency=low + + [ Amit Kucheria ] + + * STABLE queue: mac80211: fix two issues in debugfs + - LP: #275227 + * SAUCE: Adds support for COMPAL JHL90 webcam + + [ Ben Collins ] + + * SAUCE: (no-up) x86: Quiet "Kernel alive" messages + - LP: #39985 + * SAUCE: (no-up) Modularize vesafb + * build/config: Enable vesafb module + * build: Switch to vesafb as preferred. + + [ Leann Ogasawara ] + + * Add Dell Dimension 9200 reboot quirk + - LP: #271370 + + [ Michael Haas ] + + * SAUCE: Revert aufs changes from AppArmor merge + + [ Tim Gardner ] + + * fix virtio udeb layout + - LP: #257739 + * Enabled CONFIG_EXT4DEV_FS=m + * Changed default TCP congestion algorithm to 'cubic' + - LP: #278801 + * SAUCE: ipw2200: change default policy for auto-associate + - LP: #264104 + + [ Upstream Kernel Changes ] + + * x86, early_ioremap: fix fencepost error + - LP: #263543 + + -- Tim Gardner Sat, 11 Oct 2008 08:07:42 -0600 + +linux (2.6.27-7.10) intrepid; urgency=low + + [ Alexey Starikovskiy ] + + * SAUCE: ACPI: EC: do transaction from interrupt context + - LP: #277802 + + [ Ben Collins ] + + * build/d-i: Change virtio-modules udeb to prio standard + + [ Colin Ian King ] + + * SAUCE: Blacklist IBM 2656 in serio/i8042 + - LP: #21558 + + [ Henrik Rydberg ] + + * Revert "SAUCE: applesmc: Add MacBookAir" + * SAUCE: [PATCH 1/5] hwmon: applesmc: Specified number of bytes to read + should match actual + * SAUCE: [PATCH 2/5] hwmon: applesmc: Fix the 'wait status failed: c != + 8' problem + * SAUCE: [PATCH 3/5] hwmon: applesmc: Prolong status wait + * SAUCE: [PATCH 4/5] hwmon: applesmc: Allow for variable ALV0 and ALV1 + package length + * SAUCE: [PATCH 5/5] hwmon: applesmc: Add support for Macbook Air + * SAUCE: hwmon: applesmc: Add support for Macbook Pro 4 + * SAUCE: hwmon: applesmc: Add support for Macbook Pro 3 + * SAUCE: hwmon: applesmc: Lighter wait mechanism, drastic improvement + + [ Leann Ogasawara ] + + * Add automatic model setting for Samsung Q45 + - LP: #200210 + + [ Tim Gardner ] + + * SAUCE: Correctly blacklist Thinkpad r40e in ACPI + - LP: #278794 + * SAUCE: Update Wacom tablet driver to 1.49 + - LP: #260675 + * SAUCE: ALPS touchpad for Dell Latitude E6500/E6400 + - LP: #270643 + * SAUCE: Fix Wacom tablet 1.49 porting errors + * SAUCE: Enable an e1000e Intel Corporation 82567 Gigabit controller + * SAUCE: Fix Oops in wlan_setup + - LP: #263309 + + [ Upstream Kernel Changes ] + + * ath9k: fix oops on trying to hold the wrong spinlock + * [Bluetooth] Fix double frees on error paths of btusb and bpa10x drivers + * [Bluetooth] Add reset quirk for new Targus and Belkin dongles + * [Bluetooth] Add reset quirk for A-Link BlueUSB21 dongle + * Revert "ax25: Fix std timer socket destroy handling." + * ax25: Quick fix for making sure unaccepted sockets get destroyed. + * netrom: Fix sock_orphan() use in nr_release + * Revert "V4L/DVB (8904): cx88: add missing unlock_kernel" + * SLOB: fix bogus ksize calculation + * net: only invoke dev->change_rx_flags when device is UP + * tcp: Fix possible double-ack w/ user dma + * net: Fix netdev_run_todo dead-lock + * tcp: Fix tcp_hybla zero congestion window growth with small rho and large cwnd. + * [MIPS] Sibyte: Register PIO PATA device only for Swarm and Litte Sur + * eeepc-laptop: Fix hwmon interface + * hwmon: (it87) Prevent power-off on Shuttle SN68PT + * hwmon: Define sysfs interface for energy consumption register + * hwmon: (adt7473) Fix some bogosity in documentation file + * hwmon: (abituguru3) Enable reading from AUX3 fan on Abit AT8 32X + * hwmon: (abituguru3) Enable DMI probing feature on Abit AT8 32X + * [CPUFREQ] correct broken links and email addresses + * SLOB: fix bogus ksize calculation fix + * Don't allow splice() to files opened with O_APPEND + * Linux 2.6.27 + + -- Tim Gardner Wed, 08 Oct 2008 21:19:34 -0600 + +linux (2.6.27-6.9) intrepid; urgency=low + + [ Kees Cook ] + + * SAUCE: AppArmor: update to upstream subversion r1302 + - LP: #269921 + + [ Stefan Bader ] + + * Update configuration files to be compliant to desktop specs + - LP: #279019 + + [ Tim Gardner ] + + * Add support in e1000e for a couple of ICH10 PCI IDs + * Enable CONFIG_INPUT_PCSPKR=m + - LP: #275453 + + [ Upstream Kernel Changes ] + + * V4L/DVB (8559a): Fix a merge conflict at gspca/sonixb + * V4L/DVB (8789): wm8739: remove wrong kfree + * V4L/DVB (8883): w9968cf: Fix order of usb_alloc_urb validation + * V4L/DVB (8884): em28xx-audio: fix memory leak + * V4L/DVB (8885): cpia2_usb: fix memory leak + * V4L/DVB (8886): ov511: fix memory leak + * V4L/DVB (8887): gspca: fix memory leak + * V4L/DVB (8892): pvrusb2: Handle USB ID 2040:2950 same as 2040:2900 + * V4L/DVB (8904): cx88: add missing unlock_kernel + * V4L/DVB (8905): ov511: fix exposure sysfs attribute bug + * V4L/DVB (8909): gspca: PAC 7302 webcam 093a:262a added. + * hrtimer: migrate pending list on cpu offline + * hrtimer: fix migration of CB_IRQSAFE_NO_SOFTIRQ hrtimers + * hrtimer: mark migration state + * hrtimer: prevent migration of per CPU hrtimers + * [IA64] Put the space for cpu0 per-cpu area into .data section + * powerpc: Fix PCI in Holly device tree + * powerpc: Fix failure to shutdown with CPU hotplug + * mfd: Fix Kconfig accroding to the new gpiolib symbols + * mfd: Fix asic3 compilation + * x86: fix typo in enable_mtrr_cleanup early parameter + * ipsec: Fix pskb_expand_head corruption in xfrm_state_check_space + * iucv: Fix mismerge again. + * ALSA: ASoC: Fix cs4270 error path + * ALSA: hda - Fix model for Dell Inspiron 1525 + * sctp: Fix kernel panic while process protocol violation parameter + * x86: Fix broken LDT access in VMI + * x86, vmi: fix broken LDT access + * tcp: Fix NULL dereference in tcp_4_send_ack() + * ipv6: NULL pointer dereferrence in tcp_v6_send_ack + * XFRM,IPv6: initialize ip6_dst_blackhole_ops.kmem_cachep + * af_key: Free dumping state on socket close + * dm: always allow one page in dm_merge_bvec + * dm: cope with access beyond end of device in dm_merge_bvec + * dm mpath: add missing path switching locking + * MN10300: Fix IRQ handling + * pxa2xx_spi: fix build breakage + * e1000e: write protect ICHx NVM to prevent malicious write/erase + * powerpc: Fix boot hang regression on MPC8544DS + * ASoC: Set correct name for WM8753 rec mixer output + * ALSA: snd-powermac: mixers for PowerMac G4 AGP + * ALSA: snd-powermac: HP detection for 1st iMac G3 SL + * fbcon: fix monochrome color value calculation + * inotify: fix lock ordering wrt do_page_fault's mmap_sem + * braille_console: only register notifiers when the braille console is used + * fix error-path NULL deref in alloc_posix_timer() + * memory hotplug: missing zone->lock in test_pages_isolated() + * mm: tiny-shmem nommu fix + * mm: handle initialising compound pages at orders greater than MAX_ORDER + * e1000e: reset swflag after resetting hardware + * e1000e: do not ever sleep in interrupt context + * e1000e: remove phy read from inside spinlock + * e1000e: drop stats lock + * e1000e: debug contention on NVM SWFLAG + * e1000e: update version from k4 to k6 + * Check mapped ranges on sysfs resource files + * e1000e: Fix incorrect debug warning + * [MIPS] Build fix: Fix irq flags type + * [MIPS] SMTC: Build fix: Fix filename in Makefile + * [MIPS] SMTC: Fix holes in SMTC and FPU affinity support. + * [MIPS] SMTC: Close tiny holes in the SMTC IPI replay system. + * [MIPS] SMTC: Fix SMTC dyntick support. + * [S390] nohz: Fix __udelay. + * [S390] qdio: prevent stack clobber + * Fix init/main.c to use regular printk with '%pF' for initcall fn + * x86 setup: correct segfault in generation of 32-bit reloc kernel + * selinux: Fix an uninitialized variable BUG/panic in selinux_secattr_to_sid() + * rtc: fix kernel panic on second use of SIGIO nofitication + * fbdev: fix recursive notifier and locking when fbdev console is blanked + * orion_spi: fix handling of default transfer speed + * include/linux/stacktrace.h: declare struct task_struct + * cpusets: remove pj from cpuset maintainers + * MAINTAINERS: add mailing list for man-pages + * SubmitChecklist: interfaces changes should CC linux-api@ + * Documentation/HOWTO: info about interface changes should CC linux-api@vger + * dw_dmac: fix copy/paste bug in tasklet + * leds-fsg: change order of initialization and deinitialization + * leds-pca955x: add proper error handling and fix bogus memory handling + * ACPI: Make /proc/acpi/wakeup interface handle PCI devices (again) + * clockevents: check broadcast tick device not the clock events device + * V4L/DVB (8919): cx18: Fix tuner audio input for Compro H900 cards + * V4L/DVB (8926): gspca: Bad fix of leak memory (changeset 43d2ead315b1). + * V4L/DVB (8933): gspca: Disable light frquency for zc3xx cs2102 Kokom. + * V4L/DVB (8935): em28xx-cards: Remove duplicate entry (EM2800_BOARD_KWORLD_USB2800) + * V4L/DVB (8955): bttv: Prevent NULL pointer dereference in radio_open + * V4L/DVB (8957): zr36067: Restore the default pixel format + * V4L/DVB (8958): zr36067: Return proper bytes-per-line value + * V4L/DVB (8960): drivers/media/video/cafe_ccic.c needs mm.h + * V4L/DVB (8961): zr36067: Fix RGBR pixel format + * V4L/DVB (8963): s2255drv field count fix + * V4L/DVB (8967): Use correct XC3028L firmware for AMD ATI TV Wonder 600 + * V4L/DVB (8978): sms1xxx: fix product name for Hauppauge WinTV MiniStick + * V4L/DVB (8979): sms1xxx: Add new USB product ID for Hauppauge WinTV MiniStick + * V4L/DVB (9029): Fix deadlock in demux code + * V4L/DVB (9037): Fix support for Hauppauge Nova-S SE + * V4L/DVB (9043): S5H1420: Fix size of shadow-array to avoid overflow + * V4L/DVB (9053): fix buffer overflow in uvc-video + * V4L/DVB (9075): gspca: Bad check of returned status in i2c_read() spca561. + * V4L/DVB (9080): gspca: Add a delay after writing to the sonixj sensors. + * V4L/DVB (9092): gspca: Bad init values for sonixj ov7660. + * V4L/DVB (9099): em28xx: Add detection for K-WORLD DVB-T 310U + * V4L/DVB (9103): em28xx: HVR-900 B3C0 - fix audio clicking issue + * x86: gart iommu have direct mapping when agp is present too + * ide-cd: temporary tray close fix + * ide-dma: fix ide_build_dmatable() for TRM290 + * IDE: Fix platform device registration in Swarm IDE driver (v2) + * ide-cd: Optiarc DVD RW AD-7200A does play audio + * ide: workaround for bogus gcc warning in ide_sysfs_register_port() + * [MIPS] Fix CMP Kconfig configuration and mark as broken. + * [MIPS] IP27: Fix build errors if CONFIG_MAPPED_KERNEL=y + * x86 ACPI: Blacklist two HP machines with buggy BIOSes + * kgdb, x86: Avoid invoking kgdb_nmicallback twice per NMI + * kgdb: call touch_softlockup_watchdog on resume + * atmel-mci: Initialize BLKR before sending data transfer command + * Marker depmod fix core kernel list + * Linux 2.6.27-rc9 + + -- Tim Gardner Sun, 05 Oct 2008 21:27:49 -0600 + +linux (2.6.27-5.8) intrepid; urgency=low + + [ Amit Kucheria ] + + * Update AUFS-related Kconfig + - LP: #264048 + + [ Michael Haas ] + + * add proper aufs source tree from 20080922 + * Fix AUFS compilation in vfsub.c + * Add splice-2.6.23.patch from AUFS to export a symbol needed by AUFS + * Add put_filp.patch from AUFS to export a symbol needed by AUFS + * apply (modified) lhash.patch from AUFS to export __lookup_hash() + * Add deny_write_access.patch from AUFS - export deny_write_access + * Add sec_perm-2.6.24.patch from AUFS - export security_inode_permission + * make sure TMPFS_MAGIC is defined in AUFS Makefile + + [ Tim Gardner ] + + * Enabled CONFIG_IPWIRELESS + - LP: #274748 + * Enabled CONFIG_E1000E, disabled CONFIG_E1000E_NEW + This takes advantage of the upstream NVM protection fix in + commit 4a7703582836f55a1cbad0e2c1c6ebbee3f9b3a7. + + [ Upstream Kernel Changes ] + + * Revert "[Bluetooth] Eliminate checks for impossible conditions in IRQ + handler" + * [SCSI] qla2xxx: Defer enablement of RISC interrupts until ISP + initialization completes. + * PCI: Fix pcie_aspm=force + * PCI: fix compiler warnings in pci_get_subsys() + * UBIFS: create the name of the background thread in every case + * UBIFS: TNC / GC race fixes + * UBIFS: remove incorrect assert + * UBIFS: fix printk format warnings + * AMD IOMMU: set iommu sunc flag after command queuing + * AMD IOMMU: protect completion wait loop with iommu lock + * sparc64: Fix disappearing PCI devices on e3500. + * x86, oprofile: BUG scheduling while atomic + * ALSA: ASoC: Fix at32-pcm build breakage with PM enabled + * ath9k: connectivity is lost after Group rekeying is done + * wireless: zd1211rw: add device ID fix wifi dongle "trust nw-3100" + * [IA64] Ski simulator doesn't need check_sal_cache_flush + * [IA64] kexec fails on systems with blocks of uncached memory + * ath9k: Fix IRQ nobody cared issue with ath9k + * [Bluetooth] Fix I/O errors on MacBooks with Broadcom chips + * [Bluetooth] Fix wrong URB handling of btusb driver + * [Bluetooth] Fix USB disconnect handling of btusb driver + * sparc64: Fix missing devices due to PCI bridge test in + of_create_pci_dev(). + * [WATCHDOG] ibmasr: remove unnecessary spin_unlock() + * [WATCHDOG] wdt285: fix sparse warnings + * [WATCHDOG] unlocked_ioctl changes + * x86: fix 27-rc crash on vsmp due to paravirt during module load + * sched: fix init_hrtick() section mismatch warning + * clockevents: prevent cpu online to interfere with nohz + * x86: prevent stale state of c1e_mask across CPU offline/online + * clockevents: prevent stale tick_next_period for onlining CPUs + * clockevents: check broadcast device not tick device + * clockevents: prevent mode mismatch on cpu online + * x86: prevent C-states hang on AMD C1E enabled machines + * x86: c1e_idle: don't mark TSC unstable if CPU has invariant TSC + * timers: fix build error in !oneshot case + * ALSA: ASoC: maintainers - update email address for Liam Girdwood + * ibmasr: remove unnecessary spin_unlock() + * smb.h: do not include linux/time.h in userspace + * kernel-doc: allow structs whose members are all private + * kexec: fix segmentation fault in kimage_add_entry + * Documentation/DMA-mapping.txt: update for pci_dma_mapping_error() + changes + * sys_paccept: disable paccept() until API design is resolved + * mm: tiny-shmem fix lock ordering: mmap_sem vs i_mutex + * Documentation/sysctl/kernel.txt: fix softlockup_thresh description + * memcg: check under limit at shrink_usage + * atmel_serial: update the powersave handler to match serial core + * [SCSI] Fix hang with split requests + * USB Storage: Sierra: Non-configurable TRU-Install + * USB Serial: Sierra: Device addition & version rev + * USB: ehci: fix some ehci hangs and crashes + * USB: Fix the Nokia 6300 storage-mode. + * USB: Correct Sierra Wireless USB EVDO Modem Device ID + * USB: fix hcd interrupt disabling + * USB: update of Documentation/usb/anchors.txt + * usb gadget: fix omap_udc DMA regression + * USB: Fixing Nokia 3310c in storage mode + * usb: musb: fix include path + * USB: fix EHCI periodic transfers + * usb-serial: Add Siemens EF81 to PL-2303 hack triggers + * USB: SERIAL CP2101 add device IDs + * USB: unusual_devs addition for RockChip MP3 player + * USB: fsl_usb2_udc: fix VDBG() format string + * usb serial: ti_usb_3410_5052 obviously broken by firmware changes + * USB: ftdi_sio: Add 0x5050/0x0900 USB IDs (Papouch Quido USB 4/4) + * USB: serial: add ZTE CDMA Tech id to option driver + * USB Serial: Sierra: Add MC8785 VID/PID + * USB: drivers/usb/musb/: disable it on SuperH + * usb: ftdi_sio: add support for Domintell devices + * usb: unusual devs patch for Nokia 5310 Music Xpress + * USB: revert recovery from transient errors + * [MIPS] au1000: Fix gpio direction + * [MIPS] Fixe the definition of PTRS_PER_PGD + * x86: prevent stale state of c1e_mask across CPU offline/online, fix + * x86: disable apm on the olpc + * i2c-powermac: Fix section for probe and remove functions + * i2c-dev: Return correct error code on class_create() failure + * i2c: Fix mailing lists in two MAINTAINERS entries + * ath9k: disable MIB interrupts to fix interrupt storm + * 9p: implement proper trans module refcounting and unregistration + * 9p-trans_fd: fix trans_fd::p9_conn_destroy() + * 9p-trans_fd: clean up p9_conn_create() + * 9p-trans_fd: don't do fs segment mangling in p9_fd_poll() + * 9p-trans_fd: fix and clean up module init/exit paths + * 9p: introduce missing kfree + * 9p: use an IS_ERR test rather than a NULL test + * 9p: fix put_data error handling + * netfilter: ip6t_{hbh,dst}: Rejects not-strict mode on rule insertion + * MN10300: Move asm-arm/cnt32_to_63.h to include/linux/ + * MN10300: Make sched_clock() report time since boot + * ALSA: fix locking in snd_pcm_open*() and snd_rawmidi_open*() + * ALSA: remove unneeded power_mutex lock in snd_pcm_drop + * IPoIB: Fix crash when path record fails after path flush + * [XFS] Fix extent list corruption in xfs_iext_irec_compact_full(). + * [XFS] Remove xfs_iext_irec_compact_full() + * kgdb: could not write to the last of valid memory with kgdb + * kgdb, x86, arm, mips, powerpc: ignore user space single stepping + * kgdb, x86_64: gdb serial has BX and DX reversed + * kgdb, x86_64: fix PS CS SS registers in gdb serial + * kgdboc,tty: Fix tty polling search to use name correctly + * ARM: Delete ARM's own cnt32_to_63.h + * m32r: remove the unused NOHIGHMEM option + * m32r: don't offer CONFIG_ISA + * m32r: export empty_zero_page + * m32r: export __ndelay + * m32r/kernel/: cleanups + * [MIPS] au1000: Make sure GPIO value is zero or one + * [MIPS] IP27: Switch to dynamic interrupt routing avoding panic on + error. + * [MIPS] BCM47xx: Fix build error due to missing PCI functions + * [SSB] Initialise dma_mask for SSB_BUSTYPE_SSB devices + * Swarm: Fix crash due to missing initialization + * ide-tape: fix vendor strings + * ide: note that IDE generic may prevent other drivers from attaching + * cdrom: update ioctl documentation + * [SCSI] qlogicpti: fix sg list traversal error in continuation entries + * sata_nv: reinstate nv_hardreset() for non generic controllers + * scsi: fix fall out of sg-chaining patch in qlogicpti + * ALSA: make the CS4270 driver a new-style I2C driver + * ALSA: ASoC: Fix another cs4270 error path + * Fix NULL pointer dereference in proc_sys_compare + * kconfig: fix silentoldconfig + * kconfig: readd lost change count + * mm owner: fix race between swapoff and exit + * Linux 2.6.27-rc8 + * e1000e: write protect ICHx NVM to prevent malicious write/erase + + -- Amit Kucheria Tue, 30 Sep 2008 18:22:35 +0300 + +linux (2.6.27-4.7) intrepid; urgency=low + + [ Ben Collins ] + + * build/abi: Add gfs1 to perm blacklist + * build/abi: Ignored changes in gfs2 symbols + + [ Fabio M. Di Nitto ] + + * Revert "SAUCE: Export gfs2 symbols required for gfs1 kernel module" + * ubuntu: update GFS Cluster File System + + [ Stefan Bader ] + + * SAUCE: x86: Reserve FIRST_DEVICE_VECTOR in used_vectors bitmap. + - LP: #276334 + + [ Tim Gardner ] + + * Revert "Disable e1000e until the NVRAM corruption problem is found." + * Add atl1e and atl2 to Debian installer bits + - LP: #273904 + * SAUCE: e1000e: Map NV RAM dynamically only when needed. + - LP: #263555 + + -- Tim Gardner Fri, 26 Sep 2008 20:51:22 -0600 + +linux (2.6.27-4.6) intrepid; urgency=low + + [ Tim Gardner ] + + * Disable e1000e until the NVRAM corruption problem is found. + - LP: #263555 + + [ Upstream Kernel Changes ] + + * Revert "[Bluetooth] Eliminate checks for impossible conditions in IRQ + handler" + + -- Ben Collins Tue, 23 Sep 2008 09:53:57 -0400 + +linux (2.6.27-4.5) intrepid; urgency=low + + [ Upstream Kernel Changes ] + + * Revert "b43/b43legacy: add RFKILL_STATE_HARD_BLOCKED support" + * udf: Fix lock inversion between iprune_mutex and alloc_mutex (v2) + * udf: Fix error paths in udf_new_inode() + * [SCSI] sd: select CRC_T10DIF only when necessary + * [SCSI] zfcp: Fix request queue locking + * [SCSI] zfcp: Correctly query end flag in gpn_ft response + * [SCSI] zfcp: Simplify ccw notify handler + * [SCSI] zfcp: Fix reference counter for remote ports + * [SCSI] zfcp: channel cannot be detached due to refcount imbalance + * [SCSI] zfcp: Remove duplicated unlikely() macros. + * [SCSI] scsi_dh: make check_sense return ADD_TO_MLQUEUE + * [SCSI] make scsi_check_sense HARDWARE_ERROR return ADD_TO_MLQUEUE on + retry + * [SCSI] fix check of PQ and PDT bits for WLUNs + * pcm037: add rts/cts support for serial port + * i.MX serial: fix init failure + * imx serial: set RXD mux bit on i.MX27 and i.MX31 + * imx serial: fix rts handling for non imx1 based hardware + * mlx4_core: Set RAE and init mtt_sz field in FRMR MPT entries + * udf: add llseek method + * PCI/iommu: blacklist DMAR on Intel G31/G33 chipsets + * PCI: Fix printk warnings in probe.c + * PCI: Fix printk warnings in setup-bus.c + * PCI Hotplug: fakephp: fix deadlock... again + * clockevents: remove WARN_ON which was used to gather information + * ocfs2: Fix a bug in direct IO read. + * arch/x86/kernel/kdebugfs.c: introduce missing kfree + * [IA64] fix compile failure with non modular builds + * [IA64] fix up bte.h + * [IA64] arch/ia64/sn/pci/tioca_provider.c: introduce missing kfree + * PCI: fix pciehp_free_irq() + * [IA64] prevent ia64 from invoking irq handlers on offline CPUs + * ide: Fix pointer arithmetic in hpt3xx driver code (3rd try) + * add deprecated ide-scsi to feature-removal-schedule.txt + * swiotlb: fix back-off path when memory allocation fails + * sparc64: Fix interrupt register calculations on Psycho and Sabre. + * VIDEO_SH_MOBILE_CEU should depend on HAS_DMA + * m68k: Update defconfigs for 2.6.27-rc6 + * sparc32: Fix function signature of of_bus_sbus_get_flags(). + * sched: fix 2.6.27-rc5 couldn't boot on tulsa machine randomly + * sched: fix deadlock in setting scheduler parameter to zero + * KVM: SVM: fix random segfaults with NPT enabled + * KVM: SVM: fix guest global tlb flushes with NPT + * KVM: VMX: Always return old for clear_flush_young() when using EPT + * clocksource, acpi_pm.c: fix check for monotonicity + * [ARM] OMAP: Fix MMC device data + * block: disable sysfs parts of the disk command filter + * ath9k: Assign seq# when mac80211 requests this + * sg: disable interrupts inside sg_copy_buffer + * MN10300: Change the fault handler to check in_atomic() not + in_interrupt() + * [Bluetooth] Fix regression from using default link policy + * netlink: fix overrun in attribute iteration + * x86: fix possible x86_64 and EFI regression + * sparc64: Fix PCI error interrupt registry on PSYCHO. + * sparc: Fix user_regset 'n' field values. + * niu: panic on reset + * PCI: re-add debug prints for unmodified BARs + * [ARM] 5245/1: Fix warning about unused return value in drivers/pcmcia + * [ARM] 5246/1: tosa: add proper clock alias for tc6393xb clock + * [ARM] 5247/1: tosa: SW_EAR_IN support + * [ARM] Fix PCI_DMA_BUS_IS_PHYS for ARM + * ata: duplicate variable sparse warning + * sata_inic162x: enable LED blinking + * [libata] LBA28/LBA48 off-by-one bug in ata.h + * proc: more debugging for "already registered" case + * include/linux/ioport.h: add missing macro argument for devm_release_* + family + * cpuset: avoid changing cpuset's cpus when -errno returned + * cpuset: hotplug documentation fix + * coredump_filter: add description of bit 4 + * bfs: fix Lockdep warning + * mm: ifdef Quicklists in /proc/meminfo + * spi_mpc83xx: fix clockrate calculation for low speed + * spi_mpc83xx: reject invalid transfer sizes + * pxa2xx_spi: chipselect bugfixes + * pxa2xx_spi: dma bugfixes + * mm: mark the correct zone as full when scanning zonelists + * Documentation/ABI: /sys/class/gpio + * MAINTAINERS: fix USB VIDEO CLASS mail list address + * ia64: fix panic during `modprobe -r xpc' + * atmel_lcdfb: disable LCD and DMA engines when suspending + * spi_s3c24xx: fix section warning + * rescan_partitions(): make device capacity errors non-fatal + * memstick: fix MSProHG 8-bit interface mode support + * Add Uwe Kleine-König to .mailmap + * xen: fix for xen guest with mem > 3.7G + * x86/paravirt: Remove duplicate paravirt_pagetable_setup_{start, done}() + * crypto: talitos - Avoid consecutive packets going out with same IV + * slub: fixed uninitialized counter in struct kmem_cache_node + * udp: Fix rcv socket locking + * IB/mlx4: Fix up fast register page list format + * [MIPS] VR41xx: unsigned irq cannot be negative + * x86: completely disable NOPL on 32 bits + * [S390] cio: Fix driver_data handling for ccwgroup devices. + * [S390] cio: fix orb initialization in cio_start_key + * sparc64: Fix OOPS in psycho_pcierr_intr_other(). + * sparc64: Fix SMP bootup with CONFIG_STACK_DEBUG or ftrace. + * RDMA/nes: Fix client side QP destroy + * IPoIB: Fix deadlock on RTNL between bcast join comp and ipoib_stop() + * clockevents: make device shutdown robust + * powerpc: Fix interrupt values for DMA2 in MPC8610 HPCD device tree + * hpplus: fix build regression + * Fix PNP build failure, bugzilla #11276 + * warn: Turn the netdev timeout WARN_ON() into a WARN() + * [XFS] Move memory allocations for log tracing out of the critical path + * [XFS] Fix regression introduced by remount fixup + * [XFS] Prevent direct I/O from mapping extents beyond eof + * [XFS] Fix barrier status change detection. + * [XFS] Prevent lockdep false positives when locking two inodes. + * [XFS] Fix use-after-free with buffers + * [XFS] Don't do I/O beyond eof when unreserving space + * powerpc: Holly board needs dtbImage target + * Fix compile failure with non modular builds + * [ARM] 5249/1: davinci: remove redundant check in davinci_psc_config() + * [ARM] omap: back out 'internal_clock' support + * sctp: set the skb->ip_summed correctly when sending over loopback. + * [ARM] 5255/1: Update jornada ssp to remove build errors/warnings + * sctp: do not enable peer features if we can't do them. + * sctp: Fix oops when INIT-ACK indicates that peer doesn't support AUTH + * bnx2: Promote vector field in bnx2_irq structure from u16 to unsigned + int + * forcedeth: call restore mac addr in nv_shutdown path + * e1000: prevent corruption of EEPROM/NVM + * e100: Use pci_pme_active to clear PME_Status and disable PME# + * md: Don't wait UNINTERRUPTIBLE for other resync to finish + * atstk1000: fix build breakage with BOARD_ATSTK100X_SW2_CUSTOM=y + * avr32: add .gitignore files + * avr32: add generic_find_next_le_bit bit function + * avr32: fix sys_sync_file_range() call convention + * avr32: nmi_enter() without nmi_exit() + * KVM: ia64: 'struct fdesc' build fix + * hwmon: (atxp1) Fix device detection logic + * hwmon: (it87) Fix fan tachometer reading in IT8712F rev 0x7 (I) + * hwmon: (ad7414) Make ad7414_update_device() static + * tmio_mmc: fix compilation with debug enabled + * atmel-mci: debugfs: enable clock before dumping regs + * atmel-mci: Fix memory leak in atmci_regs_show + * atmel-mci: Fix bogus debugfs file size + * atmel-mci: Set MMC_CAP_NEEDS_POLL if no detect_pin + * mmc_block: handle error from mmc_register_driver() + * mmc_test: initialize mmc_test_lock statically + * [MIPS] Fix 64-bit IP checksum code + * [MIPS] SMTC: Clear TIF_FPUBOUND on clone / fork. + * [MIPS] Fix potential latency problem due to non-atomic cpu_wait. + * [MIPS] vmlinux.lds.S: handle .text.* + * MAINTAINERS: Trivial whitespace cleanups + * MAINTAINERS: Various fixes + * Linux 2.6.27-rc7 + + -- Tim Gardner Sun, 21 Sep 2008 21:49:28 -0600 + +linux (2.6.27-3.4) intrepid; urgency=low + + [ Colin Ian King ] + + * SAUCE: fix kernel oops in VirtualBox during paravirt patching + - LP: #246067 + * SAUCE: qc-usb: Enable Logitech QuickCam Messenger + - LP: #209901 + * SAUCE: appleir: Enable driver for new MacBook Pro + - LP: #157919 + + [ Tim Gardner ] + + * Enabled CONFIG_DEBUG_RODATA=y + + [ Upstream Kernel Changes ] + + * Revert "ALSA: hda - Added model selection for iMac 24"" + * Revert "x86: fix HPET regression in 2.6.26 versus 2.6.25, check hpet + against BAR, v3" + * Revert "[ARM] use the new byteorder headers" + * Revert "mac80211: Use IWEVASSOCREQIE instead of IWEVCUSTOM" + * Revert "crypto: camellia - Use kernel-provided bitops, unaligned access + helpers" + * svcrdma: Fix race between svc_rdma_recvfrom thread and the dto_tasklet + * sched, cpuset: rework sched domains and CPU hotplug handling (v4) + * ACPI: Fix now signed module parameter. + * ACPI: Change package length error to warning + * ACPI: Fix now signed module parameter. + * ACPI: Fix typo in "Disable MWAIT via DMI on broken Compal board" + * acpi: add checking for NULL early param + * UBIFS: fix zero-length truncations + * Input: bcm5974 - add maintainer entry + * sh64: re-add the __strnlen_user() prototype + * sh: fix ptrace_64.c:user_disable_single_step() + * PNPACPI: ignore the producer/consumer bit for extended IRQ descriptors + * UBIFS: always read hashed-key nodes under TNC mutex + * UBIFS: allow for racing between GC and TNC + * [CIFS] Fix plaintext authentication + * sparc32: Implement smp_call_function_single(). + * sh: crash kernel resource fix + * sh: fix kexec entry point for crash kernels + * sh: fix platform_resource_setup_memory() section mismatch + * sh: update Migo-R defconfig + * sh: update AP325RXA defconfig + * sh: fix semtimedop syscall + * cifs: fix O_APPEND on directio mounts + * [CIFS] update cifs change log + * [CIFS] Turn off Unicode during session establishment for plaintext + authentication + * ACPI: thinkpad-acpi: wan radio control is not experimental + * sparc: Fix resource flags for PCI children in OF device tree. + * remove blk_register_filter and blk_unregister_filter in gendisk + * ALSA: oxygen: fix distorted output on AK4396-based cards + * ipv6: When we droped a packet, we should return NET_RX_DROP instead of + 0 + * pkt_sched: Fix locking of qdisc_root with qdisc_root_sleeping_lock() + * net: Unbreak userspace usage of linux/mroute.h + * Don't trigger softlockup detector on network fs blocked tasks + * Resource handling: add 'insert_resource_expand_to_fit()' function + * sparc64: setup_valid_addr_bitmap_from_pavail() should be __init + * UBIFS: do not update min_idx_lebs in stafs + * UBIFS: push empty flash hack down + * UBIFS: remove incorrect index space check + * UBIFS: improve statfs reporting + * UBIFS: fix assertion + * UBIFS: add forgotten gc_idx_lebs component + * UBIFS: introduce LEB overhead + * UBIFS: improve statfs reporting even more + * UBIFS: fill f_fsid + * drm/radeon: downgrade debug message from info to debug. + * Remove invalidate_partition call from do_md_stop. + * Fix problem with waiting while holding rcu read lock in md/bitmap.c + * ALSA: hda: Distortion fix for dell_m6_core_init + * ALSA: ASoC: fix pxa2xx-i2s clk_get call + * block: restore original behavior of /proc/partition when there's no + partition + * debugobjects: fix lockdep warning + * avr32: Fix lockup after Java stack underflow in user mode + * avr32: pm_standby low-power ram bug fix + * nfsd: fix compound state allocation error handling + * sunrpc: fix possible overrun on read of /proc/sys/sunrpc/transports + * nfsd: fix buffer overrun decoding NFSv4 acl + * audit: Moved variable declaration to beginning of function + * Fix modules_install on RO nfs-exported trees. + * Remove '#include ' from mm/page_isolation.c + * dabusb_fpga_download(): fix a memory leak + * [MTD] mtdchar.c: Fix regression in MEMGETREGIONINFO ioctl() + * ALSA: hda - Fix ALC663 auto-probe + * ALSA: hda - Add mic-boost controls to ALC662/663 auto configuration + * Un-break printk strings in x86 PCI probing code + * kernel/resource.c: fix new kernel-doc warning + * softlockup: minor cleanup, don't check task->state twice + * fix typo in arch/parisc/hpux/fs.c + * m68k: atari_keyb_init operator precedence fix + * ACPI: Fix typo in "Disable MWAIT via DMI on broken Compal board" + * don't diff generated firmware files + * IDE: compile fix for sff_dma_ops + * IDE: palm_bk3710: fix compile warning for unused variable + * ide: fix hwif_to_node() + * palm_bk3710: improve IDE registration + * ide-disk: remove stale init_idedisk_capacity() documentation + * ide/Kconfig: mark ide-scsi as deprecated + * net/wireless/Kconfig: clarify the description for + CONFIG_WIRELESS_EXT_SYSFS + * iwlwifi: do not use GFP_DMA in iwl_tx_queue_init + * iwlwifi: workaround interrupt handling no some platforms + * iwlwifi: fix apm_stop (wrong bit polarity for FLAG_INIT_DONE) + * iwlwifi: fix 64bit platform firmware loading + * orinoco: Multicast to the specified addresses + * wireless/libertas/if_cs.c: fix memory leaks + * mac80211: Fix debugfs union misuse and pointer corruption + * rt2x00: Compiler warning unmasked by fix of BUILD_BUG_ON + * ath9k: Incorrect key used when group and pairwise ciphers are + different. + * ath9: Fix ath_rx_flush_tid() for IRQs disabled kernel warning message. + * net/xfrm: Use an IS_ERR test rather than a NULL test + * ipv: Re-enable IP when MTU > 68 + * NTFS: update homepage + * mm: make setup_zone_migrate_reserve() aware of overlapping nodes + * VFS: fix dio write returning EIO when try_to_release_page fails + * acer-wmi: remove debugfs entries upon unloading + * mm/bootmem: silence section mismatch warning - + contig_page_data/bootmem_node_data + * MAINTAINERS: add a maintainer for the BCM5974 multitouch driver + * 8250: improve workaround for UARTs that don't re-assert THRE correctly + * mmc: at91_mci: don't use coherent dma buffers + * pid_ns: zap_pid_ns_processes: fix the ->child_reaper changing + * pid_ns: (BUG 11391) change ->child_reaper when init->group_leader exits + * cirrusfb: check_par fixes + * devcgroup: fix race against rmdir() + * mm: show quicklist usage in /proc/meminfo + * mm: size of quicklists shouldn't be proportional to the number of CPUs + * ipc: document the new auto_msgmni proc file + * hp-wmi: update to match current rfkill semantics + * hp-wmi: add proper hotkey support + * tdfxfb: fix SDRAM memory size detection + * tdfxfb: fix frame buffer name overrun + * rtc_time_to_tm: fix signed/unsigned arithmetic + * ibft: fix target info parsing in ibft module + * sysfs: document files in /sys/firmware/sgi_uv/ + * rtc-cmos: wake again from S5 + * pm_qos_requirement might sleep + * drivers/char/random.c: fix a race which can lead to a bogus BUG() + * ipsec: Fix deadlock in xfrm_state management. + * [x86] Fix TSC calibration issues + * tipc: Don't use structure names which easily globally conflict. + * sparc64: Fix IPI call locking. + * [ARM] omap: fix gpio.c build error + * sparc64: Prevent sparc64 from invoking irq handlers on offline CPUs + * powerpc: Fix uninitialised variable in VSX alignment code + * powerpc: Only make kernel text pages of linear mapping executable + * powerpc: Make sure _etext is after all kernel text + * powerpc: Work around gcc's -fno-omit-frame-pointer bug + * powerpc: Fix build error with 64K pages and !hugetlbfs + * powerpc: Fix for getting CPU number in power_save_ppc32_restore() + * UBIFS: amend f_fsid + * net/usb/pegasus: avoid hundreds of diagnostics + * ixgbe: initialize interrupt throttle rate + * pcnet-cs, axnet_cs: add new IDs, remove dup ID with less info + * netxen: Remove workaround for chipset quirk + * Split up PIT part of TSC calibration from native_calibrate_tsc + * iwlwifi: W/A for the TSF correction in IBSS + * iwlwifi: fix hidden ssid discovery in passive channels + * iwlwifi: remove false rxon if rx chain changes + * iwlwifi: fix station mimo power save values + * iwlwifi: fix rx_chain computation + * iwlwifi: fix Tx cmd memory allocation failure handling + * iwlwifi: call apm stop on exit + * iwlwifi: fix STATUS_EXIT_PENDING is not set on pci_remove + * ath9k: Fix TX status reporting + * ath9k: Fix TX control flag use for no ACK and RTS/CTS + * V4L/DVB (8555): au8522: add mechanism to configure IF frequency for vsb + and qam + * V4L/DVB (8556): au0828: add support for Hauppauge Woodbury + * V4L/DVB (8598): au8522: clean up function au8522_set_if + * V4L/DVB (8599): au8522: remove if frequency settings from vsb/qam + modulation tables + * V4L/DVB (8600): au0828: explicitly set 6 MHz IF frequency in + hauppauge_hvr950q_config + * V4L/DVB (8629): v4l2-ioctl: do not try to handle private V4L1 ioctls + * V4L/DVB (8633): ivtv: update ivtv version number + * V4L/DVB (8648): ivtv: improve CC support + * V4L/DVB (8660): gspca: Simplify the scan of URB packets in pac7311. + * V4L/DVB (8661): gspca: Bug in the previous changeset about pac7311. + * V4L/DVB (8663): gspca: Webcam 0c45:6128 added in sonixj. + * V4L/DVB (8664): gspca: The bridge/sensor of the webcam 093a:2621 is a + PAC 7302. + * V4L/DVB (8665): gspca: Fix the 640x480 resolution of the webcam + 093a:2621. + * V4L/DVB (8666): gspca: Bad scanning of frames in pac7311. + * V4L/DVB (8667): gspca: Bad probe of Z-Star/Vimicro webcams with pas106 + sensor. + * V4L/DVB (8668): gspca: Conflict GSPCA / ET61X251 for the webcam + 102c:6251. + * V4L/DVB (8669): gspca: Add white balance control for spca561 rev 012A. + * V4L/DVB (8671): gspca: Remove the unused field 'dev_name' of the device + structure. + * V4L/DVB (8672): gspca: Big rewrite of spca561. + * V4L/DVB (8673): gspca: Bad frame scanning again and bad init in + pac7311. + * V4L/DVB (8674): gspca: Webcam 0c45:612e added in sonixj. + * V4L/DVB (8675): gspca: Pixmap PJPG (Pixart 73xx JPEG) added, generated + by pac7311. + * V4L/DVB (8678): Remove the dead CONFIG_RADIO_MIROPCM20{,_RDS} code + * V4L/DVB (8681): v4l2-ioctl.c: fix warning + * V4L/DVB (8682): V4L: fix return value of register video func + * V4L/DVB (8701): cx18: Add missing lock for when the irq handler + manipulates the queues + * V4L/DVB (8703): gspca: Do controls work for spca561 revision 12a. + * V4L/DVB (8705): gspca: Adjust some control limits in spca561. + * V4L/DVB (8706): Make contrast and brightness work for pac7302. + * V4L/DVB (8707): gspca: Colors, hflip and vflip controls added for + pac7302. + * V4L/DVB (8709): gspca: Fix initialization and controls of sn9x110 - + ov7630. + * V4L/DVB (8710): gspca: Bad color control in sonixj. + * V4L/DVB (8711): gspca: Bad controls and quantization table of pac7311. + * V4L/DVB (8712): gspca: Bad start of sonixj webcams since changeset + a8779025e7e8. + * V4L/DVB (8713): gspca: Bad color control again in sonixj. + * V4L/DVB (8714): gspca: Bad start of sn9c110 and sensor om6802. + * V4L/DVB (8715): gspca: Change the name of some webcam in the gspca doc. + * V4L/DVB (8716): gspca: Bad start of sn9c110 and sensor ov7630. + * V4L/DVB (8717): gspca: Frame buffer too small for small resolutions + (sonixj and t613). + * V4L/DVB (8718): gspca: suspend/resume added. + * V4L/DVB (8719): gspca: Have VIDIOC_QUERYCTRL more compliant to the + spec. + * V4L/DVB (8720): gspca: V4L2_CAP_SENSOR_UPSIDE_DOWN added as a cap for + some webcams. + * V4L/DVB (8722): sms1xxx: fix typo in license header + * V4L/DVB (8726): link tuner before saa7134 + * V4L/DVB (8727): V4L1: make PMS not autoprobe when builtin. + * V4L/DVB (8728): 1-make-pms-not-autoprobe-when-builtin update + * V4L/DVB (8749): Fix error code, when camera is not turned on by sonypi + * V4L/DVB (8750): V4L: check inval in video_register_device_index() + * V4L/DVB (8751): vivi: Fix some issues at vivi register routine + * V4L/DVB (8757): v4l-dvb: fix a bunch of sparse warnings + * V4L/DVB (8769): cx18: Simplify queue flush logic to prevent oops in + cx18_flush_queues() + * V4L/DVB (8778): radio: fix incorrect video_register_device result check + * V4L/DVB (8779): v4l: fix more incorrect video_register_device result + checks + * V4L/DVB (8790): saa7115: call i2c_set_clientdata only when state != + NULL + * V4L/DVB (8803): s5h1409: Enable QAM_AUTO mode + * V4L/DVB (8804): s5h1411: Enable QAM_AUTO mode + * V4L/DVB (8805): Steven Toth email address change + * V4L/DVB (8809): gspca: Revert commit + 9a9335776548d01525141c6e8f0c12e86bbde982 + * V4L/DVB (8810): gspca: Compile error when CONFIG_PM not defined. + * V4L/DVB (8812): gspca: Do pac73xx webcams work. + * V4L/DVB (8813): gspca: Adjust SOF detection for pac73xx. + * V4L/DVB (8814): gspca: Set DISABLED the disabled controls at query + control time. + * V4L/DVB (8815): gspca: Fix problems with disabled controls. + * V4L/DVB (8816): gspca: Set disabled ctrls and fix a register pb with + ovxxxx in sonixb. + * V4L/DVB (8817): gspca: LED and proble changes in sonixb. + * V4L/DVB (8818): gspca: Reinitialize the device on resume. + * V4L/DVB (8819): gspca: Initialize the ov519 at open time and source + cleanup. + * V4L/DVB (8820): gspca: Change initialization and gamma of zc3xx - + pas106. + * V4L/DVB (8822): gspca: Change some subdriver functions for + suspend/resume. + * V4L/DVB (8823): gspca: H and V flips work for ov7670 only in ov519. + * V4L/DVB (8824): gspca: Too much code removed in the suspend/resume + changeset. + * V4L/DVB (8825): gspca: More controls for pac73xx and new webcam + 093a:2624. + * V4L/DVB (8826): gspca: Webcam Labtec 2200 (093a:2626) added in pac7311. + * V4L/DVB (8827): gspca: Stop pac7302 autogain oscillation. + * V4L/DVB (8828): gspca: Set the clock at the end of initialization in + sonixj. + * V4L/DVB (8829): gspca: Have a clean kmalloc-ated buffer for USB + exchanges. + * V4L/DVB (8830): gspca: Move some probe code to the new init function. + * V4L/DVB (8831): gspca: Resolve webcam conflicts between some drivers. + * V4L/DVB (8832): gspca: Bad pixelformat of vc0321 webcams. + * V4L/DVB (8833): gspca: Cleanup the sonixb code. + * V4L/DVB (8834): gspca: Have a bigger buffer for sn9c10x compressed + images. + * V4L/DVB (8835): gspca: Same pixfmt as the sn9c102 driver and raw Bayer + added in sonixb. + * V4L/DVB (8837): dvb: fix I2C adapters name size + * V4L/DVB (8839): dib0700: add comment to identify 35th USB id pair + * V4L/DVB (8840): dib0700: add basic support for Hauppauge Nova-TD-500 + (84xxx) + * V4L/DVB (8842): vivi_release(): fix use-after-free + * V4L/DVB (8843): tda10048_firmware_upload(): fix a memory leak + * V4L/DVB (8844): dabusb_fpga_download(): fix a memory leak + * bnx2x: Accessing un-mapped page + * SELinux: memory leak in security_context_to_sid_core + * x86: add io delay quirk for Presario F700 + * mmap: fix petty bug in anonymous shared mmap offset handling + * x86: Change warning message in TSC calibration. + * PCI: fix pbus_size_mem() resource alignment for CardBus controllers + * [ARM] omap: fix build error in ohci-omap.c + * [ARM] remove unused #include + * ACPI: Make Len Brown the ACPI maintainer again + * fujitsu-laptop: fix regression for P8010 in 2.6.27-rc + * ACPI: Avoid bogus timeout about SMbus check + * acer-wmi: remove debugfs entries upon unloading + * forgotten refcount on sysctl root table + * V4L/DVB (8868): gspca: Support for vga modes with sif sensors in + sonixb. + * V4L/DVB (8869): gspca: Move the Sonix webcams with TAS5110C1B from + sn9c102 to gspca. + * V4L/DVB (8870): gspca: Fix dark room problem with sonixb. + * V4L/DVB (8872): gspca: Bad image format and offset with rev072a of + spca561. + * V4L/DVB (8873): gspca: Bad image offset with rev012a of spca561 and + adjust exposure. + * V4L/DVB (8874): gspca: Adjust hstart for sn9c103/ov7630 and update + usb-id's. + * [ARM] omap: fix virtual vs physical address space confusions + * V4L/DVB (8876): budget: udelay changed to mdelay + * V4L/DVB (8877): b2c2 and bt8xx: udelay to mdelay + * V4L/DVB (8880): PATCH: Fix parents on some webcam drivers + * V4L/DVB (8881): gspca: After 'while (retry--) {...}', retry will be -1 + but not 0. + * powerpc/spufs: Fix multiple get_spu_context() + * powerpc/spufs: Fix race for a free SPU + * Input: bcm5974 - small formatting cleanup + * Input: bcm5974 - improve finger tracking and counting + * Input: bcm5974 - add BTN_TOUCH event for mousedev benefit + * Input: i8042 - make Lenovo 3000 N100 blacklist entry more specific + * sh: resume_kernel fix for kernel oops built with CONFIG_BKL_PREEMPT=y. + * sh64: resume_kernel fix for kernel oops built with + CONFIG_BKL_PREEMPT=y. + * i2c: fix i2c-sh_mobile timing issues + * clockevents: prevent clockevent event_handler ending up handler_noop + * clockevents: prevent endless loop in periodic broadcast handler + * clockevents: enforce reprogram in oneshot setup + * clockevents: prevent multiple init/shutdown + * clockevents: prevent endless loop lockup + * HPET: make minimum reprogramming delta useful + * [MTD] [NAND] tmio_nand: fix base address programming + * Fix conditional export of kvh.h and a.out.h to userspace. + * async_tx: fix the bug in async_tx_run_dependencies + * sched_clock: fix NOHZ interaction + * sched: fix process time monotonicity + * UBIFS: fix division by zero + * UBIFS: make minimum fanout 3 + * [MIPS] Fix data bus error recovery + * [MIPS] Fix WARNING: at kernel/smp.c:290 + * [MIPS] TXx9: Fix txx9_pcode initialization + * [MIPS] TX39xx: Add missing local_flush_icache_range initialization + * [MIPS] Probe initrd header only if explicitly specified + * res_counter: fix off-by-one bug in setting limit + * forcedeth: fix kexec regression + * atmel_lcdfb: fix oops in rmmod when framebuffer fails to register + * tracehook: comment pasto fixes + * drivers/mmc/card/block.c: fix refcount leak in mmc_block_open() + * x86: boot: stub out unimplemented CPU feature words + * x86: add NOPL as a synthetic CPU feature bit + * x86: use X86_FEATURE_NOPL in alternatives + * clockevents: broadcast fixup possible waiters + * x86: HPET fix moronic 32/64bit thinko + * x86: HPET: read back compare register before reading counter + * Fix CONFIG_AC97_BUS dependency + * [ARM] 5241/1: provide ioremap_wc() + * ntp: fix calculation of the next jiffie to trigger RTC sync + * clocksource, acpi_pm.c: use proper read function also in errata mode + * clocksource, acpi_pm.c: check for monotonicity + * x86: delay early cpu initialization until cpuid is done + * x86: move mtrr cpu cap setting early in early_init_xxxx + * sched: arch_reinit_sched_domains() must destroy domains to force + rebuild + * x86, xen: Use native_pte_flags instead of native_pte_val for .pte_flags + * x86: pda_init(): fix memory leak when using CPU hotplug + * x86: cpu_init(): fix memory leak when using CPU hotplug + * powerpc/spufs: Fix possible scheduling of a context to multiple SPEs + * netfilter: nf_conntrack_sip: de-static helper pointers + * netfilter: nf_conntrack_gre: more locking around keymap list + * netfilter: nf_conntrack_gre: nf_ct_gre_keymap_flush() fixlet + * netfilter: nf_conntrack_irc: make sure string is terminated before + calling simple_strtoul + * pkt_sched: Fix qdisc state in net_tx_action() + * powerpc: Fix rare boot build breakage + * ahci, pata_marvell: play nicely together + * sata_mv: add RocketRaid 1720 PCI ID to driver + * ahci: disable PMP for marvell ahcis + * sata_nv: disable hardreset for generic + * libata-sff: kill spurious WARN_ON() in ata_hsm_move() + * pata_sil680: remove duplicate pcim_enable_device + * ahci: RAID mode SATA patch for Intel Ibex Peak DeviceIDs + * [MIPS] IP22: Fix detection of second HPC3 on Challenge S + * xen: fix 2.6.27-rc5 xen balloon driver warnings + * x86: disable static NOPLs on 32 bits + * netns : fix kernel panic in timewait socket destruction + * bridge: don't allow setting hello time to zero + * NFS: Restore missing hunk in NFS mount option parser + * usb: fix null deferences in low level usb serial + * Fix format of MAINTAINERS + * sparc64: Disable timer interrupts in fixup_irqs(). + * [Bluetooth] Fix reference counting during ACL config stage + * [Bluetooth] Enforce correct authentication requirements + * [Bluetooth] Reject L2CAP connections on an insecure ACL link + * [S390] CVE-2008-1514: prevent ptrace padding area read/write in 31-bit + mode + * [S390] cio: Correct cleanup on error. + * [S390] cio: handle ssch() return codes correctly. + * [S390] cio: allow offline processing for disconnected devices + * ipsec: Restore larval states and socket policies in dump + * update Documentation/filesystems/Locking for 2.6.27 changes + * MAINTAINERS: add Atheros maintainer for atlx + * lib: Correct printk %pF to work on all architectures + * x86: fix memmap=exactmap boot argument + * clockevents: remove WARN_ON which was used to gather information + * ipv6: Fix OOPS in ip6_dst_lookup_tail(). + * Linux 2.6.27-rc6 + + -- Ben Collins Tue, 02 Sep 2008 12:45:56 -0400 + +linux (2.6.27-2.3) intrepid; urgency=low + + [ Ben Collins ] + + * build/retag: Make script save .orig of tags for later use + * ubuntu/lirc: Fix device_create call + * build/firmware: Put in-kernel firmware into version specific subdir + - LP: #262115 + * Rebase on linux-2.6 git. + * ABI bump + + [ Herton Ronaldo Krzesinski ] + + * SAUCE: (no-up) Apparmor warning fixes + + [ John Johansen ] + + * SAUCE: (no-up) Proper AppArmor ptrace updates for newer lsm API + + [ Mackenzie Morgan ] + + * SAUCE: Add quirk for ASUS Z37E to make sound audible after resume + - LP: #25896 + + -- Ben Collins Wed, 27 Aug 2008 14:03:05 -0400 + +linux (2.6.27-1.2) intrepid; urgency=low + + [ Amit Kucheria ] + + * SAUCE: make fc transport removal of target configurable + * SAUCE: pm: Config option to disable handling of console during + suspend/resume + + [ Ben Collins ] + + * SAUCE: Lower warning level of some PCI messages + * SAUCE: input/mouse/alps: Do not call psmouse_reset() for alps + * SAUCE: tulip: Let dmfe handle davicom on non-sparc + * SAUCE: tulip: Define ULI PCI ID's + * SAUCE: (no-up) version: Implement version_signature proc file. + * SAUCE: (no-up) connector.h: Add idx/val for drbd + * SAUCE: (no-up) swap: Add notify_swap_entry_free callback for compcache + * SAUCE: drivers: Remove some duplicate device entries in various modules + * SAUCE: (no-up) [AppArmor] merge with upstream subversion r1291 + * SAUCE: apparmor: Update for changes to ptrace lsm hooks + * SAUCE: (no-up) Enable ubuntu extra subdirectory + * SAUCE: applesmc: Add MacBookAir + * SAUCE: (no-up) ACPI: initramfs DSDT override support + * ubuntu: Add drbd module + * ubuntu: Add iscsitarget module + * ubuntu: Add BOM for iscsitarget + * ubuntu: Add squashfs driver + * SAUCE: (no-up) Check for squashfs superblock in initramfs mounting. + * ubuntu: Add aufs module + * ubuntu: Added atl2 driver + * ubuntu: Added et131x driver + * ubuntu: Add dm-raid4-5 driver + * ubuntu: Add ndiswrapper driver + * ubuntu: Added ram backed compressed swap module (compcache) + * ubuntu: Add misc drivers from hardy lum + * ubuntu: Add heci driver 3.2.0.24 + * ubuntu: Add ov511 and bt-sco drivers + * ubuntu: Add acx, prism2_usb wireless drivers + * ubuntu: Add at76 driver to build + * ubuntu: Add fsam7400 sw kill switch driver + * ubuntu: Added qc-usb driver + * ubuntu: e1000e: Upgraded module to 0.4.1.7 + * ubuntu: Added rfkill drivers + * ubuntu: VIA - Add VIA DRM Chrome9 3D engine + * ubuntu: unionfs: Added v1.4 module from hardy + * ubuntu: Add LIRC driver + * ubuntu: Add GFS driver + * ubuntu: New tlsup driver for toshiba laptops + * Update config files + * build/d-i: Remove obsolete dm modules + + [ Chuck Short ] + + * SAUCE: ata: blacklist FUJITSU MHW2160BH PL + + [ Colin Ian King ] + + * ubuntu: Add dm-loop + * SAUCE: Enable speedstep for sonoma processors. + + [ Dennis Noordsij ] + + * SAUCE: Work around ACPI corruption upon suspend on some Dell machines. + + [ Fabio M. Di Nitto ] + + * SAUCE: Export gfs2 symbols required for gfs1 kernel module + + [ Matthew Garrett ] + + * SAUCE: hostap: send events on data interface as well as master + interface + + [ Michael Frey (Senior Manager, MID ] + + * SAUCE: Send HCI_RESET for Broadcomm 2046 + + [ Phillip Lougher ] + + * SAUCE: r8169: disable TSO by default for RTL8111/8168B chipsets. + + [ Stefan Bader ] + + * SAUCE: (no-up) Export dm_disk function of device-mapper + * SAUCE: Restore VT fonts on switch + * SAUCE: mmc: Increase power_up deleay to fix TI readers + + [ Tim Gardner ] + + * SAUCE: Add extra headers to linux-libc-dev + * SAUCE: Catch nonsense keycodes and silently ignore + * SAUCE: Added support for HDAPS on various ThinkPads from Lenovo and IBM + * SAUCE: Guest OS does not recognize a lun with non zero target id on + Vmware ESX Server + * SAUCE: (no-up) Take care of orinoco_cs overlap with hostap_cs + * ubuntu: Add GNBD driver + + -- Ben Collins Sat, 23 Aug 2008 15:48:35 -0400 + +linux (2.6.27-0.0) intrepid; urgency=low + + * Not uploaded, placeholder for new release + + -- Ben Collins Sat, 23 Aug 2008 15:48:35 -0400 + +linux (2.6.26-5.17) intrepid; urgency=low + + [ Ben Collins ] + + * build/abi: Add tosh_smm symbol to blacklist + + -- Ben Collins Fri, 15 Aug 2008 09:29:34 -0400 + +linux (2.6.26-5.16) intrepid; urgency=low + + [ Ben Collins ] + + * Revert "SAUCE: toshiba_acpi: Rewrote most of the proc entry bits." + * Revert "SAUCE: Update toshiba_acpi.c to version 0.19a" + * build/config: Disable in-kernel toshiba driver(s) + * ubuntu/tlsup: New driver for toshiba laptops + * build/config: Enable TLSUP driver + * SAUCE: e1000e: Fix E1000E_ENABLED logic to check for our E1000E_NEW + driver as well + * ubuntu/e1000e: Remove E1000E_ENABLED option in local config + * build/config: Update configs to have E1000E_ENABLED set + * ubuntu/prism2: Remove duplicate device + + [ Fabio M. Di Nitto ] + + * SAUCE: Export gfs2 symbols required for gfs1 kernel module + + [ Stefan Bader ] + + * SAUCE: x86: HPET rework for SB700 + - LP: #255910 + + [ Tim Gardner ] + + * Add GNBD driver + * Enable GNBD driver + * SAUCE: Add GFS driver + * SAUCE: Enable gfs driver configs + * b43: Linksys WMP54G (BCM4306/3) card in a PCI format has an SPROM + coding + + [ Upstream Kernel Changes ] + + * KVM: x86 emulator: emulate clflush + * USB: quirk PLL power down mode + + -- Ben Collins Mon, 11 Aug 2008 13:19:28 -0400 + +linux (2.6.26-5.15) intrepid; urgency=low + + [ Ben Collins ] + + * Revert "SAUCE: Add blacklist support to fix Belkin bluetooth dongle." + - Superceded by upstream changes. + * build/config: New option enabled for uvcvideo + * build/control: Add Vcs-Git meta data to control file + * SAUCE: toshiba_acpi: Rewrote most of the new code + * abi/perm-blacklist: Add emu10k1 driver to blacklist + + [ Upstream Kernel Changes ] + + * pxamci: trivial fix of DMA alignment register bit clearing + * udplite: Protection against coverage value wrap-around + * ipv6: use timer pending + * ipv6: __KERNEL__ ifdef struct ipv6_devconf + * hdlcdrv: Fix CRC calculation. + * quota: fix possible infinite loop in quota code + * isofs: fix minor filesystem corruption + * KVM: VMX: Fix a wrong usage of vmcs_config + * KVM: SVM: fix suspend/resume support + * KVM: mmu_shrink: kvm_mmu_zap_page requires slots_lock to be held + * KVM: VMX: Add ept_sync_context in flush_tlb + * KVM: x86 emulator: Fix HLT instruction + * KVM: MMU: nuke shadowed pgtable pages and ptes on memslot destruction + * KVM: MMU: Fix potential race setting upper shadow ptes on nonpae hosts + * Patch Upstream: x86 ptrace: fix PTRACE_GETFPXREGS error + * rcu: fix rcu_try_flip_waitack_needed() to prevent grace-period stall + * Fix typos from signal_32/64.h merge + * x86 reboot quirks: add Dell Precision WorkStation T5400 + * USB: fix usb serial pm counter decrement for disconnected interfaces + * x86, suspend, acpi: enter Big Real Mode + * markers: fix duplicate modpost entry + * Fix build on COMPAT platforms when CONFIG_EPOLL is disabled + * proc: fix /proc/*/pagemap some more + * cpusets: fix wrong domain attr updates + * x86: fix crash due to missing debugctlmsr on AMD K6-3 + * ide-cd: fix oops when using growisofs + * rtc-at91rm9200: avoid spurious irqs + * vmlinux.lds: move __attribute__((__cold__)) functions back into final + .text section + * ARM: fix fls() for 64-bit arguments + * tcp: Clear probes_out more aggressively in tcp_ack(). + * sparc64: Fix lockdep issues in LDC protocol layer. + * sparc64: Fix cpufreq notifier registry. + * sparc64: Do not define BIO_VMERGE_BOUNDARY. + * iop-adma: fix platform driver hotplug/coldplug + * myri10ge: do not forget to setup the single slice pointers + * myri10ge: do not use mgp->max_intr_slots before loading the firmware + * ALSA: trident - pause s/pdif output + * V4L: cx18: Upgrade to newer firmware & update documentation + * DVB: dib0700: add support for Hauppauge Nova-TD Stick 52009 + * V4L: uvcvideo: Fix a buffer overflow in format descriptor parsing + * V4L: uvcvideo: Use GFP_NOIO when allocating memory during resume + * V4L: uvcvideo: Don't free URB buffers on suspend + * V4L: uvcvideo: Make input device support optional + * V4L: uvcvideo: Add support for Medion Akoya Mini E1210 integrated + webcam + * V4L: saa7134: Copy tuner data earlier to avoid overwriting manual tuner + type + * V4L: cx23885: Bugfix for concurrent use of /dev/video0 and /dev/video1 + * DVB: cx23885: Ensure PAD_CTRL is always reset to a sensible default + * DVB: cx23885: DVB Transport cards using DVB port VIDB/TS1 did not + stream + * DVB: cx23885: Reallocated the sram to avoid concurrent VIDB/C issues + * DVB: cx23885: SRAM changes for the 885 and 887 silicon parts + * x86: fix kernel_physical_mapping_init() for large x86 systems + * eCryptfs: use page_alloc not kmalloc to get a page of memory + * UML - Fix boot crash + * ixgbe: remove device ID for unsupported device + * mpc52xx_psc_spi: fix block transfer + * tmpfs: fix kernel BUG in shmem_delete_inode + * markers: fix markers read barrier for multiple probes + * VFS: increase pseudo-filesystem block size to PAGE_SIZE + * cpufreq acpi: only call _PPC after cpufreq ACPI init funcs got called + already + * b43legacy: Release mutex in error handling code + * ath5k: don't enable MSI, we cannot handle it yet + * Fix off-by-one error in iov_iter_advance() + * Linux 2.6.26.1 + * ftrace: remove unneeded documentation + * romfs_readpage: don't report errors for pages beyond i_size + * netfilter: nf_nat_sip: c= is optional for session + * SCSI: bsg: fix bsg_mutex hang with device removal + * x86: idle process - add checking for NULL early param + * x86: io delay - add checking for NULL early param + * Close race in md_probe + * Kprobe smoke test lockdep warning + * netfilter: xt_time: fix time's time_mt()'s use of do_div() + * linear: correct disk numbering error check + * SCSI: ch: fix ch_remove oops + * NFS: Ensure we zap only the access and acl caches when setting new acls + * jbd: fix race between free buffer and commit transaction + * Input: i8042 - add Intel D845PESV to nopnp list + * Input: i8042 - add Gericom Bellagio to nomux blacklist + * Input: i8042 - add Acer Aspire 1360 to nomux blacklist + * Bluetooth: Signal user-space for HIDP and BNEP socket errors + * Add compat handler for PTRACE_GETSIGINFO + * ALSA: hda - Fix wrong volumes in AD1988 auto-probe mode + * ALSA: hda - Fix DMA position inaccuracy + * ALSA: hda - Add missing Thinkpad Z60m support + * ALSA: emu10k1 - Fix inverted Analog/Digital mixer switch on Audigy2 + * vfs: fix lookup on deleted directory + * Ath5k: fix memory corruption + * Ath5k: kill tasklets on shutdown + * sound: ensure device number is valid in snd_seq_oss_synth_make_info + * Linux 2.6.26.2 + + -- Ben Collins Sun, 03 Aug 2008 13:25:02 -0400 + +linux (2.6.26-5.14) intrepid; urgency=low + + [ Ben Collins ] + + * SAUCE: applesmc: Add MacBookAir + * build: Do not build ddeb unless we are on the buildd + * build: control: Consistency in arch fields. + * SAUCE: Update toshiba_acpi.c to version 0.19a + - LP: #77026 + * build: Added perm blacklist support and per-module support to abi-check + - Blacklist p80211 module from abi checks + * ubuntu/lirc: Get rid of drivers symlink and use real include stuff + + + [ Colin Ian King ] + + * SAUCE: acerhk module - add support for Amilo A1650g keyboard + - LP: #84159 + * SAUCE: rt2x00: Fix OOPS on failed creation of rt2x00lib workqueue + - LP: #249242 + + [ Mario Limonciello ] + + * Add LIRC back in + + [ Tim Gardner ] + + * Makefile race condition can lead to ndiswrapper build failure + - LP: #241547 + * update linux-wlan-ng (prism2_usb) to upstream version 1861 + - LP: #245026 + + [ Upstream Kernel Changes ] + + * Fix typos from signal_32/64.h merge + + -- Ben Collins Fri, 01 Aug 2008 00:05:01 -0400 + +linux (2.6.26-5.13) intrepid; urgency=low + + [ Ben Collins ] + + * build: Make makedumpfile an amd64/i386 only build-dep + * ubuntu/acerhk: Fixup assembly to compile with newer binutils + + -- Ben Collins Sat, 26 Jul 2008 16:41:50 -0400 + +linux (2.6.26-4.12) intrepid; urgency=low + + [ Ben Collins ] + + * e1000e: Upgraded module to 0.4.1.7 upstream. Placed in ubuntu/, + in-kernel driver disabled + * config: Disable e1000e in-kernel, and enable newer driver in ubuntu/ + * rfkill: Update to 1.3 drivers, and move to common location + * ubuntu: Actually link kconfig/kbuild into rfkill subdir + * config: Enable loading dsdt from initramfs + - LP: #246222 + * ubuntu: [compcache] Update to fix crashes in improper BUG() + * build: Create a retag scripts to recover tags from rebases + * build: Updates for dbg pkg + * build: Make sure no empty lines show up in debian/files + * ubuntu: atl1e: Add new driver from 2.6.27-pre-rc1 + - LP: #243894 + * sys_getcwd: Fix some brokeness introduced by AppArmor __d_path + changes + - LP: #251223 + * ubuntu: unionfs: Added v1.4 module from hardy + * build: Add sub-flavour infrastructure, and virtual subflav + + [ Eric Piel ] + + * ACPI: Allow custom DSDT tables to be loaded from initramfs + + [ Kees Cook ] + + * AppArmor: Smack VFS patches + + [ Mario Limonciello ] + + * Work around ACPI corruption upon suspend on some Dell machines. + - LP: #183033 + + [ Tim Gardner ] + + * Export usbhid_modify_dquirk for LBM module bcm5974 + - LP: #250838 + * VIA - Add VIA DRM Chrome9 3D engine + - LP: #251862 + * Define TRUE/FALSE for VIA DRM driver. + + -- Ben Collins Tue, 15 Jul 2008 12:51:39 -0400 + +linux (2.6.26-4.11) intrepid; urgency=low + + [ Ben Collins ] + + * config: Enable bcm5974 driver in all configs + + [ 2.6.26-4.10 ] + + [ Amit Kucheria ] + + * Fix typo in GSPCA Makefile and make it compile + + [ Ben Collins ] + + * ubuntu: Remove UVC driver in favor of in-kernel one (-rc9) + * config: Updates for -rc9 + * ubuntu: Add acx, prism2_usb wireless drivers + * config: Enable prism2_usb and acx drivers. + * ubuntu: Add at76 driver to build + * config: Enable at76_usb driver. + * iscsitarget: Fix prototype for bi_end_io callback. + * acx: Fix section type mismatch warnings + * fsam7400: Add sw kill switch driver + * config: Enable fsam7400 driver + * qc-usb: Added new driver + * config: Enable qc-usb driver + * drbd: Remove built-in connector usage + * drbd: Do not define idx/val for connector here + * connector.h: Add idx/val for drbd + * bcm5974: Added new driver + + [ Kees Cook ] + + * SAUCE: [AppArmor] merge with upstream subversion r1291 + * SAUCE: [AppArmor] fix typo in selinux_inode_link + * SAUCE: [AppArmor] aufs patches + + [ Michael Frey (Senior Manager, MID ] + + * SAUCE: Send HCI_RESET for Broadcomm 2046 + - LP: #241749 + + [ Tim Gardner ] + + * SAUCE: Medion Akoya Mini E1210 + + [ Upstream Kernel Changes ] + + * Revert "BAST: Remove old IDE driver" + * ARM: OMAP: DMA: Don't mark channel active in omap_enable_channel_irq + * ARM: OMAP: Correcting the gpmc prefetch control register address + * debugobjects: fix lockdep warning + * [ARM] 5115/1: pxafb: fix ifdef for command line option handling + * [ARM] 5116/1: pxafb: cleanup and fix order of failure handling + * [ARM] 5109/1: Mark rtc sa1100 driver as wakeup source before + registering it + * [ARM] Export dma_sync_sg_for_device() + * fix cgroup-inflicted breakage in block_dev.c + * [patch for 2.6.26 2/4] vfs: utimensat(): be consistent with utime() for + immutable and append-only files + * [patch for 2.6.26 1/4] vfs: utimensat(): ignore tv_sec if tv_nsec == + UTIME_OMIT or UTIME_NOW + * [patch for 2.6.26 3/4] vfs: utimensat(): fix error checking for + {UTIME_NOW,UTIME_OMIT} case + * [patch for 2.6.26 4/4] vfs: utimensat(): fix write access check for + futimens() + * [patch 1/4] vfs: path_{get,put}() cleanups + * [patch 2/4] fs: make struct file arg to d_path const + * [patch 3/4] vfs: fix ERR_PTR abuse in generic_readlink + * [patch 4/4] flock: remove unused fields from file_lock_operations + * [patch 3/3] vfs: make d_path() consistent across mount operations + * [patch 1/3] vfs: dcache sparse fixes + * [patch 2/3] vfs: dcache cleanups + * udf: Fix regression in UDF anchor block detection + * [SCSI] ses: Fix timeout + * netfilter: ip6table_mangle: don't reroute in LOCAL_IN + * [SCSI] esp: Fix OOPS in esp_reset_cleanup(). + * kernel/audit.c: nlh->nlmsg_type is gotten more than once + * audit: fix kernel-doc parameter notation + * remove useless argument type in audit_filter_user() + * Blackfin arch: fix bug - kernel boot fails when Spinlock and rw-lock + debugging enabled + * Blackfin arch: fix up section mismatch warning + * mac80211: implement EU regulatory domain + * b43: Do not return TX_BUSY from op_tx + * b43legacy: Do not return TX_BUSY from op_tx + * b43: Fix possible MMIO access while device is down + * b43legacy: Fix possible NULL pointer dereference in DMA code + * rt2x00: Fix unbalanced mutex locking + * iwlwifi: improve scanning band selection management + * [SCSI] esp: tidy up target reference counting + * [ARM] 5117/1: pxafb: fix __devinit/exit annotations + * thermal: Create CONFIG_THERMAL_HWMON=n + * ACPI: don't walk tables if ACPI was disabled + * dock: bay: Don't call acpi_walk_namespace() when ACPI is disabled. + * x86: shift bits the right way in native_read_tscp + * x86: section/warning fixes + * V4L/DVB (8004): Fix INPUT dependency at budget-ci + * V4L/DVB (8005): Fix OOPS if frontend is null + * V4L/DVB (8007): cx18/cx25840: the S-Video LUMA input can use all + In1-In8 inputs + * V4L/DVB (8008): cx18: remove duplicate audio and video input enums + * V4L/DVB (8010): em28xx: Properly register extensions for already + attached devices + * V4L/DVB (8011): em28xx: enable DVB for HVR-900 + * V4L/DVB (8012): gl861: sleep a little to avoid I2C errors + * V4L/DVB (8013): gl861: remove useless identify_state + * V4L/DVB (8015): gl861: replace non critical msleep(0) with msleep(1) to + be on the safe side + * V4L/DVB (8017): Ensure em28xx extensions only get run against devs that + support them + * V4L/DVB (8018): Add em2860 chip ID + * V4L/DVB (8020): Fix callbacks functions of saa7134_empress + * V4L/DVB (8022): saa7134: fix race between opening and closing the + device + * V4L/DVB (8026): Avoids an OOPS if dev struct can't be successfully + recovered + * V4L/DVB (8027): saa7134: Avermedia A700: only s-video and composite + input are working + * V4L/DVB (8028): Improve error messages for tda1004x attach + * V4L/DVB (8029): Improve error message at tda1004x_attach + * V4L/DVB (8034): tda18271: fix IF notch frequency handling + * V4L/DVB (8035): tda18271: dont touch EB14 if rf_cal lookup is out of + range + * V4L/DVB (8036): tda18271: toggle rf agc speed mode on TDA18271HD/C2 + only + * V4L/DVB (8037): tda18271: ensure that the thermometer is off during + channel configuration + * V4L/DVB (8039): pxa-camera: fix platform_get_irq() error handling. + * V4L/DVB (8040): soc-camera: remove soc_camera_host_class class + * V4L/DVB (8042): DVB-USB UMT-010 channel scan oops + * V4L/DVB (8043): au0828: add support for additional USB device id's + * V4L/DVB (8044): au8522: tuning optimizations + * V4L/DVB (8048): saa7134: Fix entries for Avermedia A16d and Avermedia + E506 + * V4L/DVB (8061): cx18: only select tuner / frontend modules if + !DVB_FE_CUSTOMISE + * V4L/DVB (8063): cx18: Fix unintended auto configurations in + cx18-av-core + * V4L/DVB (8066): cx18: Fix audio mux input definitions for HVR-1600 Line + In 2 and FM radio + * V4L/DVB (8067): cx18: Fix firmware load for case when digital capture + happens first + * V4L/DVB (8068): cx18: Add I2C slave reset via GPIO upon initialization + * V4L/DVB (8069): cx18: Fix S-Video and Compsite inputs for the Yuan + MPC718 and enable card entry + * V4L/DVB (8071): tda10023: Fix possible kernel oops during + initialisation + * V4L/DVB (8073): av7110: Catch another type of ARM crash + * V4L/DVB (8074): av7110: OSD transfers should not be interrupted + * V4L/DVB (8075): stv0299: Uncorrected block count and bit error rate + fixed + * V4L/DVB (8092): videodev: simplify and fix standard enumeration + * V4L/DVB (8096): au8522: prevent false-positive lock status + * V4L/DVB (8097): xc5000: check device hardware state to determine if + firmware download is needed + * V4L/DVB (8100): V4L/vivi: fix possible memory leak in vivi_fillbuff + * V4L/DVB (8108): Fix open/close race in saa7134 + * s2io: fix documentation about intr_type + * tc35815: Mark carrier-off before starting PHY + * tc35815: Fix receiver hangup on Rx FIFO overflow + * ixgbe: fix EEH recovery during reset on PPC + * igb: fix EEH recovery during reset on PPC + * e1000e: fix EEH recovery during reset on PPC + * pcnet_cs, axnet_cs: clear bogus interrupt before request_irq + * drivers/net/r6040.c: Eliminate double sizeof + * ipg: fix jumbo frame compilation + * ipg: use NULL, not zero, for pointers + * [netdrvr] 3c59x: remove irqs_disabled warning from local_bh_enable + * [netdrvr] netxen: fix netxen_pci_tbl[] breakage + * e100: Do pci_dma_sync after skb_alloc for proper operation on ixp4xx + * e1000: only enable TSO6 via ethtool when using correct hardware + * [netdrvr] Fix IOMMU overflow checking in s2io.c + * qla3xxx: Hold RTNL while calling dev_close() + * Hold RTNL while calling dev_close() + * sata_uli: hardreset is broken + * rt2x00: Fix lock dependency errror + * prism: islpci_eth.c endianness fix + * mac80211: fix an oops in several failure paths in key allocation + * firewire: fw-sbp2: fix parsing of logical unit directories + * kbuild: fix a.out.h export to userspace with O= build. + * Ensure interrupted recovery completed properly (v1 metadata plus + bitmap) + * Don't acknowlege that stripe-expand is complete until it really is. + * Fix error paths if md_probe fails. + * hamradio: remove unused variable + * tcp: calculate tcp_mem based on low memory instead of all memory + * tcp: fix for splice receive when used with software LRO + * af_unix: fix 'poll for write'/connected DGRAM sockets + * netdevice: Fix typo of dev_unicast_add() comment + * pkt_sched: ERR_PTR() ususally encodes an negative errno, not positive. + * pkt_sched: Remove CONFIG_NET_SCH_RR + * include/linux/netdevice.h: don't export MAX_HEADER to userspace + * tcp: /proc/net/tcp rto,ato values not scaled properly (v2) + * netlink: Fix some doc comments in net/netlink/attr.c + * CONNECTOR: add a proc entry to list connectors + * inet fragments: fix race between inet_frag_find and + inet_frag_secret_rebuild + * net/inet_lro: remove setting skb->ip_summed when not LRO-able + * netlabel: Fix a problem when dumping the default IPv6 static labels + * ipv6 route: Convert rt6_device_match() to use RT6_LOOKUP_F_xxx flags. + * sched: fix cpu hotplug + * Fix and clean top .gitignore + * x86: fix cpu hotplug crash + * ptrace GET/SET FPXREGS broken + * Input: add KEY_MEDIA_REPEAT definition + * Input: fix locking in force-feedback core + * [ARM] 5131/1: Annotate platform_secondary_init with trace_hardirqs_off + * ide: fix /proc/ide/ide?/mate reporting + * netfilter: nf_conntrack_tcp: fixing to check the lower bound of valid + ACK + * textsearch: fix Boyer-Moore text search bug + * hostap: don't report useless WDS frames by default + * hostap: fix sparse warnings + * mac80211: don't accept WEP keys other than WEP40 and WEP104 + * V4L/DVB (8145a): USB Video Class driver + * [IA64] Bugfix for system with 32 cpus + * [IA64] export account_system_vtime + * sched: fix divide error when trying to configure rt_period to zero + * x86: fix NODES_SHIFT Kconfig range + * block: Fix the starving writes bug in the anticipatory IO scheduler + * Properly notify block layer of sync writes + * rcu: fix hotplug vs rcu race + * I2C: S3C2410: Check ACK on byte transmission + * I2C: S3C2410: Fixup error codes returned rom a transfer. + * I2C: S3C2410: Add MODULE_ALIAS() for s3c2440 device. + * PCI: Restrict VPD read permission to root + * powerpc/bootwrapper: update for initrd with simpleImage + * i2c: Documentation: fix device matching description + * i2c: Fix bad hint about irqs in i2c.h + * powerpc/legacy_serial: Bail if reg-offset/shift properties are present + * powerpc/mpc5200: Fix lite5200b suspend/resume + * ipv4: fix sysctl documentation of time related values + * net-sched: change tcf_destroy_chain() to clear start of filter list + * net-sched: fix filter destruction in atm/hfsc qdisc destruction + * netlink: Unneeded local variable + * net: Tyop of sk_filter() comment + * netdevice: Fix wrong string handle in kernel command line parsing + * net: fib_rules: fix error code for unsupported families + * dm crypt: use cond_resched + * V4L/DVB (8178): uvc: Fix compilation breakage for the other drivers, if + uvc is selected + * PCI: Limit VPD read/write lengths for Broadcom 5706, 5708, 5709 rev. + * PCI: acpiphp: cleanup notify handler on all root bridges + * drivers/input/ff-core.c needs + * DRM/i915: only use tiled blits on 965+ + * tty: Fix inverted logic in send_break + * x86: fix Intel Mac booting with EFI + * arch/x86/mm/init_64.c: early_memtest(): fix types + * 9p: fix O_APPEND in legacy mode + * slub: Do not use 192 byte sized cache if minimum alignment is 128 byte + * Do not overwrite nr_zones on !NUMA when initialising zlcache_ptr + * [MIPS] IP32: Fix unexpected irq 71 + * [MIPS] IP22: Fix crashes due to wrong L1_CACHE_BYTES + * [MIPS] cevt-txx9: Reset timer counter on initialization + * hrtimer: prevent migration for raising softirq + * svcrpc: fix handling of garbage args + * OHCI: Fix problem if SM501 and another platform driver is selected + * USB: fix cdc-acm resume() + * USB: ehci - fix timer regression + * USB: ohci - record data toggle after unlink + * USB: mass storage: new id for US_SC_CYP_ATACB + * sisusbvga: Fix oops on disconnect. + * USB: New device ID for ftdi_sio driver + * USB: fix interrupt disabling for HCDs with shared interrupt handlers + * USB: don't lose disconnections during suspend + * USB: another option device id + * USB: add a pl2303 device id + * USB: fix Oops on loading ipaq module since 2.6.26 + * USB: adding comment for ipaq forcing number of ports + * [MIPS] Fix bug in atomic_sub_if_positive. + * xen: fix address truncation in pte mfn<->pfn conversion + * sata_sil24: add DID for another adaptec flavor + * ahci: always clear all bits in irq_stat + * libata-sff: improve HSM violation reporting + * sata_mv: safer logic for limit_warnings + * Update maintainers for powerpc + * Christoph has moved + * mm: dirty page accounting vs VM_MIXEDMAP + * rtc: rtc_read_alarm() handles wraparound + * firmware: fix the request_firmware() dummy + * serial: fix serial_match_port() for dynamic major tty-device numbers + * get_user_pages(): fix possible page leak on oom + * rtc-x1205: Fix alarm set + * rtc: fix CMOS time error after writing /proc/acpi/alarm + * pci: VT3336 can't do MSI either + * Miguel Ojeda has moved + * ext3: add missing unlock to error path in ext3_quota_write() + * ext4: add missing unlock to an error path in ext4_quota_write() + * reiserfs: add missing unlock to an error path in reiserfs_quota_write() + * ecryptfs: remove unnecessary mux from ecryptfs_init_ecryptfs_miscdev() + * lib: taint kernel in common report_bug() WARN path. + * gpio: pca953x (i2c) handles max7310 too + * fsl_diu_fb: fix build with CONFIG_PM=y, plus fix some warnings + * Update taskstats-struct document for scaled time accounting + * cciss: fix regression that no device nodes are created if no logical + drives are configured. + * delay accounting: maintainer update + * Doc*/kernel-parameters.txt: fix stale references + * hdaps: add support for various newer Lenovo thinkpads + * mn10300: export certain arch symbols required to build allmodconfig + * mn10300: provide __ucmpdi2() for MN10300 + * Introduce rculist.h + * man-pages is supported + * ntfs: update help text + * add kernel-doc for simple_read_from_buffer and memory_read_from_buffer + * w100fb: do not depend on SHARPSL + * w100fb: add 80 MHz modeline + * MFD maintainer + * cgroups: document the effect of attaching PID 0 to a cgroup + * spi: fix the read path in spidev + * doc: doc maintainers + * security: filesystem capabilities: fix fragile setuid fixup code + * security: filesystem capabilities: fix CAP_SETPCAP handling + * Alpha Linux kernel fails with inconsistent kallsyms data + * cpusets: document proc status cpus and mems allowed lists + * MAINTAINERS: update the email address of Andreas Dilger + * cciss: read config to obtain max outstanding commands per controller + * olpc: sdhci: add quirk for the Marvell CaFe's vdd/powerup issue + * olpc: sdhci: add quirk for the Marvell CaFe's interrupt timeout + * cpumask: introduce new APIs + * mm: switch node meminfo Active & Inactive pages to Kbytes + * Update MAINTAINERS file for the TPM device driver + * devcgroup: fix odd behaviour when writing 'a' to devices.allow + * doc: document the relax_domain_level kernel boot argument + * mmc: don't use DMA on newer ENE controllers + * mempolicy: mask off internal flags for userspace API + * x86 ACPI: normalize segment descriptor register on resume + * x86 ACPI: fix resume from suspend to RAM on uniprocessor x86-64 + * softlockup: print a module list on being stuck + * ide: fix hwif->gendev refcounting + * ide: ide_unregister() warm-plug bugfix + * ide: ide_unregister() locking bugfix + * ahci: give another shot at clearing all bits in irq_stat + * Fix clear_refs_write() use of struct mm_walk + * Move _RET_IP_ and _THIS_IP_ to include/linux/kernel.h + * Fix pagemap_read() use of struct mm_walk + * Linux 2.6.26-rc9 + * Revert "USB: don't explicitly reenable root-hub status interrupts" + * Revert "PCI: Correct last two HP entries in the bfsort whitelist" + * iwlwifi: fix incorrect 5GHz rates reported in monitor mode + * iwlwifi: drop skb silently for Tx request in monitor mode + * libertas: support USB persistence on suspend/resume (resend) + * tcp: net/ipv4/tcp.c needs linux/scatterlist.h + * tcp: fix a size_t < 0 comparison in tcp_read_sock + * bridge: fix use-after-free in br_cleanup_bridges() + * Add missing skb->dev assignment in Frame Relay RX code + * forcedeth: fix lockdep warning on ethtool -s + * ehea: fix might sleep problem + * ehea: add MODULE_DEVICE_TABLE + * ehea: fix race condition + * ehea: Access iph->tot_len with correct endianness + * pasemi_mac: Access iph->tot_len with correct endianness + * ibm_newemac: Fixes kernel crashes when speed of cable connected changes + * ibm_newemac: Fixes entry of short packets + * fs_enet: restore promiscuous and multicast settings in restart() + * can: add sanity checks + * x86: KVM guest: Add memory clobber to hypercalls + * KVM: IOAPIC: Fix level-triggered irq injection hang + * [SCSI] erase invalid data returned by device + * pxamci: fix byte aligned DMA transfers + * vsprintf: split out '%s' handling logic + * vsprintf: split out '%p' handling logic + * vsprintf: add infrastructure support for extended '%p' specifiers + * vsprintf: add support for '%pS' and '%pF' pointer formats + * powerpc: Fix unterminated of_device_id array in legacy_serial.c + * [UML] fix gcc ICEs and unresolved externs + * ocfs2/dlm: Fixes oops in dlm_new_lockres() + * hostap_cs: correct poor NULL checks in suspend/resume routines + * drivers/net/wireless/iwlwifi/iwl-3945.c Fix type issue on 64bit + * mac80211: move netif_carrier_on to after + ieee80211_bss_info_change_notify + * mac80211: Only flush workqueue when last interface was removed + * zd1211rw: add ID for AirTies WUS-201 + * ssb-pcicore: Fix IRQ-vector init on embedded devices + * mac80211: don't report selected IBSS when not found + * crypto: tcrypt - Fix memory leak in test_cipher + * sctp: Mark the tsn as received after all allocations finish + * [S390] protect _PAGE_SPECIAL bit against mprotect + * irda: via-ircc proper dma freeing + * irda: New device ID for nsc-ircc + * irda: Fix netlink error path return value + * [SCSI] mptspi: fix oops in mptspi_dv_renegotiate_work() + * Correct hash flushing from huge_ptep_set_wrprotect() + * ide: add __ide_default_irq() inline helper + * palm_bk3710: fix IDECLK period calculation + * it8213: fix return value in it8213_init_one() + * [MIPS] Atlas, decstation: Fix section mismatches triggered by + defconfigs + * [MIPS] Fix 32bit kernels on R4k with 128 byte cache line size + * NFS: Fix readdir cache invalidation + * SUNRPC: Fix a double-free in rpcbind + * SUNRPC: Fix an rpcbind breakage for the case of IPv6 lookups + * reiserfs: discard prealloc in reiserfs_delete_inode + * Fix broken fix for fsl-diu-db + * RDMA/cxgb3: Fix regression caused by class_device -> device conversion + * ipv6: fix race between ipv6_del_addr and DAD timer + * sctp: Add documentation for sctp sysctl variable + * kernel/printk.c: Made printk_recursion_bug_msg static. + * powerpc: Add missing reference to coherent_dma_mask + * rc80211_pid: Fix fast_start parameter handling + * rt2x00: Disable synchronization during initialization + * zd1211rw: stop beacons on remove_interface + * libertas: fix memory alignment problems on the blackfin + * netfilter: nf_conntrack_tcp: fix endless loop + * netfilter: nf_nat_snmp_basic: fix a range check in NAT for SNMP + * md: ensure all blocks are uptodate or locked when syncing + * sched: fix cpu hotplug + * x86: fix /dev/mem compatibility under PAT + * crypto: chainiv - Invoke completion function + * ocfs2: Fix flags in ocfs2_file_lock + * kernel/kprobes.c: Made kprobe_blacklist static. + * arch/x86/kernel/.gitignore: Added vmlinux.lds to .gitignore file + because it shouldn't be tracked. + * ftrace: Documentation + * Fix PREEMPT_RCU without HOTPLUG_CPU + * sched: fix cpu hotplug, cleanup + * exec: fix stack excutability without PT_GNU_STACK + * slub: Fix use-after-preempt of per-CPU data structure + * Documentation: clarify tcp_{r,w}mem sysctl docs + * ip: sysctl documentation cleanup + * tcp: correct kcalloc usage + * ipv4: fib_trie: Fix lookup error return + * netlabel: netlink_unicast calls kfree_skb on error path by itself + * ipv6: missed namespace context in ipv6_rthdr_rcv + * xfrm: Add a XFRM_STATE_AF_UNSPEC flag to xfrm_usersa_info + * tun: Persistent devices can get stuck in xoff state + * tpm: add Intel TPM TIS device HID + * rapidio: fix device reference counting + * Fix name of Russell King in various comments + * rtc: fix reported IRQ rate for when HPET is enabled + * libata-acpi: filter out DIPM enable + * Added Targa Visionary 1000 IDE adapter to pata_sis.c + * libata-acpi: don't call sleeping function from invalid context + * Fix reference counting race on log buffers + * [SCSI] ipr: Fix HDIO_GET_IDENTITY oops for SATA devices + * IPMI: return correct value from ipmi_write + * x86: fix ldt limit for 64 bit + * [SCSI] fusion: default MSI to disabled for SPI and FC controllers + * [SCSI] bsg: fix oops on remove + * drivers/char/pcmcia/ipwireless/hardware.c fix resource leak + * drivers/isdn/i4l/isdn_common.c fix small resource leak + * fbdev: bugfix for multiprocess defio + * serial8250: sanity check nr_uarts on all paths. + * ov7670: clean up ov7670_read semantics + * rtc-fm3130: fix chip naming + * rtc-pcf8563: add chip id + * OProfile kernel maintainership changes + * frv: fix irqs_disabled() to return an int, not an unsigned long + * cifs: fix inode leak in cifs_get_inode_info_unix + * cifs: fix wksidarr declaration to be big-endian friendly + * cpusets, hotplug, scheduler: fix scheduler domain breakage + * Documentation/HOWTO: correct wrong kernel bugzilla FAQ URL + * devcgroup: always show positive major/minor num + * devcgroup: fix permission check when adding entry to child cgroup + * Linux 2.6.26 + + -- Ben Collins Mon, 14 Jul 2008 13:41:50 -0400 + +linux (2.6.26-3.9) intrepid; urgency=low + + * abi: Add dca and ioatdma to modules.ignore + + [ 2.6.26-3.8 ] + + [ Ben Collins ] + + * ubuntu: Add heci driver 3.2.0.24 + * ubuntu: Add heci to kconfig/kbuild + * config: Enable heci module on all flavours + * dm-bbr: Update to get it to compile with 2.6.26 + * config: Enable dm-bbr + * ubuntu: Add some media drivers + * config: Enable misc media drivers + * udeb: Switch to uvesafb in fb-modules + * abi: Add more modules to ignore (known) + + [ 2.6.26-3.7 ] + + [Amit Kucheria] + + * SAUCE: make fc transport removal of target configurable + - LP: #163075 + * SAUCE: pm: Config option to disable handling of console during + suspend/resume + + [Ben Collins] + + * SAUCE: input/mouse/alps: Do not call psmouse_reset() for alps + * SAUCE: irda: Default to dongle type 9 on IBM hardware + * SAUCE: tulip: Let dmfe handle davicom on non-sparc + * SAUCE: tulip: Define ULI PCI ID's + * SAUCE: version: Implement version_signature proc file. + * build: Cleanup arches + * build: Remove remnants of unused binary-custom infrastructure + * build: Remove disable_d_i (not needed) and cleanup ppa build stuff + * ubuntu: New modules, acer-acpi + * build: Remove -virtual, and rebuild configs + * ubuntu: Add drbd module + * acer-acpi: Fix makefile + * x86/Kconfig: Fix missing quote for ubuntu Kconfig source + * ubuntu: Add iscsitarget module + * ubuntu: Added Amiga FS driver + * ubuntu: Add squashfs driver + * ubuntu: Remove asfs (Amiga FS). Need to be in linux-ports instead + * squashfs: Move headers to real include directory + * build/configs: The Great Config Consistency Check of 2008 + * ubuntu: Move third-party includes to ubuntu/include + * ubuntu: Add aufs module + * ubuntu: Added atl2 driver + * ubuntu: Add dm-radi4-5 driver + * build: Add CONFIG_DEBUG_SECTION_MISMATCH=y to get old style warnings + from build + * ubuntu/Makefile: Fixup dm-raid4-5 and add kludge for kbuild + * squashfs: Fixes for VFS changes + * ubuntu/dm-raid4-5: Fixups for moved/renamed headers/functions in core + md + * ubuntu: Add ndiswrapper driver + * d-i: Update module listings + * build: Disable xd block device (ancient) + * ndiswrapper: Fixup makefile + * d-i: Remove efi-modules. The only module, efivars, is built-in + * build: Remove install-source, obsolete and caused build failure + * Ubuntu-2.6.26-1.3 + * build: linux-doc rules got broken when disabling html side. Fixed now. + * Ubuntu-2.6.26-1.4 + * x86: Update to -rc6 allows CONFIG_PCI_OLPC to work with PCI_GOANY + * d-i: Make virtio-ring optional (it's built-in on i386) + * Ubuntu-2.6.26-1.4 + * Ubuntu-2.6.26-1.5 + * config: Enable DVB devices + * ubuntu/aufs: Make aufs a bool config, since it needs to be built-in + * config: Build aufs into the kernels + * build: Fix arguments passed to link-headers script + * config: Disable early printk + * d-i: Move isofs to storage-core and kill st (scsi tape) from list + * config: Enable non-promiscuous access to /dev/mem + * x86: Add option to disable decompression info messages + * config: Enable no-bz-chatter config options + * build: Re-add linux-source package + * d-i: Re-add socket-modules. Accidentally removed + - LP: #241295 + * Ubuntu-2.6.26-2.6 + * Use makedumpfile to generate a vmcoreinfo file. + * build: Build-Depend on makedumpfile for vmcoreinfo generation + * build: Remove debug print from git-ubuntu-log + * Updated configs for -rc7 + * build: postinst, do not call depmod with -F + * config: Enable rtc-cmos as a built-in driver. + * control: Provide ndiswrapper-modules-1.9 + * build: Generate vmcoreinfo in image build for crashdumps without debug + image + * config: Disable vesafb, since we'll prefer uvesafb + * build: Copy uvesafb module to initrd mod directory + * abi-check: New, more robust script + * config: Enable heap randomization by default + * abi-check: Cleanup output and call with perl (not $SHELL) + * abi: Ignore missing vesafb (known) + * config: Disable pcspkr (in favor of snd-pcsp) + * swap: Add notify_swap_entry_free callback for compcache + * compcache: Added ram backed compressed swap module + * ubuntu: Enable kbuild and kconfig for compcache + * config: Enable compcache and tlsf allocator as modules + * config: Updated for -rc8. Disables XEN on i386 + * config: Switch i386-server to 64G, enable PAE, 64-bit res, and XEN + * ubuntu: Add misc drivers from hardy lum + * ubuntu: Enable build of misc/ subdir + * config: Enable misc drivers + * aufs: Fix warning about single non-string-literal arg to printf style + function + * drivers: Remove some duplicate device entries in various modules + * config: Disable some duplicate drivers + * keyspan: Remove duplicate device ID's + * check-aliases: Cleanup output, and fix rolling checks + * ubuntu: Disable dm-bbr for now + * dm-bbr: First cut at forward portiong. Still needs work. + * ubuntu: Disable dm-bbr in kbuild/kconfig + + [Chuck Short] + + * SAUCE: ata: blacklist FUJITSU MHW2160BH PL + - LP: #175834 + * SAUCE: [USB]: add ASUS LCM to the blacklist + + [Colin Ian King] + + * SAUCE: airprime.c supports more devices + - LP: #208250 + * SAUCE: Enable speedstep for sonoma processors. + - LP: #132271 + * Add dm-loop + * Add dm-loop BOM + + [Kyle McMartin] + + * SAUCE: fix orinoco_cs oops + + [Mario Limonciello] + + * SAUCE: Enable Reset and SCO workaround on Dell 410 BT adapter + + [Matthew Garrett] + + * SAUCE: hostap: send events on data interface as well as master + interface + + [Phillip Lougher] + + * SAUCE: r8169: disable TSO by default for RTL8111/8168B chipsets. + + [Stefan Bader] + + * SAUCE: Export dm_disk function of device-mapper + * SAUCE: Restore VT fonts on switch + * SAUCE: Always use SCO protocol (disable eSCO support) Bug: #39414 + * SAUCE: mmc: Increase power_up deleay to fix TI readers OriginalAuthor: + Pascal Terjan Bug: #137686 + * SAUCE: Add blacklist support to fix Belkin bluetooth dongle. Bug: + #140511 + * SAUCE: Lower warning level of pci resource allocation messages. Bug: + 159241 + * SAUCE: Lower message level for PCI memory and I/O allocation. + - LP: #159241 + * Modify log generation to catch bug numbers when adding with git-am. + + [Tim Gardner] + + * Added the debian directory. Ignore: yes + * Add support for UBUNTUINCLUDE Ignore: yes + * LUM headers go in /usr/src Ignore: yes + * First pass at 2.6.25 configs Ignore: yes + * i386 -generic builds. Ignore: yes + * SAUCE: Increase CONFIG_IDE_MAX_HWIFS to 8 (from 4) + * SAUCE: Add extra headers to linux-libc-dev OriginalAuthor: Soren Hansen + OriginalLocation: + https://lists.ubuntu.com/archives/kernel-team/2007-November/001891.html + * Set CONFIG_DEVKMEM=n Ignore: yes + * Enabled ALSA and CGROUPS for i386 Ignore: yes + * Enabled amd64 configs. Ignore: yes + * CONFIG_STANDALONE=n Ignore: yes + * CONFIG_BLK_DEV_4DRIVES=n for i386 Ignore: yes + * CONFIG: CONFIG_DEFAULT_RELATIME=y for all flavours. Ignore: yes + * Set CONFIG_EDD_OFF=y Ignore: yes + * SAUCE: Blacklist Bluetooth Dell Wireless 370 for SCO MTU + OriginalAuthor: Mario Limonciello Bug: + #209715 + * SAUCE: Catch nonsense keycodes and silently ignore + * SAUCE: frame buffer regression - screen blank except for blinking + cursor after fbcon vtswitch OriginalAuthor: Matthew Garrett + Bug: #201591 + * SAUCE: Added support for HDAPS on various ThinkPads from Lenovo and IBM + OriginalAuthor: Klaus S. Madsen + OriginalAuthor: Chuck Short + * SAUCE: Guest OS does not recognize a lun with non zero target id on + Vmware ESX Server + * SAUCE: orinoco_cs.ko missing + * Set CONFIG_FB_VESA=m for i386/amd64 Ignore: yes + * Set CONFIG_PM_DISABLE_CONSOLE=y for all flavours Ignore: yes + * Thorough review of amd64 -generic config Ignore: yes + * Build PPA packages for Hardy until the Intrepid archive is opened. + * Deleted obsolete flavours Ignore: yes + * Don't build docs for PPA Ignore: yes + * Build all standard packages in PPA. Ignore: yes + * Remove duplicate USB ids + * SAUCE: DVB-USB UMT-010 driver oops on install Bug: #115284 + * Update configs after rebase to 2.6.26-rc1 Ignore: yes + * Update configs after rebase Ignore: yes + * Disable V4L until the build issues get ironed out. Ignore: yes + * Update configs after rebase. Ignore: yes + * Another device enable pass Ignore: yes + * Update configs after merge. Ignore: yes + * SAUCE: fn key doesn't work in hardy with macbook pro fourth generation + (4,1) + - LP: #207127 + * Enabled CONFIG_CIFS_DFS_UPCALL=y and CONFIG_CIFS_UPCALL=y + - LP: #236830 + + [Upstream Kernel Changes] + + * Revert "[WATCHDOG] hpwdt: Add CFLAGS to get driver working" + * mac80211: detect driver tx bugs + * hwmon: (lm85) Fix function RANGE_TO_REG() + * hwmon: (adt7473) Initialize max_duty_at_overheat before use + * hwmon: Update the sysfs interface documentation + * hwmon: (abituguru3) Identify Abit AW8D board as such + * hwmon: (w83791d) new maintainer + * hwmon: (abituguru3) update driver detection + * hwmon: (lm75) sensor reading bugfix + * ipv6: Remove options header when setsockopt's optlen is 0 + * ipv6: Drop packets for loopback address from outside of the box. + * sched: rt: dont stop the period timer when there are tasks wanting to + run + * sched: fix wait_for_completion_timeout() spurious failure under heavy + load + * x86: fix NULL pointer deref in __switch_to + * xen: Use wmb instead of rmb in xen_evtchn_do_upcall(). + * xen: mask unwanted pte bits in __supported_pte_mask + * xen: don't drop NX bit + * sched: refactor wait_for_completion_timeout() + * Ext4: Fix online resize block group descriptor corruption + * [IA64] SN2: security hole in sn2_ptc_proc_write + * alpha: fix module load failures on smp (bug #10926) + * alpha: link failure fix + * alpha: fix compile failures with gcc-4.3 (bug #10438) + * alpha: resurrect Cypress IDE quirk + * pppoe: warning fix + * sctp: Make sure N * sizeof(union sctp_addr) does not overflow. + * netns: Don't receive new packets in a dead network namespace. + * Add return value to reserve_bootmem_node() + * Slab: Fix memory leak in fallback_alloc() + * Fix performance regression on lmbench select benchmark + * ALSA: aw2 - Fix Oops at initialization + * ALSA: sb - Fix wrong assertions + * futexes: fix fault handling in futex_lock_pi + * IB/mthca: Clear ICM pages before handing to FW + * tty_driver: Update required method documentation + * removed unused var real_tty on n_tty_ioctl() + * Fix ZERO_PAGE breakage with vmware + * mm: fix race in COW logic + * NFS: Reduce the NFS mount code stack usage. + * NFS: Fix filehandle size comparisons in the mount code + * NFS: nfs_updatepage(): don't mark page as dirty if an error occurred + * alpha: fix compile error in arch/alpha/mm/init.c + * KVM: Fix race between timer migration and vcpu migration + * KVM: close timer injection race window in __vcpu_run + * KVM: MMU: Fix rmap_write_protect() hugepage iteration bug + * KVM: MMU: large page update_pte issue with non-PAE 32-bit guests + (resend) + * KVM: MMU: Fix oops on guest userspace access to guest pagetable + * KVM: ioapic: fix lost interrupt when changing a device's irq + * KVM: VMX: Fix host msr corruption with preemption enabled + * [GFS2] BUG: unable to handle kernel paging request at ffff81002690e000 + * xen: remove support for non-PAE 32-bit + * kgdb: documentation update - remove kgdboe + * kgdb: sparse fix + * [IA64] Fix boot failure on ia64/sn2 + * [IA64] Handle count==0 in sn2_ptc_proc_write() + * [IA64] Eliminate NULL test after alloc_bootmem in iosapic_alloc_rte() + * [GFS2] fix gfs2 block allocation (cleaned up) + * x86: Add structs and functions for paravirt clocksource + * x86: Make xen use the paravirt clocksource structs and functions + * KVM: Make kvm host use the paravirt clocksource structs + * x86: KVM guest: Use the paravirt clocksource structs and functions + * KVM: Remove now unused structs from kvm_para.h + * enable bus mastering on i915 at resume time + * Linux 2.6.26-rc8 + * # Ubuntu external driver commit. + * # Ubuntu commit template. + + -- Ben Collins Sat, 21 Jun 2008 09:05:15 -0400 + +linux (2.6.26-2.6) intrepid; urgency=low + + [Ben Collins] + + * Revert "SAUCE: Export symbols for aufs (in lum) (not needed) + * config: Enable DVB devices + * ubuntu/aufs: Make aufs a bool config, since it needs to be built-in + * config: Build aufs into the kernels + * build: Fix arguments passed to link-headers script + * config: Disable early printk + * d-i: Move isofs to storage-core and kill st (scsi tape) from list + * config: Enable non-promiscuous access to /dev/mem + * x86: Add option to disable decompression info messages + * config: Enable no-bz-chatter config options + * build: Re-add linux-source package + * d-i: Re-add socket-modules. Accidentally removed + - LP: #241295 + + [Colin Ian King] + + * Add dm-loop + + [Tim Gardner] + + * Revert "SAUCE: USB bluetooth device 0x0e5e:0x6622 floods errors to + syslog (merged upstream) + + -- Ben Collins Mon, 16 Jun 2008 10:56:01 -0400 + +linux (2.6.26-1.5) intrepid; urgency=low + + * d-i: Make virtio-ring optional (it's built-in on i386) + * Rebased on 2.6.26-rc6 + + [Ubuntu-2.6.26-1.4 Changes below] + + * build: linux-doc rules got broken when disabling html side. Fixed now. + + [Ubuntu-2.6.26-1.3 Changes below] + + * build: Remove install-source, obsolete and caused build failure + + [Ubuntu-2.6.26-1.2 Changes below] + + * Remove efi-modules from d-i module list (efivars is built-in). Caused a + build failure. + * Patch to arch/x86/xen/time.c to remove __divdi3 usage (build failure on + i386). + + [Ubuntu-2.6.26-1.1 Changes below] + + [Amit Kucheria] + + * SAUCE: make fc transport removal of target configurable + * SAUCE: Add AGP support for Radeon Mobility 9000 chipset + * SAUCE: pm: Config option to disable handling of console during + suspend/resume + + [Ben Collins] + + * SAUCE: input/mouse/alps: Do not call psmouse_reset() for alps + * SAUCE: irda: Default to dongle type 9 on IBM hardware + * SAUCE: tulip: Let dmfe handle davicom on non-sparc + * SAUCE: tulip: Define ULI PCI ID's + * SAUCE: version: Implement version_signature proc file. + * build: Remove remnants of unused binary-custom infrastructure + * mmc_block: Fix bad allocation on 64-bit (zero len array) + * ubuntu: New modules, acer-acpi + * build: Remove -virtual, and rebuild configs + * ubuntu: Add drbd module + * ubuntu: Add iscsitarget module + * ubuntu: Add squashfs driver + * build/configs: The Great Config Consistency Check of 2008 + * ubuntu: Add aufs module + * ubuntu: Added atl2 driver + * ubuntu: Add dm-radi4-5 driver + * build: Add CONFIG_DEBUG_SECTION_MISMATCH=y to get old style warnings + from build + * squashfs: Fixes for VFS changes + * ubuntu/dm-raid4-5: Fixups for moved/renamed headers/functions in core + md + * ubuntu: Add ndiswrapper driver + * d-i: Update module listings + + [Chuck Short] + + * SAUCE: ata: blacklist FUJITSU MHW2160BH PL + * SAUCE: [USB]: add ASUS LCM to the blacklist + + [Colin Ian King] + + * SAUCE: Enable speedstep for sonoma processors. + * SAUCE: airprime.c supports more devices + + [Kyle McMartin] + + * SAUCE: fix orinoco_cs oops + + [Mario Limonciello] + + * SAUCE: Enable Reset and SCO workaround on Dell 410 BT adapter + + [Matthew Garrett] + + * SAUCE: hostap: send events on data interface as well as master + interface + + [Phillip Lougher] + + * SAUCE: r8169: disable TSO by default for RTL8111/8168B chipsets. + + [Stefan Bader] + + * SAUCE: Export dm_disk function of device-mapper + * SAUCE: Restore VT fonts on switch + * SAUCE: Always use SCO protocol (disable eSCO support) Bug: #39414 + * SAUCE: mmc: Increase power_up deleay to fix TI readers + * SAUCE: Add blacklist support to fix Belkin bluetooth dongle. + * SAUCE: Lower warning level of pci resource allocation messages. + * SAUCE: Lower message level for PCI memory and I/O allocation. + - LP: #159241 + * Modify log generation to catch bug numbers when adding with git-am. + + [Tim Gardner] + + * SAUCE: hdaps module does not load on Thinkpad T61P + * SAUCE: Add extra headers to linux-libc-dev + * SAUCE: Export symbols for aufs (in lum). + * SAUCE: USB bluetooth device 0x0e5e:0x6622 floods errors to syslog + * SAUCE: Blacklist Bluetooth Dell Wireless 370 for SCO MTU + * SAUCE: Catch nonsense keycodes and silently ignore + * SAUCE: frame buffer regression - screen blank except for blinking + cursor after fbcon vtswitch + * SAUCE: Added support for HDAPS on various ThinkPads from Lenovo and IBM + * SAUCE: Guest OS does not recognize a lun with non zero target id on + Vmware ESX Server + * SAUCE: Modualrize vesafb + * SAUCE: DVB-USB UMT-010 driver oops on install + * SAUCE: fn key doesn't work in hardy with macbook pro fourth generation + (4,1) + - LP: #207127 + + -- Ben Collins Wed, 11 Jun 2008 05:28:35 -0400 --- linux-raspi2-4.2.0.orig/debian.master/config/amd64/config.common.amd64 +++ linux-raspi2-4.2.0/debian.master/config/amd64/config.common.amd64 @@ -0,0 +1,151 @@ +# +# Config options for config.common.amd64 automatically generated by splitconfig.pl +# +CONFIG_64BIT=y +CONFIG_AC97_BUS=m +# CONFIG_ACPI_REDUCED_HARDWARE_ONLY is not set +CONFIG_ARCH_DEFCONFIG="arch/x86/configs/x86_64_defconfig" +CONFIG_ARCH_DMA_ADDR_T_64BIT=y +CONFIG_ARCH_HWEIGHT_CFLAGS="-fcall-saved-rdi -fcall-saved-rsi -fcall-saved-rdx -fcall-saved-rcx -fcall-saved-r8 -fcall-saved-r9 -fcall-saved-r10 -fcall-saved-r11" +# CONFIG_ARCH_NEEDS_CPU_IDLE_COUPLED is not set +CONFIG_ARCH_PHYS_ADDR_T_64BIT=y +CONFIG_ARCH_RANDOM=y +CONFIG_ARCH_SELECT_MEMORY_MODEL=y +CONFIG_ARCH_SPARSEMEM_DEFAULT=y +CONFIG_ATA_GENERIC=y +# CONFIG_ATA_NONSTANDARD is not set +CONFIG_ATA_PIIX=y +# CONFIG_AUDIT_ARCH_COMPAT_GENERIC is not set +CONFIG_BCH=m +CONFIG_CC_STACKPROTECTOR=y +CONFIG_CRASH_DUMP=y +# CONFIG_CXL_BASE is not set +# CONFIG_CXL_EEH is not set +# CONFIG_CXL_KERNEL_API is not set +CONFIG_DEFAULT_MMAP_MIN_ADDR=65536 +CONFIG_DMA_VIRTUAL_CHANNELS=m +# CONFIG_EM_TIMER_STI is not set +CONFIG_FB_ATY128=m +CONFIG_FB_BOOT_VESA_SUPPORT=y +# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set +# CONFIG_FB_MACMODES is not set +CONFIG_FB_SYS_COPYAREA=m +CONFIG_FB_SYS_FILLRECT=m +CONFIG_FB_SYS_FOPS=m +CONFIG_FB_SYS_IMAGEBLIT=m +CONFIG_FB_UDL=m +CONFIG_FB_VOODOO1=m +# CONFIG_FONTS is not set +CONFIG_FRAME_WARN=1024 +CONFIG_GPIO_GENERIC=m +CONFIG_GPIO_GENERIC_PLATFORM=m +CONFIG_GPIO_TWL4030=m +CONFIG_GPIO_TWL6040=m +# CONFIG_HAVE_64BIT_ALIGNED_ACCESS is not set +# CONFIG_HAVE_AOUT is not set +# CONFIG_HAVE_ARCH_BITREVERSE is not set +CONFIG_HAVE_BOOTMEM_INFO_NODE=y +# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set +CONFIG_HAVE_SETUP_PER_CPU_AREA=y +CONFIG_HIBERNATION=y +CONFIG_HOTPLUG_PCI_PCIE=y +CONFIG_HOTPLUG_PCI_SHPC=m +CONFIG_HPET=y +CONFIG_HUGETLB_PAGE=y +# CONFIG_I2C_SLAVE is not set +CONFIG_ILLEGAL_POINTER_VALUE=0xdead000000000000 +CONFIG_IMA=y +CONFIG_IPMI_SI_PROBE_DEFAULTS=y +CONFIG_JUMP_LABEL=y +CONFIG_KVM=m +CONFIG_LEDS_TRIGGER_HEARTBEAT=m +CONFIG_LOG_BUF_SHIFT=18 +CONFIG_MFD_SM501=m +# CONFIG_MFD_TMIO is not set +CONFIG_MII=m +CONFIG_MMC_BLOCK=m +CONFIG_MMC_SDHCI=m +CONFIG_MMC_SDHCI_PLTFM=m +CONFIG_MTD=m +CONFIG_MTD_BLKDEVS=m +CONFIG_MTD_BLOCK=m +CONFIG_MTD_CMDLINE_PARTS=m +CONFIG_MTD_NAND=m +CONFIG_MTD_NAND_BCH=m +CONFIG_MTD_NAND_ECC=m +CONFIG_MTD_NAND_IDS=m +# CONFIG_MTD_NAND_OMAP_BCH_BUILD is not set +CONFIG_NEED_DMA_MAP_STATE=y +CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK=y +CONFIG_NODES_SHIFT=6 +CONFIG_NR_CPUS=256 +CONFIG_NUMA=y +CONFIG_NVRAM=m +# CONFIG_OF is not set +CONFIG_OUTPUT_FORMAT="elf64-x86-64" +CONFIG_PATA_SIS=y +CONFIG_PCCARD=m +CONFIG_PGTABLE_LEVELS=4 +CONFIG_PHYSICAL_ALIGN=0x1000000 +CONFIG_PHYSICAL_START=0x1000000 +CONFIG_PHYS_ADDR_T_64BIT=y +# CONFIG_PHY_EXYNOS5250_USB2 is not set +CONFIG_PPS=m +CONFIG_PROBE_EVENTS=y +# CONFIG_PSTORE_CONSOLE is not set +CONFIG_PSTORE_RAM=m +CONFIG_PTP_1588_CLOCK=m +CONFIG_RANDOMIZE_BASE_MAX_OFFSET=0x40000000 +CONFIG_RCU_CPU_STALL_TIMEOUT=60 +CONFIG_RCU_NOCB_CPU=y +CONFIG_REED_SOLOMON=m +CONFIG_REGULATOR_FIXED_VOLTAGE=m +CONFIG_REGULATOR_TWL4030=m +CONFIG_RTC_DRV_CMOS=y +CONFIG_RTC_DRV_DS3232=m +CONFIG_RTC_DRV_PCF8523=m +CONFIG_RTC_DRV_TWL4030=m +CONFIG_SATA_AHCI_PLATFORM=m +CONFIG_SATA_SVW=m +CONFIG_SCHED_SMT=y +CONFIG_SCSI_SRP_ATTRS=m +CONFIG_SENSORS_SCH56XX_COMMON=m +CONFIG_SERIAL_8250_DW=m +# CONFIG_SH_TIMER_CMT is not set +# CONFIG_SH_TIMER_MTU2 is not set +# CONFIG_SH_TIMER_TMU is not set +CONFIG_SND=m +CONFIG_SND_COMPRESS_OFFLOAD=m +CONFIG_SND_DMAENGINE_PCM=m +# CONFIG_SND_OPL4_LIB_SEQ is not set +CONFIG_SND_PCM=m +# CONFIG_SND_SBAWE_SEQ is not set +CONFIG_SND_SOC=m +CONFIG_SND_SOC_FSL_SSI=m +CONFIG_SND_SOC_HDMI_CODEC=m +CONFIG_SND_SOC_I2C_AND_SPI=m +CONFIG_SND_SOC_IMX_AUDMUX=m +# CONFIG_SND_SOC_RT5677_SPI is not set +CONFIG_SND_SOC_SGTL5000=m +CONFIG_SND_TIMER=m +CONFIG_SOUND=m +CONFIG_SPI_PXA2XX_PCI=m +# CONFIG_STANDALONE is not set +CONFIG_SYS_HYPERVISOR=y +CONFIG_TIGON3=m +CONFIG_TI_CPSW_ALE=m +CONFIG_UPROBES=y +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_VFIO_IOMMU_TYPE1=m +# CONFIG_VM86 is not set +CONFIG_X86_MINIMUM_CPU_FAMILY=64 +CONFIG_X86_SPEEDSTEP_LIB=m +CONFIG_XEN=y +CONFIG_XEN_BALLOON_MEMORY_HOTPLUG_LIMIT=512 +CONFIG_XEN_MAX_DOMAIN_MEMORY=500 --- linux-raspi2-4.2.0.orig/debian.master/config/amd64/config.flavour.generic +++ linux-raspi2-4.2.0/debian.master/config/amd64/config.flavour.generic @@ -0,0 +1,9 @@ +# +# 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_PREEMPT is not set +CONFIG_PREEMPT_VOLUNTARY=y --- linux-raspi2-4.2.0.orig/debian.master/config/amd64/config.flavour.lowlatency +++ linux-raspi2-4.2.0/debian.master/config/amd64/config.flavour.lowlatency @@ -0,0 +1,9 @@ +# +# 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_PREEMPT=y +# CONFIG_PREEMPT_VOLUNTARY is not set --- linux-raspi2-4.2.0.orig/debian.master/config/annotations +++ linux-raspi2-4.2.0/debian.master/config/annotations @@ -0,0 +1,4444 @@ +# Menu: HEADER +# ARCH: x86 arm powerpc + +# not a thing +#CONFIG_USB_OHCI_HCD_PLATFORM - flag +#CONFIG_USB_EHCI_HCD_PLATFORM - flag +#CONFIG_USB_OHCI_HCD_PPC_OF_LE - flag + +#CONFIG_64BIT - flag + +# Overall defaults +set +all !flag EXPERIMENTAL !flag IGNORE !flag DEPRECATED ?type tristate = m + +# Mark debugging symbols. +# default all debug symbols off +set +pattern '(^|_)DEBUG(_|$)' ?type bool = n flag +set +pattern '(^|_)DEBUG(_|$)' ?type tristate = n flag +# exceptions +CONFIG_DEBUG_FS y note +CONFIG_DEBUG_KERNEL y note +CONFIG_SLUB_DEBUG y +CONFIG_SCHED_DEBUG y + +# Menu: ROOT +CONFIG_RELOCATABLE p policy<{'amd64': 'y', 'i386': 'y', 'powerpc-powerpc64-emb': 'y', 'powerpc-powerpc64-smp': 'y', 'ppc64el': 'y'}> + +# Menu: Advanced setup >> Architecture: powerpc + +# Menu: Advanced setup >> Prompt for advanced kernel configuration options + +# Menu: Advanced setup >> Prompt for advanced kernel configuration options >> Architecture: powerpc +CONFIG_LOWMEM_CAM_NUM D +CONFIG_ADVANCED_OPTIONS n + +# Menu: Architecture: arm +CONFIG_ARM_DMA_IOMMU_ALIGNMENT 8 +CONFIG_ARM_PATCH_PHYS_VIRT y + +# Menu: Architecture: powerpc +CONFIG_PPC64 p policy<{'powerpc-powerpc64-emb': 'y', 'powerpc-powerpc64-smp': 'y', 'powerpc-powerpc-e500mc': 'n', 'powerpc-powerpc-smp': 'n', 'ppc64el': 'y'}> +CONFIG_NR_IRQS p policy<{'powerpc': '512', 'ppc64el': '512'}> +CONFIG_SCOM_DEBUGFS p policy<{'powerpc-powerpc64-smp': 'y', 'ppc64el': 'y'}> + +# Menu: Architecture: x86 +CONFIG_64BIT ? + +# Menu: Boot options +# +CONFIG_KEXEC y +CONFIG_CRASH_DUMP p mark policy<{'powerpc-powerpc-smp': 'n', 'powerpc-powerpc-e500mc': 'n', 'arm64': '-', '*': 'y'}> note +CONFIG_CMDLINE p policy<{'arm64': '"console=ttyAMA0"', 'armhf': '""'}> + +# Menu: Boot options >> Architecture: arm +CONFIG_USE_OF p policy<{'armhf': 'y'}> +CONFIG_ATAGS p policy<{'armhf': 'y'}> +CONFIG_DEPRECATED_PARAM_STRUCT p policy<{'armhf': 'n'}> +CONFIG_ARM_ATAG_DTB_COMPAT p policy<{'armhf': 'y'}> +CONFIG_ARM_APPENDED_DTB p policy<{'armhf': 'y'}> +CONFIG_ARM_ATAG_DTB_COMPAT p policy<{'armhf-generic': 'y', 'armhf-generic-lpae': 'n'}> mark +CONFIG_ATAGS_PROC p policy<{'armhf': 'y'}> +CONFIG_AUTO_ZRELADDR p policy<{'armhf': 'y'}> + +# Menu: Boot options >> Include SD/MMC loader in zImage (EXPERIMENTAL) >> Architecture: arm + +# Menu: Boot options >> Kernel command line type +CONFIG_CMDLINE_FORCE n +CONFIG_CMDLINE_FORCE p policy<{'arm64': 'n'}> + +# Menu: Boot options >> Kernel command line type >> Architecture: arm +CONFIG_ARM_ATAG_DTB_COMPAT_CMDLINE_EXTEND p policy<{'armhf': 'y'}> + +# Menu: Bus options (PCI etc.) +CONFIG_ISA p policy<(arch i386 &/ value y) | value n> + +# Menu: Bus options (PCI etc.) >> Architecture: arm + +# Menu: Bus options (PCI etc.) >> Architecture: powerpc +CONFIG_FSL_LBC y + +# Menu: Bus options (PCI etc.) >> Architecture: x86 +CONFIG_ISA_DMA_API y +CONFIG_X86_SYSFB y +CONFIG_ALIX y +CONFIG_NET5501 y +CONFIG_GEOS y +CONFIG_X86_SYSFB n mark + +# Menu: Bus options (PCI etc.) >> EISA support +CONFIG_EISA_VLB_PRIMING y +CONFIG_EISA_PCI_EISA D +CONFIG_EISA_VIRTUAL_ROOT D +CONFIG_EISA_NAMES D + +# Menu: Bus options (PCI etc.) >> EISA support >> Architecture: x86 +CONFIG_EISA y + +# Menu: Bus options (PCI etc.) >> PCCard (PCMCIA/CardBus) support +CONFIG_PCCARD p policy<(arch armel armhf ppc64el &/ value n) | value m> note +CONFIG_CARDBUS y + +# Menu: Bus options (PCI etc.) >> PCCard (PCMCIA/CardBus) support >> 16-bit PCMCIA support +CONFIG_PCMCIA_LOAD_CIS y + +# Menu: Bus options (PCI etc.) >> PCCard (PCMCIA/CardBus) support >> CardBus yenta-compatible bridge support +CONFIG_YENTA_O2 y +CONFIG_YENTA_RICOH y +CONFIG_YENTA_TI y +CONFIG_YENTA_ENE_TUNE y +CONFIG_YENTA_TOSHIBA y + +# Menu: Bus options (PCI etc.) >> PCI support +#set +tree-menu 'Bus options (PCI etc.)>>PCI support' !flag EXPERIMENTAL ?type bool = D +CONFIG_PCI y +CONFIG_PCI_MSI y +CONFIG_PCI_REALLOC_ENABLE_AUTO y +CONFIG_HT_IRQ y +CONFIG_PCI_IOV y +CONFIG_PCI_PRI y +CONFIG_PCI_PASID y + +# Menu: Bus options (PCI etc.) >> PCI support >> Architecture: x86 +CONFIG_PCI_MMCONFIG y +CONFIG_PCI_CNB20LE_QUIRK n + +# Menu: Bus options (PCI etc.) >> PCI support >> PCI Express Port Bus support +CONFIG_PCIEPORTBUS y +CONFIG_PCIEAER y +CONFIG_PCIE_ECRC n +CONFIG_PCIEASPM y +CONFIG_PCIEASPM_DEBUG y note +CONFIG_HOTPLUG_PCI_PCIE p mark policy<{'ppc64el': 'n', 'armhf': '-', '*': 'y'}> note +CONFIG_PCIEAER_INJECT n flag + +# Menu: Bus options (PCI etc.) >> PCI support >> PCI Express Port Bus support >> Default ASPM policy +CONFIG_PCIEASPM_DEFAULT y note + +# Menu: Bus options (PCI etc.) >> PCI support >> PCI access mode >> Architecture: x86 +CONFIG_PCI_GOANY y + +# Menu: Bus options (PCI etc.) >> PCI support >> PCI host controller drivers +CONFIG_PCI_DRA7XX p policy<{'armhf': 'y'}> +CONFIG_PCI_MVEBU p policy<{'armhf': 'y'}> +CONFIG_PCI_EXYNOS p policy<{'armhf': 'y'}> +CONFIG_PCI_IMX6 p policy<{'armhf-generic': 'y'}> +CONFIG_PCI_TEGRA p policy<{'armhf-generic': 'y'}> +CONFIG_PCI_RCAR_GEN2 p policy<{'armhf': 'y'}> +CONFIG_PCI_RCAR_GEN2_PCIE p policy<{'armhf': 'y'}> +CONFIG_PCI_HOST_GENERIC p policy<{'armhf': 'y'}> +CONFIG_PCI_XGENE p policy<{'arm64': 'y'}> +CONFIG_PCI_LAYERSCAPE p policy<{'armhf': 'n'}> + +# Menu: Bus options (PCI etc.) >> PCI support >> RapidIO support +CONFIG_RAPIDIO y +CONFIG_RAPIDIO_DISC_TIMEOUT 30 +CONFIG_RAPIDIO_ENABLE_RX_TX_PORTS n +CONFIG_RAPIDIO_DMA_ENGINE y + +# Menu: Bus options (PCI etc.) >> PCI support >> RapidIO support >> Architecture: powerpc +CONFIG_FSL_RIO y + +# Menu: Bus options (PCI etc.) >> PCI support >> RapidIO support >> Enumeration method + +# Menu: Bus options (PCI etc.) >> PCI support >> RapidIO support >> RapidIO Switch drivers + +# Menu: Bus options (PCI etc.) >> PCI support >> Support for PCI Hotplug +CONFIG_HOTPLUG_PCI y +CONFIG_HOTPLUG_PCI_ACPI y +CONFIG_HOTPLUG_PCI_CPCI y +CONFIG_HOTPLUG_PCI_COMPAQ_NVRAM y +CONFIG_HOTPLUG_PCI_SHPC p policy<{'amd64': 'm', 'arm64': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'n'}> note + +# Menu: Cryptographic API +set +tree-menu 'Cryptographic API' ?flag EXPERIMENTAL ?type bool = n +set +tree-menu 'Cryptographic API' ?flag EXPERIMENTAL ?type tristate = n +set +tree-menu 'Cryptographic API' !flag EXPERIMENTAL ?type tristate = m +CONFIG_CRYPTO y mark +CONFIG_CRYPTO_MANAGER y note +CONFIG_CRYPTO_MANAGER_DISABLE_TESTS y flag +CONFIG_CRYPTO_TEST m flag +CONFIG_CRYPTO_CBC y note +CONFIG_CRYPTO_ECB y note +CONFIG_CRYPTO_HMAC y note +CONFIG_CRYPTO_CRC32C y note +CONFIG_CRYPTO_CRC32C_INTEL y note +CONFIG_CRYPTO_CRCT10DIF y note +CONFIG_CRYPTO_MD5 y note +CONFIG_CRYPTO_SHA1 y note +CONFIG_CRYPTO_SHA256 y note +CONFIG_CRYPTO_SHA512 y note +CONFIG_CRYPTO_AES y note +CONFIG_CRYPTO_LZO y note + +# Menu: Cryptographic API >> Asymmetric (public-key cryptographic) key type +CONFIG_ASYMMETRIC_KEY_TYPE y note +CONFIG_ASYMMETRIC_PUBLIC_KEY_SUBTYPE y note +CONFIG_PUBLIC_KEY_ALGO_RSA y note +CONFIG_X509_CERTIFICATE_PARSER y note + +# Menu: Cryptographic API >> Hardware crypto devices +#CONFIG_CRYPTO_DEV_NX_COMPRESS y note +CONFIG_CRYPTO_HW y +CONFIG_CRYPTO_DEV_PADLOCK y note +CONFIG_CRYPTO_DEV_HIFN_795X_RNG y +CONFIG_CRYPTO_DEV_CCP y +CONFIG_CRYPTO_DEV_NX y + +# Menu: Cryptographic API >> Hardware crypto devices >> Freescale CAAM Job Ring driver backend +CONFIG_CRYPTO_DEV_FSL_CAAM_RINGSIZE D +CONFIG_CRYPTO_DEV_FSL_CAAM_INTC y +CONFIG_CRYPTO_DEV_FSL_CAAM_INTC_COUNT_THLD D +CONFIG_CRYPTO_DEV_FSL_CAAM_INTC_TIME_THLD D + +# Menu: Cryptographic API >> NIST SP800-90A DRBG +CONFIG_CRYPTO_DRBG_HMAC y +CONFIG_CRYPTO_DRBG_HASH y +CONFIG_CRYPTO_DRBG_CTR y + +# Menu: Device Drivers +CONFIG_POWER_AVS y +CONFIG_RESET_CONTROLLER y +CONFIG_TEGRA_AHB p policy<{'arm64': 'y', 'armhf': 'y'}> + +# Menu: Device Drivers >> ATA/ATAPI/MFM/RLL support (DEPRECATED) +set +tree 'Device Drivers>>ATA/ATAPI/MFM/RLL support (DEPRECATED)' = n +# +#CONFIG_IDE_GD y +#CONFIG_IDE_GD_ATA y +#CONFIG_BLK_DEV_IDECD y +#CONFIG_IDEPCI_PCIBUS_ORDER y +#CONFIG_BLK_DEV_GENERIC y +#CONFIG_BLK_DEV_AMD74XX y +#CONFIG_IDE_PROC_FS y +CONFIG_IDE n + +# Menu: Device Drivers >> ATA/ATAPI/MFM/RLL support (DEPRECATED) >> IDE Mode for AMD Alchemy Au1200 + +# Menu: Device Drivers >> Accessibility support +CONFIG_ACCESSIBILITY n mark + +# Menu: Device Drivers >> Android +CONFIG_ANDROID n + +# Menu: Device Drivers >> Auxiliary Display support +CONFIG_AUXDISPLAY y +CONFIG_KS0108_DELAY 2 +CONFIG_CFAG12864B_RATE 20 + +# Menu: Device Drivers >> Block devices +set +tree-menu 'Device Drivers>>Block devices' ?flag EXPERIMENTAL ?type bool = n +set +tree-menu 'Device Drivers>>Block devices' ?flag EXPERIMENTAL ?type tristate = n +set +tree-menu 'Device Drivers>>Block devices' !flag EXPERIMENTAL ?type tristate = m +# +CONFIG_BLK_DEV y +CONFIG_CISS_SCSI_TAPE y +CONFIG_BLK_DEV_UMEM m note +CONFIG_BLK_DEV_LOOP y note +CONFIG_BLK_DEV_LOOP_MIN_COUNT 8 +CONFIG_DRBD_FAULT_INJECTION n +CONFIG_CDROM_PKTCDVD_BUFFERS 8 +CONFIG_CDROM_PKTCDVD_WCACHE n mark +CONFIG_XEN_BLKDEV_FRONTEND y note +CONFIG_VIRTIO_BLK y note +CONFIG_BLK_DEV_HD n note mark +CONFIG_BLK_DEV_RBD m note +CONFIG_MG_DISK_RES 0 +CONFIG_ZRAM_LZ4_COMPRESS y + +# Menu: Device Drivers >> Block devices >> Parallel port IDE device support +CONFIG_PARIDE_EPATC8 y + +# Menu: Device Drivers >> Block devices >> RAM block device support +CONFIG_BLK_DEV_RAM y note +CONFIG_BLK_DEV_RAM_COUNT 16 +CONFIG_BLK_DEV_RAM_SIZE 65536 mark note mark +CONFIG_BLK_DEV_XIP n note + +# Menu: Device Drivers >> Block devices >> Support for DASD devices + +# Menu: Device Drivers >> Broadcom specific AMBA +CONFIG_BCMA_HOST_PCI y + +# Menu: Device Drivers >> Broadcom specific AMBA >> BCMA support +CONFIG_BCMA_HOST_SOC y +CONFIG_BCMA_DRIVER_GMAC_CMN y +CONFIG_BCMA_DRIVER_GPIO y + +# Menu: Device Drivers >> Bus devices +CONFIG_VEXPRESS_CONFIG y +CONFIG_BRCMSTB_GISB_ARB y +CONFIG_IMX_WEIM y +CONFIG_OMAP_INTERCONNECT y note +CONFIG_ARM_CCI y +CONFIG_ARM_CCN y + +# Menu: Device Drivers >> Character devices +# +set +tree 'Device Drivers>>Character devices' ?flag EXPERIMENTAL ?type bool = n +set +tree 'Device Drivers>>Character devices' ?flag EXPERIMENTAL ?type tristate = n +set +tree 'Device Drivers>>Character devices' !flag EXPERIMENTAL ?type tristate = m +# +CONFIG_DEVKMEM n mark mark note +CONFIG_TTY_PRINTK y +CONFIG_LP_CONSOLE n +CONFIG_HVC_XEN y +CONFIG_HVC_XEN_FRONTEND y +CONFIG_NVRAM p mark policy<{'amd64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc-powerpc-e500mc': 'y', 'powerpc-powerpc-smp': 'y'}> note +CONFIG_MAX_RAW_DEVS 256 +CONFIG_HPET y +CONFIG_HPET_MMAP y +CONFIG_HPET_MMAP_DEFAULT y +CONFIG_HVC_DCC n +CONFIG_VIRTIO_CONSOLE y +CONFIG_HVC_UDBG y +CONFIG_HVC_CONSOLE y +CONFIG_HVC_OLD_HVSI y +CONFIG_HVC_OPAL y +CONFIG_HVC_RTAS y + +# Menu: Device Drivers >> Character devices >> Enable TTY +CONFIG_TTY y +CONFIG_VT y +CONFIG_CONSOLE_TRANSLATIONS y +CONFIG_VT_CONSOLE y +CONFIG_VT_HW_CONSOLE_BINDING y +CONFIG_UNIX98_PTYS y +CONFIG_DEVPTS_MULTIPLE_INSTANCES y +CONFIG_LEGACY_PTYS y +CONFIG_LEGACY_PTY_COUNT 0 +CONFIG_PPC_EPAPR_HV_BYTECHAN n +CONFIG_N_GSM m note + +# Menu: Device Drivers >> Character devices >> Enable TTY >> Non-standard serial port support +CONFIG_SERIAL_NONSTANDARD y +CONFIG_CYZ_INTR n + +# Menu: Device Drivers >> Character devices >> Hardware Random Number Generator Core support +CONFIG_HW_RANDOM y +CONFIG_HW_RANDOM_ATMEL n note + +# Menu: Device Drivers >> Character devices >> IPMI top-level message handler +#CONFIG_IPMI_HANDLER y +CONFIG_IPMI_PANIC_EVENT n +CONFIG_IPMI_SI_PROBE_DEFAULTS p policy<(arch armhf arm64 &/ value n) | value y> note + +# Menu: Device Drivers >> Character devices >> PCMCIA character devices + +# Menu: Device Drivers >> Character devices >> Serial drivers +CONFIG_SERIAL_KGDB_NMI y +CONFIG_SERIAL_MAX310X y +CONFIG_SERIAL_SCCNXP y +CONFIG_SERIAL_SCCNXP_CONSOLE y +CONFIG_SERIAL_ARC_NR_PORTS 1 +CONFIG_SERIAL_RP2_NR_UARTS 32 +CONFIG_SERIAL_AMBA_PL011 y +CONFIG_SERIAL_AMBA_PL011_CONSOLE y +CONFIG_SERIAL_EARLYCON_ARM_SEMIHOST y +CONFIG_SERIAL_OF_PLATFORM y +CONFIG_SERIAL_IMX y +CONFIG_SERIAL_IMX_CONSOLE y +CONFIG_SERIAL_MSM y +CONFIG_SERIAL_MSM_CONSOLE y +CONFIG_SERIAL_OMAP p policy<(arch armel armhf &/ value y) | value m> note +CONFIG_SERIAL_OMAP_CONSOLE y +CONFIG_SERIAL_PMACZILOG y +CONFIG_SERIAL_PMACZILOG_TTYS n +CONFIG_SERIAL_PMACZILOG_CONSOLE y + +# Menu: Device Drivers >> Character devices >> Serial drivers >> 8250/16550 and compatible serial support +CONFIG_SERIAL_8250 y note +CONFIG_SERIAL_8250_PNP y +CONFIG_SERIAL_8250_CONSOLE y +CONFIG_SERIAL_8250_DMA y +CONFIG_SERIAL_8250_PCI y +CONFIG_SERIAL_8250_NR_UARTS 48 +CONFIG_SERIAL_8250_RUNTIME_UARTS 32 +CONFIG_SERIAL_8250_EM n +CONFIG_SERIAL_8250_MT6577 y +CONFIG_SERIAL_8250_DW p policy<(arch arm64 &/ value y) | value m> note + +# Menu: Device Drivers >> Character devices >> Serial drivers >> 8250/16550 and compatible serial support >> Extended 8250/16550 serial driver options +CONFIG_SERIAL_8250_EXTENDED y +CONFIG_SERIAL_8250_SHARE_IRQ y +CONFIG_SERIAL_8250_DETECT_IRQ n +CONFIG_SERIAL_8250_RSA y + +# Menu: Device Drivers >> Character devices >> 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 y + +# Menu: Device Drivers >> Character devices >> Serial drivers >> AT91 / AT32 on-chip serial port support + +# Menu: Device Drivers >> Character devices >> Serial drivers >> Altera UART support +CONFIG_SERIAL_ALTERA_UART_MAXPORTS 4 +CONFIG_SERIAL_ALTERA_UART_BAUDRATE 115200 + +# Menu: Device Drivers >> Character devices >> Serial drivers >> Blackfin SPORT emulate UART + +# Menu: Device Drivers >> Character devices >> Serial drivers >> Blackfin serial port support + +# Menu: Device Drivers >> Character devices >> Serial drivers >> Blackfin serial port support >> UART Mode + +# Menu: Device Drivers >> Character devices >> Serial drivers >> SuperH SCI(F) serial port support +CONFIG_SERIAL_SH_SCI_NR_UARTS 2 +CONFIG_SERIAL_SH_SCI_DMA y + +# Menu: Device Drivers >> Character devices >> Serial drivers >> TMPTX39XX/49XX SIO support + +# Menu: Device Drivers >> Character devices >> TPM Hardware Support +CONFIG_TCG_TPM y note +CONFIG_TCG_TIS y +CONFIG_TCG_IBMVTPM y + +# Menu: Device Drivers >> Clock Source drivers +CONFIG_ARM_ARCH_TIMER_EVTSTREAM p policy<{'arm64': 'y', 'armhf': 'y'}> +CONFIG_SH_TIMER_CMT p policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'y', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_SH_TIMER_MTU2 p policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'y', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_SH_TIMER_TMU p policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'y', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_EM_TIMER_STI p policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'y', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_CLKSRC_VERSATILE p policy<{'arm64': 'y', 'armhf': 'y'}> + +# Menu: Device Drivers >> Common Clock Framework +CONFIG_COMMON_CLK_VERSATILE y +CONFIG_COMMON_CLK_XGENE y +CONFIG_CLK_SP810 y +CONFIG_CLK_VEXPRESS_OSC y +CONFIG_CLK_PPC_CORENET y + +# Menu: Device Drivers >> Common Clock Framework >> Support for Qualcomm's clock controllers + +# Menu: Device Drivers >> Connector - unified userspace <-> kernelspace linker +CONFIG_CONNECTOR y +CONFIG_PROC_EVENTS y + +# Menu: Device Drivers >> DMA Engine support +CONFIG_DMADEVICES y +CONFIG_DMADEVICES_DEBUG n +CONFIG_AMBA_PL08X p policy<{'arm64': 'y', 'armhf': 'y'}> +CONFIG_MV_XOR p policy<{'armhf': 'y'}> +CONFIG_MX3_IPU p policy<{'armhf-generic': 'y'}> +CONFIG_MX3_IPU_IRQS p policy<{'armhf-generic': '4'}> +CONFIG_TEGRA20_APB_DMA p policy<{'armhf-generic': 'y'}> +CONFIG_TI_EDMA p policy<{'armhf': 'y'}> +CONFIG_MXS_DMA p policy<{'armhf-generic': 'y'}> +CONFIG_DMA_OMAP p policy<{'armhf': 'y'}> +CONFIG_ASYNC_TX_DMA y +CONFIG_DMATEST n flag + +# Menu: Device Drivers >> DMA Engine support >> Renesas SuperH DMA Engine support +CONFIG_SH_DMAE_BASE y + +# Menu: Device Drivers >> Dallas's 1-wire support +CONFIG_W1_CON y + +# Menu: Device Drivers >> Dallas's 1-wire support >> 1-wire Bus Masters + +# Menu: Device Drivers >> Dallas's 1-wire support >> 1-wire Slaves +CONFIG_W1_SLAVE_DS2408_READBACK y +CONFIG_W1_SLAVE_DS2433_CRC n + +# Menu: Device Drivers >> Device Tree and Open Firmware support +CONFIG_OF_UNITTEST n flag + +# Menu: Device Drivers >> EDAC (Error Detection And Correction) reporting +CONFIG_EDAC y +CONFIG_EDAC_LEGACY_SYSFS n + +# Menu: Device Drivers >> EDAC (Error Detection And Correction) reporting >> Main Memory EDAC (Error Detection And Correction) reporting +CONFIG_EDAC_AMD64_ERROR_INJECTION n +CONFIG_EDAC_SBRIDGE m note + +# Menu: Device Drivers >> External Connector Class (extcon) support +set +tree 'Device Drivers>>External Connector Class (extcon) support' ?flag EXPERIMENTAL ?type bool = n +set +tree 'Device Drivers>>External Connector Class (extcon) support' ?flag EXPERIMENTAL ?type tristate = n +set +tree 'Device Drivers>>External Connector Class (extcon) support' !flag EXPERIMENTAL ?type tristate = m +# +CONFIG_EXTCON y + +# Menu: Device Drivers >> FMC support + +# Menu: Device Drivers >> Fusion MPT device support +CONFIG_FUSION y +CONFIG_FUSION_MAX_SGE 128 +CONFIG_FUSION_LOGGING y + +# Menu: Device Drivers >> GPIO Support +set +tree 'Device Drivers>>GPIO Support' = - mark +set +all ?mark 'GPIO' ?flag EXPERIMENTAL ?type bool = n +set +all ?mark 'GPIO' ?flag EXPERIMENTAL ?type tristate = n +set +all ?mark 'GPIO' !flag EXPERIMENTAL ?type tristate = m +# standard forms: +set +pattern ^GPIO_ ?mark 'GPIO' ?type bool !flag EXPERIMENTAL = y +# +CONFIG_GPIO_SYSFS n +CONFIG_GPIOLIB y +CONFIG_GPIO_EM n note +CONFIG_GPIO_GENERIC_PLATFORM p policy<{'armhf': 'y', 'arm64': 'y', '*', 'm'}> +CONFIG_GPIO_LYNXPOINT y +CONFIG_GPIO_TWL6040 p policy<{'armhf': 'y', '*': 'm'}> +CONFIG_GPIO_TWL4030 p mark policy<{'armhf': 'y', '*': 'm'}> note +CONFIG_GPIO_SYSFS y note + +# Menu: Device Drivers >> Generic Driver Options +CONFIG_UEVENT_HELPER y +CONFIG_UEVENT_HELPER_PATH "" +CONFIG_DEVTMPFS y note note +CONFIG_DEVTMPFS_MOUNT y note note +CONFIG_STANDALONE p policy<(arch i386 amd64 &/ value n) | value y> +CONFIG_PREVENT_FIRMWARE_BUILD y +CONFIG_FENCE_TRACE n flag +CONFIG_ALLOW_DEV_COREDUMP y + +# Menu: Device Drivers >> Generic Driver Options >> DMA Contiguous Memory Allocator +CONFIG_DMA_CMA n note +CONFIG_CMA_SIZE_MBYTES 64 mark +CONFIG_CMA_ALIGNMENT 8 + +# Menu: Device Drivers >> Generic Driver Options >> DMA Contiguous Memory Allocator >> Selected region size +CONFIG_CMA_SIZE_SEL_MBYTES y + +# Menu: Device Drivers >> Generic Driver Options >> Userspace firmware loading support +CONFIG_FW_LOADER y note +CONFIG_FIRMWARE_IN_KERNEL y +CONFIG_EXTRA_FIRMWARE "" +CONFIG_FW_LOADER_USER_HELPER_FALLBACK n mark note + +# Menu: Device Drivers >> Generic Dynamic Voltage and Frequency Scaling (DVFS) support +CONFIG_PM_DEVFREQ y +CONFIG_DEVFREQ_GOV_SIMPLE_ONDEMAND y +CONFIG_DEVFREQ_GOV_PERFORMANCE y +CONFIG_DEVFREQ_GOV_POWERSAVE y +CONFIG_DEVFREQ_GOV_USERSPACE y +CONFIG_ARM_EXYNOS5_BUS_DEVFREQ p policy<{'armhf': 'n'}> + +# Menu: Device Drivers >> Generic Target Core Mod (TCM) and ConfigFS Infrastructure + +# Menu: Device Drivers >> Generic Thermal sysfs driver +CONFIG_THERMAL y +CONFIG_THERMAL_HWMON y +CONFIG_THERMAL_OF p policy<{'arm64': 'y', 'armhf': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_THERMAL_GOV_FAIR_SHARE y +CONFIG_THERMAL_GOV_STEP_WISE y +CONFIG_THERMAL_GOV_BANG_BANG y +CONFIG_THERMAL_GOV_USER_SPACE y +CONFIG_CPU_THERMAL p policy<{'arm64': 'y', 'armhf': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_CLOCK_THERMAL p policy<{'arm64': 'n', 'armhf': 'n', 'powerpc-powerpc64-emb': 'n', 'powerpc-powerpc-e500mc': 'n'}> +CONFIG_THERMAL_EMULATION y +CONFIG_ARMADA_THERMAL p policy<{'armhf': 'y'}> +CONFIG_TEGRA_SOCTHERM p policy<{'armhf-generic': 'n'}> + +# Menu: Device Drivers >> Generic Thermal sysfs driver >> Default Thermal governor +CONFIG_THERMAL_DEFAULT_GOV_STEP_WISE y + +# Menu: Device Drivers >> Generic Thermal sysfs driver >> STMicroelectronics thermal drivers + +# Menu: Device Drivers >> Generic Thermal sysfs driver >> Samsung thermal drivers +CONFIG_EXYNOS_THERMAL p policy<{'armhf': 'y'}> +CONFIG_EXYNOS_THERMAL_CORE p policy<{'armhf': 'y'}> + +# Menu: Device Drivers >> Generic Thermal sysfs driver >> Texas Instruments thermal drivers + +# Menu: Device Drivers >> Generic Thermal sysfs driver >> Texas Instruments thermal drivers >> Texas Instruments SoCs temperature sensor driver +CONFIG_OMAP4_THERMAL y +CONFIG_DRA752_THERMAL y +CONFIG_TI_THERMAL y + +# Menu: Device Drivers >> Generic powercap sysfs driver +CONFIG_POWERCAP y + +# Menu: Device Drivers >> Graphics support +set +tree 'Device Drivers>>Graphics support' = - mark +set +all ?mark 'Graphics' ?flag EXPERIMENTAL ?type bool = n +set +all ?mark 'Graphics' ?flag EXPERIMENTAL ?type tristate = m note +set +all ?mark 'Graphics' !flag EXPERIMENTAL ?type tristate = m +set +pattern ^FB_[^_]+$ ?mark Graphics ?type bool !flag EXPERIMENTAL = y +set +pattern ^FB_[^_]+$ ?mark Graphics ?type bool ?flag EXPERIMENTAL = y note +set +pattern _(KMS|BACKLIGHT|I2C)$ ?mark Graphics ?type bool !flag EXPERIMENTAL = y +# +CONFIG_VGA_ARB y +CONFIG_VGA_ARB_MAX_GPUS 16 +CONFIG_VGA_SWITCHEROO y +CONFIG_TEGRA_HOST1X_FIREWALL y + +# Menu: Device Drivers >> Graphics support >> /dev/agpgart (AGP Support) +CONFIG_AGP y note mark +CONFIG_AGP_AMD64 y note +CONFIG_AGP_INTEL y note +CONFIG_AGP_VIA y note +CONFIG_AGP_AMD y note +CONFIG_AGP_NVIDIA y note + +# Menu: Device Drivers >> Graphics support >> Backlight & LCD device support +CONFIG_BACKLIGHT_LCD_SUPPORT y + +# Menu: Device Drivers >> Graphics support >> Backlight & LCD device support >> Lowlevel Backlight controls +CONFIG_BACKLIGHT_CLASS_DEVICE y + +# Menu: Device Drivers >> Graphics support >> Backlight & LCD device support >> Lowlevel LCD controls + +# Menu: Device Drivers >> Graphics support >> Bootup logo +CONFIG_LOGO n + +# Menu: Device Drivers >> Graphics support >> Console display driver support +CONFIG_VGA_CONSOLE y +CONFIG_VGACON_SOFT_SCROLLBACK n +CONFIG_FRAMEBUFFER_CONSOLE y mark note +CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY y +CONFIG_FRAMEBUFFER_CONSOLE_ROTATION y + +# Menu: Device Drivers >> Graphics support >> Direct Rendering Manager +CONFIG_DRM_LOAD_EDID_FIRMWARE y + +# Menu: Device Drivers >> Graphics support >> Direct Rendering Manager >> Direct Rendering Manager (XFree86 4.1.0 and higher DRI support) +CONFIG_DRM m +CONFIG_DRM_VMWGFX_FBCON y +CONFIG_DRM_RCAR_LVDS y +CONFIG_DRM_OMAP n +CONFIG_DRM_MSM_FBDEV n +CONFIG_DRM_MSM_REGISTER_LOGGING y +CONFIG_DRM_MGAG200 n mark note +CONFIG_DRM_BOCHS n note +CONFIG_DRM_RCAR_HDMI y +CONFIG_DRM_STI n note + +# Menu: Device Drivers >> Graphics support >> Direct Rendering Manager >> Direct Rendering Manager (XFree86 4.1.0 and higher DRI support) >> DRM Support for Freescale i.MX + +# Menu: Device Drivers >> Graphics support >> Direct Rendering Manager >> Direct Rendering Manager (XFree86 4.1.0 and higher DRI support) >> DRM Support for Samsung SoC EXYNOS Series +CONFIG_DRM_EXYNOS_IOMMU p policy<{'armhf': 'n'}> +CONFIG_DRM_EXYNOS_DMABUF p policy<{'armhf': 'n'}> +CONFIG_DRM_EXYNOS_HDMI p policy<{'armhf': 'n'}> +CONFIG_DRM_EXYNOS_VIDI p policy<{'armhf': 'n'}> +CONFIG_DRM_EXYNOS_G2D p policy<{'armhf': 'n'}> + +# Menu: Device Drivers >> Graphics support >> Direct Rendering Manager >> Direct Rendering Manager (XFree86 4.1.0 and higher DRI support) >> DRM Support for Samsung SoC EXYNOS Series >> Exynos DRM FIMD +CONFIG_DRM_EXYNOS_FIMD p policy<{'armhf': 'n'}> + +# Menu: Device Drivers >> Graphics support >> Direct Rendering Manager >> Direct Rendering Manager (XFree86 4.1.0 and higher DRI support) >> DRM Support for Samsung SoC EXYNOS Series >> Exynos DRM IPP +CONFIG_DRM_EXYNOS_IPP p policy<{'armhf': 'n'}> + +# Menu: Device Drivers >> Graphics support >> Direct Rendering Manager >> Direct Rendering Manager (XFree86 4.1.0 and higher DRI support) >> Display Panels + +# Menu: Device Drivers >> Graphics support >> Direct Rendering Manager >> Direct Rendering Manager (XFree86 4.1.0 and higher DRI support) >> I2C encoder or helper chips + +# Menu: Device Drivers >> Graphics support >> Direct Rendering Manager >> Direct Rendering Manager (XFree86 4.1.0 and higher DRI support) >> Intel 8xx/9xx/G3x/G4x/HD Graphics +CONFIG_DRM_I915_FBDEV y +CONFIG_DRM_I915_PRELIMINARY_HW_SUPPORT n note + +# Menu: Device Drivers >> Graphics support >> Direct Rendering Manager >> Direct Rendering Manager (XFree86 4.1.0 and higher DRI support) >> Intel GMA5/600 KMS Framebuffer +CONFIG_DRM_GMA600 y +CONFIG_DRM_GMA3600 y +CONFIG_DRM_MEDFIELD y + +# Menu: Device Drivers >> Graphics support >> Direct Rendering Manager >> Direct Rendering Manager (XFree86 4.1.0 and higher DRI support) >> NVIDIA Tegra DRM +CONFIG_DRM_TEGRA_FBDEV y +CONFIG_DRM_TEGRA_STAGING p policy<{'armhf': 'y'}> + +# Menu: Device Drivers >> Graphics support >> Direct Rendering Manager >> Direct Rendering Manager (XFree86 4.1.0 and higher DRI support) >> Nouveau (NVIDIA) cards +CONFIG_NOUVEAU_DEBUG 5 +CONFIG_NOUVEAU_DEBUG_DEFAULT 3 + +# Menu: Device Drivers >> Graphics support >> Frame buffer Devices + +# Menu: Device Drivers >> Graphics support >> Frame buffer Devices >> Exynos Video driver support +CONFIG_EXYNOS_VIDEO p policy<{'armhf': 'y'}> +CONFIG_EXYNOS_MIPI_DSI p policy<{'armhf': 'y'}> + +# Menu: Device Drivers >> Graphics support >> Frame buffer Devices >> Marvell MMP Display Subsystem support + +# Menu: Device Drivers >> Graphics support >> Frame buffer Devices >> OMAP Display Device Drivers (new device model) +CONFIG_DISPLAY_ENCODER_TPD12S015 y +CONFIG_DISPLAY_CONNECTOR_HDMI y + +# Menu: Device Drivers >> Graphics support >> Frame buffer Devices >> OMAP2+ Display Subsystem support +CONFIG_OMAP2_DSS p policy<{'armhf': 'y'}> +CONFIG_OMAP2_DSS_DEBUGFS p policy<{'armhf': 'n'}> +CONFIG_OMAP2_DSS_DPI p policy<{'armhf': 'y'}> +CONFIG_OMAP2_DSS_VENC p policy<{'armhf': 'y'}> +CONFIG_OMAP4_DSS_HDMI p policy<{'armhf': 'y'}> +CONFIG_OMAP5_DSS_HDMI p policy<{'armhf': 'y'}> +CONFIG_OMAP2_DSS_SDI p policy<{'armhf': 'y'}> +CONFIG_OMAP2_DSS_DSI p policy<{'armhf': 'n'}> +CONFIG_OMAP2_DSS_MIN_FCK_PER_PCK D +CONFIG_OMAP2_DSS_SLEEP_AFTER_VENC_RESET p policy<{'armhf': 'y'}> + +# Menu: Device Drivers >> Graphics support >> Frame buffer Devices >> Support for frame buffer devices +#CONFIG_FB_RADEON p policy<(arch powerpc &/ value y) | value m> note +#CONFIG_FB_3DFX p policy<(arch powerpc &/ value y) | value m> note +#CONFIG_FB_3DFX_ACCEL y +CONFIG_FB y +CONFIG_FIRMWARE_EDID y +CONFIG_FB_MODE_HELPERS y +CONFIG_FB_TILEBLITTING y +CONFIG_FB_PM2_FIFO_DISCONNECT y +CONFIG_FB_ARMCLCD y +CONFIG_FB_CYBER2000_DDC y +CONFIG_FB_I810_GTF n +CONFIG_FB_ATY128 p policy<(arch powerpc &/ value y) | value m> note +CONFIG_FB_S3_DDC y +CONFIG_FB_SAVAGE_ACCEL n +CONFIG_FB_SIS_300 y +CONFIG_FB_SIS_315 y +CONFIG_FB_VIA_X_COMPATIBILITY y +CONFIG_FB_3DFX_ACCEL n +CONFIG_FB_3DFX_I2C n +CONFIG_FB_VOODOO1 p policy<(arch powerpc &/ value y) | value m> note +CONFIG_FB_TMIO_ACCELL y +CONFIG_FB_VIRTUAL n flag +CONFIG_FB_UDL p policy<(arch powerpc & flavour powerpc64-emb powerpc-e500mc &/ value y) | value m> +CONFIG_FB_IBM_GXT4500 p policy<(arch ppc64el &/ value y) | value m> +CONFIG_FB_PS3 p policy<(arch powerpc &/ value y) | value m> +CONFIG_FB_PS3_DEFAULT_SIZE_M D +CONFIG_FB_MX3 p policy<(arch armhf &/ value y) | value m> + +# 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_CT y +CONFIG_FB_ATY_GENERIC_LCD n +CONFIG_FB_ATY_GX y + +# Menu: Device Drivers >> Graphics support >> Frame buffer Devices >> Support for frame buffer devices >> ATI Radeon display support + +# 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 y + +# Menu: Device Drivers >> Graphics support >> Frame buffer Devices >> Support for frame buffer devices >> Framebuffer foreign endianness support +CONFIG_FB_FOREIGN_ENDIAN 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 y + +# Menu: Device Drivers >> Graphics support >> Frame buffer Devices >> Support for frame buffer devices >> Matrox acceleration +CONFIG_FB_MATROX_MILLENIUM y +CONFIG_FB_MATROX_MYSTIQUE y +CONFIG_FB_MATROX_G y + +# 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_NUM_FBS D + +# 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 >> Size of ADV7393 frame buffer memory Single/Double Size + +# Menu: Device Drivers >> Graphics support >> Frame buffer Devices >> Support for frame buffer devices >> Video mode support + +# Menu: Device Drivers >> Graphics support >> Frame buffer Devices >> Support for frame buffer devices >> nVidia Framebuffer Support + +# Menu: Device Drivers >> Graphics support >> Frame buffer Devices >> Support for frame buffer devices >> nVidia Riva support + +# Menu: Device Drivers >> HID support +set +tree 'Device Drivers>>HID support' = - mark +# enable modular HID drivers by default +set +all ?mark 'HID' ?flag EXPERIMENTAL ?type bool = n +set +all ?mark 'HID' ?flag EXPERIMENTAL ?type tristate = m note` +set +all ?mark 'HID' !flag EXPERIMENTAL ?type tristate = m +# standard forms +set +pattern _FF$ ?mark HID ?type bool !flag EXPERIMENTAL = y + +# Menu: Device Drivers >> HID support >> HID bus support +CONFIG_HID_BATTERY_STRENGTH y +CONFIG_HIDRAW y + +# Menu: Device Drivers >> HID support >> HID bus support >> Special HID drivers + +# Menu: Device Drivers >> HID support >> HID bus support >> Special HID drivers >> Logitech devices + +# Menu: Device Drivers >> HID support >> HID bus support >> Special HID drivers >> PicoLCD (graphic version) +CONFIG_HID_PICOLCD_FB y +CONFIG_HID_PICOLCD_BACKLIGHT y +CONFIG_HID_PICOLCD_LCD y +CONFIG_HID_PICOLCD_LEDS y +CONFIG_HID_PICOLCD_CIR y + +# Menu: Device Drivers >> HID support >> I2C HID support + +# Menu: Device Drivers >> HID support >> USB HID support +CONFIG_HID_PID y + +# Menu: Device Drivers >> HID support >> USB HID support >> USB HID transport layer +CONFIG_USB_HIDDEV y + +# Menu: Device Drivers >> HID support >> USB HID support >> USB HID transport layer >> USB HID Boot Protocol drivers + +# Menu: Device Drivers >> HSI support + +# Menu: Device Drivers >> Hardware Monitoring support +CONFIG_HWMON y mark +CONFIG_HWMON y mark mark +CONFIG_HWMON y + +# Menu: Device Drivers >> Hardware Monitoring support >> PMBus support +CONFIG_SENSORS_LTC2978_REGULATOR y + +# Menu: Device Drivers >> Hardware Spinlock drivers +#CONFIG_HWSPINLOCK_OMAP y note + +# Menu: Device Drivers >> I2C support + +# Menu: Device Drivers >> I2C support >> I2C support +CONFIG_I2C y +CONFIG_I2C_CHARDEV y note +CONFIG_I2C_COMPAT y mark +CONFIG_I2C_HELPER_AUTO y +CONFIG_I2C_SLAVE y +CONFIG_ACPI_I2C_OPREGION p policy<{'amd64': 'n', 'i386': 'n'}> + +# Menu: Device Drivers >> I2C support >> I2C support >> I2C Algorithms + +# Menu: Device Drivers >> I2C support >> I2C support >> I2C Hardware Bus support +CONFIG_I2C_POWERMAC p policy<{'powerpc-powerpc64-smp': 'y', 'powerpc-powerpc-smp': 'y'}> +CONFIG_I2C_IMX p policy<{'armhf-generic': 'y'}> +CONFIG_I2C_OMAP p policy<{'armhf': 'y'}> +CONFIG_I2C_S3C2410 p policy<{'armhf': 'y'}> +CONFIG_I2C_OPAL p policy<{'powerpc-powerpc64-smp': 'y', 'ppc64el': 'y'}> + +# Menu: Device Drivers >> I2C support >> I2C support >> I2C bus multiplexing support + +# Menu: Device Drivers >> I2C support >> I2C support >> I2C bus multiplexing support >> Multiplexer I2C Chip support + +# Menu: Device Drivers >> I2O device support +CONFIG_I2O_LCT_NOTIFY_ON_CHANGES y +CONFIG_I2O_EXT_ADAPTEC y +CONFIG_I2O_EXT_ADAPTEC_DMA64 y +CONFIG_I2O_CONFIG_OLD_IOCTL n + +# Menu: Device Drivers >> IEEE 1394 (FireWire) support + +# Menu: Device Drivers >> IEEE 1394 (FireWire) support >> FireWire driver stack + +# Menu: Device Drivers >> IOMMU Hardware Support +set +tree 'Device Drivers>>IOMMU Hardware Support' ?pattern _IOMMU$ ?type bool !flag EXPERIMENTAL = y +# +CONFIG_IOMMU_SUPPORT y +CONFIG_INTEL_IOMMU_DEFAULT_ON n note +CONFIG_AMD_IOMMU_STATS y +CONFIG_IRQ_REMAP y +CONFIG_TEGRA_IOMMU_GART y +CONFIG_TEGRA_IOMMU_SMMU y +CONFIG_IPMMU_VMSA y +CONFIG_ARM_SMMU n +CONFIG_FSL_PAMU n + +# Menu: Device Drivers >> IOMMU Hardware Support >> IPMMU/IPMMUI address space size +CONFIG_SHMOBILE_IOMMU_ADDRSIZE_2048MB y + +# Menu: Device Drivers >> ISDN support +CONFIG_ISDN y +CONFIG_HYSDN_CAPI y + +# Menu: Device Drivers >> ISDN support >> CAPI 2.0 subsystem +CONFIG_CAPI_TRACE y +CONFIG_ISDN_CAPI_MIDDLEWARE y +CONFIG_ISDN_CAPI_CAPIDRV_VERBOSE n + +# Menu: Device Drivers >> ISDN support >> CAPI 2.0 subsystem >> Active AVM cards +CONFIG_CAPI_AVM y +CONFIG_ISDN_DRV_AVMB1_B1PCIV4 y + +# Menu: Device Drivers >> ISDN support >> CAPI 2.0 subsystem >> Active Eicon DIVA Server cards +CONFIG_CAPI_EICON y + +# Menu: Device Drivers >> ISDN support >> CAPI 2.0 subsystem >> Active Eicon DIVA Server cards >> Support Eicon DIVA Server cards +CONFIG_ISDN_DIVAS_BRIPCI y +CONFIG_ISDN_DIVAS_PRIPCI y + +# Menu: Device Drivers >> ISDN support >> Modular ISDN driver + +# Menu: Device Drivers >> ISDN support >> Old ISDN4Linux (deprecated) +CONFIG_ISDN_AUDIO y +CONFIG_ISDN_TTY_FAX y +CONFIG_ISDN_X25 y + +# Menu: Device Drivers >> ISDN support >> Old ISDN4Linux (deprecated) >> Active cards + +# Menu: Device Drivers >> ISDN support >> Old ISDN4Linux (deprecated) >> ISDN feature submodules + +# Menu: Device Drivers >> ISDN support >> Old ISDN4Linux (deprecated) >> Passive cards +set +tree 'Device Drivers>>ISDN support>>Old ISDN4Linux (deprecated)>>Passive cards' ?pattern '^HISAX_' !pattern '^HISAX_NO_' ?type bool = y + +# Menu: Device Drivers >> ISDN support >> Old ISDN4Linux (deprecated) >> Passive cards >> HiSax SiemensChipSet driver support +CONFIG_HISAX_MAX_CARDS D +CONFIG_HISAX_DEBUG n + +# Menu: Device Drivers >> ISDN support >> Old ISDN4Linux (deprecated) >> Passive cards >> HiSax SiemensChipSet driver support >> HiSax Support for EURO/DSS1 +CONFIG_DE_AOC y +CONFIG_HISAX_NO_SENDCOMPLETE n +CONFIG_HISAX_NO_LLC n +CONFIG_HISAX_NO_KEYPAD n + +# Menu: Device Drivers >> ISDN support >> Old ISDN4Linux (deprecated) >> Support synchronous PPP +CONFIG_ISDN_PPP y +CONFIG_ISDN_PPP_VJ y +CONFIG_ISDN_MPP y +CONFIG_IPPP_FILTER y + +# Menu: Device Drivers >> ISDN support >> Siemens Gigaset support +CONFIG_GIGASET_CAPI n + +# Menu: Device Drivers >> Industrial I/O support +CONFIG_IIO_BUFFER y +CONFIG_IIO_BUFFER_CB y + +# Menu: Device Drivers >> Industrial I/O support >> Accelerometers + +# Menu: Device Drivers >> Industrial I/O support >> Amplifiers + +# Menu: Device Drivers >> Industrial I/O support >> Analog to digital converters + +# Menu: Device Drivers >> Industrial I/O support >> Digital gyroscope sensors + +# Menu: Device Drivers >> Industrial I/O support >> Digital to analog converters + +# Menu: Device Drivers >> Industrial I/O support >> Enable triggered sampling support +CONFIG_IIO_TRIGGER y +CONFIG_IIO_CONSUMERS_PER_TRIGGER D + +# Menu: Device Drivers >> Industrial I/O support >> Enable triggered sampling support >> Triggers - standalone + +# 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 + +# Menu: Device Drivers >> Industrial I/O support >> Frequency Synthesizers DDS/PLL >> Phase-Locked Loop (PLL) frequency synthesizers + +# Menu: Device Drivers >> Industrial I/O support >> Hid Sensor IIO Common + +# Menu: Device Drivers >> Industrial I/O support >> Humidity sensors + +# Menu: Device Drivers >> Industrial I/O support >> Inclinometer sensors + +# Menu: Device Drivers >> Industrial I/O support >> Inertial measurement units + +# Menu: Device Drivers >> Industrial I/O support >> Light sensors + +# Menu: Device Drivers >> Industrial I/O support >> Lightning sensors + +# Menu: Device Drivers >> Industrial I/O support >> Magnetometer sensors + +# Menu: Device Drivers >> Industrial I/O support >> Pressure sensors + +# Menu: Device Drivers >> Industrial I/O support >> Temperature sensors + +# Menu: Device Drivers >> IndustryPack bus support + +# Menu: Device Drivers >> InfiniBand support +CONFIG_INFINIBAND_ON_DEMAND_PAGING y +CONFIG_INFINIBAND_QIB_DCA p policy<{'amd64': 'y'}> +CONFIG_INFINIBAND_IPOIB_CM y + +# Menu: Device Drivers >> Input device support + +# Menu: Device Drivers >> Input device support >> Generic input layer (needed for keyboard, mouse, ...) +set +tree 'Device Drivers,Input device support,INPUT' = - mark +set +all ?mark 'INPUT' ?flag EXPERIMENTAL ?type bool = n +set +all ?mark 'INPUT' ?flag EXPERIMENTAL ?type tristate = m note +set +all ?mark 'INPUT' !flag EXPERIMENTAL ?type tristate = m +set +pattern ^MOUSE_PS2_ ?mark INPUT ?type bool !flag EXPERIMENTAL = y +set +pattern ^TOUCHSCREEN_ ?mark INPUT ?type bool !flag EXPERIMENTAL = y +set +pattern _FF$ ?mark INPUT ?type bool !flag EXPERIMENTAL = y +# +CONFIG_INPUT y +CONFIG_INPUT_EVDEV y + +# Menu: Device Drivers >> Input device support >> Generic input layer (needed for keyboard, mouse, ...) >> Joysticks/Gamepads +CONFIG_INPUT_JOYSTICK y +CONFIG_JOYSTICK_IFORCE_USB y +CONFIG_JOYSTICK_IFORCE_232 y +CONFIG_JOYSTICK_XPAD_LEDS y + +# Menu: Device Drivers >> Input device support >> Generic input layer (needed for keyboard, mouse, ...) >> Keyboards +#CONFIG_KEYBOARD_OMAP4 p policy<(arch armel armhf &/ value y) | value m> note +#CONFIG_KEYBOARD_TWL4030 p policy<(arch armel armhf &/ value y) | value m> note +CONFIG_INPUT_KEYBOARD y +CONFIG_KEYBOARD_ATKBD y note + +# Menu: Device Drivers >> Input device support >> Generic input layer (needed for keyboard, mouse, ...) >> Mice +CONFIG_INPUT_MOUSE y +CONFIG_MOUSE_INPORT n note +CONFIG_MOUSE_ELAN_I2C_I2C y +CONFIG_MOUSE_ELAN_I2C_SMBUS y + +# Menu: Device Drivers >> Input device support >> Generic input layer (needed for keyboard, mouse, ...) >> Mice >> PS/2 mouse + +# Menu: Device Drivers >> Input device support >> Generic input layer (needed for keyboard, mouse, ...) >> Miscellaneous devices +CONFIG_INPUT_MISC y +CONFIG_INPUT_KXTJ9_POLLED_MODE n +CONFIG_INPUT_UINPUT y mark note + +# Menu: Device Drivers >> Input device support >> Generic input layer (needed for keyboard, mouse, ...) >> Mouse interface +CONFIG_INPUT_MOUSEDEV y +CONFIG_INPUT_MOUSEDEV_PSAUX y +CONFIG_INPUT_MOUSEDEV_SCREEN_X 1024 +CONFIG_INPUT_MOUSEDEV_SCREEN_Y 768 + +# Menu: Device Drivers >> Input device support >> Generic input layer (needed for keyboard, mouse, ...) >> Tablets +CONFIG_INPUT_TABLET y + +# Menu: Device Drivers >> Input device support >> Generic input layer (needed for keyboard, mouse, ...) >> Touchscreens +CONFIG_INPUT_TOUCHSCREEN y + +# Menu: Device Drivers >> Input device support >> Generic input layer (needed for keyboard, mouse, ...) >> Touchscreens >> Support for WM97xx AC97 touchscreen controllers + +# Menu: Device Drivers >> Input device support >> Generic input layer (needed for keyboard, mouse, ...) >> Touchscreens >> USB Touchscreen Driver + +# Menu: Device Drivers >> Input device support >> Hardware I/O ports +#CONFIG_SERIO_SERPORT p policy<(arch armhf &/ value y) | value m> note + +# Menu: Device Drivers >> Input device support >> Hardware I/O ports >> Gameport support + +# Menu: Device Drivers >> Input device support >> Hardware I/O ports >> Serial I/O support +CONFIG_SERIO y note +CONFIG_SERIO_I8042 y note +CONFIG_SERIO_LIBPS2 y note + +# Menu: Device Drivers >> LED Support +CONFIG_NEW_LEDS y + +# Menu: Device Drivers >> LED Support >> LED Class Support +#CONFIG_LEDS_GPIO p policy<(arch armel armhf &/ value y) | value m> note +#CONFIG_LEDS_PWM p policy<(arch armel armhf &/ value y) | value m> note +CONFIG_LEDS_CLASS y +CONFIG_LEDS_PCA9532_GPIO y +CONFIG_LEDS_ASIC3 y +CONFIG_LEDS_SYSCON y + +# Menu: Device Drivers >> LED Support >> LED Class Support >> LED Trigger support +CONFIG_LEDS_TRIGGER_HEARTBEAT p mark policy<{'armhf': 'y', '*': 'm'}> +CONFIG_LEDS_TRIGGERS y +CONFIG_LEDS_TRIGGER_CPU y + +# Menu: Device Drivers >> MCB support + +# Menu: Device Drivers >> MMC/SD/SDIO card support +#CONFIG_MMC_OMAP p policy<(arch armel armhf &/ value y) | value m> note +CONFIG_MMC y +CONFIG_MMC_CLKGATE n +CONFIG_MMC_BLOCK p policy<(arch armel armhf arm64 &/ value y) | value m> note +CONFIG_MMC_BLOCK_MINORS D +CONFIG_MMC_BLOCK_BOUNCE D +CONFIG_MMC_CLKGATE D +CONFIG_MMC_ARMMMCI y +CONFIG_MMC_TEST n flag +CONFIG_MMC_OMAP_HS p policy<(arch armel armhf &/ value y) | value m> 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 p policy<(arch armel armhf highbank &/ value y) | value m> note +CONFIG_MMC_RICOH_MMC y +CONFIG_MMC_SDHCI_S3C_DMA p policy<{'armhf': 'y'}> + +# Menu: Device Drivers >> MMC/SD/SDIO card support >> Secure Digital Host Controller Interface support >> SDHCI platform and OF driver helper +CONFIG_MMC_SDHCI_PLTFM p policy<(arch armel armhf &/ value y) | value m> note +CONFIG_MMC_SDHCI_ESDHC_IMX y + +# Menu: Device Drivers >> MMC/SD/SDIO card support >> Synopsys DesignWare Memory Card Interface +CONFIG_MMC_DW_IDMAC y + +# Menu: Device Drivers >> Macintosh device drivers +# +CONFIG_MACINTOSH_DRIVERS y +CONFIG_PMAC_SMU p policy<{'powerpc': 'y'}> +CONFIG_PMAC_MEDIABAY p policy<{'powerpc': 'y'}> +CONFIG_THERM_ADT746X p mark policy<{'powerpc-powerpc-smp': 'y'}> note + +# Menu: Device Drivers >> Macintosh device drivers >> Apple Desktop Bus (ADB) support +CONFIG_ADB p policy<{'powerpc': 'y'}> +CONFIG_ADB_CUDA p policy<{'powerpc': 'y'}> +CONFIG_ADB_MACIO p policy<{'powerpc': 'y'}> +CONFIG_INPUT_ADBHID p policy<{'powerpc': 'y'}> + +# Menu: Device Drivers >> Macintosh device drivers >> New PowerMac thermal control infrastructure + +# Menu: Device Drivers >> Macintosh device drivers >> Support for PMU based PowerMacs +CONFIG_ADB_PMU p policy<{'powerpc': 'y'}> +CONFIG_ADB_PMU_LED p policy<{'powerpc': 'y'}> +CONFIG_PMAC_BACKLIGHT p policy<{'powerpc': 'y'}> +CONFIG_PMAC_BACKLIGHT_LEGACY p policy<{'powerpc': 'y'}> +CONFIG_SENSORS_AMS_PMU p policy<{'powerpc': 'n'}> +CONFIG_SENSORS_AMS_I2C p policy<{'powerpc': 'n'}> + +# Menu: Device Drivers >> Mailbox Hardware Support +CONFIG_MAILBOX y +CONFIG_PL320_MBOX p policy<{'arm64': 'y', 'armhf': 'y'}> +CONFIG_OMAP2PLUS_MBOX p policy<{'armhf': 'm'}> +CONFIG_OMAP_MBOX_KFIFO_SIZE p policy<{'armhf': '256'}> +CONFIG_PCC p policy<{'amd64': 'y', 'i386': 'y'}> + +# Menu: Device Drivers >> Memory Controller drivers +CONFIG_MEMORY y +CONFIG_TI_EMIF p policy<{'armhf': 'm'}> +CONFIG_MVEBU_DEVBUS p policy<{'armhf': 'y'}> +CONFIG_TEGRA20_MC p policy<{'armhf-generic': 'y'}> +CONFIG_FSL_CORENET_CF p policy<{'powerpc-powerpc64-emb': 'm', 'powerpc-powerpc-e500mc': 'm'}> +CONFIG_TEGRA_MC p policy<{'armhf-generic': 'y'}> + +# Menu: Device Drivers >> Memory Technology Device (MTD) support +CONFIG_MTD p policy<{'armhf': 'y', '*': 'm'}> note +CONFIG_MTD_CMDLINE_PARTS p policy<{'armhf': 'y', '*': 'm'}> mark +CONFIG_MTD_BLOCK p policy<{'armhf': 'y', '*': 'm'}> note +CONFIG_SM_FTL m note +CONFIG_MTD_OF_PARTS p policy<{'armhf': 'y', '*': 'm'}> note +CONFIG_NFTL_RW y +CONFIG_MTD_NAND_ECC_SMC n + +# Menu: Device Drivers >> Memory Technology Device (MTD) support >> Enable UBI - Unsorted block images +CONFIG_MTD_UBI_WL_THRESHOLD D +CONFIG_MTD_UBI_BEB_LIMIT D +CONFIG_MTD_UBI_FASTMAP y +CONFIG_MTD_UBI_BLOCK y + +# Menu: Device Drivers >> Memory Technology Device (MTD) support >> LPDDR & LPDDR2 PCM memory drivers + +# Menu: Device Drivers >> Memory Technology Device (MTD) support >> Mapping drivers for chip access +CONFIG_MTD_PHYSMAP_COMPAT 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 y +CONFIG_MTD_PCMCIA_ANONYMOUS n + +# Menu: Device Drivers >> Memory Technology Device (MTD) support >> NAND Device Support +CONFIG_MTD_NAND p policy<(arch armel armhf &/ value y) | value m> note +CONFIG_MTD_NAND_OMAP2 p policy<(arch armel armhf &/ value y) | value m> note +CONFIG_MTD_NAND_OMAP_BCH p policy<(arch armel armhf &/ value y) | value m> note +CONFIG_MTD_NAND_ECC_BCH y +CONFIG_MTD_NAND_DISKONCHIP_PROBE_ADVANCED n +CONFIG_MTD_NAND_DISKONCHIP_BBTWRITE n note + +# Menu: Device Drivers >> Memory Technology Device (MTD) support >> NAND Device Support >> NAND Flash support for Samsung S3C SoCs + +# Menu: Device Drivers >> Memory Technology Device (MTD) support >> OneNAND Device Support +CONFIG_MTD_ONENAND_VERIFY_WRITE y note +CONFIG_MTD_ONENAND_2X_PROGRAM y +CONFIG_MTD_ONENAND_OTP n mark + +# Menu: Device Drivers >> Memory Technology Device (MTD) support >> RAM/ROM/Flash chip drivers + +# Menu: Device Drivers >> Memory Technology Device (MTD) support >> RAM/ROM/Flash chip drivers >> Flash chip driver advanced configuration options +CONFIG_MTD_CFI_ADV_OPTIONS 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 D +CONFIG_MTD_MAP_BANK_WIDTH_2 D +CONFIG_MTD_MAP_BANK_WIDTH_4 D +CONFIG_MTD_MAP_BANK_WIDTH_8 D +CONFIG_MTD_MAP_BANK_WIDTH_16 D +CONFIG_MTD_MAP_BANK_WIDTH_32 D +CONFIG_MTD_CFI_I1 D +CONFIG_MTD_CFI_I2 D +CONFIG_MTD_CFI_I4 D +CONFIG_MTD_CFI_I8 D + +# Menu: Device Drivers >> Memory Technology Device (MTD) support >> RedBoot partition table parsing +CONFIG_MTD_REDBOOT_DIRECTORY_BLOCK -1 +CONFIG_MTD_REDBOOT_PARTS_UNALLOCATED n +CONFIG_MTD_REDBOOT_PARTS_READONLY n + +# Menu: Device Drivers >> Memory Technology Device (MTD) support >> SPI-NOR device support +CONFIG_MTD_SPI_NOR_USE_4K_SECTORS y +CONFIG_SPI_FSL_QUADSPI p policy<{'armhf-generic': 'm'}> + +# Menu: Device Drivers >> Memory Technology Device (MTD) support >> Self-contained MTD device drivers +CONFIG_MTD_PMC551_BUGFIX n +CONFIG_MTD_DATAFLASH_WRITE_VERIFY n +CONFIG_MTD_DATAFLASH_OTP y +CONFIG_MTDRAM_TOTAL_SIZE D +CONFIG_MTDRAM_ERASE_SIZE D + +# Menu: Device Drivers >> Microsoft Hyper-V guest support + +# Menu: Device Drivers >> Misc devices +CONFIG_CS5535_MFGPT n note +CONFIG_SRAM y +CONFIG_ARM_CHARLCD p policy<{'armhf': 'y'}> +CONFIG_VEXPRESS_SYSCFG p policy<{'armhf': 'y', 'arm64': 'y'}> + +# Menu: Device Drivers >> Misc devices >> EEPROM support + +# Menu: Device Drivers >> Misc devices >> GenWQE PCIe Accelerator +CONFIG_GENWQE p policy<{'amd64': 'm', 'arm64': 'm', 'powerpc-powerpc64-emb': 'm', 'powerpc-powerpc64-smp': 'm', 'ppc64el': 'm'}> +CONFIG_GENWQE_PLATFORM_ERROR_RECOVERY p policy<{'amd64': '0', 'arm64': '0', 'powerpc-powerpc64-emb': '0', 'powerpc-powerpc64-smp': '0', 'ppc64el': '0'}> + +# Menu: Device Drivers >> Misc devices >> Silicon Labs C2 port support + +# Menu: Device Drivers >> Misc devices >> Texas Instruments shared transport line discipline + +# Menu: Device Drivers >> Multifunction device drivers +set +tree 'Device Drivers>>Multifunction device drivers' ?pattern ^MFD_ ?type bool !flag EXPERIMENTAL = y +CONFIG_MFD_SM501 p policy<{'armhf': 'y', '*': 'm'}> note +CONFIG_MFD_OMAP_USB_HOST y +CONFIG_HTC_EGPIO p policy<{'armhf': 'y'}> +CONFIG_HTC_I2CPLD y +CONFIG_INTEL_SOC_PMIC y +CONFIG_ABX500_CORE y +CONFIG_AB3100_CORE y +CONFIG_TWL4030_CORE y +CONFIG_TWL4030_POWER y +CONFIG_TWL6040_CORE y +CONFIG_PMIC_ADP5520 y +CONFIG_PMIC_DA903X y +CONFIG_EZX_PCAP y + +# Menu: Device Drivers >> Multifunction device drivers >> Multimedia Capabilities Port drivers + +# Menu: Device Drivers >> Multifunction device drivers >> STMicroelectronics STMPE +CONFIG_MFD_STMPE y + +# Menu: Device Drivers >> Multifunction device drivers >> STMicroelectronics STMPE >> STMicroelectronics STMPE Interface Drivers +CONFIG_STMPE_I2C y +CONFIG_STMPE_SPI y + +# Menu: Device Drivers >> Multimedia support +#CONFIG_MEDIA_SUPPORT p policy<(arch armel armhf &/ value y) | value m> note +CONFIG_MEDIA_ANALOG_TV_SUPPORT y +CONFIG_MEDIA_DIGITAL_TV_SUPPORT y +CONFIG_MEDIA_RC_SUPPORT y +CONFIG_VIDEO_FIXED_MINOR_RANGES n +CONFIG_DVB_NET y +CONFIG_DVB_MAX_ADAPTERS 8 +CONFIG_DVB_DYNAMIC_MINORS y +CONFIG_SMS_SIANO_RC y +CONFIG_SMS_SIANO_DEBUGFS y + +# Menu: Device Drivers >> Multimedia support >> AM/FM radio receivers/transmitters support +CONFIG_MEDIA_RADIO_SUPPORT y + +# Menu: Device Drivers >> Multimedia support >> AM/FM radio receivers/transmitters support >> Radio Adapters +CONFIG_RADIO_ADAPTERS y +CONFIG_RADIO_SI470X y + +# Menu: Device Drivers >> Multimedia support >> AM/FM radio receivers/transmitters support >> Radio Adapters >> ISA radio devices +CONFIG_V4L_RADIO_ISA_DRIVERS y + +# Menu: Device Drivers >> Multimedia support >> AM/FM radio receivers/transmitters support >> Radio Adapters >> Silicon Labs Si4713 FM Radio with RDS Transmitter support + +# Menu: Device Drivers >> Multimedia support >> AM/FM radio receivers/transmitters support >> Radio Adapters >> Texas Instruments WL128x FM driver (ST based) + +# Menu: Device Drivers >> Multimedia support >> Cameras/video grabbers support +CONFIG_MEDIA_CAMERA_SUPPORT y +CONFIG_MEDIA_CONTROLLER y +CONFIG_VIDEO_V4L2_SUBDEV_API y + +# Menu: Device Drivers >> Multimedia support >> Cameras/video grabbers support >> Media test drivers +CONFIG_V4L_TEST_DRIVERS y + +# Menu: Device Drivers >> Multimedia support >> Cameras/video grabbers support >> Memory-to-memory multimedia devices +CONFIG_V4L_MEM2MEM_DRIVERS y + +# Menu: Device Drivers >> Multimedia support >> Cameras/video grabbers support >> V4L platform devices +CONFIG_V4L_PLATFORM_DRIVERS y + +# Menu: Device Drivers >> Multimedia support >> Cameras/video grabbers support >> V4L platform devices >> Samsung S5P/EXYNOS4 SoC series Camera Subsystem driver +CONFIG_VIDEO_SAMSUNG_EXYNOS4_IS p policy<{'armhf': 'n'}> + +# Menu: Device Drivers >> Multimedia support >> Cameras/video grabbers support >> V4L platform devices >> Samsung TV driver for S5P platform +CONFIG_VIDEO_SAMSUNG_S5P_TV p policy<{'armhf': 'y'}> + +# Menu: Device Drivers >> Multimedia support >> Cameras/video grabbers support >> V4L platform devices >> SoC camera support + +# Menu: Device Drivers >> Multimedia support >> Customise DVB Frontends +CONFIG_DVB_DUMMY_FE n note + +# Menu: Device Drivers >> Multimedia support >> Encoders, decoders, sensors and other helper chips + +# Menu: Device Drivers >> Multimedia support >> Media PCI Adapters +CONFIG_MEDIA_PCI_SUPPORT y +CONFIG_DVB_AV7110_OSD y + +# Menu: Device Drivers >> Multimedia support >> Media PCI Adapters >> Conexant 2388x (bt878 successor) support +CONFIG_VIDEO_CX88_ENABLE_VP3054 y + +# Menu: Device Drivers >> Multimedia support >> Media PCI Adapters >> Philips SAA7134 support +CONFIG_VIDEO_SAA7134_RC y + +# Menu: Device Drivers >> Multimedia support >> Media PCI Adapters >> SAA7146 DVB cards (aka Budget, Nova-PCI) + +# Menu: Device Drivers >> Multimedia support >> Media PCI Adapters >> Zoran ZR36060 + +# Menu: Device Drivers >> Multimedia support >> Media USB Adapters +CONFIG_MEDIA_USB_SUPPORT y +CONFIG_USB_VIDEO_CLASS_INPUT_EVDEV y +CONFIG_USB_PWC_INPUT_EVDEV y +CONFIG_VIDEO_PVRUSB2_SYSFS y +CONFIG_VIDEO_PVRUSB2_DVB y +CONFIG_VIDEO_PVRUSB2_DEBUGIFC n +CONFIG_VIDEO_STK1160_AC97 y +CONFIG_VIDEO_AU0828_V4L2 y +CONFIG_VIDEO_AU0828_RC y + +# Menu: Device Drivers >> Multimedia support >> Media USB Adapters >> Conexant cx231xx USB video capture support +CONFIG_VIDEO_CX231XX_RC y + +# Menu: Device Drivers >> Multimedia support >> Media USB Adapters >> Empia EM28xx USB devices support + +# Menu: Device Drivers >> Multimedia support >> Media USB Adapters >> GSPCA based webcams + +# Menu: Device Drivers >> Multimedia support >> Media USB Adapters >> Support for various USB DVB devices +CONFIG_DVB_USB_DIBUSB_MB_FAULTY n + +# Menu: Device Drivers >> Multimedia support >> Media USB Adapters >> Support for various USB DVB devices v2 + +# Menu: Device Drivers >> Multimedia support >> Remote Controller devices +CONFIG_RC_DEVICES y +CONFIG_IR_IMG_RAW n + +# Menu: Device Drivers >> Multimedia support >> Remote Controller devices >> Hardware decoder +CONFIG_IR_IMG_HW y +CONFIG_IR_IMG_NEC y +CONFIG_IR_IMG_JVC y +CONFIG_IR_IMG_SONY y +CONFIG_IR_IMG_SHARP y +CONFIG_IR_IMG_SANYO y + +# Menu: Device Drivers >> Multimedia support >> Remote controller decoders +CONFIG_RC_DECODERS y + +# Menu: Device Drivers >> Multimedia support >> Sensors used on soc_camera driver + +# Menu: Device Drivers >> Multimedia support >> Software defined radio support +CONFIG_MEDIA_SDR_SUPPORT y +CONFIG_MEDIA_SUBDRV_AUTOSELECT y + +# Menu: Device Drivers >> Multimedia support >> Software defined radio support >> Customize TV tuners + +# Menu: Device Drivers >> Multiple devices driver support (RAID and LVM) +set +tree 'Device Drivers>>MD' ?flag EXPERIMENTAL ?type bool = n +set +tree 'Device Drivers>>MD' ?flag EXPERIMENTAL ?type tristate = m note +set +tree 'Device Drivers>>MD' !flag EXPERIMENTAL ?type tristate = m +# +CONFIG_MD y + +# Menu: Device Drivers >> Multiple devices driver support (RAID and LVM) >> Device mapper support +CONFIG_BLK_DEV_DM y mark note +CONFIG_DM_UEVENT y + +# Menu: Device Drivers >> Multiple devices driver support (RAID and LVM) >> RAID support +CONFIG_BLK_DEV_MD y +CONFIG_MD_AUTODETECT y + +# Menu: Device Drivers >> Network device support +set +pattern '^NET_VENDOR_' = y +# +CONFIG_NETDEVICES y +CONFIG_FDDI y +CONFIG_HIPPI n note +CONFIG_XEN_NETDEV_FRONTEND y note +CONFIG_CAIF_SPI_SYNC n +CONFIG_DEFXX_MMIO n mark + +# Menu: Device Drivers >> Network device support >> ARCnet support + +# Menu: Device Drivers >> Network device support >> ARCnet support >> ARCnet COM20020 chipset driver + +# Menu: Device Drivers >> Network device support >> ATM drivers +CONFIG_ATM_DRIVERS y +CONFIG_ATM_NICSTAR_USE_SUNI n +CONFIG_ATM_NICSTAR_USE_IDT77105 n mark +CONFIG_ATM_IDT77252_RCV_ALL n +CONFIG_ATM_HE_USE_SUNI y + +# Menu: Device Drivers >> Network device support >> ATM drivers >> FORE Systems 200E-series +CONFIG_ATM_FORE200E_USE_TASKLET n +CONFIG_ATM_FORE200E_TX_RETRY D +CONFIG_ATM_FORE200E_DEBUG D + +# Menu: Device Drivers >> Network device support >> ATM drivers >> Fine-tune burst settings +CONFIG_ATM_ENI_TUNE_BURST n + +# Menu: Device Drivers >> Network device support >> Distributed Switch Architecture drivers + +# Menu: Device Drivers >> Network device support >> Ethernet driver support +set +tree 'Device Drivers>>Network device support>>Ethernet driver support' ?pattern '.*_DCA' ?type bool = y +set +tree 'Device Drivers>>Network device support>>Ethernet driver support' ?pattern '.*_DCB' ?type bool = y +set +tree 'Device Drivers>>Network device support>>Ethernet driver support' ?pattern '.*_VXLAN' ?type bool = y +# +CONFIG_ETHERNET y +CONFIG_NET_VENDOR_ADAPTEC y +CONFIG_NET_VENDOR_AGERE y +CONFIG_NET_VENDOR_ALTEON y +CONFIG_ACENIC_OMIT_TIGON_I n +CONFIG_NET_XGENE p policy<{'amd64': 'n', 'arm64': 'm', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_NET_VENDOR_ARC y +CONFIG_ARC_EMAC p policy<{'arm64': 'm', 'armhf': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_EMAC_ROCKCHIP p policy<{'arm64': 'm', 'armhf': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_NET_CADENCE p policy<{'armhf': 'y'}> +CONFIG_NET_VENDOR_BROCADE y +CONFIG_NET_CALXEDA_XGMAC p policy<{'armhf': 'm'}> +CONFIG_NET_VENDOR_CISCO y +CONFIG_CX_ECAT p policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_DM9000 p policy<{'armhf': 'm'}> +CONFIG_DM9000_FORCE_SIMPLE_PHY_POLL p policy<{'armhf': 'n'}> +CONFIG_NET_VENDOR_DEC y +CONFIG_NET_VENDOR_DLINK y +CONFIG_SUNDANCE_MMIO n +CONFIG_NET_VENDOR_EMULEX y +CONFIG_BE2NET_VXLAN y +CONFIG_NET_VENDOR_EXAR y +CONFIG_VXGE_DEBUG_TRACE_ALL n +CONFIG_NET_VENDOR_FARADAY p policy<{'armhf': 'y'}> +CONFIG_FTMAC100 p policy<{'armhf': 'm'}> +CONFIG_FTGMAC100 p policy<{'armhf': 'm'}> +CONFIG_NET_VENDOR_FUJITSU p policy<{'amd64': 'y', 'i386': 'y', 'powerpc': 'y'}> +CONFIG_PCMCIA_FMVJ18X p policy<{'amd64': 'm', 'i386': 'm', 'powerpc': 'm'}> +CONFIG_NET_VENDOR_HISILICON p policy<{'armhf': 'y'}> +CONFIG_HIX5HD2_GMAC p policy<{'armhf': 'm'}> +CONFIG_NET_VENDOR_HP y +CONFIG_NET_VENDOR_MELLANOX y +CONFIG_MLX4_EN_DCB y +CONFIG_MLX4_EN_VXLAN y +CONFIG_MLX4_DEBUG y +CONFIG_NET_VENDOR_MICROCHIP y +CONFIG_ENC28J60_WRITEVERIFY n +CONFIG_NET_VENDOR_MYRI y +CONFIG_MYRI10GE_DCA p policy<{'amd64': 'y', 'i386': 'y'}> +CONFIG_NET_VENDOR_NVIDIA y +CONFIG_NET_VENDOR_OKI y +CONFIG_PCH_GBE p policy<{'i386': 'm'}> +CONFIG_NET_PACKET_ENGINE y +CONFIG_NET_VENDOR_PASEMI p policy<{'powerpc-powerpc64-smp': 'y'}> +CONFIG_PASEMI_MAC p policy<{'powerpc-powerpc64-smp': 'n'}> +CONFIG_NET_VENDOR_QUALCOMM y +CONFIG_QCA7000 p policy<{'arm64': 'm', 'armhf': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SH_ETH p policy<{'armhf': 'm'}> +CONFIG_NET_VENDOR_RDC 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_STMICRO y +CONFIG_STMMAC_PCI n +CONFIG_NET_VENDOR_TEHUTI y +CONFIG_NET_VENDOR_VIA y +CONFIG_VIA_RHINE_MMIO y +CONFIG_NET_VENDOR_WIZNET y +CONFIG_NET_VENDOR_XIRCOM p policy<{'amd64': 'y', 'i386': 'y', 'powerpc': 'y'}> +CONFIG_PCMCIA_XIRC2PS p policy<{'amd64': 'm', 'i386': 'm', 'powerpc': 'm'}> + +# Menu: Device Drivers >> Network device support >> Ethernet driver support >> 3Com devices + +# Menu: Device Drivers >> Network device support >> Ethernet driver support >> AMD devices + +# Menu: Device Drivers >> Network device support >> Ethernet driver support >> Apple devices +CONFIG_MACE_AAUI_PORT n + +# Menu: Device Drivers >> Network device support >> Ethernet driver support >> Atheros devices + +# Menu: Device Drivers >> Network device support >> Ethernet driver support >> Blackfin on-chip MAC support + +# Menu: Device Drivers >> Network device support >> Ethernet driver support >> Broadcom devices +CONFIG_TIGON3 p policy<{'ppc64el': 'y', '*': 'm'}> mark +CONFIG_BNX2X_SRIOV y + +# Menu: Device Drivers >> Network device support >> Ethernet driver support >> Chelsio devices +CONFIG_CHELSIO_T1_1G y + +# Menu: Device Drivers >> Network device support >> Ethernet driver support >> Cirrus devices +CONFIG_CS89x0_PLATFORM y + +# Menu: Device Drivers >> Network device support >> Ethernet driver support >> DEC - Tulip devices +CONFIG_NET_TULIP y +CONFIG_DE2104X_DSL D + +# Menu: Device Drivers >> Network device support >> Ethernet driver support >> DEC - Tulip devices >> DECchip Tulip (dc2114x) PCI support +CONFIG_TULIP_MWI n +CONFIG_TULIP_MMIO n +CONFIG_TULIP_NAPI n mark + +# Menu: Device Drivers >> Network device support >> Ethernet driver support >> Freescale devices +CONFIG_FEC p policy<{'armhf': 'y'}> +CONFIG_FSL_XGMAC_MDIO p policy<{'powerpc': 'y'}> + +# Menu: Device Drivers >> Network device support >> Ethernet driver support >> Freescale devices >> Freescale Ethernet Driver +CONFIG_FS_ENET_HAS_SCC y +CONFIG_FS_ENET_HAS_FCC y + +# Menu: Device Drivers >> Network device support >> Ethernet driver support >> IBM devices +CONFIG_IBMVETH p policy<{'ppc64el': 'y', 'powerpc': 'm'}> +CONFIG_EHEA p policy<{'ppc64el': 'y'}> + +# 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 + +# Menu: Device Drivers >> Network device support >> Ethernet driver support >> Intel devices +CONFIG_IGB_HWMON y + +# Menu: Device Drivers >> Network device support >> Ethernet driver support >> Intel devices >> Intel(R) 10GbE PCI Express adapters support +CONFIG_IXGBE_HWMON y + +# Menu: Device Drivers >> Network device support >> Ethernet driver support >> Intel devices >> Intel(R) Ethernet Controller XL710 Family support +CONFIG_I40E_FCOE y + +# Menu: Device Drivers >> Network device support >> Ethernet driver support >> Marvell devices +CONFIG_SKGE_GENESIS y + +# Menu: Device Drivers >> Network device support >> Ethernet driver support >> Micrel devices + +# Menu: Device Drivers >> Network device support >> Ethernet driver support >> National Semi-conductor 8390 devices +CONFIG_AX88796_93CX6 n + +# Menu: Device Drivers >> Network device support >> Ethernet driver support >> National Semi-conductor devices + +# Menu: Device Drivers >> Network device support >> Ethernet driver support >> QLogic devices + +# Menu: Device Drivers >> Network device support >> Ethernet driver support >> QLogic devices >> QLOGIC QLCNIC 1/10Gb Converged Ethernet NIC Support +CONFIG_QLCNIC_SRIOV y +CONFIG_QLCNIC_HWMON y + +# Menu: Device Drivers >> Network device support >> Ethernet driver support >> Realtek devices + +# Menu: Device Drivers >> Network device support >> Ethernet driver support >> Realtek devices >> RealTek RTL-8129/8130/8139 PCI Fast Ethernet Adapter support +CONFIG_8139TOO_PIO y +CONFIG_8139TOO_TUNE_TWISTER n mark +CONFIG_8139TOO_8129 y +CONFIG_8139_OLD_RX_RESET n + +# Menu: Device Drivers >> Network device support >> Ethernet driver support >> SMC (SMSC)/Western Digital devices +CONFIG_SMC91X p policy<{'arm64': 'y', 'armhf': 'm'}> + +# Menu: Device Drivers >> Network device support >> Ethernet driver support >> Solarflare SFC4000/SFC9000/SFC9100-family support +CONFIG_SFC_MTD y +CONFIG_SFC_MCDI_MON y +CONFIG_SFC_SRIOV y + +# Menu: Device Drivers >> Network device support >> Ethernet driver support >> Sun devices + +# Menu: Device Drivers >> Network device support >> Ethernet driver support >> Texas Instruments (TI) devices +CONFIG_TI_DAVINCI_MDIO p policy<{'armhf': 'y'}> +CONFIG_TI_DAVINCI_CPDMA p policy<{'armhf': 'y'}> +CONFIG_TI_CPSW_PHY_SEL y +CONFIG_TI_CPSW p policy<{'armhf': 'y'}> +CONFIG_TI_CPTS y + +# Menu: Device Drivers >> Network device support >> Ethernet driver support >> Toshiba devices +CONFIG_GELIC_WIRELESS y + +# Menu: Device Drivers >> Network device support >> Ethernet driver support >> WIZnet interface mode +CONFIG_WIZNET_BUS_ANY y + +# Menu: Device Drivers >> Network device support >> Ethernet driver support >> Xilinx devices + +# Menu: Device Drivers >> Network device support >> IEEE 802.15.4 drivers + +# Menu: Device Drivers >> Network device support >> Network core driver support +CONFIG_NET_CORE y +CONFIG_NET_FC y +CONFIG_NETCONSOLE_DYNAMIC y +CONFIG_TUN y +CONFIG_RIONET_TX_SIZE D +CONFIG_RIONET_RX_SIZE D +CONFIG_VIRTIO_NET y note + +# Menu: Device Drivers >> Network device support >> Network core driver support >> Ethernet team driver support + +# Menu: Device Drivers >> Network device support >> PHY Device support and infrastructure +set +tree 'Device Drivers>>Network device support>>PHY Device support and infrastructure' ?flag EXPERIMENTAL ?type bool = n +set +tree 'Device Drivers>>Network device support>>PHY Device support and infrastructure' ?flag EXPERIMENTAL ?type tristate = m note +set +tree 'Device Drivers>>Network device support>>PHY Device support and infrastructure' !flag EXPERIMENTAL ?type tristate = m +# +CONFIG_PHYLIB y +CONFIG_STE10XP m +CONFIG_FIXED_PHY y + +# Menu: Device Drivers >> Network device support >> PPP (point-to-point protocol) support +CONFIG_PPP y +CONFIG_PPP_FILTER y +CONFIG_PPP_MULTILINK y + +# Menu: Device Drivers >> Network device support >> S/390 network device drivers + +# Menu: Device Drivers >> Network device support >> SLIP (serial line) support +CONFIG_SLIP_COMPRESSED y +CONFIG_SLIP_SMART y +CONFIG_SLIP_MODE_SLIP6 y + +# Menu: Device Drivers >> Network device support >> USB Network Adapters + +# Menu: Device Drivers >> Network device support >> USB Network Adapters >> Multi-purpose USB Networking Framework + +# Menu: Device Drivers >> Network device support >> USB Network Adapters >> Multi-purpose USB Networking Framework >> Simple USB Network Links (CDC Ethernet subset) +CONFIG_USB_KC2190 y +CONFIG_USB_ALI_M5632 y +CONFIG_USB_AN2720 y +CONFIG_USB_BELKIN y +CONFIG_USB_ARMLINUX y +CONFIG_USB_EPSON2888 y + +# Menu: Device Drivers >> Network device support >> Wan interfaces support +CONFIG_WAN y +CONFIG_DLCI_MAX 8 +CONFIG_SBNI_MULTILINE n + +# Menu: Device Drivers >> Network device support >> Wan interfaces support >> Generic HDLC layer +CONFIG_DSCC4_PCISYNC y +CONFIG_DSCC4_PCI_RST y + +# Menu: Device Drivers >> Network device support >> WiMAX Wireless Broadband devices +CONFIG_WIMAX_I2400M_DEBUG_LEVEL D + +# Menu: Device Drivers >> Network device support >> Wireless LAN +CONFIG_WLAN y +CONFIG_IPW2100_MONITOR y + +# Menu: Device Drivers >> Network device support >> Wireless LAN >> Atheros Wireless Cards +CONFIG_ATH_DEBUG n +CONFIG_ATH5K_PCI y +CONFIG_ATH9K_BTCOEX_SUPPORT y +CONFIG_ATH9K_HTC_DEBUGFS y +CONFIG_WCN36XX_DEBUGFS n + +# Menu: Device Drivers >> Network device support >> Wireless LAN >> Atheros Wireless Cards >> Atheros 5xxx wireless cards support +CONFIG_ATH5K_DEBUG n +CONFIG_ATH5K_TRACER n + +# Menu: Device Drivers >> Network device support >> Wireless LAN >> Atheros Wireless Cards >> Atheros 802.11ac wireless cards support +CONFIG_ATH10K_DEBUG n +CONFIG_ATH10K_DEBUGFS y +CONFIG_ATH10K_TRACING y + +# Menu: Device Drivers >> Network device support >> Wireless LAN >> Atheros Wireless Cards >> Atheros 802.11n wireless cards support +CONFIG_ATH9K_PCI y +CONFIG_ATH9K_AHB y +CONFIG_ATH9K_DEBUGFS y +CONFIG_ATH9K_STATION_STATISTICS y +CONFIG_ATH9K_DYNACK n +CONFIG_ATH9K_WOW y +CONFIG_ATH9K_RFKILL y +CONFIG_ATH9K_CHANNEL_CONTEXT y +CONFIG_ATH9K_PCOEM y + +# Menu: Device Drivers >> Network device support >> Wireless LAN >> Atheros Wireless Cards >> Atheros mobile chipsets support +CONFIG_ATH6KL_USB m note +CONFIG_ATH6KL_TRACING n + +# Menu: Device Drivers >> Network device support >> Wireless LAN >> Atheros Wireless Cards >> Linux Community AR9170 802.11n USB support +CONFIG_CARL9170_LEDS y +CONFIG_CARL9170_DEBUGFS n +CONFIG_CARL9170_HWRNG y + +# Menu: Device Drivers >> Network device support >> Wireless LAN >> Atheros Wireless Cards >> Wilocity 60g WiFi card wil6210 support +CONFIG_WIL6210_ISR_COR y +CONFIG_WIL6210_TRACING y + +# Menu: Device Drivers >> Network device support >> Wireless LAN >> Broadcom 43xx wireless support (mac80211 stack) +CONFIG_B43_PCMCIA n +CONFIG_B43_SDIO n +CONFIG_B43_PHY_G y +CONFIG_B43_PHY_N y +CONFIG_B43_PHY_LP y +CONFIG_B43_PHY_HT y + +# Menu: Device Drivers >> Network device support >> Wireless LAN >> Broadcom 43xx wireless support (mac80211 stack) >> Supported bus types +CONFIG_B43_BUSES_BCMA_AND_SSB y + +# Menu: Device Drivers >> Network device support >> Wireless LAN >> Broadcom 43xx-legacy data transfer mode +CONFIG_B43LEGACY_DMA_AND_PIO_MODE y + +# Menu: Device Drivers >> Network device support >> Wireless LAN >> Broadcom IEEE802.11n embedded FullMAC WLAN driver +CONFIG_BRCMFMAC_SDIO y +CONFIG_BRCMFMAC_USB y +CONFIG_BRCMFMAC_PCIE y +CONFIG_BRCM_TRACING y +CONFIG_BRCMDBG n flag + +# Menu: Device Drivers >> Network device support >> Wireless LAN >> Hermes chipset 802.11b support (Orinoco/Prism2/Symbol) +CONFIG_HERMES_PRISM n +CONFIG_HERMES_CACHE_FW_ON_INIT y + +# Menu: Device Drivers >> Network device support >> Wireless LAN >> IEEE 802.11 for Host AP (Prism2/2.5/3 and WEP/TKIP/CCMP) +CONFIG_HOSTAP_FIRMWARE y +CONFIG_HOSTAP_FIRMWARE_NVRAM y + +# Menu: Device Drivers >> Network device support >> Wireless LAN >> Intel PRO/Wireless 2200BG and 2915ABG Network Connection +CONFIG_IPW2200_MONITOR y +CONFIG_IPW2200_RADIOTAP y +CONFIG_IPW2200_PROMISCUOUS y +CONFIG_IPW2200_QOS y + +# Menu: Device Drivers >> Network device support >> Wireless LAN >> Intel Wireless WiFi Next Gen AGN - Wireless-N/Advanced-N/Ultimate-N (iwlwifi) +CONFIG_IWLWIFI_BCAST_FILTERING n +CONFIG_IWLWIFI_UAPSD n note + +# Menu: Device Drivers >> Network device support >> Wireless LAN >> Intel Wireless WiFi Next Gen AGN - Wireless-N/Advanced-N/Ultimate-N (iwlwifi) >> Debugging Options +CONFIG_IWLWIFI_DEBUGFS y +CONFIG_IWLWIFI_DEVICE_TRACING y + +# Menu: Device Drivers >> Network device support >> Wireless LAN >> Marvell 8xxx Libertas WLAN driver support +CONFIG_LIBERTAS_MESH y + +# Menu: Device Drivers >> Network device support >> Wireless LAN >> Marvell WiFi-Ex Driver + +# Menu: Device Drivers >> Network device support >> Wireless LAN >> Ralink driver support +CONFIG_RT2X00_LIB_DEBUGFS n + +# Menu: Device Drivers >> Network device support >> Wireless LAN >> Ralink driver support >> Ralink rt27xx/rt28xx/rt30xx (PCI/PCIe/PCMCIA) support +CONFIG_RT2800PCI_RT33XX y +CONFIG_RT2800PCI_RT35XX y +CONFIG_RT2800PCI_RT53XX y +CONFIG_RT2800PCI_RT3290 y + +# Menu: Device Drivers >> Network device support >> Wireless LAN >> Ralink driver support >> Ralink rt27xx/rt28xx/rt30xx (USB) support +CONFIG_RT2800USB_RT33XX y +CONFIG_RT2800USB_RT35XX y +CONFIG_RT2800USB_RT3573 y +CONFIG_RT2800USB_RT53XX y +CONFIG_RT2800USB_RT55XX y +CONFIG_RT2800USB_UNKNOWN y + +# Menu: Device Drivers >> Network device support >> Wireless LAN >> Realtek rtlwifi family of devices +CONFIG_RTL8192DE m note + +# Menu: Device Drivers >> Network device support >> Wireless LAN >> Redpine Signals Inc 91x WLAN driver support +CONFIG_RSI_DEBUGFS n + +# Menu: Device Drivers >> Network device support >> Wireless LAN >> Softmac Prism54 support +CONFIG_P54_SPI_DEFAULT_EEPROM n + +# Menu: Device Drivers >> Network device support >> Wireless LAN >> TI Wireless LAN support +CONFIG_WL_TI y +CONFIG_WILINK_PLATFORM_DATA y + +# Menu: Device Drivers >> Network device support >> Wireless LAN >> TI Wireless LAN support >> TI wl1251 driver support + +# Menu: Device Drivers >> Network device support >> Wireless LAN >> iwl3945 / iwl4965 Debugging Options +CONFIG_IWLEGACY_DEBUGFS y + +# Menu: Device Drivers >> PHY Subsystem +CONFIG_GENERIC_PHY y +CONFIG_PHY_EXYNOS_MIPI_VIDEO p policy<{'armhf': 'y'}> +CONFIG_PHY_EXYNOS_DP_VIDEO p policy<{'armhf': 'y'}> +CONFIG_PHY_EXYNOS5250_SATA p policy<{'armhf': 'y'}> +CONFIG_PHY_XGENE p policy<{'arm64': 'y'}> + +# Menu: Device Drivers >> PPS support + +# Menu: Device Drivers >> PPS support >> PPS support +CONFIG_PPS p policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'y', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'y'}> mark +CONFIG_PPS_CLIENT_KTIMER n flag + +# Menu: Device Drivers >> PTP clock support +CONFIG_PTP_1588_CLOCK p policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'y', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'y'}> mark + +# Menu: Device Drivers >> Parallel port support +CONFIG_PARPORT_1284 y + +# Menu: Device Drivers >> Parallel port support >> PC-style hardware +CONFIG_PARPORT_PC_FIFO y +CONFIG_PARPORT_PC_SUPERIO n + +# Menu: Device Drivers >> Pin controllers +set +tree 'Device Drivers>>Pin controllers' ?pattern '^PINCTRL_' ?type bool = y +CONFIG_PINMUX y +CONFIG_PINCONF y +CONFIG_PINCTRL_SINGLE y +CONFIG_GPIO_SH_PFC y + +# Menu: Device Drivers >> Pin controllers >> Nomadik pin controller driver + +# Menu: Device Drivers >> Pin controllers >> ST-Ericsson ABx500 family Mixed Signal Circuit gpio functions + +# Menu: Device Drivers >> Platform support for Chrome hardware +CONFIG_CHROME_PLATFORMS y + +# Menu: Device Drivers >> Plug and Play support +CONFIG_PNP y +CONFIG_ISAPNP y +CONFIG_PNPBIOS y +CONFIG_PNPBIOS_PROC_FS y + +# Menu: Device Drivers >> Power supply class support +CONFIG_POWER_SUPPLY y +CONFIG_BATTERY_BQ27X00_I2C y +CONFIG_BATTERY_BQ27X00_PLATFORM y +CONFIG_CHARGER_MANAGER y + +# Menu: Device Drivers >> Power supply class support >> Board level reset or power off +CONFIG_POWER_RESET y +CONFIG_POWER_RESET_AS3722 p policy<{'arm64': 'y', 'armhf': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_POWER_RESET_AXXIA p policy<{'armhf-generic-lpae': 'y'}> +CONFIG_POWER_RESET_BRCMSTB p policy<{'armhf': 'n'}> +CONFIG_POWER_RESET_GPIO p policy<{'arm64': 'y', 'armhf': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_POWER_RESET_GPIO_RESTART p policy<{'arm64': 'y', 'armhf': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_POWER_RESET_HISI p policy<{'armhf': 'y'}> +CONFIG_POWER_RESET_IMX p policy<{'armhf-generic': 'n'}> +CONFIG_POWER_RESET_MSM p policy<{'armhf': 'y'}> +CONFIG_POWER_RESET_LTC2952 p policy<{'arm64': 'y', 'armhf': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_POWER_RESET_QNAP p policy<{'armhf': 'n'}> +CONFIG_POWER_RESET_RESTART p policy<{'armhf': 'y'}> +CONFIG_POWER_RESET_VERSATILE p policy<{'armhf': 'y'}> +CONFIG_POWER_RESET_VEXPRESS p policy<{'arm64': 'y', 'armhf': 'y'}> +CONFIG_POWER_RESET_XGENE p policy<{'arm64': 'n'}> +CONFIG_POWER_RESET_SYSCON p policy<{'arm64': 'y', 'armhf': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> + +# Menu: Device Drivers >> Pulse-Width Modulation (PWM) Support +CONFIG_PWM y + +# Menu: Device Drivers >> Real Time Clock +CONFIG_RTC_CLASS y +CONFIG_RTC_HCTOSYS y +CONFIG_RTC_SYSTOHC y +CONFIG_RTC_HCTOSYS_DEVICE "rtc0" +CONFIG_RTC_DRV_DS3232 p policy<{'powerpc-powerpc64-emb': 'y', 'powerpc-powerpc-e500mc': 'y', '*': 'm'}> +CONFIG_RTC_INTF_SYSFS y +CONFIG_RTC_INTF_PROC y +CONFIG_RTC_INTF_DEV y +CONFIG_RTC_INTF_DEV_UIE_EMUL n +CONFIG_RTC_DRV_TEST n flag +CONFIG_RTC_DRV_M41T80_WDT y +CONFIG_RTC_DRV_CMOS p policy<{'amd64': 'y', 'i386': 'y', '*': 'm'}> note +CONFIG_RTC_DRV_TWL4030 p policy<{'armhf': 'y', '*': 'm'}> note +CONFIG_RTC_DRV_OMAP p policy<{'armhf': 'y', '*': 'm'}> +CONFIG_RTC_DRV_S3C p policy<{'armhf': 'y', '*': 'm'}> +CONFIG_RTC_DRV_PL031 p policy<{'armhf': 'y', '*': 'm'}> +CONFIG_RTC_DRV_XGENE p policy<{'arm64': 'y', '*': 'n'}> +CONFIG_RTC_DRV_DS1374_WDT y +CONFIG_RTC_DRV_PCF8523 p policy<{'armhf-generic': 'y', '*': 'm'}> +CONFIG_RTC_DRV_OPAL p policy<{'powerpc-powerpc64-smp': 'y', 'ppc64el-generic': 'y'}> +CONFIG_RTC_DRV_MV p policy<{'armhf': 'y'}> + +# Menu: Device Drivers >> Remoteproc drivers + +# Menu: Device Drivers >> SCSI device support + +# Menu: Device Drivers >> SCSI device support >> SCSI device support +CONFIG_SCSI_MQ_DEFAULT n +CONFIG_SCSI y +CONFIG_SCSI_PROC_FS y +CONFIG_BLK_DEV_SD y note +CONFIG_BLK_DEV_SR y note +CONFIG_BLK_DEV_SR_VENDOR n note +CONFIG_CHR_DEV_SG y note +CONFIG_SCSI_CONSTANTS y +CONFIG_SCSI_LOGGING y +CONFIG_SCSI_SCAN_ASYNC y + +# Menu: Device Drivers >> SCSI device support >> SCSI device support >> OSD-Initiator library +CONFIG_SCSI_OSD_DPRINT_SENSE 1 + +# Menu: Device Drivers >> SCSI device support >> SCSI device support >> PCMCIA SCSI adapter support +CONFIG_SCSI_LOWLEVEL_PCMCIA y + +# Menu: Device Drivers >> SCSI device support >> SCSI device support >> SCSI Device Handlers + +# Menu: Device Drivers >> SCSI device support >> SCSI device support >> SCSI Transports +#CONFIG_SCSI_SPI_ATTRS p policy<(arch i386 amd64 &/ value y) | value m> note +CONFIG_SCSI_SPI_ATTRS m +CONFIG_SCSI_SRP_ATTRS p policy<{'powerpc-powerpc64-smp': 'y', 'ppc64el-generic': 'y', '*': 'm'}> +CONFIG_SCSI_SAS_ATA y +CONFIG_SCSI_SAS_HOST_SMP y + +# Menu: Device Drivers >> SCSI device support >> SCSI device support >> SCSI low-level drivers +CONFIG_SCSI_LOWLEVEL y +CONFIG_SCSI_MVSAS_TASKLET n +CONFIG_MEGARAID_NEWGEN y +CONFIG_SCSI_MPT2SAS_MAX_SGE 128 +CONFIG_SCSI_MPT2SAS_LOGGING n +CONFIG_SCSI_MPT3SAS_MAX_SGE 128 +CONFIG_SCSI_MPT3SAS_LOGGING n +CONFIG_SCSI_FLASHPOINT y +CONFIG_SCSI_IZIP_EPP16 n +CONFIG_SCSI_IZIP_SLOW_CTR n +CONFIG_SCSI_IPR_TRACE y note +CONFIG_SCSI_IPR_DUMP y note +CONFIG_SCSI_DEBUG m +CONFIG_SCSI_VIRTIO m note +CONFIG_SCSI_GENERIC_NCR53C400 y +CONFIG_SCSI_IBMVSCSI p policy<{'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_SCSI_IBMVFC_TRACE y +CONFIG_SCSI_MESH_SYNC_RATE D +CONFIG_SCSI_MESH_RESET_DELAY_MS D + +# Menu: Device Drivers >> SCSI device support >> SCSI device support >> SCSI low-level drivers >> Adaptec AIC79xx U320 support +CONFIG_AIC79XX_CMDS_PER_DEVICE 32 +CONFIG_AIC79XX_RESET_DELAY_MS D +CONFIG_AIC79XX_DEBUG_MASK 0 +CONFIG_AIC79XX_REG_PRETTY_PRINT y + +# Menu: Device Drivers >> SCSI device support >> SCSI device support >> SCSI low-level drivers >> Adaptec AIC7xxx Fast -> U160 support (New Driver) +CONFIG_AIC7XXX_CMDS_PER_DEVICE 8 +CONFIG_AIC7XXX_RESET_DELAY_MS D +CONFIG_AIC7XXX_DEBUG_MASK 0 +CONFIG_AIC7XXX_REG_PRETTY_PRINT y + +# Menu: Device Drivers >> SCSI device support >> SCSI device support >> SCSI low-level drivers >> EATA ISA/EISA/PCI (DPT and generic EATA/DMA-compliant boards) support +CONFIG_SCSI_EATA_TAGGED_QUEUE y +CONFIG_SCSI_EATA_LINKED_COMMANDS y +CONFIG_SCSI_EATA_MAX_TAGS 16 + +# Menu: Device Drivers >> SCSI device support >> SCSI device support >> SCSI low-level drivers >> NCR Quad 720 MCA SCSI support + +# Menu: Device Drivers >> SCSI device support >> SCSI device support >> SCSI low-level drivers >> SYM53C8XX Version 2 SCSI support +CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE 1 +CONFIG_SCSI_SYM53C8XX_DEFAULT_TAGS 16 +CONFIG_SCSI_SYM53C8XX_MAX_TAGS 64 +CONFIG_SCSI_SYM53C8XX_MMIO y + +# Menu: Device Drivers >> SCSI device support >> SCSI device support >> SCSI low-level drivers >> UltraStor 14F/34F support +CONFIG_SCSI_U14_34F_TAGGED_QUEUE y +CONFIG_SCSI_U14_34F_LINKED_COMMANDS y +CONFIG_SCSI_U14_34F_MAX_TAGS 8 + +# Menu: Device Drivers >> SOC (System On Chip) specific Drivers + +# Menu: Device Drivers >> SOC (System On Chip) specific Drivers >> TI SOC drivers support +CONFIG_SOC_TI y + +# Menu: Device Drivers >> SPI support +CONFIG_SPI y +CONFIG_SPI_XILINX n +CONFIG_SPI_OMAP24XX y +CONFIG_SPI_FSL_SPI y +CONFIG_SPI_FSL_ESPI y +CONFIG_SPI_DW_MID_DMA y + +# Menu: Device Drivers >> SPMI support + +# Menu: Device Drivers >> Serial ATA and Parallel ATA drivers (libata) +#CONFIG_PATA_ACPI p policy<(arch i386 amd64 &/ value m)> note +CONFIG_ATA y mark +CONFIG_ATA_VERBOSE_ERROR y +CONFIG_ATA_ACPI y +CONFIG_SATA_ZPODD p policy<{'amd64': 'y', 'i386': 'y'}> +CONFIG_SATA_PMP y +CONFIG_SATA_AHCI_PLATFORM p policy<{'armhf': 'y', '*': 'm'}> note +CONFIG_AHCI_IMX p policy<{'armhf': 'y'}> + +# Menu: Device Drivers >> Serial ATA and Parallel ATA drivers (libata) >> ATA SFF support (for legacy IDE and PATA) +CONFIG_ATA_SFF y + +# Menu: Device Drivers >> Serial ATA and Parallel ATA drivers (libata) >> ATA SFF support (for legacy IDE and PATA) >> ATA BMDMA support +CONFIG_ATA_BMDMA y +CONFIG_ATA_PIIX p policy<{'amd64': 'y', 'arm64': 'm', 'armhf': 'm', 'i386': 'y', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SATA_HIGHBANK p policy<{'armhf': 'm'}> +CONFIG_SATA_RCAR p policy<{'armhf': 'm'}> +CONFIG_SATA_SVW p policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'y', 'ppc64el': 'm'}> +CONFIG_PATA_CS5520 p policy<{'i386': 'm'}> +CONFIG_PATA_CS5530 p policy<{'i386': 'm'}> +CONFIG_PATA_CS5535 p policy<{'i386': 'm'}> +CONFIG_PATA_CS5536 p policy<{'i386': 'm'}> +CONFIG_PATA_HPT3X3_DMA n note +CONFIG_PATA_IMX p policy<{'armhf-generic': 'm'}> +CONFIG_PATA_MACIO p policy<{'powerpc-powerpc64-smp': 'y', 'powerpc-powerpc-smp': 'y'}> +CONFIG_PATA_SC1200 p policy<{'i386': 'm'}> +CONFIG_PATA_SIS p policy<{'amd64': 'y', 'arm64': 'm', 'armhf': 'm', 'i386': 'y', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_PATA_ACPI p policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_ATA_GENERIC p policy<{'amd64': 'y', 'arm64': 'm', 'armhf': 'm', 'i386': 'y', 'powerpc': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Sonics Silicon Backplane +CONFIG_SSB_PCIHOST y +CONFIG_SSB_PCMCIAHOST n +CONFIG_SSB_SDIOHOST y +CONFIG_SSB_DRIVER_PCICORE y + +# Menu: Device Drivers >> Sonics Silicon Backplane >> Sonics Silicon Backplane support +CONFIG_SSB_SILENT n +CONFIG_SSB_DRIVER_GPIO y + +# Menu: Device Drivers >> Sony MemoryStick card support + +# Menu: Device Drivers >> Sound card support +CONFIG_SOUND p policy<{'armhf': 'y', '*': 'm'}> note +CONFIG_SOUND_OSS_CORE_PRECLAIM n mark note + +# Menu: Device Drivers >> Sound card support >> Advanced Linux Sound Architecture +CONFIG_SND p policy<{'armhf': 'y', '*': 'm'}> note +CONFIG_SND_PCM_OSS n note +CONFIG_SND_SEQUENCER_OSS n +CONFIG_SND_SEQ_HRTIMER_DEFAULT y +CONFIG_SND_DYNAMIC_MINORS y +CONFIG_SND_MAX_CARDS 32 +CONFIG_SND_SUPPORT_OLD_API y +CONFIG_SND_VERBOSE_PROCFS y +CONFIG_SND_VERBOSE_PRINTK n + +# Menu: Device Drivers >> Sound card support >> Advanced Linux Sound Architecture >> ALSA for SoC audio support +CONFIG_SND_SOC p policy<(arch armel armhf &/ value y) | value m> note + +# Menu: Device Drivers >> Sound card support >> Advanced Linux Sound Architecture >> ALSA for SoC audio support >> ASoC support for Intel(R) Smart Sound Technology + +# Menu: Device Drivers >> Sound card support >> Advanced Linux Sound Architecture >> ALSA for SoC audio support >> ASoC support for Samsung + +# Menu: Device Drivers >> Sound card support >> Advanced Linux Sound Architecture >> ALSA for SoC audio support >> CODEC drivers +CONFIG_SND_SOC_HDMI_CODEC p policy<{'armhf': 'y', '*': 'm'}> mark +CONFIG_SND_SOC_SGTL5000 p policy<{'armhf-generic': 'y', '*': 'm'}> mark + +# Menu: Device Drivers >> Sound card support >> Advanced Linux Sound Architecture >> ALSA for SoC audio support >> SoC AC97 Audio for the ADI BF5xx chip + +# Menu: Device Drivers >> Sound card support >> Advanced Linux Sound Architecture >> ALSA for SoC audio support >> SoC Audio for Freescale CPUs +CONFIG_SND_SOC_FSL_SSI p policy<{'armhf-generic': 'y', '*': 'm'}> mark +CONFIG_SND_SOC_IMX_AUDMUX p policy<{'armhf-generic': 'y', '*': 'm'}> mark + +# 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 p policy<{'armhf': 'y'}> +CONFIG_SND_SOC_IMX_SGTL5000 p policy<{'armhf': 'y'}> + +# 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 TI DAVINCI + +# Menu: Device Drivers >> Sound card support >> Advanced Linux Sound Architecture >> ALSA for SoC audio support >> SoC Audio for TI DAVINCI >> DM365 codec select + +# Menu: Device Drivers >> Sound card support >> Advanced Linux Sound Architecture >> ALSA for SoC audio support >> SoC Audio for the Atmel System-on-Chip + +# 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 + +# Menu: Device Drivers >> Sound card support >> Advanced Linux Sound Architecture >> ALSA for SoC audio support >> SoC Audio for the Texas Instruments OMAP chips +CONFIG_SND_OMAP_SOC p policy<(arch armel armhf &/ value y) | value m> note +CONFIG_SND_OMAP_SOC_OMAP_TWL4030 p policy<(arch armel armhf &/ value y) | value m> note + +# Menu: Device Drivers >> Sound card support >> Advanced Linux Sound Architecture >> ALSA for SoC audio support >> SoC Audio support for SuperH + +# 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 >> SoC I2S Audio for the ADI Blackfin chip + +# Menu: Device Drivers >> Sound card support >> Advanced Linux Sound Architecture >> ARM sound devices +CONFIG_SND_ARM p policy<{'armhf': 'y'}> + +# 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 (AVR32 and AT91) + +# Menu: Device Drivers >> Sound card support >> Advanced Linux Sound Architecture >> FireWire sound devices +CONFIG_SND_FIREWIRE y +CONFIG_SND_DICE 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 y +CONFIG_SND_AC97_POWER_SAVE y +CONFIG_SND_AC97_POWER_SAVE_DEFAULT D + +# Menu: Device Drivers >> Sound card support >> Advanced Linux Sound Architecture >> HD-Audio +CONFIG_SND_HDA_PREALLOC_SIZE D +CONFIG_SND_HDA_HWDEP y +CONFIG_SND_HDA_RECONFIG y note +CONFIG_SND_HDA_INPUT_BEEP y +CONFIG_SND_HDA_INPUT_BEEP_MODE 0 +CONFIG_SND_HDA_INPUT_JACK y +CONFIG_SND_HDA_PATCH_LOADER y +CONFIG_SND_HDA_CODEC_CA0132_DSP y +CONFIG_SND_HDA_POWER_SAVE_DEFAULT D + +# Menu: Device Drivers >> Sound card support >> Advanced Linux Sound Architecture >> ISA sound devices +CONFIG_SND_ISA y +CONFIG_SND_SB16_CSP y + +# 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 y +CONFIG_SND_BT87X_OVERCLOCK n +CONFIG_SND_CS46XX_NEW_DSP y +CONFIG_SND_ES1968_INPUT y +CONFIG_SND_ES1968_RADIO y +CONFIG_SND_FM801_TEA575X_BOOL y +CONFIG_SND_MAESTRO3_INPUT y + +# Menu: Device Drivers >> Sound card support >> Advanced Linux Sound Architecture >> PCMCIA sound devices +CONFIG_SND_PCMCIA y + +# Menu: Device Drivers >> Sound card support >> Advanced Linux Sound Architecture >> PowerPC sound devices +CONFIG_SND_PPC p policy<{'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_SND_POWERMAC p policy<{'powerpc': 'm'}> +CONFIG_SND_POWERMAC_AUTO_DRC p policy<{'powerpc': 'y'}> +CONFIG_SND_PS3 p policy<{'powerpc': 'm'}> +CONFIG_SND_PS3_DEFAULT_START_DELAY p policy<{'powerpc': '2000'}> + +# Menu: Device Drivers >> Sound card support >> Advanced Linux Sound Architecture >> SPI sound devices +CONFIG_SND_SPI y + +# Menu: Device Drivers >> Sound card support >> Advanced Linux Sound Architecture >> SUPERH sound devices + +# 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 y +CONFIG_SND_USB_CAIAQ_INPUT y + +# Menu: Device Drivers >> Sound card support >> Open Sound System (DEPRECATED) + +# Menu: Device Drivers >> Sound card support >> Open Sound System (DEPRECATED) >> OSS sound modules + +# Menu: Device Drivers >> Sound card support >> Open Sound System (DEPRECATED) >> Support for Turtle Beach MultiSound Classic, Tahiti, Monterey + +# Menu: Device Drivers >> Sound card support >> Open Sound System (DEPRECATED) >> Support for Turtle Beach MultiSound Pinnacle, Fiji + +# Menu: Device Drivers >> Staging drivers +CONFIG_STAGING y +CONFIG_SLICOSS p policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_88EU_AP_MODE y +CONFIG_8723AU_AP_MODE y +CONFIG_8723AU_BT_COEXIST y +CONFIG_USB_EMXX p policy<{'armhf': 'y'}> +CONFIG_FT1000_PCMCIA p policy<{'amd64': 'm', 'i386': 'm', 'powerpc': 'm'}> +CONFIG_FWTTY_MAX_TOTAL_PORTS 64 +CONFIG_FWTTY_MAX_CARD_PORTS 32 +CONFIG_MTD_SPINAND_ONDIEECC y +CONFIG_LNET_MAX_PAYLOAD 1048576 +CONFIG_CRYPTO_SKEIN p policy<{'amd64': 'y'}> +CONFIG_COMMON_CLK_XLNX_CLKWZRD p policy<{'arm64': 'n', 'armhf': 'n', 'powerpc-powerpc64-emb': 'n', 'powerpc-powerpc-e500mc': 'n'}> + +# Menu: Device Drivers >> Staging drivers >> Android + +# Menu: Device Drivers >> Staging drivers >> Android >> Ion Memory Manager + +# Menu: Device Drivers >> Staging drivers >> Data acquisition support (comedi) +CONFIG_COMEDI_DEFAULT_BUF_SIZE_KB 2048 +CONFIG_COMEDI_DEFAULT_BUF_MAXSIZE_KB 20480 + +# Menu: Device Drivers >> Staging drivers >> Data acquisition support (comedi) >> Comedi ISA and PC/104 drivers +CONFIG_COMEDI_ISA_DRIVERS y + +# Menu: Device Drivers >> Staging drivers >> Data acquisition support (comedi) >> Comedi PCI drivers +CONFIG_COMEDI_PCI_DRIVERS m + +# Menu: Device Drivers >> Staging drivers >> Data acquisition support (comedi) >> Comedi PCMCIA drivers +CONFIG_COMEDI_PCMCIA_DRIVERS m + +# Menu: Device Drivers >> Staging drivers >> Data acquisition support (comedi) >> Comedi USB drivers +CONFIG_COMEDI_USB_DRIVERS m + +# Menu: Device Drivers >> Staging drivers >> Data acquisition support (comedi) >> Comedi misc drivers +CONFIG_COMEDI_MISC_DRIVERS y + +# Menu: Device Drivers >> Staging drivers >> GCT GDM72xx WiMAX support +CONFIG_WIMAX_GDM72XX_QOS y +CONFIG_WIMAX_GDM72XX_K_MODE y +CONFIG_WIMAX_GDM72XX_WIMAX2 y +CONFIG_WIMAX_GDM72XX_USB_PM y + +# Menu: Device Drivers >> Staging drivers >> GCT GDM72xx WiMAX support >> Select interface +CONFIG_WIMAX_GDM72XX_USB y + +# Menu: Device Drivers >> Staging drivers >> IIO staging drivers +CONFIG_IIO_SIMPLE_DUMMY_EVENTS n note +CONFIG_IIO_SIMPLE_DUMMY_BUFFER n note + +# Menu: Device Drivers >> Staging drivers >> IIO staging drivers >> Accelerometers + +# Menu: Device Drivers >> Staging drivers >> IIO staging drivers >> Active energy metering IC + +# Menu: Device Drivers >> Staging drivers >> IIO staging drivers >> Analog digital bi-direction converters + +# Menu: Device Drivers >> Staging drivers >> IIO staging drivers >> Analog to digital converters + +# Menu: Device Drivers >> Staging drivers >> IIO staging drivers >> Capacitance to digital converters + +# Menu: Device Drivers >> Staging drivers >> IIO staging drivers >> Digital gyroscope sensors + +# Menu: Device Drivers >> Staging drivers >> IIO staging drivers >> Direct Digital Synthesis + +# Menu: Device Drivers >> Staging drivers >> IIO staging drivers >> Light sensors + +# Menu: Device Drivers >> Staging drivers >> IIO staging drivers >> Magnetometer sensors + +# Menu: Device Drivers >> Staging drivers >> IIO staging drivers >> Network Analyzer, Impedance Converters + +# Menu: Device Drivers >> Staging drivers >> IIO staging drivers >> Resolver to digital converters + +# Menu: Device Drivers >> Staging drivers >> Line6 USB support +CONFIG_LINE6_USB_IMPULSE_RESPONSE n + +# Menu: Device Drivers >> Staging drivers >> Lustre file system client support +CONFIG_LUSTRE_OBD_MAX_IOCTL_BUFFER D + +# Menu: Device Drivers >> Staging drivers >> Media staging drivers +CONFIG_STAGING_MEDIA y +CONFIG_DT3155_CCIR n note +CONFIG_DT3155_STREAMING y +CONFIG_VIDEO_OMAP4 n + +# Menu: Device Drivers >> Staging drivers >> Media staging drivers >> ISA and parallel port devices +CONFIG_MEDIA_PARPORT_SUPPORT y + +# Menu: Device Drivers >> Staging drivers >> Media staging drivers >> Linux Infrared Remote Control IR receiver/transmitter drivers +CONFIG_LIRC_STAGING y +CONFIG_LIRC_SERIAL_TRANSMITTER y + +# Menu: Device Drivers >> Staging drivers >> NV Tegra Embedded Controller SMBus Interface + +# Menu: Device Drivers >> Staging drivers >> Parallel port LCD/Keypad Panel support +CONFIG_PANEL_PARPORT 0 +CONFIG_PANEL_PROFILE 5 +CONFIG_PANEL_CHANGE_MESSAGE n + +# Menu: Device Drivers >> Staging drivers >> Parallel port LCD/Keypad Panel support >> LCD type (0=none, 1=custom, 2=old //, 3=ks0074, 4=hantronix, 5=Nexcom) + +# Menu: Device Drivers >> Staging drivers >> 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 >> Staging drivers >> Speakup console speech + +# Menu: Device Drivers >> Staging drivers >> Speakup console speech >> Speakup core + +# Menu: Device Drivers >> Staging drivers >> Support for rtllib wireless devices + +# Menu: Device Drivers >> Staging drivers >> Unisys SPAR driver support +CONFIG_UNISYSSPAR p policy<{'amd64': 'y'}> +CONFIG_UNISYS_VISORUTIL p policy<{'amd64': 'm'}> +CONFIG_UNISYS_VISORCHANNEL p policy<{'amd64': 'm'}> +CONFIG_UNISYS_VISORCHIPSET p policy<{'amd64': 'm'}> +CONFIG_UNISYS_CHANNELSTUB p policy<{'amd64': 'm'}> +CONFIG_UNISYS_UISLIB p policy<{'amd64': 'm'}> +CONFIG_UNISYS_VIRTPCI p policy<{'amd64': 'm'}> +CONFIG_UNISYS_VIRTHBA p policy<{'amd64': 'm'}> + +# Menu: Device Drivers >> TI VLYNQ + +# Menu: Device Drivers >> USB support +CONFIG_USB_SUPPORT y +CONFIG_USB_LED_TRIG y + +# Menu: Device Drivers >> USB support >> ChipIdea Highspeed Dual Role Controller +CONFIG_USB_CHIPIDEA_UDC y +CONFIG_USB_CHIPIDEA_HOST y + +# Menu: Device Drivers >> USB support >> Support for Host-side USB +#CONFIG_USB_MUSB_OMAP2PLUS y +CONFIG_USB y +CONFIG_USB_ANNOUNCE_NEW_DEVICES y +CONFIG_USB_DYNAMIC_MINORS y +CONFIG_USB_DEFAULT_PERSIST y +CONFIG_USB_OTG n note +CONFIG_USB_OTG_WHITELIST n note +CONFIG_USB_OTG_BLACKLIST_HUB n note +CONFIG_USB_OTG_FSM n note> +CONFIG_USB_XHCI_HCD y note +CONFIG_USB_UHCI_HCD y note +CONFIG_USB_HCD_BCMA p policy<(arch armel armhf &/ value n) | value m> note +CONFIG_USB_HCD_SSB p policy<(arch armel armhf &/ value n) | value m> note +CONFIG_USB_SISUSBVGA_CON n note +CONFIG_USB_SL811_HCD_ISO y +CONFIG_USB_HCD_TEST_MODE n + +# Menu: Device Drivers >> USB support >> Support for Host-side USB >> DesignWare USB2 DRD Core Support +CONFIG_USB_DWC2 y +CONFIG_USB_DWC2_PLATFORM y +CONFIG_USB_DWC2_PCI y +CONFIG_USB_DWC2_TRACK_MISSED_SOFS n + +# Menu: Device Drivers >> USB support >> Support for Host-side USB >> DesignWare USB2 DRD Core Support >> DWC2 Mode Selection +CONFIG_USB_DWC2_HOST p policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'n', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_USB_DWC2_PERIPHERAL p policy<{'armhf': 'n'}> +CONFIG_USB_DWC2_DUAL_ROLE p policy<{'armhf': 'y'}> + +# Menu: Device Drivers >> USB support >> Support for Host-side USB >> DesignWare USB3 DRD Core Support +CONFIG_USB_DWC3_OMAP p policy<{'armhf': 'm'}> +CONFIG_USB_DWC3_EXYNOS p policy<{'armhf': 'm'}> +CONFIG_USB_DWC3_QCOM p policy<{'armhf': 'm'}> +CONFIG_DWC3_HOST_USB3_LPM_ENABLE y + +# Menu: Device Drivers >> USB support >> Support for Host-side USB >> DesignWare USB3 DRD Core Support >> DWC3 Mode Selection +CONFIG_USB_DWC3_DUAL_ROLE y + +# Menu: Device Drivers >> USB support >> Support for Host-side USB >> EHCI HCD (USB 2.0) support +# +CONFIG_USB_EHCI_HCD_PLATFORM p mark policy<{'amd64': 'y', 'arm64': 'm', 'armhf': 'n', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'm'}> note mark +CONFIG_USB_EHCI_HCD y note +CONFIG_USB_EHCI_ROOT_HUB_TT y +CONFIG_USB_EHCI_TT_NEWSCHED y +CONFIG_XPS_USB_HCD_XILINX y +CONFIG_USB_EHCI_FSL y +CONFIG_USB_EHCI_HCD_PPC_OF y + +# Menu: Device Drivers >> USB support >> Support for Host-side USB >> Inventra Highspeed Dual Role Controller (TI, ADI, ...) +CONFIG_USB_MUSB_HDRC p policy<(arch armel armhf &/ value y) | value m> note +CONFIG_USB_MUSB_TUSB6010 p policy<(arch armel armhf &/ value n) | value m> note + +# Menu: Device Drivers >> USB support >> Support for Host-side USB >> Inventra Highspeed Dual Role Controller (TI, ADI, ...) >> MUSB DMA mode +CONFIG_USB_UX500_DMA p policy<{'amd64': 'n', 'arm64': 'y', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'y'}> +CONFIG_USB_INVENTRA_DMA p policy<{'armhf': 'n'}> +CONFIG_USB_TI_CPPI41_DMA p policy<{'armhf': 'n'}> +CONFIG_MUSB_PIO_ONLY p policy<{'amd64': 'y', 'arm64': 'n', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'n'}> + +# Menu: Device Drivers >> USB support >> Support for Host-side USB >> Inventra Highspeed Dual Role Controller (TI, ADI, ...) >> MUSB Mode Selection +CONFIG_USB_MUSB_DUAL_ROLE y + +# Menu: Device Drivers >> USB support >> Support for Host-side USB >> OHCI HCD (USB 1.1) support +CONFIG_USB_OHCI_HCD y note +CONFIG_USB_OHCI_HCD_PPC_OF_BE p policy<{'powerpc': 'y', 'ppc64el': 'n'}> +CONFIG_USB_OHCI_HCD_PPC_OF_LE p policy<{'powerpc': 'n', 'ppc64el': 'n'}> mark + +# Menu: Device Drivers >> USB support >> Support for Host-side USB >> USB DSL modem support + +# Menu: Device Drivers >> USB support >> Support for Host-side USB >> USB Mass Storage support +CONFIG_REALTEK_AUTOPM y + +# Menu: Device Drivers >> USB support >> Support for Host-side USB >> USB Serial Converter support +CONFIG_USB_SERIAL_GENERIC y +CONFIG_USB_SERIAL_SAFE_PADDED n +CONFIG_USB_SERIAL_DEBUG m note +CONFIG_USB_SERIAL_MOS7715_PARPORT y + +# Menu: Device Drivers >> USB support >> Support for Host-side USB >> USB Serial Converter support >> USB Keyspan USA-xxx Serial Driver +CONFIG_USB_SERIAL_KEYSPAN_MPR 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_USA19 y +CONFIG_USB_SERIAL_KEYSPAN_USA18X y +CONFIG_USB_SERIAL_KEYSPAN_USA19W y +CONFIG_USB_SERIAL_KEYSPAN_USA19QW y +CONFIG_USB_SERIAL_KEYSPAN_USA19QI y +CONFIG_USB_SERIAL_KEYSPAN_USA49W y +CONFIG_USB_SERIAL_KEYSPAN_USA49WLC y + +# Menu: Device Drivers >> USB support >> Support for Host-side USB >> USB/IP support + +# Menu: Device Drivers >> USB support >> USB Gadget Support +CONFIG_USB_GADGET p policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'y', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_GADGET_VBUS_DRAW D +CONFIG_USB_GADGET_STORAGE_NUM_BUFFERS D + +# Menu: Device Drivers >> USB support >> USB Gadget Support >> USB Gadget Drivers +CONFIG_USB_ZERO_HNPTEST y +CONFIG_GADGET_UAC1 y +CONFIG_USB_ETH_RNDIS y +CONFIG_USB_ETH_EEM y +CONFIG_USB_G_MULTI p policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'm', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_USB_G_MULTI_RNDIS p policy<{'armhf': 'y'}> +CONFIG_USB_G_MULTI_CDC p policy<{'armhf': 'y'}> + +# Menu: Device Drivers >> USB support >> USB Gadget Support >> USB Gadget Drivers >> EHCI Debug Device mode +CONFIG_USB_G_DBGP_SERIAL y + +# Menu: Device Drivers >> USB support >> USB Gadget Support >> USB Gadget Drivers >> Function Filesystem +CONFIG_USB_FUNCTIONFS_ETH y +CONFIG_USB_FUNCTIONFS_RNDIS y +CONFIG_USB_FUNCTIONFS_GENERIC y + +# Menu: Device Drivers >> USB support >> USB Gadget Support >> USB Gadget Drivers >> USB functions configurable through configfs +CONFIG_USB_CONFIGFS_SERIAL y +CONFIG_USB_CONFIGFS_ACM y +CONFIG_USB_CONFIGFS_OBEX y +CONFIG_USB_CONFIGFS_NCM y +CONFIG_USB_CONFIGFS_ECM y +CONFIG_USB_CONFIGFS_ECM_SUBSET y +CONFIG_USB_CONFIGFS_RNDIS y +CONFIG_USB_CONFIGFS_EEM y +CONFIG_USB_CONFIGFS_PHONET y +CONFIG_USB_CONFIGFS_MASS_STORAGE y +CONFIG_USB_CONFIGFS_F_LB_SS y +CONFIG_USB_CONFIGFS_F_FS y +CONFIG_USB_CONFIGFS_F_UAC1 y +CONFIG_USB_CONFIGFS_F_UAC2 y +CONFIG_USB_CONFIGFS_F_MIDI y +CONFIG_USB_CONFIGFS_F_HID y + +# Menu: Device Drivers >> USB support >> USB Gadget Support >> USB Peripheral Controller +CONFIG_USB_M66592 n note +CONFIG_USB_DUMMY_HCD n flag +CONFIG_USB_NET2272_DMA y + +# Menu: Device Drivers >> USB support >> USB Physical Layer drivers +CONFIG_FSL_USB2_OTG p policy<{'powerpc': 'n'}> +CONFIG_NOP_USB_XCEIV p policy<{'armhf': 'y', '*': 'm'}> note +CONFIG_TAHVO_USB_HOST_BY_DEFAULT y +CONFIG_USB_MXS_PHY p policy<{'armhf': 'y'}> +CONFIG_USB_ULPI p policy<{'arm64': 'y', 'armhf': 'y'}> + +# Menu: Device Drivers >> Ultra Wideband devices + +# Menu: Device Drivers >> Userspace I/O drivers + +# Menu: Device Drivers >> VFIO Non-Privileged userspace driver framework +CONFIG_VFIO_PCI_VGA y + +# Menu: Device Drivers >> VME bridge support +CONFIG_VME_BUS y + +# Menu: Device Drivers >> Virtio drivers +CONFIG_VIRTIO_PCI y +CONFIG_VIRTIO_BALLOON y +CONFIG_VIRTIO_MMIO y +CONFIG_VIRTIO_MMIO_CMDLINE_DEVICES y + +# Menu: Device Drivers >> Virtualization drivers +CONFIG_VIRT_DRIVERS y + +# Menu: Device Drivers >> Voltage and Current Regulator Support +CONFIG_REGULATOR y +CONFIG_REGULATOR_FIXED_VOLTAGE p policy<{'armhf': 'y', '*': 'm'}> note +CONFIG_REGULATOR_TI_ABB p policy<{'armhf': 'y'}> +CONFIG_REGULATOR_TWL4030 p mark policy<{'armhf-generic': 'y', '*': 'm'}> note + +# Menu: Device Drivers >> Watchdog Timer Support +CONFIG_WATCHDOG y +CONFIG_WATCHDOG_NOWAYOUT n +CONFIG_WATCHDOG_CORE y +CONFIG_INTEL_SCU_WATCHDOG p policy<{'i386': 'y'}> +CONFIG_ITCO_VENDOR_SUPPORT p policy<{'amd64': 'y', 'i386': 'y'}> +CONFIG_HPWDT_NMI_DECODING p policy<{'amd64': 'y', 'i386': 'y'}> +CONFIG_BOOKE_WDT p policy<{'powerpc': 'y'}> +CONFIG_BOOKE_WDT_DEFAULT_TIMEOUT 38 + +# Menu: Device Drivers >> X86 Platform Specific Device Drivers +CONFIG_X86_PLATFORM_DEVICES y +CONFIG_SONYPI_COMPAT y + +# Menu: Device Drivers >> X86 Platform Specific Device Drivers >> Intel SCU IPC Support +CONFIG_INTEL_SCU_IPC y +CONFIG_GPIO_INTEL_PMIC y + +# Menu: Device Drivers >> X86 Platform Specific Device Drivers >> ThinkPad ACPI Laptop Extras +CONFIG_THINKPAD_ACPI_ALSA_SUPPORT y +CONFIG_THINKPAD_ACPI_DEBUGFACILITIES y +CONFIG_THINKPAD_ACPI_UNSAFE_LEDS n +CONFIG_THINKPAD_ACPI_VIDEO y +CONFIG_THINKPAD_ACPI_HOTKEY_POLL y + +# Menu: Device Drivers >> X86 Platform Specific Device Drivers >> WMI + +# Menu: Device Drivers >> Xen driver support +CONFIG_XEN_BACKEND y +CONFIG_XEN_COMPAT_XENFS y +CONFIG_XEN_SYS_HYPERVISOR y +CONFIG_XEN_ACPI_PROCESSOR p mark policy<{'i386': 'y', 'amd64': 'y'}> +CONFIG_XEN_MCE_LOG y + +# Menu: Device Drivers >> Xen driver support >> Xen memory balloon driver +CONFIG_XEN_BALLOON y +CONFIG_XEN_SELFBALLOONING y +CONFIG_XEN_BALLOON_MEMORY_HOTPLUG y +CONFIG_XEN_SCRUB_PAGES y + +# Menu: Enable loadable module support +CONFIG_MODULES y +CONFIG_MODULE_FORCE_LOAD n +CONFIG_MODULE_UNLOAD y +CONFIG_MODULE_FORCE_UNLOAD n +CONFIG_MODVERSIONS y +CONFIG_MODULE_SRCVERSION_ALL y +CONFIG_MODULE_COMPRESS n + +# Menu: Enable loadable module support >> Compression algorithm + +# Menu: Enable loadable module support >> Module signature verification +CONFIG_MODULE_SIG y +CONFIG_MODULE_SIG_FORCE n +CONFIG_MODULE_SIG_ALL y + +# Menu: Enable loadable module support >> Module signature verification >> Which hash algorithm should modules be signed with? +CONFIG_MODULE_SIG_SHA512 y + +# Menu: Enable the block layer +CONFIG_BLOCK y +CONFIG_LBDAF y +CONFIG_BLK_DEV_BSG y +CONFIG_BLK_DEV_BSGLIB y +CONFIG_BLK_DEV_INTEGRITY y +CONFIG_BLK_DEV_THROTTLING y note +CONFIG_BLK_CMDLINE_PARSER y + +# Menu: Enable the block layer >> IO Schedulers +CONFIG_IOSCHED_DEADLINE y +CONFIG_IOSCHED_CFQ y +CONFIG_CFQ_GROUP_IOSCHED y + +# Menu: Enable the block layer >> IO Schedulers >> Default I/O scheduler +CONFIG_DEFAULT_DEADLINE p policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_DEFAULT_CFQ p policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> + +# Menu: Enable the block layer >> Partition Types +set +tree 'Enable the block layer>>Partition Types' ?pattern _PARTITION$ !flag EXPERIMENTAL = y +set +tree 'Enable the block layer>>Partition Types' ?pattern _DISKLABEL$ !flag EXPERIMENTAL = y + +# Menu: Enable the block layer >> Partition Types >> Advanced partition selection +CONFIG_PARTITION_ADVANCED y + +# Menu: Disable the block layer >> Partition Types >> Advanced partition selection >> Acorn partition support +CONFIG_ACORN_PARTITION_CUMANA n +CONFIG_ACORN_PARTITION_EESOX n +CONFIG_ACORN_PARTITION_ICS n +CONFIG_ACORN_PARTITION_ADFS n +CONFIG_ACORN_PARTITION_POWERTEC n +CONFIG_ACORN_PARTITION_RISCIX n + +# Menu: Enable the block layer >> Partition Types >> Advanced partition selection >> PC BIOS (MSDOS partition tables) support +CONFIG_MINIX_SUBPARTITION y + +# Menu: Endianness selection +CONFIG_CPU_BIG_ENDIAN ? + +# Menu: Endianness selection >> Architecture: powerpc +CONFIG_CPU_LITTLE_ENDIAN ? + +# Menu: Executable file formats / Emulations +CONFIG_BINFMT_ELF y +CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS y +CONFIG_BINFMT_SCRIPT y mark note +CONFIG_BINFMT_MISC m +CONFIG_COREDUMP y +CONFIG_BINFMT_ELF y +CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS y +CONFIG_BINFMT_SCRIPT y +CONFIG_BINFMT_AOUT p policy<{'i386': 'm'}> +CONFIG_COREDUMP y + +# Menu: Executable file formats / Emulations >> Architecture: arm + +# Menu: Executable file formats / Emulations >> Architecture: x86 +CONFIG_IA32_EMULATION y +CONFIG_IA32_AOUT n note mark +CONFIG_X86_X32 y + +# Menu: File systems +set +tree 'File systems' ?flag EXPERIMENTAL ?type bool = n +set +tree 'File systems' ?flag EXPERIMENTAL ?type tristate = m note` +set +tree 'File systems' !flag EXPERIMENTAL ?type tristate = m +set +tree 'File systems' ?pattern _POSIX_ACL$ !flag EXPERIMENTAL = y +set +tree 'File systems' ?pattern _SECURITY$ !flag EXPERIMENTAL = y +set +tree 'File systems' ?pattern _XATTR$ !flag EXPERIMENTAL = y +set +tree 'File systems' ?pattern _FSCACHE$ !flag EXPERIMENTAL = y +# +CONFIG_EXT2_FS n note +CONFIG_EXT3_FS n note +CONFIG_GFS2_FS_LOCKING_DLM y +CONFIG_FILE_LOCKING y +CONFIG_DNOTIFY y +CONFIG_INOTIFY_USER y +CONFIG_FANOTIFY y +CONFIG_FANOTIFY_ACCESS_PERMISSIONS y +CONFIG_QUOTA_NETLINK_INTERFACE y +CONFIG_FUSE_FS y note +CONFIG_OVERLAY_FS_V1 y + +# Menu: File systems >> Btrfs filesystem support +CONFIG_BTRFS_FS_POSIX_ACL y +CONFIG_BTRFS_FS_RUN_SANITY_TESTS n +CONFIG_BTRFS_ASSERT n + +# Menu: File systems >> CD-ROM/DVD Filesystems +CONFIG_JOLIET y +CONFIG_ZISOFS y + +# Menu: File systems >> Caches +CONFIG_CACHEFILES_HISTOGRAM n + +# Menu: File systems >> Caches >> General filesystem local caching manager +CONFIG_FSCACHE_STATS y +CONFIG_FSCACHE_HISTOGRAM n +CONFIG_FSCACHE_OBJECT_LIST n + +# Menu: File systems >> DOS/FAT/NT Filesystems +CONFIG_VFAT_FS y mark note +CONFIG_FAT_DEFAULT_CODEPAGE 437 +CONFIG_FAT_DEFAULT_IOCHARSET "iso8859-1" +CONFIG_NTFS_RW n + +# Menu: File systems >> Distributed Lock Manager (DLM) + +# Menu: File systems >> JFS filesystem support +CONFIG_JFS_STATISTICS y + +# Menu: File systems >> Miscellaneous filesystems +CONFIG_MISC_FILESYSTEMS y +CONFIG_ECRYPT_FS y mark note +CONFIG_ECRYPT_FS_MESSAGING y +CONFIG_LOGFS n note +CONFIG_EFIVAR_FS y note +CONFIG_UBIFS_FS_ADVANCED_COMPR n +CONFIG_UBIFS_FS_LZO y +CONFIG_UBIFS_FS_ZLIB y + +# Menu: File systems >> Miscellaneous filesystems >> F2FS filesystem support (EXPERIMENTAL) +CONFIG_F2FS_STAT_FS y +CONFIG_F2FS_CHECK_FS n + +# Menu: File systems >> Miscellaneous filesystems >> Journalling Flash File System v2 (JFFS2) support +CONFIG_JFFS2_FS_DEBUG 0 +CONFIG_JFFS2_FS_WRITEBUFFER y +CONFIG_JFFS2_FS_WBUF_VERIFY n +CONFIG_JFFS2_SUMMARY n + +# Menu: File systems >> Miscellaneous filesystems >> Journalling Flash File System v2 (JFFS2) support >> Advanced compression options for JFFS2 +CONFIG_JFFS2_COMPRESSION_OPTIONS y +CONFIG_JFFS2_ZLIB y +CONFIG_JFFS2_LZO y +CONFIG_JFFS2_RTIME y +CONFIG_JFFS2_RUBIN 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_FAVOURLZO y + +# Menu: File systems >> Miscellaneous filesystems >> Persistent store support +CONFIG_PSTORE y +CONFIG_PSTORE_CONSOLE p policy<{'armhf': 'y', '*': 'n'}> note +CONFIG_PSTORE_RAM p policy<{'armhf': 'y', '*': 'm'}> +CONFIG_PSTORE_FTRACE n + +# Menu: File systems >> Miscellaneous filesystems >> RomFS backing stores +CONFIG_ROMFS_BACKED_BY_BLOCK y + +# Menu: File systems >> Miscellaneous filesystems >> SquashFS 4.0 - Squashed file system support +CONFIG_SQUASHFS_ZLIB y +CONFIG_SQUASHFS_LZ4 n +CONFIG_SQUASHFS_LZO y +CONFIG_SQUASHFS_XZ y +CONFIG_SQUASHFS_4K_DEVBLK_SIZE n note +CONFIG_SQUASHFS_EMBEDDED n +CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE 3 + +# Menu: File systems >> Miscellaneous filesystems >> SquashFS 4.0 - Squashed file system support >> Decompressor parallelisation options +CONFIG_SQUASHFS_DECOMP_MULTI_PERCPU y + +# Menu: File systems >> Miscellaneous filesystems >> SquashFS 4.0 - Squashed file system support >> File decompression options +CONFIG_SQUASHFS_FILE_DIRECT y + +# Menu: File systems >> Native language support +CONFIG_NLS y note +CONFIG_NLS_CODEPAGE_437 y +CONFIG_NLS_DEFAULT "utf8" + +# Menu: File systems >> Network File Systems + +# XXX: to be removed +CONFIG_NETWORK_FILESYSTEMS y +CONFIG_NFSD_V3 y +CONFIG_NFSD_V3_ACL y +CONFIG_NFSD_V4 y +CONFIG_NFSD_V4_SECURITY_LABEL y +CONFIG_NFSD_FAULT_INJECTION n +CONFIG_SUNRPC_DEBUG y +CONFIG_CEPH_FSCACHE y +CONFIG_AFS_FSCACHE y + +# Menu: File systems >> Network File Systems >> CIFS support (advanced network filesystem, SMBFS successor) +CONFIG_CIFS_STATS y +CONFIG_CIFS_STATS2 n +CONFIG_CIFS_WEAK_PW_HASH y +CONFIG_CIFS_UPCALL y +CONFIG_CIFS_POSIX y +CONFIG_CIFS_ACL y +CONFIG_CIFS_DEBUG y +CONFIG_CIFS_DEBUG2 n +CONFIG_CIFS_DFS_UPCALL y +CONFIG_CIFS_SMB2 y + +# Menu: File systems >> Network File Systems >> NCP file system support (to mount NetWare volumes) +CONFIG_NCPFS_PACKET_SIGNING y +CONFIG_NCPFS_IOCTL_LOCKING y +CONFIG_NCPFS_STRONG y +CONFIG_NCPFS_NFS_NS y +CONFIG_NCPFS_OS2_NS y +CONFIG_NCPFS_SMALLDOS n +CONFIG_NCPFS_NLS y +CONFIG_NCPFS_EXTRAS y + +# Menu: File systems >> Network File Systems >> NFS client support +CONFIG_NFS_V3_ACL y +CONFIG_NFS_SWAP y +CONFIG_NFS_USE_LEGACY_DNS n + +# Menu: File systems >> Network File Systems >> NFS client support >> NFS client support for NFSv4.1 +CONFIG_NFS_V4_1 y +CONFIG_NFS_V4_2 y +CONFIG_NFS_V4_1_IMPLEMENTATION_ID_DOMAIN "kernel.org" +CONFIG_NFS_V4_1_MIGRATION y + +# Menu: File systems >> Network File Systems >> Plan 9 Resource Sharing Support (9P2000) +CONFIG_9P_FSCACHE y + +# Menu: File systems >> OCFS2 file system support +CONFIG_OCFS2_FS_STATS y +CONFIG_OCFS2_DEBUG_MASKLOG y + +# Menu: File systems >> Pseudo filesystems +CONFIG_TMPFS_POSIX_ACL y mark note +CONFIG_SYSFS y +CONFIG_TMPFS y +CONFIG_HUGETLBFS y + +# Menu: File systems >> Pseudo filesystems >> /proc file system support +CONFIG_PROC_FS y +CONFIG_PROC_KCORE y +CONFIG_PROC_VMCORE y +CONFIG_PROC_SYSCTL y +CONFIG_PROC_PAGE_MONITOR y + +# Menu: File systems >> Quota support +CONFIG_QUOTA y +CONFIG_PRINT_QUOTA_WARNING n + +# Menu: File systems >> Reiserfs support +CONFIG_REISERFS_CHECK n +CONFIG_REISERFS_PROC_INFO n + +# Menu: File systems >> The Extended 4 (ext4) filesystem +CONFIG_EXT4_FS y note +CONFIG_EXT4_USE_FOR_EXT23 y + +# Menu: File systems >> XFS filesystem support +CONFIG_XFS_QUOTA y +CONFIG_XFS_RT y +CONFIG_XFS_WARN n + +# Menu: Firmware Drivers +CONFIG_EDD p policy<{'amd64': 'y', 'i386': 'y'}> +CONFIG_EDD_OFF p policy<{'amd64': 'y', 'i386': 'y'}> +CONFIG_FIRMWARE_MEMMAP p policy<{'amd64': 'y', 'arm64': 'y', 'i386': 'y'}> +CONFIG_DELL_RBU p policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_DCDBAS p policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_DMIID p policy<{'amd64': 'y', 'arm64': 'y', 'i386': 'y'}> +CONFIG_DMI_SYSFS p policy<{'amd64': 'm', 'arm64': 'm', 'i386': 'm'}> +CONFIG_ISCSI_IBFT_FIND p policy<{'amd64': 'y', 'i386': 'y'}> +CONFIG_ISCSI_IBFT p policy<{'amd64': 'm', 'i386': 'm'}> + +# Menu: Firmware Drivers >> EFI (Extensible Firmware Interface) Support +CONFIG_EFI_VARS p mark policy<{'amd64': 'y', 'arm64': 'y', 'i386': 'y'}> note +CONFIG_EFI_VARS_PSTORE_DEFAULT_DISABLE p policy<{'amd64': 'n', 'arm64': 'n', 'i386': 'n'}> +CONFIG_EFI_RUNTIME_MAP p policy<{'amd64': 'y', 'i386': 'y'}> + +# Menu: Firmware Drivers >> Google Firmware Drivers +CONFIG_GOOGLE_FIRMWARE n + +# Menu: Firmware Drivers >> Google Firmware Drivers >> Google Firmware Drivers + +# Menu: Floating point emulation >> Architecture: arm +CONFIG_VFP p policy<{'armhf': 'y'}> +CONFIG_NEON p policy<{'armhf': 'y'}> +CONFIG_KERNEL_MODE_NEON p policy<{'arm64': 'y', 'armhf': 'y'}> + +# Menu: General setup +CONFIG_CROSS_COMPILE "" +CONFIG_COMPILE_TEST n +CONFIG_LOCALVERSION "" +CONFIG_LOCALVERSION_AUTO n +CONFIG_DEFAULT_HOSTNAME "(none)" +CONFIG_VERSION_SIGNATURE "" +CONFIG_SWAP y +CONFIG_SYSVIPC y +CONFIG_POSIX_MQUEUE y +CONFIG_CROSS_MEMORY_ATTACH y +CONFIG_FHANDLE y mark note +CONFIG_USELIB y +CONFIG_AUDIT y +CONFIG_AUDITSYSCALL y +CONFIG_IKCONFIG n +CONFIG_LOG_BUF_SHIFT p policy<{'amd64': '18', 'arm64': '14', 'armhf': '17', 'i386': '17', 'powerpc': '17', 'ppc64el': '17'}> +CONFIG_LOG_CPU_MAX_BUF_SHIFT 12 +CONFIG_NUMA_BALANCING p policy<{'amd64': 'y', 'powerpc-powerpc64-smp': 'y', 'ppc64el': 'y'}> +CONFIG_NUMA_BALANCING_DEFAULT_ENABLED p policy<{'amd64': 'y', 'powerpc-powerpc64-smp': 'y', 'ppc64el': 'y'}> +CONFIG_CHECKPOINT_RESTORE y +CONFIG_SCHED_AUTOGROUP y +CONFIG_SYSFS_DEPRECATED n mark note +CONFIG_SYSFS_DEPRECATED_V2 p policy<{'*': '-'}> mark note +CONFIG_RELAY y +CONFIG_INIT_FALLBACK y +CONFIG_CC_OPTIMIZE_FOR_SIZE n +CONFIG_EMBEDDED n +CONFIG_COMPAT_BRK n mark mark note +CONFIG_SLUB_CPU_PARTIAL y +CONFIG_SYSTEM_TRUSTED_KEYRING y +CONFIG_PROFILING y +CONFIG_OPROFILE p policy<{'amd64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_OPROFILE_EVENT_MULTIPLEX p policy<{'amd64': 'n', 'i386': 'n'}> +CONFIG_KPROBES p policy<{'amd64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_LOCALVERSION_AUTO n mark note + +# Menu: General setup >> CPU/Task time and stats accounting +CONFIG_BSD_PROCESS_ACCT y +CONFIG_BSD_PROCESS_ACCT_V3 y +CONFIG_TASKSTATS y +CONFIG_TASK_DELAY_ACCT y +CONFIG_TASK_XACCT y +CONFIG_TASK_IO_ACCOUNTING y + +# Menu: General setup >> CPU/Task time and stats accounting >> Cputime accounting +CONFIG_TICK_CPU_ACCOUNTING p policy<{'powerpc-powerpc64-emb': 'n', 'powerpc-powerpc64-smp': 'n', 'ppc64el': 'n', '*': 'y'}> +CONFIG_VIRT_CPU_ACCOUNTING_NATIVE p policy<{'powerpc-powerpc64-emb': 'y', 'powerpc-powerpc64-smp': 'y', 'ppc64el': 'y'}> + +# Menu: General setup >> Choose SLAB allocator +CONFIG_SLUB y + +# Menu: General setup >> Configure standard kernel features (expert users) +CONFIG_EXPERT y +CONFIG_UID16 p policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y'}> +CONFIG_SGETMASK_SYSCALL y +CONFIG_SYSFS_SYSCALL y +CONFIG_SYSCTL_SYSCALL y +CONFIG_KALLSYMS y +CONFIG_KALLSYMS_ALL y +CONFIG_PRINTK y +CONFIG_BUG y +CONFIG_ELF_CORE y +CONFIG_PCSPKR_PLATFORM p policy<{'amd64': 'y', 'i386': 'y', 'powerpc-powerpc64-smp': 'y', 'powerpc-powerpc-smp': 'y', 'ppc64el': 'y'}> +CONFIG_BASE_FULL y +CONFIG_FUTEX y +CONFIG_EPOLL y +CONFIG_SIGNALFD y +CONFIG_TIMERFD y +CONFIG_EVENTFD y +CONFIG_BPF_SYSCALL y +CONFIG_SHMEM y +CONFIG_AIO y +CONFIG_ADVISE_SYSCALLS y +CONFIG_PCI_QUIRKS y +CONFIG_VM_EVENT_COUNTERS y +CONFIG_SLUB_DEBUG y + +# Menu: General setup >> Control Group support +CONFIG_CGROUPS y +CONFIG_CGROUP_FREEZER y +CONFIG_CGROUP_DEVICE y +CONFIG_CPUSETS y +CONFIG_PROC_PID_CPUSET y +CONFIG_CGROUP_CPUACCT y +CONFIG_MEMCG y +CONFIG_MEMCG_SWAP y +CONFIG_MEMCG_SWAP_ENABLED n +CONFIG_MEMCG_KMEM y +CONFIG_CGROUP_HUGETLB y +CONFIG_CGROUP_PERF y +CONFIG_BLK_CGROUP y +CONFIG_DEBUG_BLK_CGROUP n mark + +# Menu: General setup >> Control Group support >> Group CPU scheduler +CONFIG_CGROUP_SCHED y +CONFIG_FAIR_GROUP_SCHED y +CONFIG_CFS_BANDWIDTH y note +CONFIG_RT_GROUP_SCHED n note + +# Menu: General setup >> GCOV-based kernel profiling +CONFIG_GCOV_KERNEL n + +# Menu: General setup >> GCOV-based kernel profiling >> Specify GCOV format + +# Menu: General setup >> IRQ subsystem +CONFIG_IRQ_DOMAIN_DEBUG n +CONFIG_IRQ_FORCED_THREADING_DEFAULT p policy<{'amd64-lowlatency': 'y', 'i386-lowlatency': 'y', '*': 'n'}> +CONFIG_SPARSE_IRQ y + +# Menu: General setup >> Initial RAM filesystem and RAM disk (initramfs/initrd) support +CONFIG_BLK_DEV_INITRD y +CONFIG_INITRAMFS_SOURCE "" +CONFIG_RD_GZIP y +CONFIG_RD_BZIP2 y +CONFIG_RD_LZMA y +CONFIG_RD_XZ y +CONFIG_RD_LZO y +CONFIG_RD_LZ4 y + +# Menu: General setup >> Kernel Performance Events And Counters +CONFIG_PERF_EVENTS y + +# Menu: General setup >> Kernel compression mode +CONFIG_KERNEL_GZIP y + +# Menu: General setup >> Namespaces support +CONFIG_NAMESPACES y +CONFIG_UTS_NS y +CONFIG_IPC_NS y +CONFIG_USER_NS y +CONFIG_PID_NS y +CONFIG_NET_NS y + +# Menu: General setup >> RCU Subsystem +CONFIG_TASKS_RCU n +CONFIG_RCU_USER_QS p policy<{'amd64': 'y', 'armhf': 'n', 'powerpc': 'y', 'ppc64el': 'n'}> +CONFIG_CONTEXT_TRACKING_FORCE n note +CONFIG_RCU_FANOUT p policy<{'amd64': '64', 'arm64': '64', 'armhf': '32', 'i386': '32', 'powerpc-powerpc64-emb': '32', 'powerpc-powerpc64-smp': '64', 'powerpc-powerpc-e500mc': '32', 'powerpc-powerpc-smp': '32', 'ppc64el': '64'}> +CONFIG_RCU_FANOUT_LEAF 16 +CONFIG_RCU_FANOUT_EXACT n +CONFIG_RCU_FAST_NO_HZ p policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'n'}> +CONFIG_RCU_BOOST p policy<{'amd64': 'n', 'i386': 'n'}> +CONFIG_RCU_NOCB_CPU p policy<{'amd64': 'y', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc-powerpc64-emb': 'n', 'powerpc-powerpc64-smp': 'y', 'powerpc-powerpc-e500mc': 'n', 'powerpc-powerpc-smp': 'n', 'ppc64el': 'n'}> + +# Menu: General setup >> RCU Subsystem >> Build-forced no-CBs CPUs +CONFIG_RCU_NOCB_CPU_ALL p policy<{'amd64': 'y', 'powerpc': 'y'}> + +# Menu: General setup >> RCU Subsystem >> RCU Implementation +CONFIG_TREE_RCU p policy<{'amd64-generic': 'y', 'arm64': 'y', 'armhf': 'y', 'i386-generic': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_PREEMPT_RCU p policy<{'amd64-lowlatency': 'y', 'i386-lowlatency': 'y'}> + +# Menu: General setup >> Stack Protector buffer overflow detection +CONFIG_CC_STACKPROTECTOR_STRONG p mark policy<{'powerpc': '-', 'ppc64el': '-', '*': 'y'}> + +# Menu: General setup >> Stack Protector buffer overflow detection >> Architecture: arm + +# Menu: General setup >> Stack Protector buffer overflow detection >> Architecture: powerpc + +# Menu: General setup >> Stack Protector buffer overflow detection >> Architecture: x86 + +# Menu: General setup >> Timers subsystem +CONFIG_NO_HZ_FULL_ALL p policy<{'amd64': 'n', 'powerpc': 'n'}> +CONFIG_NO_HZ_FULL_SYSIDLE p policy<{'amd64': 'y', 'powerpc': 'y'}> +CONFIG_NO_HZ_FULL_SYSIDLE_SMALL p policy<{'amd64': '8', 'powerpc': '8'}> +CONFIG_NO_HZ y +CONFIG_HIGH_RES_TIMERS y + +# Menu: General setup >> Timers subsystem >> Timer tick handling +CONFIG_NO_HZ_IDLE y note + +# Menu: Kernel hacking +CONFIG_MAGIC_SYSRQ y +CONFIG_PANIC_ON_OOPS n note +CONFIG_PANIC_TIMEOUT 0 +CONFIG_STACKTRACE y +CONFIG_PROVIDE_OHCI1394_DMA_INIT n +CONFIG_STRICT_DEVMEM y mark +CONFIG_DEBUG_RODATA p mark policy<{'amd64': 'y', 'i386': 'y', 'arm64': 'y', 'armhf': 'y'}> +CONFIG_DEBUG_SET_MODULE_RONX p mark policy<{'powerpc': '-', 'ppc64el': '-', '*': 'y'}> +CONFIG_EARLY_PRINTK y +CONFIG_DEBUG_RODATA p policy<{'amd64': 'y', 'i386': 'y', 'armhf': 'y'}> + +# Menu: Kernel hacking >> Architecture: arm +CONFIG_ARM_PTDUMP p policy<{'armhf': 'n'}> +CONFIG_ARM_UNWIND p policy<{'armhf': 'y'}> +CONFIG_DEBUG_USER p policy<{'armhf': 'n'}> +CONFIG_DEBUG_LL p policy<{'armhf': 'n'}> +CONFIG_DEBUG_IMX_UART_PORT p policy<{'armhf': '1'}> +CONFIG_DEBUG_VF_UART_PORT p policy<{'armhf': '1'}> +CONFIG_ARM_KPROBES_TEST p policy<{'armhf': 'm'}> +CONFIG_PID_IN_CONTEXTIDR p policy<{'arm64': 'n', 'armhf': 'n'}> + +# Menu: Kernel hacking >> Architecture: powerpc +CONFIG_PPC_DISABLE_WERROR p policy<{'powerpc': 'y', 'ppc64el': 'n'}> mark +CONFIG_PRINT_STACK_DEPTH p policy<{'powerpc': '64', 'ppc64el': '64'}> +CONFIG_HCALL_STATS p policy<{'powerpc-powerpc64-smp': 'n', 'ppc64el': 'n'}> +CONFIG_PPC_EMULATED_STATS p policy<{'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_CODE_PATCHING_SELFTEST p policy<{'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_FTR_FIXUP_SELFTEST p policy<{'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_MSI_BITMAP_SELFTEST p policy<{'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_XMON p policy<{'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_XMON_DEFAULT p policy<{'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_XMON_DISASSEMBLY p policy<{'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_BDI_SWITCH p policy<{'powerpc-powerpc-e500mc': 'n', 'powerpc-powerpc-smp': 'n'}> +CONFIG_BOOTX_TEXT p policy<{'powerpc-powerpc64-smp': 'n', 'powerpc-powerpc-smp': 'n', 'ppc64el': 'n'}> +CONFIG_PPC_EARLY_DEBUG p policy<{'powerpc': 'n', 'ppc64el': 'n'}> + +# Menu: Kernel hacking >> Architecture: x86 +CONFIG_DEBUG_NX_TEST n flag +CONFIG_X86_VERBOSE_BOOTUP p policy<{'amd64': 'n', 'i386': 'n'}> +CONFIG_DEBUG_NX_TEST p policy<{'amd64': 'n', 'i386': 'n'}> +CONFIG_DOUBLEFAULT p policy<{'amd64': 'y', 'i386': 'y'}> +CONFIG_IOMMU_STRESS p policy<{'amd64': 'n', 'i386': 'n'}> +CONFIG_OPTIMIZE_INLINING p policy<{'amd64': 'y', 'i386': 'y'}> +CONFIG_X86_PTDUMP n +CONFIG_X86_DECODER_SELFTEST n flag + +# Menu: Kernel hacking >> Compile-time checks and compiler options +CONFIG_ENABLE_WARN_DEPRECATED n +CONFIG_ENABLE_MUST_CHECK n +CONFIG_FRAME_WARN p policy<{'amd64': '1024', 'arm64': '1024', 'armhf': '1024', 'i386': '1024', 'powerpc': '1024', 'ppc64el': '2048'}> +CONFIG_STRIP_ASM_SYMS n +CONFIG_READABLE_ASM n +CONFIG_UNUSED_SYMBOLS y +CONFIG_HEADERS_CHECK n +CONFIG_FRAME_POINTER y +CONFIG_PAGE_OWNER n + +# Menu: Kernel hacking >> Compile-time checks and compiler options >> Compile the kernel with debug info +CONFIG_DEBUG_INFO y mark note +CONFIG_DEBUG_INFO_REDUCED n +CONFIG_DEBUG_INFO_SPLIT n note +CONFIG_DEBUG_INFO_DWARF4 y + +# Menu: Kernel hacking >> CoreSight Tracing Support >> Architecture: arm +CONFIG_CORESIGHT p policy<{'armhf': 'n'}> + +# Menu: Kernel hacking >> CoreSight Tracing Support >> CoreSight Link and Sink drivers >> Architecture: arm + +# Menu: Kernel hacking >> Debug Lockups and Hangs +CONFIG_LOCKUP_DETECTOR y +CONFIG_BOOTPARAM_HARDLOCKUP_PANIC n +CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC n +CONFIG_DETECT_HUNG_TASK y +CONFIG_DEFAULT_HUNG_TASK_TIMEOUT 120 +CONFIG_BOOTPARAM_HUNG_TASK_PANIC n + +# Menu: Kernel hacking >> Early debugging console >> Architecture: powerpc + +# Menu: Kernel hacking >> Early printk + +# Menu: Kernel hacking >> Early printk >> Architecture: x86 +CONFIG_EARLY_PRINTK_INTEL_MID p policy<{'i386': 'y'}> +CONFIG_EARLY_PRINTK_DBGP p policy<{'amd64': 'y', 'i386': 'y'}> +CONFIG_EARLY_PRINTK_EFI p policy<{'amd64': 'y', 'i386': 'y'}> + +# Menu: Kernel hacking >> IO delay type >> Architecture: x86 +CONFIG_IO_DELAY_0XED p policy<{'amd64': 'y', 'i386': 'y'}> + +# Menu: Kernel hacking >> Kernel debugging +CONFIG_DEBUG_BUGVERBOSE y +CONFIG_SCHEDSTATS y +CONFIG_SCHED_STACK_END_CHECK y +CONFIG_TIMER_STATS y +CONFIG_LATENCYTOP n note +CONFIG_DEBUG_STRICT_USER_COPY_CHECKS n + +# Menu: Kernel hacking >> Kernel debugging >> Fault-injection framework +CONFIG_FAULT_INJECTION n + +# Menu: Kernel hacking >> Kernel debugging >> KGDB: kernel debugger +CONFIG_KGDB y +CONFIG_KGDB_SERIAL_CONSOLE y note +CONFIG_KGDB_TESTS n +CONFIG_KGDB_LOW_LEVEL_TRAP p policy<{'amd64': 'y', 'i386': 'y'}> +CONFIG_KGDB_KDB y +CONFIG_KDB_KEYBOARD y +CONFIG_KDB_CONTINUE_CATASTROPHIC 0 + +# Menu: Kernel hacking >> Kernel debugging >> Notifier error injection +CONFIG_OF_RECONFIG_NOTIFIER_ERROR_INJECT n + +# Menu: Kernel hacking >> Kernel low-level debugging port >> Architecture: arm + +# Menu: Kernel hacking >> Lock Debugging (spinlocks, mutexes, etc...) +CONFIG_RT_MUTEX_TESTER n +CONFIG_PROVE_LOCKING n +CONFIG_LOCK_STAT n + +# Menu: Kernel hacking >> Memory Debugging +CONFIG_PAGE_EXTENSION n +CONFIG_SLUB_STATS n + +# Menu: Kernel hacking >> Memory Debugging >> Debug object operations + +# Menu: Kernel hacking >> Memory Debugging >> Kernel memory leak detector + +# Menu: Kernel hacking >> Memory Debugging >> kmemcheck: trap use of uninitialized memory + +# Menu: Kernel hacking >> Memory Debugging >> kmemcheck: trap use of uninitialized memory >> kmemcheck: default mode at boot + +# Menu: Kernel hacking >> RCU Debugging +CONFIG_SPARSE_RCU_POINTER n +CONFIG_RCU_TORTURE_TEST n flag +CONFIG_RCU_CPU_STALL_TIMEOUT p policy<{'amd64': '60', 'arm64': '60', 'armhf': '60', 'i386': '60', 'powerpc': '21', 'ppc64el': '21'}> +CONFIG_RCU_CPU_STALL_INFO n +CONFIG_RCU_TRACE n + +# Menu: Kernel hacking >> Runtime Testing +CONFIG_LKDTM n flag +CONFIG_TEST_LIST_SORT n flag +CONFIG_KPROBES_SANITY_TEST n flag +CONFIG_BACKTRACE_SELF_TEST n flag +CONFIG_ATOMIC64_SELFTEST n flag +CONFIG_TEST_RHASHTABLE n flag + +# Menu: Kernel hacking >> Sample kernel code +CONFIG_SAMPLES n + +# Menu: Kernel hacking >> Tracers +CONFIG_FTRACE y +CONFIG_IRQSOFF_TRACER n +CONFIG_PREEMPT_TRACER n +CONFIG_SCHED_TRACER y +CONFIG_FTRACE_SYSCALLS y +CONFIG_TRACER_SNAPSHOT y +CONFIG_TRACER_SNAPSHOT_PER_CPU_SWAP n +CONFIG_STACK_TRACER y +CONFIG_BLK_DEV_IO_TRACE y +CONFIG_KPROBE_EVENT y +CONFIG_UPROBE_EVENT y +CONFIG_FTRACE_STARTUP_TEST n flag +CONFIG_MMIOTRACE y +CONFIG_TRACEPOINT_BENCHMARK n +CONFIG_MMIOTRACE_TEST n flag +CONFIG_RING_BUFFER_BENCHMARK n flag +CONFIG_RING_BUFFER_STARTUP_TEST n flag + +# Menu: Kernel hacking >> Tracers >> Branch Profiling +CONFIG_BRANCH_PROFILE_NONE y + +# Menu: Kernel hacking >> Tracers >> Kernel Function Tracer +CONFIG_FUNCTION_TRACER y +CONFIG_FUNCTION_GRAPH_TRACER y +CONFIG_DYNAMIC_FTRACE y +CONFIG_FUNCTION_PROFILER y + +# Menu: Kernel hacking >> printk and dmesg options +CONFIG_PRINTK_TIME y +CONFIG_MESSAGE_LOGLEVEL_DEFAULT 4 +CONFIG_BOOT_PRINTK_DELAY p policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y'}> +CONFIG_DYNAMIC_DEBUG y + +# Menu: Library routines +CONFIG_CRC16 y +CONFIG_CRC_T10DIF y +CONFIG_CRC32 y +CONFIG_CRC32_SELFTEST n +CONFIG_RANDOM32_SELFTEST n +CONFIG_GLOB_SELFTEST n +CONFIG_AVERAGE y +CONFIG_DDR y + +# Menu: Library routines >> CRC32 implementation +CONFIG_CRC32_SLICEBY8 y + +# Menu: Library routines >> Select compiled-in fonts +CONFIG_FONTS p policy<{'armhf': 'y', '*': 'n'}> +CONFIG_FONT_8x8 y +CONFIG_FONT_8x16 y +CONFIG_FONT_6x11 p policy<{'armhf': 'n'}> +CONFIG_FONT_7x14 p policy<{'armhf': 'n'}> +CONFIG_FONT_PEARL_8x8 p policy<{'armhf': 'n'}> +CONFIG_FONT_ACORN_8x8 p policy<{'armhf': 'y'}> +CONFIG_FONT_MINI_4x6 p policy<{'armhf': 'n'}> +CONFIG_FONT_6x10 p policy<{'armhf': 'y'}> +CONFIG_FONT_SUN8x16 p policy<{'armhf': 'n'}> +CONFIG_FONT_SUN12x22 p policy<{'armhf': 'n'}> +CONFIG_FONT_10x18 p policy<{'armhf': 'n'}> + +# Menu: Library routines >> XZ decompression support +CONFIG_XZ_DEC y note +CONFIG_XZ_DEC_X86 y +CONFIG_XZ_DEC_POWERPC y +CONFIG_XZ_DEC_IA64 y +CONFIG_XZ_DEC_ARM y +CONFIG_XZ_DEC_ARMTHUMB y +CONFIG_XZ_DEC_SPARC y + +# Menu: Networking support +CONFIG_CEPH_LIB_PRETTYDEBUG n +CONFIG_CEPH_LIB_USE_DNS_RESOLVER y +CONFIG_NET y + +# Menu: Networking support >> Amateur Radio support +CONFIG_HAMRADIO y + +# Menu: Networking support >> Amateur Radio support >> Amateur Radio AX.25 Level 2 protocol +CONFIG_AX25_DAMA_SLAVE y + +# Menu: Networking support >> Amateur Radio support >> Amateur Radio AX.25 Level 2 protocol >> AX.25 network device drivers +CONFIG_SCC_DELAY n +CONFIG_SCC_TRXECHO n + +# Menu: Networking support >> Bluetooth subsystem support +CONFIG_BT_LE y + +# Menu: Networking support >> Bluetooth subsystem support >> Bluetooth Classic (BR/EDR) features +CONFIG_BT_BREDR y +CONFIG_BT_RFCOMM_TTY y +CONFIG_BT_BNEP_MC_FILTER y +CONFIG_BT_BNEP_PROTO_FILTER y + +# Menu: Networking support >> Bluetooth subsystem support >> Bluetooth device drivers + +# Menu: Networking support >> Bluetooth subsystem support >> Bluetooth device drivers >> HCI UART driver +CONFIG_BT_HCIUART_H4 y +CONFIG_BT_HCIUART_BCSP y +CONFIG_BT_HCIUART_ATH3K y +CONFIG_BT_HCIUART_LL y +CONFIG_BT_HCIUART_3WIRE y + +# Menu: Networking support >> CAIF support + +# Menu: Networking support >> CAN bus subsystem support + +# Menu: Networking support >> CAN bus subsystem support >> CAN Device Drivers + +# Menu: Networking support >> CAN bus subsystem support >> CAN Device Drivers >> Platform CAN drivers with Netlink support +CONFIG_CAN_CALC_BITTIMING y +CONFIG_CAN_LEDS y + +# Menu: Networking support >> CAN bus subsystem support >> CAN Device Drivers >> Platform CAN drivers with Netlink support >> Bosch CC770 and Intel AN82527 devices + +# Menu: Networking support >> CAN bus subsystem support >> CAN Device Drivers >> Platform CAN drivers with Netlink support >> Bosch C_CAN/D_CAN devices + +# Menu: Networking support >> CAN bus subsystem support >> CAN Device Drivers >> Platform CAN drivers with Netlink support >> CAN SPI interfaces + +# Menu: Networking support >> CAN bus subsystem support >> CAN Device Drivers >> Platform CAN drivers with Netlink support >> CAN USB interfaces + +# Menu: Networking support >> CAN bus subsystem support >> CAN Device Drivers >> Platform CAN drivers with Netlink support >> Philips/NXP SJA1000 devices +CONFIG_CAN_PEAK_PCIEC y + +# Menu: Networking support >> IrDA (infrared) subsystem support +CONFIG_IRDA_ULTRA y +CONFIG_IRDA_CACHE_LAST_LSAP y +CONFIG_IRDA_FAST_RR y + +# Menu: Networking support >> IrDA (infrared) subsystem support >> Infrared-port device drivers + +# Menu: Networking support >> IrDA (infrared) subsystem support >> Infrared-port device drivers >> Blackfin SIR on UART + +# Menu: Networking support >> IrDA (infrared) subsystem support >> Infrared-port device drivers >> Blackfin SIR on UART >> SIR Mode + +# Menu: Networking support >> IrDA (infrared) subsystem support >> Infrared-port device drivers >> Serial dongle support +CONFIG_DONGLE y + +# Menu: Networking support >> NFC subsystem support +CONFIG_NFC_NCI_SPI y +CONFIG_NFC_SHDLC y + +# Menu: Networking support >> NFC subsystem support >> Near Field Communication (NFC) devices + +# Menu: Networking support >> Networking options +CONFIG_PACKET y +CONFIG_UNIX y +CONFIG_XFRM_SUB_POLICY n +CONFIG_XFRM_MIGRATE n +CONFIG_XFRM_STATISTICS y +CONFIG_NET_KEY_MIGRATE n +CONFIG_NETWORK_SECMARK y +CONFIG_NETWORK_PHY_TIMESTAMPING n +CONFIG_BRIDGE_IGMP_SNOOPING y +CONFIG_BRIDGE_VLAN_FILTERING y +CONFIG_NET_DSA_HWMON y +CONFIG_VLAN_8021Q_GVRP y +CONFIG_VLAN_8021Q_MVRP y +CONFIG_DECNET_ROUTER n +CONFIG_IPX_INTERN n +CONFIG_DCB y +CONFIG_DNS_RESOLVER y +CONFIG_VMWARE_VMCI_VSOCKETS p policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_NETLINK_MMAP y +CONFIG_CGROUP_NET_PRIO y +CONFIG_CGROUP_NET_CLASSID y +CONFIG_BPF_JIT p policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'powerpc-powerpc64-emb': 'y', 'powerpc-powerpc64-smp': 'y', 'ppc64el': 'y'}> + +# Menu: Networking support >> Networking options >> Appletalk interfaces support +CONFIG_IPDDP_ENCAP y +CONFIG_COPS_DAYNA y +CONFIG_COPS_TANGENT y + +# Menu: Networking support >> Networking options >> Asynchronous Transfer Mode (ATM) +CONFIG_ATM_CLIP_NO_ICMP n +CONFIG_ATM_BR2684_IPFILTER n + +# Menu: Networking support >> Networking options >> B.A.T.M.A.N. Advanced Meshing Protocol +CONFIG_BATMAN_ADV_BLA y +CONFIG_BATMAN_ADV_DAT y +CONFIG_BATMAN_ADV_NC y +CONFIG_BATMAN_ADV_MCAST y + +# Menu: Networking support >> Networking options >> Network packet filtering framework (Netfilter) +CONFIG_NETFILTER y mark + +# Menu: Networking support >> Networking options >> Network packet filtering framework (Netfilter) >> Advanced netfilter configuration +CONFIG_NETFILTER_ADVANCED y + +# Menu: Networking support >> Networking options >> Network packet filtering framework (Netfilter) >> Advanced netfilter configuration >> DECnet: Netfilter Configuration + +# Menu: Networking support >> Networking options >> Network packet filtering framework (Netfilter) >> Core Netfilter Configuration + +# Menu: Networking support >> Networking options >> Network packet filtering framework (Netfilter) >> Core Netfilter Configuration >> Netfilter Xtables support (required for ip_tables) + +# Menu: Networking support >> Networking options >> Network packet filtering framework (Netfilter) >> Core Netfilter Configuration >> Netfilter connection tracking support +CONFIG_NF_CONNTRACK_MARK y +CONFIG_NF_CONNTRACK_SECMARK y +CONFIG_NF_CONNTRACK_ZONES y +CONFIG_NF_CONNTRACK_PROCFS n flag +CONFIG_NF_CONNTRACK_EVENTS y +CONFIG_NF_CONNTRACK_TIMEOUT y +CONFIG_NF_CONNTRACK_TIMESTAMP y +CONFIG_NETFILTER_NETLINK_QUEUE_CT y + +# Menu: Networking support >> Networking options >> Network packet filtering framework (Netfilter) >> Core Netfilter Configuration >> Netfilter nf_tables support + +# Menu: Networking support >> Networking options >> Network packet filtering framework (Netfilter) >> Ethernet Bridge nf_tables support + +# Menu: Networking support >> Networking options >> Network packet filtering framework (Netfilter) >> Ethernet Bridge tables (ebtables) support + +# Menu: Networking support >> Networking options >> Network packet filtering framework (Netfilter) >> IP set support +CONFIG_IP_SET_MAX 256 + +# Menu: Networking support >> Networking options >> Network packet filtering framework (Netfilter) >> IP virtual server support +CONFIG_IP_VS_IPV6 y +CONFIG_IP_VS_TAB_BITS 12 +CONFIG_IP_VS_PROTO_TCP y +CONFIG_IP_VS_PROTO_UDP y +CONFIG_IP_VS_PROTO_ESP y +CONFIG_IP_VS_PROTO_AH y +CONFIG_IP_VS_PROTO_SCTP y +CONFIG_IP_VS_SH_TAB_BITS 8 +CONFIG_IP_VS_NFCT y + +# Menu: Networking support >> Networking options >> Network packet filtering framework (Netfilter) >> IP: Netfilter Configuration + +# Menu: Networking support >> Networking options >> Network packet filtering framework (Netfilter) >> IP: Netfilter Configuration >> IP tables support (required for filtering/masq/NAT) + +# Menu: Networking support >> Networking options >> Network packet filtering framework (Netfilter) >> IP: Netfilter Configuration >> IP tables support (required for filtering/masq/NAT) >> Packet mangling + +# Menu: Networking support >> Networking options >> Network packet filtering framework (Netfilter) >> IP: Netfilter Configuration >> IP tables support (required for filtering/masq/NAT) >> iptables NAT support + +# Menu: Networking support >> Networking options >> Network packet filtering framework (Netfilter) >> IP: Netfilter Configuration >> IPv4 NAT + +# Menu: Networking support >> Networking options >> Network packet filtering framework (Netfilter) >> IPv6: Netfilter Configuration + +# Menu: Networking support >> Networking options >> Network packet filtering framework (Netfilter) >> IPv6: Netfilter Configuration >> IP6 tables support (required for filtering) + +# Menu: Networking support >> Networking options >> Network packet filtering framework (Netfilter) >> IPv6: Netfilter Configuration >> IPv6 NAT + +# Menu: Networking support >> Networking options >> Network testing +CONFIG_NET_DROP_MONITOR n + +# Menu: Networking support >> Networking options >> QoS and/or fair queueing +CONFIG_NET_SCHED y mark + +# Menu: Networking support >> Networking options >> QoS and/or fair queueing >> Actions +CONFIG_NET_CLS_ACT y +CONFIG_GACT_PROB y + +# Menu: Networking support >> Networking options >> QoS and/or fair queueing >> Extended Matches +CONFIG_NET_EMATCH y +CONFIG_NET_EMATCH_STACK 32 + +# Menu: Networking support >> Networking options >> QoS and/or fair queueing >> Universal 32bit comparisons w/ hashing (U32) +CONFIG_CLS_U32_PERF n +CONFIG_CLS_U32_MARK y +CONFIG_NET_CLS_IND n flag + +# Menu: Networking support >> Networking options >> TCP/IP networking +CONFIG_INET y +CONFIG_IP_MULTICAST y +CONFIG_NET_IPGRE_BROADCAST y +CONFIG_SYN_COOKIES y mark +CONFIG_NET_FOU_IP_TUNNELS y +CONFIG_INET_LRO y +CONFIG_TCP_MD5SIG y +CONFIG_NETLABEL y +CONFIG_NET_SWITCHDEV n + +# Menu: Networking support >> Networking options >> TCP/IP networking >> IP: advanced router +CONFIG_IP_ADVANCED_ROUTER y +CONFIG_IP_FIB_TRIE_STATS y +CONFIG_IP_MULTIPLE_TABLES y +CONFIG_IP_ROUTE_MULTIPATH y +CONFIG_IP_ROUTE_VERBOSE y + +# Menu: Networking support >> Networking options >> TCP/IP networking >> IP: kernel level autoconfiguration +CONFIG_IP_PNP y +CONFIG_IP_PNP_DHCP y +CONFIG_IP_PNP_BOOTP n +CONFIG_IP_PNP_RARP n + +# Menu: Networking support >> Networking options >> TCP/IP networking >> IP: multicast routing +CONFIG_IP_MROUTE y +CONFIG_IP_MROUTE_MULTIPLE_TABLES n +CONFIG_IP_PIMSM_V1 y +CONFIG_IP_PIMSM_V2 y + +# Menu: Networking support >> Networking options >> TCP/IP networking >> Layer Two Tunneling Protocol (L2TP) +CONFIG_L2TP_V3 y + +# Menu: Networking support >> Networking options >> TCP/IP networking >> Open vSwitch + +# Menu: Networking support >> Networking options >> TCP/IP networking >> TCP: advanced congestion control +CONFIG_TCP_CONG_ADVANCED y +CONFIG_TCP_CONG_CUBIC y note + +# Menu: Networking support >> Networking options >> TCP/IP networking >> TCP: advanced congestion control >> Default TCP congestion control +CONFIG_DEFAULT_CUBIC y + +# Menu: Networking support >> Networking options >> TCP/IP networking >> The DCCP Protocol + +# Menu: Networking support >> Networking options >> TCP/IP networking >> The DCCP Protocol >> DCCP CCIDs Configuration +CONFIG_IP_DCCP_CCID3 n + +# Menu: Networking support >> Networking options >> TCP/IP networking >> The DCCP Protocol >> DCCP Kernel Hacking + +# Menu: Networking support >> Networking options >> TCP/IP networking >> The IPv6 protocol +CONFIG_IPV6_OPTIMISTIC_DAD n flag +CONFIG_IPV6 y mark note +CONFIG_IPV6_ROUTER_PREF y +CONFIG_IPV6_ROUTE_INFO y +CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION m note +CONFIG_IPV6_SIT_6RD y +CONFIG_IPV6_MULTIPLE_TABLES y +CONFIG_IPV6_SUBTREES y +CONFIG_IPV6_MROUTE y +CONFIG_IPV6_MROUTE_MULTIPLE_TABLES y +CONFIG_IPV6_PIMSM_V2 y + +# Menu: Networking support >> Networking options >> TCP/IP networking >> The RDS Protocol +CONFIG_RDS m note + +# Menu: Networking support >> Networking options >> TCP/IP networking >> The SCTP Protocol +CONFIG_SCTP_COOKIE_HMAC_MD5 y +CONFIG_SCTP_COOKIE_HMAC_SHA1 y +CONFIG_SCTP_DBG_OBJCNT n flag + +# Menu: Networking support >> Networking options >> TCP/IP networking >> The SCTP Protocol >> Default SCTP cookie HMAC encoding +CONFIG_SCTP_DEFAULT_COOKIE_HMAC_SHA1 y + +# Menu: Networking support >> Networking options >> TCP/IP networking >> The TIPC Protocol +CONFIG_TIPC m note +CONFIG_TIPC_PORTS D +CONFIG_TIPC_MEDIA_IB y + +# Menu: Networking support >> Plan 9 Resource Sharing Support (9P2000) + +# Menu: Networking support >> RF switch subsystem support +CONFIG_RFKILL y +CONFIG_RFKILL_INPUT y + +# Menu: Networking support >> WiMAX Wireless Broadband support +CONFIG_WIMAX_DEBUG_LEVEL D + +# Menu: Networking support >> Wireless +CONFIG_WIRELESS y + +# Menu: Networking support >> Wireless >> Generic IEEE 802.11 Networking Stack (mac80211) +CONFIG_MAC80211_RC_MINSTREL y +CONFIG_MAC80211_RC_MINSTREL_HT y +CONFIG_MAC80211_RC_MINSTREL_VHT y +CONFIG_MAC80211_MESH y +CONFIG_MAC80211_LEDS y +CONFIG_MAC80211_DEBUGFS y +CONFIG_MAC80211_MESSAGE_TRACING y + +# Menu: Networking support >> Wireless >> Generic IEEE 802.11 Networking Stack (mac80211) >> Default rate control algorithm +CONFIG_MAC80211_RC_DEFAULT_MINSTREL y + +# Menu: Networking support >> Wireless >> Generic IEEE 802.11 Networking Stack (mac80211) >> Select mac80211 debugging features + +# Menu: Networking support >> Wireless >> cfg80211 - wireless configuration API +CONFIG_NL80211_TESTMODE n +CONFIG_CFG80211_DEVELOPER_WARNINGS n +CONFIG_CFG80211_CERTIFICATION_ONUS n +CONFIG_CFG80211_DEFAULT_PS y +CONFIG_CFG80211_DEBUGFS y +CONFIG_CFG80211_INTERNAL_REGDB n +CONFIG_CFG80211_WEXT y mark + +# Menu: Power management and ACPI options +CONFIG_SUSPEND y +CONFIG_SUSPEND_FREEZER y +CONFIG_HIBERNATION y +CONFIG_SFI p policy<{'amd64': 'y', 'i386': 'y'}> +CONFIG_INTEL_IDLE p policy<{'amd64': 'y', 'i386': 'y'}> +CONFIG_KVM_GUEST y +CONFIG_PM_STD_PARTITION "" +CONFIG_PM_AUTOSLEEP n +CONFIG_PM_WAKELOCKS y +CONFIG_PM_WAKELOCKS_LIMIT D +CONFIG_PM_WAKELOCKS_GC D +CONFIG_PM_TRACE_RTC y +CONFIG_SUSPEND p policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc-powerpc64-smp': 'y', 'powerpc-powerpc-smp': 'y', 'ppc64el': 'y'}> +CONFIG_SUSPEND_FREEZER p policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc-powerpc64-smp': 'y', 'powerpc-powerpc-smp': 'y', 'ppc64el': 'y'}> +CONFIG_HIBERNATION p policy<{'amd64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc-powerpc64-emb': 'n', 'powerpc-powerpc64-smp': 'y', 'powerpc-powerpc-e500mc': 'y', 'powerpc-powerpc-smp': 'y', 'ppc64el': 'y'}> +CONFIG_PM_STD_PARTITION p policy<{'amd64': '""', 'armhf': '""', 'i386': '""', 'powerpc-powerpc64-smp': '""', 'powerpc-powerpc-e500mc': '""', 'powerpc-powerpc-smp': '""', 'ppc64el': '""'}> +CONFIG_PM_AUTOSLEEP p policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc-powerpc64-smp': 'n', 'powerpc-powerpc-e500mc': 'n', 'powerpc-powerpc-smp': 'n', 'ppc64el': 'n'}> +CONFIG_PM_WAKELOCKS p policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc-powerpc64-smp': 'y', 'powerpc-powerpc-e500mc': 'y', 'powerpc-powerpc-smp': 'y', 'ppc64el': 'y'}> +CONFIG_PM_WAKELOCKS_LIMIT p policy<{'amd64': '100', 'arm64': '100', 'armhf': '100', 'i386': '100', 'powerpc-powerpc64-smp': '100', 'powerpc-powerpc-e500mc': '100', 'powerpc-powerpc-smp': '100', 'ppc64el': '100'}> +CONFIG_PM_WAKELOCKS_GC p policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc-powerpc64-smp': 'y', 'powerpc-powerpc-e500mc': 'y', 'powerpc-powerpc-smp': 'y', 'ppc64el': 'y'}> +CONFIG_PM_TRACE_RTC p policy<{'amd64': 'y', 'i386': 'y'}> + +# Menu: Power management and ACPI options >> 512x-based boards >> Architecture: powerpc +CONFIG_PPC_MPC512x p policy<{'powerpc': 'n'}> + +# Menu: Power management and ACPI options >> 52xx-based boards >> Architecture: powerpc +CONFIG_PPC_MPC52xx p policy<{'powerpc': 'n'}> + +# Menu: Power management and ACPI options >> 82xx-based boards (PQ II) >> Architecture: powerpc +CONFIG_PPC_82xx n + +# Menu: Power management and ACPI options >> 83xx-based boards >> Architecture: powerpc +CONFIG_PPC_83xx n + +# Menu: Power management and ACPI options >> 86xx-based boards >> Architecture: powerpc +CONFIG_PPC_86xx n + +# Menu: Power management and ACPI options >> 8xx Machine Type >> Architecture: powerpc + +# Menu: Power management and ACPI options >> ACPI (Advanced Configuration and Power Interface) Support +CONFIG_ACPI y mark +CONFIG_ACPI_PROCFS_POWER n mark +CONFIG_ACPI_AC y +CONFIG_ACPI_BATTERY y +CONFIG_ACPI_BUTTON y +CONFIG_ACPI_FAN y +CONFIG_ACPI_DOCK y +CONFIG_ACPI_PROCESSOR y +CONFIG_ACPI_THERMAL y +CONFIG_ACPI_CONTAINER y note +CONFIG_ACPI_HED y +CONFIG_ACPI_CUSTOM_METHOD p mark policy<{'amd64': 'n', 'i386': 'n', 'arm64': 'n'}> note +CONFIG_ACPI_NUMA y +CONFIG_ACPI_CUSTOM_DSDT_FILE "" note +CONFIG_ACPI_INITRD_TABLE_OVERRIDE n +CONFIG_ACPI_PCI_SLOT y +CONFIG_X86_PM_TIMER y +CONFIG_ACPI_HOTPLUG_MEMORY y +CONFIG_ACPI_BGRT y +CONFIG_ACPI_REDUCED_HARDWARE_ONLY n + +# Menu: Power management and ACPI options >> ACPI (Advanced Configuration and Power Interface) Support >> ACPI Platform Error Interface (APEI) +CONFIG_ACPI_APEI y +CONFIG_ACPI_APEI_GHES y +CONFIG_ACPI_APEI_PCIEAER y +CONFIG_ACPI_APEI_MEMORY_FAILURE y + +# Menu: Power management and ACPI options >> ACPI (Advanced Configuration and Power Interface) Support >> PMIC (Power Management Integrated Circuit) operation region support +CONFIG_PMIC_OPREGION p policy<{'amd64': 'n', 'i386': 'n'}> + +# Menu: Power management and ACPI options >> APM (Advanced Power Management) BIOS support >> Architecture: x86 +CONFIG_APM m mark note +CONFIG_APM_IGNORE_USER_SUSPEND n +CONFIG_APM_DO_ENABLE n +CONFIG_APM_CPU_IDLE n +CONFIG_APM_DISPLAY_BLANK n +CONFIG_APM_ALLOW_INTS n + +# Menu: Power management and ACPI options >> Architecture: arm + +# Menu: Power management and ACPI options >> Architecture: powerpc +CONFIG_PPC_POWERNV p policy<{'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_PPC_POWERNV_RTAS p policy<{'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_PPC_CHRP p policy<{'powerpc': 'y'}> +CONFIG_PPC_PMAC p policy<{'powerpc': 'y', 'ppc64el': 'n'}> +CONFIG_PPC_PMAC32_PSURGE p policy<{'powerpc': 'y'}> +CONFIG_PPC_MAPLE p policy<{'powerpc': 'y', 'ppc64el': 'n'}> +CONFIG_PPC_IBM_CELL_BLADE p policy<{'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_PPC_CELLEB p policy<{'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_PPC_CELL_QPACE p policy<{'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_EPAPR_PARAVIRT p policy<{'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_PPC_OF_BOOT_TRAMPOLINE p policy<{'powerpc-powerpc64-emb': 'n', 'powerpc-powerpc64-smp': 'y', 'powerpc-powerpc-smp': 'y', 'ppc64el': 'y'}> +CONFIG_UDBG_RTAS_CONSOLE p policy<{'powerpc': 'y', 'ppc64el': 'n'}> +CONFIG_MPIC_TIMER p policy<{'powerpc': 'n'}> +CONFIG_MPIC_MSGR p policy<{'powerpc': 'y', 'ppc64el': 'n'}> +CONFIG_RTAS_PROC p policy<{'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_IBMEBUS p policy<{'powerpc': 'n', 'ppc64el': 'y'}> +CONFIG_PPC601_SYNC_FIX p policy<{'powerpc': 'n'}> +CONFIG_TAU p policy<{'powerpc': 'y'}> +CONFIG_TAU_INT p policy<{'powerpc': 'n'}> +CONFIG_TAU_AVERAGE p policy<{'powerpc': 'n'}> +CONFIG_QUICC_ENGINE p policy<{'powerpc': 'n'}> +CONFIG_CPM2 p policy<{'powerpc': 'y'}> +CONFIG_SIMPLE_GPIO p policy<{'powerpc': 'y', 'ppc64el': 'n'}> + +# 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 y +CONFIG_CPU_FREQ_STAT y note +CONFIG_CPU_FREQ_STAT_DETAILS y +CONFIG_CPU_FREQ_GOV_PERFORMANCE y note +CONFIG_CPU_FREQ_GOV_POWERSAVE y note +CONFIG_CPU_FREQ_GOV_USERSPACE y note +CONFIG_CPU_FREQ_GOV_ONDEMAND y note +CONFIG_CPU_FREQ_GOV_CONSERVATIVE y note +CONFIG_CPUFREQ_DT y note +CONFIG_ARM_OMAP2PLUS_CPUFREQ p policy<{'armhf': 'y'}> +CONFIG_ARM_TEGRA_CPUFREQ p policy<{'armhf': 'y'}> +CONFIG_ARM_EXYNOS5250_CPUFREQ p policy<{'armhf': 'n'}> +CONFIG_ARM_EXYNOS5440_CPUFREQ p policy<{'armhf': 'n'}> +CONFIG_CPU_FREQ_MAPLE y +CONFIG_CPU_FREQ_PMAC y +CONFIG_CPU_FREQ_PMAC64 y +CONFIG_PPC_PASEMI_CPUFREQ y +CONFIG_POWERNV_CPUFREQ y +CONFIG_X86_INTEL_PSTATE y +CONFIG_X86_PCC_CPUFREQ y note +CONFIG_X86_SPEEDSTEP_CENTRINO y note +CONFIG_X86_SPEEDSTEP_CENTRINO_TABLE y +CONFIG_X86_SPEEDSTEP_ICH y note +CONFIG_X86_SPEEDSTEP_SMI y note +CONFIG_X86_CPUFREQ_NFORCE2 y note +CONFIG_X86_SPEEDSTEP_RELAXED_CAP_CHECK y + +# Menu: Power management and ACPI options >> CPU Frequency scaling >> CPU Frequency scaling >> ACPI Processor P-States driver +CONFIG_X86_ACPI_CPUFREQ y note +CONFIG_X86_ACPI_CPUFREQ_CPB y +CONFIG_X86_POWERNOW_K8 y 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 y note + +# Menu: Power management and ACPI options >> CPU Idle + +# Menu: Power management and ACPI options >> CPU Idle >> CPU idle PM support +CONFIG_CPU_IDLE y +CONFIG_CPU_IDLE_GOV_LADDER y +CONFIG_CPU_IDLE_GOV_MENU y + +# Menu: Power management and ACPI options >> CPU Idle >> CPU idle PM support >> ARM CPU Idle Drivers +CONFIG_ARM_BIG_LITTLE_CPUIDLE p policy<{'armhf': 'y'}> +CONFIG_ARM_HIGHBANK_CPUIDLE p policy<{'armhf-generic': 'n', 'armhf': 'y'}> | value y> note +CONFIG_ARM_EXYNOS_CPUIDLE p policy<{'armhf': 'y'}> +CONFIG_ARM_BIG_LITTLE_CPUIDLE p policy<{'armhf': 'y'}> +CONFIG_ARM_HIGHBANK_CPUIDLE p policy<{'armhf-generic': 'n', 'armhf-generic-lpae': 'y'}> note +CONFIG_ARM_EXYNOS_CPUIDLE p policy<{'armhf': 'y'}> +CONFIG_ARM_MVEBU_V7_CPUIDLE p policy<{'armhf': 'y'}> + +# Menu: Power management and ACPI options >> CPU Idle >> CPU idle PM support >> ARM64 CPU Idle Drivers +CONFIG_ARM64_CPUIDLE p policy<{'arm64': 'y'}> + +# 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 y +CONFIG_POWERNV_CPUIDLE 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 >> ARM64 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 +CONFIG_SPU_FS_64K_LS y + +# Menu: Power management and ACPI options >> Device power management core functionality +CONFIG_APM_EMULATION p policy<{'armhf': 'n', 'powerpc-powerpc-smp': 'm'}> note +CONFIG_WQ_POWER_EFFICIENT_DEFAULT y +CONFIG_PM y + +# Menu: Power management and ACPI options >> Device power management core functionality >> Power Management Debug Support +CONFIG_PM_DEBUG y +CONFIG_PM_ADVANCED_DEBUG y mark +CONFIG_PM_TEST_SUSPEND n +CONFIG_DPM_WATCHDOG n + +# 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 +CONFIG_FSL_SOC_BOOKE p policy<{'powerpc': 'y'}> +CONFIG_BSC9131_RDB p policy<{'powerpc': 'n'}> +CONFIG_C293_PCIE p policy<{'powerpc': 'y'}> +CONFIG_BSC9132_QDS p policy<{'powerpc': 'y'}> +CONFIG_MPC8540_ADS p policy<{'powerpc': 'n'}> +CONFIG_MPC8560_ADS p policy<{'powerpc': 'n'}> +CONFIG_MPC85xx_CDS p policy<{'powerpc': 'n'}> +CONFIG_MPC85xx_MDS p policy<{'powerpc': 'n'}> +CONFIG_MPC8536_DS p policy<{'powerpc': 'n'}> +CONFIG_MPC85xx_DS p policy<{'powerpc': 'n'}> +CONFIG_MPC85xx_RDB p policy<{'powerpc': 'n'}> +CONFIG_P1010_RDB p policy<{'powerpc': 'n'}> +CONFIG_P1022_DS p policy<{'powerpc': 'n'}> +CONFIG_P1022_RDK p policy<{'powerpc': 'n'}> +CONFIG_P1023_RDB p policy<{'powerpc': 'y'}> +CONFIG_TWR_P102x p policy<{'powerpc': 'y'}> +CONFIG_SOCRATES p policy<{'powerpc': 'n'}> +CONFIG_KSI8560 p policy<{'powerpc': 'n'}> +CONFIG_XES_MPC85xx p policy<{'powerpc': 'n'}> +CONFIG_STX_GP3 p policy<{'powerpc': 'n'}> +CONFIG_TQM8540 p policy<{'powerpc': 'n'}> +CONFIG_TQM8541 p policy<{'powerpc': 'n'}> +CONFIG_TQM8548 p policy<{'powerpc': 'n'}> +CONFIG_TQM8555 p policy<{'powerpc': 'n'}> +CONFIG_TQM8560 p policy<{'powerpc': 'n'}> +CONFIG_SBC8548 p policy<{'powerpc': 'n'}> +CONFIG_PPA8548 p policy<{'powerpc': 'y'}> +CONFIG_GE_IMP3A p policy<{'powerpc': 'n'}> +CONFIG_SGY_CTS1000 p policy<{'powerpc': 'm'}> +CONFIG_PPC_QEMU_E500 p policy<{'powerpc': 'y'}> +CONFIG_CORENET_GENERIC p policy<{'powerpc': 'y'}> + +# 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 pSeries & new (POWER5-based) iSeries >> Architecture: powerpc +CONFIG_PPC_PSERIES p policy<{'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_PPC_SPLPAR p policy<{'powerpc': 'n', 'ppc64el': 'y'}> +CONFIG_IO_EVENT_IRQ p policy<{'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_LPARCFG p policy<{'powerpc': 'n', 'ppc64el': 'y'}> +CONFIG_PPC_SMLPAR p policy<{'powerpc': 'n', 'ppc64el': 'y'}> +CONFIG_HV_PERF_CTRS p policy<{'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_DTL p policy<{'ppc64el': 'y'}> + +# 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 >> Memory power savings + +# Menu: Power management and ACPI options >> PA Semi SoC-based platforms >> Architecture: powerpc +CONFIG_PPC_PASEMI p policy<{'powerpc': 'y', 'ppc64el': 'n'}> + +# Menu: Power management and ACPI options >> PA Semi SoC-based platforms >> PA Semi PWRficient options >> Architecture: powerpc +CONFIG_PPC_PASEMI_IOMMU p policy<{'powerpc': 'y'}> +CONFIG_PPC_PASEMI_IOMMU_DMA_FORCE p policy<{'powerpc': 'n'}> + +# Menu: Power management and ACPI options >> Sony PS3 >> Architecture: powerpc +CONFIG_PPC_PS3 p policy<{'powerpc': 'y', 'ppc64el': 'n'}> + +# Menu: Power management and ACPI options >> Sony PS3 >> PS3 Platform Options >> Architecture: powerpc +CONFIG_PS3_DYNAMIC_DMA p policy<{'powerpc': 'n'}> +CONFIG_PS3GELIC_UDBG p policy<{'powerpc': 'n'}> + +# Menu: Power management and ACPI options >> Sony PS3 >> PS3 Platform Options >> PS3 Advanced configuration options >> Architecture: powerpc +CONFIG_PS3_ADVANCED p policy<{'powerpc': 'n'}> +CONFIG_PS3_HTAB_SIZE p policy<{'powerpc': '20'}> +CONFIG_PS3_PS3AV p policy<{'powerpc': 'y'}> +CONFIG_PS3_SYS_MANAGER p policy<{'powerpc': 'y'}> +CONFIG_PS3_REPOSITORY_WRITE p policy<{'powerpc': 'n'}> + +# Menu: Processor support +CONFIG_SMP y +CONFIG_NR_CPUS p policy<{'amd64': 256, 'i386': 8, 'armhf': 4, 'arm64': 8, 'ppc64el': 2048, 'powerpc-powerpc64-emb': 8, 'powerpc-powerpc64-smp': 1024, 'powerpc-powerpc-e500mc': 8, 'powerpc-powerpc-smp': 4}> +CONFIG_SMP y +CONFIG_NR_CPUS p policy<{'amd64': '256', 'arm64': '8', 'armhf': '4', 'i386': '8', 'powerpc-powerpc64-emb': '8', 'powerpc-powerpc64-smp': '1024', 'powerpc-powerpc-e500mc': '8', 'powerpc-powerpc-smp': '4', 'ppc64el': '2048'}> + +# Menu: Processor support >> Architecture: powerpc +CONFIG_TUNE_CELL p policy<{'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_PPC_E500MC p policy<{'powerpc-powerpc64-emb': 'y', 'powerpc-powerpc-e500mc', 'y'}> +CONFIG_FSL_EMB_PERFMON p policy<{'powerpc-powerpc64-emb': 'y', 'powerpc-powerpc-e500mc', 'y'}> +CONFIG_PHYS_64BIT p policy<{'powerpc-powerpc64-emb': 'y', 'powerpc-powerpc-e500mc', 'y'}> +CONFIG_ALTIVEC p policy<{'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_VSX p policy<{'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_PPC_ICSWX p policy<{'powerpc': 'y', 'ppc64el': 'n'}> mark +CONFIG_PPC_ICSWX_PID p policy<{'powerpc': 'y'}> +CONFIG_PPC_ICSWX_USE_SIGILL p policy<{'powerpc': 'n'}> + +# Menu: Processor support >> CPU selection +CONFIG_GENERIC_CPU p policy<{'amd64': 'y', 'powerpc': 'y'}> + +# Menu: Processor support >> CPU selection >> Architecture: powerpc +CONFIG_POWER7_CPU p policy<{'powerpc-powerpc64-smp': 'n', 'ppc64el': 'y'}> + +# Menu: Processor support >> Processor Type >> Architecture: powerpc +CONFIG_PPC_BOOK3S_32 p policy<{'powerpc-powerpc-e500mc': 'n', 'powerpc-powerpc-smp': 'y'}> +CONFIG_PPC_85xx p policy<{'powerpc-powerpc-e500mc': 'y', 'powerpc-powerpc-smp': 'n', 'ppc64el': 'y'}> +CONFIG_PPC_BOOK3S_64 p policy<{'powerpc-powerpc64-emb': 'n', 'powerpc-powerpc64-smp': 'y', 'ppc64el': 'y'}> +CONFIG_PPC_BOOK3E_64 p policy<{'powerpc-powerpc64-emb': 'y', 'powerpc-powerpc64-smp': 'n', 'ppc64el': 'n'}> + +# Menu: Processor type and features +CONFIG_SCHED_MC p policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y'}> +CONFIG_SCHED_SMT p policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'n', 'i386': 'y', 'powerpc-powerpc64-emb': 'n', 'powerpc-powerpc64-smp': 'y', 'ppc64el': 'y'}> +CONFIG_HOTPLUG_CPU p policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc-powerpc64-smp': 'y', 'powerpc-powerpc-e500mc': 'y', 'powerpc-powerpc-smp': 'y', 'ppc64el': 'y'}> +CONFIG_HIGHMEM p policy<{'armhf': 'y', 'i386': 'y', 'powerpc-powerpc-e500mc': 'y', 'powerpc-powerpc-smp': 'y'}> +CONFIG_HIGHPTE p policy<{'armhf': 'y', 'i386': 'y'}> +CONFIG_SPARSEMEM_VMEMMAP p policy<{'amd64': 'y', 'arm64': 'y', 'powerpc-powerpc64-emb': 'y', 'powerpc-powerpc64-smp': 'y', 'ppc64el': 'y'}> +CONFIG_MOVABLE_NODE p policy<{'amd64': 'y'}> +CONFIG_MEMORY_HOTPLUG p policy<{'amd64': 'y', 'i386': 'y', 'powerpc-powerpc64-smp': 'y', 'ppc64el': 'y'}> +CONFIG_MEMORY_HOTREMOVE p policy<{'amd64': 'y', 'i386': 'y', 'powerpc-powerpc64-smp': 'y', 'ppc64el': 'y'}> +CONFIG_BALLOON_COMPACTION y +CONFIG_COMPACTION y +CONFIG_MIGRATION y +CONFIG_BOUNCE y +CONFIG_KSM y +CONFIG_DEFAULT_MMAP_MIN_ADDR p mark policy<{'amd64': '65536', 'arm64': '32768', 'armhf': '32768', 'i386': '65536', 'powerpc': '65536', 'ppc64el': '65536'}> note +CONFIG_MEMORY_FAILURE p policy<{'amd64': 'y', 'powerpc-powerpc64-smp': 'y', 'ppc64el': 'y'}> +CONFIG_HWPOISON_INJECT p policy<{'amd64': 'm', 'powerpc-powerpc64-smp': 'm', 'ppc64el': 'm'}> +CONFIG_TRANSPARENT_HUGEPAGE p policy<{'amd64': 'y', 'arm64': 'y', 'armhf-generic-lpae': 'y', 'i386': 'y', 'ppc64el': 'y'}> +CONFIG_CLEANCACHE y +CONFIG_FRONTSWAP y +CONFIG_CMA y +CONFIG_CMA_DEBUG n +CONFIG_CMA_AREAS 7 +CONFIG_MEM_SOFT_DIRTY p policy<{'amd64': 'y'}> +CONFIG_ZSWAP y +CONFIG_ZPOOL y +CONFIG_ZBUD y +CONFIG_ZSMALLOC y +CONFIG_PGTABLE_MAPPING y +CONFIG_FORCE_MAX_ZONEORDER p policy<{'arm64': '11', 'armhf-generic': '12', 'armhf-generic-lpae': '11', 'powerpc-powerpc64-emb': '13', 'powerpc-powerpc64-smp': '13', 'powerpc-powerpc-e500mc': '11', 'powerpc-powerpc-smp': '11', 'ppc64el': '9'}> +CONFIG_SECCOMP y mark +CONFIG_XEN p policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'n', 'i386': 'y'}> +CONFIG_MATH_EMULATION p policy<{'i386': 'n', 'powerpc-powerpc64-emb': 'y', 'powerpc-powerpc-e500mc': 'y'}> +CONFIG_NUMA p policy<{'amd64': 'y', 'powerpc-powerpc64-emb': 'n', 'powerpc-powerpc64-smp': 'y', 'ppc64el': 'y'}> +CONFIG_CMDLINE_BOOL p policy<{'amd64': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_XEN p policy<(arch i386 amd64 arm64 &/ value y) | value n> +CONFIG_SCHED_MC y +CONFIG_SCHED_SMT p policy<(arch armhf &/ value n) | (flavour powerpc64-emb &/ value n) | value y> +CONFIG_HOTPLUG_CPU y +CONFIG_NUMA p policy<{'powerpc-powerpc64-emb': 'n', '*': 'y'}> +CONFIG_MOVABLE_NODE y +CONFIG_MEMORY_HOTPLUG y +CONFIG_MEMORY_HOTREMOVE y + +# Menu: Processor type and features >> Architecture: arm +CONFIG_HAVE_ARM_ARCH_TIMER p policy<{'armhf': 'y'}> +CONFIG_ARM_PSCI p policy<{'armhf': 'y'}> +CONFIG_THUMB2_KERNEL p policy<{'armhf': 'n'}> +CONFIG_AEABI p policy<{'armhf': 'y'}> +CONFIG_OABI_COMPAT p policy<{'armhf': 'n'}> +CONFIG_HW_PERF_EVENTS p policy<{'arm64': 'y', 'armhf': 'y'}> +CONFIG_UACCESS_WITH_MEMCPY p policy<{'armhf': 'n'}> + +# Menu: Processor type and features >> Architecture: powerpc +CONFIG_PPC_TRANSACTIONAL_MEM p policy<{'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_SWIOTLB y +CONFIG_PPC64_SUPPORTS_MEMORY_FAILURE p policy<{'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_FA_DUMP p policy<{'powerpc': 'y', 'ppc64el': 'y'}> note +CONFIG_IRQ_ALL_CPUS p policy<{'powerpc': 'n', 'ppc64el': 'y'}> +CONFIG_PPC_SUBPAGE_PROT p policy<{'ppc64el': 'y'}> +CONFIG_PPC_DENORMALISATION p policy<{'powerpc': 'n', 'ppc64el': 'y'}> +CONFIG_EXTRA_TARGETS p policy<{'powerpc': '""', 'ppc64el': '""'}> + +# Menu: Processor type and features >> Architecture: x86 +CONFIG_ZONE_DMA y +CONFIG_X86_FEATURE_NAMES p policy<{'amd64': 'y', 'i386': 'y'}> +CONFIG_X86_X2APIC p policy<{'amd64': 'y'}> +CONFIG_X86_MPPARSE p policy<{'amd64': 'y', 'i386': 'y'}> +CONFIG_X86_EXTENDED_PLATFORM p policy<{'amd64': 'y', 'i386': 'y'}> +CONFIG_X86_INTEL_LPSS p policy<{'amd64': 'y', 'i386': 'y'}> +CONFIG_IOSF_MBI p policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_IOSF_MBI_DEBUG p policy<{'amd64': 'y', 'i386': 'y'}> +CONFIG_X86_32_IRIS p policy<{'i386': 'm'}> +CONFIG_SCHED_OMIT_FRAME_POINTER p policy<{'amd64': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_MEMTEST p policy<{'amd64': 'y', 'i386': 'y'}> +CONFIG_X86_GENERIC p policy<{'i386': 'y'}> +CONFIG_X86_PPRO_FENCE p policy<{'i386': 'y'}> +CONFIG_HPET_TIMER p policy<{'amd64': 'y', 'i386': 'y'}> +CONFIG_DMI p policy<{'amd64': 'y', 'arm64': 'y', 'i386': 'y'}> +CONFIG_GART_IOMMU p policy<{'amd64': 'y'}> +CONFIG_CALGARY_IOMMU p policy<{'amd64': 'y'}> +CONFIG_CALGARY_IOMMU_ENABLED_BY_DEFAULT p policy<{'amd64': 'y'}> +CONFIG_X86_REROUTE_FOR_BROKEN_BOOT_IRQS p policy<{'amd64': 'y', 'i386': 'y'}> +CONFIG_VM86 p policy<{'i386': 'n'}> +CONFIG_X86_16BIT p policy<{'amd64': 'y', 'i386': 'y'}> +CONFIG_X86_VSYSCALL_EMULATION p policy<{'amd64': 'y'}> +CONFIG_TOSHIBA p policy<{'i386': 'n'}> +CONFIG_I8K p policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_X86_REBOOTFIXUPS p policy<{'i386': 'y'}> +CONFIG_X86_MSR p policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_X86_CPUID p policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_X86_PAE p policy<{'i386': 'y'}> +CONFIG_DIRECT_GBPAGES p policy<{'amd64': 'y'}> +CONFIG_ARCH_MEMORY_PROBE p policy<{'amd64': 'y', 'powerpc-powerpc64-smp': 'y', 'ppc64el': 'y'}> +CONFIG_X86_CHECK_BIOS_CORRUPTION p policy<{'amd64': 'y', 'i386': 'y'}> +CONFIG_X86_BOOTPARAM_MEMORY_CORRUPTION_CHECK p policy<{'amd64': 'y', 'i386': 'y'}> +CONFIG_X86_RESERVE_LOW p policy<{'amd64': '64', 'i386': '64'}> +CONFIG_MTRR p policy<{'amd64': 'y', 'i386': 'y'}> +CONFIG_MTRR_SANITIZER p policy<{'amd64': 'y', 'i386': 'y'}> +CONFIG_MTRR_SANITIZER_ENABLE_DEFAULT p policy<{'amd64': '1', 'i386': '1'}> +CONFIG_MTRR_SANITIZER_SPARE_REG_NR_DEFAULT p policy<{'amd64': '1', 'i386': '1'}> +CONFIG_X86_PAT p policy<{'amd64': 'y', 'i386': 'y'}> +CONFIG_ARCH_RANDOM p policy<{'amd64': 'y', 'i386': 'y', 'powerpc-powerpc64-emb': 'n', 'powerpc-powerpc64-smp': 'y', 'powerpc-powerpc-e500mc': 'n', 'powerpc-powerpc-smp': 'n', 'ppc64el': 'y'}> +CONFIG_X86_SMAP p policy<{'amd64': 'y', 'i386': 'y'}> +CONFIG_X86_INTEL_MPX p policy<{'amd64': 'y', 'i386': 'y'}> +CONFIG_EFI p policy<{'amd64': 'y', 'arm64': 'y', 'i386': 'y'}> +CONFIG_EFI_STUB p policy<{'amd64': 'y', 'arm64': 'y', 'i386': 'y'}> +CONFIG_EFI_MIXED p policy<{'amd64': 'y'}> +CONFIG_KEXEC_FILE p policy<{'amd64': 'y'}> +CONFIG_KEXEC_VERIFY_SIG p policy<{'amd64': 'y'}> +CONFIG_KEXEC_JUMP p policy<{'amd64': 'y', 'i386': 'y'}> +CONFIG_RANDOMIZE_BASE p policy<{'amd64': 'y', 'i386': 'y'}> +CONFIG_COMPAT_VDSO p mark policy<{'amd64': 'n', 'i386': 'n'}> + +# Menu: Processor type and features >> CPU microcode loading support >> Architecture: x86 +CONFIG_MICROCODE p policy<{'amd64': 'y', 'i386': 'y'}> +CONFIG_MICROCODE_INTEL p policy<{'amd64': 'y', 'i386': 'y'}> +CONFIG_MICROCODE_AMD p policy<{'amd64': 'y', 'i386': 'y'}> +CONFIG_MICROCODE_EARLY p policy<{'amd64': 'y', 'i386': 'y'}> + +# Menu: Processor type and features >> Device power management core functionality + +# Menu: Processor type and features >> Device power management core functionality >> Power Management Debug Support + +# Menu: Processor type and features >> High Memory Support >> Architecture: x86 +CONFIG_HIGHMEM64G y + +# Menu: Processor type and features >> Linux guest support >> Architecture: x86 +CONFIG_HYPERVISOR_GUEST 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 y +CONFIG_PARAVIRT_SPINLOCKS y +CONFIG_XEN_PVH y +CONFIG_KVM_DEBUG_FS y +CONFIG_PARAVIRT_TIME_ACCOUNTING n +CONFIG_LGUEST_GUEST n + +# Menu: Processor type and features >> Machine Check / overheating reporting >> Architecture: x86 +CONFIG_X86_MCE p policy<{'amd64': 'y', 'i386': 'y'}> +CONFIG_X86_MCE_INTEL p policy<{'amd64': 'y', 'i386': 'y'}> +CONFIG_X86_MCE_AMD p policy<{'amd64': 'y', 'i386': 'y'}> +CONFIG_X86_ANCIENT_MCE p policy<{'i386': 'n'}> + +# Menu: Processor type and features >> Math emulation options >> Architecture: powerpc +CONFIG_MATH_EMULATION_FULL p policy<{'powerpc': 'n'}> +CONFIG_MATH_EMULATION_HW_UNIMPLEMENTED p policy<{'powerpc': 'y'}> + +# Menu: Processor type and features >> Memory model +CONFIG_SPARSEMEM_MANUAL y + +# Menu: Processor type and features >> Memory split +CONFIG_VMSPLIT_3G y + +# 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: powerpc +CONFIG_PPC_4K_PAGES p policy<{'powerpc': 'y', 'ppc64el': 'n'}> +CONFIG_PPC_64K_PAGES p policy<{'powerpc': 'n', 'ppc64el': 'y'}> + +# Menu: Processor type and features >> Preemption Model +CONFIG_PREEMPT_VOLUNTARY p policy<(!flavour lowlatency &/ value y) | value n> +CONFIG_PREEMPT p policy<(flavour lowlatency &/ value y) | value n> + +# Menu: Processor type and features >> Processor family + +# Menu: Processor type and features >> Processor family >> Architecture: x86 +CONFIG_M686 y + +# Menu: Processor type and features >> Support for extended (non-PC) x86 platforms >> Architecture: x86 +CONFIG_X86_NUMACHIP p policy<{'amd64': 'y', 'i386': 'y'}> +CONFIG_X86_VSMP p policy<{'amd64': 'n', 'i386': 'n'}> +CONFIG_X86_UV p policy<{'amd64': 'n', 'i386': 'n'}> +CONFIG_X86_GOLDFISH p policy<{'amd64': 'n', 'i386': 'n'}> +CONFIG_X86_INTEL_MID p policy<{'amd64': 'y', 'i386': 'y'}> +CONFIG_X86_RDC321X p policy<{'amd64': 'n', 'i386': 'n'}> +CONFIG_X86_32_NON_STANDARD p policy<{'amd64': 'n', 'i386': 'n'}> +CONFIG_APB_TIMER p policy<{'amd64': 'y', 'i386': 'y'}> + +# Menu: Processor type and features >> Supported processor vendors >> Architecture: x86 +CONFIG_PROCESSOR_SELECT p policy<{'amd64': 'y', 'i386': 'y'}> +CONFIG_CPU_SUP_INTEL p policy<{'amd64': 'y', 'i386': 'y'}> +CONFIG_CPU_SUP_CYRIX_32 p policy<{'i386': 'y'}> +CONFIG_CPU_SUP_AMD p policy<{'amd64': 'y', 'i386': 'y'}> +CONFIG_CPU_SUP_CENTAUR p policy<{'amd64': 'y', 'i386': 'y'}> +CONFIG_CPU_SUP_TRANSMETA_32 p policy<{'i386': 'y'}> +CONFIG_CPU_SUP_UMC_32 p policy<{'i386': 'y'}> + +# Menu: Processor type and features >> Symmetric Multi-Processing + +# Menu: Processor type and features >> Symmetric Multi-Processing >> Architecture: arm +CONFIG_SMP_ON_UP p policy<{'armhf': 'y'}> +CONFIG_ARM_CPU_TOPOLOGY p policy<{'armhf': 'y'}> +CONFIG_MCPM p policy<{'armhf': 'y'}> +CONFIG_BIG_LITTLE p policy<{'armhf': 'y'}> +CONFIG_BL_SWITCHER p policy<{'armhf': 'y'}> + +# Menu: Processor type and features >> Symmetric multi-processing support + +# Menu: Processor type and features >> Symmetric multi-processing support >> Architecture: x86 +CONFIG_NODES_SHIFT p policy<{'amd64': '6', 'powerpc-powerpc64-smp': '8', 'ppc64el': '8'}> +CONFIG_X86_BIGSMP p policy<{'amd64': 'n', 'i386': 'n'}> +CONFIG_MAXSMP p policy<{'amd64': 'n', 'i386': 'n'}> +CONFIG_BOOTPARAM_HOTPLUG_CPU0 p policy<{'amd64': 'n', 'i386': 'n'}> + +# 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_AMD_NUMA p policy<{'amd64': 'y', 'i386': 'y'}> +CONFIG_X86_64_ACPI_NUMA p policy<{'amd64': 'y', 'i386': 'y'}> +CONFIG_NUMA_EMU p policy<{'amd64': 'n', 'i386': 'n'}> + +# Menu: Processor type and features >> Timer frequency +CONFIG_HZ_250 p policy<(!flavour lowlatency &/ value y) | value n> +CONFIG_HZ_1000 p policy<(flavour lowlatency &/ value y) | value n> + +# Menu: Processor type and features >> Timer frequency >> Architecture: arm + +# Menu: Processor type and features >> Transparent Hugepage Support sysfs defaults +CONFIG_TRANSPARENT_HUGEPAGE_ALWAYS y + +# Menu: Security options +CONFIG_SECURITY_DMESG_RESTRICT n +CONFIG_SECURITYFS y +CONFIG_INTEL_TXT p policy<(arch i386 amd64 &/ value y) | value n)> + +# Menu: Security options >> Default security module +CONFIG_DEFAULT_SECURITY_APPARMOR y mark + +# Menu: Security options >> Enable access key retention support +CONFIG_KEYS y +CONFIG_PERSISTENT_KEYRINGS y +CONFIG_BIG_KEYS y +CONFIG_TRUSTED_KEYS y +CONFIG_ENCRYPTED_KEYS y +CONFIG_KEYS_DEBUG_PROC_KEYS y + +# Menu: Security options >> Enable different security models +CONFIG_SECURITY y mark +CONFIG_SECURITY_NETWORK y +CONFIG_SECURITY_NETWORK_XFRM y +CONFIG_SECURITY_PATH y +CONFIG_LSM_MMAP_MIN_ADDR 0 mark mark +CONFIG_SECURITY_SMACK y mark +CONFIG_SECURITY_SMACK_BRINGUP n +CONFIG_SECURITY_YAMA y mark +CONFIG_SECURITY_YAMA_STACKED y + +# Menu: Security options >> Enable different security models >> AppArmor support +CONFIG_SECURITY_APPARMOR y +CONFIG_SECURITY_APPARMOR_BOOTPARAM_VALUE 1 +CONFIG_SECURITY_APPARMOR_STATS n +CONFIG_SECURITY_APPARMOR_UNCONFINED_INIT y +CONFIG_SECURITY_APPARMOR_HASH y +CONFIG_SECURITY_APPARMOR_HASH_DEFAULT y + +# Menu: Security options >> Enable different security models >> Integrity subsystem +CONFIG_INTEGRITY y +CONFIG_INTEGRITY_SIGNATURE y +CONFIG_INTEGRITY_ASYMMETRIC_KEYS y +CONFIG_INTEGRITY_AUDIT y +CONFIG_EVM y +CONFIG_EVM_ATTR_FSUUID y +CONFIG_EVM_EXTRA_SMACK_XATTRS y + +# Menu: Security options >> Enable different security models >> Integrity subsystem >> Integrity Measurement Architecture(IMA) +CONFIG_IMA p policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc-powerpc64-emb': 'n', 'powerpc-powerpc64-smp': 'y', 'powerpc-powerpc-e500mc': 'y', 'powerpc-powerpc-smp': 'y', 'ppc64el': 'y'}> +CONFIG_IMA_APPRAISE y +CONFIG_IMA_TRUSTED_KEYRING y +CONFIG_IMA_LOAD_X509 n + +# Menu: Security options >> Enable different security models >> Integrity subsystem >> Integrity Measurement Architecture(IMA) >> Default integrity hash algorithm +CONFIG_IMA_DEFAULT_HASH_SHA1 y + +# Menu: Security options >> Enable different security models >> Integrity subsystem >> Integrity Measurement Architecture(IMA) >> Default template +CONFIG_IMA_NG_TEMPLATE y + +# Menu: Security options >> Enable different security models >> NSA SELinux Support +CONFIG_SECURITY_SELINUX y mark +CONFIG_SECURITY_SELINUX_BOOTPARAM y +CONFIG_SECURITY_SELINUX_BOOTPARAM_VALUE 0 +CONFIG_SECURITY_SELINUX_DISABLE y +CONFIG_SECURITY_SELINUX_DEVELOP y +CONFIG_SECURITY_SELINUX_AVC_STATS y +CONFIG_SECURITY_SELINUX_CHECKREQPROT_VALUE 1 +CONFIG_SECURITY_SELINUX_POLICYDB_VERSION_MAX n +CONFIG_SECURITY_SELINUX_BOOTPARAM y + +# Menu: Security options >> Enable different security models >> TOMOYO Linux Support +CONFIG_SECURITY_TOMOYO y +CONFIG_SECURITY_TOMOYO_MAX_ACCEPT_ENTRY 2048 +CONFIG_SECURITY_TOMOYO_MAX_AUDIT_LOG 1024 +CONFIG_SECURITY_TOMOYO_OMIT_USERSPACE_LOADER n +CONFIG_SECURITY_TOMOYO_POLICY_LOADER "/sbin/tomoyo-init" +CONFIG_SECURITY_TOMOYO_ACTIVATION_TRIGGER "/sbin/init" + +# Menu: System Type + +# Menu: System Type >> ARM Ltd. Integrator family >> Architecture: arm + +# Menu: System Type >> ARM Ltd. Integrator family >> Integrator Options >> Architecture: arm + +# Menu: System Type >> ARM Ltd. Versatile Express family >> Architecture: arm +CONFIG_ARCH_VEXPRESS p policy<{'arm64': 'y', 'armhf': 'y'}> +CONFIG_ARCH_VEXPRESS_CORTEX_A5_A9_ERRATA p policy<{'armhf': 'y'}> +CONFIG_ARCH_VEXPRESS_DCSCB p policy<{'armhf': 'y'}> +CONFIG_ARCH_VEXPRESS_SPC p policy<{'armhf': 'y'}> +CONFIG_ARCH_VEXPRESS_TC2_PM p policy<{'armhf': 'y'}> + +# Menu: System Type >> ARM system type >> Architecture: arm +CONFIG_ARCH_MULTIPLATFORM p policy<{'armhf': 'y'}> + +# Menu: System Type >> Allwinner SoCs >> Architecture: arm +CONFIG_ARCH_SUNXI n + +# Menu: System Type >> Amlogic Meson SoCs >> Architecture: arm +CONFIG_ARCH_MESON p policy<{'armhf': 'y'}> +CONFIG_MACH_MESON6 p policy<{'armhf': 'y'}> +CONFIG_MACH_MESON8 p policy<{'armhf': 'y'}> + +# Menu: System Type >> Architecture: arm +#set +tree-menu 'System Type' = D +CONFIG_ARCH_VIRT p policy<{'armhf': 'y'}> +CONFIG_ARCH_AXXIA p policy<{'armhf': 'y'}> +CONFIG_ARCH_HIGHBANK p policy<{'armhf': 'y'}> +CONFIG_ARCH_KEYSTONE p policy<{'armhf': 'n'}> +CONFIG_ARCH_ROCKCHIP p policy<{'armhf': 'n'}> +CONFIG_ARCH_SOCFPGA p policy<{'armhf': 'n'}> +CONFIG_ARCH_R8A7790 p policy<{'armhf': 'y'}> +CONFIG_MACH_LAGER p policy<{'armhf': 'y'}> +CONFIG_ARCH_WM8850 p policy<{'armhf': 'n'}> +CONFIG_ARCH_ZYNQ p policy<{'armhf': 'n'}> +CONFIG_ARM_THUMB p policy<{'armhf': 'y'}> +CONFIG_CPU_DCACHE_DISABLE p policy<{'armhf': 'n'}> +CONFIG_IWMMXT p policy<{'armhf': 'y'}> +CONFIG_ARM_ERRATA_430973 p policy<{'armhf': 'y'}> +CONFIG_ARM_ERRATA_643719 p policy<{'armhf': 'y'}> +CONFIG_ARM_ERRATA_720789 p policy<{'armhf': 'y'}> +CONFIG_ARM_ERRATA_754322 p policy<{'armhf': 'y'}> +CONFIG_ARM_ERRATA_754327 p policy<{'armhf': 'y'}> +CONFIG_ARM_ERRATA_764369 p policy<{'armhf': 'y'}> +CONFIG_ARM_ERRATA_775420 p policy<{'armhf': 'y'}> +CONFIG_ARM_ERRATA_798181 p policy<{'armhf': 'y'}> +CONFIG_ARM_ERRATA_773022 p policy<{'armhf': 'y'}> +CONFIG_ARCH_MEDIATEK p policy<{'armhf': 'y'}> +CONFIG_ARCH_S5PV210 p policy<{'armhf': 'n'}> +CONFIG_ARCH_R8A7740 p policy<{'armhf': 'y'}> +CONFIG_ARCH_R8A7779 p policy<{'armhf': 'y'}> +CONFIG_MACH_MARZEN p policy<{'armhf': 'y'}> +CONFIG_CACHE_FEROCEON_L2 p policy<{'armhf': 'y'}> +CONFIG_CACHE_FEROCEON_L2_WRITETHROUGH p policy<{'armhf': 'n'}> +CONFIG_CACHE_TAUROS2 p policy<{'armhf': 'y'}> +CONFIG_ARM_KERNMEM_PERMS p policy<{'armhf': 'n'}> +CONFIG_PJ4B_ERRATA_4742 p policy<{'armhf': 'y'}> + +# Menu: System Type >> Atmel AT91 System-on-Chip >> Architecture: arm + +# Menu: System Type >> Atmel AT91 System-on-Chip >> Core type >> Architecture: arm + +# Menu: System Type >> Broadcom SoC Support >> Architecture: arm +CONFIG_ARCH_BCM p policy<{'armhf': 'n'}> + +# Menu: System Type >> CLPS711X/EP721X/EP731X Implementations >> Architecture: arm + +# Menu: System Type >> CSR SiRF >> Architecture: arm +CONFIG_ARCH_SIRF p policy<{'armhf': 'n'}> + +# Menu: System Type >> Cavium Networks CNS3XXX family >> Architecture: arm + +# Menu: System Type >> Cirrus EP93xx Implementation Options >> Architecture: arm + +# Menu: System Type >> Cirrus EP93xx Implementation Options >> EP93xx first SDRAM bank selection >> Architecture: arm + +# Menu: System Type >> Cortina Systems Gemini Implementations >> Architecture: arm + +# Menu: System Type >> Enable the L2x0 outer cache controller >> Architecture: arm +CONFIG_CACHE_L2X0 p policy<{'armhf': 'y'}> +CONFIG_PL310_ERRATA_588369 p policy<{'armhf': 'y'}> +CONFIG_PL310_ERRATA_727915 p policy<{'armhf': 'y'}> +CONFIG_PL310_ERRATA_753970 p policy<{'armhf': 'y'}> +CONFIG_PL310_ERRATA_769419 p policy<{'armhf': 'y'}> + +# Menu: System Type >> Firmware options >> Architecture: arm +CONFIG_TRUSTED_FOUNDATIONS p policy<{'armhf': 'y'}> + +# Menu: System Type >> Footbridge Implementations >> Architecture: arm + +# Menu: System Type >> Freescale i.MX family >> Architecture: arm +CONFIG_ARCH_MXC p policy<{'armhf-generic': 'y', 'armhf-generic-lpae': 'n'}> +CONFIG_SOC_IMX50 p policy<{'armhf': 'y'}> +CONFIG_SOC_IMX53 p policy<{'armhf': 'n'}> +CONFIG_SOC_IMX6Q p policy<{'armhf': 'y'}> +CONFIG_SOC_IMX6SL p policy<{'armhf': 'y'}> +CONFIG_SOC_IMX6SX p policy<{'armhf': 'y'}> +CONFIG_SOC_VF610 p policy<{'armhf': 'y'}> +CONFIG_SOC_IMX51 p policy<{'armhf': 'y'}> +CONFIG_SOC_LS1021A p policy<{'armhf': 'n'}> + +# Menu: System Type >> Freescale i.MX family >> Baseboard >> Architecture: arm + +# Menu: System Type >> Freescale i.MX family >> Clocksource for scheduler clock >> Architecture: arm +CONFIG_VF_USE_ARM_GLOBAL_TIMER p policy<{'armhf': 'y'}> + +# Menu: System Type >> Hisilicon SoC Support >> Architecture: arm +CONFIG_ARCH_HISI p policy<{'armhf': 'y'}> + +# Menu: System Type >> Hisilicon SoC Support >> Hisilicon platform type >> Architecture: arm +CONFIG_ARCH_HIP04 p policy<{'armhf': 'y'}> +CONFIG_ARCH_HIX5HD2 p policy<{'armhf': 'y'}> +CONFIG_ARCH_HI3xxx p policy<{'armhf': 'y'}> + +# Menu: System Type >> IOP13XX Implementation Options >> Architecture: arm + +# Menu: System Type >> IOP32x Implementation Options >> Architecture: arm + +# Menu: System Type >> IOP33x 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 >> Kendin/Micrel KS8695 Implementations >> Architecture: arm + +# Menu: System Type >> MMU-based Paged Memory Management Support >> Architecture: arm +#CONFIG_ARM_LPAE p policy<{'armhf-generic': 'n', 'armhf-generic-lpae': 'y'}> +CONFIG_ARM_LPAE p policy<{'armhf-generic': 'n', 'armhf-generic-lpae': 'y'}> +CONFIG_KUSER_HELPERS p policy<{'armhf': 'y'}> +CONFIG_MMU y +CONFIG_CPU_ICACHE_DISABLE p policy<{'armhf': 'n'}> + +# Menu: System Type >> MMU-based Paged Memory Management Support >> Renesas ARM SoCs >> Architecture: arm +CONFIG_ARCH_R7S72100 p policy<{'armhf': 'y'}> +CONFIG_ARCH_R8A7791 p policy<{'armhf': 'y'}> +CONFIG_ARCH_SHMOBILE_MULTI p policy<{'armhf': 'y'}> +CONFIG_ARCH_EMEV2 p policy<{'armhf': 'y'}> +CONFIG_ARCH_R8A7794 p policy<{'armhf': 'y'}> + +# 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 p policy<{'armhf': 'n'}> + +# Menu: System Type >> MOXA ART SoC >> Architecture: arm + +# Menu: System Type >> Marvell Berlin SoCs >> Architecture: arm +CONFIG_ARCH_BERLIN p policy<{'armhf': 'y'}> +CONFIG_MACH_BERLIN_BG2 p policy<{'armhf': 'y'}> +CONFIG_MACH_BERLIN_BG2CD p policy<{'armhf': 'y'}> +CONFIG_MACH_BERLIN_BG2Q p policy<{'armhf': 'y'}> + +# Menu: System Type >> Marvell Dove Implementations >> Architecture: arm + +# Menu: System Type >> Marvell Engineering Business Unit (MVEBU) SoCs >> Architecture: arm +CONFIG_ARCH_MVEBU p policy<{'armhf': 'y'}> +CONFIG_MACH_ARMADA_370 p policy<{'armhf': 'y'}> +CONFIG_MACH_ARMADA_375 p policy<{'armhf': 'y'}> +CONFIG_MACH_ARMADA_38X p policy<{'armhf': 'y'}> +CONFIG_MACH_ARMADA_XP p policy<{'armhf': 'y'}> +CONFIG_MACH_DOVE p policy<{'armhf': 'y'}> + +# Menu: System Type >> Marvell MV78xx0 Implementations >> Architecture: arm + +# Menu: System Type >> Marvell PXA168/910/MMP2 Implmentations >> Architecture: arm + +# Menu: System Type >> Multiple platform selection >> Architecture: arm +CONFIG_ARCH_MULTI_V6 n +CONFIG_ARCH_MULTI_V7 y + +# Menu: System Type >> NUC950 Machines >> Architecture: arm + +# Menu: System Type >> NUC960 Machines >> Architecture: arm + +# Menu: System Type >> NVIDIA Tegra >> Architecture: arm +CONFIG_ARCH_TEGRA p policy<{'armhf-generic': 'y', 'armhf-generic-lpae': 'n'}> +CONFIG_ARCH_TEGRA_2x_SOC p policy<{'armhf': 'y'}> +CONFIG_ARCH_TEGRA_3x_SOC p policy<{'armhf': 'y'}> +CONFIG_ARCH_TEGRA_114_SOC p policy<{'armhf': 'y'}> +CONFIG_ARCH_TEGRA_124_SOC p policy<{'armhf': 'y'}> + +# Menu: System Type >> NetX Implementations >> Architecture: arm + +# Menu: System Type >> Orion Implementations >> Architecture: arm + +# Menu: System Type >> Qualcomm MSM Board Type >> Architecture: arm + +# Menu: System Type >> Qualcomm MSM SoC Type >> Architecture: arm + +# Menu: System Type >> Qualcomm Support >> Architecture: arm +CONFIG_ARCH_QCOM p policy<{'armhf': 'y'}> +CONFIG_ARCH_MSM8X60 p policy<{'armhf': 'y'}> +CONFIG_ARCH_MSM8960 p policy<{'armhf': 'y'}> +CONFIG_ARCH_MSM8974 p policy<{'armhf': 'y'}> + +# Menu: System Type >> RealView platform type >> Architecture: arm + +# Menu: System Type >> SA11x0 Implementations >> Architecture: arm + +# Menu: System Type >> SA11x0 Implementations >> Cerf Flash available >> Architecture: arm + +# 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 >> SMDK6410 >> Architecture: arm + +# Menu: System Type >> SMDK6410 >> SMDK6410 MMC/SD slot setup >> Architecture: arm + +# Menu: System Type >> ST SPEAr Family >> Architecture: arm +CONFIG_PLAT_SPEAR p 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 p policy<{'armhf': 'n'}> + +# Menu: System Type >> Samsung Common options >> Architecture: arm +CONFIG_SAMSUNG_PM_CHECK p policy<{'armhf': 'n'}> + +# Menu: System Type >> Samsung EXYNOS >> Architecture: arm +CONFIG_ARCH_EXYNOS p policy<{'armhf': 'y'}> +CONFIG_ARCH_EXYNOS3 p policy<{'armhf': 'n'}> + +# Menu: System Type >> Samsung EXYNOS >> SAMSUNG EXYNOS4 >> Architecture: arm +CONFIG_ARCH_EXYNOS4 p policy<{'armhf': 'n'}> + +# Menu: System Type >> Samsung EXYNOS >> SAMSUNG EXYNOS5 >> Architecture: arm +CONFIG_ARCH_EXYNOS5 p policy<{'armhf': 'y'}> +CONFIG_SOC_EXYNOS5250 p policy<{'armhf': 'y'}> +CONFIG_SOC_EXYNOS5260 p policy<{'armhf': 'y'}> +CONFIG_SOC_EXYNOS5410 p policy<{'armhf': 'y'}> +CONFIG_SOC_EXYNOS5420 p policy<{'armhf': 'y'}> +CONFIG_SOC_EXYNOS5440 p policy<{'armhf': 'y'}> +CONFIG_SOC_EXYNOS5800 p policy<{'armhf': 'y'}> +CONFIG_EXYNOS5420_MCPM p policy<{'armhf': 'y'}> + +# Menu: System Type >> SuperH / SH-Mobile Driver Options + +# Menu: System Type >> Support ARM V7 processor >> Architecture: arm +CONFIG_ARM_DMA_MEM_BUFFERABLE p policy<{'armhf': 'y'}> +CONFIG_CPU_V7 p policy<{'armhf': 'y'}> +CONFIG_ARM_THUMBEE p policy<{'armhf': 'y'}> +CONFIG_SWP_EMULATE p policy<{'armhf': 'y'}> +CONFIG_CPU_BPREDICT_DISABLE p policy<{'armhf': 'n'}> + +# Menu: System Type >> TI DaVinci Implementations >> Architecture: arm + +# Menu: System Type >> TI DaVinci Implementations >> DA850/OMAP-L138/AM18x based system >> Architecture: arm + +# Menu: System Type >> TI DaVinci Implementations >> DA850/OMAP-L138/AM18x based system >> Select peripherals connected to expander on UI board >> Architecture: arm + +# Menu: System Type >> TI DaVinci Implementations >> DaVinci 644x based system >> Architecture: arm + +# Menu: System Type >> TI DaVinci Implementations >> Select DA830/OMAP-L137/AM17x UI board peripheral >> Architecture: arm + +# Menu: System Type >> TI OMAP Common Features >> Architecture: arm +CONFIG_POWER_AVS_OMAP p policy<{'armhf': 'y'}> +CONFIG_POWER_AVS_OMAP_CLASS3 p policy<{'armhf': 'y'}> +CONFIG_OMAP_RESET_CLOCKS p policy<{'armhf': 'y'}> +CONFIG_OMAP_32K_TIMER p policy<{'armhf': 'y'}> +CONFIG_OMAP3_L2_AUX_SECURE_SAVE_RESTORE p policy<{'armhf': 'n'}> +CONFIG_OMAP_DM_TIMER p policy<{'armhf': 'y'}> + +# Menu: System Type >> TI OMAP Common Features >> OMAP PM layer selection >> Architecture: arm +CONFIG_OMAP_PM_NOOP p policy<{'armhf': 'y'}> + +# Menu: System Type >> TI OMAP Common Features >> OMAP multiplexing support >> Architecture: arm +CONFIG_OMAP_MUX p policy<{'armhf': 'y'}> +CONFIG_OMAP_MUX_WARNINGS p policy<{'armhf': 'y'}> + +# Menu: System Type >> TI OMAP/AM/DM/DRA Family >> Architecture: arm +CONFIG_ARCH_OMAP3 p policy<{'armhf-generic': 'y', 'armhf-generic-lpae': 'n'}> +CONFIG_ARCH_OMAP4 p policy<{'armhf-generic': 'y', 'armhf-generic-lpae': 'n'}> +CONFIG_SOC_OMAP5 p policy<{'armhf': 'n'}> +CONFIG_SOC_AM33XX p policy<{'armhf-generic': 'y', 'armhf-generic-lpae': 'n'}> +CONFIG_SOC_AM43XX p policy<{'armhf': 'n'}> +CONFIG_SOC_DRA7XX p policy<{'armhf': 'y'}> + +# Menu: System Type >> TI OMAP/AM/DM/DRA Family >> TI OMAP2/3/4 Specific Features >> Architecture: arm +#set +tree-menu 'System Type>>TI OMAP/AM/DM/DRA Family>>TI OMAP2/3/4 Specific Features' = D +CONFIG_ARCH_OMAP2PLUS_TYPICAL p policy<{'armhf': 'y'}> +CONFIG_SOC_HAS_OMAP2_SDRC p policy<{'armhf': 'y'}> +CONFIG_SOC_HAS_REALTIME_COUNTER p policy<{'armhf': 'y'}> +CONFIG_SOC_OMAP3430 p policy<{'armhf': 'y'}> +CONFIG_SOC_TI81XX p policy<{'armhf': 'y'}> +CONFIG_MACH_OMAP3_BEAGLE p policy<{'armhf': 'y'}> +CONFIG_MACH_DEVKIT8000 p policy<{'armhf': 'n'}> +CONFIG_MACH_OMAP_LDP p policy<{'armhf': 'y'}> +CONFIG_MACH_OMAP3530_LV_SOM p policy<{'armhf': 'y'}> +CONFIG_MACH_OMAP3_TORPEDO p policy<{'armhf': 'y'}> +CONFIG_MACH_OVERO p policy<{'armhf': 'y'}> +CONFIG_MACH_OMAP3517EVM p policy<{'armhf': 'n'}> +CONFIG_MACH_CRANEBOARD p policy<{'armhf': 'n'}> +CONFIG_MACH_OMAP3_PANDORA p policy<{'armhf': 'y'}> +CONFIG_MACH_TOUCHBOOK p policy<{'armhf': 'y'}> +CONFIG_MACH_NOKIA_RX51 p policy<{'armhf': 'n'}> +CONFIG_MACH_CM_T35 p policy<{'armhf': 'n'}> +CONFIG_MACH_CM_T3517 p policy<{'armhf': 'y'}> +CONFIG_MACH_SBC3530 p policy<{'armhf': 'y'}> +CONFIG_OMAP3_SDRC_AC_TIMING p policy<{'armhf': '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 y + +# Menu: System Type >> Timer and clock configuration >> Architecture: arm +CONFIG_SHMOBILE_TIMER_HZ D + +# Menu: System Type >> Versatile platform type >> Architecture: arm + +# Menu: System Type >> W90P910 Machines >> Architecture: arm + +# Menu: Ubuntu Supplied Third-Party Device Drivers + +# Menu: Ubuntu Supplied Third-Party Device Drivers >> Aufs (Advanced multi layered unification filesystem) support +CONFIG_AUFS_HNOTIFY n +CONFIG_AUFS_EXPORT y +CONFIG_AUFS_XATTR y +CONFIG_AUFS_FHSM n +CONFIG_AUFS_RDU n +CONFIG_AUFS_SHWH n +CONFIG_AUFS_BR_RAMFS n +CONFIG_AUFS_BR_FUSE n +CONFIG_AUFS_BR_HFSPLUS n + +# Menu: Ubuntu Supplied Third-Party Device Drivers >> Aufs (Advanced multi layered unification filesystem) support >> Maximum number of branches +CONFIG_AUFS_BRANCH_MAX_127 y + +# Menu: Ubuntu Supplied Third-Party Device Drivers >> Aufs (Advanced multi layered unification filesystem) support >> method + +# Menu: Virtualization +CONFIG_VIRTUALIZATION y +CONFIG_KVM p policy<{'arm64': 'y', 'armhf': 'y', 'powerpc': 'y', 'ppc64el': 'y', '*': 'm'}> mark +CONFIG_LGUEST n + +# Menu: Virtualization >> Architecture: arm +CONFIG_KVM_ARM_HOST p policy<{'arm64': 'y', 'armhf-generic-lpae': 'y'}> +CONFIG_KVM_ARM_VGIC p policy<{'arm64': 'y', 'armhf-generic-lpae': 'y'}> +CONFIG_KVM_ARM_TIMER p policy<{'arm64': 'y', 'armhf-generic-lpae': 'y'}> + +# Menu: Virtualization >> Architecture: powerpc +CONFIG_KVM_BOOK3S_64 p policy<{'powerpc-powerpc64-smp': 'm', 'ppc64el': 'm'}> +CONFIG_KVM_BOOK3S_64_HV p policy<{'powerpc-powerpc64-smp': 'm', 'ppc64el': 'm'}> +CONFIG_KVM_BOOK3S_64_PR p policy<{'powerpc-powerpc64-smp': 'm', 'ppc64el': 'm'}> +CONFIG_KVM_EXIT_TIMING p policy<{'powerpc-powerpc64-emb': 'n', 'powerpc-powerpc-e500mc': 'n'}> +CONFIG_KVM_E500MC p policy<{'powerpc-powerpc64-emb': 'y', 'powerpc-powerpc-e500mc': 'y'}> +CONFIG_KVM_MPIC p policy<{'powerpc-powerpc64-emb': 'y', 'powerpc-powerpc-e500mc': 'y'}> +CONFIG_KVM_XICS p policy<{'powerpc-powerpc64-smp': 'y', 'ppc64el': 'y'}> + +# Menu: Virtualization >> Kernel-based Virtual Machine (KVM) support + +# Menu: Virtualization >> Kernel-based Virtual Machine (KVM) support >> Architecture: x86 +CONFIG_KVM_MMU_AUDIT n +CONFIG_KVM_DEVICE_ASSIGNMENT y + +# 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 + +# Ensure DEPRECATED options are off. +set +all ?flag DEPRECATED !mark annotated ?type bool = n +set +all ?flag DEPRECATED !mark annotated ?type tristate = n + +# Ensure DANGEROUS things are turned off. +set +all ?flag DANGEROUS = n + --- linux-raspi2-4.2.0.orig/debian.master/config/arm64/config.common.arm64 +++ linux-raspi2-4.2.0/debian.master/config/arm64/config.common.arm64 @@ -0,0 +1,147 @@ +# +# Config options for config.common.arm64 automatically generated by splitconfig.pl +# +CONFIG_64BIT=y +CONFIG_AC97_BUS=m +CONFIG_ACPI_REDUCED_HARDWARE_ONLY=y +CONFIG_ARCH_DMA_ADDR_T_64BIT=y +# CONFIG_ARCH_NEEDS_CPU_IDLE_COUPLED is not set +CONFIG_ARCH_PHYS_ADDR_T_64BIT=y +CONFIG_ARCH_SELECT_MEMORY_MODEL=y +CONFIG_ARCH_SPARSEMEM_DEFAULT=y +# CONFIG_ARCH_TEGRA is not set +CONFIG_ATA_GENERIC=m +# CONFIG_ATA_NONSTANDARD is not set +CONFIG_ATA_PIIX=m +CONFIG_AUDIT_ARCH_COMPAT_GENERIC=y +CONFIG_BCH=m +CONFIG_CC_STACKPROTECTOR=y +CONFIG_CMDLINE="console=ttyAMA0" +# CONFIG_CPU_BIG_ENDIAN is not set +# CONFIG_CXL_BASE is not set +# CONFIG_CXL_EEH is not set +# CONFIG_CXL_KERNEL_API is not set +CONFIG_DEFAULT_MMAP_MIN_ADDR=32768 +CONFIG_DMA_VIRTUAL_CHANNELS=y +# CONFIG_EM_TIMER_STI is not set +CONFIG_FB_ATY128=m +# CONFIG_FB_BOOT_VESA_SUPPORT is not set +# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set +# CONFIG_FB_MACMODES is not set +CONFIG_FB_SYS_COPYAREA=m +CONFIG_FB_SYS_FILLRECT=m +CONFIG_FB_SYS_FOPS=m +CONFIG_FB_SYS_IMAGEBLIT=m +CONFIG_FB_UDL=m +CONFIG_FB_VOODOO1=m +# CONFIG_FONTS is not set +CONFIG_FORCE_MAX_ZONEORDER=11 +CONFIG_FRAME_WARN=1024 +CONFIG_GENERIC_CSUM=y +CONFIG_GPIO_GENERIC=y +CONFIG_GPIO_GENERIC_PLATFORM=y +CONFIG_GPIO_TWL4030=m +CONFIG_GPIO_TWL6040=m +# CONFIG_HAVE_64BIT_ALIGNED_ACCESS is not set +# CONFIG_HAVE_AOUT is not set +CONFIG_HAVE_ARCH_BITREVERSE=y +# CONFIG_HAVE_BOOTMEM_INFO_NODE is not set +CONFIG_HAVE_GENERIC_DMA_COHERENT=y +CONFIG_HOTPLUG_PCI_PCIE=y +CONFIG_HOTPLUG_PCI_SHPC=m +# CONFIG_HPET is not set +CONFIG_HUGETLB_PAGE=y +CONFIG_HZ=100 +# CONFIG_I2C_SLAVE is not set +CONFIG_ILLEGAL_POINTER_VALUE=0xdead000000000000 +CONFIG_IMA=y +CONFIG_IOMMU_IO_PGTABLE_LPAE=y +# CONFIG_IPMI_SI_PROBE_DEFAULTS is not set +# CONFIG_IRQ_FORCED_THREADING_DEFAULT is not set +CONFIG_JUMP_LABEL=y +CONFIG_KVM=y +CONFIG_LEDS_TRIGGER_HEARTBEAT=m +CONFIG_LOG_BUF_SHIFT=14 +CONFIG_MFD_SM501=m +# CONFIG_MFD_TMIO is not set +CONFIG_MII=y +CONFIG_MMC_BLOCK=y +CONFIG_MMC_SDHCI=m +CONFIG_MMC_SDHCI_PLTFM=m +CONFIG_MTD=m +CONFIG_MTD_BLKDEVS=m +CONFIG_MTD_BLOCK=m +CONFIG_MTD_CMDLINE_PARTS=m +CONFIG_MTD_NAND=m +CONFIG_MTD_NAND_BCH=m +CONFIG_MTD_NAND_ECC=m +CONFIG_MTD_NAND_IDS=m +# CONFIG_MTD_NAND_OMAP_BCH_BUILD is not set +CONFIG_MTD_OF_PARTS=m +CONFIG_NEED_DMA_MAP_STATE=y +CONFIG_NODES_SHIFT=2 +CONFIG_NR_CPUS=128 +CONFIG_NUMA=y +CONFIG_OF=y +CONFIG_PATA_SIS=m +CONFIG_PGTABLE_LEVELS=3 +CONFIG_PHYS_ADDR_T_64BIT=y +# CONFIG_PHY_EXYNOS5250_USB2 is not set +# CONFIG_PINCTRL_MT8127 is not set +# CONFIG_PINCTRL_MT8135 is not set +CONFIG_PPS=m +# CONFIG_PREEMPT is not set +CONFIG_PREEMPT_VOLUNTARY=y +# CONFIG_PROBE_EVENTS is not set +# CONFIG_PSTORE_CONSOLE is not set +CONFIG_PSTORE_RAM=m +CONFIG_PTP_1588_CLOCK=m +CONFIG_RCU_CPU_STALL_TIMEOUT=60 +# CONFIG_RCU_NOCB_CPU is not set +CONFIG_REED_SOLOMON=m +CONFIG_REGULATOR_FIXED_VOLTAGE=m +CONFIG_REGULATOR_TWL4030=m +CONFIG_RTC_DRV_DS3232=m +CONFIG_RTC_DRV_PCF8523=m +CONFIG_RTC_DRV_PL031=m +CONFIG_RTC_DRV_TWL4030=m +CONFIG_SATA_AHCI_PLATFORM=m +CONFIG_SATA_SVW=m +CONFIG_SCHED_SMT=y +CONFIG_SCSI_SRP_ATTRS=m +CONFIG_SENSORS_SCH56XX_COMMON=m +CONFIG_SERIAL_8250_DW=y +# CONFIG_SH_TIMER_CMT is not set +# CONFIG_SH_TIMER_MTU2 is not set +# CONFIG_SH_TIMER_TMU is not set +CONFIG_SMC91X=y +CONFIG_SND=m +CONFIG_SND_COMPRESS_OFFLOAD=m +CONFIG_SND_DMAENGINE_PCM=m +# CONFIG_SND_OPL4_LIB_SEQ is not set +CONFIG_SND_PCM=m +# CONFIG_SND_SBAWE_SEQ is not set +CONFIG_SND_SOC=m +CONFIG_SND_SOC_FSL_SSI=m +CONFIG_SND_SOC_HDMI_CODEC=m +CONFIG_SND_SOC_I2C_AND_SPI=m +CONFIG_SND_SOC_IMX_AUDMUX=m +CONFIG_SND_SOC_RT5677_SPI=m +CONFIG_SND_SOC_SGTL5000=m +CONFIG_SND_TIMER=m +CONFIG_SOUND=m +CONFIG_SPI_PXA2XX_PCI=m +CONFIG_STANDALONE=y +CONFIG_SYS_HYPERVISOR=y +CONFIG_TIGON3=m +CONFIG_TI_CPSW_ALE=m +# CONFIG_UPROBES is not set +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_VFIO_IOMMU_TYPE1=m +CONFIG_XEN=y --- linux-raspi2-4.2.0.orig/debian.master/config/arm64/config.flavour.generic +++ linux-raspi2-4.2.0/debian.master/config/arm64/config.flavour.generic @@ -0,0 +1,3 @@ +# +# Config options for config.flavour.generic automatically generated by splitconfig.pl +# --- linux-raspi2-4.2.0.orig/debian.master/config/armhf/config.common.armhf +++ linux-raspi2-4.2.0/debian.master/config/armhf/config.common.armhf @@ -0,0 +1,135 @@ +# +# Config options for config.common.armhf automatically generated by splitconfig.pl +# +CONFIG_AC97_BUS=y +# CONFIG_APM_EMULATION is not set +CONFIG_ARCH_DMA_ADDR_T_64BIT=y +CONFIG_ARCH_NEEDS_CPU_IDLE_COUPLED=y +# CONFIG_ARCH_SELECT_MEMORY_MODEL is not set +# CONFIG_ARCH_SPARSEMEM_DEFAULT is not set +CONFIG_ATA_GENERIC=m +# CONFIG_ATA_NONSTANDARD is not set +CONFIG_ATA_PIIX=m +# CONFIG_AUDIT_ARCH_COMPAT_GENERIC is not set +CONFIG_BCH=y +CONFIG_CC_STACKPROTECTOR=y +CONFIG_CMDLINE="" +# CONFIG_CPU_BIG_ENDIAN is not set +CONFIG_CRASH_DUMP=y +# CONFIG_CXL_BASE is not set +# CONFIG_CXL_EEH is not set +# CONFIG_CXL_KERNEL_API is not set +CONFIG_DEFAULT_MMAP_MIN_ADDR=32768 +CONFIG_DMA_VIRTUAL_CHANNELS=y +CONFIG_EM_TIMER_STI=y +CONFIG_FB_ATY128=m +# CONFIG_FB_BOOT_VESA_SUPPORT is not set +# CONFIG_FB_MACMODES is not set +CONFIG_FB_SYS_COPYAREA=m +CONFIG_FB_SYS_FILLRECT=m +CONFIG_FB_SYS_FOPS=m +CONFIG_FB_SYS_IMAGEBLIT=m +CONFIG_FB_UDL=m +CONFIG_FB_VOODOO1=m +CONFIG_FONTS=y +CONFIG_FRAME_WARN=1024 +CONFIG_GPIO_GENERIC=y +CONFIG_GPIO_GENERIC_PLATFORM=y +CONFIG_GPIO_TWL4030=y +CONFIG_GPIO_TWL6040=y +# CONFIG_HAVE_64BIT_ALIGNED_ACCESS is not set +# CONFIG_HAVE_AOUT is not set +CONFIG_HAVE_ARCH_BITREVERSE=y +# CONFIG_HAVE_BOOTMEM_INFO_NODE is not set +CONFIG_HAVE_GENERIC_DMA_COHERENT=y +CONFIG_HIBERNATION=y +CONFIG_HZ=250 +# CONFIG_HZ_1000 is not set +CONFIG_HZ_250=y +CONFIG_I2C_SLAVE=y +CONFIG_IMA=y +# CONFIG_IPMI_SI_PROBE_DEFAULTS is not set +# CONFIG_IRQ_FORCED_THREADING_DEFAULT is not set +# CONFIG_JUMP_LABEL is not set +CONFIG_KVM=y +CONFIG_LEDS_TRIGGER_HEARTBEAT=y +CONFIG_LOG_BUF_SHIFT=17 +CONFIG_MFD_SM501=y +CONFIG_MFD_TMIO=y +CONFIG_MII=m +CONFIG_MMC_BLOCK=y +CONFIG_MMC_SDHCI=y +CONFIG_MMC_SDHCI_PLTFM=y +CONFIG_MTD=y +CONFIG_MTD_BLKDEVS=y +CONFIG_MTD_BLOCK=y +CONFIG_MTD_CMDLINE_PARTS=y +CONFIG_MTD_NAND=y +CONFIG_MTD_NAND_BCH=y +CONFIG_MTD_NAND_ECC=y +CONFIG_MTD_NAND_IDS=y +CONFIG_MTD_NAND_OMAP_BCH_BUILD=y +CONFIG_MTD_OF_PARTS=y +CONFIG_NEED_DMA_MAP_STATE=y +CONFIG_NR_CPUS=4 +CONFIG_NVRAM=m +CONFIG_OF=y +CONFIG_PAGE_OFFSET=0xC0000000 +CONFIG_PATA_SIS=m +# CONFIG_PCCARD is not set +CONFIG_PHY_EXYNOS5250_USB2=y +CONFIG_PINCTRL_MT8127=y +CONFIG_PINCTRL_MT8135=y +CONFIG_PPS=y +# CONFIG_PREEMPT is not set +CONFIG_PREEMPT_VOLUNTARY=y +CONFIG_PROBE_EVENTS=y +CONFIG_PSTORE_CONSOLE=y +CONFIG_PSTORE_RAM=y +CONFIG_PTP_1588_CLOCK=y +CONFIG_RCU_CPU_STALL_TIMEOUT=60 +# CONFIG_RCU_NOCB_CPU is not set +CONFIG_REED_SOLOMON=y +CONFIG_REGULATOR_FIXED_VOLTAGE=y +CONFIG_RTC_DRV_CMOS=m +CONFIG_RTC_DRV_DS3232=m +CONFIG_RTC_DRV_PL031=y +CONFIG_RTC_DRV_TWL4030=y +CONFIG_SATA_AHCI_PLATFORM=y +CONFIG_SATA_SVW=m +# CONFIG_SCHED_SMT is not set +CONFIG_SCSI_SRP_ATTRS=m +CONFIG_SENSORS_SCH56XX_COMMON=m +CONFIG_SERIAL_8250_DW=m +CONFIG_SH_TIMER_CMT=y +CONFIG_SH_TIMER_MTU2=y +CONFIG_SH_TIMER_TMU=y +CONFIG_SMC91X=m +CONFIG_SND=y +CONFIG_SND_COMPRESS_OFFLOAD=y +CONFIG_SND_DMAENGINE_PCM=y +# CONFIG_SND_OPL4_LIB_SEQ is not set +CONFIG_SND_PCM=y +# CONFIG_SND_SBAWE_SEQ is not set +CONFIG_SND_SOC=y +CONFIG_SND_SOC_HDMI_CODEC=y +CONFIG_SND_SOC_I2C_AND_SPI=y +CONFIG_SND_SOC_RT5677_SPI=m +CONFIG_SND_TIMER=y +CONFIG_SOUND=y +CONFIG_SPI_PXA2XX_PCI=m +CONFIG_STANDALONE=y +# CONFIG_SYS_HYPERVISOR is not set +CONFIG_TIGON3=m +CONFIG_TI_CPSW_ALE=y +CONFIG_UPROBES=y +# CONFIG_USB_EHCI_HCD_PLATFORM is not set +CONFIG_USB_FSL_MPH_DR_OF=m +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_OHCI_HCD_PLATFORM is not set +# CONFIG_VFIO_IOMMU_TYPE1 is not set +# CONFIG_XEN is not set --- linux-raspi2-4.2.0.orig/debian.master/config/armhf/config.flavour.generic +++ linux-raspi2-4.2.0/debian.master/config/armhf/config.flavour.generic @@ -0,0 +1,23 @@ +# +# 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_PHYS_ADDR_T_64BIT is not set +CONFIG_ARCH_TEGRA=y +CONFIG_ARM_ATAG_DTB_COMPAT=y +# CONFIG_ARM_HIGHBANK_CPUIDLE is not set +# CONFIG_ARM_LPAE is not set +CONFIG_FB_CFB_REV_PIXELS_IN_BYTE=y +CONFIG_FORCE_MAX_ZONEORDER=12 +# CONFIG_HUGETLB_PAGE is not set +# CONFIG_IOMMU_IO_PGTABLE_LPAE is not set +CONFIG_PGTABLE_LEVELS=2 +# CONFIG_PHYS_ADDR_T_64BIT is not set +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 --- linux-raspi2-4.2.0.orig/debian.master/config/armhf/config.flavour.generic-lpae +++ linux-raspi2-4.2.0/debian.master/config/armhf/config.flavour.generic-lpae @@ -0,0 +1,23 @@ +# +# 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_PHYS_ADDR_T_64BIT=y +# CONFIG_ARCH_TEGRA is not set +# CONFIG_ARM_ATAG_DTB_COMPAT is not set +CONFIG_ARM_HIGHBANK_CPUIDLE=y +CONFIG_ARM_LPAE=y +# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set +CONFIG_FORCE_MAX_ZONEORDER=11 +CONFIG_HUGETLB_PAGE=y +CONFIG_IOMMU_IO_PGTABLE_LPAE=y +CONFIG_PGTABLE_LEVELS=3 +CONFIG_PHYS_ADDR_T_64BIT=y +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 --- linux-raspi2-4.2.0.orig/debian.master/config/config.common.ports +++ linux-raspi2-4.2.0/debian.master/config/config.common.ports @@ -0,0 +1,3 @@ +# +# Common config options automatically generated by splitconfig.pl +# --- linux-raspi2-4.2.0.orig/debian.master/config/config.common.ubuntu +++ linux-raspi2-4.2.0/debian.master/config/config.common.ubuntu @@ -0,0 +1,8936 @@ +# +# Common config options automatically generated by splitconfig.pl +# +CONFIG_32BIT=y +CONFIG_3C515=m +# CONFIG_40x is not set +# CONFIG_44x is not set +CONFIG_60XX_WDT=m +CONFIG_6LOWPAN=m +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_6xx=y +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_8723AU_AP_MODE=y +CONFIG_8723AU_BT_COEXIST=y +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_ABX500_CORE=y +# CONFIG_ACCESSIBILITY is not set +CONFIG_ACENIC=m +# CONFIG_ACENIC_OMIT_TIGON_I is not set +CONFIG_ACERHDF=m +CONFIG_ACER_WMI=m +# CONFIG_ACORN_PARTITION is not set +CONFIG_ACPI=y +CONFIG_ACPI_AC=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_BATTERY=y +CONFIG_ACPI_BGRT=y +CONFIG_ACPI_BUTTON=y +CONFIG_ACPI_CCA_REQUIRED=y +CONFIG_ACPI_CMPC=m +CONFIG_ACPI_CONTAINER=y +# CONFIG_ACPI_CUSTOM_DSDT is not set +CONFIG_ACPI_CUSTOM_DSDT_FILE="" +# CONFIG_ACPI_CUSTOM_METHOD is not set +# CONFIG_ACPI_DEBUG is not set +CONFIG_ACPI_DOCK=y +CONFIG_ACPI_EC_DEBUGFS=m +CONFIG_ACPI_EXTLOG=m +CONFIG_ACPI_FAN=y +CONFIG_ACPI_GENERIC_GSI=y +CONFIG_ACPI_HED=y +CONFIG_ACPI_HOTPLUG_CPU=y +CONFIG_ACPI_HOTPLUG_IOAPIC=y +CONFIG_ACPI_HOTPLUG_MEMORY=y +CONFIG_ACPI_I2C_OPREGION=y +# CONFIG_ACPI_INITRD_TABLE_OVERRIDE is not set +CONFIG_ACPI_IPMI=m +CONFIG_ACPI_LEGACY_TABLES_LOOKUP=y +CONFIG_ACPI_NFIT=m +# CONFIG_ACPI_NFIT_DEBUG is not set +CONFIG_ACPI_NUMA=y +CONFIG_ACPI_PCI_SLOT=y +CONFIG_ACPI_PROCESSOR=y +CONFIG_ACPI_PROCESSOR_AGGREGATOR=m +# CONFIG_ACPI_PROCFS_POWER is not set +CONFIG_ACPI_REV_OVERRIDE_POSSIBLE=y +CONFIG_ACPI_SBS=m +CONFIG_ACPI_SLEEP=y +CONFIG_ACPI_SYSTEM_POWER_STATES_SUPPORT=y +CONFIG_ACPI_THERMAL=y +CONFIG_ACPI_THERMAL_REL=m +CONFIG_ACPI_TOSHIBA=m +CONFIG_ACPI_VIDEO=m +CONFIG_ACPI_WMI=m +CONFIG_ACQUIRE_WDT=m +CONFIG_ACT200L_DONGLE=m +CONFIG_ACTISYS_DONGLE=m +CONFIG_AD2S1200=m +CONFIG_AD2S1210=m +CONFIG_AD2S90=m +CONFIG_AD5064=m +CONFIG_AD525X_DPOT=m +CONFIG_AD525X_DPOT_I2C=m +CONFIG_AD525X_DPOT_SPI=m +CONFIG_AD5360=m +CONFIG_AD5380=m +CONFIG_AD5421=m +CONFIG_AD5446=m +CONFIG_AD5449=m +CONFIG_AD5504=m +CONFIG_AD5624R_SPI=m +CONFIG_AD5686=m +CONFIG_AD5755=m +CONFIG_AD5764=m +CONFIG_AD5791=m +CONFIG_AD5933=m +CONFIG_AD7150=m +CONFIG_AD7152=m +CONFIG_AD7192=m +CONFIG_AD7266=m +CONFIG_AD7280=m +CONFIG_AD7291=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_AD7780=m +CONFIG_AD7791=m +CONFIG_AD7793=m +CONFIG_AD7816=m +CONFIG_AD7887=m +CONFIG_AD7923=m +CONFIG_AD799X=m +CONFIG_AD8366=m +CONFIG_AD9523=m +CONFIG_AD9832=m +CONFIG_AD9834=m +CONFIG_ADAPTEC_STARFIRE=m +CONFIG_ADB=y +CONFIG_ADB_CUDA=y +CONFIG_ADB_MACIO=y +CONFIG_ADB_PMU=y +CONFIG_ADB_PMU_LED=y +CONFIG_ADE7753=m +CONFIG_ADE7754=m +CONFIG_ADE7758=m +CONFIG_ADE7759=m +CONFIG_ADE7854=m +CONFIG_ADE7854_I2C=m +CONFIG_ADE7854_SPI=m +CONFIG_ADF4350=m +CONFIG_ADFS_FS=m +# CONFIG_ADFS_FS_RW is not set +CONFIG_ADIS16060=m +CONFIG_ADIS16080=m +CONFIG_ADIS16130=m +CONFIG_ADIS16136=m +CONFIG_ADIS16201=m +CONFIG_ADIS16203=m +CONFIG_ADIS16204=m +CONFIG_ADIS16209=m +CONFIG_ADIS16220=m +CONFIG_ADIS16240=m +CONFIG_ADIS16260=m +CONFIG_ADIS16400=m +CONFIG_ADIS16480=m +CONFIG_ADJD_S311=m +CONFIG_ADM8211=m +CONFIG_ADT7316=m +CONFIG_ADT7316_I2C=m +CONFIG_ADT7316_SPI=m +# CONFIG_ADVANCED_OPTIONS is not set +CONFIG_ADVANTECH_WDT=m +CONFIG_ADVISE_SYSCALLS=y +CONFIG_ADXRS450=m +CONFIG_AD_SIGMA_DELTA=m +CONFIG_AEABI=y +CONFIG_AFFS_FS=m +# CONFIG_AFS_DEBUG is not set +CONFIG_AFS_FS=m +CONFIG_AFS_FSCACHE=y +CONFIG_AF_RXRPC=m +# CONFIG_AF_RXRPC_DEBUG is not set +CONFIG_AGP=y +CONFIG_AGP_ALI=m +CONFIG_AGP_AMD=y +CONFIG_AGP_AMD64=y +CONFIG_AGP_ATI=m +CONFIG_AGP_EFFICEON=m +CONFIG_AGP_INTEL=y +CONFIG_AGP_NVIDIA=y +CONFIG_AGP_SIS=m +CONFIG_AGP_SWORKS=m +CONFIG_AGP_UNINORTH=m +CONFIG_AGP_VIA=y +CONFIG_AHCI_CEVA=m +CONFIG_AHCI_IMX=y +CONFIG_AHCI_MVEBU=m +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_AIX_PARTITION=y +CONFIG_AK09911=m +CONFIG_AK8975=m +CONFIG_AL3320A=m +CONFIG_ALIENWARE_WMI=m +CONFIG_ALIGNMENT_TRAP=y +CONFIG_ALIM1535_WDT=m +CONFIG_ALIM7101_WDT=m +CONFIG_ALIX=y +CONFIG_ALI_FIR=m +CONFIG_ALLOW_DEV_COREDUMP=y +CONFIG_ALTERA_MBOX=m +CONFIG_ALTERA_STAPL=m +CONFIG_ALTERA_TSE=m +CONFIG_ALTIVEC=y +CONFIG_ALX=m +CONFIG_AM335X_CONTROL_USB=m +CONFIG_AM335X_PHY_USB=m +CONFIG_AMBA_PL08X=y +CONFIG_AMD8111_ETH=m +CONFIG_AMD_IOMMU=y +CONFIG_AMD_IOMMU_STATS=y +CONFIG_AMD_IOMMU_V2=m +CONFIG_AMD_NB=y +CONFIG_AMD_NUMA=y +CONFIG_AMD_PHY=m +CONFIG_AMD_XGBE=m +CONFIG_AMD_XGBE_DCB=y +CONFIG_AMIGA_PARTITION=y +CONFIG_AMILO_RFKILL=m +# CONFIG_ANDROID is not set +CONFIG_ANON_INODES=y +CONFIG_ANSLCD=m +CONFIG_APB_TIMER=y +CONFIG_APDS9300=m +CONFIG_APDS9802ALS=m +CONFIG_APM=m +# CONFIG_APM_ALLOW_INTS is not set +# CONFIG_APM_CPU_IDLE is not set +# CONFIG_APM_DISPLAY_BLANK is not set +# CONFIG_APM_DO_ENABLE is not set +# CONFIG_APM_IGNORE_USER_SUSPEND is not set +CONFIG_APM_POWER=m +CONFIG_APPLE_AIRPORT=m +CONFIG_APPLE_GMUX=m +CONFIG_APPLICOM=m +CONFIG_APQ_GCC_8084=m +CONFIG_APQ_MMCC_8084=m +CONFIG_AR5523=m +CONFIG_ARCH_ALPINE=y +# CONFIG_ARCH_AT91 is not set +CONFIG_ARCH_AXXIA=y +# CONFIG_ARCH_BCM is not set +CONFIG_ARCH_BERLIN=y +CONFIG_ARCH_CLOCKSOURCE_DATA=y +# CONFIG_ARCH_CLPS711X is not set +CONFIG_ARCH_CPU_PROBE_RELEASE=y +# CONFIG_ARCH_DAVINCI is not set +# CONFIG_ARCH_DIGICOLOR is not set +CONFIG_ARCH_DISCARD_MEMBLOCK=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_EP93XX is not set +CONFIG_ARCH_EXYNOS=y +# CONFIG_ARCH_EXYNOS3 is not set +# CONFIG_ARCH_EXYNOS4 is not set +CONFIG_ARCH_EXYNOS5=y +# CONFIG_ARCH_EXYNOS7 is not set +CONFIG_ARCH_FLATMEM_ENABLE=y +# CONFIG_ARCH_FOOTBRIDGE is not set +# CONFIG_ARCH_FSL_LS2085A is not set +# CONFIG_ARCH_GEMINI is not set +CONFIG_ARCH_HAS_ATOMIC64_DEC_IF_POSITIVE=y +CONFIG_ARCH_HAS_BANDGAP=y +CONFIG_ARCH_HAS_CACHE_LINE_SIZE=y +CONFIG_ARCH_HAS_CPU_RELAX=y +CONFIG_ARCH_HAS_DEBUG_STRICT_USER_COPY_CHECKS=y +CONFIG_ARCH_HAS_ELF_RANDOMIZE=y +CONFIG_ARCH_HAS_FAST_MULTIPLIER=y +CONFIG_ARCH_HAS_GCOV_PROFILE_ALL=y +CONFIG_ARCH_HAS_HOLES_MEMORYMODEL=y +CONFIG_ARCH_HAS_ILOG2_U32=y +CONFIG_ARCH_HAS_ILOG2_U64=y +CONFIG_ARCH_HAS_PMEM_API=y +CONFIG_ARCH_HAS_RESET_CONTROLLER=y +CONFIG_ARCH_HAS_SG_CHAIN=y +CONFIG_ARCH_HAS_TICK_BROADCAST=y +CONFIG_ARCH_HAS_WALK_MEMORY=y +CONFIG_ARCH_HAVE_CUSTOM_GPIO_H=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_IOP13XX is not set +# CONFIG_ARCH_IOP32X is not set +# CONFIG_ARCH_IOP33X is not set +# CONFIG_ARCH_IXP4XX is not set +# CONFIG_ARCH_KEYSTONE is not set +# CONFIG_ARCH_KS8695 is not set +# CONFIG_ARCH_LPC32XX is not set +CONFIG_ARCH_MAY_HAVE_PC_FDC=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_MMP is not set +CONFIG_ARCH_MSM8960=y +CONFIG_ARCH_MSM8974=y +CONFIG_ARCH_MSM8X60=y +CONFIG_ARCH_MULTIPLATFORM=y +# CONFIG_ARCH_MULTI_CPU_AUTO is not set +# CONFIG_ARCH_MULTI_V6 is not set +CONFIG_ARCH_MULTI_V6_V7=y +CONFIG_ARCH_MULTI_V7=y +# CONFIG_ARCH_MV78XX0 is not set +CONFIG_ARCH_MVEBU=y +# CONFIG_ARCH_NETX is not set +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_ORION5X is not set +CONFIG_ARCH_PROC_KCORE_TEXT=y +# CONFIG_ARCH_PXA is not set +CONFIG_ARCH_QCOM=y +CONFIG_ARCH_R7S72100=y +# CONFIG_ARCH_R8A73A4 is not set +CONFIG_ARCH_R8A7740=y +CONFIG_ARCH_R8A7778=y +CONFIG_ARCH_R8A7779=y +CONFIG_ARCH_R8A7790=y +CONFIG_ARCH_R8A7791=y +CONFIG_ARCH_R8A7794=y +CONFIG_ARCH_RCAR_GEN1=y +CONFIG_ARCH_RCAR_GEN2=y +# CONFIG_ARCH_REALVIEW is not set +CONFIG_ARCH_REQUIRE_GPIOLIB=y +CONFIG_ARCH_RMOBILE=y +# CONFIG_ARCH_ROCKCHIP is not set +# CONFIG_ARCH_RPC is not set +# CONFIG_ARCH_S3C24XX is not set +# CONFIG_ARCH_S3C64XX is not set +# CONFIG_ARCH_S5PV210 is not set +# CONFIG_ARCH_SA1100 is not set +# CONFIG_ARCH_SEATTLE is not set +CONFIG_ARCH_SH73A0=y +CONFIG_ARCH_SHMOBILE=y +# CONFIG_ARCH_SHMOBILE_LEGACY is not set +CONFIG_ARCH_SHMOBILE_MULTI=y +# CONFIG_ARCH_SIRF is not set +# CONFIG_ARCH_SOCFPGA is not set +CONFIG_ARCH_SPARSEMEM_ENABLE=y +CONFIG_ARCH_SPRD=y +# CONFIG_ARCH_STI is not set +# CONFIG_ARCH_SUNXI is not set +CONFIG_ARCH_SUPPORTS_ATOMIC_RMW=y +CONFIG_ARCH_SUPPORTS_BIG_ENDIAN=y +CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y +CONFIG_ARCH_SUPPORTS_DEFERRED_STRUCT_PAGE_INIT=y +CONFIG_ARCH_SUPPORTS_FIRMWARE=y +CONFIG_ARCH_SUPPORTS_INT128=y +CONFIG_ARCH_SUPPORTS_MEMORY_FAILURE=y +CONFIG_ARCH_SUPPORTS_NUMA_BALANCING=y +CONFIG_ARCH_SUPPORTS_OPTIMIZED_INLINING=y +CONFIG_ARCH_SUPPORTS_TRUSTED_FOUNDATIONS=y +CONFIG_ARCH_SUPPORTS_UPROBES=y +CONFIG_ARCH_SUSPEND_POSSIBLE=y +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_U8500 is not set +CONFIG_ARCH_UNIPHIER=y +CONFIG_ARCH_USES_PG_UNCACHED=y +CONFIG_ARCH_USE_BUILTIN_BSWAP=y +CONFIG_ARCH_USE_CMPXCHG_LOCKREF=y +CONFIG_ARCH_USE_QUEUED_RWLOCKS=y +CONFIG_ARCH_USE_QUEUED_SPINLOCKS=y +# CONFIG_ARCH_VERSATILE is not set +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_W90X900 is not set +CONFIG_ARCH_WANTS_DYNAMIC_TASK_STRUCT=y +CONFIG_ARCH_WANTS_FREEZER_CONTROL=y +CONFIG_ARCH_WANT_COMPAT_IPC_PARSE_VERSION=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_OLD_COMPAT_IPC=y +CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y +# CONFIG_ARCH_WM8850 is not set +CONFIG_ARCH_XGENE=y +CONFIG_ARCH_ZX=y +# CONFIG_ARCH_ZYNQ is not set +CONFIG_ARCH_ZYNQMP=y +CONFIG_ARCNET=m +CONFIG_ARCNET_1051=m +CONFIG_ARCNET_1201=m +CONFIG_ARCNET_CAP=m +CONFIG_ARCNET_COM20020=m +CONFIG_ARCNET_COM20020_CS=m +CONFIG_ARCNET_COM20020_ISA=m +CONFIG_ARCNET_COM20020_PCI=m +CONFIG_ARCNET_COM90xx=m +CONFIG_ARCNET_COM90xxIO=m +CONFIG_ARCNET_RAW=m +CONFIG_ARCNET_RIM_I=m +CONFIG_ARC_EMAC=m +CONFIG_ARC_EMAC_CORE=m +CONFIG_ARM=y +CONFIG_ARM64=y +CONFIG_ARM64_4K_PAGES=y +# CONFIG_ARM64_64K_PAGES is not set +CONFIG_ARM64_CRYPTO=y +CONFIG_ARM64_DT_NUMA=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_843419=y +CONFIG_ARM64_ERRATUM_845719=y +# CONFIG_ARM64_PTDUMP is not set +# CONFIG_ARM64_RANDOMIZE_TEXT_OFFSET is not set +CONFIG_ARM64_VA_BITS=39 +CONFIG_ARM64_VA_BITS_39=y +# CONFIG_ARM64_VA_BITS_48 is not set +CONFIG_ARMADA375_USBCLUSTER_PHY=y +CONFIG_ARMADA_370_CLK=y +CONFIG_ARMADA_370_XP_TIMER=y +CONFIG_ARMADA_375_CLK=y +CONFIG_ARMADA_38X_CLK=y +CONFIG_ARMADA_39X_CLK=y +CONFIG_ARMADA_THERMAL=y +CONFIG_ARMADA_XP_CLK=y +# CONFIG_ARMV8_DEPRECATED is not set +CONFIG_ARM_AMBA=y +CONFIG_ARM_APPENDED_DTB=y +CONFIG_ARM_ARCH_TIMER=y +CONFIG_ARM_ARCH_TIMER_EVTSTREAM=y +CONFIG_ARM_ATAG_DTB_COMPAT_CMDLINE_EXTEND=y +# CONFIG_ARM_ATAG_DTB_COMPAT_CMDLINE_FROM_BOOTLOADER is not set +CONFIG_ARM_BIG_LITTLE_CPUFREQ=m +CONFIG_ARM_BIG_LITTLE_CPUIDLE=y +CONFIG_ARM_CCI=y +CONFIG_ARM_CCI400_COMMON=y +CONFIG_ARM_CCI400_PMU=y +CONFIG_ARM_CCI400_PORT_CTRL=y +CONFIG_ARM_CCI500_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_DT_BL_CPUFREQ=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_EXYNOS5250_CPUFREQ is not set +# CONFIG_ARM_EXYNOS5440_CPUFREQ is not set +# CONFIG_ARM_EXYNOS5_BUS_DEVFREQ is not set +CONFIG_ARM_EXYNOS_CPUFREQ=m +CONFIG_ARM_EXYNOS_CPUIDLE=y +# CONFIG_ARM_EXYNOS_CPU_FREQ_BOOST_SW is not set +CONFIG_ARM_GIC=y +CONFIG_ARM_GIC_V2M=y +CONFIG_ARM_GIC_V3=y +CONFIG_ARM_GIC_V3_ITS=y +CONFIG_ARM_GLOBAL_TIMER=y +CONFIG_ARM_HAS_SG_CHAIN=y +CONFIG_ARM_HIGHBANK_CPUFREQ=m +CONFIG_ARM_HISI_ACPU_CPUFREQ=m +CONFIG_ARM_IMX6Q_CPUFREQ=m +CONFIG_ARM_KERNMEM_PERMS=y +# CONFIG_ARM_KIRKWOOD_CPUFREQ is not set +CONFIG_ARM_KPROBES_TEST=m +CONFIG_ARM_L1_CACHE_SHIFT=6 +CONFIG_ARM_L1_CACHE_SHIFT_6=y +CONFIG_ARM_MHU=m +# CONFIG_ARM_MODULE_PLTS is not set +CONFIG_ARM_MVEBU_V7_CPUIDLE=y +CONFIG_ARM_OMAP2PLUS_CPUFREQ=y +CONFIG_ARM_PATCH_PHYS_VIRT=y +CONFIG_ARM_PSCI=y +# CONFIG_ARM_PTDUMP is not set +# CONFIG_ARM_SMMU is not set +CONFIG_ARM_SMMU_V3=y +CONFIG_ARM_SP805_WATCHDOG=m +CONFIG_ARM_TEGRA_CPUFREQ=y +CONFIG_ARM_TEGRA_DEVFREQ=m +CONFIG_ARM_THUMB=y +CONFIG_ARM_THUMBEE=y +CONFIG_ARM_TIMER_SP804=y +CONFIG_ARM_UNWIND=y +CONFIG_ARM_VEXPRESS_SPC_CPUFREQ=m +CONFIG_ARM_VIRT_EXT=y +CONFIG_AS3935=m +CONFIG_ASN1=y +CONFIG_ASSOCIATIVE_ARRAY=y +CONFIG_ASUS_LAPTOP=m +CONFIG_ASUS_NB_WMI=m +CONFIG_ASUS_WMI=m +CONFIG_ASYMMETRIC_KEY_TYPE=y +CONFIG_ASYMMETRIC_PUBLIC_KEY_SUBTYPE=y +CONFIG_ASYNC_CORE=m +CONFIG_ASYNC_MEMCPY=m +CONFIG_ASYNC_PQ=m +CONFIG_ASYNC_RAID6_RECOV=m +CONFIG_ASYNC_RAID6_TEST=m +CONFIG_ASYNC_TX_DMA=y +CONFIG_ASYNC_TX_ENABLE_CHANNEL_SWITCH=y +CONFIG_ASYNC_XOR=m +CONFIG_AT76C50X_USB=m +CONFIG_AT803X_PHY=m +CONFIG_ATA=y +CONFIG_ATAGS=y +CONFIG_ATAGS_PROC=y +CONFIG_ATALK=m +CONFIG_ATARI_PARTITION=y +CONFIG_ATA_ACPI=y +CONFIG_ATA_BMDMA=y +CONFIG_ATA_OVER_ETH=m +CONFIG_ATA_SFF=y +CONFIG_ATA_VERBOSE_ERROR=y +CONFIG_ATH10K=m +# CONFIG_ATH10K_DEBUG is not set +CONFIG_ATH10K_DEBUGFS=y +CONFIG_ATH10K_PCI=m +CONFIG_ATH10K_TRACING=y +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_DEBUGFS=y +# CONFIG_ATH9K_DYNACK is not set +CONFIG_ATH9K_HTC=m +CONFIG_ATH9K_HTC_DEBUGFS=y +CONFIG_ATH9K_HW=m +CONFIG_ATH9K_PCI=y +CONFIG_ATH9K_PCOEM=y +CONFIG_ATH9K_RFKILL=y +CONFIG_ATH9K_STATION_STATISTICS=y +CONFIG_ATH9K_WOW=y +CONFIG_ATH_CARDS=m +CONFIG_ATH_COMMON=m +# CONFIG_ATH_DEBUG is not set +CONFIG_ATL1=m +CONFIG_ATL1C=m +CONFIG_ATL1E=m +CONFIG_ATL2=m +CONFIG_ATM=m +CONFIG_ATMEL=m +# CONFIG_ATMEL_PIT is not set +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_COMPAT_GENERIC=y +CONFIG_AUDIT_GENERIC=y +CONFIG_AUDIT_TREE=y +CONFIG_AUDIT_WATCH=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_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 is not set +CONFIG_AUTOFS4_FS=m +CONFIG_AUTO_ZRELADDR=y +CONFIG_AUXDISPLAY=y +CONFIG_AVERAGE=y +CONFIG_AX25=m +CONFIG_AX25_DAMA_SLAVE=y +CONFIG_AX88796=m +# CONFIG_AX88796_93CX6 is not set +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_PCMCIA is not set +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_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_AS3711=m +CONFIG_BACKLIGHT_BD6107=m +CONFIG_BACKLIGHT_CARILLO_RANCH=m +CONFIG_BACKLIGHT_CLASS_DEVICE=y +CONFIG_BACKLIGHT_DA903X=m +CONFIG_BACKLIGHT_DA9052=m +CONFIG_BACKLIGHT_GENERIC=m +CONFIG_BACKLIGHT_GPIO=m +CONFIG_BACKLIGHT_LCD_SUPPORT=y +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_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=m +CONFIG_BATMAN_ADV_BLA=y +CONFIG_BATMAN_ADV_DAT=y +# CONFIG_BATMAN_ADV_DEBUG is not set +CONFIG_BATMAN_ADV_MCAST=y +CONFIG_BATMAN_ADV_NC=y +CONFIG_BATTERY_88PM860X=m +CONFIG_BATTERY_BQ27X00_I2C=y +CONFIG_BATTERY_BQ27X00_PLATFORM=y +CONFIG_BATTERY_BQ27x00=m +CONFIG_BATTERY_DA9030=m +CONFIG_BATTERY_DA9052=m +CONFIG_BATTERY_DS2760=m +CONFIG_BATTERY_DS2780=m +CONFIG_BATTERY_DS2781=m +CONFIG_BATTERY_DS2782=m +CONFIG_BATTERY_GAUGE_LTC2941=m +CONFIG_BATTERY_INTEL_MID=m +CONFIG_BATTERY_MAX17040=m +CONFIG_BATTERY_MAX17042=m +CONFIG_BATTERY_PMU=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_CLOSURES_DEBUG is not set +# CONFIG_BCACHE_DEBUG is not set +CONFIG_BCH_CONST_M=14 +CONFIG_BCH_CONST_PARAMS=y +CONFIG_BCH_CONST_T=4 +CONFIG_BCM7XXX_PHY=m +CONFIG_BCM87XX_PHY=m +CONFIG_BCMA=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_BCMGENET=m +CONFIG_BCM_KONA_USB2_PHY=m +# CONFIG_BDI_SWITCH is not set +CONFIG_BE2ISCSI=m +CONFIG_BE2NET=m +CONFIG_BE2NET_HWMON=y +CONFIG_BE2NET_VXLAN=y +# CONFIG_BEFS_DEBUG is not set +CONFIG_BEFS_FS=m +CONFIG_BERLIN2_ADC=m +CONFIG_BFS_FS=m +CONFIG_BH1750=m +CONFIG_BIG_KEYS=y +CONFIG_BIG_LITTLE=y +CONFIG_BINARY_PRINTF=y +CONFIG_BINFMT_AOUT=m +CONFIG_BINFMT_ELF=y +CONFIG_BINFMT_MISC=m +CONFIG_BINFMT_SCRIPT=y +CONFIG_BITREVERSE=y +CONFIG_BLK_CGROUP=y +CONFIG_BLK_CMDLINE_PARSER=y +CONFIG_BLK_CPQ_CISS_DA=m +CONFIG_BLK_DEV=y +CONFIG_BLK_DEV_3W_XXXX_RAID=m +CONFIG_BLK_DEV_BSG=y +CONFIG_BLK_DEV_BSGLIB=y +# CONFIG_BLK_DEV_COW_COMMON is not set +CONFIG_BLK_DEV_CRYPTOLOOP=m +CONFIG_BLK_DEV_DAC960=m +CONFIG_BLK_DEV_DM=y +CONFIG_BLK_DEV_DM_BUILTIN=y +CONFIG_BLK_DEV_DRBD=m +CONFIG_BLK_DEV_FD=m +# CONFIG_BLK_DEV_HD is not set +CONFIG_BLK_DEV_INITRD=y +CONFIG_BLK_DEV_INTEGRITY=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_OSD=m +CONFIG_BLK_DEV_PCIESSD_MTIP32XX=m +CONFIG_BLK_DEV_PMEM=m +CONFIG_BLK_DEV_RAM=y +CONFIG_BLK_DEV_RAM_COUNT=16 +CONFIG_BLK_DEV_RAM_DAX=y +CONFIG_BLK_DEV_RAM_SIZE=65536 +CONFIG_BLK_DEV_RBD=m +CONFIG_BLK_DEV_RSXX=m +CONFIG_BLK_DEV_SD=y +CONFIG_BLK_DEV_SKD=m +CONFIG_BLK_DEV_SR=y +# CONFIG_BLK_DEV_SR_VENDOR is not set +CONFIG_BLK_DEV_SX8=m +CONFIG_BLK_DEV_THROTTLING=y +CONFIG_BLK_DEV_UMEM=m +CONFIG_BLOCK=y +CONFIG_BLOCK_COMPAT=y +CONFIG_BL_SWITCHER=y +CONFIG_BL_SWITCHER_DUMMY_IF=m +CONFIG_BMA180=m +CONFIG_BMAC=m +CONFIG_BMC150_ACCEL=m +CONFIG_BMC150_MAGN=m +CONFIG_BMG160=m +CONFIG_BMP085=y +CONFIG_BMP085_I2C=m +CONFIG_BMP085_SPI=m +CONFIG_BMP280=m +CONFIG_BNA=m +CONFIG_BNX2=m +CONFIG_BNX2X=m +CONFIG_BNX2X_SRIOV=y +CONFIG_BOARD_TPCI200=m +CONFIG_BONDING=m +CONFIG_BOOKE=y +CONFIG_BOOKE_WDT=y +CONFIG_BOOKE_WDT_DEFAULT_TIMEOUT=38 +# 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_BOOTX_TEXT is not set +CONFIG_BOOT_PRINTK_DELAY=y +CONFIG_BOUNCE=y +CONFIG_BPF=y +CONFIG_BPF_EVENTS=y +CONFIG_BPF_JIT=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_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_NETFILTER=m +CONFIG_BRIDGE_NF_EBTABLES=m +CONFIG_BRIDGE_VLAN_FILTERING=y +CONFIG_BROADCOM_PHY=m +# CONFIG_BSC9131_RDB is not set +CONFIG_BSC9132_QDS=y +CONFIG_BSD_DISKLABEL=y +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_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_HCIBTUART=m +CONFIG_BT_HCIBTUSB=m +CONFIG_BT_HCIBTUSB_BCM=y +CONFIG_BT_HCIBTUSB_RTL=y +CONFIG_BT_HCIDTL1=m +CONFIG_BT_HCIUART=m +CONFIG_BT_HCIUART_3WIRE=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_HCIVHCI=m +CONFIG_BT_HIDP=m +CONFIG_BT_INTEL=m +CONFIG_BT_LE=y +CONFIG_BT_MRVL=m +CONFIG_BT_MRVL_SDIO=m +CONFIG_BT_RFCOMM=m +CONFIG_BT_RFCOMM_TTY=y +CONFIG_BT_RTL=m +# CONFIG_BT_SELFTEST is not set +CONFIG_BT_WILINK=m +CONFIG_BUG=y +CONFIG_BUILDTIME_EXTABLE_SORT=y +CONFIG_BUILD_BIN2C=y +CONFIG_C101=m +CONFIG_C293_PCIE=y +CONFIG_C2PORT=m +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_TAUROS2=y +CONFIG_CADENCE_WATCHDOG=m +CONFIG_CAIF=m +# CONFIG_CAIF_DEBUG is not set +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_CALGARY_IOMMU=y +CONFIG_CALGARY_IOMMU_ENABLED_BY_DEFAULT=y +CONFIG_CAN=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_FLEXCAN=m +CONFIG_CAN_GRCAN=m +CONFIG_CAN_GS_USB=m +CONFIG_CAN_GW=m +CONFIG_CAN_JANZ_ICAN3=m +CONFIG_CAN_KVASER_PCI=m +CONFIG_CAN_KVASER_USB=m +CONFIG_CAN_LEDS=y +CONFIG_CAN_MCP251X=m +CONFIG_CAN_MSCAN=m +CONFIG_CAN_M_CAN=m +CONFIG_CAN_PEAK_PCI=m +CONFIG_CAN_PEAK_PCIEC=y +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_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_TSCAN1=m +CONFIG_CAN_VCAN=m +CONFIG_CAN_XILINXCAN=m +CONFIG_CAPI_AVM=y +CONFIG_CAPI_EICON=y +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_ERRATUM_22375=y +CONFIG_CAVIUM_ERRATUM_23154=y +CONFIG_CB710_CORE=m +# CONFIG_CB710_DEBUG is not set +CONFIG_CB710_DEBUG_ASSUMPTIONS=y +CONFIG_CBE_CPUFREQ_SPU_GOVERNOR=m +CONFIG_CC10001_ADC=m +# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set +# CONFIG_CC_STACKPROTECTOR_NONE is not set +# CONFIG_CC_STACKPROTECTOR_REGULAR is not set +CONFIG_CC_STACKPROTECTOR_STRONG=y +CONFIG_CDROM_PKTCDVD=m +CONFIG_CDROM_PKTCDVD_BUFFERS=8 +# CONFIG_CDROM_PKTCDVD_WCACHE is not set +# CONFIG_CELL_CPU is not set +CONFIG_CEPH_FS=m +CONFIG_CEPH_FSCACHE=y +CONFIG_CEPH_FS_POSIX_ACL=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_DEBUGFS=y +CONFIG_CFG80211_DEFAULT_PS=y +# CONFIG_CFG80211_DEVELOPER_WARNINGS is not set +# CONFIG_CFG80211_INTERNAL_REGDB is not set +# CONFIG_CFG80211_REG_DEBUG is not set +CONFIG_CFG80211_WEXT=y +CONFIG_CFG80211_WEXT_EXPORT=y +CONFIG_CFQ_GROUP_IOSCHED=y +CONFIG_CFS_BANDWIDTH=y +CONFIG_CGROUPS=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_SCHED=y +CONFIG_CGROUP_WRITEBACK=y +CONFIG_CHARGER_88PM860X=m +CONFIG_CHARGER_BQ2415X=m +CONFIG_CHARGER_BQ24190=m +CONFIG_CHARGER_BQ24257=m +CONFIG_CHARGER_BQ24735=m +CONFIG_CHARGER_BQ25890=m +CONFIG_CHARGER_DA9150=m +CONFIG_CHARGER_GPIO=m +CONFIG_CHARGER_ISP1704=m +CONFIG_CHARGER_LP8727=m +CONFIG_CHARGER_LP8788=m +CONFIG_CHARGER_MANAGER=y +CONFIG_CHARGER_MAX14577=m +CONFIG_CHARGER_MAX77693=m +CONFIG_CHARGER_MAX8903=m +CONFIG_CHARGER_MAX8997=m +CONFIG_CHARGER_MAX8998=m +CONFIG_CHARGER_PCF50633=m +CONFIG_CHARGER_RT9455=m +CONFIG_CHARGER_SMB347=m +CONFIG_CHARGER_TPS65090=m +CONFIG_CHARGER_TWL4030=m +CONFIG_CHECKPOINT_RESTORE=y +CONFIG_CHECK_SIGNATURE=y +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_CHROMEOS_LAPTOP=m +CONFIG_CHROMEOS_PSTORE=m +CONFIG_CHROME_PLATFORMS=y +CONFIG_CHR_DEV_OSST=m +CONFIG_CHR_DEV_SCH=m +CONFIG_CHR_DEV_SG=y +CONFIG_CHR_DEV_ST=m +CONFIG_CICADA_PHY=m +CONFIG_CIFS=m +CONFIG_CIFS_ACL=y +CONFIG_CIFS_DEBUG=y +# CONFIG_CIFS_DEBUG2 is not set +CONFIG_CIFS_DFS_UPCALL=y +CONFIG_CIFS_FSCACHE=y +CONFIG_CIFS_POSIX=y +CONFIG_CIFS_SMB2=y +CONFIG_CIFS_SMB311=y +CONFIG_CIFS_STATS=y +# CONFIG_CIFS_STATS2 is not set +CONFIG_CIFS_UPCALL=y +CONFIG_CIFS_WEAK_PW_HASH=y +CONFIG_CIFS_XATTR=y +CONFIG_CISS_SCSI_TAPE=y +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_I8253=y +CONFIG_CLKSRC_IMX_GPT=y +CONFIG_CLKSRC_MMIO=y +CONFIG_CLKSRC_OF=y +CONFIG_CLKSRC_QCOM=y +CONFIG_CLKSRC_VERSATILE=y +CONFIG_CLK_QORIQ=y +CONFIG_CLK_SP810=y +CONFIG_CLK_TWL6040=m +CONFIG_CLK_VEXPRESS_OSC=y +CONFIG_CLOCKSOURCE_VALIDATE_LAST_CYCLE=y +CONFIG_CLOCKSOURCE_WATCHDOG=y +# CONFIG_CLOCK_THERMAL is not set +CONFIG_CLONE_BACKWARDS=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_CM36651=m +CONFIG_CMA=y +CONFIG_CMA_AREAS=7 +# CONFIG_CMA_DEBUG is not set +# CONFIG_CMA_DEBUGFS is not set +# CONFIG_CMDLINE_BOOL is not set +# CONFIG_CMDLINE_FORCE is not set +CONFIG_CMDLINE_PARTITION=y +CONFIG_CMM=m +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_PCI1723=m +CONFIG_COMEDI_ADV_PCI1724=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_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_SERIAL2002=m +CONFIG_COMEDI_SSV_DNP=m +CONFIG_COMEDI_TEST=m +CONFIG_COMEDI_UNIOXX5=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=y +CONFIG_COMMON_CLK_CDCE706=m +CONFIG_COMMON_CLK_CDCE925=m +CONFIG_COMMON_CLK_HI6220=y +CONFIG_COMMON_CLK_MAX77686=m +CONFIG_COMMON_CLK_MAX77802=m +CONFIG_COMMON_CLK_MAX_GEN=y +CONFIG_COMMON_CLK_PALMAS=m +CONFIG_COMMON_CLK_PWM=m +# CONFIG_COMMON_CLK_PXA is not set +CONFIG_COMMON_CLK_QCOM=m +CONFIG_COMMON_CLK_RK808=m +CONFIG_COMMON_CLK_S2MPS11=m +CONFIG_COMMON_CLK_SAMSUNG=y +CONFIG_COMMON_CLK_SI5351=m +CONFIG_COMMON_CLK_SI570=m +CONFIG_COMMON_CLK_VERSATILE=y +CONFIG_COMMON_CLK_WM831X=m +CONFIG_COMMON_CLK_XGENE=y +# CONFIG_COMMON_CLK_XLNX_CLKWZRD is not set +CONFIG_COMPACTION=y +CONFIG_COMPAL_LAPTOP=m +CONFIG_COMPAT=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=m +CONFIG_CONNECTOR=y +CONFIG_CONSOLE_POLL=y +CONFIG_CONSOLE_TRANSLATIONS=y +CONFIG_CONTEXT_SWITCH_TRACER=y +CONFIG_COPS=m +CONFIG_COPS_DAYNA=y +CONFIG_COPS_TANGENT=y +CONFIG_CORDIC=m +CONFIG_COREDUMP=y +CONFIG_CORENET_GENERIC=y +# CONFIG_CORESIGHT is not set +CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS=y +CONFIG_COSA=m +# CONFIG_CPA_DEBUG is not set +CONFIG_CPM=y +CONFIG_CPM2=y +CONFIG_CPU5_WDT=m +CONFIG_CPUFREQ_DT=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 is not set +CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y +# CONFIG_CPU_FREQ_DEFAULT_GOV_POWERSAVE is not set +# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set +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_USERSPACE=y +CONFIG_CPU_FREQ_MAPLE=y +CONFIG_CPU_FREQ_PMAC=y +CONFIG_CPU_FREQ_PMAC64=y +CONFIG_CPU_FREQ_STAT=y +CONFIG_CPU_FREQ_STAT_DETAILS=y +CONFIG_CPU_HAS_ASID=y +# CONFIG_CPU_ICACHE_DISABLE is not set +CONFIG_CPU_IDLE=y +CONFIG_CPU_IDLE_GOV_LADDER=y +CONFIG_CPU_IDLE_GOV_MENU=y +CONFIG_CPU_IDLE_MULTIPLE_DRIVERS=y +CONFIG_CPU_NOTIFIER_ERROR_INJECT=m +CONFIG_CPU_PABRT_V7=y +CONFIG_CPU_PJ4=y +CONFIG_CPU_PJ4B=y +CONFIG_CPU_PM=y +CONFIG_CPU_RMAP=y +CONFIG_CPU_SUP_AMD=y +CONFIG_CPU_SUP_CENTAUR=y +CONFIG_CPU_SUP_CYRIX_32=y +CONFIG_CPU_SUP_INTEL=y +CONFIG_CPU_SUP_TRANSMETA_32=y +CONFIG_CPU_SUP_UMC_32=y +CONFIG_CPU_THERMAL=y +CONFIG_CPU_TLB_V7=y +CONFIG_CPU_V7=y +CONFIG_CRAMFS=m +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_CRC7=m +CONFIG_CRC8=m +CONFIG_CRC_CCITT=m +CONFIG_CRC_ITU_T=m +CONFIG_CRC_T10DIF=y +CONFIG_CROSS_COMPILE="" +CONFIG_CROSS_MEMORY_ATTACH=y +CONFIG_CROS_EC_CHARDEV=m +CONFIG_CROS_EC_LPC=m +CONFIG_CROS_EC_PROTO=y +CONFIG_CRYPTO=y +CONFIG_CRYPTO_842=m +CONFIG_CRYPTO_ABLK_HELPER=m +CONFIG_CRYPTO_AEAD=m +CONFIG_CRYPTO_AEAD2=y +CONFIG_CRYPTO_AES=y +CONFIG_CRYPTO_AES_586=m +CONFIG_CRYPTO_AES_ARM=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_X86_64=m +CONFIG_CRYPTO_AKCIPHER=m +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_AUTHENC=m +CONFIG_CRYPTO_BLKCIPHER=y +CONFIG_CRYPTO_BLKCIPHER2=y +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_CHACHA20=m +CONFIG_CRYPTO_CHACHA20POLY1305=m +CONFIG_CRYPTO_CMAC=m +CONFIG_CRYPTO_CRC32=m +CONFIG_CRYPTO_CRC32C=y +CONFIG_CRYPTO_CRC32C_INTEL=y +# CONFIG_CRYPTO_CRC32_ARM64 is not set +CONFIG_CRYPTO_CRC32_PCLMUL=m +CONFIG_CRYPTO_CRCT10DIF=y +CONFIG_CRYPTO_CRCT10DIF_PCLMUL=m +CONFIG_CRYPTO_CRYPTD=m +CONFIG_CRYPTO_CTR=m +CONFIG_CRYPTO_CTS=m +CONFIG_CRYPTO_DEFLATE=m +CONFIG_CRYPTO_DES=m +CONFIG_CRYPTO_DES3_EDE_X86_64=m +CONFIG_CRYPTO_DEV_CCP=y +CONFIG_CRYPTO_DEV_CCP_CRYPTO=m +CONFIG_CRYPTO_DEV_CCP_DD=m +CONFIG_CRYPTO_DEV_FSL_CAAM=m +CONFIG_CRYPTO_DEV_FSL_CAAM_AHASH_API=m +CONFIG_CRYPTO_DEV_FSL_CAAM_CRYPTO_API=m +# 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_RINGSIZE=9 +CONFIG_CRYPTO_DEV_FSL_CAAM_RNG_API=m +CONFIG_CRYPTO_DEV_GEODE=m +CONFIG_CRYPTO_DEV_HIFN_795X=m +CONFIG_CRYPTO_DEV_HIFN_795X_RNG=y +CONFIG_CRYPTO_DEV_MARVELL_CESA=m +CONFIG_CRYPTO_DEV_MV_CESA=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_NX_ENCRYPT=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_DH895xCC=m +CONFIG_CRYPTO_DEV_QCE=m +CONFIG_CRYPTO_DEV_S5P=m +CONFIG_CRYPTO_DEV_SAHARA=m +CONFIG_CRYPTO_DEV_TALITOS=m +CONFIG_CRYPTO_DEV_TALITOS2=y +CONFIG_CRYPTO_DEV_VMX=y +CONFIG_CRYPTO_DEV_VMX_ENCRYPT=m +CONFIG_CRYPTO_DRBG=m +CONFIG_CRYPTO_DRBG_CTR=y +CONFIG_CRYPTO_DRBG_HASH=y +CONFIG_CRYPTO_DRBG_HMAC=y +CONFIG_CRYPTO_DRBG_MENU=m +CONFIG_CRYPTO_ECB=y +CONFIG_CRYPTO_ECHAINIV=m +CONFIG_CRYPTO_FCRYPT=m +CONFIG_CRYPTO_GCM=m +CONFIG_CRYPTO_GF128MUL=m +CONFIG_CRYPTO_GHASH=m +CONFIG_CRYPTO_GHASH_ARM64_CE=m +CONFIG_CRYPTO_GHASH_ARM_CE=m +CONFIG_CRYPTO_GHASH_CLMUL_NI_INTEL=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=m +CONFIG_CRYPTO_KHAZAD=m +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_MCRYPTD=m +CONFIG_CRYPTO_MD4=m +CONFIG_CRYPTO_MD5=y +CONFIG_CRYPTO_MD5_PPC=m +CONFIG_CRYPTO_MICHAEL_MIC=m +CONFIG_CRYPTO_NULL=m +CONFIG_CRYPTO_PCBC=m +CONFIG_CRYPTO_PCOMP=m +CONFIG_CRYPTO_PCOMP2=y +CONFIG_CRYPTO_PCRYPT=m +CONFIG_CRYPTO_POLY1305=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=m +CONFIG_CRYPTO_RSA=m +CONFIG_CRYPTO_SALSA20=m +CONFIG_CRYPTO_SALSA20_586=m +CONFIG_CRYPTO_SALSA20_X86_64=m +CONFIG_CRYPTO_SEED=m +CONFIG_CRYPTO_SEQIV=m +CONFIG_CRYPTO_SERPENT=m +CONFIG_CRYPTO_SERPENT_AVX2_X86_64=m +CONFIG_CRYPTO_SERPENT_AVX_X86_64=m +CONFIG_CRYPTO_SERPENT_SSE2_586=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_MB=m +CONFIG_CRYPTO_SHA1_PPC=m +CONFIG_CRYPTO_SHA1_SSSE3=m +CONFIG_CRYPTO_SHA256=y +CONFIG_CRYPTO_SHA256_ARM=m +CONFIG_CRYPTO_SHA256_SSSE3=m +CONFIG_CRYPTO_SHA2_ARM64_CE=m +CONFIG_CRYPTO_SHA2_ARM_CE=m +CONFIG_CRYPTO_SHA512=y +CONFIG_CRYPTO_SHA512_ARM=m +CONFIG_CRYPTO_SHA512_SSSE3=m +CONFIG_CRYPTO_SKEIN=y +CONFIG_CRYPTO_TEA=m +CONFIG_CRYPTO_TEST=m +CONFIG_CRYPTO_TGR192=m +CONFIG_CRYPTO_TWOFISH=m +CONFIG_CRYPTO_TWOFISH_586=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_WORKQUEUE=y +CONFIG_CRYPTO_WP512=m +CONFIG_CRYPTO_XCBC=m +CONFIG_CRYPTO_XTS=m +CONFIG_CRYPTO_ZLIB=m +# CONFIG_CS5535_MFGPT is not set +CONFIG_CS89x0=m +CONFIG_CS89x0_PLATFORM=y +CONFIG_CUSE=m +CONFIG_CW1200=m +CONFIG_CW1200_WLAN_SDIO=m +CONFIG_CW1200_WLAN_SPI=m +CONFIG_CXL=m +CONFIG_CXLFLASH=m +CONFIG_CX_ECAT=m +CONFIG_CYCLADES=m +CONFIG_CYPRESS_FIRMWARE=m +# CONFIG_CYZ_INTR is not set +CONFIG_DA9052_WATCHDOG=m +CONFIG_DA9055_WATCHDOG=m +CONFIG_DA9063_WATCHDOG=m +CONFIG_DA9150_GPADC=m +CONFIG_DAVICOM_PHY=m +CONFIG_DCA=m +CONFIG_DCACHE_WORD_ACCESS=y +CONFIG_DCB=y +CONFIG_DCDBAS=m +CONFIG_DDR=y +CONFIG_DE2104X=m +CONFIG_DE2104X_DSL=0 +CONFIG_DE4X5=m +CONFIG_DEBUGGER=y +# CONFIG_DEBUG_ALIGN_RODATA is not set +# CONFIG_DEBUG_ATOMIC_SLEEP is not set +# CONFIG_DEBUG_BLK_CGROUP 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_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_IMX_UART_PORT=1 +CONFIG_DEBUG_INFO=y +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_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_MUTEXES is not set +# CONFIG_DEBUG_NMI_SELFTEST is not set +# CONFIG_DEBUG_NOTIFIERS is not set +# CONFIG_DEBUG_NX_TEST is not set +# CONFIG_DEBUG_OBJECTS is not set +# CONFIG_DEBUG_PAGEALLOC 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_PI_LIST is not set +# CONFIG_DEBUG_PREEMPT is not set +CONFIG_DEBUG_RODATA=y +# CONFIG_DEBUG_RODATA_TEST is not set +# CONFIG_DEBUG_RT_MUTEXES is not set +# CONFIG_DEBUG_SECTION_MISMATCH is not set +CONFIG_DEBUG_SET_MODULE_RONX=y +# 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_STRICT_USER_COPY_CHECKS is not set +# CONFIG_DEBUG_TIMEKEEPING is not set +# CONFIG_DEBUG_TLBFLUSH is not set +# CONFIG_DEBUG_UART_8250 is not set +# CONFIG_DEBUG_UART_BCM63XX 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_WW_MUTEX_SLOWPATH is not set +CONFIG_DECNET=m +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_CFQ is not set +CONFIG_DEFAULT_CUBIC=y +CONFIG_DEFAULT_DEADLINE=y +CONFIG_DEFAULT_HOSTNAME="(none)" +CONFIG_DEFAULT_HUNG_TASK_TIMEOUT=120 +CONFIG_DEFAULT_IOSCHED="deadline" +CONFIG_DEFAULT_IO_DELAY_TYPE=1 +# CONFIG_DEFAULT_NOOP is not set +# CONFIG_DEFAULT_RENO is not set +CONFIG_DEFAULT_SECURITY="apparmor" +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_SECURITY_YAMA is not set +CONFIG_DEFAULT_TCP_CONG="cubic" +CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" +# 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_SMO8800=m +CONFIG_DELL_WMI=m +CONFIG_DELL_WMI_AIO=m +# CONFIG_DEPRECATED_PARAM_STRUCT is not set +CONFIG_DETECT_HUNG_TASK=y +# CONFIG_DEVFREQ_EVENT_EXYNOS_PPMU is not set +CONFIG_DEVFREQ_GOV_PERFORMANCE=y +CONFIG_DEVFREQ_GOV_POWERSAVE=y +CONFIG_DEVFREQ_GOV_SIMPLE_ONDEMAND=y +CONFIG_DEVFREQ_GOV_USERSPACE=y +# CONFIG_DEVKMEM is not set +CONFIG_DEVMEM=y +CONFIG_DEVPORT=y +CONFIG_DEVPTS_MULTIPLE_INSTANCES=y +CONFIG_DEVTMPFS=y +CONFIG_DEVTMPFS_MOUNT=y +CONFIG_DEV_APPLETALK=m +CONFIG_DEV_COREDUMP=y +CONFIG_DE_AOC=y +CONFIG_DGAP=m +CONFIG_DGNC=m +CONFIG_DHT11=m +CONFIG_DISPLAY_CONNECTOR_ANALOG_TV=m +CONFIG_DISPLAY_CONNECTOR_DVI=m +CONFIG_DISPLAY_CONNECTOR_HDMI=y +CONFIG_DISPLAY_ENCODER_OPA362=m +CONFIG_DISPLAY_ENCODER_TFP410=m +CONFIG_DISPLAY_ENCODER_TPD12S015=y +CONFIG_DISPLAY_PANEL_DPI=m +CONFIG_DISPLAY_PANEL_DSI_CM=m +CONFIG_DISPLAY_PANEL_LGPHILIPS_LB035Q02=m +CONFIG_DISPLAY_PANEL_NEC_NL8048HL11=m +CONFIG_DISPLAY_PANEL_SHARP_LS037V7DW01=m +CONFIG_DISPLAY_PANEL_SONY_ACX565AKM=m +CONFIG_DISPLAY_PANEL_TPO_TD028TTEC1=m +CONFIG_DISPLAY_PANEL_TPO_TD043MTEA1=m +CONFIG_DL2K=m +CONFIG_DLCI=m +CONFIG_DLCI_MAX=8 +CONFIG_DLM=m +# CONFIG_DLM_DEBUG is not set +CONFIG_DM9000=m +# CONFIG_DM9000_FORCE_SIMPLE_PHY_POLL is not set +CONFIG_DM9102=m +CONFIG_DMADEVICES=y +# CONFIG_DMADEVICES_DEBUG is not set +CONFIG_DMAR_TABLE=y +# CONFIG_DMATEST is not set +CONFIG_DMA_ACPI=y +# CONFIG_DMA_API_DEBUG is not set +# CONFIG_DMA_CMA is not set +CONFIG_DMA_ENGINE=y +CONFIG_DMA_ENGINE_RAID=y +CONFIG_DMA_OF=y +CONFIG_DMA_OMAP=y +CONFIG_DMA_SHARED_BUFFER=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_CLEANER=m +CONFIG_DM_CACHE_MQ=m +CONFIG_DM_CACHE_SMQ=m +CONFIG_DM_CRYPT=m +# CONFIG_DM_DEBUG is not set +# CONFIG_DM_DEBUG_BLOCK_STACK_TRACING is not set +CONFIG_DM_DELAY=m +CONFIG_DM_ERA=m +CONFIG_DM_FLAKEY=m +CONFIG_DM_LOG_USERSPACE=m +CONFIG_DM_LOG_WRITES=m +CONFIG_DM_MIRROR=m +# CONFIG_DM_MQ_DEFAULT is not set +CONFIG_DM_MULTIPATH=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_VERITY=m +CONFIG_DM_ZERO=m +CONFIG_DNET=m +CONFIG_DNOTIFY=y +CONFIG_DNS_RESOLVER=y +CONFIG_DONGLE=y +CONFIG_DOUBLEFAULT=y +CONFIG_DOVE_CLK=y +CONFIG_DOVE_THERMAL=m +CONFIG_DP83867_PHY=m +# CONFIG_DPM_WATCHDOG is not set +CONFIG_DQL=y +CONFIG_DRA752_THERMAL=y +CONFIG_DRAGONRISE_FF=y +# CONFIG_DRBD_FAULT_INJECTION is not set +CONFIG_DRM=m +CONFIG_DRM_AMDGPU=m +# CONFIG_DRM_AMDGPU_CIK is not set +CONFIG_DRM_AMDGPU_USERPTR=y +CONFIG_DRM_ARMADA=m +CONFIG_DRM_AST=m +CONFIG_DRM_ATMEL_HLCDC=m +# CONFIG_DRM_BOCHS is not set +CONFIG_DRM_CIRRUS_QEMU=m +CONFIG_DRM_DW_HDMI=m +CONFIG_DRM_EXYNOS=m +CONFIG_DRM_EXYNOS5433_DECON=y +# CONFIG_DRM_EXYNOS7_DECON is not set +CONFIG_DRM_EXYNOS_DSI=y +# CONFIG_DRM_EXYNOS_FIMD is not set +# CONFIG_DRM_EXYNOS_G2D is not set +CONFIG_DRM_EXYNOS_IOMMU=y +# CONFIG_DRM_EXYNOS_IPP is not set +CONFIG_DRM_EXYNOS_MIC=y +# CONFIG_DRM_EXYNOS_VIDI is not set +CONFIG_DRM_GEM_CMA_HELPER=y +CONFIG_DRM_GMA3600=y +CONFIG_DRM_GMA500=m +CONFIG_DRM_GMA600=y +CONFIG_DRM_I2C_ADV7511=m +CONFIG_DRM_I2C_CH7006=m +CONFIG_DRM_I2C_NXP_TDA998X=m +CONFIG_DRM_I2C_SIL164=m +CONFIG_DRM_I810=m +CONFIG_DRM_I915=m +CONFIG_DRM_I915_FBDEV=y +CONFIG_DRM_I915_KMS=y +# CONFIG_DRM_I915_PRELIMINARY_HW_SUPPORT is not set +CONFIG_DRM_IMX=m +CONFIG_DRM_IMX_FB_HELPER=m +CONFIG_DRM_IMX_HDMI=m +CONFIG_DRM_IMX_IPUV3=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_LOAD_EDID_FIRMWARE=y +CONFIG_DRM_MEDFIELD=y +CONFIG_DRM_MGA=m +# CONFIG_DRM_MGAG200 is not set +CONFIG_DRM_MIPI_DSI=y +CONFIG_DRM_MSM=m +CONFIG_DRM_MSM_DSI=y +CONFIG_DRM_MSM_DSI_PLL=y +# CONFIG_DRM_MSM_FBDEV is not set +CONFIG_DRM_MSM_REGISTER_LOGGING=y +CONFIG_DRM_NOUVEAU=m +CONFIG_DRM_NOUVEAU_BACKLIGHT=y +# CONFIG_DRM_OMAP is not set +CONFIG_DRM_PANEL=y +CONFIG_DRM_PANEL_LD9040=m +CONFIG_DRM_PANEL_S6E8AA0=m +CONFIG_DRM_PANEL_SHARP_LQ101R1SX01=m +CONFIG_DRM_PANEL_SIMPLE=m +CONFIG_DRM_PS8622=m +CONFIG_DRM_PTN3460=m +CONFIG_DRM_QXL=m +CONFIG_DRM_R128=m +CONFIG_DRM_RADEON=m +# CONFIG_DRM_RADEON_UMS is not set +# CONFIG_DRM_RADEON_USERPTR is not set +CONFIG_DRM_RCAR_DU=m +CONFIG_DRM_RCAR_HDMI=y +CONFIG_DRM_RCAR_LVDS=y +CONFIG_DRM_SAVAGE=m +CONFIG_DRM_SHMOBILE=m +CONFIG_DRM_SIS=m +# CONFIG_DRM_STI is not set +CONFIG_DRM_TDFX=m +CONFIG_DRM_TEGRA=m +# CONFIG_DRM_TEGRA_DEBUG is not set +CONFIG_DRM_TEGRA_FBDEV=y +CONFIG_DRM_TEGRA_STAGING=y +CONFIG_DRM_TILCDC=m +CONFIG_DRM_TILCDC_SLAVE_COMPAT=y +CONFIG_DRM_TTM=m +CONFIG_DRM_UDL=m +CONFIG_DRM_VGEM=m +CONFIG_DRM_VIA=m +CONFIG_DRM_VIRTIO_GPU=m +CONFIG_DRM_VMWGFX=m +CONFIG_DRM_VMWGFX_FBCON=y +CONFIG_DS1682=m +CONFIG_DSCC4=m +CONFIG_DSCC4_PCISYNC=y +CONFIG_DSCC4_PCI_RST=y +CONFIG_DTC=y +CONFIG_DTL=y +CONFIG_DTLK=m +CONFIG_DT_IDLE_STATES=y +CONFIG_DUMMY=m +CONFIG_DUMMY_CONSOLE=y +CONFIG_DUMMY_CONSOLE_COLUMNS=80 +CONFIG_DUMMY_CONSOLE_ROWS=25 +CONFIG_DUMMY_IRQ=m +CONFIG_DVB_A8293=m +CONFIG_DVB_AF9013=m +CONFIG_DVB_AF9033=m +CONFIG_DVB_AS102=m +CONFIG_DVB_AS102_FE=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_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_DDBRIDGE=m +CONFIG_DVB_DIB3000MB=m +CONFIG_DVB_DIB3000MC=m +CONFIG_DVB_DIB7000M=m +CONFIG_DVB_DIB7000P=m +CONFIG_DVB_DIB8000=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 is not set +CONFIG_DVB_DYNAMIC_MINORS=y +CONFIG_DVB_EC100=m +CONFIG_DVB_FIREDTV=m +CONFIG_DVB_FIREDTV_INPUT=y +CONFIG_DVB_HOPPER=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_LGS8GXX=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_MN88472=m +CONFIG_DVB_MN88473=m +CONFIG_DVB_MT312=m +CONFIG_DVB_MT352=m +CONFIG_DVB_NET=y +CONFIG_DVB_NGENE=m +CONFIG_DVB_NXT200X=m +CONFIG_DVB_NXT6000=m +CONFIG_DVB_OR51132=m +CONFIG_DVB_OR51211=m +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_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_STV6110=m +CONFIG_DVB_STV6110x=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_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_DEBUG is not set +CONFIG_DVB_USB_DIB0700=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_FRIIO=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_VES1820=m +CONFIG_DVB_VES1X93=m +CONFIG_DVB_ZL10036=m +CONFIG_DVB_ZL10039=m +CONFIG_DVB_ZL10353=m +CONFIG_DWMAC_GENERIC=m +CONFIG_DWMAC_IPQ806X=m +CONFIG_DWMAC_LPC18XX=m +CONFIG_DWMAC_MESON=m +CONFIG_DWMAC_ROCKCHIP=m +CONFIG_DWMAC_SOCFPGA=m +CONFIG_DWMAC_STI=m +CONFIG_DWMAC_SUNXI=m +CONFIG_DW_APB_ICTL=y +CONFIG_DW_APB_TIMER=y +CONFIG_DW_APB_TIMER_OF=y +CONFIG_DW_DMAC=m +CONFIG_DW_DMAC_CORE=m +CONFIG_DW_DMAC_PCI=m +CONFIG_DW_WATCHDOG=m +CONFIG_DYNAMIC_DEBUG=y +CONFIG_DYNAMIC_FTRACE=y +CONFIG_DYNAMIC_FTRACE_WITH_REGS=y +CONFIG_E100=m +CONFIG_E1000=m +CONFIG_E1000E=m +# CONFIG_E200 is not set +CONFIG_E500=y +# CONFIG_E5500_CPU is not set +# CONFIG_E6500_CPU is not set +CONFIG_EARLY_PRINTK=y +CONFIG_EARLY_PRINTK_DBGP=y +CONFIG_EARLY_PRINTK_EFI=y +CONFIG_ECHO=m +CONFIG_ECRYPT_FS=y +CONFIG_ECRYPT_FS_MESSAGING=y +CONFIG_EDAC=y +CONFIG_EDAC_AMD64=m +# CONFIG_EDAC_AMD64_ERROR_INJECTION is not set +CONFIG_EDAC_AMD76X=m +CONFIG_EDAC_AMD8111=m +CONFIG_EDAC_AMD8131=m +CONFIG_EDAC_ATOMIC_SCRUB=y +CONFIG_EDAC_CPC925=m +# CONFIG_EDAC_DEBUG is not set +CONFIG_EDAC_DECODE_MCE=m +CONFIG_EDAC_E752X=m +CONFIG_EDAC_E7XXX=m +CONFIG_EDAC_HIGHBANK_L2=m +CONFIG_EDAC_HIGHBANK_MC=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_I82860=m +CONFIG_EDAC_I82875P=m +CONFIG_EDAC_I82975X=m +CONFIG_EDAC_IE31200=m +# CONFIG_EDAC_LEGACY_SYSFS is not set +CONFIG_EDAC_MCE_INJ=m +CONFIG_EDAC_MM_EDAC=m +CONFIG_EDAC_MPC85XX=m +CONFIG_EDAC_PASEMI=m +CONFIG_EDAC_R82600=m +CONFIG_EDAC_SBRIDGE=m +CONFIG_EDAC_SUPPORT=y +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_93CX6=m +CONFIG_EEPROM_93XX46=m +CONFIG_EEPROM_AT24=m +CONFIG_EEPROM_AT25=m +CONFIG_EEPROM_LEGACY=m +CONFIG_EEPROM_MAX6875=m +CONFIG_EFI=y +CONFIG_EFIVAR_FS=y +CONFIG_EFI_ARMSTUB=y +CONFIG_EFI_ESRT=y +CONFIG_EFI_MIXED=y +CONFIG_EFI_PARAMS_FROM_FDT=y +CONFIG_EFI_PARTITION=y +CONFIG_EFI_RUNTIME_MAP=y +CONFIG_EFI_RUNTIME_WRAPPERS=y +CONFIG_EFI_STUB=y +CONFIG_EFI_VARS=y +CONFIG_EFI_VARS_PSTORE=m +# CONFIG_EFI_VARS_PSTORE_DEFAULT_DISABLE is not set +CONFIG_EFS_FS=m +CONFIG_EHEA=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_ELECTRA_CF=m +CONFIG_ELF_CORE=y +CONFIG_EMAC_ROCKCHIP=m +# CONFIG_EMBEDDED is not set +# CONFIG_ENABLE_MUST_CHECK is not set +# CONFIG_ENABLE_WARN_DEPRECATED is not set +CONFIG_ENC28J60=m +# CONFIG_ENC28J60_WRITEVERIFY is not set +CONFIG_ENCLOSURE_SERVICES=m +CONFIG_ENCRYPTED_KEYS=y +CONFIG_ENIC=m +CONFIG_EPAPR_PARAVIRT=y +CONFIG_EPIC100=m +CONFIG_EPOLL=y +CONFIG_EQUALIZER=m +CONFIG_ESI_DONGLE=m +CONFIG_ET131X=m +CONFIG_ETHERNET=y +CONFIG_ETHOC=m +CONFIG_EUROTECH_WDT=m +CONFIG_EVENTFD=y +CONFIG_EVENT_TRACING=y +CONFIG_EVM=y +CONFIG_EVM_ATTR_FSUUID=y +CONFIG_EVM_EXTRA_SMACK_XATTRS=y +# CONFIG_EXOFS_DEBUG is not set +CONFIG_EXOFS_FS=m +CONFIG_EXPERT=y +CONFIG_EXPORTFS=y +# CONFIG_EXT2_FS is not set +# CONFIG_EXT3_FS is not set +# CONFIG_EXT4_DEBUG is not set +CONFIG_EXT4_ENCRYPTION=m +CONFIG_EXT4_FS=y +CONFIG_EXT4_FS_ENCRYPTION=y +CONFIG_EXT4_FS_POSIX_ACL=y +CONFIG_EXT4_FS_SECURITY=y +CONFIG_EXT4_USE_FOR_EXT23=y +CONFIG_EXTCON=y +CONFIG_EXTCON_ADC_JACK=m +CONFIG_EXTCON_ARIZONA=m +CONFIG_EXTCON_AXP288=m +CONFIG_EXTCON_GPIO=m +CONFIG_EXTCON_MAX14577=m +CONFIG_EXTCON_MAX77693=m +CONFIG_EXTCON_MAX77843=m +CONFIG_EXTCON_MAX8997=m +CONFIG_EXTCON_PALMAS=m +CONFIG_EXTCON_RT8973A=m +CONFIG_EXTCON_SM5502=m +CONFIG_EXTCON_USB_GPIO=m +CONFIG_EXTRA_FIRMWARE="" +CONFIG_EXTRA_TARGETS="" +CONFIG_EXYNOS5420_MCPM=y +CONFIG_EXYNOS_ADC=m +CONFIG_EXYNOS_CPU_SUSPEND=y +CONFIG_EXYNOS_IOMMU=y +# CONFIG_EXYNOS_IOMMU_DEBUG is not set +CONFIG_EXYNOS_MIPI_DSI=y +CONFIG_EXYNOS_THERMAL=y +CONFIG_EXYNOS_VIDEO=y +CONFIG_EZCHIP_NPS_MANAGEMENT_ENET=m +CONFIG_EZX_PCAP=y +# CONFIG_F2FS_CHECK_FS is not set +CONFIG_F2FS_FS=m +CONFIG_F2FS_FS_ENCRYPTION=y +CONFIG_F2FS_FS_POSIX_ACL=y +CONFIG_F2FS_FS_SECURITY=y +CONFIG_F2FS_FS_XATTR=y +# CONFIG_F2FS_IO_TRACE is not set +CONFIG_F2FS_STAT_FS=y +CONFIG_F71808E_WDT=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_FS=y +# CONFIG_FAULT_INJECTION is not set +CONFIG_FA_DUMP=y +CONFIG_FB=y +CONFIG_FB_3DFX=m +# CONFIG_FB_3DFX_ACCEL is not set +# CONFIG_FB_3DFX_I2C is not set +CONFIG_FB_ARC=m +CONFIG_FB_ARK=m +CONFIG_FB_ARMCLCD=y +CONFIG_FB_ASILIANT=y +CONFIG_FB_ATY=m +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_AUO_K1900=m +CONFIG_FB_AUO_K1901=m +CONFIG_FB_AUO_K190X=m +CONFIG_FB_BACKLIGHT=y +CONFIG_FB_BROADSHEET=m +CONFIG_FB_CARILLO_RANCH=m +CONFIG_FB_CARMINE=m +CONFIG_FB_CARMINE_DRAM_EVAL=y +CONFIG_FB_CFB_COPYAREA=y +CONFIG_FB_CFB_FILLRECT=y +CONFIG_FB_CFB_IMAGEBLIT=y +CONFIG_FB_CIRRUS=m +CONFIG_FB_CMDLINE=y +CONFIG_FB_CONTROL=y +CONFIG_FB_CT65550=y +CONFIG_FB_CYBER2000=m +CONFIG_FB_CYBER2000_DDC=y +CONFIG_FB_DA8XX=m +CONFIG_FB_DDC=m +CONFIG_FB_DEFERRED_IO=y +CONFIG_FB_EFI=y +CONFIG_FB_FLEX=m +# CONFIG_FB_FOREIGN_ENDIAN is not set +CONFIG_FB_FSL_DIU=m +CONFIG_FB_GEODE=y +CONFIG_FB_GEODE_GX=m +CONFIG_FB_GEODE_GX1=m +CONFIG_FB_GEODE_LX=m +CONFIG_FB_HECUBA=m +CONFIG_FB_HGA=m +CONFIG_FB_HYPERV=m +CONFIG_FB_I740=m +CONFIG_FB_I810=m +# CONFIG_FB_I810_GTF is not set +CONFIG_FB_IMSTT=y +CONFIG_FB_IMX=m +CONFIG_FB_INTEL=m +# CONFIG_FB_INTEL_DEBUG is not set +CONFIG_FB_INTEL_I2C=y +CONFIG_FB_KYRO=m +CONFIG_FB_LE80578=m +CONFIG_FB_MATROX=m +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=m +CONFIG_FB_MB862XX_I2C=y +# CONFIG_FB_MB862XX_LIME is not set +CONFIG_FB_MB862XX_PCI_GDC=y +CONFIG_FB_METRONOME=m +CONFIG_FB_MODE_HELPERS=y +CONFIG_FB_MX3=y +CONFIG_FB_MXS=m +CONFIG_FB_N411=m +CONFIG_FB_NEOMAGIC=m +CONFIG_FB_NVIDIA=m +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_DEBUG_SUPPORT is not set +CONFIG_FB_OMAP2_NUM_FBS=3 +CONFIG_FB_OPENCORES=m +CONFIG_FB_PLATINUM=y +CONFIG_FB_PM2=m +CONFIG_FB_PM2_FIFO_DISCONNECT=y +CONFIG_FB_PM3=m +CONFIG_FB_PS3=y +CONFIG_FB_PS3_DEFAULT_SIZE_M=9 +CONFIG_FB_RADEON=m +CONFIG_FB_RADEON_BACKLIGHT=y +# CONFIG_FB_RADEON_DEBUG is not set +CONFIG_FB_RADEON_I2C=y +CONFIG_FB_RIVA=m +CONFIG_FB_RIVA_BACKLIGHT=y +# CONFIG_FB_RIVA_DEBUG is not set +CONFIG_FB_RIVA_I2C=y +CONFIG_FB_S1D13XXX=m +CONFIG_FB_S3=m +CONFIG_FB_S3C=m +# CONFIG_FB_S3C_DEBUG_REGWRITE is not set +CONFIG_FB_S3_DDC=y +CONFIG_FB_SAVAGE=m +# CONFIG_FB_SAVAGE_ACCEL is not set +CONFIG_FB_SAVAGE_I2C=y +CONFIG_FB_SH_MOBILE_HDMI=m +CONFIG_FB_SH_MOBILE_LCDC=m +CONFIG_FB_SH_MOBILE_MERAM=m +CONFIG_FB_SIMPLE=y +CONFIG_FB_SIS=m +CONFIG_FB_SIS_300=y +CONFIG_FB_SIS_315=y +CONFIG_FB_SM501=m +CONFIG_FB_SM750=m +CONFIG_FB_SM7XX=m +CONFIG_FB_SMSCUFX=m +CONFIG_FB_SSD1307=m +CONFIG_FB_SVGALIB=m +CONFIG_FB_TFT=m +CONFIG_FB_TFT_AGM1264K_FL=m +CONFIG_FB_TFT_BD663474=m +CONFIG_FB_TFT_FBTFT_DEVICE=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_SSD1289=m +CONFIG_FB_TFT_SSD1306=m +CONFIG_FB_TFT_SSD1331=m +CONFIG_FB_TFT_SSD1351=m +CONFIG_FB_TFT_ST7735R=m +CONFIG_FB_TFT_TINYLCD=m +CONFIG_FB_TFT_TLS8204=m +CONFIG_FB_TFT_UC1701=m +CONFIG_FB_TFT_UPD161704=m +CONFIG_FB_TFT_WATTEROTT=m +CONFIG_FB_TILEBLITTING=y +CONFIG_FB_TMIO=m +CONFIG_FB_TMIO_ACCELL=y +CONFIG_FB_TRIDENT=m +CONFIG_FB_UVESA=m +CONFIG_FB_VALKYRIE=y +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_VT8623=m +CONFIG_FB_XGI=m +CONFIG_FCOE=m +CONFIG_FCOE_FNIC=m +CONFIG_FDDI=y +CONFIG_FEALNX=m +CONFIG_FEC=y +# CONFIG_FENCE_TRACE is not set +CONFIG_FHANDLE=y +CONFIG_FIB_RULES=y +CONFIG_FILE_LOCKING=y +CONFIG_FIQ=y +CONFIG_FIREWIRE=m +CONFIG_FIREWIRE_NET=m +CONFIG_FIREWIRE_NOSY=m +CONFIG_FIREWIRE_OHCI=m +CONFIG_FIREWIRE_SBP2=m +CONFIG_FIREWIRE_SERIAL=m +CONFIG_FIRMWARE_EDID=y +CONFIG_FIRMWARE_IN_KERNEL=y +CONFIG_FIRMWARE_MEMMAP=y +CONFIG_FIXED_PHY=y +CONFIG_FIX_EARLYCON_MEM=y +CONFIG_FLATMEM=y +# CONFIG_FLATMEM_MANUAL is not set +CONFIG_FLAT_NODE_MEM_MAP=y +CONFIG_FM10K=m +CONFIG_FM10K_VXLAN=y +CONFIG_FMC=m +CONFIG_FMC_CHARDEV=m +CONFIG_FMC_FAKEDEV=m +CONFIG_FMC_TRIVIAL=m +CONFIG_FMC_WRITE_EEPROM=m +# 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_FORCEDETH=m +CONFIG_FRAMEBUFFER_CONSOLE=y +CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y +CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y +CONFIG_FRAME_POINTER=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_FSL_BOOKE=y +CONFIG_FSL_CORENET_CF=m +CONFIG_FSL_DMA=m +CONFIG_FSL_EDMA=m +CONFIG_FSL_EMB_PERFMON=y +CONFIG_FSL_EMB_PERF_EVENT=y +CONFIG_FSL_EMB_PERF_EVENT_E500=y +CONFIG_FSL_HV_MANAGER=m +CONFIG_FSL_IFC=y +CONFIG_FSL_LBC=y +CONFIG_FSL_MC_BUS=m +# CONFIG_FSL_PAMU is not set +CONFIG_FSL_PCI=y +CONFIG_FSL_PQ_MDIO=m +CONFIG_FSL_RIO=y +CONFIG_FSL_SOC=y +CONFIG_FSL_SOC_BOOKE=y +# CONFIG_FSL_ULI1575 is not set +CONFIG_FSL_XGMAC_MDIO=y +CONFIG_FSNOTIFY=y +CONFIG_FS_DAX=y +CONFIG_FS_ENET=m +CONFIG_FS_ENET_HAS_FCC=y +CONFIG_FS_ENET_HAS_SCC=y +CONFIG_FS_ENET_MDIO_FCC=m +CONFIG_FS_MBCACHE=y +CONFIG_FS_POSIX_ACL=y +CONFIG_FT1000=m +CONFIG_FT1000_PCMCIA=m +CONFIG_FT1000_USB=m +CONFIG_FTGMAC100=m +CONFIG_FTL=m +CONFIG_FTMAC100=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_FUJITSU_LAPTOP=m +# CONFIG_FUJITSU_LAPTOP_DEBUG is not set +CONFIG_FUJITSU_TABLET=m +CONFIG_FUNCTION_GRAPH_TRACER=y +CONFIG_FUNCTION_PROFILER=y +CONFIG_FUNCTION_TRACER=y +CONFIG_FUSE_FS=y +CONFIG_FUSION=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_FWTTY_MAX_CARD_PORTS=32 +CONFIG_FWTTY_MAX_TOTAL_PORTS=64 +CONFIG_FW_LOADER=y +CONFIG_FW_LOADER_USER_HELPER=y +# CONFIG_FW_LOADER_USER_HELPER_FALLBACK is not set +CONFIG_GACT_PROB=y +CONFIG_GADGET_UAC1=y +CONFIG_GAMEPORT=m +CONFIG_GAMEPORT_EMU10K1=m +CONFIG_GAMEPORT_FM801=m +CONFIG_GAMEPORT_L4=m +CONFIG_GAMEPORT_NS558=m +CONFIG_GARP=m +CONFIG_GART_IOMMU=y +# CONFIG_GCOV_KERNEL is not set +CONFIG_GDB_SCRIPTS=y +CONFIG_GELIC_NET=m +CONFIG_GELIC_WIRELESS=y +CONFIG_GENERIC_ADC_BATTERY=m +CONFIG_GENERIC_ALLOCATOR=y +CONFIG_GENERIC_ATOMIC64=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_DEVICES is not set +CONFIG_GENERIC_EARLY_IOREMAP=y +CONFIG_GENERIC_FIND_FIRST_BIT=y +CONFIG_GENERIC_HWEIGHT=y +CONFIG_GENERIC_IDLE_POLL_SETUP=y +CONFIG_GENERIC_IO=y +CONFIG_GENERIC_IOMAP=y +CONFIG_GENERIC_IRQ_CHIP=y +CONFIG_GENERIC_IRQ_PROBE=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_NVRAM=y +CONFIG_GENERIC_PCI_IOMAP=y +CONFIG_GENERIC_PENDING_IRQ=y +CONFIG_GENERIC_PHY=y +CONFIG_GENERIC_PINCONF=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_TIME_VSYSCALL_OLD=y +CONFIG_GENERIC_TRACER=y +CONFIG_GENEVE=m +CONFIG_GENEVE_CORE=m +CONFIG_GENWQE=m +CONFIG_GENWQE_PLATFORM_ERROR_RECOVERY=0 +CONFIG_GEOS=y +# CONFIG_GE_FPGA is not set +# CONFIG_GE_IMP3A is not set +CONFIG_GFS2_FS=m +CONFIG_GFS2_FS_LOCKING_DLM=y +CONFIG_GIANFAR=m +CONFIG_GIGASET_BASE=m +# CONFIG_GIGASET_CAPI is not set +# CONFIG_GIGASET_DEBUG is not set +# CONFIG_GIGASET_DUMMYLL is not set +CONFIG_GIGASET_I4L=y +CONFIG_GIGASET_M101=m +CONFIG_GIGASET_M105=m +CONFIG_GIRBIL_DONGLE=m +CONFIG_GLOB=y +# CONFIG_GLOB_SELFTEST is not set +# CONFIG_GOOGLE_FIRMWARE is not set +CONFIG_GP2AP020A00F=m +CONFIG_GPIOLIB=y +CONFIG_GPIOLIB_IRQCHIP=y +CONFIG_GPIO_74X164=m +CONFIG_GPIO_74XX_MMIO=m +CONFIG_GPIO_ACPI=y +CONFIG_GPIO_ADNP=m +CONFIG_GPIO_ADP5520=m +CONFIG_GPIO_ADP5588=m +CONFIG_GPIO_ALTERA=m +CONFIG_GPIO_AMD8111=m +CONFIG_GPIO_ARIZONA=m +CONFIG_GPIO_CRYSTAL_COVE=m +CONFIG_GPIO_CS5535=m +CONFIG_GPIO_DA9052=m +CONFIG_GPIO_DA9055=m +CONFIG_GPIO_DEVRES=y +CONFIG_GPIO_DLN2=m +CONFIG_GPIO_DWAPB=m +# CONFIG_GPIO_EM is not set +CONFIG_GPIO_F7188X=m +CONFIG_GPIO_GRGPIO=m +CONFIG_GPIO_ICH=m +CONFIG_GPIO_INTEL_MID=y +CONFIG_GPIO_INTEL_PMIC=y +CONFIG_GPIO_IT8761E=m +CONFIG_GPIO_JANZ_TTL=m +CONFIG_GPIO_KEMPLD=m +CONFIG_GPIO_LP3943=m +CONFIG_GPIO_LYNXPOINT=y +CONFIG_GPIO_MAX7300=m +CONFIG_GPIO_MAX7301=m +CONFIG_GPIO_MAX730X=m +CONFIG_GPIO_MAX732X=m +CONFIG_GPIO_MC33880=m +CONFIG_GPIO_MCP23S08=m +CONFIG_GPIO_ML_IOH=m +CONFIG_GPIO_MPC8XXX=y +CONFIG_GPIO_MSIC=y +CONFIG_GPIO_MSM_V2=m +CONFIG_GPIO_MVEBU=y +CONFIG_GPIO_MXC=y +CONFIG_GPIO_OMAP=y +CONFIG_GPIO_PALMAS=y +CONFIG_GPIO_PCA953X=m +CONFIG_GPIO_PCF857X=m +CONFIG_GPIO_PCH=m +CONFIG_GPIO_PL061=y +CONFIG_GPIO_RC5T583=y +CONFIG_GPIO_RCAR=m +CONFIG_GPIO_RDC321X=m +CONFIG_GPIO_SCH=m +CONFIG_GPIO_SCH311X=m +CONFIG_GPIO_SH_PFC=y +CONFIG_GPIO_STMPE=y +CONFIG_GPIO_SX150X=y +CONFIG_GPIO_SYSCON=m +CONFIG_GPIO_SYSFS=y +CONFIG_GPIO_TC3589X=y +CONFIG_GPIO_TIMBERDALE=y +CONFIG_GPIO_TPS6586X=y +CONFIG_GPIO_TPS65910=y +CONFIG_GPIO_TPS65912=m +CONFIG_GPIO_UCB1400=m +CONFIG_GPIO_VF610=y +CONFIG_GPIO_VIPERBOARD=m +CONFIG_GPIO_VX855=m +CONFIG_GPIO_WATCHDOG=m +CONFIG_GPIO_WM831X=m +CONFIG_GPIO_WM8350=m +CONFIG_GPIO_WM8994=m +CONFIG_GPIO_XGENE=y +CONFIG_GPIO_XGENE_SB=m +CONFIG_GPIO_XILINX=y +CONFIG_GPIO_ZEVIO=y +CONFIG_GPIO_ZYNQ=m +CONFIG_GRACE_PERIOD=m +CONFIG_GREENASIA_FF=y +CONFIG_GS_FPGABOOT=m +CONFIG_HAMACHI=m +CONFIG_HAMRADIO=y +CONFIG_HANDLE_DOMAIN_IRQ=y +CONFIG_HANGCHECK_TIMER=m +CONFIG_HAPPYMEAL=m +CONFIG_HARDIRQS_SW_RESEND=y +CONFIG_HARDLOCKUP_DETECTOR=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_HUGE_VMAP=y +CONFIG_HAVE_ARCH_JUMP_LABEL=y +CONFIG_HAVE_ARCH_KASAN=y +CONFIG_HAVE_ARCH_KGDB=y +CONFIG_HAVE_ARCH_KMEMCHECK=y +CONFIG_HAVE_ARCH_PFN_VALID=y +CONFIG_HAVE_ARCH_SECCOMP_FILTER=y +CONFIG_HAVE_ARCH_SOFT_DIRTY=y +CONFIG_HAVE_ARCH_TRACEHOOK=y +CONFIG_HAVE_ARCH_TRANSPARENT_HUGEPAGE=y +CONFIG_HAVE_ARM_ARCH_TIMER=y +CONFIG_HAVE_ARM_SCU=y +CONFIG_HAVE_ARM_TWD=y +CONFIG_HAVE_ATOMIC_IOMAP=y +CONFIG_HAVE_BPF_JIT=y +CONFIG_HAVE_CC_STACKPROTECTOR=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_API_DEBUG=y +CONFIG_HAVE_DMA_ATTRS=y +CONFIG_HAVE_DMA_CONTIGUOUS=y +CONFIG_HAVE_DYNAMIC_FTRACE=y +CONFIG_HAVE_DYNAMIC_FTRACE_WITH_REGS=y +CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y +CONFIG_HAVE_FENTRY=y +CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y +CONFIG_HAVE_FUNCTION_GRAPH_FP_TEST=y +CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y +CONFIG_HAVE_FUNCTION_TRACER=y +CONFIG_HAVE_GENERIC_RCU_GUP=y +CONFIG_HAVE_HW_BREAKPOINT=y +CONFIG_HAVE_IDE=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_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_IRQCHIP=y +CONFIG_HAVE_KVM_IRQFD=y +CONFIG_HAVE_KVM_IRQ_ROUTING=y +CONFIG_HAVE_KVM_MSI=y +CONFIG_HAVE_LATENCYTOP_SUPPORT=y +CONFIG_HAVE_LIVEPATCH=y +CONFIG_HAVE_MEMBLOCK=y +CONFIG_HAVE_MEMBLOCK_NODE_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_NET_DSA=y +CONFIG_HAVE_OPROFILE=y +CONFIG_HAVE_OPTPROBES=y +CONFIG_HAVE_PATA_PLATFORM=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_PROC_CPU=y +CONFIG_HAVE_RCU_TABLE_FREE=y +CONFIG_HAVE_REGS_AND_STACK_ACCESS_API=y +CONFIG_HAVE_S3C2410_I2C=y +CONFIG_HAVE_S3C2410_WATCHDOG=y +CONFIG_HAVE_S3C_RTC=y +CONFIG_HAVE_SMP=y +CONFIG_HAVE_SYSCALL_TRACEPOINTS=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_HCALL_STATS is not set +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_HDQ_MASTER_OMAP=m +# CONFIG_HEADERS_CHECK is not set +CONFIG_HERMES=m +CONFIG_HERMES_CACHE_FW_ON_INIT=y +# CONFIG_HERMES_PRISM is not set +CONFIG_HFSPLUS_FS=m +CONFIG_HFSPLUS_FS_POSIX_ACL=y +CONFIG_HFS_FS=m +CONFIG_HIBERNATE_CALLBACKS=y +CONFIG_HID=m +CONFIG_HIDRAW=y +CONFIG_HID_A4TECH=m +CONFIG_HID_ACRUX=m +CONFIG_HID_ACRUX_FF=y +CONFIG_HID_APPLE=m +CONFIG_HID_APPLEIR=m +CONFIG_HID_AUREAL=m +CONFIG_HID_BATTERY_STRENGTH=y +CONFIG_HID_BELKIN=m +CONFIG_HID_BETOP_FF=m +CONFIG_HID_CHERRY=m +CONFIG_HID_CHICONY=m +CONFIG_HID_CP2112=m +CONFIG_HID_CYPRESS=m +CONFIG_HID_DRAGONRISE=m +CONFIG_HID_ELECOM=m +CONFIG_HID_ELO=m +CONFIG_HID_EMS_FF=m +CONFIG_HID_EZKEY=m +CONFIG_HID_GENERIC=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_KENSINGTON=m +CONFIG_HID_KEYTOUCH=m +CONFIG_HID_KYE=m +CONFIG_HID_LCPOWER=m +CONFIG_HID_LENOVO=m +CONFIG_HID_LOGITECH=m +CONFIG_HID_LOGITECH_DJ=m +CONFIG_HID_LOGITECH_HIDPP=m +CONFIG_HID_MAGICMOUSE=m +CONFIG_HID_MICROSOFT=m +CONFIG_HID_MONTEREY=m +CONFIG_HID_MULTITOUCH=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_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_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_SMARTJOYPLUS=m +CONFIG_HID_SONY=m +CONFIG_HID_SPEEDLINK=m +CONFIG_HID_STEELSERIES=m +CONFIG_HID_SUNPLUS=m +CONFIG_HID_THINGM=m +CONFIG_HID_THRUSTMASTER=m +CONFIG_HID_TIVO=m +CONFIG_HID_TOPSEED=m +CONFIG_HID_TWINHAN=m +CONFIG_HID_UCLOGIC=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_HIGHMEM4G is not set +CONFIG_HIGHMEM64G=y +CONFIG_HIGHPTE=y +CONFIG_HIGH_RES_TIMERS=y +CONFIG_HIP04_ETH=m +# CONFIG_HIPPI is not set +CONFIG_HISAX_16_0=y +CONFIG_HISAX_16_3=y +CONFIG_HISAX_1TR6=y +CONFIG_HISAX_ASUSCOM=y +CONFIG_HISAX_AVM_A1=y +CONFIG_HISAX_AVM_A1_CS=m +CONFIG_HISAX_AVM_A1_PCMCIA=y +CONFIG_HISAX_BKM_A4T=y +# CONFIG_HISAX_DEBUG is not set +CONFIG_HISAX_DIEHLDIVA=y +CONFIG_HISAX_ELSA=y +CONFIG_HISAX_ELSA_CS=m +CONFIG_HISAX_ENTERNOW_PCI=y +CONFIG_HISAX_EURO=y +CONFIG_HISAX_FRITZPCI=y +CONFIG_HISAX_FRITZ_PCIPNP=m +CONFIG_HISAX_GAZEL=y +CONFIG_HISAX_HFC4S8S=m +CONFIG_HISAX_HFCS=y +CONFIG_HISAX_HFCUSB=m +CONFIG_HISAX_HFC_PCI=y +CONFIG_HISAX_HFC_SX=y +CONFIG_HISAX_HSTSAPHIR=y +CONFIG_HISAX_ISURF=y +CONFIG_HISAX_IX1MICROR2=y +CONFIG_HISAX_MAX_CARDS=8 +CONFIG_HISAX_MIC=y +CONFIG_HISAX_NETJET=y +CONFIG_HISAX_NETJET_U=y +CONFIG_HISAX_NI1=y +CONFIG_HISAX_NICCY=y +# CONFIG_HISAX_NO_KEYPAD is not set +# CONFIG_HISAX_NO_LLC is not set +# CONFIG_HISAX_NO_SENDCOMPLETE is not set +CONFIG_HISAX_S0BOX=y +CONFIG_HISAX_SCT_QUADRO=y +CONFIG_HISAX_SEDLBAUER=y +CONFIG_HISAX_SEDLBAUER_CS=m +CONFIG_HISAX_SPORTSTER=y +CONFIG_HISAX_ST5481=m +CONFIG_HISAX_TELEINT=y +CONFIG_HISAX_TELESPCI=y +CONFIG_HISAX_TELES_CS=m +CONFIG_HISAX_W6692=y +CONFIG_HISI_THERMAL=m +CONFIG_HIX5HD2_GMAC=m +CONFIG_HMC6352=m +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_HOSTESS_SV11=m +CONFIG_HOTPLUG_CPU=y +CONFIG_HOTPLUG_PCI=y +CONFIG_HOTPLUG_PCI_ACPI=y +CONFIG_HOTPLUG_PCI_ACPI_IBM=m +CONFIG_HOTPLUG_PCI_COMPAQ=m +CONFIG_HOTPLUG_PCI_COMPAQ_NVRAM=y +CONFIG_HOTPLUG_PCI_CPCI=y +CONFIG_HOTPLUG_PCI_CPCI_GENERIC=m +CONFIG_HOTPLUG_PCI_CPCI_ZT5550=m +CONFIG_HOTPLUG_PCI_IBM=m +CONFIG_HOTPLUG_PCI_RPA=m +CONFIG_HOTPLUG_PCI_RPA_DLPAR=m +CONFIG_HP100=m +CONFIG_HPET_EMULATE_RTC=y +CONFIG_HPET_MMAP=y +CONFIG_HPET_MMAP_DEFAULT=y +CONFIG_HPET_TIMER=y +CONFIG_HPFS_FS=m +CONFIG_HPWDT_NMI_DECODING=y +CONFIG_HP_ACCEL=m +CONFIG_HP_ILO=m +CONFIG_HP_WATCHDOG=m +CONFIG_HP_WIRELESS=m +CONFIG_HP_WMI=m +CONFIG_HSA_AMD=m +CONFIG_HSI=m +CONFIG_HSI_BOARDINFO=y +CONFIG_HSI_CHAR=m +CONFIG_HSR=m +CONFIG_HSU_DMA=m +CONFIG_HSU_DMA_PCI=m +CONFIG_HTC_EGPIO=y +CONFIG_HTC_I2CPLD=y +CONFIG_HTC_PASIC3=m +CONFIG_HT_IRQ=y +CONFIG_HUGETLBFS=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_OLD_HVSI=y +CONFIG_HVC_OPAL=y +CONFIG_HVC_RTAS=y +CONFIG_HVC_UDBG=y +CONFIG_HVC_XEN=y +CONFIG_HVC_XEN_FRONTEND=y +CONFIG_HV_PERF_CTRS=y +CONFIG_HWMON=y +# CONFIG_HWMON_DEBUG_CHIP is not set +CONFIG_HWMON_VID=m +CONFIG_HWPOISON_INJECT=m +CONFIG_HWSPINLOCK=m +CONFIG_HWSPINLOCK_OMAP=m +CONFIG_HWSPINLOCK_QCOM=m +CONFIG_HW_CONSOLE=y +CONFIG_HW_PERF_EVENTS=y +CONFIG_HW_RANDOM=y +CONFIG_HW_RANDOM_AMD=m +CONFIG_HW_RANDOM_EXYNOS=m +CONFIG_HW_RANDOM_GEODE=m +CONFIG_HW_RANDOM_INTEL=m +CONFIG_HW_RANDOM_MSM=m +CONFIG_HW_RANDOM_OMAP=m +CONFIG_HW_RANDOM_OMAP3_ROM=m +CONFIG_HW_RANDOM_PASEMI=m +CONFIG_HW_RANDOM_POWERNV=m +CONFIG_HW_RANDOM_PSERIES=m +CONFIG_HW_RANDOM_TIMERIOMEM=m +CONFIG_HW_RANDOM_TPM=m +CONFIG_HW_RANDOM_VIA=m +CONFIG_HW_RANDOM_VIRTIO=m +CONFIG_HW_RANDOM_XGENE=m +CONFIG_HYPERV=m +CONFIG_HYPERVISOR_GUEST=y +CONFIG_HYPERV_BALLOON=m +CONFIG_HYPERV_KEYBOARD=m +CONFIG_HYPERV_NET=m +CONFIG_HYPERV_STORAGE=m +CONFIG_HYPERV_UTILS=m +CONFIG_HYSDN=m +CONFIG_HYSDN_CAPI=y +# CONFIG_HZ_100 is not set +# 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=y +CONFIG_I2C_ALGOBIT=m +CONFIG_I2C_ALGOPCA=m +CONFIG_I2C_ALI1535=m +CONFIG_I2C_ALI1563=m +CONFIG_I2C_ALI15X3=m +CONFIG_I2C_AMD756=m +CONFIG_I2C_AMD756_S4882=m +CONFIG_I2C_AMD8111=m +CONFIG_I2C_ARB_GPIO_CHALLENGE=m +CONFIG_I2C_AXXIA=m +CONFIG_I2C_BCM2048=m +CONFIG_I2C_BOARDINFO=y +CONFIG_I2C_CBUS_GPIO=m +CONFIG_I2C_CHARDEV=y +CONFIG_I2C_COMPAT=y +CONFIG_I2C_CPM=m +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_DESIGNWARE_BAYTRAIL=y +CONFIG_I2C_DESIGNWARE_CORE=m +CONFIG_I2C_DESIGNWARE_PCI=m +CONFIG_I2C_DESIGNWARE_PLATFORM=m +CONFIG_I2C_DIOLAN_U2C=m +CONFIG_I2C_DLN2=m +CONFIG_I2C_EG20T=m +CONFIG_I2C_EXYNOS5=m +CONFIG_I2C_GPIO=m +CONFIG_I2C_HELPER_AUTO=y +CONFIG_I2C_HID=m +CONFIG_I2C_HIX5HD2=m +CONFIG_I2C_HYDRA=m +CONFIG_I2C_I801=m +CONFIG_I2C_IMX=y +CONFIG_I2C_ISCH=m +CONFIG_I2C_ISMT=m +CONFIG_I2C_KEMPLD=m +CONFIG_I2C_MESON=m +CONFIG_I2C_MPC=m +CONFIG_I2C_MT65XX=m +CONFIG_I2C_MUX=m +CONFIG_I2C_MUX_GPIO=m +CONFIG_I2C_MUX_PCA9541=m +CONFIG_I2C_MUX_PCA954x=m +CONFIG_I2C_MUX_PINCTRL=m +CONFIG_I2C_MV64XXX=m +CONFIG_I2C_NFORCE2=m +CONFIG_I2C_NFORCE2_S4985=m +CONFIG_I2C_NOMADIK=m +CONFIG_I2C_OCORES=m +CONFIG_I2C_OMAP=y +CONFIG_I2C_OPAL=y +CONFIG_I2C_PARPORT=m +CONFIG_I2C_PARPORT_LIGHT=m +CONFIG_I2C_PASEMI=m +CONFIG_I2C_PCA_ISA=m +CONFIG_I2C_PCA_PLATFORM=m +CONFIG_I2C_PIIX4=m +CONFIG_I2C_POWERMAC=y +# CONFIG_I2C_PXA_PCI is not set +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_SIMTEC=m +CONFIG_I2C_SIS5595=m +CONFIG_I2C_SIS630=m +CONFIG_I2C_SIS96X=m +CONFIG_I2C_SLAVE_EEPROM=m +CONFIG_I2C_SMBUS=m +CONFIG_I2C_STUB=m +CONFIG_I2C_TAOS_EVM=m +CONFIG_I2C_TEGRA=m +CONFIG_I2C_TINY_USB=m +CONFIG_I2C_VERSATILE=m +CONFIG_I2C_VIA=m +CONFIG_I2C_VIAPRO=m +CONFIG_I2C_VIPERBOARD=m +CONFIG_I2C_XGENE_SLIMPRO=m +CONFIG_I2C_XILINX=m +CONFIG_I40E=m +CONFIG_I40EVF=m +CONFIG_I40E_DCB=y +CONFIG_I40E_FCOE=y +CONFIG_I40E_VXLAN=y +CONFIG_I6300ESB_WDT=m +CONFIG_I7300_IDLE=m +CONFIG_I7300_IDLE_IOAT_CHANNEL=y +CONFIG_I82092=m +CONFIG_I82365=m +CONFIG_I8253_LOCK=y +CONFIG_I8K=m +# CONFIG_IA32_AOUT is not set +CONFIG_IA32_EMULATION=y +CONFIG_IB700_WDT=m +CONFIG_IBMASR=m +CONFIG_IBMVIO=y +CONFIG_IBM_ASM=m +CONFIG_IBM_BSR=m +# CONFIG_IBM_EMAC_EMAC4 is not set +# CONFIG_IBM_EMAC_MAL_CLR_ICINTSTAT is not set +# CONFIG_IBM_EMAC_MAL_COMMON_ERR is not set +# CONFIG_IBM_EMAC_NO_FLOW_CTRL is not set +# CONFIG_IBM_EMAC_RGMII is not set +# CONFIG_IBM_EMAC_TAH is not set +# CONFIG_IBM_EMAC_ZMII is not set +CONFIG_IBM_RTL=m +CONFIG_ICPLUS_PHY=m +CONFIG_ICS932S401=m +CONFIG_ICST=y +# CONFIG_IDE is not set +CONFIG_IDEAPAD_LAPTOP=m +CONFIG_IDMA64=m +CONFIG_IE6XX_WDT=m +CONFIG_IEEE802154=m +CONFIG_IEEE802154_6LOWPAN=m +CONFIG_IEEE802154_AT86RF230=m +CONFIG_IEEE802154_ATUSB=m +CONFIG_IEEE802154_CC2520=m +CONFIG_IEEE802154_DRIVERS=m +CONFIG_IEEE802154_FAKELB=m +CONFIG_IEEE802154_MRF24J40=m +CONFIG_IEEE802154_SOCKET=m +CONFIG_IFB=m +CONFIG_IGB=m +CONFIG_IGBVF=m +CONFIG_IGB_DCA=y +CONFIG_IGB_HWMON=y +CONFIG_IIO=m +CONFIG_IIO_ADIS_LIB=m +CONFIG_IIO_ADIS_LIB_BUFFER=y +CONFIG_IIO_BUFFER=y +CONFIG_IIO_BUFFER_CB=y +CONFIG_IIO_CONSUMERS_PER_TRIGGER=2 +CONFIG_IIO_INTERRUPT_TRIGGER=m +CONFIG_IIO_KFIFO_BUF=m +CONFIG_IIO_PERIODIC_RTC_TRIGGER=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_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_SYSFS_TRIGGER=m +CONFIG_IIO_TRIGGER=y +CONFIG_IIO_TRIGGERED_BUFFER=m +# CONFIG_IKCONFIG is not set +CONFIG_IMA_APPRAISE=y +CONFIG_IMA_DEFAULT_HASH="sha1" +CONFIG_IMA_DEFAULT_HASH_SHA1=y +# CONFIG_IMA_DEFAULT_HASH_SHA256 is not set +# CONFIG_IMA_DEFAULT_HASH_SHA512 is not set +# CONFIG_IMA_DEFAULT_HASH_WP512 is not set +CONFIG_IMA_DEFAULT_TEMPLATE="ima-ng" +# CONFIG_IMA_LOAD_X509 is not set +CONFIG_IMA_LSM_RULES=y +CONFIG_IMA_MEASURE_PCR_IDX=10 +CONFIG_IMA_NG_TEMPLATE=y +# CONFIG_IMA_SIG_TEMPLATE is not set +# CONFIG_IMA_TEMPLATE is not set +CONFIG_IMA_TRUSTED_KEYRING=y +CONFIG_IMX2_WDT=m +CONFIG_IMX_DMA=m +CONFIG_IMX_IPUV3_CORE=m +CONFIG_IMX_SDMA=m +CONFIG_IMX_THERMAL=m +CONFIG_IMX_WEIM=y +CONFIG_INET=y +CONFIG_INET6_AH=m +CONFIG_INET6_ESP=m +CONFIG_INET6_IPCOMP=m +CONFIG_INET6_TUNNEL=m +CONFIG_INET6_XFRM_MODE_BEET=m +CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION=m +CONFIG_INET6_XFRM_MODE_TRANSPORT=m +CONFIG_INET6_XFRM_MODE_TUNNEL=m +CONFIG_INET6_XFRM_TUNNEL=m +CONFIG_INET_AH=m +CONFIG_INET_DCCP_DIAG=m +CONFIG_INET_DIAG=m +CONFIG_INET_ESP=m +CONFIG_INET_IPCOMP=m +CONFIG_INET_LRO=y +CONFIG_INET_TCP_DIAG=m +CONFIG_INET_TUNNEL=m +CONFIG_INET_UDP_DIAG=m +CONFIG_INET_XFRM_MODE_BEET=m +CONFIG_INET_XFRM_MODE_TRANSPORT=m +CONFIG_INET_XFRM_MODE_TUNNEL=m +CONFIG_INET_XFRM_TUNNEL=m +CONFIG_INFINIBAND=m +CONFIG_INFINIBAND_ADDR_TRANS=y +CONFIG_INFINIBAND_AMSO1100=m +# CONFIG_INFINIBAND_AMSO1100_DEBUG is not set +CONFIG_INFINIBAND_CXGB3=m +# CONFIG_INFINIBAND_CXGB3_DEBUG is not set +CONFIG_INFINIBAND_CXGB4=m +CONFIG_INFINIBAND_EHCA=m +CONFIG_INFINIBAND_IPATH=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_NES=m +# CONFIG_INFINIBAND_NES_DEBUG is not set +CONFIG_INFINIBAND_OCRDMA=m +CONFIG_INFINIBAND_ON_DEMAND_PAGING=y +CONFIG_INFINIBAND_QIB=m +CONFIG_INFINIBAND_QIB_DCA=y +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_INFTL=m +CONFIG_INITRAMFS_SOURCE="" +CONFIG_INIT_ENV_ARG_LIMIT=32 +CONFIG_INLINE_READ_UNLOCK=y +CONFIG_INLINE_READ_UNLOCK_IRQ=y +CONFIG_INLINE_SPIN_UNLOCK_IRQ=y +CONFIG_INLINE_WRITE_UNLOCK=y +CONFIG_INLINE_WRITE_UNLOCK_IRQ=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_ADBHID=y +CONFIG_INPUT_ADXL34X=m +CONFIG_INPUT_ADXL34X_I2C=m +CONFIG_INPUT_ADXL34X_SPI=m +CONFIG_INPUT_APANEL=m +CONFIG_INPUT_APMPOWER=m +CONFIG_INPUT_ARIZONA_HAPTICS=m +CONFIG_INPUT_ATI_REMOTE2=m +CONFIG_INPUT_ATLAS_BTNS=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_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_EVBUG=m +CONFIG_INPUT_EVDEV=y +CONFIG_INPUT_FF_MEMLESS=m +CONFIG_INPUT_GP2A=m +CONFIG_INPUT_GPIO_BEEPER=m +CONFIG_INPUT_GPIO_ROTARY_ENCODER=m +CONFIG_INPUT_GPIO_TILT_POLLED=m +CONFIG_INPUT_IDEAPAD_SLIDEBAR=m +CONFIG_INPUT_IMS_PCU=m +CONFIG_INPUT_JOYDEV=m +CONFIG_INPUT_JOYSTICK=y +CONFIG_INPUT_KEYBOARD=y +CONFIG_INPUT_KEYSPAN_REMOTE=m +CONFIG_INPUT_KXTJ9=m +# CONFIG_INPUT_KXTJ9_POLLED_MODE is not set +CONFIG_INPUT_LEDS=m +CONFIG_INPUT_MATRIXKMAP=m +CONFIG_INPUT_MAX77693_HAPTIC=m +CONFIG_INPUT_MAX77843_HAPTIC=m +CONFIG_INPUT_MAX8925_ONKEY=m +CONFIG_INPUT_MAX8997_HAPTIC=m +CONFIG_INPUT_MC13783_PWRBUTTON=m +CONFIG_INPUT_MISC=y +CONFIG_INPUT_MMA8450=m +CONFIG_INPUT_MOUSE=y +CONFIG_INPUT_MOUSEDEV=y +CONFIG_INPUT_MOUSEDEV_PSAUX=y +CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 +CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 +CONFIG_INPUT_MPU3050=m +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_POLLDEV=m +CONFIG_INPUT_POWERMATE=m +CONFIG_INPUT_PWM_BEEPER=m +CONFIG_INPUT_REGULATOR_HAPTIC=m +CONFIG_INPUT_RETU_PWRBUTTON=m +CONFIG_INPUT_SOC_BUTTON_ARRAY=m +CONFIG_INPUT_SPARSEKMAP=m +CONFIG_INPUT_TABLET=y +CONFIG_INPUT_TOUCHSCREEN=y +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_WISTRON_BTNS=m +CONFIG_INPUT_WM831X_ON=m +CONFIG_INPUT_XEN_KBDDEV_FRONTEND=m +CONFIG_INPUT_YEALINK=m +CONFIG_INSTRUCTION_DECODER=y +CONFIG_INT340X_THERMAL=m +CONFIG_INTEGRITY=y +CONFIG_INTEGRITY_ASYMMETRIC_KEYS=y +CONFIG_INTEGRITY_AUDIT=y +CONFIG_INTEGRITY_SIGNATURE=y +CONFIG_INTEL_GTT=y +CONFIG_INTEL_IDLE=y +CONFIG_INTEL_IOATDMA=m +CONFIG_INTEL_IOMMU=y +# CONFIG_INTEL_IOMMU_DEFAULT_ON is not set +CONFIG_INTEL_IOMMU_FLOPPY_WA=y +CONFIG_INTEL_IPS=m +CONFIG_INTEL_MEI=m +CONFIG_INTEL_MEI_ME=m +CONFIG_INTEL_MEI_TXE=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_MID_PTI=m +CONFIG_INTEL_MID_WATCHDOG=m +CONFIG_INTEL_OAKTRAIL=m +CONFIG_INTEL_PMC_IPC=m +CONFIG_INTEL_POWERCLAMP=m +CONFIG_INTEL_RAPL=m +CONFIG_INTEL_RST=m +CONFIG_INTEL_SCU_IPC=y +CONFIG_INTEL_SCU_IPC_UTIL=m +CONFIG_INTEL_SCU_WATCHDOG=y +CONFIG_INTEL_SMARTCONNECT=m +CONFIG_INTEL_SOC_DTS_IOSF_CORE=m +CONFIG_INTEL_SOC_DTS_THERMAL=m +CONFIG_INTEL_SOC_PMIC=y +CONFIG_INTEL_TXT=y +CONFIG_INTERVAL_TREE=y +CONFIG_INTERVAL_TREE_TEST=m +CONFIG_INV_MPU6050_IIO=m +CONFIG_IOMMU_API=y +# CONFIG_IOMMU_DEBUG is not set +CONFIG_IOMMU_HELPER=y +CONFIG_IOMMU_IOVA=y +CONFIG_IOMMU_IO_PGTABLE=y +# CONFIG_IOMMU_IO_PGTABLE_LPAE_SELFTEST is not set +# CONFIG_IOMMU_STRESS is not set +CONFIG_IOMMU_SUPPORT=y +CONFIG_IOSCHED_CFQ=y +CONFIG_IOSCHED_DEADLINE=y +CONFIG_IOSCHED_NOOP=y +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_TYPE_0X80=0 +CONFIG_IO_DELAY_TYPE_0XED=1 +CONFIG_IO_DELAY_TYPE_NONE=3 +CONFIG_IO_DELAY_TYPE_UDELAY=2 +# CONFIG_IO_DELAY_UDELAY is not set +CONFIG_IO_EVENT_IRQ=y +CONFIG_IP1000=m +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_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_IPACK_BUS=m +CONFIG_IPC_NS=y +CONFIG_IPDDP=m +CONFIG_IPDDP_ENCAP=y +# CONFIG_IPIC is not set +CONFIG_IPMI_DEVICE_INTERFACE=m +CONFIG_IPMI_HANDLER=m +# CONFIG_IPMI_PANIC_EVENT is not set +CONFIG_IPMI_POWERNV=m +CONFIG_IPMI_POWEROFF=m +CONFIG_IPMI_SI=m +CONFIG_IPMI_SSIF=m +CONFIG_IPMI_WATCHDOG=m +CONFIG_IPMMU_VMSA=y +CONFIG_IPPP_FILTER=y +CONFIG_IPQ_GCC_806X=m +CONFIG_IPQ_LCC_806X=m +CONFIG_IPV6=y +CONFIG_IPV6_GRE=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_SIT=m +CONFIG_IPV6_SIT_6RD=y +CONFIG_IPV6_SUBTREES=y +CONFIG_IPV6_TUNNEL=m +CONFIG_IPV6_VTI=m +CONFIG_IPVLAN=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_IPX=m +# CONFIG_IPX_INTERN is not set +CONFIG_IP_ADVANCED_ROUTER=y +CONFIG_IP_DCCP=m +# CONFIG_IP_DCCP_CCID2_DEBUG is not set +# CONFIG_IP_DCCP_CCID3 is not set +# CONFIG_IP_DCCP_DEBUG is not set +CONFIG_IP_FIB_TRIE_STATS=y +CONFIG_IP_MROUTE=y +# CONFIG_IP_MROUTE_MULTIPLE_TABLES is not set +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=y +# CONFIG_IP_PNP_BOOTP is not set +CONFIG_IP_PNP_DHCP=y +# CONFIG_IP_PNP_RARP 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_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_NFCT=y +CONFIG_IP_VS_NQ=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_IRCOMM=m +CONFIG_IRDA=m +CONFIG_IRDA_CACHE_LAST_LSAP=y +# CONFIG_IRDA_DEBUG is not set +CONFIG_IRDA_FAST_RR=y +CONFIG_IRDA_ULTRA=y +CONFIG_IRLAN=m +CONFIG_IRNET=m +CONFIG_IRQCHIP=y +# CONFIG_IRQSOFF_TRACER is not set +CONFIG_IRQ_CROSSBAR=y +CONFIG_IRQ_DOMAIN=y +# CONFIG_IRQ_DOMAIN_DEBUG is not set +CONFIG_IRQ_DOMAIN_HIERARCHY=y +CONFIG_IRQ_FORCED_THREADING=y +CONFIG_IRQ_REMAP=y +# CONFIG_IRQ_TIME_ACCOUNTING is not set +CONFIG_IRQ_WORK=y +CONFIG_IRTTY_SIR=m +CONFIG_IR_ENE=m +CONFIG_IR_FINTEK=m +CONFIG_IR_GPIO_CIR=m +CONFIG_IR_HIX5HD2=m +CONFIG_IR_IGORPLUGUSB=m +CONFIG_IR_IGUANA=m +CONFIG_IR_IMON=m +CONFIG_IR_ITE_CIR=m +CONFIG_IR_JVC_DECODER=m +CONFIG_IR_LIRC_CODEC=m +CONFIG_IR_MCEUSB=m +CONFIG_IR_MCE_KBD_DECODER=m +CONFIG_IR_MESON=m +CONFIG_IR_NEC_DECODER=m +CONFIG_IR_NUVOTON=m +CONFIG_IR_RC5_DECODER=m +CONFIG_IR_RC6_DECODER=m +CONFIG_IR_REDRAT3=m +CONFIG_IR_SANYO_DECODER=m +CONFIG_IR_SHARP_DECODER=m +CONFIG_IR_SONY_DECODER=m +CONFIG_IR_STREAMZAP=m +CONFIG_IR_TTUSBIR=m +CONFIG_IR_WINBOND_CIR=m +CONFIG_IR_XMP_DECODER=m +CONFIG_ISAPNP=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_TCP=m +CONFIG_ISDN=y +CONFIG_ISDN_AUDIO=y +CONFIG_ISDN_CAPI=m +CONFIG_ISDN_CAPI_CAPI20=m +CONFIG_ISDN_CAPI_CAPIDRV=m +# CONFIG_ISDN_CAPI_CAPIDRV_VERBOSE is not set +CONFIG_ISDN_CAPI_MIDDLEWARE=y +CONFIG_ISDN_DIVAS=m +CONFIG_ISDN_DIVAS_BRIPCI=y +CONFIG_ISDN_DIVAS_DIVACAPI=m +CONFIG_ISDN_DIVAS_MAINT=m +CONFIG_ISDN_DIVAS_PRIPCI=y +CONFIG_ISDN_DIVAS_USERIDI=m +CONFIG_ISDN_DIVERSION=m +CONFIG_ISDN_DRV_ACT2000=m +CONFIG_ISDN_DRV_AVMB1_AVM_CS=m +CONFIG_ISDN_DRV_AVMB1_B1ISA=m +CONFIG_ISDN_DRV_AVMB1_B1PCI=m +CONFIG_ISDN_DRV_AVMB1_B1PCIV4=y +CONFIG_ISDN_DRV_AVMB1_B1PCMCIA=m +CONFIG_ISDN_DRV_AVMB1_C4=m +CONFIG_ISDN_DRV_AVMB1_T1ISA=m +CONFIG_ISDN_DRV_AVMB1_T1PCI=m +CONFIG_ISDN_DRV_GIGASET=m +CONFIG_ISDN_DRV_HISAX=m +CONFIG_ISDN_DRV_ICN=m +CONFIG_ISDN_DRV_PCBIT=m +CONFIG_ISDN_DRV_SC=m +CONFIG_ISDN_HDLC=m +CONFIG_ISDN_I4L=m +CONFIG_ISDN_MPP=y +CONFIG_ISDN_PPP=y +CONFIG_ISDN_PPP_BSDCOMP=m +CONFIG_ISDN_PPP_VJ=y +CONFIG_ISDN_TTY_FAX=y +CONFIG_ISDN_X25=y +CONFIG_ISI=m +CONFIG_ISL29003=m +CONFIG_ISL29020=m +CONFIG_ISL29125=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_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_IWLWIFI_UAPSD is not set +CONFIG_IWMMXT=y +CONFIG_IXGB=m +CONFIG_IXGBE=m +CONFIG_IXGBEVF=m +CONFIG_IXGBE_DCA=y +CONFIG_IXGBE_DCB=y +CONFIG_IXGBE_HWMON=y +CONFIG_IXGBE_VXLAN=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_FS=m +CONFIG_JFS_POSIX_ACL=y +CONFIG_JFS_SECURITY=y +CONFIG_JFS_STATISTICS=y +CONFIG_JME=m +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_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=y +CONFIG_JOYSTICK_IFORCE_USB=y +CONFIG_JOYSTICK_INTERACT=m +CONFIG_JOYSTICK_JOYDUMP=m +CONFIG_JOYSTICK_MAGELLAN=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_K3_DMA=m +CONFIG_KALLSYMS=y +CONFIG_KALLSYMS_ALL=y +CONFIG_KARMA_PARTITION=y +# CONFIG_KASAN 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_GZIP=y +# CONFIG_KERNEL_LZ4 is not set +# CONFIG_KERNEL_LZMA is not set +# CONFIG_KERNEL_LZO is not set +CONFIG_KERNEL_MODE_NEON=y +# CONFIG_KERNEL_XZ is not set +CONFIG_KERNFS=y +CONFIG_KEXEC=y +CONFIG_KEXEC_FILE=y +CONFIG_KEXEC_JUMP=y +CONFIG_KEXEC_VERIFY_SIG=y +CONFIG_KEYBOARD_ADP5520=m +CONFIG_KEYBOARD_ADP5588=m +CONFIG_KEYBOARD_ADP5589=m +CONFIG_KEYBOARD_ATKBD=y +CONFIG_KEYBOARD_BCM=m +CONFIG_KEYBOARD_CAP11XX=m +CONFIG_KEYBOARD_CROS_EC=m +CONFIG_KEYBOARD_GPIO=m +CONFIG_KEYBOARD_GPIO_POLLED=m +CONFIG_KEYBOARD_IMX=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_NEWTON=m +CONFIG_KEYBOARD_NVEC=m +CONFIG_KEYBOARD_OMAP4=m +CONFIG_KEYBOARD_OPENCORES=m +CONFIG_KEYBOARD_PMIC8XXX=m +CONFIG_KEYBOARD_QT1070=m +CONFIG_KEYBOARD_QT2160=m +CONFIG_KEYBOARD_SAMSUNG=m +CONFIG_KEYBOARD_SH_KEYSC=m +CONFIG_KEYBOARD_STMPE=m +CONFIG_KEYBOARD_STOWAWAY=m +CONFIG_KEYBOARD_SUNKBD=m +CONFIG_KEYBOARD_TC3589X=m +CONFIG_KEYBOARD_TCA6416=m +CONFIG_KEYBOARD_TCA8418=m +CONFIG_KEYBOARD_TEGRA=m +CONFIG_KEYBOARD_TWL4030=m +CONFIG_KEYBOARD_XTKBD=m +CONFIG_KEYS=y +CONFIG_KEYS_COMPAT=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_KINGSUN_DONGLE=m +CONFIG_KMX61=m +CONFIG_KPROBES=y +CONFIG_KPROBES_ON_FTRACE=y +# CONFIG_KPROBES_SANITY_TEST is not set +CONFIG_KPROBE_EVENT=y +CONFIG_KRETPROBES=y +CONFIG_KS0108=m +CONFIG_KS0108_DELAY=2 +CONFIG_KS0108_PORT=0x378 +CONFIG_KS8842=m +CONFIG_KS8851=m +CONFIG_KS8851_MLL=m +CONFIG_KS959_DONGLE=m +CONFIG_KSDAZZLE_DONGLE=m +# CONFIG_KSI8560 is not set +CONFIG_KSM=y +CONFIG_KSZ884X_PCI=m +CONFIG_KUSER_HELPERS=y +CONFIG_KVM_AMD=m +CONFIG_KVM_APIC_ARCHITECTURE=y +CONFIG_KVM_ARM_HOST=y +CONFIG_KVM_ASYNC_PF=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_BOOKE_HV=y +CONFIG_KVM_COMPAT=y +CONFIG_KVM_DEBUG_FS=y +CONFIG_KVM_DEVICE_ASSIGNMENT=y +CONFIG_KVM_E500MC=y +# CONFIG_KVM_EXIT_TIMING is not set +CONFIG_KVM_GENERIC_DIRTYLOG_READ_PROTECT=y +CONFIG_KVM_GUEST=y +CONFIG_KVM_INTEL=m +CONFIG_KVM_MMIO=y +# CONFIG_KVM_MMU_AUDIT is not set +CONFIG_KVM_MPIC=y +CONFIG_KVM_VFIO=y +CONFIG_KVM_XICS=y +CONFIG_KXCJK1013=m +CONFIG_KXSD9=m +CONFIG_L2TP=m +CONFIG_L2TP_DEBUGFS=m +CONFIG_L2TP_ETH=m +CONFIG_L2TP_IP=m +CONFIG_L2TP_V3=y +CONFIG_LANCE=m +CONFIG_LANMEDIA=m +CONFIG_LAPB=m +CONFIG_LAPBETHER=m +# CONFIG_LATENCYTOP is not set +CONFIG_LATTICE_ECP3_CONFIG=m +CONFIG_LBDAF=y +CONFIG_LCD_AMS369FG06=m +CONFIG_LCD_CLASS_DEVICE=m +CONFIG_LCD_HX8357=m +CONFIG_LCD_ILI922X=m +CONFIG_LCD_ILI9320=m +CONFIG_LCD_L4F00242T03=m +CONFIG_LCD_LD9040=m +CONFIG_LCD_LMS283GF05=m +CONFIG_LCD_LMS501KF03=m +CONFIG_LCD_LTV350QV=m +CONFIG_LCD_PLATFORM=m +CONFIG_LCD_S6E63M0=m +CONFIG_LCD_TDO24M=m +CONFIG_LCD_VGG2432A4=m +# CONFIG_LDM_DEBUG is not set +CONFIG_LDM_PARTITION=y +CONFIG_LEDS_88PM860X=m +CONFIG_LEDS_AAT1290=m +CONFIG_LEDS_ADP5520=m +CONFIG_LEDS_ASIC3=y +CONFIG_LEDS_BCM6328=m +CONFIG_LEDS_BCM6358=m +CONFIG_LEDS_BD2802=m +CONFIG_LEDS_BLINKM=m +CONFIG_LEDS_CLASS=y +CONFIG_LEDS_CLASS_FLASH=m +CONFIG_LEDS_CLEVO_MAIL=m +CONFIG_LEDS_DA903X=m +CONFIG_LEDS_DA9052=m +CONFIG_LEDS_DAC124S085=m +CONFIG_LEDS_DELL_NETBOOKS=m +CONFIG_LEDS_GPIO=m +CONFIG_LEDS_INTEL_SS4200=m +CONFIG_LEDS_KTD2692=m +CONFIG_LEDS_LM3530=m +CONFIG_LEDS_LM3533=m +CONFIG_LEDS_LM355x=m +CONFIG_LEDS_LM3642=m +CONFIG_LEDS_LP3944=m +# CONFIG_LEDS_LP5521 is not set +# CONFIG_LEDS_LP5523 is not set +# CONFIG_LEDS_LP5562 is not set +# CONFIG_LEDS_LP8501 is not set +CONFIG_LEDS_LP8788=m +CONFIG_LEDS_LP8860=m +CONFIG_LEDS_LT3593=m +CONFIG_LEDS_MAX77693=m +CONFIG_LEDS_MAX8997=m +CONFIG_LEDS_MC13783=m +CONFIG_LEDS_MENF21BMC=m +CONFIG_LEDS_NET48XX=m +CONFIG_LEDS_OT200=m +CONFIG_LEDS_PCA9532=m +CONFIG_LEDS_PCA9532_GPIO=y +CONFIG_LEDS_PCA955X=m +CONFIG_LEDS_PCA963X=m +CONFIG_LEDS_PM8941_WLED=m +CONFIG_LEDS_POWERNV=m +CONFIG_LEDS_PWM=m +CONFIG_LEDS_REGULATOR=m +CONFIG_LEDS_SYSCON=y +CONFIG_LEDS_TCA6507=m +CONFIG_LEDS_TLC591XX=m +CONFIG_LEDS_TRIGGERS=y +CONFIG_LEDS_TRIGGER_BACKLIGHT=m +CONFIG_LEDS_TRIGGER_CAMERA=m +CONFIG_LEDS_TRIGGER_CPU=y +CONFIG_LEDS_TRIGGER_DEFAULT_ON=m +CONFIG_LEDS_TRIGGER_GPIO=m +CONFIG_LEDS_TRIGGER_ONESHOT=m +CONFIG_LEDS_TRIGGER_TIMER=m +CONFIG_LEDS_TRIGGER_TRANSIENT=m +CONFIG_LEDS_WM831X_STATUS=m +CONFIG_LEDS_WM8350=m +CONFIG_LEDS_WRAP=m +CONFIG_LEGACY_PTYS=y +CONFIG_LEGACY_PTY_COUNT=0 +# CONFIG_LGUEST is not set +# CONFIG_LGUEST_GUEST is not set +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_LIBNVDIMM=y +CONFIG_LIQUIDIO=m +CONFIG_LIRC=m +CONFIG_LIRC_BT829=m +CONFIG_LIRC_IMON=m +CONFIG_LIRC_PARALLEL=m +CONFIG_LIRC_SASEM=m +CONFIG_LIRC_SERIAL=m +CONFIG_LIRC_SERIAL_TRANSMITTER=y +CONFIG_LIRC_SIR=m +CONFIG_LIRC_STAGING=y +CONFIG_LIRC_ZILOG=m +CONFIG_LIS3L02DQ=m +CONFIG_LITELINK_DONGLE=m +CONFIG_LIVEPATCH=y +# CONFIG_LKDTM is not set +CONFIG_LLC=m +CONFIG_LLC2=m +CONFIG_LNET=m +CONFIG_LNET_MAX_PAYLOAD=1048576 +CONFIG_LNET_SELFTEST=m +CONFIG_LNET_XPRT_IB=m +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_SPIN_ON_OWNER=y +# CONFIG_LOCK_STAT is not set +CONFIG_LOCK_TORTURE_TEST=m +# CONFIG_LOGFS 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_LOWMEM_CAM_NUM=3 +CONFIG_LOWMEM_SIZE=0x30000000 +CONFIG_LP8788_ADC=m +CONFIG_LPC_ICH=m +CONFIG_LPC_SCH=m +# CONFIG_LP_CONSOLE is not set +CONFIG_LRU_CACHE=m +CONFIG_LSI_ET1011C_PHY=m +CONFIG_LSM_MMAP_MIN_ADDR=0 +CONFIG_LTE_GDM724X=m +CONFIG_LTPC=m +CONFIG_LTR501=m +# CONFIG_LUSTRE_DEBUG_EXPENSIVE_CHECK is not set +CONFIG_LUSTRE_FS=m +CONFIG_LUSTRE_LLITE_LLOOP=m +CONFIG_LUSTRE_OBD_MAX_IOCTL_BUFFER=8192 +CONFIG_LUSTRE_TRANSLATE_ERRNOS=y +CONFIG_LXT_PHY=m +CONFIG_LZ4HC_COMPRESS=m +CONFIG_LZ4_COMPRESS=m +CONFIG_LZ4_DECOMPRESS=y +CONFIG_LZO_COMPRESS=y +CONFIG_LZO_DECOMPRESS=y +# CONFIG_M486 is not set +# CONFIG_M586 is not set +# CONFIG_M586MMX is not set +# CONFIG_M586TSC is not set +CONFIG_M62332=m +CONFIG_M686=y +CONFIG_MA600_DONGLE=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_RC_MINSTREL_HT=y +CONFIG_MAC80211_RC_MINSTREL_VHT=y +CONFIG_MAC80211_STA_HASH_MAX_SIZE=0 +CONFIG_MAC802154=m +CONFIG_MACB=m +CONFIG_MACE=m +# CONFIG_MACE_AAUI_PORT is not set +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_BERLIN_BG2=y +CONFIG_MACH_BERLIN_BG2CD=y +CONFIG_MACH_BERLIN_BG2Q=y +CONFIG_MACH_DOVE=y +CONFIG_MACH_MARZEN=y +CONFIG_MACH_MESON6=y +CONFIG_MACH_MESON8=y +CONFIG_MACH_MT6589=y +CONFIG_MACH_MT6592=y +CONFIG_MACH_MT8127=y +CONFIG_MACH_MT8135=y +CONFIG_MACH_MVEBU_ANY=y +CONFIG_MACH_MVEBU_V7=y +# CONFIG_MACH_NOKIA_RX51 is not set +# CONFIG_MACH_OMAP3517EVM is not set +CONFIG_MACH_OMAP3530_LV_SOM=y +CONFIG_MACH_OMAP3_PANDORA=y +CONFIG_MACH_OMAP3_TORPEDO=y +CONFIG_MACH_OMAP_GENERIC=y +CONFIG_MACH_OMAP_LDP=y +CONFIG_MACINTOSH_DRIVERS=y +CONFIG_MACVLAN=m +CONFIG_MACVTAP=m +CONFIG_MAC_EMUMOUSEBTN=m +CONFIG_MAC_FLOPPY=m +CONFIG_MAC_PARTITION=y +CONFIG_MAG3110=m +CONFIG_MAGIC_SYSRQ=y +CONFIG_MAGIC_SYSRQ_DEFAULT_ENABLE=0x1 +CONFIG_MAILBOX=y +CONFIG_MANTIS_CORE=m +CONFIG_MARVELL_PHY=m +# CONFIG_MATH_EMULATION_FULL is not set +CONFIG_MATH_EMULATION_HW_UNIMPLEMENTED=y +# CONFIG_MATOM is not set +CONFIG_MAX1027=m +CONFIG_MAX1363=m +CONFIG_MAX517=m +CONFIG_MAX5821=m +CONFIG_MAX63XX_WATCHDOG=m +CONFIG_MAX8925_POWER=m +# CONFIG_MAXSMP is not set +CONFIG_MAX_RAW_DEVS=256 +CONFIG_MCB=m +CONFIG_MCB_PCI=m +# CONFIG_MCORE2 is not set +CONFIG_MCP2120_DONGLE=m +CONFIG_MCP320X=m +CONFIG_MCP3422=m +CONFIG_MCP4725=m +CONFIG_MCP4922=m +CONFIG_MCPM=y +CONFIG_MCPM_QUAD_CLUSTER=y +# CONFIG_MCRUSOE is not set +CONFIG_MCS_FIR=m +# CONFIG_MCYRIXIII is not set +CONFIG_MD=y +CONFIG_MDA_CONSOLE=m +CONFIG_MDIO=m +CONFIG_MDIO_BCM_UNIMAC=m +CONFIG_MDIO_BITBANG=m +CONFIG_MDIO_BUS_MUX=m +CONFIG_MDIO_BUS_MUX_GPIO=m +CONFIG_MDIO_BUS_MUX_MMIOREG=m +CONFIG_MDIO_GPIO=m +CONFIG_MDIO_OCTEON=m +CONFIG_MD_AUTODETECT=y +CONFIG_MD_CLUSTER=m +CONFIG_MD_FAULTY=m +CONFIG_MD_LINEAR=m +CONFIG_MD_MULTIPATH=m +CONFIG_MD_RAID0=m +CONFIG_MD_RAID1=m +CONFIG_MD_RAID10=m +CONFIG_MD_RAID456=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_COMMON_OPTIONS=y +CONFIG_MEDIA_CONTROLLER=y +CONFIG_MEDIA_DIGITAL_TV_SUPPORT=y +CONFIG_MEDIA_PCI_SUPPORT=y +CONFIG_MEDIA_RADIO_SUPPORT=y +CONFIG_MEDIA_RC_SUPPORT=y +CONFIG_MEDIA_SDR_SUPPORT=y +CONFIG_MEDIA_SUBDRV_AUTOSELECT=y +CONFIG_MEDIA_SUPPORT=m +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_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_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_MEFFICEON is not set +CONFIG_MEGARAID_LEGACY=m +CONFIG_MEGARAID_MAILBOX=m +CONFIG_MEGARAID_MM=m +CONFIG_MEGARAID_NEWGEN=y +CONFIG_MEGARAID_SAS=m +# CONFIG_MELAN is not set +CONFIG_MEMCG=y +CONFIG_MEMCG_KMEM=y +CONFIG_MEMCG_SWAP=y +# CONFIG_MEMCG_SWAP_ENABLED is not set +CONFIG_MEMORY=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_MEMSTICK=m +# 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_MEM_SOFT_DIRTY=y +CONFIG_MENF21BMC_WATCHDOG=m +CONFIG_MEN_A21_WDT=m +CONFIG_MEN_Z188_ADC=m +CONFIG_MESON6_TIMER=y +CONFIG_MESON_WATCHDOG=m +CONFIG_MESSAGE_LOGLEVEL_DEFAULT=4 +CONFIG_MFD_88PM800=m +CONFIG_MFD_88PM805=m +CONFIG_MFD_88PM860X=y +CONFIG_MFD_AAT2870_CORE=y +CONFIG_MFD_ARIZONA=y +CONFIG_MFD_ARIZONA_I2C=m +CONFIG_MFD_ARIZONA_SPI=m +CONFIG_MFD_AS3711=y +CONFIG_MFD_AS3722=y +CONFIG_MFD_ASIC3=y +CONFIG_MFD_ATMEL_HLCDC=m +CONFIG_MFD_AXP20X=y +CONFIG_MFD_BCM590XX=m +CONFIG_MFD_CORE=y +CONFIG_MFD_CROS_EC=m +CONFIG_MFD_CROS_EC_I2C=m +CONFIG_MFD_CROS_EC_SPI=m +CONFIG_MFD_CS5535=m +CONFIG_MFD_DA9052_I2C=y +CONFIG_MFD_DA9052_SPI=y +CONFIG_MFD_DA9055=y +CONFIG_MFD_DA9063=y +CONFIG_MFD_DA9150=m +CONFIG_MFD_DLN2=m +CONFIG_MFD_HI6421_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_QUARK_I2C_GPIO=m +CONFIG_MFD_JANZ_CMODIO=m +CONFIG_MFD_KEMPLD=m +CONFIG_MFD_LM3533=m +CONFIG_MFD_LP3943=m +CONFIG_MFD_LP8788=y +CONFIG_MFD_MAX14577=y +CONFIG_MFD_MAX77686=y +CONFIG_MFD_MAX77693=y +CONFIG_MFD_MAX77843=y +CONFIG_MFD_MAX8907=m +CONFIG_MFD_MAX8925=y +CONFIG_MFD_MAX8997=y +CONFIG_MFD_MAX8998=y +CONFIG_MFD_MC13XXX=m +CONFIG_MFD_MC13XXX_I2C=m +CONFIG_MFD_MC13XXX_SPI=m +CONFIG_MFD_MENF21BMC=m +CONFIG_MFD_MT6397=m +CONFIG_MFD_NVEC=m +CONFIG_MFD_OMAP_USB_HOST=y +CONFIG_MFD_PALMAS=y +CONFIG_MFD_PCF50633=m +CONFIG_MFD_PM8921_CORE=m +CONFIG_MFD_PM8XXX=m +CONFIG_MFD_QCOM_RPM=m +CONFIG_MFD_RC5T583=y +CONFIG_MFD_RDC321X=m +CONFIG_MFD_RETU=m +CONFIG_MFD_RK808=m +CONFIG_MFD_RN5T618=m +CONFIG_MFD_RT5033=m +CONFIG_MFD_RTSX_PCI=m +CONFIG_MFD_RTSX_USB=m +CONFIG_MFD_SEC_CORE=y +CONFIG_MFD_SI476X_CORE=m +CONFIG_MFD_SKY81452=m +CONFIG_MFD_SM501_GPIO=y +CONFIG_MFD_SMSC=y +CONFIG_MFD_SPMI_PMIC=m +CONFIG_MFD_STMPE=y +CONFIG_MFD_SYSCON=y +CONFIG_MFD_T7L66XB=y +CONFIG_MFD_TC3589X=y +CONFIG_MFD_TC6387XB=y +CONFIG_MFD_TC6393XB=y +CONFIG_MFD_TIMBERDALE=m +CONFIG_MFD_TI_AM335X_TSCADC=m +CONFIG_MFD_TPS65090=y +CONFIG_MFD_TPS65217=m +CONFIG_MFD_TPS65218=m +CONFIG_MFD_TPS6586X=y +CONFIG_MFD_TPS65910=y +CONFIG_MFD_TPS65912=y +CONFIG_MFD_TPS65912_I2C=y +CONFIG_MFD_TPS65912_SPI=y +CONFIG_MFD_TPS80031=y +CONFIG_MFD_TWL4030_AUDIO=y +CONFIG_MFD_VEXPRESS_SYSREG=y +CONFIG_MFD_VIPERBOARD=m +CONFIG_MFD_VX855=m +CONFIG_MFD_WL1273_CORE=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_WM8994=m +CONFIG_MFD_WM8997=y +# CONFIG_MGEODEGX1 is not set +# CONFIG_MGEODE_LX is not set +CONFIG_MG_DISK=m +CONFIG_MG_DISK_RES=0 +CONFIG_MICREL_KS8995MA=m +CONFIG_MICREL_PHY=m +CONFIG_MICROCODE=y +CONFIG_MICROCODE_AMD=y +CONFIG_MICROCODE_AMD_EARLY=y +CONFIG_MICROCODE_EARLY=y +CONFIG_MICROCODE_INTEL=y +CONFIG_MICROCODE_INTEL_EARLY=y +CONFIG_MICROCODE_OLD_INTERFACE=y +CONFIG_MIGHT_HAVE_CACHE_L2X0=y +CONFIG_MIGHT_HAVE_PCI=y +CONFIG_MIGRATION=y +CONFIG_MINIX_FS=m +CONFIG_MINIX_SUBPARTITION=y +CONFIG_MISC_FILESYSTEMS=y +CONFIG_MISDN=m +CONFIG_MISDN_AVMFRITZ=m +CONFIG_MISDN_DSP=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_MIXCOMWD=m +# CONFIG_MK6 is not set +# CONFIG_MK7 is not set +# CONFIG_MK8 is not set +CONFIG_MKISS=m +CONFIG_MLX4_CORE=m +CONFIG_MLX4_DEBUG=y +CONFIG_MLX4_EN=m +CONFIG_MLX4_EN_DCB=y +CONFIG_MLX4_EN_VXLAN=y +CONFIG_MLX4_INFINIBAND=m +CONFIG_MLX5_CORE=m +CONFIG_MLX5_CORE_EN=y +CONFIG_MLX5_INFINIBAND=m +CONFIG_MLX90614=m +CONFIG_MMA8452=m +CONFIG_MMA9551=m +CONFIG_MMA9551_CORE=m +CONFIG_MMA9553=m +CONFIG_MMC=y +CONFIG_MMC35240=m +CONFIG_MMC_ARMMMCI=y +CONFIG_MMC_BLOCK_BOUNCE=y +CONFIG_MMC_BLOCK_MINORS=8 +CONFIG_MMC_CB710=m +# CONFIG_MMC_CLKGATE is not set +# CONFIG_MMC_DEBUG is not set +CONFIG_MMC_DW=m +CONFIG_MMC_DW_EXYNOS=m +CONFIG_MMC_DW_IDMAC=y +CONFIG_MMC_DW_K3=m +CONFIG_MMC_DW_PCI=m +CONFIG_MMC_DW_PLTFM=m +CONFIG_MMC_MTK=m +CONFIG_MMC_MVSDIO=m +CONFIG_MMC_MXC=m +CONFIG_MMC_OMAP=m +CONFIG_MMC_OMAP_HS=y +CONFIG_MMC_QCOM_DML=m +CONFIG_MMC_REALTEK_PCI=m +CONFIG_MMC_REALTEK_USB=m +CONFIG_MMC_RICOH_MMC=y +CONFIG_MMC_SDHCI_ACPI=m +CONFIG_MMC_SDHCI_BIG_ENDIAN_32BIT_BYTE_SWAPPER=y +CONFIG_MMC_SDHCI_DOVE=m +CONFIG_MMC_SDHCI_ESDHC_IMX=y +CONFIG_MMC_SDHCI_F_SDH30=m +CONFIG_MMC_SDHCI_IO_ACCESSORS=y +CONFIG_MMC_SDHCI_MSM=m +CONFIG_MMC_SDHCI_OF_ARASAN=m +CONFIG_MMC_SDHCI_OF_ESDHC=m +CONFIG_MMC_SDHCI_OF_HLWD=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_TEGRA=m +CONFIG_MMC_SDHI=m +CONFIG_MMC_SDRICOH_CS=m +CONFIG_MMC_SH_MMCIF=m +CONFIG_MMC_SPI=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_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_MMU=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_COMPRESS is not set +# CONFIG_MODULE_FORCE_LOAD is not set +# CONFIG_MODULE_FORCE_UNLOAD is not set +CONFIG_MODULE_SIG=y +CONFIG_MODULE_SIG_ALL=y +# CONFIG_MODULE_SIG_FORCE is not set +CONFIG_MODULE_SIG_HASH="sha512" +# 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_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_INPORT is not set +CONFIG_MOUSE_LOGIBM=m +CONFIG_MOUSE_PC110PAD=m +CONFIG_MOUSE_PS2=m +CONFIG_MOUSE_PS2_ALPS=y +CONFIG_MOUSE_PS2_CYPRESS=y +CONFIG_MOUSE_PS2_ELANTECH=y +CONFIG_MOUSE_PS2_FOCALTECH=y +CONFIG_MOUSE_PS2_LIFEBOOK=y +CONFIG_MOUSE_PS2_LOGIPS2PP=y +CONFIG_MOUSE_PS2_SENTELIC=y +CONFIG_MOUSE_PS2_SYNAPTICS=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_MOVABLE_NODE=y +CONFIG_MOXA_INTELLIO=m +CONFIG_MOXA_SMARTIO=m +# CONFIG_MPC8536_DS is not set +# CONFIG_MPC8540_ADS is not set +# CONFIG_MPC8560_ADS is not set +# CONFIG_MPC85xx_CDS is not set +# CONFIG_MPC85xx_DS is not set +# CONFIG_MPC85xx_MDS is not set +# CONFIG_MPC85xx_RDB is not set +# CONFIG_MPENTIUM4 is not set +# CONFIG_MPENTIUMII is not set +# CONFIG_MPENTIUMIII is not set +# CONFIG_MPENTIUMM is not set +CONFIG_MPIC=y +CONFIG_MPIC_BROKEN_REGREAD=y +# CONFIG_MPIC_TIMER is not set +# CONFIG_MPIC_WEIRD is not set +CONFIG_MPILIB=y +CONFIG_MPL115=m +CONFIG_MPL3115=m +CONFIG_MPLS=y +CONFIG_MPLS_ROUTING=m +# CONFIG_MPSC is not set +CONFIG_MRP=m +CONFIG_MS5611=m +CONFIG_MS5611_I2C=m +CONFIG_MS5611_SPI=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_8960=m +CONFIG_MSM_GCC_8974=m +CONFIG_MSM_LCC_8960=m +CONFIG_MSM_MMCC_8960=m +CONFIG_MSM_MMCC_8974=m +CONFIG_MSPRO_BLOCK=m +CONFIG_MS_BLOCK=m +CONFIG_MT7601U=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_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_I4 is not set +# CONFIG_MTD_CFI_I8 is not set +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=m +CONFIG_MTD_ESB2ROM=m +CONFIG_MTD_GEN_PROBE=m +CONFIG_MTD_GPIO_ADDR=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_LATCH_ADDR=m +CONFIG_MTD_LPDDR=m +CONFIG_MTD_LPDDR2_NVM=m +CONFIG_MTD_M25P80=m +CONFIG_MTD_MAP_BANK_WIDTH_1=y +# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set +CONFIG_MTD_MAP_BANK_WIDTH_2=y +# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set +CONFIG_MTD_MAP_BANK_WIDTH_4=y +# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set +CONFIG_MTD_MTDRAM=m +CONFIG_MTD_NAND_BRCMNAND=m +CONFIG_MTD_NAND_CAFE=m +CONFIG_MTD_NAND_CS553X=m +CONFIG_MTD_NAND_DENALI=m +CONFIG_MTD_NAND_DENALI_DT=m +CONFIG_MTD_NAND_DENALI_PCI=m +CONFIG_MTD_NAND_DENALI_SCRATCH_REG_ADDR=0xFF108018 +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_DOCG4=m +CONFIG_MTD_NAND_ECC_BCH=y +# CONFIG_MTD_NAND_ECC_SMC is not set +CONFIG_MTD_NAND_FSL_ELBC=m +CONFIG_MTD_NAND_FSL_IFC=m +CONFIG_MTD_NAND_FSL_UPM=m +CONFIG_MTD_NAND_GPIO=m +CONFIG_MTD_NAND_GPMI_NAND=m +CONFIG_MTD_NAND_HISI504=m +CONFIG_MTD_NAND_MXC=m +CONFIG_MTD_NAND_NANDSIM=m +CONFIG_MTD_NAND_OMAP2=y +CONFIG_MTD_NAND_OMAP_BCH=y +CONFIG_MTD_NAND_ORION=m +CONFIG_MTD_NAND_PASEMI=m +CONFIG_MTD_NAND_PLATFORM=m +CONFIG_MTD_NAND_PXA3xx=m +CONFIG_MTD_NAND_RICOH=m +CONFIG_MTD_NAND_SH_FLCTL=m +CONFIG_MTD_NAND_TMIO=m +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_OF=m +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_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_SCx200_DOCFLASH=m +CONFIG_MTD_SLRAM=m +CONFIG_MTD_SM_COMMON=m +CONFIG_MTD_SPINAND_MT29F=m +CONFIG_MTD_SPINAND_ONDIEECC=y +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_PMIC_WRAP=m +CONFIG_MTK_TIMER=y +CONFIG_MTRR=y +CONFIG_MTRR_SANITIZER=y +CONFIG_MTRR_SANITIZER_ENABLE_DEFAULT=1 +CONFIG_MTRR_SANITIZER_SPARE_REG_NR_DEFAULT=1 +CONFIG_MULTIUSER=y +CONFIG_MULTI_IRQ_HANDLER=y +CONFIG_MUSB_PIO_ONLY=y +CONFIG_MUTEX_SPIN_ON_OWNER=y +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_MBUS=y +# CONFIG_MVIAC3_2 is not set +# CONFIG_MVIAC7 is not set +CONFIG_MVMDIO=m +# CONFIG_MVME2500 is not set +CONFIG_MVNETA=m +CONFIG_MVPP2=m +CONFIG_MV_XOR=y +CONFIG_MWAVE=m +CONFIG_MWIFIEX=m +CONFIG_MWIFIEX_PCIE=m +CONFIG_MWIFIEX_SDIO=m +CONFIG_MWIFIEX_USB=m +# CONFIG_MWINCHIP3D is not set +# CONFIG_MWINCHIPC6 is not set +CONFIG_MWL8K=m +CONFIG_MX3_IPU=y +CONFIG_MX3_IPU_IRQS=4 +CONFIG_MXC_TZIC=y +CONFIG_MXM_WMI=m +CONFIG_MXS_DMA=y +CONFIG_MYRI10GE=m +CONFIG_MYRI10GE_DCA=y +CONFIG_N2=m +CONFIG_NAMESPACES=y +CONFIG_NATIONAL_PHY=m +CONFIG_NATSEMI=m +CONFIG_NAU7802=m +CONFIG_NBPFAXI_DMA=m +CONFIG_NCPFS_EXTRAS=y +CONFIG_NCPFS_IOCTL_LOCKING=y +CONFIG_NCPFS_NFS_NS=y +CONFIG_NCPFS_NLS=y +CONFIG_NCPFS_OS2_NS=y +CONFIG_NCPFS_PACKET_SIGNING=y +# CONFIG_NCPFS_SMALLDOS is not set +CONFIG_NCPFS_STRONG=y +CONFIG_NCP_FS=m +CONFIG_ND_BLK=m +CONFIG_ND_BTT=m +CONFIG_NE2000=m +CONFIG_NE2K_PCI=m +CONFIG_NEED_MULTIPLE_NODES=y +CONFIG_NEED_NODE_MEMMAP_SIZE=y +CONFIG_NEED_PER_CPU_PAGE_FIRST_CHUNK=y +CONFIG_NEED_SG_DMA_LENGTH=y +CONFIG_NEON=y +CONFIG_NET=y +CONFIG_NET5501=y +CONFIG_NETCONSOLE=m +CONFIG_NETCONSOLE_DYNAMIC=y +CONFIG_NETDEVICES=y +CONFIG_NETFILTER=y +CONFIG_NETFILTER_ADVANCED=y +# CONFIG_NETFILTER_DEBUG is not set +CONFIG_NETFILTER_INGRESS=y +CONFIG_NETFILTER_NETLINK=m +CONFIG_NETFILTER_NETLINK_ACCT=m +CONFIG_NETFILTER_NETLINK_LOG=m +CONFIG_NETFILTER_NETLINK_QUEUE=m +CONFIG_NETFILTER_NETLINK_QUEUE_CT=y +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_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_NETLABEL=y +CONFIG_NETLINK_DIAG=m +CONFIG_NETLINK_MMAP=y +CONFIG_NETPOLL=y +CONFIG_NETROM=m +CONFIG_NETWORK_FILESYSTEMS=y +# CONFIG_NETWORK_PHY_TIMESTAMPING is not set +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_ACT_BPF=m +CONFIG_NET_ACT_CONNMARK=m +CONFIG_NET_ACT_CSUM=m +CONFIG_NET_ACT_GACT=m +CONFIG_NET_ACT_IPT=m +CONFIG_NET_ACT_MIRRED=m +CONFIG_NET_ACT_NAT=m +CONFIG_NET_ACT_PEDIT=m +CONFIG_NET_ACT_POLICE=m +CONFIG_NET_ACT_SIMP=m +CONFIG_NET_ACT_SKBEDIT=m +CONFIG_NET_ACT_VLAN=m +CONFIG_NET_CADENCE=y +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_IND is not set +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_DCCPPROBE=m +# CONFIG_NET_DROP_MONITOR is not set +# CONFIG_NET_DSA_MV88E6XXX is not set +# CONFIG_NET_DSA_MV88E6XXX_NEED_PPU is not set +CONFIG_NET_EMATCH=y +CONFIG_NET_EMATCH_CANID=m +CONFIG_NET_EMATCH_CMP=m +CONFIG_NET_EMATCH_IPSET=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_FC=y +CONFIG_NET_FLOW_LIMIT=y +CONFIG_NET_FOU=m +CONFIG_NET_FOU_IP_TUNNELS=y +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_MPLS_GSO=m +CONFIG_NET_NS=y +CONFIG_NET_PACKET_ENGINE=y +CONFIG_NET_PKTGEN=m +CONFIG_NET_POLL_CONTROLLER=y +CONFIG_NET_PTP_CLASSIFY=y +CONFIG_NET_RX_BUSY_POLL=y +CONFIG_NET_SB1000=m +CONFIG_NET_SCHED=y +CONFIG_NET_SCH_ATM=m +CONFIG_NET_SCH_CBQ=m +CONFIG_NET_SCH_CHOKE=m +CONFIG_NET_SCH_CODEL=m +CONFIG_NET_SCH_DRR=m +CONFIG_NET_SCH_DSMARK=m +CONFIG_NET_SCH_FIFO=y +CONFIG_NET_SCH_FQ=m +CONFIG_NET_SCH_FQ_CODEL=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_TBF=m +CONFIG_NET_SCH_TEQL=m +CONFIG_NET_SCTPPROBE=m +# CONFIG_NET_SWITCHDEV is not set +CONFIG_NET_TCPPROBE=m +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_3COM=y +CONFIG_NET_VENDOR_8390=y +CONFIG_NET_VENDOR_ADAPTEC=y +CONFIG_NET_VENDOR_AGERE=y +CONFIG_NET_VENDOR_ALTEON=y +CONFIG_NET_VENDOR_AMD=y +CONFIG_NET_VENDOR_APPLE=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=m +CONFIG_NET_VENDOR_CHELSIO=y +CONFIG_NET_VENDOR_CIRRUS=y +CONFIG_NET_VENDOR_CISCO=y +CONFIG_NET_VENDOR_DEC=y +CONFIG_NET_VENDOR_DLINK=y +CONFIG_NET_VENDOR_EMULEX=y +CONFIG_NET_VENDOR_EXAR=y +CONFIG_NET_VENDOR_EZCHIP=y +CONFIG_NET_VENDOR_FARADAY=y +CONFIG_NET_VENDOR_FREESCALE=y +CONFIG_NET_VENDOR_FUJITSU=y +CONFIG_NET_VENDOR_HISILICON=y +CONFIG_NET_VENDOR_HP=y +CONFIG_NET_VENDOR_I825XX=y +CONFIG_NET_VENDOR_IBM=y +CONFIG_NET_VENDOR_INTEL=y +CONFIG_NET_VENDOR_MARVELL=y +CONFIG_NET_VENDOR_MELLANOX=y +CONFIG_NET_VENDOR_MICREL=y +CONFIG_NET_VENDOR_MICROCHIP=y +CONFIG_NET_VENDOR_MYRI=y +CONFIG_NET_VENDOR_NATSEMI=y +CONFIG_NET_VENDOR_NVIDIA=y +CONFIG_NET_VENDOR_OKI=y +CONFIG_NET_VENDOR_PASEMI=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_TOSHIBA=y +CONFIG_NET_VENDOR_VIA=y +CONFIG_NET_VENDOR_WIZNET=y +CONFIG_NET_VENDOR_XILINX=y +CONFIG_NET_VENDOR_XIRCOM=y +CONFIG_NET_XGENE=m +CONFIG_NEW_LEDS=y +CONFIG_NFC=m +CONFIG_NFC_DIGITAL=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_UART=m +CONFIG_NFC_MRVL_USB=m +CONFIG_NFC_NCI=m +CONFIG_NFC_NCI_SPI=y +CONFIG_NFC_NCI_UART=m +CONFIG_NFC_NXP_NCI=m +CONFIG_NFC_NXP_NCI_I2C=m +CONFIG_NFC_PN533=m +CONFIG_NFC_PN544=m +CONFIG_NFC_PN544_I2C=m +CONFIG_NFC_PN544_MEI=m +CONFIG_NFC_PORT100=m +CONFIG_NFC_SHDLC=y +CONFIG_NFC_SIM=m +CONFIG_NFC_ST21NFCA=m +CONFIG_NFC_ST21NFCA_I2C=m +CONFIG_NFC_ST_NCI=m +CONFIG_NFC_ST_NCI_I2C=m +CONFIG_NFC_TRF7970A=m +CONFIG_NFC_WILINK=m +CONFIG_NFSD=m +# CONFIG_NFSD_FAULT_INJECTION is not set +CONFIG_NFSD_PNFS=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_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_CHAIN_NAT_IPV4=m +CONFIG_NFT_CHAIN_NAT_IPV6=m +CONFIG_NFT_CHAIN_ROUTE_IPV4=m +CONFIG_NFT_CHAIN_ROUTE_IPV6=m +CONFIG_NFT_COMPAT=m +CONFIG_NFT_COUNTER=m +CONFIG_NFT_CT=m +CONFIG_NFT_EXTHDR=m +CONFIG_NFT_HASH=m +CONFIG_NFT_LIMIT=m +CONFIG_NFT_LOG=m +CONFIG_NFT_MASQ=m +CONFIG_NFT_MASQ_IPV4=m +CONFIG_NFT_MASQ_IPV6=m +CONFIG_NFT_META=m +CONFIG_NFT_NAT=m +CONFIG_NFT_QUEUE=m +CONFIG_NFT_RBTREE=m +CONFIG_NFT_REDIR=m +CONFIG_NFT_REDIR_IPV4=m +CONFIG_NFT_REDIR_IPV6=m +CONFIG_NFT_REJECT=m +CONFIG_NFT_REJECT_INET=m +CONFIG_NFT_REJECT_IPV4=m +CONFIG_NFT_REJECT_IPV6=m +CONFIG_NF_CONNTRACK=m +CONFIG_NF_CONNTRACK_AMANDA=m +CONFIG_NF_CONNTRACK_BROADCAST=m +CONFIG_NF_CONNTRACK_EVENTS=y +CONFIG_NF_CONNTRACK_FTP=m +CONFIG_NF_CONNTRACK_H323=m +CONFIG_NF_CONNTRACK_IPV4=m +CONFIG_NF_CONNTRACK_IPV6=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=m +CONFIG_NF_CT_PROTO_GRE=m +CONFIG_NF_CT_PROTO_SCTP=m +CONFIG_NF_CT_PROTO_UDPLITE=m +CONFIG_NF_DEFRAG_IPV4=m +CONFIG_NF_DEFRAG_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_NAT=m +CONFIG_NF_NAT_AMANDA=m +CONFIG_NF_NAT_FTP=m +CONFIG_NF_NAT_H323=m +CONFIG_NF_NAT_IPV4=m +CONFIG_NF_NAT_IPV6=m +CONFIG_NF_NAT_IRC=m +CONFIG_NF_NAT_MASQUERADE_IPV4=m +CONFIG_NF_NAT_MASQUERADE_IPV6=m +CONFIG_NF_NAT_NEEDED=y +CONFIG_NF_NAT_PPTP=m +CONFIG_NF_NAT_PROTO_DCCP=m +CONFIG_NF_NAT_PROTO_GRE=m +CONFIG_NF_NAT_PROTO_SCTP=m +CONFIG_NF_NAT_PROTO_UDPLITE=m +CONFIG_NF_NAT_REDIRECT=m +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_TABLES=m +CONFIG_NF_TABLES_ARP=m +CONFIG_NF_TABLES_BRIDGE=m +CONFIG_NF_TABLES_INET=m +CONFIG_NF_TABLES_IPV4=m +CONFIG_NF_TABLES_IPV6=m +CONFIG_NF_TABLES_NETDEV=m +CONFIG_NI65=m +CONFIG_NILFS2_FS=m +CONFIG_NIU=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_NODES_SPAN_OTHER_NODES=y +# CONFIG_NOHIGHMEM is not set +CONFIG_NOKIA_MODEM=m +CONFIG_NOP_TRACER=y +CONFIG_NOP_USB_XCEIV=y +CONFIG_NORTEL_HERMES=m +CONFIG_NOTIFIER_ERROR_INJECTION=m +CONFIG_NOUVEAU_DEBUG=5 +CONFIG_NOUVEAU_DEBUG_DEFAULT=3 +CONFIG_NOUVEAU_PLATFORM_DRIVER=y +CONFIG_NOZOMI=m +CONFIG_NO_BOOTMEM=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_NR_IRQS=512 +CONFIG_NS83820=m +CONFIG_NSC_FIR=m +CONFIG_NSC_GPIO=m +CONFIG_NTB=m +CONFIG_NTB_INTEL=m +CONFIG_NTB_NETDEV=m +CONFIG_NTB_PINGPONG=m +CONFIG_NTB_TOOL=m +CONFIG_NTB_TRANSPORT=m +# CONFIG_NTFS_DEBUG is not set +CONFIG_NTFS_FS=m +# CONFIG_NTFS_RW is not set +CONFIG_NUMA_BALANCING=y +CONFIG_NUMA_BALANCING_DEFAULT_ENABLED=y +# CONFIG_NUMA_EMU is not set +CONFIG_NVEC_PAZ00=m +CONFIG_NVEC_POWER=m +CONFIG_NV_TCO=m +CONFIG_N_GSM=m +CONFIG_N_HDLC=m +# CONFIG_OABI_COMPAT is not set +# 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_OF_ADDRESS=y +CONFIG_OF_ADDRESS_PCI=y +CONFIG_OF_DYNAMIC=y +CONFIG_OF_EARLY_FLATTREE=y +CONFIG_OF_FLATTREE=y +CONFIG_OF_GPIO=y +CONFIG_OF_IOMMU=y +CONFIG_OF_IRQ=y +CONFIG_OF_MDIO=y +CONFIG_OF_MTD=y +CONFIG_OF_NET=y +CONFIG_OF_OVERLAY=y +CONFIG_OF_PCI=y +CONFIG_OF_PCI_IRQ=y +# CONFIG_OF_RECONFIG_NOTIFIER_ERROR_INJECT is not set +CONFIG_OF_RESERVED_MEM=y +CONFIG_OF_RESOLVE=y +CONFIG_OF_TOUCHSCREEN=y +# CONFIG_OF_UNITTEST is not set +CONFIG_OID_REGISTRY=y +CONFIG_OLD_BELKIN_DONGLE=m +CONFIG_OLD_MCOUNT=y +CONFIG_OLD_SIGACTION=y +CONFIG_OLD_SIGSUSPEND=y +CONFIG_OLD_SIGSUSPEND3=y +CONFIG_OMAP2PLUS_MBOX=m +CONFIG_OMAP2_DSS=y +# CONFIG_OMAP2_DSS_DEBUG is not set +# CONFIG_OMAP2_DSS_DEBUGFS is not set +CONFIG_OMAP2_DSS_DPI=y +# CONFIG_OMAP2_DSS_DSI is not set +CONFIG_OMAP2_DSS_HDMI_COMMON=y +CONFIG_OMAP2_DSS_INIT=y +CONFIG_OMAP2_DSS_MIN_FCK_PER_PCK=0 +CONFIG_OMAP2_DSS_SDI=y +CONFIG_OMAP2_DSS_SLEEP_AFTER_VENC_RESET=y +CONFIG_OMAP2_DSS_VENC=y +CONFIG_OMAP2_VRFB=y +# CONFIG_OMAP3_L2_AUX_SECURE_SAVE_RESTORE is not set +# CONFIG_OMAP3_SDRC_AC_TIMING is not set +CONFIG_OMAP4_DSS_HDMI=y +CONFIG_OMAP4_THERMAL=y +CONFIG_OMAP5_DSS_HDMI=y +CONFIG_OMAP_32K_TIMER=y +CONFIG_OMAP_CONTROL_PHY=m +CONFIG_OMAP_DM_TIMER=y +CONFIG_OMAP_GPMC=y +CONFIG_OMAP_INTERCONNECT=y +CONFIG_OMAP_IOMMU=y +# CONFIG_OMAP_IOMMU_DEBUG is not set +CONFIG_OMAP_IRQCHIP=y +CONFIG_OMAP_MBOX_KFIFO_SIZE=256 +CONFIG_OMAP_MUX=y +# CONFIG_OMAP_MUX_DEBUG is not set +CONFIG_OMAP_MUX_WARNINGS=y +CONFIG_OMAP_OCP2SCP=m +CONFIG_OMAP_PACKAGE_CBB=y +CONFIG_OMAP_PM_NOOP=y +CONFIG_OMAP_REMOTEPROC=m +CONFIG_OMAP_RESET_CLOCKS=y +CONFIG_OMAP_SSI=m +CONFIG_OMAP_SSI_PORT=m +CONFIG_OMAP_USB2=m +CONFIG_OMAP_WATCHDOG=m +CONFIG_OMFS_FS=m +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_OPTIMIZE_INLINING=y +CONFIG_OPTPROBES=y +CONFIG_ORE=m +CONFIG_ORINOCO_USB=m +CONFIG_ORION_IRQCHIP=y +CONFIG_ORION_TIMER=y +CONFIG_ORION_WATCHDOG=m +CONFIG_OSF_PARTITION=y +CONFIG_OUTER_CACHE=y +CONFIG_OUTER_CACHE_SYNC=y +CONFIG_OVERLAY_FS=m +CONFIG_OVERLAY_FS_V1=y +# CONFIG_P1010_RDB is not set +# CONFIG_P1022_DS is not set +# CONFIG_P1022_RDK is not set +CONFIG_P1023_RDB=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_PACKET=y +CONFIG_PACKET_DIAG=m +CONFIG_PADATA=y +CONFIG_PAGEFLAGS_EXTENDED=y +CONFIG_PAGE_COUNTER=y +# CONFIG_PAGE_EXTENSION is not set +# CONFIG_PAGE_OWNER is not set +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_PANIC_TIMEOUT=0 +CONFIG_PANTHERLORD_FF=y +CONFIG_PARAVIRT=y +CONFIG_PARAVIRT_CLOCK=y +# CONFIG_PARAVIRT_DEBUG is not set +CONFIG_PARAVIRT_SPINLOCKS=y +# CONFIG_PARAVIRT_TIME_ACCOUNTING is not set +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_PARPORT=m +CONFIG_PARPORT_1284=y +CONFIG_PARPORT_AX88796=m +# CONFIG_PARPORT_GSC is not set +CONFIG_PARPORT_NOT_PC=y +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_PASEMI_MAC is not set +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_CS5520=m +CONFIG_PATA_CS5530=m +CONFIG_PATA_CS5535=m +CONFIG_PATA_CS5536=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_ISAPNP=m +CONFIG_PATA_IT8213=m +CONFIG_PATA_IT821X=m +CONFIG_PATA_JMICRON=m +CONFIG_PATA_LEGACY=m +CONFIG_PATA_MACIO=y +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_QDI=m +CONFIG_PATA_RADISYS=m +CONFIG_PATA_RDC=m +CONFIG_PATA_RZ1000=m +CONFIG_PATA_SC1200=m +CONFIG_PATA_SCH=m +CONFIG_PATA_SERVERWORKS=m +CONFIG_PATA_SIL680=m +CONFIG_PATA_TOSHIBA=m +CONFIG_PATA_TRIFLEX=m +CONFIG_PATA_VIA=m +CONFIG_PATA_WINBOND=m +CONFIG_PATA_WINBOND_VLB=m +CONFIG_PC300TOO=m +CONFIG_PC8736x_GPIO=m +CONFIG_PC87413_WDT=m +CONFIG_PCC=y +CONFIG_PCCARD_NONSTATIC=y +CONFIG_PCF50633_ADC=m +CONFIG_PCF50633_GPIO=m +CONFIG_PCH_CAN=m +CONFIG_PCH_DMA=m +CONFIG_PCH_GBE=m +CONFIG_PCH_PHUB=m +CONFIG_PCI=y +CONFIG_PCI200SYN=m +CONFIG_PCIEAER=y +# CONFIG_PCIEAER_INJECT is not set +CONFIG_PCIEASPM=y +CONFIG_PCIEASPM_DEBUG=y +CONFIG_PCIEASPM_DEFAULT=y +# CONFIG_PCIEASPM_PERFORMANCE is not set +# CONFIG_PCIEASPM_POWERSAVE is not set +CONFIG_PCIEPORTBUS=y +CONFIG_PCIE_DW=y +# CONFIG_PCIE_ECRC is not set +CONFIG_PCIE_IPROC=m +CONFIG_PCIE_PME=y +CONFIG_PCIPCWATCHDOG=m +CONFIG_PCI_ATMEL=m +CONFIG_PCI_ATS=y +CONFIG_PCI_BIOS=y +CONFIG_PCI_BUS_ADDR_T_64BIT=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_EXYNOS=y +CONFIG_PCI_GOANY=y +# CONFIG_PCI_GOBIOS is not set +# CONFIG_PCI_GODIRECT is not set +# CONFIG_PCI_GOMMCONFIG is not set +CONFIG_PCI_HOST_GENERIC=y +CONFIG_PCI_IMX6=y +CONFIG_PCI_IOV=y +CONFIG_PCI_LABEL=y +# CONFIG_PCI_LAYERSCAPE is not set +CONFIG_PCI_MMCONFIG=y +CONFIG_PCI_MSI=y +CONFIG_PCI_MSI_IRQ_DOMAIN=y +CONFIG_PCI_MVEBU=y +CONFIG_PCI_PASID=y +CONFIG_PCI_PRI=y +CONFIG_PCI_QUIRKS=y +CONFIG_PCI_RCAR_GEN2=y +CONFIG_PCI_RCAR_GEN2_PCIE=y +CONFIG_PCI_REALLOC_ENABLE_AUTO=y +CONFIG_PCI_STUB=m +CONFIG_PCI_SYSCALL=y +CONFIG_PCI_TEGRA=y +CONFIG_PCI_XEN=y +CONFIG_PCI_XGENE=y +CONFIG_PCI_XGENE_MSI=y +CONFIG_PCMCIA=m +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_NINJA_SCSI=m +CONFIG_PCMCIA_NMCLAN=m +CONFIG_PCMCIA_PCNET=m +CONFIG_PCMCIA_PROBE=y +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_PCWATCHDOG=m +CONFIG_PD6729=m +CONFIG_PDA_POWER=m +CONFIG_PDC_ADMA=m +CONFIG_PERCPU_RWSEM=y +CONFIG_PERCPU_TEST=m +CONFIG_PERF_EVENTS=y +CONFIG_PERF_EVENTS_INTEL_UNCORE=y +CONFIG_PERF_USE_VMALLOC=y +CONFIG_PERSISTENT_KEYRINGS=y +CONFIG_PGTABLE_MAPPING=y +CONFIG_PHANTOM=m +CONFIG_PHONET=m +CONFIG_PHYLIB=y +CONFIG_PHYS_64BIT=y +CONFIG_PHY_BERLIN_SATA=m +CONFIG_PHY_BERLIN_USB=m +CONFIG_PHY_DM816X_USB=m +# CONFIG_PHY_EXYNOS4210_USB2 is not set +# CONFIG_PHY_EXYNOS4X12_USB2 is not set +CONFIG_PHY_EXYNOS5250_SATA=y +CONFIG_PHY_EXYNOS5_USBDRD=m +CONFIG_PHY_EXYNOS_DP_VIDEO=y +CONFIG_PHY_EXYNOS_MIPI_VIDEO=y +CONFIG_PHY_HIX5HD2_SATA=m +CONFIG_PHY_MVEBU_SATA=y +CONFIG_PHY_PXA_28NM_HSIC=m +CONFIG_PHY_PXA_28NM_USB2=m +CONFIG_PHY_QCOM_APQ8064_SATA=m +CONFIG_PHY_QCOM_IPQ806X_SATA=m +CONFIG_PHY_QCOM_UFS=m +CONFIG_PHY_RCAR_GEN2=m +CONFIG_PHY_SAMSUNG_USB2=m +CONFIG_PHY_TUSB1210=m +CONFIG_PHY_XGENE=y +# CONFIG_PID_IN_CONTEXTIDR is not set +CONFIG_PID_NS=y +CONFIG_PINCONF=y +CONFIG_PINCTRL=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_38X=y +CONFIG_PINCTRL_ARMADA_39X=y +CONFIG_PINCTRL_ARMADA_XP=y +CONFIG_PINCTRL_AS3722=y +CONFIG_PINCTRL_BAYTRAIL=y +CONFIG_PINCTRL_BERLIN=y +CONFIG_PINCTRL_BERLIN_BG2=y +CONFIG_PINCTRL_BERLIN_BG2CD=y +CONFIG_PINCTRL_BERLIN_BG2Q=y +CONFIG_PINCTRL_CHERRYVIEW=m +CONFIG_PINCTRL_DOVE=y +CONFIG_PINCTRL_EXYNOS=y +CONFIG_PINCTRL_EXYNOS5440=y +CONFIG_PINCTRL_IMX=y +CONFIG_PINCTRL_IMX50=y +CONFIG_PINCTRL_IMX51=y +CONFIG_PINCTRL_IMX6Q=y +CONFIG_PINCTRL_IMX6SL=y +CONFIG_PINCTRL_IMX6SX=y +CONFIG_PINCTRL_IMX7D=y +CONFIG_PINCTRL_INTEL=m +CONFIG_PINCTRL_IPQ8064=m +CONFIG_PINCTRL_MESON=y +CONFIG_PINCTRL_MSM=y +CONFIG_PINCTRL_MSM8660=m +CONFIG_PINCTRL_MSM8916=m +CONFIG_PINCTRL_MSM8960=m +CONFIG_PINCTRL_MSM8X74=m +CONFIG_PINCTRL_MT6397=y +CONFIG_PINCTRL_MT8173=y +CONFIG_PINCTRL_MTK_COMMON=y +CONFIG_PINCTRL_MVEBU=y +CONFIG_PINCTRL_PALMAS=y +CONFIG_PINCTRL_PFC_EMEV2=y +CONFIG_PINCTRL_PFC_R8A7740=y +CONFIG_PINCTRL_PFC_R8A7778=y +CONFIG_PINCTRL_PFC_R8A7779=y +CONFIG_PINCTRL_PFC_R8A7790=y +CONFIG_PINCTRL_PFC_R8A7791=y +CONFIG_PINCTRL_PFC_R8A7794=y +CONFIG_PINCTRL_PFC_SH73A0=y +CONFIG_PINCTRL_QCOM_SPMI_PMIC=m +CONFIG_PINCTRL_SAMSUNG=y +CONFIG_PINCTRL_SH_PFC=y +CONFIG_PINCTRL_SINGLE=y +CONFIG_PINCTRL_SUNRISEPOINT=m +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_VF610=y +CONFIG_PINMUX=y +CONFIG_PJ4B_ERRATA_4742=y +CONFIG_PKCS7_MESSAGE_PARSER=m +CONFIG_PKCS7_TEST_KEY=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_PLATFORM_SI4713=m +CONFIG_PLAT_ORION=y +CONFIG_PLAT_SAMSUNG=y +# CONFIG_PLAT_SPEAR is not set +CONFIG_PLAT_VERSATILE=y +CONFIG_PLAT_VERSATILE_CLCD=y +CONFIG_PLIP=m +CONFIG_PLX_HERMES=m +CONFIG_PM=y +CONFIG_PMAC_APM_EMU=m +CONFIG_PMAC_BACKLIGHT=y +CONFIG_PMAC_BACKLIGHT_LEGACY=y +CONFIG_PMAC_MEDIABAY=y +CONFIG_PMAC_RACKMETER=m +CONFIG_PMAC_SMU=y +CONFIG_PMBUS=m +CONFIG_PMC_ATOM=y +CONFIG_PMIC_ADP5520=y +CONFIG_PMIC_DA903X=y +CONFIG_PMIC_DA9052=y +# CONFIG_PMIC_OPREGION 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=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_RCAR=y +CONFIG_PM_RMOBILE=y +CONFIG_PM_SLEEP=y +CONFIG_PM_SLEEP_DEBUG=y +CONFIG_PM_SLEEP_SMP=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_PNFS_OBJLAYOUT=m +CONFIG_PNP=y +CONFIG_PNPACPI=y +CONFIG_PNPBIOS=y +CONFIG_PNPBIOS_PROC_FS=y +# CONFIG_PNP_DEBUG_MESSAGES is not set +CONFIG_POSIX_MQUEUE=y +CONFIG_POSIX_MQUEUE_SYSCTL=y +# CONFIG_POWER4_CPU is not set +# CONFIG_POWER5_CPU is not set +# CONFIG_POWER6_CPU is not set +# CONFIG_POWER8_CPU is not set +CONFIG_POWERCAP=y +CONFIG_POWERNV_CPUFREQ=y +CONFIG_POWERNV_CPUIDLE=y +CONFIG_POWER_AVS=y +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_BRCMSTB is not set +CONFIG_POWER_RESET_GPIO=y +CONFIG_POWER_RESET_GPIO_RESTART=y +CONFIG_POWER_RESET_HISI=y +# CONFIG_POWER_RESET_IMX is not set +CONFIG_POWER_RESET_LTC2952=y +CONFIG_POWER_RESET_MSM=y +# CONFIG_POWER_RESET_QNAP is not set +CONFIG_POWER_RESET_RESTART=y +CONFIG_POWER_RESET_RMOBILE=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=y +# CONFIG_POWER_SUPPLY_DEBUG is not set +CONFIG_PPA8548=y +CONFIG_PPC=y +CONFIG_PPC32=y +# CONFIG_PPC601_SYNC_FIX is not set +CONFIG_PPC64_BOOT_WRAPPER=y +CONFIG_PPC64_SUPPORTS_MEMORY_FAILURE=y +# CONFIG_PPC_82xx is not set +# CONFIG_PPC_83xx is not set +# CONFIG_PPC_86xx is not set +# CONFIG_PPC_8xx is not set +CONFIG_PPC_ADV_DEBUG_DACS=2 +CONFIG_PPC_ADV_DEBUG_DVCS=0 +CONFIG_PPC_ADV_DEBUG_IACS=2 +CONFIG_PPC_ADV_DEBUG_REGS=y +CONFIG_PPC_BOOK3E=y +CONFIG_PPC_BOOK3E_MMU=y +CONFIG_PPC_BOOK3S=y +# CONFIG_PPC_CELL_NATIVE is not set +# CONFIG_PPC_CELL_QPACE is not set +CONFIG_PPC_CHRP=y +# CONFIG_PPC_DCR_MMIO is not set +# CONFIG_PPC_DCR_NATIVE is not set +CONFIG_PPC_E500MC=y +# CONFIG_PPC_EARLY_DEBUG is not set +# CONFIG_PPC_EMULATED_STATS is not set +CONFIG_PPC_EMULATE_SSTEP=y +# CONFIG_PPC_EPAPR_HV_BYTECHAN is not set +CONFIG_PPC_FPU=y +CONFIG_PPC_FSL_BOOK3E=y +CONFIG_PPC_HAVE_PMU_SUPPORT=y +# CONFIG_PPC_IBM_CELL_BLADE is not set +CONFIG_PPC_ICSWX_PID=y +# CONFIG_PPC_ICSWX_USE_SIGILL is not set +CONFIG_PPC_INDIRECT_PIO=y +CONFIG_PPC_LIB_RHEAP=y +CONFIG_PPC_MMU_NOHASH=y +# CONFIG_PPC_MPC512x is not set +# CONFIG_PPC_MPC52xx is not set +CONFIG_PPC_MSI_BITMAP=y +CONFIG_PPC_NATIVE=y +# CONFIG_PPC_OF_PLATFORM_PCI is not set +CONFIG_PPC_PASEMI_CPUFREQ=y +CONFIG_PPC_PASEMI_IOMMU=y +# CONFIG_PPC_PASEMI_IOMMU_DMA_FORCE is not set +CONFIG_PPC_PASEMI_MDIO=m +CONFIG_PPC_PCI_CHOICE=y +CONFIG_PPC_PERF_CTRS=y +CONFIG_PPC_PMAC32_PSURGE=y +CONFIG_PPC_PMAC64=y +CONFIG_PPC_POWERNV=y +CONFIG_PPC_PSERIES=y +CONFIG_PPC_QEMU_E500=y +CONFIG_PPC_RTAS_DAEMON=y +CONFIG_PPC_SCOM=y +CONFIG_PPC_SMP_MUXED_IPI=y +CONFIG_PPC_STD_MMU=y +CONFIG_PPC_STD_MMU_32=y +CONFIG_PPC_STD_MMU_64=y +CONFIG_PPC_SUBPAGE_PROT=y +CONFIG_PPC_TRANSACTIONAL_MEM=y +CONFIG_PPC_UDBG_16550=y +CONFIG_PPC_WERROR=y +CONFIG_PPDEV=m +CONFIG_PPP=y +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_GPIO=m +# CONFIG_PPS_CLIENT_KTIMER is not set +CONFIG_PPS_CLIENT_LDISC=m +CONFIG_PPS_CLIENT_PARPORT=m +# CONFIG_PPS_DEBUG is not set +CONFIG_PPTP=m +# CONFIG_PQ2ADS is not set +CONFIG_PREEMPT_COUNT=y +# CONFIG_PREEMPT_NONE is not set +CONFIG_PREEMPT_NOTIFIERS=y +CONFIG_PREEMPT_RCU=y +# CONFIG_PREEMPT_TRACER is not set +CONFIG_PREVENT_FIRMWARE_BUILD=y +CONFIG_PRINTER=m +CONFIG_PRINTK=y +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_PROCESSOR_SELECT=y +CONFIG_PROC_CHILDREN=y +CONFIG_PROC_EVENTS=y +CONFIG_PROC_FS=y +CONFIG_PROC_KCORE=y +CONFIG_PROC_PAGE_MONITOR=y +CONFIG_PROC_PID_CPUSET=y +CONFIG_PROC_SYSCTL=y +CONFIG_PROC_VMCORE=y +# CONFIG_PROFILE_ALL_BRANCHES is not set +# CONFIG_PROFILE_ANNOTATED_BRANCHES is not set +CONFIG_PROFILING=y +# CONFIG_PROVE_LOCKING is not set +# CONFIG_PROVE_RCU is not set +# CONFIG_PROVIDE_OHCI1394_DMA_INIT is not set +# CONFIG_PS3GELIC_UDBG is not set +# CONFIG_PS3_ADVANCED is not set +CONFIG_PS3_DISK=m +# CONFIG_PS3_DYNAMIC_DMA is not set +CONFIG_PS3_FLASH=m +CONFIG_PS3_HTAB_SIZE=20 +CONFIG_PS3_LPM=m +CONFIG_PS3_PS3AV=y +# CONFIG_PS3_REPOSITORY_WRITE is not set +CONFIG_PS3_ROM=m +CONFIG_PS3_STORAGE=m +CONFIG_PS3_SYS_MANAGER=y +CONFIG_PS3_VRAM=m +CONFIG_PS3_VUART=y +CONFIG_PSERIES_CPUIDLE=y +CONFIG_PSERIES_ENERGY=m +CONFIG_PSERIES_MSI=y +CONFIG_PSTORE=y +# CONFIG_PSTORE_FTRACE is not set +# CONFIG_PSTORE_PMSG is not set +CONFIG_PTE_64BIT=y +CONFIG_PTP_1588_CLOCK_GIANFAR=m +CONFIG_PTP_1588_CLOCK_PCH=m +CONFIG_PUBLIC_KEY_ALGO_RSA=y +CONFIG_PUNIT_ATOM_DEBUG=m +CONFIG_PVPANIC=m +CONFIG_PWM=y +CONFIG_PWM_ATMEL_HLCDC_PWM=m +CONFIG_PWM_FSL_FTM=m +CONFIG_PWM_IMX=m +CONFIG_PWM_LP3943=m +CONFIG_PWM_LPSS=m +CONFIG_PWM_LPSS_PCI=m +CONFIG_PWM_LPSS_PLATFORM=m +CONFIG_PWM_PCA9685=m +CONFIG_PWM_RENESAS_TPU=m +CONFIG_PWM_SAMSUNG=m +CONFIG_PWM_SYSFS=y +CONFIG_PWM_TEGRA=m +CONFIG_PWM_TIECAP=m +CONFIG_PWM_TIEHRPWM=m +CONFIG_PWM_TIPWMSS=y +CONFIG_PWM_TWL=m +CONFIG_PWM_TWL_LED=m +CONFIG_PXA168_ETH=m +CONFIG_QCA7000=m +CONFIG_QCOM_BAM_DMA=m +CONFIG_QCOM_GSBI=m +CONFIG_QCOM_PM=y +CONFIG_QCOM_SCM=y +CONFIG_QCOM_SPMI_IADC=m +CONFIG_QCOM_SPMI_TEMP_ALARM=m +CONFIG_QCOM_SPMI_VADC=m +CONFIG_QCOM_WDT=m +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_QLCNIC_VXLAN=y +CONFIG_QLGE=m +CONFIG_QNX4FS_FS=m +# CONFIG_QNX6FS_DEBUG is not set +CONFIG_QNX6FS_FS=m +CONFIG_QORIQ_CPUFREQ=m +CONFIG_QSEMI_PHY=m +CONFIG_QUEUED_RWLOCKS=y +CONFIG_QUEUED_SPINLOCKS=y +# CONFIG_QUICC_ENGINE is not set +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_R3964=m +CONFIG_R6040=m +CONFIG_R8169=m +CONFIG_R8188EU=m +CONFIG_R8712U=m +CONFIG_R8723AU=m +CONFIG_RADIO_ADAPTERS=y +CONFIG_RADIO_AZTECH=m +CONFIG_RADIO_CADET=m +CONFIG_RADIO_GEMTEK=m +CONFIG_RADIO_ISA=m +CONFIG_RADIO_MAXIRADIO=m +CONFIG_RADIO_MIROPCM20=m +CONFIG_RADIO_RTRACK=m +CONFIG_RADIO_RTRACK2=m +CONFIG_RADIO_SAA7706H=m +CONFIG_RADIO_SF16FMI=m +CONFIG_RADIO_SF16FMR2=m +CONFIG_RADIO_SHARK=m +CONFIG_RADIO_SHARK2=m +CONFIG_RADIO_SI470X=y +CONFIG_RADIO_SI4713=m +CONFIG_RADIO_SI476X=m +CONFIG_RADIO_TEA575X=m +CONFIG_RADIO_TEA5764=m +CONFIG_RADIO_TEF6862=m +CONFIG_RADIO_TERRATEC=m +CONFIG_RADIO_TIMBERDALE=m +CONFIG_RADIO_TRUST=m +CONFIG_RADIO_TYPHOON=m +CONFIG_RADIO_WL1273=m +CONFIG_RADIO_WL128X=m +CONFIG_RADIO_ZOLTRIX=m +CONFIG_RAID6_PQ=m +CONFIG_RAID_ATTRS=m +# CONFIG_RANDOM32_SELFTEST is not set +CONFIG_RANDOMIZE_BASE=y +CONFIG_RAPIDIO=y +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_TSI568=m +CONFIG_RAPIDIO_TSI57X=m +CONFIG_RAPIDIO_TSI721=m +CONFIG_RAS=y +CONFIG_RATIONAL=y +CONFIG_RAVB=m +CONFIG_RAW_DRIVER=m +CONFIG_RBTREE_TEST=m +CONFIG_RCAR_DMAC=m +CONFIG_RCAR_HPB_DMAE=m +CONFIG_RCAR_THERMAL=m +# CONFIG_RCU_CPU_STALL_INFO is not set +# CONFIG_RCU_EQS_DEBUG is not set +# CONFIG_RCU_EXPEDITE_BOOT is not set +# CONFIG_RCU_EXPERT is not set +CONFIG_RCU_NOCB_CPU_ALL=y +# CONFIG_RCU_NOCB_CPU_NONE is not set +# CONFIG_RCU_NOCB_CPU_ZERO is not set +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_CORE=m +CONFIG_RC_DECODERS=y +CONFIG_RC_DEVICES=y +CONFIG_RC_LOOPBACK=m +CONFIG_RC_MAP=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_REALTEK_AUTOPM=y +CONFIG_REALTEK_PHY=m +CONFIG_REED_SOLOMON_DEC16=y +CONFIG_REED_SOLOMON_DEC8=y +CONFIG_REED_SOLOMON_ENC8=y +CONFIG_REGMAP=y +CONFIG_REGMAP_I2C=y +CONFIG_REGMAP_IRQ=y +CONFIG_REGMAP_MMIO=y +CONFIG_REGMAP_SPI=y +CONFIG_REGMAP_SPMI=m +CONFIG_REGULATOR=y +CONFIG_REGULATOR_88PM800=m +CONFIG_REGULATOR_88PM8607=m +CONFIG_REGULATOR_AAT2870=m +CONFIG_REGULATOR_AB3100=m +CONFIG_REGULATOR_ACT8865=m +CONFIG_REGULATOR_AD5398=m +CONFIG_REGULATOR_ANATOP=m +CONFIG_REGULATOR_ARIZONA=m +CONFIG_REGULATOR_AS3711=m +CONFIG_REGULATOR_AS3722=m +CONFIG_REGULATOR_AXP20X=m +CONFIG_REGULATOR_BCM590XX=m +CONFIG_REGULATOR_DA903X=m +CONFIG_REGULATOR_DA9052=m +CONFIG_REGULATOR_DA9055=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_ISL6271A=m +CONFIG_REGULATOR_ISL9305=m +CONFIG_REGULATOR_LP3971=m +CONFIG_REGULATOR_LP3972=m +CONFIG_REGULATOR_LP872X=m +CONFIG_REGULATOR_LP8755=m +CONFIG_REGULATOR_LP8788=m +CONFIG_REGULATOR_LTC3589=m +CONFIG_REGULATOR_MAX14577=m +CONFIG_REGULATOR_MAX1586=m +CONFIG_REGULATOR_MAX77686=m +CONFIG_REGULATOR_MAX77693=m +CONFIG_REGULATOR_MAX77802=m +CONFIG_REGULATOR_MAX77843=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_MT6397=m +CONFIG_REGULATOR_PALMAS=m +CONFIG_REGULATOR_PBIAS=m +CONFIG_REGULATOR_PCAP=m +CONFIG_REGULATOR_PCF50633=m +CONFIG_REGULATOR_PFUZE100=m +CONFIG_REGULATOR_PWM=m +CONFIG_REGULATOR_QCOM_RPM=m +CONFIG_REGULATOR_QCOM_SPMI=m +CONFIG_REGULATOR_RC5T583=m +CONFIG_REGULATOR_RK808=m +CONFIG_REGULATOR_RN5T618=m +CONFIG_REGULATOR_RT5033=m +CONFIG_REGULATOR_S2MPA01=m +CONFIG_REGULATOR_S2MPS11=m +CONFIG_REGULATOR_S5M8767=m +CONFIG_REGULATOR_SKY81452=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_TPS65090=m +CONFIG_REGULATOR_TPS65217=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_USERSPACE_CONSUMER=m +CONFIG_REGULATOR_VEXPRESS=m +CONFIG_REGULATOR_VIRTUAL_CONSUMER=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=m +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_REMOTEPROC=m +CONFIG_RENESAS_DMA=y +CONFIG_RENESAS_INTC_IRQPIN=y +CONFIG_RENESAS_IRQC=y +CONFIG_RENESAS_USB_DMAC=m +CONFIG_RESET_CONTROLLER=y +CONFIG_RETU_WATCHDOG=m +CONFIG_RFD_FTL=m +CONFIG_RFKILL=y +CONFIG_RFKILL_GPIO=m +CONFIG_RFKILL_INPUT=y +CONFIG_RFKILL_LEDS=y +CONFIG_RFKILL_REGULATOR=m +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_RN5T618_WATCHDOG=m +CONFIG_ROCKETPORT=m +CONFIG_ROMFS_BACKED_BY_BLOCK=y +# CONFIG_ROMFS_BACKED_BY_BOTH is not set +# CONFIG_ROMFS_BACKED_BY_MTD is not set +CONFIG_ROMFS_FS=m +CONFIG_ROMFS_ON_BLOCK=y +CONFIG_ROSE=m +CONFIG_RPCSEC_GSS_KRB5=m +CONFIG_RPMSG=m +CONFIG_RPS=y +CONFIG_RSI_91X=m +# CONFIG_RSI_DEBUGFS is not set +CONFIG_RSI_SDIO=m +CONFIG_RSI_USB=m +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_ABX80X=m +CONFIG_RTC_DRV_ARMADA38X=m +CONFIG_RTC_DRV_AS3722=m +CONFIG_RTC_DRV_BQ32K=m +CONFIG_RTC_DRV_BQ4802=m +CONFIG_RTC_DRV_DA9052=m +CONFIG_RTC_DRV_DA9055=m +CONFIG_RTC_DRV_DA9063=m +CONFIG_RTC_DRV_DS1286=m +CONFIG_RTC_DRV_DS1305=m +CONFIG_RTC_DRV_DS1307=m +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_DS3234=m +CONFIG_RTC_DRV_EFI=m +CONFIG_RTC_DRV_EM3027=m +CONFIG_RTC_DRV_FM3130=m +CONFIG_RTC_DRV_GENERIC=m +CONFIG_RTC_DRV_HID_SENSOR_TIME=m +CONFIG_RTC_DRV_HYM8563=m +CONFIG_RTC_DRV_IMXDI=m +CONFIG_RTC_DRV_ISL12022=m +CONFIG_RTC_DRV_ISL12057=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_MAX77686=m +CONFIG_RTC_DRV_MAX77802=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_MSM6242=m +CONFIG_RTC_DRV_MT6397=m +CONFIG_RTC_DRV_MV=y +CONFIG_RTC_DRV_MXC=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_PCF8563=m +CONFIG_RTC_DRV_PCF8583=m +CONFIG_RTC_DRV_PL030=m +CONFIG_RTC_DRV_PM8XXX=m +CONFIG_RTC_DRV_PS3=m +CONFIG_RTC_DRV_R9701=m +CONFIG_RTC_DRV_RC5T583=m +CONFIG_RTC_DRV_RK808=m +CONFIG_RTC_DRV_RP5C01=m +CONFIG_RTC_DRV_RS5C348=m +CONFIG_RTC_DRV_RS5C372=m +CONFIG_RTC_DRV_RV3029C2=m +CONFIG_RTC_DRV_RX4581=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_SNVS=m +CONFIG_RTC_DRV_STK17TA8=m +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_VRTC=m +CONFIG_RTC_DRV_WM831X=m +CONFIG_RTC_DRV_WM8350=m +CONFIG_RTC_DRV_X1205=m +CONFIG_RTC_DRV_XGENE=y +# CONFIG_RTC_DS1685_PROC_REGS is not set +# CONFIG_RTC_DS1685_SYSFS_REGS is not set +CONFIG_RTC_HCTOSYS=y +CONFIG_RTC_HCTOSYS_DEVICE="rtc0" +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_SYSTOHC=y +CONFIG_RTC_SYSTOHC_DEVICE="rtc0" +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_RTL8723_COMMON=m +CONFIG_RTL8821AE=m +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_RT_GROUP_SCHED is not set +CONFIG_RT_MUTEXES=y +CONFIG_RWSEM_SPIN_ON_OWNER=y +CONFIG_RWSEM_XCHGADD_ALGORITHM=y +CONFIG_RXKAD=m +CONFIG_S2IO=m +CONFIG_S3C2410_WATCHDOG=m +CONFIG_S5P_DEV_MFC=y +# CONFIG_SAMPLES is not set +CONFIG_SAMSUNG_LAPTOP=m +# CONFIG_SAMSUNG_PM_CHECK is not set +CONFIG_SAMSUNG_Q10=m +CONFIG_SATA_ACARD_AHCI=m +CONFIG_SATA_AHCI=m +CONFIG_SATA_FSL=m +CONFIG_SATA_HIGHBANK=m +CONFIG_SATA_INIC162X=m +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_SX4=m +CONFIG_SATA_ULI=m +CONFIG_SATA_VIA=m +CONFIG_SATA_VITESSE=m +CONFIG_SATA_ZPODD=y +CONFIG_SBC7240_WDT=m +CONFIG_SBC8360_WDT=m +# CONFIG_SBC8548 is not set +CONFIG_SBC_EPX_C3_WATCHDOG=m +CONFIG_SBC_FITPC2_WATCHDOG=m +CONFIG_SBNI=m +# CONFIG_SBNI_MULTILINE is not set +CONFIG_SBP_TARGET=m +CONFIG_SC1200_WDT=m +CONFIG_SC92031=m +CONFIG_SCA3000=m +CONFIG_SCANLOG=m +CONFIG_SCC=m +# CONFIG_SCC_DELAY is not set +# CONFIG_SCC_TRXECHO is not set +CONFIG_SCHEDSTATS=y +CONFIG_SCHED_AUTOGROUP=y +CONFIG_SCHED_DEBUG=y +CONFIG_SCHED_HRTICK=y +CONFIG_SCHED_INFO=y +CONFIG_SCHED_MC=y +CONFIG_SCHED_OMIT_FRAME_POINTER=y +CONFIG_SCHED_STACK_END_CHECK=y +CONFIG_SCHED_TRACER=y +CONFIG_SCIF=m +CONFIG_SCIF_BUS=m +CONFIG_SCOM_DEBUGFS=y +CONFIG_SCSI=y +CONFIG_SCSI_3W_9XXX=m +CONFIG_SCSI_3W_SAS=m +CONFIG_SCSI_7000FASST=m +CONFIG_SCSI_AACRAID=m +CONFIG_SCSI_ACARD=m +CONFIG_SCSI_ADVANSYS=m +CONFIG_SCSI_AHA152X=m +CONFIG_SCSI_AHA1542=m +CONFIG_SCSI_AHA1740=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_BUSLOGIC=m +CONFIG_SCSI_CHELSIO_FCOE=m +CONFIG_SCSI_CONSTANTS=y +CONFIG_SCSI_CXGB3_ISCSI=m +CONFIG_SCSI_CXGB4_ISCSI=m +CONFIG_SCSI_DC395x=m +CONFIG_SCSI_DEBUG=m +CONFIG_SCSI_DH=m +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_DMX3191D=m +CONFIG_SCSI_DPT_I2O=m +CONFIG_SCSI_DTC3280=m +CONFIG_SCSI_EATA=m +CONFIG_SCSI_EATA_LINKED_COMMANDS=y +CONFIG_SCSI_EATA_MAX_TAGS=16 +CONFIG_SCSI_EATA_TAGGED_QUEUE=y +CONFIG_SCSI_ENCLOSURE=m +CONFIG_SCSI_ESAS2R=m +CONFIG_SCSI_FC_ATTRS=m +CONFIG_SCSI_FLASHPOINT=y +CONFIG_SCSI_FUTURE_DOMAIN=m +CONFIG_SCSI_GDTH=m +CONFIG_SCSI_GENERIC_NCR5380=m +CONFIG_SCSI_GENERIC_NCR5380_MMIO=m +CONFIG_SCSI_GENERIC_NCR53C400=y +CONFIG_SCSI_HPSA=m +CONFIG_SCSI_HPTIOP=m +CONFIG_SCSI_IBMVFC=m +CONFIG_SCSI_IBMVFC_TRACE=y +CONFIG_SCSI_IBMVSCSI=y +CONFIG_SCSI_IMM=m +CONFIG_SCSI_IN2000=m +CONFIG_SCSI_INIA100=m +CONFIG_SCSI_INITIO=m +CONFIG_SCSI_IPR=m +CONFIG_SCSI_IPR_DUMP=y +CONFIG_SCSI_IPR_TRACE=y +CONFIG_SCSI_IPS=m +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=m +# CONFIG_SCSI_LPFC_DEBUG_FS is not set +CONFIG_SCSI_MAC53C94=m +CONFIG_SCSI_MESH=m +CONFIG_SCSI_MESH_RESET_DELAY_MS=4000 +CONFIG_SCSI_MESH_SYNC_RATE=5 +CONFIG_SCSI_MOD=y +CONFIG_SCSI_MPT2SAS=m +# CONFIG_SCSI_MPT2SAS_LOGGING is not set +CONFIG_SCSI_MPT2SAS_MAX_SGE=128 +CONFIG_SCSI_MPT3SAS=m +# CONFIG_SCSI_MPT3SAS_LOGGING is not set +CONFIG_SCSI_MPT3SAS_MAX_SGE=128 +# CONFIG_SCSI_MQ_DEFAULT is not set +CONFIG_SCSI_MVSAS=m +# CONFIG_SCSI_MVSAS_DEBUG is not set +# CONFIG_SCSI_MVSAS_TASKLET is not set +CONFIG_SCSI_MVUMI=m +CONFIG_SCSI_NCR53C406A=m +CONFIG_SCSI_NETLINK=y +CONFIG_SCSI_NSP32=m +# CONFIG_SCSI_OSD_DEBUG is not set +CONFIG_SCSI_OSD_DPRINT_SENSE=1 +CONFIG_SCSI_OSD_INITIATOR=m +CONFIG_SCSI_OSD_ULD=m +CONFIG_SCSI_PAS16=m +CONFIG_SCSI_PM8001=m +CONFIG_SCSI_PMCRAID=m +CONFIG_SCSI_PPA=m +CONFIG_SCSI_PROC_FS=y +CONFIG_SCSI_QLA_FC=m +CONFIG_SCSI_QLA_ISCSI=m +CONFIG_SCSI_QLOGIC_1280=m +CONFIG_SCSI_QLOGIC_FAS=m +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_SNIC=m +# CONFIG_SCSI_SNIC_DEBUG_FS is not set +CONFIG_SCSI_SPI_ATTRS=m +CONFIG_SCSI_STEX=m +CONFIG_SCSI_SYM53C416=m +CONFIG_SCSI_SYM53C8XX_2=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_T128=m +CONFIG_SCSI_U14_34F=m +CONFIG_SCSI_U14_34F_LINKED_COMMANDS=y +CONFIG_SCSI_U14_34F_MAX_TAGS=8 +CONFIG_SCSI_U14_34F_TAGGED_QUEUE=y +CONFIG_SCSI_UFSHCD=m +CONFIG_SCSI_UFSHCD_PCI=m +CONFIG_SCSI_UFSHCD_PLATFORM=m +# CONFIG_SCSI_UFS_QCOM is not set +CONFIG_SCSI_ULTRASTOR=m +CONFIG_SCSI_VIRTIO=m +CONFIG_SCSI_WD719X=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_SCx200=m +CONFIG_SCx200HR_TIMER=m +CONFIG_SCx200_ACB=m +CONFIG_SCx200_GPIO=m +CONFIG_SCx200_WDT=m +CONFIG_SDIO_UART=m +CONFIG_SDLA=m +CONFIG_SEALEVEL_4021=m +CONFIG_SECCOMP=y +CONFIG_SECCOMP_FILTER=y +CONFIG_SECURITY=y +CONFIG_SECURITYFS=y +CONFIG_SECURITY_APPARMOR=y +CONFIG_SECURITY_APPARMOR_BOOTPARAM_VALUE=1 +CONFIG_SECURITY_APPARMOR_HASH=y +CONFIG_SECURITY_APPARMOR_HASH_DEFAULT=y +# CONFIG_SECURITY_APPARMOR_STATS is not set +CONFIG_SECURITY_APPARMOR_UNCONFINED_INIT=y +# CONFIG_SECURITY_DMESG_RESTRICT is not set +CONFIG_SECURITY_NETWORK=y +CONFIG_SECURITY_NETWORK_XFRM=y +CONFIG_SECURITY_PATH=y +CONFIG_SECURITY_SELINUX=y +CONFIG_SECURITY_SELINUX_AVC_STATS=y +CONFIG_SECURITY_SELINUX_BOOTPARAM=y +CONFIG_SECURITY_SELINUX_BOOTPARAM_VALUE=0 +CONFIG_SECURITY_SELINUX_CHECKREQPROT_VALUE=1 +CONFIG_SECURITY_SELINUX_DEVELOP=y +CONFIG_SECURITY_SELINUX_DISABLE=y +# CONFIG_SECURITY_SELINUX_POLICYDB_VERSION_MAX is not set +CONFIG_SECURITY_SMACK=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_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_SECURITY_YAMA_STACKED=y +CONFIG_SELECT_MEMORY_MODEL=y +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_ADM1275=m +CONFIG_SENSORS_ADM9240=m +CONFIG_SENSORS_ADS1015=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_AMS=m +# CONFIG_SENSORS_AMS_I2C is not set +# CONFIG_SENSORS_AMS_PMU is not set +CONFIG_SENSORS_APDS990X=m +CONFIG_SENSORS_APPLESMC=m +CONFIG_SENSORS_ASB100=m +CONFIG_SENSORS_ASC7621=m +CONFIG_SENSORS_ATK0110=m +CONFIG_SENSORS_ATXP1=m +CONFIG_SENSORS_BH1770=m +CONFIG_SENSORS_BH1780=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_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_G760A=m +CONFIG_SENSORS_G762=m +CONFIG_SENSORS_GL518SM=m +CONFIG_SENSORS_GL520SM=m +CONFIG_SENSORS_GPIO_FAN=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_HTU21=m +CONFIG_SENSORS_I5500=m +CONFIG_SENSORS_I5K_AMB=m +CONFIG_SENSORS_IBMAEM=m +CONFIG_SENSORS_IBMPEX=m +CONFIG_SENSORS_IBMPOWERNV=m +CONFIG_SENSORS_IIO_HWMON=m +CONFIG_SENSORS_INA209=m +CONFIG_SENSORS_INA2XX=m +CONFIG_SENSORS_ISL29018=m +CONFIG_SENSORS_ISL29028=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_I2C=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_LTC2945=m +CONFIG_SENSORS_LTC2978=m +CONFIG_SENSORS_LTC2978_REGULATOR=y +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_MAX1668=m +CONFIG_SENSORS_MAX197=m +CONFIG_SENSORS_MAX34440=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_NCT6683=m +CONFIG_SENSORS_NCT6775=m +CONFIG_SENSORS_NCT7802=m +CONFIG_SENSORS_NCT7904=m +CONFIG_SENSORS_NTC_THERMISTOR=m +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_SCH5627=m +CONFIG_SENSORS_SCH5636=m +CONFIG_SENSORS_SHT15=m +CONFIG_SENSORS_SHT21=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_TC74=m +CONFIG_SENSORS_THMC50=m +CONFIG_SENSORS_TMP102=m +CONFIG_SENSORS_TMP103=m +CONFIG_SENSORS_TMP401=m +CONFIG_SENSORS_TMP421=m +CONFIG_SENSORS_TPS40422=m +CONFIG_SENSORS_TSL2550=m +CONFIG_SENSORS_TSL2563=m +CONFIG_SENSORS_TWL4030_MADC=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_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_ZL6100=m +CONFIG_SERIAL_8250=y +CONFIG_SERIAL_8250_ACCENT=m +CONFIG_SERIAL_8250_BOCA=m +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_EM is not set +CONFIG_SERIAL_8250_EXAR_ST16C554=m +CONFIG_SERIAL_8250_EXTENDED=y +CONFIG_SERIAL_8250_FINTEK=m +CONFIG_SERIAL_8250_FOURPORT=m +CONFIG_SERIAL_8250_FSL=y +CONFIG_SERIAL_8250_HUB6=m +CONFIG_SERIAL_8250_INGENIC=y +CONFIG_SERIAL_8250_MANY_PORTS=y +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_RUNTIME_UARTS=32 +CONFIG_SERIAL_8250_SHARE_IRQ=y +CONFIG_SERIAL_8250_UNIPHIER=m +CONFIG_SERIAL_ALTERA_JTAGUART=m +CONFIG_SERIAL_ALTERA_UART=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=m +CONFIG_SERIAL_ARC_NR_PORTS=1 +CONFIG_SERIAL_BCM63XX=m +CONFIG_SERIAL_CONEXANT_DIGICOLOR=m +CONFIG_SERIAL_CORE=y +CONFIG_SERIAL_CORE_CONSOLE=y +CONFIG_SERIAL_CPM=m +CONFIG_SERIAL_EARLYCON=y +CONFIG_SERIAL_EARLYCON_ARM_SEMIHOST=y +CONFIG_SERIAL_FSL_LPUART=m +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_JSM=m +CONFIG_SERIAL_KGDB_NMI=y +CONFIG_SERIAL_MAX3100=m +CONFIG_SERIAL_MAX310X=y +CONFIG_SERIAL_MEN_Z135=m +CONFIG_SERIAL_MESON=m +CONFIG_SERIAL_MSM=y +CONFIG_SERIAL_MSM_CONSOLE=y +CONFIG_SERIAL_NONSTANDARD=y +CONFIG_SERIAL_OF_PLATFORM=y +CONFIG_SERIAL_OMAP=y +CONFIG_SERIAL_OMAP_CONSOLE=y +CONFIG_SERIAL_PCH_UART=m +CONFIG_SERIAL_PMACZILOG=y +CONFIG_SERIAL_PMACZILOG_CONSOLE=y +# CONFIG_SERIAL_PMACZILOG_TTYS is not set +CONFIG_SERIAL_RP2=m +CONFIG_SERIAL_RP2_NR_UARTS=32 +CONFIG_SERIAL_SAMSUNG=m +CONFIG_SERIAL_SAMSUNG_UARTS=4 +CONFIG_SERIAL_SAMSUNG_UARTS_4=y +CONFIG_SERIAL_SC16IS7XX=m +CONFIG_SERIAL_SC16IS7XX_CORE=m +CONFIG_SERIAL_SC16IS7XX_I2C=y +CONFIG_SERIAL_SC16IS7XX_SPI=y +CONFIG_SERIAL_SCCNXP=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_SPRD=m +CONFIG_SERIAL_STM32=m +CONFIG_SERIAL_ST_ASC=m +CONFIG_SERIAL_TEGRA=m +CONFIG_SERIAL_TIMBERDALE=m +CONFIG_SERIAL_UARTLITE=m +CONFIG_SERIAL_XILINX_PS_UART=m +CONFIG_SERIO=y +CONFIG_SERIO_ALTERA_PS2=m +CONFIG_SERIO_AMBAKMI=m +CONFIG_SERIO_APBPS2=m +CONFIG_SERIO_ARC_PS2=m +CONFIG_SERIO_CT82C710=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_XILINX_XPS_PS2=m +CONFIG_SFC=m +CONFIG_SFC_MCDI_LOGGING=y +CONFIG_SFC_MCDI_MON=y +CONFIG_SFC_MTD=y +CONFIG_SFC_SRIOV=y +CONFIG_SFI=y +CONFIG_SGETMASK_SYSCALL=y +CONFIG_SGI_IOC4=m +CONFIG_SGI_PARTITION=y +CONFIG_SGY_CTS1000=m +CONFIG_SHMEM=y +CONFIG_SHMOBILE_IOMMU=y +# CONFIG_SHMOBILE_IOMMU_ADDRSIZE_1024MB is not set +# CONFIG_SHMOBILE_IOMMU_ADDRSIZE_128MB is not set +CONFIG_SHMOBILE_IOMMU_ADDRSIZE_2048MB=y +# CONFIG_SHMOBILE_IOMMU_ADDRSIZE_256MB is not set +# CONFIG_SHMOBILE_IOMMU_ADDRSIZE_32MB is not set +# CONFIG_SHMOBILE_IOMMU_ADDRSIZE_512MB is not set +# CONFIG_SHMOBILE_IOMMU_ADDRSIZE_64MB is not set +CONFIG_SHMOBILE_IOMMU_L1SIZE=8192 +CONFIG_SHMOBILE_IPMMU=y +CONFIG_SHMOBILE_IPMMU_TLB=y +CONFIG_SHMOBILE_TIMER_HZ=128 +CONFIG_SH_DMAE=m +CONFIG_SH_DMAE_BASE=y +CONFIG_SH_ETH=m +CONFIG_SH_IRDA=m +CONFIG_SI7005=m +CONFIG_SI7020=m +CONFIG_SIGMATEL_FIR=m +CONFIG_SIGNALFD=y +CONFIG_SIGNATURE=y +CONFIG_SIMPLE_PM_BUS=y +CONFIG_SIS190=m +CONFIG_SIS900=m +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_SLABINFO=y +CONFIG_SLHC=y +CONFIG_SLICOSS=m +CONFIG_SLIP=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_STATS is not set +CONFIG_SMARTJOYPLUS_FF=y +CONFIG_SMC911X=m +CONFIG_SMC9194=m +CONFIG_SMC_IRCC_FIR=m +CONFIG_SMP=y +CONFIG_SMP_ON_UP=y +CONFIG_SMSC37B787_WDT=m +CONFIG_SMSC911X=m +# CONFIG_SMSC911X_ARCH_HOOKS is not set +CONFIG_SMSC9420=m +CONFIG_SMSC_PHY=m +CONFIG_SMSC_SCH311X_WDT=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_SND_AC97_CODEC=m +CONFIG_SND_AC97_POWER_SAVE=y +CONFIG_SND_AC97_POWER_SAVE_DEFAULT=0 +CONFIG_SND_AD1816A=m +CONFIG_SND_AD1848=m +CONFIG_SND_AD1889=m +CONFIG_SND_ADLIB=m +CONFIG_SND_ALI5451=m +CONFIG_SND_ALOOP=m +CONFIG_SND_ALS100=m +CONFIG_SND_ALS300=m +CONFIG_SND_ALS4000=m +CONFIG_SND_AM33XX_SOC_EVM=m +CONFIG_SND_AOA=m +CONFIG_SND_AOA_FABRIC_LAYOUT=m +CONFIG_SND_AOA_ONYX=m +CONFIG_SND_AOA_SOUNDBUS=m +CONFIG_SND_AOA_SOUNDBUS_I2S=m +CONFIG_SND_AOA_TAS=m +CONFIG_SND_AOA_TOONIE=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_AW2=m +CONFIG_SND_AZT1605=m +CONFIG_SND_AZT2316=m +CONFIG_SND_AZT2320=m +CONFIG_SND_AZT3328=m +CONFIG_SND_BCD2000=m +CONFIG_SND_BEBOB=m +CONFIG_SND_BT87X=m +# CONFIG_SND_BT87X_OVERCLOCK is not set +CONFIG_SND_CA0106=m +CONFIG_SND_CMI8328=m +CONFIG_SND_CMI8330=m +CONFIG_SND_CMIPCI=m +CONFIG_SND_CS4231=m +CONFIG_SND_CS4236=m +CONFIG_SND_CS4281=m +CONFIG_SND_CS46XX=m +CONFIG_SND_CS46XX_NEW_DSP=y +CONFIG_SND_CS5530=m +CONFIG_SND_CS5535AUDIO=m +CONFIG_SND_CTXFI=m +CONFIG_SND_DARLA20=m +CONFIG_SND_DARLA24=m +CONFIG_SND_DAVINCI_SOC_GENERIC_EVM=m +CONFIG_SND_DAVINCI_SOC_MCASP=m +# CONFIG_SND_DEBUG is not set +CONFIG_SND_DESIGNWARE_I2S=m +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_EDMA_SOC=m +CONFIG_SND_EMU10K1=m +CONFIG_SND_EMU10K1X=m +CONFIG_SND_EMU10K1_SEQ=m +CONFIG_SND_ENS1370=m +CONFIG_SND_ENS1371=m +CONFIG_SND_ES1688=m +CONFIG_SND_ES18XX=m +CONFIG_SND_ES1938=m +CONFIG_SND_ES1968=m +CONFIG_SND_ES1968_INPUT=y +CONFIG_SND_ES1968_RADIO=y +CONFIG_SND_FIREWIRE=y +CONFIG_SND_FIREWIRE_LIB=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_GUSCLASSIC=m +CONFIG_SND_GUSEXTREME=m +CONFIG_SND_GUSMAX=m +CONFIG_SND_HDA=m +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_CORE=m +CONFIG_SND_HDA_DSP_LOADER=y +CONFIG_SND_HDA_GENERIC=m +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=0 +CONFIG_SND_HDA_PREALLOC_SIZE=64 +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_ICE1712=m +CONFIG_SND_ICE1724=m +CONFIG_SND_IMX_SOC=y +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_INTERWAVE=m +CONFIG_SND_INTERWAVE_STB=m +CONFIG_SND_ISA=y +CONFIG_SND_ISIGHT=m +CONFIG_SND_JACK=y +CONFIG_SND_JAZZ16=m +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_MFLD_MACHINE=m +CONFIG_SND_MIA=m +CONFIG_SND_MIRO=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_MSND_CLASSIC=m +CONFIG_SND_MSND_PINNACLE=m +CONFIG_SND_MTPAV=m +CONFIG_SND_MTS64=m +CONFIG_SND_NM256=m +CONFIG_SND_OMAP_SOC=y +CONFIG_SND_OMAP_SOC_DMIC=m +CONFIG_SND_OMAP_SOC_HDMI_AUDIO=m +CONFIG_SND_OMAP_SOC_MCBSP=y +CONFIG_SND_OMAP_SOC_MCPDM=m +CONFIG_SND_OMAP_SOC_OMAP3_PANDORA=m +CONFIG_SND_OMAP_SOC_OMAP_ABE_TWL6040=m +CONFIG_SND_OMAP_SOC_OMAP_TWL4030=y +CONFIG_SND_OMAP_SOC_RX51=m +CONFIG_SND_OPL3SA2=m +CONFIG_SND_OPL3_LIB=m +CONFIG_SND_OPL3_LIB_SEQ=m +CONFIG_SND_OPL4_LIB=m +CONFIG_SND_OPTI92X_AD1848=m +CONFIG_SND_OPTI92X_CS4231=m +CONFIG_SND_OPTI93X=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_OSS=m +CONFIG_SND_PCM_OSS_PLUGINS=y +CONFIG_SND_PCSP=m +CONFIG_SND_PCXHR=m +CONFIG_SND_PDAUDIOCF=m +CONFIG_SND_PORTMAN2X4=m +CONFIG_SND_POWERMAC=m +CONFIG_SND_POWERMAC_AUTO_DRC=y +CONFIG_SND_POWERPC_SOC=m +CONFIG_SND_PPC=y +CONFIG_SND_PROC_FS=y +CONFIG_SND_PS3=m +CONFIG_SND_PS3_DEFAULT_START_DELAY=2000 +CONFIG_SND_RAWMIDI=m +CONFIG_SND_RAWMIDI_SEQ=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_SB16=m +CONFIG_SND_SB16_CSP=y +CONFIG_SND_SB16_DSP=m +CONFIG_SND_SB8=m +CONFIG_SND_SB8_DSP=m +CONFIG_SND_SBAWE=m +CONFIG_SND_SB_COMMON=m +CONFIG_SND_SC6000=m +CONFIG_SND_SCS1X=m +CONFIG_SND_SEQUENCER=m +# CONFIG_SND_SEQUENCER_OSS is not set +CONFIG_SND_SEQ_DUMMY=m +CONFIG_SND_SEQ_HRTIMER_DEFAULT=y +CONFIG_SND_SERIAL_U16550=m +CONFIG_SND_SIMPLE_CARD=m +CONFIG_SND_SIS7019=m +CONFIG_SND_SOC_AC97_BUS=y +CONFIG_SND_SOC_AC97_CODEC=m +CONFIG_SND_SOC_ADAU1701=m +CONFIG_SND_SOC_AK4104=m +CONFIG_SND_SOC_AK4554=m +CONFIG_SND_SOC_AK4642=m +CONFIG_SND_SOC_AK5386=m +CONFIG_SND_SOC_ALC5623=m +CONFIG_SND_SOC_ALC5632=m +CONFIG_SND_SOC_APQ8016_SBC=m +CONFIG_SND_SOC_ARNDALE_RT5631_ALC5631=m +CONFIG_SND_SOC_CS35L32=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_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_DMIC=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_ESAI=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_IMX_ES8328=m +CONFIG_SND_SOC_IMX_MC13783=m +CONFIG_SND_SOC_IMX_PCM_DMA=y +CONFIG_SND_SOC_IMX_PCM_FIQ=y +CONFIG_SND_SOC_IMX_SGTL5000=y +CONFIG_SND_SOC_IMX_SPDIF=m +CONFIG_SND_SOC_IMX_SSI=m +CONFIG_SND_SOC_IMX_WM8962=m +CONFIG_SND_SOC_INTEL_BAYTRAIL=m +CONFIG_SND_SOC_INTEL_BROADWELL_MACH=m +CONFIG_SND_SOC_INTEL_BYTCR_RT5640_MACH=m +CONFIG_SND_SOC_INTEL_BYT_MAX98090_MACH=m +CONFIG_SND_SOC_INTEL_BYT_RT5640_MACH=m +CONFIG_SND_SOC_INTEL_CHT_BSW_MAX98090_TI_MACH=m +CONFIG_SND_SOC_INTEL_CHT_BSW_RT5645_MACH=m +CONFIG_SND_SOC_INTEL_CHT_BSW_RT5672_MACH=m +CONFIG_SND_SOC_INTEL_HASWELL=m +CONFIG_SND_SOC_INTEL_HASWELL_MACH=m +CONFIG_SND_SOC_INTEL_SST=m +CONFIG_SND_SOC_INTEL_SST_ACPI=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_MAX98090=m +CONFIG_SND_SOC_MAX98095=m +CONFIG_SND_SOC_MAX98357A=m +CONFIG_SND_SOC_MC13783=m +CONFIG_SND_SOC_MEDIATEK=m +CONFIG_SND_SOC_MT8173_MAX98090=m +CONFIG_SND_SOC_MT8173_RT5650_RT5676=m +CONFIG_SND_SOC_ODROIDX2=m +CONFIG_SND_SOC_PCM1681=m +CONFIG_SND_SOC_PCM1792A=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_RCAR=m +CONFIG_SND_SOC_RL6231=m +CONFIG_SND_SOC_RL6347A=m +CONFIG_SND_SOC_RSRC_CARD=m +CONFIG_SND_SOC_RT286=m +CONFIG_SND_SOC_RT5631=m +CONFIG_SND_SOC_RT5640=m +CONFIG_SND_SOC_RT5645=m +CONFIG_SND_SOC_RT5670=m +CONFIG_SND_SOC_RT5677=m +CONFIG_SND_SOC_SAMSUNG=m +CONFIG_SND_SOC_SAMSUNG_SMDK_SPDIF=m +CONFIG_SND_SOC_SAMSUNG_SMDK_WM8994=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_SIRF_AUDIO_CODEC=m +CONFIG_SND_SOC_SMDK_WM8994_PCM=m +CONFIG_SND_SOC_SN95031=m +CONFIG_SND_SOC_SNOW=m +CONFIG_SND_SOC_SPDIF=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_STORM=m +CONFIG_SND_SOC_TAS2552=m +CONFIG_SND_SOC_TAS5086=m +CONFIG_SND_SOC_TAS571X=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_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_TLV320AIC23=m +CONFIG_SND_SOC_TLV320AIC23_I2C=m +CONFIG_SND_SOC_TLV320AIC23_SPI=m +CONFIG_SND_SOC_TLV320AIC31XX=m +CONFIG_SND_SOC_TLV320AIC3X=m +CONFIG_SND_SOC_TPA6130A2=m +CONFIG_SND_SOC_TS3A227E=m +CONFIG_SND_SOC_TWL4030=y +CONFIG_SND_SOC_TWL6040=m +CONFIG_SND_SOC_WM8510=m +CONFIG_SND_SOC_WM8523=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_WM8804=m +CONFIG_SND_SOC_WM8804_I2C=m +CONFIG_SND_SOC_WM8804_SPI=m +CONFIG_SND_SOC_WM8903=m +CONFIG_SND_SOC_WM8962=m +CONFIG_SND_SOC_WM8978=m +CONFIG_SND_SOC_WM8994=m +CONFIG_SND_SOC_WM9712=m +CONFIG_SND_SOC_WM_HUBS=m +CONFIG_SND_SOC_XTFPGA_I2S=m +CONFIG_SND_SONICVIBES=m +CONFIG_SND_SPI=y +CONFIG_SND_SSCAPE=m +CONFIG_SND_SST_IPC=m +CONFIG_SND_SST_IPC_ACPI=m +CONFIG_SND_SST_IPC_PCI=m +CONFIG_SND_SST_MFLD_PLATFORM=m +CONFIG_SND_SUPPORT_OLD_API=y +CONFIG_SND_TRIDENT=m +CONFIG_SND_USB=y +CONFIG_SND_USB_6FIRE=m +CONFIG_SND_USB_AUDIO=m +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_WAVEFRONT=m +CONFIG_SND_WSS_LIB=m +CONFIG_SND_YMFPCI=m +# CONFIG_SOCRATES is not set +# CONFIG_SOC_AM43XX is not set +CONFIG_SOC_BUS=y +CONFIG_SOC_CAMERA=m +CONFIG_SOC_CAMERA_IMX074=m +CONFIG_SOC_CAMERA_MT9M001=m +CONFIG_SOC_CAMERA_MT9M111=m +CONFIG_SOC_CAMERA_MT9T031=m +CONFIG_SOC_CAMERA_MT9T112=m +CONFIG_SOC_CAMERA_MT9V022=m +CONFIG_SOC_CAMERA_OV2640=m +CONFIG_SOC_CAMERA_OV5642=m +CONFIG_SOC_CAMERA_OV6650=m +CONFIG_SOC_CAMERA_OV772X=m +CONFIG_SOC_CAMERA_OV9640=m +CONFIG_SOC_CAMERA_OV9740=m +CONFIG_SOC_CAMERA_PLATFORM=m +CONFIG_SOC_CAMERA_RJ54N1=m +CONFIG_SOC_CAMERA_SCALE_CROP=m +CONFIG_SOC_CAMERA_TW9910=m +CONFIG_SOC_DRA7XX=y +CONFIG_SOC_EXYNOS5250=y +CONFIG_SOC_EXYNOS5260=y +CONFIG_SOC_EXYNOS5410=y +CONFIG_SOC_EXYNOS5420=y +CONFIG_SOC_EXYNOS5440=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_IMX6SX=y +CONFIG_SOC_IMX7D=y +# CONFIG_SOC_LS1021A is not set +CONFIG_SOC_OMAP3430=y +# CONFIG_SOC_OMAP5 is not set +CONFIG_SOC_TI=y +CONFIG_SOC_TI81XX=y +CONFIG_SOC_VF610=y +CONFIG_SOC_ZX296702=y +CONFIG_SOFT_WATCHDOG=m +CONFIG_SOLARIS_X86_PARTITION=y +CONFIG_SONYPI=m +CONFIG_SONYPI_COMPAT=y +CONFIG_SONY_FF=y +CONFIG_SONY_LAPTOP=m +CONFIG_SOUND_OSS_CORE=y +# CONFIG_SOUND_OSS_CORE_PRECLAIM is not set +# CONFIG_SOUND_PRIME is not set +CONFIG_SP5100_TCO=m +CONFIG_SPAPR_TCE_IOMMU=y +CONFIG_SPARSEMEM=y +CONFIG_SPARSEMEM_ALLOC_MEM_MAP_TOGETHER=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_SPARSE_RCU_POINTER is not set +CONFIG_SPEAKUP=m +CONFIG_SPEAKUP_SYNTH_ACNTPC=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_DECPC=m +CONFIG_SPEAKUP_SYNTH_DECTLK=m +CONFIG_SPEAKUP_SYNTH_DTLK=m +CONFIG_SPEAKUP_SYNTH_DUMMY=m +CONFIG_SPEAKUP_SYNTH_KEYPC=m +CONFIG_SPEAKUP_SYNTH_LTLK=m +CONFIG_SPEAKUP_SYNTH_SOFT=m +CONFIG_SPEAKUP_SYNTH_SPKOUT=m +CONFIG_SPEAKUP_SYNTH_TXPRT=m +CONFIG_SPI=y +CONFIG_SPI_ALTERA=m +CONFIG_SPI_BITBANG=m +CONFIG_SPI_BUTTERFLY=m +CONFIG_SPI_CADENCE=m +# CONFIG_SPI_DEBUG is not set +CONFIG_SPI_DESIGNWARE=m +CONFIG_SPI_DLN2=m +CONFIG_SPI_DW_MID_DMA=y +CONFIG_SPI_DW_MMIO=m +CONFIG_SPI_DW_PCI=m +CONFIG_SPI_FSL_CPM=y +CONFIG_SPI_FSL_DSPI=m +CONFIG_SPI_FSL_ESPI=y +CONFIG_SPI_FSL_LIB=y +CONFIG_SPI_FSL_QUADSPI=m +CONFIG_SPI_FSL_SPI=y +CONFIG_SPI_GPIO=m +CONFIG_SPI_IMX=m +CONFIG_SPI_LM70_LLP=m +CONFIG_SPI_MASTER=y +CONFIG_SPI_MESON_SPIFC=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_DMA=y +CONFIG_SPI_QUP=m +CONFIG_SPI_ROCKCHIP=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_SPIDEV=m +CONFIG_SPI_TEGRA114=m +CONFIG_SPI_TEGRA20_SFLASH=m +CONFIG_SPI_TEGRA20_SLINK=m +CONFIG_SPI_TI_QSPI=m +CONFIG_SPI_TLE62X0=m +CONFIG_SPI_TOPCLIFF_PCH=m +CONFIG_SPI_XCOMM=m +# CONFIG_SPI_XILINX is not set +CONFIG_SPI_ZYNQMP_GQSPI=m +CONFIG_SPLIT_PTLOCK_CPUS=4 +CONFIG_SPMI=m +CONFIG_SPMI_MSM_PMIC_ARB=m +CONFIG_SPU_BASE=y +CONFIG_SPU_FS=m +CONFIG_SPU_FS_64K_LS=y +CONFIG_SQUASHFS=m +# CONFIG_SQUASHFS_4K_DEVBLK_SIZE is not set +# CONFIG_SQUASHFS_DECOMP_MULTI is not set +CONFIG_SQUASHFS_DECOMP_MULTI_PERCPU=y +# CONFIG_SQUASHFS_DECOMP_SINGLE is not set +# 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 is not set +CONFIG_SQUASHFS_LZO=y +CONFIG_SQUASHFS_XATTR=y +CONFIG_SQUASHFS_XZ=y +CONFIG_SQUASHFS_ZLIB=y +CONFIG_SRAM=y +CONFIG_SRCU=y +CONFIG_SSB=m +CONFIG_SSB_B43_PCI_BRIDGE=y +CONFIG_SSB_BLOCKIO=y +# CONFIG_SSB_DEBUG is not set +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_SILENT is not set +CONFIG_SSB_SPROM=y +CONFIG_SSFDC=m +CONFIG_SSI_PROTOCOL=m +CONFIG_STACKTRACE=y +CONFIG_STACKTRACE_SUPPORT=y +CONFIG_STACK_TRACER=y +CONFIG_STAGING=y +# CONFIG_STAGING_BOARD is not set +CONFIG_STAGING_MEDIA=y +CONFIG_STE10XP=m +CONFIG_STE_MODEM_RPROC=m +CONFIG_STK3310=m +CONFIG_STK8312=m +CONFIG_STK8BA50=m +CONFIG_STMMAC_ETH=m +# CONFIG_STMMAC_PCI is not set +CONFIG_STMMAC_PLATFORM=m +CONFIG_STMPE_I2C=y +CONFIG_STMPE_SPI=y +CONFIG_STMP_DEVICE=y +CONFIG_STOP_MACHINE=y +CONFIG_STP=m +CONFIG_STRICT_DEVMEM=y +# CONFIG_STRICT_MM_TYPECHECKS is not set +# CONFIG_STRIP_ASM_SYMS is not set +# CONFIG_STX_GP3 is not set +CONFIG_SUDMAC=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_GSS=m +CONFIG_SUNRPC_SWAP=y +CONFIG_SUNRPC_XPRT_RDMA=m +# CONFIG_SUNXI_SRAM is not set +CONFIG_SUN_PARTITION=y +CONFIG_SUSPEND=y +CONFIG_SUSPEND_FREEZER=y +CONFIG_SWAP=y +CONFIG_SWIOTLB=y +CONFIG_SWIOTLB_XEN=y +CONFIG_SWP_EMULATE=y +CONFIG_SX9500=m +CONFIG_SXGBE_ETH=m +CONFIG_SYNCLINK=m +CONFIG_SYNCLINKMP=m +CONFIG_SYNCLINK_CS=m +CONFIG_SYNCLINK_GT=m +CONFIG_SYN_COOKIES=y +CONFIG_SYSCTL=y +CONFIG_SYSCTL_EXCEPTION_TRACE=y +CONFIG_SYSCTL_SYSCALL=y +CONFIG_SYSFS=y +# CONFIG_SYSFS_DEPRECATED is not set +CONFIG_SYSFS_SYSCALL=y +CONFIG_SYSTEMPORT=m +CONFIG_SYSTEM_TRUSTED_KEYRING=y +CONFIG_SYSV68_PARTITION=y +CONFIG_SYSVIPC=y +CONFIG_SYSVIPC_COMPAT=y +CONFIG_SYSVIPC_SYSCTL=y +CONFIG_SYSV_FS=m +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_TAHVO_USB=m +CONFIG_TAHVO_USB_HOST_BY_DEFAULT=y +CONFIG_TARGET_CORE=m +CONFIG_TASKSTATS=y +# CONFIG_TASKS_RCU is not set +CONFIG_TASK_DELAY_ACCT=y +CONFIG_TASK_IO_ACCOUNTING=y +CONFIG_TASK_SIZE=0xc0000000 +CONFIG_TASK_XACCT=y +CONFIG_TAU=y +# CONFIG_TAU_AVERAGE is not set +# CONFIG_TAU_INT is not set +CONFIG_TC1100_WMI=m +CONFIG_TCG_ATMEL=m +CONFIG_TCG_CRB=m +CONFIG_TCG_IBMVTPM=y +CONFIG_TCG_INFINEON=m +CONFIG_TCG_NSC=m +CONFIG_TCG_TIS=y +CONFIG_TCG_TIS_I2C_ATMEL=m +CONFIG_TCG_TIS_I2C_INFINEON=m +CONFIG_TCG_TIS_I2C_NUVOTON=m +CONFIG_TCG_TIS_ST33ZP24=m +CONFIG_TCG_TIS_ST33ZP24_I2C=m +CONFIG_TCG_TIS_ST33ZP24_SPI=m +CONFIG_TCG_TPM=y +CONFIG_TCG_XEN=m +CONFIG_TCIC=m +CONFIG_TCM_FC=m +CONFIG_TCM_FILEIO=m +CONFIG_TCM_IBLOCK=m +CONFIG_TCM_PSCSI=m +CONFIG_TCM_QLA2XXX=m +CONFIG_TCM_USER2=m +CONFIG_TCP_CONG_ADVANCED=y +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_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_TEGRA124_EMC=y +CONFIG_TEGRA20_APB_DMA=y +CONFIG_TEGRA20_MC=y +CONFIG_TEGRA_AHB=y +CONFIG_TEGRA_CLK_EMC=y +CONFIG_TEGRA_HOST1X=m +CONFIG_TEGRA_HOST1X_FIREWALL=y +CONFIG_TEGRA_IOMMU_GART=y +CONFIG_TEGRA_IOMMU_SMMU=y +CONFIG_TEGRA_MC=y +# CONFIG_TEGRA_SOCTHERM is not set +CONFIG_TEGRA_TIMER=y +CONFIG_TEGRA_WATCHDOG=m +CONFIG_TEHUTI=m +CONFIG_TEKRAM_DONGLE=m +CONFIG_TELCLOCK=m +CONFIG_TEST_BPF=m +CONFIG_TEST_FIRMWARE=m +CONFIG_TEST_HEXDUMP=m +CONFIG_TEST_KSTRTOX=m +# CONFIG_TEST_LIST_SORT is not set +CONFIG_TEST_LKM=m +CONFIG_TEST_POWER=m +# CONFIG_TEST_RHASHTABLE is not set +CONFIG_TEST_STRING_HELPERS=m +CONFIG_TEST_UDELAY=m +CONFIG_TEST_USER_COPY=m +CONFIG_TEXTSEARCH=y +CONFIG_TEXTSEARCH_BM=m +CONFIG_TEXTSEARCH_FSM=m +CONFIG_TEXTSEARCH_KMP=m +CONFIG_THERMAL=y +# 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_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_OF=y +CONFIG_THERMAL_WRITABLE_TRIPS=y +CONFIG_THERM_ADT746X=y +CONFIG_THERM_WINDTUNNEL=m +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_THRUSTMASTER_FF=y +# CONFIG_THUMB2_KERNEL is not set +CONFIG_THUNDERBOLT=m +CONFIG_THUNDER_NIC_BGX=m +CONFIG_THUNDER_NIC_PF=m +CONFIG_THUNDER_NIC_VF=m +CONFIG_TICK_CPU_ACCOUNTING=y +CONFIG_TICK_ONESHOT=y +CONFIG_TIFM_7XX1=m +CONFIG_TIFM_CORE=m +CONFIG_TIMB_DMA=m +CONFIG_TIMERFD=y +CONFIG_TIMER_STATS=y +CONFIG_TIPC=m +CONFIG_TIPC_MEDIA_IB=y +CONFIG_TIPC_MEDIA_UDP=y +CONFIG_TI_ADC081C=m +CONFIG_TI_ADC128S052=m +CONFIG_TI_AM335X_ADC=m +CONFIG_TI_CPPI41=m +CONFIG_TI_CPSW=y +CONFIG_TI_CPSW_PHY_SEL=y +CONFIG_TI_CPTS=y +CONFIG_TI_DAC7512=m +CONFIG_TI_DAVINCI_CPDMA=y +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_PIPE3=m +CONFIG_TI_PRIV_EDMA=y +CONFIG_TI_SOC_THERMAL=m +CONFIG_TI_ST=m +CONFIG_TI_THERMAL=y +CONFIG_TLAN=m +CONFIG_TMD_HERMES=m +CONFIG_TMP006=m +CONFIG_TMPFS=y +CONFIG_TMPFS_POSIX_ACL=y +CONFIG_TMPFS_XATTR=y +CONFIG_TOIM3232_DONGLE=m +CONFIG_TOPSTAR_LAPTOP=m +CONFIG_TORTURE_TEST=m +# CONFIG_TOSHIBA is not set +CONFIG_TOSHIBA_BT_RFKILL=m +CONFIG_TOSHIBA_FIR=m +CONFIG_TOSHIBA_HAPS=m +CONFIG_TOUCHSCREEN_88PM860X=m +CONFIG_TOUCHSCREEN_AD7877=m +CONFIG_TOUCHSCREEN_AD7879=m +CONFIG_TOUCHSCREEN_AD7879_I2C=m +CONFIG_TOUCHSCREEN_AD7879_SPI=m +CONFIG_TOUCHSCREEN_ADS7846=m +CONFIG_TOUCHSCREEN_AR1021_I2C=m +CONFIG_TOUCHSCREEN_ATMEL_MXT=m +CONFIG_TOUCHSCREEN_AUO_PIXCIR=m +CONFIG_TOUCHSCREEN_BU21013=m +CONFIG_TOUCHSCREEN_CHIPONE_ICN8318=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_DYNAPRO=m +CONFIG_TOUCHSCREEN_EDT_FT5X06=m +CONFIG_TOUCHSCREEN_EETI=m +CONFIG_TOUCHSCREEN_EGALAX=m +CONFIG_TOUCHSCREEN_ELAN=m +CONFIG_TOUCHSCREEN_ELO=m +CONFIG_TOUCHSCREEN_FUJITSU=m +CONFIG_TOUCHSCREEN_GOODIX=m +CONFIG_TOUCHSCREEN_GUNZE=m +CONFIG_TOUCHSCREEN_HAMPSHIRE=m +CONFIG_TOUCHSCREEN_HTCPEN=m +CONFIG_TOUCHSCREEN_ILI210X=m +CONFIG_TOUCHSCREEN_INEXIO=m +CONFIG_TOUCHSCREEN_INTEL_MID=m +CONFIG_TOUCHSCREEN_MAX11801=m +CONFIG_TOUCHSCREEN_MC13783=m +CONFIG_TOUCHSCREEN_MCS5000=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_ST1232=m +CONFIG_TOUCHSCREEN_STMPE=m +CONFIG_TOUCHSCREEN_SUR40=m +CONFIG_TOUCHSCREEN_SX8654=m +CONFIG_TOUCHSCREEN_SYNAPTICS_I2C_RMI4=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_TSC2005=m +CONFIG_TOUCHSCREEN_TSC2007=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_ZFORCE=m +CONFIG_TPS6105X=m +CONFIG_TPS65010=m +CONFIG_TPS6507X=m +# CONFIG_TQM8540 is not set +# CONFIG_TQM8541 is not set +# CONFIG_TQM8548 is not set +# CONFIG_TQM8555 is not set +# CONFIG_TQM8560 is not set +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_ENUM_MAP_FILE is not set +CONFIG_TRACE_IRQFLAGS_SUPPORT=y +CONFIG_TRACE_ROUTER=m +CONFIG_TRACE_SINK=m +CONFIG_TRACING=y +CONFIG_TRACING_SUPPORT=y +CONFIG_TRANSPARENT_HUGEPAGE=y +CONFIG_TRANSPARENT_HUGEPAGE_ALWAYS=y +# CONFIG_TRANSPARENT_HUGEPAGE_MADVISE is not set +CONFIG_TREE_RCU=y +# CONFIG_TREE_RCU_TRACE is not set +CONFIG_TRUSTED_FOUNDATIONS=y +CONFIG_TRUSTED_KEYS=y +CONFIG_TSL2583=m +CONFIG_TSL2x7x=m +CONFIG_TSL4531=m +CONFIG_TTPCI_EEPROM=m +CONFIG_TTY=y +CONFIG_TTY_PRINTK=y +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_CELL is not set +# CONFIG_TUN_VNET_CROSS_LE is not set +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_TWR_P102x=y +CONFIG_TYPHOON=m +# CONFIG_UACCESS_WITH_MEMCPY is not set +CONFIG_UBIFS_FS=m +# CONFIG_UBIFS_FS_ADVANCED_COMPR is not set +CONFIG_UBIFS_FS_LZO=y +CONFIG_UBIFS_FS_ZLIB=y +CONFIG_UCB1400_CORE=m +CONFIG_UCS2_STRING=y +CONFIG_UDF_FS=m +CONFIG_UDF_NLS=y +CONFIG_UEFI_CPER=y +CONFIG_UEVENT_HELPER=y +CONFIG_UEVENT_HELPER_PATH="" +# CONFIG_UFS_DEBUG is not set +CONFIG_UFS_FS=m +# CONFIG_UFS_FS_WRITE is not set +CONFIG_UHID=m +CONFIG_UID16=y +CONFIG_UIO=m +CONFIG_UIO_AEC=m +CONFIG_UIO_CIF=m +CONFIG_UIO_DMEM_GENIRQ=m +CONFIG_UIO_FSL_ELBC_GPCM=m +# CONFIG_UIO_FSL_ELBC_GPCM_NETX5152 is not set +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_ULI526X=m +CONFIG_ULTRA=m +CONFIG_ULTRIX_PARTITION=y +CONFIG_UNCOMPRESS_INCLUDE="debug/uncompress.h" +CONFIG_UNINLINE_SPIN_UNLOCK=y +CONFIG_UNISYSSPAR=y +CONFIG_UNISYS_VISORBUS=m +CONFIG_UNISYS_VISORNIC=m +CONFIG_UNIX=y +CONFIG_UNIX98_PTYS=y +CONFIG_UNIXWARE_DISKLABEL=y +CONFIG_UNIX_DIAG=m +CONFIG_UNUSED_SYMBOLS=y +CONFIG_UPROBE_EVENT=y +CONFIG_USB=y +CONFIG_USBIP_CORE=m +# CONFIG_USBIP_DEBUG is not set +CONFIG_USBIP_HOST=m +CONFIG_USBIP_VHCI_HCD=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_ATM=m +CONFIG_USB_AUDIO=m +CONFIG_USB_BDC_PCI=m +CONFIG_USB_BDC_UDC=m +CONFIG_USB_BELKIN=y +CONFIG_USB_C67X00_HCD=m +CONFIG_USB_CATC=m +CONFIG_USB_CDC_COMPOSITE=m +CONFIG_USB_CDC_PHONET=m +CONFIG_USB_CHAOSKEY=m +CONFIG_USB_CHIPIDEA=m +# CONFIG_USB_CHIPIDEA_DEBUG is not set +CONFIG_USB_CHIPIDEA_HOST=y +CONFIG_USB_CHIPIDEA_OF=m +CONFIG_USB_CHIPIDEA_PCI=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_UAC1=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_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_PCI=y +# CONFIG_USB_DWC2_PERIPHERAL is not set +# CONFIG_USB_DWC2_TRACK_MISSED_SOFS is not set +CONFIG_USB_DWC3=m +# CONFIG_USB_DWC3_DEBUG is not set +CONFIG_USB_DWC3_DUAL_ROLE=y +CONFIG_USB_DWC3_EXYNOS=m +# CONFIG_USB_DWC3_GADGET is not set +# CONFIG_USB_DWC3_HOST is not set +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_BIG_ENDIAN_DESC=y +CONFIG_USB_EHCI_BIG_ENDIAN_MMIO=y +CONFIG_USB_EHCI_EXYNOS=y +CONFIG_USB_EHCI_FSL=y +CONFIG_USB_EHCI_HCD=y +CONFIG_USB_EHCI_HCD_OMAP=m +CONFIG_USB_EHCI_HCD_ORION=y +CONFIG_USB_EHCI_HCD_PPC_OF=y +CONFIG_USB_EHCI_MSM=m +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_EMXX=y +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_FOTG210_HCD=m +CONFIG_USB_FOTG210_UDC=m +CONFIG_USB_FSL_QE=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_FUSBH200_HCD=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_UAC1=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_HSO=m +CONFIG_USB_HWA_HCD=m +CONFIG_USB_IDMOUSE=m +CONFIG_USB_IMX21_HCD=m +# CONFIG_USB_INVENTRA_DMA is not set +CONFIG_USB_IOWARRIOR=m +CONFIG_USB_IPHETH=m +CONFIG_USB_IRDA=m +CONFIG_USB_ISIGHTFW=m +CONFIG_USB_ISP116X_HCD=m +CONFIG_USB_ISP1301=m +CONFIG_USB_ISP1362_HCD=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_LCD=m +CONFIG_USB_LD=m +CONFIG_USB_LED=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_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_MSM_OTG=m +CONFIG_USB_MUSB_AM335X_CHILD=m +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_OMAP2PLUS=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_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_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_BIG_ENDIAN_DESC=y +CONFIG_USB_OHCI_BIG_ENDIAN_MMIO=y +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_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_FSM is not set +# CONFIG_USB_OTG_WHITELIST is not set +CONFIG_USB_OXU210HP_HCD=m +CONFIG_USB_PEGASUS=m +CONFIG_USB_PHY=y +CONFIG_USB_PRINTER=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_RAREMONO=m +CONFIG_USB_RCAR_PHY=m +CONFIG_USB_RENESAS_USBHS=m +CONFIG_USB_RENESAS_USBHS_HCD=m +CONFIG_USB_RENESAS_USBHS_UDC=m +CONFIG_USB_RIO500=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_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_MPR=y +CONFIG_USB_SERIAL_KEYSPAN_PDA=m +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_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_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_SISUSBVGA_CON is not set +CONFIG_USB_SL811_CS=m +CONFIG_USB_SL811_HCD=m +CONFIG_USB_SL811_HCD_ISO=y +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_SUPPORT=y +CONFIG_USB_SWITCH_FSA9480=m +CONFIG_USB_TEST=m +# CONFIG_USB_TI_CPPI41_DMA is not set +CONFIG_USB_TMC=m +CONFIG_USB_TRANCEVIBRATOR=m +CONFIG_USB_U132_HCD=m +CONFIG_USB_UAS=m +CONFIG_USB_UEAGLEATM=m +CONFIG_USB_UHCI_HCD=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_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_WHCI_HCD=m +CONFIG_USB_WPAN_HCD=m +CONFIG_USB_WUSB=m +CONFIG_USB_WUSB_CBAF=m +# CONFIG_USB_WUSB_CBAF_DEBUG is not set +CONFIG_USB_XHCI_HCD=y +CONFIG_USB_XHCI_MVEBU=m +CONFIG_USB_XHCI_PCI=y +CONFIG_USB_XHCI_PLATFORM=m +CONFIG_USB_XHCI_RCAR=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_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_UWB=m +CONFIG_UWB_HWA=m +CONFIG_UWB_I1480U=m +CONFIG_UWB_WHCI=m +CONFIG_V4L2_FLASH_LED_CLASS=m +CONFIG_V4L2_MEM2MEM_DEV=m +CONFIG_V4L_MEM2MEM_DRIVERS=y +CONFIG_V4L_PLATFORM_DRIVERS=y +CONFIG_V4L_RADIO_ISA_DRIVERS=y +CONFIG_V4L_TEST_DRIVERS=y +CONFIG_VCNL4000=m +CONFIG_VDSO=y +CONFIG_VDSO32=y +CONFIG_VECTORS_BASE=0xffff0000 +CONFIG_VERSION_SIGNATURE="" +CONFIG_VETH=m +CONFIG_VEXPRESS_CONFIG=y +CONFIG_VEXPRESS_SYSCFG=y +CONFIG_VF610_ADC=m +CONFIG_VFAT_FS=y +CONFIG_VFIO=m +CONFIG_VFIO_AMBA=m +CONFIG_VFIO_IOMMU_SPAPR_TCE=m +CONFIG_VFIO_PCI=m +CONFIG_VFIO_PCI_INTX=y +CONFIG_VFIO_PCI_MMAP=y +CONFIG_VFIO_PCI_VGA=y +CONFIG_VFIO_PLATFORM=m +CONFIG_VFIO_PLATFORM_CALXEDAXGMAC_RESET=m +CONFIG_VFIO_SPAPR_EEH=m +CONFIG_VFIO_VIRQFD=m +CONFIG_VFP=y +CONFIG_VFPv3=y +CONFIG_VF_USE_ARM_GLOBAL_TIMER=y +# CONFIG_VF_USE_PIT_TIMER is not set +# CONFIG_VGACON_SOFT_SCROLLBACK 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_NET=m +CONFIG_VHOST_RING=m +CONFIG_VHOST_SCSI=m +CONFIG_VIA_FIR=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_VMALLOC=m +CONFIG_VIDEOBUF_DMA_CONTIG=m +CONFIG_VIDEOBUF_DMA_SG=m +CONFIG_VIDEOBUF_DVB=m +CONFIG_VIDEOBUF_GEN=m +CONFIG_VIDEOBUF_VMALLOC=m +CONFIG_VIDEOMODE_HELPERS=y +CONFIG_VIDEO_ADV7170=m +CONFIG_VIDEO_ADV7175=m +CONFIG_VIDEO_ADV7180=m +CONFIG_VIDEO_ADV7511=m +CONFIG_VIDEO_ADV7604=m +CONFIG_VIDEO_ADV7842=m +# CONFIG_VIDEO_ADV_DEBUG is not set +CONFIG_VIDEO_AU0828=m +CONFIG_VIDEO_AU0828_RC=y +CONFIG_VIDEO_AU0828_V4L2=y +CONFIG_VIDEO_BT819=m +CONFIG_VIDEO_BT848=m +CONFIG_VIDEO_BT856=m +CONFIG_VIDEO_BT866=m +CONFIG_VIDEO_CAFE_CCIC=m +CONFIG_VIDEO_COBALT=m +CONFIG_VIDEO_CODA=m +CONFIG_VIDEO_CPIA2=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_EM28XX=m +CONFIG_VIDEO_EM28XX_ALSA=m +CONFIG_VIDEO_EM28XX_DVB=m +CONFIG_VIDEO_EM28XX_RC=m +CONFIG_VIDEO_EM28XX_V4L2=m +CONFIG_VIDEO_FB_IVTV=m +# 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_HDPVR=m +CONFIG_VIDEO_HEXIUM_GEMINI=m +CONFIG_VIDEO_HEXIUM_ORION=m +CONFIG_VIDEO_IR_I2C=m +CONFIG_VIDEO_IVTV=m +CONFIG_VIDEO_IVTV_ALSA=m +CONFIG_VIDEO_KS0127=m +CONFIG_VIDEO_M52790=m +CONFIG_VIDEO_MEM2MEM_DEINTERLACE=m +CONFIG_VIDEO_MEYE=m +CONFIG_VIDEO_MSP3400=m +CONFIG_VIDEO_MT9V011=m +CONFIG_VIDEO_MX3=m +CONFIG_VIDEO_MXB=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_OV7640=m +CONFIG_VIDEO_OV7670=m +CONFIG_VIDEO_PVRUSB2=m +# CONFIG_VIDEO_PVRUSB2_DEBUGIFC is not set +CONFIG_VIDEO_PVRUSB2_DVB=y +CONFIG_VIDEO_PVRUSB2_SYSFS=y +CONFIG_VIDEO_RCAR_VIN=m +CONFIG_VIDEO_RENESAS_VSP1=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_HDMI=m +CONFIG_VIDEO_SAMSUNG_S5P_HDMIPHY=m +# CONFIG_VIDEO_SAMSUNG_S5P_HDMI_DEBUG is not set +CONFIG_VIDEO_SAMSUNG_S5P_JPEG=m +CONFIG_VIDEO_SAMSUNG_S5P_MFC=m +CONFIG_VIDEO_SAMSUNG_S5P_MIXER=m +# CONFIG_VIDEO_SAMSUNG_S5P_MIXER_DEBUG is not set +CONFIG_VIDEO_SAMSUNG_S5P_SDO=m +CONFIG_VIDEO_SAMSUNG_S5P_SII9234=m +CONFIG_VIDEO_SAMSUNG_S5P_TV=y +CONFIG_VIDEO_SH_MOBILE_CEU=m +CONFIG_VIDEO_SH_MOBILE_CSI2=m +CONFIG_VIDEO_SH_VEU=m +CONFIG_VIDEO_SH_VOU=m +CONFIG_VIDEO_SOLO6X10=m +CONFIG_VIDEO_SONY_BTF_MPX=m +CONFIG_VIDEO_STK1160=m +CONFIG_VIDEO_STK1160_AC97=y +CONFIG_VIDEO_STK1160_COMMON=m +CONFIG_VIDEO_TDA7432=m +CONFIG_VIDEO_TDA9840=m +CONFIG_VIDEO_TEA6415C=m +CONFIG_VIDEO_TEA6420=m +CONFIG_VIDEO_TIMBERDALE=m +CONFIG_VIDEO_TI_VPE=m +# CONFIG_VIDEO_TI_VPE_DEBUG is not set +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_TVP5150=m +CONFIG_VIDEO_TW2804=m +CONFIG_VIDEO_TW68=m +CONFIG_VIDEO_TW9903=m +CONFIG_VIDEO_TW9906=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_SUBDEV_API=y +CONFIG_VIDEO_VIA_CAMERA=m +CONFIG_VIDEO_VIM2M=m +CONFIG_VIDEO_VIVID=m +CONFIG_VIDEO_VP27SMPX=m +CONFIG_VIDEO_VPX3220=m +CONFIG_VIDEO_WM8739=m +CONFIG_VIDEO_WM8775=m +CONFIG_VIDEO_XILINX=m +CONFIG_VIDEO_XILINX_TPG=m +CONFIG_VIDEO_XILINX_VTC=m +CONFIG_VIDEO_ZORAN=m +CONFIG_VIDEO_ZORAN_AVS6EYES=m +CONFIG_VIDEO_ZORAN_BUZ=m +CONFIG_VIDEO_ZORAN_DC10=m +CONFIG_VIDEO_ZORAN_DC30=m +CONFIG_VIDEO_ZORAN_LML33=m +CONFIG_VIDEO_ZORAN_LML33R10=m +CONFIG_VIDEO_ZORAN_ZR36060=m +CONFIG_VIPERBOARD_ADC=m +CONFIG_VIRTIO=y +CONFIG_VIRTIO_BALLOON=y +CONFIG_VIRTIO_BLK=y +CONFIG_VIRTIO_CONSOLE=y +CONFIG_VIRTIO_INPUT=m +CONFIG_VIRTIO_MMIO=y +CONFIG_VIRTIO_MMIO_CMDLINE_DEVICES=y +CONFIG_VIRTIO_NET=y +CONFIG_VIRTIO_PCI=y +CONFIG_VIRTIO_PCI_LEGACY=y +CONFIG_VIRTUALIZATION=y +# CONFIG_VIRT_CPU_ACCOUNTING_GEN is not set +# CONFIG_VIRT_CPU_ACCOUNTING_NATIVE is not set +CONFIG_VIRT_DRIVERS=y +CONFIG_VIRT_TO_BUS=y +CONFIG_VITESSE_PHY=m +CONFIG_VLAN_8021Q=m +CONFIG_VLAN_8021Q_GVRP=y +CONFIG_VLAN_8021Q_MVRP=y +CONFIG_VLSI_FIR=m +CONFIG_VME_BUS=y +CONFIG_VME_CA91CX42=m +CONFIG_VME_PIO2=m +CONFIG_VME_TSI148=m +CONFIG_VME_USER=m +CONFIG_VMIVME_7805=m +# CONFIG_VMSPLIT_1G is not set +# CONFIG_VMSPLIT_2G is not set +CONFIG_VMSPLIT_3G=y +CONFIG_VMWARE_BALLOON=m +CONFIG_VMWARE_PVSCSI=m +CONFIG_VMWARE_VMCI=m +CONFIG_VMWARE_VMCI_VSOCKETS=m +CONFIG_VMXNET3=m +CONFIG_VM_EVENT_COUNTERS=y +CONFIG_VORTEX=m +CONFIG_VSOCKETS=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_VXFS_FS=m +CONFIG_VXGE=m +# CONFIG_VXGE_DEBUG_TRACE_ALL is not set +CONFIG_VXLAN=m +CONFIG_W1=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_SLAVE_BQ27000=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_DS2431=m +CONFIG_W1_SLAVE_DS2433=m +# CONFIG_W1_SLAVE_DS2433_CRC is not set +CONFIG_W1_SLAVE_DS2760=m +CONFIG_W1_SLAVE_DS2780=m +CONFIG_W1_SLAVE_DS2781=m +CONFIG_W1_SLAVE_DS28E04=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_WAN=y +CONFIG_WANT_DEV_COREDUMP=y +CONFIG_WANXL=m +CONFIG_WATCHDOG=y +CONFIG_WATCHDOG_CORE=y +# CONFIG_WATCHDOG_NOWAYOUT is not set +CONFIG_WATCHDOG_RTAS=m +CONFIG_WCN36XX=m +# CONFIG_WCN36XX_DEBUGFS is not set +CONFIG_WD80x3=m +CONFIG_WDT=m +CONFIG_WDTPCI=m +CONFIG_WEXT_CORE=y +CONFIG_WEXT_PRIV=y +CONFIG_WEXT_PROC=y +CONFIG_WEXT_SPY=y +CONFIG_WIL6210=m +CONFIG_WIL6210_ISR_COR=y +CONFIG_WIL6210_TRACING=y +CONFIG_WILINK_PLATFORM_DATA=y +CONFIG_WIMAX=m +CONFIG_WIMAX_DEBUG_LEVEL=8 +CONFIG_WIMAX_GDM72XX=m +CONFIG_WIMAX_GDM72XX_K_MODE=y +CONFIG_WIMAX_GDM72XX_QOS=y +# CONFIG_WIMAX_GDM72XX_SDIO is not set +CONFIG_WIMAX_GDM72XX_USB=y +CONFIG_WIMAX_GDM72XX_USB_PM=y +CONFIG_WIMAX_GDM72XX_WIMAX2=y +CONFIG_WIMAX_I2400M=m +CONFIG_WIMAX_I2400M_DEBUG_LEVEL=8 +CONFIG_WIMAX_I2400M_USB=m +CONFIG_WINBOND_840=m +CONFIG_WINBOND_FIR=m +CONFIG_WINDFARM=m +CONFIG_WINDFARM_PM112=m +CONFIG_WINDFARM_PM121=m +CONFIG_WINDFARM_PM72=m +CONFIG_WINDFARM_PM81=m +CONFIG_WINDFARM_PM91=m +CONFIG_WINDFARM_RM31=m +CONFIG_WIRELESS=y +CONFIG_WIRELESS_EXT=y +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_W5300=m +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_WLCORE=m +CONFIG_WLCORE_SDIO=m +CONFIG_WLCORE_SPI=m +CONFIG_WL_MEDIATEK=y +CONFIG_WL_TI=y +CONFIG_WM831X_BACKUP=m +CONFIG_WM831X_POWER=m +CONFIG_WM831X_WATCHDOG=m +CONFIG_WM8350_POWER=m +CONFIG_WM8350_WATCHDOG=m +CONFIG_WQ_POWER_EFFICIENT_DEFAULT=y +CONFIG_X25=m +CONFIG_X25_ASY=m +CONFIG_X509_CERTIFICATE_PARSER=y +CONFIG_X86=y +CONFIG_X86_16BIT=y +CONFIG_X86_32=y +CONFIG_X86_32_IRIS=m +# CONFIG_X86_32_NON_STANDARD is not set +CONFIG_X86_32_SMP=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_ANCIENT_MCE is not set +CONFIG_X86_APM_BOOT=y +# CONFIG_X86_BIGSMP is not set +CONFIG_X86_BOOTPARAM_MEMORY_CORRUPTION_CHECK=y +CONFIG_X86_CHECK_BIOS_CORRUPTION=y +CONFIG_X86_CMOV=y +CONFIG_X86_CMPXCHG64=y +CONFIG_X86_CPUFREQ_NFORCE2=y +CONFIG_X86_CPUID=m +CONFIG_X86_DEBUGCTLMSR=y +CONFIG_X86_DEBUG_FPU=y +# CONFIG_X86_DEBUG_STATIC_CPU_HAS is not set +# CONFIG_X86_DECODER_SELFTEST is not set +CONFIG_X86_DEV_DMA_OPS=y +CONFIG_X86_DIRECT_GBPAGES=y +CONFIG_X86_ESPFIX32=y +CONFIG_X86_ESPFIX64=y +CONFIG_X86_EXTENDED_PLATFORM=y +# CONFIG_X86_E_POWERSAVER is not set +CONFIG_X86_FEATURE_NAMES=y +CONFIG_X86_GENERIC=y +# CONFIG_X86_GOLDFISH is not set +CONFIG_X86_GX_SUSPMOD=m +CONFIG_X86_INTEL_LPSS=y +CONFIG_X86_INTEL_MID=y +CONFIG_X86_INTEL_MPX=y +CONFIG_X86_INTEL_PSTATE=y +# CONFIG_X86_INTEL_QUARK is not set +CONFIG_X86_INTEL_USERCOPY=y +CONFIG_X86_INTERNODE_CACHE_SHIFT=6 +CONFIG_X86_IO_APIC=y +CONFIG_X86_L1_CACHE_SHIFT=6 +CONFIG_X86_LEGACY_VM86=y +CONFIG_X86_LOCAL_APIC=y +CONFIG_X86_LONGHAUL=m +CONFIG_X86_LONGRUN=m +CONFIG_X86_MCE=y +CONFIG_X86_MCE_AMD=y +CONFIG_X86_MCE_INJECT=m +CONFIG_X86_MCE_INTEL=y +CONFIG_X86_MCE_THRESHOLD=y +CONFIG_X86_MPPARSE=y +CONFIG_X86_MSR=m +CONFIG_X86_NEED_RELOCS=y +CONFIG_X86_NUMACHIP=y +CONFIG_X86_P4_CLOCKMOD=m +CONFIG_X86_PAE=y +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_PM_TIMER=y +CONFIG_X86_POWERNOW_K6=m +CONFIG_X86_POWERNOW_K7=m +CONFIG_X86_POWERNOW_K7_ACPI=y +CONFIG_X86_POWERNOW_K8=y +CONFIG_X86_PPRO_FENCE=y +# CONFIG_X86_PTDUMP is not set +# CONFIG_X86_RDC321X is not set +CONFIG_X86_REBOOTFIXUPS=y +CONFIG_X86_REROUTE_FOR_BROKEN_BOOT_IRQS=y +CONFIG_X86_RESERVE_LOW=64 +CONFIG_X86_SFI_CPUFREQ=m +CONFIG_X86_SMAP=y +CONFIG_X86_SPEEDSTEP_CENTRINO=y +CONFIG_X86_SPEEDSTEP_CENTRINO_TABLE=y +CONFIG_X86_SPEEDSTEP_ICH=y +CONFIG_X86_SPEEDSTEP_RELAXED_CAP_CHECK=y +CONFIG_X86_SPEEDSTEP_SMI=y +CONFIG_X86_SUPPORTS_MEMORY_FAILURE=y +# CONFIG_X86_SYSFB is not set +CONFIG_X86_THERMAL_VECTOR=y +CONFIG_X86_TSC=y +CONFIG_X86_USE_PPRO_CHECKSUM=y +# CONFIG_X86_UV is not set +# CONFIG_X86_VERBOSE_BOOTUP is not set +# CONFIG_X86_VSMP is not set +CONFIG_X86_VSYSCALL_EMULATION=y +CONFIG_X86_X2APIC=y +CONFIG_X86_X32=y +CONFIG_XENFS=m +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_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_GNTDEV=m +CONFIG_XEN_GRANT_DEV_ALLOC=m +CONFIG_XEN_HAVE_PVMMU=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_PVH=y +CONFIG_XEN_PVHVM=y +CONFIG_XEN_SAVE_RESTORE=y +CONFIG_XEN_SCRUB_PAGES=y +CONFIG_XEN_SCSI_BACKEND=m +CONFIG_XEN_SCSI_FRONTEND=m +CONFIG_XEN_SELFBALLOONING=y +CONFIG_XEN_SYS_HYPERVISOR=y +CONFIG_XEN_TMEM=m +CONFIG_XEN_WDT=m +CONFIG_XEN_XENBUS_FRONTEND=y +# CONFIG_XES_MPC85xx is not set +CONFIG_XFRM=y +CONFIG_XFRM_ALGO=m +CONFIG_XFRM_IPCOMP=m +# CONFIG_XFRM_MIGRATE is not set +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_POSIX_ACL=y +CONFIG_XFS_QUOTA=y +CONFIG_XFS_RT=y +# CONFIG_XFS_WARN is not set +CONFIG_XGENE_DMA=m +CONFIG_XILINX_EMACLITE=m +CONFIG_XILINX_LL_TEMAC=m +CONFIG_XILINX_WATCHDOG=m +CONFIG_XILLYBUS=m +CONFIG_XILLYBUS_OF=m +CONFIG_XILLYBUS_PCIE=m +CONFIG_XMON=y +# CONFIG_XMON_DEFAULT is not set +CONFIG_XMON_DISASSEMBLY=y +CONFIG_XOR_BLOCKS=m +CONFIG_XPS=y +CONFIG_XPS_USB_HCD_XILINX=y +CONFIG_XZ_DEC=y +CONFIG_XZ_DEC_ARM=y +CONFIG_XZ_DEC_ARMTHUMB=y +CONFIG_XZ_DEC_BCJ=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_YAM=m +CONFIG_YELLOWFIN=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_ZBOOT_ROM_BSS=0x0 +CONFIG_ZBOOT_ROM_TEXT=0x0 +CONFIG_ZBUD=y +CONFIG_ZD1211RW=m +# CONFIG_ZD1211RW_DEBUG is not set +CONFIG_ZEROPLUS_FF=y +CONFIG_ZISOFS=y +CONFIG_ZLIB_DEFLATE=y +CONFIG_ZLIB_INFLATE=y +CONFIG_ZONE_DMA=y +CONFIG_ZONE_DMA32=y +CONFIG_ZONE_DMA_FLAG=1 +CONFIG_ZPOOL=y +CONFIG_ZRAM=m +CONFIG_ZRAM_LZ4_COMPRESS=y +CONFIG_ZSMALLOC=y +# CONFIG_ZSMALLOC_STAT is not set +CONFIG_ZSWAP=y +CONFIG_ZX296702_I2S=m +CONFIG_ZX296702_SPDIF=m --- linux-raspi2-4.2.0.orig/debian.master/config/i386/config.common.i386 +++ linux-raspi2-4.2.0/debian.master/config/i386/config.common.i386 @@ -0,0 +1,151 @@ +# +# Config options for config.common.i386 automatically generated by splitconfig.pl +# +# CONFIG_64BIT is not set +CONFIG_AC97_BUS=m +# CONFIG_ACPI_REDUCED_HARDWARE_ONLY is not set +CONFIG_ARCH_DEFCONFIG="arch/x86/configs/i386_defconfig" +CONFIG_ARCH_DMA_ADDR_T_64BIT=y +CONFIG_ARCH_HWEIGHT_CFLAGS="-fcall-saved-ecx -fcall-saved-edx" +# CONFIG_ARCH_NEEDS_CPU_IDLE_COUPLED is not set +CONFIG_ARCH_PHYS_ADDR_T_64BIT=y +CONFIG_ARCH_RANDOM=y +CONFIG_ARCH_SELECT_MEMORY_MODEL=y +CONFIG_ATA_GENERIC=y +# CONFIG_ATA_NONSTANDARD is not set +CONFIG_ATA_PIIX=y +# CONFIG_AUDIT_ARCH_COMPAT_GENERIC is not set +CONFIG_BCH=m +CONFIG_CC_STACKPROTECTOR=y +CONFIG_CRASH_DUMP=y +# CONFIG_CXL_BASE is not set +# CONFIG_CXL_EEH is not set +# CONFIG_CXL_KERNEL_API is not set +CONFIG_DEFAULT_MMAP_MIN_ADDR=65536 +CONFIG_DMA_VIRTUAL_CHANNELS=m +# CONFIG_EM_TIMER_STI is not set +CONFIG_FB_ATY128=m +CONFIG_FB_BOOT_VESA_SUPPORT=y +# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set +# CONFIG_FB_MACMODES is not set +CONFIG_FB_SYS_COPYAREA=m +CONFIG_FB_SYS_FILLRECT=m +CONFIG_FB_SYS_FOPS=m +CONFIG_FB_SYS_IMAGEBLIT=m +CONFIG_FB_UDL=m +CONFIG_FB_VOODOO1=m +# CONFIG_FONTS is not set +CONFIG_FRAME_WARN=1024 +CONFIG_GPIO_GENERIC=m +CONFIG_GPIO_GENERIC_PLATFORM=m +CONFIG_GPIO_TWL4030=m +CONFIG_GPIO_TWL6040=m +# CONFIG_HAVE_64BIT_ALIGNED_ACCESS is not set +CONFIG_HAVE_AOUT=y +# CONFIG_HAVE_ARCH_BITREVERSE is not set +# CONFIG_HAVE_BOOTMEM_INFO_NODE is not set +CONFIG_HAVE_GENERIC_DMA_COHERENT=y +CONFIG_HAVE_SETUP_PER_CPU_AREA=y +CONFIG_HIBERNATION=y +CONFIG_HOTPLUG_PCI_PCIE=y +CONFIG_HOTPLUG_PCI_SHPC=m +CONFIG_HPET=y +CONFIG_HUGETLB_PAGE=y +# CONFIG_I2C_SLAVE is not set +CONFIG_ILLEGAL_POINTER_VALUE=0 +CONFIG_IMA=y +CONFIG_IPMI_SI_PROBE_DEFAULTS=y +CONFIG_ISA=y +CONFIG_JUMP_LABEL=y +CONFIG_KVM=m +CONFIG_LEDS_TRIGGER_HEARTBEAT=m +CONFIG_LOG_BUF_SHIFT=17 +# CONFIG_MATH_EMULATION is not set +CONFIG_MFD_SM501=m +# CONFIG_MFD_TMIO is not set +CONFIG_MII=m +CONFIG_MMC_BLOCK=m +CONFIG_MMC_SDHCI=m +CONFIG_MMC_SDHCI_PLTFM=m +CONFIG_MTD=m +CONFIG_MTD_BLKDEVS=m +CONFIG_MTD_BLOCK=m +CONFIG_MTD_CMDLINE_PARTS=m +CONFIG_MTD_NAND=m +CONFIG_MTD_NAND_BCH=m +CONFIG_MTD_NAND_ECC=m +CONFIG_MTD_NAND_IDS=m +# CONFIG_MTD_NAND_OMAP_BCH_BUILD is not set +CONFIG_NEED_DMA_MAP_STATE=y +CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK=y +CONFIG_NR_CPUS=8 +CONFIG_NVRAM=m +# CONFIG_OF is not set +CONFIG_OUTPUT_FORMAT="elf32-i386" +CONFIG_PAGE_OFFSET=0xC0000000 +CONFIG_PATA_SIS=y +CONFIG_PCCARD=m +CONFIG_PGTABLE_LEVELS=3 +CONFIG_PHYSICAL_ALIGN=0x1000000 +CONFIG_PHYSICAL_START=0x1000000 +CONFIG_PHYS_ADDR_T_64BIT=y +# CONFIG_PHY_EXYNOS5250_USB2 is not set +CONFIG_PPS=m +CONFIG_PROBE_EVENTS=y +# CONFIG_PSTORE_CONSOLE is not set +CONFIG_PSTORE_RAM=m +CONFIG_PTP_1588_CLOCK=m +CONFIG_RANDOMIZE_BASE_MAX_OFFSET=0x20000000 +CONFIG_RCU_CPU_STALL_TIMEOUT=60 +# CONFIG_RCU_NOCB_CPU is not set +CONFIG_REED_SOLOMON=m +CONFIG_REGULATOR_FIXED_VOLTAGE=m +CONFIG_REGULATOR_TWL4030=m +CONFIG_RTC_DRV_CMOS=y +CONFIG_RTC_DRV_DS3232=m +CONFIG_RTC_DRV_PCF8523=m +CONFIG_RTC_DRV_TWL4030=m +CONFIG_SATA_AHCI_PLATFORM=m +CONFIG_SATA_SVW=m +CONFIG_SCHED_SMT=y +CONFIG_SCSI_SRP_ATTRS=m +CONFIG_SENSORS_SCH56XX_COMMON=m +CONFIG_SERIAL_8250_DW=m +# CONFIG_SH_TIMER_CMT is not set +# CONFIG_SH_TIMER_MTU2 is not set +# CONFIG_SH_TIMER_TMU is not set +CONFIG_SND=m +CONFIG_SND_COMPRESS_OFFLOAD=m +CONFIG_SND_DMAENGINE_PCM=m +CONFIG_SND_OPL4_LIB_SEQ=m +CONFIG_SND_PCM=m +CONFIG_SND_SBAWE_SEQ=m +CONFIG_SND_SOC=m +CONFIG_SND_SOC_FSL_SSI=m +CONFIG_SND_SOC_HDMI_CODEC=m +CONFIG_SND_SOC_I2C_AND_SPI=m +CONFIG_SND_SOC_IMX_AUDMUX=m +# CONFIG_SND_SOC_RT5677_SPI is not set +CONFIG_SND_SOC_SGTL5000=m +CONFIG_SND_TIMER=m +CONFIG_SOUND=m +CONFIG_SPI_PXA2XX_PCI=m +# CONFIG_STANDALONE is not set +CONFIG_SYS_HYPERVISOR=y +CONFIG_TIGON3=m +CONFIG_TI_CPSW_ALE=m +CONFIG_UPROBES=y +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_VFIO_IOMMU_TYPE1=m +CONFIG_VM86=y +CONFIG_X86_MINIMUM_CPU_FAMILY=5 +CONFIG_X86_SPEEDSTEP_LIB=y +CONFIG_XEN=y +CONFIG_XEN_BALLOON_MEMORY_HOTPLUG_LIMIT=4 +CONFIG_XEN_MAX_DOMAIN_MEMORY=64 --- linux-raspi2-4.2.0.orig/debian.master/config/i386/config.flavour.generic +++ linux-raspi2-4.2.0/debian.master/config/i386/config.flavour.generic @@ -0,0 +1,9 @@ +# +# 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_PREEMPT is not set +CONFIG_PREEMPT_VOLUNTARY=y --- linux-raspi2-4.2.0.orig/debian.master/config/i386/config.flavour.lowlatency +++ linux-raspi2-4.2.0/debian.master/config/i386/config.flavour.lowlatency @@ -0,0 +1,9 @@ +# +# 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_PREEMPT=y +# CONFIG_PREEMPT_VOLUNTARY is not set --- linux-raspi2-4.2.0.orig/debian.master/config/powerpc/config.common.powerpc +++ linux-raspi2-4.2.0/debian.master/config/powerpc/config.common.powerpc @@ -0,0 +1,145 @@ +# +# Config options for config.common.powerpc automatically generated by splitconfig.pl +# +CONFIG_64BIT=y +CONFIG_AC97_BUS=m +CONFIG_APM_EMULATION=m +# CONFIG_ARCH_NEEDS_CPU_IDLE_COUPLED is not set +CONFIG_ARCH_SELECT_MEMORY_MODEL=y +CONFIG_ARCH_SPARSEMEM_DEFAULT=y +CONFIG_ATA_GENERIC=m +CONFIG_ATA_PIIX=m +# CONFIG_AUDIT_ARCH_COMPAT_GENERIC is not set +CONFIG_BCH=m +# CONFIG_CC_STACKPROTECTOR is not set +CONFIG_CPU_BIG_ENDIAN=y +# CONFIG_CPU_LITTLE_ENDIAN is not set +CONFIG_DEFAULT_MMAP_MIN_ADDR=65536 +CONFIG_DMA_VIRTUAL_CHANNELS=m +# CONFIG_EM_TIMER_STI is not set +CONFIG_FB_ATY128=y +# CONFIG_FB_BOOT_VESA_SUPPORT is not set +# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set +CONFIG_FB_IBM_GXT4500=m +CONFIG_FB_MACMODES=y +CONFIG_FB_VOODOO1=y +# CONFIG_FONTS is not set +CONFIG_FRAME_WARN=1024 +# CONFIG_GENERIC_CSUM is not set +CONFIG_GPIO_GENERIC=m +CONFIG_GPIO_GENERIC_PLATFORM=m +CONFIG_GPIO_TWL4030=m +CONFIG_GPIO_TWL6040=m +# CONFIG_HAVE_64BIT_ALIGNED_ACCESS is not set +# CONFIG_HAVE_AOUT is not set +# CONFIG_HAVE_ARCH_BITREVERSE is not set +# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set +CONFIG_HOTPLUG_PCI_PCIE=y +CONFIG_HOTPLUG_PCI_SHPC=m +CONFIG_HZ=250 +# CONFIG_HZ_1000 is not set +CONFIG_HZ_250=y +# CONFIG_I2C_SLAVE is not set +# CONFIG_IBMEBUS is not set +CONFIG_IBMVETH=m +CONFIG_IPMI_SI_PROBE_DEFAULTS=y +# CONFIG_IRQ_ALL_CPUS is not set +# CONFIG_IRQ_FORCED_THREADING_DEFAULT is not set +# CONFIG_ISA is not set +CONFIG_JUMP_LABEL=y +CONFIG_KVM=y +CONFIG_LEDS_TRIGGER_HEARTBEAT=m +CONFIG_LOG_BUF_SHIFT=17 +# CONFIG_LPARCFG is not set +CONFIG_MATH_EMULATION=y +CONFIG_MFD_SM501=m +# CONFIG_MFD_TMIO is not set +CONFIG_MII=m +CONFIG_MMC_BLOCK=m +CONFIG_MMC_SDHCI=m +CONFIG_MMC_SDHCI_PLTFM=m +CONFIG_MPIC_MSGR=y +CONFIG_MTD=m +CONFIG_MTD_BLKDEVS=m +CONFIG_MTD_BLOCK=m +CONFIG_MTD_CMDLINE_PARTS=m +CONFIG_MTD_NAND=m +CONFIG_MTD_NAND_BCH=m +CONFIG_MTD_NAND_ECC=m +CONFIG_MTD_NAND_IDS=m +# CONFIG_MTD_NAND_OMAP_BCH_BUILD is not set +CONFIG_MTD_OF_PARTS=m +CONFIG_NODES_SHIFT=8 +CONFIG_NVRAM=y +CONFIG_OF=y +CONFIG_PATA_SIS=m +CONFIG_PCCARD=m +CONFIG_PHYSICAL_ALIGN=0x04000000 +CONFIG_PHYSICAL_START=0x00000000 +# CONFIG_PHY_EXYNOS5250_USB2 is not set +# CONFIG_POWER7_CPU is not set +CONFIG_PPC_4K_PAGES=y +# CONFIG_PPC_64K_PAGES is not set +# CONFIG_PPC_DENORMALISATION is not set +CONFIG_PPC_DISABLE_WERROR=y +CONFIG_PPC_ICSWX=y +CONFIG_PPC_MAPLE=y +CONFIG_PPC_PASEMI=y +CONFIG_PPC_PMAC=y +CONFIG_PPC_PS3=y +# CONFIG_PPC_SMLPAR is not set +# CONFIG_PPC_SPLPAR is not set +CONFIG_PPS=m +# CONFIG_PREEMPT is not set +CONFIG_PREEMPT_VOLUNTARY=y +CONFIG_PROBE_EVENTS=y +# CONFIG_PSTORE_CONSOLE is not set +CONFIG_PSTORE_RAM=m +CONFIG_PTP_1588_CLOCK=m +CONFIG_RCU_CPU_STALL_TIMEOUT=21 +CONFIG_REED_SOLOMON=m +CONFIG_REGULATOR_FIXED_VOLTAGE=m +CONFIG_REGULATOR_TWL4030=m +CONFIG_RTC_DRV_CMOS=m +CONFIG_RTC_DRV_PCF8523=m +CONFIG_RTC_DRV_TWL4030=m +CONFIG_SATA_AHCI_PLATFORM=m +CONFIG_SATA_SVW=y +# CONFIG_SENSORS_SCH56XX_COMMON is not set +CONFIG_SERIAL_8250_DW=m +# CONFIG_SH_TIMER_CMT is not set +# CONFIG_SH_TIMER_MTU2 is not set +# CONFIG_SH_TIMER_TMU is not set +CONFIG_SIMPLE_GPIO=y +CONFIG_SND=m +CONFIG_SND_COMPRESS_OFFLOAD=m +CONFIG_SND_DMAENGINE_PCM=m +# CONFIG_SND_OPL4_LIB_SEQ is not set +CONFIG_SND_PCM=m +# CONFIG_SND_SBAWE_SEQ is not set +CONFIG_SND_SOC=m +CONFIG_SND_SOC_FSL_SSI=m +CONFIG_SND_SOC_HDMI_CODEC=m +CONFIG_SND_SOC_I2C_AND_SPI=m +CONFIG_SND_SOC_IMX_AUDMUX=m +# CONFIG_SND_SOC_RT5677_SPI is not set +CONFIG_SND_SOC_SGTL5000=m +CONFIG_SND_TIMER=m +CONFIG_SOUND=m +CONFIG_STANDALONE=y +# CONFIG_SYS_HYPERVISOR is not set +CONFIG_TIGON3=m +CONFIG_TI_CPSW_ALE=m +CONFIG_UDBG_RTAS_CONSOLE=y +CONFIG_UPROBES=y +CONFIG_USB_EHCI_HCD_PLATFORM=y +CONFIG_USB_FSL_MPH_DR_OF=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_OHCI_HCD_PPC_OF=y +CONFIG_USB_OHCI_HCD_PPC_OF_BE=y +# CONFIG_VFIO_IOMMU_TYPE1 is not set --- linux-raspi2-4.2.0.orig/debian.master/config/powerpc/config.flavour.powerpc-e500mc +++ linux-raspi2-4.2.0/debian.master/config/powerpc/config.flavour.powerpc-e500mc @@ -0,0 +1,59 @@ +# +# Config options for config.flavour.powerpc-e500mc automatically generated by splitconfig.pl +# +CONFIG_ARCH_DMA_ADDR_T_64BIT=y +CONFIG_ARCH_PHYS_ADDR_T_64BIT=y +# CONFIG_ARCH_RANDOM is not set +# CONFIG_ATA_NONSTANDARD is not set +# CONFIG_CRASH_DUMP is not set +# CONFIG_CXL_BASE is not set +# CONFIG_CXL_EEH is not set +# CONFIG_CXL_KERNEL_API is not set +CONFIG_DEFAULT_UIMAGE=y +# CONFIG_EPAPR_BOOT is not set +CONFIG_FB_SYS_COPYAREA=y +CONFIG_FB_SYS_FILLRECT=y +CONFIG_FB_SYS_FOPS=y +CONFIG_FB_SYS_IMAGEBLIT=y +CONFIG_FB_UDL=y +CONFIG_FORCE_MAX_ZONEORDER=11 +CONFIG_GENERIC_TBSYNC=y +CONFIG_HAS_RAPIDIO=y +# CONFIG_HAVE_BOOTMEM_INFO_NODE is not set +# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set +CONFIG_HIBERNATION=y +CONFIG_HUGETLB_PAGE=y +CONFIG_IMA=y +CONFIG_KERNEL_START=0xc0000000 +# CONFIG_MMIO_NVRAM is not set +# CONFIG_MPIC_U3_HT_IRQS is not set +# CONFIG_NEED_DMA_MAP_STATE is not set +# CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set +# CONFIG_NONSTATIC_KERNEL is not set +CONFIG_NR_CPUS=8 +CONFIG_PAGE_OFFSET=0xc0000000 +CONFIG_PGTABLE_LEVELS=2 +CONFIG_PHYS_ADDR_T_64BIT=y +# CONFIG_PPC64 is not set +CONFIG_PPC_85xx=y +# CONFIG_PPC_970_NAP is not set +# CONFIG_PPC_BOOK3S_32 is not set +# CONFIG_PPC_CELL is not set +# CONFIG_PPC_COPRO_BASE is not set +CONFIG_PPC_DOORBELL=y +CONFIG_PPC_EPAPR_HV_PIC=y +# CONFIG_PPC_I8259 is not set +# CONFIG_PPC_ICP_HV is not set +# CONFIG_PPC_ICP_NATIVE is not set +# CONFIG_PPC_ICS_RTAS is not set +CONFIG_PPC_INDIRECT_PCI=y +# CONFIG_PPC_MM_SLICES is not set +# CONFIG_PPC_MPC106 is not set +# CONFIG_PPC_P7_NAP is not set +# CONFIG_PPC_RTAS is not set +# CONFIG_PPC_XICS is not set +# CONFIG_RCU_NOCB_CPU is not set +CONFIG_RTC_DRV_DS3232=y +CONFIG_SCSI_SRP_ATTRS=m +CONFIG_SPI_PXA2XX_PCI=m +CONFIG_WORD_SIZE=32 --- linux-raspi2-4.2.0.orig/debian.master/config/powerpc/config.flavour.powerpc-smp +++ linux-raspi2-4.2.0/debian.master/config/powerpc/config.flavour.powerpc-smp @@ -0,0 +1,60 @@ +# +# Config options for config.flavour.powerpc-smp automatically generated by splitconfig.pl +# +# CONFIG_ARCH_DMA_ADDR_T_64BIT is not set +# CONFIG_ARCH_PHYS_ADDR_T_64BIT is not set +# CONFIG_ARCH_RANDOM is not set +# CONFIG_ATA_NONSTANDARD is not set +# CONFIG_CRASH_DUMP is not set +# CONFIG_CXL_BASE is not set +# CONFIG_CXL_EEH is not set +# CONFIG_CXL_KERNEL_API is not set +# CONFIG_DEFAULT_UIMAGE is not set +# CONFIG_EPAPR_BOOT is not set +CONFIG_FB_SYS_COPYAREA=m +CONFIG_FB_SYS_FILLRECT=m +CONFIG_FB_SYS_FOPS=m +CONFIG_FB_SYS_IMAGEBLIT=m +CONFIG_FB_UDL=m +CONFIG_FORCE_MAX_ZONEORDER=11 +CONFIG_GENERIC_TBSYNC=y +# CONFIG_HAS_RAPIDIO is not set +# CONFIG_HAVE_BOOTMEM_INFO_NODE is not set +# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set +CONFIG_HIBERNATION=y +# CONFIG_HUGETLB_PAGE is not set +CONFIG_IMA=y +CONFIG_KERNEL_START=0xc0000000 +# CONFIG_MMIO_NVRAM is not set +# CONFIG_MPIC_U3_HT_IRQS is not set +# CONFIG_NEED_DMA_MAP_STATE is not set +# CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set +# CONFIG_NONSTATIC_KERNEL is not set +CONFIG_NR_CPUS=4 +CONFIG_PAGE_OFFSET=0xc0000000 +CONFIG_PGTABLE_LEVELS=2 +# CONFIG_PHYS_ADDR_T_64BIT is not set +# CONFIG_PPC64 is not set +# CONFIG_PPC_85xx is not set +# CONFIG_PPC_970_NAP is not set +CONFIG_PPC_BOOK3S_32=y +# CONFIG_PPC_CELL is not set +# CONFIG_PPC_COPRO_BASE is not set +# CONFIG_PPC_DOORBELL is not set +# CONFIG_PPC_EPAPR_HV_PIC is not set +CONFIG_PPC_I8259=y +# CONFIG_PPC_ICP_HV is not set +# CONFIG_PPC_ICP_NATIVE is not set +# CONFIG_PPC_ICS_RTAS is not set +CONFIG_PPC_INDIRECT_PCI=y +# CONFIG_PPC_MM_SLICES is not set +CONFIG_PPC_MPC106=y +CONFIG_PPC_OF_BOOT_TRAMPOLINE=y +# CONFIG_PPC_P7_NAP is not set +CONFIG_PPC_RTAS=y +# CONFIG_PPC_XICS is not set +# CONFIG_RCU_NOCB_CPU is not set +CONFIG_RTC_DRV_DS3232=m +CONFIG_SCSI_SRP_ATTRS=m +# CONFIG_SPI_PXA2XX_PCI is not set +CONFIG_WORD_SIZE=32 --- linux-raspi2-4.2.0.orig/debian.master/config/powerpc/config.flavour.powerpc64-emb +++ linux-raspi2-4.2.0/debian.master/config/powerpc/config.flavour.powerpc64-emb @@ -0,0 +1,64 @@ +# +# Config options for config.flavour.powerpc64-emb automatically generated by splitconfig.pl +# +CONFIG_ARCH_DMA_ADDR_T_64BIT=y +CONFIG_ARCH_PHYS_ADDR_T_64BIT=y +# CONFIG_ARCH_RANDOM is not set +# CONFIG_ATA_NONSTANDARD is not set +CONFIG_CRASH_DUMP=y +# CONFIG_CXL_BASE is not set +# CONFIG_CXL_EEH is not set +# CONFIG_CXL_KERNEL_API is not set +CONFIG_DEFAULT_UIMAGE=y +# CONFIG_EPAPR_BOOT is not set +CONFIG_FB_SYS_COPYAREA=y +CONFIG_FB_SYS_FILLRECT=y +CONFIG_FB_SYS_FOPS=y +CONFIG_FB_SYS_IMAGEBLIT=y +CONFIG_FB_UDL=y +CONFIG_FORCE_MAX_ZONEORDER=13 +# CONFIG_GENERIC_TBSYNC is not set +CONFIG_HAS_RAPIDIO=y +# CONFIG_HAVE_BOOTMEM_INFO_NODE is not set +CONFIG_HAVE_SETUP_PER_CPU_AREA=y +# CONFIG_HIBERNATION is not set +CONFIG_HUGETLB_PAGE=y +# CONFIG_IMA is not set +CONFIG_KERNEL_START=0xc000000000000000 +# CONFIG_MMIO_NVRAM is not set +# CONFIG_MPIC_U3_HT_IRQS is not set +CONFIG_NEED_DMA_MAP_STATE=y +CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK=y +CONFIG_NONSTATIC_KERNEL=y +CONFIG_NR_CPUS=8 +# CONFIG_NUMA is not set +CONFIG_PAGE_OFFSET=0xc000000000000000 +CONFIG_PGTABLE_LEVELS=4 +CONFIG_PHYS_ADDR_T_64BIT=y +CONFIG_PPC64=y +# CONFIG_PPC_970_NAP is not set +CONFIG_PPC_BOOK3E_64=y +# CONFIG_PPC_BOOK3S_64 is not set +# CONFIG_PPC_CELL is not set +# CONFIG_PPC_COPRO_BASE is not set +CONFIG_PPC_DOORBELL=y +CONFIG_PPC_EPAPR_HV_PIC=y +# CONFIG_PPC_HAS_HASH_64K is not set +# CONFIG_PPC_I8259 is not set +# CONFIG_PPC_ICP_HV is not set +# CONFIG_PPC_ICP_NATIVE is not set +# CONFIG_PPC_ICS_RTAS is not set +CONFIG_PPC_INDIRECT_PCI=y +# CONFIG_PPC_MM_SLICES is not set +# CONFIG_PPC_MPC106 is not set +# CONFIG_PPC_OF_BOOT_TRAMPOLINE is not set +# CONFIG_PPC_P7_NAP is not set +# CONFIG_PPC_RTAS is not set +# CONFIG_PPC_XICS is not set +# CONFIG_RCU_NOCB_CPU is not set +CONFIG_RTC_DRV_DS3232=y +# CONFIG_SCHED_SMT is not set +CONFIG_SCSI_SRP_ATTRS=m +CONFIG_SPI_PXA2XX_PCI=m +# CONFIG_U3_DART is not set +CONFIG_WORD_SIZE=64 --- linux-raspi2-4.2.0.orig/debian.master/config/powerpc/config.flavour.powerpc64-smp +++ linux-raspi2-4.2.0/debian.master/config/powerpc/config.flavour.powerpc64-smp @@ -0,0 +1,64 @@ +# +# Config options for config.flavour.powerpc64-smp automatically generated by splitconfig.pl +# +CONFIG_ARCH_DMA_ADDR_T_64BIT=y +CONFIG_ARCH_PHYS_ADDR_T_64BIT=y +CONFIG_ARCH_RANDOM=y +CONFIG_ATA_NONSTANDARD=y +CONFIG_CRASH_DUMP=y +CONFIG_CXL_BASE=y +CONFIG_CXL_EEH=y +CONFIG_CXL_KERNEL_API=y +# CONFIG_DEFAULT_UIMAGE is not set +CONFIG_EPAPR_BOOT=y +CONFIG_FB_SYS_COPYAREA=y +CONFIG_FB_SYS_FILLRECT=y +CONFIG_FB_SYS_FOPS=y +CONFIG_FB_SYS_IMAGEBLIT=y +CONFIG_FB_UDL=m +CONFIG_FORCE_MAX_ZONEORDER=13 +CONFIG_GENERIC_TBSYNC=y +# CONFIG_HAS_RAPIDIO is not set +CONFIG_HAVE_BOOTMEM_INFO_NODE=y +CONFIG_HAVE_SETUP_PER_CPU_AREA=y +CONFIG_HIBERNATION=y +CONFIG_HUGETLB_PAGE=y +CONFIG_IMA=y +CONFIG_KERNEL_START=0xc000000000000000 +CONFIG_MMIO_NVRAM=y +CONFIG_MPIC_U3_HT_IRQS=y +CONFIG_NEED_DMA_MAP_STATE=y +CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK=y +CONFIG_NONSTATIC_KERNEL=y +CONFIG_NR_CPUS=1024 +CONFIG_NUMA=y +CONFIG_PAGE_OFFSET=0xc000000000000000 +CONFIG_PGTABLE_LEVELS=4 +CONFIG_PHYS_ADDR_T_64BIT=y +CONFIG_PPC64=y +CONFIG_PPC_970_NAP=y +# CONFIG_PPC_BOOK3E_64 is not set +CONFIG_PPC_BOOK3S_64=y +CONFIG_PPC_CELL=y +CONFIG_PPC_COPRO_BASE=y +CONFIG_PPC_DOORBELL=y +# CONFIG_PPC_EPAPR_HV_PIC is not set +CONFIG_PPC_HAS_HASH_64K=y +CONFIG_PPC_I8259=y +CONFIG_PPC_ICP_HV=y +CONFIG_PPC_ICP_NATIVE=y +CONFIG_PPC_ICS_RTAS=y +# CONFIG_PPC_INDIRECT_PCI is not set +CONFIG_PPC_MM_SLICES=y +# CONFIG_PPC_MPC106 is not set +CONFIG_PPC_OF_BOOT_TRAMPOLINE=y +CONFIG_PPC_P7_NAP=y +CONFIG_PPC_RTAS=y +CONFIG_PPC_XICS=y +CONFIG_RCU_NOCB_CPU=y +CONFIG_RTC_DRV_DS3232=m +CONFIG_SCHED_SMT=y +CONFIG_SCSI_SRP_ATTRS=y +# CONFIG_SPI_PXA2XX_PCI is not set +CONFIG_U3_DART=y +CONFIG_WORD_SIZE=64 --- linux-raspi2-4.2.0.orig/debian.master/config/ppc64el/config.common.ppc64el +++ linux-raspi2-4.2.0/debian.master/config/ppc64el/config.common.ppc64el @@ -0,0 +1,200 @@ +# +# Config options for config.common.ppc64el automatically generated by splitconfig.pl +# +CONFIG_64BIT=y +CONFIG_AC97_BUS=m +CONFIG_ARCH_DMA_ADDR_T_64BIT=y +# CONFIG_ARCH_NEEDS_CPU_IDLE_COUPLED is not set +CONFIG_ARCH_PHYS_ADDR_T_64BIT=y +CONFIG_ARCH_RANDOM=y +CONFIG_ARCH_SELECT_MEMORY_MODEL=y +CONFIG_ARCH_SPARSEMEM_DEFAULT=y +CONFIG_ATA_GENERIC=m +# CONFIG_ATA_NONSTANDARD is not set +CONFIG_ATA_PIIX=m +# CONFIG_AUDIT_ARCH_COMPAT_GENERIC is not set +CONFIG_BCH=m +# CONFIG_CC_STACKPROTECTOR is not set +# CONFIG_CPU_BIG_ENDIAN is not set +CONFIG_CPU_LITTLE_ENDIAN=y +CONFIG_CRASH_DUMP=y +CONFIG_CXL_BASE=y +CONFIG_CXL_EEH=y +CONFIG_CXL_KERNEL_API=y +CONFIG_DEFAULT_MMAP_MIN_ADDR=65536 +# CONFIG_DEFAULT_UIMAGE is not set +CONFIG_DMA_VIRTUAL_CHANNELS=m +# CONFIG_EM_TIMER_STI is not set +CONFIG_EPAPR_BOOT=y +CONFIG_FB_ATY128=m +# CONFIG_FB_BOOT_VESA_SUPPORT is not set +# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set +CONFIG_FB_IBM_GXT4500=y +CONFIG_FB_MACMODES=y +CONFIG_FB_SYS_COPYAREA=m +CONFIG_FB_SYS_FILLRECT=m +CONFIG_FB_SYS_FOPS=m +CONFIG_FB_SYS_IMAGEBLIT=m +CONFIG_FB_UDL=m +CONFIG_FB_VOODOO1=m +# CONFIG_FONTS is not set +CONFIG_FORCE_MAX_ZONEORDER=9 +CONFIG_FRAME_WARN=2048 +CONFIG_GENERIC_CSUM=y +# CONFIG_GENERIC_TBSYNC is not set +CONFIG_GPIO_GENERIC=m +CONFIG_GPIO_GENERIC_PLATFORM=m +CONFIG_GPIO_TWL4030=m +CONFIG_GPIO_TWL6040=m +# CONFIG_HAS_RAPIDIO is not set +CONFIG_HAVE_64BIT_ALIGNED_ACCESS=y +# CONFIG_HAVE_AOUT is not set +# CONFIG_HAVE_ARCH_BITREVERSE is not set +CONFIG_HAVE_BOOTMEM_INFO_NODE=y +# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set +CONFIG_HAVE_SETUP_PER_CPU_AREA=y +# CONFIG_HIBERNATION is not set +# CONFIG_HOTPLUG_PCI_PCIE is not set +# CONFIG_HOTPLUG_PCI_SHPC is not set +CONFIG_HUGETLB_PAGE=y +CONFIG_HZ=250 +# CONFIG_HZ_1000 is not set +CONFIG_HZ_250=y +# CONFIG_I2C_SLAVE is not set +CONFIG_IBMEBUS=y +CONFIG_IBMVETH=y +CONFIG_IMA=y +CONFIG_IPMI_SI_PROBE_DEFAULTS=y +CONFIG_IRQ_ALL_CPUS=y +# CONFIG_IRQ_FORCED_THREADING_DEFAULT is not set +CONFIG_JUMP_LABEL=y +CONFIG_KERNEL_START=0xc000000000000000 +CONFIG_KVM=y +CONFIG_LEDS_TRIGGER_HEARTBEAT=m +CONFIG_LOG_BUF_SHIFT=17 +CONFIG_LPARCFG=y +CONFIG_MFD_SM501=m +# CONFIG_MFD_TMIO is not set +CONFIG_MII=m +CONFIG_MMC_BLOCK=m +CONFIG_MMC_SDHCI=m +CONFIG_MMC_SDHCI_PLTFM=m +# CONFIG_MMIO_NVRAM is not set +# CONFIG_MPIC_MSGR is not set +# CONFIG_MPIC_U3_HT_IRQS is not set +CONFIG_MTD=m +CONFIG_MTD_BLKDEVS=m +CONFIG_MTD_BLOCK=m +CONFIG_MTD_CMDLINE_PARTS=m +CONFIG_MTD_NAND=m +CONFIG_MTD_NAND_BCH=m +CONFIG_MTD_NAND_ECC=m +CONFIG_MTD_NAND_IDS=m +# CONFIG_MTD_NAND_OMAP_BCH_BUILD is not set +CONFIG_MTD_OF_PARTS=m +CONFIG_NEED_DMA_MAP_STATE=y +CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK=y +CONFIG_NODES_SHIFT=8 +CONFIG_NONSTATIC_KERNEL=y +CONFIG_NR_CPUS=2048 +CONFIG_NUMA=y +CONFIG_OF=y +CONFIG_PAGE_OFFSET=0xc000000000000000 +CONFIG_PATA_SIS=m +# CONFIG_PCCARD is not set +CONFIG_PGTABLE_LEVELS=3 +CONFIG_PHYSICAL_START=0x00000000 +CONFIG_PHYS_ADDR_T_64BIT=y +# CONFIG_PHY_EXYNOS5250_USB2 is not set +CONFIG_POWER7_CPU=y +CONFIG_PPC64=y +# CONFIG_PPC_4K_PAGES is not set +CONFIG_PPC_64K_PAGES=y +# CONFIG_PPC_970_NAP is not set +# CONFIG_PPC_BOOK3E_64 is not set +CONFIG_PPC_BOOK3S_64=y +# CONFIG_PPC_CELL is not set +CONFIG_PPC_COPRO_BASE=y +CONFIG_PPC_DENORMALISATION=y +# CONFIG_PPC_DISABLE_WERROR is not set +CONFIG_PPC_DOORBELL=y +# CONFIG_PPC_EPAPR_HV_PIC is not set +CONFIG_PPC_HAS_HASH_64K=y +CONFIG_PPC_I8259=y +CONFIG_PPC_ICP_HV=y +CONFIG_PPC_ICP_NATIVE=y +# CONFIG_PPC_ICSWX is not set +CONFIG_PPC_ICS_RTAS=y +# CONFIG_PPC_INDIRECT_PCI is not set +# CONFIG_PPC_MAPLE is not set +CONFIG_PPC_MM_SLICES=y +# CONFIG_PPC_MPC106 is not set +CONFIG_PPC_OF_BOOT_TRAMPOLINE=y +CONFIG_PPC_P7_NAP=y +# CONFIG_PPC_PASEMI is not set +# CONFIG_PPC_PMAC is not set +# CONFIG_PPC_PS3 is not set +CONFIG_PPC_RTAS=y +CONFIG_PPC_SMLPAR=y +CONFIG_PPC_SPLPAR=y +CONFIG_PPC_XICS=y +CONFIG_PPS=y +# CONFIG_PREEMPT is not set +CONFIG_PREEMPT_VOLUNTARY=y +CONFIG_PROBE_EVENTS=y +# CONFIG_PSTORE_CONSOLE is not set +CONFIG_PSTORE_RAM=m +CONFIG_PTP_1588_CLOCK=y +CONFIG_RCU_CPU_STALL_TIMEOUT=21 +# CONFIG_RCU_NOCB_CPU is not set +CONFIG_REED_SOLOMON=m +CONFIG_REGULATOR_FIXED_VOLTAGE=m +CONFIG_REGULATOR_TWL4030=m +CONFIG_RTC_DRV_CMOS=m +CONFIG_RTC_DRV_DS3232=m +CONFIG_RTC_DRV_PCF8523=m +CONFIG_RTC_DRV_TWL4030=m +CONFIG_SATA_AHCI_PLATFORM=m +CONFIG_SATA_SVW=m +CONFIG_SCHED_SMT=y +CONFIG_SCSI_SRP_ATTRS=y +# CONFIG_SENSORS_SCH56XX_COMMON is not set +CONFIG_SERIAL_8250_DW=m +# CONFIG_SH_TIMER_CMT is not set +# CONFIG_SH_TIMER_MTU2 is not set +# CONFIG_SH_TIMER_TMU is not set +# CONFIG_SIMPLE_GPIO is not set +CONFIG_SND=m +CONFIG_SND_COMPRESS_OFFLOAD=m +CONFIG_SND_DMAENGINE_PCM=m +# CONFIG_SND_OPL4_LIB_SEQ is not set +CONFIG_SND_PCM=m +# CONFIG_SND_SBAWE_SEQ is not set +CONFIG_SND_SOC=m +CONFIG_SND_SOC_FSL_SSI=m +CONFIG_SND_SOC_HDMI_CODEC=m +CONFIG_SND_SOC_I2C_AND_SPI=m +CONFIG_SND_SOC_IMX_AUDMUX=m +# CONFIG_SND_SOC_RT5677_SPI is not set +CONFIG_SND_SOC_SGTL5000=m +CONFIG_SND_TIMER=m +CONFIG_SOUND=m +# CONFIG_SPI_PXA2XX_PCI is not set +CONFIG_STANDALONE=y +# CONFIG_SYS_HYPERVISOR is not set +CONFIG_TIGON3=y +CONFIG_TI_CPSW_ALE=m +# CONFIG_U3_DART is not set +# CONFIG_UDBG_RTAS_CONSOLE is not set +CONFIG_UPROBES=y +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_OHCI_HCD_PPC_OF is not set +# CONFIG_USB_OHCI_HCD_PPC_OF_BE is not set +# CONFIG_VFIO_IOMMU_TYPE1 is not set +CONFIG_WORD_SIZE=64 --- linux-raspi2-4.2.0.orig/debian.master/config/ppc64el/config.flavour.generic +++ linux-raspi2-4.2.0/debian.master/config/ppc64el/config.flavour.generic @@ -0,0 +1,3 @@ +# +# Config options for config.flavour.generic automatically generated by splitconfig.pl +# --- linux-raspi2-4.2.0.orig/debian.master/config/x32/config.common.x32 +++ linux-raspi2-4.2.0/debian.master/config/x32/config.common.x32 @@ -0,0 +1 @@ +# nothing here yet --- linux-raspi2-4.2.0.orig/debian.master/config/x32/config.flavour.generic +++ linux-raspi2-4.2.0/debian.master/config/x32/config.flavour.generic @@ -0,0 +1 @@ +# nothing here yet --- linux-raspi2-4.2.0.orig/debian.master/control.d/flavour-control.stub +++ linux-raspi2-4.2.0/debian.master/control.d/flavour-control.stub @@ -0,0 +1,136 @@ +# 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-PKGVER-ABINUM-FLAVOUR +Build-Profiles: +Architecture: ARCH +Section: kernel +Priority: optional +Pre-Depends: dpkg (>= 1.10.24) +Provides: linux-image, linux-image-3.0, fuse-module, =PROVIDES= +Depends: ${misc:Depends}, ${shlibs:Depends}, initramfs-tools (>= 0.36ubuntu6) | linux-initramfs-tool, kmod +Conflicts: hotplug (<< 0.0.20040105-1) +Recommends: BOOTLOADER +Suggests: fdutils, SRCPKGNAME-doc-PKGVER | SRCPKGNAME-source-PKGVER, SRCPKGNAME-tools, linux-headers-PKGVER-ABINUM-FLAVOUR +Description: Linux kernel image for version PKGVER on DESC + This package contains the Linux kernel image 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-image-extra-PKGVER-ABINUM-FLAVOUR +Build-Profiles: +Architecture: ARCH +Section: kernel +Priority: optional +Depends: ${misc:Depends}, ${shlibs:Depends}, linux-image-PKGVER-ABINUM-FLAVOUR, crda (>=1.1.1-1ubuntu2) | 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}, linux-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-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 a 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: linux-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-raspi2-4.2.0.orig/debian.master/control.d/generic.inclusion-list +++ linux-raspi2-4.2.0/debian.master/control.d/generic.inclusion-list @@ -0,0 +1,177 @@ +arch/*/{crypto,kernel,oprofile} +arch/*/kvm/kvm.ko +arch/x86/kvm/kvm-intel.ko +arch/x86/kvm/kvm-amd.ko +crypto/* +drivers/acpi/* +drivers/char/ipmi/ipmi_msghandler.ko +drivers/ata/ahci_platform.ko +drivers/ata/ahci.ko +drivers/ata/acard-ahci.ko +drivers/ata/libahci.ko +drivers/ata/libahci_platform.ko +drivers/block/nbd.ko +drivers/block/floppy.ko +drivers/block/cryptoloop.ko +drivers/block/nvme.ko +drivers/block/rbd.ko +drivers/char/hangcheck-timer.ko +drivers/char/hw_random/virtio-rng.ko +drivers/char/lp.ko +drivers/char/nvram.ko +drivers/char/ppdev.ko +drivers/char/raw.ko +drivers/firmware/iscsi_ibft.ko +drivers/hid/hid.ko +drivers/hid/hid-hyperv.ko +drivers/hv/* +drivers/infiniband/core/ib_core.ko +drivers/infiniband/core/ib_addr.ko +drivers/infiniband/core/ib_cm.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/input/evbug.ko +drivers/input/gameport/gameport.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/joydev.ko +drivers/input/touchscreen/usbtouchscreen.ko +drivers/input/misc/xen-kbdfront.ko +drivers/md/* +drivers/message/fusion* +drivers/scsi/scsi_transport_spi.ko +drivers/misc/vmw_balloon.ko +drivers/misc/vmw_vmci/vmw_vmci.ko +drivers/net/caif/caif_virtio.ko +drivers/net/mii.ko +drivers/net/ethernet/8390/8390.ko +drivers/net/ethernet/realtek/8139too.ko +drivers/net/ethernet/realtek/8139cp.ko +drivers/net/appletalk/ipddp.ko +drivers/net/bonding/bonding.ko +drivers/net/ppp/bsd_comp.ko +drivers/net/dummy.ko +drivers/net/ethernet/intel/e1000/e1000.ko +drivers/net/ethernet/intel/e1000e/e1000e.ko +drivers/net/eql.ko +drivers/net/ifb.ko +drivers/net/ethernet/intel/igbvf/igbvf.ko +drivers/net/ethernet/intel/ixgbevf/ixgbevf.ko +drivers/net/macvlan.ko +drivers/net/macvtap.ko +drivers/net/ethernet/8390/ne2k-pci.ko +drivers/net/netconsole.ko +drivers/net/ethernet/amd/pcnet32.ko +drivers/net/hyperv/hv_netvsc.ko +drivers/net/ppp/* +drivers/net/slip/* +drivers/net/veth.ko +drivers/net/vmxnet3/vmxnet3.ko +drivers/net/vxlan.ko +drivers/net/xen-netback/* +drivers/parport/parport.ko +drivers/parport/parport_pc.ko +drivers/pps/pps_core.ko +drivers/ptp/ptp.ko +drivers/net/ethernet/dec/tulip/* +drivers/scsi/BusLogic.ko +drivers/scsi/device_handler/scsi_dh.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/osd/osd.ko +drivers/scsi/osd/libosd.ko +drivers/scsi/qla1280.ko +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/vmw_pvscsi.ko +drivers/scsi/hv_storvsc.ko +drivers/scsi/virtio_scsi.ko +drivers/target/target_core*.ko +drivers/uio/uio.ko +drivers/vhost/* +drivers/video/fbdev/cirrusfb.ko +drivers/video/fbdev/core/syscopyarea.ko +drivers/video/fbdev/core/sysfillrect.ko +drivers/video/fbdev/core/sysimgblt.ko +drivers/video/fbdev/hyperv_fb.ko +drivers/video/fbdev/vga16fb.ko +drivers/video/vgastate.ko +drivers/video/fbdev/xen-fbfront.ko +drivers/video/fbdev/core/fb_sys_fops.ko +drivers/watchdog/softdog.ko +drivers/xen/* +fs/9p/* +fs/binfmt_misc.ko +fs/btrfs/* +fs/cachefiles/cachefiles.ko +fs/ceph/* +fs/configfs/* +fs/dlm/dlm.ko +fs/exofs/libore.ko +fs/fat/* +fs/nls/nls_iso8859-1.ko +fs/isofs/* +fs/cifs/* +fs/xfs/* +fs/ufs/* +fs/squashfs/* +fs/nfs/* +fs/nfsd/* +fs/nfs_common/* +fs/fscache/* +fs/lockd/* +fs/autofs4/autofs4.ko +fs/overlayfs/* +fs/udf/* +lib/* +net/6lowpan/* +net/802/* +net/8021q/* +net/9p/* +net/appletalk/* +net/atm/* +net/ax25/* +net/bridge/* +net/can/* +net/core/* +net/ceph/libceph.ko +net/dccp/* +net/decnet/* +net/ieee802154/* +net/ipv4/* +net/ipv6/* +net/ipx/* +net/irda/* +net/key/* +net/lapb/* +net/llc/* +net/netfilter/* +net/netrom/* +net/openvswitch/* +net/phonet/* +net/rose/* +net/rxrpc/* +net/sched/* +net/sctp/* +net/tipc/* +net/vmw_vsock/* +net/x25/* +net/xfrm/* +net/sunrpc/auth_gss/auth_rpcgss.ko +net/sunrpc/auth_gss/rpcsec_gss_krb5.ko +net/sunrpc/sunrpc.ko +sound/soundcore.ko +! find sound/core -name oss -prune -o -name *.ko -print +sound/pci/snd-ens1370.ko +sound/drivers/pcsp/snd-pcsp.ko +ubuntu/vbox/vboxguest/vboxguest.ko +ubuntu/vbox/vboxsf/vboxsf.ko --- linux-raspi2-4.2.0.orig/debian.master/control.d/vars.generic +++ linux-raspi2-4.2.0/debian.master/control.d/vars.generic @@ -0,0 +1,6 @@ +arch="i386 amd64 armhf arm64 ppc64el" +supported="Generic" +target="Geared toward desktop and server systems." +desc="=HUMAN= SMP" +bootloader="grub-pc [i386 amd64 x32] | grub-efi-amd64 [amd64 x32] | grub-efi-ia32 [i386 amd64 x32] | grub [i386 amd64 x32] | lilo (>= 19.1) [i386 amd64 x32] | flash-kernel [armhf arm64] | grub-ieee1275 [ppc64el]" +provides="kvm-api-4, redhat-cluster-modules, ivtv-modules, virtualbox-guest-modules [i386 amd64 x32]" --- linux-raspi2-4.2.0.orig/debian.master/control.d/vars.generic-lpae +++ linux-raspi2-4.2.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-raspi2-4.2.0.orig/debian.master/control.d/vars.lowlatency +++ linux-raspi2-4.2.0/debian.master/control.d/vars.lowlatency @@ -0,0 +1,6 @@ +arch="i386 amd64" +supported="Lowlatency" +target="Geared toward desktop and server systems." +desc="=HUMAN= SMP" +bootloader="grub-pc [i386 amd64 x32] | grub-efi-amd64 [amd64 x32] | grub-efi-ia32 [i386 amd64 x32] | grub [i386 amd64 x32] | lilo (>= 19.1) [i386 amd64 x32] | flash-kernel [armhf arm64]" +provides="kvm-api-4, redhat-cluster-modules, ivtv-modules, virtualbox-guest-modules [i386 amd64 x32]" --- linux-raspi2-4.2.0.orig/debian.master/control.d/vars.powerpc-e500mc +++ linux-raspi2-4.2.0/debian.master/control.d/vars.powerpc-e500mc @@ -0,0 +1,6 @@ +supported="32-bit Freescale Power e500mc" +target="Geared toward server systems." +desc="32-bit Freescale Power e500mc" +bootloader="grub-ieee1275" +provides="redhat-cluster-modules, ivtv-modules" +arch="powerpc" --- linux-raspi2-4.2.0.orig/debian.master/control.d/vars.powerpc-smp +++ linux-raspi2-4.2.0/debian.master/control.d/vars.powerpc-smp @@ -0,0 +1,6 @@ +supported="32-bit PowerPC SMP" +target="Geared toward desktop or server systems." +desc="32-bit PowerPC SMP" +bootloader="yaboot" +provides="redhat-cluster-modules, ivtv-modules" +arch="powerpc" --- linux-raspi2-4.2.0.orig/debian.master/control.d/vars.powerpc64-emb +++ linux-raspi2-4.2.0/debian.master/control.d/vars.powerpc64-emb @@ -0,0 +1,6 @@ +supported="64-bit PowerPC SMP Book3E" +target="Geared toward desktop or server systems." +desc="64-bit PowerPC SMP Book3E" +bootloader="grub-ieee1275" +provides="redhat-cluster-modules, ivtv-modules" +arch="powerpc" --- linux-raspi2-4.2.0.orig/debian.master/control.d/vars.powerpc64-smp +++ linux-raspi2-4.2.0/debian.master/control.d/vars.powerpc64-smp @@ -0,0 +1,6 @@ +supported="64-bit PowerPC SMP" +target="Geared toward desktop or server systems." +desc="64-bit PowerPC SMP" +bootloader="yaboot" +provides="redhat-cluster-modules, ivtv-modules" +arch="powerpc" --- linux-raspi2-4.2.0.orig/debian.master/control.stub.in +++ linux-raspi2-4.2.0/debian.master/control.stub.in @@ -0,0 +1,162 @@ +Source: linux +Section: devel +Priority: optional +Maintainer: Ubuntu Kernel Team +Standards-Version: 3.9.4.0 +Build-Depends: + debhelper (>= 5), + dh-systemd, + cpio, + kernel-wedge (>= 2.24ubuntu1), + kmod , + makedumpfile [amd64 i386] , + libelf-dev , + libnewt-dev , + libiberty-dev , + rsync , + libdw-dev , + libpci-dev , + dpkg (>= 1.16.0~ubuntu4) , + pkg-config , + flex , + bison , + libunwind8-dev , + openssl , + libaudit-dev , + bc , + python-dev , + gawk , + device-tree-compiler [powerpc] , + u-boot-tools [powerpc] , + libc6-dev-ppc64 [powerpc] , + libudev-dev , + autoconf , + automake , + libtool , +Build-Depends-Indep: + xmlto , + docbook-utils , + ghostscript , + transfig , + bzip2 , + sharutils , + asciidoc , +Vcs-Git: git://git.launchpad.net/~ubuntu-kernel/ubuntu/+source/linux/+git/wily +XS-Testsuite: autopkgtest +#XS-Testsuite-Depends: gcc-4.7 binutils + +Package: SRCPKGNAME-source-PKGVER +Build-Profiles: +Architecture: all +Section: devel +Priority: optional +Provides: SRCPKGNAME-source, SRCPKGNAME-source-3 +Depends: ${misc:Depends}, binutils, bzip2, coreutils | fileutils (>= 4.0) +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-doc +Build-Profiles: +Architecture: all +Section: doc +Priority: optional +Depends: ${misc:Depends} +Conflicts: SRCPKGNAME-doc-3 +Replaces: SRCPKGNAME-doc-3 +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. + +Package: SRCPKGNAME-headers-PKGVER-ABINUM +Build-Profiles: +Architecture: all +Multi-Arch: foreign +Section: devel +Priority: optional +Depends: ${misc:Depends}, coreutils | fileutils (>= 4.0) +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-libc-dev +Architecture: i386 amd64 armhf arm64 x32 powerpc ppc64el s390x +Depends: ${misc:Depends} +Conflicts: libc6-dev (<< 2.3.2.ds1-6), libc6.1-dev (<< 2.3.2.ds1-6), dvb-dev (<< 1.0.1-6), amd64-libs-dev (<= 1.1), SRCPKGNAME-kernel-headers +Replaces: libc6-dev (<< 2.3.2.ds1-6), libc6.1-dev (<< 2.3.2.ds1-6), dvb-dev (<< 1.0.1-6), SRCPKGNAME-kernel-headers, libdrm-dev +Provides: SRCPKGNAME-kernel-headers +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. + +Package: SRCPKGNAME-tools-common +Build-Profiles: +Architecture: all +Multi-Arch: foreign +Section: kernel +Priority: optional +Depends: ${misc:Depends} +Replaces: SRCPKGNAME-tools (<= 2.6.32-16.25) +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 PGKVER. + +Package: SRCPKGNAME-tools-PKGVER-ABINUM +Build-Profiles: +Architecture: i386 amd64 armhf arm64 powerpc ppc64el +Section: devel +Priority: optional +Depends: ${misc:Depends}, ${shlibs:Depends}, SRCPKGNAME-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 probabaly want to install linux-tools-PKGVER-ABINUM-. + +Package: SRCPKGNAME-cloud-tools-common +Build-Profiles: +Architecture: all +Multi-Arch: foreign +Section: kernel +Priority: optional +Breaks: SRCPKGNAME-tools-common (<< 3.13.0-8.28), hv-kvp-daemon-init (<< 3.13) +Replaces: SRCPKGNAME-tools-common (<< 3.13.0-8.28), hv-kvp-daemon-init (<< 3.13) +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 PGKVER. + +Package: SRCPKGNAME-cloud-tools-PKGVER-ABINUM +Build-Profiles: +Architecture: i386 amd64 armhf +Section: devel +Priority: optional +Depends: ${misc:Depends}, ${shlibs:Depends}, SRCPKGNAME-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 probabaly want to install linux-cloud-tools-PKGVER-ABINUM-. + --- linux-raspi2-4.2.0.orig/debian.master/copyright +++ linux-raspi2-4.2.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-raspi2-4.2.0.orig/debian.master/d-i/exclude-firmware.armhf-generic +++ linux-raspi2-4.2.0/debian.master/d-i/exclude-firmware.armhf-generic @@ -0,0 +1,2 @@ +nic-modules +scsi-modules --- linux-raspi2-4.2.0.orig/debian.master/d-i/exclude-firmware.armhf-generic-lpae +++ linux-raspi2-4.2.0/debian.master/d-i/exclude-firmware.armhf-generic-lpae @@ -0,0 +1,2 @@ +nic-modules +scsi-modules --- linux-raspi2-4.2.0.orig/debian.master/d-i/exclude-modules.amd64-virtual +++ linux-raspi2-4.2.0/debian.master/d-i/exclude-modules.amd64-virtual @@ -0,0 +1,14 @@ +pata-modules +firewire-core-modules +plip-modules +usb-modules +pcmcia-storage-modules +input-modules +nic-pcmcia-modules +pcmcia-modules +nic-usb-modules +nfs-modules +speakup-modules +ppp-modules +sata-modules +ipmi-modules --- linux-raspi2-4.2.0.orig/debian.master/d-i/exclude-modules.arm64-generic +++ linux-raspi2-4.2.0/debian.master/d-i/exclude-modules.arm64-generic @@ -0,0 +1,9 @@ +serial-modules +pata-modules +firewire-core-modules +floppy-modules +pcmcia-storage-modules +fb-modules +nic-pcmcia-modules +pcmcia-modules +message-modules --- linux-raspi2-4.2.0.orig/debian.master/d-i/exclude-modules.armhf-generic +++ linux-raspi2-4.2.0/debian.master/d-i/exclude-modules.armhf-generic @@ -0,0 +1,10 @@ +serial-modules +firewire-core-modules +floppy-modules +pcmcia-storage-modules +fb-modules +nic-pcmcia-modules +pcmcia-modules +pata-modules +message-modules +virtio-modules --- linux-raspi2-4.2.0.orig/debian.master/d-i/exclude-modules.armhf-generic-lpae +++ linux-raspi2-4.2.0/debian.master/d-i/exclude-modules.armhf-generic-lpae @@ -0,0 +1,10 @@ +serial-modules +firewire-core-modules +floppy-modules +pcmcia-storage-modules +fb-modules +nic-pcmcia-modules +pcmcia-modules +pata-modules +message-modules +virtio-modules --- linux-raspi2-4.2.0.orig/debian.master/d-i/exclude-modules.i386-virtual +++ linux-raspi2-4.2.0/debian.master/d-i/exclude-modules.i386-virtual @@ -0,0 +1,14 @@ +pata-modules +firewire-core-modules +plip-modules +usb-modules +pcmcia-storage-modules +input-modules +nic-pcmcia-modules +pcmcia-modules +nic-usb-modules +nfs-modules +speakup-modules +ppp-modules +sata-modules +ipmi-modules --- linux-raspi2-4.2.0.orig/debian.master/d-i/exclude-modules.powerpc +++ linux-raspi2-4.2.0/debian.master/d-i/exclude-modules.powerpc @@ -0,0 +1,7 @@ +efi-modules +fb-modules +acpi-modules +serial-modules +nic-pcmcia-modules +pcmcia-modules +pcmcia-storage-modules --- linux-raspi2-4.2.0.orig/debian.master/d-i/exclude-modules.ppc64el-generic +++ linux-raspi2-4.2.0/debian.master/d-i/exclude-modules.ppc64el-generic @@ -0,0 +1,11 @@ +serial-modules +pata-modules +fat-modules +pcmcia-storage-modules +nic-pcmcia-modules +pcmcia-modules +firewire-core-modules +usb-modules +mouse-modules +irda-modules +speakup-modules --- linux-raspi2-4.2.0.orig/debian.master/d-i/firmware/README.txt +++ linux-raspi2-4.2.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-raspi2-4.2.0.orig/debian.master/d-i/firmware/nic-modules +++ linux-raspi2-4.2.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.8.17.0.fw ? +bnx2x/bnx2x-e1-7.8.17.0.fw ? +bnx2x/bnx2x-e2-7.8.17.0.fw ? +tigon/tg3_tso5.bin ? +tigon/tg3_tso.bin ? +tigon/tg3.bin ? --- linux-raspi2-4.2.0.orig/debian.master/d-i/firmware/scsi-modules +++ linux-raspi2-4.2.0/debian.master/d-i/firmware/scsi-modules @@ -0,0 +1,3 @@ +qlogic/1040.bin ? +qlogic/12160.bin ? +qlogic/1280.bin ? --- linux-raspi2-4.2.0.orig/debian.master/d-i/kernel-versions.in +++ linux-raspi2-4.2.0/debian.master/d-i/kernel-versions.in @@ -0,0 +1,19 @@ +# arch version flavour installedname suffix bdep +amd64 PKGVER-ABINUM generic PKGVER-ABINUM-generic - - + +i386 PKGVER-ABINUM generic PKGVER-ABINUM-generic - - + +armhf PKGVER-ABINUM generic PKGVER-ABINUM-generic - - +armhf PKGVER-ABINUM generic-lpae PKGVER-ABINUM-generic-lpae - - + +arm64 PKGVER-ABINUM generic PKGVER-ABINUM-generic - - + +ppc64el PKGVER-ABINUM generic PKGVER-ABINUM-generic - - + +s390x PKGVER-ABINUM generic PKGVER-ABINUM-generic - - + +# Ports +# arch version flavour installedname suffix bdep +powerpc PKGVER-ABINUM powerpc-smp PKGVER-ABINUM-powerpc-smp - - +powerpc PKGVER-ABINUM powerpc64-smp PKGVER-ABINUM-powerpc64-smp - - +powerpc PKGVER-ABINUM powerpc-e500mc PKGVER-ABINUM-powerpc-e500mc - - --- linux-raspi2-4.2.0.orig/debian.master/d-i/modules-powerpc/block-modules +++ linux-raspi2-4.2.0/debian.master/d-i/modules-powerpc/block-modules @@ -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-raspi2-4.2.0.orig/debian.master/d-i/modules-powerpc/message-modules +++ linux-raspi2-4.2.0/debian.master/d-i/modules-powerpc/message-modules @@ -0,0 +1,7 @@ +mptbase +mptctl +mptfc +mptlan +mptsas +mptscsih +mptspi --- linux-raspi2-4.2.0.orig/debian.master/d-i/modules-powerpc/nic-modules +++ linux-raspi2-4.2.0/debian.master/d-i/modules-powerpc/nic-modules @@ -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-raspi2-4.2.0.orig/debian.master/d-i/modules-powerpc/scsi-modules +++ linux-raspi2-4.2.0/debian.master/d-i/modules-powerpc/scsi-modules @@ -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 ? +ibmvscsic ? +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-raspi2-4.2.0.orig/debian.master/d-i/modules-powerpc/storage-core-modules +++ linux-raspi2-4.2.0/debian.master/d-i/modules-powerpc/storage-core-modules @@ -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-raspi2-4.2.0.orig/debian.master/d-i/modules/block-modules +++ linux-raspi2-4.2.0/debian.master/d-i/modules/block-modules @@ -0,0 +1,60 @@ +aoe ? +aten ? +bpck ? +bpck6 ? +cciss ? +comm ? +cpqarray ? +DAC960 ? +dstr ? +epat ? +epia ? +fit2 ? +fit3 ? +friq ? +frpw ? +hpsa ? +kbic ? +ktti ? +nbd ? +nvme ? +on20 ? +on26 ? +paride ? +pcd ? +pd ? +pf ? +pg ? +pt ? +sdhci-tegra ? +sx8 ? +umem ? +virtio_blk ? +xen-blkfront ? +mtip32xx ? +# block modules required for mmc +cb710 ? +cb710-mmc ? +industrialio ? +mmc35240 ? +mmc_block ? +mmc_spi ? +crc-itu-t ? +crc7 ? +mmc_spi ? +rtsx_pci ? +rtsx_pci_sdmmc ? +rtsx_usb ? +rtsx_usb_sdmmc ? +sdhci ? +sdhci-pltfm ? +sdhci-pci ? +sdhci-acpi ? +sdio_uart ? +tifm_core ? +tifm_sd ? +toshsd ? +wbsd ? +mtk-sd ? +via-sdmmc ? +vub300 ? --- linux-raspi2-4.2.0.orig/debian.master/d-i/modules/crypto-modules +++ linux-raspi2-4.2.0/debian.master/d-i/modules/crypto-modules @@ -0,0 +1,70 @@ +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 ? +cryptd ? +cryptoloop ? +crypto_null ? +crypto_user ? +ctr ? +cts ? +deflate ? +des_generic ? +fcrypt ? +gcm ? +gf128mul ? +ghash-clmulni-intel ? +ghash-generic ? +khazad ? +lrw ? +lzo ? +md4 ? +michael_mic ? +padlock-aes ? +padlock-sha ? +pcbc ? +pcrypt ? +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 ? +zlib ? --- linux-raspi2-4.2.0.orig/debian.master/d-i/modules/fat-modules +++ linux-raspi2-4.2.0/debian.master/d-i/modules/fat-modules @@ -0,0 +1,7 @@ +fat ? +vfat ? + +# Supporting modules ? +nls_cp437 ? +nls_iso8859-1 ? +nls_utf8 ? --- linux-raspi2-4.2.0.orig/debian.master/d-i/modules/fb-modules +++ linux-raspi2-4.2.0/debian.master/d-i/modules/fb-modules @@ -0,0 +1,3 @@ +fbcon ? +vesafb ? +vga16fb ? --- linux-raspi2-4.2.0.orig/debian.master/d-i/modules/firewire-core-modules +++ linux-raspi2-4.2.0/debian.master/d-i/modules/firewire-core-modules @@ -0,0 +1,4 @@ +firewire-core ? +firewire-ohci ? +firewire-sbp2 ? +firewire-net ? --- linux-raspi2-4.2.0.orig/debian.master/d-i/modules/floppy-modules +++ linux-raspi2-4.2.0/debian.master/d-i/modules/floppy-modules @@ -0,0 +1 @@ +floppy ? --- linux-raspi2-4.2.0.orig/debian.master/d-i/modules/fs-core-modules +++ linux-raspi2-4.2.0/debian.master/d-i/modules/fs-core-modules @@ -0,0 +1,4 @@ +ext2 ? +jfs ? +reiserfs ? +xfs ? --- linux-raspi2-4.2.0.orig/debian.master/d-i/modules/fs-secondary-modules +++ linux-raspi2-4.2.0/debian.master/d-i/modules/fs-secondary-modules @@ -0,0 +1,5 @@ +btrfs ? +fuse ? +ntfs ? +hfs ? +hfsplus ? --- linux-raspi2-4.2.0.orig/debian.master/d-i/modules/input-modules +++ linux-raspi2-4.2.0/debian.master/d-i/modules/input-modules @@ -0,0 +1,23 @@ +hid-a4tech ? +hid-apple ? +hid-belkin ? +hid-bright ? +hid-cherry ? +hid-chicony ? +hid-cypress ? +hid-dell ? +hid-ezkey ? +hid-generic ? +hid-gyration ? +hid-logitech ? +hid-logitech-dj ? +hid-microsoft ? +hid-monterey ? +hid-petalynx ? +hid-pl ? +hid-samsung ? +hid-sony ? +hid-sunplus ? +hid-tmff ? +hid-zpff ? +usbhid ? --- linux-raspi2-4.2.0.orig/debian.master/d-i/modules/ipmi-modules +++ linux-raspi2-4.2.0/debian.master/d-i/modules/ipmi-modules @@ -0,0 +1,5 @@ +ipmi_devintf ? +ipmi_msghandler ? +ipmi_poweroff ? +ipmi_si ? +ipmi_watchdog ? --- linux-raspi2-4.2.0.orig/debian.master/d-i/modules/irda-modules +++ linux-raspi2-4.2.0/debian.master/d-i/modules/irda-modules @@ -0,0 +1,30 @@ +act200l-sir ? +actisys-sir ? +ali-ircc ? +donauboe ? +esi-sir ? +girbil-sir ? +ircomm ? +ircomm-tty ? +irda ? +irda-usb ? +irlan ? +irnet ? +irport ? +irtty-sir ? +kingsun-sir ? +ks959-sir ? +ksdazzle-sir ? +litelink-sir ? +ma600-sir ? +mcp2120-sir ? +mcs7780 ? +nsc-ircc ? +old_belkin-sir ? +sir-dev ? +smsc-ircc2 ? +stir4200 ? +tekram-sir ? +via-ircc ? +vlsi_ir ? +w83977af_ir ? --- linux-raspi2-4.2.0.orig/debian.master/d-i/modules/kernel-image +++ linux-raspi2-4.2.0/debian.master/d-i/modules/kernel-image @@ -0,0 +1,30 @@ +ast ? +gpio-pca953x ? +gpio-regulator ? +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-raspi2-4.2.0.orig/debian.master/d-i/modules/md-modules +++ linux-raspi2-4.2.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-raspi2-4.2.0.orig/debian.master/d-i/modules/message-modules +++ linux-raspi2-4.2.0/debian.master/d-i/modules/message-modules @@ -0,0 +1,9 @@ +mptbase ? +mptctl ? +mptfc ? +mptlan ? +mptsas ? +mpt2sas ? +mpt3sas ? +mptscsih ? +mptspi ? --- linux-raspi2-4.2.0.orig/debian.master/d-i/modules/mouse-modules +++ linux-raspi2-4.2.0/debian.master/d-i/modules/mouse-modules @@ -0,0 +1,2 @@ +psmouse ? +usbmouse ? --- linux-raspi2-4.2.0.orig/debian.master/d-i/modules/multipath-modules +++ linux-raspi2-4.2.0/debian.master/d-i/modules/multipath-modules @@ -0,0 +1,3 @@ +dm-multipath ? +dm-round-robin ? +dm-service-time ? --- linux-raspi2-4.2.0.orig/debian.master/d-i/modules/nfs-modules +++ linux-raspi2-4.2.0/debian.master/d-i/modules/nfs-modules @@ -0,0 +1,6 @@ +nfs ? +nfs_acl ? +nfsv3 ? +lockd ? +sunrpc ? +cifs ? --- linux-raspi2-4.2.0.orig/debian.master/d-i/modules/nic-modules +++ linux-raspi2-4.2.0/debian.master/d-i/modules/nic-modules @@ -0,0 +1,180 @@ +3c359 ? +3c501 ? +3c503 ? +3c505 ? +3c507 ? +3c509 ? +3c515 ? +3c523 ? +3c527 ? +3c59x ? +8139cp ? +8139too ? +82596 ? +abyss ? +ac3200 ? +adm8211 ? +airo ? +airport ? +alx ? +amd8111e ? +arc4 ? +arcnet ? +arc-rawmode ? +arc-rimi ? +arlan ? +at1700 ? +ath5k ? +ath9k ? +ath9k_htc ? +atl1 ? +atl1c ? +atl1e ? +atl2 ? +atmel ? +atmel_pci ? +b44 ? +be2net ? +bmac ? +bnx2 ? +bnx2x ? +bonding ? +brcmfmac ? +brcmsmac ? +xgmac ? +cassini ? +com20020 ? +com20020-pci ? +com90io ? +com90xx ? +cs89x0 ? +de2104x ? +de4x5 ? +de600 ? +de620 ? +defxx ? +depca ? +dl2k ? +dmfe ? +dummy ? +e100 ? +e1000 ? +e1000e ? +e2100 ? +eepro ? +eepro100 ? +eexpress ? +enic ? +epic100 ? +eql ? +es3210 ? +eth16i ? +ewrk3 ? +fealnx ? +forcedeth ? +igb ? +ps3_gelic ? +hamachi ? +hermes ? +hp ? +hp100 ? +hp-plus ? +i40e ? +i40evf ? +ibmtr ? +ipddp ? +ipw2100 ? +ipw2200 ? +iwl3945 ? +iwl4965 ? +iwl-legacy ? +iwldvm ? +iwlwifi ? +ixgb ? +ixgbe ? +lance ? +lanstreamer ? +lasi_82596 ? +lne390 ? +lp486e ? +mace ? +mlx4_core ? +mlx4_en ? +mlx5_core ? +mv643xx_eth ? +myri_sbus ? +natsemi ? +ne ? +ne2 ? +ne2k-pci ? +ne3210 ? +netconsole ? +netxen_nic ? +ni5010 ? +ni52 ? +ni65 ? +nicpf ? +nicvf ? +niu ? +ns83820 ? +olympic ? +orinoco ? +orinoco_pci ? +orinoco_plx ? +orinoco_tmd ? +pcnet32 ? +qlcnic ? +r815x ? +r8169 ? +rate_control ? +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-raspi2-4.2.0.orig/debian.master/d-i/modules/nic-pcmcia-modules +++ linux-raspi2-4.2.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-raspi2-4.2.0.orig/debian.master/d-i/modules/nic-shared-modules +++ linux-raspi2-4.2.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-raspi2-4.2.0.orig/debian.master/d-i/modules/nic-usb-modules +++ linux-raspi2-4.2.0/debian.master/d-i/modules/nic-usb-modules @@ -0,0 +1,32 @@ +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 ? +smsc95xx ? +zaurus ? +carl9170 ? +smsc75xx ? +smsc95xx ? --- linux-raspi2-4.2.0.orig/debian.master/d-i/modules/parport-modules +++ linux-raspi2-4.2.0/debian.master/d-i/modules/parport-modules @@ -0,0 +1,2 @@ +parport ? +parport_pc ? --- linux-raspi2-4.2.0.orig/debian.master/d-i/modules/pata-modules +++ linux-raspi2-4.2.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-raspi2-4.2.0.orig/debian.master/d-i/modules/pcmcia-modules +++ linux-raspi2-4.2.0/debian.master/d-i/modules/pcmcia-modules @@ -0,0 +1,8 @@ +i82092 ? +i82365 ? +pcmcia ? +pcmcia_core ? +pd6729 ? +rsrc_nonstatic ? +tcic ? +yenta_socket ? --- linux-raspi2-4.2.0.orig/debian.master/d-i/modules/pcmcia-storage-modules +++ linux-raspi2-4.2.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-raspi2-4.2.0.orig/debian.master/d-i/modules/plip-modules +++ linux-raspi2-4.2.0/debian.master/d-i/modules/plip-modules @@ -0,0 +1 @@ +plip ? --- linux-raspi2-4.2.0.orig/debian.master/d-i/modules/ppp-modules +++ linux-raspi2-4.2.0/debian.master/d-i/modules/ppp-modules @@ -0,0 +1,6 @@ +ppp_async ? +ppp_deflate ? +ppp_mppe ? +pppoe ? +pppox ? +ppp_synctty ? --- linux-raspi2-4.2.0.orig/debian.master/d-i/modules/sata-modules +++ linux-raspi2-4.2.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-raspi2-4.2.0.orig/debian.master/d-i/modules/scsi-modules +++ linux-raspi2-4.2.0/debian.master/d-i/modules/scsi-modules @@ -0,0 +1,129 @@ +# 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 ? +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 ? +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 ? +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 ? + +# device handlers +scsi_dh_alua ? +scsi_dh_emc ? +scsi_dh_rdac ? +scsi_dh_hp_sw ? --- linux-raspi2-4.2.0.orig/debian.master/d-i/modules/serial-modules +++ linux-raspi2-4.2.0/debian.master/d-i/modules/serial-modules @@ -0,0 +1,4 @@ +generic_serial ? +serial_cs ? +synclink_cs ? +hyperv-keyboard ? --- linux-raspi2-4.2.0.orig/debian.master/d-i/modules/speakup-modules +++ linux-raspi2-4.2.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-raspi2-4.2.0.orig/debian.master/d-i/modules/squashfs-modules +++ linux-raspi2-4.2.0/debian.master/d-i/modules/squashfs-modules @@ -0,0 +1 @@ +squashfs ? --- linux-raspi2-4.2.0.orig/debian.master/d-i/modules/storage-core-modules +++ linux-raspi2-4.2.0/debian.master/d-i/modules/storage-core-modules @@ -0,0 +1,10 @@ +# Core stacks +usb-storage ? + +# Block level + +# Loop modules +cryptoloop ? + +# Needs to be here for better cdrom initrd layout +isofs ? --- linux-raspi2-4.2.0.orig/debian.master/d-i/modules/usb-modules +++ linux-raspi2-4.2.0/debian.master/d-i/modules/usb-modules @@ -0,0 +1,11 @@ +ehci-hcd ? +isp116x-hcd ? +isp1760 ? +ohci-hcd ? +r8a66597-hcd ? +sl811_cs ? +sl811-hcd ? +u132-hcd ? +uhci-hcd ? +xhci-hcd ? +ehci-tegra ? --- linux-raspi2-4.2.0.orig/debian.master/d-i/modules/virtio-modules +++ linux-raspi2-4.2.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-raspi2-4.2.0.orig/debian.master/d-i/modules/vlan-modules +++ linux-raspi2-4.2.0/debian.master/d-i/modules/vlan-modules @@ -0,0 +1,3 @@ +slp ? +garp ? +8021q ? --- linux-raspi2-4.2.0.orig/debian.master/d-i/package-list +++ linux-raspi2-4.2.0/debian.master/d-i/package-list @@ -0,0 +1,202 @@ +Package: kernel-image +Provides: ext3-modules, ext4-modules +Provides_amd64: efi-modules, ext3-modules, ext4-modules +Provides_i386: efi-modules, ext3-modules, ext4-modules +Provides_ppc64el: ext3-modules, ext4-modules, fat-modules + +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: irda-modules +Depends: kernel-image, nic-shared-modules +Priority: standard +Description: Support for Infrared protocols + +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: squashfs-modules +Depends: kernel-image +Priority: extra +Description: squashfs modules + This package contains squashfs modules. + +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-raspi2-4.2.0.orig/debian.master/etc/getabis +++ linux-raspi2-4.2.0/debian.master/etc/getabis @@ -0,0 +1,19 @@ +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" +) + +package_prefixes linux-image linux-image-extra + +getall armhf generic +getall armhf generic-lpae +getall amd64 generic lowlatency +getall i386 generic lowlatency +getall arm64 generic +getall ppc64el generic + +# Ports arches and flavours. +getall powerpc powerpc-smp powerpc64-smp powerpc-e500mc powerpc64-emb --- linux-raspi2-4.2.0.orig/debian.master/etc/kernelconfig +++ linux-raspi2-4.2.0/debian.master/etc/kernelconfig @@ -0,0 +1,7 @@ +if [ "$variant" = "ports" ]; then + archs="" + family='ports' +else + archs="amd64 i386 armhf arm64 ppc64el powerpc" + family='ubuntu' +fi --- linux-raspi2-4.2.0.orig/debian.master/info/OVERRIDES +++ linux-raspi2-4.2.0/debian.master/info/OVERRIDES @@ -0,0 +1,153 @@ +CONFIG_RCU_KTHREAD_PRIO=0 +CONFIG_X86_AMD_PLATFORM_DEVICE=y +CONFIG_ZSMALLOC_STAT=N +CONFIG_LIVEPATCH=y +CONFIG_IEEE802154_SOCKET=m +CONFIG_NET_ACT_BPF=m +CONFIG_NET_ACT_CONNMARK=m +# CONFIG_BT_SELFTEST is not set +CONFIG_MTD_NAND_HISI504=m +CONFIG_IXGBE_VXLAN=y +CONFIG_TI_CPSW_ALE=m +CONFIG_MOUSE_PS2_FOCALTECH=y +CONFIG_INPUT_E3X0_BUTTON=m +CONFIG_INPUT_REGULATOR_HAPTIC=m +CONFIG_INPUT_TPS65218_PWRBUTTON=m +CONFIG_INPUT_AXP20X_PEK=m +# CONFIG_DEVMEM is not set +CONFIG_TCG_TIS_I2C_ST33=m +CONFIG_TCG_CRB=m +CONFIG_SPI_DLN2=m +CONFIG_CHARGER_MAX77693=m +CONFIG_BATTERY_GAUGE_LTC2941=m +CONFIG_MFD_DA9150=m +CONFIG_MFD_RT5033=m +CONFIG_REGULATOR_RT5033=m +CONFIG_USB_GSPCA_TOUPTEK=m +CONFIG_DUMMY_CONSOLE_COLUMNS=80 +CONFIG_DUMMY_CONSOLE_ROWS=25 +CONFIG_SND_USB_POD=m +CONFIG_SND_USB_PODHD=m +CONFIG_SND_USB_TONEPORT=m +CONFIG_SND_USB_VARIAX=m +CONFIG_SND_SOC_INTEL_CHT_BSW_RT5645_MACH=m +CONFIG_SND_SOC_XTFPGA_I2S=m +CONFIG_SND_SOC_STA32X=m +CONFIG_HID_BETOP_FF=m +CONFIG_USB_ISP1760=m +CONFIG_USB_CONFIGFS_F_UVC=y +CONFIG_LEDS_CLASS_FLASH=m +CONFIG_RTC_DRV_ABB5ZES3=m +CONFIG_RTC_DRV_DS1685_FAMILY=m +# CONFIG_RTC_DS1685_PROC_REGS is not set +# CONFIG_RTC_DS1685_SYSFS_REGS is not set +CONFIG_VIRTIO_PCI_LEGACY=y +CONFIG_FB_SM7XX=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_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_SSD1289=m +CONFIG_FB_TFT_SSD1306=m +CONFIG_FB_TFT_SSD1331=m +CONFIG_FB_TFT_SSD1351=m +CONFIG_FB_TFT_ST7735R=m +CONFIG_FB_TFT_TINYLCD=m +CONFIG_FB_TFT_TLS8204=m +CONFIG_FB_TFT_UC1701=m +CONFIG_FB_TFT_UPD161704=m +CONFIG_FB_TFT_WATTEROTT=m +CONFIG_FB_FLEX=m +CONFIG_FB_TFT_FBTFT_DEVICE=m +CONFIG_COMMON_CLK_CDCE706=m +CONFIG_ALTERA_MBOX=m +CONFIG_PM_DEVFREQ_EVENT=y +CONFIG_MMA9551=m +CONFIG_MMA9553=m +CONFIG_CC10001_ADC=m +CONFIG_QCOM_SPMI_VADC=m +CONFIG_IIO_SSP_SENSORHUB=m +CONFIG_KMX61=m +CONFIG_CM3232=m +CONFIG_JSA1212=m +CONFIG_SX9500=m +CONFIG_FS_DAX=y +# CONFIG_PSTORE_PMSG is not set +# CONFIG_F2FS_IO_TRACE is not set +CONFIG_NFSD_PNFS=y +CONFIG_GDB_SCRIPTS=y +# CONFIG_KASAN is not set +CONFIG_TEST_HEXDUMP=m +CONFIG_SECURITY_SMACK_NETFILTER=y +CONFIG_CRYPTO_USER_API_RNG=m +CONFIG_BLK_DEV_RAM_DAX=y +CONFIG_BATTERY_RT5033=m +CONFIG_IIO_SSP_SENSORS_COMMONS=m +# CONFIG_ZSMALLOC_STAT is not set +# CONFIG_X86_INTEL_QUARK is not set +# CONFIG_ZSMALLOC_STAT is not set +CONFIG_X86_SFI_CPUFREQ=m +# CONFIG_X86_INTEL_QUARK is not set +# CONFIG_ZSMALLOC_STAT is not set +CONFIG_X86_SFI_CPUFREQ=m +# CONFIG_ARCH_DIGICOLOR is not set +CONFIG_ARCH_HIP01=y +CONFIG_MACH_MT6589=y +CONFIG_MACH_MT6592=y +CONFIG_MACH_MT8127=y +CONFIG_MACH_MT8135=y +# CONFIG_ARCH_R8A73A4 is not set +# CONFIG_ZSMALLOC_STAT is not set +CONFIG_ARM_EXYNOS_CPUFREQ=m +# CONFIG_ARM_EXYNOS_CPU_FREQ_BOOST_SW is not set +CONFIG_OF_OVERLAY=y +CONFIG_HIP04_ETH=m +CONFIG_SERIAL_CONEXANT_DIGICOLOR=m +CONFIG_PINCTRL_MSM8916=m +CONFIG_POWER_RESET_RMOBILE=m +CONFIG_MEDIATEK_WATCHDOG=m +CONFIG_MFD_QCOM_RPM=m +CONFIG_REGULATOR_QCOM_RPM=m +CONFIG_NOUVEAU_PLATFORM_DRIVER=y +# CONFIG_DRM_EXYNOS7_DECON is not set +CONFIG_DRM_ATMEL_HLCDC=m +CONFIG_DISPLAY_ENCODER_OPA362=m +CONFIG_SND_SOC_TEGRA_RT5677=m +CONFIG_MMC_SDHCI_F_SDH30=m +CONFIG_RTC_DRV_ARMADA38X=m +CONFIG_RCAR_DMAC=m +CONFIG_CLK_QORIQ=m +CONFIG_IPQ_LCC_806X=m +CONFIG_MSM_LCC_8960=m +# CONFIG_IOMMU_IO_PGTABLE_LPAE is not set +CONFIG_ARM_TEGRA_DEVFREQ=m +# CONFIG_DEVFREQ_EVENT_EXYNOS_PPMU is not set +# CONFIG_ARCH_DIGICOLOR is not set +# CONFIG_ARCH_HIP01 is not set +CONFIG_MACH_MT6589=y +CONFIG_MACH_MT6592=y +CONFIG_MACH_MT8127=y +CONFIG_MACH_MT8135=y +# CONFIG_ARCH_R8A73A4 is not set +# CONFIG_CLK_QORIQ is not set +# CONFIG_IOMMU_IO_PGTABLE_LPAE_SELFTEST is not set +# CONFIG_ARCH_EXYNOS7 is not set +# CONFIG_ARCH_FSL_LS2085A is not set +# CONFIG_ARCH_TEGRA is not set +CONFIG_CAN_XILINXCAN=m +CONFIG_GPIO_XGENE_SB=m +# CONFIG_DEBUG_ALIGN_RODATA is not set +CONFIG_UIO_FSL_ELBC_GPCM=m +# CONFIG_UIO_FSL_ELBC_GPCM_NETX5152 is not set --- linux-raspi2-4.2.0.orig/debian.master/info/REBASE +++ linux-raspi2-4.2.0/debian.master/info/REBASE @@ -0,0 +1,47 @@ +Could not apply b551f2a4439d2179b3732c2a28277d9245dbb150... NEEDED UBUNTU: SAUCE: xgmac_mdio: Silence read errors + commit 1fcf77c87ad659a92e1dcfb883388cb43baeaab6 + +Could not apply 7cc84cf61b760725973c93b9c7e39d6f521bfe62... NEEDED Revert "net/mlx4_en: Fix bad use of dev_id" + commit ca9f9f703950e5cb300526549b4f1b0a6605a5c5 + +error: could not apply ff7e372... overlay: add backwards compatible overlayfs format support +Could not apply 3fd5011f880877a583b1ccefd06ad481452cdef7... NEEDED overlay: add backwards compatible overlayfs format support (fixes) + XXX: needed + +Could not apply 98c64db6cffd59a894d4a4492aea761fa6e6c51a... NEEDED UBUNTU: SAUCE: (no-up) apparmor: Sync to apparmor3 - RC1 snapshot +Could not apply 892b8b7cfb14b9bdfbc9ac2fee8e751a67707542... NEEDED UBUNTU: SAUCE: Revert: fix: only allow a single threaded process to ... +Could not apply e1b6a4b88bdb9cf858e068d0e3a6b7449d648513... NEEDED UBUNTU: SAUCE: (no-up) fix: bad unix_addr_fs macro +Could not apply 9defa41f9126d026cd6a1ead03e6443e98e97108... NEEDED UBUNTU: apparmor -- follow change to this_cpu_ptr +Could not apply 36ca906c4d4cf34bb5a750d1dbd3e4abe36a4684... NEEDED UBUNTU: SAUCE: (no-up): apparmor: fix mediation of fs unix sockets + XXX: needed (apparmor) + PORTED AND REAPPLIED + +Could not apply 4594c0a5b120fc92fb141c1cf9eef3e8d665e4e6... NEEDED UBUNTU: SAUCE: storvsc: force SPC-3 compliance on win8 and win8 r2 hosts + commit b0a93d96b2814c725161f91a4e35d0c29ec0f95b + +Could not apply d8db9694361b258427eab1846b211be332c4a1f9... NEEDED UBUNTU: SAUCE: efi: Expose underlying UEFI firmware platform size to userland + commit 2859dff97e54db4795b8b7d9606cb8efcec722ff + +Could not apply fe8ce4f67a26106dab3193b3515fe865e136ab4a... NEEDED UBUNTU: SAUCE: arm64 -- psci tell the compiler which registers we are needing values in + commit f5e0a12ca2d939e47995f73428d9bf1ad372b289 + +Could not apply e9f926b44c895d39152d3f816ce9ff37780f77cb... NEEDED xen: correct bug in p2m list initialization + commit b8f05c8803fce899d79ca66f8d7f348cf15fb40e + +Could not apply 7ec323466d993094545e140cc44559cb1cccbd14... NEEDED tpm/ibmvtpm: Additional LE support for tpm_ibmvtpm_send + commit 62dfd912ab3b5405b6fe72d0135c37e9648071f1 + +Could not apply 6b610659f8b313644c0012a511c6381e9fe7d881... NEEDED net/mlx4_core: Maintain a persistent memory for mlx4 device + commit 872bf2fb69d90e3619befee842fc26db39d8e475 + +Could not apply 7e9a6608ca11948dd0996b6db99e498ca043a0cd... NEEDED tools/power turbostat: support additional Broadwell model + commit 48a0631c891ab581cc010b44655ad49ff6eb3325 + +Could not apply 9a9ab8a2348c722405964a0c785c4b2a613d8782... NEEDED KVM: Add generic support for dirty page logging + commit ba0513b5b8ffbcb0cc89e2f172c0bcb70497ba2e + +Could not apply 9a9ab8a2348c722405964a0c785c4b2a613d8782... NEEDED KVM: Add generic support for dirty page logging + commit 3b0f1d01e501792d8d89ab4371bc9e8cd2a10032 + +Could not apply 0335b4283d02dcd6e7d6b54e175801099873852e... NEEDED KVM: VMX: Add PML support in VMX + commit 843e4330573cc5261ae260ce0b83dc570d8cdc05 --- linux-raspi2-4.2.0.orig/debian.master/info/RECONCILE +++ linux-raspi2-4.2.0/debian.master/info/RECONCILE @@ -0,0 +1,506 @@ +=== total: 505 ignored: 55 (upstreamed: 49 reverted: 6) needed: 450 (debian: 298 ubuntu: 14 sauce: 138) === +3377e17d83c8ce29dc0128c9785043b630e283f3 IGNORE:IN:7486341a98f26857f383aec88ffa10950087c3a1 x86/platform, acpi: Bypass legacy PIC and PIT in ACPI hardware reduced mode +e826d2f5ee447384828473c249ef38c08b72ffc1 IGNORE:IN:d474a4d365aaa5c7aabcf11a74ea43aa23f6f2e9 powercap / RAPL: handle domains with different energy units +27ba48b7bec5dc0c9b665b334bbea30fdb44160a NEEDED:debian UBUNTU: [Config] add nvme to linux-virtual as this is now used in GCE to expose disks +0788d51a2a8d794eb1c8394154028cb593be7ee7 NEEDED:debian UBUNTU: Ubuntu-3.19.0-10.10 +eb97881b6320d127b354b8cb03937504683a7f18 NEEDED HID: multitouch: Add support for button type usage +554fc470460c6c4d94f202a8a73f24491bc9f0f7 NEEDED HID: multitouch: add support of clickpads +e098a93f8c11db119261d5c4791d4f9c62c666e8 NEEDED:debian UBUNTU: fix up changelog for rebase +c0b0bccbe70c7d602c114871d1e1ce42c478f6dc NEEDED:debian UBUNTU: rebase to v3.19.2 +9e086fc3fb3d7f09d4dacfccab0784812ef78764 NEEDED:debian UBUNTU: [Config] CONFIG_KVM_GENERIC_DIRTYLOG_READ_PROTECT=y +0335b4283d02dcd6e7d6b54e175801099873852e NEEDED KVM: VMX: Add PML support in VMX +9fa8950638aac15e1273204c9c76447524236345 IGNORE:IN:88178fd4f7187bbe290c5d373fd44aabec891934 KVM: x86: Add new dirty logging kvm_x86_ops for PML +540b4deed1133b94ba9665ca1c5bdf692fc32c5b IGNORE:IN:1c91cad42366ce0799ca17e7ad6995418741d012 KVM: x86: Change parameter of kvm_mmu_slot_remove_write_access +9cd0789cd13fe6ceb057b6ee0a9a8089e3d085d0 IGNORE:IN:9b51a63024bd759f97a12f50907b8af23b065b36 KVM: MMU: Explicitly set D-bit for writable spte. +d06b40dc692080da03fd5fa3f19aa6c3d201cb38 IGNORE:IN:f4b4b1808690c37c7c703d43789c1988c5e7fdeb KVM: MMU: Add mmu help functions to support PML +ec2347761088c13ec640886cb492e4d4f8aee759 NEEDED KVM: Rename kvm_arch_mmu_write_protect_pt_masked to be more generic for log dirty +7b476333c9fd20d2be03eba64339df96a6d326d6 IGNORE:IN:e108ff2f8033a417ee3e517d9f8730f665646076 KVM: x86: switch to kvm_get_dirty_log_protect +9a9ab8a2348c722405964a0c785c4b2a613d8782 NEEDED KVM: Add generic support for dirty page logging +baddf7f579e3094b7b32c119fae9bb1b4ac557c5 IGNORE:IN:d91ffee9ec633c6523ef1ea39c36ace578760258 Optimize TLB flush in kvm_mmu_slot_remove_write_access. +e824a2cfa15c76aefc09dcd0157ee31a565b2cb3 IGNORE:IN:7e71a59b250330fd52ee7293eb9d31952f16682e KVM: x86: flush TLB when D bit is manually changed. +7e9a6608ca11948dd0996b6db99e498ca043a0cd NEEDED tools/power turbostat: support additional Broadwell model +827aac896a47cdfbc19679d4e14dc269fd0ac846 IGNORE:IN:bea57077e44ec9c1e6d3a3c142c8a3c0289e290d intel_idle: support additional Broadwell model +3057d6279a10157e6bd1ab7148ef4fc2ccb14d6d IGNORE:IN:3df76a9dcc74d5f012b94ea01ed6e7aaf8362c5a powerpc/pseries: Fix endian problems with LE migration +dba28dfc35d65493b65d7d4bf382e09297ef9bb4 IGNORE:IN:4ad04e5987115ece5fa8a0cf1dc72fcd4707e33e powerpc/iommu: Remove IOMMU device references via bus notifier +f9f283435213397957099d1a66a3a0d5bede3528 IGNORE:IN:5c65670c9bfa3be1234d29f36b742897c0360ef3 powerpc/perf/hv-24x7: Document sysfs event description entries +179039e2ee295381d24a1832349100569ca96acb IGNORE:IN:97bf2640184f4fb2b2bf2c58ae3112768a6174fa powerpc/perf/hv-gpci: add the remaining gpci requests +eb14eac49af21beac96d0933103b0e329ed4b2be IGNORE:IN:9e9f60108423f18a99c9cc93ef7f23490ecc709b powerpc/perf/{hv-gpci, hv-common}: generate requests with counters annotated +23b8dd8e12de9f1268a1ecb18a1ec9d157444cfa IGNORE:IN:5c5cd7b502595f6b90509b8aa4bba6f81b69315c powerpc/perf/hv-24x7: parse catalog and populate sysfs with events +0a72cae7a37a649fb997835c99a93711254210c9 IGNORE:IN:e08e52824e41fb42e46593450d378ad1b33caedb perf: define EVENT_DEFINE_RANGE_FORMAT_LITE helper +06aa2a9afd745edcb3c3b80eec10c0cf6795cfc0 IGNORE:IN:f0405b816149665393cc62b9e5082fc2d79714df perf: add PMU_EVENT_ATTR_STRING() helper +e38b3e25ccd090c3be55addc72746ffea85e26fd IGNORE:IN:fd979c0132074856975a6e79bc2226b99435ec5b perf: provide sysfs_show for struct perf_pmu_events_attr +0512d012693ab7696fc390aa58e38623f774e8f0 IGNORE:IN:f9ab9c196d015f3bd8f6bd1c30785c5a49542323 perf tools: Document parameterized and symbolic events +914c3ae025813d3868fddac5e7f63eef89a1f77c IGNORE:IN:98a43e0e9917059da32db89829b0eb95453a11ee perf Documentation: Add event parameters +59c3fddc383e9d02e6ae04cbd9247d626f6acc90 IGNORE:IN:aaea36174991ff39c7a18044660db86527100c55 perf tools: Extend format_alias() to include event parameters +7ee609fce3a1aa657c3613b985dc62f1a45acaf0 IGNORE:IN:688d4dfcdd624192cbf03c08402e444d1d11f294 perf tools: Support parsing parameterized events +1d74db86f07ee680a466ae02b460e164aa58a38a NEEDED:debian UBUNTU: [Packaging] generate live watchdog blacklists +6b5949d8cf32e576a5892472a7826545d94292a4 NEEDED:debian UBUNTU: Start new release +a705b4e4855e7b484ed11831941fb7093a12d660 IGNORE:IN:285994a62c80f1d72c6924282bcb59608098d5ec arm64: Invalidate the TLB corresponding to intermediate page table levels +fef4b02b6f20e9cbb50522916a4fd079ed821c07 IGNORE:IN:1b0eb5bc241354aa854671fdf02132d2d1452bdf thinkpad_acpi: support new BIOS version string pattern +572a605fa5352dcb8a8cc982bbdb998f752aea07 NEEDED:debian UBUNTU: [Config] allow dracult to support initramfs as well +727f017959487a34dd3c14659306b869545348a5 NEEDED:debian UBUNTU: [Packaging] control -- make element ordering deterministic +6a501ec1a8e49e7b9869fed950bd1642dd1b68af NEEDED:debian UBUNTU: Ubuntu-3.19.0-9.9 +57165ece4262217e644bc0577bf9ccd5e452f2da NEEDED UBUNTU: SAUCE: IB/core: Prevent integer overflow in ib_umem_get address arithmetic +4815357c48175b96d4bc67dfbd6c4fb30bb4d714 NEEDED:debian UBUNTU: Start new release +03247c64299523710c3935227d1a7e28aeb34a97 NEEDED:debian UBUNTU: Ubuntu-3.19.0-8.8 +36ca906c4d4cf34bb5a750d1dbd3e4abe36a4684 NEEDED UBUNTU: SAUCE: (no-up): apparmor: fix mediation of fs unix sockets +c34820ce1a87b536c2da84daf892e884de7f3067 IGNORE:IN:d0af71a3573f1217b140c60b66f1a9b335fb058b tg3: Hold tp->lock before calling tg3_halt() from tg3_init_one() +420ed2b6622aa62d962e770422f887e38ede78ac IGNORE:IN:0cd9302734111abc0b5912b695336f2ee63cb22b net/mlx4_core: Reset flow activation upon SRIOV fatal command cases +441e06e149e10acf3fa4497ae041f79f75a97c23 IGNORE:IN:55ad359225b2232b9b8f04a0dfa169bd3a7d86d2 net/mlx4_core: Enable device recovery flow with SRIOV +6aa4bcac4501cbf723abbc1b49f22b113c7323f9 IGNORE:IN:2ba5fbd62b2534335f4e3b844ecc7860115525a3 net/mlx4_core: Handle AER flow properly +a1b81382798563ef9092cad425cccc1e2fc2626e IGNORE:IN:c69453e294c9f16da977b68e658a8028b854c209 net/mlx4_core: Manage interface state for Reset flow cases +da98e7467248aae377055c75b6380aa5f3f075ec IGNORE:IN:f5aef5aa35063f2b45c3605871cd525d0cb7fb7a net/mlx4_core: Activate reset flow upon fatal command cases +9a583f4441d28f7b034a2eaaa3aeacdddc0ec65a IGNORE:IN:f6bc11e42646e661e699a5593cbd1e9dba7191d0 net/mlx4_core: Enhance the catas flow to support device reset +5e52f6741b9fe61696f882effa83021eb013bb2e IGNORE:IN:ad9a0bf08ffbf32b8f292c3bb78ca0f24bb8f6b2 net/mlx4_core: Refactor the catas flow to work per device +efee37c90fa0d7f1704ea59bcc47b8590b5cf7ca IGNORE:IN:dd0eefe3abbf47442db296bf68f27eb2860c1cdf net/mlx4_core: Set device configuration data to be persistent across reset +6b610659f8b313644c0012a511c6381e9fe7d881 NEEDED net/mlx4_core: Maintain a persistent memory for mlx4 device +7ec323466d993094545e140cc44559cb1cccbd14 NEEDED tpm/ibmvtpm: Additional LE support for tpm_ibmvtpm_send +dd82e0b3366c0583f66daa1e6fd229e24468d615 IGNORE:IN:de61390cb3e03186f85997fe08a11dcb9f7a01a3 net/mlx5_core: Fix configuration of log_uar_page_sz +aa391baed594091165eefe21e759f0604dd66c0a NEEDED:debian UBUNTU: rebase to stable v3.19.1 +7eaea45f7109a1e769d5379352e40b13e1b5d6d6 NEEDED:debian UBUNTU: Start new release +a1ab7786a77235d3fe40ef93e239d26ad095f8c6 NEEDED:ubuntu-driver UBUNTU: ubuntu: vbox -- elide the new symlinks and reconstruct on clean: +e9f926b44c895d39152d3f816ce9ff37780f77cb NEEDED xen: correct bug in p2m list initialization +e253864af74e9fd0dbb79c6a1b9ab117d335a006 NEEDED:debian UBUNTU: Ubuntu-3.19.0-7.7 +da9ed9fbcffe22ad779cd0f9e63cae8125870f4c NEEDED:debian UBUNTU: Start new release +a3efc506086bfc1770015e3a1545d708464dccbc IGNORE:IN:1b28f170d99170a1fdd22818a9610a73196b391d powerpc/eeh: Allow to set maximal frozen times +d2616b0dfec986efcea32f5a7907bb67334fee40 IGNORE:IN:432227e9077eec13b3caf3aec6087f94a2f4327f powerpc/eeh: Introduce flag EEH_PE_REMOVED +0d7adce37648ab16e146c07998c86f929933ced2 IGNORE:IN:3d5be0392f52489b7572903d83f1f267f26e6b69 cxl: Fail AFU initialisation if an invalid configuration record is found +4406598cf9db984056879f543a1dbd0580589fc5 IGNORE:IN:b087e6190ddcd9ae4e8ff2c788d2b32f193e946b cxl: Export optional AFU configuration record in sysfs +9810a8574ecb496bdb6805df46ef040889279489 IGNORE:IN:62fa19d4b4fd781ad37c9155c6332f28a9e97a2c cxl: Add ability to reset the card +e0479a12aa4aceb678db96257318102e165127dc IGNORE:IN:1212aa1c8c9ca34642f7737e1edaa96c9ce3d7dd cxl: Enable CAPP recovery +047163114be9cf5d4fd9ad368b6c0f8f18c177d8 IGNORE:IN:95bc11bcd1428afdb48400ec84dc6d5a83926138 cxl: Add image control to sysfs +211238b75962ee2b4ddcb1648b94fd2d11464b64 IGNORE:IN:49fd644c3b0014fb80c2b1db7d8c86a75c4c6b1f cxl: Update CXL ABI documentation +ef2cf73ffe825cb6e5350972edb6ef989f7c019b IGNORE:IN:9bcf28cdb28e6a793c4e59f0a42c66fe241993a8 cxl: Add tracepoints +bb463fd6632c70d258c46e08a49dbd8ed90b6662 IGNORE:IN:d3383aaae9800b9e13e25b71f70dff3814d10373 cxl: remove redundant increment of hwirq +50419f397e513bb53fd3a43953ddf97e344b1f9e IGNORE:IN:db7933f392ac4d9719d41d3f203a5f6a1c40f300 cxl: Disable SPAP register when freeing SPA +1a4659245b032feb290aa890a831fe6db8cce677 IGNORE:IN:d6a6af2c181400aade59417e698c7cd9bec8804e cxl: Disable AFU debug flag +9e024f9abf9a7bb11c8812ad8f4baac2542b41a4 IGNORE:IN:13da704682471669685ccc3fe111fd6c0127b2eb cxl: Early return from cxl_handle_fault for a shut down context +b745d4388fd7f150d8c27239a107acc4769c3a55 IGNORE:IN:456295e284beb7b61a55ead9500d30f94ab06d52 cxl: Fix leaking interrupts if attach process fails +aa79645da2c295c7a54a38d727ba5424c56e8c78 NEEDED:debian UBUNTU: Ubuntu-3.19.0-6.6 +2506464009b6efd8886841fd42aa35dd276e1ae2 NEEDED:ubuntu-driver UBUNTU: ubuntu: vbox -- update to 4.3.22-dfsg-1 +0af35a1df1616ee3af688b8f6811ea980b4ba105 NEEDED:debian UBUNTU: [Config] move vbox modules into linux-image +591572a04b2929501bfd944f0e1b5dc918d905c2 NEEDED:debian UBUNTU: Disable module check for I2C_CHARDEV=y config change +ded3e335312faf2066f1a293bc34612f20c7075a NEEDED:debian UBUNTU: [Config] I2C_CHARDEV=y +6d41878ad435f83f107290bd47da1cae88a5960e NEEDED:debian UBUNTU: Start new release +af9f67abe58ef01a0e38809dbf9dc9b579d6f729 NEEDED:debian UBUNTU: systemd -- fix hyper-v units to be non-forking +e06b795ba62bfe38b378a77df6aa1f4e4b4be003 NEEDED:debian UBUNTU: SAUCE: DEP8 test to run our regression tests +a651bfbc176a850449052a44a8f99cb298cb49f0 NEEDED:debian UBUNTU: Ubuntu-3.19.0-5.5 +65c15025855e39b160ced2bfd9cee0233e9eb5bd NEEDED:debian UBUNTU: rebase to v3.19 final +00b14848d0ba3d47a244bbe142f4aec6abc6ad8a NEEDED:debian UBUNTU: Start new release +e3963bddd383dbb567b6e9a3b6d1229b335be7c9 NEEDED:ubuntu-driver UBUNTU: ubuntu: vbox -- update to 4.3.20-dfsg-1ubuntu1 +5dde1b4a9a0dcbff893ba69c97bc8e9af5aeced4 NEEDED:ubuntu-driver UBUNTU: ubuntu: (no-squash) vbox -- infrastructure and updater +4ac4ed6aaaabccd3113d12d2aae4227eeed2a94d NEEDED UBUNTU: SAUCE: ext4: disable ext4_punch_hole for indirect filesystems +20f73500aa3c6973b662d434ea994a067d2732ce NEEDED:debian UBUNTU: [Config] Add ibmvfc to d-i +27016d13d7def2d932edabe10cda08551eb76af4 NEEDED:debian UBUNTU: [Config] CONFIG_FA_DUMP=y +043037877a7de2b8e6b2dff0420efe45ecff2ff5 NEEDED:debian UBUNTU: Ubuntu-3.19.0-4.4 +5dacd4f7dba5435e1b960bdc491293c82ee3ec2f NEEDED:debian UBUNTU: updateconfigs following rebase to v3.19-rc7 +9eade02480702c9670f2bac1bd55d38545a312cf NEEDED:debian UBUNTU: rebase to v3.19-rc7 +28f33eab58fbe7473e6ef7273c82f6b46108bd19 NEEDED:debian UBUNTU: Start new release +113ccff71d64d15da62001f597421ead251c70a8 NEEDED:debian UBUNTU: hyper-v -- fix comment handing in /etc/network/interfaces +2df9364c2056a3043e10cd5a62ce9706b2f7d1d1 NEEDED UBUNTU: SAUCE: rtsx_usb_ms: Use msleep_interruptible() in polling loop +88065e99f0f6bcf3dc4631a2ceec2f2708af8cef NEEDED:debian UBUNTU: [Config] apply Kernel hacking >> Tracers config defaults +0d569c89d78dfe8145fbeebe5249f794a9d0f552 NEEDED:debian UBUNTU: Ubuntu-3.19.0-3.3 +c0a8e98a3847348d78a54c944d202137d068b94d NEEDED:debian UBUNTU: annotations -- pull in updated annotations +25a4fc67cec440d3bb4bc7705449df08e6c51858 NEEDED:debian UBUNTU: [Config] updateconfigs following rebase to v3.19-rc6 +7c37badc321d561bbd2f178669119c919ff20522 NEEDED:debian UBUNTU: rebase to v3.19-rc6 +4b617281c437581c70f6cf2334398bb1ab1c0340 NEEDED:debian UBUNTU: [Config] apply Device Drivers >> Mailbox Hardware Support config defaults +32d6900d5dc2578bdb1627edfeed21e631a31e60 NEEDED:debian UBUNTU: [Config] apply General setup >> CPU/Task time and stats accounting >> Cputime accounting config defaults +cd6b5ebc39722a4e376e47f1d48a0e46286ff308 NEEDED:debian UBUNTU: [Config] apply Device Drivers >> SCSI device support >> SCSI device support >> SCSI low-level drivers config defaults +c8a2a8aae37f1474453bea69acbf95c396227e31 NEEDED:debian UBUNTU: [Config] apply Device Drivers >> Real Time Clock config defaults +a74fa91f9105e69fd2b101d914ab503ef67dd227 NEEDED:debian UBUNTU: [Config] apply Device Drivers >> Network device support >> Wireless LAN >> Intel Wireless WiFi Next Gen AGN - Wireless-N/Advanced-N/Ultimate-N (iwlwifi) config defaults +fe8ce4f67a26106dab3193b3515fe865e136ab4a NEEDED UBUNTU: SAUCE: arm64 -- psci tell the compiler which registers we are needing values in +2f02ebe61ad44b1175700cc78a3ccd94bb07ff06 NEEDED:debian UBUNTU: [Packaging] force "dpkg-source -I -i" behavior +5a6bf13232cd325e73e6ebae516cac9b0da4421c NEEDED:debian UBUNTU: [Config] apply General setup >> Timers subsystem >> Timer tick handling config defaults +d3d0add00f0801e6823242d1c7bd41c990eb05bb NEEDED:debian UBUNTU: [Config] apply Kernel hacking >> Kernel debugging config defaults +3b255c82446a97f59e59adb3bd320df4550c1381 NEEDED:debian UBUNTU: [Config] apply Networking support >> Networking options >> Network packet filtering framework (Netfilter) >> IPv6: Netfilter Configuration >> IPv6 NAT config defaults +3549c0af6717159aa8a3b77864dde9b341476b1b NEEDED:debian UBUNTU: [Config] apply Networking support >> Networking options >> Network packet filtering framework (Netfilter) >> IP: Netfilter Configuration >> IPv4 NAT config defaults +76fb94fa938323cea755f08923c1699f857849a4 NEEDED:debian UBUNTU: [Config] apply Device Drivers >> Pulse-Width Modulation (PWM) Support config defaults +91aa3e3c5f375fcda9802e0bf30743388db97809 NEEDED:debian UBUNTU: [Config] apply Device Drivers >> Input device support >> Generic input layer (needed for keyboard, mouse, ...) >> Mice config defaults +7e28f1d5b0f539c2f315248d638d322cc1bed204 NEEDED:debian UBUNTU: [Config] apply Device Drivers >> Input device support >> Generic input layer (needed for keyboard, mouse, ...) >> Keyboards config defaults +83d976c317bc7939457ba2b194ca9b20942b08e8 NEEDED:debian UBUNTU: [Config] apply Networking support >> Wireless >> Generic IEEE 802.11 Networking Stack (mac80211) config defaults +a6ff3e7b7835019303b4df16c7d34e83f7bc432f NEEDED:debian UBUNTU: [Config] apply Networking support >> Networking options >> TCP/IP networking config defaults +fff6ce5d257e3a55676ab2f32f7174648b48bd4d NEEDED:debian UBUNTU: [Config] apply Networking support >> Networking options >> QoS and/or fair queueing >> Actions config defaults +3db2706fa00266f41b26ac6156b92cc92013c4b6 NEEDED:debian UBUNTU: [Config] apply Networking support >> Networking options >> Network packet filtering framework (Netfilter) >> Core Netfilter Configuration >> Netfilter nf_tables support config defaults +d379025cb43c73ba0ba6b1e9ae7030ef3706acbb NEEDED:debian UBUNTU: [Config] apply Networking support >> NFC subsystem support >> Near Field Communication (NFC) devices config defaults +d682b0866fdab7676efc02d7aca31ffba5af5ba9 NEEDED:debian UBUNTU: [Config] apply Device Drivers >> USB support >> USB Gadget Support >> USB Peripheral Controller config defaults +cc6d21036b39e6747f35992743390b46f490ef71 NEEDED:debian UBUNTU: [Config] apply Device Drivers >> USB support >> USB Gadget Support >> USB Gadget Drivers >> USB functions configurable through configfs config defaults +f38ce7164ddb54b46a19ed6e3640d5e21f968aff NEEDED:debian UBUNTU: [Config] apply Device Drivers >> Staging drivers >> Media staging drivers config defaults +f2e32d3fe36a5af721325ad09244872f55783932 NEEDED:debian UBUNTU: [Config] apply Device Drivers >> Staging drivers >> Lustre file system client support config defaults +3fa3a6e3f9bc72ccf4050d5278d82c4f18fa614c NEEDED:debian UBUNTU: [Config] apply Device Drivers >> Sound card support >> Advanced Linux Sound Architecture >> HD-Audio config defaults +7483bb4ddb3800421bf67db6f57e9a2ad68aede9 NEEDED:debian UBUNTU: [Config] apply Device Drivers >> Sound card support >> Advanced Linux Sound Architecture >> FireWire sound devices config defaults +bb035568140e5726260cbffc40900186503e066e NEEDED:debian UBUNTU: [Config] apply Device Drivers >> Sound card support >> Advanced Linux Sound Architecture >> ALSA for SoC audio support config defaults +5857964914cdeedb945ef65490afa1353f0e7d06 NEEDED:debian UBUNTU: [Config] apply Device Drivers >> SPI support config defaults +67356ed062d29becaaf27108aa8737fee13cab69 NEEDED:debian UBUNTU: [Config] apply Device Drivers >> Pin controllers config defaults +fdab45aa9ebd2c87af7ad88b62c557a9ddaf06eb NEEDED:debian UBUNTU: [Config] apply Device Drivers >> PHY Subsystem config defaults +be26a7664fe53b25132a1570e7cb572cdfaf8f03 NEEDED:debian UBUNTU: [Config] apply Device Drivers >> Network device support >> Wireless LAN >> Intel PRO/Wireless 2200BG and 2915ABG Network Connection config defaults +664ad4582ac5f69f585defe21f75a44efdc5def9 NEEDED:debian UBUNTU: [Config] apply Device Drivers >> Network device support >> Wireless LAN >> Hermes chipset 802.11b support (Orinoco/Prism2/Symbol) config defaults +7abff1caa5b128105a095b294a4084d58eb4208a NEEDED:debian UBUNTU: [Config] apply Device Drivers >> Network device support >> Network core driver support config defaults +b85516a587125164e4fb6f40a937687859484278 NEEDED:debian UBUNTU: [Config] apply Device Drivers >> Network device support >> Distributed Switch Architecture drivers config defaults +6eeec6ead3c181f9d305a5139a2af09ab02d25e2 NEEDED:debian UBUNTU: [Config] apply Device Drivers >> Multimedia support >> Remote Controller devices config defaults +9bf5422ec87618ea0a9c158e2ee3ea763769635e NEEDED:debian UBUNTU: [Config] apply Device Drivers >> Multimedia support >> Media PCI Adapters config defaults +0062486c5f49ca81ce44c08483793cd28bd55d4e NEEDED:debian UBUNTU: [Config] apply Device Drivers >> Multimedia support >> Cameras/video grabbers support >> Media test drivers config defaults +a3cab812b888b76a1c6188d51837461f82579107 NEEDED:debian UBUNTU: [Config] apply Device Drivers >> Multifunction device drivers config defaults +efce9b94895b00d4246281051a6f57abd556b593 NEEDED:debian UBUNTU: [Config] apply Device Drivers >> MMC/SD/SDIO card support config defaults +ba5f91a1915102862b13b8c73223662536b6ff51 NEEDED:debian UBUNTU: [Config] apply Device Drivers >> LED Support >> LED Class Support config defaults +5a655a22455c44e92b820d86de5f1eff080d44a1 NEEDED:debian UBUNTU: [Config] apply Device Drivers >> Input device support >> Generic input layer (needed for keyboard, mouse, ...) >> Touchscreens config defaults +2dc2403265124b82af4a57da628cb21bafbab54a NEEDED:debian UBUNTU: [Config] apply Device Drivers >> Input device support >> Generic input layer (needed for keyboard, mouse, ...) >> Mice config defaults +9fe17395d411adbcfb323c915f84ea85f4c48ce8 NEEDED:debian UBUNTU: [Config] apply Device Drivers >> Industrial I/O support >> Pressure sensors config defaults +5e7b068f32db503c6eb371a23ae2c2a16749578f NEEDED:debian UBUNTU: [Config] apply Device Drivers >> Industrial I/O support >> Humidity sensors config defaults +20e5409f0457d28d2abca5ef7c1630dc22d84813 NEEDED:debian UBUNTU: [Config] apply Device Drivers >> Industrial I/O support >> Analog to digital converters config defaults +7ae44769248078c8d1ba362fcf3de16b8ab681ab NEEDED:debian UBUNTU: [Config] apply Device Drivers >> I2C support >> I2C support >> I2C Hardware Bus support config defaults +581c6acbf122138da27108c2a13098d6815349df NEEDED:debian UBUNTU: [Config] apply Device Drivers >> Hardware Monitoring support config defaults +2e33cbcfe6451f61ae18aeec37fe1753d0a52cc2 NEEDED:debian UBUNTU: [Config] apply Device Drivers >> HID support >> HID bus support >> Special HID drivers config defaults +02139708b965f07a499593f9036750c30fbe6454 NEEDED:debian UBUNTU: [Config] apply Device Drivers >> Graphics support >> Frame buffer Devices >> Support for frame buffer devices config defaults +a86fe195e825e37e694a5960f7af6ddfbf9f3673 NEEDED:debian UBUNTU: [Config] apply Device Drivers >> Graphics support >> Direct Rendering Manager >> Direct Rendering Manager (XFree86 4.1.0 and higher DRI support) config defaults +0d10ef98e5bb7c1fb144139e54e13d0051d6f5e4 NEEDED:debian UBUNTU: [Config] apply Device Drivers >> GPIO Support config defaults +0c423ad9c578e7596de1409cbfd2db4d5b988cd2 NEEDED:debian UBUNTU: [Config] apply Device Drivers >> Character devices >> Serial drivers config defaults +58007d9583eaf94442bcaf472d4e69c8dc24cf61 NEEDED:debian UBUNTU: [Config] apply Device Drivers >> Character devices >> IPMI top-level message handler config defaults +429394f5a6c855973e6027edbf8811d94f2e54d7 NEEDED:debian UBUNTU: [Config] Disable CONFIG_USB_OTG +7676b5cebdfe24bebfe402c85ce7d232f76fe756 NEEDED:debian UBUNTU: [Config] CONFIG_DEBUG_INFO_SPLIT=n +66857d56aa24e2eff079df005f0d189060d68645 NEEDED:debian UBUNTU: [Config] annotations: clean up CONFIG_FW_LOADER_USER_HELPER_FALLBACK and associates +17fde7fa97d8da20c499e37ff9615895623adb8e NEEDED:debian UBUNTU: annotations: add new v3.19-rc5 options (and some returning options) +3fd5011f880877a583b1ccefd06ad481452cdef7 NEEDED overlay: add backwards compatible overlayfs format support (fixes) +7c3d7c6d8df09db4b2f6be809434232021d9305f NEEDED:debian UBUNTU: [Packaging] hyper-v -- daemons now require -n for non-forking startup +e3defbff069c0d1afa9c30ecdb2cfbd3776c16eb NEEDED:debian UBUNTU: [Config] enforce CONFIG_FHANDLE=y +b4d80bddacd59441e76e4f4b750154f1a95736a6 NEEDED:debian UBUNTU: annotations -- reorder pass +ed8c877b843aeaa7fe38947d0bdbf15ef9405f27 NEEDED:debian UBUNTU: [Config] updateconfigs following rebase to v3.19-rc5 +9dd6f68702869ea7ee4219aeeba148bd11e9e211 NEEDED:debian UBUNTU: [Config] add modules removed due to tighter dependencies +c3d1971989ed55f56aaa0bd882611d8c228cbc05 NEEDED:debian UBUNTU: rebase to v3.19-rc5 +07d995fd618003c3e4663f2e58b73318fa442c32 NEEDED:debian UBUNTU: Start new release +610b443e33e236074875db94a42ed8d8190951f6 NEEDED:debian UBUNTU: [Packaging] enforce -- drop empty enforce file +1dd97225d642eaa32460873d90a53c58aa11e243 NEEDED:debian UBUNTU: [Packaging] config-check -- drop support for enforce file +129becf2ef8faffe61100ef5f6435d3bd396265c NEEDED:debian UBUNTU: [Config] annotations -- switch to ENFORCED annotations +561c8f3a1941d2895a150b5780def64b5b8fa5b4 NEEDED:debian UBUNTU: [Packaging] config-check -- add support for enforced annotations +33ea0bf33a842aa5d8f826f3be477a7b1fd7b8fa NEEDED:debian UBUNTU: annotations -- full v3.17/v3.18/v3.19 review pass +eee1ca9895f0a19241010cea3ef7b5c87bbc3cc9 NEEDED:debian UBUNTU: annotations -- reorder to vivid menu layout +57ccd817353c91a6b5ed620db15e86315251e1a9 NEEDED:debian UBUNTU: annotations -- utopic base +5a62a2f9705b70bdf6a1a0870d15903016411c5c NEEDED UBUNTU: [Debian] arm64 -- build ubuntu drivers +a58e808c17a895c7c3698bee63172114790a6d88 NEEDED:debian UBUNTU: Ubuntu-3.19.0-2.2 +d8db9694361b258427eab1846b211be332c4a1f9 NEEDED UBUNTU: SAUCE: efi: Expose underlying UEFI firmware platform size to userland +c0b5915ac61b6c49e27fecf6ba8f62cc2d17297b NEEDED:debian UBUNTU: add missing buglink in unreleased versions +80ac0a8626c33921522e59e258a0bcee0fac6620 NEEDED:debian UBUNTU: [Config] switch on "all" dtbs +f5c5c728204613d98677cecfa499451a43c316d9 NEEDED:debian UBUNTU: [Packaging] install all dtb files +4594c0a5b120fc92fb141c1cf9eef3e8d665e4e6 NEEDED UBUNTU: SAUCE: storvsc: force SPC-3 compliance on win8 and win8 r2 hosts +2db975f991de109cb558a88b821aee4ab32294b9 NEEDED:debian UBUNTU: [Config] updateconfigs following rebase to v3.19-rc4 +efda5ea3e72181c54313960c4eb623cb9bf70184 NEEDED:debian UBUNTU: rebase to v3.19-rc4 +3ceca000c3f419e4ea82d5cc89b17788311e066a NEEDED:debian UBUNTU: [Config] Enable CONFIG_N_GSM as module. +6d976353cda7b65cd3bccc025fd676a2b60be71e NEEDED UBUNTU: SAUCE: drivers/rtc/interface.c: ignore exprired times when enqueing new timers +c2b14cbdd9db02c941b1a201ea7de7cbefd042a5 NEEDED:debian UBUNTU: Start new release +7e4ee90affaec9dfd96c8c527e410e37e60e7cdd NEEDED:debian UBUNTU: Ubuntu-3.19.0-1.1 +07d5adb10aa7995e36b1c3fb063b1db97e0744bb NEEDED:debian UBUNTU: [Config] follow move of arm64 dts' into vendor directories +c73a0ec29f0772426f60c0e5e4c660a5f49c2963 NEEDED:debian UBUNTU: [Packaging] handle dts directories +c8f77b2dd48cc6a6bcce49411b546aefa08c799c NEEDED:debian UBUNTU: [Packaging] uploadnum should be the remainder of the version +50a8041a37110aa8867a493b624aa6bf409acb93 NEEDED:debian UBUNTU: [Configs] updateconfigs following rebase to v3.19-rc3 +afa910e643c7b399c3cdd8312d84b65d1c64d197 NEEDED:debian UBUNTU: rebase to v3.19-rc3 +732f3e48b565abe6e7fd7f489edb3bc88e68581c NEEDED:debian UBUNTU: v3.19 series start +ea0064b7d9878d01ec4653e528c9b998b4ae10b5 NEEDED:debian UBUNTU: [Configs] updateconfigs following aufs update +13055ff9195392d6f1d8cc9065079147efd15b2e NEEDED:ubuntu-driver UBUNTU: ubuntu: AUFS -- update to 92ad9cc8bd289bf8e59b6bd8d83137d8e1a58c1c +3df26820282895c299dffb25972f584721ea75c1 NEEDED:ubuntu-driver UBUNTU: ubuntu: AUFS -- substrate: aufs3-standalone.patch +b9579ed6992d02cd55e4d94a13be89c32ce84ff5 NEEDED:ubuntu-driver UBUNTU: ubuntu: AUFS -- substrate: aufs3-mmap.patch +b39b7e7301c7723004985b773bcfb74fbfb4eabb NEEDED:ubuntu-driver UBUNTU: ubuntu: AUFS -- substrate: aufs3-base.patch +e08ec9211daa19f663ab406848b5df2271eac1d4 IGNORE:revert Revert "UBUNTU: SAUCE: AUFS -- aufs3-base.patch" +4a9009a9ae4027ec12dd6313fd18a8bb56bf4918 IGNORE:revert Revert "UBUNTU: SAUCE: AUFS -- aufs3-mmap.patch" +6ae8ad7291b70e01d11bf753e5e79d5b5aeee7fb IGNORE:revert Revert "UBUNTU: SAUCE: AUFS -- aufs3-standalone.patch" +241d2270754f4ab7d90d52324a7c8a85be88aca7 NEEDED:debian UBUNTU: disable module checks for rebase +9defa41f9126d026cd6a1ead03e6443e98e97108 NEEDED UBUNTU: apparmor -- follow change to this_cpu_ptr +caae90a5781f1d312b91fe44839c56009f2e0eb3 NEEDED:ubuntu-driver UBUNTU: ubuntu: aufs3 -- follow rename for d_alias +401119f392cb5bd61918659f9a20ab2ae54934e7 NEEDED:ubuntu-driver UBUNTU: ubuntu: aufs3 -- follow switch to get_unused_fd_flags() +78df37e096365062f950d01f27dacf143ba57276 NEEDED:ubuntu-driver UBUNTU: ubuntu: aufs3 -- follow switch to d_splice_alias +ca8d1a7503192dd5b9c1197eae4ea6be8f36ae81 NEEDED:ubuntu-driver UBUNTU: ubuntu: aufs3 -- follow rename of d_child +388a35e8069f8657310c7f00d9062989da94b49d NEEDED:debian UBUNTU: [Config] defaultconfigs following rebase to v3.19-rc2 +e08b74c9afcc53d50a3c8ebe43e3b8cb60f2aa61 NEEDED:debian UBUNTU: rebase to v3.19-rc2 +a8d99914420de484583f3ef7327d603cce40fd3a NEEDED:debian UBUNTU: rebase to v3.19-rc1 +0373477d240b8de65a1b6f8596f1b55e61eb7871 NEEDED:ubuntu-driver UBUNTU: ubuntu: AUFS3 -- follow switch to vfs_fallocate +817e01310fbcc1932419860833d9bba41e8d21a9 NEEDED:debian UBUNTU: Start new release +685154a8fd43a024cc3f671d85c36158717c0f0c NEEDED arm64: optimized copy_to_user and copy_from_user assembly code +980f00986e35f630c7bb18065836e3b2f518f7a2 NEEDED:debian UBUNTU: Ubuntu-3.18.0-7.8 +eef49554443cc3c5bf71b7f5aa500dce3ab3e0d0 NEEDED:debian UBUNTU: [config] set apparmor config options +8a91a5705046dca1c9972ce2a76714edc837e367 NEEDED UBUNTU: SAUCE: (no-up) apparmor: add parameter to control whether policy hashing is used +e1b6a4b88bdb9cf858e068d0e3a6b7449d648513 NEEDED UBUNTU: SAUCE: (no-up) fix: bad unix_addr_fs macro +892b8b7cfb14b9bdfbc9ac2fee8e751a67707542 NEEDED UBUNTU: SAUCE: Revert: fix: only allow a single threaded process to ... +98c64db6cffd59a894d4a4492aea761fa6e6c51a NEEDED UBUNTU: SAUCE: (no-up) apparmor: Sync to apparmor3 - RC1 snapshot +178a99413c26c359c7ea63c23b70c14238c72c9e NEEDED:debian UBUNTU: [Config] CONFIG_FW_LOADER_USER_HELPER_FALLBACK=n +0e7cd75372d106d02b3f03f9a2e6496782e39102 NEEDED:debian UBUNTU: Start new release +354c399098d730724d47572411db3966640b886d NEEDED:debian UBUNTU: Ubuntu-3.18.0-6.7 +70f41850210ae054ddddd3cdb3c8c6b80d26fef9 NEEDED:debian UBUNTU: [Config] CONFIG_PCIEASPM_DEBUG=y +69d6e475d4b184e691fde6bb6173b0b2a78f95ee NEEDED:debian UBUNTU: [Config] armhf: VIRTIO_[BALLOON|MMIO]=y +e7248dea9798e37ed9136c0234e60c5d3724a09a NEEDED:debian UBUNTU: rebase to v3.18 +c08cb8bf95c2175a3c0d3916a3a95bb865516303 NEEDED:debian UBUNTU: Start new release +5de9e13b14877580032ab92fb008417493ad5ab6 NEEDED:debian UBUNTU: Ubuntu-3.18.0-5.6 +f0c21c519145ef0374be78d7f3562691dae45800 NEEDED:debian UBUNTU: rebase to v3.18-rc7 +e74900777be8a73fd3d07669414bd103c385d2ce NEEDED:debian UBUNTU: [Config] CONFIG_SCSI_MQ_DEFAULT=n +58dfe08f9155f1821f7a0659bcb9c869d4e5ac73 NEEDED:debian UBUNTU: Start new release +10dd9a851640f6ab60c78594bbff79d76dbb2488 NEEDED:debian UBUNTU: [Config] CONFIG_SCOM_DEBUGFS=y for powerpc/powerpc64-smp ppc64el/generic +9b1c8ecc6c86e71fab6d15bd84bd1628aae6cd2e NEEDED:debian UBUNTU: Ubuntu-3.18.0-4.5 +ea3282297f6f3af23009d7a400b35b73c3c10ac8 NEEDED:debian UBUNTU: [Config] enable overlayfs v1 support +ff7e37255afb5b57b5e378e7aef2b4935cc3eb0f NEEDED overlay: add backwards compatible overlayfs format support +47897ce32d62ea9af685c2a4b06734e76fbfcb1d NEEDED:debian UBUNTU: [Config] update configs following rebase to v3.18-rc6 +b9de0aaa58a863d277ac6141018e82d619d0a89c NEEDED:debian UBUNTU: rebase to v3.18-rc6 +f8bae137b946111d88cfd59cdb3501abc6072f7d NEEDED:debian UBUNTU: rebase to v3.18-rc5 +4550c44494ed6064b56dc746c1ca59cc42571292 NEEDED:debian UBUNTU: Start new release +cb37df61a5a331fe0bf87d467f6938149b7be5f5 NEEDED:debian UBUNTU: Ubuntu-3.18.0-3.4 +394645d92e939afd7bad1e13d07367d8c077fe12 NEEDED UBUNTU: SAUCE: AUFS (no-squash): basic framework and update machinary -- part 2 +3a53bed921a6d5c0fb30fc8e02a06105fad9dcf7 NEEDED:debian UBUNTU: Ubuntu-3.18.0-3.3 +156d0481e2abded21be8e0a516f952d13cfd0ff5 NEEDED:debian UBUNTU: [Config] updateconfigs following aufs3 update +4f0421c01639daf81bf6ccb3d5f4b8ff75e4552f NEEDED:ubuntu-driver UBUNTU: ubuntu: AUFS -- update to 9d5c349d5c452170b8e813d86956f896a0aef170 +6051ec34d1dbdcb54e4d8c5a9f2161793f85c99d IGNORE:reverted UBUNTU: SAUCE: AUFS -- aufs3-standalone.patch +d85f1f5fbc58b6f338ed6172f1b281cf7d6cd638 IGNORE:reverted UBUNTU: SAUCE: AUFS -- aufs3-mmap.patch +29946e18ae75d3ded766003caec2a3677a07a83f IGNORE:reverted UBUNTU: SAUCE: AUFS -- aufs3-base.patch +57f696f01845322cb8c68804524bdd41a2ad1146 NEEDED:debian UBUNTU: rebase to v3.18-rc4 +11048583c75d357f740d6d2ba6b2285f2657d93f NEEDED:debian UBUNTU: [Config] Disable CONFIG_RCU_USER_QS on arm64 +a20ed54dbbda43450ec3bf5d3db536e2a9ef9000 NEEDED:debian UBUNTU: [Config] disable CONFIG_ARM64_RANDOMIZE_TEXT_OFFSET +d2dfee2ba64140dc875aa2de2db76326021cd349 NEEDED:debian UBUNTU: [Debian] basic hook support +696ca2c9a87c9da383d1d0475cc4699e81cf67ba NEEDED:debian UBUNTU: [Config] amd64 is now the indep architecture +f500e7dcda3dfecfa2175847ba31bf8dd5470ce0 NEEDED:debian UBUNTU: [Config] Disable CONFIG_IPMI_SI_PROBE_DEFAULTS on armhf and arm64 +baf3a88eca0a927579ba1f6cf805c2b49f7b8165 NEEDED:debian UBUNTU: Start new release +c72e2fb77e36121ff538fe2b6a21354128cd8194 NEEDED:debian UBUNTU: Ubuntu-3.18.0-2.2 +714d582bfcfdb5091e472a15d2b1c4ab74383756 NEEDED:debian UBUNTU: rebase to v3.18-rc3 +68ed89d5098ecb26c3cf2ce31a197b60147accd9 NEEDED:debian UBUNTU: Start new release +9ba3dda425ca839667062942e93529e75382531a NEEDED:debian UBUNTU: Ubuntu-3.18.0-1.1 +76d6207803e1b92f419126d507d5e790738bb580 NEEDED:debian UBUNTU: [Debian] install usbipd +2a878f46cd018c9cb2e3f6a9bf436238522e4799 NEEDED:debian UBUNTU: [Config] armhf: disable JUMP_LABEL +994e6de3dd2affbd3ec963597d7d8af8990627e7 NEEDED:debian UBUNTU: [Config] CONFIG_DRM_BOCHS=n +0f87fe85382c852b2d5faf7d8b94fa994ae00461 NEEDED:debian UBUNTU: [Config] enable cloud tools on i386 +3aab9a4865e735ffc6aa1979e4d32929da66e317 NEEDED:debian UBUNTU: [Config] CONFIG_PATA_MACIO=y +f54e18bd24b7362841b1902c1a0804bc1dd12e2d NEEDED:debian UBUNTU: [Config] linux-image-extra postrm is not needed on purge +be3df8ea980f12fac4ed6e27c5948dc13c25c9d2 NEEDED:debian UBUNTU: [Config] linux-image-extra is additive to linux-image +809a654eb28d8127dc89dd89d679d44aad7e4cd6 NEEDED:debian UBUNTU: [Config] Added drivers/uio to generic inclusion list +bc189702109182682081057777e98beaff1200cc NEEDED:debian UBUNTU: [Config] dropped scsi_tgt from generic inclusion list +2ac80c0acfef71084a8072d792534e3b2617bee9 NEEDED:debian UBUNTU: CONFIG_MODULE_COMPRESS=n +f7103d518249e744a5c0aa004aca24a1f7d57706 NEEDED:debian UBUNTU: [Debian] Fix linux-doc dangling symlinks +ba30c7ba905e7f8cc776669e07c2e0a770b1aabf NEEDED:debian UBUNTU: rebase to v3.18-rc2 +0f81052c41fb44d865aa1fdcaf349bd35b097a6f NEEDED:debian UBUNTU: [Config] CONFIG_SOUND_OSS_CORE_PRECLAIM=n +99f88d003b04a94cdffb06292a131e4c9eaacb10 NEEDED:debian UBUNTU: Enable vivid +816874fb757dc85e42d20af922290d6d55cf9fac NEEDED:split-debian UBUNTU: rebase to v3.18-rc1 +5774f4dab5e36642e243e03837f63e68c93dfacf NEEDED:debian UBUNTU: rebase to v3.17 +dbabd921800e97ff2a708b068f772ca1182157bc NEEDED:debian UBUNTU: [Config] CONFIG_HOTPLUG_PCI_PCIE=n for ppc64el +59c659ef34502c3c6b5a0e8490bac9c7ffa9e042 NEEDED:debian UBUNTU: rebase to v3.17-rc7 +431e93cbc6a563ae15b4877810beb1b9f4edd976 NEEDED:debian UBUNTU: [Debian] Don't fail if a symlink already exists +0794c4f5d47196aaa1c774fcaa2ef81bd7214141 NEEDED:debian UBUNTU: [Config] CONFIG_HOTPLUG_PCI_SHPC=n for ppc64el +4790317b5007565da1299b35578135011bd9c6e9 NEEDED:debian UBUNTU: [Config] CONFIG_SND_HDA_INTEL=n for ppc64el +e7971f95deafcac1b3f524645a68fe915344845d NEEDED:debian UBUNTU: [Config] Correct annotation regarding CONFIG_DMA_CMA +f2d29260d449d918c5885aa6abc182dade506257 NEEDED:debian UBUNTU: [Config] CONFIG_CRASH_DUMP=n for powerpc-smp +56a2eb988714b6a0bb0f6c0da9a313a8f439291e NEEDED:debian UBUNTU: [Config] Enable usbip tools +dc7084c88863a69e70e90265485b6b51c01ccbad NEEDED:debian UBUNTU: [Debian] usbip tools packaging +40504c7e778f0ad9f19180a39ddd9018910c705a NEEDED UBUNTU: SAUCE: usbip: Update include path +122f035765feacfa15b09515c78af28f7092877c NEEDED:debian UBUNTU: rebase to v3.17-rc6 +d7be42a7599c483c2294e1122d9c4d5f0d347321 NEEDED:debian UBUNTU: [Config] CONFIG_USB_OHCI_HCD_PCI=y +dd1e6e6bf5f6ffcd1436ad3fbe32c93da7a5ff30 NEEDED:debian UBUNTU: [Config] follow rename of DEB_BUILD_PROFILES +dee5d182c3b180973d3a6fab11ac30af4513559b NEEDED:debian UBUNTU: [Config] tools -- only build common tools when enabled +782d85880d33461406f5a288942e6dcc11770e47 NEEDED:debian UBUNTU: [Debian] set do_*_tools after stage1 or bootstrap is determined +5b118bbb3a38dc3e5be0d5c921603f672fe1ab4c NEEDED:debian UBUNTU: [Config] Add mpt3sas to d-i +6afad884eeffc67a53e5d11ffe61c9e40b64d26a NEEDED:debian UBUNTU: [Config] CONFIG_DMA_CMA=n +aa4e526d8be91b593cd6d0a0e4ab949d26541fa0 NEEDED:debian UBUNTU: [Config] CONFIG_KVM_BOOK3S_64_HV=m +519ac1677b339775493fc2a4cff55d9e54c28ce7 NEEDED:debian UBUNTU: [Config] CONFIG_KVM_BOOK3S_64=m for ppc64el +dc9bcbd1592cfede67a2c5ccb5c59f26f0589260 NEEDED:debian UBUNTU: [Config] CONFIG_XMON=y +e9173466e3323cb9c78cdc807c72e6838f5d7119 NEEDED:debian UBUNTU: [Config] armhf: USB_[E|O]HCI_EXYNOS=y +4377933f12fbcb31006f23d0117d8a0d164adb80 NEEDED:debian UBUNTU: rebase to v3.17-rc5 +2d172824498ca976ec7e37ec373a248d49a0d5cc NEEDED:debian UBUNTU: rebase to v3.17-rc4 +6980242f0ab61eca03c77142ad4000fadfa022f7 NEEDED:debian UBUNTU: rebase to v3.17-rc3 +72e421db34ebf1bbe15649de2ab2132970f21872 NEEDED:debian UBUNTU: [Config] arm/tegra/d-i: framebuffer and usb support for Tegra SoCs +3cf410f0b6b36de437c55e319bde033fe75cdb28 NEEDED:debian UBUNTU: [Config] Add arm64 to enforcer CONFIG_CC_STACKPROTECTOR +e332b2967797d421575080f7b872c7b675e47629 NEEDED:debian UBUNTU: [Config] armhf: REGULATOR_TWL4030=y +c37acf9c89fae66506d9875bdf758a5fee0233ed NEEDED:debian UBUNTU: [Config] Added net/6lowpan/* to generic inclusion list +4dd073455ec2c021accdd97ee82b8091b17ea7b7 NEEDED:debian UBUNTU: [Config] CONFIG_NFC_ST21NFCB=n +abc7908d4c71425c16718d40bbbea1515bc39204 NEEDED:debian UBUNTU: updateconfigs +e09aab2c0d195125f71b50cdff0a858983953609 NEEDED:debian UBUNTU: rebase to v3.17-rc2 +9d32d8b674a700e342c5559d8e09e9590785d40a NEEDED:debian UBUNTU: Start new release +18ffc6ce8fa107ac99b52f69a8107511c9d560c5 NEEDED:debian UBUNTU: Ubuntu-3.16.0-11.16 +06f6d00b1c7ae75b5988b2ef922cdd8308edacd1 NEEDED:debian UBUNTU: [Config] CONFIG_ZPOOL=y +7cc84cf61b760725973c93b9c7e39d6f521bfe62 NEEDED Revert "net/mlx4_en: Fix bad use of dev_id" +6ffe8179fc951ea6d1886f28b0742eb2744f033c NEEDED:debian UBUNTU: Bump ABI +cc21629a6a5f6a3efdaf91b320508479af69e1fa NEEDED:debian UBUNTU: Start new release +d1a2628d426406b61d1d46747da2815e7995d3c9 NEEDED:debian UBUNTU: Ubuntu-3.16.0-10.15 +90b44b74910b3c5e86cb05cfde5f67fee0ef2b75 NEEDED UBUNTU: SAUCE: bcache: prevent crash on changing writeback_running +e3102a21978dd9c109856a48cd84837e708b7b29 NEEDED:debian UBUNTU: [Config] CONFIG_SENSORS_IBMPOWERNV=m +2819061858516119133b736fdfa0c11d23cceccc NEEDED:debian UBUNTU: [Config] CONFIG_SECURITY_NETWORK_XFRM=y +a30185ef8f2fa9dd925cf8b99399a72bc308a397 NEEDED:debian UBUNTU: [Config] CONFIG_XFRM_STATISTICS=y +9d4a441eb46227e80b77e99ef15a4248ba2ddfcd NEEDED UBUNTU: SAUCE: (no-up) arm64: dts: Add PMU node for APM X-Gene Storm SOC +e7e22f86dfc3e11d8f6eab08074ebb610a20c5ab NEEDED UBUNTU: SAUCE: (no-up) dt-bindings: Add Potenza PMU binding +5ed1bfbfcc717aead960bf74940328285d3bf957 NEEDED:debian UBUNTU: [debian] Fix regression with ABI subversions and backport +62f12ae8d9c08cc6496b60b330350a4dfcbca77f NEEDED:debian UBUNTU: Start new release +ab212af17f1b9eaa43bffde42440598079044839 NEEDED:debian UBUNTU: Ubuntu-3.16.0-9.14 +c8a4d4970d0835d19ff2acd700d0ae94b877b3e7 NEEDED UBUNTU: SAUCE: Overlayfs: allow unprivileged mounts +38d659d55bb8fab6f71934dd969a1ba8badeed79 NEEDED:debian UBUNTU: rebase to v3.16.1 +aefca49c0717ac60ba231a3b2e0cb62f0937113c NEEDED:debian UBUNTU: Start new release +a9dc14c5056a82cfd44e3b098b252e52fe0b6925 NEEDED:debian UBUNTU: Ubuntu-3.16.0-8.13 +ab4880f5e96efda31c6b52136704c9eb0ccab87b NEEDED:debian UBUNTU: [debian] Allow for package revisions condusive for branching +981bed5cd793ef69ac7377e9cbb6375ce70351f6 NEEDED:debian UBUNTU: Start new release +74a7d62985f35ddef973776c3e31ff256f4a5859 NEEDED:debian UBUNTU: Ubuntu-3.16.0-7.12 +aeaada62d9efea9463bbcfc2a6549d18f023cdd5 NEEDED:debian UBUNTU: [Config] Add hv_balloon to d-i virtio-modules +035036c87c216bfbb44109c963375f5f20dc05a1 NEEDED:debian UBUNTU: [Config] d-i -- add virtio_scsi to virtio-modules +62317e97c6bbb5d8043e1fc3e26df6b905325c4c NEEDED:debian UBUNTU: rebase to v3.16 final +250eb531089a04b95b698be6524ce4edbe15ddc5 NEEDED:debian UBUNTU: [Packaging] Fix 'printchanges' to work with versions containing '+' +53647a9928a35d01e9f1b59c5d7b96ad3353048a NEEDED:debian UBUNTU: [Config] CONFIG_CONTEXT_TRACKING_FORCE=n +e1b2b4a99edece7053725bc318f7f58e53767692 NEEDED:debian UBUNTU: [Config] CONFIG_MICROCODE=y +a1f57fea081dbab4be712029e9b64c60d61935a0 NEEDED:debian UBUNTU: Start new release +b342b70677fb9741dd3dc137f45e5ce3181223e9 NEEDED:debian UBUNTU: Ubuntu-3.16.0-6.11 +f0c937317763b38820a72a6b02b1fdb0ad9d285d NEEDED:debian UBUNTU: rebase to v3.16-rc7 +d4d6d5fc58a66d37821bbbf8561ac2a814c977d9 NEEDED:debian UBUNTU: [Config] CONFIG_SCSI_IPR_TRACE=y, CONFIG_SCSI_IPR_DUMP=y +c9990e0b0998d728503f56ab9c7821d56a721a58 NEEDED:debian UBUNTU: [Config] armhf: RTC_DRV_PCF8523=y +82fd2a6b5fff23ba504adfe2d18dc1d44f109445 NEEDED:debian UBUNTU: [Config] armhf: build cubox & imx6 DTBs +7fdb1513964145758aefdf7a43b06a1d0b6b5811 NEEDED:debian UBUNTU: [Config] armhf: KEYBOARD_IMX=m +7534c02766b9c2305e03cd5b5a117c3997863ff4 NEEDED:debian UBUNTU: [Config] armhf: MXS_DMA=y && MTD_NAND_GPMI_NAND=m +43470d1ec8f5355be9c153b05088af5505ebd499 NEEDED:debian UBUNTU: [Config] CONFIG_KEYS_DEBUG_PROC_KEYS=y +6f1d20b13ce5c137c86d1144eb82ab38f99e76cf NEEDED:debian UBUNTU: Start new release +9d6defca20c389c1ff93e5802c71973b092e7a14 NEEDED:split-debian UBUNTU: Ubuntu-3.16.0-5.10 +1d693f78502686a992d2038c9896c3e6c2652ce2 NEEDED UBUNTU: SAUCE: aufs3 -- update update scripting +53acc12981cc9883d9038fcac7ac86b9ad274f24 NEEDED UBUNTU: SAUCE: AUFS (no-squash): basic framework and update machinary +87428d40577506cfdf31336368aa613ae0c54639 NEEDED UBUNTU: SAUCE: 85xx: Only use generic tbsync routines on PPC32 +ad006bb4d530a83f425ee836b7d8de7d5c93e3cf NEEDED UBUNTU: SAUCE: (no-up) Select reboot driver for X-Gene platform. +5d2fc3d65465aac854036c9ca737eab59b608042 NEEDED UBUNTU: SAUCE: nouveau: missing outputs should be warnings +b2648e043821b5866f8c863c4b928732228d3402 NEEDED UBUNTU: SAUCE: kvm: BIOS disabled kvm support should be a warning +8c10fb1a7bf59170ed6fd059cb35e5017abcd05f NEEDED UBUNTU: SAUCE: kthread: Do not leave kthread_create() immediately upon SIGKILL. +6d0ed555d8ae64794d2902f9c1b7e0da5c39d939 NEEDED UBUNTU: SAUCE: intel_pstate: inform user that thermald is worth considering +594f6dbf60084fd5fc21bdcc0a99b154be76e76d NEEDED UBUNTU: SAUCE: (no-up) mei_me: Add module parameter to disable MSI +e62b73418e9503b09d61a6dc8721f457bec967d0 NEEDED UBUNTU: SAUCE: Revert "drm/crtc-helpers: fix dpms on logic" +6e2be9569f946dc74fec9f5f24a9d80689275343 NEEDED UBUNTU: SAUCE: book3e cleanups for CONFIG_RELOCATABLE +69923caf98a546b30325ec486536633fddb7ff90 NEEDED UBUNTU: SAUCE: book3e/kexec/kdump: recover "r4 = 0" to create the initial TLB +2df7602013328910b0c6fce7f411a5d1b25be301 NEEDED UBUNTU: SAUCE: book3e/kexec/kdump: redefine VIRT_PHYS_OFFSET +3d13bd1d0394d80f6dccae2daafdd1ce887e8672 NEEDED UBUNTU: SAUCE: book3e/kexec/kdump: implement ppc64 kexec specfic +219cc9dd30079c35ad74590b3808ff7e12f3dd39 NEEDED UBUNTU: SAUCE: book3e/kexec/kdump: introduce a kexec kernel flag +9e138c3c7acc6975d0ac364254ae021592e2d096 NEEDED UBUNTU: SAUCE: book3e/kexec/kdump: create a 1:1 TLB mapping +2d3b205cde4d3b8069b8d9bb97203de57726ea92 NEEDED UBUNTU: SAUCE: book3e/kexec/kdump: enable kexec for kernel +32b8a9f39e22e0b54dbe78a1c179de7ca0dfd9cb NEEDED UBUNTU: SAUCE: powerpc/book3e: support CONFIG_RELOCATABLE +aa396fc0fa2317a5b447e88bc46b352f0411307e NEEDED UBUNTU: SAUCE: vt -- maintain bootloader screen mode and content until vt switch +0e50fbdb8e04609ddd667428f54d81fd17ffc232 NEEDED UBUNTU: SAUCE: export some symbols for powerpc +272b7c0f6c6c380981101491d9ef26bd45ade5fe NEEDED UBUNTU: SAUCE: allow IRQs to be irq-threaded by default via config +d5c3c89b86cfe6ce6dc5c67c462e563326940d44 NEEDED UBUNTU: SAUCE: Provide booke stub for kvmppc_is_bigendian() +b551f2a4439d2179b3732c2a28277d9245dbb150 NEEDED UBUNTU: SAUCE: xgmac_mdio: Silence read errors +285f1bd95dd079825af0d06e33af71a7583aeee9 NEEDED UBUNTU: SAUCE: Fixup freescale usb phy driver to work on ppc64 +c2361b23e7b757ffa4241a6ab427694f3be844cd NEEDED UBUNTU: SAUCE: Revert "phy: vitesse make vsc824x_add_skew static" +f40baa6f375e1730970cebce0a14a7456d539ab2 NEEDED UBUNTU: SAUCE: PPC: PCI: Fix pcibios_io_space_offset() so it works for 32-bit ptr/64-bit rsrcs +dc7dff6e417c8642ead4659e42e9b1b601db199c NEEDED UBUNTU: SAUCE: phylib: Minimum hack to get the generic 10G PHY driver to work with 10G "fixed-link"s +0bd9175323dad194fcff7b450aa14d39ce710b3d NEEDED UBUNTU: SAUCE: OMAP: AM33xx: hwmod: Correct AES module SYSC type +3a1228b27e425e24b6257c8af1e3ccebc1f9f809 NEEDED UBUNTU: SAUCE: ARM: OMAP4: hwmod: Add hwmod data for AES IP +eff618d811a4b62462674a8bb05556a548f2c112 NEEDED UBUNTU: SAUCE: ARM: OMAP: hwmod: Add SYSC offsets for AES IP +8418ceb9869d41a7ba4e6217c631bdb28e07c33b NEEDED UBUNTU: SAUCE: suspicious unlocked ->status reading and writing in ipc/sem.c +fd4bcb1162b482eafc3fc3fe480698cc8d1cdfdb NEEDED UBUNTU: SAUCE: tg3: Add support for new 57786 device id. +00b5fd7aaa231697512b50a7c80ed2a3c8c7e3b0 NEEDED UBUNTU: SAUCE: Work around broken ACPI backlight on Dell Inspiron 5537 +bf3a2dfe2f7f34c174a0a938c350912e319fe032 NEEDED UBUNTU: SAUCE: disable stack-protector for ARM compressed bootloader +29fb264813de8f4bbd8c8577901630e6a547d503 NEEDED UBUNTU: SAUCE: uvcvideo: quirk PROBE_DEF for Alienware X51 OmniVision webcam +cdf48be1c63b4a07cecf2a62617f7fb7b847fabb NEEDED UBUNTU: SAUCE: isapnp_init: make isa PNP scans occur async +eedee9b0f515aa2793fccbbfd7d58db95b2490d1 NEEDED UBUNTU: SAUCE: dm-crypt: never use write same +6eccf1ef86175928b723ca681c2ab851d112e7ac NEEDED UBUNTU: SAUCE: (no-up) ACPI: Disable Windows 8 compatibility for some Lenovo ThinkPads +07419bbe0eb79097693cae2b7ed1b3f467fca642 NEEDED UBUNTU: SAUCE: (no-up) intel_ips: blacklist ASUSTek G60JX laptops +5b2c0e070ec1b4d29178b320220c5388ec9f9c82 NEEDED UBUNTU: SAUCE: (no-up) Update bnx2x firmware to 7.8.17.0 +fdbf1af4b48970478c1ee25e1c620ecb8cd4035e NEEDED UBUNTU: SAUCE: (no-up) trace: add trace events for open(), exec() and uselib() (for v3.7+) +1d4ec94ffcaca71994e520abe769ee6dcf4579ee NEEDED UBUNTU: SAUCE: (no-up) x86: reboot: Make Dell Optiplex 390 use reboot=pci +f760d3c92097784cfda92f3f4c094ccf9fc2497c NEEDED UBUNTU: SAUCE: (no-up) PCI: fix system hang issue of Marvell SATA host controller +f43492d5b2cf399039ca6914348d25aaee474e4f NEEDED UBUNTU: SAUCE: (no-up) Convert bnx2x firmware files to ihex format +8b732f482e348d75ee9b433c574bcf88d0a8991b NEEDED UBUNTU: SAUCE: (no-up) Input: Cypress PS/2 Trackpad simulated multitouch +7466874e8128bab355ddf3512171ae836348b7f7 NEEDED UBUNTU: SAUCE: (no-up) hv: Supply vendor ID and package ABI +6a5fff41e536a612ddc1352d93a5b6db8ba68f39 NEEDED UBUNTU: SAUCE: (no-up) Revert "VFS: don't do protected {sym,hard}links by default" +ae359c3e312669ebde46bc3817d6cea99a7f9bef NEEDED UBUNTU: SAUCE: (no-up) Remove vicam files duplicated in linux-firmware +794523f01c1303be9d736acca7f016af31b7b416 NEEDED UBUNTU: SAUCE: (no-up) Remove dsp56k files used only by m68k +db779e5d146cf4d34aee88cf9d2f71d00a9c926c NEEDED UBUNTU: SAUCE: (no-up) Update bnx2x firmware to 7.8.2.0 +588fe8f57dc07478c434afb332793b91ea896bc9 NEEDED UBUNTU: SAUCE: (no-up) Remove radeon files duplicated in linux-firmware +c4e09c38991997926099d1fdac4bef85cbdc4d72 NEEDED UBUNTU: SAUCE: (no-up) Remove sun files duplicated in linux-firmware +14b6b1d6c7c6b42d778c4aacc0a9d68a451e5ba8 NEEDED UBUNTU: SAUCE: (no-up) Remove keyspan files duplicated in linux-firmware +8989c6225b5d8ef4bd42337382c3fe58c4448887 NEEDED UBUNTU: SAUCE: (no-up) Remove acenic files duplicated in linux-firmware +e9347676137c6b05dd8d1db1de39230e677ada95 NEEDED UBUNTU: SAUCE: (no-up) Remove r128 files duplicated in linux-firmware +8a8c10cf8ebc650ed0ae9bb94de9787321fcef5b NEEDED UBUNTU: SAUCE: (no-up) Remove cxgb3 files duplicated in linux-firmware +da35e9ad8c83e4ecc8a73b68b8cc556e8723cdb3 NEEDED UBUNTU: SAUCE: (no-up) Remove matrox files duplicated in linux-firmware +31f0ae2767b81565b1333630f9572a09df295a04 NEEDED UBUNTU: SAUCE: (no-up) Remove tehuti files duplicated in linux-firmware +ea4588800ea937d2044723f497632e608e5a713e NEEDED UBUNTU: SAUCE: (no-up) Remove yam files duplicated in linux-firmware +5fa5e5d023fa3ad67d4947710062440e0b92b6f3 NEEDED UBUNTU: SAUCE: (no-up) fix highbank include path +bcd707780091a34cd1815b8ab6cf795e13433e65 NEEDED UBUNTU: SAUCE: (no-up) vxge: Declare MODULE_FIRMWARE usage +dbc6280f6dc2988546dd6d35055741be0a5fcbe7 NEEDED UBUNTU: SAUCE: (no-up) rds_ib_send() -- prevent local pings triggering BUG_ON() +a381ec9f409f2e71151194c647685826aadc97f3 NEEDED UBUNTU: SAUCE: (no-up) firmware: Upgrade bnx2 to current versions +b08d030d87047591794e27a4d8cfc05c779f9fda NEEDED UBUNTU: SAUCE: (no-up) firmware: Remove obsolete Myricom firmware +c62121eeb1e43d1c1bee1161f0fce00506810966 NEEDED UBUNTU: SAUCE: (no-up) firmware: Remove cpia2 files duplicated in linux-firmware +6ca0baacfe0faa7d6265a283a378c7530f2b3286 NEEDED UBUNTU: SAUCE: (no-up) firmware: Remove av7110 files duplicated in linux-firmware +492d662a9f259fb958ad3025ff4989ebb1ae1801 NEEDED UBUNTU: SAUCE: (no-up) firmware: Remove ambassador files duplicated in linux-firmware +9d9677898ade658ad4c68a47c2dda3aea3a9caa6 NEEDED UBUNTU: SAUCE: (no-up) firmware: Remove advansys files duplicated in linux-firmware +0906f131cf4b10f377dc66818a01eaab485a61f4 NEEDED UBUNTU: SAUCE: (no-up) firmware: Remove adaptec files duplicated in linux-firmware +fc950a48545f49a2ab8e8a465c682a4a3d504f57 NEEDED UBUNTU: SAUCE: (no-up) firmware: Remove ti_usb_3410_5052 duplicated in linux-firmware +6d277f4ffe2a7e2754feac527955f4e948d276cf NEEDED UBUNTU: SAUCE: (no-up) firmware: Remove edgeport files duplicated in linux-firmware +6cd197c9e6ecc8a3d864d9547837ce9e2ad6a6c1 NEEDED UBUNTU: SAUCE: (no-up) firmware: Remove kaweth files duplicated in linux-firmware +6d4aea69136e4baaa70726361e5912a24b92ed1e NEEDED UBUNTU: SAUCE: (no-up) firmware: Remove ess files duplicated in linux-firmware +264af3894a66b66b07162df0fb367836e76c9705 NEEDED UBUNTU: SAUCE: (no-up) Remove redundant keyspan_pda firmware +dc000f4ec05b4b34c2c1dd9a67d0a87fe1faee22 NEEDED UBUNTU: SAUCE: (no-up) Remove redundant yamaha/ds1 firmware +6f4b585535c0c28732c46bc12ba8dda042596f15 NEEDED UBUNTU: SAUCE: (no-up) Remove redundant ositech/Xilinx7OD firmware +a879d556097343beda5c932144f61b5320916ae2 NEEDED UBUNTU: SAUCE: (no-up) Remove redundant ttusb-budget firmware +ec8ca911878b3aae198cfcffaae02368f555f488 NEEDED UBUNTU: SAUCE: (no-up) Remove redundant cis firmware +482038c4e6362498269ddf66b5fe21021f7e7fcd NEEDED UBUNTU: SAUCE: (no-up) firmware: Update bnx2x to current firmware version 7.2.51 +1c5fd21e2fe45eea97a41163273add224545ddae NEEDED UBUNTU: SAUCE: (no-up) kconfig: in debug mode some 0 length message prints occur +0685b9c73aa31e52831400e053d37f2e438cfb1b NEEDED UBUNTU: SAUCE: (no-up) Allow filtering of cpufreq drivers +bd58f8e98fd0c05bfe34b7d8b538f35a0864c8d4 NEEDED UBUNTU: SAUCE: (no-up) tools/hv: add basic manual pages +08347031e66a781b7876584175c0bea0d0726788 NEEDED UBUNTU: SAUCE: (no-up) elide some ioctl warnings which are known benign +9e07077485c5e5805517bc2f6272a251eb61211d NEEDED UBUNTU: SAUCE: (no-up) Input: synapticss - Set buttonpad property for all clickpads +43644523536605f8c650aa46e420d59192fa230b NEEDED UBUNTU: SAUCE: (no-up) Input: synaptics - add second variant of two-button clickpad +1224fcf60e5dbe150b446c0f36f55601e50b867b NEEDED UBUNTU: SAUCE: (no-up) x86: reboot: Make Dell Latitude E6220 use reboot=pci +e08e98d5f3eaece0a55eca47eb31d2544561f1e0 NEEDED UBUNTU: SAUCE: (no-up) x86: reboot: Make Dell Optiplex 990 use reboot=pci +710ae591a352831d514adfecde8cbb921ab72132 NEEDED UBUNTU: SAUCE: (no-up) x86: reboot: Make Dell Optiplex 790 use reboot=pci +075dc4fd57b7523b7d1e64df09e8fbab2298a45c NEEDED UBUNTU: SAUCE: (no-up) x86: reboot: Make Dell Latitude E6520 use reboot=pci +11f96bb408f15ceeef5f1c089f99d974f5cd93c5 NEEDED UBUNTU: SAUCE: (no-up) add support for installed header files to ubuntu directory +83442377bb16b0007a304e1b5f81f35139abb29c NEEDED UBUNTU: SAUCE: (no-up) Added quirk to recognize GE0301 3G modem as an interface. +84b3a7169b338740a70d22eb408e89619acfd9db NEEDED UBUNTU: SAUCE: (no-up) fix build error with CONFIG_BLK_DEV_INITRD=n +6a2a16f3c9e9496523125c58f788055dede4495f NEEDED UBUNTU: SAUCE: (no-up) dma-mapping: Remove WARN_ON in dma_free_coherent +35814b8981777d9781bcf9d1a3d068b502ce90f2 NEEDED UBUNTU: SAUCE: (no-up) cdrom -- default to not locking the tray when in use +de67e5bc6fbe1fed74ec545291efc763ec91c2b3 NEEDED UBUNTU: SAUCE: (no-up) nbd: Change default partitions per device to 15 +a5263a89adad25c3cbec28d9ed6e35c83e8de677 NEEDED UBUNTU: SAUCE: (no-up) hostap: Change initial operation mode to managed (infra) +aa48271e2f11700129d616010dca588d7a973a03 NEEDED UBUNTU: SAUCE: (no-up) version: Implement version_signature proc file. +3dcb633bcdca132c4f3df40338a3b387f63f9271 NEEDED UBUNTU: SAUCE: (no-up) dm-raid45: Fix incompatible ptr assignments +7d687b18ba73d86852971a9060380a3e5657d086 NEEDED UBUNTU: SAUCE: (no-up) ubuntu: dm-raid45 +4437f9d1f3c4c6f7820bd7162ad54002e740eda8 NEEDED:debian UBUNTU: [Debian] Cloud tools +58244d3007f8256b8fd23b941a87c97b60e54f91 NEEDED:debian UBUNTU: [Debian] add debian/gbp.conf +04e8205c37a0d4756b675ea2229bac647ca200af NEEDED:debian UBUNTU: [Debian] remove the kernel-image firmware list on clean +a52ad698ad07262a8735801415c139789ae88cdb NEEDED:debian UBUNTU: [debian] Dynamically generate the kernel-image udebs firmware list +fbaf6c736d49fd8cd3d6121ea26009fbf7acd301 NEEDED:debian UBUNTU: [debian] Fix indep_hdrs_pkg_name +0588234eed4f92f77c24090f368bd9fc419e50e0 NEEDED:debian UBUNTU: [Debian] Improve tools version message +442d458f2ab0669d904de435bc943ffdb20b42e1 NEEDED:debian UBUNTU: [Debian] Re-sign modules after debug objcopy +a6e1d4fd0d9dc987991216b799e6dee2b7956ad7 NEEDED:debian UBUNTU: [Debian] sort out linux-tools naming +5fee25691328f9d46874a824d8e75c3a25be05d2 NEEDED:debian UBUNTU: [Debian] linux-tools: switch to common generic version helper +2d0634eb9debcc3197792e52f717e7f88352b835 NEEDED:debian UBUNTU: [Debian] postinst -- fix unchanged link detection +66e7bf3df38ce1302a32baf8142dce56c0c81586 NEEDED:debian UBUNTU: [Debian] postinst -- improve relative symlink detection with missing files +c5e7fa9208fbe047c329c124f4d4e1320321d34f NEEDED:debian UBUNTU: [Debian] getabis: Commit new ABI directory, remove the old +f01e594cf5b3a0f05f19ac55e78589d93b06b8fa NEEDED:debian UBUNTU: [Debian] Add hv_vss_daemon to tools package +687fa338e27867b855c77dd79860035dde626761 NEEDED:debian UBUNTU: [debian] tools: ship 'cpupower' in linux-tools +23e6572a962df847252e07898a40174669e8f2a5 NEEDED:debian UBUNTU: [Debian] tools: enable x86 and hyper-v +8bd69d23b91eee555b60a59e42a04201a7d0f1e7 NEEDED:debian UBUNTU: [Debian] autopkgtest: switch Depends: to build-essential +2a6e95d999ee4efac165d88c8106a888fc9b5a8a NEEDED:debian UBUNTU: [Debian] supply perf with appropriate prefix to ensure use of local config +81c56fe3b06596c30b9eae372008fe37ae20f3b7 NEEDED:debian UBUNTU: [Debian] Explicitly reference gawk in build rules awk in all and arch +82429d09555509df1d684469d97dedc756ff11b8 NEEDED:debian UBUNTU: [Debian] fix SRCPKGNAME-udebs-FLAVOUR handling for complex flavours +754e4d69262a59fff8c893b32f199d1fbec6905b NEEDED:debian UBUNTU: [Debian] Supply PKG_ABI in kmake +d25ef28f3ab3ead424ce856ecc849d4bd8eff932 NEEDED:debian UBUNTU: [Debian] reduce udeb rules spew +61ce255d6b166b9c48c8a4ff2176ea15089e381d NEEDED:debian UBUNTU: [Debian] Prepare to build using arch specific compiler +9a9792eeae3e7ec48aed14e38a8cbb3e716d5e34 NEEDED:debian UBUNTU: [Debian] do_tools=false when cross compiling +0ea3ee0721c59ddf26e95da242e5e9ead1e21278 NEEDED:debian UBUNTU: [Debian] generate a SRCPKGNAME-udebs-FLAVOUR-di depending on all built udebs +553cbe477ce2085e1a249d629f268d62af484682 NEEDED:debian UBUNTU: [debian] Use dh_strip +a418dffd68c2c8b88dc3e2fbaf09ead34cfc2fed NEEDED:debian UBUNTU: (debian) get-firmware: Be more selective about copies +4c40a10a81f5cd9310b7b5766ff731db91224f3f NEEDED:debian UBUNTU: (debian) fix internal linkage for separated header packages +b69a501e52aff469bc0e0b3ea7fcde5bfef63af1 NEEDED:debian UBUNTU: (debian) Abort build on unresolved symbols +15bc58fd511b00f7703d2b5d8909af935b31c1d5 NEEDED UBUNTU: [debian] ensure debian/ is not excluded from git by default +83f903be8906fc46d258124e64803590fa5a60ac NEEDED:debian UBUNTU: [debian] Specify python2.7 for perf tools build +817c1f4144c1318dc2e5d62e8817979a7f721ff9 NEEDED:debian UBUNTU: [debian] do not use ../.$(series)-env file +c00e4866e6e549618a43ae3928073f552cca12a5 NEEDED:debian UBUNTU: [debian] perf: NO_LIBPERL=1 +44e01631bcd442f4f61c264af78e193518daa683 NEEDED:debian UBUNTU: [debian] perf: NO_LIBPYTHON=1 +4ec3e6d91413db7e4ba6df1f8b069aee2e7ed216 NEEDED:debian UBUNTU: [debian] Build extras package only for specific arches +6ea3c5606dfdac9dc0348d0eeafb17207cf1efbb NEEDED:debian UBUNTU: [debian] Remove dangling symlink from headers package +9b0d5791d9345eb165fb26e8f80837209ed677f4 NEEDED:debian UBUNTU: [debian] DTB: add support for multiple DTBs +fc9f46c418f454b138af5d810003db5e3d7eb582 NEEDED:debian UBUNTU: [debian] Add macro to selectively disable building perf +c054564f4aeffa8baf045df5de9707140d3fd381 NEEDED:debian UBUNTU: [debian] insertchanges -- fix to work across major version changes +2161b4265ed31268232cb4743f6201b1be7ce1a8 NEEDED:split-debian UBUNTU: [debian] Moved scripts/fw-to-ihex.sh to debian/scripts/misc +187fb48b5107cf8714beb306cb24610e97101cee NEEDED:debian UBUNTU: [debian] find-obsolete-firmware: Use correct path +6b259db6215d8e1d4a31c1ba46ed39d2dafe82f1 NEEDED:debian UBUNTU: [debian] get-firmware: Filter new files through fwinfo +ba7c4f74efc87ea48be44992774a563151926bf7 NEEDED:debian UBUNTU: [debian] hmake -j1 +ff734a2a5e6dccf8e218115f0897c0296195408f NEEDED:debian UBUNTU: [debian] add an autopkgtest rebuild test +8b92747ff62b53c7481de518a1d9e0dcc3efadc5 NEEDED:debian UBUNTU: [debian] move build tests out of the way +65dc3834bd439e381e4a1319f47ba198ff59bfad NEEDED:debian UBUNTU: [debian] add rebuild-test support for autopkgtest +85df5d081a0a1cf926bc1596fce86058a980957d NEEDED:debian UBUNTU: [debian] script to detect obsolete firmware +0486170e5ff342ec83e3ad383d490ad9c4009012 NEEDED:debian UBUNTU: [debian] Use SRCPKGNAME as prefix for indep linux headers package +4fecdbff008d99d5084ad220223d95f2a8b33430 NEEDED:debian UBUNTU: [debian] Document binary-indep dependency chain +e31db9848498b37cec7974a7f55f3a0125ac98f7 NEEDED:debian UBUNTU: [debian] Use dh_prep instead of 'dh_clean -k' +f97b9b22ffed7de7d3b2f0b79ffcbd74ae75af29 NEEDED:debian UBUNTU: [debian] enforcer -- fix debugging output +97625cbcd6c760b92fcbd46b33127817abd3f5ec NEEDED:debian UBUNTU: [debian] Add custom_override rule to allow for alternate kernel file/install +8dadbaaed08c1aba3f59d1f8cac96284420b422f NEEDED:debian UBUNTU: [debian] Update armhf comments. +efd7c209638bec8871bdc80b05ac2678d98342f9 NEEDED:debian UBUNTU: [debian] drop manual headers copy +a25e7161804d73bdc21933f8ce22dffc30737c4d NEEDED:debian UBUNTU: [debian] bootstrap: switch to the new DEB_BUILD_PROFILE +5dedd7999df59975ea0faa207f5f8ed9c8d59e96 NEEDED:debian UBUNTU: [debian] do not fail secure copy on older kernels +a6a3b1451ca57ca799e98ba62fb0d95cfec38c5d NEEDED:debian UBUNTU: [debian] allow us to select which builds have uefi signed versions +a34c8331e9565c7af1a04c64bb6d1c57fc2c605e NEEDED:debian UBUNTU: [debian] we already have a valid src_pkg_name +e606ba427f5f2abe7a4ec1ab18a4d5838345821c NEEDED:debian UBUNTU: [debian] add custom upload for the kernel binary package +0ffed1cb10d43ba7d525fcc0af93e4eb9d88e8eb NEEDED:debian UBUNTU: [debian] note directory name changes +a6d721352cbc862a3e31652e904311739b016727 NEEDED:split-debian UBUNTU: [debian] Initial debian and ubuntu directories +b44d72ce530f51e7a882d23c66029a63b737231b NEEDED UBUNTU: [Debian] Prep for Ubuntu build infrastructure --- linux-raspi2-4.2.0.orig/debian.master/modprobe.d/common.conf +++ linux-raspi2-4.2.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-raspi2-4.2.0.orig/debian.master/reconstruct +++ linux-raspi2-4.2.0/debian.master/reconstruct @@ -0,0 +1,7 @@ +# Reconstruct vbox symlinks (LP:1426113) +[ ! -L ubuntu/vbox/vboxguest/include ] && ln -sf ../include ubuntu/vbox/vboxguest/include +[ ! -L ubuntu/vbox/vboxguest/r0drv ] && ln -sf ../r0drv ubuntu/vbox/vboxguest/r0drv +[ ! -L ubuntu/vbox/vboxsf/include ] && ln -sf ../include ubuntu/vbox/vboxsf/include +[ ! -L ubuntu/vbox/vboxsf/r0drv ] && ln -sf ../r0drv ubuntu/vbox/vboxsf/r0drv +[ ! -L ubuntu/vbox/vboxvideo/include ] && ln -sf ../include ubuntu/vbox/vboxvideo/include +exit 0 --- linux-raspi2-4.2.0.orig/debian.master/rules.d/amd64.mk +++ linux-raspi2-4.2.0/debian.master/rules.d/amd64.mk @@ -0,0 +1,19 @@ +human_arch = 64 bit x86 +build_arch = x86_64 +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_x86 = true +do_tools_hyperv = true +do_extras_package = true +do_tools_common = true --- linux-raspi2-4.2.0.orig/debian.master/rules.d/arm64.mk +++ linux-raspi2-4.2.0/debian.master/rules.d/arm64.mk @@ -0,0 +1,18 @@ +human_arch = ARMv8 +build_arch = arm64 +header_arch = arm64 +defconfig = defconfig +flavours = generic +build_image = Image +kernel_file = arch/$(build_arch)/boot/Image +install_file = vmlinuz +no_dumpfile = true + +loader = grub +vdso = vdso_install + +do_tools_usbip = true +do_tools_cpupower = true +do_tools_perf = true + +do_dtbs = true --- linux-raspi2-4.2.0.orig/debian.master/rules.d/armhf.mk +++ linux-raspi2-4.2.0/debian.master/rules.d/armhf.mk @@ -0,0 +1,17 @@ +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_dtbs = true --- linux-raspi2-4.2.0.orig/debian.master/rules.d/i386.mk +++ linux-raspi2-4.2.0/debian.master/rules.d/i386.mk @@ -0,0 +1,17 @@ +human_arch = 32 bit x86 +build_arch = i386 +header_arch = x86_64 +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_tools_usbip = true +do_tools_cpupower = true +do_tools_perf = true +do_tools_x86 = true +do_tools_hyperv = true +do_extras_package = true --- linux-raspi2-4.2.0.orig/debian.master/rules.d/powerpc.mk +++ linux-raspi2-4.2.0/debian.master/rules.d/powerpc.mk @@ -0,0 +1,31 @@ +human_arch = PowerPC (32 bit userspace) +build_arch = powerpc +header_arch = $(build_arch) +defconfig = pmac32_defconfig +flavours = powerpc-smp powerpc64-smp powerpc-e500mc powerpc64-emb +build_image = zImage +kernel_file = $(shell if [ ! -f $(builddir)/build-$*/vmlinux.strip ] && \ + [ -f $(builddir)/build-$*/vmlinux.strip.gz ]; then \ + gunzip -c $(builddir)/build-$*/vmlinux.strip.gz \ + > $(builddir)/build-$*/vmlinux.strip; \ + fi && echo vmlinux.strip) +install_file = vmlinux + +# These flavours differ +build_image_powerpc-e500mc = uImage +kernel_file_powerpc-e500mc = arch/powerpc/boot/uImage + +build_image_powerpc64-emb = uImage +kernel_file_powerpc64-emb = arch/powerpc/boot/uImage + +loader = yaboot +vdso = vdso_install + +custom_flavours = + +no_dumpfile = true +do_tools_usbip = true +do_tools_cpupower = true +do_tools_perf = true + +family = ubuntu --- linux-raspi2-4.2.0.orig/debian.master/rules.d/ppc64el.mk +++ linux-raspi2-4.2.0/debian.master/rules.d/ppc64el.mk @@ -0,0 +1,18 @@ +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 + +do_tools_usbip = true +do_tools_cpupower = true +do_tools_perf = true + +#do_flavour_image_package = false --- linux-raspi2-4.2.0.orig/debian.master/rules.d/s390x.mk +++ linux-raspi2-4.2.0/debian.master/rules.d/s390x.mk @@ -0,0 +1,7 @@ +human_arch = System 390x +build_arch = s390 +header_arch = $(build_arch) +defconfig = defconfig +flavours = generic + +do_flavour_image_package = false --- linux-raspi2-4.2.0.orig/debian.master/rules.d/x32.mk +++ linux-raspi2-4.2.0/debian.master/rules.d/x32.mk @@ -0,0 +1,14 @@ +human_arch = 64 bit x86 (32 bit userspace) +build_arch = x86_64 +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-raspi2-4.2.0.orig/debian.raspi2/NOTES +++ linux-raspi2-4.2.0/debian.raspi2/NOTES @@ -0,0 +1,4 @@ +eSCO patch removed. Replaced upstream with a disable_esco module parm. +airprime: Module gone, use option driver instead +AppArmor: Patch is all there and ported. Ooops when enabled, so default + off (still can be enabled apparmor=1) --- linux-raspi2-4.2.0.orig/debian.raspi2/abi/4.2.0-1021.28/abiname +++ linux-raspi2-4.2.0/debian.raspi2/abi/4.2.0-1021.28/abiname @@ -0,0 +1 @@ +1021 --- linux-raspi2-4.2.0.orig/debian.raspi2/abi/4.2.0-1021.28/armhf/raspi2 +++ linux-raspi2-4.2.0/debian.raspi2/abi/4.2.0-1021.28/armhf/raspi2 @@ -0,0 +1,15202 @@ +EXPORT_SYMBOL arch/arm/crypto/aes-arm 0x276b2f72 private_AES_set_encrypt_key +EXPORT_SYMBOL arch/arm/crypto/aes-arm 0x6c62e582 AES_decrypt +EXPORT_SYMBOL arch/arm/crypto/aes-arm 0xc30fcbed AES_encrypt +EXPORT_SYMBOL arch/arm/crypto/aes-arm 0xcf024ae9 private_AES_set_decrypt_key +EXPORT_SYMBOL arch/arm/crypto/sha256-arm 0xa848c54a crypto_sha256_arm_update +EXPORT_SYMBOL arch/arm/crypto/sha256-arm 0xd5120290 crypto_sha256_arm_finup +EXPORT_SYMBOL arch/arm/lib/xor-neon 0x0f051164 xor_block_neon_inner +EXPORT_SYMBOL crypto/gf128mul 0x0c2f123f gf128mul_4k_bbe +EXPORT_SYMBOL crypto/gf128mul 0x1068004b gf128mul_bbe +EXPORT_SYMBOL crypto/gf128mul 0x2f2889a0 gf128mul_init_64k_lle +EXPORT_SYMBOL crypto/gf128mul 0x3755f990 gf128mul_init_64k_bbe +EXPORT_SYMBOL crypto/gf128mul 0x384ef9ce gf128mul_64k_bbe +EXPORT_SYMBOL crypto/gf128mul 0x56af0dbd gf128mul_x_ble +EXPORT_SYMBOL crypto/gf128mul 0x83581089 gf128mul_init_4k_lle +EXPORT_SYMBOL crypto/gf128mul 0x9b2560b9 gf128mul_init_4k_bbe +EXPORT_SYMBOL crypto/gf128mul 0x9e13f6f6 gf128mul_lle +EXPORT_SYMBOL crypto/gf128mul 0xbd17a0df gf128mul_4k_lle +EXPORT_SYMBOL crypto/gf128mul 0xc0890413 gf128mul_64k_lle +EXPORT_SYMBOL crypto/gf128mul 0xd60736ec gf128mul_free_64k +EXPORT_SYMBOL crypto/mcryptd 0x28865246 mcryptd_arm_flusher +EXPORT_SYMBOL crypto/xor 0x5b6c00e6 xor_blocks +EXPORT_SYMBOL drivers/bcma/bcma 0x2b49da65 bcma_core_irq +EXPORT_SYMBOL drivers/bcma/bcma 0x32c94996 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 0x18d842c6 pi_read_regr +EXPORT_SYMBOL drivers/block/paride/paride 0x262c0148 pi_read_block +EXPORT_SYMBOL drivers/block/paride/paride 0x39c32f5e pi_connect +EXPORT_SYMBOL drivers/block/paride/paride 0x3a462cde pi_do_claimed +EXPORT_SYMBOL drivers/block/paride/paride 0x4267110a pi_register_driver +EXPORT_SYMBOL drivers/block/paride/paride 0x73f789c0 pi_init +EXPORT_SYMBOL drivers/block/paride/paride 0x79161100 paride_register +EXPORT_SYMBOL drivers/block/paride/paride 0x932339c3 pi_disconnect +EXPORT_SYMBOL drivers/block/paride/paride 0xb21ba07d pi_unregister_driver +EXPORT_SYMBOL drivers/block/paride/paride 0xc940d80f pi_release +EXPORT_SYMBOL drivers/block/paride/paride 0xd166a212 pi_write_regr +EXPORT_SYMBOL drivers/block/paride/paride 0xe76331d6 pi_write_block +EXPORT_SYMBOL drivers/block/paride/paride 0xea5c0a14 pi_schedule_claimed +EXPORT_SYMBOL drivers/block/paride/paride 0xf4a3785f paride_unregister +EXPORT_SYMBOL drivers/bluetooth/btbcm 0x161ed5b5 btbcm_patchram +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x01d3a058 ipmi_register_smi +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x076e17ba ipmi_smi_watcher_unregister +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x1348760d ipmi_request_settime +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x16dcec76 ipmi_set_my_address +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x196665cb ipmi_get_smi_info +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x1a10c898 ipmi_set_maintenance_mode +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x1aba5db8 ipmi_unregister_smi +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x1fae3bac ipmi_addr_src_to_str +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x40f2b10c ipmi_alloc_smi_msg +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x423b776a ipmi_create_user +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x4c971bec ipmi_smi_msg_received +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x524f6f51 ipmi_get_my_address +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x5e80f37c ipmi_unregister_for_cmd +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x5fcdcc05 ipmi_get_my_LUN +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x67a87dc9 ipmi_smi_watcher_register +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x67cb9784 ipmi_poll_interface +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x78fd36e7 ipmi_request_supply_msgs +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x804f922a ipmi_addr_length +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x8c8ee770 ipmi_destroy_user +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x96cbcc81 ipmi_get_version +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xa2a98b91 ipmi_get_maintenance_mode +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xae52ae98 ipmi_smi_add_proc_entry +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xd69f8567 ipmi_set_gets_events +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xe0fa83f2 ipmi_register_for_cmd +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xe4f4665b ipmi_validate_addr +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xe6ab72a6 ipmi_set_my_LUN +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xf2576cb9 ipmi_smi_watchdog_pretimeout +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xfcb77cfd ipmi_free_recv_msg +EXPORT_SYMBOL drivers/char/nvram 0x0f28cb91 nvram_read_byte +EXPORT_SYMBOL drivers/char/nvram 0x17ff2c1d __nvram_read_byte +EXPORT_SYMBOL drivers/char/nvram 0x2adec1e0 __nvram_check_checksum +EXPORT_SYMBOL drivers/char/nvram 0x7da28f12 nvram_check_checksum +EXPORT_SYMBOL drivers/char/nvram 0x9ce3f83f nvram_write_byte +EXPORT_SYMBOL drivers/char/nvram 0xa8813189 __nvram_write_byte +EXPORT_SYMBOL drivers/char/tpm/st33zp24/tpm_st33zp24 0x45eaa9dd st33zp24_pm_resume +EXPORT_SYMBOL drivers/char/tpm/st33zp24/tpm_st33zp24 0x6c61446a st33zp24_probe +EXPORT_SYMBOL drivers/char/tpm/st33zp24/tpm_st33zp24 0xd316d954 st33zp24_remove +EXPORT_SYMBOL drivers/char/tpm/st33zp24/tpm_st33zp24 0xfb1e17dd st33zp24_pm_suspend +EXPORT_SYMBOL drivers/char/xillybus/xillybus_core 0x25978d50 xillybus_isr +EXPORT_SYMBOL drivers/char/xillybus/xillybus_core 0x393ad04e xillybus_init_endpoint +EXPORT_SYMBOL drivers/char/xillybus/xillybus_core 0x47c850ee xillybus_endpoint_remove +EXPORT_SYMBOL drivers/char/xillybus/xillybus_core 0x700dcb75 xillybus_endpoint_discovery +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0x0601ba2b dw_dma_cyclic_prep +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0x250b3466 dw_dma_cyclic_start +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0x4e19f119 dw_dma_get_src_addr +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0x5a4f66fd dw_dma_cyclic_stop +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0x70a42bb0 dw_dma_cyclic_free +EXPORT_SYMBOL drivers/dma/dw/dw_dmac_core 0xaeed96b2 dw_dma_get_dst_addr +EXPORT_SYMBOL drivers/dma/pl330 0xcbeb8866 pl330_filter +EXPORT_SYMBOL drivers/edac/edac_core 0xa5426ffa edac_mc_find +EXPORT_SYMBOL drivers/fmc/fmc 0x00c213dd fmc_driver_register +EXPORT_SYMBOL drivers/fmc/fmc 0x1414bde9 fmc_device_register_n +EXPORT_SYMBOL drivers/fmc/fmc 0x46372fce fmc_driver_unregister +EXPORT_SYMBOL drivers/fmc/fmc 0x91d1e7df fmc_device_unregister +EXPORT_SYMBOL drivers/fmc/fmc 0xa3fc649d fmc_reprogram +EXPORT_SYMBOL drivers/fmc/fmc 0xb3d5df30 fmc_free_sdb_tree +EXPORT_SYMBOL drivers/fmc/fmc 0xb6309b7b fmc_find_sdb_device +EXPORT_SYMBOL drivers/fmc/fmc 0xb894c323 fmc_device_register +EXPORT_SYMBOL drivers/fmc/fmc 0xd6a8d317 fmc_show_sdb_tree +EXPORT_SYMBOL drivers/fmc/fmc 0xda192a04 fmc_scan_sdb_tree +EXPORT_SYMBOL drivers/fmc/fmc 0xfa21b297 fmc_device_unregister_n +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00dba145 drm_set_preferred_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x02529951 drm_mode_config_reset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x02a58d35 drm_mode_validate_size +EXPORT_SYMBOL drivers/gpu/drm/drm 0x049c0ba6 drm_atomic_state_default_clear +EXPORT_SYMBOL drivers/gpu/drm/drm 0x04b41692 drm_gem_prime_export +EXPORT_SYMBOL drivers/gpu/drm/drm 0x04f3a35f drm_atomic_connector_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x05acc16d drm_property_create_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0x060cc19d drm_bridge_mode_fixup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x06168680 drm_modeset_lock +EXPORT_SYMBOL drivers/gpu/drm/drm 0x06aec41e drm_vblank_on +EXPORT_SYMBOL drivers/gpu/drm/drm 0x073e0949 drm_universal_plane_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x07b81759 drm_vma_node_allow +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0846c373 drm_legacy_ioremap_wc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x089c9c79 drm_dev_ref +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0a4fcf88 drm_crtc_send_vblank_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0a5dd625 drm_encoder_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0a72f765 drm_clflush_virt_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0ae4b94c drm_ht_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0b301e0c drm_ioctl +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0e2f9cce drm_gem_private_object_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0e4de927 drm_property_create_bool +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0e69c908 drm_modeset_drop_locks +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0fccafb1 drm_global_item_unref +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 0x10836beb drm_property_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x113ee29b drm_mode_create_tile_group +EXPORT_SYMBOL drivers/gpu/drm/drm 0x12206849 drm_object_property_set_value +EXPORT_SYMBOL drivers/gpu/drm/drm 0x12c38072 drm_atomic_state_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1410ca2f __drm_modeset_lock_all +EXPORT_SYMBOL drivers/gpu/drm/drm 0x144ce090 drm_framebuffer_reference +EXPORT_SYMBOL drivers/gpu/drm/drm 0x14620296 drm_modeset_acquire_fini +EXPORT_SYMBOL drivers/gpu/drm/drm 0x14834852 drm_mode_find_dmt +EXPORT_SYMBOL drivers/gpu/drm/drm 0x14a9a178 drm_get_format_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x164ebef9 drm_bridge_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0x17b15612 drm_noop +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1941965f drm_atomic_set_crtc_for_connector +EXPORT_SYMBOL drivers/gpu/drm/drm 0x194eadaa drm_edid_header_is_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x19520c39 drm_probe_ddc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x195d8d68 drm_connector_index +EXPORT_SYMBOL drivers/gpu/drm/drm 0x19c78496 drm_mode_get_tile_group +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1a546ddd drm_mm_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1a770ac3 drm_detect_hdmi_monitor +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1bf37654 drm_legacy_rmmap_locked +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1dc69ded drm_mode_create_scaling_mode_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1dd71f7a drm_err +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1ddbd93a drm_framebuffer_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x20645642 drm_debug +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2072c0cd drm_legacy_mmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x21270c9b drm_atomic_connectors_for_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x21514f28 drm_mode_duplicate +EXPORT_SYMBOL drivers/gpu/drm/drm 0x220c020d drm_crtc_vblank_reset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x227903ce drm_mode_group_init_legacy_group +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2281e29c drm_modeset_lock_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x22acaf62 drm_get_cea_aspect_ratio +EXPORT_SYMBOL drivers/gpu/drm/drm 0x22c1d7a0 drm_flip_work_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x22cb3e42 drm_vma_offset_lookup_locked +EXPORT_SYMBOL drivers/gpu/drm/drm 0x22e6c806 drm_dev_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2309cdcf drm_mode_create_suggested_offset_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0x23e871fa drm_gem_object_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2445e1c5 drm_unplug_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0x24a1dade drm_put_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0x24de41b4 drm_flip_work_queue_task +EXPORT_SYMBOL drivers/gpu/drm/drm 0x250eb01e drm_crtc_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x25b719ee drm_atomic_plane_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x298839b8 drm_vblank_off +EXPORT_SYMBOL drivers/gpu/drm/drm 0x29a010e6 drm_mm_insert_node_in_range_generic +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2a71184d drm_encoder_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2addeff6 drm_mm_dump_table +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2c2f23e1 drm_mode_probed_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2cab2e6f drm_i2c_encoder_restore +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2d50570f drm_rect_calc_hscale +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2e520ed4 drm_gem_mmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2e568362 drm_bridge_enable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2e7a4300 drm_rgb_quant_range_selectable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2f148e3a drm_gem_dumb_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2f2206d7 drm_modeset_lock_interruptible +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2f5000ab drm_legacy_idlelock_take +EXPORT_SYMBOL drivers/gpu/drm/drm 0x31df4749 drm_gem_object_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3315b0bd drm_crtc_check_viewport +EXPORT_SYMBOL drivers/gpu/drm/drm 0x346127a7 drm_global_item_ref +EXPORT_SYMBOL drivers/gpu/drm/drm 0x349255c3 drm_gem_object_lookup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x34ca2cdb drm_calc_timestamping_constants +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3525b871 drm_panel_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3680c1fe drm_mode_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x36e222c4 drm_vblank_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0x370b5432 drm_property_create_enum +EXPORT_SYMBOL drivers/gpu/drm/drm 0x37b55171 drm_atomic_add_affected_planes +EXPORT_SYMBOL drivers/gpu/drm/drm 0x37ebe743 drm_mm_replace_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3899fc99 drm_plane_force_disable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x38a4f7ae drm_format_num_planes +EXPORT_SYMBOL drivers/gpu/drm/drm 0x38ded30c drm_panel_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x398e0b17 drm_bridge_pre_enable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3a5eb609 drm_panel_detach +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3ac1fef9 drm_mode_legacy_fb_format +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3b7a8f6b drm_vma_offset_manager_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3b9d009a drm_format_plane_cpp +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3c67f82f drm_read +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3c6f47cc drm_connector_register +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3d89826e of_drm_find_panel +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3e118fdf drm_irq_install +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3e5c1277 drm_gem_handle_delete +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3eb37b9d drm_ht_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3ee2e67e drm_modeset_acquire_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3f7b8b20 drm_vblank_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4080d9c9 drm_connector_unplug_all +EXPORT_SYMBOL drivers/gpu/drm/drm 0x41333f80 drm_wait_one_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0x41c97b8f drm_irq_uninstall +EXPORT_SYMBOL drivers/gpu/drm/drm 0x42eba2b7 drm_av_sync_delay +EXPORT_SYMBOL drivers/gpu/drm/drm 0x43cecc1a drm_poll +EXPORT_SYMBOL drivers/gpu/drm/drm 0x43d9e8a8 drm_i2c_encoder_save +EXPORT_SYMBOL drivers/gpu/drm/drm 0x45e64b62 drm_mode_create_aspect_ratio_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x47993811 drm_cvt_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x490cfb78 drm_mm_reserve_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4a656d51 drm_property_create_bitmask +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4afb83eb drm_i2c_encoder_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4b531812 of_drm_find_bridge +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4bb72390 drm_legacy_addmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4c511235 drm_edid_is_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4cb1dd35 drm_property_unreference_blob +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4d64ae45 drm_select_eld +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4ea1f5a2 drm_gem_object_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4f3a8292 drm_mode_set_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5007a0ec drm_panel_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x50a1dbc6 drm_framebuffer_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x50e28c07 drm_edid_to_sad +EXPORT_SYMBOL drivers/gpu/drm/drm 0x50fed191 drm_mode_crtc_set_gamma_size +EXPORT_SYMBOL drivers/gpu/drm/drm 0x52296338 drm_mode_set_config_internal +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5261cb76 drm_vblank_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0x526f6f71 drm_rect_calc_hscale_relaxed +EXPORT_SYMBOL drivers/gpu/drm/drm 0x54541cfc drm_flip_work_queue +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5675df7e drm_crtc_vblank_on +EXPORT_SYMBOL drivers/gpu/drm/drm 0x567e16ec drm_modeset_unlock +EXPORT_SYMBOL drivers/gpu/drm/drm 0x57b41781 drm_crtc_handle_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0x57b6efe3 drm_ioctl_flags +EXPORT_SYMBOL drivers/gpu/drm/drm 0x57cc1de1 drm_mode_create_dirty_info_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x58e71f76 drm_gem_put_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0x599d8713 drm_mode_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x59ef50f0 drm_edid_block_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5a946ee2 drm_atomic_get_crtc_state +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5aa2dad2 drm_mode_connector_list_update +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5b3c8e47 drm_plane_from_index +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5c0efdab drm_clflush_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5d30a7cf drm_plane_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5da0c1f3 drm_master_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5e73b12c drm_gtf_mode_complex +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5e92204d drm_atomic_add_affected_connectors +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5ffc1f70 drm_bridge_mode_set +EXPORT_SYMBOL drivers/gpu/drm/drm 0x60172e69 drm_crtc_index +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6107db46 drm_property_add_enum +EXPORT_SYMBOL drivers/gpu/drm/drm 0x61256e85 drm_mode_create_tv_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0x614baa1b drm_edid_to_eld +EXPORT_SYMBOL drivers/gpu/drm/drm 0x616ebe62 drm_pci_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x642e3a13 drm_legacy_addbufs_pci +EXPORT_SYMBOL drivers/gpu/drm/drm 0x64f64da4 drm_gtf_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x666ca224 drm_mode_copy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x67081a35 drm_atomic_async_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x67633846 drm_mm_insert_node_generic +EXPORT_SYMBOL drivers/gpu/drm/drm 0x689e9cb0 drm_mode_create_rotation_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6900d335 drm_rect_clip_scaled +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6a34e997 drm_mode_object_find +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6bb7a8bb drm_framebuffer_lookup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6cc6162b drm_prime_pages_to_sg +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6cf82616 drm_gem_vm_open +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6e30ba8e drm_rect_rotate_inv +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6fc1606f drm_modeset_legacy_acquire_ctx +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7051671b drm_atomic_set_mode_for_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x71c3552f drm_crtc_wait_one_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7205f6fc drm_crtc_init_with_planes +EXPORT_SYMBOL drivers/gpu/drm/drm 0x74b2b7f1 drm_sysfs_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0x77836cca drm_mode_plane_set_obj_prop +EXPORT_SYMBOL drivers/gpu/drm/drm 0x77b4ed13 drm_add_modes_noedid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7806bb11 drm_vblank_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x782aef00 drm_i2c_encoder_mode_set +EXPORT_SYMBOL drivers/gpu/drm/drm 0x788017f5 drm_atomic_state_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7938ceb2 drm_calc_vbltimestamp_from_scanoutpos +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7965021c drm_mode_vrefresh +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7b9fbf85 drm_flip_work_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7cd9ad3b drm_add_edid_modes +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7dc2224b drm_mode_parse_command_line_for_connector +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7ee4db17 drm_atomic_set_mode_prop_for_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7f41684e drm_gem_get_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0x82c2998f drm_flip_work_allocate_task +EXPORT_SYMBOL drivers/gpu/drm/drm 0x82d5bb73 drm_match_cea_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8397dff6 drm_modeset_unlock_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x83f19d51 drm_gem_free_mmap_offset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8442296c drm_legacy_ioremap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x85a0f42a drm_mode_connector_attach_encoder +EXPORT_SYMBOL drivers/gpu/drm/drm 0x86560899 drm_mode_hsync +EXPORT_SYMBOL drivers/gpu/drm/drm 0x871ab41a drm_rect_intersect +EXPORT_SYMBOL drivers/gpu/drm/drm 0x881870be drm_mode_connector_set_tile_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x88309f8b drm_atomic_check_only +EXPORT_SYMBOL drivers/gpu/drm/drm 0x891028e3 drm_atomic_get_connector_state +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8a29c17d drm_mode_connector_set_path_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8a73aef9 drm_gem_prime_import +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8cb3d51a drm_crtc_vblank_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8cd9c0f4 drm_master_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8dc8caf8 drm_vblank_pre_modeset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8de13715 drm_format_vert_chroma_subsampling +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8e0eadac drm_atomic_set_crtc_for_plane +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8eff9111 drm_ht_find_item +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9012c8a3 drm_mode_create_dvi_i_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9062394e drm_bridge_attach +EXPORT_SYMBOL drivers/gpu/drm/drm 0x91621bf0 drm_atomic_set_fb_for_plane +EXPORT_SYMBOL drivers/gpu/drm/drm 0x91ceede5 drm_connector_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x91fec1cc drm_rect_calc_vscale +EXPORT_SYMBOL drivers/gpu/drm/drm 0x92408488 drm_mm_scan_add_block +EXPORT_SYMBOL drivers/gpu/drm/drm 0x968f1d92 drm_gem_prime_handle_to_fd +EXPORT_SYMBOL drivers/gpu/drm/drm 0x96bae9df drm_legacy_getsarea +EXPORT_SYMBOL drivers/gpu/drm/drm 0x97fe0033 drm_atomic_state_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x984cea6c drm_pci_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9972db48 drm_rect_calc_vscale_relaxed +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9b569151 drm_bridge_disable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9ce8f3eb drm_handle_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9db3f3de drm_modeset_backoff_interruptible +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9deedd66 drm_crtc_get_hv_timing +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9e611a31 drm_mode_config_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9f87ba89 drm_hdmi_avi_infoframe_from_display_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9fb54780 drm_mode_set_crtcinfo +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa044ed0a drm_framebuffer_unregister_private +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa0bca31c drm_gem_dmabuf_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa142614c drm_flip_work_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa1670772 drm_framebuffer_unreference +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa1c9c5da drm_display_info_set_bus_formats +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa28078b2 drm_edid_duplicate +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa2bf3961 drm_crtc_vblank_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa4466414 drm_mm_remove_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa5b7b9dc drm_gem_vm_close +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa7e6f1ab drm_dev_register +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa8c32e09 drm_platform_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa96acfcb drm_rect_debug_print +EXPORT_SYMBOL drivers/gpu/drm/drm 0xabd0b911 drm_atomic_commit +EXPORT_SYMBOL drivers/gpu/drm/drm 0xac9fa64a drm_vblank_count +EXPORT_SYMBOL drivers/gpu/drm/drm 0xaf07eb47 drm_vma_offset_lookup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xaf4a1f39 drm_gem_mmap_obj +EXPORT_SYMBOL drivers/gpu/drm/drm 0xaff72575 drm_mode_validate_basic +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb053adda drm_rect_rotate +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb184d891 drm_modeset_backoff +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb2dba117 drm_mode_equal +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb38fdfac drm_i2c_encoder_mode_fixup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb523f20f drm_i2c_encoder_detect +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb59d2ea9 drm_legacy_idlelock_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb6201225 drm_vma_node_is_allowed +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb7fc7892 drm_platform_set_busid +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb8799522 drm_reinit_primary_mode_group +EXPORT_SYMBOL drivers/gpu/drm/drm 0xba13f1d4 drm_of_find_possible_crtcs +EXPORT_SYMBOL drivers/gpu/drm/drm 0xba6b6763 drm_property_reference_blob +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbb780b47 drm_get_edid +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbf807fd7 drm_debugfs_create_files +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbfea5292 drm_vma_offset_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc084b7f7 drm_vma_offset_manager_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc1648a93 drm_vma_node_revoke +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc360e7e2 drm_ut_debug_printk +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc37d0f35 drm_mode_connector_update_edid_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc4bab176 drm_framebuffer_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc76c61bb drm_i2c_encoder_prepare +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc76e7a33 drm_hdmi_vendor_infoframe_from_display_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0xca45efbc drm_format_horz_chroma_subsampling +EXPORT_SYMBOL drivers/gpu/drm/drm 0xca5c7790 drm_mm_init_scan_with_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0xca81a417 drm_send_vblank_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0xca832235 drm_open +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcb060f25 drm_bridge_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcb13122c drm_property_create_blob +EXPORT_SYMBOL drivers/gpu/drm/drm 0xccba246a drm_debugfs_remove_files +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcd0fc417 drm_ht_just_insert_please +EXPORT_SYMBOL drivers/gpu/drm/drm 0xceb192cc drm_property_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcf2479ae drm_object_attach_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcfb16442 drm_connector_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcffb4de4 drm_mode_prune_invalid +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd013937a drm_mode_config_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd110958a drm_atomic_legacy_backoff +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd12657f0 drm_mode_create_from_cmdline_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd1e3bd86 drm_mode_equal_no_clocks_no_stereo +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd2335101 drm_fb_get_bpp_depth +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd2fcf262 drm_panel_attach +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd30a22a7 drm_connector_unregister +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd41ed95a drm_prime_gem_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd4530c5d drm_gem_create_mmap_offset +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd52b1d11 drm_mm_init_scan +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd53f130d drm_object_property_get_value +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd64afb6f drm_vma_offset_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd687400c drm_dev_unregister +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd70c8470 drm_mm_debug_table +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd8428a5a drm_legacy_ioremapfree +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd90bc8f8 drm_clflush_sg +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdb5aadd5 drm_bridge_post_disable +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdbb5a9f5 drm_ht_remove_item +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdc56caa0 drm_vblank_count_and_time +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdd150721 drm_mm_takedown +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdeaf183c drm_dev_set_unique +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdf56bbd7 drm_property_create_object +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdf666902 drm_rotation_simplify +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe14dd881 drm_i2c_encoder_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe1a7b0fc drm_i2c_encoder_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe2a4c536 drm_pci_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe51d89b5 drm_mm_clean +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe5b9980f drm_legacy_rmmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe7197773 drm_ht_insert_item +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe7578942 drm_atomic_get_plane_state +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe85eeecc drm_property_lookup_blob +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe88a6f85 drm_crtc_vblank_count +EXPORT_SYMBOL drivers/gpu/drm/drm 0xea4692cc drm_atomic_crtc_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xea570d63 drm_gem_prime_fd_to_handle +EXPORT_SYMBOL drivers/gpu/drm/drm 0xeaac7aba drm_property_create_signed_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0xeba976c5 drm_pci_exit +EXPORT_SYMBOL drivers/gpu/drm/drm 0xec6fd0b3 drm_gem_create_mmap_offset_size +EXPORT_SYMBOL drivers/gpu/drm/drm 0xecb1c524 drm_crtc_vblank_off +EXPORT_SYMBOL drivers/gpu/drm/drm 0xedb3257d drm_vblank_post_modeset +EXPORT_SYMBOL drivers/gpu/drm/drm 0xef9121cf drm_warn_on_modeset_not_all_locked +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf1421d13 drm_mode_sort +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf185e5d4 drm_prime_sg_to_page_addr_arrays +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf1f42930 drm_plane_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf46cef1d drm_modeset_lock_all_crtcs +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf511f17a drm_atomic_state_default_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf5261983 drm_mode_debug_printmodeline +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf8afa5f4 drm_i2c_encoder_dpms +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf8bd56a1 drm_modeset_lock_all +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf97817d5 drm_gem_handle_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfbba72b1 drm_plane_index +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfbe4bea5 drm_modeset_unlock_all +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfcf54a4f drm_mm_scan_remove_block +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfd063935 drm_edid_to_speaker_allocation +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfd0a4892 drm_dev_unref +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfea168c7 drm_atomic_state_clear +EXPORT_SYMBOL drivers/gpu/drm/drm 0xffc6c87a drm_detect_monitor_audio +EXPORT_SYMBOL drivers/gpu/drm/drm 0xffff1f92 drm_release +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x01574db5 drm_dp_link_configure +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x06d15b8a drm_dp_mst_hpd_irq +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x07702300 drm_atomic_helper_commit_modeset_enables +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x098e47d2 drm_dp_link_train_clock_recovery_delay +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0996f6f5 drm_atomic_helper_connector_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0c9b8945 drm_pick_cmdline_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0f96ec70 drm_dp_clock_recovery_ok +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x10d3f217 drm_dp_link_probe +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x130f3272 drm_dp_mst_topology_mgr_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x15a1d7da drm_dp_mst_reset_vcpi_slots +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x16051287 drm_dp_aux_register +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x163251c8 drm_dp_link_train_channel_eq_delay +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x17138dba drm_dp_mst_dump_topology +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x1804e695 drm_kms_helper_poll_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x185ca1f9 drm_helper_probe_single_connector_modes_nomerge +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x19610e2c drm_dp_aux_unregister +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x1ab70e24 drm_helper_mode_fill_fb_struct +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x1b1d0001 drm_dp_mst_topology_mgr_set_mst +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x1be5be70 drm_kms_helper_poll_enable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x1e273751 drm_dp_mst_allocate_vcpi +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x1e76816f drm_fb_helper_blank +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x203d3223 drm_helper_crtc_mode_set +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x22413a7d drm_dp_check_act_status +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2639e707 drm_fb_helper_prepare +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x26f65707 drm_atomic_helper_set_config +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2a70a222 drm_fb_helper_debug_enter +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2aa12364 drm_dp_mst_topology_mgr_suspend +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2bced1cd drm_atomic_helper_plane_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3277c574 drm_helper_crtc_in_use +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x32ff3440 drm_kms_helper_poll_fini +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x34871adf drm_dp_channel_eq_ok +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x36138827 drm_crtc_helper_set_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3735674f __drm_atomic_helper_crtc_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x379b5f59 drm_atomic_helper_swap_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x47f3487c drm_crtc_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x49044bf6 drm_dp_mst_topology_mgr_resume +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4a49b61b drm_dp_update_payload_part1 +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4b748306 drm_atomic_helper_connector_dpms +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4c04cb26 drm_atomic_helper_cleanup_planes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4da88b8c drm_kms_helper_poll_disable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4fa6b622 drm_atomic_helper_crtc_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5326d162 drm_fb_helper_set_par +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x57d59ba7 drm_helper_resume_force_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x58068a37 drm_dp_mst_get_edid +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5c295184 drm_fb_helper_fill_var +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5ca6715d drm_dp_dpcd_read_link_status +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x622c37bc drm_dp_mst_detect_port +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x639ca6f1 drm_fb_helper_fini +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6a639e11 drm_primary_helper_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x711471b3 drm_fb_helper_single_add_all_connectors +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x711a004a drm_dp_link_rate_to_bw_code +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7a0d7453 drm_atomic_helper_prepare_planes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7db8b0cc drm_fb_helper_remove_one_connector +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7f67f3e4 drm_atomic_helper_crtc_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x80153a0e drm_primary_helper_disable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x829211d8 drm_dp_link_power_up +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x84822c06 drm_fb_helper_fill_fix +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x84e924ba drm_dp_get_adjust_request_pre_emphasis +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x85900cc9 drm_fb_helper_debug_leave +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x87518909 drm_atomic_helper_commit_modeset_disables +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x89fa10ea drm_atomic_helper_update_plane +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8a811084 drm_fb_helper_setcmap +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8d9ce3c5 drm_crtc_helper_set_config +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8e46e565 drm_dp_dpcd_write +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x90421cd9 drm_atomic_helper_plane_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x938bfe15 drm_dp_dpcd_read +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x98b284ed drm_plane_helper_update +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x994deecc drm_atomic_helper_commit_planes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x998aaaa6 drm_has_preferred_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9b5d8f7d drm_atomic_helper_page_flip +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9c19bdad drm_atomic_helper_crtc_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9caac5d3 drm_kms_helper_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9f3c763c drm_primary_helper_funcs +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa24ee4c4 drm_helper_encoder_in_use +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa2f5eb1a drm_dp_link_power_down +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa398ae48 drm_atomic_helper_commit +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa47826e4 drm_dp_calc_pbn_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa77858bb drm_dp_get_adjust_request_voltage +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa8d6809d drm_dp_bw_code_to_link_rate +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa957969a drm_fb_helper_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa96995f3 drm_atomic_helper_connector_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xabce7877 drm_helper_disable_unused_functions +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb2740356 drm_primary_helper_update +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb3235b1a drm_atomic_helper_disable_plane +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb760047e drm_atomic_helper_wait_for_vblanks +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xba978da9 __drm_atomic_helper_plane_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xbc3a389c __drm_atomic_helper_connector_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xbca1e320 __drm_atomic_helper_plane_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xbcb71d56 drm_fb_helper_check_var +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xbe6e8283 drm_fb_helper_pan_display +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xbf0982c8 drm_atomic_helper_plane_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc2f58076 drm_fb_helper_restore_fbdev_mode_unlocked +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc4eb27e8 drm_dp_mst_topology_mgr_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc53036a5 drm_atomic_helper_check_planes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc58282db drm_dp_find_vcpi_slots +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xca62c0a9 drm_helper_move_panel_connectors_to_head +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xcbf2a2e9 drm_atomic_helper_commit_planes_on_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xcc2f7de8 drm_atomic_helper_check +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xcee053d7 drm_dp_mst_get_vcpi_slots +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd4097474 __drm_atomic_helper_connector_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd97203d3 drm_fb_helper_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xdb33056a drm_dp_mst_deallocate_vcpi +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe2352d9e drm_plane_helper_disable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe4e216a2 drm_atomic_helper_update_legacy_modeset_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xea682725 drm_atomic_helper_check_modeset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xead3150b drm_atomic_helper_connector_duplicate_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xec0b2c07 drm_fb_helper_add_one_connector +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xedc94e66 drm_fb_helper_initial_config +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xee06a5d4 drm_helper_connector_dpms +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xeebec648 drm_dp_update_payload_part2 +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xef13150e drm_helper_hpd_irq_event +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf2dbb3ff drm_helper_probe_single_connector_modes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf3b285b1 drm_atomic_helper_crtc_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf3deb55c drm_plane_helper_check_update +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf4607008 drm_helper_crtc_mode_set_base +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf775d003 __drm_atomic_helper_crtc_destroy_state +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xfb942a2c drm_atomic_helper_connector_set_property +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xfd26c531 drm_atomic_helper_plane_destroy_state +EXPORT_SYMBOL drivers/hwmon/hwmon-vid 0x0903c239 vid_from_reg +EXPORT_SYMBOL drivers/hwmon/hwmon-vid 0xef1c781c vid_which_vrm +EXPORT_SYMBOL drivers/hwmon/sch56xx-common 0x0e2a6864 sch56xx_read_virtual_reg +EXPORT_SYMBOL drivers/hwmon/sch56xx-common 0x0f5877d4 sch56xx_read_virtual_reg16 +EXPORT_SYMBOL drivers/hwmon/sch56xx-common 0x34257f35 sch56xx_watchdog_unregister +EXPORT_SYMBOL drivers/hwmon/sch56xx-common 0x890f829d sch56xx_watchdog_register +EXPORT_SYMBOL drivers/hwmon/sch56xx-common 0xe5022f95 sch56xx_read_virtual_reg12 +EXPORT_SYMBOL drivers/hwmon/sch56xx-common 0xed1d2a08 sch56xx_write_virtual_reg +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-bit 0x3fca5ab0 i2c_bit_algo +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-bit 0xbd3c546a i2c_bit_add_bus +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-bit 0xf1ed61ce i2c_bit_add_numbered_bus +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-pca 0x0a6f9bde i2c_pca_add_bus +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-pca 0x52117523 i2c_pca_add_numbered_bus +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x02891f0d mma9551_app_reset +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x1a655451 mma9551_read_accel_chan +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x1a91fe2d mma9551_set_power_state +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x3eb7a969 mma9551_read_version +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x41ef446c mma9551_read_accel_scale +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x514b767c mma9551_write_config_byte +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x552876c0 mma9551_read_config_words +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x6fbd9cbe mma9551_update_config_bits +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x78c8aeea mma9551_gpio_config +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x8437c621 mma9551_read_status_byte +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x8a02cec7 mma9551_set_device_state +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0x93a3060b mma9551_read_status_word +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xad248f15 mma9551_read_config_byte +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xb23ee1f7 mma9551_read_config_word +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xbcd7fe96 mma9551_sleep +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xccbd82c0 mma9551_write_config_words +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xdb29a1c3 mma9551_read_status_words +EXPORT_SYMBOL drivers/iio/accel/mma9551_core 0xf0edf327 mma9551_write_config_word +EXPORT_SYMBOL drivers/iio/accel/st_accel 0x807419e0 st_accel_common_probe +EXPORT_SYMBOL drivers/iio/accel/st_accel 0xbcd00c07 st_accel_common_remove +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x28fec69f hid_sensor_write_samp_freq_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x798d864d hid_sensor_read_samp_freq_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0x867e2b53 hid_sensor_write_raw_hyst_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0xc83a92bf hid_sensor_format_scale +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0xe6a5e34e hid_sensor_read_poll_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0xf2613cac hid_sensor_read_raw_hyst_value +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-iio-common 0xfd230663 hid_sensor_parse_common_attributes +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-trigger 0xa0769707 hid_sensor_remove_trigger +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-trigger 0xa46b08f0 hid_sensor_setup_trigger +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-trigger 0xa52996b7 hid_sensor_pm_ops +EXPORT_SYMBOL drivers/iio/common/hid-sensors/hid-sensor-trigger 0xfbe7725e hid_sensor_power_state +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0x60de232f ssp_register_consumer +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0x7409459b ssp_get_sensor_delay +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0x756f373d ssp_enable_sensor +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0x8945c355 ssp_change_delay +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/sensorhub 0xc8917e6c ssp_disable_sensor +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/ssp_iio 0x46e7a62d ssp_common_process_data +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/ssp_iio 0x53dc0ef5 ssp_common_buffer_postdisable +EXPORT_SYMBOL drivers/iio/common/ssp_sensors/ssp_iio 0xd00f6601 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 0x147b398a st_sensors_set_fullscale_by_gain +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x3dddc52b st_sensors_deallocate_trigger +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x4be638f4 st_sensors_set_odr +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x4fece460 st_sensors_set_axis_enable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x5a6be28a st_sensors_sysfs_scale_avail +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x6e197a7e st_sensors_set_enable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x7f22c2b3 st_sensors_allocate_trigger +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x8668e83c st_sensors_read_info_raw +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x8afabab1 st_sensors_check_device_support +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0x9650fe3c st_sensors_power_enable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xa596150a st_sensors_get_buffer_element +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xaf32407b st_sensors_sysfs_sampling_frequency_avail +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xc9a6f61d st_sensors_power_disable +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xe371d872 st_sensors_set_dataready_irq +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors 0xfd956e78 st_sensors_init_sensor +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors_i2c 0x3a3d8c45 st_sensors_of_i2c_probe +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors_i2c 0x3d373919 st_sensors_i2c_configure +EXPORT_SYMBOL drivers/iio/common/st_sensors/st_sensors_spi 0x9ada50f8 st_sensors_spi_configure +EXPORT_SYMBOL drivers/iio/gyro/st_gyro 0x37dcb7b3 st_gyro_common_remove +EXPORT_SYMBOL drivers/iio/gyro/st_gyro 0x5682f98c st_gyro_common_probe +EXPORT_SYMBOL drivers/iio/imu/adis_lib 0x2efc79bd adis_debugfs_reg_access +EXPORT_SYMBOL drivers/iio/imu/adis_lib 0xd01468c8 adis_enable_irq +EXPORT_SYMBOL drivers/iio/industrialio 0x0277648a iio_device_unregister +EXPORT_SYMBOL drivers/iio/industrialio 0x0ff06050 iio_trigger_register +EXPORT_SYMBOL drivers/iio/industrialio 0x10fb25b0 iio_device_free +EXPORT_SYMBOL drivers/iio/industrialio 0x1cdbf17c iio_read_const_attr +EXPORT_SYMBOL drivers/iio/industrialio 0x283f3999 iio_device_alloc +EXPORT_SYMBOL drivers/iio/industrialio 0x2d6bcdcb iio_trigger_generic_data_rdy_poll +EXPORT_SYMBOL drivers/iio/industrialio 0x3c53a3a2 iio_triggered_buffer_postenable +EXPORT_SYMBOL drivers/iio/industrialio 0x3fee2719 iio_device_register +EXPORT_SYMBOL drivers/iio/industrialio 0x5be62756 iio_buffer_init +EXPORT_SYMBOL drivers/iio/industrialio 0x6373c513 iio_trigger_notify_done +EXPORT_SYMBOL drivers/iio/industrialio 0x825c4f91 iio_trigger_free +EXPORT_SYMBOL drivers/iio/industrialio 0x8425b32e iio_trigger_poll_chained +EXPORT_SYMBOL drivers/iio/industrialio 0x93188be8 iio_push_event +EXPORT_SYMBOL drivers/iio/industrialio 0xbcd31a29 iio_trigger_unregister +EXPORT_SYMBOL drivers/iio/industrialio 0xc61b43e8 iio_bus_type +EXPORT_SYMBOL drivers/iio/industrialio 0xd88ee38f iio_trigger_poll +EXPORT_SYMBOL drivers/iio/industrialio 0xdbfd1a67 iio_trigger_alloc +EXPORT_SYMBOL drivers/iio/industrialio 0xde38e919 iio_triggered_buffer_predisable +EXPORT_SYMBOL drivers/iio/industrialio 0xdf76bbeb iio_pollfunc_store_time +EXPORT_SYMBOL drivers/iio/industrialio-triggered-buffer 0x5994db32 iio_triggered_buffer_setup +EXPORT_SYMBOL drivers/iio/industrialio-triggered-buffer 0xe600e0a2 iio_triggered_buffer_cleanup +EXPORT_SYMBOL drivers/iio/kfifo_buf 0x0a892bed devm_iio_kfifo_free +EXPORT_SYMBOL drivers/iio/kfifo_buf 0x7bc5e061 devm_iio_kfifo_allocate +EXPORT_SYMBOL drivers/iio/kfifo_buf 0xa5bf5748 iio_kfifo_free +EXPORT_SYMBOL drivers/iio/kfifo_buf 0xedfe1ebf iio_kfifo_allocate +EXPORT_SYMBOL drivers/iio/magnetometer/st_magn 0x298fae80 st_magn_common_probe +EXPORT_SYMBOL drivers/iio/magnetometer/st_magn 0x3e15f6cf st_magn_common_remove +EXPORT_SYMBOL drivers/iio/pressure/ms5611_core 0x934185c8 ms5611_probe +EXPORT_SYMBOL drivers/iio/pressure/st_pressure 0x33f68613 st_press_common_remove +EXPORT_SYMBOL drivers/iio/pressure/st_pressure 0xc360f23c st_press_common_probe +EXPORT_SYMBOL drivers/input/gameport/gameport 0x07ddb150 gameport_set_phys +EXPORT_SYMBOL drivers/input/gameport/gameport 0x5f480bdd gameport_start_polling +EXPORT_SYMBOL drivers/input/gameport/gameport 0x64e2e943 gameport_close +EXPORT_SYMBOL drivers/input/gameport/gameport 0x7b474c44 __gameport_register_port +EXPORT_SYMBOL drivers/input/gameport/gameport 0x88ad2825 gameport_stop_polling +EXPORT_SYMBOL drivers/input/gameport/gameport 0xa95b53af __gameport_register_driver +EXPORT_SYMBOL drivers/input/gameport/gameport 0xad21b9d4 gameport_open +EXPORT_SYMBOL drivers/input/gameport/gameport 0xbe9b2145 gameport_unregister_port +EXPORT_SYMBOL drivers/input/gameport/gameport 0xc25b6070 gameport_unregister_driver +EXPORT_SYMBOL drivers/input/input-polldev 0x0483e346 input_register_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0x128aed25 input_allocate_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0x3182c1eb input_unregister_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0x9388a9d1 input_free_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0xe1626ed3 devm_input_allocate_polled_device +EXPORT_SYMBOL drivers/input/matrix-keymap 0x1f330ff2 matrix_keypad_build_keymap +EXPORT_SYMBOL drivers/input/misc/ad714x 0x03c6e4ef ad714x_probe +EXPORT_SYMBOL drivers/input/misc/ad714x 0x0d4a4886 ad714x_enable +EXPORT_SYMBOL drivers/input/misc/ad714x 0x2a873609 ad714x_disable +EXPORT_SYMBOL drivers/input/misc/ad714x 0xa7ce96d4 ad714x_remove +EXPORT_SYMBOL drivers/input/misc/cma3000_d0x 0x21938b3f 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/sparse-keymap 0x11929e87 sparse_keymap_entry_from_scancode +EXPORT_SYMBOL drivers/input/sparse-keymap 0x2545e61f sparse_keymap_entry_from_keycode +EXPORT_SYMBOL drivers/input/sparse-keymap 0x64a598ec sparse_keymap_report_event +EXPORT_SYMBOL drivers/input/sparse-keymap 0xce8f88f6 sparse_keymap_setup +EXPORT_SYMBOL drivers/input/sparse-keymap 0xe1fb2690 sparse_keymap_free +EXPORT_SYMBOL drivers/input/sparse-keymap 0xe3f35162 sparse_keymap_report_entry +EXPORT_SYMBOL drivers/input/touchscreen/ad7879 0x97f83edf ad7879_remove +EXPORT_SYMBOL drivers/input/touchscreen/ad7879 0x9bdfc4c9 ad7879_pm_ops +EXPORT_SYMBOL drivers/input/touchscreen/ad7879 0xecba32e9 ad7879_probe +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x04403fcf unregister_capi_driver +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x14f2aa5a capi20_get_version +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x2b8eab1f capilib_free_ncci +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x2baa6586 capilib_new_ncci +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x31c24aa4 capi20_isinstalled +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x407d02b6 detach_capi_ctr +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x45827859 attach_capi_ctr +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x4b2cf934 capi_ctr_handle_message +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x50b33ca4 capi_cmsg2message +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x5574602d capi_ctr_ready +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x6057c6f3 capi_message2cmsg +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x62e32d43 capilib_data_b3_conf +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x71e8d5ba capilib_data_b3_req +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x7a33596c capi20_get_serial +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x7e6f1307 capi20_get_manufacturer +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x8f699913 capilib_release +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x9f823278 register_capi_driver +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xa7c4fd6c capi_message2str +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xaa165d27 capilib_release_appl +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xad309735 capi_ctr_suspend_output +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xb19fda8d capi_cmd2str +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xb32d25a8 capi20_release +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xb60e5e5f capi_cmsg_header +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xc10fe128 cdebbuf_free +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xc42d9ec1 capi20_manufacturer +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xdd7f3066 capi20_put_message +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xdfbeb45b capi_ctr_down +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xe19a11ac capi20_get_profile +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xe8ad9bd1 capi_cmsg2str +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xebbbd50d capi_ctr_resume_output +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xfef8a9bf capi20_register +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x07f4f2ce hisax_unregister +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x148f0c99 FsmFree +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x6fe1ca04 FsmDelTimer +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x93a64734 FsmChangeState +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x9df0cd27 FsmEvent +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0x9f987c85 FsmRestartTimer +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0xa1bc94b9 FsmInitTimer +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0xcc9aa7f9 hisax_init_pcmcia +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0xee93522c hisax_register +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0xf0a16657 FsmNew +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0xfc27303b HiSax_closecard +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0x0620a40b isdn_ppp_unregister_compressor +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0x454a64a1 register_isdn +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0xa9230453 isdn_ppp_register_compressor +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0xfa06820f isdn_register_divert +EXPORT_SYMBOL drivers/isdn/i4l/isdnhdlc 0x3b71e4fc isdnhdlc_decode +EXPORT_SYMBOL drivers/isdn/i4l/isdnhdlc 0x59cc8a7e isdnhdlc_out_init +EXPORT_SYMBOL drivers/isdn/i4l/isdnhdlc 0x8ee38862 isdnhdlc_rcv_init +EXPORT_SYMBOL drivers/isdn/i4l/isdnhdlc 0xfd9d4c09 isdnhdlc_encode +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x06fcebef mISDN_FsmDelTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x09077607 mISDNDevName4ch +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x0baceedc recv_Echannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x1cf196fb mISDN_FsmAddTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x2348cc3c mISDN_FsmFree +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x25390e6c mISDN_unregister_device +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x29fa5b43 mISDN_FsmRestartTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x2cd566cc mISDN_clear_bchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x2e6b17d6 bchannel_senddata +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x36ec1940 mISDN_FsmInitTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x371471c1 get_next_dframe +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x3ab00b9d mISDN_register_device +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x4b69c3ca mISDN_freedchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x50c2230c mISDN_FsmChangeState +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x5166ae17 mISDN_register_Bprotocol +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x588886a6 l1_event +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x58cbd9ca mISDN_ctrl_bchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x6883243d recv_Dchannel_skb +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x6bf60995 recv_Dchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x78ae9022 get_next_bframe +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x89b1b756 create_l1 +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x8a4e99fb mISDN_clock_update +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x9476859b queue_ch_frame +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x9a6a34f0 recv_Bchannel_skb +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x9cf43352 mISDN_freebchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xa12fe55b mISDN_initdchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xbbac6ccf bchannel_get_rxbuf +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xbe8a2450 dchannel_senddata +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xc3401729 mISDN_register_clock +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xd2847b30 mISDN_initbchannel +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 0xd849e4a0 mISDN_unregister_Bprotocol +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xe8f617eb mISDN_unregister_clock +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xf83c69ee recv_Bchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xf9e7832f mISDN_FsmNew +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_dsp 0x01087af0 mISDN_dsp_element_unregister +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_dsp 0x60721da7 dsp_audio_law_to_s32 +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_dsp 0xa215f1b2 dsp_audio_s16_to_law +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_dsp 0xb98308d8 mISDN_dsp_element_register +EXPORT_SYMBOL drivers/md/bcache/bcache 0x10dc0d06 bch_bset_insert +EXPORT_SYMBOL drivers/md/bcache/bcache 0x21c7828c bch_btree_sort_partial +EXPORT_SYMBOL drivers/md/bcache/bcache 0x3361c614 bch_bset_sort_state_init +EXPORT_SYMBOL drivers/md/bcache/bcache 0x66d28e22 bch_btree_iter_init +EXPORT_SYMBOL drivers/md/bcache/bcache 0x6969b5d8 bch_bset_init_next +EXPORT_SYMBOL drivers/md/bcache/bcache 0x7b55ca4f bch_bset_fix_invalidated_key +EXPORT_SYMBOL drivers/md/bcache/bcache 0x85b50846 closure_sub +EXPORT_SYMBOL drivers/md/bcache/bcache 0x915d7ef8 closure_put +EXPORT_SYMBOL drivers/md/bcache/bcache 0x92116a47 closure_sync +EXPORT_SYMBOL drivers/md/bcache/bcache 0x9e8b3cee bch_btree_keys_alloc +EXPORT_SYMBOL drivers/md/bcache/bcache 0xab2d2b84 bch_btree_insert_key +EXPORT_SYMBOL drivers/md/bcache/bcache 0xad29a6f5 bch_bset_build_written_tree +EXPORT_SYMBOL drivers/md/bcache/bcache 0xaec09a2b bch_bkey_try_merge +EXPORT_SYMBOL drivers/md/bcache/bcache 0xaf77343c bch_btree_keys_free +EXPORT_SYMBOL drivers/md/bcache/bcache 0xc04554f7 bch_btree_iter_next +EXPORT_SYMBOL drivers/md/bcache/bcache 0xca580595 bch_btree_keys_init +EXPORT_SYMBOL drivers/md/bcache/bcache 0xcfeb8fa8 closure_wait +EXPORT_SYMBOL drivers/md/bcache/bcache 0xe3c17af1 __closure_wake_up +EXPORT_SYMBOL drivers/md/bcache/bcache 0xe47e0829 __bch_bset_search +EXPORT_SYMBOL drivers/md/bcache/bcache 0xf8fd4bac bch_btree_sort_lazy +EXPORT_SYMBOL drivers/md/dm-bufio 0x72f07bf4 dm_bufio_set_minimum_buffers +EXPORT_SYMBOL drivers/md/dm-bufio 0xa7978f56 dm_bufio_forget +EXPORT_SYMBOL drivers/md/dm-log 0x03dee4fb dm_dirty_log_type_register +EXPORT_SYMBOL drivers/md/dm-log 0x1b1eb584 dm_dirty_log_type_unregister +EXPORT_SYMBOL drivers/md/dm-log 0x90ba3187 dm_dirty_log_create +EXPORT_SYMBOL drivers/md/dm-log 0xd7b37e25 dm_dirty_log_destroy +EXPORT_SYMBOL drivers/md/dm-snapshot 0x352ed8f6 dm_snap_origin +EXPORT_SYMBOL drivers/md/dm-snapshot 0x593e1a2d dm_exception_store_create +EXPORT_SYMBOL drivers/md/dm-snapshot 0xb3e62ea3 dm_exception_store_destroy +EXPORT_SYMBOL drivers/md/dm-snapshot 0xc49c3236 dm_snap_cow +EXPORT_SYMBOL drivers/md/dm-snapshot 0xc99da628 dm_exception_store_type_register +EXPORT_SYMBOL drivers/md/dm-snapshot 0xe877509e dm_exception_store_type_unregister +EXPORT_SYMBOL drivers/md/raid456 0x6f667231 raid5_set_cache_size +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x14a67327 flexcop_device_kfree +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x1514c9b7 flexcop_pid_feed_control +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x30140b2e flexcop_sram_ctrl +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x65d160c4 flexcop_sram_set_dest +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x75adc43a flexcop_device_initialize +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0x8416b00f flexcop_pass_dmx_packets +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xa1c27df8 flexcop_i2c_request +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xa9169ed6 flexcop_device_kmalloc +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xb592fced flexcop_pass_dmx_data +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xbbd2210b flexcop_device_exit +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xc4e147b9 flexcop_wan_set_speed +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xe0311071 flexcop_dump_reg +EXPORT_SYMBOL drivers/media/common/b2c2/b2c2-flexcop 0xf7b0c9bc flexcop_eeprom_check_mac_addr +EXPORT_SYMBOL drivers/media/common/cx2341x 0x1ca0c084 cx2341x_log_status +EXPORT_SYMBOL drivers/media/common/cx2341x 0x1d1beaa6 cx2341x_handler_init +EXPORT_SYMBOL drivers/media/common/cx2341x 0x2f25eee2 cx2341x_update +EXPORT_SYMBOL drivers/media/common/cx2341x 0x30cb4cd7 cx2341x_ext_ctrls +EXPORT_SYMBOL drivers/media/common/cx2341x 0x3db8be82 cx2341x_ctrl_query +EXPORT_SYMBOL drivers/media/common/cx2341x 0x40cd588d cx2341x_handler_setup +EXPORT_SYMBOL drivers/media/common/cx2341x 0x471abdcb cx2341x_handler_set_busy +EXPORT_SYMBOL drivers/media/common/cx2341x 0xc184ec1e cx2341x_ctrl_get_menu +EXPORT_SYMBOL drivers/media/common/cx2341x 0xcf76ce95 cx2341x_fill_defaults +EXPORT_SYMBOL drivers/media/common/cx2341x 0xcf8b77a4 cx2341x_mpeg_ctrls +EXPORT_SYMBOL drivers/media/common/cx2341x 0xef26ce07 cx2341x_handler_set_50hz +EXPORT_SYMBOL drivers/media/common/cypress_firmware 0x99caf979 cypress_load_firmware +EXPORT_SYMBOL drivers/media/common/tveeprom 0x6c33639e tveeprom_hauppauge_analog +EXPORT_SYMBOL drivers/media/common/tveeprom 0x7bb7df3d tveeprom_read +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x0fda1887 dvb_dmx_swfilter +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x17163202 dvb_generic_ioctl +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x187d3dd9 dvb_ca_en50221_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x1d9dff94 dvb_net_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x24802863 dvb_net_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x269ea562 dvb_register_frontend +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x2b300e5e dvb_dmx_swfilter_204 +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x344908d4 dvb_ringbuffer_free +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x3656cb10 dvb_ringbuffer_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x3e2194b4 dvb_frontend_reinitialise +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x4b6cea43 dvb_dmx_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x528f8948 dvb_ca_en50221_camchange_irq +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x5c00a6b3 dvb_frontend_detach +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x629f9d31 dvb_ringbuffer_read_user +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x72180695 dvb_ringbuffer_flush_spinlock_wakeup +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x740693fc dvb_ca_en50221_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x74a5a698 dvb_filter_pes2ts_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x7b6bc21e dvb_dmxdev_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x80e3832d dvb_filter_get_ac3info +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x85d5d22e dvb_dmx_release +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x8633f37b dvb_ringbuffer_flush +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x93f5e990 dvb_register_device +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x9850cb88 dvb_ringbuffer_write_user +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x99a858e6 dvb_ca_en50221_camready_irq +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0x9c19040b dvb_ringbuffer_write +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xac4ca1b0 intlog2 +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xb37fdfc9 dvb_dmx_swfilter_packets +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xb81ef2c4 dvb_frontend_suspend +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xc512e942 dvb_generic_open +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xc7fcd7ee dvb_dmx_swfilter_raw +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xc9bab779 dvb_unregister_adapter +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xdb1a8bd4 dvb_ringbuffer_empty +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xdc094c39 dvb_ringbuffer_avail +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xdf4e0a2d dvb_frontend_resume +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xe005f225 dvb_register_adapter +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xe41be14c dvb_unregister_device +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xe5ae8707 intlog10 +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xe7ab88dd dvb_dmxdev_init +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xede62da9 dvb_unregister_frontend +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xf3224662 dvb_ca_en50221_frda_irq +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xf48116c6 dvb_ringbuffer_read +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xf821d629 dvb_frontend_sleep_until +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xf826deb0 dvb_filter_pes2ts +EXPORT_SYMBOL drivers/media/dvb-core/dvb-core 0xfbc3f462 dvb_generic_release +EXPORT_SYMBOL drivers/media/dvb-frontends/a8293 0x3fae4d7a a8293_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/af9013 0xe6a5d2f7 af9013_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/atbm8830 0x54b5d135 atbm8830_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x3243321b au8522_analog_i2c_gate_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x56a67f2c au8522_init +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x6a96bced au8522_get_state +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x8679f99e au8522_writereg +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x92a28298 au8522_readreg +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0x9fa823e4 au8522_led_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0xbcfe7b64 au8522_i2c_gate_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0xe2dac12c au8522_release_state +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_common 0xe4d8e678 au8522_sleep +EXPORT_SYMBOL drivers/media/dvb-frontends/au8522_dig 0xef5ddb6d au8522_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/bcm3510 0x0e1dc49d bcm3510_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx22702 0xab2ec904 cx22702_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24113 0x1582476d cx24113_agc_callback +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24113 0x837f1b29 cx24113_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24116 0x5312fc80 cx24116_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24120 0x7547cf22 cx24120_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24123 0x0658483f cx24123_get_tuner_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/cx24123 0xfe976578 cx24123_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/cxd2820r 0x286ba5a5 cxd2820r_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0x48680274 dib0070_wbd_offset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0x58dc7451 dib0070_get_rf_output +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0xc705074b dib0070_set_rf_output +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0xd38e2abb dib0070_ctrl_agc_filter +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0070 0xdcc674a7 dib0070_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x0f0d3d36 dib0090_set_tune_state +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x1322bcca dib0090_get_wbd_target +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x20f581db dib0090_update_rframp_7090 +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x40e0efb3 dib0090_pwm_gain_reset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x5faaa1cb dib0090_get_tune_state +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x91efa9d8 dib0090_gain_control +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x953ffff6 dib0090_get_wbd_offset +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0x9c2c55a6 dib0090_set_switch +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xa4e0cad0 dib0090_dcc_freq +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xb64637f7 dib0090_get_current_gain +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xc3065d22 dib0090_fw_register +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xd1e39489 dib0090_register +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xe55d2e5a dib0090_set_dc_servo +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xf5fb2b1c dib0090_set_vga +EXPORT_SYMBOL drivers/media/dvb-frontends/dib0090 0xfe99bb1c dib0090_update_tuning_table_7090 +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mb 0x4ad81f2b dib3000mb_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x1365c75e dib3000mc_pid_parse +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x33d854cd dib3000mc_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0x4dee7e51 dib3000mc_get_tuner_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0xb66d5e63 dib3000mc_i2c_enumeration +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0xc03f52ce dib3000mc_pid_control +EXPORT_SYMBOL drivers/media/dvb-frontends/dib3000mc 0xcd7ab0cd dib3000mc_set_config +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0x47f94af9 dib7000m_pid_filter +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0x79022424 dib7000m_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0xab516fc7 dib7000m_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000m 0xc0a04bb6 dib7000m_get_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dib7000p 0xcc244fff dib7000p_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dib8000 0xfdc8b5d5 dib8000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0x0c0b9908 dibx000_reset_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0x97e0afb0 dibx000_exit_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0xa40090b3 dibx000_init_i2c_master +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0xad3ad91c systime +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0xdb1b1a54 dibx000_i2c_set_speed +EXPORT_SYMBOL drivers/media/dvb-frontends/dibx000_common 0xe07623a4 dibx000_get_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/drx39xyj/drx39xyj 0x6899f4e5 drx39xxj_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/drxd 0x4d6a50ea drxd_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/drxk 0xd234700e drxk_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ds3000 0x43c7ed18 ds3000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/dvb-pll 0xf0d3aa8c dvb_pll_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ec100 0x22669ea4 ec100_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/isl6421 0x336cad5d isl6421_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/isl6423 0x4945b848 isl6423_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/itd1000 0xf78eee11 itd1000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ix2505v 0xd37e70aa ix2505v_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lg2160 0xf279355c lg2160_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgdt3305 0x49f78e84 lgdt3305_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgdt3306a 0x83bb3a60 lgdt3306a_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgdt330x 0xc99b3dec lgdt330x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lgs8gxx 0x043b8324 lgs8gxx_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lnbp21 0xed5e1a60 lnbh24_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lnbp21 0xef46cfd8 lnbp21_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/lnbp22 0xc206cc61 lnbp22_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/m88ds3103 0x5d3d14b3 m88ds3103_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/m88ds3103 0xbb6eff46 m88ds3103_get_agc_pwm +EXPORT_SYMBOL drivers/media/dvb-frontends/m88rs2000 0x9de4e499 m88rs2000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mb86a20s 0x72de015a mb86a20s_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mt312 0x503ad476 mt312_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/mt352 0xf39ae61a mt352_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/nxt200x 0x3791b2c6 nxt200x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/nxt6000 0x22687036 nxt6000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1409 0x2ab1844e s5h1409_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1411 0x2dfc490d s5h1411_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1420 0x1d1bb893 s5h1420_get_tuner_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb-frontends/s5h1420 0x5b742fa5 s5h1420_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/s921 0x3f4d6098 s921_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/si2165 0xc45d03d4 si2165_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/si21xx 0x473e7585 si21xx_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stb0899 0x49db767b stb0899_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stb6000 0x47b3b2a8 stb6000_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stb6100 0x6f42d1e8 stb6100_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0288 0xc864d59e stv0288_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0297 0x943d3397 stv0297_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0299 0xe10bba2f stv0299_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv0900 0x8a2f7fe4 stv0900_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv090x 0xe0b0d6c5 stv090x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv6110 0x355f6e0b stv6110_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/stv6110x 0x6d7b707a stv6110x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10023 0x53c15df9 tda10023_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10048 0x378069e5 tda10048_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda1004x 0xeda8b73e tda10045_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda1004x 0xff562474 tda10046_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10071 0x443b098a tda10071_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda10086 0x10e4c708 tda10086_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/tda826x 0x62d720c4 tda826x_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/ts2020 0x4a7ac97c ts2020_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/zl10039 0x16c57c78 zl10039_attach +EXPORT_SYMBOL drivers/media/dvb-frontends/zl10353 0xa49e6c36 zl10353_attach +EXPORT_SYMBOL drivers/media/pci/ttpci/ttpci-eeprom 0xc3e4c127 ttpci_eeprom_decode_mac +EXPORT_SYMBOL drivers/media/pci/ttpci/ttpci-eeprom 0xe311ddb9 ttpci_eeprom_parse_mac +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x065655d7 soc_camera_apply_board_flags +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x7cb9a307 soc_camera_host_register +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0x8c38b2e2 soc_camera_host_unregister +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0xad78258d soc_camera_power_off +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0xbb8de1fd soc_camera_power_on +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0xf1f8a05d soc_camera_xlate_by_fourcc +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_camera 0xffbd61d6 soc_camera_power_init +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0x25c52d97 soc_mbus_samples_per_pixel +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0x2863728e soc_mbus_image_size +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0x29f5a98b soc_mbus_get_fmtdesc +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0x5f3e3558 soc_mbus_bytes_per_line +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0xc8b28da5 soc_mbus_config_compatible +EXPORT_SYMBOL drivers/media/platform/soc_camera/soc_mediabus 0xdc5dafe2 soc_mbus_find_fmtdesc +EXPORT_SYMBOL drivers/media/radio/tea575x 0x3160d10c snd_tea575x_enum_freq_bands +EXPORT_SYMBOL drivers/media/radio/tea575x 0x55aeaee2 snd_tea575x_exit +EXPORT_SYMBOL drivers/media/radio/tea575x 0x5b784c7e snd_tea575x_hw_init +EXPORT_SYMBOL drivers/media/radio/tea575x 0xa6ce380d snd_tea575x_init +EXPORT_SYMBOL drivers/media/radio/tea575x 0xaca5ab9d snd_tea575x_s_hw_freq_seek +EXPORT_SYMBOL drivers/media/radio/tea575x 0xb8e4decd snd_tea575x_g_tuner +EXPORT_SYMBOL drivers/media/radio/tea575x 0xdb4788e7 snd_tea575x_set_freq +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x04dca738 lirc_unregister_driver +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x1acfcdd5 lirc_dev_fop_close +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x2cb13386 lirc_dev_fop_open +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x46f42140 lirc_get_pdata +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x59783ebd lirc_dev_fop_read +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x6e4f85ac lirc_register_driver +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x7bf1c899 lirc_dev_fop_ioctl +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0xa19d4dd9 lirc_dev_fop_write +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0xcbb2c5be lirc_dev_fop_poll +EXPORT_SYMBOL drivers/media/rc/rc-core 0xf25abb90 ir_raw_handler_register +EXPORT_SYMBOL drivers/media/rc/rc-core 0xf73798e7 ir_raw_handler_unregister +EXPORT_SYMBOL drivers/media/tuners/fc0011 0x7359de67 fc0011_attach +EXPORT_SYMBOL drivers/media/tuners/fc0012 0xc37158e9 fc0012_attach +EXPORT_SYMBOL drivers/media/tuners/fc0013 0x24abbcaf fc0013_rc_cal_reset +EXPORT_SYMBOL drivers/media/tuners/fc0013 0xe5c7456d fc0013_attach +EXPORT_SYMBOL drivers/media/tuners/fc0013 0xf4d69841 fc0013_rc_cal_add +EXPORT_SYMBOL drivers/media/tuners/max2165 0xfc24737a max2165_attach +EXPORT_SYMBOL drivers/media/tuners/mc44s803 0x65dc4897 mc44s803_attach +EXPORT_SYMBOL drivers/media/tuners/mt2060 0x4d625e16 mt2060_attach +EXPORT_SYMBOL drivers/media/tuners/mt2266 0x6dc1fecc mt2266_attach +EXPORT_SYMBOL drivers/media/tuners/mxl5005s 0x5e1f5279 mxl5005s_attach +EXPORT_SYMBOL drivers/media/tuners/qt1010 0xd87ca9e4 qt1010_attach +EXPORT_SYMBOL drivers/media/tuners/tda18218 0xc1f79729 tda18218_attach +EXPORT_SYMBOL drivers/media/tuners/tuner-types 0x0cb4b189 tuners +EXPORT_SYMBOL drivers/media/tuners/tuner-types 0xc2821775 tuner_count +EXPORT_SYMBOL drivers/media/tuners/tuner-xc2028 0x9444fe81 xc2028_attach +EXPORT_SYMBOL drivers/media/tuners/xc4000 0xce189eb8 xc4000_attach +EXPORT_SYMBOL drivers/media/tuners/xc5000 0x4a7524a9 xc5000_attach +EXPORT_SYMBOL drivers/media/usb/cx231xx/cx231xx 0x160c73b3 cx231xx_register_extension +EXPORT_SYMBOL drivers/media/usb/cx231xx/cx231xx 0x6581a3a2 cx231xx_unregister_extension +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x181c683d dvb_usbv2_probe +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x32aa8140 dvb_usbv2_generic_write_locked +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x62ef7188 dvb_usbv2_disconnect +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0x689bb1c3 dvb_usbv2_generic_rw +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0xa617ed18 dvb_usbv2_generic_write +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0xc3ce99f2 dvb_usbv2_reset_resume +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0xc8eac7d1 dvb_usbv2_suspend +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0xcc9d050c dvb_usbv2_generic_rw_locked +EXPORT_SYMBOL drivers/media/usb/dvb-usb-v2/dvb_usb_v2 0xefd65918 dvb_usbv2_resume +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x0c6a774a dvb_usb_generic_rw +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x4f8d5ef7 usb_cypress_load_firmware +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x5479c540 dvb_usb_device_init +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0x68b0be90 dvb_usb_device_exit +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0xe29406c6 dvb_usb_generic_write +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0xec88a33d dvb_usb_nec_rc_key_to_event +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb 0xf2210a83 dvb_usb_get_hexline +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-af9005-remote 0x13e247e0 rc_map_af9005_table +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-af9005-remote 0x5c365846 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 0x23ff60be dibusb_rc_query +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x46ce7670 dibusb_read_eeprom_byte +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x514863fb dibusb_power_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x5ec172db dibusb_dib3000mc_tuner_attach +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x6635cd76 dibusb_streaming_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0x909b8e62 dibusb2_0_streaming_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xa8048e86 dibusb_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xa8b13f8c dibusb_dib3000mc_frontend_attach +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xb05e6795 dibusb2_0_power_ctrl +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xb47559e0 rc_map_dibusb_table +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xb5bdd695 dibusb_pid_filter +EXPORT_SYMBOL drivers/media/usb/dvb-usb/dvb-usb-dibusb-common 0xd9efa457 dibusb_i2c_algo +EXPORT_SYMBOL drivers/media/usb/em28xx/em28xx 0xc2f73d98 em28xx_register_extension +EXPORT_SYMBOL drivers/media/usb/em28xx/em28xx 0xef026392 em28xx_unregister_extension +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x184ff096 go7007_read_addr +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x1ebb8114 go7007_register_encoder +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x2f3d165d go7007_snd_init +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x410528d8 go7007_parse_video_stream +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x74e3ff7f go7007_alloc +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x7b30f8ec go7007_snd_remove +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0x945d9827 go7007_update_board +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0xb203577b go7007_boot_encoder +EXPORT_SYMBOL drivers/media/usb/go7007/go7007 0xedd1686b go7007_read_interrupt +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x376e31dc gspca_disconnect +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x519cd1f1 gspca_resume +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x63278cc6 gspca_dev_probe2 +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x7a1a008d gspca_frame_add +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x94288c2e gspca_suspend +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0x9670af2c gspca_debug +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0xf45d0471 gspca_expo_autogain +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0xf4ef9fb2 gspca_coarse_grained_expo_autogain +EXPORT_SYMBOL drivers/media/usb/gspca/gspca_main 0xfb23a486 gspca_dev_probe +EXPORT_SYMBOL drivers/media/usb/tm6000/tm6000 0x361109f1 tm6000_init_digital_mode +EXPORT_SYMBOL drivers/media/usb/tm6000/tm6000 0x59785b87 tm6000_unregister_extension +EXPORT_SYMBOL drivers/media/usb/tm6000/tm6000 0x8c83d5eb tm6000_register_extension +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-common 0xabe27502 v4l2_ctrl_query_fill +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-mem2mem 0x2ee5c788 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 0xae2fc21f v4l2_m2m_job_finish +EXPORT_SYMBOL drivers/media/v4l2-core/v4l2-mem2mem 0xc247c669 v4l2_m2m_mmap +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0x4c8999da videobuf_dvb_register_bus +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0x68ac5bbe videobuf_dvb_find_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0x98005fe7 videobuf_dvb_unregister_bus +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0xa578275d videobuf_dvb_dealloc_frontends +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0xaa6314d7 videobuf_dvb_alloc_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf-dvb 0xd5d7ba37 videobuf_dvb_get_frontend +EXPORT_SYMBOL drivers/media/v4l2-core/videobuf2-core 0xa597443b vb2_querybuf +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x0170bb5b v4l2_async_register_subdev +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x04697fb1 v4l2_ctrl_auto_cluster +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x053479f5 v4l2_try_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x0614dd5a v4l2_video_std_frame_period +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x0b0f3a5b v4l2_g_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x0cf798df video_device_release_empty +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x0e9cd0a5 v4l2_ctrl_new_std_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x1121bf85 v4l2_ctrl_handler_init_class +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x123959a1 v4l2_type_names +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x15497ac1 v4l2_s_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x16244fe5 v4l2_prio_check +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x1b5c0864 v4l2_ctrl_merge +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x2342f1ae v4l2_prio_open +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x23ed9d16 v4l2_subdev_s_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x259102ac video_devdata +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x261266ef v4l2_ctrl_g_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x2c48ea28 v4l2_ctrl_poll +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x303223a1 v4l2_ctrl_grab +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x3093293f v4l2_ctrl_new_std +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x34447e95 video_device_release +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x36847d11 v4l2_ctrl_get_int_menu +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 0x3c8445d6 v4l2_ctrl_sub_ev_ops +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x3d98b087 v4l2_subdev_init +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x40423e0a v4l2_querymenu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x4366ca71 v4l2_queryctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x45a44c24 v4l2_ctrl_fill +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x45baea2b v4l2_of_parse_link +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x47016cd7 video_usercopy +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x495426ee v4l2_ctrl_get_name +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x4b77c88d v4l2_ctrl_replace +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x508adf00 v4l2_subdev_g_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x50f1b939 v4l2_ctrl_radio_filter +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x5269d937 video_unregister_device +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x528551eb v4l2_ctrl_cluster +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x5dd2b278 __v4l2_clk_register_fixed +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x609deff3 v4l2_of_alloc_parse_endpoint +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x61fc46c2 v4l2_ctrl_new_custom +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x658f43d0 v4l2_subdev_g_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x65e9555f v4l2_ctrl_find +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x69f79a1d v4l2_of_parse_endpoint +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x72359de4 __v4l2_ctrl_s_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x76045ae7 v4l2_ctrl_handler_setup +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x77f00ab3 v4l2_of_put_link +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x7811fc49 v4l2_clk_unregister_fixed +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x7918c708 __v4l2_ctrl_s_ctrl_string +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x792da4cb v4l2_clk_get_rate +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x7a3cd015 v4l2_ctrl_get_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x7b5a11ac v4l2_ctrl_subdev_subscribe_event +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x8106095a v4l2_prio_max +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x84801647 v4l2_ctrl_subdev_log_status +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x86fb134b v4l2_async_notifier_unregister +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x8772c1aa v4l2_subdev_try_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x8f4a7904 v4l2_clk_register +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x9ad32e60 v4l2_clk_put +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x9be8a789 v4l2_ctrl_activate +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0x9eaecefb v4l2_ctrl_handler_log_status +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xa2d07700 v4l2_subdev_querymenu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xa7593db8 v4l2_of_free_endpoint +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xa7ddc154 video_ioctl2 +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xa7f9211d __v4l2_ctrl_modify_range +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xaf97707c v4l2_clk_get +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb6b02ef1 v4l2_ctrl_subscribe_event +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb77b0159 v4l2_prio_init +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb8cdebf2 v4l2_ctrl_log_status +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xb8f5faea v4l2_subdev_s_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xbb0a29fe v4l2_ctrl_add_handler +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xbc5671dc v4l_printk_ioctl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xc28e6b1e v4l2_clk_unregister +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xca76c27a __video_register_device +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xcda04a5b v4l2_prio_close +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xd2441a2c v4l2_s_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xd3dcb1e5 __v4l2_ctrl_s_ctrl_int64 +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xdcfa9c45 v4l2_ctrl_new_std_menu_items +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xddbdff11 v4l2_async_unregister_subdev +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xdfb46120 v4l2_clk_set_rate +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe1fa0c8a v4l2_g_ext_ctrls +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe23c678a v4l2_async_notifier_register +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe2b92059 v4l2_video_std_construct +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe4b3ea70 v4l2_ctrl_g_ctrl_int64 +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xe80b4c97 v4l2_subdev_queryctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xed05bb41 v4l2_ctrl_new_int_menu +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xedbb7e0e v4l2_clk_enable +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf3251e7b v4l2_norm_to_name +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf3f028bf v4l2_ctrl_notify +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xf76c05b8 video_device_alloc +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xfc3a40dc v4l2_clk_disable +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xfe235110 v4l2_ctrl_handler_free +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xfe8d94e2 v4l2_query_ext_ctrl +EXPORT_SYMBOL drivers/media/v4l2-core/videodev 0xffbb3c25 v4l2_ctrl_add_ctrl +EXPORT_SYMBOL drivers/memstick/core/memstick 0x0842fbba memstick_suspend_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x094e4647 memstick_alloc_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x1b7c50bd memstick_init_req +EXPORT_SYMBOL drivers/memstick/core/memstick 0x22682898 memstick_register_driver +EXPORT_SYMBOL drivers/memstick/core/memstick 0x2f52384f memstick_unregister_driver +EXPORT_SYMBOL drivers/memstick/core/memstick 0x50ec429a memstick_add_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x581fc88f memstick_new_req +EXPORT_SYMBOL drivers/memstick/core/memstick 0x6a5bd5cf memstick_remove_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x6bad9301 memstick_init_req_sg +EXPORT_SYMBOL drivers/memstick/core/memstick 0x7f5d77d9 memstick_resume_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x92832c42 memstick_set_rw_addr +EXPORT_SYMBOL drivers/memstick/core/memstick 0xcd2f02f1 memstick_next_req +EXPORT_SYMBOL drivers/memstick/core/memstick 0xea8e2f49 memstick_free_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0xfdadac03 memstick_detect_change +EXPORT_SYMBOL drivers/mfd/cros_ec 0x18ad5ccc cros_ec_remove +EXPORT_SYMBOL drivers/mfd/cros_ec 0x18dfaeff cros_ec_resume +EXPORT_SYMBOL drivers/mfd/cros_ec 0x521d6119 cros_ec_register +EXPORT_SYMBOL drivers/mfd/cros_ec 0xe2ce23f2 cros_ec_suspend +EXPORT_SYMBOL drivers/mfd/dln2 0x11a841c3 dln2_register_event_cb +EXPORT_SYMBOL drivers/mfd/dln2 0x817589eb dln2_unregister_event_cb +EXPORT_SYMBOL drivers/mfd/dln2 0xabe91149 dln2_transfer +EXPORT_SYMBOL drivers/mfd/htc-pasic3 0x1a9a2793 pasic3_write_register +EXPORT_SYMBOL drivers/mfd/htc-pasic3 0x9e473957 pasic3_read_register +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x16f84a98 mc13xxx_irq_status +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x59a26593 mc13xxx_reg_rmw +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x60d1a8ca mc13xxx_get_flags +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x6b680d3b mc13xxx_reg_read +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x79d92991 mc13xxx_irq_free +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x8218d5da mc13xxx_lock +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x90613fa8 mc13xxx_reg_write +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xab2009bc mc13xxx_irq_unmask +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xac314e6d mc13xxx_irq_mask +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xcd81950a mc13xxx_unlock +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xe8c310df mc13xxx_irq_request +EXPORT_SYMBOL drivers/mfd/tps6105x 0x3b516f70 tps6105x_get +EXPORT_SYMBOL drivers/mfd/tps6105x 0x4a9fb1a6 tps6105x_set +EXPORT_SYMBOL drivers/mfd/tps6105x 0x8f76ff48 tps6105x_mask_and_set +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-irq 0x4602ec57 wm8994_irq_init +EXPORT_SYMBOL drivers/mfd/wm8994-irq 0xed3d93dd wm8994_irq_exit +EXPORT_SYMBOL drivers/mfd/wm8994-regmap 0x11dfee28 wm8994_base_regmap_config +EXPORT_SYMBOL drivers/mfd/wm8994-regmap 0x599cf498 wm8994_regmap_config +EXPORT_SYMBOL drivers/mfd/wm8994-regmap 0x6ba64f01 wm8958_regmap_config +EXPORT_SYMBOL drivers/mfd/wm8994-regmap 0xf4c44d2c wm1811_regmap_config +EXPORT_SYMBOL drivers/misc/ad525x_dpot 0x45c2ced1 ad_dpot_probe +EXPORT_SYMBOL drivers/misc/ad525x_dpot 0xf203840c ad_dpot_remove +EXPORT_SYMBOL drivers/misc/altera-stapl/altera-stapl 0x8a05ed90 altera_init +EXPORT_SYMBOL drivers/misc/bcm2835_smi 0x727204cb bcm2835_smi_user_dma +EXPORT_SYMBOL drivers/misc/bcm2835_smi 0x72db83c4 bcm2835_smi_set_address +EXPORT_SYMBOL drivers/misc/bcm2835_smi 0x888e9635 bcm2835_smi_get +EXPORT_SYMBOL drivers/misc/bcm2835_smi 0xa00dc18f bcm2835_smi_write_buf +EXPORT_SYMBOL drivers/misc/bcm2835_smi 0xab7a4d1d bcm2835_smi_set_regs_from_settings +EXPORT_SYMBOL drivers/misc/bcm2835_smi 0xb33bd6cb bcm2835_smi_read_buf +EXPORT_SYMBOL drivers/misc/bcm2835_smi 0xf6720336 bcm2835_smi_get_settings_from_regs +EXPORT_SYMBOL drivers/misc/c2port/core 0x40d3cbec c2port_device_register +EXPORT_SYMBOL drivers/misc/c2port/core 0xf1480dc5 c2port_device_unregister +EXPORT_SYMBOL drivers/mmc/host/dw_mmc 0x02e4305b dw_mci_remove +EXPORT_SYMBOL drivers/mmc/host/dw_mmc 0x4b103bec dw_mci_resume +EXPORT_SYMBOL drivers/mmc/host/dw_mmc 0x53089b3c dw_mci_probe +EXPORT_SYMBOL drivers/mmc/host/dw_mmc 0xeb260ebb dw_mci_suspend +EXPORT_SYMBOL drivers/mmc/host/of_mmc_spi 0x3e9f2c22 mmc_spi_get_pdata +EXPORT_SYMBOL drivers/mmc/host/of_mmc_spi 0xd46d9c52 mmc_spi_put_pdata +EXPORT_SYMBOL drivers/mmc/host/tmio_mmc_core 0x076b4198 tmio_mmc_host_probe +EXPORT_SYMBOL drivers/mmc/host/tmio_mmc_core 0x378f2335 tmio_mmc_irq +EXPORT_SYMBOL drivers/mmc/host/tmio_mmc_core 0x4545585d tmio_mmc_host_remove +EXPORT_SYMBOL drivers/mmc/host/tmio_mmc_core 0x5baba26a tmio_mmc_host_runtime_resume +EXPORT_SYMBOL drivers/mmc/host/tmio_mmc_core 0x6d3deee9 tmio_mmc_sdcard_irq +EXPORT_SYMBOL drivers/mmc/host/tmio_mmc_core 0x7a6fd700 tmio_mmc_sdio_irq +EXPORT_SYMBOL drivers/mmc/host/tmio_mmc_core 0xafebb005 tmio_mmc_host_runtime_suspend +EXPORT_SYMBOL drivers/mmc/host/tmio_mmc_core 0xbe8e25f2 tmio_mmc_host_alloc +EXPORT_SYMBOL drivers/mmc/host/tmio_mmc_core 0xd34e87c7 tmio_mmc_host_free +EXPORT_SYMBOL drivers/mmc/host/tmio_mmc_core 0xf02062dd tmio_mmc_card_detect_irq +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x23d4fcc0 cfi_varsize_frob +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x2e8b2d3f cfi_send_gen_cmd +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x6bb4797b cfi_merge_status +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x6e8ae07e cfi_fixup +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0xc875985d cfi_build_cmd +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0xca88d814 cfi_read_pri +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0xddd512fb cfi_build_cmd_addr +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0xff9fa623 cfi_udelay +EXPORT_SYMBOL drivers/mtd/chips/gen_probe 0x631996d8 mtd_do_chip_probe +EXPORT_SYMBOL drivers/mtd/lpddr/lpddr_cmds 0xfab5d47c lpddr_cmdset +EXPORT_SYMBOL drivers/mtd/nand/denali 0x0e87022e denali_init +EXPORT_SYMBOL drivers/mtd/nand/denali 0x38025b10 denali_remove +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0x0eafc984 onenand_default_bbt +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0x12452773 onenand_addr +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0x91921f35 onenand_scan_bbt +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0x9a65cf92 flexonenand_region +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x56dd16c5 hdlcdrv_arbitrate +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x85e60c8e hdlcdrv_unregister +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x956a6f07 hdlcdrv_transmitter +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0xc183763e hdlcdrv_register +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0xeff655b5 hdlcdrv_receiver +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x039a6925 sirdev_put_instance +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x041478b9 sirdev_get_instance +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x0765589b sirdev_set_dtr_rts +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x39dac7e3 sirdev_write_complete +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x608178af irda_register_dongle +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x625ee8da sirdev_receive +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x6b86bf70 sirdev_set_dongle +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x951bdc2a sirdev_raw_read +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xaf574381 sirdev_raw_write +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xfec4a3df irda_unregister_dongle +EXPORT_SYMBOL drivers/net/phy/mdio-bitbang 0xa5f0b3d2 free_mdio_bitbang +EXPORT_SYMBOL drivers/net/phy/mdio-bitbang 0xb6ef9fb4 alloc_mdio_bitbang +EXPORT_SYMBOL drivers/net/phy/vitesse 0xc577c3be vsc824x_add_skew +EXPORT_SYMBOL drivers/net/ppp/pppox 0x72671c8c pppox_unbind_sock +EXPORT_SYMBOL drivers/net/ppp/pppox 0x75ffebde pppox_ioctl +EXPORT_SYMBOL drivers/net/ppp/pppox 0xae31a821 register_pppox_proto +EXPORT_SYMBOL drivers/net/ppp/pppox 0xe0ff7a18 unregister_pppox_proto +EXPORT_SYMBOL drivers/net/team/team 0x02297741 team_options_change_check +EXPORT_SYMBOL drivers/net/team/team 0x0495ade4 team_mode_register +EXPORT_SYMBOL drivers/net/team/team 0x13122e4b team_options_register +EXPORT_SYMBOL drivers/net/team/team 0x2fa10a2d team_mode_unregister +EXPORT_SYMBOL drivers/net/team/team 0x6e7a41a3 team_modeop_port_change_dev_addr +EXPORT_SYMBOL drivers/net/team/team 0x9a56f325 team_options_unregister +EXPORT_SYMBOL drivers/net/team/team 0xf253fd3a team_modeop_port_enter +EXPORT_SYMBOL drivers/net/team/team 0xf3017e67 team_option_inst_set_change +EXPORT_SYMBOL drivers/net/wan/hdlc 0x11530672 hdlc_close +EXPORT_SYMBOL drivers/net/wan/hdlc 0x19da130a register_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0x3f7be9e1 unregister_hdlc_device +EXPORT_SYMBOL drivers/net/wan/hdlc 0x85d726ce detach_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0x8883f5de unregister_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0x96369984 hdlc_change_mtu +EXPORT_SYMBOL drivers/net/wan/hdlc 0xa467b318 attach_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0xb78d389c hdlc_open +EXPORT_SYMBOL drivers/net/wan/hdlc 0xbdd57a98 alloc_hdlcdev +EXPORT_SYMBOL drivers/net/wan/hdlc 0xc1aabb54 hdlc_ioctl +EXPORT_SYMBOL drivers/net/wan/hdlc 0xf14d08a0 hdlc_start_xmit +EXPORT_SYMBOL drivers/net/wimax/i2400m/i2400m 0x82f77433 i2400m_unknown_barker +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x0002fc2a dfs_pattern_detector_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x031dd671 ath_key_delete +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x1da1bc71 ath_printk +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x2e37839e ath_is_mybeacon +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x319c6026 ath_is_49ghz_allowed +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x4df775b7 ath_hw_get_listen_time +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x4eeeb49e ath_hw_cycle_counters_update +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x774bd962 ath_key_config +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xaafdb617 ath_is_world_regd +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xb1cbb274 ath_reg_notifier_apply +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xb1dba3d5 ath_hw_setbssidmask +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xc13c66fc ath_rxbuf_alloc +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xe695a2e9 ath_hw_keyreset +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xe7da4dff ath_regd_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xfb4de67a ath_regd_get_band_ctl +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x0676b74d ath10k_core_unregister +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x0cbc0756 ath10k_warn +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x13e4e027 ath10k_core_register +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x4143f355 ath10k_core_create +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x4b3649b3 ath10k_core_destroy +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x6af58e77 ath10k_debug_get_new_fw_crash_data +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0x7321df2a ath10k_print_driver_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xb562922d ath10k_core_start +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xc8084a2f ath10k_err +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xc8afe510 ath10k_core_stop +EXPORT_SYMBOL drivers/net/wireless/ath/ath10k/ath10k_core 0xd9a368ed ath10k_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x384ba0b5 ath6kl_cfg80211_suspend +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x3fcfcff8 ath6kl_hif_intr_bh_handler +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x492979f8 ath6kl_core_cleanup +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x5b70c579 ath6kl_core_rx_complete +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x5cde6f01 ath6kl_cfg80211_resume +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x79302ff3 ath6kl_core_tx_complete +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x7b317424 ath6kl_printk +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x80a09613 ath6kl_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x85e98da9 ath6kl_stop_txrx +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x91cfb84a ath6kl_hif_rw_comp_handler +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x93716bd4 ath6kl_core_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xa6f66cc1 ath6kl_warn +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xc961a467 ath6kl_core_destroy +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xcb014460 ath6kl_err +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xd00cf9da ath6kl_core_create +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x0bd0e041 ath9k_cmn_beacon_config_ap +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x11ab25d3 ath9k_cmn_get_channel +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x1561a613 ath9k_cmn_beacon_config_adhoc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x2be63a7a ath9k_cmn_debug_modal_eeprom +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x2d15177d ath9k_cmn_debug_stat_rx +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x2d1f5663 ath9k_cmn_spectral_deinit_debug +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x4184c5bc ath9k_cmn_rx_accept +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x42506ccd ath9k_cmn_spectral_init_debug +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x4bf3de51 ath_cmn_process_fft +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x4d3e1057 ath9k_cmn_update_txpow +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x566e0973 ath9k_cmn_process_rssi +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x570c4acf ath9k_cmn_rx_skb_postprocess +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x636c07b0 ath9k_cmn_get_hw_crypto_keytype +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x73d0b1a6 ath9k_cmn_debug_base_eeprom +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x7776783c ath9k_cmn_reload_chainmask +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x83ffa24b ath9k_cmn_beacon_config_sta +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xa015f0b0 ath9k_cmn_debug_recv +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xd0369f3d ath9k_cmn_spectral_scan_trigger +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xd2981357 ath9k_cmn_count_streams +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xde8c18a0 ath9k_cmn_setup_ht_cap +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xe6c0b42b ath9k_cmn_debug_phy_err +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xe79bc9f1 ath9k_cmn_process_rate +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xe81ab1a1 ath9k_cmn_init_channels_rates +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xf17b0d39 ath9k_cmn_spectral_scan_config +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xff2f576d ath9k_cmn_init_crypto +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x031b6db4 ath9k_hw_init_btcoex_hw +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x062201b0 ath9k_hw_setuptxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x062a5a64 ar9003_paprd_enable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x07c6d903 ath9k_hw_btcoex_init_scheme +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0bfd5323 ath9k_hw_btcoex_bt_stomp +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0c5cd878 ath9k_hw_btcoex_set_concur_txprio +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0d80bc51 ath9k_hw_startpcureceive +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0db5954b ath9k_hw_check_nav +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0fbc71ee ath9k_hw_stopdmarecv +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1046bafd ath9k_hw_wow_wakeup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x118703ce ath9k_hw_wait +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x12844579 ath9k_hw_request_gpio +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x17ce6a41 ar9003_mci_get_next_gpm_offset +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x180b797c ar9003_get_pll_sqsum_dvc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x181baa29 ath9k_hw_computetxtime +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1a0f1da5 ar9003_paprd_create_curve +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1ba8070c ath9k_hw_name +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1c0e404d ath9k_hw_stop_dma_queue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1dd50ba0 ath9k_hw_reset +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1e2ffc07 ath9k_hw_set_tsfadjust +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x212cad78 ath9k_hw_btcoex_enable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x23777d7f ath9k_hw_reset_tsf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x24d2096b ath9k_hw_setantenna +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x25b5628a ath9k_hw_getchan_noise +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x261842a9 ath9k_hw_set_rx_bufsize +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x294547dd ath9k_hw_intrpend +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2d7c4dd0 ath9k_hw_cfg_output +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x315eb039 ath9k_hw_check_alive +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x316fbe60 ath9k_hw_beaconinit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x33d06319 ath9k_hw_addrxbuf_edma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x385b3cdf ath9k_hw_gen_timer_stop +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x3912014b ath9k_hw_rxprocdesc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x3c1441d9 ath9k_hw_releasetxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x3c1bb481 ath9k_hw_putrxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x3fc34764 ath9k_hw_set_txpowerlimit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x467ea3e9 ath9k_hw_ani_monitor +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4bc9b5ed ath9k_hw_reset_calvalid +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4c639610 ath9k_hw_setrxabort +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x51f1e5b8 ath_gen_timer_alloc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x53615ea5 ath9k_hw_setuprxdesc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x5466a660 ath9k_hw_gettxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x552950e4 ath9k_hw_disable_mib_counters +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x55963e44 ath9k_hw_cfg_gpio_input +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x59b1debe ath9k_hw_setup_statusring +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x650966c0 ath9k_hw_gen_timer_start +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6d4a930b ar9003_hw_bb_watchdog_dbg_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6e1fa2b1 ath9k_hw_abort_tx_dma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6eda067e ath9k_hw_enable_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x70fb405a ath9k_hw_wow_enable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x766d76c9 ath_gen_timer_free +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7dd4c77d ar9003_mci_setup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7fac4c96 ath9k_hw_abortpcurecv +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8125ae5e ar9003_is_paprd_enabled +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x824a5835 ath9k_hw_getnf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x85a5fc43 ath9k_hw_set_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x866b2218 ath9k_hw_btcoex_set_weight +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8736548d ar9003_mci_set_bt_version +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8ff76591 ath9k_hw_set_txq_props +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x903fbe25 ath9k_hw_kill_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9bcda0a6 ath9k_hw_btcoex_init_mci +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9c404678 ath9k_hw_setpower +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9ee81d86 ath9k_hw_phy_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa59c667c ar9003_mci_state +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa5fe1e93 ar9003_hw_bb_watchdog_check +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa6aabf66 ar9003_hw_disable_phy_restart +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa6d48a03 ath9k_hw_txstart +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa754b4b9 ath9k_hw_numtxpending +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa759d0f0 ath9k_hw_set_tx_filter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa82daca9 ath9k_hw_setrxfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xaac312e9 ath9k_hw_disable_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xaac4bb0b ath9k_hw_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xae98ac4f ath9k_hw_bstuck_nfcal +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb05c7167 ath9k_hw_setopmode +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb2268a1c ath9k_hw_init_global_settings +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb3829b41 ath9k_hw_btcoex_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb43a35c4 ath9k_hw_wow_apply_pattern +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xbbb84ca7 ar9003_mci_cleanup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xbd8dadd9 ath9k_hw_process_rxdesc_edma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xbe33ab32 ath9k_hw_gpio_get +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xbf3afbc8 ar9003_paprd_setup_gain_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc24c5ffb ath9k_hw_set_gpio +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc614724a ath9k_hw_updatetxtriglevel +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc8833e50 ath9k_hw_setmcastfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xcb0b6853 ath9k_hw_deinit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xcc769433 ar9003_paprd_is_done +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xcee458d3 ath9k_hw_set_sta_beacon_timers +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd339cd58 ath9k_hw_get_txq_props +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd438dcc3 ath9k_hw_gettsf64 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd46ba2d0 ath9k_hw_getrxfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd7036bc5 ath9k_hw_settsf64 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd74eeeef ar9003_paprd_populate_single_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd867244d ar9003_paprd_init_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd8dd9729 ath9k_hw_resettxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd9af629e ar9003_mci_send_message +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xda34281b ath9k_hw_btcoex_init_2wire +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xdb192a06 ar9003_mci_get_interrupt +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe3d35ce6 ath9k_hw_puttxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe9929dbb ath_gen_timer_isr +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xeab7503c ath9k_hw_write_associd +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xeb122133 ath9k_hw_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf438b73c ar9003_mci_send_wlan_channels +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf5650836 ath9k_hw_beaconq_setup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf86152fb ath9k_hw_gettsf32 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xfaa6e70a ath9k_hw_btcoex_init_3wire +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xffd02408 ath9k_hw_get_tsf_offset +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x191a39d4 brcmu_pktq_mdeq +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x2177ea0a brcmu_pktq_peek_tail +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x3f2988a1 brcmu_dotrev_str +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x5351d4f6 brcmu_pktq_penq +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x57d9043c brcmu_pktq_pdeq +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x6acef03a brcmu_pktq_pdeq_tail +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x85c1e91a brcmu_pkt_buf_free_skb +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x9d4565c1 brcmu_pkt_buf_get_skb +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x9f4b5dcf brcmu_d11_attach +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xa1e471c3 brcmu_pktq_pflush +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xaf7757e7 brcmu_pktq_penq_head +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xbe38a7aa brcmu_pktq_mlen +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xcb04d954 brcmu_pktq_pdeq_match +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xd148cddf brcmu_pktq_flush +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xd261b8a6 brcmu_boardrev_str +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xd9ba4a4a brcmu_pktq_init +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x00edf94d hostap_set_hostapd_sta +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x0ad69602 hostap_set_multicast_list_queue +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x19064f4a hostap_80211_ops +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x1cbe7b7b hostap_set_encryption +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x1ef89e5a hostap_init_ap_proc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x35c3b7dd hostap_set_word +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x392028ab hostap_handle_sta_tx_exc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x4a0f369e hostap_get_porttype +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x4af53899 hostap_set_antsel +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x59ea6732 hostap_check_sta_fw_version +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x5bf0ceb3 hostap_remove_proc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x5da0ee80 hostap_set_auth_algs +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x6bb21ed1 hostap_set_hostapd +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x730bf229 hostap_set_string +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x7898ede3 hostap_init_data +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x7bceeac5 hostap_init_proc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x8dcda1ae hostap_setup_dev +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x92ef363b hostap_free_data +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xa12ad27f hostap_dump_tx_header +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xa16a5e06 hostap_add_interface +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xafcd14ff prism2_update_comms_qual +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xb2a945e0 hostap_dump_rx_header +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xb4b77c8b hostap_80211_get_hdrlen +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xd831ff7a hostap_remove_interface +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xd9475471 hostap_80211_rx +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xdfd6c4e9 hostap_info_process +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xe10839a8 hostap_master_start_xmit +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xe90f3385 hostap_info_init +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xf1a6ce1d hostap_set_roaming +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0x2415c45a wl1271_free_tx_id +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0xa25ea5a8 wlcore_calc_packet_alignment +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0xc559875a wl12xx_is_dummy_packet +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0xd85dd48d wlcore_tx_complete +EXPORT_SYMBOL drivers/nfc/microread/microread 0xaa7f64dd microread_remove +EXPORT_SYMBOL drivers/nfc/microread/microread 0xc5cfceed microread_probe +EXPORT_SYMBOL drivers/nfc/nxp-nci/nxp-nci 0x26d10bed nxp_nci_probe +EXPORT_SYMBOL drivers/nfc/nxp-nci/nxp-nci 0x483dd202 nxp_nci_remove +EXPORT_SYMBOL drivers/nfc/nxp-nci/nxp-nci 0xf19b98eb nxp_nci_fw_recv_frame +EXPORT_SYMBOL drivers/nfc/pn544/pn544 0x3647c539 pn544_hci_probe +EXPORT_SYMBOL drivers/nfc/pn544/pn544 0xfb756d27 pn544_hci_remove +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x2b5c4a20 st_nci_se_io +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x2f3bc9fd st_nci_se_deinit +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x3194daf7 st_nci_se_init +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x64d2f178 ndlc_send +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x6d9f1092 ndlc_open +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x873eacac ndlc_remove +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0x9f5cc9a6 ndlc_recv +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0xa2bf9b2e ndlc_close +EXPORT_SYMBOL drivers/nfc/st-nci/st-nci 0xbfde691e ndlc_probe +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x0455b791 st21nfca_hci_disable_se +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x058a191f st21nfca_hci_probe +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x19315574 st21nfca_hci_remove +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x228d4398 st21nfca_dep_deinit +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x33fa2869 st21nfca_hci_discover_se +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x3ee1332b st21nfca_connectivity_event_received +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x4853b151 st21nfca_se_init +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x6693676b st21nfca_hci_enable_se +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x6ca778a6 st21nfca_tm_send_dep_res +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x8f7be97b st21nfca_im_send_dep_req +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0x9fceddac st21nfca_dep_init +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xc79b2686 st21nfca_se_deinit +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xd54e16db st21nfca_hci_se_io +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xd59fa588 st21nfca_im_send_atr_req +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xe1fb2e65 st21nfca_dep_event_received +EXPORT_SYMBOL drivers/nfc/st21nfca/st21nfca_hci 0xfc629135 st21nfca_apdu_reader_event_received +EXPORT_SYMBOL drivers/parport/parport 0x00232e9f parport_claim_or_block +EXPORT_SYMBOL drivers/parport/parport 0x075bf1eb __parport_register_driver +EXPORT_SYMBOL drivers/parport/parport 0x18ba7088 parport_register_port +EXPORT_SYMBOL drivers/parport/parport 0x1d0b51b3 parport_remove_port +EXPORT_SYMBOL drivers/parport/parport 0x1d1af293 parport_register_device +EXPORT_SYMBOL drivers/parport/parport 0x2a3863c7 parport_ieee1284_epp_read_addr +EXPORT_SYMBOL drivers/parport/parport 0x2aab2b1a parport_find_base +EXPORT_SYMBOL drivers/parport/parport 0x2fa1cdb7 parport_ieee1284_epp_read_data +EXPORT_SYMBOL drivers/parport/parport 0x3774e202 parport_wait_peripheral +EXPORT_SYMBOL drivers/parport/parport 0x442141ce parport_set_timeout +EXPORT_SYMBOL drivers/parport/parport 0x4b9f7624 parport_release +EXPORT_SYMBOL drivers/parport/parport 0x4d2a941b parport_ieee1284_interrupt +EXPORT_SYMBOL drivers/parport/parport 0x4f04eefd parport_unregister_device +EXPORT_SYMBOL drivers/parport/parport 0x5b314f45 parport_register_dev_model +EXPORT_SYMBOL drivers/parport/parport 0x5e3a3912 parport_irq_handler +EXPORT_SYMBOL drivers/parport/parport 0x603f21bf parport_write +EXPORT_SYMBOL drivers/parport/parport 0x69f9d3dc parport_ieee1284_read_nibble +EXPORT_SYMBOL drivers/parport/parport 0x7417183d parport_ieee1284_epp_write_data +EXPORT_SYMBOL drivers/parport/parport 0x76a158ce parport_ieee1284_epp_write_addr +EXPORT_SYMBOL drivers/parport/parport 0x888c18a3 parport_claim +EXPORT_SYMBOL drivers/parport/parport 0x88dd4085 parport_del_port +EXPORT_SYMBOL drivers/parport/parport 0x9070cc6b parport_ieee1284_write_compat +EXPORT_SYMBOL drivers/parport/parport 0x9ac26024 parport_negotiate +EXPORT_SYMBOL drivers/parport/parport 0x9ccf5cbe parport_announce_port +EXPORT_SYMBOL drivers/parport/parport 0x9f78ed50 parport_ieee1284_read_byte +EXPORT_SYMBOL drivers/parport/parport 0xa5d391f5 parport_get_port +EXPORT_SYMBOL drivers/parport/parport 0xa961456b parport_ieee1284_ecp_read_data +EXPORT_SYMBOL drivers/parport/parport 0xac5fb12d parport_unregister_driver +EXPORT_SYMBOL drivers/parport/parport 0xc46565ab parport_find_number +EXPORT_SYMBOL drivers/parport/parport 0xc906a676 parport_ieee1284_ecp_write_addr +EXPORT_SYMBOL drivers/parport/parport 0xcbb0e685 parport_ieee1284_ecp_write_data +EXPORT_SYMBOL drivers/parport/parport 0xe226593b parport_wait_event +EXPORT_SYMBOL drivers/parport/parport 0xe77854e5 parport_read +EXPORT_SYMBOL drivers/parport/parport 0xf765c225 parport_put_port +EXPORT_SYMBOL drivers/parport/parport_pc 0x8e8a149d parport_pc_unregister_port +EXPORT_SYMBOL drivers/parport/parport_pc 0xf259173b parport_pc_probe_port +EXPORT_SYMBOL drivers/rtc/rtc-ds1685 0x9ae37a05 ds1685_rtc_poweroff +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x10d9848b fcoe_ctlr_destroy_store +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x26c637a8 fcoe_ctlr_els_send +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x28f4c8d7 fcoe_ctlr_link_up +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x760e66e8 fcoe_ctlr_link_down +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x8972aee8 fcoe_transport_attach +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xa29c511d fcoe_transport_detach +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xbef4ee79 fcoe_fcf_get_selected +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xc7f1ff6c fcoe_ctlr_init +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xd1014089 fcoe_ctlr_recv +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xd8a73e48 fcoe_ctlr_recv_flogi +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xed09a6fd fcoe_ctlr_destroy +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xf90ee377 fcoe_ctlr_set_fip_mode +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x0502aae0 fc_lport_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x1765d7b0 fc_lport_destroy +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x1d034cf4 fc_fc4_register_provider +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x22b90986 fc_exch_mgr_del +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x25916498 fc_fabric_logoff +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x29d0b776 fc_exch_mgr_add +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x2b4b0d77 fc_vport_setlink +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x2c4ed1a1 fc_lport_flogi_resp +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x342c2171 fc_disc_config +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x36e5fbaf fc_cpu_mask +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x4684f1bb fc_lport_logo_resp +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x47598219 fc_exch_mgr_list_clone +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x4f959f52 fc_set_rport_loss_tmo +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x527ff3f0 fc_eh_device_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x55d0cc47 fc_queuecommand +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x55ece22d fc_linkup +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x5768edc2 fc_frame_alloc_fill +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x62aabd27 fc_fcp_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x689baf9a fc_exch_recv +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x6a3d84e8 fc_lport_notifier_head +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x6a6a36e4 fc_fill_hdr +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x71c279f3 fc_lport_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x72b7c956 fc_eh_abort +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x82ef392b fc_frame_crc_check +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x84038041 fc_exch_update_stats +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x845ccd12 fc_exch_mgr_free +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x8af71204 fc_rport_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x8cf20520 fc_get_host_stats +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x91da3a9c fc_disc_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x9463a4a2 fc_get_host_port_state +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x9a308dd3 fc_exch_mgr_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x9bf0e428 fc_elsct_send +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xa7464fe7 fc_lport_iterate +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xa7b99a72 fc_vport_id_lookup +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xa928146d fc_exch_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xb8184148 fc_fill_reply_hdr +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xbbbe80a0 fc_get_host_speed +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xbc24ee19 fc_set_mfs +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xbe67e3c3 fc_eh_host_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xccb60d33 fc_fcp_destroy +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xcfd41998 fc_slave_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xd275d15e fc_lport_set_local_id +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xdb23d302 libfc_vport_create +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xe13fd78c fc_linkdown +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xe258975d _fc_frame_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xe84739cd fc_exch_mgr_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xedd3802c fc_lport_config +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xef91c205 fc_fabric_login +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xf4f3d23f fc_fc4_deregister_provider +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xf68ba368 fc_rport_terminate_io +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xf9f463d7 fc_lport_bsg_request +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xff7e3287 fc_elsct_init +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x4033e5f1 sas_wait_eh +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x5d7525a7 sas_suspend_ha +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x73e3b6ee sas_prep_resume_ha +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x8a87e724 try_test_sas_gpio_gp_bit +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0xfe320313 sas_resume_ha +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x029a9e11 osd_req_format +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x06f03b6b osd_start_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x0c17edb1 osd_sec_init_nosec_doall_caps +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x0cd7d798 osd_req_add_get_attr_page +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x2e715784 osd_req_create_object +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x3030adde osd_req_flush_object +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x38ec36a3 osd_req_write_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x3b702bbe osd_req_read +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x3ea81a8c osd_req_create_partition +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x3eb0bfd5 osd_req_remove_object +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x4747b7dd osd_auto_detect_ver +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x58667349 osd_req_write_sg +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x5cad81fb osd_end_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x5d3ccdf3 osd_req_list_collection_objects +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x5ed17288 osd_execute_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x65b6d3f3 osd_req_list_partition_objects +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x8b669ed3 osd_req_read_sg +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x9412dcaf osd_req_add_get_attr_list +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x979e6982 osd_req_list_partition_collections +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xa5060a8c osd_req_decode_sense_full +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xa7339846 osd_req_flush_partition +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xaa0e31d8 osd_req_get_attributes +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xac92d972 osd_req_read_sg_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xace81e80 osd_req_write +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xb0d6d884 osd_req_remove_partition +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xb366af50 osd_req_add_set_attr_list +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xb46dabec osd_dev_fini +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xbaf45ca9 osd_req_read_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xbc9ba3c5 osd_req_write_sg_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xbcb31390 osd_req_flush_obsd +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xc0fc42d3 osd_finalize_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xc1e0fd6b osd_execute_request_async +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xc8556fb0 osd_req_decode_get_attr_list +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xd50d6aa0 osd_req_set_attributes +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xdcc1bdbe osd_dev_init +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xf8c05f35 osd_req_list_dev_partitions +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xff99eef4 osd_req_flush_collection +EXPORT_SYMBOL drivers/scsi/osd/osd 0x15e10131 osduld_info_lookup +EXPORT_SYMBOL drivers/scsi/osd/osd 0x3ea24d03 osduld_put_device +EXPORT_SYMBOL drivers/scsi/osd/osd 0x5fc48609 osduld_unregister_test +EXPORT_SYMBOL drivers/scsi/osd/osd 0x86744cda osduld_device_same +EXPORT_SYMBOL drivers/scsi/osd/osd 0x9ca64668 osduld_device_info +EXPORT_SYMBOL drivers/scsi/osd/osd 0x9eab4460 osduld_path_lookup +EXPORT_SYMBOL drivers/scsi/osd/osd 0xa36a3d58 osduld_register_test +EXPORT_SYMBOL drivers/scsi/raid_class 0x51b6cc79 raid_class_attach +EXPORT_SYMBOL drivers/scsi/raid_class 0x7dcd3d7e raid_component_add +EXPORT_SYMBOL drivers/scsi/raid_class 0xf7a9b6aa raid_class_release +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x02944117 fc_remove_host +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x2f624b00 fc_remote_port_rolechg +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x318a826c fc_vport_terminate +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x3f6f2fb2 scsi_is_fc_rport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x545c5891 fc_host_post_event +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x7954b1ea fc_get_event_number +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x8fd79966 fc_vport_create +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x99a8a53d fc_host_post_vendor_event +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xcd2f9414 fc_remote_port_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xd468d3fe scsi_is_fc_vport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xe503d896 fc_remote_port_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xea712314 fc_block_scsi_eh +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xf0652ea6 fc_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xfb1cd94c fc_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x1d46650d sas_remove_children +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x215f0beb sas_read_port_mode_page +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x26f843ea sas_end_device_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x321aa893 sas_rphy_remove +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x36e64a59 sas_rphy_unlink +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x3bcb2bdf sas_port_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x3ee31049 sas_port_get_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x433df664 sas_remove_host +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x4c6c1bdb sas_port_add_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x682b42b1 sas_port_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x6ca29de8 sas_phy_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x7dcc815b sas_expander_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x7e76ebec sas_port_alloc_num +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x866b8d76 sas_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x87883858 sas_phy_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x8a649352 scsi_is_sas_rphy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xac39f7af sas_phy_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xb9525cc0 sas_port_mark_backlink +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xbe0fb86b sas_port_delete_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xbea65f27 sas_phy_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xc29c1a39 sas_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xd9d35387 sas_port_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xda89e40d sas_port_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xdaf60cff scsi_is_sas_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xe5cb2fe6 sas_rphy_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xe60235ae scsi_is_sas_port +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xeddd0326 sas_rphy_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xf98a3319 sas_rphy_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x1f919005 spi_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x3686ea09 spi_print_msg +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x59632510 spi_dv_device +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x6df7a005 spi_schedule_dv_device +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x7b635276 spi_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x99a9b120 spi_display_xfer_agreement +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0x0d385a1d srp_start_tl_fail_timers +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0x3fa13153 srp_rport_put +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0x405b6e05 srp_parse_tmo +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0x8e33f31c srp_rport_get +EXPORT_SYMBOL drivers/scsi/scsi_transport_srp 0xe4ca3d13 srp_reconnect_rport +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0x03152754 ufshcd_runtime_suspend +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0x0dab8976 ufshcd_alloc_host +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0x17d28a11 ufshcd_system_resume +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0x27d0eab4 ufshcd_runtime_resume +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0x685f4ad0 ufshcd_shutdown +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0x68f65d77 ufshcd_runtime_idle +EXPORT_SYMBOL drivers/scsi/ufs/ufshcd 0xa5997253 ufshcd_system_suspend +EXPORT_SYMBOL drivers/ssb/ssb 0x02d5c705 ssb_bus_resume +EXPORT_SYMBOL drivers/ssb/ssb 0x03d641cb __ssb_driver_register +EXPORT_SYMBOL drivers/ssb/ssb 0x0c68f299 ssb_bus_sdiobus_register +EXPORT_SYMBOL drivers/ssb/ssb 0x18151e67 ssb_bus_suspend +EXPORT_SYMBOL drivers/ssb/ssb 0x258bc34d ssb_chipco_gpio_control +EXPORT_SYMBOL drivers/ssb/ssb 0x3340cca8 ssb_dma_translation +EXPORT_SYMBOL drivers/ssb/ssb 0x34de6e0f ssb_clockspeed +EXPORT_SYMBOL drivers/ssb/ssb 0x375f5ab6 ssb_pmu_set_ldo_voltage +EXPORT_SYMBOL drivers/ssb/ssb 0x4c20a531 ssb_pmu_set_ldo_paref +EXPORT_SYMBOL drivers/ssb/ssb 0x5776cb67 ssb_set_devtypedata +EXPORT_SYMBOL drivers/ssb/ssb 0x5e68562d ssb_bus_powerup +EXPORT_SYMBOL drivers/ssb/ssb 0x5e9f1b11 ssb_commit_settings +EXPORT_SYMBOL drivers/ssb/ssb 0x8116c2da ssb_device_disable +EXPORT_SYMBOL drivers/ssb/ssb 0xb56243ec ssb_device_enable +EXPORT_SYMBOL drivers/ssb/ssb 0xbcfe4a9f ssb_device_is_enabled +EXPORT_SYMBOL drivers/ssb/ssb 0xbf4f1ec5 ssb_bus_may_powerdown +EXPORT_SYMBOL drivers/ssb/ssb 0xc0512e0f ssb_admatch_base +EXPORT_SYMBOL drivers/ssb/ssb 0xc4ba5a2f ssb_driver_unregister +EXPORT_SYMBOL drivers/ssb/ssb 0xd481192b ssb_admatch_size +EXPORT_SYMBOL drivers/ssb/ssb 0xe474b54c ssb_bus_unregister +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x0aa4475d fbtft_register_backlight +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x0d6a54de fbtft_write_reg16_bus16 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x423fff69 fbtft_write_reg8_bus8 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x446d3333 fbtft_write_reg8_bus9 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x46f2dee2 fbtft_register_framebuffer +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x49948181 fbtft_write_spi +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x4e4f259f fbtft_write_vmem16_bus9 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x6e2afd5f fbtft_write_reg16_bus8 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x7310e135 fbtft_init_display +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x74a175f6 fbtft_write_gpio8_wr +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x89f00581 fbtft_write_vmem16_bus16 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x8aa3e8f8 fbtft_framebuffer_release +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x957bb0de fbtft_write_gpio16_wr +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xaa36b04f fbtft_write_vmem16_bus8 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xac096051 fbtft_write_gpio16_wr_latched +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xac85fb0f fbtft_remove_common +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xae71caba fbtft_probe_common +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xb3b0426f fbtft_framebuffer_alloc +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xbe0404f9 fbtft_dbg_hex +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xc098eda0 fbtft_read_spi +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xc9381448 fbtft_write_vmem8_bus8 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xe8fc2f37 fbtft_write_spi_emulate_9 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xe9abc964 fbtft_unregister_framebuffer +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xf433bd4e fbtft_unregister_backlight +EXPORT_SYMBOL drivers/staging/iio/addac/adt7316 0xb66c93ce adt7316_probe +EXPORT_SYMBOL drivers/staging/iio/magnetometer/hmc5843_core 0x492d8979 hmc5843_common_probe +EXPORT_SYMBOL drivers/staging/iio/magnetometer/hmc5843_core 0x913d2f1c hmc5843_common_resume +EXPORT_SYMBOL drivers/staging/iio/magnetometer/hmc5843_core 0x9906fe17 hmc5843_common_suspend +EXPORT_SYMBOL drivers/staging/iio/magnetometer/hmc5843_core 0x9fdc91d9 hmc5843_common_remove +EXPORT_SYMBOL drivers/staging/iio/meter/ade7854 0x60bd0a09 ade7854_remove +EXPORT_SYMBOL drivers/staging/iio/meter/ade7854 0xa031d19d ade7854_probe +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x0af9023c lnet_sock_connect +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x0be81f0e lnet_sock_getaddr +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x0fe98716 lnet_register_lnd +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x1366b7ac LNetSetLazyPortal +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x19670622 LNetNIInit +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x1b191752 lnet_msgtyp2str +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x1e2f2b63 lnet_sock_listen +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x1ee5f15e lnet_ipif_query +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x1f544fdb the_lnet +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x1fe16fd5 LNetGet +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x204b8151 lnet_counters_reset +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x2aa9953d lnet_cpt_of_nid +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x2ac93e90 lnet_connect_console_error +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x2bc69e47 lnet_notify +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x2c81e635 lnet_sock_getbuf +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x33202a6c LNetGetId +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x3bad8739 lnet_net2ni +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x3c779ee0 LNetPut +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x3f4f5b46 LNetNIFini +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x473ad33b LNetDist +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x4e9512e7 lnet_set_reply_msg_len +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x55db5324 lnet_iov_nob +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x58a1ca89 LNetMDUnlink +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x5e91cfec lnet_copy_iov2iov +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x5fee352c lnet_acceptor_timeout +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x61f784b2 LNetClearLazyPortal +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x64cdea3a LNetCtl +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x66d449b1 lnet_ipif_enumerate +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x6d9ce8ea lnet_extract_kiov +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x6ef261e8 lnet_sock_setbuf +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x6f7be171 LNetEQGet +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x722c76e5 LNetMDAttach +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x731e8074 lnet_copy_iov2kiov +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x7d59a7fe LNetMEInsert +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x854ab844 LNetEQWait +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x86f6e449 lnet_connect +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x88f67cf8 lnet_sock_read +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x8bf0285b lnet_copy_kiov2kiov +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0x9de986d3 LNetEQAlloc +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xa56de08d lnet_ipif_free_enumeration +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xaa414970 LNetMEUnlink +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xaa9b477e LNetMDBind +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xb75f7953 LNetEQFree +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xba5566d2 lnet_acceptor_port +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xbf0760a2 LNetMEAttach +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xce5b6a29 lnet_parse +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xd1c2f3e4 lnet_extract_iov +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xd74fab73 lnet_sock_accept +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xd7c50cb9 lnet_init +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xd86088f1 lnet_kiov_nob +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xdf346e2a lnet_create_reply_msg +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xe8124744 lnet_fini +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xea69d2f9 lnet_copy_kiov2iov +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xed302a57 lnet_unregister_lnd +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xf1b316bf LNetSnprintHandle +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xf2f7c2bf lnet_finalize +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xfa106804 lnet_counters_get +EXPORT_SYMBOL drivers/staging/lustre/lnet/lnet/lnet 0xfbc1cecb lnet_sock_write +EXPORT_SYMBOL drivers/staging/lustre/lnet/selftest/lnet_selftest 0x078db139 lstcon_ioctl_entry +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0x0050d321 seq_client_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0x1c4bb5f9 LU_OBF_FID +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0x213a1152 client_fid_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0x375e6f8d LUSTRE_BFL_FID +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0x481acba6 client_fid_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0x4a350d02 seq_client_flush +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0xae61cff5 LU_DOT_LUSTRE_FID +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0xc997a02f LUSTRE_SEQ_SPACE_RANGE +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0xe60fe9fb seq_client_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0xecee2727 LUSTRE_SEQ_ZERO_RANGE +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0xf314410b seq_client_alloc_fid +EXPORT_SYMBOL drivers/staging/lustre/lustre/fid/fid 0xfa0961d5 seq_client_get_seq +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0x3e8f4865 fld_client_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0x4b52294f fld_client_lookup +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0x4d3af4cd fld_client_debugfs_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0x4e93427a fld_client_add_target +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0x57d5272a fld_client_del_target +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0xb689718b fld_client_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/fld/fld 0xc3daf454 fld_client_flush +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x000c507f libcfs_debug_dumplog +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x00c881f6 cfs_cpt_number +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x01db5172 cfs_percpt_atomic_summary +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x0389f857 cfs_cpt_spread_node +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x069f9bb2 cfs_wi_schedule +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x08ada613 libcfs_console_backoff +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x0b4b1546 libcfs_lnd2modname +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x0c68bc45 cfs_cpt_clear +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x0de6c369 cfs_cap_lower +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x0e311d38 cfs_percpt_atomic_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x0f5eff79 cfs_percpt_number +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x10b7e9c3 cfs_cpt_unset_cpu +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x10fd50ae cfs_hash_for_each_empty +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x13550229 lbug_with_loc +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x151e7546 cfs_cpt_table_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x17ac7833 libcfs_deregister_ioctl +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x1a60d439 cfs_parse_nidlist +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x1c7ec980 cfs_hash_for_each_safe +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x22319718 cfs_percpt_unlock +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x23f6f445 cfs_restore_sigs +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x247da28c libcfs_kvzalloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x2637a660 cfs_hash_bd_lookup_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x2663147a __cfs_fail_timeout_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x27b6d3ba cfs_ip_addr_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x2adae33e cfs_init_timer +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x2dbe54b2 cfs_trimwhite +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x2e5044c7 cfs_cpt_set_nodemask +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x2efcc0e6 cfs_block_sigs +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x2f85ad89 cfs_hash_dual_bd_finddel_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x31fc5082 cfs_crypto_hash_update +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x339b461a cfs_hash_dual_bd_findadd_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x377f93fb cfs_srand +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x389ca502 libcfs_debug_mb +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x38fde09c cfs_hash_hlist_for_each +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x39fdcd2b libcfs_debug_set_level +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x3c1285bd libcfs_subsystem_debug +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x3d5e6098 cfs_race_state +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x3ef0d90c libcfs_kkuc_group_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x4062f92b libcfs_run_lbug_upcall +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x411db754 cfs_crypto_hash_final +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x44688a0a cfs_block_allsigs +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x44728d76 cfs_cpt_bind +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x44839bbb cfs_rand +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x48193550 cfs_hash_bd_finddel_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x482deff7 cfs_cpt_unset_cpumask +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x48f163c6 libcfs_str2anynid +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x4a95faa2 cfs_timer_deadline +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x4a99af72 cfs_clear_sigpending +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x4b123f3a cfs_hash_cond_del +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x4d89e988 cfs_block_sigsinv +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x4f1f2fa5 cfs_crypto_hash_digest +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x50345570 libcfs_str2net +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x5051b6d2 portal_enter_debugger +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x509d38b0 libcfs_net2str +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x54fd9a71 cfs_percpt_index +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x55d18175 cfs_hash_size_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x58a7ee00 libcfs_catastrophe +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x5946ec2b cfs_percpt_current +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x5a785762 cfs_cpt_online +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x5c013b81 cfs_expr_list_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x5dce9e80 libcfs_lnd2str +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x5dd2e495 cfs_hash_bd_findadd_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x5df8c623 cfs_cpt_cpumask +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x62289d65 cfs_array_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x63be5b7f cfs_race_waitq +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x64685fef libcfs_console_min_delay +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x6564c55b libcfs_console_max_delay +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x65dd9f0c libcfs_run_upcall +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x67398404 cfs_wi_sched_destroy +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x6c905b5f libcfs_watchdog_ratelimit +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x6c9b4713 cfs_hash_bd_del_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x71f662a3 libcfs_debug +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x75600a04 cfs_hash_bd_move_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x790dbd66 cfs_hash_rehash_key +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x7a63872e cfs_timer_disarm +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x7b0b748a cfs_ip_addr_parse +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x7d0b2c24 cfs_hash_debug_str +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x7e6a5b3c cfs_hash_findadd_unique +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x7e6f6485 cfs_ip_addr_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x7fda989d cfs_fail_loc +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x8151c3aa cfs_cap_raised +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x81bef0ce add_wait_queue_exclusive_head +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x828d16a2 cfs_cpt_table +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x83d795e4 cfs_match_nid +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x83e75430 cfs_hash_getref +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x857aaea7 libcfs_register_ioctl +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x89b2ddc3 cfs_hash_rehash_cancel_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x89dcbafa cfs_hash_for_each +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x8c85e4e6 cfs_crypto_hash_speed +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x8d3622c1 cfs_hash_bd_add_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x8dda96cb cfs_hash_dual_bd_unlock +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x904da492 libcfs_kkuc_group_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x91504e8b libcfs_kmemory +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x92f54077 cfs_hash_putref +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x940ed192 libcfs_stack +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x94668f87 cfs_crypto_hash_update_page +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x95620e8c cfs_wi_deschedule +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x96727837 cfs_hash_dual_bd_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x97b0b9bc cfs_enter_debugger +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x9879b229 cfs_get_random_bytes +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0x9f82f712 cfs_trace_copyout_string +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xa256e060 cfs_hash_bd_peek_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xa28a6757 cfs_percpt_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xa2b68b2a cfs_array_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xa6b9dee6 libcfs_kkuc_group_rem +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xa9088531 cfs_expr_list_values +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xa9a5cf4e cfs_hash_lookup +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xa9c0ca61 cfs_timer_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xa9dc74e2 cfs_trace_copyin_string +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xabc53bf1 cfs_hash_is_empty +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xac0f67e3 cfs_cpt_unset_node +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xafdb46d6 cfs_hash_dual_bd_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xb2ae1633 cfs_hash_rehash_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xb336ee38 cfs_hash_for_each_key +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xb473e79e cfs_wi_sched_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xb8c52b1b cfs_timer_done +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xbab4f34e cfs_timer_arm +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xbc275420 cfs_cpt_unset_nodemask +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xbdb8f398 cfs_hash_debug_header +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xbf7a37f1 cfs_signal_pending +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xc0ea7fc0 cfs_expr_list_parse +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xc2dfd791 libcfs_console_ratelimit +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xc39fd2f9 libcfs_panic_on_lbug +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xc3a458c1 libcfs_kkuc_msg_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xc49b1c62 cfs_percpt_atomic_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xc514e721 cfs_hash_del +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xca24b2dc cfs_hash_for_each_nolock +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xcb2160d3 cfs_cpt_of_cpu +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xcb385db9 libcfs_debug_binary +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xcc20e694 libcfs_nid2str +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xcc7e1d13 cfs_percpt_lock_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xccc45639 cfs_free_nidlist +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xcd38904c cfs_wi_exit +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xce1a88f2 libcfs_arch_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xced1fed2 cfs_hash_rehash +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xcf61bacb __cfs_fail_check_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xcf90528c cfs_cpt_table_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xd1319447 cfs_cpt_nodemask +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xd13befa9 cfs_percpt_lock_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xd3965252 cfs_hash_del_key +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xd5396536 cfs_cpt_set_node +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xd66d427e cfs_hash_dual_bd_lookup_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xd6a52be3 libcfs_printk +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xd96f406d cfs_cap_raise +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xdce448d0 cfs_cpt_set_cpumask +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xde17bb8d libcfs_isknown_lnd +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xde83075f libcfs_kvzalloc_cpt +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xdf2789c0 cfs_curproc_cap_pack +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xdf675bc7 cfs_hash_add_unique +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xe262a6e2 cfs_timer_is_armed +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xe2f91ce3 libcfs_debug_msg +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xe3bf6897 cfs_percpt_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xe45b62ff cfs_cpt_current +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xe6d83cf8 cfs_hash_bd_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xe7b54314 libcfs_arch_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xec1f56d5 libcfs_str2nid +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xeceac781 cfs_fail_val +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xee92bb75 cfs_percpt_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xf0246bf2 cfs_cpt_table_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xf3565b71 libcfs_debug_vmsg2 +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xf372d1c2 cfs_firststr +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xf440bb38 libcfs_kkuc_group_foreach +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xf782fbe6 cfs_cpt_weight +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xf8a8644b libcfs_id2str +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xf94025d1 libcfs_str2lnd +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xfa0d98ca cfs_cpt_set_cpu +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xfbd3438b cfs_hash_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xfde479b0 cfs_hash_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/libcfs/libcfs 0xfe565fa9 cfs_crypto_hash_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/llite/lustre 0x39e21738 ll_direct_rw_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/llite/lustre 0x72c044f6 ll_stats_ops_tally +EXPORT_SYMBOL drivers/staging/lustre/lustre/llite/lustre 0xb0690733 ll_osscapa_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/llite/lustre 0xc67609f5 ll_iocontrol_register +EXPORT_SYMBOL drivers/staging/lustre/lustre/llite/lustre 0xcd3cde92 ll_iocontrol_unregister +EXPORT_SYMBOL drivers/staging/lustre/lustre/lov/lov 0x1d3dd556 lov_stripe_unlock +EXPORT_SYMBOL drivers/staging/lustre/lustre/lov/lov 0x466c6625 lov_stripe_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/lov/lov 0x534d7651 lov_lsm_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/lov/lov 0x6f9bb6c3 lov_read_and_clear_async_rc +EXPORT_SYMBOL drivers/staging/lustre/lustre/lov/lov 0xc63a9861 lov_lsm_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/lov/lov 0xf82379f5 lov_device_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/mdc/mdc 0x0df21540 it_set_disposition +EXPORT_SYMBOL drivers/staging/lustre/lustre/mdc/mdc 0x5919b6d6 it_clear_disposition +EXPORT_SYMBOL drivers/staging/lustre/lustre/mdc/mdc 0x5ef8417d it_disposition +EXPORT_SYMBOL drivers/staging/lustre/lustre/mdc/mdc 0xfe26c5a6 it_open_error +EXPORT_SYMBOL drivers/staging/lustre/lustre/mgc/mgc 0xdc287f95 mgc_fsname2resid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0108274c cl_site_stats_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0115fb24 lprocfs_rd_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x01665e34 class_parse_net +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x01927951 llog_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x01ee2a57 lustre_common_put_super +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x01f0a1b6 cl_page_list_disown +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0260a150 cl_page_unmap +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x02663e82 capa_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x027bfd34 llog_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x02ce1bde lu_site_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x02d78be3 cl_io_lock_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0331a22e cl_object_has_locks +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x035852d0 lustre_swab_llog_rec +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x03752ecf cl_2queue_disown +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x03a14211 class_handle_hash_back +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x03c00b3b cl_env_nested_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x03f316e7 llog_write +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x04505deb cl_object_attr_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0559863f obd_export_evict_by_uuid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x055b40d9 class_export_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x057f6d4b class_find_old_param +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x05af1920 dt_quota_glb_features +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x05f84e88 LU_BUF_NULL +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0662aba5 cl_page_unassume +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x06950872 cl_page_at +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x07aa68bb lustre_swab_lustre_cfg +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x07d45876 obdo_set_parent_fid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x083942ff class_del_profile +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x08a40dd3 cl_req_completion +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x08a62f24 llog_reverse_process +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0925f339 dt_txn_callback_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x09425167 llog_copy_handler +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x095e1e9e cl_locks_prune +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0a8e4f32 lu_object_anon +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0a9e6398 cl_req_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0ab898b5 obdo_cpu_to_le +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0b513ee7 obd_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0c378d79 lustre_swab_llog_hdr +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0c9918a8 cl_page_list_discard +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0cf99bff dt_acct_features +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0d3c27a3 lu_context_key_revive +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0d764cb9 cl_2queue_init_page +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x0f487e58 cl_io_submit_sync +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x10b8b663 cl_io_prepare_write +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x11495519 lprocfs_write_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1179f3e6 cl_2queue_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x124f2791 dt_lookup_dir +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x12cdfc0e lu_context_exit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x12fbe884 cl_io_read_page +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x13901428 cl_page_flush +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1491dc30 lu_context_tags_clear +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x16387d54 lu_site_purge +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1720fe25 lu_site_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x187fb42b cl_page_delete +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x18ec38aa cl_req_attr_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x19b993d0 cl_lock_descr_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1abfa99c lu_dev_del_linkage +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1ac0917d cl_enqueue_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1b95ba4d cl_io_slice_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1c361836 class_find_client_obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1c911dab ldebugfs_remove +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1ca66c0a cl_io_rw_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1cc487c7 capa_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1e6e0845 llog_open +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1ee8dca8 llog_open_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1f14d9cb cl_object_kill +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1f3dfb0d lprocfs_stats_collect +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1f9ec0b1 lu_object_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1fb51271 obd_export_nid2str +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x1ffa6968 lu_env_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x200f06d8 dt_record_read +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x20437539 cl_object_header_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x20dbf3b2 dt_read +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x21307495 lu_buf_check_and_grow +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x21dc6d0e cl_page_lookup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x221826f1 class_parse_nid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x22221463 llog_is_empty +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x22ef5396 lu_context_enter +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x232cf02e cl_site_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x236220c6 cl_enqueue +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x24257baa class_search_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x24d6a587 llog_erase +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x24fc35be ldebugfs_register_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x252407df lu_kmem_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2547efae lustre_uuid_to_peer +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x259ebac6 obd_alloc_fail +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x26bcf413 class_new_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x275cdadc dt_key +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x275cdc7a cl_env_reexit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x286860f5 class_handle_free_cb +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x28d03247 cl_object_top +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x28f8a138 cl_page_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x297cf5e0 class_handle2object +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x29cef05c cl_page_size +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2a4df136 cl_page_vmpage +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2a72de4b llog_sync +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2a76db92 obdo_from_iattr +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2a79be0d lu_object_invariant +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2ae1cd79 kuc_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2b4c48e9 server_name2svname +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2bd435b3 lu_device_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2c4dabc1 llog_cat_close +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2c6f94bf dt_object_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2c733930 cl_page_assume +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2d972858 class_export_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2e11e884 dt_txn_callback_del +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x2f4080da cl_unuse_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x30f0a6f0 llog_declare_write_rec +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3242ed35 obdo_cachep +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x32c4f29f llog_cat_add_rec +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x337ac58a dt_store_resolve +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x35088ce9 cl_page_is_vmlocked +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x360e6c27 cl_env_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x361824b1 obd_exports_barrier +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x364266b1 cl_lock_intransit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x369be015 obdo_le_to_cpu +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x36e80293 lu_context_key_quiesce +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x37ed6e4b at_early_margin +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x383a719d lu_object_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x385ea527 cl_env_implant +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x38fb0c90 class_match_param +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3972b7a2 cl_page_find_sub +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3a005065 dt_otable_features +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3ae231ec lprocfs_seq_release +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3b6d0992 obdo_to_inode +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3bafd293 lprocfs_seq_read_frac_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3cca0afa lu_env_refill +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3f25c782 obd_max_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x3f94a1b5 ldebugfs_register +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4081561a cl_object_attr_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x410cf6fb lprocfs_wr_atomic +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x417358df llog_process_or_fork +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x43875917 class_detach +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x442d6abd cl_io_unlock +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x46c84ecd cl_page_prep +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x46fb3b97 cl_lock_state_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x474ed5bd lustre_swab_ll_fid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x47a13f54 cl_lock_is_intransit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x47b35f7d statfs_unpack +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x47dac23b cl_page_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x48088e35 cl_object_attr_unlock +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x482d3cb5 capa_cachep +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4840eacb lu_cdebug_printer +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x48b43657 cl_lock_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x48f64050 lu_context_key_degister_many +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x494cfb52 lustre_acl_xattr_merge2ext +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x49a0f6ea lustre_posix_acl_xattr_2ext +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x49a29223 lprocfs_find_named_value +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4a47827c llog_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4a4d53c5 cl_env_unplant +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4a58e4e4 obdo_from_la +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4ab92c39 class_unlink_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4abd07de lustre_posix_acl_xattr_filter +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4ac58713 obd_connect_flags2str +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4ad62da3 lu_context_key_revive_many +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4b77f7f1 class_add_conn +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4d13458b kuc_len +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4d2e074c lprocfs_init_ops_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4d391d9d cl_io_lock_alloc_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4de2987c lu_object_find_at +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4ecca44e cl_env_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x4fba4346 dt_directory_features +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x50a3ed46 cl_page_clip +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x50c7fc36 ptlrpc_put_connection_superhack +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x52ab7ee8 llog_cat_init_and_process +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x533ba823 lprocfs_wr_uint +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x53c7c434 lu_context_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x544a5167 la_from_obdo +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5477170c lprocfs_rd_server_uuid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x54885f87 ldlm_timeout +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x550f12ae llog_cat_reverse_process +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x558bec27 obd_ioctl_getdata +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x559b851e cl_vmpage_page +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x55cda1a5 cl_page_is_owned +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5627cce8 lprocfs_oh_tally +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x564e9d44 init_capa_hash +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x570d09ae lustre_swab_lu_fid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x57148c25 dt_txn_hook_start +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x572ee6a6 cl_lock_user_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x573df35f cl_page_completion +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5839ecd9 cl_lock_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5a20d896 obd_memory_max +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5a23a375 cl_lock_error +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5a64d92d lprocfs_counter_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5a82fdd0 llog_thread_key +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5a84f135 lu_context_key_quiesce_many +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5bc022c5 lprocfs_dt_rd_filestotal +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5bc84a1b lu_object_add_top +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5d34ae0d cl_lock_mode_name +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5d4c749e cl_lock_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5de01627 lprocfs_counter_sub +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5e48b552 cl_io_iter_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5ea03ee7 obdo_from_md +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5ea0452c llog_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5f19323a cl_lock_extransit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5fda4e68 cl_lock_slice_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x5fe97b73 block_debug_check +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6033b908 obdo_cmp_md +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x62cdbed4 cl_wait_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x62da3fda class_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x631fd7b9 lustre_ext_acl_xattr_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x634e401a class_destroy_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x64b66e9a lu_object_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x653028ae lprocfs_free_obd_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6589bff3 lprocfs_obd_rd_max_pages_per_rpc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x65af30ce lu_dev_add_linkage +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x65da56b9 lprocfs_rd_uint +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6635d63e lu_env_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x668ba6f5 cl_lock_signal +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x671b97fa cl_lock_closure_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6734adbd lprocfs_read_frac_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6783c548 cl_object_attr_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x68752f2c class_incref +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6876681c llog_cancel_rec +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6890d175 lustre_get_jobid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x698b61fc cl_lvb2attr +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x699bd270 lprocfs_alloc_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x69c42114 at_min +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6aa48e1a cl_object_header_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6bb6d421 lu_buf_realloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6f05cebf cl_wait +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6f3e6225 dt_quota_slv_features +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x6f81d612 cl_page_find +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x71f21eab class_manual_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7248dbe2 dump_lniobuf +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x731233d0 cl_lock_delete +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x742559b1 class_unregister_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x743af271 class_exp2cliimp +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x74aa95cf lprocfs_init_ldlm_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x752f71a8 class_get_profile +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x756a77f3 class_parse_nid_quiet +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x758b2bf2 lu_object_assign_fid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x75a4a160 cl_page_discard +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x75edeeb3 class_name2obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x760f4823 cl_lock_ext_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7645f585 obdo_refresh_inode +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x765fcef2 llog_cat_cancel_records +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x76d1ee76 lu_context_key_register +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x77d2089a class_name2dev +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7802fcd7 lustre_swab_llogd_conn_body +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x789796a1 obd_zombie_barrier +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x78f0b972 lprocfs_obd_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x790637ff cl_pages_prune +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7923f498 cl_lock_at +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7927ce7b llog_backup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x79368b2e cl_object_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7abbf53f llog_declare_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7b4fc57b at_max +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7b5cd641 cl_lock_peek +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7bb93b8f cl_page_list_assume +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7be9135b cl_page_list_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7d9e2659 cl_io_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7e045f90 cl_index +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7e27ecc7 cl_page_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7eb554ae cl_page_list_unmap +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7edcafa0 cl_env_reenter +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7f0e9980 cl_offset +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7f67a56d cl_lock_mutex_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x7fe5561a obd_dirty_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8031efb8 lprocfs_dt_rd_kbytestotal +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x806cc497 class_add_uuid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x807f1875 lu_site_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x80fc0ab6 lu_object_header_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x81742d89 obd_ioctl_popdata +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x820ccee7 cl_page_slice_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x82b95ca7 lprocfs_rd_u64 +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x830c2e2b cl_io_submit_rw +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x831f656c class_process_config +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8446b9a8 obdo_to_ioobj +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x846b4cde cl_page_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8489f086 obd_alloc_fail_rate +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x849e5385 obd_update_maxusage +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x84d34e70 cl_page_make_ready +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x851ec33b cl_req_slice_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x859c7fb0 class_uuid2obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x85bd2c89 lprocfs_rd_connect_flags +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x85d40144 obd_memory +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x861c85ba cl_io_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x862a18c0 lprocfs_obd_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x86882a9a dt_txn_hook_stop +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x87066946 lu_device_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8790b547 lu_object_find_slice +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x87f9a552 class_config_dump_llog +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x89607458 lu_object_find +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8a37a74b lu_context_key_register_many +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8a507206 cl_lock_modify +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8aa2c358 lprocfs_dt_rd_blksize +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8ae73976 cl_object_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8b4cb365 ldebugfs_seq_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8b5f4057 lu_context_tags_update +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8b713d6e cl_2queue_discard +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8ba6e479 lustre_swab_lu_seq_range +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8cb86861 dt_index_walk +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8dea935a lu_site_init_finish +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8e645c49 cl_page_list_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8e872a6c obd_export_evict_by_nid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8f67314c obd_dump_on_eviction +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x8fcc0df8 cl_object_prune +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9019507f class_devices_in_group +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x90a65c51 cl_page_list_del +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x90c8d327 lprocfs_init_mps_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x90cd0af5 dt_device_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9179b7aa cl_2queue_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x92e58479 obd_dump_on_timeout +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x93b46468 lu_session_tags_clear +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x94666f7b dt_version_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x94677235 lprocfs_clear_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x94784a1b cl_io_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x948bde05 class_get_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x948e6269 iattr_from_obdo +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x950780fc class_num2obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9512d507 lustre_acl_xattr_merge2posix +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x955f5220 ldlm_timeout_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x95735c6c at_extra +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x95aaf6c8 cl_page_top +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x95bafbc8 class_fail_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x95d41b34 dt_version_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x962035d6 cl_page_list_move +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x962282f2 class_disconnect +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x96d5ac18 cl_lock_at_pgoff +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9767adce class_uuid2dev +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x97789f3e lu_device_type_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x97d03783 at_history +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x981cddeb cl_io_start +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x99707597 class_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9977a859 cl_2queue_assume +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x99b35f27 _debug_capa +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9a2c68a2 cl_env_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9a4e8bd3 cl_lock_user_del +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9ad14fa0 class_import_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9b1b27a8 cl_lock_hold +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9b1ed9d8 obd_jobid_var +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9c0de0c0 cl_lock_request +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9c76d9d1 llog_write_rec +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9dbb17b6 lprocfs_dt_rd_kbytesfree +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9ee27bea cl_use_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0x9f6bc28b obd_max_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa06a0a4b dt_index_read +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa1178ff9 cl_env_nested_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa160da4a lu_object_header_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa4335379 cl_sync_io_note +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa43e8d9c class_put_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa46539bd class_disconnect_exports +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa4a1a4c0 cl_page_disown +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa4dbeabc cl_io_commit_write +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa4f06ece class_process_proc_param +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa5fb234f lprocfs_write_frac_u64_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa674c241 kuc_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa724da8e cl_io_sub_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa7a11d42 cl_lock_enclosure +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa7bee849 dump_exports +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa7c5fbfd lprocfs_alloc_md_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa862d221 lprocfs_oh_clear +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xa91a79e4 cl_lock_unhold +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xaa045d89 lprocfs_single_release +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xaa21b7a0 lustre_register_quota_process_config +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xaa4c9c3c cl_lock_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xab1f3bee obd_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xab6b5a8a llog_cat_process +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xabf45922 capa_decrypt_id +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xac7f1596 kuc_ptr +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xac9b3653 dt_find_or_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xace7c587 class_config_llog_handler +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xaf2c47a8 llog_cat_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xaf32c47c llog_close +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xaf5c6dbd lu_device_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xaf8aed23 class_conn2obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xafccdd2b cl_lock_mutex_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb01963a6 class_uuid_unparse +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb067545b lu_object_header_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb13a6ae0 lprocfs_free_md_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb18c766b cl_lock_state_wait +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb1b89b6d class_attach +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb21bb554 cl_req_page_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb29a3f54 cl_2queue_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb34453af lprocfs_exp_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb35519ed lustre_swab_cfg_marker +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb387293e cl_page_list_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb41998cd lustre_cfg_rename +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb4f8ee63 lprocfs_read_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb5789c64 class_exp2obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb69ed678 obd_devs +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb6ba5dd5 kuc_ispayload +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb741e387 cl_object_find +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb743ec6a dt_mode_to_dft +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb9be0fc5 cl_io_top +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb9be7e01 cl_sync_io_wait +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xb9dfa513 class_handle_unhash +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xba13cccc cl_page_own_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xba4b9da1 cl_lock_enqueue_wait +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xba985283 lustre_register_client_process_config +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbaae09d1 dt_declare_version_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbacac922 lprocfs_write_frac_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbb83e627 lustre_end_log +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbc436a0d obdo_cpy_md +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbcdd1293 cl_queue_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbe32f0fe llog_declare_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbf56750c class_disconnect_stale_exports +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbf90731b ldebugfs_obd_seq_create +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xbf9e695e lprocfs_oh_tally_log2 +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc0072b69 cl_io_rw_advance +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc0bf7ef2 obd_debug_peer_on_timeout +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc1b9a319 lprocfs_oh_sum +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc293ef51 ldebugfs_add_vars +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc2f76b1b cl_lock_weigh +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc3377407 lu_device_type_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc40c685f cl_lock_mutex_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc51c6420 cl_env_peek +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc5eab8d6 cl_object_glimpse +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc61f79bb capa_cpy +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc6b2fded dt_txn_hook_commit +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc77297e3 lu_stack_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc7904d69 class_conn2export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc79a469d cl_lock_hold_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc8092c5f cl_req_prep +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc85ef5e8 lustre_register_client_fill_super +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xc9b3c667 dt_lfsck_features +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xca67b743 llog_init_handle +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcb0ab67f obd_max_dirty_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcb1a05b0 lu_object_unhash +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcb2a086e cl_page_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xccac66a4 cl_page_list_splice +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcd7537ee get_devices_count +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcd8a604e lu_buf_check_and_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xce430dda llog_process +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcea40c30 lu_object_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcf53af81 lu_context_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcf97d0fc cl_lock_hold_release +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xcfbdbfde cl_page_is_under_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd0103eae cl_sync_io_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd08827c0 server_name2fsname +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd0b6995d lu_buf_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd10aa042 lustre_swab_llog_id +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd1e8130f class_connect +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd3a12a97 dt_store_open +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd3dedf29 cl_io_end +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd5c9da87 lprocfs_rd_timeouts +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd6083787 lprocfs_rd_name +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd6ab9139 lustre_register_kill_super_cb +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd6e3e21d cl_lock_disclosure +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd70fe669 lustre_swab_llogd_body +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd7bc8654 obd_timeout +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd7bfbc9c lprocfs_dt_rd_filesfree +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd7f7b340 cl_lock_mode_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd8ac3458 cl_lock_closure_build +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd8bfb8cd cl_lock_nr_mutexed +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd901be76 cl_conf_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd94212be lprocfs_counter_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd95671e9 cl_lock_release +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xd9bc4f75 dt_locate_at +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xda03a29a class_connected_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xda5b1ced class_find_param +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdac644c8 lustre_posix_acl_xattr_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdb13dce1 capa_list +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdbbf03e8 cl_type_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdc82e9b9 cl_lock_descr_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdcc40af0 class_check_uuid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdcff37f4 dt_record_write +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdd335b67 cl_page_own +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdd802c31 cl_lock_is_mutexed +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xddd20b54 class_handle_hash +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xde682d7b cl_unuse +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xde7d985b obd_dirty_transit_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xdf623799 lprocfs_stats_alloc_one +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe028cf84 capa_encrypt_id +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe1643086 cl_lock_discard_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe179c225 class_register_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe29a7df4 cl_attr2lvb +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe2eb4470 class_get_next_param +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe3b27d89 lprocfs_at_hist_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe3cdef40 lu_object_locate +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe41f8585 llog_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe57ffff7 cl_site_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe582cdaf lprocfs_rd_conn_uuid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe583b23b lu_kmem_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe660903f dt_object_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe68fc250 llog_exist +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe7d83236 cleanup_capa_hash +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe7ebca81 lprocfs_rd_atomic +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xe8e84c32 class_match_nid +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xea09e436 cl_io_is_going +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xea23aa35 lustre_process_log +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xea6b2e38 cl_io_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xec4431e2 lu_env_refill_by_tags +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xec728a8e class_import_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xec7d6b85 obd_timeout_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xeca55214 lprocfs_alloc_obd_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xecbb6b30 cl_page_gang_lookup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xecc3132a __llog_ctxt_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xee68bc29 lu_session_tags_update +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xee7bc97c lu_context_key_degister +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xee910004 dt_device_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xeeeb79fa do_lcfg +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xef13f9f9 class_config_parse_llog +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xef76f858 block_debug_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xef8f5289 capa_lookup +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xefaf525f lu_site_stats_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xefd4f862 cl_lock_closure_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf01e2527 server_name2index +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf197c489 lu_object_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf1b2ca90 ldebugfs_add_simple +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf21e4c2d llog_cat_process_or_fork +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf23e46e7 lprocfs_rd_state +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf2fd6695 statfs_pack +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf3272d74 lu_context_key_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf490d5f9 class_del_profiles +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf56227be cl_lock_get_trust +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf600a4c9 cl_page_header_print +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf60d4659 capa_count +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf619cd18 obdo_from_inode +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf61fb94d class_conn2cliimp +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf6c8264e llog_cat_declare_add_rec +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf6dfc2a1 md_from_obdo +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf7020831 lprocfs_dt_rd_kbytesavail +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf7f42641 lprocfs_free_stats +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf9875596 class_new_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xf9f31077 cl_page_list_own +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfa286d70 lu_object_put_nocache +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfa30b826 class_decref +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfa782311 ldebugfs_add_symlink +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfa813d06 capa_hmac +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfb0ef584 cl_io_loop +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfbc38e17 cl_req_page_done +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfbea0098 lu_types_stop +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfc38601f cl_stack_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfc7f18d0 obd_pages_max +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfcb7b0c6 cl_io_iter_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfd68d17a class_notify_sptlrpc_conf +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfd8a62ee cl_page_cache_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfd8f5cf4 lu_buf_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfdbe1557 lprocfs_write_u64_helper +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfe27309c dt_try_as_dir +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfe92a812 lu_context_refill +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xff57e92d class_match_net +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xffbb1523 lu_device_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/obdclass/obdclass 0xfffc1f11 lustre_swab_ost_id +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0029dee7 target_send_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x00cb99c1 RQF_LDLM_INTENT_GETXATTR +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x00d95039 ptlrpcd_decref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x011cd8cb ptlrpc_req_finished_with_imp_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x016c423c ptlrpc_nrs_policy_register +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x01781305 ldlm_extent_shift_kms +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x01d6ef7f ldlm_pools_recalc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x02236c54 ptlrpc_unregister_service +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0240cd3f ptlrpc_free_rq_pool +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0369c7bd lustre_pack_reply_flags +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x03fe52d3 ptlrpc_set_add_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x048b59d5 lustre_msg_set_handle +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x050a3dae ptlrpc_reconnect_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0514df6e req_capsule_server_grow +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0515f93b RQF_FLD_QUERY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x059fd402 req_capsule_client_dump +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x06b3942b lustre_swab_lov_user_md_objects +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x06bc1650 ldlm_reprocess_all_ns +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x071fc74a RQF_LDLM_ENQUEUE_LVB +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x07605c7d interval_find +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x08bb2d27 lustre_swab_obd_ioobj +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x095587d0 lustre_msg_buflen +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0a3130b0 RMF_MDT_EPOCH +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0ac252b2 lustre_msg_set_jobid +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0ac54708 lustre_errno_hton +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0b9d0899 sptlrpc_sec_destroy +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0bcacb5d RMF_MDS_HSM_USER_ITEM +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0c187b91 ptlrpc_prep_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0c2d9c43 lustre_swab_lip_header +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0cf343dd RQF_LDLM_INTENT_BASIC +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0dda9b6c sec2target_str +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0eebf342 sptlrpc_cli_ctx_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x0f408da4 client_connect_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x104716a5 lustre_pack_request +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x10f18f20 interval_iterate_reverse +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x115017f6 req_layout_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x117d2ec5 sptlrpc_sec_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x122fdcb9 ptlrpc_invalidate_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x12b6f5a3 ptlrpc_connection_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x135cd7da ptlrpc_cleanup_imp +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x14411f28 ldlm_cli_enqueue_local +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x14708afc lustre_swab_mdt_rec_reint +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1483eca4 ldlm_lock_addref_try +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x14d192db lustre_msg_size +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x15a3e4db RMF_GETINFO_VAL +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x171697a9 ptlrpc_replay_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x172fb86d lustre_msg_hdr_size +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1747d8b3 ldlm_lockname +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x17950f60 RQF_SEC_CTX +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x189c508f req_capsule_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x19108a0f RQF_OST_DISCONNECT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x193ab9ed client_import_add_conn +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x19c08934 RQF_LDLM_INTENT_CREATE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1a6a3ce9 RQF_OST_GET_INFO_LAST_ID +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1a9b76aa RMF_OBD_QUOTACTL +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1abd3258 RMF_SETINFO_VAL +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1ace4b5f RQF_LDLM_BL_CALLBACK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1ad6c330 RMF_EAVALS +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1b6ff9b7 ptlrpc_request_alloc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1bae0270 interval_iterate +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1be21715 lustre_msg_size_v2 +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1c300d8e lustre_msg_get_slv +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1c609505 ptlrpc_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1d043548 lustre_msg_set_op_flags +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1dc2051d RMF_SEQ_OPC +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1de9c288 lustre_swab_layout_intent +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1e21c1a7 ldlm_namespace_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1e5e8f41 ptlrpc_unpack_rep_msg +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1e89e331 sptlrpc_sec_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1e8e48a4 sptlrpc_flavor_has_bulk +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1eb2a65f RQF_OST_GETATTR +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1ebfc108 ldlm_pool_del +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1ee46b51 lustre_init_msg_v2 +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x1ee9eb3c RQF_MDS_QUOTACTL +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2096f5b5 RQF_OST_SET_GRANT_INFO +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x20d6b82c RQF_LDLM_INTENT_QUOTA +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2175bf56 ldlm_resource_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x218a36ce ldlm_cli_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x219391ec RMF_EAVALS_LENS +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x21adb4c2 sptlrpc_cli_unwrap_bulk_read +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x23136b9d ptlrpc_lprocfs_brw +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x233790b5 RMF_OST_BODY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x244e5558 lustre_msg_get_version +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x247fe28b ldlm_lock_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x24aafdba RMF_MGS_TARGET_INFO +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x24ebd429 ptlrpc_save_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2585a629 RMF_SEQ_RANGE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2587513c RQF_LDLM_CP_CALLBACK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x25df8e43 ldlm_prep_enqueue_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x269554ce RQF_LDLM_INTENT_GETATTR +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x26f99d16 RQF_MGS_CONFIG_READ +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x273c9b2f ptlrpc_request_set_replen +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x285e5b99 lustre_msg_set_conn_cnt +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2915e72d llog_client_ops +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x29e0869a sptlrpc_get_hash_name +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2a63a472 lustre_swab_ptlrpc_body +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2aa299e3 ptlrpc_request_committed +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2ba2c623 ptlrpc_set_wait +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2c00c60d ptlrpc_sample_next_xid +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2c7daa98 req_capsule_get_size +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2ca92fa8 ldlm_lock_decref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2ccd5b87 ldlm_cli_cancel_list_local +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2d56f168 ptlrpc_pinger_ir_up +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2d798316 RMF_MGS_CONFIG_RES +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2e4562fe RQF_LLOG_ORIGIN_HANDLE_CREATE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2e4ca396 RQF_LDLM_INTENT_UNLINK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2ecd7515 lustre_msg_check_version +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2f0e4f87 RQF_OST_QUOTACTL +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2f793215 lustre_swab_ost_body +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2fab3539 lustre_swab_ost_lvb_v1 +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x2fd2f737 lustre_msg_set_limit +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x301d4fcd RQF_MDS_READPAGE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x302937e0 RQF_MDS_CONNECT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3060b9c6 sptlrpc_rule_set_expand +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x308298b1 ldlm_enqueue_pack +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x31838cb4 RMF_IDX_INFO +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3261b862 RQF_OST_SYNC +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x33bb7761 ldlm_typename +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x351fa0fc lprocfs_wr_evict_client +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x35939a3d lustre_swab_fiemap +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x35b10709 ptlrpc_abort_inflight +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x360585a5 client_obd_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x382b1241 ptlrpc_request_bufs_pack +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3835ab4b RQF_LLOG_ORIGIN_CONNECT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3858fb94 RMF_OBD_STATFS +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x38c01799 RQF_LDLM_CALLBACK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x38fce533 lustre_msg_set_versions +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3903a570 ldlm_pool_set_clv +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x39296503 ldlm_register_intent +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x398018c6 req_capsule_server_sized_swab_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x39f60a5f RMF_OST_ID +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x39f64064 lustre_pack_reply_v2 +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3a1e4bcb __lustre_unpack_msg +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3a4baddc sptlrpc_enc_pool_put_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3a90a5cf ptlrpc_service_health_check +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3aa694cd ptlrpc_prep_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3ab90f6e lustre_msg_bufcount +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3ac00716 lustre_swab_hsm_user_state +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3af14b11 ptlrpc_queue_wait +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3b2816ba req_capsule_server_swab_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3b31af1c ptlrpc_register_service +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3b6b7cba dump_ioo +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3baf0509 ldlm_glimpse_ast +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3bedb0c7 RMF_LLOGD_CONN_BODY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3bee6f10 ldlm_resource_foreach +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3c63e62b RQF_MDS_REINT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3c8b16ab lustre_swab_ost_lvb +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3ca50f33 RQF_MDS_HSM_CT_REGISTER +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3d7dc5f9 ldlm_pools_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3dc47695 lustre_msg_get_magic +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3e96f35f ptlrpc_resend +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3f034caf lustre_msg_get_status +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3f29dac7 ptlrpc_buf_set_swabbed +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x3f752e78 RQF_MDS_STATFS +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x41008cef RQF_LDLM_CANCEL +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x42612b90 ptlrpc_request_alloc_pool +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x426c927f ptlrpc_lprocfs_register_obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x43168488 RQF_MDS_RELEASE_CLOSE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x43705ee4 RQF_LOG_CANCEL +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x43d7efc8 lustre_msg_set_transno +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x44036eda RQF_MDS_GET_INFO +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x44069d6f sptlrpc_register_policy +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x440c2a71 RMF_FIEMAP_VAL +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x44345bb1 sptlrpc_gc_add_sec +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4481591d RQF_OST_SET_INFO_LAST_FID +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x45028366 lock_res_and_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x450e3c86 ldlm_pool_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x45d05893 lustre_swab_lustre_capa +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x45e30cea lustre_swab_ldlm_intent +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x45f8665d ldlm_cli_enqueue_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x46dc00f1 ptlrpc_check_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x47bd9aa4 req_capsule_client_sized_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x47f5e903 RMF_MDS_HSM_REQUEST +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x487af3d4 ldlm_lock_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x48dca74f lprocfs_wr_ping +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x48e32404 ptlrpc_disconnect_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x49780d98 ptlrpcd_add_rqset +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x498c03c5 lustre_msg_set_last_xid +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x49bf9e88 sptlrpc_cli_enlarge_reqbuf +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4a02b595 sptlrpc_gc_add_ctx +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4a5a2416 RMF_DLM_REQ +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4bea0690 ldlm_blocking_ast_nocheck +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4d57a8de ptlrpc_commit_replies +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4d7580d0 lustre_swab_hsm_user_item +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4e1706e5 lustre_msg_buf +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4e4f797e req_capsule_set_size +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4e696b96 ptlrpcd_queue_work +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4eb03a6f ptlrpcd_destroy_work +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4f05a125 sptlrpc_cli_wrap_bulk +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4f766c3b lustre_swab_generic_32s +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4fbe8fa7 ldlm_resource_putref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x4fc72ca3 ldlm_lock2desc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x50443f6a ptlrpc_init_client +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x50d4bef2 sptlrpc_cli_ctx_wakeup +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x50dd74f8 RMF_STRING +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x525801f9 ptl_send_rpc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x52c62150 RMF_RCS +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x53411557 RMF_DLM_REP +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x53a4a004 bulk_sec_desc_unpack +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x53c5d7c1 ptlrpc_prep_bulk_imp +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x54ae5021 ldlm_lock_addref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x54c8dd0b sptlrpc_gc_del_sec +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x555eb7fe RQF_MDS_HSM_STATE_SET +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x588035b4 RMF_UPDATE_REPLY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x595ab175 lustre_swab_obd_quotactl +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x596582bf RMF_GETINFO_VALLEN +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5a057439 interval_search +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5af0d02a ldlm_lock_dump_handle +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5b6ba895 lustre_packed_msg_size +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5be0ab69 ptlrpc_stop_all_threads +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5bf54c06 ldlm_replay_locks +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5c6a3a83 RQF_SEQ_QUERY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5ca1b491 lustre_swab_close_data +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5caae213 ptlrpc_next_xid +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5e0b19b1 RMF_CLUUID +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5e2b7558 lustre_msghdr_get_flags +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5e6f435d RQF_OST_BRW_READ +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5e80f899 RQF_LLOG_ORIGIN_HANDLE_READ_HEADER +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5ec3284d RQF_MDS_HSM_CT_UNREGISTER +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5ef831ee lustre_msg_get_handle +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5f46ff60 req_capsule_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5f96ccdd ptlrpc_connection_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x5fc9a455 RMF_CLOSE_DATA +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6042bc15 RQF_MDS_REINT_RENAME +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x604e2505 RMF_SWAP_LAYOUTS +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x60731870 sptlrpc_import_flush_all_ctx +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x607ec932 lustre_msg_set_buflen +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x60cd26ad RQF_MDS_REINT_CREATE_SYM +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x61646e1b RQF_MDS_SWAP_LAYOUTS +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x618ad203 RQF_OST_GET_INFO_LAST_FID +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x62aaae3f RQF_MDS_HSM_REQUEST +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6315dd4c RMF_LLOGD_BODY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6352a62d ldlm_get_ref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x647b6e48 lustre_swab_ldlm_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x653723dc RMF_LOGCOOKIES +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x670f406d ldlm_pool_shrink +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x685eeaba RMF_DLM_GL_DESC +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x68ac094d req_capsule_server_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x68cb2541 interval_is_overlapped +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x68f49e5e ptlrpc_expired_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6912990a RQF_OST_QUOTACHECK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x696ba811 lustre_msg_get_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x69c9f04d RQF_MDS_REINT_LINK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6a3785c9 RMF_EADATA +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6adb76e0 _ldlm_lock_debug +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6ae8966b lprocfs_rd_pinger_recov +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6be76cf3 ptlrpc_req_set_repsize +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6c57bbf6 dump_obdo +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6d29271f target_print_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6d390ee3 req_capsule_client_swab_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6d72828c sptlrpc_conf_log_update_end +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6d7931cc RQF_UPDATE_OBJ +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6dcd2132 sptlrpc_lprocfs_cliobd_attach +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6dfa5c76 client_destroy_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6e4f5587 ptlrpc_set_add_cb +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6ed20499 ldlm_revalidate_lock_handle +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6efa82b0 RQF_MGS_TARGET_REG +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6f6dc736 lustre_swab_mdt_remote_perm +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x6fb92092 sptlrpc_flavor2name_bulk +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x703538e4 lustre_swab_hsm_current_action +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x707f9b1c ldlm_pool_set_slv +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x70813481 ptlrpc_unregister_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x723d43b6 sptlrpc_rule_set_dump +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x725a892c RQF_MDS_REINT_OPEN +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7294e2d4 ptlrpc_schedule_difficult_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x73eb207d req_capsule_client_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x74840056 lustre_msg_set_status +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7547059d ptlrpc_lprocfs_unregister_obd +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x75a2c40d ldlm_put_ref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x76b728e5 lustre_swab_update_buf +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x77840c82 sptlrpc_rule_set_choose +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x77a621b7 sptlrpc_cli_unwrap_bulk_write +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x78bf9136 lustre_swab_ldlm_lock_desc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7a5df704 ptlrpc_register_bulk +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7a832f10 RMF_CONN +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7a87f862 ptlrpc_send_error +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7b158da4 lustre_swab_ldlm_request +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7b5fa89e ptlrpc_pinger_sending_on_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7bbf8001 RMF_MDT_BODY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7c4c6107 RQF_LDLM_CONVERT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7c8cb434 ldlm_lock2handle +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7d1ecd7f RQF_LDLM_INTENT_LAYOUT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7d41a8b9 RQF_QUOTA_DQACQ +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7dbb3b3a llog_initiator_connect +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7dc0e7cd RMF_QUOTA_BODY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7dfb3c18 lustre_msg_clear_flags +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7f4925d8 interval_expand +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7f4c99b1 ldlm_expired_completion_wait +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7f5a1cc7 lustre_msg_set_type +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x7f6d2357 lustre_msg_is_v1 +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x80a9e8c3 lustre_msg_get_last_xid +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x80ecb4e3 RMF_MDS_HSM_CURRENT_ACTION +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x817d7f1f lustre_msg_add_flags +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x826d3c4f RQF_LDLM_GL_CALLBACK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x827c6f7b ptlrpc_wake_delayed +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x82cc2075 ldlm_completion_ast_async +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x837efb00 RMF_NAME +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x85135801 RMF_DLM_LVB +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x85a9e0d8 RMF_FID +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x85eecf67 sptlrpc_get_hash_alg +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x85fca49c ptlrpc_request_addref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8602af86 lprocfs_wr_pinger_recov +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x863db6eb RMF_HSM_USER_STATE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8674b17f ldlm_lock_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x86fa8c3b ldlm_cli_convert +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8760beaf lustre_swab_ldlm_policy_data +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x876c2551 RMF_GETINFO_KEY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x87bf7b3c sptlrpc_get_next_secid +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x880b2ad8 ldlm_namespace_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x882e327b unlock_res_and_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x886a58e8 sptlrpc_import_flush_my_ctx +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8872f3d2 RMF_SETINFO_KEY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x88fff52d RMF_CAPA2 +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x89baaa3f ldlm_init_flock_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x89ec9a94 ptlrpc_prep_fcset +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x89f9edf7 RQF_MDS_REINT_SETXATTR +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8a1ea476 lustre_swab_hsm_state_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8a257736 RQF_MDS_HSM_STATE_GET +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8ab6cc74 ldlm_resource_iterate +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8ac440fa ptlrpc_uuid_to_connection +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8b6d1fe9 lustre_pack_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8b854254 lustre_swab_mgs_config_res +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8cb71d4b RQF_MDS_REINT_CREATE_SLAVE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8d77ea75 lustre_msg_set_flags +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8da3fca7 lustre_msg_add_version +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8e2d697f ptlrpc_connect_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8e9abe4d RMF_GENERIC_DATA +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8f0aceac RQF_MDS_HSM_ACTION +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x8fec0451 lustre_msg_get_limit +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x91690fa9 ldlm_cancel_resource_local +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x919c4ce3 RMF_OBD_ID +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x91c678ea ptlrpc_deactivate_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x91cf58d3 RQF_MDS_PIN +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9228392f lustre_swab_mdt_body +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x937b1ee0 lustre_swab_mdt_ioepoch +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x93d44760 sptlrpc_cli_ctx_expire +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9553c633 RQF_LDLM_INTENT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x95d08f0c lustre_swab_mgs_target_info +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9645958d __ptlrpc_free_bulk +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9660ace0 RMF_FLD_MDFLD +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x967bfd52 RQF_OBD_PING +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x969c4915 req_capsule_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9798f2f1 RQF_MDS_GETATTR +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x980fcfdc ptlrpc_connection_addref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9911eba2 ldlm_namespace_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9999cf7a dump_ost_body +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9a258886 RQF_MDS_GETSTATUS +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9a6f2f6d lustre_msg_set_opc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9a6f9134 ldlm_namespace_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9b88f6ce RMF_NIOBUF_REMOTE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9bb5198b RQF_MDS_CLOSE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9c017d8e ldlm_lock_downgrade +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9c2edc64 ldlm_pool_get_slv +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9c533be9 ptlrpc_hpreq_handler +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9c9c3feb client_obd_cleanup +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9d09b4dc ptlrpc_req_xid +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9d7ea314 sptlrpc_pack_user_desc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9e500c16 ldlm_prep_elc_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0x9fb088f1 lustre_swab_lov_mds_md +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa0d7fde1 target_pack_pool_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa10f0d3d RMF_UPDATE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa157c28f client_disconnect_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa163f4c3 dump_rniobuf +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa2244636 RQF_MDS_GETATTR_NAME +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa22c0086 ldlm_error2errno +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa3a0e446 ldlm_lock_allow_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa3d2a6ee RMF_CAPA1 +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa402064e req_capsule_other_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa47787ef RMF_PTLRPC_BODY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa4a2d089 RQF_OST_PUNCH +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa4bea5ef lustre_swab_lmv_user_md +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa5458dad ldlm_lock_decref_and_cancel +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa5880075 ldlm_errno2error +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa58e0b2c sptlrpc_enc_pool_get_pages +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa6964ec9 ldlm_namespace_new +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa6c436ca RQF_MDS_WRITEPAGE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa6e73d2a lustre_free_reply_state +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa7d55cc3 RQF_MDS_REINT_CREATE_RMT_ACL +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa7e360b1 RMF_OBD_IOOBJ +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa7ec567d RMF_CONNECT_DATA +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa9704f80 lustre_msg_get_last_committed +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa9938095 ldlm_destroy_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa9c4658e lustre_swab_lov_user_md_v3 +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xa9edf09d RQF_OBD_IDX_READ +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xab2e1713 ldlm_lock_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xab31ad74 ptlrpc_fail_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xac245e3c sptlrpc_import_sec_ref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xacd6a7d7 lustre_swab_ost_last_id +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xacfe95dd ldlm_cli_cancel_unused_resource +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xad96b8a5 ldlm_pool_setup +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xadd000fb sptlrpc_target_update_exp_flavor +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xaddc3979 lustre_swab_lustre_capa_key +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xadfc98e2 ldlm_cli_cancel_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xae6d347f ldlm_pool_get_lvf +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xae7f1fef sptlrpc_cli_ctx_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xae9de7f4 ptlrpc_add_timeout_client +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xaf4e9658 RQF_MDS_SYNC +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xaf50a0d6 RMF_HSM_STATE_SET +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xaf5264db ldlm_lock_allow_match_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb032312e ldlm_lock_fail_match_locked +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb0751fa4 RQF_LLOG_ORIGIN_HANDLE_DESTROY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb0783066 ptlrpc_at_set_req_timeout +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb0888a59 ldlm_completion_ast +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb1b43d8a dump_rcs +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb1df9d90 req_capsule_field_present +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb27c2374 lustre_msg_get_jobid +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb291473d lustre_msg_early_size +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb29847a1 ldlm_flock_completion_ast +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb3dcaa02 ptlrpcd_alloc_work +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb3fee127 ptlrpc_recover_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb4a7ecf3 lustre_msg_add_op_flags +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb4b531ba ptlrpc_request_alloc_pack +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb4e5f89c ldlm_cli_enqueue +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb5044f78 req_capsule_server_dump +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb512ebc2 sptlrpc_parse_flavor +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb5bce313 req_capsule_filled_sizes +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb61cb95a RQF_MDS_GETXATTR +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb68476df interval_erase +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb6aafd03 RQF_MDS_DONE_WRITING +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb7b38189 RMF_MDT_MD +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb7fa3cc8 RMF_LLOG_LOG_HDR +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb81457cf ldlm_get_enq_timeout +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb87f1fb8 ptlrpc_unregister_bulk +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb903634e RQF_OST_CONNECT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb94afdbd ldlm_lock_fail_match +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb9b631cf lustre_swab_mgs_config_body +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb9cd7c01 ldlm_resource_unlink_lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xb9f7dd61 ldlm_lock_change_resource +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xba93789f req_capsule_has_field +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbaa76097 lustre_msg_string +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbc1370dc lustre_shrink_msg +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbd83bc44 RQF_OBD_SET_INFO +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbe47bc7e ping_evictor_start +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbeb7e023 ptlrpc_set_next_timeout +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbef769cc RQF_CONNECT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbf98b86f RQF_MDS_QUOTACHECK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbfe4aa09 ptlrpcd_wake +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xbffd4313 RQF_OST_BRW_WRITE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc06c4670 lustre_msg_get_versions +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc0867da7 RMF_REC_REINT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc0cdf55e RMF_MGS_SEND_PARAM +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc138ab31 ldlm_cli_update_pool +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc16864e1 ptlrpc_restart_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc172e094 ptlrpc_nrs_policy_unregister +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc1ce7cf8 ptlrpc_req_finished +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc2986d28 lustre_swab_ldlm_res_id +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc2b1af57 RQF_MGS_SET_INFO +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc2be922a RMF_SYMTGT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc530b11d ptlrpc_error +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc54fe52a client_import_del_conn +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc559a634 RMF_LAYOUT_INTENT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc60a60e1 RQF_OST_STATFS +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc694be4b RQF_LLOG_ORIGIN_HANDLE_PREV_BLOCK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc763fabc sptlrpc_process_config +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc79b9c67 ldlm_pools_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc7ca8257 RQF_MDS_REINT_SETATTR +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc7e47564 ptlrpc_interrupted_set +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc7f48c16 ptlrpc_obd_ping +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc8e8e260 sptlrpc_svc_ctx_invalidate +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc8f586a9 ptlrpc_connection_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xc9be73e1 sptlrpc_get_bulk_checksum +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xca5a81ec ptlrpc_pinger_ir_down +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xcb2cc0cf lustre_swab_lquota_lvb +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xcb2ceaff sptlrpc_secflags2str +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xcc788af8 ldlm_cli_cancel_list +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xce1a689b sptlrpc_enc_pool_add_user +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xce86066d lustre_msg_set_slv +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xceb9e676 ldlm_destroy_flock_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xcec513c9 RQF_MDS_UNPIN +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xced015be sptlrpc_rule_set_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xcf7fe35e ptlrpc_pinger_add_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xcf9963db lustre_msg_get_op_flags +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xcf9aab6a RQF_MDS_DISCONNECT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd08144a0 req_capsule_server_pack +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd1ca99a0 ptlrpc_buf_need_swab +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd2983334 lustre_swab_swap_layouts +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd2e0d4eb lustre_msg_get_opc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd2fe0a4e sptlrpc_unregister_policy +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd3aea23d lprocfs_wr_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd3dae408 ldlm_it2str +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd67a5d7b lustre_swab_update_reply_buf +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd69e0a27 RQF_MDS_IS_SUBDIR +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd6c3ebfb RMF_FIEMAP_KEY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd7910326 lustre_swab_obd_statfs +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd7d33d76 do_set_info_async +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd8b91b3e lustre_swab_lov_desc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd8f06300 RQF_MDS_HSM_PROGRESS +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd9561861 RQF_LDLM_INTENT_OPEN +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xd9ff7a1d ptlrpc_mark_interrupted +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xdb1fb0a2 RQF_MDS_REINT_CREATE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xdb9d5a6a lustre_swab_niobuf_remote +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xdc75c8a9 ptlrpc_start_threads +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xdc7a9c2a ldlm_pool_add +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xdd0b8309 sptlrpc_req_replace_dead_ctx +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xdd0ffb04 sptlrpc_flavor2name +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xdd30d7bf RMF_ACL +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xddc40a85 lustre_msg_get_flags +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xde12d36b RMF_MDS_HSM_ARCHIVE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xde555d70 sptlrpc_enc_pool_del_user +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xde641972 ptlrpc_pinger_del_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xdee87192 sptlrpc_conf_log_update_begin +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xdf701ae7 lustre_swab_fid2path +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xdfed5d02 ldlm_pool_get_limit +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe0832736 ptlrpc_init_rq_pool +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe0cc694c RQF_LLOG_ORIGIN_HANDLE_NEXT_BLOCK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe0ddf79f ptlrpc_retain_replayable_request +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe17be287 __ptlrpc_prep_bulk_page +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe1978ee6 client_import_find_conn +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe1fefa09 ptlrpc_cleanup_client +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe20bea10 ptlrpc_request_pack +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe3757815 ldlm_pool_get_clv +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe40e0a50 lustre_msg_get_transno +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe5051698 ptlrpc_unpack_req_msg +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe57bd972 sptlrpc_current_user_desc_size +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe5a1ccfa ldlm_init_export +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe5e8169b lustre_errno_ntoh +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe643998e RQF_OST_SETATTR +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe69c70bd ptlrpc_prep_req_pool +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe6f0dc96 RQF_OST_CREATE +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe7062b5f RMF_U32 +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe7512278 ptlrpcd_addref +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe816f04d ptlrpc_send_reply +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe85b6da3 lustre_swab_obdo +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe85dd3fc ptlrpc_init_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xe9f00bd8 ldlm_lock_convert +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xeabac4fc sptlrpc_rule_set_merge +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xeb8f30bf _debug_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xebb64e68 req_layout_fini +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xec226f66 ping_evictor_stop +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xec939a00 RQF_MDS_REINT_UNLINK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xec9857da req_capsule_init_area +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xecace5c1 RQF_OST_GET_INFO_GENERIC +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xed1c10d6 ptlrpc_connection_put +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xedcb740d sptlrpc_name2flavor_base +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xee061fe4 sptlrpc_target_sec_part +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xef1aeca9 RMF_FLD_OPC +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xef28efaf sptlrpc_conf_client_adapt +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf0241d6e lustre_swab_hsm_progress_kernel +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf084aa56 sptlrpc_target_export_check +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf0d52b5f ptlrpc_pinger_suppress_pings +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf0e21158 ldlm_cli_cancel_unused +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf10c77cd req_capsule_shrink +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf1300275 _sptlrpc_enlarge_msg_inplace +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf1e38c18 ptlrpc_resend_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf277c125 RQF_OST_GET_INFO_FIEMAP +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf27d49dc sptlrpc_target_choose_flavor +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf2c7f793 ptlrpc_set_destroy +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf35f132b lustre_swab_ldlm_resource_desc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf3969fc5 __ldlm_handle2lock +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf3c11b59 ldlm_blocking_ast +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf3d44370 RQF_OST_DESTROY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf42f8e8a req_capsule_extend +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf43540b9 lustre_swab_mgs_nidtbl_entry +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf45085e1 sptlrpc_conf_log_stop +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf55c033b RMF_MGS_CONFIG_BODY +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf584a16b sptlrpc_part2name +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf596e9ae sptlrpc_conf_log_start +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf5de4ccf ldlm_pool_set_limit +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf607fc23 sptlrpc_flavor2name_base +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf617ab8a lustre_msg_get_conn_cnt +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf697b756 ldlm_dump_all_namespaces +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf7408f84 lustre_swab_hsm_request +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf75d12d3 ptlrpc_request_free +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf7ba40c0 RMF_MDS_HSM_PROGRESS +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf85cb27e sptlrpc_parse_rule +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf870fed9 RQF_LDLM_GL_DESC_CALLBACK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf9051bd6 RQF_QC_CALLBACK +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf94e41e0 deuuidify +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf973aa93 lustre_swab_lov_user_md_v1 +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf9ee11e2 lustre_msg_set_last_committed +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xf9f72dfc RMF_TGTUUID +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xfa51688d interval_insert +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xfa7d4d57 ldlm_namespace_dump +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xfc186744 ptlrpc_add_rqs_to_pool +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xfc2fa83f ptlrpc_del_timeout_client +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xfc4a0b6a ptlrpc_set_add_new_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xfc88cf8a ptlrpc_set_import_active +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xfcb6dd87 req_capsule_server_sized_get +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xfcbabebd ldlm_namespace_foreach +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xfd148bf8 RMF_LDLM_INTENT +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xfe8352a4 ptlrpc_activate_import +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xfed3b5a9 ldlm_pool_init +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xff02a0e9 ldlm_lock_set_data +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xffc807e8 sptlrpc_unpack_user_desc +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xffe1b040 ptlrpcd_add_req +EXPORT_SYMBOL drivers/staging/lustre/lustre/ptlrpc/ptlrpc 0xffe29c3f RQF_LDLM_ENQUEUE +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x04e30e3a iscsit_tmr_post_handler +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x1477fc86 iscsit_build_text_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x1a6de918 iscsit_stop_dataout_timer +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x1b9110d0 iscsit_allocate_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x1ef734d9 iscsit_build_task_mgt_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x1f7ea96a iscsit_increment_maxcmdsn +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x1fa259d1 iscsit_setup_nop_out +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x2c2a59e4 iscsit_find_cmd_from_itt +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x3dd5d0d1 iscsit_logout_post_handler +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x3fed3c91 iscsit_build_logout_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x4209a85b iscsit_process_scsi_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x472a48e6 iscsit_handle_task_mgt_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x4accdaeb iscsit_check_dataout_payload +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x4acf21b4 iscsit_build_reject +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x4db1c7b1 iscsit_process_nop_out +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x4eb7eaac iscsit_setup_text_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x70cc9274 iscsit_sequence_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x74bea9ed iscsit_build_nopin_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x767977c1 iscsit_release_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x77781a1b iscsit_setup_scsi_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x77b5a971 iscsit_handle_logout_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x8a22594e iscsit_process_text_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xaf5496e1 iscsit_set_unsoliticed_dataout +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xc45588ff iscsit_cause_connection_reinstatement +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xd19ef062 iscsit_register_transport +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xd667ab33 iscsit_unregister_transport +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xd8cb6553 iscsit_build_rsp_pdu +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xeaec24a1 iscsit_check_dataout_hdr +EXPORT_SYMBOL drivers/target/target_core_mod 0x0278e8ff target_get_sess_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x02de3b18 transport_set_vpd_ident +EXPORT_SYMBOL drivers/target/target_core_mod 0x030350cf target_setup_cmd_from_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0x036924c8 transport_register_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x0ab142e7 transport_lookup_cmd_lun +EXPORT_SYMBOL drivers/target/target_core_mod 0x0cda0d5b transport_deregister_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x0f4ec322 target_show_dynamic_sessions +EXPORT_SYMBOL drivers/target/target_core_mod 0x163cf98f target_complete_cmd_with_length +EXPORT_SYMBOL drivers/target/target_core_mod 0x19dea5a2 transport_wait_for_tasks +EXPORT_SYMBOL drivers/target/target_core_mod 0x1eb62f73 core_tpg_register +EXPORT_SYMBOL drivers/target/target_core_mod 0x1f78f7bd transport_init_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x24b56661 transport_generic_free_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x2be0a906 spc_emulate_report_luns +EXPORT_SYMBOL drivers/target/target_core_mod 0x2f21c146 target_depend_item +EXPORT_SYMBOL drivers/target/target_core_mod 0x2fad0ee7 target_get_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x3246137e sbc_dif_verify +EXPORT_SYMBOL drivers/target/target_core_mod 0x352707a8 transport_generic_handle_tmr +EXPORT_SYMBOL drivers/target/target_core_mod 0x364d142e target_execute_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x385b216e sbc_get_write_same_sectors +EXPORT_SYMBOL drivers/target/target_core_mod 0x3d5be3fa target_submit_cmd_map_sgls +EXPORT_SYMBOL drivers/target/target_core_mod 0x44f4cf51 target_submit_tmr +EXPORT_SYMBOL drivers/target/target_core_mod 0x460efa3f transport_kmap_data_sg +EXPORT_SYMBOL drivers/target/target_core_mod 0x4b19161f transport_backend_register +EXPORT_SYMBOL drivers/target/target_core_mod 0x55698104 core_alua_check_nonop_delay +EXPORT_SYMBOL drivers/target/target_core_mod 0x57a5cba7 spc_parse_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0x5c83cd38 core_tmr_alloc_req +EXPORT_SYMBOL drivers/target/target_core_mod 0x5f2389c1 target_complete_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x62837726 transport_init_se_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x64ed379e core_tpg_get_initiator_node_acl +EXPORT_SYMBOL drivers/target/target_core_mod 0x657d5403 core_tpg_set_initiator_node_tag +EXPORT_SYMBOL drivers/target/target_core_mod 0x69e35b49 transport_check_aborted_status +EXPORT_SYMBOL drivers/target/target_core_mod 0x76b6ba33 transport_free_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x7cc6a447 target_sess_cmd_list_set_waiting +EXPORT_SYMBOL drivers/target/target_core_mod 0x7dbada9d transport_set_vpd_ident_type +EXPORT_SYMBOL drivers/target/target_core_mod 0x85aa880c transport_set_vpd_assoc +EXPORT_SYMBOL drivers/target/target_core_mod 0x8614a817 target_register_template +EXPORT_SYMBOL drivers/target/target_core_mod 0x8626a859 transport_lookup_tmr_lun +EXPORT_SYMBOL drivers/target/target_core_mod 0x87359003 transport_generic_new_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x8d1b6573 target_nacl_find_deve +EXPORT_SYMBOL drivers/target/target_core_mod 0x8db84200 target_submit_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x90054b75 core_tpg_deregister +EXPORT_SYMBOL drivers/target/target_core_mod 0x9782620b sbc_parse_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0x9915be34 spc_emulate_evpd_83 +EXPORT_SYMBOL drivers/target/target_core_mod 0x9fc1d729 spc_emulate_inquiry_std +EXPORT_SYMBOL drivers/target/target_core_mod 0x9fcb9e85 transport_deregister_session_configfs +EXPORT_SYMBOL drivers/target/target_core_mod 0xa4eef9d0 transport_alloc_session_tags +EXPORT_SYMBOL drivers/target/target_core_mod 0xaabbdcae __transport_register_session +EXPORT_SYMBOL drivers/target/target_core_mod 0xb01358bf target_put_sess_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xb11de63b target_undepend_item +EXPORT_SYMBOL drivers/target/target_core_mod 0xb5b55ef8 target_backend_unregister +EXPORT_SYMBOL drivers/target/target_core_mod 0xb676c388 target_put_session +EXPORT_SYMBOL drivers/target/target_core_mod 0xbb671fb2 target_unregister_template +EXPORT_SYMBOL drivers/target/target_core_mod 0xbeaa4213 sbc_get_device_type +EXPORT_SYMBOL drivers/target/target_core_mod 0xc1aab678 passthrough_parse_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0xc29dfbea sbc_dif_copy_prot +EXPORT_SYMBOL drivers/target/target_core_mod 0xc6aea316 transport_handle_cdb_direct +EXPORT_SYMBOL drivers/target/target_core_mod 0xc8ff9deb core_tpg_check_initiator_node_acl +EXPORT_SYMBOL drivers/target/target_core_mod 0xc96b8e08 transport_generic_request_failure +EXPORT_SYMBOL drivers/target/target_core_mod 0xccc29124 passthrough_attrib_attrs +EXPORT_SYMBOL drivers/target/target_core_mod 0xd5f6e75c sbc_attrib_attrs +EXPORT_SYMBOL drivers/target/target_core_mod 0xd6beae06 transport_init_session_tags +EXPORT_SYMBOL drivers/target/target_core_mod 0xe598530f target_wait_for_sess_cmds +EXPORT_SYMBOL drivers/target/target_core_mod 0xef1b99d4 transport_send_check_condition_and_sense +EXPORT_SYMBOL drivers/target/target_core_mod 0xf01621c7 transport_set_vpd_proto_id +EXPORT_SYMBOL drivers/target/target_core_mod 0xf47dc5be target_lun_is_rdonly +EXPORT_SYMBOL drivers/target/target_core_mod 0xf8867b85 core_tpg_set_initiator_node_queue_depth +EXPORT_SYMBOL drivers/target/target_core_mod 0xfd8d7c0f transport_kunmap_data_sg +EXPORT_SYMBOL drivers/usb/class/cdc-wdm 0xa99bbe25 usb_cdc_wdm_register +EXPORT_SYMBOL drivers/usb/host/sl811-hcd 0x8b7b6b48 sl811h_driver +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x0ba60a37 usb_wwan_tiocmget +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x0ddae5e5 usb_wwan_write +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x3d94eb39 usb_wwan_ioctl +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x414db044 usb_wwan_open +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x4e65f202 usb_wwan_write_room +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x58a3703e usb_wwan_port_remove +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x850de46e usb_wwan_chars_in_buffer +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x8c05837d usb_wwan_tiocmset +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xc4eab001 usb_wwan_close +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xd40bc644 usb_wwan_resume +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xe5b33f72 usb_wwan_suspend +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xee1fb490 usb_wwan_dtr_rts +EXPORT_SYMBOL drivers/usb/serial/usbserial 0x58ef0765 usb_serial_resume +EXPORT_SYMBOL drivers/usb/serial/usbserial 0x676c9cee usb_serial_suspend +EXPORT_SYMBOL drivers/video/backlight/lcd 0x12415631 lcd_device_register +EXPORT_SYMBOL drivers/video/backlight/lcd 0x2576ac18 devm_lcd_device_unregister +EXPORT_SYMBOL drivers/video/backlight/lcd 0x535fc275 devm_lcd_device_register +EXPORT_SYMBOL drivers/video/backlight/lcd 0xa0531cd0 lcd_device_unregister +EXPORT_SYMBOL drivers/video/fbdev/core/syscopyarea 0xa1bab98f sys_copyarea +EXPORT_SYMBOL drivers/video/fbdev/core/sysfillrect 0x3f094e8a sys_fillrect +EXPORT_SYMBOL drivers/video/fbdev/core/sysimgblt 0x0fbe7f5b sys_imageblit +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0xada605d0 w1_ds2760_store_eeprom +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0xe175c1ab w1_ds2760_recall_eeprom +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0xeee974e2 w1_ds2760_read +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0xf77ceacf w1_ds2760_write +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2780 0x123c1e86 w1_ds2780_eeprom_cmd +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2780 0x719e53c5 w1_ds2780_io +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2781 0x3893fc64 w1_ds2781_eeprom_cmd +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2781 0x4ee9b416 w1_ds2781_io +EXPORT_SYMBOL drivers/w1/wire 0x5c4ece18 w1_remove_master_device +EXPORT_SYMBOL drivers/w1/wire 0x69f5c295 w1_unregister_family +EXPORT_SYMBOL drivers/w1/wire 0x852f0354 w1_add_master_device +EXPORT_SYMBOL drivers/w1/wire 0xf5eded31 w1_register_family +EXPORT_SYMBOL fs/configfs/configfs 0x1d13278e config_item_put +EXPORT_SYMBOL fs/configfs/configfs 0x281fe239 config_item_init_type_name +EXPORT_SYMBOL fs/configfs/configfs 0x49da2a5b configfs_undepend_item +EXPORT_SYMBOL fs/configfs/configfs 0x55c6d286 configfs_unregister_subsystem +EXPORT_SYMBOL fs/configfs/configfs 0x7ab78516 config_item_set_name +EXPORT_SYMBOL fs/configfs/configfs 0x7dad200e configfs_register_subsystem +EXPORT_SYMBOL fs/configfs/configfs 0x9f95e059 config_group_find_item +EXPORT_SYMBOL fs/configfs/configfs 0xa0531ffa config_group_init_type_name +EXPORT_SYMBOL fs/configfs/configfs 0xacf1ef3a configfs_depend_item +EXPORT_SYMBOL fs/configfs/configfs 0xae0e3841 config_group_init +EXPORT_SYMBOL fs/configfs/configfs 0xda02de78 config_item_get +EXPORT_SYMBOL fs/exofs/libore 0x0f5a0191 ore_get_rw_state +EXPORT_SYMBOL fs/exofs/libore 0x1849d36e ore_truncate +EXPORT_SYMBOL fs/exofs/libore 0x28806871 ore_verify_layout +EXPORT_SYMBOL fs/exofs/libore 0x4527e170 ore_calc_stripe_info +EXPORT_SYMBOL fs/exofs/libore 0x5a989b80 ore_put_io_state +EXPORT_SYMBOL fs/exofs/libore 0x605f5bcb ore_create +EXPORT_SYMBOL fs/exofs/libore 0x79c51273 ore_read +EXPORT_SYMBOL fs/exofs/libore 0x84337eda ore_check_io +EXPORT_SYMBOL fs/exofs/libore 0x85461d7b ore_remove +EXPORT_SYMBOL fs/exofs/libore 0x9add1b58 ore_write +EXPORT_SYMBOL fs/exofs/libore 0x9ba264b1 ore_get_io_state +EXPORT_SYMBOL fs/exofs/libore 0xa3d2a634 g_attr_logical_length +EXPORT_SYMBOL fs/exofs/libore 0xa7c4fab7 extract_attr_from_ios +EXPORT_SYMBOL fs/fscache/fscache 0x037370a1 __fscache_wait_on_invalidate +EXPORT_SYMBOL fs/fscache/fscache 0x0f295908 __fscache_update_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x10ef8187 fscache_object_destroy +EXPORT_SYMBOL fs/fscache/fscache 0x115ac3f2 __fscache_acquire_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x126a9d7d __fscache_enable_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x192c403e fscache_object_mark_killed +EXPORT_SYMBOL fs/fscache/fscache 0x1ad6fe76 fscache_add_cache +EXPORT_SYMBOL fs/fscache/fscache 0x1e60411c fscache_obtained_object +EXPORT_SYMBOL fs/fscache/fscache 0x25052d6b __fscache_relinquish_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x25631afd fscache_cache_cleared_wq +EXPORT_SYMBOL fs/fscache/fscache 0x27d92395 __fscache_alloc_page +EXPORT_SYMBOL fs/fscache/fscache 0x2d1c60bb __fscache_check_page_write +EXPORT_SYMBOL fs/fscache/fscache 0x34e75cab __fscache_write_page +EXPORT_SYMBOL fs/fscache/fscache 0x46a38d67 __fscache_disable_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x4861dfab fscache_object_retrying_stale +EXPORT_SYMBOL fs/fscache/fscache 0x4b5e6a9f __fscache_readpages_cancel +EXPORT_SYMBOL fs/fscache/fscache 0x4f9e28b4 fscache_fsdef_index +EXPORT_SYMBOL fs/fscache/fscache 0x5412fa1f fscache_op_complete +EXPORT_SYMBOL fs/fscache/fscache 0x686dc4a8 __fscache_unregister_netfs +EXPORT_SYMBOL fs/fscache/fscache 0x74530ecd fscache_op_debug_id +EXPORT_SYMBOL fs/fscache/fscache 0x82c7439d __fscache_uncache_page +EXPORT_SYMBOL fs/fscache/fscache 0x8b73645a fscache_object_init +EXPORT_SYMBOL fs/fscache/fscache 0x937dc671 __fscache_attr_changed +EXPORT_SYMBOL fs/fscache/fscache 0xa1bcd25e fscache_init_cache +EXPORT_SYMBOL fs/fscache/fscache 0xa384f272 __fscache_uncache_all_inode_pages +EXPORT_SYMBOL fs/fscache/fscache 0xa752f22e __fscache_check_consistency +EXPORT_SYMBOL fs/fscache/fscache 0xaac5ec13 __fscache_read_or_alloc_pages +EXPORT_SYMBOL fs/fscache/fscache 0xab4d409d fscache_mark_page_cached +EXPORT_SYMBOL fs/fscache/fscache 0xad1577a2 fscache_check_aux +EXPORT_SYMBOL fs/fscache/fscache 0xb0b90f55 fscache_io_error +EXPORT_SYMBOL fs/fscache/fscache 0xb4881b25 __fscache_invalidate +EXPORT_SYMBOL fs/fscache/fscache 0xb667f01c fscache_enqueue_operation +EXPORT_SYMBOL fs/fscache/fscache 0xc1447436 __fscache_maybe_release_page +EXPORT_SYMBOL fs/fscache/fscache 0xd1d69667 fscache_withdraw_cache +EXPORT_SYMBOL fs/fscache/fscache 0xe05e4a76 fscache_mark_pages_cached +EXPORT_SYMBOL fs/fscache/fscache 0xe6db7013 __fscache_wait_on_page_write +EXPORT_SYMBOL fs/fscache/fscache 0xf2d5b7d0 fscache_put_operation +EXPORT_SYMBOL fs/fscache/fscache 0xf3569cde fscache_object_lookup_negative +EXPORT_SYMBOL fs/fscache/fscache 0xf49c58de __fscache_read_or_alloc_page +EXPORT_SYMBOL fs/fscache/fscache 0xf79392c3 fscache_operation_init +EXPORT_SYMBOL fs/fscache/fscache 0xfb9f565e __fscache_register_netfs +EXPORT_SYMBOL fs/ocfs2/cluster/ocfs2_nodemanager 0xbfd7d7a2 o2hb_global_heartbeat_active +EXPORT_SYMBOL fs/quota/quota_tree 0x023a76dc qtree_entry_unused +EXPORT_SYMBOL fs/quota/quota_tree 0x1d0767f1 qtree_release_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0xb424cbbe qtree_read_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0xd023e05b qtree_delete_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0xe292e61c qtree_write_dquot +EXPORT_SYMBOL lib/cordic 0x434bfd07 cordic_calc_iq +EXPORT_SYMBOL lib/crc-ccitt 0x3771b461 crc_ccitt +EXPORT_SYMBOL lib/crc-ccitt 0x75811312 crc_ccitt_table +EXPORT_SYMBOL lib/crc-itu-t 0xd29b009f crc_itu_t_table +EXPORT_SYMBOL lib/crc-itu-t 0xf5b4a948 crc_itu_t +EXPORT_SYMBOL lib/crc7 0x66213969 crc7_be +EXPORT_SYMBOL lib/crc7 0x7a222007 crc7_be_syndrome_table +EXPORT_SYMBOL lib/crc8 0x41248eaf crc8 +EXPORT_SYMBOL lib/crc8 0xab9ad613 crc8_populate_lsb +EXPORT_SYMBOL lib/crc8 0xd4534d80 crc8_populate_msb +EXPORT_SYMBOL lib/libcrc32c 0x27000b29 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 0x7d28f74a lc_seq_dump_details +EXPORT_SYMBOL lib/lru_cache 0x84e0214b lc_committed +EXPORT_SYMBOL lib/lru_cache 0xad52ca6a lc_seq_printf_stats +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/lz4_compress 0xcbc5d521 lz4_compress +EXPORT_SYMBOL lib/lz4/lz4hc_compress 0x26c3aa22 lz4hc_compress +EXPORT_SYMBOL lib/raid6/raid6_pq 0x0bd662f6 raid6_gfmul +EXPORT_SYMBOL lib/raid6/raid6_pq 0x15fe0cd3 raid6_gfexp +EXPORT_SYMBOL lib/raid6/raid6_pq 0x5ba93f9d raid6_gfinv +EXPORT_SYMBOL lib/raid6/raid6_pq 0xb0d904b7 raid6_empty_zero_page +EXPORT_SYMBOL lib/raid6/raid6_pq 0xce45a6f1 raid6_gfexi +EXPORT_SYMBOL lib/raid6/raid6_pq 0xd9e91f83 raid6_vgfmul +EXPORT_SYMBOL net/6lowpan/6lowpan 0x84746023 lowpan_nhc_add +EXPORT_SYMBOL net/6lowpan/6lowpan 0xaf687aa2 lowpan_nhc_del +EXPORT_SYMBOL net/802/p8022 0x1d87602a unregister_8022_client +EXPORT_SYMBOL net/802/p8022 0x31553d7d register_8022_client +EXPORT_SYMBOL net/802/p8023 0xa1b8cb70 destroy_8023_client +EXPORT_SYMBOL net/802/p8023 0xec7690aa make_8023_client +EXPORT_SYMBOL net/802/psnap 0x574ce61c unregister_snap_client +EXPORT_SYMBOL net/802/psnap 0xfc9d1548 register_snap_client +EXPORT_SYMBOL net/9p/9pnet 0x022267d1 p9_client_walk +EXPORT_SYMBOL net/9p/9pnet 0x0be4ec92 p9_client_statfs +EXPORT_SYMBOL net/9p/9pnet 0x0f18353b p9_client_wstat +EXPORT_SYMBOL net/9p/9pnet 0x1a37c7e9 p9_parse_header +EXPORT_SYMBOL net/9p/9pnet 0x1d34a3c9 p9_client_unlinkat +EXPORT_SYMBOL net/9p/9pnet 0x2bf7136c p9_client_setattr +EXPORT_SYMBOL net/9p/9pnet 0x30c48ca4 p9_client_link +EXPORT_SYMBOL net/9p/9pnet 0x35d1e27e p9_idpool_get +EXPORT_SYMBOL net/9p/9pnet 0x3c94a2c4 p9_release_pages +EXPORT_SYMBOL net/9p/9pnet 0x3d73a797 p9_errstr2errno +EXPORT_SYMBOL net/9p/9pnet 0x41dd4d9d p9_client_create_dotl +EXPORT_SYMBOL net/9p/9pnet 0x43db165c v9fs_get_default_trans +EXPORT_SYMBOL net/9p/9pnet 0x44d2c2c0 p9stat_free +EXPORT_SYMBOL net/9p/9pnet 0x45946329 p9stat_read +EXPORT_SYMBOL net/9p/9pnet 0x4694d8eb p9_client_open +EXPORT_SYMBOL net/9p/9pnet 0x47c3a71d p9_client_fsync +EXPORT_SYMBOL net/9p/9pnet 0x5abc962a p9_client_rename +EXPORT_SYMBOL net/9p/9pnet 0x64b2e94e v9fs_unregister_trans +EXPORT_SYMBOL net/9p/9pnet 0x65164205 p9_client_renameat +EXPORT_SYMBOL net/9p/9pnet 0x78c47193 p9_client_clunk +EXPORT_SYMBOL net/9p/9pnet 0x7ba5dd5d p9_client_readdir +EXPORT_SYMBOL net/9p/9pnet 0x80346e58 p9_client_attach +EXPORT_SYMBOL net/9p/9pnet 0x80c735ef p9_client_fcreate +EXPORT_SYMBOL net/9p/9pnet 0x866c3388 p9_client_getlock_dotl +EXPORT_SYMBOL net/9p/9pnet 0x87950c49 p9_client_readlink +EXPORT_SYMBOL net/9p/9pnet 0x8831a3e1 p9_client_read +EXPORT_SYMBOL net/9p/9pnet 0x898c2423 p9_client_symlink +EXPORT_SYMBOL net/9p/9pnet 0x8e4c3423 p9_client_getattr_dotl +EXPORT_SYMBOL net/9p/9pnet 0x953d995c p9_client_create +EXPORT_SYMBOL net/9p/9pnet 0x99daa9c7 p9_client_disconnect +EXPORT_SYMBOL net/9p/9pnet 0x9ce58e4f p9dirent_read +EXPORT_SYMBOL net/9p/9pnet 0xa569cef7 p9_is_proto_dotu +EXPORT_SYMBOL net/9p/9pnet 0xac080578 p9_client_lock_dotl +EXPORT_SYMBOL net/9p/9pnet 0xb35961eb p9_client_write +EXPORT_SYMBOL net/9p/9pnet 0xb385214c p9_client_mknod_dotl +EXPORT_SYMBOL net/9p/9pnet 0xb48eb808 v9fs_get_trans_by_name +EXPORT_SYMBOL net/9p/9pnet 0xc29237a4 p9_client_cb +EXPORT_SYMBOL net/9p/9pnet 0xc5db54a9 p9_idpool_destroy +EXPORT_SYMBOL net/9p/9pnet 0xdec9eb5b p9_client_destroy +EXPORT_SYMBOL net/9p/9pnet 0xdf49ce33 p9_tag_lookup +EXPORT_SYMBOL net/9p/9pnet 0xe2cd1b98 p9_client_remove +EXPORT_SYMBOL net/9p/9pnet 0xe58a3360 p9_error_init +EXPORT_SYMBOL net/9p/9pnet 0xe5e7a594 p9_client_mkdir_dotl +EXPORT_SYMBOL net/9p/9pnet 0xe9496162 p9_client_stat +EXPORT_SYMBOL net/9p/9pnet 0xf06d6db9 p9_client_begin_disconnect +EXPORT_SYMBOL net/9p/9pnet 0xf4a111d8 p9_idpool_create +EXPORT_SYMBOL net/9p/9pnet 0xf70540b7 p9_is_proto_dotl +EXPORT_SYMBOL net/9p/9pnet 0xf84f2022 p9_idpool_put +EXPORT_SYMBOL net/9p/9pnet 0xfd40c79d p9_idpool_check +EXPORT_SYMBOL net/9p/9pnet 0xff6e2af3 v9fs_register_trans +EXPORT_SYMBOL net/appletalk/appletalk 0x48374dc5 aarp_send_ddp +EXPORT_SYMBOL net/appletalk/appletalk 0x71fef911 atrtr_get_dev +EXPORT_SYMBOL net/appletalk/appletalk 0xe4338982 alloc_ltalkdev +EXPORT_SYMBOL net/appletalk/appletalk 0xfa02d75d atalk_find_dev_addr +EXPORT_SYMBOL net/atm/atm 0x1a935dac atm_dev_deregister +EXPORT_SYMBOL net/atm/atm 0x2b090aed register_atm_ioctl +EXPORT_SYMBOL net/atm/atm 0x2cc2d52d vcc_hash +EXPORT_SYMBOL net/atm/atm 0x364c1b05 vcc_insert_socket +EXPORT_SYMBOL net/atm/atm 0x4443d399 atm_proc_root +EXPORT_SYMBOL net/atm/atm 0x58f049e3 atm_dev_lookup +EXPORT_SYMBOL net/atm/atm 0x5e34863c atm_charge +EXPORT_SYMBOL net/atm/atm 0x88e3171f deregister_atm_ioctl +EXPORT_SYMBOL net/atm/atm 0x89db0f37 atm_init_aal5 +EXPORT_SYMBOL net/atm/atm 0x9dc42613 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 0xade3e935 vcc_release_async +EXPORT_SYMBOL net/atm/atm 0xae8b8c3b atm_dev_release_vccs +EXPORT_SYMBOL net/atm/atm 0xc430f2b6 atm_dev_signal_change +EXPORT_SYMBOL net/atm/atm 0xc4f52307 atm_alloc_charge +EXPORT_SYMBOL net/atm/atm 0xef47d489 vcc_process_recv_queue +EXPORT_SYMBOL net/atm/atm 0xf1774b53 vcc_sklist_lock +EXPORT_SYMBOL net/atm/atm 0xf49bc67a atm_pcr_goal +EXPORT_SYMBOL net/ax25/ax25 0x0b4c8e79 ax25_header_ops +EXPORT_SYMBOL net/ax25/ax25 0x1cf21a93 ax25_linkfail_register +EXPORT_SYMBOL net/ax25/ax25 0x20197e82 ax25_send_frame +EXPORT_SYMBOL net/ax25/ax25 0x242852b9 ax25_uid_policy +EXPORT_SYMBOL net/ax25/ax25 0x3afee63e ax25_findbyuid +EXPORT_SYMBOL net/ax25/ax25 0x3bb7cde5 ax25_listen_release +EXPORT_SYMBOL net/ax25/ax25 0x40ed0549 ax25_linkfail_release +EXPORT_SYMBOL net/ax25/ax25 0x4502c65a asc2ax +EXPORT_SYMBOL net/ax25/ax25 0x53dea1ff ax2asc +EXPORT_SYMBOL net/ax25/ax25 0x81f75c8b ax25_listen_register +EXPORT_SYMBOL net/ax25/ax25 0x8ede9e26 ax25_protocol_release +EXPORT_SYMBOL net/ax25/ax25 0x95e0f4b7 ax25_find_cb +EXPORT_SYMBOL net/ax25/ax25 0xa7f3015b ax25_display_timer +EXPORT_SYMBOL net/ax25/ax25 0xb1e9a755 ax25_ip_xmit +EXPORT_SYMBOL net/ax25/ax25 0xc1444946 ax25cmp +EXPORT_SYMBOL net/ax25/ax25 0xd43ecbf1 null_ax25_address +EXPORT_SYMBOL net/bluetooth/bluetooth 0x020deb45 bt_procfs_init +EXPORT_SYMBOL net/bluetooth/bluetooth 0x03e1229e hci_alloc_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x13bd27d5 bt_sock_stream_recvmsg +EXPORT_SYMBOL net/bluetooth/bluetooth 0x1945a68a hci_free_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x20f9074f bt_sock_poll +EXPORT_SYMBOL net/bluetooth/bluetooth 0x2e10b4a7 l2cap_chan_close +EXPORT_SYMBOL net/bluetooth/bluetooth 0x30c31878 bt_procfs_cleanup +EXPORT_SYMBOL net/bluetooth/bluetooth 0x3d0e66da hci_register_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x47022514 bt_err +EXPORT_SYMBOL net/bluetooth/bluetooth 0x4844683e hci_unregister_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x514b39c7 bt_accept_dequeue +EXPORT_SYMBOL net/bluetooth/bluetooth 0x51b5de2e hci_get_route +EXPORT_SYMBOL net/bluetooth/bluetooth 0x5bb71f62 bt_sock_recvmsg +EXPORT_SYMBOL net/bluetooth/bluetooth 0x6331cfed __hci_cmd_sync +EXPORT_SYMBOL net/bluetooth/bluetooth 0x721fc27c l2cap_unregister_user +EXPORT_SYMBOL net/bluetooth/bluetooth 0x8c05f6ca hci_unregister_cb +EXPORT_SYMBOL net/bluetooth/bluetooth 0x8fe99599 l2cap_is_socket +EXPORT_SYMBOL net/bluetooth/bluetooth 0x8fea24bd bt_sock_unregister +EXPORT_SYMBOL net/bluetooth/bluetooth 0x91c9a325 bt_to_errno +EXPORT_SYMBOL net/bluetooth/bluetooth 0x9b214b64 __hci_cmd_sync_ev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xa900cb77 bt_sock_register +EXPORT_SYMBOL net/bluetooth/bluetooth 0xaac16e35 bt_accept_enqueue +EXPORT_SYMBOL net/bluetooth/bluetooth 0xaae9d135 hci_register_cb +EXPORT_SYMBOL net/bluetooth/bluetooth 0xab4c6baa hci_conn_security +EXPORT_SYMBOL net/bluetooth/bluetooth 0xac029a57 l2cap_conn_put +EXPORT_SYMBOL net/bluetooth/bluetooth 0xaf6d7f7e bt_sock_ioctl +EXPORT_SYMBOL net/bluetooth/bluetooth 0xb61c5f02 l2cap_register_user +EXPORT_SYMBOL net/bluetooth/bluetooth 0xbe02f26f bt_accept_unlink +EXPORT_SYMBOL net/bluetooth/bluetooth 0xc48ebe03 hci_conn_switch_role +EXPORT_SYMBOL net/bluetooth/bluetooth 0xcc1fb551 baswap +EXPORT_SYMBOL net/bluetooth/bluetooth 0xd0b76b72 hci_conn_check_secure +EXPORT_SYMBOL net/bluetooth/bluetooth 0xd0ba9c4f bt_sock_unlink +EXPORT_SYMBOL net/bluetooth/bluetooth 0xd4caa8d5 bt_sock_link +EXPORT_SYMBOL net/bluetooth/bluetooth 0xd7442057 bt_info +EXPORT_SYMBOL net/bluetooth/bluetooth 0xddb66870 hci_reset_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xddcdcf7d hci_suspend_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xe7e29a6e hci_recv_frame +EXPORT_SYMBOL net/bluetooth/bluetooth 0xec58faf5 bt_sock_wait_state +EXPORT_SYMBOL net/bluetooth/bluetooth 0xf14230ac bt_sock_wait_ready +EXPORT_SYMBOL net/bluetooth/bluetooth 0xf7fbca42 bt_sock_reclassify_lock +EXPORT_SYMBOL net/bluetooth/bluetooth 0xfd3acd06 hci_mgmt_chan_unregister +EXPORT_SYMBOL net/bluetooth/bluetooth 0xfd40b875 hci_resume_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xfd58f851 hci_mgmt_chan_register +EXPORT_SYMBOL net/bluetooth/bluetooth 0xfd99d4a9 l2cap_conn_get +EXPORT_SYMBOL net/bridge/bridge 0xad85ed70 br_should_route_hook +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0x327e86d2 ebt_register_table +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0x39fcbe3d ebt_unregister_table +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0xd4ce9684 ebt_do_table +EXPORT_SYMBOL net/caif/caif 0x1446b60a caif_client_register_refcnt +EXPORT_SYMBOL net/caif/caif 0x1d75b885 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 0x4a237e57 cfpkt_tonative +EXPORT_SYMBOL net/caif/caif 0x6a44fc70 cfpkt_extr_head +EXPORT_SYMBOL net/caif/caif 0x839ddb7b cfcnfg_set_phy_state +EXPORT_SYMBOL net/caif/caif 0x88ae55ef caif_enroll_dev +EXPORT_SYMBOL net/caif/caif 0x966d7de2 cfpkt_add_head +EXPORT_SYMBOL net/caif/caif 0x9d5804ad get_cfcnfg +EXPORT_SYMBOL net/caif/caif 0x9e3e305d cfpkt_set_prio +EXPORT_SYMBOL net/caif/caif 0xb7b6874e caif_free_client +EXPORT_SYMBOL net/caif/caif 0xce38b6e7 cfcnfg_add_phy_layer +EXPORT_SYMBOL net/caif/caif 0xf4503e00 caif_connect_client +EXPORT_SYMBOL net/can/can 0x035447e4 can_send +EXPORT_SYMBOL net/can/can 0xa1ae07d3 can_rx_register +EXPORT_SYMBOL net/can/can 0xcf5013b3 can_proto_register +EXPORT_SYMBOL net/can/can 0xec09bda1 can_ioctl +EXPORT_SYMBOL net/can/can 0xee0be2f6 can_proto_unregister +EXPORT_SYMBOL net/can/can 0xfe726e61 can_rx_unregister +EXPORT_SYMBOL net/ceph/libceph 0x00b8b0ac ceph_alloc_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x02979679 osd_req_op_extent_update +EXPORT_SYMBOL net/ceph/libceph 0x07d4ded2 ceph_oloc_oid_to_pg +EXPORT_SYMBOL net/ceph/libceph 0x08557e06 osd_req_op_xattr_init +EXPORT_SYMBOL net/ceph/libceph 0x09290ab3 ceph_debugfs_init +EXPORT_SYMBOL net/ceph/libceph 0x0e1502fb ceph_monc_open_session +EXPORT_SYMBOL net/ceph/libceph 0x10c62a54 ceph_get_direct_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x179209d0 ceph_copy_from_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x1b92564a ceph_check_fsid +EXPORT_SYMBOL net/ceph/libceph 0x1c1745cc ceph_msg_data_add_pages +EXPORT_SYMBOL net/ceph/libceph 0x1c209801 osd_req_op_raw_data_in_pages +EXPORT_SYMBOL net/ceph/libceph 0x20d151cb ceph_osdc_setup +EXPORT_SYMBOL net/ceph/libceph 0x21c63bab osd_req_op_extent_init +EXPORT_SYMBOL net/ceph/libceph 0x281fee9f ceph_msg_dump +EXPORT_SYMBOL net/ceph/libceph 0x2db717f3 ceph_destroy_options +EXPORT_SYMBOL net/ceph/libceph 0x300d6c2c ceph_osdc_writepages +EXPORT_SYMBOL net/ceph/libceph 0x3322be15 ceph_osdc_set_request_linger +EXPORT_SYMBOL net/ceph/libceph 0x38d55ace ceph_monc_request_next_osdmap +EXPORT_SYMBOL net/ceph/libceph 0x3a530f8b osd_req_op_cls_request_data_pagelist +EXPORT_SYMBOL net/ceph/libceph 0x3abec91f ceph_pr_addr +EXPORT_SYMBOL net/ceph/libceph 0x3df34fd6 ceph_auth_destroy_authorizer +EXPORT_SYMBOL net/ceph/libceph 0x3e152b4c ceph_calc_pg_primary +EXPORT_SYMBOL net/ceph/libceph 0x3f688151 ceph_put_snap_context +EXPORT_SYMBOL net/ceph/libceph 0x405882c4 ceph_compare_options +EXPORT_SYMBOL net/ceph/libceph 0x40670b52 ceph_release_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x42b30ddf ceph_con_close +EXPORT_SYMBOL net/ceph/libceph 0x43e458f6 ceph_file_part +EXPORT_SYMBOL net/ceph/libceph 0x43efd647 ceph_calc_file_object_mapping +EXPORT_SYMBOL net/ceph/libceph 0x44ce59b2 ceph_create_client +EXPORT_SYMBOL net/ceph/libceph 0x45cc8594 ceph_monc_init +EXPORT_SYMBOL net/ceph/libceph 0x466b85b8 libceph_compatible +EXPORT_SYMBOL net/ceph/libceph 0x47a9920e ceph_pagelist_release +EXPORT_SYMBOL net/ceph/libceph 0x4c0889db ceph_con_send +EXPORT_SYMBOL net/ceph/libceph 0x4c0b7046 osd_req_op_extent_osd_data +EXPORT_SYMBOL net/ceph/libceph 0x4c7423b4 osd_req_op_extent_osd_data_pages +EXPORT_SYMBOL net/ceph/libceph 0x4d2d2f3b ceph_put_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x4e4d506b __ceph_open_session +EXPORT_SYMBOL net/ceph/libceph 0x533366d7 osd_req_op_watch_init +EXPORT_SYMBOL net/ceph/libceph 0x5379cea3 ceph_caps_for_mode +EXPORT_SYMBOL net/ceph/libceph 0x56243f7e osd_req_op_cls_response_data +EXPORT_SYMBOL net/ceph/libceph 0x57baf885 ceph_str_hash +EXPORT_SYMBOL net/ceph/libceph 0x58bd96ad ceph_messenger_fini +EXPORT_SYMBOL net/ceph/libceph 0x5b513347 ceph_msg_data_add_bio +EXPORT_SYMBOL net/ceph/libceph 0x5bee4b3d ceph_osdc_put_request +EXPORT_SYMBOL net/ceph/libceph 0x5d190eaa ceph_msg_new +EXPORT_SYMBOL net/ceph/libceph 0x5eb26130 ceph_con_open +EXPORT_SYMBOL net/ceph/libceph 0x5f1de352 ceph_monc_do_statfs +EXPORT_SYMBOL net/ceph/libceph 0x6097f989 osd_req_op_extent_osd_data_bio +EXPORT_SYMBOL net/ceph/libceph 0x618a2a1a ceph_monc_stop +EXPORT_SYMBOL net/ceph/libceph 0x63758856 ceph_str_hash_name +EXPORT_SYMBOL net/ceph/libceph 0x69f6bf14 ceph_pg_pool_name_by_id +EXPORT_SYMBOL net/ceph/libceph 0x6b2e3bcd ceph_get_snap_context +EXPORT_SYMBOL net/ceph/libceph 0x6eac0e4e ceph_osdc_flush_notifies +EXPORT_SYMBOL net/ceph/libceph 0x6f3168dd osd_req_op_cls_init +EXPORT_SYMBOL net/ceph/libceph 0x7426fde2 ceph_open_session +EXPORT_SYMBOL net/ceph/libceph 0x75223b06 ceph_messenger_init +EXPORT_SYMBOL net/ceph/libceph 0x7fa299fb ceph_copy_to_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x82613da3 ceph_monc_do_get_version +EXPORT_SYMBOL net/ceph/libceph 0x88a0d069 ceph_osdc_start_request +EXPORT_SYMBOL net/ceph/libceph 0x8b379f30 ceph_osdc_cancel_request +EXPORT_SYMBOL net/ceph/libceph 0x8bedaa06 osd_req_op_init +EXPORT_SYMBOL net/ceph/libceph 0x90a71031 ceph_con_keepalive +EXPORT_SYMBOL net/ceph/libceph 0x95f764ea ceph_msg_put +EXPORT_SYMBOL net/ceph/libceph 0x97313eab ceph_monc_wait_osdmap +EXPORT_SYMBOL net/ceph/libceph 0x99e36571 ceph_osdc_cleanup +EXPORT_SYMBOL net/ceph/libceph 0x9f534f4d ceph_buffer_release +EXPORT_SYMBOL net/ceph/libceph 0xa1e68f72 osd_req_op_cls_request_data_pages +EXPORT_SYMBOL net/ceph/libceph 0xa1ebde8f ceph_pagelist_truncate +EXPORT_SYMBOL net/ceph/libceph 0xa28410b7 ceph_osdc_readpages +EXPORT_SYMBOL net/ceph/libceph 0xa656d9a6 ceph_osdc_put_event +EXPORT_SYMBOL net/ceph/libceph 0xab75cb11 ceph_con_init +EXPORT_SYMBOL net/ceph/libceph 0xad77228d ceph_monc_got_mdsmap +EXPORT_SYMBOL net/ceph/libceph 0xadce7706 ceph_osdc_sync +EXPORT_SYMBOL net/ceph/libceph 0xae3515ba ceph_create_snap_context +EXPORT_SYMBOL net/ceph/libceph 0xaed6d2f6 osd_req_op_alloc_hint_init +EXPORT_SYMBOL net/ceph/libceph 0xafb8a407 ceph_msgr_flush +EXPORT_SYMBOL net/ceph/libceph 0xafbdbd44 ceph_auth_create_authorizer +EXPORT_SYMBOL net/ceph/libceph 0xb19dc152 ceph_pagelist_reserve +EXPORT_SYMBOL net/ceph/libceph 0xb54676fa ceph_msg_type_name +EXPORT_SYMBOL net/ceph/libceph 0xb6081d6d ceph_msgr_exit +EXPORT_SYMBOL net/ceph/libceph 0xb9444ef4 ceph_auth_verify_authorizer_reply +EXPORT_SYMBOL net/ceph/libceph 0xbaca0f77 ceph_osdc_wait_request +EXPORT_SYMBOL net/ceph/libceph 0xbacee8ae ceph_auth_update_authorizer +EXPORT_SYMBOL net/ceph/libceph 0xbb3db554 ceph_copy_user_to_page_vector +EXPORT_SYMBOL net/ceph/libceph 0xbd487479 ceph_osdc_alloc_request +EXPORT_SYMBOL net/ceph/libceph 0xbdb56ba4 ceph_print_client_options +EXPORT_SYMBOL net/ceph/libceph 0xbf346889 ceph_osdc_get_request +EXPORT_SYMBOL net/ceph/libceph 0xc20a574e ceph_osdc_new_request +EXPORT_SYMBOL net/ceph/libceph 0xc4a80955 ceph_debugfs_cleanup +EXPORT_SYMBOL net/ceph/libceph 0xc9f82b38 ceph_msgr_init +EXPORT_SYMBOL net/ceph/libceph 0xca207ec4 ceph_msg_get +EXPORT_SYMBOL net/ceph/libceph 0xcb50a624 ceph_parse_ips +EXPORT_SYMBOL net/ceph/libceph 0xccde4cff ceph_osdc_build_request +EXPORT_SYMBOL net/ceph/libceph 0xceed58d6 osd_req_op_extent_osd_data_pagelist +EXPORT_SYMBOL net/ceph/libceph 0xcf392fa0 ceph_osdc_create_event +EXPORT_SYMBOL net/ceph/libceph 0xd1dea638 ceph_zero_page_vector_range +EXPORT_SYMBOL net/ceph/libceph 0xd2c107bb ceph_flags_to_mode +EXPORT_SYMBOL net/ceph/libceph 0xd3b03fc0 ceph_auth_is_authenticated +EXPORT_SYMBOL net/ceph/libceph 0xd4db1a4e osd_req_op_cls_response_data_pages +EXPORT_SYMBOL net/ceph/libceph 0xd5383217 ceph_pagelist_set_cursor +EXPORT_SYMBOL net/ceph/libceph 0xd813625e ceph_pagelist_append +EXPORT_SYMBOL net/ceph/libceph 0xdb4024a2 ceph_auth_invalidate_authorizer +EXPORT_SYMBOL net/ceph/libceph 0xdc136386 ceph_monc_validate_auth +EXPORT_SYMBOL net/ceph/libceph 0xdd8e7550 ceph_parse_options +EXPORT_SYMBOL net/ceph/libceph 0xdd933992 ceph_msg_data_add_pagelist +EXPORT_SYMBOL net/ceph/libceph 0xde0eb6ba ceph_pagelist_free_reserve +EXPORT_SYMBOL net/ceph/libceph 0xe55d9bcd ceph_buffer_new +EXPORT_SYMBOL net/ceph/libceph 0xe7a7487d ceph_client_id +EXPORT_SYMBOL net/ceph/libceph 0xf968e4bb ceph_osdc_cancel_event +EXPORT_SYMBOL net/ceph/libceph 0xfd4ea4bf ceph_pg_poolid_by_name +EXPORT_SYMBOL net/ceph/libceph 0xff446dc7 ceph_destroy_client +EXPORT_SYMBOL net/dccp/dccp_ipv4 0xb623651f dccp_req_err +EXPORT_SYMBOL net/dccp/dccp_ipv4 0xc6d0e788 dccp_syn_ack_timeout +EXPORT_SYMBOL net/ieee802154/6lowpan/ieee802154_6lowpan 0xf572cc72 lowpan_frag_rcv +EXPORT_SYMBOL net/ieee802154/ieee802154 0x33f9f225 wpan_phy_register +EXPORT_SYMBOL net/ieee802154/ieee802154 0x4eaaa5f1 wpan_phy_free +EXPORT_SYMBOL net/ieee802154/ieee802154 0x743476df wpan_phy_new +EXPORT_SYMBOL net/ieee802154/ieee802154 0xd5adacbf wpan_phy_find +EXPORT_SYMBOL net/ieee802154/ieee802154 0xe967d627 wpan_phy_for_each +EXPORT_SYMBOL net/ieee802154/ieee802154 0xeb59bf22 wpan_phy_unregister +EXPORT_SYMBOL net/ipv4/fou 0x43ce5c07 fou_build_header +EXPORT_SYMBOL net/ipv4/fou 0x6472e703 gue_build_header +EXPORT_SYMBOL net/ipv4/fou 0x87596169 fou_encap_hlen +EXPORT_SYMBOL net/ipv4/fou 0xfe4c1f2f gue_encap_hlen +EXPORT_SYMBOL net/ipv4/ip_tunnel 0x278df181 ip_tunnel_get_link_net +EXPORT_SYMBOL net/ipv4/ip_tunnel 0x2c58fb3d ip_tunnel_encap +EXPORT_SYMBOL net/ipv4/ip_tunnel 0x2f6e97fa ip_tunnel_encap_del_ops +EXPORT_SYMBOL net/ipv4/ip_tunnel 0x66ec7645 ip_tunnel_dst_reset_all +EXPORT_SYMBOL net/ipv4/ip_tunnel 0xbefc8747 ip_tunnel_get_iflink +EXPORT_SYMBOL net/ipv4/ip_tunnel 0xc6c0b7e9 ip_tunnel_encap_add_ops +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0x09a13d88 arpt_register_table +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0x2cdc2953 arpt_unregister_table +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0x54168cd2 arpt_do_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0x7cbf5ff1 ipt_unregister_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0x999a4896 ipt_do_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0xd567ae63 ipt_register_table +EXPORT_SYMBOL net/ipv4/tunnel4 0xb7346385 xfrm4_tunnel_register +EXPORT_SYMBOL net/ipv4/tunnel4 0xca8f2bd9 xfrm4_tunnel_deregister +EXPORT_SYMBOL net/ipv4/udp_tunnel 0xeb7b72ff udp_sock_create4 +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0x0b03b93c ip6_tnl_get_link_net +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0x45e27f04 ip6_tnl_get_cap +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0x82c715b3 ip6_tnl_get_iflink +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0x9ef0c8e6 ip6_tnl_parse_tlv_enc_lim +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0x699724f9 ip6t_unregister_table +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0x85dde02b ip6t_register_table +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0xfceb64f9 ip6t_do_table +EXPORT_SYMBOL net/ipv6/tunnel6 0x8a24a189 xfrm6_tunnel_deregister +EXPORT_SYMBOL net/ipv6/tunnel6 0xc8a87bcf xfrm6_tunnel_register +EXPORT_SYMBOL net/ipv6/xfrm6_tunnel 0x9b5b6239 xfrm6_tunnel_spi_lookup +EXPORT_SYMBOL net/ipv6/xfrm6_tunnel 0xe2585951 xfrm6_tunnel_alloc_spi +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x0410529a ircomm_close +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x063bb258 ircomm_connect_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x63d9d9ac ircomm_open +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x8b35e24b ircomm_disconnect_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0xb05ad436 ircomm_flow_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0xb5f358c8 ircomm_control_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0xdd92f6ba ircomm_connect_response +EXPORT_SYMBOL net/irda/ircomm/ircomm 0xf16a36c5 ircomm_data_request +EXPORT_SYMBOL net/irda/irda 0x06a3ee58 irias_new_integer_value +EXPORT_SYMBOL net/irda/irda 0x07392b83 async_unwrap_char +EXPORT_SYMBOL net/irda/irda 0x07a162d5 irttp_connect_request +EXPORT_SYMBOL net/irda/irda 0x07d3647c irlmp_register_service +EXPORT_SYMBOL net/irda/irda 0x140869d7 irlmp_close_lsap +EXPORT_SYMBOL net/irda/irda 0x17a491c5 irias_add_octseq_attrib +EXPORT_SYMBOL net/irda/irda 0x2a014c75 irda_device_set_media_busy +EXPORT_SYMBOL net/irda/irda 0x33cbe2c6 proc_irda +EXPORT_SYMBOL net/irda/irda 0x36cad55b hashbin_remove_this +EXPORT_SYMBOL net/irda/irda 0x37791344 hashbin_get_first +EXPORT_SYMBOL net/irda/irda 0x448b8aaa irda_qos_bits_to_value +EXPORT_SYMBOL net/irda/irda 0x46c1c4a2 irlmp_unregister_service +EXPORT_SYMBOL net/irda/irda 0x4b6ba11c irttp_data_request +EXPORT_SYMBOL net/irda/irda 0x53278073 iriap_close +EXPORT_SYMBOL net/irda/irda 0x5c306a2e async_wrap_skb +EXPORT_SYMBOL net/irda/irda 0x60156ac8 irttp_disconnect_request +EXPORT_SYMBOL net/irda/irda 0x6194e485 irttp_udata_request +EXPORT_SYMBOL net/irda/irda 0x6492e28c hashbin_get_next +EXPORT_SYMBOL net/irda/irda 0x6766ff2e irlap_open +EXPORT_SYMBOL net/irda/irda 0x6b043eba irda_init_max_qos_capabilies +EXPORT_SYMBOL net/irda/irda 0x6b76aa70 hashbin_delete +EXPORT_SYMBOL net/irda/irda 0x6d6ee678 irlmp_connect_request +EXPORT_SYMBOL net/irda/irda 0x7042bc54 irlmp_register_client +EXPORT_SYMBOL net/irda/irda 0x731cec71 hashbin_insert +EXPORT_SYMBOL net/irda/irda 0x74437282 iriap_getvaluebyclass_request +EXPORT_SYMBOL net/irda/irda 0x763e54a4 irlmp_unregister_client +EXPORT_SYMBOL net/irda/irda 0x77234959 irlmp_connect_response +EXPORT_SYMBOL net/irda/irda 0x7957f728 irlmp_update_client +EXPORT_SYMBOL net/irda/irda 0x7e67ca6e irias_new_object +EXPORT_SYMBOL net/irda/irda 0x7f52a8bf irda_param_insert +EXPORT_SYMBOL net/irda/irda 0x8264ce05 irttp_close_tsap +EXPORT_SYMBOL net/irda/irda 0x8349c2f7 irda_notify_init +EXPORT_SYMBOL net/irda/irda 0x836c0b00 irttp_open_tsap +EXPORT_SYMBOL net/irda/irda 0x8982c8d9 irias_delete_object +EXPORT_SYMBOL net/irda/irda 0x8a44dd5e hashbin_new +EXPORT_SYMBOL net/irda/irda 0x8a5cfadf alloc_irdadev +EXPORT_SYMBOL net/irda/irda 0x8b5f1b77 irttp_flow_request +EXPORT_SYMBOL net/irda/irda 0x90ddb6bd hashbin_remove +EXPORT_SYMBOL net/irda/irda 0x91815586 irda_param_pack +EXPORT_SYMBOL net/irda/irda 0x94a824db irda_param_extract_all +EXPORT_SYMBOL net/irda/irda 0x94c228eb irlmp_disconnect_request +EXPORT_SYMBOL net/irda/irda 0x95287cf8 irlap_close +EXPORT_SYMBOL net/irda/irda 0x96a692c1 irlmp_open_lsap +EXPORT_SYMBOL net/irda/irda 0x983c251b irlmp_data_request +EXPORT_SYMBOL net/irda/irda 0x9ffda243 irias_add_string_attrib +EXPORT_SYMBOL net/irda/irda 0xb3c13d7f irias_add_integer_attrib +EXPORT_SYMBOL net/irda/irda 0xb8f6c7d9 irttp_connect_response +EXPORT_SYMBOL net/irda/irda 0xb9394173 irias_delete_value +EXPORT_SYMBOL net/irda/irda 0xbcd3ef13 irias_object_change_attribute +EXPORT_SYMBOL net/irda/irda 0xbe40ace9 irlmp_discovery_request +EXPORT_SYMBOL net/irda/irda 0xbf7dd554 hashbin_find +EXPORT_SYMBOL net/irda/irda 0xbfa7c08d hashbin_lock_find +EXPORT_SYMBOL net/irda/irda 0xc477368d irias_find_object +EXPORT_SYMBOL net/irda/irda 0xc8d6eee8 iriap_open +EXPORT_SYMBOL net/irda/irda 0xce311e89 irttp_dup +EXPORT_SYMBOL net/irda/irda 0xde4c6b3c irlmp_service_to_hint +EXPORT_SYMBOL net/irda/irda 0xedd521c2 irlmp_get_discoveries +EXPORT_SYMBOL net/irda/irda 0xf199cba4 irias_insert_object +EXPORT_SYMBOL net/l2tp/l2tp_core 0x101cf058 l2tp_recv_common +EXPORT_SYMBOL net/lapb/lapb 0x1f293ce3 lapb_unregister +EXPORT_SYMBOL net/lapb/lapb 0x31b18544 lapb_data_request +EXPORT_SYMBOL net/lapb/lapb 0x49a38d32 lapb_register +EXPORT_SYMBOL net/lapb/lapb 0x68607859 lapb_disconnect_request +EXPORT_SYMBOL net/lapb/lapb 0xbd778226 lapb_setparms +EXPORT_SYMBOL net/lapb/lapb 0xcdb2dc14 lapb_connect_request +EXPORT_SYMBOL net/lapb/lapb 0xd51823a9 lapb_data_received +EXPORT_SYMBOL net/lapb/lapb 0xd6b5a69d lapb_getparms +EXPORT_SYMBOL net/llc/llc 0x19453d7d llc_set_station_handler +EXPORT_SYMBOL net/llc/llc 0x38b92846 llc_remove_pack +EXPORT_SYMBOL net/llc/llc 0x3faa1b78 llc_sap_close +EXPORT_SYMBOL net/llc/llc 0x4ddd4705 llc_build_and_send_ui_pkt +EXPORT_SYMBOL net/llc/llc 0x52d7b2fd llc_sap_list +EXPORT_SYMBOL net/llc/llc 0x7a607c6b llc_mac_hdr_init +EXPORT_SYMBOL net/llc/llc 0xb59c96b7 llc_add_pack +EXPORT_SYMBOL net/llc/llc 0xbe329e47 llc_sap_open +EXPORT_SYMBOL net/llc/llc 0xdee59338 llc_sap_find +EXPORT_SYMBOL net/mac80211/mac80211 0x00d0e3cb ieee80211_unregister_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x02166686 ieee80211_get_tkip_p1k_iv +EXPORT_SYMBOL net/mac80211/mac80211 0x053c2f22 ieee80211_unreserve_tid +EXPORT_SYMBOL net/mac80211/mac80211 0x0556491a rate_control_send_low +EXPORT_SYMBOL net/mac80211/mac80211 0x0807b909 ieee80211_send_bar +EXPORT_SYMBOL net/mac80211/mac80211 0x08d882fa ieee80211_reserve_tid +EXPORT_SYMBOL net/mac80211/mac80211 0x091ab686 ieee80211_ap_probereq_get +EXPORT_SYMBOL net/mac80211/mac80211 0x09b1b560 ieee80211_queue_delayed_work +EXPORT_SYMBOL net/mac80211/mac80211 0x0d2d8d0e ieee80211_ctstoself_get +EXPORT_SYMBOL net/mac80211/mac80211 0x0ddb58f0 ieee80211_ctstoself_duration +EXPORT_SYMBOL net/mac80211/mac80211 0x103c31ef ieee80211_scan_completed +EXPORT_SYMBOL net/mac80211/mac80211 0x180387e3 __ieee80211_create_tpt_led_trigger +EXPORT_SYMBOL net/mac80211/mac80211 0x1c1df98d ieee80211_stop_rx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0x2627f6ac ieee80211_sched_scan_results +EXPORT_SYMBOL net/mac80211/mac80211 0x265d354b ieee80211_start_tx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0x29bbc7db ieee80211_chswitch_done +EXPORT_SYMBOL net/mac80211/mac80211 0x2aad8791 ieee80211_rx_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0x2b20bde7 ieee80211_pspoll_get +EXPORT_SYMBOL net/mac80211/mac80211 0x2c628e8a ieee80211_tx_prepare_skb +EXPORT_SYMBOL net/mac80211/mac80211 0x2e00b0c7 ieee80211_cqm_beacon_loss_notify +EXPORT_SYMBOL net/mac80211/mac80211 0x3160d391 wiphy_to_ieee80211_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x3379fb46 ieee80211_free_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x3869f08e ieee80211_aes_cmac_calculate_k1_k2 +EXPORT_SYMBOL net/mac80211/mac80211 0x3ad80875 ieee80211_stop_tx_ba_cb_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0x3bd5b586 ieee80211_radar_detected +EXPORT_SYMBOL net/mac80211/mac80211 0x3fdfc5d0 ieee80211_beacon_get_template +EXPORT_SYMBOL net/mac80211/mac80211 0x408f6147 ieee80211_register_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x43100962 ieee80211_sta_eosp +EXPORT_SYMBOL net/mac80211/mac80211 0x45ebd03e ieee80211_probereq_get +EXPORT_SYMBOL net/mac80211/mac80211 0x4673ed86 ieee80211_rx +EXPORT_SYMBOL net/mac80211/mac80211 0x53929df1 rate_control_set_rates +EXPORT_SYMBOL net/mac80211/mac80211 0x568f0cb5 ieee80211_get_tx_rates +EXPORT_SYMBOL net/mac80211/mac80211 0x59911c49 ieee80211_rts_duration +EXPORT_SYMBOL net/mac80211/mac80211 0x691b3500 ieee80211_csa_finish +EXPORT_SYMBOL net/mac80211/mac80211 0x69de096c ieee80211_get_tkip_rx_p1k +EXPORT_SYMBOL net/mac80211/mac80211 0x6dc23e9a __ieee80211_get_tx_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0x74678f07 ieee80211_restart_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x74d1b38b ieee80211_beacon_loss +EXPORT_SYMBOL net/mac80211/mac80211 0x76b9ef28 ieee80211_get_key_rx_seq +EXPORT_SYMBOL net/mac80211/mac80211 0x77ea65c4 ieee80211_update_p2p_noa +EXPORT_SYMBOL net/mac80211/mac80211 0x7f02f679 ieee80211_stop_rx_ba_session_offl +EXPORT_SYMBOL net/mac80211/mac80211 0x810501d9 ieee80211_tx_status_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0x81632ac3 ieee80211_generic_frame_duration +EXPORT_SYMBOL net/mac80211/mac80211 0x8ba5ca63 ieee80211_csa_update_counter +EXPORT_SYMBOL net/mac80211/mac80211 0x8f4f29fd ieee80211_tx_status_noskb +EXPORT_SYMBOL net/mac80211/mac80211 0x933c5086 __ieee80211_get_assoc_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0x96c60c87 ieee80211_stop_tx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0x97ffec6c ieee80211_cqm_rssi_notify +EXPORT_SYMBOL net/mac80211/mac80211 0x98ad8376 ieee80211_sta_set_buffered +EXPORT_SYMBOL net/mac80211/mac80211 0x995e01db ieee80211_sta_ps_transition +EXPORT_SYMBOL net/mac80211/mac80211 0x9c8ea9b9 ieee80211_start_tx_ba_cb_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0x9ef67fc3 ieee80211_beacon_get_tim +EXPORT_SYMBOL net/mac80211/mac80211 0xa3cc12a4 ieee80211_stop_queue +EXPORT_SYMBOL net/mac80211/mac80211 0xa6f186f5 ieee80211_alloc_hw_nm +EXPORT_SYMBOL net/mac80211/mac80211 0xab13e412 ieee80211_report_wowlan_wakeup +EXPORT_SYMBOL net/mac80211/mac80211 0xab549045 ieee80211_stop_queues +EXPORT_SYMBOL net/mac80211/mac80211 0xac329e0c ieee80211_sta_block_awake +EXPORT_SYMBOL net/mac80211/mac80211 0xad64a344 ieee80211_rate_control_register +EXPORT_SYMBOL net/mac80211/mac80211 0xb1aaef91 ieee80211_get_key_tx_seq +EXPORT_SYMBOL net/mac80211/mac80211 0xb6fadf3f ieee80211_get_buffered_bc +EXPORT_SYMBOL net/mac80211/mac80211 0xb99c5b13 ieee80211_start_rx_ba_session_offl +EXPORT_SYMBOL net/mac80211/mac80211 0xba7131ed __ieee80211_get_radio_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0xc1fa37e4 __ieee80211_get_rx_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0xc3fdd975 ieee80211_disable_rssi_reports +EXPORT_SYMBOL net/mac80211/mac80211 0xc7d513a1 ieee80211_find_sta +EXPORT_SYMBOL net/mac80211/mac80211 0xc949bb1f ieee80211_nullfunc_get +EXPORT_SYMBOL net/mac80211/mac80211 0xcbec0409 ieee80211_free_txskb +EXPORT_SYMBOL net/mac80211/mac80211 0xcd48ae36 ieee80211_report_low_ack +EXPORT_SYMBOL net/mac80211/mac80211 0xcfd6be80 ieee80211_connection_loss +EXPORT_SYMBOL net/mac80211/mac80211 0xd18747e3 ieee80211_wake_queue +EXPORT_SYMBOL net/mac80211/mac80211 0xd1a4ad83 ieee80211_rate_control_unregister +EXPORT_SYMBOL net/mac80211/mac80211 0xd506e129 ieee80211_iter_keys +EXPORT_SYMBOL net/mac80211/mac80211 0xd72625cb ieee80211_parse_p2p_noa +EXPORT_SYMBOL net/mac80211/mac80211 0xda1b2138 ieee80211_rts_get +EXPORT_SYMBOL net/mac80211/mac80211 0xe2f22dfa ieee80211_proberesp_get +EXPORT_SYMBOL net/mac80211/mac80211 0xe372b1b5 ieee80211_tx_dequeue +EXPORT_SYMBOL net/mac80211/mac80211 0xe890ea12 ieee80211_queue_work +EXPORT_SYMBOL net/mac80211/mac80211 0xe96b2abc ieee80211_queue_stopped +EXPORT_SYMBOL net/mac80211/mac80211 0xe9b490d0 ieee80211_wake_queues +EXPORT_SYMBOL net/mac80211/mac80211 0xec60daca ieee80211_tdls_oper_request +EXPORT_SYMBOL net/mac80211/mac80211 0xed646445 ieee80211_get_tkip_p2k +EXPORT_SYMBOL net/mac80211/mac80211 0xee261793 ieee80211_sched_scan_stopped +EXPORT_SYMBOL net/mac80211/mac80211 0xf1d090f2 ieee80211_enable_rssi_reports +EXPORT_SYMBOL net/mac80211/mac80211 0xfad50aaa ieee80211_csa_is_complete +EXPORT_SYMBOL net/mac80211/mac80211 0xfd21fa16 ieee80211_tx_status +EXPORT_SYMBOL net/mac802154/mac802154 0x0faa26f8 ieee802154_register_hw +EXPORT_SYMBOL net/mac802154/mac802154 0x30ab64dd ieee802154_rx +EXPORT_SYMBOL net/mac802154/mac802154 0x31e9cdc4 ieee802154_stop_queue +EXPORT_SYMBOL net/mac802154/mac802154 0x50d9d1ba ieee802154_alloc_hw +EXPORT_SYMBOL net/mac802154/mac802154 0x74a9c015 ieee802154_unregister_hw +EXPORT_SYMBOL net/mac802154/mac802154 0x8ada8dee ieee802154_rx_irqsafe +EXPORT_SYMBOL net/mac802154/mac802154 0xa761657d ieee802154_free_hw +EXPORT_SYMBOL net/mac802154/mac802154 0xcba1dfda ieee802154_wake_queue +EXPORT_SYMBOL net/mac802154/mac802154 0xe0d87326 ieee802154_xmit_complete +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x01ed55f4 register_ip_vs_scheduler +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x193434f7 ip_vs_conn_put +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x1f667ad3 ip_vs_tcp_conn_listen +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x2b134b22 ip_vs_scheduler_err +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x55bbc0ed register_ip_vs_app +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x738c1e05 ip_vs_conn_new +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x9372e797 ip_vs_proto_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xa4d8d13e ip_vs_conn_in_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xd831a1a2 ip_vs_proto_name +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xdfddbfd3 unregister_ip_vs_app +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xe16309b0 ip_vs_conn_out_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xe9ed00b0 ip_vs_nfct_expect_related +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xea262e9b ip_vs_proto_data_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xf7d48b3f register_ip_vs_app_inc +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xfff9e738 unregister_ip_vs_scheduler +EXPORT_SYMBOL net/netfilter/nf_conntrack 0x3f814b77 __nf_ct_ext_destroy +EXPORT_SYMBOL net/netfilter/nf_conntrack 0x5f245beb nf_conntrack_untracked +EXPORT_SYMBOL net/netfilter/nf_conntrack 0x794d5d23 __nf_ct_ext_add_length +EXPORT_SYMBOL net/netfilter/nf_conntrack_pptp 0x827cc6a1 pptp_msg_name +EXPORT_SYMBOL net/netfilter/nf_nat 0x01f240e8 nf_nat_follow_master +EXPORT_SYMBOL net/netfilter/nf_nat 0x27275f1b nf_nat_setup_info +EXPORT_SYMBOL net/netfilter/nf_nat 0x54e018f5 nf_nat_mangle_udp_packet +EXPORT_SYMBOL net/netfilter/nf_nat 0x894cc852 nf_nat_used_tuple +EXPORT_SYMBOL net/netfilter/nf_nat 0xb4f95599 nf_xfrm_me_harder +EXPORT_SYMBOL net/netfilter/nf_nat 0xc7e5935e __nf_nat_mangle_tcp_packet +EXPORT_SYMBOL net/netfilter/x_tables 0x126415fa xt_register_matches +EXPORT_SYMBOL net/netfilter/x_tables 0x482d26fd xt_alloc_table_info +EXPORT_SYMBOL net/netfilter/x_tables 0x55667050 xt_unregister_target +EXPORT_SYMBOL net/netfilter/x_tables 0x58e4822b xt_unregister_matches +EXPORT_SYMBOL net/netfilter/x_tables 0x65a93566 xt_find_match +EXPORT_SYMBOL net/netfilter/x_tables 0x7daaded4 xt_unregister_targets +EXPORT_SYMBOL net/netfilter/x_tables 0x8c34bc01 xt_register_targets +EXPORT_SYMBOL net/netfilter/x_tables 0xa44c427b xt_register_target +EXPORT_SYMBOL net/netfilter/x_tables 0xd1a21986 xt_free_table_info +EXPORT_SYMBOL net/netfilter/x_tables 0xd899f0c3 xt_register_match +EXPORT_SYMBOL net/netfilter/x_tables 0xdceb575b xt_unregister_match +EXPORT_SYMBOL net/netfilter/x_tables 0xea1c0172 xt_find_target +EXPORT_SYMBOL net/nfc/hci/hci 0x1e7c186b nfc_hci_reset_pipes_per_host +EXPORT_SYMBOL net/nfc/hci/hci 0x21f37a79 nfc_hci_target_discovered +EXPORT_SYMBOL net/nfc/hci/hci 0x2ced1d5d nfc_hci_send_cmd_async +EXPORT_SYMBOL net/nfc/hci/hci 0x3215965d nfc_hci_unregister_device +EXPORT_SYMBOL net/nfc/hci/hci 0x41bdafbd nfc_hci_get_clientdata +EXPORT_SYMBOL net/nfc/hci/hci 0x43028a27 nfc_hci_result_to_errno +EXPORT_SYMBOL net/nfc/hci/hci 0x4346dd0c nfc_hci_connect_gate +EXPORT_SYMBOL net/nfc/hci/hci 0x680685d4 nfc_hci_register_device +EXPORT_SYMBOL net/nfc/hci/hci 0x68f348b6 nfc_hci_driver_failure +EXPORT_SYMBOL net/nfc/hci/hci 0x6bace278 nfc_hci_recv_frame +EXPORT_SYMBOL net/nfc/hci/hci 0x84962d33 nfc_hci_set_clientdata +EXPORT_SYMBOL net/nfc/hci/hci 0x921accb6 nfc_hci_free_device +EXPORT_SYMBOL net/nfc/hci/hci 0x96c639a2 nfc_hci_send_event +EXPORT_SYMBOL net/nfc/hci/hci 0x9b98d452 nfc_hci_send_cmd +EXPORT_SYMBOL net/nfc/hci/hci 0xa620366c nfc_hci_set_param +EXPORT_SYMBOL net/nfc/hci/hci 0xa65d9e03 nfc_hci_disconnect_gate +EXPORT_SYMBOL net/nfc/hci/hci 0xbca0b4fd nfc_hci_sak_to_protocol +EXPORT_SYMBOL net/nfc/hci/hci 0xc43e9a96 nfc_hci_reset_pipes +EXPORT_SYMBOL net/nfc/hci/hci 0xcb62c8f3 nfc_hci_get_param +EXPORT_SYMBOL net/nfc/hci/hci 0xd089ea1b nfc_hci_allocate_device +EXPORT_SYMBOL net/nfc/hci/hci 0xedbe19bb nfc_hci_disconnect_all_gates +EXPORT_SYMBOL net/nfc/nci/nci 0x06fbd001 nci_free_device +EXPORT_SYMBOL net/nfc/nci/nci 0x0f89fca9 nci_recv_frame +EXPORT_SYMBOL net/nfc/nci/nci 0x45d43930 nci_hci_get_param +EXPORT_SYMBOL net/nfc/nci/nci 0x45d4e732 nci_register_device +EXPORT_SYMBOL net/nfc/nci/nci 0x4970a7cc nci_hci_send_event +EXPORT_SYMBOL net/nfc/nci/nci 0x53439003 nci_hci_send_cmd +EXPORT_SYMBOL net/nfc/nci/nci 0x6405e581 nci_nfcee_discover +EXPORT_SYMBOL net/nfc/nci/nci 0x678f5832 nci_hci_set_param +EXPORT_SYMBOL net/nfc/nci/nci 0x79debd7c nci_hci_connect_gate +EXPORT_SYMBOL net/nfc/nci/nci 0x914581e0 nci_core_conn_create +EXPORT_SYMBOL net/nfc/nci/nci 0x99edc194 nci_hci_dev_session_init +EXPORT_SYMBOL net/nfc/nci/nci 0xae2615fc nci_hci_open_pipe +EXPORT_SYMBOL net/nfc/nci/nci 0xaeada23a nci_prop_cmd +EXPORT_SYMBOL net/nfc/nci/nci 0xb68a0daf nci_core_conn_close +EXPORT_SYMBOL net/nfc/nci/nci 0xba490602 nci_to_errno +EXPORT_SYMBOL net/nfc/nci/nci 0xc9a99f22 nci_unregister_device +EXPORT_SYMBOL net/nfc/nci/nci 0xd45bdd1c nci_nfcee_mode_set +EXPORT_SYMBOL net/nfc/nci/nci 0xe4663581 nci_allocate_device +EXPORT_SYMBOL net/nfc/nci/nci 0xf7af996d nci_set_config +EXPORT_SYMBOL net/nfc/nci/nci 0xfcfdc7f7 nci_req_complete +EXPORT_SYMBOL net/nfc/nfc 0x05de05eb nfc_fw_download_done +EXPORT_SYMBOL net/nfc/nfc 0x0df2664c nfc_send_to_raw_sock +EXPORT_SYMBOL net/nfc/nfc 0x10db9f10 nfc_alloc_recv_skb +EXPORT_SYMBOL net/nfc/nfc 0x2a67a1ac nfc_get_local_general_bytes +EXPORT_SYMBOL net/nfc/nfc 0x2dc966f6 nfc_proto_register +EXPORT_SYMBOL net/nfc/nfc 0x494d241f nfc_dep_link_is_up +EXPORT_SYMBOL net/nfc/nfc 0x4a21c6cd nfc_driver_failure +EXPORT_SYMBOL net/nfc/nfc 0x5f611ce2 nfc_tm_activated +EXPORT_SYMBOL net/nfc/nfc 0x713406bf nfc_se_transaction +EXPORT_SYMBOL net/nfc/nfc 0x737e1a89 nfc_register_device +EXPORT_SYMBOL net/nfc/nfc 0x7845e907 nfc_proto_unregister +EXPORT_SYMBOL net/nfc/nfc 0x7a08cc7d nfc_set_remote_general_bytes +EXPORT_SYMBOL net/nfc/nfc 0x83d54a5e nfc_unregister_device +EXPORT_SYMBOL net/nfc/nfc 0x8441121c nfc_tm_deactivated +EXPORT_SYMBOL net/nfc/nfc 0x848c32bb nfc_find_se +EXPORT_SYMBOL net/nfc/nfc 0x892cfb9d nfc_tm_data_received +EXPORT_SYMBOL net/nfc/nfc 0x97c0bb35 nfc_add_se +EXPORT_SYMBOL net/nfc/nfc 0x9f0aaa6e nfc_class +EXPORT_SYMBOL net/nfc/nfc 0xaf9867bc nfc_allocate_device +EXPORT_SYMBOL net/nfc/nfc 0xb829c869 nfc_target_lost +EXPORT_SYMBOL net/nfc/nfc 0xd20388cd nfc_remove_se +EXPORT_SYMBOL net/nfc/nfc 0xd8cc8ba4 nfc_targets_found +EXPORT_SYMBOL net/nfc/nfc_digital 0x02e60c16 nfc_digital_free_device +EXPORT_SYMBOL net/nfc/nfc_digital 0xcee919f8 nfc_digital_register_device +EXPORT_SYMBOL net/nfc/nfc_digital 0xcf5c584c nfc_digital_unregister_device +EXPORT_SYMBOL net/nfc/nfc_digital 0xe62383f1 nfc_digital_allocate_device +EXPORT_SYMBOL net/phonet/phonet 0x02fe8431 pn_sock_get_port +EXPORT_SYMBOL net/phonet/phonet 0x566e417b phonet_proto_register +EXPORT_SYMBOL net/phonet/phonet 0x5da6c882 pn_sock_unhash +EXPORT_SYMBOL net/phonet/phonet 0x633db47f phonet_proto_unregister +EXPORT_SYMBOL net/phonet/phonet 0x7567de04 pn_sock_hash +EXPORT_SYMBOL net/phonet/phonet 0xb1707b63 phonet_stream_ops +EXPORT_SYMBOL net/phonet/phonet 0xc0f773a9 pn_skb_send +EXPORT_SYMBOL net/phonet/phonet 0xca40b264 phonet_header_ops +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x2df0a519 rxrpc_kernel_begin_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x367df24f rxrpc_kernel_intercept_rx_messages +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x3bb4c57d rxrpc_kernel_accept_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x682340a7 rxrpc_kernel_is_data_last +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x71777d54 rxrpc_kernel_end_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x832ef7e3 rxrpc_kernel_data_delivered +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x8497fb9d rxrpc_kernel_send_data +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x8ea9190c key_type_rxrpc +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x953e7607 rxrpc_kernel_get_abort_code +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x97302dcf rxrpc_get_null_key +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xa6baa8f0 rxrpc_get_server_data_key +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xb62b6cb3 rxrpc_kernel_free_skb +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xbe064a2f rxrpc_kernel_reject_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xc6216475 rxrpc_kernel_get_error_number +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xd4e6db23 rxrpc_kernel_abort_call +EXPORT_SYMBOL net/sctp/sctp 0x47ab5365 sctp_do_peeloff +EXPORT_SYMBOL net/sunrpc/auth_gss/auth_rpcgss 0x6378cadf gss_mech_put +EXPORT_SYMBOL net/sunrpc/auth_gss/auth_rpcgss 0xb0393dc2 gss_mech_get +EXPORT_SYMBOL net/sunrpc/auth_gss/auth_rpcgss 0xc1107c07 gss_pseudoflavor_to_service +EXPORT_SYMBOL net/sunrpc/sunrpc 0x78616261 xdr_truncate_encode +EXPORT_SYMBOL net/sunrpc/sunrpc 0x9e88b35e svc_pool_stats_open +EXPORT_SYMBOL net/sunrpc/sunrpc 0xefb5546a xdr_restrict_buflen +EXPORT_SYMBOL net/wimax/wimax 0x7f5049e8 wimax_rfkill +EXPORT_SYMBOL net/wimax/wimax 0xf27febdd wimax_reset +EXPORT_SYMBOL net/wireless/cfg80211 0x0065e3c9 cfg80211_rx_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0x07119f02 cfg80211_scan_done +EXPORT_SYMBOL net/wireless/cfg80211 0x09300aa2 wiphy_rfkill_start_polling +EXPORT_SYMBOL net/wireless/cfg80211 0x09c64fbd ieee80211_frequency_to_channel +EXPORT_SYMBOL net/wireless/cfg80211 0x0a10fce0 wiphy_rfkill_set_hw_state +EXPORT_SYMBOL net/wireless/cfg80211 0x0f7d7f8d wiphy_unregister +EXPORT_SYMBOL net/wireless/cfg80211 0x15238e93 cfg80211_disconnected +EXPORT_SYMBOL net/wireless/cfg80211 0x169bc319 cfg80211_radar_event +EXPORT_SYMBOL net/wireless/cfg80211 0x1879fcbd bridge_tunnel_header +EXPORT_SYMBOL net/wireless/cfg80211 0x1891dc72 __cfg80211_send_event_skb +EXPORT_SYMBOL net/wireless/cfg80211 0x19542278 ieee80211_data_to_8023 +EXPORT_SYMBOL net/wireless/cfg80211 0x19e03378 cfg80211_get_p2p_attr +EXPORT_SYMBOL net/wireless/cfg80211 0x1db7114e cfg80211_get_station +EXPORT_SYMBOL net/wireless/cfg80211 0x1e40faa5 cfg80211_tdls_oper_request +EXPORT_SYMBOL net/wireless/cfg80211 0x2328434d cfg80211_chandef_dfs_required +EXPORT_SYMBOL net/wireless/cfg80211 0x261a4061 cfg80211_gtk_rekey_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x294157ed cfg80211_connect_result +EXPORT_SYMBOL net/wireless/cfg80211 0x2b919ae0 ieee80211_amsdu_to_8023s +EXPORT_SYMBOL net/wireless/cfg80211 0x2e5b93ed __cfg80211_alloc_reply_skb +EXPORT_SYMBOL net/wireless/cfg80211 0x2f0c43fe cfg80211_unlink_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x30dc1c15 cfg80211_auth_timeout +EXPORT_SYMBOL net/wireless/cfg80211 0x32402f5f cfg80211_get_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x36c8efd9 cfg80211_ch_switch_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x385134a0 freq_reg_info +EXPORT_SYMBOL net/wireless/cfg80211 0x387e4cf3 cfg80211_pmksa_candidate_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x3ae21030 cfg80211_crit_proto_stopped +EXPORT_SYMBOL net/wireless/cfg80211 0x3b334036 cfg80211_report_wowlan_wakeup +EXPORT_SYMBOL net/wireless/cfg80211 0x3d470c4d cfg80211_chandef_compatible +EXPORT_SYMBOL net/wireless/cfg80211 0x3e285fec cfg80211_chandef_valid +EXPORT_SYMBOL net/wireless/cfg80211 0x4214cca4 wiphy_rfkill_stop_polling +EXPORT_SYMBOL net/wireless/cfg80211 0x45dd57d9 cfg80211_remain_on_channel_expired +EXPORT_SYMBOL net/wireless/cfg80211 0x4801014d cfg80211_ft_event +EXPORT_SYMBOL net/wireless/cfg80211 0x495457ff cfg80211_calculate_bitrate +EXPORT_SYMBOL net/wireless/cfg80211 0x4cf6bd03 cfg80211_tx_mlme_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0x50214c28 ieee80211_bss_get_ie +EXPORT_SYMBOL net/wireless/cfg80211 0x52488092 cfg80211_conn_failed +EXPORT_SYMBOL net/wireless/cfg80211 0x53a8b577 cfg80211_probe_status +EXPORT_SYMBOL net/wireless/cfg80211 0x619f3be5 ieee80211_data_from_8023 +EXPORT_SYMBOL net/wireless/cfg80211 0x62edcc8f cfg80211_iter_combinations +EXPORT_SYMBOL net/wireless/cfg80211 0x67f24475 cfg80211_michael_mic_failure +EXPORT_SYMBOL net/wireless/cfg80211 0x69990a68 cfg80211_get_drvinfo +EXPORT_SYMBOL net/wireless/cfg80211 0x69b18f43 rfc1042_header +EXPORT_SYMBOL net/wireless/cfg80211 0x6c658e85 wiphy_apply_custom_regulatory +EXPORT_SYMBOL net/wireless/cfg80211 0x6d6cb9ad ieee80211_operating_class_to_band +EXPORT_SYMBOL net/wireless/cfg80211 0x755a824f cfg80211_rx_unexpected_4addr_frame +EXPORT_SYMBOL net/wireless/cfg80211 0x77751eaf cfg80211_inform_bss_width_frame +EXPORT_SYMBOL net/wireless/cfg80211 0x7abdeb09 regulatory_set_wiphy_regd +EXPORT_SYMBOL net/wireless/cfg80211 0x7ef09fbb wiphy_register +EXPORT_SYMBOL net/wireless/cfg80211 0x7ef39823 ieee80211_hdrlen +EXPORT_SYMBOL net/wireless/cfg80211 0x7fe1a403 cfg80211_find_ie +EXPORT_SYMBOL net/wireless/cfg80211 0x8316f0e4 regulatory_set_wiphy_regd_sync_rtnl +EXPORT_SYMBOL net/wireless/cfg80211 0x8492a430 ieee80211_get_response_rate +EXPORT_SYMBOL net/wireless/cfg80211 0x8a7062a5 ieee80211_mandatory_rates +EXPORT_SYMBOL net/wireless/cfg80211 0x8ea70f4a cfg80211_sched_scan_stopped +EXPORT_SYMBOL net/wireless/cfg80211 0x956ef7f9 cfg80211_ready_on_channel +EXPORT_SYMBOL net/wireless/cfg80211 0x966ff54d ieee80211_ie_split_ric +EXPORT_SYMBOL net/wireless/cfg80211 0x96d2a74d cfg80211_reg_can_beacon +EXPORT_SYMBOL net/wireless/cfg80211 0x982e6b6d ieee80211_radiotap_iterator_init +EXPORT_SYMBOL net/wireless/cfg80211 0x9acb732c cfg80211_sched_scan_stopped_rtnl +EXPORT_SYMBOL net/wireless/cfg80211 0x9b03874a cfg80211_cqm_rssi_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x9ca02c09 cfg80211_assoc_timeout +EXPORT_SYMBOL net/wireless/cfg80211 0xa1425906 ieee80211_channel_to_frequency +EXPORT_SYMBOL net/wireless/cfg80211 0xa197b1ff ieee80211_get_mesh_hdrlen +EXPORT_SYMBOL net/wireless/cfg80211 0xa2befad1 cfg80211_inform_bss_width +EXPORT_SYMBOL net/wireless/cfg80211 0xa767fa10 wiphy_new_nm +EXPORT_SYMBOL net/wireless/cfg80211 0xa852f80d cfg80211_cqm_beacon_loss_notify +EXPORT_SYMBOL net/wireless/cfg80211 0xa91b4f63 cfg80211_ch_switch_started_notify +EXPORT_SYMBOL net/wireless/cfg80211 0xac866e8d cfg80211_check_combinations +EXPORT_SYMBOL net/wireless/cfg80211 0xb31eb703 cfg80211_rx_assoc_resp +EXPORT_SYMBOL net/wireless/cfg80211 0xb4dd797c cfg80211_rx_mlme_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0xba3d93c2 cfg80211_chandef_usable +EXPORT_SYMBOL net/wireless/cfg80211 0xbb3ae97e cfg80211_classify8021d +EXPORT_SYMBOL net/wireless/cfg80211 0xbd5dbafe cfg80211_notify_new_peer_candidate +EXPORT_SYMBOL net/wireless/cfg80211 0xc1af0681 __cfg80211_alloc_event_skb +EXPORT_SYMBOL net/wireless/cfg80211 0xc318b554 cfg80211_del_sta_sinfo +EXPORT_SYMBOL net/wireless/cfg80211 0xc63f1b81 ieee80211_radiotap_iterator_next +EXPORT_SYMBOL net/wireless/cfg80211 0xc7618bfe cfg80211_new_sta +EXPORT_SYMBOL net/wireless/cfg80211 0xc90fde22 ieee80211_chandef_to_operating_class +EXPORT_SYMBOL net/wireless/cfg80211 0xd139449a regulatory_hint +EXPORT_SYMBOL net/wireless/cfg80211 0xd1d8ab3c cfg80211_reg_can_beacon_relax +EXPORT_SYMBOL net/wireless/cfg80211 0xd3de13a3 cfg80211_cqm_txe_notify +EXPORT_SYMBOL net/wireless/cfg80211 0xd42066a5 cfg80211_sched_scan_results +EXPORT_SYMBOL net/wireless/cfg80211 0xd4bb50c4 cfg80211_unregister_wdev +EXPORT_SYMBOL net/wireless/cfg80211 0xdba126c1 reg_initiator_name +EXPORT_SYMBOL net/wireless/cfg80211 0xdcb85e6f cfg80211_cqm_pktloss_notify +EXPORT_SYMBOL net/wireless/cfg80211 0xe0426c42 cfg80211_put_bss +EXPORT_SYMBOL net/wireless/cfg80211 0xe08f9a07 __ieee80211_get_channel +EXPORT_SYMBOL net/wireless/cfg80211 0xe1648ca9 cfg80211_stop_iface +EXPORT_SYMBOL net/wireless/cfg80211 0xe2d28d50 cfg80211_roamed +EXPORT_SYMBOL net/wireless/cfg80211 0xe489d3bc cfg80211_rx_spurious_frame +EXPORT_SYMBOL net/wireless/cfg80211 0xe7f03b7d cfg80211_mgmt_tx_status +EXPORT_SYMBOL net/wireless/cfg80211 0xeb6d7c6c ieee80211_ie_split +EXPORT_SYMBOL net/wireless/cfg80211 0xecc95d7b cfg80211_roamed_bss +EXPORT_SYMBOL net/wireless/cfg80211 0xefc56354 cfg80211_chandef_create +EXPORT_SYMBOL net/wireless/cfg80211 0xf20ee860 cfg80211_cac_event +EXPORT_SYMBOL net/wireless/cfg80211 0xf361cf23 ieee80211_get_num_supported_channels +EXPORT_SYMBOL net/wireless/cfg80211 0xf59cdd13 cfg80211_check_station_change +EXPORT_SYMBOL net/wireless/cfg80211 0xf5b155a3 ieee80211_get_hdrlen_from_skb +EXPORT_SYMBOL net/wireless/cfg80211 0xf6ea5186 cfg80211_ibss_joined +EXPORT_SYMBOL net/wireless/cfg80211 0xf7d385d8 cfg80211_report_obss_beacon +EXPORT_SYMBOL net/wireless/cfg80211 0xf9208ef1 wiphy_free +EXPORT_SYMBOL net/wireless/cfg80211 0xf98a3a2f cfg80211_ref_bss +EXPORT_SYMBOL net/wireless/cfg80211 0xfb8f5a9f cfg80211_rx_unprot_mlme_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0xfed4d591 cfg80211_find_vendor_ie +EXPORT_SYMBOL net/wireless/lib80211 0x152a9a3d lib80211_get_crypto_ops +EXPORT_SYMBOL net/wireless/lib80211 0x59e2eac4 lib80211_crypt_info_free +EXPORT_SYMBOL net/wireless/lib80211 0x99dbb486 lib80211_unregister_crypto_ops +EXPORT_SYMBOL net/wireless/lib80211 0x9b0e368c lib80211_crypt_info_init +EXPORT_SYMBOL net/wireless/lib80211 0xd7544a0a lib80211_register_crypto_ops +EXPORT_SYMBOL net/wireless/lib80211 0xddfff18c lib80211_crypt_delayed_deinit +EXPORT_SYMBOL sound/core/oss/snd-mixer-oss 0x8860679f 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 0x49a0735c snd_seq_kernel_client_write_poll +EXPORT_SYMBOL sound/core/seq/snd-seq 0x59f5c765 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 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 0xc6676025 snd_seq_kernel_client_enqueue_blocking +EXPORT_SYMBOL sound/core/seq/snd-seq 0xcac0a3be snd_seq_kernel_client_enqueue +EXPORT_SYMBOL sound/core/seq/snd-seq 0xe934da1d snd_seq_dump_var_event +EXPORT_SYMBOL sound/core/seq/snd-seq 0xf1f74ebc snd_seq_create_kernel_client +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0x091def1c snd_seq_autoload_exit +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0x370a0736 snd_seq_autoload_init +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0x6339b6d0 snd_seq_device_load_drivers +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0x713dd454 snd_seq_device_new +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x127b30fb snd_midi_event_encode +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x1cdc0812 snd_midi_event_decode +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x59eb74ae snd_midi_event_encode_byte +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x8102ed2f snd_midi_event_reset_encode +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0xb11ba32d snd_midi_event_new +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0xb2c7f684 snd_midi_event_reset_decode +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0xea0e5748 snd_midi_event_free +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0xed42580b snd_midi_event_no_status +EXPORT_SYMBOL sound/core/seq/snd-seq-virmidi 0x8c3c5d8d snd_virmidi_new +EXPORT_SYMBOL sound/core/snd-hwdep 0x3dd357b3 snd_hwdep_new +EXPORT_SYMBOL sound/core/snd-rawmidi 0x2ffd18f6 snd_rawmidi_transmit_ack +EXPORT_SYMBOL sound/core/snd-rawmidi 0x413dfcd2 snd_rawmidi_input_params +EXPORT_SYMBOL sound/core/snd-rawmidi 0x43032845 snd_rawmidi_drain_input +EXPORT_SYMBOL sound/core/snd-rawmidi 0x43d59801 snd_rawmidi_kernel_read +EXPORT_SYMBOL sound/core/snd-rawmidi 0x5b9611bd snd_rawmidi_receive +EXPORT_SYMBOL sound/core/snd-rawmidi 0x643f2fd6 snd_rawmidi_info_select +EXPORT_SYMBOL sound/core/snd-rawmidi 0x660b0f89 snd_rawmidi_kernel_write +EXPORT_SYMBOL sound/core/snd-rawmidi 0x79756660 snd_rawmidi_drain_output +EXPORT_SYMBOL sound/core/snd-rawmidi 0x850523d9 snd_rawmidi_kernel_open +EXPORT_SYMBOL sound/core/snd-rawmidi 0x89ca539e snd_rawmidi_new +EXPORT_SYMBOL sound/core/snd-rawmidi 0x8ed1da8f snd_rawmidi_transmit +EXPORT_SYMBOL sound/core/snd-rawmidi 0x92f6e8f2 snd_rawmidi_transmit_peek +EXPORT_SYMBOL sound/core/snd-rawmidi 0xa0ba0f01 snd_rawmidi_output_params +EXPORT_SYMBOL sound/core/snd-rawmidi 0xa5eb8aed snd_rawmidi_kernel_release +EXPORT_SYMBOL sound/core/snd-rawmidi 0xb5b99f7c snd_rawmidi_drop_output +EXPORT_SYMBOL sound/core/snd-rawmidi 0xd0aa6a42 snd_rawmidi_set_ops +EXPORT_SYMBOL sound/core/snd-rawmidi 0xebb67faa snd_rawmidi_transmit_empty +EXPORT_SYMBOL sound/drivers/mpu401/snd-mpu401-uart 0x6d629c59 snd_mpu401_uart_interrupt_tx +EXPORT_SYMBOL sound/drivers/mpu401/snd-mpu401-uart 0x7405d885 snd_mpu401_uart_new +EXPORT_SYMBOL sound/drivers/mpu401/snd-mpu401-uart 0xc0fec227 snd_mpu401_uart_interrupt +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x0317a7ae snd_ac97_pcm_assign +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x05d60256 snd_ac97_pcm_open +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x0d08401c snd_ac97_write_cache +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x107e989f snd_ac97_update_bits +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x1cfa5bca snd_ac97_write +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x2947a726 snd_ac97_update +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x39c89e84 snd_ac97_mixer +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x3ae24242 snd_ac97_update_power +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x59758fbd snd_ac97_read +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x5d7e9d35 snd_ac97_tune_hardware +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x64d4f47f snd_ac97_suspend +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x6be56731 snd_ac97_pcm_close +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x9ac9b723 snd_ac97_resume +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x9d45edd1 snd_ac97_bus +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xaaeebeea snd_ac97_set_rate +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xbf239f11 snd_ac97_pcm_double_rate_rules +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xebab8c97 snd_ac97_get_short_name +EXPORT_SYMBOL sound/soc/bcm/snd-soc-bcm2708-i2s 0x37e0cee8 bcm2708_i2s_set_gpio +EXPORT_SYMBOL sound/soc/codecs/snd-soc-tlv320aic23 0x2947532d tlv320aic23_regmap +EXPORT_SYMBOL sound/soc/codecs/snd-soc-tlv320aic23 0xa11baab6 tlv320aic23_probe +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 0xd20c8403 snd_usbmidi_create +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0xd9d2bb03 snd_usbmidi_disconnect +EXPORT_SYMBOL vmlinux 0x000dd599 scsi_report_opcode +EXPORT_SYMBOL vmlinux 0x00336d0e mipi_dsi_dcs_enter_sleep_mode +EXPORT_SYMBOL vmlinux 0x0033a290 scsi_dma_map +EXPORT_SYMBOL vmlinux 0x0099111f get_user_pages_unlocked +EXPORT_SYMBOL vmlinux 0x00cec5d5 blk_queue_invalidate_tags +EXPORT_SYMBOL vmlinux 0x00d5d00b wireless_spy_update +EXPORT_SYMBOL vmlinux 0x00f7de19 kern_path +EXPORT_SYMBOL vmlinux 0x01000e51 schedule +EXPORT_SYMBOL vmlinux 0x0101d5b1 ip_idents_reserve +EXPORT_SYMBOL vmlinux 0x01139ffc max_mapnr +EXPORT_SYMBOL vmlinux 0x011a9e53 elf_hwcap2 +EXPORT_SYMBOL vmlinux 0x013ac695 __devm_gpiod_get_optional +EXPORT_SYMBOL vmlinux 0x01424f59 sg_copy_to_buffer +EXPORT_SYMBOL vmlinux 0x0162885a skb_recv_datagram +EXPORT_SYMBOL vmlinux 0x016e5c2a mod_timer +EXPORT_SYMBOL vmlinux 0x0186e2de smp_call_function_many +EXPORT_SYMBOL vmlinux 0x018cb387 d_alloc +EXPORT_SYMBOL vmlinux 0x01982300 ip_getsockopt +EXPORT_SYMBOL vmlinux 0x01b8ecda vm_iomap_memory +EXPORT_SYMBOL vmlinux 0x01c1ee04 mount_pseudo +EXPORT_SYMBOL vmlinux 0x01cbc07b netdev_change_features +EXPORT_SYMBOL vmlinux 0x01da71a4 dev_uc_init +EXPORT_SYMBOL vmlinux 0x01dc6450 _dev_info +EXPORT_SYMBOL vmlinux 0x02103d0d vfs_unlink +EXPORT_SYMBOL vmlinux 0x02124474 ip_send_check +EXPORT_SYMBOL vmlinux 0x02196324 __aeabi_idiv +EXPORT_SYMBOL vmlinux 0x021a6059 genphy_read_status +EXPORT_SYMBOL vmlinux 0x024cd6d6 flush_dcache_page +EXPORT_SYMBOL vmlinux 0x025dc55c tcf_em_tree_validate +EXPORT_SYMBOL vmlinux 0x0263858f bcm_dmaman_remove +EXPORT_SYMBOL vmlinux 0x02649054 security_sock_rcv_skb +EXPORT_SYMBOL vmlinux 0x0274dc2b netif_get_num_default_rss_queues +EXPORT_SYMBOL vmlinux 0x0283dfe3 _snd_pcm_hw_params_any +EXPORT_SYMBOL vmlinux 0x02873e04 dput +EXPORT_SYMBOL vmlinux 0x028e189d pagecache_write_end +EXPORT_SYMBOL vmlinux 0x02988060 blkdev_reread_part +EXPORT_SYMBOL vmlinux 0x029cc45b eth_header_parse +EXPORT_SYMBOL vmlinux 0x02a18c74 nf_conntrack_destroy +EXPORT_SYMBOL vmlinux 0x02a36f07 simple_setattr +EXPORT_SYMBOL vmlinux 0x02a6ce5a crc16_table +EXPORT_SYMBOL vmlinux 0x02ab0c2c dst_cow_metrics_generic +EXPORT_SYMBOL vmlinux 0x02b8f30c inet_frags_fini +EXPORT_SYMBOL vmlinux 0x02d18abc inet6_register_protosw +EXPORT_SYMBOL vmlinux 0x02ea111e scsi_driverbyte_string +EXPORT_SYMBOL vmlinux 0x02ee26c1 free_pages_exact +EXPORT_SYMBOL vmlinux 0x02ef742b percpu_counter_set +EXPORT_SYMBOL vmlinux 0x02f6ea33 register_tcf_proto_ops +EXPORT_SYMBOL vmlinux 0x02f9f29f wake_up_process +EXPORT_SYMBOL vmlinux 0x0301dc0c mtd_concat_create +EXPORT_SYMBOL vmlinux 0x03026722 mempool_alloc +EXPORT_SYMBOL vmlinux 0x0304967e snd_pcm_open_substream +EXPORT_SYMBOL vmlinux 0x03112f13 dwc_cc_if_alloc +EXPORT_SYMBOL vmlinux 0x03148f95 simple_transaction_read +EXPORT_SYMBOL vmlinux 0x0334da4e scsi_command_size_tbl +EXPORT_SYMBOL vmlinux 0x033cba2b __skb_flow_get_ports +EXPORT_SYMBOL vmlinux 0x03449694 posix_acl_chmod +EXPORT_SYMBOL vmlinux 0x03476a74 tso_start +EXPORT_SYMBOL vmlinux 0x03592ea0 security_unix_stream_connect +EXPORT_SYMBOL vmlinux 0x0366307a console_suspend_enabled +EXPORT_SYMBOL vmlinux 0x037a0cba kfree +EXPORT_SYMBOL vmlinux 0x038d0357 skb_mac_gso_segment +EXPORT_SYMBOL vmlinux 0x03964ee6 dquot_commit_info +EXPORT_SYMBOL vmlinux 0x03a9d135 t10_pi_type3_ip +EXPORT_SYMBOL vmlinux 0x03ba39b0 v7_flush_user_cache_all +EXPORT_SYMBOL vmlinux 0x03bd4e6e dev_mc_del +EXPORT_SYMBOL vmlinux 0x03cbad1f mmc_erase +EXPORT_SYMBOL vmlinux 0x03d37fd0 set_binfmt +EXPORT_SYMBOL vmlinux 0x03d79cf8 mmc_can_discard +EXPORT_SYMBOL vmlinux 0x03f0e61e writeback_inodes_sb +EXPORT_SYMBOL vmlinux 0x03fc54b6 deactivate_super +EXPORT_SYMBOL vmlinux 0x03fd2571 vm_unmap_ram +EXPORT_SYMBOL vmlinux 0x041b9d09 snd_ctl_remove_id +EXPORT_SYMBOL vmlinux 0x0422fe4a inet_csk_timer_bug_msg +EXPORT_SYMBOL vmlinux 0x04414655 elv_unregister_queue +EXPORT_SYMBOL vmlinux 0x04482cdb __refrigerator +EXPORT_SYMBOL vmlinux 0x044b95f0 snd_ctl_register_ioctl +EXPORT_SYMBOL vmlinux 0x04825721 padata_remove_cpu +EXPORT_SYMBOL vmlinux 0x0487f831 fb_find_best_display +EXPORT_SYMBOL vmlinux 0x0493a274 simple_empty +EXPORT_SYMBOL vmlinux 0x04a1a396 __get_user_pages +EXPORT_SYMBOL vmlinux 0x04bb756a led_blink_set +EXPORT_SYMBOL vmlinux 0x04cda566 snd_interval_refine +EXPORT_SYMBOL vmlinux 0x04ea56f9 _kstrtol +EXPORT_SYMBOL vmlinux 0x05240ee7 percpu_counter_batch +EXPORT_SYMBOL vmlinux 0x0549470a cros_ec_prepare_tx +EXPORT_SYMBOL vmlinux 0x058310c9 cad_pid +EXPORT_SYMBOL vmlinux 0x058f3713 dump_emit +EXPORT_SYMBOL vmlinux 0x059c2185 jbd2_journal_update_sb_errno +EXPORT_SYMBOL vmlinux 0x05b46161 dev_add_offload +EXPORT_SYMBOL vmlinux 0x05d7ac14 genlmsg_put +EXPORT_SYMBOL vmlinux 0x05dd0c6e clkdev_drop +EXPORT_SYMBOL vmlinux 0x060864ae proc_set_user +EXPORT_SYMBOL vmlinux 0x061651be strcat +EXPORT_SYMBOL vmlinux 0x062b0394 tcp_md5_hash_header +EXPORT_SYMBOL vmlinux 0x062fde25 dev_mc_init +EXPORT_SYMBOL vmlinux 0x0634100a bitmap_parselist_user +EXPORT_SYMBOL vmlinux 0x0637ed3b blkdev_get +EXPORT_SYMBOL vmlinux 0x0665cd68 sock_init_data +EXPORT_SYMBOL vmlinux 0x067820ca register_key_type +EXPORT_SYMBOL vmlinux 0x067d8d35 security_release_secctx +EXPORT_SYMBOL vmlinux 0x06872817 DWC_STRLEN +EXPORT_SYMBOL vmlinux 0x06898fac sock_recvmsg +EXPORT_SYMBOL vmlinux 0x06c4ed78 dev_queue_xmit_sk +EXPORT_SYMBOL vmlinux 0x06c98161 udp_disconnect +EXPORT_SYMBOL vmlinux 0x06cbbe5e inet_accept +EXPORT_SYMBOL vmlinux 0x06cbf31c of_device_unregister +EXPORT_SYMBOL vmlinux 0x06e51755 ip_ct_attach +EXPORT_SYMBOL vmlinux 0x06e5c9b7 swiotlb_sync_sg_for_device +EXPORT_SYMBOL vmlinux 0x06fe3b14 default_grn +EXPORT_SYMBOL vmlinux 0x07090ddc dev_addr_del +EXPORT_SYMBOL vmlinux 0x072a8f8d __set_fiq_regs +EXPORT_SYMBOL vmlinux 0x072b1ce7 skb_coalesce_rx_frag +EXPORT_SYMBOL vmlinux 0x077fb1a7 inet_csk_reqsk_queue_drop +EXPORT_SYMBOL vmlinux 0x07a4b576 flex_array_free +EXPORT_SYMBOL vmlinux 0x07a890c8 fb_alloc_cmap +EXPORT_SYMBOL vmlinux 0x07af4fa6 ppp_unregister_compressor +EXPORT_SYMBOL vmlinux 0x07cc4a5d printk_timed_ratelimit +EXPORT_SYMBOL vmlinux 0x07cf9099 wait_for_completion_timeout +EXPORT_SYMBOL vmlinux 0x07e0b5a4 neigh_lookup_nodev +EXPORT_SYMBOL vmlinux 0x080ddce6 DWC_TIME +EXPORT_SYMBOL vmlinux 0x081f3afb complete_all +EXPORT_SYMBOL vmlinux 0x08231257 serio_reconnect +EXPORT_SYMBOL vmlinux 0x0826a18f fsnotify_put_mark +EXPORT_SYMBOL vmlinux 0x082b343d __ww_mutex_lock +EXPORT_SYMBOL vmlinux 0x083eb21c rfkill_unregister +EXPORT_SYMBOL vmlinux 0x0841b588 DWC_STRCMP +EXPORT_SYMBOL vmlinux 0x085226d1 param_set_copystring +EXPORT_SYMBOL vmlinux 0x0853180c xfrm_lookup_route +EXPORT_SYMBOL vmlinux 0x08928b90 __nla_put +EXPORT_SYMBOL vmlinux 0x08b18a7b t10_pi_type3_crc +EXPORT_SYMBOL vmlinux 0x08ba0fdd lock_rename +EXPORT_SYMBOL vmlinux 0x08c0d670 __frontswap_load +EXPORT_SYMBOL vmlinux 0x08c9ea66 make_kprojid +EXPORT_SYMBOL vmlinux 0x08ea69e7 mipi_dsi_packet_format_is_long +EXPORT_SYMBOL vmlinux 0x08eaa63f unlock_new_inode +EXPORT_SYMBOL vmlinux 0x0900ba83 inode_add_rsv_space +EXPORT_SYMBOL vmlinux 0x090ff6e4 i2c_del_driver +EXPORT_SYMBOL vmlinux 0x092c7ad0 xfrm4_protocol_deregister +EXPORT_SYMBOL vmlinux 0x092d4254 kill_pid +EXPORT_SYMBOL vmlinux 0x0941b8be vlan_dev_real_dev +EXPORT_SYMBOL vmlinux 0x09554c54 param_set_short +EXPORT_SYMBOL vmlinux 0x09580deb init_timer_key +EXPORT_SYMBOL vmlinux 0x096e6bff scsi_bios_ptable +EXPORT_SYMBOL vmlinux 0x097ec1ff _raw_write_lock_irqsave +EXPORT_SYMBOL vmlinux 0x098b71c6 fb_dealloc_cmap +EXPORT_SYMBOL vmlinux 0x09a24dbe simple_open +EXPORT_SYMBOL vmlinux 0x09a7f668 xfrm_register_mode +EXPORT_SYMBOL vmlinux 0x09c55cec schedule_timeout_interruptible +EXPORT_SYMBOL vmlinux 0x09c8eb55 font_vga_8x16 +EXPORT_SYMBOL vmlinux 0x09cf1b46 proc_dointvec_jiffies +EXPORT_SYMBOL vmlinux 0x09cfaad1 devfreq_suspend_device +EXPORT_SYMBOL vmlinux 0x09d44df9 in_lock_functions +EXPORT_SYMBOL vmlinux 0x09db8761 phy_drivers_unregister +EXPORT_SYMBOL vmlinux 0x09f43642 jbd2_journal_free_reserved +EXPORT_SYMBOL vmlinux 0x0a0786de udplite_table +EXPORT_SYMBOL vmlinux 0x0a0f57fe page_follow_link_light +EXPORT_SYMBOL vmlinux 0x0a11f416 generic_show_options +EXPORT_SYMBOL vmlinux 0x0a1bc81a udp_add_offload +EXPORT_SYMBOL vmlinux 0x0a1f0c69 alloc_netdev_mqs +EXPORT_SYMBOL vmlinux 0x0a2487e0 unblock_all_signals +EXPORT_SYMBOL vmlinux 0x0a292872 reservation_seqcount_class +EXPORT_SYMBOL vmlinux 0x0a3131f6 strnchr +EXPORT_SYMBOL vmlinux 0x0a373226 crc32_le_shift +EXPORT_SYMBOL vmlinux 0x0a3ba257 alloc_disk_node +EXPORT_SYMBOL vmlinux 0x0a40ccdd ab3100_event_register +EXPORT_SYMBOL vmlinux 0x0a443db0 __neigh_create +EXPORT_SYMBOL vmlinux 0x0a469d23 mfd_clone_cell +EXPORT_SYMBOL vmlinux 0x0a56e217 make_kuid +EXPORT_SYMBOL vmlinux 0x0a73afa9 kfree_skb +EXPORT_SYMBOL vmlinux 0x0a9a71ba sock_no_connect +EXPORT_SYMBOL vmlinux 0x0aa087e7 snd_device_free +EXPORT_SYMBOL vmlinux 0x0aa309cf synchronize_hardirq +EXPORT_SYMBOL vmlinux 0x0aada090 sock_no_getsockopt +EXPORT_SYMBOL vmlinux 0x0acf7679 dma_issue_pending_all +EXPORT_SYMBOL vmlinux 0x0ad2e870 input_close_device +EXPORT_SYMBOL vmlinux 0x0ae5c3a9 set_page_dirty +EXPORT_SYMBOL vmlinux 0x0af02f31 __xfrm_state_delete +EXPORT_SYMBOL vmlinux 0x0af962a0 netdev_lower_get_next_private_rcu +EXPORT_SYMBOL vmlinux 0x0b0d888b icmpv6_err_convert +EXPORT_SYMBOL vmlinux 0x0b194cf2 ip6_expire_frag_queue +EXPORT_SYMBOL vmlinux 0x0b1beb31 vmalloc_32_user +EXPORT_SYMBOL vmlinux 0x0b48677a __kfifo_init +EXPORT_SYMBOL vmlinux 0x0b5d2161 vfs_writev +EXPORT_SYMBOL vmlinux 0x0b61d7d2 inet_csk_reset_keepalive_timer +EXPORT_SYMBOL vmlinux 0x0b6b1160 __napi_schedule_irqoff +EXPORT_SYMBOL vmlinux 0x0b6f14e0 __dst_destroy_metrics_generic +EXPORT_SYMBOL vmlinux 0x0b742fd7 simple_strtol +EXPORT_SYMBOL vmlinux 0x0b810cc0 nf_reinject +EXPORT_SYMBOL vmlinux 0x0b8e43ec bio_put +EXPORT_SYMBOL vmlinux 0x0ba615fc put_disk +EXPORT_SYMBOL vmlinux 0x0bb239d9 snd_timer_stop +EXPORT_SYMBOL vmlinux 0x0bbc5908 gen_estimator_active +EXPORT_SYMBOL vmlinux 0x0bc477a2 irq_set_irq_type +EXPORT_SYMBOL vmlinux 0x0bc5ee42 mmc_gpio_request_ro +EXPORT_SYMBOL vmlinux 0x0be436fc bio_clone_fast +EXPORT_SYMBOL vmlinux 0x0bf4f07f netif_stacked_transfer_operstate +EXPORT_SYMBOL vmlinux 0x0c0dfaf1 sock_diag_put_filterinfo +EXPORT_SYMBOL vmlinux 0x0c3a6397 km_query +EXPORT_SYMBOL vmlinux 0x0c45fc96 vfs_lstat +EXPORT_SYMBOL vmlinux 0x0c571e7d swiotlb_unmap_sg +EXPORT_SYMBOL vmlinux 0x0c58a8cd netdev_increment_features +EXPORT_SYMBOL vmlinux 0x0c59ba6a key_link +EXPORT_SYMBOL vmlinux 0x0c875719 devm_request_resource +EXPORT_SYMBOL vmlinux 0x0ca0c882 twl6030_interrupt_mask +EXPORT_SYMBOL vmlinux 0x0ca353fc tty_port_close_end +EXPORT_SYMBOL vmlinux 0x0ca54fee _test_and_set_bit +EXPORT_SYMBOL vmlinux 0x0cae232b utf16s_to_utf8s +EXPORT_SYMBOL vmlinux 0x0cb3a391 seq_release +EXPORT_SYMBOL vmlinux 0x0cb7f3d3 ip_route_input_noref +EXPORT_SYMBOL vmlinux 0x0cc0e9d2 kdb_current_task +EXPORT_SYMBOL vmlinux 0x0cd31c48 tc_classify +EXPORT_SYMBOL vmlinux 0x0cdd158d sg_alloc_table +EXPORT_SYMBOL vmlinux 0x0cef3762 napi_get_frags +EXPORT_SYMBOL vmlinux 0x0cf8c335 devm_gpio_free +EXPORT_SYMBOL vmlinux 0x0cfefe1e percpu_counter_destroy +EXPORT_SYMBOL vmlinux 0x0d05053e udp6_csum_init +EXPORT_SYMBOL vmlinux 0x0d29cdd6 read_cache_page_gfp +EXPORT_SYMBOL vmlinux 0x0d379a55 install_exec_creds +EXPORT_SYMBOL vmlinux 0x0d37e20d __skb_get_hash_flowi4 +EXPORT_SYMBOL vmlinux 0x0d3f57a2 _find_next_bit_le +EXPORT_SYMBOL vmlinux 0x0d4352da proc_symlink +EXPORT_SYMBOL vmlinux 0x0d4bd59a cdev_alloc +EXPORT_SYMBOL vmlinux 0x0d4d7a32 _atomic_dec_and_lock +EXPORT_SYMBOL vmlinux 0x0d542439 __ipv6_addr_type +EXPORT_SYMBOL vmlinux 0x0d61eeee __bitmap_subset +EXPORT_SYMBOL vmlinux 0x0d76490c tcp_md5_hash_key +EXPORT_SYMBOL vmlinux 0x0d76544c skb_vlan_untag +EXPORT_SYMBOL vmlinux 0x0d90498b i2c_transfer +EXPORT_SYMBOL vmlinux 0x0da10ec3 security_sock_graft +EXPORT_SYMBOL vmlinux 0x0dc1a78c bin2hex +EXPORT_SYMBOL vmlinux 0x0dcb52cd snd_pcm_hw_param_first +EXPORT_SYMBOL vmlinux 0x0dcd8c93 __break_lease +EXPORT_SYMBOL vmlinux 0x0dd34f0b sock_get_timestamp +EXPORT_SYMBOL vmlinux 0x0de2c358 blk_mq_all_tag_busy_iter +EXPORT_SYMBOL vmlinux 0x0e26e303 blk_queue_io_min +EXPORT_SYMBOL vmlinux 0x0e3c381e ip_setsockopt +EXPORT_SYMBOL vmlinux 0x0e51308e phy_resume +EXPORT_SYMBOL vmlinux 0x0e58a823 __vfs_write +EXPORT_SYMBOL vmlinux 0x0e6da44a set_normalized_timespec +EXPORT_SYMBOL vmlinux 0x0e71d498 key_put +EXPORT_SYMBOL vmlinux 0x0e755db8 pps_event +EXPORT_SYMBOL vmlinux 0x0e8c4b19 mmc_fixup_device +EXPORT_SYMBOL vmlinux 0x0eab9b49 fsnotify_get_group +EXPORT_SYMBOL vmlinux 0x0eadb4d9 jbd2_journal_flush +EXPORT_SYMBOL vmlinux 0x0eaf451e hdmi_vendor_infoframe_pack +EXPORT_SYMBOL vmlinux 0x0ed1e9e3 make_bad_inode +EXPORT_SYMBOL vmlinux 0x0efcbb1b set_current_groups +EXPORT_SYMBOL vmlinux 0x0f09cca9 filemap_page_mkwrite +EXPORT_SYMBOL vmlinux 0x0f0dafbf iov_iter_kvec +EXPORT_SYMBOL vmlinux 0x0f20a387 ip6_dst_hoplimit +EXPORT_SYMBOL vmlinux 0x0f3de695 buffer_migrate_page +EXPORT_SYMBOL vmlinux 0x0f4c91ed ns_to_timespec +EXPORT_SYMBOL vmlinux 0x0f6a3b5c string_get_size +EXPORT_SYMBOL vmlinux 0x0f7b3502 genphy_soft_reset +EXPORT_SYMBOL vmlinux 0x0f88fb1c mfd_remove_devices +EXPORT_SYMBOL vmlinux 0x0f9dff85 sock_i_uid +EXPORT_SYMBOL vmlinux 0x0fa2a45e __memzero +EXPORT_SYMBOL vmlinux 0x0fa66ab2 jbd2_journal_revoke +EXPORT_SYMBOL vmlinux 0x0faef0ed __tasklet_schedule +EXPORT_SYMBOL vmlinux 0x0faf9d3d __cleancache_invalidate_page +EXPORT_SYMBOL vmlinux 0x0fb2f8a4 mktime64 +EXPORT_SYMBOL vmlinux 0x0fdea967 scsi_rescan_device +EXPORT_SYMBOL vmlinux 0x0fe1cd0f mmc_of_parse +EXPORT_SYMBOL vmlinux 0x0ff178f6 __aeabi_idivmod +EXPORT_SYMBOL vmlinux 0x0ff2b602 slhc_compress +EXPORT_SYMBOL vmlinux 0x0ff4a678 mb_cache_entry_find_next +EXPORT_SYMBOL vmlinux 0x101900c9 xfrm4_rcv_encap +EXPORT_SYMBOL vmlinux 0x1026dc8f dcb_setapp +EXPORT_SYMBOL vmlinux 0x1026ed4c skb_queue_tail +EXPORT_SYMBOL vmlinux 0x103eaaae jbd2_journal_clear_features +EXPORT_SYMBOL vmlinux 0x104ba582 build_skb +EXPORT_SYMBOL vmlinux 0x10592544 tty_kref_put +EXPORT_SYMBOL vmlinux 0x1069a564 padata_unregister_cpumask_notifier +EXPORT_SYMBOL vmlinux 0x106f13ab crc_t10dif_generic +EXPORT_SYMBOL vmlinux 0x1072a394 csum_partial_copy_from_user +EXPORT_SYMBOL vmlinux 0x107e5878 zlib_inflateEnd +EXPORT_SYMBOL vmlinux 0x108521d7 zerocopy_sg_from_iter +EXPORT_SYMBOL vmlinux 0x1088551e inet_select_addr +EXPORT_SYMBOL vmlinux 0x10a87712 netdev_err +EXPORT_SYMBOL vmlinux 0x10b0494f lock_sock_fast +EXPORT_SYMBOL vmlinux 0x10b19cd6 read_cache_pages +EXPORT_SYMBOL vmlinux 0x10b88e78 phy_write_mmd_indirect +EXPORT_SYMBOL vmlinux 0x10c6543f ndo_dflt_fdb_del +EXPORT_SYMBOL vmlinux 0x10cb4f61 noop_fsync +EXPORT_SYMBOL vmlinux 0x10ee20bb default_blu +EXPORT_SYMBOL vmlinux 0x10fcc211 abx500_get_register_page_interruptible +EXPORT_SYMBOL vmlinux 0x11089ac7 _ctype +EXPORT_SYMBOL vmlinux 0x114f40a7 uart_remove_one_port +EXPORT_SYMBOL vmlinux 0x115aa3f0 netlink_rcv_skb +EXPORT_SYMBOL vmlinux 0x1163f0a7 blk_max_low_pfn +EXPORT_SYMBOL vmlinux 0x117093be qdisc_class_hash_init +EXPORT_SYMBOL vmlinux 0x1187e89f mnt_set_expiry +EXPORT_SYMBOL vmlinux 0x118a5e56 blk_limits_io_min +EXPORT_SYMBOL vmlinux 0x119b50e7 elf_check_arch +EXPORT_SYMBOL vmlinux 0x11a044f6 mod_timer_pinned +EXPORT_SYMBOL vmlinux 0x11a37dc1 clk_add_alias +EXPORT_SYMBOL vmlinux 0x11a9e105 tty_port_tty_set +EXPORT_SYMBOL vmlinux 0x11d21290 fixed_size_llseek +EXPORT_SYMBOL vmlinux 0x11f7ed4c hex_to_bin +EXPORT_SYMBOL vmlinux 0x1203e80c __devcgroup_inode_permission +EXPORT_SYMBOL vmlinux 0x1209b3b8 generic_file_readonly_mmap +EXPORT_SYMBOL vmlinux 0x120b336a __rb_insert_augmented +EXPORT_SYMBOL vmlinux 0x120fc6b1 kstrdup_const +EXPORT_SYMBOL vmlinux 0x12435e86 ppp_unit_number +EXPORT_SYMBOL vmlinux 0x125d1edf amba_find_device +EXPORT_SYMBOL vmlinux 0x126c5376 dev_mc_flush +EXPORT_SYMBOL vmlinux 0x12a38747 usleep_range +EXPORT_SYMBOL vmlinux 0x12b42ee7 bio_integrity_free +EXPORT_SYMBOL vmlinux 0x12da5bb2 __kmalloc +EXPORT_SYMBOL vmlinux 0x130aabf7 of_n_addr_cells +EXPORT_SYMBOL vmlinux 0x131ad6ec blk_init_queue_node +EXPORT_SYMBOL vmlinux 0x13243d4b wl1251_get_platform_data +EXPORT_SYMBOL vmlinux 0x13307fde vsscanf +EXPORT_SYMBOL vmlinux 0x13315729 flex_array_alloc +EXPORT_SYMBOL vmlinux 0x134da1d9 touchscreen_parse_of_params +EXPORT_SYMBOL vmlinux 0x134f5cb9 tcp_recvmsg +EXPORT_SYMBOL vmlinux 0x136eb436 snd_pcm_hw_rule_add +EXPORT_SYMBOL vmlinux 0x137c35c6 udp_lib_unhash +EXPORT_SYMBOL vmlinux 0x137efda2 fsnotify_put_group +EXPORT_SYMBOL vmlinux 0x13a0886e mmc_put_card +EXPORT_SYMBOL vmlinux 0x13d0adf7 __kfifo_out +EXPORT_SYMBOL vmlinux 0x13df7d0a find_vma +EXPORT_SYMBOL vmlinux 0x13ec73cc xfrm4_protocol_register +EXPORT_SYMBOL vmlinux 0x13f42152 system_entering_hibernation +EXPORT_SYMBOL vmlinux 0x1420b379 kstrtou16_from_user +EXPORT_SYMBOL vmlinux 0x143753f6 mark_page_accessed +EXPORT_SYMBOL vmlinux 0x14780800 default_file_splice_read +EXPORT_SYMBOL vmlinux 0x14999890 DWC_MUTEX_FREE +EXPORT_SYMBOL vmlinux 0x14a4b36e napi_complete_done +EXPORT_SYMBOL vmlinux 0x14a5a223 dget_parent +EXPORT_SYMBOL vmlinux 0x14b3122b xfrm_policy_delete +EXPORT_SYMBOL vmlinux 0x14d4a9c5 _change_bit +EXPORT_SYMBOL vmlinux 0x14d64819 vc_resize +EXPORT_SYMBOL vmlinux 0x14dddfa1 unregister_framebuffer +EXPORT_SYMBOL vmlinux 0x151d13a6 tso_count_descs +EXPORT_SYMBOL vmlinux 0x1526d43a ping_prot +EXPORT_SYMBOL vmlinux 0x1530f058 sg_copy_from_buffer +EXPORT_SYMBOL vmlinux 0x154c225b dst_alloc +EXPORT_SYMBOL vmlinux 0x154c6338 dm_kcopyd_client_destroy +EXPORT_SYMBOL vmlinux 0x155d36dd generic_read_dir +EXPORT_SYMBOL vmlinux 0x155d83ba __generic_block_fiemap +EXPORT_SYMBOL vmlinux 0x157e32e1 blk_queue_make_request +EXPORT_SYMBOL vmlinux 0x158dd4f7 mipi_dsi_generic_write +EXPORT_SYMBOL vmlinux 0x15bafe29 unregister_md_cluster_operations +EXPORT_SYMBOL vmlinux 0x15cf66aa d_lookup +EXPORT_SYMBOL vmlinux 0x160f3481 d_add_ci +EXPORT_SYMBOL vmlinux 0x162ccc0c lg_local_lock +EXPORT_SYMBOL vmlinux 0x16305289 warn_slowpath_null +EXPORT_SYMBOL vmlinux 0x1639e002 mipi_dsi_dcs_set_display_off +EXPORT_SYMBOL vmlinux 0x164885c3 filp_close +EXPORT_SYMBOL vmlinux 0x1683a50b radix_tree_delete +EXPORT_SYMBOL vmlinux 0x168d5000 tcp_make_synack +EXPORT_SYMBOL vmlinux 0x168f2c9f netlink_kernel_release +EXPORT_SYMBOL vmlinux 0x16a2209f DWC_SPINLOCK +EXPORT_SYMBOL vmlinux 0x16bb3105 lru_cache_add_file +EXPORT_SYMBOL vmlinux 0x16dfb925 pid_task +EXPORT_SYMBOL vmlinux 0x16e4017e vfs_mkdir +EXPORT_SYMBOL vmlinux 0x16f221d6 udp_seq_open +EXPORT_SYMBOL vmlinux 0x16f5d30e consume_skb +EXPORT_SYMBOL vmlinux 0x16fe491b dquot_quotactl_ops +EXPORT_SYMBOL vmlinux 0x172ec730 DWC_WORKQ_PENDING +EXPORT_SYMBOL vmlinux 0x17428a6e __block_write_begin +EXPORT_SYMBOL vmlinux 0x174624ac snd_pcm_hw_constraint_pow2 +EXPORT_SYMBOL vmlinux 0x1752a183 __inet6_lookup_established +EXPORT_SYMBOL vmlinux 0x17534327 mmc_remove_host +EXPORT_SYMBOL vmlinux 0x175f4b2d clocksource_change_rating +EXPORT_SYMBOL vmlinux 0x177759ab skb_get_hash_perturb +EXPORT_SYMBOL vmlinux 0x177b92c6 tcf_em_tree_destroy +EXPORT_SYMBOL vmlinux 0x17945c46 of_find_node_opts_by_path +EXPORT_SYMBOL vmlinux 0x179e2125 kernel_read +EXPORT_SYMBOL vmlinux 0x17a142df __copy_from_user +EXPORT_SYMBOL vmlinux 0x17a27432 DWC_IN_IRQ +EXPORT_SYMBOL vmlinux 0x17a39836 devfreq_monitor_stop +EXPORT_SYMBOL vmlinux 0x17a44a86 snd_pcm_stop +EXPORT_SYMBOL vmlinux 0x17ab96a4 dcb_ieee_setapp +EXPORT_SYMBOL vmlinux 0x17ad5147 simple_dname +EXPORT_SYMBOL vmlinux 0x17b1125d gen_kill_estimator +EXPORT_SYMBOL vmlinux 0x17ef3f37 of_mdiobus_register +EXPORT_SYMBOL vmlinux 0x17fd23a1 skb_prepare_seq_read +EXPORT_SYMBOL vmlinux 0x180d3963 mutex_unlock +EXPORT_SYMBOL vmlinux 0x1813dfe8 page_waitqueue +EXPORT_SYMBOL vmlinux 0x181bb3ca revert_creds +EXPORT_SYMBOL vmlinux 0x181d08ef __sock_create +EXPORT_SYMBOL vmlinux 0x1826f089 __tracepoint_kmem_cache_alloc_node +EXPORT_SYMBOL vmlinux 0x1829d188 wait_woken +EXPORT_SYMBOL vmlinux 0x1833ddc3 register_md_cluster_operations +EXPORT_SYMBOL vmlinux 0x183e1f39 from_kprojid_munged +EXPORT_SYMBOL vmlinux 0x183fa88b mempool_alloc_slab +EXPORT_SYMBOL vmlinux 0x184b5d20 blk_requeue_request +EXPORT_SYMBOL vmlinux 0x184b82fb mmc_vddrange_to_ocrmask +EXPORT_SYMBOL vmlinux 0x18669c34 __skb_checksum_complete_head +EXPORT_SYMBOL vmlinux 0x186fda88 fsnotify_init_mark +EXPORT_SYMBOL vmlinux 0x187c5ca7 single_open +EXPORT_SYMBOL vmlinux 0x1887eb1d sock_no_accept +EXPORT_SYMBOL vmlinux 0x188a3dfb timespec_trunc +EXPORT_SYMBOL vmlinux 0x189868d7 get_random_bytes_arch +EXPORT_SYMBOL vmlinux 0x189f2fff param_ops_charp +EXPORT_SYMBOL vmlinux 0x18a0c058 reservation_object_add_shared_fence +EXPORT_SYMBOL vmlinux 0x18bd76a4 _raw_spin_trylock +EXPORT_SYMBOL vmlinux 0x18c2227f cpu_rmap_update +EXPORT_SYMBOL vmlinux 0x18f03b4a scsi_eh_finish_cmd +EXPORT_SYMBOL vmlinux 0x18f227ff DWC_UDELAY +EXPORT_SYMBOL vmlinux 0x194e82a1 fb_pan_display +EXPORT_SYMBOL vmlinux 0x195dc767 scsi_scan_target +EXPORT_SYMBOL vmlinux 0x19610e1f cpu_all_bits +EXPORT_SYMBOL vmlinux 0x1970841c __ps2_command +EXPORT_SYMBOL vmlinux 0x197e369c nf_log_unregister +EXPORT_SYMBOL vmlinux 0x198788b4 snd_lookup_oss_minor_data +EXPORT_SYMBOL vmlinux 0x19947868 param_get_string +EXPORT_SYMBOL vmlinux 0x199ed0cd net_disable_timestamp +EXPORT_SYMBOL vmlinux 0x19bd383b security_secmark_refcount_dec +EXPORT_SYMBOL vmlinux 0x19be9257 snd_pcm_hw_constraint_ratnums +EXPORT_SYMBOL vmlinux 0x19e14f75 jbd2__journal_start +EXPORT_SYMBOL vmlinux 0x19e1d311 xfrm_register_type +EXPORT_SYMBOL vmlinux 0x19eb414a DWC_THREAD_RUN +EXPORT_SYMBOL vmlinux 0x19f5809b dm_ratelimit_state +EXPORT_SYMBOL vmlinux 0x1a031b93 unlock_rename +EXPORT_SYMBOL vmlinux 0x1a1884ba DWC_ATOI +EXPORT_SYMBOL vmlinux 0x1a4525b6 vm_mmap +EXPORT_SYMBOL vmlinux 0x1a555549 unregister_shrinker +EXPORT_SYMBOL vmlinux 0x1a5b69ae mmc_retune_timer_stop +EXPORT_SYMBOL vmlinux 0x1a65f4ad __arm_ioremap_pfn +EXPORT_SYMBOL vmlinux 0x1a989373 xfrm_state_update +EXPORT_SYMBOL vmlinux 0x1a9fc4e6 i2c_smbus_read_block_data +EXPORT_SYMBOL vmlinux 0x1aabe1b2 touch_buffer +EXPORT_SYMBOL vmlinux 0x1ad1f2e7 _memcpy_fromio +EXPORT_SYMBOL vmlinux 0x1ae06e12 __tracepoint_fence_annotate_wait_on +EXPORT_SYMBOL vmlinux 0x1af7dc92 inet_reqsk_alloc +EXPORT_SYMBOL vmlinux 0x1b00620a swiotlb_map_sg +EXPORT_SYMBOL vmlinux 0x1b015d25 bitmap_parselist +EXPORT_SYMBOL vmlinux 0x1b060c9a snd_timer_open +EXPORT_SYMBOL vmlinux 0x1b06a209 blk_set_default_limits +EXPORT_SYMBOL vmlinux 0x1b0ac272 __tracepoint_kmalloc_node +EXPORT_SYMBOL vmlinux 0x1b1a59f0 skb_insert +EXPORT_SYMBOL vmlinux 0x1b1e8e13 dev_notice +EXPORT_SYMBOL vmlinux 0x1b1f9882 __netlink_ns_capable +EXPORT_SYMBOL vmlinux 0x1b29a285 DWC_VSNPRINTF +EXPORT_SYMBOL vmlinux 0x1b36c933 scsi_set_medium_removal +EXPORT_SYMBOL vmlinux 0x1b50a22e block_commit_write +EXPORT_SYMBOL vmlinux 0x1b6314fd in_aton +EXPORT_SYMBOL vmlinux 0x1b696d55 forget_all_cached_acls +EXPORT_SYMBOL vmlinux 0x1b6d5aea devm_backlight_device_unregister +EXPORT_SYMBOL vmlinux 0x1b79ff8b xfrm_unregister_type +EXPORT_SYMBOL vmlinux 0x1b7a7af8 inet_csk_prepare_forced_close +EXPORT_SYMBOL vmlinux 0x1b82fefa md_unplug +EXPORT_SYMBOL vmlinux 0x1b995e3a scsi_verify_blk_ioctl +EXPORT_SYMBOL vmlinux 0x1ba65d7e jbd2_journal_file_inode +EXPORT_SYMBOL vmlinux 0x1ba928ad scsi_scan_host +EXPORT_SYMBOL vmlinux 0x1bb31047 add_timer +EXPORT_SYMBOL vmlinux 0x1bcf61b8 inode_claim_rsv_space +EXPORT_SYMBOL vmlinux 0x1bf36a40 d_instantiate_no_diralias +EXPORT_SYMBOL vmlinux 0x1c035a67 of_device_is_compatible +EXPORT_SYMBOL vmlinux 0x1c0aa70c keyring_clear +EXPORT_SYMBOL vmlinux 0x1c16d0f0 i2c_verify_adapter +EXPORT_SYMBOL vmlinux 0x1c1abcbf input_unregister_handle +EXPORT_SYMBOL vmlinux 0x1c1f1dab alloc_skb_with_frags +EXPORT_SYMBOL vmlinux 0x1c291d22 blk_queue_end_tag +EXPORT_SYMBOL vmlinux 0x1c2d1fb4 jbd2_journal_check_available_features +EXPORT_SYMBOL vmlinux 0x1c32e14b snd_timer_resolution +EXPORT_SYMBOL vmlinux 0x1c3a97df scsi_print_sense +EXPORT_SYMBOL vmlinux 0x1c731232 dev_uc_sync +EXPORT_SYMBOL vmlinux 0x1c79bea0 phy_read_mmd_indirect +EXPORT_SYMBOL vmlinux 0x1c8cfbb8 netpoll_parse_options +EXPORT_SYMBOL vmlinux 0x1cbc8525 do_splice_to +EXPORT_SYMBOL vmlinux 0x1cd13782 param_get_bool +EXPORT_SYMBOL vmlinux 0x1cd8b501 vchiq_add_service +EXPORT_SYMBOL vmlinux 0x1cd9ea55 dev_load +EXPORT_SYMBOL vmlinux 0x1ce744d6 netdev_lower_get_first_private_rcu +EXPORT_SYMBOL vmlinux 0x1cece058 mmc_interrupt_hpi +EXPORT_SYMBOL vmlinux 0x1cf29d72 read_code +EXPORT_SYMBOL vmlinux 0x1cfb04fa finish_wait +EXPORT_SYMBOL vmlinux 0x1d027e4b snd_pcm_format_signed +EXPORT_SYMBOL vmlinux 0x1d0a77da DWC_BE16_TO_CPU +EXPORT_SYMBOL vmlinux 0x1d1772d0 register_sound_dsp +EXPORT_SYMBOL vmlinux 0x1d3b4d65 simple_rmdir +EXPORT_SYMBOL vmlinux 0x1d555f20 __nla_put_nohdr +EXPORT_SYMBOL vmlinux 0x1d98276d nf_ct_attach +EXPORT_SYMBOL vmlinux 0x1d9e4725 gnet_stats_finish_copy +EXPORT_SYMBOL vmlinux 0x1dac9eee devfreq_resume_device +EXPORT_SYMBOL vmlinux 0x1dadc65a DWC_WORKQ_WAIT_WORK_DONE +EXPORT_SYMBOL vmlinux 0x1db7dc40 pgprot_kernel +EXPORT_SYMBOL vmlinux 0x1dc334b4 skb_checksum_trimmed +EXPORT_SYMBOL vmlinux 0x1dc36131 fb_destroy_modedb +EXPORT_SYMBOL vmlinux 0x1dc49edb blk_queue_segment_boundary +EXPORT_SYMBOL vmlinux 0x1dc5b029 i2c_smbus_read_byte +EXPORT_SYMBOL vmlinux 0x1dd09854 of_graph_get_remote_port +EXPORT_SYMBOL vmlinux 0x1dd571e6 fb_copy_cmap +EXPORT_SYMBOL vmlinux 0x1ddac2ee reservation_object_add_excl_fence +EXPORT_SYMBOL vmlinux 0x1dec234b mutex_lock_killable +EXPORT_SYMBOL vmlinux 0x1df6be11 netdev_lower_get_next_private +EXPORT_SYMBOL vmlinux 0x1df6daf9 __register_nls +EXPORT_SYMBOL vmlinux 0x1e047854 warn_slowpath_fmt +EXPORT_SYMBOL vmlinux 0x1e1147c5 snd_ctl_replace +EXPORT_SYMBOL vmlinux 0x1e26be3b get_anon_bdev +EXPORT_SYMBOL vmlinux 0x1e28113c nobh_truncate_page +EXPORT_SYMBOL vmlinux 0x1e5dae83 __dquot_alloc_space +EXPORT_SYMBOL vmlinux 0x1e6d26a8 strstr +EXPORT_SYMBOL vmlinux 0x1e8d9574 tcp_read_sock +EXPORT_SYMBOL vmlinux 0x1e9edfb7 seq_hlist_start_head_rcu +EXPORT_SYMBOL vmlinux 0x1ea58dfd dev_activate +EXPORT_SYMBOL vmlinux 0x1ed1672a netdev_rx_csum_fault +EXPORT_SYMBOL vmlinux 0x1ee27153 snd_register_device +EXPORT_SYMBOL vmlinux 0x1eeb848e __percpu_counter_sum +EXPORT_SYMBOL vmlinux 0x1f05cda0 xfrm_policy_walk_done +EXPORT_SYMBOL vmlinux 0x1f07b89c inet_csk_accept +EXPORT_SYMBOL vmlinux 0x1f0ba9e3 devfreq_register_opp_notifier +EXPORT_SYMBOL vmlinux 0x1f157a1e iget_failed +EXPORT_SYMBOL vmlinux 0x1f18fba1 of_get_next_child +EXPORT_SYMBOL vmlinux 0x1f1b6488 dquot_operations +EXPORT_SYMBOL vmlinux 0x1f1e8998 bio_add_page +EXPORT_SYMBOL vmlinux 0x1f49967b iw_handler_set_spy +EXPORT_SYMBOL vmlinux 0x1f558be9 tcp_initialize_rcv_mss +EXPORT_SYMBOL vmlinux 0x1f630799 put_filp +EXPORT_SYMBOL vmlinux 0x1f65d903 security_inode_readlink +EXPORT_SYMBOL vmlinux 0x1f7e807f kstrtoint_from_user +EXPORT_SYMBOL vmlinux 0x1f7f89c0 generic_write_checks +EXPORT_SYMBOL vmlinux 0x1f8af442 dm_register_target +EXPORT_SYMBOL vmlinux 0x1fab5905 wait_for_completion +EXPORT_SYMBOL vmlinux 0x1fb1f7b9 tty_hangup +EXPORT_SYMBOL vmlinux 0x1fbd16da ip_tos2prio +EXPORT_SYMBOL vmlinux 0x1fcfd18c security_inode_listsecurity +EXPORT_SYMBOL vmlinux 0x1fd07fff kdb_grepping_flag +EXPORT_SYMBOL vmlinux 0x1fe912f1 netdev_alloc_frag +EXPORT_SYMBOL vmlinux 0x1fe9f800 unregister_cpu_notifier +EXPORT_SYMBOL vmlinux 0x20000329 simple_strtoul +EXPORT_SYMBOL vmlinux 0x200b2041 in6addr_any +EXPORT_SYMBOL vmlinux 0x201f7f2a __skb_get_hash_flowi6 +EXPORT_SYMBOL vmlinux 0x20205f64 trace_print_array_seq +EXPORT_SYMBOL vmlinux 0x203acc9d dwc_add_observer +EXPORT_SYMBOL vmlinux 0x20421305 on_each_cpu_mask +EXPORT_SYMBOL vmlinux 0x20495411 unregister_mtd_chip_driver +EXPORT_SYMBOL vmlinux 0x204bae15 md_set_array_sectors +EXPORT_SYMBOL vmlinux 0x204c19f5 tcp_alloc_md5sig_pool +EXPORT_SYMBOL vmlinux 0x2072ee9b request_threaded_irq +EXPORT_SYMBOL vmlinux 0x2077934f tcp_md5_do_del +EXPORT_SYMBOL vmlinux 0x20838149 __blk_end_request_cur +EXPORT_SYMBOL vmlinux 0x20a789ac irq_set_chip_data +EXPORT_SYMBOL vmlinux 0x20bee3f6 dma_common_mmap +EXPORT_SYMBOL vmlinux 0x20c55ae0 sscanf +EXPORT_SYMBOL vmlinux 0x20cd7da0 generic_setlease +EXPORT_SYMBOL vmlinux 0x21110dbf mmioset +EXPORT_SYMBOL vmlinux 0x211331fa __divsi3 +EXPORT_SYMBOL vmlinux 0x21296d82 inet_sendmsg +EXPORT_SYMBOL vmlinux 0x212cf589 bio_get_nr_vecs +EXPORT_SYMBOL vmlinux 0x214f653b tso_build_data +EXPORT_SYMBOL vmlinux 0x21533e0d gnet_stats_copy_app +EXPORT_SYMBOL vmlinux 0x21676e7d kernel_param_lock +EXPORT_SYMBOL vmlinux 0x216c4a74 dev_get_phys_port_id +EXPORT_SYMBOL vmlinux 0x216d759a mmiocpy +EXPORT_SYMBOL vmlinux 0x21724910 security_path_chown +EXPORT_SYMBOL vmlinux 0x217bc877 inet6_bind +EXPORT_SYMBOL vmlinux 0x218e0e9f snd_pcm_hw_constraint_msbits +EXPORT_SYMBOL vmlinux 0x21c0ce93 inet_frags_init +EXPORT_SYMBOL vmlinux 0x21c3a0f8 bio_alloc_pages +EXPORT_SYMBOL vmlinux 0x21df74d9 bitmap_set +EXPORT_SYMBOL vmlinux 0x21f7eb8f claim_fiq +EXPORT_SYMBOL vmlinux 0x21fb6852 i2c_use_client +EXPORT_SYMBOL vmlinux 0x222d65a7 dev_addr_flush +EXPORT_SYMBOL vmlinux 0x222e7ce2 sysfs_streq +EXPORT_SYMBOL vmlinux 0x222fa684 lg_global_lock +EXPORT_SYMBOL vmlinux 0x2232a8a5 mempool_free +EXPORT_SYMBOL vmlinux 0x224368ed scm_fp_dup +EXPORT_SYMBOL vmlinux 0x2256fafa div64_u64_rem +EXPORT_SYMBOL vmlinux 0x225df350 udp_proc_unregister +EXPORT_SYMBOL vmlinux 0x22661b9c iterate_fd +EXPORT_SYMBOL vmlinux 0x2273f5c5 __serio_register_port +EXPORT_SYMBOL vmlinux 0x2276db98 kstrtoint +EXPORT_SYMBOL vmlinux 0x2278f87c __dquot_transfer +EXPORT_SYMBOL vmlinux 0x2285e3f7 ip_options_rcv_srr +EXPORT_SYMBOL vmlinux 0x2289ed1c of_find_matching_node_and_match +EXPORT_SYMBOL vmlinux 0x229011ab snd_pcm_hw_constraint_minmax +EXPORT_SYMBOL vmlinux 0x22ac6571 ip6_route_me_harder +EXPORT_SYMBOL vmlinux 0x22b325d5 kd_mksound +EXPORT_SYMBOL vmlinux 0x22b52ef9 key_type_keyring +EXPORT_SYMBOL vmlinux 0x22dfdd06 radix_tree_tag_set +EXPORT_SYMBOL vmlinux 0x22fc4f3a trace_print_flags_seq +EXPORT_SYMBOL vmlinux 0x231d4001 fb_edid_add_monspecs +EXPORT_SYMBOL vmlinux 0x2394bc74 vchi_service_release +EXPORT_SYMBOL vmlinux 0x23a32ecb blk_pre_runtime_suspend +EXPORT_SYMBOL vmlinux 0x23a574fd security_secmark_relabel_packet +EXPORT_SYMBOL vmlinux 0x23aa49d3 _raw_read_trylock +EXPORT_SYMBOL vmlinux 0x23b9d6e2 mangle_path +EXPORT_SYMBOL vmlinux 0x23c12d72 blk_queue_unprep_rq +EXPORT_SYMBOL vmlinux 0x23c18688 free_page_put_link +EXPORT_SYMBOL vmlinux 0x23c7f236 ip_cmsg_recv_offset +EXPORT_SYMBOL vmlinux 0x23c8f257 slhc_uncompress +EXPORT_SYMBOL vmlinux 0x23dab28a sk_wait_data +EXPORT_SYMBOL vmlinux 0x23ddce2f netdev_master_upper_dev_link_private +EXPORT_SYMBOL vmlinux 0x23fd3028 vmalloc_node +EXPORT_SYMBOL vmlinux 0x2400610b xfrm_state_lookup_byaddr +EXPORT_SYMBOL vmlinux 0x240d4199 inet_ioctl +EXPORT_SYMBOL vmlinux 0x24212d86 __frontswap_invalidate_page +EXPORT_SYMBOL vmlinux 0x24238f10 inet_stream_ops +EXPORT_SYMBOL vmlinux 0x24335ddb uart_get_divisor +EXPORT_SYMBOL vmlinux 0x24428be5 strncpy_from_user +EXPORT_SYMBOL vmlinux 0x24430f35 adjust_managed_page_count +EXPORT_SYMBOL vmlinux 0x24567642 locks_copy_lock +EXPORT_SYMBOL vmlinux 0x2459bbcc console_set_on_cmdline +EXPORT_SYMBOL vmlinux 0x245e7987 datagram_poll +EXPORT_SYMBOL vmlinux 0x246ff046 add_random_ready_callback +EXPORT_SYMBOL vmlinux 0x2482e688 vsprintf +EXPORT_SYMBOL vmlinux 0x24855629 devm_free_irq +EXPORT_SYMBOL vmlinux 0x248e98ed snd_ctl_remove +EXPORT_SYMBOL vmlinux 0x24a0c2ec backlight_force_update +EXPORT_SYMBOL vmlinux 0x24a94b26 snd_info_get_line +EXPORT_SYMBOL vmlinux 0x24b45d5d inet6_del_offload +EXPORT_SYMBOL vmlinux 0x24b4b37a tcp_try_fastopen +EXPORT_SYMBOL vmlinux 0x24fdac79 wake_bit_function +EXPORT_SYMBOL vmlinux 0x250113b4 memory_read_from_buffer +EXPORT_SYMBOL vmlinux 0x2521a07a dquot_quota_on_mount +EXPORT_SYMBOL vmlinux 0x25277497 rfkill_register +EXPORT_SYMBOL vmlinux 0x2544f0da nf_register_hooks +EXPORT_SYMBOL vmlinux 0x254be747 inet6_getname +EXPORT_SYMBOL vmlinux 0x25540332 inode_sb_list_lock +EXPORT_SYMBOL vmlinux 0x255d002f dquot_claim_space_nodirty +EXPORT_SYMBOL vmlinux 0x256a6e44 sock_no_mmap +EXPORT_SYMBOL vmlinux 0x256b99a8 snd_pcm_mmap_data +EXPORT_SYMBOL vmlinux 0x2570a138 reservation_seqcount_string +EXPORT_SYMBOL vmlinux 0x2572353a DWC_READ_REG32 +EXPORT_SYMBOL vmlinux 0x25766011 dm_kcopyd_zero +EXPORT_SYMBOL vmlinux 0x25820c64 fs_overflowuid +EXPORT_SYMBOL vmlinux 0x25ae1bfe mdiobus_register +EXPORT_SYMBOL vmlinux 0x25aef420 of_platform_bus_probe +EXPORT_SYMBOL vmlinux 0x25e5e1df tcp_v4_md5_hash_skb +EXPORT_SYMBOL vmlinux 0x25e9d4bd resource_list_free +EXPORT_SYMBOL vmlinux 0x260b7e74 skb_copy_bits +EXPORT_SYMBOL vmlinux 0x26184db4 phy_attach_direct +EXPORT_SYMBOL vmlinux 0x263beb75 ecryptfs_get_versions +EXPORT_SYMBOL vmlinux 0x26505d61 bio_reset +EXPORT_SYMBOL vmlinux 0x2650d835 sysctl_ip_early_demux +EXPORT_SYMBOL vmlinux 0x2663ea29 flock_lock_inode_wait +EXPORT_SYMBOL vmlinux 0x26776845 __blkdev_reread_part +EXPORT_SYMBOL vmlinux 0x268d875d scsi_remove_device +EXPORT_SYMBOL vmlinux 0x26b5412b truncate_inode_pages +EXPORT_SYMBOL vmlinux 0x26bb950b __kfifo_from_user_r +EXPORT_SYMBOL vmlinux 0x26c2128c lockref_mark_dead +EXPORT_SYMBOL vmlinux 0x26c840ef tcp_prequeue +EXPORT_SYMBOL vmlinux 0x26e76fb8 sysctl_udp_wmem_min +EXPORT_SYMBOL vmlinux 0x26fd4fc6 tty_vhangup +EXPORT_SYMBOL vmlinux 0x27284408 sock_queue_err_skb +EXPORT_SYMBOL vmlinux 0x27309343 of_get_min_tck +EXPORT_SYMBOL vmlinux 0x273d0182 generic_block_bmap +EXPORT_SYMBOL vmlinux 0x27574fba __generic_file_fsync +EXPORT_SYMBOL vmlinux 0x275ef902 __init_waitqueue_head +EXPORT_SYMBOL vmlinux 0x27864d57 memparse +EXPORT_SYMBOL vmlinux 0x27866435 security_xfrm_state_alloc +EXPORT_SYMBOL vmlinux 0x278de3ce tc6393xb_lcd_set_power +EXPORT_SYMBOL vmlinux 0x2795d1e8 dev_loopback_xmit +EXPORT_SYMBOL vmlinux 0x279bae0f flow_get_u32_dst +EXPORT_SYMBOL vmlinux 0x279eb189 release_pages +EXPORT_SYMBOL vmlinux 0x27a15725 jbd2_journal_init_inode +EXPORT_SYMBOL vmlinux 0x27ac5f70 block_truncate_page +EXPORT_SYMBOL vmlinux 0x27bbf221 disable_irq_nosync +EXPORT_SYMBOL vmlinux 0x27c22fc5 security_path_truncate +EXPORT_SYMBOL vmlinux 0x27c6d272 eth_header_cache_update +EXPORT_SYMBOL vmlinux 0x27d7907e ip6_frag_match +EXPORT_SYMBOL vmlinux 0x27e1a049 printk +EXPORT_SYMBOL vmlinux 0x27e350df bdput +EXPORT_SYMBOL vmlinux 0x28118cb6 __get_user_1 +EXPORT_SYMBOL vmlinux 0x281823c5 __kfifo_out_peek +EXPORT_SYMBOL vmlinux 0x281b0192 kill_anon_super +EXPORT_SYMBOL vmlinux 0x2823e65b jbd2_journal_errno +EXPORT_SYMBOL vmlinux 0x28269254 netdev_upper_dev_link +EXPORT_SYMBOL vmlinux 0x2872182a key_instantiate_and_link +EXPORT_SYMBOL vmlinux 0x28726fb9 dmam_alloc_coherent +EXPORT_SYMBOL vmlinux 0x287d53bf inet_register_protosw +EXPORT_SYMBOL vmlinux 0x28a2ed02 scsi_build_sense_buffer +EXPORT_SYMBOL vmlinux 0x28d5e43a sk_receive_skb +EXPORT_SYMBOL vmlinux 0x28d6861d __vmalloc +EXPORT_SYMBOL vmlinux 0x28e0d4e6 input_register_device +EXPORT_SYMBOL vmlinux 0x28ebea66 neigh_table_init +EXPORT_SYMBOL vmlinux 0x28ff02fb kthread_create_on_node +EXPORT_SYMBOL vmlinux 0x2900755a mipi_dsi_driver_register_full +EXPORT_SYMBOL vmlinux 0x29537c40 d_genocide +EXPORT_SYMBOL vmlinux 0x29537c9e alloc_chrdev_region +EXPORT_SYMBOL vmlinux 0x296e3135 blk_make_request +EXPORT_SYMBOL vmlinux 0x29793aa0 devfreq_remove_device +EXPORT_SYMBOL vmlinux 0x2981dfcd sock_no_ioctl +EXPORT_SYMBOL vmlinux 0x29b7fd14 follow_down +EXPORT_SYMBOL vmlinux 0x29d60bfe max8925_reg_write +EXPORT_SYMBOL vmlinux 0x29daba6c key_validate +EXPORT_SYMBOL vmlinux 0x29e1b020 ida_simple_remove +EXPORT_SYMBOL vmlinux 0x29fdb437 grab_cache_page_write_begin +EXPORT_SYMBOL vmlinux 0x29fdda53 kstrtos8_from_user +EXPORT_SYMBOL vmlinux 0x2a1d2cce tty_wait_until_sent +EXPORT_SYMBOL vmlinux 0x2a37ea38 remap_pfn_range +EXPORT_SYMBOL vmlinux 0x2a3aa678 _test_and_clear_bit +EXPORT_SYMBOL vmlinux 0x2a8e4080 unregister_binfmt +EXPORT_SYMBOL vmlinux 0x2aa0e4fc strncasecmp +EXPORT_SYMBOL vmlinux 0x2aa28cd9 bio_alloc_bioset +EXPORT_SYMBOL vmlinux 0x2aac83cd redirty_page_for_writepage +EXPORT_SYMBOL vmlinux 0x2aad2632 __skb_get_hash +EXPORT_SYMBOL vmlinux 0x2aad35de mb_cache_destroy +EXPORT_SYMBOL vmlinux 0x2abb7731 snd_ctl_make_virtual_master +EXPORT_SYMBOL vmlinux 0x2ac6193b __kfifo_dma_out_prepare_r +EXPORT_SYMBOL vmlinux 0x2acce119 dma_declare_coherent_memory +EXPORT_SYMBOL vmlinux 0x2acf0feb vfs_fstat +EXPORT_SYMBOL vmlinux 0x2ada6c6a snd_timer_close +EXPORT_SYMBOL vmlinux 0x2aedc84d sync_blockdev +EXPORT_SYMBOL vmlinux 0x2b0ba2b0 scsi_sense_desc_find +EXPORT_SYMBOL vmlinux 0x2b0c4120 sock_no_sendpage +EXPORT_SYMBOL vmlinux 0x2b12925d cpumask_next_and +EXPORT_SYMBOL vmlinux 0x2b12cb8b __xfrm_state_destroy +EXPORT_SYMBOL vmlinux 0x2b2ce78b kstrtos8 +EXPORT_SYMBOL vmlinux 0x2b3fcf1e devm_devfreq_remove_device +EXPORT_SYMBOL vmlinux 0x2b4e956e mempool_create +EXPORT_SYMBOL vmlinux 0x2b510ac7 blk_execute_rq +EXPORT_SYMBOL vmlinux 0x2b995339 skb_copy_expand +EXPORT_SYMBOL vmlinux 0x2b9b0f70 DWC_LE32_TO_CPU +EXPORT_SYMBOL vmlinux 0x2b9da7a4 genl_lock +EXPORT_SYMBOL vmlinux 0x2ba707a8 sysctl_tcp_low_latency +EXPORT_SYMBOL vmlinux 0x2bb26663 rwsem_down_read_failed +EXPORT_SYMBOL vmlinux 0x2bbe7bdb xfrm_find_acq_byseq +EXPORT_SYMBOL vmlinux 0x2bc2fe7a proc_mkdir +EXPORT_SYMBOL vmlinux 0x2bc9ac06 snd_pcm_release_substream +EXPORT_SYMBOL vmlinux 0x2bd0c191 skb_checksum +EXPORT_SYMBOL vmlinux 0x2bd9fa94 dev_set_mtu +EXPORT_SYMBOL vmlinux 0x2bdd6e28 node_states +EXPORT_SYMBOL vmlinux 0x2be0f12d dql_completed +EXPORT_SYMBOL vmlinux 0x2bf49114 md_reload_sb +EXPORT_SYMBOL vmlinux 0x2bfff2aa iov_iter_fault_in_readable +EXPORT_SYMBOL vmlinux 0x2c14323a kstrtol_from_user +EXPORT_SYMBOL vmlinux 0x2c256e1f input_scancode_to_scalar +EXPORT_SYMBOL vmlinux 0x2c3801d8 netpoll_cleanup +EXPORT_SYMBOL vmlinux 0x2c81ec75 __irq_regs +EXPORT_SYMBOL vmlinux 0x2c8bfeed fb_show_logo +EXPORT_SYMBOL vmlinux 0x2c900d91 cpufreq_put_global_kobject +EXPORT_SYMBOL vmlinux 0x2c96ba61 mmc_gpiod_request_cd +EXPORT_SYMBOL vmlinux 0x2c9732f8 gen_pool_destroy +EXPORT_SYMBOL vmlinux 0x2c988955 prepare_to_wait_exclusive +EXPORT_SYMBOL vmlinux 0x2ca8366a audit_log +EXPORT_SYMBOL vmlinux 0x2caaf061 file_update_time +EXPORT_SYMBOL vmlinux 0x2cb2e35e jbd2_journal_force_commit +EXPORT_SYMBOL vmlinux 0x2cc40344 ip6_route_output +EXPORT_SYMBOL vmlinux 0x2d140a58 genl_unlock +EXPORT_SYMBOL vmlinux 0x2d30596c from_kqid_munged +EXPORT_SYMBOL vmlinux 0x2d31c65c xfrm6_protocol_deregister +EXPORT_SYMBOL vmlinux 0x2d3385d3 system_wq +EXPORT_SYMBOL vmlinux 0x2d3c5846 mmc_set_data_timeout +EXPORT_SYMBOL vmlinux 0x2d3e04d4 kernel_sendmsg +EXPORT_SYMBOL vmlinux 0x2d4ca607 scsi_unblock_requests +EXPORT_SYMBOL vmlinux 0x2d6507b5 _find_next_zero_bit_le +EXPORT_SYMBOL vmlinux 0x2d798907 jbd2_journal_load +EXPORT_SYMBOL vmlinux 0x2d7ff5ed snd_pcm_hw_constraint_ratdens +EXPORT_SYMBOL vmlinux 0x2dbe5509 sock_alloc_file +EXPORT_SYMBOL vmlinux 0x2dcfd37b ww_mutex_unlock +EXPORT_SYMBOL vmlinux 0x2dd9a36b flex_array_shrink +EXPORT_SYMBOL vmlinux 0x2deda4a1 security_sk_classify_flow +EXPORT_SYMBOL vmlinux 0x2dff6ce7 generic_permission +EXPORT_SYMBOL vmlinux 0x2e022649 import_iovec +EXPORT_SYMBOL vmlinux 0x2e1ad0e1 param_get_ushort +EXPORT_SYMBOL vmlinux 0x2e1ca751 clk_put +EXPORT_SYMBOL vmlinux 0x2e26bc36 key_revoke +EXPORT_SYMBOL vmlinux 0x2e2a9554 km_state_expired +EXPORT_SYMBOL vmlinux 0x2e2ce9e0 sysctl_tcp_syncookies +EXPORT_SYMBOL vmlinux 0x2e562871 iterate_supers_type +EXPORT_SYMBOL vmlinux 0x2e5810c6 __aeabi_unwind_cpp_pr1 +EXPORT_SYMBOL vmlinux 0x2e5d9e4f dst_discard_sk +EXPORT_SYMBOL vmlinux 0x2e7d01ed genlmsg_multicast_allns +EXPORT_SYMBOL vmlinux 0x2e89b013 stop_tty +EXPORT_SYMBOL vmlinux 0x2e94f30f input_mt_sync_frame +EXPORT_SYMBOL vmlinux 0x2ea56c5e scsi_init_io +EXPORT_SYMBOL vmlinux 0x2ead48b4 simple_getattr +EXPORT_SYMBOL vmlinux 0x2ebf4ad6 create_empty_buffers +EXPORT_SYMBOL vmlinux 0x2ec48d63 bio_integrity_endio +EXPORT_SYMBOL vmlinux 0x2ec524ad __kfifo_in_r +EXPORT_SYMBOL vmlinux 0x2ecd441b fence_free +EXPORT_SYMBOL vmlinux 0x2ecdc54b filemap_fdatawait_range +EXPORT_SYMBOL vmlinux 0x2edc3649 nand_correct_data +EXPORT_SYMBOL vmlinux 0x2edc7e10 sget +EXPORT_SYMBOL vmlinux 0x2ef63ad6 scsi_dev_info_list_del_keyed +EXPORT_SYMBOL vmlinux 0x2f03fc4b security_secmark_refcount_inc +EXPORT_SYMBOL vmlinux 0x2f096ff6 __sk_mem_schedule +EXPORT_SYMBOL vmlinux 0x2f1de5eb of_get_ddr_timings +EXPORT_SYMBOL vmlinux 0x2f463da1 __alloc_page_frag +EXPORT_SYMBOL vmlinux 0x2f4aa290 seq_put_decimal_ll +EXPORT_SYMBOL vmlinux 0x2f4b411d read_cache_page +EXPORT_SYMBOL vmlinux 0x2f4e5ac5 __mod_zone_page_state +EXPORT_SYMBOL vmlinux 0x2f5f2a57 rps_sock_flow_table +EXPORT_SYMBOL vmlinux 0x2f841380 blk_put_queue +EXPORT_SYMBOL vmlinux 0x2f902346 swiotlb_sync_single_for_cpu +EXPORT_SYMBOL vmlinux 0x2fb6de5d add_device_randomness +EXPORT_SYMBOL vmlinux 0x2fcad878 dma_async_device_register +EXPORT_SYMBOL vmlinux 0x2fcbbe0d mmc_can_reset +EXPORT_SYMBOL vmlinux 0x2fd512f2 padata_register_cpumask_notifier +EXPORT_SYMBOL vmlinux 0x2fde29f2 tcp_setsockopt +EXPORT_SYMBOL vmlinux 0x2fe252cc unregister_inet6addr_notifier +EXPORT_SYMBOL vmlinux 0x303041c6 udp_flow_hashrnd +EXPORT_SYMBOL vmlinux 0x305cc58e elevator_exit +EXPORT_SYMBOL vmlinux 0x307c2fd0 generic_check_addressable +EXPORT_SYMBOL vmlinux 0x307d9556 dquot_set_dqblk +EXPORT_SYMBOL vmlinux 0x3096be16 names_cachep +EXPORT_SYMBOL vmlinux 0x30a80826 __kfifo_from_user +EXPORT_SYMBOL vmlinux 0x30ad0e7a jbd2_complete_transaction +EXPORT_SYMBOL vmlinux 0x30caf804 dma_async_device_unregister +EXPORT_SYMBOL vmlinux 0x30e74134 tty_termios_copy_hw +EXPORT_SYMBOL vmlinux 0x3102d70b frontswap_curr_pages +EXPORT_SYMBOL vmlinux 0x310917fe sort +EXPORT_SYMBOL vmlinux 0x3132ee65 __nand_calculate_ecc +EXPORT_SYMBOL vmlinux 0x31380354 getrawmonotonic64 +EXPORT_SYMBOL vmlinux 0x313852ec tcp_req_err +EXPORT_SYMBOL vmlinux 0x313df7c9 neigh_direct_output +EXPORT_SYMBOL vmlinux 0x3147857d default_red +EXPORT_SYMBOL vmlinux 0x31645188 mapping_tagged +EXPORT_SYMBOL vmlinux 0x31666cff mmc_release_host +EXPORT_SYMBOL vmlinux 0x31683780 kset_unregister +EXPORT_SYMBOL vmlinux 0x3174bd79 bitmap_clear +EXPORT_SYMBOL vmlinux 0x317f50bb blk_fetch_request +EXPORT_SYMBOL vmlinux 0x3188674d input_register_handle +EXPORT_SYMBOL vmlinux 0x3191f109 __krealloc +EXPORT_SYMBOL vmlinux 0x319ab426 input_mt_assign_slots +EXPORT_SYMBOL vmlinux 0x31a076ec xfrm_state_register_afinfo +EXPORT_SYMBOL vmlinux 0x31b31f5c csum_partial_copy_nocheck +EXPORT_SYMBOL vmlinux 0x31c3a1c8 inet_dev_addr_type +EXPORT_SYMBOL vmlinux 0x31c949ce module_layout +EXPORT_SYMBOL vmlinux 0x31d5dc6e __set_page_dirty_buffers +EXPORT_SYMBOL vmlinux 0x31db3198 out_of_line_wait_on_bit +EXPORT_SYMBOL vmlinux 0x31f188d9 dev_driver_string +EXPORT_SYMBOL vmlinux 0x3201aaf9 param_ops_bool +EXPORT_SYMBOL vmlinux 0x32089cea kernel_sock_shutdown +EXPORT_SYMBOL vmlinux 0x323a84ae km_is_alive +EXPORT_SYMBOL vmlinux 0x32408ee9 fbcon_set_tileops +EXPORT_SYMBOL vmlinux 0x3286d0a2 bdget_disk +EXPORT_SYMBOL vmlinux 0x328a05f1 strncpy +EXPORT_SYMBOL vmlinux 0x32907b91 idr_remove +EXPORT_SYMBOL vmlinux 0x32a592f7 generic_pipe_buf_steal +EXPORT_SYMBOL vmlinux 0x32aeeb02 netdev_boot_setup_check +EXPORT_SYMBOL vmlinux 0x32bac972 remap_vmalloc_range +EXPORT_SYMBOL vmlinux 0x32c8d4e9 blk_queue_softirq_done +EXPORT_SYMBOL vmlinux 0x32e5696b blk_integrity_merge_rq +EXPORT_SYMBOL vmlinux 0x3316845e idr_get_next +EXPORT_SYMBOL vmlinux 0x3317ac58 vchiq_initialise +EXPORT_SYMBOL vmlinux 0x3329b57b kobject_add +EXPORT_SYMBOL vmlinux 0x3330a47d gen_pool_free +EXPORT_SYMBOL vmlinux 0x3331e7f8 bio_integrity_alloc +EXPORT_SYMBOL vmlinux 0x333db1e6 mmc_unregister_driver +EXPORT_SYMBOL vmlinux 0x333ee94e cpu_tlb +EXPORT_SYMBOL vmlinux 0x33880060 __skb_flow_dissect +EXPORT_SYMBOL vmlinux 0x33b1168c dquot_get_dqblk +EXPORT_SYMBOL vmlinux 0x33c7435c prandom_u32_state +EXPORT_SYMBOL vmlinux 0x33dbfd93 tcp_memory_allocated +EXPORT_SYMBOL vmlinux 0x33ddee8e ppp_input +EXPORT_SYMBOL vmlinux 0x33e4b8f9 gen_pool_for_each_chunk +EXPORT_SYMBOL vmlinux 0x33f0768c cpufreq_quick_get_max +EXPORT_SYMBOL vmlinux 0x3409fbb9 iterate_mounts +EXPORT_SYMBOL vmlinux 0x34184afe current_kernel_time +EXPORT_SYMBOL vmlinux 0x341dbfa3 __per_cpu_offset +EXPORT_SYMBOL vmlinux 0x34240d20 inetpeer_invalidate_tree +EXPORT_SYMBOL vmlinux 0x344b7739 prepare_to_wait_event +EXPORT_SYMBOL vmlinux 0x3453ad9f save_mount_options +EXPORT_SYMBOL vmlinux 0x3465caa3 cpu_maps_update_begin +EXPORT_SYMBOL vmlinux 0x346d85af page_cache_prev_hole +EXPORT_SYMBOL vmlinux 0x347013de nla_validate +EXPORT_SYMBOL vmlinux 0x34757d9e input_handler_for_each_handle +EXPORT_SYMBOL vmlinux 0x3476b50e snd_ctl_free_one +EXPORT_SYMBOL vmlinux 0x348ee332 jbd2_journal_restart +EXPORT_SYMBOL vmlinux 0x3499dab5 tty_port_close +EXPORT_SYMBOL vmlinux 0x349cba85 strchr +EXPORT_SYMBOL vmlinux 0x34bcfdc8 DWC_SPINLOCK_ALLOC +EXPORT_SYMBOL vmlinux 0x34c07dfe audit_log_start +EXPORT_SYMBOL vmlinux 0x34c30b71 unregister_md_personality +EXPORT_SYMBOL vmlinux 0x34e57351 tcp_get_cookie_sock +EXPORT_SYMBOL vmlinux 0x34e5f42b of_find_node_with_property +EXPORT_SYMBOL vmlinux 0x34f3484e security_tun_dev_attach_queue +EXPORT_SYMBOL vmlinux 0x34f9f115 sock_no_sendmsg +EXPORT_SYMBOL vmlinux 0x3507a132 _raw_spin_lock_irq +EXPORT_SYMBOL vmlinux 0x3517383e register_reboot_notifier +EXPORT_SYMBOL vmlinux 0x353de98f cmdline_parts_parse +EXPORT_SYMBOL vmlinux 0x353e3fa5 __get_user_4 +EXPORT_SYMBOL vmlinux 0x354b2fba bitmap_unplug +EXPORT_SYMBOL vmlinux 0x355f126a snd_component_add +EXPORT_SYMBOL vmlinux 0x356461c8 rtc_time64_to_tm +EXPORT_SYMBOL vmlinux 0x35790c76 led_blink_set_oneshot +EXPORT_SYMBOL vmlinux 0x35792f7e devm_ioport_unmap +EXPORT_SYMBOL vmlinux 0x357bfb44 kobject_init +EXPORT_SYMBOL vmlinux 0x35879dd7 clear_nlink +EXPORT_SYMBOL vmlinux 0x35a88f28 zlib_inflateInit2 +EXPORT_SYMBOL vmlinux 0x35bdc0a4 kthread_bind +EXPORT_SYMBOL vmlinux 0x35ccbe33 pagecache_isize_extended +EXPORT_SYMBOL vmlinux 0x35d17bcd scsi_print_command +EXPORT_SYMBOL vmlinux 0x35d4bbbe mark_buffer_async_write +EXPORT_SYMBOL vmlinux 0x35ffd6bb pagevec_lookup_tag +EXPORT_SYMBOL vmlinux 0x360b1afe probe_irq_mask +EXPORT_SYMBOL vmlinux 0x3612c10f tmio_core_mmc_enable +EXPORT_SYMBOL vmlinux 0x36432d75 md_update_sb +EXPORT_SYMBOL vmlinux 0x364d7c87 __splice_from_pipe +EXPORT_SYMBOL vmlinux 0x365b61cf ipv6_select_ident +EXPORT_SYMBOL vmlinux 0x3678d2f3 kernel_write +EXPORT_SYMBOL vmlinux 0x367ba856 __crc32c_le_shift +EXPORT_SYMBOL vmlinux 0x3682ecbb migrate_page +EXPORT_SYMBOL vmlinux 0x368dc1f6 param_set_int +EXPORT_SYMBOL vmlinux 0x36bd681b groups_alloc +EXPORT_SYMBOL vmlinux 0x36cb9ade in6_dev_finish_destroy +EXPORT_SYMBOL vmlinux 0x36f8eed4 tcp_sendpage +EXPORT_SYMBOL vmlinux 0x36fdda67 hdmi_infoframe_pack +EXPORT_SYMBOL vmlinux 0x3744b027 tty_chars_in_buffer +EXPORT_SYMBOL vmlinux 0x3744cf36 vmalloc_to_pfn +EXPORT_SYMBOL vmlinux 0x374d8f8f inet6_add_offload +EXPORT_SYMBOL vmlinux 0x374ee62f __dynamic_netdev_dbg +EXPORT_SYMBOL vmlinux 0x375334bd netdev_upper_get_next_dev_rcu +EXPORT_SYMBOL vmlinux 0x377248ee seq_escape +EXPORT_SYMBOL vmlinux 0x3796bdcc snd_pcm_format_little_endian +EXPORT_SYMBOL vmlinux 0x379dee5f trace_print_symbols_seq_u64 +EXPORT_SYMBOL vmlinux 0x37af3190 dm_table_run_md_queue_async +EXPORT_SYMBOL vmlinux 0x37af681e blkdev_issue_discard +EXPORT_SYMBOL vmlinux 0x37bc8c28 sock_no_getname +EXPORT_SYMBOL vmlinux 0x37befc70 jiffies_to_msecs +EXPORT_SYMBOL vmlinux 0x37d36b3a neigh_sysctl_register +EXPORT_SYMBOL vmlinux 0x37e74642 get_jiffies_64 +EXPORT_SYMBOL vmlinux 0x37e79923 pfifo_qdisc_ops +EXPORT_SYMBOL vmlinux 0x37e8bef5 nand_unlock +EXPORT_SYMBOL vmlinux 0x37ec5879 set_anon_super +EXPORT_SYMBOL vmlinux 0x37f614b7 __kfifo_len_r +EXPORT_SYMBOL vmlinux 0x380dcae7 kfree_skb_list +EXPORT_SYMBOL vmlinux 0x381144a9 __tracepoint_module_get +EXPORT_SYMBOL vmlinux 0x381a798a setup_max_cpus +EXPORT_SYMBOL vmlinux 0x381f9a15 amba_driver_unregister +EXPORT_SYMBOL vmlinux 0x3829c936 mntget +EXPORT_SYMBOL vmlinux 0x3878f58d dev_get_by_index +EXPORT_SYMBOL vmlinux 0x3881a058 downgrade_write +EXPORT_SYMBOL vmlinux 0x388684c7 blk_mq_add_to_requeue_list +EXPORT_SYMBOL vmlinux 0x38869d88 kstat +EXPORT_SYMBOL vmlinux 0x388ea630 udp_sendmsg +EXPORT_SYMBOL vmlinux 0x389ecf9e __bswapdi2 +EXPORT_SYMBOL vmlinux 0x38a7251c __invalidate_device +EXPORT_SYMBOL vmlinux 0x38a9f7c5 in6addr_loopback +EXPORT_SYMBOL vmlinux 0x38af23d7 blk_limits_max_hw_sectors +EXPORT_SYMBOL vmlinux 0x38c076e9 neigh_xmit +EXPORT_SYMBOL vmlinux 0x38e4bc48 lookup_one_len +EXPORT_SYMBOL vmlinux 0x38edf57c console_start +EXPORT_SYMBOL vmlinux 0x391b58fc lock_two_nondirectories +EXPORT_SYMBOL vmlinux 0x3924dd56 try_wait_for_completion +EXPORT_SYMBOL vmlinux 0x3926c481 nf_ip6_checksum +EXPORT_SYMBOL vmlinux 0x392bf6f9 nand_bch_init +EXPORT_SYMBOL vmlinux 0x3933241c iput +EXPORT_SYMBOL vmlinux 0x3939f8f0 rfkill_pause_polling +EXPORT_SYMBOL vmlinux 0x39461d6a in_egroup_p +EXPORT_SYMBOL vmlinux 0x394f9bf7 __skb_checksum_complete +EXPORT_SYMBOL vmlinux 0x3971b4df snd_ecards_limit +EXPORT_SYMBOL vmlinux 0x39730d06 atomic_io_modify +EXPORT_SYMBOL vmlinux 0x39974759 neigh_seq_stop +EXPORT_SYMBOL vmlinux 0x39991865 icmp_global_allow +EXPORT_SYMBOL vmlinux 0x39ab38e0 blk_mq_delay_queue +EXPORT_SYMBOL vmlinux 0x39b52d19 __bitmap_and +EXPORT_SYMBOL vmlinux 0x39bf9301 _snd_pcm_hw_param_setempty +EXPORT_SYMBOL vmlinux 0x39c6320c skb_put +EXPORT_SYMBOL vmlinux 0x3a030057 of_get_mac_address +EXPORT_SYMBOL vmlinux 0x3a127f20 of_graph_get_port_by_id +EXPORT_SYMBOL vmlinux 0x3a1ac054 set_normalized_timespec64 +EXPORT_SYMBOL vmlinux 0x3a323fb1 devm_kvasprintf +EXPORT_SYMBOL vmlinux 0x3a75ecdd pneigh_lookup +EXPORT_SYMBOL vmlinux 0x3a837281 page_symlink_inode_operations +EXPORT_SYMBOL vmlinux 0x3a8788df __kfifo_dma_out_prepare +EXPORT_SYMBOL vmlinux 0x3a9b6fb9 blk_unregister_region +EXPORT_SYMBOL vmlinux 0x3a9f85ef snd_pcm_hw_constraint_step +EXPORT_SYMBOL vmlinux 0x3aa09ede input_set_abs_params +EXPORT_SYMBOL vmlinux 0x3aae1cb2 eth_gro_receive +EXPORT_SYMBOL vmlinux 0x3abb26b0 ioremap_wc +EXPORT_SYMBOL vmlinux 0x3ae5abeb xfrm_garbage_collect +EXPORT_SYMBOL vmlinux 0x3b0d743a task_tgid_nr_ns +EXPORT_SYMBOL vmlinux 0x3b2a132b scsi_report_device_reset +EXPORT_SYMBOL vmlinux 0x3b3415e2 __skb_recv_datagram +EXPORT_SYMBOL vmlinux 0x3b3663a7 locks_init_lock +EXPORT_SYMBOL vmlinux 0x3b4d4a50 dma_common_get_sgtable +EXPORT_SYMBOL vmlinux 0x3b531c25 twl6040_reg_write +EXPORT_SYMBOL vmlinux 0x3b644591 __bitmap_shift_left +EXPORT_SYMBOL vmlinux 0x3b6a2b5f tcp_v4_connect +EXPORT_SYMBOL vmlinux 0x3b764a87 of_device_get_match_data +EXPORT_SYMBOL vmlinux 0x3b82ff70 buffer_check_dirty_writeback +EXPORT_SYMBOL vmlinux 0x3b91f3af snd_free_pages +EXPORT_SYMBOL vmlinux 0x3ba3bbcc mpage_writepage +EXPORT_SYMBOL vmlinux 0x3bbf46ea vga_base +EXPORT_SYMBOL vmlinux 0x3be55962 snd_card_free +EXPORT_SYMBOL vmlinux 0x3bf0b19f fs_bio_set +EXPORT_SYMBOL vmlinux 0x3bfc5862 blk_queue_max_segment_size +EXPORT_SYMBOL vmlinux 0x3c09eb8d nand_lock +EXPORT_SYMBOL vmlinux 0x3c19b174 elevator_init +EXPORT_SYMBOL vmlinux 0x3c2ad0f1 kernel_sendpage +EXPORT_SYMBOL vmlinux 0x3c30c28b rtmsg_ifinfo +EXPORT_SYMBOL vmlinux 0x3c326fda DWC_UTF8_TO_UTF16LE +EXPORT_SYMBOL vmlinux 0x3c3fce39 __local_bh_enable_ip +EXPORT_SYMBOL vmlinux 0x3c42467b snd_card_free_when_closed +EXPORT_SYMBOL vmlinux 0x3c6da1d5 __skb_gso_segment +EXPORT_SYMBOL vmlinux 0x3c7ecf3d init_buffer +EXPORT_SYMBOL vmlinux 0x3c80c06c kstrtoull +EXPORT_SYMBOL vmlinux 0x3c80ea2c get_super_thawed +EXPORT_SYMBOL vmlinux 0x3c81e1f3 page_zero_new_buffers +EXPORT_SYMBOL vmlinux 0x3c898983 unlock_buffer +EXPORT_SYMBOL vmlinux 0x3ca7dbcc vchi_connect +EXPORT_SYMBOL vmlinux 0x3cad8c3c udp_lib_rehash +EXPORT_SYMBOL vmlinux 0x3cc3d636 of_node_put +EXPORT_SYMBOL vmlinux 0x3cc49802 uart_resume_port +EXPORT_SYMBOL vmlinux 0x3cda6ce6 md_register_thread +EXPORT_SYMBOL vmlinux 0x3ce4ca6f disable_irq +EXPORT_SYMBOL vmlinux 0x3ce5b4da d_make_root +EXPORT_SYMBOL vmlinux 0x3ceb671a xfrm_policy_insert +EXPORT_SYMBOL vmlinux 0x3d076673 devfreq_interval_update +EXPORT_SYMBOL vmlinux 0x3d196bd4 input_get_keycode +EXPORT_SYMBOL vmlinux 0x3d27369e unregister_cdrom +EXPORT_SYMBOL vmlinux 0x3d30409d iommu_tbl_range_free +EXPORT_SYMBOL vmlinux 0x3d3c540f elf_hwcap +EXPORT_SYMBOL vmlinux 0x3d7d56ce jbd2_journal_release_jbd_inode +EXPORT_SYMBOL vmlinux 0x3d7fbca0 __neigh_event_send +EXPORT_SYMBOL vmlinux 0x3d83ef52 kthread_stop +EXPORT_SYMBOL vmlinux 0x3d8f6ad5 dev_get_by_index_rcu +EXPORT_SYMBOL vmlinux 0x3d9128ef frontswap_register_ops +EXPORT_SYMBOL vmlinux 0x3d9469eb mmc_alloc_host +EXPORT_SYMBOL vmlinux 0x3dcb88a0 irq_set_handler_data +EXPORT_SYMBOL vmlinux 0x3de1618f dquot_transfer +EXPORT_SYMBOL vmlinux 0x3dfbef1c napi_gro_flush +EXPORT_SYMBOL vmlinux 0x3dfc897c seq_hlist_start_head +EXPORT_SYMBOL vmlinux 0x3e0abaef mmc_cleanup_queue +EXPORT_SYMBOL vmlinux 0x3e1f8e9d ihold +EXPORT_SYMBOL vmlinux 0x3e2e6370 pps_unregister_source +EXPORT_SYMBOL vmlinux 0x3e3dbded of_dev_get +EXPORT_SYMBOL vmlinux 0x3e509a23 filemap_write_and_wait +EXPORT_SYMBOL vmlinux 0x3e643acb __dev_get_by_flags +EXPORT_SYMBOL vmlinux 0x3e66f3f9 netif_set_real_num_tx_queues +EXPORT_SYMBOL vmlinux 0x3e80261a phy_init_hw +EXPORT_SYMBOL vmlinux 0x3e884f4b vm_get_page_prot +EXPORT_SYMBOL vmlinux 0x3e9110fa __hw_addr_unsync +EXPORT_SYMBOL vmlinux 0x3eae4a16 ptp_clock_index +EXPORT_SYMBOL vmlinux 0x3eb029b1 param_get_invbool +EXPORT_SYMBOL vmlinux 0x3ee8a645 rtnl_notify +EXPORT_SYMBOL vmlinux 0x3eef20ab file_open_root +EXPORT_SYMBOL vmlinux 0x3ef0f8e8 __register_chrdev +EXPORT_SYMBOL vmlinux 0x3ef3afe3 snd_dma_alloc_pages_fallback +EXPORT_SYMBOL vmlinux 0x3f03bd06 block_write_begin +EXPORT_SYMBOL vmlinux 0x3f125cba nf_setsockopt +EXPORT_SYMBOL vmlinux 0x3f4547a7 put_unused_fd +EXPORT_SYMBOL vmlinux 0x3f497fc0 scsi_device_set_state +EXPORT_SYMBOL vmlinux 0x3f4a914c fsync_bdev +EXPORT_SYMBOL vmlinux 0x3f5b67d5 wait_for_completion_killable +EXPORT_SYMBOL vmlinux 0x3f616ce2 queue_delayed_work_on +EXPORT_SYMBOL vmlinux 0x3f80eab6 cpufreq_power_cooling_register +EXPORT_SYMBOL vmlinux 0x3f8618b6 del_random_ready_callback +EXPORT_SYMBOL vmlinux 0x3fa019f4 devfreq_recommended_opp +EXPORT_SYMBOL vmlinux 0x3fab3ca9 register_sysctl_table +EXPORT_SYMBOL vmlinux 0x3fde1680 __frontswap_store +EXPORT_SYMBOL vmlinux 0x40081a7b ethtool_op_get_ts_info +EXPORT_SYMBOL vmlinux 0x400f9769 __scsi_print_sense +EXPORT_SYMBOL vmlinux 0x402b8281 __request_module +EXPORT_SYMBOL vmlinux 0x4035963a file_path +EXPORT_SYMBOL vmlinux 0x4039918a clk_register_clkdev +EXPORT_SYMBOL vmlinux 0x4059792f print_hex_dump +EXPORT_SYMBOL vmlinux 0x405c1144 get_seconds +EXPORT_SYMBOL vmlinux 0x407136b1 __put_user_8 +EXPORT_SYMBOL vmlinux 0x407671e7 mpage_readpages +EXPORT_SYMBOL vmlinux 0x40973662 sysctl_udp_mem +EXPORT_SYMBOL vmlinux 0x409873e3 tty_termios_baud_rate +EXPORT_SYMBOL vmlinux 0x409da3dd from_kuid +EXPORT_SYMBOL vmlinux 0x40a27c37 scsi_dev_info_remove_list +EXPORT_SYMBOL vmlinux 0x40a2d1dd dm_table_get_size +EXPORT_SYMBOL vmlinux 0x40a9b349 vzalloc +EXPORT_SYMBOL vmlinux 0x40ad3abc neigh_proc_dointvec_ms_jiffies +EXPORT_SYMBOL vmlinux 0x40c01859 gen_pool_best_fit +EXPORT_SYMBOL vmlinux 0x40c7247c si_meminfo +EXPORT_SYMBOL vmlinux 0x40c7ffb0 skb_copy_datagram_iter +EXPORT_SYMBOL vmlinux 0x40d04664 console_trylock +EXPORT_SYMBOL vmlinux 0x40d59096 unregister_restart_handler +EXPORT_SYMBOL vmlinux 0x40dae50a eth_mac_addr +EXPORT_SYMBOL vmlinux 0x40ed524a _raw_read_lock_irq +EXPORT_SYMBOL vmlinux 0x40ee1bab fb_validate_mode +EXPORT_SYMBOL vmlinux 0x40f07981 __ashldi3 +EXPORT_SYMBOL vmlinux 0x40f7115c vfs_rename +EXPORT_SYMBOL vmlinux 0x4105b826 free_task +EXPORT_SYMBOL vmlinux 0x4116cb89 blk_finish_request +EXPORT_SYMBOL vmlinux 0x4118fba1 scsi_device_lookup_by_target +EXPORT_SYMBOL vmlinux 0x411b75c8 sock_wmalloc +EXPORT_SYMBOL vmlinux 0x411eb5e2 elv_rb_add +EXPORT_SYMBOL vmlinux 0x413a3fee mipi_dsi_attach +EXPORT_SYMBOL vmlinux 0x41482d8b strndup_user +EXPORT_SYMBOL vmlinux 0x414aaf0b poll_schedule_timeout +EXPORT_SYMBOL vmlinux 0x414d8ad5 dentry_needs_remove_privs +EXPORT_SYMBOL vmlinux 0x415357b9 misc_deregister +EXPORT_SYMBOL vmlinux 0x415b4107 bio_integrity_advance +EXPORT_SYMBOL vmlinux 0x41621801 ip_check_defrag +EXPORT_SYMBOL vmlinux 0x4171deac wireless_send_event +EXPORT_SYMBOL vmlinux 0x417504b2 dev_getfirstbyhwtype +EXPORT_SYMBOL vmlinux 0x417ae79a ip_mc_check_igmp +EXPORT_SYMBOL vmlinux 0x4188d439 neigh_rand_reach_time +EXPORT_SYMBOL vmlinux 0x418a5367 __scsi_format_command +EXPORT_SYMBOL vmlinux 0x41a6f666 scsi_device_get +EXPORT_SYMBOL vmlinux 0x41b0073b elv_dispatch_add_tail +EXPORT_SYMBOL vmlinux 0x41ca2319 security_path_link +EXPORT_SYMBOL vmlinux 0x41d0bb57 is_bad_inode +EXPORT_SYMBOL vmlinux 0x41e13f17 tcf_exts_change +EXPORT_SYMBOL vmlinux 0x41f9a78c __dev_getfirstbyhwtype +EXPORT_SYMBOL vmlinux 0x42160169 flush_workqueue +EXPORT_SYMBOL vmlinux 0x421a7cb5 blk_post_runtime_resume +EXPORT_SYMBOL vmlinux 0x42297fe7 pm860x_page_reg_write +EXPORT_SYMBOL vmlinux 0x422d1efc led_update_brightness +EXPORT_SYMBOL vmlinux 0x423d81ed ida_pre_get +EXPORT_SYMBOL vmlinux 0x4248ae3c single_task_running +EXPORT_SYMBOL vmlinux 0x424d3620 zlib_inflateIncomp +EXPORT_SYMBOL vmlinux 0x4250a7cf ___pskb_trim +EXPORT_SYMBOL vmlinux 0x4258f1fb free_buffer_head +EXPORT_SYMBOL vmlinux 0x4288fe91 __xfrm_init_state +EXPORT_SYMBOL vmlinux 0x4298b775 v7_flush_kern_cache_all +EXPORT_SYMBOL vmlinux 0x4299b018 blk_mq_complete_request +EXPORT_SYMBOL vmlinux 0x429be6d3 remove_conflicting_framebuffers +EXPORT_SYMBOL vmlinux 0x42a056da gnet_stats_start_copy +EXPORT_SYMBOL vmlinux 0x42a1b208 gen_pool_first_fit +EXPORT_SYMBOL vmlinux 0x42bd9cde nf_log_unbind_pf +EXPORT_SYMBOL vmlinux 0x42cebbc1 jbd2_journal_try_to_free_buffers +EXPORT_SYMBOL vmlinux 0x42deb088 fsnotify_alloc_group +EXPORT_SYMBOL vmlinux 0x42f3249a mtd_concat_destroy +EXPORT_SYMBOL vmlinux 0x42f40b97 bdgrab +EXPORT_SYMBOL vmlinux 0x4302d0eb free_pages +EXPORT_SYMBOL vmlinux 0x430314d0 send_sig +EXPORT_SYMBOL vmlinux 0x4306f306 tcf_hash_destroy +EXPORT_SYMBOL vmlinux 0x43460d4c __xfrm_decode_session +EXPORT_SYMBOL vmlinux 0x4351577a fb_parse_edid +EXPORT_SYMBOL vmlinux 0x436041fb debugfs_create_automount +EXPORT_SYMBOL vmlinux 0x437d96db override_creds +EXPORT_SYMBOL vmlinux 0x438610bd security_tun_dev_alloc_security +EXPORT_SYMBOL vmlinux 0x4396d850 release_firmware +EXPORT_SYMBOL vmlinux 0x43a4d64d of_find_node_by_type +EXPORT_SYMBOL vmlinux 0x43a69d29 cpufreq_global_kobject +EXPORT_SYMBOL vmlinux 0x43b47f50 blk_init_allocated_queue +EXPORT_SYMBOL vmlinux 0x43f23311 dm_table_get_md +EXPORT_SYMBOL vmlinux 0x43f5b846 finish_open +EXPORT_SYMBOL vmlinux 0x4410673e con_is_bound +EXPORT_SYMBOL vmlinux 0x4411c503 prandom_seed +EXPORT_SYMBOL vmlinux 0x442495c9 tmio_core_mmc_resume +EXPORT_SYMBOL vmlinux 0x44366cfc simple_write_to_buffer +EXPORT_SYMBOL vmlinux 0x44438b96 hex2bin +EXPORT_SYMBOL vmlinux 0x4447fa7c elv_rb_find +EXPORT_SYMBOL vmlinux 0x444b93fa console_stop +EXPORT_SYMBOL vmlinux 0x444ef9db __get_user_pages_unlocked +EXPORT_SYMBOL vmlinux 0x44643b93 __aeabi_lmul +EXPORT_SYMBOL vmlinux 0x4467b99c reservation_object_reserve_shared +EXPORT_SYMBOL vmlinux 0x448a5fac mipi_dsi_driver_unregister +EXPORT_SYMBOL vmlinux 0x44b1d426 __dynamic_pr_debug +EXPORT_SYMBOL vmlinux 0x44bcd6e8 ip_mc_dec_group +EXPORT_SYMBOL vmlinux 0x44bcf64e tcp_v4_do_rcv +EXPORT_SYMBOL vmlinux 0x44da5d0f __csum_ipv6_magic +EXPORT_SYMBOL vmlinux 0x44dd3d8d completion_done +EXPORT_SYMBOL vmlinux 0x44e4c065 vchi_held_msg_release +EXPORT_SYMBOL vmlinux 0x44e9a829 match_token +EXPORT_SYMBOL vmlinux 0x44ede294 blk_queue_logical_block_size +EXPORT_SYMBOL vmlinux 0x44fd5b35 would_dump +EXPORT_SYMBOL vmlinux 0x44ff19e2 __dev_kfree_skb_any +EXPORT_SYMBOL vmlinux 0x4503d967 __hw_addr_sync_dev +EXPORT_SYMBOL vmlinux 0x45138a28 __ip_select_ident +EXPORT_SYMBOL vmlinux 0x45279275 commit_creds +EXPORT_SYMBOL vmlinux 0x453deec0 netif_tx_wake_queue +EXPORT_SYMBOL vmlinux 0x45457148 blk_put_request +EXPORT_SYMBOL vmlinux 0x45695004 blk_run_queue +EXPORT_SYMBOL vmlinux 0x45733532 sk_capable +EXPORT_SYMBOL vmlinux 0x4578f528 __kfifo_to_user +EXPORT_SYMBOL vmlinux 0x45792b70 t10_pi_type1_crc +EXPORT_SYMBOL vmlinux 0x45899c89 blk_mq_unique_tag +EXPORT_SYMBOL vmlinux 0x4596a482 jbd2_journal_ack_err +EXPORT_SYMBOL vmlinux 0x459fd3e2 skb_vlan_pop +EXPORT_SYMBOL vmlinux 0x45a6be13 cpufreq_sysfs_remove_file +EXPORT_SYMBOL vmlinux 0x45bda0d5 system_serial_low +EXPORT_SYMBOL vmlinux 0x45cded5d __cleancache_put_page +EXPORT_SYMBOL vmlinux 0x45dfbf81 dma_find_channel +EXPORT_SYMBOL vmlinux 0x4605880e kill_pgrp +EXPORT_SYMBOL vmlinux 0x4616f4ba DWC_CPU_TO_LE32 +EXPORT_SYMBOL vmlinux 0x4624d304 tcf_action_exec +EXPORT_SYMBOL vmlinux 0x462a2e75 match_strlcpy +EXPORT_SYMBOL vmlinux 0x46386284 dev_get_stats +EXPORT_SYMBOL vmlinux 0x465757c3 cpu_present_mask +EXPORT_SYMBOL vmlinux 0x465cab34 secure_ipv6_port_ephemeral +EXPORT_SYMBOL vmlinux 0x465db0e4 snd_card_file_remove +EXPORT_SYMBOL vmlinux 0x4669b655 blk_queue_resize_tags +EXPORT_SYMBOL vmlinux 0x46713cf1 generic_pipe_buf_get +EXPORT_SYMBOL vmlinux 0x46734cd9 param_ops_uint +EXPORT_SYMBOL vmlinux 0x46784058 dst_release +EXPORT_SYMBOL vmlinux 0x469ded92 tcf_hash_create +EXPORT_SYMBOL vmlinux 0x46a3a07a ether_setup +EXPORT_SYMBOL vmlinux 0x46a66960 phy_connect +EXPORT_SYMBOL vmlinux 0x46a9182a swiotlb_alloc_coherent +EXPORT_SYMBOL vmlinux 0x46c3f6ca kernel_connect +EXPORT_SYMBOL vmlinux 0x46c83c6d mii_link_ok +EXPORT_SYMBOL vmlinux 0x46d38e31 DWC_SNPRINTF +EXPORT_SYMBOL vmlinux 0x46d3b28c __div0 +EXPORT_SYMBOL vmlinux 0x46ee7b61 phy_ethtool_get_wol +EXPORT_SYMBOL vmlinux 0x46feb099 dm_read_arg +EXPORT_SYMBOL vmlinux 0x4720d852 alloc_file +EXPORT_SYMBOL vmlinux 0x47229574 set_blocksize +EXPORT_SYMBOL vmlinux 0x47406044 bmap +EXPORT_SYMBOL vmlinux 0x47416e14 cpu_rmap_add +EXPORT_SYMBOL vmlinux 0x475125d0 sb_set_blocksize +EXPORT_SYMBOL vmlinux 0x4759f4a3 tcp_ioctl +EXPORT_SYMBOL vmlinux 0x47797a01 start_tty +EXPORT_SYMBOL vmlinux 0x477b34c4 elv_register_queue +EXPORT_SYMBOL vmlinux 0x478062b8 padata_set_cpumasks +EXPORT_SYMBOL vmlinux 0x47835b8d sk_reset_timer +EXPORT_SYMBOL vmlinux 0x47939e0d __tasklet_hi_schedule +EXPORT_SYMBOL vmlinux 0x479f089f padata_do_serial +EXPORT_SYMBOL vmlinux 0x47cb83ab blk_queue_free_tags +EXPORT_SYMBOL vmlinux 0x47e70229 v7_flush_user_cache_range +EXPORT_SYMBOL vmlinux 0x47ef4a4b tcp_init_xmit_timers +EXPORT_SYMBOL vmlinux 0x47f757de elf_platform +EXPORT_SYMBOL vmlinux 0x47faa1de mmc_register_driver +EXPORT_SYMBOL vmlinux 0x480e2987 clkdev_add +EXPORT_SYMBOL vmlinux 0x481a67a3 d_find_any_alias +EXPORT_SYMBOL vmlinux 0x481ce6ce cpu_active_mask +EXPORT_SYMBOL vmlinux 0x481ff40d netpoll_send_udp +EXPORT_SYMBOL vmlinux 0x48244456 vchi_service_close +EXPORT_SYMBOL vmlinux 0x4859b8bb rtc_year_days +EXPORT_SYMBOL vmlinux 0x487a05cf dquot_quota_sync +EXPORT_SYMBOL vmlinux 0x48873550 _snd_pcm_lib_alloc_vmalloc_buffer +EXPORT_SYMBOL vmlinux 0x48a0f467 dquot_alloc +EXPORT_SYMBOL vmlinux 0x48a5b067 __machine_arch_type +EXPORT_SYMBOL vmlinux 0x48bf5f00 blk_integrity_unregister +EXPORT_SYMBOL vmlinux 0x48c14302 blk_queue_max_segments +EXPORT_SYMBOL vmlinux 0x48e277e7 snd_pcm_kernel_ioctl +EXPORT_SYMBOL vmlinux 0x48f1f946 inet_listen +EXPORT_SYMBOL vmlinux 0x49045426 icmp_err_convert +EXPORT_SYMBOL vmlinux 0x49104068 seq_open_private +EXPORT_SYMBOL vmlinux 0x495c96f8 posix_acl_init +EXPORT_SYMBOL vmlinux 0x49603fb8 security_sb_copy_data +EXPORT_SYMBOL vmlinux 0x49643b83 serio_unregister_child_port +EXPORT_SYMBOL vmlinux 0x49757fd3 sockfd_lookup +EXPORT_SYMBOL vmlinux 0x49842b64 jbd2_journal_begin_ordered_truncate +EXPORT_SYMBOL vmlinux 0x499cb58c prepare_to_wait +EXPORT_SYMBOL vmlinux 0x49a35764 unmap_mapping_range +EXPORT_SYMBOL vmlinux 0x49b07aec tcp_select_initial_window +EXPORT_SYMBOL vmlinux 0x49d3c438 xfrm4_rcv_cb +EXPORT_SYMBOL vmlinux 0x49df6465 blk_pm_runtime_init +EXPORT_SYMBOL vmlinux 0x49ebacbd _clear_bit +EXPORT_SYMBOL vmlinux 0x49f65d4c tcf_hash_insert +EXPORT_SYMBOL vmlinux 0x49f71442 dev_close_many +EXPORT_SYMBOL vmlinux 0x4a3ea5c0 snd_request_card +EXPORT_SYMBOL vmlinux 0x4a52ade5 tty_unregister_device +EXPORT_SYMBOL vmlinux 0x4a5683f7 xfrm_unregister_mode +EXPORT_SYMBOL vmlinux 0x4a57b339 wait_for_completion_io_timeout +EXPORT_SYMBOL vmlinux 0x4a6c7724 iov_iter_npages +EXPORT_SYMBOL vmlinux 0x4a7828d0 bioset_create_nobvec +EXPORT_SYMBOL vmlinux 0x4a8030f2 netif_wake_subqueue +EXPORT_SYMBOL vmlinux 0x4a862890 inet_frag_destroy +EXPORT_SYMBOL vmlinux 0x4a8782f0 blk_queue_max_hw_sectors +EXPORT_SYMBOL vmlinux 0x4a899324 uart_suspend_port +EXPORT_SYMBOL vmlinux 0x4aaedbf3 nand_scan_bbt +EXPORT_SYMBOL vmlinux 0x4ab29499 skb_dequeue_tail +EXPORT_SYMBOL vmlinux 0x4abbe3c2 vm_brk +EXPORT_SYMBOL vmlinux 0x4ac7cd4b mpage_readpage +EXPORT_SYMBOL vmlinux 0x4afe9a77 scsi_partsize +EXPORT_SYMBOL vmlinux 0x4b1ec3e2 kstrtoul_from_user +EXPORT_SYMBOL vmlinux 0x4b2703f6 __wait_on_bit +EXPORT_SYMBOL vmlinux 0x4b34fbf5 block_all_signals +EXPORT_SYMBOL vmlinux 0x4b4e10f3 padata_do_parallel +EXPORT_SYMBOL vmlinux 0x4b5fd49e dm_kcopyd_do_callback +EXPORT_SYMBOL vmlinux 0x4b61f136 cdrom_release +EXPORT_SYMBOL vmlinux 0x4bb0778e vm_stat +EXPORT_SYMBOL vmlinux 0x4bb280e1 block_invalidatepage +EXPORT_SYMBOL vmlinux 0x4bcf03a4 radix_tree_tag_clear +EXPORT_SYMBOL vmlinux 0x4bdb3cfc scsi_cmd_ioctl +EXPORT_SYMBOL vmlinux 0x4bdd5078 posix_acl_from_xattr +EXPORT_SYMBOL vmlinux 0x4be7fb63 up +EXPORT_SYMBOL vmlinux 0x4be85a03 memweight +EXPORT_SYMBOL vmlinux 0x4c067741 prepare_binprm +EXPORT_SYMBOL vmlinux 0x4c19aa08 dwc_cc_match_chid +EXPORT_SYMBOL vmlinux 0x4c233a44 _raw_read_unlock_bh +EXPORT_SYMBOL vmlinux 0x4c29dcbf cancel_delayed_work_sync +EXPORT_SYMBOL vmlinux 0x4c2ae700 strnstr +EXPORT_SYMBOL vmlinux 0x4c346a53 kvasprintf +EXPORT_SYMBOL vmlinux 0x4c362d4d proc_mkdir_mode +EXPORT_SYMBOL vmlinux 0x4c591bb0 sg_pcopy_to_buffer +EXPORT_SYMBOL vmlinux 0x4c5fc58c _raw_read_lock_bh +EXPORT_SYMBOL vmlinux 0x4c7ba4e6 copy_strings_kernel +EXPORT_SYMBOL vmlinux 0x4c86184b remove_wait_queue +EXPORT_SYMBOL vmlinux 0x4c98d584 neigh_lookup +EXPORT_SYMBOL vmlinux 0x4cada750 truncate_pagecache +EXPORT_SYMBOL vmlinux 0x4cae42e7 ethtool_op_get_link +EXPORT_SYMBOL vmlinux 0x4caffb4d devm_devfreq_add_device +EXPORT_SYMBOL vmlinux 0x4cb4d619 kobject_set_name +EXPORT_SYMBOL vmlinux 0x4cb51989 kernel_getpeername +EXPORT_SYMBOL vmlinux 0x4cbfe1bd set_cached_acl +EXPORT_SYMBOL vmlinux 0x4cd53008 md_error +EXPORT_SYMBOL vmlinux 0x4cdb3178 ns_to_timeval +EXPORT_SYMBOL vmlinux 0x4ce368ce d_alloc_name +EXPORT_SYMBOL vmlinux 0x4d0d163d copy_page +EXPORT_SYMBOL vmlinux 0x4d294bb4 bit_wait_io +EXPORT_SYMBOL vmlinux 0x4d353e6d udp_lib_setsockopt +EXPORT_SYMBOL vmlinux 0x4d3ac3b6 lockref_put_or_lock +EXPORT_SYMBOL vmlinux 0x4d3c153f sigprocmask +EXPORT_SYMBOL vmlinux 0x4d45d89e udp_memory_allocated +EXPORT_SYMBOL vmlinux 0x4d6f74e6 unregister_console +EXPORT_SYMBOL vmlinux 0x4d974b9c register_sysrq_key +EXPORT_SYMBOL vmlinux 0x4d9a3642 kmem_cache_size +EXPORT_SYMBOL vmlinux 0x4d9b652b rb_erase +EXPORT_SYMBOL vmlinux 0x4d9b6d35 snd_pcm_format_size +EXPORT_SYMBOL vmlinux 0x4da623c5 ndo_dflt_fdb_dump +EXPORT_SYMBOL vmlinux 0x4dc2c174 security_task_getsecid +EXPORT_SYMBOL vmlinux 0x4dc348f4 ppp_dev_name +EXPORT_SYMBOL vmlinux 0x4dd32c3e get_acl +EXPORT_SYMBOL vmlinux 0x4de1aedc tcf_destroy_chain +EXPORT_SYMBOL vmlinux 0x4de1f63d nobh_writepage +EXPORT_SYMBOL vmlinux 0x4de34a07 cpu_rmap_put +EXPORT_SYMBOL vmlinux 0x4dec6038 memscan +EXPORT_SYMBOL vmlinux 0x4decfd2d dm_kcopyd_copy +EXPORT_SYMBOL vmlinux 0x4df119fa __bitmap_parse +EXPORT_SYMBOL vmlinux 0x4e088627 __kernel_write +EXPORT_SYMBOL vmlinux 0x4e214e52 shrink_dcache_parent +EXPORT_SYMBOL vmlinux 0x4e3567f7 match_int +EXPORT_SYMBOL vmlinux 0x4e3caa75 mipi_dsi_host_register +EXPORT_SYMBOL vmlinux 0x4e484332 vfs_mknod +EXPORT_SYMBOL vmlinux 0x4e4e65c5 generic_ro_fops +EXPORT_SYMBOL vmlinux 0x4e68e9be rb_next_postorder +EXPORT_SYMBOL vmlinux 0x4e6e8ea7 fg_console +EXPORT_SYMBOL vmlinux 0x4e75fb47 dma_pool_create +EXPORT_SYMBOL vmlinux 0x4e89720f kmalloc_caches +EXPORT_SYMBOL vmlinux 0x4e979522 skb_seq_read +EXPORT_SYMBOL vmlinux 0x4e9a9f81 vchi_bulk_queue_receive +EXPORT_SYMBOL vmlinux 0x4ead7c8b dma_async_tx_descriptor_init +EXPORT_SYMBOL vmlinux 0x4ec21e1c DWC_WAITQ_ABORT +EXPORT_SYMBOL vmlinux 0x4ed40562 dev_get_by_name_rcu +EXPORT_SYMBOL vmlinux 0x4f03d77e input_free_device +EXPORT_SYMBOL vmlinux 0x4f15b972 dwc_cc_remove +EXPORT_SYMBOL vmlinux 0x4f1cd128 security_tun_dev_create +EXPORT_SYMBOL vmlinux 0x4f2250ba rtc_tm_to_time64 +EXPORT_SYMBOL vmlinux 0x4f33e155 netdev_class_create_file_ns +EXPORT_SYMBOL vmlinux 0x4f391d0e nla_parse +EXPORT_SYMBOL vmlinux 0x4f476e96 init_cdrom_command +EXPORT_SYMBOL vmlinux 0x4f487651 input_mt_drop_unused +EXPORT_SYMBOL vmlinux 0x4f534070 of_clk_get +EXPORT_SYMBOL vmlinux 0x4f68e5c9 do_gettimeofday +EXPORT_SYMBOL vmlinux 0x4f6f9ccc abx500_set_register_interruptible +EXPORT_SYMBOL vmlinux 0x4f816e9b snd_pcm_format_big_endian +EXPORT_SYMBOL vmlinux 0x4fdd283f netlink_unicast +EXPORT_SYMBOL vmlinux 0x4fea8d80 dwc_cc_cdid +EXPORT_SYMBOL vmlinux 0x4fec94cd loop_register_transfer +EXPORT_SYMBOL vmlinux 0x4ff9cd9c skb_trim +EXPORT_SYMBOL vmlinux 0x50097088 security_tun_dev_free_security +EXPORT_SYMBOL vmlinux 0x50137498 dup_iter +EXPORT_SYMBOL vmlinux 0x503bd137 snd_interval_ranges +EXPORT_SYMBOL vmlinux 0x5063df40 __posix_acl_create +EXPORT_SYMBOL vmlinux 0x50711033 vlan_dev_vlan_proto +EXPORT_SYMBOL vmlinux 0x5079d1d4 trace_print_hex_seq +EXPORT_SYMBOL vmlinux 0x50929080 proc_set_size +EXPORT_SYMBOL vmlinux 0x5094665a md_wait_for_blocked_rdev +EXPORT_SYMBOL vmlinux 0x509817cf vprintk_emit +EXPORT_SYMBOL vmlinux 0x50a3315d mipi_dsi_generic_read +EXPORT_SYMBOL vmlinux 0x50a7cdc9 devm_gpiod_get_array +EXPORT_SYMBOL vmlinux 0x50b66bcb radix_tree_next_chunk +EXPORT_SYMBOL vmlinux 0x50c49f47 __ethtool_get_settings +EXPORT_SYMBOL vmlinux 0x50cabdf7 module_put +EXPORT_SYMBOL vmlinux 0x50ded37c __posix_acl_chmod +EXPORT_SYMBOL vmlinux 0x51023eb0 __pskb_pull_tail +EXPORT_SYMBOL vmlinux 0x510e8bf5 twl6040_clear_bits +EXPORT_SYMBOL vmlinux 0x5112b836 snd_ctl_find_numid +EXPORT_SYMBOL vmlinux 0x511746c1 dump_fpu +EXPORT_SYMBOL vmlinux 0x5118c382 secure_dccp_sequence_number +EXPORT_SYMBOL vmlinux 0x511d2aa5 dst_destroy +EXPORT_SYMBOL vmlinux 0x512ce8b8 i2c_smbus_read_word_data +EXPORT_SYMBOL vmlinux 0x51416f01 do_splice_from +EXPORT_SYMBOL vmlinux 0x514c9212 tcp_conn_request +EXPORT_SYMBOL vmlinux 0x516955e8 unregister_quota_format +EXPORT_SYMBOL vmlinux 0x51793594 tcf_hash_search +EXPORT_SYMBOL vmlinux 0x517f392a sock_edemux +EXPORT_SYMBOL vmlinux 0x51807c6f copy_page_to_iter +EXPORT_SYMBOL vmlinux 0x519415c8 DWC_TASK_ALLOC +EXPORT_SYMBOL vmlinux 0x51994179 thaw_bdev +EXPORT_SYMBOL vmlinux 0x51c3da5e dwc_remove_observer +EXPORT_SYMBOL vmlinux 0x51d559d1 _raw_spin_unlock_irqrestore +EXPORT_SYMBOL vmlinux 0x51d60dad usbnet_manage_power +EXPORT_SYMBOL vmlinux 0x51d9e823 cfb_copyarea +EXPORT_SYMBOL vmlinux 0x51e77c97 pfn_valid +EXPORT_SYMBOL vmlinux 0x51ef33b8 kstrndup +EXPORT_SYMBOL vmlinux 0x51f3108b napi_disable +EXPORT_SYMBOL vmlinux 0x51f5b806 tty_port_tty_get +EXPORT_SYMBOL vmlinux 0x52026cdf security_sb_parse_opts_str +EXPORT_SYMBOL vmlinux 0x520a9e19 mb_cache_entry_release +EXPORT_SYMBOL vmlinux 0x5210a401 i2c_master_send +EXPORT_SYMBOL vmlinux 0x521b36b5 qdisc_put_rtab +EXPORT_SYMBOL vmlinux 0x521ea8af loop_backing_file +EXPORT_SYMBOL vmlinux 0x52428cc8 parent_mem_cgroup +EXPORT_SYMBOL vmlinux 0x52626bd4 nlmsg_notify +EXPORT_SYMBOL vmlinux 0x5270c344 setup_new_exec +EXPORT_SYMBOL vmlinux 0x5271d18d xfrm4_prepare_output +EXPORT_SYMBOL vmlinux 0x527c4147 csum_and_copy_from_iter +EXPORT_SYMBOL vmlinux 0x52849baa security_path_mknod +EXPORT_SYMBOL vmlinux 0x528c709d simple_read_from_buffer +EXPORT_SYMBOL vmlinux 0x528d0c14 idr_init +EXPORT_SYMBOL vmlinux 0x5293b0e9 page_symlink +EXPORT_SYMBOL vmlinux 0x52947900 end_buffer_write_sync +EXPORT_SYMBOL vmlinux 0x5299e0c7 amba_release_regions +EXPORT_SYMBOL vmlinux 0x52a73715 dcache_dir_lseek +EXPORT_SYMBOL vmlinux 0x52af562a __crc32c_le +EXPORT_SYMBOL vmlinux 0x52bb841c atomic_io_modify_relaxed +EXPORT_SYMBOL vmlinux 0x52e3e4a5 snd_pcm_hw_param_value +EXPORT_SYMBOL vmlinux 0x52efd766 __kfifo_dma_in_prepare +EXPORT_SYMBOL vmlinux 0x52f5a664 __check_sticky +EXPORT_SYMBOL vmlinux 0x53074bc4 dquot_disable +EXPORT_SYMBOL vmlinux 0x530b1e98 pm_suspend +EXPORT_SYMBOL vmlinux 0x530d3d59 should_remove_suid +EXPORT_SYMBOL vmlinux 0x5312d47e scsi_host_get +EXPORT_SYMBOL vmlinux 0x53326531 mempool_alloc_pages +EXPORT_SYMBOL vmlinux 0x533697c5 max8925_set_bits +EXPORT_SYMBOL vmlinux 0x533b93f3 proto_unregister +EXPORT_SYMBOL vmlinux 0x53417e1d seq_read +EXPORT_SYMBOL vmlinux 0x538db33d fget_raw +EXPORT_SYMBOL vmlinux 0x539d5922 __bio_clone_fast +EXPORT_SYMBOL vmlinux 0x53aa6e01 devm_clk_get +EXPORT_SYMBOL vmlinux 0x53bf4c01 dev_open +EXPORT_SYMBOL vmlinux 0x53c6ac96 sock_no_recvmsg +EXPORT_SYMBOL vmlinux 0x53d1da5b reqsk_queue_hash_req +EXPORT_SYMBOL vmlinux 0x53de83da dquot_writeback_dquots +EXPORT_SYMBOL vmlinux 0x54065520 param_set_ullong +EXPORT_SYMBOL vmlinux 0x5409775b free_irq_cpu_rmap +EXPORT_SYMBOL vmlinux 0x5426cd9f ps2_handle_response +EXPORT_SYMBOL vmlinux 0x54398d07 i2c_release_client +EXPORT_SYMBOL vmlinux 0x543ef284 seq_hlist_start +EXPORT_SYMBOL vmlinux 0x544e906b tcp_close +EXPORT_SYMBOL vmlinux 0x54520f65 __serio_register_driver +EXPORT_SYMBOL vmlinux 0x5456d0b5 __DWC_DMA_FREE +EXPORT_SYMBOL vmlinux 0x54704c43 iov_iter_advance +EXPORT_SYMBOL vmlinux 0x547077ec __wake_up_bit +EXPORT_SYMBOL vmlinux 0x54725fe2 vc_cma_size +EXPORT_SYMBOL vmlinux 0x54a6b296 input_open_device +EXPORT_SYMBOL vmlinux 0x54a9db5f _kstrtoul +EXPORT_SYMBOL vmlinux 0x54db552b jbd2_journal_get_undo_access +EXPORT_SYMBOL vmlinux 0x54e02cdf ata_std_end_eh +EXPORT_SYMBOL vmlinux 0x54e6fcdd net_enable_timestamp +EXPORT_SYMBOL vmlinux 0x550f2475 d_tmpfile +EXPORT_SYMBOL vmlinux 0x551a75a7 up_read +EXPORT_SYMBOL vmlinux 0x551bd071 __rb_erase_color +EXPORT_SYMBOL vmlinux 0x55253684 ps2_cmd_aborted +EXPORT_SYMBOL vmlinux 0x5528d7b3 fixed_phy_update_state +EXPORT_SYMBOL vmlinux 0x5540843d DWC_BE32_TO_CPU +EXPORT_SYMBOL vmlinux 0x5541ea93 on_each_cpu +EXPORT_SYMBOL vmlinux 0x5567c227 kernel_cpustat +EXPORT_SYMBOL vmlinux 0x556def8d mipi_dsi_dcs_set_display_on +EXPORT_SYMBOL vmlinux 0x556e5e33 ip6_frag_init +EXPORT_SYMBOL vmlinux 0x558ac0e8 sock_kzfree_s +EXPORT_SYMBOL vmlinux 0x55bdda47 thermal_cdev_update +EXPORT_SYMBOL vmlinux 0x55c8c8ad mipi_dsi_dcs_set_page_address +EXPORT_SYMBOL vmlinux 0x55d01b09 __sock_tx_timestamp +EXPORT_SYMBOL vmlinux 0x55d481c9 hdmi_infoframe_unpack +EXPORT_SYMBOL vmlinux 0x55f36ab0 free_user_ns +EXPORT_SYMBOL vmlinux 0x55f62b53 arm_coherent_dma_ops +EXPORT_SYMBOL vmlinux 0x5601bbce skb_push +EXPORT_SYMBOL vmlinux 0x5615c12f tcf_unregister_action +EXPORT_SYMBOL vmlinux 0x562d97d7 d_path +EXPORT_SYMBOL vmlinux 0x5635a60a vmalloc_user +EXPORT_SYMBOL vmlinux 0x563952a3 kblockd_schedule_work +EXPORT_SYMBOL vmlinux 0x56436ea2 con_set_default_unimap +EXPORT_SYMBOL vmlinux 0x56472a18 twl6030_mmc_card_detect +EXPORT_SYMBOL vmlinux 0x565dda32 __inet_hash +EXPORT_SYMBOL vmlinux 0x566082de bfifo_qdisc_ops +EXPORT_SYMBOL vmlinux 0x566e1c49 empty_aops +EXPORT_SYMBOL vmlinux 0x569a695d __dev_get_by_index +EXPORT_SYMBOL vmlinux 0x569c69c2 sg_miter_skip +EXPORT_SYMBOL vmlinux 0x56a82704 dwc_cc_clear +EXPORT_SYMBOL vmlinux 0x56c8799d scsi_kunmap_atomic_sg +EXPORT_SYMBOL vmlinux 0x57146e25 neigh_ifdown +EXPORT_SYMBOL vmlinux 0x572e85d4 blk_lookup_devt +EXPORT_SYMBOL vmlinux 0x573c5105 blk_start_request +EXPORT_SYMBOL vmlinux 0x574c2e74 bitmap_release_region +EXPORT_SYMBOL vmlinux 0x57575f08 dmaengine_put +EXPORT_SYMBOL vmlinux 0x57600e82 snd_timer_global_new +EXPORT_SYMBOL vmlinux 0x57674fd7 __sw_hweight16 +EXPORT_SYMBOL vmlinux 0x577adda0 devm_release_resource +EXPORT_SYMBOL vmlinux 0x57e136b8 snd_ctl_new1 +EXPORT_SYMBOL vmlinux 0x581f98da zlib_inflate +EXPORT_SYMBOL vmlinux 0x5824116f vchi_service_create +EXPORT_SYMBOL vmlinux 0x582f2369 inet_sk_rebuild_header +EXPORT_SYMBOL vmlinux 0x5838f6c9 rtc_valid_tm +EXPORT_SYMBOL vmlinux 0x5844456c register_md_personality +EXPORT_SYMBOL vmlinux 0x587616f1 vfs_fstatat +EXPORT_SYMBOL vmlinux 0x5880547e netif_tx_stop_all_queues +EXPORT_SYMBOL vmlinux 0x5880fc15 xfrm_policy_walk +EXPORT_SYMBOL vmlinux 0x58850ef6 i2c_smbus_read_byte_data +EXPORT_SYMBOL vmlinux 0x5893a754 update_region +EXPORT_SYMBOL vmlinux 0x58a9238a blk_free_tags +EXPORT_SYMBOL vmlinux 0x58a9940a dma_release_from_coherent +EXPORT_SYMBOL vmlinux 0x58b73bc7 match_wildcard +EXPORT_SYMBOL vmlinux 0x58d633c7 neigh_proc_dointvec_jiffies +EXPORT_SYMBOL vmlinux 0x58d7da7e netdev_master_upper_dev_get_rcu +EXPORT_SYMBOL vmlinux 0x59196f6e rfkill_alloc +EXPORT_SYMBOL vmlinux 0x59309931 xfrm_input_unregister_afinfo +EXPORT_SYMBOL vmlinux 0x594310ea try_to_writeback_inodes_sb_nr +EXPORT_SYMBOL vmlinux 0x5949e9bc snd_pcm_hw_rule_noresample +EXPORT_SYMBOL vmlinux 0x594bf15b ioport_map +EXPORT_SYMBOL vmlinux 0x594e1317 __modsi3 +EXPORT_SYMBOL vmlinux 0x59701cec processor +EXPORT_SYMBOL vmlinux 0x598542b2 _raw_spin_lock_irqsave +EXPORT_SYMBOL vmlinux 0x5985c0f3 ata_dev_printk +EXPORT_SYMBOL vmlinux 0x598cd828 udp_table +EXPORT_SYMBOL vmlinux 0x598e4904 mod_timer_pending +EXPORT_SYMBOL vmlinux 0x5990c177 sock_i_ino +EXPORT_SYMBOL vmlinux 0x59a8ab13 inode_init_always +EXPORT_SYMBOL vmlinux 0x59aa14cf fence_release +EXPORT_SYMBOL vmlinux 0x59ad33a8 devm_gpiod_put +EXPORT_SYMBOL vmlinux 0x59ba7614 ps2_begin_command +EXPORT_SYMBOL vmlinux 0x59bbfb6f pm_vt_switch_unregister +EXPORT_SYMBOL vmlinux 0x59d14d6a inet6_add_protocol +EXPORT_SYMBOL vmlinux 0x59d29dab v7_flush_kern_dcache_area +EXPORT_SYMBOL vmlinux 0x59d4abd0 security_mmap_file +EXPORT_SYMBOL vmlinux 0x59d8223a ioport_resource +EXPORT_SYMBOL vmlinux 0x59dd70e2 kill_bdev +EXPORT_SYMBOL vmlinux 0x59df16ae simple_nosetlease +EXPORT_SYMBOL vmlinux 0x59e5070d __do_div64 +EXPORT_SYMBOL vmlinux 0x59ec7ee6 inode_reclaim_rsv_space +EXPORT_SYMBOL vmlinux 0x59eee316 mb_cache_entry_insert +EXPORT_SYMBOL vmlinux 0x5a03ec8d mmc_free_host +EXPORT_SYMBOL vmlinux 0x5a0b73d0 zlib_deflateInit2 +EXPORT_SYMBOL vmlinux 0x5a19d468 __f_setown +EXPORT_SYMBOL vmlinux 0x5a24603b blk_queue_dma_pad +EXPORT_SYMBOL vmlinux 0x5a38154c eth_commit_mac_addr_change +EXPORT_SYMBOL vmlinux 0x5a3eade4 input_allocate_device +EXPORT_SYMBOL vmlinux 0x5a5e2ae2 __put_cred +EXPORT_SYMBOL vmlinux 0x5a5f40b8 filemap_flush +EXPORT_SYMBOL vmlinux 0x5a633a2b tcp_rtx_synack +EXPORT_SYMBOL vmlinux 0x5a68d18e iommu_tbl_range_alloc +EXPORT_SYMBOL vmlinux 0x5a6d1705 km_state_notify +EXPORT_SYMBOL vmlinux 0x5a7426f4 seq_putc +EXPORT_SYMBOL vmlinux 0x5a8549d9 __inode_sub_bytes +EXPORT_SYMBOL vmlinux 0x5a996437 of_phy_register_fixed_link +EXPORT_SYMBOL vmlinux 0x5a9dc3fe netpoll_print_options +EXPORT_SYMBOL vmlinux 0x5aa70cbf of_find_backlight_by_node +EXPORT_SYMBOL vmlinux 0x5ab39091 blk_mq_end_request +EXPORT_SYMBOL vmlinux 0x5ab63757 dev_uc_add +EXPORT_SYMBOL vmlinux 0x5acfea1b vlan_ioctl_set +EXPORT_SYMBOL vmlinux 0x5ae0cc8b jbd2_journal_unlock_updates +EXPORT_SYMBOL vmlinux 0x5ae5be44 lg_lock_init +EXPORT_SYMBOL vmlinux 0x5af03830 inet_sock_destruct +EXPORT_SYMBOL vmlinux 0x5b04be5a disable_fiq +EXPORT_SYMBOL vmlinux 0x5b149a68 padata_alloc +EXPORT_SYMBOL vmlinux 0x5b19634d div_s64_rem +EXPORT_SYMBOL vmlinux 0x5b1ff360 sk_ns_capable +EXPORT_SYMBOL vmlinux 0x5b292937 registered_fb +EXPORT_SYMBOL vmlinux 0x5b2b01da tty_port_alloc_xmit_buf +EXPORT_SYMBOL vmlinux 0x5b42c209 devm_gpiod_get_array_optional +EXPORT_SYMBOL vmlinux 0x5b77625f jbd2_journal_forget +EXPORT_SYMBOL vmlinux 0x5b7c5f21 posix_acl_to_xattr +EXPORT_SYMBOL vmlinux 0x5b9470f5 alloc_buffer_head +EXPORT_SYMBOL vmlinux 0x5b95db45 mutex_trylock +EXPORT_SYMBOL vmlinux 0x5b99e765 jbd2_journal_wipe +EXPORT_SYMBOL vmlinux 0x5bc0f703 simple_readpage +EXPORT_SYMBOL vmlinux 0x5bd086bb nf_ip_checksum +EXPORT_SYMBOL vmlinux 0x5bd2f672 iov_iter_init +EXPORT_SYMBOL vmlinux 0x5bd954d4 devm_devfreq_unregister_opp_notifier +EXPORT_SYMBOL vmlinux 0x5bdc2f2a freeze_bdev +EXPORT_SYMBOL vmlinux 0x5be1e703 dquot_reclaim_space_nodirty +EXPORT_SYMBOL vmlinux 0x5bf4a1eb sg_last +EXPORT_SYMBOL vmlinux 0x5bf686e1 submit_bio_wait +EXPORT_SYMBOL vmlinux 0x5bfe0587 register_sound_midi +EXPORT_SYMBOL vmlinux 0x5c1f7d23 bio_add_pc_page +EXPORT_SYMBOL vmlinux 0x5c3fce25 follow_pfn +EXPORT_SYMBOL vmlinux 0x5c54af8a sock_no_shutdown +EXPORT_SYMBOL vmlinux 0x5c84005e snd_seq_root +EXPORT_SYMBOL vmlinux 0x5c9284a0 processor_id +EXPORT_SYMBOL vmlinux 0x5c9efd77 mpage_writepages +EXPORT_SYMBOL vmlinux 0x5cbb27c8 generic_start_io_acct +EXPORT_SYMBOL vmlinux 0x5cd3b7f8 neigh_seq_start +EXPORT_SYMBOL vmlinux 0x5cd6ef68 phy_mii_ioctl +EXPORT_SYMBOL vmlinux 0x5cd9ecdd generic_file_open +EXPORT_SYMBOL vmlinux 0x5cdef91b __dec_zone_page_state +EXPORT_SYMBOL vmlinux 0x5cf53ce2 input_free_minor +EXPORT_SYMBOL vmlinux 0x5cfd769b sk_stream_wait_memory +EXPORT_SYMBOL vmlinux 0x5d054e84 cdrom_get_media_event +EXPORT_SYMBOL vmlinux 0x5d096144 phy_device_free +EXPORT_SYMBOL vmlinux 0x5d0e0e0f security_path_rename +EXPORT_SYMBOL vmlinux 0x5d0f4d83 memory_cgrp_subsys +EXPORT_SYMBOL vmlinux 0x5d23dcf9 blk_get_request +EXPORT_SYMBOL vmlinux 0x5d550c4d scsi_sd_probe_domain +EXPORT_SYMBOL vmlinux 0x5d9d1e31 set_wb_congested +EXPORT_SYMBOL vmlinux 0x5da10cda snd_card_set_id +EXPORT_SYMBOL vmlinux 0x5daf9743 dev_deactivate +EXPORT_SYMBOL vmlinux 0x5db40b52 inet_add_protocol +EXPORT_SYMBOL vmlinux 0x5dc53813 netdev_class_remove_file_ns +EXPORT_SYMBOL vmlinux 0x5ddaa2d8 tty_port_init +EXPORT_SYMBOL vmlinux 0x5deb3814 md_check_recovery +EXPORT_SYMBOL vmlinux 0x5df1c051 DWC_TIMER_ALLOC +EXPORT_SYMBOL vmlinux 0x5df6a404 mm_vc_mem_size +EXPORT_SYMBOL vmlinux 0x5dfff41e generic_update_time +EXPORT_SYMBOL vmlinux 0x5e34e05c register_framebuffer +EXPORT_SYMBOL vmlinux 0x5e36890f scsi_execute +EXPORT_SYMBOL vmlinux 0x5e455d00 sock_kmalloc +EXPORT_SYMBOL vmlinux 0x5e4dfa9a request_key_async +EXPORT_SYMBOL vmlinux 0x5e6f7052 devm_clk_put +EXPORT_SYMBOL vmlinux 0x5e7f4920 snd_pcm_format_set_silence +EXPORT_SYMBOL vmlinux 0x5e866d85 prandom_bytes +EXPORT_SYMBOL vmlinux 0x5e89ad56 blk_queue_bounce_limit +EXPORT_SYMBOL vmlinux 0x5e95b1cd current_umask +EXPORT_SYMBOL vmlinux 0x5eae14fe dev_change_carrier +EXPORT_SYMBOL vmlinux 0x5eb24829 dm_shift_arg +EXPORT_SYMBOL vmlinux 0x5ed040b0 pm_set_vt_switch +EXPORT_SYMBOL vmlinux 0x5ed4bcc3 mipi_dsi_detach +EXPORT_SYMBOL vmlinux 0x5ee45913 unlock_page +EXPORT_SYMBOL vmlinux 0x5ee7639c elevator_alloc +EXPORT_SYMBOL vmlinux 0x5ef80cb9 sync_inode_metadata +EXPORT_SYMBOL vmlinux 0x5f005368 kstrtou8 +EXPORT_SYMBOL vmlinux 0x5f098b2a in6addr_interfacelocal_allrouters +EXPORT_SYMBOL vmlinux 0x5f27323c _raw_write_trylock +EXPORT_SYMBOL vmlinux 0x5f411504 scsi_device_lookup +EXPORT_SYMBOL vmlinux 0x5f51b32b tcf_register_action +EXPORT_SYMBOL vmlinux 0x5f5a4db3 devm_backlight_device_register +EXPORT_SYMBOL vmlinux 0x5f5dab91 irq_set_chip +EXPORT_SYMBOL vmlinux 0x5f62dabe bdi_register_dev +EXPORT_SYMBOL vmlinux 0x5f70425e block_page_mkwrite +EXPORT_SYMBOL vmlinux 0x5f754e5a memset +EXPORT_SYMBOL vmlinux 0x5f97fbf3 of_find_all_nodes +EXPORT_SYMBOL vmlinux 0x5f9e1ab4 dev_uc_sync_multiple +EXPORT_SYMBOL vmlinux 0x5fa86547 iter_file_splice_write +EXPORT_SYMBOL vmlinux 0x5faede05 ata_link_printk +EXPORT_SYMBOL vmlinux 0x5fb0c1b9 simple_transaction_get +EXPORT_SYMBOL vmlinux 0x5fbaabe9 param_set_bool +EXPORT_SYMBOL vmlinux 0x5fd268cb radix_tree_gang_lookup +EXPORT_SYMBOL vmlinux 0x5fda0227 vfs_stat +EXPORT_SYMBOL vmlinux 0x5fe5589f register_shrinker +EXPORT_SYMBOL vmlinux 0x5feebfdd DWC_CPU_TO_BE32 +EXPORT_SYMBOL vmlinux 0x600683d3 do_unblank_screen +EXPORT_SYMBOL vmlinux 0x600e341b i2c_get_adapter +EXPORT_SYMBOL vmlinux 0x601f665f dm_io_client_create +EXPORT_SYMBOL vmlinux 0x602c96f0 copy_to_user_fromio +EXPORT_SYMBOL vmlinux 0x602f7949 blkdev_get_by_path +EXPORT_SYMBOL vmlinux 0x60352082 register_inet6addr_notifier +EXPORT_SYMBOL vmlinux 0x606d0b09 secure_tcpv6_sequence_number +EXPORT_SYMBOL vmlinux 0x6091644e flow_keys_dissector +EXPORT_SYMBOL vmlinux 0x609ec5ff pps_register_source +EXPORT_SYMBOL vmlinux 0x609f1c7e synchronize_net +EXPORT_SYMBOL vmlinux 0x60a32ea9 pm_power_off +EXPORT_SYMBOL vmlinux 0x60a4c63c unregister_key_type +EXPORT_SYMBOL vmlinux 0x60c30e97 iget_locked +EXPORT_SYMBOL vmlinux 0x60df1e3b posix_acl_equiv_mode +EXPORT_SYMBOL vmlinux 0x60e897d5 inet_recvmsg +EXPORT_SYMBOL vmlinux 0x61005462 DWC_VPRINTF +EXPORT_SYMBOL vmlinux 0x610404e1 blk_mq_tag_busy_iter +EXPORT_SYMBOL vmlinux 0x610b9d15 i2c_smbus_write_byte_data +EXPORT_SYMBOL vmlinux 0x6123ce02 ptp_clock_event +EXPORT_SYMBOL vmlinux 0x6128b5fc __printk_ratelimit +EXPORT_SYMBOL vmlinux 0x6142d26a end_page_writeback +EXPORT_SYMBOL vmlinux 0x61481a35 usbnet_link_change +EXPORT_SYMBOL vmlinux 0x61650f5b get_task_io_context +EXPORT_SYMBOL vmlinux 0x6172558e max8998_read_reg +EXPORT_SYMBOL vmlinux 0x6175e654 param_get_charp +EXPORT_SYMBOL vmlinux 0x61785f4c kern_path_create +EXPORT_SYMBOL vmlinux 0x617a218d __cond_resched_lock +EXPORT_SYMBOL vmlinux 0x61a0b1c2 generic_make_request +EXPORT_SYMBOL vmlinux 0x61a338c5 skb_free_datagram +EXPORT_SYMBOL vmlinux 0x61b3560c cmdline_parts_set +EXPORT_SYMBOL vmlinux 0x61b7b126 simple_strtoull +EXPORT_SYMBOL vmlinux 0x61ba9667 netdev_state_change +EXPORT_SYMBOL vmlinux 0x6214aef2 cpufreq_unregister_notifier +EXPORT_SYMBOL vmlinux 0x6214f58e zero_fill_bio +EXPORT_SYMBOL vmlinux 0x6220b4a2 crc32_le +EXPORT_SYMBOL vmlinux 0x6225637e md5_transform +EXPORT_SYMBOL vmlinux 0x62259b29 fbcon_set_bitops +EXPORT_SYMBOL vmlinux 0x6228c21f smp_call_function_single +EXPORT_SYMBOL vmlinux 0x622b9fcb truncate_pagecache_range +EXPORT_SYMBOL vmlinux 0x6239c142 inode_sub_bytes +EXPORT_SYMBOL vmlinux 0x62432ec7 __inode_permission +EXPORT_SYMBOL vmlinux 0x62645c86 mnt_drop_write_file +EXPORT_SYMBOL vmlinux 0x626e8a33 phy_register_fixup_for_id +EXPORT_SYMBOL vmlinux 0x62737e1d sock_unregister +EXPORT_SYMBOL vmlinux 0x62827bec security_secctx_to_secid +EXPORT_SYMBOL vmlinux 0x62849ac7 dev_valid_name +EXPORT_SYMBOL vmlinux 0x628a9515 dmam_declare_coherent_memory +EXPORT_SYMBOL vmlinux 0x6291b601 audit_log_task_info +EXPORT_SYMBOL vmlinux 0x62a6c054 dquot_free_inode +EXPORT_SYMBOL vmlinux 0x62a9229a phy_suspend +EXPORT_SYMBOL vmlinux 0x62b57c87 sock_get_timestampns +EXPORT_SYMBOL vmlinux 0x62d2be77 pipe_lock +EXPORT_SYMBOL vmlinux 0x62fab4d1 dma_mmap_from_coherent +EXPORT_SYMBOL vmlinux 0x62fb7907 __scsi_alloc_queue +EXPORT_SYMBOL vmlinux 0x63057881 path_put +EXPORT_SYMBOL vmlinux 0x630c8220 lock_sock_nested +EXPORT_SYMBOL vmlinux 0x631294c6 bdevname +EXPORT_SYMBOL vmlinux 0x632d3d3c get_mm_exe_file +EXPORT_SYMBOL vmlinux 0x633bda74 xfrm4_rcv +EXPORT_SYMBOL vmlinux 0x634e48d3 i2c_verify_client +EXPORT_SYMBOL vmlinux 0x635a2bc1 mb_cache_entry_alloc +EXPORT_SYMBOL vmlinux 0x635c16dc seq_write +EXPORT_SYMBOL vmlinux 0x63a7c28c bitmap_find_free_region +EXPORT_SYMBOL vmlinux 0x63ac832b tty_do_resize +EXPORT_SYMBOL vmlinux 0x63b2f5ca qdisc_list_add +EXPORT_SYMBOL vmlinux 0x63b55dc3 ab3100_event_unregister +EXPORT_SYMBOL vmlinux 0x63b78d09 sync_inode +EXPORT_SYMBOL vmlinux 0x63bae9dc nand_scan_tail +EXPORT_SYMBOL vmlinux 0x63c336f2 xfrm_alloc_spi +EXPORT_SYMBOL vmlinux 0x63c4d61f __bitmap_weight +EXPORT_SYMBOL vmlinux 0x63d1fc97 DWC_LE16_TO_CPU +EXPORT_SYMBOL vmlinux 0x63d9b256 mmc_start_req +EXPORT_SYMBOL vmlinux 0x63e02d1a release_sock +EXPORT_SYMBOL vmlinux 0x63eb9355 panic_blink +EXPORT_SYMBOL vmlinux 0x63eeb10e arp_send +EXPORT_SYMBOL vmlinux 0x63fc232f strlen_user +EXPORT_SYMBOL vmlinux 0x64007e80 wait_for_key_construction +EXPORT_SYMBOL vmlinux 0x6403e338 tcp_memory_pressure +EXPORT_SYMBOL vmlinux 0x64127b67 bitmap_find_next_zero_area_off +EXPORT_SYMBOL vmlinux 0x64389839 dquot_file_open +EXPORT_SYMBOL vmlinux 0x6444f283 dcb_ieee_getapp_mask +EXPORT_SYMBOL vmlinux 0x64488de7 neigh_update +EXPORT_SYMBOL vmlinux 0x6474c6af vfs_readv +EXPORT_SYMBOL vmlinux 0x6478d98f vfs_read +EXPORT_SYMBOL vmlinux 0x647d7a35 tty_port_destroy +EXPORT_SYMBOL vmlinux 0x64999478 congestion_wait +EXPORT_SYMBOL vmlinux 0x64ad92cf get_thermal_instance +EXPORT_SYMBOL vmlinux 0x64baf227 mm_vc_mem_phys_addr +EXPORT_SYMBOL vmlinux 0x64d8c379 brioctl_set +EXPORT_SYMBOL vmlinux 0x64e00221 serio_rescan +EXPORT_SYMBOL vmlinux 0x64ea9816 __i2c_transfer +EXPORT_SYMBOL vmlinux 0x64fb4bf0 mdiobus_write +EXPORT_SYMBOL vmlinux 0x650a9487 dwc_cc_chid +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 0x65254ed5 blk_queue_prep_rq +EXPORT_SYMBOL vmlinux 0x65408378 zlib_inflate_blob +EXPORT_SYMBOL vmlinux 0x65430d81 htc_egpio_get_wakeup_irq +EXPORT_SYMBOL vmlinux 0x65466939 proc_doulongvec_ms_jiffies_minmax +EXPORT_SYMBOL vmlinux 0x655cad30 tcp_splice_read +EXPORT_SYMBOL vmlinux 0x6561593c fb_set_cmap +EXPORT_SYMBOL vmlinux 0x656c5cae param_array_ops +EXPORT_SYMBOL vmlinux 0x657f4636 jbd2_journal_stop +EXPORT_SYMBOL vmlinux 0x658d9ad5 tcp_create_openreq_child +EXPORT_SYMBOL vmlinux 0x65a80353 dev_alloc_name +EXPORT_SYMBOL vmlinux 0x65cdad5b udp_prot +EXPORT_SYMBOL vmlinux 0x65d3f792 dev_add_pack +EXPORT_SYMBOL vmlinux 0x65d9e877 cpufreq_register_notifier +EXPORT_SYMBOL vmlinux 0x65dccf13 xz_dec_end +EXPORT_SYMBOL vmlinux 0x65e28cef mfd_add_devices +EXPORT_SYMBOL vmlinux 0x65f3ad9a fb_videomode_to_var +EXPORT_SYMBOL vmlinux 0x660914c9 netif_rx_ni +EXPORT_SYMBOL vmlinux 0x660f5209 neigh_resolve_output +EXPORT_SYMBOL vmlinux 0x661a6cd0 mipi_dsi_dcs_set_tear_off +EXPORT_SYMBOL vmlinux 0x66277ec5 generic_write_end +EXPORT_SYMBOL vmlinux 0x66343b34 ip_mc_leave_group +EXPORT_SYMBOL vmlinux 0x663a6390 insert_inode_locked4 +EXPORT_SYMBOL vmlinux 0x6640ef0b genl_notify +EXPORT_SYMBOL vmlinux 0x6660891d iw_handler_get_spy +EXPORT_SYMBOL vmlinux 0x66731c7d ipv6_skip_exthdr +EXPORT_SYMBOL vmlinux 0x6681502d write_one_page +EXPORT_SYMBOL vmlinux 0x669c4aa8 acl_by_type +EXPORT_SYMBOL vmlinux 0x66a800e4 md_cluster_mod +EXPORT_SYMBOL vmlinux 0x66f28759 set_device_ro +EXPORT_SYMBOL vmlinux 0x66f8d68f inet_twsk_deschedule +EXPORT_SYMBOL vmlinux 0x66f9b30f dwc_cc_match_cdid +EXPORT_SYMBOL vmlinux 0x670cb988 fb_class +EXPORT_SYMBOL vmlinux 0x670f0b21 max8998_bulk_write +EXPORT_SYMBOL vmlinux 0x6710b4aa __lock_buffer +EXPORT_SYMBOL vmlinux 0x671382fd netdev_crit +EXPORT_SYMBOL vmlinux 0x6715c554 dev_mc_del_global +EXPORT_SYMBOL vmlinux 0x675b2169 snd_ctl_boolean_stereo_info +EXPORT_SYMBOL vmlinux 0x676bbc0f _set_bit +EXPORT_SYMBOL vmlinux 0x67733cf4 mb_cache_create +EXPORT_SYMBOL vmlinux 0x67789b5c inet6_register_icmp_sender +EXPORT_SYMBOL vmlinux 0x6794f227 jbd2_journal_extend +EXPORT_SYMBOL vmlinux 0x67b27ec1 tty_std_termios +EXPORT_SYMBOL vmlinux 0x67b78eb3 seq_hlist_next_rcu +EXPORT_SYMBOL vmlinux 0x67c1fab9 tcp_md5_hash_skb_data +EXPORT_SYMBOL vmlinux 0x67dfdf1e blk_mq_tag_to_rq +EXPORT_SYMBOL vmlinux 0x67e10e1e iget5_locked +EXPORT_SYMBOL vmlinux 0x6808b453 __unregister_cpu_notifier +EXPORT_SYMBOL vmlinux 0x6818a658 netdev_has_upper_dev +EXPORT_SYMBOL vmlinux 0x6851e1d3 jbd2_journal_set_features +EXPORT_SYMBOL vmlinux 0x68535137 input_mt_report_slot_state +EXPORT_SYMBOL vmlinux 0x685411a3 neigh_app_ns +EXPORT_SYMBOL vmlinux 0x6857fcd2 phy_ethtool_get_eee +EXPORT_SYMBOL vmlinux 0x685f4028 dev_mc_sync +EXPORT_SYMBOL vmlinux 0x686df339 vchi_initialise +EXPORT_SYMBOL vmlinux 0x687b6a16 kdbgetsymval +EXPORT_SYMBOL vmlinux 0x68869bae panic_notifier_list +EXPORT_SYMBOL vmlinux 0x68911815 blk_mq_start_hw_queues +EXPORT_SYMBOL vmlinux 0x68a24153 snd_pcm_format_physical_width +EXPORT_SYMBOL vmlinux 0x68aab3b5 skb_copy_and_csum_dev +EXPORT_SYMBOL vmlinux 0x68abb700 kobject_put +EXPORT_SYMBOL vmlinux 0x68b4e927 sock_queue_rcv_skb +EXPORT_SYMBOL vmlinux 0x68b83ac6 posix_acl_alloc +EXPORT_SYMBOL vmlinux 0x68c41793 mii_ethtool_gset +EXPORT_SYMBOL vmlinux 0x68c47deb devm_gpio_request +EXPORT_SYMBOL vmlinux 0x68e46449 security_path_chmod +EXPORT_SYMBOL vmlinux 0x68f1d17e search_binary_handler +EXPORT_SYMBOL vmlinux 0x690c2c1f key_task_permission +EXPORT_SYMBOL vmlinux 0x6915eb38 down_interruptible +EXPORT_SYMBOL vmlinux 0x691ce052 xfrm_state_add +EXPORT_SYMBOL vmlinux 0x69377cb3 request_firmware_nowait +EXPORT_SYMBOL vmlinux 0x69521589 dev_set_mac_address +EXPORT_SYMBOL vmlinux 0x69650b0c netdev_upper_dev_unlink +EXPORT_SYMBOL vmlinux 0x6971447a rtc_month_days +EXPORT_SYMBOL vmlinux 0x699cd003 dquot_get_state +EXPORT_SYMBOL vmlinux 0x69a79242 __getblk_gfp +EXPORT_SYMBOL vmlinux 0x69ad2f20 kstrtouint +EXPORT_SYMBOL vmlinux 0x69bad48c jbd2_journal_lock_updates +EXPORT_SYMBOL vmlinux 0x69c4a240 tcp_check_req +EXPORT_SYMBOL vmlinux 0x69d32e11 mmc_gpio_set_cd_isr +EXPORT_SYMBOL vmlinux 0x69f2e0bd dm_unregister_target +EXPORT_SYMBOL vmlinux 0x69fe480c abx500_get_register_interruptible +EXPORT_SYMBOL vmlinux 0x69ff8ab0 tcp_enter_cwr +EXPORT_SYMBOL vmlinux 0x6a037cf1 mempool_kfree +EXPORT_SYMBOL vmlinux 0x6a04e4f8 bprm_change_interp +EXPORT_SYMBOL vmlinux 0x6a10e841 abort_creds +EXPORT_SYMBOL vmlinux 0x6a13edea kernel_param_unlock +EXPORT_SYMBOL vmlinux 0x6a2648a2 jbd2_journal_destroy +EXPORT_SYMBOL vmlinux 0x6a2e4ebf serio_open +EXPORT_SYMBOL vmlinux 0x6a5ecb18 unregister_module_notifier +EXPORT_SYMBOL vmlinux 0x6a6782a8 tcp_sync_mss +EXPORT_SYMBOL vmlinux 0x6a76f3ac blk_iopoll_enable +EXPORT_SYMBOL vmlinux 0x6a7e23dc ppp_channel_index +EXPORT_SYMBOL vmlinux 0x6a8530a6 sk_send_sigurg +EXPORT_SYMBOL vmlinux 0x6a910e3f write_cache_pages +EXPORT_SYMBOL vmlinux 0x6aa12166 jbd2_journal_get_create_access +EXPORT_SYMBOL vmlinux 0x6abd021f clear_inode +EXPORT_SYMBOL vmlinux 0x6ac183f8 seq_puts +EXPORT_SYMBOL vmlinux 0x6acafd5b cookie_timestamp_decode +EXPORT_SYMBOL vmlinux 0x6aeefac4 zlib_deflateReset +EXPORT_SYMBOL vmlinux 0x6af1d1fd mmc_align_data_size +EXPORT_SYMBOL vmlinux 0x6b06a2b9 dcbnl_ieee_notify +EXPORT_SYMBOL vmlinux 0x6b06fdce delayed_work_timer_fn +EXPORT_SYMBOL vmlinux 0x6b0875c9 phy_ethtool_set_wol +EXPORT_SYMBOL vmlinux 0x6b1b67d3 __bdevname +EXPORT_SYMBOL vmlinux 0x6b261366 devm_input_allocate_device +EXPORT_SYMBOL vmlinux 0x6b2dc060 dump_stack +EXPORT_SYMBOL vmlinux 0x6b305499 ipv6_sock_mc_join +EXPORT_SYMBOL vmlinux 0x6b354189 bio_flush_dcache_pages +EXPORT_SYMBOL vmlinux 0x6b5887df blk_end_request +EXPORT_SYMBOL vmlinux 0x6b5f2a66 inet_put_port +EXPORT_SYMBOL vmlinux 0x6b8bb605 of_get_cpu_node +EXPORT_SYMBOL vmlinux 0x6b8d60b1 prepare_creds +EXPORT_SYMBOL vmlinux 0x6baf95c1 generic_pipe_buf_confirm +EXPORT_SYMBOL vmlinux 0x6bb0c22f eth_validate_addr +EXPORT_SYMBOL vmlinux 0x6bc3fbc0 __unregister_chrdev +EXPORT_SYMBOL vmlinux 0x6bcfbbca dump_skip +EXPORT_SYMBOL vmlinux 0x6bd3a49d tcp_parse_options +EXPORT_SYMBOL vmlinux 0x6bd8717e ip_options_compile +EXPORT_SYMBOL vmlinux 0x6bdcfd99 qdisc_class_hash_remove +EXPORT_SYMBOL vmlinux 0x6bf5f646 blk_recount_segments +EXPORT_SYMBOL vmlinux 0x6bf7d6a0 clear_page_dirty_for_io +EXPORT_SYMBOL vmlinux 0x6c09c2a4 del_timer +EXPORT_SYMBOL vmlinux 0x6c11cbab md_done_sync +EXPORT_SYMBOL vmlinux 0x6c1ce5ce strcspn +EXPORT_SYMBOL vmlinux 0x6c30a9ac __scsi_device_lookup +EXPORT_SYMBOL vmlinux 0x6c4bfa94 blk_integrity_merge_bio +EXPORT_SYMBOL vmlinux 0x6c4d9e5a mdiobus_unregister +EXPORT_SYMBOL vmlinux 0x6c51a836 sysctl_tcp_notsent_lowat +EXPORT_SYMBOL vmlinux 0x6c61ce70 num_registered_fb +EXPORT_SYMBOL vmlinux 0x6c6cdd4d wait_for_completion_interruptible_timeout +EXPORT_SYMBOL vmlinux 0x6c702af7 sysctl_udp_rmem_min +EXPORT_SYMBOL vmlinux 0x6c779241 fb_find_mode +EXPORT_SYMBOL vmlinux 0x6c800947 phy_ethtool_gset +EXPORT_SYMBOL vmlinux 0x6ca5b0f8 __net_get_random_once +EXPORT_SYMBOL vmlinux 0x6cb159a7 tty_flip_buffer_push +EXPORT_SYMBOL vmlinux 0x6cdc5c6b nla_strlcpy +EXPORT_SYMBOL vmlinux 0x6cff3b3e inc_zone_page_state +EXPORT_SYMBOL vmlinux 0x6d09f396 param_set_uint +EXPORT_SYMBOL vmlinux 0x6d0f1f89 dm_table_get_mode +EXPORT_SYMBOL vmlinux 0x6d1c44dd lockref_get_not_zero +EXPORT_SYMBOL vmlinux 0x6d28b352 gro_find_receive_by_type +EXPORT_SYMBOL vmlinux 0x6d294e43 clock_t_to_jiffies +EXPORT_SYMBOL vmlinux 0x6d340f64 tty_termios_input_baud_rate +EXPORT_SYMBOL vmlinux 0x6d404318 put_io_context +EXPORT_SYMBOL vmlinux 0x6d4545d4 rtnl_link_get_net +EXPORT_SYMBOL vmlinux 0x6d45c21e scsi_is_target_device +EXPORT_SYMBOL vmlinux 0x6d51fb26 __DWC_ALLOC_ATOMIC +EXPORT_SYMBOL vmlinux 0x6d662533 _find_first_bit_le +EXPORT_SYMBOL vmlinux 0x6d70ef77 fbcon_rotate_ccw +EXPORT_SYMBOL vmlinux 0x6dde639a I_BDEV +EXPORT_SYMBOL vmlinux 0x6def2db2 half_md4_transform +EXPORT_SYMBOL vmlinux 0x6df1aaf1 kernel_sigaction +EXPORT_SYMBOL vmlinux 0x6e036cd0 of_get_child_by_name +EXPORT_SYMBOL vmlinux 0x6e0723c9 tty_insert_flip_string_fixed_flag +EXPORT_SYMBOL vmlinux 0x6e23a95c param_set_charp +EXPORT_SYMBOL vmlinux 0x6e24e83a sock_efree +EXPORT_SYMBOL vmlinux 0x6e3a953b delete_from_page_cache +EXPORT_SYMBOL vmlinux 0x6e48b828 napi_gro_frags +EXPORT_SYMBOL vmlinux 0x6e6514ed radix_tree_insert +EXPORT_SYMBOL vmlinux 0x6e720ff2 rtnl_unlock +EXPORT_SYMBOL vmlinux 0x6e81bbd1 blk_get_backing_dev_info +EXPORT_SYMBOL vmlinux 0x6e840b0f sock_common_setsockopt +EXPORT_SYMBOL vmlinux 0x6e8b817b filp_open +EXPORT_SYMBOL vmlinux 0x6e9dd606 __symbol_put +EXPORT_SYMBOL vmlinux 0x6ea09070 devm_request_threaded_irq +EXPORT_SYMBOL vmlinux 0x6ec9ccdb _raw_write_lock_bh +EXPORT_SYMBOL vmlinux 0x6ecb686d i2c_smbus_xfer +EXPORT_SYMBOL vmlinux 0x6ed2c2ee pm860x_bulk_write +EXPORT_SYMBOL vmlinux 0x6edf46fd blk_mq_start_request +EXPORT_SYMBOL vmlinux 0x6ee446ed ndisc_mc_map +EXPORT_SYMBOL vmlinux 0x6eecda12 page_readlink +EXPORT_SYMBOL vmlinux 0x6eef0f30 single_open_size +EXPORT_SYMBOL vmlinux 0x6eef9396 mipi_dsi_dcs_set_column_address +EXPORT_SYMBOL vmlinux 0x6ef8fcd8 snd_pcm_format_linear +EXPORT_SYMBOL vmlinux 0x6f07a764 param_ops_long +EXPORT_SYMBOL vmlinux 0x6f15c3e8 ilookup5 +EXPORT_SYMBOL vmlinux 0x6f20960a full_name_hash +EXPORT_SYMBOL vmlinux 0x6f218a2c sock_alloc_send_skb +EXPORT_SYMBOL vmlinux 0x6f40787b of_node_get +EXPORT_SYMBOL vmlinux 0x6f6ccc3b usb_gadget_probe_driver +EXPORT_SYMBOL vmlinux 0x6f88effb hdmi_avi_infoframe_init +EXPORT_SYMBOL vmlinux 0x6fbf07cd __free_page_frag +EXPORT_SYMBOL vmlinux 0x6fcb87a1 touch_softlockup_watchdog +EXPORT_SYMBOL vmlinux 0x6ffd731c ipv6_chk_addr +EXPORT_SYMBOL vmlinux 0x7005622c complete_request_key +EXPORT_SYMBOL vmlinux 0x70097aa0 nand_bch_free +EXPORT_SYMBOL vmlinux 0x700dfb10 get_unmapped_area +EXPORT_SYMBOL vmlinux 0x700efdc9 fb_firmware_edid +EXPORT_SYMBOL vmlinux 0x70335fab tty_name +EXPORT_SYMBOL vmlinux 0x704ed804 inet_csk_destroy_sock +EXPORT_SYMBOL vmlinux 0x70523a7a __cond_resched_softirq +EXPORT_SYMBOL vmlinux 0x7062b4cd cmdline_parts_free +EXPORT_SYMBOL vmlinux 0x706d051c del_timer_sync +EXPORT_SYMBOL vmlinux 0x707f43f6 __ctzdi2 +EXPORT_SYMBOL vmlinux 0x7087c34b trace_raw_output_prep +EXPORT_SYMBOL vmlinux 0x708aec8f tcp_disconnect +EXPORT_SYMBOL vmlinux 0x70a0fe24 of_clk_get_by_name +EXPORT_SYMBOL vmlinux 0x70a3b963 udp_proc_register +EXPORT_SYMBOL vmlinux 0x70db3ccb blk_queue_stack_limits +EXPORT_SYMBOL vmlinux 0x70ed71d9 truncate_setsize +EXPORT_SYMBOL vmlinux 0x70f96f88 glob_match +EXPORT_SYMBOL vmlinux 0x71008fcc d_set_d_op +EXPORT_SYMBOL vmlinux 0x711beea1 poll_initwait +EXPORT_SYMBOL vmlinux 0x7126e148 __wait_on_bit_lock +EXPORT_SYMBOL vmlinux 0x71286236 request_firmware +EXPORT_SYMBOL vmlinux 0x7129e5f8 hex_asc +EXPORT_SYMBOL vmlinux 0x712ed37b radix_tree_gang_lookup_tag_slot +EXPORT_SYMBOL vmlinux 0x7148a20c f_setown +EXPORT_SYMBOL vmlinux 0x714c7b10 ptp_clock_register +EXPORT_SYMBOL vmlinux 0x7166a062 __netlink_kernel_create +EXPORT_SYMBOL vmlinux 0x7171121c overflowgid +EXPORT_SYMBOL vmlinux 0x7172d409 flush_signals +EXPORT_SYMBOL vmlinux 0x71789c97 locks_mandatory_area +EXPORT_SYMBOL vmlinux 0x7185bfe4 blk_stop_queue +EXPORT_SYMBOL vmlinux 0x719a3d50 passthru_features_check +EXPORT_SYMBOL vmlinux 0x719a945d mem_map +EXPORT_SYMBOL vmlinux 0x719b9c04 simple_transaction_set +EXPORT_SYMBOL vmlinux 0x71a50dbc register_blkdev +EXPORT_SYMBOL vmlinux 0x71a672ef dmam_pool_destroy +EXPORT_SYMBOL vmlinux 0x71ab686c bitmap_startwrite +EXPORT_SYMBOL vmlinux 0x71b7f28c xfrm_state_alloc +EXPORT_SYMBOL vmlinux 0x71c41a5d register_sound_mixer +EXPORT_SYMBOL vmlinux 0x71c90087 memcmp +EXPORT_SYMBOL vmlinux 0x71d266ed rwsem_wake +EXPORT_SYMBOL vmlinux 0x71e2f85f mmc_gpio_get_ro +EXPORT_SYMBOL vmlinux 0x71f65175 hdmi_spd_infoframe_pack +EXPORT_SYMBOL vmlinux 0x71f7c3f5 blk_run_queue_async +EXPORT_SYMBOL vmlinux 0x7223c205 inet6_unregister_protosw +EXPORT_SYMBOL vmlinux 0x7223d42c rtnetlink_put_metrics +EXPORT_SYMBOL vmlinux 0x72350130 ___ratelimit +EXPORT_SYMBOL vmlinux 0x724778b9 neigh_for_each +EXPORT_SYMBOL vmlinux 0x724b5b63 inode_set_flags +EXPORT_SYMBOL vmlinux 0x72588c48 free_netdev +EXPORT_SYMBOL vmlinux 0x72664bd1 mount_single +EXPORT_SYMBOL vmlinux 0x727207e5 phy_register_fixup_for_uid +EXPORT_SYMBOL vmlinux 0x72725efb vchi_service_set_option +EXPORT_SYMBOL vmlinux 0x72790128 bdi_setup_and_register +EXPORT_SYMBOL vmlinux 0x727eab86 tty_write_room +EXPORT_SYMBOL vmlinux 0x7299d8e9 __ip_dev_find +EXPORT_SYMBOL vmlinux 0x729f520e __module_get +EXPORT_SYMBOL vmlinux 0x72a42e53 iw_handler_set_thrspy +EXPORT_SYMBOL vmlinux 0x72b46a8c kobject_get +EXPORT_SYMBOL vmlinux 0x72d3777a dev_remove_pack +EXPORT_SYMBOL vmlinux 0x72d58de9 kstrtou8_from_user +EXPORT_SYMBOL vmlinux 0x72da908d blk_integrity_register +EXPORT_SYMBOL vmlinux 0x72e6fdb1 phy_start_aneg +EXPORT_SYMBOL vmlinux 0x72ea7b2d scsi_device_type +EXPORT_SYMBOL vmlinux 0x73120f16 fib_default_rule_add +EXPORT_SYMBOL vmlinux 0x731217c7 inet6_release +EXPORT_SYMBOL vmlinux 0x7315a4e9 twl6030_mmc_card_detect_config +EXPORT_SYMBOL vmlinux 0x733c3b54 kasprintf +EXPORT_SYMBOL vmlinux 0x7362a8b5 inet_addr_type +EXPORT_SYMBOL vmlinux 0x736b3b1f flow_cache_fini +EXPORT_SYMBOL vmlinux 0x7396fc7a DWC_WAITQ_ALLOC +EXPORT_SYMBOL vmlinux 0x73a1575b __sg_page_iter_start +EXPORT_SYMBOL vmlinux 0x73a891a5 bitmap_endwrite +EXPORT_SYMBOL vmlinux 0x73ae0f6e of_device_is_available +EXPORT_SYMBOL vmlinux 0x73be3770 vchi_service_use +EXPORT_SYMBOL vmlinux 0x73c3c317 ipv6_dev_get_saddr +EXPORT_SYMBOL vmlinux 0x73e20c1c strlcpy +EXPORT_SYMBOL vmlinux 0x73f36677 blk_start_queue +EXPORT_SYMBOL vmlinux 0x7400e7ca netif_set_xps_queue +EXPORT_SYMBOL vmlinux 0x7410aba2 strreplace +EXPORT_SYMBOL vmlinux 0x743ed3c1 netif_device_attach +EXPORT_SYMBOL vmlinux 0x746c166a __skb_checksum +EXPORT_SYMBOL vmlinux 0x747195f0 hdmi_vendor_infoframe_init +EXPORT_SYMBOL vmlinux 0x7485e15e unregister_chrdev_region +EXPORT_SYMBOL vmlinux 0x7495cf4f param_ops_invbool +EXPORT_SYMBOL vmlinux 0x74c134b9 __sw_hweight32 +EXPORT_SYMBOL vmlinux 0x74e5ff1a udpv6_encap_enable +EXPORT_SYMBOL vmlinux 0x74e63465 kernel_getsockname +EXPORT_SYMBOL vmlinux 0x74ed88b5 DWC_WORKQ_SCHEDULE +EXPORT_SYMBOL vmlinux 0x7505bdef memchr_inv +EXPORT_SYMBOL vmlinux 0x75124b70 uart_add_one_port +EXPORT_SYMBOL vmlinux 0x754f8fb4 mmc_request_done +EXPORT_SYMBOL vmlinux 0x755f88f1 linkwatch_fire_event +EXPORT_SYMBOL vmlinux 0x7561b9df dev_get_nest_level +EXPORT_SYMBOL vmlinux 0x7567d381 __get_fiq_regs +EXPORT_SYMBOL vmlinux 0x757bc86c blk_mq_run_hw_queues +EXPORT_SYMBOL vmlinux 0x75878146 inode_get_bytes +EXPORT_SYMBOL vmlinux 0x758d3423 mmc_can_secure_erase_trim +EXPORT_SYMBOL vmlinux 0x7593d385 div64_s64 +EXPORT_SYMBOL vmlinux 0x75a445d8 set_security_override_from_ctx +EXPORT_SYMBOL vmlinux 0x75a4b1d9 security_inode_notifysecctx +EXPORT_SYMBOL vmlinux 0x75bda77a seq_hlist_next +EXPORT_SYMBOL vmlinux 0x75bdea12 iommu_area_alloc +EXPORT_SYMBOL vmlinux 0x760a0f4f yield +EXPORT_SYMBOL vmlinux 0x7610f1d5 __qdisc_calculate_pkt_len +EXPORT_SYMBOL vmlinux 0x763ae65f blk_queue_max_discard_sectors +EXPORT_SYMBOL vmlinux 0x7643bd65 skb_make_writable +EXPORT_SYMBOL vmlinux 0x7647726c handle_sysrq +EXPORT_SYMBOL vmlinux 0x764f5ba7 dev_crit +EXPORT_SYMBOL vmlinux 0x765a9535 of_mdio_parse_addr +EXPORT_SYMBOL vmlinux 0x765aed9c pm860x_set_bits +EXPORT_SYMBOL vmlinux 0x76947b4d netif_napi_add +EXPORT_SYMBOL vmlinux 0x76980ffa get_cached_acl +EXPORT_SYMBOL vmlinux 0x76cf47f6 __aeabi_llsl +EXPORT_SYMBOL vmlinux 0x76d3cd60 laptop_mode +EXPORT_SYMBOL vmlinux 0x76d451c4 add_taint +EXPORT_SYMBOL vmlinux 0x76d9bf11 crc32_be +EXPORT_SYMBOL vmlinux 0x76ef0047 vlan_uses_dev +EXPORT_SYMBOL vmlinux 0x76f6c5ef kmalloc_order +EXPORT_SYMBOL vmlinux 0x76f843c2 snd_card_file_add +EXPORT_SYMBOL vmlinux 0x7702b258 dquot_mark_dquot_dirty +EXPORT_SYMBOL vmlinux 0x771d5e67 ioctl_by_bdev +EXPORT_SYMBOL vmlinux 0x775653b8 scsi_register_interface +EXPORT_SYMBOL vmlinux 0x775f1c1c input_reset_device +EXPORT_SYMBOL vmlinux 0x77722d16 __devm_release_region +EXPORT_SYMBOL vmlinux 0x7789f45a iov_iter_fault_in_multipages_readable +EXPORT_SYMBOL vmlinux 0x778c0d30 vfs_readf +EXPORT_SYMBOL vmlinux 0x7797d802 generic_delete_inode +EXPORT_SYMBOL vmlinux 0x779a18af kstrtoll +EXPORT_SYMBOL vmlinux 0x77b59fda security_dentry_init_security +EXPORT_SYMBOL vmlinux 0x77bc13a0 strim +EXPORT_SYMBOL vmlinux 0x77cfb053 qdisc_class_hash_grow +EXPORT_SYMBOL vmlinux 0x77da8ab8 tcp_mtup_init +EXPORT_SYMBOL vmlinux 0x77e312d6 of_find_i2c_device_by_node +EXPORT_SYMBOL vmlinux 0x780485cf eth_header +EXPORT_SYMBOL vmlinux 0x7810a88b fence_signal_locked +EXPORT_SYMBOL vmlinux 0x781f962d scsi_get_device_flags_keyed +EXPORT_SYMBOL vmlinux 0x782567ec memcg_kmem_enabled_key +EXPORT_SYMBOL vmlinux 0x7828b227 rwsem_downgrade_wake +EXPORT_SYMBOL vmlinux 0x78302e99 snd_ctl_notify +EXPORT_SYMBOL vmlinux 0x783b3563 wake_up_atomic_t +EXPORT_SYMBOL vmlinux 0x78442f97 tag_pages_for_writeback +EXPORT_SYMBOL vmlinux 0x785024df param_get_byte +EXPORT_SYMBOL vmlinux 0x78580636 pps_lookup_dev +EXPORT_SYMBOL vmlinux 0x7864ac3e jbd2_journal_get_write_access +EXPORT_SYMBOL vmlinux 0x78719e83 xfrm_state_delete +EXPORT_SYMBOL vmlinux 0x78779c0b set_fiq_handler +EXPORT_SYMBOL vmlinux 0x7880c781 dm_kcopyd_prepare_callback +EXPORT_SYMBOL vmlinux 0x788fe103 iomem_resource +EXPORT_SYMBOL vmlinux 0x789affb1 frontswap_tmem_exclusive_gets +EXPORT_SYMBOL vmlinux 0x78a7f3d3 scsi_get_host_dev +EXPORT_SYMBOL vmlinux 0x78d545b7 of_phy_connect +EXPORT_SYMBOL vmlinux 0x78fd4e80 dwc_cc_name +EXPORT_SYMBOL vmlinux 0x792cff78 inode_set_bytes +EXPORT_SYMBOL vmlinux 0x79668309 flow_cache_init +EXPORT_SYMBOL vmlinux 0x7967b946 md_integrity_add_rdev +EXPORT_SYMBOL vmlinux 0x7968315c sock_common_getsockopt +EXPORT_SYMBOL vmlinux 0x79698255 t10_pi_type1_ip +EXPORT_SYMBOL vmlinux 0x796fc5ce scsi_get_sense_info_fld +EXPORT_SYMBOL vmlinux 0x797cbd78 seq_path +EXPORT_SYMBOL vmlinux 0x797e1124 mmc_set_blockcount +EXPORT_SYMBOL vmlinux 0x797f7e83 invalidate_bdev +EXPORT_SYMBOL vmlinux 0x7982820b inode_owner_or_capable +EXPORT_SYMBOL vmlinux 0x79a60556 devfreq_monitor_suspend +EXPORT_SYMBOL vmlinux 0x79a64f54 swiotlb_sync_single_for_device +EXPORT_SYMBOL vmlinux 0x79aa04a2 get_random_bytes +EXPORT_SYMBOL vmlinux 0x79b28af6 twl6040_power +EXPORT_SYMBOL vmlinux 0x79c5a9f0 ioremap +EXPORT_SYMBOL vmlinux 0x7a12de6f skb_orphan_partial +EXPORT_SYMBOL vmlinux 0x7a262aff security_path_unlink +EXPORT_SYMBOL vmlinux 0x7a27c184 ewma_init +EXPORT_SYMBOL vmlinux 0x7a303999 of_get_named_gpio_flags +EXPORT_SYMBOL vmlinux 0x7a4497db kzfree +EXPORT_SYMBOL vmlinux 0x7a44ca4e ps2_sendbyte +EXPORT_SYMBOL vmlinux 0x7a78fd29 scsi_register_driver +EXPORT_SYMBOL vmlinux 0x7a881433 tcp_poll +EXPORT_SYMBOL vmlinux 0x7a8ba0b6 tty_port_close_start +EXPORT_SYMBOL vmlinux 0x7a925833 cpufreq_get_global_kobject +EXPORT_SYMBOL vmlinux 0x7a95e5ae do_settimeofday64 +EXPORT_SYMBOL vmlinux 0x7aa1756e kvfree +EXPORT_SYMBOL vmlinux 0x7aab670c vfs_rmdir +EXPORT_SYMBOL vmlinux 0x7aaf2588 amba_device_unregister +EXPORT_SYMBOL vmlinux 0x7ab57cf3 set_user_nice +EXPORT_SYMBOL vmlinux 0x7ab79db7 bio_integrity_clone +EXPORT_SYMBOL vmlinux 0x7ab88a45 system_freezing_cnt +EXPORT_SYMBOL vmlinux 0x7acbb1b0 security_path_symlink +EXPORT_SYMBOL vmlinux 0x7ad050b9 qid_lt +EXPORT_SYMBOL vmlinux 0x7add44b5 posix_acl_valid +EXPORT_SYMBOL vmlinux 0x7ae9ae2f follow_up +EXPORT_SYMBOL vmlinux 0x7af62e6b icmp_send +EXPORT_SYMBOL vmlinux 0x7af7e168 tc6393xb_lcd_mode +EXPORT_SYMBOL vmlinux 0x7afa89fc vsnprintf +EXPORT_SYMBOL vmlinux 0x7afc9d8a unregister_sound_mixer +EXPORT_SYMBOL vmlinux 0x7b096be0 __skb_gro_checksum_complete +EXPORT_SYMBOL vmlinux 0x7b0fcce1 may_umount +EXPORT_SYMBOL vmlinux 0x7b125b54 of_get_next_available_child +EXPORT_SYMBOL vmlinux 0x7b1ade38 lz4_decompress +EXPORT_SYMBOL vmlinux 0x7b1c8ebe jbd2__journal_restart +EXPORT_SYMBOL vmlinux 0x7b1cbf0f ipv6_getsockopt +EXPORT_SYMBOL vmlinux 0x7b283ce3 prandom_bytes_state +EXPORT_SYMBOL vmlinux 0x7b392fa7 put_cmsg +EXPORT_SYMBOL vmlinux 0x7b3fe9e3 capable_wrt_inode_uidgid +EXPORT_SYMBOL vmlinux 0x7b563afe sound_class +EXPORT_SYMBOL vmlinux 0x7b5c8440 vm_munmap +EXPORT_SYMBOL vmlinux 0x7b785d47 bdev_stack_limits +EXPORT_SYMBOL vmlinux 0x7baf2290 padata_stop +EXPORT_SYMBOL vmlinux 0x7bb3ab85 follow_down_one +EXPORT_SYMBOL vmlinux 0x7bc49891 security_inode_permission +EXPORT_SYMBOL vmlinux 0x7bd2e245 scsi_register +EXPORT_SYMBOL vmlinux 0x7c1372e8 panic +EXPORT_SYMBOL vmlinux 0x7c173634 __bitmap_complement +EXPORT_SYMBOL vmlinux 0x7c264abe generic_fillattr +EXPORT_SYMBOL vmlinux 0x7c46233a cpufreq_quick_get +EXPORT_SYMBOL vmlinux 0x7c98845d twl_i2c_read +EXPORT_SYMBOL vmlinux 0x7cb1ae69 cpu_down +EXPORT_SYMBOL vmlinux 0x7cb33888 __test_set_page_writeback +EXPORT_SYMBOL vmlinux 0x7cc035a7 __ucmpdi2 +EXPORT_SYMBOL vmlinux 0x7ce18c9f from_kqid +EXPORT_SYMBOL vmlinux 0x7cf86c4c nla_reserve_nohdr +EXPORT_SYMBOL vmlinux 0x7cf945b1 devm_ioremap +EXPORT_SYMBOL vmlinux 0x7d0db45c jiffies_to_clock_t +EXPORT_SYMBOL vmlinux 0x7d11c268 jiffies +EXPORT_SYMBOL vmlinux 0x7d2ff56a bdget +EXPORT_SYMBOL vmlinux 0x7d4525ad bitmap_cond_end_sync +EXPORT_SYMBOL vmlinux 0x7d58ac2f mmc_of_parse_voltage +EXPORT_SYMBOL vmlinux 0x7d5b6327 snd_pcm_suspend +EXPORT_SYMBOL vmlinux 0x7d6069c0 netdev_all_upper_get_next_dev_rcu +EXPORT_SYMBOL vmlinux 0x7d64847a scsi_mode_sense +EXPORT_SYMBOL vmlinux 0x7d705738 blk_start_plug +EXPORT_SYMBOL vmlinux 0x7d7b2016 of_root +EXPORT_SYMBOL vmlinux 0x7dab940b dcbnl_cee_notify +EXPORT_SYMBOL vmlinux 0x7dcaee1f __seq_open_private +EXPORT_SYMBOL vmlinux 0x7dccc294 proc_doulongvec_minmax +EXPORT_SYMBOL vmlinux 0x7deb7293 dump_align +EXPORT_SYMBOL vmlinux 0x7deff673 dm_consume_args +EXPORT_SYMBOL vmlinux 0x7dfe407f dentry_open +EXPORT_SYMBOL vmlinux 0x7e033f99 tcp_get_md5sig_pool +EXPORT_SYMBOL vmlinux 0x7e05a983 mipi_dsi_dcs_set_pixel_format +EXPORT_SYMBOL vmlinux 0x7e127129 scsi_free_host_dev +EXPORT_SYMBOL vmlinux 0x7e263494 __blk_end_request +EXPORT_SYMBOL vmlinux 0x7e345bfc dquot_set_dqinfo +EXPORT_SYMBOL vmlinux 0x7e68b215 abx500_startup_irq_enabled +EXPORT_SYMBOL vmlinux 0x7e6fa3ef tcf_hash_new_index +EXPORT_SYMBOL vmlinux 0x7e8fc3ce security_sb_clone_mnt_opts +EXPORT_SYMBOL vmlinux 0x7e9777d1 snd_pcm_lib_preallocate_pages_for_all +EXPORT_SYMBOL vmlinux 0x7e9efe8e complete_and_exit +EXPORT_SYMBOL vmlinux 0x7ebcf663 dwc_notify +EXPORT_SYMBOL vmlinux 0x7ebd1694 remove_arg_zero +EXPORT_SYMBOL vmlinux 0x7ecb3bb2 netdev_update_features +EXPORT_SYMBOL vmlinux 0x7ee6d93a nsecs_to_jiffies64 +EXPORT_SYMBOL vmlinux 0x7ee73c0c memcg_socket_limit_enabled +EXPORT_SYMBOL vmlinux 0x7eead1b4 devm_get_gpiod_from_child +EXPORT_SYMBOL vmlinux 0x7efe4674 mipi_dsi_dcs_set_tear_on +EXPORT_SYMBOL vmlinux 0x7f02188f __msecs_to_jiffies +EXPORT_SYMBOL vmlinux 0x7f030689 register_console +EXPORT_SYMBOL vmlinux 0x7f152bf7 csum_and_copy_to_iter +EXPORT_SYMBOL vmlinux 0x7f24de73 jiffies_to_usecs +EXPORT_SYMBOL vmlinux 0x7f3aeed5 nf_log_trace +EXPORT_SYMBOL vmlinux 0x7f531120 dev_vprintk_emit +EXPORT_SYMBOL vmlinux 0x7f606f28 xfrm6_input_addr +EXPORT_SYMBOL vmlinux 0x7f62a045 cpu_maps_update_done +EXPORT_SYMBOL vmlinux 0x7f63b31e _memcpy_toio +EXPORT_SYMBOL vmlinux 0x7f668968 page_put_link +EXPORT_SYMBOL vmlinux 0x7f6dc213 mipi_dsi_dcs_get_pixel_format +EXPORT_SYMBOL vmlinux 0x7f7761fa key_reject_and_link +EXPORT_SYMBOL vmlinux 0x7f79e2c5 __insert_inode_hash +EXPORT_SYMBOL vmlinux 0x7f95b372 genl_unregister_family +EXPORT_SYMBOL vmlinux 0x7fc3aa2d scsi_device_resume +EXPORT_SYMBOL vmlinux 0x7fc9cf4c always_delete_dentry +EXPORT_SYMBOL vmlinux 0x7fca352f xfrm_policy_destroy +EXPORT_SYMBOL vmlinux 0x7fe0b097 dquot_initialize +EXPORT_SYMBOL vmlinux 0x7fe32873 rb_replace_node +EXPORT_SYMBOL vmlinux 0x7ff0cb66 finish_no_open +EXPORT_SYMBOL vmlinux 0x800e4ffa __muldi3 +EXPORT_SYMBOL vmlinux 0x8015824a netif_carrier_off +EXPORT_SYMBOL vmlinux 0x80305dd4 ll_rw_block +EXPORT_SYMBOL vmlinux 0x8048d800 get_gendisk +EXPORT_SYMBOL vmlinux 0x804aabdf idr_is_empty +EXPORT_SYMBOL vmlinux 0x804cc440 ata_port_printk +EXPORT_SYMBOL vmlinux 0x804eee2d phy_driver_register +EXPORT_SYMBOL vmlinux 0x8056a96c security_inode_getsecctx +EXPORT_SYMBOL vmlinux 0x805f4be8 mii_check_gmii_support +EXPORT_SYMBOL vmlinux 0x806db373 down_read_trylock +EXPORT_SYMBOL vmlinux 0x80707fd9 dev_change_flags +EXPORT_SYMBOL vmlinux 0x80723a6d vlan_vid_del +EXPORT_SYMBOL vmlinux 0x8084b765 blk_mq_map_queue +EXPORT_SYMBOL vmlinux 0x8085f39e blk_complete_request +EXPORT_SYMBOL vmlinux 0x80acb4dc mipi_dsi_host_unregister +EXPORT_SYMBOL vmlinux 0x80ca5026 _bin2bcd +EXPORT_SYMBOL vmlinux 0x80d68d3e fb_register_client +EXPORT_SYMBOL vmlinux 0x80d7c68a DWC_MUTEX_LOCK +EXPORT_SYMBOL vmlinux 0x80e809fa __breadahead +EXPORT_SYMBOL vmlinux 0x80fecb4f ppp_register_compressor +EXPORT_SYMBOL vmlinux 0x81280da4 kernel_recvmsg +EXPORT_SYMBOL vmlinux 0x8133ef2c inode_init_owner +EXPORT_SYMBOL vmlinux 0x8135d04d fb_set_suspend +EXPORT_SYMBOL vmlinux 0x8141ad8f bio_copy_kern +EXPORT_SYMBOL vmlinux 0x814e7730 nf_ct_destroy +EXPORT_SYMBOL vmlinux 0x815b5dd4 match_octal +EXPORT_SYMBOL vmlinux 0x8163dee4 __xfrm_route_forward +EXPORT_SYMBOL vmlinux 0x817f5740 __bread_gfp +EXPORT_SYMBOL vmlinux 0x818a927e param_get_ulong +EXPORT_SYMBOL vmlinux 0x818f04c1 sdev_enable_disk_events +EXPORT_SYMBOL vmlinux 0x81a0962c block_write_full_page +EXPORT_SYMBOL vmlinux 0x81b69e41 snd_ctl_enum_info +EXPORT_SYMBOL vmlinux 0x81d288df i2c_smbus_write_i2c_block_data +EXPORT_SYMBOL vmlinux 0x81db6ebb xz_dec_reset +EXPORT_SYMBOL vmlinux 0x81dd9939 vfs_write +EXPORT_SYMBOL vmlinux 0x81e0f313 DWC_CPU_TO_LE16 +EXPORT_SYMBOL vmlinux 0x82072614 tasklet_kill +EXPORT_SYMBOL vmlinux 0x8213acb4 __scsi_device_lookup_by_target +EXPORT_SYMBOL vmlinux 0x82256a9f elv_rb_del +EXPORT_SYMBOL vmlinux 0x8228feb0 __vfs_read +EXPORT_SYMBOL vmlinux 0x822c1ebe set_groups +EXPORT_SYMBOL vmlinux 0x8232ff64 netif_device_detach +EXPORT_SYMBOL vmlinux 0x82450bcb init_special_inode +EXPORT_SYMBOL vmlinux 0x824a4367 tmio_core_mmc_pwr +EXPORT_SYMBOL vmlinux 0x8254e23c uart_match_port +EXPORT_SYMBOL vmlinux 0x82701365 int_to_scsilun +EXPORT_SYMBOL vmlinux 0x82757a05 mii_nway_restart +EXPORT_SYMBOL vmlinux 0x828062b1 __frontswap_init +EXPORT_SYMBOL vmlinux 0x82871b60 dmt_modes +EXPORT_SYMBOL vmlinux 0x82998716 nf_register_queue_handler +EXPORT_SYMBOL vmlinux 0x829d171f tcf_em_unregister +EXPORT_SYMBOL vmlinux 0x82acfb70 blk_iopoll_sched +EXPORT_SYMBOL vmlinux 0x82ae5d76 netlink_broadcast_filtered +EXPORT_SYMBOL vmlinux 0x82da87eb tty_port_put +EXPORT_SYMBOL vmlinux 0x82dafca5 __sk_dst_check +EXPORT_SYMBOL vmlinux 0x8304733a blk_set_stacking_limits +EXPORT_SYMBOL vmlinux 0x831396c3 fence_signal +EXPORT_SYMBOL vmlinux 0x8320bea8 __umodsi3 +EXPORT_SYMBOL vmlinux 0x8328867b blk_rq_map_user_iov +EXPORT_SYMBOL vmlinux 0x833e92f5 remove_proc_subtree +EXPORT_SYMBOL vmlinux 0x8356260a of_mm_gpiochip_add +EXPORT_SYMBOL vmlinux 0x835bead6 jbd2_trans_will_send_data_barrier +EXPORT_SYMBOL vmlinux 0x83634bba generic_pipe_buf_release +EXPORT_SYMBOL vmlinux 0x8372cd2f __gnet_stats_copy_basic +EXPORT_SYMBOL vmlinux 0x8375d79d ida_destroy +EXPORT_SYMBOL vmlinux 0x8381ce1c init_net +EXPORT_SYMBOL vmlinux 0x838460ff __set_page_dirty_nobuffers +EXPORT_SYMBOL vmlinux 0x838b4bed generic_file_fsync +EXPORT_SYMBOL vmlinux 0x839430b2 __register_cpu_notifier +EXPORT_SYMBOL vmlinux 0x8394700e tcf_exts_validate +EXPORT_SYMBOL vmlinux 0x839cbefa xfrm_state_lookup_byspi +EXPORT_SYMBOL vmlinux 0x83b009ea xfrm_state_walk_init +EXPORT_SYMBOL vmlinux 0x83b192ef vchi_disconnect +EXPORT_SYMBOL vmlinux 0x83bc7e10 kern_unmount +EXPORT_SYMBOL vmlinux 0x83c52fba xfrm4_protocol_init +EXPORT_SYMBOL vmlinux 0x83d6b053 serial8250_do_set_termios +EXPORT_SYMBOL vmlinux 0x83dd0562 bdev_read_only +EXPORT_SYMBOL vmlinux 0x83e8fe6f tcp_v4_md5_lookup +EXPORT_SYMBOL vmlinux 0x84159cbc bioset_integrity_free +EXPORT_SYMBOL vmlinux 0x842f3327 put_page +EXPORT_SYMBOL vmlinux 0x84371267 sync_filesystem +EXPORT_SYMBOL vmlinux 0x843c71c3 blk_end_request_all +EXPORT_SYMBOL vmlinux 0x843fa00e __mutex_init +EXPORT_SYMBOL vmlinux 0x84494040 posix_lock_file +EXPORT_SYMBOL vmlinux 0x84aa5d25 nf_afinfo +EXPORT_SYMBOL vmlinux 0x84b183ae strncmp +EXPORT_SYMBOL vmlinux 0x84de34ae xfrm_sad_getinfo +EXPORT_SYMBOL vmlinux 0x84ef1423 scsi_execute_req_flags +EXPORT_SYMBOL vmlinux 0x84ffea8b idr_preload +EXPORT_SYMBOL vmlinux 0x850327a5 md_write_end +EXPORT_SYMBOL vmlinux 0x850f05db __blk_end_request_all +EXPORT_SYMBOL vmlinux 0x85633009 kill_fasync +EXPORT_SYMBOL vmlinux 0x85670f1d rtnl_is_locked +EXPORT_SYMBOL vmlinux 0x856e143a cros_ec_cmd_xfer +EXPORT_SYMBOL vmlinux 0x85718d56 copy_from_iter +EXPORT_SYMBOL vmlinux 0x85830386 skb_ensure_writable +EXPORT_SYMBOL vmlinux 0x858a9364 cdev_init +EXPORT_SYMBOL vmlinux 0x8594c8a0 inet_add_offload +EXPORT_SYMBOL vmlinux 0x8596a9ae kill_block_super +EXPORT_SYMBOL vmlinux 0x85b5e625 rfkill_set_states +EXPORT_SYMBOL vmlinux 0x85c4df1e new_inode +EXPORT_SYMBOL vmlinux 0x85c6c3a9 invalidate_partition +EXPORT_SYMBOL vmlinux 0x85c6f5e8 dev_get_flags +EXPORT_SYMBOL vmlinux 0x85cfcddc posix_unblock_lock +EXPORT_SYMBOL vmlinux 0x85d3a81d km_policy_expired +EXPORT_SYMBOL vmlinux 0x85df9b6c strsep +EXPORT_SYMBOL vmlinux 0x85e2cceb ip_defrag +EXPORT_SYMBOL vmlinux 0x85efc7e0 zero_pfn +EXPORT_SYMBOL vmlinux 0x8613c3ed dev_graft_qdisc +EXPORT_SYMBOL vmlinux 0x861962f8 scsi_change_queue_depth +EXPORT_SYMBOL vmlinux 0x86324347 dev_remove_offload +EXPORT_SYMBOL vmlinux 0x8642fcbc splice_direct_to_actor +EXPORT_SYMBOL vmlinux 0x865029ac __hw_addr_sync +EXPORT_SYMBOL vmlinux 0x8654fc52 phy_ethtool_sset +EXPORT_SYMBOL vmlinux 0x8664f62e cpufreq_update_policy +EXPORT_SYMBOL vmlinux 0x86864d2b nf_log_unset +EXPORT_SYMBOL vmlinux 0x8686c0e8 __xfrm_policy_check +EXPORT_SYMBOL vmlinux 0x8686d231 nonseekable_open +EXPORT_SYMBOL vmlinux 0x868acba5 get_options +EXPORT_SYMBOL vmlinux 0x86980ffa devm_ioremap_resource +EXPORT_SYMBOL vmlinux 0x869eeb83 dev_alert +EXPORT_SYMBOL vmlinux 0x86a4889a kmalloc_order_trace +EXPORT_SYMBOL vmlinux 0x86a4b83a tty_check_change +EXPORT_SYMBOL vmlinux 0x86af9843 ip_route_me_harder +EXPORT_SYMBOL vmlinux 0x86c25562 param_ops_byte +EXPORT_SYMBOL vmlinux 0x86d61819 __blk_run_queue +EXPORT_SYMBOL vmlinux 0x86fb9b05 bitmap_parse_user +EXPORT_SYMBOL vmlinux 0x87003790 fence_init +EXPORT_SYMBOL vmlinux 0x870ad45f iov_iter_single_seg_count +EXPORT_SYMBOL vmlinux 0x87179188 ata_print_version +EXPORT_SYMBOL vmlinux 0x871c0a7e fiemap_check_flags +EXPORT_SYMBOL vmlinux 0x871f9c5a xfrm_state_delete_tunnel +EXPORT_SYMBOL vmlinux 0x872dc2f6 ip_do_fragment +EXPORT_SYMBOL vmlinux 0x874493e8 twl6040_set_pll +EXPORT_SYMBOL vmlinux 0x87706184 mdiobus_scan +EXPORT_SYMBOL vmlinux 0x877c20f7 kernel_sock_ioctl +EXPORT_SYMBOL vmlinux 0x877c2e88 skb_pull +EXPORT_SYMBOL vmlinux 0x878ab3ce sysctl_tcp_adv_win_scale +EXPORT_SYMBOL vmlinux 0x878b8ff9 scm_detach_fds +EXPORT_SYMBOL vmlinux 0x8798e453 __tracepoint_kfree +EXPORT_SYMBOL vmlinux 0x87b650f8 request_key +EXPORT_SYMBOL vmlinux 0x87c202f7 blk_alloc_queue_node +EXPORT_SYMBOL vmlinux 0x87cc294b xfrm_policy_unregister_afinfo +EXPORT_SYMBOL vmlinux 0x87de78a0 dwc_cc_change +EXPORT_SYMBOL vmlinux 0x87e3c3c1 inet_release +EXPORT_SYMBOL vmlinux 0x87e9978e try_to_free_buffers +EXPORT_SYMBOL vmlinux 0x87ee6981 bitmap_end_sync +EXPORT_SYMBOL vmlinux 0x87f8ac34 pipe_unlock +EXPORT_SYMBOL vmlinux 0x8803d072 ppp_output_wakeup +EXPORT_SYMBOL vmlinux 0x88058f90 get_io_context +EXPORT_SYMBOL vmlinux 0x8814e324 udp_set_csum +EXPORT_SYMBOL vmlinux 0x881a0598 blk_mq_alloc_request +EXPORT_SYMBOL vmlinux 0x88355878 simple_lookup +EXPORT_SYMBOL vmlinux 0x88463474 blkdev_issue_write_same +EXPORT_SYMBOL vmlinux 0x8846cc72 xfrm_policy_alloc +EXPORT_SYMBOL vmlinux 0x8859f623 bio_split +EXPORT_SYMBOL vmlinux 0x8868e141 rtnl_unicast +EXPORT_SYMBOL vmlinux 0x886bc76f mempool_resize +EXPORT_SYMBOL vmlinux 0x88992d3d dcache_dir_close +EXPORT_SYMBOL vmlinux 0x88ac8606 padata_alloc_possible +EXPORT_SYMBOL vmlinux 0x88b15d41 vlan_vids_add_by_dev +EXPORT_SYMBOL vmlinux 0x88b19f45 system_serial +EXPORT_SYMBOL vmlinux 0x88bbd843 inode_init_once +EXPORT_SYMBOL vmlinux 0x88d4156f dev_uc_flush +EXPORT_SYMBOL vmlinux 0x88d828af igrab +EXPORT_SYMBOL vmlinux 0x88db5b7e scsi_cmd_blk_ioctl +EXPORT_SYMBOL vmlinux 0x88ed08b2 tty_port_block_til_ready +EXPORT_SYMBOL vmlinux 0x88f53542 tcp_rcv_state_process +EXPORT_SYMBOL vmlinux 0x88f6a304 __DWC_FREE +EXPORT_SYMBOL vmlinux 0x89089fd9 qdisc_tree_decrease_qlen +EXPORT_SYMBOL vmlinux 0x891635f0 tty_unregister_driver +EXPORT_SYMBOL vmlinux 0x891887b0 balance_dirty_pages_ratelimited +EXPORT_SYMBOL vmlinux 0x89358719 tcf_hash_cleanup +EXPORT_SYMBOL vmlinux 0x8942562d kernel_accept +EXPORT_SYMBOL vmlinux 0x8953f8ff __tracepoint_kmem_cache_alloc +EXPORT_SYMBOL vmlinux 0x8958404b vchiq_open_service +EXPORT_SYMBOL vmlinux 0x8960c5b9 bio_chain +EXPORT_SYMBOL vmlinux 0x8962e463 blk_queue_start_tag +EXPORT_SYMBOL vmlinux 0x899bf559 xfrm_init_replay +EXPORT_SYMBOL vmlinux 0x899d5935 of_find_node_by_phandle +EXPORT_SYMBOL vmlinux 0x89d5538d fb_pad_aligned_buffer +EXPORT_SYMBOL vmlinux 0x89fe66e3 fifo_set_limit +EXPORT_SYMBOL vmlinux 0x89ffd1e6 netdev_lower_dev_get_private +EXPORT_SYMBOL vmlinux 0x8a0f4230 rename_lock +EXPORT_SYMBOL vmlinux 0x8a153b08 kernel_setsockopt +EXPORT_SYMBOL vmlinux 0x8a17b098 ip_generic_getfrag +EXPORT_SYMBOL vmlinux 0x8a1ab4ee timeval_to_jiffies +EXPORT_SYMBOL vmlinux 0x8a1b82c7 address_space_init_once +EXPORT_SYMBOL vmlinux 0x8a1c5455 blk_stack_limits +EXPORT_SYMBOL vmlinux 0x8a490c90 rfkill_set_sw_state +EXPORT_SYMBOL vmlinux 0x8a4fa83b __aeabi_llsr +EXPORT_SYMBOL vmlinux 0x8a51d565 quota_send_warning +EXPORT_SYMBOL vmlinux 0x8a7d1c31 high_memory +EXPORT_SYMBOL vmlinux 0x8a815da5 tcf_hash_check +EXPORT_SYMBOL vmlinux 0x8a884b23 udp_lib_get_port +EXPORT_SYMBOL vmlinux 0x8a934892 ioc_lookup_icq +EXPORT_SYMBOL vmlinux 0x8a99a016 mempool_free_slab +EXPORT_SYMBOL vmlinux 0x8aa437b3 vm_insert_pfn +EXPORT_SYMBOL vmlinux 0x8ab9c2ab set_bh_page +EXPORT_SYMBOL vmlinux 0x8af7e6c0 qdisc_watchdog_cancel +EXPORT_SYMBOL vmlinux 0x8b037d0d param_get_short +EXPORT_SYMBOL vmlinux 0x8b046f29 drop_nlink +EXPORT_SYMBOL vmlinux 0x8b11ac2b notify_change +EXPORT_SYMBOL vmlinux 0x8b27200e i2c_del_adapter +EXPORT_SYMBOL vmlinux 0x8b41360f poll_freewait +EXPORT_SYMBOL vmlinux 0x8b43159b register_cpu_notifier +EXPORT_SYMBOL vmlinux 0x8b467aeb xfrm_prepare_input +EXPORT_SYMBOL vmlinux 0x8b618d08 overflowuid +EXPORT_SYMBOL vmlinux 0x8b6fc2d1 jbd2_journal_invalidatepage +EXPORT_SYMBOL vmlinux 0x8b715a83 snd_pcm_hw_constraint_list +EXPORT_SYMBOL vmlinux 0x8b746a79 xfrm_spd_getinfo +EXPORT_SYMBOL vmlinux 0x8b8059bd in_group_p +EXPORT_SYMBOL vmlinux 0x8b932c4f dev_trans_start +EXPORT_SYMBOL vmlinux 0x8ba62cae __alloc_pages_nodemask +EXPORT_SYMBOL vmlinux 0x8ba78fd0 netif_napi_del +EXPORT_SYMBOL vmlinux 0x8ba8a127 mmc_hw_reset +EXPORT_SYMBOL vmlinux 0x8be24a80 find_get_pages_tag +EXPORT_SYMBOL vmlinux 0x8c054ee0 uart_get_baud_rate +EXPORT_SYMBOL vmlinux 0x8c2c7773 nand_scan_ident +EXPORT_SYMBOL vmlinux 0x8c4feb39 jbd2_log_start_commit +EXPORT_SYMBOL vmlinux 0x8c5230b8 submit_bio +EXPORT_SYMBOL vmlinux 0x8c637d43 irq_cpu_rmap_add +EXPORT_SYMBOL vmlinux 0x8c804665 nf_getsockopt +EXPORT_SYMBOL vmlinux 0x8c80d226 __hw_addr_unsync_dev +EXPORT_SYMBOL vmlinux 0x8c83aa2d snd_jack_report +EXPORT_SYMBOL vmlinux 0x8c9b6861 twl6040_get_vibralr_status +EXPORT_SYMBOL vmlinux 0x8c9c3a06 netif_schedule_queue +EXPORT_SYMBOL vmlinux 0x8c9ff7c8 ipv6_mc_check_mld +EXPORT_SYMBOL vmlinux 0x8ca6a9de inode_needs_sync +EXPORT_SYMBOL vmlinux 0x8ca6aab0 d_move +EXPORT_SYMBOL vmlinux 0x8ce33185 vfs_statfs +EXPORT_SYMBOL vmlinux 0x8cefbeec phy_device_register +EXPORT_SYMBOL vmlinux 0x8cfcf75c nand_flash_ids +EXPORT_SYMBOL vmlinux 0x8d134c39 idr_replace +EXPORT_SYMBOL vmlinux 0x8d23a41e register_mtd_chip_driver +EXPORT_SYMBOL vmlinux 0x8d282f1c cdrom_check_events +EXPORT_SYMBOL vmlinux 0x8d3d6a78 ipv4_specific +EXPORT_SYMBOL vmlinux 0x8d551bef sysctl_tcp_rmem +EXPORT_SYMBOL vmlinux 0x8d55bb8a qid_eq +EXPORT_SYMBOL vmlinux 0x8d6b2ce1 radix_tree_delete_item +EXPORT_SYMBOL vmlinux 0x8d6f81b4 __div64_32 +EXPORT_SYMBOL vmlinux 0x8d72495b __getnstimeofday64 +EXPORT_SYMBOL vmlinux 0x8d73278e hex_asc_upper +EXPORT_SYMBOL vmlinux 0x8d85dca3 dma_sync_wait +EXPORT_SYMBOL vmlinux 0x8d8b6353 proc_dointvec_userhz_jiffies +EXPORT_SYMBOL vmlinux 0x8d9d67d3 tcp_proc_register +EXPORT_SYMBOL vmlinux 0x8dafe675 kernel_bind +EXPORT_SYMBOL vmlinux 0x8db947b8 of_get_property +EXPORT_SYMBOL vmlinux 0x8dc70165 __sg_free_table +EXPORT_SYMBOL vmlinux 0x8dcff6e2 __pv_offset +EXPORT_SYMBOL vmlinux 0x8dd807b3 tcp_connect +EXPORT_SYMBOL vmlinux 0x8df3789f snd_oss_info_register +EXPORT_SYMBOL vmlinux 0x8e0d66f4 __tracepoint_kmalloc +EXPORT_SYMBOL vmlinux 0x8e463926 truncate_inode_pages_range +EXPORT_SYMBOL vmlinux 0x8e4f1884 __ww_mutex_lock_interruptible +EXPORT_SYMBOL vmlinux 0x8e615253 ps2_init +EXPORT_SYMBOL vmlinux 0x8e7a32b8 __genl_register_family +EXPORT_SYMBOL vmlinux 0x8e865d3c arm_delay_ops +EXPORT_SYMBOL vmlinux 0x8e8afc7b from_kuid_munged +EXPORT_SYMBOL vmlinux 0x8e8b204d padata_free +EXPORT_SYMBOL vmlinux 0x8ea1e203 mmc_power_restore_host +EXPORT_SYMBOL vmlinux 0x8eaaeab3 km_report +EXPORT_SYMBOL vmlinux 0x8eb0d9e4 snd_pcm_set_sync +EXPORT_SYMBOL vmlinux 0x8eca9682 mdiobus_free +EXPORT_SYMBOL vmlinux 0x8ede54ba mmc_erase_group_aligned +EXPORT_SYMBOL vmlinux 0x8eed8f5e skb_copy_and_csum_datagram_msg +EXPORT_SYMBOL vmlinux 0x8f016447 blk_integrity_compare +EXPORT_SYMBOL vmlinux 0x8f1f4f66 register_sound_special +EXPORT_SYMBOL vmlinux 0x8f2bd955 phy_register_fixup +EXPORT_SYMBOL vmlinux 0x8f595b11 snd_major +EXPORT_SYMBOL vmlinux 0x8f678b07 __stack_chk_guard +EXPORT_SYMBOL vmlinux 0x8f84e940 mutex_lock_interruptible +EXPORT_SYMBOL vmlinux 0x8f99ba5b scsi_eh_prep_cmnd +EXPORT_SYMBOL vmlinux 0x8fc8db13 posix_lock_inode_wait +EXPORT_SYMBOL vmlinux 0x8fd180e7 kernel_neon_begin +EXPORT_SYMBOL vmlinux 0x8fd5fea4 i2c_smbus_write_word_data +EXPORT_SYMBOL vmlinux 0x8fe2e6ee ipv6_chk_prefix +EXPORT_SYMBOL vmlinux 0x8fe61ea7 inet_get_local_port_range +EXPORT_SYMBOL vmlinux 0x8ffdb3b8 crc16 +EXPORT_SYMBOL vmlinux 0x900e71b7 alloc_anon_inode +EXPORT_SYMBOL vmlinux 0x9024fc98 snd_ctl_unregister_ioctl +EXPORT_SYMBOL vmlinux 0x902ea262 netpoll_setup +EXPORT_SYMBOL vmlinux 0x9050168b snd_timer_interrupt +EXPORT_SYMBOL vmlinux 0x90505ad9 netdev_notify_peers +EXPORT_SYMBOL vmlinux 0x905bba18 vm_event_states +EXPORT_SYMBOL vmlinux 0x9064ddc7 security_path_mkdir +EXPORT_SYMBOL vmlinux 0x90a6ea80 DWC_IN_BH +EXPORT_SYMBOL vmlinux 0x90a70168 __blockdev_direct_IO +EXPORT_SYMBOL vmlinux 0x90aab829 vm_insert_page +EXPORT_SYMBOL vmlinux 0x90ab7e5b file_remove_privs +EXPORT_SYMBOL vmlinux 0x90c5e819 kstrtoll_from_user +EXPORT_SYMBOL vmlinux 0x90cc6e99 abx500_event_registers_startup_state_get +EXPORT_SYMBOL vmlinux 0x90fabe02 dma_release_declared_memory +EXPORT_SYMBOL vmlinux 0x910db295 input_register_handler +EXPORT_SYMBOL vmlinux 0x91463b1d kstrtos16 +EXPORT_SYMBOL vmlinux 0x914bded3 mount_nodev +EXPORT_SYMBOL vmlinux 0x91621d6a allocate_resource +EXPORT_SYMBOL vmlinux 0x9162da77 have_submounts +EXPORT_SYMBOL vmlinux 0x91715312 sprintf +EXPORT_SYMBOL vmlinux 0x918f925c __napi_schedule +EXPORT_SYMBOL vmlinux 0x919029aa __readwrite_bug +EXPORT_SYMBOL vmlinux 0x91a9542e dev_set_group +EXPORT_SYMBOL vmlinux 0x91d93567 blk_rq_count_integrity_sg +EXPORT_SYMBOL vmlinux 0x921b5eda dev_mc_add_global +EXPORT_SYMBOL vmlinux 0x9229839b generic_mii_ioctl +EXPORT_SYMBOL vmlinux 0x92305dd8 jbd2_journal_init_jbd_inode +EXPORT_SYMBOL vmlinux 0x923b1276 dmaengine_get +EXPORT_SYMBOL vmlinux 0x924f25e5 __DWC_DMA_ALLOC_ATOMIC +EXPORT_SYMBOL vmlinux 0x9254fda1 blk_queue_io_opt +EXPORT_SYMBOL vmlinux 0x925a1dac dcache_readdir +EXPORT_SYMBOL vmlinux 0x9271e91f vfs_iter_read +EXPORT_SYMBOL vmlinux 0x927c090b arp_xmit +EXPORT_SYMBOL vmlinux 0x92921559 param_get_long +EXPORT_SYMBOL vmlinux 0x92a09bfe d_obtain_alias +EXPORT_SYMBOL vmlinux 0x92a9c60c time_to_tm +EXPORT_SYMBOL vmlinux 0x92c9b032 soft_cursor +EXPORT_SYMBOL vmlinux 0x92d6fbd0 tcp_syn_ack_timeout +EXPORT_SYMBOL vmlinux 0x92e4d2fe flow_hash_from_keys +EXPORT_SYMBOL vmlinux 0x92f8155f tcp_enter_memory_pressure +EXPORT_SYMBOL vmlinux 0x9305f8e6 cpufreq_get +EXPORT_SYMBOL vmlinux 0x9315f144 setup_arg_pages +EXPORT_SYMBOL vmlinux 0x931d0ba4 kmem_cache_alloc_trace +EXPORT_SYMBOL vmlinux 0x93215e1d __kfifo_skip_r +EXPORT_SYMBOL vmlinux 0x93276b3f dev_mc_unsync +EXPORT_SYMBOL vmlinux 0x932b9ca1 vchiq_queue_bulk_transmit +EXPORT_SYMBOL vmlinux 0x93445060 clk_get +EXPORT_SYMBOL vmlinux 0x934bdfc0 dquot_resume +EXPORT_SYMBOL vmlinux 0x934d5e99 snd_pcm_lib_ioctl +EXPORT_SYMBOL vmlinux 0x935d928c snd_pcm_new +EXPORT_SYMBOL vmlinux 0x937733e3 qid_valid +EXPORT_SYMBOL vmlinux 0x937a616d misc_register +EXPORT_SYMBOL vmlinux 0x938541de cdrom_mode_select +EXPORT_SYMBOL vmlinux 0x938eb495 dm_io +EXPORT_SYMBOL vmlinux 0x939a500d PDE_DATA +EXPORT_SYMBOL vmlinux 0x93ac3c42 __devm_gpiod_get_index_optional +EXPORT_SYMBOL vmlinux 0x93aec37d uart_update_timeout +EXPORT_SYMBOL vmlinux 0x93b3fc74 register_dcbevent_notifier +EXPORT_SYMBOL vmlinux 0x93b450a3 flush_kernel_dcache_page +EXPORT_SYMBOL vmlinux 0x93b5cd61 genphy_setup_forced +EXPORT_SYMBOL vmlinux 0x93b9213c iov_iter_copy_from_user_atomic +EXPORT_SYMBOL vmlinux 0x93d154e3 rtnl_create_link +EXPORT_SYMBOL vmlinux 0x93d452a6 xfrm_input_register_afinfo +EXPORT_SYMBOL vmlinux 0x93d95a00 simple_symlink_inode_operations +EXPORT_SYMBOL vmlinux 0x93df21bf skb_copy_datagram_from_iter +EXPORT_SYMBOL vmlinux 0x93e5354c tcp_prot +EXPORT_SYMBOL vmlinux 0x93fca811 __get_free_pages +EXPORT_SYMBOL vmlinux 0x93fe5bb5 dwc_cc_data_for_save +EXPORT_SYMBOL vmlinux 0x9402a6a5 scsilun_to_int +EXPORT_SYMBOL vmlinux 0x94032b51 hdmi_infoframe_log +EXPORT_SYMBOL vmlinux 0x94098ff8 snd_interval_list +EXPORT_SYMBOL vmlinux 0x940b25dd update_devfreq +EXPORT_SYMBOL vmlinux 0x940f9cf6 kblockd_schedule_delayed_work +EXPORT_SYMBOL vmlinux 0x94226848 kmem_cache_alloc +EXPORT_SYMBOL vmlinux 0x943e20e8 scsi_add_device +EXPORT_SYMBOL vmlinux 0x944139bc __find_get_block +EXPORT_SYMBOL vmlinux 0x94535fd6 vchiq_bulk_transmit +EXPORT_SYMBOL vmlinux 0x946cfdac inetdev_by_index +EXPORT_SYMBOL vmlinux 0x947977a0 genphy_resume +EXPORT_SYMBOL vmlinux 0x948663f6 of_find_device_by_node +EXPORT_SYMBOL vmlinux 0x94951099 vfs_getattr +EXPORT_SYMBOL vmlinux 0x94961283 vunmap +EXPORT_SYMBOL vmlinux 0x94a40d75 bio_phys_segments +EXPORT_SYMBOL vmlinux 0x94a9e2bd elv_rb_latter_request +EXPORT_SYMBOL vmlinux 0x94b2fdfd blk_alloc_queue +EXPORT_SYMBOL vmlinux 0x94b3074b param_ops_bint +EXPORT_SYMBOL vmlinux 0x94c8aca3 tcp_proto_cgroup +EXPORT_SYMBOL vmlinux 0x94d10bb5 n_tty_ioctl_helper +EXPORT_SYMBOL vmlinux 0x94d3da68 rtc_lock +EXPORT_SYMBOL vmlinux 0x94eea794 getnstimeofday64 +EXPORT_SYMBOL vmlinux 0x94f029cf i2c_smbus_write_block_data +EXPORT_SYMBOL vmlinux 0x95263f08 kernel_getsockopt +EXPORT_SYMBOL vmlinux 0x9545af6d tasklet_init +EXPORT_SYMBOL vmlinux 0x95622f41 down_timeout +EXPORT_SYMBOL vmlinux 0x956d2dbd serial8250_register_8250_port +EXPORT_SYMBOL vmlinux 0x956ed646 dev_addr_init +EXPORT_SYMBOL vmlinux 0x95ae6a82 block_is_partially_uptodate +EXPORT_SYMBOL vmlinux 0x95dbe078 __get_user_2 +EXPORT_SYMBOL vmlinux 0x95e4a931 sock_no_listen +EXPORT_SYMBOL vmlinux 0x95ec69e9 iov_iter_bvec +EXPORT_SYMBOL vmlinux 0x960dfaf5 radix_tree_tag_get +EXPORT_SYMBOL vmlinux 0x96235ee2 inet_frag_maybe_warn_overflow +EXPORT_SYMBOL vmlinux 0x962ee244 d_alloc_pseudo +EXPORT_SYMBOL vmlinux 0x963430f4 input_flush_device +EXPORT_SYMBOL vmlinux 0x9638b865 snd_info_create_card_entry +EXPORT_SYMBOL vmlinux 0x9639e7de generic_removexattr +EXPORT_SYMBOL vmlinux 0x96573b80 __kfifo_dma_in_finish_r +EXPORT_SYMBOL vmlinux 0x96590a57 tcp_v4_mtu_reduced +EXPORT_SYMBOL vmlinux 0x965d7efd crypto_sha512_finup +EXPORT_SYMBOL vmlinux 0x966d1a72 inet_del_offload +EXPORT_SYMBOL vmlinux 0x96757d70 DWC_SPINUNLOCK +EXPORT_SYMBOL vmlinux 0x96898769 sysfs_format_mac +EXPORT_SYMBOL vmlinux 0x96cd2b04 scsi_sense_key_string +EXPORT_SYMBOL vmlinux 0x96db95f5 in_dev_finish_destroy +EXPORT_SYMBOL vmlinux 0x96dce98c resource_list_create_entry +EXPORT_SYMBOL vmlinux 0x96ff7a9a kmem_cache_free +EXPORT_SYMBOL vmlinux 0x9705d079 __block_page_mkwrite +EXPORT_SYMBOL vmlinux 0x970ca38f of_match_node +EXPORT_SYMBOL vmlinux 0x97123b23 __scsi_add_device +EXPORT_SYMBOL vmlinux 0x97255bdf strlen +EXPORT_SYMBOL vmlinux 0x9739e572 d_invalidate +EXPORT_SYMBOL vmlinux 0x974501cf vchi_msg_hold +EXPORT_SYMBOL vmlinux 0x9754ec10 radix_tree_preload +EXPORT_SYMBOL vmlinux 0x976e700f down_trylock +EXPORT_SYMBOL vmlinux 0x97716bcf serial8250_set_isa_configurator +EXPORT_SYMBOL vmlinux 0x97930c10 swiotlb_dma_mapping_error +EXPORT_SYMBOL vmlinux 0x97993132 tcp_rcv_established +EXPORT_SYMBOL vmlinux 0x97999817 rfkill_set_hw_state +EXPORT_SYMBOL vmlinux 0x97b4500c __tracepoint_kmem_cache_free +EXPORT_SYMBOL vmlinux 0x97d1c12d mmc_gpiod_request_cd_irq +EXPORT_SYMBOL vmlinux 0x97dd15e6 swiotlb_unmap_sg_attrs +EXPORT_SYMBOL vmlinux 0x97ec26ae kset_register +EXPORT_SYMBOL vmlinux 0x97f7d5c2 of_translate_dma_address +EXPORT_SYMBOL vmlinux 0x98082893 __copy_to_user +EXPORT_SYMBOL vmlinux 0x980ec226 blk_pre_runtime_resume +EXPORT_SYMBOL vmlinux 0x98107a5f fget +EXPORT_SYMBOL vmlinux 0x9818b874 DWC_CPU_TO_BE16 +EXPORT_SYMBOL vmlinux 0x9820b644 warn_slowpath_fmt_taint +EXPORT_SYMBOL vmlinux 0x98216873 tty_register_ldisc +EXPORT_SYMBOL vmlinux 0x98263449 of_n_size_cells +EXPORT_SYMBOL vmlinux 0x986e6135 fb_pad_unaligned_buffer +EXPORT_SYMBOL vmlinux 0x987c11c7 __pv_phys_pfn_offset +EXPORT_SYMBOL vmlinux 0x9890cde4 __netlink_dump_start +EXPORT_SYMBOL vmlinux 0x989af11b __netdev_alloc_skb +EXPORT_SYMBOL vmlinux 0x98b2cf8a path_get +EXPORT_SYMBOL vmlinux 0x98b9d1c6 scsi_block_when_processing_errors +EXPORT_SYMBOL vmlinux 0x98c9ca8b dma_alloc_from_coherent +EXPORT_SYMBOL vmlinux 0x98d9f00b vfs_create +EXPORT_SYMBOL vmlinux 0x98dd476a ps2_command +EXPORT_SYMBOL vmlinux 0x98e51f0c find_inode_nowait +EXPORT_SYMBOL vmlinux 0x98e68eca cancel_delayed_work +EXPORT_SYMBOL vmlinux 0x98fafa06 dmaengine_get_unmap_data +EXPORT_SYMBOL vmlinux 0x99028c70 vchi_msg_remove +EXPORT_SYMBOL vmlinux 0x99078b72 dquot_destroy +EXPORT_SYMBOL vmlinux 0x9936b7f1 deactivate_locked_super +EXPORT_SYMBOL vmlinux 0x9939eba0 backlight_unregister_notifier +EXPORT_SYMBOL vmlinux 0x99517682 udp_encap_enable +EXPORT_SYMBOL vmlinux 0x99591a7a ipv6_ext_hdr +EXPORT_SYMBOL vmlinux 0x995bf28c __nla_reserve_nohdr +EXPORT_SYMBOL vmlinux 0x9968a84e unregister_nls +EXPORT_SYMBOL vmlinux 0x996c4d30 proc_dointvec_ms_jiffies +EXPORT_SYMBOL vmlinux 0x997a50eb alloc_etherdev_mqs +EXPORT_SYMBOL vmlinux 0x997eb0cb mem_cgroup_begin_page_stat +EXPORT_SYMBOL vmlinux 0x9994c0ca ps2_is_keyboard_id +EXPORT_SYMBOL vmlinux 0x99987049 component_match_add +EXPORT_SYMBOL vmlinux 0x99998a58 __d_drop +EXPORT_SYMBOL vmlinux 0x999ab7bb netdev_emerg +EXPORT_SYMBOL vmlinux 0x999e8297 vfree +EXPORT_SYMBOL vmlinux 0x99bb7a88 simple_write_begin +EXPORT_SYMBOL vmlinux 0x99bb8806 memmove +EXPORT_SYMBOL vmlinux 0x99c95fa5 unregister_sound_special +EXPORT_SYMBOL vmlinux 0x99cdc86b sysctl_tcp_reordering +EXPORT_SYMBOL vmlinux 0x99cf0a4e ilookup +EXPORT_SYMBOL vmlinux 0x99db049a ilookup5_nowait +EXPORT_SYMBOL vmlinux 0x99df3e9a tcp_v4_syn_recv_sock +EXPORT_SYMBOL vmlinux 0x99f58330 lg_local_lock_cpu +EXPORT_SYMBOL vmlinux 0x9a1dfd65 strpbrk +EXPORT_SYMBOL vmlinux 0x9a1fc4b4 jiffies_to_timeval +EXPORT_SYMBOL vmlinux 0x9a2a0791 sync_dirty_buffer +EXPORT_SYMBOL vmlinux 0x9a623142 ida_get_new_above +EXPORT_SYMBOL vmlinux 0x9a7dc38b irq_to_desc +EXPORT_SYMBOL vmlinux 0x9a8318ef v7_coherent_kern_range +EXPORT_SYMBOL vmlinux 0x9a83eede cleancache_register_ops +EXPORT_SYMBOL vmlinux 0x9a883ec3 bioset_create +EXPORT_SYMBOL vmlinux 0x9aaa3898 nf_log_packet +EXPORT_SYMBOL vmlinux 0x9ab57eca __tcf_em_tree_match +EXPORT_SYMBOL vmlinux 0x9acf9e96 phy_ethtool_set_eee +EXPORT_SYMBOL vmlinux 0x9ad51da6 get_user_pages +EXPORT_SYMBOL vmlinux 0x9ad80095 framebuffer_release +EXPORT_SYMBOL vmlinux 0x9ae10019 atomic_dec_and_mutex_lock +EXPORT_SYMBOL vmlinux 0x9af01587 input_set_keycode +EXPORT_SYMBOL vmlinux 0x9af95fd7 snd_pcm_lib_read +EXPORT_SYMBOL vmlinux 0x9b1029ba xfrm_state_flush +EXPORT_SYMBOL vmlinux 0x9b33e0d7 unregister_dcbevent_notifier +EXPORT_SYMBOL vmlinux 0x9b388444 get_zeroed_page +EXPORT_SYMBOL vmlinux 0x9b5b8c49 blkdev_issue_flush +EXPORT_SYMBOL vmlinux 0x9b6eb137 ksize +EXPORT_SYMBOL vmlinux 0x9b9e05f9 alloc_cpu_rmap +EXPORT_SYMBOL vmlinux 0x9b9f0219 vfs_fsync +EXPORT_SYMBOL vmlinux 0x9ba4e83c filemap_fdatawrite_range +EXPORT_SYMBOL vmlinux 0x9ba7089d argv_split +EXPORT_SYMBOL vmlinux 0x9bbbb1cc mipi_dsi_set_maximum_return_packet_size +EXPORT_SYMBOL vmlinux 0x9bbe88b3 flex_array_put +EXPORT_SYMBOL vmlinux 0x9bc9e4b9 snd_pcm_lib_preallocate_pages +EXPORT_SYMBOL vmlinux 0x9bca5bca tty_port_open +EXPORT_SYMBOL vmlinux 0x9bce482f __release_region +EXPORT_SYMBOL vmlinux 0x9be7bde4 security_tun_dev_attach +EXPORT_SYMBOL vmlinux 0x9c0bd51f _raw_spin_lock +EXPORT_SYMBOL vmlinux 0x9c0c9e8b devfreq_monitor_resume +EXPORT_SYMBOL vmlinux 0x9c141589 register_quota_format +EXPORT_SYMBOL vmlinux 0x9c14394c DWC_TASK_FREE +EXPORT_SYMBOL vmlinux 0x9c38edd4 ipv6_push_nfrag_opts +EXPORT_SYMBOL vmlinux 0x9c48d590 swiotlb_free_coherent +EXPORT_SYMBOL vmlinux 0x9c52a1a5 fb_set_var +EXPORT_SYMBOL vmlinux 0x9c7d0d80 fput +EXPORT_SYMBOL vmlinux 0x9c9a98aa DWC_MEMCPY +EXPORT_SYMBOL vmlinux 0x9c9ec2a0 proc_dointvec_minmax +EXPORT_SYMBOL vmlinux 0x9ca9388f alloc_disk +EXPORT_SYMBOL vmlinux 0x9cab34a6 rfkill_set_led_trigger_name +EXPORT_SYMBOL vmlinux 0x9cac48cb tcp_proc_unregister +EXPORT_SYMBOL vmlinux 0x9cba3c37 _raw_read_unlock_irqrestore +EXPORT_SYMBOL vmlinux 0x9cd60539 sg_free_table +EXPORT_SYMBOL vmlinux 0x9cf55423 md_reap_sync_thread +EXPORT_SYMBOL vmlinux 0x9d0bac96 rwsem_down_write_failed +EXPORT_SYMBOL vmlinux 0x9d0d6206 unregister_netdevice_notifier +EXPORT_SYMBOL vmlinux 0x9d1be2fc call_usermodehelper_exec +EXPORT_SYMBOL vmlinux 0x9d1cd8c8 __inet_stream_connect +EXPORT_SYMBOL vmlinux 0x9d3aa376 blk_iopoll_init +EXPORT_SYMBOL vmlinux 0x9d408479 snd_soc_alloc_ac97_codec +EXPORT_SYMBOL vmlinux 0x9d63f45b ip4_datagram_connect +EXPORT_SYMBOL vmlinux 0x9d669763 memcpy +EXPORT_SYMBOL vmlinux 0x9d8327ce sk_page_frag_refill +EXPORT_SYMBOL vmlinux 0x9d870226 bdi_register +EXPORT_SYMBOL vmlinux 0x9d9fbd64 mount_ns +EXPORT_SYMBOL vmlinux 0x9db8fb5c blk_mq_stop_hw_queue +EXPORT_SYMBOL vmlinux 0x9dc2228f touch_atime +EXPORT_SYMBOL vmlinux 0x9dcdab38 ip_queue_xmit +EXPORT_SYMBOL vmlinux 0x9def26f0 d_delete +EXPORT_SYMBOL vmlinux 0x9dfc929f led_set_brightness +EXPORT_SYMBOL vmlinux 0x9dfd496b mark_buffer_dirty_inode +EXPORT_SYMBOL vmlinux 0x9dfe7307 lz4_decompress_unknownoutputsize +EXPORT_SYMBOL vmlinux 0x9e075c4e snd_mixer_oss_notify_callback +EXPORT_SYMBOL vmlinux 0x9e0ab623 framebuffer_alloc +EXPORT_SYMBOL vmlinux 0x9e0c711d vzalloc_node +EXPORT_SYMBOL vmlinux 0x9e22097a fence_enable_sw_signaling +EXPORT_SYMBOL vmlinux 0x9e23c42f bdi_init +EXPORT_SYMBOL vmlinux 0x9e241a5d cpu_user +EXPORT_SYMBOL vmlinux 0x9e2d543a mmc_read_bkops_status +EXPORT_SYMBOL vmlinux 0x9e314d47 scsi_test_unit_ready +EXPORT_SYMBOL vmlinux 0x9e3682fd DWC_MDELAY +EXPORT_SYMBOL vmlinux 0x9e3ad683 __remove_inode_hash +EXPORT_SYMBOL vmlinux 0x9e4faeef dm_io_client_destroy +EXPORT_SYMBOL vmlinux 0x9e61bb05 set_freezable +EXPORT_SYMBOL vmlinux 0x9e6d79f8 snd_info_get_str +EXPORT_SYMBOL vmlinux 0x9e763530 reciprocal_value +EXPORT_SYMBOL vmlinux 0x9e82617b netif_set_real_num_rx_queues +EXPORT_SYMBOL vmlinux 0x9e8a5e67 security_file_permission +EXPORT_SYMBOL vmlinux 0x9ea73929 __tracepoint_fence_emit +EXPORT_SYMBOL vmlinux 0x9ed85eef generic_file_splice_read +EXPORT_SYMBOL vmlinux 0x9ee50bc6 phy_start_interrupts +EXPORT_SYMBOL vmlinux 0x9ef38429 remove_proc_entry +EXPORT_SYMBOL vmlinux 0x9f0144ed d_walk +EXPORT_SYMBOL vmlinux 0x9f46ced8 __sw_hweight64 +EXPORT_SYMBOL vmlinux 0x9f4e17f4 ptp_find_pin +EXPORT_SYMBOL vmlinux 0x9f5a8c78 km_new_mapping +EXPORT_SYMBOL vmlinux 0x9f93f0e6 inet_frag_find +EXPORT_SYMBOL vmlinux 0x9f984513 strrchr +EXPORT_SYMBOL vmlinux 0x9fbea8f1 bio_clone_bioset +EXPORT_SYMBOL vmlinux 0x9fd395c1 unregister_netdevice_queue +EXPORT_SYMBOL vmlinux 0x9fd7cda1 flex_array_prealloc +EXPORT_SYMBOL vmlinux 0x9fdecc31 unregister_netdevice_many +EXPORT_SYMBOL vmlinux 0x9febdf93 bio_endio +EXPORT_SYMBOL vmlinux 0x9ffa3a75 netdev_max_backlog +EXPORT_SYMBOL vmlinux 0x9ffa9f53 param_ops_short +EXPORT_SYMBOL vmlinux 0xa005c3d7 backlight_device_unregister +EXPORT_SYMBOL vmlinux 0xa00eb15b ioremap_page +EXPORT_SYMBOL vmlinux 0xa0436e98 in6addr_linklocal_allnodes +EXPORT_SYMBOL vmlinux 0xa04a01bd qdisc_class_hash_insert +EXPORT_SYMBOL vmlinux 0xa05c03df mempool_kmalloc +EXPORT_SYMBOL vmlinux 0xa06df9e1 __kfifo_dma_out_finish_r +EXPORT_SYMBOL vmlinux 0xa07ed110 xz_dec_init +EXPORT_SYMBOL vmlinux 0xa07fe3f7 inet_csk_clear_xmit_timers +EXPORT_SYMBOL vmlinux 0xa084749a __bitmap_or +EXPORT_SYMBOL vmlinux 0xa0901606 dcb_ieee_delapp +EXPORT_SYMBOL vmlinux 0xa0b04675 vmalloc_32 +EXPORT_SYMBOL vmlinux 0xa0c354eb __pagevec_release +EXPORT_SYMBOL vmlinux 0xa0c5395c snd_unregister_oss_device +EXPORT_SYMBOL vmlinux 0xa0dad88e netdev_adjacent_get_private +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 0xa1415618 twl6030_interrupt_unmask +EXPORT_SYMBOL vmlinux 0xa14b3f5d flex_array_free_parts +EXPORT_SYMBOL vmlinux 0xa14f3d8c ewma_add +EXPORT_SYMBOL vmlinux 0xa15f7ee5 netif_skb_features +EXPORT_SYMBOL vmlinux 0xa165aea3 vchi_msg_queuev +EXPORT_SYMBOL vmlinux 0xa1767116 vfs_link +EXPORT_SYMBOL vmlinux 0xa18c268c da903x_query_status +EXPORT_SYMBOL vmlinux 0xa192813b idr_for_each +EXPORT_SYMBOL vmlinux 0xa1b759ce fb_add_videomode +EXPORT_SYMBOL vmlinux 0xa1b98bc4 skb_store_bits +EXPORT_SYMBOL vmlinux 0xa1c5a271 netif_rx +EXPORT_SYMBOL vmlinux 0xa1c76e0a _cond_resched +EXPORT_SYMBOL vmlinux 0xa1d55e90 _raw_spin_lock_bh +EXPORT_SYMBOL vmlinux 0xa1ec37c1 path_is_under +EXPORT_SYMBOL vmlinux 0xa1ee23b3 md_wakeup_thread +EXPORT_SYMBOL vmlinux 0xa1f0ebea bit_waitqueue +EXPORT_SYMBOL vmlinux 0xa209451c bitmap_fold +EXPORT_SYMBOL vmlinux 0xa22e9df3 vchiq_add_connected_callback +EXPORT_SYMBOL vmlinux 0xa27e5066 blk_mq_start_hw_queue +EXPORT_SYMBOL vmlinux 0xa2848c50 ecryptfs_get_auth_tok_key +EXPORT_SYMBOL vmlinux 0xa28e7653 xfrm6_protocol_register +EXPORT_SYMBOL vmlinux 0xa29416cf simple_release_fs +EXPORT_SYMBOL vmlinux 0xa2b1df15 rtnl_configure_link +EXPORT_SYMBOL vmlinux 0xa2b5bc6d submit_bh +EXPORT_SYMBOL vmlinux 0xa2e04547 d_obtain_root +EXPORT_SYMBOL vmlinux 0xa2e3e444 locks_copy_conflock +EXPORT_SYMBOL vmlinux 0xa3179555 inet_frag_kill +EXPORT_SYMBOL vmlinux 0xa31d60af neigh_seq_next +EXPORT_SYMBOL vmlinux 0xa336feb7 nand_manuf_ids +EXPORT_SYMBOL vmlinux 0xa340cdbc __napi_complete +EXPORT_SYMBOL vmlinux 0xa354e73e bio_copy_data +EXPORT_SYMBOL vmlinux 0xa37e78b6 flex_array_get +EXPORT_SYMBOL vmlinux 0xa381944f dql_reset +EXPORT_SYMBOL vmlinux 0xa3942af2 do_SAK +EXPORT_SYMBOL vmlinux 0xa3998cb9 call_usermodehelper_setup +EXPORT_SYMBOL vmlinux 0xa39a123a fence_add_callback +EXPORT_SYMBOL vmlinux 0xa3ba8ba0 unregister_tcf_proto_ops +EXPORT_SYMBOL vmlinux 0xa3c2d3e9 napi_gro_receive +EXPORT_SYMBOL vmlinux 0xa3cbce5e blk_rq_init +EXPORT_SYMBOL vmlinux 0xa414882d add_wait_queue_exclusive +EXPORT_SYMBOL vmlinux 0xa43176ea generic_file_llseek_size +EXPORT_SYMBOL vmlinux 0xa43b1297 vscnprintf +EXPORT_SYMBOL vmlinux 0xa452a283 nf_register_sockopt +EXPORT_SYMBOL vmlinux 0xa468bbed ptp_clock_unregister +EXPORT_SYMBOL vmlinux 0xa4701e9e timekeeping_inject_offset +EXPORT_SYMBOL vmlinux 0xa4719006 sock_create_lite +EXPORT_SYMBOL vmlinux 0xa47842b8 snd_pcm_lib_writev +EXPORT_SYMBOL vmlinux 0xa47f2df7 param_set_ushort +EXPORT_SYMBOL vmlinux 0xa4b45ea5 out_of_line_wait_on_bit_lock +EXPORT_SYMBOL vmlinux 0xa4c5ffdb of_match_device +EXPORT_SYMBOL vmlinux 0xa4c7f0b2 write_dirty_buffer +EXPORT_SYMBOL vmlinux 0xa4d5dc2d file_ns_capable +EXPORT_SYMBOL vmlinux 0xa4d8b7c2 check_disk_change +EXPORT_SYMBOL vmlinux 0xa4fc9ed5 xfrm_policy_flush +EXPORT_SYMBOL vmlinux 0xa4ff9efe dqput +EXPORT_SYMBOL vmlinux 0xa510c70b register_cdrom +EXPORT_SYMBOL vmlinux 0xa53275c0 sock_rfree +EXPORT_SYMBOL vmlinux 0xa540cdef blk_mq_alloc_tag_set +EXPORT_SYMBOL vmlinux 0xa5526619 rb_insert_color +EXPORT_SYMBOL vmlinux 0xa5655289 add_to_page_cache_locked +EXPORT_SYMBOL vmlinux 0xa567a3ab of_graph_get_endpoint_by_regs +EXPORT_SYMBOL vmlinux 0xa56c9a5c proc_remove +EXPORT_SYMBOL vmlinux 0xa56d924c gnet_stats_start_copy_compat +EXPORT_SYMBOL vmlinux 0xa58fea9d mempool_destroy +EXPORT_SYMBOL vmlinux 0xa598e29c vesa_modes +EXPORT_SYMBOL vmlinux 0xa59c181a of_get_address +EXPORT_SYMBOL vmlinux 0xa5aeeac4 __nlmsg_put +EXPORT_SYMBOL vmlinux 0xa5cef8ad release_resource +EXPORT_SYMBOL vmlinux 0xa5d39cb6 generic_listxattr +EXPORT_SYMBOL vmlinux 0xa5f1230a done_path_create +EXPORT_SYMBOL vmlinux 0xa5f188f3 phy_driver_unregister +EXPORT_SYMBOL vmlinux 0xa60b709e inet_csk_delete_keepalive_timer +EXPORT_SYMBOL vmlinux 0xa615b93b rawv6_mh_filter_register +EXPORT_SYMBOL vmlinux 0xa619a1df do_map_probe +EXPORT_SYMBOL vmlinux 0xa61aa028 snd_pcm_format_unsigned +EXPORT_SYMBOL vmlinux 0xa62c9b5b register_gifconf +EXPORT_SYMBOL vmlinux 0xa62d9c14 jbd2_journal_abort +EXPORT_SYMBOL vmlinux 0xa63d85ab slhc_remember +EXPORT_SYMBOL vmlinux 0xa66fd510 dev_uc_unsync +EXPORT_SYMBOL vmlinux 0xa67374f0 __percpu_counter_compare +EXPORT_SYMBOL vmlinux 0xa675804c utf8s_to_utf16s +EXPORT_SYMBOL vmlinux 0xa681fe88 generate_random_uuid +EXPORT_SYMBOL vmlinux 0xa6837e96 rc5t583_ext_power_req_config +EXPORT_SYMBOL vmlinux 0xa6861764 input_unregister_handler +EXPORT_SYMBOL vmlinux 0xa6970398 __kfifo_to_user_r +EXPORT_SYMBOL vmlinux 0xa6bab23d dqstats +EXPORT_SYMBOL vmlinux 0xa6d84368 vmalloc_to_page +EXPORT_SYMBOL vmlinux 0xa6d8b597 sock_kfree_s +EXPORT_SYMBOL vmlinux 0xa6da7725 snd_card_new +EXPORT_SYMBOL vmlinux 0xa6e2712e phy_attach +EXPORT_SYMBOL vmlinux 0xa6eba029 neigh_table_clear +EXPORT_SYMBOL vmlinux 0xa6ed8026 keyring_alloc +EXPORT_SYMBOL vmlinux 0xa6fb327a __bforget +EXPORT_SYMBOL vmlinux 0xa6ffec60 woken_wake_function +EXPORT_SYMBOL vmlinux 0xa70d6344 down_read +EXPORT_SYMBOL vmlinux 0xa71b2204 snd_ctl_find_id +EXPORT_SYMBOL vmlinux 0xa734a3e9 abort_exclusive_wait +EXPORT_SYMBOL vmlinux 0xa735db59 prandom_u32 +EXPORT_SYMBOL vmlinux 0xa755bded open_check_o_direct +EXPORT_SYMBOL vmlinux 0xa7659d65 d_find_alias +EXPORT_SYMBOL vmlinux 0xa7814bc8 sk_stream_kill_queues +EXPORT_SYMBOL vmlinux 0xa787de93 netdev_printk +EXPORT_SYMBOL vmlinux 0xa799463c netdev_master_upper_dev_get +EXPORT_SYMBOL vmlinux 0xa7a0e27f dev_mc_add +EXPORT_SYMBOL vmlinux 0xa7b52c45 DWC_MUTEX_UNLOCK +EXPORT_SYMBOL vmlinux 0xa7c3cb15 tty_port_hangup +EXPORT_SYMBOL vmlinux 0xa8232c78 strtobool +EXPORT_SYMBOL vmlinux 0xa839e131 sync_mapping_buffers +EXPORT_SYMBOL vmlinux 0xa843805a get_unused_fd_flags +EXPORT_SYMBOL vmlinux 0xa848af8d mmc_can_sanitize +EXPORT_SYMBOL vmlinux 0xa84ca932 sock_register +EXPORT_SYMBOL vmlinux 0xa8502d8d ipv6_setsockopt +EXPORT_SYMBOL vmlinux 0xa85a7c73 bh_uptodate_or_lock +EXPORT_SYMBOL vmlinux 0xa860aa29 mark_buffer_dirty +EXPORT_SYMBOL vmlinux 0xa87007ff unregister_qdisc +EXPORT_SYMBOL vmlinux 0xa8721b97 system_state +EXPORT_SYMBOL vmlinux 0xa884ac8d __dst_free +EXPORT_SYMBOL vmlinux 0xa88a484e param_ops_ullong +EXPORT_SYMBOL vmlinux 0xa89488fe pm860x_bulk_read +EXPORT_SYMBOL vmlinux 0xa899d26f starget_for_each_device +EXPORT_SYMBOL vmlinux 0xa8a8110c kernel_neon_end +EXPORT_SYMBOL vmlinux 0xa8a87fe4 param_get_ullong +EXPORT_SYMBOL vmlinux 0xa8aa2fa4 rt6_lookup +EXPORT_SYMBOL vmlinux 0xa8de92ab d_rehash +EXPORT_SYMBOL vmlinux 0xa8e9db90 __sb_end_write +EXPORT_SYMBOL vmlinux 0xa8f00800 generic_getxattr +EXPORT_SYMBOL vmlinux 0xa8fef7bb security_unix_may_send +EXPORT_SYMBOL vmlinux 0xa90297a8 vchiq_connect +EXPORT_SYMBOL vmlinux 0xa916412a snd_timer_global_register +EXPORT_SYMBOL vmlinux 0xa9168676 xmit_recursion +EXPORT_SYMBOL vmlinux 0xa92a82c2 seq_file_path +EXPORT_SYMBOL vmlinux 0xa93c63cd DWC_TIMER_CANCEL +EXPORT_SYMBOL vmlinux 0xa9406cf5 __devm_gpiod_get +EXPORT_SYMBOL vmlinux 0xa94485fb bdi_destroy +EXPORT_SYMBOL vmlinux 0xa949cc46 vchi_service_destroy +EXPORT_SYMBOL vmlinux 0xa95fd1db param_get_int +EXPORT_SYMBOL vmlinux 0xa976957d bitmap_remap +EXPORT_SYMBOL vmlinux 0xa97a6aaf page_cache_next_hole +EXPORT_SYMBOL vmlinux 0xa999865c try_to_writeback_inodes_sb +EXPORT_SYMBOL vmlinux 0xa9a73bad input_grab_device +EXPORT_SYMBOL vmlinux 0xa9a91fd7 setattr_copy +EXPORT_SYMBOL vmlinux 0xa9b11717 mutex_lock +EXPORT_SYMBOL vmlinux 0xa9b78a43 of_phy_attach +EXPORT_SYMBOL vmlinux 0xa9c63b69 security_xfrm_policy_free +EXPORT_SYMBOL vmlinux 0xa9ca545a bcm2708_gpio_setpull +EXPORT_SYMBOL vmlinux 0xa9d2f3f7 lockref_get_not_dead +EXPORT_SYMBOL vmlinux 0xa9d399f7 get_empty_filp +EXPORT_SYMBOL vmlinux 0xa9da4c73 netdev_master_upper_dev_link +EXPORT_SYMBOL vmlinux 0xa9eabcf5 con_copy_unimap +EXPORT_SYMBOL vmlinux 0xaa0c8bc6 ppp_unregister_channel +EXPORT_SYMBOL vmlinux 0xaa12073e skb_copy_and_csum_bits +EXPORT_SYMBOL vmlinux 0xaa2de039 cont_write_begin +EXPORT_SYMBOL vmlinux 0xaa3053e1 security_path_rmdir +EXPORT_SYMBOL vmlinux 0xaa5927f9 scsi_kmap_atomic_sg +EXPORT_SYMBOL vmlinux 0xaa5e097b scsi_eh_restore_cmnd +EXPORT_SYMBOL vmlinux 0xaa6901ac __kfifo_out_r +EXPORT_SYMBOL vmlinux 0xaa696514 bio_init +EXPORT_SYMBOL vmlinux 0xaa6f23ad rfkill_get_led_trigger_name +EXPORT_SYMBOL vmlinux 0xaa903915 disk_stack_limits +EXPORT_SYMBOL vmlinux 0xaa944410 skb_kill_datagram +EXPORT_SYMBOL vmlinux 0xaaa2fdf4 devm_gpiod_put_array +EXPORT_SYMBOL vmlinux 0xaad0ae78 __bitmap_shift_right +EXPORT_SYMBOL vmlinux 0xaad6d92f rfkill_init_sw_state +EXPORT_SYMBOL vmlinux 0xaadc3fba netdev_info +EXPORT_SYMBOL vmlinux 0xaadd9da6 kill_litter_super +EXPORT_SYMBOL vmlinux 0xaae625ac dcb_getapp +EXPORT_SYMBOL vmlinux 0xaafdc258 strcasecmp +EXPORT_SYMBOL vmlinux 0xab15e714 scsi_report_bus_reset +EXPORT_SYMBOL vmlinux 0xab407266 xfrm_register_km +EXPORT_SYMBOL vmlinux 0xab45b15d current_fs_time +EXPORT_SYMBOL vmlinux 0xab5f3582 softnet_data +EXPORT_SYMBOL vmlinux 0xab600421 probe_irq_off +EXPORT_SYMBOL vmlinux 0xab694444 bsearch +EXPORT_SYMBOL vmlinux 0xab6bde28 sysctl_max_syn_backlog +EXPORT_SYMBOL vmlinux 0xab6e4312 empty_zero_page +EXPORT_SYMBOL vmlinux 0xab781570 fb_get_options +EXPORT_SYMBOL vmlinux 0xaba3ad0c radix_tree_gang_lookup_tag +EXPORT_SYMBOL vmlinux 0xaba953c0 dev_get_phys_port_name +EXPORT_SYMBOL vmlinux 0xabb0745e mipi_dsi_dcs_nop +EXPORT_SYMBOL vmlinux 0xabbb965d genphy_config_init +EXPORT_SYMBOL vmlinux 0xabc6dd63 cpufreq_sysfs_create_file +EXPORT_SYMBOL vmlinux 0xabc89ed1 blkdev_put +EXPORT_SYMBOL vmlinux 0xabca9ad8 sock_recv_errqueue +EXPORT_SYMBOL vmlinux 0xabcaa577 free_anon_bdev +EXPORT_SYMBOL vmlinux 0xabcc0b3a snd_info_free_entry +EXPORT_SYMBOL vmlinux 0xabd5b793 __starget_for_each_device +EXPORT_SYMBOL vmlinux 0xabfcb4c3 flush_delayed_work +EXPORT_SYMBOL vmlinux 0xac0a5d41 __sync_dirty_buffer +EXPORT_SYMBOL vmlinux 0xac0ba8c1 blk_iopoll_disable +EXPORT_SYMBOL vmlinux 0xac1a55be unregister_reboot_notifier +EXPORT_SYMBOL vmlinux 0xac390091 dev_base_lock +EXPORT_SYMBOL vmlinux 0xac398912 flex_array_clear +EXPORT_SYMBOL vmlinux 0xac53d8a1 snd_dma_free_pages +EXPORT_SYMBOL vmlinux 0xac5b30ee __DWC_ALLOC +EXPORT_SYMBOL vmlinux 0xac80a7da user_revoke +EXPORT_SYMBOL vmlinux 0xac8d4330 snd_dma_alloc_pages +EXPORT_SYMBOL vmlinux 0xacab29b7 seq_hlist_start_percpu +EXPORT_SYMBOL vmlinux 0xacb04173 neigh_event_ns +EXPORT_SYMBOL vmlinux 0xacc199aa generic_readlink +EXPORT_SYMBOL vmlinux 0xaccabc6a in4_pton +EXPORT_SYMBOL vmlinux 0xacd81eb3 jbd2_inode_cache +EXPORT_SYMBOL vmlinux 0xacf4d843 match_strdup +EXPORT_SYMBOL vmlinux 0xad0413d4 match_hex +EXPORT_SYMBOL vmlinux 0xad0eae51 unmap_underlying_metadata +EXPORT_SYMBOL vmlinux 0xad14b582 DWC_MEMCMP +EXPORT_SYMBOL vmlinux 0xad1ca384 noop_llseek +EXPORT_SYMBOL vmlinux 0xad5c0a42 snd_cards +EXPORT_SYMBOL vmlinux 0xad73da69 phy_device_create +EXPORT_SYMBOL vmlinux 0xad82324e fb_blank +EXPORT_SYMBOL vmlinux 0xad84bef8 dm_table_event +EXPORT_SYMBOL vmlinux 0xad95b31c xfrm_policy_byid +EXPORT_SYMBOL vmlinux 0xad9dd375 crypto_sha256_update +EXPORT_SYMBOL vmlinux 0xada41352 of_find_property +EXPORT_SYMBOL vmlinux 0xadb3197f user_path_create +EXPORT_SYMBOL vmlinux 0xadc3ef3d DWC_WRITE_REG32 +EXPORT_SYMBOL vmlinux 0xadc8ad58 key_alloc +EXPORT_SYMBOL vmlinux 0xadd47e82 kobject_del +EXPORT_SYMBOL vmlinux 0xaddfe977 ps2_handle_ack +EXPORT_SYMBOL vmlinux 0xade88e76 snd_malloc_pages +EXPORT_SYMBOL vmlinux 0xaded0f16 xfrm_state_unregister_afinfo +EXPORT_SYMBOL vmlinux 0xadf42bd5 __request_region +EXPORT_SYMBOL vmlinux 0xadf99faf genphy_restart_aneg +EXPORT_SYMBOL vmlinux 0xadfdfcef __bitmap_andnot +EXPORT_SYMBOL vmlinux 0xae0b623f inet_dgram_ops +EXPORT_SYMBOL vmlinux 0xae0bd47c elv_rb_former_request +EXPORT_SYMBOL vmlinux 0xae15d7cb abx500_remove_ops +EXPORT_SYMBOL vmlinux 0xae31fa70 dquot_quota_off +EXPORT_SYMBOL vmlinux 0xae4e177a kfree_put_link +EXPORT_SYMBOL vmlinux 0xae5a09fc neigh_parms_alloc +EXPORT_SYMBOL vmlinux 0xae729e59 security_req_classify_flow +EXPORT_SYMBOL vmlinux 0xae77a595 radix_tree_gang_lookup_slot +EXPORT_SYMBOL vmlinux 0xae7feb85 mmc_gpio_request_cd +EXPORT_SYMBOL vmlinux 0xae84873f read_dev_sector +EXPORT_SYMBOL vmlinux 0xae85a27e radix_tree_lookup +EXPORT_SYMBOL vmlinux 0xae94fdf2 locks_free_lock +EXPORT_SYMBOL vmlinux 0xaea2070c blk_mq_stop_hw_queues +EXPORT_SYMBOL vmlinux 0xaead7b55 dma_mark_declared_memory_occupied +EXPORT_SYMBOL vmlinux 0xaebb7f8a inet_getname +EXPORT_SYMBOL vmlinux 0xaebbac6d security_inode_setsecctx +EXPORT_SYMBOL vmlinux 0xaec36609 from_kgid +EXPORT_SYMBOL vmlinux 0xaec655c7 alloc_pages_exact +EXPORT_SYMBOL vmlinux 0xaef06364 mii_check_link +EXPORT_SYMBOL vmlinux 0xaef243bc dquot_scan_active +EXPORT_SYMBOL vmlinux 0xaef5de1f bioset_free +EXPORT_SYMBOL vmlinux 0xaef7858c __sg_page_iter_next +EXPORT_SYMBOL vmlinux 0xaefa3d8a tcf_exts_dump_stats +EXPORT_SYMBOL vmlinux 0xaf00a86e serio_interrupt +EXPORT_SYMBOL vmlinux 0xaf08a044 DWC_WAITQ_TRIGGER +EXPORT_SYMBOL vmlinux 0xaf0ba37f icmpv6_send +EXPORT_SYMBOL vmlinux 0xaf10d009 vchi_get_peer_version +EXPORT_SYMBOL vmlinux 0xaf341474 check_disk_size_change +EXPORT_SYMBOL vmlinux 0xaf3dd7dc scsi_logging_level +EXPORT_SYMBOL vmlinux 0xaf48d376 inet_frags_exit_net +EXPORT_SYMBOL vmlinux 0xaf49d8e0 init_task +EXPORT_SYMBOL vmlinux 0xaf4b963d mark_info_dirty +EXPORT_SYMBOL vmlinux 0xaf50e76d elf_set_personality +EXPORT_SYMBOL vmlinux 0xaf544024 nand_scan +EXPORT_SYMBOL vmlinux 0xaf71a55b snd_pcm_lib_preallocate_free_for_all +EXPORT_SYMBOL vmlinux 0xaf84865e __get_user_8 +EXPORT_SYMBOL vmlinux 0xaf8aa518 system_rev +EXPORT_SYMBOL vmlinux 0xafa74222 sock_wake_async +EXPORT_SYMBOL vmlinux 0xafc919b3 __dev_kfree_skb_irq +EXPORT_SYMBOL vmlinux 0xafeafac3 vm_insert_mixed +EXPORT_SYMBOL vmlinux 0xafed3c3b tty_port_lower_dtr_rts +EXPORT_SYMBOL vmlinux 0xaff31527 bitmap_close_sync +EXPORT_SYMBOL vmlinux 0xaff8a2ba ata_scsi_cmd_error_handler +EXPORT_SYMBOL vmlinux 0xb023d391 DWC_MUTEX_ALLOC +EXPORT_SYMBOL vmlinux 0xb0353af6 sb_min_blocksize +EXPORT_SYMBOL vmlinux 0xb04cf0fe lg_local_unlock +EXPORT_SYMBOL vmlinux 0xb0538482 locks_remove_posix +EXPORT_SYMBOL vmlinux 0xb05fc310 sysctl_rmem_max +EXPORT_SYMBOL vmlinux 0xb060e780 insert_inode_locked +EXPORT_SYMBOL vmlinux 0xb066b530 iommu_tbl_pool_init +EXPORT_SYMBOL vmlinux 0xb07316f5 __cleancache_init_fs +EXPORT_SYMBOL vmlinux 0xb0a0da0c rational_best_approximation +EXPORT_SYMBOL vmlinux 0xb0d79f4a inet_proto_csum_replace16 +EXPORT_SYMBOL vmlinux 0xb0e10781 get_option +EXPORT_SYMBOL vmlinux 0xb0f45083 __neigh_set_probe_once +EXPORT_SYMBOL vmlinux 0xb0f8a5a1 __mmc_claim_host +EXPORT_SYMBOL vmlinux 0xb113a559 open_exec +EXPORT_SYMBOL vmlinux 0xb1160f4a iw_handler_get_thrspy +EXPORT_SYMBOL vmlinux 0xb121390a probe_irq_on +EXPORT_SYMBOL vmlinux 0xb12cbacb fb_unregister_client +EXPORT_SYMBOL vmlinux 0xb1468727 wait_iff_congested +EXPORT_SYMBOL vmlinux 0xb14fda79 generic_key_instantiate +EXPORT_SYMBOL vmlinux 0xb15cb614 security_xfrm_policy_alloc +EXPORT_SYMBOL vmlinux 0xb15ec186 DWC_THREAD_STOP +EXPORT_SYMBOL vmlinux 0xb173c544 qdisc_watchdog_init +EXPORT_SYMBOL vmlinux 0xb18f1fc5 call_netdevice_notifiers +EXPORT_SYMBOL vmlinux 0xb1a79867 block_write_end +EXPORT_SYMBOL vmlinux 0xb1ad28e0 __gnu_mcount_nc +EXPORT_SYMBOL vmlinux 0xb1b3297a sg_miter_stop +EXPORT_SYMBOL vmlinux 0xb1c3a01a oops_in_progress +EXPORT_SYMBOL vmlinux 0xb1c82a93 snd_pcm_notify +EXPORT_SYMBOL vmlinux 0xb1cf44df fb_find_best_mode +EXPORT_SYMBOL vmlinux 0xb1d0d244 netpoll_poll_disable +EXPORT_SYMBOL vmlinux 0xb1d9aabd lg_local_unlock_cpu +EXPORT_SYMBOL vmlinux 0xb1f7f934 of_device_register +EXPORT_SYMBOL vmlinux 0xb23d0b09 keyring_search +EXPORT_SYMBOL vmlinux 0xb242a8f6 blk_init_tags +EXPORT_SYMBOL vmlinux 0xb25e3615 lro_receive_skb +EXPORT_SYMBOL vmlinux 0xb2682405 utf8_to_utf32 +EXPORT_SYMBOL vmlinux 0xb270ab46 bdi_set_max_ratio +EXPORT_SYMBOL vmlinux 0xb2be6e92 netdev_stats_to_stats64 +EXPORT_SYMBOL vmlinux 0xb2cc7fa4 blk_post_runtime_suspend +EXPORT_SYMBOL vmlinux 0xb2d1e87a textsearch_destroy +EXPORT_SYMBOL vmlinux 0xb2d48a2e queue_work_on +EXPORT_SYMBOL vmlinux 0xb2d48c60 crypto_sha1_update +EXPORT_SYMBOL vmlinux 0xb2e5ae4a snd_lookup_minor_data +EXPORT_SYMBOL vmlinux 0xb2e760ca simple_dir_operations +EXPORT_SYMBOL vmlinux 0xb2f5a9ef security_inode_init_security +EXPORT_SYMBOL vmlinux 0xb2faf1d7 __sg_alloc_table +EXPORT_SYMBOL vmlinux 0xb31e50c3 devm_devfreq_register_opp_notifier +EXPORT_SYMBOL vmlinux 0xb32d7b7e radix_tree_tagged +EXPORT_SYMBOL vmlinux 0xb33af92e udp_ioctl +EXPORT_SYMBOL vmlinux 0xb34176bd sync_inodes_sb +EXPORT_SYMBOL vmlinux 0xb362d4bb vchi_msg_dequeue +EXPORT_SYMBOL vmlinux 0xb372e1f2 mb_cache_shrink +EXPORT_SYMBOL vmlinux 0xb37f06cd seq_printf +EXPORT_SYMBOL vmlinux 0xb3a11f52 param_set_ulong +EXPORT_SYMBOL vmlinux 0xb3c10d31 mipi_dsi_dcs_read +EXPORT_SYMBOL vmlinux 0xb3c3b513 mmc_wait_for_req +EXPORT_SYMBOL vmlinux 0xb3d2c76d scsi_hostbyte_string +EXPORT_SYMBOL vmlinux 0xb3ee3eb8 __dquot_free_space +EXPORT_SYMBOL vmlinux 0xb3f571f3 try_module_get +EXPORT_SYMBOL vmlinux 0xb3f7646e kthread_should_stop +EXPORT_SYMBOL vmlinux 0xb400d1b2 writeback_inodes_sb_nr +EXPORT_SYMBOL vmlinux 0xb407327a snd_pcm_hw_param_last +EXPORT_SYMBOL vmlinux 0xb423dba1 console_blanked +EXPORT_SYMBOL vmlinux 0xb432ba74 mount_bdev +EXPORT_SYMBOL vmlinux 0xb4390f9a mcount +EXPORT_SYMBOL vmlinux 0xb43da1a0 dev_uc_add_excl +EXPORT_SYMBOL vmlinux 0xb44780ec km_policy_notify +EXPORT_SYMBOL vmlinux 0xb44b45b5 blk_queue_update_dma_alignment +EXPORT_SYMBOL vmlinux 0xb4519a8f string_escape_mem +EXPORT_SYMBOL vmlinux 0xb4622251 phy_drivers_register +EXPORT_SYMBOL vmlinux 0xb4709322 scsi_dev_info_add_list +EXPORT_SYMBOL vmlinux 0xb481d1df scsi_target_resume +EXPORT_SYMBOL vmlinux 0xb49dbb8e backlight_device_register +EXPORT_SYMBOL vmlinux 0xb4b94377 __nand_correct_data +EXPORT_SYMBOL vmlinux 0xb4bbe4c1 skb_find_text +EXPORT_SYMBOL vmlinux 0xb4cca97c cpufreq_generic_suspend +EXPORT_SYMBOL vmlinux 0xb4defb86 mmc_start_bkops +EXPORT_SYMBOL vmlinux 0xb4fab46e __cleancache_invalidate_fs +EXPORT_SYMBOL vmlinux 0xb51825b9 mmc_set_blocklen +EXPORT_SYMBOL vmlinux 0xb5198b77 _raw_read_lock +EXPORT_SYMBOL vmlinux 0xb5257c2f dquot_commit +EXPORT_SYMBOL vmlinux 0xb52872f8 register_sound_special_device +EXPORT_SYMBOL vmlinux 0xb52a022b dwc_cc_add +EXPORT_SYMBOL vmlinux 0xb54ad67b ns_capable +EXPORT_SYMBOL vmlinux 0xb551879c cap_mmap_file +EXPORT_SYMBOL vmlinux 0xb55afe12 xfrm6_prepare_output +EXPORT_SYMBOL vmlinux 0xb5684e29 idr_find_slowpath +EXPORT_SYMBOL vmlinux 0xb57343c2 frontswap_shrink +EXPORT_SYMBOL vmlinux 0xb5a459dc unregister_blkdev +EXPORT_SYMBOL vmlinux 0xb5a849aa skb_abort_seq_read +EXPORT_SYMBOL vmlinux 0xb5aa7165 dma_pool_destroy +EXPORT_SYMBOL vmlinux 0xb5bd34eb __init_rwsem +EXPORT_SYMBOL vmlinux 0xb5c00014 _raw_write_lock_irq +EXPORT_SYMBOL vmlinux 0xb5c1e290 inet6_offloads +EXPORT_SYMBOL vmlinux 0xb5ca1c46 slhc_free +EXPORT_SYMBOL vmlinux 0xb5d9454c printk_emit +EXPORT_SYMBOL vmlinux 0xb5f350f7 iterate_dir +EXPORT_SYMBOL vmlinux 0xb60e84af fib_default_rule_pref +EXPORT_SYMBOL vmlinux 0xb6301f9d __dev_get_by_name +EXPORT_SYMBOL vmlinux 0xb632e907 nand_bch_correct_data +EXPORT_SYMBOL vmlinux 0xb678366f int_sqrt +EXPORT_SYMBOL vmlinux 0xb6814293 fasync_helper +EXPORT_SYMBOL vmlinux 0xb6836e5d kiocb_set_cancel_fn +EXPORT_SYMBOL vmlinux 0xb6896671 crc_t10dif +EXPORT_SYMBOL vmlinux 0xb68fc493 snd_power_wait +EXPORT_SYMBOL vmlinux 0xb6936ffe _bcd2bin +EXPORT_SYMBOL vmlinux 0xb69989dd dentry_path_raw +EXPORT_SYMBOL vmlinux 0xb6a68816 find_last_bit +EXPORT_SYMBOL vmlinux 0xb6c83597 generic_perform_write +EXPORT_SYMBOL vmlinux 0xb6cac6b8 max8925_bulk_read +EXPORT_SYMBOL vmlinux 0xb6cd97d6 invalidate_mapping_pages +EXPORT_SYMBOL vmlinux 0xb6cdbbb5 sk_stream_error +EXPORT_SYMBOL vmlinux 0xb6ecb080 dquot_drop +EXPORT_SYMBOL vmlinux 0xb70e492f devm_request_any_context_irq +EXPORT_SYMBOL vmlinux 0xb711f236 scsi_device_quiesce +EXPORT_SYMBOL vmlinux 0xb71625f3 tty_devnum +EXPORT_SYMBOL vmlinux 0xb719a183 DWC_SPRINTF +EXPORT_SYMBOL vmlinux 0xb7333923 generic_splice_sendpage +EXPORT_SYMBOL vmlinux 0xb7488905 scsi_normalize_sense +EXPORT_SYMBOL vmlinux 0xb74b616b gen_pool_dma_alloc +EXPORT_SYMBOL vmlinux 0xb75b7c61 generic_error_remove_page +EXPORT_SYMBOL vmlinux 0xb7685792 nf_log_bind_pf +EXPORT_SYMBOL vmlinux 0xb76cc133 d_set_fallthru +EXPORT_SYMBOL vmlinux 0xb77131b1 psched_ratecfg_precompute +EXPORT_SYMBOL vmlinux 0xb7844c91 genphy_config_aneg +EXPORT_SYMBOL vmlinux 0xb78c09a0 scsi_ioctl +EXPORT_SYMBOL vmlinux 0xb7900888 d_prune_aliases +EXPORT_SYMBOL vmlinux 0xb79ec15d mipi_dsi_create_packet +EXPORT_SYMBOL vmlinux 0xb79f9c91 jbd2_journal_set_triggers +EXPORT_SYMBOL vmlinux 0xb7ba76c7 __aeabi_unwind_cpp_pr2 +EXPORT_SYMBOL vmlinux 0xb7c726c4 amba_request_regions +EXPORT_SYMBOL vmlinux 0xb7d93cae fbcon_rotate_cw +EXPORT_SYMBOL vmlinux 0xb7dda959 __neigh_for_each_release +EXPORT_SYMBOL vmlinux 0xb7ddde53 simple_transaction_release +EXPORT_SYMBOL vmlinux 0xb7ed54b3 of_graph_get_remote_port_parent +EXPORT_SYMBOL vmlinux 0xb81960ca snprintf +EXPORT_SYMBOL vmlinux 0xb8326798 remap_vmalloc_range_partial +EXPORT_SYMBOL vmlinux 0xb86de34b dm_kobject_release +EXPORT_SYMBOL vmlinux 0xb86e045f seq_put_decimal_ull +EXPORT_SYMBOL vmlinux 0xb874b87a __clzsi2 +EXPORT_SYMBOL vmlinux 0xb888df6f fifo_create_dflt +EXPORT_SYMBOL vmlinux 0xb88e7d9f blk_queue_chunk_sectors +EXPORT_SYMBOL vmlinux 0xb89819f2 phy_stop_interrupts +EXPORT_SYMBOL vmlinux 0xb8a6bfdc devfreq_add_governor +EXPORT_SYMBOL vmlinux 0xb8a982bd ipv6_find_hdr +EXPORT_SYMBOL vmlinux 0xb8ca97c5 netlink_ns_capable +EXPORT_SYMBOL vmlinux 0xb8e877e7 kstrtouint_from_user +EXPORT_SYMBOL vmlinux 0xb9193410 cdrom_number_of_slots +EXPORT_SYMBOL vmlinux 0xb91c0c89 lookup_bdev +EXPORT_SYMBOL vmlinux 0xb928ce0f cdrom_get_last_written +EXPORT_SYMBOL vmlinux 0xb95f98d6 _memset_io +EXPORT_SYMBOL vmlinux 0xb9638db4 snd_pcm_rate_to_rate_bit +EXPORT_SYMBOL vmlinux 0xb970d89f blk_mq_init_queue +EXPORT_SYMBOL vmlinux 0xb988009a skb_queue_purge +EXPORT_SYMBOL vmlinux 0xb990b1f0 snd_pcm_hw_constraint_mask64 +EXPORT_SYMBOL vmlinux 0xb9a37c78 contig_page_data +EXPORT_SYMBOL vmlinux 0xb9a6643a simple_dir_inode_operations +EXPORT_SYMBOL vmlinux 0xb9acd3d9 __put_user_2 +EXPORT_SYMBOL vmlinux 0xb9e8e2cc in6addr_sitelocal_allrouters +EXPORT_SYMBOL vmlinux 0xb9f18dd3 DWC_STRDUP +EXPORT_SYMBOL vmlinux 0xb9fdb7e5 snd_pcm_hw_refine +EXPORT_SYMBOL vmlinux 0xba23c0c9 phy_connect_direct +EXPORT_SYMBOL vmlinux 0xba3c3795 blk_queue_max_write_same_sectors +EXPORT_SYMBOL vmlinux 0xba40c116 xfrm_lookup +EXPORT_SYMBOL vmlinux 0xba497f13 loops_per_jiffy +EXPORT_SYMBOL vmlinux 0xba4ae097 enable_fiq +EXPORT_SYMBOL vmlinux 0xba4ba959 __frontswap_test +EXPORT_SYMBOL vmlinux 0xbaa83857 cancel_dirty_page +EXPORT_SYMBOL vmlinux 0xbaa9a589 scsi_track_queue_full +EXPORT_SYMBOL vmlinux 0xbab4d031 amba_driver_register +EXPORT_SYMBOL vmlinux 0xbac3cbf2 ns_to_timespec64 +EXPORT_SYMBOL vmlinux 0xbacd9058 qdisc_reset +EXPORT_SYMBOL vmlinux 0xbaebe6c7 blkdev_get_by_dev +EXPORT_SYMBOL vmlinux 0xbaf2a31e mb_cache_entry_free +EXPORT_SYMBOL vmlinux 0xbafe16c6 scsi_remove_target +EXPORT_SYMBOL vmlinux 0xbb042fbf inode_add_bytes +EXPORT_SYMBOL vmlinux 0xbb0540aa zlib_inflateReset +EXPORT_SYMBOL vmlinux 0xbb32ed63 sock_create +EXPORT_SYMBOL vmlinux 0xbb35675b __bitmap_intersects +EXPORT_SYMBOL vmlinux 0xbb5d18f3 __sk_backlog_rcv +EXPORT_SYMBOL vmlinux 0xbb5d343d xfrm_get_acqseq +EXPORT_SYMBOL vmlinux 0xbb72d4fe __put_user_1 +EXPORT_SYMBOL vmlinux 0xbb965065 cdev_add +EXPORT_SYMBOL vmlinux 0xbb99125c get_default_font +EXPORT_SYMBOL vmlinux 0xbbd76e57 bit_wait +EXPORT_SYMBOL vmlinux 0xbbdc10ef d_splice_alias +EXPORT_SYMBOL vmlinux 0xbc10dd97 __put_user_4 +EXPORT_SYMBOL vmlinux 0xbc57e29f netdev_notice +EXPORT_SYMBOL vmlinux 0xbc77d023 DWC_MUTEX_TRYLOCK +EXPORT_SYMBOL vmlinux 0xbc7a2f01 peernet2id_alloc +EXPORT_SYMBOL vmlinux 0xbcaa002d netlink_set_err +EXPORT_SYMBOL vmlinux 0xbcb48888 netpoll_poll_enable +EXPORT_SYMBOL vmlinux 0xbcc308bb strnlen_user +EXPORT_SYMBOL vmlinux 0xbd17c6de gen_replace_estimator +EXPORT_SYMBOL vmlinux 0xbd2532f9 devfreq_remove_governor +EXPORT_SYMBOL vmlinux 0xbd6ceb53 fbcon_rotate_ud +EXPORT_SYMBOL vmlinux 0xbd9074b1 blk_finish_plug +EXPORT_SYMBOL vmlinux 0xbdb0fa37 jbd2_journal_force_commit_nested +EXPORT_SYMBOL vmlinux 0xbdc10281 mmc_stop_bkops +EXPORT_SYMBOL vmlinux 0xbdc9c7d1 seq_open +EXPORT_SYMBOL vmlinux 0xbdcc6524 from_kprojid +EXPORT_SYMBOL vmlinux 0xbdd9617d __nla_reserve +EXPORT_SYMBOL vmlinux 0xbdec4d08 fence_remove_callback +EXPORT_SYMBOL vmlinux 0xbdedb6b2 irq_stat +EXPORT_SYMBOL vmlinux 0xbdf88c18 copy_to_iter +EXPORT_SYMBOL vmlinux 0xbe0e5118 nla_memcmp +EXPORT_SYMBOL vmlinux 0xbe151bfe mmc_can_trim +EXPORT_SYMBOL vmlinux 0xbe1ab1fb inet_shutdown +EXPORT_SYMBOL vmlinux 0xbe1bb112 bitmap_onto +EXPORT_SYMBOL vmlinux 0xbe207604 devm_gpio_request_one +EXPORT_SYMBOL vmlinux 0xbe2a3768 skb_free_datagram_locked +EXPORT_SYMBOL vmlinux 0xbe3947a0 of_iomap +EXPORT_SYMBOL vmlinux 0xbe421cb3 inode_sub_rsv_space +EXPORT_SYMBOL vmlinux 0xbe54f9e1 udplite_prot +EXPORT_SYMBOL vmlinux 0xbe63ee40 request_resource +EXPORT_SYMBOL vmlinux 0xbe64ac6e snd_pcm_set_ops +EXPORT_SYMBOL vmlinux 0xbe74f345 inode_dio_wait +EXPORT_SYMBOL vmlinux 0xbe7e0fa7 simple_fill_super +EXPORT_SYMBOL vmlinux 0xbe8a29eb devm_ioremap_nocache +EXPORT_SYMBOL vmlinux 0xbead0ebf kfree_skb_partial +EXPORT_SYMBOL vmlinux 0xbeae1173 blk_queue_dma_alignment +EXPORT_SYMBOL vmlinux 0xbee50712 genphy_suspend +EXPORT_SYMBOL vmlinux 0xbee90f2f __kfifo_out_peek_r +EXPORT_SYMBOL vmlinux 0xbef43296 console_conditional_schedule +EXPORT_SYMBOL vmlinux 0xbf368d5f default_qdisc_ops +EXPORT_SYMBOL vmlinux 0xbf392a96 amba_device_register +EXPORT_SYMBOL vmlinux 0xbf3e25a7 pm8606_osc_enable +EXPORT_SYMBOL vmlinux 0xbf45a776 i2c_add_adapter +EXPORT_SYMBOL vmlinux 0xbf494398 tty_lock +EXPORT_SYMBOL vmlinux 0xbf4df886 add_disk +EXPORT_SYMBOL vmlinux 0xbf594e34 get_phy_device +EXPORT_SYMBOL vmlinux 0xbf63618e max8998_bulk_read +EXPORT_SYMBOL vmlinux 0xbf636c63 snd_info_create_module_entry +EXPORT_SYMBOL vmlinux 0xbf7fd2f5 schedule_timeout_killable +EXPORT_SYMBOL vmlinux 0xbf8ba54a vprintk +EXPORT_SYMBOL vmlinux 0xbf9bcc8d __cap_empty_set +EXPORT_SYMBOL vmlinux 0xbfa81625 bio_advance +EXPORT_SYMBOL vmlinux 0xbfdab474 skb_clone_sk +EXPORT_SYMBOL vmlinux 0xbfee3ad5 loop_unregister_transfer +EXPORT_SYMBOL vmlinux 0xc0056be5 _raw_write_unlock_bh +EXPORT_SYMBOL vmlinux 0xc0080b06 phy_mac_interrupt +EXPORT_SYMBOL vmlinux 0xc018fe74 arp_create +EXPORT_SYMBOL vmlinux 0xc01a7351 mb_cache_entry_get +EXPORT_SYMBOL vmlinux 0xc0649a92 mntput +EXPORT_SYMBOL vmlinux 0xc068440e __kfifo_alloc +EXPORT_SYMBOL vmlinux 0xc06e505e load_nls +EXPORT_SYMBOL vmlinux 0xc0709927 of_find_mipi_dsi_device_by_node +EXPORT_SYMBOL vmlinux 0xc0763484 rfkill_blocked +EXPORT_SYMBOL vmlinux 0xc0823e4c twl_i2c_write +EXPORT_SYMBOL vmlinux 0xc082da66 udp_push_pending_frames +EXPORT_SYMBOL vmlinux 0xc0a2c1f6 phy_detach +EXPORT_SYMBOL vmlinux 0xc0a98385 profile_pc +EXPORT_SYMBOL vmlinux 0xc0c17882 __secpath_destroy +EXPORT_SYMBOL vmlinux 0xc0cbd7b4 of_find_node_by_name +EXPORT_SYMBOL vmlinux 0xc0d1af7e DWC_MEMSET +EXPORT_SYMBOL vmlinux 0xc0e16642 crypto_sha1_finup +EXPORT_SYMBOL vmlinux 0xc0f7fb26 blk_mq_free_tag_set +EXPORT_SYMBOL vmlinux 0xc1099794 inet_unregister_protosw +EXPORT_SYMBOL vmlinux 0xc11d8093 iov_shorten +EXPORT_SYMBOL vmlinux 0xc12ec3a6 dns_query +EXPORT_SYMBOL vmlinux 0xc1390ad4 blk_delay_queue +EXPORT_SYMBOL vmlinux 0xc142f6d6 cookie_ecn_ok +EXPORT_SYMBOL vmlinux 0xc14cdd40 dev_close +EXPORT_SYMBOL vmlinux 0xc16086f5 inet_offloads +EXPORT_SYMBOL vmlinux 0xc167e79c sock_common_recvmsg +EXPORT_SYMBOL vmlinux 0xc182bf0c xfrm_state_insert +EXPORT_SYMBOL vmlinux 0xc1b10464 blk_queue_update_dma_pad +EXPORT_SYMBOL vmlinux 0xc1b3c366 dev_printk_emit +EXPORT_SYMBOL vmlinux 0xc1c112fb kmem_cache_create +EXPORT_SYMBOL vmlinux 0xc1c393d8 copy_from_iter_nocache +EXPORT_SYMBOL vmlinux 0xc1d8cfaf __fdget +EXPORT_SYMBOL vmlinux 0xc1df27b2 tcp_seq_open +EXPORT_SYMBOL vmlinux 0xc1e50c0b rtnl_nla_parse_ifla +EXPORT_SYMBOL vmlinux 0xc1f7e73a fd_install +EXPORT_SYMBOL vmlinux 0xc2081a83 gen_pool_add_virt +EXPORT_SYMBOL vmlinux 0xc21215ed of_dev_put +EXPORT_SYMBOL vmlinux 0xc21321f9 of_translate_address +EXPORT_SYMBOL vmlinux 0xc2181f08 filemap_map_pages +EXPORT_SYMBOL vmlinux 0xc233f979 cros_ec_check_result +EXPORT_SYMBOL vmlinux 0xc24a00b5 input_alloc_absinfo +EXPORT_SYMBOL vmlinux 0xc265f1f7 skb_split +EXPORT_SYMBOL vmlinux 0xc2676ebe pm8606_osc_disable +EXPORT_SYMBOL vmlinux 0xc267ff0c end_buffer_async_write +EXPORT_SYMBOL vmlinux 0xc26bbfe0 usbnet_device_suggests_idle +EXPORT_SYMBOL vmlinux 0xc28a9b15 d_instantiate_unique +EXPORT_SYMBOL vmlinux 0xc29f4b0e tcp_timewait_state_process +EXPORT_SYMBOL vmlinux 0xc29f7035 udp6_set_csum +EXPORT_SYMBOL vmlinux 0xc2a7d08d vfs_writef +EXPORT_SYMBOL vmlinux 0xc2acc033 hex_dump_to_buffer +EXPORT_SYMBOL vmlinux 0xc2aef914 get_disk +EXPORT_SYMBOL vmlinux 0xc2b2ad3a dump_page +EXPORT_SYMBOL vmlinux 0xc2d711e1 krealloc +EXPORT_SYMBOL vmlinux 0xc2e587d1 reset_devices +EXPORT_SYMBOL vmlinux 0xc2e5fe13 blkdev_fsync +EXPORT_SYMBOL vmlinux 0xc2f9c045 timespec_to_jiffies +EXPORT_SYMBOL vmlinux 0xc3095bc6 simple_unlink +EXPORT_SYMBOL vmlinux 0xc312ceaa inet_csk_init_xmit_timers +EXPORT_SYMBOL vmlinux 0xc33419ec generic_file_write_iter +EXPORT_SYMBOL vmlinux 0xc33f19cb devm_iounmap +EXPORT_SYMBOL vmlinux 0xc359fb65 abort +EXPORT_SYMBOL vmlinux 0xc35bebcf cpufreq_get_policy +EXPORT_SYMBOL vmlinux 0xc3620ab4 scsi_print_result +EXPORT_SYMBOL vmlinux 0xc36ebac0 blkdev_issue_zeroout +EXPORT_SYMBOL vmlinux 0xc3729f3e tcp_v4_send_check +EXPORT_SYMBOL vmlinux 0xc385ab04 __register_binfmt +EXPORT_SYMBOL vmlinux 0xc38d0f5b dwc_cc_restore_from_data +EXPORT_SYMBOL vmlinux 0xc3aba73d ps2_drain +EXPORT_SYMBOL vmlinux 0xc3b2252f block_read_full_page +EXPORT_SYMBOL vmlinux 0xc3babd9c generic_cont_expand_simple +EXPORT_SYMBOL vmlinux 0xc3c2be91 mipi_dsi_packet_format_is_short +EXPORT_SYMBOL vmlinux 0xc3e57aff __getblk_slow +EXPORT_SYMBOL vmlinux 0xc3f0a92f del_gendisk +EXPORT_SYMBOL vmlinux 0xc3f0ff31 inet_confirm_addr +EXPORT_SYMBOL vmlinux 0xc3fe1859 nobh_write_end +EXPORT_SYMBOL vmlinux 0xc3fe2e4c blk_mq_can_queue +EXPORT_SYMBOL vmlinux 0xc4181ec2 unregister_netdev +EXPORT_SYMBOL vmlinux 0xc41c3a35 textsearch_register +EXPORT_SYMBOL vmlinux 0xc44488fb jbd2_journal_init_dev +EXPORT_SYMBOL vmlinux 0xc46a7f63 DWC_STRNCMP +EXPORT_SYMBOL vmlinux 0xc46ac026 inode_permission +EXPORT_SYMBOL vmlinux 0xc477da1f neigh_destroy +EXPORT_SYMBOL vmlinux 0xc47bb862 __dev_remove_pack +EXPORT_SYMBOL vmlinux 0xc499ae1e kstrdup +EXPORT_SYMBOL vmlinux 0xc4cea612 dwc_free_notification_manager +EXPORT_SYMBOL vmlinux 0xc4d71d30 netdev_bonding_info_change +EXPORT_SYMBOL vmlinux 0xc4e2339e blk_rq_map_integrity_sg +EXPORT_SYMBOL vmlinux 0xc503bbd5 udp_poll +EXPORT_SYMBOL vmlinux 0xc51d76ad dentry_update_name_case +EXPORT_SYMBOL vmlinux 0xc55b611a flush_old_exec +EXPORT_SYMBOL vmlinux 0xc573d349 inet6_unregister_icmp_sender +EXPORT_SYMBOL vmlinux 0xc5885750 sk_mc_loop +EXPORT_SYMBOL vmlinux 0xc58d30ca vfs_path_lookup +EXPORT_SYMBOL vmlinux 0xc594af0d snd_jack_set_parent +EXPORT_SYMBOL vmlinux 0xc599a772 security_xfrm_state_delete +EXPORT_SYMBOL vmlinux 0xc599f444 sdev_prefix_printk +EXPORT_SYMBOL vmlinux 0xc5ac527b __dynamic_dev_dbg +EXPORT_SYMBOL vmlinux 0xc5c6244f scsi_unregister +EXPORT_SYMBOL vmlinux 0xc5d613a3 skb_copy +EXPORT_SYMBOL vmlinux 0xc5deecc2 tty_mutex +EXPORT_SYMBOL vmlinux 0xc5e09e28 secpath_dup +EXPORT_SYMBOL vmlinux 0xc5fdef94 call_usermodehelper +EXPORT_SYMBOL vmlinux 0xc631580a console_unlock +EXPORT_SYMBOL vmlinux 0xc6510056 max8998_update_reg +EXPORT_SYMBOL vmlinux 0xc655961f fbcon_set_rotate +EXPORT_SYMBOL vmlinux 0xc65bb91e tty_free_termios +EXPORT_SYMBOL vmlinux 0xc65cf416 __pagevec_lru_add +EXPORT_SYMBOL vmlinux 0xc66fa6a6 ida_remove +EXPORT_SYMBOL vmlinux 0xc67d1efc __alloc_skb +EXPORT_SYMBOL vmlinux 0xc699bb9c cdrom_ioctl +EXPORT_SYMBOL vmlinux 0xc6a908bd mdio_bus_type +EXPORT_SYMBOL vmlinux 0xc6cbbc89 capable +EXPORT_SYMBOL vmlinux 0xc6d1ed88 skb_checksum_setup +EXPORT_SYMBOL vmlinux 0xc6de77b4 gen_new_estimator +EXPORT_SYMBOL vmlinux 0xc6f3742e tcp_release_cb +EXPORT_SYMBOL vmlinux 0xc703d810 max8925_reg_read +EXPORT_SYMBOL vmlinux 0xc7170b66 skb_dequeue +EXPORT_SYMBOL vmlinux 0xc7208c3a serial8250_resume_port +EXPORT_SYMBOL vmlinux 0xc7368905 mod_zone_page_state +EXPORT_SYMBOL vmlinux 0xc7398c8b __DWC_DMA_ALLOC +EXPORT_SYMBOL vmlinux 0xc73e979b snd_pcm_new_stream +EXPORT_SYMBOL vmlinux 0xc73ff510 pm860x_page_bulk_read +EXPORT_SYMBOL vmlinux 0xc74eb13b netdev_refcnt_read +EXPORT_SYMBOL vmlinux 0xc750087b of_mm_gpiochip_remove +EXPORT_SYMBOL vmlinux 0xc7550c86 __vlan_find_dev_deep_rcu +EXPORT_SYMBOL vmlinux 0xc7563db8 twl_set_regcache_bypass +EXPORT_SYMBOL vmlinux 0xc76aea0e dma_supported +EXPORT_SYMBOL vmlinux 0xc781bd9f rfkill_resume_polling +EXPORT_SYMBOL vmlinux 0xc7856a3d inet6addr_notifier_call_chain +EXPORT_SYMBOL vmlinux 0xc7910c45 inet_peer_xrlim_allow +EXPORT_SYMBOL vmlinux 0xc79ade0f nla_put_nohdr +EXPORT_SYMBOL vmlinux 0xc79bcd36 dm_vcalloc +EXPORT_SYMBOL vmlinux 0xc79c9334 up_write +EXPORT_SYMBOL vmlinux 0xc79d4528 input_mt_init_slots +EXPORT_SYMBOL vmlinux 0xc7a4fbed rtnl_lock +EXPORT_SYMBOL vmlinux 0xc7a8e2fb filemap_fault +EXPORT_SYMBOL vmlinux 0xc7a982ef __cleancache_invalidate_inode +EXPORT_SYMBOL vmlinux 0xc7ab4086 seqno_fence_ops +EXPORT_SYMBOL vmlinux 0xc7ab9390 dmam_pool_create +EXPORT_SYMBOL vmlinux 0xc7b49f70 netif_carrier_on +EXPORT_SYMBOL vmlinux 0xc7bb54e0 fb_get_buffer_offset +EXPORT_SYMBOL vmlinux 0xc7bcbc8d add_wait_queue +EXPORT_SYMBOL vmlinux 0xc7c482e0 generic_shutdown_super +EXPORT_SYMBOL vmlinux 0xc7e235f7 sk_filter +EXPORT_SYMBOL vmlinux 0xc7ec6c27 strspn +EXPORT_SYMBOL vmlinux 0xc7f4bedf gnet_stats_copy_rate_est +EXPORT_SYMBOL vmlinux 0xc814f20f mipi_dsi_dcs_exit_sleep_mode +EXPORT_SYMBOL vmlinux 0xc8169bf2 sk_dst_check +EXPORT_SYMBOL vmlinux 0xc8276a79 nf_hooks_needed +EXPORT_SYMBOL vmlinux 0xc8339e24 string_unescape +EXPORT_SYMBOL vmlinux 0xc83b4d5b posix_acl_from_mode +EXPORT_SYMBOL vmlinux 0xc84a0a7e seq_hlist_start_rcu +EXPORT_SYMBOL vmlinux 0xc872fd85 in6addr_interfacelocal_allnodes +EXPORT_SYMBOL vmlinux 0xc875a8f1 xfrm_dst_ifdown +EXPORT_SYMBOL vmlinux 0xc890c008 zlib_deflateEnd +EXPORT_SYMBOL vmlinux 0xc897a526 inet_dgram_connect +EXPORT_SYMBOL vmlinux 0xc8a91f5b cpumask_local_spread +EXPORT_SYMBOL vmlinux 0xc8ad4a0e snd_timer_notify +EXPORT_SYMBOL vmlinux 0xc8af3ab0 neigh_parms_release +EXPORT_SYMBOL vmlinux 0xc8b46dfd vfs_llseek +EXPORT_SYMBOL vmlinux 0xc8b507b7 vchiq_shutdown +EXPORT_SYMBOL vmlinux 0xc8b57c27 autoremove_wake_function +EXPORT_SYMBOL vmlinux 0xc8bc26de iov_iter_get_pages_alloc +EXPORT_SYMBOL vmlinux 0xc8c484c9 snd_pcm_suspend_all +EXPORT_SYMBOL vmlinux 0xc8cea35f __elv_add_request +EXPORT_SYMBOL vmlinux 0xc8eae0c1 __ip4_datagram_connect +EXPORT_SYMBOL vmlinux 0xc8f0c108 param_ops_ulong +EXPORT_SYMBOL vmlinux 0xc8fce2b1 jbd2_journal_clear_err +EXPORT_SYMBOL vmlinux 0xc905f45b snd_pcm_limit_hw_rates +EXPORT_SYMBOL vmlinux 0xc911b9d5 eth_get_headlen +EXPORT_SYMBOL vmlinux 0xc91b1816 snd_pcm_lib_write +EXPORT_SYMBOL vmlinux 0xc91dcee9 scsi_block_requests +EXPORT_SYMBOL vmlinux 0xc91e0813 ip6_xmit +EXPORT_SYMBOL vmlinux 0xc921d239 snd_jack_add_new_kctl +EXPORT_SYMBOL vmlinux 0xc924a3ec blk_rq_map_kern +EXPORT_SYMBOL vmlinux 0xc925321c truncate_inode_pages_final +EXPORT_SYMBOL vmlinux 0xc949f9a1 jbd2_journal_blocks_per_page +EXPORT_SYMBOL vmlinux 0xc9634df9 in6addr_linklocal_allrouters +EXPORT_SYMBOL vmlinux 0xc971e932 phy_print_status +EXPORT_SYMBOL vmlinux 0xc99e2a55 twl_rev +EXPORT_SYMBOL vmlinux 0xc9a14164 cdrom_media_changed +EXPORT_SYMBOL vmlinux 0xc9c7e520 mii_ethtool_sset +EXPORT_SYMBOL vmlinux 0xca0ec2cd twl6040_get_sysclk +EXPORT_SYMBOL vmlinux 0xca0f4667 readlink_copy +EXPORT_SYMBOL vmlinux 0xca130956 mm_vc_mem_base +EXPORT_SYMBOL vmlinux 0xca1c6717 security_old_inode_init_security +EXPORT_SYMBOL vmlinux 0xca27fa8c mipi_dsi_dcs_soft_reset +EXPORT_SYMBOL vmlinux 0xca387c12 security_d_instantiate +EXPORT_SYMBOL vmlinux 0xca4bbe19 dwc_unregister_notifier +EXPORT_SYMBOL vmlinux 0xca4d583e blk_queue_alignment_offset +EXPORT_SYMBOL vmlinux 0xca73846f register_netdev +EXPORT_SYMBOL vmlinux 0xca856684 DWC_MODIFY_REG32 +EXPORT_SYMBOL vmlinux 0xca8637d0 DWC_WORKQ_ALLOC +EXPORT_SYMBOL vmlinux 0xca9360b5 rb_next +EXPORT_SYMBOL vmlinux 0xcaa69d14 netlink_capable +EXPORT_SYMBOL vmlinux 0xcac4b7db tcf_em_tree_dump +EXPORT_SYMBOL vmlinux 0xcacf59db pneigh_enqueue +EXPORT_SYMBOL vmlinux 0xcad9c847 uart_write_wakeup +EXPORT_SYMBOL vmlinux 0xcaf2c603 scsi_sd_pm_domain +EXPORT_SYMBOL vmlinux 0xcaf5139d flow_cache_lookup +EXPORT_SYMBOL vmlinux 0xcaf6a27f __cleancache_init_shared_fs +EXPORT_SYMBOL vmlinux 0xcaff4dae padata_add_cpu +EXPORT_SYMBOL vmlinux 0xcb0288ea ledtrig_cpu +EXPORT_SYMBOL vmlinux 0xcb0548a8 sock_alloc_send_pskb +EXPORT_SYMBOL vmlinux 0xcb1327fe account_page_redirty +EXPORT_SYMBOL vmlinux 0xcb28d15c snd_timer_global_free +EXPORT_SYMBOL vmlinux 0xcb466063 wait_for_completion_killable_timeout +EXPORT_SYMBOL vmlinux 0xcb669927 mount_subtree +EXPORT_SYMBOL vmlinux 0xcb897ce7 __napi_alloc_skb +EXPORT_SYMBOL vmlinux 0xcb906e36 __mem_cgroup_count_vm_event +EXPORT_SYMBOL vmlinux 0xcb917fb0 find_lock_entry +EXPORT_SYMBOL vmlinux 0xcb9f297e generic_end_io_acct +EXPORT_SYMBOL vmlinux 0xcba84e38 mipi_dsi_dcs_write +EXPORT_SYMBOL vmlinux 0xcbb0394a dcache_dir_open +EXPORT_SYMBOL vmlinux 0xcbbf0a6f audit_log_task_context +EXPORT_SYMBOL vmlinux 0xcbc3020f cfb_imageblit +EXPORT_SYMBOL vmlinux 0xcbc9557f unregister_sysrq_key +EXPORT_SYMBOL vmlinux 0xcbeac4be hdmi_avi_infoframe_pack +EXPORT_SYMBOL vmlinux 0xcbeb37c5 dwc_register_notifier +EXPORT_SYMBOL vmlinux 0xcbee6439 ida_simple_get +EXPORT_SYMBOL vmlinux 0xcc0d7dd0 blk_queue_merge_bvec +EXPORT_SYMBOL vmlinux 0xcc248d26 serial8250_suspend_port +EXPORT_SYMBOL vmlinux 0xcc2a68ca textsearch_unregister +EXPORT_SYMBOL vmlinux 0xcc2b03dd d_hash_and_lookup +EXPORT_SYMBOL vmlinux 0xcc3f78ed get_cached_acl_rcu +EXPORT_SYMBOL vmlinux 0xcc4ada70 dev_printk +EXPORT_SYMBOL vmlinux 0xcc5005fe msleep_interruptible +EXPORT_SYMBOL vmlinux 0xcc533b27 dev_set_promiscuity +EXPORT_SYMBOL vmlinux 0xcc53a9b6 nobh_write_begin +EXPORT_SYMBOL vmlinux 0xcc6176b3 input_inject_event +EXPORT_SYMBOL vmlinux 0xcc6403d2 nf_log_register +EXPORT_SYMBOL vmlinux 0xcc9cb465 md_integrity_register +EXPORT_SYMBOL vmlinux 0xccbc6de9 input_event +EXPORT_SYMBOL vmlinux 0xccc21f5e input_get_new_minor +EXPORT_SYMBOL vmlinux 0xccc554fe __scsi_iterate_devices +EXPORT_SYMBOL vmlinux 0xccd65718 eth_type_trans +EXPORT_SYMBOL vmlinux 0xccdd64fc i2c_smbus_write_byte +EXPORT_SYMBOL vmlinux 0xcce248f0 gnet_stats_copy_queue +EXPORT_SYMBOL vmlinux 0xccfef64f skb_flow_dissector_init +EXPORT_SYMBOL vmlinux 0xcd083b10 unregister_sound_dsp +EXPORT_SYMBOL vmlinux 0xcd0fae56 dev_emerg +EXPORT_SYMBOL vmlinux 0xcd255ed4 sg_pcopy_from_buffer +EXPORT_SYMBOL vmlinux 0xcd279169 nla_find +EXPORT_SYMBOL vmlinux 0xcd28f217 devm_gen_pool_create +EXPORT_SYMBOL vmlinux 0xcd30b95a tmio_core_mmc_clk_div +EXPORT_SYMBOL vmlinux 0xcd4266c9 sock_create_kern +EXPORT_SYMBOL vmlinux 0xcd435952 snd_jack_new +EXPORT_SYMBOL vmlinux 0xcd477a83 tcp_gro_complete +EXPORT_SYMBOL vmlinux 0xcd4a9072 mii_check_media +EXPORT_SYMBOL vmlinux 0xcd504cf5 end_buffer_read_sync +EXPORT_SYMBOL vmlinux 0xcd63c845 __aeabi_lasr +EXPORT_SYMBOL vmlinux 0xcd7f70e5 tty_register_device +EXPORT_SYMBOL vmlinux 0xcd806565 tcp_md5_do_lookup +EXPORT_SYMBOL vmlinux 0xcd847465 netdev_warn +EXPORT_SYMBOL vmlinux 0xcd8d36f4 flow_get_u32_src +EXPORT_SYMBOL vmlinux 0xcdabbbbc __devm_request_region +EXPORT_SYMBOL vmlinux 0xcdc39c9e security_ismaclabel +EXPORT_SYMBOL vmlinux 0xcdc49e19 lockref_get +EXPORT_SYMBOL vmlinux 0xcdcf7d3f __DWC_ERROR +EXPORT_SYMBOL vmlinux 0xcde210ab dev_warn +EXPORT_SYMBOL vmlinux 0xce0f448b simple_rename +EXPORT_SYMBOL vmlinux 0xce148d51 dev_addr_add +EXPORT_SYMBOL vmlinux 0xce1d3801 qdisc_destroy +EXPORT_SYMBOL vmlinux 0xce2840e7 irq_set_irq_wake +EXPORT_SYMBOL vmlinux 0xce3ca308 copy_from_user_toio +EXPORT_SYMBOL vmlinux 0xce467324 netpoll_send_skb_on_dev +EXPORT_SYMBOL vmlinux 0xce5ac24f zlib_inflate_workspacesize +EXPORT_SYMBOL vmlinux 0xce886e59 iunique +EXPORT_SYMBOL vmlinux 0xceab0311 strchrnul +EXPORT_SYMBOL vmlinux 0xceadbe9a set_page_dirty_lock +EXPORT_SYMBOL vmlinux 0xceb8c09f sg_miter_start +EXPORT_SYMBOL vmlinux 0xcec782dd dquot_alloc_inode +EXPORT_SYMBOL vmlinux 0xcedb2eed sg_miter_next +EXPORT_SYMBOL vmlinux 0xcee40956 ac97_bus_type +EXPORT_SYMBOL vmlinux 0xceed7f85 _raw_write_unlock_irqrestore +EXPORT_SYMBOL vmlinux 0xcef51982 kstrtou16 +EXPORT_SYMBOL vmlinux 0xcefcd99a serial8250_unregister_port +EXPORT_SYMBOL vmlinux 0xcf040ed3 dquot_enable +EXPORT_SYMBOL vmlinux 0xcf117798 md_cluster_ops +EXPORT_SYMBOL vmlinux 0xcf246a82 DWC_MSLEEP +EXPORT_SYMBOL vmlinux 0xcf27e530 DWC_STRCPY +EXPORT_SYMBOL vmlinux 0xcf560ade mmc_detect_card_removed +EXPORT_SYMBOL vmlinux 0xcf6a1f26 cfb_fillrect +EXPORT_SYMBOL vmlinux 0xcf75751d generic_block_fiemap +EXPORT_SYMBOL vmlinux 0xcf7b7b0a d_instantiate +EXPORT_SYMBOL vmlinux 0xcf88625f mempool_create_node +EXPORT_SYMBOL vmlinux 0xcf9ba79f do_splice_direct +EXPORT_SYMBOL vmlinux 0xcf9c513d dev_get_iflink +EXPORT_SYMBOL vmlinux 0xcfa21d1b uart_unregister_driver +EXPORT_SYMBOL vmlinux 0xcfbdc014 snd_pcm_hw_constraint_integer +EXPORT_SYMBOL vmlinux 0xcfc05ffb tty_schedule_flip +EXPORT_SYMBOL vmlinux 0xcff6b676 _raw_spin_trylock_bh +EXPORT_SYMBOL vmlinux 0xcff8fab4 skb_page_frag_refill +EXPORT_SYMBOL vmlinux 0xd012bce7 set_security_override +EXPORT_SYMBOL vmlinux 0xd01b360a blk_dump_rq_flags +EXPORT_SYMBOL vmlinux 0xd034105f lockref_put_return +EXPORT_SYMBOL vmlinux 0xd03dc6f9 blk_rq_set_block_pc +EXPORT_SYMBOL vmlinux 0xd0434cbf mmc_gpiod_request_ro +EXPORT_SYMBOL vmlinux 0xd05760b6 dentry_unhash +EXPORT_SYMBOL vmlinux 0xd06997cd snd_card_register +EXPORT_SYMBOL vmlinux 0xd06d4ef5 vchiq_queue_bulk_receive +EXPORT_SYMBOL vmlinux 0xd0720a17 on_each_cpu_cond +EXPORT_SYMBOL vmlinux 0xd07f9c32 lease_modify +EXPORT_SYMBOL vmlinux 0xd09508ed tcp_init_cgroup +EXPORT_SYMBOL vmlinux 0xd09b0199 fence_context_alloc +EXPORT_SYMBOL vmlinux 0xd0a2847c sha_init +EXPORT_SYMBOL vmlinux 0xd0a91bab skip_spaces +EXPORT_SYMBOL vmlinux 0xd0b3adfa tcp_shutdown +EXPORT_SYMBOL vmlinux 0xd0d54274 send_sig_info +EXPORT_SYMBOL vmlinux 0xd0ee38b8 schedule_timeout_uninterruptible +EXPORT_SYMBOL vmlinux 0xd0f36f0d audit_log_format +EXPORT_SYMBOL vmlinux 0xd0fb7cd4 __tasklet_hi_schedule_first +EXPORT_SYMBOL vmlinux 0xd100acbd _raw_write_lock +EXPORT_SYMBOL vmlinux 0xd1157735 release_and_free_resource +EXPORT_SYMBOL vmlinux 0xd11663a6 of_gpio_simple_xlate +EXPORT_SYMBOL vmlinux 0xd11be8f0 cros_ec_query_all +EXPORT_SYMBOL vmlinux 0xd12e65e6 mb_cache_entry_find_first +EXPORT_SYMBOL vmlinux 0xd131e57c i2c_smbus_read_i2c_block_data +EXPORT_SYMBOL vmlinux 0xd13648d8 blk_peek_request +EXPORT_SYMBOL vmlinux 0xd13b4d69 vchi_msg_queue +EXPORT_SYMBOL vmlinux 0xd141edcc serial8250_do_pm +EXPORT_SYMBOL vmlinux 0xd142f582 down_write_trylock +EXPORT_SYMBOL vmlinux 0xd145382d sk_stream_write_space +EXPORT_SYMBOL vmlinux 0xd176e0e8 xfrm_input_resume +EXPORT_SYMBOL vmlinux 0xd1816f32 frontswap_writethrough +EXPORT_SYMBOL vmlinux 0xd196c9be kstrtos16_from_user +EXPORT_SYMBOL vmlinux 0xd1a32ec9 security_sb_set_mnt_opts +EXPORT_SYMBOL vmlinux 0xd1ab0669 dmam_free_noncoherent +EXPORT_SYMBOL vmlinux 0xd1b2d6a3 DWC_PRINTF +EXPORT_SYMBOL vmlinux 0xd1b377bc __scm_destroy +EXPORT_SYMBOL vmlinux 0xd1b3e636 get_user_pages_locked +EXPORT_SYMBOL vmlinux 0xd1b5cc34 swiotlb_sync_sg_for_cpu +EXPORT_SYMBOL vmlinux 0xd1c84dfb hdmi_audio_infoframe_pack +EXPORT_SYMBOL vmlinux 0xd1d87e92 scsi_mlreturn_string +EXPORT_SYMBOL vmlinux 0xd1e79cae fence_wait_timeout +EXPORT_SYMBOL vmlinux 0xd220cf8a jiffies_to_timespec +EXPORT_SYMBOL vmlinux 0xd24e08b4 nf_log_set +EXPORT_SYMBOL vmlinux 0xd251d7b0 security_socket_getpeersec_dgram +EXPORT_SYMBOL vmlinux 0xd254a4a0 clkdev_alloc +EXPORT_SYMBOL vmlinux 0xd2555f19 jiffies_64_to_clock_t +EXPORT_SYMBOL vmlinux 0xd25d0abf nla_put +EXPORT_SYMBOL vmlinux 0xd25d4f74 console_blank_hook +EXPORT_SYMBOL vmlinux 0xd26bcf8f tcf_em_register +EXPORT_SYMBOL vmlinux 0xd27b25dd blk_check_plugged +EXPORT_SYMBOL vmlinux 0xd27fbd47 mmc_flush_cache +EXPORT_SYMBOL vmlinux 0xd28983cd input_mt_report_finger_count +EXPORT_SYMBOL vmlinux 0xd2af138b reservation_ww_class +EXPORT_SYMBOL vmlinux 0xd2d1ef30 param_set_byte +EXPORT_SYMBOL vmlinux 0xd2da1048 register_netdevice_notifier +EXPORT_SYMBOL vmlinux 0xd2de86de DWC_MEMMOVE +EXPORT_SYMBOL vmlinux 0xd30b731a dev_getbyhwaddr_rcu +EXPORT_SYMBOL vmlinux 0xd319eb16 blk_register_region +EXPORT_SYMBOL vmlinux 0xd31ccb06 of_machine_is_compatible +EXPORT_SYMBOL vmlinux 0xd327cdb0 tcp_child_process +EXPORT_SYMBOL vmlinux 0xd32a78ae seq_pad +EXPORT_SYMBOL vmlinux 0xd3618d6e scsi_cmd_get_serial +EXPORT_SYMBOL vmlinux 0xd365b772 skb_checksum_help +EXPORT_SYMBOL vmlinux 0xd3aa5a0a generic_file_read_iter +EXPORT_SYMBOL vmlinux 0xd3ad866a eth_gro_complete +EXPORT_SYMBOL vmlinux 0xd3db5b36 posix_test_lock +EXPORT_SYMBOL vmlinux 0xd3dbfbc4 _find_first_zero_bit_le +EXPORT_SYMBOL vmlinux 0xd3e6f60d cpu_possible_mask +EXPORT_SYMBOL vmlinux 0xd3f14bee write_inode_now +EXPORT_SYMBOL vmlinux 0xd3f3ca73 scsi_command_normalize_sense +EXPORT_SYMBOL vmlinux 0xd418e1c0 adjust_resource +EXPORT_SYMBOL vmlinux 0xd4270973 scsi_add_host_with_dma +EXPORT_SYMBOL vmlinux 0xd4669fad complete +EXPORT_SYMBOL vmlinux 0xd47dc63e rtnl_set_sk_err +EXPORT_SYMBOL vmlinux 0xd4a63162 tty_port_raise_dtr_rts +EXPORT_SYMBOL vmlinux 0xd4b88ee3 jbd2_journal_start +EXPORT_SYMBOL vmlinux 0xd4d3e034 __pskb_copy_fclone +EXPORT_SYMBOL vmlinux 0xd4e03a20 snd_device_register +EXPORT_SYMBOL vmlinux 0xd4fb7887 scsi_target_quiesce +EXPORT_SYMBOL vmlinux 0xd5152710 sg_next +EXPORT_SYMBOL vmlinux 0xd526338b sk_free +EXPORT_SYMBOL vmlinux 0xd54f41ce try_to_del_timer_sync +EXPORT_SYMBOL vmlinux 0xd5643bd2 sock_setsockopt +EXPORT_SYMBOL vmlinux 0xd57ea80f generic_file_direct_write +EXPORT_SYMBOL vmlinux 0xd59e0c7d phy_init_eee +EXPORT_SYMBOL vmlinux 0xd59ff30f snd_timer_pause +EXPORT_SYMBOL vmlinux 0xd5a5bb30 devfreq_unregister_opp_notifier +EXPORT_SYMBOL vmlinux 0xd5e009a5 of_find_i2c_adapter_by_node +EXPORT_SYMBOL vmlinux 0xd5f52d4f netdev_rss_key_fill +EXPORT_SYMBOL vmlinux 0xd5f6446c __cleancache_get_page +EXPORT_SYMBOL vmlinux 0xd5fb0c1e of_get_next_parent +EXPORT_SYMBOL vmlinux 0xd61347c6 register_sysctl +EXPORT_SYMBOL vmlinux 0xd61378d4 udp_flush_pending_frames +EXPORT_SYMBOL vmlinux 0xd615642f sched_autogroup_detach +EXPORT_SYMBOL vmlinux 0xd616683a ecryptfs_fill_auth_tok +EXPORT_SYMBOL vmlinux 0xd620a2cb phy_stop +EXPORT_SYMBOL vmlinux 0xd627480b strncat +EXPORT_SYMBOL vmlinux 0xd62c833f schedule_timeout +EXPORT_SYMBOL vmlinux 0xd633413d param_ops_int +EXPORT_SYMBOL vmlinux 0xd641e6ae sk_alloc +EXPORT_SYMBOL vmlinux 0xd648e564 fb_match_mode +EXPORT_SYMBOL vmlinux 0xd64f8729 sched_autogroup_create_attach +EXPORT_SYMBOL vmlinux 0xd66638fd freezing_slow_path +EXPORT_SYMBOL vmlinux 0xd66b867b md_flush_request +EXPORT_SYMBOL vmlinux 0xd66c9fee sg_alloc_table_from_pages +EXPORT_SYMBOL vmlinux 0xd677b339 dec_zone_page_state +EXPORT_SYMBOL vmlinux 0xd67944d0 mdiobus_read +EXPORT_SYMBOL vmlinux 0xd688716b dm_kcopyd_client_create +EXPORT_SYMBOL vmlinux 0xd6891921 DWC_WORKQ_SCHEDULE_DELAYED +EXPORT_SYMBOL vmlinux 0xd69e20c3 unlock_two_nondirectories +EXPORT_SYMBOL vmlinux 0xd6c42eb7 of_get_parent +EXPORT_SYMBOL vmlinux 0xd6e15128 redraw_screen +EXPORT_SYMBOL vmlinux 0xd6e50f38 eth_prepare_mac_addr_change +EXPORT_SYMBOL vmlinux 0xd6ebdad5 generic_setxattr +EXPORT_SYMBOL vmlinux 0xd6ee688f vmalloc +EXPORT_SYMBOL vmlinux 0xd6f0855a of_parse_phandle_with_fixed_args +EXPORT_SYMBOL vmlinux 0xd70b56f7 bcm_dmaman_probe +EXPORT_SYMBOL vmlinux 0xd70f6ac3 shrink_dcache_sb +EXPORT_SYMBOL vmlinux 0xd73d0a76 snd_ctl_add +EXPORT_SYMBOL vmlinux 0xd74289f9 __percpu_counter_add +EXPORT_SYMBOL vmlinux 0xd7473153 __quota_error +EXPORT_SYMBOL vmlinux 0xd7481b13 blk_rq_map_sg +EXPORT_SYMBOL vmlinux 0xd749364d gro_find_complete_by_type +EXPORT_SYMBOL vmlinux 0xd75c79df smp_call_function +EXPORT_SYMBOL vmlinux 0xd75f42b2 blk_limits_io_opt +EXPORT_SYMBOL vmlinux 0xd769a2c2 devm_ioremap_wc +EXPORT_SYMBOL vmlinux 0xd76f3b8b snd_info_register +EXPORT_SYMBOL vmlinux 0xd78025ae gen_pool_create +EXPORT_SYMBOL vmlinux 0xd78e6f89 security_skb_classify_flow +EXPORT_SYMBOL vmlinux 0xd792990e tcp_sendmsg +EXPORT_SYMBOL vmlinux 0xd7adb130 tcp_simple_retransmit +EXPORT_SYMBOL vmlinux 0xd7b3cfae __fib6_flush_trees +EXPORT_SYMBOL vmlinux 0xd7bf4268 DWC_WAITQ_FREE +EXPORT_SYMBOL vmlinux 0xd7e56a4e simple_strtoll +EXPORT_SYMBOL vmlinux 0xd7ea7094 nf_unregister_queue_handler +EXPORT_SYMBOL vmlinux 0xd7fa2bff fsnotify_destroy_mark +EXPORT_SYMBOL vmlinux 0xd8132f52 blk_queue_init_tags +EXPORT_SYMBOL vmlinux 0xd8225c13 simple_write_end +EXPORT_SYMBOL vmlinux 0xd8378725 no_llseek +EXPORT_SYMBOL vmlinux 0xd85cd67e __wake_up +EXPORT_SYMBOL vmlinux 0xd89ea53f __netif_schedule +EXPORT_SYMBOL vmlinux 0xd8a994eb scsi_extd_sense_format +EXPORT_SYMBOL vmlinux 0xd8aae00b netif_receive_skb_sk +EXPORT_SYMBOL vmlinux 0xd8cfc0ce bio_integrity_trim +EXPORT_SYMBOL vmlinux 0xd8ded085 radix_tree_maybe_preload +EXPORT_SYMBOL vmlinux 0xd8df5e8a crypto_sha256_finup +EXPORT_SYMBOL vmlinux 0xd8e484f0 register_chrdev_region +EXPORT_SYMBOL vmlinux 0xd9070806 snd_pcm_lib_readv +EXPORT_SYMBOL vmlinux 0xd90ef546 blk_rq_unmap_user +EXPORT_SYMBOL vmlinux 0xd910ae73 netlink_broadcast +EXPORT_SYMBOL vmlinux 0xd91437b4 replace_mount_options +EXPORT_SYMBOL vmlinux 0xd915c913 set_create_files_as +EXPORT_SYMBOL vmlinux 0xd92be284 generic_file_mmap +EXPORT_SYMBOL vmlinux 0xd92e32d4 tcp_init_sock +EXPORT_SYMBOL vmlinux 0xd943389c xfrm_policy_register_afinfo +EXPORT_SYMBOL vmlinux 0xd94f6a64 dev_disable_lro +EXPORT_SYMBOL vmlinux 0xd97edd47 neigh_proc_dointvec +EXPORT_SYMBOL vmlinux 0xd985dc99 mempool_free_pages +EXPORT_SYMBOL vmlinux 0xd98b2c88 mmc_wait_for_app_cmd +EXPORT_SYMBOL vmlinux 0xd9ba25ce tcf_action_dump_1 +EXPORT_SYMBOL vmlinux 0xd9cc2cd4 phy_get_eee_err +EXPORT_SYMBOL vmlinux 0xd9ce8f0c strnlen +EXPORT_SYMBOL vmlinux 0xd9d8fd16 register_restart_handler +EXPORT_SYMBOL vmlinux 0xda0684ff account_page_dirtied +EXPORT_SYMBOL vmlinux 0xda18cc05 snd_pcm_lib_free_pages +EXPORT_SYMBOL vmlinux 0xda1effde sock_sendmsg +EXPORT_SYMBOL vmlinux 0xda29371b d_drop +EXPORT_SYMBOL vmlinux 0xda3d10a8 security_tun_dev_open +EXPORT_SYMBOL vmlinux 0xda440aa6 mmc_gpio_get_cd +EXPORT_SYMBOL vmlinux 0xda4aabaf tty_driver_kref_put +EXPORT_SYMBOL vmlinux 0xda7ca6cb fb_mode_is_equal +EXPORT_SYMBOL vmlinux 0xda862e9d mfd_cell_enable +EXPORT_SYMBOL vmlinux 0xda8af7ad fb_find_nearest_mode +EXPORT_SYMBOL vmlinux 0xda92e4a6 simple_dentry_operations +EXPORT_SYMBOL vmlinux 0xda9c8758 bio_integrity_enabled +EXPORT_SYMBOL vmlinux 0xdaa20a30 i2c_put_adapter +EXPORT_SYMBOL vmlinux 0xdaafc807 tcp_sockets_allocated +EXPORT_SYMBOL vmlinux 0xdab4c1b5 snd_timer_new +EXPORT_SYMBOL vmlinux 0xdac4913a bitmap_allocate_region +EXPORT_SYMBOL vmlinux 0xdad97f94 __raw_writesw +EXPORT_SYMBOL vmlinux 0xdae4e6c6 blk_sync_queue +EXPORT_SYMBOL vmlinux 0xdaf6826f md_check_no_bitmap +EXPORT_SYMBOL vmlinux 0xdaf976b3 tcp_getsockopt +EXPORT_SYMBOL vmlinux 0xdb1c57c7 ipv6_chk_addr_and_flags +EXPORT_SYMBOL vmlinux 0xdb594546 param_ops_ushort +EXPORT_SYMBOL vmlinux 0xdb5ac847 snd_pcm_lib_free_vmalloc_buffer +EXPORT_SYMBOL vmlinux 0xdb67ce0d of_mdio_find_bus +EXPORT_SYMBOL vmlinux 0xdb68bbad rfkill_destroy +EXPORT_SYMBOL vmlinux 0xdb6b701c iov_iter_alignment +EXPORT_SYMBOL vmlinux 0xdb6dce8c set_disk_ro +EXPORT_SYMBOL vmlinux 0xdb7235ad vlan_vid_add +EXPORT_SYMBOL vmlinux 0xdb7305a1 __stack_chk_fail +EXPORT_SYMBOL vmlinux 0xdb760f52 __kfifo_free +EXPORT_SYMBOL vmlinux 0xdb9bf801 cdrom_mode_sense +EXPORT_SYMBOL vmlinux 0xdbd6d37a scsi_ioctl_reset +EXPORT_SYMBOL vmlinux 0xdc047fc4 scsi_dev_info_list_add_keyed +EXPORT_SYMBOL vmlinux 0xdc182891 neigh_changeaddr +EXPORT_SYMBOL vmlinux 0xdc1faed7 put_tty_driver +EXPORT_SYMBOL vmlinux 0xdc20c067 sock_dequeue_err_skb +EXPORT_SYMBOL vmlinux 0xdc316440 vmap +EXPORT_SYMBOL vmlinux 0xdc3fcbc9 __sw_hweight8 +EXPORT_SYMBOL vmlinux 0xdc512134 backlight_register_notifier +EXPORT_SYMBOL vmlinux 0xdc6f8339 padata_set_cpumask +EXPORT_SYMBOL vmlinux 0xdc8047b9 mmc_detect_change +EXPORT_SYMBOL vmlinux 0xdc987e8c snd_pcm_lib_get_vmalloc_page +EXPORT_SYMBOL vmlinux 0xdc9afb31 blk_queue_physical_block_size +EXPORT_SYMBOL vmlinux 0xdc9db420 fb_prepare_logo +EXPORT_SYMBOL vmlinux 0xdcb0349b sys_close +EXPORT_SYMBOL vmlinux 0xdccc11a7 __sb_start_write +EXPORT_SYMBOL vmlinux 0xdceabb18 phys_mem_access_prot +EXPORT_SYMBOL vmlinux 0xdcfbbcdc mmc_wait_for_cmd +EXPORT_SYMBOL vmlinux 0xdd00006a freeze_super +EXPORT_SYMBOL vmlinux 0xdd0a2ba2 strlcat +EXPORT_SYMBOL vmlinux 0xdd136663 xfrm_state_walk +EXPORT_SYMBOL vmlinux 0xdd1453c1 request_key_with_auxdata +EXPORT_SYMBOL vmlinux 0xdd226fa9 __raw_readsw +EXPORT_SYMBOL vmlinux 0xdd22c6e8 vfs_fsync_range +EXPORT_SYMBOL vmlinux 0xdd27fa87 memchr +EXPORT_SYMBOL vmlinux 0xdd286b53 snd_ctl_rename_id +EXPORT_SYMBOL vmlinux 0xdd35d5de clk_register_clkdevs +EXPORT_SYMBOL vmlinux 0xdd3916ac _raw_spin_unlock_bh +EXPORT_SYMBOL vmlinux 0xdd40a0c3 param_get_uint +EXPORT_SYMBOL vmlinux 0xdd52e6ca filemap_fdatawait +EXPORT_SYMBOL vmlinux 0xdd594d65 snd_ctl_boolean_mono_info +EXPORT_SYMBOL vmlinux 0xde0f7615 textsearch_prepare +EXPORT_SYMBOL vmlinux 0xde191137 xfrm_state_lookup +EXPORT_SYMBOL vmlinux 0xde234686 give_up_console +EXPORT_SYMBOL vmlinux 0xde4f253b vfs_getxattr_alloc +EXPORT_SYMBOL vmlinux 0xde648bbd param_ops_string +EXPORT_SYMBOL vmlinux 0xde8eba93 blk_cleanup_queue +EXPORT_SYMBOL vmlinux 0xde9360ba totalram_pages +EXPORT_SYMBOL vmlinux 0xdeb03405 udp_del_offload +EXPORT_SYMBOL vmlinux 0xdeb39cdd skb_queue_head +EXPORT_SYMBOL vmlinux 0xdecbd74a mfd_cell_disable +EXPORT_SYMBOL vmlinux 0xdf20f87c generic_file_llseek +EXPORT_SYMBOL vmlinux 0xdf273682 bd_set_size +EXPORT_SYMBOL vmlinux 0xdf2c2742 rb_last +EXPORT_SYMBOL vmlinux 0xdf36aaed DWC_TASK_SCHEDULE +EXPORT_SYMBOL vmlinux 0xdf3a693d crc_t10dif_update +EXPORT_SYMBOL vmlinux 0xdf4451bc snd_pcm_hw_constraint_ranges +EXPORT_SYMBOL vmlinux 0xdf54a8f7 netlink_unregister_notifier +EXPORT_SYMBOL vmlinux 0xdf60cc27 __print_symbol +EXPORT_SYMBOL vmlinux 0xdf680f95 xfrm_unregister_km +EXPORT_SYMBOL vmlinux 0xdf8f2d7e netdev_alert +EXPORT_SYMBOL vmlinux 0xdf929370 fs_overflowgid +EXPORT_SYMBOL vmlinux 0xdf968081 ppp_register_net_channel +EXPORT_SYMBOL vmlinux 0xdfa7b9f5 bioset_integrity_create +EXPORT_SYMBOL vmlinux 0xdfb6ed53 of_device_alloc +EXPORT_SYMBOL vmlinux 0xdfc25d1a genphy_update_link +EXPORT_SYMBOL vmlinux 0xdfc5169b slhc_init +EXPORT_SYMBOL vmlinux 0xdfc74c9a arm_dma_ops +EXPORT_SYMBOL vmlinux 0xdfd0fe3e vc_cons +EXPORT_SYMBOL vmlinux 0xdfd42055 abx500_register_ops +EXPORT_SYMBOL vmlinux 0xdfdae52f blk_mq_abort_requeue_list +EXPORT_SYMBOL vmlinux 0xe04d2708 snd_card_disconnect +EXPORT_SYMBOL vmlinux 0xe04f7caa dm_read_arg_group +EXPORT_SYMBOL vmlinux 0xe0540b06 pskb_expand_head +EXPORT_SYMBOL vmlinux 0xe06141e9 security_sk_clone +EXPORT_SYMBOL vmlinux 0xe075d6eb iter_div_u64_rem +EXPORT_SYMBOL vmlinux 0xe083e246 gen_pool_first_fit_order_align +EXPORT_SYMBOL vmlinux 0xe099118d proto_register +EXPORT_SYMBOL vmlinux 0xe0b13336 argv_free +EXPORT_SYMBOL vmlinux 0xe0b51353 DWC_WORKQ_FREE +EXPORT_SYMBOL vmlinux 0xe0c5fe3d rps_may_expire_flow +EXPORT_SYMBOL vmlinux 0xe113bbbc csum_partial +EXPORT_SYMBOL vmlinux 0xe127fb18 down_killable +EXPORT_SYMBOL vmlinux 0xe13b96d5 pm_vt_switch_required +EXPORT_SYMBOL vmlinux 0xe152bb73 elevator_change +EXPORT_SYMBOL vmlinux 0xe16ab618 zpool_register_driver +EXPORT_SYMBOL vmlinux 0xe1761617 security_inet_conn_request +EXPORT_SYMBOL vmlinux 0xe1786c32 make_flow_keys_digest +EXPORT_SYMBOL vmlinux 0xe1a6c3c8 do_truncate +EXPORT_SYMBOL vmlinux 0xe1ac769d snd_timer_continue +EXPORT_SYMBOL vmlinux 0xe1b3c591 serio_close +EXPORT_SYMBOL vmlinux 0xe1db42ea tcp_v4_destroy_sock +EXPORT_SYMBOL vmlinux 0xe1e3e412 input_release_device +EXPORT_SYMBOL vmlinux 0xe1f0ab3a _raw_read_lock_irqsave +EXPORT_SYMBOL vmlinux 0xe1f589fb blk_mq_start_stopped_hw_queues +EXPORT_SYMBOL vmlinux 0xe1f76a2e skb_realloc_headroom +EXPORT_SYMBOL vmlinux 0xe1f82adf scsi_host_set_state +EXPORT_SYMBOL vmlinux 0xe1fb6c03 __task_pid_nr_ns +EXPORT_SYMBOL vmlinux 0xe200f872 secure_dccpv6_sequence_number +EXPORT_SYMBOL vmlinux 0xe227f3cf __skb_warn_lro_forwarding +EXPORT_SYMBOL vmlinux 0xe23ae481 blk_iopoll_complete +EXPORT_SYMBOL vmlinux 0xe24d3a97 jiffies_64 +EXPORT_SYMBOL vmlinux 0xe265f4c9 kmem_cache_shrink +EXPORT_SYMBOL vmlinux 0xe2665736 padata_start +EXPORT_SYMBOL vmlinux 0xe27dcfeb vfs_getattr_nosec +EXPORT_SYMBOL vmlinux 0xe2847bc3 jbd2_log_wait_commit +EXPORT_SYMBOL vmlinux 0xe292fb9f gen_pool_virt_to_phys +EXPORT_SYMBOL vmlinux 0xe29e1d0e out_of_line_wait_on_atomic_t +EXPORT_SYMBOL vmlinux 0xe2c02690 skb_clone +EXPORT_SYMBOL vmlinux 0xe2c730c4 ipv6_chk_custom_prefix +EXPORT_SYMBOL vmlinux 0xe2d5255a strcmp +EXPORT_SYMBOL vmlinux 0xe2d77413 tty_hung_up_p +EXPORT_SYMBOL vmlinux 0xe2e8065e memdup_user +EXPORT_SYMBOL vmlinux 0xe2e8d54a DWC_SPINLOCK_FREE +EXPORT_SYMBOL vmlinux 0xe2f425e7 rps_cpu_mask +EXPORT_SYMBOL vmlinux 0xe2fae716 kmemdup +EXPORT_SYMBOL vmlinux 0xe30bcb49 __brelse +EXPORT_SYMBOL vmlinux 0xe31592d4 from_kgid_munged +EXPORT_SYMBOL vmlinux 0xe3313c40 xfrm_init_state +EXPORT_SYMBOL vmlinux 0xe375938e prepare_kernel_cred +EXPORT_SYMBOL vmlinux 0xe376b791 DWC_SPINUNLOCK_IRQRESTORE +EXPORT_SYMBOL vmlinux 0xe37a86e3 scsi_host_put +EXPORT_SYMBOL vmlinux 0xe38e05d1 mmc_get_card +EXPORT_SYMBOL vmlinux 0xe38fe28a dquot_quotactl_sysfile_ops +EXPORT_SYMBOL vmlinux 0xe3bca4ca dwc_alloc_notification_manager +EXPORT_SYMBOL vmlinux 0xe3d6f284 fb_find_mode_cvt +EXPORT_SYMBOL vmlinux 0xe3fb24bd of_cpufreq_power_cooling_register +EXPORT_SYMBOL vmlinux 0xe40cef53 tty_port_free_xmit_buf +EXPORT_SYMBOL vmlinux 0xe43274bc proc_dointvec +EXPORT_SYMBOL vmlinux 0xe47d0f85 fsnotify_add_mark +EXPORT_SYMBOL vmlinux 0xe4a14765 xfrm_policy_bysel_ctx +EXPORT_SYMBOL vmlinux 0xe4c80097 cacheid +EXPORT_SYMBOL vmlinux 0xe4f8778d simple_follow_link +EXPORT_SYMBOL vmlinux 0xe4fad8df of_find_compatible_node +EXPORT_SYMBOL vmlinux 0xe523ad75 synchronize_irq +EXPORT_SYMBOL vmlinux 0xe5367349 zpool_unregister_driver +EXPORT_SYMBOL vmlinux 0xe5501618 of_count_phandle_with_args +EXPORT_SYMBOL vmlinux 0xe558961d twl6040_get_pll +EXPORT_SYMBOL vmlinux 0xe55f979e seq_dentry +EXPORT_SYMBOL vmlinux 0xe5648e8b sk_stream_wait_connect +EXPORT_SYMBOL vmlinux 0xe56a9336 snd_pcm_format_width +EXPORT_SYMBOL vmlinux 0xe56bee39 fb_get_mode +EXPORT_SYMBOL vmlinux 0xe56f9265 dm_put_device +EXPORT_SYMBOL vmlinux 0xe571efc3 textsearch_find_continuous +EXPORT_SYMBOL vmlinux 0xe5744fe9 inet_sendpage +EXPORT_SYMBOL vmlinux 0xe576014b kern_path_mountpoint +EXPORT_SYMBOL vmlinux 0xe57878a1 in6_pton +EXPORT_SYMBOL vmlinux 0xe5792684 sk_common_release +EXPORT_SYMBOL vmlinux 0xe582f13f get_mem_type +EXPORT_SYMBOL vmlinux 0xe5867808 dlci_ioctl_set +EXPORT_SYMBOL vmlinux 0xe59166dc sg_copy_buffer +EXPORT_SYMBOL vmlinux 0xe5a35438 pm860x_reg_write +EXPORT_SYMBOL vmlinux 0xe5a51f88 xfrm6_rcv_cb +EXPORT_SYMBOL vmlinux 0xe5a73a44 input_mt_get_slot_by_key +EXPORT_SYMBOL vmlinux 0xe5ae823e eth_header_cache +EXPORT_SYMBOL vmlinux 0xe5b5d651 vchi_bulk_queue_transmit +EXPORT_SYMBOL vmlinux 0xe5bfe8b5 nf_nat_decode_session_hook +EXPORT_SYMBOL vmlinux 0xe5c78a99 do_blank_screen +EXPORT_SYMBOL vmlinux 0xe5cb066c dev_get_by_name +EXPORT_SYMBOL vmlinux 0xe5cb6663 dm_get_device +EXPORT_SYMBOL vmlinux 0xe5ed5467 xfrm_policy_walk_init +EXPORT_SYMBOL vmlinux 0xe5f37b77 module_refcount +EXPORT_SYMBOL vmlinux 0xe6187e67 udp_lib_getsockopt +EXPORT_SYMBOL vmlinux 0xe622adeb set_nlink +EXPORT_SYMBOL vmlinux 0xe637cdbf sock_update_memcg +EXPORT_SYMBOL vmlinux 0xe63a2907 snd_unregister_device +EXPORT_SYMBOL vmlinux 0xe6443235 of_graph_get_next_endpoint +EXPORT_SYMBOL vmlinux 0xe653ab77 __generic_file_write_iter +EXPORT_SYMBOL vmlinux 0xe654aadc inet6_ioctl +EXPORT_SYMBOL vmlinux 0xe656711c __inc_zone_page_state +EXPORT_SYMBOL vmlinux 0xe65f4a9b skb_unlink +EXPORT_SYMBOL vmlinux 0xe66452ab dql_init +EXPORT_SYMBOL vmlinux 0xe697d108 __blk_iopoll_complete +EXPORT_SYMBOL vmlinux 0xe6aa2652 qdisc_watchdog_schedule_ns +EXPORT_SYMBOL vmlinux 0xe6af7db1 forget_cached_acl +EXPORT_SYMBOL vmlinux 0xe6c1893b inet_rtx_syn_ack +EXPORT_SYMBOL vmlinux 0xe6c8f1a0 kernel_listen +EXPORT_SYMBOL vmlinux 0xe6cc7c81 qdisc_create_dflt +EXPORT_SYMBOL vmlinux 0xe6d96923 iov_iter_zero +EXPORT_SYMBOL vmlinux 0xe6eae205 scsi_is_sdev_device +EXPORT_SYMBOL vmlinux 0xe6ebc016 key_create_or_update +EXPORT_SYMBOL vmlinux 0xe6f3f5aa md_write_start +EXPORT_SYMBOL vmlinux 0xe6fbe430 can_do_mlock +EXPORT_SYMBOL vmlinux 0xe7075b97 idr_alloc_cyclic +EXPORT_SYMBOL vmlinux 0xe707ac64 nand_bch_calculate_ecc +EXPORT_SYMBOL vmlinux 0xe707d823 __aeabi_uidiv +EXPORT_SYMBOL vmlinux 0xe72f0822 xfrm_state_check_expire +EXPORT_SYMBOL vmlinux 0xe7477d56 clear_wb_congested +EXPORT_SYMBOL vmlinux 0xe74e1267 serio_unregister_driver +EXPORT_SYMBOL vmlinux 0xe7839bf5 blk_end_request_cur +EXPORT_SYMBOL vmlinux 0xe7a22a63 simple_link +EXPORT_SYMBOL vmlinux 0xe7a664c4 nf_hooks +EXPORT_SYMBOL vmlinux 0xe7a81967 audit_log_secctx +EXPORT_SYMBOL vmlinux 0xe7b6315e kblockd_schedule_delayed_work_on +EXPORT_SYMBOL vmlinux 0xe7c516b7 blk_queue_find_tag +EXPORT_SYMBOL vmlinux 0xe7d4daac seq_list_next +EXPORT_SYMBOL vmlinux 0xe7d76e88 may_umount_tree +EXPORT_SYMBOL vmlinux 0xe7e49361 mipi_dsi_dcs_write_buffer +EXPORT_SYMBOL vmlinux 0xe813ce52 blk_mq_requeue_request +EXPORT_SYMBOL vmlinux 0xe8214184 tcf_exts_destroy +EXPORT_SYMBOL vmlinux 0xe83e1430 netlink_net_capable +EXPORT_SYMBOL vmlinux 0xe846828d eth_change_mtu +EXPORT_SYMBOL vmlinux 0xe846f25e scsi_print_sense_hdr +EXPORT_SYMBOL vmlinux 0xe8794ce1 slhc_toss +EXPORT_SYMBOL vmlinux 0xe890bc87 vfs_symlink +EXPORT_SYMBOL vmlinux 0xe893fee7 mem_cgroup_end_page_stat +EXPORT_SYMBOL vmlinux 0xe89d3d15 dqget +EXPORT_SYMBOL vmlinux 0xe8aaa285 twl6040_reg_read +EXPORT_SYMBOL vmlinux 0xe8b8d0ca get_tz_trend +EXPORT_SYMBOL vmlinux 0xe8bea3bc qdisc_put_stab +EXPORT_SYMBOL vmlinux 0xe8d683ef devm_ioport_map +EXPORT_SYMBOL vmlinux 0xe912da6b unregister_sysctl_table +EXPORT_SYMBOL vmlinux 0xe914e41e strcpy +EXPORT_SYMBOL vmlinux 0xe93b937b __devm_gpiod_get_index +EXPORT_SYMBOL vmlinux 0xe93f6042 trace_print_symbols_seq +EXPORT_SYMBOL vmlinux 0xe953b21f get_next_ino +EXPORT_SYMBOL vmlinux 0xe95e00cf flex_array_get_ptr +EXPORT_SYMBOL vmlinux 0xe95ef673 filemap_fdatawrite +EXPORT_SYMBOL vmlinux 0xe96160f7 vfs_whiteout +EXPORT_SYMBOL vmlinux 0xe968d6cf free_inode_nonrcu +EXPORT_SYMBOL vmlinux 0xe96e5012 sk_stop_timer +EXPORT_SYMBOL vmlinux 0xe99ce9c0 register_filesystem +EXPORT_SYMBOL vmlinux 0xe9b9b09f ip6_find_1stfragopt +EXPORT_SYMBOL vmlinux 0xe9be808d lockref_get_or_lock +EXPORT_SYMBOL vmlinux 0xe9ccfcd3 ioremap_cache +EXPORT_SYMBOL vmlinux 0xe9d8af2b max8998_write_reg +EXPORT_SYMBOL vmlinux 0xe9dd3adf dev_mc_sync_multiple +EXPORT_SYMBOL vmlinux 0xe9f2da72 vfs_iter_write +EXPORT_SYMBOL vmlinux 0xe9f7149c zlib_deflate_workspacesize +EXPORT_SYMBOL vmlinux 0xea054b22 nla_policy_len +EXPORT_SYMBOL vmlinux 0xea16dd4c tcp_destroy_cgroup +EXPORT_SYMBOL vmlinux 0xea2c807c of_graph_parse_endpoint +EXPORT_SYMBOL vmlinux 0xea30bba3 __get_page_tail +EXPORT_SYMBOL vmlinux 0xea3aa2cf filemap_write_and_wait_range +EXPORT_SYMBOL vmlinux 0xea52dc81 dwc_cc_ck +EXPORT_SYMBOL vmlinux 0xea5fb5f3 user_path_at_empty +EXPORT_SYMBOL vmlinux 0xea764bd2 snd_timer_start +EXPORT_SYMBOL vmlinux 0xea78a87d snd_pcm_new_internal +EXPORT_SYMBOL vmlinux 0xea7987f1 key_update +EXPORT_SYMBOL vmlinux 0xea8331ae nf_unregister_hooks +EXPORT_SYMBOL vmlinux 0xea87ff76 handle_edge_irq +EXPORT_SYMBOL vmlinux 0xea8ca566 DWC_WAITQ_WAIT_TIMEOUT +EXPORT_SYMBOL vmlinux 0xea8d78a3 inode_newsize_ok +EXPORT_SYMBOL vmlinux 0xea8ff108 _snd_ctl_add_slave +EXPORT_SYMBOL vmlinux 0xea904799 param_set_invbool +EXPORT_SYMBOL vmlinux 0xea989db2 bio_map_kern +EXPORT_SYMBOL vmlinux 0xeaa1d8a0 cdev_del +EXPORT_SYMBOL vmlinux 0xeaa35604 unlink_framebuffer +EXPORT_SYMBOL vmlinux 0xeab1df19 bh_submit_read +EXPORT_SYMBOL vmlinux 0xeac89e97 ndo_dflt_fdb_add +EXPORT_SYMBOL vmlinux 0xeae126e5 pagecache_write_begin +EXPORT_SYMBOL vmlinux 0xeae38bb8 ip_mc_join_group +EXPORT_SYMBOL vmlinux 0xeae91b90 snd_register_oss_device +EXPORT_SYMBOL vmlinux 0xeb03b389 __raw_readsl +EXPORT_SYMBOL vmlinux 0xeb206393 tty_set_operations +EXPORT_SYMBOL vmlinux 0xeb2db9d6 sdev_disable_disk_events +EXPORT_SYMBOL vmlinux 0xeb32b85d md_unregister_thread +EXPORT_SYMBOL vmlinux 0xeb37101c audit_log_end +EXPORT_SYMBOL vmlinux 0xeb3a366d key_unlink +EXPORT_SYMBOL vmlinux 0xeb55a931 __kfifo_max_r +EXPORT_SYMBOL vmlinux 0xeb7072db iov_iter_get_pages +EXPORT_SYMBOL vmlinux 0xeb7c53cf sock_no_setsockopt +EXPORT_SYMBOL vmlinux 0xeb8ee0c4 dmam_free_coherent +EXPORT_SYMBOL vmlinux 0xebb8510c dwc_cc_if_free +EXPORT_SYMBOL vmlinux 0xebfdcbdf system_serial_high +EXPORT_SYMBOL vmlinux 0xec0ca12a __free_pages +EXPORT_SYMBOL vmlinux 0xec1aa6ef memzero_explicit +EXPORT_SYMBOL vmlinux 0xec4d9e3a clk_get_sys +EXPORT_SYMBOL vmlinux 0xec64aae2 md_finish_reshape +EXPORT_SYMBOL vmlinux 0xec765867 mipi_dsi_dcs_get_power_mode +EXPORT_SYMBOL vmlinux 0xec832602 register_netdevice +EXPORT_SYMBOL vmlinux 0xec85a924 get_fs_type +EXPORT_SYMBOL vmlinux 0xec87a730 inet_stream_connect +EXPORT_SYMBOL vmlinux 0xec8d2a3a pagecache_get_page +EXPORT_SYMBOL vmlinux 0xec971a1c tcp_v4_conn_request +EXPORT_SYMBOL vmlinux 0xeca30038 simple_pin_fs +EXPORT_SYMBOL vmlinux 0xecabe7bd scsi_is_host_device +EXPORT_SYMBOL vmlinux 0xecb6ef0e xfrm6_find_1stfragopt +EXPORT_SYMBOL vmlinux 0xecbcb8bb radix_tree_lookup_slot +EXPORT_SYMBOL vmlinux 0xece7316c __DWC_WARN +EXPORT_SYMBOL vmlinux 0xece784c2 rb_first +EXPORT_SYMBOL vmlinux 0xecf8a3b4 __raw_writesl +EXPORT_SYMBOL vmlinux 0xed248cf4 scsi_dma_unmap +EXPORT_SYMBOL vmlinux 0xed2576c0 DWC_TIMER_SCHEDULE +EXPORT_SYMBOL vmlinux 0xed2b2550 find_get_pages_contig +EXPORT_SYMBOL vmlinux 0xed335677 tty_unlock +EXPORT_SYMBOL vmlinux 0xed380dd0 dmam_release_declared_memory +EXPORT_SYMBOL vmlinux 0xed4e457e map_destroy +EXPORT_SYMBOL vmlinux 0xed597524 qdisc_get_rtab +EXPORT_SYMBOL vmlinux 0xed86d0ed abx500_mask_and_set_register_interruptible +EXPORT_SYMBOL vmlinux 0xed9f9a20 __ctzsi2 +EXPORT_SYMBOL vmlinux 0xedb5ba58 gnet_stats_copy_basic +EXPORT_SYMBOL vmlinux 0xedbaee5e nla_strcmp +EXPORT_SYMBOL vmlinux 0xedbfccfc dev_mc_add_excl +EXPORT_SYMBOL vmlinux 0xedc03953 iounmap +EXPORT_SYMBOL vmlinux 0xedc7f4ec dq_data_lock +EXPORT_SYMBOL vmlinux 0xedd9106d __ashrdi3 +EXPORT_SYMBOL vmlinux 0xee108f30 __kfifo_dma_in_prepare_r +EXPORT_SYMBOL vmlinux 0xee206ff3 input_mt_report_pointer_emulation +EXPORT_SYMBOL vmlinux 0xee25282a usb_gadget_unregister_driver +EXPORT_SYMBOL vmlinux 0xee2d0fc7 _local_bh_enable +EXPORT_SYMBOL vmlinux 0xee2e8d98 make_kgid +EXPORT_SYMBOL vmlinux 0xee3496c3 dma_pool_alloc +EXPORT_SYMBOL vmlinux 0xee55d149 inet_del_protocol +EXPORT_SYMBOL vmlinux 0xee5d9b43 sock_release +EXPORT_SYMBOL vmlinux 0xee715ef8 lg_global_unlock +EXPORT_SYMBOL vmlinux 0xee8962dd __tcf_hash_release +EXPORT_SYMBOL vmlinux 0xee8fe533 revalidate_disk +EXPORT_SYMBOL vmlinux 0xee91879b rb_first_postorder +EXPORT_SYMBOL vmlinux 0xee9c3647 tcp_hashinfo +EXPORT_SYMBOL vmlinux 0xeea9dbaf bitmap_bitremap +EXPORT_SYMBOL vmlinux 0xeeacecd8 vchi_msg_peek +EXPORT_SYMBOL vmlinux 0xeecf1a95 ipv6_sock_mc_drop +EXPORT_SYMBOL vmlinux 0xeed3635b proc_dostring +EXPORT_SYMBOL vmlinux 0xeee0b078 sk_stream_wait_close +EXPORT_SYMBOL vmlinux 0xeeec0395 kmem_cache_destroy +EXPORT_SYMBOL vmlinux 0xeeef67a8 bio_integrity_prep +EXPORT_SYMBOL vmlinux 0xeef161aa groups_free +EXPORT_SYMBOL vmlinux 0xef0c2e63 scsi_host_alloc +EXPORT_SYMBOL vmlinux 0xef15350f sock_no_bind +EXPORT_SYMBOL vmlinux 0xef2fdc4f __percpu_counter_init +EXPORT_SYMBOL vmlinux 0xef5d2001 sock_wfree +EXPORT_SYMBOL vmlinux 0xef7251a5 serio_unregister_port +EXPORT_SYMBOL vmlinux 0xef7a890e dquot_release +EXPORT_SYMBOL vmlinux 0xef813311 sg_nents_for_len +EXPORT_SYMBOL vmlinux 0xef8187b3 seq_lseek +EXPORT_SYMBOL vmlinux 0xef859391 onfi_async_timing_mode_to_sdr_timings +EXPORT_SYMBOL vmlinux 0xefcf3143 wait_for_completion_io +EXPORT_SYMBOL vmlinux 0xefd6cf06 __aeabi_unwind_cpp_pr0 +EXPORT_SYMBOL vmlinux 0xefdd2345 sg_init_one +EXPORT_SYMBOL vmlinux 0xefdd70ce security_secid_to_secctx +EXPORT_SYMBOL vmlinux 0xefe4c849 elv_dispatch_sort +EXPORT_SYMBOL vmlinux 0xefe8acda tty_unthrottle +EXPORT_SYMBOL vmlinux 0xeff28c41 tty_register_driver +EXPORT_SYMBOL vmlinux 0xeff851be i2c_clients_command +EXPORT_SYMBOL vmlinux 0xf0003c60 neigh_connected_output +EXPORT_SYMBOL vmlinux 0xf0009fee put_pages_list +EXPORT_SYMBOL vmlinux 0xf00dbb6f blk_get_queue +EXPORT_SYMBOL vmlinux 0xf037f618 bio_unmap_user +EXPORT_SYMBOL vmlinux 0xf03df500 xfrm_stateonly_find +EXPORT_SYMBOL vmlinux 0xf05ffa15 fb_var_to_videomode +EXPORT_SYMBOL vmlinux 0xf073ba7e arp_tbl +EXPORT_SYMBOL vmlinux 0xf07f93f9 ip_mc_inc_group +EXPORT_SYMBOL vmlinux 0xf08881b2 sk_prot_clear_portaddr_nulls +EXPORT_SYMBOL vmlinux 0xf08c67de napi_alloc_frag +EXPORT_SYMBOL vmlinux 0xf09de776 get_random_int +EXPORT_SYMBOL vmlinux 0xf0a6ccac wait_on_page_bit +EXPORT_SYMBOL vmlinux 0xf0b347ea sock_no_poll +EXPORT_SYMBOL vmlinux 0xf0ed2ef4 __raw_writesb +EXPORT_SYMBOL vmlinux 0xf0ef15b4 list_sort +EXPORT_SYMBOL vmlinux 0xf10526ac verify_spi_info +EXPORT_SYMBOL vmlinux 0xf1173868 unload_nls +EXPORT_SYMBOL vmlinux 0xf118be97 force_sig +EXPORT_SYMBOL vmlinux 0xf128abd4 elv_rq_merge_ok +EXPORT_SYMBOL vmlinux 0xf13134bb __page_symlink +EXPORT_SYMBOL vmlinux 0xf1476d2b of_find_net_device_by_node +EXPORT_SYMBOL vmlinux 0xf147dcb2 hdmi_spd_infoframe_init +EXPORT_SYMBOL vmlinux 0xf14be202 skb_append +EXPORT_SYMBOL vmlinux 0xf1534631 nosteal_pipe_buf_ops +EXPORT_SYMBOL vmlinux 0xf15ccdb6 inc_nlink +EXPORT_SYMBOL vmlinux 0xf1737805 max8925_bulk_write +EXPORT_SYMBOL vmlinux 0xf18707e1 __lock_page +EXPORT_SYMBOL vmlinux 0xf195c682 fb_invert_cmaps +EXPORT_SYMBOL vmlinux 0xf1969a8e __usecs_to_jiffies +EXPORT_SYMBOL vmlinux 0xf19db26f phy_start +EXPORT_SYMBOL vmlinux 0xf19e9355 cpu_online_mask +EXPORT_SYMBOL vmlinux 0xf1cd2e51 mdiobus_alloc_size +EXPORT_SYMBOL vmlinux 0xf1db1704 nla_memcpy +EXPORT_SYMBOL vmlinux 0xf1deabf2 div64_u64 +EXPORT_SYMBOL vmlinux 0xf1e98c74 avenrun +EXPORT_SYMBOL vmlinux 0xf1ea6f1c __bswapsi2 +EXPORT_SYMBOL vmlinux 0xf1fe3e79 nf_register_hook +EXPORT_SYMBOL vmlinux 0xf205a1a6 dev_err +EXPORT_SYMBOL vmlinux 0xf20dabd8 free_irq +EXPORT_SYMBOL vmlinux 0xf213a97f netlink_ack +EXPORT_SYMBOL vmlinux 0xf227e770 vchi_service_open +EXPORT_SYMBOL vmlinux 0xf234705a devfreq_add_device +EXPORT_SYMBOL vmlinux 0xf23fcb99 __kfifo_in +EXPORT_SYMBOL vmlinux 0xf27a2da7 single_release +EXPORT_SYMBOL vmlinux 0xf289fb73 __skb_tx_hash +EXPORT_SYMBOL vmlinux 0xf2997713 tty_termios_hw_change +EXPORT_SYMBOL vmlinux 0xf2a0af8f backlight_device_registered +EXPORT_SYMBOL vmlinux 0xf2ad43ca of_parse_phandle_with_args +EXPORT_SYMBOL vmlinux 0xf2c43f3f zlib_deflate +EXPORT_SYMBOL vmlinux 0xf2cef755 scsicam_bios_param +EXPORT_SYMBOL vmlinux 0xf2d370bb xfrm_find_acq +EXPORT_SYMBOL vmlinux 0xf2ffb161 copy_page_from_iter +EXPORT_SYMBOL vmlinux 0xf313da4e sha_transform +EXPORT_SYMBOL vmlinux 0xf31ac1be devfreq_monitor_start +EXPORT_SYMBOL vmlinux 0xf3341268 __clear_user +EXPORT_SYMBOL vmlinux 0xf346231f seq_list_start_head +EXPORT_SYMBOL vmlinux 0xf34944bf dev_set_allmulti +EXPORT_SYMBOL vmlinux 0xf353a698 register_module_notifier +EXPORT_SYMBOL vmlinux 0xf36c5ffe sk_net_capable +EXPORT_SYMBOL vmlinux 0xf3797152 snd_interval_ratnum +EXPORT_SYMBOL vmlinux 0xf389fe60 __hw_addr_init +EXPORT_SYMBOL vmlinux 0xf3916987 global_cursor_default +EXPORT_SYMBOL vmlinux 0xf3916ced netdev_lower_get_next +EXPORT_SYMBOL vmlinux 0xf396cd21 tcp_parse_md5sig_option +EXPORT_SYMBOL vmlinux 0xf3ad2b91 blk_mq_init_allocated_queue +EXPORT_SYMBOL vmlinux 0xf3cfec9f xfrm_state_walk_done +EXPORT_SYMBOL vmlinux 0xf3d8892a inet6_del_protocol +EXPORT_SYMBOL vmlinux 0xf3e628ba ps2_end_command +EXPORT_SYMBOL vmlinux 0xf3e6402e __bitmap_equal +EXPORT_SYMBOL vmlinux 0xf3e87df1 skb_append_datato_frags +EXPORT_SYMBOL vmlinux 0xf3f42ce0 inode_change_ok +EXPORT_SYMBOL vmlinux 0xf400f402 __scm_send +EXPORT_SYMBOL vmlinux 0xf40b2297 __crypto_memneq +EXPORT_SYMBOL vmlinux 0xf42cacb6 inet_bind +EXPORT_SYMBOL vmlinux 0xf435330f xfrm_input +EXPORT_SYMBOL vmlinux 0xf43631bc input_unregister_device +EXPORT_SYMBOL vmlinux 0xf43dbbec __wait_on_buffer +EXPORT_SYMBOL vmlinux 0xf473ffaf down +EXPORT_SYMBOL vmlinux 0xf474c21c bitmap_print_to_pagebuf +EXPORT_SYMBOL vmlinux 0xf474fdcb kfree_const +EXPORT_SYMBOL vmlinux 0xf478e1a1 dmam_alloc_noncoherent +EXPORT_SYMBOL vmlinux 0xf4985713 vlan_dev_vlan_id +EXPORT_SYMBOL vmlinux 0xf49fce13 register_qdisc +EXPORT_SYMBOL vmlinux 0xf4bdbeb9 __frontswap_invalidate_area +EXPORT_SYMBOL vmlinux 0xf4e27e51 dev_queue_xmit_accel +EXPORT_SYMBOL vmlinux 0xf4ec7155 ppp_input_error +EXPORT_SYMBOL vmlinux 0xf4f14de6 rtnl_trylock +EXPORT_SYMBOL vmlinux 0xf4f71fc3 gen_pool_alloc +EXPORT_SYMBOL vmlinux 0xf5176106 simple_statfs +EXPORT_SYMBOL vmlinux 0xf539aa8c scmd_printk +EXPORT_SYMBOL vmlinux 0xf53d4c26 qdisc_class_hash_destroy +EXPORT_SYMBOL vmlinux 0xf54c51a2 dma_pool_free +EXPORT_SYMBOL vmlinux 0xf564412a __aeabi_ulcmp +EXPORT_SYMBOL vmlinux 0xf56aa498 bio_integrity_add_page +EXPORT_SYMBOL vmlinux 0xf571856e mmc_power_save_host +EXPORT_SYMBOL vmlinux 0xf5754488 tso_build_hdr +EXPORT_SYMBOL vmlinux 0xf5995d9c __module_put_and_exit +EXPORT_SYMBOL vmlinux 0xf5b4e23b key_payload_reserve +EXPORT_SYMBOL vmlinux 0xf5c2d34d hdmi_audio_infoframe_init +EXPORT_SYMBOL vmlinux 0xf5d99037 xfrm6_rcv +EXPORT_SYMBOL vmlinux 0xf5e58156 find_get_entry +EXPORT_SYMBOL vmlinux 0xf5eb86ea blk_verify_command +EXPORT_SYMBOL vmlinux 0xf611e9e0 scsi_device_put +EXPORT_SYMBOL vmlinux 0xf6388c56 sysctl_ip_default_ttl +EXPORT_SYMBOL vmlinux 0xf644bbcd nand_calculate_ecc +EXPORT_SYMBOL vmlinux 0xf6770391 mac_pton +EXPORT_SYMBOL vmlinux 0xf67ecc47 nf_unregister_hook +EXPORT_SYMBOL vmlinux 0xf68285c0 register_inetaddr_notifier +EXPORT_SYMBOL vmlinux 0xf6851d5f register_sysctl_paths +EXPORT_SYMBOL vmlinux 0xf6906840 nf_unregister_sockopt +EXPORT_SYMBOL vmlinux 0xf6b3eeca dquot_acquire +EXPORT_SYMBOL vmlinux 0xf6ba48e5 invalidate_inode_buffers +EXPORT_SYMBOL vmlinux 0xf6bb4729 color_table +EXPORT_SYMBOL vmlinux 0xf6d0127c seq_release_private +EXPORT_SYMBOL vmlinux 0xf6ebc03b net_ratelimit +EXPORT_SYMBOL vmlinux 0xf6f92b07 i2c_master_recv +EXPORT_SYMBOL vmlinux 0xf6fc8791 __bitmap_xor +EXPORT_SYMBOL vmlinux 0xf7163ec9 __raw_readsb +EXPORT_SYMBOL vmlinux 0xf723b222 input_set_capability +EXPORT_SYMBOL vmlinux 0xf729e9ea lro_flush_all +EXPORT_SYMBOL vmlinux 0xf7324bcf jbd2_journal_check_used_features +EXPORT_SYMBOL vmlinux 0xf7329b84 blk_integrity_is_initialized +EXPORT_SYMBOL vmlinux 0xf738fa6e qdisc_warn_nonwc +EXPORT_SYMBOL vmlinux 0xf746aa3b tc_classify_compat +EXPORT_SYMBOL vmlinux 0xf74ed75a tty_insert_flip_string_flags +EXPORT_SYMBOL vmlinux 0xf7574511 snd_jack_set_key +EXPORT_SYMBOL vmlinux 0xf7584a9c find_font +EXPORT_SYMBOL vmlinux 0xf775da8b phy_find_first +EXPORT_SYMBOL vmlinux 0xf77c9ca0 of_io_request_and_map +EXPORT_SYMBOL vmlinux 0xf7802486 __aeabi_uidivmod +EXPORT_SYMBOL vmlinux 0xf796f174 scsi_host_lookup +EXPORT_SYMBOL vmlinux 0xf7973604 nf_hook_slow +EXPORT_SYMBOL vmlinux 0xf79f9014 vm_map_ram +EXPORT_SYMBOL vmlinux 0xf7aaeddc ida_init +EXPORT_SYMBOL vmlinux 0xf7bc3a18 ppp_register_channel +EXPORT_SYMBOL vmlinux 0xf7be2094 xfrm_policy_hash_rebuild +EXPORT_SYMBOL vmlinux 0xf7c36e25 DWC_THREAD_SHOULD_STOP +EXPORT_SYMBOL vmlinux 0xf7c70945 __tty_alloc_driver +EXPORT_SYMBOL vmlinux 0xf7ca8070 __mark_inode_dirty +EXPORT_SYMBOL vmlinux 0xf7fa69ce key_invalidate +EXPORT_SYMBOL vmlinux 0xf8074b49 __kfree_skb +EXPORT_SYMBOL vmlinux 0xf811e69d scsi_eh_flush_done_q +EXPORT_SYMBOL vmlinux 0xf817a3c1 tcp_md5_do_add +EXPORT_SYMBOL vmlinux 0xf81845ef pagevec_lookup +EXPORT_SYMBOL vmlinux 0xf81b290d tty_driver_flush_buffer +EXPORT_SYMBOL vmlinux 0xf827cb83 free_reserved_area +EXPORT_SYMBOL vmlinux 0xf82ec573 rb_prev +EXPORT_SYMBOL vmlinux 0xf838e9f7 DWC_SPINLOCK_IRQSAVE +EXPORT_SYMBOL vmlinux 0xf839df83 sock_no_socketpair +EXPORT_SYMBOL vmlinux 0xf840a399 twl6040_set_bits +EXPORT_SYMBOL vmlinux 0xf87483ac blk_init_queue +EXPORT_SYMBOL vmlinux 0xf886453f unregister_filesystem +EXPORT_SYMBOL vmlinux 0xf88c3301 sg_init_table +EXPORT_SYMBOL vmlinux 0xf8ad8634 mmc_add_host +EXPORT_SYMBOL vmlinux 0xf8c6b74f vlan_vids_del_by_dev +EXPORT_SYMBOL vmlinux 0xf8cf3a77 swiotlb_map_sg_attrs +EXPORT_SYMBOL vmlinux 0xf8dc75ea default_llseek +EXPORT_SYMBOL vmlinux 0xf8f2905f try_to_release_page +EXPORT_SYMBOL vmlinux 0xf8f975df i2c_register_driver +EXPORT_SYMBOL vmlinux 0xf9222392 elv_add_request +EXPORT_SYMBOL vmlinux 0xf9348cbc xz_dec_run +EXPORT_SYMBOL vmlinux 0xf93e2b61 tty_throttle +EXPORT_SYMBOL vmlinux 0xf94cd014 blk_mq_kick_requeue_list +EXPORT_SYMBOL vmlinux 0xf9663542 skb_pad +EXPORT_SYMBOL vmlinux 0xf9688a54 __blk_mq_end_request +EXPORT_SYMBOL vmlinux 0xf99e294e genphy_aneg_done +EXPORT_SYMBOL vmlinux 0xf9a482f9 msleep +EXPORT_SYMBOL vmlinux 0xf9c00aa9 DWC_ATOUI +EXPORT_SYMBOL vmlinux 0xf9c57378 __sk_mem_reclaim +EXPORT_SYMBOL vmlinux 0xf9defc7d dquot_quota_on +EXPORT_SYMBOL vmlinux 0xf9e73082 scnprintf +EXPORT_SYMBOL vmlinux 0xf9f7a4a1 nla_append +EXPORT_SYMBOL vmlinux 0xfa07619a simple_map_init +EXPORT_SYMBOL vmlinux 0xfa103750 xfrm6_rcv_spi +EXPORT_SYMBOL vmlinux 0xfa18809d netdev_features_change +EXPORT_SYMBOL vmlinux 0xfa3a7b20 vfs_setpos +EXPORT_SYMBOL vmlinux 0xfa54fee0 jbd2_journal_start_reserved +EXPORT_SYMBOL vmlinux 0xfa5816ec tcp_openreq_init_rwin +EXPORT_SYMBOL vmlinux 0xfa599bb2 netlink_register_notifier +EXPORT_SYMBOL vmlinux 0xfa80626f get_super +EXPORT_SYMBOL vmlinux 0xfac68eba arm_elf_read_implies_exec +EXPORT_SYMBOL vmlinux 0xfac8865f sysctl_wmem_max +EXPORT_SYMBOL vmlinux 0xfacd2e14 pgprot_user +EXPORT_SYMBOL vmlinux 0xfae67b1f cap_mmap_addr +EXPORT_SYMBOL vmlinux 0xfae84a8f __destroy_inode +EXPORT_SYMBOL vmlinux 0xfb56f07b neigh_sysctl_unregister +EXPORT_SYMBOL vmlinux 0xfb699f11 of_parse_phandle +EXPORT_SYMBOL vmlinux 0xfb6af58d recalc_sigpending +EXPORT_SYMBOL vmlinux 0xfb7d9c45 __udivsi3 +EXPORT_SYMBOL vmlinux 0xfb94103e __clzdi2 +EXPORT_SYMBOL vmlinux 0xfbaadd3c blk_rq_map_user +EXPORT_SYMBOL vmlinux 0xfbaaf01e console_lock +EXPORT_SYMBOL vmlinux 0xfbc4f89e io_schedule_timeout +EXPORT_SYMBOL vmlinux 0xfbcec341 crypto_sha512_update +EXPORT_SYMBOL vmlinux 0xfbd9885c skb_vlan_push +EXPORT_SYMBOL vmlinux 0xfbe624b4 mmc_can_erase +EXPORT_SYMBOL vmlinux 0xfbefe4fb abx500_get_chip_id +EXPORT_SYMBOL vmlinux 0xfbf5384f seq_vprintf +EXPORT_SYMBOL vmlinux 0xfc02b7ad sysctl_tcp_wmem +EXPORT_SYMBOL vmlinux 0xfc0eb11d snd_pcm_period_elapsed +EXPORT_SYMBOL vmlinux 0xfc200297 inet6_protos +EXPORT_SYMBOL vmlinux 0xfc20f3c9 DWC_WAITQ_WAIT +EXPORT_SYMBOL vmlinux 0xfc3908f5 fence_default_wait +EXPORT_SYMBOL vmlinux 0xfc39e32f ioport_unmap +EXPORT_SYMBOL vmlinux 0xfc5066f9 of_device_is_big_endian +EXPORT_SYMBOL vmlinux 0xfc610949 jbd2_journal_start_commit +EXPORT_SYMBOL vmlinux 0xfc65459a kstrtoull_from_user +EXPORT_SYMBOL vmlinux 0xfc9a6d0a skb_tx_error +EXPORT_SYMBOL vmlinux 0xfcac7481 dm_put_table_device +EXPORT_SYMBOL vmlinux 0xfcc2a43c utf32_to_utf8 +EXPORT_SYMBOL vmlinux 0xfcd8109a proc_create_data +EXPORT_SYMBOL vmlinux 0xfce93a28 inet_sk_rx_dst_set +EXPORT_SYMBOL vmlinux 0xfcea8c91 rawv6_mh_filter_unregister +EXPORT_SYMBOL vmlinux 0xfceac426 of_phy_is_fixed_link +EXPORT_SYMBOL vmlinux 0xfcec0987 enable_irq +EXPORT_SYMBOL vmlinux 0xfcf5fd14 thaw_super +EXPORT_SYMBOL vmlinux 0xfcf7f854 xfrm_user_policy +EXPORT_SYMBOL vmlinux 0xfcfa03ff fb_videomode_to_modelist +EXPORT_SYMBOL vmlinux 0xfcfea94d drop_super +EXPORT_SYMBOL vmlinux 0xfd138b88 cdrom_open +EXPORT_SYMBOL vmlinux 0xfd17e95a lease_get_mtime +EXPORT_SYMBOL vmlinux 0xfd305341 walk_stackframe +EXPORT_SYMBOL vmlinux 0xfd33b5fa cmdline_parts_find +EXPORT_SYMBOL vmlinux 0xfd3a62f5 noop_qdisc +EXPORT_SYMBOL vmlinux 0xfd5683b9 wait_for_completion_interruptible +EXPORT_SYMBOL vmlinux 0xfd689367 snd_pcm_lib_malloc_pages +EXPORT_SYMBOL vmlinux 0xfd78818d scsi_remove_host +EXPORT_SYMBOL vmlinux 0xfd7d9692 bio_uncopy_user +EXPORT_SYMBOL vmlinux 0xfd8c5afc release_fiq +EXPORT_SYMBOL vmlinux 0xfd9333ff uart_register_driver +EXPORT_SYMBOL vmlinux 0xfd99623a ip_frag_ecn_table +EXPORT_SYMBOL vmlinux 0xfda5955c skb_add_rx_frag +EXPORT_SYMBOL vmlinux 0xfdab6de3 unregister_sound_midi +EXPORT_SYMBOL vmlinux 0xfddfbbc4 tty_port_carrier_raised +EXPORT_SYMBOL vmlinux 0xfde525e1 mmc_calc_max_discard +EXPORT_SYMBOL vmlinux 0xfded63ae request_key_async_with_auxdata +EXPORT_SYMBOL vmlinux 0xfdfc0b3b fiemap_fill_next_extent +EXPORT_SYMBOL vmlinux 0xfe029963 unregister_inetaddr_notifier +EXPORT_SYMBOL vmlinux 0xfe2035b3 skb_try_coalesce +EXPORT_SYMBOL vmlinux 0xfe2a5edc input_mt_destroy_slots +EXPORT_SYMBOL vmlinux 0xfe33c6c3 sg_nents +EXPORT_SYMBOL vmlinux 0xfe3fee17 inet_proto_csum_replace4 +EXPORT_SYMBOL vmlinux 0xfe45a2fe snd_device_new +EXPORT_SYMBOL vmlinux 0xfe48fa38 param_set_long +EXPORT_SYMBOL vmlinux 0xfe5d4bb2 sys_tz +EXPORT_SYMBOL vmlinux 0xfe65897b qdisc_list_del +EXPORT_SYMBOL vmlinux 0xfe69bc62 vchiq_bulk_receive +EXPORT_SYMBOL vmlinux 0xfe6d37e0 down_write +EXPORT_SYMBOL vmlinux 0xfe7c4287 nr_cpu_ids +EXPORT_SYMBOL vmlinux 0xfea40e79 of_phy_find_device +EXPORT_SYMBOL vmlinux 0xfea72385 lock_fb_info +EXPORT_SYMBOL vmlinux 0xfeab9b46 dev_uc_del +EXPORT_SYMBOL vmlinux 0xfeb0d06b bitmap_start_sync +EXPORT_SYMBOL vmlinux 0xfec4c31f swiotlb_dma_supported +EXPORT_SYMBOL vmlinux 0xfeca7590 radix_tree_range_tag_if_tagged +EXPORT_SYMBOL vmlinux 0xfecb73c0 DWC_EXCEPTION +EXPORT_SYMBOL vmlinux 0xfedcdb60 seq_hlist_next_percpu +EXPORT_SYMBOL vmlinux 0xfef77687 phy_disconnect +EXPORT_SYMBOL vmlinux 0xff064fee gen_pool_set_algo +EXPORT_SYMBOL vmlinux 0xff0b1ef4 pm860x_reg_read +EXPORT_SYMBOL vmlinux 0xff144450 jbd2_journal_dirty_metadata +EXPORT_SYMBOL vmlinux 0xff17c766 param_set_bint +EXPORT_SYMBOL vmlinux 0xff1e9dd8 seq_list_start +EXPORT_SYMBOL vmlinux 0xff447220 nla_reserve +EXPORT_SYMBOL vmlinux 0xff5dde66 load_nls_default +EXPORT_SYMBOL vmlinux 0xff6104d0 snd_pcm_rate_bit_to_rate +EXPORT_SYMBOL vmlinux 0xff6516cf clocksource_unregister +EXPORT_SYMBOL vmlinux 0xff67b37f __lshrdi3 +EXPORT_SYMBOL vmlinux 0xff6878cf fb_default_cmap +EXPORT_SYMBOL vmlinux 0xff6a930c DWC_TIMER_FREE +EXPORT_SYMBOL vmlinux 0xff6f9eff sock_from_file +EXPORT_SYMBOL vmlinux 0xff83385c tcf_exts_dump +EXPORT_SYMBOL vmlinux 0xff8cbb1f idr_destroy +EXPORT_SYMBOL vmlinux 0xff9a3cd2 generic_writepages +EXPORT_SYMBOL vmlinux 0xff9ca065 fb_edid_to_monspecs +EXPORT_SYMBOL vmlinux 0xffb94ef0 _test_and_change_bit +EXPORT_SYMBOL vmlinux 0xffd5a395 default_wake_function +EXPORT_SYMBOL vmlinux 0xfffa9d13 of_platform_device_create +EXPORT_SYMBOL_GPL arch/arm/crypto/sha1-arm 0x7cecba76 sha1_finup_arm +EXPORT_SYMBOL_GPL arch/arm/crypto/sha1-arm 0xc620aa11 sha1_update_arm +EXPORT_SYMBOL_GPL crypto/ablk_helper 0x45096ac4 ablk_init_common +EXPORT_SYMBOL_GPL crypto/ablk_helper 0x6e878e14 ablk_set_key +EXPORT_SYMBOL_GPL crypto/ablk_helper 0xbc0706fe ablk_decrypt +EXPORT_SYMBOL_GPL crypto/ablk_helper 0xd39db9ed ablk_encrypt +EXPORT_SYMBOL_GPL crypto/ablk_helper 0xe29a19a6 ablk_exit +EXPORT_SYMBOL_GPL crypto/ablk_helper 0xf5e0c1de ablk_init +EXPORT_SYMBOL_GPL crypto/ablk_helper 0xfef8c650 __ablk_encrypt +EXPORT_SYMBOL_GPL crypto/af_alg 0x00cebc4a af_alg_accept +EXPORT_SYMBOL_GPL crypto/af_alg 0x1e413cf8 af_alg_make_sg +EXPORT_SYMBOL_GPL crypto/af_alg 0x207704f7 af_alg_free_sg +EXPORT_SYMBOL_GPL crypto/af_alg 0x380ade7f af_alg_complete +EXPORT_SYMBOL_GPL crypto/af_alg 0x5bdb75ff af_alg_unregister_type +EXPORT_SYMBOL_GPL crypto/af_alg 0x5cecf9bb af_alg_register_type +EXPORT_SYMBOL_GPL crypto/af_alg 0x866ed749 af_alg_release +EXPORT_SYMBOL_GPL crypto/af_alg 0x89b870b1 af_alg_link_sg +EXPORT_SYMBOL_GPL crypto/af_alg 0xae43f4f0 af_alg_cmsg_send +EXPORT_SYMBOL_GPL crypto/af_alg 0xd954ef95 af_alg_wait_for_completion +EXPORT_SYMBOL_GPL crypto/asymmetric_keys/pkcs7_message 0x0c495886 pkcs7_get_content_data +EXPORT_SYMBOL_GPL crypto/asymmetric_keys/pkcs7_message 0x44e8d9ac pkcs7_free_message +EXPORT_SYMBOL_GPL crypto/asymmetric_keys/pkcs7_message 0x4cc33646 pkcs7_parse_message +EXPORT_SYMBOL_GPL crypto/asymmetric_keys/pkcs7_message 0x883bd89d pkcs7_verify +EXPORT_SYMBOL_GPL crypto/asymmetric_keys/pkcs7_message 0x90d76756 pkcs7_validate_trust +EXPORT_SYMBOL_GPL crypto/async_tx/async_memcpy 0x912d992e async_memcpy +EXPORT_SYMBOL_GPL crypto/async_tx/async_pq 0x2b9d5718 async_syndrome_val +EXPORT_SYMBOL_GPL crypto/async_tx/async_pq 0xb7997558 async_gen_syndrome +EXPORT_SYMBOL_GPL crypto/async_tx/async_raid6_recov 0x401b9495 async_raid6_datap_recov +EXPORT_SYMBOL_GPL crypto/async_tx/async_raid6_recov 0x546d7dae async_raid6_2data_recov +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0x2ce5ae64 async_tx_submit +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0xc7d32d08 __async_tx_find_channel +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0xcbd48823 async_tx_quiesce +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0xd4d7d65b async_trigger_callback +EXPORT_SYMBOL_GPL crypto/async_tx/async_xor 0x2fa4829c async_xor +EXPORT_SYMBOL_GPL crypto/async_tx/async_xor 0x3b6efe70 async_xor_val +EXPORT_SYMBOL_GPL crypto/authenc 0x587ef278 crypto_authenc_extractkeys +EXPORT_SYMBOL_GPL crypto/blowfish_common 0x80768869 blowfish_setkey +EXPORT_SYMBOL_GPL crypto/cast5_generic 0x27278ca9 __cast5_encrypt +EXPORT_SYMBOL_GPL crypto/cast5_generic 0x4a2a3ca6 __cast5_decrypt +EXPORT_SYMBOL_GPL crypto/cast5_generic 0xd7494229 cast5_setkey +EXPORT_SYMBOL_GPL crypto/cast6_generic 0x07cc5a32 cast6_setkey +EXPORT_SYMBOL_GPL crypto/cast6_generic 0x1291971c __cast6_setkey +EXPORT_SYMBOL_GPL crypto/cast6_generic 0x1e2c961f __cast6_decrypt +EXPORT_SYMBOL_GPL crypto/cast6_generic 0x8f04034a __cast6_encrypt +EXPORT_SYMBOL_GPL crypto/cast_common 0x08aa6fb7 cast_s1 +EXPORT_SYMBOL_GPL crypto/cast_common 0x0c5fbf8a cast_s3 +EXPORT_SYMBOL_GPL crypto/cast_common 0xe39dd4b4 cast_s2 +EXPORT_SYMBOL_GPL crypto/cast_common 0xee83a4f3 cast_s4 +EXPORT_SYMBOL_GPL crypto/cryptd 0x06fea238 cryptd_ablkcipher_child +EXPORT_SYMBOL_GPL crypto/cryptd 0x0e224eee cryptd_alloc_aead +EXPORT_SYMBOL_GPL crypto/cryptd 0x3aa6999b cryptd_free_aead +EXPORT_SYMBOL_GPL crypto/cryptd 0x462e7ee8 cryptd_alloc_ahash +EXPORT_SYMBOL_GPL crypto/cryptd 0x586d6a03 cryptd_alloc_ablkcipher +EXPORT_SYMBOL_GPL crypto/cryptd 0x5e701b33 cryptd_free_ablkcipher +EXPORT_SYMBOL_GPL crypto/cryptd 0x7c9e78f1 cryptd_shash_desc +EXPORT_SYMBOL_GPL crypto/cryptd 0xaaea03dc cryptd_ahash_child +EXPORT_SYMBOL_GPL crypto/cryptd 0xb4a71a95 cryptd_aead_child +EXPORT_SYMBOL_GPL crypto/cryptd 0xc3655226 cryptd_free_ahash +EXPORT_SYMBOL_GPL crypto/crypto_null 0x21cd536a crypto_put_default_null_skcipher +EXPORT_SYMBOL_GPL crypto/crypto_null 0xb3f76e28 crypto_get_default_null_skcipher +EXPORT_SYMBOL_GPL crypto/des_generic 0xcfd9a2c0 des_ekey +EXPORT_SYMBOL_GPL crypto/des_generic 0xf8c78d49 __des3_ede_setkey +EXPORT_SYMBOL_GPL crypto/lrw 0x3864eb66 lrw_free_table +EXPORT_SYMBOL_GPL crypto/lrw 0xcd074900 lrw_init_table +EXPORT_SYMBOL_GPL crypto/lrw 0xf582ce9c lrw_crypt +EXPORT_SYMBOL_GPL crypto/mcryptd 0x072de872 shash_ahash_mcryptd_final +EXPORT_SYMBOL_GPL crypto/mcryptd 0x14bdd4d3 mcryptd_flusher +EXPORT_SYMBOL_GPL crypto/mcryptd 0x28b3428c shash_ahash_mcryptd_update +EXPORT_SYMBOL_GPL crypto/mcryptd 0x440ccf30 shash_ahash_mcryptd_finup +EXPORT_SYMBOL_GPL crypto/mcryptd 0x6080c2d0 mcryptd_alloc_ahash +EXPORT_SYMBOL_GPL crypto/mcryptd 0x6a919966 mcryptd_shash_desc +EXPORT_SYMBOL_GPL crypto/mcryptd 0x82e88a5f mcryptd_ahash_child +EXPORT_SYMBOL_GPL crypto/mcryptd 0xcef07888 shash_ahash_mcryptd_digest +EXPORT_SYMBOL_GPL crypto/mcryptd 0xd4916f66 mcryptd_free_ahash +EXPORT_SYMBOL_GPL crypto/rsa_generic 0xadc25bd8 rsa_parse_key +EXPORT_SYMBOL_GPL crypto/rsa_generic 0xf1b141d1 rsa_free_key +EXPORT_SYMBOL_GPL crypto/serpent_generic 0x5ddb33e9 __serpent_encrypt +EXPORT_SYMBOL_GPL crypto/serpent_generic 0x77b39cb4 __serpent_setkey +EXPORT_SYMBOL_GPL crypto/serpent_generic 0x83c17fbc serpent_setkey +EXPORT_SYMBOL_GPL crypto/serpent_generic 0x8a1a99ad __serpent_decrypt +EXPORT_SYMBOL_GPL crypto/twofish_common 0x6c3229bb __twofish_setkey +EXPORT_SYMBOL_GPL crypto/twofish_common 0xea04e906 twofish_setkey +EXPORT_SYMBOL_GPL crypto/xts 0x35745817 xts_crypt +EXPORT_SYMBOL_GPL drivers/ata/pata_platform 0x1f795e41 __pata_platform_probe +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-spmi 0x4cb86fb9 regmap_init_spmi_ext +EXPORT_SYMBOL_GPL drivers/base/regmap/regmap-spmi 0x5c90f328 regmap_init_spmi_base +EXPORT_SYMBOL_GPL drivers/base/regmap/regmap-spmi 0x9cc91c35 devm_regmap_init_spmi_base +EXPORT_SYMBOL_GPL drivers/base/regmap/regmap-spmi 0xaf3bdfc6 devm_regmap_init_spmi_ext +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x0b374739 bcma_pmu_get_bus_clock +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x0bd4b98e bcma_driver_unregister +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x12537b73 bcma_chipco_get_alp_clock +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x228a4777 bcma_chipco_gpio_outen +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x2f7fe5c9 bcma_core_set_clockmode +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x30d20119 bcma_core_enable +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x31c8cab4 bcma_core_disable +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x7bd1ee63 bcma_chipco_pll_maskset +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x82969ac7 bcma_chipco_gpio_control +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x87b828fe bcma_chipco_gpio_out +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x8818c088 bcma_core_pll_ctl +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x9229d9a9 bcma_chipco_chipctl_maskset +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x924551ab bcma_chipco_pll_write +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x9f01b590 __bcma_driver_register +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xaa3559e0 bcma_pmu_spuravoid_pllupdate +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xcb2a2628 bcma_chipco_b_mii_write +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xcd88f233 bcma_chipco_regctl_maskset +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xd5ff8db6 bcma_core_is_enabled +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xe11ac863 bcma_find_core_unit +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xf124cbe0 bcma_chipco_pll_read +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0x0090c9f4 btbcm_finalize +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0x60f5d9d3 btbcm_set_bdaddr +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0x8d919268 btbcm_setup_patchram +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0x8dbc8287 btbcm_initialize +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0xa8e06198 btbcm_setup_apple +EXPORT_SYMBOL_GPL drivers/bluetooth/btbcm 0xf8afd370 btbcm_check_bdaddr +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0x420faf9d btintel_check_bdaddr +EXPORT_SYMBOL_GPL drivers/bluetooth/btintel 0xffb6391e btintel_set_bdaddr +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x20f15b91 btmrvl_send_module_cfg_cmd +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x29452bc5 btmrvl_send_hscfg_cmd +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x4b9c39ba btmrvl_enable_hs +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x53d04839 btmrvl_enable_ps +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x58e76614 btmrvl_register_hdev +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x5fc80ee7 btmrvl_interrupt +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x650418bf btmrvl_process_event +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xac7fcfe0 btmrvl_check_evtpkt +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xae112a60 btmrvl_remove_card +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xb2991b9d btmrvl_add_card +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xc3399f1d btmrvl_pscan_window_reporting +EXPORT_SYMBOL_GPL drivers/bluetooth/btrtl 0x97f7d296 btrtl_setup_realtek +EXPORT_SYMBOL_GPL drivers/cpufreq/arm_big_little 0x0a785bdc bL_cpufreq_register +EXPORT_SYMBOL_GPL drivers/cpufreq/arm_big_little 0x0aa9b28c bL_cpufreq_unregister +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0x056bf9c2 dw_dma_probe +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0x10196f5c dw_dma_remove +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0x202a9a2c dw_dma_disable +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0x2eacbe9a dw_dma_filter +EXPORT_SYMBOL_GPL drivers/dma/dw/dw_dmac_core 0x7f11b636 dw_dma_enable +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x123e31aa find_mci_by_dev +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x2c8dd6b8 edac_mem_types +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x2e30ddb6 edac_mc_del_mc +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x303898cd edac_mc_add_mc_with_groups +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x393fdede edac_mc_alloc +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x3a609645 edac_raw_mc_handle_error +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x3d94b9b5 edac_mc_handle_error +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x41bc841a edac_device_del_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x6b604894 edac_mc_free +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x6e3ff83a edac_device_alloc_index +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x898ff1d7 edac_device_add_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x9000b783 edac_mc_find_csrow_by_page +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xabddd341 edac_device_handle_ce +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xb24b41ca edac_device_alloc_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xb6d3315d edac_device_handle_ue +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xc0dcb59e edac_layer_name +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xe60e8c7a edac_device_free_ctl_info +EXPORT_SYMBOL_GPL drivers/gpio/gpio-max730x 0x72c469f3 __max730x_remove +EXPORT_SYMBOL_GPL drivers/gpio/gpio-max730x 0x897296cb __max730x_probe +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x04b75a56 drm_gem_cma_dumb_map_offset +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x22e846a0 drm_class_device_unregister +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x2e1f969c of_get_drm_display_mode +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x3412e734 drm_display_mode_to_videomode +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x43b07f0a drm_gem_cma_prime_get_sg_table +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x443f26ac drm_gem_cma_vm_ops +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x4ed1d4f1 drm_class_device_register +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x64336e5c drm_gem_cma_prime_mmap +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x6564e6f6 drm_gem_cma_dumb_create +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x6b7082fc drm_gem_cma_prime_import_sg_table +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x7f07ea09 drm_gem_cma_free_object +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x8f8a2ddc drm_gem_cma_mmap +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x957e16d0 drm_display_mode_from_videomode +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x96b5b36d drm_gem_cma_dumb_create_internal +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x992269bc drm_gem_cma_create +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x9a25e5e5 drm_gem_cma_describe +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xafe350b3 drm_do_get_edid +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xc7b799cd drm_gem_cma_prime_vunmap +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xe898ae43 drm_gem_cma_prime_vmap +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm_kms_helper 0x1148b623 drm_fbdev_cma_fini +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm_kms_helper 0x29ce6608 drm_fb_cma_debugfs_show +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm_kms_helper 0x42726b48 drm_fb_cma_create +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm_kms_helper 0x624207c4 drm_fb_cma_get_gem_obj +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm_kms_helper 0xb2c912af drm_fbdev_cma_hotplug_event +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm_kms_helper 0xcc337fd5 drm_fbdev_cma_restore_mode +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm_kms_helper 0xdc088712 drm_fbdev_cma_init +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat 0x2f622ea1 roccat_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat 0x47433a6f roccat_connect +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat 0x8c4181ec roccat_report_event +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x25be7078 roccat_common2_send +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x276a8a30 roccat_common2_receive +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0xb10d6a4c roccat_common2_send_with_status +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0xb35fef80 roccat_common2_sysfs_read +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0xb80cef28 roccat_common2_device_init_struct +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0xc07258bb roccat_common2_sysfs_write +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x2920ccfb sensor_hub_set_feature +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x503ec68c sensor_hub_input_get_attribute_info +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x621a4136 hid_sensor_get_usage_index +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x67c4b190 sensor_hub_device_open +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x67d43fb3 sensor_hub_device_close +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x710b17e7 sensor_hub_remove_callback +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0x78c37a8f sensor_hub_register_callback +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0xb5b9865a sensor_hub_get_feature +EXPORT_SYMBOL_GPL drivers/hid/hid-sensor-hub 0xe76a949f sensor_hub_input_attr_get_raw_value +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x040fcf88 hsi_register_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x04217868 hsi_register_port_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x09c6526d hsi_unregister_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x446ae0e7 hsi_unregister_port_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x51d863e5 hsi_claim_port +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x57f67952 hsi_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x6f3c2fe1 hsi_put_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x78be1154 hsi_release_port +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x7e51ebd4 hsi_remove_client +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x8516e2cd hsi_free_msg +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x8e2fb3e0 hsi_alloc_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x97afe4de hsi_new_client +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xa4add7d7 hsi_add_clients_from_dt +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xa63d9f84 hsi_async +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xb14e1c61 hsi_register_client_driver +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xd9361422 hsi_port_unregister_clients +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xdfe80790 hsi_alloc_msg +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xf1edcc96 hsi_get_channel_id_by_name +EXPORT_SYMBOL_GPL drivers/hwmon/adt7x10 0xcde17985 adt7x10_dev_pm_ops +EXPORT_SYMBOL_GPL drivers/hwmon/adt7x10 0xd9be71ae adt7x10_probe +EXPORT_SYMBOL_GPL drivers/hwmon/adt7x10 0xf616e6e5 adt7x10_remove +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x1cbd4519 pmbus_clear_faults +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x2d5af976 pmbus_set_page +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x55935088 pmbus_check_byte_register +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x5f499462 pmbus_regulator_ops +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x7420ae6c pmbus_write_byte +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x7a597866 pmbus_get_driver_info +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x8729429f pmbus_clear_cache +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0x9b9f0957 pmbus_write_byte_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xa5aee362 pmbus_check_word_register +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xac7a9178 pmbus_do_probe +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xb4fdf1d6 pmbus_do_remove +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xc9855ea2 pmbus_read_word_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xcf50f40f pmbus_update_byte_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xe2f3ba2d pmbus_read_byte_data +EXPORT_SYMBOL_GPL drivers/hwmon/pmbus/pmbus_core 0xe7be58c7 pmbus_write_word_data +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x3c347c96 i2c_dw_read_comp_param +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x5bb1170b i2c_dw_isr +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x5be0c20c i2c_dw_is_enabled +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x7979b1cd i2c_dw_xfer +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0xa4919213 i2c_dw_clear_int +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0xd9b5a79c i2c_dw_func +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0xe4c5f925 i2c_dw_init +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0xea1374f0 i2c_dw_disable +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0xeb3b43f3 i2c_dw_disable_int +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0xf02edcb3 i2c_dw_enable +EXPORT_SYMBOL_GPL drivers/i2c/i2c-mux 0x03203f81 i2c_del_mux_adapter +EXPORT_SYMBOL_GPL drivers/i2c/i2c-mux 0xce3e5840 i2c_add_mux_adapter +EXPORT_SYMBOL_GPL drivers/i2c/i2c-smbus 0x13522098 i2c_handle_smbus_alert +EXPORT_SYMBOL_GPL drivers/i2c/i2c-smbus 0xd95cac96 i2c_setup_smbus_alert +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x0570529f ad_sd_set_comm +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x15117e89 ad_sd_init +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x1fce3b98 ad_sd_read_reg +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x30947a43 ad_sd_setup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x389f906e ad_sigma_delta_single_conversion +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x419dff4a ad_sd_cleanup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x5f2890d6 ad_sd_calibrate_all +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0x7ee6603f ad_sd_validate_trigger +EXPORT_SYMBOL_GPL drivers/iio/adc/ad_sigma_delta 0xa0268d5b ad_sd_write_reg +EXPORT_SYMBOL_GPL drivers/iio/adc/twl4030-madc 0x4362dc66 twl4030_get_madc_conversion +EXPORT_SYMBOL_GPL drivers/iio/adc/twl4030-madc 0xb1be4a75 twl4030_madc_conversion +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x79ce5812 adis_single_conversion +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0x7c633e9f adis_update_scan_mode +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xafa87f91 adis_cleanup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xb3ba043a adis_write_reg +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xcaa78243 adis_setup_buffer_and_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xcc556977 adis_probe_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xdb4e114b adis_reset +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xdbba8554 adis_read_reg +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xe213b8cf adis_check_status +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xe3a3c292 adis_initial_startup +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xe5550370 adis_remove_trigger +EXPORT_SYMBOL_GPL drivers/iio/imu/adis_lib 0xf8d23106 adis_init +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x042d9b3b iio_map_array_register +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x0683a064 iio_read_channel_scale +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x0933cda4 iio_read_channel_raw +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x168b5f8d devm_iio_device_unregister +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x1fdf5faf iio_convert_raw_to_processed +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x267c0508 iio_channel_release_all_cb +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x26f6b499 iio_str_to_fixpoint +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x275829c3 devm_iio_device_free +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x2a1fab3c iio_channel_stop_all_cb +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x2d7e7bf8 iio_channel_cb_get_channels +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x30c01d98 iio_get_channel_type +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x336bd191 iio_buffer_get +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x33a58a00 iio_write_channel_raw +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x3f995d0e iio_enum_read +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x445a2097 iio_update_demux +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x48c0b029 iio_alloc_pollfunc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x587b38fe iio_channel_release_all +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x589a5ae3 iio_channel_get_all_cb +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x5f74be00 iio_enum_available_read +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x78fa4f43 iio_dealloc_pollfunc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x7a711aef iio_channel_start_all_cb +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x7c8242e4 devm_iio_trigger_free +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x84757ffd iio_push_to_buffers +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x94534549 iio_channel_get +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xb34116aa devm_iio_device_register +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xc5fdd21c iio_channel_release +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xca168770 iio_read_channel_average_raw +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xd7358fcd iio_channel_get_all +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xdc282e28 devm_iio_device_alloc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xe18cf8d4 iio_update_buffers +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xf0091420 devm_iio_trigger_alloc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xf0dd4538 iio_enum_write +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xf0f41a61 iio_validate_scan_mask_onehot +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xf14c296e iio_read_channel_processed +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xf687cce1 iio_buffer_put +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xf829e43b iio_map_array_unregister +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xfe14bd38 iio_scan_mask_query +EXPORT_SYMBOL_GPL drivers/input/ff-memless 0x3bcb942b input_ff_create_memless +EXPORT_SYMBOL_GPL drivers/input/matrix-keymap 0xf8b02161 matrix_keypad_parse_of_params +EXPORT_SYMBOL_GPL drivers/input/misc/adxl34x 0x49a4fcbd adxl34x_remove +EXPORT_SYMBOL_GPL drivers/input/misc/adxl34x 0x54c01dfc 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/touchscreen/cyttsp4_core 0x3c8ec90a cyttsp4_pm_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp4_core 0x7df0757a cyttsp4_probe +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp4_core 0xdb445851 cyttsp4_remove +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_core 0x8fc91d6d cyttsp_pm_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_core 0xc97db8ed cyttsp_remove +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_core 0xd02ad354 cyttsp_probe +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_i2c_common 0x25a41e8d cyttsp_i2c_read_block_data +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_i2c_common 0x4aa83104 cyttsp_i2c_write_block_data +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x1684f957 wm97xx_reg_read +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x290fc0e9 wm97xx_register_mach_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x2b3fc37d wm9712_codec +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x32d14906 wm97xx_unregister_mach_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x3681de27 wm9705_codec +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x44822138 wm97xx_set_gpio +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x4b2327e9 wm97xx_config_gpio +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x6638dfa4 wm97xx_get_gpio +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x66bba85d wm97xx_reg_write +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xc470696f wm97xx_read_aux_adc +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xe795c3e3 wm9713_codec +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xea955c06 wm97xx_set_suspend_mode +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x07d99f6f ipack_driver_unregister +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x0c54eb84 ipack_device_init +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x2b53503f ipack_bus_unregister +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x3c1ce782 ipack_device_del +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x49ee31dd ipack_bus_register +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x554c6879 ipack_get_device +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0xa03918d6 ipack_device_add +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0xd837603f ipack_put_device +EXPORT_SYMBOL_GPL drivers/ipack/ipack 0xe4c260ef ipack_driver_register +EXPORT_SYMBOL_GPL drivers/isdn/capi/kernelcapi 0x23359aff unregister_capictr_notifier +EXPORT_SYMBOL_GPL drivers/isdn/capi/kernelcapi 0xce1414b2 register_capictr_notifier +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x32dfa210 gigaset_m10x_send_skb +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x3615aa26 gigaset_fill_inbuf +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x454aa44f gigaset_debuglevel +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x5d8b92e7 gigaset_initdriver +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x6c404a5d gigaset_skb_sent +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x6cce0759 gigaset_start +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x7e1955d8 gigaset_skb_rcvd +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x7fcae85a gigaset_shutdown +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x8eff32df gigaset_dbg_buffer +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x9d6917f5 gigaset_handle_modem_response +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xa2b0855e gigaset_add_event +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xa31533d4 gigaset_m10x_input +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xa5efcb48 gigaset_freedriver +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xab2950e3 gigaset_isdn_rcv_err +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xc7312758 gigaset_initcs +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xcb622c39 gigaset_blockdriver +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xdbf343a7 gigaset_if_receive +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xecf4ff8f gigaset_freecs +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xf0191265 gigaset_stop +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0x58301fdc led_update_flash_brightness +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0x6fa1ee18 led_get_flash_fault +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0x7ff8a4b0 led_classdev_flash_unregister +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0xcf5b3c9a led_set_flash_brightness +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0xf217280a led_classdev_flash_register +EXPORT_SYMBOL_GPL drivers/leds/led-class-flash 0xff5f8357 led_set_flash_timeout +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/mcb/mcb 0x076af15a mcb_alloc_bus +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x23aed96f mcb_free_dev +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x288101cf mcb_request_mem +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x2a18443c mcb_device_register +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x2a8fca0d mcb_get_irq +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x4200256b mcb_alloc_dev +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x8f863643 __mcb_register_driver +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x92b8cb08 mcb_release_bus +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0x999b6912 mcb_unregister_driver +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0xa72cfcc3 mcb_bus_put +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0xbca503e2 mcb_bus_add_devices +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0xcea19426 mcb_bus_get +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0xe6fde8f8 chameleon_parse_cells +EXPORT_SYMBOL_GPL drivers/mcb/mcb 0xf9cca8f3 mcb_release_mem +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x10e06e97 __tracepoint_bcache_btree_set_root +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x155ea9c7 __tracepoint_bcache_bypass_sequential +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x1822fd23 __tracepoint_bcache_btree_gc_coalesce +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x1f2ba9ac __tracepoint_bcache_journal_entry_full +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x260d47cf __tracepoint_bcache_btree_cache_cannibalize +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x27831e89 __tracepoint_bcache_journal_full +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x2dec45e0 __tracepoint_bcache_btree_write +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x347aebe1 __tracepoint_bcache_btree_node_free +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x41c861f0 __tracepoint_bcache_alloc_fail +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x480dc606 __tracepoint_bcache_invalidate +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x49856e5a __tracepoint_bcache_btree_node_compact +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x50e8c39f __tracepoint_bcache_write +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x574ba881 __tracepoint_bcache_btree_node_alloc +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x628eb712 __tracepoint_bcache_btree_insert_key +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x6770a402 __tracepoint_bcache_gc_copy_collision +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x785cfc9f __tracepoint_bcache_gc_end +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0x91f2af34 __tracepoint_bcache_btree_node_alloc_fail +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xa09069a3 __tracepoint_bcache_writeback_collision +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xa591c5d6 __tracepoint_bcache_read +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xa6890b59 __tracepoint_bcache_btree_read +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xaf60c34b __tracepoint_bcache_journal_write +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xb950d2ae __tracepoint_bcache_request_start +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xbd4b89b6 __tracepoint_bcache_btree_node_split +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xce0e6218 __tracepoint_bcache_gc_copy +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xd40fba32 __tracepoint_bcache_gc_start +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xdc5ea5a5 __tracepoint_bcache_cache_insert +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xf58ce244 __tracepoint_bcache_journal_replay_key +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xf5bcbdc7 __tracepoint_bcache_read_retry +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xfc1d5275 __tracepoint_bcache_writeback +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xfcdf28c9 __tracepoint_bcache_request_end +EXPORT_SYMBOL_GPL drivers/md/bcache/bcache 0xffc308e4 __tracepoint_bcache_bypass_congested +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x084e05ae dm_cell_visit_release +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x17dd39d6 dm_deferred_set_create +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x1ff3b6da dm_cell_error +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x21808b5b dm_cell_release +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x2eb01e04 dm_deferred_set_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x30c82363 dm_bio_prison_alloc_cell +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x50d70f0d dm_bio_prison_free_cell +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x62542989 dm_cell_release_no_holder +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x67149fcd dm_cell_promote_or_release +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x6791a44e dm_deferred_entry_dec +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x751fd55e dm_get_cell +EXPORT_SYMBOL_GPL drivers/md/dm-bio-prison 0x753e20b2 dm_bio_prison_create +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 0xd0e44743 dm_bio_detain +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x0ad0dc4f dm_bufio_mark_buffer_dirty +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x22163b69 dm_bufio_release_move +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x31e69cda dm_bufio_client_create +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x3909d3a8 dm_bufio_prefetch +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x594952bd dm_bufio_read +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x62a23587 dm_bufio_get_device_size +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x6d3f57bd dm_bufio_get_client +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 0x9b2b253a dm_bufio_get +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xa82b2066 dm_bufio_write_dirty_buffers +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xc9a3422d dm_bufio_write_dirty_buffers_async +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xd4bddf5c dm_bufio_issue_flush +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xdc69e37a dm_bufio_get_block_number +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xe004ee92 dm_bufio_new +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-cache 0x0dd64a7c dm_cache_policy_get_version +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x23ceacd5 dm_cache_policy_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x5c9b68b7 dm_cache_policy_register +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0x907a1655 dm_cache_policy_create +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xc1fa0e1b dm_cache_policy_get_hint_size +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xdda1bc70 dm_cache_policy_unregister +EXPORT_SYMBOL_GPL drivers/md/dm-cache 0xfce2d2b2 dm_cache_policy_get_name +EXPORT_SYMBOL_GPL drivers/md/dm-multipath 0xb771e967 dm_unregister_path_selector +EXPORT_SYMBOL_GPL drivers/md/dm-multipath 0xd8db05d2 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 0x09472122 dm_rh_dec +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x170ec7ca dm_rh_dirty_log +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x2347e1fe dm_rh_inc_pending +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 0x69927fbc dm_region_hash_create +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 0x979d3d38 dm_rh_mark_nosync +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xa5182fa5 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 0xa8813ad6 dm_rh_region_to_sector +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xb552a428 dm_rh_bio_to_region +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xbe38a431 dm_rh_recovery_prepare +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xc66ce277 dm_rh_get_region_size +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xcab63c3d dm_rh_get_state +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xd8aa4284 dm_rh_region_context +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xf37a3cfe dm_rh_get_region_key +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 0x01445176 dm_btree_find_highest_key +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x0604db1b dm_btree_remove_leaves +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x11eab9fe dm_bm_read_lock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x150c85ce dm_tm_open_with_sm +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x1e3f728d dm_block_data +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x2025e954 dm_array_info_init +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x24fa6664 dm_bitset_set_bit +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x2c112836 dm_block_location +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x2e730a21 dm_bm_checksum +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 0x32b5f546 dm_array_empty +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x33c03da6 dm_sm_disk_open +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 0x3ad0f55b dm_bm_flush +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x40f7bd91 dm_tm_inc +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x4360913e dm_btree_find_lowest_key +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x5aed1dd7 dm_bitset_flush +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x5e6aea80 dm_btree_walk +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x619701dc dm_sm_disk_create +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x62c1b9ee dm_array_walk +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 0x72289260 dm_block_manager_destroy +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x7657e859 dm_bitset_clear_bit +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 0x80c89b3d dm_tm_unlock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x832bf228 dm_array_del +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x858c8d94 dm_array_set_value +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x89f1e1cc dm_btree_insert_notify +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 0x966a8838 dm_btree_lookup +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x9b4b5b29 dm_bm_write_lock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x9c66556a dm_block_manager_create +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 0xa2507774 dm_tm_shadow_block +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xa87c5b4d dm_array_resize +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xab96bd2d dm_bitset_test_bit +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xaee02382 dm_btree_empty +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xb7bad799 dm_bm_unlock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xb9a6ecf8 dm_tm_dec +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xba47c03a dm_bitset_del +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xbcfdc290 dm_tm_read_lock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xbd50ebbb dm_btree_del +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xbe0497aa dm_tm_create_with_sm +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xca40abd5 dm_btree_insert +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xd041d62b dm_array_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 0xead1e727 dm_bm_write_lock_zero +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xed1e1f96 dm_btree_remove +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xed58cfa1 dm_bitset_empty +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xf12ec3cd dm_disk_bitset_init +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xffff2ac3 dm_bitset_resize +EXPORT_SYMBOL_GPL drivers/media/common/b2c2/b2c2-flexcop 0x66c0289a b2c2_flexcop_debug +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x071e3fd9 smscore_get_board_id +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x0cab12b1 smscore_getbuffer +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x157ea7cd sms_board_lna_control +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x1ad2ad83 sms_board_led_feedback +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x21e36bf2 smscore_registry_getmode +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x21fbfaa4 sms_board_event +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x32859f6c smscore_start_device +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x37d91069 smsendian_handle_tx_message +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x41f059d2 smscore_onresponse +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x45284ae9 smsendian_handle_rx_message +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x4af77dcb smscore_unregister_hotplug +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x4c74ef1d sms_board_setup +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x59269f1c smscore_get_device_mode +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x63222b29 smsclient_sendrequest +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x657d0262 smscore_unregister_device +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x70a51e9e smscore_putbuffer +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x74ee9098 sms_board_load_modules +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x754ee20f 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 0x88e8cc8b smscore_register_device +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x91393ada smscore_register_client +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x94c66aef smscore_register_hotplug +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0x9c2225ed smscore_translate_msg +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xbbdb5c42 smscore_unregister_client +EXPORT_SYMBOL_GPL drivers/media/common/siano/smsmdtv 0xe59bc3e9 sms_board_power +EXPORT_SYMBOL_GPL drivers/media/dvb-frontends/as102_fe 0xfede254e as102_attach +EXPORT_SYMBOL_GPL drivers/media/dvb-frontends/tda18271c2dd 0xcc864a68 tda18271c2dd_attach +EXPORT_SYMBOL_GPL drivers/media/media 0x0f2bddbc media_entity_find_link +EXPORT_SYMBOL_GPL drivers/media/media 0x18d0aeb3 media_entity_remote_pad +EXPORT_SYMBOL_GPL drivers/media/media 0x1f930a24 __media_entity_remove_links +EXPORT_SYMBOL_GPL drivers/media/media 0x3553b6e5 media_entity_get +EXPORT_SYMBOL_GPL drivers/media/media 0x381d8f39 media_device_unregister_entity +EXPORT_SYMBOL_GPL drivers/media/media 0x3eac59a8 media_entity_graph_walk_next +EXPORT_SYMBOL_GPL drivers/media/media 0x4c6a3d4b media_entity_setup_link +EXPORT_SYMBOL_GPL drivers/media/media 0x542a2e77 __media_device_register +EXPORT_SYMBOL_GPL drivers/media/media 0x57025021 media_entity_graph_walk_start +EXPORT_SYMBOL_GPL drivers/media/media 0x65f249f9 media_entity_put +EXPORT_SYMBOL_GPL drivers/media/media 0x6c91e6bc media_entity_create_link +EXPORT_SYMBOL_GPL drivers/media/media 0x87b57c3c media_device_unregister +EXPORT_SYMBOL_GPL drivers/media/media 0x87f5a974 media_entity_pipeline_start +EXPORT_SYMBOL_GPL drivers/media/media 0xa8d4a10d media_entity_cleanup +EXPORT_SYMBOL_GPL drivers/media/media 0xe229c126 media_entity_pipeline_stop +EXPORT_SYMBOL_GPL drivers/media/media 0xeb500cfc media_entity_init +EXPORT_SYMBOL_GPL drivers/media/media 0xf22258bb media_device_register_entity +EXPORT_SYMBOL_GPL drivers/media/media 0xf898c2dd media_entity_remove_links +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0x0b2585ce xvip_get_format_by_fourcc +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0x0daa4651 xvip_cleanup_resources +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0x297fd44b xvip_enum_frame_size +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0x2d587763 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 0x490bd11c xvip_get_format_by_code +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0xb4e51fc2 xvip_clr_or_set +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0xba0a5c14 xvip_init_resources +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0xc2144be8 xvip_enum_mbus_code +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-video 0xcea04fe3 xvip_of_get_format +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 0x8d2969a2 xvtc_of_get +EXPORT_SYMBOL_GPL drivers/media/platform/xilinx/xilinx-vtc 0xa8a0f912 xvtc_put +EXPORT_SYMBOL_GPL drivers/media/radio/shark2 0x278e9a6f radio_tea5777_exit +EXPORT_SYMBOL_GPL drivers/media/radio/shark2 0x98153f19 radio_tea5777_init +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x04539de0 ir_raw_event_handle +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x0b1d087e rc_keydown +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x42a95a67 ir_raw_event_store_with_filter +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x45fb3b5a rc_keyup +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x553efb91 rc_core_debug +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x56110614 rc_keydown_notimeout +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x5a9d1f17 rc_free_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x726b9d87 ir_raw_event_set_idle +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x784a8f40 rc_unregister_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x815d5660 rc_open +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x94b2721f rc_map_get +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x950b030f rc_repeat +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x9e432da8 rc_map_unregister +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xb3a63271 rc_register_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xb7dfd6af rc_map_register +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xb8b8475a ir_raw_event_store_edge +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xd6b22bca rc_close +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xdd2e98c4 rc_allocate_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xe05f34cb rc_g_keycode_from_table +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xf93fd7d8 ir_raw_event_store +EXPORT_SYMBOL_GPL drivers/media/tuners/mt2063 0x20f2f88c mt2063_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/mt20xx 0x814cfe72 microtune_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/mxl5007t 0x55d0e9ad mxl5007t_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/r820t 0x4eea4486 r820t_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda18271 0x6c30f966 tda18271_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda827x 0x8743c507 tda827x_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda8290 0x1184222f tda829x_probe +EXPORT_SYMBOL_GPL drivers/media/tuners/tda8290 0xb4f43035 tda829x_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tda9887 0x7e56998d tda9887_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5761 0x423b3ea1 tea5761_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5761 0xa02473bb tea5761_autodetection +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5767 0x077c4d53 tea5767_attach +EXPORT_SYMBOL_GPL drivers/media/tuners/tea5767 0x8c4ad80a tea5767_autodetection +EXPORT_SYMBOL_GPL drivers/media/tuners/tuner-simple 0xde479123 simple_tuner_attach +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x017ea7c7 cx231xx_tuner_callback +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x067be827 cx231xx_capture_start +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x195c2609 cx231xx_dev_init +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x1bc5fed5 cx231xx_send_gpio_cmd +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x28f12cba cx231xx_demod_reset +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x2bbf5c8c cx231xx_set_mode +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x37b482d9 cx231xx_uninit_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x46495010 cx231xx_get_i2c_adap +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x6b51fa19 cx231xx_enable_i2c_port_3 +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x6fdf3396 cx231xx_dev_uninit +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x7a2cb0cc cx231xx_send_usb_command +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0x7ba2ff7c cx231xx_enable656 +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xa13a743b cx231xx_uninit_vbi_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xa45702ad cx231xx_init_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xa48eed18 cx231xx_uninit_bulk +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xa5856009 cx231xx_init_bulk +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xaf8f15f4 cx231xx_disable656 +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xba3c5c75 cx231xx_unmute_audio +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xbd42fa3c cx231xx_set_alt_setting +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xc2a7e290 is_fw_load +EXPORT_SYMBOL_GPL drivers/media/usb/cx231xx/cx231xx 0xd686f661 cx231xx_init_vbi_isoc +EXPORT_SYMBOL_GPL drivers/media/usb/dvb-usb-v2/mxl111sf-demod 0x2b50442d mxl111sf_demod_attach +EXPORT_SYMBOL_GPL drivers/media/usb/dvb-usb-v2/mxl111sf-tuner 0x6c4bbee4 mxl111sf_tuner_attach +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x09445cc2 em28xx_alloc_urbs +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x224e6da5 em28xx_read_reg +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x392357fd em28xx_toggle_reg_bits +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x474d3f97 em28xx_write_ac97 +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x490d0c88 em28xx_write_reg_bits +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x53395de4 em28xx_write_reg +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x5b8d32b8 em28xx_setup_xc3028 +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x6d578f78 em28xx_boards +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x78733d44 em28xx_set_mode +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x7ba3be5c em28xx_uninit_usb_xfer +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x7fc8652c em28xx_tuner_callback +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0x87e1d5db em28xx_audio_setup +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xa46c019c em28xx_init_usb_xfer +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xba52b389 em28xx_read_ac97 +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xbf4bcd5b em28xx_audio_analog_set +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xcd75ef7f em28xx_free_device +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xdd5e6013 em28xx_stop_urbs +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xdd9c2981 em28xx_init_camera +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xe92744a8 em28xx_write_regs +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xf2a30b7b em28xx_find_led +EXPORT_SYMBOL_GPL drivers/media/usb/em28xx/em28xx 0xf60c04ec em28xx_gpio_set +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x2309a6d6 tm6000_xc5000_callback +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x53cb1c79 tm6000_get_reg +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x53e70d9f tm6000_set_reg_mask +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0x89b611dd tm6000_debug +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0xcaeebc77 tm6000_set_reg +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0xdff8e89d tm6000_tuner_callback +EXPORT_SYMBOL_GPL drivers/media/usb/tm6000/tm6000 0xe5db7556 tm6000_set_audio_bitrate +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x01c483a9 v4l2_get_timestamp +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x34a2a9f4 v4l2_i2c_new_subdev_board +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x7ba305db v4l2_spi_subdev_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0x813f3de4 v4l2_find_nearest_format +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0xad425c94 v4l2_spi_new_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0xb36f94e8 v4l2_i2c_new_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0xb70ec4a4 v4l2_i2c_subdev_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0xf2a353ac v4l2_i2c_tuner_addrs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0xf5ef842e v4l_bound_align_image +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-common 0xfb04b94b v4l2_i2c_subdev_addr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x08982d59 v4l2_match_dv_timings +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x4103badb v4l2_print_dv_timings +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x5491c182 v4l2_enum_dv_timings_cap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x67b8205b v4l2_detect_cvt +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0x6f344bb9 v4l2_calc_aspect_ratio +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0xb0891da2 v4l2_dv_timings_presets +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0xdfa5a008 v4l2_valid_dv_timings +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0xf0e1988c v4l2_find_dv_timings_cap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-dv-timings 0xf98d0f9d v4l2_detect_gtf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-flash-led-class 0x80c487b9 v4l2_flash_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-flash-led-class 0xe10b2c37 v4l2_flash_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x0c675985 v4l2_m2m_fop_mmap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x17eb0eee v4l2_m2m_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x19f0ae6a v4l2_m2m_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x2976f39c v4l2_m2m_ioctl_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x45a9abfd v4l2_m2m_ctx_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x49efd262 v4l2_m2m_buf_queue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x4aee39d3 v4l2_m2m_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x4b497c68 v4l2_m2m_ioctl_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x513bbbae v4l2_m2m_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x61370c24 v4l2_m2m_fop_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x69b650ea v4l2_m2m_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x6ae41540 v4l2_m2m_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x766d997b v4l2_m2m_ioctl_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x82ba1522 v4l2_m2m_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x8ab75136 v4l2_m2m_ioctl_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x8e052b01 v4l2_m2m_ioctl_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x9024ddf6 v4l2_m2m_ioctl_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x934c018c v4l2_m2m_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x93dedc77 v4l2_m2m_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0x9e4763e5 v4l2_m2m_ioctl_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xa2be32b1 v4l2_m2m_ioctl_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xa6353915 v4l2_m2m_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xbba3efcc v4l2_m2m_next_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xc4008d30 v4l2_m2m_buf_remove +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xc6fca5ad v4l2_m2m_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xd81476d2 v4l2_m2m_try_schedule +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xdb0d2ff0 v4l2_m2m_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xe7e7ac9a v4l2_m2m_ctx_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/v4l2-mem2mem 0xf13df5d9 v4l2_m2m_ioctl_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x098bb443 videobuf_next_field +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x16fe0876 videobuf_poll_stream +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x1a320a98 videobuf_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x1c20f525 __videobuf_mmap_setup +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x1d0326d1 videobuf_read_one +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x272475ff videobuf_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x283b1044 videobuf_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x2fb2eb82 videobuf_stop +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x35ffcd27 videobuf_iolock +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x3c63cb46 videobuf_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x40cd0944 videobuf_mmap_setup +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x4781c771 videobuf_read_stream +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x51cdc207 videobuf_queue_to_vaddr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x57697a7f videobuf_queue_core_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x64b289bd videobuf_waiton +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x6ef03ce4 videobuf_queue_is_busy +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x7d4f02e4 videobuf_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x8172e707 videobuf_queue_cancel +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x8f8d05f6 videobuf_mmap_mapper +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0x95deaf24 videobuf_mmap_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xb6700580 videobuf_read_stop +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xd98c77d0 videobuf_alloc_vb +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xe374542d videobuf_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-core 0xff41b24f videobuf_read_start +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-vmalloc 0x114fff11 videobuf_vmalloc_free +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-vmalloc 0x76fe9798 videobuf_to_vmalloc +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf-vmalloc 0xc0820297 videobuf_queue_vmalloc_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x06d4fa9d vb2_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x0f60936c vb2_mmap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x103d8ff9 vb2_ioctl_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x1a09c2c5 vb2_ioctl_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x26200e7e vb2_discard_done +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x2b72a556 vb2_ioctl_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x38d6202a vb2_ioctl_create_bufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x3c8a97fb vb2_read +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x4b4fbd85 vb2_thread_start +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x4c82cf86 vb2_ops_wait_prepare +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x56d7981c vb2_dqbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x5ada675c vb2_ops_wait_finish +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x5d1b5023 _vb2_fop_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x6946d891 vb2_wait_for_all_buffers +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x6a7eb13f vb2_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x717c3b0c vb2_write +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x7e8d1dc4 vb2_fop_write +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x7eeec019 vb2_ioctl_querybuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x8431831f vb2_queue_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x97275bf9 vb2_plane_vaddr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x990e90b4 vb2_streamoff +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x993bc9b7 vb2_queue_error +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x9a7869a7 vb2_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x9ad4c226 vb2_queue_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0x9fc70b26 vb2_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xb1af3c8e vb2_ioctl_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xb3c2d6e8 vb2_ioctl_expbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xb9d3e05c vb2_plane_cookie +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xbca5a076 vb2_ioctl_reqbufs +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xd142bc3b vb2_fop_mmap +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xd1fe06b7 vb2_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xe38d016c vb2_fop_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xe4ae30b4 vb2_fop_poll +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xf1f02576 vb2_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xf2ea8ea2 vb2_ioctl_qbuf +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xfb925cbf vb2_streamon +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xfc5f3c85 vb2_fop_read +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xfc912280 vb2_thread_stop +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-core 0xff7cb784 vb2_buffer_done +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-contig 0x60aa85fb vb2_dma_contig_memops +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-contig 0x90f89854 vb2_dma_contig_init_ctx +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-contig 0xe57f0426 vb2_dma_contig_cleanup_ctx +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-sg 0x26308ff5 vb2_dma_sg_memops +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-sg 0x603d875b vb2_dma_sg_init_ctx +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-dma-sg 0xd30ec30f vb2_dma_sg_cleanup_ctx +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-memops 0x7ae54f2d vb2_put_vma +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-memops 0xb1d482fe vb2_get_vma +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-memops 0xdd70bd29 vb2_get_contig_userptr +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-memops 0xf709c733 vb2_common_vm_ops +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videobuf2-vmalloc 0xb42c4c21 vb2_vmalloc_memops +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x11f6ed20 v4l2_event_unsubscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x13955bab v4l2_event_subscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x179f68ee v4l2_subdev_link_validate_default +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x289414a7 v4l2_event_dequeue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x2c11aee5 v4l2_device_register_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x2e7d7e2b v4l2_device_set_name +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x3169dab9 v4l2_device_unregister_subdev +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x41c61e2f v4l2_device_unregister +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x429bedec v4l2_fh_is_singular +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x44c3990a v4l2_fh_release +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x5629090d v4l2_device_disconnect +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x5b9855cb v4l2_event_queue_fh +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x6a7c86bf v4l2_event_subdev_unsubscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x785e2483 v4l2_src_change_event_subdev_subscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x7941f8be v4l2_fh_init +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x8ae7aa57 v4l2_device_put +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x8fc53060 v4l2_event_pending +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x9b10c103 v4l2_fh_del +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xa19c319d v4l2_event_unsubscribe_all +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xa556a88a v4l2_fh_open +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xa5c1b70c v4l2_subdev_link_validate +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xa804c154 v4l2_device_register_subdev_nodes +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xac42b005 v4l2_src_change_event_subscribe +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xf545ce4b v4l2_fh_add +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xf737a12e v4l2_fh_exit +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xfbd17f9c v4l2_event_queue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xfc75049e v4l2_device_register +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0x06da9c79 pm80x_init +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0x2152a08b pm80x_pm_ops +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0x7f68bc8a pm80x_regmap_config +EXPORT_SYMBOL_GPL drivers/mfd/88pm80x 0xd99fd720 pm80x_deinit +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0x49166864 da9150_bulk_read +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0x7d1a4ce5 da9150_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0x8a91a421 da9150_bulk_write +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0xb41a8233 da9150_set_bits +EXPORT_SYMBOL_GPL drivers/mfd/da9150-core 0xdc8e31b7 da9150_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x19a9fbea kempld_release_mutex +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x1c7d9fc9 kempld_read8 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x22b2314e kempld_write32 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x241faf7a kempld_read16 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x6cdbbe56 kempld_get_mutex +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x90b8808f kempld_write8 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0x9956eb33 kempld_read32 +EXPORT_SYMBOL_GPL drivers/mfd/kempld-core 0xc3f5df2a kempld_write16 +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0x2c7cfb37 lm3533_write +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0x32d3753e lm3533_update +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0xe38bb967 lm3533_read +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x28f49ae7 lm3533_ctrlbank_set_brightness +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x78abf4c9 lm3533_ctrlbank_disable +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x8a52bc1f lm3533_ctrlbank_set_max_current +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0xa068ab03 lm3533_ctrlbank_set_pwm +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0xa49f1650 lm3533_ctrlbank_get_brightness +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0xf79387b1 lm3533_ctrlbank_enable +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0xfe9d6353 lm3533_ctrlbank_get_pwm +EXPORT_SYMBOL_GPL drivers/mfd/lp3943 0x012f3c6d lp3943_read_byte +EXPORT_SYMBOL_GPL drivers/mfd/lp3943 0x3cf63f8f lp3943_write_byte +EXPORT_SYMBOL_GPL drivers/mfd/lp3943 0x97cd6bab lp3943_update_bits +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x177d1863 mc13xxx_common_init +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x1c2a1db3 mc13xxx_common_exit +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x32a68e22 mc13xxx_variant_mc13892 +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x6013306a mc13xxx_variant_mc34708 +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x721cc502 mc13xxx_variant_mc13783 +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x7d3cbf50 mc13xxx_adc_do_conversion +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x03348425 pcf50633_reg_clear_bits +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x3bcfac53 pcf50633_free_irq +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x5bab5885 pcf50633_read_block +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x6abbaaf9 pcf50633_irq_mask_get +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x6f71abe3 pcf50633_irq_mask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x7dd14af3 pcf50633_irq_unmask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x80e4b628 pcf50633_write_block +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x91022692 pcf50633_reg_set_bit_mask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x98d7bcd3 pcf50633_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x9d0b0566 pcf50633_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xa7d4394b pcf50633_register_irq +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-adc 0xc04cf971 pcf50633_adc_async_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-adc 0xf93cf445 pcf50633_adc_sync_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x2f4f9f77 pcf50633_gpio_invert_get +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0xa1b9d484 pcf50633_gpio_set +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0xcbcb5a25 pcf50633_gpio_invert_set +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0xd1159c00 pcf50633_gpio_power_supply_set +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0xec8cebb2 pcf50633_gpio_get +EXPORT_SYMBOL_GPL drivers/mfd/retu-mfd 0x01a33234 retu_write +EXPORT_SYMBOL_GPL drivers/mfd/retu-mfd 0x4fca3918 retu_read +EXPORT_SYMBOL_GPL drivers/mfd/rpisense-core 0x56faa24f rpisense_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/rpisense-core 0xd632cc98 rpisense_get_dev +EXPORT_SYMBOL_GPL drivers/mfd/rpisense-core 0xeb18b867 rpisense_block_write +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x0f0a019c rtsx_usb_add_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x30758241 rtsx_usb_read_ppbuf +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x4033b38b rtsx_usb_get_card_status +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0x7d9ebe71 rtsx_usb_switch_clock +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0xdc32f3c1 rtsx_usb_get_rsp +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0xddc7bf55 rtsx_usb_ep0_read_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0xe113b6a0 rtsx_usb_transfer_data +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0xe6e0c731 rtsx_usb_write_ppbuf +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0xe78a12ba rtsx_usb_ep0_write_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0xecd01cd2 rtsx_usb_card_exclusive_check +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0xf35c4066 rtsx_usb_read_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0xf5ef2f06 rtsx_usb_write_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_usb 0xfaf9ca69 rtsx_usb_send_cmd +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x049d9312 si476x_core_cmd_am_acf_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x089151c8 si476x_core_has_am +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x0b605d90 si476x_core_cmd_am_rsq_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x10b0e091 si476x_core_cmd_set_property +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x1bb6928e si476x_core_cmd_ic_link_gpo_ctl_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x1f5fcc47 si476x_core_cmd_power_down +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x227537a4 si476x_core_set_power_state +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x266dae7f si476x_core_cmd_am_tune_freq +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x2a79af91 si476x_core_cmd_power_up +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x30115da0 si476x_core_cmd_fm_phase_div_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x4737fb04 si476x_core_cmd_fm_seek_start +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x4e832755 si476x_core_is_a_primary_tuner +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x4fb6cec2 si476x_core_cmd_am_seek_start +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x503da265 si476x_core_cmd_fm_acf_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x517e0188 si476x_core_cmd_get_property +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x55bb5222 si476x_core_is_in_am_receiver_mode +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x6003fd76 si476x_core_i2c_xfer +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x669ec2a1 si476x_core_cmd_dig_audio_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x6870d3f7 si476x_core_cmd_ana_audio_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x68c5d1ac si476x_core_cmd_fm_rds_blockcount +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x78a81054 si476x_core_is_powered_up +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x9679b959 si476x_core_cmd_zif_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0x9fb4292f si476x_core_has_diversity +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xa0ccb288 si476x_core_stop +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xb1c9e072 si476x_core_cmd_fm_rds_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xc4093128 si476x_core_cmd_intb_pin_cfg +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xc44dea26 si476x_core_is_a_secondary_tuner +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xca6fa440 si476x_core_cmd_func_info +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xd7313e93 si476x_core_start +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xdc21a238 si476x_core_cmd_fm_rsq_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xeb90fa43 si476x_core_cmd_agc_status +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xec0b5e26 si476x_core_cmd_fm_tune_freq +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xeed72dca si476x_core_cmd_fm_phase_diversity +EXPORT_SYMBOL_GPL drivers/mfd/si476x-core 0xf3bcd73e devm_regmap_init_si476x +EXPORT_SYMBOL_GPL drivers/mfd/ssbi 0x686a4b87 ssbi_write +EXPORT_SYMBOL_GPL drivers/mfd/ssbi 0xc5c010dc ssbi_read +EXPORT_SYMBOL_GPL drivers/mfd/ti_am335x_tscadc 0x3498851d am335x_tsc_se_clr +EXPORT_SYMBOL_GPL drivers/mfd/ti_am335x_tscadc 0x4ff4ab75 am335x_tsc_se_set_cache +EXPORT_SYMBOL_GPL drivers/mfd/ti_am335x_tscadc 0x76441b8b am335x_tsc_se_set_once +EXPORT_SYMBOL_GPL drivers/mfd/ti_am335x_tscadc 0xca942729 am335x_tsc_se_adc_done +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0x5414cea7 tps65217_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0x67678b11 tps65217_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0x7562902e tps65217_set_bits +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0xa9a01bbc tps65217_clear_bits +EXPORT_SYMBOL_GPL drivers/mfd/tps65218 0x377ebb7e tps65218_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/tps65218 0x89b18312 tps65218_clear_bits +EXPORT_SYMBOL_GPL drivers/mfd/tps65218 0x958c0e46 tps65218_set_bits +EXPORT_SYMBOL_GPL drivers/mfd/tps65218 0xb397d2c8 tps65218_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/ucb1400_core 0x59019b31 ucb1400_adc_read +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0x1a1b5249 oslec_flush +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0x2feda75b oslec_hpf_tx +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0x3227a28e oslec_snapshot +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0x7dc9dddd oslec_adaption_mode +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0xb2c66001 oslec_create +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0xc8b5a524 oslec_free +EXPORT_SYMBOL_GPL drivers/misc/echo/echo 0xd370f679 oslec_update +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0x27cb133b eeprom_93cx6_multiread +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0x63d2ff63 eeprom_93cx6_wren +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0x793fc8de eeprom_93cx6_multireadb +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0x822222db eeprom_93cx6_write +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0x98bb5a22 eeprom_93cx6_read +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0xdb9ca14b eeprom_93cx6_readb +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x1d31cffd enclosure_register +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x283319e9 enclosure_component_alloc +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x290ff082 enclosure_remove_device +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x6c5a4bb3 enclosure_unregister +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0xacfd47b6 enclosure_find +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0xb19fc0b9 enclosure_add_device +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0xb946bee9 enclosure_component_register +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0xc5484429 enclosure_for_each_device +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x324aef41 lis3lv02d_joystick_disable +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x53ababfe lis3lv02d_init_device +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x65dcd62e lis3lv02d_joystick_enable +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x73a32fea lis3lv02d_remove_fs +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x77c3705e lis3_dev +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xa42b8ff5 lis3lv02d_poweron +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xb547fab1 lis3lv02d_poweroff +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xeabc09d4 lis3lv02d_init_dt +EXPORT_SYMBOL_GPL drivers/misc/ti-st/st_drv 0x55c61ed4 st_register +EXPORT_SYMBOL_GPL drivers/misc/ti-st/st_drv 0x77138830 st_unregister +EXPORT_SYMBOL_GPL drivers/mmc/host/dw_mmc-pltfm 0x09caa9b9 dw_mci_pltfm_register +EXPORT_SYMBOL_GPL drivers/mmc/host/dw_mmc-pltfm 0x57f81777 dw_mci_pltfm_remove +EXPORT_SYMBOL_GPL drivers/mmc/host/dw_mmc-pltfm 0xb6d74cc6 dw_mci_pltfm_pmops +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0x0319223f cfi_cmdset_0003 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0x3c3007d7 cfi_cmdset_0001 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0xfe0707a9 cfi_cmdset_0200 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0x68c9e853 cfi_cmdset_0701 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0x9b3027d5 cfi_cmdset_0002 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0xe5626c05 cfi_cmdset_0006 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0020 0x8d4ad64c cfi_cmdset_0020 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0x49710729 cfi_qry_mode_off +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0x5aa27048 cfi_qry_mode_on +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0x90ae38e7 cfi_qry_present +EXPORT_SYMBOL_GPL drivers/mtd/nand/brcmnand/brcmnand 0x6b35e580 brcmnand_probe +EXPORT_SYMBOL_GPL drivers/mtd/nand/brcmnand/brcmnand 0x9ecfde0d brcmnand_pm_ops +EXPORT_SYMBOL_GPL drivers/mtd/nand/brcmnand/brcmnand 0xafec5a42 brcmnand_remove +EXPORT_SYMBOL_GPL drivers/mtd/onenand/onenand 0x5b14a0ff onenand_release +EXPORT_SYMBOL_GPL drivers/mtd/onenand/onenand 0x708b8623 onenand_scan +EXPORT_SYMBOL_GPL drivers/mtd/spi-nor/spi-nor 0xbdc68d21 spi_nor_scan +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 0x4733b7c2 ubi_is_mapped +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x49bc63ce ubi_leb_erase +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x594a97be ubi_leb_read +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x5cfdd22d ubi_get_device_info +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x64695013 ubi_get_volume_info +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x85a8ee76 ubi_unregister_volume_notifier +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x8889ad6b ubi_leb_map +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x90046fa8 ubi_open_volume_path +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x9844616a ubi_leb_unmap +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x9b296900 ubi_close_volume +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xaa5fc9d7 ubi_open_volume_nm +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xc117d131 ubi_leb_change +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xc9a493dc ubi_do_get_device_info +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xcbb15e2a ubi_leb_read_sg +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xeba8771a ubi_open_volume +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xf5ee9ba8 ubi_register_volume_notifier +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xfe6bdb74 ubi_leb_write +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x0e24267c free_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x1397baad c_can_power_up +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x842282f2 unregister_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0xb66418b5 register_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0xc60cfba3 c_can_power_down +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0xe34a9693 alloc_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x222c295a can_len2dlc +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x244551ba alloc_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x3fd87f5b can_led_event +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x40689fef free_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x4862490a can_change_mtu +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x634d589d close_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x6cd84489 alloc_can_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x743fd854 can_bus_off +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x7d1977e7 safe_candev_priv +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x831b6aa9 open_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x860d0fcf alloc_canfd_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xa794f7ae can_put_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xb346573b can_dlc2len +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xbeda4177 alloc_can_err_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xd5e07965 register_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xd6b35bde devm_can_led_init +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xda157612 can_free_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xeb9be869 can_get_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xf8ded4bb unregister_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xfdcf1a70 can_change_state +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0x111fc429 alloc_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0x202c360b unregister_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0x2703ef0f free_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0x83c1663c register_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x036b6636 free_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x49ebd0d2 sja1000_interrupt +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x63649c40 register_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x9808ce6d unregister_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0xe9417897 alloc_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/ethernet/arc/arc_emac 0x20d51c6f arc_emac_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/arc/arc_emac 0x9e446697 arc_emac_probe +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac 0x0b39b6bd stmmac_dvr_probe +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac 0x14e4ea32 stmmac_dvr_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac 0x8cbf6398 stmmac_suspend +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac 0xd8e18d48 stmmac_resume +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac-platform 0x13ba34ad stmmac_pltfr_pm_ops +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac-platform 0x2c5d01e2 stmmac_pltfr_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/stmicro/stmmac/stmmac-platform 0x31c13b3c stmmac_pltfr_probe +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x1b60a53e macvlan_link_register +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x4a48d393 macvlan_common_newlink +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x8b73bf50 macvlan_dellink +EXPORT_SYMBOL_GPL drivers/net/macvlan 0xcc869895 macvlan_common_setup +EXPORT_SYMBOL_GPL drivers/net/macvtap 0x72eecf3f macvtap_get_socket +EXPORT_SYMBOL_GPL drivers/net/phy/mdio-mux 0x6318757f mdio_mux_uninit +EXPORT_SYMBOL_GPL drivers/net/phy/mdio-mux 0x80bfe7f1 mdio_mux_init +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0x387c53d5 usbnet_cdc_bind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0x5ce2514a usbnet_cdc_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0xb1701d7b usbnet_cdc_status +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0xe94f0a1b usbnet_generic_cdc_bind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x016ecc75 cdc_ncm_fill_tx_frame +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x1a5efc71 cdc_ncm_rx_verify_nth16 +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x4bc04fc0 cdc_ncm_rx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0x83b5556b cdc_ncm_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0xf7965a7e cdc_ncm_select_altsetting +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0xfb95e59e cdc_ncm_bind_common +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0xfc4e440f cdc_ncm_tx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ncm 0xfc7d03fe cdc_ncm_rx_verify_ndp16 +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x04295cb2 rndis_command +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x848dc6ce generic_rndis_bind +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0xa296151f rndis_rx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0xb2c2fe5b rndis_status +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0xb53f24f3 rndis_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0xf138be48 rndis_tx_fixup +EXPORT_SYMBOL_GPL drivers/net/vxlan 0x2ca6a6af vxlan_xmit_skb +EXPORT_SYMBOL_GPL drivers/net/vxlan 0x3a98107f vxlan_sock_add +EXPORT_SYMBOL_GPL drivers/net/vxlan 0x684da5a3 vxlan_get_rx_port +EXPORT_SYMBOL_GPL drivers/net/vxlan 0x8bec758e vxlan_sock_release +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x0d6cf3fd i2400m_dev_reset_handle +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x104b2839 i2400m_tx +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x4293d69c i2400m_release +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x48e30020 i2400m_cmd_enter_powersave +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x50dedc7a i2400m_reset +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x52f04448 i2400m_dev_bootstrap +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x6fb3a752 i2400m_netdev_setup +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x7e5893bb i2400m_post_reset +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x8a6fea79 i2400m_init +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xa0000e41 i2400m_error_recovery +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xa19dd422 i2400m_tx_msg_get +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xa4497bb9 i2400m_is_boot_barker +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xb00b793c i2400m_bm_cmd_prepare +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xb4cbbad8 i2400m_setup +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xb76ea78b i2400m_rx +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xcf1a5d01 i2400m_pre_reset +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xda9d323a i2400m_tx_msg_sent +EXPORT_SYMBOL_GPL drivers/net/wireless/cw1200/cw1200_core 0x002913b8 cw1200_can_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/cw1200/cw1200_core 0x2d9bcfe9 cw1200_core_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/cw1200/cw1200_core 0x426cfbcc cw1200_core_release +EXPORT_SYMBOL_GPL drivers/net/wireless/cw1200/cw1200_core 0x459587a5 cw1200_irq_handler +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x18f8d8f9 lbs_stop_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x20e367ab lbs_notify_command_response +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x3bc87b6c __lbs_cmd +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x4adeb50f lbs_process_rxed_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x515226a0 lbs_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x5fdf38b8 lbs_disablemesh +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x8342a9d3 lbs_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x8522936c lbs_queue_event +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x97746154 lbs_cmd_copyback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xb7f26357 lbs_get_firmware_async +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xb8a665a5 lbs_get_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xbbee381a lbs_host_to_card_done +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xbd17aa5c lbs_start_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xeb05e4e2 lbs_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xeea575e2 lbs_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xf0c60df6 lbs_send_tx_feedback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xf25e7cf8 lbs_host_sleep_cfg +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xf64277de lbs_debug +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x172b7803 lbtf_cmd_response_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x28a8f3b5 __lbtf_cmd +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x8cc373d1 lbtf_bcn_sent +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x9b294bcc lbtf_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xaa6e1858 lbtf_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xc85e6899 lbtf_debug +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xd5ba8982 lbtf_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xe4afc3ae lbtf_cmd_copyback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xf2d49670 lbtf_send_tx_feedback +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x262f8113 mwifiex_main_process +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x2c69dba2 mwifiex_handle_rx_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x31bd9748 mwifiex_alloc_dma_align_buf +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x460143b4 mwifiex_queue_main_work +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x590c1471 mwifiex_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x5adab311 mwifiex_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x782392fc mwifiex_disable_auto_ds +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x9cd00acc mwifiex_process_sleep_confirm_resp +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x9d87de4a mwifiex_enable_hs +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xb2f3a09e mwifiex_process_hs_config +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xbd7fda9d mwifiex_cancel_hs +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xbdf9508b mwifiex_drv_info_dump +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xc7374bb3 mwifiex_deauthenticate_all +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xe0d23bdb mwifiex_del_virtual_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xe69abcb9 mwifiex_upload_device_dump +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xed874215 mwifiex_init_shutdown_fw +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xf30a09f3 mwifiex_add_virtual_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xf4e40e2c mwifiex_write_data_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x016b073f p54_unregister_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x310b8516 p54_register_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x4ee2a85b p54_read_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x5b874d00 p54_free_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x965926f9 p54_parse_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xcb4c1a32 p54_parse_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xdab7add0 p54_free_skb +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xe1552640 p54_init_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xf713c190 p54_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0x41c1aab5 rsi_91x_init +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0x43a93cf3 rsi_read_pkt +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0x7201b98a rsi_dbg +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0x950b9675 rsi_mac80211_detach +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0xd543c69f rsi_91x_deinit +EXPORT_SYMBOL_GPL drivers/net/wireless/rsi/rsi_91x 0xdb3ca0e5 rsi_zone_enabled +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x09886450 rt2800_txdone_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x0c2a56ab rt2800_check_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x1d1acb2a rt2800_config_pairwise_key +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x1f7b1369 rt2800_gain_calibration +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x21106d8a rt2800_reset_tuner +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x2b0a730b rt2800_enable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x2e637fd8 rt2800_get_tsf +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x2ef2beba rt2800_wait_csr_ready +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x367d4c72 rt2800_load_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x413fec56 rt2800_config +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x51362999 rt2800_write_tx_data +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x5c6a9be4 rt2800_get_key_seq +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x60b6ca03 rt2800_conf_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x66041924 rt2800_process_rxwi +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x6eaff0b4 rt2800_get_survey +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x6ebdd5ce rt2800_config_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x759ef4fb rt2800_wait_wpdma_ready +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x79144f85 rt2800_read_eeprom_efuse +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x85323357 rt2800_clear_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x87026982 rt2800_write_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x8f3233ff rt2800_config_ant +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x9415a92a rt2800_vco_calibration +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xa475e6fb rt2800_sta_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xa7ccddab rt2800_disable_wpdma +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xa886ca6d rt2800_get_txwi_rxwi_size +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xb9f047af rt2800_link_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xbd173736 rt2800_link_tuner +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xbe119f58 rt2800_mcu_request +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xc563443e rt2800_config_erp +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xcc4f8226 rt2800_efuse_detect +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xd3dba0cb rt2800_config_shared_key +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xd62c0a34 rt2800_disable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xe05cf51d rt2800_probe_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xe36b2ec6 rt2800_set_rts_threshold +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xe946d284 rt2800_ampdu_action +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xf51214f0 rt2800_sta_add +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xf7a95e5a rt2800_config_filter +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xfbc7bc11 rt2800_rfkill_poll +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x05680cd9 rt2x00queue_unmap_skb +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x06e00581 rt2x00mac_sw_scan_start +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x148648b7 rt2x00mac_flush +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x1c8290ad rt2x00queue_start_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x23174be4 rt2x00queue_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x27485d3b rt2x00queue_for_each_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x28faf59b rt2x00mac_sta_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x31430eb5 rt2x00mac_remove_interface +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x364336db rt2x00mac_set_key +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x366b641e rt2x00queue_stop_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x3ba53564 rt2x00mac_conf_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x406ec23e rt2x00queue_start_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x4371f301 rt2x00queue_unpause_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x4bd8aaa0 rt2x00mac_start +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x4ce9f2de rt2x00lib_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x53547d06 rt2x00lib_probe_dev +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x55797288 rt2x00queue_get_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x5e9249c2 rt2x00queue_map_txskb +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x6ef00b89 rt2x00lib_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x7108ca5d rt2x00lib_rxdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x7b317a3c rt2x00lib_pretbtt +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x7bee3d66 rt2x00mac_sta_add +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x7ff3de70 rt2x00lib_dmadone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x87f1706b rt2x00mac_set_tim +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x90321076 rt2x00queue_flush_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x909c8d8f rt2x00mac_config +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x95e74762 rt2x00mac_sw_scan_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x9b918c65 rt2x00mac_stop +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xacb3fec5 rt2x00mac_add_interface +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xb0a1c263 rt2x00lib_txdone_noinfo +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xb23bab83 rt2x00mac_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xb96e722b rt2x00queue_pause_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xba50c1ae rt2x00mac_tx_frames_pending +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xbcbab2fd rt2x00mac_get_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xc2c0fa19 rt2x00mac_get_ringparam +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xc4dcf4fd rt2x00lib_txdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xc56520ed rt2x00queue_stop_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xcc3a9919 rt2x00lib_beacondone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xd36d0e12 rt2x00lib_get_bssidx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xd5f1e3cf rt2x00mac_configure_filter +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xd6c1e0b7 rt2x00mac_set_antenna +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xdc2249ee rt2x00mac_get_antenna +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xe5b5c45c rt2x00mac_bss_info_changed +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xebc5c535 rt2x00mac_rfkill_poll +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xebd9d7b7 rt2x00lib_remove_dev +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xed92cfc0 rt2x00lib_dmastart +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x18e94de9 rt2x00usb_watchdog +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x2ae97157 rt2x00usb_uninitialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x3fcb8f8a rt2x00usb_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x47aa9cb3 rt2x00usb_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x4bf758b2 rt2x00usb_initialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x69e41c3f rt2x00usb_vendor_request +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x6a09579c rt2x00usb_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x6d03c9f7 rt2x00usb_regbusy_read +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x8ccfcb85 rt2x00usb_disconnect +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x973b8460 rt2x00usb_vendor_req_buff_lock +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xa4385725 rt2x00usb_vendor_request_buff +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xb51fc2d6 rt2x00usb_disable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xb9b87d05 rt2x00usb_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xc6be8781 rt2x00usb_register_read_async +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xdaf97120 rt2x00usb_clear_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xf7f90f73 rt2x00usb_kick_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0x0b388e16 wl1251_alloc_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0x27726939 wl1251_init_ieee80211 +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0x3922f7f2 wl1251_free_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x0256c8f6 wlcore_set_key +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x0b9dd2c1 wlcore_scan_sched_scan_ssid_list +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x0c7805fe wl1271_cmd_send +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x0dd86e12 wl1271_tx_flush +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x0e5e28fb wlcore_event_dummy_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x148a12c4 wlcore_event_beacon_loss +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x1b0269cf wl12xx_cmd_build_probe_req +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x22b41e4a wlcore_scan_sched_scan_results +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x24c849b3 wlcore_event_roc_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x3b4387b2 wlcore_boot_upload_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x4493f054 wl1271_ps_elp_wakeup +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x45a96dee wlcore_alloc_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x4cd0bebf wlcore_boot_run_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x52c09a96 wl1271_acx_sleep_auth +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x53dff67d wl12xx_debug_level +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x574f7635 wlcore_free_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x69673b3b wlcore_cmd_wait_for_event_or_timeout +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x698bf3fc wlcore_synchronize_interrupts +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x7670594e wl12xx_acx_mem_cfg +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x77092dcc wlcore_get_native_channel_type +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x778c7d68 wl1271_cmd_test +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x77d2e96e wlcore_set_scan_chan_params +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x7d344300 wlcore_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x7d776c24 wlcore_set_partition +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x7da78f28 wlcore_disable_interrupts +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x843b331f wl1271_acx_init_mem_config +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x91da5146 wl1271_format_buffer +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x94e6ab88 wlcore_boot_upload_nvs +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x979b4313 wlcore_event_soft_gemini_sense +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x9f177a80 wlcore_event_channel_switch +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xa3ac06a4 wlcore_event_rssi_trigger +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xa4297ca1 wlcore_enable_interrupts +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xa974913e wlcore_event_max_tx_failure +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xae0443c9 wlcore_event_sched_scan_completed +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xb06c9234 wl1271_debugfs_update_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xb7e95194 wl1271_tx_min_rate_get +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xb936f706 wl1271_cmd_data_path +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xdcc7387a wl1271_cmd_configure +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xe4939362 wlcore_disable_interrupts_nosync +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xea2098f5 wl1271_acx_pm_config +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xee3dc24a wlcore_event_ba_rx_constraint +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xf03712d1 wlcore_translate_addr +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xf1741fc1 wlcore_event_inactive_sta +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xf187d44c wl1271_acx_set_ht_capabilities +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xf65a0f4c wlcore_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xf65ca3b7 wl1271_ps_elp_sleep +EXPORT_SYMBOL_GPL drivers/nfc/nfcmrvl/nfcmrvl 0x189fbefb nfcmrvl_nci_register_dev +EXPORT_SYMBOL_GPL drivers/nfc/nfcmrvl/nfcmrvl 0x66b20994 nfcmrvl_nci_recv_frame +EXPORT_SYMBOL_GPL drivers/nfc/nfcmrvl/nfcmrvl 0x68d11d47 nfcmrvl_nci_unregister_dev +EXPORT_SYMBOL_GPL drivers/nfc/nfcmrvl/nfcmrvl 0xc820ce1f nfcmrvl_parse_dt +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x0983fad8 st_nci_probe +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x40b0d363 st_nci_hci_load_session +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x4a481b03 st_nci_hci_cmd_received +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0x942c53f5 st_nci_discover_se +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0xac54cbad st_nci_remove +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0xc2c45852 st_nci_disable_se +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0xd8cd1d83 st_nci_hci_event_received +EXPORT_SYMBOL_GPL drivers/nfc/st-nci/st-nci 0xe26f56e0 st_nci_enable_se +EXPORT_SYMBOL_GPL drivers/power/pcf50633-charger 0x1c1f3e84 pcf50633_mbc_usb_curlim_set +EXPORT_SYMBOL_GPL drivers/power/pcf50633-charger 0xb938ab05 pcf50633_mbc_get_status +EXPORT_SYMBOL_GPL drivers/power/pcf50633-charger 0xf798bb2a pcf50633_mbc_get_usb_online_status +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x066912a5 mc13xxx_parse_regulators_dt +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x0cdfce14 mc13xxx_fixed_regulator_set_voltage +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x378208ae mc13xxx_fixed_regulator_ops +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x71f64a34 mc13xxx_regulator_ops +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0xb6ab577a mc13xxx_get_num_regulators_dt +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x0dbb8aa2 wm8350_ldo_set_slot +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x183bd360 wm8350_register_regulator +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x1df01206 wm8350_dcdc_set_slot +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x5c68d5c6 wm8350_isink_set_flash +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x69f0e794 wm8350_register_led +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0xe186b6dd wm8350_dcdc25_set_mode +EXPORT_SYMBOL_GPL drivers/regulator/wm8400-regulator 0xa956990b wm8400_register_regulator +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x0c1ae80a scsi_dh_attach +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x140b3038 scsi_register_device_handler +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x593a36c2 scsi_dh_handler_exist +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x8520c3e8 scsi_dh_set_params +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x85d25bc4 scsi_dh_activate +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0xaf54ba62 scsi_dh_attached_handler_name +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0xd8e73e30 scsi_unregister_device_handler +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0xf0226dc7 scsi_dh_detach +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x0fb51275 fcoe_queue_timer +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x374c1e1c fcoe_wwn_from_mac +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x38f4511d fcoe_validate_vport_create +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x39c3c1ac fcoe_link_speed_update +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x5c4fc27c __fcoe_get_lesb +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x6bdccdb0 fcoe_fc_crc +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x76c0fd04 fcoe_ctlr_device_delete +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x84b3d915 fcoe_wwn_to_str +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x9bee59b3 fcoe_clean_pending_queue +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x9ef63020 fcoe_get_paged_crc_eof +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xad56ca12 fcoe_ctlr_device_add +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xb41f9cac fcoe_start_io +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xbeb022a7 fcoe_get_wwn +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xc07acd15 fcoe_check_wait_queue +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xcec8100b fcoe_fcf_device_delete +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xd0da8d39 fcoe_get_lesb +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xda78cb79 fcoe_libfc_config +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xdc17d3fb fcoe_ctlr_get_lesb +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xeea33911 fcoe_fcf_device_add +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x0d056970 iscsi_boot_create_ethernet +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x52954042 iscsi_boot_create_target +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x63e06097 iscsi_boot_create_kset +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x82e9bed9 iscsi_boot_create_host_kset +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0xd1854324 iscsi_boot_destroy_kset +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0xe5f3905d iscsi_boot_create_initiator +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x0461a435 iscsi_queuecommand +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x0d5f7ed7 __iscsi_complete_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x12b2ad06 iscsi_switch_str_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x1b6a80ad iscsi_conn_failure +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x1d7bc9a6 iscsi_eh_abort +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x1f7688a3 iscsi_prep_data_out_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x2326a2dd iscsi_suspend_tx +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x254cc69f iscsi_conn_bind +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x2b97722d iscsi_conn_stop +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x2e984357 iscsi_put_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x2ea95fec iscsi_conn_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x377edd58 iscsi_target_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x3bef2f73 iscsi_pool_init +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x3ddfab40 iscsi_conn_queue_work +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x4514bd05 iscsi_session_failure +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x50e93aef iscsi_host_add +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x5aa4b389 iscsi_requeue_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x5aed0c87 iscsi_host_set_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x66b8303c iscsi_suspend_queue +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x66c38574 iscsi_update_cmdsn +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x6a5070ba iscsi_complete_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x7a5a6e9c iscsi_conn_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x7e7afc23 iscsi_eh_recover_target +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x80e6bee5 iscsi_complete_scsi_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x8212277a iscsi_conn_start +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x86bd288e iscsi_session_recovery_timedout +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x8c833e2a iscsi_itt_to_ctask +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x8d303b1b iscsi_pool_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x8ec9ed1b iscsi_conn_send_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x913e5d32 iscsi_session_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x97cc2197 iscsi_host_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x99c67a45 iscsi_eh_device_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x9b1d8385 __iscsi_put_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xa1fefe2d iscsi_eh_target_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xa8f4b147 iscsi_session_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xae7646ab iscsi_eh_session_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xb857249f iscsi_host_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xbb20ba68 iscsi_verify_itt +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xbf8c9136 iscsi_conn_get_addr_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xd2d63f4d iscsi_host_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xd3316e98 iscsi_host_remove +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xd560b4ef iscsi_set_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xe075e00e __iscsi_get_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xe57fbaa0 iscsi_conn_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xee44b457 iscsi_session_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xf75997e0 iscsi_itt_to_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x087fe37c iscsi_tcp_segment_done +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x0c69560d iscsi_segment_seek_sg +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x10ad3646 iscsi_tcp_recv_segment_is_hdr +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x2e765c7b iscsi_tcp_r2tpool_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x49f94a74 iscsi_tcp_hdr_recv_prep +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x66891a45 iscsi_tcp_conn_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x6f5c7ac9 iscsi_tcp_cleanup_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x72bde678 iscsi_segment_init_linear +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x7fbd3110 iscsi_tcp_r2tpool_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x88bb8e98 iscsi_tcp_segment_unmap +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xae118d9d iscsi_tcp_set_max_r2t +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xb9df68ff iscsi_tcp_task_init +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xbd44d6b6 iscsi_tcp_task_xmit +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xc21f7998 iscsi_tcp_recv_skb +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xcca564ab iscsi_tcp_conn_get_stats +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xd1639392 iscsi_tcp_dgst_header +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xffa2cb3e iscsi_tcp_conn_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x00b313df sas_get_local_phy +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x0d945dda sas_alloc_slow_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x1efe26a2 sas_change_queue_depth +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x284aa0c8 sas_ssp_task_response +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x2fb492ba sas_ioctl +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x34be955d sas_register_ha +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x3dc0f622 sas_free_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x57360ed2 sas_alloc_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x57efd802 sas_unregister_ha +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x5f2bfb1f sas_phy_reset +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x69df946f sas_slave_configure +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x7c0a5f5e sas_ata_schedule_reset +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x80d1c162 sas_queuecommand +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x88d89f25 sas_eh_bus_reset_handler +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x8faa2120 sas_target_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xa1a69934 sas_task_abort +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xaa8ae9c5 sas_domain_attach_transport +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xad24ef76 sas_domain_release_transport +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xb1277bfa sas_bios_param +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xb3942120 sas_request_addr +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xcd2f48d7 sas_eh_device_reset_handler +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xd38ca7c8 sas_drain_work +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xfba9a7d4 sas_target_destroy +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xfdb715c1 sas_eh_abort_handler +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x07b371bc iscsi_ping_comp_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x0aade062 iscsi_conn_error_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x0b1a8f53 iscsi_find_flashnode_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x0f276f9c iscsi_create_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x19144ccc iscsi_destroy_iface +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x19b9bba4 iscsi_get_port_state_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x1b5078b0 iscsi_find_flashnode_sess +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x1bb441f8 iscsi_is_session_dev +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x267a398f iscsi_add_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x2be34dbb iscsi_session_chkready +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x2f625c46 iscsi_post_host_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x3229da37 iscsi_is_session_online +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x3354709f iscsi_register_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x384de636 iscsi_unblock_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x44d08322 iscsi_destroy_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x48bf39a5 iscsi_create_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x4df76154 iscsi_host_for_each_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x50565946 iscsi_create_flashnode_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x519d9fc1 iscsi_destroy_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x699fe53e iscsi_get_discovery_parent_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x6b9879ac iscsi_alloc_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x6c3fbc39 iscsi_get_port_speed_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x74dd11f6 iscsi_scan_finished +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x76ae0786 iscsi_block_scsi_eh +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x78a36150 iscsi_destroy_all_flashnode +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x7d80f2dc iscsi_remove_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x7e5e4b34 iscsi_create_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x8138b5b6 iscsi_offload_mesg +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x84a005f1 iscsi_get_router_state_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x8ca2b944 iscsi_unregister_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xa12fe379 iscsi_free_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xa55f2202 iscsi_is_flashnode_conn_dev +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xbc071179 iscsi_get_ipaddress_state_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xbc2bef51 iscsi_session_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xbf767661 iscsi_conn_login_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xc0909ca5 iscsi_block_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xc6c3ffe5 iscsi_flashnode_bus_match +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xc8a7c8eb iscsi_lookup_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xd23d0040 iscsi_recv_pdu +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xe9a2bcb1 iscsi_create_iface +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xea368243 iscsi_destroy_flashnode_sess +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xf0d00ecb iscsi_destroy_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xff665881 iscsi_create_flashnode_sess +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0x0948bdf3 sas_tlr_supported +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0x2dcd392c sas_is_tlr_enabled +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0x81d34611 sas_enable_tlr +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0xb30fe6c8 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 0xd457d4f4 spi_populate_tag_msg +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x3a8eb4eb srp_attach_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x77f5e020 srp_rport_del +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x88b16aa9 srp_remove_host +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0xdc4c2494 srp_stop_rport_timers +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0xdf8e089d srp_rport_add +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0xee891cc0 srp_tmo_valid +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0xf31f10b2 srp_release_transport +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0x50b2586d ufshcd_dme_set_attr +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0x80fe54d3 ufshcd_init +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0x816ab531 ufshcd_dme_get_attr +EXPORT_SYMBOL_GPL drivers/scsi/ufs/ufshcd 0xb20edcf0 ufshcd_remove +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x4997dd1d spi_bitbang_start +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x5d768993 spi_bitbang_setup +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x612eab87 spi_bitbang_cleanup +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0xe1769062 spi_bitbang_setup_transfer +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0xeb6fe879 spi_bitbang_stop +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0x5e9e8012 dw_spi_resume_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0x71ba6c09 dw_spi_suspend_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0x8d5e2c85 dw_spi_add_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0xd7539932 dw_spi_remove_host +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x051c8d05 spmi_command_reset +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x149fb683 spmi_controller_remove +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x14c749cf spmi_ext_register_read +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x1766fe3d spmi_ext_register_writel +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x27eb3392 spmi_driver_register +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x2f302039 spmi_controller_alloc +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x3d6c971f spmi_device_alloc +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x466127ea spmi_register_zero_write +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x553c6977 spmi_register_write +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0x72816d5c spmi_register_read +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xa10ca0dd spmi_ext_register_write +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xad1b514b spmi_command_sleep +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xbecfa411 spmi_command_wakeup +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xc653eefb spmi_device_remove +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xd0f68965 spmi_controller_add +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xd1934a66 spmi_device_add +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xf1f00b62 spmi_ext_register_readl +EXPORT_SYMBOL_GPL drivers/spmi/spmi 0xffd72144 spmi_command_shutdown +EXPORT_SYMBOL_GPL drivers/ssb/ssb 0xd4d32889 ssb_pmu_spuravoid_pllupdate +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x0c49068c comedi_readback_insn_read +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x0cd330f4 range_unknown +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x0e1cab2f comedi_alloc_subdev_readback +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x145de441 comedi_alloc_spriv +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x1c542618 comedi_buf_read_samples +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x1cfa0404 comedi_driver_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x1ec9dd70 comedi_dev_get_from_minor +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x21102f87 range_0_32mA +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x29ff5ee9 comedi_buf_read_alloc +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x2ba816e6 comedi_alloc_subdevices +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x2f0ad9d3 range_bipolar5 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x37a93024 comedi_buf_write_samples +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x3af38664 comedi_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x4236eaaf range_4_20mA +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x44a6a448 comedi_buf_read_n_available +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x4fe634f3 range_bipolar2_5 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x50c75032 comedi_legacy_detach +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x535b6323 comedi_buf_read_free +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x58083d77 comedi_load_firmware +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x60dcaf30 comedi_set_spriv_auto_free +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x65ebb8be comedi_nsamples_left +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x796e4950 comedi_request_region +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x7cbd95c9 comedi_auto_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x8113872c range_unipolar10 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x9096f38e comedi_check_chanlist +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x9729cb01 comedi_buf_write_free +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x9c85e456 __comedi_request_region +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x9fe46d0a comedi_dio_update_state +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xa08c607d comedi_dio_insn_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xa44aaf3e comedi_dev_put +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xb679cebc range_0_20mA +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xb71dce79 comedi_nscans_left +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 0xbff07c2a comedi_event +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xc4004836 comedi_timeout +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xc4b012ce comedi_inc_scan_progress +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xdb2044b2 range_unipolar5 +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xe225a17d comedi_handle_events +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xec8324b3 comedi_alloc_devpriv +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xecab1037 comedi_is_subdevice_running +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xef8a9101 comedi_bytes_per_scan +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xf3e4dae7 comedi_auto_unconfig +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xfc5b6da5 comedi_buf_write_alloc +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xfc96c47a comedi_set_hw_dev +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0x4b7e1837 comedi_usb_auto_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0x9fa0f79f comedi_usb_driver_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0xbc2ce646 comedi_usb_auto_unconfig +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0xc3e41741 comedi_usb_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0xca37a06f comedi_to_usb_interface +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi_usb 0xfac7eff8 comedi_to_usb_dev +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/amplc_dio200_common 0x3d740d07 amplc_dio200_common_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/amplc_dio200_common 0x8ae2588a amplc_dio200_set_enhance +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/amplc_pc236_common 0xb3f79e7f amplc_pc236_common_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x1938d2b5 comedi_8254_read +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x39c09e9f comedi_8254_ns_to_timer +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x4c98ccbe comedi_8254_subdevice_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x603abd2b comedi_8254_update_divisors +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x641ab2b7 comedi_8254_mm_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x64366876 comedi_8254_cascade_ns_to_timer +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x81621951 comedi_8254_status +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0x82bd3021 comedi_8254_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0xc6a6812d comedi_8254_write +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0xcd6dde81 comedi_8254_pacer_enable +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0xdda3edc4 comedi_8254_load +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0xf3a80158 comedi_8254_set_mode +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8254 0xf8bc8870 comedi_8254_set_busy +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8255 0x2491a753 subdev_8255_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8255 0x57c415bf subdev_8255_regbase +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/comedi_8255 0x799302cb subdev_8255_mm_init +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/das08 0x8f8f6780 das08_common_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_common 0xe010c8bf labpc_common_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc_common 0xfbadd466 labpc_common_detach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x25b460e5 ni_tio_insn_write +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x2bd7a3e0 ni_tio_insn_read +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x4c67c08d ni_tio_set_gate_src +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0xa642e056 ni_tio_init_counter +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0xcff2e19e ni_tio_arm +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0xd456b630 ni_tio_insn_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0xe7100bbb ni_gpct_device_construct +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0xf477679f ni_gpct_device_destroy +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x04cf7a92 comedi_close +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x1ad38984 comedi_dio_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x1e22abf8 comedi_dio_get_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0x7def6123 comedi_get_n_channels +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0xae0d65f8 comedi_open +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0xc168d735 comedi_find_subdevice_by_type +EXPORT_SYMBOL_GPL drivers/staging/comedi/kcomedilib/kcomedilib 0xc21dc2b6 comedi_dio_bitfield2 +EXPORT_SYMBOL_GPL drivers/staging/iio/addac/adt7316 0xc7bb113a adt7316_pm_ops +EXPORT_SYMBOL_GPL drivers/staging/lustre/lustre/obdclass/obdclass 0x1a8cf199 debugfs_lustre_root +EXPORT_SYMBOL_GPL drivers/staging/lustre/lustre/obdclass/obdclass 0x57f41b6b lustre_attr_show +EXPORT_SYMBOL_GPL drivers/staging/lustre/lustre/obdclass/obdclass 0x6bc10c40 lustre_kobj +EXPORT_SYMBOL_GPL drivers/staging/lustre/lustre/obdclass/obdclass 0xb60df9fb lustre_attr_store +EXPORT_SYMBOL_GPL drivers/staging/lustre/lustre/obdclass/obdclass 0xfaa7f7b4 lustre_sysfs_ops +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x0e7afd5c spk_synth_is_alive_nop +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x0e81c76d spk_serial_out +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x14f06fe7 spk_serial_in_nowait +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x1643e4cf spk_synth_immediate +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x2742deb3 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 0x475e158a synth_request_region +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x64b89a00 synth_add +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x6cd2e9fb spk_serial_synth_probe +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x86442336 speakup_event +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x8e146195 synth_release_region +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x912411a6 spk_var_show +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x99dc8c2b spk_synth_is_alive_restart +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x9a888082 synth_buffer_getc +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xb2978dbc speakup_info +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xb48956f8 synth_buffer_peek +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xbbd15a51 speakup_start_ttys +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xc0cc214a synth_remove +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xc3378d2a spk_synth_flush +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xc766ae09 synth_printf +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xd1b551a2 spk_get_var +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xd3200aab spk_do_catch_up +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xe7cd4558 spk_serial_release +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xe7e810f8 spk_serial_in +EXPORT_SYMBOL_GPL drivers/tty/n_tracesink 0x585ebaac n_tracesink_datadrain +EXPORT_SYMBOL_GPL drivers/uio/uio 0x2cbca301 uio_event_notify +EXPORT_SYMBOL_GPL drivers/uio/uio 0x5df57906 uio_unregister_device +EXPORT_SYMBOL_GPL drivers/uio/uio 0xec97c9f8 __uio_register_device +EXPORT_SYMBOL_GPL drivers/usb/atm/usbatm 0xb4094aee usbatm_usb_probe +EXPORT_SYMBOL_GPL drivers/usb/atm/usbatm 0xfe9d18fb usbatm_usb_disconnect +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0x40dd533d ulpi_register_interface +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0x5b60cbfe ulpi_register_driver +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0x685cf224 ulpi_unregister_interface +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0xd99f57c1 ulpi_unregister_driver +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0xf662ad7c ulpi_read +EXPORT_SYMBOL_GPL drivers/usb/common/ulpi 0xf8f8c80d ulpi_write +EXPORT_SYMBOL_GPL drivers/usb/misc/ezusb 0xcb295ad1 ezusb_fx1_set_reset +EXPORT_SYMBOL_GPL drivers/usb/misc/ezusb 0xfa513d0a ezusb_fx1_ihex_firmware_download +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x1ad19fee usb_ftdi_elan_edset_output +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x2a42af96 usb_ftdi_elan_edset_flush +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x43aba915 usb_ftdi_elan_edset_empty +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x47197d7e usb_ftdi_elan_write_pcimem +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x92ca96b5 usb_ftdi_elan_read_pcimem +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x989c3a70 usb_ftdi_elan_edset_setup +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xaad3d1ff ftdi_elan_gone_away +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xb8db3dcc usb_ftdi_elan_edset_single +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xc50374e5 usb_ftdi_elan_edset_input +EXPORT_SYMBOL_GPL drivers/usb/phy/phy-am335x-control 0x7ff1c087 am335x_get_phy_control +EXPORT_SYMBOL_GPL drivers/usb/phy/phy-isp1301 0xd303e0d6 isp1301_get_client +EXPORT_SYMBOL_GPL drivers/usb/serial/usb_wwan 0x1530dd2b usb_wwan_port_probe +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x1be56f5f usb_serial_generic_submit_read_urbs +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x2c2e70c7 usb_serial_deregister_drivers +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x2ca20277 usb_serial_register_drivers +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x2ebeddd3 usb_serial_handle_dcd_change +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x76d73e93 usb_serial_generic_write_start +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x94cea3f0 usb_serial_generic_chars_in_buffer +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x9ffc4c1e usb_serial_generic_close +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xa25f170c usb_serial_generic_open +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xa89a59cb usb_serial_generic_write_bulk_callback +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xb63401c4 usb_serial_generic_unthrottle +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xb81d583e usb_serial_generic_read_bulk_callback +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xba4367f4 usb_serial_generic_tiocmiwait +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xc5747c9f usb_serial_handle_break +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xd3a3f40b usb_serial_generic_write +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xd4e7cc5e usb_serial_generic_resume +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xd61bcdfe usb_serial_generic_wait_until_sent +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xe6fb49f1 usb_serial_generic_get_icount +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xe7609a17 usb_serial_generic_throttle +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xe95e3f4f usb_serial_generic_process_read_urb +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xfacecb1b usb_serial_port_softint +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xfb27f331 usb_serial_handle_sysrq_char +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x0877955d usbip_event_add +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x640ab4ff usbip_recv_xbuff +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x6f9dbcfe usbip_stop_eh +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x78b72f44 usbip_debug_flag +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0x794c50da usbip_alloc_iso_desc_pdu +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xa8fd7f5a usbip_start_eh +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xb8753157 usbip_pack_pdu +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xc468dc75 dev_attr_usbip_debug +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xcafeda6b usbip_dump_urb +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xce6b28fc usbip_recv +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xd02753dc usbip_header_correct_endian +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xd997908b usbip_pad_iso +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xe1ea0586 usbip_dump_header +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xf3afb71d usbip_recv_iso +EXPORT_SYMBOL_GPL drivers/usb/usbip/usbip-core 0xf663032e usbip_event_happened +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x0ed1b6d9 rpipe_ep_disable +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x323c651c __wa_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x39f051c7 wa_urb_enqueue +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x4acdd569 wa_create +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x5cb8ecbd wa_urb_dequeue +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x6d44b353 rpipe_clear_feature_stalled +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x7085a2c8 wa_dti_start +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xc543b60e wa_process_errored_transfers_run +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xcb55ad58 rpipe_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xf4654c3f wa_urb_enqueue_run +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x020e2daf wusbhc_b_create +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x0bb6bf5e wusb_cluster_id_get +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x1025a01f wusbhc_reset_all +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x107298af wusbhc_chid_set +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x117fadd6 wusbhc_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x1770ddf4 wusbhc_create +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x44e0ae34 wusbhc_rh_control +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x63384950 wusbhc_b_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x7c1a4630 wusbhc_mmcie_set +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x7f0b7631 wusb_dev_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x96e7ad6f wusbhc_rh_start_port_reset +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xb0cbec55 wusbhc_handle_dn +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xb725d128 wusb_cluster_id_put +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xd2cb6f91 wusbhc_mmcie_rm +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xde816d19 wusbhc_giveback_urb +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xf2c3f489 wusbhc_rh_status_data +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xf770a6b4 wusbd +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xf7e67d84 __wusb_dev_get_by_usb_dev +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xfe2e17d7 wusb_et_name +EXPORT_SYMBOL_GPL drivers/uwb/i1480/dfu/i1480-dfu-usb 0x28b6e66d i1480_fw_upload +EXPORT_SYMBOL_GPL drivers/uwb/i1480/dfu/i1480-dfu-usb 0xab93d98c i1480_cmd +EXPORT_SYMBOL_GPL drivers/uwb/i1480/dfu/i1480-dfu-usb 0xb66a99f5 i1480_rceb_check +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x077fa071 uwb_radio_stop +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x08737c36 uwb_rc_dev_addr_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x0b7e77f1 uwb_rc_alloc +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x0b8aad57 uwb_est_unregister +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x0d98da75 uwb_notifs_deregister +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x0f50b4c0 uwb_rc_get_by_grandpa +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x155d0b12 uwb_rc_neh_error +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x170563fa uwb_rc_reset_all +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x17e568e8 uwb_rsv_modify +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x25e90879 uwb_rsv_terminate +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x26ce5b30 uwb_radio_start +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x430bc6d0 uwb_dev_for_each +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x4973d651 uwb_pal_register +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x4d57ae3c uwb_rsv_type_str +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x531a5bb0 uwb_pal_unregister +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x5872f81d uwb_pal_init +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x5e4bc088 __uwb_addr_print +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x5ef28007 uwb_rc_neh_grok +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x70e6181c uwb_rc_post_reset +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x770c70fe uwb_rc_init +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x7dcfcd23 uwb_ie_next +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x81e90d95 uwb_rc_cmd_async +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x83cac346 uwb_rc_rm +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x947d1ab3 uwb_rsv_establish +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x98413234 uwb_rsv_state_str +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x99ca840d uwb_dev_try_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x9e629c59 uwb_rc_put +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x9f0b5ded __uwb_rc_try_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x9f25b603 uwb_rc_cmd +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xa27da9fb uwb_rc_mac_addr_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xb7a66579 uwb_rc_get_by_dev +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xb8486095 uwb_rsv_create +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xbc27ef56 uwb_rsv_destroy +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xbc7f5bc5 uwb_rsv_get_usable_mas +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xc2612586 uwb_notifs_register +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xc921838f uwb_rc_vcmd +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xd6cbb8d7 uwb_rc_add +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xe0b6c264 uwb_rc_ie_rm +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xe1716f06 uwb_est_register +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xe2778f09 uwb_est_find_size +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xfae70eee uwb_rc_ie_add +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xfc5e38b3 uwb_rc_pre_reset +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xffafbe32 uwb_rsv_accept +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x04358607 ili9320_write +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x1bf20f14 ili9320_remove +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x382cd906 ili9320_write_regs +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x65f52b3a ili9320_resume +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x8732900b ili9320_suspend +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0xcfa0d3a0 ili9320_shutdown +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0xebd3eee4 ili9320_probe_spi +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x0804e870 auok190x_read_cmdargs +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x09ec7271 auok190x_pm +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x3d005470 auok190x_send_command_nowait +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x6714eb6f auok190x_send_cmdargs_pixels_nowait +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0x9a90573a auok190x_send_cmdargs_pixels +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0xb9b0c457 auok190x_common_probe +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0xcf9044ff auok190x_send_command +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0xe47160a3 auok190x_send_cmdargs_nowait +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0xf469febb auok190x_send_cmdargs +EXPORT_SYMBOL_GPL drivers/video/fbdev/auo_k190x 0xf91c9f67 auok190x_common_remove +EXPORT_SYMBOL_GPL drivers/video/fbdev/core/fb_sys_fops 0xa9d2adaf fb_sys_read +EXPORT_SYMBOL_GPL drivers/video/fbdev/core/fb_sys_fops 0xc5f133b9 fb_sys_write +EXPORT_SYMBOL_GPL drivers/w1/wire 0x128eaa65 w1_reset_bus +EXPORT_SYMBOL_GPL drivers/w1/wire 0x131dd7e5 w1_reset_resume_command +EXPORT_SYMBOL_GPL drivers/w1/wire 0x29013369 w1_read_block +EXPORT_SYMBOL_GPL drivers/w1/wire 0x3683fc6e w1_read_8 +EXPORT_SYMBOL_GPL drivers/w1/wire 0x507dea54 w1_next_pullup +EXPORT_SYMBOL_GPL drivers/w1/wire 0x5e48e6dc w1_touch_block +EXPORT_SYMBOL_GPL drivers/w1/wire 0x7c2f2afb w1_calc_crc8 +EXPORT_SYMBOL_GPL drivers/w1/wire 0x94351dfc w1_reset_select_slave +EXPORT_SYMBOL_GPL drivers/w1/wire 0xb675ca36 w1_write_8 +EXPORT_SYMBOL_GPL drivers/w1/wire 0xd6198d2b w1_write_block +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x485dd916 dlm_posix_lock +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x6285cde2 dlm_posix_get +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x8b6bd864 dlm_posix_unlock +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x9321df95 dlm_lock +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xc6dc8c2f dlm_new_lockspace +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xcf9f3328 dlm_release_lockspace +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xdc583c08 dlm_unlock +EXPORT_SYMBOL_GPL fs/fscache/fscache 0x092cf98e fscache_object_sleep_till_congested +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x0d7b37ca lockd_down +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x22231953 lockd_up +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x6d89f33f nlmsvc_unlock_all_by_sb +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x77e35ccc nlmsvc_unlock_all_by_ip +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x96faf7eb nlmclnt_init +EXPORT_SYMBOL_GPL fs/lockd/lockd 0xb0adef55 nlmsvc_ops +EXPORT_SYMBOL_GPL fs/lockd/lockd 0xb664ec9d nlmclnt_done +EXPORT_SYMBOL_GPL fs/lockd/lockd 0xca2a6ff2 nlmclnt_proc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x033b40ec nfs_show_devname +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x04f82f14 nfs_fs_mount_common +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0bb77eed nfs_alloc_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0bc3d069 nfs_pageio_init_write +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0c0950fe nfs_post_op_update_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0eb28e73 nfs_pageio_reset_read_mds +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0f95b5f5 nfs_probe_fsinfo +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x10932b09 nfs_create +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x11785d2c nfs_clone_sb_security +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x11a3dcae nfs_rmdir +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1266c0ad nfs_invalidate_atime +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x17b518c9 nfs_show_stats +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x17f910fd nfs_setattr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1922bcc0 nfs_lookup +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1a3416b3 nfs_sync_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1b9e7066 nfs_kill_super +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1bd9b8dd nfs_create_rpc_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1ea308b1 nfs_get_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x22942c63 nfs_get_lock_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x231fe6cf nfs_flock +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2352b68c nfs_init_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x247abe4a nfs_mark_client_ready +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x24917d24 nfs_may_open +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x25b4c692 nfs_file_llseek +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x25de52d1 nfs_file_mmap +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x26884ff7 nfs_alloc_fhandle +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x26badcad nfs_request_add_commit_list +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x29fccb46 nfs_commitdata_release +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2ad12899 nfs_symlink +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2c6f17f9 nfs_generic_pgio +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x308f4fb9 nfs_pgio_header_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x32f4af05 nfs_fscache_open_file +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3475a098 nfs_retry_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x36d47a89 nfs4_fs_type +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x388d52a2 nfs_atomic_open +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x391e397b nfs_permission +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x39e05ac3 nfs_idmap_cache_timeout +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3a4abfeb nfs_request_remove_commit_list +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3b7f6ae8 nfs_pageio_init +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3bc3f036 nfs_put_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3c054fd3 nfs_pageio_reset_write_mds +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3ca31f35 nfs_net_id +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3cd7c548 put_nfs_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3e086829 nfs_sb_deactive +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3f2690f2 nfs_check_flags +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x41cf6a32 nfs_pageio_resend +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4288ecf3 nfs_request_add_commit_list_locked +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x42f2c81f nfs4_client_id_uniquifier +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x43ca794e nfs_mknod +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x452be7c0 nfs_server_remove_lists +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4ba72a4a nfs_path +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4c7397b7 nfs4_label_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4cb9e001 recover_lost_locks +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4cf7d793 nfs_pgio_header_free +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4f728446 nfs_fill_super +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4fc9cab1 nfs_close_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x51892d61 nfs_callback_set_tcpport +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x51b00c94 nfs_try_mount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x524f7c68 nfs_clone_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5446f709 nfs_file_flush +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x554c4f48 nfs_alloc_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x584b8482 nfs_inc_attr_generation_counter +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x598a095a nfs_file_release +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5d100f82 nfs_show_path +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5d37e99b nfs_wait_client_init_complete +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5d8b8d03 nfs_wb_all +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5e1d863a nfs_sockaddr_match_ipaddr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5f283cec nfs_setsecurity +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5f4e3fa7 nfs_init_cinfo +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x622a7333 nfs_inode_attach_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x63b1904c nfs_put_lock_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x65c85626 nfs_clear_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x66b86519 nfs_alloc_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6a1b7ddf nfs_access_set_mask +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6a331e36 nfs_do_submount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6d91c71d nfs_sb_active +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6f869431 nfs_instantiate +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7060bbb5 nfs_init_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7147d0fb nfs_access_zap_cache +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x724e5afd nfs_commitdata_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x79ade686 nfs_link +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7c875530 nfs4_dentry_operations +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x80ed9e88 nfs_file_splice_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x891e2e43 nfs_pgheader_init +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8d37dd6a nfs_server_copy_userdata +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x90a5530f nfsiod_workqueue +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9169f635 nfs_generic_pg_test +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x91d1fe52 max_session_slots +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x92701647 nfs_mkdir +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x938940b7 unregister_nfs_version +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x94f487e7 register_nfs_version +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9741566d nfs_free_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9796a6bb nfs_pgio_current_mirror +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x97f92c11 nfs_create_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa3cf80eb nfs_fs_type +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa3f927c7 nfs_revalidate_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa6c865ee nfs_wait_bit_killable +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa83ac331 nfs_initiate_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa8d2d1ce nfs_callback_tcpport +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa8e9e1ae send_implementation_id +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xaaa14361 nfs_dreq_bytes_left +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xab3cbbad nfs_getattr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xaf5ddb8c nfs_rename +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xafbb6a9d nfs_show_options +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb1c1b801 nfs_file_fsync_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb2d3eb4e nfs_file_set_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb570fd02 nfs_zap_acl_cache +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb5f6d9c4 nfs_pgio_data_destroy +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb606e716 nfs_fattr_init +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb755f025 nfs_server_insert_lists +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb8958b1a __tracepoint_nfs_fsync_exit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb9bd6082 nfs_remount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbaa7e163 get_nfs_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbb430132 nfs_fhget +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbbec4afd nfs_access_add_cache +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbefe7650 nfs_initiate_pgio +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbf1987ab nfs_refresh_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc12446fc nfs_drop_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc19e7991 nfs_statfs +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc48a9b6f nfs_unlink +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc4ff1e9f nfs_auth_info_match +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc5ef47d5 nfs_init_timeout_values +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xcc0cb845 __tracepoint_nfs_fsync_enter +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xce82224a nfs_sops +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd1772aac nfs_file_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd2513081 _nfs_display_fhandle_hash +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd2db4930 nfs_umount_begin +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd49825e4 nfs_submount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd6a02f58 nfs_init_server_rpcclient +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd79258b0 nfs_dentry_operations +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd8bc8399 nfs_write_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xda1505f2 nfs_post_op_update_inode_force_wcc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdae9b5d7 nfs4_disable_idmapping +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdb91ee4e nfs_commit_free +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdcda8ee5 nfs_fs_mount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdf40ae31 nfs_set_sb_security +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe0d426d5 nfs_setattr_update_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe3f2e346 nfs_file_operations +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe69c3217 nfs_force_lookup_revalidate +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe92c510d nfs_direct_set_resched_writes +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xec937572 nfs_destroy_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xecf667a2 nfs_file_write +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf3187fed nfs_lock +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf4062c23 alloc_nfs_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf6cc98e3 nfs_writeback_update_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf9d71e50 nfs_free_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfa9be71c nfs_pageio_init_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfb7ee006 nfs_alloc_fattr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfc619abd _nfs_display_fhandle +EXPORT_SYMBOL_GPL fs/nfs/nfsv3 0x67e9e783 nfs3_set_ds_client +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x0a066d3d nfs4_init_ds_session +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x0a7516cb nfs4_schedule_lease_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x11008daa pnfs_update_layout +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x11bda27c __tracepoint_nfs4_pnfs_read +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x170f3ed6 nfs41_maxgetdevinfo_overhead +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x1745b757 _pnfs_return_layout +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x1796d12f pnfs_generic_pg_init_write +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x1cb53c2a pnfs_generic_sync +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x20805965 pnfs_read_resend_pnfs +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x21bd00df pnfs_write_done_resend_to_mds +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x23cdb591 pnfs_put_lseg_locked +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x26220e34 pnfs_generic_pg_writepages +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x2bafe75d pnfs_read_done_resend_to_mds +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x31c88c11 pnfs_put_lseg +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x33db774f pnfs_generic_scan_commit_lists +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x42cd2a87 nfs4_pnfs_ds_add +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x439f2962 nfs4_set_rw_stateid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x5502a05a nfs4_schedule_stateid_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x59106b31 pnfs_error_mark_layout_for_return +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x5a504064 pnfs_ld_write_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x5f021dca nfs4_schedule_session_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x5f468db7 nfs4_find_or_create_ds_client +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x64c283e1 pnfs_generic_write_commit_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x65b17942 nfs4_schedule_lease_moved_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x665fa50e __tracepoint_nfs4_pnfs_write +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x69d3558d pnfs_generic_rw_release +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x6b5eded0 pnfs_report_layoutstat +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x747fdde8 pnfs_generic_recover_commit_reqs +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x7625f910 nfs4_decode_mp_ds_addr +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x7920ac9f nfs4_set_ds_client +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x7bc6a203 nfs4_schedule_migration_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x7cc347cb nfs4_mark_deviceid_unavailable +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x83ae6aaa nfs4_pnfs_v3_ds_connect_unload +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x8feaaba3 pnfs_unregister_layoutdriver +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x900ecba6 nfs4_test_deviceid_unavailable +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x907503f6 nfs4_pnfs_ds_put +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x93627014 nfs4_sequence_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x9de3f084 pnfs_ld_read_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x9fb80a10 pnfs_nfs_generic_sync +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xa02df320 nfs_map_string_to_numeric +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xa56f4b30 pnfs_generic_pg_cleanup +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xa77f5e45 nfs4_init_deviceid_node +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xb0992638 nfs41_setup_sequence +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xb0d47ef0 pnfs_generic_pg_test +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xb5ad46d5 pnfs_destroy_layout +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xb942777b pnfs_generic_clear_request_commit +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xbe76ecf9 nfs4_proc_getdeviceinfo +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xc35c09ee nfs4_find_get_deviceid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xc3d70a3f pnfs_generic_prepare_to_resend_writes +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xc552a37b pnfs_generic_commit_pagelist +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xc7f2cb24 pnfs_layoutcommit_inode +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xd2833ca6 nfs40_setup_sequence +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xd42c1b07 nfs4_put_deviceid_node +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xd70634aa nfs_remove_bad_delegation +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xdb5713ab pnfs_register_layoutdriver +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xdb813e84 __tracepoint_nfs4_pnfs_commit_ds +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xdd4846b6 nfs4_pnfs_ds_connect +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xdfd8d987 pnfs_generic_pg_init_read +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xe3606443 pnfs_layout_mark_request_commit +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xe8e25732 pnfs_set_lo_fail +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xed15fb41 nfs4_print_deviceid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xeea3958b nfs41_sequence_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xefd0b5f7 pnfs_generic_pg_readpages +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xf5ae15b6 pnfs_set_layoutcommit +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xf999267e pnfs_generic_commit_release +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xff66dde4 nfs4_delete_deviceid +EXPORT_SYMBOL_GPL fs/nfs_common/grace 0x17ce645d locks_end_grace +EXPORT_SYMBOL_GPL fs/nfs_common/grace 0x4153e2e7 locks_in_grace +EXPORT_SYMBOL_GPL fs/nfs_common/grace 0xcb060aaf locks_start_grace +EXPORT_SYMBOL_GPL fs/nfs_common/nfs_acl 0x351a3d61 nfsacl_encode +EXPORT_SYMBOL_GPL fs/nfs_common/nfs_acl 0xd6265bfb nfsacl_decode +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x11736b03 __mlog_printk +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 0x1d747ce3 o2hb_check_node_heartbeating +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x36418553 o2net_send_message +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x3af6dece o2hb_register_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x4900035b o2hb_stop_all_regions +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x5294f1c3 o2nm_node_put +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x5eaed6b3 o2nm_get_node_by_num +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x687f6251 mlog_and_bits +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x9058bafc o2hb_unregister_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xa1ae48e1 o2hb_check_node_heartbeating_no_sem +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xa82a8645 o2nm_this_node +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xa87bc9e7 o2nm_configured_node_map +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xa9d6cd47 o2nm_get_node_by_ip +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xa9f5379a o2net_send_message_vec +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xae808bac o2net_register_handler +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xbaeb4700 o2hb_check_node_heartbeating_from_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xc191002c o2hb_setup_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xc3679d7b o2hb_get_all_regions +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xd60f2c6c o2hb_check_local_node_heartbeating +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 0xf6e3580f o2nm_node_get +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x32f07fdb dlmlock +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x7a1211f8 dlm_setup_eviction_cb +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xaca7b3d6 dlm_register_domain +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xb556007e dlmunlock +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xcb7f73d9 dlm_unregister_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 0xe0353eba dlm_print_one_lock +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xe924de32 dlm_register_eviction_cb +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xfb86b96f dlm_errname +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x269d63fd ocfs2_cluster_disconnect +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x316904e1 ocfs2_dlm_unlock +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x3bcef5f3 ocfs2_dlm_lock_status +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x40718c92 ocfs2_dlm_lock +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x4226705d ocfs2_dlm_dump_lksb +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x424241c9 ocfs2_dlm_lvb +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x4d3af7fa ocfs2_cluster_hangup +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x5484b45b ocfs2_plock +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x60f4bcef ocfs2_dlm_lvb_valid +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x877d1df2 ocfs2_stack_glue_unregister +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x9ccafa05 ocfs2_cluster_this_node +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xa06fbc10 ocfs2_cluster_connect_agnostic +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xbbc4ef97 ocfs2_stack_supports_plocks +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xbf9068ab ocfs2_cluster_connect +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xe40cffce ocfs2_stack_glue_set_max_proto_version +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xfb21e8c4 ocfs2_stack_glue_register +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 0x4847bdb8 _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 0x5346b23b torture_shuffle_cleanup +EXPORT_SYMBOL_GPL kernel/torture 0x6364b2f0 stutter_wait +EXPORT_SYMBOL_GPL kernel/torture 0x679d9e50 torture_must_stop +EXPORT_SYMBOL_GPL kernel/torture 0x688e6a64 torture_cleanup_end +EXPORT_SYMBOL_GPL kernel/torture 0x6bdeda8f torture_onoff_init +EXPORT_SYMBOL_GPL kernel/torture 0x88425dc0 torture_shuffle_task_register +EXPORT_SYMBOL_GPL kernel/torture 0x8b0e1d2f torture_shuffle_init +EXPORT_SYMBOL_GPL kernel/torture 0xb03d79c7 _torture_create_kthread +EXPORT_SYMBOL_GPL kernel/torture 0xc1361afc torture_onoff_cleanup +EXPORT_SYMBOL_GPL kernel/torture 0xc6527045 torture_init_begin +EXPORT_SYMBOL_GPL kernel/torture 0xc67a49d4 torture_cleanup_begin +EXPORT_SYMBOL_GPL kernel/torture 0xdbc5277a torture_shutdown_init +EXPORT_SYMBOL_GPL kernel/torture 0xe6989fd3 torture_init_end +EXPORT_SYMBOL_GPL kernel/torture 0xe9ff1468 torture_stutter_init +EXPORT_SYMBOL_GPL kernel/torture 0xf6d34fb5 torture_kthread_stopping +EXPORT_SYMBOL_GPL lib/842/842_compress 0x1ce013cf sw842_compress +EXPORT_SYMBOL_GPL lib/842/842_decompress 0x0d22f116 sw842_decompress +EXPORT_SYMBOL_GPL lib/notifier-error-inject 0x073bb223 notifier_err_inject_init +EXPORT_SYMBOL_GPL lib/notifier-error-inject 0xb45cb214 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 0x1988e142 lowpan_header_decompress +EXPORT_SYMBOL_GPL net/6lowpan/6lowpan 0x4ef72e1a lowpan_header_compress +EXPORT_SYMBOL_GPL net/802/garp 0x48a5a9de garp_register_application +EXPORT_SYMBOL_GPL net/802/garp 0x69cf5ea0 garp_request_leave +EXPORT_SYMBOL_GPL net/802/garp 0x8cc3c035 garp_uninit_applicant +EXPORT_SYMBOL_GPL net/802/garp 0x8f1f6093 garp_request_join +EXPORT_SYMBOL_GPL net/802/garp 0xdf6c5a7f garp_init_applicant +EXPORT_SYMBOL_GPL net/802/garp 0xef09c0fb garp_unregister_application +EXPORT_SYMBOL_GPL net/802/mrp 0x04939679 mrp_unregister_application +EXPORT_SYMBOL_GPL net/802/mrp 0x0550d769 mrp_uninit_applicant +EXPORT_SYMBOL_GPL net/802/mrp 0x44c8e117 mrp_register_application +EXPORT_SYMBOL_GPL net/802/mrp 0x54701828 mrp_init_applicant +EXPORT_SYMBOL_GPL net/802/mrp 0xb3091f92 mrp_request_leave +EXPORT_SYMBOL_GPL net/802/mrp 0xf12aeca3 mrp_request_join +EXPORT_SYMBOL_GPL net/802/stp 0x5a055091 stp_proto_register +EXPORT_SYMBOL_GPL net/802/stp 0xb1204055 stp_proto_unregister +EXPORT_SYMBOL_GPL net/9p/9pnet 0x926ab923 p9_client_xattrwalk +EXPORT_SYMBOL_GPL net/9p/9pnet 0xcb5cb2f3 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 0x037dc5a0 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 0x01fa4842 l2cap_add_psm +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x301ca45b bt_debugfs +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x3de55e4b l2cap_chan_set_defaults +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x6ea1fcd8 l2cap_chan_send +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0xb469f869 l2cap_chan_create +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0xc3bb0bdd l2cap_chan_put +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0xe1d3a290 l2cap_chan_connect +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0xf8c52eb8 l2cap_chan_del +EXPORT_SYMBOL_GPL net/bridge/br_netfilter 0x0cb0f8b7 br_netfilter_enable +EXPORT_SYMBOL_GPL net/bridge/bridge 0x05accbff br_multicast_list_adjacent +EXPORT_SYMBOL_GPL net/bridge/bridge 0x0fc1297d br_forward_finish +EXPORT_SYMBOL_GPL net/bridge/bridge 0x40e9eff6 nf_br_ops +EXPORT_SYMBOL_GPL net/bridge/bridge 0x6dba8c61 br_dev_queue_push_xmit +EXPORT_SYMBOL_GPL net/bridge/bridge 0x700ac490 br_handle_frame_finish +EXPORT_SYMBOL_GPL net/bridge/bridge 0xa2842d19 br_multicast_has_querier_anywhere +EXPORT_SYMBOL_GPL net/bridge/bridge 0xb87a7487 br_deliver +EXPORT_SYMBOL_GPL net/bridge/bridge 0xc83c62d7 br_multicast_has_querier_adjacent +EXPORT_SYMBOL_GPL net/bridge/netfilter/nf_tables_bridge 0x3638158d nft_bridge_iphdr_validate +EXPORT_SYMBOL_GPL net/bridge/netfilter/nf_tables_bridge 0x79abc091 nft_bridge_ip6hdr_validate +EXPORT_SYMBOL_GPL net/dccp/dccp 0x09a123b7 dccp_orphan_count +EXPORT_SYMBOL_GPL net/dccp/dccp 0x146fb1f7 dccp_done +EXPORT_SYMBOL_GPL net/dccp/dccp 0x14b80968 dccp_death_row +EXPORT_SYMBOL_GPL net/dccp/dccp 0x15bc58cb dccp_init_sock +EXPORT_SYMBOL_GPL net/dccp/dccp 0x1935e308 dccp_parse_options +EXPORT_SYMBOL_GPL net/dccp/dccp 0x1a78bfc5 dccp_reqsk_init +EXPORT_SYMBOL_GPL net/dccp/dccp 0x1d99d49a dccp_timestamp +EXPORT_SYMBOL_GPL net/dccp/dccp 0x1f3db19c dccp_feat_signal_nn_change +EXPORT_SYMBOL_GPL net/dccp/dccp 0x26277506 dccp_check_req +EXPORT_SYMBOL_GPL net/dccp/dccp 0x36ab36b1 dccp_child_process +EXPORT_SYMBOL_GPL net/dccp/dccp 0x4cdd391d dccp_feat_list_purge +EXPORT_SYMBOL_GPL net/dccp/dccp 0x4ec35231 dccp_ackvec_parsed_add +EXPORT_SYMBOL_GPL net/dccp/dccp 0x59814a84 dccp_statistics +EXPORT_SYMBOL_GPL net/dccp/dccp 0x5ebce87a dccp_close +EXPORT_SYMBOL_GPL net/dccp/dccp 0x5f4b41c6 dccp_recvmsg +EXPORT_SYMBOL_GPL net/dccp/dccp 0x6d838837 dccp_set_state +EXPORT_SYMBOL_GPL net/dccp/dccp 0x6f39c5f8 dccp_connect +EXPORT_SYMBOL_GPL net/dccp/dccp 0x6fd65c8c dccp_rcv_established +EXPORT_SYMBOL_GPL net/dccp/dccp 0x7c2e0dd6 dccp_setsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0x81bffeea dccp_destroy_sock +EXPORT_SYMBOL_GPL net/dccp/dccp 0x85189f02 dccp_send_ack +EXPORT_SYMBOL_GPL net/dccp/dccp 0x852f7b39 dccp_rcv_state_process +EXPORT_SYMBOL_GPL net/dccp/dccp 0x86be7924 dccp_packet_name +EXPORT_SYMBOL_GPL net/dccp/dccp 0x8e5b1e03 dccp_feat_nn_get +EXPORT_SYMBOL_GPL net/dccp/dccp 0x937fe6af dccp_make_response +EXPORT_SYMBOL_GPL net/dccp/dccp 0x9598d24d dccp_ackvec_parsed_cleanup +EXPORT_SYMBOL_GPL net/dccp/dccp 0x985aaa8a dccp_getsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0x9d8ec08a dccp_ioctl +EXPORT_SYMBOL_GPL net/dccp/dccp 0x9ecd9dfe dccp_shutdown +EXPORT_SYMBOL_GPL net/dccp/dccp 0xb0596156 dccp_hashinfo +EXPORT_SYMBOL_GPL net/dccp/dccp 0xbe9250e0 dccp_reqsk_send_ack +EXPORT_SYMBOL_GPL net/dccp/dccp 0xbed9c503 dccp_sendmsg +EXPORT_SYMBOL_GPL net/dccp/dccp 0xcd47df76 inet_dccp_listen +EXPORT_SYMBOL_GPL net/dccp/dccp 0xd1639f5a dccp_insert_option +EXPORT_SYMBOL_GPL net/dccp/dccp 0xd564ea47 dccp_poll +EXPORT_SYMBOL_GPL net/dccp/dccp 0xe35072ff dccp_ctl_make_reset +EXPORT_SYMBOL_GPL net/dccp/dccp 0xe4dbdbd5 dccp_send_sync +EXPORT_SYMBOL_GPL net/dccp/dccp 0xef0ffe5e dccp_sync_mss +EXPORT_SYMBOL_GPL net/dccp/dccp 0xfb606b35 dccp_disconnect +EXPORT_SYMBOL_GPL net/dccp/dccp 0xfe299233 dccp_create_openreq_child +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x16069f59 dccp_v4_send_check +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x5e0f2d23 dccp_v4_do_rcv +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x6f4e2772 dccp_v4_connect +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x7e84f5ae dccp_invalid_packet +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0xb8ae8f02 dccp_v4_conn_request +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0xc9aef600 dccp_v4_request_recv_sock +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0x096eead1 ieee802154_hdr_push +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0x4d7aef69 ieee802154_max_payload +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0x775e1a7e ieee802154_hdr_peek_addrs +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0xc0b40cec ieee802154_hdr_peek +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0xdb8edc5c ieee802154_hdr_pull +EXPORT_SYMBOL_GPL net/ipv4/geneve_core 0x0c8357bd geneve_sock_release +EXPORT_SYMBOL_GPL net/ipv4/geneve_core 0xb360021e geneve_xmit_skb +EXPORT_SYMBOL_GPL net/ipv4/geneve_core 0xc05bad1b geneve_sock_add +EXPORT_SYMBOL_GPL net/ipv4/gre 0x071c0bf9 gre_cisco_register +EXPORT_SYMBOL_GPL net/ipv4/gre 0x26f699a6 gre_del_protocol +EXPORT_SYMBOL_GPL net/ipv4/gre 0x316e5375 gre_build_header +EXPORT_SYMBOL_GPL net/ipv4/gre 0xae3a904c gre_cisco_unregister +EXPORT_SYMBOL_GPL net/ipv4/gre 0xc3608f76 gre_add_protocol +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x0de68855 inet_sk_diag_fill +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x4cfbc819 inet_diag_unregister +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x5275d1d7 inet_diag_bc_sk +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x80161e24 inet_diag_dump_icsk +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x9e830ed6 inet_diag_dump_one_icsk +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0xcf589c15 inet_diag_register +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x008c4dfe ip_tunnel_delete_net +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x1c4fb47f ip_tunnel_newlink +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x20c9a579 ip_tunnel_xmit +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x2d3bfeb0 ip_tunnel_changelink +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x3394a1a0 ip_tunnel_ioctl +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x4669e598 ip_tunnel_rcv +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x855b468a ip_tunnel_encap_setup +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x8a5dfefc ip_tunnel_setup +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0x9790ab40 ip_tunnel_change_mtu +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xa882a569 ip_tunnel_lookup +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xb4ccd658 ip_tunnel_init_net +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xc00f3d47 ip_tunnel_init +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xcc383a26 ip_tunnel_uninit +EXPORT_SYMBOL_GPL net/ipv4/ip_tunnel 0xe2561925 ip_tunnel_dellink +EXPORT_SYMBOL_GPL net/ipv4/netfilter/arp_tables 0x2a4281e9 arpt_alloc_initial_table +EXPORT_SYMBOL_GPL net/ipv4/netfilter/ip_tables 0x85a28765 ipt_alloc_initial_table +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_defrag_ipv4 0x6b6c3d10 nf_defrag_ipv4_enable +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_ipv4 0x2d491de3 nf_nat_ipv4_in +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_ipv4 0x4d819585 nf_nat_ipv4_fn +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_ipv4 0x50278ace nf_nat_ipv4_out +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_ipv4 0x6542062a nf_nat_ipv4_local_fn +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_ipv4 0xced29c01 nf_nat_icmp_reply_translation +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_masquerade_ipv4 0x3f5c468e nf_nat_masquerade_ipv4_unregister_notifier +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_masquerade_ipv4 0x6cede8ca nf_nat_masquerade_ipv4 +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_masquerade_ipv4 0xfedbf252 nf_nat_masquerade_ipv4_register_notifier +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_proto_gre 0x636b12c8 nf_nat_need_gre +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0x062ae850 nf_reject_ip_tcphdr_put +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0x09b5f1b6 nf_reject_iphdr_put +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0x217ceebe nf_send_reset +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0xb05605a0 nf_send_unreach +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0xdea85029 nf_reject_ip_tcphdr_get +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_tables_ipv4 0xc56f3a5c nft_af_ipv4 +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x21ad87de tcp_vegas_cwnd_event +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x47d40c1b tcp_vegas_get_info +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x5339198f tcp_vegas_pkts_acked +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0xcbe99c87 tcp_vegas_init +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0xf2e4a90f tcp_vegas_state +EXPORT_SYMBOL_GPL net/ipv4/udp_tunnel 0x0f0be5a2 setup_udp_tunnel_sock +EXPORT_SYMBOL_GPL net/ipv4/udp_tunnel 0x31fec9d8 udp_tunnel_sock_release +EXPORT_SYMBOL_GPL net/ipv4/udp_tunnel 0xee108045 udp_tunnel_xmit_skb +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x12962002 ip6_tnl_xmit_ctl +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x5f8c3564 ip6_tnl_rcv_ctl +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x6c81a161 ip6_tnl_dst_store +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0xc0459c0f ip6_tnl_dst_reset +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0xd3fb5b63 ip6_tnl_dst_check +EXPORT_SYMBOL_GPL net/ipv6/ip6_udp_tunnel 0x6340034e udp_tunnel6_xmit_skb +EXPORT_SYMBOL_GPL net/ipv6/ip6_udp_tunnel 0xe572cb82 udp_sock_create6 +EXPORT_SYMBOL_GPL net/ipv6/netfilter/ip6_tables 0x0643bf62 ip6t_alloc_initial_table +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_defrag_ipv6 0x6eb85693 nf_defrag_ipv6_enable +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_ipv6 0x03695eb3 nf_nat_ipv6_local_fn +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_ipv6 0x10060557 nf_nat_ipv6_in +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_ipv6 0x7e1f9fc4 nf_nat_ipv6_out +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_ipv6 0xcc7d0656 nf_nat_ipv6_fn +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_ipv6 0xe63d2167 nf_nat_icmpv6_reply_translation +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_masquerade_ipv6 0x2293972c nf_nat_masquerade_ipv6_unregister_notifier +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_masquerade_ipv6 0x38d4401a nf_nat_masquerade_ipv6_register_notifier +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_nat_masquerade_ipv6 0xfac21f79 nf_nat_masquerade_ipv6 +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0x13b7572e nf_send_reset6 +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0x2c8f0869 nf_reject_ip6_tcphdr_put +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0x2ed12ebb nf_reject_ip6_tcphdr_get +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0x4adcaebc nf_reject_ip6hdr_put +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0x73a6f275 nf_send_unreach6 +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_tables_ipv6 0x3d9614a8 nft_af_ipv6 +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x11b03ac9 l2tp_session_create +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x335b0661 l2tp_tunnel_find +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x3b4c24cb l2tp_tunnel_delete +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x561e3d13 l2tp_session_find_by_ifname +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x5631fe80 l2tp_tunnel_create +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x67ef8369 l2tp_tunnel_closeall +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x83034452 l2tp_xmit_skb +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x8ea3bc3c l2tp_session_find +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x9170b3eb l2tp_session_queue_purge +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x9f266456 l2tp_udp_encap_recv +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xb3424a9e l2tp_session_find_nth +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xbd57f750 l2tp_session_delete +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xbdafed68 l2tp_session_set_header_len +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xcbaea3f0 l2tp_tunnel_find_nth +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xe7dec189 __l2tp_session_unhash +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xe9f3a1d3 l2tp_session_free +EXPORT_SYMBOL_GPL net/l2tp/l2tp_netlink 0x337f2432 l2tp_nl_unregister_ops +EXPORT_SYMBOL_GPL net/l2tp/l2tp_netlink 0x3c869504 l2tp_nl_register_ops +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x1423a7bf ieee80211_ready_on_channel +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x301516f5 ieee80211_remove_key +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x3f36f578 ieee80211_iterate_stations_atomic +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x46519dcf ieee80211_napi_add +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x53bf6814 ieee80211_gtk_rekey_add +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x55625729 ieee80211_vif_to_wdev +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x672e6619 ieee80211_remain_on_channel_expired +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x73b77523 ieee80211_request_smps +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x75afd9d8 ieee80211_resume_disconnect +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x8f2a836f wdev_to_ieee80211_vif +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x8f324bef ieee80211_iter_chan_contexts_atomic +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x9a1a7256 ieee80211_iterate_interfaces +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xad0efcfd ieee80211_set_key_tx_seq +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xb295ed77 ieee80211_iterate_active_interfaces_rtnl +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xc216928a ieee80211_ave_rssi +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xc4a0b694 ieee80211_find_sta_by_ifaddr +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xde51efc3 ieee80211_iterate_active_interfaces_atomic +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xdfa5d2ef ieee80211_gtk_rekey_notify +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xf9fa191d ieee80211_set_key_rx_seq +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x1302c310 ip_set_name_byindex +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x397f6231 ip_set_free +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x417114d5 ip_set_get_extensions +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x42e08c9a ip_set_put_byindex +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x4c4cce85 ip_set_add +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x508e39b3 ip_set_put_extensions +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x5c07917f ip_set_get_byname +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x616515f8 ip_set_get_ip6_port +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x6344eaf6 ip_set_alloc +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 0x84262ada ip_set_nfnl_put +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x86b28ee1 ip_set_type_unregister +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x9e98722b ip_set_get_ipaddr6 +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xa091d664 ip_set_elem_len +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xa293f8a6 ip_set_get_ipaddr4 +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xa2d623f3 ip_set_range_to_cidr +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xa498b7b9 ip_set_nfnl_get_byindex +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xae84913b ip_set_get_ip4_port +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xc15c8123 ip_set_get_ip_port +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xca98cbf7 ip_set_type_register +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xcc001bd9 ip_set_extensions +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xe52e147c ip_set_del +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xe73d8119 ip_set_test +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0x73d686af ip_vs_conn_in_get_proto +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0x8c124b76 register_ip_vs_pe +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0xa1cb502c ip_vs_conn_out_get_proto +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0xa6ffe74e unregister_ip_vs_pe +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x02df345a nf_ct_seqadj_init +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x045072cd nf_ct_port_nla_policy +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x07182c0a nf_conntrack_helper_try_module_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x07cfd8c0 nf_conntrack_locks +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x0b7fd20c nf_ct_helper_expectfn_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x0ccb3dfc nf_ct_l3proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x0ff08e15 nf_conntrack_set_hashsize +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x12590e9d nf_ct_expect_related_report +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x18323afb nf_ct_get_tuplepr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x19e0cb30 nf_ct_l4proto_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x1a750969 nf_conntrack_l4proto_tcp6 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x23512fae nf_conntrack_free +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x2579f57b __nf_conntrack_helper_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x27f45064 __nf_conntrack_confirm +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x28436beb nf_conntrack_l4proto_tcp4 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x289c3714 nf_ct_alloc_hashtable +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x2f88f20d seq_print_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x366372cc nf_ct_helper_log +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x37386cac nf_conntrack_hash_rnd +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x37405537 nf_ct_get_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3b290edd nf_conntrack_unregister_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3c28cede nf_ct_l4proto_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3f5b1415 nf_ct_port_nlattr_to_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x4080a027 nf_ct_tcp_seqadj_set +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x40ebfafe nf_ct_unexpect_related +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x41596ec0 nf_ct_timeout_find_get_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x416f0cbe nf_ct_expect_init +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x41bcb5aa nf_ct_helper_expectfn_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x45e44969 nf_ct_tmpl_free +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x489d3403 nf_ct_seq_offset +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x4b0f7360 __nf_ct_kill_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x4dc3a760 nf_ct_invert_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x51688a77 nf_ct_port_tuple_to_nlattr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x52444a45 nf_ct_remove_expectations +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x52b72971 nf_connlabel_match +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x52be8c7b nf_connlabel_set +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x52fb7717 nf_ct_expect_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x5adb1582 __nf_ct_expect_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x60de507a nf_conntrack_tuple_taken +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x62813e5c nf_ct_port_nlattr_tuple_size +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x658c5b59 __nf_ct_try_assign_helper +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x66a2eebe __nf_ct_l4proto_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x693c3961 nf_ct_helper_hash +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6be3ef14 nf_conntrack_helper_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6c1dfa97 nf_ct_seq_adjust +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6e224a7a need_conntrack +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6f68f8d6 nf_ct_l4proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x7218f5f1 nfnetlink_parse_nat_setup_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x78f9b710 nf_ct_l3proto_try_module_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x7a03f465 nf_conntrack_in +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x7a1adf56 nf_ct_helper_ext_add +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x7ac2c00d nf_ct_expect_register_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x7b36870c nf_ct_iterate_cleanup +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x7f87eb29 nf_ct_l3proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x7ff33b27 nf_ct_extend_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8ffe7e89 nf_conntrack_htable_size +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x90ff6c9f nf_ct_invert_tuplepr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x9d1f2fdd nf_ct_l4proto_pernet_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x9d23c2a0 nf_conntrack_alter_reply +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x9df763d7 __nf_ct_refresh_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x9f7a9e45 nf_ct_timeout_put_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa2211163 nf_ct_unlink_expect_report +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa36a2cda nf_ct_extend_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa92e29d9 nf_connlabels_replace +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xab3d1f95 nf_ct_untracked_status_or +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xad1bb027 nf_ct_free_hashtable +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xae7f52bf nf_ct_expect_unregister_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb602c57e nf_ct_l3proto_module_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb9bad582 nf_ct_expect_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xbbec2822 nf_conntrack_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc18ac88d nf_ct_expect_hsize +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc26a1c45 nf_conntrack_hash_check_insert +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc2abd2fd nf_conntrack_expect_lock +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc382d909 nf_conntrack_l4proto_udp6 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc40f284c nf_ct_helper_hsize +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xcb5f560e nf_conntrack_helper_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xcbe794d3 nf_ct_l4proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xcfd8e4d2 nf_ct_l4proto_pernet_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd74a145c nf_ct_seqadj_set +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xdba3ad97 nf_conntrack_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xe41f9d7f nf_ct_l3protos +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xe4a0e182 nf_conntrack_register_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xe5f637b1 nf_conntrack_l3proto_generic +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xe69f117e nf_ct_helper_expectfn_find_by_symbol +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xeb2071b5 nf_ct_expect_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xed93067c nf_ct_delete +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf15a8ae6 nf_ct_deliver_cached_events +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf1b4bb8b nf_conntrack_l4proto_udp4 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf38bcdf3 nf_conntrack_max +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf53610ed nf_ct_helper_expectfn_find_by_name +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf7bacd31 nf_ct_l3proto_pernet_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf939722a nf_ct_l3proto_pernet_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xfa518079 nf_ct_tmpl_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xfed9f2af nf_ct_l3proto_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_amanda 0x00ff1f97 nf_nat_amanda_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_broadcast 0x26ee6b8f nf_conntrack_broadcast_help +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_ftp 0xf3313b50 nf_nat_ftp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x12e25be1 nat_t120_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x3ad91565 set_h245_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x56a1128b nat_q931_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x57d7fef0 set_h225_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x58de8dbf nat_callforwarding_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x6a03073a set_sig_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x8cdba605 nat_rtp_rtcp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x9c0d1ddc set_ras_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xbc75d5d2 nat_h245_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xfb23241a get_h225_addr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_irc 0x5459cac1 nf_nat_irc_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0x0be1c371 nf_nat_pptp_hook_outbound +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0x3debc76c nf_nat_pptp_hook_exp_gre +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0xc4428498 nf_nat_pptp_hook_expectfn +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0xfd4ceda2 nf_nat_pptp_hook_inbound +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_proto_gre 0x30880cfa nf_ct_gre_keymap_add +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_proto_gre 0x973fdd17 nf_ct_gre_keymap_destroy +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x0b4144d8 ct_sip_parse_request +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x3e283cf8 nf_nat_sip_hooks +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x50e519cd ct_sip_parse_header_uri +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x58441764 ct_sip_parse_numerical_param +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x72f9343e ct_sip_get_header +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xe0b94fa2 ct_sip_get_sdp_header +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xf1ffe5f9 ct_sip_parse_address_param +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_snmp 0x0211f0e5 nf_nat_snmp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_tftp 0xdb06ce03 nf_nat_tftp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_log_common 0x4b247b86 nf_log_dump_packet_common +EXPORT_SYMBOL_GPL net/netfilter/nf_log_common 0x5da5d52a nf_log_dump_sk_uid_gid +EXPORT_SYMBOL_GPL net/netfilter/nf_log_common 0x80100bb1 nf_log_dump_tcp_header +EXPORT_SYMBOL_GPL net/netfilter/nf_log_common 0xf45f6651 nf_log_dump_udp_header +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x0d9bae4b nf_nat_l4proto_nlattr_to_range +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x131f636c nf_nat_l4proto_in_range +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x27930eb9 nf_nat_l3proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x4902f7fb nf_nat_l4proto_unique_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x4c013a18 nf_ct_nat_ext_add +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x81207a80 nf_nat_packet +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x892bf27d nf_nat_l4proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xb5d86ab1 __nf_nat_l4proto_find +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xc42c2e54 nf_nat_alloc_null_binding +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xeb8405a6 nf_nat_l4proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xfdc1aca8 nf_nat_l3proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_nat_redirect 0x80155a74 nf_nat_redirect_ipv6 +EXPORT_SYMBOL_GPL net/netfilter/nf_nat_redirect 0xd34795b9 nf_nat_redirect_ipv4 +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x11a006b5 synproxy_check_timestamp_cookie +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x3865394b synproxy_tstamp_adjust +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x4611823d synproxy_parse_options +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x8841d39b synproxy_build_options +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x90298227 synproxy_init_timestamp_cookie +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0xb42e336a synproxy_options_size +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0xef7db50c synproxy_net_id +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x08ad1a4a nft_set_elem_destroy +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x12b70f46 nft_data_dump +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x1d238e1d nft_dump_register +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x1e37d13b nft_unregister_set +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x1e6b75a3 nft_parse_register +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x213b627b nft_register_basechain +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x3b8579f9 nft_unregister_chain_type +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x470591cc nft_validate_register_store +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x4bfae758 nft_register_expr +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x5459f5c5 nft_register_chain_type +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x5778f241 nft_chain_validate_hooks +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x58a1e1f6 nft_unregister_expr +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x597a4d9c nft_unregister_afinfo +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x5bfdaf52 nft_unregister_basechain +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x64495c0a nft_data_init +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x665c51d8 nft_register_afinfo +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x68088bee nft_data_uninit +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x748b2a4c nft_do_chain +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x8791418c nft_register_set +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xa899aa86 nft_set_gc_batch_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xbf63bb61 nft_set_gc_batch_release +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xcf03e214 nft_chain_validate_dependency +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xe09dada2 nft_set_ext_types +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xed33c632 nft_validate_register_load +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x21cdbf9d nfnetlink_alloc_skb +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x38bba92a nfnetlink_set_err +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x5ce3b588 nfnl_lock +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x615ae7af nfnetlink_unicast +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x6970ac23 nfnetlink_send +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x7b8713d8 nfnetlink_has_listeners +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xd4140504 nfnetlink_subsys_register +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xdb065657 nfnl_unlock +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xfddff639 nfnetlink_subsys_unregister +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0x21f6bba6 nfnl_acct_find_get +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0x32bb1165 nfnl_acct_update +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0xbecf5d14 nfnl_acct_put +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0xf5ca68a5 nfnl_acct_overquota +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_log 0xcdfbc1ed nfulnl_log_packet +EXPORT_SYMBOL_GPL net/netfilter/nft_masq 0x4111b88c nft_masq_validate +EXPORT_SYMBOL_GPL net/netfilter/nft_masq 0x4d4e6238 nft_masq_init +EXPORT_SYMBOL_GPL net/netfilter/nft_masq 0x84997aa0 nft_masq_dump +EXPORT_SYMBOL_GPL net/netfilter/nft_masq 0xe3b8ea21 nft_masq_policy +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0x1456302a nft_meta_get_dump +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0x246ce12c nft_meta_get_eval +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0x49f24064 nft_meta_get_init +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0x9388a235 nft_meta_set_eval +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0x971e8f31 nft_meta_set_init +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0xb80e8358 nft_meta_policy +EXPORT_SYMBOL_GPL net/netfilter/nft_meta 0xda873016 nft_meta_set_dump +EXPORT_SYMBOL_GPL net/netfilter/nft_redir 0x8695f7f4 nft_redir_dump +EXPORT_SYMBOL_GPL net/netfilter/nft_redir 0x8df3b401 nft_redir_validate +EXPORT_SYMBOL_GPL net/netfilter/nft_redir 0xa5be1e1e nft_redir_policy +EXPORT_SYMBOL_GPL net/netfilter/nft_redir 0xcad504f7 nft_redir_init +EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0x9029e104 nft_reject_dump +EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0xa2db3c7f nft_reject_policy +EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0xbfd0bb05 nft_reject_init +EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0xddf15889 nft_reject_icmp_code +EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0xe8cdab4e nft_reject_icmpv6_code +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x26923866 xt_replace_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x27b1e07a xt_table_unlock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x40728a63 xt_find_revision +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x5b745d6e xt_register_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x6f2c6ca3 xt_request_find_target +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x807d2b2c xt_recseq +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x8239f0d0 xt_check_target +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x95793083 xt_hook_unlink +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x9a83fe26 xt_check_match +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x9d54af68 xt_unregister_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xa47d9b07 xt_proto_fini +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xcdb8470a xt_request_find_match +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xd14f376f xt_find_table_lock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xdd5f33d6 xt_proto_init +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xe827ec08 xt_hook_link +EXPORT_SYMBOL_GPL net/netfilter/xt_RATEEST 0x57909dc1 xt_rateest_put +EXPORT_SYMBOL_GPL net/netfilter/xt_RATEEST 0xd0f26ea3 xt_rateest_lookup +EXPORT_SYMBOL_GPL net/nfc/nci/nci 0x4c863a1d nci_spi_send +EXPORT_SYMBOL_GPL net/nfc/nci/nci 0xb90bc5ff nci_spi_read +EXPORT_SYMBOL_GPL net/nfc/nci/nci 0xdcd408d1 nci_spi_allocate_spi +EXPORT_SYMBOL_GPL net/nfc/nci/nci_uart 0x1323efe0 nci_uart_set_config +EXPORT_SYMBOL_GPL net/nfc/nci/nci_uart 0x1cdc63ba nci_uart_unregister +EXPORT_SYMBOL_GPL net/nfc/nci/nci_uart 0xfab3c7a2 nci_uart_register +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x10db5d2d ovs_vport_alloc +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x13224fd3 ovs_tunnel_get_egress_info +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x1eaf932a ovs_vport_ops_register +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x4d841db6 ovs_vport_free +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x7d5bc427 ovs_vport_deferred_free +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0xcb137595 ovs_vport_receive +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0xd3fba35a ovs_vport_ops_unregister +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0xda83411d ovs_net_id +EXPORT_SYMBOL_GPL net/rds/rds 0x00a467af rds_wq +EXPORT_SYMBOL_GPL net/rds/rds 0x13841b73 rds_page_remainder_alloc +EXPORT_SYMBOL_GPL net/rds/rds 0x14af9bfb rds_inc_put +EXPORT_SYMBOL_GPL net/rds/rds 0x1f909efc rds_page_copy_user +EXPORT_SYMBOL_GPL net/rds/rds 0x24923b02 rds_atomic_send_complete +EXPORT_SYMBOL_GPL net/rds/rds 0x285df727 rds_connect_complete +EXPORT_SYMBOL_GPL net/rds/rds 0x2c5c5514 rds_message_add_rdma_dest_extension +EXPORT_SYMBOL_GPL net/rds/rds 0x3077d5e8 rds_message_addref +EXPORT_SYMBOL_GPL net/rds/rds 0x3101936e rds_message_add_extension +EXPORT_SYMBOL_GPL net/rds/rds 0x50cbe7b3 rds_stats +EXPORT_SYMBOL_GPL net/rds/rds 0x54b675df rds_message_unmapped +EXPORT_SYMBOL_GPL net/rds/rds 0x5eefbe75 rds_rdma_send_complete +EXPORT_SYMBOL_GPL net/rds/rds 0x68697862 rds_conn_destroy +EXPORT_SYMBOL_GPL net/rds/rds 0x68fbdbe6 rds_for_each_conn_info +EXPORT_SYMBOL_GPL net/rds/rds 0x6cd0019e rds_conn_create_outgoing +EXPORT_SYMBOL_GPL net/rds/rds 0x72546fa6 rds_recv_incoming +EXPORT_SYMBOL_GPL net/rds/rds 0x73aac73d rds_message_populate_header +EXPORT_SYMBOL_GPL net/rds/rds 0x8513f6c4 rds_trans_unregister +EXPORT_SYMBOL_GPL net/rds/rds 0x96fafe85 rds_stats_info_copy +EXPORT_SYMBOL_GPL net/rds/rds 0xa81f5801 rds_conn_connect_if_down +EXPORT_SYMBOL_GPL net/rds/rds 0xab22ce2b rds_conn_create +EXPORT_SYMBOL_GPL net/rds/rds 0xb70242c4 rds_trans_register +EXPORT_SYMBOL_GPL net/rds/rds 0xb8183fc2 rds_inc_init +EXPORT_SYMBOL_GPL net/rds/rds 0xbe2c5eb3 rds_message_put +EXPORT_SYMBOL_GPL net/rds/rds 0xc2dab779 rds_info_copy +EXPORT_SYMBOL_GPL net/rds/rds 0xc642cc2c rds_cong_map_updated +EXPORT_SYMBOL_GPL net/rds/rds 0xcb98a7c0 rds_send_get_message +EXPORT_SYMBOL_GPL net/rds/rds 0xcd10903d rds_info_deregister_func +EXPORT_SYMBOL_GPL net/rds/rds 0xcd94d751 rds_conn_drop +EXPORT_SYMBOL_GPL net/rds/rds 0xce1da271 rds_info_register_func +EXPORT_SYMBOL_GPL net/rds/rds 0xfade31a5 rds_send_drop_acked +EXPORT_SYMBOL_GPL net/rxrpc/af-rxrpc 0x052537af rxrpc_unregister_security +EXPORT_SYMBOL_GPL net/rxrpc/af-rxrpc 0x86f15fce rxrpc_register_security +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x00c52ef5 g_make_token_header +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x3136aed0 gss_mech_register +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x443f64b7 gss_mech_unregister +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x58824944 svcauth_gss_flavor +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x8d1a827e svcauth_gss_register_pseudoflavor +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xb5dea7ef g_token_size +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xf8b2ff6e g_verify_token_header +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00220018 rpc_task_reset_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x045834e9 rpcauth_get_pseudoflavor +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 0x07be4b9b rpc_clnt_swap_activate +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x07ff15c9 rpc_clone_client_set_auth +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x097eab2b xdr_decode_word +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x09b1397d rpc_protocol +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x09dffb4c rpc_init_pipe_dir_head +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0a4428b2 rpc_wake_up_queued_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0e6e68d5 write_bytes_to_xdr_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0eaa179c xdr_init_decode_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0f668ba9 svc_auth_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x11eade93 rpc_call_null +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x126840f6 rpcauth_lookupcred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x12a8b598 sunrpc_cache_register_pipefs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x15153f59 rpcauth_destroy_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1780dfe6 rpcauth_init_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1a298778 svc_rpcb_cleanup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1a67f6b9 svc_sock_update_bufs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1b396efd rpc_clone_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1b496f39 rpcauth_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1b61f376 xdr_read_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1d948cda cache_destroy_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1e2935e1 rpc_release_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1f493bee rpc_switch_client_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1fceabee rpc_put_sb_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1fed10a8 xdr_process_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x247c4b89 xprt_adjust_cwnd +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x24b5519d rpc_bind_new_program +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x27e5b5b0 rpcauth_lookup_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2919b156 xdr_decode_string_inplace +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2a903b22 svc_rpcb_setup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2d85a13c rpc_peeraddr2str +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2dd71c50 cache_register_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2e3b4ebf svc_xprt_init +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2e3c9a77 rpc_force_rebind +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2eec63c9 xdr_encode_netobj +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2f8ebbe0 rpc_ntop +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2fdfa207 xdr_buf_read_netobj +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x31a89d59 rpc_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x358e668e svc_create_pooled +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3590766d rpcb_getport_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x36a0302a rpc_proc_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3750df71 svcauth_unix_set_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x37cde97b svc_xprt_enqueue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x387e1639 rpc_pipefs_notifier_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3afde896 rpc_rmdir +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3be97fa1 rpc_wake_up +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3c74563b rpc_call_sync +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x403428c5 bc_svc_process +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x40a38140 sunrpc_cache_lookup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x41d6bb6c rpc_shutdown_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x41d9b7c6 xdr_enter_page +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x44a72493 rpcauth_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x44d6bb44 rpc_setbufsize +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x45bdae62 xprt_disconnect_done +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x461e83ae svc_xprt_copy_addrs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x47b90050 xprt_complete_rqst +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x491bd9ca xdr_stream_pos +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4a4b5329 rpc_free_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4ce3dfbd xprt_register_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4e0b4ad5 rpc_create_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4e32cec7 svc_reg_xprt_class +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4e776034 rpcauth_stringify_acceptor +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4f9ed4ed rpc_unlink +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x505949ee svc_authenticate +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x505c9bba auth_domain_find +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x510a9ce7 svc_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x515c1411 rpcauth_cred_key_to_expire +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x53445f68 nlm_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x58821a78 rpc_init_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5a994692 svc_prepare_thread +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5ad92012 xprt_release_xprt_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5b5898be rpc_destroy_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5f72e63a rpc_mkpipe_data +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6049f81a rpc_malloc +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x60604c18 sunrpc_init_cache_detail +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x62f4f45a rpc_put_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x64c47ee4 rpc_d_lookup_sb +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x67f6e93c rpc_count_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x699159bd xdr_terminate_string +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6e14c592 svc_wake_up +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x708edff9 rpc_queue_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x71fa908a cache_flush +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x74160414 xdr_inline_decode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7507fe36 rpc_call_start +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x77c6445a xdr_decode_array2 +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x77ca6ebf rpc_wake_up_status +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x792b3c35 rpc_clnt_swap_deactivate +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7aeb994c xprt_free +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7b1a1abb svcauth_unix_purge +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7b8aaa83 rpc_mkpipe_dentry +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7bd9c68b rpc_proc_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7dca9fb6 rpc_sleep_on +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7de53067 rpc_init_rtt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7ea7458c rpc_print_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7eb24f6e rpc_pton +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7f64abd2 rpc_uaddr2sockaddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7fd3b005 xprt_unregister_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x80951b28 rpcauth_get_gssinfo +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x81125a23 xprt_lock_and_alloc_slot +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x812901a2 rpc_exit +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x81d7f46b svc_proc_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8551272a sunrpc_cache_unregister_pipefs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x859a5b23 rpc_pipe_generic_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x86f7acdd rpc_restart_call +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x87577a90 rpc_max_payload +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x87919d5f svc_recv +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8af88930 rpc_delay +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8f53814b svc_close_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9318ec5e xdr_buf_trim +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9323f59b csum_partial_copy_to_xdr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x94b578cd xdr_init_decode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x94eb5871 svc_auth_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9626f4c7 rpcauth_key_timeout_notify +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x966078b4 xdr_partial_copy_from_skb +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x97ad6ab5 xdr_encode_array2 +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x98b75d64 rpcauth_list_flavors +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9b2a65c6 cache_create_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9c5edc8b xdr_encode_word +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9cde27bb cache_purge +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9daf5afc _copy_from_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9efa2598 rpc_remove_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa06c6ed8 svc_xprt_put +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa3d9895c unix_domain_find +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa5d3e36e sunrpc_destroy_cache_detail +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa8275dad rpc_net_ns +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa8bd4430 svc_exit_thread +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa8d7c10c xprt_alloc_slot +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa908e5bb rpcauth_init_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa9e2d45b rpc_init_priority_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa9e5a1c0 rpc_sleep_on_priority +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xab4bfbba rpc_run_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xad8b2020 rpc_get_sb_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xaf0dcc1f svc_drop +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xaf5bf6ef nfs_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xaf926cf7 svc_alien_sock +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb16d0865 sunrpc_cache_pipe_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb24ab12b put_rpccred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb3d8263d xprt_set_retrans_timeout_rtt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb460a30b read_bytes_from_xdr_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb50ef905 svc_max_payload +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb51a3724 rpc_pipefs_notifier_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb533b9ac xprt_destroy_backchannel +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb5bab898 rpcauth_generic_bind_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb6d3f06d xprt_alloc +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb851c267 svc_reserve +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbdccb8ab svc_set_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbe238e7b cache_check +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbe5b1745 rpc_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbf8ee01c svc_find_xprt +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 0xc1dffffe rpc_lookup_machine_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc217a2c9 gssd_running +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc3880471 xdr_decode_netobj +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc4ff552f rpc_restart_call_prepare +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc5db1aca rpc_localaddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc7ce093c xdr_set_scratch_buffer +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc807d163 rpc_get_timeout +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc8e96dea qword_addhex +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc9633ed4 rpc_lookup_cred_nonblock +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc99dd0cb __rpc_wait_for_completion_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcb1b34a4 svc_create_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcd0f386b xprt_release_rqst_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcdaa1ed0 xdr_write_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcee467f3 xprt_load_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcf7c91e2 rpc_wake_up_first +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcfd92c21 svc_set_num_threads +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd2f2942d rpc_wake_up_next +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd3d58606 sunrpc_cache_update +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd515ba9b rpc_add_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd734dc44 xprt_setup_backchannel +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd765ab34 svc_bind +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd775f1e9 rpc_put_task_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd78895e0 xdr_buf_from_iov +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd8078ad3 xdr_commit_encode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd81bda0b xdr_init_encode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd8649608 rpc_call_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdbf7566e xprt_wait_for_buffer_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdc6a1709 svc_process +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xde790d11 xprt_reserve_xprt_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xded01f4b svc_proc_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdf079c2e rpc_count_iostats_metrics +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe1a62353 svc_xprt_names +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe1ac2bb8 sunrpc_net_id +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe1d40b37 svc_unreg_xprt_class +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe3ad621a svc_addsock +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe4963403 xdr_buf_subsegment +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe560c82b svc_print_addr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe5919cb1 xdr_encode_opaque +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe7851387 rpc_peeraddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe8676b95 rpcauth_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe882c49e svc_shutdown_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe8d21ef7 rpc_init_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe8d42efe xdr_inline_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe97f4ce5 qword_get +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe9cad738 xdr_shift_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xeb1902d4 rpc_find_or_alloc_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xeb64c175 cache_unregister_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xebeda60d xprt_write_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xeca32f8c xprt_release_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xedb1bbc2 xprt_set_retrans_timeout_def +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 0xeedd3a05 svc_seq_show +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xef7ffd5e auth_domain_lookup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf1197004 xprt_lookup_rqst +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf3336d60 xprt_wake_pending_tasks +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf34b5f14 auth_domain_put +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf372e7d5 rpc_destroy_pipe_data +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf7010696 xprt_reserve_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf862fd58 xdr_skb_read_bits +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf8f0a2df rpc_killall_tasks +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf9554960 rpc_lookup_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf9d1164c rpc_free +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfb6e91c0 svc_destroy +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfea76914 xdr_reserve_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xff8083a1 rpc_alloc_iostats +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x0c79d5ef vm_sockets_get_local_cid +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x0dc34116 vsock_find_bound_socket +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x15578e37 vsock_stream_has_space +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x15c0c57c vsock_addr_init +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x2663cb64 vsock_addr_equals_addr +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x327ba536 vsock_add_pending +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x69065a28 __vsock_create +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x6f3c8f41 vsock_stream_has_data +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x73d8b979 vsock_for_each_connected_socket +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 0x7a0fe3ae __vsock_core_init +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x7f730c80 vsock_core_exit +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x91450949 vsock_insert_connected +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xa98f86a6 vsock_find_connected_socket +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xbd0f699d vsock_addr_bound +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xc7a98362 vsock_remove_bound +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xc8ffecf6 vsock_enqueue_accept +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xd463be46 vsock_remove_connected +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xd95ac116 vsock_addr_validate +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xf593c40a vsock_pending_work +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xf7d2ac2f vsock_remove_pending +EXPORT_SYMBOL_GPL net/wimax/wimax 0x2b90e1e9 wimax_state_change +EXPORT_SYMBOL_GPL net/wimax/wimax 0x2e79a9cb wimax_dev_rm +EXPORT_SYMBOL_GPL net/wimax/wimax 0x30243130 wimax_dev_add +EXPORT_SYMBOL_GPL net/wimax/wimax 0x30477b42 wimax_msg_alloc +EXPORT_SYMBOL_GPL net/wimax/wimax 0x44e0e3fe wimax_msg +EXPORT_SYMBOL_GPL net/wimax/wimax 0x57f498d2 wimax_report_rfkill_sw +EXPORT_SYMBOL_GPL net/wimax/wimax 0x62178c96 wimax_report_rfkill_hw +EXPORT_SYMBOL_GPL net/wimax/wimax 0x7b6a09f7 wimax_state_get +EXPORT_SYMBOL_GPL net/wimax/wimax 0xa57397fe wimax_msg_data +EXPORT_SYMBOL_GPL net/wimax/wimax 0xb417bd65 wimax_msg_len +EXPORT_SYMBOL_GPL net/wimax/wimax 0xc10dc4a2 wimax_msg_data_len +EXPORT_SYMBOL_GPL net/wimax/wimax 0xe5505114 wimax_dev_init +EXPORT_SYMBOL_GPL net/wimax/wimax 0xf1c41a33 wimax_msg_send +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x2091b14c cfg80211_vendor_cmd_reply +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xb201a4ce cfg80211_shutdown_all_interfaces +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 0x3bf471d7 xfrm_calg_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x47b34e60 xfrm_ealg_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x60b73277 xfrm_aead_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x7a8ca627 xfrm_count_pfkey_enc_supported +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x834ba96d xfrm_aalg_get_byid +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xa6e66685 xfrm_aalg_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xaa762fe2 xfrm_aalg_get_byidx +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xad1b60ed xfrm_calg_get_byid +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xdbfc35c8 xfrm_ealg_get_byidx +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xdfea3a6d xfrm_ealg_get_byid +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0x7ce8abfb ipcomp_init_state +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0xa5b4aee7 ipcomp_input +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0xb9cbcd22 ipcomp_output +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0xc55323a6 ipcomp_destroy +EXPORT_SYMBOL_GPL sound/core/seq/snd-seq-device 0xe8fa04cf snd_seq_driver_unregister +EXPORT_SYMBOL_GPL sound/core/seq/snd-seq-device 0xf1db8831 __snd_seq_driver_register +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs4271 0x7d05786f cs4271_dt_ids +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs4271 0xdcb934e4 cs4271_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs4271 0xebb5119f cs4271_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42l51 0x1887b548 cs42l51_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42l51 0x375ad98c cs42l51_of_match +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42l51 0x8ab32d56 cs42l51_regmap +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0x0245c4f2 cs42xx8_of_match +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0x2d45a76e cs42xx8_pm +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cs42xx8 0x5c475699 cs42xx8_regmap_config +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-cs42xx8 0xdb9a8757 cs42xx8_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-es8328 0x3274527e es8328_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-es8328 0x3bc6508d es8328_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm512x 0x4632a1d7 pcm512x_remove +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm512x 0x605e0e1c pcm512x_regmap +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm512x 0x61a833af pcm512x_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-pcm512x 0xae34af52 pcm512x_pm_ops +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0x1604699c sigmadsp_reset +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0x4790728e sigmadsp_setup +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0x59bd10a1 sigmadsp_restrict_params +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0x68a77007 sigmadsp_attach +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp 0x95133318 devm_sigmadsp_init +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sigmadsp-i2c 0xfeb2212e devm_sigmadsp_init_i2c +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-ssm2602 0x347708b0 ssm2602_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-ssm2602 0x3759761f ssm2602_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-tpa6130a2 0x38da59a4 tpa6130a2_add_controls +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-tpa6130a2 0x73f1d3db tpa6130a2_stereo_enable +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-ts3a227e 0x3ae9af6f ts3a227e_enable_jack_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8804 0xe311933f wm8804_regmap_config +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8804 0xed53c396 wm8804_pm +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8804 0xeffafc3c wm8804_probe +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8804 0xf2269357 wm8804_remove +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8903 0x3af3b1f8 wm8903_mic_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8962 0x28a706e8 wm8962_mic_detect +EXPORT_SYMBOL_GPL sound/soc/fsl/snd-soc-fsl-asrc 0x878c9fdd fsl_asrc_platform +EXPORT_SYMBOL_GPL sound/soc/fsl/snd-soc-fsl-asrc 0xc3b669f7 fsl_asrc_get_dma_channel +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x087b1dfe line6_read_data +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x11c52de0 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 0x2140883c line6_pcm_acquire +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x2e388723 line6_read_serial_number +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x30529f19 line6_send_sysex_message +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x6638d5d7 line6_init_midi +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x7a9fb872 line6_alloc_sysex_buffer +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x8ec973cd line6_start_timer +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0x97fab10d line6_resume +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xa6e1af2f line6_init_pcm +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xad02d622 line6_probe +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xc4025534 line6_disconnect +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xde50597d line6_write_data +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xe0995b23 line6_suspend +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xe43a2d0a line6_send_raw_message_async +EXPORT_SYMBOL_GPL sound/usb/line6/snd-usb-line6 0xf0a27f06 line6_pcm_release +EXPORT_SYMBOL_GPL vmlinux 0x0004a11e rt_mutex_timed_lock +EXPORT_SYMBOL_GPL vmlinux 0x000abe56 xfrm_audit_state_add +EXPORT_SYMBOL_GPL vmlinux 0x00305571 snd_soc_dai_set_channel_map +EXPORT_SYMBOL_GPL vmlinux 0x00632780 work_busy +EXPORT_SYMBOL_GPL vmlinux 0x009304b6 ata_tf_from_fis +EXPORT_SYMBOL_GPL vmlinux 0x0094099c gpiod_export_link +EXPORT_SYMBOL_GPL vmlinux 0x00995832 mmc_switch +EXPORT_SYMBOL_GPL vmlinux 0x00aa4d45 irq_domain_associate_many +EXPORT_SYMBOL_GPL vmlinux 0x00becc4a ping_proc_unregister +EXPORT_SYMBOL_GPL vmlinux 0x00ebcb5d ata_id_string +EXPORT_SYMBOL_GPL vmlinux 0x00f21e34 crypto_mod_get +EXPORT_SYMBOL_GPL vmlinux 0x00f6072d snd_soc_component_async_complete +EXPORT_SYMBOL_GPL vmlinux 0x01010c6d klist_add_before +EXPORT_SYMBOL_GPL vmlinux 0x01160696 led_trigger_unregister_simple +EXPORT_SYMBOL_GPL vmlinux 0x011cf028 regulator_suspend_finish +EXPORT_SYMBOL_GPL vmlinux 0x0141ac55 sk_set_memalloc +EXPORT_SYMBOL_GPL vmlinux 0x01461feb regmap_register_patch +EXPORT_SYMBOL_GPL vmlinux 0x0147ed59 sk_attach_filter +EXPORT_SYMBOL_GPL vmlinux 0x01537d4b usb_free_streams +EXPORT_SYMBOL_GPL vmlinux 0x017194ad usb_put_intf +EXPORT_SYMBOL_GPL vmlinux 0x01809704 devfreq_event_get_edev_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0x01c6cb0c cpu_cluster_pm_enter +EXPORT_SYMBOL_GPL vmlinux 0x01d3c022 clockevents_config_and_register +EXPORT_SYMBOL_GPL vmlinux 0x01ddcfc1 ahci_platform_init_host +EXPORT_SYMBOL_GPL vmlinux 0x01e1a8de kgdb_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x01e8318b unregister_mtd_user +EXPORT_SYMBOL_GPL vmlinux 0x01fc2fd4 irq_alloc_domain_generic_chips +EXPORT_SYMBOL_GPL vmlinux 0x01fd453e usbhid_lookup_quirk +EXPORT_SYMBOL_GPL vmlinux 0x02115166 dev_pm_qos_add_notifier +EXPORT_SYMBOL_GPL vmlinux 0x0219fee4 snd_soc_dai_set_tristate +EXPORT_SYMBOL_GPL vmlinux 0x022063f2 handle_simple_irq +EXPORT_SYMBOL_GPL vmlinux 0x0247100b of_prop_next_u32 +EXPORT_SYMBOL_GPL vmlinux 0x02494323 dma_wait_for_async_tx +EXPORT_SYMBOL_GPL vmlinux 0x0258e3c2 rtnl_link_register +EXPORT_SYMBOL_GPL vmlinux 0x027b58db cgroup_attach_task_all +EXPORT_SYMBOL_GPL vmlinux 0x02872379 __tracepoint_suspend_resume +EXPORT_SYMBOL_GPL vmlinux 0x02a072fd devres_add +EXPORT_SYMBOL_GPL vmlinux 0x02c37275 fat_dir_empty +EXPORT_SYMBOL_GPL vmlinux 0x02db3cfa bus_sort_breadthfirst +EXPORT_SYMBOL_GPL vmlinux 0x02ed3ba2 crypto_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x02fea2ae rcu_note_context_switch +EXPORT_SYMBOL_GPL vmlinux 0x03147494 tps65912_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x0321cdbf of_alias_get_highest_id +EXPORT_SYMBOL_GPL vmlinux 0x032375b0 hwrng_unregister +EXPORT_SYMBOL_GPL vmlinux 0x0336bbe7 inet_csk_reqsk_queue_hash_add +EXPORT_SYMBOL_GPL vmlinux 0x033a1acd snd_soc_get_volsw +EXPORT_SYMBOL_GPL vmlinux 0x0343bdf1 __i2c_board_list +EXPORT_SYMBOL_GPL vmlinux 0x03532418 mtd_del_partition +EXPORT_SYMBOL_GPL vmlinux 0x036b04ef tty_buffer_unlock_exclusive +EXPORT_SYMBOL_GPL vmlinux 0x0382d6d0 spi_setup +EXPORT_SYMBOL_GPL vmlinux 0x038d46a1 wait_for_tpm_stat +EXPORT_SYMBOL_GPL vmlinux 0x038f5937 devm_free_pages +EXPORT_SYMBOL_GPL vmlinux 0x039fd867 trace_clock_global +EXPORT_SYMBOL_GPL vmlinux 0x03a3f6b7 securityfs_create_file +EXPORT_SYMBOL_GPL vmlinux 0x03c20fb7 of_fdt_unflatten_tree +EXPORT_SYMBOL_GPL vmlinux 0x03cae8ef debugfs_create_dir +EXPORT_SYMBOL_GPL vmlinux 0x03e3686c ata_timing_cycle2mode +EXPORT_SYMBOL_GPL vmlinux 0x03f69524 crypto_alloc_shash +EXPORT_SYMBOL_GPL vmlinux 0x03fcbce3 register_pernet_device +EXPORT_SYMBOL_GPL vmlinux 0x0402b504 __percpu_ida_init +EXPORT_SYMBOL_GPL vmlinux 0x040bfbca rhashtable_insert_slow +EXPORT_SYMBOL_GPL vmlinux 0x040f94e8 da903x_write +EXPORT_SYMBOL_GPL vmlinux 0x042a2583 thermal_zone_get_zone_by_name +EXPORT_SYMBOL_GPL vmlinux 0x046557a5 irq_map_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x0465a073 regmap_reg_in_ranges +EXPORT_SYMBOL_GPL vmlinux 0x048b5f8d twl4030_audio_get_mclk +EXPORT_SYMBOL_GPL vmlinux 0x04942d66 platform_bus +EXPORT_SYMBOL_GPL vmlinux 0x0499deb0 __clk_get_rate +EXPORT_SYMBOL_GPL vmlinux 0x04a59479 fb_deferred_io_cleanup +EXPORT_SYMBOL_GPL vmlinux 0x04c4f603 mpi_get_buffer +EXPORT_SYMBOL_GPL vmlinux 0x04cf8a84 snd_soc_update_bits +EXPORT_SYMBOL_GPL vmlinux 0x04e1b99f snd_pcm_std_chmaps +EXPORT_SYMBOL_GPL vmlinux 0x04f4bd8d percpu_ref_exit +EXPORT_SYMBOL_GPL vmlinux 0x051f6199 usb_phy_set_event +EXPORT_SYMBOL_GPL vmlinux 0x0523f3f7 __inet_lookup_listener +EXPORT_SYMBOL_GPL vmlinux 0x0538430d mbox_chan_received_data +EXPORT_SYMBOL_GPL vmlinux 0x053ca680 inet6_csk_search_req +EXPORT_SYMBOL_GPL vmlinux 0x05495392 hid_debug +EXPORT_SYMBOL_GPL vmlinux 0x054e550b kernel_halt +EXPORT_SYMBOL_GPL vmlinux 0x05542702 leds_list_lock +EXPORT_SYMBOL_GPL vmlinux 0x0580f8cd da903x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x058b582a vt_get_leds +EXPORT_SYMBOL_GPL vmlinux 0x059c6782 dev_pm_put_subsys_data +EXPORT_SYMBOL_GPL vmlinux 0x05bccd04 pinctrl_select_state +EXPORT_SYMBOL_GPL vmlinux 0x06043e6d blkg_lookup +EXPORT_SYMBOL_GPL vmlinux 0x0617d049 cpuidle_get_driver +EXPORT_SYMBOL_GPL vmlinux 0x0626da5f od_unregister_powersave_bias_handler +EXPORT_SYMBOL_GPL vmlinux 0x06290ee5 usb_enable_ltm +EXPORT_SYMBOL_GPL vmlinux 0x0641a571 irq_domain_xlate_onetwocell +EXPORT_SYMBOL_GPL vmlinux 0x06438115 tcp_orphan_count +EXPORT_SYMBOL_GPL vmlinux 0x064db9a5 mark_mounts_for_expiry +EXPORT_SYMBOL_GPL vmlinux 0x067c88a0 usb_choose_configuration +EXPORT_SYMBOL_GPL vmlinux 0x067d9a96 ata_sff_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x0683f00e skb_append_pagefrags +EXPORT_SYMBOL_GPL vmlinux 0x0695ece9 fib_table_lookup +EXPORT_SYMBOL_GPL vmlinux 0x0696b822 bd_unlink_disk_holder +EXPORT_SYMBOL_GPL vmlinux 0x06a06bc5 ip6_local_out +EXPORT_SYMBOL_GPL vmlinux 0x06ba0eb6 usb_get_intf +EXPORT_SYMBOL_GPL vmlinux 0x06c2a463 led_trigger_register_simple +EXPORT_SYMBOL_GPL vmlinux 0x06c7a377 gpiochip_irqchip_add +EXPORT_SYMBOL_GPL vmlinux 0x06d549e6 pinctrl_free_gpio +EXPORT_SYMBOL_GPL vmlinux 0x06e149f7 ahci_platform_enable_clks +EXPORT_SYMBOL_GPL vmlinux 0x06ec25ce adp5520_read +EXPORT_SYMBOL_GPL vmlinux 0x06fccd4a adp5520_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0x07032f9e trace_seq_to_user +EXPORT_SYMBOL_GPL vmlinux 0x071ec483 __page_file_mapping +EXPORT_SYMBOL_GPL vmlinux 0x072139b9 sdio_f0_readb +EXPORT_SYMBOL_GPL vmlinux 0x072c43d0 dma_buf_unmap_attachment +EXPORT_SYMBOL_GPL vmlinux 0x072ffaf3 sg_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x0739f429 x509_check_signature +EXPORT_SYMBOL_GPL vmlinux 0x0762403c edac_put_sysfs_subsys +EXPORT_SYMBOL_GPL vmlinux 0x078ed20b wait_on_page_bit_killable_timeout +EXPORT_SYMBOL_GPL vmlinux 0x07a788b7 ahci_ops +EXPORT_SYMBOL_GPL vmlinux 0x07b21f85 kdb_get_kbd_char +EXPORT_SYMBOL_GPL vmlinux 0x07b3c30c devm_regulator_bulk_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x07b52e38 rtnl_unregister +EXPORT_SYMBOL_GPL vmlinux 0x07b9e082 gpiod_get_value +EXPORT_SYMBOL_GPL vmlinux 0x07c01b10 tpm_chip_register +EXPORT_SYMBOL_GPL vmlinux 0x08114fe4 crypto_nivaead_type +EXPORT_SYMBOL_GPL vmlinux 0x08156773 name_to_dev_t +EXPORT_SYMBOL_GPL vmlinux 0x083c5c18 crypto_enqueue_request +EXPORT_SYMBOL_GPL vmlinux 0x083ff6cf ip_build_and_send_pkt +EXPORT_SYMBOL_GPL vmlinux 0x08741414 phy_get +EXPORT_SYMBOL_GPL vmlinux 0x088b4a01 ata_scsi_port_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x0892ae1a musb_writew +EXPORT_SYMBOL_GPL vmlinux 0x0916bc99 of_clk_get_parent_name +EXPORT_SYMBOL_GPL vmlinux 0x0917ea7b ipv4_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x0917f0e1 xfrm_audit_state_delete +EXPORT_SYMBOL_GPL vmlinux 0x091eb9b4 round_jiffies +EXPORT_SYMBOL_GPL vmlinux 0x093802be fwnode_property_read_u16_array +EXPORT_SYMBOL_GPL vmlinux 0x093dbe63 platform_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x09437748 ring_buffer_read_events_cpu +EXPORT_SYMBOL_GPL vmlinux 0x09469482 kfree_call_rcu +EXPORT_SYMBOL_GPL vmlinux 0x0952af60 fb_videomode_from_videomode +EXPORT_SYMBOL_GPL vmlinux 0x0958637c list_lru_add +EXPORT_SYMBOL_GPL vmlinux 0x096921a6 mtd_get_device_size +EXPORT_SYMBOL_GPL vmlinux 0x0976da32 usb_get_status +EXPORT_SYMBOL_GPL vmlinux 0x0984ddaa regulator_get_hardware_vsel_register +EXPORT_SYMBOL_GPL vmlinux 0x098a27e2 dev_pm_qos_hide_latency_tolerance +EXPORT_SYMBOL_GPL vmlinux 0x09b3f26a simple_attr_release +EXPORT_SYMBOL_GPL vmlinux 0x09b3f8f8 iptunnel_handle_offloads +EXPORT_SYMBOL_GPL vmlinux 0x09b7c6cd ipv6_proxy_select_ident +EXPORT_SYMBOL_GPL vmlinux 0x09dffa99 snd_soc_dai_set_bclk_ratio +EXPORT_SYMBOL_GPL vmlinux 0x09e913c1 snd_pcm_alt_chmaps +EXPORT_SYMBOL_GPL vmlinux 0x0a02adc0 relay_reset +EXPORT_SYMBOL_GPL vmlinux 0x0a1fab43 snd_soc_dapm_new_controls +EXPORT_SYMBOL_GPL vmlinux 0x0a62d23b component_master_add_child +EXPORT_SYMBOL_GPL vmlinux 0x0a691d72 skb_cow_data +EXPORT_SYMBOL_GPL vmlinux 0x0aa627ef wm831x_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x0ab5975c snd_soc_add_platform +EXPORT_SYMBOL_GPL vmlinux 0x0ac9bb51 crypto_unregister_algs +EXPORT_SYMBOL_GPL vmlinux 0x0ada099f bcm_dma_start +EXPORT_SYMBOL_GPL vmlinux 0x0adecbb2 of_property_read_u8_array +EXPORT_SYMBOL_GPL vmlinux 0x0afd4610 zs_malloc +EXPORT_SYMBOL_GPL vmlinux 0x0b07abe2 unshare_fs_struct +EXPORT_SYMBOL_GPL vmlinux 0x0b0a6d5e devres_open_group +EXPORT_SYMBOL_GPL vmlinux 0x0b3a61fd bsg_job_done +EXPORT_SYMBOL_GPL vmlinux 0x0b3e2d8a crypto_register_rng +EXPORT_SYMBOL_GPL vmlinux 0x0b4d9dd3 ping_proc_register +EXPORT_SYMBOL_GPL vmlinux 0x0b59390b __tracepoint_rpm_suspend +EXPORT_SYMBOL_GPL vmlinux 0x0b59dba4 cpufreq_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x0b710dd6 ahci_reset_controller +EXPORT_SYMBOL_GPL vmlinux 0x0b86a3f5 max_gen_clk_ops +EXPORT_SYMBOL_GPL vmlinux 0x0b962f74 of_dma_get_range +EXPORT_SYMBOL_GPL vmlinux 0x0b993368 dummy_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0x0bbae511 return_address +EXPORT_SYMBOL_GPL vmlinux 0x0bfa3a19 rcu_idle_exit +EXPORT_SYMBOL_GPL vmlinux 0x0c0c015e ring_buffer_swap_cpu +EXPORT_SYMBOL_GPL vmlinux 0x0c0caa92 __cpufreq_driver_target +EXPORT_SYMBOL_GPL vmlinux 0x0c2cdbf1 synchronize_sched +EXPORT_SYMBOL_GPL vmlinux 0x0c45dd9b skb_morph +EXPORT_SYMBOL_GPL vmlinux 0x0c55f270 regulator_disable +EXPORT_SYMBOL_GPL vmlinux 0x0c7b8991 fanout_mutex +EXPORT_SYMBOL_GPL vmlinux 0x0cc1e40f crypto_it_tab +EXPORT_SYMBOL_GPL vmlinux 0x0cd7c4f3 snd_soc_get_volsw_sx +EXPORT_SYMBOL_GPL vmlinux 0x0cef656d __clk_mux_determine_rate +EXPORT_SYMBOL_GPL vmlinux 0x0d2260e3 md_is_badblock +EXPORT_SYMBOL_GPL vmlinux 0x0d2f6073 dma_get_required_mask +EXPORT_SYMBOL_GPL vmlinux 0x0d43b91b led_classdev_unregister +EXPORT_SYMBOL_GPL vmlinux 0x0d4961de nf_log_buf_open +EXPORT_SYMBOL_GPL vmlinux 0x0d4e5d57 extcon_get_edev_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0x0d4f356a mnt_clone_write +EXPORT_SYMBOL_GPL vmlinux 0x0d563482 spi_master_suspend +EXPORT_SYMBOL_GPL vmlinux 0x0d5748b7 ata_do_dev_read_id +EXPORT_SYMBOL_GPL vmlinux 0x0d6df683 deregister_mtd_parser +EXPORT_SYMBOL_GPL vmlinux 0x0d7d4d70 rcu_batches_completed +EXPORT_SYMBOL_GPL vmlinux 0x0d7d4e6a ahci_platform_disable_regulators +EXPORT_SYMBOL_GPL vmlinux 0x0ddb1cd7 llist_reverse_order +EXPORT_SYMBOL_GPL vmlinux 0x0deecba3 pwm_get +EXPORT_SYMBOL_GPL vmlinux 0x0e0811d0 ata_sff_dma_pause +EXPORT_SYMBOL_GPL vmlinux 0x0e323302 wb_writeout_inc +EXPORT_SYMBOL_GPL vmlinux 0x0e56c99f __ata_ehi_push_desc +EXPORT_SYMBOL_GPL vmlinux 0x0e63d0ff dm_get_rq_mapinfo +EXPORT_SYMBOL_GPL vmlinux 0x0e9d9132 perf_pmu_migrate_context +EXPORT_SYMBOL_GPL vmlinux 0x0ea377db unregister_asymmetric_key_parser +EXPORT_SYMBOL_GPL vmlinux 0x0ed50edc snd_pcm_stream_unlock_irq +EXPORT_SYMBOL_GPL vmlinux 0x0eed6c29 dev_attr_sw_activity +EXPORT_SYMBOL_GPL vmlinux 0x0f1835bb of_usb_get_maximum_speed +EXPORT_SYMBOL_GPL vmlinux 0x0f1b4fdc event_triggers_post_call +EXPORT_SYMBOL_GPL vmlinux 0x0f336d7f rcutorture_get_gp_data +EXPORT_SYMBOL_GPL vmlinux 0x0f45411b crypto_rng_reset +EXPORT_SYMBOL_GPL vmlinux 0x0f4731d0 crypto_create_tfm +EXPORT_SYMBOL_GPL vmlinux 0x0f4c9444 public_key_subtype +EXPORT_SYMBOL_GPL vmlinux 0x0f751aea input_event_from_user +EXPORT_SYMBOL_GPL vmlinux 0x0f7ce109 find_extend_vma +EXPORT_SYMBOL_GPL vmlinux 0x0fc01e9f static_key_slow_inc +EXPORT_SYMBOL_GPL vmlinux 0x0fd2c004 irq_create_mapping +EXPORT_SYMBOL_GPL vmlinux 0x0fe96734 of_phy_provider_unregister +EXPORT_SYMBOL_GPL vmlinux 0x0feacad7 device_del +EXPORT_SYMBOL_GPL vmlinux 0x0fecab24 pm_generic_freeze +EXPORT_SYMBOL_GPL vmlinux 0x1007149f blk_mq_request_started +EXPORT_SYMBOL_GPL vmlinux 0x10138352 tracing_on +EXPORT_SYMBOL_GPL vmlinux 0x1028b94c init_dummy_netdev +EXPORT_SYMBOL_GPL vmlinux 0x1040c4ed rtc_alarm_irq_enable +EXPORT_SYMBOL_GPL vmlinux 0x10714351 fib_rules_register +EXPORT_SYMBOL_GPL vmlinux 0x1073f2d6 register_kprobe +EXPORT_SYMBOL_GPL vmlinux 0x108a52fa bio_associate_blkcg +EXPORT_SYMBOL_GPL vmlinux 0x10ab0049 map_vm_area +EXPORT_SYMBOL_GPL vmlinux 0x10aeb2bf class_interface_register +EXPORT_SYMBOL_GPL vmlinux 0x10afa63b crypto_init_ahash_spawn +EXPORT_SYMBOL_GPL vmlinux 0x10c35812 init_user_ns +EXPORT_SYMBOL_GPL vmlinux 0x10c9f26b handle_level_irq +EXPORT_SYMBOL_GPL vmlinux 0x10ccbd82 usb_enable_lpm +EXPORT_SYMBOL_GPL vmlinux 0x10cfebfa regmap_check_range_table +EXPORT_SYMBOL_GPL vmlinux 0x10f83b2c tps65912_clear_bits +EXPORT_SYMBOL_GPL vmlinux 0x11125d3a wakeup_source_add +EXPORT_SYMBOL_GPL vmlinux 0x112e9866 device_reset +EXPORT_SYMBOL_GPL vmlinux 0x1172ce54 rtc_ktime_to_tm +EXPORT_SYMBOL_GPL vmlinux 0x118f66dd sprint_OID +EXPORT_SYMBOL_GPL vmlinux 0x11aaa0a8 wm8350_clear_bits +EXPORT_SYMBOL_GPL vmlinux 0x11ba58e9 bus_rescan_devices +EXPORT_SYMBOL_GPL vmlinux 0x11d7589e add_hwgenerator_randomness +EXPORT_SYMBOL_GPL vmlinux 0x11e74421 phy_pm_runtime_get_sync +EXPORT_SYMBOL_GPL vmlinux 0x121d958a unregister_die_notifier +EXPORT_SYMBOL_GPL vmlinux 0x12219a9f snd_soc_codec_set_pll +EXPORT_SYMBOL_GPL vmlinux 0x123d2aa7 regmap_raw_write_async +EXPORT_SYMBOL_GPL vmlinux 0x124f2056 crypto_get_attr_type +EXPORT_SYMBOL_GPL vmlinux 0x12546738 debugfs_create_x64 +EXPORT_SYMBOL_GPL vmlinux 0x1256b890 scsi_autopm_put_device +EXPORT_SYMBOL_GPL vmlinux 0x125d89cb usb_poison_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x1268f357 resume_device_irqs +EXPORT_SYMBOL_GPL vmlinux 0x126f5222 ata_host_resume +EXPORT_SYMBOL_GPL vmlinux 0x12784229 gpiochip_find +EXPORT_SYMBOL_GPL vmlinux 0x127d6764 tps6586x_read +EXPORT_SYMBOL_GPL vmlinux 0x12814091 ip6_sk_dst_lookup_flow +EXPORT_SYMBOL_GPL vmlinux 0x12a42274 __fib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x12b5193c fwnode_handle_put +EXPORT_SYMBOL_GPL vmlinux 0x12c24260 sm501_set_clock +EXPORT_SYMBOL_GPL vmlinux 0x12d8dea6 ata_sas_port_alloc +EXPORT_SYMBOL_GPL vmlinux 0x12e8ca06 snd_soc_put_xr_sx +EXPORT_SYMBOL_GPL vmlinux 0x12f9c434 usb_add_phy +EXPORT_SYMBOL_GPL vmlinux 0x130162b3 devm_of_phy_get_by_index +EXPORT_SYMBOL_GPL vmlinux 0x131a5ed7 regmap_del_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0x131db64a system_long_wq +EXPORT_SYMBOL_GPL vmlinux 0x132b9a99 of_get_fb_videomode +EXPORT_SYMBOL_GPL vmlinux 0x135124d7 irq_domain_xlate_onecell +EXPORT_SYMBOL_GPL vmlinux 0x1357a3ee register_ftrace_function +EXPORT_SYMBOL_GPL vmlinux 0x136209db power_supply_reg_notifier +EXPORT_SYMBOL_GPL vmlinux 0x13701346 platform_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x1373a10c list_lru_walk_node +EXPORT_SYMBOL_GPL vmlinux 0x139a1f11 usb_hcd_unmap_urb_setup_for_dma +EXPORT_SYMBOL_GPL vmlinux 0x13b89dee pinctrl_request_gpio +EXPORT_SYMBOL_GPL vmlinux 0x13b9773c dm_path_uevent +EXPORT_SYMBOL_GPL vmlinux 0x13d7ce4e pid_vnr +EXPORT_SYMBOL_GPL vmlinux 0x14057220 snd_soc_get_enum_double +EXPORT_SYMBOL_GPL vmlinux 0x14187e72 ping_recvmsg +EXPORT_SYMBOL_GPL vmlinux 0x142810ae regmap_async_complete +EXPORT_SYMBOL_GPL vmlinux 0x1444c821 blk_add_driver_data +EXPORT_SYMBOL_GPL vmlinux 0x144ddf15 devfreq_event_add_edev +EXPORT_SYMBOL_GPL vmlinux 0x1455ff2c class_compat_remove_link +EXPORT_SYMBOL_GPL vmlinux 0x14866b62 devm_regulator_bulk_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x150c9fba of_get_videomode +EXPORT_SYMBOL_GPL vmlinux 0x15126a65 regmap_init_i2c +EXPORT_SYMBOL_GPL vmlinux 0x15184161 pm_generic_poweroff_noirq +EXPORT_SYMBOL_GPL vmlinux 0x15511f0c pinctrl_pm_select_default_state +EXPORT_SYMBOL_GPL vmlinux 0x1564ea1b usb_get_descriptor +EXPORT_SYMBOL_GPL vmlinux 0x1567b299 __ablkcipher_walk_complete +EXPORT_SYMBOL_GPL vmlinux 0x15892417 async_synchronize_cookie +EXPORT_SYMBOL_GPL vmlinux 0x15992657 snd_soc_dapm_new_widgets +EXPORT_SYMBOL_GPL vmlinux 0x15c310ef snd_soc_platform_trigger +EXPORT_SYMBOL_GPL vmlinux 0x15e1c53c irq_gc_mask_clr_bit +EXPORT_SYMBOL_GPL vmlinux 0x15efd446 rcu_batches_started +EXPORT_SYMBOL_GPL vmlinux 0x16000a3c dm_device_name +EXPORT_SYMBOL_GPL vmlinux 0x1619ca30 snd_soc_cnew +EXPORT_SYMBOL_GPL vmlinux 0x1648a70c devres_alloc +EXPORT_SYMBOL_GPL vmlinux 0x164de5eb trace_event_buffer_commit +EXPORT_SYMBOL_GPL vmlinux 0x1650bf27 rcutorture_record_progress +EXPORT_SYMBOL_GPL vmlinux 0x165c6b2f blk_queue_rq_timeout +EXPORT_SYMBOL_GPL vmlinux 0x166c5ecd i2c_lock_adapter +EXPORT_SYMBOL_GPL vmlinux 0x1676d1b3 xfrm_audit_state_notfound_simple +EXPORT_SYMBOL_GPL vmlinux 0x168aae99 pm_generic_freeze_noirq +EXPORT_SYMBOL_GPL vmlinux 0x16966232 ip6_dst_lookup +EXPORT_SYMBOL_GPL vmlinux 0x16a7a21b mddev_init +EXPORT_SYMBOL_GPL vmlinux 0x16bb7341 anon_inode_getfile +EXPORT_SYMBOL_GPL vmlinux 0x16c0332b devm_usb_get_phy_dev +EXPORT_SYMBOL_GPL vmlinux 0x16e1d452 of_property_read_u32_array +EXPORT_SYMBOL_GPL vmlinux 0x16e82334 component_add +EXPORT_SYMBOL_GPL vmlinux 0x16fdc2f1 ata_std_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x172c60e3 single_open_net +EXPORT_SYMBOL_GPL vmlinux 0x1753a32f hash_digest_size +EXPORT_SYMBOL_GPL vmlinux 0x175e4a78 fat_detach +EXPORT_SYMBOL_GPL vmlinux 0x1775833a kthread_park +EXPORT_SYMBOL_GPL vmlinux 0x177c338d twl_get_version +EXPORT_SYMBOL_GPL vmlinux 0x17b0f15b snd_soc_read +EXPORT_SYMBOL_GPL vmlinux 0x17c3ca68 serial8250_rpm_put +EXPORT_SYMBOL_GPL vmlinux 0x17c5dcef sdhci_set_uhs_signaling +EXPORT_SYMBOL_GPL vmlinux 0x17cc988b class_dev_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x180e8843 class_dev_iter_next +EXPORT_SYMBOL_GPL vmlinux 0x1826993a tty_standard_install +EXPORT_SYMBOL_GPL vmlinux 0x1856a104 fat_search_long +EXPORT_SYMBOL_GPL vmlinux 0x1863a6f5 led_classdev_resume +EXPORT_SYMBOL_GPL vmlinux 0x1866cec2 ring_buffer_size +EXPORT_SYMBOL_GPL vmlinux 0x186c6b45 system_trusted_keyring +EXPORT_SYMBOL_GPL vmlinux 0x1876151b snd_soc_info_volsw_range +EXPORT_SYMBOL_GPL vmlinux 0x1878f62b edac_err_assert +EXPORT_SYMBOL_GPL vmlinux 0x1894ee66 usb_alloc_dev +EXPORT_SYMBOL_GPL vmlinux 0x189c14b9 dev_pm_domain_attach +EXPORT_SYMBOL_GPL vmlinux 0x189fc6d2 mtd_device_parse_register +EXPORT_SYMBOL_GPL vmlinux 0x18ac2159 fuse_request_alloc +EXPORT_SYMBOL_GPL vmlinux 0x18b0970e regulator_list_hardware_vsel +EXPORT_SYMBOL_GPL vmlinux 0x18bb2f6a usb_bus_list_lock +EXPORT_SYMBOL_GPL vmlinux 0x18da64b8 crypto_shash_final +EXPORT_SYMBOL_GPL vmlinux 0x18df652e vc_sm_int_handle +EXPORT_SYMBOL_GPL vmlinux 0x18f01bff mmc_send_tuning +EXPORT_SYMBOL_GPL vmlinux 0x18ff0100 __blocking_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x19224cdf skcipher_geniv_exit +EXPORT_SYMBOL_GPL vmlinux 0x193d48e0 trace_current_buffer_unlock_commit +EXPORT_SYMBOL_GPL vmlinux 0x194dd5f5 pkey_algo_name +EXPORT_SYMBOL_GPL vmlinux 0x1955b2ad device_for_each_child_reverse +EXPORT_SYMBOL_GPL vmlinux 0x195b871b devm_power_supply_register_no_ws +EXPORT_SYMBOL_GPL vmlinux 0x19620863 get_task_comm +EXPORT_SYMBOL_GPL vmlinux 0x197bfd9f rtc_irq_set_freq +EXPORT_SYMBOL_GPL vmlinux 0x197cd54a wm8350_device_init +EXPORT_SYMBOL_GPL vmlinux 0x19832807 rdev_clear_badblocks +EXPORT_SYMBOL_GPL vmlinux 0x1990f8ff pm_qos_update_request +EXPORT_SYMBOL_GPL vmlinux 0x19a304ba usb_disabled +EXPORT_SYMBOL_GPL vmlinux 0x19a6ecbb ahci_platform_disable_resources +EXPORT_SYMBOL_GPL vmlinux 0x19ab1ea9 inet_csk_addr2sockaddr +EXPORT_SYMBOL_GPL vmlinux 0x19ae6274 amba_ahb_device_add +EXPORT_SYMBOL_GPL vmlinux 0x19b384a5 hash_algo_name +EXPORT_SYMBOL_GPL vmlinux 0x19b8d69f rhashtable_walk_stop +EXPORT_SYMBOL_GPL vmlinux 0x19c78b66 add_page_wait_queue +EXPORT_SYMBOL_GPL vmlinux 0x19caf843 pm_generic_runtime_suspend +EXPORT_SYMBOL_GPL vmlinux 0x19cb700f pinctrl_pm_select_idle_state +EXPORT_SYMBOL_GPL vmlinux 0x19e221d4 usb_driver_release_interface +EXPORT_SYMBOL_GPL vmlinux 0x19ebc589 usb_stor_resume +EXPORT_SYMBOL_GPL vmlinux 0x19f1cfc5 adp5520_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x1a1c0112 usb_deregister_dev +EXPORT_SYMBOL_GPL vmlinux 0x1a1c1c5c usb_hcd_map_urb_for_dma +EXPORT_SYMBOL_GPL vmlinux 0x1a1c4082 mod_delayed_work_on +EXPORT_SYMBOL_GPL vmlinux 0x1a22616f irq_gc_mask_set_bit +EXPORT_SYMBOL_GPL vmlinux 0x1a310cf4 relay_flush +EXPORT_SYMBOL_GPL vmlinux 0x1a358728 snd_pcm_stream_unlock_irqrestore +EXPORT_SYMBOL_GPL vmlinux 0x1a452779 scsi_get_vpd_page +EXPORT_SYMBOL_GPL vmlinux 0x1a83076f cm_notify_event +EXPORT_SYMBOL_GPL vmlinux 0x1a8717e9 vc_sm_unlock +EXPORT_SYMBOL_GPL vmlinux 0x1a8dfa42 da903x_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0x1a967885 cpufreq_frequency_get_table +EXPORT_SYMBOL_GPL vmlinux 0x1aa9b9c7 blk_queue_dma_drain +EXPORT_SYMBOL_GPL vmlinux 0x1ac3af1e pm_generic_thaw_early +EXPORT_SYMBOL_GPL vmlinux 0x1acef7d2 pm_freezing +EXPORT_SYMBOL_GPL vmlinux 0x1ad2a33c usb_remove_phy +EXPORT_SYMBOL_GPL vmlinux 0x1ad45ea5 snd_soc_suspend +EXPORT_SYMBOL_GPL vmlinux 0x1ae8d139 tty_set_termios +EXPORT_SYMBOL_GPL vmlinux 0x1b240d95 snd_soc_info_volsw +EXPORT_SYMBOL_GPL vmlinux 0x1b282ecb devm_of_phy_provider_unregister +EXPORT_SYMBOL_GPL vmlinux 0x1b3193ff gen_pool_size +EXPORT_SYMBOL_GPL vmlinux 0x1b3261e0 klist_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x1b52db1c probe_kernel_read +EXPORT_SYMBOL_GPL vmlinux 0x1b6c2d05 phy_pm_runtime_put_sync +EXPORT_SYMBOL_GPL vmlinux 0x1b75b0bb sdio_claim_host +EXPORT_SYMBOL_GPL vmlinux 0x1b7872ad rtc_irq_set_state +EXPORT_SYMBOL_GPL vmlinux 0x1b8822d8 pinctrl_gpio_direction_output +EXPORT_SYMBOL_GPL vmlinux 0x1b9aca3f jprobe_return +EXPORT_SYMBOL_GPL vmlinux 0x1b9dcd38 unregister_kretprobe +EXPORT_SYMBOL_GPL vmlinux 0x1ba8a90a unregister_kretprobes +EXPORT_SYMBOL_GPL vmlinux 0x1bb5fc26 atomic_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0x1bc3edc2 usb_stor_sense_invalidCDB +EXPORT_SYMBOL_GPL vmlinux 0x1bc5eebe pinctrl_gpio_direction_input +EXPORT_SYMBOL_GPL vmlinux 0x1becf945 gpiod_unexport +EXPORT_SYMBOL_GPL vmlinux 0x1c0f980c __rtnl_link_register +EXPORT_SYMBOL_GPL vmlinux 0x1c2c5554 snd_device_initialize +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 0x1c87a811 __round_jiffies_up +EXPORT_SYMBOL_GPL vmlinux 0x1c93d044 ata_scsi_change_queue_depth +EXPORT_SYMBOL_GPL vmlinux 0x1cba3031 dma_buf_put +EXPORT_SYMBOL_GPL vmlinux 0x1cd04aef device_dma_is_coherent +EXPORT_SYMBOL_GPL vmlinux 0x1ce32b3f mtd_blktrans_cease_background +EXPORT_SYMBOL_GPL vmlinux 0x1cf2ca79 usb_sg_cancel +EXPORT_SYMBOL_GPL vmlinux 0x1cff008d snd_soc_card_jack_new +EXPORT_SYMBOL_GPL vmlinux 0x1d113790 mmc_regulator_set_ocr +EXPORT_SYMBOL_GPL vmlinux 0x1d455eb5 exportfs_encode_inode_fh +EXPORT_SYMBOL_GPL vmlinux 0x1d4cfa43 of_get_display_timings +EXPORT_SYMBOL_GPL vmlinux 0x1d4e7023 subsys_interface_register +EXPORT_SYMBOL_GPL vmlinux 0x1d5377d4 platform_get_irq_byname +EXPORT_SYMBOL_GPL vmlinux 0x1d58ae14 lpddr2_jedec_timings +EXPORT_SYMBOL_GPL vmlinux 0x1d5caf1f trace_event_reg +EXPORT_SYMBOL_GPL vmlinux 0x1d74e25f wm831x_reg_lock +EXPORT_SYMBOL_GPL vmlinux 0x1d77b0f8 unix_socket_table +EXPORT_SYMBOL_GPL vmlinux 0x1d7c0168 __ftrace_vprintk +EXPORT_SYMBOL_GPL vmlinux 0x1d7cb586 clk_register_fixed_rate_with_accuracy +EXPORT_SYMBOL_GPL vmlinux 0x1db12a9a sdhci_resume_host +EXPORT_SYMBOL_GPL vmlinux 0x1dc4f2f4 ata_port_freeze +EXPORT_SYMBOL_GPL vmlinux 0x1de2823b usbnet_resume +EXPORT_SYMBOL_GPL vmlinux 0x1e090d3d devres_release +EXPORT_SYMBOL_GPL vmlinux 0x1e169363 pm_generic_resume +EXPORT_SYMBOL_GPL vmlinux 0x1e271c49 led_sysfs_enable +EXPORT_SYMBOL_GPL vmlinux 0x1e2ecc95 sdio_set_host_pm_flags +EXPORT_SYMBOL_GPL vmlinux 0x1e330c8d __srcu_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x1e3aa439 regulator_get_exclusive +EXPORT_SYMBOL_GPL vmlinux 0x1e422e38 sdhci_set_bus_width +EXPORT_SYMBOL_GPL vmlinux 0x1e58f634 usb_clear_halt +EXPORT_SYMBOL_GPL vmlinux 0x1e5b03dc pm_qos_add_notifier +EXPORT_SYMBOL_GPL vmlinux 0x1e69f97b snd_soc_info_enum_double +EXPORT_SYMBOL_GPL vmlinux 0x1e759828 usb_set_configuration +EXPORT_SYMBOL_GPL vmlinux 0x1e7bbcb3 kernel_restart +EXPORT_SYMBOL_GPL vmlinux 0x1e90f414 class_find_device +EXPORT_SYMBOL_GPL vmlinux 0x1eb28a7d regulator_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x1eb51262 of_reconfig_get_state_change +EXPORT_SYMBOL_GPL vmlinux 0x1eb9516e round_jiffies_relative +EXPORT_SYMBOL_GPL vmlinux 0x1f037474 usb_stor_probe2 +EXPORT_SYMBOL_GPL vmlinux 0x1f482207 sata_sff_hardreset +EXPORT_SYMBOL_GPL vmlinux 0x1f56ac7a ping_queue_rcv_skb +EXPORT_SYMBOL_GPL vmlinux 0x1f58f2bf crypto_register_alg +EXPORT_SYMBOL_GPL vmlinux 0x1f5ee158 ata_bmdma_qc_issue +EXPORT_SYMBOL_GPL vmlinux 0x1f8544b8 panic_timeout +EXPORT_SYMBOL_GPL vmlinux 0x1f8db7f9 ring_buffer_overrun_cpu +EXPORT_SYMBOL_GPL vmlinux 0x1f948f8a usb_alloc_urb +EXPORT_SYMBOL_GPL vmlinux 0x1ff6c8b8 perf_trace_buf_prepare +EXPORT_SYMBOL_GPL vmlinux 0x201ad8ac serial8250_rx_chars +EXPORT_SYMBOL_GPL vmlinux 0x201d8ea3 encode_rs8 +EXPORT_SYMBOL_GPL vmlinux 0x202b16f4 crypto_ablkcipher_type +EXPORT_SYMBOL_GPL vmlinux 0x20301e9e inet6_destroy_sock +EXPORT_SYMBOL_GPL vmlinux 0x20443017 ip6_local_out_sk +EXPORT_SYMBOL_GPL vmlinux 0x206aedd0 attribute_container_classdev_to_container +EXPORT_SYMBOL_GPL vmlinux 0x20aa6f51 cpuidle_enable_device +EXPORT_SYMBOL_GPL vmlinux 0x20baae85 usb_disable_ltm +EXPORT_SYMBOL_GPL vmlinux 0x20c0bece hid_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0x20c676a0 hidinput_find_field +EXPORT_SYMBOL_GPL vmlinux 0x20c76570 usb_stor_reset_resume +EXPORT_SYMBOL_GPL vmlinux 0x20e7533d ata_bmdma32_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x2104e5d5 ata_platform_remove_one +EXPORT_SYMBOL_GPL vmlinux 0x212a22f1 ipv6_dup_options +EXPORT_SYMBOL_GPL vmlinux 0x2155a667 regmap_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0x216b9ecb da9052_adc_read_temp +EXPORT_SYMBOL_GPL vmlinux 0x2180758a blkg_prfill_rwstat +EXPORT_SYMBOL_GPL vmlinux 0x219b2369 dev_pm_qos_hide_flags +EXPORT_SYMBOL_GPL vmlinux 0x21a563da clk_get_accuracy +EXPORT_SYMBOL_GPL vmlinux 0x21faedb1 tcp_reno_cong_avoid +EXPORT_SYMBOL_GPL vmlinux 0x21febf58 clk_register_mux_table +EXPORT_SYMBOL_GPL vmlinux 0x2218a941 get_governor_parent_kobj +EXPORT_SYMBOL_GPL vmlinux 0x222233c6 snd_soc_register_component +EXPORT_SYMBOL_GPL vmlinux 0x222a1964 snd_dmaengine_pcm_trigger +EXPORT_SYMBOL_GPL vmlinux 0x2235a674 crypto_ahash_type +EXPORT_SYMBOL_GPL vmlinux 0x22462595 platform_get_resource +EXPORT_SYMBOL_GPL vmlinux 0x226a674d atomic_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0x227c7896 of_mpc8xxx_spi_probe +EXPORT_SYMBOL_GPL vmlinux 0x22896a4a usb_deregister +EXPORT_SYMBOL_GPL vmlinux 0x22919aa9 mbox_free_channel +EXPORT_SYMBOL_GPL vmlinux 0x2296c00d crypto_attr_u32 +EXPORT_SYMBOL_GPL vmlinux 0x229e3483 bus_remove_file +EXPORT_SYMBOL_GPL vmlinux 0x22c3f195 tty_put_char +EXPORT_SYMBOL_GPL vmlinux 0x22c7d7bb anon_transport_class_unregister +EXPORT_SYMBOL_GPL vmlinux 0x22cc45d5 tps80031_ext_power_req_config +EXPORT_SYMBOL_GPL vmlinux 0x22ec3684 usb_put_hcd +EXPORT_SYMBOL_GPL vmlinux 0x22f0627e aead_geniv_alloc +EXPORT_SYMBOL_GPL vmlinux 0x22f86ffd clk_gate_ops +EXPORT_SYMBOL_GPL vmlinux 0x22fdd7dd irq_get_domain_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x231d70fc encode_bch +EXPORT_SYMBOL_GPL vmlinux 0x231db8d4 spi_sync_locked +EXPORT_SYMBOL_GPL vmlinux 0x2326e873 ata_bmdma_port_intr +EXPORT_SYMBOL_GPL vmlinux 0x235626c0 hid_allocate_device +EXPORT_SYMBOL_GPL vmlinux 0x235ad94a blk_trace_setup +EXPORT_SYMBOL_GPL vmlinux 0x236affea bus_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x23864ce7 cpuset_mem_spread_node +EXPORT_SYMBOL_GPL vmlinux 0x2396c7f0 clk_set_parent +EXPORT_SYMBOL_GPL vmlinux 0x239c62b3 snd_soc_dai_digital_mute +EXPORT_SYMBOL_GPL vmlinux 0x23b65789 snd_soc_dapm_get_pin_switch +EXPORT_SYMBOL_GPL vmlinux 0x23b7b70d of_prop_next_string +EXPORT_SYMBOL_GPL vmlinux 0x23d7c40f vfs_setlease +EXPORT_SYMBOL_GPL vmlinux 0x23f32a43 clk_debugfs_add_file +EXPORT_SYMBOL_GPL vmlinux 0x23fc7295 device_property_present +EXPORT_SYMBOL_GPL vmlinux 0x23fe1dad tcp_ca_get_key_by_name +EXPORT_SYMBOL_GPL vmlinux 0x24184243 md_run +EXPORT_SYMBOL_GPL vmlinux 0x2442eee5 swiotlb_tbl_map_single +EXPORT_SYMBOL_GPL vmlinux 0x2444aaec tps6586x_writes +EXPORT_SYMBOL_GPL vmlinux 0x24457174 audit_enabled +EXPORT_SYMBOL_GPL vmlinux 0x24661493 crypto_unregister_rngs +EXPORT_SYMBOL_GPL vmlinux 0x2466fd3f usb_ep0_reinit +EXPORT_SYMBOL_GPL vmlinux 0x246ecb8c snd_pcm_stream_lock_irq +EXPORT_SYMBOL_GPL vmlinux 0x246fd4f6 fill_inquiry_response +EXPORT_SYMBOL_GPL vmlinux 0x247ef831 kdb_unregister +EXPORT_SYMBOL_GPL vmlinux 0x2485b70e extcon_update_state +EXPORT_SYMBOL_GPL vmlinux 0x24910402 usb_debug_root +EXPORT_SYMBOL_GPL vmlinux 0x24aac4d9 crypto_aes_expand_key +EXPORT_SYMBOL_GPL vmlinux 0x24b320c2 devfreq_event_reset_event +EXPORT_SYMBOL_GPL vmlinux 0x24eb7e32 leds_list +EXPORT_SYMBOL_GPL vmlinux 0x24f39c39 reset_control_reset +EXPORT_SYMBOL_GPL vmlinux 0x2502c4bd mnt_want_write +EXPORT_SYMBOL_GPL vmlinux 0x25379e73 clk_set_min_rate +EXPORT_SYMBOL_GPL vmlinux 0x2541a979 snd_soc_calc_frame_size +EXPORT_SYMBOL_GPL vmlinux 0x254c87de device_create_with_groups +EXPORT_SYMBOL_GPL vmlinux 0x25574504 clk_fixed_rate_ops +EXPORT_SYMBOL_GPL vmlinux 0x2583b06b ahci_platform_enable_resources +EXPORT_SYMBOL_GPL vmlinux 0x25aa739d snd_soc_of_get_dai_link_codecs +EXPORT_SYMBOL_GPL vmlinux 0x25b02ec1 nf_ipv6_ops +EXPORT_SYMBOL_GPL vmlinux 0x25ca0e28 power_supply_property_is_writeable +EXPORT_SYMBOL_GPL vmlinux 0x25dc068a sysfs_rename_link_ns +EXPORT_SYMBOL_GPL vmlinux 0x25e6872f pinctrl_remove_gpio_range +EXPORT_SYMBOL_GPL vmlinux 0x25ef77c2 usbnet_stop +EXPORT_SYMBOL_GPL vmlinux 0x260e2bae usbnet_write_cmd_nopm +EXPORT_SYMBOL_GPL vmlinux 0x261fdc4c mtd_panic_write +EXPORT_SYMBOL_GPL vmlinux 0x2625368a snd_soc_jack_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0x262c4167 uart_set_options +EXPORT_SYMBOL_GPL vmlinux 0x262f20a8 local_clock +EXPORT_SYMBOL_GPL vmlinux 0x26520970 vm_memory_committed +EXPORT_SYMBOL_GPL vmlinux 0x26616281 __sock_recv_wifi_status +EXPORT_SYMBOL_GPL vmlinux 0x266b7638 interval_tree_remove +EXPORT_SYMBOL_GPL vmlinux 0x267253e1 unix_outq_len +EXPORT_SYMBOL_GPL vmlinux 0x26744957 rpi_firmware_get +EXPORT_SYMBOL_GPL vmlinux 0x269724ae sdio_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x26adb815 thread_notify_head +EXPORT_SYMBOL_GPL vmlinux 0x26b1190b __clocksource_update_freq_scale +EXPORT_SYMBOL_GPL vmlinux 0x26b71fb4 ring_buffer_time_stamp +EXPORT_SYMBOL_GPL vmlinux 0x26ba6ebb crypto_shash_setkey +EXPORT_SYMBOL_GPL vmlinux 0x26bde989 ata_sff_port_intr +EXPORT_SYMBOL_GPL vmlinux 0x26c90ea4 scsi_eh_get_sense +EXPORT_SYMBOL_GPL vmlinux 0x26d3ca2e split_page +EXPORT_SYMBOL_GPL vmlinux 0x26e14e79 raw_seq_start +EXPORT_SYMBOL_GPL vmlinux 0x26e80486 snd_soc_dpcm_be_get_state +EXPORT_SYMBOL_GPL vmlinux 0x26e9dee2 inet_csk_route_child_sock +EXPORT_SYMBOL_GPL vmlinux 0x26ef64e5 gpiod_set_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x2731237a mpc8xxx_spi_tx_buf_u8 +EXPORT_SYMBOL_GPL vmlinux 0x273f25cc of_get_phy_mode +EXPORT_SYMBOL_GPL vmlinux 0x274cf5e1 __clk_get_flags +EXPORT_SYMBOL_GPL vmlinux 0x277501fa devm_add_action +EXPORT_SYMBOL_GPL vmlinux 0x2783764d wakeup_source_register +EXPORT_SYMBOL_GPL vmlinux 0x2787db00 vbin_printf +EXPORT_SYMBOL_GPL vmlinux 0x27b87ffa sysfs_create_mount_point +EXPORT_SYMBOL_GPL vmlinux 0x27eb0625 platform_device_register +EXPORT_SYMBOL_GPL vmlinux 0x27f4f029 ftrace_set_global_filter +EXPORT_SYMBOL_GPL vmlinux 0x27fa66e1 nr_free_buffer_pages +EXPORT_SYMBOL_GPL vmlinux 0x27fb2066 snd_soc_debugfs_root +EXPORT_SYMBOL_GPL vmlinux 0x27fb9bc0 tpm_calc_ordinal_duration +EXPORT_SYMBOL_GPL vmlinux 0x2802f86a of_usb_get_phy_mode +EXPORT_SYMBOL_GPL vmlinux 0x2809a4ec blk_set_queue_dying +EXPORT_SYMBOL_GPL vmlinux 0x282cdabc usb_led_activity +EXPORT_SYMBOL_GPL vmlinux 0x284819f6 ata_port_desc +EXPORT_SYMBOL_GPL vmlinux 0x284c3589 init_uts_ns +EXPORT_SYMBOL_GPL vmlinux 0x285b9cfa skb_to_sgvec_nomark +EXPORT_SYMBOL_GPL vmlinux 0x28674982 vfs_kern_mount +EXPORT_SYMBOL_GPL vmlinux 0x286e94cd pinctrl_utils_add_map_mux +EXPORT_SYMBOL_GPL vmlinux 0x2877f3d6 extcon_unregister_interest +EXPORT_SYMBOL_GPL vmlinux 0x289d1c3e usbnet_tx_timeout +EXPORT_SYMBOL_GPL vmlinux 0x28be8d64 power_supply_changed +EXPORT_SYMBOL_GPL vmlinux 0x28e7b9a5 ata_sff_queue_pio_task +EXPORT_SYMBOL_GPL vmlinux 0x293c5d06 rhashtable_init +EXPORT_SYMBOL_GPL vmlinux 0x29493c3d sysfs_create_groups +EXPORT_SYMBOL_GPL vmlinux 0x295ad336 kthread_unpark +EXPORT_SYMBOL_GPL vmlinux 0x295ec84a wm5102_spi_regmap +EXPORT_SYMBOL_GPL vmlinux 0x29703b80 da903x_reads +EXPORT_SYMBOL_GPL vmlinux 0x297f3d98 extcon_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x29839da9 regulator_get_voltage +EXPORT_SYMBOL_GPL vmlinux 0x299046c9 devm_phy_get +EXPORT_SYMBOL_GPL vmlinux 0x29ae263e device_create_vargs +EXPORT_SYMBOL_GPL vmlinux 0x29ba4e36 vchan_dma_desc_free_list +EXPORT_SYMBOL_GPL vmlinux 0x29c2317a vfs_test_lock +EXPORT_SYMBOL_GPL vmlinux 0x29d537ce snd_compress_register +EXPORT_SYMBOL_GPL vmlinux 0x29fa419f decode_rs8 +EXPORT_SYMBOL_GPL vmlinux 0x2a00a4b4 usb_queue_reset_device +EXPORT_SYMBOL_GPL vmlinux 0x2a1da4df usb_lock_device_for_reset +EXPORT_SYMBOL_GPL vmlinux 0x2a2818b7 cpufreq_cpu_put +EXPORT_SYMBOL_GPL vmlinux 0x2a3e2494 napi_hash_del +EXPORT_SYMBOL_GPL vmlinux 0x2a405c55 ip_tunnel_get_stats64 +EXPORT_SYMBOL_GPL vmlinux 0x2a49101c __fsnotify_parent +EXPORT_SYMBOL_GPL vmlinux 0x2a678a13 __suspend_report_result +EXPORT_SYMBOL_GPL vmlinux 0x2a76159a sysfs_create_link +EXPORT_SYMBOL_GPL vmlinux 0x2aa1d71d crypto_alloc_aead +EXPORT_SYMBOL_GPL vmlinux 0x2aabf3b9 devm_phy_destroy +EXPORT_SYMBOL_GPL vmlinux 0x2aae43f7 __srcu_read_lock +EXPORT_SYMBOL_GPL vmlinux 0x2ac3f4e3 br_fdb_test_addr_hook +EXPORT_SYMBOL_GPL vmlinux 0x2ad9d326 md_ack_all_badblocks +EXPORT_SYMBOL_GPL vmlinux 0x2ae34b4b list_lru_destroy +EXPORT_SYMBOL_GPL vmlinux 0x2af61d6c dev_attr_em_message_type +EXPORT_SYMBOL_GPL vmlinux 0x2b251cab dma_release_channel +EXPORT_SYMBOL_GPL vmlinux 0x2b3d3ae0 tcp_twsk_destructor +EXPORT_SYMBOL_GPL vmlinux 0x2b4b9706 __of_phy_provider_register +EXPORT_SYMBOL_GPL vmlinux 0x2b7e80a1 regulator_get_current_limit +EXPORT_SYMBOL_GPL vmlinux 0x2b83a26c md_stop_writes +EXPORT_SYMBOL_GPL vmlinux 0x2b952517 clk_has_parent +EXPORT_SYMBOL_GPL vmlinux 0x2b95d0ed i2c_adapter_type +EXPORT_SYMBOL_GPL vmlinux 0x2babe81f __wake_up_sync_key +EXPORT_SYMBOL_GPL vmlinux 0x2bf41b55 ipv6_stub +EXPORT_SYMBOL_GPL vmlinux 0x2c0794ab devm_regulator_get +EXPORT_SYMBOL_GPL vmlinux 0x2c133868 bit_wait_io_timeout +EXPORT_SYMBOL_GPL vmlinux 0x2c173673 kernfs_put +EXPORT_SYMBOL_GPL vmlinux 0x2c2077d5 __platform_create_bundle +EXPORT_SYMBOL_GPL vmlinux 0x2c208607 power_supply_is_system_supplied +EXPORT_SYMBOL_GPL vmlinux 0x2c244cfd regmap_fields_write +EXPORT_SYMBOL_GPL vmlinux 0x2c262690 wakeup_source_prepare +EXPORT_SYMBOL_GPL vmlinux 0x2c3054f9 net_inc_ingress_queue +EXPORT_SYMBOL_GPL vmlinux 0x2c460093 transport_configure_device +EXPORT_SYMBOL_GPL vmlinux 0x2c5c184e regmap_fields_read +EXPORT_SYMBOL_GPL vmlinux 0x2c73d50a extcon_get_cable_state +EXPORT_SYMBOL_GPL vmlinux 0x2c7db649 irq_dispose_mapping +EXPORT_SYMBOL_GPL vmlinux 0x2c97f8a2 of_reconfig_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x2c9b3eee rhashtable_walk_start +EXPORT_SYMBOL_GPL vmlinux 0x2ca9a502 tcp_get_info +EXPORT_SYMBOL_GPL vmlinux 0x2caa3597 snd_soc_component_read +EXPORT_SYMBOL_GPL vmlinux 0x2cc78e72 devres_close_group +EXPORT_SYMBOL_GPL vmlinux 0x2ce98559 kcrypto_wq +EXPORT_SYMBOL_GPL vmlinux 0x2cea32ee unregister_oldmem_pfn_is_ram +EXPORT_SYMBOL_GPL vmlinux 0x2d194f01 wm8400_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x2d1b02d2 usermodehelper_read_lock_wait +EXPORT_SYMBOL_GPL vmlinux 0x2d4034ec yield_to +EXPORT_SYMBOL_GPL vmlinux 0x2d41e6f5 __trace_puts +EXPORT_SYMBOL_GPL vmlinux 0x2d4a08c5 regmap_init_spi +EXPORT_SYMBOL_GPL vmlinux 0x2d4f7e04 ata_host_init +EXPORT_SYMBOL_GPL vmlinux 0x2d5895f4 i2c_slave_unregister +EXPORT_SYMBOL_GPL vmlinux 0x2d59c954 edac_handlers +EXPORT_SYMBOL_GPL vmlinux 0x2d609a50 sock_diag_unregister +EXPORT_SYMBOL_GPL vmlinux 0x2d967ffa i2c_slave_register +EXPORT_SYMBOL_GPL vmlinux 0x2dad9b05 register_jprobes +EXPORT_SYMBOL_GPL vmlinux 0x2dbd6540 platform_device_put +EXPORT_SYMBOL_GPL vmlinux 0x2dbe303e spi_bus_unlock +EXPORT_SYMBOL_GPL vmlinux 0x2dc318a3 of_clk_get_parent_count +EXPORT_SYMBOL_GPL vmlinux 0x2dd382e6 dev_pm_set_dedicated_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0x2ddc71d3 blk_queue_flush_queueable +EXPORT_SYMBOL_GPL vmlinux 0x2dde2309 blk_rq_check_limits +EXPORT_SYMBOL_GPL vmlinux 0x2de7af4d ip_route_output_flow +EXPORT_SYMBOL_GPL vmlinux 0x2e03ecb0 _submit_bh +EXPORT_SYMBOL_GPL vmlinux 0x2e2360b1 ftrace_set_global_notrace +EXPORT_SYMBOL_GPL vmlinux 0x2e2f1740 ring_buffer_record_disable_cpu +EXPORT_SYMBOL_GPL vmlinux 0x2e40598b regmap_attach_dev +EXPORT_SYMBOL_GPL vmlinux 0x2e49f07d eventfd_ctx_fileget +EXPORT_SYMBOL_GPL vmlinux 0x2e4d1e53 ata_timing_compute +EXPORT_SYMBOL_GPL vmlinux 0x2e760ace snd_soc_new_ac97_codec +EXPORT_SYMBOL_GPL vmlinux 0x2e7e970d led_trigger_remove +EXPORT_SYMBOL_GPL vmlinux 0x2e890e2e pinctrl_utils_add_config +EXPORT_SYMBOL_GPL vmlinux 0x2e8d701e regulator_bulk_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x2e9670c0 pl320_ipc_transmit +EXPORT_SYMBOL_GPL vmlinux 0x2e9e7e30 regmap_add_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0x2ebe3135 cpu_is_hotpluggable +EXPORT_SYMBOL_GPL vmlinux 0x2ec3cbd8 devm_power_supply_get_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0x2ecc13c9 get_task_pid +EXPORT_SYMBOL_GPL vmlinux 0x2ecfd9c5 hwmon_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x2ef6b5bf smp_call_function_any +EXPORT_SYMBOL_GPL vmlinux 0x2f050da5 device_property_read_string_array +EXPORT_SYMBOL_GPL vmlinux 0x2f0d9053 usb_otg_state_string +EXPORT_SYMBOL_GPL vmlinux 0x2f3efaf6 aead_register_instance +EXPORT_SYMBOL_GPL vmlinux 0x2f4113a2 dcookie_register +EXPORT_SYMBOL_GPL vmlinux 0x2f5d189d crypto_unregister_shash +EXPORT_SYMBOL_GPL vmlinux 0x2f8146b9 regulator_count_voltages +EXPORT_SYMBOL_GPL vmlinux 0x2f8823a1 hid_field_extract +EXPORT_SYMBOL_GPL vmlinux 0x2f8b9231 ata_eh_thaw_port +EXPORT_SYMBOL_GPL vmlinux 0x2f90da7e trace_seq_putmem +EXPORT_SYMBOL_GPL vmlinux 0x2f985184 usbnet_set_msglevel +EXPORT_SYMBOL_GPL vmlinux 0x2f9b561d __blk_run_queue_uncond +EXPORT_SYMBOL_GPL vmlinux 0x2fc3a789 gpiod_set_raw_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x2fc7b541 hwrng_register +EXPORT_SYMBOL_GPL vmlinux 0x2fd8cba9 freeze_wake +EXPORT_SYMBOL_GPL vmlinux 0x2fdafeaf gpiod_set_debounce +EXPORT_SYMBOL_GPL vmlinux 0x2fdbaa90 hrtimer_active +EXPORT_SYMBOL_GPL vmlinux 0x3005991e crypto_alloc_pcomp +EXPORT_SYMBOL_GPL vmlinux 0x300d7e57 free_rs +EXPORT_SYMBOL_GPL vmlinux 0x302add0c regulator_get_bypass_regmap +EXPORT_SYMBOL_GPL vmlinux 0x305a298b perf_event_disable +EXPORT_SYMBOL_GPL vmlinux 0x30693bb7 imx_audmux_v1_configure_port +EXPORT_SYMBOL_GPL vmlinux 0x306f3ed3 regulator_get_linear_step +EXPORT_SYMBOL_GPL vmlinux 0x309873e0 __pm_runtime_suspend +EXPORT_SYMBOL_GPL vmlinux 0x30a4f4ca bstr_printf +EXPORT_SYMBOL_GPL vmlinux 0x30ab162f inet6_sk_rebuild_header +EXPORT_SYMBOL_GPL vmlinux 0x30ceade4 dm_internal_resume +EXPORT_SYMBOL_GPL vmlinux 0x30de8246 ahci_platform_suspend +EXPORT_SYMBOL_GPL vmlinux 0x30df483a driver_create_file +EXPORT_SYMBOL_GPL vmlinux 0x30f4f800 ata_sas_slave_configure +EXPORT_SYMBOL_GPL vmlinux 0x3109b751 cpu_clock +EXPORT_SYMBOL_GPL vmlinux 0x31266931 con_debug_leave +EXPORT_SYMBOL_GPL vmlinux 0x3147e1f4 inet6_lookup_listener +EXPORT_SYMBOL_GPL vmlinux 0x3156e52c gpiochip_unlock_as_irq +EXPORT_SYMBOL_GPL vmlinux 0x31714a7c snd_card_add_dev_attr +EXPORT_SYMBOL_GPL vmlinux 0x3178cdd8 ata_do_eh +EXPORT_SYMBOL_GPL vmlinux 0x317c389b setup_irq +EXPORT_SYMBOL_GPL vmlinux 0x3180ed6c debugfs_create_u16 +EXPORT_SYMBOL_GPL vmlinux 0x318b3726 blk_mq_free_request +EXPORT_SYMBOL_GPL vmlinux 0x31c0c2d1 dm_put +EXPORT_SYMBOL_GPL vmlinux 0x31d7842a seq_open_net +EXPORT_SYMBOL_GPL vmlinux 0x31ed552c mtd_point +EXPORT_SYMBOL_GPL vmlinux 0x31fd5d69 debugfs_create_x32 +EXPORT_SYMBOL_GPL vmlinux 0x32118124 of_dma_controller_free +EXPORT_SYMBOL_GPL vmlinux 0x32290419 of_property_read_u16_array +EXPORT_SYMBOL_GPL vmlinux 0x324a001a snd_soc_put_volsw_sx +EXPORT_SYMBOL_GPL vmlinux 0x324ee19a usb_hub_clear_tt_buffer +EXPORT_SYMBOL_GPL vmlinux 0x327aa0db input_class +EXPORT_SYMBOL_GPL vmlinux 0x32856935 regulator_set_voltage +EXPORT_SYMBOL_GPL vmlinux 0x328995b5 tracing_generic_entry_update +EXPORT_SYMBOL_GPL vmlinux 0x32a6f3a9 sysfs_remove_link +EXPORT_SYMBOL_GPL vmlinux 0x32b2e626 devm_regmap_init_mmio_clk +EXPORT_SYMBOL_GPL vmlinux 0x32b718df dev_pm_qos_expose_latency_limit +EXPORT_SYMBOL_GPL vmlinux 0x32c3cb4e class_compat_register +EXPORT_SYMBOL_GPL vmlinux 0x32db8bad of_resolve_phandles +EXPORT_SYMBOL_GPL vmlinux 0x32dc33ac regulator_set_voltage_sel_regmap +EXPORT_SYMBOL_GPL vmlinux 0x32e0e91d driver_attach +EXPORT_SYMBOL_GPL vmlinux 0x32e891ed dev_pm_qos_add_request +EXPORT_SYMBOL_GPL vmlinux 0x32ed935c hid_add_device +EXPORT_SYMBOL_GPL vmlinux 0x3307399b usbnet_get_settings +EXPORT_SYMBOL_GPL vmlinux 0x33166fee snd_soc_lookup_platform +EXPORT_SYMBOL_GPL vmlinux 0x331d798c mbox_client_peek_data +EXPORT_SYMBOL_GPL vmlinux 0x335c570f enable_percpu_irq +EXPORT_SYMBOL_GPL vmlinux 0x335fc03b clk_gpio_gate_ops +EXPORT_SYMBOL_GPL vmlinux 0x336154ca rcutorture_record_test_transition +EXPORT_SYMBOL_GPL vmlinux 0x33750b7c adp5520_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x33797bee alarm_start_relative +EXPORT_SYMBOL_GPL vmlinux 0x3386c731 scsi_target_unblock +EXPORT_SYMBOL_GPL vmlinux 0x338900c7 pinctrl_dev_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x3391105b power_supply_set_battery_charged +EXPORT_SYMBOL_GPL vmlinux 0x33abfe0d ahci_qc_issue +EXPORT_SYMBOL_GPL vmlinux 0x33dd03b2 crypto_spawn_tfm2 +EXPORT_SYMBOL_GPL vmlinux 0x33e2e501 extcon_set_cable_state_ +EXPORT_SYMBOL_GPL vmlinux 0x33f53f63 devm_phy_put +EXPORT_SYMBOL_GPL vmlinux 0x340112f8 regulator_unregister +EXPORT_SYMBOL_GPL vmlinux 0x3402a3eb led_trigger_rename_static +EXPORT_SYMBOL_GPL vmlinux 0x340d1ead pwm_enable +EXPORT_SYMBOL_GPL vmlinux 0x341729ba devfreq_event_remove_edev +EXPORT_SYMBOL_GPL vmlinux 0x341e0f1f i2c_generic_gpio_recovery +EXPORT_SYMBOL_GPL vmlinux 0x347682ce snmp_fold_field64 +EXPORT_SYMBOL_GPL vmlinux 0x347fd4b3 eventfd_ctx_get +EXPORT_SYMBOL_GPL vmlinux 0x348ba156 sk_detach_filter +EXPORT_SYMBOL_GPL vmlinux 0x34a9b966 devfreq_event_set_event +EXPORT_SYMBOL_GPL vmlinux 0x34bd0126 usb_stor_adjust_quirks +EXPORT_SYMBOL_GPL vmlinux 0x34beb9b0 uprobe_register +EXPORT_SYMBOL_GPL vmlinux 0x34c4ac0c __mnt_is_readonly +EXPORT_SYMBOL_GPL vmlinux 0x34e2d91a tty_buffer_request_room +EXPORT_SYMBOL_GPL vmlinux 0x34f4fab5 ata_host_activate +EXPORT_SYMBOL_GPL vmlinux 0x35176301 rcu_batches_completed_sched +EXPORT_SYMBOL_GPL vmlinux 0x3528f77b usb_sg_init +EXPORT_SYMBOL_GPL vmlinux 0x354a07c9 regmap_get_reg_stride +EXPORT_SYMBOL_GPL vmlinux 0x35591d9d blocking_notifier_chain_cond_register +EXPORT_SYMBOL_GPL vmlinux 0x357436f6 hidraw_disconnect +EXPORT_SYMBOL_GPL vmlinux 0x358475fb nfq_ct_hook +EXPORT_SYMBOL_GPL vmlinux 0x358ff60f twl_get_hfclk_rate +EXPORT_SYMBOL_GPL vmlinux 0x35d45675 use_mm +EXPORT_SYMBOL_GPL vmlinux 0x35dcd1f7 trace_seq_vprintf +EXPORT_SYMBOL_GPL vmlinux 0x35f10f43 nfq_ct_nat_hook +EXPORT_SYMBOL_GPL vmlinux 0x3617b22c sysfs_create_file_ns +EXPORT_SYMBOL_GPL vmlinux 0x361e2bcc save_stack_trace +EXPORT_SYMBOL_GPL vmlinux 0x36319b0f pm_runtime_set_memalloc_noio +EXPORT_SYMBOL_GPL vmlinux 0x363fb4c0 skb_partial_csum_set +EXPORT_SYMBOL_GPL vmlinux 0x36401eeb bcm_dma_chan_alloc +EXPORT_SYMBOL_GPL vmlinux 0x365eca34 inet_csk_listen_start +EXPORT_SYMBOL_GPL vmlinux 0x365f1de2 usb_disable_lpm +EXPORT_SYMBOL_GPL vmlinux 0x367a22db crypto_unregister_aead +EXPORT_SYMBOL_GPL vmlinux 0x367c4a76 relay_open +EXPORT_SYMBOL_GPL vmlinux 0x36824f15 blk_queue_rq_timed_out +EXPORT_SYMBOL_GPL vmlinux 0x369fcd70 tracing_snapshot +EXPORT_SYMBOL_GPL vmlinux 0x36a0f6e4 sysfs_remove_groups +EXPORT_SYMBOL_GPL vmlinux 0x36b1487e dev_coredumpm +EXPORT_SYMBOL_GPL vmlinux 0x36bda7b0 cpuidle_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0x36d64053 lp8788_read_multi_bytes +EXPORT_SYMBOL_GPL vmlinux 0x36dab97f trace_clock_jiffies +EXPORT_SYMBOL_GPL vmlinux 0x36dd0fbd usb_store_new_id +EXPORT_SYMBOL_GPL vmlinux 0x3700bb40 dev_pm_opp_free_cpufreq_table +EXPORT_SYMBOL_GPL vmlinux 0x3714767e devfreq_event_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0x371f225d gpiod_set_raw_array_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x371f2d18 class_interface_unregister +EXPORT_SYMBOL_GPL vmlinux 0x37246ed2 mpc8xxx_spi_tx_buf_u32 +EXPORT_SYMBOL_GPL vmlinux 0x37279653 usb_get_phy_dev +EXPORT_SYMBOL_GPL vmlinux 0x374ae7de xfrm_audit_policy_delete +EXPORT_SYMBOL_GPL vmlinux 0x3778152f subsys_virtual_register +EXPORT_SYMBOL_GPL vmlinux 0x37794526 replace_page_cache_page +EXPORT_SYMBOL_GPL vmlinux 0x37886af1 dt_init_idle_driver +EXPORT_SYMBOL_GPL vmlinux 0x378b77ce tcp_reno_ssthresh +EXPORT_SYMBOL_GPL vmlinux 0x37be2794 snd_soc_get_strobe +EXPORT_SYMBOL_GPL vmlinux 0x37c40ef5 of_usb_host_tpl_support +EXPORT_SYMBOL_GPL vmlinux 0x37f82ecc ata_link_abort +EXPORT_SYMBOL_GPL vmlinux 0x3806a8f6 sdhci_alloc_host +EXPORT_SYMBOL_GPL vmlinux 0x382aef34 sysfs_remove_group +EXPORT_SYMBOL_GPL vmlinux 0x384e5604 usb_stor_host_template_init +EXPORT_SYMBOL_GPL vmlinux 0x385696f1 snd_soc_info_volsw_sx +EXPORT_SYMBOL_GPL vmlinux 0x38639300 of_overlay_destroy +EXPORT_SYMBOL_GPL vmlinux 0x386afcde snd_soc_of_parse_audio_routing +EXPORT_SYMBOL_GPL vmlinux 0x387e433b snd_soc_jack_get_type +EXPORT_SYMBOL_GPL vmlinux 0x38828e0d inet_twsk_alloc +EXPORT_SYMBOL_GPL vmlinux 0x3885b80b snd_pcm_lib_default_mmap +EXPORT_SYMBOL_GPL vmlinux 0x38a9c2c7 input_ff_effect_from_user +EXPORT_SYMBOL_GPL vmlinux 0x38b60278 disk_part_iter_next +EXPORT_SYMBOL_GPL vmlinux 0x38bfb44f crypto_unregister_shashes +EXPORT_SYMBOL_GPL vmlinux 0x38cdd12f devm_regulator_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x38d1b269 phy_destroy +EXPORT_SYMBOL_GPL vmlinux 0x38d550f7 rpi_firmware_property_list +EXPORT_SYMBOL_GPL vmlinux 0x38d65386 is_skb_forwardable +EXPORT_SYMBOL_GPL vmlinux 0x38e5bc5a clk_set_rate_range +EXPORT_SYMBOL_GPL vmlinux 0x38faaf2d usb_phy_generic_register +EXPORT_SYMBOL_GPL vmlinux 0x3907eb27 crypto_find_alg +EXPORT_SYMBOL_GPL vmlinux 0x390c72dd usb_bulk_msg +EXPORT_SYMBOL_GPL vmlinux 0x3948a1bf sdhci_pltfm_init +EXPORT_SYMBOL_GPL vmlinux 0x3968b32b gpiod_export +EXPORT_SYMBOL_GPL vmlinux 0x398cf96d mtd_block_isbad +EXPORT_SYMBOL_GPL vmlinux 0x398fd8a9 arizona_set_irq_wake +EXPORT_SYMBOL_GPL vmlinux 0x39b404fa regmap_multi_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x39ca07cc maxim_charger_calc_reg_current +EXPORT_SYMBOL_GPL vmlinux 0x39db9597 usb_free_coherent +EXPORT_SYMBOL_GPL vmlinux 0x39e61495 nf_logger_request_module +EXPORT_SYMBOL_GPL vmlinux 0x39fc88a4 hid_dump_input +EXPORT_SYMBOL_GPL vmlinux 0x3a1b7cf3 devm_extcon_dev_free +EXPORT_SYMBOL_GPL vmlinux 0x3a26ed11 sched_clock +EXPORT_SYMBOL_GPL vmlinux 0x3a4f6a32 ata_sff_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x3a536bd7 ring_buffer_read_finish +EXPORT_SYMBOL_GPL vmlinux 0x3a5ff0aa ping_get_port +EXPORT_SYMBOL_GPL vmlinux 0x3a88f9f3 snd_soc_dpcm_be_can_update +EXPORT_SYMBOL_GPL vmlinux 0x3a9be019 asymmetric_key_id_partial +EXPORT_SYMBOL_GPL vmlinux 0x3abf6806 usb_poison_urb +EXPORT_SYMBOL_GPL vmlinux 0x3acdf325 twl4030_audio_enable_resource +EXPORT_SYMBOL_GPL vmlinux 0x3ad6f0d9 usbnet_get_ethernet_addr +EXPORT_SYMBOL_GPL vmlinux 0x3ae01bd7 mmc_get_ext_csd +EXPORT_SYMBOL_GPL vmlinux 0x3ae20809 serial8250_rpm_get +EXPORT_SYMBOL_GPL vmlinux 0x3b0236a4 swiotlb_map_page +EXPORT_SYMBOL_GPL vmlinux 0x3b085e81 dev_pm_set_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0x3b098510 tps6586x_get_version +EXPORT_SYMBOL_GPL vmlinux 0x3b203fcd crypto_alg_lookup +EXPORT_SYMBOL_GPL vmlinux 0x3b226de1 pinconf_generic_dt_node_to_map +EXPORT_SYMBOL_GPL vmlinux 0x3b230bb5 snd_soc_dapm_nc_pin_unlocked +EXPORT_SYMBOL_GPL vmlinux 0x3b2cb9a1 device_create_bin_file +EXPORT_SYMBOL_GPL vmlinux 0x3b2d5b43 regulator_bulk_enable +EXPORT_SYMBOL_GPL vmlinux 0x3b4bd9dc __clk_determine_rate +EXPORT_SYMBOL_GPL vmlinux 0x3b6e5306 regulator_bulk_disable +EXPORT_SYMBOL_GPL vmlinux 0x3b7f363d snd_pcm_stream_unlock +EXPORT_SYMBOL_GPL vmlinux 0x3b8e6a45 snd_dmaengine_pcm_prepare_slave_config +EXPORT_SYMBOL_GPL vmlinux 0x3be02590 usb_unpoison_urb +EXPORT_SYMBOL_GPL vmlinux 0x3bfd0e16 add_disk_randomness +EXPORT_SYMBOL_GPL vmlinux 0x3c07fba5 max8997_write_reg +EXPORT_SYMBOL_GPL vmlinux 0x3c114cef md_kick_rdev_from_array +EXPORT_SYMBOL_GPL vmlinux 0x3c184c6e inet_twsk_put +EXPORT_SYMBOL_GPL vmlinux 0x3c38815f sdhci_pltfm_register +EXPORT_SYMBOL_GPL vmlinux 0x3c4a5811 devm_kasprintf +EXPORT_SYMBOL_GPL vmlinux 0x3c5941d8 gpiod_direction_input +EXPORT_SYMBOL_GPL vmlinux 0x3c831441 arm_check_condition +EXPORT_SYMBOL_GPL vmlinux 0x3c93ea25 trace_seq_printf +EXPORT_SYMBOL_GPL vmlinux 0x3ca72ee5 usbnet_open +EXPORT_SYMBOL_GPL vmlinux 0x3cad7863 tracepoint_probe_register +EXPORT_SYMBOL_GPL vmlinux 0x3cd06035 add_input_randomness +EXPORT_SYMBOL_GPL vmlinux 0x3ceade33 usbnet_change_mtu +EXPORT_SYMBOL_GPL vmlinux 0x3d284c5a regmap_field_free +EXPORT_SYMBOL_GPL vmlinux 0x3d2c43bc ata_sff_busy_sleep +EXPORT_SYMBOL_GPL vmlinux 0x3d388324 dpm_resume_end +EXPORT_SYMBOL_GPL vmlinux 0x3d433231 ahci_platform_disable_clks +EXPORT_SYMBOL_GPL vmlinux 0x3d468e74 sdio_memcpy_fromio +EXPORT_SYMBOL_GPL vmlinux 0x3d648a6e usb_stor_pre_reset +EXPORT_SYMBOL_GPL vmlinux 0x3d66b088 blk_queue_bypass_end +EXPORT_SYMBOL_GPL vmlinux 0x3d6ce8c6 sock_diag_register +EXPORT_SYMBOL_GPL vmlinux 0x3d6d0d58 wm5110_revd_irq +EXPORT_SYMBOL_GPL vmlinux 0x3d77829f device_pm_wait_for_dev +EXPORT_SYMBOL_GPL vmlinux 0x3d9668d3 input_ff_event +EXPORT_SYMBOL_GPL vmlinux 0x3db25b1a __get_mtd_device +EXPORT_SYMBOL_GPL vmlinux 0x3db91586 scatterwalk_done +EXPORT_SYMBOL_GPL vmlinux 0x3dc526a9 arizona_of_match +EXPORT_SYMBOL_GPL vmlinux 0x3dc916b6 crypto_fl_tab +EXPORT_SYMBOL_GPL vmlinux 0x3dcdd092 tpm2_calc_ordinal_duration +EXPORT_SYMBOL_GPL vmlinux 0x3dd4d3a7 bprintf +EXPORT_SYMBOL_GPL vmlinux 0x3dd8181e __clk_get_parent +EXPORT_SYMBOL_GPL vmlinux 0x3de9cae1 crypto_remove_final +EXPORT_SYMBOL_GPL vmlinux 0x3dfd8886 snd_soc_put_strobe +EXPORT_SYMBOL_GPL vmlinux 0x3e0c032e module_mutex +EXPORT_SYMBOL_GPL vmlinux 0x3e37b656 bpf_prog_put +EXPORT_SYMBOL_GPL vmlinux 0x3e410620 unregister_kprobes +EXPORT_SYMBOL_GPL vmlinux 0x3e4d7840 platform_device_del +EXPORT_SYMBOL_GPL vmlinux 0x3e5e1937 rcu_batches_started_sched +EXPORT_SYMBOL_GPL vmlinux 0x3e7080cb mpi_read_from_buffer +EXPORT_SYMBOL_GPL vmlinux 0x3eabac35 bitmap_copy_from_slot +EXPORT_SYMBOL_GPL vmlinux 0x3eb98e52 device_init_wakeup +EXPORT_SYMBOL_GPL vmlinux 0x3ecdddc7 sata_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x3ee41fc4 tty_mode_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x3eec7ce2 __udp6_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x3efb35c9 get_online_cpus +EXPORT_SYMBOL_GPL vmlinux 0x3f1b8ba8 sata_scr_write_flush +EXPORT_SYMBOL_GPL vmlinux 0x3f34fdfd rtnl_link_unregister +EXPORT_SYMBOL_GPL vmlinux 0x3f6b4cdf alloc_page_buffers +EXPORT_SYMBOL_GPL vmlinux 0x3f8b1891 blk_rq_err_bytes +EXPORT_SYMBOL_GPL vmlinux 0x3f95f9d7 devm_usb_get_phy_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0x3fb386e3 syscon_node_to_regmap +EXPORT_SYMBOL_GPL vmlinux 0x3fba9699 get_net_ns_by_pid +EXPORT_SYMBOL_GPL vmlinux 0x3fbaf27c ata_port_abort +EXPORT_SYMBOL_GPL vmlinux 0x3fcf8bc3 bus_find_device_by_name +EXPORT_SYMBOL_GPL vmlinux 0x4005c476 stmpe_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x403b2f43 snd_soc_put_volsw +EXPORT_SYMBOL_GPL vmlinux 0x403f9529 gpio_request_one +EXPORT_SYMBOL_GPL vmlinux 0x4045c494 filter_match_preds +EXPORT_SYMBOL_GPL vmlinux 0x405ca9b4 usb_unlocked_enable_lpm +EXPORT_SYMBOL_GPL vmlinux 0x4065d168 pm_print_active_wakeup_sources +EXPORT_SYMBOL_GPL vmlinux 0x406c4cb1 hrtimer_resolution +EXPORT_SYMBOL_GPL vmlinux 0x4070f01c crypto_register_instance +EXPORT_SYMBOL_GPL vmlinux 0x40771ce7 sk_setup_caps +EXPORT_SYMBOL_GPL vmlinux 0x4079a977 of_dma_router_register +EXPORT_SYMBOL_GPL vmlinux 0x408a14df alarmtimer_get_rtcdev +EXPORT_SYMBOL_GPL vmlinux 0x4092522d trace_event_raw_init +EXPORT_SYMBOL_GPL vmlinux 0x40959605 vfs_truncate +EXPORT_SYMBOL_GPL vmlinux 0x40abfa54 __srcu_read_unlock +EXPORT_SYMBOL_GPL vmlinux 0x40af0dec ata_xfer_mode2mask +EXPORT_SYMBOL_GPL vmlinux 0x40d46b21 crypto_ft_tab +EXPORT_SYMBOL_GPL vmlinux 0x40ee8eb4 regulator_allow_bypass +EXPORT_SYMBOL_GPL vmlinux 0x40f06283 stmpe_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x40f0683e reset_control_put +EXPORT_SYMBOL_GPL vmlinux 0x411eae35 __pm_wakeup_event +EXPORT_SYMBOL_GPL vmlinux 0x414172f5 extcon_get_extcon_dev +EXPORT_SYMBOL_GPL vmlinux 0x41482238 ahci_check_ready +EXPORT_SYMBOL_GPL vmlinux 0x415f678f regulator_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x416e2ef2 subsys_dev_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x41721615 regmap_get_val_bytes +EXPORT_SYMBOL_GPL vmlinux 0x41814cb8 dirty_writeback_interval +EXPORT_SYMBOL_GPL vmlinux 0x4181679a posix_timer_event +EXPORT_SYMBOL_GPL vmlinux 0x41870908 sdev_evt_send_simple +EXPORT_SYMBOL_GPL vmlinux 0x41c22940 sdio_writesb +EXPORT_SYMBOL_GPL vmlinux 0x41cbcf34 cpufreq_cpu_get +EXPORT_SYMBOL_GPL vmlinux 0x41f2abbb usb_create_hcd +EXPORT_SYMBOL_GPL vmlinux 0x41f2e861 of_clk_src_simple_get +EXPORT_SYMBOL_GPL vmlinux 0x41fb9363 sysfs_remove_file_from_group +EXPORT_SYMBOL_GPL vmlinux 0x4205ad24 cancel_work_sync +EXPORT_SYMBOL_GPL vmlinux 0x42247240 vchan_tx_submit +EXPORT_SYMBOL_GPL vmlinux 0x42290dd7 device_create +EXPORT_SYMBOL_GPL vmlinux 0x4268cdb9 devm_kmalloc +EXPORT_SYMBOL_GPL vmlinux 0x426a0db9 relay_close +EXPORT_SYMBOL_GPL vmlinux 0x426e6475 gpiod_direction_output +EXPORT_SYMBOL_GPL vmlinux 0x4270e7a3 sm501_find_clock +EXPORT_SYMBOL_GPL vmlinux 0x42739ca9 key_type_trusted +EXPORT_SYMBOL_GPL vmlinux 0x42825ce2 rcu_scheduler_active +EXPORT_SYMBOL_GPL vmlinux 0x42bd3637 usb_interrupt_msg +EXPORT_SYMBOL_GPL vmlinux 0x42f1de6c gpiochip_free_own_desc +EXPORT_SYMBOL_GPL vmlinux 0x42faf2de mddev_suspend +EXPORT_SYMBOL_GPL vmlinux 0x4305bf33 inet6_csk_xmit +EXPORT_SYMBOL_GPL vmlinux 0x431bf93c wm5110_irq +EXPORT_SYMBOL_GPL vmlinux 0x432bff91 ata_do_set_mode +EXPORT_SYMBOL_GPL vmlinux 0x435999ea sdhci_suspend_host +EXPORT_SYMBOL_GPL vmlinux 0x43a53735 __alloc_workqueue_key +EXPORT_SYMBOL_GPL vmlinux 0x43c183e4 snd_soc_register_card +EXPORT_SYMBOL_GPL vmlinux 0x43d55710 crypto_register_aead +EXPORT_SYMBOL_GPL vmlinux 0x43efc106 sdio_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0x43f32f6f gpio_to_desc +EXPORT_SYMBOL_GPL vmlinux 0x43f56e82 ata_xfer_mode2shift +EXPORT_SYMBOL_GPL vmlinux 0x43f81957 clk_round_rate +EXPORT_SYMBOL_GPL vmlinux 0x4425c7ac root_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x4435b85c mmc_regulator_get_supply +EXPORT_SYMBOL_GPL vmlinux 0x44392bc8 blkcipher_walk_phys +EXPORT_SYMBOL_GPL vmlinux 0x4445f6e7 usb_hub_find_child +EXPORT_SYMBOL_GPL vmlinux 0x444c056f ata_bmdma_status +EXPORT_SYMBOL_GPL vmlinux 0x444f1735 cpu_pm_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x4457f606 rt_mutex_lock_interruptible +EXPORT_SYMBOL_GPL vmlinux 0x44586050 powercap_register_control_type +EXPORT_SYMBOL_GPL vmlinux 0x445f4e94 sync_page_io +EXPORT_SYMBOL_GPL vmlinux 0x447a2d79 regmap_raw_read +EXPORT_SYMBOL_GPL vmlinux 0x4484a5a4 wait_for_device_probe +EXPORT_SYMBOL_GPL vmlinux 0x448bcd32 spi_master_resume +EXPORT_SYMBOL_GPL vmlinux 0x44a48697 snd_soc_poweroff +EXPORT_SYMBOL_GPL vmlinux 0x44ad6e79 ata_sff_prereset +EXPORT_SYMBOL_GPL vmlinux 0x44d20ae4 led_sysfs_disable +EXPORT_SYMBOL_GPL vmlinux 0x44da64ac snd_soc_runtime_set_dai_fmt +EXPORT_SYMBOL_GPL vmlinux 0x44e848ba platform_device_alloc +EXPORT_SYMBOL_GPL vmlinux 0x44eba502 scsi_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x44f22e3d component_unbind_all +EXPORT_SYMBOL_GPL vmlinux 0x4509f8f3 devm_hwmon_device_register_with_groups +EXPORT_SYMBOL_GPL vmlinux 0x45500d12 rtc_irq_unregister +EXPORT_SYMBOL_GPL vmlinux 0x457594fa crypto_alg_list +EXPORT_SYMBOL_GPL vmlinux 0x45840406 usb_disable_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0x4588275d snd_soc_platform_read +EXPORT_SYMBOL_GPL vmlinux 0x458fa1e3 sdio_run_irqs +EXPORT_SYMBOL_GPL vmlinux 0x45bf1ff3 crypto_inc +EXPORT_SYMBOL_GPL vmlinux 0x45c3ea21 fl6_merge_options +EXPORT_SYMBOL_GPL vmlinux 0x45d625f1 cpufreq_frequency_table_verify +EXPORT_SYMBOL_GPL vmlinux 0x45edd60d ip6_flush_pending_frames +EXPORT_SYMBOL_GPL vmlinux 0x45f5ff0c crypto_aead_type +EXPORT_SYMBOL_GPL vmlinux 0x46013233 net_dec_ingress_queue +EXPORT_SYMBOL_GPL vmlinux 0x46066e5b perf_pmu_name +EXPORT_SYMBOL_GPL vmlinux 0x460ae9aa cpuidle_unregister +EXPORT_SYMBOL_GPL vmlinux 0x460f7531 wait_rcu_gp +EXPORT_SYMBOL_GPL vmlinux 0x46356db6 regmap_update_bits +EXPORT_SYMBOL_GPL vmlinux 0x463d24ea ipv6_fixup_options +EXPORT_SYMBOL_GPL vmlinux 0x465afc79 bmp085_remove +EXPORT_SYMBOL_GPL vmlinux 0x4672e88b __crypto_dequeue_request +EXPORT_SYMBOL_GPL vmlinux 0x467daaf1 regulator_set_voltage_time +EXPORT_SYMBOL_GPL vmlinux 0x4688d7ec pvclock_gtod_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x469143c4 x509_free_certificate +EXPORT_SYMBOL_GPL vmlinux 0x46a26d50 devm_led_classdev_unregister +EXPORT_SYMBOL_GPL vmlinux 0x46a37207 sdio_set_block_size +EXPORT_SYMBOL_GPL vmlinux 0x46aea648 register_pernet_subsys +EXPORT_SYMBOL_GPL vmlinux 0x46bca474 __class_register +EXPORT_SYMBOL_GPL vmlinux 0x46d990b3 power_supply_am_i_supplied +EXPORT_SYMBOL_GPL vmlinux 0x46e2a925 ping_getfrag +EXPORT_SYMBOL_GPL vmlinux 0x47027c3f fat_flush_inodes +EXPORT_SYMBOL_GPL vmlinux 0x47193286 ipv6_recv_error +EXPORT_SYMBOL_GPL vmlinux 0x4719b509 crypto_alloc_instance2 +EXPORT_SYMBOL_GPL vmlinux 0x471ad6ec unregister_ftrace_function +EXPORT_SYMBOL_GPL vmlinux 0x47229b5c gpio_request +EXPORT_SYMBOL_GPL vmlinux 0x4726e104 usb_reset_device +EXPORT_SYMBOL_GPL vmlinux 0x473a47c8 securityfs_remove +EXPORT_SYMBOL_GPL vmlinux 0x473f9db7 sm501_unit_power +EXPORT_SYMBOL_GPL vmlinux 0x4761f17c register_netevent_notifier +EXPORT_SYMBOL_GPL vmlinux 0x4773f782 crypto_alloc_rng +EXPORT_SYMBOL_GPL vmlinux 0x477f7b51 md_new_event +EXPORT_SYMBOL_GPL vmlinux 0x47859893 task_cls_state +EXPORT_SYMBOL_GPL vmlinux 0x47884890 system_power_efficient_wq +EXPORT_SYMBOL_GPL vmlinux 0x47960b6a arizona_request_irq +EXPORT_SYMBOL_GPL vmlinux 0x47a1446c debugfs_create_size_t +EXPORT_SYMBOL_GPL vmlinux 0x47a9dd43 serial8250_modem_status +EXPORT_SYMBOL_GPL vmlinux 0x47aad3b9 have_governor_per_policy +EXPORT_SYMBOL_GPL vmlinux 0x47b0d809 inet_ehash_locks_alloc +EXPORT_SYMBOL_GPL vmlinux 0x47de0dc7 clk_unregister_mux +EXPORT_SYMBOL_GPL vmlinux 0x47eec842 phy_init +EXPORT_SYMBOL_GPL vmlinux 0x47fe1486 crypto_shoot_alg +EXPORT_SYMBOL_GPL vmlinux 0x482427d0 spi_register_master +EXPORT_SYMBOL_GPL vmlinux 0x482561e9 ref_module +EXPORT_SYMBOL_GPL vmlinux 0x482d4e99 snd_soc_set_ac97_ops +EXPORT_SYMBOL_GPL vmlinux 0x484a7782 dma_buf_detach +EXPORT_SYMBOL_GPL vmlinux 0x4866db39 skb_scrub_packet +EXPORT_SYMBOL_GPL vmlinux 0x4868c3b4 rcu_batches_started_bh +EXPORT_SYMBOL_GPL vmlinux 0x48716fed tpm2_startup +EXPORT_SYMBOL_GPL vmlinux 0x487c5d33 nf_log_buf_add +EXPORT_SYMBOL_GPL vmlinux 0x4887e58e dev_pm_qos_expose_flags +EXPORT_SYMBOL_GPL vmlinux 0x48983638 snd_ctl_get_preferred_subdevice +EXPORT_SYMBOL_GPL vmlinux 0x48b4ef2d devm_kfree +EXPORT_SYMBOL_GPL vmlinux 0x48f4928f __gpiod_get_optional +EXPORT_SYMBOL_GPL vmlinux 0x4906a967 hid_snto32 +EXPORT_SYMBOL_GPL vmlinux 0x4909a3cf crypto_aead_setkey +EXPORT_SYMBOL_GPL vmlinux 0x4944ecfe pm_stay_awake +EXPORT_SYMBOL_GPL vmlinux 0x49607c8f dma_buf_fd +EXPORT_SYMBOL_GPL vmlinux 0x496ce75f regmap_can_raw_write +EXPORT_SYMBOL_GPL vmlinux 0x4982a57f probe_kernel_write +EXPORT_SYMBOL_GPL vmlinux 0x498d293a trace_buffer_unlock_commit +EXPORT_SYMBOL_GPL vmlinux 0x499043d3 crypto_init_queue +EXPORT_SYMBOL_GPL vmlinux 0x499f0444 file_ra_state_init +EXPORT_SYMBOL_GPL vmlinux 0x49a0d3b9 wm8350_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x49b2e90d ftrace_set_filter +EXPORT_SYMBOL_GPL vmlinux 0x49e96999 cond_synchronize_rcu +EXPORT_SYMBOL_GPL vmlinux 0x49fa3a70 phy_put +EXPORT_SYMBOL_GPL vmlinux 0x49faca9e snd_soc_dapm_nc_pin +EXPORT_SYMBOL_GPL vmlinux 0x4a04b9e4 trace_output_call +EXPORT_SYMBOL_GPL vmlinux 0x4a2b882e mtd_read_oob +EXPORT_SYMBOL_GPL vmlinux 0x4a422113 ata_host_register +EXPORT_SYMBOL_GPL vmlinux 0x4a532396 dm_accept_partial_bio +EXPORT_SYMBOL_GPL vmlinux 0x4a5ea4f5 devm_pinctrl_get +EXPORT_SYMBOL_GPL vmlinux 0x4a647b95 get_user_pages_fast +EXPORT_SYMBOL_GPL vmlinux 0x4a6f5d45 platform_add_devices +EXPORT_SYMBOL_GPL vmlinux 0x4a960b81 hid_parse_report +EXPORT_SYMBOL_GPL vmlinux 0x4aa42c71 ata_scsi_slave_config +EXPORT_SYMBOL_GPL vmlinux 0x4aad30d4 ata_dev_set_feature +EXPORT_SYMBOL_GPL vmlinux 0x4aadeb9a ring_buffer_alloc_read_page +EXPORT_SYMBOL_GPL vmlinux 0x4ab1a16b usb_anchor_resume_wakeups +EXPORT_SYMBOL_GPL vmlinux 0x4ad119d3 dma_get_slave_channel +EXPORT_SYMBOL_GPL vmlinux 0x4adb8262 of_irq_parse_raw +EXPORT_SYMBOL_GPL vmlinux 0x4ae54d11 mtd_read_user_prot_reg +EXPORT_SYMBOL_GPL vmlinux 0x4aee7631 usb_hcd_start_port_resume +EXPORT_SYMBOL_GPL vmlinux 0x4af7330f mmc_app_cmd +EXPORT_SYMBOL_GPL vmlinux 0x4b1031c2 da903x_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x4b163bea device_store_ulong +EXPORT_SYMBOL_GPL vmlinux 0x4b23f3a0 cpufreq_cooling_unregister +EXPORT_SYMBOL_GPL vmlinux 0x4b3fa4f5 crypto_shash_finup +EXPORT_SYMBOL_GPL vmlinux 0x4b5954f0 hrtimer_try_to_cancel +EXPORT_SYMBOL_GPL vmlinux 0x4b8459d1 pinctrl_find_and_add_gpio_range +EXPORT_SYMBOL_GPL vmlinux 0x4b89387b dev_pm_qos_remove_request +EXPORT_SYMBOL_GPL vmlinux 0x4ba312e6 __pm_runtime_disable +EXPORT_SYMBOL_GPL vmlinux 0x4bc79975 cpuidle_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x4bcb4595 fuse_get_req +EXPORT_SYMBOL_GPL vmlinux 0x4bdd7cb0 pm_generic_freeze_late +EXPORT_SYMBOL_GPL vmlinux 0x4c164714 spi_busnum_to_master +EXPORT_SYMBOL_GPL vmlinux 0x4c1816ea shash_register_instance +EXPORT_SYMBOL_GPL vmlinux 0x4c217d33 snd_soc_jack_add_gpiods +EXPORT_SYMBOL_GPL vmlinux 0x4c27e908 of_platform_populate +EXPORT_SYMBOL_GPL vmlinux 0x4c47ec15 klist_add_head +EXPORT_SYMBOL_GPL vmlinux 0x4c602bf1 __blkg_release_rcu +EXPORT_SYMBOL_GPL vmlinux 0x4c7591b0 devfreq_event_get_edev_count +EXPORT_SYMBOL_GPL vmlinux 0x4ca0e6a7 fuse_dev_free +EXPORT_SYMBOL_GPL vmlinux 0x4ce1678d snd_soc_dapm_mux_update_power +EXPORT_SYMBOL_GPL vmlinux 0x4ce2aabb sdio_claim_irq +EXPORT_SYMBOL_GPL vmlinux 0x4d0015e2 cpu_hotplug_disable +EXPORT_SYMBOL_GPL vmlinux 0x4d19d69f dma_get_any_slave_channel +EXPORT_SYMBOL_GPL vmlinux 0x4d215ee2 perf_event_enable +EXPORT_SYMBOL_GPL vmlinux 0x4d5cce22 palmas_ext_control_req_config +EXPORT_SYMBOL_GPL vmlinux 0x4d6ebfd6 cpuidle_get_cpu_driver +EXPORT_SYMBOL_GPL vmlinux 0x4d81acc4 edac_get_sysfs_subsys +EXPORT_SYMBOL_GPL vmlinux 0x4db9c350 sysfs_create_group +EXPORT_SYMBOL_GPL vmlinux 0x4dc83a77 of_free_opp_table +EXPORT_SYMBOL_GPL vmlinux 0x4de17ab3 usb_state_string +EXPORT_SYMBOL_GPL vmlinux 0x4df80c42 debugfs_remove +EXPORT_SYMBOL_GPL vmlinux 0x4e109192 ring_buffer_entries +EXPORT_SYMBOL_GPL vmlinux 0x4e14fea9 bus_register +EXPORT_SYMBOL_GPL vmlinux 0x4e22f4de tty_get_pgrp +EXPORT_SYMBOL_GPL vmlinux 0x4e242f5f pstore_cannot_block_path +EXPORT_SYMBOL_GPL vmlinux 0x4e2c2dd2 pm_qos_remove_request +EXPORT_SYMBOL_GPL vmlinux 0x4e32fff5 ata_dev_disable +EXPORT_SYMBOL_GPL vmlinux 0x4e7b1fdf __rtnl_register +EXPORT_SYMBOL_GPL vmlinux 0x4e9fb85c debugfs_create_bool +EXPORT_SYMBOL_GPL vmlinux 0x4eb58671 usb_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x4ed36958 mount_mtd +EXPORT_SYMBOL_GPL vmlinux 0x4ef5bcf4 perf_swevent_get_recursion_context +EXPORT_SYMBOL_GPL vmlinux 0x4f020dee public_key_verify_signature +EXPORT_SYMBOL_GPL vmlinux 0x4f0fd4ce rhashtable_walk_init +EXPORT_SYMBOL_GPL vmlinux 0x4f1a58ea ipv6_opt_accepted +EXPORT_SYMBOL_GPL vmlinux 0x4f48429b dm_get_table_device +EXPORT_SYMBOL_GPL vmlinux 0x4f5b7b01 wm8997_irq +EXPORT_SYMBOL_GPL vmlinux 0x4f6a07fe show_rcu_gp_kthreads +EXPORT_SYMBOL_GPL vmlinux 0x4f6f8017 dev_pm_qos_update_request +EXPORT_SYMBOL_GPL vmlinux 0x4f809a34 key_set_timeout +EXPORT_SYMBOL_GPL vmlinux 0x4f90685f sdhci_add_host +EXPORT_SYMBOL_GPL vmlinux 0x4f98d766 cpu_pm_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x4f9dc888 bdev_read_page +EXPORT_SYMBOL_GPL vmlinux 0x4fa2003c snd_soc_jack_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x4fa5a0ca __pm_stay_awake +EXPORT_SYMBOL_GPL vmlinux 0x4fc63117 regulator_list_voltage_linear +EXPORT_SYMBOL_GPL vmlinux 0x4fc85025 devm_clk_register +EXPORT_SYMBOL_GPL vmlinux 0x4fd4e89d ring_buffer_empty_cpu +EXPORT_SYMBOL_GPL vmlinux 0x4fda1884 vfs_fallocate +EXPORT_SYMBOL_GPL vmlinux 0x4fdc945d sata_deb_timing_normal +EXPORT_SYMBOL_GPL vmlinux 0x4fe1eddf unregister_netevent_notifier +EXPORT_SYMBOL_GPL vmlinux 0x4fedf53f usbnet_nway_reset +EXPORT_SYMBOL_GPL vmlinux 0x4fefd8e5 hrtimer_init_sleeper +EXPORT_SYMBOL_GPL vmlinux 0x4ff827fa regulator_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x501a2720 gpiochip_is_requested +EXPORT_SYMBOL_GPL vmlinux 0x501c6774 kill_pid_info_as_cred +EXPORT_SYMBOL_GPL vmlinux 0x503f59a5 rtc_update_irq +EXPORT_SYMBOL_GPL vmlinux 0x504539d6 ata_sff_wait_after_reset +EXPORT_SYMBOL_GPL vmlinux 0x5056fc13 tty_init_termios +EXPORT_SYMBOL_GPL vmlinux 0x506b9258 mtd_is_partition +EXPORT_SYMBOL_GPL vmlinux 0x50728934 inet6_csk_addr2sockaddr +EXPORT_SYMBOL_GPL vmlinux 0x50743a8c debugfs_create_symlink +EXPORT_SYMBOL_GPL vmlinux 0x5080c352 trace_print_bitmask_seq +EXPORT_SYMBOL_GPL vmlinux 0x5086ac3a alg_test +EXPORT_SYMBOL_GPL vmlinux 0x5091b823 ring_buffer_read_start +EXPORT_SYMBOL_GPL vmlinux 0x50b439e5 irq_domain_add_simple +EXPORT_SYMBOL_GPL vmlinux 0x50c89f23 __alloc_percpu +EXPORT_SYMBOL_GPL vmlinux 0x50d60a8e hid_resolv_usage +EXPORT_SYMBOL_GPL vmlinux 0x50e7193a __i2c_first_dynamic_bus_num +EXPORT_SYMBOL_GPL vmlinux 0x50f970bc power_supply_external_power_changed +EXPORT_SYMBOL_GPL vmlinux 0x50f9aeda pm_generic_thaw +EXPORT_SYMBOL_GPL vmlinux 0x50fad434 round_jiffies_up +EXPORT_SYMBOL_GPL vmlinux 0x511c4270 arizona_clk32k_disable +EXPORT_SYMBOL_GPL vmlinux 0x51324639 ata_sff_drain_fifo +EXPORT_SYMBOL_GPL vmlinux 0x514b6c2f spi_add_device +EXPORT_SYMBOL_GPL vmlinux 0x514e9875 divider_get_val +EXPORT_SYMBOL_GPL vmlinux 0x51523de6 usb_altnum_to_altsetting +EXPORT_SYMBOL_GPL vmlinux 0x515f47fb platform_get_irq +EXPORT_SYMBOL_GPL vmlinux 0x5160b159 ehci_cf_port_reset_rwsem +EXPORT_SYMBOL_GPL vmlinux 0x517a8987 scsi_flush_work +EXPORT_SYMBOL_GPL vmlinux 0x518249c7 ahci_platform_resume +EXPORT_SYMBOL_GPL vmlinux 0x51839da9 extcon_get_cable_state_ +EXPORT_SYMBOL_GPL vmlinux 0x5188d7ba usb_autopm_get_interface_async +EXPORT_SYMBOL_GPL vmlinux 0x518ec5dd __blkg_prfill_u64 +EXPORT_SYMBOL_GPL vmlinux 0x51aba55e regulator_bulk_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0x51e35595 pm_runtime_force_suspend +EXPORT_SYMBOL_GPL vmlinux 0x51e7e9a4 gpiod_get_raw_value +EXPORT_SYMBOL_GPL vmlinux 0x51e9ff88 snd_soc_get_xr_sx +EXPORT_SYMBOL_GPL vmlinux 0x51eb4113 da9055_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0x5200c3b4 usb_scuttle_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x520da613 crypto_unregister_akcipher +EXPORT_SYMBOL_GPL vmlinux 0x5210a5bf hsi_board_list +EXPORT_SYMBOL_GPL vmlinux 0x52212010 __tracepoint_block_bio_remap +EXPORT_SYMBOL_GPL vmlinux 0x5221ec3a fwnode_property_read_u32_array +EXPORT_SYMBOL_GPL vmlinux 0x52377754 mpc8xxx_spi_rx_buf_u8 +EXPORT_SYMBOL_GPL vmlinux 0x52572fc2 usb_stor_Bulk_transport +EXPORT_SYMBOL_GPL vmlinux 0x526280c7 trace_seq_puts +EXPORT_SYMBOL_GPL vmlinux 0x526cd56c led_trigger_blink_oneshot +EXPORT_SYMBOL_GPL vmlinux 0x52724691 component_bind_all +EXPORT_SYMBOL_GPL vmlinux 0x5272d8bc __cookie_v4_check +EXPORT_SYMBOL_GPL vmlinux 0x528aaff8 snd_soc_unregister_platform +EXPORT_SYMBOL_GPL vmlinux 0x52a41251 __cookie_v4_init_sequence +EXPORT_SYMBOL_GPL vmlinux 0x52a42a0a dev_forward_skb +EXPORT_SYMBOL_GPL vmlinux 0x52c51d6e platform_device_add +EXPORT_SYMBOL_GPL vmlinux 0x52d58a31 tpm_get_timeouts +EXPORT_SYMBOL_GPL vmlinux 0x52d8a4e8 blk_queue_flush +EXPORT_SYMBOL_GPL vmlinux 0x52e0c79c usb_stor_disconnect +EXPORT_SYMBOL_GPL vmlinux 0x52fbb140 pwm_disable +EXPORT_SYMBOL_GPL vmlinux 0x53064b52 devm_pwm_get +EXPORT_SYMBOL_GPL vmlinux 0x5317cc36 noop_backing_dev_info +EXPORT_SYMBOL_GPL vmlinux 0x532543f6 devm_kstrdup +EXPORT_SYMBOL_GPL vmlinux 0x534d9daa ata_sas_port_start +EXPORT_SYMBOL_GPL vmlinux 0x5358fc36 ring_buffer_discard_commit +EXPORT_SYMBOL_GPL vmlinux 0x53614269 get_cpu_idle_time_us +EXPORT_SYMBOL_GPL vmlinux 0x537064b8 ata_bmdma_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0x53752eb4 skb_copy_ubufs +EXPORT_SYMBOL_GPL vmlinux 0x53b57166 led_trigger_show +EXPORT_SYMBOL_GPL vmlinux 0x53bfbfe7 usb_stor_probe1 +EXPORT_SYMBOL_GPL vmlinux 0x53c4bff8 rtc_initialize_alarm +EXPORT_SYMBOL_GPL vmlinux 0x53de9b48 da9052_enable_irq +EXPORT_SYMBOL_GPL vmlinux 0x53ef4d8d task_user_regset_view +EXPORT_SYMBOL_GPL vmlinux 0x53fb9e63 fuse_dev_release +EXPORT_SYMBOL_GPL vmlinux 0x541bd60a irq_work_run +EXPORT_SYMBOL_GPL vmlinux 0x5425d145 bit_wait_timeout +EXPORT_SYMBOL_GPL vmlinux 0x5439badc ftrace_set_filter_ip +EXPORT_SYMBOL_GPL vmlinux 0x544aab61 klist_add_tail +EXPORT_SYMBOL_GPL vmlinux 0x545fec86 percpu_ida_for_each_free +EXPORT_SYMBOL_GPL vmlinux 0x5460c8d8 fsnotify_get_cookie +EXPORT_SYMBOL_GPL vmlinux 0x54622564 sock_diag_unregister_inet_compat +EXPORT_SYMBOL_GPL vmlinux 0x54740eb7 get_cpu_idle_time +EXPORT_SYMBOL_GPL vmlinux 0x549525ef handle_nested_irq +EXPORT_SYMBOL_GPL vmlinux 0x549bb732 sock_diag_check_cookie +EXPORT_SYMBOL_GPL vmlinux 0x54ac01a7 tcp_ca_openreq_child +EXPORT_SYMBOL_GPL vmlinux 0x54ccdfeb ahci_print_info +EXPORT_SYMBOL_GPL vmlinux 0x54d46690 uart_parse_earlycon +EXPORT_SYMBOL_GPL vmlinux 0x54d468f1 pm_qos_request_active +EXPORT_SYMBOL_GPL vmlinux 0x550fbf98 clk_mux_ops +EXPORT_SYMBOL_GPL vmlinux 0x551852d4 devfreq_event_get_event +EXPORT_SYMBOL_GPL vmlinux 0x553ab69e dma_buf_begin_cpu_access +EXPORT_SYMBOL_GPL vmlinux 0x553b49a4 cpufreq_get_driver_data +EXPORT_SYMBOL_GPL vmlinux 0x553b5ce6 ata_sff_exec_command +EXPORT_SYMBOL_GPL vmlinux 0x5540ca25 rtc_class_open +EXPORT_SYMBOL_GPL vmlinux 0x55417264 unregister_vt_notifier +EXPORT_SYMBOL_GPL vmlinux 0x5557e711 dma_buf_map_attachment +EXPORT_SYMBOL_GPL vmlinux 0x556e4390 clk_get_rate +EXPORT_SYMBOL_GPL vmlinux 0x55784228 regmap_irq_get_virq +EXPORT_SYMBOL_GPL vmlinux 0x557d2f33 tty_buffer_set_limit +EXPORT_SYMBOL_GPL vmlinux 0x5583f5a3 __put_task_struct +EXPORT_SYMBOL_GPL vmlinux 0x55c8e632 blkcg_policy_unregister +EXPORT_SYMBOL_GPL vmlinux 0x55cfc4d5 snd_soc_dai_set_fmt +EXPORT_SYMBOL_GPL vmlinux 0x55ee064c tps6586x_reads +EXPORT_SYMBOL_GPL vmlinux 0x55f04c21 trace_buffer_unlock_commit_regs +EXPORT_SYMBOL_GPL vmlinux 0x55f9dcf0 clockevents_register_device +EXPORT_SYMBOL_GPL vmlinux 0x55fd677c led_trigger_unregister +EXPORT_SYMBOL_GPL vmlinux 0x5605df1a show_class_attr_string +EXPORT_SYMBOL_GPL vmlinux 0x5609fe68 dev_get_regmap +EXPORT_SYMBOL_GPL vmlinux 0x56256e8a orderly_poweroff +EXPORT_SYMBOL_GPL vmlinux 0x56310925 regulator_mode_to_status +EXPORT_SYMBOL_GPL vmlinux 0x5641485b tty_termios_encode_baud_rate +EXPORT_SYMBOL_GPL vmlinux 0x56594c03 tty_buffer_lock_exclusive +EXPORT_SYMBOL_GPL vmlinux 0x565b6892 uuid_le_gen +EXPORT_SYMBOL_GPL vmlinux 0x569813fd bpf_prog_destroy +EXPORT_SYMBOL_GPL vmlinux 0x569a5fd4 bmp085_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0x56acfe7f __hid_request +EXPORT_SYMBOL_GPL vmlinux 0x56b25b2a fat_free_clusters +EXPORT_SYMBOL_GPL vmlinux 0x56b63670 lzo1x_1_compress +EXPORT_SYMBOL_GPL vmlinux 0x56bee423 snd_soc_dai_set_tdm_slot +EXPORT_SYMBOL_GPL vmlinux 0x56d31820 musb_writel +EXPORT_SYMBOL_GPL vmlinux 0x56d697ce cpu_up +EXPORT_SYMBOL_GPL vmlinux 0x56e3e351 scatterwalk_bytes_sglen +EXPORT_SYMBOL_GPL vmlinux 0x56e75d47 klist_node_attached +EXPORT_SYMBOL_GPL vmlinux 0x56e9103b cpu_pm_enter +EXPORT_SYMBOL_GPL vmlinux 0x56e9e110 ata_dummy_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x56f28e58 devm_rtc_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x56f82731 ata_sas_port_destroy +EXPORT_SYMBOL_GPL vmlinux 0x570842c7 bpf_prog_select_runtime +EXPORT_SYMBOL_GPL vmlinux 0x57231f45 ring_buffer_record_on +EXPORT_SYMBOL_GPL vmlinux 0x574dd842 thermal_cooling_device_register +EXPORT_SYMBOL_GPL vmlinux 0x5781b057 elv_unregister +EXPORT_SYMBOL_GPL vmlinux 0x578a1918 sdhci_remove_host +EXPORT_SYMBOL_GPL vmlinux 0x5795377e arizona_of_get_named_gpio +EXPORT_SYMBOL_GPL vmlinux 0x57969495 extcon_register_interest +EXPORT_SYMBOL_GPL vmlinux 0x5797851c devm_snd_soc_register_card +EXPORT_SYMBOL_GPL vmlinux 0x579ccc2a user_destroy +EXPORT_SYMBOL_GPL vmlinux 0x579e0bf5 rtnl_unregister_all +EXPORT_SYMBOL_GPL vmlinux 0x57c39727 kdb_register_flags +EXPORT_SYMBOL_GPL vmlinux 0x57d369b9 usb_stor_ctrl_transfer +EXPORT_SYMBOL_GPL vmlinux 0x57f0e96a ping_err +EXPORT_SYMBOL_GPL vmlinux 0x58063ede srcu_barrier +EXPORT_SYMBOL_GPL vmlinux 0x581504ae ping_seq_stop +EXPORT_SYMBOL_GPL vmlinux 0x58292e5f clk_fixed_factor_ops +EXPORT_SYMBOL_GPL vmlinux 0x58520f38 unregister_net_sysctl_table +EXPORT_SYMBOL_GPL vmlinux 0x58631dab imx_audmux_v2_configure_port +EXPORT_SYMBOL_GPL vmlinux 0x587fb18f mtd_block_isreserved +EXPORT_SYMBOL_GPL vmlinux 0x587ffae0 mpc8xxx_spi_remove +EXPORT_SYMBOL_GPL vmlinux 0x588143e4 shash_ahash_finup +EXPORT_SYMBOL_GPL vmlinux 0x589e4569 syscon_regmap_lookup_by_pdevname +EXPORT_SYMBOL_GPL vmlinux 0x58b80c42 usb_autopm_put_interface +EXPORT_SYMBOL_GPL vmlinux 0x58c5c920 queue_kthread_work +EXPORT_SYMBOL_GPL vmlinux 0x58fb4ff2 wm8400_block_read +EXPORT_SYMBOL_GPL vmlinux 0x592f9bb3 wm831x_auxadc_read_uv +EXPORT_SYMBOL_GPL vmlinux 0x59325b68 blkg_conf_finish +EXPORT_SYMBOL_GPL vmlinux 0x593271e4 ping_close +EXPORT_SYMBOL_GPL vmlinux 0x594cde67 trace_seq_putmem_hex +EXPORT_SYMBOL_GPL vmlinux 0x5981b016 spi_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x5995e937 fuse_sync_release +EXPORT_SYMBOL_GPL vmlinux 0x599d0cb6 scatterwalk_start +EXPORT_SYMBOL_GPL vmlinux 0x59aa6af0 fuse_file_poll +EXPORT_SYMBOL_GPL vmlinux 0x59b10c94 snd_soc_get_volsw_range +EXPORT_SYMBOL_GPL vmlinux 0x59b93824 smpboot_unregister_percpu_thread +EXPORT_SYMBOL_GPL vmlinux 0x59e2743e call_rcu_bh +EXPORT_SYMBOL_GPL vmlinux 0x59e4e195 ahash_free_instance +EXPORT_SYMBOL_GPL vmlinux 0x59ea79b9 subsys_interface_unregister +EXPORT_SYMBOL_GPL vmlinux 0x59eae699 ring_buffer_read_prepare +EXPORT_SYMBOL_GPL vmlinux 0x5a395409 max8997_update_reg +EXPORT_SYMBOL_GPL vmlinux 0x5a7460e6 nf_queue_entry_get_refs +EXPORT_SYMBOL_GPL vmlinux 0x5a7bfe41 crypto_probing_notify +EXPORT_SYMBOL_GPL vmlinux 0x5a833743 regulator_list_voltage +EXPORT_SYMBOL_GPL vmlinux 0x5a8abf66 trace_event_buffer_reserve +EXPORT_SYMBOL_GPL vmlinux 0x5a9937d6 aead_geniv_init +EXPORT_SYMBOL_GPL vmlinux 0x5acccca5 devm_mdiobus_alloc_size +EXPORT_SYMBOL_GPL vmlinux 0x5add7579 sm501_modify_reg +EXPORT_SYMBOL_GPL vmlinux 0x5adf0083 da9052_free_irq +EXPORT_SYMBOL_GPL vmlinux 0x5aff2613 sata_pmp_qc_defer_cmd_switch +EXPORT_SYMBOL_GPL vmlinux 0x5b0a4035 sdio_readw +EXPORT_SYMBOL_GPL vmlinux 0x5b0ef8bd pinctrl_add_gpio_range +EXPORT_SYMBOL_GPL vmlinux 0x5b14b354 regulator_get_init_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x5b1b0a9a rt_mutex_destroy +EXPORT_SYMBOL_GPL vmlinux 0x5b426366 phy_exit +EXPORT_SYMBOL_GPL vmlinux 0x5b4b56be unregister_jprobe +EXPORT_SYMBOL_GPL vmlinux 0x5b609fdf pm_generic_suspend_late +EXPORT_SYMBOL_GPL vmlinux 0x5b6743dd skcipher_geniv_init +EXPORT_SYMBOL_GPL vmlinux 0x5b73c08e device_add_property_set +EXPORT_SYMBOL_GPL vmlinux 0x5b789ccf ip6_datagram_connect +EXPORT_SYMBOL_GPL vmlinux 0x5b78cd0e regcache_mark_dirty +EXPORT_SYMBOL_GPL vmlinux 0x5b97c633 ata_host_suspend +EXPORT_SYMBOL_GPL vmlinux 0x5bcaf7a3 da903x_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x5bd0748f crypto_del_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x5bdb6435 sysfs_merge_group +EXPORT_SYMBOL_GPL vmlinux 0x5bdbac4e rcu_unexpedite_gp +EXPORT_SYMBOL_GPL vmlinux 0x5bef5302 dm_noflush_suspending +EXPORT_SYMBOL_GPL vmlinux 0x5c03ccac snd_soc_unregister_card +EXPORT_SYMBOL_GPL vmlinux 0x5c1c8b3b dev_pm_opp_find_freq_exact +EXPORT_SYMBOL_GPL vmlinux 0x5c2b3088 devm_regmap_init +EXPORT_SYMBOL_GPL vmlinux 0x5c4bad6d clockevent_delta2ns +EXPORT_SYMBOL_GPL vmlinux 0x5c4ea824 driver_unregister +EXPORT_SYMBOL_GPL vmlinux 0x5c5a1b16 tick_broadcast_control +EXPORT_SYMBOL_GPL vmlinux 0x5c6cf2c5 blk_mq_register_disk +EXPORT_SYMBOL_GPL vmlinux 0x5c7b50a3 __inet_twsk_hashdance +EXPORT_SYMBOL_GPL vmlinux 0x5c97cb4f clone_private_mount +EXPORT_SYMBOL_GPL vmlinux 0x5cabdced dev_pm_qos_remove_global_notifier +EXPORT_SYMBOL_GPL vmlinux 0x5cb446c3 rt_mutex_lock +EXPORT_SYMBOL_GPL vmlinux 0x5cb533ed device_wakeup_disable +EXPORT_SYMBOL_GPL vmlinux 0x5cba6774 shmem_file_setup +EXPORT_SYMBOL_GPL vmlinux 0x5cbdc6fb mddev_congested +EXPORT_SYMBOL_GPL vmlinux 0x5cc509a4 nsecs_to_jiffies +EXPORT_SYMBOL_GPL vmlinux 0x5cc845ff mtd_lock +EXPORT_SYMBOL_GPL vmlinux 0x5ccc1921 part_round_stats +EXPORT_SYMBOL_GPL vmlinux 0x5ce6c96e usb_find_alt_setting +EXPORT_SYMBOL_GPL vmlinux 0x5cf45880 usb_sg_wait +EXPORT_SYMBOL_GPL vmlinux 0x5d0068f0 uart_handle_cts_change +EXPORT_SYMBOL_GPL vmlinux 0x5d10e365 devm_hwrng_register +EXPORT_SYMBOL_GPL vmlinux 0x5d12e48f input_event_to_user +EXPORT_SYMBOL_GPL vmlinux 0x5d3f0fb5 debugfs_create_regset32 +EXPORT_SYMBOL_GPL vmlinux 0x5d5e68b8 fl6_sock_lookup +EXPORT_SYMBOL_GPL vmlinux 0x5d7b1b20 md_stop +EXPORT_SYMBOL_GPL vmlinux 0x5d822234 fat_alloc_new_dir +EXPORT_SYMBOL_GPL vmlinux 0x5d898d08 genlmsg_new_unicast +EXPORT_SYMBOL_GPL vmlinux 0x5da4021e ahash_attr_alg +EXPORT_SYMBOL_GPL vmlinux 0x5da67adc zs_compact +EXPORT_SYMBOL_GPL vmlinux 0x5db48bd9 regmap_update_bits_check +EXPORT_SYMBOL_GPL vmlinux 0x5dcc6df1 key_type_user +EXPORT_SYMBOL_GPL vmlinux 0x5e12a053 stmpe_block_read +EXPORT_SYMBOL_GPL vmlinux 0x5e2053bd trace_event_buffer_lock_reserve +EXPORT_SYMBOL_GPL vmlinux 0x5e3037f9 usb_deregister_device_driver +EXPORT_SYMBOL_GPL vmlinux 0x5e3dcfa9 thermal_cooling_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x5e42032f ata_sas_port_suspend +EXPORT_SYMBOL_GPL vmlinux 0x5e515be6 ktime_get_ts64 +EXPORT_SYMBOL_GPL vmlinux 0x5e51cd74 swiotlb_nr_tbl +EXPORT_SYMBOL_GPL vmlinux 0x5e568979 bitmap_load +EXPORT_SYMBOL_GPL vmlinux 0x5e6226dd tty_wakeup +EXPORT_SYMBOL_GPL vmlinux 0x5e76f8a5 led_trigger_blink +EXPORT_SYMBOL_GPL vmlinux 0x5e7aa1c5 amba_device_put +EXPORT_SYMBOL_GPL vmlinux 0x5edc9dcd __root_device_register +EXPORT_SYMBOL_GPL vmlinux 0x5f140d00 scsi_autopm_get_device +EXPORT_SYMBOL_GPL vmlinux 0x5f15aecb snd_soc_of_parse_tdm_slot +EXPORT_SYMBOL_GPL vmlinux 0x5f1de34b usb_match_id +EXPORT_SYMBOL_GPL vmlinux 0x5f3e3cd6 devm_regmap_field_alloc +EXPORT_SYMBOL_GPL vmlinux 0x5f6733eb uprobe_unregister +EXPORT_SYMBOL_GPL vmlinux 0x5f6f22f1 generic_fh_to_dentry +EXPORT_SYMBOL_GPL vmlinux 0x5f785ea3 ahci_platform_resume_host +EXPORT_SYMBOL_GPL vmlinux 0x5f869cdb hid_set_field +EXPORT_SYMBOL_GPL vmlinux 0x5fa51f9d gpiochip_lock_as_irq +EXPORT_SYMBOL_GPL vmlinux 0x5fc334f3 snd_soc_jack_report +EXPORT_SYMBOL_GPL vmlinux 0x60091316 clk_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x6019afc4 usb_stor_CB_transport +EXPORT_SYMBOL_GPL vmlinux 0x601ab55c vc_sm_alloc +EXPORT_SYMBOL_GPL vmlinux 0x60506751 unmap_kernel_range_noflush +EXPORT_SYMBOL_GPL vmlinux 0x607a603a __put_mtd_device +EXPORT_SYMBOL_GPL vmlinux 0x607f18e2 scatterwalk_ffwd +EXPORT_SYMBOL_GPL vmlinux 0x609290d4 crypto_shash_digest +EXPORT_SYMBOL_GPL vmlinux 0x60a13e90 rcu_barrier +EXPORT_SYMBOL_GPL vmlinux 0x60cfc13a tps6586x_update +EXPORT_SYMBOL_GPL vmlinux 0x61092f40 sdhci_set_clock +EXPORT_SYMBOL_GPL vmlinux 0x610b7679 ata_std_bios_param +EXPORT_SYMBOL_GPL vmlinux 0x61135abe device_store_int +EXPORT_SYMBOL_GPL vmlinux 0x61179f10 component_master_del +EXPORT_SYMBOL_GPL vmlinux 0x614482e3 phy_power_off +EXPORT_SYMBOL_GPL vmlinux 0x61517be5 init_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0x61738fec device_set_wakeup_capable +EXPORT_SYMBOL_GPL vmlinux 0x61822173 usb_hcd_giveback_urb +EXPORT_SYMBOL_GPL vmlinux 0x6182d74f rhashtable_walk_exit +EXPORT_SYMBOL_GPL vmlinux 0x618b9829 regulator_map_voltage_ascend +EXPORT_SYMBOL_GPL vmlinux 0x619312c3 crypto_unregister_ahash +EXPORT_SYMBOL_GPL vmlinux 0x61a4614a dma_buf_kmap +EXPORT_SYMBOL_GPL vmlinux 0x61a49869 find_module +EXPORT_SYMBOL_GPL vmlinux 0x61ae47fe snd_soc_platform_write +EXPORT_SYMBOL_GPL vmlinux 0x61b9588e pm_generic_resume_noirq +EXPORT_SYMBOL_GPL vmlinux 0x61e2a99d blkg_stat_recursive_sum +EXPORT_SYMBOL_GPL vmlinux 0x621529ea shash_ahash_update +EXPORT_SYMBOL_GPL vmlinux 0x622c7922 register_oom_notifier +EXPORT_SYMBOL_GPL vmlinux 0x62993535 mtd_read +EXPORT_SYMBOL_GPL vmlinux 0x62b10347 fat_fill_super +EXPORT_SYMBOL_GPL vmlinux 0x62c8827e ata_qc_complete_multiple +EXPORT_SYMBOL_GPL vmlinux 0x62dd938a hidinput_calc_abs_res +EXPORT_SYMBOL_GPL vmlinux 0x62efba96 mpc8xxx_spi_probe +EXPORT_SYMBOL_GPL vmlinux 0x63032589 phy_optional_get +EXPORT_SYMBOL_GPL vmlinux 0x63150e06 clk_get_parent +EXPORT_SYMBOL_GPL vmlinux 0x632046ea ata_msleep +EXPORT_SYMBOL_GPL vmlinux 0x6395130f vc_mem_get_current_size +EXPORT_SYMBOL_GPL vmlinux 0x63c53b77 device_attach +EXPORT_SYMBOL_GPL vmlinux 0x63c7cf11 inet_putpeer +EXPORT_SYMBOL_GPL vmlinux 0x63d1efce regulator_disable_regmap +EXPORT_SYMBOL_GPL vmlinux 0x640db846 page_endio +EXPORT_SYMBOL_GPL vmlinux 0x6410e160 ktime_mono_to_any +EXPORT_SYMBOL_GPL vmlinux 0x647537f3 pl320_ipc_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x647732ea of_reset_control_get +EXPORT_SYMBOL_GPL vmlinux 0x64a64277 proc_mkdir_data +EXPORT_SYMBOL_GPL vmlinux 0x64b18e20 devm_snd_soc_register_component +EXPORT_SYMBOL_GPL vmlinux 0x64b3b7f2 of_console_check +EXPORT_SYMBOL_GPL vmlinux 0x64c84e8a crypto_register_shash +EXPORT_SYMBOL_GPL vmlinux 0x64d40a40 regulator_set_current_limit +EXPORT_SYMBOL_GPL vmlinux 0x6510fd77 unregister_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x654956fa od_register_powersave_bias_handler +EXPORT_SYMBOL_GPL vmlinux 0x656e11bd __lock_page_killable +EXPORT_SYMBOL_GPL vmlinux 0x65786ca5 snd_dmaengine_pcm_set_config_from_dai_data +EXPORT_SYMBOL_GPL vmlinux 0x659fdb7c snd_soc_add_dai_controls +EXPORT_SYMBOL_GPL vmlinux 0x65ad9693 ata_link_next +EXPORT_SYMBOL_GPL vmlinux 0x65bbbc78 schedule_hrtimeout_range +EXPORT_SYMBOL_GPL vmlinux 0x65bfbb8e irq_set_chip_and_handler_name +EXPORT_SYMBOL_GPL vmlinux 0x65c23a06 otg_ulpi_create +EXPORT_SYMBOL_GPL vmlinux 0x65c5a829 extcon_dev_register +EXPORT_SYMBOL_GPL vmlinux 0x65ccb6f0 call_netevent_notifiers +EXPORT_SYMBOL_GPL vmlinux 0x6611e903 cpuidle_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0x66158d59 usb_unlocked_disable_lpm +EXPORT_SYMBOL_GPL vmlinux 0x661601de sprint_symbol +EXPORT_SYMBOL_GPL vmlinux 0x6636c3c9 irq_set_vcpu_affinity +EXPORT_SYMBOL_GPL vmlinux 0x665e1f99 rdev_set_badblocks +EXPORT_SYMBOL_GPL vmlinux 0x666c6521 debugfs_create_devm_seqfile +EXPORT_SYMBOL_GPL vmlinux 0x668402aa crypto_put_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x669fcb53 hidraw_report_event +EXPORT_SYMBOL_GPL vmlinux 0x669ff118 rq_flush_dcache_pages +EXPORT_SYMBOL_GPL vmlinux 0x66a2e474 snd_dmaengine_pcm_pointer_no_residue +EXPORT_SYMBOL_GPL vmlinux 0x66a662bd crypto_alloc_ahash +EXPORT_SYMBOL_GPL vmlinux 0x66a8d2a4 usb_stor_bulk_srb +EXPORT_SYMBOL_GPL vmlinux 0x66afe828 mbox_chan_txdone +EXPORT_SYMBOL_GPL vmlinux 0x66c6b8a7 tcp_ca_get_name_by_key +EXPORT_SYMBOL_GPL vmlinux 0x66c78744 device_register +EXPORT_SYMBOL_GPL vmlinux 0x66d87d38 symbol_put_addr +EXPORT_SYMBOL_GPL vmlinux 0x66e84831 wm8350_block_write +EXPORT_SYMBOL_GPL vmlinux 0x66f952e0 fwnode_property_read_string +EXPORT_SYMBOL_GPL vmlinux 0x670a8b9d usb_stor_set_xfer_buf +EXPORT_SYMBOL_GPL vmlinux 0x672d9bd8 __irq_set_handler +EXPORT_SYMBOL_GPL vmlinux 0x673b5656 bpf_prog_realloc +EXPORT_SYMBOL_GPL vmlinux 0x674e13e1 public_key_destroy +EXPORT_SYMBOL_GPL vmlinux 0x6754ac18 clk_get_parent_by_index +EXPORT_SYMBOL_GPL vmlinux 0x677dfca5 usbnet_status_start +EXPORT_SYMBOL_GPL vmlinux 0x6784d258 of_clk_set_defaults +EXPORT_SYMBOL_GPL vmlinux 0x678a4f4d vfs_lock_file +EXPORT_SYMBOL_GPL vmlinux 0x679165fa __pneigh_lookup +EXPORT_SYMBOL_GPL vmlinux 0x679525e5 inet6_hash_connect +EXPORT_SYMBOL_GPL vmlinux 0x67955ce6 profile_hits +EXPORT_SYMBOL_GPL vmlinux 0x67986b16 fat_setattr +EXPORT_SYMBOL_GPL vmlinux 0x67a23584 fixed_phy_register +EXPORT_SYMBOL_GPL vmlinux 0x67f51a71 regulator_get_mode +EXPORT_SYMBOL_GPL vmlinux 0x6812cf8d __tracepoint_rpm_idle +EXPORT_SYMBOL_GPL vmlinux 0x681aa414 tpm_chip_unregister +EXPORT_SYMBOL_GPL vmlinux 0x6835b7b2 blk_update_request +EXPORT_SYMBOL_GPL vmlinux 0x685b15be alarm_try_to_cancel +EXPORT_SYMBOL_GPL vmlinux 0x685fd2d6 dbs_check_cpu +EXPORT_SYMBOL_GPL vmlinux 0x6867d3c9 rhashtable_walk_next +EXPORT_SYMBOL_GPL vmlinux 0x68956406 static_key_slow_dec +EXPORT_SYMBOL_GPL vmlinux 0x68c3bb93 regulator_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0x68f67da7 rtc_set_alarm +EXPORT_SYMBOL_GPL vmlinux 0x68fa46ec modify_user_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x69150c26 spi_finalize_current_message +EXPORT_SYMBOL_GPL vmlinux 0x691656b7 tc3589x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x6923ce63 irq_work_sync +EXPORT_SYMBOL_GPL vmlinux 0x6943f184 device_move +EXPORT_SYMBOL_GPL vmlinux 0x69447467 ring_buffer_write +EXPORT_SYMBOL_GPL vmlinux 0x6945725e mpi_read_raw_data +EXPORT_SYMBOL_GPL vmlinux 0x6949fb99 sysfs_create_bin_file +EXPORT_SYMBOL_GPL vmlinux 0x694be42a usb_show_dynids +EXPORT_SYMBOL_GPL vmlinux 0x695c2820 inet_csk_search_req +EXPORT_SYMBOL_GPL vmlinux 0x697c5d0d tracing_snapshot_alloc +EXPORT_SYMBOL_GPL vmlinux 0x6983173c ata_sff_data_xfer_noirq +EXPORT_SYMBOL_GPL vmlinux 0x698a899f ring_buffer_peek +EXPORT_SYMBOL_GPL vmlinux 0x69a03a7c to_of_pinfo +EXPORT_SYMBOL_GPL vmlinux 0x69fa1227 irq_of_parse_and_map +EXPORT_SYMBOL_GPL vmlinux 0x6a0fe6ff usbnet_get_link +EXPORT_SYMBOL_GPL vmlinux 0x6a10eeae tasklet_hrtimer_init +EXPORT_SYMBOL_GPL vmlinux 0x6a138d52 usb_unlink_urb +EXPORT_SYMBOL_GPL vmlinux 0x6a18d41c __i2c_board_lock +EXPORT_SYMBOL_GPL vmlinux 0x6a275267 dev_pm_opp_disable +EXPORT_SYMBOL_GPL vmlinux 0x6a32d904 __page_file_index +EXPORT_SYMBOL_GPL vmlinux 0x6a4277a4 component_master_add +EXPORT_SYMBOL_GPL vmlinux 0x6a5fb566 rcu_sched_force_quiescent_state +EXPORT_SYMBOL_GPL vmlinux 0x6a660906 wm5102_i2c_regmap +EXPORT_SYMBOL_GPL vmlinux 0x6ac07ed5 security_inode_create +EXPORT_SYMBOL_GPL vmlinux 0x6ac5a0a6 snd_soc_dpcm_get_substream +EXPORT_SYMBOL_GPL vmlinux 0x6acef40f usb_get_urb +EXPORT_SYMBOL_GPL vmlinux 0x6ad03133 regulator_set_load +EXPORT_SYMBOL_GPL vmlinux 0x6b14fcc0 __pm_runtime_set_status +EXPORT_SYMBOL_GPL vmlinux 0x6b21bad0 cpufreq_register_governor +EXPORT_SYMBOL_GPL vmlinux 0x6b29a1fa ring_buffer_event_length +EXPORT_SYMBOL_GPL vmlinux 0x6b71634f anon_inode_getfd +EXPORT_SYMBOL_GPL vmlinux 0x6b770f49 decode_bch +EXPORT_SYMBOL_GPL vmlinux 0x6b7cd14c blkg_rwstat_recursive_sum +EXPORT_SYMBOL_GPL vmlinux 0x6b81c38b power_supply_unreg_notifier +EXPORT_SYMBOL_GPL vmlinux 0x6b88c58e of_get_nand_ecc_strength +EXPORT_SYMBOL_GPL vmlinux 0x6ba259c6 of_fixed_factor_clk_setup +EXPORT_SYMBOL_GPL vmlinux 0x6bc37b67 fb_deferred_io_fsync +EXPORT_SYMBOL_GPL vmlinux 0x6be05d52 dev_pm_enable_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0x6bf223b4 ahci_platform_suspend_host +EXPORT_SYMBOL_GPL vmlinux 0x6c07d933 add_uevent_var +EXPORT_SYMBOL_GPL vmlinux 0x6c082f90 snd_soc_dapm_free +EXPORT_SYMBOL_GPL vmlinux 0x6c1c0c59 irq_remove_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x6c209eab __alloc_percpu_gfp +EXPORT_SYMBOL_GPL vmlinux 0x6c2cd934 fuse_conn_get +EXPORT_SYMBOL_GPL vmlinux 0x6c4b6684 reset_control_assert +EXPORT_SYMBOL_GPL vmlinux 0x6c4cbe58 crypto_register_shashes +EXPORT_SYMBOL_GPL vmlinux 0x6c539a07 sdhci_runtime_suspend_host +EXPORT_SYMBOL_GPL vmlinux 0x6c749afe __tracepoint_block_unplug +EXPORT_SYMBOL_GPL vmlinux 0x6ca4bf88 async_synchronize_full_domain +EXPORT_SYMBOL_GPL vmlinux 0x6cae5860 find_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0x6cc78c5c set_irq_flags +EXPORT_SYMBOL_GPL vmlinux 0x6cc8ed9d crypto_alloc_tfm +EXPORT_SYMBOL_GPL vmlinux 0x6cca202f snd_soc_bytes_info +EXPORT_SYMBOL_GPL vmlinux 0x6ccdd4af inet_getpeer +EXPORT_SYMBOL_GPL vmlinux 0x6cd21997 ata_tf_to_fis +EXPORT_SYMBOL_GPL vmlinux 0x6cd376ef pinconf_generic_dump_config +EXPORT_SYMBOL_GPL vmlinux 0x6cd45233 component_del +EXPORT_SYMBOL_GPL vmlinux 0x6ce2acbf blk_mq_freeze_queue_start +EXPORT_SYMBOL_GPL vmlinux 0x6cf7ab76 thermal_zone_bind_cooling_device +EXPORT_SYMBOL_GPL vmlinux 0x6cffce8d fsnotify +EXPORT_SYMBOL_GPL vmlinux 0x6d06e875 __put_net +EXPORT_SYMBOL_GPL vmlinux 0x6d2cf2ce transport_destroy_device +EXPORT_SYMBOL_GPL vmlinux 0x6d2fc5a6 net_namespace_list +EXPORT_SYMBOL_GPL vmlinux 0x6d424356 register_kprobes +EXPORT_SYMBOL_GPL vmlinux 0x6d505e9c mpc8xxx_spi_rx_buf_u32 +EXPORT_SYMBOL_GPL vmlinux 0x6d59dc34 usbnet_skb_return +EXPORT_SYMBOL_GPL vmlinux 0x6d5ac973 ata_sas_sync_probe +EXPORT_SYMBOL_GPL vmlinux 0x6d5ed06e user_describe +EXPORT_SYMBOL_GPL vmlinux 0x6d79a549 snd_soc_dapm_mixer_update_power +EXPORT_SYMBOL_GPL vmlinux 0x6da2f808 blk_queue_lld_busy +EXPORT_SYMBOL_GPL vmlinux 0x6daa7552 digsig_verify +EXPORT_SYMBOL_GPL vmlinux 0x6daf2ee1 regulator_set_bypass_regmap +EXPORT_SYMBOL_GPL vmlinux 0x6ddd515a blk_rq_unprep_clone +EXPORT_SYMBOL_GPL vmlinux 0x6ddf530d mddev_unlock +EXPORT_SYMBOL_GPL vmlinux 0x6ddf5f89 ata_base_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x6e04a077 usb_bind_phy +EXPORT_SYMBOL_GPL vmlinux 0x6e2203c6 mtd_table_mutex +EXPORT_SYMBOL_GPL vmlinux 0x6e4c937b sata_link_hardreset +EXPORT_SYMBOL_GPL vmlinux 0x6e51afc8 percpu_ref_kill_and_confirm +EXPORT_SYMBOL_GPL vmlinux 0x6e54e54f irq_find_mapping +EXPORT_SYMBOL_GPL vmlinux 0x6e89a560 regmap_irq_chip_get_base +EXPORT_SYMBOL_GPL vmlinux 0x6e99f484 get_mtd_device_nm +EXPORT_SYMBOL_GPL vmlinux 0x6ea00178 ata_scsi_slave_destroy +EXPORT_SYMBOL_GPL vmlinux 0x6eac5d70 ahci_set_em_messages +EXPORT_SYMBOL_GPL vmlinux 0x6eb79c95 ata_sff_dev_classify +EXPORT_SYMBOL_GPL vmlinux 0x6eb867ca gpiochip_add +EXPORT_SYMBOL_GPL vmlinux 0x6efd8f16 sdhci_send_command +EXPORT_SYMBOL_GPL vmlinux 0x6f1ee69e kgdb_unregister_io_module +EXPORT_SYMBOL_GPL vmlinux 0x6f4cad9e vfs_getxattr +EXPORT_SYMBOL_GPL vmlinux 0x6f61804e regulator_can_change_voltage +EXPORT_SYMBOL_GPL vmlinux 0x6f7914c5 da9052_disable_irq +EXPORT_SYMBOL_GPL vmlinux 0x6f8b9211 mtd_get_fact_prot_info +EXPORT_SYMBOL_GPL vmlinux 0x6f9150d8 kill_mtd_super +EXPORT_SYMBOL_GPL vmlinux 0x6f9ac75d snd_soc_dapm_force_enable_pin +EXPORT_SYMBOL_GPL vmlinux 0x6fa08f54 crypto_register_pcomp +EXPORT_SYMBOL_GPL vmlinux 0x6fb157fb snd_soc_dapm_info_pin_switch +EXPORT_SYMBOL_GPL vmlinux 0x6fb82be0 power_supply_register +EXPORT_SYMBOL_GPL vmlinux 0x6fbb3bd9 init_rs_non_canonical +EXPORT_SYMBOL_GPL vmlinux 0x6fd08832 pm_generic_poweroff_late +EXPORT_SYMBOL_GPL vmlinux 0x6fd7cb14 debugfs_create_atomic_t +EXPORT_SYMBOL_GPL vmlinux 0x6fe3d8cf ktime_add_safe +EXPORT_SYMBOL_GPL vmlinux 0x6ff607b6 crypto_get_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x701f8a63 wm8350_reg_unlock +EXPORT_SYMBOL_GPL vmlinux 0x7048b5d6 swiotlb_tbl_sync_single +EXPORT_SYMBOL_GPL vmlinux 0x7056b6f2 __clk_get_name +EXPORT_SYMBOL_GPL vmlinux 0x707ff1bb ata_xfer_mask2mode +EXPORT_SYMBOL_GPL vmlinux 0x70bb651d __tracepoint_block_rq_remap +EXPORT_SYMBOL_GPL vmlinux 0x70cdeaf3 crypto_register_algs +EXPORT_SYMBOL_GPL vmlinux 0x70cf032f usb_hcd_irq +EXPORT_SYMBOL_GPL vmlinux 0x70e26565 smpboot_register_percpu_thread +EXPORT_SYMBOL_GPL vmlinux 0x70e83058 pin_is_valid +EXPORT_SYMBOL_GPL vmlinux 0x71008581 atomic_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x710c73b6 crypto_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x710c7488 cpufreq_generic_attr +EXPORT_SYMBOL_GPL vmlinux 0x710dd7fc snd_pcm_add_chmap_ctls +EXPORT_SYMBOL_GPL vmlinux 0x7112c4a3 pwm_set_polarity +EXPORT_SYMBOL_GPL vmlinux 0x71213176 regmap_read +EXPORT_SYMBOL_GPL vmlinux 0x71250390 dma_request_slave_channel +EXPORT_SYMBOL_GPL vmlinux 0x712ce8d7 soc_ac97_ops +EXPORT_SYMBOL_GPL vmlinux 0x71377e31 dmaengine_unmap_put +EXPORT_SYMBOL_GPL vmlinux 0x713fc852 subsys_system_register +EXPORT_SYMBOL_GPL vmlinux 0x716265c7 debugfs_initialized +EXPORT_SYMBOL_GPL vmlinux 0x7170c6ed ata_sff_data_xfer32 +EXPORT_SYMBOL_GPL vmlinux 0x7172ae26 napi_by_id +EXPORT_SYMBOL_GPL vmlinux 0x7179b9f8 cpufreq_frequency_table_get_index +EXPORT_SYMBOL_GPL vmlinux 0x718130ec sdio_get_host_pm_caps +EXPORT_SYMBOL_GPL vmlinux 0x71850782 inet6_csk_reqsk_queue_hash_add +EXPORT_SYMBOL_GPL vmlinux 0x718840ac device_store_bool +EXPORT_SYMBOL_GPL vmlinux 0x719e17ff clk_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0x71a61f34 crypto_remove_spawns +EXPORT_SYMBOL_GPL vmlinux 0x71a6e6ae snd_soc_get_pcm_runtime +EXPORT_SYMBOL_GPL vmlinux 0x71dc9998 crypto_il_tab +EXPORT_SYMBOL_GPL vmlinux 0x71e84623 snd_soc_unregister_codec +EXPORT_SYMBOL_GPL vmlinux 0x71ecf535 amba_device_add +EXPORT_SYMBOL_GPL vmlinux 0x7217511e crypto_register_template +EXPORT_SYMBOL_GPL vmlinux 0x72234dd6 musb_readw +EXPORT_SYMBOL_GPL vmlinux 0x722b5571 debugfs_create_file_size +EXPORT_SYMBOL_GPL vmlinux 0x72386c53 irq_domain_associate +EXPORT_SYMBOL_GPL vmlinux 0x724f7251 key_type_logon +EXPORT_SYMBOL_GPL vmlinux 0x72515d5a snprint_stack_trace +EXPORT_SYMBOL_GPL vmlinux 0x7257e01f tty_port_install +EXPORT_SYMBOL_GPL vmlinux 0x725ca37c aead_geniv_free +EXPORT_SYMBOL_GPL vmlinux 0x72725e1b regcache_cache_bypass +EXPORT_SYMBOL_GPL vmlinux 0x72741f25 trace_vbprintk +EXPORT_SYMBOL_GPL vmlinux 0x7278d328 all_vm_events +EXPORT_SYMBOL_GPL vmlinux 0x727e90d5 class_dev_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0x72c254ae ulpi_viewport_access_ops +EXPORT_SYMBOL_GPL vmlinux 0x72da17e8 scsi_ioctl_block_when_processing_errors +EXPORT_SYMBOL_GPL vmlinux 0x72f61687 regcache_cache_only +EXPORT_SYMBOL_GPL vmlinux 0x730bd0c7 asic3_write_register +EXPORT_SYMBOL_GPL vmlinux 0x732b65b0 pwm_put +EXPORT_SYMBOL_GPL vmlinux 0x732ec962 snd_soc_jack_free_gpios +EXPORT_SYMBOL_GPL vmlinux 0x7335aff1 exportfs_decode_fh +EXPORT_SYMBOL_GPL vmlinux 0x734b03ca devm_hwrng_unregister +EXPORT_SYMBOL_GPL vmlinux 0x734f2674 thermal_zone_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x73510609 fl6_update_dst +EXPORT_SYMBOL_GPL vmlinux 0x7360dcbb arizona_free_irq +EXPORT_SYMBOL_GPL vmlinux 0x736abfc7 watchdog_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0x739fa37f gpiochip_add_pin_range +EXPORT_SYMBOL_GPL vmlinux 0x73a48b4a ata_sff_std_ports +EXPORT_SYMBOL_GPL vmlinux 0x73a6096a ata_qc_complete +EXPORT_SYMBOL_GPL vmlinux 0x73a678a2 pwm_config +EXPORT_SYMBOL_GPL vmlinux 0x73b89648 pid_nr_ns +EXPORT_SYMBOL_GPL vmlinux 0x73b98231 asymmetric_key_generate_id +EXPORT_SYMBOL_GPL vmlinux 0x73c832f2 ata_dev_classify +EXPORT_SYMBOL_GPL vmlinux 0x73ce7b24 irq_create_of_mapping +EXPORT_SYMBOL_GPL vmlinux 0x73d69364 ring_buffer_change_overwrite +EXPORT_SYMBOL_GPL vmlinux 0x73deef8d usb_reset_configuration +EXPORT_SYMBOL_GPL vmlinux 0x73ede992 snd_soc_dapm_get_volsw +EXPORT_SYMBOL_GPL vmlinux 0x73ee56d7 wm8350_reg_lock +EXPORT_SYMBOL_GPL vmlinux 0x743a165e ata_pack_xfermask +EXPORT_SYMBOL_GPL vmlinux 0x7464ea38 dev_pm_qos_add_global_notifier +EXPORT_SYMBOL_GPL vmlinux 0x7466bb18 __inet_inherit_port +EXPORT_SYMBOL_GPL vmlinux 0x74712c8b relay_switch_subbuf +EXPORT_SYMBOL_GPL vmlinux 0x747f80c2 each_symbol_section +EXPORT_SYMBOL_GPL vmlinux 0x748d801a pcap_adc_sync +EXPORT_SYMBOL_GPL vmlinux 0x74b5ea68 lcm_not_zero +EXPORT_SYMBOL_GPL vmlinux 0x74ba242e gpiod_set_array_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x74baf17a tracing_is_on +EXPORT_SYMBOL_GPL vmlinux 0x74ef0d4f sysfs_update_group +EXPORT_SYMBOL_GPL vmlinux 0x74fce4af regmap_write_async +EXPORT_SYMBOL_GPL vmlinux 0x7503be53 ata_pio_need_iordy +EXPORT_SYMBOL_GPL vmlinux 0x7522f3ba irq_modify_status +EXPORT_SYMBOL_GPL vmlinux 0x75284ddc regcache_drop_region +EXPORT_SYMBOL_GPL vmlinux 0x752c890e usb_gen_phy_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x753edf26 device_show_ulong +EXPORT_SYMBOL_GPL vmlinux 0x7559a9ec of_usb_get_dr_mode +EXPORT_SYMBOL_GPL vmlinux 0x7562ed5d sata_pmp_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x7589039f usb_get_from_anchor +EXPORT_SYMBOL_GPL vmlinux 0x758a782e blk_fill_rwbs +EXPORT_SYMBOL_GPL vmlinux 0x758c056d snd_soc_add_component_controls +EXPORT_SYMBOL_GPL vmlinux 0x7598d7c3 pinctrl_force_sleep +EXPORT_SYMBOL_GPL vmlinux 0x75c2b9f1 memalloc_socks +EXPORT_SYMBOL_GPL vmlinux 0x75ce7e85 bgpio_init +EXPORT_SYMBOL_GPL vmlinux 0x760071d6 regulator_put +EXPORT_SYMBOL_GPL vmlinux 0x761248cc ata_bmdma_setup +EXPORT_SYMBOL_GPL vmlinux 0x76238eeb trace_define_field +EXPORT_SYMBOL_GPL vmlinux 0x7628050d __clk_mux_determine_rate_closest +EXPORT_SYMBOL_GPL vmlinux 0x7635a74e shmem_get_seals +EXPORT_SYMBOL_GPL vmlinux 0x763c6b82 tpmm_chip_alloc +EXPORT_SYMBOL_GPL vmlinux 0x763cb569 ata_sff_tf_load +EXPORT_SYMBOL_GPL vmlinux 0x76536f48 power_supply_set_property +EXPORT_SYMBOL_GPL vmlinux 0x7654bf9a regulator_set_voltage_time_sel +EXPORT_SYMBOL_GPL vmlinux 0x7675e7c3 fuse_dev_operations +EXPORT_SYMBOL_GPL vmlinux 0x767c8161 da9052_adc_manual_read +EXPORT_SYMBOL_GPL vmlinux 0x7681946c unregister_pm_notifier +EXPORT_SYMBOL_GPL vmlinux 0x76c14c65 regmap_field_write +EXPORT_SYMBOL_GPL vmlinux 0x76c65d93 __blk_put_request +EXPORT_SYMBOL_GPL vmlinux 0x76c6745c anon_transport_class_register +EXPORT_SYMBOL_GPL vmlinux 0x76d9b876 clk_set_rate +EXPORT_SYMBOL_GPL vmlinux 0x76e2ca6a vchan_init +EXPORT_SYMBOL_GPL vmlinux 0x76ecebd5 pm_generic_suspend +EXPORT_SYMBOL_GPL vmlinux 0x770cf981 tpm_send +EXPORT_SYMBOL_GPL vmlinux 0x7723d8d1 hid_alloc_report_buf +EXPORT_SYMBOL_GPL vmlinux 0x7729cbdd task_handoff_register +EXPORT_SYMBOL_GPL vmlinux 0x77479407 platform_driver_unregister +EXPORT_SYMBOL_GPL vmlinux 0x7754bc11 dm_hold +EXPORT_SYMBOL_GPL vmlinux 0x7757b51a clk_unregister +EXPORT_SYMBOL_GPL vmlinux 0x775c8a04 irq_domain_remove +EXPORT_SYMBOL_GPL vmlinux 0x77b42c82 bdev_direct_access +EXPORT_SYMBOL_GPL vmlinux 0x77bcd0f9 vchan_find_desc +EXPORT_SYMBOL_GPL vmlinux 0x77e470ce ipv6_find_tlv +EXPORT_SYMBOL_GPL vmlinux 0x77e68a35 cpu_device_create +EXPORT_SYMBOL_GPL vmlinux 0x77f85b07 of_display_timings_exist +EXPORT_SYMBOL_GPL vmlinux 0x78181cbd dm_suspended +EXPORT_SYMBOL_GPL vmlinux 0x78204984 blk_mq_freeze_queue +EXPORT_SYMBOL_GPL vmlinux 0x78368c02 dev_pm_opp_get_freq +EXPORT_SYMBOL_GPL vmlinux 0x78577f03 ping_rcv +EXPORT_SYMBOL_GPL vmlinux 0x7860690f crypto_blkcipher_type +EXPORT_SYMBOL_GPL vmlinux 0x78847394 crypto_givcipher_type +EXPORT_SYMBOL_GPL vmlinux 0x788cdc28 devm_usb_get_phy_by_node +EXPORT_SYMBOL_GPL vmlinux 0x789c21ca cpufreq_table_validate_and_show +EXPORT_SYMBOL_GPL vmlinux 0x78a96526 devres_remove +EXPORT_SYMBOL_GPL vmlinux 0x78ae8175 smp_call_function_single_async +EXPORT_SYMBOL_GPL vmlinux 0x78ce40a6 sdhci_runtime_resume_host +EXPORT_SYMBOL_GPL vmlinux 0x78e21851 usb_hub_claim_port +EXPORT_SYMBOL_GPL vmlinux 0x7904be26 regmap_async_complete_cb +EXPORT_SYMBOL_GPL vmlinux 0x7913741d __tracepoint_mc_event +EXPORT_SYMBOL_GPL vmlinux 0x79195ca8 usb_hub_release_port +EXPORT_SYMBOL_GPL vmlinux 0x792380b6 scsi_schedule_eh +EXPORT_SYMBOL_GPL vmlinux 0x792866ae ping_init_sock +EXPORT_SYMBOL_GPL vmlinux 0x7944e0fc tracing_off +EXPORT_SYMBOL_GPL vmlinux 0x794b7271 orderly_reboot +EXPORT_SYMBOL_GPL vmlinux 0x796c2d48 dm_get_md +EXPORT_SYMBOL_GPL vmlinux 0x79cfcf24 crypto_dequeue_request +EXPORT_SYMBOL_GPL vmlinux 0x79defbe1 kthread_should_park +EXPORT_SYMBOL_GPL vmlinux 0x79e0bd96 sdhci_reset +EXPORT_SYMBOL_GPL vmlinux 0x79ef8b85 sdio_f0_writeb +EXPORT_SYMBOL_GPL vmlinux 0x79f41d5b try_get_online_cpus +EXPORT_SYMBOL_GPL vmlinux 0x79f729ca wakeup_source_create +EXPORT_SYMBOL_GPL vmlinux 0x7a1f6d21 pinctrl_lookup_state +EXPORT_SYMBOL_GPL vmlinux 0x7a25b6f2 ahci_shost_attrs +EXPORT_SYMBOL_GPL vmlinux 0x7a2e4b44 ezx_pcap_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x7a319404 clk_register_fixed_rate +EXPORT_SYMBOL_GPL vmlinux 0x7a3d98d7 reservation_object_wait_timeout_rcu +EXPORT_SYMBOL_GPL vmlinux 0x7a6edd8c blkdev_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x7a7743d5 snd_pcm_stop_xrun +EXPORT_SYMBOL_GPL vmlinux 0x7a8b79c1 verify_signature +EXPORT_SYMBOL_GPL vmlinux 0x7a944007 rcu_idle_enter +EXPORT_SYMBOL_GPL vmlinux 0x7ab3ca18 eventfd_ctx_read +EXPORT_SYMBOL_GPL vmlinux 0x7ab6062b rhashtable_insert_rehash +EXPORT_SYMBOL_GPL vmlinux 0x7ad8f3f7 __rt_mutex_init +EXPORT_SYMBOL_GPL vmlinux 0x7adfee22 ahci_sdev_attrs +EXPORT_SYMBOL_GPL vmlinux 0x7ae69d26 __skb_tstamp_tx +EXPORT_SYMBOL_GPL vmlinux 0x7aed2410 ata_sff_freeze +EXPORT_SYMBOL_GPL vmlinux 0x7afe971d devm_rtc_device_register +EXPORT_SYMBOL_GPL vmlinux 0x7b0eaf63 max_gen_clk_probe +EXPORT_SYMBOL_GPL vmlinux 0x7b0f1ab3 ring_buffer_free_read_page +EXPORT_SYMBOL_GPL vmlinux 0x7b1d544d edac_handler_set +EXPORT_SYMBOL_GPL vmlinux 0x7b2f8b27 snd_soc_dapm_force_enable_pin_unlocked +EXPORT_SYMBOL_GPL vmlinux 0x7b309f87 __bpf_prog_free +EXPORT_SYMBOL_GPL vmlinux 0x7b3f6083 rhashtable_free_and_destroy +EXPORT_SYMBOL_GPL vmlinux 0x7b45d951 snd_soc_unregister_component +EXPORT_SYMBOL_GPL vmlinux 0x7b4ff5cb dma_buf_attach +EXPORT_SYMBOL_GPL vmlinux 0x7b5101d6 usb_autopm_put_interface_no_suspend +EXPORT_SYMBOL_GPL vmlinux 0x7b7a9ac9 __sock_recv_timestamp +EXPORT_SYMBOL_GPL vmlinux 0x7b7c5eeb __crypto_alloc_tfm +EXPORT_SYMBOL_GPL vmlinux 0x7bf2ac90 gpiochip_remove_pin_ranges +EXPORT_SYMBOL_GPL vmlinux 0x7c346357 pkey_algo +EXPORT_SYMBOL_GPL vmlinux 0x7c48b098 snd_soc_codec_set_sysclk +EXPORT_SYMBOL_GPL vmlinux 0x7c4b2f48 device_property_read_string +EXPORT_SYMBOL_GPL vmlinux 0x7c4b69a0 raw_hash_sk +EXPORT_SYMBOL_GPL vmlinux 0x7c5ce212 crypto_ahash_setkey +EXPORT_SYMBOL_GPL vmlinux 0x7c6a49ce unix_table_lock +EXPORT_SYMBOL_GPL vmlinux 0x7c761fa5 snd_ctl_add_vmaster_hook +EXPORT_SYMBOL_GPL vmlinux 0x7c8cee69 uart_insert_char +EXPORT_SYMBOL_GPL vmlinux 0x7c9a7371 clk_prepare +EXPORT_SYMBOL_GPL vmlinux 0x7c9cca56 list_lru_count_node +EXPORT_SYMBOL_GPL vmlinux 0x7ca4df1b disk_part_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0x7cb1fe0b swiotlb_tbl_unmap_single +EXPORT_SYMBOL_GPL vmlinux 0x7cc0fadf do_take_over_console +EXPORT_SYMBOL_GPL vmlinux 0x7cc59386 spi_get_next_queued_message +EXPORT_SYMBOL_GPL vmlinux 0x7cd6f042 cpufreq_get_current_driver +EXPORT_SYMBOL_GPL vmlinux 0x7cd7683c snd_soc_of_parse_card_name +EXPORT_SYMBOL_GPL vmlinux 0x7ceaf0d5 generic_handle_irq +EXPORT_SYMBOL_GPL vmlinux 0x7d33fa64 dev_pm_get_subsys_data +EXPORT_SYMBOL_GPL vmlinux 0x7d443c24 ata_bmdma_stop +EXPORT_SYMBOL_GPL vmlinux 0x7d483503 irq_set_chained_handler_and_data +EXPORT_SYMBOL_GPL vmlinux 0x7d59dd46 pm_wq +EXPORT_SYMBOL_GPL vmlinux 0x7d5a880b pinctrl_find_gpio_range_from_pin +EXPORT_SYMBOL_GPL vmlinux 0x7d6a318b wakeup_source_destroy +EXPORT_SYMBOL_GPL vmlinux 0x7d6d9817 ata_eh_qc_retry +EXPORT_SYMBOL_GPL vmlinux 0x7d75d9a5 snd_soc_bytes_put +EXPORT_SYMBOL_GPL vmlinux 0x7d93359d thermal_zone_unbind_cooling_device +EXPORT_SYMBOL_GPL vmlinux 0x7d94574e __mtd_next_device +EXPORT_SYMBOL_GPL vmlinux 0x7da9d703 ata_port_schedule_eh +EXPORT_SYMBOL_GPL vmlinux 0x7dab26b6 wm831x_isinkv_values +EXPORT_SYMBOL_GPL vmlinux 0x7db16821 sata_set_spd +EXPORT_SYMBOL_GPL vmlinux 0x7dc0798b rtnl_put_cacheinfo +EXPORT_SYMBOL_GPL vmlinux 0x7dda30af unregister_tracepoint_module_notifier +EXPORT_SYMBOL_GPL vmlinux 0x7ddba182 crypto_larval_kill +EXPORT_SYMBOL_GPL vmlinux 0x7de8d9a6 hid_debug_event +EXPORT_SYMBOL_GPL vmlinux 0x7df33174 sata_std_hardreset +EXPORT_SYMBOL_GPL vmlinux 0x7e087465 blk_lld_busy +EXPORT_SYMBOL_GPL vmlinux 0x7e31e5d1 nand_wait_ready +EXPORT_SYMBOL_GPL vmlinux 0x7e349084 inet_hash_connect +EXPORT_SYMBOL_GPL vmlinux 0x7e43e777 arizona_pm_ops +EXPORT_SYMBOL_GPL vmlinux 0x7e4d4f22 max_gen_clk_remove +EXPORT_SYMBOL_GPL vmlinux 0x7e4f46ab usb_put_phy +EXPORT_SYMBOL_GPL vmlinux 0x7e5389f8 snd_soc_register_codec +EXPORT_SYMBOL_GPL vmlinux 0x7e54f7bf pm_generic_restore_noirq +EXPORT_SYMBOL_GPL vmlinux 0x7e606130 snd_soc_calc_bclk +EXPORT_SYMBOL_GPL vmlinux 0x7e64181d usb_calc_bus_time +EXPORT_SYMBOL_GPL vmlinux 0x7e7c0906 sock_diag_put_meminfo +EXPORT_SYMBOL_GPL vmlinux 0x7eacee68 fuse_request_send_background +EXPORT_SYMBOL_GPL vmlinux 0x7ed68941 asic3_read_register +EXPORT_SYMBOL_GPL vmlinux 0x7ee2ca93 skb_complete_wifi_ack +EXPORT_SYMBOL_GPL vmlinux 0x7ee71314 __blk_end_request_err +EXPORT_SYMBOL_GPL vmlinux 0x7f660605 udp6_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x7f6917ed of_modalias_node +EXPORT_SYMBOL_GPL vmlinux 0x7fbb5711 probes_decode_arm_table +EXPORT_SYMBOL_GPL vmlinux 0x7fce9e33 ping_seq_start +EXPORT_SYMBOL_GPL vmlinux 0x7fe7dd98 __init_kthread_worker +EXPORT_SYMBOL_GPL vmlinux 0x801019cf key_type_asymmetric +EXPORT_SYMBOL_GPL vmlinux 0x8010d2c6 percpu_ida_free +EXPORT_SYMBOL_GPL vmlinux 0x8034dd30 debugfs_rename +EXPORT_SYMBOL_GPL vmlinux 0x8039511f cpufreq_unregister_governor +EXPORT_SYMBOL_GPL vmlinux 0x80407bf4 unregister_trace_event +EXPORT_SYMBOL_GPL vmlinux 0x8071268e sdhci_pltfm_free +EXPORT_SYMBOL_GPL vmlinux 0x808ec1a3 crypto_alg_tested +EXPORT_SYMBOL_GPL vmlinux 0x80c68137 nf_log_buf_close +EXPORT_SYMBOL_GPL vmlinux 0x80cc217d snd_soc_set_ac97_ops_of_reset +EXPORT_SYMBOL_GPL vmlinux 0x80d5e57a mpi_free +EXPORT_SYMBOL_GPL vmlinux 0x80da6f58 dma_buf_vunmap +EXPORT_SYMBOL_GPL vmlinux 0x80f3268f __trace_printk +EXPORT_SYMBOL_GPL vmlinux 0x80f8589f trace_seq_putc +EXPORT_SYMBOL_GPL vmlinux 0x8103d035 get_pid_task +EXPORT_SYMBOL_GPL vmlinux 0x81099ab2 cpufreq_frequency_table_cpuinfo +EXPORT_SYMBOL_GPL vmlinux 0x81141959 tty_find_polling_driver +EXPORT_SYMBOL_GPL vmlinux 0x8114467b cn_netlink_send_mult +EXPORT_SYMBOL_GPL vmlinux 0x811dc334 usb_unregister_notify +EXPORT_SYMBOL_GPL vmlinux 0x8149ea54 ata_timing_find_mode +EXPORT_SYMBOL_GPL vmlinux 0x815588a6 clk_enable +EXPORT_SYMBOL_GPL vmlinux 0x816a10b6 skb_segment +EXPORT_SYMBOL_GPL vmlinux 0x8184daad of_property_read_u64 +EXPORT_SYMBOL_GPL vmlinux 0x81a58b39 __get_user_pages_fast +EXPORT_SYMBOL_GPL vmlinux 0x81c4a51b out_of_line_wait_on_bit_timeout +EXPORT_SYMBOL_GPL vmlinux 0x822ad4c7 percpu_ref_init +EXPORT_SYMBOL_GPL vmlinux 0x825eaa45 i2c_new_probed_device +EXPORT_SYMBOL_GPL vmlinux 0x829e9128 sched_setattr +EXPORT_SYMBOL_GPL vmlinux 0x82a236f1 bpf_prog_get +EXPORT_SYMBOL_GPL vmlinux 0x82b285fa srcu_batches_completed +EXPORT_SYMBOL_GPL vmlinux 0x82c8453d wm831x_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x82d79b51 sysctl_vfs_cache_pressure +EXPORT_SYMBOL_GPL vmlinux 0x8315e057 ata_sff_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x833031f2 blkcipher_walk_virt_block +EXPORT_SYMBOL_GPL vmlinux 0x834616bb sdev_evt_alloc +EXPORT_SYMBOL_GPL vmlinux 0x8349e71d device_reprobe +EXPORT_SYMBOL_GPL vmlinux 0x8356f378 hid_dump_report +EXPORT_SYMBOL_GPL vmlinux 0x8365809f dm_send_uevents +EXPORT_SYMBOL_GPL vmlinux 0x8365fb25 blk_abort_request +EXPORT_SYMBOL_GPL vmlinux 0x838b13e7 ring_buffer_free +EXPORT_SYMBOL_GPL vmlinux 0x83a3d3e2 arizona_dev_init +EXPORT_SYMBOL_GPL vmlinux 0x83a5ae2e __tracepoint_rpm_resume +EXPORT_SYMBOL_GPL vmlinux 0x83aa177f ata_wait_register +EXPORT_SYMBOL_GPL vmlinux 0x83af25d2 security_kernel_fw_from_file +EXPORT_SYMBOL_GPL vmlinux 0x83b77f20 cpu_subsys +EXPORT_SYMBOL_GPL vmlinux 0x83cc41de irq_generic_chip_ops +EXPORT_SYMBOL_GPL vmlinux 0x83e900aa snd_dmaengine_pcm_open_request_chan +EXPORT_SYMBOL_GPL vmlinux 0x83f00e0a pwm_can_sleep +EXPORT_SYMBOL_GPL vmlinux 0x840d2d33 of_overlay_create +EXPORT_SYMBOL_GPL vmlinux 0x84185bdc sata_link_debounce +EXPORT_SYMBOL_GPL vmlinux 0x8435a478 xfrm_audit_state_replay_overflow +EXPORT_SYMBOL_GPL vmlinux 0x847bfc07 con_debug_enter +EXPORT_SYMBOL_GPL vmlinux 0x848bd0fb call_srcu +EXPORT_SYMBOL_GPL vmlinux 0x84d24f00 regulator_map_voltage_linear_range +EXPORT_SYMBOL_GPL vmlinux 0x84d5c580 driver_register +EXPORT_SYMBOL_GPL vmlinux 0x84e705a9 get_kernel_pages +EXPORT_SYMBOL_GPL vmlinux 0x85050965 __irq_alloc_descs +EXPORT_SYMBOL_GPL vmlinux 0x8506baa8 clk_unregister_gate +EXPORT_SYMBOL_GPL vmlinux 0x85194963 pm_relax +EXPORT_SYMBOL_GPL vmlinux 0x85215b12 reset_controller_register +EXPORT_SYMBOL_GPL vmlinux 0x85216155 ezx_pcap_read +EXPORT_SYMBOL_GPL vmlinux 0x8525589f da903x_update +EXPORT_SYMBOL_GPL vmlinux 0x85358353 netdev_set_default_ethtool_ops +EXPORT_SYMBOL_GPL vmlinux 0x85385602 usbnet_suspend +EXPORT_SYMBOL_GPL vmlinux 0x853b2277 bus_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0x854549a7 regulator_list_voltage_table +EXPORT_SYMBOL_GPL vmlinux 0x8557143f sata_async_notification +EXPORT_SYMBOL_GPL vmlinux 0x856629e7 __tracepoint_rpm_return_int +EXPORT_SYMBOL_GPL vmlinux 0x8574ca6c gpio_request_array +EXPORT_SYMBOL_GPL vmlinux 0x8574ea9f wait_for_stable_page +EXPORT_SYMBOL_GPL vmlinux 0x85779a03 mtd_is_locked +EXPORT_SYMBOL_GPL vmlinux 0x85929534 hrtimer_init +EXPORT_SYMBOL_GPL vmlinux 0x8599c2bd sdio_align_size +EXPORT_SYMBOL_GPL vmlinux 0x85ae81b0 thermal_zone_device_register +EXPORT_SYMBOL_GPL vmlinux 0x85c7f674 ring_buffer_normalize_time_stamp +EXPORT_SYMBOL_GPL vmlinux 0x85e69d95 relay_file_operations +EXPORT_SYMBOL_GPL vmlinux 0x85e959a7 snd_soc_component_init_regmap +EXPORT_SYMBOL_GPL vmlinux 0x85eb8db1 elv_register +EXPORT_SYMBOL_GPL vmlinux 0x85f79e54 ata_std_prereset +EXPORT_SYMBOL_GPL vmlinux 0x8616b898 posix_clock_register +EXPORT_SYMBOL_GPL vmlinux 0x862b9816 cpu_topology +EXPORT_SYMBOL_GPL vmlinux 0x86389c82 bcm_dma_chan_free +EXPORT_SYMBOL_GPL vmlinux 0x8645a79e max8997_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0x86786286 klist_add_behind +EXPORT_SYMBOL_GPL vmlinux 0x868784cb __symbol_get +EXPORT_SYMBOL_GPL vmlinux 0x869704ae device_set_wakeup_enable +EXPORT_SYMBOL_GPL vmlinux 0x86a80a19 usb_hcd_platform_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x86f60802 __get_vm_area +EXPORT_SYMBOL_GPL vmlinux 0x86f6b99d synchronize_rcu_expedited +EXPORT_SYMBOL_GPL vmlinux 0x86f8c910 pcap_set_ts_bits +EXPORT_SYMBOL_GPL vmlinux 0x87053cac sata_scr_valid +EXPORT_SYMBOL_GPL vmlinux 0x87310169 ata_sas_async_probe +EXPORT_SYMBOL_GPL vmlinux 0x873fbaea edac_atomic_assert_error +EXPORT_SYMBOL_GPL vmlinux 0x8762cfdc perf_event_release_kernel +EXPORT_SYMBOL_GPL vmlinux 0x8763d243 thermal_notify_framework +EXPORT_SYMBOL_GPL vmlinux 0x876dfa18 gpiod_get_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x876f2235 napi_hash_add +EXPORT_SYMBOL_GPL vmlinux 0x8770f827 __clk_get_hw +EXPORT_SYMBOL_GPL vmlinux 0x87984b16 __tracepoint_cpu_idle +EXPORT_SYMBOL_GPL vmlinux 0x87aba159 tty_register_device_attr +EXPORT_SYMBOL_GPL vmlinux 0x87c7feed ata_sff_thaw +EXPORT_SYMBOL_GPL vmlinux 0x87ce089d md_rdev_clear +EXPORT_SYMBOL_GPL vmlinux 0x87d3e9b2 of_phy_simple_xlate +EXPORT_SYMBOL_GPL vmlinux 0x87d78950 wm831x_auxadc_read +EXPORT_SYMBOL_GPL vmlinux 0x87df2927 tpm2_do_selftest +EXPORT_SYMBOL_GPL vmlinux 0x8810ad5e crypto_xor +EXPORT_SYMBOL_GPL vmlinux 0x88136838 wm8997_i2c_regmap +EXPORT_SYMBOL_GPL vmlinux 0x883c2740 __cookie_v6_init_sequence +EXPORT_SYMBOL_GPL vmlinux 0x883e0f18 wm8350_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x883ed495 pm_wakeup_event +EXPORT_SYMBOL_GPL vmlinux 0x8872e4b5 pm_generic_runtime_resume +EXPORT_SYMBOL_GPL vmlinux 0x88a9b430 param_set_bool_enable_only +EXPORT_SYMBOL_GPL vmlinux 0x88ab6fe3 kgdb_active +EXPORT_SYMBOL_GPL vmlinux 0x88b5647c trace_clock_local +EXPORT_SYMBOL_GPL vmlinux 0x88b57584 list_lru_count_one +EXPORT_SYMBOL_GPL vmlinux 0x88c8da9a inet_twsk_purge +EXPORT_SYMBOL_GPL vmlinux 0x88d835e1 pwm_free +EXPORT_SYMBOL_GPL vmlinux 0x88de4f8d transport_class_unregister +EXPORT_SYMBOL_GPL vmlinux 0x88e2a89f blk_rq_prep_clone +EXPORT_SYMBOL_GPL vmlinux 0x88e7d9f5 mtd_read_fact_prot_reg +EXPORT_SYMBOL_GPL vmlinux 0x8924eb1e rcu_force_quiescent_state +EXPORT_SYMBOL_GPL vmlinux 0x892a7a97 device_show_int +EXPORT_SYMBOL_GPL vmlinux 0x89681c2f ata_link_online +EXPORT_SYMBOL_GPL vmlinux 0x898d6728 wm5110_patch +EXPORT_SYMBOL_GPL vmlinux 0x89a54791 of_pwm_xlate_with_flags +EXPORT_SYMBOL_GPL vmlinux 0x89bbafc6 usb_register_notify +EXPORT_SYMBOL_GPL vmlinux 0x89bf007c usb_stor_bulk_transfer_sg +EXPORT_SYMBOL_GPL vmlinux 0x89c7a62c fs_kobj +EXPORT_SYMBOL_GPL vmlinux 0x89f501be usbnet_start_xmit +EXPORT_SYMBOL_GPL vmlinux 0x8a0fc69d ata_sas_port_stop +EXPORT_SYMBOL_GPL vmlinux 0x8a121e2f task_cgroup_path +EXPORT_SYMBOL_GPL vmlinux 0x8a1cdb58 tpm_pm_resume +EXPORT_SYMBOL_GPL vmlinux 0x8a25beba skb_zerocopy +EXPORT_SYMBOL_GPL vmlinux 0x8a2bebbe subsys_dev_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0x8a554a36 mpc8xxx_spi_strmode +EXPORT_SYMBOL_GPL vmlinux 0x8a83c2a0 subsys_dev_iter_next +EXPORT_SYMBOL_GPL vmlinux 0x8a87cd86 blkcg_deactivate_policy +EXPORT_SYMBOL_GPL vmlinux 0x8a910c55 regmap_get_max_register +EXPORT_SYMBOL_GPL vmlinux 0x8aa65bd7 usb_create_shared_hcd +EXPORT_SYMBOL_GPL vmlinux 0x8aaf6030 pm_generic_resume_early +EXPORT_SYMBOL_GPL vmlinux 0x8abacc47 get_max_files +EXPORT_SYMBOL_GPL vmlinux 0x8ae33f73 regulator_get_voltage_sel_regmap +EXPORT_SYMBOL_GPL vmlinux 0x8b149c36 clk_is_match +EXPORT_SYMBOL_GPL vmlinux 0x8b24254f snd_soc_dapm_add_routes +EXPORT_SYMBOL_GPL vmlinux 0x8b366506 devm_of_pwm_get +EXPORT_SYMBOL_GPL vmlinux 0x8b3b6896 power_supply_powers +EXPORT_SYMBOL_GPL vmlinux 0x8b6cfa63 usb_wakeup_notification +EXPORT_SYMBOL_GPL vmlinux 0x8b775d3a __wake_up_locked +EXPORT_SYMBOL_GPL vmlinux 0x8b8eae9d blkcipher_walk_done +EXPORT_SYMBOL_GPL vmlinux 0x8b92b9e2 ahci_platform_enable_regulators +EXPORT_SYMBOL_GPL vmlinux 0x8b9446f5 snd_soc_component_update_bits_async +EXPORT_SYMBOL_GPL vmlinux 0x8ba854ac ahci_em_messages +EXPORT_SYMBOL_GPL vmlinux 0x8bc895a9 usb_hc_died +EXPORT_SYMBOL_GPL vmlinux 0x8be14a22 alarm_expires_remaining +EXPORT_SYMBOL_GPL vmlinux 0x8bf5bc7a snd_soc_dapm_disable_pin +EXPORT_SYMBOL_GPL vmlinux 0x8bf90df7 ata_bmdma_start +EXPORT_SYMBOL_GPL vmlinux 0x8c0215f2 pm_system_wakeup +EXPORT_SYMBOL_GPL vmlinux 0x8c03d20c destroy_workqueue +EXPORT_SYMBOL_GPL vmlinux 0x8c21debc kernfs_get +EXPORT_SYMBOL_GPL vmlinux 0x8c3926d7 disable_kprobe +EXPORT_SYMBOL_GPL vmlinux 0x8c55faf7 ata_cable_80wire +EXPORT_SYMBOL_GPL vmlinux 0x8c646600 edac_report_status +EXPORT_SYMBOL_GPL vmlinux 0x8c707e5f snd_soc_jack_add_zones +EXPORT_SYMBOL_GPL vmlinux 0x8c7277d5 usb_driver_set_configuration +EXPORT_SYMBOL_GPL vmlinux 0x8c743fb6 reset_control_status +EXPORT_SYMBOL_GPL vmlinux 0x8c785160 attribute_container_find_class_device +EXPORT_SYMBOL_GPL vmlinux 0x8c8fd5aa x509_cert_parse +EXPORT_SYMBOL_GPL vmlinux 0x8cdffade vfs_setxattr +EXPORT_SYMBOL_GPL vmlinux 0x8d0115f9 tpm2_probe +EXPORT_SYMBOL_GPL vmlinux 0x8d04e908 deregister_mtd_blktrans +EXPORT_SYMBOL_GPL vmlinux 0x8d257a65 crypto_register_rngs +EXPORT_SYMBOL_GPL vmlinux 0x8d2d4b02 scsi_queue_work +EXPORT_SYMBOL_GPL vmlinux 0x8d53177e device_get_child_node_count +EXPORT_SYMBOL_GPL vmlinux 0x8d53f1d1 smpboot_update_cpumask_percpu_thread +EXPORT_SYMBOL_GPL vmlinux 0x8d59374b tc3589x_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x8d7bbda3 __blkg_prfill_rwstat +EXPORT_SYMBOL_GPL vmlinux 0x8d87ac54 i2c_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0x8dc0bdb5 wm831x_device_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x8dd38ed8 hrtimer_forward +EXPORT_SYMBOL_GPL vmlinux 0x8dd7c282 sysfs_remove_bin_file +EXPORT_SYMBOL_GPL vmlinux 0x8dd98cae tcp_register_congestion_control +EXPORT_SYMBOL_GPL vmlinux 0x8e2138d4 inverse_translate +EXPORT_SYMBOL_GPL vmlinux 0x8e2b25c2 videomode_from_timings +EXPORT_SYMBOL_GPL vmlinux 0x8e2fbd1b pwm_request_from_chip +EXPORT_SYMBOL_GPL vmlinux 0x8e346e93 hid_output_report +EXPORT_SYMBOL_GPL vmlinux 0x8e60df7a __tracepoint_wbc_writepage +EXPORT_SYMBOL_GPL vmlinux 0x8e6df285 raw_unhash_sk +EXPORT_SYMBOL_GPL vmlinux 0x8e7894bd __atomic_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x8ea0b5c6 splice_to_pipe +EXPORT_SYMBOL_GPL vmlinux 0x8eaa55bd debugfs_create_u32 +EXPORT_SYMBOL_GPL vmlinux 0x8eab10d8 xfrm_output +EXPORT_SYMBOL_GPL vmlinux 0x8eb7537f usbnet_read_cmd_nopm +EXPORT_SYMBOL_GPL vmlinux 0x8ed7e5b8 debugfs_create_x16 +EXPORT_SYMBOL_GPL vmlinux 0x8ee0c19b hid_check_keys_pressed +EXPORT_SYMBOL_GPL vmlinux 0x8eff3ec2 ata_slave_link_init +EXPORT_SYMBOL_GPL vmlinux 0x8f0602d3 ata_bmdma_port_start32 +EXPORT_SYMBOL_GPL vmlinux 0x8f0748af rcu_expedite_gp +EXPORT_SYMBOL_GPL vmlinux 0x8f20842f ipv4_sk_redirect +EXPORT_SYMBOL_GPL vmlinux 0x8f26bb3e device_property_read_u16_array +EXPORT_SYMBOL_GPL vmlinux 0x8f30a9cb bitmap_resize +EXPORT_SYMBOL_GPL vmlinux 0x8f5512c9 fuse_abort_conn +EXPORT_SYMBOL_GPL vmlinux 0x8f6cee77 __round_jiffies_relative +EXPORT_SYMBOL_GPL vmlinux 0x8f71021a debugfs_create_u32_array +EXPORT_SYMBOL_GPL vmlinux 0x8fc283f1 rtc_irq_register +EXPORT_SYMBOL_GPL vmlinux 0x8fe73d1e crypto_grab_skcipher +EXPORT_SYMBOL_GPL vmlinux 0x8ff3411e __module_text_address +EXPORT_SYMBOL_GPL vmlinux 0x9007d3a8 kobject_uevent +EXPORT_SYMBOL_GPL vmlinux 0x90139bbb gpiod_put +EXPORT_SYMBOL_GPL vmlinux 0x903b627c list_lru_isolate_move +EXPORT_SYMBOL_GPL vmlinux 0x9047c11a trace_seq_bprintf +EXPORT_SYMBOL_GPL vmlinux 0x9050da55 ablkcipher_walk_phys +EXPORT_SYMBOL_GPL vmlinux 0x9062c322 ring_buffer_consume +EXPORT_SYMBOL_GPL vmlinux 0x9072a141 gpiod_get_array_optional +EXPORT_SYMBOL_GPL vmlinux 0x907f07aa ata_sff_qc_fill_rtf +EXPORT_SYMBOL_GPL vmlinux 0x908a0003 hidraw_connect +EXPORT_SYMBOL_GPL vmlinux 0x909da6a4 of_dma_simple_xlate +EXPORT_SYMBOL_GPL vmlinux 0x909f929f handle_mm_fault +EXPORT_SYMBOL_GPL vmlinux 0x90a1004a crypto_has_alg +EXPORT_SYMBOL_GPL vmlinux 0x90a3c0ab device_remove_bin_file +EXPORT_SYMBOL_GPL vmlinux 0x90c17b46 pm_generic_restore +EXPORT_SYMBOL_GPL vmlinux 0x90da2e27 cpufreq_generic_frequency_table_verify +EXPORT_SYMBOL_GPL vmlinux 0x90dad2f0 xattr_getsecurity +EXPORT_SYMBOL_GPL vmlinux 0x90fdb43c mddev_resume +EXPORT_SYMBOL_GPL vmlinux 0x910df3b5 device_property_read_u32_array +EXPORT_SYMBOL_GPL vmlinux 0x91289a8d get_current_tty +EXPORT_SYMBOL_GPL vmlinux 0x913d871b snd_soc_dapm_get_enum_double +EXPORT_SYMBOL_GPL vmlinux 0x91788d5e udp4_hwcsum +EXPORT_SYMBOL_GPL vmlinux 0x91853497 snd_soc_dpcm_can_be_params +EXPORT_SYMBOL_GPL vmlinux 0x918ad429 ring_buffer_lock_reserve +EXPORT_SYMBOL_GPL vmlinux 0x919adc1a snd_soc_bytes_info_ext +EXPORT_SYMBOL_GPL vmlinux 0x91c6e5b0 pcap_to_irq +EXPORT_SYMBOL_GPL vmlinux 0x91dda801 scatterwalk_map_and_copy +EXPORT_SYMBOL_GPL vmlinux 0x91e344ae fb_deferred_io_init +EXPORT_SYMBOL_GPL vmlinux 0x92191909 hidinput_count_leds +EXPORT_SYMBOL_GPL vmlinux 0x9219989a regmap_get_val_endian +EXPORT_SYMBOL_GPL vmlinux 0x92248771 pm_runtime_no_callbacks +EXPORT_SYMBOL_GPL vmlinux 0x922d0ab7 snd_soc_dapm_get_pin_status +EXPORT_SYMBOL_GPL vmlinux 0x92459c6b sk_clear_memalloc +EXPORT_SYMBOL_GPL vmlinux 0x924c46f8 zs_unmap_object +EXPORT_SYMBOL_GPL vmlinux 0x924eb465 fuse_conn_init +EXPORT_SYMBOL_GPL vmlinux 0x925443d1 snd_dmaengine_pcm_unregister +EXPORT_SYMBOL_GPL vmlinux 0x9260f263 kallsyms_on_each_symbol +EXPORT_SYMBOL_GPL vmlinux 0x929541d5 cpufreq_freq_attr_scaling_available_freqs +EXPORT_SYMBOL_GPL vmlinux 0x92a0d05e find_vpid +EXPORT_SYMBOL_GPL vmlinux 0x92b46f98 tty_port_tty_hangup +EXPORT_SYMBOL_GPL vmlinux 0x92b57248 flush_work +EXPORT_SYMBOL_GPL vmlinux 0x92b710e4 spi_async +EXPORT_SYMBOL_GPL vmlinux 0x92cb4fb4 bmp085_probe +EXPORT_SYMBOL_GPL vmlinux 0x92d31cfb fixed_phy_add +EXPORT_SYMBOL_GPL vmlinux 0x92d98138 xfrm_audit_policy_add +EXPORT_SYMBOL_GPL vmlinux 0x92db8f68 do_trace_rcu_torture_read +EXPORT_SYMBOL_GPL vmlinux 0x92e65592 hid_destroy_device +EXPORT_SYMBOL_GPL vmlinux 0x92e88e2d debugfs_create_x8 +EXPORT_SYMBOL_GPL vmlinux 0x92eb9257 skb_splice_bits +EXPORT_SYMBOL_GPL vmlinux 0x92ec7567 tps65912_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x92f240ba ahci_do_softreset +EXPORT_SYMBOL_GPL vmlinux 0x92f6e4b6 __ktime_divns +EXPORT_SYMBOL_GPL vmlinux 0x92f99ce1 netdev_rx_handler_register +EXPORT_SYMBOL_GPL vmlinux 0x93032220 watchdog_register_device +EXPORT_SYMBOL_GPL vmlinux 0x931e6482 snd_soc_put_enum_double +EXPORT_SYMBOL_GPL vmlinux 0x931f05d3 ktime_get_raw +EXPORT_SYMBOL_GPL vmlinux 0x932349db tty_port_register_device_attr +EXPORT_SYMBOL_GPL vmlinux 0x9332d931 of_property_read_u64_array +EXPORT_SYMBOL_GPL vmlinux 0x93406970 ata_bmdma_irq_clear +EXPORT_SYMBOL_GPL vmlinux 0x936431f2 sock_diag_register_inet_compat +EXPORT_SYMBOL_GPL vmlinux 0x939030db invalidate_inode_pages2 +EXPORT_SYMBOL_GPL vmlinux 0x93b57731 crypto_destroy_tfm +EXPORT_SYMBOL_GPL vmlinux 0x93e4ce51 sdio_release_irq +EXPORT_SYMBOL_GPL vmlinux 0x93f9785f devres_remove_group +EXPORT_SYMBOL_GPL vmlinux 0x941f2aaa eventfd_ctx_put +EXPORT_SYMBOL_GPL vmlinux 0x94272f61 flush_kthread_work +EXPORT_SYMBOL_GPL vmlinux 0x9441bd35 inet_csk_listen_stop +EXPORT_SYMBOL_GPL vmlinux 0x9463ff71 init_bch +EXPORT_SYMBOL_GPL vmlinux 0x94645413 usb_unanchor_urb +EXPORT_SYMBOL_GPL vmlinux 0x94abb745 sprint_oid +EXPORT_SYMBOL_GPL vmlinux 0x94cc98c3 class_remove_file_ns +EXPORT_SYMBOL_GPL vmlinux 0x94d591b6 extcon_set_cable_state +EXPORT_SYMBOL_GPL vmlinux 0x94f2f25a crypto_lookup_skcipher +EXPORT_SYMBOL_GPL vmlinux 0x9500b061 thermal_zone_device_update +EXPORT_SYMBOL_GPL vmlinux 0x9504df26 irq_wake_thread +EXPORT_SYMBOL_GPL vmlinux 0x951347e6 irq_find_host +EXPORT_SYMBOL_GPL vmlinux 0x952664c5 do_exit +EXPORT_SYMBOL_GPL vmlinux 0x953e1b9e ktime_get_real_seconds +EXPORT_SYMBOL_GPL vmlinux 0x9542cf01 pm_generic_restore_early +EXPORT_SYMBOL_GPL vmlinux 0x954d7a57 usb_gen_phy_init +EXPORT_SYMBOL_GPL vmlinux 0x955af1eb synchronize_srcu_expedited +EXPORT_SYMBOL_GPL vmlinux 0x955b0e2e kthread_worker_fn +EXPORT_SYMBOL_GPL vmlinux 0x955f78a5 ip6_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x958743fd sysfs_chmod_file +EXPORT_SYMBOL_GPL vmlinux 0x958df3ac zs_free +EXPORT_SYMBOL_GPL vmlinux 0x958f9109 securityfs_create_dir +EXPORT_SYMBOL_GPL vmlinux 0x95ae017a extcon_dev_unregister +EXPORT_SYMBOL_GPL vmlinux 0x95b93a0d register_trace_event +EXPORT_SYMBOL_GPL vmlinux 0x95c578a0 ioremap_page_range +EXPORT_SYMBOL_GPL vmlinux 0x95c6b8c2 ftrace_set_notrace +EXPORT_SYMBOL_GPL vmlinux 0x95d36722 rtc_set_time +EXPORT_SYMBOL_GPL vmlinux 0x95df0899 dev_pm_opp_add +EXPORT_SYMBOL_GPL vmlinux 0x960b8c4c usb_match_one_id +EXPORT_SYMBOL_GPL vmlinux 0x9621849f ring_buffer_event_data +EXPORT_SYMBOL_GPL vmlinux 0x96554810 register_keyboard_notifier +EXPORT_SYMBOL_GPL vmlinux 0x9670f926 register_kretprobe +EXPORT_SYMBOL_GPL vmlinux 0x96919667 musb_readl +EXPORT_SYMBOL_GPL vmlinux 0x96ba8381 usb_get_current_frame_number +EXPORT_SYMBOL_GPL vmlinux 0x96c11ce7 aead_geniv_exit +EXPORT_SYMBOL_GPL vmlinux 0x96c3e4bf shash_ahash_digest +EXPORT_SYMBOL_GPL vmlinux 0x9707d6c1 evm_inode_init_security +EXPORT_SYMBOL_GPL vmlinux 0x971bca05 stmpe_enable +EXPORT_SYMBOL_GPL vmlinux 0x973002c8 bcm_dma_is_busy +EXPORT_SYMBOL_GPL vmlinux 0x97355d3b wm5110_i2c_regmap +EXPORT_SYMBOL_GPL vmlinux 0x9738a40f crypto_unregister_aeads +EXPORT_SYMBOL_GPL vmlinux 0x9747ec6a alarm_init +EXPORT_SYMBOL_GPL vmlinux 0x9754994d tpm_pm_suspend +EXPORT_SYMBOL_GPL vmlinux 0x975519c1 asymmetric_key_id_same +EXPORT_SYMBOL_GPL vmlinux 0x9780fabc wm8997_patch +EXPORT_SYMBOL_GPL vmlinux 0x97bac74d sdio_writew +EXPORT_SYMBOL_GPL vmlinux 0x97c31d1c sata_link_scr_lpm +EXPORT_SYMBOL_GPL vmlinux 0x97c3f426 amba_device_alloc +EXPORT_SYMBOL_GPL vmlinux 0x97d57758 ata_scsi_simulate +EXPORT_SYMBOL_GPL vmlinux 0x97de2b83 debug_locks_silent +EXPORT_SYMBOL_GPL vmlinux 0x980e5f65 devm_extcon_dev_register +EXPORT_SYMBOL_GPL vmlinux 0x982a346e of_dma_is_coherent +EXPORT_SYMBOL_GPL vmlinux 0x983ea0b6 hid_register_report +EXPORT_SYMBOL_GPL vmlinux 0x98503a63 mpi_alloc +EXPORT_SYMBOL_GPL vmlinux 0x98580188 usb_register_device_driver +EXPORT_SYMBOL_GPL vmlinux 0x98628462 ata_sff_tf_read +EXPORT_SYMBOL_GPL vmlinux 0x9879932b crypto_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x98bf5f77 regulator_map_voltage_iterate +EXPORT_SYMBOL_GPL vmlinux 0x98c2415e dm_set_target_max_io_len +EXPORT_SYMBOL_GPL vmlinux 0x98c56ddb usbnet_get_endpoints +EXPORT_SYMBOL_GPL vmlinux 0x98c9f584 klist_init +EXPORT_SYMBOL_GPL vmlinux 0x98d116b1 mtd_kmalloc_up_to +EXPORT_SYMBOL_GPL vmlinux 0x98dd9127 usb_hcd_is_primary_hcd +EXPORT_SYMBOL_GPL vmlinux 0x98fa1e20 dm_get_reserved_rq_based_ios +EXPORT_SYMBOL_GPL vmlinux 0x98fba2d6 ata_cable_sata +EXPORT_SYMBOL_GPL vmlinux 0x98fcf128 irq_work_queue_on +EXPORT_SYMBOL_GPL vmlinux 0x990e2f2f usb_autopm_get_interface +EXPORT_SYMBOL_GPL vmlinux 0x991d5c65 cpufreq_governor_dbs +EXPORT_SYMBOL_GPL vmlinux 0x992217e2 gpiod_set_value +EXPORT_SYMBOL_GPL vmlinux 0x9924c496 __usb_get_extra_descriptor +EXPORT_SYMBOL_GPL vmlinux 0x992ca9c4 vc_sm_map +EXPORT_SYMBOL_GPL vmlinux 0x992d0b59 remove_irq +EXPORT_SYMBOL_GPL vmlinux 0x994b6612 __tracepoint_block_split +EXPORT_SYMBOL_GPL vmlinux 0x99558c6b attribute_container_register +EXPORT_SYMBOL_GPL vmlinux 0x995d1071 prof_on +EXPORT_SYMBOL_GPL vmlinux 0x9973add9 __cookie_v6_check +EXPORT_SYMBOL_GPL vmlinux 0x997c4347 unmap_kernel_range +EXPORT_SYMBOL_GPL vmlinux 0x997f5de4 of_alias_get_id +EXPORT_SYMBOL_GPL vmlinux 0x99840d00 timecounter_init +EXPORT_SYMBOL_GPL vmlinux 0x99909e0c of_property_read_string +EXPORT_SYMBOL_GPL vmlinux 0x999c855f register_net_sysctl +EXPORT_SYMBOL_GPL vmlinux 0x999f209f snd_soc_dapm_put_enum_double +EXPORT_SYMBOL_GPL vmlinux 0x99a9ff9a cpuidle_register_device +EXPORT_SYMBOL_GPL vmlinux 0x99daaed8 usb_register_dev +EXPORT_SYMBOL_GPL vmlinux 0x99dcc958 unuse_mm +EXPORT_SYMBOL_GPL vmlinux 0x99e9e20d ata_scsi_queuecmd +EXPORT_SYMBOL_GPL vmlinux 0x99eab43d __netpoll_cleanup +EXPORT_SYMBOL_GPL vmlinux 0x9a11a0fc crypto_attr_alg_name +EXPORT_SYMBOL_GPL vmlinux 0x9a28eee7 gpiod_get_array +EXPORT_SYMBOL_GPL vmlinux 0x9a683ab1 rtc_class_close +EXPORT_SYMBOL_GPL vmlinux 0x9a6f2641 device_initialize +EXPORT_SYMBOL_GPL vmlinux 0x9a89dbf7 lpddr2_jedec_min_tck +EXPORT_SYMBOL_GPL vmlinux 0x9ac11b74 suspend_set_ops +EXPORT_SYMBOL_GPL vmlinux 0x9ad64f6a unix_inq_len +EXPORT_SYMBOL_GPL vmlinux 0x9aeacb87 ring_buffer_iter_empty +EXPORT_SYMBOL_GPL vmlinux 0x9af0c941 crypto_grab_aead +EXPORT_SYMBOL_GPL vmlinux 0x9affbaf0 usb_hcd_end_port_resume +EXPORT_SYMBOL_GPL vmlinux 0x9b156f8e platform_device_add_resources +EXPORT_SYMBOL_GPL vmlinux 0x9b1e8c69 wm8350_device_exit +EXPORT_SYMBOL_GPL vmlinux 0x9b224463 tcp_twsk_unique +EXPORT_SYMBOL_GPL vmlinux 0x9b2ca76f ip6_dst_lookup_flow +EXPORT_SYMBOL_GPL vmlinux 0x9b3a0515 __inet_lookup_established +EXPORT_SYMBOL_GPL vmlinux 0x9b9a60c4 gpiod_set_raw_value +EXPORT_SYMBOL_GPL vmlinux 0x9ba22311 __rtnl_af_unregister +EXPORT_SYMBOL_GPL vmlinux 0x9beb2c08 usbnet_pause_rx +EXPORT_SYMBOL_GPL vmlinux 0x9bece81b mpi_cmp_ui +EXPORT_SYMBOL_GPL vmlinux 0x9bf058ab pinctrl_unregister +EXPORT_SYMBOL_GPL vmlinux 0x9c239557 devres_destroy +EXPORT_SYMBOL_GPL vmlinux 0x9c3e5b59 percpu_ida_destroy +EXPORT_SYMBOL_GPL vmlinux 0x9c4da65b hrtimer_get_remaining +EXPORT_SYMBOL_GPL vmlinux 0x9c71fb9e hidinput_connect +EXPORT_SYMBOL_GPL vmlinux 0x9c91f7e5 bmp085_detect +EXPORT_SYMBOL_GPL vmlinux 0x9c9e5d7a dapm_clock_event +EXPORT_SYMBOL_GPL vmlinux 0x9ca916b2 call_filter_check_discard +EXPORT_SYMBOL_GPL vmlinux 0x9cae8c13 snd_soc_dapm_disable_pin_unlocked +EXPORT_SYMBOL_GPL vmlinux 0x9cc4f70a register_pm_notifier +EXPORT_SYMBOL_GPL vmlinux 0x9ce0c100 crypto_init_spawn2 +EXPORT_SYMBOL_GPL vmlinux 0x9ce729a5 seq_release_net +EXPORT_SYMBOL_GPL vmlinux 0x9cee57a0 zs_create_pool +EXPORT_SYMBOL_GPL vmlinux 0x9cf3771f dma_run_dependencies +EXPORT_SYMBOL_GPL vmlinux 0x9cfd70bf ip6_redirect +EXPORT_SYMBOL_GPL vmlinux 0x9d0187e7 scsi_target_block +EXPORT_SYMBOL_GPL vmlinux 0x9d14ad1e pinctrl_utils_dt_free_map +EXPORT_SYMBOL_GPL vmlinux 0x9d269113 crypto_alg_extsize +EXPORT_SYMBOL_GPL vmlinux 0x9d2cfd2f rtc_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x9d3a873f dma_buf_get +EXPORT_SYMBOL_GPL vmlinux 0x9d3b4492 of_platform_depopulate +EXPORT_SYMBOL_GPL vmlinux 0x9d616a7a snd_soc_dapm_put_volsw +EXPORT_SYMBOL_GPL vmlinux 0x9d788526 kobject_move +EXPORT_SYMBOL_GPL vmlinux 0x9d8331c0 ring_buffer_read_page +EXPORT_SYMBOL_GPL vmlinux 0x9d83989f ata_dev_pair +EXPORT_SYMBOL_GPL vmlinux 0x9d845fc9 invalidate_inode_pages2_range +EXPORT_SYMBOL_GPL vmlinux 0x9d866247 crypto_lookup_template +EXPORT_SYMBOL_GPL vmlinux 0x9d8ffe9a bcm_dma_abort +EXPORT_SYMBOL_GPL vmlinux 0x9d9c3589 device_property_read_u8_array +EXPORT_SYMBOL_GPL vmlinux 0x9dadbb88 cpufreq_boost_supported +EXPORT_SYMBOL_GPL vmlinux 0x9dae8d6b alarm_forward_now +EXPORT_SYMBOL_GPL vmlinux 0x9db3dc8f x509_request_asymmetric_key +EXPORT_SYMBOL_GPL vmlinux 0x9dbaed51 usb_hcd_poll_rh_status +EXPORT_SYMBOL_GPL vmlinux 0x9dbc4e02 alloc_vm_area +EXPORT_SYMBOL_GPL vmlinux 0x9decc0c5 tc3589x_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x9dfdf722 gpio_free_array +EXPORT_SYMBOL_GPL vmlinux 0x9e029b25 shmem_read_mapping_page_gfp +EXPORT_SYMBOL_GPL vmlinux 0x9e07bd4f serial8250_clear_and_reinit_fifos +EXPORT_SYMBOL_GPL vmlinux 0x9e43557e tty_port_link_device +EXPORT_SYMBOL_GPL vmlinux 0x9e472f5f snmp_fold_field +EXPORT_SYMBOL_GPL vmlinux 0x9e51ec46 snd_soc_dapm_sync +EXPORT_SYMBOL_GPL vmlinux 0x9e662e01 hid_report_raw_event +EXPORT_SYMBOL_GPL vmlinux 0x9e718e1e exportfs_encode_fh +EXPORT_SYMBOL_GPL vmlinux 0x9e809f8a regmap_multi_reg_write_bypassed +EXPORT_SYMBOL_GPL vmlinux 0x9e9f352f fuse_do_open +EXPORT_SYMBOL_GPL vmlinux 0x9ea18608 crypto_ahash_digest +EXPORT_SYMBOL_GPL vmlinux 0x9ed554b3 unregister_keyboard_notifier +EXPORT_SYMBOL_GPL vmlinux 0x9ed6fa33 usb_free_urb +EXPORT_SYMBOL_GPL vmlinux 0x9eed28d4 thermal_of_cooling_device_register +EXPORT_SYMBOL_GPL vmlinux 0x9f099cf6 x509_get_sig_params +EXPORT_SYMBOL_GPL vmlinux 0x9f3a598b perf_event_create_kernel_counter +EXPORT_SYMBOL_GPL vmlinux 0x9f41a1fc ata_common_sdev_attrs +EXPORT_SYMBOL_GPL vmlinux 0x9f447a89 sdhci_pltfm_clk_get_max_clock +EXPORT_SYMBOL_GPL vmlinux 0x9f4599c9 snd_soc_remove_platform +EXPORT_SYMBOL_GPL vmlinux 0x9f47b6ca snd_soc_dapm_del_routes +EXPORT_SYMBOL_GPL vmlinux 0x9f902041 usb_put_dev +EXPORT_SYMBOL_GPL vmlinux 0x9fafd590 mbox_controller_register +EXPORT_SYMBOL_GPL vmlinux 0x9fbdc133 snd_dmaengine_pcm_get_chan +EXPORT_SYMBOL_GPL vmlinux 0x9fce80db fb_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x9fe939e1 mpi_powm +EXPORT_SYMBOL_GPL vmlinux 0xa013a9cf init_srcu_struct +EXPORT_SYMBOL_GPL vmlinux 0xa019d68d vfs_cancel_lock +EXPORT_SYMBOL_GPL vmlinux 0xa0237e26 snd_soc_info_xr_sx +EXPORT_SYMBOL_GPL vmlinux 0xa033df40 clk_register_divider +EXPORT_SYMBOL_GPL vmlinux 0xa091d10d fwnode_property_present +EXPORT_SYMBOL_GPL vmlinux 0xa0dad557 ahci_host_activate +EXPORT_SYMBOL_GPL vmlinux 0xa0fd9677 desc_to_gpio +EXPORT_SYMBOL_GPL vmlinux 0xa1167dc4 clk_divider_ops +EXPORT_SYMBOL_GPL vmlinux 0xa127a7d7 snd_soc_dapm_kcontrol_dapm +EXPORT_SYMBOL_GPL vmlinux 0xa14a1817 trace_seq_bitmask +EXPORT_SYMBOL_GPL vmlinux 0xa16825da fib_rules_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa18cb34b skb_gso_transport_seglen +EXPORT_SYMBOL_GPL vmlinux 0xa18f9433 mpi_read_buffer +EXPORT_SYMBOL_GPL vmlinux 0xa194b0e6 inet_csk_get_port +EXPORT_SYMBOL_GPL vmlinux 0xa197fd8c __netpoll_setup +EXPORT_SYMBOL_GPL vmlinux 0xa1a858dd put_mtd_device +EXPORT_SYMBOL_GPL vmlinux 0xa1bd7822 __tracepoint_block_bio_complete +EXPORT_SYMBOL_GPL vmlinux 0xa1e97568 rtc_read_time +EXPORT_SYMBOL_GPL vmlinux 0xa20b6188 pwmchip_add_with_polarity +EXPORT_SYMBOL_GPL vmlinux 0xa221c8e3 devm_pinctrl_put +EXPORT_SYMBOL_GPL vmlinux 0xa25b9d67 device_create_file +EXPORT_SYMBOL_GPL vmlinux 0xa25fa179 irq_domain_add_legacy +EXPORT_SYMBOL_GPL vmlinux 0xa26d9b4f workqueue_congested +EXPORT_SYMBOL_GPL vmlinux 0xa286a234 snd_pcm_format_name +EXPORT_SYMBOL_GPL vmlinux 0xa287e6ae regmap_update_bits_check_async +EXPORT_SYMBOL_GPL vmlinux 0xa28801be rdev_get_dev +EXPORT_SYMBOL_GPL vmlinux 0xa2b7bd79 tpm2_shutdown +EXPORT_SYMBOL_GPL vmlinux 0xa2b9c993 clk_register_fixed_factor +EXPORT_SYMBOL_GPL vmlinux 0xa2bafa40 interval_tree_insert +EXPORT_SYMBOL_GPL vmlinux 0xa2bec5d7 sock_prot_inuse_get +EXPORT_SYMBOL_GPL vmlinux 0xa2f5b791 inet_unhash +EXPORT_SYMBOL_GPL vmlinux 0xa314fab9 put_pid +EXPORT_SYMBOL_GPL vmlinux 0xa36c9ce7 blk_add_request_payload +EXPORT_SYMBOL_GPL vmlinux 0xa3705beb snd_soc_dapm_weak_routes +EXPORT_SYMBOL_GPL vmlinux 0xa38602cd drain_workqueue +EXPORT_SYMBOL_GPL vmlinux 0xa38839c5 iptunnel_pull_header +EXPORT_SYMBOL_GPL vmlinux 0xa389a49a profile_event_register +EXPORT_SYMBOL_GPL vmlinux 0xa398aef5 pinctrl_add_gpio_ranges +EXPORT_SYMBOL_GPL vmlinux 0xa3b958ce reset_hung_task_detector +EXPORT_SYMBOL_GPL vmlinux 0xa3c43a13 irq_gc_ack_set_bit +EXPORT_SYMBOL_GPL vmlinux 0xa3d0dfd8 of_clk_del_provider +EXPORT_SYMBOL_GPL vmlinux 0xa3e7c113 ring_buffer_iter_peek +EXPORT_SYMBOL_GPL vmlinux 0xa4036c8a regulator_is_supported_voltage +EXPORT_SYMBOL_GPL vmlinux 0xa40a4a12 add_mtd_blktrans_dev +EXPORT_SYMBOL_GPL vmlinux 0xa4207e1b spi_bus_type +EXPORT_SYMBOL_GPL vmlinux 0xa42e6da8 usb_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0xa456e083 unregister_pernet_subsys +EXPORT_SYMBOL_GPL vmlinux 0xa47fd641 register_mtd_user +EXPORT_SYMBOL_GPL vmlinux 0xa48196c8 kdb_poll_idx +EXPORT_SYMBOL_GPL vmlinux 0xa4a361d0 regulator_get_optional +EXPORT_SYMBOL_GPL vmlinux 0xa4acc6b1 arizona_of_get_type +EXPORT_SYMBOL_GPL vmlinux 0xa4f324c3 crypto_larval_lookup +EXPORT_SYMBOL_GPL vmlinux 0xa4fc9e9b ahci_start_engine +EXPORT_SYMBOL_GPL vmlinux 0xa533221c da9052_disable_irq_nosync +EXPORT_SYMBOL_GPL vmlinux 0xa54454ab fwnode_get_named_gpiod +EXPORT_SYMBOL_GPL vmlinux 0xa5587aa0 crypto_alg_mod_lookup +EXPORT_SYMBOL_GPL vmlinux 0xa565d288 cpufreq_freq_attr_scaling_boost_freqs +EXPORT_SYMBOL_GPL vmlinux 0xa573bdde nl_table +EXPORT_SYMBOL_GPL vmlinux 0xa5af62b4 mtd_write +EXPORT_SYMBOL_GPL vmlinux 0xa5b29dc1 usb_get_dev +EXPORT_SYMBOL_GPL vmlinux 0xa5c51bbf crypto_hash_walk_done +EXPORT_SYMBOL_GPL vmlinux 0xa5d80c70 gpiod_direction_output_raw +EXPORT_SYMBOL_GPL vmlinux 0xa5e1ee4b usb_anchor_urb +EXPORT_SYMBOL_GPL vmlinux 0xa5e376ca __netlink_alloc_skb +EXPORT_SYMBOL_GPL vmlinux 0xa5e407e4 wm5110_aod +EXPORT_SYMBOL_GPL vmlinux 0xa5e8fd06 subsys_find_device_by_id +EXPORT_SYMBOL_GPL vmlinux 0xa5efbf4c async_synchronize_full +EXPORT_SYMBOL_GPL vmlinux 0xa5f8854a usb_unlink_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0xa61d87d5 spi_get_device_id +EXPORT_SYMBOL_GPL vmlinux 0xa61f01f1 regulator_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0xa6236fa7 blkio_cgrp_subsys +EXPORT_SYMBOL_GPL vmlinux 0xa625110d kmsg_dump_rewind +EXPORT_SYMBOL_GPL vmlinux 0xa6266c4e alarm_start +EXPORT_SYMBOL_GPL vmlinux 0xa651120d inet_peer_base_init +EXPORT_SYMBOL_GPL vmlinux 0xa65b3cc4 __gpiod_get_index +EXPORT_SYMBOL_GPL vmlinux 0xa683a5f4 input_ff_destroy +EXPORT_SYMBOL_GPL vmlinux 0xa688bc0b blkdev_read_iter +EXPORT_SYMBOL_GPL vmlinux 0xa6ad5c2c adp5520_write +EXPORT_SYMBOL_GPL vmlinux 0xa6b21ef2 dpm_suspend_end +EXPORT_SYMBOL_GPL vmlinux 0xa6bf284a syscon_regmap_lookup_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0xa6e1a69d kick_all_cpus_sync +EXPORT_SYMBOL_GPL vmlinux 0xa6f6f168 phy_power_on +EXPORT_SYMBOL_GPL vmlinux 0xa70dadd5 sata_scr_write +EXPORT_SYMBOL_GPL vmlinux 0xa70ef921 usbnet_purge_paused_rxq +EXPORT_SYMBOL_GPL vmlinux 0xa7113007 vc_sm_free +EXPORT_SYMBOL_GPL vmlinux 0xa71c60f4 kobject_create_and_add +EXPORT_SYMBOL_GPL vmlinux 0xa7272538 crypto_aead_setauthsize +EXPORT_SYMBOL_GPL vmlinux 0xa731c508 __irq_domain_add +EXPORT_SYMBOL_GPL vmlinux 0xa738102d rtc_update_irq_enable +EXPORT_SYMBOL_GPL vmlinux 0xa740338f blocking_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa7411a7d of_dma_controller_register +EXPORT_SYMBOL_GPL vmlinux 0xa75312bc call_rcu_sched +EXPORT_SYMBOL_GPL vmlinux 0xa7544275 spi_unregister_master +EXPORT_SYMBOL_GPL vmlinux 0xa7573169 snd_soc_resume +EXPORT_SYMBOL_GPL vmlinux 0xa77dea44 bus_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa796493c clk_register_fractional_divider +EXPORT_SYMBOL_GPL vmlinux 0xa7ade4f6 rt_mutex_trylock +EXPORT_SYMBOL_GPL vmlinux 0xa7b27fe7 class_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa7e0812e pm_runtime_set_autosuspend_delay +EXPORT_SYMBOL_GPL vmlinux 0xa7e13a6a clk_mux_ro_ops +EXPORT_SYMBOL_GPL vmlinux 0xa822b3f3 blk_execute_rq_nowait +EXPORT_SYMBOL_GPL vmlinux 0xa827ef1c register_wide_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0xa82e2819 regulator_bulk_force_disable +EXPORT_SYMBOL_GPL vmlinux 0xa838a8ff snd_soc_add_platform_controls +EXPORT_SYMBOL_GPL vmlinux 0xa851973a raw_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xa85a76af mtd_lock_user_prot_reg +EXPORT_SYMBOL_GPL vmlinux 0xa85f7a84 devm_snd_soc_register_platform +EXPORT_SYMBOL_GPL vmlinux 0xa87c8600 snd_soc_test_bits +EXPORT_SYMBOL_GPL vmlinux 0xa8818a70 bio_alloc_mddev +EXPORT_SYMBOL_GPL vmlinux 0xa89eac4f __mnt_drop_write +EXPORT_SYMBOL_GPL vmlinux 0xa8b76a68 timecounter_cyc2time +EXPORT_SYMBOL_GPL vmlinux 0xa8bc717e percpu_ida_free_tags +EXPORT_SYMBOL_GPL vmlinux 0xa8cfe5bc sdhci_get_of_property +EXPORT_SYMBOL_GPL vmlinux 0xa8d2d8cb usbnet_unlink_rx_urbs +EXPORT_SYMBOL_GPL vmlinux 0xa8d553cc tty_buffer_space_avail +EXPORT_SYMBOL_GPL vmlinux 0xa8e05dcd usb_remove_hcd +EXPORT_SYMBOL_GPL vmlinux 0xa9020eff perf_event_read_value +EXPORT_SYMBOL_GPL vmlinux 0xa9320d27 ktime_get_seconds +EXPORT_SYMBOL_GPL vmlinux 0xa95f746d crypto_unregister_instance +EXPORT_SYMBOL_GPL vmlinux 0xa980af16 RSA_public_key_algorithm +EXPORT_SYMBOL_GPL vmlinux 0xa9869684 get_kernel_page +EXPORT_SYMBOL_GPL vmlinux 0xa987ea84 __clocksource_register_scale +EXPORT_SYMBOL_GPL vmlinux 0xa9a485d9 wm8997_aod +EXPORT_SYMBOL_GPL vmlinux 0xa9a76b98 snd_soc_set_runtime_hwparams +EXPORT_SYMBOL_GPL vmlinux 0xa9ad59d1 netlink_add_tap +EXPORT_SYMBOL_GPL vmlinux 0xa9e18049 task_handoff_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa9e59bf7 register_jprobe +EXPORT_SYMBOL_GPL vmlinux 0xa9f6422a __pm_runtime_resume +EXPORT_SYMBOL_GPL vmlinux 0xaa2a72bf __iowrite64_copy +EXPORT_SYMBOL_GPL vmlinux 0xaa3a24fe transport_add_device +EXPORT_SYMBOL_GPL vmlinux 0xaa5723cb devm_phy_optional_get +EXPORT_SYMBOL_GPL vmlinux 0xaaa918c9 ftrace_dump +EXPORT_SYMBOL_GPL vmlinux 0xaaabe148 dma_buf_kunmap_atomic +EXPORT_SYMBOL_GPL vmlinux 0xaad713c5 kern_mount_data +EXPORT_SYMBOL_GPL vmlinux 0xaaf7384b ata_sas_queuecmd +EXPORT_SYMBOL_GPL vmlinux 0xab00367f of_dma_request_slave_channel +EXPORT_SYMBOL_GPL vmlinux 0xab03dce4 rtc_read_alarm +EXPORT_SYMBOL_GPL vmlinux 0xab18e6bd scatterwalk_map +EXPORT_SYMBOL_GPL vmlinux 0xab29ad96 cpuidle_disable_device +EXPORT_SYMBOL_GPL vmlinux 0xab2b865e mbox_controller_unregister +EXPORT_SYMBOL_GPL vmlinux 0xab5a5de4 fixed_phy_del +EXPORT_SYMBOL_GPL vmlinux 0xab6babaf pm_qos_request +EXPORT_SYMBOL_GPL vmlinux 0xab7847db devm_regulator_unregister +EXPORT_SYMBOL_GPL vmlinux 0xab8bc1a2 snd_pcm_rate_mask_intersect +EXPORT_SYMBOL_GPL vmlinux 0xab945a16 __iowrite32_copy +EXPORT_SYMBOL_GPL vmlinux 0xab9563f1 fat_add_entries +EXPORT_SYMBOL_GPL vmlinux 0xabc640f3 list_lru_isolate +EXPORT_SYMBOL_GPL vmlinux 0xabd9aea0 snd_soc_limit_volume +EXPORT_SYMBOL_GPL vmlinux 0xabda1e2e decode_rs16 +EXPORT_SYMBOL_GPL vmlinux 0xabe8865d usbnet_get_msglevel +EXPORT_SYMBOL_GPL vmlinux 0xabfdb7ec lp8788_write_byte +EXPORT_SYMBOL_GPL vmlinux 0xac12b966 da9052_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0xac2617b7 need_load_eval +EXPORT_SYMBOL_GPL vmlinux 0xac3ab6ee usb_stor_CB_reset +EXPORT_SYMBOL_GPL vmlinux 0xac477d8a user_preparse +EXPORT_SYMBOL_GPL vmlinux 0xac535607 power_supply_register_no_ws +EXPORT_SYMBOL_GPL vmlinux 0xac5babe5 crypto_register_aeads +EXPORT_SYMBOL_GPL vmlinux 0xac5f3d70 musb_readb +EXPORT_SYMBOL_GPL vmlinux 0xac893e91 dev_pm_qos_flags +EXPORT_SYMBOL_GPL vmlinux 0xac8a8ea1 devm_power_supply_register +EXPORT_SYMBOL_GPL vmlinux 0xac9af457 crypto_unregister_alg +EXPORT_SYMBOL_GPL vmlinux 0xacb4689d skb_complete_tx_timestamp +EXPORT_SYMBOL_GPL vmlinux 0xacba109f i2c_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0xacd3afac regulator_force_disable +EXPORT_SYMBOL_GPL vmlinux 0xacdea2f1 list_lru_del +EXPORT_SYMBOL_GPL vmlinux 0xace1de41 ptp_classify_raw +EXPORT_SYMBOL_GPL vmlinux 0xace5c0fc usb_bus_list +EXPORT_SYMBOL_GPL vmlinux 0xacec1985 usb_root_hub_lost_power +EXPORT_SYMBOL_GPL vmlinux 0xad036fec debugfs_create_u64 +EXPORT_SYMBOL_GPL vmlinux 0xad29f03c __ip_route_output_key +EXPORT_SYMBOL_GPL vmlinux 0xad593e21 crypto_hash_walk_first +EXPORT_SYMBOL_GPL vmlinux 0xad69b27a blk_mq_free_hctx_request +EXPORT_SYMBOL_GPL vmlinux 0xadc785ec kgdb_register_io_module +EXPORT_SYMBOL_GPL vmlinux 0xadd09aac __gpiod_get_index_optional +EXPORT_SYMBOL_GPL vmlinux 0xadd7ed8f snd_soc_of_get_dai_name +EXPORT_SYMBOL_GPL vmlinux 0xaddc9bfc snd_soc_dai_set_sysclk +EXPORT_SYMBOL_GPL vmlinux 0xadf440ce device_destroy +EXPORT_SYMBOL_GPL vmlinux 0xadf6aa4d tpm_pcr_read +EXPORT_SYMBOL_GPL vmlinux 0xae00c250 arizona_dev_exit +EXPORT_SYMBOL_GPL vmlinux 0xae08c9ff usb_alloc_coherent +EXPORT_SYMBOL_GPL vmlinux 0xae20e3dc rdev_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0xae638dc0 simple_attr_read +EXPORT_SYMBOL_GPL vmlinux 0xae69b1c1 usermodehelper_read_unlock +EXPORT_SYMBOL_GPL vmlinux 0xae735a13 bus_create_file +EXPORT_SYMBOL_GPL vmlinux 0xae7c231d mpi_cmp +EXPORT_SYMBOL_GPL vmlinux 0xae7e84ee netdev_rx_handler_unregister +EXPORT_SYMBOL_GPL vmlinux 0xae81922b of_overlay_destroy_all +EXPORT_SYMBOL_GPL vmlinux 0xae8aa931 dev_pm_opp_get_voltage +EXPORT_SYMBOL_GPL vmlinux 0xae8dd7d7 snd_dmaengine_pcm_close_release_chan +EXPORT_SYMBOL_GPL vmlinux 0xae8fc870 perf_pmu_register +EXPORT_SYMBOL_GPL vmlinux 0xae9f9d59 nl_table_lock +EXPORT_SYMBOL_GPL vmlinux 0xaed4a372 of_property_count_elems_of_size +EXPORT_SYMBOL_GPL vmlinux 0xaedcf551 dev_pm_qos_expose_latency_tolerance +EXPORT_SYMBOL_GPL vmlinux 0xaee62298 phy_remove_lookup +EXPORT_SYMBOL_GPL vmlinux 0xaef1f028 of_thermal_get_trip_points +EXPORT_SYMBOL_GPL vmlinux 0xaf05e3e4 __mmdrop +EXPORT_SYMBOL_GPL vmlinux 0xaf07be69 regmap_exit +EXPORT_SYMBOL_GPL vmlinux 0xaf348da7 cpu_pm_exit +EXPORT_SYMBOL_GPL vmlinux 0xaf36df0a pwm_get_chip_data +EXPORT_SYMBOL_GPL vmlinux 0xaf3f3be8 pwm_request +EXPORT_SYMBOL_GPL vmlinux 0xafba00fc ahci_init_controller +EXPORT_SYMBOL_GPL vmlinux 0xafc0d861 max8997_read_reg +EXPORT_SYMBOL_GPL vmlinux 0xafc2b250 regulator_enable_regmap +EXPORT_SYMBOL_GPL vmlinux 0xafc5e7ef cpufreq_cooling_register +EXPORT_SYMBOL_GPL vmlinux 0xafc7f064 __module_address +EXPORT_SYMBOL_GPL vmlinux 0xafea72c3 ata_dummy_port_info +EXPORT_SYMBOL_GPL vmlinux 0xafedfc3d phy_pm_runtime_get +EXPORT_SYMBOL_GPL vmlinux 0xaff7a06c gpiod_set_raw_array_value +EXPORT_SYMBOL_GPL vmlinux 0xafffec15 devm_devfreq_event_add_edev +EXPORT_SYMBOL_GPL vmlinux 0xb01140d9 of_get_nand_ecc_step_size +EXPORT_SYMBOL_GPL vmlinux 0xb0188dd5 __rtnl_link_unregister +EXPORT_SYMBOL_GPL vmlinux 0xb029f6a7 driver_for_each_device +EXPORT_SYMBOL_GPL vmlinux 0xb0400c6b add_timer_on +EXPORT_SYMBOL_GPL vmlinux 0xb050f329 init_rs +EXPORT_SYMBOL_GPL vmlinux 0xb06265c4 of_reserved_mem_device_release +EXPORT_SYMBOL_GPL vmlinux 0xb077e70a clk_unprepare +EXPORT_SYMBOL_GPL vmlinux 0xb081f1f8 of_css +EXPORT_SYMBOL_GPL vmlinux 0xb0b335a8 clk_register_gpio_gate +EXPORT_SYMBOL_GPL vmlinux 0xb0b85f47 ring_buffer_iter_reset +EXPORT_SYMBOL_GPL vmlinux 0xb0b8df32 kernfs_find_and_get_ns +EXPORT_SYMBOL_GPL vmlinux 0xb0b8e950 devres_find +EXPORT_SYMBOL_GPL vmlinux 0xb0bb8ebb sata_lpm_ignore_phy_events +EXPORT_SYMBOL_GPL vmlinux 0xb0c720fd page_cache_async_readahead +EXPORT_SYMBOL_GPL vmlinux 0xb0d8d6bf spi_alloc_master +EXPORT_SYMBOL_GPL vmlinux 0xb0dc0a2c lp8788_read_byte +EXPORT_SYMBOL_GPL vmlinux 0xb0de297e fuse_get_req_for_background +EXPORT_SYMBOL_GPL vmlinux 0xb1150208 thermal_zone_of_sensor_unregister +EXPORT_SYMBOL_GPL vmlinux 0xb11f2798 dma_buf_export +EXPORT_SYMBOL_GPL vmlinux 0xb12f5f66 ata_cable_ignore +EXPORT_SYMBOL_GPL vmlinux 0xb140d14c ring_buffer_read +EXPORT_SYMBOL_GPL vmlinux 0xb1416123 sdio_readl +EXPORT_SYMBOL_GPL vmlinux 0xb1425b32 dm_table_add_target_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xb14fa7b1 blk_mq_tags_cpumask +EXPORT_SYMBOL_GPL vmlinux 0xb1523d78 __blkdev_driver_ioctl +EXPORT_SYMBOL_GPL vmlinux 0xb152d8ee sdhci_pltfm_pmops +EXPORT_SYMBOL_GPL vmlinux 0xb15bcbc9 sysfs_notify +EXPORT_SYMBOL_GPL vmlinux 0xb166f8d4 hrtimer_start_range_ns +EXPORT_SYMBOL_GPL vmlinux 0xb18429eb suspend_device_irqs +EXPORT_SYMBOL_GPL vmlinux 0xb197ce62 fuse_do_ioctl +EXPORT_SYMBOL_GPL vmlinux 0xb1acbcce rcu_barrier_sched +EXPORT_SYMBOL_GPL vmlinux 0xb1aee76a dev_pm_opp_find_freq_floor +EXPORT_SYMBOL_GPL vmlinux 0xb1bed25d dpm_resume_start +EXPORT_SYMBOL_GPL vmlinux 0xb1c0926d inet6_csk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0xb1c0c1c2 async_schedule_domain +EXPORT_SYMBOL_GPL vmlinux 0xb1e25684 __trace_bputs +EXPORT_SYMBOL_GPL vmlinux 0xb2210d64 reset_control_deassert +EXPORT_SYMBOL_GPL vmlinux 0xb257494a ata_eh_freeze_port +EXPORT_SYMBOL_GPL vmlinux 0xb26a1add elfcorehdr_addr +EXPORT_SYMBOL_GPL vmlinux 0xb279957d netlink_remove_tap +EXPORT_SYMBOL_GPL vmlinux 0xb2830feb snd_soc_register_platform +EXPORT_SYMBOL_GPL vmlinux 0xb29a44fd __mmc_switch +EXPORT_SYMBOL_GPL vmlinux 0xb2a29f6f usb_stor_suspend +EXPORT_SYMBOL_GPL vmlinux 0xb2b8316d dev_attr_unload_heads +EXPORT_SYMBOL_GPL vmlinux 0xb2e764e8 suspend_valid_only_mem +EXPORT_SYMBOL_GPL vmlinux 0xb2ecaa94 sysfs_add_link_to_group +EXPORT_SYMBOL_GPL vmlinux 0xb3074156 kernfs_notify +EXPORT_SYMBOL_GPL vmlinux 0xb3103ffa __trace_note_message +EXPORT_SYMBOL_GPL vmlinux 0xb3206cab md_rdev_init +EXPORT_SYMBOL_GPL vmlinux 0xb36461ba scsi_mode_select +EXPORT_SYMBOL_GPL vmlinux 0xb3650281 debugfs_print_regs32 +EXPORT_SYMBOL_GPL vmlinux 0xb37c7e90 hid_dump_field +EXPORT_SYMBOL_GPL vmlinux 0xb38e04ef sock_update_netprioidx +EXPORT_SYMBOL_GPL vmlinux 0xb394f4d0 sdio_writeb +EXPORT_SYMBOL_GPL vmlinux 0xb39aef88 fat_attach +EXPORT_SYMBOL_GPL vmlinux 0xb3a648f5 ip6_datagram_recv_ctl +EXPORT_SYMBOL_GPL vmlinux 0xb3ad51d2 put_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0xb3afa693 dio_end_io +EXPORT_SYMBOL_GPL vmlinux 0xb3b82d6c sdhci_pltfm_resume +EXPORT_SYMBOL_GPL vmlinux 0xb3ca66b0 ip6_sk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0xb40d26bb cpufreq_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0xb4134b15 ata_std_qc_defer +EXPORT_SYMBOL_GPL vmlinux 0xb41c81a3 rdev_get_id +EXPORT_SYMBOL_GPL vmlinux 0xb42200c4 crypto_ahash_finup +EXPORT_SYMBOL_GPL vmlinux 0xb426d33f musb_interrupt +EXPORT_SYMBOL_GPL vmlinux 0xb427839b regulator_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0xb44bdbd2 usb_stor_transparent_scsi_command +EXPORT_SYMBOL_GPL vmlinux 0xb4515cb6 devm_regulator_get_optional +EXPORT_SYMBOL_GPL vmlinux 0xb45d224e hid_ignore +EXPORT_SYMBOL_GPL vmlinux 0xb463245b tty_ldisc_ref_wait +EXPORT_SYMBOL_GPL vmlinux 0xb4633a7c ata_sff_qc_issue +EXPORT_SYMBOL_GPL vmlinux 0xb4b66392 blkg_conf_prep +EXPORT_SYMBOL_GPL vmlinux 0xb4b97c90 pvclock_gtod_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xb4be826d ata_link_offline +EXPORT_SYMBOL_GPL vmlinux 0xb4c14553 dapm_kcontrol_get_value +EXPORT_SYMBOL_GPL vmlinux 0xb4d1fb7b spi_async_locked +EXPORT_SYMBOL_GPL vmlinux 0xb4ea7cf7 kgdb_connected +EXPORT_SYMBOL_GPL vmlinux 0xb4eb6d56 devm_phy_create +EXPORT_SYMBOL_GPL vmlinux 0xb50e166d pinctrl_utils_add_map_configs +EXPORT_SYMBOL_GPL vmlinux 0xb51fbd64 edac_op_state +EXPORT_SYMBOL_GPL vmlinux 0xb522e314 dev_pm_domain_detach +EXPORT_SYMBOL_GPL vmlinux 0xb54b2e99 key_type_encrypted +EXPORT_SYMBOL_GPL vmlinux 0xb5561c24 ahci_platform_get_resources +EXPORT_SYMBOL_GPL vmlinux 0xb570324e ata_ehi_clear_desc +EXPORT_SYMBOL_GPL vmlinux 0xb57a22e5 ata_sff_hsm_move +EXPORT_SYMBOL_GPL vmlinux 0xb58dcfa2 synchronize_sched_expedited +EXPORT_SYMBOL_GPL vmlinux 0xb5a0e11e lpddr2_jedec_addressing_table +EXPORT_SYMBOL_GPL vmlinux 0xb5c38ff4 debugfs_create_blob +EXPORT_SYMBOL_GPL vmlinux 0xb5cba789 inet_hashinfo_init +EXPORT_SYMBOL_GPL vmlinux 0xb5e896fb tpm_get_random +EXPORT_SYMBOL_GPL vmlinux 0xb5f17edf perf_register_guest_info_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xb607573c sdio_readb +EXPORT_SYMBOL_GPL vmlinux 0xb615212b tty_perform_flush +EXPORT_SYMBOL_GPL vmlinux 0xb6261484 register_die_notifier +EXPORT_SYMBOL_GPL vmlinux 0xb6376856 tcp_done +EXPORT_SYMBOL_GPL vmlinux 0xb65b7f63 bsg_unregister_queue +EXPORT_SYMBOL_GPL vmlinux 0xb67142ff fat_build_inode +EXPORT_SYMBOL_GPL vmlinux 0xb6714e53 wm8350_gpio_config +EXPORT_SYMBOL_GPL vmlinux 0xb67c64fd __tracepoint_kfree_skb +EXPORT_SYMBOL_GPL vmlinux 0xb681eef5 serial8250_do_set_mctrl +EXPORT_SYMBOL_GPL vmlinux 0xb6add9ce sm501_misc_control +EXPORT_SYMBOL_GPL vmlinux 0xb6ae7bcd snd_dmaengine_pcm_open +EXPORT_SYMBOL_GPL vmlinux 0xb6aeb661 ata_id_c_string +EXPORT_SYMBOL_GPL vmlinux 0xb6bdfdc6 ping_unhash +EXPORT_SYMBOL_GPL vmlinux 0xb6d25f25 crypto_aead_reqsize +EXPORT_SYMBOL_GPL vmlinux 0xb6e6d99d clk_disable +EXPORT_SYMBOL_GPL vmlinux 0xb6eaba4a da903x_writes +EXPORT_SYMBOL_GPL vmlinux 0xb6ed1f73 class_for_each_device +EXPORT_SYMBOL_GPL vmlinux 0xb6fe4ed4 user_free_preparse +EXPORT_SYMBOL_GPL vmlinux 0xb70a0a47 crypto_drop_spawn +EXPORT_SYMBOL_GPL vmlinux 0xb7254394 led_trigger_set_default +EXPORT_SYMBOL_GPL vmlinux 0xb7329c06 clk_set_phase +EXPORT_SYMBOL_GPL vmlinux 0xb785a5ee usbnet_read_cmd +EXPORT_SYMBOL_GPL vmlinux 0xb789bc41 stmpe_disable +EXPORT_SYMBOL_GPL vmlinux 0xb78cd490 mtd_unpoint +EXPORT_SYMBOL_GPL vmlinux 0xb7ee50ee wm831x_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0xb7f77027 rtc_tm_to_ktime +EXPORT_SYMBOL_GPL vmlinux 0xb8346aeb percpu_ida_alloc +EXPORT_SYMBOL_GPL vmlinux 0xb8386263 sysfs_remove_files +EXPORT_SYMBOL_GPL vmlinux 0xb851a9a8 mtd_write_user_prot_reg +EXPORT_SYMBOL_GPL vmlinux 0xb8539725 usb_stor_access_xfer_buf +EXPORT_SYMBOL_GPL vmlinux 0xb85b72d9 pinconf_generic_dt_subnode_to_map +EXPORT_SYMBOL_GPL vmlinux 0xb872e317 __inet_hash_nolisten +EXPORT_SYMBOL_GPL vmlinux 0xb8785a07 max8997_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0xb879f8b5 security_inode_mkdir +EXPORT_SYMBOL_GPL vmlinux 0xb87dc793 blk_trace_startstop +EXPORT_SYMBOL_GPL vmlinux 0xb890f2ba regulator_list_voltage_linear_range +EXPORT_SYMBOL_GPL vmlinux 0xb891cedc crypto_init_spawn +EXPORT_SYMBOL_GPL vmlinux 0xb89f879b srcu_init_notifier_head +EXPORT_SYMBOL_GPL vmlinux 0xb8cd3a7f nf_logger_put +EXPORT_SYMBOL_GPL vmlinux 0xb8f75d61 irq_set_default_host +EXPORT_SYMBOL_GPL vmlinux 0xb9014a9a __ip6_local_out +EXPORT_SYMBOL_GPL vmlinux 0xb9176155 asn1_ber_decoder +EXPORT_SYMBOL_GPL vmlinux 0xb94e79c9 pinctrl_pm_select_sleep_state +EXPORT_SYMBOL_GPL vmlinux 0xb95c9cbb bsg_register_queue +EXPORT_SYMBOL_GPL vmlinux 0xb9649d47 relay_subbufs_consumed +EXPORT_SYMBOL_GPL vmlinux 0xb97c28dc thermal_zone_of_sensor_register +EXPORT_SYMBOL_GPL vmlinux 0xb97c9e7f ata_sff_postreset +EXPORT_SYMBOL_GPL vmlinux 0xb9a3b264 led_trigger_register +EXPORT_SYMBOL_GPL vmlinux 0xb9aa51ff snd_soc_add_codec_controls +EXPORT_SYMBOL_GPL vmlinux 0xb9b33934 get_net_ns_by_fd +EXPORT_SYMBOL_GPL vmlinux 0xb9c425de register_syscore_ops +EXPORT_SYMBOL_GPL vmlinux 0xb9cd60df security_inode_setattr +EXPORT_SYMBOL_GPL vmlinux 0xb9d025c9 llist_del_first +EXPORT_SYMBOL_GPL vmlinux 0xb9d67f79 __fsnotify_inode_delete +EXPORT_SYMBOL_GPL vmlinux 0xb9e709a8 blk_end_request_err +EXPORT_SYMBOL_GPL vmlinux 0xba2b7f64 cpufreq_generic_get +EXPORT_SYMBOL_GPL vmlinux 0xba679338 regulator_register +EXPORT_SYMBOL_GPL vmlinux 0xba68698a of_get_nand_on_flash_bbt +EXPORT_SYMBOL_GPL vmlinux 0xba690c25 gpiochip_request_own_desc +EXPORT_SYMBOL_GPL vmlinux 0xba804168 ip6_append_data +EXPORT_SYMBOL_GPL vmlinux 0xba8929ea percpu_ref_reinit +EXPORT_SYMBOL_GPL vmlinux 0xba939fb3 dapm_mark_endpoints_dirty +EXPORT_SYMBOL_GPL vmlinux 0xba9d07c1 regmap_init +EXPORT_SYMBOL_GPL vmlinux 0xbaacf480 inode_sb_list_add +EXPORT_SYMBOL_GPL vmlinux 0xbab9a9f0 maxim_charger_currents +EXPORT_SYMBOL_GPL vmlinux 0xbabb4e75 ata_bmdma_error_handler +EXPORT_SYMBOL_GPL vmlinux 0xbafb9269 devm_regulator_get_exclusive +EXPORT_SYMBOL_GPL vmlinux 0xbaff92a4 filter_check_discard +EXPORT_SYMBOL_GPL vmlinux 0xbb038ce4 perf_unregister_guest_info_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xbb0ab47b debug_locks +EXPORT_SYMBOL_GPL vmlinux 0xbb0c692c _snd_pcm_stream_lock_irqsave +EXPORT_SYMBOL_GPL vmlinux 0xbb11cfba klist_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0xbb1eb7e4 crypto_alloc_ablkcipher +EXPORT_SYMBOL_GPL vmlinux 0xbb416faf led_classdev_register +EXPORT_SYMBOL_GPL vmlinux 0xbb7cf9cb jump_label_rate_limit +EXPORT_SYMBOL_GPL vmlinux 0xbb86bf94 usb_get_phy +EXPORT_SYMBOL_GPL vmlinux 0xbb923cf1 sdhci_free_host +EXPORT_SYMBOL_GPL vmlinux 0xbb97617c of_irq_to_resource_table +EXPORT_SYMBOL_GPL vmlinux 0xbbd7dc4c dm_get_queue_limits +EXPORT_SYMBOL_GPL vmlinux 0xbc083896 of_phy_get +EXPORT_SYMBOL_GPL vmlinux 0xbc225e52 usbnet_disconnect +EXPORT_SYMBOL_GPL vmlinux 0xbc2dee5d ip6_push_pending_frames +EXPORT_SYMBOL_GPL vmlinux 0xbc31bfa7 del_mtd_blktrans_dev +EXPORT_SYMBOL_GPL vmlinux 0xbc360c65 ata_port_wait_eh +EXPORT_SYMBOL_GPL vmlinux 0xbc4894b6 tty_encode_baud_rate +EXPORT_SYMBOL_GPL vmlinux 0xbc492e5c usb_string +EXPORT_SYMBOL_GPL vmlinux 0xbc7552e6 thermal_generate_netlink_event +EXPORT_SYMBOL_GPL vmlinux 0xbc9cde22 tty_port_tty_wakeup +EXPORT_SYMBOL_GPL vmlinux 0xbcac6160 pm_qos_remove_notifier +EXPORT_SYMBOL_GPL vmlinux 0xbcbaa80a __wake_up_locked_key +EXPORT_SYMBOL_GPL vmlinux 0xbccfd4d8 register_oldmem_pfn_is_ram +EXPORT_SYMBOL_GPL vmlinux 0xbcd7fdb5 irq_get_irq_data +EXPORT_SYMBOL_GPL vmlinux 0xbcf89ab6 __wake_up_sync +EXPORT_SYMBOL_GPL vmlinux 0xbd30ea98 tty_port_register_device +EXPORT_SYMBOL_GPL vmlinux 0xbd37bb71 ahci_reset_em +EXPORT_SYMBOL_GPL vmlinux 0xbd3fe1e3 disable_hardirq +EXPORT_SYMBOL_GPL vmlinux 0xbd47d5b1 hid_validate_values +EXPORT_SYMBOL_GPL vmlinux 0xbd5cb8b9 ring_buffer_resize +EXPORT_SYMBOL_GPL vmlinux 0xbd6c41e5 fixed_phy_set_link_update +EXPORT_SYMBOL_GPL vmlinux 0xbd74e91c devm_mdiobus_free +EXPORT_SYMBOL_GPL vmlinux 0xbd7c1306 fat_scan +EXPORT_SYMBOL_GPL vmlinux 0xbdd295f0 trace_vprintk +EXPORT_SYMBOL_GPL vmlinux 0xbdd2f42a rcu_bh_force_quiescent_state +EXPORT_SYMBOL_GPL vmlinux 0xbdd32750 amba_apb_device_add_res +EXPORT_SYMBOL_GPL vmlinux 0xbdf1bb72 crypto_chain +EXPORT_SYMBOL_GPL vmlinux 0xbdf512de free_bch +EXPORT_SYMBOL_GPL vmlinux 0xbe058d64 usb_stor_bulk_transfer_buf +EXPORT_SYMBOL_GPL vmlinux 0xbe0d5227 sdhci_enable_irq_wakeups +EXPORT_SYMBOL_GPL vmlinux 0xbe1887e4 ata_unpack_xfermask +EXPORT_SYMBOL_GPL vmlinux 0xbe4648ae snd_soc_component_update_bits +EXPORT_SYMBOL_GPL vmlinux 0xbe472d55 kobject_rename +EXPORT_SYMBOL_GPL vmlinux 0xbe55f10f pstore_register +EXPORT_SYMBOL_GPL vmlinux 0xbe687e88 wake_up_all_idle_cpus +EXPORT_SYMBOL_GPL vmlinux 0xbe74adbf register_kretprobes +EXPORT_SYMBOL_GPL vmlinux 0xbe96dfd8 of_reconfig_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0xbe9cbf1b iptunnel_xmit +EXPORT_SYMBOL_GPL vmlinux 0xbea5ff1e static_key_initialized +EXPORT_SYMBOL_GPL vmlinux 0xbea9297e ata_sff_data_xfer +EXPORT_SYMBOL_GPL vmlinux 0xbeacc65d irq_domain_xlate_twocell +EXPORT_SYMBOL_GPL vmlinux 0xbed686ec driver_find +EXPORT_SYMBOL_GPL vmlinux 0xbee21107 dm_internal_suspend_noflush +EXPORT_SYMBOL_GPL vmlinux 0xbee74e1a ata_host_detach +EXPORT_SYMBOL_GPL vmlinux 0xbeef3620 usb_mon_register +EXPORT_SYMBOL_GPL vmlinux 0xbef4080a ata_sff_lost_interrupt +EXPORT_SYMBOL_GPL vmlinux 0xbf041102 register_vt_notifier +EXPORT_SYMBOL_GPL vmlinux 0xbf1a3cc9 rtnl_register +EXPORT_SYMBOL_GPL vmlinux 0xbf3d98da usbnet_write_cmd +EXPORT_SYMBOL_GPL vmlinux 0xbf52522a tcp_fetch_timewait_stamp +EXPORT_SYMBOL_GPL vmlinux 0xbf65f360 task_active_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0xbf6b7fb1 crypto_alloc_instance +EXPORT_SYMBOL_GPL vmlinux 0xbf6dd907 regmap_irq_get_domain +EXPORT_SYMBOL_GPL vmlinux 0xbf738444 devm_pwm_put +EXPORT_SYMBOL_GPL vmlinux 0xbfb0b55d ata_bmdma_dumb_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0xbfbcddf8 idr_alloc +EXPORT_SYMBOL_GPL vmlinux 0xbfce185e scsi_internal_device_unblock +EXPORT_SYMBOL_GPL vmlinux 0xbfe5616d tick_broadcast_oneshot_control +EXPORT_SYMBOL_GPL vmlinux 0xbfe9b5f0 pm_runtime_autosuspend_expiration +EXPORT_SYMBOL_GPL vmlinux 0xbffe1d8a device_property_read_u64_array +EXPORT_SYMBOL_GPL vmlinux 0xc016bddf pwmchip_add +EXPORT_SYMBOL_GPL vmlinux 0xc035aed5 ata_sas_port_resume +EXPORT_SYMBOL_GPL vmlinux 0xc03bbcc3 ata_ehi_push_desc +EXPORT_SYMBOL_GPL vmlinux 0xc04ad9c5 dev_pm_opp_get_notifier +EXPORT_SYMBOL_GPL vmlinux 0xc059617c phy_pm_runtime_put +EXPORT_SYMBOL_GPL vmlinux 0xc05ed834 inet_csk_bind_conflict +EXPORT_SYMBOL_GPL vmlinux 0xc06a95fb gpiod_is_active_low +EXPORT_SYMBOL_GPL vmlinux 0xc07a706b blkcg_policy_register +EXPORT_SYMBOL_GPL vmlinux 0xc07b2ed2 dev_pm_opp_remove +EXPORT_SYMBOL_GPL vmlinux 0xc081a119 powercap_unregister_control_type +EXPORT_SYMBOL_GPL vmlinux 0xc08647ff ring_buffer_bytes_cpu +EXPORT_SYMBOL_GPL vmlinux 0xc08e58ed tps6586x_irq_get_virq +EXPORT_SYMBOL_GPL vmlinux 0xc0a96e14 rcu_gp_is_expedited +EXPORT_SYMBOL_GPL vmlinux 0xc0b3735f ahci_save_initial_config +EXPORT_SYMBOL_GPL vmlinux 0xc0d26387 kmsg_dump_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc0df8865 timerqueue_add +EXPORT_SYMBOL_GPL vmlinux 0xc0f4631a gpiod_get_raw_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0xc113d6eb tcp_unregister_congestion_control +EXPORT_SYMBOL_GPL vmlinux 0xc16d02bf regulator_map_voltage_linear +EXPORT_SYMBOL_GPL vmlinux 0xc17515d7 usb_hcds_loaded +EXPORT_SYMBOL_GPL vmlinux 0xc18304e1 of_clk_parent_fill +EXPORT_SYMBOL_GPL vmlinux 0xc18578ed process_srcu +EXPORT_SYMBOL_GPL vmlinux 0xc18f7dc0 fuse_dev_alloc +EXPORT_SYMBOL_GPL vmlinux 0xc1bced6a cleanup_srcu_struct +EXPORT_SYMBOL_GPL vmlinux 0xc210511b kick_process +EXPORT_SYMBOL_GPL vmlinux 0xc22a3091 vm_unmap_aliases +EXPORT_SYMBOL_GPL vmlinux 0xc26a678d __dma_request_channel +EXPORT_SYMBOL_GPL vmlinux 0xc280fb46 kdb_register +EXPORT_SYMBOL_GPL vmlinux 0xc297c640 usb_stor_clear_halt +EXPORT_SYMBOL_GPL vmlinux 0xc2b6b692 crypto_unregister_rng +EXPORT_SYMBOL_GPL vmlinux 0xc2cbf0b4 do_unregister_con_driver +EXPORT_SYMBOL_GPL vmlinux 0xc2e728dc ata_sff_queue_delayed_work +EXPORT_SYMBOL_GPL vmlinux 0xc2fe2ac3 sdio_memcpy_toio +EXPORT_SYMBOL_GPL vmlinux 0xc316254b spi_bus_lock +EXPORT_SYMBOL_GPL vmlinux 0xc31f7425 devm_spi_register_master +EXPORT_SYMBOL_GPL vmlinux 0xc337b835 devm_led_classdev_register +EXPORT_SYMBOL_GPL vmlinux 0xc340031b of_init_opp_table +EXPORT_SYMBOL_GPL vmlinux 0xc341ae6d zs_map_object +EXPORT_SYMBOL_GPL vmlinux 0xc35ad15b ablkcipher_walk_done +EXPORT_SYMBOL_GPL vmlinux 0xc36fcabf devm_remove_action +EXPORT_SYMBOL_GPL vmlinux 0xc37226a5 tpm_pcr_extend +EXPORT_SYMBOL_GPL vmlinux 0xc37981bb snd_hwparams_to_dma_slave_config +EXPORT_SYMBOL_GPL vmlinux 0xc385cb58 perf_num_counters +EXPORT_SYMBOL_GPL vmlinux 0xc3b93bba klist_next +EXPORT_SYMBOL_GPL vmlinux 0xc3cf8063 blkg_lookup_create +EXPORT_SYMBOL_GPL vmlinux 0xc3ed187f devm_regulator_unregister_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0xc3ed51d7 eventfd_fget +EXPORT_SYMBOL_GPL vmlinux 0xc3ef1391 snd_soc_write +EXPORT_SYMBOL_GPL vmlinux 0xc428068d sata_deb_timing_long +EXPORT_SYMBOL_GPL vmlinux 0xc438b0ac serial8250_get_port +EXPORT_SYMBOL_GPL vmlinux 0xc44d3aed mbox_client_txdone +EXPORT_SYMBOL_GPL vmlinux 0xc44f3661 device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc454fc7b twl_get_type +EXPORT_SYMBOL_GPL vmlinux 0xc4669954 ahash_register_instance +EXPORT_SYMBOL_GPL vmlinux 0xc471c67a twl4030_audio_disable_resource +EXPORT_SYMBOL_GPL vmlinux 0xc472341e udp4_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0xc48b7ccf ata_mode_string +EXPORT_SYMBOL_GPL vmlinux 0xc491fc81 gpiod_set_array_value +EXPORT_SYMBOL_GPL vmlinux 0xc497e325 sock_diag_save_cookie +EXPORT_SYMBOL_GPL vmlinux 0xc4a20483 gpiochip_remove +EXPORT_SYMBOL_GPL vmlinux 0xc4dc05b3 pingv6_prot +EXPORT_SYMBOL_GPL vmlinux 0xc4dc1dd4 device_remove_file_self +EXPORT_SYMBOL_GPL vmlinux 0xc4def06e devm_regulator_register +EXPORT_SYMBOL_GPL vmlinux 0xc502534b ping_seq_fops +EXPORT_SYMBOL_GPL vmlinux 0xc53887a0 __fat_fs_error +EXPORT_SYMBOL_GPL vmlinux 0xc53a2ce3 wakeup_source_drop +EXPORT_SYMBOL_GPL vmlinux 0xc542933a timecounter_read +EXPORT_SYMBOL_GPL vmlinux 0xc5492f6a apply_to_page_range +EXPORT_SYMBOL_GPL vmlinux 0xc563fecd snd_soc_component_test_bits +EXPORT_SYMBOL_GPL vmlinux 0xc5650a35 ping_hash +EXPORT_SYMBOL_GPL vmlinux 0xc5721864 usb_stor_post_reset +EXPORT_SYMBOL_GPL vmlinux 0xc572a650 posix_acl_default_xattr_handler +EXPORT_SYMBOL_GPL vmlinux 0xc575c737 debug_locks_off +EXPORT_SYMBOL_GPL vmlinux 0xc59ed172 __pm_runtime_idle +EXPORT_SYMBOL_GPL vmlinux 0xc5d050f0 ata_cable_40wire +EXPORT_SYMBOL_GPL vmlinux 0xc5d312b8 pinctrl_utils_reserve_map +EXPORT_SYMBOL_GPL vmlinux 0xc5e6c331 free_vm_area +EXPORT_SYMBOL_GPL vmlinux 0xc5f7d0ab bus_get_kset +EXPORT_SYMBOL_GPL vmlinux 0xc617f82c unregister_oom_notifier +EXPORT_SYMBOL_GPL vmlinux 0xc61f63f9 kobject_get_path +EXPORT_SYMBOL_GPL vmlinux 0xc63d847d ktime_get_mono_fast_ns +EXPORT_SYMBOL_GPL vmlinux 0xc649229a clk_register_gate +EXPORT_SYMBOL_GPL vmlinux 0xc65d3eed ring_buffer_entries_cpu +EXPORT_SYMBOL_GPL vmlinux 0xc6738bd7 event_triggers_call +EXPORT_SYMBOL_GPL vmlinux 0xc6810e93 of_irq_get +EXPORT_SYMBOL_GPL vmlinux 0xc69b7ee5 zs_destroy_pool +EXPORT_SYMBOL_GPL vmlinux 0xc6a4a872 __clk_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0xc6a711c6 mtd_writev +EXPORT_SYMBOL_GPL vmlinux 0xc6adab24 srcu_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0xc6bc38eb crypto_shash_update +EXPORT_SYMBOL_GPL vmlinux 0xc6c01a44 tcp_send_ack +EXPORT_SYMBOL_GPL vmlinux 0xc6c0aba3 clk_fractional_divider_ops +EXPORT_SYMBOL_GPL vmlinux 0xc72e1233 __trace_bprintk +EXPORT_SYMBOL_GPL vmlinux 0xc73adfec tracepoint_probe_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc73debef class_destroy +EXPORT_SYMBOL_GPL vmlinux 0xc75a821f gpiod_to_irq +EXPORT_SYMBOL_GPL vmlinux 0xc7712c09 kernel_kobj +EXPORT_SYMBOL_GPL vmlinux 0xc775f9cb tty_ldisc_flush +EXPORT_SYMBOL_GPL vmlinux 0xc78fa3fc net_ns_type_operations +EXPORT_SYMBOL_GPL vmlinux 0xc794be41 bus_get_device_klist +EXPORT_SYMBOL_GPL vmlinux 0xc7a1840e llist_add_batch +EXPORT_SYMBOL_GPL vmlinux 0xc7c2de57 dev_pm_opp_get_opp_count +EXPORT_SYMBOL_GPL vmlinux 0xc7c6391c mpi_set_buffer +EXPORT_SYMBOL_GPL vmlinux 0xc7e39bca ring_buffer_dropped_events_cpu +EXPORT_SYMBOL_GPL vmlinux 0xc7f24c76 sdio_writel +EXPORT_SYMBOL_GPL vmlinux 0xc8036011 of_get_nand_bus_width +EXPORT_SYMBOL_GPL vmlinux 0xc80976fc lp8788_update_bits +EXPORT_SYMBOL_GPL vmlinux 0xc80e65f0 ata_noop_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0xc81f07f0 register_asymmetric_key_parser +EXPORT_SYMBOL_GPL vmlinux 0xc821e596 snd_dmaengine_pcm_request_channel +EXPORT_SYMBOL_GPL vmlinux 0xc8269f94 snd_soc_params_to_frame_size +EXPORT_SYMBOL_GPL vmlinux 0xc82abb9e snd_dmaengine_pcm_close +EXPORT_SYMBOL_GPL vmlinux 0xc82b6946 gpiochip_set_chained_irqchip +EXPORT_SYMBOL_GPL vmlinux 0xc82eb6e4 mtd_get_user_prot_info +EXPORT_SYMBOL_GPL vmlinux 0xc86866ed devm_regulator_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xc87c1f84 ktime_get +EXPORT_SYMBOL_GPL vmlinux 0xc87d70a1 irq_setup_alt_chip +EXPORT_SYMBOL_GPL vmlinux 0xc8a33ebf unregister_wide_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0xc8a77ed6 register_mtd_parser +EXPORT_SYMBOL_GPL vmlinux 0xc8add232 ring_buffer_record_disable +EXPORT_SYMBOL_GPL vmlinux 0xc8aece9a crypto_register_ahash +EXPORT_SYMBOL_GPL vmlinux 0xc8c06991 sock_gen_put +EXPORT_SYMBOL_GPL vmlinux 0xc8c515ce rt_mutex_unlock +EXPORT_SYMBOL_GPL vmlinux 0xc8de802f cn_netlink_send +EXPORT_SYMBOL_GPL vmlinux 0xc8ed9185 __gpiod_get +EXPORT_SYMBOL_GPL vmlinux 0xc9126606 posix_clock_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc91277a1 kgdb_schedule_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0xc9204def irq_domain_simple_ops +EXPORT_SYMBOL_GPL vmlinux 0xc93c7aa0 snd_soc_bytes_get +EXPORT_SYMBOL_GPL vmlinux 0xc9561772 fb_destroy_modelist +EXPORT_SYMBOL_GPL vmlinux 0xc96056bf wm831x_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0xc9658009 regmap_fields_update_bits +EXPORT_SYMBOL_GPL vmlinux 0xc97c7334 alarm_cancel +EXPORT_SYMBOL_GPL vmlinux 0xc97cc8b1 tc3589x_block_read +EXPORT_SYMBOL_GPL vmlinux 0xc97d1140 cpufreq_cooling_get_level +EXPORT_SYMBOL_GPL vmlinux 0xc991d72f serial8250_handle_irq +EXPORT_SYMBOL_GPL vmlinux 0xc9961698 ata_sff_pause +EXPORT_SYMBOL_GPL vmlinux 0xc9ae3e8b uart_handle_dcd_change +EXPORT_SYMBOL_GPL vmlinux 0xc9c19239 vc_sm_lock +EXPORT_SYMBOL_GPL vmlinux 0xc9db45ac i2c_recover_bus +EXPORT_SYMBOL_GPL vmlinux 0xc9ec4e21 free_percpu +EXPORT_SYMBOL_GPL vmlinux 0xc9f1c12b blkcipher_aead_walk_virt_block +EXPORT_SYMBOL_GPL vmlinux 0xca19785e irq_alloc_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0xca1985cd bcm_dma_wait_idle +EXPORT_SYMBOL_GPL vmlinux 0xca2084a8 debugfs_remove_recursive +EXPORT_SYMBOL_GPL vmlinux 0xca2807a5 skcipher_geniv_alloc +EXPORT_SYMBOL_GPL vmlinux 0xca4e5167 irq_create_direct_mapping +EXPORT_SYMBOL_GPL vmlinux 0xca4ed696 ip6_route_lookup +EXPORT_SYMBOL_GPL vmlinux 0xca556325 dev_attr_em_message +EXPORT_SYMBOL_GPL vmlinux 0xca647eb2 hid_open_report +EXPORT_SYMBOL_GPL vmlinux 0xca657b7d ata_wait_after_reset +EXPORT_SYMBOL_GPL vmlinux 0xca7c26e0 blkcg_activate_policy +EXPORT_SYMBOL_GPL vmlinux 0xca7d8764 kthread_freezable_should_stop +EXPORT_SYMBOL_GPL vmlinux 0xca82ba73 input_ff_create +EXPORT_SYMBOL_GPL vmlinux 0xca8b50f2 fwnode_property_read_u64_array +EXPORT_SYMBOL_GPL vmlinux 0xca8c62e8 device_wakeup_enable +EXPORT_SYMBOL_GPL vmlinux 0xca935e27 inet6_csk_bind_conflict +EXPORT_SYMBOL_GPL vmlinux 0xcabe04de cpuidle_resume_and_unlock +EXPORT_SYMBOL_GPL vmlinux 0xcac6ad04 tps6586x_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0xcacc36f5 power_supply_unregister +EXPORT_SYMBOL_GPL vmlinux 0xcaf42a37 devres_for_each_res +EXPORT_SYMBOL_GPL vmlinux 0xcb25b6bf devm_devfreq_event_remove_edev +EXPORT_SYMBOL_GPL vmlinux 0xcb307044 hid_disconnect +EXPORT_SYMBOL_GPL vmlinux 0xcb3296e4 sysfs_create_files +EXPORT_SYMBOL_GPL vmlinux 0xcb32cb36 musb_writeb +EXPORT_SYMBOL_GPL vmlinux 0xcb469d2b ddebug_add_module +EXPORT_SYMBOL_GPL vmlinux 0xcb56260c dma_buf_end_cpu_access +EXPORT_SYMBOL_GPL vmlinux 0xcb5b6ab5 alarm_forward +EXPORT_SYMBOL_GPL vmlinux 0xcb605ea2 power_supply_get_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0xcb75bdaf of_thermal_is_trip_valid +EXPORT_SYMBOL_GPL vmlinux 0xcb795f91 hiddev_hid_event +EXPORT_SYMBOL_GPL vmlinux 0xcb8e6325 of_cpufreq_cooling_register +EXPORT_SYMBOL_GPL vmlinux 0xcb976fb3 pm_generic_suspend_noirq +EXPORT_SYMBOL_GPL vmlinux 0xcb9872cb sata_pmp_error_handler +EXPORT_SYMBOL_GPL vmlinux 0xcbd2177f clockevents_unbind_device +EXPORT_SYMBOL_GPL vmlinux 0xcbd3ce11 serial8250_do_shutdown +EXPORT_SYMBOL_GPL vmlinux 0xcbd5bd89 usb_hcd_link_urb_to_ep +EXPORT_SYMBOL_GPL vmlinux 0xcbe56bc2 zs_get_total_pages +EXPORT_SYMBOL_GPL vmlinux 0xcbee20b2 get_cpu_iowait_time_us +EXPORT_SYMBOL_GPL vmlinux 0xcbf0827b tpm2_gen_interrupt +EXPORT_SYMBOL_GPL vmlinux 0xcbf773db usb_autopm_put_interface_async +EXPORT_SYMBOL_GPL vmlinux 0xcc1248ad devm_reset_control_get +EXPORT_SYMBOL_GPL vmlinux 0xcc2587a7 reservation_object_test_signaled_rcu +EXPORT_SYMBOL_GPL vmlinux 0xcc34022a tcp_slow_start +EXPORT_SYMBOL_GPL vmlinux 0xcc3a5cf4 ip6_datagram_send_ctl +EXPORT_SYMBOL_GPL vmlinux 0xcc4122b6 dm_disk +EXPORT_SYMBOL_GPL vmlinux 0xcc4260e9 fib_rules_lookup +EXPORT_SYMBOL_GPL vmlinux 0xcc84cf39 sysfs_remove_mount_point +EXPORT_SYMBOL_GPL vmlinux 0xcc85fcb6 async_schedule +EXPORT_SYMBOL_GPL vmlinux 0xcc8f2663 sdhci_pltfm_unregister +EXPORT_SYMBOL_GPL vmlinux 0xcc94021f xfrm_inner_extract_output +EXPORT_SYMBOL_GPL vmlinux 0xccb73338 fat_time_unix2fat +EXPORT_SYMBOL_GPL vmlinux 0xccc9bce7 page_cache_sync_readahead +EXPORT_SYMBOL_GPL vmlinux 0xcccd044d __pm_runtime_use_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0xcccfb2fa sata_deb_timing_hotplug +EXPORT_SYMBOL_GPL vmlinux 0xccdcf194 pm_runtime_irq_safe +EXPORT_SYMBOL_GPL vmlinux 0xccf7d93d snd_dmaengine_pcm_register +EXPORT_SYMBOL_GPL vmlinux 0xcd363f55 usb_alloc_streams +EXPORT_SYMBOL_GPL vmlinux 0xcd3b3f29 shash_free_instance +EXPORT_SYMBOL_GPL vmlinux 0xcd475155 list_lru_walk_one +EXPORT_SYMBOL_GPL vmlinux 0xcd574815 fuse_put_request +EXPORT_SYMBOL_GPL vmlinux 0xcd5c1852 pm_runtime_forbid +EXPORT_SYMBOL_GPL vmlinux 0xcd611f79 __class_create +EXPORT_SYMBOL_GPL vmlinux 0xcd66ab96 raw_seq_open +EXPORT_SYMBOL_GPL vmlinux 0xcd91b127 system_highpri_wq +EXPORT_SYMBOL_GPL vmlinux 0xcd91f075 mnt_want_write_file +EXPORT_SYMBOL_GPL vmlinux 0xcd974f00 rcu_all_qs +EXPORT_SYMBOL_GPL vmlinux 0xcda81963 xfrm_audit_state_icvfail +EXPORT_SYMBOL_GPL vmlinux 0xcdb229e1 handle_fasteoi_irq +EXPORT_SYMBOL_GPL vmlinux 0xcdb6adcc ras_userspace_consumers +EXPORT_SYMBOL_GPL vmlinux 0xcdb6d63e mm_kobj +EXPORT_SYMBOL_GPL vmlinux 0xcdc3cf14 of_gen_pool_get +EXPORT_SYMBOL_GPL vmlinux 0xcdca3691 nr_irqs +EXPORT_SYMBOL_GPL vmlinux 0xcde2d775 trace_seq_path +EXPORT_SYMBOL_GPL vmlinux 0xcdf06e97 __devm_of_phy_provider_register +EXPORT_SYMBOL_GPL vmlinux 0xce20077b device_bind_driver +EXPORT_SYMBOL_GPL vmlinux 0xce22b646 hidinput_disconnect +EXPORT_SYMBOL_GPL vmlinux 0xce6a9d9a trace_current_buffer_discard_commit +EXPORT_SYMBOL_GPL vmlinux 0xce6db656 rcu_is_watching +EXPORT_SYMBOL_GPL vmlinux 0xce7c9589 usb_ifnum_to_if +EXPORT_SYMBOL_GPL vmlinux 0xce8f4b83 ata_sff_dev_select +EXPORT_SYMBOL_GPL vmlinux 0xcead02f9 usb_phy_generic_unregister +EXPORT_SYMBOL_GPL vmlinux 0xced5e67b hwmon_device_register_with_groups +EXPORT_SYMBOL_GPL vmlinux 0xced976d5 skb_tstamp_tx +EXPORT_SYMBOL_GPL vmlinux 0xcee1641c kgdb_unregister_nmi_console +EXPORT_SYMBOL_GPL vmlinux 0xcf12e778 request_firmware_direct +EXPORT_SYMBOL_GPL vmlinux 0xcf303ee7 ping_bind +EXPORT_SYMBOL_GPL vmlinux 0xcf42b4b1 arizona_clk32k_enable +EXPORT_SYMBOL_GPL vmlinux 0xcf54ea93 async_unregister_domain +EXPORT_SYMBOL_GPL vmlinux 0xcf5c5f12 md_do_sync +EXPORT_SYMBOL_GPL vmlinux 0xcf69eec4 regmap_update_bits_async +EXPORT_SYMBOL_GPL vmlinux 0xcfaa3659 sk_clone_lock +EXPORT_SYMBOL_GPL vmlinux 0xcface1ce ata_bmdma_port_start +EXPORT_SYMBOL_GPL vmlinux 0xcfb5871c irq_work_queue +EXPORT_SYMBOL_GPL vmlinux 0xcfc1c25e rtc_device_register +EXPORT_SYMBOL_GPL vmlinux 0xcfc68341 synchronize_rcu_bh +EXPORT_SYMBOL_GPL vmlinux 0xcfcbd4cf __netpoll_free_async +EXPORT_SYMBOL_GPL vmlinux 0xcfd7c6d4 bsg_request_fn +EXPORT_SYMBOL_GPL vmlinux 0xd0186d86 screen_glyph +EXPORT_SYMBOL_GPL vmlinux 0xd01e7019 locks_release_private +EXPORT_SYMBOL_GPL vmlinux 0xd021f060 dequeue_signal +EXPORT_SYMBOL_GPL vmlinux 0xd0324d07 pm_runtime_force_resume +EXPORT_SYMBOL_GPL vmlinux 0xd03c7700 secure_ipv4_port_ephemeral +EXPORT_SYMBOL_GPL vmlinux 0xd055b1f5 crypto_ahash_final +EXPORT_SYMBOL_GPL vmlinux 0xd05f3d24 driver_remove_file +EXPORT_SYMBOL_GPL vmlinux 0xd060cc03 crypto_attr_alg2 +EXPORT_SYMBOL_GPL vmlinux 0xd06524ba raw_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd067d3c5 system_freezable_power_efficient_wq +EXPORT_SYMBOL_GPL vmlinux 0xd094fee7 of_irq_parse_one +EXPORT_SYMBOL_GPL vmlinux 0xd0a1f54f of_property_match_string +EXPORT_SYMBOL_GPL vmlinux 0xd0a74fd8 devm_extcon_dev_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd0a8d5da tps65912_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xd0aa05db perf_event_refresh +EXPORT_SYMBOL_GPL vmlinux 0xd0b3baca register_mtd_blktrans +EXPORT_SYMBOL_GPL vmlinux 0xd0c05159 emergency_restart +EXPORT_SYMBOL_GPL vmlinux 0xd0d1c3ec snd_pcm_stream_lock +EXPORT_SYMBOL_GPL vmlinux 0xd0d2c653 blocking_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0xd0dd5018 snd_soc_of_parse_daifmt +EXPORT_SYMBOL_GPL vmlinux 0xd0ec7070 pm_runtime_allow +EXPORT_SYMBOL_GPL vmlinux 0xd0fc5f3f blk_insert_cloned_request +EXPORT_SYMBOL_GPL vmlinux 0xd115b72b nand_release +EXPORT_SYMBOL_GPL vmlinux 0xd13a5be1 usbnet_write_cmd_async +EXPORT_SYMBOL_GPL vmlinux 0xd151fa20 devm_regulator_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0xd166a6e6 i2c_new_dummy +EXPORT_SYMBOL_GPL vmlinux 0xd16712f3 crypto_check_attr_type +EXPORT_SYMBOL_GPL vmlinux 0xd17545d3 uart_console_write +EXPORT_SYMBOL_GPL vmlinux 0xd1822f0b cpufreq_show_cpus +EXPORT_SYMBOL_GPL vmlinux 0xd194398f regcache_sync +EXPORT_SYMBOL_GPL vmlinux 0xd1a42355 posix_acl_create +EXPORT_SYMBOL_GPL vmlinux 0xd1e34477 blockdev_superblock +EXPORT_SYMBOL_GPL vmlinux 0xd1f0a011 usb_kill_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0xd1f0aa31 dma_buf_kunmap +EXPORT_SYMBOL_GPL vmlinux 0xd1f2c23d spi_write_then_read +EXPORT_SYMBOL_GPL vmlinux 0xd1f2eee2 nf_logger_find_get +EXPORT_SYMBOL_GPL vmlinux 0xd1f8e042 usb_autopm_get_interface_no_resume +EXPORT_SYMBOL_GPL vmlinux 0xd1fa7122 devm_extcon_dev_allocate +EXPORT_SYMBOL_GPL vmlinux 0xd2017cb1 devm_regulator_bulk_get +EXPORT_SYMBOL_GPL vmlinux 0xd20bf6ba dcookie_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd217e9e6 trace_set_clr_event +EXPORT_SYMBOL_GPL vmlinux 0xd2184575 ata_dev_next +EXPORT_SYMBOL_GPL vmlinux 0xd24574a2 snd_soc_dpcm_be_set_state +EXPORT_SYMBOL_GPL vmlinux 0xd2482d16 disk_part_iter_init +EXPORT_SYMBOL_GPL vmlinux 0xd2639799 blk_mq_cancel_requeue_work +EXPORT_SYMBOL_GPL vmlinux 0xd273b1b1 __round_jiffies_up_relative +EXPORT_SYMBOL_GPL vmlinux 0xd27de4ec inode_congested +EXPORT_SYMBOL_GPL vmlinux 0xd290dba3 usb_set_device_state +EXPORT_SYMBOL_GPL vmlinux 0xd2aaeb4e kmsg_dump_get_buffer +EXPORT_SYMBOL_GPL vmlinux 0xd2beae9f reset_control_get +EXPORT_SYMBOL_GPL vmlinux 0xd2de7533 unregister_kprobe +EXPORT_SYMBOL_GPL vmlinux 0xd2e9dcb2 snd_soc_component_exit_regmap +EXPORT_SYMBOL_GPL vmlinux 0xd2edf4b7 ata_get_cmd_descript +EXPORT_SYMBOL_GPL vmlinux 0xd2f2b36c cpufreq_generic_init +EXPORT_SYMBOL_GPL vmlinux 0xd2f96c93 find_symbol +EXPORT_SYMBOL_GPL vmlinux 0xd2fa1a8c devm_usb_get_phy +EXPORT_SYMBOL_GPL vmlinux 0xd30d6dd9 of_pwm_get +EXPORT_SYMBOL_GPL vmlinux 0xd310c9f7 bsg_setup_queue +EXPORT_SYMBOL_GPL vmlinux 0xd33ada8b cci_probed +EXPORT_SYMBOL_GPL vmlinux 0xd33c4425 crypto_ahash_walk_first +EXPORT_SYMBOL_GPL vmlinux 0xd3579022 pm_schedule_suspend +EXPORT_SYMBOL_GPL vmlinux 0xd37d453b ahci_dev_classify +EXPORT_SYMBOL_GPL vmlinux 0xd3959e72 snd_soc_dapm_enable_pin +EXPORT_SYMBOL_GPL vmlinux 0xd3ebbc0d get_task_mm +EXPORT_SYMBOL_GPL vmlinux 0xd3f3f0c5 attribute_container_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd4034828 system_freezable_wq +EXPORT_SYMBOL_GPL vmlinux 0xd40d9c77 wm5110_spi_regmap +EXPORT_SYMBOL_GPL vmlinux 0xd41fffab interval_tree_iter_first +EXPORT_SYMBOL_GPL vmlinux 0xd44179e5 dev_pm_qos_add_ancestor_request +EXPORT_SYMBOL_GPL vmlinux 0xd4448d5a phy_create +EXPORT_SYMBOL_GPL vmlinux 0xd44a5eac kgdb_register_nmi_console +EXPORT_SYMBOL_GPL vmlinux 0xd4685a70 pinctrl_get +EXPORT_SYMBOL_GPL vmlinux 0xd47cbe60 regmap_write +EXPORT_SYMBOL_GPL vmlinux 0xd49d84cc raw_seq_stop +EXPORT_SYMBOL_GPL vmlinux 0xd4a16c71 sata_link_resume +EXPORT_SYMBOL_GPL vmlinux 0xd4b0c8ec phy_pm_runtime_allow +EXPORT_SYMBOL_GPL vmlinux 0xd4c14632 system_unbound_wq +EXPORT_SYMBOL_GPL vmlinux 0xd5181028 sdio_release_host +EXPORT_SYMBOL_GPL vmlinux 0xd5240e6d bio_trim +EXPORT_SYMBOL_GPL vmlinux 0xd52fba9d platform_get_resource_byname +EXPORT_SYMBOL_GPL vmlinux 0xd56336e7 led_classdev_suspend +EXPORT_SYMBOL_GPL vmlinux 0xd5747be6 __platform_driver_register +EXPORT_SYMBOL_GPL vmlinux 0xd57a8088 of_dma_configure +EXPORT_SYMBOL_GPL vmlinux 0xd58d1718 ata_sff_check_status +EXPORT_SYMBOL_GPL vmlinux 0xd590e740 skb_pull_rcsum +EXPORT_SYMBOL_GPL vmlinux 0xd5a00d6d snd_soc_dapm_force_bias_level +EXPORT_SYMBOL_GPL vmlinux 0xd5bd7dac ring_buffer_record_enable_cpu +EXPORT_SYMBOL_GPL vmlinux 0xd5cbaf8b tps6586x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xd5d255c0 ata_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0xd5e8baf7 proc_get_parent_data +EXPORT_SYMBOL_GPL vmlinux 0xd5efa163 ata_host_start +EXPORT_SYMBOL_GPL vmlinux 0xd605dee9 wm831x_reg_unlock +EXPORT_SYMBOL_GPL vmlinux 0xd60c99b5 rcu_batches_completed_bh +EXPORT_SYMBOL_GPL vmlinux 0xd6194442 snd_soc_add_card_controls +EXPORT_SYMBOL_GPL vmlinux 0xd62dfffa usb_hcd_check_unlink_urb +EXPORT_SYMBOL_GPL vmlinux 0xd65b242a crypto_unregister_pcomp +EXPORT_SYMBOL_GPL vmlinux 0xd6708d99 devm_get_free_pages +EXPORT_SYMBOL_GPL vmlinux 0xd67364f7 eventfd_ctx_fdget +EXPORT_SYMBOL_GPL vmlinux 0xd6859166 inet_csk_route_req +EXPORT_SYMBOL_GPL vmlinux 0xd6af9d97 ip6_datagram_connect_v6_only +EXPORT_SYMBOL_GPL vmlinux 0xd6c2e04b __tracepoint_napi_poll +EXPORT_SYMBOL_GPL vmlinux 0xd6f47179 mtd_add_partition +EXPORT_SYMBOL_GPL vmlinux 0xd701fccd sdio_disable_func +EXPORT_SYMBOL_GPL vmlinux 0xd705b4c7 schedule_hrtimeout +EXPORT_SYMBOL_GPL vmlinux 0xd71a5565 usb_add_hcd +EXPORT_SYMBOL_GPL vmlinux 0xd71dd6b2 stmpe_reg_read +EXPORT_SYMBOL_GPL vmlinux 0xd736aca4 crypto_lookup_aead +EXPORT_SYMBOL_GPL vmlinux 0xd73d9cad tty_prepare_flip_string +EXPORT_SYMBOL_GPL vmlinux 0xd7410844 dpm_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0xd759c969 platform_device_register_full +EXPORT_SYMBOL_GPL vmlinux 0xd768e985 regulator_has_full_constraints +EXPORT_SYMBOL_GPL vmlinux 0xd769c772 pl08x_filter_id +EXPORT_SYMBOL_GPL vmlinux 0xd77c0bc8 klist_remove +EXPORT_SYMBOL_GPL vmlinux 0xd7b0ae3f skb_to_sgvec +EXPORT_SYMBOL_GPL vmlinux 0xd7ca0c16 snd_soc_dpcm_fe_can_update +EXPORT_SYMBOL_GPL vmlinux 0xd7d79132 put_online_cpus +EXPORT_SYMBOL_GPL vmlinux 0xd7da83c0 kobject_uevent_env +EXPORT_SYMBOL_GPL vmlinux 0xd7ec80f5 ip4_datagram_release_cb +EXPORT_SYMBOL_GPL vmlinux 0xd8027768 pm_runtime_barrier +EXPORT_SYMBOL_GPL vmlinux 0xd81de62c ring_buffer_record_enable +EXPORT_SYMBOL_GPL vmlinux 0xd820c283 eventfd_ctx_remove_wait_queue +EXPORT_SYMBOL_GPL vmlinux 0xd84a9de5 i2c_generic_scl_recovery +EXPORT_SYMBOL_GPL vmlinux 0xd864428c ipv4_redirect +EXPORT_SYMBOL_GPL vmlinux 0xd87601cc ring_buffer_unlock_commit +EXPORT_SYMBOL_GPL vmlinux 0xd87717c1 ata_eh_analyze_ncq_error +EXPORT_SYMBOL_GPL vmlinux 0xd896f886 of_property_read_string_helper +EXPORT_SYMBOL_GPL vmlinux 0xd8a28778 regmap_get_device +EXPORT_SYMBOL_GPL vmlinux 0xd8a579a1 tcp_set_state +EXPORT_SYMBOL_GPL vmlinux 0xd8c91c52 crypto_register_akcipher +EXPORT_SYMBOL_GPL vmlinux 0xd8d05d3d usb_stor_Bulk_reset +EXPORT_SYMBOL_GPL vmlinux 0xd8e468fa extcon_set_state +EXPORT_SYMBOL_GPL vmlinux 0xd8ecde3a of_clk_src_onecell_get +EXPORT_SYMBOL_GPL vmlinux 0xd8f40f6a devm_regmap_init_i2c +EXPORT_SYMBOL_GPL vmlinux 0xd8f86558 of_get_display_timing +EXPORT_SYMBOL_GPL vmlinux 0xd9268d5e led_trigger_set +EXPORT_SYMBOL_GPL vmlinux 0xd93fabe8 device_for_each_child +EXPORT_SYMBOL_GPL vmlinux 0xd942d353 ring_buffer_record_off +EXPORT_SYMBOL_GPL vmlinux 0xd94309ba gpiod_get_direction +EXPORT_SYMBOL_GPL vmlinux 0xd94aa457 display_timings_release +EXPORT_SYMBOL_GPL vmlinux 0xd96b51cf wm8350_reg_write +EXPORT_SYMBOL_GPL vmlinux 0xd96babb4 interval_tree_iter_next +EXPORT_SYMBOL_GPL vmlinux 0xd98307cd __sock_recv_ts_and_drops +EXPORT_SYMBOL_GPL vmlinux 0xd9912301 sysfs_add_file_to_group +EXPORT_SYMBOL_GPL vmlinux 0xd997f029 ata_sas_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0xd997f045 pm_runtime_enable +EXPORT_SYMBOL_GPL vmlinux 0xd99bf6be pm_generic_poweroff +EXPORT_SYMBOL_GPL vmlinux 0xd99d79cd disk_map_sector_rcu +EXPORT_SYMBOL_GPL vmlinux 0xd9ae6879 dpcm_be_dai_trigger +EXPORT_SYMBOL_GPL vmlinux 0xd9bbec2c crypto_mod_put +EXPORT_SYMBOL_GPL vmlinux 0xd9bc9175 usb_block_urb +EXPORT_SYMBOL_GPL vmlinux 0xd9c0df92 wakeup_source_remove +EXPORT_SYMBOL_GPL vmlinux 0xd9ecb670 ring_buffer_overruns +EXPORT_SYMBOL_GPL vmlinux 0xd9f833bb transport_class_register +EXPORT_SYMBOL_GPL vmlinux 0xda10498f usbnet_update_max_qlen +EXPORT_SYMBOL_GPL vmlinux 0xda16558a dma_get_slave_caps +EXPORT_SYMBOL_GPL vmlinux 0xda45fa53 usbnet_defer_kevent +EXPORT_SYMBOL_GPL vmlinux 0xda498f4c dma_request_slave_channel_reason +EXPORT_SYMBOL_GPL vmlinux 0xda5c140b page_mkclean +EXPORT_SYMBOL_GPL vmlinux 0xda9666bc param_ops_bool_enable_only +EXPORT_SYMBOL_GPL vmlinux 0xdaa500b4 fuse_request_send +EXPORT_SYMBOL_GPL vmlinux 0xdaa5e2f6 fat_remove_entries +EXPORT_SYMBOL_GPL vmlinux 0xdab44680 kobj_sysfs_ops +EXPORT_SYMBOL_GPL vmlinux 0xdab57b14 mnt_drop_write +EXPORT_SYMBOL_GPL vmlinux 0xdac1bec0 spi_finalize_current_transfer +EXPORT_SYMBOL_GPL vmlinux 0xdad192ed usbnet_set_settings +EXPORT_SYMBOL_GPL vmlinux 0xdae715e0 videomode_from_timing +EXPORT_SYMBOL_GPL vmlinux 0xdaed3073 timerqueue_del +EXPORT_SYMBOL_GPL vmlinux 0xdaf4dfb3 fb_mode_option +EXPORT_SYMBOL_GPL vmlinux 0xdb027ec6 i2c_probe_func_quick_read +EXPORT_SYMBOL_GPL vmlinux 0xdb088cb1 pm_qos_add_request +EXPORT_SYMBOL_GPL vmlinux 0xdb10c763 snd_soc_get_dai_substream +EXPORT_SYMBOL_GPL vmlinux 0xdb11028e tcp_peer_is_proven +EXPORT_SYMBOL_GPL vmlinux 0xdb2158d9 ata_sff_softreset +EXPORT_SYMBOL_GPL vmlinux 0xdb8a1b3f usermodehelper_read_trylock +EXPORT_SYMBOL_GPL vmlinux 0xdb8bb27d blkcg_root +EXPORT_SYMBOL_GPL vmlinux 0xdb945146 sysfs_unmerge_group +EXPORT_SYMBOL_GPL vmlinux 0xdb96fa95 blk_mq_unfreeze_queue +EXPORT_SYMBOL_GPL vmlinux 0xdba73583 regulator_get +EXPORT_SYMBOL_GPL vmlinux 0xdbadfc31 relay_buf_full +EXPORT_SYMBOL_GPL vmlinux 0xdbbadec6 usbnet_probe +EXPORT_SYMBOL_GPL vmlinux 0xdbd2a77c vfs_listxattr +EXPORT_SYMBOL_GPL vmlinux 0xdbd36067 device_release_driver +EXPORT_SYMBOL_GPL vmlinux 0xdbe65b6c fat_sync_inode +EXPORT_SYMBOL_GPL vmlinux 0xdbf13c17 pinctrl_force_default +EXPORT_SYMBOL_GPL vmlinux 0xdbf7cb70 mpi_get_nbits +EXPORT_SYMBOL_GPL vmlinux 0xdc0d6a52 tc3589x_block_write +EXPORT_SYMBOL_GPL vmlinux 0xdc145698 bpf_prog_alloc +EXPORT_SYMBOL_GPL vmlinux 0xdc14e252 hidinput_get_led_field +EXPORT_SYMBOL_GPL vmlinux 0xdc461430 irq_set_affinity_hint +EXPORT_SYMBOL_GPL vmlinux 0xdc816e8e skcipher_geniv_free +EXPORT_SYMBOL_GPL vmlinux 0xdc97af2e syscore_suspend +EXPORT_SYMBOL_GPL vmlinux 0xdc991968 rtnl_af_register +EXPORT_SYMBOL_GPL vmlinux 0xdc9ce1fa powercap_unregister_zone +EXPORT_SYMBOL_GPL vmlinux 0xdc9fa232 raw_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0xdca075e6 fb_deferred_io_open +EXPORT_SYMBOL_GPL vmlinux 0xdcb4a647 ahci_platform_ops +EXPORT_SYMBOL_GPL vmlinux 0xdcbe529a blk_trace_remove +EXPORT_SYMBOL_GPL vmlinux 0xdccd64b0 sata_scr_read +EXPORT_SYMBOL_GPL vmlinux 0xdcd1600b crypto_alloc_base +EXPORT_SYMBOL_GPL vmlinux 0xdce7b510 for_each_kernel_tracepoint +EXPORT_SYMBOL_GPL vmlinux 0xdd07c203 hid_connect +EXPORT_SYMBOL_GPL vmlinux 0xdd17ffec trace_clock +EXPORT_SYMBOL_GPL vmlinux 0xdd2efc0f ring_buffer_reset_cpu +EXPORT_SYMBOL_GPL vmlinux 0xdd391eff profile_event_unregister +EXPORT_SYMBOL_GPL vmlinux 0xdd4765cf wm8350_read_auxadc +EXPORT_SYMBOL_GPL vmlinux 0xdd6d45ad dev_set_name +EXPORT_SYMBOL_GPL vmlinux 0xdd7c451c gpiod_to_chip +EXPORT_SYMBOL_GPL vmlinux 0xdd7fac3d simple_attr_write +EXPORT_SYMBOL_GPL vmlinux 0xddd58dc0 ring_buffer_reset +EXPORT_SYMBOL_GPL vmlinux 0xddf5184d usb_enable_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0xde05eb8a power_supply_get_by_name +EXPORT_SYMBOL_GPL vmlinux 0xde0b3102 regmap_init_mmio_clk +EXPORT_SYMBOL_GPL vmlinux 0xde0c42cc tcp_death_row +EXPORT_SYMBOL_GPL vmlinux 0xde19d3ed phy_create_lookup +EXPORT_SYMBOL_GPL vmlinux 0xde40b30b ata_scsi_unlock_native_capacity +EXPORT_SYMBOL_GPL vmlinux 0xde4e81a8 tpm_gen_interrupt +EXPORT_SYMBOL_GPL vmlinux 0xde5be9e3 amba_ahb_device_add_res +EXPORT_SYMBOL_GPL vmlinux 0xde64b90c gen_pool_get +EXPORT_SYMBOL_GPL vmlinux 0xde70eac2 dev_attr_link_power_management_policy +EXPORT_SYMBOL_GPL vmlinux 0xde8dbbfc snd_compress_deregister +EXPORT_SYMBOL_GPL vmlinux 0xdeaa1a36 snd_soc_put_volsw_range +EXPORT_SYMBOL_GPL vmlinux 0xdeb29a35 crypto_spawn_tfm +EXPORT_SYMBOL_GPL vmlinux 0xdeb67590 wakeup_source_unregister +EXPORT_SYMBOL_GPL vmlinux 0xdebda6a4 extcon_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0xded30c03 of_reserved_mem_device_init +EXPORT_SYMBOL_GPL vmlinux 0xdedaf860 __pm_relax +EXPORT_SYMBOL_GPL vmlinux 0xdee13c79 irq_setup_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0xdf0f75c6 eventfd_signal +EXPORT_SYMBOL_GPL vmlinux 0xdf314395 stmpe_block_write +EXPORT_SYMBOL_GPL vmlinux 0xdf92519e inet_hash +EXPORT_SYMBOL_GPL vmlinux 0xdfa7120e devm_kmemdup +EXPORT_SYMBOL_GPL vmlinux 0xdfab51f2 serial8250_release_dma +EXPORT_SYMBOL_GPL vmlinux 0xdfb9a841 debugfs_create_file +EXPORT_SYMBOL_GPL vmlinux 0xdfbabffe scsi_internal_device_block +EXPORT_SYMBOL_GPL vmlinux 0xdfe4f985 usb_control_msg +EXPORT_SYMBOL_GPL vmlinux 0xdffc0d24 mpc8xxx_spi_rx_buf_u16 +EXPORT_SYMBOL_GPL vmlinux 0xe007de41 kallsyms_lookup_name +EXPORT_SYMBOL_GPL vmlinux 0xe0279d55 of_clk_add_provider +EXPORT_SYMBOL_GPL vmlinux 0xe02eb6d0 ring_buffer_commit_overrun_cpu +EXPORT_SYMBOL_GPL vmlinux 0xe054feba of_regulator_match +EXPORT_SYMBOL_GPL vmlinux 0xe0631882 gpiochip_add_pingroup_range +EXPORT_SYMBOL_GPL vmlinux 0xe0655d52 firmware_kobj +EXPORT_SYMBOL_GPL vmlinux 0xe06e4157 power_supply_notifier +EXPORT_SYMBOL_GPL vmlinux 0xe07ca631 cpu_bit_bitmap +EXPORT_SYMBOL_GPL vmlinux 0xe0b1c103 clk_set_max_rate +EXPORT_SYMBOL_GPL vmlinux 0xe0b7b4bb dma_buf_vmap +EXPORT_SYMBOL_GPL vmlinux 0xe0b85777 usb_driver_claim_interface +EXPORT_SYMBOL_GPL vmlinux 0xe0bbcb81 cpuidle_register +EXPORT_SYMBOL_GPL vmlinux 0xe0bc79bf tps6586x_write +EXPORT_SYMBOL_GPL vmlinux 0xe0cef797 kset_create_and_add +EXPORT_SYMBOL_GPL vmlinux 0xe0e43c13 ata_std_postreset +EXPORT_SYMBOL_GPL vmlinux 0xe104fa28 unregister_pernet_device +EXPORT_SYMBOL_GPL vmlinux 0xe109ddae posix_timers_register_clock +EXPORT_SYMBOL_GPL vmlinux 0xe118f0f1 snd_compress_new +EXPORT_SYMBOL_GPL vmlinux 0xe121cbb6 static_key_slow_dec_deferred +EXPORT_SYMBOL_GPL vmlinux 0xe132579b regmap_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0xe13c106f shash_attr_alg +EXPORT_SYMBOL_GPL vmlinux 0xe14dd8c5 snd_soc_of_parse_audio_simple_widgets +EXPORT_SYMBOL_GPL vmlinux 0xe16591ab stop_machine +EXPORT_SYMBOL_GPL vmlinux 0xe1681fce crypto_unregister_template +EXPORT_SYMBOL_GPL vmlinux 0xe1775ee7 dm_get_reserved_bio_based_ios +EXPORT_SYMBOL_GPL vmlinux 0xe1c06ba3 fsstack_copy_attr_all +EXPORT_SYMBOL_GPL vmlinux 0xe1d907e2 dev_pm_qos_hide_latency_limit +EXPORT_SYMBOL_GPL vmlinux 0xe1e44712 of_get_nand_ecc_mode +EXPORT_SYMBOL_GPL vmlinux 0xe1e75354 ip_local_out_sk +EXPORT_SYMBOL_GPL vmlinux 0xe22f711b hidinput_report_event +EXPORT_SYMBOL_GPL vmlinux 0xe2452723 regulator_register_supply_alias +EXPORT_SYMBOL_GPL vmlinux 0xe271727c bcm_sg_suitable_for_dma +EXPORT_SYMBOL_GPL vmlinux 0xe29359f8 ata_std_sched_eh +EXPORT_SYMBOL_GPL vmlinux 0xe2d45107 devm_clk_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe3043ff9 request_any_context_irq +EXPORT_SYMBOL_GPL vmlinux 0xe31b2ab8 dummy_con +EXPORT_SYMBOL_GPL vmlinux 0xe331626a devfreq_event_disable_edev +EXPORT_SYMBOL_GPL vmlinux 0xe3395d26 pinctrl_get_group_pins +EXPORT_SYMBOL_GPL vmlinux 0xe37c1970 of_fixed_clk_setup +EXPORT_SYMBOL_GPL vmlinux 0xe37ede3d pwmchip_remove +EXPORT_SYMBOL_GPL vmlinux 0xe384a102 usb_speed_string +EXPORT_SYMBOL_GPL vmlinux 0xe3889965 tcp_cong_avoid_ai +EXPORT_SYMBOL_GPL vmlinux 0xe39326a6 inet_csk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0xe3961732 of_dma_xlate_by_chan_id +EXPORT_SYMBOL_GPL vmlinux 0xe3ba4138 snd_soc_dapm_sync_unlocked +EXPORT_SYMBOL_GPL vmlinux 0xe3c6eadf device_add +EXPORT_SYMBOL_GPL vmlinux 0xe4088beb ahci_fill_cmd_slot +EXPORT_SYMBOL_GPL vmlinux 0xe4272dcd blk_queue_bypass_start +EXPORT_SYMBOL_GPL vmlinux 0xe42e1f70 klist_iter_init_node +EXPORT_SYMBOL_GPL vmlinux 0xe4309905 syscore_resume +EXPORT_SYMBOL_GPL vmlinux 0xe45955f2 dev_pm_opp_init_cpufreq_table +EXPORT_SYMBOL_GPL vmlinux 0xe4689576 ktime_get_with_offset +EXPORT_SYMBOL_GPL vmlinux 0xe477a194 set_task_ioprio +EXPORT_SYMBOL_GPL vmlinux 0xe47feabf amba_apb_device_add +EXPORT_SYMBOL_GPL vmlinux 0xe48fe461 ata_bmdma_post_internal_cmd +EXPORT_SYMBOL_GPL vmlinux 0xe4971ade tracing_alloc_snapshot +EXPORT_SYMBOL_GPL vmlinux 0xe4bb80ae tty_ldisc_deref +EXPORT_SYMBOL_GPL vmlinux 0xe4d4dae4 pinctrl_dev_get_devname +EXPORT_SYMBOL_GPL vmlinux 0xe4d6a6aa device_find_child +EXPORT_SYMBOL_GPL vmlinux 0xe4dca0bf ahci_stop_engine +EXPORT_SYMBOL_GPL vmlinux 0xe4ec31cd power_supply_class +EXPORT_SYMBOL_GPL vmlinux 0xe4f32cad blkdev_write_iter +EXPORT_SYMBOL_GPL vmlinux 0xe564b704 __udp4_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0xe5784f9d pskb_put +EXPORT_SYMBOL_GPL vmlinux 0xe58369f5 class_create_file_ns +EXPORT_SYMBOL_GPL vmlinux 0xe5883bd9 class_compat_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe59b80bf nf_unregister_afinfo +EXPORT_SYMBOL_GPL vmlinux 0xe5a74f14 snd_soc_bytes_tlv_callback +EXPORT_SYMBOL_GPL vmlinux 0xe5c2f244 devm_usb_put_phy +EXPORT_SYMBOL_GPL vmlinux 0xe5e3105d transport_remove_device +EXPORT_SYMBOL_GPL vmlinux 0xe5f65362 driver_find_device +EXPORT_SYMBOL_GPL vmlinux 0xe5f852aa get_cpu_device +EXPORT_SYMBOL_GPL vmlinux 0xe602a019 ahci_kick_engine +EXPORT_SYMBOL_GPL vmlinux 0xe62bb97f xfrm_audit_state_replay +EXPORT_SYMBOL_GPL vmlinux 0xe6324d68 set_primary_fwnode +EXPORT_SYMBOL_GPL vmlinux 0xe643adc4 inet_ctl_sock_create +EXPORT_SYMBOL_GPL vmlinux 0xe651f76e selinux_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0xe666cc53 inet_csk_clone_lock +EXPORT_SYMBOL_GPL vmlinux 0xe66b5945 clk_register_mux +EXPORT_SYMBOL_GPL vmlinux 0xe698db29 crypto_larval_alloc +EXPORT_SYMBOL_GPL vmlinux 0xe6ab6c2c usb_init_urb +EXPORT_SYMBOL_GPL vmlinux 0xe6bbb475 regmap_field_alloc +EXPORT_SYMBOL_GPL vmlinux 0xe6c68334 ddebug_remove_module +EXPORT_SYMBOL_GPL vmlinux 0xe6e1c5fe uuid_be_gen +EXPORT_SYMBOL_GPL vmlinux 0xe6e2382d pingv6_ops +EXPORT_SYMBOL_GPL vmlinux 0xe6e3e7c6 snd_soc_jack_add_gpios +EXPORT_SYMBOL_GPL vmlinux 0xe6ef4abf dm_internal_resume_fast +EXPORT_SYMBOL_GPL vmlinux 0xe6ff7c60 __clk_round_rate +EXPORT_SYMBOL_GPL vmlinux 0xe702cb74 perf_pmu_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe710d4ad disk_get_part +EXPORT_SYMBOL_GPL vmlinux 0xe71438e2 mtd_get_unmapped_area +EXPORT_SYMBOL_GPL vmlinux 0xe722bd50 power_supply_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0xe729f619 snd_soc_card_get_kcontrol +EXPORT_SYMBOL_GPL vmlinux 0xe72ced00 raw_seq_next +EXPORT_SYMBOL_GPL vmlinux 0xe7465786 kobject_init_and_add +EXPORT_SYMBOL_GPL vmlinux 0xe7519177 unix_peer_get +EXPORT_SYMBOL_GPL vmlinux 0xe752a897 spi_sync +EXPORT_SYMBOL_GPL vmlinux 0xe7655a23 sock_prot_inuse_add +EXPORT_SYMBOL_GPL vmlinux 0xe769232e sprint_symbol_no_offset +EXPORT_SYMBOL_GPL vmlinux 0xe780d542 adp5520_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0xe7832cc1 __audit_inode_child +EXPORT_SYMBOL_GPL vmlinux 0xe79610de da903x_read +EXPORT_SYMBOL_GPL vmlinux 0xe7bb0917 power_supply_get_property +EXPORT_SYMBOL_GPL vmlinux 0xe7c18be6 regulator_bulk_free +EXPORT_SYMBOL_GPL vmlinux 0xe7cb82ea divider_round_rate +EXPORT_SYMBOL_GPL vmlinux 0xe7e43425 platform_device_add_data +EXPORT_SYMBOL_GPL vmlinux 0xe7ea236c ata_sas_port_init +EXPORT_SYMBOL_GPL vmlinux 0xe7ec8860 usb_phy_gen_create_phy +EXPORT_SYMBOL_GPL vmlinux 0xe7f85176 pinctrl_dev_get_name +EXPORT_SYMBOL_GPL vmlinux 0xe7ffe877 pcpu_base_addr +EXPORT_SYMBOL_GPL vmlinux 0xe80e235f fat_getattr +EXPORT_SYMBOL_GPL vmlinux 0xe81487c4 xfrm_audit_state_notfound +EXPORT_SYMBOL_GPL vmlinux 0xe818b32b ata_bmdma_interrupt +EXPORT_SYMBOL_GPL vmlinux 0xe8290708 vfs_removexattr +EXPORT_SYMBOL_GPL vmlinux 0xe830a225 dev_change_net_namespace +EXPORT_SYMBOL_GPL vmlinux 0xe85a9fd3 cpu_cluster_pm_exit +EXPORT_SYMBOL_GPL vmlinux 0xe862c4b7 dpm_suspend_start +EXPORT_SYMBOL_GPL vmlinux 0xe86e3979 add_to_page_cache_lru +EXPORT_SYMBOL_GPL vmlinux 0xe87c17a5 powercap_register_zone +EXPORT_SYMBOL_GPL vmlinux 0xe8afb211 devres_release_group +EXPORT_SYMBOL_GPL vmlinux 0xe8e14e15 devm_regmap_init_spi +EXPORT_SYMBOL_GPL vmlinux 0xe90c613f crypto_tfm_in_queue +EXPORT_SYMBOL_GPL vmlinux 0xe9129c51 devm_snd_dmaengine_pcm_register +EXPORT_SYMBOL_GPL vmlinux 0xe92a1070 blk_unprep_request +EXPORT_SYMBOL_GPL vmlinux 0xe93e49c3 devres_free +EXPORT_SYMBOL_GPL vmlinux 0xe94c4a38 rhashtable_destroy +EXPORT_SYMBOL_GPL vmlinux 0xe94c79bb snd_soc_dpcm_can_be_free_stop +EXPORT_SYMBOL_GPL vmlinux 0xe956a75c pl320_ipc_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0xe9648aaa spi_new_device +EXPORT_SYMBOL_GPL vmlinux 0xe9669de2 snd_soc_dai_set_pll +EXPORT_SYMBOL_GPL vmlinux 0xe97c3209 netlink_has_listeners +EXPORT_SYMBOL_GPL vmlinux 0xe97c88e4 cpufreq_frequency_table_target +EXPORT_SYMBOL_GPL vmlinux 0xe9c78a9d crypto_alg_sem +EXPORT_SYMBOL_GPL vmlinux 0xe9d1b7cf irq_to_pcap +EXPORT_SYMBOL_GPL vmlinux 0xe9e88d76 devfreq_event_enable_edev +EXPORT_SYMBOL_GPL vmlinux 0xea118cca cpufreq_driver_target +EXPORT_SYMBOL_GPL vmlinux 0xea124bd1 gcd +EXPORT_SYMBOL_GPL vmlinux 0xea38b286 snd_ctl_sync_vmaster +EXPORT_SYMBOL_GPL vmlinux 0xea418e0f atapi_cmd_type +EXPORT_SYMBOL_GPL vmlinux 0xea43355b gen_pool_avail +EXPORT_SYMBOL_GPL vmlinux 0xea4910fe device_rename +EXPORT_SYMBOL_GPL vmlinux 0xea50dad3 ahci_ignore_sss +EXPORT_SYMBOL_GPL vmlinux 0xea8638e3 regulator_is_enabled_regmap +EXPORT_SYMBOL_GPL vmlinux 0xea8fb06a crypto_init_shash_spawn +EXPORT_SYMBOL_GPL vmlinux 0xeaa0a55c regmap_field_read +EXPORT_SYMBOL_GPL vmlinux 0xead83823 ping_seq_next +EXPORT_SYMBOL_GPL vmlinux 0xeae6c5f8 cpufreq_freq_transition_end +EXPORT_SYMBOL_GPL vmlinux 0xeaef9f2b ahci_pmp_retry_srst_ops +EXPORT_SYMBOL_GPL vmlinux 0xeaf1e9f1 hrtimer_cancel +EXPORT_SYMBOL_GPL vmlinux 0xeb02830e nf_queue_entry_release_refs +EXPORT_SYMBOL_GPL vmlinux 0xeb035391 fuse_conn_put +EXPORT_SYMBOL_GPL vmlinux 0xeb2fb6f2 regulator_disable_deferred +EXPORT_SYMBOL_GPL vmlinux 0xeb3280c6 md_find_rdev_nr_rcu +EXPORT_SYMBOL_GPL vmlinux 0xeb47a371 scsi_eh_ready_devs +EXPORT_SYMBOL_GPL vmlinux 0xeb711ae7 snd_soc_params_to_bclk +EXPORT_SYMBOL_GPL vmlinux 0xeb9abbee ata_sff_queue_work +EXPORT_SYMBOL_GPL vmlinux 0xeba8a4a0 usb_stor_control_msg +EXPORT_SYMBOL_GPL vmlinux 0xebcbd144 of_irq_to_resource +EXPORT_SYMBOL_GPL vmlinux 0xebd33648 dev_pm_clear_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0xebec57c4 ring_buffer_oldest_event_ts +EXPORT_SYMBOL_GPL vmlinux 0xebf53753 register_user_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0xec1b043e regulator_suspend_prepare +EXPORT_SYMBOL_GPL vmlinux 0xec25f967 klist_del +EXPORT_SYMBOL_GPL vmlinux 0xec2cfec4 snd_soc_dapm_put_pin_switch +EXPORT_SYMBOL_GPL vmlinux 0xec3325e2 __clk_get_num_parents +EXPORT_SYMBOL_GPL vmlinux 0xec39a343 console_drivers +EXPORT_SYMBOL_GPL vmlinux 0xec41327c fsstack_copy_inode_size +EXPORT_SYMBOL_GPL vmlinux 0xec54c6c9 blocking_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xec98fc4a input_ff_erase +EXPORT_SYMBOL_GPL vmlinux 0xec9d03df ata_sg_init +EXPORT_SYMBOL_GPL vmlinux 0xecadf5b8 dev_pm_opp_enable +EXPORT_SYMBOL_GPL vmlinux 0xecb2ac02 regulator_sync_voltage +EXPORT_SYMBOL_GPL vmlinux 0xeccba0ef snd_soc_jack_add_pins +EXPORT_SYMBOL_GPL vmlinux 0xecfd8761 usb_unpoison_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0xed08b99f dev_coredumpv +EXPORT_SYMBOL_GPL vmlinux 0xed360775 input_ff_upload +EXPORT_SYMBOL_GPL vmlinux 0xed45bba3 usbnet_get_drvinfo +EXPORT_SYMBOL_GPL vmlinux 0xed63e44c sdev_evt_send +EXPORT_SYMBOL_GPL vmlinux 0xed6e4ba2 dapm_regulator_event +EXPORT_SYMBOL_GPL vmlinux 0xed73ca08 usb_find_interface +EXPORT_SYMBOL_GPL vmlinux 0xed8bf8ef inet_twsk_schedule +EXPORT_SYMBOL_GPL vmlinux 0xed92033b flush_kthread_worker +EXPORT_SYMBOL_GPL vmlinux 0xeda63db3 scatterwalk_copychunks +EXPORT_SYMBOL_GPL vmlinux 0xedcddbfb sched_setscheduler +EXPORT_SYMBOL_GPL vmlinux 0xedcdebf7 regmap_raw_write +EXPORT_SYMBOL_GPL vmlinux 0xedffe256 gpiod_cansleep +EXPORT_SYMBOL_GPL vmlinux 0xee0af474 cpufreq_freq_transition_begin +EXPORT_SYMBOL_GPL vmlinux 0xee248c83 __hid_register_driver +EXPORT_SYMBOL_GPL vmlinux 0xee37fb85 devres_get +EXPORT_SYMBOL_GPL vmlinux 0xee42dfde ahci_port_resume +EXPORT_SYMBOL_GPL vmlinux 0xee6b71c4 syscon_regmap_lookup_by_compatible +EXPORT_SYMBOL_GPL vmlinux 0xee90fcfc usb_hcd_unmap_urb_for_dma +EXPORT_SYMBOL_GPL vmlinux 0xeea0b0fd put_device +EXPORT_SYMBOL_GPL vmlinux 0xeecaa9a1 wm8400_reset_codec_reg_cache +EXPORT_SYMBOL_GPL vmlinux 0xeecea0dd shmem_add_seals +EXPORT_SYMBOL_GPL vmlinux 0xeeeada5f dma_buf_kmap_atomic +EXPORT_SYMBOL_GPL vmlinux 0xeef6f1fa n_tty_inherit_ops +EXPORT_SYMBOL_GPL vmlinux 0xef1ab7c0 look_up_OID +EXPORT_SYMBOL_GPL vmlinux 0xef2736c0 fb_bl_default_curve +EXPORT_SYMBOL_GPL vmlinux 0xef351f89 of_address_to_resource +EXPORT_SYMBOL_GPL vmlinux 0xef3d0e7d alarm_restart +EXPORT_SYMBOL_GPL vmlinux 0xef409b74 kmsg_dump_get_line +EXPORT_SYMBOL_GPL vmlinux 0xef464c28 getboottime64 +EXPORT_SYMBOL_GPL vmlinux 0xef66075c usb_wait_anchor_empty_timeout +EXPORT_SYMBOL_GPL vmlinux 0xef6c3f70 round_jiffies_up_relative +EXPORT_SYMBOL_GPL vmlinux 0xef8c1ea4 pwm_set_chip_data +EXPORT_SYMBOL_GPL vmlinux 0xef8c7850 pcap_adc_async +EXPORT_SYMBOL_GPL vmlinux 0xefa2c27d register_tracepoint_module_notifier +EXPORT_SYMBOL_GPL vmlinux 0xefbed2ec usb_hcd_unlink_urb_from_ep +EXPORT_SYMBOL_GPL vmlinux 0xeffe7f63 gpiod_count +EXPORT_SYMBOL_GPL vmlinux 0xf00c5d79 mbox_send_message +EXPORT_SYMBOL_GPL vmlinux 0xf024655b power_supply_put +EXPORT_SYMBOL_GPL vmlinux 0xf03c072f __ftrace_vbprintk +EXPORT_SYMBOL_GPL vmlinux 0xf03fb6f2 ata_sff_wait_ready +EXPORT_SYMBOL_GPL vmlinux 0xf051d6d0 ata_host_alloc +EXPORT_SYMBOL_GPL vmlinux 0xf0727f12 ktime_get_raw_fast_ns +EXPORT_SYMBOL_GPL vmlinux 0xf07d4536 ahci_error_handler +EXPORT_SYMBOL_GPL vmlinux 0xf087c1ea locks_alloc_lock +EXPORT_SYMBOL_GPL vmlinux 0xf0cb1ca9 mtd_erase_callback +EXPORT_SYMBOL_GPL vmlinux 0xf0d8ef2c bgpio_remove +EXPORT_SYMBOL_GPL vmlinux 0xf0dab044 devm_of_phy_get +EXPORT_SYMBOL_GPL vmlinux 0xf0edddf2 devm_regulator_put +EXPORT_SYMBOL_GPL vmlinux 0xf0f5dbc2 timerqueue_iterate_next +EXPORT_SYMBOL_GPL vmlinux 0xf0ffb311 usb_kill_urb +EXPORT_SYMBOL_GPL vmlinux 0xf1011f58 mpc8xxx_spi_tx_buf_u16 +EXPORT_SYMBOL_GPL vmlinux 0xf1285662 bus_for_each_drv +EXPORT_SYMBOL_GPL vmlinux 0xf12caf22 clk_register_divider_table +EXPORT_SYMBOL_GPL vmlinux 0xf1379e8a user_update +EXPORT_SYMBOL_GPL vmlinux 0xf1388458 __ata_change_queue_depth +EXPORT_SYMBOL_GPL vmlinux 0xf1798081 sdio_enable_func +EXPORT_SYMBOL_GPL vmlinux 0xf17f9580 mmput +EXPORT_SYMBOL_GPL vmlinux 0xf17ffdc7 blkcipher_walk_virt +EXPORT_SYMBOL_GPL vmlinux 0xf18497aa kernfs_path +EXPORT_SYMBOL_GPL vmlinux 0xf184d189 kernel_power_off +EXPORT_SYMBOL_GPL vmlinux 0xf196be40 pinctrl_register +EXPORT_SYMBOL_GPL vmlinux 0xf1b31314 delayacct_on +EXPORT_SYMBOL_GPL vmlinux 0xf1d39938 regulator_set_mode +EXPORT_SYMBOL_GPL vmlinux 0xf1d597a0 pm_generic_thaw_noirq +EXPORT_SYMBOL_GPL vmlinux 0xf1d8effb ndo_dflt_bridge_getlink +EXPORT_SYMBOL_GPL vmlinux 0xf1e9747d gpiod_put_array +EXPORT_SYMBOL_GPL vmlinux 0xf1ec3989 usbnet_status_stop +EXPORT_SYMBOL_GPL vmlinux 0xf1f16c9e unregister_jprobes +EXPORT_SYMBOL_GPL vmlinux 0xf1f8165e regulator_set_drvdata +EXPORT_SYMBOL_GPL vmlinux 0xf21e1f9b disable_percpu_irq +EXPORT_SYMBOL_GPL vmlinux 0xf21efe00 ima_file_check +EXPORT_SYMBOL_GPL vmlinux 0xf22e8e6d snd_soc_dapm_ignore_suspend +EXPORT_SYMBOL_GPL vmlinux 0xf27617c2 dev_pm_opp_find_freq_ceil +EXPORT_SYMBOL_GPL vmlinux 0xf27977e2 async_synchronize_cookie_domain +EXPORT_SYMBOL_GPL vmlinux 0xf27bd89a mtd_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xf28f0043 __list_lru_init +EXPORT_SYMBOL_GPL vmlinux 0xf2a1aff7 md_allow_write +EXPORT_SYMBOL_GPL vmlinux 0xf2ed48f0 sysfs_remove_link_from_group +EXPORT_SYMBOL_GPL vmlinux 0xf2f077cc pkey_id_type_name +EXPORT_SYMBOL_GPL vmlinux 0xf2fca922 uart_parse_options +EXPORT_SYMBOL_GPL vmlinux 0xf30e105d ezx_pcap_write +EXPORT_SYMBOL_GPL vmlinux 0xf30fda27 lzo1x_decompress_safe +EXPORT_SYMBOL_GPL vmlinux 0xf31b3fd1 workqueue_set_max_active +EXPORT_SYMBOL_GPL vmlinux 0xf324f86e sdio_readsb +EXPORT_SYMBOL_GPL vmlinux 0xf33882e4 ata_host_alloc_pinfo +EXPORT_SYMBOL_GPL vmlinux 0xf361ce4d wm831x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xf3808cb1 get_state_synchronize_rcu +EXPORT_SYMBOL_GPL vmlinux 0xf3896fbc debugfs_create_u8 +EXPORT_SYMBOL_GPL vmlinux 0xf3a7c558 dma_buf_mmap +EXPORT_SYMBOL_GPL vmlinux 0xf3b451ca kdb_poll_funcs +EXPORT_SYMBOL_GPL vmlinux 0xf3bcc9ea dm_internal_suspend_fast +EXPORT_SYMBOL_GPL vmlinux 0xf3d465a4 user_read +EXPORT_SYMBOL_GPL vmlinux 0xf3e9d438 single_release_net +EXPORT_SYMBOL_GPL vmlinux 0xf3f18238 ktime_get_resolution_ns +EXPORT_SYMBOL_GPL vmlinux 0xf3f32d1a regmap_field_update_bits +EXPORT_SYMBOL_GPL vmlinux 0xf403be1f mtd_block_markbad +EXPORT_SYMBOL_GPL vmlinux 0xf410c1dc bpf_prog_create +EXPORT_SYMBOL_GPL vmlinux 0xf422fac7 i2c_add_numbered_adapter +EXPORT_SYMBOL_GPL vmlinux 0xf4277091 class_compat_create_link +EXPORT_SYMBOL_GPL vmlinux 0xf4379898 of_property_read_u32_index +EXPORT_SYMBOL_GPL vmlinux 0xf43d993d blkcg_print_blkgs +EXPORT_SYMBOL_GPL vmlinux 0xf467ec23 usb_anchor_suspend_wakeups +EXPORT_SYMBOL_GPL vmlinux 0xf4689354 phy_pm_runtime_forbid +EXPORT_SYMBOL_GPL vmlinux 0xf49446e1 ata_eh_qc_complete +EXPORT_SYMBOL_GPL vmlinux 0xf494f618 mmc_regulator_get_ocrmask +EXPORT_SYMBOL_GPL vmlinux 0xf499fdb2 rcu_barrier_bh +EXPORT_SYMBOL_GPL vmlinux 0xf49e0314 get_device +EXPORT_SYMBOL_GPL vmlinux 0xf4a0e375 evm_verifyxattr +EXPORT_SYMBOL_GPL vmlinux 0xf4d684b5 srcu_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xf4d96c10 ip6_sk_redirect +EXPORT_SYMBOL_GPL vmlinux 0xf4e97b1a rpi_firmware_property +EXPORT_SYMBOL_GPL vmlinux 0xf4f2a289 serial8250_do_startup +EXPORT_SYMBOL_GPL vmlinux 0xf4fc2d6c __ring_buffer_alloc +EXPORT_SYMBOL_GPL vmlinux 0xf5292ee6 of_thermal_get_ntrips +EXPORT_SYMBOL_GPL vmlinux 0xf543b6a7 devm_hwmon_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xf54bd49b lcm +EXPORT_SYMBOL_GPL vmlinux 0xf54e3e00 regmap_reinit_cache +EXPORT_SYMBOL_GPL vmlinux 0xf553318d cpuidle_pause_and_lock +EXPORT_SYMBOL_GPL vmlinux 0xf566d334 zap_vma_ptes +EXPORT_SYMBOL_GPL vmlinux 0xf5785acf i2c_bus_type +EXPORT_SYMBOL_GPL vmlinux 0xf579b176 usb_get_hcd +EXPORT_SYMBOL_GPL vmlinux 0xf5a691cd invalidate_bh_lrus +EXPORT_SYMBOL_GPL vmlinux 0xf5aeaa3d shmem_truncate_range +EXPORT_SYMBOL_GPL vmlinux 0xf60e3b8d nf_register_afinfo +EXPORT_SYMBOL_GPL vmlinux 0xf6322e88 tun_get_socket +EXPORT_SYMBOL_GPL vmlinux 0xf63b3971 crypto_aes_set_key +EXPORT_SYMBOL_GPL vmlinux 0xf64aa13d bio_associate_current +EXPORT_SYMBOL_GPL vmlinux 0xf65700ab led_stop_software_blink +EXPORT_SYMBOL_GPL vmlinux 0xf68dd8ac mbox_request_channel_byname +EXPORT_SYMBOL_GPL vmlinux 0xf6c8dc62 cpu_hotplug_enable +EXPORT_SYMBOL_GPL vmlinux 0xf6d285d7 do_unbind_con_driver +EXPORT_SYMBOL_GPL vmlinux 0xf6e874f5 ata_timing_merge +EXPORT_SYMBOL_GPL vmlinux 0xf6f12f6e usb_set_interface +EXPORT_SYMBOL_GPL vmlinux 0xf70382cb snd_soc_pm_ops +EXPORT_SYMBOL_GPL vmlinux 0xf71ea91b wm8350_block_read +EXPORT_SYMBOL_GPL vmlinux 0xf734e4bb regcache_sync_region +EXPORT_SYMBOL_GPL vmlinux 0xf741c6f1 crypto_grab_spawn +EXPORT_SYMBOL_GPL vmlinux 0xf74c24cf fuse_direct_io +EXPORT_SYMBOL_GPL vmlinux 0xf74e8d5f snd_soc_dapm_enable_pin_unlocked +EXPORT_SYMBOL_GPL vmlinux 0xf768e7ed dev_pm_disable_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0xf76a78b7 ipv4_sk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0xf76b0a59 read_current_timer +EXPORT_SYMBOL_GPL vmlinux 0xf79cb8ed component_master_add_with_match +EXPORT_SYMBOL_GPL vmlinux 0xf79cd11a rtnl_af_unregister +EXPORT_SYMBOL_GPL vmlinux 0xf7aeb656 set_cpus_allowed_ptr +EXPORT_SYMBOL_GPL vmlinux 0xf7c54b06 mbox_request_channel +EXPORT_SYMBOL_GPL vmlinux 0xf7cb2478 i2c_new_device +EXPORT_SYMBOL_GPL vmlinux 0xf7d5497d snd_ctl_activate_id +EXPORT_SYMBOL_GPL vmlinux 0xf7e41a1d find_get_pid +EXPORT_SYMBOL_GPL vmlinux 0xf7ef1863 snd_soc_dai_set_clkdiv +EXPORT_SYMBOL_GPL vmlinux 0xf7fe5106 mtd_erase +EXPORT_SYMBOL_GPL vmlinux 0xf8128337 inet6_lookup +EXPORT_SYMBOL_GPL vmlinux 0xf82f16b3 execute_in_process_context +EXPORT_SYMBOL_GPL vmlinux 0xf82f3657 work_on_cpu +EXPORT_SYMBOL_GPL vmlinux 0xf83a4def hwmon_device_register +EXPORT_SYMBOL_GPL vmlinux 0xf846506f irq_set_affinity_notifier +EXPORT_SYMBOL_GPL vmlinux 0xf84f22c7 ping_common_sendmsg +EXPORT_SYMBOL_GPL vmlinux 0xf86e4e8c spi_alloc_device +EXPORT_SYMBOL_GPL vmlinux 0xf8802492 print_stack_trace +EXPORT_SYMBOL_GPL vmlinux 0xf8c84ba6 posix_acl_access_xattr_handler +EXPORT_SYMBOL_GPL vmlinux 0xf8daa6a4 bd_link_disk_holder +EXPORT_SYMBOL_GPL vmlinux 0xf8e6b564 hibernation_set_ops +EXPORT_SYMBOL_GPL vmlinux 0xf8f3a0fb ata_ratelimit +EXPORT_SYMBOL_GPL vmlinux 0xf8f5593c scsi_nl_sock +EXPORT_SYMBOL_GPL vmlinux 0xf8fe3d0b kmsg_dump_register +EXPORT_SYMBOL_GPL vmlinux 0xf916b41c edac_subsys +EXPORT_SYMBOL_GPL vmlinux 0xf91964b3 regmap_parse_val +EXPORT_SYMBOL_GPL vmlinux 0xf91d39a2 ata_sff_irq_on +EXPORT_SYMBOL_GPL vmlinux 0xf92ce956 kdb_printf +EXPORT_SYMBOL_GPL vmlinux 0xf932015f __raw_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xf95322f4 kthread_parkme +EXPORT_SYMBOL_GPL vmlinux 0xf9547a17 divider_recalc_rate +EXPORT_SYMBOL_GPL vmlinux 0xf96f6bc4 hid_input_report +EXPORT_SYMBOL_GPL vmlinux 0xf991c09f rcu_qs_ctr +EXPORT_SYMBOL_GPL vmlinux 0xf99db5fb snd_soc_free_ac97_codec +EXPORT_SYMBOL_GPL vmlinux 0xf9a054b5 __round_jiffies +EXPORT_SYMBOL_GPL vmlinux 0xf9c2da57 clkdev_create +EXPORT_SYMBOL_GPL vmlinux 0xf9ca3160 ata_id_xfermask +EXPORT_SYMBOL_GPL vmlinux 0xf9d7d70e tty_ldisc_ref +EXPORT_SYMBOL_GPL vmlinux 0xfa1472e9 fwnode_property_read_u8_array +EXPORT_SYMBOL_GPL vmlinux 0xfa184ddd snd_device_disconnect +EXPORT_SYMBOL_GPL vmlinux 0xfa1eb910 unregister_syscore_ops +EXPORT_SYMBOL_GPL vmlinux 0xfa413a01 synchronize_srcu +EXPORT_SYMBOL_GPL vmlinux 0xfa4ed12f clk_register +EXPORT_SYMBOL_GPL vmlinux 0xfa54750a blkg_prfill_stat +EXPORT_SYMBOL_GPL vmlinux 0xfa59fec6 crypto_alloc_akcipher +EXPORT_SYMBOL_GPL vmlinux 0xfa64d54e ahci_start_fis_rx +EXPORT_SYMBOL_GPL vmlinux 0xfa97489d tpm_do_selftest +EXPORT_SYMBOL_GPL vmlinux 0xfa980d43 xfrm_local_error +EXPORT_SYMBOL_GPL vmlinux 0xfaa673e7 bio_clone_mddev +EXPORT_SYMBOL_GPL vmlinux 0xfaaaab13 sysfs_remove_file_ns +EXPORT_SYMBOL_GPL vmlinux 0xfaaf61ab led_trigger_store +EXPORT_SYMBOL_GPL vmlinux 0xfac5dcf4 get_mtd_device +EXPORT_SYMBOL_GPL vmlinux 0xfad53063 watchdog_init_timeout +EXPORT_SYMBOL_GPL vmlinux 0xfae755d2 devm_regmap_field_free +EXPORT_SYMBOL_GPL vmlinux 0xfb010006 stmpe_set_altfunc +EXPORT_SYMBOL_GPL vmlinux 0xfb32b30f ring_buffer_read_prepare_sync +EXPORT_SYMBOL_GPL vmlinux 0xfb68c7d5 reset_controller_unregister +EXPORT_SYMBOL_GPL vmlinux 0xfb6eedf9 power_group_name +EXPORT_SYMBOL_GPL vmlinux 0xfb6f2b2c of_get_regulator_init_data +EXPORT_SYMBOL_GPL vmlinux 0xfb7769d7 usb_add_phy_dev +EXPORT_SYMBOL_GPL vmlinux 0xfb8f98e8 ata_bmdma_port_ops +EXPORT_SYMBOL_GPL vmlinux 0xfb94f014 usb_anchor_empty +EXPORT_SYMBOL_GPL vmlinux 0xfb9e10e1 cn_add_callback +EXPORT_SYMBOL_GPL vmlinux 0xfbbd41ca no_action +EXPORT_SYMBOL_GPL vmlinux 0xfbbff5cb thermal_zone_get_temp +EXPORT_SYMBOL_GPL vmlinux 0xfbc5d675 reservation_object_get_fences_rcu +EXPORT_SYMBOL_GPL vmlinux 0xfbcfdcfa bpf_prog_free +EXPORT_SYMBOL_GPL vmlinux 0xfbd7d042 xfrm_output_resume +EXPORT_SYMBOL_GPL vmlinux 0xfbf2062f extcon_dev_free +EXPORT_SYMBOL_GPL vmlinux 0xfc02260e skb_zerocopy_headlen +EXPORT_SYMBOL_GPL vmlinux 0xfc03d97a page_is_ram +EXPORT_SYMBOL_GPL vmlinux 0xfc1fce48 device_remove_file +EXPORT_SYMBOL_GPL vmlinux 0xfc50d5d0 simple_attr_open +EXPORT_SYMBOL_GPL vmlinux 0xfc515183 device_get_next_child_node +EXPORT_SYMBOL_GPL vmlinux 0xfc5b065e serial8250_request_dma +EXPORT_SYMBOL_GPL vmlinux 0xfc655847 mtd_unlock +EXPORT_SYMBOL_GPL vmlinux 0xfc774c06 bus_find_device +EXPORT_SYMBOL_GPL vmlinux 0xfc95943a enable_kprobe +EXPORT_SYMBOL_GPL vmlinux 0xfcca20cf __platform_driver_probe +EXPORT_SYMBOL_GPL vmlinux 0xfcd7bc0b ring_buffer_empty +EXPORT_SYMBOL_GPL vmlinux 0xfd072b79 gov_queue_work +EXPORT_SYMBOL_GPL vmlinux 0xfd18acb1 pinctrl_put +EXPORT_SYMBOL_GPL vmlinux 0xfd3b3a24 hid_dump_device +EXPORT_SYMBOL_GPL vmlinux 0xfd456b02 wbc_account_io +EXPORT_SYMBOL_GPL vmlinux 0xfd7a50ea set_timer_slack +EXPORT_SYMBOL_GPL vmlinux 0xfd8933a0 swiotlb_unmap_page +EXPORT_SYMBOL_GPL vmlinux 0xfd92665f get_dcookie +EXPORT_SYMBOL_GPL vmlinux 0xfda286e5 ata_cable_unknown +EXPORT_SYMBOL_GPL vmlinux 0xfda4dd0b sdhci_pltfm_suspend +EXPORT_SYMBOL_GPL vmlinux 0xfdb8d240 fat_get_dotdot_entry +EXPORT_SYMBOL_GPL vmlinux 0xfde1a33e klist_prev +EXPORT_SYMBOL_GPL vmlinux 0xfdf3da8b regulator_enable +EXPORT_SYMBOL_GPL vmlinux 0xfdf53b82 trace_call_bpf +EXPORT_SYMBOL_GPL vmlinux 0xfe00c393 snd_soc_component_write +EXPORT_SYMBOL_GPL vmlinux 0xfe05bc0e bdev_write_page +EXPORT_SYMBOL_GPL vmlinux 0xfe1192cb irq_create_strict_mappings +EXPORT_SYMBOL_GPL vmlinux 0xfe49bf6d led_trigger_event +EXPORT_SYMBOL_GPL vmlinux 0xfe63994f sdio_writeb_readb +EXPORT_SYMBOL_GPL vmlinux 0xfe714f31 dev_pm_qos_remove_notifier +EXPORT_SYMBOL_GPL vmlinux 0xfe7a5ecd usb_submit_urb +EXPORT_SYMBOL_GPL vmlinux 0xfe7b37d7 perf_tp_event +EXPORT_SYMBOL_GPL vmlinux 0xfe940a2a transport_setup_device +EXPORT_SYMBOL_GPL vmlinux 0xfe990052 gpio_free +EXPORT_SYMBOL_GPL vmlinux 0xfea64544 device_show_bool +EXPORT_SYMBOL_GPL vmlinux 0xfeca044a usb_reset_endpoint +EXPORT_SYMBOL_GPL vmlinux 0xfed11ed1 usb_mon_deregister +EXPORT_SYMBOL_GPL vmlinux 0xfef8a166 trace_current_buffer_lock_reserve +EXPORT_SYMBOL_GPL vmlinux 0xff095ac8 generic_fh_to_parent +EXPORT_SYMBOL_GPL vmlinux 0xff23b036 usb_hcd_resume_root_hub +EXPORT_SYMBOL_GPL vmlinux 0xff291ecf clk_unregister_divider +EXPORT_SYMBOL_GPL vmlinux 0xff3367ff srcu_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0xff3d200f bus_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xff4b9d5b snd_dmaengine_pcm_pointer +EXPORT_SYMBOL_GPL vmlinux 0xff5a8cfe cn_del_callback +EXPORT_SYMBOL_GPL vmlinux 0xff5f471a da9052_request_irq +EXPORT_SYMBOL_GPL vmlinux 0xff633558 vprintk_default +EXPORT_SYMBOL_GPL vmlinux 0xff9a48f3 fwnode_property_read_string_array +EXPORT_SYMBOL_GPL vmlinux 0xffb46699 i2c_unlock_adapter +EXPORT_SYMBOL_GPL vmlinux 0xffced7db __dev_forward_skb +EXPORT_SYMBOL_GPL vmlinux 0xffdb1d59 serial8250_tx_chars +EXPORT_SYMBOL_GPL vmlinux 0xffdd3e9e usbnet_resume_rx +EXPORT_SYMBOL_GPL vmlinux 0xffe28f2f regulator_bulk_get --- linux-raspi2-4.2.0.orig/debian.raspi2/abi/4.2.0-1021.28/armhf/raspi2.compiler +++ linux-raspi2-4.2.0/debian.raspi2/abi/4.2.0-1021.28/armhf/raspi2.compiler @@ -0,0 +1 @@ +GCC: (Ubuntu 5.2.1-22ubuntu2) 5.2.1 20151010 --- linux-raspi2-4.2.0.orig/debian.raspi2/abi/4.2.0-1021.28/armhf/raspi2.modules +++ linux-raspi2-4.2.0/debian.raspi2/abi/4.2.0-1021.28/armhf/raspi2.modules @@ -0,0 +1,3301 @@ +6lowpan +6pack +8021q +8192cu +8250_dw +8255 +842 +842_compress +842_decompress +88pm800 +88pm805 +88pm80x +88pm80x_onkey +88pm8607 +88pm860x_battery +88pm860x_bl +88pm860x_charger +88pm860x_onkey +88pm860x-ts +9p +9pnet +a3d +a8293 +aat2870_bl +aat2870-regulator +ab3100 +ab3100-otp +ablk_helper +acecad +act200l-sir +act8865-regulator +act_bpf +act_connmark +act_csum +act_gact +act_ipt +actisys-sir +act_mirred +act_nat +act_pedit +act_police +act_simple +act_skbedit +act_vlan +ad2s1200 +ad2s1210 +ad2s90 +ad5064 +ad525x_dpot +ad525x_dpot-i2c +ad525x_dpot-spi +ad5360 +ad5380 +ad5398 +ad5421 +ad5446 +ad5449 +ad5504 +ad5624r_spi +ad5686 +ad5755 +ad5764 +ad5791 +ad5933 +ad714x +ad714x-i2c +ad714x-spi +ad7150 +ad7152 +ad7192 +ad7266 +ad7280a +ad7291 +ad7298 +ad7303 +ad7314 +ad7414 +ad7418 +ad7476 +ad7606 +ad7746 +ad7780 +ad7791 +ad7793 +ad7816 +ad7877 +ad7879 +ad7879-i2c +ad7879-spi +ad7887 +ad7923 +ad799x +ad8366 +ad9523 +ad9832 +ad9834 +adc128d818 +adcxx +ade7753 +ade7754 +ade7758 +ade7759 +ade7854 +ade7854-i2c +ade7854-spi +adf4350 +adfs +adi +adis16060 +adis16080 +adis16130 +adis16136 +adis16201 +adis16203 +adis16204 +adis16209 +adis16220 +adis16240 +adis16260 +adis16400 +adis16480 +adis_lib +adjd_s311 +adm1021 +adm1025 +adm1026 +adm1029 +adm1031 +adm1275 +adm9240 +adp5520_bl +adp5520-keys +adp5588-keys +adp5589-keys +adp8860_bl +adp8870_bl +adq12b +ads1015 +ads7828 +ads7846 +ads7871 +ad_sigma_delta +adt7310 +adt7316 +adt7316-i2c +adt7316-spi +adt7410 +adt7411 +adt7462 +adt7470 +adt7475 +adt7x10 +adummy +adutux +adv7511 +adxl34x +adxl34x-i2c +adxl34x-spi +adxrs450 +aes-arm +aes-arm-bs +aes-arm-ce +af9013 +af9033 +af_alg +affs +af_key +af_packet_diag +af-rxrpc +afs +ah4 +ah6 +ahci_ceva +aio_aio12_8 +aio_iiro_16 +aiptek +aircable +airspy +ak8975 +al3320a +algif_aead +algif_hash +algif_rng +algif_skcipher +altera_jtaguart +altera_ps2 +altera-stapl +altera_tse +altera_uart +ambakmi +amba-pl010 +amc6821 +amd +amplc_dio200 +amplc_dio200_common +amplc_pc236 +amplc_pc236_common +amplc_pc263 +ams369fg06 +analog +anatop-regulator +ansi_cprng +anubis +aoe +apbps2 +apds9300 +apds9802als +apds990x +appledisplay +appletalk +appletouch +ar1021_i2c +ar5523 +ar7part +arc4 +arc_emac +arc_ps2 +arc_uart +arizona-haptics +arizona-i2c +arizona-ldo1 +arizona-micsupp +arizona-spi +ark3116 +armada +arm_big_little +arm_big_little_dt +arm_mhu +arptable_filter +arp_tables +arpt_mangle +as102_fe +as3711_bl +as3711-regulator +as3722-regulator +as3935 +as5011 +asc7621 +asix +async_memcpy +async_pq +async_raid6_recov +async_tx +async_xor +at24 +at25 +at76c50x-usb +at803x +at86rf230 +atbm8830 +aten +ath +ath10k_core +ath3k +ath6kl_core +ath6kl_sdio +ath6kl_usb +ath9k +ath9k_common +ath9k_htc +ath9k_hw +ati_remote +ati_remote2 +atm +atmel-hlcdc +atmel-hlcdc-dc +atmel_mxt_ts +atmtcp +atusb +atxp1 +au0828 +au8522_common +au8522_decoder +au8522_dig +aufs +auo_k1900fb +auo_k1901fb +auo_k190x +auo-pixcir-ts +authenc +authencesn +auth_rpcgss +autofs4 +ax25 +ax88179_178a +ax88796 +axp20x-pek +axp20x-regulator +axp288_adc +axp288_charger +axp288_fuel_gauge +b2c2-flexcop +b2c2-flexcop-usb +b43 +b43legacy +b44 +bas_gigaset +batman-adv +baycom_epp +baycom_par +baycom_ser_fdx +baycom_ser_hdx +bcache +bcm203x +bcm2708-rng +bcm2708_wdog +bcm2835-gpiomem +bcm2835-rng +bcm2835_smi +bcm2835_smi_dev +bcm2835_smi_nand +bcm2835-v4l2 +bcm2835_wdt +bcm3510 +bcm590xx +bcm590xx-regulator +bcm5974 +bcm63138_nand +bcm63xx_uart +bcm7xxx +bcm87xx +bcma +bcm-keypad +bcmsysport +bd6107 +befs +belkin_sa +bfs +bfusb +bh1750 +bh1770glc +bh1780gli +binfmt_misc +block2mtd +blocklayoutdriver +blowfish_common +blowfish_generic +bluetooth +bluetooth_6lowpan +bma150 +bma180 +bmc150-accel +bmc150_magn +bmg160 +bmp085-i2c +bmp085-spi +bmp280 +bnep +bonding +bpa10x +bpck +bpck6 +bpqether +bq2415x_charger +bq24190_charger +bq24257_charger +bq24735-charger +bq25890_charger +bq27x00_battery +br2684 +brcmfmac +brcmnand +brcmsmac +brcmstb_nand +brcmutil +bridge +br_netfilter +broadcom +broadsheetfb +bsd_comp +btbcm +btintel +btmrvl +btmrvl_sdio +btrfs +btrtl +btsdio +btusb +btwilink +bu21013_ts +c67x00 +c6xdigio +cachefiles +cadence_wdt +caif +caif_hsi +caif_serial +caif_socket +caif_usb +camellia_generic +can +can-bcm +can-dev +can-gw +can-raw +cap11xx +capi +capidrv +carl9170 +cast5_generic +cast6_generic +cast_common +catc +cc10001_adc +cc2520 +cc770 +cc770_isa +cc770_platform +c_can +c_can_platform +ccm +cdc-acm +cdc_eem +cdc_ether +cdc_mbim +cdc_ncm +cdc-phonet +cdc_subset +cdc-wdm +ceph +cfg80211 +cfi_cmdset_0001 +cfi_cmdset_0002 +cfi_cmdset_0020 +cfi_probe +cfi_util +cfspi_slave +ch +ch341 +ch7006 +chacha20_generic +chacha20poly1305 +chaoskey +chipone_icn8318 +chnl_net +cicada +cifs +clip +clk-cdce706 +clk-cdce925 +clk-hifiberry-dacpro +clk-max77686 +clk-max77802 +clk-palmas +clk-pwm +clk-rk808 +clk-s2mps11 +clk-si5351 +clk-si570 +clk-twl6040 +clk-wm831x +cls_basic +cls_bpf +cls_cgroup +cls_flow +cls_flower +cls_fw +cls_route +cls_rsvp +cls_rsvp6 +cls_tcindex +cls_u32 +cm109 +cm32181 +cm3232 +cm3323 +cm36651 +cma3000_d0x +cma3000_d0x_i2c +cmac +cmtp +cobra +coda +comedi +comedi_8254 +comedi_8255 +comedi_bond +comedi_parport +comedi_test +comedi_usb +comm +configfs +cordic +core +cp210x +cpia2 +cpufreq-dt +cpu-notifier-error-inject +cramfs +crc32 +crc7 +crc8 +crc-ccitt +crc-itu-t +cros_ec +cros_ec_devs +cros_ec_i2c +cros_ec_keyb +cros_ec_spi +cryptd +cryptoloop +crypto_null +crypto_user +cs53l32a +cs89x0 +ctr +cts +cuse +cw1200_core +cw1200_wlan_sdio +cw1200_wlan_spi +cx22702 +cx231xx +cx231xx-alsa +cx231xx-dvb +cx2341x +cx24113 +cx24116 +cx24120 +cx24123 +cx25840 +cx82310_eth +cxacru +cxd2820r +cy8ctmg110_ts +cyapatp +cyberjack +cypress_cy7c63 +cypress_firmware +cypress_m8 +cytherm +cyttsp4_core +cyttsp4_i2c +cyttsp4_spi +cyttsp_core +cyttsp_i2c +cyttsp_i2c_common +cyttsp_spi +da9030_battery +da9034-ts +da903x +da903x_bl +da9052-battery +da9052_bl +da9052-hwmon +da9052_onkey +da9052-regulator +da9052_tsi +da9052_wdt +da9055-hwmon +da9055_onkey +da9055-regulator +da9055_wdt +da9063_onkey +da9063-regulator +da9063_wdt +da9150-charger +da9150-core +da9150-gpadc +da9210-regulator +da9211-regulator +dac02 +das08 +das08_isa +das16 +das16m1 +das1800 +das6402 +das800 +davicom +db9 +dccp +dccp_diag +dccp_ipv4 +dccp_ipv6 +dccp_probe +decnet +deflate +denali +denali_dt +des_generic +designware_i2s +dgap +dht11 +dib0070 +dib0090 +dib3000mb +dib3000mc +dib7000m +dib7000p +dib8000 +dibx000_common +digi_acceleport +digicolor-usart +diskonchip +dlci +dlm +dln2 +dm9000 +dm9601 +dm-bio-prison +dm-bufio +dm-cache +dm-cache-cleaner +dm-cache-mq +dm-cache-smq +dm-crypt +dm-delay +dme1737 +dm-era +dm-flakey +dm-log +dm-log-userspace +dm-log-writes +dmm32at +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-verity +dm-zero +dnet +dn_rtmsg +docg3 +docg4 +dp83867 +drbd +drbg +drm +drm_kms_helper +drv260x +drv2665 +drv2667 +drx39xyj +drxd +drxk +ds1621 +ds1682 +ds1wm +ds2482 +ds2490 +ds2760_battery +ds2780_battery +ds2781_battery +ds2782_battery +ds3000 +ds620 +dsbr100 +dss1_divert +dstr +dt2801 +dt2811 +dt2814 +dt2815 +dt2817 +dt282x +dt9812 +dummy +dummy-irq +dvb-as102 +dvb-core +dvb-pll +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-digitv +dvb-usb-dtt200u +dvb-usb-dtv5100 +dvb-usb-dvbsky +dvb-usb-dw2102 +dvb-usb-ec168 +dvb-usb-friio +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_v2 +dvb-usb-vp702x +dvb-usb-vp7045 +dwc3 +dw_dmac +dw_dmac_core +dwmac-generic +dwmac-ipq806x +dwmac-lpc18xx +dwmac-meson +dwmac-rk +dwmac-socfpga +dwmac-sti +dwmac-sunxi +dw_mmc +dw_mmc-exynos +dw_mmc-k3 +dw_mmc-pltfm +dw_wdt +dynapro +e3x0-button +e4000 +ebt_802_3 +ebtable_broute +ebtable_filter +ebtable_nat +ebtables +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 +ec100 +echainiv +echo +edac_core +edt-ft5x06 +eeprom +eeprom_93cx6 +eeprom_93xx46 +eeti_ts +efs +egalax_ts +ehset +elan_i2c +elants_i2c +elo +em28xx +em28xx-alsa +em28xx-dvb +em28xx-rc +em28xx-v4l +emac_arc +emac_rockchip +emc1403 +emc2103 +emc6w201 +em_canid +em_cmp +emi26 +emi62 +em_ipset +em_meta +em_nbyte +empeg +ems_usb +em_text +em_u32 +enc28j60 +enclosure +epat +epia +eql +esd_usb2 +esi-sir +esp4 +esp6 +et1011c +ethoc +evbug +exofs +extcon-adc-jack +extcon-arizona +extcon-axp288 +extcon-gpio +extcon-max14577 +extcon-max77693 +extcon-max77843 +extcon-max8997 +extcon-palmas +extcon-rt8973a +extcon-sm5502 +extcon-usb-gpio +ezusb +f2fs +f71805f +f71882fg +f75375s +f81232 +fakelb +fan53555 +faulty +fb_agm1264k-fl +fb_bd663474 +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_ssd1289 +fb_ssd1306 +fb_ssd1331 +fb_ssd1351 +fb_st7735r +fb_sys_fops +fbtft +fbtft_device +fb_tinylcd +fb_tls8204 +fb_uc1701 +fb_upd161704 +fb_watterott +fc0011 +fc0012 +fc0013 +fc2580 +fcrypt +ff-memless +fid +fit2 +fit3 +fl512 +fld +flexcan +flexfb +fmc +fmc-chardev +fmc-fakedev +fmc-trivial +fmc-write-eeprom +fm_drv +fotg210-hcd +fou +freevxfs +friq +frpw +fsa9480 +fscache +fsl-edma +fsl_lpuart +ft1000 +ftdi-elan +ftdi_sio +ftgmac100 +ftl +ftmac100 +fujitsu_ts +fusbh200-hcd +g760a +g762 +gamecon +gameport +garmin_gps +garp +gcm +gdmtty +gdmulte +gdmwm +generic +generic-adc-battery +generic_bl +genet +geneve +geneve_core +gen_probe +gf128mul +gf2k +gfs2 +ghash-arm-ce +ghash-generic +gigaset +girbil-sir +gl518sm +gl520sm +gl620a +gluebi +go7007 +go7007-loader +go7007-usb +goodix +gp2ap002a00f +gp2ap020a00f +gpio +gpio-74x164 +gpio-74xx-mmio +gpio-addr-flash +gpio-adnp +gpio-adp5520 +gpio-adp5588 +gpio-altera +gpio-arizona +gpio_backlight +gpio-beeper +gpio-charger +gpio-crystalcove +gpio-da9052 +gpio-da9055 +gpio-dln2 +gpio-dwapb +gpio-fan +gpio-grgpio +gpio-ir-recv +gpio-kempld +gpio_keys +gpio_keys_polled +gpio-lp3943 +gpio-max7300 +gpio-max7301 +gpio-max730x +gpio-max732x +gpio-mc33880 +gpio-mcp23s08 +gpio_mouse +gpio-pca953x +gpio-pcf857x +gpio-regulator +gpio-sch311x +gpio-syscon +gpio_tilt_polled +gpio-tps65912 +gpio-ucb1400 +gpio-viperboard +gpio_wdt +gpio-wm831x +gpio-wm8350 +gpio-wm8994 +grace +grcan +gre +grip +grip_mp +gs_fpga +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 +gs_usb +gtco +guillemot +gunze +hackrf +hampshire +hanwang +hci +hci_uart +hci_vhci +hdlc +hdlc_cisco +hdlcdrv +hdlc_fr +hdlc_ppp +hdlc_raw +hdlc_raw_eth +hdlc_x25 +hdpvr +hfc4s8s_l1 +hfcsusb +hfc_usb +hfs +hfsplus +hi6421-pmic-core +hi6421-regulator +hid-a4tech +hid-apple +hid-appleir +hid-aureal +hid-axff +hid-belkin +hid-betopff +hid-cherry +hid-chicony +hid-cp2112 +hid-cypress +hid-dr +hid-elecom +hid-elo +hid-emsff +hid-ezkey +hid-gaff +hid-gt683r +hid-gyration +hid-holtekff +hid-holtek-kbd +hid-holtek-mouse +hid-icade +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 +hidp +hid-penmount +hid-petalynx +hid-picolcd +hid-pl +hid-plantronics +hid-primax +hid-prodikeys +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-iio-common +hid-sensor-incl-3d +hid-sensor-magn-3d +hid-sensor-press +hid-sensor-prox +hid-sensor-rotation +hid-sensor-trigger +hid-sjoy +hid-sony +hid-speedlink +hid-steelseries +hid-sunplus +hid-thingm +hid-tivo +hid-tmff +hid-topseed +hid-twinhan +hid-uclogic +hid-waltop +hid-wiimote +hid-xinmo +hid-zpff +hid-zydacron +hih6130 +hip04_eth +hip04_mdio +hisax +hisax_st5481 +hisi504_nand +hix5hd2_gmac +hmc5843_core +hmc5843_i2c +hmc5843_spi +hmc6352 +hostap +hpfs +hsi +hsi_char +hso +hsr +htc-pasic3 +htu21 +huawei_cdc_ncm +hwa-hc +hwa-rc +hwmon-vid +hx8357 +i1480-dfu-usb +i1480-est +i2400m +i2400m-usb +i2c-algo-bit +i2c-algo-pca +i2c-arb-gpio-challenge +i2c-bcm2708 +i2c-cbus-gpio +i2c-cros-ec-tunnel +i2c-designware-core +i2c-designware-platform +i2c-diolan-u2c +i2c-dln2 +i2c-gpio +i2c-hid +i2c-kempld +i2c-mux +i2c-mux-gpio +i2c-mux-pca9541 +i2c-mux-pca954x +i2c-mux-pinctrl +i2c-nomadik +i2c-ocores +i2c-parport +i2c-parport-light +i2c-pca-platform +i2c-rk3x +i2c-robotfuzz-osif +i2c-simtec +i2c-slave-eeprom +i2c-smbus +i2c-stub +i2c-taos-evm +i2c-tiny-usb +i2c-viperboard +i2c-xiic +ibmaem +ibmpex +icplus +ics932s401 +idmouse +ieee802154 +ieee802154_6lowpan +ieee802154_socket +ifb +iforce +igorplugusb +iguanair +iio_dummy +iio_hwmon +iio-trig-interrupt +iio-trig-periodic-rtc +iio-trig-sysfs +ii_pci20kc +ili210x +ili922x +ili9320 +imm +imon +impa7 +ims-pcu +imx074 +imx_thermal +ina209 +ina2xx +industrialio +industrialio-triggered-buffer +inet_diag +inexio +inftl +input-leds +input-polldev +int51x1 +interact +interval_tree_test +inv-mpu6050 +io_edgeport +io_ti +iowarrior +ip6_gre +ip6table_filter +ip6table_mangle +ip6table_nat +ip6table_raw +ip6_tables +ip6table_security +ip6t_ah +ip6t_eui64 +ip6t_frag +ip6t_hbh +ip6t_ipv6header +ip6t_MASQUERADE +ip6t_mh +ip6t_NPT +ip6t_REJECT +ip6t_rpfilter +ip6t_rt +ip6t_SYNPROXY +ip6_tunnel +ip6_udp_tunnel +ip6_vti +ipack +ipaq +ipcomp +ipcomp6 +ipddp +ip_gre +ipheth +ipip +ipmi_devintf +ipmi_msghandler +ipmi_poweroff +ipmi_si +ipmi_ssif +ipmi_watchdog +ipoctal +iproc_nand +ip_set +ip_set_bitmap_ip +ip_set_bitmap_ipmac +ip_set_bitmap_port +ip_set_hash_ip +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 +iptable_filter +iptable_mangle +iptable_nat +iptable_raw +ip_tables +iptable_security +ipt_ah +ipt_CLUSTERIP +ipt_ECN +ipt_MASQUERADE +ipt_REJECT +ipt_rpfilter +ipt_SYNPROXY +ip_tunnel +ipvlan +ip_vs +ip_vs_dh +ip_vs_fo +ip_vs_ftp +ip_vs_lblc +ip_vs_lblcr +ip_vs_lc +ip_vs_nq +ip_vs_pe_sip +ip_vs_rr +ip_vs_sed +ip_vs_sh +ip_vs_wlc +ip_vs_wrr +ip_vti +ipw +ipx +ircomm +ircomm-tty +irda +irda-usb +ir-hix5hd2 +ir-jvc-decoder +ir-kbd-i2c +irlan +ir-lirc-codec +ir-mce_kbd-decoder +ir-nec-decoder +irnet +ir-rc5-decoder +ir-rc6-decoder +ir-sanyo-decoder +ir-sharp-decoder +ir-sony-decoder +irtty-sir +ir-usb +ir-xmp-decoder +iscsi_boot_sysfs +iscsi_target_mod +iscsi_tcp +isdn +isdn_bsdcomp +isdnhdlc +isight_firmware +isl29003 +isl29018 +isl29020 +isl29028 +isl29125 +isl6271a-regulator +isl6421 +isl6423 +isl9305 +isofs +isp116x-hcd +isp1362-hcd +isp1704_charger +isp1760 +it87 +it913x +itd1000 +itg3200 +iuu_phoenix +ix2505v +jc42 +jedec_probe +jffs2 +jfs +jitterentropy_rng +joydev +joydump +jsa1212 +kafs +kalmia +kaweth +kbic +kbtab +kcomedilib +kempld-core +kempld_wdt +kernelcapi +keyspan +keyspan_pda +keyspan_remote +kfifo_buf +khazad +kingsun-sir +kl5kusb105 +kmx61 +kobil_sct +ks0108 +ks8842 +ks8851 +ks8851_mll +ks959-sir +ksdazzle-sir +ksocklnd +ktti +kvaser_usb +kxcjk-1013 +kxsd9 +kxtj9 +l1oip +l2tp_core +l2tp_debugfs +l2tp_eth +l2tp_ip +l2tp_ip6 +l2tp_netlink +l2tp_ppp +l4f00242t03 +lapb +lapbether +latch-addr-flash +lattice-ecp3-config +lcd +ld9040 +ldusb +lec +led-class-flash +leds-88pm860x +leds-aat1290 +leds-adp5520 +leds-bcm6328 +leds-bcm6358 +leds-bd2802 +leds-blinkm +leds-da903x +leds-da9052 +leds-dac124s085 +leds-ktd2692 +leds-lm3530 +leds-lm3533 +leds-lm355x +leds-lm3642 +leds-lp3944 +leds-lp8788 +leds-lp8860 +leds-lt3593 +leds-max77693 +leds-max8997 +leds-mc13783 +leds-menf21bmc +leds-pca9532 +leds-pca955x +leds-pca963x +leds-pm8941-wled +leds-pwm +leds-regulator +leds-tca6507 +leds-tlc591xx +leds-wm831x-status +leds-wm8350 +ledtrig-backlight +ledtrig-camera +ledtrig-gpio +ledtrig-oneshot +ledtrig-timer +ledtrig-transient +legousbtower +lg2160 +lgdt3305 +lgdt3306a +lgdt330x +lgs8gxx +lg-vl600 +lib80211 +lib80211_crypt_ccmp +lib80211_crypt_tkip +lib80211_crypt_wep +libceph +libcfs +libcrc32c +libertas +libertas_sdio +libertas_spi +libertas_tf +libertas_tf_usb +libfc +libfcoe +libiscsi +libiscsi_tcp +libore +libosd +libsas +lightning +lineage-pem +linear +lirc_dev +lirc_imon +lirc_parallel +lirc_rpi +lirc_sasem +lirc_serial +lirc_sir +lirc_zilog +lis3l02dq +lis3lv02d +lis3lv02d_i2c +lis3lv02d_spi +litelink-sir +lkkbd +llc +llc2 +llite_lloop +lm25066 +lm3533-als +lm3533_bl +lm3533-core +lm3533-ctrlbank +lm3630a_bl +lm3639_bl +lm63 +lm70 +lm73 +lm75 +lm77 +lm78 +lm80 +lm83 +lm8323 +lm8333 +lm85 +lm87 +lm90 +lm92 +lm93 +lm95234 +lm95241 +lm95245 +lms283gf05 +lms501kf03 +lmv +lnbp21 +lnbp22 +lnet +lnet_selftest +lockd +locktorture +lov +lp +lp3943 +lp3971 +lp3972 +lp855x_bl +lp8727_charger +lp872x +lp8755 +lp8788_adc +lp8788_bl +lp8788-buck +lp8788-charger +lp8788-ldo +lpddr2_nvm +lpddr_cmds +lru_cache +lrw +ltc2941-battery-gauge +ltc2945 +ltc2978 +ltc3589 +ltc4151 +ltc4215 +ltc4222 +ltc4245 +ltc4260 +ltc4261 +ltr501 +ltv350qv +lustre +lv5207lp +lvstest +lxt +lz4 +lz4_compress +lz4hc +lz4hc_compress +m25p80 +m2m-deinterlace +m62332 +m88ds3103 +m88rs2000 +ma600-sir +mac80211 +mac80211_hwsim +mac802154 +macb +mac-celtic +mac-centeuro +mac-croatian +mac-cyrillic +mac-gaelic +mac-greek +mac-iceland +mac-inuit +mac-roman +mac-romanian +mac-turkish +macvlan +macvtap +mag3110 +magellan +mailbox-altera +map_absent +map_ram +map_rom +marvell +matrix-keymap +matrix_keypad +max1027 +max1111 +max11801_ts +max1363 +max14577 +max14577_charger +max1586 +max16064 +max16065 +max1619 +max1668 +max17040_battery +max17042_battery +max197 +max2165 +max3100 +max3421-hcd +max34440 +max517 +max5821 +max63xx_wdt +max6639 +max6642 +max6650 +max6697 +max6875 +max7359_keypad +max77686 +max77693 +max77693_charger +max77693-haptic +max77802 +max77843 +max77843-haptic +max8649 +max8660 +max8688 +max8903_charger +max8907 +max8907-regulator +max8925_bl +max8925_onkey +max8925_power +max8925-regulator +max8952 +max8973-regulator +max8997 +max8997_charger +max8997_haptic +max8998 +max8998_charger +mb86a20s +mc13783-adc +mc13783-pwrbutton +mc13783-regulator +mc13783_ts +mc13892-regulator +mc13xxx-core +mc13xxx-i2c +mc13xxx-regulator-core +mc13xxx-spi +mc44s803 +m_can +mcb +mceusb +mcp2120-sir +mcp251x +mcp3021 +mcp320x +mcp3422 +mcp4725 +mcp4922 +mcryptd +mcs5000_ts +mcs7780 +mcs7830 +mcs_touchkey +mct_u232 +md4 +mdc +mdc800 +md-cluster +mdio-bcm-unimac +mdio-bitbang +mdio-gpio +mdio-mux +mdio-mux-gpio +mdio-mux-mmioreg +media +memstick +mena21_wdt +menf21bmc +menf21bmc_hwmon +menf21bmc_wdt +men_z135_uart +men_z188_adc +metronomefb +metro-usb +mgc +mg_disk +michael_mic +micrel +microread +microread_i2c +microtek +minix +mip6 +mISDN_core +mISDN_dsp +mk712 +mkiss +mlx90614 +mma8450 +mma8452 +mma9551 +mma9551_core +mma9553 +mmc35240 +mmc_spi +mms114 +mn88472 +mn88473 +mos7720 +mos7840 +mpc624 +mpl115 +mpl3115 +mpls_gso +mpls_router +mpoa +mpr121_touchkey +mpu3050 +mrf24j40 +mrp +ms5611_core +ms5611_i2c +ms5611_spi +ms_block +msdos +msi001 +msi2500 +msp3400 +mspro_block +mt2060 +mt2063 +mt20xx +mt2266 +mt29f_spinand +mt312 +mt352 +mt6397-core +mt6397-regulator +mt7601u +mt9m001 +mt9m111 +mt9t031 +mt9t112 +mt9v011 +mt9v022 +mtd_dataflash +mtdoops +mtdram +mtdswap +mtk-sd +mtouch +multipath +multiq3 +mvmdio +mwifiex +mwifiex_sdio +mwifiex_usb +mxl111sf-demod +mxl111sf-tuner +mxl5005s +mxl5007t +mxuport +nandsim +national +nau7802 +navman +nbd +nbpfaxi +nci +nci_uart +ncpfs +nct6683 +nct6775 +nct7802 +nct7904 +net1080 +netconsole +netlink_diag +netrom +newtonkbd +nfc +nfc_digital +nfcmrvl +nfcmrvl_uart +nfcmrvl_usb +nf_conntrack +nf_conntrack_amanda +nf_conntrack_broadcast +nf_conntrack_ftp +nf_conntrack_h323 +nf_conntrack_ipv4 +nf_conntrack_ipv6 +nf_conntrack_irc +nf_conntrack_netbios_ns +nf_conntrack_netlink +nf_conntrack_pptp +nf_conntrack_proto_dccp +nf_conntrack_proto_gre +nf_conntrack_proto_sctp +nf_conntrack_proto_udplite +nf_conntrack_sane +nf_conntrack_sip +nf_conntrack_snmp +nf_conntrack_tftp +nfcsim +nfcwilink +nf_defrag_ipv4 +nf_defrag_ipv6 +nf_log_arp +nf_log_bridge +nf_log_common +nf_log_ipv4 +nf_log_ipv6 +nf_nat +nf_nat_amanda +nf_nat_ftp +nf_nat_h323 +nf_nat_ipv4 +nf_nat_ipv6 +nf_nat_irc +nf_nat_masquerade_ipv4 +nf_nat_masquerade_ipv6 +nf_nat_pptp +nf_nat_proto_dccp +nf_nat_proto_gre +nf_nat_proto_sctp +nf_nat_proto_udplite +nf_nat_redirect +nf_nat_sip +nf_nat_snmp_basic +nf_nat_tftp +nfnetlink +nfnetlink_acct +nfnetlink_cthelper +nfnetlink_cttimeout +nfnetlink_log +nfnetlink_queue +nf_reject_ipv4 +nf_reject_ipv6 +nfs +nfs_acl +nfsd +nfs_layout_flexfiles +nfs_layout_nfsv41_files +nfsv2 +nfsv3 +nfsv4 +nf_synproxy_core +nf_tables +nf_tables_arp +nf_tables_bridge +nf_tables_inet +nf_tables_ipv4 +nf_tables_ipv6 +nf_tables_netdev +nft_chain_nat_ipv4 +nft_chain_nat_ipv6 +nft_chain_route_ipv4 +nft_chain_route_ipv6 +nft_compat +nft_counter +nft_ct +nft_exthdr +nft_hash +nftl +nft_limit +nft_log +nft_masq +nft_masq_ipv4 +nft_masq_ipv6 +nft_meta +nft_meta_bridge +nft_nat +nft_queue +nft_rbtree +nft_redir +nft_redir_ipv4 +nft_redir_ipv6 +nft_reject +nft_reject_bridge +nft_reject_inet +nft_reject_ipv4 +nft_reject_ipv6 +n_gsm +nhc_dest +nhc_fragment +nhc_hop +nhc_ipv6 +nhc_mobility +nhc_routing +nhc_udp +n_hdlc +ni_at_a2150 +ni_at_ao +ni_atmio +ni_atmio16d +ni_labpc +ni_labpc_common +nilfs2 +ni_tio +ni_usb6501 +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-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 +nps_enet +n_r3964 +ns558 +ntc_thermistor +ntfs +n_tracerouter +n_tracesink +null_blk +nvram +nxp-nci +nxp-nci_i2c +nxt200x +nxt6000 +obdclass +obdecho +objlayoutdriver +ocfb +ocfs2 +ocfs2_dlm +ocfs2_dlmfs +ocfs2_nodemanager +ocfs2_stackglue +ocfs2_stack_o2cb +ocfs2_stack_user +of_mmc_spi +of_xilinx_wdt +old_belkin-sir +omap4-keypad +omfs +omninet +on20 +on26 +onenand +opencores-kbd +openvswitch +oprofile +opticon +option +osc +osd +osdblk +osst +oti6858 +ov2640 +ov5642 +ov6650 +ov7640 +ov772x +ov9640 +ov9740 +overlay +oxu210hp-hcd +ozwpan +p54common +p54spi +p54usb +p8022 +p8023 +palmas-pwrbutton +palmas-regulator +pandora_bl +panel +panel-ld9040 +panel-s6e8aa0 +panel-sharp-lq101r1sx01 +panel-simple +paride +parkbd +parport +parport_ax88796 +parport_pc +pata_of_platform +pata_platform +pc87360 +pc87427 +pcap_keys +pcap-regulator +pcap_ts +pcbc +pcd +pcf50633 +pcf50633-adc +pcf50633-backlight +pcf50633-charger +pcf50633-gpio +pcf50633-input +pcf50633-regulator +pcf8574_keypad +pcf8591 +pcl711 +pcl724 +pcl726 +pcl730 +pcl812 +pcl816 +pcl818 +pcm3724 +pcmad +pcmda12 +pcmmio +pcmuio +pcrypt +pcwd_usb +pd +pda_power +peak_usb +pegasus +penmount +percpu_test +pf +pfuze100-regulator +pg +phonet +phram +phy-am335x +phy-am335x-control +phy-bcm-kona-usb2 +phy-exynos-usb2 +phy-gpio-vbus-usb +phy-isp1301 +phy-pxa-28nm-hsic +phy-pxa-28nm-usb2 +physmap +physmap_of +phy-tahvo +phy-tusb1210 +pinctrl-single +pixcir_i2c_ts +pkcs7_message +pkcs7_test_key +pktcdvd +pktgen +pl2303 +pl330 +platform_lcd +plat_nand +plat-ram +plip +plusb +pm8921-core +pm8xxx-vibrator +pmbus +pmbus_core +pmic8xxx-keypad +pmic8xxx-pwrkey +pm-notifier-error-inject +pn533 +pn544 +pn544_i2c +pn_pep +poly1305_generic +port100 +powermate +powr1220 +ppa +ppdev +ppp_async +ppp_deflate +ppp_mppe +pppoatm +pppoe +pppox +ppp_synctty +pps-gpio +pps-ldisc +pps_parport +pptp +prism2_usb +ps2mult +ps8622 +psmouse +psnap +pt +ptlrpc +ptn3460 +pvrusb2 +pwc +pwm-atmel-hlcdc +pwm-bcm2835 +pwm-beeper +pwm_bl +pwm-fan +pwm-fsl-ftm +pwm-lp3943 +pwm-pca9685 +pwm-regulator +pwm-twl +pwm-twl-led +qcaspi +qcaux +qcom-spmi-iadc +qcom_spmi-regulator +qcom-spmi-temp-alarm +qcom-spmi-vadc +qcserial +qinfo_probe +qmi_wwan +qnx4 +qnx6 +qoriq-cpufreq +qsemi +qt1010 +qt1070 +qt2160 +quatech2 +quota_tree +quota_v1 +quota_v2 +r8152 +r8188eu +r820t +r8712u +r8723au +r8a66597-hcd +radio-bcm2048 +radio-i2c-si470x +radio-keene +radio-ma901 +radio-mr800 +radio-platform-si4713 +radio-raremono +radio-shark +radio-si476x +radio-tea5764 +radio-usb-si470x +radio-usb-si4713 +radio-wl1273 +raid0 +raid1 +raid10 +raid456 +raid6_pq +raid6test +raid_class +raw +rbd +rbtree_test +rc5t583-regulator +rc-adstech-dvb-t-pci +rc-alink-dtu-m +rc-anysee +rc-apac-viewcomp +rcar_can +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-behold +rc-behold-columbus +rc-budget-ci-old +rc-cinergy +rc-cinergy-1400 +rc-core +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-dvbsky +rc-em-terratec +rc-encore-enltv +rc-encore-enltv2 +rc-encore-enltv-fm53 +rc-evga-indtube +rc-eztv +rc-flydvb +rc-flyvideo +rc-fusionhdtv-mce +rc-gadmei-rm008z +rc-genius-tvgo-a11mce +rc-gotview7135 +rc-hauppauge +rc-imon-mce +rc-imon-pad +rc-iodata-bctv7e +rc-it913x-v1 +rc-it913x-v2 +rc-kaiomy +rc-kworld-315u +rc-kworld-pc150u +rc-kworld-plus-tv-analog +rc-leadtek-y04g0051 +rc-lirc +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-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-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-twinhan1027 +rc-twinhan-dtv-cab-ci +rc-videomate-m1f +rc-videomate-s350 +rc-videomate-tv-pvr +rc-winfast +rc-winfast-usbii-deluxe +rds +rds_tcp +realtek +redboot +redrat3 +regmap-spmi +regulator-haptic +reiserfs +retu-mfd +retu-pwrbutton +retu_wdt +rfcomm +rfd_ftl +rfkill-gpio +rfkill-regulator +rio500 +rj54n1cb0c +rk808 +rk808-regulator +rmd128 +rmd160 +rmd256 +rmd320 +rn5t618 +rn5t618-regulator +rn5t618_wdt +rndis_host +rndis_wlan +romfs +rose +rotary_encoder +rpcsec_gss_krb5 +rpi-ft5406 +rpisense-core +rpisense-fb +rpisense-js +rsa_generic +rsi_91x +rsi_sdio +rsi_usb +rt2500usb +rt2800lib +rt2800usb +rt2x00lib +rt2x00usb +rt5033 +rt5033_battery +rt5033-regulator +rt73usb +rt9455_charger +rtc-88pm80x +rtc-88pm860x +rtc-ab3100 +rtc-ab-b5ze-s3 +rtc-abx80x +rtc-as3722 +rtc-bq32k +rtc-bq4802 +rtc-cmos +rtc-da9052 +rtc-da9055 +rtc-da9063 +rtc-ds1286 +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-ds3234 +rtc-em3027 +rtc-fm3130 +rtc-hid-sensor-time +rtc-hym8563 +rtc-isl12022 +rtc-isl12057 +rtc-isl1208 +rtc-lp8788 +rtc-m41t80 +rtc-m41t93 +rtc-m41t94 +rtc-m48t35 +rtc-m48t59 +rtc-m48t86 +rtc-max6900 +rtc-max6902 +rtc-max77686 +rtc-max77802 +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-pcf8563 +rtc-pcf8583 +rtc-pl030 +rtc-pm8xxx +rtc-r9701 +rtc-rc5t583 +rtc-rk808 +rtc-rp5c01 +rtc-rs5c348 +rtc-rs5c372 +rtc-rv3029c2 +rtc-rx4581 +rtc-rx8025 +rtc-rx8581 +rtc-s35390a +rtc-s5m +rtc-snvs +rtc-stk17ta8 +rtc-tps6586x +rtc-tps65910 +rtc-tps80031 +rtc-v3020 +rtc-wm831x +rtc-wm8350 +rtc-x1205 +rti800 +rti802 +rtl2830 +rtl2832 +rtl2832_sdr +rtl8150 +rtl8187 +rtsx_usb +rtsx_usb_ms +rtsx_usb_sdmmc +rx51_battery +rxkad +s1d13xxxfb +s2250 +s2255drv +s2mpa01 +s2mps11 +s526 +s5h1409 +s5h1411 +s5h1420 +s5m8767 +s6e63m0 +s921 +saa7115 +saa7706h +safe_serial +salsa20_generic +samsung-keypad +samsung-sxgbe +sbs-battery +sc16is7xx +sca3000 +sch5627 +sch5636 +sch56xx-common +sch_atm +sch_cbq +sch_choke +sch_codel +sch_drr +sch_dsmark +sch_fq +sch_fq_codel +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_tbf +sch_teql +scsi_debug +scsi_dh +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_probe +sdhci_f_sdh30 +sdhci-of-arasan +sdio_uart +seed +sensorhub +seqiv +ser_gigaset +serial2002 +serio_raw +sermouse +serpent_generic +serport +ses +sha1-arm +sha1-arm-ce +sha1-arm-neon +sha256-arm +sha2-arm-ce +sha512-arm +shark2 +sht15 +sht21 +shtc1 +sh_veu +si2157 +si2165 +si2168 +si21xx +si4713 +si476x-core +si7005 +si7020 +sidewinder +sierra +sierra_net +sil164 +sir-dev +sisusbvga +sit +sja1000 +sja1000_isa +sja1000_platform +sky81452 +sky81452-backlight +sky81452-regulator +sl811-hcd +slcan +slip +slram +sm501fb +smb347-charger +smc911x +smc91x +sm_ftl +smm665 +smsc +smsc47b397 +smsc47m1 +smsc47m192 +smsc75xx +smsc911x +smscufx +smsdvb +smsmdtv +smssdio +smsusb +snd-aaci +snd-ac97-codec +snd-aloop +snd-bcd2000 +snd-bcm2835 +snd-dummy +snd-hrtimer +snd-hwdep +snd-mixer-oss +snd-mpu401 +snd-mpu401-uart +snd-mtpav +snd-mts64 +snd-portman2x4 +snd-rawmidi +snd-seq +snd-seq-device +snd-seq-dummy +snd-seq-midi +snd-seq-midi-event +snd-seq-virmidi +snd-serial-u16550 +snd-soc-ac97 +snd-soc-adau1701 +snd-soc-ak4104 +snd-soc-ak4554 +snd-soc-ak4642 +snd-soc-ak5386 +snd-soc-alc5623 +snd-soc-bcm2708-i2s +snd-soc-cs35l32 +snd-soc-cs4265 +snd-soc-cs4270 +snd-soc-cs4271 +snd-soc-cs4271-i2c +snd-soc-cs4271-spi +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-es8328 +snd-soc-fsl-asrc +snd-soc-fsl-esai +snd-soc-fsl-sai +snd-soc-fsl-spdif +snd-soc-hifiberry-amp +snd-soc-hifiberry-dac +snd-soc-hifiberry-dacplus +snd-soc-hifiberry-digi +snd-soc-iqaudio-dac +snd-soc-pcm1681 +snd-soc-pcm1792a-codec +snd-soc-pcm1794a +snd-soc-pcm5102a +snd-soc-pcm512x +snd-soc-pcm512x-i2c +snd-soc-pcm512x-spi +snd-soc-raspidac3 +snd-soc-rpi-dac +snd-soc-rpi-proto +snd-soc-rt5631 +snd-soc-si476x +snd-soc-sigmadsp +snd-soc-sigmadsp-i2c +snd-soc-simple-card +snd-soc-spdif-rx +snd-soc-spdif-tx +snd-soc-ssm2602 +snd-soc-ssm2602-i2c +snd-soc-ssm2602-spi +snd-soc-ssm4567 +snd-soc-sta32x +snd-soc-sta350 +snd-soc-tas2552 +snd-soc-tas5086 +snd-soc-tas5713 +snd-soc-tas571x +snd-soc-tfa9879 +snd-soc-tlv320aic23 +snd-soc-tlv320aic23-i2c +snd-soc-tlv320aic23-spi +snd-soc-tlv320aic31xx +snd-soc-tlv320aic3x +snd-soc-tpa6130a2 +snd-soc-ts3a227e +snd-soc-wm8510 +snd-soc-wm8523 +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-wm8804 +snd-soc-wm8804-i2c +snd-soc-wm8804-spi +snd-soc-wm8903 +snd-soc-wm8962 +snd-soc-wm8978 +snd-soc-xtfpga-i2s +snd-ua101 +snd-usb-6fire +snd-usb-audio +snd-usb-caiaq +snd-usb-hiface +snd-usb-line6 +snd-usbmidi-lib +snd-usb-pod +snd-usb-podhd +snd-usb-toneport +snd-usb-variax +snd-virmidi +soc_button_array +soc_camera +soc_camera_platform +soc_mediabus +softdog +softing +sony-btf-mpx +sp2 +sp805_wdt +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 +speedtch +spi-altera +spi-bcm2708 +spi-bcm2835 +spi-bitbang +spi-butterfly +spi-cadence +spi-dln2 +spi-dw +spi-dw-mmio +spi-gpio +spi_ks8995 +spi-lm70llp +spi-nor +spi-oc-tiny +spi-pl022 +spi-rockchip +spi-sc18is602 +spi-tle62x0 +spi-xcomm +spi-zynqmp-gqspi +spmi +squashfs +sr9700 +sr9800 +ssb +ssbi +ssd1307fb +ssfdc +ssp_accel_sensor +ssp_gyro_sensor +ssp_iio +sst25l +ssu100 +st +st1232 +st21nfca_hci +st21nfca_i2c +st_accel +st_accel_i2c +st_accel_spi +st-asc +stb0899 +stb6000 +stb6100 +st_drv +ste10Xp +st_gyro +st_gyro_i2c +st_gyro_spi +stinger +stir4200 +stk1160 +stk3310 +stk8312 +stk8ba50 +stkwebcam +stm32-usart +st_magn +st_magn_i2c +st_magn_spi +stmmac +stmmac-platform +stmpe-keypad +stmpe-ts +st-nci +st-nci_i2c +stowaway +stp +st_pressure +st_pressure_i2c +st_pressure_spi +streamzap +st_sensors +st_sensors_i2c +st_sensors_spi +stv0288 +stv0297 +stv0299 +stv0900 +stv090x +stv6110 +stv6110x +sunkbd +sunrpc +sur40 +sx8654 +sx9500 +symbolserial +synaptics_i2c +synaptics_i2c_rmi4 +synaptics_usb +syscopyarea +sysfillrect +sysimgblt +sysv +t5403 +target_core_file +target_core_iblock +target_core_mod +target_core_pscsi +target_core_user +tc3589x-keypad +tc74 +tca6416-keypad +tca8418_keypad +tcm_fc +tcm_loop +tcp_bic +tcp_cdg +tcp_dctcp +tcp_diag +tcp_highspeed +tcp_htcp +tcp_hybla +tcp_illinois +tcp_lp +tcp_probe +tcp_scalable +tcp_vegas +tcp_veno +tcp_westwood +tcp_yeah +tcrypt +tcs3414 +tcs3472 +tda10023 +tda10048 +tda1004x +tda10071 +tda10086 +tda18212 +tda18218 +tda18271 +tda18271c2dd +tda826x +tda827x +tda8290 +tda9887 +tda998x +tdo24m +tea +tea575x +tea5761 +tea5767 +team +team_mode_activebackup +team_mode_broadcast +team_mode_loadbalance +team_mode_random +team_mode_roundrobin +tef6862 +tekram-sir +test_bpf +test_firmware +test-hexdump +test-kprobes +test-kstrtox +test_module +test_power +test-string_helpers +test_udelay +test_user_copy +tgr192 +thmc50 +ti-adc081c +ti-adc128s052 +ti_am335x_adc +ti_am335x_tsc +ti_am335x_tscadc +ti_dac7512 +ti_hecc +tilcdc +timeriomem-rng +tipc +ti_usb_3410_5052 +tm6000 +tm6000-alsa +tm6000-dvb +tmdc +tmiofb +tmio_mmc +tmio_mmc_core +tmio_nand +tmp006 +tmp102 +tmp103 +tmp401 +tmp421 +toim3232-sir +torture +touchit213 +touchright +touchwin +tpm_atmel +tpm_i2c_atmel +tpm_i2c_infineon +tpm_i2c_nuvoton +tpm-rng +tpm_st33zp24 +tpm_st33zp24_i2c +tpm_st33zp24_spi +tps40422 +tps51632-regulator +tps6105x +tps6105x-regulator +tps62360-regulator +tps65010 +tps65023-regulator +tps6507x +tps6507x-regulator +tps6507x-ts +tps65090-charger +tps65090-regulator +tps65217 +tps65217_bl +tps65217-regulator +tps65218 +tps65218-pwrbutton +tps65218-regulator +tps6524x-regulator +tps6586x-regulator +tps65910-regulator +tps65912-regulator +tps80031-regulator +trancevibrator +trf7970a +ts2020 +ts_bm +tsc2005 +tsc2007 +tsc40 +ts_fsm +ts_kmp +tsl2550 +tsl2563 +tsl2583 +tsl2x7x_core +tsl4531 +ttpci-eeprom +ttusbir +tua9001 +tuner +tuner-simple +tuner-types +tuner-xc2028 +tunnel4 +tunnel6 +turbografx +tveeprom +tvp5150 +tw2804 +tw9903 +tw9906 +tw9910 +twidjoy +twl4030_charger +twl4030_keypad +twl4030-madc +twl4030_madc_battery +twl4030-madc-hwmon +twl4030-pwrbutton +twl4030-vibra +twl4030_wdt +twl6030-gpadc +twl6040-vibra +twofish_common +twofish_generic +u132-hcd +uas +ubi +ubifs +ucb1400_core +ucb1400_ts +ucd9000 +ucd9200 +uda1342 +udf +udl +udlfb +udp_diag +udp_tunnel +ueagle-atm +ufs +ufshcd +ufshcd-pltfrm +uhid +uio +uio_dmem_genirq +uio_pdrv_genirq +uio_pruss +ulpi +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 +unioxx5 +unix_diag +usb3503 +usb_8dev +usb8xxx +usbatm +usb_debug +usbdux +usbduxfast +usbduxsigma +usb_gigaset +usbip-core +usbip-host +usblcd +usbled +usblp +usbmon +usbserial +usb-serial-simple +usbsevseg +usbtest +usbtmc +usbtouchscreen +usbtv +usbvision +usb_wwan +usdhi6rol0 +userspace-consumer +ushc +uss720 +uvcvideo +uvesafb +uwb +v4l2-common +v4l2-dv-timings +v4l2-flash-led-class +v4l2-mem2mem +vcan +vcnl4000 +veth +vf610_adc +vgem +vgg2432a4 +vhci-hcd +via-velocity +videobuf2-core +videobuf2-dma-contig +videobuf2-dma-sg +videobuf2-memops +videobuf2-vmalloc +videobuf-core +videobuf-dvb +videobuf-vmalloc +videodev +vim2m +viperboard +viperboard_adc +virtual +visor +vitesse +vivid +vmac +vmk80xx +vport-geneve +vport-gre +vport-vxlan +vsock +vsxxxaa +vt1211 +vt6656_stage +vub300 +vxlan +w1_bq27000 +w1_ds2406 +w1_ds2408 +w1_ds2413 +w1_ds2423 +w1_ds2431 +w1_ds2433 +w1_ds2760 +w1_ds2780 +w1_ds2781 +w1_ds28e04 +w1-gpio +w1_smem +w1_therm +w5100 +w5300 +w83627ehf +w83627hf +w83781d +w83791d +w83792d +w83793 +w83795 +w83l785ts +w83l786ng +wacom +wacom_i2c +wacom_serial4 +wacom_w8001 +walkera0701 +warrior +wcn36xx +wdt87xx_i2c +whiteheat +wimax +wire +wishbone-serial +wl1251 +wl1251_sdio +wl1251_spi +wl1273-core +wl12xx +wl18xx +wlcore +wlcore_sdio +wlcore_spi +wm831x_backup +wm831x_bl +wm831x-dcdc +wm831x-hwmon +wm831x-isink +wm831x-ldo +wm831x-on +wm831x_power +wm831x-ts +wm831x_wdt +wm8350-hwmon +wm8350_power +wm8350-regulator +wm8350_wdt +wm8400-regulator +wm8775 +wm8994-core +wm8994-irq +wm8994-regmap +wm8994-regulator +wm97xx-ts +wp512 +wusb-cbaf +wusbcore +wusb-wa +x25 +x25_asy +xc4000 +xc5000 +xcbc +xfrm4_mode_beet +xfrm4_mode_transport +xfrm4_mode_tunnel +xfrm4_tunnel +xfrm6_mode_beet +xfrm6_mode_ro +xfrm6_mode_transport +xfrm6_mode_tunnel +xfrm6_tunnel +xfrm_algo +xfrm_ipcomp +xfrm_user +xfs +xilinx-tpg +xilinx_uartps +xilinx-video +xilinx-vtc +xillybus_core +xillybus_of +xor +xor-neon +xpad +xsens_mt +x_tables +xt_addrtype +xt_AUDIT +xt_bpf +xt_cgroup +xt_CHECKSUM +xt_CLASSIFY +xt_cluster +xt_comment +xt_connbytes +xt_connlabel +xt_connlimit +xt_connmark +xt_CONNSECMARK +xt_conntrack +xt_cpu +xt_CT +xt_dccp +xt_devgroup +xt_dscp +xt_DSCP +xt_ecn +xt_esp +xt_hashlimit +xt_helper +xt_hl +xt_HL +xt_HMARK +xt_IDLETIMER +xt_ipcomp +xt_iprange +xt_ipvs +xtkbd +xt_l2tp +xt_LED +xt_length +xt_limit +xt_LOG +xt_mac +xt_mark +xt_multiport +xt_nat +xt_NETMAP +xt_nfacct +xt_NFLOG +xt_NFQUEUE +xt_osf +xt_owner +xt_physdev +xt_pkttype +xt_policy +xt_quota +xt_rateest +xt_RATEEST +xt_realm +xt_recent +xt_REDIRECT +xts +xt_sctp +xt_SECMARK +xt_set +xt_socket +xt_state +xt_statistic +xt_string +xt_tcpmss +xt_TCPMSS +xt_TCPOPTSTRIP +xt_tcpudp +xt_TEE +xt_time +xt_TPROXY +xt_TRACE +xt_u32 +xusbatm +xz_dec_test +yam +yealink +yurex +zaurus +zd1201 +zd1211rw +zforce_ts +zhenhua +zl10039 +zl10353 +zl6100 +zlib +zr364xx +zram --- linux-raspi2-4.2.0.orig/debian.raspi2/abi/4.2.0-1021.28/fwinfo +++ linux-raspi2-4.2.0/debian.raspi2/abi/4.2.0-1021.28/fwinfo @@ -0,0 +1,318 @@ +firmware: 3826.arm +firmware: 6fire/dmx6fireap.ihx +firmware: 6fire/dmx6firecf.bin +firmware: 6fire/dmx6firel2.ihx +firmware: ar5523.bin +firmware: ath3k-1.fw +firmware: ath6k/AR6003/hw2.0/athwlan.bin.z77 +firmware: ath6k/AR6003/hw2.0/bdata.bin +firmware: ath6k/AR6003/hw2.0/bdata.SD31.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.bin +firmware: ath6k/AR6003/hw2.1.1/bdata.SD31.bin +firmware: ath6k/AR6003/hw2.1.1/data.patch.bin +firmware: ath6k/AR6003/hw2.1.1/otp.bin +firmware: ath6k/AR6004/hw1.0/bdata.bin +firmware: ath6k/AR6004/hw1.0/bdata.DB132.bin +firmware: ath6k/AR6004/hw1.0/fw.ram.bin +firmware: ath6k/AR6004/hw1.1/bdata.bin +firmware: ath6k/AR6004/hw1.1/bdata.DB132.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: atmel_at76c503-i3861.bin +firmware: atmel_at76c503-i3863.bin +firmware: atmel_at76c503-rfmd-acc.bin +firmware: atmel_at76c503-rfmd.bin +firmware: atmel_at76c505amx-rfmd.bin +firmware: atmel_at76c505a-rfmd2958.bin +firmware: atmel_at76c505-rfmd2958.bin +firmware: atmel_at76c505-rfmd.bin +firmware: atsc_denver.inp +firmware: b43legacy/ucode2.fw +firmware: b43legacy/ucode4.fw +firmware: b43/ucode11.fw +firmware: b43/ucode13.fw +firmware: b43/ucode14.fw +firmware: b43/ucode15.fw +firmware: b43/ucode16_mimo.fw +firmware: b43/ucode5.fw +firmware: b43/ucode9.fw +firmware: BCM2033-FW.bin +firmware: BCM2033-MD.hex +firmware: bfubase.frm +firmware: brcm/bcm43xx-0.fw +firmware: brcm/bcm43xx_hdr-0.fw +firmware: brcm/brcmfmac43143.bin +firmware: brcm/brcmfmac43143-sdio.bin +firmware: brcm/brcmfmac43143-sdio.txt +firmware: brcm/brcmfmac43236b.bin +firmware: brcm/brcmfmac43241b0-sdio.bin +firmware: brcm/brcmfmac43241b0-sdio.txt +firmware: brcm/brcmfmac43241b4-sdio.bin +firmware: brcm/brcmfmac43241b4-sdio.txt +firmware: brcm/brcmfmac43241b5-sdio.bin +firmware: brcm/brcmfmac43241b5-sdio.txt +firmware: brcm/brcmfmac43242a.bin +firmware: brcm/brcmfmac4329-sdio.bin +firmware: brcm/brcmfmac4329-sdio.txt +firmware: brcm/brcmfmac4330-sdio.bin +firmware: brcm/brcmfmac4330-sdio.txt +firmware: brcm/brcmfmac43340-sdio.bin +firmware: brcm/brcmfmac43340-sdio.txt +firmware: brcm/brcmfmac4334-sdio.bin +firmware: brcm/brcmfmac4334-sdio.txt +firmware: brcm/brcmfmac4335-sdio.bin +firmware: brcm/brcmfmac4335-sdio.txt +firmware: brcm/brcmfmac43362-sdio.bin +firmware: brcm/brcmfmac43362-sdio.txt +firmware: brcm/brcmfmac4339-sdio.bin +firmware: brcm/brcmfmac4339-sdio.txt +firmware: brcm/brcmfmac43430-sdio.bin +firmware: brcm/brcmfmac43430-sdio.txt +firmware: brcm/brcmfmac43455-sdio.bin +firmware: brcm/brcmfmac43455-sdio.txt +firmware: brcm/brcmfmac4354-sdio.bin +firmware: brcm/brcmfmac4354-sdio.txt +firmware: brcm/brcmfmac43569.bin +firmware: carl9170-1.fw +firmware: cmmb_ming_app.inp +firmware: cmmb_vega_12mhz.inp +firmware: cmmb_venice_12mhz.inp +firmware: cpia2/stv0672_vp4.bin +firmware: dvb-demod-m88ds3103.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-fe-af9013.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: dvbh_rio.inp +firmware: dvb_nova_12mhz_b0.inp +firmware: dvb_nova_12mhz.inp +firmware: dvb_rio.inp +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-lme2510c-lg.fw +firmware: dvb-usb-lme2510c-rs2000.fw +firmware: dvb-usb-lme2510c-s0194.fw +firmware: dvb-usb-lme2510c-s7395.fw +firmware: dvb-usb-lme2510-lg.fw +firmware: dvb-usb-lme2510-s0194.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: edgeport/boot2.fw +firmware: edgeport/boot.fw +firmware: edgeport/down2.fw +firmware: edgeport/down3.bin +firmware: edgeport/down.fw +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: ene-ub6250/ms_init.bin +firmware: ene-ub6250/msp_rdwr.bin +firmware: ene-ub6250/ms_rdwr.bin +firmware: ene-ub6250/sd_init1.bin +firmware: ene-ub6250/sd_init2.bin +firmware: ene-ub6250/sd_rdwr.bin +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: htc_7010.fw +firmware: htc_9271.fw +firmware: i1480-phy-0.0.bin +firmware: i1480-pre-phy-0.0.bin +firmware: i1480-usb-0.0.bin +firmware: i2400m-fw-usb-1.5.sbcf +firmware: i6050-fw-usb-1.5.sbcf +firmware: isdbt_nova_12mhz_b0.inp +firmware: isdbt_nova_12mhz.inp +firmware: isdbt_pele.inp +firmware: isdbt_rio.inp +firmware: isight.fw +firmware: isl3886usb +firmware: isl3887usb +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_pda/keyspan_pda.fw +firmware: keyspan_pda/xircom_pgs.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/usa28xa.fw +firmware: keyspan/usa28xb.fw +firmware: keyspan/usa28x.fw +firmware: keyspan/usa49w.fw +firmware: keyspan/usa49wlc.fw +firmware: lattice-ecp3.bit +firmware: lbtf_usb.bin +firmware: lgs8g75.fw +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: 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/usb8766_uapsta.bin +firmware: mrvl/usb8797_uapsta.bin +firmware: mrvl/usb8801_uapsta.bin +firmware: mrvl/usb8897_uapsta.bin +firmware: mt7601u.bin +firmware: mts_cdma.fw +firmware: mts_edge.fw +firmware: mts_gsm.fw +firmware: mts_mt9234mu.fw +firmware: mts_mt9234zba.fw +firmware: prism2_ru.fw +firmware: rsi_91x.fw +firmware: rt2870.bin +firmware: rt73.bin +firmware: rtlwifi/rtl8712u.bin +firmware: rtlwifi/rtl8723aufw_A.bin +firmware: rtlwifi/rtl8723aufw_B.bin +firmware: rtlwifi/rtl8723aufw_B_NoBT.bin +firmware: sd8385.bin +firmware: sd8385_helper.bin +firmware: sd8686.bin +firmware: sd8686_helper.bin +firmware: sd8688.bin +firmware: sd8688_helper.bin +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: tdmb_denver.inp +firmware: tdmb_nova_12mhz_b0.inp +firmware: tdmb_nova_12mhz.inp +firmware: ti_3410.fw +firmware: ti_5052.fw +firmware: ti-connectivity/wl1251-fw.bin +firmware: ti-connectivity/wl1251-nvs.bin +firmware: ti-connectivity/wl1271-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: ueagle-atm/930-fpga.bin +firmware: ueagle-atm/adi930.fw +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/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: usbduxfast_firmware.bin +firmware: usbdux_firmware.bin +firmware: usbduxsigma_firmware.bin +firmware: v4l-cx231xx-avcore-01.fw +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: whiteheat.fw +firmware: whiteheat_loader.fw +firmware: wlan/prima/WCNSS_qcom_wlan_nv.bin +firmware: xc3028L-v36.fw +firmware: xc3028-v27.fw +firmware: yam/1200.bin +firmware: yam/9600.bin +firmware: zd1201-ap.fw +firmware: zd1201.fw +firmware: zd1211/zd1211b_ub +firmware: zd1211/zd1211b_uphr +firmware: zd1211/zd1211b_ur +firmware: zd1211/zd1211_ub +firmware: zd1211/zd1211_uphr +firmware: zd1211/zd1211_ur --- linux-raspi2-4.2.0.orig/debian.raspi2/changelog +++ linux-raspi2-4.2.0/debian.raspi2/changelog @@ -0,0 +1,1572 @@ +linux-raspi2 (4.2.0-1022.29) wily; urgency=low + + [ Luis Henriques ] + + * Release Tracking Bug + - LP: #1537088 + * rebased on Ubuntu-4.2.0-27.32 + + [ Ubuntu: 4.2.0-27.32 ] + + * Release Tracking Bug + - LP: #1536867 + * SAUCE: (no-up) add compat_uts_machine= kernel command line override + - LP: #1520627 + * SAUCE: (no-up) ACPI / tables: Add acpi_force_32bit_fadt_addr option to + force 32 bit FADT addresses + - LP: #1529381 + * SAUCE: (no-up) udp: properly support MSG_PEEK with truncated buffers + - LP: #1527902 + * SAUCE: powerpc/eeh: Validate arch in eeh_add_device_early() + - LP: #1486180 + * SAUCE: (no-up) Revert "[SCSI] libiscsi: Reduce locking contention in + fast path" + - LP: #1517142 + * [Config] Add DRM ast driver to udeb installer image + - LP: #1514711 + * net/mlx5e: Re-eanble client vlan TX acceleration + - LP: #1533249 + * net/mlx5e: Fix LSO vlan insertion + - LP: #1533249 + * net/mlx5e: Fix inline header size calculation + - LP: #1533249 + * net: usb: cdc_ncm: Adding Dell DW5812 LTE Verizon Mobile Broadband Card + - LP: #1533118 + * net: usb: cdc_ncm: Adding Dell DW5813 LTE AT&T Mobile Broadband Card + - LP: #1533118 + * powerpc/eeh: Fix recursive fenced PHB on Broadcom shiner adapter + - LP: #1532942 + + -- Luis Henriques Fri, 22 Jan 2016 16:00:29 +0000 + +linux-raspi2 (4.2.0-1021.28) wily; urgency=low + + [ Luis Henriques ] + + * Release Tracking Bug + - LP: #1535985 + * rebased on Ubuntu-4.2.0-26.31 + + [ Ubuntu: 4.2.0-26.31 ] + + * Release Tracking Bug + - LP: #1535795 + * Merged back Ubuntu-4.2.0-25.30 + + -- Luis Henriques Wed, 20 Jan 2016 14:00:01 +0000 + +linux-raspi2 (4.2.0-1020.27) wily; urgency=low + + [ Luis Henriques ] + + * rebased on Ubuntu-4.2.0-25.30 + + [ Ubuntu: 4.2.0-25.30 ] + + * KEYS: Fix keyring ref leak in join_session_keyring() + - LP: #1534887 + - CVE-2016-0728 + + -- Luis Henriques Mon, 18 Jan 2016 14:05:07 +0000 + +linux-raspi2 (4.2.0-1018.25) wily; urgency=low + + [ Luis Henriques ] + + * Release Tracking Bug + - LP: #1529992 + * rebased on Ubuntu-4.2.0-23.28 + + [ Ubuntu: 4.2.0-23.28 ] + + * Release Tracking Bug + - LP: #1529361 + * ovl: fix permission checking for setattr + - LP: #1528904 + - CVE-2015-8660 + + -- Luis Henriques Mon, 04 Jan 2016 10:57:53 +0000 + +linux-raspi2 (4.2.0-1017.24) wily; urgency=low + + [ Luis Henriques ] + + * Release Tracking Bug + - LP: #1527537 + * rebased on Ubuntu-4.2.0-21.25 + + [ Ubuntu: 4.2.0-22.27 ] + + * Release Tracking Bug + - LP: #1527391 + * ptrace: being capable wrt a process requires mapped uids/gids + - LP: #1527374 + + [ Ubuntu: 4.2.0-22.26 ] + + * xen: Add RING_COPY_REQUEST() + - CVE-2015-8550 + * xen-netback: don't use last request to determine minimum Tx credit + - CVE-2015-8550 + * xen-netback: use RING_COPY_REQUEST() throughout + - CVE-2015-8550 + * xen-blkback: only read request operation from shared ring once + - CVE-2015-8550 + * xen-blkback: read from indirect descriptors only once + - CVE-2015-8550 + * xen-scsiback: safely copy requests + - CVE-2015-8550 + * xen/pciback: Save xen_pci_op commands before processing it + - CVE-2015-8550 + * xen/pciback: Return error on XEN_PCI_OP_enable_msi when device has MSI + or MSI-X enabled + - CVE-2015-8551, CVE-2015-8552, CVE-2015-8553 + * xen/pciback: Return error on XEN_PCI_OP_enable_msix when device has MSI + or MSI-X enabled + - CVE-2015-8551, CVE-2015-8552, CVE-2015-8553 + * xen/pciback: Do not install an IRQ handler for MSI interrupts. + - CVE-2015-8551, CVE-2015-8552, CVE-2015-8553 + * xen/pciback: For XEN_PCI_OP_disable_msi[|x] only disable if device has + MSI(X) enabled. + - CVE-2015-8551, CVE-2015-8552, CVE-2015-8553 + * xen/pciback: Don't allow MSI-X ops if PCI_COMMAND_MEMORY is not set. + - CVE-2015-8551, CVE-2015-8552, CVE-2015-8553 + + -- Luis Henriques Fri, 18 Dec 2015 10:37:58 +0000 + +linux-raspi2 (4.2.0-1016.23) wily; urgency=low + + [ Luis Henriques ] + + * Release Tracking Bug + - LP: #1522372 + * rebased on Ubuntu-4.2.0-21.25 + + [ Ubuntu: 4.2.0-21.25 ] + + * Release Tracking Bug + - LP: #1522108 + * staging/dgnc: fix info leak in ioctl + - LP: #1509565 + - CVE-2015-7885 + * [media] media/vivid-osd: fix info leak in ioctl + - LP: #1509564 + - CVE-2015-7884 + * KEYS: Fix race between key destruction and finding a keyring by name + - LP: #1508856 + - CVE-2015-7872 + * KEYS: Fix crash when attempt to garbage collect an uninstantiated + keyring + - LP: #1508856 + - CVE-2015-7872 + * KEYS: Don't permit request_key() to construct a new keyring + - LP: #1508856 + - CVE-2015-7872 + * isdn_ppp: Add checks for allocation failure in isdn_ppp_open() + - LP: #1508329 + - CVE-2015-7799 + * ppp, slip: Validate VJ compression slot parameters completely + - LP: #1508329 + - CVE-2015-7799 + + [ Ubuntu: 4.2.0-20.24 ] + + * Release Tracking Bug + - LP: #1521753 + * [Tests] gcc-multilib does not exist on ppc64el + - LP: #1515541 + * SAUCE: scsi_sysfs: protect against double execution of + __scsi_remove_device() + - LP: #1509029 + * SAUCE: (noup) cxlflash: Fix to escalate LINK_RESET also on port 1 + - LP: #1513583 + * SAUCE: (noup) cxlflash: Fix to avoid virtual LUN failover failure + - LP: #1513583 + * SAUCE: (noup) iwlwifi: Add new PCI IDs for the 8260 series + - LP: #1517375 + * [Config] CONFIG_DRM_AMDGPU_CIK=n + - LP: #1510405 + * net/mlx5e: Disable VLAN filter in promiscuous mode + - LP: #1514861 + * drivers: net: xgene: fix RGMII 10/100Mb mode + - LP: #1433290 + * HID: rmi: Disable scanning if the device is not a wake source + - LP: #1515503 + * HID: rmi: Set F01 interrupt enable register when not set + - LP: #1515503 + * net/mlx5e: Ethtool link speed setting fixes + - LP: #1517919 + * scsi_scan: don't dump trace when scsi_prep_async_scan() is called twice + - LP: #1517942 + * x86/ioapic: Disable interrupts when re-routing legacy IRQs + - LP: #1508593 + * xhci: Workaround to get Intel xHCI reset working more reliably + * megaraid_sas: Do not use PAGE_SIZE for max_sectors + - LP: #1475166 + * net: usb: cdc_ether: add Dell DW5580 as a mobile broadband adapter + - LP: #1513847 + * KVM: svm: unconditionally intercept #DB + - LP: #1520184 + - CVE-2015-8104 + + -- Luis Henriques Thu, 03 Dec 2015 13:57:56 +0000 + +linux-raspi2 (4.2.0-1015.22) wily; urgency=low + + [ Luis Henriques ] + + * Release Tracking Bug + - LP: #1515537 + * rebased on Ubuntu-4.2.0-19.23 + + [ Ubuntu: 4.2.0-19.23 ] + + * Release Tracking Bug + - LP: #1515157 + * [Config] re-enable OSS support and blacklist + - LP: #1434842 + * Revert "[Config] CONFIG_ARM64_ERRATUM_843419=n" + - LP: #1502946 + * [SRU] [Config] armhf: LEDS_TRIGGER_HEARTBEAT=y + - LP: #1510165 + * [Config] Add iscsi_ibft and iscsi_boot_sysfs to generic inclusion list + - LP: #1511006 + * [Config] CONFIG_AUFS_EXPORT=y + - LP: #1121699 + * Revert "KVM: x86: apply guest MTRR virtualization on host reserved + pages" + - LP: #1509886 + * Revert "KVM: SVM: use NPT page attributes" + - LP: #1509886 + * Revert "KVM: SVM: Sync g_pat with guest-written PAT value" + - LP: #1509886 + * Revert "cgroup: simplify threadgroup locking" + - LP: #1509886 + * Revert "sched, cgroup: replace signal_struct->group_rwsem with a global + percpu_rwsem" + - LP: #1509886 + * Revert "ARM64: unwind: Fix PC calculation" + - LP: #1514889 + * Revert "serial: 8250_dma: don't bother DMA with small transfers" + - LP: #1514889 + * Revert "md: allow a partially recovered device to be hot-added to an + array." + - LP: #1514889 + * arm64: Change memcpy in kernel to use the copy template file + - LP: #1508471 + * arm64: copy_to-from-in_user optimization using copy template + - LP: #1508471 + * Input: elan_i2c - enable ELAN0600 acpi panels + - LP: #1439111 + * e1000e: Fix tight loop implementation of systime read algorithm + * arm: KVM: Fix incorrect device to IPA mapping + - LP: #1509886 + * KVM: vmx: fix VPID is 0000H in non-root operation + - LP: #1509886 + * kvm: don't try to register to KVM_FAST_MMIO_BUS for non mmio eventfd + - LP: #1509886 + * kvm: fix zero length mmio searching + - LP: #1509886 + * kvm: factor out core eventfd assign/deassign logic + - LP: #1509886 + * kvm: fix double free for fast mmio eventfd + - LP: #1509886 + * arm: KVM: Disable virtual timer even if the guest is not using it + - LP: #1509886 + * kvm: svm: reset mmu on VCPU reset + - LP: #1509886 + * KVM: x86: trap AMD MSRs for the TSeg base and mask + - LP: #1509886 + * KVM: PPC: Book3S: Take the kvm->srcu lock in + kvmppc_h_logical_ci_load/store() + - LP: #1509886 + * KVM: PPC: Book3S HV: Pass the correct trap argument to + kvmhv_commence_exit + - LP: #1509886 + * time: Fix timekeeping_freqadjust()'s incorrect use of abs() instead of + abs64() + - LP: #1509886 + * target/iscsi: Fix np_ip bracket issue by removing np_ip + - LP: #1509886 + * scsi: fix scsi_error_handler vs. scsi_host_dev_release race + - LP: #1509886 + * target: Attach EXTENDED_COPY local I/O descriptors to xcopy_pt_sess + - LP: #1509886 + * target: Fix PR registration + APTPL RCU conversion regression + - LP: #1509886 + * iser-target: remove command with state ISTATE_REMOVE + - LP: #1509886 + * iser-target: Put the reference on commands waiting for unsol data + - LP: #1509886 + * toshiba_acpi: Fix hotkeys registration on some toshiba models + - LP: #1509886 + * perf/x86/intel: Fix constraint access + - LP: #1509886 + * locking/qspinlock/x86: Fix performance regression under unaccelerated + VMs + - LP: #1509886 + * locking/qspinlock/x86: Only emit the test-and-set fallback when + building guest support + - LP: #1509886 + * perf tools: Fix copying of /proc/kcore + - LP: #1509886 + * ARM: 8401/1: perf: Set affinity for PPI based PMUs + - LP: #1509886 + * perf hists: Update the column width for the "srcline" sort key + - LP: #1509886 + * perf stat: Get correct cpu id for print_aggr + - LP: #1509886 + * perf tools: Add missing forward declaration of struct map to + probe-event.h + - LP: #1509886 + * perf tools: Add empty Build files for architectures lacking them + - LP: #1509886 + * perf tools: Fix parse_events_add_pmu caller + - LP: #1509886 + * perf header: Fixup reading of HEADER_NRCPUS feature + - LP: #1509886 + * perf probe: Use existing routine to look for a kernel module by + dso->short_name + - LP: #1509886 + * ARCv2: [axs103_smp] Reduce clk for SMP FPGA configs + - LP: #1509886 + * watchdog: sunxi: fix activation of system reset + - LP: #1509886 + * watchdog: imgpdc: Unregister restart handler on remove + - LP: #1509886 + * sched: access local runqueue directly in single_task_running + - LP: #1509886 + * hwmon: (nct6775) Swap STEP_UP_TIME and STEP_DOWN_TIME registers for + most chips + - LP: #1509886 + * ARM: fix Thumb2 signal handling when ARMv6 is enabled + - LP: #1509886 + * ARM: 8429/1: disable GCC SRA optimization + - LP: #1509886 + * windfarm: decrement client count when unregistering + - LP: #1509886 + * ARM: 8425/1: kgdb: Don't try to stop the machine when setting + breakpoints + - LP: #1509886 + * ARM: dts: omap5-uevm.dts: fix i2c5 pinctrl offsets + - LP: #1509886 + * ARM: dts: omap3-beagle: make i2c3, ddc and tfp410 gpio work again + - LP: #1509886 + * ARM: pxa: ssp: Fix build error by removing originally incorrect DT + binding + - LP: #1509886 + * ARM: EXYNOS: reset Little cores when cpu is up + - LP: #1509886 + * ARM: dts: sunxi: Raise minimum CPU voltage for sun7i-a20 to meet SoC + specifications + - LP: #1509886 + * ARM: dts: Fix wrong clock binding for sysmmu_fimd1_1 on exynos5420 + - LP: #1509886 + * ARM: dts: fix usb pin control for imx-rex dts + - LP: #1509886 + * dax: fix O_DIRECT I/O to the last block of a blockdev + - LP: #1509886 + * blockdev: don't set S_DAX for misaligned partitions + - LP: #1509886 + * block: blkg_destroy_all() should clear q->root_blkg and ->root_rl.blkg + - LP: #1509886 + * dmaengine: at_xdmac: change block increment addressing mode + - LP: #1509886 + * dmaengine: at_xdmac: clean used descriptor + - LP: #1509886 + * dmaengine: dw: properly read DWC_PARAMS register + - LP: #1509886 + * dmaengine: at_xdmac: fix bug in prep_dma_cyclic + - LP: #1509886 + * dmaengine: pxa_dma: fix initial list move + - LP: #1509886 + * pmem: add proper fencing to pmem_rw_page() + - LP: #1509886 + * x86/apic: Serialize LVTT and TSC_DEADLINE writes + - LP: #1509886 + * x86/alternatives: Make optimize_nops() interrupt safe and synced + - LP: #1509886 + * x86/platform: Fix Geode LX timekeeping in the generic x86 build + - LP: #1509886 + * x86/ioapic: Force affinity setting in setup_ioapic_dest() + - LP: #1509886 + * x86/pci/intel_mid_pci: Work around for IRQ0 assignment + - LP: #1509886 + * x86/paravirt: Replace the paravirt nop with a bona fide empty function + - LP: #1509886 + * x86/nmi/64: Fix a paravirt stack-clobbering bug in the NMI code + - LP: #1509886 + * Use WARN_ON_ONCE for missing X86_FEATURE_NRIPS + - LP: #1509886 + * x86/efi: Fix boot crash by mapping EFI memmap entries bottom-up at + runtime, instead of top-down + - LP: #1509886 + * x86/kexec: Fix kexec crash in syscall kexec_file_load() + - LP: #1509886 + * x86/process: Add proper bound checks in 64bit get_wchan() + - LP: #1509886 + * x86/mm: Set NX on gap between __ex_table and rodata + - LP: #1509886 + * x86/xen: Support kexec/kdump in HVM guests by doing a soft reset + - LP: #1509886 + * leds:lp55xx: Correct Kconfig dependency for f/w user helper + - LP: #1509886 + * leds/led-class: Add missing put_device() + - LP: #1509886 + * sched/core: Fix TASK_DEAD race in finish_task_switch() + - LP: #1509886 + * s390/compat: correct uc_sigmask of the compat signal frame + - LP: #1509886 + * s390/boot/decompression: disable floating point in decompressor + - LP: #1509886 + * memcg: make mem_cgroup_read_stat() unsigned + - LP: #1509886 + * spi: Fix documentation of spi_alloc_master() + - LP: #1509886 + * spi: xtensa-xtfpga: fix register endianness + - LP: #1509886 + * spi: bcm2835: BUG: fix wrong use of PAGE_MASK + - LP: #1509886 + * spi: spi-pxa2xx: Check status register to determine if SSSR_TINT is + disabled + - LP: #1509886 + * spi: spidev: fix possible NULL dereference + - LP: #1509886 + * mm: migrate: hugetlb: putback destination hugepage to active list + - LP: #1509886 + * lib/iommu-common.c: do not try to deref a null iommu->lazy_flush() + pointer when n < pool->hint + - LP: #1509886 + * ocfs2/dlm: fix deadlock when dispatch assert master + - LP: #1509886 + * mm: hugetlbfs: skip shared VMAs when unmapping private pages to satisfy + a fault + - LP: #1509886 + * memcg: fix dirty page migration + - LP: #1509886 + * ALSA: hda/tegra - async probe for avoiding module loading deadlock + - LP: #1509886 + * ALSA: hda - Disable power_save_node for Thinkpads + - LP: #1509886 + * ALSA: synth: Fix conflicting OSS device registration on AWE32 + - LP: #1509886 + * ALSA: hda: Add dock support for ThinkPad T550 + - LP: #1509886 + * ALSA: hda - Apply SPDIF pin ctl to MacBookPro 12,1 + - LP: #1509886 + * ALSA: hda - Disable power_save_node for IDT 92HD73xx chips + - LP: #1509886 + * ASoC: pxa: pxa2xx-ac97: fix dma requestor lines + - LP: #1509886 + * ASoC: fix broken pxa SoC support + - LP: #1509886 + * ASoC: dwc: correct irq clear method + - LP: #1509886 + * ASoC: db1200: Fix DAI link format for db1300 and db1550 + - LP: #1509886 + * ASoC: sgtl5000: fix wrong register MIC_BIAS_VOLTAGE setup on probe + - LP: #1509886 + * ASoC: tas2552: fix dBscale-min declaration + - LP: #1509886 + * btrfs: skip waiting on ordered range for special files + - LP: #1509886 + * Btrfs: fix read corruption of compressed and shared extents + - LP: #1509886 + * Btrfs: update fix for read corruption of compressed and shared extents + - LP: #1509886 + * tools/lguest: Fix redefinition of struct virtio_pci_cfg_cap + - LP: #1509886 + * PCI: Fix devfn for VPD access through function 0 + - LP: #1509886 + * PCI: Use function 0 VPD for identical functions, regular VPD for others + - LP: #1509886 + * PCI: Clear IORESOURCE_UNSET when clipping a bridge window + - LP: #1509886 + * dm thin: disable discard support for thin devices if pool's is disabled + - LP: #1509886 + * dm crypt: constrain crypt device's max_segment_size to PAGE_SIZE + - LP: #1509886 + * ath10k: fix dma_mapping_error() handling + - LP: #1509886 + * svcrdma: Fix send_reply() scatter/gather set-up + - LP: #1509886 + * staging: ion: fix corruption of ion_import_dma_buf + - LP: #1509886 + * USB: option: add ZTE PIDs + - LP: #1509886 + * md/raid0: update queue parameter in a safer location. + - LP: #1509886 + * md/raid0: apply base queue limits *before* disk_stack_limits + - LP: #1509886 + * dm raid: fix round up of default region size + - LP: #1509886 + * netfilter: bridge: fix IPv6 packets not being bridged with + CONFIG_IPV6=n + - LP: #1509886 + * netfilter: nfnetlink: work around wrong endianess in res_id field + - LP: #1509886 + * netfilter: nf_tables: Use 32 bit addressing register from + nft_type_to_reg() + - LP: #1509886 + * netfilter: ipset: Out of bound access in hash:net* types fixed + - LP: #1509886 + * netfilter: ipset: Fixing unnamed union init + - LP: #1509886 + * netfilter: nf_log: wait for rcu grace after logger unregistration + - LP: #1509886 + * netfilter: nft_compat: skip family comparison in case of NFPROTO_UNSPEC + - LP: #1509886 + * netfilter: nf_log: don't zap all loggers on unregister + - LP: #1509886 + * regulator: core: Correct return value check in regulator_resolve_supply + - LP: #1509886 + * regulator: axp20x: Fix enable bit indexes for DCDC4 and DCDC5 + - LP: #1509886 + * regulator: core: Handle probe deferral from DT when resolving supplies + - LP: #1509886 + * Bluetooth: Delay check for conn->smp in smp_conn_security() + - LP: #1509886 + * nfs: fix v4.2 SEEK on files over 2 gigs + - LP: #1509886 + * NFS: Do cleanup before resetting pageio read/write to mds + - LP: #1509886 + * NFSv4: Recovery of recalled read delegations is broken + - LP: #1509886 + * nfs: fix pg_test page count calculation + - LP: #1509886 + * NFS: Fix a write performance regression + - LP: #1509886 + * Fix sec=krb5 on smb3 mounts + - LP: #1509886 + * disabling oplocks/leases via module parm enable_oplocks broken for SMB3 + - LP: #1509886 + * Do not fall back to SMBWriteX in set_file_size error cases + - LP: #1509886 + * drm/qxl: only report first monitor as connected if we have no state + - LP: #1509886 + * drm/qxl: recreate the primary surface when the bo is not primary + - LP: #1509886 + * drm/amdgpu: fix overflow on 32bit systems + - LP: #1509886 + * drm/amdgpu: Disable UVD PG + - LP: #1509886 + * drm/amdgpu: fix the UVD suspend sequence order + - LP: #1509886 + * drm/amdgpu: make UVD handle checking more strict + - LP: #1509886 + * drm/amdgpu: Fix max_vblank_count value for current display engines + - LP: #1509886 + * drm/amdgpu: Restore LCD backlight level on resume + - LP: #1509886 + * drm/i915/bios: handle MIPI Sequence Block v3+ gracefully + - LP: #1509886 + * drm: Reject DRI1 hw lock ioctl functions for kms drivers + - LP: #1509886 + * drm/radeon: Restore LCD backlight level on resume (>= R5xx) + - LP: #1509886 + * drm/dp/mst: fixup handling hotplug on port removal. + - LP: #1509886 + * drm/dp/mst: drop cancel work sync in the mstb destroy path (v2) + - LP: #1509886 + * xhci: give command abortion one more chance before killing xhci + - LP: #1509886 + * xhci: Move xhci_pme_quirk() behind #ifdef CONFIG_PM + - LP: #1509886 + * usb: xhci: lock mutex on xhci_stop + - LP: #1509886 + * usb: xhci: Clear XHCI_STATE_DYING on start + - LP: #1509886 + * usb: xhci: stop everything on the first call to xhci_stop + - LP: #1509886 + * usb: xhci: exit early in xhci_setup_device() if we're halted or dying + - LP: #1509886 + * xhci: change xhci 1.0 only restrictions to support xhci 1.1 + - LP: #1509886 + * xhci: init command timeout timer earlier to avoid deleting it + uninitialized + - LP: #1509886 + * usb: xhci: Add support for URB_ZERO_PACKET to bulk/sg transfers + - LP: #1509886 + * batman-adv: Make DAT capability changes atomic + - LP: #1509886 + * thermal: cpu_cooling: don't call kcalloc() under rcu_read_lock + - LP: #1509886 + * thermal: cpu_cooling: free power table on error or when unregistering + - LP: #1509886 + * hv: util: checking the wrong variable + - LP: #1509886 + * mmc: dw_mmc: handle data blocks > than 4kB if IDMAC is used + - LP: #1509886 + * usb: chipidea: imx: fix a typo for imx6sx + - LP: #1509886 + * cifs: use server timestamp for ntlmv2 authentication + - LP: #1509886 + * irqchip/atmel-aic5: Use per chip mask caches in mask/unmask() + - LP: #1509886 + * irqchip/gic-v3-its: Add missing cache flushes + - LP: #1509886 + * docs: update HOWTO for 3.x -> 4.x versioning + - LP: #1509886 + * extcon: Fix signedness bugs about break error handling + - LP: #1509886 + * extcon: Fix attached value returned by is_extcon_changed + - LP: #1509886 + * mtd: pxa3xx_nand: add a default chunk size + - LP: #1509886 + * mtd: nand: sunxi: fix sunxi_nand_chips_cleanup() + - LP: #1509886 + * mtd: nand: sunxi: fix OOB handling in ->write_xxx() functions + - LP: #1509886 + * hpsa: fix an sprintf() overflow in the reset handler + - LP: #1509886 + * PM / AVS: rockchip-io: depend on CONFIG_POWER_AVS + - LP: #1509886 + * device property: fix potential NULL pointer dereference + - LP: #1509886 + * ath10k: fix per-vif queue locking + - LP: #1509886 + * ath10k: reject 11b tx fragmentation configuration + - LP: #1509886 + * ath10k: fix peer limit enforcement + - LP: #1509886 + * ath10k: wake up offchannel queue properly + - LP: #1509886 + * ath10k: wake up queue upon vif creation + - LP: #1509886 + * pcmcia: sa11x0: fix missing clk_put() in sa11x0 socket drivers + - LP: #1509886 + * ipr: Enable SIS pipe commands for SIS-32 devices. + - LP: #1509886 + * regmap: debugfs: Ensure we don't underflow when printing access masks + - LP: #1509886 + * regmap: debugfs: Don't bother actually printing when calculating max + length + - LP: #1509886 + * security: fix typo in security_task_prctl + - LP: #1509886 + * usb: musb: dsps: fix polling in device-only mode + - LP: #1509886 + * usb: chipidea: udc: using the correct stall implementation + - LP: #1509886 + * usb: Use the USB_SS_MULT() macro to get the burst multiplier. + - LP: #1509886 + * usb: phy: phy-generic: Fix reset behaviour on legacy boot + - LP: #1509886 + * usb: musb: cppi41: allow it to work again + - LP: #1509886 + * USB: chaoskey read offset bug + - LP: #1509886 + * usb: Add device quirk for Logitech PTZ cameras + - LP: #1509886 + * USB: Add reset-resume quirk for two Plantronics usb headphones. + - LP: #1509886 + * crypto: marvell - properly handle CRYPTO_TFM_REQ_MAY_BACKLOG-flagged + requests + - LP: #1509886 + * cpu/cacheinfo: Fix teardown path + - LP: #1509886 + * cpufreq: dt: Tolerance applies on both sides of target voltage + - LP: #1509886 + * MIPS: Fix console output for Fulong2e system + - LP: #1509886 + * MIPS: bootmem: Fix mapstart calculation for contiguous maps + - LP: #1509886 + * MIPS: BPF: Avoid unreachable code on little endian + - LP: #1509886 + * MIPS: BPF: Fix build on pre-R2 little endian CPUs + - LP: #1509886 + * MIPS: dma-default: Fix 32-bit fall back to GFP_DMA + - LP: #1509886 + * MIPS: CPS: Stop dangling delay slot from has_mt. + - LP: #1509886 + * MIPS: CPS: Don't include MT code in non-MT kernels. + - LP: #1509886 + * MIPS: CPS: #ifdef on CONFIG_MIPS_MT_SMP rather than CONFIG_MIPS_MT + - LP: #1509886 + * batman-adv: Make NC capability changes atomic + - LP: #1509886 + * batman-adv: Make TT capability changes atomic + - LP: #1509886 + * batman-adv: Make MCAST capability changes atomic + - LP: #1509886 + * batman-adv: Fix potential synchronization issues in mcast tvlv handler + - LP: #1509886 + * batman-adv: Fix potentially broken skb network header access + - LP: #1509886 + * tools lib traceevent: Fix string handling in heterogeneous arch + environments + - LP: #1509886 + * powerpc/MSI: Fix race condition in tearing down MSI interrupts + - LP: #1509886 + * rsi: Fix possible leak when loading firmware + - LP: #1509886 + * UBIFS: Kill unneeded locking in ubifs_init_security + - LP: #1509886 + * UBI: Validate data_size + - LP: #1509886 + * UBI: return ENOSPC if no enough space available + - LP: #1509886 + * net: via/Kconfig: GENERIC_PCI_IOMAP required if PCI not selected + - LP: #1509886 + * iscsi-target: Avoid OFMarker + IFMarker negotiation + - LP: #1509886 + * mmc: core: Don't return an error for CD/WP GPIOs when GPIOLIB is unset + - LP: #1509886 + * mmc: core: fix dead loop of mmc_retune + - LP: #1509886 + * arm64/efi: Fix boot crash by not padding between EFI_MEMORY_RUNTIME + regions + - LP: #1509886 + * arm64: ftrace: fix function_graph tracer panic + - LP: #1509886 + * arm64: readahead: fault retry breaks mmap file read random detection + - LP: #1509886 + * m68k: Define asmlinkage_protect + - LP: #1509886 + * xen/blkback: free requests on disconnection + - LP: #1509886 + * net/xen-netfront: only napi_synchronize() if running + - LP: #1509886 + * igb: do not re-init SR-IOV during probe + - LP: #1509886 + * genirq: Fix race in register_irq_proc() + - LP: #1509886 + * clocksource: Fix abs() usage w/ 64bit values + - LP: #1509886 + * md/bitmap: don't pass -1 to bitmap_storage_alloc. + - LP: #1509886 + * nfs/filelayout: Fix NULL reference caused by double freeing of fh_array + - LP: #1509886 + * mmc: sdhci-pxav3: remove broken clock base quirk for Armada 38x sdhci + driver + - LP: #1509886 + * mmc: sdhci-pxav3: disable clock inversion for HS MMC cards + - LP: #1509886 + * mmc: sdhci-pxav3: fix error handling of armada_38x_quirks + - LP: #1509886 + * cpufreq: acpi_cpufreq: prevent crash on reading freqdomain_cpus + - LP: #1509886 + * clk: ti: fix dual-registration of uart4_ick + - LP: #1509886 + * clk: ti: clk-7xx: Remove hardwired ABE clock configuration + - LP: #1509886 + * clk: samsung: fix cpu clock's flags checking + - LP: #1509886 + * namei: results of d_is_negative() should be checked after dentry + revalidation + - LP: #1509886 + * dm: fix AB-BA deadlock in __dm_destroy() + - LP: #1509886 + * dm cache: fix NULL pointer when switching from cleaner policy + - LP: #1509886 + * staging: speakup: fix speakup-r regression + - LP: #1509886 + * tty: fix stall caused by missing memory barrier in drivers/tty/n_tty.c + - LP: #1509886 + * drivers/tty: require read access for controlling terminal + - LP: #1509886 + * serial: 8250: add uart_config entry for PORT_RT2880 + - LP: #1509886 + * serial: atmel: fix error path of probe function + - LP: #1509886 + * mm/slab: fix unexpected index mapping result of + kmalloc_size(INDEX_NODE+1) + - LP: #1509886 + * blk-mq: avoid setting hctx->tags->cpumask before allocation + - LP: #1509886 + * sched/preempt: Fix cond_resched_lock() and cond_resched_softirq() + - LP: #1509886 + * 3w-9xxx: don't unmap bounce buffered commands + - LP: #1509886 + * sched/preempt, xen: Use need_resched() instead of should_resched() + - LP: #1509886 + * sched/preempt, powerpc, kvm: Use need_resched() instead of + should_resched() + - LP: #1509886 + * Linux 4.2.4 + - LP: #1509886 + * namei: permit linking with CAP_FOWNER in userns + - LP: #1498162 + * iwlwifi: pci: add a few more PCI subvendor IDs for the 7265 series + - LP: #1510616 + * drm/nouveau/gem: return only valid domain when there's only one + - LP: #1510301 + * net/ibm/emac: bump version numbers for correct work with ethtool + - LP: #1511513 + * l2tp: protect tunnel->del_work by ref_count + - LP: #1511513 + * af_unix: Convert the unix_sk macro to an inline function for type + safety + - LP: #1511513 + * af_unix: return data from multiple SKBs on recv() with MSG_PEEK flag + - LP: #1511513 + * net/unix: fix logic about sk_peek_offset + - LP: #1511513 + * skbuff: Fix skb checksum flag on skb pull + - LP: #1511513 + * skbuff: Fix skb checksum partial check. + - LP: #1511513 + * net: dsa: fix preparation of a port STP update + - LP: #1511513 + * inet: fix races in reqsk_queue_hash_req() + - LP: #1511513 + * net: add pfmemalloc check in sk_add_backlog() + - LP: #1511513 + * ppp: don't override sk->sk_state in pppoe_flush_dev() + - LP: #1511513 + * inet: fix race in reqsk_queue_unlink() + - LP: #1511513 + * bpf: fix panic in SO_GET_FILTER with native ebpf programs + - LP: #1511513 + * ovs: do not allocate memory from offline numa node + - LP: #1511513 + * act_mirred: clear sender cpu before sending to tx + - LP: #1511513 + * bpf: clear sender_cpu before xmit + - LP: #1511513 + * ipv6: Don't call with rt6_uncached_list_flush_dev + - LP: #1511513 + * ethtool: Use kcalloc instead of kmalloc for ethtool_get_strings + - LP: #1511513 + * tipc: move fragment importance field to new header position + - LP: #1511513 + * netlink: Trim skb to alloc size to avoid MSG_TRUNC + - LP: #1511513 + * drm: Fix locking for sysfs dpms file + - LP: #1511513 + * crypto: sparc - initialize blkcipher.ivsize + - LP: #1511513 + * crypto: camellia_aesni_avx - Fix CPU feature checks + - LP: #1511513 + * crypto: ahash - ensure statesize is non-zero + - LP: #1511513 + * memcg: convert threshold to bytes + - LP: #1511513 + * btrfs: check unsupported filters in balance arguments + - LP: #1511513 + * btrfs: fix use after free iterating extrefs + - LP: #1511513 + * arm64: errata: use KBUILD_CFLAGS_MODULE for erratum #843419 + - LP: #1511513 + * ARM: ux500: simplify secondary CPU boot + - LP: #1511513 + * nfsd/blocklayout: accept any minlength + - LP: #1511513 + * mfd: max77843: Fix max77843_chg_init() return on error + - LP: #1511513 + * i2c: rcar: enable RuntimePM before registering to the core + - LP: #1511513 + * i2c: s3c2410: enable RuntimePM before registering to the core + - LP: #1511513 + * i2c: designware: Do not use parameters from ACPI on Dell Inspiron 7348 + - LP: #1511513 + * i2c: designware-platdrv: enable RuntimePM before registering to the + core + - LP: #1511513 + * workqueue: make sure delayed work run in local cpu + - LP: #1511513 + * KVM: x86: clean up kvm_arch_vcpu_runnable + - LP: #1511513 + * KVM: x86: fix SMI to halted VCPU + - LP: #1511513 + * KVM: x86: fix RSM into 64-bit protected mode + - LP: #1511513 + * drm/qxl: fix framebuffer dirty rectangle tracking. + - LP: #1511513 + * drm/nouveau/fbcon: take runpm reference when userspace has an open fd + - LP: #1511513 + * drm/dp/mst: make mst i2c transfer code more robust. + - LP: #1511513 + * drm/radeon: attach tile property to mst connector + - LP: #1511513 + * drm/radeon: add pm sysfs files late + - LP: #1511513 + * drm/amdgpu: add pm sysfs files late + - LP: #1511513 + * drm/amdgpu: fix num_crtc on CZ + - LP: #1511513 + * drm/amdgpu: check before checking pci bridge registers + - LP: #1511513 + * drm/amdgpu: Keep the pflip interrupts always enabled v7 + - LP: #1511513 + * dm thin: fix missing pool reference count decrement in pool_ctr error + path + - LP: #1511513 + * rbd: fix double free on rbd_dev->header_name + - LP: #1511513 + * timekeeping: Increment clock_was_set_seq in timekeeping_init() + - LP: #1511513 + * pinctrl: imx25: ensure that a pin with id i is at position i in the + info array + - LP: #1511513 + * arm64: Fix THP protection change logic + - LP: #1511513 + * svcrdma: handle rdma read with a non-zero initial page offset + - LP: #1511513 + * Linux 4.2.5 + - LP: #1511513 + * x86/vm86: Set thread.vm86 to NULL on fork/clone + - LP: #1499089 + * crypto: 842 - Add CRC and validation support + - LP: #1497878 + * mac80211: Fix hwflags debugfs file format + - LP: #1514889 + * ath9k: declare required extra tx headroom + - LP: #1514889 + * mmc: core: Fix init_card in 52Mhz + - LP: #1514889 + * iwlwifi: dvm: fix D3 firmware PN programming + - LP: #1514889 + * iwlwifi: fix firmware filename for 3160 + - LP: #1514889 + * rtlwifi: rtl8821ae: Fix system lockups on boot + - LP: #1514889 + * iwlwifi: mvm: clear csa countdown when AP is stopped + - LP: #1514889 + * iwlwifi: mvm: fix D3 CCMP TX PN assignment + - LP: #1514889 + * iwlwifi: mvm: fix D3 firmware PN programming + - LP: #1514889 + * iwlwifi: mvm: init card correctly on ctkill exit check + - LP: #1514889 + * iwlwifi: mvm: flush fw_dump_wk when mvm fails to start + - LP: #1514889 + * iommu/vt-d: fix range computation when making room for large pages + - LP: #1514889 + * iommu/amd: Fix BUG when faulting a PROT_NONE VMA + - LP: #1514889 + * iommu/amd: Don't clear DTE flags when modifying it + - LP: #1514889 + * powerpc/rtas: Validate rtas.entry before calling enter_rtas() + - LP: #1514889 + * drm: fix mutex leak in drm_dp_get_mst_branch_device + - LP: #1514889 + * drm: Correct arguments to list_tail_add in create blob ioctl + - LP: #1514889 + * drm: crtc: integer overflow in drm_property_create_blob() + - LP: #1514889 + * m88ds3103: use own reg update_bits() implementation + - LP: #1514889 + * si2157: Bounds check firmware + - LP: #1514889 + * si2168: Bounds check firmware + - LP: #1514889 + * rtl28xxu: fix control message flaws + - LP: #1514889 + * KVM: arm: use GIC support unconditionally + - LP: #1514889 + * ALSA: hdac: Explicitly add io.h + - LP: #1514889 + * ALSA: hda - Fix inverted internal mic on Lenovo G50-80 + - LP: #1504778, #1514889 + * ALSA: hda - Fix deadlock at error in building PCM + - LP: #1514889 + * ASoC: Add info callback for SX_TLV controls + - LP: #1514889 + * ASoC: wm8904: Correct number of EQ registers + - LP: #1514889 + * x86/efi: Fix multiple GOP device support + - LP: #1514889 + * x86/ioapic: Prevent NULL pointer dereference in setup_ioapic_dest() + - LP: #1514889 + * mm: make sendfile(2) killable + - LP: #1514889 + * fault-inject: fix inverted interval/probability values in printk + - LP: #1514889 + * tracing: Have stack tracer force RCU to be watching + - LP: #1514889 + * bus: arm-ccn: Fix irq affinity setting on CPU migration + - LP: #1514889 + * drm/radeon/dpm: don't add pwm attributes if DPM is disabled + - LP: #1514889 + * drm/amdgpu: add missing dpm check for KV dpm late init + - LP: #1514889 + * drm/i915: Flush pipecontrol post-sync writes + - LP: #1514889 + * drm/i915: Restore lost DPLL register write on gen2-4 + - LP: #1514889 + * drm/i915: Deny wrapping an userptr into a framebuffer + - LP: #1514889 + * drm/radeon: don't try to recreate sysfs entries on resume + - LP: #1514889 + * drm/amdgpu: don't try to recreate sysfs entries on resume + - LP: #1514889 + * drm/radeon: fix dpms when driver backlight control is disabled + - LP: #1514889 + * drm/radeon: move bl encoder assignment into bl init + - LP: #1514889 + * iio: mxs-lradc: Fix temperature offset + - LP: #1514889 + * iio: st_accel: fix interrupt handling on LIS3LV02 + - LP: #1514889 + * iio: accel: sca3000: memory corruption in sca3000_read_first_n_hw_rb() + - LP: #1514889 + * rbd: require stable pages if message data CRCs are enabled + - LP: #1514889 + * rbd: don't leak parent_spec in rbd_dev_probe_parent() + - LP: #1514889 + * rbd: prevent kernel stack blow up on rbd map + - LP: #1514889 + * ARM: EXYNOS: Fix double of_node_put() when parsing child power domains + - LP: #1514889 + * ARM: orion: Fix DSA platform device after mvmdio conversion + - LP: #1514889 + * ARM: mvebu: correct a385-db-ap compatible string + - LP: #1514889 + * ARM: dts: berlin: change BG2Q's USB PHY compatible + - LP: #1514889 + * ARM: dts: Fix audio card detection on Peach boards + - LP: #1514889 + * ARM: dts: imx7d: Fix UART2 base address + - LP: #1514889 + * ARM: dts: am57xx-beagle-x15: set VDD_SD to always-on + - LP: #1514889 + * ARM: ux500: modify initial levelshifter status + - LP: #1514889 + * ARM: OMAP1: fix incorrect INT_DMA_LCD + - LP: #1514889 + * ARM: 8445/1: fix vdsomunge not to depend on glibc specific byteswap.h + - LP: #1514889 + * ARM: 8449/1: fix bug in vdsomunge swab32 macro + - LP: #1514889 + * arm64: kernel: fix tcr_el1.t0sz restore on systems with extended idmap + - LP: #1514889 + * block: don't release bdi while request_queue has live references + - LP: #1514889 + * dm btree remove: fix a bug when rebalancing nodes after removal + - LP: #1514889 + * dm cache: the CLEAN_SHUTDOWN flag was not being set + - LP: #1514889 + * dm btree: fix leak of bufio-backed block in btree_split_beneath error + path + - LP: #1514889 + * nvme: fix 32-bit build warning + - LP: #1514889 + * USB: qcserial: add Sierra Wireless MC74xx/EM74xx + - LP: #1514889 + * i2c: mv64xxx: really allow I2C offloading + - LP: #1514889 + * clkdev: fix clk_add_alias() with a NULL alias device name + - LP: #1514889 + * fbcon: initialize blink interval before calling fb_set_par + - LP: #1514889 + * xhci: handle no ping response error properly + - LP: #1514889 + * xhci: Add spurious wakeup quirk for LynxPoint-LP controllers + - LP: #1514889 + * xen-blkfront: check for null drvdata in blkback_changed + (XenbusStateClosing) + - LP: #1514889 + * module: Fix locking in symbol_put_addr() + - LP: #1514889 + * PCI: Prevent out of bounds access in numa_node override + - LP: #1514889 + * ovl: free stack of paths in ovl_fill_super + - LP: #1514889 + * ovl: free lower_mnt array in ovl_put_super + - LP: #1514889 + * ovl: use O_LARGEFILE in ovl_copy_up() + - LP: #1514889 + * ovl: fix dentry reference leak + - LP: #1514889 + * ovl: fix open in stacked overlay + - LP: #1514889 + * Input: alps - only the Dell Latitude D420/430/620/630 have separate + stick button bits + - LP: #1514889 + * crypto: api - Only abort operations on fatal signal + - LP: #1514889 + * md/raid1: submit_bio_wait() returns 0 on success + - LP: #1514889 + * md/raid10: submit_bio_wait() returns 0 on success + - LP: #1514889 + * md/raid5: fix locking in handle_stripe_clean_event() + - LP: #1514889 + * EDAC, sb_edac: Fix TAD presence check for sbridge_mci_bind_devs() + - LP: #1514889 + * irqchip/tegra: Propagate IRQ type setting to parent + - LP: #1514889 + * mvsas: Fix NULL pointer dereference in mvs_slot_task_free + - LP: #1514889 + * netfilter: ipset: Fix sleeping memory allocation in atomic context + - LP: #1514889 + * btrfs: fix possible leak in btrfs_ioctl_balance() + - LP: #1514889 + * kvm: irqchip: fix memory leak + - LP: #1514889 + * thermal: exynos: Fix register read in TMU + - LP: #1514889 + * um: Fix kernel mode fault condition + - LP: #1514889 + * blk-mq: fix use-after-free in blk_mq_free_tag_set() + - LP: #1514889 + * IB/cm: Fix rb-tree duplicate free and use-after-free + - LP: #1514889 + * sched/deadline: Fix migration of SCHED_DEADLINE tasks + - LP: #1514889 + * cpufreq: intel_pstate: Fix divide by zero on Knights Landing (KNL) + - LP: #1514889 + * arm64: compat: fix stxr failure case in SWP emulation + - LP: #1514889 + * NVMe: Fix memory leak on retried commands + - LP: #1514889 + * drm/vmwgfx: Fix up user_dmabuf refcounting + - LP: #1514889 + * thp: use is_zero_pfn() only after pte_present() check + - LP: #1514889 + * pinctrl: baytrail: Serialize all register access + - LP: #1514889 + * pinctrl: baytrail: Use raw_spinlock for locking + - LP: #1514889 + * xen: fix backport of previous kexec patch + - LP: #1514889 + * Linux 4.2.6 + - LP: #1514889 + + [ Ubuntu: 4.2.0-18.22 ] + + * KVM: x86: vmx: avoid guest->host DOS by intercepting #AC + - LP: #1513540 + - CVE-2015-5307 + + -- Luis Henriques Thu, 12 Nov 2015 11:10:08 +0000 + +linux-raspi2 (4.2.0-1014.21) wily; urgency=low + + [ Luis Henriques ] + + * Release Tracking Bug + - LP: #1509609 + * rebased on Ubuntu-4.2.0-17.21 + + [ Ubuntu: 4.2.0-17.21 ] + + * Release Tracking Bug + - LP: #1509480 + * SAUCE: storvsc: use small sg_tablesize on x86 + - LP: #1495983 + + -- Luis Henriques Mon, 26 Oct 2015 16:24:05 +0000 + +linux-raspi2 (4.2.0-1014.20) wily; urgency=low + + [ Brad Figg ] + + * Release Tracking Bug + - LP: #1509178 + + [ Andy Whitcroft ] + + * [Debian] rebuild should only trigger for non-linux packages + - LP: #1498862 + * [Packaging] Provides: virtualbox-guest-modules when appropriate + - LP: #1434579, #1507588 + + [ Matthew R. Ochs ] + + * SAUCE: (noup) cxlflash: Fix to avoid lock instrumentation rejection + - LP: #1508541 + * SAUCE: (noup) cxlflash: Fix to avoid bypassing context cleanup + - LP: #1508541 + + [ Upstream Kernel Changes ] + + * HID: lenovo: Use constants for axes names + - LP: #1508178 + * HID: lenovo: Add missing return-value check + - LP: #1508178 + * HID: lenovo: Hide middle-button press until release + - LP: #1508178 + + -- Brad Figg Fri, 23 Oct 2015 08:47:56 -0700 + +linux-raspi2 (4.2.0-1013.19) wily; urgency=low + + [ Tim Gardner ] + + * Release Tracking Bug + - LP: #1506972 + + [ Paolo Pisati ] + + * Pull in latest 4.2 based kernel changes from + https://github.com/raspberrypi/linux rpi-4.2.y + e3eba57f7c9ffba24f695f187b6578d56495998a + * Revert "SAUCE: raspi2 -- add overlays directory to dts-dirs to get the overlays installed" + * [Config] DMA_BCM2835=y, =m for the other newly introduced options + + [ Upstream Kernel Changes ] + + * spi: bcm2835: fix overflow in calculation of transfer time + * BCM270X_DT: Add SDIO overlay + * leds-gpio: Implement the brightness_get method + * RaspiDAC3 support + * bcm2835: camera: check for scene not being found + * BCM270X_DT: Use fixed-factor-clock for uart1 + * tpa6130a2: Add headphone switch control + * vchiq_arm: Sort out the vmalloc case + * config: Add SND_SOC_ADAU1701 module + * staging: fbtft: Add reset to fbtft_init_display_dt() + * bcm2835-mmc: Don't overwrite MMC capabilities from DT + * BCM270X_DT: mz61581: Set txbuflen to 32k + * backport: spi: bcm2835: BUG: fix wrong use of PAGE_MASK + * mt7601u: fix dma from stack address + * mt7601u: use correct ieee80211_rx variant + * mt7601u: fix tx status reporting contexts + * mt7601u: lock out rx path and tx status reporting + * config: Add CIFS_DFS_UPCALL, CIFS_ACL, CIFS_SMB2, CIFS_FSCACHE + * Add SMI driver + * Add SMI NAND driver + * BCM270X_DT: Document SMI overlay + * dwc_otg: Force host mode to fix incorrect compute module boards + * bcm2709: Remove custom barrier implementation it is no different to default + * config: Add CONFIG_UHID + * Add support for the HiFiBerry DAC+ Pro. + * dmaengine: bcm2708: Make legacy API available for bcm2835-dma + * dmaengine: bcm2835: Add slave dma support + * dmaengine: bcm2835: set residue_granularity field + * dmaengine: bcm2835: Load driver early and support legacy API + * dmaengine: bcm2835: Add debug option for setting wait states + * configs: Enable DMA_BCM2835 + * dmaengine: bcm2708: Change DT compatible string + * config: Add CONFIG_CRYPTO_USER_API_SKCIPHER + * config: Add options for supporting openlabs 802.15.4 radio + * BCM270X_DT: Add at86rf233 overlay + * bcm2835-gpiomem: Fix for ARCH_BCM2835 builds + * scripts/mkknlimg: Improve ARCH_BCM2835 detection + * BCM270X_DT: Make mmc overlay compatible with current firmware + * bcm2835-dma: Fix dreq not set for slave transfers + * bcm2835-dma: Limit cyclic transfers on lite channels to 32k + * BCM270X_DT: Reduce default at86rf233 SPI frequency + * bcm2708: Use #include in dtsi files. + * clk: bcm2835: Move under bcm/ with other Broadcom SoC clk drivers. + * clk: bcm2835: Add binding docs for the new platform clock driver. + * clk: bcm2835: Add support for programming the audio domain clocks + * clk: bcm2835: Also build the driver for downstream kernels. + * bcm2835: Add (disabled) devicetree for the audio clock manager. + * drm/atomic: fix null pointer access to mode_fixup callback + * Use dts-dirs feature for overlays. + + -- Tim Gardner Tue, 13 Oct 2015 17:24:07 -0700 + +linux-raspi2 (4.2.0-1012.18) wily; urgency=low + + [ Tim Gardner ] + + * Release Tracking Bug + - LP: #1504147 + * Rebased on Ubuntu-4.2.0-16.19 + * [Config] CONFIG_X86_LEGACY_VM86=y, CONFIG_VM86=y for i386 + - LP: #1499089 + * [Config] CONFIG_MODIFY_LDT_SYSCALL=y + - LP: #1499089 + * SAUCE: intel_pstate: Allow manually forcing the use of HWP on Skylake-S + * [Config] CONFIG_ARM64_ERRATUM_843419=n + - LP: #1502946 + * [Config] CONFIG_CAVIUM_ERRATUM_22375=y, CONFIG_CAVIUM_ERRATUM_23154=y + + [ Christophe Lombard ] + + * SAUCE: (noup) cxl: Fix number of allocated pages in SPA + - LP: #1499849 + + [ Matthew R. Ochs ] + + * SAUCE: (noup) cxlflash: Fix to avoid corrupting port selection mask + + [ Robert Richter ] + + * SAUCE: (noup) irqchip/gicv3-its: Add range check for number of + allocated pages + * SAUCE: (noup) irqchip/gicv3: Workaround for Cavium ThunderX erratum + 23154 + * SAUCE: (noup) irqchip/gicv3-its: Read typer register outside the loop + * SAUCE: (noup) irqchip/gicv3-its: Add HW revision detection and + configuration + * SAUCE: (noup) irqchip/gicv3-its: Workaround for Cavium ThunderX errata + 22375, 24313 + + [ Upstream Kernel Changes ] + + * x86/compat: Define ARCH_WANT_OLD_COMPAT_IPC only for 32-bit compat + - LP: #1499089 + * x86/compat: Clean up HAVE_UID16 config + - LP: #1499089 + * x86/compat: Separate ia32 and x32 compat ABIs + - LP: #1499089 + * x86/entry/vm86: Clean up saved_fs/gs + - LP: #1499089 + * x86/entry/vm86: Preserve 'orig_ax' + - LP: #1499089 + * x86/entry/vm86: Move userspace accesses to do_sys_vm86() + - LP: #1499089 + * x86/kconfig/32: Rename CONFIG_VM86 and default it to 'n' + - LP: #1499089 + * x86/ldt: Make modify_ldt() optional + - LP: #1499089 + * x86/vm86: Move vm86 fields out of 'thread_struct' + - LP: #1499089 + * x86/vm86: Move fields from 'struct kernel_vm86_struct' to 'struct vm86' + - LP: #1499089 + * x86/vm86: Eliminate 'struct kernel_vm86_struct' + - LP: #1499089 + * x86/vm86: Use the normal pt_regs area for vm86 + - LP: #1499089 + * x86/vm86: Move the vm86 IRQ definitions to vm86.h + - LP: #1499089 + * x86/vm86: Clean up vm86.h includes + - LP: #1499089 + * x86/vm86: Rename vm86->vm86_info to user_vm86 + - LP: #1499089 + * x86/vm86: Rename vm86->v86flags and v86mask + - LP: #1499089 + * x86/selftests, x86/vm86: Improve entry_from_vm86 selftest + - LP: #1499089 + * selftests/x86/vm86: Fix entry_from_vm86 test on 64-bit kernels + - LP: #1499089 + * x86/vm86: Block non-root vm86(old) if mmap_min_addr != 0 + - LP: #1499089 + * x86/vm86: Fix the misleading CONFIG_VM86 Kconfig help text + - LP: #1499089 + * netfilter: conntrack: use nf_ct_tmpl_free in CT/synproxy error paths + - LP: #1503902 + + -- Tim Gardner Thu, 08 Oct 2015 07:56:41 -0600 + +linux-raspi2 (4.2.0-1011.17) wily; urgency=low + + [ Tim Gardner ] + + * Rebased on Ubuntu-4.2.0-15.18 + + [ Andy Whitcroft ] + + * Revert "SAUCE: aufs3: mmap: Fix races in madvise_remove() and sys_msync()" + Was incorrectly backported. + + [ Ben Hutchings ] + + * SAUCE: aufs3: mmap: Fix races in madvise_remove() and sys_msync() + - CVE-2015-7312 + + -- Tim Gardner Wed, 07 Oct 2015 10:05:42 -0600 + +linux-raspi2 (4.2.0-1011.16) wily; urgency=low + + [ Tim Gardner ] + + * Release Tracking Bug + - LP: #1503268 + * Rebased on Ubuntu-4.2.0-15.17 + + -- Tim Gardner Tue, 06 Oct 2015 07:02:36 -0600 + +linux-raspi2 (4.2.0-1010.15) wily; urgency=low + + [ Tim Gardner ] + + * Revert "Make a Raspberry PI kernel image" + u-boot loads a vmlinuz just fine. + + -- Tim Gardner Wed, 30 Sep 2015 17:24:48 -0700 + +linux-raspi2 (4.2.0-1010.14) wily; urgency=low + + * Rebased on Ubuntu-4.2.0-13.15 + * UBUNTU: Make a Raspberry PI kernel image + + -- Tim Gardner Tue, 29 Sep 2015 11:02:18 -0700 + +linux-raspi2 (4.2.0-1009.13) wily; urgency=low + + [ Tim Gardner ] + + * Fix getabis + * Rebased on Ubuntu-4.2.0-12.14 + + -- Tim Gardner Fri, 25 Sep 2015 09:41:46 -0600 + +linux-raspi2 (4.2.0-1008.12) wily; urgency=low + + [ Tim Gardner ] + + * Revert "Disable debug package generation" + * Revert "Drop some package generation" + * Enable linux tools to be built + There are folks that would like to use the tools outside of Snappy, e.g., + in a regular Debian installation. + * Disable doc and source package generation + * Remove unused package definitions + * Fix dependency on linux-raspi2-tools-common + + -- Tim Gardner Wed, 23 Sep 2015 11:30:47 -0600 + +linux-raspi2 (4.2.0-1008.11) wily; urgency=low + + [ Tim Gardner ] + + * Revert "packaging: invoke /bin/true if $(DEBIAN)/reconstruct doesn't exit" + Superfluous with the addition of debian.raspi2/reconstruct + * Drop some package generation, e.g., source, doc, tools. + * Don't generate debug symbol image packages. + + -- Tim Gardner Tue, 22 Sep 2015 11:23:42 -0600 + +linux-raspi2 (4.2.0-1008.10) wily; urgency=low + + [ Paolo Pisati ] + + * [Config] LEDS_TRIGGER_DEFAULT_ON=y + * SAUCE: raspi2 dtb: power led default to on + + [ Tim Gardner ] + + * [Config] armhf: ARM_KERNMEM_PERMS=y && DEBUG_RODATA=y + * rebased on Ubuntu-4.2.0-10.12 + + -- Tim Gardner Mon, 14 Sep 2015 09:45:11 -0600 + +linux-raspi2 (4.2.0-1008.9) wily; urgency=low + + [ Paolo Pisati ] + + * [Config] NLS_ISO8859_1=y + + -- Tim Gardner Mon, 14 Sep 2015 09:10:34 -0600 + +linux-raspi2 (4.2.0-1008.8) wily; urgency=low + + [ Andy Whitcroft ] + + * SAUCE: raspi2 -- add overlays directory to dts-dirs to get the overlays installed + + [ Tim Gardner ] + + * rebased on Ubuntu-4.2.0-10.10 + + -- Tim Gardner Fri, 11 Sep 2015 10:00:17 -0600 + +linux-raspi2 (4.2.0-1007.7) wily; urgency=low + + [ Tim Gardner ] + + * [Debian] Change package name from bcm2709 to raspi2 + * [Debian] drop generic.inclusion-list + * [Packaging] Clean up d-i + + [ Upstream Kernel Changes ] + + * vchiq: fix NULL pointer dereference when closing driver + * bcm2708_fb: remove redundant code as detected by static analysis + * bcm2708_fb: remove unnecessary initialization of result + * vcsm: increment res_stats MAP_FAIL stats before we potentially release the resource + * bcm2835: memcpy port data to m rather than rmsg + + -- Tim Gardner Thu, 10 Sep 2015 08:17:27 -0600 + +linux-raspi2 (4.2.0-1006.6) wily; urgency=low + + [ Tim Gardner ] + + * rebased on Ubuntu-4.2.0-9.9 + + -- Tim Gardner Wed, 09 Sep 2015 13:30:42 -0600 + +linux-raspi2 (4.2.0-1005.5) wily; urgency=low + + [ Paolo Pisati ] + + * [Config] LEDS_GPIO=y && LEDS_TRIGGER_HEARTBEAT=y + * [Config] disable FB_SIMPLE + * [Config] SPI_SPIDEV=y + * [Config] HID=y && HID_GENERIC=y + * [Config] USB_HID=y , USB_DWCOTG=y and USB_STORAGE=y + * [Config] disable USB_GADGET + * [Config] disable ARM_PSCI + * [Config] disable CACHE_L2X0 + * [Config] CPUFREQ_DT=m + * [Config] disable SOC_TI + * [Config] disable TEGRA_AHB + * [Config] disable USB_OHCI_HCD + * [Config] disable USB_EHCI_HCD + * [Config] disable USB_XHCI_HCD + * [Config] disable VEXPRESS_CONFIG + * packaging: purge all ARCHS but armhf + + -- Paolo Pisati Wed, 09 Sep 2015 09:58:34 +0200 + +linux-raspi2 (4.2.0-1004.4) wily; urgency=low + + [ Paolo Pisati ] + + * [Config] disable ERRATAs not applicable to raspi2 + * [Config] VMSPLIT_2G=y + + -- Paolo Pisati Tue, 08 Sep 2015 11:22:46 +0200 + +linux-raspi2 (4.2.0-1003.3) wily; urgency=low + + [ Paolo Pisati ] + + * [Config] BCM2835_MBOX=y, ARM_BCM2835_CPUFREQ=y, RASPBERRYPI_FIRMWARE=y + and THERMAL_BCM2835=y + * [Config] BCM2709_DT=y, BCM2708_WDT=m and BCM2835_WDT=m + * [Config] BRCM_CHAR_DRIVERS=y, BCM_VC_CMA=y and BCM_VCIO=y + * [Config] DMA_BCM2708=y + * [Config] HW_RANDOM_BCM2708=m and HW_RANDOM_BCM2835=m + * [Config] I2C_BCM2708=m + * [Config] SPI_BCM2708=m and SPI_BCM2835=m + * [Config] PWM_BCM2835=m + * [Config] VIDEO_BCM2835=y + * [Config] SND_BCM2835=m and SND_BCM2708_SOC_I2S=m + * [Config] DMA_CMA=y + * [Config] FB_RPISENSE=m + * [Config] IP_MROUTE_MULTIPLE_TABLES=y + * [Config] JUMP_LABEL=y + * [Config] JOYSTICK_RPISENSE=m + * [Config] LIRC_RPI=m + * [Config] disable HIGHMEM + * [Config] USB_NET_SMSC95XX=y + + -- Paolo Pisati Mon, 07 Sep 2015 16:37:31 +0200 + +linux-raspi2 (4.2.0-1002.2) wily; urgency=low + + [ Andy Green ] + + * SAUCE: force min_free_kbytes set by proc to min 32K to workaround smsc + problems + + [ Paolo Pisati ] + + * [Config] snappy config fragments: generic, systemd, lxc, security and + snappy + * [Config] snappy/security: CC_STACKPROTECTOR_REGULAR=y + * [Config] snappy/snappy: RFKILL_REGULATOR depends on REGULATOR=y + * [Config] snappy/generic: CRASH_DUMP=y + * [Config] snappy/generic: NVRAM=m + * [Config] snappy/generic: INPUT_UINPUT=y + * [Config] snappy/generic: SYSVIPC=y && SYSVIPC_SYSCTL=y + * [Config] snappy/generic: LOCALVERSION= to avoid packaging failure + * [Config] updateconfigs + * [Config] FTBFS: disable STE_MODEM_RPROC - raspi2 lacks the necessary + barrier primitives when SMP=y + * [Config] FTBFS: disable VIA_RHINE - raspi2 lacks the necessary barrier + primitives when SMP=y + * [Config] FTBFS: disable VIRTIO_MMIO - raspi2 lacks the necessary + barrier primitives + * [Config] FTBFS: disable CAIF_VIRTIO - raspi2 lacks the necessary + barrier primitives + * [Config] disable BIG_LITTLE + * [Config] MMC_BCM2835=y + + -- Paolo Pisati Fri, 04 Sep 2015 09:44:10 +0100 + +linux-raspi2 (4.2.0-1001.1) wily; urgency=low + + [ Paolo Pisati ] + + * import rpi-4.2.y BSP @3a5c7e7 + * rebased on Ubuntu-4.2.0-7.7 + + -- Paolo Pisati Thu, 3 Sep 2015 15:22:10 +0100 --- linux-raspi2-4.2.0.orig/debian.raspi2/config/annotations +++ linux-raspi2-4.2.0/debian.raspi2/config/annotations @@ -0,0 +1,4444 @@ +# Menu: HEADER +# ARCH: x86 arm powerpc + +# not a thing +#CONFIG_USB_OHCI_HCD_PLATFORM - flag +#CONFIG_USB_EHCI_HCD_PLATFORM - flag +#CONFIG_USB_OHCI_HCD_PPC_OF_LE - flag + +#CONFIG_64BIT - flag + +# Overall defaults +set +all !flag EXPERIMENTAL !flag IGNORE !flag DEPRECATED ?type tristate = m + +# Mark debugging symbols. +# default all debug symbols off +set +pattern '(^|_)DEBUG(_|$)' ?type bool = n flag +set +pattern '(^|_)DEBUG(_|$)' ?type tristate = n flag +# exceptions +CONFIG_DEBUG_FS y note +CONFIG_DEBUG_KERNEL y note +CONFIG_SLUB_DEBUG y +CONFIG_SCHED_DEBUG y + +# Menu: ROOT +CONFIG_RELOCATABLE p policy<{'amd64': 'y', 'i386': 'y', 'powerpc-powerpc64-emb': 'y', 'powerpc-powerpc64-smp': 'y', 'ppc64el': 'y'}> + +# Menu: Advanced setup >> Architecture: powerpc + +# Menu: Advanced setup >> Prompt for advanced kernel configuration options + +# Menu: Advanced setup >> Prompt for advanced kernel configuration options >> Architecture: powerpc +CONFIG_LOWMEM_CAM_NUM D +CONFIG_ADVANCED_OPTIONS n + +# Menu: Architecture: arm +CONFIG_ARM_DMA_IOMMU_ALIGNMENT 8 +CONFIG_ARM_PATCH_PHYS_VIRT y + +# Menu: Architecture: powerpc +CONFIG_PPC64 p policy<{'powerpc-powerpc64-emb': 'y', 'powerpc-powerpc64-smp': 'y', 'powerpc-powerpc-e500mc': 'n', 'powerpc-powerpc-smp': 'n', 'ppc64el': 'y'}> +CONFIG_NR_IRQS p policy<{'powerpc': '512', 'ppc64el': '512'}> +CONFIG_SCOM_DEBUGFS p policy<{'powerpc-powerpc64-smp': 'y', 'ppc64el': 'y'}> + +# Menu: Architecture: x86 +CONFIG_64BIT ? + +# Menu: Boot options +# +CONFIG_KEXEC y +CONFIG_CRASH_DUMP p mark policy<{'powerpc-powerpc-smp': 'n', 'powerpc-powerpc-e500mc': 'n', 'arm64': '-', '*': 'y'}> note +CONFIG_CMDLINE p policy<{'arm64': '"console=ttyAMA0"', 'armhf': '""'}> + +# Menu: Boot options >> Architecture: arm +CONFIG_USE_OF p policy<{'armhf': 'y'}> +CONFIG_ATAGS p policy<{'armhf': 'y'}> +CONFIG_DEPRECATED_PARAM_STRUCT p policy<{'armhf': 'n'}> +CONFIG_ARM_ATAG_DTB_COMPAT p policy<{'armhf': 'y'}> +CONFIG_ARM_APPENDED_DTB p policy<{'armhf': 'y'}> +CONFIG_ARM_ATAG_DTB_COMPAT p policy<{'armhf-generic': 'y', 'armhf-generic-lpae': 'n'}> mark +CONFIG_ATAGS_PROC p policy<{'armhf': 'y'}> +CONFIG_AUTO_ZRELADDR p policy<{'armhf': 'y'}> + +# Menu: Boot options >> Include SD/MMC loader in zImage (EXPERIMENTAL) >> Architecture: arm + +# Menu: Boot options >> Kernel command line type +CONFIG_CMDLINE_FORCE n +CONFIG_CMDLINE_FORCE p policy<{'arm64': 'n'}> + +# Menu: Boot options >> Kernel command line type >> Architecture: arm +CONFIG_ARM_ATAG_DTB_COMPAT_CMDLINE_EXTEND p policy<{'armhf': 'y'}> + +# Menu: Bus options (PCI etc.) +CONFIG_ISA p policy<(arch i386 &/ value y) | value n> + +# Menu: Bus options (PCI etc.) >> Architecture: arm + +# Menu: Bus options (PCI etc.) >> Architecture: powerpc +CONFIG_FSL_LBC y + +# Menu: Bus options (PCI etc.) >> Architecture: x86 +CONFIG_ISA_DMA_API y +CONFIG_X86_SYSFB y +CONFIG_ALIX y +CONFIG_NET5501 y +CONFIG_GEOS y +CONFIG_X86_SYSFB n mark + +# Menu: Bus options (PCI etc.) >> EISA support +CONFIG_EISA_VLB_PRIMING y +CONFIG_EISA_PCI_EISA D +CONFIG_EISA_VIRTUAL_ROOT D +CONFIG_EISA_NAMES D + +# Menu: Bus options (PCI etc.) >> EISA support >> Architecture: x86 +CONFIG_EISA y + +# Menu: Bus options (PCI etc.) >> PCCard (PCMCIA/CardBus) support +CONFIG_PCCARD p policy<(arch armel armhf ppc64el &/ value n) | value m> note +CONFIG_CARDBUS y + +# Menu: Bus options (PCI etc.) >> PCCard (PCMCIA/CardBus) support >> 16-bit PCMCIA support +CONFIG_PCMCIA_LOAD_CIS y + +# Menu: Bus options (PCI etc.) >> PCCard (PCMCIA/CardBus) support >> CardBus yenta-compatible bridge support +CONFIG_YENTA_O2 y +CONFIG_YENTA_RICOH y +CONFIG_YENTA_TI y +CONFIG_YENTA_ENE_TUNE y +CONFIG_YENTA_TOSHIBA y + +# Menu: Bus options (PCI etc.) >> PCI support +#set +tree-menu 'Bus options (PCI etc.)>>PCI support' !flag EXPERIMENTAL ?type bool = D +CONFIG_PCI y +CONFIG_PCI_MSI y +CONFIG_PCI_REALLOC_ENABLE_AUTO y +CONFIG_HT_IRQ y +CONFIG_PCI_IOV y +CONFIG_PCI_PRI y +CONFIG_PCI_PASID y + +# Menu: Bus options (PCI etc.) >> PCI support >> Architecture: x86 +CONFIG_PCI_MMCONFIG y +CONFIG_PCI_CNB20LE_QUIRK n + +# Menu: Bus options (PCI etc.) >> PCI support >> PCI Express Port Bus support +CONFIG_PCIEPORTBUS y +CONFIG_PCIEAER y +CONFIG_PCIE_ECRC n +CONFIG_PCIEASPM y +CONFIG_PCIEASPM_DEBUG y note +CONFIG_HOTPLUG_PCI_PCIE p mark policy<{'ppc64el': 'n', 'armhf': '-', '*': 'y'}> note +CONFIG_PCIEAER_INJECT n flag + +# Menu: Bus options (PCI etc.) >> PCI support >> PCI Express Port Bus support >> Default ASPM policy +CONFIG_PCIEASPM_DEFAULT y note + +# Menu: Bus options (PCI etc.) >> PCI support >> PCI access mode >> Architecture: x86 +CONFIG_PCI_GOANY y + +# Menu: Bus options (PCI etc.) >> PCI support >> PCI host controller drivers +CONFIG_PCI_DRA7XX p policy<{'armhf': 'y'}> +CONFIG_PCI_MVEBU p policy<{'armhf': 'y'}> +CONFIG_PCI_EXYNOS p policy<{'armhf': 'y'}> +CONFIG_PCI_IMX6 p policy<{'armhf-generic': 'y'}> +CONFIG_PCI_TEGRA p policy<{'armhf-generic': 'y'}> +CONFIG_PCI_RCAR_GEN2 p policy<{'armhf': 'y'}> +CONFIG_PCI_RCAR_GEN2_PCIE p policy<{'armhf': 'y'}> +CONFIG_PCI_HOST_GENERIC p policy<{'armhf': 'y'}> +CONFIG_PCI_XGENE p policy<{'arm64': 'y'}> +CONFIG_PCI_LAYERSCAPE p policy<{'armhf': 'n'}> + +# Menu: Bus options (PCI etc.) >> PCI support >> RapidIO support +CONFIG_RAPIDIO y +CONFIG_RAPIDIO_DISC_TIMEOUT 30 +CONFIG_RAPIDIO_ENABLE_RX_TX_PORTS n +CONFIG_RAPIDIO_DMA_ENGINE y + +# Menu: Bus options (PCI etc.) >> PCI support >> RapidIO support >> Architecture: powerpc +CONFIG_FSL_RIO y + +# Menu: Bus options (PCI etc.) >> PCI support >> RapidIO support >> Enumeration method + +# Menu: Bus options (PCI etc.) >> PCI support >> RapidIO support >> RapidIO Switch drivers + +# Menu: Bus options (PCI etc.) >> PCI support >> Support for PCI Hotplug +CONFIG_HOTPLUG_PCI y +CONFIG_HOTPLUG_PCI_ACPI y +CONFIG_HOTPLUG_PCI_CPCI y +CONFIG_HOTPLUG_PCI_COMPAQ_NVRAM y +CONFIG_HOTPLUG_PCI_SHPC p policy<{'amd64': 'm', 'arm64': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'n'}> note + +# Menu: Cryptographic API +set +tree-menu 'Cryptographic API' ?flag EXPERIMENTAL ?type bool = n +set +tree-menu 'Cryptographic API' ?flag EXPERIMENTAL ?type tristate = n +set +tree-menu 'Cryptographic API' !flag EXPERIMENTAL ?type tristate = m +CONFIG_CRYPTO y mark +CONFIG_CRYPTO_MANAGER y note +CONFIG_CRYPTO_MANAGER_DISABLE_TESTS y flag +CONFIG_CRYPTO_TEST m flag +CONFIG_CRYPTO_CBC y note +CONFIG_CRYPTO_ECB y note +CONFIG_CRYPTO_HMAC y note +CONFIG_CRYPTO_CRC32C y note +CONFIG_CRYPTO_CRC32C_INTEL y note +CONFIG_CRYPTO_CRCT10DIF y note +CONFIG_CRYPTO_MD5 y note +CONFIG_CRYPTO_SHA1 y note +CONFIG_CRYPTO_SHA256 y note +CONFIG_CRYPTO_SHA512 y note +CONFIG_CRYPTO_AES y note +CONFIG_CRYPTO_LZO y note + +# Menu: Cryptographic API >> Asymmetric (public-key cryptographic) key type +CONFIG_ASYMMETRIC_KEY_TYPE y note +CONFIG_ASYMMETRIC_PUBLIC_KEY_SUBTYPE y note +CONFIG_PUBLIC_KEY_ALGO_RSA y note +CONFIG_X509_CERTIFICATE_PARSER y note + +# Menu: Cryptographic API >> Hardware crypto devices +#CONFIG_CRYPTO_DEV_NX_COMPRESS y note +CONFIG_CRYPTO_HW y +CONFIG_CRYPTO_DEV_PADLOCK y note +CONFIG_CRYPTO_DEV_HIFN_795X_RNG y +CONFIG_CRYPTO_DEV_CCP y +CONFIG_CRYPTO_DEV_NX y + +# Menu: Cryptographic API >> Hardware crypto devices >> Freescale CAAM Job Ring driver backend +CONFIG_CRYPTO_DEV_FSL_CAAM_RINGSIZE D +CONFIG_CRYPTO_DEV_FSL_CAAM_INTC y +CONFIG_CRYPTO_DEV_FSL_CAAM_INTC_COUNT_THLD D +CONFIG_CRYPTO_DEV_FSL_CAAM_INTC_TIME_THLD D + +# Menu: Cryptographic API >> NIST SP800-90A DRBG +CONFIG_CRYPTO_DRBG_HMAC y +CONFIG_CRYPTO_DRBG_HASH y +CONFIG_CRYPTO_DRBG_CTR y + +# Menu: Device Drivers +CONFIG_POWER_AVS y +CONFIG_RESET_CONTROLLER y +CONFIG_TEGRA_AHB p policy<{'arm64': 'y', 'armhf': 'y'}> + +# Menu: Device Drivers >> ATA/ATAPI/MFM/RLL support (DEPRECATED) +set +tree 'Device Drivers>>ATA/ATAPI/MFM/RLL support (DEPRECATED)' = n +# +#CONFIG_IDE_GD y +#CONFIG_IDE_GD_ATA y +#CONFIG_BLK_DEV_IDECD y +#CONFIG_IDEPCI_PCIBUS_ORDER y +#CONFIG_BLK_DEV_GENERIC y +#CONFIG_BLK_DEV_AMD74XX y +#CONFIG_IDE_PROC_FS y +CONFIG_IDE n + +# Menu: Device Drivers >> ATA/ATAPI/MFM/RLL support (DEPRECATED) >> IDE Mode for AMD Alchemy Au1200 + +# Menu: Device Drivers >> Accessibility support +CONFIG_ACCESSIBILITY n mark + +# Menu: Device Drivers >> Android +CONFIG_ANDROID n + +# Menu: Device Drivers >> Auxiliary Display support +CONFIG_AUXDISPLAY y +CONFIG_KS0108_DELAY 2 +CONFIG_CFAG12864B_RATE 20 + +# Menu: Device Drivers >> Block devices +set +tree-menu 'Device Drivers>>Block devices' ?flag EXPERIMENTAL ?type bool = n +set +tree-menu 'Device Drivers>>Block devices' ?flag EXPERIMENTAL ?type tristate = n +set +tree-menu 'Device Drivers>>Block devices' !flag EXPERIMENTAL ?type tristate = m +# +CONFIG_BLK_DEV y +CONFIG_CISS_SCSI_TAPE y +CONFIG_BLK_DEV_UMEM m note +CONFIG_BLK_DEV_LOOP y note +CONFIG_BLK_DEV_LOOP_MIN_COUNT 8 +CONFIG_DRBD_FAULT_INJECTION n +CONFIG_CDROM_PKTCDVD_BUFFERS 8 +CONFIG_CDROM_PKTCDVD_WCACHE n mark +CONFIG_XEN_BLKDEV_FRONTEND y note +CONFIG_VIRTIO_BLK y note +CONFIG_BLK_DEV_HD n note mark +CONFIG_BLK_DEV_RBD m note +CONFIG_MG_DISK_RES 0 +CONFIG_ZRAM_LZ4_COMPRESS y + +# Menu: Device Drivers >> Block devices >> Parallel port IDE device support +CONFIG_PARIDE_EPATC8 y + +# Menu: Device Drivers >> Block devices >> RAM block device support +CONFIG_BLK_DEV_RAM y note +CONFIG_BLK_DEV_RAM_COUNT 16 +CONFIG_BLK_DEV_RAM_SIZE 65536 mark note mark +CONFIG_BLK_DEV_XIP n note + +# Menu: Device Drivers >> Block devices >> Support for DASD devices + +# Menu: Device Drivers >> Broadcom specific AMBA +CONFIG_BCMA_HOST_PCI y + +# Menu: Device Drivers >> Broadcom specific AMBA >> BCMA support +CONFIG_BCMA_HOST_SOC y +CONFIG_BCMA_DRIVER_GMAC_CMN y +CONFIG_BCMA_DRIVER_GPIO y + +# Menu: Device Drivers >> Bus devices +CONFIG_VEXPRESS_CONFIG y +CONFIG_BRCMSTB_GISB_ARB y +CONFIG_IMX_WEIM y +CONFIG_OMAP_INTERCONNECT y note +CONFIG_ARM_CCI y +CONFIG_ARM_CCN y + +# Menu: Device Drivers >> Character devices +# +set +tree 'Device Drivers>>Character devices' ?flag EXPERIMENTAL ?type bool = n +set +tree 'Device Drivers>>Character devices' ?flag EXPERIMENTAL ?type tristate = n +set +tree 'Device Drivers>>Character devices' !flag EXPERIMENTAL ?type tristate = m +# +CONFIG_DEVKMEM n mark mark note +CONFIG_TTY_PRINTK y +CONFIG_LP_CONSOLE n +CONFIG_HVC_XEN y +CONFIG_HVC_XEN_FRONTEND y +CONFIG_NVRAM p mark policy<{'amd64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc-powerpc-e500mc': 'y', 'powerpc-powerpc-smp': 'y'}> note +CONFIG_MAX_RAW_DEVS 256 +CONFIG_HPET y +CONFIG_HPET_MMAP y +CONFIG_HPET_MMAP_DEFAULT y +CONFIG_HVC_DCC n +CONFIG_VIRTIO_CONSOLE y +CONFIG_HVC_UDBG y +CONFIG_HVC_CONSOLE y +CONFIG_HVC_OLD_HVSI y +CONFIG_HVC_OPAL y +CONFIG_HVC_RTAS y + +# Menu: Device Drivers >> Character devices >> Enable TTY +CONFIG_TTY y +CONFIG_VT y +CONFIG_CONSOLE_TRANSLATIONS y +CONFIG_VT_CONSOLE y +CONFIG_VT_HW_CONSOLE_BINDING y +CONFIG_UNIX98_PTYS y +CONFIG_DEVPTS_MULTIPLE_INSTANCES y +CONFIG_LEGACY_PTYS y +CONFIG_LEGACY_PTY_COUNT 0 +CONFIG_PPC_EPAPR_HV_BYTECHAN n +CONFIG_N_GSM m note + +# Menu: Device Drivers >> Character devices >> Enable TTY >> Non-standard serial port support +CONFIG_SERIAL_NONSTANDARD y +CONFIG_CYZ_INTR n + +# Menu: Device Drivers >> Character devices >> Hardware Random Number Generator Core support +CONFIG_HW_RANDOM y +CONFIG_HW_RANDOM_ATMEL n note + +# Menu: Device Drivers >> Character devices >> IPMI top-level message handler +#CONFIG_IPMI_HANDLER y +CONFIG_IPMI_PANIC_EVENT n +CONFIG_IPMI_SI_PROBE_DEFAULTS y + +# Menu: Device Drivers >> Character devices >> PCMCIA character devices + +# Menu: Device Drivers >> Character devices >> Serial drivers +CONFIG_SERIAL_KGDB_NMI y +CONFIG_SERIAL_MAX310X y +CONFIG_SERIAL_SCCNXP y +CONFIG_SERIAL_SCCNXP_CONSOLE y +CONFIG_SERIAL_ARC_NR_PORTS 1 +CONFIG_SERIAL_RP2_NR_UARTS 32 +CONFIG_SERIAL_AMBA_PL011 y +CONFIG_SERIAL_AMBA_PL011_CONSOLE y +CONFIG_SERIAL_EARLYCON_ARM_SEMIHOST y +CONFIG_SERIAL_OF_PLATFORM y +CONFIG_SERIAL_IMX y +CONFIG_SERIAL_IMX_CONSOLE y +CONFIG_SERIAL_MSM y +CONFIG_SERIAL_MSM_CONSOLE y +CONFIG_SERIAL_OMAP p policy<(arch armel armhf &/ value y) | value m> note +CONFIG_SERIAL_OMAP_CONSOLE y +CONFIG_SERIAL_PMACZILOG y +CONFIG_SERIAL_PMACZILOG_TTYS n +CONFIG_SERIAL_PMACZILOG_CONSOLE y + +# Menu: Device Drivers >> Character devices >> Serial drivers >> 8250/16550 and compatible serial support +CONFIG_SERIAL_8250 y note +CONFIG_SERIAL_8250_PNP y +CONFIG_SERIAL_8250_CONSOLE y +CONFIG_SERIAL_8250_DMA y +CONFIG_SERIAL_8250_PCI y +CONFIG_SERIAL_8250_NR_UARTS 48 +CONFIG_SERIAL_8250_RUNTIME_UARTS 32 +CONFIG_SERIAL_8250_EM n +CONFIG_SERIAL_8250_MT6577 y + +# Menu: Device Drivers >> Character devices >> Serial drivers >> 8250/16550 and compatible serial support >> Extended 8250/16550 serial driver options +CONFIG_SERIAL_8250_EXTENDED y +CONFIG_SERIAL_8250_SHARE_IRQ y +CONFIG_SERIAL_8250_DETECT_IRQ n +CONFIG_SERIAL_8250_RSA y + +# Menu: Device Drivers >> Character devices >> 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 y + +# Menu: Device Drivers >> Character devices >> Serial drivers >> AT91 / AT32 on-chip serial port support + +# Menu: Device Drivers >> Character devices >> Serial drivers >> Altera UART support +CONFIG_SERIAL_ALTERA_UART_MAXPORTS 4 +CONFIG_SERIAL_ALTERA_UART_BAUDRATE 115200 + +# Menu: Device Drivers >> Character devices >> Serial drivers >> Blackfin SPORT emulate UART + +# Menu: Device Drivers >> Character devices >> Serial drivers >> Blackfin serial port support + +# Menu: Device Drivers >> Character devices >> Serial drivers >> Blackfin serial port support >> UART Mode + +# Menu: Device Drivers >> Character devices >> Serial drivers >> SuperH SCI(F) serial port support +CONFIG_SERIAL_SH_SCI_NR_UARTS 2 +CONFIG_SERIAL_SH_SCI_DMA y + +# Menu: Device Drivers >> Character devices >> Serial drivers >> TMPTX39XX/49XX SIO support + +# Menu: Device Drivers >> Character devices >> TPM Hardware Support +CONFIG_TCG_TPM y note +CONFIG_TCG_TIS y +CONFIG_TCG_IBMVTPM y + +# Menu: Device Drivers >> Clock Source drivers +CONFIG_ARM_ARCH_TIMER_EVTSTREAM p policy<{'arm64': 'y', 'armhf': 'y'}> +CONFIG_SH_TIMER_CMT p policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'y', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_SH_TIMER_MTU2 p policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'y', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_SH_TIMER_TMU p policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'y', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_EM_TIMER_STI p policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'y', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_CLKSRC_VERSATILE p policy<{'arm64': 'y', 'armhf': 'y'}> + +# Menu: Device Drivers >> Common Clock Framework +CONFIG_COMMON_CLK_VERSATILE y +CONFIG_COMMON_CLK_XGENE y +CONFIG_CLK_SP810 y +CONFIG_CLK_VEXPRESS_OSC y +CONFIG_CLK_PPC_CORENET y + +# Menu: Device Drivers >> Common Clock Framework >> Support for Qualcomm's clock controllers + +# Menu: Device Drivers >> Connector - unified userspace <-> kernelspace linker +CONFIG_CONNECTOR y +CONFIG_PROC_EVENTS y + +# Menu: Device Drivers >> DMA Engine support +CONFIG_DMADEVICES y +CONFIG_DMADEVICES_DEBUG n +CONFIG_AMBA_PL08X p policy<{'arm64': 'y', 'armhf': 'y'}> +CONFIG_MV_XOR p policy<{'armhf': 'y'}> +CONFIG_MX3_IPU p policy<{'armhf-generic': 'y'}> +CONFIG_MX3_IPU_IRQS p policy<{'armhf-generic': '4'}> +CONFIG_TEGRA20_APB_DMA p policy<{'armhf-generic': 'y'}> +CONFIG_TI_EDMA p policy<{'armhf': 'y'}> +CONFIG_MXS_DMA p policy<{'armhf-generic': 'y'}> +CONFIG_DMA_OMAP p policy<{'armhf': 'y'}> +CONFIG_ASYNC_TX_DMA y +CONFIG_DMATEST n flag + +# Menu: Device Drivers >> DMA Engine support >> Renesas SuperH DMA Engine support +CONFIG_SH_DMAE_BASE y + +# Menu: Device Drivers >> Dallas's 1-wire support +CONFIG_W1_CON y + +# Menu: Device Drivers >> Dallas's 1-wire support >> 1-wire Bus Masters + +# Menu: Device Drivers >> Dallas's 1-wire support >> 1-wire Slaves +CONFIG_W1_SLAVE_DS2408_READBACK y +CONFIG_W1_SLAVE_DS2433_CRC n + +# Menu: Device Drivers >> Device Tree and Open Firmware support +CONFIG_OF_UNITTEST n flag + +# Menu: Device Drivers >> EDAC (Error Detection And Correction) reporting +CONFIG_EDAC y +CONFIG_EDAC_LEGACY_SYSFS n + +# Menu: Device Drivers >> EDAC (Error Detection And Correction) reporting >> Main Memory EDAC (Error Detection And Correction) reporting +CONFIG_EDAC_AMD64_ERROR_INJECTION n +CONFIG_EDAC_SBRIDGE m note + +# Menu: Device Drivers >> External Connector Class (extcon) support +set +tree 'Device Drivers>>External Connector Class (extcon) support' ?flag EXPERIMENTAL ?type bool = n +set +tree 'Device Drivers>>External Connector Class (extcon) support' ?flag EXPERIMENTAL ?type tristate = n +set +tree 'Device Drivers>>External Connector Class (extcon) support' !flag EXPERIMENTAL ?type tristate = m +# +CONFIG_EXTCON y + +# Menu: Device Drivers >> FMC support + +# Menu: Device Drivers >> Fusion MPT device support +CONFIG_FUSION y +CONFIG_FUSION_MAX_SGE 128 +CONFIG_FUSION_LOGGING y + +# Menu: Device Drivers >> GPIO Support +set +tree 'Device Drivers>>GPIO Support' = - mark +set +all ?mark 'GPIO' ?flag EXPERIMENTAL ?type bool = n +set +all ?mark 'GPIO' ?flag EXPERIMENTAL ?type tristate = n +set +all ?mark 'GPIO' !flag EXPERIMENTAL ?type tristate = m +# standard forms: +set +pattern ^GPIO_ ?mark 'GPIO' ?type bool !flag EXPERIMENTAL = y +# +CONFIG_GPIO_SYSFS n +CONFIG_GPIOLIB y +CONFIG_GPIO_EM n note +CONFIG_GPIO_GENERIC_PLATFORM p policy<{'armhf': 'y', 'arm64': 'y', '*', 'm'}> +CONFIG_GPIO_LYNXPOINT y +CONFIG_GPIO_TWL6040 p policy<{'armhf': 'y', '*': 'm'}> +#CONFIG_GPIO_TWL4030 p mark policy<{'armhf': 'y', '*': 'm'}> note +CONFIG_GPIO_SYSFS y note + +# Menu: Device Drivers >> Generic Driver Options +CONFIG_UEVENT_HELPER y +CONFIG_UEVENT_HELPER_PATH "" +CONFIG_DEVTMPFS y note note +CONFIG_DEVTMPFS_MOUNT y note note +CONFIG_STANDALONE p policy<(arch i386 amd64 &/ value n) | value y> +CONFIG_PREVENT_FIRMWARE_BUILD y +CONFIG_FENCE_TRACE n flag +CONFIG_ALLOW_DEV_COREDUMP y + +# Menu: Device Drivers >> Generic Driver Options >> DMA Contiguous Memory Allocator +CONFIG_DMA_CMA n note +CONFIG_CMA_SIZE_MBYTES 64 mark +CONFIG_CMA_ALIGNMENT 8 + +# Menu: Device Drivers >> Generic Driver Options >> DMA Contiguous Memory Allocator >> Selected region size +CONFIG_CMA_SIZE_SEL_MBYTES y + +# Menu: Device Drivers >> Generic Driver Options >> Userspace firmware loading support +CONFIG_FW_LOADER y note +CONFIG_FIRMWARE_IN_KERNEL y +CONFIG_EXTRA_FIRMWARE "" +CONFIG_FW_LOADER_USER_HELPER_FALLBACK n mark note + +# Menu: Device Drivers >> Generic Dynamic Voltage and Frequency Scaling (DVFS) support +CONFIG_PM_DEVFREQ y +CONFIG_DEVFREQ_GOV_SIMPLE_ONDEMAND y +CONFIG_DEVFREQ_GOV_PERFORMANCE y +CONFIG_DEVFREQ_GOV_POWERSAVE y +CONFIG_DEVFREQ_GOV_USERSPACE y +CONFIG_ARM_EXYNOS5_BUS_DEVFREQ p policy<{'armhf': 'n'}> + +# Menu: Device Drivers >> Generic Target Core Mod (TCM) and ConfigFS Infrastructure + +# Menu: Device Drivers >> Generic Thermal sysfs driver +CONFIG_THERMAL y +CONFIG_THERMAL_HWMON y +CONFIG_THERMAL_OF p policy<{'arm64': 'y', 'armhf': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_THERMAL_GOV_FAIR_SHARE y +CONFIG_THERMAL_GOV_STEP_WISE y +CONFIG_THERMAL_GOV_BANG_BANG y +CONFIG_THERMAL_GOV_USER_SPACE y +CONFIG_CPU_THERMAL p policy<{'arm64': 'y', 'armhf': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_CLOCK_THERMAL p policy<{'arm64': 'n', 'armhf': 'n', 'powerpc-powerpc64-emb': 'n', 'powerpc-powerpc-e500mc': 'n'}> +CONFIG_THERMAL_EMULATION y +CONFIG_ARMADA_THERMAL p policy<{'armhf': 'y'}> +CONFIG_TEGRA_SOCTHERM p policy<{'armhf-generic': 'n'}> + +# Menu: Device Drivers >> Generic Thermal sysfs driver >> Default Thermal governor +CONFIG_THERMAL_DEFAULT_GOV_STEP_WISE y + +# Menu: Device Drivers >> Generic Thermal sysfs driver >> STMicroelectronics thermal drivers + +# Menu: Device Drivers >> Generic Thermal sysfs driver >> Samsung thermal drivers +CONFIG_EXYNOS_THERMAL p policy<{'armhf': 'y'}> +CONFIG_EXYNOS_THERMAL_CORE p policy<{'armhf': 'y'}> + +# Menu: Device Drivers >> Generic Thermal sysfs driver >> Texas Instruments thermal drivers + +# Menu: Device Drivers >> Generic Thermal sysfs driver >> Texas Instruments thermal drivers >> Texas Instruments SoCs temperature sensor driver +CONFIG_OMAP4_THERMAL y +CONFIG_DRA752_THERMAL y +CONFIG_TI_THERMAL y + +# Menu: Device Drivers >> Generic powercap sysfs driver +CONFIG_POWERCAP y + +# Menu: Device Drivers >> Graphics support +set +tree 'Device Drivers>>Graphics support' = - mark +set +all ?mark 'Graphics' ?flag EXPERIMENTAL ?type bool = n +set +all ?mark 'Graphics' ?flag EXPERIMENTAL ?type tristate = m note +set +all ?mark 'Graphics' !flag EXPERIMENTAL ?type tristate = m +set +pattern ^FB_[^_]+$ ?mark Graphics ?type bool !flag EXPERIMENTAL = y +set +pattern ^FB_[^_]+$ ?mark Graphics ?type bool ?flag EXPERIMENTAL = y note +set +pattern _(KMS|BACKLIGHT|I2C)$ ?mark Graphics ?type bool !flag EXPERIMENTAL = y +# +CONFIG_VGA_ARB y +CONFIG_VGA_ARB_MAX_GPUS 16 +CONFIG_VGA_SWITCHEROO y +CONFIG_TEGRA_HOST1X_FIREWALL y + +# Menu: Device Drivers >> Graphics support >> /dev/agpgart (AGP Support) +CONFIG_AGP y note mark +CONFIG_AGP_AMD64 y note +CONFIG_AGP_INTEL y note +CONFIG_AGP_VIA y note +CONFIG_AGP_AMD y note +CONFIG_AGP_NVIDIA y note + +# Menu: Device Drivers >> Graphics support >> Backlight & LCD device support +CONFIG_BACKLIGHT_LCD_SUPPORT y + +# Menu: Device Drivers >> Graphics support >> Backlight & LCD device support >> Lowlevel Backlight controls +CONFIG_BACKLIGHT_CLASS_DEVICE y + +# Menu: Device Drivers >> Graphics support >> Backlight & LCD device support >> Lowlevel LCD controls + +# Menu: Device Drivers >> Graphics support >> Bootup logo +CONFIG_LOGO n + +# Menu: Device Drivers >> Graphics support >> Console display driver support +CONFIG_VGA_CONSOLE y +CONFIG_VGACON_SOFT_SCROLLBACK n +CONFIG_FRAMEBUFFER_CONSOLE y mark note +CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY y +CONFIG_FRAMEBUFFER_CONSOLE_ROTATION y + +# Menu: Device Drivers >> Graphics support >> Direct Rendering Manager +CONFIG_DRM_LOAD_EDID_FIRMWARE y + +# Menu: Device Drivers >> Graphics support >> Direct Rendering Manager >> Direct Rendering Manager (XFree86 4.1.0 and higher DRI support) +CONFIG_DRM m +CONFIG_DRM_VMWGFX_FBCON y +CONFIG_DRM_RCAR_LVDS y +CONFIG_DRM_OMAP n +CONFIG_DRM_MSM_FBDEV n +CONFIG_DRM_MSM_REGISTER_LOGGING y +#CONFIG_DRM_MGAG200 n mark note +CONFIG_DRM_BOCHS n note +CONFIG_DRM_RCAR_HDMI y +CONFIG_DRM_STI n note + +# Menu: Device Drivers >> Graphics support >> Direct Rendering Manager >> Direct Rendering Manager (XFree86 4.1.0 and higher DRI support) >> DRM Support for Freescale i.MX + +# Menu: Device Drivers >> Graphics support >> Direct Rendering Manager >> Direct Rendering Manager (XFree86 4.1.0 and higher DRI support) >> DRM Support for Samsung SoC EXYNOS Series +CONFIG_DRM_EXYNOS_IOMMU p policy<{'armhf': 'n'}> +CONFIG_DRM_EXYNOS_DMABUF p policy<{'armhf': 'n'}> +CONFIG_DRM_EXYNOS_HDMI p policy<{'armhf': 'n'}> +CONFIG_DRM_EXYNOS_VIDI p policy<{'armhf': 'n'}> +CONFIG_DRM_EXYNOS_G2D p policy<{'armhf': 'n'}> + +# Menu: Device Drivers >> Graphics support >> Direct Rendering Manager >> Direct Rendering Manager (XFree86 4.1.0 and higher DRI support) >> DRM Support for Samsung SoC EXYNOS Series >> Exynos DRM FIMD +CONFIG_DRM_EXYNOS_FIMD p policy<{'armhf': 'n'}> + +# Menu: Device Drivers >> Graphics support >> Direct Rendering Manager >> Direct Rendering Manager (XFree86 4.1.0 and higher DRI support) >> DRM Support for Samsung SoC EXYNOS Series >> Exynos DRM IPP +CONFIG_DRM_EXYNOS_IPP p policy<{'armhf': 'n'}> + +# Menu: Device Drivers >> Graphics support >> Direct Rendering Manager >> Direct Rendering Manager (XFree86 4.1.0 and higher DRI support) >> Display Panels + +# Menu: Device Drivers >> Graphics support >> Direct Rendering Manager >> Direct Rendering Manager (XFree86 4.1.0 and higher DRI support) >> I2C encoder or helper chips + +# Menu: Device Drivers >> Graphics support >> Direct Rendering Manager >> Direct Rendering Manager (XFree86 4.1.0 and higher DRI support) >> Intel 8xx/9xx/G3x/G4x/HD Graphics +CONFIG_DRM_I915_FBDEV y +CONFIG_DRM_I915_PRELIMINARY_HW_SUPPORT n note + +# Menu: Device Drivers >> Graphics support >> Direct Rendering Manager >> Direct Rendering Manager (XFree86 4.1.0 and higher DRI support) >> Intel GMA5/600 KMS Framebuffer +CONFIG_DRM_GMA600 y +CONFIG_DRM_GMA3600 y +CONFIG_DRM_MEDFIELD y + +# Menu: Device Drivers >> Graphics support >> Direct Rendering Manager >> Direct Rendering Manager (XFree86 4.1.0 and higher DRI support) >> NVIDIA Tegra DRM +CONFIG_DRM_TEGRA_FBDEV y +CONFIG_DRM_TEGRA_STAGING p policy<{'armhf': 'y'}> + +# Menu: Device Drivers >> Graphics support >> Direct Rendering Manager >> Direct Rendering Manager (XFree86 4.1.0 and higher DRI support) >> Nouveau (NVIDIA) cards +CONFIG_NOUVEAU_DEBUG 5 +CONFIG_NOUVEAU_DEBUG_DEFAULT 3 + +# Menu: Device Drivers >> Graphics support >> Frame buffer Devices + +# Menu: Device Drivers >> Graphics support >> Frame buffer Devices >> Exynos Video driver support +CONFIG_EXYNOS_VIDEO p policy<{'armhf': 'y'}> +CONFIG_EXYNOS_MIPI_DSI p policy<{'armhf': 'y'}> + +# Menu: Device Drivers >> Graphics support >> Frame buffer Devices >> Marvell MMP Display Subsystem support + +# Menu: Device Drivers >> Graphics support >> Frame buffer Devices >> OMAP Display Device Drivers (new device model) +CONFIG_DISPLAY_ENCODER_TPD12S015 y +CONFIG_DISPLAY_CONNECTOR_HDMI y + +# Menu: Device Drivers >> Graphics support >> Frame buffer Devices >> OMAP2+ Display Subsystem support +CONFIG_OMAP2_DSS p policy<{'armhf': 'y'}> +CONFIG_OMAP2_DSS_DEBUGFS p policy<{'armhf': 'n'}> +CONFIG_OMAP2_DSS_DPI p policy<{'armhf': 'y'}> +CONFIG_OMAP2_DSS_VENC p policy<{'armhf': 'y'}> +CONFIG_OMAP4_DSS_HDMI p policy<{'armhf': 'y'}> +CONFIG_OMAP5_DSS_HDMI p policy<{'armhf': 'y'}> +CONFIG_OMAP2_DSS_SDI p policy<{'armhf': 'y'}> +CONFIG_OMAP2_DSS_DSI p policy<{'armhf': 'n'}> +CONFIG_OMAP2_DSS_MIN_FCK_PER_PCK D +CONFIG_OMAP2_DSS_SLEEP_AFTER_VENC_RESET p policy<{'armhf': 'y'}> + +# Menu: Device Drivers >> Graphics support >> Frame buffer Devices >> Support for frame buffer devices +#CONFIG_FB_RADEON p policy<(arch powerpc &/ value y) | value m> note +#CONFIG_FB_3DFX p policy<(arch powerpc &/ value y) | value m> note +#CONFIG_FB_3DFX_ACCEL y +CONFIG_FB y +CONFIG_FIRMWARE_EDID y +CONFIG_FB_MODE_HELPERS y +CONFIG_FB_TILEBLITTING y +CONFIG_FB_PM2_FIFO_DISCONNECT y +CONFIG_FB_ARMCLCD y +CONFIG_FB_CYBER2000_DDC y +CONFIG_FB_I810_GTF n +CONFIG_FB_ATY128 p policy<(arch powerpc &/ value y) | value m> note +CONFIG_FB_S3_DDC y +CONFIG_FB_SAVAGE_ACCEL n +CONFIG_FB_SIS_300 y +CONFIG_FB_SIS_315 y +CONFIG_FB_VIA_X_COMPATIBILITY y +CONFIG_FB_3DFX_ACCEL n +CONFIG_FB_3DFX_I2C n +CONFIG_FB_VOODOO1 p policy<(arch powerpc &/ value y) | value m> note +CONFIG_FB_TMIO_ACCELL y +CONFIG_FB_VIRTUAL n flag +CONFIG_FB_UDL p policy<(arch powerpc & flavour powerpc64-emb powerpc-e500mc &/ value y) | value m> +CONFIG_FB_IBM_GXT4500 p policy<(arch ppc64el &/ value y) | value m> +CONFIG_FB_PS3 p policy<(arch powerpc &/ value y) | value m> +CONFIG_FB_PS3_DEFAULT_SIZE_M D +CONFIG_FB_MX3 p policy<(arch armhf &/ value y) | value m> + +# 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_CT y +CONFIG_FB_ATY_GENERIC_LCD n +CONFIG_FB_ATY_GX y + +# Menu: Device Drivers >> Graphics support >> Frame buffer Devices >> Support for frame buffer devices >> ATI Radeon display support + +# 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 y + +# Menu: Device Drivers >> Graphics support >> Frame buffer Devices >> Support for frame buffer devices >> Framebuffer foreign endianness support +CONFIG_FB_FOREIGN_ENDIAN 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 y + +# Menu: Device Drivers >> Graphics support >> Frame buffer Devices >> Support for frame buffer devices >> Matrox acceleration +CONFIG_FB_MATROX_MILLENIUM y +CONFIG_FB_MATROX_MYSTIQUE y +CONFIG_FB_MATROX_G y + +# 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_NUM_FBS D + +# 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 >> Size of ADV7393 frame buffer memory Single/Double Size + +# Menu: Device Drivers >> Graphics support >> Frame buffer Devices >> Support for frame buffer devices >> Video mode support + +# Menu: Device Drivers >> Graphics support >> Frame buffer Devices >> Support for frame buffer devices >> nVidia Framebuffer Support + +# Menu: Device Drivers >> Graphics support >> Frame buffer Devices >> Support for frame buffer devices >> nVidia Riva support + +# Menu: Device Drivers >> HID support +set +tree 'Device Drivers>>HID support' = - mark +# enable modular HID drivers by default +set +all ?mark 'HID' ?flag EXPERIMENTAL ?type bool = n +set +all ?mark 'HID' ?flag EXPERIMENTAL ?type tristate = m note` +set +all ?mark 'HID' !flag EXPERIMENTAL ?type tristate = m +# standard forms +set +pattern _FF$ ?mark HID ?type bool !flag EXPERIMENTAL = y + +# Menu: Device Drivers >> HID support >> HID bus support +CONFIG_HID_BATTERY_STRENGTH y +CONFIG_HIDRAW y + +# Menu: Device Drivers >> HID support >> HID bus support >> Special HID drivers + +# Menu: Device Drivers >> HID support >> HID bus support >> Special HID drivers >> Logitech devices + +# Menu: Device Drivers >> HID support >> HID bus support >> Special HID drivers >> PicoLCD (graphic version) +CONFIG_HID_PICOLCD_FB y +CONFIG_HID_PICOLCD_BACKLIGHT y +CONFIG_HID_PICOLCD_LCD y +CONFIG_HID_PICOLCD_LEDS y +CONFIG_HID_PICOLCD_CIR y + +# Menu: Device Drivers >> HID support >> I2C HID support + +# Menu: Device Drivers >> HID support >> USB HID support +CONFIG_HID_PID y + +# Menu: Device Drivers >> HID support >> USB HID support >> USB HID transport layer +CONFIG_USB_HIDDEV y + +# Menu: Device Drivers >> HID support >> USB HID support >> USB HID transport layer >> USB HID Boot Protocol drivers + +# Menu: Device Drivers >> HSI support + +# Menu: Device Drivers >> Hardware Monitoring support +CONFIG_HWMON y mark +CONFIG_HWMON y mark mark +CONFIG_HWMON y + +# Menu: Device Drivers >> Hardware Monitoring support >> PMBus support +CONFIG_SENSORS_LTC2978_REGULATOR y + +# Menu: Device Drivers >> Hardware Spinlock drivers +#CONFIG_HWSPINLOCK_OMAP y note + +# Menu: Device Drivers >> I2C support + +# Menu: Device Drivers >> I2C support >> I2C support +CONFIG_I2C y +CONFIG_I2C_CHARDEV y note +CONFIG_I2C_COMPAT y mark +CONFIG_I2C_HELPER_AUTO y +CONFIG_I2C_SLAVE y +CONFIG_ACPI_I2C_OPREGION p policy<{'amd64': 'n', 'i386': 'n'}> + +# Menu: Device Drivers >> I2C support >> I2C support >> I2C Algorithms + +# Menu: Device Drivers >> I2C support >> I2C support >> I2C Hardware Bus support +CONFIG_I2C_POWERMAC p policy<{'powerpc-powerpc64-smp': 'y', 'powerpc-powerpc-smp': 'y'}> +CONFIG_I2C_IMX p policy<{'armhf-generic': 'y'}> +CONFIG_I2C_OMAP p policy<{'armhf': 'y'}> +CONFIG_I2C_S3C2410 p policy<{'armhf': 'y'}> +CONFIG_I2C_OPAL p policy<{'powerpc-powerpc64-smp': 'y', 'ppc64el': 'y'}> + +# Menu: Device Drivers >> I2C support >> I2C support >> I2C bus multiplexing support + +# Menu: Device Drivers >> I2C support >> I2C support >> I2C bus multiplexing support >> Multiplexer I2C Chip support + +# Menu: Device Drivers >> I2O device support +CONFIG_I2O_LCT_NOTIFY_ON_CHANGES y +CONFIG_I2O_EXT_ADAPTEC y +CONFIG_I2O_EXT_ADAPTEC_DMA64 y +CONFIG_I2O_CONFIG_OLD_IOCTL n + +# Menu: Device Drivers >> IEEE 1394 (FireWire) support + +# Menu: Device Drivers >> IEEE 1394 (FireWire) support >> FireWire driver stack + +# Menu: Device Drivers >> IOMMU Hardware Support +set +tree 'Device Drivers>>IOMMU Hardware Support' ?pattern _IOMMU$ ?type bool !flag EXPERIMENTAL = y +# +CONFIG_IOMMU_SUPPORT y +CONFIG_INTEL_IOMMU_DEFAULT_ON n note +CONFIG_AMD_IOMMU_STATS y +CONFIG_IRQ_REMAP y +CONFIG_TEGRA_IOMMU_GART y +CONFIG_TEGRA_IOMMU_SMMU y +CONFIG_IPMMU_VMSA y +CONFIG_ARM_SMMU n +CONFIG_FSL_PAMU n + +# Menu: Device Drivers >> IOMMU Hardware Support >> IPMMU/IPMMUI address space size +CONFIG_SHMOBILE_IOMMU_ADDRSIZE_2048MB y + +# Menu: Device Drivers >> ISDN support +CONFIG_ISDN y +CONFIG_HYSDN_CAPI y + +# Menu: Device Drivers >> ISDN support >> CAPI 2.0 subsystem +CONFIG_CAPI_TRACE y +CONFIG_ISDN_CAPI_MIDDLEWARE y +CONFIG_ISDN_CAPI_CAPIDRV_VERBOSE n + +# Menu: Device Drivers >> ISDN support >> CAPI 2.0 subsystem >> Active AVM cards +CONFIG_CAPI_AVM y +CONFIG_ISDN_DRV_AVMB1_B1PCIV4 y + +# Menu: Device Drivers >> ISDN support >> CAPI 2.0 subsystem >> Active Eicon DIVA Server cards +CONFIG_CAPI_EICON y + +# Menu: Device Drivers >> ISDN support >> CAPI 2.0 subsystem >> Active Eicon DIVA Server cards >> Support Eicon DIVA Server cards +CONFIG_ISDN_DIVAS_BRIPCI y +CONFIG_ISDN_DIVAS_PRIPCI y + +# Menu: Device Drivers >> ISDN support >> Modular ISDN driver + +# Menu: Device Drivers >> ISDN support >> Old ISDN4Linux (deprecated) +CONFIG_ISDN_AUDIO y +CONFIG_ISDN_TTY_FAX y +CONFIG_ISDN_X25 y + +# Menu: Device Drivers >> ISDN support >> Old ISDN4Linux (deprecated) >> Active cards + +# Menu: Device Drivers >> ISDN support >> Old ISDN4Linux (deprecated) >> ISDN feature submodules + +# Menu: Device Drivers >> ISDN support >> Old ISDN4Linux (deprecated) >> Passive cards +set +tree 'Device Drivers>>ISDN support>>Old ISDN4Linux (deprecated)>>Passive cards' ?pattern '^HISAX_' !pattern '^HISAX_NO_' ?type bool = y + +# Menu: Device Drivers >> ISDN support >> Old ISDN4Linux (deprecated) >> Passive cards >> HiSax SiemensChipSet driver support +CONFIG_HISAX_MAX_CARDS D +CONFIG_HISAX_DEBUG n + +# Menu: Device Drivers >> ISDN support >> Old ISDN4Linux (deprecated) >> Passive cards >> HiSax SiemensChipSet driver support >> HiSax Support for EURO/DSS1 +CONFIG_DE_AOC y +CONFIG_HISAX_NO_SENDCOMPLETE n +CONFIG_HISAX_NO_LLC n +CONFIG_HISAX_NO_KEYPAD n + +# Menu: Device Drivers >> ISDN support >> Old ISDN4Linux (deprecated) >> Support synchronous PPP +CONFIG_ISDN_PPP y +CONFIG_ISDN_PPP_VJ y +CONFIG_ISDN_MPP y +CONFIG_IPPP_FILTER y + +# Menu: Device Drivers >> ISDN support >> Siemens Gigaset support +CONFIG_GIGASET_CAPI n + +# Menu: Device Drivers >> Industrial I/O support +CONFIG_IIO_BUFFER y +CONFIG_IIO_BUFFER_CB y + +# Menu: Device Drivers >> Industrial I/O support >> Accelerometers + +# Menu: Device Drivers >> Industrial I/O support >> Amplifiers + +# Menu: Device Drivers >> Industrial I/O support >> Analog to digital converters + +# Menu: Device Drivers >> Industrial I/O support >> Digital gyroscope sensors + +# Menu: Device Drivers >> Industrial I/O support >> Digital to analog converters + +# Menu: Device Drivers >> Industrial I/O support >> Enable triggered sampling support +CONFIG_IIO_TRIGGER y +CONFIG_IIO_CONSUMERS_PER_TRIGGER D + +# Menu: Device Drivers >> Industrial I/O support >> Enable triggered sampling support >> Triggers - standalone + +# 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 + +# Menu: Device Drivers >> Industrial I/O support >> Frequency Synthesizers DDS/PLL >> Phase-Locked Loop (PLL) frequency synthesizers + +# Menu: Device Drivers >> Industrial I/O support >> Hid Sensor IIO Common + +# Menu: Device Drivers >> Industrial I/O support >> Humidity sensors + +# Menu: Device Drivers >> Industrial I/O support >> Inclinometer sensors + +# Menu: Device Drivers >> Industrial I/O support >> Inertial measurement units + +# Menu: Device Drivers >> Industrial I/O support >> Light sensors + +# Menu: Device Drivers >> Industrial I/O support >> Lightning sensors + +# Menu: Device Drivers >> Industrial I/O support >> Magnetometer sensors + +# Menu: Device Drivers >> Industrial I/O support >> Pressure sensors + +# Menu: Device Drivers >> Industrial I/O support >> Temperature sensors + +# Menu: Device Drivers >> IndustryPack bus support + +# Menu: Device Drivers >> InfiniBand support +CONFIG_INFINIBAND_ON_DEMAND_PAGING y +CONFIG_INFINIBAND_QIB_DCA p policy<{'amd64': 'y'}> +CONFIG_INFINIBAND_IPOIB_CM y + +# Menu: Device Drivers >> Input device support + +# Menu: Device Drivers >> Input device support >> Generic input layer (needed for keyboard, mouse, ...) +set +tree 'Device Drivers,Input device support,INPUT' = - mark +set +all ?mark 'INPUT' ?flag EXPERIMENTAL ?type bool = n +set +all ?mark 'INPUT' ?flag EXPERIMENTAL ?type tristate = m note +set +all ?mark 'INPUT' !flag EXPERIMENTAL ?type tristate = m +set +pattern ^MOUSE_PS2_ ?mark INPUT ?type bool !flag EXPERIMENTAL = y +set +pattern ^TOUCHSCREEN_ ?mark INPUT ?type bool !flag EXPERIMENTAL = y +set +pattern _FF$ ?mark INPUT ?type bool !flag EXPERIMENTAL = y +# +CONFIG_INPUT y +CONFIG_INPUT_EVDEV y + +# Menu: Device Drivers >> Input device support >> Generic input layer (needed for keyboard, mouse, ...) >> Joysticks/Gamepads +CONFIG_INPUT_JOYSTICK y +CONFIG_JOYSTICK_IFORCE_USB y +CONFIG_JOYSTICK_IFORCE_232 y +CONFIG_JOYSTICK_XPAD_LEDS y + +# Menu: Device Drivers >> Input device support >> Generic input layer (needed for keyboard, mouse, ...) >> Keyboards +#CONFIG_KEYBOARD_OMAP4 p policy<(arch armel armhf &/ value y) | value m> note +#CONFIG_KEYBOARD_TWL4030 p policy<(arch armel armhf &/ value y) | value m> note +CONFIG_INPUT_KEYBOARD y +CONFIG_KEYBOARD_ATKBD y note + +# Menu: Device Drivers >> Input device support >> Generic input layer (needed for keyboard, mouse, ...) >> Mice +CONFIG_INPUT_MOUSE y +CONFIG_MOUSE_INPORT n note +CONFIG_MOUSE_ELAN_I2C_I2C y +CONFIG_MOUSE_ELAN_I2C_SMBUS y + +# Menu: Device Drivers >> Input device support >> Generic input layer (needed for keyboard, mouse, ...) >> Mice >> PS/2 mouse + +# Menu: Device Drivers >> Input device support >> Generic input layer (needed for keyboard, mouse, ...) >> Miscellaneous devices +CONFIG_INPUT_MISC y +CONFIG_INPUT_KXTJ9_POLLED_MODE n +CONFIG_INPUT_UINPUT y mark note + +# Menu: Device Drivers >> Input device support >> Generic input layer (needed for keyboard, mouse, ...) >> Mouse interface +CONFIG_INPUT_MOUSEDEV y +CONFIG_INPUT_MOUSEDEV_PSAUX y +CONFIG_INPUT_MOUSEDEV_SCREEN_X 1024 +CONFIG_INPUT_MOUSEDEV_SCREEN_Y 768 + +# Menu: Device Drivers >> Input device support >> Generic input layer (needed for keyboard, mouse, ...) >> Tablets +CONFIG_INPUT_TABLET y + +# Menu: Device Drivers >> Input device support >> Generic input layer (needed for keyboard, mouse, ...) >> Touchscreens +CONFIG_INPUT_TOUCHSCREEN y + +# Menu: Device Drivers >> Input device support >> Generic input layer (needed for keyboard, mouse, ...) >> Touchscreens >> Support for WM97xx AC97 touchscreen controllers + +# Menu: Device Drivers >> Input device support >> Generic input layer (needed for keyboard, mouse, ...) >> Touchscreens >> USB Touchscreen Driver + +# Menu: Device Drivers >> Input device support >> Hardware I/O ports +#CONFIG_SERIO_SERPORT p policy<(arch armhf &/ value y) | value m> note + +# Menu: Device Drivers >> Input device support >> Hardware I/O ports >> Gameport support + +# Menu: Device Drivers >> Input device support >> Hardware I/O ports >> Serial I/O support +CONFIG_SERIO y note +CONFIG_SERIO_I8042 y note +CONFIG_SERIO_LIBPS2 y note + +# Menu: Device Drivers >> LED Support +CONFIG_NEW_LEDS y + +# Menu: Device Drivers >> LED Support >> LED Class Support +#CONFIG_LEDS_GPIO p policy<(arch armel armhf &/ value y) | value m> note +#CONFIG_LEDS_PWM p policy<(arch armel armhf &/ value y) | value m> note +CONFIG_LEDS_CLASS y +CONFIG_LEDS_PCA9532_GPIO y +CONFIG_LEDS_ASIC3 y +CONFIG_LEDS_SYSCON y + +# Menu: Device Drivers >> LED Support >> LED Class Support >> LED Trigger support +#CONFIG_LEDS_TRIGGER_HEARTBEAT p policy<(arch armel armhf &/ value y) | value m> note +CONFIG_LEDS_TRIGGERS y +CONFIG_LEDS_TRIGGER_CPU y + +# Menu: Device Drivers >> MCB support + +# Menu: Device Drivers >> MMC/SD/SDIO card support +#CONFIG_MMC_OMAP p policy<(arch armel armhf &/ value y) | value m> note +CONFIG_MMC y +CONFIG_MMC_CLKGATE n +CONFIG_MMC_BLOCK p policy<(arch armel armhf arm64 &/ value y) | value m> note +CONFIG_MMC_BLOCK_MINORS D +CONFIG_MMC_BLOCK_BOUNCE D +CONFIG_MMC_CLKGATE D +CONFIG_MMC_ARMMMCI y +CONFIG_MMC_TEST n flag +CONFIG_MMC_OMAP_HS p policy<(arch armel armhf &/ value y) | value m> 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 p policy<(arch armel armhf highbank &/ value y) | value m> note +CONFIG_MMC_RICOH_MMC y +CONFIG_MMC_SDHCI_S3C_DMA p policy<{'armhf': 'y'}> + +# Menu: Device Drivers >> MMC/SD/SDIO card support >> Secure Digital Host Controller Interface support >> SDHCI platform and OF driver helper +CONFIG_MMC_SDHCI_PLTFM p policy<(arch armel armhf &/ value y) | value m> note +CONFIG_MMC_SDHCI_ESDHC_IMX y + +# Menu: Device Drivers >> MMC/SD/SDIO card support >> Synopsys DesignWare Memory Card Interface +CONFIG_MMC_DW_IDMAC y + +# Menu: Device Drivers >> Macintosh device drivers +# +CONFIG_MACINTOSH_DRIVERS y +CONFIG_PMAC_SMU p policy<{'powerpc': 'y'}> +CONFIG_PMAC_MEDIABAY p policy<{'powerpc': 'y'}> +CONFIG_THERM_ADT746X p mark policy<{'powerpc-powerpc-smp': 'y'}> note + +# Menu: Device Drivers >> Macintosh device drivers >> Apple Desktop Bus (ADB) support +CONFIG_ADB p policy<{'powerpc': 'y'}> +CONFIG_ADB_CUDA p policy<{'powerpc': 'y'}> +CONFIG_ADB_MACIO p policy<{'powerpc': 'y'}> +CONFIG_INPUT_ADBHID p policy<{'powerpc': 'y'}> + +# Menu: Device Drivers >> Macintosh device drivers >> New PowerMac thermal control infrastructure + +# Menu: Device Drivers >> Macintosh device drivers >> Support for PMU based PowerMacs +CONFIG_ADB_PMU p policy<{'powerpc': 'y'}> +CONFIG_ADB_PMU_LED p policy<{'powerpc': 'y'}> +CONFIG_PMAC_BACKLIGHT p policy<{'powerpc': 'y'}> +CONFIG_PMAC_BACKLIGHT_LEGACY p policy<{'powerpc': 'y'}> +CONFIG_SENSORS_AMS_PMU p policy<{'powerpc': 'n'}> +CONFIG_SENSORS_AMS_I2C p policy<{'powerpc': 'n'}> + +# Menu: Device Drivers >> Mailbox Hardware Support +CONFIG_MAILBOX y +CONFIG_PL320_MBOX p policy<{'arm64': 'y', 'armhf': 'y'}> +CONFIG_OMAP2PLUS_MBOX p policy<{'armhf': 'm'}> +CONFIG_OMAP_MBOX_KFIFO_SIZE p policy<{'armhf': '256'}> +CONFIG_PCC p policy<{'amd64': 'y', 'i386': 'y'}> + +# Menu: Device Drivers >> Memory Controller drivers +CONFIG_MEMORY y +CONFIG_TI_EMIF p policy<{'armhf': 'm'}> +CONFIG_MVEBU_DEVBUS p policy<{'armhf': 'y'}> +CONFIG_TEGRA20_MC p policy<{'armhf-generic': 'y'}> +CONFIG_FSL_CORENET_CF p policy<{'powerpc-powerpc64-emb': 'm', 'powerpc-powerpc-e500mc': 'm'}> +CONFIG_TEGRA_MC p policy<{'armhf-generic': 'y'}> + +# Menu: Device Drivers >> Memory Technology Device (MTD) support +CONFIG_MTD p policy<{'armhf': 'y', '*': 'm'}> note +CONFIG_MTD_CMDLINE_PARTS p policy<{'armhf': 'y', '*': 'm'}> mark +CONFIG_MTD_BLOCK p policy<{'armhf': 'y', '*': 'm'}> note +CONFIG_SM_FTL m note +CONFIG_MTD_OF_PARTS p policy<{'armhf': 'y', '*': 'm'}> note +CONFIG_NFTL_RW y +CONFIG_MTD_NAND_ECC_SMC n + +# Menu: Device Drivers >> Memory Technology Device (MTD) support >> Enable UBI - Unsorted block images +CONFIG_MTD_UBI_WL_THRESHOLD D +CONFIG_MTD_UBI_BEB_LIMIT D +CONFIG_MTD_UBI_FASTMAP y +CONFIG_MTD_UBI_BLOCK y + +# Menu: Device Drivers >> Memory Technology Device (MTD) support >> LPDDR & LPDDR2 PCM memory drivers + +# Menu: Device Drivers >> Memory Technology Device (MTD) support >> Mapping drivers for chip access +CONFIG_MTD_PHYSMAP_COMPAT 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 y +CONFIG_MTD_PCMCIA_ANONYMOUS n + +# Menu: Device Drivers >> Memory Technology Device (MTD) support >> NAND Device Support +CONFIG_MTD_NAND p policy<(arch armel armhf &/ value y) | value m> note +CONFIG_MTD_NAND_OMAP2 p policy<(arch armel armhf &/ value y) | value m> note +CONFIG_MTD_NAND_OMAP_BCH p policy<(arch armel armhf &/ value y) | value m> note +CONFIG_MTD_NAND_ECC_BCH y +CONFIG_MTD_NAND_DISKONCHIP_PROBE_ADVANCED n +CONFIG_MTD_NAND_DISKONCHIP_BBTWRITE n note + +# Menu: Device Drivers >> Memory Technology Device (MTD) support >> NAND Device Support >> NAND Flash support for Samsung S3C SoCs + +# Menu: Device Drivers >> Memory Technology Device (MTD) support >> OneNAND Device Support +CONFIG_MTD_ONENAND_VERIFY_WRITE y note +CONFIG_MTD_ONENAND_2X_PROGRAM y +CONFIG_MTD_ONENAND_OTP n mark + +# Menu: Device Drivers >> Memory Technology Device (MTD) support >> RAM/ROM/Flash chip drivers + +# Menu: Device Drivers >> Memory Technology Device (MTD) support >> RAM/ROM/Flash chip drivers >> Flash chip driver advanced configuration options +CONFIG_MTD_CFI_ADV_OPTIONS 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 D +CONFIG_MTD_MAP_BANK_WIDTH_2 D +CONFIG_MTD_MAP_BANK_WIDTH_4 D +CONFIG_MTD_MAP_BANK_WIDTH_8 D +CONFIG_MTD_MAP_BANK_WIDTH_16 D +CONFIG_MTD_MAP_BANK_WIDTH_32 D +CONFIG_MTD_CFI_I1 D +CONFIG_MTD_CFI_I2 D +CONFIG_MTD_CFI_I4 D +CONFIG_MTD_CFI_I8 D + +# Menu: Device Drivers >> Memory Technology Device (MTD) support >> RedBoot partition table parsing +CONFIG_MTD_REDBOOT_DIRECTORY_BLOCK -1 +CONFIG_MTD_REDBOOT_PARTS_UNALLOCATED n +CONFIG_MTD_REDBOOT_PARTS_READONLY n + +# Menu: Device Drivers >> Memory Technology Device (MTD) support >> SPI-NOR device support +CONFIG_MTD_SPI_NOR_USE_4K_SECTORS y +CONFIG_SPI_FSL_QUADSPI p policy<{'armhf-generic': 'm'}> + +# Menu: Device Drivers >> Memory Technology Device (MTD) support >> Self-contained MTD device drivers +CONFIG_MTD_PMC551_BUGFIX n +CONFIG_MTD_DATAFLASH_WRITE_VERIFY n +CONFIG_MTD_DATAFLASH_OTP y +CONFIG_MTDRAM_TOTAL_SIZE D +CONFIG_MTDRAM_ERASE_SIZE D + +# Menu: Device Drivers >> Microsoft Hyper-V guest support + +# Menu: Device Drivers >> Misc devices +CONFIG_CS5535_MFGPT n note +CONFIG_SRAM y +CONFIG_ARM_CHARLCD p policy<{'armhf': 'y'}> +CONFIG_VEXPRESS_SYSCFG p policy<{'armhf': 'y', 'arm64': 'y'}> + +# Menu: Device Drivers >> Misc devices >> EEPROM support + +# Menu: Device Drivers >> Misc devices >> GenWQE PCIe Accelerator +CONFIG_GENWQE p policy<{'amd64': 'm', 'arm64': 'm', 'powerpc-powerpc64-emb': 'm', 'powerpc-powerpc64-smp': 'm', 'ppc64el': 'm'}> +CONFIG_GENWQE_PLATFORM_ERROR_RECOVERY p policy<{'amd64': '0', 'arm64': '0', 'powerpc-powerpc64-emb': '0', 'powerpc-powerpc64-smp': '0', 'ppc64el': '0'}> + +# Menu: Device Drivers >> Misc devices >> Silicon Labs C2 port support + +# Menu: Device Drivers >> Misc devices >> Texas Instruments shared transport line discipline + +# Menu: Device Drivers >> Multifunction device drivers +set +tree 'Device Drivers>>Multifunction device drivers' ?pattern ^MFD_ ?type bool !flag EXPERIMENTAL = y +CONFIG_MFD_SM501 p policy<{'armhf': 'y', '*': 'm'}> note +CONFIG_MFD_OMAP_USB_HOST y +CONFIG_HTC_EGPIO p policy<{'armhf': 'y'}> +CONFIG_HTC_I2CPLD y +CONFIG_INTEL_SOC_PMIC y +CONFIG_ABX500_CORE y +CONFIG_AB3100_CORE y +CONFIG_TWL4030_CORE y +CONFIG_TWL4030_POWER y +CONFIG_TWL6040_CORE y +CONFIG_PMIC_ADP5520 y +CONFIG_PMIC_DA903X y +CONFIG_EZX_PCAP y + +# Menu: Device Drivers >> Multifunction device drivers >> Multimedia Capabilities Port drivers + +# Menu: Device Drivers >> Multifunction device drivers >> STMicroelectronics STMPE +CONFIG_MFD_STMPE y + +# Menu: Device Drivers >> Multifunction device drivers >> STMicroelectronics STMPE >> STMicroelectronics STMPE Interface Drivers +CONFIG_STMPE_I2C y +CONFIG_STMPE_SPI y + +# Menu: Device Drivers >> Multimedia support +#CONFIG_MEDIA_SUPPORT p policy<(arch armel armhf &/ value y) | value m> note +CONFIG_MEDIA_ANALOG_TV_SUPPORT y +CONFIG_MEDIA_DIGITAL_TV_SUPPORT y +CONFIG_MEDIA_RC_SUPPORT y +CONFIG_VIDEO_FIXED_MINOR_RANGES n +CONFIG_DVB_NET y +CONFIG_DVB_MAX_ADAPTERS 8 +CONFIG_DVB_DYNAMIC_MINORS y +CONFIG_SMS_SIANO_RC y +CONFIG_SMS_SIANO_DEBUGFS y + +# Menu: Device Drivers >> Multimedia support >> AM/FM radio receivers/transmitters support +CONFIG_MEDIA_RADIO_SUPPORT y + +# Menu: Device Drivers >> Multimedia support >> AM/FM radio receivers/transmitters support >> Radio Adapters +CONFIG_RADIO_ADAPTERS y +CONFIG_RADIO_SI470X y + +# Menu: Device Drivers >> Multimedia support >> AM/FM radio receivers/transmitters support >> Radio Adapters >> ISA radio devices +CONFIG_V4L_RADIO_ISA_DRIVERS y + +# Menu: Device Drivers >> Multimedia support >> AM/FM radio receivers/transmitters support >> Radio Adapters >> Silicon Labs Si4713 FM Radio with RDS Transmitter support + +# Menu: Device Drivers >> Multimedia support >> AM/FM radio receivers/transmitters support >> Radio Adapters >> Texas Instruments WL128x FM driver (ST based) + +# Menu: Device Drivers >> Multimedia support >> Cameras/video grabbers support +CONFIG_MEDIA_CAMERA_SUPPORT y +CONFIG_MEDIA_CONTROLLER y +CONFIG_VIDEO_V4L2_SUBDEV_API y + +# Menu: Device Drivers >> Multimedia support >> Cameras/video grabbers support >> Media test drivers +CONFIG_V4L_TEST_DRIVERS y + +# Menu: Device Drivers >> Multimedia support >> Cameras/video grabbers support >> Memory-to-memory multimedia devices +CONFIG_V4L_MEM2MEM_DRIVERS y + +# Menu: Device Drivers >> Multimedia support >> Cameras/video grabbers support >> V4L platform devices +CONFIG_V4L_PLATFORM_DRIVERS y + +# Menu: Device Drivers >> Multimedia support >> Cameras/video grabbers support >> V4L platform devices >> Samsung S5P/EXYNOS4 SoC series Camera Subsystem driver +CONFIG_VIDEO_SAMSUNG_EXYNOS4_IS p policy<{'armhf': 'n'}> + +# Menu: Device Drivers >> Multimedia support >> Cameras/video grabbers support >> V4L platform devices >> Samsung TV driver for S5P platform +CONFIG_VIDEO_SAMSUNG_S5P_TV p policy<{'armhf': 'y'}> + +# Menu: Device Drivers >> Multimedia support >> Cameras/video grabbers support >> V4L platform devices >> SoC camera support + +# Menu: Device Drivers >> Multimedia support >> Customise DVB Frontends +CONFIG_DVB_DUMMY_FE n note + +# Menu: Device Drivers >> Multimedia support >> Encoders, decoders, sensors and other helper chips + +# Menu: Device Drivers >> Multimedia support >> Media PCI Adapters +CONFIG_MEDIA_PCI_SUPPORT y +CONFIG_DVB_AV7110_OSD y + +# Menu: Device Drivers >> Multimedia support >> Media PCI Adapters >> Conexant 2388x (bt878 successor) support +CONFIG_VIDEO_CX88_ENABLE_VP3054 y + +# Menu: Device Drivers >> Multimedia support >> Media PCI Adapters >> Philips SAA7134 support +CONFIG_VIDEO_SAA7134_RC y + +# Menu: Device Drivers >> Multimedia support >> Media PCI Adapters >> SAA7146 DVB cards (aka Budget, Nova-PCI) + +# Menu: Device Drivers >> Multimedia support >> Media PCI Adapters >> Zoran ZR36060 + +# Menu: Device Drivers >> Multimedia support >> Media USB Adapters +CONFIG_MEDIA_USB_SUPPORT y +CONFIG_USB_VIDEO_CLASS_INPUT_EVDEV y +CONFIG_USB_PWC_INPUT_EVDEV y +CONFIG_VIDEO_PVRUSB2_SYSFS y +CONFIG_VIDEO_PVRUSB2_DVB y +CONFIG_VIDEO_PVRUSB2_DEBUGIFC n +CONFIG_VIDEO_STK1160_AC97 y +CONFIG_VIDEO_AU0828_V4L2 y +CONFIG_VIDEO_AU0828_RC y + +# Menu: Device Drivers >> Multimedia support >> Media USB Adapters >> Conexant cx231xx USB video capture support +CONFIG_VIDEO_CX231XX_RC y + +# Menu: Device Drivers >> Multimedia support >> Media USB Adapters >> Empia EM28xx USB devices support + +# Menu: Device Drivers >> Multimedia support >> Media USB Adapters >> GSPCA based webcams + +# Menu: Device Drivers >> Multimedia support >> Media USB Adapters >> Support for various USB DVB devices +CONFIG_DVB_USB_DIBUSB_MB_FAULTY n + +# Menu: Device Drivers >> Multimedia support >> Media USB Adapters >> Support for various USB DVB devices v2 + +# Menu: Device Drivers >> Multimedia support >> Remote Controller devices +CONFIG_RC_DEVICES y +CONFIG_IR_IMG_RAW n + +# Menu: Device Drivers >> Multimedia support >> Remote Controller devices >> Hardware decoder +CONFIG_IR_IMG_HW y +CONFIG_IR_IMG_NEC y +CONFIG_IR_IMG_JVC y +CONFIG_IR_IMG_SONY y +CONFIG_IR_IMG_SHARP y +CONFIG_IR_IMG_SANYO y + +# Menu: Device Drivers >> Multimedia support >> Remote controller decoders +CONFIG_RC_DECODERS y + +# Menu: Device Drivers >> Multimedia support >> Sensors used on soc_camera driver + +# Menu: Device Drivers >> Multimedia support >> Software defined radio support +CONFIG_MEDIA_SDR_SUPPORT y +CONFIG_MEDIA_SUBDRV_AUTOSELECT y + +# Menu: Device Drivers >> Multimedia support >> Software defined radio support >> Customize TV tuners + +# Menu: Device Drivers >> Multiple devices driver support (RAID and LVM) +set +tree 'Device Drivers>>MD' ?flag EXPERIMENTAL ?type bool = n +set +tree 'Device Drivers>>MD' ?flag EXPERIMENTAL ?type tristate = m note +set +tree 'Device Drivers>>MD' !flag EXPERIMENTAL ?type tristate = m +# +CONFIG_MD y + +# Menu: Device Drivers >> Multiple devices driver support (RAID and LVM) >> Device mapper support +CONFIG_BLK_DEV_DM y mark note +CONFIG_DM_UEVENT y + +# Menu: Device Drivers >> Multiple devices driver support (RAID and LVM) >> RAID support +CONFIG_BLK_DEV_MD y +CONFIG_MD_AUTODETECT y + +# Menu: Device Drivers >> Network device support +set +pattern '^NET_VENDOR_' = y +# +CONFIG_NETDEVICES y +CONFIG_FDDI y +CONFIG_HIPPI n note +CONFIG_XEN_NETDEV_FRONTEND y note +CONFIG_CAIF_SPI_SYNC n +CONFIG_DEFXX_MMIO n mark + +# Menu: Device Drivers >> Network device support >> ARCnet support + +# Menu: Device Drivers >> Network device support >> ARCnet support >> ARCnet COM20020 chipset driver + +# Menu: Device Drivers >> Network device support >> ATM drivers +CONFIG_ATM_DRIVERS y +CONFIG_ATM_NICSTAR_USE_SUNI n +CONFIG_ATM_NICSTAR_USE_IDT77105 n mark +CONFIG_ATM_IDT77252_RCV_ALL n +CONFIG_ATM_HE_USE_SUNI y + +# Menu: Device Drivers >> Network device support >> ATM drivers >> FORE Systems 200E-series +CONFIG_ATM_FORE200E_USE_TASKLET n +CONFIG_ATM_FORE200E_TX_RETRY D +CONFIG_ATM_FORE200E_DEBUG D + +# Menu: Device Drivers >> Network device support >> ATM drivers >> Fine-tune burst settings +CONFIG_ATM_ENI_TUNE_BURST n + +# Menu: Device Drivers >> Network device support >> Distributed Switch Architecture drivers + +# Menu: Device Drivers >> Network device support >> Ethernet driver support +set +tree 'Device Drivers>>Network device support>>Ethernet driver support' ?pattern '.*_DCA' ?type bool = y +set +tree 'Device Drivers>>Network device support>>Ethernet driver support' ?pattern '.*_DCB' ?type bool = y +set +tree 'Device Drivers>>Network device support>>Ethernet driver support' ?pattern '.*_VXLAN' ?type bool = y +# +CONFIG_ETHERNET y +CONFIG_NET_VENDOR_ADAPTEC y +CONFIG_NET_VENDOR_AGERE y +CONFIG_NET_VENDOR_ALTEON y +CONFIG_ACENIC_OMIT_TIGON_I n +CONFIG_NET_XGENE p policy<{'amd64': 'n', 'arm64': 'm', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_NET_VENDOR_ARC y +CONFIG_ARC_EMAC p policy<{'arm64': 'm', 'armhf': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_EMAC_ROCKCHIP p policy<{'arm64': 'm', 'armhf': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_NET_CADENCE p policy<{'armhf': 'y'}> +CONFIG_NET_VENDOR_BROCADE y +CONFIG_NET_CALXEDA_XGMAC p policy<{'armhf': 'm'}> +CONFIG_NET_VENDOR_CISCO y +CONFIG_CX_ECAT p policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_DM9000 p policy<{'armhf': 'm'}> +CONFIG_DM9000_FORCE_SIMPLE_PHY_POLL p policy<{'armhf': 'n'}> +CONFIG_NET_VENDOR_DEC y +CONFIG_NET_VENDOR_DLINK y +CONFIG_SUNDANCE_MMIO n +CONFIG_NET_VENDOR_EMULEX y +CONFIG_BE2NET_VXLAN y +CONFIG_NET_VENDOR_EXAR y +CONFIG_VXGE_DEBUG_TRACE_ALL n +CONFIG_NET_VENDOR_FARADAY p policy<{'armhf': 'y'}> +CONFIG_FTMAC100 p policy<{'armhf': 'm'}> +CONFIG_FTGMAC100 p policy<{'armhf': 'm'}> +CONFIG_NET_VENDOR_FUJITSU p policy<{'amd64': 'y', 'i386': 'y', 'powerpc': 'y'}> +CONFIG_PCMCIA_FMVJ18X p policy<{'amd64': 'm', 'i386': 'm', 'powerpc': 'm'}> +CONFIG_NET_VENDOR_HISILICON p policy<{'armhf': 'y'}> +CONFIG_HIX5HD2_GMAC p policy<{'armhf': 'm'}> +CONFIG_NET_VENDOR_HP y +CONFIG_NET_VENDOR_MELLANOX y +CONFIG_MLX4_EN_DCB y +CONFIG_MLX4_EN_VXLAN y +CONFIG_MLX4_DEBUG y +CONFIG_NET_VENDOR_MICROCHIP y +CONFIG_ENC28J60_WRITEVERIFY n +CONFIG_NET_VENDOR_MYRI y +CONFIG_MYRI10GE_DCA p policy<{'amd64': 'y', 'i386': 'y'}> +CONFIG_NET_VENDOR_NVIDIA y +CONFIG_NET_VENDOR_OKI y +CONFIG_PCH_GBE p policy<{'i386': 'm'}> +CONFIG_NET_PACKET_ENGINE y +CONFIG_NET_VENDOR_PASEMI p policy<{'powerpc-powerpc64-smp': 'y'}> +CONFIG_PASEMI_MAC p policy<{'powerpc-powerpc64-smp': 'n'}> +CONFIG_NET_VENDOR_QUALCOMM y +CONFIG_QCA7000 p policy<{'arm64': 'm', 'armhf': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SH_ETH p policy<{'armhf': 'm'}> +CONFIG_NET_VENDOR_RDC 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_STMICRO y +CONFIG_STMMAC_PCI n +CONFIG_NET_VENDOR_TEHUTI y +CONFIG_NET_VENDOR_VIA y +CONFIG_VIA_RHINE_MMIO y +CONFIG_NET_VENDOR_WIZNET y +CONFIG_NET_VENDOR_XIRCOM p policy<{'amd64': 'y', 'i386': 'y', 'powerpc': 'y'}> +CONFIG_PCMCIA_XIRC2PS p policy<{'amd64': 'm', 'i386': 'm', 'powerpc': 'm'}> + +# Menu: Device Drivers >> Network device support >> Ethernet driver support >> 3Com devices + +# Menu: Device Drivers >> Network device support >> Ethernet driver support >> AMD devices + +# Menu: Device Drivers >> Network device support >> Ethernet driver support >> Apple devices +CONFIG_MACE_AAUI_PORT n + +# Menu: Device Drivers >> Network device support >> Ethernet driver support >> Atheros devices + +# Menu: Device Drivers >> Network device support >> Ethernet driver support >> Blackfin on-chip MAC support + +# Menu: Device Drivers >> Network device support >> Ethernet driver support >> Broadcom devices +CONFIG_TIGON3 p policy<{'ppc64el': 'y', '*': 'm'}> mark +CONFIG_BNX2X_SRIOV y + +# Menu: Device Drivers >> Network device support >> Ethernet driver support >> Chelsio devices +CONFIG_CHELSIO_T1_1G y + +# Menu: Device Drivers >> Network device support >> Ethernet driver support >> Cirrus devices +CONFIG_CS89x0_PLATFORM y + +# Menu: Device Drivers >> Network device support >> Ethernet driver support >> DEC - Tulip devices +CONFIG_NET_TULIP y +CONFIG_DE2104X_DSL D + +# Menu: Device Drivers >> Network device support >> Ethernet driver support >> DEC - Tulip devices >> DECchip Tulip (dc2114x) PCI support +CONFIG_TULIP_MWI n +CONFIG_TULIP_MMIO n +CONFIG_TULIP_NAPI n mark + +# Menu: Device Drivers >> Network device support >> Ethernet driver support >> Freescale devices +CONFIG_FEC p policy<{'armhf': 'y'}> +CONFIG_FSL_XGMAC_MDIO p policy<{'powerpc': 'y'}> + +# Menu: Device Drivers >> Network device support >> Ethernet driver support >> Freescale devices >> Freescale Ethernet Driver +CONFIG_FS_ENET_HAS_SCC y +CONFIG_FS_ENET_HAS_FCC y + +# Menu: Device Drivers >> Network device support >> Ethernet driver support >> IBM devices +CONFIG_IBMVETH p policy<{'ppc64el': 'y', 'powerpc': 'm'}> +CONFIG_EHEA p policy<{'ppc64el': 'y'}> + +# 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 + +# Menu: Device Drivers >> Network device support >> Ethernet driver support >> Intel devices +CONFIG_IGB_HWMON y + +# Menu: Device Drivers >> Network device support >> Ethernet driver support >> Intel devices >> Intel(R) 10GbE PCI Express adapters support +CONFIG_IXGBE_HWMON y + +# Menu: Device Drivers >> Network device support >> Ethernet driver support >> Intel devices >> Intel(R) Ethernet Controller XL710 Family support +CONFIG_I40E_FCOE y + +# Menu: Device Drivers >> Network device support >> Ethernet driver support >> Marvell devices +CONFIG_SKGE_GENESIS y + +# Menu: Device Drivers >> Network device support >> Ethernet driver support >> Micrel devices + +# Menu: Device Drivers >> Network device support >> Ethernet driver support >> National Semi-conductor 8390 devices +CONFIG_AX88796_93CX6 n + +# Menu: Device Drivers >> Network device support >> Ethernet driver support >> National Semi-conductor devices + +# Menu: Device Drivers >> Network device support >> Ethernet driver support >> QLogic devices + +# Menu: Device Drivers >> Network device support >> Ethernet driver support >> QLogic devices >> QLOGIC QLCNIC 1/10Gb Converged Ethernet NIC Support +CONFIG_QLCNIC_SRIOV y +CONFIG_QLCNIC_HWMON y + +# Menu: Device Drivers >> Network device support >> Ethernet driver support >> Realtek devices + +# Menu: Device Drivers >> Network device support >> Ethernet driver support >> Realtek devices >> RealTek RTL-8129/8130/8139 PCI Fast Ethernet Adapter support +CONFIG_8139TOO_PIO y +CONFIG_8139TOO_TUNE_TWISTER n mark +CONFIG_8139TOO_8129 y +CONFIG_8139_OLD_RX_RESET n + +# Menu: Device Drivers >> Network device support >> Ethernet driver support >> SMC (SMSC)/Western Digital devices +CONFIG_SMC91X p policy<{'arm64': 'y', 'armhf': 'm'}> + +# Menu: Device Drivers >> Network device support >> Ethernet driver support >> Solarflare SFC4000/SFC9000/SFC9100-family support +CONFIG_SFC_MTD y +CONFIG_SFC_MCDI_MON y +CONFIG_SFC_SRIOV y + +# Menu: Device Drivers >> Network device support >> Ethernet driver support >> Sun devices + +# Menu: Device Drivers >> Network device support >> Ethernet driver support >> Texas Instruments (TI) devices +CONFIG_TI_DAVINCI_MDIO p policy<{'armhf': 'y'}> +CONFIG_TI_DAVINCI_CPDMA p policy<{'armhf': 'y'}> +CONFIG_TI_CPSW_PHY_SEL y +CONFIG_TI_CPSW p policy<{'armhf': 'y'}> +CONFIG_TI_CPTS y + +# Menu: Device Drivers >> Network device support >> Ethernet driver support >> Toshiba devices +CONFIG_GELIC_WIRELESS y + +# Menu: Device Drivers >> Network device support >> Ethernet driver support >> WIZnet interface mode +CONFIG_WIZNET_BUS_ANY y + +# Menu: Device Drivers >> Network device support >> Ethernet driver support >> Xilinx devices + +# Menu: Device Drivers >> Network device support >> IEEE 802.15.4 drivers + +# Menu: Device Drivers >> Network device support >> Network core driver support +CONFIG_NET_CORE y +CONFIG_NET_FC y +CONFIG_NETCONSOLE_DYNAMIC y +CONFIG_TUN y +CONFIG_RIONET_TX_SIZE D +CONFIG_RIONET_RX_SIZE D +CONFIG_VIRTIO_NET y note + +# Menu: Device Drivers >> Network device support >> Network core driver support >> Ethernet team driver support + +# Menu: Device Drivers >> Network device support >> PHY Device support and infrastructure +set +tree 'Device Drivers>>Network device support>>PHY Device support and infrastructure' ?flag EXPERIMENTAL ?type bool = n +set +tree 'Device Drivers>>Network device support>>PHY Device support and infrastructure' ?flag EXPERIMENTAL ?type tristate = m note +set +tree 'Device Drivers>>Network device support>>PHY Device support and infrastructure' !flag EXPERIMENTAL ?type tristate = m +# +CONFIG_PHYLIB y +CONFIG_STE10XP m +CONFIG_FIXED_PHY y + +# Menu: Device Drivers >> Network device support >> PPP (point-to-point protocol) support +CONFIG_PPP y +CONFIG_PPP_FILTER y +CONFIG_PPP_MULTILINK y + +# Menu: Device Drivers >> Network device support >> S/390 network device drivers + +# Menu: Device Drivers >> Network device support >> SLIP (serial line) support +CONFIG_SLIP_COMPRESSED y +CONFIG_SLIP_SMART y +CONFIG_SLIP_MODE_SLIP6 y + +# Menu: Device Drivers >> Network device support >> USB Network Adapters + +# Menu: Device Drivers >> Network device support >> USB Network Adapters >> Multi-purpose USB Networking Framework + +# Menu: Device Drivers >> Network device support >> USB Network Adapters >> Multi-purpose USB Networking Framework >> Simple USB Network Links (CDC Ethernet subset) +CONFIG_USB_KC2190 y +CONFIG_USB_ALI_M5632 y +CONFIG_USB_AN2720 y +CONFIG_USB_BELKIN y +CONFIG_USB_ARMLINUX y +CONFIG_USB_EPSON2888 y + +# Menu: Device Drivers >> Network device support >> Wan interfaces support +CONFIG_WAN y +CONFIG_DLCI_MAX 8 +CONFIG_SBNI_MULTILINE n + +# Menu: Device Drivers >> Network device support >> Wan interfaces support >> Generic HDLC layer +CONFIG_DSCC4_PCISYNC y +CONFIG_DSCC4_PCI_RST y + +# Menu: Device Drivers >> Network device support >> WiMAX Wireless Broadband devices +CONFIG_WIMAX_I2400M_DEBUG_LEVEL D + +# Menu: Device Drivers >> Network device support >> Wireless LAN +CONFIG_WLAN y +CONFIG_IPW2100_MONITOR y + +# Menu: Device Drivers >> Network device support >> Wireless LAN >> Atheros Wireless Cards +CONFIG_ATH_DEBUG n +CONFIG_ATH5K_PCI y +CONFIG_ATH9K_BTCOEX_SUPPORT y +CONFIG_ATH9K_HTC_DEBUGFS y +CONFIG_WCN36XX_DEBUGFS n + +# Menu: Device Drivers >> Network device support >> Wireless LAN >> Atheros Wireless Cards >> Atheros 5xxx wireless cards support +CONFIG_ATH5K_DEBUG n +CONFIG_ATH5K_TRACER n + +# Menu: Device Drivers >> Network device support >> Wireless LAN >> Atheros Wireless Cards >> Atheros 802.11ac wireless cards support +CONFIG_ATH10K_DEBUG n +CONFIG_ATH10K_DEBUGFS y +CONFIG_ATH10K_TRACING y + +# Menu: Device Drivers >> Network device support >> Wireless LAN >> Atheros Wireless Cards >> Atheros 802.11n wireless cards support +CONFIG_ATH9K_PCI y +CONFIG_ATH9K_AHB y +CONFIG_ATH9K_DEBUGFS y +CONFIG_ATH9K_STATION_STATISTICS y +CONFIG_ATH9K_DYNACK n +CONFIG_ATH9K_WOW y +CONFIG_ATH9K_RFKILL y +CONFIG_ATH9K_CHANNEL_CONTEXT y +CONFIG_ATH9K_PCOEM y + +# Menu: Device Drivers >> Network device support >> Wireless LAN >> Atheros Wireless Cards >> Atheros mobile chipsets support +CONFIG_ATH6KL_USB m note +CONFIG_ATH6KL_TRACING n + +# Menu: Device Drivers >> Network device support >> Wireless LAN >> Atheros Wireless Cards >> Linux Community AR9170 802.11n USB support +CONFIG_CARL9170_LEDS y +CONFIG_CARL9170_DEBUGFS n +CONFIG_CARL9170_HWRNG y + +# Menu: Device Drivers >> Network device support >> Wireless LAN >> Atheros Wireless Cards >> Wilocity 60g WiFi card wil6210 support +CONFIG_WIL6210_ISR_COR y +CONFIG_WIL6210_TRACING y + +# Menu: Device Drivers >> Network device support >> Wireless LAN >> Broadcom 43xx wireless support (mac80211 stack) +CONFIG_B43_PCMCIA n +CONFIG_B43_SDIO n +CONFIG_B43_PHY_G y +CONFIG_B43_PHY_N y +CONFIG_B43_PHY_LP y +CONFIG_B43_PHY_HT y + +# Menu: Device Drivers >> Network device support >> Wireless LAN >> Broadcom 43xx wireless support (mac80211 stack) >> Supported bus types +CONFIG_B43_BUSES_BCMA_AND_SSB y + +# Menu: Device Drivers >> Network device support >> Wireless LAN >> Broadcom 43xx-legacy data transfer mode +CONFIG_B43LEGACY_DMA_AND_PIO_MODE y + +# Menu: Device Drivers >> Network device support >> Wireless LAN >> Broadcom IEEE802.11n embedded FullMAC WLAN driver +CONFIG_BRCMFMAC_SDIO y +CONFIG_BRCMFMAC_USB y +CONFIG_BRCMFMAC_PCIE y +CONFIG_BRCM_TRACING y +CONFIG_BRCMDBG n flag + +# Menu: Device Drivers >> Network device support >> Wireless LAN >> Hermes chipset 802.11b support (Orinoco/Prism2/Symbol) +CONFIG_HERMES_PRISM n +CONFIG_HERMES_CACHE_FW_ON_INIT y + +# Menu: Device Drivers >> Network device support >> Wireless LAN >> IEEE 802.11 for Host AP (Prism2/2.5/3 and WEP/TKIP/CCMP) +CONFIG_HOSTAP_FIRMWARE y +CONFIG_HOSTAP_FIRMWARE_NVRAM y + +# Menu: Device Drivers >> Network device support >> Wireless LAN >> Intel PRO/Wireless 2200BG and 2915ABG Network Connection +CONFIG_IPW2200_MONITOR y +CONFIG_IPW2200_RADIOTAP y +CONFIG_IPW2200_PROMISCUOUS y +CONFIG_IPW2200_QOS y + +# Menu: Device Drivers >> Network device support >> Wireless LAN >> Intel Wireless WiFi Next Gen AGN - Wireless-N/Advanced-N/Ultimate-N (iwlwifi) +CONFIG_IWLWIFI_BCAST_FILTERING n +CONFIG_IWLWIFI_UAPSD n note + +# Menu: Device Drivers >> Network device support >> Wireless LAN >> Intel Wireless WiFi Next Gen AGN - Wireless-N/Advanced-N/Ultimate-N (iwlwifi) >> Debugging Options +CONFIG_IWLWIFI_DEBUGFS y +CONFIG_IWLWIFI_DEVICE_TRACING y + +# Menu: Device Drivers >> Network device support >> Wireless LAN >> Marvell 8xxx Libertas WLAN driver support +CONFIG_LIBERTAS_MESH y + +# Menu: Device Drivers >> Network device support >> Wireless LAN >> Marvell WiFi-Ex Driver + +# Menu: Device Drivers >> Network device support >> Wireless LAN >> Ralink driver support +CONFIG_RT2X00_LIB_DEBUGFS n + +# Menu: Device Drivers >> Network device support >> Wireless LAN >> Ralink driver support >> Ralink rt27xx/rt28xx/rt30xx (PCI/PCIe/PCMCIA) support +CONFIG_RT2800PCI_RT33XX y +CONFIG_RT2800PCI_RT35XX y +CONFIG_RT2800PCI_RT53XX y +CONFIG_RT2800PCI_RT3290 y + +# Menu: Device Drivers >> Network device support >> Wireless LAN >> Ralink driver support >> Ralink rt27xx/rt28xx/rt30xx (USB) support +CONFIG_RT2800USB_RT33XX y +CONFIG_RT2800USB_RT35XX y +CONFIG_RT2800USB_RT3573 y +CONFIG_RT2800USB_RT53XX y +CONFIG_RT2800USB_RT55XX y +CONFIG_RT2800USB_UNKNOWN y + +# Menu: Device Drivers >> Network device support >> Wireless LAN >> Realtek rtlwifi family of devices +CONFIG_RTL8192DE m note + +# Menu: Device Drivers >> Network device support >> Wireless LAN >> Redpine Signals Inc 91x WLAN driver support +CONFIG_RSI_DEBUGFS n + +# Menu: Device Drivers >> Network device support >> Wireless LAN >> Softmac Prism54 support +CONFIG_P54_SPI_DEFAULT_EEPROM n + +# Menu: Device Drivers >> Network device support >> Wireless LAN >> TI Wireless LAN support +CONFIG_WL_TI y +CONFIG_WILINK_PLATFORM_DATA y + +# Menu: Device Drivers >> Network device support >> Wireless LAN >> TI Wireless LAN support >> TI wl1251 driver support + +# Menu: Device Drivers >> Network device support >> Wireless LAN >> iwl3945 / iwl4965 Debugging Options +CONFIG_IWLEGACY_DEBUGFS y + +# Menu: Device Drivers >> PHY Subsystem +CONFIG_GENERIC_PHY y +CONFIG_PHY_EXYNOS_MIPI_VIDEO p policy<{'armhf': 'y'}> +CONFIG_PHY_EXYNOS_DP_VIDEO p policy<{'armhf': 'y'}> +CONFIG_PHY_EXYNOS5250_SATA p policy<{'armhf': 'y'}> +CONFIG_PHY_XGENE p policy<{'arm64': 'y'}> + +# Menu: Device Drivers >> PPS support + +# Menu: Device Drivers >> PPS support >> PPS support +CONFIG_PPS p policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'y', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'y'}> mark +CONFIG_PPS_CLIENT_KTIMER n flag + +# Menu: Device Drivers >> PTP clock support +CONFIG_PTP_1588_CLOCK p policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'y', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'y'}> mark + +# Menu: Device Drivers >> Parallel port support +CONFIG_PARPORT_1284 y + +# Menu: Device Drivers >> Parallel port support >> PC-style hardware +CONFIG_PARPORT_PC_FIFO y +CONFIG_PARPORT_PC_SUPERIO n + +# Menu: Device Drivers >> Pin controllers +set +tree 'Device Drivers>>Pin controllers' ?pattern '^PINCTRL_' ?type bool = y +CONFIG_PINMUX y +CONFIG_PINCONF y +CONFIG_PINCTRL_SINGLE y +CONFIG_GPIO_SH_PFC y + +# Menu: Device Drivers >> Pin controllers >> Nomadik pin controller driver + +# Menu: Device Drivers >> Pin controllers >> ST-Ericsson ABx500 family Mixed Signal Circuit gpio functions + +# Menu: Device Drivers >> Platform support for Chrome hardware +CONFIG_CHROME_PLATFORMS y + +# Menu: Device Drivers >> Plug and Play support +CONFIG_PNP y +CONFIG_ISAPNP y +CONFIG_PNPBIOS y +CONFIG_PNPBIOS_PROC_FS y + +# Menu: Device Drivers >> Power supply class support +CONFIG_POWER_SUPPLY y +CONFIG_BATTERY_BQ27X00_I2C y +CONFIG_BATTERY_BQ27X00_PLATFORM y +CONFIG_CHARGER_MANAGER y + +# Menu: Device Drivers >> Power supply class support >> Board level reset or power off +CONFIG_POWER_RESET y +CONFIG_POWER_RESET_AS3722 p policy<{'arm64': 'y', 'armhf': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_POWER_RESET_AXXIA p policy<{'armhf-generic-lpae': 'y'}> +CONFIG_POWER_RESET_BRCMSTB p policy<{'armhf': 'n'}> +CONFIG_POWER_RESET_GPIO p policy<{'arm64': 'y', 'armhf': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_POWER_RESET_GPIO_RESTART p policy<{'arm64': 'y', 'armhf': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_POWER_RESET_HISI p policy<{'armhf': 'y'}> +CONFIG_POWER_RESET_IMX p policy<{'armhf-generic': 'n'}> +CONFIG_POWER_RESET_MSM p policy<{'armhf': 'y'}> +CONFIG_POWER_RESET_LTC2952 p policy<{'arm64': 'y', 'armhf': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_POWER_RESET_QNAP p policy<{'armhf': 'n'}> +CONFIG_POWER_RESET_RESTART p policy<{'armhf': 'y'}> +CONFIG_POWER_RESET_VERSATILE p policy<{'armhf': 'y'}> +CONFIG_POWER_RESET_VEXPRESS p policy<{'arm64': 'y', 'armhf': 'y'}> +CONFIG_POWER_RESET_XGENE p policy<{'arm64': 'n'}> +CONFIG_POWER_RESET_SYSCON p policy<{'arm64': 'y', 'armhf': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> + +# Menu: Device Drivers >> Pulse-Width Modulation (PWM) Support +CONFIG_PWM y + +# Menu: Device Drivers >> Real Time Clock +CONFIG_RTC_CLASS y +CONFIG_RTC_HCTOSYS y +CONFIG_RTC_SYSTOHC y +CONFIG_RTC_HCTOSYS_DEVICE "rtc0" +CONFIG_RTC_DRV_DS3232 p policy<{'powerpc-powerpc64-emb': 'y', 'powerpc-powerpc-e500mc': 'y', '*': 'm'}> +CONFIG_RTC_INTF_SYSFS y +CONFIG_RTC_INTF_PROC y +CONFIG_RTC_INTF_DEV y +CONFIG_RTC_INTF_DEV_UIE_EMUL n +CONFIG_RTC_DRV_TEST n flag +CONFIG_RTC_DRV_M41T80_WDT y +CONFIG_RTC_DRV_CMOS p policy<{'amd64': 'y', 'i386': 'y', '*': 'm'}> note +CONFIG_RTC_DRV_TWL4030 p policy<{'armhf': 'y', '*': 'm'}> note +CONFIG_RTC_DRV_OMAP p policy<{'armhf': 'y', '*': 'm'}> +CONFIG_RTC_DRV_S3C p policy<{'armhf': 'y', '*': 'm'}> +CONFIG_RTC_DRV_PL031 p policy<{'armhf': 'y', '*': 'm'}> +CONFIG_RTC_DRV_XGENE p policy<{'amd64': 'y', '*': 'm'}> +CONFIG_RTC_DRV_DS1374_WDT y +CONFIG_RTC_DRV_PCF8523 p policy<{'armhf-generic': 'y', '*': 'm'}> +CONFIG_RTC_DRV_OPAL p policy<{'powerpc-powerpc64-smp': 'y', 'ppc64el-generic': 'y'}> +CONFIG_RTC_DRV_MV p policy<{'armhf': 'y'}> + +# Menu: Device Drivers >> Remoteproc drivers + +# Menu: Device Drivers >> SCSI device support + +# Menu: Device Drivers >> SCSI device support >> SCSI device support +CONFIG_SCSI_MQ_DEFAULT n +CONFIG_SCSI y +CONFIG_SCSI_PROC_FS y +CONFIG_BLK_DEV_SD y note +CONFIG_BLK_DEV_SR y note +CONFIG_BLK_DEV_SR_VENDOR n note +CONFIG_CHR_DEV_SG y note +CONFIG_SCSI_CONSTANTS y +CONFIG_SCSI_LOGGING y +CONFIG_SCSI_SCAN_ASYNC y + +# Menu: Device Drivers >> SCSI device support >> SCSI device support >> OSD-Initiator library +CONFIG_SCSI_OSD_DPRINT_SENSE 1 + +# Menu: Device Drivers >> SCSI device support >> SCSI device support >> PCMCIA SCSI adapter support +CONFIG_SCSI_LOWLEVEL_PCMCIA y + +# Menu: Device Drivers >> SCSI device support >> SCSI device support >> SCSI Device Handlers + +# Menu: Device Drivers >> SCSI device support >> SCSI device support >> SCSI Transports +#CONFIG_SCSI_SPI_ATTRS p policy<(arch i386 amd64 &/ value y) | value m> note +CONFIG_SCSI_SPI_ATTRS m +CONFIG_SCSI_SRP_ATTRS p policy<{'powerpc-powerpc64-smp': 'y', 'ppc64el-generic': 'y', '*': 'm'}> +CONFIG_SCSI_SAS_ATA y +CONFIG_SCSI_SAS_HOST_SMP y + +# Menu: Device Drivers >> SCSI device support >> SCSI device support >> SCSI low-level drivers +CONFIG_SCSI_LOWLEVEL y +CONFIG_SCSI_MVSAS_TASKLET n +CONFIG_MEGARAID_NEWGEN y +CONFIG_SCSI_MPT2SAS_MAX_SGE 128 +CONFIG_SCSI_MPT2SAS_LOGGING n +CONFIG_SCSI_MPT3SAS_MAX_SGE 128 +CONFIG_SCSI_MPT3SAS_LOGGING n +CONFIG_SCSI_FLASHPOINT y +CONFIG_SCSI_IZIP_EPP16 n +CONFIG_SCSI_IZIP_SLOW_CTR n +CONFIG_SCSI_IPR_TRACE y note +CONFIG_SCSI_IPR_DUMP y note +CONFIG_SCSI_DEBUG m +CONFIG_SCSI_VIRTIO m note +CONFIG_SCSI_GENERIC_NCR53C400 y +CONFIG_SCSI_IBMVSCSI p policy<{'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_SCSI_IBMVFC_TRACE y +CONFIG_SCSI_MESH_SYNC_RATE D +CONFIG_SCSI_MESH_RESET_DELAY_MS D + +# Menu: Device Drivers >> SCSI device support >> SCSI device support >> SCSI low-level drivers >> Adaptec AIC79xx U320 support +CONFIG_AIC79XX_CMDS_PER_DEVICE 32 +CONFIG_AIC79XX_RESET_DELAY_MS D +CONFIG_AIC79XX_DEBUG_MASK 0 +CONFIG_AIC79XX_REG_PRETTY_PRINT y + +# Menu: Device Drivers >> SCSI device support >> SCSI device support >> SCSI low-level drivers >> Adaptec AIC7xxx Fast -> U160 support (New Driver) +CONFIG_AIC7XXX_CMDS_PER_DEVICE 8 +CONFIG_AIC7XXX_RESET_DELAY_MS D +CONFIG_AIC7XXX_DEBUG_MASK 0 +CONFIG_AIC7XXX_REG_PRETTY_PRINT y + +# Menu: Device Drivers >> SCSI device support >> SCSI device support >> SCSI low-level drivers >> EATA ISA/EISA/PCI (DPT and generic EATA/DMA-compliant boards) support +CONFIG_SCSI_EATA_TAGGED_QUEUE y +CONFIG_SCSI_EATA_LINKED_COMMANDS y +CONFIG_SCSI_EATA_MAX_TAGS 16 + +# Menu: Device Drivers >> SCSI device support >> SCSI device support >> SCSI low-level drivers >> NCR Quad 720 MCA SCSI support + +# Menu: Device Drivers >> SCSI device support >> SCSI device support >> SCSI low-level drivers >> SYM53C8XX Version 2 SCSI support +CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE 1 +CONFIG_SCSI_SYM53C8XX_DEFAULT_TAGS 16 +CONFIG_SCSI_SYM53C8XX_MAX_TAGS 64 +CONFIG_SCSI_SYM53C8XX_MMIO y + +# Menu: Device Drivers >> SCSI device support >> SCSI device support >> SCSI low-level drivers >> UltraStor 14F/34F support +CONFIG_SCSI_U14_34F_TAGGED_QUEUE y +CONFIG_SCSI_U14_34F_LINKED_COMMANDS y +CONFIG_SCSI_U14_34F_MAX_TAGS 8 + +# Menu: Device Drivers >> SOC (System On Chip) specific Drivers + +# Menu: Device Drivers >> SOC (System On Chip) specific Drivers >> TI SOC drivers support +CONFIG_SOC_TI y + +# Menu: Device Drivers >> SPI support +CONFIG_SPI y +CONFIG_SPI_XILINX n +CONFIG_SPI_OMAP24XX y +CONFIG_SPI_FSL_SPI y +CONFIG_SPI_FSL_ESPI y +CONFIG_SPI_DW_MID_DMA y + +# Menu: Device Drivers >> SPMI support + +# Menu: Device Drivers >> Serial ATA and Parallel ATA drivers (libata) +#CONFIG_PATA_ACPI p policy<(arch i386 amd64 &/ value m)> note +CONFIG_ATA y mark +CONFIG_ATA_VERBOSE_ERROR y +CONFIG_ATA_ACPI y +CONFIG_SATA_ZPODD p policy<{'amd64': 'y', 'i386': 'y'}> +CONFIG_SATA_PMP y +CONFIG_SATA_AHCI_PLATFORM p policy<{'armhf': 'y', '*': 'm'}> note +CONFIG_AHCI_IMX p policy<{'armhf': 'y'}> + +# Menu: Device Drivers >> Serial ATA and Parallel ATA drivers (libata) >> ATA SFF support (for legacy IDE and PATA) +CONFIG_ATA_SFF y + +# Menu: Device Drivers >> Serial ATA and Parallel ATA drivers (libata) >> ATA SFF support (for legacy IDE and PATA) >> ATA BMDMA support +CONFIG_ATA_BMDMA y +CONFIG_ATA_PIIX p policy<{'amd64': 'y', 'arm64': 'm', 'armhf': 'm', 'i386': 'y', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_SATA_HIGHBANK p policy<{'armhf': 'm'}> +CONFIG_SATA_RCAR p policy<{'armhf': 'm'}> +CONFIG_SATA_SVW p policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'y', 'ppc64el': 'm'}> +CONFIG_PATA_CS5520 p policy<{'i386': 'm'}> +CONFIG_PATA_CS5530 p policy<{'i386': 'm'}> +CONFIG_PATA_CS5535 p policy<{'i386': 'm'}> +CONFIG_PATA_CS5536 p policy<{'i386': 'm'}> +CONFIG_PATA_HPT3X3_DMA n note +CONFIG_PATA_IMX p policy<{'armhf-generic': 'm'}> +CONFIG_PATA_MACIO p policy<{'powerpc-powerpc64-smp': 'y', 'powerpc-powerpc-smp': 'y'}> +CONFIG_PATA_SC1200 p policy<{'i386': 'm'}> +CONFIG_PATA_SIS p policy<{'amd64': 'y', 'arm64': 'm', 'armhf': 'm', 'i386': 'y', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_PATA_ACPI p policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_ATA_GENERIC p policy<{'amd64': 'y', 'arm64': 'm', 'armhf': 'm', 'i386': 'y', 'powerpc': 'm', 'ppc64el': 'm'}> + +# Menu: Device Drivers >> Sonics Silicon Backplane +CONFIG_SSB_PCIHOST y +CONFIG_SSB_PCMCIAHOST n +CONFIG_SSB_SDIOHOST y +CONFIG_SSB_DRIVER_PCICORE y + +# Menu: Device Drivers >> Sonics Silicon Backplane >> Sonics Silicon Backplane support +CONFIG_SSB_SILENT n +CONFIG_SSB_DRIVER_GPIO y + +# Menu: Device Drivers >> Sony MemoryStick card support + +# Menu: Device Drivers >> Sound card support +CONFIG_SOUND p policy<{'armhf': 'y', '*': 'm'}> note +CONFIG_SOUND_OSS_CORE_PRECLAIM n mark note + +# Menu: Device Drivers >> Sound card support >> Advanced Linux Sound Architecture +CONFIG_SND p policy<{'armhf': 'y', '*': 'm'}> note +CONFIG_SND_PCM_OSS n note +CONFIG_SND_SEQUENCER_OSS n +CONFIG_SND_SEQ_HRTIMER_DEFAULT y +CONFIG_SND_DYNAMIC_MINORS y +CONFIG_SND_MAX_CARDS 32 +CONFIG_SND_SUPPORT_OLD_API y +CONFIG_SND_VERBOSE_PROCFS y +CONFIG_SND_VERBOSE_PRINTK n + +# Menu: Device Drivers >> Sound card support >> Advanced Linux Sound Architecture >> ALSA for SoC audio support +CONFIG_SND_SOC p policy<(arch armel armhf &/ value y) | value m> note + +# Menu: Device Drivers >> Sound card support >> Advanced Linux Sound Architecture >> ALSA for SoC audio support >> ASoC support for Intel(R) Smart Sound Technology + +# Menu: Device Drivers >> Sound card support >> Advanced Linux Sound Architecture >> ALSA for SoC audio support >> ASoC support for Samsung + +# Menu: Device Drivers >> Sound card support >> Advanced Linux Sound Architecture >> ALSA for SoC audio support >> CODEC drivers +CONFIG_SND_SOC_HDMI_CODEC p policy<{'armhf': 'y', '*': 'm'}> mark +CONFIG_SND_SOC_SGTL5000 p policy<{'armhf-generic': 'y', '*': 'm'}> mark + +# Menu: Device Drivers >> Sound card support >> Advanced Linux Sound Architecture >> ALSA for SoC audio support >> SoC AC97 Audio for the ADI BF5xx chip + +# Menu: Device Drivers >> Sound card support >> Advanced Linux Sound Architecture >> ALSA for SoC audio support >> SoC Audio for Freescale CPUs +CONFIG_SND_SOC_FSL_SSI p policy<{'armhf-generic': 'y', '*': 'm'}> mark +CONFIG_SND_SOC_IMX_AUDMUX p policy<{'armhf-generic': 'y', '*': 'm'}> mark + +# 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 p policy<{'armhf': 'y'}> +CONFIG_SND_SOC_IMX_SGTL5000 p policy<{'armhf': 'y'}> + +# 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 TI DAVINCI + +# Menu: Device Drivers >> Sound card support >> Advanced Linux Sound Architecture >> ALSA for SoC audio support >> SoC Audio for TI DAVINCI >> DM365 codec select + +# Menu: Device Drivers >> Sound card support >> Advanced Linux Sound Architecture >> ALSA for SoC audio support >> SoC Audio for the Atmel System-on-Chip + +# 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 + +# Menu: Device Drivers >> Sound card support >> Advanced Linux Sound Architecture >> ALSA for SoC audio support >> SoC Audio for the Texas Instruments OMAP chips +CONFIG_SND_OMAP_SOC p policy<(arch armel armhf &/ value y) | value m> note +CONFIG_SND_OMAP_SOC_OMAP_TWL4030 p policy<(arch armel armhf &/ value y) | value m> note + +# Menu: Device Drivers >> Sound card support >> Advanced Linux Sound Architecture >> ALSA for SoC audio support >> SoC Audio support for SuperH + +# 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 >> SoC I2S Audio for the ADI Blackfin chip + +# Menu: Device Drivers >> Sound card support >> Advanced Linux Sound Architecture >> ARM sound devices +CONFIG_SND_ARM p policy<{'armhf': 'y'}> + +# 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 (AVR32 and AT91) + +# Menu: Device Drivers >> Sound card support >> Advanced Linux Sound Architecture >> FireWire sound devices +CONFIG_SND_FIREWIRE y +CONFIG_SND_DICE 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 y +CONFIG_SND_AC97_POWER_SAVE y +CONFIG_SND_AC97_POWER_SAVE_DEFAULT D + +# Menu: Device Drivers >> Sound card support >> Advanced Linux Sound Architecture >> HD-Audio +CONFIG_SND_HDA_PREALLOC_SIZE D +CONFIG_SND_HDA_HWDEP y +CONFIG_SND_HDA_RECONFIG y note +CONFIG_SND_HDA_INPUT_BEEP y +CONFIG_SND_HDA_INPUT_BEEP_MODE 0 +CONFIG_SND_HDA_INPUT_JACK y +CONFIG_SND_HDA_PATCH_LOADER y +CONFIG_SND_HDA_CODEC_CA0132_DSP y +CONFIG_SND_HDA_POWER_SAVE_DEFAULT D + +# Menu: Device Drivers >> Sound card support >> Advanced Linux Sound Architecture >> ISA sound devices +CONFIG_SND_ISA y +CONFIG_SND_SB16_CSP y + +# 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 y +CONFIG_SND_BT87X_OVERCLOCK n +CONFIG_SND_CS46XX_NEW_DSP y +CONFIG_SND_ES1968_INPUT y +CONFIG_SND_ES1968_RADIO y +CONFIG_SND_FM801_TEA575X_BOOL y +CONFIG_SND_MAESTRO3_INPUT y + +# Menu: Device Drivers >> Sound card support >> Advanced Linux Sound Architecture >> PCMCIA sound devices +CONFIG_SND_PCMCIA y + +# Menu: Device Drivers >> Sound card support >> Advanced Linux Sound Architecture >> PowerPC sound devices +CONFIG_SND_PPC p policy<{'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_SND_POWERMAC p policy<{'powerpc': 'm'}> +CONFIG_SND_POWERMAC_AUTO_DRC p policy<{'powerpc': 'y'}> +CONFIG_SND_PS3 p policy<{'powerpc': 'm'}> +CONFIG_SND_PS3_DEFAULT_START_DELAY p policy<{'powerpc': '2000'}> + +# Menu: Device Drivers >> Sound card support >> Advanced Linux Sound Architecture >> SPI sound devices +CONFIG_SND_SPI y + +# Menu: Device Drivers >> Sound card support >> Advanced Linux Sound Architecture >> SUPERH sound devices + +# 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 y +CONFIG_SND_USB_CAIAQ_INPUT y + +# Menu: Device Drivers >> Sound card support >> Open Sound System (DEPRECATED) + +# Menu: Device Drivers >> Sound card support >> Open Sound System (DEPRECATED) >> OSS sound modules + +# Menu: Device Drivers >> Sound card support >> Open Sound System (DEPRECATED) >> Support for Turtle Beach MultiSound Classic, Tahiti, Monterey + +# Menu: Device Drivers >> Sound card support >> Open Sound System (DEPRECATED) >> Support for Turtle Beach MultiSound Pinnacle, Fiji + +# Menu: Device Drivers >> Staging drivers +CONFIG_STAGING y +CONFIG_SLICOSS p policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_88EU_AP_MODE y +CONFIG_8723AU_AP_MODE y +CONFIG_8723AU_BT_COEXIST y +CONFIG_USB_EMXX p policy<{'armhf': 'y'}> +CONFIG_FT1000_PCMCIA p policy<{'amd64': 'm', 'i386': 'm', 'powerpc': 'm'}> +CONFIG_FWTTY_MAX_TOTAL_PORTS 64 +CONFIG_FWTTY_MAX_CARD_PORTS 32 +CONFIG_MTD_SPINAND_ONDIEECC y +CONFIG_LNET_MAX_PAYLOAD 1048576 +CONFIG_CRYPTO_SKEIN p policy<{'amd64': 'y'}> +CONFIG_COMMON_CLK_XLNX_CLKWZRD p policy<{'arm64': 'n', 'armhf': 'n', 'powerpc-powerpc64-emb': 'n', 'powerpc-powerpc-e500mc': 'n'}> + +# Menu: Device Drivers >> Staging drivers >> Android + +# Menu: Device Drivers >> Staging drivers >> Android >> Ion Memory Manager + +# Menu: Device Drivers >> Staging drivers >> Data acquisition support (comedi) +CONFIG_COMEDI_DEFAULT_BUF_SIZE_KB 2048 +CONFIG_COMEDI_DEFAULT_BUF_MAXSIZE_KB 20480 + +# Menu: Device Drivers >> Staging drivers >> Data acquisition support (comedi) >> Comedi ISA and PC/104 drivers +CONFIG_COMEDI_ISA_DRIVERS y + +# Menu: Device Drivers >> Staging drivers >> Data acquisition support (comedi) >> Comedi PCI drivers +CONFIG_COMEDI_PCI_DRIVERS m + +# Menu: Device Drivers >> Staging drivers >> Data acquisition support (comedi) >> Comedi PCMCIA drivers +CONFIG_COMEDI_PCMCIA_DRIVERS m + +# Menu: Device Drivers >> Staging drivers >> Data acquisition support (comedi) >> Comedi USB drivers +CONFIG_COMEDI_USB_DRIVERS m + +# Menu: Device Drivers >> Staging drivers >> Data acquisition support (comedi) >> Comedi misc drivers +CONFIG_COMEDI_MISC_DRIVERS y + +# Menu: Device Drivers >> Staging drivers >> GCT GDM72xx WiMAX support +CONFIG_WIMAX_GDM72XX_QOS y +CONFIG_WIMAX_GDM72XX_K_MODE y +CONFIG_WIMAX_GDM72XX_WIMAX2 y +CONFIG_WIMAX_GDM72XX_USB_PM y + +# Menu: Device Drivers >> Staging drivers >> GCT GDM72xx WiMAX support >> Select interface +CONFIG_WIMAX_GDM72XX_USB y + +# Menu: Device Drivers >> Staging drivers >> IIO staging drivers +CONFIG_IIO_SIMPLE_DUMMY_EVENTS n note +CONFIG_IIO_SIMPLE_DUMMY_BUFFER n note + +# Menu: Device Drivers >> Staging drivers >> IIO staging drivers >> Accelerometers + +# Menu: Device Drivers >> Staging drivers >> IIO staging drivers >> Active energy metering IC + +# Menu: Device Drivers >> Staging drivers >> IIO staging drivers >> Analog digital bi-direction converters + +# Menu: Device Drivers >> Staging drivers >> IIO staging drivers >> Analog to digital converters + +# Menu: Device Drivers >> Staging drivers >> IIO staging drivers >> Capacitance to digital converters + +# Menu: Device Drivers >> Staging drivers >> IIO staging drivers >> Digital gyroscope sensors + +# Menu: Device Drivers >> Staging drivers >> IIO staging drivers >> Direct Digital Synthesis + +# Menu: Device Drivers >> Staging drivers >> IIO staging drivers >> Light sensors + +# Menu: Device Drivers >> Staging drivers >> IIO staging drivers >> Magnetometer sensors + +# Menu: Device Drivers >> Staging drivers >> IIO staging drivers >> Network Analyzer, Impedance Converters + +# Menu: Device Drivers >> Staging drivers >> IIO staging drivers >> Resolver to digital converters + +# Menu: Device Drivers >> Staging drivers >> Line6 USB support +CONFIG_LINE6_USB_IMPULSE_RESPONSE n + +# Menu: Device Drivers >> Staging drivers >> Lustre file system client support +CONFIG_LUSTRE_OBD_MAX_IOCTL_BUFFER D + +# Menu: Device Drivers >> Staging drivers >> Media staging drivers +CONFIG_STAGING_MEDIA y +CONFIG_DT3155_CCIR n note +CONFIG_DT3155_STREAMING y +CONFIG_VIDEO_OMAP4 n + +# Menu: Device Drivers >> Staging drivers >> Media staging drivers >> ISA and parallel port devices +CONFIG_MEDIA_PARPORT_SUPPORT y + +# Menu: Device Drivers >> Staging drivers >> Media staging drivers >> Linux Infrared Remote Control IR receiver/transmitter drivers +CONFIG_LIRC_STAGING y +CONFIG_LIRC_SERIAL_TRANSMITTER y + +# Menu: Device Drivers >> Staging drivers >> NV Tegra Embedded Controller SMBus Interface + +# Menu: Device Drivers >> Staging drivers >> Parallel port LCD/Keypad Panel support +CONFIG_PANEL_PARPORT 0 +CONFIG_PANEL_PROFILE 5 +CONFIG_PANEL_CHANGE_MESSAGE n + +# Menu: Device Drivers >> Staging drivers >> Parallel port LCD/Keypad Panel support >> LCD type (0=none, 1=custom, 2=old //, 3=ks0074, 4=hantronix, 5=Nexcom) + +# Menu: Device Drivers >> Staging drivers >> 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 >> Staging drivers >> Speakup console speech + +# Menu: Device Drivers >> Staging drivers >> Speakup console speech >> Speakup core + +# Menu: Device Drivers >> Staging drivers >> Support for rtllib wireless devices + +# Menu: Device Drivers >> Staging drivers >> Unisys SPAR driver support +CONFIG_UNISYSSPAR p policy<{'amd64': 'y'}> +CONFIG_UNISYS_VISORUTIL p policy<{'amd64': 'm'}> +CONFIG_UNISYS_VISORCHANNEL p policy<{'amd64': 'm'}> +CONFIG_UNISYS_VISORCHIPSET p policy<{'amd64': 'm'}> +CONFIG_UNISYS_CHANNELSTUB p policy<{'amd64': 'm'}> +CONFIG_UNISYS_UISLIB p policy<{'amd64': 'm'}> +CONFIG_UNISYS_VIRTPCI p policy<{'amd64': 'm'}> +CONFIG_UNISYS_VIRTHBA p policy<{'amd64': 'm'}> + +# Menu: Device Drivers >> TI VLYNQ + +# Menu: Device Drivers >> USB support +CONFIG_USB_SUPPORT y +CONFIG_USB_LED_TRIG y + +# Menu: Device Drivers >> USB support >> ChipIdea Highspeed Dual Role Controller +CONFIG_USB_CHIPIDEA_UDC y +CONFIG_USB_CHIPIDEA_HOST y + +# Menu: Device Drivers >> USB support >> Support for Host-side USB +#CONFIG_USB_MUSB_OMAP2PLUS y +CONFIG_USB y +CONFIG_USB_ANNOUNCE_NEW_DEVICES y +CONFIG_USB_DYNAMIC_MINORS y +CONFIG_USB_DEFAULT_PERSIST y +CONFIG_USB_OTG n note +CONFIG_USB_OTG_WHITELIST n note +CONFIG_USB_OTG_BLACKLIST_HUB n note +CONFIG_USB_OTG_FSM n note> +CONFIG_USB_XHCI_HCD y note +CONFIG_USB_UHCI_HCD y note +CONFIG_USB_HCD_BCMA p policy<(arch armel armhf &/ value n) | value m> note +CONFIG_USB_HCD_SSB p policy<(arch armel armhf &/ value n) | value m> note +CONFIG_USB_SISUSBVGA_CON n note +CONFIG_USB_SL811_HCD_ISO y +CONFIG_USB_HCD_TEST_MODE n + +# Menu: Device Drivers >> USB support >> Support for Host-side USB >> DesignWare USB2 DRD Core Support +CONFIG_USB_DWC2 y +CONFIG_USB_DWC2_PLATFORM y +CONFIG_USB_DWC2_PCI y +CONFIG_USB_DWC2_TRACK_MISSED_SOFS n + +# Menu: Device Drivers >> USB support >> Support for Host-side USB >> DesignWare USB2 DRD Core Support >> DWC2 Mode Selection +CONFIG_USB_DWC2_HOST p policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'n', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_USB_DWC2_PERIPHERAL p policy<{'armhf': 'n'}> +CONFIG_USB_DWC2_DUAL_ROLE p policy<{'armhf': 'y'}> + +# Menu: Device Drivers >> USB support >> Support for Host-side USB >> DesignWare USB3 DRD Core Support +CONFIG_USB_DWC3_OMAP p policy<{'armhf': 'm'}> +CONFIG_USB_DWC3_EXYNOS p policy<{'armhf': 'm'}> +CONFIG_USB_DWC3_QCOM p policy<{'armhf': 'm'}> +CONFIG_DWC3_HOST_USB3_LPM_ENABLE y + +# Menu: Device Drivers >> USB support >> Support for Host-side USB >> DesignWare USB3 DRD Core Support >> DWC3 Mode Selection +CONFIG_USB_DWC3_DUAL_ROLE y + +# Menu: Device Drivers >> USB support >> Support for Host-side USB >> EHCI HCD (USB 2.0) support +# +#CONFIG_USB_EHCI_HCD_PLATFORM p mark policy<{'amd64': 'y', 'arm64': 'm', 'armhf': 'n', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'm'}> note mark +CONFIG_USB_EHCI_HCD y note +CONFIG_USB_EHCI_ROOT_HUB_TT y +CONFIG_USB_EHCI_TT_NEWSCHED y +CONFIG_XPS_USB_HCD_XILINX y +CONFIG_USB_EHCI_FSL y +CONFIG_USB_EHCI_HCD_PPC_OF y + +# Menu: Device Drivers >> USB support >> Support for Host-side USB >> Inventra Highspeed Dual Role Controller (TI, ADI, ...) +CONFIG_USB_MUSB_HDRC p policy<(arch armel armhf &/ value y) | value m> note +CONFIG_USB_MUSB_TUSB6010 p policy<(arch armel armhf &/ value n) | value m> note + +# Menu: Device Drivers >> USB support >> Support for Host-side USB >> Inventra Highspeed Dual Role Controller (TI, ADI, ...) >> MUSB DMA mode +CONFIG_USB_UX500_DMA p policy<{'amd64': 'n', 'arm64': 'y', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'y'}> +CONFIG_USB_INVENTRA_DMA p policy<{'armhf': 'n'}> +CONFIG_USB_TI_CPPI41_DMA p policy<{'armhf': 'n'}> +CONFIG_MUSB_PIO_ONLY p policy<{'amd64': 'y', 'arm64': 'n', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'n'}> + +# Menu: Device Drivers >> USB support >> Support for Host-side USB >> Inventra Highspeed Dual Role Controller (TI, ADI, ...) >> MUSB Mode Selection +CONFIG_USB_MUSB_DUAL_ROLE y + +# Menu: Device Drivers >> USB support >> Support for Host-side USB >> OHCI HCD (USB 1.1) support +CONFIG_USB_OHCI_HCD y note +CONFIG_USB_OHCI_HCD_PPC_OF_BE p policy<{'powerpc': 'y', 'ppc64el': 'n'}> +CONFIG_USB_OHCI_HCD_PPC_OF_LE p policy<{'powerpc': 'n', 'ppc64el': 'n'}> mark + +# Menu: Device Drivers >> USB support >> Support for Host-side USB >> USB DSL modem support + +# Menu: Device Drivers >> USB support >> Support for Host-side USB >> USB Mass Storage support +CONFIG_REALTEK_AUTOPM y + +# Menu: Device Drivers >> USB support >> Support for Host-side USB >> USB Serial Converter support +CONFIG_USB_SERIAL_GENERIC y +CONFIG_USB_SERIAL_SAFE_PADDED n +CONFIG_USB_SERIAL_DEBUG m note +CONFIG_USB_SERIAL_MOS7715_PARPORT y + +# Menu: Device Drivers >> USB support >> Support for Host-side USB >> USB Serial Converter support >> USB Keyspan USA-xxx Serial Driver +CONFIG_USB_SERIAL_KEYSPAN_MPR 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_USA19 y +CONFIG_USB_SERIAL_KEYSPAN_USA18X y +CONFIG_USB_SERIAL_KEYSPAN_USA19W y +CONFIG_USB_SERIAL_KEYSPAN_USA19QW y +CONFIG_USB_SERIAL_KEYSPAN_USA19QI y +CONFIG_USB_SERIAL_KEYSPAN_USA49W y +CONFIG_USB_SERIAL_KEYSPAN_USA49WLC y + +# Menu: Device Drivers >> USB support >> Support for Host-side USB >> USB/IP support + +# Menu: Device Drivers >> USB support >> USB Gadget Support +CONFIG_USB_GADGET p policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'y', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_USB_GADGET_VBUS_DRAW D +CONFIG_USB_GADGET_STORAGE_NUM_BUFFERS D + +# Menu: Device Drivers >> USB support >> USB Gadget Support >> USB Gadget Drivers +CONFIG_USB_ZERO_HNPTEST y +CONFIG_GADGET_UAC1 y +CONFIG_USB_ETH_RNDIS y +CONFIG_USB_ETH_EEM y +CONFIG_USB_G_MULTI p policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'm', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_USB_G_MULTI_RNDIS p policy<{'armhf': 'y'}> +CONFIG_USB_G_MULTI_CDC p policy<{'armhf': 'y'}> + +# Menu: Device Drivers >> USB support >> USB Gadget Support >> USB Gadget Drivers >> EHCI Debug Device mode +CONFIG_USB_G_DBGP_SERIAL y + +# Menu: Device Drivers >> USB support >> USB Gadget Support >> USB Gadget Drivers >> Function Filesystem +CONFIG_USB_FUNCTIONFS_ETH y +CONFIG_USB_FUNCTIONFS_RNDIS y +CONFIG_USB_FUNCTIONFS_GENERIC y + +# Menu: Device Drivers >> USB support >> USB Gadget Support >> USB Gadget Drivers >> USB functions configurable through configfs +CONFIG_USB_CONFIGFS_SERIAL y +CONFIG_USB_CONFIGFS_ACM y +CONFIG_USB_CONFIGFS_OBEX y +CONFIG_USB_CONFIGFS_NCM y +CONFIG_USB_CONFIGFS_ECM y +CONFIG_USB_CONFIGFS_ECM_SUBSET y +CONFIG_USB_CONFIGFS_RNDIS y +CONFIG_USB_CONFIGFS_EEM y +CONFIG_USB_CONFIGFS_PHONET y +CONFIG_USB_CONFIGFS_MASS_STORAGE y +CONFIG_USB_CONFIGFS_F_LB_SS y +CONFIG_USB_CONFIGFS_F_FS y +CONFIG_USB_CONFIGFS_F_UAC1 y +CONFIG_USB_CONFIGFS_F_UAC2 y +CONFIG_USB_CONFIGFS_F_MIDI y +CONFIG_USB_CONFIGFS_F_HID y + +# Menu: Device Drivers >> USB support >> USB Gadget Support >> USB Peripheral Controller +CONFIG_USB_M66592 n note +CONFIG_USB_DUMMY_HCD n flag +CONFIG_USB_NET2272_DMA y + +# Menu: Device Drivers >> USB support >> USB Physical Layer drivers +CONFIG_FSL_USB2_OTG p policy<{'powerpc': 'n'}> +CONFIG_NOP_USB_XCEIV p policy<{'armhf': 'y', '*': 'm'}> note +CONFIG_TAHVO_USB_HOST_BY_DEFAULT y +CONFIG_USB_MXS_PHY p policy<{'armhf': 'y'}> +CONFIG_USB_ULPI p policy<{'arm64': 'y', 'armhf': 'y'}> + +# Menu: Device Drivers >> Ultra Wideband devices + +# Menu: Device Drivers >> Userspace I/O drivers + +# Menu: Device Drivers >> VFIO Non-Privileged userspace driver framework +CONFIG_VFIO_PCI_VGA y + +# Menu: Device Drivers >> VME bridge support +CONFIG_VME_BUS y + +# Menu: Device Drivers >> Virtio drivers +CONFIG_VIRTIO_PCI y +CONFIG_VIRTIO_BALLOON y +CONFIG_VIRTIO_MMIO y +CONFIG_VIRTIO_MMIO_CMDLINE_DEVICES y + +# Menu: Device Drivers >> Virtualization drivers +CONFIG_VIRT_DRIVERS y + +# Menu: Device Drivers >> Voltage and Current Regulator Support +CONFIG_REGULATOR y +CONFIG_REGULATOR_FIXED_VOLTAGE p policy<{'armhf': 'y', '*': 'm'}> note +CONFIG_REGULATOR_TI_ABB p policy<{'armhf': 'y'}> +#CONFIG_REGULATOR_TWL4030 p mark policy<{'armhf-generic': 'y', '*': 'm'}> note + +# Menu: Device Drivers >> Watchdog Timer Support +CONFIG_WATCHDOG y +CONFIG_WATCHDOG_NOWAYOUT n +CONFIG_WATCHDOG_CORE y +CONFIG_INTEL_SCU_WATCHDOG p policy<{'i386': 'y'}> +CONFIG_ITCO_VENDOR_SUPPORT p policy<{'amd64': 'y', 'i386': 'y'}> +CONFIG_HPWDT_NMI_DECODING p policy<{'amd64': 'y', 'i386': 'y'}> +CONFIG_BOOKE_WDT p policy<{'powerpc': 'y'}> +CONFIG_BOOKE_WDT_DEFAULT_TIMEOUT 38 + +# Menu: Device Drivers >> X86 Platform Specific Device Drivers +CONFIG_X86_PLATFORM_DEVICES y +CONFIG_SONYPI_COMPAT y + +# Menu: Device Drivers >> X86 Platform Specific Device Drivers >> Intel SCU IPC Support +CONFIG_INTEL_SCU_IPC y +CONFIG_GPIO_INTEL_PMIC y + +# Menu: Device Drivers >> X86 Platform Specific Device Drivers >> ThinkPad ACPI Laptop Extras +CONFIG_THINKPAD_ACPI_ALSA_SUPPORT y +CONFIG_THINKPAD_ACPI_DEBUGFACILITIES y +CONFIG_THINKPAD_ACPI_UNSAFE_LEDS n +CONFIG_THINKPAD_ACPI_VIDEO y +CONFIG_THINKPAD_ACPI_HOTKEY_POLL y + +# Menu: Device Drivers >> X86 Platform Specific Device Drivers >> WMI + +# Menu: Device Drivers >> Xen driver support +CONFIG_XEN_BACKEND y +CONFIG_XEN_COMPAT_XENFS y +CONFIG_XEN_SYS_HYPERVISOR y +CONFIG_XEN_ACPI_PROCESSOR p mark policy<{'i386': 'y', 'amd64': 'y'}> +CONFIG_XEN_MCE_LOG y + +# Menu: Device Drivers >> Xen driver support >> Xen memory balloon driver +CONFIG_XEN_BALLOON y +CONFIG_XEN_SELFBALLOONING y +CONFIG_XEN_BALLOON_MEMORY_HOTPLUG y +CONFIG_XEN_SCRUB_PAGES y + +# Menu: Enable loadable module support +CONFIG_MODULES y +CONFIG_MODULE_FORCE_LOAD n +CONFIG_MODULE_UNLOAD y +CONFIG_MODULE_FORCE_UNLOAD n +CONFIG_MODVERSIONS y +CONFIG_MODULE_SRCVERSION_ALL y +CONFIG_MODULE_COMPRESS n + +# Menu: Enable loadable module support >> Compression algorithm + +# Menu: Enable loadable module support >> Module signature verification +CONFIG_MODULE_SIG y +CONFIG_MODULE_SIG_FORCE n +CONFIG_MODULE_SIG_ALL y + +# Menu: Enable loadable module support >> Module signature verification >> Which hash algorithm should modules be signed with? +CONFIG_MODULE_SIG_SHA512 y + +# Menu: Enable the block layer +CONFIG_BLOCK y +CONFIG_LBDAF y +CONFIG_BLK_DEV_BSG y +CONFIG_BLK_DEV_BSGLIB y +CONFIG_BLK_DEV_INTEGRITY y +CONFIG_BLK_DEV_THROTTLING y note +CONFIG_BLK_CMDLINE_PARSER y + +# Menu: Enable the block layer >> IO Schedulers +CONFIG_IOSCHED_DEADLINE y +CONFIG_IOSCHED_CFQ y +CONFIG_CFQ_GROUP_IOSCHED y + +# Menu: Enable the block layer >> IO Schedulers >> Default I/O scheduler +CONFIG_DEFAULT_DEADLINE p policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_DEFAULT_CFQ p policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> + +# Menu: Enable the block layer >> Partition Types +set +tree 'Enable the block layer>>Partition Types' ?pattern _PARTITION$ !flag EXPERIMENTAL = y +set +tree 'Enable the block layer>>Partition Types' ?pattern _DISKLABEL$ !flag EXPERIMENTAL = y + +# Menu: Enable the block layer >> Partition Types >> Advanced partition selection +CONFIG_PARTITION_ADVANCED y + +# Menu: Disable the block layer >> Partition Types >> Advanced partition selection >> Acorn partition support +CONFIG_ACORN_PARTITION_CUMANA n +CONFIG_ACORN_PARTITION_EESOX n +CONFIG_ACORN_PARTITION_ICS n +CONFIG_ACORN_PARTITION_ADFS n +CONFIG_ACORN_PARTITION_POWERTEC n +CONFIG_ACORN_PARTITION_RISCIX n + +# Menu: Enable the block layer >> Partition Types >> Advanced partition selection >> PC BIOS (MSDOS partition tables) support +CONFIG_MINIX_SUBPARTITION y + +# Menu: Endianness selection +CONFIG_CPU_BIG_ENDIAN ? + +# Menu: Endianness selection >> Architecture: powerpc +CONFIG_CPU_LITTLE_ENDIAN ? + +# Menu: Executable file formats / Emulations +CONFIG_BINFMT_ELF y +CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS y +CONFIG_BINFMT_SCRIPT y mark note +CONFIG_BINFMT_MISC m +CONFIG_COREDUMP y +CONFIG_BINFMT_ELF y +CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS y +CONFIG_BINFMT_SCRIPT y +CONFIG_BINFMT_AOUT p policy<{'i386': 'm'}> +CONFIG_COREDUMP y + +# Menu: Executable file formats / Emulations >> Architecture: arm + +# Menu: Executable file formats / Emulations >> Architecture: x86 +CONFIG_IA32_EMULATION y +CONFIG_IA32_AOUT n note mark +CONFIG_X86_X32 y + +# Menu: File systems +set +tree 'File systems' ?flag EXPERIMENTAL ?type bool = n +set +tree 'File systems' ?flag EXPERIMENTAL ?type tristate = m note` +set +tree 'File systems' !flag EXPERIMENTAL ?type tristate = m +set +tree 'File systems' ?pattern _POSIX_ACL$ !flag EXPERIMENTAL = y +set +tree 'File systems' ?pattern _SECURITY$ !flag EXPERIMENTAL = y +set +tree 'File systems' ?pattern _XATTR$ !flag EXPERIMENTAL = y +set +tree 'File systems' ?pattern _FSCACHE$ !flag EXPERIMENTAL = y +# +CONFIG_EXT2_FS n note +CONFIG_EXT3_FS n note +CONFIG_GFS2_FS_LOCKING_DLM y +CONFIG_FILE_LOCKING y +CONFIG_DNOTIFY y +CONFIG_INOTIFY_USER y +CONFIG_FANOTIFY y +CONFIG_FANOTIFY_ACCESS_PERMISSIONS y +CONFIG_QUOTA_NETLINK_INTERFACE y +CONFIG_FUSE_FS y note +CONFIG_OVERLAY_FS_V1 y + +# Menu: File systems >> Btrfs filesystem support +CONFIG_BTRFS_FS_POSIX_ACL y +CONFIG_BTRFS_FS_RUN_SANITY_TESTS n +CONFIG_BTRFS_ASSERT n + +# Menu: File systems >> CD-ROM/DVD Filesystems +CONFIG_JOLIET y +CONFIG_ZISOFS y + +# Menu: File systems >> Caches +CONFIG_CACHEFILES_HISTOGRAM n + +# Menu: File systems >> Caches >> General filesystem local caching manager +CONFIG_FSCACHE_STATS y +CONFIG_FSCACHE_HISTOGRAM n +CONFIG_FSCACHE_OBJECT_LIST n + +# Menu: File systems >> DOS/FAT/NT Filesystems +CONFIG_VFAT_FS y mark note +CONFIG_FAT_DEFAULT_CODEPAGE 437 +CONFIG_FAT_DEFAULT_IOCHARSET "iso8859-1" +CONFIG_NTFS_RW n + +# Menu: File systems >> Distributed Lock Manager (DLM) + +# Menu: File systems >> JFS filesystem support +CONFIG_JFS_STATISTICS y + +# Menu: File systems >> Miscellaneous filesystems +CONFIG_MISC_FILESYSTEMS y +CONFIG_ECRYPT_FS y mark note +CONFIG_ECRYPT_FS_MESSAGING y +CONFIG_LOGFS n note +CONFIG_EFIVAR_FS y note +CONFIG_UBIFS_FS_ADVANCED_COMPR n +CONFIG_UBIFS_FS_LZO y +CONFIG_UBIFS_FS_ZLIB y + +# Menu: File systems >> Miscellaneous filesystems >> F2FS filesystem support (EXPERIMENTAL) +CONFIG_F2FS_STAT_FS y +CONFIG_F2FS_CHECK_FS n + +# Menu: File systems >> Miscellaneous filesystems >> Journalling Flash File System v2 (JFFS2) support +CONFIG_JFFS2_FS_DEBUG 0 +CONFIG_JFFS2_FS_WRITEBUFFER y +CONFIG_JFFS2_FS_WBUF_VERIFY n +CONFIG_JFFS2_SUMMARY n + +# Menu: File systems >> Miscellaneous filesystems >> Journalling Flash File System v2 (JFFS2) support >> Advanced compression options for JFFS2 +CONFIG_JFFS2_COMPRESSION_OPTIONS y +CONFIG_JFFS2_ZLIB y +CONFIG_JFFS2_LZO y +CONFIG_JFFS2_RTIME y +CONFIG_JFFS2_RUBIN 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_FAVOURLZO y + +# Menu: File systems >> Miscellaneous filesystems >> Persistent store support +CONFIG_PSTORE y +CONFIG_PSTORE_CONSOLE p policy<{'armhf': 'y', '*': 'n'}> note +CONFIG_PSTORE_RAM p policy<{'armhf': 'y', '*': 'm'}> +CONFIG_PSTORE_FTRACE n + +# Menu: File systems >> Miscellaneous filesystems >> RomFS backing stores +CONFIG_ROMFS_BACKED_BY_BLOCK y + +# Menu: File systems >> Miscellaneous filesystems >> SquashFS 4.0 - Squashed file system support +CONFIG_SQUASHFS_ZLIB y +CONFIG_SQUASHFS_LZ4 n +CONFIG_SQUASHFS_LZO y +CONFIG_SQUASHFS_XZ y +CONFIG_SQUASHFS_4K_DEVBLK_SIZE n note +CONFIG_SQUASHFS_EMBEDDED n +CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE 3 + +# Menu: File systems >> Miscellaneous filesystems >> SquashFS 4.0 - Squashed file system support >> Decompressor parallelisation options +CONFIG_SQUASHFS_DECOMP_MULTI_PERCPU y + +# Menu: File systems >> Miscellaneous filesystems >> SquashFS 4.0 - Squashed file system support >> File decompression options +CONFIG_SQUASHFS_FILE_DIRECT y + +# Menu: File systems >> Native language support +CONFIG_NLS y note +CONFIG_NLS_CODEPAGE_437 y +CONFIG_NLS_DEFAULT "utf8" + +# Menu: File systems >> Network File Systems + +# XXX: to be removed +CONFIG_NETWORK_FILESYSTEMS y +CONFIG_NFSD_V3 y +CONFIG_NFSD_V3_ACL y +CONFIG_NFSD_V4 y +CONFIG_NFSD_V4_SECURITY_LABEL y +CONFIG_NFSD_FAULT_INJECTION n +CONFIG_SUNRPC_DEBUG y +CONFIG_CEPH_FSCACHE y +CONFIG_AFS_FSCACHE y + +# Menu: File systems >> Network File Systems >> CIFS support (advanced network filesystem, SMBFS successor) +CONFIG_CIFS_STATS y +CONFIG_CIFS_STATS2 n +CONFIG_CIFS_WEAK_PW_HASH y +CONFIG_CIFS_UPCALL y +CONFIG_CIFS_POSIX y +CONFIG_CIFS_ACL y +CONFIG_CIFS_DEBUG y +CONFIG_CIFS_DEBUG2 n +CONFIG_CIFS_DFS_UPCALL y +CONFIG_CIFS_SMB2 y + +# Menu: File systems >> Network File Systems >> NCP file system support (to mount NetWare volumes) +CONFIG_NCPFS_PACKET_SIGNING y +CONFIG_NCPFS_IOCTL_LOCKING y +CONFIG_NCPFS_STRONG y +CONFIG_NCPFS_NFS_NS y +CONFIG_NCPFS_OS2_NS y +CONFIG_NCPFS_SMALLDOS n +CONFIG_NCPFS_NLS y +CONFIG_NCPFS_EXTRAS y + +# Menu: File systems >> Network File Systems >> NFS client support +CONFIG_NFS_V3_ACL y +CONFIG_NFS_SWAP y +CONFIG_NFS_USE_LEGACY_DNS n + +# Menu: File systems >> Network File Systems >> NFS client support >> NFS client support for NFSv4.1 +CONFIG_NFS_V4_1 y +CONFIG_NFS_V4_2 y +CONFIG_NFS_V4_1_IMPLEMENTATION_ID_DOMAIN "kernel.org" +CONFIG_NFS_V4_1_MIGRATION y + +# Menu: File systems >> Network File Systems >> Plan 9 Resource Sharing Support (9P2000) +CONFIG_9P_FSCACHE y + +# Menu: File systems >> OCFS2 file system support +CONFIG_OCFS2_FS_STATS y +CONFIG_OCFS2_DEBUG_MASKLOG y + +# Menu: File systems >> Pseudo filesystems +CONFIG_TMPFS_POSIX_ACL y mark note +CONFIG_SYSFS y +CONFIG_TMPFS y +CONFIG_HUGETLBFS y + +# Menu: File systems >> Pseudo filesystems >> /proc file system support +CONFIG_PROC_FS y +CONFIG_PROC_KCORE y +CONFIG_PROC_VMCORE y +CONFIG_PROC_SYSCTL y +CONFIG_PROC_PAGE_MONITOR y + +# Menu: File systems >> Quota support +CONFIG_QUOTA y +CONFIG_PRINT_QUOTA_WARNING n + +# Menu: File systems >> Reiserfs support +CONFIG_REISERFS_CHECK n +CONFIG_REISERFS_PROC_INFO n + +# Menu: File systems >> The Extended 4 (ext4) filesystem +CONFIG_EXT4_FS y note +CONFIG_EXT4_USE_FOR_EXT23 y + +# Menu: File systems >> XFS filesystem support +CONFIG_XFS_QUOTA y +CONFIG_XFS_RT y +CONFIG_XFS_WARN n + +# Menu: Firmware Drivers +CONFIG_EDD p policy<{'amd64': 'y', 'i386': 'y'}> +CONFIG_EDD_OFF p policy<{'amd64': 'y', 'i386': 'y'}> +CONFIG_FIRMWARE_MEMMAP p policy<{'amd64': 'y', 'arm64': 'y', 'i386': 'y'}> +CONFIG_DELL_RBU p policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_DCDBAS p policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_DMIID p policy<{'amd64': 'y', 'arm64': 'y', 'i386': 'y'}> +CONFIG_DMI_SYSFS p policy<{'amd64': 'm', 'arm64': 'm', 'i386': 'm'}> +CONFIG_ISCSI_IBFT_FIND p policy<{'amd64': 'y', 'i386': 'y'}> +CONFIG_ISCSI_IBFT p policy<{'amd64': 'm', 'i386': 'm'}> + +# Menu: Firmware Drivers >> EFI (Extensible Firmware Interface) Support +CONFIG_EFI_VARS p mark policy<{'amd64': 'y', 'arm64': 'y', 'i386': 'y'}> note +CONFIG_EFI_VARS_PSTORE_DEFAULT_DISABLE p policy<{'amd64': 'n', 'arm64': 'n', 'i386': 'n'}> +CONFIG_EFI_RUNTIME_MAP p policy<{'amd64': 'y', 'i386': 'y'}> + +# Menu: Firmware Drivers >> Google Firmware Drivers +CONFIG_GOOGLE_FIRMWARE n + +# Menu: Firmware Drivers >> Google Firmware Drivers >> Google Firmware Drivers + +# Menu: Floating point emulation >> Architecture: arm +CONFIG_VFP p policy<{'armhf': 'y'}> +CONFIG_NEON p policy<{'armhf': 'y'}> +CONFIG_KERNEL_MODE_NEON p policy<{'arm64': 'y', 'armhf': 'y'}> + +# Menu: General setup +CONFIG_CROSS_COMPILE "" +CONFIG_COMPILE_TEST n +CONFIG_LOCALVERSION "" +CONFIG_LOCALVERSION_AUTO n +CONFIG_DEFAULT_HOSTNAME "(none)" +CONFIG_VERSION_SIGNATURE "" +CONFIG_SWAP y +CONFIG_SYSVIPC y +CONFIG_POSIX_MQUEUE y +CONFIG_CROSS_MEMORY_ATTACH y +CONFIG_FHANDLE y mark note +CONFIG_USELIB y +CONFIG_AUDIT y +CONFIG_AUDITSYSCALL y +CONFIG_IKCONFIG n +CONFIG_LOG_BUF_SHIFT p policy<{'amd64': '18', 'arm64': '14', 'armhf': '17', 'i386': '17', 'powerpc': '17', 'ppc64el': '17'}> +CONFIG_LOG_CPU_MAX_BUF_SHIFT 12 +CONFIG_NUMA_BALANCING p policy<{'amd64': 'y', 'powerpc-powerpc64-smp': 'y', 'ppc64el': 'y'}> +CONFIG_NUMA_BALANCING_DEFAULT_ENABLED p policy<{'amd64': 'y', 'powerpc-powerpc64-smp': 'y', 'ppc64el': 'y'}> +CONFIG_CHECKPOINT_RESTORE y +CONFIG_SCHED_AUTOGROUP y +CONFIG_SYSFS_DEPRECATED n mark note +CONFIG_SYSFS_DEPRECATED_V2 p policy<{'*': '-'}> mark note +CONFIG_RELAY y +CONFIG_INIT_FALLBACK y +CONFIG_CC_OPTIMIZE_FOR_SIZE n +CONFIG_EMBEDDED n +CONFIG_COMPAT_BRK n mark mark note +CONFIG_SLUB_CPU_PARTIAL y +CONFIG_SYSTEM_TRUSTED_KEYRING y +CONFIG_PROFILING y +CONFIG_OPROFILE p policy<{'amd64': 'm', 'armhf': 'm', 'i386': 'm', 'powerpc': 'm', 'ppc64el': 'm'}> +CONFIG_OPROFILE_EVENT_MULTIPLEX p policy<{'amd64': 'n', 'i386': 'n'}> +CONFIG_KPROBES p policy<{'amd64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_LOCALVERSION_AUTO n mark note + +# Menu: General setup >> CPU/Task time and stats accounting +CONFIG_BSD_PROCESS_ACCT y +CONFIG_BSD_PROCESS_ACCT_V3 y +CONFIG_TASKSTATS y +CONFIG_TASK_DELAY_ACCT y +CONFIG_TASK_XACCT y +CONFIG_TASK_IO_ACCOUNTING y + +# Menu: General setup >> CPU/Task time and stats accounting >> Cputime accounting +CONFIG_TICK_CPU_ACCOUNTING p policy<{'powerpc-powerpc64-emb': 'n', 'powerpc-powerpc64-smp': 'n', 'ppc64el': 'n', '*': 'y'}> +CONFIG_VIRT_CPU_ACCOUNTING_NATIVE p policy<{'powerpc-powerpc64-emb': 'y', 'powerpc-powerpc64-smp': 'y', 'ppc64el': 'y'}> + +# Menu: General setup >> Choose SLAB allocator +CONFIG_SLUB y + +# Menu: General setup >> Configure standard kernel features (expert users) +CONFIG_EXPERT y +CONFIG_UID16 p policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y'}> +CONFIG_SGETMASK_SYSCALL y +CONFIG_SYSFS_SYSCALL y +CONFIG_SYSCTL_SYSCALL y +CONFIG_KALLSYMS y +CONFIG_KALLSYMS_ALL y +CONFIG_PRINTK y +CONFIG_BUG y +CONFIG_ELF_CORE y +CONFIG_PCSPKR_PLATFORM p policy<{'amd64': 'y', 'i386': 'y', 'powerpc-powerpc64-smp': 'y', 'powerpc-powerpc-smp': 'y', 'ppc64el': 'y'}> +CONFIG_BASE_FULL y +CONFIG_FUTEX y +CONFIG_EPOLL y +CONFIG_SIGNALFD y +CONFIG_TIMERFD y +CONFIG_EVENTFD y +CONFIG_BPF_SYSCALL y +CONFIG_SHMEM y +CONFIG_AIO y +CONFIG_ADVISE_SYSCALLS y +CONFIG_PCI_QUIRKS y +CONFIG_VM_EVENT_COUNTERS y +CONFIG_SLUB_DEBUG y + +# Menu: General setup >> Control Group support +CONFIG_CGROUPS y +CONFIG_CGROUP_FREEZER y +CONFIG_CGROUP_DEVICE y +CONFIG_CPUSETS y +CONFIG_PROC_PID_CPUSET y +CONFIG_CGROUP_CPUACCT y +CONFIG_MEMCG y +CONFIG_MEMCG_SWAP y +CONFIG_MEMCG_SWAP_ENABLED n +CONFIG_MEMCG_KMEM y +CONFIG_CGROUP_HUGETLB y +CONFIG_CGROUP_PERF y +CONFIG_BLK_CGROUP y +CONFIG_DEBUG_BLK_CGROUP n mark + +# Menu: General setup >> Control Group support >> Group CPU scheduler +CONFIG_CGROUP_SCHED y +CONFIG_FAIR_GROUP_SCHED y +CONFIG_CFS_BANDWIDTH y note +CONFIG_RT_GROUP_SCHED n note + +# Menu: General setup >> GCOV-based kernel profiling +CONFIG_GCOV_KERNEL n + +# Menu: General setup >> GCOV-based kernel profiling >> Specify GCOV format + +# Menu: General setup >> IRQ subsystem +CONFIG_IRQ_DOMAIN_DEBUG n +CONFIG_IRQ_FORCED_THREADING_DEFAULT p policy<{'amd64-lowlatency': 'y', 'i386-lowlatency': 'y', '*': 'n'}> +CONFIG_SPARSE_IRQ y + +# Menu: General setup >> Initial RAM filesystem and RAM disk (initramfs/initrd) support +CONFIG_BLK_DEV_INITRD y +CONFIG_INITRAMFS_SOURCE "" +CONFIG_RD_GZIP y +CONFIG_RD_BZIP2 y +CONFIG_RD_LZMA y +CONFIG_RD_XZ y +CONFIG_RD_LZO y +CONFIG_RD_LZ4 y + +# Menu: General setup >> Kernel Performance Events And Counters +CONFIG_PERF_EVENTS y + +# Menu: General setup >> Kernel compression mode +CONFIG_KERNEL_GZIP y + +# Menu: General setup >> Namespaces support +CONFIG_NAMESPACES y +CONFIG_UTS_NS y +CONFIG_IPC_NS y +CONFIG_USER_NS y +CONFIG_PID_NS y +CONFIG_NET_NS y + +# Menu: General setup >> RCU Subsystem +CONFIG_TASKS_RCU n +CONFIG_RCU_USER_QS p policy<{'amd64': 'y', 'armhf': 'n', 'powerpc': 'y', 'ppc64el': 'n'}> +CONFIG_CONTEXT_TRACKING_FORCE n note +CONFIG_RCU_FANOUT p policy<{'amd64': '64', 'arm64': '64', 'armhf': '32', 'i386': '32', 'powerpc-powerpc64-emb': '32', 'powerpc-powerpc64-smp': '64', 'powerpc-powerpc-e500mc': '32', 'powerpc-powerpc-smp': '32', 'ppc64el': '64'}> +CONFIG_RCU_FANOUT_LEAF 16 +CONFIG_RCU_FANOUT_EXACT n +CONFIG_RCU_FAST_NO_HZ p policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'n'}> +CONFIG_RCU_BOOST p policy<{'amd64': 'n', 'i386': 'n'}> +CONFIG_RCU_NOCB_CPU p policy<{'amd64': 'y', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc-powerpc64-emb': 'n', 'powerpc-powerpc64-smp': 'y', 'powerpc-powerpc-e500mc': 'n', 'powerpc-powerpc-smp': 'n', 'ppc64el': 'n'}> + +# Menu: General setup >> RCU Subsystem >> Build-forced no-CBs CPUs +CONFIG_RCU_NOCB_CPU_ALL p policy<{'amd64': 'y', 'powerpc': 'y'}> + +# Menu: General setup >> RCU Subsystem >> RCU Implementation +CONFIG_TREE_RCU p policy<{'amd64-generic': 'y', 'arm64': 'y', 'armhf': 'y', 'i386-generic': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_PREEMPT_RCU p policy<{'amd64-lowlatency': 'y', 'i386-lowlatency': 'y'}> + +# Menu: General setup >> Stack Protector buffer overflow detection +CONFIG_CC_STACKPROTECTOR_REGULAR p mark policy<{'powerpc': '-', 'ppc64el': '-', '*': 'y'}> + +# Menu: General setup >> Stack Protector buffer overflow detection >> Architecture: arm + +# Menu: General setup >> Stack Protector buffer overflow detection >> Architecture: powerpc + +# Menu: General setup >> Stack Protector buffer overflow detection >> Architecture: x86 + +# Menu: General setup >> Timers subsystem +CONFIG_NO_HZ_FULL_ALL p policy<{'amd64': 'n', 'powerpc': 'n'}> +CONFIG_NO_HZ_FULL_SYSIDLE p policy<{'amd64': 'y', 'powerpc': 'y'}> +CONFIG_NO_HZ_FULL_SYSIDLE_SMALL p policy<{'amd64': '8', 'powerpc': '8'}> +CONFIG_NO_HZ y +CONFIG_HIGH_RES_TIMERS y + +# Menu: General setup >> Timers subsystem >> Timer tick handling +CONFIG_NO_HZ_IDLE y note + +# Menu: Kernel hacking +CONFIG_MAGIC_SYSRQ y +CONFIG_PANIC_ON_OOPS n note +CONFIG_PANIC_TIMEOUT 0 +CONFIG_STACKTRACE y +CONFIG_PROVIDE_OHCI1394_DMA_INIT n +CONFIG_STRICT_DEVMEM y mark +CONFIG_DEBUG_RODATA p mark policy<{'amd64': 'y', 'i386': 'y', 'arm64': 'y', 'armhf': 'y'}> +CONFIG_DEBUG_SET_MODULE_RONX p mark policy<{'powerpc': '-', 'ppc64el': '-', '*': 'y'}> +CONFIG_EARLY_PRINTK y +CONFIG_DEBUG_RODATA p policy<{'amd64': 'y', 'i386': 'y', 'armhf': 'y'}> + +# Menu: Kernel hacking >> Architecture: arm +CONFIG_ARM_PTDUMP p policy<{'armhf': 'n'}> +CONFIG_ARM_UNWIND p policy<{'armhf': 'y'}> +CONFIG_DEBUG_USER p policy<{'armhf': 'n'}> +CONFIG_DEBUG_LL p policy<{'armhf': 'n'}> +CONFIG_DEBUG_IMX_UART_PORT p policy<{'armhf': '1'}> +CONFIG_DEBUG_VF_UART_PORT p policy<{'armhf': '1'}> +CONFIG_ARM_KPROBES_TEST p policy<{'armhf': 'm'}> +CONFIG_PID_IN_CONTEXTIDR p policy<{'arm64': 'n', 'armhf': 'n'}> + +# Menu: Kernel hacking >> Architecture: powerpc +CONFIG_PPC_DISABLE_WERROR p policy<{'powerpc': 'y', 'ppc64el': 'n'}> mark +CONFIG_PRINT_STACK_DEPTH p policy<{'powerpc': '64', 'ppc64el': '64'}> +CONFIG_HCALL_STATS p policy<{'powerpc-powerpc64-smp': 'n', 'ppc64el': 'n'}> +CONFIG_PPC_EMULATED_STATS p policy<{'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_CODE_PATCHING_SELFTEST p policy<{'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_FTR_FIXUP_SELFTEST p policy<{'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_MSI_BITMAP_SELFTEST p policy<{'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_XMON p policy<{'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_XMON_DEFAULT p policy<{'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_XMON_DISASSEMBLY p policy<{'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_BDI_SWITCH p policy<{'powerpc-powerpc-e500mc': 'n', 'powerpc-powerpc-smp': 'n'}> +CONFIG_BOOTX_TEXT p policy<{'powerpc-powerpc64-smp': 'n', 'powerpc-powerpc-smp': 'n', 'ppc64el': 'n'}> +CONFIG_PPC_EARLY_DEBUG p policy<{'powerpc': 'n', 'ppc64el': 'n'}> + +# Menu: Kernel hacking >> Architecture: x86 +CONFIG_DEBUG_NX_TEST n flag +CONFIG_X86_VERBOSE_BOOTUP p policy<{'amd64': 'n', 'i386': 'n'}> +CONFIG_DEBUG_NX_TEST p policy<{'amd64': 'n', 'i386': 'n'}> +CONFIG_DOUBLEFAULT p policy<{'amd64': 'y', 'i386': 'y'}> +CONFIG_IOMMU_STRESS p policy<{'amd64': 'n', 'i386': 'n'}> +CONFIG_OPTIMIZE_INLINING p policy<{'amd64': 'y', 'i386': 'y'}> +CONFIG_X86_PTDUMP n +CONFIG_X86_DECODER_SELFTEST n flag + +# Menu: Kernel hacking >> Compile-time checks and compiler options +CONFIG_ENABLE_WARN_DEPRECATED n +CONFIG_ENABLE_MUST_CHECK n +CONFIG_FRAME_WARN p policy<{'amd64': '1024', 'arm64': '1024', 'armhf': '1024', 'i386': '1024', 'powerpc': '1024', 'ppc64el': '2048'}> +CONFIG_STRIP_ASM_SYMS n +CONFIG_READABLE_ASM n +CONFIG_UNUSED_SYMBOLS y +CONFIG_HEADERS_CHECK n +CONFIG_FRAME_POINTER y +CONFIG_PAGE_OWNER n + +# Menu: Kernel hacking >> Compile-time checks and compiler options >> Compile the kernel with debug info +CONFIG_DEBUG_INFO y mark note +CONFIG_DEBUG_INFO_REDUCED n +CONFIG_DEBUG_INFO_SPLIT n note +CONFIG_DEBUG_INFO_DWARF4 y + +# Menu: Kernel hacking >> CoreSight Tracing Support >> Architecture: arm +CONFIG_CORESIGHT p policy<{'armhf': 'n'}> + +# Menu: Kernel hacking >> CoreSight Tracing Support >> CoreSight Link and Sink drivers >> Architecture: arm + +# Menu: Kernel hacking >> Debug Lockups and Hangs +CONFIG_LOCKUP_DETECTOR y +CONFIG_BOOTPARAM_HARDLOCKUP_PANIC n +CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC n +CONFIG_DETECT_HUNG_TASK y +CONFIG_DEFAULT_HUNG_TASK_TIMEOUT 120 +CONFIG_BOOTPARAM_HUNG_TASK_PANIC n + +# Menu: Kernel hacking >> Early debugging console >> Architecture: powerpc + +# Menu: Kernel hacking >> Early printk + +# Menu: Kernel hacking >> Early printk >> Architecture: x86 +CONFIG_EARLY_PRINTK_INTEL_MID p policy<{'i386': 'y'}> +CONFIG_EARLY_PRINTK_DBGP p policy<{'amd64': 'y', 'i386': 'y'}> +CONFIG_EARLY_PRINTK_EFI p policy<{'amd64': 'y', 'i386': 'y'}> + +# Menu: Kernel hacking >> IO delay type >> Architecture: x86 +CONFIG_IO_DELAY_0XED p policy<{'amd64': 'y', 'i386': 'y'}> + +# Menu: Kernel hacking >> Kernel debugging +CONFIG_DEBUG_BUGVERBOSE y +CONFIG_SCHEDSTATS y +CONFIG_SCHED_STACK_END_CHECK y +CONFIG_TIMER_STATS y +CONFIG_LATENCYTOP n note +CONFIG_DEBUG_STRICT_USER_COPY_CHECKS n + +# Menu: Kernel hacking >> Kernel debugging >> Fault-injection framework +CONFIG_FAULT_INJECTION n + +# Menu: Kernel hacking >> Kernel debugging >> KGDB: kernel debugger +CONFIG_KGDB y +CONFIG_KGDB_SERIAL_CONSOLE y note +CONFIG_KGDB_TESTS n +CONFIG_KGDB_LOW_LEVEL_TRAP p policy<{'amd64': 'y', 'i386': 'y'}> +CONFIG_KGDB_KDB y +CONFIG_KDB_KEYBOARD y +CONFIG_KDB_CONTINUE_CATASTROPHIC 0 + +# Menu: Kernel hacking >> Kernel debugging >> Notifier error injection +CONFIG_OF_RECONFIG_NOTIFIER_ERROR_INJECT n + +# Menu: Kernel hacking >> Kernel low-level debugging port >> Architecture: arm + +# Menu: Kernel hacking >> Lock Debugging (spinlocks, mutexes, etc...) +CONFIG_RT_MUTEX_TESTER n +CONFIG_PROVE_LOCKING n +CONFIG_LOCK_STAT n + +# Menu: Kernel hacking >> Memory Debugging +CONFIG_PAGE_EXTENSION n +CONFIG_SLUB_STATS n + +# Menu: Kernel hacking >> Memory Debugging >> Debug object operations + +# Menu: Kernel hacking >> Memory Debugging >> Kernel memory leak detector + +# Menu: Kernel hacking >> Memory Debugging >> kmemcheck: trap use of uninitialized memory + +# Menu: Kernel hacking >> Memory Debugging >> kmemcheck: trap use of uninitialized memory >> kmemcheck: default mode at boot + +# Menu: Kernel hacking >> RCU Debugging +CONFIG_SPARSE_RCU_POINTER n +CONFIG_RCU_TORTURE_TEST n flag +CONFIG_RCU_CPU_STALL_TIMEOUT p policy<{'amd64': '60', 'arm64': '60', 'armhf': '60', 'i386': '60', 'powerpc': '21', 'ppc64el': '21'}> +CONFIG_RCU_CPU_STALL_INFO n +CONFIG_RCU_TRACE n + +# Menu: Kernel hacking >> Runtime Testing +CONFIG_LKDTM n flag +CONFIG_TEST_LIST_SORT n flag +CONFIG_KPROBES_SANITY_TEST n flag +CONFIG_BACKTRACE_SELF_TEST n flag +CONFIG_ATOMIC64_SELFTEST n flag +CONFIG_TEST_RHASHTABLE n flag + +# Menu: Kernel hacking >> Sample kernel code +CONFIG_SAMPLES n + +# Menu: Kernel hacking >> Tracers +CONFIG_FTRACE y +CONFIG_IRQSOFF_TRACER n +CONFIG_PREEMPT_TRACER n +CONFIG_SCHED_TRACER y +CONFIG_FTRACE_SYSCALLS y +CONFIG_TRACER_SNAPSHOT y +CONFIG_TRACER_SNAPSHOT_PER_CPU_SWAP n +CONFIG_STACK_TRACER y +CONFIG_BLK_DEV_IO_TRACE y +CONFIG_KPROBE_EVENT y +CONFIG_UPROBE_EVENT y +CONFIG_FTRACE_STARTUP_TEST n flag +CONFIG_MMIOTRACE y +CONFIG_TRACEPOINT_BENCHMARK n +CONFIG_MMIOTRACE_TEST n flag +CONFIG_RING_BUFFER_BENCHMARK n flag +CONFIG_RING_BUFFER_STARTUP_TEST n flag + +# Menu: Kernel hacking >> Tracers >> Branch Profiling +CONFIG_BRANCH_PROFILE_NONE y + +# Menu: Kernel hacking >> Tracers >> Kernel Function Tracer +CONFIG_FUNCTION_TRACER y +CONFIG_FUNCTION_GRAPH_TRACER y +CONFIG_DYNAMIC_FTRACE y +CONFIG_FUNCTION_PROFILER y + +# Menu: Kernel hacking >> printk and dmesg options +CONFIG_PRINTK_TIME y +CONFIG_MESSAGE_LOGLEVEL_DEFAULT 4 +CONFIG_BOOT_PRINTK_DELAY p policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y'}> +CONFIG_DYNAMIC_DEBUG y + +# Menu: Library routines +CONFIG_CRC16 y +CONFIG_CRC_T10DIF y +CONFIG_CRC32 y +CONFIG_CRC32_SELFTEST n +CONFIG_RANDOM32_SELFTEST n +CONFIG_GLOB_SELFTEST n +CONFIG_AVERAGE y +CONFIG_DDR y + +# Menu: Library routines >> CRC32 implementation +CONFIG_CRC32_SLICEBY8 y + +# Menu: Library routines >> Select compiled-in fonts +CONFIG_FONTS p policy<{'armhf': 'y', '*': 'n'}> +CONFIG_FONT_8x8 y +CONFIG_FONT_8x16 y +CONFIG_FONT_6x11 p policy<{'armhf': 'n'}> +CONFIG_FONT_7x14 p policy<{'armhf': 'n'}> +CONFIG_FONT_PEARL_8x8 p policy<{'armhf': 'n'}> +CONFIG_FONT_ACORN_8x8 p policy<{'armhf': 'y'}> +CONFIG_FONT_MINI_4x6 p policy<{'armhf': 'n'}> +CONFIG_FONT_6x10 p policy<{'armhf': 'y'}> +CONFIG_FONT_SUN8x16 p policy<{'armhf': 'n'}> +CONFIG_FONT_SUN12x22 p policy<{'armhf': 'n'}> +CONFIG_FONT_10x18 p policy<{'armhf': 'n'}> + +# Menu: Library routines >> XZ decompression support +CONFIG_XZ_DEC y note +CONFIG_XZ_DEC_X86 y +CONFIG_XZ_DEC_POWERPC y +CONFIG_XZ_DEC_IA64 y +CONFIG_XZ_DEC_ARM y +CONFIG_XZ_DEC_ARMTHUMB y +CONFIG_XZ_DEC_SPARC y + +# Menu: Networking support +CONFIG_CEPH_LIB_PRETTYDEBUG n +CONFIG_CEPH_LIB_USE_DNS_RESOLVER y +CONFIG_NET y + +# Menu: Networking support >> Amateur Radio support +CONFIG_HAMRADIO y + +# Menu: Networking support >> Amateur Radio support >> Amateur Radio AX.25 Level 2 protocol +CONFIG_AX25_DAMA_SLAVE y + +# Menu: Networking support >> Amateur Radio support >> Amateur Radio AX.25 Level 2 protocol >> AX.25 network device drivers +CONFIG_SCC_DELAY n +CONFIG_SCC_TRXECHO n + +# Menu: Networking support >> Bluetooth subsystem support +CONFIG_BT_LE y + +# Menu: Networking support >> Bluetooth subsystem support >> Bluetooth Classic (BR/EDR) features +CONFIG_BT_BREDR y +CONFIG_BT_RFCOMM_TTY y +CONFIG_BT_BNEP_MC_FILTER y +CONFIG_BT_BNEP_PROTO_FILTER y + +# Menu: Networking support >> Bluetooth subsystem support >> Bluetooth device drivers + +# Menu: Networking support >> Bluetooth subsystem support >> Bluetooth device drivers >> HCI UART driver +CONFIG_BT_HCIUART_H4 y +CONFIG_BT_HCIUART_BCSP y +CONFIG_BT_HCIUART_ATH3K y +CONFIG_BT_HCIUART_LL y +CONFIG_BT_HCIUART_3WIRE y + +# Menu: Networking support >> CAIF support + +# Menu: Networking support >> CAN bus subsystem support + +# Menu: Networking support >> CAN bus subsystem support >> CAN Device Drivers + +# Menu: Networking support >> CAN bus subsystem support >> CAN Device Drivers >> Platform CAN drivers with Netlink support +CONFIG_CAN_CALC_BITTIMING y +CONFIG_CAN_LEDS y + +# Menu: Networking support >> CAN bus subsystem support >> CAN Device Drivers >> Platform CAN drivers with Netlink support >> Bosch CC770 and Intel AN82527 devices + +# Menu: Networking support >> CAN bus subsystem support >> CAN Device Drivers >> Platform CAN drivers with Netlink support >> Bosch C_CAN/D_CAN devices + +# Menu: Networking support >> CAN bus subsystem support >> CAN Device Drivers >> Platform CAN drivers with Netlink support >> CAN SPI interfaces + +# Menu: Networking support >> CAN bus subsystem support >> CAN Device Drivers >> Platform CAN drivers with Netlink support >> CAN USB interfaces + +# Menu: Networking support >> CAN bus subsystem support >> CAN Device Drivers >> Platform CAN drivers with Netlink support >> Philips/NXP SJA1000 devices +CONFIG_CAN_PEAK_PCIEC y + +# Menu: Networking support >> IrDA (infrared) subsystem support +CONFIG_IRDA_ULTRA y +CONFIG_IRDA_CACHE_LAST_LSAP y +CONFIG_IRDA_FAST_RR y + +# Menu: Networking support >> IrDA (infrared) subsystem support >> Infrared-port device drivers + +# Menu: Networking support >> IrDA (infrared) subsystem support >> Infrared-port device drivers >> Blackfin SIR on UART + +# Menu: Networking support >> IrDA (infrared) subsystem support >> Infrared-port device drivers >> Blackfin SIR on UART >> SIR Mode + +# Menu: Networking support >> IrDA (infrared) subsystem support >> Infrared-port device drivers >> Serial dongle support +CONFIG_DONGLE y + +# Menu: Networking support >> NFC subsystem support +CONFIG_NFC_NCI_SPI y +CONFIG_NFC_SHDLC y + +# Menu: Networking support >> NFC subsystem support >> Near Field Communication (NFC) devices + +# Menu: Networking support >> Networking options +CONFIG_PACKET y +CONFIG_UNIX y +CONFIG_XFRM_SUB_POLICY n +CONFIG_XFRM_MIGRATE n +CONFIG_XFRM_STATISTICS y +CONFIG_NET_KEY_MIGRATE n +CONFIG_NETWORK_SECMARK y +CONFIG_NETWORK_PHY_TIMESTAMPING n +CONFIG_BRIDGE_IGMP_SNOOPING y +CONFIG_BRIDGE_VLAN_FILTERING y +CONFIG_NET_DSA_HWMON y +CONFIG_VLAN_8021Q_GVRP y +CONFIG_VLAN_8021Q_MVRP y +CONFIG_DECNET_ROUTER n +CONFIG_IPX_INTERN n +CONFIG_DCB y +CONFIG_DNS_RESOLVER y +CONFIG_VMWARE_VMCI_VSOCKETS p policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_NETLINK_MMAP y +CONFIG_CGROUP_NET_PRIO y +CONFIG_CGROUP_NET_CLASSID y +CONFIG_BPF_JIT p policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'powerpc-powerpc64-emb': 'y', 'powerpc-powerpc64-smp': 'y', 'ppc64el': 'y'}> + +# Menu: Networking support >> Networking options >> Appletalk interfaces support +CONFIG_IPDDP_ENCAP y +CONFIG_COPS_DAYNA y +CONFIG_COPS_TANGENT y + +# Menu: Networking support >> Networking options >> Asynchronous Transfer Mode (ATM) +CONFIG_ATM_CLIP_NO_ICMP n +CONFIG_ATM_BR2684_IPFILTER n + +# Menu: Networking support >> Networking options >> B.A.T.M.A.N. Advanced Meshing Protocol +CONFIG_BATMAN_ADV_BLA y +CONFIG_BATMAN_ADV_DAT y +CONFIG_BATMAN_ADV_NC y +CONFIG_BATMAN_ADV_MCAST y + +# Menu: Networking support >> Networking options >> Network packet filtering framework (Netfilter) +CONFIG_NETFILTER y mark + +# Menu: Networking support >> Networking options >> Network packet filtering framework (Netfilter) >> Advanced netfilter configuration +CONFIG_NETFILTER_ADVANCED y + +# Menu: Networking support >> Networking options >> Network packet filtering framework (Netfilter) >> Advanced netfilter configuration >> DECnet: Netfilter Configuration + +# Menu: Networking support >> Networking options >> Network packet filtering framework (Netfilter) >> Core Netfilter Configuration + +# Menu: Networking support >> Networking options >> Network packet filtering framework (Netfilter) >> Core Netfilter Configuration >> Netfilter Xtables support (required for ip_tables) + +# Menu: Networking support >> Networking options >> Network packet filtering framework (Netfilter) >> Core Netfilter Configuration >> Netfilter connection tracking support +CONFIG_NF_CONNTRACK_MARK y +CONFIG_NF_CONNTRACK_SECMARK y +CONFIG_NF_CONNTRACK_ZONES y +CONFIG_NF_CONNTRACK_PROCFS n flag +CONFIG_NF_CONNTRACK_EVENTS y +CONFIG_NF_CONNTRACK_TIMEOUT y +CONFIG_NF_CONNTRACK_TIMESTAMP y +CONFIG_NETFILTER_NETLINK_QUEUE_CT y + +# Menu: Networking support >> Networking options >> Network packet filtering framework (Netfilter) >> Core Netfilter Configuration >> Netfilter nf_tables support + +# Menu: Networking support >> Networking options >> Network packet filtering framework (Netfilter) >> Ethernet Bridge nf_tables support + +# Menu: Networking support >> Networking options >> Network packet filtering framework (Netfilter) >> Ethernet Bridge tables (ebtables) support + +# Menu: Networking support >> Networking options >> Network packet filtering framework (Netfilter) >> IP set support +CONFIG_IP_SET_MAX 256 + +# Menu: Networking support >> Networking options >> Network packet filtering framework (Netfilter) >> IP virtual server support +CONFIG_IP_VS_IPV6 y +CONFIG_IP_VS_TAB_BITS 12 +CONFIG_IP_VS_PROTO_TCP y +CONFIG_IP_VS_PROTO_UDP y +CONFIG_IP_VS_PROTO_ESP y +CONFIG_IP_VS_PROTO_AH y +CONFIG_IP_VS_PROTO_SCTP y +CONFIG_IP_VS_SH_TAB_BITS 8 +CONFIG_IP_VS_NFCT y + +# Menu: Networking support >> Networking options >> Network packet filtering framework (Netfilter) >> IP: Netfilter Configuration + +# Menu: Networking support >> Networking options >> Network packet filtering framework (Netfilter) >> IP: Netfilter Configuration >> IP tables support (required for filtering/masq/NAT) + +# Menu: Networking support >> Networking options >> Network packet filtering framework (Netfilter) >> IP: Netfilter Configuration >> IP tables support (required for filtering/masq/NAT) >> Packet mangling + +# Menu: Networking support >> Networking options >> Network packet filtering framework (Netfilter) >> IP: Netfilter Configuration >> IP tables support (required for filtering/masq/NAT) >> iptables NAT support + +# Menu: Networking support >> Networking options >> Network packet filtering framework (Netfilter) >> IP: Netfilter Configuration >> IPv4 NAT + +# Menu: Networking support >> Networking options >> Network packet filtering framework (Netfilter) >> IPv6: Netfilter Configuration + +# Menu: Networking support >> Networking options >> Network packet filtering framework (Netfilter) >> IPv6: Netfilter Configuration >> IP6 tables support (required for filtering) + +# Menu: Networking support >> Networking options >> Network packet filtering framework (Netfilter) >> IPv6: Netfilter Configuration >> IPv6 NAT + +# Menu: Networking support >> Networking options >> Network testing +CONFIG_NET_DROP_MONITOR n + +# Menu: Networking support >> Networking options >> QoS and/or fair queueing +CONFIG_NET_SCHED y mark + +# Menu: Networking support >> Networking options >> QoS and/or fair queueing >> Actions +CONFIG_NET_CLS_ACT y +CONFIG_GACT_PROB y + +# Menu: Networking support >> Networking options >> QoS and/or fair queueing >> Extended Matches +CONFIG_NET_EMATCH y +CONFIG_NET_EMATCH_STACK 32 + +# Menu: Networking support >> Networking options >> QoS and/or fair queueing >> Universal 32bit comparisons w/ hashing (U32) +CONFIG_CLS_U32_PERF n +CONFIG_CLS_U32_MARK y +CONFIG_NET_CLS_IND n flag + +# Menu: Networking support >> Networking options >> TCP/IP networking +CONFIG_INET y +CONFIG_IP_MULTICAST y +CONFIG_NET_IPGRE_BROADCAST y +CONFIG_SYN_COOKIES y mark +CONFIG_NET_FOU_IP_TUNNELS y +CONFIG_INET_LRO y +CONFIG_TCP_MD5SIG y +CONFIG_NETLABEL y +CONFIG_NET_SWITCHDEV n + +# Menu: Networking support >> Networking options >> TCP/IP networking >> IP: advanced router +CONFIG_IP_ADVANCED_ROUTER y +CONFIG_IP_FIB_TRIE_STATS y +CONFIG_IP_MULTIPLE_TABLES y +CONFIG_IP_ROUTE_MULTIPATH y +CONFIG_IP_ROUTE_VERBOSE y + +# Menu: Networking support >> Networking options >> TCP/IP networking >> IP: kernel level autoconfiguration +CONFIG_IP_PNP y +CONFIG_IP_PNP_DHCP y +CONFIG_IP_PNP_BOOTP n +CONFIG_IP_PNP_RARP n + +# Menu: Networking support >> Networking options >> TCP/IP networking >> IP: multicast routing +CONFIG_IP_MROUTE y +CONFIG_IP_MROUTE_MULTIPLE_TABLES n +CONFIG_IP_PIMSM_V1 y +CONFIG_IP_PIMSM_V2 y + +# Menu: Networking support >> Networking options >> TCP/IP networking >> Layer Two Tunneling Protocol (L2TP) +CONFIG_L2TP_V3 y + +# Menu: Networking support >> Networking options >> TCP/IP networking >> Open vSwitch + +# Menu: Networking support >> Networking options >> TCP/IP networking >> TCP: advanced congestion control +CONFIG_TCP_CONG_ADVANCED y +CONFIG_TCP_CONG_CUBIC y note + +# Menu: Networking support >> Networking options >> TCP/IP networking >> TCP: advanced congestion control >> Default TCP congestion control +CONFIG_DEFAULT_CUBIC y + +# Menu: Networking support >> Networking options >> TCP/IP networking >> The DCCP Protocol + +# Menu: Networking support >> Networking options >> TCP/IP networking >> The DCCP Protocol >> DCCP CCIDs Configuration +CONFIG_IP_DCCP_CCID3 n + +# Menu: Networking support >> Networking options >> TCP/IP networking >> The DCCP Protocol >> DCCP Kernel Hacking + +# Menu: Networking support >> Networking options >> TCP/IP networking >> The IPv6 protocol +CONFIG_IPV6_OPTIMISTIC_DAD n flag +CONFIG_IPV6 y mark note +CONFIG_IPV6_ROUTER_PREF y +CONFIG_IPV6_ROUTE_INFO y +CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION m note +CONFIG_IPV6_SIT_6RD y +CONFIG_IPV6_MULTIPLE_TABLES y +CONFIG_IPV6_SUBTREES y +CONFIG_IPV6_MROUTE y +CONFIG_IPV6_MROUTE_MULTIPLE_TABLES y +CONFIG_IPV6_PIMSM_V2 y + +# Menu: Networking support >> Networking options >> TCP/IP networking >> The RDS Protocol +CONFIG_RDS m note + +# Menu: Networking support >> Networking options >> TCP/IP networking >> The SCTP Protocol +CONFIG_SCTP_COOKIE_HMAC_MD5 y +CONFIG_SCTP_COOKIE_HMAC_SHA1 y +CONFIG_SCTP_DBG_OBJCNT n flag + +# Menu: Networking support >> Networking options >> TCP/IP networking >> The SCTP Protocol >> Default SCTP cookie HMAC encoding +CONFIG_SCTP_DEFAULT_COOKIE_HMAC_SHA1 y + +# Menu: Networking support >> Networking options >> TCP/IP networking >> The TIPC Protocol +CONFIG_TIPC m note +CONFIG_TIPC_PORTS D +CONFIG_TIPC_MEDIA_IB y + +# Menu: Networking support >> Plan 9 Resource Sharing Support (9P2000) + +# Menu: Networking support >> RF switch subsystem support +CONFIG_RFKILL y +CONFIG_RFKILL_INPUT y + +# Menu: Networking support >> WiMAX Wireless Broadband support +CONFIG_WIMAX_DEBUG_LEVEL D + +# Menu: Networking support >> Wireless +CONFIG_WIRELESS y + +# Menu: Networking support >> Wireless >> Generic IEEE 802.11 Networking Stack (mac80211) +CONFIG_MAC80211_RC_MINSTREL y +CONFIG_MAC80211_RC_MINSTREL_HT y +CONFIG_MAC80211_RC_MINSTREL_VHT y +CONFIG_MAC80211_MESH y +CONFIG_MAC80211_LEDS y +CONFIG_MAC80211_DEBUGFS y +CONFIG_MAC80211_MESSAGE_TRACING y + +# Menu: Networking support >> Wireless >> Generic IEEE 802.11 Networking Stack (mac80211) >> Default rate control algorithm +CONFIG_MAC80211_RC_DEFAULT_MINSTREL y + +# Menu: Networking support >> Wireless >> Generic IEEE 802.11 Networking Stack (mac80211) >> Select mac80211 debugging features + +# Menu: Networking support >> Wireless >> cfg80211 - wireless configuration API +CONFIG_NL80211_TESTMODE n +CONFIG_CFG80211_DEVELOPER_WARNINGS n +CONFIG_CFG80211_CERTIFICATION_ONUS n +CONFIG_CFG80211_DEFAULT_PS y +CONFIG_CFG80211_DEBUGFS y +CONFIG_CFG80211_INTERNAL_REGDB n +CONFIG_CFG80211_WEXT y mark + +# Menu: Power management and ACPI options +CONFIG_SUSPEND y +CONFIG_SUSPEND_FREEZER y +CONFIG_HIBERNATION y +CONFIG_SFI p policy<{'amd64': 'y', 'i386': 'y'}> +CONFIG_INTEL_IDLE p policy<{'amd64': 'y', 'i386': 'y'}> +CONFIG_KVM_GUEST y +CONFIG_PM_STD_PARTITION "" +CONFIG_PM_AUTOSLEEP n +CONFIG_PM_WAKELOCKS y +CONFIG_PM_WAKELOCKS_LIMIT D +CONFIG_PM_WAKELOCKS_GC D +CONFIG_PM_TRACE_RTC y +CONFIG_SUSPEND p policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc-powerpc64-smp': 'y', 'powerpc-powerpc-smp': 'y', 'ppc64el': 'y'}> +CONFIG_SUSPEND_FREEZER p policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc-powerpc64-smp': 'y', 'powerpc-powerpc-smp': 'y', 'ppc64el': 'y'}> +CONFIG_HIBERNATION p policy<{'amd64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc-powerpc64-emb': 'n', 'powerpc-powerpc64-smp': 'y', 'powerpc-powerpc-e500mc': 'y', 'powerpc-powerpc-smp': 'y', 'ppc64el': 'y'}> +CONFIG_PM_STD_PARTITION p policy<{'amd64': '""', 'armhf': '""', 'i386': '""', 'powerpc-powerpc64-smp': '""', 'powerpc-powerpc-e500mc': '""', 'powerpc-powerpc-smp': '""', 'ppc64el': '""'}> +CONFIG_PM_AUTOSLEEP p policy<{'amd64': 'n', 'arm64': 'n', 'armhf': 'n', 'i386': 'n', 'powerpc-powerpc64-smp': 'n', 'powerpc-powerpc-e500mc': 'n', 'powerpc-powerpc-smp': 'n', 'ppc64el': 'n'}> +CONFIG_PM_WAKELOCKS p policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc-powerpc64-smp': 'y', 'powerpc-powerpc-e500mc': 'y', 'powerpc-powerpc-smp': 'y', 'ppc64el': 'y'}> +CONFIG_PM_WAKELOCKS_LIMIT p policy<{'amd64': '100', 'arm64': '100', 'armhf': '100', 'i386': '100', 'powerpc-powerpc64-smp': '100', 'powerpc-powerpc-e500mc': '100', 'powerpc-powerpc-smp': '100', 'ppc64el': '100'}> +CONFIG_PM_WAKELOCKS_GC p policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc-powerpc64-smp': 'y', 'powerpc-powerpc-e500mc': 'y', 'powerpc-powerpc-smp': 'y', 'ppc64el': 'y'}> +CONFIG_PM_TRACE_RTC p policy<{'amd64': 'y', 'i386': 'y'}> + +# Menu: Power management and ACPI options >> 512x-based boards >> Architecture: powerpc +CONFIG_PPC_MPC512x p policy<{'powerpc': 'n'}> + +# Menu: Power management and ACPI options >> 52xx-based boards >> Architecture: powerpc +CONFIG_PPC_MPC52xx p policy<{'powerpc': 'n'}> + +# Menu: Power management and ACPI options >> 82xx-based boards (PQ II) >> Architecture: powerpc +CONFIG_PPC_82xx n + +# Menu: Power management and ACPI options >> 83xx-based boards >> Architecture: powerpc +CONFIG_PPC_83xx n + +# Menu: Power management and ACPI options >> 86xx-based boards >> Architecture: powerpc +CONFIG_PPC_86xx n + +# Menu: Power management and ACPI options >> 8xx Machine Type >> Architecture: powerpc + +# Menu: Power management and ACPI options >> ACPI (Advanced Configuration and Power Interface) Support +CONFIG_ACPI y mark +CONFIG_ACPI_PROCFS_POWER n mark +CONFIG_ACPI_AC y +CONFIG_ACPI_BATTERY y +CONFIG_ACPI_BUTTON y +CONFIG_ACPI_FAN y +CONFIG_ACPI_DOCK y +CONFIG_ACPI_PROCESSOR y +CONFIG_ACPI_THERMAL y +CONFIG_ACPI_CONTAINER y note +CONFIG_ACPI_HED y +CONFIG_ACPI_CUSTOM_METHOD p mark policy<{'amd64': 'n', 'i386': 'n', 'arm64': 'n'}> note +CONFIG_ACPI_NUMA y +CONFIG_ACPI_CUSTOM_DSDT_FILE "" note +CONFIG_ACPI_INITRD_TABLE_OVERRIDE n +CONFIG_ACPI_PCI_SLOT y +CONFIG_X86_PM_TIMER y +CONFIG_ACPI_HOTPLUG_MEMORY y +CONFIG_ACPI_BGRT y +CONFIG_ACPI_REDUCED_HARDWARE_ONLY n + +# Menu: Power management and ACPI options >> ACPI (Advanced Configuration and Power Interface) Support >> ACPI Platform Error Interface (APEI) +CONFIG_ACPI_APEI y +CONFIG_ACPI_APEI_GHES y +CONFIG_ACPI_APEI_PCIEAER y +CONFIG_ACPI_APEI_MEMORY_FAILURE y + +# Menu: Power management and ACPI options >> ACPI (Advanced Configuration and Power Interface) Support >> PMIC (Power Management Integrated Circuit) operation region support +CONFIG_PMIC_OPREGION p policy<{'amd64': 'n', 'i386': 'n'}> + +# Menu: Power management and ACPI options >> APM (Advanced Power Management) BIOS support >> Architecture: x86 +CONFIG_APM m mark note +CONFIG_APM_IGNORE_USER_SUSPEND n +CONFIG_APM_DO_ENABLE n +CONFIG_APM_CPU_IDLE n +CONFIG_APM_DISPLAY_BLANK n +CONFIG_APM_ALLOW_INTS n + +# Menu: Power management and ACPI options >> Architecture: arm + +# Menu: Power management and ACPI options >> Architecture: powerpc +CONFIG_PPC_POWERNV p policy<{'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_PPC_POWERNV_RTAS p policy<{'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_PPC_CHRP p policy<{'powerpc': 'y'}> +CONFIG_PPC_PMAC p policy<{'powerpc': 'y', 'ppc64el': 'n'}> +CONFIG_PPC_PMAC32_PSURGE p policy<{'powerpc': 'y'}> +CONFIG_PPC_MAPLE p policy<{'powerpc': 'y', 'ppc64el': 'n'}> +CONFIG_PPC_IBM_CELL_BLADE p policy<{'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_PPC_CELLEB p policy<{'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_PPC_CELL_QPACE p policy<{'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_EPAPR_PARAVIRT p policy<{'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_PPC_OF_BOOT_TRAMPOLINE p policy<{'powerpc-powerpc64-emb': 'n', 'powerpc-powerpc64-smp': 'y', 'powerpc-powerpc-smp': 'y', 'ppc64el': 'y'}> +CONFIG_UDBG_RTAS_CONSOLE p policy<{'powerpc': 'y', 'ppc64el': 'n'}> +CONFIG_MPIC_TIMER p policy<{'powerpc': 'n'}> +CONFIG_MPIC_MSGR p policy<{'powerpc': 'y', 'ppc64el': 'n'}> +CONFIG_RTAS_PROC p policy<{'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_IBMEBUS p policy<{'powerpc': 'n', 'ppc64el': 'y'}> +CONFIG_PPC601_SYNC_FIX p policy<{'powerpc': 'n'}> +CONFIG_TAU p policy<{'powerpc': 'y'}> +CONFIG_TAU_INT p policy<{'powerpc': 'n'}> +CONFIG_TAU_AVERAGE p policy<{'powerpc': 'n'}> +CONFIG_QUICC_ENGINE p policy<{'powerpc': 'n'}> +CONFIG_CPM2 p policy<{'powerpc': 'y'}> +CONFIG_SIMPLE_GPIO p policy<{'powerpc': 'y', 'ppc64el': 'n'}> + +# 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 y +CONFIG_CPU_FREQ_STAT y note +CONFIG_CPU_FREQ_STAT_DETAILS y +CONFIG_CPU_FREQ_GOV_PERFORMANCE y note +CONFIG_CPU_FREQ_GOV_POWERSAVE y note +CONFIG_CPU_FREQ_GOV_USERSPACE y note +CONFIG_CPU_FREQ_GOV_ONDEMAND y note +CONFIG_CPU_FREQ_GOV_CONSERVATIVE y note +CONFIG_CPUFREQ_DT y note +CONFIG_ARM_OMAP2PLUS_CPUFREQ p policy<{'armhf': 'y'}> +CONFIG_ARM_TEGRA_CPUFREQ p policy<{'armhf': 'y'}> +CONFIG_ARM_EXYNOS5250_CPUFREQ p policy<{'armhf': 'n'}> +CONFIG_ARM_EXYNOS5440_CPUFREQ p policy<{'armhf': 'n'}> +CONFIG_CPU_FREQ_MAPLE y +CONFIG_CPU_FREQ_PMAC y +CONFIG_CPU_FREQ_PMAC64 y +CONFIG_PPC_PASEMI_CPUFREQ y +CONFIG_POWERNV_CPUFREQ y +CONFIG_X86_INTEL_PSTATE y +CONFIG_X86_PCC_CPUFREQ y note +CONFIG_X86_SPEEDSTEP_CENTRINO y note +CONFIG_X86_SPEEDSTEP_CENTRINO_TABLE y +CONFIG_X86_SPEEDSTEP_ICH y note +CONFIG_X86_SPEEDSTEP_SMI y note +CONFIG_X86_CPUFREQ_NFORCE2 y note +CONFIG_X86_SPEEDSTEP_RELAXED_CAP_CHECK y + +# Menu: Power management and ACPI options >> CPU Frequency scaling >> CPU Frequency scaling >> ACPI Processor P-States driver +CONFIG_X86_ACPI_CPUFREQ y note +CONFIG_X86_ACPI_CPUFREQ_CPB y +CONFIG_X86_POWERNOW_K8 y 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 y note + +# Menu: Power management and ACPI options >> CPU Idle + +# Menu: Power management and ACPI options >> CPU Idle >> CPU idle PM support +CONFIG_CPU_IDLE y +CONFIG_CPU_IDLE_GOV_LADDER y +CONFIG_CPU_IDLE_GOV_MENU y + +# Menu: Power management and ACPI options >> CPU Idle >> CPU idle PM support >> ARM CPU Idle Drivers +CONFIG_ARM_BIG_LITTLE_CPUIDLE p policy<{'armhf': 'y'}> +CONFIG_ARM_HIGHBANK_CPUIDLE p policy<{'armhf-generic': 'n', 'armhf': 'y'}> | value y> note +CONFIG_ARM_EXYNOS_CPUIDLE p policy<{'armhf': 'y'}> +CONFIG_ARM_BIG_LITTLE_CPUIDLE p policy<{'armhf': 'y'}> +CONFIG_ARM_HIGHBANK_CPUIDLE p policy<{'armhf-generic': 'n', 'armhf-generic-lpae': 'y'}> note +CONFIG_ARM_EXYNOS_CPUIDLE p policy<{'armhf': 'y'}> +CONFIG_ARM_MVEBU_V7_CPUIDLE p policy<{'armhf': 'y'}> + +# Menu: Power management and ACPI options >> CPU Idle >> CPU idle PM support >> ARM64 CPU Idle Drivers +CONFIG_ARM64_CPUIDLE p policy<{'arm64': 'y'}> + +# 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 y +CONFIG_POWERNV_CPUIDLE 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 >> ARM64 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 +CONFIG_SPU_FS_64K_LS y + +# Menu: Power management and ACPI options >> Device power management core functionality +CONFIG_APM_EMULATION p policy<{'armhf': 'n', 'powerpc-powerpc-smp': 'm'}> note +CONFIG_WQ_POWER_EFFICIENT_DEFAULT y +CONFIG_PM y + +# Menu: Power management and ACPI options >> Device power management core functionality >> Power Management Debug Support +CONFIG_PM_DEBUG y +CONFIG_PM_ADVANCED_DEBUG y mark +CONFIG_PM_TEST_SUSPEND n +CONFIG_DPM_WATCHDOG n + +# 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 +CONFIG_FSL_SOC_BOOKE p policy<{'powerpc': 'y'}> +CONFIG_BSC9131_RDB p policy<{'powerpc': 'n'}> +CONFIG_C293_PCIE p policy<{'powerpc': 'y'}> +CONFIG_BSC9132_QDS p policy<{'powerpc': 'y'}> +CONFIG_MPC8540_ADS p policy<{'powerpc': 'n'}> +CONFIG_MPC8560_ADS p policy<{'powerpc': 'n'}> +CONFIG_MPC85xx_CDS p policy<{'powerpc': 'n'}> +CONFIG_MPC85xx_MDS p policy<{'powerpc': 'n'}> +CONFIG_MPC8536_DS p policy<{'powerpc': 'n'}> +CONFIG_MPC85xx_DS p policy<{'powerpc': 'n'}> +CONFIG_MPC85xx_RDB p policy<{'powerpc': 'n'}> +CONFIG_P1010_RDB p policy<{'powerpc': 'n'}> +CONFIG_P1022_DS p policy<{'powerpc': 'n'}> +CONFIG_P1022_RDK p policy<{'powerpc': 'n'}> +CONFIG_P1023_RDB p policy<{'powerpc': 'y'}> +CONFIG_TWR_P102x p policy<{'powerpc': 'y'}> +CONFIG_SOCRATES p policy<{'powerpc': 'n'}> +CONFIG_KSI8560 p policy<{'powerpc': 'n'}> +CONFIG_XES_MPC85xx p policy<{'powerpc': 'n'}> +CONFIG_STX_GP3 p policy<{'powerpc': 'n'}> +CONFIG_TQM8540 p policy<{'powerpc': 'n'}> +CONFIG_TQM8541 p policy<{'powerpc': 'n'}> +CONFIG_TQM8548 p policy<{'powerpc': 'n'}> +CONFIG_TQM8555 p policy<{'powerpc': 'n'}> +CONFIG_TQM8560 p policy<{'powerpc': 'n'}> +CONFIG_SBC8548 p policy<{'powerpc': 'n'}> +CONFIG_PPA8548 p policy<{'powerpc': 'y'}> +CONFIG_GE_IMP3A p policy<{'powerpc': 'n'}> +CONFIG_SGY_CTS1000 p policy<{'powerpc': 'm'}> +CONFIG_PPC_QEMU_E500 p policy<{'powerpc': 'y'}> +CONFIG_CORENET_GENERIC p policy<{'powerpc': 'y'}> + +# 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 pSeries & new (POWER5-based) iSeries >> Architecture: powerpc +CONFIG_PPC_PSERIES p policy<{'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_PPC_SPLPAR p policy<{'powerpc': 'n', 'ppc64el': 'y'}> +CONFIG_IO_EVENT_IRQ p policy<{'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_LPARCFG p policy<{'powerpc': 'n', 'ppc64el': 'y'}> +CONFIG_PPC_SMLPAR p policy<{'powerpc': 'n', 'ppc64el': 'y'}> +CONFIG_HV_PERF_CTRS p policy<{'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_DTL p policy<{'ppc64el': 'y'}> + +# 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 >> Memory power savings + +# Menu: Power management and ACPI options >> PA Semi SoC-based platforms >> Architecture: powerpc +CONFIG_PPC_PASEMI p policy<{'powerpc': 'y', 'ppc64el': 'n'}> + +# Menu: Power management and ACPI options >> PA Semi SoC-based platforms >> PA Semi PWRficient options >> Architecture: powerpc +CONFIG_PPC_PASEMI_IOMMU p policy<{'powerpc': 'y'}> +CONFIG_PPC_PASEMI_IOMMU_DMA_FORCE p policy<{'powerpc': 'n'}> + +# Menu: Power management and ACPI options >> Sony PS3 >> Architecture: powerpc +CONFIG_PPC_PS3 p policy<{'powerpc': 'y', 'ppc64el': 'n'}> + +# Menu: Power management and ACPI options >> Sony PS3 >> PS3 Platform Options >> Architecture: powerpc +CONFIG_PS3_DYNAMIC_DMA p policy<{'powerpc': 'n'}> +CONFIG_PS3GELIC_UDBG p policy<{'powerpc': 'n'}> + +# Menu: Power management and ACPI options >> Sony PS3 >> PS3 Platform Options >> PS3 Advanced configuration options >> Architecture: powerpc +CONFIG_PS3_ADVANCED p policy<{'powerpc': 'n'}> +CONFIG_PS3_HTAB_SIZE p policy<{'powerpc': '20'}> +CONFIG_PS3_PS3AV p policy<{'powerpc': 'y'}> +CONFIG_PS3_SYS_MANAGER p policy<{'powerpc': 'y'}> +CONFIG_PS3_REPOSITORY_WRITE p policy<{'powerpc': 'n'}> + +# Menu: Processor support +CONFIG_SMP y +CONFIG_NR_CPUS p policy<{'amd64': 256, 'i386': 8, 'armhf': 4, 'arm64': 8, 'ppc64el': 2048, 'powerpc-powerpc64-emb': 8, 'powerpc-powerpc64-smp': 1024, 'powerpc-powerpc-e500mc': 8, 'powerpc-powerpc-smp': 4}> +CONFIG_SMP y +CONFIG_NR_CPUS p policy<{'amd64': '256', 'arm64': '8', 'armhf': '4', 'i386': '8', 'powerpc-powerpc64-emb': '8', 'powerpc-powerpc64-smp': '1024', 'powerpc-powerpc-e500mc': '8', 'powerpc-powerpc-smp': '4', 'ppc64el': '2048'}> + +# Menu: Processor support >> Architecture: powerpc +CONFIG_TUNE_CELL p policy<{'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_PPC_E500MC p policy<{'powerpc-powerpc64-emb': 'y', 'powerpc-powerpc-e500mc', 'y'}> +CONFIG_FSL_EMB_PERFMON p policy<{'powerpc-powerpc64-emb': 'y', 'powerpc-powerpc-e500mc', 'y'}> +CONFIG_PHYS_64BIT p policy<{'powerpc-powerpc64-emb': 'y', 'powerpc-powerpc-e500mc', 'y'}> +CONFIG_ALTIVEC p policy<{'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_VSX p policy<{'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_PPC_ICSWX p policy<{'powerpc': 'y', 'ppc64el': 'n'}> mark +CONFIG_PPC_ICSWX_PID p policy<{'powerpc': 'y'}> +CONFIG_PPC_ICSWX_USE_SIGILL p policy<{'powerpc': 'n'}> + +# Menu: Processor support >> CPU selection +CONFIG_GENERIC_CPU p policy<{'amd64': 'y', 'powerpc': 'y'}> + +# Menu: Processor support >> CPU selection >> Architecture: powerpc +CONFIG_POWER7_CPU p policy<{'powerpc-powerpc64-smp': 'n', 'ppc64el': 'y'}> + +# Menu: Processor support >> Processor Type >> Architecture: powerpc +CONFIG_PPC_BOOK3S_32 p policy<{'powerpc-powerpc-e500mc': 'n', 'powerpc-powerpc-smp': 'y'}> +CONFIG_PPC_85xx p policy<{'powerpc-powerpc-e500mc': 'y', 'powerpc-powerpc-smp': 'n', 'ppc64el': 'y'}> +CONFIG_PPC_BOOK3S_64 p policy<{'powerpc-powerpc64-emb': 'n', 'powerpc-powerpc64-smp': 'y', 'ppc64el': 'y'}> +CONFIG_PPC_BOOK3E_64 p policy<{'powerpc-powerpc64-emb': 'y', 'powerpc-powerpc64-smp': 'n', 'ppc64el': 'n'}> + +# Menu: Processor type and features +CONFIG_SCHED_MC p policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y'}> +CONFIG_SCHED_SMT p policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'n', 'i386': 'y', 'powerpc-powerpc64-emb': 'n', 'powerpc-powerpc64-smp': 'y', 'ppc64el': 'y'}> +CONFIG_HOTPLUG_CPU p policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc-powerpc64-smp': 'y', 'powerpc-powerpc-e500mc': 'y', 'powerpc-powerpc-smp': 'y', 'ppc64el': 'y'}> +CONFIG_HIGHMEM p policy<{'armhf': 'y', 'i386': 'y', 'powerpc-powerpc-e500mc': 'y', 'powerpc-powerpc-smp': 'y'}> +CONFIG_HIGHPTE p policy<{'armhf': 'y', 'i386': 'y'}> +CONFIG_SPARSEMEM_VMEMMAP p policy<{'amd64': 'y', 'arm64': 'y', 'powerpc-powerpc64-emb': 'y', 'powerpc-powerpc64-smp': 'y', 'ppc64el': 'y'}> +CONFIG_MOVABLE_NODE p policy<{'amd64': 'y'}> +CONFIG_MEMORY_HOTPLUG p policy<{'amd64': 'y', 'i386': 'y', 'powerpc-powerpc64-smp': 'y', 'ppc64el': 'y'}> +CONFIG_MEMORY_HOTREMOVE p policy<{'amd64': 'y', 'i386': 'y', 'powerpc-powerpc64-smp': 'y', 'ppc64el': 'y'}> +CONFIG_BALLOON_COMPACTION y +CONFIG_COMPACTION y +CONFIG_MIGRATION y +CONFIG_BOUNCE y +CONFIG_KSM y +CONFIG_DEFAULT_MMAP_MIN_ADDR p mark policy<{'amd64': '65536', 'arm64': '32768', 'armhf': '32768', 'i386': '65536', 'powerpc': '65536', 'ppc64el': '65536'}> note +CONFIG_MEMORY_FAILURE p policy<{'amd64': 'y', 'powerpc-powerpc64-smp': 'y', 'ppc64el': 'y'}> +CONFIG_HWPOISON_INJECT p policy<{'amd64': 'm', 'powerpc-powerpc64-smp': 'm', 'ppc64el': 'm'}> +CONFIG_TRANSPARENT_HUGEPAGE p policy<{'amd64': 'y', 'arm64': 'y', 'armhf-generic-lpae': 'y', 'i386': 'y', 'ppc64el': 'y'}> +CONFIG_CLEANCACHE y +CONFIG_FRONTSWAP y +CONFIG_CMA y +CONFIG_CMA_DEBUG n +CONFIG_CMA_AREAS 7 +CONFIG_MEM_SOFT_DIRTY p policy<{'amd64': 'y'}> +CONFIG_ZSWAP y +CONFIG_ZPOOL y +CONFIG_ZBUD y +CONFIG_ZSMALLOC y +CONFIG_PGTABLE_MAPPING y +CONFIG_FORCE_MAX_ZONEORDER p policy<{'arm64': '11', 'armhf-generic': '12', 'armhf-generic-lpae': '11', 'powerpc-powerpc64-emb': '13', 'powerpc-powerpc64-smp': '13', 'powerpc-powerpc-e500mc': '11', 'powerpc-powerpc-smp': '11', 'ppc64el': '9'}> +CONFIG_SECCOMP y mark +CONFIG_XEN p policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'n', 'i386': 'y'}> +CONFIG_MATH_EMULATION p policy<{'i386': 'n', 'powerpc-powerpc64-emb': 'y', 'powerpc-powerpc-e500mc': 'y'}> +CONFIG_NUMA p policy<{'amd64': 'y', 'powerpc-powerpc64-emb': 'n', 'powerpc-powerpc64-smp': 'y', 'ppc64el': 'y'}> +CONFIG_CMDLINE_BOOL p policy<{'amd64': 'n', 'i386': 'n', 'powerpc': 'n', 'ppc64el': 'n'}> +CONFIG_XEN p policy<(arch i386 amd64 arm64 &/ value y) | value n> +CONFIG_SCHED_MC y +CONFIG_SCHED_SMT p policy<(arch armhf &/ value n) | (flavour powerpc64-emb &/ value n) | value y> +CONFIG_HOTPLUG_CPU y +CONFIG_NUMA p policy<{'powerpc-powerpc64-emb': 'n', '*': 'y'}> +CONFIG_MOVABLE_NODE y +CONFIG_MEMORY_HOTPLUG y +CONFIG_MEMORY_HOTREMOVE y + +# Menu: Processor type and features >> Architecture: arm +CONFIG_HAVE_ARM_ARCH_TIMER p policy<{'armhf': 'y'}> +CONFIG_ARM_PSCI p policy<{'armhf': 'y'}> +CONFIG_THUMB2_KERNEL p policy<{'armhf': 'n'}> +CONFIG_AEABI p policy<{'armhf': 'y'}> +CONFIG_OABI_COMPAT p policy<{'armhf': 'n'}> +CONFIG_HW_PERF_EVENTS p policy<{'arm64': 'y', 'armhf': 'y'}> +CONFIG_UACCESS_WITH_MEMCPY p policy<{'armhf': 'n'}> + +# Menu: Processor type and features >> Architecture: powerpc +CONFIG_PPC_TRANSACTIONAL_MEM p policy<{'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_SWIOTLB y +CONFIG_PPC64_SUPPORTS_MEMORY_FAILURE p policy<{'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_FA_DUMP p policy<{'powerpc': 'y', 'ppc64el': 'y'}> note +CONFIG_IRQ_ALL_CPUS p policy<{'powerpc': 'n', 'ppc64el': 'y'}> +CONFIG_PPC_SUBPAGE_PROT p policy<{'ppc64el': 'y'}> +CONFIG_PPC_DENORMALISATION p policy<{'powerpc': 'n', 'ppc64el': 'y'}> +CONFIG_EXTRA_TARGETS p policy<{'powerpc': '""', 'ppc64el': '""'}> + +# Menu: Processor type and features >> Architecture: x86 +CONFIG_ZONE_DMA y +CONFIG_X86_FEATURE_NAMES p policy<{'amd64': 'y', 'i386': 'y'}> +CONFIG_X86_X2APIC p policy<{'amd64': 'y'}> +CONFIG_X86_MPPARSE p policy<{'amd64': 'y', 'i386': 'y'}> +CONFIG_X86_EXTENDED_PLATFORM p policy<{'amd64': 'y', 'i386': 'y'}> +CONFIG_X86_INTEL_LPSS p policy<{'amd64': 'y', 'i386': 'y'}> +CONFIG_IOSF_MBI p policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_IOSF_MBI_DEBUG p policy<{'amd64': 'y', 'i386': 'y'}> +CONFIG_X86_32_IRIS p policy<{'i386': 'm'}> +CONFIG_SCHED_OMIT_FRAME_POINTER p policy<{'amd64': 'y', 'i386': 'y', 'powerpc': 'y', 'ppc64el': 'y'}> +CONFIG_MEMTEST p policy<{'amd64': 'y', 'i386': 'y'}> +CONFIG_X86_GENERIC p policy<{'i386': 'y'}> +CONFIG_X86_PPRO_FENCE p policy<{'i386': 'y'}> +CONFIG_HPET_TIMER p policy<{'amd64': 'y', 'i386': 'y'}> +CONFIG_DMI p policy<{'amd64': 'y', 'arm64': 'y', 'i386': 'y'}> +CONFIG_GART_IOMMU p policy<{'amd64': 'y'}> +CONFIG_CALGARY_IOMMU p policy<{'amd64': 'y'}> +CONFIG_CALGARY_IOMMU_ENABLED_BY_DEFAULT p policy<{'amd64': 'y'}> +CONFIG_X86_REROUTE_FOR_BROKEN_BOOT_IRQS p policy<{'amd64': 'y', 'i386': 'y'}> +CONFIG_VM86 p policy<{'i386': 'n'}> +CONFIG_X86_16BIT p policy<{'amd64': 'y', 'i386': 'y'}> +CONFIG_X86_VSYSCALL_EMULATION p policy<{'amd64': 'y'}> +CONFIG_TOSHIBA p policy<{'i386': 'n'}> +CONFIG_I8K p policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_X86_REBOOTFIXUPS p policy<{'i386': 'y'}> +CONFIG_X86_MSR p policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_X86_CPUID p policy<{'amd64': 'm', 'i386': 'm'}> +CONFIG_X86_PAE p policy<{'i386': 'y'}> +CONFIG_DIRECT_GBPAGES p policy<{'amd64': 'y'}> +CONFIG_ARCH_MEMORY_PROBE p policy<{'amd64': 'y', 'powerpc-powerpc64-smp': 'y', 'ppc64el': 'y'}> +CONFIG_X86_CHECK_BIOS_CORRUPTION p policy<{'amd64': 'y', 'i386': 'y'}> +CONFIG_X86_BOOTPARAM_MEMORY_CORRUPTION_CHECK p policy<{'amd64': 'y', 'i386': 'y'}> +CONFIG_X86_RESERVE_LOW p policy<{'amd64': '64', 'i386': '64'}> +CONFIG_MTRR p policy<{'amd64': 'y', 'i386': 'y'}> +CONFIG_MTRR_SANITIZER p policy<{'amd64': 'y', 'i386': 'y'}> +CONFIG_MTRR_SANITIZER_ENABLE_DEFAULT p policy<{'amd64': '1', 'i386': '1'}> +CONFIG_MTRR_SANITIZER_SPARE_REG_NR_DEFAULT p policy<{'amd64': '1', 'i386': '1'}> +CONFIG_X86_PAT p policy<{'amd64': 'y', 'i386': 'y'}> +CONFIG_ARCH_RANDOM p policy<{'amd64': 'y', 'i386': 'y', 'powerpc-powerpc64-emb': 'n', 'powerpc-powerpc64-smp': 'y', 'powerpc-powerpc-e500mc': 'n', 'powerpc-powerpc-smp': 'n', 'ppc64el': 'y'}> +CONFIG_X86_SMAP p policy<{'amd64': 'y', 'i386': 'y'}> +CONFIG_X86_INTEL_MPX p policy<{'amd64': 'y', 'i386': 'y'}> +CONFIG_EFI p policy<{'amd64': 'y', 'arm64': 'y', 'i386': 'y'}> +CONFIG_EFI_STUB p policy<{'amd64': 'y', 'arm64': 'y', 'i386': 'y'}> +CONFIG_EFI_MIXED p policy<{'amd64': 'y'}> +CONFIG_KEXEC_FILE p policy<{'amd64': 'y'}> +CONFIG_KEXEC_VERIFY_SIG p policy<{'amd64': 'y'}> +CONFIG_KEXEC_JUMP p policy<{'amd64': 'y', 'i386': 'y'}> +CONFIG_RANDOMIZE_BASE p policy<{'amd64': 'y', 'i386': 'y'}> +CONFIG_COMPAT_VDSO p mark policy<{'amd64': 'n', 'i386': 'n'}> + +# Menu: Processor type and features >> CPU microcode loading support >> Architecture: x86 +CONFIG_MICROCODE p policy<{'amd64': 'y', 'i386': 'y'}> +CONFIG_MICROCODE_INTEL p policy<{'amd64': 'y', 'i386': 'y'}> +CONFIG_MICROCODE_AMD p policy<{'amd64': 'y', 'i386': 'y'}> +CONFIG_MICROCODE_EARLY p policy<{'amd64': 'y', 'i386': 'y'}> + +# Menu: Processor type and features >> Device power management core functionality + +# Menu: Processor type and features >> Device power management core functionality >> Power Management Debug Support + +# Menu: Processor type and features >> High Memory Support >> Architecture: x86 +CONFIG_HIGHMEM64G y + +# Menu: Processor type and features >> Linux guest support >> Architecture: x86 +CONFIG_HYPERVISOR_GUEST 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 y +CONFIG_PARAVIRT_SPINLOCKS y +CONFIG_XEN_PVH y +CONFIG_KVM_DEBUG_FS y +CONFIG_PARAVIRT_TIME_ACCOUNTING n +CONFIG_LGUEST_GUEST n + +# Menu: Processor type and features >> Machine Check / overheating reporting >> Architecture: x86 +CONFIG_X86_MCE p policy<{'amd64': 'y', 'i386': 'y'}> +CONFIG_X86_MCE_INTEL p policy<{'amd64': 'y', 'i386': 'y'}> +CONFIG_X86_MCE_AMD p policy<{'amd64': 'y', 'i386': 'y'}> +CONFIG_X86_ANCIENT_MCE p policy<{'i386': 'n'}> + +# Menu: Processor type and features >> Math emulation options >> Architecture: powerpc +CONFIG_MATH_EMULATION_FULL p policy<{'powerpc': 'n'}> +CONFIG_MATH_EMULATION_HW_UNIMPLEMENTED p policy<{'powerpc': 'y'}> + +# Menu: Processor type and features >> Memory model +CONFIG_SPARSEMEM_MANUAL y + +# Menu: Processor type and features >> Memory split +CONFIG_VMSPLIT_3G y + +# 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: powerpc +CONFIG_PPC_4K_PAGES p policy<{'powerpc': 'y', 'ppc64el': 'n'}> +CONFIG_PPC_64K_PAGES p policy<{'powerpc': 'n', 'ppc64el': 'y'}> + +# Menu: Processor type and features >> Preemption Model +CONFIG_PREEMPT_VOLUNTARY p policy<(!flavour lowlatency &/ value y) | value n> +CONFIG_PREEMPT p policy<(flavour lowlatency &/ value y) | value n> + +# Menu: Processor type and features >> Processor family + +# Menu: Processor type and features >> Processor family >> Architecture: x86 +CONFIG_M686 y + +# Menu: Processor type and features >> Support for extended (non-PC) x86 platforms >> Architecture: x86 +CONFIG_X86_NUMACHIP p policy<{'amd64': 'y', 'i386': 'y'}> +CONFIG_X86_VSMP p policy<{'amd64': 'n', 'i386': 'n'}> +CONFIG_X86_UV p policy<{'amd64': 'n', 'i386': 'n'}> +CONFIG_X86_GOLDFISH p policy<{'amd64': 'n', 'i386': 'n'}> +CONFIG_X86_INTEL_MID p policy<{'amd64': 'y', 'i386': 'y'}> +CONFIG_X86_RDC321X p policy<{'amd64': 'n', 'i386': 'n'}> +CONFIG_X86_32_NON_STANDARD p policy<{'amd64': 'n', 'i386': 'n'}> +CONFIG_APB_TIMER p policy<{'amd64': 'y', 'i386': 'y'}> + +# Menu: Processor type and features >> Supported processor vendors >> Architecture: x86 +CONFIG_PROCESSOR_SELECT p policy<{'amd64': 'y', 'i386': 'y'}> +CONFIG_CPU_SUP_INTEL p policy<{'amd64': 'y', 'i386': 'y'}> +CONFIG_CPU_SUP_CYRIX_32 p policy<{'i386': 'y'}> +CONFIG_CPU_SUP_AMD p policy<{'amd64': 'y', 'i386': 'y'}> +CONFIG_CPU_SUP_CENTAUR p policy<{'amd64': 'y', 'i386': 'y'}> +CONFIG_CPU_SUP_TRANSMETA_32 p policy<{'i386': 'y'}> +CONFIG_CPU_SUP_UMC_32 p policy<{'i386': 'y'}> + +# Menu: Processor type and features >> Symmetric Multi-Processing + +# Menu: Processor type and features >> Symmetric Multi-Processing >> Architecture: arm +CONFIG_SMP_ON_UP p policy<{'armhf': 'y'}> +CONFIG_ARM_CPU_TOPOLOGY p policy<{'armhf': 'y'}> +CONFIG_MCPM p policy<{'armhf': 'y'}> +CONFIG_BIG_LITTLE p policy<{'armhf': 'y'}> +CONFIG_BL_SWITCHER p policy<{'armhf': 'y'}> + +# Menu: Processor type and features >> Symmetric multi-processing support + +# Menu: Processor type and features >> Symmetric multi-processing support >> Architecture: x86 +CONFIG_NODES_SHIFT p policy<{'amd64': '6', 'powerpc-powerpc64-smp': '8', 'ppc64el': '8'}> +CONFIG_X86_BIGSMP p policy<{'amd64': 'n', 'i386': 'n'}> +CONFIG_MAXSMP p policy<{'amd64': 'n', 'i386': 'n'}> +CONFIG_BOOTPARAM_HOTPLUG_CPU0 p policy<{'amd64': 'n', 'i386': 'n'}> + +# 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_AMD_NUMA p policy<{'amd64': 'y', 'i386': 'y'}> +CONFIG_X86_64_ACPI_NUMA p policy<{'amd64': 'y', 'i386': 'y'}> +CONFIG_NUMA_EMU p policy<{'amd64': 'n', 'i386': 'n'}> + +# Menu: Processor type and features >> Timer frequency +CONFIG_HZ_250 p policy<(!flavour lowlatency &/ value y) | value n> +CONFIG_HZ_1000 p policy<(flavour lowlatency &/ value y) | value n> + +# Menu: Processor type and features >> Timer frequency >> Architecture: arm + +# Menu: Processor type and features >> Transparent Hugepage Support sysfs defaults +CONFIG_TRANSPARENT_HUGEPAGE_ALWAYS y + +# Menu: Security options +CONFIG_SECURITY_DMESG_RESTRICT n +CONFIG_SECURITYFS y +CONFIG_INTEL_TXT p policy<(arch i386 amd64 &/ value y) | value n)> + +# Menu: Security options >> Default security module +CONFIG_DEFAULT_SECURITY_APPARMOR y mark + +# Menu: Security options >> Enable access key retention support +CONFIG_KEYS y +CONFIG_PERSISTENT_KEYRINGS y +CONFIG_BIG_KEYS y +CONFIG_TRUSTED_KEYS y +CONFIG_ENCRYPTED_KEYS y +CONFIG_KEYS_DEBUG_PROC_KEYS y + +# Menu: Security options >> Enable different security models +CONFIG_SECURITY y mark +CONFIG_SECURITY_NETWORK y +CONFIG_SECURITY_NETWORK_XFRM y +CONFIG_SECURITY_PATH y +CONFIG_LSM_MMAP_MIN_ADDR 0 mark mark +CONFIG_SECURITY_SMACK y mark +CONFIG_SECURITY_SMACK_BRINGUP n +CONFIG_SECURITY_YAMA y mark +CONFIG_SECURITY_YAMA_STACKED y + +# Menu: Security options >> Enable different security models >> AppArmor support +CONFIG_SECURITY_APPARMOR y +CONFIG_SECURITY_APPARMOR_BOOTPARAM_VALUE 1 +CONFIG_SECURITY_APPARMOR_STATS n +CONFIG_SECURITY_APPARMOR_UNCONFINED_INIT y +CONFIG_SECURITY_APPARMOR_HASH y +CONFIG_SECURITY_APPARMOR_HASH_DEFAULT y + +# Menu: Security options >> Enable different security models >> Integrity subsystem +CONFIG_INTEGRITY y +CONFIG_INTEGRITY_SIGNATURE y +CONFIG_INTEGRITY_ASYMMETRIC_KEYS y +CONFIG_INTEGRITY_AUDIT y +CONFIG_EVM y +CONFIG_EVM_ATTR_FSUUID y +CONFIG_EVM_EXTRA_SMACK_XATTRS y + +# Menu: Security options >> Enable different security models >> Integrity subsystem >> Integrity Measurement Architecture(IMA) +CONFIG_IMA p policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'powerpc-powerpc64-emb': 'n', 'powerpc-powerpc64-smp': 'y', 'powerpc-powerpc-e500mc': 'y', 'powerpc-powerpc-smp': 'y', 'ppc64el': 'y'}> +CONFIG_IMA_APPRAISE y +CONFIG_IMA_TRUSTED_KEYRING y +CONFIG_IMA_LOAD_X509 n + +# Menu: Security options >> Enable different security models >> Integrity subsystem >> Integrity Measurement Architecture(IMA) >> Default integrity hash algorithm +CONFIG_IMA_DEFAULT_HASH_SHA1 y + +# Menu: Security options >> Enable different security models >> Integrity subsystem >> Integrity Measurement Architecture(IMA) >> Default template +CONFIG_IMA_NG_TEMPLATE y + +# Menu: Security options >> Enable different security models >> NSA SELinux Support +CONFIG_SECURITY_SELINUX y mark +CONFIG_SECURITY_SELINUX_BOOTPARAM y +CONFIG_SECURITY_SELINUX_BOOTPARAM_VALUE 0 +CONFIG_SECURITY_SELINUX_DISABLE y +CONFIG_SECURITY_SELINUX_DEVELOP y +CONFIG_SECURITY_SELINUX_AVC_STATS y +CONFIG_SECURITY_SELINUX_CHECKREQPROT_VALUE 1 +CONFIG_SECURITY_SELINUX_POLICYDB_VERSION_MAX n +CONFIG_SECURITY_SELINUX_BOOTPARAM y + +# Menu: Security options >> Enable different security models >> TOMOYO Linux Support +CONFIG_SECURITY_TOMOYO y +CONFIG_SECURITY_TOMOYO_MAX_ACCEPT_ENTRY 2048 +CONFIG_SECURITY_TOMOYO_MAX_AUDIT_LOG 1024 +CONFIG_SECURITY_TOMOYO_OMIT_USERSPACE_LOADER n +CONFIG_SECURITY_TOMOYO_POLICY_LOADER "/sbin/tomoyo-init" +CONFIG_SECURITY_TOMOYO_ACTIVATION_TRIGGER "/sbin/init" + +# Menu: System Type + +# Menu: System Type >> ARM Ltd. Integrator family >> Architecture: arm + +# Menu: System Type >> ARM Ltd. Integrator family >> Integrator Options >> Architecture: arm + +# Menu: System Type >> ARM Ltd. Versatile Express family >> Architecture: arm +CONFIG_ARCH_VEXPRESS p policy<{'arm64': 'y', 'armhf': 'y'}> +CONFIG_ARCH_VEXPRESS_CORTEX_A5_A9_ERRATA p policy<{'armhf': 'y'}> +CONFIG_ARCH_VEXPRESS_DCSCB p policy<{'armhf': 'y'}> +CONFIG_ARCH_VEXPRESS_SPC p policy<{'armhf': 'y'}> +CONFIG_ARCH_VEXPRESS_TC2_PM p policy<{'armhf': 'y'}> + +# Menu: System Type >> ARM system type >> Architecture: arm +CONFIG_ARCH_MULTIPLATFORM p policy<{'armhf': 'y'}> + +# Menu: System Type >> Allwinner SoCs >> Architecture: arm +CONFIG_ARCH_SUNXI n + +# Menu: System Type >> Amlogic Meson SoCs >> Architecture: arm +CONFIG_ARCH_MESON p policy<{'armhf': 'y'}> +CONFIG_MACH_MESON6 p policy<{'armhf': 'y'}> +CONFIG_MACH_MESON8 p policy<{'armhf': 'y'}> + +# Menu: System Type >> Architecture: arm +#set +tree-menu 'System Type' = D +CONFIG_ARCH_VIRT p policy<{'armhf': 'y'}> +CONFIG_ARCH_AXXIA p policy<{'armhf': 'y'}> +CONFIG_ARCH_HIGHBANK p policy<{'armhf': 'y'}> +CONFIG_ARCH_KEYSTONE p policy<{'armhf': 'n'}> +CONFIG_ARCH_ROCKCHIP p policy<{'armhf': 'n'}> +CONFIG_ARCH_SOCFPGA p policy<{'armhf': 'n'}> +CONFIG_ARCH_R8A7790 p policy<{'armhf': 'y'}> +CONFIG_MACH_LAGER p policy<{'armhf': 'y'}> +CONFIG_ARCH_WM8850 p policy<{'armhf': 'n'}> +CONFIG_ARCH_ZYNQ p policy<{'armhf': 'n'}> +CONFIG_ARM_THUMB p policy<{'armhf': 'y'}> +CONFIG_CPU_DCACHE_DISABLE p policy<{'armhf': 'n'}> +CONFIG_IWMMXT p policy<{'armhf': 'y'}> +CONFIG_ARM_ERRATA_430973 p policy<{'armhf': 'y'}> +CONFIG_ARM_ERRATA_643719 p policy<{'armhf': 'y'}> +CONFIG_ARM_ERRATA_720789 p policy<{'armhf': 'y'}> +CONFIG_ARM_ERRATA_754322 p policy<{'armhf': 'y'}> +CONFIG_ARM_ERRATA_754327 p policy<{'armhf': 'y'}> +CONFIG_ARM_ERRATA_764369 p policy<{'armhf': 'y'}> +CONFIG_ARM_ERRATA_775420 p policy<{'armhf': 'y'}> +CONFIG_ARM_ERRATA_798181 p policy<{'armhf': 'y'}> +CONFIG_ARM_ERRATA_773022 p policy<{'armhf': 'y'}> +CONFIG_ARCH_MEDIATEK p policy<{'armhf': 'y'}> +CONFIG_ARCH_S5PV210 p policy<{'armhf': 'n'}> +CONFIG_ARCH_R8A7740 p policy<{'armhf': 'y'}> +CONFIG_ARCH_R8A7779 p policy<{'armhf': 'y'}> +CONFIG_MACH_MARZEN p policy<{'armhf': 'y'}> +CONFIG_CACHE_FEROCEON_L2 p policy<{'armhf': 'y'}> +CONFIG_CACHE_FEROCEON_L2_WRITETHROUGH p policy<{'armhf': 'n'}> +CONFIG_CACHE_TAUROS2 p policy<{'armhf': 'y'}> +CONFIG_ARM_KERNMEM_PERMS p policy<{'armhf': 'n'}> +CONFIG_PJ4B_ERRATA_4742 p policy<{'armhf': 'y'}> + +# Menu: System Type >> Atmel AT91 System-on-Chip >> Architecture: arm + +# Menu: System Type >> Atmel AT91 System-on-Chip >> Core type >> Architecture: arm + +# Menu: System Type >> Broadcom SoC Support >> Architecture: arm +CONFIG_ARCH_BCM p policy<{'armhf': 'n'}> + +# Menu: System Type >> CLPS711X/EP721X/EP731X Implementations >> Architecture: arm + +# Menu: System Type >> CSR SiRF >> Architecture: arm +CONFIG_ARCH_SIRF p policy<{'armhf': 'n'}> + +# Menu: System Type >> Cavium Networks CNS3XXX family >> Architecture: arm + +# Menu: System Type >> Cirrus EP93xx Implementation Options >> Architecture: arm + +# Menu: System Type >> Cirrus EP93xx Implementation Options >> EP93xx first SDRAM bank selection >> Architecture: arm + +# Menu: System Type >> Cortina Systems Gemini Implementations >> Architecture: arm + +# Menu: System Type >> Enable the L2x0 outer cache controller >> Architecture: arm +CONFIG_CACHE_L2X0 p policy<{'armhf': 'y'}> +CONFIG_PL310_ERRATA_588369 p policy<{'armhf': 'y'}> +CONFIG_PL310_ERRATA_727915 p policy<{'armhf': 'y'}> +CONFIG_PL310_ERRATA_753970 p policy<{'armhf': 'y'}> +CONFIG_PL310_ERRATA_769419 p policy<{'armhf': 'y'}> + +# Menu: System Type >> Firmware options >> Architecture: arm +CONFIG_TRUSTED_FOUNDATIONS p policy<{'armhf': 'y'}> + +# Menu: System Type >> Footbridge Implementations >> Architecture: arm + +# Menu: System Type >> Freescale i.MX family >> Architecture: arm +CONFIG_ARCH_MXC p policy<{'armhf-generic': 'y', 'armhf-generic-lpae': 'n'}> +CONFIG_SOC_IMX50 p policy<{'armhf': 'y'}> +CONFIG_SOC_IMX53 p policy<{'armhf': 'n'}> +CONFIG_SOC_IMX6Q p policy<{'armhf': 'y'}> +CONFIG_SOC_IMX6SL p policy<{'armhf': 'y'}> +CONFIG_SOC_IMX6SX p policy<{'armhf': 'y'}> +CONFIG_SOC_VF610 p policy<{'armhf': 'y'}> +CONFIG_SOC_IMX51 p policy<{'armhf': 'y'}> +CONFIG_SOC_LS1021A p policy<{'armhf': 'n'}> + +# Menu: System Type >> Freescale i.MX family >> Baseboard >> Architecture: arm + +# Menu: System Type >> Freescale i.MX family >> Clocksource for scheduler clock >> Architecture: arm +CONFIG_VF_USE_ARM_GLOBAL_TIMER p policy<{'armhf': 'y'}> + +# Menu: System Type >> Hisilicon SoC Support >> Architecture: arm +CONFIG_ARCH_HISI p policy<{'armhf': 'y'}> + +# Menu: System Type >> Hisilicon SoC Support >> Hisilicon platform type >> Architecture: arm +CONFIG_ARCH_HIP04 p policy<{'armhf': 'y'}> +CONFIG_ARCH_HIX5HD2 p policy<{'armhf': 'y'}> +CONFIG_ARCH_HI3xxx p policy<{'armhf': 'y'}> + +# Menu: System Type >> IOP13XX Implementation Options >> Architecture: arm + +# Menu: System Type >> IOP32x Implementation Options >> Architecture: arm + +# Menu: System Type >> IOP33x 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 >> Kendin/Micrel KS8695 Implementations >> Architecture: arm + +# Menu: System Type >> MMU-based Paged Memory Management Support >> Architecture: arm +#CONFIG_ARM_LPAE p policy<{'armhf-generic': 'n', 'armhf-generic-lpae': 'y'}> +CONFIG_ARM_LPAE p policy<{'armhf-generic': 'n', 'armhf-generic-lpae': 'y'}> +CONFIG_KUSER_HELPERS p policy<{'armhf': 'y'}> +CONFIG_MMU y +CONFIG_CPU_ICACHE_DISABLE p policy<{'armhf': 'n'}> + +# Menu: System Type >> MMU-based Paged Memory Management Support >> Renesas ARM SoCs >> Architecture: arm +CONFIG_ARCH_R7S72100 p policy<{'armhf': 'y'}> +CONFIG_ARCH_R8A7791 p policy<{'armhf': 'y'}> +CONFIG_ARCH_SHMOBILE_MULTI p policy<{'armhf': 'y'}> +CONFIG_ARCH_EMEV2 p policy<{'armhf': 'y'}> +CONFIG_ARCH_R8A7794 p policy<{'armhf': 'y'}> + +# 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 p policy<{'armhf': 'n'}> + +# Menu: System Type >> MOXA ART SoC >> Architecture: arm + +# Menu: System Type >> Marvell Berlin SoCs >> Architecture: arm +CONFIG_ARCH_BERLIN p policy<{'armhf': 'y'}> +CONFIG_MACH_BERLIN_BG2 p policy<{'armhf': 'y'}> +CONFIG_MACH_BERLIN_BG2CD p policy<{'armhf': 'y'}> +CONFIG_MACH_BERLIN_BG2Q p policy<{'armhf': 'y'}> + +# Menu: System Type >> Marvell Dove Implementations >> Architecture: arm + +# Menu: System Type >> Marvell Engineering Business Unit (MVEBU) SoCs >> Architecture: arm +CONFIG_ARCH_MVEBU p policy<{'armhf': 'y'}> +CONFIG_MACH_ARMADA_370 p policy<{'armhf': 'y'}> +CONFIG_MACH_ARMADA_375 p policy<{'armhf': 'y'}> +CONFIG_MACH_ARMADA_38X p policy<{'armhf': 'y'}> +CONFIG_MACH_ARMADA_XP p policy<{'armhf': 'y'}> +CONFIG_MACH_DOVE p policy<{'armhf': 'y'}> + +# Menu: System Type >> Marvell MV78xx0 Implementations >> Architecture: arm + +# Menu: System Type >> Marvell PXA168/910/MMP2 Implmentations >> Architecture: arm + +# Menu: System Type >> Multiple platform selection >> Architecture: arm +CONFIG_ARCH_MULTI_V6 n +CONFIG_ARCH_MULTI_V7 y + +# Menu: System Type >> NUC950 Machines >> Architecture: arm + +# Menu: System Type >> NUC960 Machines >> Architecture: arm + +# Menu: System Type >> NVIDIA Tegra >> Architecture: arm +CONFIG_ARCH_TEGRA p policy<{'armhf-generic': 'y', 'armhf-generic-lpae': 'n'}> +CONFIG_ARCH_TEGRA_2x_SOC p policy<{'armhf': 'y'}> +CONFIG_ARCH_TEGRA_3x_SOC p policy<{'armhf': 'y'}> +CONFIG_ARCH_TEGRA_114_SOC p policy<{'armhf': 'y'}> +CONFIG_ARCH_TEGRA_124_SOC p policy<{'armhf': 'y'}> + +# Menu: System Type >> NetX Implementations >> Architecture: arm + +# Menu: System Type >> Orion Implementations >> Architecture: arm + +# Menu: System Type >> Qualcomm MSM Board Type >> Architecture: arm + +# Menu: System Type >> Qualcomm MSM SoC Type >> Architecture: arm + +# Menu: System Type >> Qualcomm Support >> Architecture: arm +CONFIG_ARCH_QCOM p policy<{'armhf': 'y'}> +CONFIG_ARCH_MSM8X60 p policy<{'armhf': 'y'}> +CONFIG_ARCH_MSM8960 p policy<{'armhf': 'y'}> +CONFIG_ARCH_MSM8974 p policy<{'armhf': 'y'}> + +# Menu: System Type >> RealView platform type >> Architecture: arm + +# Menu: System Type >> SA11x0 Implementations >> Architecture: arm + +# Menu: System Type >> SA11x0 Implementations >> Cerf Flash available >> Architecture: arm + +# 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 >> SMDK6410 >> Architecture: arm + +# Menu: System Type >> SMDK6410 >> SMDK6410 MMC/SD slot setup >> Architecture: arm + +# Menu: System Type >> ST SPEAr Family >> Architecture: arm +CONFIG_PLAT_SPEAR p 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 p policy<{'armhf': 'n'}> + +# Menu: System Type >> Samsung Common options >> Architecture: arm +CONFIG_SAMSUNG_PM_CHECK p policy<{'armhf': 'n'}> + +# Menu: System Type >> Samsung EXYNOS >> Architecture: arm +CONFIG_ARCH_EXYNOS p policy<{'armhf': 'y'}> +CONFIG_ARCH_EXYNOS3 p policy<{'armhf': 'n'}> + +# Menu: System Type >> Samsung EXYNOS >> SAMSUNG EXYNOS4 >> Architecture: arm +CONFIG_ARCH_EXYNOS4 p policy<{'armhf': 'n'}> + +# Menu: System Type >> Samsung EXYNOS >> SAMSUNG EXYNOS5 >> Architecture: arm +CONFIG_ARCH_EXYNOS5 p policy<{'armhf': 'y'}> +CONFIG_SOC_EXYNOS5250 p policy<{'armhf': 'y'}> +CONFIG_SOC_EXYNOS5260 p policy<{'armhf': 'y'}> +CONFIG_SOC_EXYNOS5410 p policy<{'armhf': 'y'}> +CONFIG_SOC_EXYNOS5420 p policy<{'armhf': 'y'}> +CONFIG_SOC_EXYNOS5440 p policy<{'armhf': 'y'}> +CONFIG_SOC_EXYNOS5800 p policy<{'armhf': 'y'}> +CONFIG_EXYNOS5420_MCPM p policy<{'armhf': 'y'}> + +# Menu: System Type >> SuperH / SH-Mobile Driver Options + +# Menu: System Type >> Support ARM V7 processor >> Architecture: arm +CONFIG_ARM_DMA_MEM_BUFFERABLE p policy<{'armhf': 'y'}> +CONFIG_CPU_V7 p policy<{'armhf': 'y'}> +CONFIG_ARM_THUMBEE p policy<{'armhf': 'y'}> +CONFIG_SWP_EMULATE p policy<{'armhf': 'y'}> +CONFIG_CPU_BPREDICT_DISABLE p policy<{'armhf': 'n'}> + +# Menu: System Type >> TI DaVinci Implementations >> Architecture: arm + +# Menu: System Type >> TI DaVinci Implementations >> DA850/OMAP-L138/AM18x based system >> Architecture: arm + +# Menu: System Type >> TI DaVinci Implementations >> DA850/OMAP-L138/AM18x based system >> Select peripherals connected to expander on UI board >> Architecture: arm + +# Menu: System Type >> TI DaVinci Implementations >> DaVinci 644x based system >> Architecture: arm + +# Menu: System Type >> TI DaVinci Implementations >> Select DA830/OMAP-L137/AM17x UI board peripheral >> Architecture: arm + +# Menu: System Type >> TI OMAP Common Features >> Architecture: arm +CONFIG_POWER_AVS_OMAP p policy<{'armhf': 'y'}> +CONFIG_POWER_AVS_OMAP_CLASS3 p policy<{'armhf': 'y'}> +CONFIG_OMAP_RESET_CLOCKS p policy<{'armhf': 'y'}> +CONFIG_OMAP_32K_TIMER p policy<{'armhf': 'y'}> +CONFIG_OMAP3_L2_AUX_SECURE_SAVE_RESTORE p policy<{'armhf': 'n'}> +CONFIG_OMAP_DM_TIMER p policy<{'armhf': 'y'}> + +# Menu: System Type >> TI OMAP Common Features >> OMAP PM layer selection >> Architecture: arm +CONFIG_OMAP_PM_NOOP p policy<{'armhf': 'y'}> + +# Menu: System Type >> TI OMAP Common Features >> OMAP multiplexing support >> Architecture: arm +CONFIG_OMAP_MUX p policy<{'armhf': 'y'}> +CONFIG_OMAP_MUX_WARNINGS p policy<{'armhf': 'y'}> + +# Menu: System Type >> TI OMAP/AM/DM/DRA Family >> Architecture: arm +CONFIG_ARCH_OMAP3 p policy<{'armhf-generic': 'y', 'armhf-generic-lpae': 'n'}> +CONFIG_ARCH_OMAP4 p policy<{'armhf-generic': 'y', 'armhf-generic-lpae': 'n'}> +CONFIG_SOC_OMAP5 p policy<{'armhf': 'n'}> +CONFIG_SOC_AM33XX p policy<{'armhf-generic': 'y', 'armhf-generic-lpae': 'n'}> +CONFIG_SOC_AM43XX p policy<{'armhf': 'n'}> +CONFIG_SOC_DRA7XX p policy<{'armhf': 'y'}> + +# Menu: System Type >> TI OMAP/AM/DM/DRA Family >> TI OMAP2/3/4 Specific Features >> Architecture: arm +#set +tree-menu 'System Type>>TI OMAP/AM/DM/DRA Family>>TI OMAP2/3/4 Specific Features' = D +CONFIG_ARCH_OMAP2PLUS_TYPICAL p policy<{'armhf': 'y'}> +CONFIG_SOC_HAS_OMAP2_SDRC p policy<{'armhf': 'y'}> +CONFIG_SOC_HAS_REALTIME_COUNTER p policy<{'armhf': 'y'}> +CONFIG_SOC_OMAP3430 p policy<{'armhf': 'y'}> +CONFIG_SOC_TI81XX p policy<{'armhf': 'y'}> +CONFIG_MACH_OMAP3_BEAGLE p policy<{'armhf': 'y'}> +CONFIG_MACH_DEVKIT8000 p policy<{'armhf': 'n'}> +CONFIG_MACH_OMAP_LDP p policy<{'armhf': 'y'}> +CONFIG_MACH_OMAP3530_LV_SOM p policy<{'armhf': 'y'}> +CONFIG_MACH_OMAP3_TORPEDO p policy<{'armhf': 'y'}> +CONFIG_MACH_OVERO p policy<{'armhf': 'y'}> +CONFIG_MACH_OMAP3517EVM p policy<{'armhf': 'n'}> +CONFIG_MACH_CRANEBOARD p policy<{'armhf': 'n'}> +CONFIG_MACH_OMAP3_PANDORA p policy<{'armhf': 'y'}> +CONFIG_MACH_TOUCHBOOK p policy<{'armhf': 'y'}> +CONFIG_MACH_NOKIA_RX51 p policy<{'armhf': 'n'}> +CONFIG_MACH_CM_T35 p policy<{'armhf': 'n'}> +CONFIG_MACH_CM_T3517 p policy<{'armhf': 'y'}> +CONFIG_MACH_SBC3530 p policy<{'armhf': 'y'}> +CONFIG_OMAP3_SDRC_AC_TIMING p policy<{'armhf': '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 y + +# Menu: System Type >> Timer and clock configuration >> Architecture: arm +CONFIG_SHMOBILE_TIMER_HZ D + +# Menu: System Type >> Versatile platform type >> Architecture: arm + +# Menu: System Type >> W90P910 Machines >> Architecture: arm + +# Menu: Ubuntu Supplied Third-Party Device Drivers + +# Menu: Ubuntu Supplied Third-Party Device Drivers >> Aufs (Advanced multi layered unification filesystem) support +CONFIG_AUFS_HNOTIFY n +CONFIG_AUFS_EXPORT y +CONFIG_AUFS_XATTR y +CONFIG_AUFS_FHSM n +CONFIG_AUFS_RDU n +CONFIG_AUFS_SHWH n +CONFIG_AUFS_BR_RAMFS n +CONFIG_AUFS_BR_FUSE n +CONFIG_AUFS_BR_HFSPLUS n + +# Menu: Ubuntu Supplied Third-Party Device Drivers >> Aufs (Advanced multi layered unification filesystem) support >> Maximum number of branches +CONFIG_AUFS_BRANCH_MAX_127 y + +# Menu: Ubuntu Supplied Third-Party Device Drivers >> Aufs (Advanced multi layered unification filesystem) support >> method + +# Menu: Virtualization +CONFIG_VIRTUALIZATION y +CONFIG_KVM p policy<{'arm64': 'y', 'armhf': 'y', 'powerpc': 'y', 'ppc64el': 'y', '*': 'm'}> mark +CONFIG_LGUEST n + +# Menu: Virtualization >> Architecture: arm +CONFIG_KVM_ARM_HOST p policy<{'arm64': 'y', 'armhf-generic-lpae': 'y'}> +CONFIG_KVM_ARM_MAX_VCPUS p policy<{'arm64': '4', 'armhf-generic-lpae': '4'}> +CONFIG_KVM_ARM_VGIC p policy<{'arm64': 'y', 'armhf-generic-lpae': 'y'}> +CONFIG_KVM_ARM_TIMER p policy<{'arm64': 'y', 'armhf-generic-lpae': 'y'}> + +# Menu: Virtualization >> Architecture: powerpc +CONFIG_KVM_BOOK3S_64 p policy<{'powerpc-powerpc64-smp': 'm', 'ppc64el': 'm'}> +CONFIG_KVM_BOOK3S_64_HV p policy<{'powerpc-powerpc64-smp': 'm', 'ppc64el': 'm'}> +CONFIG_KVM_BOOK3S_64_PR p policy<{'powerpc-powerpc64-smp': 'm', 'ppc64el': 'm'}> +CONFIG_KVM_EXIT_TIMING p policy<{'powerpc-powerpc64-emb': 'n', 'powerpc-powerpc-e500mc': 'n'}> +CONFIG_KVM_E500MC p policy<{'powerpc-powerpc64-emb': 'y', 'powerpc-powerpc-e500mc': 'y'}> +CONFIG_KVM_MPIC p policy<{'powerpc-powerpc64-emb': 'y', 'powerpc-powerpc-e500mc': 'y'}> +CONFIG_KVM_XICS p policy<{'powerpc-powerpc64-smp': 'y', 'ppc64el': 'y'}> + +# Menu: Virtualization >> Kernel-based Virtual Machine (KVM) support + +# Menu: Virtualization >> Kernel-based Virtual Machine (KVM) support >> Architecture: x86 +CONFIG_KVM_MMU_AUDIT n +CONFIG_KVM_DEVICE_ASSIGNMENT y + +# 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 + +# Ensure DEPRECATED options are off. +set +all ?flag DEPRECATED !mark annotated ?type bool = n +set +all ?flag DEPRECATED !mark annotated ?type tristate = n + +# Ensure DANGEROUS things are turned off. +set +all ?flag DANGEROUS = n + --- linux-raspi2-4.2.0.orig/debian.raspi2/config/armhf/config.common.armhf +++ linux-raspi2-4.2.0/debian.raspi2/config/armhf/config.common.armhf @@ -0,0 +1,3 @@ +# +# Config options for config.common.armhf automatically generated by splitconfig.pl +# --- linux-raspi2-4.2.0.orig/debian.raspi2/config/armhf/config.flavour.raspi2 +++ linux-raspi2-4.2.0/debian.raspi2/config/armhf/config.flavour.raspi2 @@ -0,0 +1,3 @@ +# +# Config options for config.flavour.raspi2 automatically generated by splitconfig.pl +# --- linux-raspi2-4.2.0.orig/debian.raspi2/config/config.common.ports +++ linux-raspi2-4.2.0/debian.raspi2/config/config.common.ports @@ -0,0 +1,3 @@ +# +# Common config options automatically generated by splitconfig.pl +# --- linux-raspi2-4.2.0.orig/debian.raspi2/config/config.common.ubuntu +++ linux-raspi2-4.2.0/debian.raspi2/config/config.common.ubuntu @@ -0,0 +1,5409 @@ +# +# Common config options automatically generated by splitconfig.pl +# +CONFIG_6LOWPAN=m +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_842_COMPRESS=m +CONFIG_842_DECOMPRESS=m +CONFIG_8723AU_AP_MODE=y +CONFIG_8723AU_BT_COEXIST=y +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_ABX500_CORE=y +CONFIG_AC97_BUS=y +# CONFIG_ACCESSIBILITY is not set +# CONFIG_ACORN_PARTITION is not set +CONFIG_ACT200L_DONGLE=m +CONFIG_ACTISYS_DONGLE=m +CONFIG_AD2S1200=m +CONFIG_AD2S1210=m +CONFIG_AD2S90=m +CONFIG_AD5064=m +CONFIG_AD525X_DPOT=m +CONFIG_AD525X_DPOT_I2C=m +CONFIG_AD525X_DPOT_SPI=m +CONFIG_AD5360=m +CONFIG_AD5380=m +CONFIG_AD5421=m +CONFIG_AD5446=m +CONFIG_AD5449=m +CONFIG_AD5504=m +CONFIG_AD5624R_SPI=m +CONFIG_AD5686=m +CONFIG_AD5755=m +CONFIG_AD5764=m +CONFIG_AD5791=m +CONFIG_AD5933=m +CONFIG_AD7150=m +CONFIG_AD7152=m +CONFIG_AD7192=m +CONFIG_AD7266=m +CONFIG_AD7280=m +CONFIG_AD7291=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_AD7780=m +CONFIG_AD7791=m +CONFIG_AD7793=m +CONFIG_AD7816=m +CONFIG_AD7887=m +CONFIG_AD7923=m +CONFIG_AD799X=m +CONFIG_AD8366=m +CONFIG_AD9523=m +CONFIG_AD9832=m +CONFIG_AD9834=m +CONFIG_ADE7753=m +CONFIG_ADE7754=m +CONFIG_ADE7758=m +CONFIG_ADE7759=m +CONFIG_ADE7854=m +CONFIG_ADE7854_I2C=m +CONFIG_ADE7854_SPI=m +CONFIG_ADF4350=m +CONFIG_ADFS_FS=m +# CONFIG_ADFS_FS_RW is not set +CONFIG_ADIS16060=m +CONFIG_ADIS16080=m +CONFIG_ADIS16130=m +CONFIG_ADIS16136=m +CONFIG_ADIS16201=m +CONFIG_ADIS16203=m +CONFIG_ADIS16204=m +CONFIG_ADIS16209=m +CONFIG_ADIS16220=m +CONFIG_ADIS16240=m +CONFIG_ADIS16260=m +CONFIG_ADIS16400=m +CONFIG_ADIS16480=m +CONFIG_ADJD_S311=m +CONFIG_ADT7316=m +CONFIG_ADT7316_I2C=m +CONFIG_ADT7316_SPI=m +CONFIG_ADVISE_SYSCALLS=y +CONFIG_ADXRS450=m +CONFIG_AD_SIGMA_DELTA=m +CONFIG_AEABI=y +CONFIG_AFFS_FS=m +# CONFIG_AFS_DEBUG is not set +CONFIG_AFS_FS=m +CONFIG_AFS_FSCACHE=y +CONFIG_AF_RXRPC=m +# CONFIG_AF_RXRPC_DEBUG is not set +CONFIG_AHCI_CEVA=m +CONFIG_AIO=y +CONFIG_AIX_PARTITION=y +CONFIG_AK09911=m +CONFIG_AK8975=m +CONFIG_AL3320A=m +CONFIG_ALIGNMENT_TRAP=y +CONFIG_ALLOW_DEV_COREDUMP=y +CONFIG_ALTERA_MBOX=m +CONFIG_ALTERA_STAPL=m +CONFIG_ALTERA_TSE=m +CONFIG_AM335X_CONTROL_USB=m +CONFIG_AM335X_PHY_USB=m +CONFIG_AMBA_PL08X=y +CONFIG_AMD_PHY=m +CONFIG_AMIGA_PARTITION=y +# CONFIG_ANDROID is not set +CONFIG_ANON_INODES=y +CONFIG_APDS9300=m +CONFIG_APDS9802ALS=m +# CONFIG_APM_EMULATION is not set +CONFIG_AR5523=m +# CONFIG_ARCH_BCM2708 is not set +CONFIG_ARCH_BCM2709=y +# CONFIG_ARCH_CLPS711X is not set +# CONFIG_ARCH_DAVINCI is not set +# CONFIG_ARCH_DOVE is not set +# CONFIG_ARCH_EBSA110 is not set +# CONFIG_ARCH_EP93XX is not set +# CONFIG_ARCH_FOOTBRIDGE is not set +# CONFIG_ARCH_GEMINI is not set +CONFIG_ARCH_HAS_ATOMIC64_DEC_IF_POSITIVE=y +CONFIG_ARCH_HAS_ELF_RANDOMIZE=y +CONFIG_ARCH_HAS_GCOV_PROFILE_ALL=y +# CONFIG_ARCH_HAS_SG_CHAIN is not set +CONFIG_ARCH_HAS_TICK_BROADCAST=y +CONFIG_ARCH_HAVE_CUSTOM_GPIO_H=y +CONFIG_ARCH_HIBERNATION_POSSIBLE=y +# CONFIG_ARCH_IOP13XX is not set +# CONFIG_ARCH_IOP32X is not set +# CONFIG_ARCH_IOP33X is not set +# CONFIG_ARCH_IXP4XX is not set +# CONFIG_ARCH_KS8695 is not set +# CONFIG_ARCH_LPC32XX is not set +CONFIG_ARCH_MIGHT_HAVE_PC_PARPORT=y +# CONFIG_ARCH_MMP is not set +# CONFIG_ARCH_MULTIPLATFORM is not set +# CONFIG_ARCH_MV78XX0 is not set +# CONFIG_ARCH_NEEDS_CPU_IDLE_COUPLED is not set +# CONFIG_ARCH_NETX is not set +CONFIG_ARCH_NR_GPIO=0 +# CONFIG_ARCH_OMAP1 is not set +# CONFIG_ARCH_ORION5X is not set +# CONFIG_ARCH_PHYS_ADDR_T_64BIT is not set +# CONFIG_ARCH_PXA is not set +# CONFIG_ARCH_REALVIEW is not set +CONFIG_ARCH_REQUIRE_GPIOLIB=y +# CONFIG_ARCH_RPC is not set +# CONFIG_ARCH_S3C24XX is not set +# CONFIG_ARCH_S3C64XX is not set +# CONFIG_ARCH_SA1100 is not set +# CONFIG_ARCH_SELECT_MEMORY_MODEL is not set +# CONFIG_ARCH_SHMOBILE_LEGACY is not set +# CONFIG_ARCH_SPARSEMEM_DEFAULT is not set +CONFIG_ARCH_SUPPORTS_ATOMIC_RMW=y +CONFIG_ARCH_SUPPORTS_UPROBES=y +CONFIG_ARCH_SUSPEND_POSSIBLE=y +CONFIG_ARCH_USE_BUILTIN_BSWAP=y +CONFIG_ARCH_USE_CMPXCHG_LOCKREF=y +# CONFIG_ARCH_VERSATILE is not set +# CONFIG_ARCH_W90X900 is not set +CONFIG_ARCH_WANT_GENERAL_HUGETLB=y +CONFIG_ARCH_WANT_IPC_PARSE_VERSION=y +CONFIG_ARC_EMAC=m +CONFIG_ARC_EMAC_CORE=m +CONFIG_ARM=y +CONFIG_ARM_AMBA=y +CONFIG_ARM_APPENDED_DTB=y +CONFIG_ARM_ARCH_TIMER=y +CONFIG_ARM_ARCH_TIMER_EVTSTREAM=y +CONFIG_ARM_ATAG_DTB_COMPAT=y +CONFIG_ARM_ATAG_DTB_COMPAT_CMDLINE_EXTEND=y +# CONFIG_ARM_ATAG_DTB_COMPAT_CMDLINE_FROM_BOOTLOADER is not set +CONFIG_ARM_BCM2835_CPUFREQ=y +CONFIG_ARM_BIG_LITTLE_CPUFREQ=m +CONFIG_ARM_CCI=y +CONFIG_ARM_CCI400_COMMON=y +CONFIG_ARM_CCI400_PMU=y +CONFIG_ARM_CCI500_PMU=y +CONFIG_ARM_CCI_PMU=y +CONFIG_ARM_CCN=y +CONFIG_ARM_CPUIDLE=y +CONFIG_ARM_CPU_SUSPEND=y +CONFIG_ARM_CPU_TOPOLOGY=y +CONFIG_ARM_CRYPTO=y +CONFIG_ARM_DMA_MEM_BUFFERABLE=y +CONFIG_ARM_DT_BL_CPUFREQ=m +# CONFIG_ARM_ERRATA_430973 is not set +# CONFIG_ARM_ERRATA_458693 is not set +# CONFIG_ARM_ERRATA_460075 is not set +CONFIG_ARM_ERRATA_643719=y +# CONFIG_ARM_ERRATA_720789 is not set +# CONFIG_ARM_ERRATA_742230 is not set +# CONFIG_ARM_ERRATA_742231 is not set +# CONFIG_ARM_ERRATA_743622 is not set +# CONFIG_ARM_ERRATA_751472 is not set +# CONFIG_ARM_ERRATA_754322 is not set +# CONFIG_ARM_ERRATA_754327 is not set +# CONFIG_ARM_ERRATA_764369 is not set +# CONFIG_ARM_ERRATA_773022 is not set +# CONFIG_ARM_ERRATA_775420 is not set +# CONFIG_ARM_ERRATA_798181 is not set +CONFIG_ARM_KERNMEM_PERMS=y +# CONFIG_ARM_KIRKWOOD_CPUFREQ is not set +CONFIG_ARM_KPROBES_TEST=m +CONFIG_ARM_L1_CACHE_SHIFT=6 +CONFIG_ARM_L1_CACHE_SHIFT_6=y +# CONFIG_ARM_LPAE is not set +CONFIG_ARM_MHU=m +# CONFIG_ARM_MODULE_PLTS is not set +CONFIG_ARM_PATCH_PHYS_VIRT=y +# CONFIG_ARM_PSCI is not set +# CONFIG_ARM_PTDUMP is not set +# CONFIG_ARM_SMMU is not set +CONFIG_ARM_SP805_WATCHDOG=m +CONFIG_ARM_THUMB=y +CONFIG_ARM_THUMBEE=y +CONFIG_ARM_TIMER_SP804=y +CONFIG_ARM_UNWIND=y +CONFIG_ARM_VIRT_EXT=y +CONFIG_AS3935=m +CONFIG_ASN1=y +CONFIG_ASSOCIATIVE_ARRAY=y +CONFIG_ASYMMETRIC_KEY_TYPE=y +CONFIG_ASYMMETRIC_PUBLIC_KEY_SUBTYPE=y +CONFIG_ASYNC_CORE=m +CONFIG_ASYNC_MEMCPY=m +CONFIG_ASYNC_PQ=m +CONFIG_ASYNC_RAID6_RECOV=m +CONFIG_ASYNC_RAID6_TEST=m +CONFIG_ASYNC_TX_DMA=y +CONFIG_ASYNC_XOR=m +CONFIG_AT76C50X_USB=m +CONFIG_AT803X_PHY=m +CONFIG_ATA=y +CONFIG_ATAGS=y +CONFIG_ATAGS_PROC=y +CONFIG_ATALK=m +CONFIG_ATARI_PARTITION=y +CONFIG_ATA_BMDMA=y +# CONFIG_ATA_NONSTANDARD is not set +CONFIG_ATA_OVER_ETH=m +CONFIG_ATA_SFF=y +CONFIG_ATA_VERBOSE_ERROR=y +CONFIG_ATH10K=m +# CONFIG_ATH10K_DEBUG is not set +CONFIG_ATH10K_DEBUGFS=y +CONFIG_ATH10K_TRACING=y +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_DEBUGFS=y +# CONFIG_ATH9K_DYNACK is not set +CONFIG_ATH9K_HTC=m +CONFIG_ATH9K_HTC_DEBUGFS=y +CONFIG_ATH9K_HW=m +CONFIG_ATH9K_PCOEM=y +CONFIG_ATH9K_RFKILL=y +CONFIG_ATH9K_STATION_STATISTICS=y +CONFIG_ATH9K_WOW=y +CONFIG_ATH_CARDS=m +CONFIG_ATH_COMMON=m +# CONFIG_ATH_DEBUG is not set +CONFIG_ATM=m +# CONFIG_ATMEL_PIT 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_LANE=m +CONFIG_ATM_MPOA=m +CONFIG_ATM_TCP=m +# CONFIG_ATOMIC64_SELFTEST is not set +CONFIG_AUDIT=y +CONFIG_AUDITSYSCALL=y +# CONFIG_AUDIT_ARCH_COMPAT_GENERIC is not set +CONFIG_AUDIT_GENERIC=y +CONFIG_AUDIT_TREE=y +CONFIG_AUDIT_WATCH=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_EXPORT is not set +# CONFIG_AUFS_FHSM is not set +CONFIG_AUFS_FS=m +# CONFIG_AUFS_HNOTIFY is not set +# CONFIG_AUFS_RDU is not set +CONFIG_AUFS_SBILIST=y +# CONFIG_AUFS_SHWH is not set +# CONFIG_AUFS_XATTR is not set +CONFIG_AUTOFS4_FS=m +CONFIG_AUTO_ZRELADDR=y +CONFIG_AUXDISPLAY=y +CONFIG_AVERAGE=y +CONFIG_AX25=m +CONFIG_AX25_DAMA_SLAVE=y +CONFIG_AX88796=m +# CONFIG_AX88796_93CX6 is not set +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_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_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_BACKLIGHT_88PM860X=m +CONFIG_BACKLIGHT_AAT2870=m +CONFIG_BACKLIGHT_ADP5520=m +CONFIG_BACKLIGHT_ADP8860=m +CONFIG_BACKLIGHT_ADP8870=m +CONFIG_BACKLIGHT_AS3711=m +CONFIG_BACKLIGHT_BD6107=m +CONFIG_BACKLIGHT_CLASS_DEVICE=y +CONFIG_BACKLIGHT_DA903X=m +CONFIG_BACKLIGHT_DA9052=m +CONFIG_BACKLIGHT_GENERIC=m +CONFIG_BACKLIGHT_GPIO=m +CONFIG_BACKLIGHT_LCD_SUPPORT=y +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_SKY81452=m +CONFIG_BACKLIGHT_TPS65217=m +CONFIG_BACKLIGHT_WM831X=m +# CONFIG_BACKTRACE_SELF_TEST is not set +CONFIG_BASE_FULL=y +CONFIG_BASE_SMALL=0 +CONFIG_BATMAN_ADV=m +CONFIG_BATMAN_ADV_BLA=y +CONFIG_BATMAN_ADV_DAT=y +# CONFIG_BATMAN_ADV_DEBUG is not set +CONFIG_BATMAN_ADV_MCAST=y +CONFIG_BATMAN_ADV_NC=y +CONFIG_BATTERY_88PM860X=m +CONFIG_BATTERY_BQ27X00_I2C=y +CONFIG_BATTERY_BQ27X00_PLATFORM=y +CONFIG_BATTERY_BQ27x00=m +CONFIG_BATTERY_DA9030=m +CONFIG_BATTERY_DA9052=m +CONFIG_BATTERY_DS2760=m +CONFIG_BATTERY_DS2780=m +CONFIG_BATTERY_DS2781=m +CONFIG_BATTERY_DS2782=m +CONFIG_BATTERY_GAUGE_LTC2941=m +CONFIG_BATTERY_MAX17040=m +CONFIG_BATTERY_MAX17042=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_CLOSURES_DEBUG is not set +# CONFIG_BCACHE_DEBUG is not set +CONFIG_BCH=y +CONFIG_BCH_CONST_M=14 +CONFIG_BCH_CONST_PARAMS=y +CONFIG_BCH_CONST_T=4 +CONFIG_BCM2708_GPIO=y +CONFIG_BCM2708_NOL2CACHE=y +CONFIG_BCM2708_SPIDEV=y +CONFIG_BCM2708_VCHIQ=y +CONFIG_BCM2708_VCMEM=y +CONFIG_BCM2708_WDT=m +CONFIG_BCM2709_DT=y +CONFIG_BCM2835_DEVGPIOMEM=m +CONFIG_BCM2835_MBOX=y +CONFIG_BCM2835_SMI=m +CONFIG_BCM2835_SMI_DEV=m +CONFIG_BCM2835_WDT=m +CONFIG_BCM7XXX_PHY=m +CONFIG_BCM87XX_PHY=m +CONFIG_BCMA=m +CONFIG_BCMA_BLOCKIO=y +# CONFIG_BCMA_DEBUG is not set +CONFIG_BCMA_DRIVER_GMAC_CMN=y +CONFIG_BCMA_DRIVER_GPIO=y +CONFIG_BCMA_HOST_SOC=y +CONFIG_BCMA_POSSIBLE=y +CONFIG_BCMGENET=m +CONFIG_BCM_KONA_USB2_PHY=m +CONFIG_BCM_VCIO=y +CONFIG_BCM_VC_CMA=y +CONFIG_BCM_VC_SM=y +# CONFIG_BEFS_DEBUG is not set +CONFIG_BEFS_FS=m +CONFIG_BFS_FS=m +CONFIG_BH1750=m +CONFIG_BIG_KEYS=y +# CONFIG_BIG_LITTLE is not set +CONFIG_BINARY_PRINTF=y +CONFIG_BINFMT_ELF=y +CONFIG_BINFMT_MISC=m +CONFIG_BINFMT_SCRIPT=y +CONFIG_BITREVERSE=y +CONFIG_BLK_CGROUP=y +CONFIG_BLK_CMDLINE_PARSER=y +CONFIG_BLK_DEV=y +CONFIG_BLK_DEV_BSG=y +CONFIG_BLK_DEV_BSGLIB=y +# CONFIG_BLK_DEV_COW_COMMON is not set +CONFIG_BLK_DEV_CRYPTOLOOP=m +CONFIG_BLK_DEV_DM=y +CONFIG_BLK_DEV_DM_BUILTIN=y +CONFIG_BLK_DEV_DRBD=m +CONFIG_BLK_DEV_INITRD=y +CONFIG_BLK_DEV_INTEGRITY=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_OSD=m +CONFIG_BLK_DEV_RAM=y +CONFIG_BLK_DEV_RAM_COUNT=16 +CONFIG_BLK_DEV_RAM_SIZE=65536 +CONFIG_BLK_DEV_RBD=m +CONFIG_BLK_DEV_SD=y +CONFIG_BLK_DEV_SR=y +# CONFIG_BLK_DEV_SR_VENDOR is not set +CONFIG_BLK_DEV_THROTTLING=y +CONFIG_BLOCK=y +CONFIG_BMA180=m +CONFIG_BMC150_ACCEL=m +CONFIG_BMC150_MAGN=m +CONFIG_BMG160=m +CONFIG_BMP085=y +CONFIG_BMP085_I2C=m +CONFIG_BMP085_SPI=m +CONFIG_BMP280=m +CONFIG_BONDING=m +# 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_BOOT_PRINTK_DELAY=y +CONFIG_BPF=y +CONFIG_BPF_EVENTS=y +CONFIG_BPF_JIT=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_PROTO_BCDC=y +CONFIG_BRCMFMAC_SDIO=y +CONFIG_BRCMFMAC_USB=y +CONFIG_BRCMSMAC=m +CONFIG_BRCMSTB_GISB_ARB=y +CONFIG_BRCMUTIL=m +CONFIG_BRCM_CHAR_DRIVERS=y +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_NETFILTER=m +CONFIG_BRIDGE_NF_EBTABLES=m +CONFIG_BRIDGE_VLAN_FILTERING=y +CONFIG_BROADCOM_PHY=m +CONFIG_BSD_DISKLABEL=y +CONFIG_BSD_PROCESS_ACCT=y +CONFIG_BSD_PROCESS_ACCT_V3=y +CONFIG_BT=m +# 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_RUN_SANITY_TESTS is not set +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_HCIBPA10X=m +CONFIG_BT_HCIBTSDIO=m +CONFIG_BT_HCIBTUSB=m +CONFIG_BT_HCIBTUSB_BCM=y +CONFIG_BT_HCIBTUSB_RTL=y +CONFIG_BT_HCIUART=m +CONFIG_BT_HCIUART_3WIRE=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_HCIVHCI=m +CONFIG_BT_HIDP=m +CONFIG_BT_INTEL=m +CONFIG_BT_LE=y +CONFIG_BT_MRVL=m +CONFIG_BT_MRVL_SDIO=m +CONFIG_BT_RFCOMM=m +CONFIG_BT_RFCOMM_TTY=y +CONFIG_BT_RTL=m +# CONFIG_BT_SELFTEST is not set +CONFIG_BT_WILINK=m +CONFIG_BUG=y +CONFIG_BUILDTIME_EXTABLE_SORT=y +CONFIG_BUILD_BIN2C=y +CONFIG_C2PORT=m +CONFIG_CACHEFILES=m +# CONFIG_CACHEFILES_DEBUG is not set +# CONFIG_CACHEFILES_HISTOGRAM is not set +# CONFIG_CACHE_L2X0 is not set +CONFIG_CADENCE_WATCHDOG=m +CONFIG_CAIF=m +# CONFIG_CAIF_DEBUG is not set +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 is not set +CONFIG_CAN=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_PLATFORM=m +# CONFIG_CAN_DEBUG_DEVICES is not set +CONFIG_CAN_DEV=m +CONFIG_CAN_EMS_USB=m +CONFIG_CAN_ESD_USB2=m +CONFIG_CAN_FLEXCAN=m +CONFIG_CAN_GRCAN=m +CONFIG_CAN_GS_USB=m +CONFIG_CAN_GW=m +CONFIG_CAN_KVASER_USB=m +CONFIG_CAN_LEDS=y +CONFIG_CAN_MCP251X=m +CONFIG_CAN_M_CAN=m +CONFIG_CAN_PEAK_USB=m +CONFIG_CAN_RAW=m +CONFIG_CAN_RCAR=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_TI_HECC=m +CONFIG_CAN_VCAN=m +CONFIG_CAPI_AVM=y +CONFIG_CAPI_EICON=y +CONFIG_CAPI_TRACE=y +CONFIG_CARL9170=m +# CONFIG_CARL9170_DEBUGFS is not set +CONFIG_CARL9170_HWRNG=y +CONFIG_CARL9170_LEDS=y +CONFIG_CARL9170_WPC=y +CONFIG_CC10001_ADC=m +# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set +CONFIG_CC_STACKPROTECTOR=y +# CONFIG_CC_STACKPROTECTOR_NONE is not set +CONFIG_CC_STACKPROTECTOR_REGULAR=y +# CONFIG_CC_STACKPROTECTOR_STRONG is not set +CONFIG_CDROM_PKTCDVD=m +CONFIG_CDROM_PKTCDVD_BUFFERS=8 +# CONFIG_CDROM_PKTCDVD_WCACHE is not set +CONFIG_CEPH_FS=m +CONFIG_CEPH_FSCACHE=y +CONFIG_CEPH_FS_POSIX_ACL=y +CONFIG_CEPH_LIB=m +# CONFIG_CEPH_LIB_PRETTYDEBUG is not set +CONFIG_CEPH_LIB_USE_DNS_RESOLVER=y +CONFIG_CFG80211=m +# CONFIG_CFG80211_CERTIFICATION_ONUS is not set +CONFIG_CFG80211_DEBUGFS=y +CONFIG_CFG80211_DEFAULT_PS=y +# CONFIG_CFG80211_DEVELOPER_WARNINGS is not set +# CONFIG_CFG80211_INTERNAL_REGDB is not set +# CONFIG_CFG80211_REG_DEBUG is not set +CONFIG_CFG80211_WEXT=y +CONFIG_CFQ_GROUP_IOSCHED=y +CONFIG_CFS_BANDWIDTH=y +CONFIG_CGROUPS=y +CONFIG_CGROUP_CPUACCT=y +# CONFIG_CGROUP_DEBUG is not set +CONFIG_CGROUP_DEVICE=y +CONFIG_CGROUP_FREEZER=y +CONFIG_CGROUP_NET_CLASSID=y +CONFIG_CGROUP_NET_PRIO=y +CONFIG_CGROUP_PERF=y +CONFIG_CGROUP_SCHED=y +CONFIG_CGROUP_WRITEBACK=y +CONFIG_CHARGER_88PM860X=m +CONFIG_CHARGER_BQ2415X=m +CONFIG_CHARGER_BQ24190=m +CONFIG_CHARGER_BQ24257=m +CONFIG_CHARGER_BQ24735=m +CONFIG_CHARGER_BQ25890=m +CONFIG_CHARGER_DA9150=m +CONFIG_CHARGER_GPIO=m +CONFIG_CHARGER_ISP1704=m +CONFIG_CHARGER_LP8727=m +CONFIG_CHARGER_LP8788=m +CONFIG_CHARGER_MANAGER=y +CONFIG_CHARGER_MAX14577=m +CONFIG_CHARGER_MAX77693=m +CONFIG_CHARGER_MAX8903=m +CONFIG_CHARGER_MAX8997=m +CONFIG_CHARGER_MAX8998=m +CONFIG_CHARGER_PCF50633=m +CONFIG_CHARGER_RT9455=m +CONFIG_CHARGER_SMB347=m +CONFIG_CHARGER_TPS65090=m +CONFIG_CHARGER_TWL4030=m +CONFIG_CHECKPOINT_RESTORE=y +CONFIG_CHROME_PLATFORMS=y +CONFIG_CHR_DEV_OSST=m +CONFIG_CHR_DEV_SCH=m +CONFIG_CHR_DEV_SG=y +CONFIG_CHR_DEV_ST=m +CONFIG_CICADA_PHY=m +CONFIG_CIFS=m +CONFIG_CIFS_ACL=y +CONFIG_CIFS_DEBUG=y +# CONFIG_CIFS_DEBUG2 is not set +CONFIG_CIFS_DFS_UPCALL=y +CONFIG_CIFS_FSCACHE=y +CONFIG_CIFS_POSIX=y +CONFIG_CIFS_SMB2=y +CONFIG_CIFS_SMB311=y +CONFIG_CIFS_STATS=y +# CONFIG_CIFS_STATS2 is not set +CONFIG_CIFS_UPCALL=y +CONFIG_CIFS_WEAK_PW_HASH=y +CONFIG_CIFS_XATTR=y +CONFIG_CLEANCACHE=y +CONFIG_CLKDEV_LOOKUP=y +CONFIG_CLKSRC_MMIO=y +CONFIG_CLKSRC_OF=y +CONFIG_CLK_QORIQ=y +CONFIG_CLK_TWL6040=m +# CONFIG_CLOCK_THERMAL is not set +CONFIG_CLONE_BACKWARDS=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_CM36651=m +CONFIG_CMA=y +CONFIG_CMA_ALIGNMENT=8 +CONFIG_CMA_AREAS=7 +# CONFIG_CMA_DEBUG is not set +# CONFIG_CMA_DEBUGFS is not set +CONFIG_CMA_SIZE_MBYTES=16 +# 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="" +CONFIG_CMDLINE_PARTITION=y +CONFIG_CODA_FS=m +CONFIG_COMEDI=m +CONFIG_COMEDI_8254=m +CONFIG_COMEDI_8255=m +CONFIG_COMEDI_8255_SA=m +CONFIG_COMEDI_ADQ12B=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_PC236=m +CONFIG_COMEDI_AMPLC_PC236_ISA=m +CONFIG_COMEDI_AMPLC_PC263_ISA=m +CONFIG_COMEDI_BOND=m +CONFIG_COMEDI_C6XDIGIO=m +CONFIG_COMEDI_DAC02=m +CONFIG_COMEDI_DAS08=m +CONFIG_COMEDI_DAS08_ISA=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_DT9812=m +CONFIG_COMEDI_FL512=m +CONFIG_COMEDI_II_PCI20KC=m +CONFIG_COMEDI_ISA_DRIVERS=y +CONFIG_COMEDI_KCOMEDILIB=m +CONFIG_COMEDI_MISC_DRIVERS=y +CONFIG_COMEDI_MPC624=m +CONFIG_COMEDI_MULTIQ3=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_LABPC=m +CONFIG_COMEDI_NI_LABPC_ISA=m +CONFIG_COMEDI_NI_TIO=m +CONFIG_COMEDI_NI_USB6501=m +CONFIG_COMEDI_PARPORT=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_PCMDA12=m +CONFIG_COMEDI_PCMMIO=m +CONFIG_COMEDI_PCMUIO=m +CONFIG_COMEDI_RTI800=m +CONFIG_COMEDI_RTI802=m +CONFIG_COMEDI_S526=m +CONFIG_COMEDI_SERIAL2002=m +CONFIG_COMEDI_TEST=m +CONFIG_COMEDI_UNIOXX5=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=y +CONFIG_COMMON_CLK_CDCE706=m +CONFIG_COMMON_CLK_CDCE925=m +CONFIG_COMMON_CLK_MAX77686=m +CONFIG_COMMON_CLK_MAX77802=m +CONFIG_COMMON_CLK_MAX_GEN=y +CONFIG_COMMON_CLK_PALMAS=m +CONFIG_COMMON_CLK_PWM=m +# CONFIG_COMMON_CLK_PXA is not set +CONFIG_COMMON_CLK_RK808=m +CONFIG_COMMON_CLK_S2MPS11=m +CONFIG_COMMON_CLK_SI5351=m +CONFIG_COMMON_CLK_SI570=m +CONFIG_COMMON_CLK_WM831X=m +# CONFIG_COMMON_CLK_XLNX_CLKWZRD is not set +CONFIG_COMPACTION=y +# CONFIG_COMPAT_BRK is not set +# CONFIG_COMPILE_TEST is not set +CONFIG_CONFIGFS_FS=m +CONFIG_CONNECTOR=y +CONFIG_CONSOLE_POLL=y +CONFIG_CONSOLE_TRANSLATIONS=y +CONFIG_CONTEXT_SWITCH_TRACER=y +CONFIG_CORDIC=m +CONFIG_COREDUMP=y +# CONFIG_CORESIGHT is not set +CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS=y +CONFIG_CPUFREQ_DT=m +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 is not set +CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y +# CONFIG_CPU_FREQ_DEFAULT_GOV_POWERSAVE is not set +# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set +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_USERSPACE=y +CONFIG_CPU_FREQ_STAT=y +CONFIG_CPU_FREQ_STAT_DETAILS=y +CONFIG_CPU_HAS_ASID=y +# CONFIG_CPU_ICACHE_DISABLE is not set +CONFIG_CPU_IDLE=y +CONFIG_CPU_IDLE_GOV_LADDER=y +CONFIG_CPU_IDLE_GOV_MENU=y +CONFIG_CPU_NOTIFIER_ERROR_INJECT=m +CONFIG_CPU_PABRT_V7=y +CONFIG_CPU_PM=y +CONFIG_CPU_RMAP=y +CONFIG_CPU_THERMAL=y +CONFIG_CPU_TLB_V7=y +CONFIG_CPU_V7=y +CONFIG_CRAMFS=m +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_CRC7=m +CONFIG_CRC8=m +CONFIG_CRC_CCITT=m +CONFIG_CRC_ITU_T=m +CONFIG_CRC_T10DIF=y +CONFIG_CROSS_COMPILE="" +CONFIG_CROSS_MEMORY_ATTACH=y +CONFIG_CROS_EC_CHARDEV=m +CONFIG_CROS_EC_PROTO=y +CONFIG_CRYPTO=y +CONFIG_CRYPTO_842=m +CONFIG_CRYPTO_ABLK_HELPER=m +CONFIG_CRYPTO_AEAD=m +CONFIG_CRYPTO_AEAD2=y +CONFIG_CRYPTO_AES=y +CONFIG_CRYPTO_AES_ARM=m +CONFIG_CRYPTO_AES_ARM_BS=m +CONFIG_CRYPTO_AES_ARM_CE=m +CONFIG_CRYPTO_AKCIPHER=m +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_AUTHENC=m +CONFIG_CRYPTO_BLKCIPHER=y +CONFIG_CRYPTO_BLKCIPHER2=y +CONFIG_CRYPTO_BLOWFISH=m +CONFIG_CRYPTO_BLOWFISH_COMMON=m +CONFIG_CRYPTO_CAMELLIA=m +CONFIG_CRYPTO_CAST5=m +CONFIG_CRYPTO_CAST6=m +CONFIG_CRYPTO_CAST_COMMON=m +CONFIG_CRYPTO_CBC=y +CONFIG_CRYPTO_CCM=m +CONFIG_CRYPTO_CHACHA20=m +CONFIG_CRYPTO_CHACHA20POLY1305=m +CONFIG_CRYPTO_CMAC=m +CONFIG_CRYPTO_CRC32=m +CONFIG_CRYPTO_CRC32C=y +CONFIG_CRYPTO_CRCT10DIF=y +CONFIG_CRYPTO_CRYPTD=m +CONFIG_CRYPTO_CTR=m +CONFIG_CRYPTO_CTS=m +CONFIG_CRYPTO_DEFLATE=m +CONFIG_CRYPTO_DES=m +CONFIG_CRYPTO_DRBG=m +CONFIG_CRYPTO_DRBG_CTR=y +CONFIG_CRYPTO_DRBG_HASH=y +CONFIG_CRYPTO_DRBG_HMAC=y +CONFIG_CRYPTO_DRBG_MENU=m +CONFIG_CRYPTO_ECB=y +CONFIG_CRYPTO_ECHAINIV=m +CONFIG_CRYPTO_FCRYPT=m +CONFIG_CRYPTO_GCM=m +CONFIG_CRYPTO_GF128MUL=m +CONFIG_CRYPTO_GHASH=m +CONFIG_CRYPTO_GHASH_ARM_CE=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=m +CONFIG_CRYPTO_KHAZAD=m +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_MCRYPTD=m +CONFIG_CRYPTO_MD4=m +CONFIG_CRYPTO_MD5=y +CONFIG_CRYPTO_MICHAEL_MIC=m +CONFIG_CRYPTO_NULL=m +CONFIG_CRYPTO_PCBC=m +CONFIG_CRYPTO_PCOMP=m +CONFIG_CRYPTO_PCOMP2=y +CONFIG_CRYPTO_PCRYPT=m +CONFIG_CRYPTO_POLY1305=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=m +CONFIG_CRYPTO_RSA=m +CONFIG_CRYPTO_SALSA20=m +CONFIG_CRYPTO_SEED=m +CONFIG_CRYPTO_SEQIV=m +CONFIG_CRYPTO_SERPENT=m +CONFIG_CRYPTO_SHA1=y +CONFIG_CRYPTO_SHA1_ARM=m +CONFIG_CRYPTO_SHA1_ARM_CE=m +CONFIG_CRYPTO_SHA1_ARM_NEON=m +CONFIG_CRYPTO_SHA256=y +CONFIG_CRYPTO_SHA256_ARM=m +CONFIG_CRYPTO_SHA2_ARM_CE=m +CONFIG_CRYPTO_SHA512=y +CONFIG_CRYPTO_SHA512_ARM=m +CONFIG_CRYPTO_TEA=m +CONFIG_CRYPTO_TEST=m +CONFIG_CRYPTO_TGR192=m +CONFIG_CRYPTO_TWOFISH=m +CONFIG_CRYPTO_TWOFISH_COMMON=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_WORKQUEUE=y +CONFIG_CRYPTO_WP512=m +CONFIG_CRYPTO_XCBC=m +CONFIG_CRYPTO_XTS=m +CONFIG_CRYPTO_ZLIB=m +CONFIG_CS89x0=m +CONFIG_CS89x0_PLATFORM=y +CONFIG_CUSE=m +CONFIG_CW1200=m +CONFIG_CW1200_WLAN_SDIO=m +CONFIG_CW1200_WLAN_SPI=m +# CONFIG_CXL_BASE is not set +# CONFIG_CXL_EEH is not set +# CONFIG_CXL_KERNEL_API is not set +CONFIG_CYPRESS_FIRMWARE=m +CONFIG_DA9052_WATCHDOG=m +CONFIG_DA9055_WATCHDOG=m +CONFIG_DA9063_WATCHDOG=m +CONFIG_DA9150_GPADC=m +CONFIG_DAVICOM_PHY=m +CONFIG_DCACHE_WORD_ACCESS=y +CONFIG_DCB=y +CONFIG_DDR=y +# CONFIG_DEBUG_ATOMIC_SLEEP is not set +# CONFIG_DEBUG_BLK_CGROUP is not set +# CONFIG_DEBUG_BLOCK_EXT_DEVT 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_FORCE_WEAK_PER_CPU is not set +CONFIG_DEBUG_FS=y +# CONFIG_DEBUG_GPIO is not set +CONFIG_DEBUG_INFO=y +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_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_MUTEXES is not set +# CONFIG_DEBUG_NOTIFIERS is not set +# CONFIG_DEBUG_OBJECTS 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_PI_LIST is not set +CONFIG_DEBUG_RODATA=y +# CONFIG_DEBUG_RT_MUTEXES is not set +# CONFIG_DEBUG_SECTION_MISMATCH is not set +CONFIG_DEBUG_SET_MODULE_RONX=y +# CONFIG_DEBUG_SG is not set +# CONFIG_DEBUG_SHIRQ is not set +# CONFIG_DEBUG_SPINLOCK is not set +# CONFIG_DEBUG_STACK_USAGE is not set +# CONFIG_DEBUG_TIMEKEEPING is not set +# CONFIG_DEBUG_UART_8250 is not set +# CONFIG_DEBUG_UART_BCM63XX is not set +# CONFIG_DEBUG_USER is not set +# CONFIG_DEBUG_VM is not set +# CONFIG_DEBUG_WW_MUTEX_SLOWPATH is not set +CONFIG_DECNET=m +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_CFQ is not set +CONFIG_DEFAULT_CUBIC=y +CONFIG_DEFAULT_DEADLINE=y +CONFIG_DEFAULT_HOSTNAME="(none)" +CONFIG_DEFAULT_HUNG_TASK_TIMEOUT=120 +CONFIG_DEFAULT_IOSCHED="deadline" +CONFIG_DEFAULT_MMAP_MIN_ADDR=32768 +# CONFIG_DEFAULT_NOOP is not set +# CONFIG_DEFAULT_RENO is not set +CONFIG_DEFAULT_SECURITY="apparmor" +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_SECURITY_YAMA is not set +CONFIG_DEFAULT_TCP_CONG="cubic" +CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" +# CONFIG_DEPRECATED_PARAM_STRUCT is not set +CONFIG_DETECT_HUNG_TASK=y +CONFIG_DEVFREQ_GOV_PERFORMANCE=y +CONFIG_DEVFREQ_GOV_POWERSAVE=y +CONFIG_DEVFREQ_GOV_SIMPLE_ONDEMAND=y +CONFIG_DEVFREQ_GOV_USERSPACE=y +# CONFIG_DEVKMEM is not set +CONFIG_DEVMEM=y +CONFIG_DEVPTS_MULTIPLE_INSTANCES=y +CONFIG_DEVTMPFS=y +CONFIG_DEVTMPFS_MOUNT=y +CONFIG_DEV_APPLETALK=m +CONFIG_DEV_COREDUMP=y +CONFIG_DE_AOC=y +CONFIG_DGAP=m +CONFIG_DHT11=m +CONFIG_DLCI=m +CONFIG_DLCI_MAX=8 +CONFIG_DLM=m +# CONFIG_DLM_DEBUG is not set +CONFIG_DM9000=m +# CONFIG_DM9000_FORCE_SIMPLE_PHY_POLL is not set +CONFIG_DMADEVICES=y +# CONFIG_DMADEVICES_DEBUG is not set +# CONFIG_DMATEST is not set +# CONFIG_DMA_API_DEBUG is not set +CONFIG_DMA_BCM2708=y +CONFIG_DMA_BCM2708_LEGACY=y +CONFIG_DMA_BCM2835=y +CONFIG_DMA_CMA=y +CONFIG_DMA_ENGINE=y +CONFIG_DMA_OF=y +CONFIG_DMA_SHARED_BUFFER=y +CONFIG_DMA_VIRTUAL_CHANNELS=y +CONFIG_DM_BIO_PRISON=m +CONFIG_DM_BUFIO=m +CONFIG_DM_CACHE=m +CONFIG_DM_CACHE_CLEANER=m +CONFIG_DM_CACHE_MQ=m +CONFIG_DM_CACHE_SMQ=m +CONFIG_DM_CRYPT=m +# CONFIG_DM_DEBUG is not set +# CONFIG_DM_DEBUG_BLOCK_STACK_TRACING is not set +CONFIG_DM_DELAY=m +CONFIG_DM_ERA=m +CONFIG_DM_FLAKEY=m +CONFIG_DM_LOG_USERSPACE=m +CONFIG_DM_LOG_WRITES=m +CONFIG_DM_MIRROR=m +# CONFIG_DM_MQ_DEFAULT is not set +CONFIG_DM_MULTIPATH=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_VERITY=m +CONFIG_DM_ZERO=m +CONFIG_DNET=m +CONFIG_DNOTIFY=y +CONFIG_DNS_RESOLVER=y +CONFIG_DONGLE=y +CONFIG_DP83867_PHY=m +# CONFIG_DPM_WATCHDOG is not set +CONFIG_DQL=y +CONFIG_DRAGONRISE_FF=y +# CONFIG_DRBD_FAULT_INJECTION is not set +CONFIG_DRM=m +CONFIG_DRM_ARMADA=m +CONFIG_DRM_ATMEL_HLCDC=m +CONFIG_DRM_GEM_CMA_HELPER=y +CONFIG_DRM_I2C_ADV7511=m +CONFIG_DRM_I2C_CH7006=m +CONFIG_DRM_I2C_NXP_TDA998X=m +CONFIG_DRM_I2C_SIL164=m +CONFIG_DRM_KMS_CMA_HELPER=y +CONFIG_DRM_KMS_FB_HELPER=y +CONFIG_DRM_KMS_HELPER=m +CONFIG_DRM_LOAD_EDID_FIRMWARE=y +CONFIG_DRM_MIPI_DSI=y +CONFIG_DRM_PANEL=y +CONFIG_DRM_PANEL_LD9040=m +CONFIG_DRM_PANEL_S6E8AA0=m +CONFIG_DRM_PANEL_SHARP_LQ101R1SX01=m +CONFIG_DRM_PANEL_SIMPLE=m +CONFIG_DRM_PS8622=m +CONFIG_DRM_PTN3460=m +CONFIG_DRM_TILCDC=m +CONFIG_DRM_TILCDC_SLAVE_COMPAT=y +CONFIG_DRM_UDL=m +CONFIG_DRM_VGEM=m +CONFIG_DS1682=m +CONFIG_DTC=y +CONFIG_DT_IDLE_STATES=y +CONFIG_DUMMY=m +CONFIG_DUMMY_CONSOLE=y +CONFIG_DUMMY_IRQ=m +CONFIG_DVB_A8293=m +CONFIG_DVB_AF9013=m +CONFIG_DVB_AF9033=m +CONFIG_DVB_AS102=m +CONFIG_DVB_AS102_FE=m +CONFIG_DVB_ATBM8830=m +CONFIG_DVB_AU8522=m +CONFIG_DVB_AU8522_DTV=m +CONFIG_DVB_AU8522_V4L=m +CONFIG_DVB_B2C2_FLEXCOP=m +CONFIG_DVB_B2C2_FLEXCOP_USB=m +# CONFIG_DVB_B2C2_FLEXCOP_USB_DEBUG is not set +CONFIG_DVB_BCM3510=m +CONFIG_DVB_CORE=m +CONFIG_DVB_CX22702=m +CONFIG_DVB_CX24116=m +CONFIG_DVB_CX24120=m +CONFIG_DVB_CX24123=m +CONFIG_DVB_CXD2820R=m +CONFIG_DVB_DIB3000MB=m +CONFIG_DVB_DIB3000MC=m +CONFIG_DVB_DIB7000M=m +CONFIG_DVB_DIB7000P=m +CONFIG_DVB_DIB8000=m +CONFIG_DVB_DRX39XYJ=m +CONFIG_DVB_DRXD=m +CONFIG_DVB_DRXK=m +CONFIG_DVB_DS3000=m +# CONFIG_DVB_DUMMY_FE is not set +CONFIG_DVB_DYNAMIC_MINORS=y +CONFIG_DVB_EC100=m +CONFIG_DVB_ISL6421=m +CONFIG_DVB_ISL6423=m +CONFIG_DVB_IX2505V=m +CONFIG_DVB_LG2160=m +CONFIG_DVB_LGDT3305=m +CONFIG_DVB_LGDT3306A=m +CONFIG_DVB_LGDT330X=m +CONFIG_DVB_LGS8GXX=m +CONFIG_DVB_LNBP21=m +CONFIG_DVB_LNBP22=m +CONFIG_DVB_M88DS3103=m +CONFIG_DVB_M88RS2000=m +CONFIG_DVB_MAX_ADAPTERS=8 +CONFIG_DVB_MB86A20S=m +CONFIG_DVB_MN88472=m +CONFIG_DVB_MN88473=m +CONFIG_DVB_MT312=m +CONFIG_DVB_MT352=m +CONFIG_DVB_NET=y +CONFIG_DVB_NXT200X=m +CONFIG_DVB_NXT6000=m +CONFIG_DVB_PLL=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_S921=m +CONFIG_DVB_SI2165=m +CONFIG_DVB_SI2168=m +CONFIG_DVB_SI21XX=m +CONFIG_DVB_SP2=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_STV0900=m +CONFIG_DVB_STV090x=m +CONFIG_DVB_STV6110=m +CONFIG_DVB_STV6110x=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_TDA826X=m +CONFIG_DVB_TS2020=m +CONFIG_DVB_TUNER_CX24113=m +CONFIG_DVB_TUNER_DIB0070=m +CONFIG_DVB_TUNER_DIB0090=m +CONFIG_DVB_TUNER_ITD1000=m +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_DEBUG is not set +CONFIG_DVB_USB_DIB0700=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_FRIIO=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_ZL10039=m +CONFIG_DVB_ZL10353=m +CONFIG_DWMAC_GENERIC=m +CONFIG_DWMAC_IPQ806X=m +CONFIG_DWMAC_LPC18XX=m +CONFIG_DWMAC_MESON=m +CONFIG_DWMAC_ROCKCHIP=m +CONFIG_DWMAC_SOCFPGA=m +CONFIG_DWMAC_STI=m +CONFIG_DWMAC_SUNXI=m +CONFIG_DW_DMAC=m +CONFIG_DW_DMAC_CORE=m +CONFIG_DW_WATCHDOG=m +CONFIG_DYNAMIC_DEBUG=y +CONFIG_DYNAMIC_FTRACE=y +CONFIG_ECHO=m +CONFIG_ECRYPT_FS=y +CONFIG_ECRYPT_FS_MESSAGING=y +CONFIG_EDAC=y +CONFIG_EDAC_ATOMIC_SCRUB=y +# CONFIG_EDAC_DEBUG is not set +# CONFIG_EDAC_LEGACY_SYSFS is not set +CONFIG_EDAC_MM_EDAC=m +CONFIG_EDAC_SUPPORT=y +CONFIG_EEPROM_93CX6=m +CONFIG_EEPROM_93XX46=m +CONFIG_EEPROM_AT24=m +CONFIG_EEPROM_AT25=m +CONFIG_EEPROM_LEGACY=m +CONFIG_EEPROM_MAX6875=m +CONFIG_EFI_PARTITION=y +CONFIG_EFS_FS=m +CONFIG_ELF_CORE=y +CONFIG_EMAC_ROCKCHIP=m +# CONFIG_EMBEDDED is not set +# CONFIG_EM_TIMER_STI is not set +# CONFIG_ENABLE_MUST_CHECK is not set +# CONFIG_ENABLE_WARN_DEPRECATED is not set +CONFIG_ENC28J60=m +# CONFIG_ENC28J60_WRITEVERIFY is not set +CONFIG_ENCLOSURE_SERVICES=m +CONFIG_ENCRYPTED_KEYS=y +CONFIG_EPOLL=y +CONFIG_EQUALIZER=m +CONFIG_ESI_DONGLE=m +CONFIG_ETHERNET=y +CONFIG_ETHOC=m +CONFIG_EVENTFD=y +CONFIG_EVENT_TRACING=y +CONFIG_EVM=y +CONFIG_EVM_ATTR_FSUUID=y +CONFIG_EVM_EXTRA_SMACK_XATTRS=y +# CONFIG_EXOFS_DEBUG is not set +CONFIG_EXOFS_FS=m +CONFIG_EXPERT=y +CONFIG_EXPORTFS=y +# CONFIG_EXT2_FS is not set +# CONFIG_EXT3_FS is not set +# CONFIG_EXT4_DEBUG is not set +CONFIG_EXT4_ENCRYPTION=m +CONFIG_EXT4_FS=y +CONFIG_EXT4_FS_ENCRYPTION=y +CONFIG_EXT4_FS_POSIX_ACL=y +CONFIG_EXT4_FS_SECURITY=y +CONFIG_EXT4_USE_FOR_EXT23=y +CONFIG_EXTCON=y +CONFIG_EXTCON_ADC_JACK=m +CONFIG_EXTCON_ARIZONA=m +CONFIG_EXTCON_AXP288=m +CONFIG_EXTCON_GPIO=m +CONFIG_EXTCON_MAX14577=m +CONFIG_EXTCON_MAX77693=m +CONFIG_EXTCON_MAX77843=m +CONFIG_EXTCON_MAX8997=m +CONFIG_EXTCON_PALMAS=m +CONFIG_EXTCON_RT8973A=m +CONFIG_EXTCON_SM5502=m +CONFIG_EXTCON_USB_GPIO=m +CONFIG_EXTRA_FIRMWARE="" +CONFIG_EZCHIP_NPS_MANAGEMENT_ENET=m +CONFIG_EZX_PCAP=y +# CONFIG_F2FS_CHECK_FS is not set +CONFIG_F2FS_FS=m +CONFIG_F2FS_FS_ENCRYPTION=y +CONFIG_F2FS_FS_POSIX_ACL=y +CONFIG_F2FS_FS_SECURITY=y +CONFIG_F2FS_FS_XATTR=y +# CONFIG_F2FS_IO_TRACE is not set +CONFIG_F2FS_STAT_FS=y +CONFIG_FAIR_GROUP_SCHED=y +CONFIG_FANOTIFY=y +CONFIG_FANOTIFY_ACCESS_PERMISSIONS=y +CONFIG_FAT_DEFAULT_CODEPAGE=437 +CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1" +CONFIG_FAT_FS=y +# CONFIG_FAULT_INJECTION is not set +CONFIG_FB=y +CONFIG_FB_ARMCLCD=y +CONFIG_FB_AUO_K1900=m +CONFIG_FB_AUO_K1901=m +CONFIG_FB_AUO_K190X=m +CONFIG_FB_BACKLIGHT=y +CONFIG_FB_BCM2708=y +# CONFIG_FB_BOOT_VESA_SUPPORT is not set +CONFIG_FB_BROADSHEET=m +CONFIG_FB_CFB_COPYAREA=y +CONFIG_FB_CFB_FILLRECT=y +CONFIG_FB_CFB_IMAGEBLIT=y +# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set +CONFIG_FB_CMDLINE=y +# CONFIG_FB_DDC is not set +CONFIG_FB_DEFERRED_IO=y +CONFIG_FB_FLEX=m +# CONFIG_FB_FOREIGN_ENDIAN is not set +# CONFIG_FB_MACMODES is not set +CONFIG_FB_METRONOME=m +CONFIG_FB_MODE_HELPERS=y +CONFIG_FB_OPENCORES=m +CONFIG_FB_RPISENSE=m +CONFIG_FB_S1D13XXX=m +# CONFIG_FB_SIMPLE is not set +CONFIG_FB_SM501=m +CONFIG_FB_SMSCUFX=m +CONFIG_FB_SSD1307=m +# CONFIG_FB_SVGALIB is not set +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_FBTFT_DEVICE=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_SSD1289=m +CONFIG_FB_TFT_SSD1306=m +CONFIG_FB_TFT_SSD1331=m +CONFIG_FB_TFT_SSD1351=m +CONFIG_FB_TFT_ST7735R=m +CONFIG_FB_TFT_TINYLCD=m +CONFIG_FB_TFT_TLS8204=m +CONFIG_FB_TFT_UC1701=m +CONFIG_FB_TFT_UPD161704=m +CONFIG_FB_TFT_WATTEROTT=m +CONFIG_FB_TILEBLITTING=y +CONFIG_FB_TMIO=m +CONFIG_FB_TMIO_ACCELL=y +CONFIG_FB_UDL=m +CONFIG_FB_UVESA=m +# CONFIG_FB_VIRTUAL is not set +# CONFIG_FENCE_TRACE is not set +CONFIG_FHANDLE=y +CONFIG_FIB_RULES=y +CONFIG_FILE_LOCKING=y +CONFIG_FIQ=y +CONFIG_FIRMWARE_EDID=y +CONFIG_FIRMWARE_IN_KERNEL=y +CONFIG_FIRMWARE_MEMMAP=y +CONFIG_FIXED_PHY=y +CONFIG_FLATMEM=y +CONFIG_FLAT_NODE_MEM_MAP=y +CONFIG_FMC=m +CONFIG_FMC_CHARDEV=m +CONFIG_FMC_FAKEDEV=m +CONFIG_FMC_TRIVIAL=m +CONFIG_FMC_WRITE_EEPROM=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_FORCE_MAX_ZONEORDER=11 +CONFIG_FRAMEBUFFER_CONSOLE=y +CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y +CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y +CONFIG_FRAME_POINTER=y +CONFIG_FRAME_WARN=1024 +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_FSL_EDMA=m +CONFIG_FSNOTIFY=y +CONFIG_FS_MBCACHE=y +CONFIG_FS_POSIX_ACL=y +CONFIG_FT1000=m +CONFIG_FT1000_USB=m +CONFIG_FTGMAC100=m +CONFIG_FTL=m +CONFIG_FTMAC100=m +CONFIG_FTRACE=y +CONFIG_FTRACE_MCOUNT_RECORD=y +# CONFIG_FTRACE_STARTUP_TEST is not set +CONFIG_FTRACE_SYSCALLS=y +CONFIG_FUNCTION_GRAPH_TRACER=y +CONFIG_FUNCTION_PROFILER=y +CONFIG_FUNCTION_TRACER=y +CONFIG_FUSE_FS=y +CONFIG_FUTEX=y +CONFIG_FW_LOADER=y +# CONFIG_FW_LOADER_USER_HELPER_FALLBACK is not set +CONFIG_GACT_PROB=y +CONFIG_GAMEPORT=m +CONFIG_GAMEPORT_L4=m +CONFIG_GAMEPORT_NS558=m +CONFIG_GARP=m +# CONFIG_GCOV_KERNEL is not set +CONFIG_GDB_SCRIPTS=y +CONFIG_GENERIC_ADC_BATTERY=m +CONFIG_GENERIC_ALLOCATOR=y +CONFIG_GENERIC_BUG=y +CONFIG_GENERIC_CALIBRATE_DELAY=y +CONFIG_GENERIC_CLOCKEVENTS=y +CONFIG_GENERIC_CLOCKEVENTS_BROADCAST=y +# CONFIG_GENERIC_CPU_DEVICES is not set +CONFIG_GENERIC_HWEIGHT=y +CONFIG_GENERIC_IDLE_POLL_SETUP=y +CONFIG_GENERIC_IO=y +CONFIG_GENERIC_IRQ_CHIP=y +CONFIG_GENERIC_IRQ_PROBE=y +CONFIG_GENERIC_IRQ_SHOW=y +CONFIG_GENERIC_IRQ_SHOW_LEVEL=y +CONFIG_GENERIC_NET_UTILS=y +CONFIG_GENERIC_PCI_IOMAP=y +CONFIG_GENERIC_PHY=y +CONFIG_GENERIC_PINCONF=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_GENEVE=m +CONFIG_GENEVE_CORE=m +CONFIG_GFS2_FS=m +CONFIG_GFS2_FS_LOCKING_DLM=y +CONFIG_GIGASET_BASE=m +# CONFIG_GIGASET_CAPI is not set +# CONFIG_GIGASET_DEBUG is not set +# CONFIG_GIGASET_DUMMYLL is not set +CONFIG_GIGASET_I4L=y +CONFIG_GIGASET_M101=m +CONFIG_GIGASET_M105=m +CONFIG_GIRBIL_DONGLE=m +CONFIG_GLOB=y +# CONFIG_GLOB_SELFTEST is not set +CONFIG_GP2AP020A00F=m +CONFIG_GPIOLIB=y +CONFIG_GPIOLIB_IRQCHIP=y +CONFIG_GPIO_74X164=m +CONFIG_GPIO_74XX_MMIO=m +CONFIG_GPIO_ADNP=m +CONFIG_GPIO_ADP5520=m +CONFIG_GPIO_ADP5588=m +CONFIG_GPIO_ALTERA=m +CONFIG_GPIO_ARIZONA=m +CONFIG_GPIO_CRYSTAL_COVE=m +CONFIG_GPIO_DA9052=m +CONFIG_GPIO_DA9055=m +CONFIG_GPIO_DEVRES=y +CONFIG_GPIO_DLN2=m +CONFIG_GPIO_DWAPB=m +# CONFIG_GPIO_EM is not set +CONFIG_GPIO_GENERIC=y +CONFIG_GPIO_GENERIC_PLATFORM=y +CONFIG_GPIO_GRGPIO=m +CONFIG_GPIO_KEMPLD=m +CONFIG_GPIO_LP3943=m +CONFIG_GPIO_MAX7300=m +CONFIG_GPIO_MAX7301=m +CONFIG_GPIO_MAX730X=m +CONFIG_GPIO_MAX732X=m +CONFIG_GPIO_MC33880=m +CONFIG_GPIO_MCP23S08=m +CONFIG_GPIO_PALMAS=y +CONFIG_GPIO_PCA953X=m +CONFIG_GPIO_PCF857X=m +CONFIG_GPIO_PL061=y +CONFIG_GPIO_RC5T583=y +CONFIG_GPIO_SCH311X=m +CONFIG_GPIO_STMPE=y +CONFIG_GPIO_SX150X=y +CONFIG_GPIO_SYSCON=m +CONFIG_GPIO_SYSFS=y +CONFIG_GPIO_TC3589X=y +CONFIG_GPIO_TPS6586X=y +CONFIG_GPIO_TPS65910=y +CONFIG_GPIO_TPS65912=m +CONFIG_GPIO_TWL4030=y +CONFIG_GPIO_TWL6040=y +CONFIG_GPIO_UCB1400=m +CONFIG_GPIO_VIPERBOARD=m +CONFIG_GPIO_WATCHDOG=m +CONFIG_GPIO_WM831X=m +CONFIG_GPIO_WM8350=m +CONFIG_GPIO_WM8994=m +CONFIG_GPIO_ZEVIO=y +CONFIG_GRACE_PERIOD=m +CONFIG_GREENASIA_FF=y +CONFIG_GS_FPGABOOT=m +CONFIG_HAMRADIO=y +CONFIG_HANDLE_DOMAIN_IRQ=y +CONFIG_HARDIRQS_SW_RESEND=y +CONFIG_HAS_DMA=y +CONFIG_HAS_IOMEM=y +CONFIG_HAS_IOPORT_MAP=y +# CONFIG_HAVE_64BIT_ALIGNED_ACCESS is not set +# CONFIG_HAVE_AOUT is not set +CONFIG_HAVE_ARCH_AUDITSYSCALL=y +CONFIG_HAVE_ARCH_BITREVERSE=y +CONFIG_HAVE_ARCH_JUMP_LABEL=y +CONFIG_HAVE_ARCH_KGDB=y +CONFIG_HAVE_ARCH_PFN_VALID=y +CONFIG_HAVE_ARCH_SECCOMP_FILTER=y +CONFIG_HAVE_ARCH_TRACEHOOK=y +CONFIG_HAVE_ARM_ARCH_TIMER=y +# CONFIG_HAVE_BOOTMEM_INFO_NODE is not set +CONFIG_HAVE_BPF_JIT=y +CONFIG_HAVE_CC_STACKPROTECTOR=y +CONFIG_HAVE_CLK=y +CONFIG_HAVE_CLK_PREPARE=y +CONFIG_HAVE_CONTEXT_TRACKING=y +CONFIG_HAVE_C_RECORDMCOUNT=y +CONFIG_HAVE_DEBUG_KMEMLEAK=y +CONFIG_HAVE_DMA_API_DEBUG=y +CONFIG_HAVE_DMA_ATTRS=y +CONFIG_HAVE_DMA_CONTIGUOUS=y +CONFIG_HAVE_DYNAMIC_FTRACE=y +CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y +CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y +CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y +CONFIG_HAVE_FUNCTION_TRACER=y +CONFIG_HAVE_GENERIC_DMA_COHERENT=y +CONFIG_HAVE_HW_BREAKPOINT=y +CONFIG_HAVE_IRQ_TIME_ACCOUNTING=y +CONFIG_HAVE_KERNEL_GZIP=y +CONFIG_HAVE_KERNEL_LZ4=y +CONFIG_HAVE_KERNEL_LZMA=y +CONFIG_HAVE_KERNEL_LZO=y +CONFIG_HAVE_KERNEL_XZ=y +CONFIG_HAVE_KPROBES=y +CONFIG_HAVE_KRETPROBES=y +CONFIG_HAVE_MEMBLOCK=y +CONFIG_HAVE_MOD_ARCH_SPECIFIC=y +CONFIG_HAVE_NET_DSA=y +CONFIG_HAVE_OPROFILE=y +CONFIG_HAVE_OPTPROBES=y +CONFIG_HAVE_PERF_EVENTS=y +CONFIG_HAVE_PERF_REGS=y +CONFIG_HAVE_PERF_USER_STACK_DUMP=y +CONFIG_HAVE_PROC_CPU=y +CONFIG_HAVE_REGS_AND_STACK_ACCESS_API=y +CONFIG_HAVE_SMP=y +CONFIG_HAVE_SYSCALL_TRACEPOINTS=y +CONFIG_HAVE_UID16=y +CONFIG_HAVE_VIRT_CPU_ACCOUNTING_GEN=y +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_HEADERS_CHECK is not set +CONFIG_HFSPLUS_FS=m +CONFIG_HFSPLUS_FS_POSIX_ACL=y +CONFIG_HFS_FS=m +CONFIG_HIBERNATE_CALLBACKS=y +CONFIG_HIBERNATION=y +CONFIG_HID=y +CONFIG_HIDRAW=y +CONFIG_HID_A4TECH=m +CONFIG_HID_ACRUX=m +CONFIG_HID_ACRUX_FF=y +CONFIG_HID_APPLE=m +CONFIG_HID_APPLEIR=m +CONFIG_HID_AUREAL=m +CONFIG_HID_BATTERY_STRENGTH=y +CONFIG_HID_BELKIN=m +CONFIG_HID_BETOP_FF=m +CONFIG_HID_CHERRY=m +CONFIG_HID_CHICONY=m +CONFIG_HID_CP2112=m +CONFIG_HID_CYPRESS=m +CONFIG_HID_DRAGONRISE=m +CONFIG_HID_ELECOM=m +CONFIG_HID_ELO=m +CONFIG_HID_EMS_FF=m +CONFIG_HID_EZKEY=m +CONFIG_HID_GENERIC=y +CONFIG_HID_GREENASIA=m +CONFIG_HID_GT683R=m +CONFIG_HID_GYRATION=m +CONFIG_HID_HOLTEK=m +CONFIG_HID_ICADE=m +CONFIG_HID_KENSINGTON=m +CONFIG_HID_KEYTOUCH=m +CONFIG_HID_KYE=m +CONFIG_HID_LCPOWER=m +CONFIG_HID_LENOVO=m +CONFIG_HID_LOGITECH=m +CONFIG_HID_LOGITECH_DJ=m +CONFIG_HID_LOGITECH_HIDPP=m +CONFIG_HID_MAGICMOUSE=m +CONFIG_HID_MICROSOFT=m +CONFIG_HID_MONTEREY=m +CONFIG_HID_MULTITOUCH=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_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_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_SMARTJOYPLUS=m +CONFIG_HID_SONY=m +CONFIG_HID_SPEEDLINK=m +CONFIG_HID_STEELSERIES=m +CONFIG_HID_SUNPLUS=m +CONFIG_HID_THINGM=m +CONFIG_HID_THRUSTMASTER=m +CONFIG_HID_TIVO=m +CONFIG_HID_TOPSEED=m +CONFIG_HID_TWINHAN=m +CONFIG_HID_UCLOGIC=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 is not set +CONFIG_HIGH_RES_TIMERS=y +CONFIG_HIP04_ETH=m +CONFIG_HISAX_16_3=y +CONFIG_HISAX_1TR6=y +CONFIG_HISAX_AVM_A1_PCMCIA=y +# CONFIG_HISAX_DEBUG is not set +CONFIG_HISAX_DIEHLDIVA=y +CONFIG_HISAX_ELSA=y +CONFIG_HISAX_EURO=y +CONFIG_HISAX_FRITZPCI=y +CONFIG_HISAX_GAZEL=y +CONFIG_HISAX_HFC4S8S=m +CONFIG_HISAX_HFCUSB=m +CONFIG_HISAX_HFC_SX=y +CONFIG_HISAX_MAX_CARDS=8 +CONFIG_HISAX_NI1=y +CONFIG_HISAX_NICCY=y +# CONFIG_HISAX_NO_KEYPAD is not set +# CONFIG_HISAX_NO_LLC is not set +# CONFIG_HISAX_NO_SENDCOMPLETE is not set +CONFIG_HISAX_S0BOX=y +CONFIG_HISAX_SEDLBAUER=y +CONFIG_HISAX_ST5481=m +CONFIG_HIX5HD2_GMAC=m +CONFIG_HMC6352=m +CONFIG_HOLTEK_FF=y +CONFIG_HOSTAP=m +CONFIG_HOSTAP_FIRMWARE=y +CONFIG_HOSTAP_FIRMWARE_NVRAM=y +CONFIG_HOTPLUG_CPU=y +CONFIG_HPFS_FS=m +CONFIG_HSI=m +CONFIG_HSI_BOARDINFO=y +CONFIG_HSI_CHAR=m +CONFIG_HSR=m +CONFIG_HTC_EGPIO=y +CONFIG_HTC_I2CPLD=y +CONFIG_HTC_PASIC3=m +# CONFIG_HUGETLB_PAGE is not set +# CONFIG_HVC_DCC is not set +CONFIG_HWMON=y +# CONFIG_HWMON_DEBUG_CHIP is not set +CONFIG_HWMON_VID=m +CONFIG_HW_CONSOLE=y +CONFIG_HW_PERF_EVENTS=y +CONFIG_HW_RANDOM=y +CONFIG_HW_RANDOM_BCM2708=m +CONFIG_HW_RANDOM_BCM2835=m +CONFIG_HW_RANDOM_TIMERIOMEM=m +CONFIG_HW_RANDOM_TPM=m +CONFIG_HZ=250 +# CONFIG_HZ_100 is not set +# CONFIG_HZ_1000 is not set +# CONFIG_HZ_200 is not set +CONFIG_HZ_250=y +# CONFIG_HZ_300 is not set +# CONFIG_HZ_500 is not set +CONFIG_HZ_FIXED=0 +# CONFIG_HZ_PERIODIC is not set +CONFIG_I2C=y +CONFIG_I2C_ALGOBIT=m +CONFIG_I2C_ALGOPCA=m +CONFIG_I2C_ARB_GPIO_CHALLENGE=m +CONFIG_I2C_BCM2048=m +CONFIG_I2C_BCM2708=m +CONFIG_I2C_BCM2708_BAUDRATE=100000 +# CONFIG_I2C_BCM2835 is not set +CONFIG_I2C_BOARDINFO=y +CONFIG_I2C_CBUS_GPIO=m +CONFIG_I2C_CHARDEV=y +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_DESIGNWARE_CORE=m +CONFIG_I2C_DESIGNWARE_PLATFORM=m +CONFIG_I2C_DIOLAN_U2C=m +CONFIG_I2C_DLN2=m +CONFIG_I2C_GPIO=m +CONFIG_I2C_HELPER_AUTO=y +CONFIG_I2C_HID=m +CONFIG_I2C_KEMPLD=m +CONFIG_I2C_MUX=m +CONFIG_I2C_MUX_GPIO=m +CONFIG_I2C_MUX_PCA9541=m +CONFIG_I2C_MUX_PCA954x=m +CONFIG_I2C_MUX_PINCTRL=m +CONFIG_I2C_NOMADIK=m +CONFIG_I2C_OCORES=m +CONFIG_I2C_PARPORT=m +CONFIG_I2C_PARPORT_LIGHT=m +CONFIG_I2C_PCA_PLATFORM=m +# CONFIG_I2C_PXA_PCI is not set +CONFIG_I2C_RK3X=m +CONFIG_I2C_ROBOTFUZZ_OSIF=m +CONFIG_I2C_SI470X=m +CONFIG_I2C_SI4713=m +CONFIG_I2C_SIMTEC=m +CONFIG_I2C_SLAVE=y +CONFIG_I2C_SLAVE_EEPROM=m +CONFIG_I2C_SMBUS=m +CONFIG_I2C_STUB=m +CONFIG_I2C_TAOS_EVM=m +CONFIG_I2C_TINY_USB=m +CONFIG_I2C_VIPERBOARD=m +CONFIG_I2C_XILINX=m +CONFIG_ICPLUS_PHY=m +CONFIG_ICS932S401=m +# CONFIG_IDMA64 is not set +CONFIG_IEEE802154=m +CONFIG_IEEE802154_6LOWPAN=m +CONFIG_IEEE802154_AT86RF230=m +CONFIG_IEEE802154_ATUSB=m +CONFIG_IEEE802154_CC2520=m +CONFIG_IEEE802154_DRIVERS=m +CONFIG_IEEE802154_FAKELB=m +CONFIG_IEEE802154_MRF24J40=m +CONFIG_IEEE802154_SOCKET=m +CONFIG_IFB=m +CONFIG_IIO=m +CONFIG_IIO_ADIS_LIB=m +CONFIG_IIO_ADIS_LIB_BUFFER=y +CONFIG_IIO_BUFFER=y +CONFIG_IIO_BUFFER_CB=y +CONFIG_IIO_CONSUMERS_PER_TRIGGER=2 +CONFIG_IIO_INTERRUPT_TRIGGER=m +CONFIG_IIO_KFIFO_BUF=m +CONFIG_IIO_PERIODIC_RTC_TRIGGER=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_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_SYSFS_TRIGGER=m +CONFIG_IIO_TRIGGER=y +CONFIG_IIO_TRIGGERED_BUFFER=m +# CONFIG_IKCONFIG is not set +CONFIG_IMA=y +CONFIG_IMA_APPRAISE=y +CONFIG_IMA_DEFAULT_HASH="sha1" +CONFIG_IMA_DEFAULT_HASH_SHA1=y +# CONFIG_IMA_DEFAULT_HASH_SHA256 is not set +# CONFIG_IMA_DEFAULT_HASH_SHA512 is not set +# CONFIG_IMA_DEFAULT_HASH_WP512 is not set +CONFIG_IMA_DEFAULT_TEMPLATE="ima-ng" +# CONFIG_IMA_LOAD_X509 is not set +CONFIG_IMA_LSM_RULES=y +CONFIG_IMA_MEASURE_PCR_IDX=10 +CONFIG_IMA_NG_TEMPLATE=y +# CONFIG_IMA_SIG_TEMPLATE is not set +# CONFIG_IMA_TEMPLATE is not set +CONFIG_IMA_TRUSTED_KEYRING=y +CONFIG_IMX_THERMAL=m +CONFIG_INET=y +CONFIG_INET6_AH=m +CONFIG_INET6_ESP=m +CONFIG_INET6_IPCOMP=m +CONFIG_INET6_TUNNEL=m +CONFIG_INET6_XFRM_MODE_BEET=m +CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION=m +CONFIG_INET6_XFRM_MODE_TRANSPORT=m +CONFIG_INET6_XFRM_MODE_TUNNEL=m +CONFIG_INET6_XFRM_TUNNEL=m +CONFIG_INET_AH=m +CONFIG_INET_DCCP_DIAG=m +CONFIG_INET_DIAG=m +CONFIG_INET_ESP=m +CONFIG_INET_IPCOMP=m +CONFIG_INET_LRO=y +CONFIG_INET_TCP_DIAG=m +CONFIG_INET_TUNNEL=m +CONFIG_INET_UDP_DIAG=m +CONFIG_INET_XFRM_MODE_BEET=m +CONFIG_INET_XFRM_MODE_TRANSPORT=m +CONFIG_INET_XFRM_MODE_TUNNEL=m +CONFIG_INET_XFRM_TUNNEL=m +CONFIG_INFTL=m +CONFIG_INITRAMFS_SOURCE="" +CONFIG_INIT_ENV_ARG_LIMIT=32 +CONFIG_INLINE_READ_UNLOCK=y +CONFIG_INLINE_READ_UNLOCK_IRQ=y +CONFIG_INLINE_SPIN_UNLOCK_IRQ=y +CONFIG_INLINE_WRITE_UNLOCK=y +CONFIG_INLINE_WRITE_UNLOCK_IRQ=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_ARIZONA_HAPTICS=m +CONFIG_INPUT_ATI_REMOTE2=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_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_EVBUG=m +CONFIG_INPUT_EVDEV=y +CONFIG_INPUT_FF_MEMLESS=m +CONFIG_INPUT_GP2A=m +CONFIG_INPUT_GPIO_BEEPER=m +CONFIG_INPUT_GPIO_ROTARY_ENCODER=m +CONFIG_INPUT_GPIO_TILT_POLLED=m +CONFIG_INPUT_IMS_PCU=m +CONFIG_INPUT_JOYDEV=m +CONFIG_INPUT_JOYSTICK=y +CONFIG_INPUT_KEYBOARD=y +CONFIG_INPUT_KEYSPAN_REMOTE=m +CONFIG_INPUT_KXTJ9=m +# CONFIG_INPUT_KXTJ9_POLLED_MODE is not set +CONFIG_INPUT_LEDS=m +CONFIG_INPUT_MATRIXKMAP=m +CONFIG_INPUT_MAX77693_HAPTIC=m +CONFIG_INPUT_MAX77843_HAPTIC=m +CONFIG_INPUT_MAX8925_ONKEY=m +CONFIG_INPUT_MAX8997_HAPTIC=m +CONFIG_INPUT_MC13783_PWRBUTTON=m +CONFIG_INPUT_MISC=y +CONFIG_INPUT_MMA8450=m +CONFIG_INPUT_MOUSE=y +CONFIG_INPUT_MOUSEDEV=y +CONFIG_INPUT_MOUSEDEV_PSAUX=y +CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 +CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 +CONFIG_INPUT_MPU3050=m +CONFIG_INPUT_PALMAS_PWRBUTTON=m +CONFIG_INPUT_PCAP=m +CONFIG_INPUT_PCF50633_PMU=m +CONFIG_INPUT_PCF8574=m +CONFIG_INPUT_PM8XXX_VIBRATOR=m +CONFIG_INPUT_PMIC8XXX_PWRKEY=m +CONFIG_INPUT_POLLDEV=m +CONFIG_INPUT_POWERMATE=m +CONFIG_INPUT_PWM_BEEPER=m +CONFIG_INPUT_REGULATOR_HAPTIC=m +CONFIG_INPUT_RETU_PWRBUTTON=m +CONFIG_INPUT_SOC_BUTTON_ARRAY=m +CONFIG_INPUT_SPARSEKMAP=m +CONFIG_INPUT_TABLET=y +CONFIG_INPUT_TOUCHSCREEN=y +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_YEALINK=m +CONFIG_INTEGRITY=y +CONFIG_INTEGRITY_ASYMMETRIC_KEYS=y +CONFIG_INTEGRITY_AUDIT=y +CONFIG_INTEGRITY_SIGNATURE=y +CONFIG_INTEL_SOC_PMIC=y +CONFIG_INTERVAL_TREE=y +CONFIG_INTERVAL_TREE_TEST=m +CONFIG_INV_MPU6050_IIO=m +CONFIG_IOMMU_HELPER=y +# CONFIG_IOMMU_IO_PGTABLE_LPAE is not set +CONFIG_IOMMU_SUPPORT=y +CONFIG_IOSCHED_CFQ=y +CONFIG_IOSCHED_DEADLINE=y +CONFIG_IOSCHED_NOOP=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_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_IPACK_BUS=m +CONFIG_IPC_NS=y +CONFIG_IPDDP=m +CONFIG_IPDDP_ENCAP=y +CONFIG_IPMI_DEVICE_INTERFACE=m +CONFIG_IPMI_HANDLER=m +# CONFIG_IPMI_PANIC_EVENT is not set +CONFIG_IPMI_POWEROFF=m +CONFIG_IPMI_SI=m +CONFIG_IPMI_SI_PROBE_DEFAULTS=y +CONFIG_IPMI_SSIF=m +CONFIG_IPMI_WATCHDOG=m +CONFIG_IPPP_FILTER=y +CONFIG_IPV6=y +CONFIG_IPV6_GRE=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_SIT=m +CONFIG_IPV6_SIT_6RD=y +CONFIG_IPV6_SUBTREES=y +CONFIG_IPV6_TUNNEL=m +CONFIG_IPV6_VTI=m +CONFIG_IPVLAN=m +CONFIG_IPX=m +# CONFIG_IPX_INTERN is not set +CONFIG_IP_ADVANCED_ROUTER=y +CONFIG_IP_DCCP=m +# CONFIG_IP_DCCP_CCID2_DEBUG is not set +# CONFIG_IP_DCCP_CCID3 is not set +# CONFIG_IP_DCCP_DEBUG is not set +CONFIG_IP_FIB_TRIE_STATS=y +CONFIG_IP_MROUTE=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=y +# CONFIG_IP_PNP_BOOTP is not set +CONFIG_IP_PNP_DHCP=y +# CONFIG_IP_PNP_RARP 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_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_NFCT=y +CONFIG_IP_VS_NQ=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_IRCOMM=m +CONFIG_IRDA=m +CONFIG_IRDA_CACHE_LAST_LSAP=y +# CONFIG_IRDA_DEBUG is not set +CONFIG_IRDA_FAST_RR=y +CONFIG_IRDA_ULTRA=y +CONFIG_IRLAN=m +CONFIG_IRNET=m +CONFIG_IRQCHIP=y +# CONFIG_IRQSOFF_TRACER is not set +CONFIG_IRQ_DOMAIN=y +# CONFIG_IRQ_DOMAIN_DEBUG is not set +CONFIG_IRQ_FORCED_THREADING=y +# CONFIG_IRQ_FORCED_THREADING_DEFAULT is not set +# CONFIG_IRQ_TIME_ACCOUNTING is not set +CONFIG_IRQ_WORK=y +CONFIG_IRTTY_SIR=m +CONFIG_IR_GPIO_CIR=m +CONFIG_IR_HIX5HD2=m +CONFIG_IR_IGORPLUGUSB=m +CONFIG_IR_IGUANA=m +CONFIG_IR_IMON=m +CONFIG_IR_JVC_DECODER=m +CONFIG_IR_LIRC_CODEC=m +CONFIG_IR_MCEUSB=m +CONFIG_IR_MCE_KBD_DECODER=m +CONFIG_IR_NEC_DECODER=m +CONFIG_IR_RC5_DECODER=m +CONFIG_IR_RC6_DECODER=m +CONFIG_IR_REDRAT3=m +CONFIG_IR_SANYO_DECODER=m +CONFIG_IR_SHARP_DECODER=m +CONFIG_IR_SONY_DECODER=m +CONFIG_IR_STREAMZAP=m +CONFIG_IR_TTUSBIR=m +CONFIG_IR_XMP_DECODER=m +CONFIG_ISCSI_BOOT_SYSFS=m +CONFIG_ISCSI_TARGET=m +CONFIG_ISCSI_TCP=m +CONFIG_ISDN=y +CONFIG_ISDN_AUDIO=y +CONFIG_ISDN_CAPI=m +CONFIG_ISDN_CAPI_CAPI20=m +CONFIG_ISDN_CAPI_CAPIDRV=m +# CONFIG_ISDN_CAPI_CAPIDRV_VERBOSE is not set +CONFIG_ISDN_CAPI_MIDDLEWARE=y +CONFIG_ISDN_DIVERSION=m +CONFIG_ISDN_DRV_GIGASET=m +CONFIG_ISDN_DRV_HISAX=m +CONFIG_ISDN_HDLC=m +CONFIG_ISDN_I4L=m +CONFIG_ISDN_MPP=y +CONFIG_ISDN_PPP=y +CONFIG_ISDN_PPP_BSDCOMP=m +CONFIG_ISDN_PPP_VJ=y +CONFIG_ISDN_TTY_FAX=y +CONFIG_ISDN_X25=y +CONFIG_ISL29003=m +CONFIG_ISL29020=m +CONFIG_ISL29125=m +CONFIG_ISO9660_FS=m +CONFIG_ITG3200=m +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_FS=m +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_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=y +CONFIG_JOYSTICK_IFORCE_USB=y +CONFIG_JOYSTICK_INTERACT=m +CONFIG_JOYSTICK_JOYDUMP=m +CONFIG_JOYSTICK_MAGELLAN=m +CONFIG_JOYSTICK_RPISENSE=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=y +CONFIG_KALLSYMS=y +CONFIG_KALLSYMS_ALL=y +CONFIG_KARMA_PARTITION=y +CONFIG_KDB_CONTINUE_CATASTROPHIC=0 +CONFIG_KDB_DEFAULT_ENABLE=0x1 +CONFIG_KDB_KEYBOARD=y +CONFIG_KEMPLD_WDT=m +CONFIG_KERNEL_GZIP=y +# CONFIG_KERNEL_LZ4 is not set +# CONFIG_KERNEL_LZMA is not set +# CONFIG_KERNEL_LZO is not set +CONFIG_KERNEL_MODE_NEON=y +# CONFIG_KERNEL_XZ is not set +CONFIG_KERNFS=y +CONFIG_KEXEC=y +CONFIG_KEYBOARD_ADP5520=m +CONFIG_KEYBOARD_ADP5588=m +CONFIG_KEYBOARD_ADP5589=m +CONFIG_KEYBOARD_ATKBD=y +CONFIG_KEYBOARD_BCM=m +CONFIG_KEYBOARD_CAP11XX=m +CONFIG_KEYBOARD_CROS_EC=m +CONFIG_KEYBOARD_GPIO=m +CONFIG_KEYBOARD_GPIO_POLLED=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_NEWTON=m +CONFIG_KEYBOARD_OMAP4=m +CONFIG_KEYBOARD_OPENCORES=m +CONFIG_KEYBOARD_PMIC8XXX=m +CONFIG_KEYBOARD_QT1070=m +CONFIG_KEYBOARD_QT2160=m +CONFIG_KEYBOARD_SAMSUNG=m +CONFIG_KEYBOARD_STMPE=m +CONFIG_KEYBOARD_STOWAWAY=m +CONFIG_KEYBOARD_SUNKBD=m +CONFIG_KEYBOARD_TC3589X=m +CONFIG_KEYBOARD_TCA6416=m +CONFIG_KEYBOARD_TCA8418=m +CONFIG_KEYBOARD_TWL4030=m +CONFIG_KEYBOARD_XTKBD=m +CONFIG_KEYS=y +CONFIG_KGDB=y +CONFIG_KGDB_KDB=y +CONFIG_KGDB_SERIAL_CONSOLE=y +# CONFIG_KGDB_TESTS is not set +CONFIG_KINGSUN_DONGLE=m +CONFIG_KMX61=m +CONFIG_KPROBES=y +# CONFIG_KPROBES_SANITY_TEST is not set +CONFIG_KPROBE_EVENT=y +CONFIG_KRETPROBES=y +CONFIG_KS0108=m +CONFIG_KS0108_DELAY=2 +CONFIG_KS0108_PORT=0x378 +CONFIG_KS8842=m +CONFIG_KS8851=m +CONFIG_KS8851_MLL=m +CONFIG_KS959_DONGLE=m +CONFIG_KSDAZZLE_DONGLE=m +CONFIG_KSM=y +CONFIG_KUSER_HELPERS=y +CONFIG_KXCJK1013=m +CONFIG_KXSD9=m +CONFIG_L2TP=m +CONFIG_L2TP_DEBUGFS=m +CONFIG_L2TP_ETH=m +CONFIG_L2TP_IP=m +CONFIG_L2TP_V3=y +CONFIG_LAPB=m +CONFIG_LAPBETHER=m +CONFIG_LATTICE_ECP3_CONFIG=m +CONFIG_LBDAF=y +CONFIG_LCD_AMS369FG06=m +CONFIG_LCD_CLASS_DEVICE=m +CONFIG_LCD_HX8357=m +CONFIG_LCD_ILI922X=m +CONFIG_LCD_ILI9320=m +CONFIG_LCD_L4F00242T03=m +CONFIG_LCD_LD9040=m +CONFIG_LCD_LMS283GF05=m +CONFIG_LCD_LMS501KF03=m +CONFIG_LCD_LTV350QV=m +CONFIG_LCD_PLATFORM=m +CONFIG_LCD_S6E63M0=m +CONFIG_LCD_TDO24M=m +CONFIG_LCD_VGG2432A4=m +# CONFIG_LDM_DEBUG is not set +CONFIG_LDM_PARTITION=y +CONFIG_LEDS_88PM860X=m +CONFIG_LEDS_AAT1290=m +CONFIG_LEDS_ADP5520=m +CONFIG_LEDS_ASIC3=y +CONFIG_LEDS_BCM6328=m +CONFIG_LEDS_BCM6358=m +CONFIG_LEDS_BD2802=m +CONFIG_LEDS_BLINKM=m +CONFIG_LEDS_CLASS=y +CONFIG_LEDS_CLASS_FLASH=m +CONFIG_LEDS_DA903X=m +CONFIG_LEDS_DA9052=m +CONFIG_LEDS_DAC124S085=m +CONFIG_LEDS_GPIO=y +CONFIG_LEDS_KTD2692=m +CONFIG_LEDS_LM3530=m +CONFIG_LEDS_LM3533=m +CONFIG_LEDS_LM355x=m +CONFIG_LEDS_LM3642=m +CONFIG_LEDS_LP3944=m +# CONFIG_LEDS_LP5521 is not set +# CONFIG_LEDS_LP5523 is not set +# CONFIG_LEDS_LP5562 is not set +# CONFIG_LEDS_LP8501 is not set +CONFIG_LEDS_LP8788=m +CONFIG_LEDS_LP8860=m +CONFIG_LEDS_LT3593=m +CONFIG_LEDS_MAX77693=m +CONFIG_LEDS_MAX8997=m +CONFIG_LEDS_MC13783=m +CONFIG_LEDS_MENF21BMC=m +CONFIG_LEDS_PCA9532=m +CONFIG_LEDS_PCA9532_GPIO=y +CONFIG_LEDS_PCA955X=m +CONFIG_LEDS_PCA963X=m +CONFIG_LEDS_PM8941_WLED=m +CONFIG_LEDS_PWM=m +CONFIG_LEDS_REGULATOR=m +CONFIG_LEDS_SYSCON=y +CONFIG_LEDS_TCA6507=m +CONFIG_LEDS_TLC591XX=m +CONFIG_LEDS_TRIGGERS=y +CONFIG_LEDS_TRIGGER_BACKLIGHT=m +CONFIG_LEDS_TRIGGER_CAMERA=m +CONFIG_LEDS_TRIGGER_CPU=y +CONFIG_LEDS_TRIGGER_DEFAULT_ON=y +CONFIG_LEDS_TRIGGER_GPIO=m +CONFIG_LEDS_TRIGGER_HEARTBEAT=y +# CONFIG_LEDS_TRIGGER_INPUT is not set +CONFIG_LEDS_TRIGGER_ONESHOT=m +CONFIG_LEDS_TRIGGER_TIMER=m +CONFIG_LEDS_TRIGGER_TRANSIENT=m +CONFIG_LEDS_WM831X_STATUS=m +CONFIG_LEDS_WM8350=m +CONFIG_LEGACY_PTYS=y +CONFIG_LEGACY_PTY_COUNT=0 +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_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_LIRC=m +CONFIG_LIRC_IMON=m +CONFIG_LIRC_PARALLEL=m +CONFIG_LIRC_RPI=m +CONFIG_LIRC_SASEM=m +CONFIG_LIRC_SERIAL=m +CONFIG_LIRC_SERIAL_TRANSMITTER=y +CONFIG_LIRC_SIR=m +CONFIG_LIRC_STAGING=y +CONFIG_LIRC_ZILOG=m +CONFIG_LIS3L02DQ=m +CONFIG_LITELINK_DONGLE=m +# CONFIG_LKDTM is not set +CONFIG_LLC=m +CONFIG_LLC2=m +CONFIG_LNET=m +CONFIG_LNET_MAX_PAYLOAD=1048576 +CONFIG_LNET_SELFTEST=m +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_SPIN_ON_OWNER=y +# CONFIG_LOCK_STAT is not set +CONFIG_LOCK_TORTURE_TEST=m +# CONFIG_LOGFS 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_BUF_SHIFT=17 +CONFIG_LOG_CPU_MAX_BUF_SHIFT=12 +CONFIG_LOOPBACK_TARGET=m +CONFIG_LP8788_ADC=m +# CONFIG_LP_CONSOLE is not set +CONFIG_LRU_CACHE=m +CONFIG_LSI_ET1011C_PHY=m +CONFIG_LSM_MMAP_MIN_ADDR=0 +CONFIG_LTE_GDM724X=m +CONFIG_LTR501=m +# CONFIG_LUSTRE_DEBUG_EXPENSIVE_CHECK is not set +CONFIG_LUSTRE_FS=m +CONFIG_LUSTRE_LLITE_LLOOP=m +CONFIG_LUSTRE_OBD_MAX_IOCTL_BUFFER=8192 +CONFIG_LUSTRE_TRANSLATE_ERRNOS=y +CONFIG_LXT_PHY=m +CONFIG_LZ4HC_COMPRESS=m +CONFIG_LZ4_COMPRESS=m +CONFIG_LZ4_DECOMPRESS=y +CONFIG_LZO_COMPRESS=y +CONFIG_LZO_DECOMPRESS=y +CONFIG_M62332=m +CONFIG_MA600_DONGLE=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_RC_MINSTREL_HT=y +CONFIG_MAC80211_RC_MINSTREL_VHT=y +CONFIG_MAC80211_STA_HASH_MAX_SIZE=0 +CONFIG_MAC802154=m +CONFIG_MACB=m +CONFIG_MACH_BCM2709=y +CONFIG_MACVLAN=m +CONFIG_MACVTAP=m +CONFIG_MAC_PARTITION=y +CONFIG_MAG3110=m +CONFIG_MAGIC_SYSRQ=y +CONFIG_MAGIC_SYSRQ_DEFAULT_ENABLE=0x1 +CONFIG_MAILBOX=y +CONFIG_MARVELL_PHY=m +CONFIG_MAX1027=m +CONFIG_MAX1363=m +CONFIG_MAX517=m +CONFIG_MAX5821=m +CONFIG_MAX63XX_WATCHDOG=m +CONFIG_MAX8925_POWER=m +CONFIG_MAX_RAW_DEVS=256 +CONFIG_MCB=m +CONFIG_MCP2120_DONGLE=m +CONFIG_MCP320X=m +CONFIG_MCP3422=m +CONFIG_MCP4725=m +CONFIG_MCP4922=m +CONFIG_MCPM=y +CONFIG_MCS_FIR=m +CONFIG_MD=y +CONFIG_MDIO_BCM_UNIMAC=m +CONFIG_MDIO_BITBANG=m +CONFIG_MDIO_BUS_MUX=m +CONFIG_MDIO_BUS_MUX_GPIO=m +CONFIG_MDIO_BUS_MUX_MMIOREG=m +CONFIG_MDIO_GPIO=m +CONFIG_MD_AUTODETECT=y +CONFIG_MD_CLUSTER=m +CONFIG_MD_FAULTY=m +CONFIG_MD_LINEAR=m +CONFIG_MD_MULTIPATH=m +CONFIG_MD_RAID0=m +CONFIG_MD_RAID1=m +CONFIG_MD_RAID10=m +CONFIG_MD_RAID456=m +CONFIG_MEDIA_ANALOG_TV_SUPPORT=y +CONFIG_MEDIA_ATTACH=y +CONFIG_MEDIA_CAMERA_SUPPORT=y +CONFIG_MEDIA_COMMON_OPTIONS=y +CONFIG_MEDIA_CONTROLLER=y +CONFIG_MEDIA_DIGITAL_TV_SUPPORT=y +CONFIG_MEDIA_RADIO_SUPPORT=y +CONFIG_MEDIA_RC_SUPPORT=y +CONFIG_MEDIA_SDR_SUPPORT=y +CONFIG_MEDIA_SUBDRV_AUTOSELECT=y +CONFIG_MEDIA_SUPPORT=m +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_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_MT2266=m +CONFIG_MEDIA_TUNER_MXL5005S=m +CONFIG_MEDIA_TUNER_MXL5007T=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_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_MEMCG=y +CONFIG_MEMCG_KMEM=y +CONFIG_MEMCG_SWAP=y +# CONFIG_MEMCG_SWAP_ENABLED is not set +CONFIG_MEMORY=y +CONFIG_MEMORY_ISOLATION=y +CONFIG_MEMSTICK=m +# CONFIG_MEMSTICK_DEBUG is not set +CONFIG_MEMSTICK_REALTEK_USB=m +# CONFIG_MEMSTICK_UNSAFE_RESUME is not set +CONFIG_MEMTEST=y +CONFIG_MENF21BMC_WATCHDOG=m +CONFIG_MEN_A21_WDT=m +CONFIG_MEN_Z188_ADC=m +CONFIG_MESSAGE_LOGLEVEL_DEFAULT=4 +CONFIG_MFD_88PM800=m +CONFIG_MFD_88PM805=m +CONFIG_MFD_88PM860X=y +CONFIG_MFD_AAT2870_CORE=y +CONFIG_MFD_ARIZONA=y +CONFIG_MFD_ARIZONA_I2C=m +CONFIG_MFD_ARIZONA_SPI=m +CONFIG_MFD_AS3711=y +CONFIG_MFD_AS3722=y +CONFIG_MFD_ASIC3=y +CONFIG_MFD_ATMEL_HLCDC=m +CONFIG_MFD_AXP20X=y +CONFIG_MFD_BCM590XX=m +CONFIG_MFD_CORE=y +CONFIG_MFD_CROS_EC=m +CONFIG_MFD_CROS_EC_I2C=m +CONFIG_MFD_CROS_EC_SPI=m +CONFIG_MFD_DA9052_I2C=y +CONFIG_MFD_DA9052_SPI=y +CONFIG_MFD_DA9055=y +CONFIG_MFD_DA9063=y +CONFIG_MFD_DA9150=m +CONFIG_MFD_DLN2=m +CONFIG_MFD_HI6421_PMIC=m +CONFIG_MFD_KEMPLD=m +CONFIG_MFD_LM3533=m +CONFIG_MFD_LP3943=m +CONFIG_MFD_LP8788=y +CONFIG_MFD_MAX14577=y +CONFIG_MFD_MAX77686=y +CONFIG_MFD_MAX77693=y +CONFIG_MFD_MAX77843=y +CONFIG_MFD_MAX8907=m +CONFIG_MFD_MAX8925=y +CONFIG_MFD_MAX8997=y +CONFIG_MFD_MAX8998=y +CONFIG_MFD_MC13XXX=m +CONFIG_MFD_MC13XXX_I2C=m +CONFIG_MFD_MC13XXX_SPI=m +CONFIG_MFD_MENF21BMC=m +CONFIG_MFD_MT6397=m +CONFIG_MFD_PALMAS=y +CONFIG_MFD_PCF50633=m +CONFIG_MFD_PM8921_CORE=m +CONFIG_MFD_PM8XXX=m +CONFIG_MFD_RC5T583=y +CONFIG_MFD_RETU=m +CONFIG_MFD_RK808=m +CONFIG_MFD_RN5T618=m +CONFIG_MFD_RPISENSE_CORE=m +CONFIG_MFD_RT5033=m +CONFIG_MFD_RTSX_USB=m +CONFIG_MFD_SEC_CORE=y +CONFIG_MFD_SI476X_CORE=m +CONFIG_MFD_SKY81452=m +CONFIG_MFD_SM501=y +CONFIG_MFD_SM501_GPIO=y +CONFIG_MFD_SMSC=y +CONFIG_MFD_STMPE=y +CONFIG_MFD_SYSCON=y +CONFIG_MFD_T7L66XB=y +CONFIG_MFD_TC3589X=y +CONFIG_MFD_TC6387XB=y +CONFIG_MFD_TC6393XB=y +CONFIG_MFD_TI_AM335X_TSCADC=m +CONFIG_MFD_TMIO=y +CONFIG_MFD_TPS65090=y +CONFIG_MFD_TPS65217=m +CONFIG_MFD_TPS65218=m +CONFIG_MFD_TPS6586X=y +CONFIG_MFD_TPS65910=y +CONFIG_MFD_TPS65912=y +CONFIG_MFD_TPS65912_I2C=y +CONFIG_MFD_TPS65912_SPI=y +CONFIG_MFD_TPS80031=y +CONFIG_MFD_TWL4030_AUDIO=y +CONFIG_MFD_VIPERBOARD=m +CONFIG_MFD_WL1273_CORE=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_WM8994=m +CONFIG_MFD_WM8997=y +CONFIG_MG_DISK=m +CONFIG_MG_DISK_RES=0 +CONFIG_MICREL_KS8995MA=m +CONFIG_MICREL_PHY=m +CONFIG_MIGHT_HAVE_CACHE_L2X0=y +CONFIG_MIGRATION=y +CONFIG_MII=y +CONFIG_MINIX_FS=m +CONFIG_MINIX_SUBPARTITION=y +CONFIG_MISC_FILESYSTEMS=y +CONFIG_MISDN=m +CONFIG_MISDN_DSP=m +CONFIG_MISDN_HFCUSB=m +CONFIG_MISDN_L1OIP=m +CONFIG_MKISS=m +CONFIG_MLX90614=m +CONFIG_MMA8452=m +CONFIG_MMA9551=m +CONFIG_MMA9551_CORE=m +CONFIG_MMA9553=m +CONFIG_MMC=y +CONFIG_MMC35240=m +CONFIG_MMC_ARMMMCI=y +CONFIG_MMC_BCM2835=y +CONFIG_MMC_BCM2835_DMA=y +CONFIG_MMC_BCM2835_PIO_DMA_BARRIER=2 +CONFIG_MMC_BCM2835_SDHOST=y +CONFIG_MMC_BLOCK=y +CONFIG_MMC_BLOCK_BOUNCE=y +CONFIG_MMC_BLOCK_MINORS=8 +# CONFIG_MMC_CLKGATE is not set +# CONFIG_MMC_DEBUG is not set +CONFIG_MMC_DW=m +CONFIG_MMC_DW_EXYNOS=m +CONFIG_MMC_DW_IDMAC=y +CONFIG_MMC_DW_K3=m +CONFIG_MMC_DW_PLTFM=m +CONFIG_MMC_MTK=m +CONFIG_MMC_REALTEK_USB=m +CONFIG_MMC_SDHCI=y +CONFIG_MMC_SDHCI_F_SDH30=m +CONFIG_MMC_SDHCI_OF_ARASAN=m +CONFIG_MMC_SDHCI_PLTFM=y +CONFIG_MMC_SPI=m +# CONFIG_MMC_TEST is not set +CONFIG_MMC_TMIO=m +CONFIG_MMC_TMIO_CORE=m +CONFIG_MMC_USDHI6ROL0=m +CONFIG_MMC_USHC=m +CONFIG_MMC_VUB300=m +CONFIG_MMU=y +CONFIG_MODULES=y +CONFIG_MODULES_TREE_LOOKUP=y +CONFIG_MODULES_USE_ELF_REL=y +# CONFIG_MODULE_COMPRESS is not set +# CONFIG_MODULE_FORCE_LOAD is not set +# CONFIG_MODULE_FORCE_UNLOAD is not set +CONFIG_MODULE_SIG=y +CONFIG_MODULE_SIG_ALL=y +# CONFIG_MODULE_SIG_FORCE is not set +CONFIG_MODULE_SIG_HASH="sha512" +# 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_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_CYPRESS=y +CONFIG_MOUSE_PS2_ELANTECH=y +CONFIG_MOUSE_PS2_FOCALTECH=y +CONFIG_MOUSE_PS2_LOGIPS2PP=y +CONFIG_MOUSE_PS2_SENTELIC=y +CONFIG_MOUSE_PS2_SYNAPTICS=y +CONFIG_MOUSE_PS2_TOUCHKIT=y +CONFIG_MOUSE_PS2_TRACKPOINT=y +CONFIG_MOUSE_SERIAL=m +CONFIG_MOUSE_SYNAPTICS_I2C=m +CONFIG_MOUSE_SYNAPTICS_USB=m +CONFIG_MOUSE_VSXXXAA=m +CONFIG_MPILIB=y +CONFIG_MPL115=m +CONFIG_MPL3115=m +CONFIG_MPLS=y +CONFIG_MPLS_ROUTING=m +CONFIG_MRP=m +CONFIG_MS5611=m +CONFIG_MS5611_I2C=m +CONFIG_MS5611_SPI=m +CONFIG_MSDOS_FS=m +CONFIG_MSDOS_PARTITION=y +CONFIG_MSPRO_BLOCK=m +CONFIG_MS_BLOCK=m +CONFIG_MT7601U=m +CONFIG_MTD=y +CONFIG_MTDRAM_ERASE_SIZE=128 +CONFIG_MTDRAM_TOTAL_SIZE=4096 +CONFIG_MTD_ABSENT=m +CONFIG_MTD_AFS_PARTS=m +CONFIG_MTD_AR7_PARTS=m +CONFIG_MTD_BLKDEVS=y +CONFIG_MTD_BLOCK=y +CONFIG_MTD_BLOCK2MTD=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_I4 is not set +# CONFIG_MTD_CFI_I8 is not set +CONFIG_MTD_CFI_INTELEXT=m +CONFIG_MTD_CFI_STAA=m +CONFIG_MTD_CFI_UTIL=m +CONFIG_MTD_CMDLINE_PARTS=y +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=m +CONFIG_MTD_GEN_PROBE=m +CONFIG_MTD_GPIO_ADDR=m +CONFIG_MTD_IMPA7=m +CONFIG_MTD_JEDECPROBE=m +CONFIG_MTD_LATCH_ADDR=m +CONFIG_MTD_LPDDR=m +CONFIG_MTD_LPDDR2_NVM=m +CONFIG_MTD_M25P80=m +CONFIG_MTD_MAP_BANK_WIDTH_1=y +# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set +CONFIG_MTD_MAP_BANK_WIDTH_2=y +# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set +CONFIG_MTD_MAP_BANK_WIDTH_4=y +# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set +CONFIG_MTD_MTDRAM=m +CONFIG_MTD_NAND=y +CONFIG_MTD_NAND_BCH=y +CONFIG_MTD_NAND_BCM2835_SMI=m +CONFIG_MTD_NAND_BRCMNAND=m +CONFIG_MTD_NAND_DENALI=m +CONFIG_MTD_NAND_DENALI_DT=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_DOCG4=m +CONFIG_MTD_NAND_ECC=y +CONFIG_MTD_NAND_ECC_BCH=y +# CONFIG_MTD_NAND_ECC_SMC is not set +CONFIG_MTD_NAND_GPIO=m +CONFIG_MTD_NAND_HISI504=m +CONFIG_MTD_NAND_IDS=y +CONFIG_MTD_NAND_NANDSIM=m +# CONFIG_MTD_NAND_OMAP_BCH_BUILD is not set +CONFIG_MTD_NAND_PLATFORM=m +CONFIG_MTD_NAND_TMIO=m +CONFIG_MTD_OF_PARTS=y +CONFIG_MTD_ONENAND=m +CONFIG_MTD_ONENAND_2X_PROGRAM=y +CONFIG_MTD_ONENAND_GENERIC=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_PHRAM=m +CONFIG_MTD_PHYSMAP=m +# CONFIG_MTD_PHYSMAP_COMPAT is not set +CONFIG_MTD_PHYSMAP_OF=m +CONFIG_MTD_PLATRAM=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_SLRAM=m +# CONFIG_MTD_SM_COMMON is not set +CONFIG_MTD_SPINAND_MT29F=m +CONFIG_MTD_SPINAND_ONDIEECC=y +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_MULTIUSER=y +CONFIG_MUSB_PIO_ONLY=y +CONFIG_MUTEX_SPIN_ON_OWNER=y +CONFIG_MVMDIO=m +CONFIG_MWIFIEX=m +CONFIG_MWIFIEX_SDIO=m +CONFIG_MWIFIEX_USB=m +CONFIG_NAMESPACES=y +CONFIG_NATIONAL_PHY=m +CONFIG_NAU7802=m +CONFIG_NBPFAXI_DMA=m +CONFIG_NCPFS_EXTRAS=y +CONFIG_NCPFS_IOCTL_LOCKING=y +CONFIG_NCPFS_NFS_NS=y +CONFIG_NCPFS_NLS=y +CONFIG_NCPFS_OS2_NS=y +CONFIG_NCPFS_PACKET_SIGNING=y +# CONFIG_NCPFS_SMALLDOS is not set +CONFIG_NCPFS_STRONG=y +CONFIG_NCP_FS=m +CONFIG_NEED_DMA_MAP_STATE=y +CONFIG_NEED_MACH_IO_H=y +CONFIG_NEED_MACH_MEMORY_H=y +CONFIG_NEON=y +CONFIG_NET=y +CONFIG_NETCONSOLE=m +CONFIG_NETCONSOLE_DYNAMIC=y +CONFIG_NETDEVICES=y +CONFIG_NETFILTER=y +CONFIG_NETFILTER_ADVANCED=y +# CONFIG_NETFILTER_DEBUG is not set +CONFIG_NETFILTER_INGRESS=y +CONFIG_NETFILTER_NETLINK=m +CONFIG_NETFILTER_NETLINK_ACCT=m +CONFIG_NETFILTER_NETLINK_LOG=m +CONFIG_NETFILTER_NETLINK_QUEUE=m +CONFIG_NETFILTER_NETLINK_QUEUE_CT=y +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_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_NETLABEL=y +CONFIG_NETLINK_DIAG=m +CONFIG_NETLINK_MMAP=y +CONFIG_NETPOLL=y +CONFIG_NETROM=m +CONFIG_NETWORK_FILESYSTEMS=y +# CONFIG_NETWORK_PHY_TIMESTAMPING is not set +CONFIG_NETWORK_SECMARK=y +CONFIG_NET_9P=m +# CONFIG_NET_9P_DEBUG is not set +CONFIG_NET_ACT_BPF=m +CONFIG_NET_ACT_CONNMARK=m +CONFIG_NET_ACT_CSUM=m +CONFIG_NET_ACT_GACT=m +CONFIG_NET_ACT_IPT=m +CONFIG_NET_ACT_MIRRED=m +CONFIG_NET_ACT_NAT=m +CONFIG_NET_ACT_PEDIT=m +CONFIG_NET_ACT_POLICE=m +CONFIG_NET_ACT_SIMP=m +CONFIG_NET_ACT_SKBEDIT=m +CONFIG_NET_ACT_VLAN=m +CONFIG_NET_CADENCE=y +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_IND is not set +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_DCCPPROBE=m +# CONFIG_NET_DROP_MONITOR is not set +# CONFIG_NET_DSA_MV88E6XXX is not set +# CONFIG_NET_DSA_MV88E6XXX_NEED_PPU is not set +CONFIG_NET_EMATCH=y +CONFIG_NET_EMATCH_CANID=m +CONFIG_NET_EMATCH_CMP=m +CONFIG_NET_EMATCH_IPSET=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_FLOW_LIMIT=y +CONFIG_NET_FOU=m +CONFIG_NET_FOU_IP_TUNNELS=y +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_MPLS_GSO=m +CONFIG_NET_NS=y +CONFIG_NET_PKTGEN=m +CONFIG_NET_POLL_CONTROLLER=y +CONFIG_NET_PTP_CLASSIFY=y +CONFIG_NET_RX_BUSY_POLL=y +CONFIG_NET_SCHED=y +CONFIG_NET_SCH_ATM=m +CONFIG_NET_SCH_CBQ=m +CONFIG_NET_SCH_CHOKE=m +CONFIG_NET_SCH_CODEL=m +CONFIG_NET_SCH_DRR=m +CONFIG_NET_SCH_DSMARK=m +CONFIG_NET_SCH_FIFO=y +CONFIG_NET_SCH_FQ=m +CONFIG_NET_SCH_FQ_CODEL=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_TBF=m +CONFIG_NET_SCH_TEQL=m +CONFIG_NET_SCTPPROBE=m +# CONFIG_NET_SWITCHDEV is not set +CONFIG_NET_TCPPROBE=m +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_UDP_TUNNEL=m +CONFIG_NET_VENDOR_8390=y +CONFIG_NET_VENDOR_ARC=y +CONFIG_NET_VENDOR_BROADCOM=y +CONFIG_NET_VENDOR_CIRRUS=y +CONFIG_NET_VENDOR_EZCHIP=y +CONFIG_NET_VENDOR_FARADAY=y +CONFIG_NET_VENDOR_HISILICON=y +CONFIG_NET_VENDOR_I825XX=y +CONFIG_NET_VENDOR_INTEL=y +CONFIG_NET_VENDOR_MARVELL=y +CONFIG_NET_VENDOR_MICREL=y +CONFIG_NET_VENDOR_MICROCHIP=y +CONFIG_NET_VENDOR_NATSEMI=y +CONFIG_NET_VENDOR_QUALCOMM=y +CONFIG_NET_VENDOR_RENESAS=y +CONFIG_NET_VENDOR_ROCKER=y +CONFIG_NET_VENDOR_SAMSUNG=y +CONFIG_NET_VENDOR_SEEQ=y +CONFIG_NET_VENDOR_SMSC=y +CONFIG_NET_VENDOR_STMICRO=y +CONFIG_NET_VENDOR_VIA=y +CONFIG_NET_VENDOR_WIZNET=y +CONFIG_NEW_LEDS=y +CONFIG_NFC=m +CONFIG_NFC_DIGITAL=m +CONFIG_NFC_HCI=m +CONFIG_NFC_MICROREAD=m +CONFIG_NFC_MICROREAD_I2C=m +CONFIG_NFC_MRVL=m +CONFIG_NFC_MRVL_UART=m +CONFIG_NFC_MRVL_USB=m +CONFIG_NFC_NCI=m +CONFIG_NFC_NCI_SPI=y +CONFIG_NFC_NCI_UART=m +CONFIG_NFC_NXP_NCI=m +CONFIG_NFC_NXP_NCI_I2C=m +CONFIG_NFC_PN533=m +CONFIG_NFC_PN544=m +CONFIG_NFC_PN544_I2C=m +CONFIG_NFC_PORT100=m +CONFIG_NFC_SHDLC=y +CONFIG_NFC_SIM=m +CONFIG_NFC_ST21NFCA=m +CONFIG_NFC_ST21NFCA_I2C=m +CONFIG_NFC_ST_NCI=m +CONFIG_NFC_ST_NCI_I2C=m +CONFIG_NFC_TRF7970A=m +CONFIG_NFC_WILINK=m +CONFIG_NFSD=m +# CONFIG_NFSD_FAULT_INJECTION is not set +CONFIG_NFSD_PNFS=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_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_CHAIN_NAT_IPV4=m +CONFIG_NFT_CHAIN_NAT_IPV6=m +CONFIG_NFT_CHAIN_ROUTE_IPV4=m +CONFIG_NFT_CHAIN_ROUTE_IPV6=m +CONFIG_NFT_COMPAT=m +CONFIG_NFT_COUNTER=m +CONFIG_NFT_CT=m +CONFIG_NFT_EXTHDR=m +CONFIG_NFT_HASH=m +CONFIG_NFT_LIMIT=m +CONFIG_NFT_LOG=m +CONFIG_NFT_MASQ=m +CONFIG_NFT_MASQ_IPV4=m +CONFIG_NFT_MASQ_IPV6=m +CONFIG_NFT_META=m +CONFIG_NFT_NAT=m +CONFIG_NFT_QUEUE=m +CONFIG_NFT_RBTREE=m +CONFIG_NFT_REDIR=m +CONFIG_NFT_REDIR_IPV4=m +CONFIG_NFT_REDIR_IPV6=m +CONFIG_NFT_REJECT=m +CONFIG_NFT_REJECT_INET=m +CONFIG_NFT_REJECT_IPV4=m +CONFIG_NFT_REJECT_IPV6=m +CONFIG_NF_CONNTRACK=m +CONFIG_NF_CONNTRACK_AMANDA=m +CONFIG_NF_CONNTRACK_BROADCAST=m +CONFIG_NF_CONNTRACK_EVENTS=y +CONFIG_NF_CONNTRACK_FTP=m +CONFIG_NF_CONNTRACK_H323=m +CONFIG_NF_CONNTRACK_IPV4=m +CONFIG_NF_CONNTRACK_IPV6=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=m +CONFIG_NF_CT_PROTO_GRE=m +CONFIG_NF_CT_PROTO_SCTP=m +CONFIG_NF_CT_PROTO_UDPLITE=m +CONFIG_NF_DEFRAG_IPV4=m +CONFIG_NF_DEFRAG_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_NAT=m +CONFIG_NF_NAT_AMANDA=m +CONFIG_NF_NAT_FTP=m +CONFIG_NF_NAT_H323=m +CONFIG_NF_NAT_IPV4=m +CONFIG_NF_NAT_IPV6=m +CONFIG_NF_NAT_IRC=m +CONFIG_NF_NAT_MASQUERADE_IPV4=m +CONFIG_NF_NAT_MASQUERADE_IPV6=m +CONFIG_NF_NAT_NEEDED=y +CONFIG_NF_NAT_PPTP=m +CONFIG_NF_NAT_PROTO_DCCP=m +CONFIG_NF_NAT_PROTO_GRE=m +CONFIG_NF_NAT_PROTO_SCTP=m +CONFIG_NF_NAT_PROTO_UDPLITE=m +CONFIG_NF_NAT_REDIRECT=m +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_TABLES=m +CONFIG_NF_TABLES_ARP=m +CONFIG_NF_TABLES_BRIDGE=m +CONFIG_NF_TABLES_INET=m +CONFIG_NF_TABLES_IPV4=m +CONFIG_NF_TABLES_IPV6=m +CONFIG_NF_TABLES_NETDEV=m +CONFIG_NILFS2_FS=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=y +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_NOP_TRACER=y +CONFIG_NOP_USB_XCEIV=y +CONFIG_NOTIFIER_ERROR_INJECTION=m +CONFIG_NO_BOOTMEM=y +CONFIG_NO_HZ=y +CONFIG_NO_HZ_COMMON=y +# CONFIG_NO_HZ_FULL is not set +CONFIG_NO_HZ_IDLE=y +CONFIG_NR_CPUS=4 +# CONFIG_NTFS_DEBUG is not set +CONFIG_NTFS_FS=m +# CONFIG_NTFS_RW is not set +CONFIG_NVRAM=m +CONFIG_N_GSM=m +CONFIG_N_HDLC=m +# CONFIG_OABI_COMPAT is not set +# 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_OF=y +CONFIG_OF_ADDRESS=y +CONFIG_OF_DYNAMIC=y +CONFIG_OF_EARLY_FLATTREE=y +CONFIG_OF_FLATTREE=y +CONFIG_OF_GPIO=y +CONFIG_OF_IRQ=y +CONFIG_OF_MDIO=y +CONFIG_OF_MTD=y +CONFIG_OF_NET=y +CONFIG_OF_OVERLAY=y +# CONFIG_OF_RECONFIG_NOTIFIER_ERROR_INJECT is not set +CONFIG_OF_RESERVED_MEM=y +CONFIG_OF_RESOLVE=y +CONFIG_OF_TOUCHSCREEN=y +# CONFIG_OF_UNITTEST is not set +CONFIG_OID_REGISTRY=y +CONFIG_OLD_BELKIN_DONGLE=m +CONFIG_OLD_MCOUNT=y +CONFIG_OLD_SIGACTION=y +CONFIG_OLD_SIGSUSPEND3=y +CONFIG_OMFS_FS=m +CONFIG_OPENVSWITCH=m +CONFIG_OPENVSWITCH_GENEVE=m +CONFIG_OPENVSWITCH_GRE=m +CONFIG_OPENVSWITCH_VXLAN=m +CONFIG_OPROFILE=m +CONFIG_OPTPROBES=y +CONFIG_ORE=m +CONFIG_OSF_PARTITION=y +CONFIG_OVERLAY_FS=m +CONFIG_OVERLAY_FS_V1=y +CONFIG_P54_COMMON=m +CONFIG_P54_LEDS=y +CONFIG_P54_SPI=m +# CONFIG_P54_SPI_DEFAULT_EEPROM is not set +CONFIG_P54_USB=m +CONFIG_PACKET=y +CONFIG_PACKET_DIAG=m +CONFIG_PADATA=y +CONFIG_PAGEFLAGS_EXTENDED=y +CONFIG_PAGE_COUNTER=y +# CONFIG_PAGE_EXTENSION is not set +CONFIG_PAGE_OFFSET=0x80000000 +# CONFIG_PAGE_OWNER is not set +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_PANIC_TIMEOUT=0 +CONFIG_PANTHERLORD_FF=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_PARPORT=m +CONFIG_PARPORT_1284=y +CONFIG_PARPORT_AX88796=m +# CONFIG_PARPORT_GSC is not set +CONFIG_PARPORT_NOT_PC=y +CONFIG_PARPORT_PC=m +CONFIG_PARPORT_PC_FIFO=y +# CONFIG_PARPORT_PC_SUPERIO is not set +CONFIG_PARTITION_ADVANCED=y +CONFIG_PATA_OF_PLATFORM=m +CONFIG_PATA_PLATFORM=m +# CONFIG_PCCARD is not set +CONFIG_PCF50633_ADC=m +CONFIG_PCF50633_GPIO=m +# CONFIG_PCI_DOMAINS_GENERIC is not set +# CONFIG_PCI_SYSCALL is not set +CONFIG_PDA_POWER=m +CONFIG_PERCPU_RWSEM=y +CONFIG_PERCPU_TEST=m +CONFIG_PERF_EVENTS=y +CONFIG_PERF_USE_VMALLOC=y +CONFIG_PERSISTENT_KEYRINGS=y +CONFIG_PGTABLE_LEVELS=2 +CONFIG_PGTABLE_MAPPING=y +CONFIG_PHONET=m +CONFIG_PHYLIB=y +# CONFIG_PHYS_ADDR_T_64BIT is not set +# CONFIG_PHY_EXYNOS4210_USB2 is not set +# CONFIG_PHY_EXYNOS4X12_USB2 is not set +# CONFIG_PHY_EXYNOS5250_USB2 is not set +CONFIG_PHY_PXA_28NM_HSIC=m +CONFIG_PHY_PXA_28NM_USB2=m +CONFIG_PHY_SAMSUNG_USB2=m +CONFIG_PHY_TUSB1210=m +# CONFIG_PID_IN_CONTEXTIDR is not set +CONFIG_PID_NS=y +CONFIG_PINCONF=y +CONFIG_PINCTRL=y +CONFIG_PINCTRL_AMD=y +CONFIG_PINCTRL_AS3722=y +CONFIG_PINCTRL_BCM2835=y +CONFIG_PINCTRL_PALMAS=y +CONFIG_PINCTRL_SINGLE=m +CONFIG_PINMUX=y +CONFIG_PKCS7_MESSAGE_PARSER=m +CONFIG_PKCS7_TEST_KEY=m +CONFIG_PL320_MBOX=y +CONFIG_PL330_DMA=m +CONFIG_PLATFORM_SI4713=m +# CONFIG_PLAT_VERSATILE_CLCD is not set +CONFIG_PLIP=m +CONFIG_PM=y +CONFIG_PMBUS=m +CONFIG_PMIC_ADP5520=y +CONFIG_PMIC_DA903X=y +CONFIG_PMIC_DA9052=y +CONFIG_PM_ADVANCED_DEBUG=y +# CONFIG_PM_AUTOSLEEP is not set +CONFIG_PM_CLK=y +CONFIG_PM_DEBUG=y +CONFIG_PM_DEVFREQ=y +CONFIG_PM_DEVFREQ_EVENT=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_STD_PARTITION="" +# CONFIG_PM_TEST_SUSPEND is not set +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_PNFS_OBJLAYOUT=m +CONFIG_POSIX_MQUEUE=y +CONFIG_POSIX_MQUEUE_SYSCTL=y +CONFIG_POWERCAP=y +CONFIG_POWER_AVS=y +CONFIG_POWER_RESET=y +CONFIG_POWER_RESET_AS3722=y +# CONFIG_POWER_RESET_BRCMSTB is not set +CONFIG_POWER_RESET_GPIO=y +CONFIG_POWER_RESET_GPIO_RESTART=y +CONFIG_POWER_RESET_LTC2952=y +CONFIG_POWER_RESET_RESTART=y +CONFIG_POWER_RESET_SYSCON=y +CONFIG_POWER_RESET_SYSCON_POWEROFF=y +CONFIG_POWER_RESET_VERSATILE=y +CONFIG_POWER_SUPPLY=y +# CONFIG_POWER_SUPPLY_DEBUG is not set +CONFIG_PPDEV=m +CONFIG_PPP=y +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=y +CONFIG_PPS_CLIENT_GPIO=m +# CONFIG_PPS_CLIENT_KTIMER is not set +CONFIG_PPS_CLIENT_LDISC=m +CONFIG_PPS_CLIENT_PARPORT=m +# CONFIG_PPS_DEBUG is not set +CONFIG_PPTP=m +# CONFIG_PREEMPT is not set +# CONFIG_PREEMPT_NONE is not set +CONFIG_PREEMPT_VOLUNTARY=y +CONFIG_PREVENT_FIRMWARE_BUILD=y +CONFIG_PRINTER=m +CONFIG_PRINTK=y +CONFIG_PRINTK_TIME=y +# CONFIG_PRINT_QUOTA_WARNING is not set +CONFIG_PRISM2_USB=m +CONFIG_PROBE_EVENTS=y +CONFIG_PROC_CHILDREN=y +CONFIG_PROC_EVENTS=y +CONFIG_PROC_FS=y +CONFIG_PROC_PAGE_MONITOR=y +CONFIG_PROC_PID_CPUSET=y +CONFIG_PROC_SYSCTL=y +CONFIG_PROC_VMCORE=y +# CONFIG_PROFILE_ALL_BRANCHES is not set +# CONFIG_PROFILE_ANNOTATED_BRANCHES is not set +CONFIG_PROFILING=y +# CONFIG_PROVE_LOCKING is not set +# CONFIG_PROVE_RCU is not set +CONFIG_PSTORE=y +CONFIG_PSTORE_CONSOLE=y +# CONFIG_PSTORE_FTRACE is not set +# CONFIG_PSTORE_PMSG is not set +CONFIG_PSTORE_RAM=y +CONFIG_PTP_1588_CLOCK=y +CONFIG_PUBLIC_KEY_ALGO_RSA=y +CONFIG_PWM=y +CONFIG_PWM_ATMEL_HLCDC_PWM=m +CONFIG_PWM_BCM2835=m +CONFIG_PWM_FSL_FTM=m +CONFIG_PWM_LP3943=m +CONFIG_PWM_PCA9685=m +CONFIG_PWM_SYSFS=y +CONFIG_PWM_TWL=m +CONFIG_PWM_TWL_LED=m +CONFIG_QCA7000=m +CONFIG_QCOM_SPMI_IADC=m +CONFIG_QCOM_SPMI_TEMP_ALARM=m +CONFIG_QCOM_SPMI_VADC=m +CONFIG_QFMT_V1=m +CONFIG_QFMT_V2=m +CONFIG_QNX4FS_FS=m +# CONFIG_QNX6FS_DEBUG is not set +CONFIG_QNX6FS_FS=m +CONFIG_QORIQ_CPUFREQ=m +CONFIG_QSEMI_PHY=m +CONFIG_QUOTA=y +CONFIG_QUOTACTL=y +# CONFIG_QUOTA_DEBUG is not set +CONFIG_QUOTA_NETLINK_INTERFACE=y +CONFIG_QUOTA_TREE=m +CONFIG_R3964=m +CONFIG_R8188EU=m +CONFIG_R8712U=m +CONFIG_R8723AU=m +CONFIG_RADIO_ADAPTERS=y +CONFIG_RADIO_SAA7706H=m +CONFIG_RADIO_SHARK=m +CONFIG_RADIO_SHARK2=m +CONFIG_RADIO_SI470X=y +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_RAID_ATTRS=m +# CONFIG_RANDOM32_SELFTEST is not set +CONFIG_RAS=y +CONFIG_RASPBERRYPI_FIRMWARE=y +CONFIG_RATIONAL=y +CONFIG_RAW_DRIVER=m +CONFIG_RBTREE_TEST=m +# CONFIG_RCU_CPU_STALL_INFO is not set +CONFIG_RCU_CPU_STALL_TIMEOUT=60 +# CONFIG_RCU_EQS_DEBUG is not set +# CONFIG_RCU_EXPEDITE_BOOT is not set +# CONFIG_RCU_EXPERT is not set +# CONFIG_RCU_NOCB_CPU is not set +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_CORE=m +CONFIG_RC_DECODERS=y +CONFIG_RC_DEVICES=y +CONFIG_RC_LOOPBACK=m +CONFIG_RC_MAP=m +CONFIG_RDS=m +# CONFIG_RDS_DEBUG is not set +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_REALTEK_AUTOPM=y +CONFIG_REALTEK_PHY=m +CONFIG_REED_SOLOMON=y +CONFIG_REED_SOLOMON_DEC16=y +CONFIG_REED_SOLOMON_DEC8=y +CONFIG_REED_SOLOMON_ENC8=y +CONFIG_REGMAP=y +CONFIG_REGMAP_I2C=y +CONFIG_REGMAP_IRQ=y +CONFIG_REGMAP_MMIO=y +CONFIG_REGMAP_SPI=y +CONFIG_REGMAP_SPMI=m +CONFIG_REGULATOR=y +CONFIG_REGULATOR_88PM800=m +CONFIG_REGULATOR_88PM8607=m +CONFIG_REGULATOR_AAT2870=m +CONFIG_REGULATOR_AB3100=m +CONFIG_REGULATOR_ACT8865=m +CONFIG_REGULATOR_AD5398=m +CONFIG_REGULATOR_ANATOP=m +CONFIG_REGULATOR_ARIZONA=m +CONFIG_REGULATOR_AS3711=m +CONFIG_REGULATOR_AS3722=m +CONFIG_REGULATOR_AXP20X=m +CONFIG_REGULATOR_BCM590XX=m +CONFIG_REGULATOR_DA903X=m +CONFIG_REGULATOR_DA9052=m +CONFIG_REGULATOR_DA9055=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_FIXED_VOLTAGE=y +CONFIG_REGULATOR_GPIO=m +CONFIG_REGULATOR_HI6421=m +CONFIG_REGULATOR_ISL6271A=m +CONFIG_REGULATOR_ISL9305=m +CONFIG_REGULATOR_LP3971=m +CONFIG_REGULATOR_LP3972=m +CONFIG_REGULATOR_LP872X=m +CONFIG_REGULATOR_LP8755=m +CONFIG_REGULATOR_LP8788=m +CONFIG_REGULATOR_LTC3589=m +CONFIG_REGULATOR_MAX14577=m +CONFIG_REGULATOR_MAX1586=m +CONFIG_REGULATOR_MAX77686=m +CONFIG_REGULATOR_MAX77693=m +CONFIG_REGULATOR_MAX77802=m +CONFIG_REGULATOR_MAX77843=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_MT6397=m +CONFIG_REGULATOR_PALMAS=m +CONFIG_REGULATOR_PCAP=m +CONFIG_REGULATOR_PCF50633=m +CONFIG_REGULATOR_PFUZE100=m +CONFIG_REGULATOR_PWM=m +CONFIG_REGULATOR_QCOM_SPMI=m +CONFIG_REGULATOR_RC5T583=m +CONFIG_REGULATOR_RK808=m +CONFIG_REGULATOR_RN5T618=m +CONFIG_REGULATOR_RT5033=m +CONFIG_REGULATOR_S2MPA01=m +CONFIG_REGULATOR_S2MPS11=m +CONFIG_REGULATOR_S5M8767=m +CONFIG_REGULATOR_SKY81452=m +CONFIG_REGULATOR_TPS51632=m +CONFIG_REGULATOR_TPS6105X=m +CONFIG_REGULATOR_TPS62360=m +CONFIG_REGULATOR_TPS65023=m +CONFIG_REGULATOR_TPS6507X=m +CONFIG_REGULATOR_TPS65090=m +CONFIG_REGULATOR_TPS65217=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_TWL4030=y +CONFIG_REGULATOR_USERSPACE_CONSUMER=m +CONFIG_REGULATOR_VIRTUAL_CONSUMER=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=m +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_RESET_CONTROLLER=y +CONFIG_RETU_WATCHDOG=m +CONFIG_RFD_FTL=m +CONFIG_RFKILL=y +CONFIG_RFKILL_GPIO=m +CONFIG_RFKILL_INPUT=y +CONFIG_RFKILL_LEDS=y +CONFIG_RFKILL_REGULATOR=m +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_RN5T618_WATCHDOG=m +CONFIG_ROMFS_BACKED_BY_BLOCK=y +# CONFIG_ROMFS_BACKED_BY_BOTH is not set +# CONFIG_ROMFS_BACKED_BY_MTD is not set +CONFIG_ROMFS_FS=m +CONFIG_ROMFS_ON_BLOCK=y +CONFIG_ROSE=m +CONFIG_RPCSEC_GSS_KRB5=m +CONFIG_RPS=y +CONFIG_RSI_91X=m +# CONFIG_RSI_DEBUGFS is not set +CONFIG_RSI_SDIO=m +CONFIG_RSI_USB=m +CONFIG_RT2500USB=m +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_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_USB=m +CONFIG_RT73USB=m +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_ABX80X=m +CONFIG_RTC_DRV_AS3722=m +CONFIG_RTC_DRV_BQ32K=m +CONFIG_RTC_DRV_BQ4802=m +CONFIG_RTC_DRV_CMOS=m +CONFIG_RTC_DRV_DA9052=m +CONFIG_RTC_DRV_DA9055=m +CONFIG_RTC_DRV_DA9063=m +CONFIG_RTC_DRV_DS1286=m +CONFIG_RTC_DRV_DS1305=m +CONFIG_RTC_DRV_DS1307=m +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_DS3234=m +CONFIG_RTC_DRV_EM3027=m +CONFIG_RTC_DRV_FM3130=m +CONFIG_RTC_DRV_HID_SENSOR_TIME=m +CONFIG_RTC_DRV_HYM8563=m +CONFIG_RTC_DRV_ISL12022=m +CONFIG_RTC_DRV_ISL12057=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_MAX77686=m +CONFIG_RTC_DRV_MAX77802=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_MSM6242=m +CONFIG_RTC_DRV_MT6397=m +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_PCF8523=y +CONFIG_RTC_DRV_PCF8563=m +CONFIG_RTC_DRV_PCF8583=m +CONFIG_RTC_DRV_PL030=m +CONFIG_RTC_DRV_PL031=y +CONFIG_RTC_DRV_PM8XXX=m +CONFIG_RTC_DRV_R9701=m +CONFIG_RTC_DRV_RC5T583=m +CONFIG_RTC_DRV_RK808=m +CONFIG_RTC_DRV_RP5C01=m +CONFIG_RTC_DRV_RS5C348=m +CONFIG_RTC_DRV_RS5C372=m +CONFIG_RTC_DRV_RV3029C2=m +CONFIG_RTC_DRV_RX4581=m +CONFIG_RTC_DRV_RX8025=m +CONFIG_RTC_DRV_RX8581=m +CONFIG_RTC_DRV_S35390A=m +CONFIG_RTC_DRV_S5M=m +CONFIG_RTC_DRV_SNVS=m +CONFIG_RTC_DRV_STK17TA8=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_TWL4030=y +CONFIG_RTC_DRV_V3020=m +CONFIG_RTC_DRV_WM831X=m +CONFIG_RTC_DRV_WM8350=m +CONFIG_RTC_DRV_X1205=m +# CONFIG_RTC_DS1685_PROC_REGS is not set +# CONFIG_RTC_DS1685_SYSFS_REGS is not set +CONFIG_RTC_HCTOSYS=y +CONFIG_RTC_HCTOSYS_DEVICE="rtc0" +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_SYSTOHC=y +CONFIG_RTC_SYSTOHC_DEVICE="rtc0" +CONFIG_RTL8187=m +CONFIG_RTL8187_LEDS=y +CONFIG_RTL8192CU=m +CONFIG_RTLLIB=m +CONFIG_RTLLIB_CRYPTO_CCMP=m +CONFIG_RTLLIB_CRYPTO_TKIP=m +CONFIG_RTLLIB_CRYPTO_WEP=m +# CONFIG_RT_GROUP_SCHED is not set +CONFIG_RT_MUTEXES=y +CONFIG_RWSEM_SPIN_ON_OWNER=y +CONFIG_RWSEM_XCHGADD_ALGORITHM=y +CONFIG_RXKAD=m +# CONFIG_SAMPLES is not set +CONFIG_SATA_AHCI_PLATFORM=y +CONFIG_SATA_PMP=y +CONFIG_SCA3000=m +CONFIG_SCHEDSTATS=y +CONFIG_SCHED_AUTOGROUP=y +CONFIG_SCHED_DEBUG=y +CONFIG_SCHED_HRTICK=y +CONFIG_SCHED_INFO=y +CONFIG_SCHED_MC=y +# CONFIG_SCHED_SMT is not set +CONFIG_SCHED_STACK_END_CHECK=y +CONFIG_SCHED_TRACER=y +CONFIG_SCSI=y +CONFIG_SCSI_CONSTANTS=y +CONFIG_SCSI_DEBUG=m +CONFIG_SCSI_DH=m +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_ENCLOSURE=m +CONFIG_SCSI_FC_ATTRS=m +CONFIG_SCSI_IMM=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_MOD=y +# CONFIG_SCSI_MQ_DEFAULT is not set +CONFIG_SCSI_NETLINK=y +# CONFIG_SCSI_OSD_DEBUG is not set +CONFIG_SCSI_OSD_DPRINT_SENSE=1 +CONFIG_SCSI_OSD_INITIATOR=m +CONFIG_SCSI_OSD_ULD=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_SPI_ATTRS=m +CONFIG_SCSI_SRP_ATTRS=m +CONFIG_SCSI_UFSHCD=m +CONFIG_SCSI_UFSHCD_PLATFORM=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_SDIO_UART=m +CONFIG_SECCOMP=y +CONFIG_SECCOMP_FILTER=y +CONFIG_SECURITY=y +CONFIG_SECURITYFS=y +CONFIG_SECURITY_APPARMOR=y +CONFIG_SECURITY_APPARMOR_BOOTPARAM_VALUE=1 +CONFIG_SECURITY_APPARMOR_HASH=y +CONFIG_SECURITY_APPARMOR_HASH_DEFAULT=y +# CONFIG_SECURITY_APPARMOR_STATS is not set +CONFIG_SECURITY_APPARMOR_UNCONFINED_INIT=y +# CONFIG_SECURITY_DMESG_RESTRICT is not set +CONFIG_SECURITY_NETWORK=y +CONFIG_SECURITY_NETWORK_XFRM=y +CONFIG_SECURITY_PATH=y +CONFIG_SECURITY_SELINUX=y +CONFIG_SECURITY_SELINUX_AVC_STATS=y +CONFIG_SECURITY_SELINUX_BOOTPARAM=y +CONFIG_SECURITY_SELINUX_BOOTPARAM_VALUE=0 +CONFIG_SECURITY_SELINUX_CHECKREQPROT_VALUE=1 +CONFIG_SECURITY_SELINUX_DEVELOP=y +CONFIG_SECURITY_SELINUX_DISABLE=y +# CONFIG_SECURITY_SELINUX_POLICYDB_VERSION_MAX is not set +CONFIG_SECURITY_SMACK=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_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_SECURITY_YAMA_STACKED=y +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_ADM1275=m +CONFIG_SENSORS_ADM9240=m +CONFIG_SENSORS_ADS1015=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_APDS990X=m +CONFIG_SENSORS_ASC7621=m +CONFIG_SENSORS_ATXP1=m +CONFIG_SENSORS_BH1770=m +CONFIG_SENSORS_BH1780=m +CONFIG_SENSORS_DA9052_ADC=m +CONFIG_SENSORS_DA9055=m +CONFIG_SENSORS_DME1737=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_G760A=m +CONFIG_SENSORS_G762=m +CONFIG_SENSORS_GL518SM=m +CONFIG_SENSORS_GL520SM=m +CONFIG_SENSORS_GPIO_FAN=m +CONFIG_SENSORS_HIH6130=m +CONFIG_SENSORS_HMC5843=m +CONFIG_SENSORS_HMC5843_I2C=m +CONFIG_SENSORS_HMC5843_SPI=m +CONFIG_SENSORS_HTU21=m +CONFIG_SENSORS_IBMAEM=m +CONFIG_SENSORS_IBMPEX=m +CONFIG_SENSORS_IIO_HWMON=m +CONFIG_SENSORS_INA209=m +CONFIG_SENSORS_INA2XX=m +CONFIG_SENSORS_ISL29018=m +CONFIG_SENSORS_ISL29028=m +CONFIG_SENSORS_IT87=m +CONFIG_SENSORS_JC42=m +CONFIG_SENSORS_LINEAGE=m +CONFIG_SENSORS_LIS3LV02D=m +CONFIG_SENSORS_LIS3_I2C=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_LTC2945=m +CONFIG_SENSORS_LTC2978=m +CONFIG_SENSORS_LTC2978_REGULATOR=y +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_MAX1668=m +CONFIG_SENSORS_MAX197=m +CONFIG_SENSORS_MAX34440=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_NCT6683=m +CONFIG_SENSORS_NCT6775=m +CONFIG_SENSORS_NCT7802=m +CONFIG_SENSORS_NCT7904=m +CONFIG_SENSORS_NTC_THERMISTOR=m +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_SCH5627=m +CONFIG_SENSORS_SCH5636=m +CONFIG_SENSORS_SCH56XX_COMMON=m +CONFIG_SENSORS_SHT15=m +CONFIG_SENSORS_SHT21=m +CONFIG_SENSORS_SHTC1=m +CONFIG_SENSORS_SMM665=m +CONFIG_SENSORS_SMSC47B397=m +CONFIG_SENSORS_SMSC47M1=m +CONFIG_SENSORS_SMSC47M192=m +CONFIG_SENSORS_TC74=m +CONFIG_SENSORS_THMC50=m +CONFIG_SENSORS_TMP102=m +CONFIG_SENSORS_TMP103=m +CONFIG_SENSORS_TMP401=m +CONFIG_SENSORS_TMP421=m +CONFIG_SENSORS_TPS40422=m +CONFIG_SENSORS_TSL2550=m +CONFIG_SENSORS_TSL2563=m +CONFIG_SENSORS_TWL4030_MADC=m +CONFIG_SENSORS_UCD9000=m +CONFIG_SENSORS_UCD9200=m +CONFIG_SENSORS_VT1211=m +CONFIG_SENSORS_W83627EHF=m +CONFIG_SENSORS_W83627HF=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_ZL6100=m +CONFIG_SERIAL_8250=y +CONFIG_SERIAL_8250_CONSOLE=y +# CONFIG_SERIAL_8250_DEPRECATED_OPTIONS is not set +# CONFIG_SERIAL_8250_DETECT_IRQ is not set +CONFIG_SERIAL_8250_DMA=y +CONFIG_SERIAL_8250_DW=m +# CONFIG_SERIAL_8250_EM is not set +CONFIG_SERIAL_8250_EXTENDED=y +CONFIG_SERIAL_8250_INGENIC=y +CONFIG_SERIAL_8250_MANY_PORTS=y +CONFIG_SERIAL_8250_NR_UARTS=48 +CONFIG_SERIAL_8250_RSA=y +CONFIG_SERIAL_8250_RUNTIME_UARTS=32 +CONFIG_SERIAL_8250_SHARE_IRQ=y +CONFIG_SERIAL_ALTERA_JTAGUART=m +CONFIG_SERIAL_ALTERA_UART=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=m +CONFIG_SERIAL_ARC_NR_PORTS=1 +CONFIG_SERIAL_BCM63XX=m +CONFIG_SERIAL_CONEXANT_DIGICOLOR=m +CONFIG_SERIAL_CORE=y +CONFIG_SERIAL_CORE_CONSOLE=y +CONFIG_SERIAL_EARLYCON=y +CONFIG_SERIAL_EARLYCON_ARM_SEMIHOST=y +CONFIG_SERIAL_FSL_LPUART=m +# CONFIG_SERIAL_IFX6X60 is not set +CONFIG_SERIAL_IPOCTAL=m +CONFIG_SERIAL_KGDB_NMI=y +CONFIG_SERIAL_MAX3100=m +CONFIG_SERIAL_MAX310X=y +CONFIG_SERIAL_MEN_Z135=m +CONFIG_SERIAL_NONSTANDARD=y +CONFIG_SERIAL_OF_PLATFORM=y +CONFIG_SERIAL_SC16IS7XX=m +CONFIG_SERIAL_SC16IS7XX_CORE=m +CONFIG_SERIAL_SC16IS7XX_I2C=y +CONFIG_SERIAL_SC16IS7XX_SPI=y +CONFIG_SERIAL_SCCNXP=y +CONFIG_SERIAL_SCCNXP_CONSOLE=y +CONFIG_SERIAL_STM32=m +CONFIG_SERIAL_ST_ASC=m +CONFIG_SERIAL_XILINX_PS_UART=m +CONFIG_SERIO=y +CONFIG_SERIO_ALTERA_PS2=m +CONFIG_SERIO_AMBAKMI=m +CONFIG_SERIO_APBPS2=m +CONFIG_SERIO_ARC_PS2=m +CONFIG_SERIO_LIBPS2=y +CONFIG_SERIO_PARKBD=m +CONFIG_SERIO_PS2MULT=m +CONFIG_SERIO_RAW=m +CONFIG_SERIO_SERPORT=m +CONFIG_SGETMASK_SYSCALL=y +CONFIG_SGI_PARTITION=y +CONFIG_SHMEM=y +# CONFIG_SH_TIMER_CMT is not set +# CONFIG_SH_TIMER_MTU2 is not set +# CONFIG_SH_TIMER_TMU is not set +CONFIG_SI7005=m +CONFIG_SI7020=m +CONFIG_SIGMATEL_FIR=m +CONFIG_SIGNALFD=y +CONFIG_SIGNATURE=y +# CONFIG_SLAB is not set +CONFIG_SLABINFO=y +CONFIG_SLHC=y +CONFIG_SLIP=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_STATS is not set +CONFIG_SMARTJOYPLUS_FF=y +CONFIG_SMC911X=m +CONFIG_SMC91X=m +CONFIG_SMP=y +CONFIG_SMP_ON_UP=y +CONFIG_SMSC911X=m +# CONFIG_SMSC911X_ARCH_HOOKS is not set +CONFIG_SMSC_PHY=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_SND=y +CONFIG_SND_AC97_CODEC=m +CONFIG_SND_AC97_POWER_SAVE=y +CONFIG_SND_AC97_POWER_SAVE_DEFAULT=0 +CONFIG_SND_ALOOP=m +CONFIG_SND_ARM=y +CONFIG_SND_ARMAACI=m +CONFIG_SND_ATMEL_SOC=m +CONFIG_SND_BCD2000=m +CONFIG_SND_BCM2708_SOC_HIFIBERRY_AMP=m +CONFIG_SND_BCM2708_SOC_HIFIBERRY_DAC=m +CONFIG_SND_BCM2708_SOC_HIFIBERRY_DACPLUS=m +CONFIG_SND_BCM2708_SOC_HIFIBERRY_DIGI=m +CONFIG_SND_BCM2708_SOC_I2S=m +CONFIG_SND_BCM2708_SOC_IQAUDIO_DAC=m +CONFIG_SND_BCM2708_SOC_RASPIDAC3=m +CONFIG_SND_BCM2708_SOC_RPI_DAC=m +CONFIG_SND_BCM2708_SOC_RPI_PROTO=m +CONFIG_SND_BCM2835=m +CONFIG_SND_COMPRESS_OFFLOAD=y +# CONFIG_SND_DEBUG is not set +CONFIG_SND_DESIGNWARE_I2S=m +CONFIG_SND_DMAENGINE_PCM=y +CONFIG_SND_DRIVERS=y +CONFIG_SND_DUMMY=m +CONFIG_SND_DYNAMIC_MINORS=y +# CONFIG_SND_EMU10K1_SEQ is not set +CONFIG_SND_HDA_PREALLOC_SIZE=64 +CONFIG_SND_HRTIMER=m +CONFIG_SND_HWDEP=m +CONFIG_SND_JACK=y +CONFIG_SND_MAX_CARDS=32 +CONFIG_SND_MIXER_OSS=m +CONFIG_SND_MPU401=m +CONFIG_SND_MPU401_UART=m +CONFIG_SND_MTPAV=m +CONFIG_SND_MTS64=m +# CONFIG_SND_OPL3_LIB_SEQ is not set +# CONFIG_SND_OPL4_LIB_SEQ is not set +CONFIG_SND_OSSEMUL=y +CONFIG_SND_PCM=y +# CONFIG_SND_PCM_OSS is not set +CONFIG_SND_PORTMAN2X4=m +CONFIG_SND_PROC_FS=y +CONFIG_SND_RAWMIDI=m +CONFIG_SND_RAWMIDI_SEQ=m +# CONFIG_SND_SBAWE_SEQ is not set +CONFIG_SND_SEQUENCER=m +# CONFIG_SND_SEQUENCER_OSS is not set +CONFIG_SND_SEQ_DUMMY=m +CONFIG_SND_SEQ_HRTIMER_DEFAULT=y +CONFIG_SND_SERIAL_U16550=m +CONFIG_SND_SIMPLE_CARD=m +CONFIG_SND_SOC=y +CONFIG_SND_SOC_AC97_BUS=y +CONFIG_SND_SOC_AC97_CODEC=m +CONFIG_SND_SOC_ADAU1701=m +CONFIG_SND_SOC_AK4104=m +CONFIG_SND_SOC_AK4554=m +CONFIG_SND_SOC_AK4642=m +CONFIG_SND_SOC_AK5386=m +CONFIG_SND_SOC_ALC5623=m +CONFIG_SND_SOC_CS35L32=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_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_ES8328=m +CONFIG_SND_SOC_FSL_ASRC=m +CONFIG_SND_SOC_FSL_ESAI=m +CONFIG_SND_SOC_FSL_SAI=m +CONFIG_SND_SOC_FSL_SPDIF=m +CONFIG_SND_SOC_FSL_SSI=y +CONFIG_SND_SOC_GENERIC_DMAENGINE_PCM=y +CONFIG_SND_SOC_HDMI_CODEC=y +CONFIG_SND_SOC_I2C_AND_SPI=y +CONFIG_SND_SOC_IMX_AUDMUX=y +CONFIG_SND_SOC_PCM1681=m +CONFIG_SND_SOC_PCM1792A=m +CONFIG_SND_SOC_PCM1794A=m +CONFIG_SND_SOC_PCM5102A=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_RT5631=m +# CONFIG_SND_SOC_RT5677_SPI is not set +CONFIG_SND_SOC_SGTL5000=y +CONFIG_SND_SOC_SI476X=m +CONFIG_SND_SOC_SIGMADSP=m +CONFIG_SND_SOC_SIGMADSP_I2C=m +CONFIG_SND_SOC_SIRF_AUDIO_CODEC=m +CONFIG_SND_SOC_SPDIF=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_TAS2552=m +CONFIG_SND_SOC_TAS5086=m +CONFIG_SND_SOC_TAS5713=m +CONFIG_SND_SOC_TAS571X=m +CONFIG_SND_SOC_TFA9879=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_TLV320AIC3X=m +CONFIG_SND_SOC_TPA6130A2=m +CONFIG_SND_SOC_TS3A227E=m +CONFIG_SND_SOC_WM8510=m +CONFIG_SND_SOC_WM8523=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_WM8804=m +CONFIG_SND_SOC_WM8804_I2C=m +CONFIG_SND_SOC_WM8804_SPI=m +CONFIG_SND_SOC_WM8903=m +CONFIG_SND_SOC_WM8962=m +CONFIG_SND_SOC_WM8978=m +CONFIG_SND_SOC_XTFPGA_I2S=m +CONFIG_SND_SPI=y +CONFIG_SND_SUPPORT_OLD_API=y +CONFIG_SND_TIMER=y +CONFIG_SND_USB=y +CONFIG_SND_USB_6FIRE=m +CONFIG_SND_USB_AUDIO=m +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_VARIAX=m +# CONFIG_SND_VERBOSE_PRINTK is not set +CONFIG_SND_VERBOSE_PROCFS=y +CONFIG_SND_VIRMIDI=m +CONFIG_SND_VMASTER=y +CONFIG_SOC_CAMERA=m +CONFIG_SOC_CAMERA_IMX074=m +CONFIG_SOC_CAMERA_MT9M001=m +CONFIG_SOC_CAMERA_MT9M111=m +CONFIG_SOC_CAMERA_MT9T031=m +CONFIG_SOC_CAMERA_MT9T112=m +CONFIG_SOC_CAMERA_MT9V022=m +CONFIG_SOC_CAMERA_OV2640=m +CONFIG_SOC_CAMERA_OV5642=m +CONFIG_SOC_CAMERA_OV6650=m +CONFIG_SOC_CAMERA_OV772X=m +CONFIG_SOC_CAMERA_OV9640=m +CONFIG_SOC_CAMERA_OV9740=m +CONFIG_SOC_CAMERA_PLATFORM=m +CONFIG_SOC_CAMERA_RJ54N1=m +CONFIG_SOC_CAMERA_TW9910=m +# CONFIG_SOC_TI is not set +CONFIG_SOFT_WATCHDOG=m +CONFIG_SOLARIS_X86_PARTITION=y +CONFIG_SONY_FF=y +CONFIG_SOUND=y +CONFIG_SOUND_OSS_CORE=y +# CONFIG_SOUND_OSS_CORE_PRECLAIM is not set +# CONFIG_SOUND_PRIME is not set +# CONFIG_SPARSE_RCU_POINTER is not set +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=y +CONFIG_SPI_ALTERA=m +CONFIG_SPI_BCM2708=m +CONFIG_SPI_BCM2835=m +CONFIG_SPI_BITBANG=m +CONFIG_SPI_BUTTERFLY=m +CONFIG_SPI_CADENCE=m +# CONFIG_SPI_DEBUG is not set +CONFIG_SPI_DESIGNWARE=m +CONFIG_SPI_DLN2=m +CONFIG_SPI_DW_MMIO=m +CONFIG_SPI_FSL_LIB=y +CONFIG_SPI_FSL_SPI=y +CONFIG_SPI_GPIO=m +CONFIG_SPI_LM70_LLP=m +CONFIG_SPI_MASTER=y +CONFIG_SPI_OC_TINY=m +CONFIG_SPI_PL022=m +# CONFIG_SPI_PXA2XX_PCI is not set +CONFIG_SPI_ROCKCHIP=m +CONFIG_SPI_SC18IS602=m +CONFIG_SPI_SPIDEV=y +CONFIG_SPI_TLE62X0=m +CONFIG_SPI_XCOMM=m +# CONFIG_SPI_XILINX is not set +CONFIG_SPI_ZYNQMP_GQSPI=m +CONFIG_SPLIT_PTLOCK_CPUS=4 +CONFIG_SPMI=m +CONFIG_SQUASHFS=m +# CONFIG_SQUASHFS_4K_DEVBLK_SIZE is not set +# CONFIG_SQUASHFS_DECOMP_MULTI is not set +CONFIG_SQUASHFS_DECOMP_MULTI_PERCPU=y +# CONFIG_SQUASHFS_DECOMP_SINGLE is not set +# 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 is not set +CONFIG_SQUASHFS_LZO=y +CONFIG_SQUASHFS_XATTR=y +CONFIG_SQUASHFS_XZ=y +CONFIG_SQUASHFS_ZLIB=y +CONFIG_SRAM=y +CONFIG_SRCU=y +CONFIG_SSB=m +CONFIG_SSB_BLOCKIO=y +# CONFIG_SSB_DEBUG is not set +CONFIG_SSB_DRIVER_GPIO=y +CONFIG_SSB_POSSIBLE=y +CONFIG_SSB_SDIOHOST=y +CONFIG_SSB_SDIOHOST_POSSIBLE=y +# CONFIG_SSB_SILENT is not set +CONFIG_SSFDC=m +CONFIG_STACKTRACE=y +CONFIG_STACKTRACE_SUPPORT=y +CONFIG_STACK_TRACER=y +CONFIG_STAGING=y +# CONFIG_STAGING_BOARD is not set +CONFIG_STAGING_MEDIA=y +CONFIG_STANDALONE=y +CONFIG_STE10XP=m +# CONFIG_STE_MODEM_RPROC is not set +CONFIG_STK3310=m +CONFIG_STK8312=m +CONFIG_STK8BA50=m +CONFIG_STMMAC_ETH=m +CONFIG_STMMAC_PLATFORM=m +CONFIG_STMPE_I2C=y +CONFIG_STMPE_SPI=y +CONFIG_STOP_MACHINE=y +CONFIG_STP=m +CONFIG_STRICT_DEVMEM=y +# CONFIG_STRIP_ASM_SYMS is not set +CONFIG_SUNRPC=m +CONFIG_SUNRPC_BACKCHANNEL=y +CONFIG_SUNRPC_DEBUG=y +CONFIG_SUNRPC_GSS=m +CONFIG_SUNRPC_SWAP=y +# CONFIG_SUNXI_SRAM is not set +CONFIG_SUN_PARTITION=y +CONFIG_SUSPEND=y +CONFIG_SUSPEND_FREEZER=y +CONFIG_SWAP=y +CONFIG_SWIOTLB=y +CONFIG_SWP_EMULATE=y +CONFIG_SX9500=m +CONFIG_SXGBE_ETH=m +CONFIG_SYN_COOKIES=y +CONFIG_SYSCTL=y +CONFIG_SYSCTL_SYSCALL=y +CONFIG_SYSFS=y +# CONFIG_SYSFS_DEPRECATED is not set +CONFIG_SYSFS_SYSCALL=y +CONFIG_SYSTEMPORT=m +CONFIG_SYSTEM_TRUSTED_KEYRING=y +CONFIG_SYSV68_PARTITION=y +CONFIG_SYSVIPC=y +CONFIG_SYSVIPC_SYSCTL=y +CONFIG_SYSV_FS=m +# CONFIG_SYS_HYPERVISOR is not set +CONFIG_SYS_SUPPORTS_APM_EMULATION=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_TAHVO_USB=m +CONFIG_TAHVO_USB_HOST_BY_DEFAULT=y +CONFIG_TARGET_CORE=m +CONFIG_TASKSTATS=y +# CONFIG_TASKS_RCU is not set +CONFIG_TASK_DELAY_ACCT=y +CONFIG_TASK_IO_ACCOUNTING=y +CONFIG_TASK_XACCT=y +CONFIG_TCG_ATMEL=m +CONFIG_TCG_TIS_I2C_ATMEL=m +CONFIG_TCG_TIS_I2C_INFINEON=m +CONFIG_TCG_TIS_I2C_NUVOTON=m +CONFIG_TCG_TIS_ST33ZP24=m +CONFIG_TCG_TIS_ST33ZP24_I2C=m +CONFIG_TCG_TIS_ST33ZP24_SPI=m +CONFIG_TCG_TPM=y +CONFIG_TCM_FC=m +CONFIG_TCM_FILEIO=m +CONFIG_TCM_IBLOCK=m +CONFIG_TCM_PSCSI=m +CONFIG_TCM_USER2=m +CONFIG_TCP_CONG_ADVANCED=y +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_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_TEGRA_AHB is not set +CONFIG_TEKRAM_DONGLE=m +CONFIG_TEST_BPF=m +CONFIG_TEST_FIRMWARE=m +CONFIG_TEST_HEXDUMP=m +CONFIG_TEST_KSTRTOX=m +# CONFIG_TEST_LIST_SORT is not set +CONFIG_TEST_LKM=m +CONFIG_TEST_POWER=m +# CONFIG_TEST_RHASHTABLE is not set +CONFIG_TEST_STRING_HELPERS=m +CONFIG_TEST_UDELAY=m +CONFIG_TEST_USER_COPY=m +CONFIG_TEXTSEARCH=y +CONFIG_TEXTSEARCH_BM=m +CONFIG_TEXTSEARCH_FSM=m +CONFIG_TEXTSEARCH_KMP=m +CONFIG_THERMAL=y +CONFIG_THERMAL_BCM2835=y +# 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_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_OF=y +CONFIG_THERMAL_WRITABLE_TRIPS=y +CONFIG_THRUSTMASTER_FF=y +# CONFIG_THUMB2_KERNEL is not set +CONFIG_TICK_CPU_ACCOUNTING=y +CONFIG_TICK_ONESHOT=y +CONFIG_TIMERFD=y +CONFIG_TIMER_STATS=y +CONFIG_TIPC=m +CONFIG_TIPC_MEDIA_UDP=y +CONFIG_TI_ADC081C=m +CONFIG_TI_ADC128S052=m +CONFIG_TI_AM335X_ADC=m +CONFIG_TI_DAC7512=m +CONFIG_TI_ST=m +CONFIG_TMP006=m +CONFIG_TMPFS=y +CONFIG_TMPFS_POSIX_ACL=y +CONFIG_TMPFS_XATTR=y +CONFIG_TOIM3232_DONGLE=m +CONFIG_TORTURE_TEST=m +CONFIG_TOUCHSCREEN_88PM860X=m +CONFIG_TOUCHSCREEN_AD7877=m +CONFIG_TOUCHSCREEN_AD7879=m +CONFIG_TOUCHSCREEN_AD7879_I2C=m +CONFIG_TOUCHSCREEN_AD7879_SPI=m +CONFIG_TOUCHSCREEN_ADS7846=m +CONFIG_TOUCHSCREEN_AR1021_I2C=m +CONFIG_TOUCHSCREEN_ATMEL_MXT=m +CONFIG_TOUCHSCREEN_AUO_PIXCIR=m +CONFIG_TOUCHSCREEN_BU21013=m +CONFIG_TOUCHSCREEN_CHIPONE_ICN8318=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_DYNAPRO=m +CONFIG_TOUCHSCREEN_EDT_FT5X06=m +CONFIG_TOUCHSCREEN_EETI=m +CONFIG_TOUCHSCREEN_EGALAX=m +CONFIG_TOUCHSCREEN_ELAN=m +CONFIG_TOUCHSCREEN_ELO=m +CONFIG_TOUCHSCREEN_FUJITSU=m +CONFIG_TOUCHSCREEN_GOODIX=m +CONFIG_TOUCHSCREEN_GUNZE=m +CONFIG_TOUCHSCREEN_HAMPSHIRE=m +CONFIG_TOUCHSCREEN_ILI210X=m +CONFIG_TOUCHSCREEN_INEXIO=m +CONFIG_TOUCHSCREEN_MAX11801=m +CONFIG_TOUCHSCREEN_MC13783=m +CONFIG_TOUCHSCREEN_MCS5000=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_RPI_FT5406=m +CONFIG_TOUCHSCREEN_ST1232=m +CONFIG_TOUCHSCREEN_STMPE=m +CONFIG_TOUCHSCREEN_SUR40=m +CONFIG_TOUCHSCREEN_SX8654=m +CONFIG_TOUCHSCREEN_SYNAPTICS_I2C_RMI4=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_TSC2005=m +CONFIG_TOUCHSCREEN_TSC2007=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_ZFORCE=m +CONFIG_TPS6105X=m +CONFIG_TPS65010=m +CONFIG_TPS6507X=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_ENUM_MAP_FILE is not set +CONFIG_TRACE_IRQFLAGS_SUPPORT=y +CONFIG_TRACE_ROUTER=m +CONFIG_TRACE_SINK=m +CONFIG_TRACING=y +CONFIG_TRACING_SUPPORT=y +CONFIG_TREE_RCU=y +# CONFIG_TREE_RCU_TRACE is not set +CONFIG_TRUSTED_KEYS=y +CONFIG_TSL2583=m +CONFIG_TSL2x7x=m +CONFIG_TSL4531=m +CONFIG_TTPCI_EEPROM=m +CONFIG_TTY=y +CONFIG_TTY_PRINTK=y +CONFIG_TUN=y +# CONFIG_TUN_VNET_CROSS_LE is not set +CONFIG_TWL4030_CORE=y +CONFIG_TWL4030_MADC=m +CONFIG_TWL4030_POWER=y +CONFIG_TWL4030_WATCHDOG=m +CONFIG_TWL6030_GPADC=m +CONFIG_TWL6040_CORE=y +# CONFIG_UACCESS_WITH_MEMCPY is not set +CONFIG_UBIFS_FS=m +# CONFIG_UBIFS_FS_ADVANCED_COMPR is not set +CONFIG_UBIFS_FS_LZO=y +CONFIG_UBIFS_FS_ZLIB=y +CONFIG_UCB1400_CORE=m +CONFIG_UDF_FS=m +CONFIG_UDF_NLS=y +CONFIG_UEVENT_HELPER=y +CONFIG_UEVENT_HELPER_PATH="" +# CONFIG_UFS_DEBUG is not set +CONFIG_UFS_FS=m +# CONFIG_UFS_FS_WRITE is not set +CONFIG_UHID=m +CONFIG_UID16=y +CONFIG_UIO=m +CONFIG_UIO_DMEM_GENIRQ=m +CONFIG_UIO_PDRV_GENIRQ=m +CONFIG_UIO_PRUSS=m +CONFIG_ULTRIX_PARTITION=y +CONFIG_UNCOMPRESS_INCLUDE="mach/uncompress.h" +CONFIG_UNIX=y +CONFIG_UNIX98_PTYS=y +CONFIG_UNIXWARE_DISKLABEL=y +CONFIG_UNIX_DIAG=m +CONFIG_UNUSED_SYMBOLS=y +CONFIG_UPROBES=y +CONFIG_UPROBE_EVENT=y +CONFIG_USB=y +CONFIG_USBIP_CORE=m +# CONFIG_USBIP_DEBUG is not set +CONFIG_USBIP_HOST=m +CONFIG_USBIP_VHCI_HCD=m +CONFIG_USBPCWATCHDOG=m +CONFIG_USB_ACM=m +CONFIG_USB_ADUTUX=m +CONFIG_USB_AIRSPY=m +CONFIG_USB_ALI_M5632=y +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_ATM=m +CONFIG_USB_BELKIN=y +CONFIG_USB_C67X00_HCD=m +CONFIG_USB_CATC=m +CONFIG_USB_CDC_PHONET=m +CONFIG_USB_CHAOSKEY=m +CONFIG_USB_COMMON=y +CONFIG_USB_CXACRU=m +CONFIG_USB_CYPRESS_CY7C63=m +CONFIG_USB_CYTHERM=m +CONFIG_USB_DEFAULT_PERSIST=y +CONFIG_USB_DSBR=m +CONFIG_USB_DWC2=y +# CONFIG_USB_DWC2_DEBUG is not set +CONFIG_USB_DWC2_HOST=y +# CONFIG_USB_DWC2_TRACK_MISSED_SOFS is not set +CONFIG_USB_DWC3=m +# CONFIG_USB_DWC3_DEBUG is not set +CONFIG_USB_DWC3_HOST=y +CONFIG_USB_DWC3_ULPI=y +CONFIG_USB_DWCOTG=y +CONFIG_USB_DYNAMIC_MINORS=y +# CONFIG_USB_EHCI_HCD is not set +CONFIG_USB_EHSET_TEST_FIXTURE=m +CONFIG_USB_EMI26=m +CONFIG_USB_EMI62=m +CONFIG_USB_EPSON2888=y +CONFIG_USB_EZUSB_FX2=m +CONFIG_USB_FOTG210_HCD=m +CONFIG_USB_FTDI_ELAN=m +CONFIG_USB_FUSBH200_HCD=m +# CONFIG_USB_GADGET is not set +CONFIG_USB_GL860=m +CONFIG_USB_GPIO_VBUS=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_HACKRF=m +# CONFIG_USB_HCD_BCMA is not set +# CONFIG_USB_HCD_SSB is not set +# CONFIG_USB_HCD_TEST_MODE is not set +CONFIG_USB_HID=y +CONFIG_USB_HIDDEV=y +CONFIG_USB_HSIC_USB3503=m +CONFIG_USB_HSO=m +CONFIG_USB_HWA_HCD=m +CONFIG_USB_IDMOUSE=m +CONFIG_USB_IOWARRIOR=m +CONFIG_USB_IPHETH=m +CONFIG_USB_IRDA=m +CONFIG_USB_ISIGHTFW=m +CONFIG_USB_ISP116X_HCD=m +CONFIG_USB_ISP1301=m +CONFIG_USB_ISP1362_HCD=m +CONFIG_USB_ISP1760=m +CONFIG_USB_ISP1760_HCD=y +CONFIG_USB_ISP1760_HOST_ROLE=y +CONFIG_USB_KAWETH=m +CONFIG_USB_KC2190=y +CONFIG_USB_KEENE=m +CONFIG_USB_LCD=m +CONFIG_USB_LD=m +CONFIG_USB_LED=m +CONFIG_USB_LED_TRIG=y +CONFIG_USB_LEGOTOWER=m +CONFIG_USB_LINK_LAYER_TEST=m +CONFIG_USB_M5602=m +CONFIG_USB_MA901=m +CONFIG_USB_MAX3421_HCD=m +CONFIG_USB_MDC800=m +CONFIG_USB_MICROTEK=m +CONFIG_USB_MON=m +CONFIG_USB_MR800=m +CONFIG_USB_MSI2500=m +CONFIG_USB_MUSB_HDRC=y +CONFIG_USB_MUSB_HOST=y +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_CX82310_ETH=m +CONFIG_USB_NET_DM9601=m +CONFIG_USB_NET_DRIVERS=y +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=y +CONFIG_USB_NET_SR9700=m +CONFIG_USB_NET_SR9800=m +CONFIG_USB_NET_ZAURUS=m +# CONFIG_USB_OHCI_HCD 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_FSM is not set +# CONFIG_USB_OTG_WHITELIST is not set +CONFIG_USB_OXU210HP_HCD=m +CONFIG_USB_PEGASUS=m +CONFIG_USB_PHY=y +CONFIG_USB_PRINTER=m +CONFIG_USB_PWC=m +# CONFIG_USB_PWC_DEBUG is not set +CONFIG_USB_PWC_INPUT_EVDEV=y +CONFIG_USB_R8A66597_HCD=m +CONFIG_USB_RAREMONO=m +CONFIG_USB_RIO500=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_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_MPR=y +CONFIG_USB_SERIAL_KEYSPAN_PDA=m +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_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_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_SISUSBVGA_CON is not set +CONFIG_USB_SL811_HCD=m +CONFIG_USB_SL811_HCD_ISO=y +CONFIG_USB_SPEEDTOUCH=m +CONFIG_USB_STKWEBCAM=m +CONFIG_USB_STORAGE=y +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_SUPPORT=y +CONFIG_USB_SWITCH_FSA9480=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_ULPI=y +CONFIG_USB_ULPI_BUS=m +CONFIG_USB_ULPI_VIEWPORT=y +CONFIG_USB_USBNET=y +CONFIG_USB_USS720=m +CONFIG_USB_VIDEO_CLASS=m +CONFIG_USB_VIDEO_CLASS_INPUT_EVDEV=y +CONFIG_USB_VL600=m +CONFIG_USB_WDM=m +CONFIG_USB_WPAN_HCD=m +CONFIG_USB_WUSB=m +CONFIG_USB_WUSB_CBAF=m +# CONFIG_USB_WUSB_CBAF_DEBUG is not set +# CONFIG_USB_XHCI_HCD is not set +CONFIG_USB_XUSBATM=m +CONFIG_USB_YUREX=m +CONFIG_USB_ZD1201=m +CONFIG_USB_ZR364XX=m +CONFIG_USELIB=y +CONFIG_USER_NS=y +CONFIG_USE_OF=y +CONFIG_UTS_NS=y +CONFIG_UWB=m +CONFIG_UWB_HWA=m +CONFIG_UWB_I1480U=m +CONFIG_V4L2_FLASH_LED_CLASS=m +CONFIG_V4L2_MEM2MEM_DEV=m +CONFIG_V4L_MEM2MEM_DRIVERS=y +CONFIG_V4L_PLATFORM_DRIVERS=y +CONFIG_V4L_TEST_DRIVERS=y +CONFIG_VCNL4000=m +CONFIG_VDSO=y +CONFIG_VECTORS_BASE=0xffff0000 +CONFIG_VERSION_SIGNATURE="" +CONFIG_VETH=m +# CONFIG_VEXPRESS_CONFIG is not set +CONFIG_VF610_ADC=m +CONFIG_VFAT_FS=y +CONFIG_VFP=y +CONFIG_VFPv3=y +# CONFIG_VGASTATE is not set +# CONFIG_VIA_RHINE is not set +CONFIG_VIA_VELOCITY=m +CONFIG_VIDEOBUF2_CORE=m +CONFIG_VIDEOBUF2_DMA_CONTIG=m +CONFIG_VIDEOBUF2_DMA_SG=m +CONFIG_VIDEOBUF2_MEMOPS=m +CONFIG_VIDEOBUF2_VMALLOC=m +CONFIG_VIDEOBUF_DVB=m +CONFIG_VIDEOBUF_GEN=m +CONFIG_VIDEOBUF_VMALLOC=m +CONFIG_VIDEOMODE_HELPERS=y +# CONFIG_VIDEO_ADV_DEBUG is not set +CONFIG_VIDEO_AU0828=m +CONFIG_VIDEO_AU0828_RC=y +CONFIG_VIDEO_AU0828_V4L2=y +CONFIG_VIDEO_BCM2835=y +CONFIG_VIDEO_BCM2835_MMAL=m +CONFIG_VIDEO_CPIA2=m +CONFIG_VIDEO_CS53L32A=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_CX25840=m +CONFIG_VIDEO_DEV=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_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_HDPVR=m +CONFIG_VIDEO_IR_I2C=m +CONFIG_VIDEO_MEM2MEM_DEINTERLACE=m +CONFIG_VIDEO_MSP3400=m +CONFIG_VIDEO_MT9V011=m +CONFIG_VIDEO_OV7640=m +CONFIG_VIDEO_PVRUSB2=m +# CONFIG_VIDEO_PVRUSB2_DEBUGIFC is not set +CONFIG_VIDEO_PVRUSB2_DVB=y +CONFIG_VIDEO_PVRUSB2_SYSFS=y +CONFIG_VIDEO_SAA711X=m +CONFIG_VIDEO_SH_VEU=m +CONFIG_VIDEO_SONY_BTF_MPX=m +CONFIG_VIDEO_STK1160=m +CONFIG_VIDEO_STK1160_AC97=y +CONFIG_VIDEO_STK1160_COMMON=m +CONFIG_VIDEO_TM6000=m +CONFIG_VIDEO_TM6000_ALSA=m +CONFIG_VIDEO_TM6000_DVB=m +CONFIG_VIDEO_TUNER=m +CONFIG_VIDEO_TVEEPROM=m +CONFIG_VIDEO_TVP5150=m +CONFIG_VIDEO_TW2804=m +CONFIG_VIDEO_TW9903=m +CONFIG_VIDEO_TW9906=m +CONFIG_VIDEO_UDA1342=m +CONFIG_VIDEO_USBTV=m +CONFIG_VIDEO_USBVISION=m +CONFIG_VIDEO_V4L2=m +CONFIG_VIDEO_V4L2_SUBDEV_API=y +CONFIG_VIDEO_VIM2M=m +CONFIG_VIDEO_VIVID=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_MMIO is not set +CONFIG_VIRTUALIZATION=y +# CONFIG_VIRT_CPU_ACCOUNTING_GEN is not set +CONFIG_VIRT_DRIVERS=y +CONFIG_VITESSE_PHY=m +CONFIG_VLAN_8021Q=m +CONFIG_VLAN_8021Q_GVRP=y +CONFIG_VLAN_8021Q_MVRP=y +# CONFIG_VMSPLIT_1G is not set +CONFIG_VMSPLIT_2G=y +# CONFIG_VMSPLIT_3G is not set +CONFIG_VM_EVENT_COUNTERS=y +CONFIG_VSOCKETS=m +CONFIG_VT=y +CONFIG_VT6656=m +CONFIG_VT_CONSOLE=y +CONFIG_VT_CONSOLE_SLEEP=y +CONFIG_VT_HW_CONSOLE_BINDING=y +CONFIG_VXFS_FS=m +CONFIG_VXLAN=m +CONFIG_W1=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_SLAVE_BQ27000=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_DS2431=m +CONFIG_W1_SLAVE_DS2433=m +# CONFIG_W1_SLAVE_DS2433_CRC is not set +CONFIG_W1_SLAVE_DS2760=m +CONFIG_W1_SLAVE_DS2780=m +CONFIG_W1_SLAVE_DS2781=m +CONFIG_W1_SLAVE_DS28E04=m +CONFIG_W1_SLAVE_SMEM=m +CONFIG_W1_SLAVE_THERM=m +CONFIG_WAN=y +CONFIG_WANT_DEV_COREDUMP=y +CONFIG_WATCHDOG=y +CONFIG_WATCHDOG_CORE=y +# CONFIG_WATCHDOG_NOWAYOUT is not set +CONFIG_WCN36XX=m +# CONFIG_WCN36XX_DEBUGFS is not set +CONFIG_WEXT_CORE=y +CONFIG_WEXT_PRIV=y +CONFIG_WEXT_PROC=y +CONFIG_WEXT_SPY=y +CONFIG_WILINK_PLATFORM_DATA=y +CONFIG_WIMAX=m +CONFIG_WIMAX_DEBUG_LEVEL=8 +CONFIG_WIMAX_GDM72XX=m +CONFIG_WIMAX_GDM72XX_K_MODE=y +CONFIG_WIMAX_GDM72XX_QOS=y +# CONFIG_WIMAX_GDM72XX_SDIO is not set +CONFIG_WIMAX_GDM72XX_USB=y +CONFIG_WIMAX_GDM72XX_USB_PM=y +CONFIG_WIMAX_GDM72XX_WIMAX2=y +CONFIG_WIMAX_I2400M=m +CONFIG_WIMAX_I2400M_DEBUG_LEVEL=8 +CONFIG_WIMAX_I2400M_USB=m +CONFIG_WIRELESS=y +CONFIG_WIRELESS_EXT=y +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_W5300=m +CONFIG_WL1251=m +CONFIG_WL1251_SDIO=m +CONFIG_WL1251_SPI=m +CONFIG_WL12XX=m +CONFIG_WL18XX=m +CONFIG_WLAN=y +CONFIG_WLCORE=m +CONFIG_WLCORE_SDIO=m +CONFIG_WLCORE_SPI=m +CONFIG_WL_MEDIATEK=y +CONFIG_WL_TI=y +CONFIG_WM831X_BACKUP=m +CONFIG_WM831X_POWER=m +CONFIG_WM831X_WATCHDOG=m +CONFIG_WM8350_POWER=m +CONFIG_WM8350_WATCHDOG=m +CONFIG_WQ_POWER_EFFICIENT_DEFAULT=y +CONFIG_X25=m +CONFIG_X25_ASY=m +CONFIG_X509_CERTIFICATE_PARSER=y +# CONFIG_XEN is not set +CONFIG_XFRM=y +CONFIG_XFRM_ALGO=m +CONFIG_XFRM_IPCOMP=m +# CONFIG_XFRM_MIGRATE is not set +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_POSIX_ACL=y +CONFIG_XFS_QUOTA=y +CONFIG_XFS_RT=y +# CONFIG_XFS_WARN is not set +CONFIG_XILINX_WATCHDOG=m +CONFIG_XILLYBUS=m +CONFIG_XILLYBUS_OF=m +# CONFIG_XIP_KERNEL is not set +CONFIG_XOR_BLOCKS=m +CONFIG_XPS=y +CONFIG_XZ_DEC=y +CONFIG_XZ_DEC_ARM=y +CONFIG_XZ_DEC_ARMTHUMB=y +CONFIG_XZ_DEC_BCJ=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_YAM=m +CONFIG_ZBOOT_ROM_BSS=0x0 +CONFIG_ZBOOT_ROM_TEXT=0x0 +CONFIG_ZBUD=y +CONFIG_ZD1211RW=m +# CONFIG_ZD1211RW_DEBUG is not set +CONFIG_ZEROPLUS_FF=y +CONFIG_ZISOFS=y +CONFIG_ZLIB_DEFLATE=y +CONFIG_ZLIB_INFLATE=y +CONFIG_ZONE_DMA_FLAG=0 +CONFIG_ZPOOL=y +CONFIG_ZRAM=m +CONFIG_ZRAM_LZ4_COMPRESS=y +CONFIG_ZSMALLOC=y +# CONFIG_ZSMALLOC_STAT is not set +CONFIG_ZSWAP=y --- linux-raspi2-4.2.0.orig/debian.raspi2/control.d/flavour-control.stub +++ linux-raspi2-4.2.0/debian.raspi2/control.d/flavour-control.stub @@ -0,0 +1,93 @@ +# 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-PKGVER-ABINUM-FLAVOUR +Build-Profiles: +Architecture: ARCH +Section: kernel +Priority: optional +Pre-Depends: dpkg (>= 1.10.24) +Provides: linux-image, linux-image-3.0, fuse-module, =PROVIDES= +Depends: ${misc:Depends}, ${shlibs:Depends}, initramfs-tools (>= 0.36ubuntu6) | linux-initramfs-tool, kmod +Conflicts: hotplug (<< 0.0.20040105-1) +Recommends: BOOTLOADER +Suggests: fdutils, SRCPKGNAME-tools, linux-headers-PKGVER-ABINUM-FLAVOUR +Description: Linux kernel image for version PKGVER on DESC + This package contains the Linux kernel image 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-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 a 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=. + --- linux-raspi2-4.2.0.orig/debian.raspi2/control.d/vars.raspi2 +++ linux-raspi2-4.2.0/debian.raspi2/control.d/vars.raspi2 @@ -0,0 +1,6 @@ +arch="armhf" +supported="Generic" +target="Geared toward desktop and server systems." +desc="=HUMAN= SMP" +bootloader="grub-pc [i386 amd64 x32] | grub-efi-amd64 [amd64 x32] | grub-efi-ia32 [i386 amd64 x32] | grub [i386 amd64 x32] | lilo (>= 19.1) [i386 amd64 x32] | flash-kernel [armhf arm64] | grub-ieee1275 [ppc64el]" +provides="kvm-api-4, redhat-cluster-modules, ivtv-modules" --- linux-raspi2-4.2.0.orig/debian.raspi2/control.stub +++ linux-raspi2-4.2.0/debian.raspi2/control.stub @@ -0,0 +1,143 @@ +Source: linux-raspi2 +Section: devel +Priority: optional +Maintainer: Ubuntu Kernel Team +Standards-Version: 3.9.4.0 +Build-Depends: + debhelper (>= 5), + dh-systemd, + cpio, + kernel-wedge (>= 2.24ubuntu1), + kmod , + makedumpfile [amd64 i386] , + libelf-dev , + libnewt-dev , + libiberty-dev , + rsync , + libdw-dev , + libpci-dev , + dpkg (>= 1.16.0~ubuntu4) , + pkg-config , + flex , + bison , + libunwind8-dev , + openssl , + libaudit-dev , + bc , + python-dev , + gawk , + device-tree-compiler [powerpc] , + u-boot-tools [powerpc] , + libc6-dev-ppc64 [powerpc] , + libudev-dev , + autoconf , + automake , + libtool , +Build-Depends-Indep: + xmlto , + docbook-utils , + ghostscript , + transfig , + bzip2 , + sharutils , + asciidoc , +Vcs-Git: git://git.launchpad.net/~ubuntu-kernel/ubuntu/+source/linux/+git/wily +#XS-Testsuite: autopkgtest +#XS-Testsuite-Depends: gcc-4.7 binutils + +Package: linux-raspi2-headers-4.2.0-1022 +Build-Profiles: +Architecture: armhf +Multi-Arch: foreign +Section: devel +Priority: optional +Depends: ${misc:Depends}, coreutils | fileutils (>= 4.0) +Description: Header files related to Linux kernel version 4.2.0 + This package provides kernel header files for version 4.2.0, for sites + that want the latest kernel headers. Please read + /usr/share/doc/linux-raspi2-headers-4.2.0-1022/debian.README.gz for details + +Package: linux-raspi2-tools-4.2.0-1022 +Build-Profiles: +Architecture: armhf +Section: devel +Priority: optional +Depends: ${misc:Depends}, ${shlibs:Depends}, linux-tools-common +Description: Linux kernel version specific tools for version 4.2.0-1022 + This package provides the architecture dependant parts for kernel + version locked tools (such as perf and x86_energy_perf_policy) for + version 4.2.0-1022 on + . + You probabaly want to install the linux-tools- meta package. + + +Package: linux-image-4.2.0-1022-raspi2 +Build-Profiles: +Architecture: armhf +Section: kernel +Priority: optional +Pre-Depends: dpkg (>= 1.10.24) +Provides: linux-image, linux-image-3.0, fuse-module, kvm-api-4, redhat-cluster-modules, ivtv-modules +Depends: ${misc:Depends}, ${shlibs:Depends}, initramfs-tools (>= 0.36ubuntu6) | linux-initramfs-tool, kmod +Conflicts: hotplug (<< 0.0.20040105-1) +Recommends: grub-pc [i386 amd64 x32] | grub-efi-amd64 [amd64 x32] | grub-efi-ia32 [i386 amd64 x32] | grub [i386 amd64 x32] | lilo (>= 19.1) [i386 amd64 x32] | flash-kernel [armhf arm64] | grub-ieee1275 [ppc64el] +Suggests: fdutils, linux-raspi2-tools, linux-headers-4.2.0-1022-raspi2 +Description: Linux kernel image for version 4.2.0 on SMP + This package contains the Linux kernel image for version 4.2.0 on + 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-raspi2 meta-package, which will ensure that upgrades work + correctly, and that supporting packages are also installed. + +Package: linux-headers-4.2.0-1022-raspi2 +Build-Profiles: +Architecture: armhf +Section: devel +Priority: optional +Depends: ${misc:Depends}, linux-raspi2-headers-4.2.0-1022, ${shlibs:Depends} +Provides: linux-headers, linux-headers-3.0 +Description: Linux kernel headers for version 4.2.0 on SMP + This package provides kernel header files for version 4.2.0 on + SMP. + . + This is for sites that want the latest kernel headers. Please read + /usr/share/doc/linux-headers-4.2.0-1022/debian.README.gz for details. + +Package: linux-image-4.2.0-1022-raspi2-dbgsym +Build-Profiles: +Architecture: armhf +Section: devel +Priority: optional +Depends: ${misc:Depends} +Provides: linux-debug +Description: Linux kernel debug image for version 4.2.0 on SMP + This package provides a kernel debug image for version 4.2.0 on + 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-4.2.0-1022-raspi2 +Build-Profiles: +Architecture: armhf +Section: devel +Priority: optional +Depends: ${misc:Depends}, linux-raspi2-tools-4.2.0-1022 +Description: Linux kernel version specific tools for version 4.2.0-1022 + This package provides the architecture dependant parts for kernel + version locked tools (such as perf and x86_energy_perf_policy) for + version 4.2.0-1022 on + . + --- linux-raspi2-4.2.0.orig/debian.raspi2/control.stub.in +++ linux-raspi2-4.2.0/debian.raspi2/control.stub.in @@ -0,0 +1,72 @@ +Source: linux-raspi2 +Section: devel +Priority: optional +Maintainer: Ubuntu Kernel Team +Standards-Version: 3.9.4.0 +Build-Depends: + debhelper (>= 5), + dh-systemd, + cpio, + kernel-wedge (>= 2.24ubuntu1), + kmod , + makedumpfile [amd64 i386] , + libelf-dev , + libnewt-dev , + libiberty-dev , + rsync , + libdw-dev , + libpci-dev , + dpkg (>= 1.16.0~ubuntu4) , + pkg-config , + flex , + bison , + libunwind8-dev , + openssl , + libaudit-dev , + bc , + python-dev , + gawk , + device-tree-compiler [powerpc] , + u-boot-tools [powerpc] , + libc6-dev-ppc64 [powerpc] , + libudev-dev , + autoconf , + automake , + libtool , +Build-Depends-Indep: + xmlto , + docbook-utils , + ghostscript , + transfig , + bzip2 , + sharutils , + asciidoc , +Vcs-Git: git://git.launchpad.net/~ubuntu-kernel/ubuntu/+source/linux/+git/wily +#XS-Testsuite: autopkgtest +#XS-Testsuite-Depends: gcc-4.7 binutils + +Package: SRCPKGNAME-headers-PKGVER-ABINUM +Build-Profiles: +Architecture: armhf +Multi-Arch: foreign +Section: devel +Priority: optional +Depends: ${misc:Depends}, coreutils | fileutils (>= 4.0) +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-PKGVER-ABINUM +Build-Profiles: +Architecture: armhf +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 probabaly want to install the linux-tools- meta package. + --- linux-raspi2-4.2.0.orig/debian.raspi2/copyright +++ linux-raspi2-4.2.0/debian.raspi2/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-raspi2-4.2.0.orig/debian.raspi2/d-i/firmware/README.txt +++ linux-raspi2-4.2.0/debian.raspi2/d-i/firmware/README.txt @@ -0,0 +1,4 @@ +# +# Place the names of udeb modules into this directory that require +# runtime firmware. +# --- linux-raspi2-4.2.0.orig/debian.raspi2/d-i/firmware/nic-modules +++ linux-raspi2-4.2.0/debian.raspi2/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.8.17.0.fw ? +bnx2x/bnx2x-e1-7.8.17.0.fw ? +bnx2x/bnx2x-e2-7.8.17.0.fw ? +tigon/tg3_tso5.bin ? +tigon/tg3_tso.bin ? +tigon/tg3.bin ? --- linux-raspi2-4.2.0.orig/debian.raspi2/d-i/firmware/scsi-modules +++ linux-raspi2-4.2.0/debian.raspi2/d-i/firmware/scsi-modules @@ -0,0 +1,3 @@ +qlogic/1040.bin ? +qlogic/12160.bin ? +qlogic/1280.bin ? --- linux-raspi2-4.2.0.orig/debian.raspi2/d-i/kernel-versions +++ linux-raspi2-4.2.0/debian.raspi2/d-i/kernel-versions @@ -0,0 +1 @@ +# arch version flavour installedname suffix bdep --- linux-raspi2-4.2.0.orig/debian.raspi2/d-i/kernel-versions.in +++ linux-raspi2-4.2.0/debian.raspi2/d-i/kernel-versions.in @@ -0,0 +1 @@ +# arch version flavour installedname suffix bdep --- linux-raspi2-4.2.0.orig/debian.raspi2/d-i/modules/block-modules +++ linux-raspi2-4.2.0/debian.raspi2/d-i/modules/block-modules @@ -0,0 +1,34 @@ +aoe ? +aten ? +bpck ? +bpck6 ? +cciss ? +comm ? +cpqarray ? +DAC960 ? +dstr ? +epat ? +epia ? +fit2 ? +fit3 ? +friq ? +frpw ? +hpsa ? +kbic ? +ktti ? +nbd ? +nvme ? +on20 ? +on26 ? +paride ? +pcd ? +pd ? +pf ? +pg ? +pt ? +sdhci-tegra ? +sx8 ? +umem ? +virtio_blk ? +xen-blkfront ? +mtip32xx ? --- linux-raspi2-4.2.0.orig/debian.raspi2/d-i/modules/crypto-modules +++ linux-raspi2-4.2.0/debian.raspi2/d-i/modules/crypto-modules @@ -0,0 +1,70 @@ +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 ? +cryptd ? +cryptoloop ? +crypto_null ? +crypto_user ? +ctr ? +cts ? +deflate ? +des_generic ? +fcrypt ? +gcm ? +gf128mul ? +ghash-clmulni-intel ? +ghash-generic ? +khazad ? +lrw ? +lzo ? +md4 ? +michael_mic ? +padlock-aes ? +padlock-sha ? +pcbc ? +pcrypt ? +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 ? +zlib ? --- linux-raspi2-4.2.0.orig/debian.raspi2/d-i/modules/fat-modules +++ linux-raspi2-4.2.0/debian.raspi2/d-i/modules/fat-modules @@ -0,0 +1,7 @@ +fat ? +vfat ? + +# Supporting modules ? +nls_cp437 ? +nls_iso8859-1 ? +nls_utf8 ? --- linux-raspi2-4.2.0.orig/debian.raspi2/d-i/modules/fb-modules +++ linux-raspi2-4.2.0/debian.raspi2/d-i/modules/fb-modules @@ -0,0 +1,3 @@ +fbcon ? +vesafb ? +vga16fb ? --- linux-raspi2-4.2.0.orig/debian.raspi2/d-i/modules/firewire-core-modules +++ linux-raspi2-4.2.0/debian.raspi2/d-i/modules/firewire-core-modules @@ -0,0 +1,4 @@ +firewire-core ? +firewire-ohci ? +firewire-sbp2 ? +firewire-net ? --- linux-raspi2-4.2.0.orig/debian.raspi2/d-i/modules/floppy-modules +++ linux-raspi2-4.2.0/debian.raspi2/d-i/modules/floppy-modules @@ -0,0 +1 @@ +floppy ? --- linux-raspi2-4.2.0.orig/debian.raspi2/d-i/modules/fs-core-modules +++ linux-raspi2-4.2.0/debian.raspi2/d-i/modules/fs-core-modules @@ -0,0 +1,4 @@ +ext2 ? +jfs ? +reiserfs ? +xfs ? --- linux-raspi2-4.2.0.orig/debian.raspi2/d-i/modules/fs-secondary-modules +++ linux-raspi2-4.2.0/debian.raspi2/d-i/modules/fs-secondary-modules @@ -0,0 +1,5 @@ +btrfs ? +fuse ? +ntfs ? +hfs ? +hfsplus ? --- linux-raspi2-4.2.0.orig/debian.raspi2/d-i/modules/input-modules +++ linux-raspi2-4.2.0/debian.raspi2/d-i/modules/input-modules @@ -0,0 +1,23 @@ +hid-a4tech ? +hid-apple ? +hid-belkin ? +hid-bright ? +hid-cherry ? +hid-chicony ? +hid-cypress ? +hid-dell ? +hid-ezkey ? +hid-generic ? +hid-gyration ? +hid-logitech ? +hid-logitech-dj ? +hid-microsoft ? +hid-monterey ? +hid-petalynx ? +hid-pl ? +hid-samsung ? +hid-sony ? +hid-sunplus ? +hid-tmff ? +hid-zpff ? +usbhid ? --- linux-raspi2-4.2.0.orig/debian.raspi2/d-i/modules/ipmi-modules +++ linux-raspi2-4.2.0/debian.raspi2/d-i/modules/ipmi-modules @@ -0,0 +1,5 @@ +ipmi_devintf ? +ipmi_msghandler ? +ipmi_poweroff ? +ipmi_si ? +ipmi_watchdog ? --- linux-raspi2-4.2.0.orig/debian.raspi2/d-i/modules/irda-modules +++ linux-raspi2-4.2.0/debian.raspi2/d-i/modules/irda-modules @@ -0,0 +1,30 @@ +act200l-sir ? +actisys-sir ? +ali-ircc ? +donauboe ? +esi-sir ? +girbil-sir ? +ircomm ? +ircomm-tty ? +irda ? +irda-usb ? +irlan ? +irnet ? +irport ? +irtty-sir ? +kingsun-sir ? +ks959-sir ? +ksdazzle-sir ? +litelink-sir ? +ma600-sir ? +mcp2120-sir ? +mcs7780 ? +nsc-ircc ? +old_belkin-sir ? +sir-dev ? +smsc-ircc2 ? +stir4200 ? +tekram-sir ? +via-ircc ? +vlsi_ir ? +w83977af_ir ? --- linux-raspi2-4.2.0.orig/debian.raspi2/d-i/modules/kernel-image +++ linux-raspi2-4.2.0/debian.raspi2/d-i/modules/kernel-image @@ -0,0 +1,29 @@ +gpio-pca953x ? +gpio-regulator ? +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-raspi2-4.2.0.orig/debian.raspi2/d-i/modules/md-modules +++ linux-raspi2-4.2.0/debian.raspi2/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-raspi2-4.2.0.orig/debian.raspi2/d-i/modules/message-modules +++ linux-raspi2-4.2.0/debian.raspi2/d-i/modules/message-modules @@ -0,0 +1,9 @@ +mptbase ? +mptctl ? +mptfc ? +mptlan ? +mptsas ? +mpt2sas ? +mpt3sas ? +mptscsih ? +mptspi ? --- linux-raspi2-4.2.0.orig/debian.raspi2/d-i/modules/mouse-modules +++ linux-raspi2-4.2.0/debian.raspi2/d-i/modules/mouse-modules @@ -0,0 +1,2 @@ +psmouse ? +usbmouse ? --- linux-raspi2-4.2.0.orig/debian.raspi2/d-i/modules/multipath-modules +++ linux-raspi2-4.2.0/debian.raspi2/d-i/modules/multipath-modules @@ -0,0 +1,3 @@ +dm-multipath ? +dm-round-robin ? +dm-service-time ? --- linux-raspi2-4.2.0.orig/debian.raspi2/d-i/modules/nfs-modules +++ linux-raspi2-4.2.0/debian.raspi2/d-i/modules/nfs-modules @@ -0,0 +1,6 @@ +nfs ? +nfs_acl ? +nfsv3 ? +lockd ? +sunrpc ? +cifs ? --- linux-raspi2-4.2.0.orig/debian.raspi2/d-i/modules/nic-modules +++ linux-raspi2-4.2.0/debian.raspi2/d-i/modules/nic-modules @@ -0,0 +1,180 @@ +3c359 ? +3c501 ? +3c503 ? +3c505 ? +3c507 ? +3c509 ? +3c515 ? +3c523 ? +3c527 ? +3c59x ? +8139cp ? +8139too ? +82596 ? +abyss ? +ac3200 ? +adm8211 ? +airo ? +airport ? +alx ? +amd8111e ? +arc4 ? +arcnet ? +arc-rawmode ? +arc-rimi ? +arlan ? +at1700 ? +ath5k ? +ath9k ? +ath9k_htc ? +atl1 ? +atl1c ? +atl1e ? +atl2 ? +atmel ? +atmel_pci ? +b44 ? +be2net ? +bmac ? +bnx2 ? +bnx2x ? +bonding ? +brcmfmac ? +brcmsmac ? +xgmac ? +cassini ? +com20020 ? +com20020-pci ? +com90io ? +com90xx ? +cs89x0 ? +de2104x ? +de4x5 ? +de600 ? +de620 ? +defxx ? +depca ? +dl2k ? +dmfe ? +dummy ? +e100 ? +e1000 ? +e1000e ? +e2100 ? +eepro ? +eepro100 ? +eexpress ? +enic ? +epic100 ? +eql ? +es3210 ? +eth16i ? +ewrk3 ? +fealnx ? +forcedeth ? +igb ? +ps3_gelic ? +hamachi ? +hermes ? +hp ? +hp100 ? +hp-plus ? +i40e ? +i40evf ? +ibmtr ? +ipddp ? +ipw2100 ? +ipw2200 ? +iwl3945 ? +iwl4965 ? +iwl-legacy ? +iwldvm ? +iwlwifi ? +ixgb ? +ixgbe ? +lance ? +lanstreamer ? +lasi_82596 ? +lne390 ? +lp486e ? +mace ? +mlx4_core ? +mlx4_en ? +mlx5_core ? +mv643xx_eth ? +myri_sbus ? +natsemi ? +ne ? +ne2 ? +ne2k-pci ? +ne3210 ? +netconsole ? +netxen_nic ? +ni5010 ? +ni52 ? +ni65 ? +nicpf ? +nicvf ? +niu ? +ns83820 ? +olympic ? +orinoco ? +orinoco_pci ? +orinoco_plx ? +orinoco_tmd ? +pcnet32 ? +qlcnic ? +r815x ? +r8169 ? +rate_control ? +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-raspi2-4.2.0.orig/debian.raspi2/d-i/modules/nic-pcmcia-modules +++ linux-raspi2-4.2.0/debian.raspi2/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-raspi2-4.2.0.orig/debian.raspi2/d-i/modules/nic-shared-modules +++ linux-raspi2-4.2.0/debian.raspi2/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-raspi2-4.2.0.orig/debian.raspi2/d-i/modules/nic-usb-modules +++ linux-raspi2-4.2.0/debian.raspi2/d-i/modules/nic-usb-modules @@ -0,0 +1,32 @@ +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 ? +smsc95xx ? +zaurus ? +carl9170 ? +smsc75xx ? +smsc95xx ? --- linux-raspi2-4.2.0.orig/debian.raspi2/d-i/modules/parport-modules +++ linux-raspi2-4.2.0/debian.raspi2/d-i/modules/parport-modules @@ -0,0 +1,2 @@ +parport ? +parport_pc ? --- linux-raspi2-4.2.0.orig/debian.raspi2/d-i/modules/pata-modules +++ linux-raspi2-4.2.0/debian.raspi2/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-raspi2-4.2.0.orig/debian.raspi2/d-i/modules/pcmcia-modules +++ linux-raspi2-4.2.0/debian.raspi2/d-i/modules/pcmcia-modules @@ -0,0 +1,8 @@ +i82092 ? +i82365 ? +pcmcia ? +pcmcia_core ? +pd6729 ? +rsrc_nonstatic ? +tcic ? +yenta_socket ? --- linux-raspi2-4.2.0.orig/debian.raspi2/d-i/modules/pcmcia-storage-modules +++ linux-raspi2-4.2.0/debian.raspi2/d-i/modules/pcmcia-storage-modules @@ -0,0 +1,6 @@ +pata_pcmcia ? +qlogic_cs ? +fdomain_cs ? +aha152x_cs ? +nsp_cs ? +sym53c500_cs ? --- linux-raspi2-4.2.0.orig/debian.raspi2/d-i/modules/plip-modules +++ linux-raspi2-4.2.0/debian.raspi2/d-i/modules/plip-modules @@ -0,0 +1 @@ +plip ? --- linux-raspi2-4.2.0.orig/debian.raspi2/d-i/modules/ppp-modules +++ linux-raspi2-4.2.0/debian.raspi2/d-i/modules/ppp-modules @@ -0,0 +1,6 @@ +ppp_async ? +ppp_deflate ? +ppp_mppe ? +pppoe ? +pppox ? +ppp_synctty ? --- linux-raspi2-4.2.0.orig/debian.raspi2/d-i/modules/sata-modules +++ linux-raspi2-4.2.0/debian.raspi2/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-raspi2-4.2.0.orig/debian.raspi2/d-i/modules/scsi-modules +++ linux-raspi2-4.2.0/debian.raspi2/d-i/modules/scsi-modules @@ -0,0 +1,129 @@ +# 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 ? +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 ? +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 ? +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 ? + +# device handlers +scsi_dh_alua ? +scsi_dh_emc ? +scsi_dh_rdac ? +scsi_dh_hp_sw ? --- linux-raspi2-4.2.0.orig/debian.raspi2/d-i/modules/serial-modules +++ linux-raspi2-4.2.0/debian.raspi2/d-i/modules/serial-modules @@ -0,0 +1,4 @@ +generic_serial ? +serial_cs ? +synclink_cs ? +hyperv-keyboard ? --- linux-raspi2-4.2.0.orig/debian.raspi2/d-i/modules/speakup-modules +++ linux-raspi2-4.2.0/debian.raspi2/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-raspi2-4.2.0.orig/debian.raspi2/d-i/modules/squashfs-modules +++ linux-raspi2-4.2.0/debian.raspi2/d-i/modules/squashfs-modules @@ -0,0 +1 @@ +squashfs ? --- linux-raspi2-4.2.0.orig/debian.raspi2/d-i/modules/storage-core-modules +++ linux-raspi2-4.2.0/debian.raspi2/d-i/modules/storage-core-modules @@ -0,0 +1,10 @@ +# Core stacks +usb-storage ? + +# Block level + +# Loop modules +cryptoloop ? + +# Needs to be here for better cdrom initrd layout +isofs ? --- linux-raspi2-4.2.0.orig/debian.raspi2/d-i/modules/usb-modules +++ linux-raspi2-4.2.0/debian.raspi2/d-i/modules/usb-modules @@ -0,0 +1,11 @@ +ehci-hcd ? +isp116x-hcd ? +isp1760 ? +ohci-hcd ? +r8a66597-hcd ? +sl811_cs ? +sl811-hcd ? +u132-hcd ? +uhci-hcd ? +xhci-hcd ? +ehci-tegra ? --- linux-raspi2-4.2.0.orig/debian.raspi2/d-i/modules/virtio-modules +++ linux-raspi2-4.2.0/debian.raspi2/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-raspi2-4.2.0.orig/debian.raspi2/d-i/modules/vlan-modules +++ linux-raspi2-4.2.0/debian.raspi2/d-i/modules/vlan-modules @@ -0,0 +1,3 @@ +slp ? +garp ? +8021q ? --- linux-raspi2-4.2.0.orig/debian.raspi2/d-i/package-list +++ linux-raspi2-4.2.0/debian.raspi2/d-i/package-list @@ -0,0 +1,202 @@ +Package: kernel-image +Provides: ext3-modules, ext4-modules +Provides_amd64: efi-modules, ext3-modules, ext4-modules +Provides_i386: efi-modules, ext3-modules, ext4-modules +Provides_ppc64el: ext3-modules, ext4-modules, fat-modules + +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: irda-modules +Depends: kernel-image, nic-shared-modules +Priority: standard +Description: Support for Infrared protocols + +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: squashfs-modules +Depends: kernel-image +Priority: extra +Description: squashfs modules + This package contains squashfs modules. + +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-raspi2-4.2.0.orig/debian.raspi2/etc/getabis +++ linux-raspi2-4.2.0/debian.raspi2/etc/getabis @@ -0,0 +1,11 @@ +repo_list=( + "http://archive.ubuntu.com/ubuntu/pool/main/l/linux-raspi2" + "http://ports.ubuntu.com/ubuntu-ports/pool/main/l/linux-raspi2" + "http://archive.ubuntu.com/ubuntu/pool/universe/l/linux-raspi2" + "http://ports.ubuntu.com/ubuntu-ports/pool/universe/l/linux-raspi2" + "http://ppa.launchpad.net/canonical-kernel-team/ppa/ubuntu/pool/main/l/linux-raspi2" +) + +package_prefixes linux-image + +getall armhf raspi2 --- linux-raspi2-4.2.0.orig/debian.raspi2/etc/kernelconfig +++ linux-raspi2-4.2.0/debian.raspi2/etc/kernelconfig @@ -0,0 +1,7 @@ +if [ "$variant" = "ports" ]; then + archs="" + family='ports' +else + archs="armhf" + family='ubuntu' +fi --- linux-raspi2-4.2.0.orig/debian.raspi2/info/OVERRIDES +++ linux-raspi2-4.2.0/debian.raspi2/info/OVERRIDES @@ -0,0 +1,153 @@ +CONFIG_RCU_KTHREAD_PRIO=0 +CONFIG_X86_AMD_PLATFORM_DEVICE=y +CONFIG_ZSMALLOC_STAT=N +CONFIG_LIVEPATCH=y +CONFIG_IEEE802154_SOCKET=m +CONFIG_NET_ACT_BPF=m +CONFIG_NET_ACT_CONNMARK=m +# CONFIG_BT_SELFTEST is not set +CONFIG_MTD_NAND_HISI504=m +CONFIG_IXGBE_VXLAN=y +CONFIG_TI_CPSW_ALE=m +CONFIG_MOUSE_PS2_FOCALTECH=y +CONFIG_INPUT_E3X0_BUTTON=m +CONFIG_INPUT_REGULATOR_HAPTIC=m +CONFIG_INPUT_TPS65218_PWRBUTTON=m +CONFIG_INPUT_AXP20X_PEK=m +# CONFIG_DEVMEM is not set +CONFIG_TCG_TIS_I2C_ST33=m +CONFIG_TCG_CRB=m +CONFIG_SPI_DLN2=m +CONFIG_CHARGER_MAX77693=m +CONFIG_BATTERY_GAUGE_LTC2941=m +CONFIG_MFD_DA9150=m +CONFIG_MFD_RT5033=m +CONFIG_REGULATOR_RT5033=m +CONFIG_USB_GSPCA_TOUPTEK=m +CONFIG_DUMMY_CONSOLE_COLUMNS=80 +CONFIG_DUMMY_CONSOLE_ROWS=25 +CONFIG_SND_USB_POD=m +CONFIG_SND_USB_PODHD=m +CONFIG_SND_USB_TONEPORT=m +CONFIG_SND_USB_VARIAX=m +CONFIG_SND_SOC_INTEL_CHT_BSW_RT5645_MACH=m +CONFIG_SND_SOC_XTFPGA_I2S=m +CONFIG_SND_SOC_STA32X=m +CONFIG_HID_BETOP_FF=m +CONFIG_USB_ISP1760=m +CONFIG_USB_CONFIGFS_F_UVC=y +CONFIG_LEDS_CLASS_FLASH=m +CONFIG_RTC_DRV_ABB5ZES3=m +CONFIG_RTC_DRV_DS1685_FAMILY=m +# CONFIG_RTC_DS1685_PROC_REGS is not set +# CONFIG_RTC_DS1685_SYSFS_REGS is not set +CONFIG_VIRTIO_PCI_LEGACY=y +CONFIG_FB_SM7XX=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_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_SSD1289=m +CONFIG_FB_TFT_SSD1306=m +CONFIG_FB_TFT_SSD1331=m +CONFIG_FB_TFT_SSD1351=m +CONFIG_FB_TFT_ST7735R=m +CONFIG_FB_TFT_TINYLCD=m +CONFIG_FB_TFT_TLS8204=m +CONFIG_FB_TFT_UC1701=m +CONFIG_FB_TFT_UPD161704=m +CONFIG_FB_TFT_WATTEROTT=m +CONFIG_FB_FLEX=m +CONFIG_FB_TFT_FBTFT_DEVICE=m +CONFIG_COMMON_CLK_CDCE706=m +CONFIG_ALTERA_MBOX=m +CONFIG_PM_DEVFREQ_EVENT=y +CONFIG_MMA9551=m +CONFIG_MMA9553=m +CONFIG_CC10001_ADC=m +CONFIG_QCOM_SPMI_VADC=m +CONFIG_IIO_SSP_SENSORHUB=m +CONFIG_KMX61=m +CONFIG_CM3232=m +CONFIG_JSA1212=m +CONFIG_SX9500=m +CONFIG_FS_DAX=y +# CONFIG_PSTORE_PMSG is not set +# CONFIG_F2FS_IO_TRACE is not set +CONFIG_NFSD_PNFS=y +CONFIG_GDB_SCRIPTS=y +# CONFIG_KASAN is not set +CONFIG_TEST_HEXDUMP=m +CONFIG_SECURITY_SMACK_NETFILTER=y +CONFIG_CRYPTO_USER_API_RNG=m +CONFIG_BLK_DEV_RAM_DAX=y +CONFIG_BATTERY_RT5033=m +CONFIG_IIO_SSP_SENSORS_COMMONS=m +# CONFIG_ZSMALLOC_STAT is not set +# CONFIG_X86_INTEL_QUARK is not set +# CONFIG_ZSMALLOC_STAT is not set +CONFIG_X86_SFI_CPUFREQ=m +# CONFIG_X86_INTEL_QUARK is not set +# CONFIG_ZSMALLOC_STAT is not set +CONFIG_X86_SFI_CPUFREQ=m +# CONFIG_ARCH_DIGICOLOR is not set +CONFIG_ARCH_HIP01=y +CONFIG_MACH_MT6589=y +CONFIG_MACH_MT6592=y +CONFIG_MACH_MT8127=y +CONFIG_MACH_MT8135=y +# CONFIG_ARCH_R8A73A4 is not set +# CONFIG_ZSMALLOC_STAT is not set +CONFIG_ARM_EXYNOS_CPUFREQ=m +# CONFIG_ARM_EXYNOS_CPU_FREQ_BOOST_SW is not set +CONFIG_OF_OVERLAY=y +CONFIG_HIP04_ETH=m +CONFIG_SERIAL_CONEXANT_DIGICOLOR=m +CONFIG_PINCTRL_MSM8916=m +CONFIG_POWER_RESET_RMOBILE=m +CONFIG_MEDIATEK_WATCHDOG=m +CONFIG_MFD_QCOM_RPM=m +CONFIG_REGULATOR_QCOM_RPM=m +CONFIG_NOUVEAU_PLATFORM_DRIVER=y +# CONFIG_DRM_EXYNOS7_DECON is not set +CONFIG_DRM_ATMEL_HLCDC=m +CONFIG_DISPLAY_ENCODER_OPA362=m +CONFIG_SND_SOC_TEGRA_RT5677=m +CONFIG_MMC_SDHCI_F_SDH30=m +CONFIG_RTC_DRV_ARMADA38X=m +CONFIG_RCAR_DMAC=m +CONFIG_CLK_QORIQ=m +CONFIG_IPQ_LCC_806X=m +CONFIG_MSM_LCC_8960=m +# CONFIG_IOMMU_IO_PGTABLE_LPAE is not set +CONFIG_ARM_TEGRA_DEVFREQ=m +# CONFIG_DEVFREQ_EVENT_EXYNOS_PPMU is not set +# CONFIG_ARCH_DIGICOLOR is not set +# CONFIG_ARCH_HIP01 is not set +CONFIG_MACH_MT6589=y +CONFIG_MACH_MT6592=y +CONFIG_MACH_MT8127=y +CONFIG_MACH_MT8135=y +# CONFIG_ARCH_R8A73A4 is not set +# CONFIG_CLK_QORIQ is not set +# CONFIG_IOMMU_IO_PGTABLE_LPAE_SELFTEST is not set +# CONFIG_ARCH_EXYNOS7 is not set +# CONFIG_ARCH_FSL_LS2085A is not set +# CONFIG_ARCH_TEGRA is not set +CONFIG_CAN_XILINXCAN=m +CONFIG_GPIO_XGENE_SB=m +# CONFIG_DEBUG_ALIGN_RODATA is not set +CONFIG_UIO_FSL_ELBC_GPCM=m +# CONFIG_UIO_FSL_ELBC_GPCM_NETX5152 is not set --- linux-raspi2-4.2.0.orig/debian.raspi2/info/REBASE +++ linux-raspi2-4.2.0/debian.raspi2/info/REBASE @@ -0,0 +1,47 @@ +Could not apply b551f2a4439d2179b3732c2a28277d9245dbb150... NEEDED UBUNTU: SAUCE: xgmac_mdio: Silence read errors + commit 1fcf77c87ad659a92e1dcfb883388cb43baeaab6 + +Could not apply 7cc84cf61b760725973c93b9c7e39d6f521bfe62... NEEDED Revert "net/mlx4_en: Fix bad use of dev_id" + commit ca9f9f703950e5cb300526549b4f1b0a6605a5c5 + +error: could not apply ff7e372... overlay: add backwards compatible overlayfs format support +Could not apply 3fd5011f880877a583b1ccefd06ad481452cdef7... NEEDED overlay: add backwards compatible overlayfs format support (fixes) + XXX: needed + +Could not apply 98c64db6cffd59a894d4a4492aea761fa6e6c51a... NEEDED UBUNTU: SAUCE: (no-up) apparmor: Sync to apparmor3 - RC1 snapshot +Could not apply 892b8b7cfb14b9bdfbc9ac2fee8e751a67707542... NEEDED UBUNTU: SAUCE: Revert: fix: only allow a single threaded process to ... +Could not apply e1b6a4b88bdb9cf858e068d0e3a6b7449d648513... NEEDED UBUNTU: SAUCE: (no-up) fix: bad unix_addr_fs macro +Could not apply 9defa41f9126d026cd6a1ead03e6443e98e97108... NEEDED UBUNTU: apparmor -- follow change to this_cpu_ptr +Could not apply 36ca906c4d4cf34bb5a750d1dbd3e4abe36a4684... NEEDED UBUNTU: SAUCE: (no-up): apparmor: fix mediation of fs unix sockets + XXX: needed (apparmor) + PORTED AND REAPPLIED + +Could not apply 4594c0a5b120fc92fb141c1cf9eef3e8d665e4e6... NEEDED UBUNTU: SAUCE: storvsc: force SPC-3 compliance on win8 and win8 r2 hosts + commit b0a93d96b2814c725161f91a4e35d0c29ec0f95b + +Could not apply d8db9694361b258427eab1846b211be332c4a1f9... NEEDED UBUNTU: SAUCE: efi: Expose underlying UEFI firmware platform size to userland + commit 2859dff97e54db4795b8b7d9606cb8efcec722ff + +Could not apply fe8ce4f67a26106dab3193b3515fe865e136ab4a... NEEDED UBUNTU: SAUCE: arm64 -- psci tell the compiler which registers we are needing values in + commit f5e0a12ca2d939e47995f73428d9bf1ad372b289 + +Could not apply e9f926b44c895d39152d3f816ce9ff37780f77cb... NEEDED xen: correct bug in p2m list initialization + commit b8f05c8803fce899d79ca66f8d7f348cf15fb40e + +Could not apply 7ec323466d993094545e140cc44559cb1cccbd14... NEEDED tpm/ibmvtpm: Additional LE support for tpm_ibmvtpm_send + commit 62dfd912ab3b5405b6fe72d0135c37e9648071f1 + +Could not apply 6b610659f8b313644c0012a511c6381e9fe7d881... NEEDED net/mlx4_core: Maintain a persistent memory for mlx4 device + commit 872bf2fb69d90e3619befee842fc26db39d8e475 + +Could not apply 7e9a6608ca11948dd0996b6db99e498ca043a0cd... NEEDED tools/power turbostat: support additional Broadwell model + commit 48a0631c891ab581cc010b44655ad49ff6eb3325 + +Could not apply 9a9ab8a2348c722405964a0c785c4b2a613d8782... NEEDED KVM: Add generic support for dirty page logging + commit ba0513b5b8ffbcb0cc89e2f172c0bcb70497ba2e + +Could not apply 9a9ab8a2348c722405964a0c785c4b2a613d8782... NEEDED KVM: Add generic support for dirty page logging + commit 3b0f1d01e501792d8d89ab4371bc9e8cd2a10032 + +Could not apply 0335b4283d02dcd6e7d6b54e175801099873852e... NEEDED KVM: VMX: Add PML support in VMX + commit 843e4330573cc5261ae260ce0b83dc570d8cdc05 --- linux-raspi2-4.2.0.orig/debian.raspi2/info/RECONCILE +++ linux-raspi2-4.2.0/debian.raspi2/info/RECONCILE @@ -0,0 +1,506 @@ +=== total: 505 ignored: 55 (upstreamed: 49 reverted: 6) needed: 450 (debian: 298 ubuntu: 14 sauce: 138) === +3377e17d83c8ce29dc0128c9785043b630e283f3 IGNORE:IN:7486341a98f26857f383aec88ffa10950087c3a1 x86/platform, acpi: Bypass legacy PIC and PIT in ACPI hardware reduced mode +e826d2f5ee447384828473c249ef38c08b72ffc1 IGNORE:IN:d474a4d365aaa5c7aabcf11a74ea43aa23f6f2e9 powercap / RAPL: handle domains with different energy units +27ba48b7bec5dc0c9b665b334bbea30fdb44160a NEEDED:debian UBUNTU: [Config] add nvme to linux-virtual as this is now used in GCE to expose disks +0788d51a2a8d794eb1c8394154028cb593be7ee7 NEEDED:debian UBUNTU: Ubuntu-3.19.0-10.10 +eb97881b6320d127b354b8cb03937504683a7f18 NEEDED HID: multitouch: Add support for button type usage +554fc470460c6c4d94f202a8a73f24491bc9f0f7 NEEDED HID: multitouch: add support of clickpads +e098a93f8c11db119261d5c4791d4f9c62c666e8 NEEDED:debian UBUNTU: fix up changelog for rebase +c0b0bccbe70c7d602c114871d1e1ce42c478f6dc NEEDED:debian UBUNTU: rebase to v3.19.2 +9e086fc3fb3d7f09d4dacfccab0784812ef78764 NEEDED:debian UBUNTU: [Config] CONFIG_KVM_GENERIC_DIRTYLOG_READ_PROTECT=y +0335b4283d02dcd6e7d6b54e175801099873852e NEEDED KVM: VMX: Add PML support in VMX +9fa8950638aac15e1273204c9c76447524236345 IGNORE:IN:88178fd4f7187bbe290c5d373fd44aabec891934 KVM: x86: Add new dirty logging kvm_x86_ops for PML +540b4deed1133b94ba9665ca1c5bdf692fc32c5b IGNORE:IN:1c91cad42366ce0799ca17e7ad6995418741d012 KVM: x86: Change parameter of kvm_mmu_slot_remove_write_access +9cd0789cd13fe6ceb057b6ee0a9a8089e3d085d0 IGNORE:IN:9b51a63024bd759f97a12f50907b8af23b065b36 KVM: MMU: Explicitly set D-bit for writable spte. +d06b40dc692080da03fd5fa3f19aa6c3d201cb38 IGNORE:IN:f4b4b1808690c37c7c703d43789c1988c5e7fdeb KVM: MMU: Add mmu help functions to support PML +ec2347761088c13ec640886cb492e4d4f8aee759 NEEDED KVM: Rename kvm_arch_mmu_write_protect_pt_masked to be more generic for log dirty +7b476333c9fd20d2be03eba64339df96a6d326d6 IGNORE:IN:e108ff2f8033a417ee3e517d9f8730f665646076 KVM: x86: switch to kvm_get_dirty_log_protect +9a9ab8a2348c722405964a0c785c4b2a613d8782 NEEDED KVM: Add generic support for dirty page logging +baddf7f579e3094b7b32c119fae9bb1b4ac557c5 IGNORE:IN:d91ffee9ec633c6523ef1ea39c36ace578760258 Optimize TLB flush in kvm_mmu_slot_remove_write_access. +e824a2cfa15c76aefc09dcd0157ee31a565b2cb3 IGNORE:IN:7e71a59b250330fd52ee7293eb9d31952f16682e KVM: x86: flush TLB when D bit is manually changed. +7e9a6608ca11948dd0996b6db99e498ca043a0cd NEEDED tools/power turbostat: support additional Broadwell model +827aac896a47cdfbc19679d4e14dc269fd0ac846 IGNORE:IN:bea57077e44ec9c1e6d3a3c142c8a3c0289e290d intel_idle: support additional Broadwell model +3057d6279a10157e6bd1ab7148ef4fc2ccb14d6d IGNORE:IN:3df76a9dcc74d5f012b94ea01ed6e7aaf8362c5a powerpc/pseries: Fix endian problems with LE migration +dba28dfc35d65493b65d7d4bf382e09297ef9bb4 IGNORE:IN:4ad04e5987115ece5fa8a0cf1dc72fcd4707e33e powerpc/iommu: Remove IOMMU device references via bus notifier +f9f283435213397957099d1a66a3a0d5bede3528 IGNORE:IN:5c65670c9bfa3be1234d29f36b742897c0360ef3 powerpc/perf/hv-24x7: Document sysfs event description entries +179039e2ee295381d24a1832349100569ca96acb IGNORE:IN:97bf2640184f4fb2b2bf2c58ae3112768a6174fa powerpc/perf/hv-gpci: add the remaining gpci requests +eb14eac49af21beac96d0933103b0e329ed4b2be IGNORE:IN:9e9f60108423f18a99c9cc93ef7f23490ecc709b powerpc/perf/{hv-gpci, hv-common}: generate requests with counters annotated +23b8dd8e12de9f1268a1ecb18a1ec9d157444cfa IGNORE:IN:5c5cd7b502595f6b90509b8aa4bba6f81b69315c powerpc/perf/hv-24x7: parse catalog and populate sysfs with events +0a72cae7a37a649fb997835c99a93711254210c9 IGNORE:IN:e08e52824e41fb42e46593450d378ad1b33caedb perf: define EVENT_DEFINE_RANGE_FORMAT_LITE helper +06aa2a9afd745edcb3c3b80eec10c0cf6795cfc0 IGNORE:IN:f0405b816149665393cc62b9e5082fc2d79714df perf: add PMU_EVENT_ATTR_STRING() helper +e38b3e25ccd090c3be55addc72746ffea85e26fd IGNORE:IN:fd979c0132074856975a6e79bc2226b99435ec5b perf: provide sysfs_show for struct perf_pmu_events_attr +0512d012693ab7696fc390aa58e38623f774e8f0 IGNORE:IN:f9ab9c196d015f3bd8f6bd1c30785c5a49542323 perf tools: Document parameterized and symbolic events +914c3ae025813d3868fddac5e7f63eef89a1f77c IGNORE:IN:98a43e0e9917059da32db89829b0eb95453a11ee perf Documentation: Add event parameters +59c3fddc383e9d02e6ae04cbd9247d626f6acc90 IGNORE:IN:aaea36174991ff39c7a18044660db86527100c55 perf tools: Extend format_alias() to include event parameters +7ee609fce3a1aa657c3613b985dc62f1a45acaf0 IGNORE:IN:688d4dfcdd624192cbf03c08402e444d1d11f294 perf tools: Support parsing parameterized events +1d74db86f07ee680a466ae02b460e164aa58a38a NEEDED:debian UBUNTU: [Packaging] generate live watchdog blacklists +6b5949d8cf32e576a5892472a7826545d94292a4 NEEDED:debian UBUNTU: Start new release +a705b4e4855e7b484ed11831941fb7093a12d660 IGNORE:IN:285994a62c80f1d72c6924282bcb59608098d5ec arm64: Invalidate the TLB corresponding to intermediate page table levels +fef4b02b6f20e9cbb50522916a4fd079ed821c07 IGNORE:IN:1b0eb5bc241354aa854671fdf02132d2d1452bdf thinkpad_acpi: support new BIOS version string pattern +572a605fa5352dcb8a8cc982bbdb998f752aea07 NEEDED:debian UBUNTU: [Config] allow dracult to support initramfs as well +727f017959487a34dd3c14659306b869545348a5 NEEDED:debian UBUNTU: [Packaging] control -- make element ordering deterministic +6a501ec1a8e49e7b9869fed950bd1642dd1b68af NEEDED:debian UBUNTU: Ubuntu-3.19.0-9.9 +57165ece4262217e644bc0577bf9ccd5e452f2da NEEDED UBUNTU: SAUCE: IB/core: Prevent integer overflow in ib_umem_get address arithmetic +4815357c48175b96d4bc67dfbd6c4fb30bb4d714 NEEDED:debian UBUNTU: Start new release +03247c64299523710c3935227d1a7e28aeb34a97 NEEDED:debian UBUNTU: Ubuntu-3.19.0-8.8 +36ca906c4d4cf34bb5a750d1dbd3e4abe36a4684 NEEDED UBUNTU: SAUCE: (no-up): apparmor: fix mediation of fs unix sockets +c34820ce1a87b536c2da84daf892e884de7f3067 IGNORE:IN:d0af71a3573f1217b140c60b66f1a9b335fb058b tg3: Hold tp->lock before calling tg3_halt() from tg3_init_one() +420ed2b6622aa62d962e770422f887e38ede78ac IGNORE:IN:0cd9302734111abc0b5912b695336f2ee63cb22b net/mlx4_core: Reset flow activation upon SRIOV fatal command cases +441e06e149e10acf3fa4497ae041f79f75a97c23 IGNORE:IN:55ad359225b2232b9b8f04a0dfa169bd3a7d86d2 net/mlx4_core: Enable device recovery flow with SRIOV +6aa4bcac4501cbf723abbc1b49f22b113c7323f9 IGNORE:IN:2ba5fbd62b2534335f4e3b844ecc7860115525a3 net/mlx4_core: Handle AER flow properly +a1b81382798563ef9092cad425cccc1e2fc2626e IGNORE:IN:c69453e294c9f16da977b68e658a8028b854c209 net/mlx4_core: Manage interface state for Reset flow cases +da98e7467248aae377055c75b6380aa5f3f075ec IGNORE:IN:f5aef5aa35063f2b45c3605871cd525d0cb7fb7a net/mlx4_core: Activate reset flow upon fatal command cases +9a583f4441d28f7b034a2eaaa3aeacdddc0ec65a IGNORE:IN:f6bc11e42646e661e699a5593cbd1e9dba7191d0 net/mlx4_core: Enhance the catas flow to support device reset +5e52f6741b9fe61696f882effa83021eb013bb2e IGNORE:IN:ad9a0bf08ffbf32b8f292c3bb78ca0f24bb8f6b2 net/mlx4_core: Refactor the catas flow to work per device +efee37c90fa0d7f1704ea59bcc47b8590b5cf7ca IGNORE:IN:dd0eefe3abbf47442db296bf68f27eb2860c1cdf net/mlx4_core: Set device configuration data to be persistent across reset +6b610659f8b313644c0012a511c6381e9fe7d881 NEEDED net/mlx4_core: Maintain a persistent memory for mlx4 device +7ec323466d993094545e140cc44559cb1cccbd14 NEEDED tpm/ibmvtpm: Additional LE support for tpm_ibmvtpm_send +dd82e0b3366c0583f66daa1e6fd229e24468d615 IGNORE:IN:de61390cb3e03186f85997fe08a11dcb9f7a01a3 net/mlx5_core: Fix configuration of log_uar_page_sz +aa391baed594091165eefe21e759f0604dd66c0a NEEDED:debian UBUNTU: rebase to stable v3.19.1 +7eaea45f7109a1e769d5379352e40b13e1b5d6d6 NEEDED:debian UBUNTU: Start new release +a1ab7786a77235d3fe40ef93e239d26ad095f8c6 NEEDED:ubuntu-driver UBUNTU: ubuntu: vbox -- elide the new symlinks and reconstruct on clean: +e9f926b44c895d39152d3f816ce9ff37780f77cb NEEDED xen: correct bug in p2m list initialization +e253864af74e9fd0dbb79c6a1b9ab117d335a006 NEEDED:debian UBUNTU: Ubuntu-3.19.0-7.7 +da9ed9fbcffe22ad779cd0f9e63cae8125870f4c NEEDED:debian UBUNTU: Start new release +a3efc506086bfc1770015e3a1545d708464dccbc IGNORE:IN:1b28f170d99170a1fdd22818a9610a73196b391d powerpc/eeh: Allow to set maximal frozen times +d2616b0dfec986efcea32f5a7907bb67334fee40 IGNORE:IN:432227e9077eec13b3caf3aec6087f94a2f4327f powerpc/eeh: Introduce flag EEH_PE_REMOVED +0d7adce37648ab16e146c07998c86f929933ced2 IGNORE:IN:3d5be0392f52489b7572903d83f1f267f26e6b69 cxl: Fail AFU initialisation if an invalid configuration record is found +4406598cf9db984056879f543a1dbd0580589fc5 IGNORE:IN:b087e6190ddcd9ae4e8ff2c788d2b32f193e946b cxl: Export optional AFU configuration record in sysfs +9810a8574ecb496bdb6805df46ef040889279489 IGNORE:IN:62fa19d4b4fd781ad37c9155c6332f28a9e97a2c cxl: Add ability to reset the card +e0479a12aa4aceb678db96257318102e165127dc IGNORE:IN:1212aa1c8c9ca34642f7737e1edaa96c9ce3d7dd cxl: Enable CAPP recovery +047163114be9cf5d4fd9ad368b6c0f8f18c177d8 IGNORE:IN:95bc11bcd1428afdb48400ec84dc6d5a83926138 cxl: Add image control to sysfs +211238b75962ee2b4ddcb1648b94fd2d11464b64 IGNORE:IN:49fd644c3b0014fb80c2b1db7d8c86a75c4c6b1f cxl: Update CXL ABI documentation +ef2cf73ffe825cb6e5350972edb6ef989f7c019b IGNORE:IN:9bcf28cdb28e6a793c4e59f0a42c66fe241993a8 cxl: Add tracepoints +bb463fd6632c70d258c46e08a49dbd8ed90b6662 IGNORE:IN:d3383aaae9800b9e13e25b71f70dff3814d10373 cxl: remove redundant increment of hwirq +50419f397e513bb53fd3a43953ddf97e344b1f9e IGNORE:IN:db7933f392ac4d9719d41d3f203a5f6a1c40f300 cxl: Disable SPAP register when freeing SPA +1a4659245b032feb290aa890a831fe6db8cce677 IGNORE:IN:d6a6af2c181400aade59417e698c7cd9bec8804e cxl: Disable AFU debug flag +9e024f9abf9a7bb11c8812ad8f4baac2542b41a4 IGNORE:IN:13da704682471669685ccc3fe111fd6c0127b2eb cxl: Early return from cxl_handle_fault for a shut down context +b745d4388fd7f150d8c27239a107acc4769c3a55 IGNORE:IN:456295e284beb7b61a55ead9500d30f94ab06d52 cxl: Fix leaking interrupts if attach process fails +aa79645da2c295c7a54a38d727ba5424c56e8c78 NEEDED:debian UBUNTU: Ubuntu-3.19.0-6.6 +2506464009b6efd8886841fd42aa35dd276e1ae2 NEEDED:ubuntu-driver UBUNTU: ubuntu: vbox -- update to 4.3.22-dfsg-1 +0af35a1df1616ee3af688b8f6811ea980b4ba105 NEEDED:debian UBUNTU: [Config] move vbox modules into linux-image +591572a04b2929501bfd944f0e1b5dc918d905c2 NEEDED:debian UBUNTU: Disable module check for I2C_CHARDEV=y config change +ded3e335312faf2066f1a293bc34612f20c7075a NEEDED:debian UBUNTU: [Config] I2C_CHARDEV=y +6d41878ad435f83f107290bd47da1cae88a5960e NEEDED:debian UBUNTU: Start new release +af9f67abe58ef01a0e38809dbf9dc9b579d6f729 NEEDED:debian UBUNTU: systemd -- fix hyper-v units to be non-forking +e06b795ba62bfe38b378a77df6aa1f4e4b4be003 NEEDED:debian UBUNTU: SAUCE: DEP8 test to run our regression tests +a651bfbc176a850449052a44a8f99cb298cb49f0 NEEDED:debian UBUNTU: Ubuntu-3.19.0-5.5 +65c15025855e39b160ced2bfd9cee0233e9eb5bd NEEDED:debian UBUNTU: rebase to v3.19 final +00b14848d0ba3d47a244bbe142f4aec6abc6ad8a NEEDED:debian UBUNTU: Start new release +e3963bddd383dbb567b6e9a3b6d1229b335be7c9 NEEDED:ubuntu-driver UBUNTU: ubuntu: vbox -- update to 4.3.20-dfsg-1ubuntu1 +5dde1b4a9a0dcbff893ba69c97bc8e9af5aeced4 NEEDED:ubuntu-driver UBUNTU: ubuntu: (no-squash) vbox -- infrastructure and updater +4ac4ed6aaaabccd3113d12d2aae4227eeed2a94d NEEDED UBUNTU: SAUCE: ext4: disable ext4_punch_hole for indirect filesystems +20f73500aa3c6973b662d434ea994a067d2732ce NEEDED:debian UBUNTU: [Config] Add ibmvfc to d-i +27016d13d7def2d932edabe10cda08551eb76af4 NEEDED:debian UBUNTU: [Config] CONFIG_FA_DUMP=y +043037877a7de2b8e6b2dff0420efe45ecff2ff5 NEEDED:debian UBUNTU: Ubuntu-3.19.0-4.4 +5dacd4f7dba5435e1b960bdc491293c82ee3ec2f NEEDED:debian UBUNTU: updateconfigs following rebase to v3.19-rc7 +9eade02480702c9670f2bac1bd55d38545a312cf NEEDED:debian UBUNTU: rebase to v3.19-rc7 +28f33eab58fbe7473e6ef7273c82f6b46108bd19 NEEDED:debian UBUNTU: Start new release +113ccff71d64d15da62001f597421ead251c70a8 NEEDED:debian UBUNTU: hyper-v -- fix comment handing in /etc/network/interfaces +2df9364c2056a3043e10cd5a62ce9706b2f7d1d1 NEEDED UBUNTU: SAUCE: rtsx_usb_ms: Use msleep_interruptible() in polling loop +88065e99f0f6bcf3dc4631a2ceec2f2708af8cef NEEDED:debian UBUNTU: [Config] apply Kernel hacking >> Tracers config defaults +0d569c89d78dfe8145fbeebe5249f794a9d0f552 NEEDED:debian UBUNTU: Ubuntu-3.19.0-3.3 +c0a8e98a3847348d78a54c944d202137d068b94d NEEDED:debian UBUNTU: annotations -- pull in updated annotations +25a4fc67cec440d3bb4bc7705449df08e6c51858 NEEDED:debian UBUNTU: [Config] updateconfigs following rebase to v3.19-rc6 +7c37badc321d561bbd2f178669119c919ff20522 NEEDED:debian UBUNTU: rebase to v3.19-rc6 +4b617281c437581c70f6cf2334398bb1ab1c0340 NEEDED:debian UBUNTU: [Config] apply Device Drivers >> Mailbox Hardware Support config defaults +32d6900d5dc2578bdb1627edfeed21e631a31e60 NEEDED:debian UBUNTU: [Config] apply General setup >> CPU/Task time and stats accounting >> Cputime accounting config defaults +cd6b5ebc39722a4e376e47f1d48a0e46286ff308 NEEDED:debian UBUNTU: [Config] apply Device Drivers >> SCSI device support >> SCSI device support >> SCSI low-level drivers config defaults +c8a2a8aae37f1474453bea69acbf95c396227e31 NEEDED:debian UBUNTU: [Config] apply Device Drivers >> Real Time Clock config defaults +a74fa91f9105e69fd2b101d914ab503ef67dd227 NEEDED:debian UBUNTU: [Config] apply Device Drivers >> Network device support >> Wireless LAN >> Intel Wireless WiFi Next Gen AGN - Wireless-N/Advanced-N/Ultimate-N (iwlwifi) config defaults +fe8ce4f67a26106dab3193b3515fe865e136ab4a NEEDED UBUNTU: SAUCE: arm64 -- psci tell the compiler which registers we are needing values in +2f02ebe61ad44b1175700cc78a3ccd94bb07ff06 NEEDED:debian UBUNTU: [Packaging] force "dpkg-source -I -i" behavior +5a6bf13232cd325e73e6ebae516cac9b0da4421c NEEDED:debian UBUNTU: [Config] apply General setup >> Timers subsystem >> Timer tick handling config defaults +d3d0add00f0801e6823242d1c7bd41c990eb05bb NEEDED:debian UBUNTU: [Config] apply Kernel hacking >> Kernel debugging config defaults +3b255c82446a97f59e59adb3bd320df4550c1381 NEEDED:debian UBUNTU: [Config] apply Networking support >> Networking options >> Network packet filtering framework (Netfilter) >> IPv6: Netfilter Configuration >> IPv6 NAT config defaults +3549c0af6717159aa8a3b77864dde9b341476b1b NEEDED:debian UBUNTU: [Config] apply Networking support >> Networking options >> Network packet filtering framework (Netfilter) >> IP: Netfilter Configuration >> IPv4 NAT config defaults +76fb94fa938323cea755f08923c1699f857849a4 NEEDED:debian UBUNTU: [Config] apply Device Drivers >> Pulse-Width Modulation (PWM) Support config defaults +91aa3e3c5f375fcda9802e0bf30743388db97809 NEEDED:debian UBUNTU: [Config] apply Device Drivers >> Input device support >> Generic input layer (needed for keyboard, mouse, ...) >> Mice config defaults +7e28f1d5b0f539c2f315248d638d322cc1bed204 NEEDED:debian UBUNTU: [Config] apply Device Drivers >> Input device support >> Generic input layer (needed for keyboard, mouse, ...) >> Keyboards config defaults +83d976c317bc7939457ba2b194ca9b20942b08e8 NEEDED:debian UBUNTU: [Config] apply Networking support >> Wireless >> Generic IEEE 802.11 Networking Stack (mac80211) config defaults +a6ff3e7b7835019303b4df16c7d34e83f7bc432f NEEDED:debian UBUNTU: [Config] apply Networking support >> Networking options >> TCP/IP networking config defaults +fff6ce5d257e3a55676ab2f32f7174648b48bd4d NEEDED:debian UBUNTU: [Config] apply Networking support >> Networking options >> QoS and/or fair queueing >> Actions config defaults +3db2706fa00266f41b26ac6156b92cc92013c4b6 NEEDED:debian UBUNTU: [Config] apply Networking support >> Networking options >> Network packet filtering framework (Netfilter) >> Core Netfilter Configuration >> Netfilter nf_tables support config defaults +d379025cb43c73ba0ba6b1e9ae7030ef3706acbb NEEDED:debian UBUNTU: [Config] apply Networking support >> NFC subsystem support >> Near Field Communication (NFC) devices config defaults +d682b0866fdab7676efc02d7aca31ffba5af5ba9 NEEDED:debian UBUNTU: [Config] apply Device Drivers >> USB support >> USB Gadget Support >> USB Peripheral Controller config defaults +cc6d21036b39e6747f35992743390b46f490ef71 NEEDED:debian UBUNTU: [Config] apply Device Drivers >> USB support >> USB Gadget Support >> USB Gadget Drivers >> USB functions configurable through configfs config defaults +f38ce7164ddb54b46a19ed6e3640d5e21f968aff NEEDED:debian UBUNTU: [Config] apply Device Drivers >> Staging drivers >> Media staging drivers config defaults +f2e32d3fe36a5af721325ad09244872f55783932 NEEDED:debian UBUNTU: [Config] apply Device Drivers >> Staging drivers >> Lustre file system client support config defaults +3fa3a6e3f9bc72ccf4050d5278d82c4f18fa614c NEEDED:debian UBUNTU: [Config] apply Device Drivers >> Sound card support >> Advanced Linux Sound Architecture >> HD-Audio config defaults +7483bb4ddb3800421bf67db6f57e9a2ad68aede9 NEEDED:debian UBUNTU: [Config] apply Device Drivers >> Sound card support >> Advanced Linux Sound Architecture >> FireWire sound devices config defaults +bb035568140e5726260cbffc40900186503e066e NEEDED:debian UBUNTU: [Config] apply Device Drivers >> Sound card support >> Advanced Linux Sound Architecture >> ALSA for SoC audio support config defaults +5857964914cdeedb945ef65490afa1353f0e7d06 NEEDED:debian UBUNTU: [Config] apply Device Drivers >> SPI support config defaults +67356ed062d29becaaf27108aa8737fee13cab69 NEEDED:debian UBUNTU: [Config] apply Device Drivers >> Pin controllers config defaults +fdab45aa9ebd2c87af7ad88b62c557a9ddaf06eb NEEDED:debian UBUNTU: [Config] apply Device Drivers >> PHY Subsystem config defaults +be26a7664fe53b25132a1570e7cb572cdfaf8f03 NEEDED:debian UBUNTU: [Config] apply Device Drivers >> Network device support >> Wireless LAN >> Intel PRO/Wireless 2200BG and 2915ABG Network Connection config defaults +664ad4582ac5f69f585defe21f75a44efdc5def9 NEEDED:debian UBUNTU: [Config] apply Device Drivers >> Network device support >> Wireless LAN >> Hermes chipset 802.11b support (Orinoco/Prism2/Symbol) config defaults +7abff1caa5b128105a095b294a4084d58eb4208a NEEDED:debian UBUNTU: [Config] apply Device Drivers >> Network device support >> Network core driver support config defaults +b85516a587125164e4fb6f40a937687859484278 NEEDED:debian UBUNTU: [Config] apply Device Drivers >> Network device support >> Distributed Switch Architecture drivers config defaults +6eeec6ead3c181f9d305a5139a2af09ab02d25e2 NEEDED:debian UBUNTU: [Config] apply Device Drivers >> Multimedia support >> Remote Controller devices config defaults +9bf5422ec87618ea0a9c158e2ee3ea763769635e NEEDED:debian UBUNTU: [Config] apply Device Drivers >> Multimedia support >> Media PCI Adapters config defaults +0062486c5f49ca81ce44c08483793cd28bd55d4e NEEDED:debian UBUNTU: [Config] apply Device Drivers >> Multimedia support >> Cameras/video grabbers support >> Media test drivers config defaults +a3cab812b888b76a1c6188d51837461f82579107 NEEDED:debian UBUNTU: [Config] apply Device Drivers >> Multifunction device drivers config defaults +efce9b94895b00d4246281051a6f57abd556b593 NEEDED:debian UBUNTU: [Config] apply Device Drivers >> MMC/SD/SDIO card support config defaults +ba5f91a1915102862b13b8c73223662536b6ff51 NEEDED:debian UBUNTU: [Config] apply Device Drivers >> LED Support >> LED Class Support config defaults +5a655a22455c44e92b820d86de5f1eff080d44a1 NEEDED:debian UBUNTU: [Config] apply Device Drivers >> Input device support >> Generic input layer (needed for keyboard, mouse, ...) >> Touchscreens config defaults +2dc2403265124b82af4a57da628cb21bafbab54a NEEDED:debian UBUNTU: [Config] apply Device Drivers >> Input device support >> Generic input layer (needed for keyboard, mouse, ...) >> Mice config defaults +9fe17395d411adbcfb323c915f84ea85f4c48ce8 NEEDED:debian UBUNTU: [Config] apply Device Drivers >> Industrial I/O support >> Pressure sensors config defaults +5e7b068f32db503c6eb371a23ae2c2a16749578f NEEDED:debian UBUNTU: [Config] apply Device Drivers >> Industrial I/O support >> Humidity sensors config defaults +20e5409f0457d28d2abca5ef7c1630dc22d84813 NEEDED:debian UBUNTU: [Config] apply Device Drivers >> Industrial I/O support >> Analog to digital converters config defaults +7ae44769248078c8d1ba362fcf3de16b8ab681ab NEEDED:debian UBUNTU: [Config] apply Device Drivers >> I2C support >> I2C support >> I2C Hardware Bus support config defaults +581c6acbf122138da27108c2a13098d6815349df NEEDED:debian UBUNTU: [Config] apply Device Drivers >> Hardware Monitoring support config defaults +2e33cbcfe6451f61ae18aeec37fe1753d0a52cc2 NEEDED:debian UBUNTU: [Config] apply Device Drivers >> HID support >> HID bus support >> Special HID drivers config defaults +02139708b965f07a499593f9036750c30fbe6454 NEEDED:debian UBUNTU: [Config] apply Device Drivers >> Graphics support >> Frame buffer Devices >> Support for frame buffer devices config defaults +a86fe195e825e37e694a5960f7af6ddfbf9f3673 NEEDED:debian UBUNTU: [Config] apply Device Drivers >> Graphics support >> Direct Rendering Manager >> Direct Rendering Manager (XFree86 4.1.0 and higher DRI support) config defaults +0d10ef98e5bb7c1fb144139e54e13d0051d6f5e4 NEEDED:debian UBUNTU: [Config] apply Device Drivers >> GPIO Support config defaults +0c423ad9c578e7596de1409cbfd2db4d5b988cd2 NEEDED:debian UBUNTU: [Config] apply Device Drivers >> Character devices >> Serial drivers config defaults +58007d9583eaf94442bcaf472d4e69c8dc24cf61 NEEDED:debian UBUNTU: [Config] apply Device Drivers >> Character devices >> IPMI top-level message handler config defaults +429394f5a6c855973e6027edbf8811d94f2e54d7 NEEDED:debian UBUNTU: [Config] Disable CONFIG_USB_OTG +7676b5cebdfe24bebfe402c85ce7d232f76fe756 NEEDED:debian UBUNTU: [Config] CONFIG_DEBUG_INFO_SPLIT=n +66857d56aa24e2eff079df005f0d189060d68645 NEEDED:debian UBUNTU: [Config] annotations: clean up CONFIG_FW_LOADER_USER_HELPER_FALLBACK and associates +17fde7fa97d8da20c499e37ff9615895623adb8e NEEDED:debian UBUNTU: annotations: add new v3.19-rc5 options (and some returning options) +3fd5011f880877a583b1ccefd06ad481452cdef7 NEEDED overlay: add backwards compatible overlayfs format support (fixes) +7c3d7c6d8df09db4b2f6be809434232021d9305f NEEDED:debian UBUNTU: [Packaging] hyper-v -- daemons now require -n for non-forking startup +e3defbff069c0d1afa9c30ecdb2cfbd3776c16eb NEEDED:debian UBUNTU: [Config] enforce CONFIG_FHANDLE=y +b4d80bddacd59441e76e4f4b750154f1a95736a6 NEEDED:debian UBUNTU: annotations -- reorder pass +ed8c877b843aeaa7fe38947d0bdbf15ef9405f27 NEEDED:debian UBUNTU: [Config] updateconfigs following rebase to v3.19-rc5 +9dd6f68702869ea7ee4219aeeba148bd11e9e211 NEEDED:debian UBUNTU: [Config] add modules removed due to tighter dependencies +c3d1971989ed55f56aaa0bd882611d8c228cbc05 NEEDED:debian UBUNTU: rebase to v3.19-rc5 +07d995fd618003c3e4663f2e58b73318fa442c32 NEEDED:debian UBUNTU: Start new release +610b443e33e236074875db94a42ed8d8190951f6 NEEDED:debian UBUNTU: [Packaging] enforce -- drop empty enforce file +1dd97225d642eaa32460873d90a53c58aa11e243 NEEDED:debian UBUNTU: [Packaging] config-check -- drop support for enforce file +129becf2ef8faffe61100ef5f6435d3bd396265c NEEDED:debian UBUNTU: [Config] annotations -- switch to ENFORCED annotations +561c8f3a1941d2895a150b5780def64b5b8fa5b4 NEEDED:debian UBUNTU: [Packaging] config-check -- add support for enforced annotations +33ea0bf33a842aa5d8f826f3be477a7b1fd7b8fa NEEDED:debian UBUNTU: annotations -- full v3.17/v3.18/v3.19 review pass +eee1ca9895f0a19241010cea3ef7b5c87bbc3cc9 NEEDED:debian UBUNTU: annotations -- reorder to vivid menu layout +57ccd817353c91a6b5ed620db15e86315251e1a9 NEEDED:debian UBUNTU: annotations -- utopic base +5a62a2f9705b70bdf6a1a0870d15903016411c5c NEEDED UBUNTU: [Debian] arm64 -- build ubuntu drivers +a58e808c17a895c7c3698bee63172114790a6d88 NEEDED:debian UBUNTU: Ubuntu-3.19.0-2.2 +d8db9694361b258427eab1846b211be332c4a1f9 NEEDED UBUNTU: SAUCE: efi: Expose underlying UEFI firmware platform size to userland +c0b5915ac61b6c49e27fecf6ba8f62cc2d17297b NEEDED:debian UBUNTU: add missing buglink in unreleased versions +80ac0a8626c33921522e59e258a0bcee0fac6620 NEEDED:debian UBUNTU: [Config] switch on "all" dtbs +f5c5c728204613d98677cecfa499451a43c316d9 NEEDED:debian UBUNTU: [Packaging] install all dtb files +4594c0a5b120fc92fb141c1cf9eef3e8d665e4e6 NEEDED UBUNTU: SAUCE: storvsc: force SPC-3 compliance on win8 and win8 r2 hosts +2db975f991de109cb558a88b821aee4ab32294b9 NEEDED:debian UBUNTU: [Config] updateconfigs following rebase to v3.19-rc4 +efda5ea3e72181c54313960c4eb623cb9bf70184 NEEDED:debian UBUNTU: rebase to v3.19-rc4 +3ceca000c3f419e4ea82d5cc89b17788311e066a NEEDED:debian UBUNTU: [Config] Enable CONFIG_N_GSM as module. +6d976353cda7b65cd3bccc025fd676a2b60be71e NEEDED UBUNTU: SAUCE: drivers/rtc/interface.c: ignore exprired times when enqueing new timers +c2b14cbdd9db02c941b1a201ea7de7cbefd042a5 NEEDED:debian UBUNTU: Start new release +7e4ee90affaec9dfd96c8c527e410e37e60e7cdd NEEDED:debian UBUNTU: Ubuntu-3.19.0-1.1 +07d5adb10aa7995e36b1c3fb063b1db97e0744bb NEEDED:debian UBUNTU: [Config] follow move of arm64 dts' into vendor directories +c73a0ec29f0772426f60c0e5e4c660a5f49c2963 NEEDED:debian UBUNTU: [Packaging] handle dts directories +c8f77b2dd48cc6a6bcce49411b546aefa08c799c NEEDED:debian UBUNTU: [Packaging] uploadnum should be the remainder of the version +50a8041a37110aa8867a493b624aa6bf409acb93 NEEDED:debian UBUNTU: [Configs] updateconfigs following rebase to v3.19-rc3 +afa910e643c7b399c3cdd8312d84b65d1c64d197 NEEDED:debian UBUNTU: rebase to v3.19-rc3 +732f3e48b565abe6e7fd7f489edb3bc88e68581c NEEDED:debian UBUNTU: v3.19 series start +ea0064b7d9878d01ec4653e528c9b998b4ae10b5 NEEDED:debian UBUNTU: [Configs] updateconfigs following aufs update +13055ff9195392d6f1d8cc9065079147efd15b2e NEEDED:ubuntu-driver UBUNTU: ubuntu: AUFS -- update to 92ad9cc8bd289bf8e59b6bd8d83137d8e1a58c1c +3df26820282895c299dffb25972f584721ea75c1 NEEDED:ubuntu-driver UBUNTU: ubuntu: AUFS -- substrate: aufs3-standalone.patch +b9579ed6992d02cd55e4d94a13be89c32ce84ff5 NEEDED:ubuntu-driver UBUNTU: ubuntu: AUFS -- substrate: aufs3-mmap.patch +b39b7e7301c7723004985b773bcfb74fbfb4eabb NEEDED:ubuntu-driver UBUNTU: ubuntu: AUFS -- substrate: aufs3-base.patch +e08ec9211daa19f663ab406848b5df2271eac1d4 IGNORE:revert Revert "UBUNTU: SAUCE: AUFS -- aufs3-base.patch" +4a9009a9ae4027ec12dd6313fd18a8bb56bf4918 IGNORE:revert Revert "UBUNTU: SAUCE: AUFS -- aufs3-mmap.patch" +6ae8ad7291b70e01d11bf753e5e79d5b5aeee7fb IGNORE:revert Revert "UBUNTU: SAUCE: AUFS -- aufs3-standalone.patch" +241d2270754f4ab7d90d52324a7c8a85be88aca7 NEEDED:debian UBUNTU: disable module checks for rebase +9defa41f9126d026cd6a1ead03e6443e98e97108 NEEDED UBUNTU: apparmor -- follow change to this_cpu_ptr +caae90a5781f1d312b91fe44839c56009f2e0eb3 NEEDED:ubuntu-driver UBUNTU: ubuntu: aufs3 -- follow rename for d_alias +401119f392cb5bd61918659f9a20ab2ae54934e7 NEEDED:ubuntu-driver UBUNTU: ubuntu: aufs3 -- follow switch to get_unused_fd_flags() +78df37e096365062f950d01f27dacf143ba57276 NEEDED:ubuntu-driver UBUNTU: ubuntu: aufs3 -- follow switch to d_splice_alias +ca8d1a7503192dd5b9c1197eae4ea6be8f36ae81 NEEDED:ubuntu-driver UBUNTU: ubuntu: aufs3 -- follow rename of d_child +388a35e8069f8657310c7f00d9062989da94b49d NEEDED:debian UBUNTU: [Config] defaultconfigs following rebase to v3.19-rc2 +e08b74c9afcc53d50a3c8ebe43e3b8cb60f2aa61 NEEDED:debian UBUNTU: rebase to v3.19-rc2 +a8d99914420de484583f3ef7327d603cce40fd3a NEEDED:debian UBUNTU: rebase to v3.19-rc1 +0373477d240b8de65a1b6f8596f1b55e61eb7871 NEEDED:ubuntu-driver UBUNTU: ubuntu: AUFS3 -- follow switch to vfs_fallocate +817e01310fbcc1932419860833d9bba41e8d21a9 NEEDED:debian UBUNTU: Start new release +685154a8fd43a024cc3f671d85c36158717c0f0c NEEDED arm64: optimized copy_to_user and copy_from_user assembly code +980f00986e35f630c7bb18065836e3b2f518f7a2 NEEDED:debian UBUNTU: Ubuntu-3.18.0-7.8 +eef49554443cc3c5bf71b7f5aa500dce3ab3e0d0 NEEDED:debian UBUNTU: [config] set apparmor config options +8a91a5705046dca1c9972ce2a76714edc837e367 NEEDED UBUNTU: SAUCE: (no-up) apparmor: add parameter to control whether policy hashing is used +e1b6a4b88bdb9cf858e068d0e3a6b7449d648513 NEEDED UBUNTU: SAUCE: (no-up) fix: bad unix_addr_fs macro +892b8b7cfb14b9bdfbc9ac2fee8e751a67707542 NEEDED UBUNTU: SAUCE: Revert: fix: only allow a single threaded process to ... +98c64db6cffd59a894d4a4492aea761fa6e6c51a NEEDED UBUNTU: SAUCE: (no-up) apparmor: Sync to apparmor3 - RC1 snapshot +178a99413c26c359c7ea63c23b70c14238c72c9e NEEDED:debian UBUNTU: [Config] CONFIG_FW_LOADER_USER_HELPER_FALLBACK=n +0e7cd75372d106d02b3f03f9a2e6496782e39102 NEEDED:debian UBUNTU: Start new release +354c399098d730724d47572411db3966640b886d NEEDED:debian UBUNTU: Ubuntu-3.18.0-6.7 +70f41850210ae054ddddd3cdb3c8c6b80d26fef9 NEEDED:debian UBUNTU: [Config] CONFIG_PCIEASPM_DEBUG=y +69d6e475d4b184e691fde6bb6173b0b2a78f95ee NEEDED:debian UBUNTU: [Config] armhf: VIRTIO_[BALLOON|MMIO]=y +e7248dea9798e37ed9136c0234e60c5d3724a09a NEEDED:debian UBUNTU: rebase to v3.18 +c08cb8bf95c2175a3c0d3916a3a95bb865516303 NEEDED:debian UBUNTU: Start new release +5de9e13b14877580032ab92fb008417493ad5ab6 NEEDED:debian UBUNTU: Ubuntu-3.18.0-5.6 +f0c21c519145ef0374be78d7f3562691dae45800 NEEDED:debian UBUNTU: rebase to v3.18-rc7 +e74900777be8a73fd3d07669414bd103c385d2ce NEEDED:debian UBUNTU: [Config] CONFIG_SCSI_MQ_DEFAULT=n +58dfe08f9155f1821f7a0659bcb9c869d4e5ac73 NEEDED:debian UBUNTU: Start new release +10dd9a851640f6ab60c78594bbff79d76dbb2488 NEEDED:debian UBUNTU: [Config] CONFIG_SCOM_DEBUGFS=y for powerpc/powerpc64-smp ppc64el/generic +9b1c8ecc6c86e71fab6d15bd84bd1628aae6cd2e NEEDED:debian UBUNTU: Ubuntu-3.18.0-4.5 +ea3282297f6f3af23009d7a400b35b73c3c10ac8 NEEDED:debian UBUNTU: [Config] enable overlayfs v1 support +ff7e37255afb5b57b5e378e7aef2b4935cc3eb0f NEEDED overlay: add backwards compatible overlayfs format support +47897ce32d62ea9af685c2a4b06734e76fbfcb1d NEEDED:debian UBUNTU: [Config] update configs following rebase to v3.18-rc6 +b9de0aaa58a863d277ac6141018e82d619d0a89c NEEDED:debian UBUNTU: rebase to v3.18-rc6 +f8bae137b946111d88cfd59cdb3501abc6072f7d NEEDED:debian UBUNTU: rebase to v3.18-rc5 +4550c44494ed6064b56dc746c1ca59cc42571292 NEEDED:debian UBUNTU: Start new release +cb37df61a5a331fe0bf87d467f6938149b7be5f5 NEEDED:debian UBUNTU: Ubuntu-3.18.0-3.4 +394645d92e939afd7bad1e13d07367d8c077fe12 NEEDED UBUNTU: SAUCE: AUFS (no-squash): basic framework and update machinary -- part 2 +3a53bed921a6d5c0fb30fc8e02a06105fad9dcf7 NEEDED:debian UBUNTU: Ubuntu-3.18.0-3.3 +156d0481e2abded21be8e0a516f952d13cfd0ff5 NEEDED:debian UBUNTU: [Config] updateconfigs following aufs3 update +4f0421c01639daf81bf6ccb3d5f4b8ff75e4552f NEEDED:ubuntu-driver UBUNTU: ubuntu: AUFS -- update to 9d5c349d5c452170b8e813d86956f896a0aef170 +6051ec34d1dbdcb54e4d8c5a9f2161793f85c99d IGNORE:reverted UBUNTU: SAUCE: AUFS -- aufs3-standalone.patch +d85f1f5fbc58b6f338ed6172f1b281cf7d6cd638 IGNORE:reverted UBUNTU: SAUCE: AUFS -- aufs3-mmap.patch +29946e18ae75d3ded766003caec2a3677a07a83f IGNORE:reverted UBUNTU: SAUCE: AUFS -- aufs3-base.patch +57f696f01845322cb8c68804524bdd41a2ad1146 NEEDED:debian UBUNTU: rebase to v3.18-rc4 +11048583c75d357f740d6d2ba6b2285f2657d93f NEEDED:debian UBUNTU: [Config] Disable CONFIG_RCU_USER_QS on arm64 +a20ed54dbbda43450ec3bf5d3db536e2a9ef9000 NEEDED:debian UBUNTU: [Config] disable CONFIG_ARM64_RANDOMIZE_TEXT_OFFSET +d2dfee2ba64140dc875aa2de2db76326021cd349 NEEDED:debian UBUNTU: [Debian] basic hook support +696ca2c9a87c9da383d1d0475cc4699e81cf67ba NEEDED:debian UBUNTU: [Config] amd64 is now the indep architecture +f500e7dcda3dfecfa2175847ba31bf8dd5470ce0 NEEDED:debian UBUNTU: [Config] Disable CONFIG_IPMI_SI_PROBE_DEFAULTS on armhf and arm64 +baf3a88eca0a927579ba1f6cf805c2b49f7b8165 NEEDED:debian UBUNTU: Start new release +c72e2fb77e36121ff538fe2b6a21354128cd8194 NEEDED:debian UBUNTU: Ubuntu-3.18.0-2.2 +714d582bfcfdb5091e472a15d2b1c4ab74383756 NEEDED:debian UBUNTU: rebase to v3.18-rc3 +68ed89d5098ecb26c3cf2ce31a197b60147accd9 NEEDED:debian UBUNTU: Start new release +9ba3dda425ca839667062942e93529e75382531a NEEDED:debian UBUNTU: Ubuntu-3.18.0-1.1 +76d6207803e1b92f419126d507d5e790738bb580 NEEDED:debian UBUNTU: [Debian] install usbipd +2a878f46cd018c9cb2e3f6a9bf436238522e4799 NEEDED:debian UBUNTU: [Config] armhf: disable JUMP_LABEL +994e6de3dd2affbd3ec963597d7d8af8990627e7 NEEDED:debian UBUNTU: [Config] CONFIG_DRM_BOCHS=n +0f87fe85382c852b2d5faf7d8b94fa994ae00461 NEEDED:debian UBUNTU: [Config] enable cloud tools on i386 +3aab9a4865e735ffc6aa1979e4d32929da66e317 NEEDED:debian UBUNTU: [Config] CONFIG_PATA_MACIO=y +f54e18bd24b7362841b1902c1a0804bc1dd12e2d NEEDED:debian UBUNTU: [Config] linux-image-extra postrm is not needed on purge +be3df8ea980f12fac4ed6e27c5948dc13c25c9d2 NEEDED:debian UBUNTU: [Config] linux-image-extra is additive to linux-image +809a654eb28d8127dc89dd89d679d44aad7e4cd6 NEEDED:debian UBUNTU: [Config] Added drivers/uio to generic inclusion list +bc189702109182682081057777e98beaff1200cc NEEDED:debian UBUNTU: [Config] dropped scsi_tgt from generic inclusion list +2ac80c0acfef71084a8072d792534e3b2617bee9 NEEDED:debian UBUNTU: CONFIG_MODULE_COMPRESS=n +f7103d518249e744a5c0aa004aca24a1f7d57706 NEEDED:debian UBUNTU: [Debian] Fix linux-doc dangling symlinks +ba30c7ba905e7f8cc776669e07c2e0a770b1aabf NEEDED:debian UBUNTU: rebase to v3.18-rc2 +0f81052c41fb44d865aa1fdcaf349bd35b097a6f NEEDED:debian UBUNTU: [Config] CONFIG_SOUND_OSS_CORE_PRECLAIM=n +99f88d003b04a94cdffb06292a131e4c9eaacb10 NEEDED:debian UBUNTU: Enable vivid +816874fb757dc85e42d20af922290d6d55cf9fac NEEDED:split-debian UBUNTU: rebase to v3.18-rc1 +5774f4dab5e36642e243e03837f63e68c93dfacf NEEDED:debian UBUNTU: rebase to v3.17 +dbabd921800e97ff2a708b068f772ca1182157bc NEEDED:debian UBUNTU: [Config] CONFIG_HOTPLUG_PCI_PCIE=n for ppc64el +59c659ef34502c3c6b5a0e8490bac9c7ffa9e042 NEEDED:debian UBUNTU: rebase to v3.17-rc7 +431e93cbc6a563ae15b4877810beb1b9f4edd976 NEEDED:debian UBUNTU: [Debian] Don't fail if a symlink already exists +0794c4f5d47196aaa1c774fcaa2ef81bd7214141 NEEDED:debian UBUNTU: [Config] CONFIG_HOTPLUG_PCI_SHPC=n for ppc64el +4790317b5007565da1299b35578135011bd9c6e9 NEEDED:debian UBUNTU: [Config] CONFIG_SND_HDA_INTEL=n for ppc64el +e7971f95deafcac1b3f524645a68fe915344845d NEEDED:debian UBUNTU: [Config] Correct annotation regarding CONFIG_DMA_CMA +f2d29260d449d918c5885aa6abc182dade506257 NEEDED:debian UBUNTU: [Config] CONFIG_CRASH_DUMP=n for powerpc-smp +56a2eb988714b6a0bb0f6c0da9a313a8f439291e NEEDED:debian UBUNTU: [Config] Enable usbip tools +dc7084c88863a69e70e90265485b6b51c01ccbad NEEDED:debian UBUNTU: [Debian] usbip tools packaging +40504c7e778f0ad9f19180a39ddd9018910c705a NEEDED UBUNTU: SAUCE: usbip: Update include path +122f035765feacfa15b09515c78af28f7092877c NEEDED:debian UBUNTU: rebase to v3.17-rc6 +d7be42a7599c483c2294e1122d9c4d5f0d347321 NEEDED:debian UBUNTU: [Config] CONFIG_USB_OHCI_HCD_PCI=y +dd1e6e6bf5f6ffcd1436ad3fbe32c93da7a5ff30 NEEDED:debian UBUNTU: [Config] follow rename of DEB_BUILD_PROFILES +dee5d182c3b180973d3a6fab11ac30af4513559b NEEDED:debian UBUNTU: [Config] tools -- only build common tools when enabled +782d85880d33461406f5a288942e6dcc11770e47 NEEDED:debian UBUNTU: [Debian] set do_*_tools after stage1 or bootstrap is determined +5b118bbb3a38dc3e5be0d5c921603f672fe1ab4c NEEDED:debian UBUNTU: [Config] Add mpt3sas to d-i +6afad884eeffc67a53e5d11ffe61c9e40b64d26a NEEDED:debian UBUNTU: [Config] CONFIG_DMA_CMA=n +aa4e526d8be91b593cd6d0a0e4ab949d26541fa0 NEEDED:debian UBUNTU: [Config] CONFIG_KVM_BOOK3S_64_HV=m +519ac1677b339775493fc2a4cff55d9e54c28ce7 NEEDED:debian UBUNTU: [Config] CONFIG_KVM_BOOK3S_64=m for ppc64el +dc9bcbd1592cfede67a2c5ccb5c59f26f0589260 NEEDED:debian UBUNTU: [Config] CONFIG_XMON=y +e9173466e3323cb9c78cdc807c72e6838f5d7119 NEEDED:debian UBUNTU: [Config] armhf: USB_[E|O]HCI_EXYNOS=y +4377933f12fbcb31006f23d0117d8a0d164adb80 NEEDED:debian UBUNTU: rebase to v3.17-rc5 +2d172824498ca976ec7e37ec373a248d49a0d5cc NEEDED:debian UBUNTU: rebase to v3.17-rc4 +6980242f0ab61eca03c77142ad4000fadfa022f7 NEEDED:debian UBUNTU: rebase to v3.17-rc3 +72e421db34ebf1bbe15649de2ab2132970f21872 NEEDED:debian UBUNTU: [Config] arm/tegra/d-i: framebuffer and usb support for Tegra SoCs +3cf410f0b6b36de437c55e319bde033fe75cdb28 NEEDED:debian UBUNTU: [Config] Add arm64 to enforcer CONFIG_CC_STACKPROTECTOR +e332b2967797d421575080f7b872c7b675e47629 NEEDED:debian UBUNTU: [Config] armhf: REGULATOR_TWL4030=y +c37acf9c89fae66506d9875bdf758a5fee0233ed NEEDED:debian UBUNTU: [Config] Added net/6lowpan/* to generic inclusion list +4dd073455ec2c021accdd97ee82b8091b17ea7b7 NEEDED:debian UBUNTU: [Config] CONFIG_NFC_ST21NFCB=n +abc7908d4c71425c16718d40bbbea1515bc39204 NEEDED:debian UBUNTU: updateconfigs +e09aab2c0d195125f71b50cdff0a858983953609 NEEDED:debian UBUNTU: rebase to v3.17-rc2 +9d32d8b674a700e342c5559d8e09e9590785d40a NEEDED:debian UBUNTU: Start new release +18ffc6ce8fa107ac99b52f69a8107511c9d560c5 NEEDED:debian UBUNTU: Ubuntu-3.16.0-11.16 +06f6d00b1c7ae75b5988b2ef922cdd8308edacd1 NEEDED:debian UBUNTU: [Config] CONFIG_ZPOOL=y +7cc84cf61b760725973c93b9c7e39d6f521bfe62 NEEDED Revert "net/mlx4_en: Fix bad use of dev_id" +6ffe8179fc951ea6d1886f28b0742eb2744f033c NEEDED:debian UBUNTU: Bump ABI +cc21629a6a5f6a3efdaf91b320508479af69e1fa NEEDED:debian UBUNTU: Start new release +d1a2628d426406b61d1d46747da2815e7995d3c9 NEEDED:debian UBUNTU: Ubuntu-3.16.0-10.15 +90b44b74910b3c5e86cb05cfde5f67fee0ef2b75 NEEDED UBUNTU: SAUCE: bcache: prevent crash on changing writeback_running +e3102a21978dd9c109856a48cd84837e708b7b29 NEEDED:debian UBUNTU: [Config] CONFIG_SENSORS_IBMPOWERNV=m +2819061858516119133b736fdfa0c11d23cceccc NEEDED:debian UBUNTU: [Config] CONFIG_SECURITY_NETWORK_XFRM=y +a30185ef8f2fa9dd925cf8b99399a72bc308a397 NEEDED:debian UBUNTU: [Config] CONFIG_XFRM_STATISTICS=y +9d4a441eb46227e80b77e99ef15a4248ba2ddfcd NEEDED UBUNTU: SAUCE: (no-up) arm64: dts: Add PMU node for APM X-Gene Storm SOC +e7e22f86dfc3e11d8f6eab08074ebb610a20c5ab NEEDED UBUNTU: SAUCE: (no-up) dt-bindings: Add Potenza PMU binding +5ed1bfbfcc717aead960bf74940328285d3bf957 NEEDED:debian UBUNTU: [debian] Fix regression with ABI subversions and backport +62f12ae8d9c08cc6496b60b330350a4dfcbca77f NEEDED:debian UBUNTU: Start new release +ab212af17f1b9eaa43bffde42440598079044839 NEEDED:debian UBUNTU: Ubuntu-3.16.0-9.14 +c8a4d4970d0835d19ff2acd700d0ae94b877b3e7 NEEDED UBUNTU: SAUCE: Overlayfs: allow unprivileged mounts +38d659d55bb8fab6f71934dd969a1ba8badeed79 NEEDED:debian UBUNTU: rebase to v3.16.1 +aefca49c0717ac60ba231a3b2e0cb62f0937113c NEEDED:debian UBUNTU: Start new release +a9dc14c5056a82cfd44e3b098b252e52fe0b6925 NEEDED:debian UBUNTU: Ubuntu-3.16.0-8.13 +ab4880f5e96efda31c6b52136704c9eb0ccab87b NEEDED:debian UBUNTU: [debian] Allow for package revisions condusive for branching +981bed5cd793ef69ac7377e9cbb6375ce70351f6 NEEDED:debian UBUNTU: Start new release +74a7d62985f35ddef973776c3e31ff256f4a5859 NEEDED:debian UBUNTU: Ubuntu-3.16.0-7.12 +aeaada62d9efea9463bbcfc2a6549d18f023cdd5 NEEDED:debian UBUNTU: [Config] Add hv_balloon to d-i virtio-modules +035036c87c216bfbb44109c963375f5f20dc05a1 NEEDED:debian UBUNTU: [Config] d-i -- add virtio_scsi to virtio-modules +62317e97c6bbb5d8043e1fc3e26df6b905325c4c NEEDED:debian UBUNTU: rebase to v3.16 final +250eb531089a04b95b698be6524ce4edbe15ddc5 NEEDED:debian UBUNTU: [Packaging] Fix 'printchanges' to work with versions containing '+' +53647a9928a35d01e9f1b59c5d7b96ad3353048a NEEDED:debian UBUNTU: [Config] CONFIG_CONTEXT_TRACKING_FORCE=n +e1b2b4a99edece7053725bc318f7f58e53767692 NEEDED:debian UBUNTU: [Config] CONFIG_MICROCODE=y +a1f57fea081dbab4be712029e9b64c60d61935a0 NEEDED:debian UBUNTU: Start new release +b342b70677fb9741dd3dc137f45e5ce3181223e9 NEEDED:debian UBUNTU: Ubuntu-3.16.0-6.11 +f0c937317763b38820a72a6b02b1fdb0ad9d285d NEEDED:debian UBUNTU: rebase to v3.16-rc7 +d4d6d5fc58a66d37821bbbf8561ac2a814c977d9 NEEDED:debian UBUNTU: [Config] CONFIG_SCSI_IPR_TRACE=y, CONFIG_SCSI_IPR_DUMP=y +c9990e0b0998d728503f56ab9c7821d56a721a58 NEEDED:debian UBUNTU: [Config] armhf: RTC_DRV_PCF8523=y +82fd2a6b5fff23ba504adfe2d18dc1d44f109445 NEEDED:debian UBUNTU: [Config] armhf: build cubox & imx6 DTBs +7fdb1513964145758aefdf7a43b06a1d0b6b5811 NEEDED:debian UBUNTU: [Config] armhf: KEYBOARD_IMX=m +7534c02766b9c2305e03cd5b5a117c3997863ff4 NEEDED:debian UBUNTU: [Config] armhf: MXS_DMA=y && MTD_NAND_GPMI_NAND=m +43470d1ec8f5355be9c153b05088af5505ebd499 NEEDED:debian UBUNTU: [Config] CONFIG_KEYS_DEBUG_PROC_KEYS=y +6f1d20b13ce5c137c86d1144eb82ab38f99e76cf NEEDED:debian UBUNTU: Start new release +9d6defca20c389c1ff93e5802c71973b092e7a14 NEEDED:split-debian UBUNTU: Ubuntu-3.16.0-5.10 +1d693f78502686a992d2038c9896c3e6c2652ce2 NEEDED UBUNTU: SAUCE: aufs3 -- update update scripting +53acc12981cc9883d9038fcac7ac86b9ad274f24 NEEDED UBUNTU: SAUCE: AUFS (no-squash): basic framework and update machinary +87428d40577506cfdf31336368aa613ae0c54639 NEEDED UBUNTU: SAUCE: 85xx: Only use generic tbsync routines on PPC32 +ad006bb4d530a83f425ee836b7d8de7d5c93e3cf NEEDED UBUNTU: SAUCE: (no-up) Select reboot driver for X-Gene platform. +5d2fc3d65465aac854036c9ca737eab59b608042 NEEDED UBUNTU: SAUCE: nouveau: missing outputs should be warnings +b2648e043821b5866f8c863c4b928732228d3402 NEEDED UBUNTU: SAUCE: kvm: BIOS disabled kvm support should be a warning +8c10fb1a7bf59170ed6fd059cb35e5017abcd05f NEEDED UBUNTU: SAUCE: kthread: Do not leave kthread_create() immediately upon SIGKILL. +6d0ed555d8ae64794d2902f9c1b7e0da5c39d939 NEEDED UBUNTU: SAUCE: intel_pstate: inform user that thermald is worth considering +594f6dbf60084fd5fc21bdcc0a99b154be76e76d NEEDED UBUNTU: SAUCE: (no-up) mei_me: Add module parameter to disable MSI +e62b73418e9503b09d61a6dc8721f457bec967d0 NEEDED UBUNTU: SAUCE: Revert "drm/crtc-helpers: fix dpms on logic" +6e2be9569f946dc74fec9f5f24a9d80689275343 NEEDED UBUNTU: SAUCE: book3e cleanups for CONFIG_RELOCATABLE +69923caf98a546b30325ec486536633fddb7ff90 NEEDED UBUNTU: SAUCE: book3e/kexec/kdump: recover "r4 = 0" to create the initial TLB +2df7602013328910b0c6fce7f411a5d1b25be301 NEEDED UBUNTU: SAUCE: book3e/kexec/kdump: redefine VIRT_PHYS_OFFSET +3d13bd1d0394d80f6dccae2daafdd1ce887e8672 NEEDED UBUNTU: SAUCE: book3e/kexec/kdump: implement ppc64 kexec specfic +219cc9dd30079c35ad74590b3808ff7e12f3dd39 NEEDED UBUNTU: SAUCE: book3e/kexec/kdump: introduce a kexec kernel flag +9e138c3c7acc6975d0ac364254ae021592e2d096 NEEDED UBUNTU: SAUCE: book3e/kexec/kdump: create a 1:1 TLB mapping +2d3b205cde4d3b8069b8d9bb97203de57726ea92 NEEDED UBUNTU: SAUCE: book3e/kexec/kdump: enable kexec for kernel +32b8a9f39e22e0b54dbe78a1c179de7ca0dfd9cb NEEDED UBUNTU: SAUCE: powerpc/book3e: support CONFIG_RELOCATABLE +aa396fc0fa2317a5b447e88bc46b352f0411307e NEEDED UBUNTU: SAUCE: vt -- maintain bootloader screen mode and content until vt switch +0e50fbdb8e04609ddd667428f54d81fd17ffc232 NEEDED UBUNTU: SAUCE: export some symbols for powerpc +272b7c0f6c6c380981101491d9ef26bd45ade5fe NEEDED UBUNTU: SAUCE: allow IRQs to be irq-threaded by default via config +d5c3c89b86cfe6ce6dc5c67c462e563326940d44 NEEDED UBUNTU: SAUCE: Provide booke stub for kvmppc_is_bigendian() +b551f2a4439d2179b3732c2a28277d9245dbb150 NEEDED UBUNTU: SAUCE: xgmac_mdio: Silence read errors +285f1bd95dd079825af0d06e33af71a7583aeee9 NEEDED UBUNTU: SAUCE: Fixup freescale usb phy driver to work on ppc64 +c2361b23e7b757ffa4241a6ab427694f3be844cd NEEDED UBUNTU: SAUCE: Revert "phy: vitesse make vsc824x_add_skew static" +f40baa6f375e1730970cebce0a14a7456d539ab2 NEEDED UBUNTU: SAUCE: PPC: PCI: Fix pcibios_io_space_offset() so it works for 32-bit ptr/64-bit rsrcs +dc7dff6e417c8642ead4659e42e9b1b601db199c NEEDED UBUNTU: SAUCE: phylib: Minimum hack to get the generic 10G PHY driver to work with 10G "fixed-link"s +0bd9175323dad194fcff7b450aa14d39ce710b3d NEEDED UBUNTU: SAUCE: OMAP: AM33xx: hwmod: Correct AES module SYSC type +3a1228b27e425e24b6257c8af1e3ccebc1f9f809 NEEDED UBUNTU: SAUCE: ARM: OMAP4: hwmod: Add hwmod data for AES IP +eff618d811a4b62462674a8bb05556a548f2c112 NEEDED UBUNTU: SAUCE: ARM: OMAP: hwmod: Add SYSC offsets for AES IP +8418ceb9869d41a7ba4e6217c631bdb28e07c33b NEEDED UBUNTU: SAUCE: suspicious unlocked ->status reading and writing in ipc/sem.c +fd4bcb1162b482eafc3fc3fe480698cc8d1cdfdb NEEDED UBUNTU: SAUCE: tg3: Add support for new 57786 device id. +00b5fd7aaa231697512b50a7c80ed2a3c8c7e3b0 NEEDED UBUNTU: SAUCE: Work around broken ACPI backlight on Dell Inspiron 5537 +bf3a2dfe2f7f34c174a0a938c350912e319fe032 NEEDED UBUNTU: SAUCE: disable stack-protector for ARM compressed bootloader +29fb264813de8f4bbd8c8577901630e6a547d503 NEEDED UBUNTU: SAUCE: uvcvideo: quirk PROBE_DEF for Alienware X51 OmniVision webcam +cdf48be1c63b4a07cecf2a62617f7fb7b847fabb NEEDED UBUNTU: SAUCE: isapnp_init: make isa PNP scans occur async +eedee9b0f515aa2793fccbbfd7d58db95b2490d1 NEEDED UBUNTU: SAUCE: dm-crypt: never use write same +6eccf1ef86175928b723ca681c2ab851d112e7ac NEEDED UBUNTU: SAUCE: (no-up) ACPI: Disable Windows 8 compatibility for some Lenovo ThinkPads +07419bbe0eb79097693cae2b7ed1b3f467fca642 NEEDED UBUNTU: SAUCE: (no-up) intel_ips: blacklist ASUSTek G60JX laptops +5b2c0e070ec1b4d29178b320220c5388ec9f9c82 NEEDED UBUNTU: SAUCE: (no-up) Update bnx2x firmware to 7.8.17.0 +fdbf1af4b48970478c1ee25e1c620ecb8cd4035e NEEDED UBUNTU: SAUCE: (no-up) trace: add trace events for open(), exec() and uselib() (for v3.7+) +1d4ec94ffcaca71994e520abe769ee6dcf4579ee NEEDED UBUNTU: SAUCE: (no-up) x86: reboot: Make Dell Optiplex 390 use reboot=pci +f760d3c92097784cfda92f3f4c094ccf9fc2497c NEEDED UBUNTU: SAUCE: (no-up) PCI: fix system hang issue of Marvell SATA host controller +f43492d5b2cf399039ca6914348d25aaee474e4f NEEDED UBUNTU: SAUCE: (no-up) Convert bnx2x firmware files to ihex format +8b732f482e348d75ee9b433c574bcf88d0a8991b NEEDED UBUNTU: SAUCE: (no-up) Input: Cypress PS/2 Trackpad simulated multitouch +7466874e8128bab355ddf3512171ae836348b7f7 NEEDED UBUNTU: SAUCE: (no-up) hv: Supply vendor ID and package ABI +6a5fff41e536a612ddc1352d93a5b6db8ba68f39 NEEDED UBUNTU: SAUCE: (no-up) Revert "VFS: don't do protected {sym,hard}links by default" +ae359c3e312669ebde46bc3817d6cea99a7f9bef NEEDED UBUNTU: SAUCE: (no-up) Remove vicam files duplicated in linux-firmware +794523f01c1303be9d736acca7f016af31b7b416 NEEDED UBUNTU: SAUCE: (no-up) Remove dsp56k files used only by m68k +db779e5d146cf4d34aee88cf9d2f71d00a9c926c NEEDED UBUNTU: SAUCE: (no-up) Update bnx2x firmware to 7.8.2.0 +588fe8f57dc07478c434afb332793b91ea896bc9 NEEDED UBUNTU: SAUCE: (no-up) Remove radeon files duplicated in linux-firmware +c4e09c38991997926099d1fdac4bef85cbdc4d72 NEEDED UBUNTU: SAUCE: (no-up) Remove sun files duplicated in linux-firmware +14b6b1d6c7c6b42d778c4aacc0a9d68a451e5ba8 NEEDED UBUNTU: SAUCE: (no-up) Remove keyspan files duplicated in linux-firmware +8989c6225b5d8ef4bd42337382c3fe58c4448887 NEEDED UBUNTU: SAUCE: (no-up) Remove acenic files duplicated in linux-firmware +e9347676137c6b05dd8d1db1de39230e677ada95 NEEDED UBUNTU: SAUCE: (no-up) Remove r128 files duplicated in linux-firmware +8a8c10cf8ebc650ed0ae9bb94de9787321fcef5b NEEDED UBUNTU: SAUCE: (no-up) Remove cxgb3 files duplicated in linux-firmware +da35e9ad8c83e4ecc8a73b68b8cc556e8723cdb3 NEEDED UBUNTU: SAUCE: (no-up) Remove matrox files duplicated in linux-firmware +31f0ae2767b81565b1333630f9572a09df295a04 NEEDED UBUNTU: SAUCE: (no-up) Remove tehuti files duplicated in linux-firmware +ea4588800ea937d2044723f497632e608e5a713e NEEDED UBUNTU: SAUCE: (no-up) Remove yam files duplicated in linux-firmware +5fa5e5d023fa3ad67d4947710062440e0b92b6f3 NEEDED UBUNTU: SAUCE: (no-up) fix highbank include path +bcd707780091a34cd1815b8ab6cf795e13433e65 NEEDED UBUNTU: SAUCE: (no-up) vxge: Declare MODULE_FIRMWARE usage +dbc6280f6dc2988546dd6d35055741be0a5fcbe7 NEEDED UBUNTU: SAUCE: (no-up) rds_ib_send() -- prevent local pings triggering BUG_ON() +a381ec9f409f2e71151194c647685826aadc97f3 NEEDED UBUNTU: SAUCE: (no-up) firmware: Upgrade bnx2 to current versions +b08d030d87047591794e27a4d8cfc05c779f9fda NEEDED UBUNTU: SAUCE: (no-up) firmware: Remove obsolete Myricom firmware +c62121eeb1e43d1c1bee1161f0fce00506810966 NEEDED UBUNTU: SAUCE: (no-up) firmware: Remove cpia2 files duplicated in linux-firmware +6ca0baacfe0faa7d6265a283a378c7530f2b3286 NEEDED UBUNTU: SAUCE: (no-up) firmware: Remove av7110 files duplicated in linux-firmware +492d662a9f259fb958ad3025ff4989ebb1ae1801 NEEDED UBUNTU: SAUCE: (no-up) firmware: Remove ambassador files duplicated in linux-firmware +9d9677898ade658ad4c68a47c2dda3aea3a9caa6 NEEDED UBUNTU: SAUCE: (no-up) firmware: Remove advansys files duplicated in linux-firmware +0906f131cf4b10f377dc66818a01eaab485a61f4 NEEDED UBUNTU: SAUCE: (no-up) firmware: Remove adaptec files duplicated in linux-firmware +fc950a48545f49a2ab8e8a465c682a4a3d504f57 NEEDED UBUNTU: SAUCE: (no-up) firmware: Remove ti_usb_3410_5052 duplicated in linux-firmware +6d277f4ffe2a7e2754feac527955f4e948d276cf NEEDED UBUNTU: SAUCE: (no-up) firmware: Remove edgeport files duplicated in linux-firmware +6cd197c9e6ecc8a3d864d9547837ce9e2ad6a6c1 NEEDED UBUNTU: SAUCE: (no-up) firmware: Remove kaweth files duplicated in linux-firmware +6d4aea69136e4baaa70726361e5912a24b92ed1e NEEDED UBUNTU: SAUCE: (no-up) firmware: Remove ess files duplicated in linux-firmware +264af3894a66b66b07162df0fb367836e76c9705 NEEDED UBUNTU: SAUCE: (no-up) Remove redundant keyspan_pda firmware +dc000f4ec05b4b34c2c1dd9a67d0a87fe1faee22 NEEDED UBUNTU: SAUCE: (no-up) Remove redundant yamaha/ds1 firmware +6f4b585535c0c28732c46bc12ba8dda042596f15 NEEDED UBUNTU: SAUCE: (no-up) Remove redundant ositech/Xilinx7OD firmware +a879d556097343beda5c932144f61b5320916ae2 NEEDED UBUNTU: SAUCE: (no-up) Remove redundant ttusb-budget firmware +ec8ca911878b3aae198cfcffaae02368f555f488 NEEDED UBUNTU: SAUCE: (no-up) Remove redundant cis firmware +482038c4e6362498269ddf66b5fe21021f7e7fcd NEEDED UBUNTU: SAUCE: (no-up) firmware: Update bnx2x to current firmware version 7.2.51 +1c5fd21e2fe45eea97a41163273add224545ddae NEEDED UBUNTU: SAUCE: (no-up) kconfig: in debug mode some 0 length message prints occur +0685b9c73aa31e52831400e053d37f2e438cfb1b NEEDED UBUNTU: SAUCE: (no-up) Allow filtering of cpufreq drivers +bd58f8e98fd0c05bfe34b7d8b538f35a0864c8d4 NEEDED UBUNTU: SAUCE: (no-up) tools/hv: add basic manual pages +08347031e66a781b7876584175c0bea0d0726788 NEEDED UBUNTU: SAUCE: (no-up) elide some ioctl warnings which are known benign +9e07077485c5e5805517bc2f6272a251eb61211d NEEDED UBUNTU: SAUCE: (no-up) Input: synapticss - Set buttonpad property for all clickpads +43644523536605f8c650aa46e420d59192fa230b NEEDED UBUNTU: SAUCE: (no-up) Input: synaptics - add second variant of two-button clickpad +1224fcf60e5dbe150b446c0f36f55601e50b867b NEEDED UBUNTU: SAUCE: (no-up) x86: reboot: Make Dell Latitude E6220 use reboot=pci +e08e98d5f3eaece0a55eca47eb31d2544561f1e0 NEEDED UBUNTU: SAUCE: (no-up) x86: reboot: Make Dell Optiplex 990 use reboot=pci +710ae591a352831d514adfecde8cbb921ab72132 NEEDED UBUNTU: SAUCE: (no-up) x86: reboot: Make Dell Optiplex 790 use reboot=pci +075dc4fd57b7523b7d1e64df09e8fbab2298a45c NEEDED UBUNTU: SAUCE: (no-up) x86: reboot: Make Dell Latitude E6520 use reboot=pci +11f96bb408f15ceeef5f1c089f99d974f5cd93c5 NEEDED UBUNTU: SAUCE: (no-up) add support for installed header files to ubuntu directory +83442377bb16b0007a304e1b5f81f35139abb29c NEEDED UBUNTU: SAUCE: (no-up) Added quirk to recognize GE0301 3G modem as an interface. +84b3a7169b338740a70d22eb408e89619acfd9db NEEDED UBUNTU: SAUCE: (no-up) fix build error with CONFIG_BLK_DEV_INITRD=n +6a2a16f3c9e9496523125c58f788055dede4495f NEEDED UBUNTU: SAUCE: (no-up) dma-mapping: Remove WARN_ON in dma_free_coherent +35814b8981777d9781bcf9d1a3d068b502ce90f2 NEEDED UBUNTU: SAUCE: (no-up) cdrom -- default to not locking the tray when in use +de67e5bc6fbe1fed74ec545291efc763ec91c2b3 NEEDED UBUNTU: SAUCE: (no-up) nbd: Change default partitions per device to 15 +a5263a89adad25c3cbec28d9ed6e35c83e8de677 NEEDED UBUNTU: SAUCE: (no-up) hostap: Change initial operation mode to managed (infra) +aa48271e2f11700129d616010dca588d7a973a03 NEEDED UBUNTU: SAUCE: (no-up) version: Implement version_signature proc file. +3dcb633bcdca132c4f3df40338a3b387f63f9271 NEEDED UBUNTU: SAUCE: (no-up) dm-raid45: Fix incompatible ptr assignments +7d687b18ba73d86852971a9060380a3e5657d086 NEEDED UBUNTU: SAUCE: (no-up) ubuntu: dm-raid45 +4437f9d1f3c4c6f7820bd7162ad54002e740eda8 NEEDED:debian UBUNTU: [Debian] Cloud tools +58244d3007f8256b8fd23b941a87c97b60e54f91 NEEDED:debian UBUNTU: [Debian] add debian/gbp.conf +04e8205c37a0d4756b675ea2229bac647ca200af NEEDED:debian UBUNTU: [Debian] remove the kernel-image firmware list on clean +a52ad698ad07262a8735801415c139789ae88cdb NEEDED:debian UBUNTU: [debian] Dynamically generate the kernel-image udebs firmware list +fbaf6c736d49fd8cd3d6121ea26009fbf7acd301 NEEDED:debian UBUNTU: [debian] Fix indep_hdrs_pkg_name +0588234eed4f92f77c24090f368bd9fc419e50e0 NEEDED:debian UBUNTU: [Debian] Improve tools version message +442d458f2ab0669d904de435bc943ffdb20b42e1 NEEDED:debian UBUNTU: [Debian] Re-sign modules after debug objcopy +a6e1d4fd0d9dc987991216b799e6dee2b7956ad7 NEEDED:debian UBUNTU: [Debian] sort out linux-tools naming +5fee25691328f9d46874a824d8e75c3a25be05d2 NEEDED:debian UBUNTU: [Debian] linux-tools: switch to common generic version helper +2d0634eb9debcc3197792e52f717e7f88352b835 NEEDED:debian UBUNTU: [Debian] postinst -- fix unchanged link detection +66e7bf3df38ce1302a32baf8142dce56c0c81586 NEEDED:debian UBUNTU: [Debian] postinst -- improve relative symlink detection with missing files +c5e7fa9208fbe047c329c124f4d4e1320321d34f NEEDED:debian UBUNTU: [Debian] getabis: Commit new ABI directory, remove the old +f01e594cf5b3a0f05f19ac55e78589d93b06b8fa NEEDED:debian UBUNTU: [Debian] Add hv_vss_daemon to tools package +687fa338e27867b855c77dd79860035dde626761 NEEDED:debian UBUNTU: [debian] tools: ship 'cpupower' in linux-tools +23e6572a962df847252e07898a40174669e8f2a5 NEEDED:debian UBUNTU: [Debian] tools: enable x86 and hyper-v +8bd69d23b91eee555b60a59e42a04201a7d0f1e7 NEEDED:debian UBUNTU: [Debian] autopkgtest: switch Depends: to build-essential +2a6e95d999ee4efac165d88c8106a888fc9b5a8a NEEDED:debian UBUNTU: [Debian] supply perf with appropriate prefix to ensure use of local config +81c56fe3b06596c30b9eae372008fe37ae20f3b7 NEEDED:debian UBUNTU: [Debian] Explicitly reference gawk in build rules awk in all and arch +82429d09555509df1d684469d97dedc756ff11b8 NEEDED:debian UBUNTU: [Debian] fix SRCPKGNAME-udebs-FLAVOUR handling for complex flavours +754e4d69262a59fff8c893b32f199d1fbec6905b NEEDED:debian UBUNTU: [Debian] Supply PKG_ABI in kmake +d25ef28f3ab3ead424ce856ecc849d4bd8eff932 NEEDED:debian UBUNTU: [Debian] reduce udeb rules spew +61ce255d6b166b9c48c8a4ff2176ea15089e381d NEEDED:debian UBUNTU: [Debian] Prepare to build using arch specific compiler +9a9792eeae3e7ec48aed14e38a8cbb3e716d5e34 NEEDED:debian UBUNTU: [Debian] do_tools=false when cross compiling +0ea3ee0721c59ddf26e95da242e5e9ead1e21278 NEEDED:debian UBUNTU: [Debian] generate a SRCPKGNAME-udebs-FLAVOUR-di depending on all built udebs +553cbe477ce2085e1a249d629f268d62af484682 NEEDED:debian UBUNTU: [debian] Use dh_strip +a418dffd68c2c8b88dc3e2fbaf09ead34cfc2fed NEEDED:debian UBUNTU: (debian) get-firmware: Be more selective about copies +4c40a10a81f5cd9310b7b5766ff731db91224f3f NEEDED:debian UBUNTU: (debian) fix internal linkage for separated header packages +b69a501e52aff469bc0e0b3ea7fcde5bfef63af1 NEEDED:debian UBUNTU: (debian) Abort build on unresolved symbols +15bc58fd511b00f7703d2b5d8909af935b31c1d5 NEEDED UBUNTU: [debian] ensure debian/ is not excluded from git by default +83f903be8906fc46d258124e64803590fa5a60ac NEEDED:debian UBUNTU: [debian] Specify python2.7 for perf tools build +817c1f4144c1318dc2e5d62e8817979a7f721ff9 NEEDED:debian UBUNTU: [debian] do not use ../.$(series)-env file +c00e4866e6e549618a43ae3928073f552cca12a5 NEEDED:debian UBUNTU: [debian] perf: NO_LIBPERL=1 +44e01631bcd442f4f61c264af78e193518daa683 NEEDED:debian UBUNTU: [debian] perf: NO_LIBPYTHON=1 +4ec3e6d91413db7e4ba6df1f8b069aee2e7ed216 NEEDED:debian UBUNTU: [debian] Build extras package only for specific arches +6ea3c5606dfdac9dc0348d0eeafb17207cf1efbb NEEDED:debian UBUNTU: [debian] Remove dangling symlink from headers package +9b0d5791d9345eb165fb26e8f80837209ed677f4 NEEDED:debian UBUNTU: [debian] DTB: add support for multiple DTBs +fc9f46c418f454b138af5d810003db5e3d7eb582 NEEDED:debian UBUNTU: [debian] Add macro to selectively disable building perf +c054564f4aeffa8baf045df5de9707140d3fd381 NEEDED:debian UBUNTU: [debian] insertchanges -- fix to work across major version changes +2161b4265ed31268232cb4743f6201b1be7ce1a8 NEEDED:split-debian UBUNTU: [debian] Moved scripts/fw-to-ihex.sh to debian/scripts/misc +187fb48b5107cf8714beb306cb24610e97101cee NEEDED:debian UBUNTU: [debian] find-obsolete-firmware: Use correct path +6b259db6215d8e1d4a31c1ba46ed39d2dafe82f1 NEEDED:debian UBUNTU: [debian] get-firmware: Filter new files through fwinfo +ba7c4f74efc87ea48be44992774a563151926bf7 NEEDED:debian UBUNTU: [debian] hmake -j1 +ff734a2a5e6dccf8e218115f0897c0296195408f NEEDED:debian UBUNTU: [debian] add an autopkgtest rebuild test +8b92747ff62b53c7481de518a1d9e0dcc3efadc5 NEEDED:debian UBUNTU: [debian] move build tests out of the way +65dc3834bd439e381e4a1319f47ba198ff59bfad NEEDED:debian UBUNTU: [debian] add rebuild-test support for autopkgtest +85df5d081a0a1cf926bc1596fce86058a980957d NEEDED:debian UBUNTU: [debian] script to detect obsolete firmware +0486170e5ff342ec83e3ad383d490ad9c4009012 NEEDED:debian UBUNTU: [debian] Use SRCPKGNAME as prefix for indep linux headers package +4fecdbff008d99d5084ad220223d95f2a8b33430 NEEDED:debian UBUNTU: [debian] Document binary-indep dependency chain +e31db9848498b37cec7974a7f55f3a0125ac98f7 NEEDED:debian UBUNTU: [debian] Use dh_prep instead of 'dh_clean -k' +f97b9b22ffed7de7d3b2f0b79ffcbd74ae75af29 NEEDED:debian UBUNTU: [debian] enforcer -- fix debugging output +97625cbcd6c760b92fcbd46b33127817abd3f5ec NEEDED:debian UBUNTU: [debian] Add custom_override rule to allow for alternate kernel file/install +8dadbaaed08c1aba3f59d1f8cac96284420b422f NEEDED:debian UBUNTU: [debian] Update armhf comments. +efd7c209638bec8871bdc80b05ac2678d98342f9 NEEDED:debian UBUNTU: [debian] drop manual headers copy +a25e7161804d73bdc21933f8ce22dffc30737c4d NEEDED:debian UBUNTU: [debian] bootstrap: switch to the new DEB_BUILD_PROFILE +5dedd7999df59975ea0faa207f5f8ed9c8d59e96 NEEDED:debian UBUNTU: [debian] do not fail secure copy on older kernels +a6a3b1451ca57ca799e98ba62fb0d95cfec38c5d NEEDED:debian UBUNTU: [debian] allow us to select which builds have uefi signed versions +a34c8331e9565c7af1a04c64bb6d1c57fc2c605e NEEDED:debian UBUNTU: [debian] we already have a valid src_pkg_name +e606ba427f5f2abe7a4ec1ab18a4d5838345821c NEEDED:debian UBUNTU: [debian] add custom upload for the kernel binary package +0ffed1cb10d43ba7d525fcc0af93e4eb9d88e8eb NEEDED:debian UBUNTU: [debian] note directory name changes +a6d721352cbc862a3e31652e904311739b016727 NEEDED:split-debian UBUNTU: [debian] Initial debian and ubuntu directories +b44d72ce530f51e7a882d23c66029a63b737231b NEEDED UBUNTU: [Debian] Prep for Ubuntu build infrastructure --- linux-raspi2-4.2.0.orig/debian.raspi2/reconstruct +++ linux-raspi2-4.2.0/debian.raspi2/reconstruct @@ -0,0 +1,7 @@ +# Reconstruct vbox symlinks (LP:1426113) +[ ! -L ubuntu/vbox/vboxguest/include ] && ln -sf ../include ubuntu/vbox/vboxguest/include +[ ! -L ubuntu/vbox/vboxguest/r0drv ] && ln -sf ../r0drv ubuntu/vbox/vboxguest/r0drv +[ ! -L ubuntu/vbox/vboxsf/include ] && ln -sf ../include ubuntu/vbox/vboxsf/include +[ ! -L ubuntu/vbox/vboxsf/r0drv ] && ln -sf ../r0drv ubuntu/vbox/vboxsf/r0drv +[ ! -L ubuntu/vbox/vboxvideo/include ] && ln -sf ../include ubuntu/vbox/vboxvideo/include +exit 0 --- linux-raspi2-4.2.0.orig/debian.raspi2/rules.d/armhf.mk +++ linux-raspi2-4.2.0/debian.raspi2/rules.d/armhf.mk @@ -0,0 +1,24 @@ +human_arch = ARM (hard float) +build_arch = arm +header_arch = arm +defconfig = defconfig +flavours = raspi2 +build_image = zImage +kernel_file = arch/$(build_arch)/boot/zImage +install_file = vmlinuz +no_dumpfile = true + +loader = grub + +do_linux_tools = true +do_tools_usbip = true +do_tools_cpupower = true +do_tools_perf = true + +do_common_headers_indep=false + +do_dtbs = true +disable_d_i = true +do_libc_dev_package=false +do_doc_package = false +do_source_package= false --- linux-raspi2-4.2.0.orig/debian/changelog +++ linux-raspi2-4.2.0/debian/changelog @@ -0,0 +1,1572 @@ +linux-raspi2 (4.2.0-1022.29) wily; urgency=low + + [ Luis Henriques ] + + * Release Tracking Bug + - LP: #1537088 + * rebased on Ubuntu-4.2.0-27.32 + + [ Ubuntu: 4.2.0-27.32 ] + + * Release Tracking Bug + - LP: #1536867 + * SAUCE: (no-up) add compat_uts_machine= kernel command line override + - LP: #1520627 + * SAUCE: (no-up) ACPI / tables: Add acpi_force_32bit_fadt_addr option to + force 32 bit FADT addresses + - LP: #1529381 + * SAUCE: (no-up) udp: properly support MSG_PEEK with truncated buffers + - LP: #1527902 + * SAUCE: powerpc/eeh: Validate arch in eeh_add_device_early() + - LP: #1486180 + * SAUCE: (no-up) Revert "[SCSI] libiscsi: Reduce locking contention in + fast path" + - LP: #1517142 + * [Config] Add DRM ast driver to udeb installer image + - LP: #1514711 + * net/mlx5e: Re-eanble client vlan TX acceleration + - LP: #1533249 + * net/mlx5e: Fix LSO vlan insertion + - LP: #1533249 + * net/mlx5e: Fix inline header size calculation + - LP: #1533249 + * net: usb: cdc_ncm: Adding Dell DW5812 LTE Verizon Mobile Broadband Card + - LP: #1533118 + * net: usb: cdc_ncm: Adding Dell DW5813 LTE AT&T Mobile Broadband Card + - LP: #1533118 + * powerpc/eeh: Fix recursive fenced PHB on Broadcom shiner adapter + - LP: #1532942 + + -- Luis Henriques Fri, 22 Jan 2016 16:00:29 +0000 + +linux-raspi2 (4.2.0-1021.28) wily; urgency=low + + [ Luis Henriques ] + + * Release Tracking Bug + - LP: #1535985 + * rebased on Ubuntu-4.2.0-26.31 + + [ Ubuntu: 4.2.0-26.31 ] + + * Release Tracking Bug + - LP: #1535795 + * Merged back Ubuntu-4.2.0-25.30 + + -- Luis Henriques Wed, 20 Jan 2016 14:00:01 +0000 + +linux-raspi2 (4.2.0-1020.27) wily; urgency=low + + [ Luis Henriques ] + + * rebased on Ubuntu-4.2.0-25.30 + + [ Ubuntu: 4.2.0-25.30 ] + + * KEYS: Fix keyring ref leak in join_session_keyring() + - LP: #1534887 + - CVE-2016-0728 + + -- Luis Henriques Mon, 18 Jan 2016 14:05:07 +0000 + +linux-raspi2 (4.2.0-1018.25) wily; urgency=low + + [ Luis Henriques ] + + * Release Tracking Bug + - LP: #1529992 + * rebased on Ubuntu-4.2.0-23.28 + + [ Ubuntu: 4.2.0-23.28 ] + + * Release Tracking Bug + - LP: #1529361 + * ovl: fix permission checking for setattr + - LP: #1528904 + - CVE-2015-8660 + + -- Luis Henriques Mon, 04 Jan 2016 10:57:53 +0000 + +linux-raspi2 (4.2.0-1017.24) wily; urgency=low + + [ Luis Henriques ] + + * Release Tracking Bug + - LP: #1527537 + * rebased on Ubuntu-4.2.0-21.25 + + [ Ubuntu: 4.2.0-22.27 ] + + * Release Tracking Bug + - LP: #1527391 + * ptrace: being capable wrt a process requires mapped uids/gids + - LP: #1527374 + + [ Ubuntu: 4.2.0-22.26 ] + + * xen: Add RING_COPY_REQUEST() + - CVE-2015-8550 + * xen-netback: don't use last request to determine minimum Tx credit + - CVE-2015-8550 + * xen-netback: use RING_COPY_REQUEST() throughout + - CVE-2015-8550 + * xen-blkback: only read request operation from shared ring once + - CVE-2015-8550 + * xen-blkback: read from indirect descriptors only once + - CVE-2015-8550 + * xen-scsiback: safely copy requests + - CVE-2015-8550 + * xen/pciback: Save xen_pci_op commands before processing it + - CVE-2015-8550 + * xen/pciback: Return error on XEN_PCI_OP_enable_msi when device has MSI + or MSI-X enabled + - CVE-2015-8551, CVE-2015-8552, CVE-2015-8553 + * xen/pciback: Return error on XEN_PCI_OP_enable_msix when device has MSI + or MSI-X enabled + - CVE-2015-8551, CVE-2015-8552, CVE-2015-8553 + * xen/pciback: Do not install an IRQ handler for MSI interrupts. + - CVE-2015-8551, CVE-2015-8552, CVE-2015-8553 + * xen/pciback: For XEN_PCI_OP_disable_msi[|x] only disable if device has + MSI(X) enabled. + - CVE-2015-8551, CVE-2015-8552, CVE-2015-8553 + * xen/pciback: Don't allow MSI-X ops if PCI_COMMAND_MEMORY is not set. + - CVE-2015-8551, CVE-2015-8552, CVE-2015-8553 + + -- Luis Henriques Fri, 18 Dec 2015 10:37:58 +0000 + +linux-raspi2 (4.2.0-1016.23) wily; urgency=low + + [ Luis Henriques ] + + * Release Tracking Bug + - LP: #1522372 + * rebased on Ubuntu-4.2.0-21.25 + + [ Ubuntu: 4.2.0-21.25 ] + + * Release Tracking Bug + - LP: #1522108 + * staging/dgnc: fix info leak in ioctl + - LP: #1509565 + - CVE-2015-7885 + * [media] media/vivid-osd: fix info leak in ioctl + - LP: #1509564 + - CVE-2015-7884 + * KEYS: Fix race between key destruction and finding a keyring by name + - LP: #1508856 + - CVE-2015-7872 + * KEYS: Fix crash when attempt to garbage collect an uninstantiated + keyring + - LP: #1508856 + - CVE-2015-7872 + * KEYS: Don't permit request_key() to construct a new keyring + - LP: #1508856 + - CVE-2015-7872 + * isdn_ppp: Add checks for allocation failure in isdn_ppp_open() + - LP: #1508329 + - CVE-2015-7799 + * ppp, slip: Validate VJ compression slot parameters completely + - LP: #1508329 + - CVE-2015-7799 + + [ Ubuntu: 4.2.0-20.24 ] + + * Release Tracking Bug + - LP: #1521753 + * [Tests] gcc-multilib does not exist on ppc64el + - LP: #1515541 + * SAUCE: scsi_sysfs: protect against double execution of + __scsi_remove_device() + - LP: #1509029 + * SAUCE: (noup) cxlflash: Fix to escalate LINK_RESET also on port 1 + - LP: #1513583 + * SAUCE: (noup) cxlflash: Fix to avoid virtual LUN failover failure + - LP: #1513583 + * SAUCE: (noup) iwlwifi: Add new PCI IDs for the 8260 series + - LP: #1517375 + * [Config] CONFIG_DRM_AMDGPU_CIK=n + - LP: #1510405 + * net/mlx5e: Disable VLAN filter in promiscuous mode + - LP: #1514861 + * drivers: net: xgene: fix RGMII 10/100Mb mode + - LP: #1433290 + * HID: rmi: Disable scanning if the device is not a wake source + - LP: #1515503 + * HID: rmi: Set F01 interrupt enable register when not set + - LP: #1515503 + * net/mlx5e: Ethtool link speed setting fixes + - LP: #1517919 + * scsi_scan: don't dump trace when scsi_prep_async_scan() is called twice + - LP: #1517942 + * x86/ioapic: Disable interrupts when re-routing legacy IRQs + - LP: #1508593 + * xhci: Workaround to get Intel xHCI reset working more reliably + * megaraid_sas: Do not use PAGE_SIZE for max_sectors + - LP: #1475166 + * net: usb: cdc_ether: add Dell DW5580 as a mobile broadband adapter + - LP: #1513847 + * KVM: svm: unconditionally intercept #DB + - LP: #1520184 + - CVE-2015-8104 + + -- Luis Henriques Thu, 03 Dec 2015 13:57:56 +0000 + +linux-raspi2 (4.2.0-1015.22) wily; urgency=low + + [ Luis Henriques ] + + * Release Tracking Bug + - LP: #1515537 + * rebased on Ubuntu-4.2.0-19.23 + + [ Ubuntu: 4.2.0-19.23 ] + + * Release Tracking Bug + - LP: #1515157 + * [Config] re-enable OSS support and blacklist + - LP: #1434842 + * Revert "[Config] CONFIG_ARM64_ERRATUM_843419=n" + - LP: #1502946 + * [SRU] [Config] armhf: LEDS_TRIGGER_HEARTBEAT=y + - LP: #1510165 + * [Config] Add iscsi_ibft and iscsi_boot_sysfs to generic inclusion list + - LP: #1511006 + * [Config] CONFIG_AUFS_EXPORT=y + - LP: #1121699 + * Revert "KVM: x86: apply guest MTRR virtualization on host reserved + pages" + - LP: #1509886 + * Revert "KVM: SVM: use NPT page attributes" + - LP: #1509886 + * Revert "KVM: SVM: Sync g_pat with guest-written PAT value" + - LP: #1509886 + * Revert "cgroup: simplify threadgroup locking" + - LP: #1509886 + * Revert "sched, cgroup: replace signal_struct->group_rwsem with a global + percpu_rwsem" + - LP: #1509886 + * Revert "ARM64: unwind: Fix PC calculation" + - LP: #1514889 + * Revert "serial: 8250_dma: don't bother DMA with small transfers" + - LP: #1514889 + * Revert "md: allow a partially recovered device to be hot-added to an + array." + - LP: #1514889 + * arm64: Change memcpy in kernel to use the copy template file + - LP: #1508471 + * arm64: copy_to-from-in_user optimization using copy template + - LP: #1508471 + * Input: elan_i2c - enable ELAN0600 acpi panels + - LP: #1439111 + * e1000e: Fix tight loop implementation of systime read algorithm + * arm: KVM: Fix incorrect device to IPA mapping + - LP: #1509886 + * KVM: vmx: fix VPID is 0000H in non-root operation + - LP: #1509886 + * kvm: don't try to register to KVM_FAST_MMIO_BUS for non mmio eventfd + - LP: #1509886 + * kvm: fix zero length mmio searching + - LP: #1509886 + * kvm: factor out core eventfd assign/deassign logic + - LP: #1509886 + * kvm: fix double free for fast mmio eventfd + - LP: #1509886 + * arm: KVM: Disable virtual timer even if the guest is not using it + - LP: #1509886 + * kvm: svm: reset mmu on VCPU reset + - LP: #1509886 + * KVM: x86: trap AMD MSRs for the TSeg base and mask + - LP: #1509886 + * KVM: PPC: Book3S: Take the kvm->srcu lock in + kvmppc_h_logical_ci_load/store() + - LP: #1509886 + * KVM: PPC: Book3S HV: Pass the correct trap argument to + kvmhv_commence_exit + - LP: #1509886 + * time: Fix timekeeping_freqadjust()'s incorrect use of abs() instead of + abs64() + - LP: #1509886 + * target/iscsi: Fix np_ip bracket issue by removing np_ip + - LP: #1509886 + * scsi: fix scsi_error_handler vs. scsi_host_dev_release race + - LP: #1509886 + * target: Attach EXTENDED_COPY local I/O descriptors to xcopy_pt_sess + - LP: #1509886 + * target: Fix PR registration + APTPL RCU conversion regression + - LP: #1509886 + * iser-target: remove command with state ISTATE_REMOVE + - LP: #1509886 + * iser-target: Put the reference on commands waiting for unsol data + - LP: #1509886 + * toshiba_acpi: Fix hotkeys registration on some toshiba models + - LP: #1509886 + * perf/x86/intel: Fix constraint access + - LP: #1509886 + * locking/qspinlock/x86: Fix performance regression under unaccelerated + VMs + - LP: #1509886 + * locking/qspinlock/x86: Only emit the test-and-set fallback when + building guest support + - LP: #1509886 + * perf tools: Fix copying of /proc/kcore + - LP: #1509886 + * ARM: 8401/1: perf: Set affinity for PPI based PMUs + - LP: #1509886 + * perf hists: Update the column width for the "srcline" sort key + - LP: #1509886 + * perf stat: Get correct cpu id for print_aggr + - LP: #1509886 + * perf tools: Add missing forward declaration of struct map to + probe-event.h + - LP: #1509886 + * perf tools: Add empty Build files for architectures lacking them + - LP: #1509886 + * perf tools: Fix parse_events_add_pmu caller + - LP: #1509886 + * perf header: Fixup reading of HEADER_NRCPUS feature + - LP: #1509886 + * perf probe: Use existing routine to look for a kernel module by + dso->short_name + - LP: #1509886 + * ARCv2: [axs103_smp] Reduce clk for SMP FPGA configs + - LP: #1509886 + * watchdog: sunxi: fix activation of system reset + - LP: #1509886 + * watchdog: imgpdc: Unregister restart handler on remove + - LP: #1509886 + * sched: access local runqueue directly in single_task_running + - LP: #1509886 + * hwmon: (nct6775) Swap STEP_UP_TIME and STEP_DOWN_TIME registers for + most chips + - LP: #1509886 + * ARM: fix Thumb2 signal handling when ARMv6 is enabled + - LP: #1509886 + * ARM: 8429/1: disable GCC SRA optimization + - LP: #1509886 + * windfarm: decrement client count when unregistering + - LP: #1509886 + * ARM: 8425/1: kgdb: Don't try to stop the machine when setting + breakpoints + - LP: #1509886 + * ARM: dts: omap5-uevm.dts: fix i2c5 pinctrl offsets + - LP: #1509886 + * ARM: dts: omap3-beagle: make i2c3, ddc and tfp410 gpio work again + - LP: #1509886 + * ARM: pxa: ssp: Fix build error by removing originally incorrect DT + binding + - LP: #1509886 + * ARM: EXYNOS: reset Little cores when cpu is up + - LP: #1509886 + * ARM: dts: sunxi: Raise minimum CPU voltage for sun7i-a20 to meet SoC + specifications + - LP: #1509886 + * ARM: dts: Fix wrong clock binding for sysmmu_fimd1_1 on exynos5420 + - LP: #1509886 + * ARM: dts: fix usb pin control for imx-rex dts + - LP: #1509886 + * dax: fix O_DIRECT I/O to the last block of a blockdev + - LP: #1509886 + * blockdev: don't set S_DAX for misaligned partitions + - LP: #1509886 + * block: blkg_destroy_all() should clear q->root_blkg and ->root_rl.blkg + - LP: #1509886 + * dmaengine: at_xdmac: change block increment addressing mode + - LP: #1509886 + * dmaengine: at_xdmac: clean used descriptor + - LP: #1509886 + * dmaengine: dw: properly read DWC_PARAMS register + - LP: #1509886 + * dmaengine: at_xdmac: fix bug in prep_dma_cyclic + - LP: #1509886 + * dmaengine: pxa_dma: fix initial list move + - LP: #1509886 + * pmem: add proper fencing to pmem_rw_page() + - LP: #1509886 + * x86/apic: Serialize LVTT and TSC_DEADLINE writes + - LP: #1509886 + * x86/alternatives: Make optimize_nops() interrupt safe and synced + - LP: #1509886 + * x86/platform: Fix Geode LX timekeeping in the generic x86 build + - LP: #1509886 + * x86/ioapic: Force affinity setting in setup_ioapic_dest() + - LP: #1509886 + * x86/pci/intel_mid_pci: Work around for IRQ0 assignment + - LP: #1509886 + * x86/paravirt: Replace the paravirt nop with a bona fide empty function + - LP: #1509886 + * x86/nmi/64: Fix a paravirt stack-clobbering bug in the NMI code + - LP: #1509886 + * Use WARN_ON_ONCE for missing X86_FEATURE_NRIPS + - LP: #1509886 + * x86/efi: Fix boot crash by mapping EFI memmap entries bottom-up at + runtime, instead of top-down + - LP: #1509886 + * x86/kexec: Fix kexec crash in syscall kexec_file_load() + - LP: #1509886 + * x86/process: Add proper bound checks in 64bit get_wchan() + - LP: #1509886 + * x86/mm: Set NX on gap between __ex_table and rodata + - LP: #1509886 + * x86/xen: Support kexec/kdump in HVM guests by doing a soft reset + - LP: #1509886 + * leds:lp55xx: Correct Kconfig dependency for f/w user helper + - LP: #1509886 + * leds/led-class: Add missing put_device() + - LP: #1509886 + * sched/core: Fix TASK_DEAD race in finish_task_switch() + - LP: #1509886 + * s390/compat: correct uc_sigmask of the compat signal frame + - LP: #1509886 + * s390/boot/decompression: disable floating point in decompressor + - LP: #1509886 + * memcg: make mem_cgroup_read_stat() unsigned + - LP: #1509886 + * spi: Fix documentation of spi_alloc_master() + - LP: #1509886 + * spi: xtensa-xtfpga: fix register endianness + - LP: #1509886 + * spi: bcm2835: BUG: fix wrong use of PAGE_MASK + - LP: #1509886 + * spi: spi-pxa2xx: Check status register to determine if SSSR_TINT is + disabled + - LP: #1509886 + * spi: spidev: fix possible NULL dereference + - LP: #1509886 + * mm: migrate: hugetlb: putback destination hugepage to active list + - LP: #1509886 + * lib/iommu-common.c: do not try to deref a null iommu->lazy_flush() + pointer when n < pool->hint + - LP: #1509886 + * ocfs2/dlm: fix deadlock when dispatch assert master + - LP: #1509886 + * mm: hugetlbfs: skip shared VMAs when unmapping private pages to satisfy + a fault + - LP: #1509886 + * memcg: fix dirty page migration + - LP: #1509886 + * ALSA: hda/tegra - async probe for avoiding module loading deadlock + - LP: #1509886 + * ALSA: hda - Disable power_save_node for Thinkpads + - LP: #1509886 + * ALSA: synth: Fix conflicting OSS device registration on AWE32 + - LP: #1509886 + * ALSA: hda: Add dock support for ThinkPad T550 + - LP: #1509886 + * ALSA: hda - Apply SPDIF pin ctl to MacBookPro 12,1 + - LP: #1509886 + * ALSA: hda - Disable power_save_node for IDT 92HD73xx chips + - LP: #1509886 + * ASoC: pxa: pxa2xx-ac97: fix dma requestor lines + - LP: #1509886 + * ASoC: fix broken pxa SoC support + - LP: #1509886 + * ASoC: dwc: correct irq clear method + - LP: #1509886 + * ASoC: db1200: Fix DAI link format for db1300 and db1550 + - LP: #1509886 + * ASoC: sgtl5000: fix wrong register MIC_BIAS_VOLTAGE setup on probe + - LP: #1509886 + * ASoC: tas2552: fix dBscale-min declaration + - LP: #1509886 + * btrfs: skip waiting on ordered range for special files + - LP: #1509886 + * Btrfs: fix read corruption of compressed and shared extents + - LP: #1509886 + * Btrfs: update fix for read corruption of compressed and shared extents + - LP: #1509886 + * tools/lguest: Fix redefinition of struct virtio_pci_cfg_cap + - LP: #1509886 + * PCI: Fix devfn for VPD access through function 0 + - LP: #1509886 + * PCI: Use function 0 VPD for identical functions, regular VPD for others + - LP: #1509886 + * PCI: Clear IORESOURCE_UNSET when clipping a bridge window + - LP: #1509886 + * dm thin: disable discard support for thin devices if pool's is disabled + - LP: #1509886 + * dm crypt: constrain crypt device's max_segment_size to PAGE_SIZE + - LP: #1509886 + * ath10k: fix dma_mapping_error() handling + - LP: #1509886 + * svcrdma: Fix send_reply() scatter/gather set-up + - LP: #1509886 + * staging: ion: fix corruption of ion_import_dma_buf + - LP: #1509886 + * USB: option: add ZTE PIDs + - LP: #1509886 + * md/raid0: update queue parameter in a safer location. + - LP: #1509886 + * md/raid0: apply base queue limits *before* disk_stack_limits + - LP: #1509886 + * dm raid: fix round up of default region size + - LP: #1509886 + * netfilter: bridge: fix IPv6 packets not being bridged with + CONFIG_IPV6=n + - LP: #1509886 + * netfilter: nfnetlink: work around wrong endianess in res_id field + - LP: #1509886 + * netfilter: nf_tables: Use 32 bit addressing register from + nft_type_to_reg() + - LP: #1509886 + * netfilter: ipset: Out of bound access in hash:net* types fixed + - LP: #1509886 + * netfilter: ipset: Fixing unnamed union init + - LP: #1509886 + * netfilter: nf_log: wait for rcu grace after logger unregistration + - LP: #1509886 + * netfilter: nft_compat: skip family comparison in case of NFPROTO_UNSPEC + - LP: #1509886 + * netfilter: nf_log: don't zap all loggers on unregister + - LP: #1509886 + * regulator: core: Correct return value check in regulator_resolve_supply + - LP: #1509886 + * regulator: axp20x: Fix enable bit indexes for DCDC4 and DCDC5 + - LP: #1509886 + * regulator: core: Handle probe deferral from DT when resolving supplies + - LP: #1509886 + * Bluetooth: Delay check for conn->smp in smp_conn_security() + - LP: #1509886 + * nfs: fix v4.2 SEEK on files over 2 gigs + - LP: #1509886 + * NFS: Do cleanup before resetting pageio read/write to mds + - LP: #1509886 + * NFSv4: Recovery of recalled read delegations is broken + - LP: #1509886 + * nfs: fix pg_test page count calculation + - LP: #1509886 + * NFS: Fix a write performance regression + - LP: #1509886 + * Fix sec=krb5 on smb3 mounts + - LP: #1509886 + * disabling oplocks/leases via module parm enable_oplocks broken for SMB3 + - LP: #1509886 + * Do not fall back to SMBWriteX in set_file_size error cases + - LP: #1509886 + * drm/qxl: only report first monitor as connected if we have no state + - LP: #1509886 + * drm/qxl: recreate the primary surface when the bo is not primary + - LP: #1509886 + * drm/amdgpu: fix overflow on 32bit systems + - LP: #1509886 + * drm/amdgpu: Disable UVD PG + - LP: #1509886 + * drm/amdgpu: fix the UVD suspend sequence order + - LP: #1509886 + * drm/amdgpu: make UVD handle checking more strict + - LP: #1509886 + * drm/amdgpu: Fix max_vblank_count value for current display engines + - LP: #1509886 + * drm/amdgpu: Restore LCD backlight level on resume + - LP: #1509886 + * drm/i915/bios: handle MIPI Sequence Block v3+ gracefully + - LP: #1509886 + * drm: Reject DRI1 hw lock ioctl functions for kms drivers + - LP: #1509886 + * drm/radeon: Restore LCD backlight level on resume (>= R5xx) + - LP: #1509886 + * drm/dp/mst: fixup handling hotplug on port removal. + - LP: #1509886 + * drm/dp/mst: drop cancel work sync in the mstb destroy path (v2) + - LP: #1509886 + * xhci: give command abortion one more chance before killing xhci + - LP: #1509886 + * xhci: Move xhci_pme_quirk() behind #ifdef CONFIG_PM + - LP: #1509886 + * usb: xhci: lock mutex on xhci_stop + - LP: #1509886 + * usb: xhci: Clear XHCI_STATE_DYING on start + - LP: #1509886 + * usb: xhci: stop everything on the first call to xhci_stop + - LP: #1509886 + * usb: xhci: exit early in xhci_setup_device() if we're halted or dying + - LP: #1509886 + * xhci: change xhci 1.0 only restrictions to support xhci 1.1 + - LP: #1509886 + * xhci: init command timeout timer earlier to avoid deleting it + uninitialized + - LP: #1509886 + * usb: xhci: Add support for URB_ZERO_PACKET to bulk/sg transfers + - LP: #1509886 + * batman-adv: Make DAT capability changes atomic + - LP: #1509886 + * thermal: cpu_cooling: don't call kcalloc() under rcu_read_lock + - LP: #1509886 + * thermal: cpu_cooling: free power table on error or when unregistering + - LP: #1509886 + * hv: util: checking the wrong variable + - LP: #1509886 + * mmc: dw_mmc: handle data blocks > than 4kB if IDMAC is used + - LP: #1509886 + * usb: chipidea: imx: fix a typo for imx6sx + - LP: #1509886 + * cifs: use server timestamp for ntlmv2 authentication + - LP: #1509886 + * irqchip/atmel-aic5: Use per chip mask caches in mask/unmask() + - LP: #1509886 + * irqchip/gic-v3-its: Add missing cache flushes + - LP: #1509886 + * docs: update HOWTO for 3.x -> 4.x versioning + - LP: #1509886 + * extcon: Fix signedness bugs about break error handling + - LP: #1509886 + * extcon: Fix attached value returned by is_extcon_changed + - LP: #1509886 + * mtd: pxa3xx_nand: add a default chunk size + - LP: #1509886 + * mtd: nand: sunxi: fix sunxi_nand_chips_cleanup() + - LP: #1509886 + * mtd: nand: sunxi: fix OOB handling in ->write_xxx() functions + - LP: #1509886 + * hpsa: fix an sprintf() overflow in the reset handler + - LP: #1509886 + * PM / AVS: rockchip-io: depend on CONFIG_POWER_AVS + - LP: #1509886 + * device property: fix potential NULL pointer dereference + - LP: #1509886 + * ath10k: fix per-vif queue locking + - LP: #1509886 + * ath10k: reject 11b tx fragmentation configuration + - LP: #1509886 + * ath10k: fix peer limit enforcement + - LP: #1509886 + * ath10k: wake up offchannel queue properly + - LP: #1509886 + * ath10k: wake up queue upon vif creation + - LP: #1509886 + * pcmcia: sa11x0: fix missing clk_put() in sa11x0 socket drivers + - LP: #1509886 + * ipr: Enable SIS pipe commands for SIS-32 devices. + - LP: #1509886 + * regmap: debugfs: Ensure we don't underflow when printing access masks + - LP: #1509886 + * regmap: debugfs: Don't bother actually printing when calculating max + length + - LP: #1509886 + * security: fix typo in security_task_prctl + - LP: #1509886 + * usb: musb: dsps: fix polling in device-only mode + - LP: #1509886 + * usb: chipidea: udc: using the correct stall implementation + - LP: #1509886 + * usb: Use the USB_SS_MULT() macro to get the burst multiplier. + - LP: #1509886 + * usb: phy: phy-generic: Fix reset behaviour on legacy boot + - LP: #1509886 + * usb: musb: cppi41: allow it to work again + - LP: #1509886 + * USB: chaoskey read offset bug + - LP: #1509886 + * usb: Add device quirk for Logitech PTZ cameras + - LP: #1509886 + * USB: Add reset-resume quirk for two Plantronics usb headphones. + - LP: #1509886 + * crypto: marvell - properly handle CRYPTO_TFM_REQ_MAY_BACKLOG-flagged + requests + - LP: #1509886 + * cpu/cacheinfo: Fix teardown path + - LP: #1509886 + * cpufreq: dt: Tolerance applies on both sides of target voltage + - LP: #1509886 + * MIPS: Fix console output for Fulong2e system + - LP: #1509886 + * MIPS: bootmem: Fix mapstart calculation for contiguous maps + - LP: #1509886 + * MIPS: BPF: Avoid unreachable code on little endian + - LP: #1509886 + * MIPS: BPF: Fix build on pre-R2 little endian CPUs + - LP: #1509886 + * MIPS: dma-default: Fix 32-bit fall back to GFP_DMA + - LP: #1509886 + * MIPS: CPS: Stop dangling delay slot from has_mt. + - LP: #1509886 + * MIPS: CPS: Don't include MT code in non-MT kernels. + - LP: #1509886 + * MIPS: CPS: #ifdef on CONFIG_MIPS_MT_SMP rather than CONFIG_MIPS_MT + - LP: #1509886 + * batman-adv: Make NC capability changes atomic + - LP: #1509886 + * batman-adv: Make TT capability changes atomic + - LP: #1509886 + * batman-adv: Make MCAST capability changes atomic + - LP: #1509886 + * batman-adv: Fix potential synchronization issues in mcast tvlv handler + - LP: #1509886 + * batman-adv: Fix potentially broken skb network header access + - LP: #1509886 + * tools lib traceevent: Fix string handling in heterogeneous arch + environments + - LP: #1509886 + * powerpc/MSI: Fix race condition in tearing down MSI interrupts + - LP: #1509886 + * rsi: Fix possible leak when loading firmware + - LP: #1509886 + * UBIFS: Kill unneeded locking in ubifs_init_security + - LP: #1509886 + * UBI: Validate data_size + - LP: #1509886 + * UBI: return ENOSPC if no enough space available + - LP: #1509886 + * net: via/Kconfig: GENERIC_PCI_IOMAP required if PCI not selected + - LP: #1509886 + * iscsi-target: Avoid OFMarker + IFMarker negotiation + - LP: #1509886 + * mmc: core: Don't return an error for CD/WP GPIOs when GPIOLIB is unset + - LP: #1509886 + * mmc: core: fix dead loop of mmc_retune + - LP: #1509886 + * arm64/efi: Fix boot crash by not padding between EFI_MEMORY_RUNTIME + regions + - LP: #1509886 + * arm64: ftrace: fix function_graph tracer panic + - LP: #1509886 + * arm64: readahead: fault retry breaks mmap file read random detection + - LP: #1509886 + * m68k: Define asmlinkage_protect + - LP: #1509886 + * xen/blkback: free requests on disconnection + - LP: #1509886 + * net/xen-netfront: only napi_synchronize() if running + - LP: #1509886 + * igb: do not re-init SR-IOV during probe + - LP: #1509886 + * genirq: Fix race in register_irq_proc() + - LP: #1509886 + * clocksource: Fix abs() usage w/ 64bit values + - LP: #1509886 + * md/bitmap: don't pass -1 to bitmap_storage_alloc. + - LP: #1509886 + * nfs/filelayout: Fix NULL reference caused by double freeing of fh_array + - LP: #1509886 + * mmc: sdhci-pxav3: remove broken clock base quirk for Armada 38x sdhci + driver + - LP: #1509886 + * mmc: sdhci-pxav3: disable clock inversion for HS MMC cards + - LP: #1509886 + * mmc: sdhci-pxav3: fix error handling of armada_38x_quirks + - LP: #1509886 + * cpufreq: acpi_cpufreq: prevent crash on reading freqdomain_cpus + - LP: #1509886 + * clk: ti: fix dual-registration of uart4_ick + - LP: #1509886 + * clk: ti: clk-7xx: Remove hardwired ABE clock configuration + - LP: #1509886 + * clk: samsung: fix cpu clock's flags checking + - LP: #1509886 + * namei: results of d_is_negative() should be checked after dentry + revalidation + - LP: #1509886 + * dm: fix AB-BA deadlock in __dm_destroy() + - LP: #1509886 + * dm cache: fix NULL pointer when switching from cleaner policy + - LP: #1509886 + * staging: speakup: fix speakup-r regression + - LP: #1509886 + * tty: fix stall caused by missing memory barrier in drivers/tty/n_tty.c + - LP: #1509886 + * drivers/tty: require read access for controlling terminal + - LP: #1509886 + * serial: 8250: add uart_config entry for PORT_RT2880 + - LP: #1509886 + * serial: atmel: fix error path of probe function + - LP: #1509886 + * mm/slab: fix unexpected index mapping result of + kmalloc_size(INDEX_NODE+1) + - LP: #1509886 + * blk-mq: avoid setting hctx->tags->cpumask before allocation + - LP: #1509886 + * sched/preempt: Fix cond_resched_lock() and cond_resched_softirq() + - LP: #1509886 + * 3w-9xxx: don't unmap bounce buffered commands + - LP: #1509886 + * sched/preempt, xen: Use need_resched() instead of should_resched() + - LP: #1509886 + * sched/preempt, powerpc, kvm: Use need_resched() instead of + should_resched() + - LP: #1509886 + * Linux 4.2.4 + - LP: #1509886 + * namei: permit linking with CAP_FOWNER in userns + - LP: #1498162 + * iwlwifi: pci: add a few more PCI subvendor IDs for the 7265 series + - LP: #1510616 + * drm/nouveau/gem: return only valid domain when there's only one + - LP: #1510301 + * net/ibm/emac: bump version numbers for correct work with ethtool + - LP: #1511513 + * l2tp: protect tunnel->del_work by ref_count + - LP: #1511513 + * af_unix: Convert the unix_sk macro to an inline function for type + safety + - LP: #1511513 + * af_unix: return data from multiple SKBs on recv() with MSG_PEEK flag + - LP: #1511513 + * net/unix: fix logic about sk_peek_offset + - LP: #1511513 + * skbuff: Fix skb checksum flag on skb pull + - LP: #1511513 + * skbuff: Fix skb checksum partial check. + - LP: #1511513 + * net: dsa: fix preparation of a port STP update + - LP: #1511513 + * inet: fix races in reqsk_queue_hash_req() + - LP: #1511513 + * net: add pfmemalloc check in sk_add_backlog() + - LP: #1511513 + * ppp: don't override sk->sk_state in pppoe_flush_dev() + - LP: #1511513 + * inet: fix race in reqsk_queue_unlink() + - LP: #1511513 + * bpf: fix panic in SO_GET_FILTER with native ebpf programs + - LP: #1511513 + * ovs: do not allocate memory from offline numa node + - LP: #1511513 + * act_mirred: clear sender cpu before sending to tx + - LP: #1511513 + * bpf: clear sender_cpu before xmit + - LP: #1511513 + * ipv6: Don't call with rt6_uncached_list_flush_dev + - LP: #1511513 + * ethtool: Use kcalloc instead of kmalloc for ethtool_get_strings + - LP: #1511513 + * tipc: move fragment importance field to new header position + - LP: #1511513 + * netlink: Trim skb to alloc size to avoid MSG_TRUNC + - LP: #1511513 + * drm: Fix locking for sysfs dpms file + - LP: #1511513 + * crypto: sparc - initialize blkcipher.ivsize + - LP: #1511513 + * crypto: camellia_aesni_avx - Fix CPU feature checks + - LP: #1511513 + * crypto: ahash - ensure statesize is non-zero + - LP: #1511513 + * memcg: convert threshold to bytes + - LP: #1511513 + * btrfs: check unsupported filters in balance arguments + - LP: #1511513 + * btrfs: fix use after free iterating extrefs + - LP: #1511513 + * arm64: errata: use KBUILD_CFLAGS_MODULE for erratum #843419 + - LP: #1511513 + * ARM: ux500: simplify secondary CPU boot + - LP: #1511513 + * nfsd/blocklayout: accept any minlength + - LP: #1511513 + * mfd: max77843: Fix max77843_chg_init() return on error + - LP: #1511513 + * i2c: rcar: enable RuntimePM before registering to the core + - LP: #1511513 + * i2c: s3c2410: enable RuntimePM before registering to the core + - LP: #1511513 + * i2c: designware: Do not use parameters from ACPI on Dell Inspiron 7348 + - LP: #1511513 + * i2c: designware-platdrv: enable RuntimePM before registering to the + core + - LP: #1511513 + * workqueue: make sure delayed work run in local cpu + - LP: #1511513 + * KVM: x86: clean up kvm_arch_vcpu_runnable + - LP: #1511513 + * KVM: x86: fix SMI to halted VCPU + - LP: #1511513 + * KVM: x86: fix RSM into 64-bit protected mode + - LP: #1511513 + * drm/qxl: fix framebuffer dirty rectangle tracking. + - LP: #1511513 + * drm/nouveau/fbcon: take runpm reference when userspace has an open fd + - LP: #1511513 + * drm/dp/mst: make mst i2c transfer code more robust. + - LP: #1511513 + * drm/radeon: attach tile property to mst connector + - LP: #1511513 + * drm/radeon: add pm sysfs files late + - LP: #1511513 + * drm/amdgpu: add pm sysfs files late + - LP: #1511513 + * drm/amdgpu: fix num_crtc on CZ + - LP: #1511513 + * drm/amdgpu: check before checking pci bridge registers + - LP: #1511513 + * drm/amdgpu: Keep the pflip interrupts always enabled v7 + - LP: #1511513 + * dm thin: fix missing pool reference count decrement in pool_ctr error + path + - LP: #1511513 + * rbd: fix double free on rbd_dev->header_name + - LP: #1511513 + * timekeeping: Increment clock_was_set_seq in timekeeping_init() + - LP: #1511513 + * pinctrl: imx25: ensure that a pin with id i is at position i in the + info array + - LP: #1511513 + * arm64: Fix THP protection change logic + - LP: #1511513 + * svcrdma: handle rdma read with a non-zero initial page offset + - LP: #1511513 + * Linux 4.2.5 + - LP: #1511513 + * x86/vm86: Set thread.vm86 to NULL on fork/clone + - LP: #1499089 + * crypto: 842 - Add CRC and validation support + - LP: #1497878 + * mac80211: Fix hwflags debugfs file format + - LP: #1514889 + * ath9k: declare required extra tx headroom + - LP: #1514889 + * mmc: core: Fix init_card in 52Mhz + - LP: #1514889 + * iwlwifi: dvm: fix D3 firmware PN programming + - LP: #1514889 + * iwlwifi: fix firmware filename for 3160 + - LP: #1514889 + * rtlwifi: rtl8821ae: Fix system lockups on boot + - LP: #1514889 + * iwlwifi: mvm: clear csa countdown when AP is stopped + - LP: #1514889 + * iwlwifi: mvm: fix D3 CCMP TX PN assignment + - LP: #1514889 + * iwlwifi: mvm: fix D3 firmware PN programming + - LP: #1514889 + * iwlwifi: mvm: init card correctly on ctkill exit check + - LP: #1514889 + * iwlwifi: mvm: flush fw_dump_wk when mvm fails to start + - LP: #1514889 + * iommu/vt-d: fix range computation when making room for large pages + - LP: #1514889 + * iommu/amd: Fix BUG when faulting a PROT_NONE VMA + - LP: #1514889 + * iommu/amd: Don't clear DTE flags when modifying it + - LP: #1514889 + * powerpc/rtas: Validate rtas.entry before calling enter_rtas() + - LP: #1514889 + * drm: fix mutex leak in drm_dp_get_mst_branch_device + - LP: #1514889 + * drm: Correct arguments to list_tail_add in create blob ioctl + - LP: #1514889 + * drm: crtc: integer overflow in drm_property_create_blob() + - LP: #1514889 + * m88ds3103: use own reg update_bits() implementation + - LP: #1514889 + * si2157: Bounds check firmware + - LP: #1514889 + * si2168: Bounds check firmware + - LP: #1514889 + * rtl28xxu: fix control message flaws + - LP: #1514889 + * KVM: arm: use GIC support unconditionally + - LP: #1514889 + * ALSA: hdac: Explicitly add io.h + - LP: #1514889 + * ALSA: hda - Fix inverted internal mic on Lenovo G50-80 + - LP: #1504778, #1514889 + * ALSA: hda - Fix deadlock at error in building PCM + - LP: #1514889 + * ASoC: Add info callback for SX_TLV controls + - LP: #1514889 + * ASoC: wm8904: Correct number of EQ registers + - LP: #1514889 + * x86/efi: Fix multiple GOP device support + - LP: #1514889 + * x86/ioapic: Prevent NULL pointer dereference in setup_ioapic_dest() + - LP: #1514889 + * mm: make sendfile(2) killable + - LP: #1514889 + * fault-inject: fix inverted interval/probability values in printk + - LP: #1514889 + * tracing: Have stack tracer force RCU to be watching + - LP: #1514889 + * bus: arm-ccn: Fix irq affinity setting on CPU migration + - LP: #1514889 + * drm/radeon/dpm: don't add pwm attributes if DPM is disabled + - LP: #1514889 + * drm/amdgpu: add missing dpm check for KV dpm late init + - LP: #1514889 + * drm/i915: Flush pipecontrol post-sync writes + - LP: #1514889 + * drm/i915: Restore lost DPLL register write on gen2-4 + - LP: #1514889 + * drm/i915: Deny wrapping an userptr into a framebuffer + - LP: #1514889 + * drm/radeon: don't try to recreate sysfs entries on resume + - LP: #1514889 + * drm/amdgpu: don't try to recreate sysfs entries on resume + - LP: #1514889 + * drm/radeon: fix dpms when driver backlight control is disabled + - LP: #1514889 + * drm/radeon: move bl encoder assignment into bl init + - LP: #1514889 + * iio: mxs-lradc: Fix temperature offset + - LP: #1514889 + * iio: st_accel: fix interrupt handling on LIS3LV02 + - LP: #1514889 + * iio: accel: sca3000: memory corruption in sca3000_read_first_n_hw_rb() + - LP: #1514889 + * rbd: require stable pages if message data CRCs are enabled + - LP: #1514889 + * rbd: don't leak parent_spec in rbd_dev_probe_parent() + - LP: #1514889 + * rbd: prevent kernel stack blow up on rbd map + - LP: #1514889 + * ARM: EXYNOS: Fix double of_node_put() when parsing child power domains + - LP: #1514889 + * ARM: orion: Fix DSA platform device after mvmdio conversion + - LP: #1514889 + * ARM: mvebu: correct a385-db-ap compatible string + - LP: #1514889 + * ARM: dts: berlin: change BG2Q's USB PHY compatible + - LP: #1514889 + * ARM: dts: Fix audio card detection on Peach boards + - LP: #1514889 + * ARM: dts: imx7d: Fix UART2 base address + - LP: #1514889 + * ARM: dts: am57xx-beagle-x15: set VDD_SD to always-on + - LP: #1514889 + * ARM: ux500: modify initial levelshifter status + - LP: #1514889 + * ARM: OMAP1: fix incorrect INT_DMA_LCD + - LP: #1514889 + * ARM: 8445/1: fix vdsomunge not to depend on glibc specific byteswap.h + - LP: #1514889 + * ARM: 8449/1: fix bug in vdsomunge swab32 macro + - LP: #1514889 + * arm64: kernel: fix tcr_el1.t0sz restore on systems with extended idmap + - LP: #1514889 + * block: don't release bdi while request_queue has live references + - LP: #1514889 + * dm btree remove: fix a bug when rebalancing nodes after removal + - LP: #1514889 + * dm cache: the CLEAN_SHUTDOWN flag was not being set + - LP: #1514889 + * dm btree: fix leak of bufio-backed block in btree_split_beneath error + path + - LP: #1514889 + * nvme: fix 32-bit build warning + - LP: #1514889 + * USB: qcserial: add Sierra Wireless MC74xx/EM74xx + - LP: #1514889 + * i2c: mv64xxx: really allow I2C offloading + - LP: #1514889 + * clkdev: fix clk_add_alias() with a NULL alias device name + - LP: #1514889 + * fbcon: initialize blink interval before calling fb_set_par + - LP: #1514889 + * xhci: handle no ping response error properly + - LP: #1514889 + * xhci: Add spurious wakeup quirk for LynxPoint-LP controllers + - LP: #1514889 + * xen-blkfront: check for null drvdata in blkback_changed + (XenbusStateClosing) + - LP: #1514889 + * module: Fix locking in symbol_put_addr() + - LP: #1514889 + * PCI: Prevent out of bounds access in numa_node override + - LP: #1514889 + * ovl: free stack of paths in ovl_fill_super + - LP: #1514889 + * ovl: free lower_mnt array in ovl_put_super + - LP: #1514889 + * ovl: use O_LARGEFILE in ovl_copy_up() + - LP: #1514889 + * ovl: fix dentry reference leak + - LP: #1514889 + * ovl: fix open in stacked overlay + - LP: #1514889 + * Input: alps - only the Dell Latitude D420/430/620/630 have separate + stick button bits + - LP: #1514889 + * crypto: api - Only abort operations on fatal signal + - LP: #1514889 + * md/raid1: submit_bio_wait() returns 0 on success + - LP: #1514889 + * md/raid10: submit_bio_wait() returns 0 on success + - LP: #1514889 + * md/raid5: fix locking in handle_stripe_clean_event() + - LP: #1514889 + * EDAC, sb_edac: Fix TAD presence check for sbridge_mci_bind_devs() + - LP: #1514889 + * irqchip/tegra: Propagate IRQ type setting to parent + - LP: #1514889 + * mvsas: Fix NULL pointer dereference in mvs_slot_task_free + - LP: #1514889 + * netfilter: ipset: Fix sleeping memory allocation in atomic context + - LP: #1514889 + * btrfs: fix possible leak in btrfs_ioctl_balance() + - LP: #1514889 + * kvm: irqchip: fix memory leak + - LP: #1514889 + * thermal: exynos: Fix register read in TMU + - LP: #1514889 + * um: Fix kernel mode fault condition + - LP: #1514889 + * blk-mq: fix use-after-free in blk_mq_free_tag_set() + - LP: #1514889 + * IB/cm: Fix rb-tree duplicate free and use-after-free + - LP: #1514889 + * sched/deadline: Fix migration of SCHED_DEADLINE tasks + - LP: #1514889 + * cpufreq: intel_pstate: Fix divide by zero on Knights Landing (KNL) + - LP: #1514889 + * arm64: compat: fix stxr failure case in SWP emulation + - LP: #1514889 + * NVMe: Fix memory leak on retried commands + - LP: #1514889 + * drm/vmwgfx: Fix up user_dmabuf refcounting + - LP: #1514889 + * thp: use is_zero_pfn() only after pte_present() check + - LP: #1514889 + * pinctrl: baytrail: Serialize all register access + - LP: #1514889 + * pinctrl: baytrail: Use raw_spinlock for locking + - LP: #1514889 + * xen: fix backport of previous kexec patch + - LP: #1514889 + * Linux 4.2.6 + - LP: #1514889 + + [ Ubuntu: 4.2.0-18.22 ] + + * KVM: x86: vmx: avoid guest->host DOS by intercepting #AC + - LP: #1513540 + - CVE-2015-5307 + + -- Luis Henriques Thu, 12 Nov 2015 11:10:08 +0000 + +linux-raspi2 (4.2.0-1014.21) wily; urgency=low + + [ Luis Henriques ] + + * Release Tracking Bug + - LP: #1509609 + * rebased on Ubuntu-4.2.0-17.21 + + [ Ubuntu: 4.2.0-17.21 ] + + * Release Tracking Bug + - LP: #1509480 + * SAUCE: storvsc: use small sg_tablesize on x86 + - LP: #1495983 + + -- Luis Henriques Mon, 26 Oct 2015 16:24:05 +0000 + +linux-raspi2 (4.2.0-1014.20) wily; urgency=low + + [ Brad Figg ] + + * Release Tracking Bug + - LP: #1509178 + + [ Andy Whitcroft ] + + * [Debian] rebuild should only trigger for non-linux packages + - LP: #1498862 + * [Packaging] Provides: virtualbox-guest-modules when appropriate + - LP: #1434579, #1507588 + + [ Matthew R. Ochs ] + + * SAUCE: (noup) cxlflash: Fix to avoid lock instrumentation rejection + - LP: #1508541 + * SAUCE: (noup) cxlflash: Fix to avoid bypassing context cleanup + - LP: #1508541 + + [ Upstream Kernel Changes ] + + * HID: lenovo: Use constants for axes names + - LP: #1508178 + * HID: lenovo: Add missing return-value check + - LP: #1508178 + * HID: lenovo: Hide middle-button press until release + - LP: #1508178 + + -- Brad Figg Fri, 23 Oct 2015 08:47:56 -0700 + +linux-raspi2 (4.2.0-1013.19) wily; urgency=low + + [ Tim Gardner ] + + * Release Tracking Bug + - LP: #1506972 + + [ Paolo Pisati ] + + * Pull in latest 4.2 based kernel changes from + https://github.com/raspberrypi/linux rpi-4.2.y + e3eba57f7c9ffba24f695f187b6578d56495998a + * Revert "SAUCE: raspi2 -- add overlays directory to dts-dirs to get the overlays installed" + * [Config] DMA_BCM2835=y, =m for the other newly introduced options + + [ Upstream Kernel Changes ] + + * spi: bcm2835: fix overflow in calculation of transfer time + * BCM270X_DT: Add SDIO overlay + * leds-gpio: Implement the brightness_get method + * RaspiDAC3 support + * bcm2835: camera: check for scene not being found + * BCM270X_DT: Use fixed-factor-clock for uart1 + * tpa6130a2: Add headphone switch control + * vchiq_arm: Sort out the vmalloc case + * config: Add SND_SOC_ADAU1701 module + * staging: fbtft: Add reset to fbtft_init_display_dt() + * bcm2835-mmc: Don't overwrite MMC capabilities from DT + * BCM270X_DT: mz61581: Set txbuflen to 32k + * backport: spi: bcm2835: BUG: fix wrong use of PAGE_MASK + * mt7601u: fix dma from stack address + * mt7601u: use correct ieee80211_rx variant + * mt7601u: fix tx status reporting contexts + * mt7601u: lock out rx path and tx status reporting + * config: Add CIFS_DFS_UPCALL, CIFS_ACL, CIFS_SMB2, CIFS_FSCACHE + * Add SMI driver + * Add SMI NAND driver + * BCM270X_DT: Document SMI overlay + * dwc_otg: Force host mode to fix incorrect compute module boards + * bcm2709: Remove custom barrier implementation it is no different to default + * config: Add CONFIG_UHID + * Add support for the HiFiBerry DAC+ Pro. + * dmaengine: bcm2708: Make legacy API available for bcm2835-dma + * dmaengine: bcm2835: Add slave dma support + * dmaengine: bcm2835: set residue_granularity field + * dmaengine: bcm2835: Load driver early and support legacy API + * dmaengine: bcm2835: Add debug option for setting wait states + * configs: Enable DMA_BCM2835 + * dmaengine: bcm2708: Change DT compatible string + * config: Add CONFIG_CRYPTO_USER_API_SKCIPHER + * config: Add options for supporting openlabs 802.15.4 radio + * BCM270X_DT: Add at86rf233 overlay + * bcm2835-gpiomem: Fix for ARCH_BCM2835 builds + * scripts/mkknlimg: Improve ARCH_BCM2835 detection + * BCM270X_DT: Make mmc overlay compatible with current firmware + * bcm2835-dma: Fix dreq not set for slave transfers + * bcm2835-dma: Limit cyclic transfers on lite channels to 32k + * BCM270X_DT: Reduce default at86rf233 SPI frequency + * bcm2708: Use #include in dtsi files. + * clk: bcm2835: Move under bcm/ with other Broadcom SoC clk drivers. + * clk: bcm2835: Add binding docs for the new platform clock driver. + * clk: bcm2835: Add support for programming the audio domain clocks + * clk: bcm2835: Also build the driver for downstream kernels. + * bcm2835: Add (disabled) devicetree for the audio clock manager. + * drm/atomic: fix null pointer access to mode_fixup callback + * Use dts-dirs feature for overlays. + + -- Tim Gardner Tue, 13 Oct 2015 17:24:07 -0700 + +linux-raspi2 (4.2.0-1012.18) wily; urgency=low + + [ Tim Gardner ] + + * Release Tracking Bug + - LP: #1504147 + * Rebased on Ubuntu-4.2.0-16.19 + * [Config] CONFIG_X86_LEGACY_VM86=y, CONFIG_VM86=y for i386 + - LP: #1499089 + * [Config] CONFIG_MODIFY_LDT_SYSCALL=y + - LP: #1499089 + * SAUCE: intel_pstate: Allow manually forcing the use of HWP on Skylake-S + * [Config] CONFIG_ARM64_ERRATUM_843419=n + - LP: #1502946 + * [Config] CONFIG_CAVIUM_ERRATUM_22375=y, CONFIG_CAVIUM_ERRATUM_23154=y + + [ Christophe Lombard ] + + * SAUCE: (noup) cxl: Fix number of allocated pages in SPA + - LP: #1499849 + + [ Matthew R. Ochs ] + + * SAUCE: (noup) cxlflash: Fix to avoid corrupting port selection mask + + [ Robert Richter ] + + * SAUCE: (noup) irqchip/gicv3-its: Add range check for number of + allocated pages + * SAUCE: (noup) irqchip/gicv3: Workaround for Cavium ThunderX erratum + 23154 + * SAUCE: (noup) irqchip/gicv3-its: Read typer register outside the loop + * SAUCE: (noup) irqchip/gicv3-its: Add HW revision detection and + configuration + * SAUCE: (noup) irqchip/gicv3-its: Workaround for Cavium ThunderX errata + 22375, 24313 + + [ Upstream Kernel Changes ] + + * x86/compat: Define ARCH_WANT_OLD_COMPAT_IPC only for 32-bit compat + - LP: #1499089 + * x86/compat: Clean up HAVE_UID16 config + - LP: #1499089 + * x86/compat: Separate ia32 and x32 compat ABIs + - LP: #1499089 + * x86/entry/vm86: Clean up saved_fs/gs + - LP: #1499089 + * x86/entry/vm86: Preserve 'orig_ax' + - LP: #1499089 + * x86/entry/vm86: Move userspace accesses to do_sys_vm86() + - LP: #1499089 + * x86/kconfig/32: Rename CONFIG_VM86 and default it to 'n' + - LP: #1499089 + * x86/ldt: Make modify_ldt() optional + - LP: #1499089 + * x86/vm86: Move vm86 fields out of 'thread_struct' + - LP: #1499089 + * x86/vm86: Move fields from 'struct kernel_vm86_struct' to 'struct vm86' + - LP: #1499089 + * x86/vm86: Eliminate 'struct kernel_vm86_struct' + - LP: #1499089 + * x86/vm86: Use the normal pt_regs area for vm86 + - LP: #1499089 + * x86/vm86: Move the vm86 IRQ definitions to vm86.h + - LP: #1499089 + * x86/vm86: Clean up vm86.h includes + - LP: #1499089 + * x86/vm86: Rename vm86->vm86_info to user_vm86 + - LP: #1499089 + * x86/vm86: Rename vm86->v86flags and v86mask + - LP: #1499089 + * x86/selftests, x86/vm86: Improve entry_from_vm86 selftest + - LP: #1499089 + * selftests/x86/vm86: Fix entry_from_vm86 test on 64-bit kernels + - LP: #1499089 + * x86/vm86: Block non-root vm86(old) if mmap_min_addr != 0 + - LP: #1499089 + * x86/vm86: Fix the misleading CONFIG_VM86 Kconfig help text + - LP: #1499089 + * netfilter: conntrack: use nf_ct_tmpl_free in CT/synproxy error paths + - LP: #1503902 + + -- Tim Gardner Thu, 08 Oct 2015 07:56:41 -0600 + +linux-raspi2 (4.2.0-1011.17) wily; urgency=low + + [ Tim Gardner ] + + * Rebased on Ubuntu-4.2.0-15.18 + + [ Andy Whitcroft ] + + * Revert "SAUCE: aufs3: mmap: Fix races in madvise_remove() and sys_msync()" + Was incorrectly backported. + + [ Ben Hutchings ] + + * SAUCE: aufs3: mmap: Fix races in madvise_remove() and sys_msync() + - CVE-2015-7312 + + -- Tim Gardner Wed, 07 Oct 2015 10:05:42 -0600 + +linux-raspi2 (4.2.0-1011.16) wily; urgency=low + + [ Tim Gardner ] + + * Release Tracking Bug + - LP: #1503268 + * Rebased on Ubuntu-4.2.0-15.17 + + -- Tim Gardner Tue, 06 Oct 2015 07:02:36 -0600 + +linux-raspi2 (4.2.0-1010.15) wily; urgency=low + + [ Tim Gardner ] + + * Revert "Make a Raspberry PI kernel image" + u-boot loads a vmlinuz just fine. + + -- Tim Gardner Wed, 30 Sep 2015 17:24:48 -0700 + +linux-raspi2 (4.2.0-1010.14) wily; urgency=low + + * Rebased on Ubuntu-4.2.0-13.15 + * UBUNTU: Make a Raspberry PI kernel image + + -- Tim Gardner Tue, 29 Sep 2015 11:02:18 -0700 + +linux-raspi2 (4.2.0-1009.13) wily; urgency=low + + [ Tim Gardner ] + + * Fix getabis + * Rebased on Ubuntu-4.2.0-12.14 + + -- Tim Gardner Fri, 25 Sep 2015 09:41:46 -0600 + +linux-raspi2 (4.2.0-1008.12) wily; urgency=low + + [ Tim Gardner ] + + * Revert "Disable debug package generation" + * Revert "Drop some package generation" + * Enable linux tools to be built + There are folks that would like to use the tools outside of Snappy, e.g., + in a regular Debian installation. + * Disable doc and source package generation + * Remove unused package definitions + * Fix dependency on linux-raspi2-tools-common + + -- Tim Gardner Wed, 23 Sep 2015 11:30:47 -0600 + +linux-raspi2 (4.2.0-1008.11) wily; urgency=low + + [ Tim Gardner ] + + * Revert "packaging: invoke /bin/true if $(DEBIAN)/reconstruct doesn't exit" + Superfluous with the addition of debian.raspi2/reconstruct + * Drop some package generation, e.g., source, doc, tools. + * Don't generate debug symbol image packages. + + -- Tim Gardner Tue, 22 Sep 2015 11:23:42 -0600 + +linux-raspi2 (4.2.0-1008.10) wily; urgency=low + + [ Paolo Pisati ] + + * [Config] LEDS_TRIGGER_DEFAULT_ON=y + * SAUCE: raspi2 dtb: power led default to on + + [ Tim Gardner ] + + * [Config] armhf: ARM_KERNMEM_PERMS=y && DEBUG_RODATA=y + * rebased on Ubuntu-4.2.0-10.12 + + -- Tim Gardner Mon, 14 Sep 2015 09:45:11 -0600 + +linux-raspi2 (4.2.0-1008.9) wily; urgency=low + + [ Paolo Pisati ] + + * [Config] NLS_ISO8859_1=y + + -- Tim Gardner Mon, 14 Sep 2015 09:10:34 -0600 + +linux-raspi2 (4.2.0-1008.8) wily; urgency=low + + [ Andy Whitcroft ] + + * SAUCE: raspi2 -- add overlays directory to dts-dirs to get the overlays installed + + [ Tim Gardner ] + + * rebased on Ubuntu-4.2.0-10.10 + + -- Tim Gardner Fri, 11 Sep 2015 10:00:17 -0600 + +linux-raspi2 (4.2.0-1007.7) wily; urgency=low + + [ Tim Gardner ] + + * [Debian] Change package name from bcm2709 to raspi2 + * [Debian] drop generic.inclusion-list + * [Packaging] Clean up d-i + + [ Upstream Kernel Changes ] + + * vchiq: fix NULL pointer dereference when closing driver + * bcm2708_fb: remove redundant code as detected by static analysis + * bcm2708_fb: remove unnecessary initialization of result + * vcsm: increment res_stats MAP_FAIL stats before we potentially release the resource + * bcm2835: memcpy port data to m rather than rmsg + + -- Tim Gardner Thu, 10 Sep 2015 08:17:27 -0600 + +linux-raspi2 (4.2.0-1006.6) wily; urgency=low + + [ Tim Gardner ] + + * rebased on Ubuntu-4.2.0-9.9 + + -- Tim Gardner Wed, 09 Sep 2015 13:30:42 -0600 + +linux-raspi2 (4.2.0-1005.5) wily; urgency=low + + [ Paolo Pisati ] + + * [Config] LEDS_GPIO=y && LEDS_TRIGGER_HEARTBEAT=y + * [Config] disable FB_SIMPLE + * [Config] SPI_SPIDEV=y + * [Config] HID=y && HID_GENERIC=y + * [Config] USB_HID=y , USB_DWCOTG=y and USB_STORAGE=y + * [Config] disable USB_GADGET + * [Config] disable ARM_PSCI + * [Config] disable CACHE_L2X0 + * [Config] CPUFREQ_DT=m + * [Config] disable SOC_TI + * [Config] disable TEGRA_AHB + * [Config] disable USB_OHCI_HCD + * [Config] disable USB_EHCI_HCD + * [Config] disable USB_XHCI_HCD + * [Config] disable VEXPRESS_CONFIG + * packaging: purge all ARCHS but armhf + + -- Paolo Pisati Wed, 09 Sep 2015 09:58:34 +0200 + +linux-raspi2 (4.2.0-1004.4) wily; urgency=low + + [ Paolo Pisati ] + + * [Config] disable ERRATAs not applicable to raspi2 + * [Config] VMSPLIT_2G=y + + -- Paolo Pisati Tue, 08 Sep 2015 11:22:46 +0200 + +linux-raspi2 (4.2.0-1003.3) wily; urgency=low + + [ Paolo Pisati ] + + * [Config] BCM2835_MBOX=y, ARM_BCM2835_CPUFREQ=y, RASPBERRYPI_FIRMWARE=y + and THERMAL_BCM2835=y + * [Config] BCM2709_DT=y, BCM2708_WDT=m and BCM2835_WDT=m + * [Config] BRCM_CHAR_DRIVERS=y, BCM_VC_CMA=y and BCM_VCIO=y + * [Config] DMA_BCM2708=y + * [Config] HW_RANDOM_BCM2708=m and HW_RANDOM_BCM2835=m + * [Config] I2C_BCM2708=m + * [Config] SPI_BCM2708=m and SPI_BCM2835=m + * [Config] PWM_BCM2835=m + * [Config] VIDEO_BCM2835=y + * [Config] SND_BCM2835=m and SND_BCM2708_SOC_I2S=m + * [Config] DMA_CMA=y + * [Config] FB_RPISENSE=m + * [Config] IP_MROUTE_MULTIPLE_TABLES=y + * [Config] JUMP_LABEL=y + * [Config] JOYSTICK_RPISENSE=m + * [Config] LIRC_RPI=m + * [Config] disable HIGHMEM + * [Config] USB_NET_SMSC95XX=y + + -- Paolo Pisati Mon, 07 Sep 2015 16:37:31 +0200 + +linux-raspi2 (4.2.0-1002.2) wily; urgency=low + + [ Andy Green ] + + * SAUCE: force min_free_kbytes set by proc to min 32K to workaround smsc + problems + + [ Paolo Pisati ] + + * [Config] snappy config fragments: generic, systemd, lxc, security and + snappy + * [Config] snappy/security: CC_STACKPROTECTOR_REGULAR=y + * [Config] snappy/snappy: RFKILL_REGULATOR depends on REGULATOR=y + * [Config] snappy/generic: CRASH_DUMP=y + * [Config] snappy/generic: NVRAM=m + * [Config] snappy/generic: INPUT_UINPUT=y + * [Config] snappy/generic: SYSVIPC=y && SYSVIPC_SYSCTL=y + * [Config] snappy/generic: LOCALVERSION= to avoid packaging failure + * [Config] updateconfigs + * [Config] FTBFS: disable STE_MODEM_RPROC - raspi2 lacks the necessary + barrier primitives when SMP=y + * [Config] FTBFS: disable VIA_RHINE - raspi2 lacks the necessary barrier + primitives when SMP=y + * [Config] FTBFS: disable VIRTIO_MMIO - raspi2 lacks the necessary + barrier primitives + * [Config] FTBFS: disable CAIF_VIRTIO - raspi2 lacks the necessary + barrier primitives + * [Config] disable BIG_LITTLE + * [Config] MMC_BCM2835=y + + -- Paolo Pisati Fri, 04 Sep 2015 09:44:10 +0100 + +linux-raspi2 (4.2.0-1001.1) wily; urgency=low + + [ Paolo Pisati ] + + * import rpi-4.2.y BSP @3a5c7e7 + * rebased on Ubuntu-4.2.0-7.7 + + -- Paolo Pisati Thu, 3 Sep 2015 15:22:10 +0100 --- linux-raspi2-4.2.0.orig/debian/cloud-tools/hv_get_dhcp_info +++ linux-raspi2-4.2.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-raspi2-4.2.0.orig/debian/cloud-tools/hv_get_dns_info +++ linux-raspi2-4.2.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-raspi2-4.2.0.orig/debian/cloud-tools/hv_set_ifconfig +++ linux-raspi2-4.2.0/debian/cloud-tools/hv_set_ifconfig @@ -0,0 +1,242 @@ +#! /usr/bin/env python + +# 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" + +'''Get quiet''' +sys.stdout = open(os.devnull, 'w') +sys.stderr = open(os.devnull, 'w') + +try: + if_file=open(if_filename,"r+") +except IOError as e: + exit(e.errno) +else: + if_file.close() + + +def kvp_dict(file): + return dict(line.strip().split("=") for line in file) + + +#setting the hwaddress to something azure is not expecting is fatal networking + +if len(sys.argv) != 2 : + exit(errno.EINVAL) + +kvp=dict(line.strip().split("=") for line in fileinput.input()) + +if not "HWADDR" in kvp : + exit(errno.EPROTO) + +if not "DEVICE" in kvp : + exit(1) + +output=[] +basename=kvp["DEVICE"] + +if "DHCP" in kvp and kvp["DHCP"]=="yes" : + output += ["auto " + basename] + output += ["iface " + basename + " inet dhcp"] + output += [""] +else: + ''' Matchup the interface specific lines ''' + + '''DNS entries will go with the first interface + and there can be a max of three''' + autolist=[] + dns=[] + if "DNS1" in kvp : + dns+=[kvp["DNS1"]] + if "DNS2" in kvp : + dns+=[kvp["DNS2"]] + if "DNS3" in kvp : + dns+=[kvp["DNS3"]] + + + ''' + No real max for the number of interface + aliases ... + only required is the address (but mate everything up that comes in. ''' + + '''ipv4 first''' + + v4names=[name for name in kvp.keys() if name.startswith("IPADDR")] + v4names.sort() + + v6names=[name for name in kvp.keys() if name.startswith("IPV6ADDR")] + v6names.sort() + + '''IPV6 requires a netmask''' + '''If an ipv6 exists, you'll want to turn off /proc/sys/net/ipv6/conf/all/autoconf with + up echo 0 > /proc/sys/net/ipv6/conf/all/autoconf''' + + '''Counter needs to increment as soon as any interface is set.''' + + + if_count=0 + + for v4 in v4names: + ifname=basename + suffix="" + if if_count : + ifname+=":" + str(if_count) + suffix="_"+str(if_count) + if not ifname in autolist: + autolist += [ifname] + output += [ "iface " + ifname + " inet static"] + output += [ "\t" + "address " + kvp[v4]] + if "NETMASK"+suffix in kvp.keys(): + output += ["\tnetmask " + kvp["NETMASK"+suffix]] + if "GATEWAY"+suffix in kvp.keys(): + output += ["\tgateway " + kvp["GATEWAY"+suffix]] + if not if_count : + output += ["\tdns-nameservers " + ' '.join(dns)] + output += [""] + if_count+=1 + + if6_count=0 + if6_used=0 + for v6 in v6names: + ifname=basename + suffix="" + if if6_used : + ifname+=":" + str(if6_used) + if if6_count : + suffix="_" + str(if6_count) + if not ifname in autolist: + autolist += [ifname] + if "IPV6NETMASK"+suffix in kvp.keys(): + output += [ "iface " + ifname + " inet6 static"] + output += [ "\taddress " + kvp[v6]] + output += [ "\tnetmask " + kvp["IPV6NETMASK"+suffix]] + if "IPV6_DEFAULTGW"+suffix in kvp.keys(): + output += [ "\tgateway " + kvp["IPV6_DEFAULTGW"+suffix] ] + if not if_count : + output += ["\tdns-nameservers " + ' '.join(dns)] + output += [""] + if_count += 1 + if6_used += 1 + if6_count += 1 + + 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 + + + +def emit(line): + print(line) + os.write(fd, line + "\n") + +# 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,0644) +#print "TMPFILE is at: " + path +#print "Copied file is at: " + if_filename + + +try: + retcode = subprocess.call("ifdown "+basename , shell=True) + if retcode < 0: + print >>sys.stderr, "Child was terminated by signal", -retcode + else: + print >>sys.stderr, "Child returned", retcode +except OSError as e: + print >>sys.stderr, "Execution failed:", e + +try: + retcode = subprocess.call("ifup "+basename , shell=True) + if retcode < 0: + print >>sys.stderr, "Child was terminated by signal", -retcode + else: + print >>sys.stderr, "Child returned", retcode +except OSError as e: + print >>sys.stderr, "Execution failed:", e + + --- linux-raspi2-4.2.0.orig/debian/commit-templates/bumpabi +++ linux-raspi2-4.2.0/debian/commit-templates/bumpabi @@ -0,0 +1,3 @@ +UBUNTU: Bump ABI + +Ignore: yes --- linux-raspi2-4.2.0.orig/debian/commit-templates/config-updates +++ linux-raspi2-4.2.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-raspi2-4.2.0.orig/debian/commit-templates/external-driver +++ linux-raspi2-4.2.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-raspi2-4.2.0.orig/debian/commit-templates/missing-modules +++ linux-raspi2-4.2.0/debian/commit-templates/missing-modules @@ -0,0 +1,3 @@ +UBUNTU: build/modules: Add modules that have intentionally gone missing + +Ignore: yes --- linux-raspi2-4.2.0.orig/debian/commit-templates/newrelease +++ linux-raspi2-4.2.0/debian/commit-templates/newrelease @@ -0,0 +1,3 @@ +UBUNTU: Start new release + +Ignore: yes --- linux-raspi2-4.2.0.orig/debian/commit-templates/sauce-patch +++ linux-raspi2-4.2.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-raspi2-4.2.0.orig/debian/commit-templates/upstream-patch +++ linux-raspi2-4.2.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-raspi2-4.2.0.orig/debian/compat +++ linux-raspi2-4.2.0/debian/compat @@ -0,0 +1 @@ +5 --- linux-raspi2-4.2.0.orig/debian/control +++ linux-raspi2-4.2.0/debian/control @@ -0,0 +1,143 @@ +Source: linux-raspi2 +Section: devel +Priority: optional +Maintainer: Ubuntu Kernel Team +Standards-Version: 3.9.4.0 +Build-Depends: + debhelper (>= 5), + dh-systemd, + cpio, + kernel-wedge (>= 2.24ubuntu1), + kmod , + makedumpfile [amd64 i386] , + libelf-dev , + libnewt-dev , + libiberty-dev , + rsync , + libdw-dev , + libpci-dev , + dpkg (>= 1.16.0~ubuntu4) , + pkg-config , + flex , + bison , + libunwind8-dev , + openssl , + libaudit-dev , + bc , + python-dev , + gawk , + device-tree-compiler [powerpc] , + u-boot-tools [powerpc] , + libc6-dev-ppc64 [powerpc] , + libudev-dev , + autoconf , + automake , + libtool , +Build-Depends-Indep: + xmlto , + docbook-utils , + ghostscript , + transfig , + bzip2 , + sharutils , + asciidoc , +Vcs-Git: git://git.launchpad.net/~ubuntu-kernel/ubuntu/+source/linux/+git/wily +#XS-Testsuite: autopkgtest +#XS-Testsuite-Depends: gcc-4.7 binutils + +Package: linux-raspi2-headers-4.2.0-1022 +Build-Profiles: +Architecture: armhf +Multi-Arch: foreign +Section: devel +Priority: optional +Depends: ${misc:Depends}, coreutils | fileutils (>= 4.0) +Description: Header files related to Linux kernel version 4.2.0 + This package provides kernel header files for version 4.2.0, for sites + that want the latest kernel headers. Please read + /usr/share/doc/linux-raspi2-headers-4.2.0-1022/debian.README.gz for details + +Package: linux-raspi2-tools-4.2.0-1022 +Build-Profiles: +Architecture: armhf +Section: devel +Priority: optional +Depends: ${misc:Depends}, ${shlibs:Depends}, linux-tools-common +Description: Linux kernel version specific tools for version 4.2.0-1022 + This package provides the architecture dependant parts for kernel + version locked tools (such as perf and x86_energy_perf_policy) for + version 4.2.0-1022 on + . + You probabaly want to install the linux-tools- meta package. + + +Package: linux-image-4.2.0-1022-raspi2 +Build-Profiles: +Architecture: armhf +Section: kernel +Priority: optional +Pre-Depends: dpkg (>= 1.10.24) +Provides: linux-image, linux-image-3.0, fuse-module, kvm-api-4, redhat-cluster-modules, ivtv-modules +Depends: ${misc:Depends}, ${shlibs:Depends}, initramfs-tools (>= 0.36ubuntu6) | linux-initramfs-tool, kmod +Conflicts: hotplug (<< 0.0.20040105-1) +Recommends: grub-pc [i386 amd64 x32] | grub-efi-amd64 [amd64 x32] | grub-efi-ia32 [i386 amd64 x32] | grub [i386 amd64 x32] | lilo (>= 19.1) [i386 amd64 x32] | flash-kernel [armhf arm64] | grub-ieee1275 [ppc64el] +Suggests: fdutils, linux-raspi2-tools, linux-headers-4.2.0-1022-raspi2 +Description: Linux kernel image for version 4.2.0 on SMP + This package contains the Linux kernel image for version 4.2.0 on + 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-raspi2 meta-package, which will ensure that upgrades work + correctly, and that supporting packages are also installed. + +Package: linux-headers-4.2.0-1022-raspi2 +Build-Profiles: +Architecture: armhf +Section: devel +Priority: optional +Depends: ${misc:Depends}, linux-raspi2-headers-4.2.0-1022, ${shlibs:Depends} +Provides: linux-headers, linux-headers-3.0 +Description: Linux kernel headers for version 4.2.0 on SMP + This package provides kernel header files for version 4.2.0 on + SMP. + . + This is for sites that want the latest kernel headers. Please read + /usr/share/doc/linux-headers-4.2.0-1022/debian.README.gz for details. + +Package: linux-image-4.2.0-1022-raspi2-dbgsym +Build-Profiles: +Architecture: armhf +Section: devel +Priority: optional +Depends: ${misc:Depends} +Provides: linux-debug +Description: Linux kernel debug image for version 4.2.0 on SMP + This package provides a kernel debug image for version 4.2.0 on + 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-4.2.0-1022-raspi2 +Build-Profiles: +Architecture: armhf +Section: devel +Priority: optional +Depends: ${misc:Depends}, linux-raspi2-tools-4.2.0-1022 +Description: Linux kernel version specific tools for version 4.2.0-1022 + This package provides the architecture dependant parts for kernel + version locked tools (such as perf and x86_energy_perf_policy) for + version 4.2.0-1022 on + . + --- linux-raspi2-4.2.0.orig/debian/control-scripts/extra-post +++ linux-raspi2-4.2.0/debian/control-scripts/extra-post @@ -0,0 +1,14 @@ +#!/bin/sh +set -e + +case "$0::$1" in +*.postinst::configure|*.postrm::remove) + depmod -a -F /boot/System.map-=V =V || true + for dir in "/etc/kernel/postinst.d" "/etc/kernel/postinst.d/=V" + do + if [ -d "$dir" ]; then + run-parts --verbose --exit-on-error --arg="=V" --arg="/boot/=K-=V" "$dir" + fi + done + ;; +esac --- linux-raspi2-4.2.0.orig/debian/control-scripts/headers-postinst +++ linux-raspi2-4.2.0/debian/control-scripts/headers-postinst @@ -0,0 +1,126 @@ +#!/usr/bin/perl +# -*- Mode: Cperl -*- +# debian.postinst --- +# Author : Manoj Srivastava ( srivasta@pilgrim.umass.edu ) +# Created On : Sat Apr 27 05:42:43 1996 +# Created On Node : melkor.pilgrim.umass.edu +# Last Modified By : Manoj Srivastava +# Last Modified On : Sat Aug 5 13:20:22 2006 +# Last Machine Used: glaurung.internal.golden-gryphon.com +# Update Count : 45 +# Status : Unknown, Use with caution! +# HISTORY : +# Description : +# +# +# +# arch-tag: 1c716174-2f0a-476d-a626-a1322e62503a +# + + +$|=1; + +# Predefined values: +my $version = "=V"; +my $kimage = "=K"; +my $package_name = "linux-image-$version"; + + +# Ignore all invocations uxcept when called on to configure. +exit 0 unless ($ARGV[0] && $ARGV[0] =~ /configure/); + +#known variables +my $image_dest = "/"; +my $realimageloc = "/boot/"; +my $silent_modules = ''; +my $modules_base = '/lib/modules'; +my $CONF_LOC = '/etc/kernel-img.conf'; +# remove multiple leading slashes; make sure there is at least one. +$realimageloc =~ s|^/*|/|o; +$realimageloc =~ s|/+|/|o; + +chdir '/usr/src' or die "Could not chdir to /usr/src:$!"; + +if (-r "$CONF_LOC" && -f "$CONF_LOC" ) { + if (open(CONF, "$CONF_LOC")) { + while () { + chomp; + s/\#.*$//g; + next if /^\s*$/; + + $header_postinst_hook = "$1" if /^\s*header_postinst_hook\s*=\s*(\S+)/ig; + } + close CONF; + } +} + +sub exec_script { + my $type = shift; + my $script = shift; + print STDERR "Running $type hook script $script.\n"; + system ("$script $version $realimageloc$kimage-$version") && + print STDERR "User $type hook script [$script] "; + if ($?) { + if ($? == -1) { + print STDERR "failed to execute: $!\n"; + } + elsif ($? & 127) { + printf STDERR "died with signal %d, %s coredump\n", + ($? & 127), ($? & 128) ? 'with' : 'without'; + } + else { + printf STDERR "exited with value %d\n", $? >> 8; + } + exit $? >> 8; + } +} +sub run_hook { + my $type = shift; + my $script = shift; + if ($script =~ m,^/,) { + # Full path provided for the hook script + if (-x "$script") { + &exec_script($type,$script); + } + else { + die "The provided $type hook script [$script] could not be run.\n"; + } + } + else { + # Look for it in a safe path + for my $path ('/bin', '/sbin', '/usr/bin', '/usr/sbin') { + if (-x "$path/$script") { + &exec_script($type, "$path/$script"); + return 0; + } + } + # No luck + print STDERR "Could not find $type hook script [$script].\n"; + die "Looked in: '/bin', '/sbin', '/usr/bin', '/usr/sbin'\n"; + } +} + +## Run user hook script here, if any +if (-x "$header_postinst_hook") { + &run_hook("postinst", $header_postinst_hook); +} + +if (-d "/etc/kernel/header_postinst.d") { + print STDERR "Examining /etc/kernel/header_postinst.d.\n"; + system ("run-parts --verbose --exit-on-error --arg=$version " . + "--arg=$realimageloc$kimage-$version " . + "/etc/kernel/header_postinst.d") && + die "Failed to process /etc/kernel/header_postinst.d"; +} + +if (-d "/etc/kernel/header_postinst.d/$version") { + print STDERR "Examining /etc/kernel/header_postinst.d/$version.\n"; + system ("run-parts --verbose --exit-on-error --arg=$version " . + "--arg=$realimageloc$kimage-$version " . + "/etc/kernel/header_postinst.d/$version") && + die "Failed to process /etc/kernel/header_postinst.d/$version"; +} + +exit 0; + +__END__ --- linux-raspi2-4.2.0.orig/debian/control-scripts/postinst +++ linux-raspi2-4.2.0/debian/control-scripts/postinst @@ -0,0 +1,1110 @@ +#! /usr/bin/perl +# OriginalAuthor : Manoj Srivastava ( srivasta@pilgrim.umass.edu ) +# +# Customized for Ubuntu by: Ben Collins + +#use strict; #for debugging +use Cwd 'abs_path'; + +$|=1; + +# Predefined values: +my $version = "=V"; +my $link_in_boot = ""; # Should be empty, mostly +my $no_symlink = ""; # Should be empty, mostly +my $reverse_symlink = ""; # Should be empty, mostly +my $do_symlink = "Yes"; # target machine defined +my $do_boot_enable = "Yes"; # target machine defined +my $do_bootfloppy = "Yes"; # target machine defined +my $do_bootloader = "Yes"; # target machine defined +my $move_image = ''; # target machine defined +my $kimage = "=K"; # Should be empty, mostly +my $loader = "=L"; # lilo, silo, quik, palo, vmelilo, nettrom, arcboot or delo +my $image_dir = "/boot"; # where the image is located +my $clobber_modules = ''; # target machine defined +my $relative_links = ""; # target machine defined +my $initrd = "YES"; # initrd kernel +my $do_initrd = ''; # Normally we do not +my $use_hard_links = ''; # hardlinks do not work across fs boundaries +my $postinst_hook = ''; #Normally we do not +my $postrm_hook = ''; #Normally we do not +my $preinst_hook = ''; #Normally we do not +my $prerm_hook = ''; #Normally we do not +my $minimal_swap = ''; # Do not swap symlinks +my $ignore_depmod_err = ''; # normally we do not +my $kernel_arch = "=B"; +my $ramdisk = "/usr/sbin/update-initramfs"; # List of tools to create initial ram fs. +my $notifier = "/usr/share/update-notifier/notify-reboot-required"; +my $package_name = "linux-image-$version"; +my $explicit_do_loader = 'Yes'; + +my $Loader = "NoLOADER"; # +$Loader = "LILO" if $loader =~ /^lilo/io; +$Loader = "SILO" if $loader =~ /^silo/io; +$Loader = "QUIK" if $loader =~ /^quik/io; +$Loader = "yaboot" if $loader =~ /^yaboot/io; +$Loader = "PALO" if $loader =~ /^palo/io; +$Loader = "NETTROM" if $loader =~ /^nettrom/io; +$Loader = "VMELILO" if $loader =~ /^vmelilo/io; +$Loader = "ZIPL" if $loader =~ /^zipl/io; +$Loader = "ELILO" if $loader =~ /^elilo/io; +$Loader = "ARCBOOT" if $loader =~ /^arcboot/io; +$Loader = "DELO" if $loader =~ /^delo/io; + +# This should not point to /tmp, because of security risks. +my $temp_file_name = "/var/log/$loader" . "_log.$$"; + +#known variables +my $image_dest = "/"; +my $realimageloc = "/$image_dir/"; +my $have_conffile = ""; +my $silent_modules = ''; +my $silent_loader = ''; +my $warn_reboot = 'Yes'; # Warn that we are installing a version of + # the kernel we are running + +my $modules_base = '/lib/modules'; +my $CONF_LOC = '/etc/kernel-img.conf'; + +# Ignore all invocations except when called on to configure. +exit 0 unless $ARGV[0] =~ /configure/; + +my $DEBUG = 0; + +# Do some preliminary sanity checks here to ensure we actually have an +# valid image dir +chdir('/') or die "could not chdir to /:$!\n"; +die "Internal Error: ($image_dir) is not a directory!\n" + unless -d $image_dir; + +# remove multiple leading slashes; make sure there is at least one. +$realimageloc =~ s|^/*|/|o; +$realimageloc =~ s|/+|/|o; +die "Internal Error: ($realimageloc) is not a directory!\n" + unless -d $realimageloc; + +if (-r "$CONF_LOC" && -f "$CONF_LOC" ) { + if (open(CONF, "$CONF_LOC")) { + while () { + chomp; + s/\#.*$//g; + next if /^\s*$/; + + $do_symlink = "" if /^\s*do_symlinks\s*=\s*(no|false|0)\s*$/ig; + $no_symlink = "" if /^\s*no_symlinks\s*=\s*(no|false|0)\s*$/ig; + $reverse_symlink = "" if /^\s*reverse_symlink\s*=\s*(no|false|0)\s*$/ig; + $link_in_boot = "" if /^\s*image_in_boot\s*=\s*(no|false|0)\s*$/ig; + $link_in_boot = "" if /^\s*link_in_boot\s*=\s*(no|false|0)\s*$/ig; + $move_image = "" if /^\s*move_image\s*=\s*(no|false|0)\s*$/ig; + $clobber_modules = '' if /^\s*clobber_modules\s*=\s*(no|false|0)\s*$/ig; + $do_boot_enable = '' if /^\s*do_boot_enable\s*=\s*(no|false|0)\s*$/ig; + $do_bootfloppy = '' if /^\s*do_bootfloppy\s*=\s*(no|false|0)\s*$/ig; + $relative_links = '' if /^\s*relative_links \s*=\s*(no|false|0)\s*$/ig; + $do_bootloader = '' if /^\s*do_bootloader\s*=\s*(no|false|0)\s*$/ig; + $explicit_do_loader = '' if /^\s*do_bootloader\s*=\s*(no|false|0)\s*$/ig; + $do_initrd = '' if /^\s*do_initrd\s*=\s*(no|false|0)\s*$/ig; + $use_hard_links = '' if /^\s*use_hard_links\s*=\s*(no|false|0)\s*$/ig; + $silent_modules = '' if /^\s*silent_modules\s*=\s*(no|false|0)\s*$/ig; + $silent_loader = '' if /^\s*silent_loader\s*=\s*(no|false|0)\s*$/ig; + $warn_reboot = '' if /^\s*warn_reboot\s*=\s*(no|false|0)\s*$/ig; + $minimal_swap = '' if /^\s*minimal_swap\s*=\s*(no|false|0)\s*$/ig; + $ignore_depmod_err = '' if /^\s*ignore_depmod_err\s*=\s*(no|false|0)\s*$/ig; + + $do_symlink = "Yes" if /^\s*do_symlinks\s*=\s*(yes|true|1)\s*$/ig; + $no_symlink = "Yes" if /^\s*no_symlinks\s*=\s*(yes|true|1)\s*$/ig; + $reverse_symlink = "Yes" if /^\s*reverse_symlinks\s*=\s*(yes|true|1)\s*$/ig; + $link_in_boot = "Yes" if /^\s*image_in_boot\s*=\s*(yes|true|1)\s*$/ig; + $link_in_boot = "Yes" if /^\s*link_in_boot\s*=\s*(yes|true|1)\s*$/ig; + $move_image = "Yes" if /^\s*move_image\s*=\s*(yes|true|1)\s*$/ig; + $clobber_modules = "Yes" if /^\s*clobber_modules\s*=\s*(yes|true|1)\s*$/ig; + $do_boot_enable = "Yes" if /^\s*do_boot_enable\s*=\s*(yes|true|1)\s*$/ig; + $do_bootfloppy = "Yes" if /^\s*do_bootfloppy\s*=\s*(yes|true|1)\s*$/ig; + $do_bootloader = "Yes" if /^\s*do_bootloader\s*=\s*(yes|true|1)\s*$/ig; + $explicit_do_loader = "YES" if /^\s*do_bootloader\s*=\s*(yes|true|1)\s*$/ig; + $relative_links = "Yes" if /^\s*relative_links\s*=\s*(yes|true|1)\s*$/ig; + $do_initrd = "Yes" if /^\s*do_initrd\s*=\s*(yes|true|1)\s*$/ig; + $use_hard_links = "Yes" if /^\s*use_hard_links\s*=\s*(yes|true|1)\s*$/ig; + $silent_modules = 'Yes' if /^\s*silent_modules\s*=\s*(yes|true|1)\s*$/ig; + $silent_loader = 'Yes' if /^\s*silent_loader\s*=\s*(yes|true|1)\s*$/ig; + $warn_reboot = 'Yes' if /^\s*warn_reboot\s*=\s*(yes|true|1)\s*$/ig; + $minimal_swap = 'Yes' if /^\s*minimal_swap\s*=\s*(yes|true|1)\s*$/ig; + $ignore_depmod_err = 'Yes' if /^\s*ignore_depmod_err\s*=\s*(yes|true|1)\s*$/ig; + + $image_dest = "$1" if /^\s*image_dest\s*=\s*(\S+)/ig; + $postinst_hook = "$1" if /^\s*postinst_hook\s*=\s*(\S+)/ig; + $postrm_hook = "$1" if /^\s*postrm_hook\s*=\s*(\S+)/ig; + $preinst_hook = "$1" if /^\s*preinst_hook\s*=\s*(\S+)/ig; + $prerm_hook = "$1" if /^\s*prerm_hook\s*=\s*(\S+)/ig; + $ramdisk = "$1" if /^\s*ramdisk\s*=\s*(.+)$/ig; + } + close CONF; + $have_conffile = "Yes"; + } +} + + + +# For some versions of kernel-package, we had this warning in the +# postinst, but the rules did not really interpolate the value in. +# Here is a sanity check. +my $pattern = "=" . "I"; +$initrd=~ s/^$pattern$//; + +if ($link_in_boot) { + $image_dest = "/$image_dir/"; # same as realimageloc +} + +# Tack on at least one trainling / +$image_dest = "$image_dest/"; +$image_dest =~ s|^/*|/|o; +$image_dest =~ s|/+$|/|o; + +if (! -d "$image_dest") { + die "Expected Image Destination dir ($image_dest) to be a valid directory!\n"; +} + +# sanity +if (!($do_bootfloppy || $do_bootloader)) { + $do_boot_enable = ''; +} +if ($do_symlink && $no_symlink) { + warn "Both do_symlinks and no_symlinks options enabled; disabling no_symlinks\n"; + $no_symlink = 0; +} + +# most of our work is done in $image_dest (nominally /) +chdir("$image_dest") or die "could not chdir to $image_dest:$!\n"; + +# Paranoid check to make sure that the correct value is put in there +if (! $kimage) { $kimage = "vmlinuz"; } # Hmm. empty +elsif ($kimage =~ m/^b?uImage$/o) { $kimage = "vmlinuz"; } # these produce vmlinuz +elsif ($kimage =~ m/^b?zImage$/o) { $kimage = "vmlinuz"; } # these produce vmlinuz +elsif ($kimage =~ m/^[iI]mage$/o) { my $nop = $kimage; } +elsif ($kimage =~ m/^vmlinux$/o) { my $nop = $kimage; } +else { $kimage = "vmlinuz"; } # Default + +$ENV{KERNEL_ARCH}=$kernel_arch if $kernel_arch; + + +die "Internal Error: Could not find image (" . $realimageloc + . "$kimage-$version)\n" unless -e $realimageloc + . "$kimage-$version"; + +# search for the boot loader in the path +my $loader_exec; +($loader_exec = $loader) =~ s|.*/||; +my ($loaderloc) = grep -x, map "$_/$loader_exec", + map { length($_) ? $_ : "." } split /:/, $ENV{PATH}; + + +###################################################################### +###################################################################### +########### Test whether a relative symlinkwould be OK ####### +###################################################################### +###################################################################### +sub test_relative { + my %params = @_; + my $cwd; + + die "Internal Error: Missing Required paramater 'Old Dir' " + unless $params{'Old Dir'}; + die "Internal Error: Missing Required paramater New Dir' " + unless $params{'New Dir'}; + + + die "Internal Error: No such dir $params{'Old Dir'} " + unless -d $params{'Old Dir'}; + die "Internal Error: No such dir $params{'New Dir'} " + unless -d $params{'New Dir'}; + + # If the caller specified a test file, and it does not exist try and find + # another file to use in its stead. As we are installing kernels we can + # use any versioned file from this kernel which should be in the same place. + if (defined $params{'Test File'} and + ! -f $params{'Old Dir'} . '/' . $params{'Test File'}) { + + my @possible = glob($params{'Old Dir'} . "/*$version*"); + if ($#possible >= 0) { + $params{'Test File'} = `basename "$possible[0]"`; + chomp($params{'Test File'}); + warn "Test relative: selected $params{'Test File'}" + if $DEBUG; + } + } + + warn "Test relative: testing $params{'Old Dir'} -> $params{'New Dir'}" + if $DEBUG; + chomp($cwd = `pwd`); + chdir ($params{'New Dir'}) or die "Could not chdir to $params{'New Dir'}:$!"; + my $ok = 0; + $params{'Old Dir'} =~ s|^/*||o; + if (-d $params{'Old Dir'} ) { + if (defined $params{'Test File'}) { + if (-e $params{'Old Dir'} . $params{'Test File'}) { + $ok = 1; + } + } else { + $ok = 1; # well, backward compatibility + } + } + chdir ($cwd) or die "Could not chdir to $params{'New Dir'}:$!"; + return $ok; +} + +###################################################################### +###################################################################### +############ +###################################################################### +###################################################################### +# sub CanonicalizePath { +# my $path = join '/', @_; +# my @work = split '/', $path; +# my @out; +# my $is_absolute; + +# if (@work && $work[0] eq "") { +# $is_absolute = 1; shift @work; +# } + +# while (@work) { +# my $seg = shift @work; +# if ($seg eq "." || $seg eq "") { +# } +# elsif ($seg eq "..") { +# if (@out && $out[-1] ne "..") { +# pop @out; +# } +# else { +# # Leading "..", or "../..", etc. +# push @out, $seg; +# } +# } +# else { +# push @out, $seg; +# } +# } + +# unshift @out, "" if $is_absolute; +# return join('/', @out); +# } +###################################################################### +###################################################################### +############ +###################################################################### +###################################################################### + +sub spath { + my %params = @_; + + die "Missing Required paramater 'Old'" unless $params{'Old'}; + die "Missing Required paramater 'New'" unless $params{'New'}; + + my @olddir = split '/', `readlink -q -m $params{'Old'}`; + my @newdir = split '/', `readlink -q -m $params{'New'}`; + my @outdir = @olddir; + + my $out = ''; + my $i; + for ($i = 0; $i <= $#olddir && $i <= $#newdir; $i++) { + $out++ if ($olddir[$i] ne $newdir[$i]); + shift @outdir unless $out; + unshift @outdir, ".." if $out; + } + if ($#newdir > $#olddir) { + for ($i=0; $i < $#newdir; $i++) { + unshift @outdir, ".."; + } + } + return join ('/', @outdir); +} +###################################################################### +###################################################################### +############ +###################################################################### +###################################################################### + + +# This routine actually moves the kernel image +# From: $realimageloc/$kimage-$version (/boot/vmlinuz-2.6.12) +# To: $image_dest/$kimage-$version (/vmlinuz-2.6.12) +# Note that the image is moved to a versioned destination, but ordinary +# symlinks we create otherwise are not normally versioned +sub really_move_image { + my $src_dir = $_[0]; + my $target = $_[1]; + my $dest_dir = $_[2]; + + warn "Really move image: src_dir=$src_dir, target=$target,\n destdir=$dest_dir" + if $DEBUG; + if (-e "$target") { + # we should be in dir $dest_dir == $image_dest /, normally + rename("$target", "$target.$$") || + die "failed to move " . $dest_dir . "$target:$!"; + warn "mv $target $target.$$" if $DEBUG; + } + warn "mv -f $src_dir$target $target" if $DEBUG; + my $ret = system("mv -f " . $src_dir . "$target " . + " $target"); + if ($ret) { + die("Failed to move " . $src_dir . "$target to " + . $dest_dir . "$target"); + } + # Ok, now we may clobber the previous .old files + if (-e "$target.$$") { + rename("$target.$$", "$target.old") || + die "failed to move " . $dest_dir . "$target:$!"; + warn "mv $target.$$ $target " if $DEBUG; + } +} + +# Normally called after really_move_image; and only called if we asked for +# reversed link this routine reverses the symbolic link that is notmally +# created. Since the real kernel image has been moved over to +# $image_dest/$kimage-$version. So, this routine links +# From: $image_dest/$kimage-$version (/vmlinuz-2.6.12) +# To: $realimageloc/$kimage-$version (/boot/vmlinuz-2.6.12) +sub really_reverse_link { + my $src_dir = $_[0]; + my $link_name = $_[1]; + my $dest_dir = $_[2]; + warn "Really reverse link: src_dir=$src_dir, link name=$link_name\n" . + "\tdestdir=$dest_dir" if $DEBUG; + + my $Old = $dest_dir; + if (test_relative ('Old Dir' => $Old, 'New Dir' => $src_dir, + 'Test File' => "$link_name")) { + $Old =~ s|^/*||o; + } + # Special case is they are in the same dir + my $rel_path = spath('Old' => "$Old", 'New' => "$src_dir" ); + $Old ="" if $rel_path =~ m/^\s*$/o; + + if ($use_hard_links =~ m/YES/i) { + link($Old . "$link_name", $src_dir . "$link_name") || + die("Failed to link " . $dest_dir . "$link_name to " . $src_dir . + "$link_name:$!"); + warn "ln " . $Old . "$link_name " . $src_dir . "$link_name" if $DEBUG; + } + else { + symlink($Old . "$link_name", $src_dir . "$link_name") || + die("Failed to symbolic-link " . $dest_dir . "$link_name to " . $src_dir + . "$link_name:$!"); + warn "ln -s " . $Old . "$link_name " . $src_dir . "$link_name" if $DEBUG; + } +} + +# This routine is invoked if there is a symbolic link in place +# in $image_dest/$kimage -- so a symlink exists in the destination. +# What we are trying to determine is if we need to move the symbolic link over +# to the the .old location +sub move_p { + my $kimage = $_[0]; # Name of the symbolic link + my $image_dest = $_[1]; # The directory the links goes into + my $image_name = $_[2]; + my $src_dir = $_[3]; + my $force_move = 0; + warn "Move?: kimage=$kimage, image_dest=$image_dest, \n" . + "\timage_name=$image_name, src_dir=$src_dir" if $DEBUG; + + if ($no_symlink || $reverse_symlink) { + # we do not want links, yet we have a symbolic link here! + warn "found a symbolic link in " . $image_dest . "$kimage \n" . + "even though no_symlink is defined\n" if $no_symlink; + warn "found a symbolic link in " . $image_dest . "$kimage \n" . + "even though reverse_symlink is defined\n" if $reverse_symlink; + # make sure we change this state of affairs + $force_move = 1; + return $force_move; + } + + warn "DEBUG: OK. We found symlink, and we should have a symlink here.\n" + if $DEBUG; + my $vmlinuz_target = readlink "$kimage"; + my $real_target = ''; + my $target = `readlink -q -m "${realimageloc}${kimage}-${version}"`; + $real_target = abs_path($vmlinuz_target) if defined($vmlinuz_target); + + if (!defined($vmlinuz_target) || ! -f "$real_target") { + # what, a dangling symlink? + warn "The link " . $image_dest . "$kimage is a dangling link" . + "to $real_target\n"; + $force_move = 1; + return $force_move; + } + + + warn "DEBUG: The link $kimage points to ($vmlinuz_target)\n" if $DEBUG; + warn "DEBUG: ($vmlinuz_target) is really ($real_target)\n" if $DEBUG; + my $cwd; + chomp ($cwd=`pwd`); + if ($vmlinuz_target !~ m|^/|o) { + $vmlinuz_target = $cwd . "/" . $vmlinuz_target; + $vmlinuz_target =~ s|/+|/|o; + } + $vmlinuz_target = `readlink -q -m $vmlinuz_target`; + + if ("$vmlinuz_target" ne "$target") { + warn "DEBUG: We need to handle this.\n" if $DEBUG; + if ($minimal_swap) { + warn "DEBUG: Minimal swap.\n" if $DEBUG; + if (-l "$kimage.old") { + warn "DEBUG: There is an old link at $kimage.old\n" if $DEBUG; + my $old_target = readlink "$kimage.old"; + my $real_old_target = ''; + $real_old_target=abs_path($old_target) if defined ($old_target); + + if ($real_old_target && -f "$real_old_target") { + if ($old_target !~ m|^/|o) { + $old_target = $cwd . "/" . $old_target; + $old_target =~ s|/+|/|o; + } + $old_target = `readlink -q -m $old_target`; + if ("$old_target" ne "$target") { + $force_move = 1; + warn "DEBUG: Old link ($old_target) does not point to us ($target)\n" + if $DEBUG; + } + else { # The .old points to the current + warn "$kimage.old --> $target -- doing nothing"; + $force_move = 0; + } + } + else { + warn "DEBUG: Well, the old link does not exist -- so we move\n" + if $DEBUG; + $force_move = 1; + } + } + else { + warn "DEBUG: No .old link -- OK to move\n" + if $DEBUG; + $force_move = 1; + } + } + else { + warn "DEBUG: ok, minimal swap is no-- so we move.\n" + if $DEBUG; + $force_move = 1; + } + } + else { # already have proper link + warn "$kimage($vmlinuz_target) points to $target ($real_target) -- doing nothing"; + $force_move = 0; + } + return $force_move; +} + + +# This routine moves the symbolic link around (/vmlinuz -> /vmlinuz.old) +# It pays attention to whether we should the fact whether we should be using +# hard links or not. +sub really_move_link { + my $kimage = $_[0]; # Name of the symbolic link + my $image_dest = $_[1]; # The directory the links goes into + my $image_name = $_[2]; + my $src_dir = $_[3]; + warn "really_move_link: kimage=$kimage, image_dest=$image_dest\n" . + "\t image_name=$image_name, src_dir=$src_dir" if $DEBUG; + + # don't clobber $kimage.old quite yet + rename("$kimage", "$kimage.$$") || + die "failed to move " . $image_dest . "$kimage:$!"; + warn "mv $kimage $kimage.$$" if $DEBUG; + my $Old = $src_dir; + my $cwd; + + chomp($cwd=`pwd`); + if (test_relative ('Old Dir' => $Old, 'New Dir' => $cwd, + 'Test File' => "$image_name")) { + $Old =~ s|^/*||o; + } + # Special case is they are in the same dir + my $rel_path = spath('Old' => "$Old", 'New' => "$cwd" ); + $Old ="" if $rel_path =~ m/^\s*$/o; + + if ($use_hard_links =~ m/YES/i) { + warn "ln ${Old}${image_name} $kimage" if $DEBUG; + if (! link("${Old}${image_name}", "$kimage")) { + rename("$kimage.$$", "$kimage"); + die("Failed to link ${Old}${image_name} to " . + "${image_dest}${kimage}:$!"); + } + } + else { + warn "ln -s ${Old}${image_name} $kimage" if $DEBUG; + if (! symlink("${Old}${image_name}", "$kimage")) { + rename("$kimage.$$", "$kimage"); + die("Failed to symbolic-link ${Old}${image_name} to " . + "${image_dest}${kimage}:$!"); + } + } + + # Ok, now we may clobber the previous .old file + if (-l "$kimage.old" || ! -e "$kimage.old" ) { + rename("$kimage.$$", "$kimage.old"); + warn "mv $kimage.$$ $kimage.old" if $DEBUG; + } + else { + warn "$kimage.old is not a symlink, not clobbering\n"; + warn "rm $kimage.$$"; + unlink "$kimage.$$" if $DEBUG; + } +} + +# This routine handles a request to do symlinks, but there is no +# symlink file already there. Either we are supposed to use copy, or we are +# installing on a pristine system, or the user does not want symbolic links at +# all. We use a configuration file to tell the last two cases apart, creating +# a config file if needed. +sub handle_missing_link { + my $kimage = $_[0]; # Name of the symbolic link + my $image_dest = $_[1]; # The directory the links goes into + my $image_name = $_[2]; + my $src_dir = $_[3]; + warn "handle_missing_link: kimage=$kimage, image_dest=$image_dest\n" . + "\t image_name=$image_name, src_dir=$src_dir" if $DEBUG; + + if ($no_symlink) { + warn "cp -a --backup=t $realimageloc$image_name $kimage" if $DEBUG; + my $ret = system("cp -a --backup=t " . $realimageloc . + "$image_name " . " $kimage"); + if ($ret) { + die("Failed to copy " . $realimageloc . "$image_name to " + . $image_dest . "$kimage"); + } + } + elsif ($reverse_symlink) { + warn "mv -f $realimageloc$image_name $kimage" if $DEBUG; + my $ret = system("mv -f " . $realimageloc . "$image_name " + . "$kimage"); + if ($ret) { + die("Failed to move " . $realimageloc . "$image_name to " + . $image_dest . "$kimage"); + } + } + else { + if (! $have_conffile) { + my $ret; + my $answer=''; + $do_symlink = "Yes"; + + if (open(CONF, ">$CONF_LOC")) { + print CONF "# Kernel Image management overrides\n"; + print CONF "# See kernel-img.conf(5) for details\n"; + if ($loader =~ /palo/i) { + print CONF "link_in_boot = Yes\n"; + print CONF "do_symlinks = Yes\n"; + print CONF "relative_links = Yes\n"; + print CONF "do_bootloader = No\n"; + } else { + print CONF "do_symlinks = $do_symlink\n"; + } + close CONF; + } + $have_conffile = "Yes"; + } + } + + if (! $no_symlink && $do_symlink =~ /Yes/i) { + my $Old = $realimageloc; + my $New = $image_dest; + my $Name = "$image_name"; + my $Link_Dest = "$kimage"; + + if ($reverse_symlink) { + $Old = $image_dest; + $New = $realimageloc; + $Name = "$kimage"; + $Link_Dest = $realimageloc . "$image_name"; + } + if (test_relative ('Old Dir' => $Old, + 'New Dir' => $New, + 'Test File' => $Name)) { + $Old =~ s|^/*||o; + } + # Special case is they are in the same dir + my $rel_path = spath('Old' => "$Old", 'New' => "$New" ); + $Old ="" if $rel_path =~ m/^\s*$/o; + + symlink($Old . "$Name", "$Link_Dest") || + die("Failed to symbolic-link ${Old}$Name to $Link_Dest:$!"); + warn "ln -s ${Old}$Name $Link_Dest" if $DEBUG; + + } +} + +# This routine handles the rest of the cases, where the user has requested +# non-traditional handling, like using cp, or reverse symlinks, or hard links. +sub handle_non_symlinks { + my $kimage = $_[0]; # Name of the symbolic link + my $image_dest = $_[1]; # The directory the links goes into + my $image_name = $_[2]; + my $src_dir = $_[3]; + warn "handle_non_link: kimage=$kimage, image_dest=$image_dest\n" . + "\t image_name=$image_name, src_dir=$src_dir" if $DEBUG; + + # Save the current image. We do this in all four cases + rename("$kimage", "$kimage.$$") || + die "failed to move " . $image_dest . "$kimage:$!"; + warn "mv $kimage $kimage.$$" if $DEBUG; + + ##,#### + # case One + #`#### + if ($no_symlink) { + # Maybe /$image_dest is on a dos system? + warn "cp -a --backup=t $realimageloc$image_name $kimage" if $DEBUG; + my $ret = system("cp -a --backup=t " . $realimageloc + . "$image_name " . "$kimage"); + if ($ret) { + if (-e "$kimage.$$") { + rename("$kimage.$$", "$kimage"); + warn "mv $kimage.$$ $kimage" if $DEBUG; + } + die("Failed to copy " . $realimageloc . "$image_name to " + . $image_dest . "$kimage"); + } + } + ##,#### + # case Two + #`#### + elsif ($reverse_symlink) { # Maybe /$image_dest is on a dos system? + warn "mv -f $realimageloc$image_name $kimage" if $DEBUG; + my $ret = system("mv -f " . $realimageloc . "$image_name " + . $image_dest . "$kimage"); + if ($ret) { + if (-e "$kimage.$$") { + rename("$kimage.$$", "$kimage"); + warn "mv $kimage.$$ $kimage" if $DEBUG; + } + die("Failed to move " . $realimageloc . "$image_name to " + . $image_dest . "$kimage"); + } + my $Old = $image_dest; + if (test_relative ('Old Dir' => $Old, 'New Dir' => $realimageloc, + 'Test File' => "$kimage")) { + $Old =~ s|^/*||o; + } + # Special case is they are in the same dir + my $rel_path = spath('Old' => "$Old", 'New' => "$realimageloc" ); + $Old ="" if $rel_path =~ m/^\s*$/o; + + if ($use_hard_links =~ m/YES/i) { + warn "ln " . $Old . "$kimage " . $realimageloc . "$image_name" if $DEBUG; + if (! link($Old . "$kimage", $realimageloc . "$image_name")) { + warn "Could not link " . $image_dest . + "$kimage to $image_name :$!"; + } + } + else { + warn "ln -s " . $Old . "$kimage " . $realimageloc . "$image_name" if $DEBUG; + if (! symlink($Old . "$kimage", $realimageloc . "$image_name")) { + warn "Could not symlink " . $image_dest . + "$kimage to $image_name :$!"; + } + } + } + ##,#### + # case Three + #`#### + elsif ($use_hard_links =~ m/YES/i ) { + # Ok then. this ought to be a hard link, and hence fair game + # don't clobber $kimage.old quite yet + my $Old = $realimageloc; + my $cwd; + chomp($cwd=`pwd`); + if (test_relative ('Old Dir' => $Old, 'New Dir' => $cwd, + 'Test File' => "$image_name")) { + $Old =~ s|^/*||o; + } + # Special case is they are in the same dir + my $rel_path = spath('Old' => "$Old", 'New' => "$cwd" ); + $Old ="" if $rel_path =~ m/^\s*$/o; + + warn "ln " . $Old . "$image_name " . "$kimage" if $DEBUG; + if (! link($Old . "$image_name", "$kimage")) { + warn "mv $kimage.$$ $kimage" if $DEBUG; + rename("$kimage.$$", "$kimage"); + die("Failed to link " . $realimageloc . "$image_name to " + . $image_dest . "$kimage"); + } + } + ##,#### + # case Four + #`#### + else { + # We just use cp + warn "cp -a --backup=t $realimageloc$image_name $kimage" if $DEBUG; + my $ret = system("cp -a --backup=t " . $realimageloc + . "$image_name " . "$kimage"); + if ($ret) { + if (-e "$kimage.$$") { + warn "mv $kimage.$$ $kimage" if $DEBUG; + rename("$kimage.$$", "$kimage"); + } + die("Failed to copy " . $realimageloc . "$image_name to " + . $image_dest . "$kimage"); + } + } + # Ok, now we may clobber the previous .old file + warn "mv $kimage.$$ $kimage.old if -e $kimage.$$" if $DEBUG; + rename("$kimage.$$", "$kimage.old") if -e "$kimage.$$"; +} + +# This routine is responsible for setting up the symbolic links +# So, the actual kernel image lives in +# $realimageloc/$image_name (/boot/vmlinuz-2.6.12). +# This routine creates symbolic links in $image_dest/$kimage (/vmlinuz) +sub image_magic { + my $kimage = $_[0]; # Name of the symbolic link + my $image_dest = $_[1]; # The directory the links goes into + my $image_name = "$kimage-$version"; + my $src_dir = $realimageloc; + warn "image_magic: kimage=$kimage, image_dest=$image_dest\n" . + "\t image_name=$image_name, src_dir=$src_dir" if $DEBUG; + + # Well, in any case, if the destination (the symlink we are trying + # to create) is a directory, we should do nothing, except throw a + # diagnostic. + if (-d "$kimage" ) { + die ("Hmm. $kimage is a directory, which I did not expect. I am\n" . + "trying to create a symbolic link with that name linked to \n" . + "$image_dest . Since a directory exists here, my assumptions \n" . + "are way off, and I am aborting.\n" ); + exit (3); + } + + if ($move_image) { # Maybe $image_dest is in on dos, or something? + # source dir, link name, dest dir + really_move_image( $realimageloc, $image_name, $image_dest); + really_reverse_link($realimageloc, $image_name, $image_dest) + if $reverse_symlink; + return; + } + + if (-l "$kimage") { # There is a symbolic link + warn "DEBUG: There is a symlink for $kimage\n" if $DEBUG; + my $force_move = move_p($kimage, $image_dest, $image_name, $src_dir); + + if ($force_move) { + really_move_link($kimage, $image_dest, $image_name, $src_dir); + } + } + elsif (! -e "$kimage") { + # Hmm. Pristine system? How can that be? Installing from scratch? + # Or maybe the user does not want a symbolic link here. + # Possibly they do not want a link here. (we should be in / + # here[$image_dest, really] + handle_missing_link($kimage, $image_dest, $image_name, $src_dir); + } + elsif (-e "$kimage" ) { + # OK, $kimage exists -- but is not a link + handle_non_symlinks($kimage, $image_dest, $image_name, $src_dir); + } +} + +###################################################################### +###################################################################### +###################################################################### +###################################################################### + +# We may not have any modules installed +if ( -d "$modules_base/$version" ) { + print STDERR "Running depmod.\n"; + my $ret = system("depmod -a $version"); + if ($ret) { + print STDERR "Failed to run depmod\n"; + exit(1); + } +} + + + +sub find_initrd_tool { + my $hostversion = shift; + my $version = shift; + print STDERR "Finding valid ramdisk creators.\n"; + my @ramdisks = + grep { + my $args = + "$_ " . + "--supported-host-version=$hostversion " . + "--supported-target-version=$version " . + "1>/dev/null 2>&1" + ; + system($args) == 0; + } + split (/[:,\s]+/, $ramdisk); +} + +# The initrd symlink should probably be in the same dir that the +# symlinks are in +if ($initrd) { + my $success = 0; + + # Update-initramfs is called slightly different than mkinitrd and + # mkinitramfs. XXX It should really be made compatible with this stuff + # some how. + my $upgrading = 1; + if (! defined $ARGV[1] || ! $ARGV[1] || $ARGV[1] =~ m//og) { + $upgrading = 0; + } + my $ret = system("$ramdisk " . ($upgrading ? "-u" : "-c") . " -k " . $version . " >&2"); + $success = 1 unless $ret; + die "Failed to create initrd image.\n" unless $success; + if (! defined $ARGV[1] || ! $ARGV[1] || $ARGV[1] =~ m//og) { + image_magic("initrd.img", $image_dest); + } + else { + if (! -e "initrd.img") { + handle_missing_link("initrd.img", $image_dest, "initrd.img-$version", + $realimageloc); + } + else { + print STDERR + "Not updating initrd symbolic links since we are being updated/reinstalled \n"; + print STDERR + "($ARGV[1] was configured last, according to dpkg)\n"; + } + } + + if ($initrd && -l "initrd" ) { + unlink "initrd"; + } + + if ($initrd && -l "$image_dir/initrd" && ! $link_in_boot) { + unlink "$image_dir/initrd"; + } +} +else { # Not making an initrd emage + if (-l "initrd.img") { + # Ooh, last image was an initrd image? in any case, we should move it. + my $target = readlink "initrd.img"; + my $real_target = ''; + $real_target = abs_path($target) if defined ($target); + + if (!defined($target) || ! -f "$real_target") { + # Eh. dangling link. can safely be removed. + unlink("initrd.img"); + } else { + if (-l "initrd.img.old" || ! -e "initrd.img.old" ) { + rename("initrd.img", "initrd.img.old"); + } else { + warn "initrd.img.old is not a symlink, not clobbering\n"; + unlink("initrd.img"); + } + } + } +} + +# Warn of a reboot +if (-x $notifier) { + system($notifier); +} + +# Let programs know not to hibernate if the kernel that would be used for +# resume-from-hibernate is likely to differ from the currently running kernel. +system("mountpoint -q /var/run"); +if ($? eq 0) { + system("touch /var/run/do-not-hibernate"); +} + +# Only change the symlinks if we are not being upgraded +if (! defined $ARGV[1] || ! $ARGV[1] || $ARGV[1] =~ m//og) { + image_magic($kimage, $image_dest); +} +else { + if (! -e "$kimage") { + handle_missing_link($kimage, $image_dest, "$kimage-$version", + $realimageloc); + } + else { + print STDERR + "Not updating image symbolic links since we are being updated/reinstalled \n"; + print STDERR + "($ARGV[1] was configured last, according to dpkg)\n"; + } +} + +# We used to have System.* files in / +if (-e "/System.map" || -e "/System.old") { + unlink '/System.map' if -e '/System.map'; + unlink '/System.old' if -e '/System.old'; +} + +# creating some info about kernel and initrd +if ($DEBUG) { + my $ksize=sprintf("%.0f",(stat($realimageloc . + "$kimage-$version"))[7]/1024)."kB"; + my $initrdsize=''; + if ($initrd) { + $initrdsize=sprintf("%.0f",(stat($realimageloc . + "initrd.img-$version"))[7]/1024)."kB"; + } + + print STDERR <<"EOMSG"; +A new kernel image has been installed at $realimageloc$kimage-$version + (Size: $ksize) + +Symbolic links, unless otherwise specified, can be found in $image_dest + +EOMSG + ; + + if ($initrd) { + print STDERR <<"EOMSGA"; + + Initial rootdisk image: ${realimageloc}initrd.img-$version (Size: $initrdsize) +EOMSGA + ; + } +} + +# set the env var stem +$ENV{'STEM'} = "linux"; +sub exec_script { + my $type = shift; + my $script = shift; + print STDERR "Running $type hook script $script.\n"; + system ("$script $version $realimageloc$kimage-$version") && + print STDERR "User $type hook script [$script] "; + if ($?) { + if ($? == -1) { + print STDERR "failed to execute: $!\n"; + } + elsif ($? & 127) { + printf STDERR "died with signal %d, %s coredump\n", + ($? & 127), ($? & 128) ? 'with' : 'without'; + } + else { + printf STDERR "exited with value %d\n", $? >> 8; + } + exit $? >> 8; + } +} +sub run_hook { + my $type = shift; + my $script = shift; + if ($script =~ m,^/,) { + # Full path provided for the hook script + if (-x "$script") { + &exec_script($type,$script); + } + else { + die "The provided $type hook script [$script] could not be run.\n"; + } + } + else { + # Look for it in a safe path + for my $path ('/bin', '/sbin', '/usr/bin', '/usr/sbin') { + if (-x "$path/$script") { + &exec_script($type, "$path/$script"); + return 0; + } + } + # No luck + print STDERR "Could not find $type hook script [$script].\n"; + die "Looked in: '/bin', '/sbin', '/usr/bin', '/usr/sbin'\n"; + } +} + +my $options; +for (@ARGV) { + s,','\\'',g; + $options .= " '$_'"; +} +$ENV{'DEB_MAINT_PARAMS'}="$options"; + +## Run user hook script here, if any +if ($postinst_hook) { + &run_hook("postinst", $postinst_hook); +} + +if (-d "/etc/kernel/postinst.d") { + print STDERR "Examining /etc/kernel/postinst.d.\n"; + system ("run-parts --verbose --exit-on-error --arg=$version " . + "--arg=$realimageloc$kimage-$version " . + "/etc/kernel/postinst.d") && + die "Failed to process /etc/kernel/postinst.d"; +} + +if (-d "/etc/kernel/postinst.d/$version") { + print STDERR "Examining /etc/kernel/postinst.d/$version.\n"; + system ("run-parts --verbose --exit-on-error --arg=$version " . + "--arg=$realimageloc$kimage-$version " . + "/etc/kernel/postinst.d/$version") && + die "Failed to process /etc/kernel/postinst.d/$version"; +} + +LOADER: { + last unless $do_boot_enable; # Exit if explicitly asked to + + last if $loader =~ /silo/i; # SILO does not have to be executed. + last if $loader =~ /yaboot/i; # yaboot does not have to be executed. + last if $loader =~ /milo/i; # MILO does not have to be executed. + last if $loader =~ /nettrom/i; # NETTROM does not have to be executed. + last if $loader =~ /arcboot/i; # ARCBOOT does not have to be executed. + last if $loader =~ /delo/i; # DELO does not have to be executed. + last if $loader =~ /quik/i; # maintainer asked quik invocation to be ignored + + last unless $loaderloc; + last unless -x $loaderloc; + last unless $do_bootloader; + + if (-T "/etc/$loader.conf") { + # Trust and use the existing lilo.conf. + print STDERR "You already have a $Loader configuration in /etc/$loader.conf\n"; + my $ret = &run_lilo(); + exit $ret if $ret; + } +} + + +sub run_lilo (){ + my $ret; + # Try and figure out if the user really wants lilo to be run -- + # since the default is to run the boot laoder, which is ! grub -- but + # the user may be using grub now, and not changed the default. + + # So, if the user has explicitly asked for the loader to be run, or + # if there is no postinst hook, or if there is no grub installed -- + # we are OK. Or else, we ask. + if ($explicit_do_loader || (! ($postinst_hook && -x '/usr/sbin/grub'))) { + print STDERR "Running boot loader as requested\n"; + } else { + print STDERR "Ok, not running $loader\n"; + } + if ($loader =~ /^lilo/io or $loader =~ /vmelilo/io) { + print STDERR "Testing $loader.conf ... \n"; + unlink $temp_file_name; # security + $ret = system("$loaderloc -t >$temp_file_name 2>&1"); + if ($ret) { + print STDERR "Boot loader test failed\n"; + return $ret; + } + unlink "$temp_file_name"; + print STDERR "Testing successful.\n"; + print STDERR "Installing the "; + print STDERR "partition " if $loader =~ /^lilo/io; + print STDERR "boot sector... \n"; + } + + print STDERR "Running $loaderloc ... \n"; + if ($loader =~ /^elilo/io) { + $ret = system("$loaderloc 2>&1 | tee $temp_file_name"); + } else { + $ret = system("$loaderloc >$temp_file_name 2>&1"); + } + if ($ret) { + print STDERR "Boot loader failed to run\n"; + return $ret; + } + unlink $temp_file_name; + print STDERR "Installation successful.\n"; + return 0; +} + +exit 0; + +__END__ + --- linux-raspi2-4.2.0.orig/debian/control-scripts/postrm +++ linux-raspi2-4.2.0/debian/control-scripts/postrm @@ -0,0 +1,361 @@ +#! /usr/bin/perl +# -*- Mode: Cperl -*- +# image.postrm --- +# Author : Manoj Srivastava ( srivasta@glaurung.green-gryphon.com ) +# Created On : Sat May 15 11:05:13 1999 +# Created On Node : glaurung.green-gryphon.com +# Last Modified By : Manoj Srivastava +# Last Modified On : Wed Sep 13 11:26:19 2006 +# Last Machine Used: glaurung.internal.golden-gryphon.com +# Update Count : 57 +# Status : Unknown, Use with caution! +# HISTORY : +# Description : +# +# $Id: image.postrm,v 1.31 2003/10/07 16:24:20 srivasta Exp $ +# + + +# +#use strict; #for debugging +use Cwd 'abs_path'; + +$|=1; + +# Predefined values: +my $version = "=V"; +my $link_in_boot = ""; # Should be empty, mostly +my $no_symlink = ""; # Should be empty, mostly +my $reverse_symlink = ""; # Should be empty, mostly +my $do_symlink = "Yes"; # target machine defined +my $do_boot_enable = "Yes"; # target machine defined +my $do_bootfloppy = "Yes"; # target machine defined +my $do_bootloader = "Yes"; # target machine defined +my $move_image = ''; # target machine defined +my $kimage = "=K"; # Should be empty, mostly +my $loader = "=L"; # lilo, silo, quik, palo, vmelilo, or nettrom +my $image_dir = "/boot"; # where the image is located +my $clobber_modules = ''; # target machine defined +my $initrd = "YES"; # initrd kernel +my $do_initrd = ''; # Normally, we don't +my $warn_initrd = 'YES'; # Normally we do +my $use_hard_links = ''; # hardlinks do not work across fs boundaries +my $postinst_hook = ''; #Normally we do not +my $postrm_hook = ''; #Normally we do not +my $preinst_hook = ''; #Normally we do not +my $prerm_hook = ''; #Normally we do not +my $minimal_swap = ''; # Do not swap symlinks +my $ignore_depmod_err = ''; # normally we do not +my $relink_build_link = 'YES'; # There is no harm in checking the link +my $force_build_link = ''; # we shall not create a dangling link +my $kernel_arch = "=B"; +my $ramdisk = "/usr/sbin/update-initramfs"; +my $package_name = "linux-image-$version"; + +my $Loader = "NoLOADER"; # +$Loader = "LILO" if $loader =~ /^lilo/io; +$Loader = "SILO" if $loader =~ /^silo/io; +$Loader = "QUIK" if $loader =~ /^quik/io; +$Loader = "yaboot" if $loader =~ /^yaboot/io; +$Loader = "PALO" if $loader =~ /^palo/io; +$Loader = "NETTROM" if $loader =~ /^nettrom/io; +$Loader = "VMELILO" if $loader =~ /^vmelilo/io; +$Loader = "ZIPL" if $loader =~ /^zipl/io; +$Loader = "ELILO" if $loader =~ /^elilo/io; + + +# This should not point to /tmp, because of security risks. +my $temp_file_name = "/var/log/$loader" . "_log.$$"; + +#known variables +my @boilerplate = (); +my @silotemplate = (); +my @quiktemplate = (); +my @palotemplate = (); +my @vmelilotemplate = (); +my $bootdevice = ''; +my $rootdevice = ''; +my $rootdisk = ''; +my $rootpartition = ''; +my $image_dest = "/"; +my $realimageloc = "/$image_dir/"; +my $have_conffile = ""; +my $CONF_LOC = '/etc/kernel-img.conf'; +my $relative_links = ''; +my $silent_modules = ''; +my $silent_loader = ''; +my $warn_reboot = 'Yes'; # Warn that we are installing a version of + # the kernel we are running + +chdir('/') or die "could not chdir to /:$!\n"; +# remove multiple leading slashes; make sure there is at least one. +$realimageloc =~ s|^/*|/|o; +$realimageloc =~ s|/+|/|o; + + +if (-r "$CONF_LOC" && -f "$CONF_LOC" ) { + if (open(CONF, "$CONF_LOC")) { + while () { + chomp; + s/\#.*$//g; + next if /^\s*$/; + + $do_symlink = "" if /^\s*do_symlinks\s*=\s*(no|false|0)\s*$/ig; + $no_symlink = "" if /^\s*no_symlinks\s*=\s*(no|false|0)\s*$/ig; + $reverse_symlink = "" if /^\s*reverse_symlinks\s*=\s*(no|false|0)\s*$/ig; + $link_in_boot = "" if /^\s*image_in_boot\s*=\s*(no|false|0)\s*$/ig; + $link_in_boot = "" if /^\s*link_in_boot\s*=\s*(no|false|0)\s*$/ig; + $move_image = "" if /^\s*move_image\s*=\s*(no|false|0)\s*$/ig; + $clobber_modules = '' if /^\s*clobber_modules\s*=\s*(no|false|0)\s*$/ig; + $do_boot_enable = '' if /^\s*do_boot_enable\s*=\s*(no|false|0)\s*$/ig; + $do_bootfloppy = '' if /^\s*do_bootfloppy\s*=\s*(no|false|0)\s*$/ig; + $relative_links = '' if /^\s*relative_links \s*=\s*(no|false|0)\s*$/ig; + $do_bootloader = '' if /^\s*do_bootloader\s*=\s*(no|false|0)\s*$/ig; + $do_initrd = '' if /^\s*do_initrd\s*=\s*(no|false|0)\s*$/ig; + $warn_initrd = '' if /^\s*warn_initrd\s*=\s*(no|false|0)\s*$/ig; + $use_hard_links = '' if /^\s*use_hard_links\s*=\s*(no|false|0)\s*$/ig; + $silent_modules = '' if /^\s*silent_modules\s*=\s*(no|false|0)\s*$/ig; + $silent_loader = '' if /^\s*silent_loader\s*=\s*(no|false|0)\s*$/ig; + $warn_reboot = '' if /^\s*warn_reboot\s*=\s*(no|false|0)\s*$/ig; + $minimal_swap = '' if /^\s*minimal_swap\s*=\s*(no|false|0)\s*$/ig; + $ignore_depmod_err = '' if /^\s*ignore_depmod_err\s*=\s*(no|false|0)\s*$/ig; + $relink_build_link = '' if /^\s*relink_build_link\s*=\s*(no|false|0)\s*$/ig; + $force_build_link = '' if /^\s*force_build_link\s*=\s*(no|false|0)\s*$/ig; + + $do_symlink = "Yes" if /^\s*do_symlinks\s*=\s*(yes|true|1)\s*$/ig; + $no_symlink = "Yes" if /^\s*no_symlinks\s*=\s*(yes|true|1)\s*$/ig; + $reverse_symlink = "Yes" if /^\s*reverse_symlinks\s*=\s*(yes|true|1)\s*$/ig; + $link_in_boot = "Yes" if /^\s*image_in_boot\s*=\s*(yes|true|1)\s*$/ig; + $link_in_boot = "Yes" if /^\s*link_in_boot\s*=\s*(yes|true|1)\s*$/ig; + $move_image = "Yes" if /^\s*move_image\s*=\s*(yes|true|1)\s*$/ig; + $clobber_modules = "Yes" if /^\s*clobber_modules\s*=\s*(yes|true|1)\s*$/ig; + $do_boot_enable = "Yes" if /^\s*do_boot_enable\s*=\s*(yes|true|1)\s*$/ig; + $do_bootfloppy = "Yes" if /^\s*do_bootfloppy\s*=\s*(yes|true|1)\s*$/ig; + $do_bootloader = "Yes" if /^\s*do_bootloader\s*=\s*(yes|true|1)\s*$/ig; + $relative_links = "Yes" if /^\s*relative_links\s*=\s*(yes|true|1)\s*$/ig; + $do_initrd = "Yes" if /^\s*do_initrd\s*=\s*(yes|true|1)\s*$/ig; + $warn_initrd = "Yes" if /^\s*warn_initrd\s*=\s*(yes|true|1)\s*$/ig; + $use_hard_links = "Yes" if /^\s*use_hard_links\s*=\s*(yes|true|1)\s*$/ig; + $silent_modules = 'Yes' if /^\s*silent_modules\s*=\s*(yes|true|1)\s*$/ig; + $silent_loader = 'Yes' if /^\s*silent_loader\s*=\s*(yes|true|1)\s*$/ig; + $warn_reboot = 'Yes' if /^\s*warn_reboot\s*=\s*(yes|true|1)\s*$/ig; + $minimal_swap = 'Yes' if /^\s*minimal_swap\s*=\s*(yes|true|1)\s*$/ig; + $ignore_depmod_err = 'Yes' if /^\s*ignore_depmod_err\s*=\s*(yes|true|1)\s*$/ig; + $relink_build_link = 'Yes' if /^\s*relink_build_link\s*=\s*(yes|true|1)\s*$/ig; + $force_build_link = 'Yes' if /^\s*force_build_link\s*=\s*(yes|true|1)\s*$/ig; + + $image_dest = "$1" if /^\s*image_dest\s*=\s*(\S+)/ig; + $postinst_hook = "$1" if /^\s*postinst_hook\s*=\s*(\S+)/ig; + $postrm_hook = "$1" if /^\s*postrm_hook\s*=\s*(\S+)/ig; + $preinst_hook = "$1" if /^\s*preinst_hook\s*=\s*(\S+)/ig; + $prerm_hook = "$1" if /^\s*prerm_hook\s*=\s*(\S+)/ig; + $ramdisk = "$1" if /^\s*ramdisk\s*=\s*(.+)$/ig; + } + close CONF; + $have_conffile = "Yes"; + } +} + +if ($link_in_boot) { + $image_dest = "/$image_dir/"; + $image_dest =~ s|^/*|/|o; +} + +$image_dest = "$image_dest/"; +$image_dest =~ s|/+$|/|o; + +# The destdir may be gone by now. +if (-d "$image_dest") { + chdir("$image_dest") or die "could not chdir to $image_dest:$!\n"; +} + +# Paranoid check to make sure that the correct value is put in there +if (! $kimage) {$kimage = "vmlinuz"} # Hmm. empty +elsif ($kimage =~ m/^b?uImage$/o) {$kimage = "vmlinuz"} # these produce vmlinuz +elsif ($kimage =~ m/^b?zImage$/o) {$kimage = "vmlinuz"} # these produce vmlinuz +elsif ($kimage =~ m/^[iI]mage$/o) { my $nop = $kimage;} +elsif ($kimage =~ m/^vmlinux$/o) { my $nop = $kimage;} +else {$kimage = "vmlinuz"} # default + +$ENV{KERNEL_ARCH}=$kernel_arch if $kernel_arch; + + +###################################################################### +###################################################################### +############ +###################################################################### +###################################################################### +sub remove_sym_link { + my $bad_image = $_[0]; + + warn "Removing symbolic link $bad_image \n"; + if ($loader =~ /lilo/i) + { + warn "Unless you used the optional flag in lilo, \n"; + } + warn " you may need to re-run your boot loader" . ($loader ? "[$loader]":"") + . "\n"; + # Remove the dangling link + unlink "$bad_image"; +} + +###################################################################### +###################################################################### +############ +###################################################################### +###################################################################### +sub CanonicalizePath { + my $path = join '/', @_; + my @work = split '/', $path; + my @out; + my $is_absolute; + + if (@work && $work[0] eq "") { $is_absolute = 1; shift @work; } + + while (@work) { + my $seg = shift @work; + if ($seg eq "." || $seg eq "") { + } elsif ($seg eq "..") { + if (@out && $out[-1] ne "..") { + pop @out; + } else { + # Leading "..", or "../..", etc. + push @out, $seg; + } + } else { + push @out, $seg; + } + } + + unshift @out, "" if $is_absolute; + return join('/', @out); +} + +###################################################################### +###################################################################### +############ +###################################################################### +###################################################################### +# This removes dangling symlinks. What do we do about hard links? Surely a +# something with the nane $image_dest . "$kimage" ought not to be left behind? +sub image_magic { + my $kimage = $_[0]; + my $image_dest = $_[1]; + + if (-l "$kimage") { + # There is a symbolic link + my $force_move = 0; + my $vmlinuz_target = readlink "$kimage"; + my $real_target = ''; + $real_target = abs_path($vmlinuz_target) if defined ($vmlinuz_target); + if (!defined($vmlinuz_target) || ! -f "$real_target") { + # what, a dangling symlink? + warn "The link " . $image_dest . "$kimage is a damaged link\n"; + # Remove the dangling link + &remove_sym_link("$kimage"); + } + else { + my $canonical_target = CanonicalizePath("$vmlinuz_target"); + if (! -e $canonical_target) { + warn "The link " . $image_dest . "$kimage is a dangling link\n"; + &remove_sym_link("$kimage"); + } + } + } +} + +# set the env var stem +$ENV{'STEM'} = "linux"; + +sub exec_script { + my $type = shift; + my $script = shift; + print STDERR "Running $type hook script $script.\n"; + system ("$script $version $realimageloc$kimage-$version") && + print STDERR "User $type hook script [$script] "; + if ($?) { + if ($? == -1) { + print STDERR "failed to execute: $!\n"; + } + elsif ($? & 127) { + printf STDERR "died with signal %d, %s coredump\n", + ($? & 127), ($? & 128) ? 'with' : 'without'; + } + else { + printf STDERR "exited with value %d\n", $? >> 8; + } + } +} +sub run_hook { + my $type = shift; + my $script = shift; + if ($script =~ m,^/,) { + # Full path provided for the hook script + if (-x "$script") { + &exec_script($type,$script); + } + else { + warn "The provided $type hook script [$script] could not be run.\n"; + } + } + else { + # Look for it in a safe path + for my $path ('/bin', '/sbin', '/usr/bin', '/usr/sbin') { + if (-x "$path/$script") { + &exec_script($type, "$path/$script"); + return 0; + } + } + # No luck + print STDERR "Could not find $type hook script [$script].\n"; + warn "Looked in: '/bin', '/sbin', '/usr/bin', '/usr/sbin'\n"; + } +} + +my $options; +for (@ARGV) { + s,','\\'',g; + $options .= " '$_'"; +} +$ENV{'DEB_MAINT_PARAMS'}="$options"; + +## Run user hook script here, if any +if ($postrm_hook) { + &run_hook("postrm", $postrm_hook); +} +if (-d "/etc/kernel/postrm.d") { + warn "Examining /etc/kernel/postrm.d .\n"; + system ("run-parts --verbose --exit-on-error --arg=$version " . + "--arg=$realimageloc$kimage-$version " . + "/etc/kernel/postrm.d") && + die "Failed to process /etc/kernel/postrm.d"; +} +if (-d "/etc/kernel/postrm.d/$version") { + warn "Examining /etc/kernel/postrm.d/$version .\n"; + system ("run-parts --verbose --exit-on-error --arg=$version " . + "--arg=$realimageloc$kimage-$version " . + "/etc/kernel/postrm.d/$version") && + die "Failed to process /etc/kernel/postrm.d/$version"; +} + +# check and remove damaged and dangling symlinks +if ($ARGV[0] !~ /upgrade/) { + system("$ramdisk -d -k " . $version . " > /dev/null 2>&1"); + if (-f $realimageloc . "initrd.img-$version.bak") { + unlink $realimageloc . "initrd.img-$version.bak"; + } + image_magic($kimage, $image_dest); + image_magic($kimage . ".old", $image_dest); + image_magic("initrd.img", $image_dest) if $initrd; + image_magic("initrd.img.old", $image_dest) if $initrd; +} + +exit 0; + +__END__ + + + + + + --- linux-raspi2-4.2.0.orig/debian/control-scripts/preinst +++ linux-raspi2-4.2.0/debian/control-scripts/preinst @@ -0,0 +1,315 @@ +#! /usr/bin/perl +# -*- Mode: Cperl -*- +# image.preinst --- +# Author : Manoj Srivastava ( srivasta@tiamat.datasync.com ) +# Created On : Sun Jun 14 03:38:02 1998 +# Created On Node : tiamat.datasync.com +# Last Modified By : Manoj Srivastava +# Last Modified On : Sun Sep 24 14:04:42 2006 +# Last Machine Used: glaurung.internal.golden-gryphon.com +# Update Count : 99 +# Status : Unknown, Use with caution! +# HISTORY : +# Description : +# +# + +# +#use strict; #for debugging + +use Debconf::Client::ConfModule qw(:all); +version('2.0'); +my $capb=capb("backup"); + +$|=1; + +# Predefined values: +my $version = "=V"; +my $link_in_boot = ""; # Should be empty, mostly +my $no_symlink = ""; # Should be empty, mostly +my $reverse_symlink = ""; # Should be empty, mostly +my $do_symlink = "Yes"; # target machine defined +my $do_boot_enable = "Yes"; # target machine defined +my $do_bootfloppy = "Yes"; # target machine defined +my $do_bootloader = "Yes"; # target machine defined +my $move_image = ''; # target machine defined +my $kimage = "=K"; # Should be empty, mostly +my $loader = "=L"; # lilo, silo, quik, palo, vmelilo, nettrom + # or elilo +my $image_dir = "/boot"; # where the image is located +my $initrd = "YES"; # initrd kernel +my $use_hard_links = ''; # hardlinks do not wirk across fs boundaries +my $postinst_hook = ''; #Normally we do not +my $postrm_hook = ''; #Normally we do not +my $preinst_hook = ''; #Normally we do not +my $prerm_hook = ''; #Normally we do not +my $minimal_swap = ''; # Do not swap symlinks +my $ignore_depmod_err = ''; # normally we do not +my $relink_src_link = 'YES'; # There is no harm in checking the link +my $relink_build_link = 'YES'; # There is no harm in checking the link +my $force_build_link = ''; # There is no harm in checking the link +my $kernel_arch = "=B"; +my $ramdisk = "/usr/sbin/update-initramfs"; # List of tools to create initial ram fs. +my $package_name = "linux-image-$version"; + +my $Loader = "NoLOADER"; # +$Loader = "LILO" if $loader =~ /^lilo/io; +$Loader = "SILO" if $loader =~ /^silo/io; +$Loader = "QUIK" if $loader =~ /^quik/io; +$Loader = "yaboot" if $loader =~ /^yaboot/io; +$Loader = "PALO" if $loader =~ /^palo/io; +$Loader = "NETTROM" if $loader =~ /^nettrom/io; +$Loader = "VMELILO" if $loader =~ /^vmelilo/io; +$Loader = "ZIPL" if $loader =~ /^zipl/io; +$Loader = "ELILO" if $loader =~ /^elilo/io; + + +#known variables +my @boilerplate = (); +my @silotemplate = (); +my @quiktemplate = (); +my @palotemplate = (); +my @vmelilotemplate = (); +my $bootdevice = ''; +my $rootdevice = ''; +my $rootdisk = ''; +my $rootpartition = ''; +my $image_dest = "/"; +my $realimageloc = "/$image_dir/"; +my $have_conffile = ""; +my $CONF_LOC = '/etc/kernel-img.conf'; +my $relative_links = ''; +my $silent_loader = ''; +my $warn_reboot = ''; # Warn that we are installing a version of + # the kernel we are running + +my $modules_base = '/lib/modules'; + +die "Pre inst Internal error. Aborting." unless $version; + +exit 0 if $ARGV[0] =~ /abort-upgrade/; +exit 1 unless $ARGV[0] =~ /(install|upgrade)/; + +$arch = `uname -i`; +if ($arch =~ m/86/) { + system ("grep -q ' pae ' /proc/cpuinfo"); + if ($?) { + print STDERR "This kernel does not support a non-PAE CPU.\n"; + exit 1; + } +} + +# remove multiple leading slashes; make sure there is at least one. +$realimageloc =~ s|^/*|/|o; +$realimageloc =~ s|/+|/|o; + +if (-r "$CONF_LOC" && -f "$CONF_LOC" ) { + if (open(CONF, "$CONF_LOC")) { + while () { + chomp; + s/\#.*$//g; + next if /^\s*$/; + + $do_symlink = "" if /^\s*do_symlinks\s*=\s*(no|false|0)\s*$/ig; + $no_symlink = "" if /^\s*no_symlinks\s*=\s*(no|false|0)\s*$/ig; + $reverse_symlink = "" if /^\s*reverse_symlinks\s*=\s*(no|false|0)\s*$/ig; + $link_in_boot = "" if /^\s*image_in_boot\s*=\s*(no|false|0)\s*$/ig; + $link_in_boot = "" if /^\s*link_in_boot\s*=\s*(no|false|0)\s*$/ig; + $move_image = "" if /^\s*move_image\s*=\s*(no|false|0)\s*$/ig; + $do_boot_enable = '' if /^\s*do_boot_enable\s*=\s*(no|false|0)\s*$/ig; + $do_bootfloppy = '' if /^\s*do_bootfloppy\s*=\s*(no|false|0)\s*$/ig; + $do_bootloader = '' if /^\s*do_bootloader\s*=\s*(no|false|0)\s*$/ig; + $relative_links = '' if /^\s*relative_links \s*=\s*(no|false|0)\s*$/ig; + $use_hard_links = '' if /^\s*use_hard_links\s*=\s*(no|false|0)\s*$/ig; + $silent_loader = '' if /^\s*silent_loader\s*=\s*(no|false|0)\s*$/ig; + $warn_reboot = '' if /^\s*warn_reboot\s*=\s*(no|false|0)\s*$/ig; + $minimal_swap = '' if /^\s*minimal_swap\s*=\s*(no|false|0)\s*$/ig; + $ignore_depmod_err = '' if /^\s*ignore_depmod_err\s*=\s*(no|false|0)\s*$/ig; + $relink_src_link = '' if /^\s*relink_src_link\s*=\s*(no|false|0)\s*$/ig; + $relink_build_link = '' if /^\s*relink_build_link\s*=\s*(no|false|0)\s*$/ig; + $force_build_link = '' if /^\s*force_build_link\s*=\s*(no|false|0)\s*$/ig; + + $do_symlink = "Yes" if /^\s*do_symlinks\s*=\s*(yes|true|1)\s*$/ig; + $no_symlink = "Yes" if /^\s*no_symlinks\s*=\s*(yes|true|1)\s*$/ig; + $reverse_symlink = "Yes" if /^\s*reverse_symlinks\s*=\s*(yes|true|1)\s*$/ig; + $link_in_boot = "Yes" if /^\s*image_in_boot\s*=\s*(yes|true|1)\s*$/ig; + $link_in_boot = "Yes" if /^\s*link_in_boot\s*=\s*(yes|true|1)\s*$/ig; + $move_image = "Yes" if /^\s*move_image\s*=\s*(yes|true|1)\s*$/ig; + $do_boot_enable = "Yes" if /^\s*do_boot_enable\s*=\s*(yes|true|1)\s*$/ig; + $do_bootfloppy = "Yes" if /^\s*do_bootfloppy\s*=\s*(yes|true|1)\s*$/ig; + $do_bootloader = "Yes" if /^\s*do_bootloader\s*=\s*(yes|true|1)\s*$/ig; + $relative_links = "Yes" if /^\s*relative_links\s*=\s*(yes|true|1)\s*$/ig; + $use_hard_links = "Yes" if /^\s*use_hard_links\s*=\s*(yes|true|1)\s*$/ig; + $silent_loader = 'Yes' if /^\s*silent_loader\s*=\s*(yes|true|1)\s*$/ig; + $warn_reboot = 'Yes' if /^\s*warn_reboot\s*=\s*(yes|true|1)\s*$/ig; + $minimal_swap = 'Yes' if /^\s*minimal_swap\s*=\s*(yes|true|1)\s*$/ig; + $ignore_depmod_err = 'Yes' if /^\s*ignore_depmod_err\s*=\s*(yes|true|1)\s*$/ig; + $relink_src_link = 'Yes' if /^\s*relink_src_link\s*=\s*(yes|true|1)\s*$/ig; + $relink_build_link = 'Yes' if /^\s*relink_build_link\s*=\s*(yes|true|1)\s*$/ig; + $force_build_link = 'Yes' if /^\s*force_build_link\s*=\s*(yes|true|1)\s*$/ig; + + $image_dest = "$1" if /^\s*image_dest\s*=\s*(\S+)/ig; + $postinst_hook = "$1" if /^\s*postinst_hook\s*=\s*(\S+)/ig; + $postrm_hook = "$1" if /^\s*postrm_hook\s*=\s*(\S+)/ig; + $preinst_hook = "$1" if /^\s*preinst_hook\s*=\s*(\S+)/ig; + $prerm_hook = "$1" if /^\s*prerm_hook\s*=\s*(\S+)/ig; + $ramdisk = "$1" if /^\s*ramdisk\s*=\s*(.+)$/ig; + } + close CONF; + $have_conffile = "Yes"; + $have_conffile = "Yes"; # stop perl complaining + } +} + +$ENV{KERNEL_ARCH}=$kernel_arch if $kernel_arch; + +# About to upgrade this package from version $2 TO THIS VERSION. +# "prerm upgrade" has already been called for the old version of +# this package. + +sub find_initrd_tool { + my $hostversion = shift; + my $version = shift; + my @ramdisks = + grep { + my $args = + "$_ " . + "--supported-host-version=$hostversion " . + "--supported-target-version=$version " . + "1>/dev/null 2>&1" + ; + system($args) == 0; + } + split (/[:,\s]+/, $ramdisk); +} + +sub check { + my $version = shift; + my $lib_modules="$modules_base/$version"; + my $message = ''; + + if (-d "$lib_modules") { + opendir(DIR, $lib_modules) || die "can’t opendir $lib_modules: $!"; + my @children = readdir(DIR); + if ($#children > 1) { + my @dirs = grep { -d "$lib_modules/$_" } @children; + if ($#dirs > 1) { # we have subdirs + my $dir_message=''; + for my $dir (@dirs) { + if ($dir =~/kernel$/) { + $dir_message="An older install was detected.\n"; + } + else { + $dir_message="Module sub-directories were detected.\n" + unless $dir_message; + } + } + $message += $dir_message if $dir_message; + } + + my @links = grep { -l "$lib_modules/$_" } @children; + if ($#links > -1) { + my $links_message = ''; + for my $link (@links) { + next if ($link =~ /^build$/); + next if ($link =~ /^source$/); + $links_message = "Symbolic links were detected in $modules_base/$version.\n"; + } + $message += $links_message if $links_message; + } + my @files = grep { -f "$lib_modules/$_" } @children; + $message += "Additional files also exist in $modules_base/$version.\n" + if ($#files > -1); + } + } + else { $message .= "$lib_modules does not exist. ";} + return $message; +} + +if (-d "$modules_base/$version") { + my $errors=check($version); + warn "Info:\n$errors\n" if $errors; +} + +# set the env var stem +$ENV{'STEM'} = "linux"; + +sub exec_script { + my $type = shift; + my $script = shift; + print STDERR "Running $type hook script $script.\n"; + system ("$script $version $realimageloc$kimage-$version") && + print STDERR "User $type hook script [$script] "; + if ($?) { + if ($? == -1) { + print STDERR "failed to execute: $!\n"; + } + elsif ($? & 127) { + printf STDERR "died with signal %d, %s coredump\n", + ($? & 127), ($? & 128) ? 'with' : 'without'; + } + else { + printf STDERR "exited with value %d\n", $? >> 8; + } + exit $? >> 8; + } +} +sub run_hook { + my $type = shift; + my $script = shift; + if ($script =~ m,^/,) { + # Full path provided for the hook script + if (-x "$script") { + &exec_script($type,$script); + } + else { + die "The provided $type hook script [$script] could not be run.\n"; + } + } + else { + # Look for it in a safe path + for my $path ('/bin', '/sbin', '/usr/bin', '/usr/sbin') { + if (-x "$path/$script") { + &exec_script($type, "$path/$script"); + return 0; + } + } + # No luck + print STDERR "Could not find $type hook script [$script].\n"; + die "Looked in: '/bin', '/sbin', '/usr/bin', '/usr/sbin'\n"; + } +} + + +my $options; +for (@ARGV) { + s,','\\'',g; + $options .= " '$_'"; +} +$ENV{'DEB_MAINT_PARAMS'}="$options"; + +## Run user hook script here, if any +if (-x "$preinst_hook") { + &run_hook("preinst", $preinst_hook); +} +if (-d "/etc/kernel/preinst.d") { + print STDERR "Examining /etc/kernel/preinst.d/\n"; + system ("run-parts --verbose --exit-on-error --arg=$version" . + " --arg=$realimageloc$kimage-$version" . + " /etc/kernel/preinst.d") && + die "Failed to process /etc/kernel/preinst.d"; +} +if (-d "/etc/kernel/preinst.d/$version") { + print STDERR "Examining /etc/kernel/preinst.d/$version.\n"; + system ("run-parts --verbose --exit-on-error --arg=$version" . + " --arg=$realimageloc$kimage-$version" . + " /etc/kernel/preinst.d/$version") && + die "Failed to process /etc/kernel/preinst.d/$version"; +} +print STDERR "Done.\n"; + +exit 0; + +__END__ + + --- linux-raspi2-4.2.0.orig/debian/control-scripts/prerm +++ linux-raspi2-4.2.0/debian/control-scripts/prerm @@ -0,0 +1,312 @@ +#! /usr/bin/perl +# -*- Mode: Perl -*- +# image.prerm --- +# Author : root ( root@melkor.pilgrim.umass.edu ) +# Created On : Fri May 17 03:28:59 1996 +# Created On Node : melkor.pilgrim.umass.edu +# Last Modified By : Manoj Srivastava +# Last Modified On : Sat Aug 5 13:14:17 2006 +# Last Machine Used: glaurung.internal.golden-gryphon.com +# Update Count : 85 +# Status : Unknown, Use with caution! +# HISTORY : +# Description : +# +# +# $Id: image.prerm,v 1.22 2003/10/07 16:24:20 srivasta Exp $ +# +# +#use strict; + +$|=1; +# Predefined values: +my $version = "=V"; +my $link_in_boot = ""; # Should be empty, mostly +my $no_symlink = ""; # Should be empty, mostly +my $reverse_symlink = ""; # Should be empty, mostly +my $do_symlinks = "Yes"; # target machine defined +my $do_boot_enable = "Yes"; # target machine defined +my $do_bootfloppy = "Yes"; # target machine defined +my $do_bootloader = "Yes"; # target machine defined +my $move_image = ''; # target machine defined +my $kimage = "=K"; # Should be empty, mostly +my $loader = "=L"; # lilo, silo, quik, palo, vmelilo, or nettrom +my $image_dir = "/boot"; # where the image is located +my $clobber_modules = ''; # target machine defined +my $initrd = "YES"; # initrd kernel +my $use_hard_links = ''; # hardlinks do not wirk across fs boundaries +my $postinst_hook = ''; #Normally we do not +my $postrm_hook = ''; #Normally we do not +my $preinst_hook = ''; #Normally we do not +my $prerm_hook = ''; #Normally we do not +my $minimal_swap = ''; # Do not swap symlinks +my $ignore_depmod_err = ''; # normally we do not +my $relink_build_link = 'YES'; # There is no harm in checking the link +my $force_build_link = ''; # There is no harm in checking the link +my $kernel_arch = "=B"; +my $ramdisk = "/usr/sbin/update-initramfs"; +my $package_name = "linux-image-$version"; + +my $Loader = "NoLOADER"; # +$Loader = "LILO" if $loader =~ /^lilo/io; +$Loader = "SILO" if $loader =~ /^silo/io; +$Loader = "QUIK" if $loader =~ /^quik/io; +$Loader = "yaboot" if $loader =~ /^yaboot/io; +$Loader = "PALO" if $loader =~ /^palo/io; +$Loader = "NETTROM" if $loader =~ /^nettrom/io; +$Loader = "VMELILO" if $loader =~ /^vmelilo/io; +$Loader = "ZIPL" if $loader =~ /^zipl/io; +$Loader = "ELILO" if $loader =~ /^elilo/io; + + +# This should not point to /tmp, because of security risks. +my $temp_file_name = "/var/log/$loader" . "_log.$$"; + +#known variables +my $image_dest = "/"; +my $realimageloc = "/$image_dir/"; +my $have_conffile = ""; +my $CONF_LOC = '/etc/kernel-img.conf'; +my $relative_links = ''; +my $silent_loader = ''; +my $warn_reboot = 'Yes'; # Warn that we are installing a version of + # the kernel we are running + +# remove multiple leading slashes; make sure there is at least one. +$realimageloc =~ s|^/*|/|o; +$realimageloc =~ s|/+|/|o; + +my $DEBUG = 0; + +# Variables used +my $image=''; +my $ret=0; +my $seen=''; +my $answer=''; +my $running = ''; +my $WouldInvalidate = 0; + +if ($ARGV[0] && ($ARGV[0] =~ /remove/ || $ARGV[0] =~ /upgrade/)) { + if (-l "/usr/doc/linux-image-$version") { + unlink "/usr/doc/linux-image-$version"; + } +} + +# Ignore all invocations uxcept when called on to remove +exit 0 unless ($ARGV[0] && $ARGV[0] =~ /remove/) ; + +# Paranoid check to make sure that the correct value is put in there +if (! $kimage) { $kimage = "vmlinuz";} # Hmm. empty +elsif ($kimage =~ m/^b?uImage$/o) { $kimage = "vmlinuz";} # these produce vmlinuz +elsif ($kimage =~ m/^b?zImage$/o) { $kimage = "vmlinuz";} # these produce vmlinuz +elsif ($kimage =~ m/^[iI]mage$/o) { my $nop = $kimage; } +elsif ($kimage =~ m/^vmlinux$/o) { my $nop = $kimage; } +else { $kimage = "vmlinuz";} # Default + +if (-r "$CONF_LOC" && -f "$CONF_LOC" ) { + if (open(CONF, "$CONF_LOC")) { + while () { + chomp; + s/\#.*$//g; + next if /^\s*$/; + + $do_symlink = "" if /^\s*do_symlinks\s*=\s*(no|false|0)\s*$/ig; + $no_symlink = "" if /^\s*no_symlinks\s*=\s*(no|false|0)\s*$/ig; + $reverse_symlink = "" if /^\s*reverse_symlinks\s*=\s*(no|false|0)\s*$/ig; + $link_in_boot = "" if /^\s*image_in_boot\s*=\s*(no|false|0)\s*$/ig; + $link_in_boot = "" if /^\s*link_in_boot\s*=\s*(no|false|0)\s*$/ig; + $move_image = "" if /^\s*move_image\s*=\s*(no|false|0)\s*$/ig; + $clobber_modules = '' if /^\s*clobber_modules\s*=\s*(no|false|0)\s*$/ig; + $do_boot_enable = '' if /^\s*do_boot_enable\s*=\s*(no|false|0)\s*$/ig; + $do_bootfloppy = '' if /^\s*do_bootfloppy\s*=\s*(no|false|0)\s*$/ig; + $relative_links = '' if /^\s*relative_links \s*=\s*(no|false|0)\s*$/ig; + $do_bootloader = '' if /^\s*do_bootloader\s*=\s*(no|false|0)\s*$/ig; + $do_initrd = '' if /^\s*do_initrd\s*=\s*(no|false|0)\s*$/ig; + $use_hard_links = '' if /^\s*use_hard_links\s*=\s*(no|false|0)\s*$/ig; + $silent_loader = '' if /^\s*silent_loader\s*=\s*(no|false|0)\s*$/ig; + $warn_reboot = '' if /^\s*warn_reboot\s*=\s*(no|false|0)\s*$/ig; + $minimal_swap = '' if /^\s*minimal_swap\s*=\s*(no|false|0)\s*$/ig; + $ignore_depmod_err = '' if /^\s*ignore_depmod_err\s*=\s*(no|false|0)\s*$/ig; + $relink_build_link = '' if /^\s*relink_build_link\s*=\s*(no|false|0)\s*$/ig; + $force_build_link = '' if /^\s*force_build_link\s*=\s*(no|false|0)\s*$/ig; + + + $do_symlink = "Yes" if /^\s*do_symlinks\s*=\s*(yes|true|1)\s*$/ig; + $no_symlink = "Yes" if /^\s*no_symlinks\s*=\s*(yes|true|1)\s*$/ig; + $reverse_symlink = "Yes" if /^\s*reverse_symlinks\s*=\s*(yes|true|1)\s*$/ig; + $link_in_boot = "Yes" if /^\s*image_in_boot\s*=\s*(yes|true|1)\s*$/ig; + $link_in_boot = "Yes" if /^\s*link_in_boot\s*=\s*(yes|true|1)\s*$/ig; + $move_image = "Yes" if /^\s*move_image\s*=\s*(yes|true|1)\s*$/ig; + $clobber_modules = "Yes" if /^\s*clobber_modules\s*=\s*(yes|true|1)\s*$/ig; + $do_boot_enable = "Yes" if /^\s*do_boot_enable\s*=\s*(yes|true|1)\s*$/ig; + $do_bootfloppy = "Yes" if /^\s*do_bootfloppy\s*=\s*(yes|true|1)\s*$/ig; + $do_bootloader = "Yes" if /^\s*do_bootloader\s*=\s*(yes|true|1)\s*$/ig; + $relative_links = "Yes" if /^\s*relative_links\s*=\s*(yes|true|1)\s*$/ig; + $do_initrd = "Yes" if /^\s*do_initrd\s*=\s*(yes|true|1)\s*$/ig; + $use_hard_links = "Yes" if /^\s*use_hard_links\s*=\s*(yes|true|1)\s*$/ig; + $silent_loader = 'Yes' if /^\s*silent_loader\s*=\s*(yes|true|1)\s*$/ig; + $warn_reboot = 'Yes' if /^\s*warn_reboot\s*=\s*(yes|true|1)\s*$/ig; + $minimal_swap = 'Yes' if /^\s*minimal_swap\s*=\s*(yes|true|1)\s*$/ig; + $ignore_depmod_err = 'Yes' if /^\s*ignore_depmod_err\s*=\s*(yes|true|1)\s*$/ig; + $relink_build_link = 'Yes' if /^\s*relink_build_link\s*=\s*(yes|true|1)\s*$/ig; + $force_build_link = 'Yes' if /^\s*force_build_link\s*=\s*(yes|true|1)\s*$/ig; + + $image_dest = "$1" if /^\s*image_dest\s*=\s*(\S+)/ig; + $postinst_hook = "$1" if /^\s*postinst_hook\s*=\s*(\S+)/ig; + $postrm_hook = "$1" if /^\s*postrm_hook\s*=\s*(\S+)/ig; + $preinst_hook = "$1" if /^\s*preinst_hook\s*=\s*(\S+)/ig; + $prerm_hook = "$1" if /^\s*prerm_hook\s*=\s*(\S+)/ig; + $ramdisk = "$1" if /^\s*ramdisk\s*=\s*(.+)$/ig; + } + close CONF; + $have_conffile = "Yes"; + } +} + + +$ENV{KERNEL_ARCH}=$kernel_arch if $kernel_arch; + +#check to see if we are trying to remove a running kernel +# if so we abort right now. +chop($running=`uname -r`); +if ($running eq $version) { + print STDERR "WARN: Proceeding with removing running kernel image.\n"; +} + +#Now, they have an alternate kernel which they are currently running + +# This is just us being nice to lilo users. + +chdir("/") or die "could not chdir to /:$!\n"; + +if (-f "/etc/$loader.conf") { #I know, could be a link, but .. + open (LILO, "/etc/$loader.conf") || &success(); # this is not critical + while () { + chop; + s/\#.*//; # nix the comments + next unless /^\s*image\s*=\s(\S+)/o; + $image = $1; + if ($image && -e $image) { + while (defined($image) && -l $image) { + $image = readlink ($image); + } + if (defined($image) && -e $image) { + $WouldInvalidate |= $image =~ /$kimage-$version/; + } + else { + &success(); # invalid $loader.conf file + } + } + else { + &success(); # invalid $loader.conf file + } + } + close (LILO); + if ($WouldInvalidate) { + print STFERR "WARN: Proceeding with removing running kernel image.\n"; + &success(); + } +} + + +# set the env var stem +$ENV{'STEM'} = "linux"; + +sub exec_script { + my $type = shift; + my $script = shift; + print STDERR "Running $type hook script $script.\n"; + system ("$script $version $realimageloc$kimage-$version") && + print STDERR "User $type hook script [$script] "; + if ($?) { + if ($? == -1) { + print STDERR "failed to execute: $!\n"; + } + elsif ($? & 127) { + printf STDERR "died with signal %d, %s coredump\n", + ($? & 127), ($? & 128) ? 'with' : 'without'; + } + else { + printf STDERR "exited with value %d\n", $? >> 8; + } + exit $? >> 8; + } +} +sub run_hook { + my $type = shift; + my $script = shift; + if ($script =~ m,^/,) { + # Full path provided for the hook script + if (-x "$script") { + &exec_script($type,$script); + } + else { + die "The provided $type hook script [$script] could not be run.\n"; + } + } + else { + # Look for it in a safe path + for my $path ('/bin', '/sbin', '/usr/bin', '/usr/sbin') { + if (-x "$path/$script") { + &exec_script($type, "$path/$script"); + return 0; + } + } + # No luck + print STDERR "Could not find $type hook script [$script].\n"; + die "Looked in: '/bin', '/sbin', '/usr/bin', '/usr/sbin'\n"; + } +} + + +my $options; +for (@ARGV) { + s,','\\'',g; + $options .= " '$_'"; +} +$ENV{'DEB_MAINT_PARAMS'}="$options"; + +## Run user hook script here, if any +if (-x "$prerm_hook") { + &run_hook("prerm", $prerm_hook); +} +if (-d "/etc/kernel/prerm.d") { + print STDERR "Examining /etc/kernel/prerm.d.\n"; + system ("run-parts --verbose --exit-on-error --arg=$version " . + "--arg=$realimageloc$kimage-$version /etc/kernel/prerm.d") && + die "Failed to process /etc/kernel/prerm.d"; +} +if (-d "/etc/kernel/prerm.d/$version") { + print STDERR "Examining /etc/kernel/prerm.d/$version.\n"; + system ("run-parts --verbose --exit-on-error --arg=$version" . + " --arg=$realimageloc$kimage-$version " . + "/etc/kernel/prerm.d/$version") && + die "Failed to process /etc/kernel/prerm.d/$version"; +} + +sub success () { + # NOTE: need to keep this list in sync with rules.d/2-binary-arch.mk + my %files_to_keep = ( + 'modules.builtin' => 1, + 'modules.order' => 1, + ); + my $short; + for my $file () { + $short = $file; $short =~ s,.*/,,; + if (!defined $files_to_keep{$short}) { + unlink "$file"; + } + } + exit 0; +} + + + +&success(); +exit 0; +__END__ + + + + + --- linux-raspi2-4.2.0.orig/debian/control.stub +++ linux-raspi2-4.2.0/debian/control.stub @@ -0,0 +1 @@ +# placebo control.stub for kernel-wedge flow change --- linux-raspi2-4.2.0.orig/debian/copyright +++ linux-raspi2-4.2.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-raspi2-4.2.0.orig/debian/debian.env +++ linux-raspi2-4.2.0/debian/debian.env @@ -0,0 +1 @@ +DEBIAN=debian.raspi2 --- linux-raspi2-4.2.0.orig/debian/docs/README.inclusion-list +++ linux-raspi2-4.2.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-raspi2-4.2.0.orig/debian/gbp.conf +++ linux-raspi2-4.2.0/debian/gbp.conf @@ -0,0 +1,2 @@ +[buildpackage] +debian-tag = Ubuntu-%(version)s --- linux-raspi2-4.2.0.orig/debian/linux-cloud-tools-common.hv-fcopy-daemon.service +++ linux-raspi2-4.2.0/debian/linux-cloud-tools-common.hv-fcopy-daemon.service @@ -0,0 +1,12 @@ +# On Azure/Hyper-V systems start the hv_fcopy_daemon +# +# author "Andy Whitcroft " +[Unit] +Description=Hyper-V File Copy Protocol Daemon +ConditionVirtualization=microsoft + +[Service] +ExecStart=/usr/sbin/hv_fcopy_daemon -n + +[Install] +WantedBy=multi-user.target --- linux-raspi2-4.2.0.orig/debian/linux-cloud-tools-common.hv-fcopy-daemon.upstart +++ linux-raspi2-4.2.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 + +[Service] +ExecStart=/usr/sbin/hv_kvp_daemon -n + +[Install] +WantedBy=multi-user.target --- linux-raspi2-4.2.0.orig/debian/linux-cloud-tools-common.hv-kvp-daemon.upstart +++ linux-raspi2-4.2.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 + +[Service] +ExecStart=/usr/sbin/hv_vss_daemon -n + +[Install] +WantedBy=multi-user.target --- linux-raspi2-4.2.0.orig/debian/linux-cloud-tools-common.hv-vss-daemon.upstart +++ linux-raspi2-4.2.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 }' $$new; \ + done + flavours="$(sort $(wildcard $(DEBIAN)/control.d/vars.* $(DEBIAN)/sub-flavours/*.vars))";\ + for i in $$flavours; do \ + $(SHELL) $(DROOT)/scripts/control-create $$i | \ + sed -e 's/PKGVER/$(release)/g' \ + -e 's/ABINUM/$(abinum)/g' \ + -e 's/SRCPKGNAME/$(src_pkg_name)/g' \ + -e 's/=HUMAN=/$(human_arch)/g' \ + >> $(DEBIAN)/control.stub; \ + done + +.PHONY: debian/control +debian/control: $(DEBIAN)/control.stub + rm -rf $(builddir)/modules $(builddir)/firmware \ + $(builddir)/kernel-versions $(builddir)/package-list \ + $(builddir)/$(DEBIAN) + mkdir -p $(builddir)/modules/$(arch)/ + cp $(DEBIAN)/d-i/modules/* $(builddir)/modules/$(arch)/ + mkdir -p $(builddir)/firmware/$(arch)/ + cp $(DEBIAN)/d-i/firmware/* $(builddir)/firmware/$(arch)/ + cp $(DEBIAN)/d-i/package-list $(DEBIAN)/d-i/kernel-versions $(builddir)/ + touch $(builddir)/modules/$(arch)/kernel-image + # kernel-wedge needs to poke around in $(DEBIAN)/ + ln -nsf $(CURDIR)/debian $(builddir)/debian + + # Some files may need to differ between architectures + if [ -d $(DEBIAN)/d-i/modules-$(arch) ]; then \ + cp $(DEBIAN)/d-i/modules-$(arch)/* \ + $(builddir)/modules/$(arch)/; \ + fi + if [ -d $(DEBIAN)/d-i/firmware-$(arch) ]; then \ + cp $(DEBIAN)/d-i/firmware-$(arch)/* \ + $(builddir)/firmware/$(arch)/; \ + fi + + # Remove unwanted stuff for this architecture + if [ -r "$(DEBIAN)/d-i/exclude-modules.$(arch)" ]; then \ + (cat $(DEBIAN)/d-i/exclude-modules.$(arch); \ + ls $(builddir)/modules/$(arch)/) | sort | uniq -d | \ + (cd $(builddir)/modules/$(arch)/; xargs rm -f); \ + fi + if [ -r "$(DEBIAN)/d-i/exclude-firmware.$(arch)" ]; then \ + (cat $(DEBIAN)/d-i/exclude-firmware.$(arch); \ + ls $(builddir)/firmware/$(arch)/) | sort | uniq -d | \ + (cd $(builddir)/firmware/$(arch)/; xargs rm -f); \ + fi + + # Per flavour module lists + flavour_modules=`ls $(DEBIAN)/d-i/modules.$(arch)-* 2>/dev/null` \ + || true; \ + if [ "$$flavour_modules" != "" ]; then \ + for flav in $$flavour_modules; do \ + name=`echo $$flav | sed 's/.*\/modules.$(arch)-//'`; \ + mkdir $(builddir)/modules/$(arch)-$$name; \ + (cd $(builddir)/modules/; tar cf - `cat ../$$flav`) | \ + (cd $(builddir)/modules/$(arch)-$$name/; tar xf -); \ + touch $(builddir)/modules/$(arch)-$$name/kernel-image; \ + done; \ + fi + flavour_firmware=`ls $(DEBIAN)/d-i/firmware.$(arch)-* 2>/dev/null` \ + || true; \ + if [ "$$flavour_firmware" != "" ]; then \ + for flav in $$flavour_firmware; do \ + name=`echo $$flav | sed 's/.*\/firmware.$(arch)-//'`; \ + mkdir $(builddir)/firmware/$(arch)-$$name; \ + (cd $(builddir)/firmware/; tar cf - `cat ../$$flav`) | \ + (cd $(builddir)/firmware/$(arch)-$$name/; tar xf -);\ + touch $(builddir)/firmware/$(arch)-$$name/kernel-image; \ + done; \ + fi + + # Some files may need to differ between flavours + flavour_module_dirs=`ls -d $(DEBIAN)/d-i/modules-$(arch)-* 2>/dev/null`\ + || true; \ + if [ "$$flavour_module_dirs" ]; then \ + for flav in $$flavour_module_dirs; do \ + name=`echo $$flav | sed 's/.*\/modules-$(arch)-//'`; \ + [ -d $(builddir)/modules/$(arch)-$$name ] || \ + cp -a $(builddir)/modules/$(arch) \ + modules/$(arch)-$$name; \ + cp $$flav/* $(builddir)/modules/$(arch)-$$name/; \ + done; \ + fi + flavour_firmware_dirs=`ls -d $(DEBIAN)/d-i/firmware-$(arch)-* 2>/dev/null`\ + || true; \ + if [ "$$flavour_firmware_dirs" ]; then \ + for flav in $$flavour_firmware_dirs; do \ + name=`echo $$flav | sed 's/.*\/firmware-$(arch)-//'`; \ + [ -d $(builddir)/firmware/$(arch)-$$name ] || \ + cp -a $(builddir)/firmware/$(arch) \ + firmware/$(arch)-$$name; \ + cp $$flav/* $(builddir)/firmware/$(arch)-$$name/; \ + done; \ + fi + + # Remove unwanted stuff for each flavour + flavour_exclude=`ls $(DEBIAN)/d-i/exclude-modules.$(arch)-* 2>/dev/null`\ + || true; \ + if [ "$$flavour_exclude" ]; then \ + for flav in $$flavour_exclude; do \ + name=`echo $$flav | sed 's/.*\/exclude-modules.$(arch)-//'`;\ + [ -d $(builddir)/modules/$(arch)-$$name ] || \ + cp -a $(builddir)/modules/$(arch) \ + $(builddir)/modules/$(arch)-$$name; \ + (cat $$flav; \ + ls $(builddir)/modules/$(arch)-$$name) | \ + sort | uniq -d | \ + (cd $(builddir)/modules/$(arch)-$$name/; \ + xargs rm -f); \ + done; \ + fi + flavour_exclude=`ls $(DEBIAN)/d-i/exclude-firmware.$(arch)-* 2>/dev/null`\ + || true; \ + if [ "$$flavour_exclude" ]; then \ + for flav in $$flavour_exclude; do \ + name=`echo $$flav | sed 's/.*\/exclude-firmware.$(arch)-//'`;\ + [ -d $(builddir)/firmware/$(arch)-$$name ] || \ + cp -a $(builddir)/firmware/$(arch) \ + $(builddir)/firmware/$(arch)-$$name; \ + (cat $$flav; \ + ls $(builddir)/firmware/$(arch)-$$name) | \ + sort | uniq -d | \ + (cd $(builddir)/firmware/$(arch)-$$name/; \ + xargs rm -f); \ + done; \ + fi + + if [ ! -d $(builddir)/modules/$(build_arch) ]; then \ + mkdir -p $(builddir)/modules/$(build_arch); \ + cp $(builddir)/modules/$(arch)/* \ + $(builddir)/modules/$(build_arch); \ + fi + if [ ! -d $(builddir)/firmware/$(build_arch) ]; then \ + mkdir -p $(builddir)/firmware/$(build_arch); \ + cp $(builddir)/firmware/$(arch)/* \ + $(builddir)/firmware/$(build_arch); \ + fi + + echo "# placebo control.stub for kernel-wedge flow change" >debian/control.stub + cp $(DEBIAN)/control.stub debian/control + cd $(builddir) && LANG=C kernel-wedge gen-control >> $(CURDIR)/debian/control --- linux-raspi2-4.2.0.orig/debian/rules.d/0-common-vars.mk +++ linux-raspi2-4.2.0/debian/rules.d/0-common-vars.mk @@ -0,0 +1,243 @@ +# +# The source package name will be the first token from $(DEBIAN)/changelog +# +src_pkg_name=$(shell sed -n '1s/^\(.*\) (.*).*$$/\1/p' $(DEBIAN)/changelog) + +# 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)) +ifneq ($(prev_revisions),) +prev_revision := $(word $(words $(prev_revisions)),$(prev_revisions)) +endif + +prev_fullver ?= $(shell dpkg-parsechangelog -l$(DEBIAN)/changelog -o1 -c1 | sed -ne 's/^Version: *//p') + +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 +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=linux-image-$(abi_release) +extra_pkg_name=linux-image-extra-$(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. +do_doc_package=true +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. +do_libc_dev_package=true + +# 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) + +# 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) + +# 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)" +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) --- linux-raspi2-4.2.0.orig/debian/rules.d/1-maintainer.mk +++ linux-raspi2-4.2.0/debian/rules.d/1-maintainer.mk @@ -0,0 +1,127 @@ +# 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 + +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 " 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 $@ + 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 "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 "gitver = $(gitver)" + @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 "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_x86 = $(do_tools_x86)" + @echo "do_cloud_tools = $(do_cloud_tools)" + @echo " do_tools_hyperv = $(do_tools_hyperv)" + @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 }'); \ + git log "$$baseCommit"..HEAD | \ + perl -w -f $(DROOT)/scripts/misc/git-ubuntu-log $(ubuntu_log_opts) + +insertchanges: + @perl -w -f $(DROOT)/scripts/misc/insert-changes.pl $(DROOT) $(DEBIAN) + +diffupstream: + @git diff-tree -p refs/remotes/linux-2.6/master..HEAD $(shell ls | grep -vE '^(ubuntu|$(DEBIAN)|\.git.*)') + +startnewrelease: + dh_testdir + @nextminor=$(shell expr `echo $(revision) | gawk -F. '{print $$2}'` + 1); \ + nextmajor=$(shell expr `echo $(revision) | awk -F. '{print $$1}'` + 1); \ + now="$(shell date -R)"; \ + echo "Creating new changelog set for $(release)-$$nextmajor.$$nextminor..."; \ + echo -e "$(src_pkg_name) ($(release)-$$nextmajor.$$nextminor) UNRELEASED; urgency=low\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 + --- linux-raspi2-4.2.0.orig/debian/rules.d/2-binary-arch.mk +++ linux-raspi2-4.2.0/debian/rules.d/2-binary-arch.mk @@ -0,0 +1,675 @@ +# 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 + +$(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.% + @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 $^ | 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 silentoldconfig 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 $@ + +# Install the finished build +install-%: pkgdir = $(CURDIR)/debian/$(bin_pkg_name)-$* +install-%: pkgdir_ex = $(CURDIR)/debian/$(extra_pkg_name)-$* +install-%: bindoc = $(pkgdir)/usr/share/doc/$(bin_pkg_name)-$* +install-%: dbgpkgdir = $(CURDIR)/debian/$(bin_pkg_name)-$*-dbgsym +install-%: signed = $(CURDIR)/debian/$(bin_pkg_name)-signed +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-%: CONFIG_MODULE_SIG_HASH=sha512 +install-%: MODSECKEY=$(builddir)/build-$*/signing_key.priv +install-%: MODPUBKEY=$(builddir)/build-$*/signing_key.x509 +install-%: checks-% + @echo Debug: $@ kernel_file $(kernel_file) kernfile $(kernfile) install_file $(install_file) instfile $(instfile) + dh_testdir + dh_testroot + dh_clean -k -p$(bin_pkg_name)-$* + dh_clean -k -p$(hdrs_pkg_name)-$* +ifneq ($(skipdbg),true) + dh_clean -k -p$(dbg_pkg_name)-$* +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)/boot/$(instfile)-$(abi_release)-$* +else + install -d $(pkgdir)/boot + gzip -c9v $(builddir)/build-$*/$(kernfile) > \ + $(pkgdir)/boot/$(instfile)-$(abi_release)-$* + chmod 600 $(pkgdir)/boot/$(instfile)-$(abi_release)-$* +endif + +ifeq ($(uefi_signed),true) + install -d $(signed)/$(release)-$(revision) + # Check to see if this supports handoff, if not do not sign it. + # Check the identification area magic and version >= 0x020b + handoff=`dd if="$(pkgdir)/boot/$(instfile)-$(abi_release)-$*" bs=1 skip=514 count=6 2>/dev/null | od -s | gawk '($$1 == 0 && $$2 == 25672 && $$3 == 21362 && $$4 >= 523) { print "GOOD" }'`; \ + if [ "$$handoff" = "GOOD" ]; then \ + cp -p $(pkgdir)/boot/$(instfile)-$(abi_release)-$* \ + $(signed)/$(release)-$(revision)/$(instfile)-$(abi_release)-$*.efi; \ + fi +endif + + install -m644 $(builddir)/build-$*/.config \ + $(pkgdir)/boot/config-$(abi_release)-$* + install -m644 $(abidir)/$* \ + $(pkgdir)/boot/abi-$(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/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/ | \ + 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 \ + 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 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 + + # Now the image scripts + install -d $(pkgdir)/DEBIAN + for script in postinst postrm preinst prerm; do \ + sed -e 's/=V/$(abi_release)-$*/g' -e 's/=K/$(instfile)/g' \ + -e 's/=L/$(loader)/g' -e 's@=B@$(build_arch)@g' \ + $(DROOT)/control-scripts/$$script > $(pkgdir)/DEBIAN/$$script; \ + chmod 755 $(pkgdir)/DEBIAN/$$script; \ + done +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)/DEBIAN; \ + for script in postinst postrm ; do \ + sed -e 's/=V/$(abi_release)-$*/g' -e 's/=K/$(instfile)/g' \ + -e 's/=L/$(loader)/g' -e 's@=B@$(build_arch)@g' \ + debian/control-scripts/extra-post > $(pkgdir_ex)/DEBIAN/$$script; \ + chmod 755 $(pkgdir_ex)/DEBIAN/$$script; \ + done; \ + 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)-$*; \ + install -d debian/$(bin_pkg_name)-$$sub/DEBIAN; \ + for script in postinst postrm preinst prerm; do \ + sed -e 's/=V/$(abi_release)-$*/g' \ + -e 's/=K/$(instfile)/g' \ + -e 's/=L/$(loader)/g' \ + -e 's@=B@$(build_arch)@g' \ + $(DROOT)/control-scripts/$$script > \ + debian/$(bin_pkg_name)-$$sub/DEBIAN/$$script;\ + chmod 755 debian/$(bin_pkg_name)-$$sub/DEBIAN/$$script;\ + done; \ + 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 to each stripped .ko + # pointing to unstripped verson + find $(pkgdir) -name '*.ko' | sed 's|$(pkgdir)||'| while read module ; do \ + if [[ -f "$(dbgpkgdir)/usr/lib/debug/$$module" ]] ; then \ + $(CROSS_COMPILE)objcopy \ + --add-gnu-debuglink=$(dbgpkgdir)/usr/lib/debug/$$module \ + $(pkgdir)/$$module; \ + if [[ -f "$(MODSECKEY)" ]] ; then \ + scripts/sign-file $(CONFIG_MODULE_SIG_HASH) $(MODSECKEY) $(MODPUBKEY) \ + $(pkgdir)/$$module; \ + fi \ + fi; \ + done + 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 silentoldconfig prepare scripts + # We'll symlink this stuff + rm -f $(hdrdir)/Makefile + rm -rf $(hdrdir)/include2 $(hdrdir)/source + # 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 + # 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 + install -d $(CURDIR)/debian/$(basepkg)-$*/DEBIAN + for script in postinst; do \ + sed -e 's/=V/$(abi_release)-$*/g' -e 's/=K/$(instfile)/g' \ + $(DROOT)/control-scripts/headers-$$script > \ + $(CURDIR)/debian/$(basepkg)-$*/DEBIAN/$$script; \ + chmod 755 $(CURDIR)/debian/$(basepkg)-$*/DEBIAN/$$script; \ + done + + # 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 + 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_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)-$* +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)-$* +endif +endif + +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 + dh_clean -k -plinux-libc-dev + + 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) silentoldconfig + $(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) + +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 + dh_installchangelogs -plinux-libc-dev + dh_installdocs -plinux-libc-dev + dh_compress -plinux-libc-dev + dh_fixperms -plinux-libc-dev + dh_installdeb -plinux-libc-dev + $(lockme) dh_gencontrol -plinux-libc-dev -- $(libc_dev_version) + dh_md5sums -plinux-libc-dev + dh_builddeb -plinux-libc-dev +endif + +binary-%: pkgimg = $(bin_pkg_name)-$* +binary-%: pkgimg_ex = $(extra_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-%: target_flavour = $* +binary-%: install-% + @echo Debug: $@ + dh_testdir + dh_testroot + + dh_installchangelogs -p$(pkgimg) + dh_installdocs -p$(pkgimg) + dh_compress -p$(pkgimg) + dh_fixperms -p$(pkgimg) -X/boot/ + dh_installdeb -p$(pkgimg) + dh_shlibdeps -p$(pkgimg) + $(lockme) dh_gencontrol -p$(pkgimg) + dh_md5sums -p$(pkgimg) + dh_builddeb -p$(pkgimg) -- -Zbzip2 -z9 + +ifeq ($(do_extras_package),true) + if [ -f $(DEBIAN)/control.d/$(target_flavour).inclusion-list ] ; then \ + dh_installchangelogs -p$(pkgimg_ex); \ + dh_installdocs -p$(pkgimg_ex); \ + dh_compress -p$(pkgimg_ex); \ + dh_fixperms -p$(pkgimg_ex) -X/boot/; \ + dh_installdeb -p$(pkgimg_ex); \ + dh_shlibdeps -p$(pkgimg_ex); \ + $(lockme) dh_gencontrol -p$(pkgimg_ex); \ + dh_md5sums -p$(pkgimg_ex); \ + dh_builddeb -p$(pkgimg_ex) -- -Zbzip2 -z9; \ + fi +endif + + dh_installchangelogs -p$(pkghdr) + dh_installdocs -p$(pkghdr) + dh_compress -p$(pkghdr) + dh_fixperms -p$(pkghdr) + dh_shlibdeps -p$(pkghdr) + dh_installdeb -p$(pkghdr) + $(lockme) dh_gencontrol -p$(pkghdr) + dh_md5sums -p$(pkghdr) + dh_builddeb -p$(pkghdr) + +ifneq ($(skipsub),true) + @set -e; for sub in $($(*)_sub); do \ + pkg=$(bin_pkg_name)-$$sub; \ + dh_installchangelogs -p$$pkg; \ + dh_installdocs -p$$pkg; \ + dh_compress -p$$pkg; \ + dh_fixperms -p$$pkg -X/boot/; \ + dh_shlibdeps -p$$pkg; \ + dh_installdeb -p$$pkg; \ + $(lockme) dh_gencontrol -p$$pkg; \ + dh_md5sums -p$$pkg; \ + dh_builddeb -p$$pkg; \ + done +endif + +ifneq ($(skipdbg),true) + dh_installchangelogs -p$(dbgpkg) + dh_installdocs -p$(dbgpkg) + dh_compress -p$(dbgpkg) + dh_fixperms -p$(dbgpkg) + dh_installdeb -p$(dbgpkg) + $(lockme) dh_gencontrol -p$(dbgpkg) + dh_md5sums -p$(dbgpkg) + dh_builddeb -p$(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) + dh_installchangelogs -p$(pkgtools) + dh_installdocs -p$(pkgtools) + dh_compress -p$(pkgtools) + dh_fixperms -p$(pkgtools) + dh_shlibdeps -p$(pkgtools) + dh_installdeb -p$(pkgtools) + $(lockme) dh_gencontrol -p$(pkgtools) + dh_md5sums -p$(pkgtools) + dh_builddeb -p$(pkgtools) +endif +ifeq ($(do_cloud_tools),true) + dh_installchangelogs -p$(pkgcloud) + dh_installdocs -p$(pkgcloud) + dh_compress -p$(pkgcloud) + dh_fixperms -p$(pkgcloud) + dh_shlibdeps -p$(pkgcloud) + dh_installdeb -p$(pkgcloud) + $(lockme) dh_gencontrol -p$(pkgcloud) + dh_md5sums -p$(pkgcloud) + dh_builddeb -p$(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) + for i in *; do $(LN) $(CURDIR)/$$i $(builddirpa); done + rm $(builddirpa)/tools + rsync -a tools/ $(builddirpa)/tools/ +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_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) \ + LIB_MIN=$(abi_release) CPUFREQ_BENCH=false +endif +ifeq ($(do_tools_perf),true) + cd $(builddirpa)/tools/perf && \ + make prefix=/usr HAVE_CPLUS_DEMANGLE=1 CROSS_COMPILE=$(CROSS_COMPILE) NO_LIBPYTHON=1 NO_LIBPERL=1 PYTHON=python2.7 +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_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) +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) +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) + dh_strip -p$(toolspkg) + dh_installchangelogs -p$(toolspkg) + dh_installdocs -p$(toolspkg) + dh_compress -p$(toolspkg) + dh_fixperms -p$(toolspkg) + dh_shlibdeps -p$(toolspkg) + dh_installdeb -p$(toolspkg) + $(lockme) dh_gencontrol -p$(toolspkg) + dh_md5sums -p$(toolspkg) + dh_builddeb -p$(toolspkg) +endif +ifeq ($(do_cloud_tools),true) + dh_strip -p$(cloudpkg) + dh_installchangelogs -p$(cloudpkg) + dh_installdocs -p$(cloudpkg) + dh_compress -p$(cloudpkg) + dh_fixperms -p$(cloudpkg) + dh_shlibdeps -p$(cloudpkg) + dh_installdeb -p$(cloudpkg) + $(lockme) dh_gencontrol -p$(cloudpkg) + dh_md5sums -p$(cloudpkg) + dh_builddeb -p$(cloudpkg) +endif + +binary-debs: signed = $(CURDIR)/debian/$(bin_pkg_name)-signed +binary-debs: signedv = $(CURDIR)/debian/$(bin_pkg_name)-signed/$(release)-$(revision) +binary-debs: signed_tar = $(src_pkg_name)_$(release)-$(revision)_$(arch).tar.gz +binary-debs: binary-perarch $(addprefix binary-,$(flavours)) + @echo Debug: $@ +ifeq ($(uefi_signed),true) + echo $(release)-$(revision) > $(signedv)/version + cd $(signedv) && ls *.efi >flavours + cd $(signed) && tar czvf ../../../$(signed_tar) . + dpkg-distaddfile $(signed_tar) raw-uefi - +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-raspi2-4.2.0.orig/debian/rules.d/3-binary-indep.mk +++ linux-raspi2-4.2.0/debian/rules.d/3-binary-indep.mk @@ -0,0 +1,176 @@ +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: + @echo Debug: $@ + dh_testdir + dh_testroot + dh_prep + +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: install-headers + @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/DocBook/ \ + $(docdir)/html/; \ + rm -rf $(docdir)/$(doc_pkg_name)-tmp; \ + fi +endif + # Copy the rest + cp -a Documentation/* $(docdir) + rm -rf $(docdir)/DocBook + find $(docdir) -name .gitignore | xargs rm -f +endif + +srcpkg = $(src_pkg_name)-source-$(release) +srcdir = $(CURDIR)/debian/$(srcpkg)/usr/src/$(srcpkg) +balldir = $(CURDIR)/debian/$(srcpkg)/usr/src/$(srcpkg)/$(srcpkg) +install-source: install-doc + @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: 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: install-source $(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 $(toolsman)/man1 + + 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 $(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 -d $(toolsman)/man8 + install -m644 $(CURDIR)/tools/power/x86/x86_energy_perf_policy/*.8 $(toolsman)/man8 + install -m644 $(CURDIR)/tools/power/x86/turbostat/*.8 $(toolsman)/man8 + + 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/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 + +install-indep: install-tools + @echo Debug: $@ + +# This is just to make it easy to call manually. Normally done in +# binary-indep target during builds. +binary-headers: 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) + 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_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 + dh_installdeb -i + $(lockme) dh_gencontrol -i + dh_md5sums -i + dh_builddeb -i --- linux-raspi2-4.2.0.orig/debian/rules.d/4-checks.mk +++ linux-raspi2-4.2.0/debian/rules.d/4-checks.mk @@ -0,0 +1,27 @@ +# Check ABI for package against last release (if not same abinum) +abi-check-%: $(stampdir)/stamp-build-% + @echo Debug: $@ + install -d $(abidir) + sed -e 's/^\(.\+\)[[:space:]]\+\(.\+\)[[:space:]]\(.\+\)$$/\3 \2 \1/' \ + $(builddir)/build-$*/Module.symvers | sort > $(abidir)/$* + @perl -f $(DROOT)/scripts/abi-check "$*" "$(prev_abinum)" "$(abinum)" \ + "$(prev_abidir)" "$(abidir)" "$(skipabi)" + +# Check the module list against the last release (always) +module-check-%: $(stampdir)/stamp-build-% + @echo Debug: $@ + install -d $(abidir) + find $(builddir)/build-$*/ -name \*.ko | \ + sed -e 's/.*\/\([^\/]*\)\.ko/\1/' | sort > $(abidir)/$*.modules + @perl -f $(DROOT)/scripts/module-check "$*" \ + "$(prev_abidir)" "$(abidir)" $(skipmodule) + +checks-%: module-check-% abi-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)" + --- linux-raspi2-4.2.0.orig/debian/rules.d/5-udebs.mk +++ linux-raspi2-4.2.0/debian/rules.d/5-udebs.mk @@ -0,0 +1,74 @@ +# 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: debian/control + @echo Debug: $@ + dh_testdir + dh_testroot + + # unpack the kernels into a temporary directory + mkdir -p debian/d-i-${arch} + + imagelist=$$(cat $(builddir)/kernel-versions | grep ^${arch} | gawk '{print $$4}') && \ + for i in $$imagelist; do \ + dpkg -x $$(ls ../linux-image-$$i\_$(release)-$(revision)_${arch}.deb) \ + debian/d-i-${arch}; \ + if [ -f ../linux-image-extra-$$i\_$(release)-$(revision)_${arch}.deb ] ; then \ + dpkg -x ../linux-image-extra-$$i\_$(release)-$(revision)_${arch}.deb \ + debian/d-i-${arch}; \ + fi; \ + /sbin/depmod -b debian/d-i-${arch} $$i; \ + done + + # kernel-wedge will error if no modules unless this is touched + touch $(CURDIR)/debian/build/no-modules + + touch ignore-dups + export SOURCEDIR=$(CURDIR)/debian/d-i-${arch} && \ + cd $(builddir) && \ + kernel-wedge install-files && \ + 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-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-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-raspi2-4.2.0.orig/debian/scripts/abi-check +++ linux-raspi2-4.2.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-raspi2-4.2.0.orig/debian/scripts/config-check +++ linux-raspi2-4.2.0/debian/scripts/config-check @@ -0,0 +1,98 @@ +#!/usr/bin/perl +# +# check-config -- check the current config for issues +# +use strict; + +my $P = 'check-config'; + +my $test = -1; +if ($ARGV[0] eq '--test') { + $test = $ARGV[1] + 0; +} elsif ($#ARGV != 4) { + die "Usage: $P \n"; +} + +my ($config, $arch, $flavour, $commonconfig, $warn_only) = @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; + +# Load up the current configuration values -- FATAL if this fails +print "$P: $config: loading config\n"; +open(CONFIG, "<$config") || die "$P: $config: 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); + +# ANNOTATIONS: check any annotations marked for enforcement +my $pass = 0; +my $total = 0; +my $annotations = "$commonconfig/annotations"; +my ($config, $value, $options, $option, $value, $check, $policy); +print "$P: $annotations loading annotations\n"; +open(ANNOTATIONS, "<$annotations") || die "$P: $annotations: open failed -- $! -- aborting\n"; +while () { + /^#/ && next; + chomp; + /^$/ && next; + + $check = 0; + ($config, $value, $options) = split(' ', $_, 3); + $policy = { '*' => $value }; + 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); + } else { + $policy = undef; + } + } + } + if ($check == 1 && $policy == undef) { + print "$P: INVALID $_\n"; + $total++; + } + if ($check) { + 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): $_\n"; + $exit_val = $fail_exit; + } + $total++; + } +} +close(ANNOTATIONS); + +print "$P: $pass/$total checks passed -- exit $exit_val\n"; +exit $exit_val; --- linux-raspi2-4.2.0.orig/debian/scripts/control-create +++ linux-raspi2-4.2.0/debian/scripts/control-create @@ -0,0 +1,25 @@ +#!/bin/bash + +. debian/debian.env + +vars=$1 + +. $vars + +if [ "$is_sub" = "" ]; then + flavour=$(basename $vars | sed 's/.*\.//') + stub=${DEBIAN}/control.d/flavour-control.stub +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" --- linux-raspi2-4.2.0.orig/debian/scripts/link-headers +++ linux-raspi2-4.2.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-raspi2-4.2.0.orig/debian/scripts/misc/find-obsolete-firmware +++ linux-raspi2-4.2.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-raspi2-4.2.0.orig/debian/scripts/misc/fw-to-ihex.sh +++ linux-raspi2-4.2.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-raspi2-4.2.0.orig/debian/scripts/misc/get-firmware +++ linux-raspi2-4.2.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-raspi2-4.2.0.orig/debian/scripts/misc/getabis +++ linux-raspi2-4.2.0/debian/scripts/misc/getabis @@ -0,0 +1,130 @@ +#!/bin/bash + +if [ "$#" != "2" ]; then + 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() { + __package_prefixes="$@" +} + +getall() { + arch=$1 + shift + + mkdir -p $abidir/$arch + + for sub in $@; do + if [ -f $abidir/$arch/$sub ]; then + echo "Exists: $sub" + continue + fi + echo -n "Fetching $sub($arch)..." + prefixes="" + filenames="" + cd $tmpdir + for prefix in $__package_prefixes + do + filename=${prefix}-${verabi}-${sub}_${verfull}_${arch}.deb + for r in "${repo_list[@]}" + do + if ! [ -f $filename ]; then + $WGET $r/$filename + fi + if [ -f $filename ]; then + prefixes="$prefixes $prefix" + filenames="$filenames $filename" + break + fi + done + done + if [ "$filenames" != "" ]; then + echo -n "extracting$prefixes..." + for filename in $filenames + do + dpkg-deb --extract $filename tmp + done + 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 -n "NO ABI 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 -n "$version..." + ) + rm -rf tmp $filenames + echo "done." + else + echo "FAILED." + fi + cd $origdir + done +} + +# 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. + +__package_prefixes="linux-image" + +. $DEBIAN/etc/getabis + +compilers=`cat $abidir/*/*.compiler | sort -u | wc -l` +if [ "$compilers" != 1 ]; then + echo "WARNING: inconsistant compiler versions detected" 1>&2 +fi + +sort < $fwinfo | uniq > fwinfo.tmp +mv fwinfo.tmp $fwinfo + +rmdir $tmpdir + +# Add the new ABI directory, remove the old +git add $abidir +find $DEBIAN/abi/* -maxdepth 0 -type d | grep -v $verfull | while read f; do git rm -r $f;done --- linux-raspi2-4.2.0.orig/debian/scripts/misc/git-ubuntu-log +++ linux-raspi2-4.2.0/debian/scripts/misc/git-ubuntu-log @@ -0,0 +1,232 @@ +#!/usr/bin/perl -w + +use strict; +use Text::Wrap; + +my $kernel_auth = "Upstream Kernel Changes"; + +my (%map, @reverts); +my $pstate = 1; +my $no_kern_log = 0; +my $print_shas = 0; +my $first_print = 1; + +while (@ARGV) { + my $opt = $ARGV[0]; + shift; + if ($opt eq "--no-kern-log") { + $no_kern_log = 1; + } elsif ($opt eq "--print-shas") { + $print_shas = 1; + } else { + print STDERR "Unknown options: $opt\n"; + exit(1); + } +} + +sub check_reverts($) { + my ($entry) = @_; + my ($check); + + foreach $check (reverse @reverts) { + my $desc = "Revert \"" . $entry->{'desc'} . "\""; + if ($check->{'desc'} eq $desc) { + @reverts = grep($_->{'desc'} ne $desc, @reverts); + return 1; + } + } + + return 0; +} + +sub add_entry($) { + my ($entry) = @_; + my $key = $entry->{'author'}; + + # store description in array, in email->{desc list} map + if (exists $map{$key}) { + # grab ref + my $obj = $map{$key}; + + # add desc to array + push(@$obj, $entry); + } else { + # create new array, containing 1 item + my @arr = ($entry); + + # store ref to array + $map{$key} = \@arr; + } +} + +sub shortlog_entry($$$$$) { + my ($name, $desc, $bug, $cve, $commit) = @_; + my $entry; + + $desc =~ s#/pub/scm/linux/kernel/git/#/.../#g; + $desc =~ s#\[PATCH\] ##g; + + $desc =~ s#^\s*##g; + $desc =~ s# *UBUNTU: ##g; + + $entry->{'desc'} = $desc; + if ($bug ne '') { + $entry->{'bugno'} = $bug; + } + $entry->{'cve'} = $cve; + $entry->{'commit'} = $commit; + $entry->{'author'} = $name; + + if ($desc =~ /^Revert "/) { + push(@reverts, $entry); + return; + } + + return if check_reverts($entry); + + add_entry($entry); +} + +# sort comparison function +sub by_name($$) { + my ($a, $b) = @_; + + uc($a) cmp uc($b); +} + +sub shortlog_output { + my ($obj, $key, $entry); + + foreach $key (sort by_name keys %map) { + next if $key eq $kernel_auth and $no_kern_log; + + print "\n" unless $first_print; + $first_print = 0; + + # output author + printf " [ %s ]\n\n", $key; + + # output author's 1-line summaries + $obj = $map{$key}; + foreach $entry (reverse @$obj) { + print wrap(" * ", " ", $entry->{'desc'}) . "\n"; + # For non upstream changes, add other info. + if ($key ne $kernel_auth) { + if ($print_shas) { + print " - GIT-SHA " . $entry->{'commit'} . + "\n"; + } + } + if (defined($entry->{'bugno'})) { + print " - LP: #" . $entry->{'bugno'} . "\n"; + } + if (defined($entry->{'cve'})) { + print " - " . $entry->{'cve'} . "\n"; + } + } + } +} + +sub changelog_input { + my ($author, $desc, $commit, $entry, $cve); + + while () { + # get commit + if ($pstate == 1) { + next unless /^commit (.*)/; + + $commit = $1; + + $pstate++; + } + + # get author and email + elsif ($pstate == 2) { + my ($email); + + next unless /^[Aa]uthor:?\s*(.*?)\s*<(.*)>/; + + $author = $1; + $email = $2; + $desc = undef; + $cve = undef; + + # cset author fixups + if (!$author) { + $author = $email; + } + $pstate++; + } + + # skip to blank line + elsif ($pstate == 3) { + next unless /^\s*$/; + $pstate++; + } + + # skip to non-blank line + elsif ($pstate == 4) { + next unless /^\s*?(.*)/; + my $ignore = 0; + my $do_ignore = 0; + my $bug = undef; + my %bugz = (); + my $k; + + # skip lines that are obviously not + # a 1-line cset description + next if /^\s*From: /; + + chomp; + $desc = $1; + + if ($desc =~ /^ *(Revert "|)UBUNTU:/) { + $do_ignore = 1; + } else { + $do_ignore = 0; + $author = $kernel_auth; + $ignore = 1 if $desc =~ /Merge /; + } + while () { + $ignore = 1 if ($do_ignore && /^ *Ignore: yes/i); + if (/^ *Bug: *(#|)([0-9#,\s]*)\s*$/i) { + foreach $k (split('(,|\s)\s*(#|)', $2)) { + $bugz{$k} = 1 if (($k ne '') and ($k =~ /[0-9]+/)); + } + } + elsif (/^ *BugLink: *http.*:\/\/.*\/([0-9]+)/i) { + $bugz{$1} = 1; + } + elsif (/^ *(CVE-.*)/) { + $cve = $1 + } + last if /^commit /; + } + + $bug = join(", #", sort keys(%bugz)); + if (!$ignore) { + &shortlog_entry($author, $desc, $bug, + $cve, $commit, 0); + } + + $pstate = 1; + if ($_ && /^commit (.*)/) { + $commit = $1; + $pstate++; + } + } + + else { + die "invalid parse state $pstate"; + } + } + + foreach $entry (@reverts) { + add_entry($entry); + } +} + +&changelog_input; +&shortlog_output; + +exit(0); --- linux-raspi2-4.2.0.orig/debian/scripts/misc/insert-changes.pl +++ linux-raspi2-4.2.0/debian/scripts/misc/insert-changes.pl @@ -0,0 +1,36 @@ +#!/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; + +while () { + if (/^ CHANGELOG: /) { + next if $printed; + + while () { + print NEW; + } + + $printed = 1; + } else { + print NEW; + } +} + +close(NEW); +close(CHANGES); +close(CHANGELOG); + +rename("$debian/changelog.new", "$debian/changelog"); +unlink("$debian/changes"); --- linux-raspi2-4.2.0.orig/debian/scripts/misc/insert-mainline-changes +++ linux-raspi2-4.2.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-raspi2-4.2.0.orig/debian/scripts/misc/insert-ubuntu-changes +++ linux-raspi2-4.2.0/debian/scripts/misc/insert-ubuntu-changes @@ -0,0 +1,58 @@ +#!/usr/bin/perl + +if ($#ARGV != 2) { + die "Usage: $0 \n"; +} +my ($changelog, $end, $start) = @ARGV; + +$end =~ s/.*\.//; +$start =~ s/.*\.//; + +my @changes = (); +my $output = 0; +open(CHG, ") { + if (/^\S+\s+\((.*\.(\d+))\)/) { + if ($2 <= $end) { + last; + } + if ($2 == $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-raspi2-4.2.0.orig/debian/scripts/misc/kernelconfig +++ linux-raspi2-4.2.0/debian/scripts/misc/kernelconfig @@ -0,0 +1,171 @@ +#!/bin/bash + +. debian/debian.env + +# Script to merge all configs and run 'make silentoldconfig' 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]"} +yes=0 +case "$mode" in + update*configs) mode='silentoldconfig' ;; + 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 + +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" ;; + *) kernarch="$arch" ;; + esac + + 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 + 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 ARCH=$kernarch menuconfig + break ;; + n* | N* ) + 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 ARCH=$kernarch "$mode" + else + make O=`pwd`/build ARCH=$kernarch "$mode" + fi ;; + esac + cat build/.config > $archconfdir/$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" + "$bindir/../config-check" "$fullconf" "$arch" "$flavour" "$confdir" "0" || let "fail=$fail+1" + fi + done +done + +if [ "$fail" != 0 ]; then + echo "" + echo "*** ERROR: $fail config-check failures detected" + echo "" +fi + +rm -rf build + --- linux-raspi2-4.2.0.orig/debian/scripts/misc/retag +++ linux-raspi2-4.2.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-raspi2-4.2.0.orig/debian/scripts/misc/splitconfig.pl +++ linux-raspi2-4.2.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-raspi2-4.2.0.orig/debian/scripts/misc/update-aufs.sh +++ linux-raspi2-4.2.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/aufs4-standalone.git ${AUFS} + (cd ${AUFS}; git checkout -b aufs4.x-rcN remotes/origin/aufs4.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} aufs4-kbuild.patch" +PATCHES="${PATCHES} aufs4-base.patch" +PATCHES="${PATCHES} aufs4-mmap.patch" +PATCHES="${PATCHES} aufs4-standalone.patch" +PATCHES="${PATCHES} aufs4-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-raspi2-4.2.0.orig/debian/scripts/module-check +++ linux-raspi2-4.2.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-raspi2-4.2.0.orig/debian/scripts/module-inclusion +++ linux-raspi2-4.2.0/debian/scripts/module-inclusion @@ -0,0 +1,69 @@ +#!/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 +master=0 +if [ "$1" = "--master" ]; then + master=1 + shift +fi + +ROOT=$1 +NROOT=$2 +ILIST=$3 + +# +# 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}" +# 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 + +exit 0 --- linux-raspi2-4.2.0.orig/debian/scripts/sub-flavour +++ linux-raspi2-4.2.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-raspi2-4.2.0.orig/debian/source/format +++ linux-raspi2-4.2.0/debian/source/format @@ -0,0 +1 @@ +1.0 --- linux-raspi2-4.2.0.orig/debian/source/options +++ linux-raspi2-4.2.0/debian/source/options @@ -0,0 +1,10 @@ +# Ignore vbox symlinks, we will regenerate these at clean (LP:1426113) +extend-diff-ignore=ubuntu/vbox/vboxvideo/include +extend-diff-ignore=ubuntu/vbox/vboxguest/r0drv +extend-diff-ignore=ubuntu/vbox/vboxguest/include +extend-diff-ignore=ubuntu/vbox/vboxsf/r0drv +extend-diff-ignore=ubuntu/vbox/vboxsf/include + +# force "dpkg-source -I -i" behavior +diff-ignore +tar-ignore --- linux-raspi2-4.2.0.orig/debian/stamps/keep-dir +++ linux-raspi2-4.2.0/debian/stamps/keep-dir @@ -0,0 +1 @@ +Place holder --- linux-raspi2-4.2.0.orig/debian/tests-build/README +++ linux-raspi2-4.2.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-raspi2-4.2.0.orig/debian/tests-build/check-aliases +++ linux-raspi2-4.2.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-raspi2-4.2.0.orig/debian/tests/control +++ linux-raspi2-4.2.0/debian/tests/control @@ -0,0 +1,7 @@ +Tests: rebuild +Depends: @builddeps@, fakeroot +Restrictions: allow-stderr + +Tests: ubuntu-regression-suite +Depends: build-essential, gcc-multilib [amd64 arm64 armhf i386 powerpc], gdb, git, bzr +Restrictions: allow-stderr, isolation-machine, breaks-testbed --- linux-raspi2-4.2.0.orig/debian/tests/rebuild +++ linux-raspi2-4.2.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*/*) ;; + *) build_needed=1 ;; + esac +done +if [ "$build_needed" -eq 0 ]; then + echo "rebuild: short circuiting build for '${ADT_TEST_TRIGGERS}'" + exit 0 +fi + +set -e +dpkg-buildpackage -rfakeroot -us -uc -b --- linux-raspi2-4.2.0.orig/debian/tests/ubuntu-regression-suite +++ linux-raspi2-4.2.0/debian/tests/ubuntu-regression-suite @@ -0,0 +1,19 @@ +#!/bin/sh +set -e + +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-raspi2-4.2.0.orig/debian/tools/generic +++ linux-raspi2-4.2.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-raspi2-4.2.0.orig/drivers/acpi/acpi_pnp.c +++ linux-raspi2-4.2.0/drivers/acpi/acpi_pnp.c @@ -153,6 +153,7 @@ {"AEI0250"}, /* PROLiNK 1456VH ISA PnP K56flex Fax Modem */ {"AEI1240"}, /* Actiontec ISA PNP 56K X2 Fax Modem */ {"AKY1021"}, /* Rockwell 56K ACF II Fax+Data+Voice Modem */ + {"ALI5123"}, /* ALi Fast Infrared Controller */ {"AZT4001"}, /* AZT3005 PnP SOUND DEVICE */ {"BDP3336"}, /* Best Data Products Inc. Smart One 336F PnP Modem */ {"BRI0A49"}, /* Boca Complete Ofc Communicator 14.4 Data-FAX */ --- linux-raspi2-4.2.0.orig/drivers/acpi/blacklist.c +++ linux-raspi2-4.2.0/drivers/acpi/blacklist.c @@ -317,6 +317,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-raspi2-4.2.0.orig/drivers/acpi/device_pm.c +++ linux-raspi2-4.2.0/drivers/acpi/device_pm.c @@ -1123,6 +1123,14 @@ if (dev->pm_domain) return -EEXIST; + /* + * Only attach the power domain to the first device if the + * companion is shared by multiple. This is to prevent doing power + * management twice. + */ + if (!acpi_device_is_first_physical_node(adev, dev)) + return -EBUSY; + acpi_add_pm_notifier(adev, dev, acpi_pm_notify_work_func); dev->pm_domain = &acpi_general_pm_domain; if (power_on) { --- linux-raspi2-4.2.0.orig/drivers/acpi/internal.h +++ linux-raspi2-4.2.0/drivers/acpi/internal.h @@ -97,6 +97,8 @@ void acpi_free_pnp_ids(struct acpi_device_pnp *pnp); bool acpi_device_is_present(struct acpi_device *adev); bool acpi_device_is_battery(struct acpi_device *adev); +bool acpi_device_is_first_physical_node(struct acpi_device *adev, + const struct device *dev); /* -------------------------------------------------------------------------- Power Resource --- linux-raspi2-4.2.0.orig/drivers/acpi/osl.c +++ linux-raspi2-4.2.0/drivers/acpi/osl.c @@ -83,6 +83,7 @@ static struct workqueue_struct *kacpid_wq; static struct workqueue_struct *kacpi_notify_wq; static struct workqueue_struct *kacpi_hotplug_wq; +unsigned int acpi_sci_irq = INVALID_ACPI_IRQ; /* * This list of permanent mappings is for memory that may be accessed from @@ -858,17 +859,19 @@ acpi_irq_handler = NULL; return AE_NOT_ACQUIRED; } + acpi_sci_irq = irq; return AE_OK; } -acpi_status acpi_os_remove_interrupt_handler(u32 irq, acpi_osd_handler handler) +acpi_status acpi_os_remove_interrupt_handler(u32 gsi, acpi_osd_handler handler) { - if (irq != acpi_gbl_FADT.sci_interrupt) + if (gsi != acpi_gbl_FADT.sci_interrupt || !acpi_sci_irq_valid()) return AE_BAD_PARAMETER; - free_irq(irq, acpi_irq); + free_irq(acpi_sci_irq, acpi_irq); acpi_irq_handler = NULL; + acpi_sci_irq = INVALID_ACPI_IRQ; return AE_OK; } @@ -1210,8 +1213,8 @@ * Make sure the GPE handler or the fixed event handler is not used * on another CPU after removal. */ - if (acpi_irq_handler) - synchronize_hardirq(acpi_gbl_FADT.sci_interrupt); + if (acpi_sci_irq_valid()) + synchronize_hardirq(acpi_sci_irq); flush_workqueue(kacpid_wq); flush_workqueue(kacpi_notify_wq); } --- linux-raspi2-4.2.0.orig/drivers/acpi/pci_link.c +++ linux-raspi2-4.2.0/drivers/acpi/pci_link.c @@ -826,6 +826,22 @@ } /* + * Penalize IRQ used by ACPI SCI. If ACPI SCI pin attributes conflict with + * PCI IRQ attributes, mark ACPI SCI as ISA_ALWAYS so it won't be use for + * PCI IRQs. + */ +void acpi_penalize_sci_irq(int irq, int trigger, int polarity) +{ + if (irq >= 0 && irq < ARRAY_SIZE(acpi_irq_penalty)) { + if (trigger != ACPI_MADT_TRIGGER_LEVEL || + polarity != ACPI_MADT_POLARITY_ACTIVE_LOW) + acpi_irq_penalty[irq] += PIRQ_PENALTY_ISA_ALWAYS; + else + acpi_irq_penalty[irq] += PIRQ_PENALTY_PCI_USING; + } +} + +/* * Over-ride default table to reserve additional IRQs for use by ISA * e.g. acpi_irq_isa=5 * Useful for telling ACPI how not to interfere with your ISA sound card. --- linux-raspi2-4.2.0.orig/drivers/acpi/scan.c +++ linux-raspi2-4.2.0/drivers/acpi/scan.c @@ -226,6 +226,35 @@ return len; } +/** + * acpi_device_is_first_physical_node - Is given dev first physical node + * @adev: ACPI companion device + * @dev: Physical device to check + * + * Function checks if given @dev is the first physical devices attached to + * the ACPI companion device. This distinction is needed in some cases + * where the same companion device is shared between many physical devices. + * + * Note that the caller have to provide valid @adev pointer. + */ +bool acpi_device_is_first_physical_node(struct acpi_device *adev, + const struct device *dev) +{ + bool ret = false; + + mutex_lock(&adev->physical_node_lock); + if (!list_empty(&adev->physical_node_list)) { + const struct acpi_device_physical_node *node; + + node = list_first_entry(&adev->physical_node_list, + struct acpi_device_physical_node, node); + ret = node->dev == dev; + } + mutex_unlock(&adev->physical_node_lock); + + return ret; +} + /* * acpi_companion_match() - Can we match via ACPI companion device * @dev: Device in question @@ -250,7 +279,6 @@ static struct acpi_device *acpi_companion_match(const struct device *dev) { struct acpi_device *adev; - struct mutex *physical_node_lock; adev = ACPI_COMPANION(dev); if (!adev) @@ -259,21 +287,7 @@ if (list_empty(&adev->pnp.ids)) return NULL; - physical_node_lock = &adev->physical_node_lock; - mutex_lock(physical_node_lock); - if (list_empty(&adev->physical_node_list)) { - adev = NULL; - } else { - const struct acpi_device_physical_node *node; - - node = list_first_entry(&adev->physical_node_list, - struct acpi_device_physical_node, node); - if (node->dev != dev) - adev = NULL; - } - mutex_unlock(physical_node_lock); - - return adev; + return acpi_device_is_first_physical_node(adev, dev) ? adev : NULL; } static int __acpi_device_uevent_modalias(struct acpi_device *adev, --- linux-raspi2-4.2.0.orig/drivers/acpi/sleep.c +++ linux-raspi2-4.2.0/drivers/acpi/sleep.c @@ -632,14 +632,16 @@ acpi_enable_wakeup_devices(ACPI_STATE_S0); acpi_enable_all_wakeup_gpes(); acpi_os_wait_events_complete(); - enable_irq_wake(acpi_gbl_FADT.sci_interrupt); + if (acpi_sci_irq_valid()) + enable_irq_wake(acpi_sci_irq); return 0; } static void acpi_freeze_restore(void) { acpi_disable_wakeup_devices(ACPI_STATE_S0); - disable_irq_wake(acpi_gbl_FADT.sci_interrupt); + if (acpi_sci_irq_valid()) + disable_irq_wake(acpi_sci_irq); acpi_enable_all_runtime_gpes(); } --- linux-raspi2-4.2.0.orig/drivers/acpi/tables.c +++ linux-raspi2-4.2.0/drivers/acpi/tables.c @@ -430,3 +430,13 @@ } early_param("acpi_force_table_verification", acpi_force_table_verification_setup); + +static int __init acpi_force_32bit_fadt_addr(char *s) +{ + pr_info("Forcing 32 Bit FADT addresses\n"); + acpi_gbl_use32_bit_fadt_addresses = TRUE; + + return 0; +} + +early_param("acpi_force_32bit_fadt_addr", acpi_force_32bit_fadt_addr); --- linux-raspi2-4.2.0.orig/drivers/ata/ahci.c +++ linux-raspi2-4.2.0/drivers/ata/ahci.c @@ -351,6 +351,7 @@ /* JMicron 362B and 362C have an AHCI function with IDE class code */ { PCI_VDEVICE(JMICRON, 0x2362), board_ahci_ign_iferr }, { PCI_VDEVICE(JMICRON, 0x236f), board_ahci_ign_iferr }, + /* May need to update quirk_jmicron_async_suspend() for additions */ /* ATI */ { PCI_VDEVICE(ATI, 0x4380), board_ahci_sb600 }, /* ATI SB600 */ @@ -1451,18 +1452,6 @@ else if (pdev->vendor == 0x177d && pdev->device == 0xa01c) ahci_pci_bar = AHCI_PCI_BAR_CAVIUM; - /* - * The JMicron chip 361/363 contains one SATA controller and one - * PATA controller,for powering on these both controllers, we must - * follow the sequence one by one, otherwise one of them can not be - * powered on successfully, so here we disable the async suspend - * method for these chips. - */ - if (pdev->vendor == PCI_VENDOR_ID_JMICRON && - (pdev->device == PCI_DEVICE_ID_JMICRON_JMB363 || - pdev->device == PCI_DEVICE_ID_JMICRON_JMB361)) - device_disable_async_suspend(&pdev->dev); - /* acquire resources */ rc = pcim_enable_device(pdev); if (rc) --- linux-raspi2-4.2.0.orig/drivers/ata/pata_jmicron.c +++ linux-raspi2-4.2.0/drivers/ata/pata_jmicron.c @@ -143,18 +143,6 @@ }; const struct ata_port_info *ppi[] = { &info, NULL }; - /* - * The JMicron chip 361/363 contains one SATA controller and one - * PATA controller,for powering on these both controllers, we must - * follow the sequence one by one, otherwise one of them can not be - * powered on successfully, so here we disable the async suspend - * method for these chips. - */ - if (pdev->vendor == PCI_VENDOR_ID_JMICRON && - (pdev->device == PCI_DEVICE_ID_JMICRON_JMB363 || - pdev->device == PCI_DEVICE_ID_JMICRON_JMB361)) - device_disable_async_suspend(&pdev->dev); - return ata_pci_bmdma_init_one(pdev, ppi, &jmicron_sht, NULL, 0); } --- linux-raspi2-4.2.0.orig/drivers/auxdisplay/ks0108.c +++ linux-raspi2-4.2.0/drivers/auxdisplay/ks0108.c @@ -139,6 +139,7 @@ ks0108_pardevice = parport_register_device(ks0108_parport, KS0108_NAME, NULL, NULL, NULL, PARPORT_DEV_EXCL, NULL); + parport_put_port(ks0108_parport); if (ks0108_pardevice == NULL) { printk(KERN_ERR KS0108_NAME ": ERROR: " "parport didn't register new device\n"); --- linux-raspi2-4.2.0.orig/drivers/base/cacheinfo.c +++ linux-raspi2-4.2.0/drivers/base/cacheinfo.c @@ -148,7 +148,11 @@ if (sibling == cpu) /* skip itself */ continue; + sib_cpu_ci = get_cpu_cacheinfo(sibling); + if (!sib_cpu_ci->info_list) + continue; + sib_leaf = sib_cpu_ci->info_list + index; cpumask_clear_cpu(cpu, &sib_leaf->shared_cpu_map); cpumask_clear_cpu(sibling, &this_leaf->shared_cpu_map); @@ -159,6 +163,9 @@ static void free_cache_attributes(unsigned int cpu) { + if (!per_cpu_cacheinfo(cpu)) + return; + cache_shared_cpu_map_remove(cpu); kfree(per_cpu_cacheinfo(cpu)); @@ -514,8 +521,7 @@ break; case CPU_DEAD: cache_remove_dev(cpu); - if (per_cpu_cacheinfo(cpu)) - free_cache_attributes(cpu); + free_cache_attributes(cpu); break; } return notifier_from_errno(rc); --- linux-raspi2-4.2.0.orig/drivers/base/core.c +++ linux-raspi2-4.2.0/drivers/base/core.c @@ -1252,6 +1252,19 @@ } EXPORT_SYMBOL_GPL(device_unregister); +static struct device *prev_device(struct klist_iter *i) +{ + struct klist_node *n = klist_prev(i); + struct device *dev = NULL; + struct device_private *p; + + if (n) { + p = to_device_private_parent(n); + dev = p->device; + } + return dev; +} + static struct device *next_device(struct klist_iter *i) { struct klist_node *n = klist_next(i); @@ -1341,6 +1354,36 @@ EXPORT_SYMBOL_GPL(device_for_each_child); /** + * device_for_each_child_reverse - device child iterator in reversed order. + * @parent: parent struct device. + * @fn: function to be called for each device. + * @data: data for the callback. + * + * Iterate over @parent's child devices, and call @fn for each, + * passing it @data. + * + * We check the return of @fn each time. If it returns anything + * other than 0, we break out and return that value. + */ +int device_for_each_child_reverse(struct device *parent, void *data, + int (*fn)(struct device *dev, void *data)) +{ + struct klist_iter i; + struct device *child; + int error = 0; + + if (!parent->p) + return 0; + + klist_iter_init(&parent->p->klist_children, &i); + while ((child = prev_device(&i)) && !error) + error = fn(child, data); + klist_iter_exit(&i); + return error; +} +EXPORT_SYMBOL_GPL(device_for_each_child_reverse); + +/** * device_find_child - device iterator for locating a particular device. * @parent: parent struct device * @match: Callback function to check device --- linux-raspi2-4.2.0.orig/drivers/base/dd.c +++ linux-raspi2-4.2.0/drivers/base/dd.c @@ -399,6 +399,8 @@ * * This function must be called with @dev lock held. When called for a * USB interface, @dev->parent lock must be held as well. + * + * If the device has a parent, runtime-resume the parent before driver probing. */ int driver_probe_device(struct device_driver *drv, struct device *dev) { @@ -410,10 +412,16 @@ pr_debug("bus: '%s': %s: matched device %s with driver %s\n", drv->bus->name, __func__, dev_name(dev), drv->name); + if (dev->parent) + pm_runtime_get_sync(dev->parent); + pm_runtime_barrier(dev); ret = really_probe(dev, drv); pm_request_idle(dev); + if (dev->parent) + pm_runtime_put(dev->parent); + return ret; } @@ -507,11 +515,17 @@ device_lock(dev); + if (dev->parent) + pm_runtime_get_sync(dev->parent); + bus_for_each_drv(dev->bus, NULL, &data, __device_attach_driver); dev_dbg(dev, "async probe completed\n"); pm_request_idle(dev); + if (dev->parent) + pm_runtime_put(dev->parent); + device_unlock(dev); put_device(dev); @@ -541,6 +555,9 @@ .want_async = false, }; + if (dev->parent) + pm_runtime_get_sync(dev->parent); + ret = bus_for_each_drv(dev->bus, NULL, &data, __device_attach_driver); if (!ret && allow_async && data.have_async) { @@ -557,6 +574,9 @@ } else { pm_request_idle(dev); } + + if (dev->parent) + pm_runtime_put(dev->parent); } out_unlock: device_unlock(dev); --- linux-raspi2-4.2.0.orig/drivers/base/devres.c +++ linux-raspi2-4.2.0/drivers/base/devres.c @@ -297,10 +297,10 @@ if (!dr) { add_dr(dev, &new_dr->node); dr = new_dr; - new_dr = NULL; + new_res = NULL; } spin_unlock_irqrestore(&dev->devres_lock, flags); - devres_free(new_dr); + devres_free(new_res); return dr->data; } --- linux-raspi2-4.2.0.orig/drivers/base/node.c +++ linux-raspi2-4.2.0/drivers/base/node.c @@ -392,6 +392,16 @@ for (pfn = sect_start_pfn; pfn <= sect_end_pfn; pfn++) { int page_nid; + /* + * memory block could have several absent sections from start. + * skip pfn range from absent section + */ + if (!pfn_present(pfn)) { + pfn = round_down(pfn + PAGES_PER_SECTION, + PAGES_PER_SECTION) - 1; + continue; + } + page_nid = get_nid_for_pfn(pfn); if (page_nid < 0) continue; --- linux-raspi2-4.2.0.orig/drivers/base/platform.c +++ linux-raspi2-4.2.0/drivers/base/platform.c @@ -375,9 +375,7 @@ while (--i >= 0) { struct resource *r = &pdev->resource[i]; - unsigned long type = resource_type(r); - - if (type == IORESOURCE_MEM || type == IORESOURCE_IO) + if (r->parent) release_resource(r); } @@ -408,9 +406,7 @@ for (i = 0; i < pdev->num_resources; i++) { struct resource *r = &pdev->resource[i]; - unsigned long type = resource_type(r); - - if (type == IORESOURCE_MEM || type == IORESOURCE_IO) + if (r->parent) release_resource(r); } } --- linux-raspi2-4.2.0.orig/drivers/base/power/clock_ops.c +++ linux-raspi2-4.2.0/drivers/base/power/clock_ops.c @@ -38,7 +38,7 @@ * @dev: The device for the given clock * @ce: PM clock entry corresponding to the clock. */ -static inline int __pm_clk_enable(struct device *dev, struct pm_clock_entry *ce) +static inline void __pm_clk_enable(struct device *dev, struct pm_clock_entry *ce) { int ret; @@ -50,8 +50,6 @@ dev_err(dev, "%s: failed to enable clk %p, error %d\n", __func__, ce->clk, ret); } - - return ret; } /** --- linux-raspi2-4.2.0.orig/drivers/base/power/power.h +++ linux-raspi2-4.2.0/drivers/base/power/power.h @@ -73,6 +73,8 @@ extern void pm_qos_sysfs_remove_resume_latency(struct device *dev); extern int pm_qos_sysfs_add_flags(struct device *dev); extern void pm_qos_sysfs_remove_flags(struct device *dev); +extern int pm_qos_sysfs_add_latency_tolerance(struct device *dev); +extern void pm_qos_sysfs_remove_latency_tolerance(struct device *dev); #else /* CONFIG_PM */ --- linux-raspi2-4.2.0.orig/drivers/base/power/qos.c +++ linux-raspi2-4.2.0/drivers/base/power/qos.c @@ -883,3 +883,40 @@ mutex_unlock(&dev_pm_qos_mtx); return ret; } + +/** + * dev_pm_qos_expose_latency_tolerance - Expose latency tolerance to userspace + * @dev: Device whose latency tolerance to expose + */ +int dev_pm_qos_expose_latency_tolerance(struct device *dev) +{ + int ret; + + if (!dev->power.set_latency_tolerance) + return -EINVAL; + + mutex_lock(&dev_pm_qos_sysfs_mtx); + ret = pm_qos_sysfs_add_latency_tolerance(dev); + mutex_unlock(&dev_pm_qos_sysfs_mtx); + + return ret; +} +EXPORT_SYMBOL_GPL(dev_pm_qos_expose_latency_tolerance); + +/** + * dev_pm_qos_hide_latency_tolerance - Hide latency tolerance from userspace + * @dev: Device whose latency tolerance to hide + */ +void dev_pm_qos_hide_latency_tolerance(struct device *dev) +{ + mutex_lock(&dev_pm_qos_sysfs_mtx); + pm_qos_sysfs_remove_latency_tolerance(dev); + mutex_unlock(&dev_pm_qos_sysfs_mtx); + + /* Remove the request from user space now */ + pm_runtime_get_sync(dev); + dev_pm_qos_update_user_latency_tolerance(dev, + PM_QOS_LATENCY_TOLERANCE_NO_CONSTRAINT); + pm_runtime_put(dev); +} +EXPORT_SYMBOL_GPL(dev_pm_qos_hide_latency_tolerance); --- linux-raspi2-4.2.0.orig/drivers/base/power/sysfs.c +++ linux-raspi2-4.2.0/drivers/base/power/sysfs.c @@ -738,6 +738,17 @@ sysfs_unmerge_group(&dev->kobj, &pm_qos_flags_attr_group); } +int pm_qos_sysfs_add_latency_tolerance(struct device *dev) +{ + return sysfs_merge_group(&dev->kobj, + &pm_qos_latency_tolerance_attr_group); +} + +void pm_qos_sysfs_remove_latency_tolerance(struct device *dev) +{ + sysfs_unmerge_group(&dev->kobj, &pm_qos_latency_tolerance_attr_group); +} + void rpm_sysfs_remove(struct device *dev) { sysfs_unmerge_group(&dev->kobj, &pm_runtime_attr_group); --- linux-raspi2-4.2.0.orig/drivers/base/property.c +++ linux-raspi2-4.2.0/drivers/base/property.c @@ -27,9 +27,10 @@ */ void device_add_property_set(struct device *dev, struct property_set *pset) { - if (pset) - pset->fwnode.type = FWNODE_PDATA; + if (!pset) + return; + pset->fwnode.type = FWNODE_PDATA; set_secondary_fwnode(dev, &pset->fwnode); } EXPORT_SYMBOL_GPL(device_add_property_set); --- linux-raspi2-4.2.0.orig/drivers/base/regmap/regmap-debugfs.c +++ linux-raspi2-4.2.0/drivers/base/regmap/regmap-debugfs.c @@ -32,8 +32,7 @@ /* Calculate the length of a fixed format */ static size_t regmap_calc_reg_len(int max_val, char *buf, size_t buf_size) { - snprintf(buf, buf_size, "%x", max_val); - return strlen(buf); + return snprintf(NULL, 0, "%x", max_val); } static ssize_t regmap_name_read_file(struct file *file, @@ -432,7 +431,7 @@ /* If we're in the region the user is trying to read */ if (p >= *ppos) { /* ...but not beyond it */ - if (buf_pos >= count - 1 - tot_len) + if (buf_pos + tot_len + 1 >= count) break; /* Format the register */ --- linux-raspi2-4.2.0.orig/drivers/block/loop.c +++ linux-raspi2-4.2.0/drivers/block/loop.c @@ -417,7 +417,7 @@ } struct switch_request { - struct file *file; + struct file *file, *virt_file; struct completion wait; }; @@ -437,6 +437,7 @@ mapping = file->f_mapping; mapping_set_gfp_mask(old_file->f_mapping, lo->old_gfp_mask); lo->lo_backing_file = file; + lo->lo_backing_virt_file = p->virt_file; lo->lo_blocksize = S_ISBLK(mapping->host->i_mode) ? mapping->host->i_bdev->bd_block_size : PAGE_SIZE; lo->old_gfp_mask = mapping_gfp_mask(mapping); @@ -448,11 +449,13 @@ * First it needs to flush existing IO, it does this by sending a magic * BIO down the pipe. The completion of this BIO does the actual switch. */ -static int loop_switch(struct loop_device *lo, struct file *file) +static int loop_switch(struct loop_device *lo, struct file *file, + struct file *virt_file) { struct switch_request w; w.file = file; + w.virt_file = virt_file; /* freeze queue and wait for completion of scheduled requests */ blk_mq_freeze_queue(lo->lo_queue); @@ -471,7 +474,16 @@ */ static int loop_flush(struct loop_device *lo) { - return loop_switch(lo, NULL); + return loop_switch(lo, NULL, NULL); +} + +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, @@ -508,6 +520,7 @@ unsigned int arg) { struct file *file, *old_file; + struct file *f, *virt_file = NULL, *old_virt_file; struct inode *inode; int error; @@ -524,9 +537,16 @@ file = fget(arg); if (!file) goto out; + f = loop_real_file(file); + if (f) { + virt_file = file; + file = f; + get_file(file); + } inode = file->f_mapping->host; old_file = lo->lo_backing_file; + old_virt_file = lo->lo_backing_virt_file; error = -EINVAL; @@ -538,17 +558,21 @@ goto out_putf; /* and ... switch */ - error = loop_switch(lo, file); + error = loop_switch(lo, file, virt_file); if (error) goto out_putf; fput(old_file); + if (old_virt_file) + fput(old_virt_file); if (lo->lo_flags & LO_FLAGS_PARTSCAN) loop_reread_partitions(lo, bdev); return 0; out_putf: fput(file); + if (virt_file) + fput(virt_file); out: return error; } @@ -560,6 +584,24 @@ return i && S_ISBLK(i->i_mode) && MAJOR(i->i_rdev) == LOOP_MAJOR; } +/* + * 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(loop_backing_file); + /* loop sysfs attributes */ static ssize_t loop_attr_show(struct device *dev, char *page, @@ -691,7 +733,7 @@ static int loop_set_fd(struct loop_device *lo, fmode_t mode, struct block_device *bdev, unsigned int arg) { - struct file *file, *f; + struct file *file, *f, *virt_file = NULL; struct inode *inode; struct address_space *mapping; unsigned lo_blocksize; @@ -706,6 +748,12 @@ file = fget(arg); if (!file) goto out; + f = loop_real_file(file); + if (f) { + virt_file = file; + file = f; + get_file(file); + } error = -EBUSY; if (lo->lo_state != Lo_unbound) @@ -760,6 +808,7 @@ lo->lo_device = bdev; lo->lo_flags = lo_flags; lo->lo_backing_file = file; + lo->lo_backing_virt_file = virt_file; lo->transfer = NULL; lo->ioctl = NULL; lo->lo_sizelimit = 0; @@ -791,6 +840,8 @@ out_putf: fput(file); + if (virt_file) + fput(virt_file); out: /* This is safe: open() is still holding a reference. */ module_put(THIS_MODULE); @@ -837,6 +888,7 @@ static int loop_clr_fd(struct loop_device *lo) { struct file *filp = lo->lo_backing_file; + struct file *virt_filp = lo->lo_backing_virt_file; gfp_t gfp = lo->old_gfp_mask; struct block_device *bdev = lo->lo_device; @@ -868,6 +920,7 @@ spin_lock_irq(&lo->lo_lock); lo->lo_state = Lo_rundown; lo->lo_backing_file = NULL; + lo->lo_backing_virt_file = NULL; spin_unlock_irq(&lo->lo_lock); loop_release_xfer(lo); @@ -913,6 +966,8 @@ * bd_mutex which is usually taken before lo_ctl_mutex. */ fput(filp); + if (virt_filp) + fput(virt_filp); return 0; } --- linux-raspi2-4.2.0.orig/drivers/block/loop.h +++ linux-raspi2-4.2.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; unsigned lo_blocksize; void *key_data; --- linux-raspi2-4.2.0.orig/drivers/block/nbd.c +++ linux-raspi2-4.2.0/drivers/block/nbd.c @@ -65,7 +65,7 @@ static unsigned int nbds_max = 16; static struct nbd_device *nbd_dev; -static int max_part; +static int max_part = 15; /* * Use just one lock (or at most 1 per NIC). Two arguments for this: --- linux-raspi2-4.2.0.orig/drivers/block/nvme-core.c +++ linux-raspi2-4.2.0/drivers/block/nvme-core.c @@ -597,6 +597,7 @@ struct nvme_iod *iod = ctx; struct request *req = iod_get_private(iod); struct nvme_cmd_info *cmd_rq = blk_mq_rq_to_pdu(req); + bool requeue = false; u16 status = le16_to_cpup(&cqe->status) >> 1; @@ -605,12 +606,13 @@ && (jiffies - req->start_time) < req->timeout) { unsigned long flags; + requeue = true; blk_mq_requeue_request(req); spin_lock_irqsave(req->q->queue_lock, flags); if (!blk_queue_stopped(req->q)) blk_mq_kick_requeue_list(req->q); spin_unlock_irqrestore(req->q->queue_lock, flags); - return; + goto release_iod; } if (req->cmd_type == REQ_TYPE_DRV_PRIV) { if (cmd_rq->ctx == CMD_CTX_CANCELLED) @@ -631,7 +633,7 @@ dev_warn(nvmeq->dev->dev, "completing aborted command with status:%04x\n", status); - + release_iod: if (iod->nents) { dma_unmap_sg(nvmeq->dev->dev, iod->sg, iod->nents, rq_data_dir(req) ? DMA_TO_DEVICE : DMA_FROM_DEVICE); @@ -644,7 +646,8 @@ } nvme_free_iod(nvmeq->dev, iod); - blk_mq_complete_request(req); + if (likely(!requeue)) + blk_mq_complete_request(req); } /* length is in bytes. gfp flags indicates whether we may sleep. */ @@ -1764,7 +1767,7 @@ length = (io.nblocks + 1) << ns->lba_shift; meta_len = (io.nblocks + 1) * ns->ms; - metadata = (void __user *)(unsigned long)io.metadata; + metadata = (void __user *)(uintptr_t)io.metadata; write = io.opcode & 1; if (ns->ext) { @@ -1804,7 +1807,7 @@ c.rw.metadata = cpu_to_le64(meta_dma); status = __nvme_submit_sync_cmd(ns->queue, &c, NULL, - (void __user *)io.addr, length, NULL, 0); + (void __user *)(uintptr_t)io.addr, length, NULL, 0); unmap: if (meta) { if (status == NVME_SC_SUCCESS && !write) { @@ -1846,7 +1849,7 @@ timeout = msecs_to_jiffies(cmd.timeout_ms); status = __nvme_submit_sync_cmd(ns ? ns->queue : dev->admin_q, &c, - NULL, (void __user *)cmd.addr, cmd.data_len, + NULL, (void __user *)(uintptr_t)cmd.addr, cmd.data_len, &cmd.result, timeout); if (status >= 0) { if (put_user(cmd.result, &ucmd->result)) --- linux-raspi2-4.2.0.orig/drivers/block/rbd.c +++ linux-raspi2-4.2.0/drivers/block/rbd.c @@ -96,6 +96,8 @@ #define RBD_MINORS_PER_MAJOR 256 #define RBD_SINGLE_MAJOR_PART_SHIFT 4 +#define RBD_MAX_PARENT_CHAIN_LEN 16 + #define RBD_SNAP_DEV_NAME_PREFIX "snap_" #define RBD_MAX_SNAP_NAME_LEN \ (NAME_MAX - (sizeof (RBD_SNAP_DEV_NAME_PREFIX) - 1)) @@ -426,7 +428,7 @@ size_t count); static ssize_t rbd_remove_single_major(struct bus_type *bus, const char *buf, size_t count); -static int rbd_dev_image_probe(struct rbd_device *rbd_dev, bool mapping); +static int rbd_dev_image_probe(struct rbd_device *rbd_dev, int depth); static void rbd_spec_put(struct rbd_spec *spec); static int rbd_dev_id_to_minor(int dev_id) @@ -3437,6 +3439,7 @@ goto err_rq; } img_request->rq = rq; + snapc = NULL; /* img_request consumes a ref */ if (op_type == OBJ_OP_DISCARD) result = rbd_img_request_fill(img_request, OBJ_REQUEST_NODATA, @@ -3819,6 +3822,9 @@ q->limits.discard_zeroes_data = 1; blk_queue_merge_bvec(q, rbd_merge_bvec); + if (!ceph_test_opt(rbd_dev->rbd_client->client, NOCRC)) + q->backing_dev_info.capabilities |= BDI_CAP_STABLE_WRITES; + disk->queue = q; q->queuedata = rbd_dev; @@ -5169,45 +5175,51 @@ return ret; } -static int rbd_dev_probe_parent(struct rbd_device *rbd_dev) +/* + * @depth is rbd_dev_image_probe() -> rbd_dev_probe_parent() -> + * rbd_dev_image_probe() recursion depth, which means it's also the + * length of the already discovered part of the parent chain. + */ +static int rbd_dev_probe_parent(struct rbd_device *rbd_dev, int depth) { struct rbd_device *parent = NULL; - struct rbd_spec *parent_spec; - struct rbd_client *rbdc; int ret; if (!rbd_dev->parent_spec) return 0; - /* - * We need to pass a reference to the client and the parent - * spec when creating the parent rbd_dev. Images related by - * parent/child relationships always share both. - */ - parent_spec = rbd_spec_get(rbd_dev->parent_spec); - rbdc = __rbd_get_client(rbd_dev->rbd_client); - ret = -ENOMEM; - parent = rbd_dev_create(rbdc, parent_spec, NULL); - if (!parent) + if (++depth > RBD_MAX_PARENT_CHAIN_LEN) { + pr_info("parent chain is too long (%d)\n", depth); + ret = -EINVAL; goto out_err; + } - ret = rbd_dev_image_probe(parent, false); + parent = rbd_dev_create(rbd_dev->rbd_client, rbd_dev->parent_spec, + NULL); + if (!parent) { + ret = -ENOMEM; + goto out_err; + } + + /* + * Images related by parent/child relationships always share + * rbd_client and spec/parent_spec, so bump their refcounts. + */ + __rbd_get_client(rbd_dev->rbd_client); + rbd_spec_get(rbd_dev->parent_spec); + + ret = rbd_dev_image_probe(parent, depth); if (ret < 0) goto out_err; + rbd_dev->parent = parent; atomic_set(&rbd_dev->parent_ref, 1); - return 0; + out_err: - if (parent) { - rbd_dev_unparent(rbd_dev); - kfree(rbd_dev->header_name); + rbd_dev_unparent(rbd_dev); + if (parent) rbd_dev_destroy(parent); - } else { - rbd_put_client(rbdc); - rbd_spec_put(parent_spec); - } - return ret; } @@ -5325,7 +5337,7 @@ * parent), initiate a watch on its header object before using that * object to get detailed information about the rbd image. */ -static int rbd_dev_image_probe(struct rbd_device *rbd_dev, bool mapping) +static int rbd_dev_image_probe(struct rbd_device *rbd_dev, int depth) { int ret; @@ -5343,7 +5355,7 @@ if (ret) goto err_out_format; - if (mapping) { + if (!depth) { ret = rbd_dev_header_watch_sync(rbd_dev); if (ret) { if (ret == -ENOENT) @@ -5364,7 +5376,7 @@ * Otherwise this is a parent image, identified by pool, image * and snap ids - need to fill in names for those ids. */ - if (mapping) + if (!depth) ret = rbd_spec_fill_snap_id(rbd_dev); else ret = rbd_spec_fill_names(rbd_dev); @@ -5386,12 +5398,12 @@ * Need to warn users if this image is the one being * mapped and has a parent. */ - if (mapping && rbd_dev->parent_spec) + if (!depth && rbd_dev->parent_spec) rbd_warn(rbd_dev, "WARNING: kernel layering is EXPERIMENTAL!"); } - ret = rbd_dev_probe_parent(rbd_dev); + ret = rbd_dev_probe_parent(rbd_dev, depth); if (ret) goto err_out_probe; @@ -5402,7 +5414,7 @@ err_out_probe: rbd_dev_unprobe(rbd_dev); err_out_watch: - if (mapping) + if (!depth) rbd_dev_header_unwatch_sync(rbd_dev); out_header_name: kfree(rbd_dev->header_name); @@ -5465,7 +5477,7 @@ spec = NULL; /* rbd_dev now owns this */ rbd_opts = NULL; /* rbd_dev now owns this */ - rc = rbd_dev_image_probe(rbd_dev, true); + rc = rbd_dev_image_probe(rbd_dev, 0); if (rc < 0) goto err_out_rbd_dev; --- linux-raspi2-4.2.0.orig/drivers/block/xen-blkback/blkback.c +++ linux-raspi2-4.2.0/drivers/block/xen-blkback/blkback.c @@ -950,6 +950,8 @@ goto unmap; for (n = 0, i = 0; n < nseg; n++) { + uint8_t first_sect, last_sect; + if ((n % SEGS_PER_INDIRECT_FRAME) == 0) { /* Map indirect segments */ if (segments) @@ -958,14 +960,14 @@ } i = n % SEGS_PER_INDIRECT_FRAME; pending_req->segments[n]->gref = segments[i].gref; - seg[n].nsec = segments[i].last_sect - - segments[i].first_sect + 1; - seg[n].offset = (segments[i].first_sect << 9); - if ((segments[i].last_sect >= (PAGE_SIZE >> 9)) || - (segments[i].last_sect < segments[i].first_sect)) { + first_sect = READ_ONCE(segments[i].first_sect); + last_sect = READ_ONCE(segments[i].last_sect); + if (last_sect >= (PAGE_SIZE >> 9) || last_sect < first_sect) { rc = -EINVAL; goto unmap; } + seg[n].nsec = last_sect - first_sect + 1; + seg[n].offset = first_sect << 9; preq->nr_sects += seg[n].nsec; } --- linux-raspi2-4.2.0.orig/drivers/block/xen-blkback/common.h +++ linux-raspi2-4.2.0/drivers/block/xen-blkback/common.h @@ -399,8 +399,8 @@ struct blkif_x86_32_request *src) { int i, n = BLKIF_MAX_SEGMENTS_PER_REQUEST, j; - dst->operation = src->operation; - switch (src->operation) { + dst->operation = READ_ONCE(src->operation); + switch (dst->operation) { case BLKIF_OP_READ: case BLKIF_OP_WRITE: case BLKIF_OP_WRITE_BARRIER: @@ -447,8 +447,8 @@ struct blkif_x86_64_request *src) { int i, n = BLKIF_MAX_SEGMENTS_PER_REQUEST, j; - dst->operation = src->operation; - switch (src->operation) { + dst->operation = READ_ONCE(src->operation); + switch (dst->operation) { case BLKIF_OP_READ: case BLKIF_OP_WRITE: case BLKIF_OP_WRITE_BARRIER: --- linux-raspi2-4.2.0.orig/drivers/block/xen-blkback/xenbus.c +++ linux-raspi2-4.2.0/drivers/block/xen-blkback/xenbus.c @@ -212,6 +212,9 @@ static int xen_blkif_disconnect(struct xen_blkif *blkif) { + struct pending_req *req, *n; + int i = 0, j; + if (blkif->xenblkd) { kthread_stop(blkif->xenblkd); wake_up(&blkif->shutdown_wq); @@ -238,13 +241,28 @@ /* Remove all persistent grants and the cache of ballooned pages. */ xen_blkbk_free_caches(blkif); + /* Check that there is no request in use */ + list_for_each_entry_safe(req, n, &blkif->pending_free, free_list) { + list_del(&req->free_list); + + for (j = 0; j < MAX_INDIRECT_SEGMENTS; j++) + kfree(req->segments[j]); + + for (j = 0; j < MAX_INDIRECT_PAGES; j++) + kfree(req->indirect_pages[j]); + + kfree(req); + i++; + } + + WARN_ON(i != (XEN_BLKIF_REQS_PER_PAGE * blkif->nr_ring_pages)); + blkif->nr_ring_pages = 0; + return 0; } static void xen_blkif_free(struct xen_blkif *blkif) { - struct pending_req *req, *n; - int i = 0, j; xen_blkif_disconnect(blkif); xen_vbd_free(&blkif->vbd); @@ -257,22 +275,6 @@ BUG_ON(!list_empty(&blkif->free_pages)); BUG_ON(!RB_EMPTY_ROOT(&blkif->persistent_gnts)); - /* Check that there is no request in use */ - list_for_each_entry_safe(req, n, &blkif->pending_free, free_list) { - list_del(&req->free_list); - - for (j = 0; j < MAX_INDIRECT_SEGMENTS; j++) - kfree(req->segments[j]); - - for (j = 0; j < MAX_INDIRECT_PAGES; j++) - kfree(req->indirect_pages[j]); - - kfree(req); - i++; - } - - WARN_ON(i != (XEN_BLKIF_REQS_PER_PAGE * blkif->nr_ring_pages)); - kmem_cache_free(xen_blkif_cachep, blkif); } --- linux-raspi2-4.2.0.orig/drivers/block/xen-blkfront.c +++ linux-raspi2-4.2.0/drivers/block/xen-blkfront.c @@ -1984,7 +1984,8 @@ break; /* Missed the backend's Closing state -- fallthrough */ case XenbusStateClosing: - blkfront_closing(info); + if (info) + blkfront_closing(info); break; } } --- linux-raspi2-4.2.0.orig/drivers/block/zram/zcomp.c +++ linux-raspi2-4.2.0/drivers/block/zram/zcomp.c @@ -330,12 +330,14 @@ * allocate new zcomp and initialize it. return compressing * backend pointer or ERR_PTR if things went bad. ERR_PTR(-EINVAL) * if requested algorithm is not supported, ERR_PTR(-ENOMEM) in - * case of allocation error. + * case of allocation error, or any other error potentially + * returned by functions zcomp_strm_{multi,single}_create. */ struct zcomp *zcomp_create(const char *compress, int max_strm) { struct zcomp *comp; struct zcomp_backend *backend; + int error; backend = find_backend(compress); if (!backend) @@ -347,12 +349,12 @@ comp->backend = backend; if (max_strm > 1) - zcomp_strm_multi_create(comp, max_strm); + error = zcomp_strm_multi_create(comp, max_strm); else - zcomp_strm_single_create(comp); - if (!comp->stream) { + error = zcomp_strm_single_create(comp); + if (error) { kfree(comp); - return ERR_PTR(-ENOMEM); + return ERR_PTR(error); } return comp; } --- linux-raspi2-4.2.0.orig/drivers/bluetooth/ath3k.c +++ linux-raspi2-4.2.0/drivers/bluetooth/ath3k.c @@ -93,6 +93,7 @@ { USB_DEVICE(0x04CA, 0x300f) }, { USB_DEVICE(0x04CA, 0x3010) }, { USB_DEVICE(0x0930, 0x0219) }, + { USB_DEVICE(0x0930, 0x021c) }, { USB_DEVICE(0x0930, 0x0220) }, { USB_DEVICE(0x0930, 0x0227) }, { USB_DEVICE(0x0b05, 0x17d0) }, @@ -104,6 +105,7 @@ { USB_DEVICE(0x0CF3, 0x311F) }, { USB_DEVICE(0x0cf3, 0x3121) }, { USB_DEVICE(0x0CF3, 0x817a) }, + { USB_DEVICE(0x0CF3, 0x817b) }, { USB_DEVICE(0x0cf3, 0xe003) }, { USB_DEVICE(0x0CF3, 0xE004) }, { USB_DEVICE(0x0CF3, 0xE005) }, @@ -153,6 +155,7 @@ { USB_DEVICE(0x04ca, 0x300f), .driver_info = BTUSB_ATH3012 }, { USB_DEVICE(0x04ca, 0x3010), .driver_info = BTUSB_ATH3012 }, { USB_DEVICE(0x0930, 0x0219), .driver_info = BTUSB_ATH3012 }, + { USB_DEVICE(0x0930, 0x021c), .driver_info = BTUSB_ATH3012 }, { USB_DEVICE(0x0930, 0x0220), .driver_info = BTUSB_ATH3012 }, { USB_DEVICE(0x0930, 0x0227), .driver_info = BTUSB_ATH3012 }, { USB_DEVICE(0x0b05, 0x17d0), .driver_info = BTUSB_ATH3012 }, @@ -164,6 +167,7 @@ { USB_DEVICE(0x0cf3, 0x311F), .driver_info = BTUSB_ATH3012 }, { USB_DEVICE(0x0cf3, 0x3121), .driver_info = BTUSB_ATH3012 }, { USB_DEVICE(0x0CF3, 0x817a), .driver_info = BTUSB_ATH3012 }, + { USB_DEVICE(0x0CF3, 0x817b), .driver_info = BTUSB_ATH3012 }, { USB_DEVICE(0x0cf3, 0xe004), .driver_info = BTUSB_ATH3012 }, { USB_DEVICE(0x0cf3, 0xe005), .driver_info = BTUSB_ATH3012 }, { USB_DEVICE(0x0cf3, 0xe006), .driver_info = BTUSB_ATH3012 }, --- linux-raspi2-4.2.0.orig/drivers/bluetooth/btusb.c +++ linux-raspi2-4.2.0/drivers/bluetooth/btusb.c @@ -192,6 +192,7 @@ { USB_DEVICE(0x04ca, 0x300f), .driver_info = BTUSB_ATH3012 }, { USB_DEVICE(0x04ca, 0x3010), .driver_info = BTUSB_ATH3012 }, { USB_DEVICE(0x0930, 0x0219), .driver_info = BTUSB_ATH3012 }, + { USB_DEVICE(0x0930, 0x021c), .driver_info = BTUSB_ATH3012 }, { USB_DEVICE(0x0930, 0x0220), .driver_info = BTUSB_ATH3012 }, { USB_DEVICE(0x0930, 0x0227), .driver_info = BTUSB_ATH3012 }, { USB_DEVICE(0x0b05, 0x17d0), .driver_info = BTUSB_ATH3012 }, @@ -203,6 +204,7 @@ { USB_DEVICE(0x0cf3, 0x311f), .driver_info = BTUSB_ATH3012 }, { USB_DEVICE(0x0cf3, 0x3121), .driver_info = BTUSB_ATH3012 }, { USB_DEVICE(0x0cf3, 0x817a), .driver_info = BTUSB_ATH3012 }, + { USB_DEVICE(0x0cf3, 0x817b), .driver_info = BTUSB_ATH3012 }, { USB_DEVICE(0x0cf3, 0xe003), .driver_info = BTUSB_ATH3012 }, { USB_DEVICE(0x0cf3, 0xe004), .driver_info = BTUSB_ATH3012 }, { USB_DEVICE(0x0cf3, 0xe005), .driver_info = BTUSB_ATH3012 }, --- linux-raspi2-4.2.0.orig/drivers/bus/arm-ccn.c +++ linux-raspi2-4.2.0/drivers/bus/arm-ccn.c @@ -1188,7 +1188,8 @@ break; perf_pmu_migrate_context(&dt->pmu, cpu, target); cpumask_set_cpu(target, &dt->cpu); - WARN_ON(irq_set_affinity(ccn->irq, &dt->cpu) != 0); + if (ccn->irq) + WARN_ON(irq_set_affinity(ccn->irq, &dt->cpu) != 0); default: break; } --- linux-raspi2-4.2.0.orig/drivers/cdrom/cdrom.c +++ linux-raspi2-4.2.0/drivers/cdrom/cdrom.c @@ -289,7 +289,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-raspi2-4.2.0.orig/drivers/char/Kconfig +++ linux-raspi2-4.2.0/drivers/char/Kconfig @@ -4,6 +4,8 @@ menu "Character devices" +source "drivers/char/broadcom/Kconfig" + source "drivers/tty/Kconfig" config DEVMEM --- linux-raspi2-4.2.0.orig/drivers/char/Makefile +++ linux-raspi2-4.2.0/drivers/char/Makefile @@ -60,3 +60,4 @@ obj-$(CONFIG_TILE_SROM) += tile-srom.o obj-$(CONFIG_XILLYBUS) += xillybus/ +obj-$(CONFIG_BRCM_CHAR_DRIVERS) += broadcom/ --- linux-raspi2-4.2.0.orig/drivers/char/broadcom/Kconfig +++ linux-raspi2-4.2.0/drivers/char/broadcom/Kconfig @@ -0,0 +1,57 @@ +# +# Broadcom char driver config +# + +menuconfig BRCM_CHAR_DRIVERS + bool "Broadcom Char Drivers" + help + Broadcom's char drivers + +if BRCM_CHAR_DRIVERS + +config BCM_VC_CMA + bool "Videocore CMA" + depends on CMA && BCM2708_VCHIQ + default n + help + Helper for videocore CMA access. + +config BCM2708_VCMEM + bool "Videocore Memory" + default y + help + Helper for videocore memory access and total size allocation. + +config BCM_VCIO + tristate "Mailbox userspace access" + depends on BCM2835_MBOX + help + Gives access to the mailbox property channel from userspace. + +endif + +config BCM_VC_SM + bool "VMCS Shared Memory" + depends on BCM2708_VCHIQ + select BCM2708_VCMEM + default n + help + Support for the VC shared memory on the Broadcom reference + design. Uses the VCHIQ stack. + +config BCM2835_DEVGPIOMEM + tristate "/dev/gpiomem rootless GPIO access via mmap() on the BCM2835" + default m + help + Provides users with root-free access to the GPIO registers + on the 2835. Calling mmap(/dev/gpiomem) will map the GPIO + register page to the user's pointer. + +config BCM2835_SMI_DEV + tristate "Character device driver for BCM2835 Secondary Memory Interface" + depends on (MACH_BCM2708 || MACH_BCM2709 || ARCH_BCM2835) && BCM2835_SMI + default m + help + This driver provides a character device interface (ioctl + read/write) to + Broadcom's Secondary Memory interface. The low-level functionality is provided + by the SMI driver itself. --- linux-raspi2-4.2.0.orig/drivers/char/broadcom/Makefile +++ linux-raspi2-4.2.0/drivers/char/broadcom/Makefile @@ -0,0 +1,7 @@ +obj-$(CONFIG_BCM_VC_CMA) += vc_cma/ +obj-$(CONFIG_BCM2708_VCMEM) += vc_mem.o +obj-$(CONFIG_BCM_VCIO) += vcio.o +obj-$(CONFIG_BCM_VC_SM) += vc_sm/ + +obj-$(CONFIG_BCM2835_DEVGPIOMEM)+= bcm2835-gpiomem.o +obj-$(CONFIG_BCM2835_SMI_DEV) += bcm2835_smi_dev.o --- linux-raspi2-4.2.0.orig/drivers/char/broadcom/bcm2835-gpiomem.c +++ linux-raspi2-4.2.0/drivers/char/broadcom/bcm2835-gpiomem.c @@ -0,0 +1,260 @@ +/** + * GPIO memory device driver + * + * Creates a chardev /dev/gpiomem which will provide user access to + * the BCM2835's GPIO registers when it is mmap()'d. + * No longer need root for user GPIO access, but without relaxing permissions + * on /dev/mem. + * + * Written by Luke Wren + * Copyright (c) 2015, Raspberry Pi (Trading) Ltd. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions, and the following disclaimer, + * without modification. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The names of the above-listed copyright holders may not be used + * to endorse or promote products derived from this software without + * specific prior written permission. + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") version 2, as published by the Free + * Software Foundation. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS + * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#define DEVICE_NAME "bcm2835-gpiomem" +#define DRIVER_NAME "gpiomem-bcm2835" +#define DEVICE_MINOR 0 + +struct bcm2835_gpiomem_instance { + unsigned long gpio_regs_phys; + struct device *dev; +}; + +static struct cdev bcm2835_gpiomem_cdev; +static dev_t bcm2835_gpiomem_devid; +static struct class *bcm2835_gpiomem_class; +static struct device *bcm2835_gpiomem_dev; +static struct bcm2835_gpiomem_instance *inst; + + +/**************************************************************************** +* +* GPIO mem chardev file ops +* +***************************************************************************/ + +static int bcm2835_gpiomem_open(struct inode *inode, struct file *file) +{ + int dev = iminor(inode); + int ret = 0; + + dev_info(inst->dev, "gpiomem device opened."); + + if (dev != DEVICE_MINOR) { + dev_err(inst->dev, "Unknown minor device: %d", dev); + ret = -ENXIO; + } + return ret; +} + +static int bcm2835_gpiomem_release(struct inode *inode, struct file *file) +{ + int dev = iminor(inode); + int ret = 0; + + if (dev != DEVICE_MINOR) { + dev_err(inst->dev, "Unknown minor device %d", dev); + ret = -ENXIO; + } + return ret; +} + +static const struct vm_operations_struct bcm2835_gpiomem_vm_ops = { +#ifdef CONFIG_HAVE_IOREMAP_PROT + .access = generic_access_phys +#endif +}; + +static int bcm2835_gpiomem_mmap(struct file *file, struct vm_area_struct *vma) +{ + /* Ignore what the user says - they're getting the GPIO regs + whether they like it or not! */ + unsigned long gpio_page = inst->gpio_regs_phys >> PAGE_SHIFT; + + vma->vm_page_prot = phys_mem_access_prot(file, gpio_page, + PAGE_SIZE, + vma->vm_page_prot); + vma->vm_ops = &bcm2835_gpiomem_vm_ops; + if (remap_pfn_range(vma, vma->vm_start, + gpio_page, + PAGE_SIZE, + vma->vm_page_prot)) { + return -EAGAIN; + } + return 0; +} + +static const struct file_operations +bcm2835_gpiomem_fops = { + .owner = THIS_MODULE, + .open = bcm2835_gpiomem_open, + .release = bcm2835_gpiomem_release, + .mmap = bcm2835_gpiomem_mmap, +}; + + + /**************************************************************************** +* +* Probe and remove functions +* +***************************************************************************/ + + +static int bcm2835_gpiomem_probe(struct platform_device *pdev) +{ + int err; + void *ptr_err; + struct device *dev = &pdev->dev; + struct resource *ioresource; + + /* Allocate buffers and instance data */ + + inst = kzalloc(sizeof(struct bcm2835_gpiomem_instance), GFP_KERNEL); + + if (!inst) { + err = -ENOMEM; + goto failed_inst_alloc; + } + + inst->dev = dev; + + ioresource = platform_get_resource(pdev, IORESOURCE_MEM, 0); + if (ioresource) { + inst->gpio_regs_phys = ioresource->start; + } else { + dev_err(inst->dev, "failed to get IO resource"); + err = -ENOENT; + goto failed_get_resource; + } + + /* Create character device entries */ + + err = alloc_chrdev_region(&bcm2835_gpiomem_devid, + DEVICE_MINOR, 1, DEVICE_NAME); + if (err != 0) { + dev_err(inst->dev, "unable to allocate device number"); + goto failed_alloc_chrdev; + } + cdev_init(&bcm2835_gpiomem_cdev, &bcm2835_gpiomem_fops); + bcm2835_gpiomem_cdev.owner = THIS_MODULE; + err = cdev_add(&bcm2835_gpiomem_cdev, bcm2835_gpiomem_devid, 1); + if (err != 0) { + dev_err(inst->dev, "unable to register device"); + goto failed_cdev_add; + } + + /* Create sysfs entries */ + + bcm2835_gpiomem_class = class_create(THIS_MODULE, DEVICE_NAME); + ptr_err = bcm2835_gpiomem_class; + if (IS_ERR(ptr_err)) + goto failed_class_create; + + bcm2835_gpiomem_dev = device_create(bcm2835_gpiomem_class, NULL, + bcm2835_gpiomem_devid, NULL, + "gpiomem"); + ptr_err = bcm2835_gpiomem_dev; + if (IS_ERR(ptr_err)) + goto failed_device_create; + + dev_info(inst->dev, "Initialised: Registers at 0x%08lx", + inst->gpio_regs_phys); + + return 0; + +failed_device_create: + class_destroy(bcm2835_gpiomem_class); +failed_class_create: + cdev_del(&bcm2835_gpiomem_cdev); + err = PTR_ERR(ptr_err); +failed_cdev_add: + unregister_chrdev_region(bcm2835_gpiomem_devid, 1); +failed_alloc_chrdev: +failed_get_resource: + kfree(inst); +failed_inst_alloc: + dev_err(inst->dev, "could not load bcm2835_gpiomem"); + return err; +} + +static int bcm2835_gpiomem_remove(struct platform_device *pdev) +{ + struct device *dev = inst->dev; + + kfree(inst); + device_destroy(bcm2835_gpiomem_class, bcm2835_gpiomem_devid); + class_destroy(bcm2835_gpiomem_class); + cdev_del(&bcm2835_gpiomem_cdev); + unregister_chrdev_region(bcm2835_gpiomem_devid, 1); + + dev_info(dev, "GPIO mem driver removed - OK"); + return 0; +} + + /**************************************************************************** +* +* Register the driver with device tree +* +***************************************************************************/ + +static const struct of_device_id bcm2835_gpiomem_of_match[] = { + {.compatible = "brcm,bcm2835-gpiomem",}, + { /* sentinel */ }, +}; + +MODULE_DEVICE_TABLE(of, bcm2835_gpiomem_of_match); + +static struct platform_driver bcm2835_gpiomem_driver = { + .probe = bcm2835_gpiomem_probe, + .remove = bcm2835_gpiomem_remove, + .driver = { + .name = DRIVER_NAME, + .owner = THIS_MODULE, + .of_match_table = bcm2835_gpiomem_of_match, + }, +}; + +module_platform_driver(bcm2835_gpiomem_driver); + +MODULE_ALIAS("platform:gpiomem-bcm2835"); +MODULE_LICENSE("GPL"); +MODULE_DESCRIPTION("gpiomem driver for accessing GPIO from userspace"); +MODULE_AUTHOR("Luke Wren "); --- linux-raspi2-4.2.0.orig/drivers/char/broadcom/bcm2835_smi_dev.c +++ linux-raspi2-4.2.0/drivers/char/broadcom/bcm2835_smi_dev.c @@ -0,0 +1,402 @@ +/** + * Character device driver for Broadcom Secondary Memory Interface + * + * Written by Luke Wren + * Copyright (c) 2015, Raspberry Pi (Trading) Ltd. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions, and the following disclaimer, + * without modification. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The names of the above-listed copyright holders may not be used + * to endorse or promote products derived from this software without + * specific prior written permission. + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") version 2, as published by the Free + * Software Foundation. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS + * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +#define DEVICE_NAME "bcm2835-smi-dev" +#define DRIVER_NAME "smi-dev-bcm2835" +#define DEVICE_MINOR 0 + +static struct cdev bcm2835_smi_cdev; +static dev_t bcm2835_smi_devid; +static struct class *bcm2835_smi_class; +static struct device *bcm2835_smi_dev; + +struct bcm2835_smi_dev_instance { + struct device *dev; +}; + +static struct bcm2835_smi_instance *smi_inst; +static struct bcm2835_smi_dev_instance *inst; + +static const char *const ioctl_names[] = { + "READ_SETTINGS", + "WRITE_SETTINGS", + "ADDRESS" +}; + +/**************************************************************************** +* +* SMI chardev file ops +* +***************************************************************************/ +static long +bcm2835_smi_ioctl(struct file *file, unsigned int cmd, unsigned long arg) +{ + long ret = 0; + + dev_info(inst->dev, "serving ioctl..."); + + switch (cmd) { + case BCM2835_SMI_IOC_GET_SETTINGS:{ + struct smi_settings *settings; + + dev_info(inst->dev, "Reading SMI settings to user."); + settings = bcm2835_smi_get_settings_from_regs(smi_inst); + if (copy_to_user((void *)arg, settings, + sizeof(struct smi_settings))) + dev_err(inst->dev, "settings copy failed."); + break; + } + case BCM2835_SMI_IOC_WRITE_SETTINGS:{ + struct smi_settings *settings; + + dev_info(inst->dev, "Setting user's SMI settings."); + settings = bcm2835_smi_get_settings_from_regs(smi_inst); + if (copy_from_user(settings, (void *)arg, + sizeof(struct smi_settings))) + dev_err(inst->dev, "settings copy failed."); + else + bcm2835_smi_set_regs_from_settings(smi_inst); + break; + } + case BCM2835_SMI_IOC_ADDRESS: + dev_info(inst->dev, "SMI address set: 0x%02x", (int)arg); + bcm2835_smi_set_address(smi_inst, arg); + break; + default: + dev_err(inst->dev, "invalid ioctl cmd: %d", cmd); + ret = -ENOTTY; + break; + } + + return ret; +} + +static int bcm2835_smi_open(struct inode *inode, struct file *file) +{ + int dev = iminor(inode); + + dev_dbg(inst->dev, "SMI device opened."); + + if (dev != DEVICE_MINOR) { + dev_err(inst->dev, + "bcm2835_smi_release: Unknown minor device: %d", + dev); + return -ENXIO; + } + + return 0; +} + +static int bcm2835_smi_release(struct inode *inode, struct file *file) +{ + int dev = iminor(inode); + + if (dev != DEVICE_MINOR) { + dev_err(inst->dev, + "bcm2835_smi_release: Unknown minor device %d", dev); + return -ENXIO; + } + + return 0; +} + +static ssize_t dma_bounce_user( + enum dma_transfer_direction dma_dir, + char __user *user_ptr, + size_t count, + struct bcm2835_smi_bounce_info *bounce) +{ + int chunk_size; + int chunk_no = 0; + int count_left = count; + + while (count_left) { + int rv; + void *buf; + + /* Wait for current chunk to complete: */ + if (down_timeout(&bounce->callback_sem, + msecs_to_jiffies(1000))) { + dev_err(inst->dev, "DMA bounce timed out"); + count -= (count_left); + break; + } + + if (bounce->callback_sem.count >= DMA_BOUNCE_BUFFER_COUNT - 1) + dev_err(inst->dev, "WARNING: Ring buffer overflow"); + chunk_size = count_left > DMA_BOUNCE_BUFFER_SIZE ? + DMA_BOUNCE_BUFFER_SIZE : count_left; + buf = bounce->buffer[chunk_no % DMA_BOUNCE_BUFFER_COUNT]; + if (dma_dir == DMA_DEV_TO_MEM) + rv = copy_to_user(user_ptr, buf, chunk_size); + else + rv = copy_from_user(buf, user_ptr, chunk_size); + if (rv) + dev_err(inst->dev, "copy_*_user() failed!: %d", rv); + user_ptr += chunk_size; + count_left -= chunk_size; + chunk_no++; + } + return count; +} + +static ssize_t +bcm2835_read_file(struct file *f, char __user *user_ptr, + size_t count, loff_t *offs) +{ + int odd_bytes; + + dev_dbg(inst->dev, "User reading %d bytes from SMI.", count); + /* We don't want to DMA a number of bytes % 4 != 0 (32 bit FIFO) */ + if (count > DMA_THRESHOLD_BYTES) + odd_bytes = count & 0x3; + else + odd_bytes = count; + count -= odd_bytes; + if (count) { + struct bcm2835_smi_bounce_info *bounce; + + count = bcm2835_smi_user_dma(smi_inst, + DMA_DEV_TO_MEM, user_ptr, count, + &bounce); + if (count) + count = dma_bounce_user(DMA_DEV_TO_MEM, user_ptr, + count, bounce); + } + if (odd_bytes) { + /* Read from FIFO directly if not using DMA */ + uint8_t buf[DMA_THRESHOLD_BYTES]; + + bcm2835_smi_read_buf(smi_inst, buf, odd_bytes); + if (copy_to_user(user_ptr, buf, odd_bytes)) + dev_err(inst->dev, "copy_to_user() failed."); + count += odd_bytes; + + } + return count; +} + +static ssize_t +bcm2835_write_file(struct file *f, const char __user *user_ptr, + size_t count, loff_t *offs) +{ + int odd_bytes; + + dev_dbg(inst->dev, "User writing %d bytes to SMI.", count); + if (count > DMA_THRESHOLD_BYTES) + odd_bytes = count & 0x3; + else + odd_bytes = count; + count -= odd_bytes; + if (count) { + struct bcm2835_smi_bounce_info *bounce; + + count = bcm2835_smi_user_dma(smi_inst, + DMA_MEM_TO_DEV, (char __user *)user_ptr, count, + &bounce); + if (count) + count = dma_bounce_user(DMA_MEM_TO_DEV, + (char __user *)user_ptr, + count, bounce); + } + if (odd_bytes) { + uint8_t buf[DMA_THRESHOLD_BYTES]; + + if (copy_from_user(buf, user_ptr, odd_bytes)) + dev_err(inst->dev, "copy_from_user() failed."); + else + bcm2835_smi_write_buf(smi_inst, buf, odd_bytes); + count += odd_bytes; + } + return count; +} + +static const struct file_operations +bcm2835_smi_fops = { + .owner = THIS_MODULE, + .unlocked_ioctl = bcm2835_smi_ioctl, + .open = bcm2835_smi_open, + .release = bcm2835_smi_release, + .read = bcm2835_read_file, + .write = bcm2835_write_file, +}; + + +/**************************************************************************** +* +* bcm2835_smi_probe - called when the driver is loaded. +* +***************************************************************************/ + +static int bcm2835_smi_dev_probe(struct platform_device *pdev) +{ + int err; + void *ptr_err; + struct device *dev = &pdev->dev; + struct device_node *node = dev->of_node, *smi_node; + + if (!node) { + dev_err(dev, "No device tree node supplied!"); + return -EINVAL; + } + + smi_node = of_parse_phandle(node, "smi_handle", 0); + + if (!smi_node) { + dev_err(dev, "No such property: smi_handle"); + return -ENXIO; + } + + smi_inst = bcm2835_smi_get(smi_node); + + if (!smi_inst) + return -EPROBE_DEFER; + + /* Allocate buffers and instance data */ + + inst = devm_kzalloc(dev, sizeof(*inst), GFP_KERNEL); + + if (!inst) + return -ENOMEM; + + inst->dev = dev; + + /* Create character device entries */ + + err = alloc_chrdev_region(&bcm2835_smi_devid, + DEVICE_MINOR, 1, DEVICE_NAME); + if (err != 0) { + dev_err(inst->dev, "unable to allocate device number"); + return -ENOMEM; + } + cdev_init(&bcm2835_smi_cdev, &bcm2835_smi_fops); + bcm2835_smi_cdev.owner = THIS_MODULE; + err = cdev_add(&bcm2835_smi_cdev, bcm2835_smi_devid, 1); + if (err != 0) { + dev_err(inst->dev, "unable to register device"); + err = -ENOMEM; + goto failed_cdev_add; + } + + /* Create sysfs entries */ + + bcm2835_smi_class = class_create(THIS_MODULE, DEVICE_NAME); + ptr_err = bcm2835_smi_class; + if (IS_ERR(ptr_err)) + goto failed_class_create; + + bcm2835_smi_dev = device_create(bcm2835_smi_class, NULL, + bcm2835_smi_devid, NULL, + "smi"); + ptr_err = bcm2835_smi_dev; + if (IS_ERR(ptr_err)) + goto failed_device_create; + + dev_info(inst->dev, "initialised"); + + return 0; + +failed_device_create: + class_destroy(bcm2835_smi_class); +failed_class_create: + cdev_del(&bcm2835_smi_cdev); + err = PTR_ERR(ptr_err); +failed_cdev_add: + unregister_chrdev_region(bcm2835_smi_devid, 1); + dev_err(dev, "could not load bcm2835_smi_dev"); + return err; +} + +/**************************************************************************** +* +* bcm2835_smi_remove - called when the driver is unloaded. +* +***************************************************************************/ + +static int bcm2835_smi_dev_remove(struct platform_device *pdev) +{ + device_destroy(bcm2835_smi_class, bcm2835_smi_devid); + class_destroy(bcm2835_smi_class); + cdev_del(&bcm2835_smi_cdev); + unregister_chrdev_region(bcm2835_smi_devid, 1); + + dev_info(inst->dev, "SMI character dev removed - OK"); + return 0; +} + +/**************************************************************************** +* +* Register the driver with device tree +* +***************************************************************************/ + +static const struct of_device_id bcm2835_smi_dev_of_match[] = { + {.compatible = "brcm,bcm2835-smi-dev",}, + { /* sentinel */ }, +}; + +MODULE_DEVICE_TABLE(of, bcm2835_smi_dev_of_match); + +static struct platform_driver bcm2835_smi_dev_driver = { + .probe = bcm2835_smi_dev_probe, + .remove = bcm2835_smi_dev_remove, + .driver = { + .name = DRIVER_NAME, + .owner = THIS_MODULE, + .of_match_table = bcm2835_smi_dev_of_match, + }, +}; + +module_platform_driver(bcm2835_smi_dev_driver); + +MODULE_ALIAS("platform:smi-dev-bcm2835"); +MODULE_LICENSE("GPL"); +MODULE_DESCRIPTION( + "Character device driver for BCM2835's secondary memory interface"); +MODULE_AUTHOR("Luke Wren "); --- linux-raspi2-4.2.0.orig/drivers/char/broadcom/vc_cma/Makefile +++ linux-raspi2-4.2.0/drivers/char/broadcom/vc_cma/Makefile @@ -0,0 +1,14 @@ +ccflags-y += -Wall -Wstrict-prototypes -Wno-trigraphs +ccflags-y += -Werror +ccflags-y += -Iinclude/linux/broadcom +ccflags-y += -Idrivers/misc/vc04_services +ccflags-y += -Idrivers/misc/vc04_services/interface/vchi +ccflags-y += -Idrivers/misc/vc04_services/interface/vchiq_arm + +ccflags-y += -D__KERNEL__ +ccflags-y += -D__linux__ +ccflags-y += -Werror + +obj-$(CONFIG_BCM_VC_CMA) += vc-cma.o + +vc-cma-objs := vc_cma.o --- linux-raspi2-4.2.0.orig/drivers/char/broadcom/vc_cma/vc_cma.c +++ linux-raspi2-4.2.0/drivers/char/broadcom/vc_cma/vc_cma.c @@ -0,0 +1,1193 @@ +/** + * Copyright (c) 2010-2012 Broadcom. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions, and the following disclaimer, + * without modification. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The names of the above-listed copyright holders may not be used + * to endorse or promote products derived from this software without + * specific prior written permission. + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") version 2, as published by the Free + * Software Foundation. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS + * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "vc_cma.h" + +#include "vchiq_util.h" +#include "vchiq_connected.h" +//#include "debug_sym.h" +//#include "vc_mem.h" + +#define DRIVER_NAME "vc-cma" + +#define LOG_DBG(fmt, ...) \ + if (vc_cma_debug) \ + printk(KERN_INFO fmt "\n", ##__VA_ARGS__) +#define LOG_INFO(fmt, ...) \ + printk(KERN_INFO fmt "\n", ##__VA_ARGS__) +#define LOG_ERR(fmt, ...) \ + printk(KERN_ERR fmt "\n", ##__VA_ARGS__) + +#define VC_CMA_FOURCC VCHIQ_MAKE_FOURCC('C', 'M', 'A', ' ') +#define VC_CMA_VERSION 2 + +#define VC_CMA_CHUNK_ORDER 6 /* 256K */ +#define VC_CMA_CHUNK_SIZE (4096 << VC_CMA_CHUNK_ORDER) +#define VC_CMA_MAX_PARAMS_PER_MSG \ + ((VCHIQ_MAX_MSG_SIZE - sizeof(unsigned short))/sizeof(unsigned short)) +#define VC_CMA_RESERVE_COUNT_MAX 16 + +#define PAGES_PER_CHUNK (VC_CMA_CHUNK_SIZE / PAGE_SIZE) + +#define VCADDR_TO_PHYSADDR(vcaddr) (mm_vc_mem_phys_addr + vcaddr) + +#define loud_error(...) \ + LOG_ERR("===== " __VA_ARGS__) + +enum { + VC_CMA_MSG_QUIT, + VC_CMA_MSG_OPEN, + VC_CMA_MSG_TICK, + VC_CMA_MSG_ALLOC, /* chunk count */ + VC_CMA_MSG_FREE, /* chunk, chunk, ... */ + VC_CMA_MSG_ALLOCATED, /* chunk, chunk, ... */ + VC_CMA_MSG_REQUEST_ALLOC, /* chunk count */ + VC_CMA_MSG_REQUEST_FREE, /* chunk count */ + VC_CMA_MSG_RESERVE, /* bytes lo, bytes hi */ + VC_CMA_MSG_UPDATE_RESERVE, + VC_CMA_MSG_MAX +}; + +struct cma_msg { + unsigned short type; + unsigned short params[VC_CMA_MAX_PARAMS_PER_MSG]; +}; + +struct vc_cma_reserve_user { + unsigned int pid; + unsigned int reserve; +}; + +/* Device (/dev) related variables */ +static dev_t vc_cma_devnum; +static struct class *vc_cma_class; +static struct cdev vc_cma_cdev; +static int vc_cma_inited; +static int vc_cma_debug; + +/* Proc entry */ +static struct proc_dir_entry *vc_cma_proc_entry; + +phys_addr_t vc_cma_base; +struct page *vc_cma_base_page; +unsigned int vc_cma_size; +EXPORT_SYMBOL(vc_cma_size); +unsigned int vc_cma_initial; +unsigned int vc_cma_chunks; +unsigned int vc_cma_chunks_used; +unsigned int vc_cma_chunks_reserved; + + +void *vc_cma_dma_alloc; +unsigned int vc_cma_dma_size; + +static int in_loud_error; + +unsigned int vc_cma_reserve_total; +unsigned int vc_cma_reserve_count; +struct vc_cma_reserve_user vc_cma_reserve_users[VC_CMA_RESERVE_COUNT_MAX]; +static DEFINE_SEMAPHORE(vc_cma_reserve_mutex); +static DEFINE_SEMAPHORE(vc_cma_worker_queue_push_mutex); + +static u64 vc_cma_dma_mask = DMA_BIT_MASK(32); +static struct platform_device vc_cma_device = { + .name = "vc-cma", + .id = 0, + .dev = { + .dma_mask = &vc_cma_dma_mask, + .coherent_dma_mask = DMA_BIT_MASK(32), + }, +}; + +static VCHIQ_INSTANCE_T cma_instance; +static VCHIQ_SERVICE_HANDLE_T cma_service; +static VCHIU_QUEUE_T cma_msg_queue; +static struct task_struct *cma_worker; + +static int vc_cma_set_reserve(unsigned int reserve, unsigned int pid); +static int vc_cma_alloc_chunks(int num_chunks, struct cma_msg *reply); +static VCHIQ_STATUS_T cma_service_callback(VCHIQ_REASON_T reason, + VCHIQ_HEADER_T * header, + VCHIQ_SERVICE_HANDLE_T service, + void *bulk_userdata); +static void send_vc_msg(unsigned short type, + unsigned short param1, unsigned short param2); +static bool send_worker_msg(VCHIQ_HEADER_T * msg); + +static int early_vc_cma_mem(char *p) +{ + unsigned int new_size; + printk(KERN_NOTICE "early_vc_cma_mem(%s)", p); + vc_cma_size = memparse(p, &p); + vc_cma_initial = vc_cma_size; + if (*p == '/') + vc_cma_size = memparse(p + 1, &p); + if (*p == '@') + vc_cma_base = memparse(p + 1, &p); + + new_size = (vc_cma_size - ((-vc_cma_base) & (VC_CMA_CHUNK_SIZE - 1))) + & ~(VC_CMA_CHUNK_SIZE - 1); + if (new_size > vc_cma_size) + vc_cma_size = 0; + vc_cma_initial = (vc_cma_initial + VC_CMA_CHUNK_SIZE - 1) + & ~(VC_CMA_CHUNK_SIZE - 1); + if (vc_cma_initial > vc_cma_size) + vc_cma_initial = vc_cma_size; + vc_cma_base = (vc_cma_base + VC_CMA_CHUNK_SIZE - 1) + & ~(VC_CMA_CHUNK_SIZE - 1); + + printk(KERN_NOTICE " -> initial %x, size %x, base %x", vc_cma_initial, + vc_cma_size, (unsigned int)vc_cma_base); + + return 0; +} + +early_param("vc-cma-mem", early_vc_cma_mem); + +void vc_cma_early_init(void) +{ + LOG_DBG("vc_cma_early_init - vc_cma_chunks = %d", vc_cma_chunks); + if (vc_cma_size) { + int rc = platform_device_register(&vc_cma_device); + LOG_DBG("platform_device_register -> %d", rc); + } +} + +void vc_cma_reserve(void) +{ + /* if vc_cma_size is set, then declare vc CMA area of the same + * size from the end of memory + */ + if (vc_cma_size) { + if (dma_declare_contiguous(&vc_cma_device.dev, vc_cma_size, + vc_cma_base, 0) == 0) { + if (!dev_get_cma_area(NULL)) { + /* There is no default CMA area - make this + the default */ + struct cma *vc_cma_area = dev_get_cma_area( + &vc_cma_device.dev); + dma_contiguous_set_default(vc_cma_area); + LOG_INFO("vc_cma_reserve - using vc_cma as " + "the default contiguous DMA area"); + } + } else { + LOG_ERR("vc_cma: dma_declare_contiguous(%x,%x) failed", + vc_cma_size, (unsigned int)vc_cma_base); + vc_cma_size = 0; + } + } + vc_cma_chunks = vc_cma_size / VC_CMA_CHUNK_SIZE; +} + +/**************************************************************************** +* +* vc_cma_open +* +***************************************************************************/ + +static int vc_cma_open(struct inode *inode, struct file *file) +{ + (void)inode; + (void)file; + + return 0; +} + +/**************************************************************************** +* +* vc_cma_release +* +***************************************************************************/ + +static int vc_cma_release(struct inode *inode, struct file *file) +{ + (void)inode; + (void)file; + + vc_cma_set_reserve(0, current->tgid); + + return 0; +} + +/**************************************************************************** +* +* vc_cma_ioctl +* +***************************************************************************/ + +static long vc_cma_ioctl(struct file *file, unsigned int cmd, unsigned long arg) +{ + int rc = 0; + + (void)cmd; + (void)arg; + + switch (cmd) { + case VC_CMA_IOC_RESERVE: + rc = vc_cma_set_reserve((unsigned int)arg, current->tgid); + if (rc >= 0) + rc = 0; + break; + default: + LOG_ERR("vc-cma: Unknown ioctl %x", cmd); + return -ENOTTY; + } + + return rc; +} + +/**************************************************************************** +* +* File Operations for the driver. +* +***************************************************************************/ + +static const struct file_operations vc_cma_fops = { + .owner = THIS_MODULE, + .open = vc_cma_open, + .release = vc_cma_release, + .unlocked_ioctl = vc_cma_ioctl, +}; + +/**************************************************************************** +* +* vc_cma_proc_open +* +***************************************************************************/ + +static int vc_cma_show_info(struct seq_file *m, void *v) +{ + int i; + + seq_printf(m, "Videocore CMA:\n"); + seq_printf(m, " Base : %08x\n", (unsigned int)vc_cma_base); + seq_printf(m, " Length : %08x\n", vc_cma_size); + seq_printf(m, " Initial : %08x\n", vc_cma_initial); + seq_printf(m, " Chunk size : %08x\n", VC_CMA_CHUNK_SIZE); + seq_printf(m, " Chunks : %4d (%d bytes)\n", + (int)vc_cma_chunks, + (int)(vc_cma_chunks * VC_CMA_CHUNK_SIZE)); + seq_printf(m, " Used : %4d (%d bytes)\n", + (int)vc_cma_chunks_used, + (int)(vc_cma_chunks_used * VC_CMA_CHUNK_SIZE)); + seq_printf(m, " Reserved : %4d (%d bytes)\n", + (unsigned int)vc_cma_chunks_reserved, + (int)(vc_cma_chunks_reserved * VC_CMA_CHUNK_SIZE)); + + for (i = 0; i < vc_cma_reserve_count; i++) { + struct vc_cma_reserve_user *user = &vc_cma_reserve_users[i]; + seq_printf(m, " PID %5d: %d bytes\n", user->pid, + user->reserve); + } + seq_printf(m, " dma_alloc : %p (%d pages)\n", + vc_cma_dma_alloc ? page_address(vc_cma_dma_alloc) : 0, + vc_cma_dma_size); + + seq_printf(m, "\n"); + + return 0; +} + +static int vc_cma_proc_open(struct inode *inode, struct file *file) +{ + return single_open(file, vc_cma_show_info, NULL); +} + +/**************************************************************************** +* +* vc_cma_proc_write +* +***************************************************************************/ + +static int vc_cma_proc_write(struct file *file, + const char __user *buffer, + size_t size, loff_t *ppos) +{ + int rc = -EFAULT; + char input_str[20]; + + memset(input_str, 0, sizeof(input_str)); + + if (size > sizeof(input_str)) { + LOG_ERR("%s: input string length too long", __func__); + goto out; + } + + if (copy_from_user(input_str, buffer, size - 1)) { + LOG_ERR("%s: failed to get input string", __func__); + goto out; + } +#define ALLOC_STR "alloc" +#define FREE_STR "free" +#define DEBUG_STR "debug" +#define RESERVE_STR "reserve" +#define DMA_ALLOC_STR "dma_alloc" +#define DMA_FREE_STR "dma_free" + if (strncmp(input_str, ALLOC_STR, strlen(ALLOC_STR)) == 0) { + int alloc_size; + char *p = input_str + strlen(ALLOC_STR); + + while (*p == ' ') + p++; + alloc_size = memparse(p, NULL); + LOG_INFO("/proc/vc-cma: alloc %d", alloc_size); + if (alloc_size) + send_vc_msg(VC_CMA_MSG_REQUEST_FREE, + alloc_size / VC_CMA_CHUNK_SIZE, 0); + else + LOG_ERR("invalid size '%s'", p); + rc = size; + } else if (strncmp(input_str, FREE_STR, strlen(FREE_STR)) == 0) { + int alloc_size; + char *p = input_str + strlen(FREE_STR); + + while (*p == ' ') + p++; + alloc_size = memparse(p, NULL); + LOG_INFO("/proc/vc-cma: free %d", alloc_size); + if (alloc_size) + send_vc_msg(VC_CMA_MSG_REQUEST_ALLOC, + alloc_size / VC_CMA_CHUNK_SIZE, 0); + else + LOG_ERR("invalid size '%s'", p); + rc = size; + } else if (strncmp(input_str, DEBUG_STR, strlen(DEBUG_STR)) == 0) { + char *p = input_str + strlen(DEBUG_STR); + while (*p == ' ') + p++; + if ((strcmp(p, "on") == 0) || (strcmp(p, "1") == 0)) + vc_cma_debug = 1; + else if ((strcmp(p, "off") == 0) || (strcmp(p, "0") == 0)) + vc_cma_debug = 0; + LOG_INFO("/proc/vc-cma: debug %s", vc_cma_debug ? "on" : "off"); + rc = size; + } else if (strncmp(input_str, RESERVE_STR, strlen(RESERVE_STR)) == 0) { + int alloc_size; + int reserved; + char *p = input_str + strlen(RESERVE_STR); + while (*p == ' ') + p++; + alloc_size = memparse(p, NULL); + + reserved = vc_cma_set_reserve(alloc_size, current->tgid); + rc = (reserved >= 0) ? size : reserved; + } else if (strncmp(input_str, DMA_ALLOC_STR, strlen(DMA_ALLOC_STR)) == 0) { + int alloc_size; + char *p = input_str + strlen(DMA_ALLOC_STR); + while (*p == ' ') + p++; + alloc_size = memparse(p, NULL); + + if (vc_cma_dma_alloc) { + dma_release_from_contiguous(NULL, vc_cma_dma_alloc, + vc_cma_dma_size); + vc_cma_dma_alloc = NULL; + vc_cma_dma_size = 0; + } + vc_cma_dma_alloc = dma_alloc_from_contiguous(NULL, alloc_size, 0); + vc_cma_dma_size = (vc_cma_dma_alloc ? alloc_size : 0); + if (vc_cma_dma_alloc) + LOG_INFO("dma_alloc(%d pages) -> %p", alloc_size, page_address(vc_cma_dma_alloc)); + else + LOG_ERR("dma_alloc(%d pages) failed", alloc_size); + rc = size; + } else if (strncmp(input_str, DMA_FREE_STR, strlen(DMA_FREE_STR)) == 0) { + if (vc_cma_dma_alloc) { + dma_release_from_contiguous(NULL, vc_cma_dma_alloc, + vc_cma_dma_size); + vc_cma_dma_alloc = NULL; + vc_cma_dma_size = 0; + } + rc = size; + } + +out: + return rc; +} + +/**************************************************************************** +* +* File Operations for /proc interface. +* +***************************************************************************/ + +static const struct file_operations vc_cma_proc_fops = { + .open = vc_cma_proc_open, + .read = seq_read, + .write = vc_cma_proc_write, + .llseek = seq_lseek, + .release = single_release +}; + +static int vc_cma_set_reserve(unsigned int reserve, unsigned int pid) +{ + struct vc_cma_reserve_user *user = NULL; + int delta = 0; + int i; + + if (down_interruptible(&vc_cma_reserve_mutex)) + return -ERESTARTSYS; + + for (i = 0; i < vc_cma_reserve_count; i++) { + if (pid == vc_cma_reserve_users[i].pid) { + user = &vc_cma_reserve_users[i]; + delta = reserve - user->reserve; + if (reserve) + user->reserve = reserve; + else { + /* Remove this entry by copying downwards */ + while ((i + 1) < vc_cma_reserve_count) { + user[0].pid = user[1].pid; + user[0].reserve = user[1].reserve; + user++; + i++; + } + vc_cma_reserve_count--; + user = NULL; + } + break; + } + } + + if (reserve && !user) { + if (vc_cma_reserve_count == VC_CMA_RESERVE_COUNT_MAX) { + LOG_ERR("vc-cma: Too many reservations - " + "increase CMA_RESERVE_COUNT_MAX"); + up(&vc_cma_reserve_mutex); + return -EBUSY; + } + user = &vc_cma_reserve_users[vc_cma_reserve_count]; + user->pid = pid; + user->reserve = reserve; + delta = reserve; + vc_cma_reserve_count++; + } + + vc_cma_reserve_total += delta; + + send_vc_msg(VC_CMA_MSG_RESERVE, + vc_cma_reserve_total & 0xffff, vc_cma_reserve_total >> 16); + + send_worker_msg((VCHIQ_HEADER_T *) VC_CMA_MSG_UPDATE_RESERVE); + + LOG_DBG("/proc/vc-cma: reserve %d (PID %d) - total %u", + reserve, pid, vc_cma_reserve_total); + + up(&vc_cma_reserve_mutex); + + return vc_cma_reserve_total; +} + +static VCHIQ_STATUS_T cma_service_callback(VCHIQ_REASON_T reason, + VCHIQ_HEADER_T * header, + VCHIQ_SERVICE_HANDLE_T service, + void *bulk_userdata) +{ + switch (reason) { + case VCHIQ_MESSAGE_AVAILABLE: + if (!send_worker_msg(header)) + return VCHIQ_RETRY; + break; + case VCHIQ_SERVICE_CLOSED: + LOG_DBG("CMA service closed"); + break; + default: + LOG_ERR("Unexpected CMA callback reason %d", reason); + break; + } + return VCHIQ_SUCCESS; +} + +static void send_vc_msg(unsigned short type, + unsigned short param1, unsigned short param2) +{ + unsigned short msg[] = { type, param1, param2 }; + VCHIQ_ELEMENT_T elem = { &msg, sizeof(msg) }; + VCHIQ_STATUS_T ret; + vchiq_use_service(cma_service); + ret = vchiq_queue_message(cma_service, &elem, 1); + vchiq_release_service(cma_service); + if (ret != VCHIQ_SUCCESS) + LOG_ERR("vchiq_queue_message returned %x", ret); +} + +static bool send_worker_msg(VCHIQ_HEADER_T * msg) +{ + if (down_interruptible(&vc_cma_worker_queue_push_mutex)) + return false; + vchiu_queue_push(&cma_msg_queue, msg); + up(&vc_cma_worker_queue_push_mutex); + return true; +} + +static int vc_cma_alloc_chunks(int num_chunks, struct cma_msg *reply) +{ + int i; + for (i = 0; i < num_chunks; i++) { + struct page *chunk; + unsigned int chunk_num; + uint8_t *chunk_addr; + size_t chunk_size = PAGES_PER_CHUNK << PAGE_SHIFT; + + chunk = dma_alloc_from_contiguous(&vc_cma_device.dev, + PAGES_PER_CHUNK, + VC_CMA_CHUNK_ORDER); + if (!chunk) + break; + + chunk_addr = page_address(chunk); + dmac_flush_range(chunk_addr, chunk_addr + chunk_size); + outer_inv_range(__pa(chunk_addr), __pa(chunk_addr) + + chunk_size); + + chunk_num = + (page_to_phys(chunk) - vc_cma_base) / VC_CMA_CHUNK_SIZE; + BUG_ON(((page_to_phys(chunk) - vc_cma_base) % + VC_CMA_CHUNK_SIZE) != 0); + if (chunk_num >= vc_cma_chunks) { + phys_addr_t _pa = vc_cma_base + vc_cma_size - 1; + LOG_ERR("%s: ===============================", + __func__); + LOG_ERR("%s: chunk phys %x, vc_cma %pa-%pa - " + "bad SPARSEMEM configuration?", + __func__, (unsigned int)page_to_phys(chunk), + &vc_cma_base, &_pa); + LOG_ERR("%s: dev->cma_area = %p", __func__, + (void*)0/*vc_cma_device.dev.cma_area*/); + LOG_ERR("%s: ===============================", + __func__); + break; + } + reply->params[i] = chunk_num; + vc_cma_chunks_used++; + } + + if (i < num_chunks) { + LOG_ERR("%s: dma_alloc_from_contiguous failed " + "for %x bytes (alloc %d of %d, %d free)", + __func__, VC_CMA_CHUNK_SIZE, i, + num_chunks, vc_cma_chunks - vc_cma_chunks_used); + num_chunks = i; + } + + LOG_DBG("CMA allocated %d chunks -> %d used", + num_chunks, vc_cma_chunks_used); + reply->type = VC_CMA_MSG_ALLOCATED; + + { + VCHIQ_ELEMENT_T elem = { + reply, + offsetof(struct cma_msg, params[0]) + + num_chunks * sizeof(reply->params[0]) + }; + VCHIQ_STATUS_T ret; + vchiq_use_service(cma_service); + ret = vchiq_queue_message(cma_service, &elem, 1); + vchiq_release_service(cma_service); + if (ret != VCHIQ_SUCCESS) + LOG_ERR("vchiq_queue_message return " "%x", ret); + } + + return num_chunks; +} + +static int cma_worker_proc(void *param) +{ + static struct cma_msg reply; + (void)param; + + while (1) { + VCHIQ_HEADER_T *msg; + static struct cma_msg msg_copy; + struct cma_msg *cma_msg = &msg_copy; + int type, msg_size; + + msg = vchiu_queue_pop(&cma_msg_queue); + if ((unsigned int)msg >= VC_CMA_MSG_MAX) { + msg_size = msg->size; + memcpy(&msg_copy, msg->data, msg_size); + type = cma_msg->type; + vchiq_release_message(cma_service, msg); + } else { + msg_size = 0; + type = (int)msg; + if (type == VC_CMA_MSG_QUIT) + break; + else if (type == VC_CMA_MSG_UPDATE_RESERVE) { + msg = NULL; + cma_msg = NULL; + } else { + BUG(); + continue; + } + } + + switch (type) { + case VC_CMA_MSG_ALLOC:{ + int num_chunks, free_chunks; + num_chunks = cma_msg->params[0]; + free_chunks = + vc_cma_chunks - vc_cma_chunks_used; + LOG_DBG("CMA_MSG_ALLOC(%d chunks)", num_chunks); + if (num_chunks > VC_CMA_MAX_PARAMS_PER_MSG) { + LOG_ERR + ("CMA_MSG_ALLOC - chunk count (%d) " + "exceeds VC_CMA_MAX_PARAMS_PER_MSG (%d)", + num_chunks, + VC_CMA_MAX_PARAMS_PER_MSG); + num_chunks = VC_CMA_MAX_PARAMS_PER_MSG; + } + + if (num_chunks > free_chunks) { + LOG_ERR + ("CMA_MSG_ALLOC - chunk count (%d) " + "exceeds free chunks (%d)", + num_chunks, free_chunks); + num_chunks = free_chunks; + } + + vc_cma_alloc_chunks(num_chunks, &reply); + } + break; + + case VC_CMA_MSG_FREE:{ + int chunk_count = + (msg_size - + offsetof(struct cma_msg, + params)) / + sizeof(cma_msg->params[0]); + int i; + BUG_ON(chunk_count <= 0); + + LOG_DBG("CMA_MSG_FREE(%d chunks - %x, ...)", + chunk_count, cma_msg->params[0]); + for (i = 0; i < chunk_count; i++) { + int chunk_num = cma_msg->params[i]; + struct page *page = vc_cma_base_page + + chunk_num * PAGES_PER_CHUNK; + if (chunk_num >= vc_cma_chunks) { + LOG_ERR + ("CMA_MSG_FREE - chunk %d of %d" + " (value %x) exceeds maximum " + "(%x)", i, chunk_count, + chunk_num, + vc_cma_chunks - 1); + break; + } + + if (!dma_release_from_contiguous + (&vc_cma_device.dev, page, + PAGES_PER_CHUNK)) { + phys_addr_t _pa = page_to_phys(page); + LOG_ERR + ("CMA_MSG_FREE - failed to " + "release chunk %d (phys %pa, " + "page %x)", chunk_num, + &_pa, + (unsigned int)page); + } + vc_cma_chunks_used--; + } + LOG_DBG("CMA released %d chunks -> %d used", + i, vc_cma_chunks_used); + } + break; + + case VC_CMA_MSG_UPDATE_RESERVE:{ + int chunks_needed = + ((vc_cma_reserve_total + VC_CMA_CHUNK_SIZE - + 1) + / VC_CMA_CHUNK_SIZE) - + vc_cma_chunks_reserved; + + LOG_DBG + ("CMA_MSG_UPDATE_RESERVE(%d chunks needed)", + chunks_needed); + + /* Cap the reservations to what is available */ + if (chunks_needed > 0) { + if (chunks_needed > + (vc_cma_chunks - + vc_cma_chunks_used)) + chunks_needed = + (vc_cma_chunks - + vc_cma_chunks_used); + + chunks_needed = + vc_cma_alloc_chunks(chunks_needed, + &reply); + } + + LOG_DBG + ("CMA_MSG_UPDATE_RESERVE(%d chunks allocated)", + chunks_needed); + vc_cma_chunks_reserved += chunks_needed; + } + break; + + default: + LOG_ERR("unexpected msg type %d", type); + break; + } + } + + LOG_DBG("quitting..."); + return 0; +} + +/**************************************************************************** +* +* vc_cma_connected_init +* +* This function is called once the videocore has been connected. +* +***************************************************************************/ + +static void vc_cma_connected_init(void) +{ + VCHIQ_SERVICE_PARAMS_T service_params; + + LOG_DBG("vc_cma_connected_init"); + + if (!vchiu_queue_init(&cma_msg_queue, 16)) { + LOG_ERR("could not create CMA msg queue"); + goto fail_queue; + } + + if (vchiq_initialise(&cma_instance) != VCHIQ_SUCCESS) + goto fail_vchiq_init; + + vchiq_connect(cma_instance); + + service_params.fourcc = VC_CMA_FOURCC; + service_params.callback = cma_service_callback; + service_params.userdata = NULL; + service_params.version = VC_CMA_VERSION; + service_params.version_min = VC_CMA_VERSION; + + if (vchiq_open_service(cma_instance, &service_params, + &cma_service) != VCHIQ_SUCCESS) { + LOG_ERR("failed to open service - already in use?"); + goto fail_vchiq_open; + } + + vchiq_release_service(cma_service); + + cma_worker = kthread_create(cma_worker_proc, NULL, "cma_worker"); + if (!cma_worker) { + LOG_ERR("could not create CMA worker thread"); + goto fail_worker; + } + set_user_nice(cma_worker, -20); + wake_up_process(cma_worker); + + return; + +fail_worker: + vchiq_close_service(cma_service); +fail_vchiq_open: + vchiq_shutdown(cma_instance); +fail_vchiq_init: + vchiu_queue_delete(&cma_msg_queue); +fail_queue: + return; +} + +void +loud_error_header(void) +{ + if (in_loud_error) + return; + + LOG_ERR("============================================================" + "================"); + LOG_ERR("============================================================" + "================"); + LOG_ERR("====="); + + in_loud_error = 1; +} + +void +loud_error_footer(void) +{ + if (!in_loud_error) + return; + + LOG_ERR("====="); + LOG_ERR("============================================================" + "================"); + LOG_ERR("============================================================" + "================"); + + in_loud_error = 0; +} + +#if 1 +static int check_cma_config(void) { return 1; } +#else +static int +read_vc_debug_var(VC_MEM_ACCESS_HANDLE_T handle, + const char *symbol, + void *buf, size_t bufsize) +{ + VC_MEM_ADDR_T vcMemAddr; + size_t vcMemSize; + uint8_t *mapAddr; + off_t vcMapAddr; + + if (!LookupVideoCoreSymbol(handle, symbol, + &vcMemAddr, + &vcMemSize)) { + loud_error_header(); + loud_error( + "failed to find VC symbol \"%s\".", + symbol); + loud_error_footer(); + return 0; + } + + if (vcMemSize != bufsize) { + loud_error_header(); + loud_error( + "VC symbol \"%s\" is the wrong size.", + symbol); + loud_error_footer(); + return 0; + } + + vcMapAddr = (off_t)vcMemAddr & VC_MEM_TO_ARM_ADDR_MASK; + vcMapAddr += mm_vc_mem_phys_addr; + mapAddr = ioremap_nocache(vcMapAddr, vcMemSize); + if (mapAddr == 0) { + loud_error_header(); + loud_error( + "failed to ioremap \"%s\" @ 0x%x " + "(phys: 0x%x, size: %u).", + symbol, + (unsigned int)vcMapAddr, + (unsigned int)vcMemAddr, + (unsigned int)vcMemSize); + loud_error_footer(); + return 0; + } + + memcpy(buf, mapAddr, bufsize); + iounmap(mapAddr); + + return 1; +} + + +static int +check_cma_config(void) +{ + VC_MEM_ACCESS_HANDLE_T mem_hndl; + VC_MEM_ADDR_T mempool_start; + VC_MEM_ADDR_T mempool_end; + VC_MEM_ADDR_T mempool_offline_start; + VC_MEM_ADDR_T mempool_offline_end; + VC_MEM_ADDR_T cam_alloc_base; + VC_MEM_ADDR_T cam_alloc_size; + VC_MEM_ADDR_T cam_alloc_end; + int success = 0; + + if (OpenVideoCoreMemory(&mem_hndl) != 0) + goto out; + + /* Read the relevant VideoCore variables */ + if (!read_vc_debug_var(mem_hndl, "__MEMPOOL_START", + &mempool_start, + sizeof(mempool_start))) + goto close; + + if (!read_vc_debug_var(mem_hndl, "__MEMPOOL_END", + &mempool_end, + sizeof(mempool_end))) + goto close; + + if (!read_vc_debug_var(mem_hndl, "__MEMPOOL_OFFLINE_START", + &mempool_offline_start, + sizeof(mempool_offline_start))) + goto close; + + if (!read_vc_debug_var(mem_hndl, "__MEMPOOL_OFFLINE_END", + &mempool_offline_end, + sizeof(mempool_offline_end))) + goto close; + + if (!read_vc_debug_var(mem_hndl, "cam_alloc_base", + &cam_alloc_base, + sizeof(cam_alloc_base))) + goto close; + + if (!read_vc_debug_var(mem_hndl, "cam_alloc_size", + &cam_alloc_size, + sizeof(cam_alloc_size))) + goto close; + + cam_alloc_end = cam_alloc_base + cam_alloc_size; + + success = 1; + + /* Now the sanity checks */ + if (!mempool_offline_start) + mempool_offline_start = mempool_start; + if (!mempool_offline_end) + mempool_offline_end = mempool_end; + + if (VCADDR_TO_PHYSADDR(mempool_offline_start) != vc_cma_base) { + loud_error_header(); + loud_error( + "__MEMPOOL_OFFLINE_START(%x -> %lx) doesn't match " + "vc_cma_base(%x)", + mempool_offline_start, + VCADDR_TO_PHYSADDR(mempool_offline_start), + vc_cma_base); + success = 0; + } + + if (VCADDR_TO_PHYSADDR(mempool_offline_end) != + (vc_cma_base + vc_cma_size)) { + loud_error_header(); + loud_error( + "__MEMPOOL_OFFLINE_END(%x -> %lx) doesn't match " + "vc_cma_base(%x) + vc_cma_size(%x) = %x", + mempool_offline_start, + VCADDR_TO_PHYSADDR(mempool_offline_end), + vc_cma_base, vc_cma_size, vc_cma_base + vc_cma_size); + success = 0; + } + + if (mempool_end < mempool_start) { + loud_error_header(); + loud_error( + "__MEMPOOL_END(%x) must not be before " + "__MEMPOOL_START(%x)", + mempool_end, + mempool_start); + success = 0; + } + + if (mempool_offline_end < mempool_offline_start) { + loud_error_header(); + loud_error( + "__MEMPOOL_OFFLINE_END(%x) must not be before " + "__MEMPOOL_OFFLINE_START(%x)", + mempool_offline_end, + mempool_offline_start); + success = 0; + } + + if (mempool_offline_start < mempool_start) { + loud_error_header(); + loud_error( + "__MEMPOOL_OFFLINE_START(%x) must not be before " + "__MEMPOOL_START(%x)", + mempool_offline_start, + mempool_start); + success = 0; + } + + if (mempool_offline_end > mempool_end) { + loud_error_header(); + loud_error( + "__MEMPOOL_OFFLINE_END(%x) must not be after " + "__MEMPOOL_END(%x)", + mempool_offline_end, + mempool_end); + success = 0; + } + + if ((cam_alloc_base < mempool_end) && + (cam_alloc_end > mempool_start)) { + loud_error_header(); + loud_error( + "cam_alloc pool(%x-%x) overlaps " + "mempool(%x-%x)", + cam_alloc_base, cam_alloc_end, + mempool_start, mempool_end); + success = 0; + } + + loud_error_footer(); + +close: + CloseVideoCoreMemory(mem_hndl); + +out: + return success; +} +#endif + +static int vc_cma_init(void) +{ + int rc = -EFAULT; + struct device *dev; + + if (!check_cma_config()) + goto out_release; + + LOG_INFO("vc-cma: Videocore CMA driver"); + LOG_INFO("vc-cma: vc_cma_base = %pa", &vc_cma_base); + LOG_INFO("vc-cma: vc_cma_size = 0x%08x (%u MiB)", + vc_cma_size, vc_cma_size / (1024 * 1024)); + LOG_INFO("vc-cma: vc_cma_initial = 0x%08x (%u MiB)", + vc_cma_initial, vc_cma_initial / (1024 * 1024)); + + vc_cma_base_page = phys_to_page(vc_cma_base); + + if (vc_cma_chunks) { + int chunks_needed = vc_cma_initial / VC_CMA_CHUNK_SIZE; + + for (vc_cma_chunks_used = 0; + vc_cma_chunks_used < chunks_needed; vc_cma_chunks_used++) { + struct page *chunk; + chunk = dma_alloc_from_contiguous(&vc_cma_device.dev, + PAGES_PER_CHUNK, + VC_CMA_CHUNK_ORDER); + if (!chunk) + break; + BUG_ON(((page_to_phys(chunk) - vc_cma_base) % + VC_CMA_CHUNK_SIZE) != 0); + } + if (vc_cma_chunks_used != chunks_needed) { + LOG_ERR("%s: dma_alloc_from_contiguous failed (%d " + "bytes, allocation %d of %d)", + __func__, VC_CMA_CHUNK_SIZE, + vc_cma_chunks_used, chunks_needed); + goto out_release; + } + + vchiq_add_connected_callback(vc_cma_connected_init); + } + + rc = alloc_chrdev_region(&vc_cma_devnum, 0, 1, DRIVER_NAME); + if (rc < 0) { + LOG_ERR("%s: alloc_chrdev_region failed (rc=%d)", __func__, rc); + goto out_release; + } + + cdev_init(&vc_cma_cdev, &vc_cma_fops); + rc = cdev_add(&vc_cma_cdev, vc_cma_devnum, 1); + if (rc != 0) { + LOG_ERR("%s: cdev_add failed (rc=%d)", __func__, rc); + goto out_unregister; + } + + vc_cma_class = class_create(THIS_MODULE, DRIVER_NAME); + if (IS_ERR(vc_cma_class)) { + rc = PTR_ERR(vc_cma_class); + LOG_ERR("%s: class_create failed (rc=%d)", __func__, rc); + goto out_cdev_del; + } + + dev = device_create(vc_cma_class, NULL, vc_cma_devnum, NULL, + DRIVER_NAME); + if (IS_ERR(dev)) { + rc = PTR_ERR(dev); + LOG_ERR("%s: device_create failed (rc=%d)", __func__, rc); + goto out_class_destroy; + } + + vc_cma_proc_entry = proc_create(DRIVER_NAME, 0444, NULL, &vc_cma_proc_fops); + if (vc_cma_proc_entry == NULL) { + rc = -EFAULT; + LOG_ERR("%s: proc_create failed", __func__); + goto out_device_destroy; + } + + vc_cma_inited = 1; + return 0; + +out_device_destroy: + device_destroy(vc_cma_class, vc_cma_devnum); + +out_class_destroy: + class_destroy(vc_cma_class); + vc_cma_class = NULL; + +out_cdev_del: + cdev_del(&vc_cma_cdev); + +out_unregister: + unregister_chrdev_region(vc_cma_devnum, 1); + +out_release: + /* It is tempting to try to clean up by calling + dma_release_from_contiguous for all allocated chunks, but it isn't + a very safe thing to do. If vc_cma_initial is non-zero it is because + VideoCore is already using that memory, so giving it back to Linux + is likely to be fatal. + */ + return -1; +} + +/**************************************************************************** +* +* vc_cma_exit +* +***************************************************************************/ + +static void __exit vc_cma_exit(void) +{ + LOG_DBG("%s: called", __func__); + + if (vc_cma_inited) { + remove_proc_entry(DRIVER_NAME, NULL); + device_destroy(vc_cma_class, vc_cma_devnum); + class_destroy(vc_cma_class); + cdev_del(&vc_cma_cdev); + unregister_chrdev_region(vc_cma_devnum, 1); + } +} + +module_init(vc_cma_init); +module_exit(vc_cma_exit); +MODULE_LICENSE("GPL"); +MODULE_AUTHOR("Broadcom Corporation"); --- linux-raspi2-4.2.0.orig/drivers/char/broadcom/vc_mem.c +++ linux-raspi2-4.2.0/drivers/char/broadcom/vc_mem.c @@ -0,0 +1,422 @@ +/***************************************************************************** +* Copyright 2010 - 2011 Broadcom Corporation. All rights reserved. +* +* Unless you and Broadcom execute a separate written software license +* agreement governing use of this software, this software is licensed to you +* under the terms of the GNU General Public License version 2, available at +* http://www.broadcom.com/licenses/GPLv2.php (the "GPL"). +* +* Notwithstanding the above, under no circumstances may you combine this +* software in any way with any other Broadcom software provided under a +* license other than the GPL, without Broadcom's express prior written +* consent. +*****************************************************************************/ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#define DRIVER_NAME "vc-mem" + +// Device (/dev) related variables +static dev_t vc_mem_devnum = 0; +static struct class *vc_mem_class = NULL; +static struct cdev vc_mem_cdev; +static int vc_mem_inited = 0; + +#ifdef CONFIG_DEBUG_FS +static struct dentry *vc_mem_debugfs_entry; +#endif + +/* + * Videocore memory addresses and size + * + * Drivers that wish to know the videocore memory addresses and sizes should + * use these variables instead of the MM_IO_BASE and MM_ADDR_IO defines in + * headers. This allows the other drivers to not be tied down to a a certain + * address/size at compile time. + * + * In the future, the goal is to have the videocore memory virtual address and + * size be calculated at boot time rather than at compile time. The decision of + * where the videocore memory resides and its size would be in the hands of the + * bootloader (and/or kernel). When that happens, the values of these variables + * would be calculated and assigned in the init function. + */ +// in the 2835 VC in mapped above ARM, but ARM has full access to VC space +unsigned long mm_vc_mem_phys_addr = 0x00000000; +unsigned int mm_vc_mem_size = 0; +unsigned int mm_vc_mem_base = 0; + +EXPORT_SYMBOL(mm_vc_mem_phys_addr); +EXPORT_SYMBOL(mm_vc_mem_size); +EXPORT_SYMBOL(mm_vc_mem_base); + +static uint phys_addr = 0; +static uint mem_size = 0; +static uint mem_base = 0; + + +/**************************************************************************** +* +* vc_mem_open +* +***************************************************************************/ + +static int +vc_mem_open(struct inode *inode, struct file *file) +{ + (void) inode; + (void) file; + + pr_debug("%s: called file = 0x%p\n", __func__, file); + + return 0; +} + +/**************************************************************************** +* +* vc_mem_release +* +***************************************************************************/ + +static int +vc_mem_release(struct inode *inode, struct file *file) +{ + (void) inode; + (void) file; + + pr_debug("%s: called file = 0x%p\n", __func__, file); + + return 0; +} + +/**************************************************************************** +* +* vc_mem_get_size +* +***************************************************************************/ + +static void +vc_mem_get_size(void) +{ +} + +/**************************************************************************** +* +* vc_mem_get_base +* +***************************************************************************/ + +static void +vc_mem_get_base(void) +{ +} + +/**************************************************************************** +* +* vc_mem_get_current_size +* +***************************************************************************/ + +int +vc_mem_get_current_size(void) +{ + return mm_vc_mem_size; +} + +EXPORT_SYMBOL_GPL(vc_mem_get_current_size); + +/**************************************************************************** +* +* vc_mem_ioctl +* +***************************************************************************/ + +static long +vc_mem_ioctl(struct file *file, unsigned int cmd, unsigned long arg) +{ + int rc = 0; + + (void) cmd; + (void) arg; + + pr_debug("%s: called file = 0x%p\n", __func__, file); + + switch (cmd) { + case VC_MEM_IOC_MEM_PHYS_ADDR: + { + pr_debug("%s: VC_MEM_IOC_MEM_PHYS_ADDR=0x%p\n", + __func__, (void *) mm_vc_mem_phys_addr); + + if (copy_to_user((void *) arg, &mm_vc_mem_phys_addr, + sizeof (mm_vc_mem_phys_addr)) != 0) { + rc = -EFAULT; + } + break; + } + case VC_MEM_IOC_MEM_SIZE: + { + // Get the videocore memory size first + vc_mem_get_size(); + + pr_debug("%s: VC_MEM_IOC_MEM_SIZE=%u\n", __func__, + mm_vc_mem_size); + + if (copy_to_user((void *) arg, &mm_vc_mem_size, + sizeof (mm_vc_mem_size)) != 0) { + rc = -EFAULT; + } + break; + } + case VC_MEM_IOC_MEM_BASE: + { + // Get the videocore memory base + vc_mem_get_base(); + + pr_debug("%s: VC_MEM_IOC_MEM_BASE=%u\n", __func__, + mm_vc_mem_base); + + if (copy_to_user((void *) arg, &mm_vc_mem_base, + sizeof (mm_vc_mem_base)) != 0) { + rc = -EFAULT; + } + break; + } + case VC_MEM_IOC_MEM_LOAD: + { + // Get the videocore memory base + vc_mem_get_base(); + + pr_debug("%s: VC_MEM_IOC_MEM_LOAD=%u\n", __func__, + mm_vc_mem_base); + + if (copy_to_user((void *) arg, &mm_vc_mem_base, + sizeof (mm_vc_mem_base)) != 0) { + rc = -EFAULT; + } + break; + } + default: + { + return -ENOTTY; + } + } + pr_debug("%s: file = 0x%p returning %d\n", __func__, file, rc); + + return rc; +} + +/**************************************************************************** +* +* vc_mem_mmap +* +***************************************************************************/ + +static int +vc_mem_mmap(struct file *filp, struct vm_area_struct *vma) +{ + int rc = 0; + unsigned long length = vma->vm_end - vma->vm_start; + unsigned long offset = vma->vm_pgoff << PAGE_SHIFT; + + pr_debug("%s: vm_start = 0x%08lx vm_end = 0x%08lx vm_pgoff = 0x%08lx\n", + __func__, (long) vma->vm_start, (long) vma->vm_end, + (long) vma->vm_pgoff); + + if (offset + length > mm_vc_mem_size) { + pr_err("%s: length %ld is too big\n", __func__, length); + return -EINVAL; + } + // Do not cache the memory map + vma->vm_page_prot = pgprot_noncached(vma->vm_page_prot); + + rc = remap_pfn_range(vma, vma->vm_start, + (mm_vc_mem_phys_addr >> PAGE_SHIFT) + + vma->vm_pgoff, length, vma->vm_page_prot); + if (rc != 0) { + pr_err("%s: remap_pfn_range failed (rc=%d)\n", __func__, rc); + } + + return rc; +} + +/**************************************************************************** +* +* File Operations for the driver. +* +***************************************************************************/ + +static const struct file_operations vc_mem_fops = { + .owner = THIS_MODULE, + .open = vc_mem_open, + .release = vc_mem_release, + .unlocked_ioctl = vc_mem_ioctl, + .mmap = vc_mem_mmap, +}; + +#ifdef CONFIG_DEBUG_FS +static void vc_mem_debugfs_deinit(void) +{ + debugfs_remove_recursive(vc_mem_debugfs_entry); + vc_mem_debugfs_entry = NULL; +} + + +static int vc_mem_debugfs_init( + struct device *dev) +{ + vc_mem_debugfs_entry = debugfs_create_dir(DRIVER_NAME, NULL); + if (!vc_mem_debugfs_entry) { + dev_warn(dev, "could not create debugfs entry\n"); + return -EFAULT; + } + + if (!debugfs_create_x32("vc_mem_phys_addr", + 0444, + vc_mem_debugfs_entry, + (u32 *)&mm_vc_mem_phys_addr)) { + dev_warn(dev, "%s:could not create vc_mem_phys entry\n", + __func__); + goto fail; + } + + if (!debugfs_create_x32("vc_mem_size", + 0444, + vc_mem_debugfs_entry, + (u32 *)&mm_vc_mem_size)) { + dev_warn(dev, "%s:could not create vc_mem_size entry\n", + __func__); + goto fail; + } + + if (!debugfs_create_x32("vc_mem_base", + 0444, + vc_mem_debugfs_entry, + (u32 *)&mm_vc_mem_base)) { + dev_warn(dev, "%s:could not create vc_mem_base entry\n", + __func__); + goto fail; + } + + return 0; + +fail: + vc_mem_debugfs_deinit(); + return -EFAULT; +} + +#endif /* CONFIG_DEBUG_FS */ + + +/**************************************************************************** +* +* vc_mem_init +* +***************************************************************************/ + +static int __init +vc_mem_init(void) +{ + int rc = -EFAULT; + struct device *dev; + + pr_debug("%s: called\n", __func__); + + mm_vc_mem_phys_addr = phys_addr; + mm_vc_mem_size = mem_size; + mm_vc_mem_base = mem_base; + + vc_mem_get_size(); + + pr_info("vc-mem: phys_addr:0x%08lx mem_base=0x%08x mem_size:0x%08x(%u MiB)\n", + mm_vc_mem_phys_addr, mm_vc_mem_base, mm_vc_mem_size, mm_vc_mem_size / (1024 * 1024)); + + if ((rc = alloc_chrdev_region(&vc_mem_devnum, 0, 1, DRIVER_NAME)) < 0) { + pr_err("%s: alloc_chrdev_region failed (rc=%d)\n", + __func__, rc); + goto out_err; + } + + cdev_init(&vc_mem_cdev, &vc_mem_fops); + if ((rc = cdev_add(&vc_mem_cdev, vc_mem_devnum, 1)) != 0) { + pr_err("%s: cdev_add failed (rc=%d)\n", __func__, rc); + goto out_unregister; + } + + vc_mem_class = class_create(THIS_MODULE, DRIVER_NAME); + if (IS_ERR(vc_mem_class)) { + rc = PTR_ERR(vc_mem_class); + pr_err("%s: class_create failed (rc=%d)\n", __func__, rc); + goto out_cdev_del; + } + + dev = device_create(vc_mem_class, NULL, vc_mem_devnum, NULL, + DRIVER_NAME); + if (IS_ERR(dev)) { + rc = PTR_ERR(dev); + pr_err("%s: device_create failed (rc=%d)\n", __func__, rc); + goto out_class_destroy; + } + +#ifdef CONFIG_DEBUG_FS + /* don't fail if the debug entries cannot be created */ + vc_mem_debugfs_init(dev); +#endif + + vc_mem_inited = 1; + return 0; + + device_destroy(vc_mem_class, vc_mem_devnum); + + out_class_destroy: + class_destroy(vc_mem_class); + vc_mem_class = NULL; + + out_cdev_del: + cdev_del(&vc_mem_cdev); + + out_unregister: + unregister_chrdev_region(vc_mem_devnum, 1); + + out_err: + return -1; +} + +/**************************************************************************** +* +* vc_mem_exit +* +***************************************************************************/ + +static void __exit +vc_mem_exit(void) +{ + pr_debug("%s: called\n", __func__); + + if (vc_mem_inited) { +#if CONFIG_DEBUG_FS + vc_mem_debugfs_deinit(); +#endif + device_destroy(vc_mem_class, vc_mem_devnum); + class_destroy(vc_mem_class); + cdev_del(&vc_mem_cdev); + unregister_chrdev_region(vc_mem_devnum, 1); + } +} + +module_init(vc_mem_init); +module_exit(vc_mem_exit); +MODULE_LICENSE("GPL"); +MODULE_AUTHOR("Broadcom Corporation"); + +module_param(phys_addr, uint, 0644); +module_param(mem_size, uint, 0644); +module_param(mem_base, uint, 0644); --- linux-raspi2-4.2.0.orig/drivers/char/broadcom/vc_sm/Makefile +++ linux-raspi2-4.2.0/drivers/char/broadcom/vc_sm/Makefile @@ -0,0 +1,21 @@ +EXTRA_CFLAGS += -Wall -Wstrict-prototypes -Wno-trigraphs -O2 + +EXTRA_CFLAGS += -I"./arch/arm/mach-bcm2708/include/mach" +EXTRA_CFLAGS += -I"drivers/misc/vc04_services" +EXTRA_CFLAGS += -I"drivers/misc/vc04_services/interface/vchi" +EXTRA_CFLAGS += -I"drivers/misc/vc04_services/interface/vchiq_arm" +EXTRA_CFLAGS += -I"$(srctree)/fs/" + +EXTRA_CFLAGS += -DOS_ASSERT_FAILURE +EXTRA_CFLAGS += -D__STDC_VERSION=199901L +EXTRA_CFLAGS += -D__STDC_VERSION__=199901L +EXTRA_CFLAGS += -D__VCCOREVER__=0 +EXTRA_CFLAGS += -D__KERNEL__ +EXTRA_CFLAGS += -D__linux__ +EXTRA_CFLAGS += -Werror + +obj-$(CONFIG_BCM_VC_SM) := vc-sm.o + +vc-sm-objs := \ + vmcs_sm.o \ + vc_vchi_sm.o --- linux-raspi2-4.2.0.orig/drivers/char/broadcom/vc_sm/vc_vchi_sm.c +++ linux-raspi2-4.2.0/drivers/char/broadcom/vc_sm/vc_vchi_sm.c @@ -0,0 +1,492 @@ +/***************************************************************************** +* Copyright 2011-2012 Broadcom Corporation. All rights reserved. +* +* Unless you and Broadcom execute a separate written software license +* agreement governing use of this software, this software is licensed to you +* under the terms of the GNU General Public License version 2, available at +* http://www.broadcom.com/licenses/GPLv2.php (the "GPL"). +* +* Notwithstanding the above, under no circumstances may you combine this +* software in any way with any other Broadcom software provided under a +* license other than the GPL, without Broadcom's express prior written +* consent. +*****************************************************************************/ + +/* ---- Include Files ----------------------------------------------------- */ +#include +#include +#include +#include +#include +#include +#include + +#include "vc_vchi_sm.h" + +#define VC_SM_VER 1 +#define VC_SM_MIN_VER 0 + +/* ---- Private Constants and Types -------------------------------------- */ + +/* Command blocks come from a pool */ +#define SM_MAX_NUM_CMD_RSP_BLKS 32 + +struct sm_cmd_rsp_blk { + struct list_head head; /* To create lists */ + struct semaphore sema; /* To be signaled when the response is there */ + + uint16_t id; + uint16_t length; + + uint8_t msg[VC_SM_MAX_MSG_LEN]; + + uint32_t wait:1; + uint32_t sent:1; + uint32_t alloc:1; + +}; + +struct sm_instance { + uint32_t num_connections; + VCHI_SERVICE_HANDLE_T vchi_handle[VCHI_MAX_NUM_CONNECTIONS]; + struct task_struct *io_thread; + struct semaphore io_sema; + + uint32_t trans_id; + + struct mutex lock; + struct list_head cmd_list; + struct list_head rsp_list; + struct list_head dead_list; + + struct sm_cmd_rsp_blk free_blk[SM_MAX_NUM_CMD_RSP_BLKS]; + struct list_head free_list; + struct mutex free_lock; + struct semaphore free_sema; + +}; + +/* ---- Private Variables ------------------------------------------------ */ + +/* ---- Private Function Prototypes -------------------------------------- */ + +/* ---- Private Functions ------------------------------------------------ */ +static struct +sm_cmd_rsp_blk *vc_vchi_cmd_create(struct sm_instance *instance, + VC_SM_MSG_TYPE id, void *msg, + uint32_t size, int wait) +{ + struct sm_cmd_rsp_blk *blk; + VC_SM_MSG_HDR_T *hdr; + + if (down_interruptible(&instance->free_sema)) { + blk = kmalloc(sizeof(*blk), GFP_KERNEL); + if (!blk) + return NULL; + + blk->alloc = 1; + sema_init(&blk->sema, 0); + } else { + mutex_lock(&instance->free_lock); + blk = + list_first_entry(&instance->free_list, + struct sm_cmd_rsp_blk, head); + list_del(&blk->head); + mutex_unlock(&instance->free_lock); + } + + blk->sent = 0; + blk->wait = wait; + blk->length = sizeof(*hdr) + size; + + hdr = (VC_SM_MSG_HDR_T *) blk->msg; + hdr->type = id; + mutex_lock(&instance->lock); + hdr->trans_id = blk->id = ++instance->trans_id; + mutex_unlock(&instance->lock); + + if (size) + memcpy(hdr->body, msg, size); + + return blk; +} + +static void +vc_vchi_cmd_delete(struct sm_instance *instance, struct sm_cmd_rsp_blk *blk) +{ + if (blk->alloc) { + kfree(blk); + return; + } + + mutex_lock(&instance->free_lock); + list_add(&blk->head, &instance->free_list); + mutex_unlock(&instance->free_lock); + up(&instance->free_sema); +} + +static int vc_vchi_sm_videocore_io(void *arg) +{ + struct sm_instance *instance = arg; + struct sm_cmd_rsp_blk *cmd = NULL, *cmd_tmp; + VC_SM_RESULT_T *reply; + uint32_t reply_len; + int32_t status; + int svc_use = 1; + + while (1) { + if (svc_use) + vchi_service_release(instance->vchi_handle[0]); + svc_use = 0; + if (!down_interruptible(&instance->io_sema)) { + vchi_service_use(instance->vchi_handle[0]); + svc_use = 1; + + do { + unsigned int flags; + /* + * Get new command and move it to response list + */ + mutex_lock(&instance->lock); + if (list_empty(&instance->cmd_list)) { + /* no more commands to process */ + mutex_unlock(&instance->lock); + break; + } + cmd = + list_first_entry(&instance->cmd_list, + struct sm_cmd_rsp_blk, + head); + list_move(&cmd->head, &instance->rsp_list); + cmd->sent = 1; + mutex_unlock(&instance->lock); + + /* Send the command */ + flags = VCHI_FLAGS_BLOCK_UNTIL_QUEUED; + status = vchi_msg_queue( + instance->vchi_handle[0], + cmd->msg, cmd->length, + flags, NULL); + if (status) { + pr_err("%s: failed to queue message (%d)", + __func__, status); + } + + /* If no reply is needed then we're done */ + if (!cmd->wait) { + mutex_lock(&instance->lock); + list_del(&cmd->head); + mutex_unlock(&instance->lock); + vc_vchi_cmd_delete(instance, cmd); + continue; + } + + if (status) { + up(&cmd->sema); + continue; + } + + } while (1); + + while (!vchi_msg_peek + (instance->vchi_handle[0], (void **)&reply, + &reply_len, VCHI_FLAGS_NONE)) { + mutex_lock(&instance->lock); + list_for_each_entry(cmd, &instance->rsp_list, + head) { + if (cmd->id == reply->trans_id) + break; + } + mutex_unlock(&instance->lock); + + if (&cmd->head == &instance->rsp_list) { + pr_debug("%s: received response %u, throw away...", + __func__, reply->trans_id); + } else if (reply_len > sizeof(cmd->msg)) { + pr_err("%s: reply too big (%u) %u, throw away...", + __func__, reply_len, + reply->trans_id); + } else { + memcpy(cmd->msg, reply, reply_len); + up(&cmd->sema); + } + + vchi_msg_remove(instance->vchi_handle[0]); + } + + /* Go through the dead list and free them */ + mutex_lock(&instance->lock); + list_for_each_entry_safe(cmd, cmd_tmp, + &instance->dead_list, head) { + list_del(&cmd->head); + vc_vchi_cmd_delete(instance, cmd); + } + mutex_unlock(&instance->lock); + } + } + + return 0; +} + +static void vc_sm_vchi_callback(void *param, + const VCHI_CALLBACK_REASON_T reason, + void *msg_handle) +{ + struct sm_instance *instance = param; + + (void)msg_handle; + + switch (reason) { + case VCHI_CALLBACK_MSG_AVAILABLE: + up(&instance->io_sema); + break; + + case VCHI_CALLBACK_SERVICE_CLOSED: + pr_info("%s: service CLOSED!!", __func__); + default: + break; + } +} + +VC_VCHI_SM_HANDLE_T vc_vchi_sm_init(VCHI_INSTANCE_T vchi_instance, + VCHI_CONNECTION_T **vchi_connections, + uint32_t num_connections) +{ + uint32_t i; + struct sm_instance *instance; + int status; + + pr_debug("%s: start", __func__); + + if (num_connections > VCHI_MAX_NUM_CONNECTIONS) { + pr_err("%s: unsupported number of connections %u (max=%u)", + __func__, num_connections, VCHI_MAX_NUM_CONNECTIONS); + + goto err_null; + } + /* Allocate memory for this instance */ + instance = kzalloc(sizeof(*instance), GFP_KERNEL); + + /* Misc initialisations */ + mutex_init(&instance->lock); + sema_init(&instance->io_sema, 0); + INIT_LIST_HEAD(&instance->cmd_list); + INIT_LIST_HEAD(&instance->rsp_list); + INIT_LIST_HEAD(&instance->dead_list); + INIT_LIST_HEAD(&instance->free_list); + sema_init(&instance->free_sema, SM_MAX_NUM_CMD_RSP_BLKS); + mutex_init(&instance->free_lock); + for (i = 0; i < SM_MAX_NUM_CMD_RSP_BLKS; i++) { + sema_init(&instance->free_blk[i].sema, 0); + list_add(&instance->free_blk[i].head, &instance->free_list); + } + + /* Open the VCHI service connections */ + instance->num_connections = num_connections; + for (i = 0; i < num_connections; i++) { + SERVICE_CREATION_T params = { + VCHI_VERSION_EX(VC_SM_VER, VC_SM_MIN_VER), + VC_SM_SERVER_NAME, + vchi_connections[i], + 0, + 0, + vc_sm_vchi_callback, + instance, + 0, + 0, + 0, + }; + + status = vchi_service_open(vchi_instance, + ¶ms, &instance->vchi_handle[i]); + if (status) { + pr_err("%s: failed to open VCHI service (%d)", + __func__, status); + + goto err_close_services; + } + } + + /* Create the thread which takes care of all io to/from videoocore. */ + instance->io_thread = kthread_create(&vc_vchi_sm_videocore_io, + (void *)instance, "SMIO"); + if (instance->io_thread == NULL) { + pr_err("%s: failed to create SMIO thread", __func__); + + goto err_close_services; + } + set_user_nice(instance->io_thread, -10); + wake_up_process(instance->io_thread); + + pr_debug("%s: success - instance 0x%x", __func__, (unsigned)instance); + return instance; + +err_close_services: + for (i = 0; i < instance->num_connections; i++) { + if (instance->vchi_handle[i] != NULL) + vchi_service_close(instance->vchi_handle[i]); + } + kfree(instance); +err_null: + pr_debug("%s: FAILED", __func__); + return NULL; +} + +int vc_vchi_sm_stop(VC_VCHI_SM_HANDLE_T *handle) +{ + struct sm_instance *instance; + uint32_t i; + + if (handle == NULL) { + pr_err("%s: invalid pointer to handle %p", __func__, handle); + goto lock; + } + + if (*handle == NULL) { + pr_err("%s: invalid handle %p", __func__, *handle); + goto lock; + } + + instance = *handle; + + /* Close all VCHI service connections */ + for (i = 0; i < instance->num_connections; i++) { + int32_t success; + vchi_service_use(instance->vchi_handle[i]); + + success = vchi_service_close(instance->vchi_handle[i]); + } + + kfree(instance); + + *handle = NULL; + return 0; + +lock: + return -EINVAL; +} + +int vc_vchi_sm_send_msg(VC_VCHI_SM_HANDLE_T handle, + VC_SM_MSG_TYPE msg_id, + void *msg, uint32_t msg_size, + void *result, uint32_t result_size, + uint32_t *cur_trans_id, uint8_t wait_reply) +{ + int status = 0; + struct sm_instance *instance = handle; + struct sm_cmd_rsp_blk *cmd_blk; + + if (handle == NULL) { + pr_err("%s: invalid handle", __func__); + return -EINVAL; + } + if (msg == NULL) { + pr_err("%s: invalid msg pointer", __func__); + return -EINVAL; + } + + cmd_blk = + vc_vchi_cmd_create(instance, msg_id, msg, msg_size, wait_reply); + if (cmd_blk == NULL) { + pr_err("[%s]: failed to allocate global tracking resource", + __func__); + return -ENOMEM; + } + + if (cur_trans_id != NULL) + *cur_trans_id = cmd_blk->id; + + mutex_lock(&instance->lock); + list_add_tail(&cmd_blk->head, &instance->cmd_list); + mutex_unlock(&instance->lock); + up(&instance->io_sema); + + if (!wait_reply) + /* We're done */ + return 0; + + /* Wait for the response */ + if (down_interruptible(&cmd_blk->sema)) { + mutex_lock(&instance->lock); + if (!cmd_blk->sent) { + list_del(&cmd_blk->head); + mutex_unlock(&instance->lock); + vc_vchi_cmd_delete(instance, cmd_blk); + return -ENXIO; + } + mutex_unlock(&instance->lock); + + mutex_lock(&instance->lock); + list_move(&cmd_blk->head, &instance->dead_list); + mutex_unlock(&instance->lock); + up(&instance->io_sema); + return -EINTR; /* We're done */ + } + + if (result && result_size) { + memcpy(result, cmd_blk->msg, result_size); + } else { + VC_SM_RESULT_T *res = (VC_SM_RESULT_T *) cmd_blk->msg; + status = (res->success == 0) ? 0 : -ENXIO; + } + + mutex_lock(&instance->lock); + list_del(&cmd_blk->head); + mutex_unlock(&instance->lock); + vc_vchi_cmd_delete(instance, cmd_blk); + return status; +} + +int vc_vchi_sm_alloc(VC_VCHI_SM_HANDLE_T handle, VC_SM_ALLOC_T *msg, + VC_SM_ALLOC_RESULT_T *result, uint32_t *cur_trans_id) +{ + return vc_vchi_sm_send_msg(handle, VC_SM_MSG_TYPE_ALLOC, + msg, sizeof(*msg), result, sizeof(*result), + cur_trans_id, 1); +} + +int vc_vchi_sm_free(VC_VCHI_SM_HANDLE_T handle, + VC_SM_FREE_T *msg, uint32_t *cur_trans_id) +{ + return vc_vchi_sm_send_msg(handle, VC_SM_MSG_TYPE_FREE, + msg, sizeof(*msg), 0, 0, cur_trans_id, 0); +} + +int vc_vchi_sm_lock(VC_VCHI_SM_HANDLE_T handle, + VC_SM_LOCK_UNLOCK_T *msg, + VC_SM_LOCK_RESULT_T *result, uint32_t *cur_trans_id) +{ + return vc_vchi_sm_send_msg(handle, VC_SM_MSG_TYPE_LOCK, + msg, sizeof(*msg), result, sizeof(*result), + cur_trans_id, 1); +} + +int vc_vchi_sm_unlock(VC_VCHI_SM_HANDLE_T handle, + VC_SM_LOCK_UNLOCK_T *msg, + uint32_t *cur_trans_id, uint8_t wait_reply) +{ + return vc_vchi_sm_send_msg(handle, wait_reply ? + VC_SM_MSG_TYPE_UNLOCK : + VC_SM_MSG_TYPE_UNLOCK_NOANS, msg, + sizeof(*msg), 0, 0, cur_trans_id, + wait_reply); +} + +int vc_vchi_sm_resize(VC_VCHI_SM_HANDLE_T handle, VC_SM_RESIZE_T *msg, + uint32_t *cur_trans_id) +{ + return vc_vchi_sm_send_msg(handle, VC_SM_MSG_TYPE_RESIZE, + msg, sizeof(*msg), 0, 0, cur_trans_id, 1); +} + +int vc_vchi_sm_walk_alloc(VC_VCHI_SM_HANDLE_T handle) +{ + return vc_vchi_sm_send_msg(handle, VC_SM_MSG_TYPE_WALK_ALLOC, + 0, 0, 0, 0, 0, 0); +} + +int vc_vchi_sm_clean_up(VC_VCHI_SM_HANDLE_T handle, VC_SM_ACTION_CLEAN_T *msg) +{ + return vc_vchi_sm_send_msg(handle, VC_SM_MSG_TYPE_ACTION_CLEAN, + msg, sizeof(*msg), 0, 0, 0, 0); +} --- linux-raspi2-4.2.0.orig/drivers/char/broadcom/vc_sm/vmcs_sm.c +++ linux-raspi2-4.2.0/drivers/char/broadcom/vc_sm/vmcs_sm.c @@ -0,0 +1,3211 @@ +/***************************************************************************** +* Copyright 2011-2012 Broadcom Corporation. All rights reserved. +* +* Unless you and Broadcom execute a separate written software license +* agreement governing use of this software, this software is licensed to you +* under the terms of the GNU General Public License version 2, available at +* http://www.broadcom.com/licenses/GPLv2.php (the "GPL"). +* +* Notwithstanding the above, under no circumstances may you combine this +* software in any way with any other Broadcom software provided under a +* license other than the GPL, without Broadcom's express prior written +* consent. +*****************************************************************************/ + +/* ---- Include Files ----------------------------------------------------- */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "vchiq_connected.h" +#include "vc_vchi_sm.h" + +#include +#include "vc_sm_knl.h" + +/* ---- Private Constants and Types --------------------------------------- */ + +#define DEVICE_NAME "vcsm" +#define DEVICE_MINOR 0 + +#define VC_SM_DIR_ROOT_NAME "vc-smem" +#define VC_SM_DIR_ALLOC_NAME "alloc" +#define VC_SM_STATE "state" +#define VC_SM_STATS "statistics" +#define VC_SM_RESOURCES "resources" +#define VC_SM_DEBUG "debug" +#define VC_SM_WRITE_BUF_SIZE 128 + +/* Statistics tracked per resource and globally. +*/ +enum SM_STATS_T { + /* Attempt. */ + ALLOC, + FREE, + LOCK, + UNLOCK, + MAP, + FLUSH, + INVALID, + + END_ATTEMPT, + + /* Failure. */ + ALLOC_FAIL, + FREE_FAIL, + LOCK_FAIL, + UNLOCK_FAIL, + MAP_FAIL, + FLUSH_FAIL, + INVALID_FAIL, + + END_ALL, + +}; + +static const char *const sm_stats_human_read[] = { + "Alloc", + "Free", + "Lock", + "Unlock", + "Map", + "Cache Flush", + "Cache Invalidate", +}; + +typedef int (*VC_SM_SHOW) (struct seq_file *s, void *v); +struct SM_PDE_T { + VC_SM_SHOW show; /* Debug fs function hookup. */ + struct dentry *dir_entry; /* Debug fs directory entry. */ + void *priv_data; /* Private data */ + +}; + +/* Single resource allocation tracked for all devices. +*/ +struct sm_mmap { + struct list_head map_list; /* Linked list of maps. */ + + struct SM_RESOURCE_T *resource; /* Pointer to the resource. */ + + pid_t res_pid; /* PID owning that resource. */ + unsigned int res_vc_hdl; /* Resource handle (videocore). */ + unsigned int res_usr_hdl; /* Resource handle (user). */ + + long unsigned int res_addr; /* Mapped virtual address. */ + struct vm_area_struct *vma; /* VM area for this mapping. */ + unsigned int ref_count; /* Reference count to this vma. */ + + /* Used to link maps associated with a resource. */ + struct list_head resource_map_list; +}; + +/* Single resource allocation tracked for each opened device. +*/ +struct SM_RESOURCE_T { + struct list_head resource_list; /* List of resources. */ + struct list_head global_resource_list; /* Global list of resources. */ + + pid_t pid; /* PID owning that resource. */ + uint32_t res_guid; /* Unique identifier. */ + uint32_t lock_count; /* Lock count for this resource. */ + uint32_t ref_count; /* Ref count for this resource. */ + + uint32_t res_handle; /* Resource allocation handle. */ + void *res_base_mem; /* Resource base memory address. */ + uint32_t res_size; /* Resource size allocated. */ + enum vmcs_sm_cache_e res_cached; /* Resource cache type. */ + struct SM_RESOURCE_T *res_shared; /* Shared resource */ + + enum SM_STATS_T res_stats[END_ALL]; /* Resource statistics. */ + + uint8_t map_count; /* Counter of mappings for this resource. */ + struct list_head map_list; /* Maps associated with a resource. */ + + struct SM_PRIV_DATA_T *private; +}; + +/* Private file data associated with each opened device. +*/ +struct SM_PRIV_DATA_T { + struct list_head resource_list; /* List of resources. */ + + pid_t pid; /* PID of creator. */ + + struct dentry *dir_pid; /* Debug fs entries root. */ + struct SM_PDE_T dir_stats; /* Debug fs entries statistics sub-tree. */ + struct SM_PDE_T dir_res; /* Debug fs resource sub-tree. */ + + int restart_sys; /* Tracks restart on interrupt. */ + VC_SM_MSG_TYPE int_action; /* Interrupted action. */ + uint32_t int_trans_id; /* Interrupted transaction. */ + +}; + +/* Global state information. +*/ +struct SM_STATE_T { + VC_VCHI_SM_HANDLE_T sm_handle; /* Handle for videocore service. */ + struct dentry *dir_root; /* Debug fs entries root. */ + struct dentry *dir_alloc; /* Debug fs entries allocations. */ + struct SM_PDE_T dir_stats; /* Debug fs entries statistics sub-tree. */ + struct SM_PDE_T dir_state; /* Debug fs entries state sub-tree. */ + struct dentry *debug; /* Debug fs entries debug. */ + + struct mutex map_lock; /* Global map lock. */ + struct list_head map_list; /* List of maps. */ + struct list_head resource_list; /* List of resources. */ + + enum SM_STATS_T deceased[END_ALL]; /* Natural termination stats. */ + enum SM_STATS_T terminated[END_ALL]; /* Forced termination stats. */ + uint32_t res_deceased_cnt; /* Natural termination counter. */ + uint32_t res_terminated_cnt; /* Forced termination counter. */ + + struct cdev sm_cdev; /* Device. */ + dev_t sm_devid; /* Device identifier. */ + struct class *sm_class; /* Class. */ + struct device *sm_dev; /* Device. */ + + struct SM_PRIV_DATA_T *data_knl; /* Kernel internal data tracking. */ + + struct mutex lock; /* Global lock. */ + uint32_t guid; /* GUID (next) tracker. */ + +}; + +/* ---- Private Variables ----------------------------------------------- */ + +static struct SM_STATE_T *sm_state; +static int sm_inited; + +static const char *const sm_cache_map_vector[] = { + "(null)", + "host", + "videocore", + "host+videocore", +}; + +/* ---- Private Function Prototypes -------------------------------------- */ + +/* ---- Private Functions ------------------------------------------------ */ + +static inline unsigned vcaddr_to_pfn(unsigned long vc_addr) +{ + unsigned long pfn = vc_addr & 0x3FFFFFFF; + pfn += mm_vc_mem_phys_addr; + pfn >>= PAGE_SHIFT; + return pfn; +} + +/* Carries over to the state statistics the statistics once owned by a deceased +** resource. +*/ +static void vc_sm_resource_deceased(struct SM_RESOURCE_T *p_res, int terminated) +{ + if (sm_state != NULL) { + if (p_res != NULL) { + int ix; + + if (terminated) + sm_state->res_terminated_cnt++; + else + sm_state->res_deceased_cnt++; + + for (ix = 0; ix < END_ALL; ix++) { + if (terminated) + sm_state->terminated[ix] += + p_res->res_stats[ix]; + else + sm_state->deceased[ix] += + p_res->res_stats[ix]; + } + } + } +} + +/* Fetch a videocore handle corresponding to a mapping of the pid+address +** returns 0 (ie NULL) if no such handle exists in the global map. +*/ +static unsigned int vmcs_sm_vc_handle_from_pid_and_address(unsigned int pid, + unsigned int addr) +{ + struct sm_mmap *map = NULL; + unsigned int handle = 0; + + if (!sm_state || addr == 0) + goto out; + + mutex_lock(&(sm_state->map_lock)); + + /* Lookup the resource. + */ + if (!list_empty(&sm_state->map_list)) { + list_for_each_entry(map, &sm_state->map_list, map_list) { + if (map->res_pid != pid || map->res_addr != addr) + continue; + + pr_debug("[%s]: global map %p (pid %u, addr %lx) -> vc-hdl %x (usr-hdl %x)\n", + __func__, map, map->res_pid, map->res_addr, + map->res_vc_hdl, map->res_usr_hdl); + + handle = map->res_vc_hdl; + break; + } + } + + mutex_unlock(&(sm_state->map_lock)); + +out: + /* Use a debug log here as it may be a valid situation that we query + ** for something that is not mapped, we do not want a kernel log each + ** time around. + ** + ** There are other error log that would pop up accordingly if someone + ** subsequently tries to use something invalid after being told not to + ** use it... + */ + if (handle == 0) { + pr_debug("[%s]: not a valid map (pid %u, addr %x)\n", + __func__, pid, addr); + } + + return handle; +} + +/* Fetch a user handle corresponding to a mapping of the pid+address +** returns 0 (ie NULL) if no such handle exists in the global map. +*/ +static unsigned int vmcs_sm_usr_handle_from_pid_and_address(unsigned int pid, + unsigned int addr) +{ + struct sm_mmap *map = NULL; + unsigned int handle = 0; + + if (!sm_state || addr == 0) + goto out; + + mutex_lock(&(sm_state->map_lock)); + + /* Lookup the resource. + */ + if (!list_empty(&sm_state->map_list)) { + list_for_each_entry(map, &sm_state->map_list, map_list) { + if (map->res_pid != pid || map->res_addr != addr) + continue; + + pr_debug("[%s]: global map %p (pid %u, addr %lx) -> usr-hdl %x (vc-hdl %x)\n", + __func__, map, map->res_pid, map->res_addr, + map->res_usr_hdl, map->res_vc_hdl); + + handle = map->res_usr_hdl; + break; + } + } + + mutex_unlock(&(sm_state->map_lock)); + +out: + /* Use a debug log here as it may be a valid situation that we query + * for something that is not mapped yet. + * + * There are other error log that would pop up accordingly if someone + * subsequently tries to use something invalid after being told not to + * use it... + */ + if (handle == 0) + pr_debug("[%s]: not a valid map (pid %u, addr %x)\n", + __func__, pid, addr); + + return handle; +} + +#if defined(DO_NOT_USE) +/* Fetch an address corresponding to a mapping of the pid+handle +** returns 0 (ie NULL) if no such address exists in the global map. +*/ +static unsigned int vmcs_sm_usr_address_from_pid_and_vc_handle(unsigned int pid, + unsigned int hdl) +{ + struct sm_mmap *map = NULL; + unsigned int addr = 0; + + if (sm_state == NULL || hdl == 0) + goto out; + + mutex_lock(&(sm_state->map_lock)); + + /* Lookup the resource. + */ + if (!list_empty(&sm_state->map_list)) { + list_for_each_entry(map, &sm_state->map_list, map_list) { + if (map->res_pid != pid || map->res_vc_hdl != hdl) + continue; + + pr_debug("[%s]: global map %p (pid %u, vc-hdl %x, usr-hdl %x) -> addr %lx\n", + __func__, map, map->res_pid, map->res_vc_hdl, + map->res_usr_hdl, map->res_addr); + + addr = map->res_addr; + break; + } + } + + mutex_unlock(&(sm_state->map_lock)); + +out: + /* Use a debug log here as it may be a valid situation that we query + ** for something that is not mapped, we do not want a kernel log each + ** time around. + ** + ** There are other error log that would pop up accordingly if someone + ** subsequently tries to use something invalid after being told not to + ** use it... + */ + if (addr == 0) + pr_debug("[%s]: not a valid map (pid %u, hdl %x)\n", + __func__, pid, hdl); + + return addr; +} +#endif + +/* Fetch an address corresponding to a mapping of the pid+handle +** returns 0 (ie NULL) if no such address exists in the global map. +*/ +static unsigned int vmcs_sm_usr_address_from_pid_and_usr_handle(unsigned int + pid, + unsigned int + hdl) +{ + struct sm_mmap *map = NULL; + unsigned int addr = 0; + + if (sm_state == NULL || hdl == 0) + goto out; + + mutex_lock(&(sm_state->map_lock)); + + /* Lookup the resource. + */ + if (!list_empty(&sm_state->map_list)) { + list_for_each_entry(map, &sm_state->map_list, map_list) { + if (map->res_pid != pid || map->res_usr_hdl != hdl) + continue; + + pr_debug("[%s]: global map %p (pid %u, vc-hdl %x, usr-hdl %x) -> addr %lx\n", + __func__, map, map->res_pid, map->res_vc_hdl, + map->res_usr_hdl, map->res_addr); + + addr = map->res_addr; + break; + } + } + + mutex_unlock(&(sm_state->map_lock)); + +out: + /* Use a debug log here as it may be a valid situation that we query + * for something that is not mapped, we do not want a kernel log each + * time around. + * + * There are other error log that would pop up accordingly if someone + * subsequently tries to use something invalid after being told not to + * use it... + */ + if (addr == 0) + pr_debug("[%s]: not a valid map (pid %u, hdl %x)\n", __func__, + pid, hdl); + + return addr; +} + +/* Adds a resource mapping to the global data list. +*/ +static void vmcs_sm_add_map(struct SM_STATE_T *state, + struct SM_RESOURCE_T *resource, struct sm_mmap *map) +{ + mutex_lock(&(state->map_lock)); + + /* Add to the global list of mappings + */ + list_add(&map->map_list, &state->map_list); + + /* Add to the list of mappings for this resource + */ + list_add(&map->resource_map_list, &resource->map_list); + resource->map_count++; + + mutex_unlock(&(state->map_lock)); + + pr_debug("[%s]: added map %p (pid %u, vc-hdl %x, usr-hdl %x, addr %lx)\n", + __func__, map, map->res_pid, map->res_vc_hdl, + map->res_usr_hdl, map->res_addr); +} + +/* Removes a resource mapping from the global data list. +*/ +static void vmcs_sm_remove_map(struct SM_STATE_T *state, + struct SM_RESOURCE_T *resource, + struct sm_mmap *map) +{ + mutex_lock(&(state->map_lock)); + + /* Remove from the global list of mappings + */ + list_del(&map->map_list); + + /* Remove from the list of mapping for this resource + */ + list_del(&map->resource_map_list); + if (resource->map_count > 0) + resource->map_count--; + + mutex_unlock(&(state->map_lock)); + + pr_debug("[%s]: removed map %p (pid %d, vc-hdl %x, usr-hdl %x, addr %lx)\n", + __func__, map, map->res_pid, map->res_vc_hdl, map->res_usr_hdl, + map->res_addr); + + kfree(map); +} + +/* Read callback for the global state proc entry. +*/ +static int vc_sm_global_state_show(struct seq_file *s, void *v) +{ + struct sm_mmap *map = NULL; + int map_count = 0; + + if (sm_state == NULL) + return 0; + + seq_printf(s, "\nVC-ServiceHandle 0x%x\n", + (unsigned int)sm_state->sm_handle); + + /* Log all applicable mapping(s). + */ + + mutex_lock(&(sm_state->map_lock)); + + if (!list_empty(&sm_state->map_list)) { + list_for_each_entry(map, &sm_state->map_list, map_list) { + map_count++; + + seq_printf(s, "\nMapping 0x%x\n", + (unsigned int)map); + seq_printf(s, " TGID %u\n", + map->res_pid); + seq_printf(s, " VC-HDL 0x%x\n", + map->res_vc_hdl); + seq_printf(s, " USR-HDL 0x%x\n", + map->res_usr_hdl); + seq_printf(s, " USR-ADDR 0x%lx\n", + map->res_addr); + } + } + + mutex_unlock(&(sm_state->map_lock)); + seq_printf(s, "\n\nTotal map count: %d\n\n", map_count); + + return 0; +} + +static int vc_sm_global_statistics_show(struct seq_file *s, void *v) +{ + int ix; + + /* Global state tracked statistics. + */ + if (sm_state != NULL) { + seq_puts(s, "\nDeceased Resources Statistics\n"); + + seq_printf(s, "\nNatural Cause (%u occurences)\n", + sm_state->res_deceased_cnt); + for (ix = 0; ix < END_ATTEMPT; ix++) { + if (sm_state->deceased[ix] > 0) { + seq_printf(s, " %u\t%s\n", + sm_state->deceased[ix], + sm_stats_human_read[ix]); + } + } + seq_puts(s, "\n"); + for (ix = 0; ix < END_ATTEMPT; ix++) { + if (sm_state->deceased[ix + END_ATTEMPT] > 0) { + seq_printf(s, " %u\tFAILED %s\n", + sm_state->deceased[ix + END_ATTEMPT], + sm_stats_human_read[ix]); + } + } + + seq_printf(s, "\nForcefull (%u occurences)\n", + sm_state->res_terminated_cnt); + for (ix = 0; ix < END_ATTEMPT; ix++) { + if (sm_state->terminated[ix] > 0) { + seq_printf(s, " %u\t%s\n", + sm_state->terminated[ix], + sm_stats_human_read[ix]); + } + } + seq_puts(s, "\n"); + for (ix = 0; ix < END_ATTEMPT; ix++) { + if (sm_state->terminated[ix + END_ATTEMPT] > 0) { + seq_printf(s, " %u\tFAILED %s\n", + sm_state->terminated[ix + + END_ATTEMPT], + sm_stats_human_read[ix]); + } + } + } + + return 0; +} + +#if 0 +/* Read callback for the statistics proc entry. +*/ +static int vc_sm_statistics_show(struct seq_file *s, void *v) +{ + int ix; + struct SM_PRIV_DATA_T *file_data; + struct SM_RESOURCE_T *resource; + int res_count = 0; + struct SM_PDE_T *p_pde; + + p_pde = (struct SM_PDE_T *)(s->private); + file_data = (struct SM_PRIV_DATA_T *)(p_pde->priv_data); + + if (file_data == NULL) + return 0; + + /* Per process statistics. + */ + + seq_printf(s, "\nStatistics for TGID %d\n", file_data->pid); + + mutex_lock(&(sm_state->map_lock)); + + if (!list_empty(&file_data->resource_list)) { + list_for_each_entry(resource, &file_data->resource_list, + resource_list) { + res_count++; + + seq_printf(s, "\nGUID: 0x%x\n\n", + resource->res_guid); + for (ix = 0; ix < END_ATTEMPT; ix++) { + if (resource->res_stats[ix] > 0) { + seq_printf(s, + " %u\t%s\n", + resource->res_stats[ix], + sm_stats_human_read[ix]); + } + } + seq_puts(s, "\n"); + for (ix = 0; ix < END_ATTEMPT; ix++) { + if (resource->res_stats[ix + END_ATTEMPT] > 0) { + seq_printf(s, + " %u\tFAILED %s\n", + resource->res_stats[ + ix + END_ATTEMPT], + sm_stats_human_read[ix]); + } + } + } + } + + mutex_unlock(&(sm_state->map_lock)); + + seq_printf(s, "\nResources Count %d\n", res_count); + + return 0; +} +#endif + +#if 0 +/* Read callback for the allocation proc entry. */ +static int vc_sm_alloc_show(struct seq_file *s, void *v) +{ + struct SM_PRIV_DATA_T *file_data; + struct SM_RESOURCE_T *resource; + int alloc_count = 0; + struct SM_PDE_T *p_pde; + + p_pde = (struct SM_PDE_T *)(s->private); + file_data = (struct SM_PRIV_DATA_T *)(p_pde->priv_data); + + if (!file_data) + return 0; + + /* Per process statistics. */ + seq_printf(s, "\nAllocation for TGID %d\n", file_data->pid); + + mutex_lock(&(sm_state->map_lock)); + + if (!list_empty(&file_data->resource_list)) { + list_for_each_entry(resource, &file_data->resource_list, + resource_list) { + alloc_count++; + + seq_printf(s, "\nGUID: 0x%x\n", + resource->res_guid); + seq_printf(s, "Lock Count: %u\n", + resource->lock_count); + seq_printf(s, "Mapped: %s\n", + (resource->map_count ? "yes" : "no")); + seq_printf(s, "VC-handle: 0x%x\n", + resource->res_handle); + seq_printf(s, "VC-address: 0x%p\n", + resource->res_base_mem); + seq_printf(s, "VC-size (bytes): %u\n", + resource->res_size); + seq_printf(s, "Cache: %s\n", + sm_cache_map_vector[resource->res_cached]); + } + } + + mutex_unlock(&(sm_state->map_lock)); + + seq_printf(s, "\n\nTotal allocation count: %d\n\n", alloc_count); + + return 0; +} +#endif + +static int vc_sm_seq_file_show(struct seq_file *s, void *v) +{ + struct SM_PDE_T *sm_pde; + + sm_pde = (struct SM_PDE_T *)(s->private); + + if (sm_pde && sm_pde->show) + sm_pde->show(s, v); + + return 0; +} + +static int vc_sm_single_open(struct inode *inode, struct file *file) +{ + return single_open(file, vc_sm_seq_file_show, inode->i_private); +} + +static const struct file_operations vc_sm_debug_fs_fops = { + .open = vc_sm_single_open, + .read = seq_read, + .llseek = seq_lseek, + .release = single_release, +}; + +/* Adds a resource to the private data list which tracks all the allocated +** data. +*/ +static void vmcs_sm_add_resource(struct SM_PRIV_DATA_T *privdata, + struct SM_RESOURCE_T *resource) +{ + mutex_lock(&(sm_state->map_lock)); + list_add(&resource->resource_list, &privdata->resource_list); + list_add(&resource->global_resource_list, &sm_state->resource_list); + mutex_unlock(&(sm_state->map_lock)); + + pr_debug("[%s]: added resource %p (base addr %p, hdl %x, size %u, cache %u)\n", + __func__, resource, resource->res_base_mem, + resource->res_handle, resource->res_size, resource->res_cached); +} + +/* Locates a resource and acquire a reference on it. +** The resource won't be deleted while there is a reference on it. +*/ +static struct SM_RESOURCE_T *vmcs_sm_acquire_resource(struct SM_PRIV_DATA_T + *private, + unsigned int res_guid) +{ + struct SM_RESOURCE_T *resource, *ret = NULL; + + mutex_lock(&(sm_state->map_lock)); + + list_for_each_entry(resource, &private->resource_list, resource_list) { + if (resource->res_guid != res_guid) + continue; + + pr_debug("[%s]: located resource %p (guid: %x, base addr %p, hdl %x, size %u, cache %u)\n", + __func__, resource, resource->res_guid, + resource->res_base_mem, resource->res_handle, + resource->res_size, resource->res_cached); + resource->ref_count++; + ret = resource; + break; + } + + mutex_unlock(&(sm_state->map_lock)); + + return ret; +} + +/* Locates a resource and acquire a reference on it. +** The resource won't be deleted while there is a reference on it. +*/ +static struct SM_RESOURCE_T *vmcs_sm_acquire_first_resource( + struct SM_PRIV_DATA_T *private) +{ + struct SM_RESOURCE_T *resource, *ret = NULL; + + mutex_lock(&(sm_state->map_lock)); + + list_for_each_entry(resource, &private->resource_list, resource_list) { + pr_debug("[%s]: located resource %p (guid: %x, base addr %p, hdl %x, size %u, cache %u)\n", + __func__, resource, resource->res_guid, + resource->res_base_mem, resource->res_handle, + resource->res_size, resource->res_cached); + resource->ref_count++; + ret = resource; + break; + } + + mutex_unlock(&(sm_state->map_lock)); + + return ret; +} + +/* Locates a resource and acquire a reference on it. +** The resource won't be deleted while there is a reference on it. +*/ +static struct SM_RESOURCE_T *vmcs_sm_acquire_global_resource(unsigned int + res_guid) +{ + struct SM_RESOURCE_T *resource, *ret = NULL; + + mutex_lock(&(sm_state->map_lock)); + + list_for_each_entry(resource, &sm_state->resource_list, + global_resource_list) { + if (resource->res_guid != res_guid) + continue; + + pr_debug("[%s]: located resource %p (guid: %x, base addr %p, hdl %x, size %u, cache %u)\n", + __func__, resource, resource->res_guid, + resource->res_base_mem, resource->res_handle, + resource->res_size, resource->res_cached); + resource->ref_count++; + ret = resource; + break; + } + + mutex_unlock(&(sm_state->map_lock)); + + return ret; +} + +/* Release a previously acquired resource. +** The resource will be deleted when its refcount reaches 0. +*/ +static void vmcs_sm_release_resource(struct SM_RESOURCE_T *resource, int force) +{ + struct SM_PRIV_DATA_T *private = resource->private; + struct sm_mmap *map, *map_tmp; + struct SM_RESOURCE_T *res_tmp; + int ret; + + mutex_lock(&(sm_state->map_lock)); + + if (--resource->ref_count) { + if (force) + pr_err("[%s]: resource %p in use\n", __func__, resource); + + mutex_unlock(&(sm_state->map_lock)); + return; + } + + /* Time to free the resource. Start by removing it from the list */ + list_del(&resource->resource_list); + list_del(&resource->global_resource_list); + + /* Walk the global resource list, find out if the resource is used + * somewhere else. In which case we don't want to delete it. + */ + list_for_each_entry(res_tmp, &sm_state->resource_list, + global_resource_list) { + if (res_tmp->res_handle == resource->res_handle) { + resource->res_handle = 0; + break; + } + } + + mutex_unlock(&(sm_state->map_lock)); + + pr_debug("[%s]: freeing data - guid %x, hdl %x, base address %p\n", + __func__, resource->res_guid, resource->res_handle, + resource->res_base_mem); + resource->res_stats[FREE]++; + + /* Make sure the resource we're removing is unmapped first */ + if (resource->map_count && !list_empty(&resource->map_list)) { + down_write(¤t->mm->mmap_sem); + list_for_each_entry_safe(map, map_tmp, &resource->map_list, + resource_map_list) { + ret = + do_munmap(current->mm, map->res_addr, + resource->res_size); + if (ret) { + pr_err("[%s]: could not unmap resource %p\n", + __func__, resource); + } + } + up_write(¤t->mm->mmap_sem); + } + + /* Free up the videocore allocated resource. + */ + if (resource->res_handle) { + VC_SM_FREE_T free = { + resource->res_handle, resource->res_base_mem + }; + int status = vc_vchi_sm_free(sm_state->sm_handle, &free, + &private->int_trans_id); + if (status != 0 && status != -EINTR) { + pr_err("[%s]: failed to free memory on videocore (status: %u, trans_id: %u)\n", + __func__, status, private->int_trans_id); + resource->res_stats[FREE_FAIL]++; + ret = -EPERM; + } + } + + /* Free up the shared resource. + */ + if (resource->res_shared) + vmcs_sm_release_resource(resource->res_shared, 0); + + /* Free up the local resource tracking this allocation. + */ + vc_sm_resource_deceased(resource, force); + kfree(resource); +} + +/* Dump the map table for the driver. If process is -1, dumps the whole table, +** if process is a valid pid (non -1) dump only the entries associated with the +** pid of interest. +*/ +static void vmcs_sm_host_walk_map_per_pid(int pid) +{ + struct sm_mmap *map = NULL; + + /* Make sure the device was started properly. + */ + if (sm_state == NULL) { + pr_err("[%s]: invalid device\n", __func__); + return; + } + + mutex_lock(&(sm_state->map_lock)); + + /* Log all applicable mapping(s). + */ + if (!list_empty(&sm_state->map_list)) { + list_for_each_entry(map, &sm_state->map_list, map_list) { + if (pid == -1 || map->res_pid == pid) { + pr_info("[%s]: tgid: %u - vc-hdl: %x, usr-hdl: %x, usr-addr: %lx\n", + __func__, map->res_pid, map->res_vc_hdl, + map->res_usr_hdl, map->res_addr); + } + } + } + + mutex_unlock(&(sm_state->map_lock)); + + return; +} + +/* Dump the allocation table from host side point of view. This only dumps the +** data allocated for this process/device referenced by the file_data. +*/ +static void vmcs_sm_host_walk_alloc(struct SM_PRIV_DATA_T *file_data) +{ + struct SM_RESOURCE_T *resource = NULL; + + /* Make sure the device was started properly. + */ + if ((sm_state == NULL) || (file_data == NULL)) { + pr_err("[%s]: invalid device\n", __func__); + return; + } + + mutex_lock(&(sm_state->map_lock)); + + if (!list_empty(&file_data->resource_list)) { + list_for_each_entry(resource, &file_data->resource_list, + resource_list) { + pr_info("[%s]: guid: %x - hdl: %x, vc-mem: %p, size: %u, cache: %u\n", + __func__, resource->res_guid, resource->res_handle, + resource->res_base_mem, resource->res_size, + resource->res_cached); + } + } + + mutex_unlock(&(sm_state->map_lock)); + + return; +} + +/* Create support for private data tracking. +*/ +static struct SM_PRIV_DATA_T *vc_sm_create_priv_data(pid_t id) +{ + char alloc_name[32]; + struct SM_PRIV_DATA_T *file_data = NULL; + + /* Allocate private structure. */ + file_data = kzalloc(sizeof(*file_data), GFP_KERNEL); + + if (!file_data) { + pr_err("[%s]: cannot allocate file data\n", __func__); + goto out; + } + + snprintf(alloc_name, sizeof(alloc_name), "%d", id); + + INIT_LIST_HEAD(&file_data->resource_list); + file_data->pid = id; + file_data->dir_pid = debugfs_create_dir(alloc_name, + sm_state->dir_alloc); +#if 0 + /* TODO: fix this to support querying statistics per pid */ + + if (IS_ERR_OR_NULL(file_data->dir_pid)) { + file_data->dir_pid = NULL; + } else { + struct dentry *dir_entry; + + dir_entry = debugfs_create_file(VC_SM_RESOURCES, S_IRUGO, + file_data->dir_pid, file_data, + vc_sm_debug_fs_fops); + + file_data->dir_res.dir_entry = dir_entry; + file_data->dir_res.priv_data = file_data; + file_data->dir_res.show = &vc_sm_alloc_show; + + dir_entry = debugfs_create_file(VC_SM_STATS, S_IRUGO, + file_data->dir_pid, file_data, + vc_sm_debug_fs_fops); + + file_data->dir_res.dir_entry = dir_entry; + file_data->dir_res.priv_data = file_data; + file_data->dir_res.show = &vc_sm_statistics_show; + } + pr_debug("[%s]: private data allocated %p\n", __func__, file_data); + +#endif +out: + return file_data; +} + +/* Open the device. Creates a private state to help track all allocation +** associated with this device. +*/ +static int vc_sm_open(struct inode *inode, struct file *file) +{ + int ret = 0; + + /* Make sure the device was started properly. + */ + if (!sm_state) { + pr_err("[%s]: invalid device\n", __func__); + ret = -EPERM; + goto out; + } + + file->private_data = vc_sm_create_priv_data(current->tgid); + if (file->private_data == NULL) { + pr_err("[%s]: failed to create data tracker\n", __func__); + + ret = -ENOMEM; + goto out; + } + +out: + return ret; +} + +/* Close the device. Free up all resources still associated with this device +** at the time. +*/ +static int vc_sm_release(struct inode *inode, struct file *file) +{ + struct SM_PRIV_DATA_T *file_data = + (struct SM_PRIV_DATA_T *)file->private_data; + struct SM_RESOURCE_T *resource; + int ret = 0; + + /* Make sure the device was started properly. + */ + if (sm_state == NULL || file_data == NULL) { + pr_err("[%s]: invalid device\n", __func__); + ret = -EPERM; + goto out; + } + + pr_debug("[%s]: using private data %p\n", __func__, file_data); + + if (file_data->restart_sys == -EINTR) { + VC_SM_ACTION_CLEAN_T action_clean; + + pr_debug("[%s]: releasing following EINTR on %u (trans_id: %u) (likely due to signal)...\n", + __func__, file_data->int_action, + file_data->int_trans_id); + + action_clean.res_action = file_data->int_action; + action_clean.action_trans_id = file_data->int_trans_id; + + vc_vchi_sm_clean_up(sm_state->sm_handle, &action_clean); + } + + while ((resource = vmcs_sm_acquire_first_resource(file_data)) != NULL) { + vmcs_sm_release_resource(resource, 0); + vmcs_sm_release_resource(resource, 1); + } + + /* Remove the corresponding proc entry. */ + debugfs_remove_recursive(file_data->dir_pid); + + /* Terminate the private data. + */ + kfree(file_data); + +out: + return ret; +} + +static void vcsm_vma_open(struct vm_area_struct *vma) +{ + struct sm_mmap *map = (struct sm_mmap *)vma->vm_private_data; + + pr_debug("[%s]: virt %lx-%lx, pid %i, pfn %i\n", + __func__, vma->vm_start, vma->vm_end, (int)current->tgid, + (int)vma->vm_pgoff); + + map->ref_count++; +} + +static void vcsm_vma_close(struct vm_area_struct *vma) +{ + struct sm_mmap *map = (struct sm_mmap *)vma->vm_private_data; + + pr_debug("[%s]: virt %lx-%lx, pid %i, pfn %i\n", + __func__, vma->vm_start, vma->vm_end, (int)current->tgid, + (int)vma->vm_pgoff); + + map->ref_count--; + + /* Remove from the map table. + */ + if (map->ref_count == 0) + vmcs_sm_remove_map(sm_state, map->resource, map); +} + +static int vcsm_vma_fault(struct vm_area_struct *vma, struct vm_fault *vmf) +{ + struct sm_mmap *map = (struct sm_mmap *)vma->vm_private_data; + struct SM_RESOURCE_T *resource = map->resource; + pgoff_t page_offset; + unsigned long pfn; + int ret = 0; + + /* Lock the resource if necessary. + */ + if (!resource->lock_count) { + VC_SM_LOCK_UNLOCK_T lock_unlock; + VC_SM_LOCK_RESULT_T lock_result; + int status; + + lock_unlock.res_handle = resource->res_handle; + lock_unlock.res_mem = resource->res_base_mem; + + pr_debug("[%s]: attempt to lock data - hdl %x, base address %p\n", + __func__, lock_unlock.res_handle, lock_unlock.res_mem); + + /* Lock the videocore allocated resource. + */ + status = vc_vchi_sm_lock(sm_state->sm_handle, + &lock_unlock, &lock_result, 0); + if ((status != 0) || + ((status == 0) && (lock_result.res_mem == NULL))) { + pr_err("[%s]: failed to lock memory on videocore (status: %u)\n", + __func__, status); + resource->res_stats[LOCK_FAIL]++; + return VM_FAULT_SIGBUS; + } + + pfn = vcaddr_to_pfn((unsigned long)resource->res_base_mem); + outer_inv_range(__pfn_to_phys(pfn), + __pfn_to_phys(pfn) + resource->res_size); + + resource->res_stats[LOCK]++; + resource->lock_count++; + + /* Keep track of the new base memory. + */ + if ((lock_result.res_mem != NULL) && + (lock_result.res_old_mem != NULL) && + (lock_result.res_mem != lock_result.res_old_mem)) { + resource->res_base_mem = lock_result.res_mem; + } + } + + /* We don't use vmf->pgoff since that has the fake offset */ + page_offset = ((unsigned long)vmf->virtual_address - vma->vm_start); + pfn = (uint32_t)resource->res_base_mem & 0x3FFFFFFF; + pfn += mm_vc_mem_phys_addr; + pfn += page_offset; + pfn >>= PAGE_SHIFT; + + /* Finally, remap it */ + ret = vm_insert_pfn(vma, (unsigned long)vmf->virtual_address, pfn); + + switch (ret) { + case 0: + case -ERESTARTSYS: + return VM_FAULT_NOPAGE; + case -ENOMEM: + case -EAGAIN: + return VM_FAULT_OOM; + default: + return VM_FAULT_SIGBUS; + } +} + +static struct vm_operations_struct vcsm_vm_ops = { + .open = vcsm_vma_open, + .close = vcsm_vma_close, + .fault = vcsm_vma_fault, +}; + +/* Walks a VMA and clean each valid page from the cache */ +static void vcsm_vma_cache_clean_page_range(unsigned long addr, + unsigned long end) +{ + pgd_t *pgd; + pud_t *pud; + pmd_t *pmd; + pte_t *pte; + unsigned long pgd_next, pud_next, pmd_next; + + if (addr >= end) + return; + + /* Walk PGD */ + pgd = pgd_offset(current->mm, addr); + do { + pgd_next = pgd_addr_end(addr, end); + + if (pgd_none(*pgd) || pgd_bad(*pgd)) + continue; + + /* Walk PUD */ + pud = pud_offset(pgd, addr); + do { + pud_next = pud_addr_end(addr, pgd_next); + if (pud_none(*pud) || pud_bad(*pud)) + continue; + + /* Walk PMD */ + pmd = pmd_offset(pud, addr); + do { + pmd_next = pmd_addr_end(addr, pud_next); + if (pmd_none(*pmd) || pmd_bad(*pmd)) + continue; + + /* Walk PTE */ + pte = pte_offset_map(pmd, addr); + do { + if (pte_none(*pte) + || !pte_present(*pte)) + continue; + + /* Clean + invalidate */ + dmac_flush_range((const void *) addr, + (const void *) + (addr + PAGE_SIZE)); + + } while (pte++, addr += + PAGE_SIZE, addr != pmd_next); + pte_unmap(pte); + + } while (pmd++, addr = pmd_next, addr != pud_next); + + } while (pud++, addr = pud_next, addr != pgd_next); + } while (pgd++, addr = pgd_next, addr != end); +} + +/* Map an allocated data into something that the user space. +*/ +static int vc_sm_mmap(struct file *file, struct vm_area_struct *vma) +{ + int ret = 0; + struct SM_PRIV_DATA_T *file_data = + (struct SM_PRIV_DATA_T *)file->private_data; + struct SM_RESOURCE_T *resource = NULL; + struct sm_mmap *map = NULL; + + /* Make sure the device was started properly. + */ + if ((sm_state == NULL) || (file_data == NULL)) { + pr_err("[%s]: invalid device\n", __func__); + return -EPERM; + } + + pr_debug("[%s]: private data %p, guid %x\n", __func__, file_data, + ((unsigned int)vma->vm_pgoff << PAGE_SHIFT)); + + /* We lookup to make sure that the data we are being asked to mmap is + ** something that we allocated. + ** + ** We use the offset information as the key to tell us which resource + ** we are mapping. + */ + resource = vmcs_sm_acquire_resource(file_data, + ((unsigned int)vma->vm_pgoff << + PAGE_SHIFT)); + if (resource == NULL) { + pr_err("[%s]: failed to locate resource for guid %x\n", __func__, + ((unsigned int)vma->vm_pgoff << PAGE_SHIFT)); + return -ENOMEM; + } + + pr_debug("[%s]: guid %x, tgid %u, %u, %u\n", + __func__, resource->res_guid, current->tgid, resource->pid, + file_data->pid); + + /* Check permissions. + */ + if (resource->pid && (resource->pid != current->tgid)) { + pr_err("[%s]: current tgid %u != %u owner\n", + __func__, current->tgid, resource->pid); + ret = -EPERM; + goto error; + } + + /* Verify that what we are asked to mmap is proper. + */ + if (resource->res_size != (unsigned int)(vma->vm_end - vma->vm_start)) { + pr_err("[%s]: size inconsistency (resource: %u - mmap: %u)\n", + __func__, + resource->res_size, + (unsigned int)(vma->vm_end - vma->vm_start)); + + ret = -EINVAL; + goto error; + } + + /* Keep track of the tuple in the global resource list such that one + * can do a mapping lookup for address/memory handle. + */ + map = kzalloc(sizeof(*map), GFP_KERNEL); + if (map == NULL) { + pr_err("[%s]: failed to allocate global tracking resource\n", + __func__); + ret = -ENOMEM; + goto error; + } + + map->res_pid = current->tgid; + map->res_vc_hdl = resource->res_handle; + map->res_usr_hdl = resource->res_guid; + map->res_addr = (long unsigned int)vma->vm_start; + map->resource = resource; + map->vma = vma; + vmcs_sm_add_map(sm_state, resource, map); + + /* We are not actually mapping the pages, we just provide a fault + ** handler to allow pages to be mapped when accessed + */ + vma->vm_flags |= + VM_IO | VM_PFNMAP | VM_DONTCOPY | VM_DONTEXPAND; + vma->vm_ops = &vcsm_vm_ops; + vma->vm_private_data = map; + + /* vm_pgoff is the first PFN of the mapped memory */ + vma->vm_pgoff = (unsigned long)resource->res_base_mem & 0x3FFFFFFF; + vma->vm_pgoff += mm_vc_mem_phys_addr; + vma->vm_pgoff >>= PAGE_SHIFT; + + if ((resource->res_cached == VMCS_SM_CACHE_NONE) || + (resource->res_cached == VMCS_SM_CACHE_VC)) { + /* Allocated non host cached memory, honour it. + */ + vma->vm_page_prot = pgprot_noncached(vma->vm_page_prot); + } + + pr_debug("[%s]: resource %p (guid %x) - cnt %u, base address %p, handle %x, size %u (%u), cache %u\n", + __func__, + resource, resource->res_guid, resource->lock_count, + resource->res_base_mem, resource->res_handle, + resource->res_size, (unsigned int)(vma->vm_end - vma->vm_start), + resource->res_cached); + + pr_debug("[%s]: resource %p (base address %p, handle %x) - map-count %d, usr-addr %x\n", + __func__, resource, resource->res_base_mem, + resource->res_handle, resource->map_count, + (unsigned int)vma->vm_start); + + vcsm_vma_open(vma); + resource->res_stats[MAP]++; + vmcs_sm_release_resource(resource, 0); + return 0; + +error: + resource->res_stats[MAP_FAIL]++; + vmcs_sm_release_resource(resource, 0); + return ret; +} + +/* Allocate a shared memory handle and block. +*/ +int vc_sm_ioctl_alloc(struct SM_PRIV_DATA_T *private, + struct vmcs_sm_ioctl_alloc *ioparam) +{ + int ret = 0; + int status; + struct SM_RESOURCE_T *resource; + VC_SM_ALLOC_T alloc = { 0 }; + VC_SM_ALLOC_RESULT_T result = { 0 }; + + /* Setup our allocation parameters */ + alloc.type = ((ioparam->cached == VMCS_SM_CACHE_VC) + || (ioparam->cached == + VMCS_SM_CACHE_BOTH)) ? VC_SM_ALLOC_CACHED : + VC_SM_ALLOC_NON_CACHED; + alloc.base_unit = ioparam->size; + alloc.num_unit = ioparam->num; + alloc.allocator = current->tgid; + /* Align to kernel page size */ + alloc.alignement = 4096; + /* Align the size to the kernel page size */ + alloc.base_unit = + (alloc.base_unit + alloc.alignement - 1) & ~(alloc.alignement - 1); + if (*ioparam->name) { + memcpy(alloc.name, ioparam->name, sizeof(alloc.name) - 1); + } else { + memcpy(alloc.name, VMCS_SM_RESOURCE_NAME_DEFAULT, + sizeof(VMCS_SM_RESOURCE_NAME_DEFAULT)); + } + + pr_debug("[%s]: attempt to allocate \"%s\" data - type %u, base %u (%u), num %u, alignement %u\n", + __func__, alloc.name, alloc.type, ioparam->size, + alloc.base_unit, alloc.num_unit, alloc.alignement); + + /* Allocate local resource to track this allocation. + */ + resource = kzalloc(sizeof(*resource), GFP_KERNEL); + if (!resource) { + ret = -ENOMEM; + goto error; + } + INIT_LIST_HEAD(&resource->map_list); + resource->ref_count++; + resource->pid = current->tgid; + + /* Allocate the videocore resource. + */ + status = vc_vchi_sm_alloc(sm_state->sm_handle, &alloc, &result, + &private->int_trans_id); + if (status == -EINTR) { + pr_debug("[%s]: requesting allocate memory action restart (trans_id: %u)\n", + __func__, private->int_trans_id); + ret = -ERESTARTSYS; + private->restart_sys = -EINTR; + private->int_action = VC_SM_MSG_TYPE_ALLOC; + goto error; + } else if (status != 0 || (status == 0 && result.res_mem == NULL)) { + pr_err("[%s]: failed to allocate memory on videocore (status: %u, trans_id: %u)\n", + __func__, status, private->int_trans_id); + ret = -ENOMEM; + resource->res_stats[ALLOC_FAIL]++; + goto error; + } + + /* Keep track of the resource we created. + */ + resource->private = private; + resource->res_handle = result.res_handle; + resource->res_base_mem = result.res_mem; + resource->res_size = alloc.base_unit * alloc.num_unit; + resource->res_cached = ioparam->cached; + + /* Kernel/user GUID. This global identifier is used for mmap'ing the + * allocated region from user space, it is passed as the mmap'ing + * offset, we use it to 'hide' the videocore handle/address. + */ + mutex_lock(&sm_state->lock); + resource->res_guid = ++sm_state->guid; + mutex_unlock(&sm_state->lock); + resource->res_guid <<= PAGE_SHIFT; + + vmcs_sm_add_resource(private, resource); + + pr_debug("[%s]: allocated data - guid %x, hdl %x, base address %p, size %d, cache %d\n", + __func__, resource->res_guid, resource->res_handle, + resource->res_base_mem, resource->res_size, + resource->res_cached); + + /* We're done */ + resource->res_stats[ALLOC]++; + ioparam->handle = resource->res_guid; + return 0; + +error: + pr_err("[%s]: failed to allocate \"%s\" data (%i) - type %u, base %u (%u), num %u, alignment %u\n", + __func__, alloc.name, ret, alloc.type, ioparam->size, + alloc.base_unit, alloc.num_unit, alloc.alignement); + if (resource != NULL) { + vc_sm_resource_deceased(resource, 1); + kfree(resource); + } + return ret; +} + +/* Share an allocate memory handle and block. +*/ +int vc_sm_ioctl_alloc_share(struct SM_PRIV_DATA_T *private, + struct vmcs_sm_ioctl_alloc_share *ioparam) +{ + struct SM_RESOURCE_T *resource, *shared_resource; + int ret = 0; + + pr_debug("[%s]: attempt to share resource %u\n", __func__, + ioparam->handle); + + shared_resource = vmcs_sm_acquire_global_resource(ioparam->handle); + if (shared_resource == NULL) { + ret = -ENOMEM; + goto error; + } + + /* Allocate local resource to track this allocation. + */ + resource = kzalloc(sizeof(*resource), GFP_KERNEL); + if (resource == NULL) { + pr_err("[%s]: failed to allocate local tracking resource\n", + __func__); + ret = -ENOMEM; + goto error; + } + INIT_LIST_HEAD(&resource->map_list); + resource->ref_count++; + resource->pid = current->tgid; + + /* Keep track of the resource we created. + */ + resource->private = private; + resource->res_handle = shared_resource->res_handle; + resource->res_base_mem = shared_resource->res_base_mem; + resource->res_size = shared_resource->res_size; + resource->res_cached = shared_resource->res_cached; + resource->res_shared = shared_resource; + + mutex_lock(&sm_state->lock); + resource->res_guid = ++sm_state->guid; + mutex_unlock(&sm_state->lock); + resource->res_guid <<= PAGE_SHIFT; + + vmcs_sm_add_resource(private, resource); + + pr_debug("[%s]: allocated data - guid %x, hdl %x, base address %p, size %d, cache %d\n", + __func__, resource->res_guid, resource->res_handle, + resource->res_base_mem, resource->res_size, + resource->res_cached); + + /* We're done */ + resource->res_stats[ALLOC]++; + ioparam->handle = resource->res_guid; + ioparam->size = resource->res_size; + return 0; + +error: + pr_err("[%s]: failed to share %u\n", __func__, ioparam->handle); + if (shared_resource != NULL) + vmcs_sm_release_resource(shared_resource, 0); + + return ret; +} + +/* Free a previously allocated shared memory handle and block. +*/ +static int vc_sm_ioctl_free(struct SM_PRIV_DATA_T *private, + struct vmcs_sm_ioctl_free *ioparam) +{ + struct SM_RESOURCE_T *resource = + vmcs_sm_acquire_resource(private, ioparam->handle); + + if (resource == NULL) { + pr_err("[%s]: resource for guid %u does not exist\n", __func__, + ioparam->handle); + return -EINVAL; + } + + /* Check permissions. + */ + if (resource->pid && (resource->pid != current->tgid)) { + pr_err("[%s]: current tgid %u != %u owner\n", + __func__, current->tgid, resource->pid); + vmcs_sm_release_resource(resource, 0); + return -EPERM; + } + + vmcs_sm_release_resource(resource, 0); + vmcs_sm_release_resource(resource, 0); + return 0; +} + +/* Resize a previously allocated shared memory handle and block. +*/ +static int vc_sm_ioctl_resize(struct SM_PRIV_DATA_T *private, + struct vmcs_sm_ioctl_resize *ioparam) +{ + int ret = 0; + int status; + VC_SM_RESIZE_T resize; + struct SM_RESOURCE_T *resource; + + /* Locate resource from GUID. + */ + resource = vmcs_sm_acquire_resource(private, ioparam->handle); + if (!resource) { + pr_err("[%s]: failed resource - guid %x\n", + __func__, ioparam->handle); + ret = -EFAULT; + goto error; + } + + /* If the resource is locked, its reference count will be not NULL, + ** in which case we will not be allowed to resize it anyways, so + ** reject the attempt here. + */ + if (resource->lock_count != 0) { + pr_err("[%s]: cannot resize - guid %x, ref-cnt %d\n", + __func__, ioparam->handle, resource->lock_count); + ret = -EFAULT; + goto error; + } + + /* Check permissions. + */ + if (resource->pid && (resource->pid != current->tgid)) { + pr_err("[%s]: current tgid %u != %u owner\n", __func__, + current->tgid, resource->pid); + ret = -EPERM; + goto error; + } + + if (resource->map_count != 0) { + pr_err("[%s]: cannot resize - guid %x, ref-cnt %d\n", + __func__, ioparam->handle, resource->map_count); + ret = -EFAULT; + goto error; + } + + resize.res_handle = resource->res_handle; + resize.res_mem = resource->res_base_mem; + resize.res_new_size = ioparam->new_size; + + pr_debug("[%s]: attempt to resize data - guid %x, hdl %x, base address %p\n", + __func__, ioparam->handle, resize.res_handle, resize.res_mem); + + /* Resize the videocore allocated resource. + */ + status = vc_vchi_sm_resize(sm_state->sm_handle, &resize, + &private->int_trans_id); + if (status == -EINTR) { + pr_debug("[%s]: requesting resize memory action restart (trans_id: %u)\n", + __func__, private->int_trans_id); + ret = -ERESTARTSYS; + private->restart_sys = -EINTR; + private->int_action = VC_SM_MSG_TYPE_RESIZE; + goto error; + } else if (status != 0) { + pr_err("[%s]: failed to resize memory on videocore (status: %u, trans_id: %u)\n", + __func__, status, private->int_trans_id); + ret = -EPERM; + goto error; + } + + pr_debug("[%s]: success to resize data - hdl %x, size %d -> %d\n", + __func__, resize.res_handle, resource->res_size, + resize.res_new_size); + + /* Successfully resized, save the information and inform the user. + */ + ioparam->old_size = resource->res_size; + resource->res_size = resize.res_new_size; + +error: + if (resource) + vmcs_sm_release_resource(resource, 0); + + return ret; +} + +/* Lock a previously allocated shared memory handle and block. +*/ +static int vc_sm_ioctl_lock(struct SM_PRIV_DATA_T *private, + struct vmcs_sm_ioctl_lock_unlock *ioparam, + int change_cache, enum vmcs_sm_cache_e cache_type, + unsigned int vc_addr) +{ + int status; + VC_SM_LOCK_UNLOCK_T lock; + VC_SM_LOCK_RESULT_T result; + struct SM_RESOURCE_T *resource; + int ret = 0; + struct sm_mmap *map, *map_tmp; + long unsigned int phys_addr; + + map = NULL; + + /* Locate resource from GUID. + */ + resource = vmcs_sm_acquire_resource(private, ioparam->handle); + if (resource == NULL) { + ret = -EINVAL; + goto error; + } + + /* Check permissions. + */ + if (resource->pid && (resource->pid != current->tgid)) { + pr_err("[%s]: current tgid %u != %u owner\n", __func__, + current->tgid, resource->pid); + ret = -EPERM; + goto error; + } + + lock.res_handle = resource->res_handle; + lock.res_mem = resource->res_base_mem; + + /* Take the lock and get the address to be mapped. + */ + if (vc_addr == 0) { + pr_debug("[%s]: attempt to lock data - guid %x, hdl %x, base address %p\n", + __func__, ioparam->handle, lock.res_handle, + lock.res_mem); + + /* Lock the videocore allocated resource. + */ + status = vc_vchi_sm_lock(sm_state->sm_handle, &lock, &result, + &private->int_trans_id); + if (status == -EINTR) { + pr_debug("[%s]: requesting lock memory action restart (trans_id: %u)\n", + __func__, private->int_trans_id); + ret = -ERESTARTSYS; + private->restart_sys = -EINTR; + private->int_action = VC_SM_MSG_TYPE_LOCK; + goto error; + } else if (status != 0 || + (status == 0 && result.res_mem == NULL)) { + pr_err("[%s]: failed to lock memory on videocore (status: %u, trans_id: %u)\n", + __func__, status, private->int_trans_id); + ret = -EPERM; + resource->res_stats[LOCK_FAIL]++; + goto error; + } + + pr_debug("[%s]: succeed to lock data - hdl %x, base address %p (%p), ref-cnt %d\n", + __func__, lock.res_handle, result.res_mem, + lock.res_mem, resource->lock_count); + } + /* Lock assumed taken already, address to be mapped is known. + */ + else + resource->res_base_mem = (void *)vc_addr; + + resource->res_stats[LOCK]++; + resource->lock_count++; + + /* Keep track of the new base memory allocation if it has changed. + */ + if ((vc_addr == 0) && + (result.res_mem != NULL) && + (result.res_old_mem != NULL) && + (result.res_mem != result.res_old_mem)) { + resource->res_base_mem = result.res_mem; + + /* Kernel allocated resources. + */ + if (resource->pid == 0) { + if (!list_empty(&resource->map_list)) { + list_for_each_entry_safe(map, map_tmp, + &resource->map_list, + resource_map_list) { + if (map->res_addr) { + iounmap((void *)map->res_addr); + map->res_addr = 0; + + vmcs_sm_remove_map(sm_state, + map->resource, + map); + break; + } + } + } + } + } + + if (change_cache) + resource->res_cached = cache_type; + + if (resource->map_count) { + ioparam->addr = + vmcs_sm_usr_address_from_pid_and_usr_handle( + current->tgid, ioparam->handle); + + pr_debug("[%s] map_count %d private->pid %d current->tgid %d hnd %x addr %u\n", + __func__, resource->map_count, private->pid, + current->tgid, ioparam->handle, ioparam->addr); + } else { + /* Kernel allocated resources. + */ + if (resource->pid == 0) { + pr_debug("[%s]: attempt mapping kernel resource - guid %x, hdl %x\n", + __func__, ioparam->handle, lock.res_handle); + + ioparam->addr = 0; + + map = kzalloc(sizeof(*map), GFP_KERNEL); + if (map == NULL) { + pr_err("[%s]: failed allocating tracker\n", + __func__); + ret = -ENOMEM; + goto error; + } else { + phys_addr = (uint32_t)resource->res_base_mem & + 0x3FFFFFFF; + phys_addr += mm_vc_mem_phys_addr; + if (resource->res_cached + == VMCS_SM_CACHE_HOST) { + ioparam->addr = (long unsigned int) + /* TODO - make cached work */ + ioremap_nocache(phys_addr, + resource->res_size); + + pr_debug("[%s]: mapping kernel - guid %x, hdl %x - cached mapping %u\n", + __func__, ioparam->handle, + lock.res_handle, ioparam->addr); + } else { + ioparam->addr = (long unsigned int) + ioremap_nocache(phys_addr, + resource->res_size); + + pr_debug("[%s]: mapping kernel- guid %x, hdl %x - non cached mapping %u\n", + __func__, ioparam->handle, + lock.res_handle, ioparam->addr); + } + + map->res_pid = 0; + map->res_vc_hdl = resource->res_handle; + map->res_usr_hdl = resource->res_guid; + map->res_addr = ioparam->addr; + map->resource = resource; + map->vma = NULL; + + vmcs_sm_add_map(sm_state, resource, map); + } + } else + ioparam->addr = 0; + } + +error: + if (resource) + vmcs_sm_release_resource(resource, 0); + + return ret; +} + +/* Unlock a previously allocated shared memory handle and block. +*/ +static int vc_sm_ioctl_unlock(struct SM_PRIV_DATA_T *private, + struct vmcs_sm_ioctl_lock_unlock *ioparam, + int flush, int wait_reply, int no_vc_unlock) +{ + int status; + VC_SM_LOCK_UNLOCK_T unlock; + struct sm_mmap *map, *map_tmp; + struct SM_RESOURCE_T *resource; + int ret = 0; + + map = NULL; + + /* Locate resource from GUID. + */ + resource = vmcs_sm_acquire_resource(private, ioparam->handle); + if (resource == NULL) { + ret = -EINVAL; + goto error; + } + + /* Check permissions. + */ + if (resource->pid && (resource->pid != current->tgid)) { + pr_err("[%s]: current tgid %u != %u owner\n", + __func__, current->tgid, resource->pid); + ret = -EPERM; + goto error; + } + + unlock.res_handle = resource->res_handle; + unlock.res_mem = resource->res_base_mem; + + pr_debug("[%s]: attempt to unlock data - guid %x, hdl %x, base address %p\n", + __func__, ioparam->handle, unlock.res_handle, unlock.res_mem); + + /* User space allocated resources. + */ + if (resource->pid) { + /* Flush if requested */ + if (resource->res_cached && flush) { + dma_addr_t phys_addr = 0; + resource->res_stats[FLUSH]++; + + phys_addr = + (dma_addr_t)((uint32_t)resource->res_base_mem & + 0x3FFFFFFF); + phys_addr += (dma_addr_t)mm_vc_mem_phys_addr; + + /* L1 cache flush */ + down_read(¤t->mm->mmap_sem); + list_for_each_entry(map, &resource->map_list, + resource_map_list) { + if (map->vma) { + unsigned long start; + unsigned long end; + start = map->vma->vm_start; + end = map->vma->vm_end; + + vcsm_vma_cache_clean_page_range( + start, end); + } + } + up_read(¤t->mm->mmap_sem); + + /* L2 cache flush */ + outer_clean_range(phys_addr, + phys_addr + + (size_t) resource->res_size); + } + + /* We need to zap all the vmas associated with this resource */ + if (resource->lock_count == 1) { + down_read(¤t->mm->mmap_sem); + list_for_each_entry(map, &resource->map_list, + resource_map_list) { + if (map->vma) { + zap_vma_ptes(map->vma, + map->vma->vm_start, + map->vma->vm_end - + map->vma->vm_start); + } + } + up_read(¤t->mm->mmap_sem); + } + } + /* Kernel allocated resources. */ + else { + /* Global + Taken in this context */ + if (resource->ref_count == 2) { + if (!list_empty(&resource->map_list)) { + list_for_each_entry_safe(map, map_tmp, + &resource->map_list, + resource_map_list) { + if (map->res_addr) { + if (flush && + (resource->res_cached == + VMCS_SM_CACHE_HOST)) { + long unsigned int + phys_addr; + phys_addr = (uint32_t) + resource->res_base_mem & 0x3FFFFFFF; + phys_addr += + mm_vc_mem_phys_addr; + + /* L1 cache flush */ + dmac_flush_range((const + void + *) + map->res_addr, (const void *) + (map->res_addr + resource->res_size)); + + /* L2 cache flush */ + outer_clean_range + (phys_addr, + phys_addr + + (size_t) + resource->res_size); + } + + iounmap((void *)map->res_addr); + map->res_addr = 0; + + vmcs_sm_remove_map(sm_state, + map->resource, + map); + break; + } + } + } + } + } + + if (resource->lock_count) { + /* Bypass the videocore unlock. + */ + if (no_vc_unlock) + status = 0; + /* Unlock the videocore allocated resource. + */ + else { + status = + vc_vchi_sm_unlock(sm_state->sm_handle, &unlock, + &private->int_trans_id, + wait_reply); + if (status == -EINTR) { + pr_debug("[%s]: requesting unlock memory action restart (trans_id: %u)\n", + __func__, private->int_trans_id); + + ret = -ERESTARTSYS; + resource->res_stats[UNLOCK]--; + private->restart_sys = -EINTR; + private->int_action = VC_SM_MSG_TYPE_UNLOCK; + goto error; + } else if (status != 0) { + pr_err("[%s]: failed to unlock vc mem (status: %u, trans_id: %u)\n", + __func__, status, private->int_trans_id); + + ret = -EPERM; + resource->res_stats[UNLOCK_FAIL]++; + goto error; + } + } + + resource->res_stats[UNLOCK]++; + resource->lock_count--; + } + + pr_debug("[%s]: success to unlock data - hdl %x, base address %p, ref-cnt %d\n", + __func__, unlock.res_handle, unlock.res_mem, + resource->lock_count); + +error: + if (resource) + vmcs_sm_release_resource(resource, 0); + + return ret; +} + +/* Handle control from host. */ +static long vc_sm_ioctl(struct file *file, unsigned int cmd, unsigned long arg) +{ + int ret = 0; + unsigned int cmdnr = _IOC_NR(cmd); + struct SM_PRIV_DATA_T *file_data = + (struct SM_PRIV_DATA_T *)file->private_data; + struct SM_RESOURCE_T *resource = NULL; + + /* Validate we can work with this device. */ + if ((sm_state == NULL) || (file_data == NULL)) { + pr_err("[%s]: invalid device\n", __func__); + ret = -EPERM; + goto out; + } + + pr_debug("[%s]: cmd %x tgid %u, owner %u\n", __func__, cmdnr, + current->tgid, file_data->pid); + + /* Action is a re-post of a previously interrupted action? */ + if (file_data->restart_sys == -EINTR) { + VC_SM_ACTION_CLEAN_T action_clean; + + pr_debug("[%s]: clean up of action %u (trans_id: %u) following EINTR\n", + __func__, file_data->int_action, + file_data->int_trans_id); + + action_clean.res_action = file_data->int_action; + action_clean.action_trans_id = file_data->int_trans_id; + + vc_vchi_sm_clean_up(sm_state->sm_handle, &action_clean); + + file_data->restart_sys = 0; + } + + /* Now process the command. + */ + switch (cmdnr) { + /* New memory allocation. + */ + case VMCS_SM_CMD_ALLOC: + { + struct vmcs_sm_ioctl_alloc ioparam; + + /* Get the parameter data. + */ + if (copy_from_user + (&ioparam, (void *)arg, sizeof(ioparam)) != 0) { + pr_err("[%s]: failed to copy-from-user for cmd %x\n", + __func__, cmdnr); + ret = -EFAULT; + goto out; + } + + ret = vc_sm_ioctl_alloc(file_data, &ioparam); + if (!ret && + (copy_to_user((void *)arg, + &ioparam, sizeof(ioparam)) != 0)) { + struct vmcs_sm_ioctl_free freeparam = { + ioparam.handle + }; + pr_err("[%s]: failed to copy-to-user for cmd %x\n", + __func__, cmdnr); + vc_sm_ioctl_free(file_data, &freeparam); + ret = -EFAULT; + } + + /* Done. + */ + goto out; + } + break; + + /* Share existing memory allocation. + */ + case VMCS_SM_CMD_ALLOC_SHARE: + { + struct vmcs_sm_ioctl_alloc_share ioparam; + + /* Get the parameter data. + */ + if (copy_from_user + (&ioparam, (void *)arg, sizeof(ioparam)) != 0) { + pr_err("[%s]: failed to copy-from-user for cmd %x\n", + __func__, cmdnr); + ret = -EFAULT; + goto out; + } + + ret = vc_sm_ioctl_alloc_share(file_data, &ioparam); + + /* Copy result back to user. + */ + if (!ret + && copy_to_user((void *)arg, &ioparam, + sizeof(ioparam)) != 0) { + struct vmcs_sm_ioctl_free freeparam = { + ioparam.handle + }; + pr_err("[%s]: failed to copy-to-user for cmd %x\n", + __func__, cmdnr); + vc_sm_ioctl_free(file_data, &freeparam); + ret = -EFAULT; + } + + /* Done. + */ + goto out; + } + break; + + /* Lock (attempt to) *and* register a cache behavior change. + */ + case VMCS_SM_CMD_LOCK_CACHE: + { + struct vmcs_sm_ioctl_lock_cache ioparam; + struct vmcs_sm_ioctl_lock_unlock lock; + + /* Get parameter data. + */ + if (copy_from_user + (&ioparam, (void *)arg, sizeof(ioparam)) != 0) { + pr_err("[%s]: failed to copy-from-user for cmd %x\n", + __func__, cmdnr); + ret = -EFAULT; + goto out; + } + + lock.handle = ioparam.handle; + ret = + vc_sm_ioctl_lock(file_data, &lock, 1, + ioparam.cached, 0); + + /* Done. + */ + goto out; + } + break; + + /* Lock (attempt to) existing memory allocation. + */ + case VMCS_SM_CMD_LOCK: + { + struct vmcs_sm_ioctl_lock_unlock ioparam; + + /* Get parameter data. + */ + if (copy_from_user + (&ioparam, (void *)arg, sizeof(ioparam)) != 0) { + pr_err("[%s]: failed to copy-from-user for cmd %x\n", + __func__, cmdnr); + ret = -EFAULT; + goto out; + } + + ret = vc_sm_ioctl_lock(file_data, &ioparam, 0, 0, 0); + + /* Copy result back to user. + */ + if (copy_to_user((void *)arg, &ioparam, sizeof(ioparam)) + != 0) { + pr_err("[%s]: failed to copy-to-user for cmd %x\n", + __func__, cmdnr); + ret = -EFAULT; + } + + /* Done. + */ + goto out; + } + break; + + /* Unlock (attempt to) existing memory allocation. + */ + case VMCS_SM_CMD_UNLOCK: + { + struct vmcs_sm_ioctl_lock_unlock ioparam; + + /* Get parameter data. + */ + if (copy_from_user + (&ioparam, (void *)arg, sizeof(ioparam)) != 0) { + pr_err("[%s]: failed to copy-from-user for cmd %x\n", + __func__, cmdnr); + ret = -EFAULT; + goto out; + } + + ret = vc_sm_ioctl_unlock(file_data, &ioparam, 0, 1, 0); + + /* Done. + */ + goto out; + } + break; + + /* Resize (attempt to) existing memory allocation. + */ + case VMCS_SM_CMD_RESIZE: + { + struct vmcs_sm_ioctl_resize ioparam; + + /* Get parameter data. + */ + if (copy_from_user + (&ioparam, (void *)arg, sizeof(ioparam)) != 0) { + pr_err("[%s]: failed to copy-from-user for cmd %x\n", + __func__, cmdnr); + ret = -EFAULT; + goto out; + } + + ret = vc_sm_ioctl_resize(file_data, &ioparam); + + /* Copy result back to user. + */ + if (copy_to_user((void *)arg, &ioparam, sizeof(ioparam)) + != 0) { + pr_err("[%s]: failed to copy-to-user for cmd %x\n", + __func__, cmdnr); + ret = -EFAULT; + } + + /* Done. + */ + goto out; + } + break; + + /* Terminate existing memory allocation. + */ + case VMCS_SM_CMD_FREE: + { + struct vmcs_sm_ioctl_free ioparam; + + /* Get parameter data. + */ + if (copy_from_user + (&ioparam, (void *)arg, sizeof(ioparam)) != 0) { + pr_err("[%s]: failed to copy-from-user for cmd %x\n", + __func__, cmdnr); + ret = -EFAULT; + goto out; + } + + ret = vc_sm_ioctl_free(file_data, &ioparam); + + /* Done. + */ + goto out; + } + break; + + /* Walk allocation on videocore, information shows up in the + ** videocore log. + */ + case VMCS_SM_CMD_VC_WALK_ALLOC: + { + pr_debug("[%s]: invoking walk alloc\n", __func__); + + if (vc_vchi_sm_walk_alloc(sm_state->sm_handle) != 0) + pr_err("[%s]: failed to walk-alloc on videocore\n", + __func__); + + /* Done. + */ + goto out; + } + break; +/* Walk mapping table on host, information shows up in the + ** kernel log. + */ + case VMCS_SM_CMD_HOST_WALK_MAP: + { + /* Use pid of -1 to tell to walk the whole map. */ + vmcs_sm_host_walk_map_per_pid(-1); + + /* Done. */ + goto out; + } + break; + + /* Walk mapping table per process on host. */ + case VMCS_SM_CMD_HOST_WALK_PID_ALLOC: + { + struct vmcs_sm_ioctl_walk ioparam; + + /* Get parameter data. */ + if (copy_from_user(&ioparam, + (void *)arg, sizeof(ioparam)) != 0) { + pr_err("[%s]: failed to copy-from-user for cmd %x\n", + __func__, cmdnr); + ret = -EFAULT; + goto out; + } + + vmcs_sm_host_walk_alloc(file_data); + + /* Done. */ + goto out; + } + break; + + /* Walk allocation per process on host. */ + case VMCS_SM_CMD_HOST_WALK_PID_MAP: + { + struct vmcs_sm_ioctl_walk ioparam; + + /* Get parameter data. */ + if (copy_from_user(&ioparam, + (void *)arg, sizeof(ioparam)) != 0) { + pr_err("[%s]: failed to copy-from-user for cmd %x\n", + __func__, cmdnr); + ret = -EFAULT; + goto out; + } + + vmcs_sm_host_walk_map_per_pid(ioparam.pid); + + /* Done. */ + goto out; + } + break; + + /* Gets the size of the memory associated with a user handle. */ + case VMCS_SM_CMD_SIZE_USR_HANDLE: + { + struct vmcs_sm_ioctl_size ioparam; + + /* Get parameter data. */ + if (copy_from_user(&ioparam, + (void *)arg, sizeof(ioparam)) != 0) { + pr_err("[%s]: failed to copy-from-user for cmd %x\n", + __func__, cmdnr); + ret = -EFAULT; + goto out; + } + + /* Locate resource from GUID. */ + resource = + vmcs_sm_acquire_resource(file_data, ioparam.handle); + if (resource != NULL) { + ioparam.size = resource->res_size; + vmcs_sm_release_resource(resource, 0); + } else { + ioparam.size = 0; + } + + if (copy_to_user((void *)arg, + &ioparam, sizeof(ioparam)) != 0) { + pr_err("[%s]: failed to copy-to-user for cmd %x\n", + __func__, cmdnr); + ret = -EFAULT; + } + + /* Done. */ + goto out; + } + break; + + /* Verify we are dealing with a valid resource. */ + case VMCS_SM_CMD_CHK_USR_HANDLE: + { + struct vmcs_sm_ioctl_chk ioparam; + + /* Get parameter data. + */ + if (copy_from_user(&ioparam, + (void *)arg, sizeof(ioparam)) != 0) { + pr_err("[%s]: failed to copy-from-user for cmd %x\n", + __func__, cmdnr); + + ret = -EFAULT; + goto out; + } + + /* Locate resource from GUID. */ + resource = + vmcs_sm_acquire_resource(file_data, ioparam.handle); + if (resource == NULL) + ret = -EINVAL; + /* If the resource is cacheable, return additional + * information that may be needed to flush the cache. + */ + else if ((resource->res_cached == VMCS_SM_CACHE_HOST) || + (resource->res_cached == VMCS_SM_CACHE_BOTH)) { + ioparam.addr = + vmcs_sm_usr_address_from_pid_and_usr_handle + (current->tgid, ioparam.handle); + ioparam.size = resource->res_size; + ioparam.cache = resource->res_cached; + } else { + ioparam.addr = 0; + ioparam.size = 0; + ioparam.cache = resource->res_cached; + } + + if (resource) + vmcs_sm_release_resource(resource, 0); + + if (copy_to_user((void *)arg, + &ioparam, sizeof(ioparam)) != 0) { + pr_err("[%s]: failed to copy-to-user for cmd %x\n", + __func__, cmdnr); + ret = -EFAULT; + } + + /* Done. + */ + goto out; + } + break; + + /* + * Maps a user handle given the process and the virtual address. + */ + case VMCS_SM_CMD_MAPPED_USR_HANDLE: + { + struct vmcs_sm_ioctl_map ioparam; + + /* Get parameter data. */ + if (copy_from_user(&ioparam, + (void *)arg, sizeof(ioparam)) != 0) { + pr_err("[%s]: failed to copy-from-user for cmd %x\n", + __func__, cmdnr); + + ret = -EFAULT; + goto out; + } + + ioparam.handle = + vmcs_sm_usr_handle_from_pid_and_address( + ioparam.pid, ioparam.addr); + + resource = + vmcs_sm_acquire_resource(file_data, ioparam.handle); + if ((resource != NULL) + && ((resource->res_cached == VMCS_SM_CACHE_HOST) + || (resource->res_cached == + VMCS_SM_CACHE_BOTH))) { + ioparam.size = resource->res_size; + } else { + ioparam.size = 0; + } + + if (resource) + vmcs_sm_release_resource(resource, 0); + + if (copy_to_user((void *)arg, + &ioparam, sizeof(ioparam)) != 0) { + pr_err("[%s]: failed to copy-to-user for cmd %x\n", + __func__, cmdnr); + ret = -EFAULT; + } + + /* Done. */ + goto out; + } + break; + + /* + * Maps a videocore handle given process and virtual address. + */ + case VMCS_SM_CMD_MAPPED_VC_HDL_FROM_ADDR: + { + struct vmcs_sm_ioctl_map ioparam; + + /* Get parameter data. */ + if (copy_from_user(&ioparam, + (void *)arg, sizeof(ioparam)) != 0) { + pr_err("[%s]: failed to copy-from-user for cmd %x\n", + __func__, cmdnr); + ret = -EFAULT; + goto out; + } + + ioparam.handle = vmcs_sm_vc_handle_from_pid_and_address( + ioparam.pid, ioparam.addr); + + if (copy_to_user((void *)arg, + &ioparam, sizeof(ioparam)) != 0) { + pr_err("[%s]: failed to copy-to-user for cmd %x\n", + __func__, cmdnr); + + ret = -EFAULT; + } + + /* Done. + */ + goto out; + } + break; + + /* Maps a videocore handle given process and user handle. */ + case VMCS_SM_CMD_MAPPED_VC_HDL_FROM_HDL: + { + struct vmcs_sm_ioctl_map ioparam; + + /* Get parameter data. */ + if (copy_from_user(&ioparam, + (void *)arg, sizeof(ioparam)) != 0) { + pr_err("[%s]: failed to copy-from-user for cmd %x\n", + __func__, cmdnr); + ret = -EFAULT; + goto out; + } + + /* Locate resource from GUID. */ + resource = + vmcs_sm_acquire_resource(file_data, ioparam.handle); + if (resource != NULL) { + ioparam.handle = resource->res_handle; + vmcs_sm_release_resource(resource, 0); + } else { + ioparam.handle = 0; + } + + if (copy_to_user((void *)arg, + &ioparam, sizeof(ioparam)) != 0) { + pr_err("[%s]: failed to copy-to-user for cmd %x\n", + __func__, cmdnr); + + ret = -EFAULT; + } + + /* Done. */ + goto out; + } + break; + + /* + * Maps a videocore address given process and videocore handle. + */ + case VMCS_SM_CMD_MAPPED_VC_ADDR_FROM_HDL: + { + struct vmcs_sm_ioctl_map ioparam; + + /* Get parameter data. */ + if (copy_from_user(&ioparam, + (void *)arg, sizeof(ioparam)) != 0) { + pr_err("[%s]: failed to copy-from-user for cmd %x\n", + __func__, cmdnr); + + ret = -EFAULT; + goto out; + } + + /* Locate resource from GUID. */ + resource = + vmcs_sm_acquire_resource(file_data, ioparam.handle); + if (resource != NULL) { + ioparam.addr = + (unsigned int)resource->res_base_mem; + vmcs_sm_release_resource(resource, 0); + } else { + ioparam.addr = 0; + } + + if (copy_to_user((void *)arg, + &ioparam, sizeof(ioparam)) != 0) { + pr_err("[%s]: failed to copy-to-user for cmd %x\n", + __func__, cmdnr); + ret = -EFAULT; + } + + /* Done. */ + goto out; + } + break; + + /* Maps a user address given process and vc handle. + */ + case VMCS_SM_CMD_MAPPED_USR_ADDRESS: + { + struct vmcs_sm_ioctl_map ioparam; + + /* Get parameter data. */ + if (copy_from_user(&ioparam, + (void *)arg, sizeof(ioparam)) != 0) { + pr_err("[%s]: failed to copy-from-user for cmd %x\n", + __func__, cmdnr); + ret = -EFAULT; + goto out; + } + + /* + * Return the address information from the mapping, + * 0 (ie NULL) if it cannot locate the actual mapping. + */ + ioparam.addr = + vmcs_sm_usr_address_from_pid_and_usr_handle + (ioparam.pid, ioparam.handle); + + if (copy_to_user((void *)arg, + &ioparam, sizeof(ioparam)) != 0) { + pr_err("[%s]: failed to copy-to-user for cmd %x\n", + __func__, cmdnr); + ret = -EFAULT; + } + + /* Done. */ + goto out; + } + break; + + /* Flush the cache for a given mapping. */ + case VMCS_SM_CMD_FLUSH: + { + struct vmcs_sm_ioctl_cache ioparam; + + /* Get parameter data. */ + if (copy_from_user(&ioparam, + (void *)arg, sizeof(ioparam)) != 0) { + pr_err("[%s]: failed to copy-from-user for cmd %x\n", + __func__, cmdnr); + ret = -EFAULT; + goto out; + } + + /* Locate resource from GUID. */ + resource = + vmcs_sm_acquire_resource(file_data, ioparam.handle); + + if ((resource != NULL) && resource->res_cached) { + dma_addr_t phys_addr = 0; + + resource->res_stats[FLUSH]++; + + phys_addr = + (dma_addr_t)((uint32_t) + resource->res_base_mem & + 0x3FFFFFFF); + phys_addr += (dma_addr_t)mm_vc_mem_phys_addr; + + /* L1 cache flush */ + down_read(¤t->mm->mmap_sem); + vcsm_vma_cache_clean_page_range((unsigned long) + ioparam.addr, + (unsigned long) + ioparam.addr + + ioparam.size); + up_read(¤t->mm->mmap_sem); + + /* L2 cache flush */ + outer_clean_range(phys_addr, + phys_addr + + (size_t) ioparam.size); + } else if (resource == NULL) { + ret = -EINVAL; + goto out; + } + + if (resource) + vmcs_sm_release_resource(resource, 0); + + /* Done. */ + goto out; + } + break; + + /* Invalidate the cache for a given mapping. */ + case VMCS_SM_CMD_INVALID: + { + struct vmcs_sm_ioctl_cache ioparam; + + /* Get parameter data. */ + if (copy_from_user(&ioparam, + (void *)arg, sizeof(ioparam)) != 0) { + pr_err("[%s]: failed to copy-from-user for cmd %x\n", + __func__, cmdnr); + ret = -EFAULT; + goto out; + } + + /* Locate resource from GUID. + */ + resource = + vmcs_sm_acquire_resource(file_data, ioparam.handle); + + if ((resource != NULL) && resource->res_cached) { + dma_addr_t phys_addr = 0; + + resource->res_stats[INVALID]++; + + phys_addr = + (dma_addr_t)((uint32_t) + resource->res_base_mem & + 0x3FFFFFFF); + phys_addr += (dma_addr_t)mm_vc_mem_phys_addr; + + /* L2 cache invalidate */ + outer_inv_range(phys_addr, + phys_addr + + (size_t) ioparam.size); + + /* L1 cache invalidate */ + down_read(¤t->mm->mmap_sem); + vcsm_vma_cache_clean_page_range((unsigned long) + ioparam.addr, + (unsigned long) + ioparam.addr + + ioparam.size); + up_read(¤t->mm->mmap_sem); + } else if (resource == NULL) { + ret = -EINVAL; + goto out; + } + + if (resource) + vmcs_sm_release_resource(resource, 0); + + /* Done. + */ + goto out; + } + break; + + /* Flush/Invalidate the cache for a given mapping. */ + case VMCS_SM_CMD_CLEAN_INVALID: + { + int i; + struct vmcs_sm_ioctl_clean_invalid ioparam; + + /* Get parameter data. */ + if (copy_from_user(&ioparam, + (void *)arg, sizeof(ioparam)) != 0) { + pr_err("[%s]: failed to copy-from-user for cmd %x\n", + __func__, cmdnr); + ret = -EFAULT; + goto out; + } + for (i=0; ires_cached) { + unsigned long base = ioparam.s[i].addr & ~(PAGE_SIZE-1); + unsigned long end = (ioparam.s[i].addr + ioparam.s[i].size + PAGE_SIZE-1) & ~(PAGE_SIZE-1); + resource->res_stats[ioparam.s[i].cmd == 1 ? INVALID:FLUSH]++; + + /* L1/L2 cache flush */ + down_read(¤t->mm->mmap_sem); + vcsm_vma_cache_clean_page_range(base, end); + up_read(¤t->mm->mmap_sem); + } else if (resource == NULL) { + ret = -EINVAL; + goto out; + } + + if (resource) + vmcs_sm_release_resource(resource, 0); + } + break; + } + } + } + break; + + default: + { + ret = -EINVAL; + goto out; + } + break; + } + +out: + return ret; +} + +/* Device operations that we managed in this driver. +*/ +static const struct file_operations vmcs_sm_ops = { + .owner = THIS_MODULE, + .unlocked_ioctl = vc_sm_ioctl, + .open = vc_sm_open, + .release = vc_sm_release, + .mmap = vc_sm_mmap, +}; + +/* Creation of device. +*/ +static int vc_sm_create_sharedmemory(void) +{ + int ret; + + if (sm_state == NULL) { + ret = -ENOMEM; + goto out; + } + + /* Create a device class for creating dev nodes. + */ + sm_state->sm_class = class_create(THIS_MODULE, "vc-sm"); + if (IS_ERR(sm_state->sm_class)) { + pr_err("[%s]: unable to create device class\n", __func__); + ret = PTR_ERR(sm_state->sm_class); + goto out; + } + + /* Create a character driver. + */ + ret = alloc_chrdev_region(&sm_state->sm_devid, + DEVICE_MINOR, 1, DEVICE_NAME); + if (ret != 0) { + pr_err("[%s]: unable to allocate device number\n", __func__); + goto out_dev_class_destroy; + } + + cdev_init(&sm_state->sm_cdev, &vmcs_sm_ops); + ret = cdev_add(&sm_state->sm_cdev, sm_state->sm_devid, 1); + if (ret != 0) { + pr_err("[%s]: unable to register device\n", __func__); + goto out_chrdev_unreg; + } + + /* Create a device node. + */ + sm_state->sm_dev = device_create(sm_state->sm_class, + NULL, + MKDEV(MAJOR(sm_state->sm_devid), + DEVICE_MINOR), NULL, + DEVICE_NAME); + if (IS_ERR(sm_state->sm_dev)) { + pr_err("[%s]: unable to create device node\n", __func__); + ret = PTR_ERR(sm_state->sm_dev); + goto out_chrdev_del; + } + + goto out; + +out_chrdev_del: + cdev_del(&sm_state->sm_cdev); +out_chrdev_unreg: + unregister_chrdev_region(sm_state->sm_devid, 1); +out_dev_class_destroy: + class_destroy(sm_state->sm_class); + sm_state->sm_class = NULL; +out: + return ret; +} + +/* Termination of the device. +*/ +static int vc_sm_remove_sharedmemory(void) +{ + int ret; + + if (sm_state == NULL) { + /* Nothing to do. + */ + ret = 0; + goto out; + } + + /* Remove the sharedmemory character driver. + */ + cdev_del(&sm_state->sm_cdev); + + /* Unregister region. + */ + unregister_chrdev_region(sm_state->sm_devid, 1); + + ret = 0; + goto out; + +out: + return ret; +} + +/* Videocore connected. */ +static void vc_sm_connected_init(void) +{ + int ret; + VCHI_INSTANCE_T vchi_instance; + VCHI_CONNECTION_T *vchi_connection = NULL; + + pr_info("[%s]: start\n", __func__); + + /* Allocate memory for the state structure. + */ + sm_state = kzalloc(sizeof(struct SM_STATE_T), GFP_KERNEL); + if (sm_state == NULL) { + pr_err("[%s]: failed to allocate memory\n", __func__); + ret = -ENOMEM; + goto out; + } + + mutex_init(&sm_state->lock); + mutex_init(&sm_state->map_lock); + + /* Initialize and create a VCHI connection for the shared memory service + ** running on videocore. + */ + ret = vchi_initialise(&vchi_instance); + if (ret != 0) { + pr_err("[%s]: failed to initialise VCHI instance (ret=%d)\n", + __func__, ret); + + ret = -EIO; + goto err_free_mem; + } + + ret = vchi_connect(NULL, 0, vchi_instance); + if (ret != 0) { + pr_err("[%s]: failed to connect VCHI instance (ret=%d)\n", + __func__, ret); + + ret = -EIO; + goto err_free_mem; + } + + /* Initialize an instance of the shared memory service. */ + sm_state->sm_handle = + vc_vchi_sm_init(vchi_instance, &vchi_connection, 1); + if (sm_state->sm_handle == NULL) { + pr_err("[%s]: failed to initialize shared memory service\n", + __func__); + + ret = -EPERM; + goto err_free_mem; + } + + /* Create a debug fs directory entry (root). */ + sm_state->dir_root = debugfs_create_dir(VC_SM_DIR_ROOT_NAME, NULL); + if (!sm_state->dir_root) { + pr_err("[%s]: failed to create \'%s\' directory entry\n", + __func__, VC_SM_DIR_ROOT_NAME); + + ret = -EPERM; + goto err_stop_sm_service; + } + + sm_state->dir_state.show = &vc_sm_global_state_show; + sm_state->dir_state.dir_entry = debugfs_create_file(VC_SM_STATE, + S_IRUGO, sm_state->dir_root, &sm_state->dir_state, + &vc_sm_debug_fs_fops); + + sm_state->dir_stats.show = &vc_sm_global_statistics_show; + sm_state->dir_stats.dir_entry = debugfs_create_file(VC_SM_STATS, + S_IRUGO, sm_state->dir_root, &sm_state->dir_stats, + &vc_sm_debug_fs_fops); + + /* Create the proc entry children. */ + sm_state->dir_alloc = debugfs_create_dir(VC_SM_DIR_ALLOC_NAME, + sm_state->dir_root); + + /* Create a shared memory device. */ + ret = vc_sm_create_sharedmemory(); + if (ret != 0) { + pr_err("[%s]: failed to create shared memory device\n", + __func__); + goto err_remove_debugfs; + } + + INIT_LIST_HEAD(&sm_state->map_list); + INIT_LIST_HEAD(&sm_state->resource_list); + + sm_state->data_knl = vc_sm_create_priv_data(0); + if (sm_state->data_knl == NULL) { + pr_err("[%s]: failed to create kernel private data tracker\n", + __func__); + goto err_remove_shared_memory; + } + + /* Done! + */ + sm_inited = 1; + goto out; + +err_remove_shared_memory: + vc_sm_remove_sharedmemory(); +err_remove_debugfs: + debugfs_remove_recursive(sm_state->dir_root); +err_stop_sm_service: + vc_vchi_sm_stop(&sm_state->sm_handle); +err_free_mem: + kfree(sm_state); +out: + pr_info("[%s]: end - returning %d\n", __func__, ret); +} + +/* Driver loading. */ +static int __init vc_sm_init(void) +{ + pr_info("vc-sm: Videocore shared memory driver\n"); + vchiq_add_connected_callback(vc_sm_connected_init); + return 0; +} + +/* Driver unloading. */ +static void __exit vc_sm_exit(void) +{ + pr_debug("[%s]: start\n", __func__); + if (sm_inited) { + /* Remove shared memory device. + */ + vc_sm_remove_sharedmemory(); + + /* Remove all proc entries. + */ + debugfs_remove_recursive(sm_state->dir_root); + + /* Stop the videocore shared memory service. + */ + vc_vchi_sm_stop(&sm_state->sm_handle); + + /* Free the memory for the state structure. + */ + mutex_destroy(&(sm_state->map_lock)); + kfree(sm_state); + } + + pr_debug("[%s]: end\n", __func__); +} + +#if defined(__KERNEL__) +/* Allocate a shared memory handle and block. */ +int vc_sm_alloc(VC_SM_ALLOC_T *alloc, int *handle) +{ + struct vmcs_sm_ioctl_alloc ioparam = { 0 }; + int ret; + struct SM_RESOURCE_T *resource; + + /* Validate we can work with this device. + */ + if (sm_state == NULL || alloc == NULL || handle == NULL) { + pr_err("[%s]: invalid input\n", __func__); + return -EPERM; + } + + ioparam.size = alloc->base_unit; + ioparam.num = alloc->num_unit; + ioparam.cached = + alloc->type == VC_SM_ALLOC_CACHED ? VMCS_SM_CACHE_VC : 0; + + ret = vc_sm_ioctl_alloc(sm_state->data_knl, &ioparam); + + if (ret == 0) { + resource = + vmcs_sm_acquire_resource(sm_state->data_knl, + ioparam.handle); + if (resource) { + resource->pid = 0; + vmcs_sm_release_resource(resource, 0); + + /* Assign valid handle at this time. + */ + *handle = ioparam.handle; + } else { + ret = -ENOMEM; + } + } + + return ret; +} +EXPORT_SYMBOL_GPL(vc_sm_alloc); + +/* Get an internal resource handle mapped from the external one. +*/ +int vc_sm_int_handle(int handle) +{ + struct SM_RESOURCE_T *resource; + int ret = 0; + + /* Validate we can work with this device. + */ + if (sm_state == NULL || handle == 0) { + pr_err("[%s]: invalid input\n", __func__); + return 0; + } + + /* Locate resource from GUID. + */ + resource = vmcs_sm_acquire_resource(sm_state->data_knl, handle); + if (resource) { + ret = resource->res_handle; + vmcs_sm_release_resource(resource, 0); + } + + return ret; +} +EXPORT_SYMBOL_GPL(vc_sm_int_handle); + +/* Free a previously allocated shared memory handle and block. +*/ +int vc_sm_free(int handle) +{ + struct vmcs_sm_ioctl_free ioparam = { handle }; + + /* Validate we can work with this device. + */ + if (sm_state == NULL || handle == 0) { + pr_err("[%s]: invalid input\n", __func__); + return -EPERM; + } + + return vc_sm_ioctl_free(sm_state->data_knl, &ioparam); +} +EXPORT_SYMBOL_GPL(vc_sm_free); + +/* Lock a memory handle for use by kernel. +*/ +int vc_sm_lock(int handle, VC_SM_LOCK_CACHE_MODE_T mode, + long unsigned int *data) +{ + struct vmcs_sm_ioctl_lock_unlock ioparam; + int ret; + + /* Validate we can work with this device. + */ + if (sm_state == NULL || handle == 0 || data == NULL) { + pr_err("[%s]: invalid input\n", __func__); + return -EPERM; + } + + *data = 0; + + ioparam.handle = handle; + ret = vc_sm_ioctl_lock(sm_state->data_knl, + &ioparam, + 1, + ((mode == + VC_SM_LOCK_CACHED) ? VMCS_SM_CACHE_HOST : + VMCS_SM_CACHE_NONE), 0); + + *data = ioparam.addr; + return ret; +} +EXPORT_SYMBOL_GPL(vc_sm_lock); + +/* Unlock a memory handle in use by kernel. +*/ +int vc_sm_unlock(int handle, int flush, int no_vc_unlock) +{ + struct vmcs_sm_ioctl_lock_unlock ioparam; + + /* Validate we can work with this device. + */ + if (sm_state == NULL || handle == 0) { + pr_err("[%s]: invalid input\n", __func__); + return -EPERM; + } + + ioparam.handle = handle; + return vc_sm_ioctl_unlock(sm_state->data_knl, + &ioparam, flush, 0, no_vc_unlock); +} +EXPORT_SYMBOL_GPL(vc_sm_unlock); + +/* Map a shared memory region for use by kernel. +*/ +int vc_sm_map(int handle, unsigned int sm_addr, VC_SM_LOCK_CACHE_MODE_T mode, + long unsigned int *data) +{ + struct vmcs_sm_ioctl_lock_unlock ioparam; + int ret; + + /* Validate we can work with this device. + */ + if (sm_state == NULL || handle == 0 || data == NULL || sm_addr == 0) { + pr_err("[%s]: invalid input\n", __func__); + return -EPERM; + } + + *data = 0; + + ioparam.handle = handle; + ret = vc_sm_ioctl_lock(sm_state->data_knl, + &ioparam, + 1, + ((mode == + VC_SM_LOCK_CACHED) ? VMCS_SM_CACHE_HOST : + VMCS_SM_CACHE_NONE), sm_addr); + + *data = ioparam.addr; + return ret; +} +EXPORT_SYMBOL_GPL(vc_sm_map); +#endif + +late_initcall(vc_sm_init); +module_exit(vc_sm_exit); + +MODULE_AUTHOR("Broadcom"); +MODULE_DESCRIPTION("VideoCore SharedMemory Driver"); +MODULE_LICENSE("GPL v2"); --- linux-raspi2-4.2.0.orig/drivers/char/broadcom/vcio.c +++ linux-raspi2-4.2.0/drivers/char/broadcom/vcio.c @@ -0,0 +1,175 @@ +/* + * Copyright (C) 2010 Broadcom + * Copyright (C) 2015 Noralf Trønnes + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + * + */ + +#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#define MBOX_CHAN_PROPERTY 8 + +#define VCIO_IOC_MAGIC 100 +#define IOCTL_MBOX_PROPERTY _IOWR(VCIO_IOC_MAGIC, 0, char *) + +static struct { + dev_t devt; + struct cdev cdev; + struct class *class; + struct rpi_firmware *fw; +} vcio; + +static int vcio_user_property_list(void *user) +{ + u32 *buf, size; + int ret; + + /* The first 32-bit is the size of the buffer */ + if (copy_from_user(&size, user, sizeof(size))) + return -EFAULT; + + buf = kmalloc(size, GFP_KERNEL); + if (!buf) + return -ENOMEM; + + if (copy_from_user(buf, user, size)) { + kfree(buf); + return -EFAULT; + } + + /* Strip off protocol encapsulation */ + ret = rpi_firmware_property_list(vcio.fw, &buf[2], size - 12); + if (ret) { + kfree(buf); + return ret; + } + + buf[1] = RPI_FIRMWARE_STATUS_SUCCESS; + if (copy_to_user(user, buf, size)) + ret = -EFAULT; + + kfree(buf); + + return ret; +} + +static int vcio_device_open(struct inode *inode, struct file *file) +{ + try_module_get(THIS_MODULE); + + return 0; +} + +static int vcio_device_release(struct inode *inode, struct file *file) +{ + module_put(THIS_MODULE); + + return 0; +} + +static long vcio_device_ioctl(struct file *file, unsigned int ioctl_num, + unsigned long ioctl_param) +{ + switch (ioctl_num) { + case IOCTL_MBOX_PROPERTY: + return vcio_user_property_list((void *)ioctl_param); + default: + pr_err("unknown ioctl: %d\n", ioctl_num); + return -EINVAL; + } +} + +const struct file_operations vcio_fops = { + .unlocked_ioctl = vcio_device_ioctl, + .open = vcio_device_open, + .release = vcio_device_release, +}; + +static int __init vcio_init(void) +{ + struct device_node *np; + static struct device *dev; + int ret; + + np = of_find_compatible_node(NULL, NULL, + "raspberrypi,bcm2835-firmware"); +/* Uncomment this when we only boot with Device Tree + if (!of_device_is_available(np)) + return -ENODEV; +*/ + vcio.fw = rpi_firmware_get(np); + if (!vcio.fw) + return -ENODEV; + + ret = alloc_chrdev_region(&vcio.devt, 0, 1, "vcio"); + if (ret) { + pr_err("failed to allocate device number\n"); + return ret; + } + + cdev_init(&vcio.cdev, &vcio_fops); + vcio.cdev.owner = THIS_MODULE; + ret = cdev_add(&vcio.cdev, vcio.devt, 1); + if (ret) { + pr_err("failed to register device\n"); + goto err_unregister_chardev; + } + + /* + * Create sysfs entries + * 'bcm2708_vcio' is used for backwards compatibility so we don't break + * userspace. Raspian has a udev rule that changes the permissions. + */ + vcio.class = class_create(THIS_MODULE, "bcm2708_vcio"); + if (IS_ERR(vcio.class)) { + ret = PTR_ERR(vcio.class); + pr_err("failed to create class\n"); + goto err_cdev_del; + } + + dev = device_create(vcio.class, NULL, vcio.devt, NULL, "vcio"); + if (IS_ERR(dev)) { + ret = PTR_ERR(dev); + pr_err("failed to create device\n"); + goto err_class_destroy; + } + + return 0; + +err_class_destroy: + class_destroy(vcio.class); +err_cdev_del: + cdev_del(&vcio.cdev); +err_unregister_chardev: + unregister_chrdev_region(vcio.devt, 1); + + return ret; +} +module_init(vcio_init); + +static void __exit vcio_exit(void) +{ + device_destroy(vcio.class, vcio.devt); + class_destroy(vcio.class); + cdev_del(&vcio.cdev); + unregister_chrdev_region(vcio.devt, 1); +} +module_exit(vcio_exit); + +MODULE_AUTHOR("Gray Girling"); +MODULE_AUTHOR("Noralf Trønnes"); +MODULE_DESCRIPTION("Mailbox userspace access"); +MODULE_LICENSE("GPL"); --- linux-raspi2-4.2.0.orig/drivers/char/hw_random/Kconfig +++ linux-raspi2-4.2.0/drivers/char/hw_random/Kconfig @@ -90,7 +90,7 @@ config HW_RANDOM_BCM2835 tristate "Broadcom BCM2835 Random Number Generator support" - depends on ARCH_BCM2835 + depends on ARCH_BCM2835 || ARCH_BCM2708 || ARCH_BCM2709 default HW_RANDOM ---help--- This driver provides kernel-side support for the Random Number @@ -333,6 +333,17 @@ If unsure, say Y. +config HW_RANDOM_BCM2708 + tristate "BCM2708 generic true random number generator support" + depends on HW_RANDOM && (ARCH_BCM2708 || ARCH_BCM2709) + ---help--- + This driver provides the kernel-side support for the BCM2708 hardware. + + To compile this driver as a module, choose M here: the + module will be called bcm2708-rng. + + If unsure, say N. + config HW_RANDOM_MSM tristate "Qualcomm SoCs Random Number Generator support" depends on HW_RANDOM && ARCH_QCOM --- linux-raspi2-4.2.0.orig/drivers/char/hw_random/Makefile +++ linux-raspi2-4.2.0/drivers/char/hw_random/Makefile @@ -4,6 +4,7 @@ obj-$(CONFIG_HW_RANDOM) += rng-core.o rng-core-y := core.o +obj-$(CONFIG_HW_RANDOM_BCM2708) += bcm2708-rng.o obj-$(CONFIG_HW_RANDOM_TIMERIOMEM) += timeriomem-rng.o obj-$(CONFIG_HW_RANDOM_INTEL) += intel-rng.o obj-$(CONFIG_HW_RANDOM_AMD) += amd-rng.o --- linux-raspi2-4.2.0.orig/drivers/char/hw_random/bcm2708-rng.c +++ linux-raspi2-4.2.0/drivers/char/hw_random/bcm2708-rng.c @@ -0,0 +1,118 @@ +/** + * Copyright (c) 2010-2012 Broadcom. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions, and the following disclaimer, + * without modification. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The names of the above-listed copyright holders may not be used + * to endorse or promote products derived from this software without + * specific prior written permission. + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") version 2, as published by the Free + * Software Foundation. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS + * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include +#include +#include +#include +#include + +#include +#include +#include + +#define RNG_CTRL (0x0) +#define RNG_STATUS (0x4) +#define RNG_DATA (0x8) +#define RNG_FF_THRESHOLD (0xc) + +/* enable rng */ +#define RNG_RBGEN 0x1 +/* double speed, less random mode */ +#define RNG_RBG2X 0x2 + +/* the initial numbers generated are "less random" so will be discarded */ +#define RNG_WARMUP_COUNT 0x40000 + +static int bcm2708_rng_data_read(struct hwrng *rng, u32 *buffer) +{ + void __iomem *rng_base = (void __iomem *)rng->priv; + unsigned words; + /* wait for a random number to be in fifo */ + do { + words = __raw_readl(rng_base + RNG_STATUS)>>24; + } + while (words == 0); + /* read the random number */ + *buffer = __raw_readl(rng_base + RNG_DATA); + return 4; +} + +static struct hwrng bcm2708_rng_ops = { + .name = "bcm2708", + .data_read = bcm2708_rng_data_read, +}; + +static int __init bcm2708_rng_init(void) +{ + void __iomem *rng_base; + int err; + + /* map peripheral */ + rng_base = ioremap(RNG_BASE, 0x10); + pr_info("bcm2708_rng_init=%p\n", rng_base); + if (!rng_base) { + pr_err("bcm2708_rng_init failed to ioremap\n"); + return -ENOMEM; + } + bcm2708_rng_ops.priv = (unsigned long)rng_base; + + /* set warm-up count & enable */ + __raw_writel(RNG_WARMUP_COUNT, rng_base + RNG_STATUS); + __raw_writel(RNG_RBGEN, rng_base + RNG_CTRL); + + /* register driver */ + err = hwrng_register(&bcm2708_rng_ops); + if (err) { + pr_err("bcm2708_rng_init hwrng_register()=%d\n", err); + iounmap(rng_base); + } + return err; +} + +static void __exit bcm2708_rng_exit(void) +{ + void __iomem *rng_base = (void __iomem *)bcm2708_rng_ops.priv; + pr_info("bcm2708_rng_exit\n"); + /* disable rng hardware */ + __raw_writel(0, rng_base + RNG_CTRL); + /* unregister driver */ + hwrng_unregister(&bcm2708_rng_ops); + iounmap(rng_base); +} + +module_init(bcm2708_rng_init); +module_exit(bcm2708_rng_exit); + +MODULE_DESCRIPTION("BCM2708 H/W Random Number Generator (RNG) driver"); +MODULE_LICENSE("GPL and additional rights"); --- linux-raspi2-4.2.0.orig/drivers/char/ipmi/ipmi_ssif.c +++ linux-raspi2-4.2.0/drivers/char/ipmi/ipmi_ssif.c @@ -1136,6 +1136,10 @@ MODULE_PARM_DESC(slave_addrs, "The default IPMB slave address for the controller."); +static bool alerts_broken; +module_param(alerts_broken, bool, 0); +MODULE_PARM_DESC(alerts_broken, "Don't enable alerts for the controller."); + /* * Bit 0 enables message debugging, bit 1 enables state debugging, and * bit 2 enables timing debugging. This is an array indexed by @@ -1582,6 +1586,10 @@ ssif_info->global_enables |= IPMI_BMC_EVT_MSG_BUFF; } + /* Some systems don't behave well if you enable alerts. */ + if (alerts_broken) + goto found; + msg[0] = IPMI_NETFN_APP_REQUEST << 2; msg[1] = IPMI_SET_BMC_GLOBAL_ENABLES_CMD; msg[2] = ssif_info->global_enables | IPMI_BMC_RCV_MSG_INTR; --- linux-raspi2-4.2.0.orig/drivers/char/tpm/tpm-chip.c +++ linux-raspi2-4.2.0/drivers/char/tpm/tpm-chip.c @@ -231,7 +231,7 @@ /* Make the chip available. */ spin_lock(&driver_lock); - list_add_rcu(&chip->list, &tpm_chip_list); + list_add_tail_rcu(&chip->list, &tpm_chip_list); spin_unlock(&driver_lock); chip->flags |= TPM_CHIP_FLAG_REGISTERED; --- linux-raspi2-4.2.0.orig/drivers/char/tpm/tpm.h +++ linux-raspi2-4.2.0/drivers/char/tpm/tpm.h @@ -115,6 +115,13 @@ TPM2_SU_STATE = 0x0001, }; +enum tpm2_start_method { + TPM2_START_ACPI = 2, + TPM2_START_FIFO = 6, + TPM2_START_CRB = 7, + TPM2_START_CRB_WITH_ACPI = 8, +}; + struct tpm_chip; struct tpm_vendor_specific { --- linux-raspi2-4.2.0.orig/drivers/char/tpm/tpm_crb.c +++ linux-raspi2-4.2.0/drivers/char/tpm/tpm_crb.c @@ -34,12 +34,6 @@ CRB_ACPI_START_INDEX = 1, }; -enum crb_start_method { - CRB_SM_ACPI_START = 2, - CRB_SM_CRB = 7, - CRB_SM_CRB_WITH_ACPI_START = 8, -}; - struct acpi_tpm2 { struct acpi_table_header hdr; u16 platform_class; @@ -74,7 +68,8 @@ u32 int_enable; u32 int_sts; u32 cmd_size; - u64 cmd_pa; + u32 cmd_pa_low; + u32 cmd_pa_high; u32 rsp_size; u64 rsp_pa; } __packed; @@ -220,12 +215,6 @@ u64 pa; int rc; - chip = tpmm_chip_alloc(dev, &tpm_crb); - if (IS_ERR(chip)) - return PTR_ERR(chip); - - chip->flags = TPM_CHIP_FLAG_TPM2; - status = acpi_get_table(ACPI_SIG_TPM2, 1, (struct acpi_table_header **) &buf); if (ACPI_FAILURE(status)) { @@ -233,13 +222,15 @@ return -ENODEV; } - /* At least some versions of AMI BIOS have a bug that TPM2 table has - * zero address for the control area and therefore we must fail. - */ - if (!buf->control_area_pa) { - dev_err(dev, "TPM2 ACPI table has a zero address for the control area\n"); - return -EINVAL; - } + /* Should the FIFO driver handle this? */ + if (buf->start_method == TPM2_START_FIFO) + return -ENODEV; + + chip = tpmm_chip_alloc(dev, &tpm_crb); + if (IS_ERR(chip)) + return PTR_ERR(chip); + + chip->flags = TPM_CHIP_FLAG_TPM2; if (buf->hdr.length < sizeof(struct acpi_tpm2)) { dev_err(dev, "TPM2 ACPI table has wrong size"); @@ -259,11 +250,11 @@ * report only ACPI start but in practice seems to require both * ACPI start and CRB start. */ - if (sm == CRB_SM_CRB || sm == CRB_SM_CRB_WITH_ACPI_START || + if (sm == TPM2_START_CRB || sm == TPM2_START_FIFO || !strcmp(acpi_device_hid(device), "MSFT0101")) priv->flags |= CRB_FL_CRB_START; - if (sm == CRB_SM_ACPI_START || sm == CRB_SM_CRB_WITH_ACPI_START) + if (sm == TPM2_START_ACPI || sm == TPM2_START_CRB_WITH_ACPI) priv->flags |= CRB_FL_ACPI_START; priv->cca = (struct crb_control_area __iomem *) @@ -273,8 +264,8 @@ return -ENOMEM; } - memcpy_fromio(&pa, &priv->cca->cmd_pa, 8); - pa = le64_to_cpu(pa); + pa = ((u64) le32_to_cpu(ioread32(&priv->cca->cmd_pa_high)) << 32) | + (u64) le32_to_cpu(ioread32(&priv->cca->cmd_pa_low)); priv->cmd = devm_ioremap_nocache(dev, pa, ioread32(&priv->cca->cmd_size)); if (!priv->cmd) { --- linux-raspi2-4.2.0.orig/drivers/char/tpm/tpm_ibmvtpm.c +++ linux-raspi2-4.2.0/drivers/char/tpm/tpm_ibmvtpm.c @@ -491,7 +491,7 @@ } ibmvtpm->rtce_size = be16_to_cpu(crq->len); ibmvtpm->rtce_buf = kmalloc(ibmvtpm->rtce_size, - GFP_KERNEL); + GFP_ATOMIC); if (!ibmvtpm->rtce_buf) { dev_err(ibmvtpm->dev, "Failed to allocate memory for rtce buffer\n"); return; --- linux-raspi2-4.2.0.orig/drivers/char/tpm/tpm_of.c +++ linux-raspi2-4.2.0/drivers/char/tpm/tpm_of.c @@ -53,17 +53,18 @@ goto cleanup_eio; } - of_node_put(np); log->bios_event_log = kmalloc(*sizep, GFP_KERNEL); if (!log->bios_event_log) { pr_err("%s: ERROR - Not enough memory for BIOS measurements\n", __func__); + of_node_put(np); return -ENOMEM; } log->bios_event_log_end = log->bios_event_log + *sizep; memcpy(log->bios_event_log, __va(be64_to_cpup(basep)), *sizep); + of_node_put(np); return 0; --- linux-raspi2-4.2.0.orig/drivers/char/tpm/tpm_tis.c +++ linux-raspi2-4.2.0/drivers/char/tpm/tpm_tis.c @@ -1,6 +1,6 @@ /* * Copyright (C) 2005, 2006 IBM Corporation - * Copyright (C) 2014 Intel Corporation + * Copyright (C) 2014, 2015 Intel Corporation * * Authors: * Leendert van Doorn @@ -28,6 +28,7 @@ #include #include #include +#include #include "tpm.h" enum tis_access { @@ -65,6 +66,17 @@ TIS_LONG_TIMEOUT = 2000, /* 2 sec */ }; +struct tpm_info { + unsigned long start; + unsigned long len; + unsigned int irq; +}; + +static struct tpm_info tis_default_info = { + .start = TIS_MEM_BASE, + .len = TIS_MEM_LEN, + .irq = 0, +}; /* Some timeout values are needed before it is known whether the chip is * TPM 1.0 or TPM 2.0. @@ -91,26 +103,54 @@ }; #if defined(CONFIG_PNP) && defined(CONFIG_ACPI) -static int is_itpm(struct pnp_dev *dev) +static int has_hid(struct acpi_device *dev, const char *hid) { - struct acpi_device *acpi = pnp_acpi_device(dev); struct acpi_hardware_id *id; - if (!acpi) - return 0; - - list_for_each_entry(id, &acpi->pnp.ids, list) { - if (!strcmp("INTC0102", id->id)) + list_for_each_entry(id, &dev->pnp.ids, list) + if (!strcmp(hid, id->id)) return 1; - } return 0; } + +static inline int is_itpm(struct acpi_device *dev) +{ + return has_hid(dev, "INTC0102"); +} + +static inline int is_fifo(struct acpi_device *dev) +{ + struct acpi_table_tpm2 *tbl; + acpi_status st; + + /* TPM 1.2 FIFO */ + if (!has_hid(dev, "MSFT0101")) + return 1; + + st = acpi_get_table(ACPI_SIG_TPM2, 1, + (struct acpi_table_header **) &tbl); + if (ACPI_FAILURE(st)) { + dev_err(&dev->dev, "failed to get TPM2 ACPI table\n"); + return 0; + } + + if (le32_to_cpu(tbl->start_method) != TPM2_START_FIFO) + return 0; + + /* TPM 2.0 FIFO */ + return 1; +} #else -static inline int is_itpm(struct pnp_dev *dev) +static inline int is_itpm(struct acpi_device *dev) { return 0; } + +static inline int is_fifo(struct acpi_device *dev) +{ + return 1; +} #endif /* Before we attempt to access the TPM we must see that the valid bit is set. @@ -600,9 +640,8 @@ release_locality(chip, chip->vendor.locality, 1); } -static int tpm_tis_init(struct device *dev, acpi_handle acpi_dev_handle, - resource_size_t start, resource_size_t len, - unsigned int irq) +static int tpm_tis_init(struct device *dev, struct tpm_info *tpm_info, + acpi_handle acpi_dev_handle) { u32 vendor, intfcaps, intmask; int rc, i, irq_s, irq_e, probe; @@ -622,7 +661,7 @@ chip->acpi_dev_handle = acpi_dev_handle; #endif - chip->vendor.iobase = devm_ioremap(dev, start, len); + chip->vendor.iobase = devm_ioremap(dev, tpm_info->start, tpm_info->len); if (!chip->vendor.iobase) return -EIO; @@ -707,7 +746,7 @@ chip->vendor.iobase + TPM_INT_ENABLE(chip->vendor.locality)); if (interrupts) - chip->vendor.irq = irq; + chip->vendor.irq = tpm_info->irq; if (interrupts && !chip->vendor.irq) { irq_s = ioread8(chip->vendor.iobase + @@ -766,6 +805,8 @@ iowrite32(intmask, chip->vendor.iobase + TPM_INT_ENABLE(chip->vendor.locality)); + + devm_free_irq(dev, i, chip); } } if (chip->vendor.irq) { @@ -890,27 +931,27 @@ static int tpm_tis_pnp_init(struct pnp_dev *pnp_dev, const struct pnp_device_id *pnp_id) { - resource_size_t start, len; - unsigned int irq = 0; + struct tpm_info tpm_info = tis_default_info; acpi_handle acpi_dev_handle = NULL; - start = pnp_mem_start(pnp_dev, 0); - len = pnp_mem_len(pnp_dev, 0); + tpm_info.start = pnp_mem_start(pnp_dev, 0); + tpm_info.len = pnp_mem_len(pnp_dev, 0); if (pnp_irq_valid(pnp_dev, 0)) - irq = pnp_irq(pnp_dev, 0); + tpm_info.irq = pnp_irq(pnp_dev, 0); else interrupts = false; - if (is_itpm(pnp_dev)) - itpm = true; - #ifdef CONFIG_ACPI - if (pnp_acpi_device(pnp_dev)) + if (pnp_acpi_device(pnp_dev)) { + if (is_itpm(pnp_acpi_device(pnp_dev))) + itpm = true; + acpi_dev_handle = pnp_acpi_device(pnp_dev)->handle; + } #endif - return tpm_tis_init(&pnp_dev->dev, acpi_dev_handle, start, len, irq); + return tpm_tis_init(&pnp_dev->dev, &tpm_info, acpi_dev_handle); } static struct pnp_device_id tpm_pnp_tbl[] = { @@ -930,6 +971,7 @@ static void tpm_tis_pnp_remove(struct pnp_dev *dev) { struct tpm_chip *chip = pnp_get_drvdata(dev); + tpm_chip_unregister(chip); tpm_tis_remove(chip); } @@ -950,6 +992,79 @@ MODULE_PARM_DESC(hid, "Set additional specific HID for this driver to probe"); #endif +#ifdef CONFIG_ACPI +static int tpm_check_resource(struct acpi_resource *ares, void *data) +{ + struct tpm_info *tpm_info = (struct tpm_info *) data; + struct resource res; + + if (acpi_dev_resource_interrupt(ares, 0, &res)) { + tpm_info->irq = res.start; + } else if (acpi_dev_resource_memory(ares, &res)) { + tpm_info->start = res.start; + tpm_info->len = resource_size(&res); + } + + return 1; +} + +static int tpm_tis_acpi_init(struct acpi_device *acpi_dev) +{ + struct list_head resources; + struct tpm_info tpm_info = tis_default_info; + int ret; + + if (!is_fifo(acpi_dev)) + return -ENODEV; + + INIT_LIST_HEAD(&resources); + ret = acpi_dev_get_resources(acpi_dev, &resources, tpm_check_resource, + &tpm_info); + if (ret < 0) + return ret; + + acpi_dev_free_resource_list(&resources); + + if (!tpm_info.irq) + interrupts = false; + + if (is_itpm(acpi_dev)) + itpm = true; + + return tpm_tis_init(&acpi_dev->dev, &tpm_info, acpi_dev->handle); +} + +static int tpm_tis_acpi_remove(struct acpi_device *dev) +{ + struct tpm_chip *chip = dev_get_drvdata(&dev->dev); + + tpm_chip_unregister(chip); + tpm_tis_remove(chip); + + return 0; +} + +static struct acpi_device_id tpm_acpi_tbl[] = { + {"MSFT0101", 0}, /* TPM 2.0 */ + /* Add new here */ + {"", 0}, /* User Specified */ + {"", 0} /* Terminator */ +}; +MODULE_DEVICE_TABLE(acpi, tpm_acpi_tbl); + +static struct acpi_driver tis_acpi_driver = { + .name = "tpm_tis", + .ids = tpm_acpi_tbl, + .ops = { + .add = tpm_tis_acpi_init, + .remove = tpm_tis_acpi_remove, + }, + .drv = { + .pm = &tpm_tis_pm, + }, +}; +#endif + static struct platform_driver tis_drv = { .driver = { .name = "tpm_tis", @@ -966,9 +1081,25 @@ { int rc; #ifdef CONFIG_PNP - if (!force) - return pnp_register_driver(&tis_pnp_driver); + if (!force) { + rc = pnp_register_driver(&tis_pnp_driver); + if (rc) + return rc; + } +#endif +#ifdef CONFIG_ACPI + if (!force) { + rc = acpi_bus_register_driver(&tis_acpi_driver); + if (rc) { +#ifdef CONFIG_PNP + pnp_unregister_driver(&tis_pnp_driver); #endif + return rc; + } + } +#endif + if (!force) + return 0; rc = platform_driver_register(&tis_drv); if (rc < 0) @@ -978,7 +1109,7 @@ rc = PTR_ERR(pdev); goto err_dev; } - rc = tpm_tis_init(&pdev->dev, NULL, TIS_MEM_BASE, TIS_MEM_LEN, 0); + rc = tpm_tis_init(&pdev->dev, &tis_default_info, NULL); if (rc) goto err_init; return 0; @@ -992,9 +1123,14 @@ static void __exit cleanup_tis(void) { struct tpm_chip *chip; -#ifdef CONFIG_PNP +#if defined(CONFIG_PNP) || defined(CONFIG_ACPI) if (!force) { +#ifdef CONFIG_ACPI + acpi_bus_unregister_driver(&tis_acpi_driver); +#endif +#ifdef CONFIG_PNP pnp_unregister_driver(&tis_pnp_driver); +#endif return; } #endif --- linux-raspi2-4.2.0.orig/drivers/clk/Makefile +++ linux-raspi2-4.2.0/drivers/clk/Makefile @@ -19,11 +19,11 @@ obj-$(CONFIG_MACH_ASM9260) += clk-asm9260.o obj-$(CONFIG_COMMON_CLK_AXI_CLKGEN) += clk-axi-clkgen.o obj-$(CONFIG_ARCH_AXXIA) += clk-axm5516.o -obj-$(CONFIG_ARCH_BCM2835) += clk-bcm2835.o obj-$(CONFIG_COMMON_CLK_CDCE706) += clk-cdce706.o obj-$(CONFIG_ARCH_CLPS711X) += clk-clps711x.o obj-$(CONFIG_ARCH_EFM32) += clk-efm32gg.o obj-$(CONFIG_ARCH_HIGHBANK) += clk-highbank.o +obj-$(CONFIG_SND_BCM2708_SOC_HIFIBERRY_DACPLUS) += clk-hifiberry-dacpro.o obj-$(CONFIG_MACH_LOONGSON32) += clk-ls1x.o obj-$(CONFIG_COMMON_CLK_MAX_GEN) += clk-max-gen.o obj-$(CONFIG_COMMON_CLK_MAX77686) += clk-max77686.o @@ -47,7 +47,7 @@ obj-$(CONFIG_COMMON_CLK_XGENE) += clk-xgene.o obj-$(CONFIG_COMMON_CLK_PWM) += clk-pwm.o obj-$(CONFIG_COMMON_CLK_AT91) += at91/ -obj-$(CONFIG_ARCH_BCM) += bcm/ +obj-y += bcm/ obj-$(CONFIG_ARCH_BERLIN) += berlin/ obj-$(CONFIG_ARCH_HISI) += hisilicon/ obj-$(CONFIG_ARCH_MXC) += imx/ --- linux-raspi2-4.2.0.orig/drivers/clk/bcm/Makefile +++ linux-raspi2-4.2.0/drivers/clk/bcm/Makefile @@ -3,4 +3,5 @@ obj-$(CONFIG_CLK_BCM_KONA) += clk-bcm281xx.o obj-$(CONFIG_CLK_BCM_KONA) += clk-bcm21664.o obj-$(CONFIG_COMMON_CLK_IPROC) += clk-iproc-armpll.o clk-iproc-pll.o clk-iproc-asiu.o +obj-$(CONFIG_ARCH_BCM2835)$(CONFIG_ARCH_BCM2708)$(CONFIG_ARCH_BCM2709) += clk-bcm2835.o obj-$(CONFIG_ARCH_BCM_CYGNUS) += clk-cygnus.o --- linux-raspi2-4.2.0.orig/drivers/clk/bcm/clk-bcm2835.c +++ linux-raspi2-4.2.0/drivers/clk/bcm/clk-bcm2835.c @@ -0,0 +1,1580 @@ +/* + * Copyright (C) 2010,2015 Broadcom + * Copyright (C) 2012 Stephen Warren + * + * 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 + */ + +/** + * DOC: BCM2835 CPRMAN (clock manager for the "audio" domain) + * + * The clock tree on the 2835 has several levels. There's a root + * oscillator running at 19.2Mhz. After the oscillator there are 5 + * PLLs, roughly divided as "camera", "ARM", "core", "DSI displays", + * and "HDMI displays". Those 5 PLLs each can divide their output to + * produce up to 4 channels. Finally, there is the level of clocks to + * be consumed by other hardware components (like "H264" or "HDMI + * state machine"), which divide off of some subset of the PLL + * channels. + * + * All of the clocks in the tree are exposed in the DT, because the DT + * may want to make assignments of the final layer of clocks to the + * PLL channels, and some components of the hardware will actually + * skip layers of the tree (for example, the pixel clock comes + * directly from the PLLH PIX channel without using a CM_*CTL clock + * generator). + */ + +#include +#include +#include +#include +#include +#include +#include +#include + +#define CM_PASSWORD 0x5a000000 + +#define CM_GNRICCTL 0x000 +#define CM_GNRICDIV 0x004 +# define CM_DIV_FRAC_BITS 12 + +#define CM_VPUCTL 0x008 +#define CM_VPUDIV 0x00c +#define CM_SYSCTL 0x010 +#define CM_SYSDIV 0x014 +#define CM_PERIACTL 0x018 +#define CM_PERIADIV 0x01c +#define CM_PERIICTL 0x020 +#define CM_PERIIDIV 0x024 +#define CM_H264CTL 0x028 +#define CM_H264DIV 0x02c +#define CM_ISPCTL 0x030 +#define CM_ISPDIV 0x034 +#define CM_V3DCTL 0x038 +#define CM_V3DDIV 0x03c +#define CM_CAM0CTL 0x040 +#define CM_CAM0DIV 0x044 +#define CM_CAM1CTL 0x048 +#define CM_CAM1DIV 0x04c +#define CM_CCP2CTL 0x050 +#define CM_CCP2DIV 0x054 +#define CM_DSI0ECTL 0x058 +#define CM_DSI0EDIV 0x05c +#define CM_DSI0PCTL 0x060 +#define CM_DSI0PDIV 0x064 +#define CM_DPICTL 0x068 +#define CM_DPIDIV 0x06c +#define CM_GP0CTL 0x070 +#define CM_GP0DIV 0x074 +#define CM_GP1CTL 0x078 +#define CM_GP1DIV 0x07c +#define CM_GP2CTL 0x080 +#define CM_GP2DIV 0x084 +#define CM_HSMCTL 0x088 +#define CM_HSMDIV 0x08c +#define CM_OTPCTL 0x090 +#define CM_OTPDIV 0x094 +#define CM_PWMCTL 0x0a0 +#define CM_PWMDIV 0x0a4 +#define CM_SMICTL 0x0b0 +#define CM_SMIDIV 0x0b4 +#define CM_TSENSCTL 0x0e0 +#define CM_TSENSDIV 0x0e4 +#define CM_TIMERCTL 0x0e8 +#define CM_TIMERDIV 0x0ec +#define CM_UARTCTL 0x0f0 +#define CM_UARTDIV 0x0f4 +#define CM_VECCTL 0x0f8 +#define CM_VECDIV 0x0fc +#define CM_PULSECTL 0x190 +#define CM_PULSEDIV 0x194 +#define CM_SDCCTL 0x1a8 +#define CM_SDCDIV 0x1ac +#define CM_ARMCTL 0x1b0 +#define CM_EMMCCTL 0x1c0 +#define CM_EMMCDIV 0x1c4 + +/* General bits for the CM_*CTL regs */ +# define CM_ENABLE BIT(4) +# define CM_KILL BIT(5) +# define CM_GATE_BIT 6 +# define CM_GATE BIT(CM_GATE_BIT) +# define CM_BUSY BIT(7) +# define CM_BUSYD BIT(8) +# define CM_SRC_SHIFT 0 +# define CM_SRC_BITS 4 +# define CM_SRC_MASK 0xf +# define CM_SRC_GND 0 +# define CM_SRC_OSC 1 +# define CM_SRC_TESTDEBUG0 2 +# define CM_SRC_TESTDEBUG1 3 +# define CM_SRC_PLLA_CORE 4 +# define CM_SRC_PLLA_PER 4 +# define CM_SRC_PLLC_CORE0 5 +# define CM_SRC_PLLC_PER 5 +# define CM_SRC_PLLC_CORE1 8 +# define CM_SRC_PLLD_CORE 6 +# define CM_SRC_PLLD_PER 6 +# define CM_SRC_PLLH_AUX 7 +# define CM_SRC_PLLC_CORE1 8 +# define CM_SRC_PLLC_CORE2 9 + +#define CM_OSCCOUNT 0x100 + +#define CM_PLLA 0x104 +# define CM_PLL_ANARST BIT(8) +# define CM_PLLA_HOLDPER BIT(7) +# define CM_PLLA_LOADPER BIT(6) +# define CM_PLLA_HOLDCORE BIT(5) +# define CM_PLLA_LOADCORE BIT(4) +# define CM_PLLA_HOLDCCP2 BIT(3) +# define CM_PLLA_LOADCCP2 BIT(2) +# define CM_PLLA_HOLDDSI0 BIT(1) +# define CM_PLLA_LOADDSI0 BIT(0) + +#define CM_PLLC 0x108 +# define CM_PLLC_HOLDPER BIT(7) +# define CM_PLLC_LOADPER BIT(6) +# define CM_PLLC_HOLDCORE2 BIT(5) +# define CM_PLLC_LOADCORE2 BIT(4) +# define CM_PLLC_HOLDCORE1 BIT(3) +# define CM_PLLC_LOADCORE1 BIT(2) +# define CM_PLLC_HOLDCORE0 BIT(1) +# define CM_PLLC_LOADCORE0 BIT(0) + +#define CM_PLLD 0x10c +# define CM_PLLD_HOLDPER BIT(7) +# define CM_PLLD_LOADPER BIT(6) +# define CM_PLLD_HOLDCORE BIT(5) +# define CM_PLLD_LOADCORE BIT(4) +# define CM_PLLD_HOLDDSI1 BIT(3) +# define CM_PLLD_LOADDSI1 BIT(2) +# define CM_PLLD_HOLDDSI0 BIT(1) +# define CM_PLLD_LOADDSI0 BIT(0) + +#define CM_PLLH 0x110 +# define CM_PLLH_LOADRCAL BIT(2) +# define CM_PLLH_LOADAUX BIT(1) +# define CM_PLLH_LOADPIX BIT(0) + +#define CM_LOCK 0x114 +# define CM_LOCK_FLOCKH BIT(12) +# define CM_LOCK_FLOCKD BIT(11) +# define CM_LOCK_FLOCKC BIT(10) +# define CM_LOCK_FLOCKB BIT(9) +# define CM_LOCK_FLOCKA BIT(8) + +#define CM_EVENT 0x118 +#define CM_DSI1ECTL 0x158 +#define CM_DSI1EDIV 0x15c +#define CM_DSI1PCTL 0x160 +#define CM_DSI1PDIV 0x164 +#define CM_DFTCTL 0x168 +#define CM_DFTDIV 0x16c + +#define CM_PLLB 0x170 +# define CM_PLLB_HOLDARM BIT(1) +# define CM_PLLB_LOADARM BIT(0) + +#define A2W_PLLA_CTRL 0x1100 +#define A2W_PLLC_CTRL 0x1120 +#define A2W_PLLD_CTRL 0x1140 +#define A2W_PLLH_CTRL 0x1160 +#define A2W_PLLB_CTRL 0x11e0 +# define A2W_PLL_CTRL_PRST_DISABLE BIT(17) +# define A2W_PLL_CTRL_PWRDN BIT(16) +# define A2W_PLL_CTRL_PDIV_MASK 0x000007000 +# define A2W_PLL_CTRL_PDIV_SHIFT 12 +# define A2W_PLL_CTRL_NDIV_MASK 0x0000003ff +# define A2W_PLL_CTRL_NDIV_SHIFT 0 + +#define A2W_PLLA_ANA0 0x1010 +#define A2W_PLLC_ANA0 0x1030 +#define A2W_PLLD_ANA0 0x1050 +#define A2W_PLLH_ANA0 0x1070 +#define A2W_PLLB_ANA0 0x10f0 + +#define A2W_PLL_KA_SHIFT 7 +#define A2W_PLL_KA_MASK GENMASK(9, 7) +#define A2W_PLL_KI_SHIFT 19 +#define A2W_PLL_KI_MASK GENMASK(21, 19) +#define A2W_PLL_KP_SHIFT 15 +#define A2W_PLL_KP_MASK GENMASK(18, 15) + +#define A2W_PLLH_KA_SHIFT 19 +#define A2W_PLLH_KA_MASK GENMASK(21, 19) +#define A2W_PLLH_KI_LOW_SHIFT 22 +#define A2W_PLLH_KI_LOW_MASK GENMASK(23, 22) +#define A2W_PLLH_KI_HIGH_SHIFT 0 +#define A2W_PLLH_KI_HIGH_MASK GENMASK(0, 0) +#define A2W_PLLH_KP_SHIFT 1 +#define A2W_PLLH_KP_MASK GENMASK(4, 1) + +#define A2W_XOSC_CTRL 0x1190 +# define A2W_XOSC_CTRL_PLLB_ENABLE BIT(7) +# define A2W_XOSC_CTRL_PLLA_ENABLE BIT(6) +# define A2W_XOSC_CTRL_PLLD_ENABLE BIT(5) +# define A2W_XOSC_CTRL_DDR_ENABLE BIT(4) +# define A2W_XOSC_CTRL_CPR1_ENABLE BIT(3) +# define A2W_XOSC_CTRL_USB_ENABLE BIT(2) +# define A2W_XOSC_CTRL_HDMI_ENABLE BIT(1) +# define A2W_XOSC_CTRL_PLLC_ENABLE BIT(0) + +#define A2W_PLLA_FRAC 0x1200 +#define A2W_PLLC_FRAC 0x1220 +#define A2W_PLLD_FRAC 0x1240 +#define A2W_PLLH_FRAC 0x1260 +#define A2W_PLLB_FRAC 0x12e0 +# define A2W_PLL_FRAC_MASK ((1 << A2W_PLL_FRAC_BITS) - 1) +# define A2W_PLL_FRAC_BITS 20 + +#define A2W_PLL_CHANNEL_DISABLE BIT(8) +#define A2W_PLL_DIV_BITS 8 +#define A2W_PLL_DIV_SHIFT 0 + +#define A2W_PLLA_DSI0 0x1300 +#define A2W_PLLA_CORE 0x1400 +#define A2W_PLLA_PER 0x1500 +#define A2W_PLLA_CCP2 0x1600 + +#define A2W_PLLC_CORE2 0x1320 +#define A2W_PLLC_CORE1 0x1420 +#define A2W_PLLC_PER 0x1520 +#define A2W_PLLC_CORE0 0x1620 + +#define A2W_PLLD_DSI0 0x1340 +#define A2W_PLLD_CORE 0x1440 +#define A2W_PLLD_PER 0x1540 +#define A2W_PLLD_DSI1 0x1640 + +#define A2W_PLLH_AUX 0x1360 +#define A2W_PLLH_RCAL 0x1460 +#define A2W_PLLH_PIX 0x1560 +#define A2W_PLLH_STS 0x1660 + +#define A2W_PLLH_CTRLR 0x1960 +#define A2W_PLLH_FRACR 0x1a60 +#define A2W_PLLH_AUXR 0x1b60 +#define A2W_PLLH_RCALR 0x1c60 +#define A2W_PLLH_PIXR 0x1d60 +#define A2W_PLLH_STSR 0x1e60 + +#define A2W_PLLB_ARM 0x13e0 +#define A2W_PLLB_SP0 0x14e0 +#define A2W_PLLB_SP1 0x15e0 +#define A2W_PLLB_SP2 0x16e0 + +#define LOCK_TIMEOUT_NS 100000000 +#define BCM2835_MAX_FB_RATE 1750000000u + +struct bcm2835_cprman { + struct device *dev; + void __iomem *regs; + spinlock_t regs_lock; + const char *osc_name; + + struct clk_onecell_data onecell; + struct clk *clks[BCM2835_CLOCK_COUNT]; +}; + +static inline void cprman_write(struct bcm2835_cprman *cprman, u32 reg, u32 val) +{ + writel(CM_PASSWORD | val, cprman->regs + reg); +} + +static inline u32 cprman_read(struct bcm2835_cprman *cprman, u32 reg) +{ + return readl(cprman->regs + reg); +} + +/* + * These are fixed clocks. They're probably not all root clocks and it may + * be possible to turn them on and off but until this is mapped out better + * it's the only way they can be used. + */ +void __init bcm2835_init_clocks(void) +{ + struct clk *clk; + int ret; + + clk = clk_register_fixed_rate(NULL, "sys_pclk", NULL, CLK_IS_ROOT, + 250000000); + if (IS_ERR(clk)) + pr_err("sys_pclk not registered\n"); + + clk = clk_register_fixed_rate(NULL, "apb_pclk", NULL, CLK_IS_ROOT, + 126000000); + if (IS_ERR(clk)) + pr_err("apb_pclk not registered\n"); + + clk = clk_register_fixed_rate(NULL, "uart0_pclk", NULL, CLK_IS_ROOT, + 3000000); + if (IS_ERR(clk)) + pr_err("uart0_pclk not registered\n"); + ret = clk_register_clkdev(clk, NULL, "20201000.uart"); + if (ret) + pr_err("uart0_pclk alias not registered\n"); + + clk = clk_register_fixed_rate(NULL, "uart1_pclk", NULL, CLK_IS_ROOT, + 125000000); + if (IS_ERR(clk)) + pr_err("uart1_pclk not registered\n"); + ret = clk_register_clkdev(clk, NULL, "20215000.uart"); + if (ret) + pr_err("uart1_pclk alias not registered\n"); +} + +struct bcm2835_pll_data { + const char *name; + u32 cm_ctrl_reg; + u32 a2w_ctrl_reg; + u32 frac_reg; + u32 ana_reg_base; + u32 reference_enable_mask; + /* Bit in CM_LOCK to indicate when the PLL has locked. */ + u32 lock_mask; + + const struct bcm2835_pll_ana_bits *ana; + + unsigned long min_rate; + unsigned long max_rate; + /* + * Highest rate for the VCO before we have to use the + * pre-divide-by-2. + */ + unsigned long max_fb_rate; +}; + +struct bcm2835_pll_ana_bits { + u32 mask0; + u32 set0; + u32 mask1; + u32 set1; + u32 mask3; + u32 set3; + u32 fb_prediv_mask; +}; + +static const struct bcm2835_pll_ana_bits bcm2835_ana_default = { + .mask0 = 0, + .set0 = 0, + .mask1 = ~(A2W_PLL_KI_MASK | A2W_PLL_KP_MASK), + .set1 = (2 << A2W_PLL_KI_SHIFT) | (8 << A2W_PLL_KP_SHIFT), + .mask3 = ~A2W_PLL_KA_MASK, + .set3 = (2 << A2W_PLL_KA_SHIFT), + .fb_prediv_mask = BIT(14), +}; + +static const struct bcm2835_pll_ana_bits bcm2835_ana_pllh = { + .mask0 = ~(A2W_PLLH_KA_MASK | A2W_PLLH_KI_LOW_MASK), + .set0 = (2 << A2W_PLLH_KA_SHIFT) | (2 << A2W_PLLH_KI_LOW_SHIFT), + .mask1 = ~(A2W_PLLH_KI_HIGH_MASK | A2W_PLLH_KP_MASK), + .set1 = (6 << A2W_PLLH_KP_SHIFT), + .mask3 = 0, + .set3 = 0, + .fb_prediv_mask = BIT(11), +}; + +/* + * PLLA is the auxiliary PLL, used to drive the CCP2 (Compact Camera + * Port 2) transmitter clock. + * + * It is in the PX LDO power domain, which is on when the AUDIO domain + * is on. + */ +static const struct bcm2835_pll_data bcm2835_plla_data = { + .name = "plla", + .cm_ctrl_reg = CM_PLLA, + .a2w_ctrl_reg = A2W_PLLA_CTRL, + .frac_reg = A2W_PLLA_FRAC, + .ana_reg_base = A2W_PLLA_ANA0, + .reference_enable_mask = A2W_XOSC_CTRL_PLLA_ENABLE, + .lock_mask = CM_LOCK_FLOCKA, + + .ana = &bcm2835_ana_default, + + .min_rate = 600000000u, + .max_rate = 2400000000u, + .max_fb_rate = BCM2835_MAX_FB_RATE, +}; + +/* PLLB is used for the ARM's clock. */ +static const struct bcm2835_pll_data bcm2835_pllb_data = { + .name = "pllb", + .cm_ctrl_reg = CM_PLLB, + .a2w_ctrl_reg = A2W_PLLB_CTRL, + .frac_reg = A2W_PLLB_FRAC, + .ana_reg_base = A2W_PLLB_ANA0, + .reference_enable_mask = A2W_XOSC_CTRL_PLLB_ENABLE, + .lock_mask = CM_LOCK_FLOCKB, + + .ana = &bcm2835_ana_default, + + .min_rate = 600000000u, + .max_rate = 3000000000u, + .max_fb_rate = BCM2835_MAX_FB_RATE, +}; + +/* + * PLLC is the core PLL, used to drive the core VPU clock. + * + * It is in the PX LDO power domain, which is on when the AUDIO domain + * is on. +*/ +static const struct bcm2835_pll_data bcm2835_pllc_data = { + .name = "pllc", + .cm_ctrl_reg = CM_PLLC, + .a2w_ctrl_reg = A2W_PLLC_CTRL, + .frac_reg = A2W_PLLC_FRAC, + .ana_reg_base = A2W_PLLC_ANA0, + .reference_enable_mask = A2W_XOSC_CTRL_PLLC_ENABLE, + .lock_mask = CM_LOCK_FLOCKC, + + .ana = &bcm2835_ana_default, + + .min_rate = 600000000u, + .max_rate = 3000000000u, + .max_fb_rate = BCM2835_MAX_FB_RATE, +}; + +/* + * PLLD is the display PLL, used to drive DSI display panels. + * + * It is in the PX LDO power domain, which is on when the AUDIO domain + * is on. + */ +static const struct bcm2835_pll_data bcm2835_plld_data = { + .name = "plld", + .cm_ctrl_reg = CM_PLLD, + .a2w_ctrl_reg = A2W_PLLD_CTRL, + .frac_reg = A2W_PLLD_FRAC, + .ana_reg_base = A2W_PLLD_ANA0, + .reference_enable_mask = A2W_XOSC_CTRL_DDR_ENABLE, + .lock_mask = CM_LOCK_FLOCKD, + + .ana = &bcm2835_ana_default, + + .min_rate = 600000000u, + .max_rate = 2400000000u, + .max_fb_rate = BCM2835_MAX_FB_RATE, +}; + +/* + * PLLH is used to supply the pixel clock or the AUX clock for the TV + * encoder. + * + * It is in the HDMI power domain. + */ +static const struct bcm2835_pll_data bcm2835_pllh_data = { + "pllh", + .cm_ctrl_reg = CM_PLLH, + .a2w_ctrl_reg = A2W_PLLH_CTRL, + .frac_reg = A2W_PLLH_FRAC, + .ana_reg_base = A2W_PLLH_ANA0, + .reference_enable_mask = A2W_XOSC_CTRL_PLLC_ENABLE, + .lock_mask = CM_LOCK_FLOCKH, + + .ana = &bcm2835_ana_pllh, + + .min_rate = 600000000u, + .max_rate = 3000000000u, + .max_fb_rate = BCM2835_MAX_FB_RATE, +}; + +struct bcm2835_pll_divider_data { + const char *name; + const struct bcm2835_pll_data *source_pll; + u32 cm_reg; + u32 a2w_reg; + + u32 load_mask; + u32 hold_mask; + u32 fixed_divider; +}; + +static const struct bcm2835_pll_divider_data bcm2835_plla_core_data = { + .name = "plla_core", + .source_pll = &bcm2835_plla_data, + .cm_reg = CM_PLLA, + .a2w_reg = A2W_PLLA_CORE, + .load_mask = CM_PLLA_LOADCORE, + .hold_mask = CM_PLLA_HOLDCORE, + .fixed_divider = 1, +}; + +static const struct bcm2835_pll_divider_data bcm2835_plla_per_data = { + .name = "plla_per", + .source_pll = &bcm2835_plla_data, + .cm_reg = CM_PLLA, + .a2w_reg = A2W_PLLA_PER, + .load_mask = CM_PLLA_LOADPER, + .hold_mask = CM_PLLA_HOLDPER, + .fixed_divider = 1, +}; + +static const struct bcm2835_pll_divider_data bcm2835_pllb_arm_data = { + .name = "pllb_arm", + .source_pll = &bcm2835_pllb_data, + .cm_reg = CM_PLLB, + .a2w_reg = A2W_PLLB_ARM, + .load_mask = CM_PLLB_LOADARM, + .hold_mask = CM_PLLB_HOLDARM, + .fixed_divider = 1, +}; + +static const struct bcm2835_pll_divider_data bcm2835_pllc_core0_data = { + .name = "pllc_core0", + .source_pll = &bcm2835_pllc_data, + .cm_reg = CM_PLLC, + .a2w_reg = A2W_PLLC_CORE0, + .load_mask = CM_PLLC_LOADCORE0, + .hold_mask = CM_PLLC_HOLDCORE0, + .fixed_divider = 1, +}; + +static const struct bcm2835_pll_divider_data bcm2835_pllc_core1_data = { + .name = "pllc_core1", .source_pll = &bcm2835_pllc_data, + .cm_reg = CM_PLLC, A2W_PLLC_CORE1, + .load_mask = CM_PLLC_LOADCORE1, + .hold_mask = CM_PLLC_HOLDCORE1, + .fixed_divider = 1, +}; + +static const struct bcm2835_pll_divider_data bcm2835_pllc_core2_data = { + .name = "pllc_core2", + .source_pll = &bcm2835_pllc_data, + .cm_reg = CM_PLLC, + .a2w_reg = A2W_PLLC_CORE2, + .load_mask = CM_PLLC_LOADCORE2, + .hold_mask = CM_PLLC_HOLDCORE2, + .fixed_divider = 1, +}; + +static const struct bcm2835_pll_divider_data bcm2835_pllc_per_data = { + .name = "pllc_per", + .source_pll = &bcm2835_pllc_data, + .cm_reg = CM_PLLC, + .a2w_reg = A2W_PLLC_PER, + .load_mask = CM_PLLC_LOADPER, + .hold_mask = CM_PLLC_HOLDPER, + .fixed_divider = 1, +}; + +static const struct bcm2835_pll_divider_data bcm2835_plld_core_data = { + .name = "plld_core", + .source_pll = &bcm2835_plld_data, + .cm_reg = CM_PLLD, + .a2w_reg = A2W_PLLD_CORE, + .load_mask = CM_PLLD_LOADCORE, + .hold_mask = CM_PLLD_HOLDCORE, + .fixed_divider = 1, +}; + +static const struct bcm2835_pll_divider_data bcm2835_plld_per_data = { + .name = "plld_per", + .source_pll = &bcm2835_plld_data, + .cm_reg = CM_PLLD, + .a2w_reg = A2W_PLLD_PER, + .load_mask = CM_PLLD_LOADPER, + .hold_mask = CM_PLLD_HOLDPER, + .fixed_divider = 1, +}; + +static const struct bcm2835_pll_divider_data bcm2835_pllh_rcal_data = { + .name = "pllh_rcal", + .source_pll = &bcm2835_pllh_data, + .cm_reg = CM_PLLH, + .a2w_reg = A2W_PLLH_RCAL, + .load_mask = CM_PLLH_LOADRCAL, + .hold_mask = 0, + .fixed_divider = 10, +}; + +static const struct bcm2835_pll_divider_data bcm2835_pllh_aux_data = { + .name = "pllh_aux", + .source_pll = &bcm2835_pllh_data, + .cm_reg = CM_PLLH, + .a2w_reg = A2W_PLLH_AUX, + .load_mask = CM_PLLH_LOADAUX, + .hold_mask = 0, + .fixed_divider = 10, +}; + +static const struct bcm2835_pll_divider_data bcm2835_pllh_pix_data = { + .name = "pllh_pix", + .source_pll = &bcm2835_pllh_data, + .cm_reg = CM_PLLH, + .a2w_reg = A2W_PLLH_PIX, + .load_mask = CM_PLLH_LOADPIX, + .hold_mask = 0, + .fixed_divider = 10, +}; + +struct bcm2835_clock_data { + const char *name; + + const char *const *parents; + int num_mux_parents; + + u32 ctl_reg; + u32 div_reg; + + /* Number of integer bits in the divider */ + u32 int_bits; + /* Number of fractional bits in the divider */ + u32 frac_bits; + + bool is_vpu_clock; +}; + +static const char *const bcm2835_clock_per_parents[] = { + "gnd", + "xosc", + "testdebug0", + "testdebug1", + "plla_per", + "pllc_per", + "plld_per", + "pllh_aux", +}; + +static const char *const bcm2835_clock_vpu_parents[] = { + "gnd", + "xosc", + "testdebug0", + "testdebug1", + "plla_core", + "pllc_core0", + "plld_core", + "pllh_aux", + "pllc_core1", + "pllc_core2", +}; + +static const char *const bcm2835_clock_osc_parents[] = { + "gnd", + "xosc", + "testdebug0", + "testdebug1" +}; + +/* + * Used for a 1Mhz clock for the system clocksource, and also used by + * the watchdog timer and the camera pulse generator. + */ +static const struct bcm2835_clock_data bcm2835_clock_timer_data = { + .name = "timer", + .num_mux_parents = ARRAY_SIZE(bcm2835_clock_osc_parents), + .parents = bcm2835_clock_osc_parents, + .ctl_reg = CM_TIMERCTL, + .div_reg = CM_TIMERDIV, + .int_bits = 6, + .frac_bits = 12, +}; + +/* One Time Programmable Memory clock. Maximum 10Mhz. */ +static const struct bcm2835_clock_data bcm2835_clock_otp_data = { + .name = "otp", + .num_mux_parents = ARRAY_SIZE(bcm2835_clock_osc_parents), + .parents = bcm2835_clock_osc_parents, + .ctl_reg = CM_OTPCTL, + .div_reg = CM_OTPDIV, + .int_bits = 4, + .frac_bits = 0, +}; + +/* + * VPU clock. This doesn't have an enable bit, since it drives the + * bus for everything else, and is special so it doesn't need to be + * gated for rate changes. It is also known as "clk_audio" in various + * hardware documentation. + */ +static const struct bcm2835_clock_data bcm2835_clock_vpu_data = { + .name = "vpu", + .num_mux_parents = ARRAY_SIZE(bcm2835_clock_vpu_parents), + .parents = bcm2835_clock_vpu_parents, + .ctl_reg = CM_VPUCTL, + .div_reg = CM_VPUDIV, + .int_bits = 12, + .frac_bits = 8, + .is_vpu_clock = true, +}; + +static const struct bcm2835_clock_data bcm2835_clock_v3d_data = { + .name = "v3d", + .num_mux_parents = ARRAY_SIZE(bcm2835_clock_vpu_parents), + .parents = bcm2835_clock_vpu_parents, + .ctl_reg = CM_V3DCTL, + .div_reg = CM_V3DDIV, + .int_bits = 4, + .frac_bits = 8, +}; + +static const struct bcm2835_clock_data bcm2835_clock_isp_data = { + .name = "isp", + .num_mux_parents = ARRAY_SIZE(bcm2835_clock_vpu_parents), + .parents = bcm2835_clock_vpu_parents, + .ctl_reg = CM_ISPCTL, + .div_reg = CM_ISPDIV, + .int_bits = 4, + .frac_bits = 8, +}; + +static const struct bcm2835_clock_data bcm2835_clock_h264_data = { + .name = "h264", + .num_mux_parents = ARRAY_SIZE(bcm2835_clock_vpu_parents), + .parents = bcm2835_clock_vpu_parents, + .ctl_reg = CM_H264CTL, + .div_reg = CM_H264DIV, + .int_bits = 4, + .frac_bits = 8, +}; + +/* TV encoder clock. Only operating frequency is 108Mhz. */ +static const struct bcm2835_clock_data bcm2835_clock_vec_data = { + .name = "vec", + .num_mux_parents = ARRAY_SIZE(bcm2835_clock_per_parents), + .parents = bcm2835_clock_per_parents, + .ctl_reg = CM_VECCTL, + .div_reg = CM_VECDIV, + .int_bits = 4, + .frac_bits = 0, +}; + +static const struct bcm2835_clock_data bcm2835_clock_uart_data = { + .name = "uart", + .num_mux_parents = ARRAY_SIZE(bcm2835_clock_per_parents), + .parents = bcm2835_clock_per_parents, + .ctl_reg = CM_UARTCTL, + .div_reg = CM_UARTDIV, + .int_bits = 10, + .frac_bits = 12, +}; + +/* HDMI state machine */ +static const struct bcm2835_clock_data bcm2835_clock_hsm_data = { + .name = "hsm", + .num_mux_parents = ARRAY_SIZE(bcm2835_clock_per_parents), + .parents = bcm2835_clock_per_parents, + .ctl_reg = CM_HSMCTL, + .div_reg = CM_HSMDIV, + .int_bits = 4, + .frac_bits = 8, +}; + +/* + * Secondary SDRAM clock. Used for low-voltage modes when the PLL in + * the SDRAM controller can't be used. + */ +static const struct bcm2835_clock_data bcm2835_clock_sdram_data = { + .name = "sdram", + .num_mux_parents = ARRAY_SIZE(bcm2835_clock_vpu_parents), + .parents = bcm2835_clock_vpu_parents, + .ctl_reg = CM_SDCCTL, + .div_reg = CM_SDCDIV, + .int_bits = 6, + .frac_bits = 0, +}; + +/* Clock for the temperature sensor. Generally run at 2Mhz, max 5Mhz. */ +static const struct bcm2835_clock_data bcm2835_clock_tsens_data = { + .name = "tsens", + .num_mux_parents = ARRAY_SIZE(bcm2835_clock_osc_parents), + .parents = bcm2835_clock_osc_parents, + .ctl_reg = CM_TSENSCTL, + .div_reg = CM_TSENSDIV, + .int_bits = 5, + .frac_bits = 0, +}; + +/* Arasan EMMC clock */ +static const struct bcm2835_clock_data bcm2835_clock_emmc_data = { + .name = "emmc", + .num_mux_parents = ARRAY_SIZE(bcm2835_clock_per_parents), + .parents = bcm2835_clock_per_parents, + .ctl_reg = CM_EMMCCTL, + .div_reg = CM_EMMCDIV, + .int_bits = 4, + .frac_bits = 8, +}; + +struct bcm2835_pll { + struct clk_hw hw; + struct bcm2835_cprman *cprman; + const struct bcm2835_pll_data *data; +}; + +static int bcm2835_pll_is_on(struct clk_hw *hw) +{ + 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; + + return cprman_read(cprman, data->a2w_ctrl_reg) & + A2W_PLL_CTRL_PRST_DISABLE; +} + +static void bcm2835_pll_choose_ndiv_and_fdiv(unsigned long rate, + unsigned long parent_rate, + u32 *ndiv, u32 *fdiv) +{ + u64 div; + + div = (u64)rate << A2W_PLL_FRAC_BITS; + do_div(div, parent_rate); + + *ndiv = div >> A2W_PLL_FRAC_BITS; + *fdiv = div & ((1 << A2W_PLL_FRAC_BITS) - 1); +} + +static long bcm2835_pll_rate_from_divisors(unsigned long parent_rate, + u32 ndiv, u32 fdiv, u32 pdiv) +{ + u64 rate; + + if (pdiv == 0) + return 0; + + rate = (u64)parent_rate * ((ndiv << A2W_PLL_FRAC_BITS) + fdiv); + do_div(rate, pdiv); + return rate >> A2W_PLL_FRAC_BITS; +} + +static long bcm2835_pll_round_rate(struct clk_hw *hw, unsigned long rate, + unsigned long *parent_rate) +{ + u32 ndiv, fdiv; + + bcm2835_pll_choose_ndiv_and_fdiv(rate, *parent_rate, &ndiv, &fdiv); + + return bcm2835_pll_rate_from_divisors(*parent_rate, ndiv, fdiv, 1); +} + +static unsigned long bcm2835_pll_get_rate(struct clk_hw *hw, + unsigned long parent_rate) +{ + 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 a2wctrl = cprman_read(cprman, data->a2w_ctrl_reg); + u32 ndiv, pdiv, fdiv; + bool using_prediv; + + if (parent_rate == 0) + return 0; + + fdiv = cprman_read(cprman, data->frac_reg) & A2W_PLL_FRAC_MASK; + 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; + + if (using_prediv) + ndiv *= 2; + + return bcm2835_pll_rate_from_divisors(parent_rate, ndiv, fdiv, pdiv); +} + +static void bcm2835_pll_off(struct clk_hw *hw) +{ + 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; + + cprman_write(cprman, data->cm_ctrl_reg, CM_PLL_ANARST); + cprman_write(cprman, data->a2w_ctrl_reg, A2W_PLL_CTRL_PWRDN); +} + +static int bcm2835_pll_on(struct clk_hw *hw) +{ + 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; + ktime_t timeout; + + /* Take the PLL out of reset. */ + cprman_write(cprman, data->cm_ctrl_reg, + cprman_read(cprman, data->cm_ctrl_reg) & ~CM_PLL_ANARST); + + /* Wait for the PLL to lock. */ + timeout = ktime_add_ns(ktime_get(), LOCK_TIMEOUT_NS); + while (!(cprman_read(cprman, CM_LOCK) & data->lock_mask)) { + if (ktime_after(ktime_get(), timeout)) { + dev_err(cprman->dev, "%s: couldn't lock PLL\n", + pll->data->name); + return -ETIMEDOUT; + } + + cpu_relax(); + } + + return 0; +} + +static void +bcm2835_pll_write_ana(struct bcm2835_cprman *cprman, u32 ana_reg_base, u32 *ana) +{ + int i; + + /* + * ANA register setup is done as a series of writes to + * ANA3-ANA0, in that order. This lets us write all 4 + * registers as a single cycle of the serdes interface (taking + * 100 xosc clocks), whereas if we were to update ana0, 1, and + * 3 individually through their partial-write registers, each + * would be their own serdes cycle. + */ + for (i = 3; i >= 0; i--) + cprman_write(cprman, ana_reg_base + i * 4, ana[i]); +} + +static int bcm2835_pll_set_rate(struct clk_hw *hw, + unsigned long rate, unsigned long parent_rate) +{ + 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; + bool was_using_prediv, use_fb_prediv, do_ana_setup_first; + u32 ndiv, fdiv, a2w_ctl; + u32 ana[4]; + int i; + + if (rate < data->min_rate || rate > data->max_rate) { + dev_err(cprman->dev, "%s: rate out of spec: %lu vs (%lu, %lu)\n", + pll->data->name, rate, + data->min_rate, data->max_rate); + return -EINVAL; + } + + if (rate > data->max_fb_rate) { + use_fb_prediv = true; + rate /= 2; + } else { + use_fb_prediv = false; + } + + bcm2835_pll_choose_ndiv_and_fdiv(rate, parent_rate, &ndiv, &fdiv); + + 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; + + ana[0] &= ~data->ana->mask0; + ana[0] |= data->ana->set0; + ana[1] &= ~data->ana->mask1; + ana[1] |= data->ana->set1; + ana[3] &= ~data->ana->mask3; + ana[3] |= data->ana->set3; + + if (was_using_prediv && !use_fb_prediv) { + ana[1] &= ~data->ana->fb_prediv_mask; + do_ana_setup_first = true; + } else if (!was_using_prediv && use_fb_prediv) { + ana[1] |= data->ana->fb_prediv_mask; + do_ana_setup_first = false; + } else { + do_ana_setup_first = true; + } + + /* Unmask the reference clock from the oscillator. */ + cprman_write(cprman, A2W_XOSC_CTRL, + cprman_read(cprman, A2W_XOSC_CTRL) | + data->reference_enable_mask); + + if (do_ana_setup_first) + bcm2835_pll_write_ana(cprman, data->ana_reg_base, ana); + + /* Set the PLL multiplier from the oscillator. */ + cprman_write(cprman, data->frac_reg, fdiv); + + a2w_ctl = cprman_read(cprman, data->a2w_ctrl_reg); + a2w_ctl &= ~A2W_PLL_CTRL_NDIV_MASK; + a2w_ctl |= ndiv << A2W_PLL_CTRL_NDIV_SHIFT; + a2w_ctl &= ~A2W_PLL_CTRL_PDIV_MASK; + a2w_ctl |= 1 << A2W_PLL_CTRL_PDIV_SHIFT; + cprman_write(cprman, data->a2w_ctrl_reg, a2w_ctl); + + if (!do_ana_setup_first) + bcm2835_pll_write_ana(cprman, data->ana_reg_base, ana); + + return 0; +} + +static const struct clk_ops bcm2835_pll_clk_ops = { + .is_prepared = bcm2835_pll_is_on, + .prepare = bcm2835_pll_on, + .unprepare = bcm2835_pll_off, + .recalc_rate = bcm2835_pll_get_rate, + .set_rate = bcm2835_pll_set_rate, + .round_rate = bcm2835_pll_round_rate, +}; + +struct bcm2835_pll_divider { + struct clk_divider div; + struct bcm2835_cprman *cprman; + const struct bcm2835_pll_divider_data *data; +}; + +static struct bcm2835_pll_divider * +bcm2835_pll_divider_from_hw(struct clk_hw *hw) +{ + return container_of(hw, struct bcm2835_pll_divider, div.hw); +} + +static int bcm2835_pll_divider_is_on(struct clk_hw *hw) +{ + struct bcm2835_pll_divider *divider = bcm2835_pll_divider_from_hw(hw); + struct bcm2835_cprman *cprman = divider->cprman; + const struct bcm2835_pll_divider_data *data = divider->data; + + return !(cprman_read(cprman, data->a2w_reg) & A2W_PLL_CHANNEL_DISABLE); +} + +static long bcm2835_pll_divider_round_rate(struct clk_hw *hw, + unsigned long rate, + unsigned long *parent_rate) +{ + return clk_divider_ops.round_rate(hw, rate, parent_rate); +} + +static unsigned long bcm2835_pll_divider_get_rate(struct clk_hw *hw, + unsigned long parent_rate) +{ + struct bcm2835_pll_divider *divider = bcm2835_pll_divider_from_hw(hw); + struct bcm2835_cprman *cprman = divider->cprman; + const struct bcm2835_pll_divider_data *data = divider->data; + u32 div = cprman_read(cprman, data->a2w_reg); + + div &= (1 << A2W_PLL_DIV_BITS) - 1; + if (div == 0) + div = 256; + + return parent_rate / div; +} + +static void bcm2835_pll_divider_off(struct clk_hw *hw) +{ + struct bcm2835_pll_divider *divider = bcm2835_pll_divider_from_hw(hw); + struct bcm2835_cprman *cprman = divider->cprman; + const struct bcm2835_pll_divider_data *data = divider->data; + + cprman_write(cprman, data->cm_reg, + (cprman_read(cprman, data->cm_reg) & + ~data->load_mask) | data->hold_mask); + cprman_write(cprman, data->a2w_reg, A2W_PLL_CHANNEL_DISABLE); +} + +static int bcm2835_pll_divider_on(struct clk_hw *hw) +{ + struct bcm2835_pll_divider *divider = bcm2835_pll_divider_from_hw(hw); + struct bcm2835_cprman *cprman = divider->cprman; + const struct bcm2835_pll_divider_data *data = divider->data; + + cprman_write(cprman, data->a2w_reg, + cprman_read(cprman, data->a2w_reg) & + ~A2W_PLL_CHANNEL_DISABLE); + + cprman_write(cprman, data->cm_reg, + cprman_read(cprman, data->cm_reg) & ~data->hold_mask); + + return 0; +} + +static int bcm2835_pll_divider_set_rate(struct clk_hw *hw, + unsigned long rate, + unsigned long parent_rate) +{ + struct bcm2835_pll_divider *divider = bcm2835_pll_divider_from_hw(hw); + struct bcm2835_cprman *cprman = divider->cprman; + const struct bcm2835_pll_divider_data *data = divider->data; + u32 cm; + int ret; + + ret = clk_divider_ops.set_rate(hw, rate, parent_rate); + if (ret) + return ret; + + cm = cprman_read(cprman, data->cm_reg); + cprman_write(cprman, data->cm_reg, cm | data->load_mask); + cprman_write(cprman, data->cm_reg, cm & ~data->load_mask); + + return 0; +} + +static const struct clk_ops bcm2835_pll_divider_clk_ops = { + .is_prepared = bcm2835_pll_divider_is_on, + .prepare = bcm2835_pll_divider_on, + .unprepare = bcm2835_pll_divider_off, + .recalc_rate = bcm2835_pll_divider_get_rate, + .set_rate = bcm2835_pll_divider_set_rate, + .round_rate = bcm2835_pll_divider_round_rate, +}; + +/* + * The CM dividers do fixed-point division, so we can't use the + * generic integer divider code like the PLL dividers do (and we can't + * fake it by having some fixed shifts preceding it in the clock tree, + * because we'd run out of bits in a 32-bit unsigned long). + */ +struct bcm2835_clock { + struct clk_hw hw; + struct bcm2835_cprman *cprman; + const struct bcm2835_clock_data *data; +}; + +static struct bcm2835_clock *bcm2835_clock_from_hw(struct clk_hw *hw) +{ + return container_of(hw, struct bcm2835_clock, hw); +} + +static int bcm2835_clock_is_on(struct clk_hw *hw) +{ + struct bcm2835_clock *clock = bcm2835_clock_from_hw(hw); + struct bcm2835_cprman *cprman = clock->cprman; + const struct bcm2835_clock_data *data = clock->data; + + return (cprman_read(cprman, data->ctl_reg) & CM_ENABLE) != 0; +} + +static u32 bcm2835_clock_choose_div(struct clk_hw *hw, + unsigned long rate, + unsigned long parent_rate) +{ + struct bcm2835_clock *clock = bcm2835_clock_from_hw(hw); + const struct bcm2835_clock_data *data = clock->data; + u32 unused_frac_mask = GENMASK(CM_DIV_FRAC_BITS - data->frac_bits, 0); + u64 temp = (u64)parent_rate << CM_DIV_FRAC_BITS; + u32 div; + + do_div(temp, rate); + div = temp; + + /* Round and mask off the unused bits */ + if (unused_frac_mask != 0) { + div += unused_frac_mask >> 1; + div &= ~unused_frac_mask; + } + + /* Clamp to the limits. */ + div = max(div, unused_frac_mask + 1); + div = min_t(u32, div, GENMASK(data->int_bits + CM_DIV_FRAC_BITS - 1, + CM_DIV_FRAC_BITS - data->frac_bits)); + + return div; +} + +static long bcm2835_clock_rate_from_divisor(struct bcm2835_clock *clock, + unsigned long parent_rate, + u32 div) +{ + const struct bcm2835_clock_data *data = clock->data; + u64 temp; + + /* + * The divisor is a 12.12 fixed point field, but only some of + * the bits are populated in any given clock. + */ + div >>= CM_DIV_FRAC_BITS - data->frac_bits; + div &= (1 << (data->int_bits + data->frac_bits)) - 1; + + if (div == 0) + return 0; + + temp = (u64)parent_rate << data->frac_bits; + + do_div(temp, div); + + return temp; +} + +static long bcm2835_clock_round_rate(struct clk_hw *hw, + unsigned long rate, + unsigned long *parent_rate) +{ + struct bcm2835_clock *clock = bcm2835_clock_from_hw(hw); + u32 div = bcm2835_clock_choose_div(hw, rate, *parent_rate); + + return bcm2835_clock_rate_from_divisor(clock, *parent_rate, div); +} + +static unsigned long bcm2835_clock_get_rate(struct clk_hw *hw, + unsigned long parent_rate) +{ + struct bcm2835_clock *clock = bcm2835_clock_from_hw(hw); + struct bcm2835_cprman *cprman = clock->cprman; + const struct bcm2835_clock_data *data = clock->data; + u32 div = cprman_read(cprman, data->div_reg); + + return bcm2835_clock_rate_from_divisor(clock, parent_rate, div); +} + +static void bcm2835_clock_wait_busy(struct bcm2835_clock *clock) +{ + struct bcm2835_cprman *cprman = clock->cprman; + const struct bcm2835_clock_data *data = clock->data; + ktime_t timeout = ktime_add_ns(ktime_get(), LOCK_TIMEOUT_NS); + + while (cprman_read(cprman, data->ctl_reg) & CM_BUSY) { + if (ktime_after(ktime_get(), timeout)) { + dev_err(cprman->dev, "%s: couldn't lock PLL\n", + clock->data->name); + return; + } + cpu_relax(); + } +} + +static void bcm2835_clock_off(struct clk_hw *hw) +{ + struct bcm2835_clock *clock = bcm2835_clock_from_hw(hw); + struct bcm2835_cprman *cprman = clock->cprman; + const struct bcm2835_clock_data *data = clock->data; + + spin_lock(&cprman->regs_lock); + cprman_write(cprman, data->ctl_reg, + cprman_read(cprman, data->ctl_reg) & ~CM_ENABLE); + spin_unlock(&cprman->regs_lock); + + /* BUSY will remain high until the divider completes its cycle. */ + bcm2835_clock_wait_busy(clock); +} + +static int bcm2835_clock_on(struct clk_hw *hw) +{ + struct bcm2835_clock *clock = bcm2835_clock_from_hw(hw); + struct bcm2835_cprman *cprman = clock->cprman; + const struct bcm2835_clock_data *data = clock->data; + + spin_lock(&cprman->regs_lock); + cprman_write(cprman, data->ctl_reg, + cprman_read(cprman, data->ctl_reg) | + CM_ENABLE | + CM_GATE); + spin_unlock(&cprman->regs_lock); + + return 0; +} + +static int bcm2835_clock_set_rate(struct clk_hw *hw, + unsigned long rate, unsigned long parent_rate) +{ + struct bcm2835_clock *clock = bcm2835_clock_from_hw(hw); + struct bcm2835_cprman *cprman = clock->cprman; + const struct bcm2835_clock_data *data = clock->data; + u32 div = bcm2835_clock_choose_div(hw, rate, parent_rate); + + cprman_write(cprman, data->div_reg, div); + + return 0; +} + +static const struct clk_ops bcm2835_clock_clk_ops = { + .is_prepared = bcm2835_clock_is_on, + .prepare = bcm2835_clock_on, + .unprepare = bcm2835_clock_off, + .recalc_rate = bcm2835_clock_get_rate, + .set_rate = bcm2835_clock_set_rate, + .round_rate = bcm2835_clock_round_rate, +}; + +static int bcm2835_vpu_clock_is_on(struct clk_hw *hw) +{ + return true; +} + +/* + * The VPU clock can never be disabled (it doesn't have an ENABLE + * bit), so it gets its own set of clock ops. + */ +static const struct clk_ops bcm2835_vpu_clock_clk_ops = { + .is_prepared = bcm2835_vpu_clock_is_on, + .recalc_rate = bcm2835_clock_get_rate, + .set_rate = bcm2835_clock_set_rate, + .round_rate = bcm2835_clock_round_rate, +}; + +static struct clk *bcm2835_register_pll(struct bcm2835_cprman *cprman, + const struct bcm2835_pll_data *data) +{ + struct bcm2835_pll *pll; + struct clk_init_data init; + + memset(&init, 0, sizeof(init)); + + /* All of the PLLs derive from the external oscillator. */ + init.parent_names = &cprman->osc_name; + init.num_parents = 1; + init.name = data->name; + init.ops = &bcm2835_pll_clk_ops; + init.flags = CLK_IGNORE_UNUSED; + + pll = kzalloc(sizeof(*pll), GFP_KERNEL); + if (!pll) + return NULL; + + pll->cprman = cprman; + pll->data = data; + pll->hw.init = &init; + + return devm_clk_register(cprman->dev, &pll->hw); +} + +static struct clk * +bcm2835_register_pll_divider(struct bcm2835_cprman *cprman, + const struct bcm2835_pll_divider_data *data) +{ + struct bcm2835_pll_divider *divider; + struct clk_init_data init; + struct clk *clk; + const char *divider_name; + + if (data->fixed_divider != 1) { + divider_name = devm_kasprintf(cprman->dev, GFP_KERNEL, + "%s_prediv", data->name); + if (!divider_name) + return NULL; + } else { + divider_name = data->name; + } + + memset(&init, 0, sizeof(init)); + + init.parent_names = &data->source_pll->name; + init.num_parents = 1; + init.name = divider_name; + init.ops = &bcm2835_pll_divider_clk_ops; + init.flags = CLK_SET_RATE_PARENT | CLK_IGNORE_UNUSED; + + divider = devm_kzalloc(cprman->dev, sizeof(*divider), GFP_KERNEL); + if (!divider) + return NULL; + + divider->div.reg = cprman->regs + data->a2w_reg; + divider->div.shift = A2W_PLL_DIV_SHIFT; + divider->div.width = A2W_PLL_DIV_BITS; + divider->div.flags = 0; + divider->div.lock = &cprman->regs_lock; + divider->div.hw.init = &init; + divider->div.table = NULL; + + divider->cprman = cprman; + divider->data = data; + + clk = devm_clk_register(cprman->dev, ÷r->div.hw); + if (IS_ERR(clk)) + return clk; + + /* + * PLLH's channels have a fixed divide by 10 afterwards, which + * is what our consumers are actually using. + */ + if (data->fixed_divider != 1) { + return clk_register_fixed_factor(cprman->dev, data->name, + divider_name, + CLK_SET_RATE_PARENT, + 1, + data->fixed_divider); + } + + return clk; +} + +static struct clk *bcm2835_register_clock(struct bcm2835_cprman *cprman, + const struct bcm2835_clock_data *data) +{ + struct bcm2835_clock *clock; + struct clk_init_data init; + const char *parent; + + /* + * Most of the clock generators have a mux field, so we + * instantiate a generic mux as our parent to handle it. + */ + if (data->num_mux_parents) { + const char *parents[1 << CM_SRC_BITS]; + int i; + + parent = devm_kasprintf(cprman->dev, GFP_KERNEL, + "mux_%s", data->name); + if (!parent) + return NULL; + + /* + * Replace our "xosc" references with the oscillator's + * actual name. + */ + for (i = 0; i < data->num_mux_parents; i++) { + if (strcmp(data->parents[i], "xosc") == 0) + parents[i] = cprman->osc_name; + else + parents[i] = data->parents[i]; + } + + clk_register_mux(cprman->dev, parent, + parents, data->num_mux_parents, + CLK_SET_RATE_PARENT, + cprman->regs + data->ctl_reg, + CM_SRC_SHIFT, CM_SRC_BITS, + 0, &cprman->regs_lock); + } else { + parent = data->parents[0]; + } + + memset(&init, 0, sizeof(init)); + init.parent_names = &parent; + init.num_parents = 1; + init.name = data->name; + init.flags = CLK_IGNORE_UNUSED; + + if (data->is_vpu_clock) { + init.ops = &bcm2835_vpu_clock_clk_ops; + } else { + init.ops = &bcm2835_clock_clk_ops; + init.flags |= CLK_SET_RATE_GATE | CLK_SET_PARENT_GATE; + } + + clock = devm_kzalloc(cprman->dev, sizeof(*clock), GFP_KERNEL); + if (!clock) + return NULL; + + clock->cprman = cprman; + clock->data = data; + clock->hw.init = &init; + + return devm_clk_register(cprman->dev, &clock->hw); +} + +static int bcm2835_clk_probe(struct platform_device *pdev) +{ + struct device *dev = &pdev->dev; + struct clk **clks; + struct bcm2835_cprman *cprman; + struct resource *res; + + cprman = devm_kzalloc(dev, sizeof(*cprman), GFP_KERNEL); + if (!cprman) + return -ENOMEM; + + spin_lock_init(&cprman->regs_lock); + cprman->dev = dev; + res = platform_get_resource(pdev, IORESOURCE_MEM, 0); + cprman->regs = devm_ioremap_resource(dev, res); + if (IS_ERR(cprman->regs)) + return PTR_ERR(cprman->regs); + + cprman->osc_name = of_clk_get_parent_name(dev->of_node, 0); + if (!cprman->osc_name) + return -ENODEV; + + platform_set_drvdata(pdev, cprman); + + cprman->onecell.clk_num = BCM2835_CLOCK_COUNT; + cprman->onecell.clks = cprman->clks; + clks = cprman->clks; + + clks[BCM2835_PLLA] = bcm2835_register_pll(cprman, &bcm2835_plla_data); + clks[BCM2835_PLLB] = bcm2835_register_pll(cprman, &bcm2835_pllb_data); + clks[BCM2835_PLLC] = bcm2835_register_pll(cprman, &bcm2835_pllc_data); + clks[BCM2835_PLLD] = bcm2835_register_pll(cprman, &bcm2835_plld_data); + clks[BCM2835_PLLH] = bcm2835_register_pll(cprman, &bcm2835_pllh_data); + + clks[BCM2835_PLLA_CORE] = + bcm2835_register_pll_divider(cprman, &bcm2835_plla_core_data); + clks[BCM2835_PLLA_PER] = + bcm2835_register_pll_divider(cprman, &bcm2835_plla_per_data); + clks[BCM2835_PLLC_CORE0] = + bcm2835_register_pll_divider(cprman, &bcm2835_pllc_core0_data); + clks[BCM2835_PLLC_CORE1] = + bcm2835_register_pll_divider(cprman, &bcm2835_pllc_core1_data); + clks[BCM2835_PLLC_CORE2] = + bcm2835_register_pll_divider(cprman, &bcm2835_pllc_core2_data); + clks[BCM2835_PLLC_PER] = + bcm2835_register_pll_divider(cprman, &bcm2835_pllc_per_data); + clks[BCM2835_PLLD_CORE] = + bcm2835_register_pll_divider(cprman, &bcm2835_plld_core_data); + clks[BCM2835_PLLD_PER] = + bcm2835_register_pll_divider(cprman, &bcm2835_plld_per_data); + clks[BCM2835_PLLH_RCAL] = + bcm2835_register_pll_divider(cprman, &bcm2835_pllh_rcal_data); + clks[BCM2835_PLLH_AUX] = + bcm2835_register_pll_divider(cprman, &bcm2835_pllh_aux_data); + clks[BCM2835_PLLH_PIX] = + bcm2835_register_pll_divider(cprman, &bcm2835_pllh_pix_data); + + clks[BCM2835_CLOCK_TIMER] = + bcm2835_register_clock(cprman, &bcm2835_clock_timer_data); + clks[BCM2835_CLOCK_OTP] = + bcm2835_register_clock(cprman, &bcm2835_clock_otp_data); + clks[BCM2835_CLOCK_TSENS] = + bcm2835_register_clock(cprman, &bcm2835_clock_tsens_data); + clks[BCM2835_CLOCK_VPU] = + bcm2835_register_clock(cprman, &bcm2835_clock_vpu_data); + clks[BCM2835_CLOCK_V3D] = + bcm2835_register_clock(cprman, &bcm2835_clock_v3d_data); + clks[BCM2835_CLOCK_ISP] = + bcm2835_register_clock(cprman, &bcm2835_clock_isp_data); + clks[BCM2835_CLOCK_H264] = + bcm2835_register_clock(cprman, &bcm2835_clock_h264_data); + clks[BCM2835_CLOCK_V3D] = + bcm2835_register_clock(cprman, &bcm2835_clock_v3d_data); + clks[BCM2835_CLOCK_SDRAM] = + bcm2835_register_clock(cprman, &bcm2835_clock_sdram_data); + clks[BCM2835_CLOCK_UART] = + bcm2835_register_clock(cprman, &bcm2835_clock_uart_data); + clks[BCM2835_CLOCK_VEC] = + bcm2835_register_clock(cprman, &bcm2835_clock_vec_data); + clks[BCM2835_CLOCK_HSM] = + bcm2835_register_clock(cprman, &bcm2835_clock_hsm_data); + clks[BCM2835_CLOCK_EMMC] = + bcm2835_register_clock(cprman, &bcm2835_clock_emmc_data); + + /* + * CM_PERIICTL (and CM_PERIACTL, CM_SYSCTL and CM_VPUCTL if + * you have the debug bit set in the power manager, which we + * don't bother exposing) are individual gates off of the + * non-stop vpu clock. + */ + clks[BCM2835_CLOCK_PERI_IMAGE] = + clk_register_gate(dev, "peri_image", "vpu", + CLK_IGNORE_UNUSED | CLK_SET_RATE_GATE, + cprman->regs + CM_PERIICTL, CM_GATE_BIT, + 0, &cprman->regs_lock); + + return of_clk_add_provider(dev->of_node, of_clk_src_onecell_get, + &cprman->onecell); +} + +static const struct of_device_id bcm2835_clk_of_match[] = { + { .compatible = "brcm,bcm2835-cprman", }, + {}, +}; +MODULE_DEVICE_TABLE(of, bcm2835_clk_of_match); + +static struct platform_driver bcm2835_clk_driver = { + .driver = { + .name = "bcm2835-clk", + .of_match_table = bcm2835_clk_of_match, + }, + .probe = bcm2835_clk_probe, +}; + +builtin_platform_driver(bcm2835_clk_driver); + +MODULE_AUTHOR("Eric Anholt "); +MODULE_DESCRIPTION("BCM2835 clock driver"); +MODULE_LICENSE("GPL v2"); --- linux-raspi2-4.2.0.orig/drivers/clk/bcm/clk-iproc-pll.c +++ linux-raspi2-4.2.0/drivers/clk/bcm/clk-iproc-pll.c @@ -345,8 +345,8 @@ struct iproc_pll *pll = clk->pll; const struct iproc_pll_ctrl *ctrl = pll->ctrl; u32 val; - u64 ndiv; - unsigned int ndiv_int, ndiv_frac, pdiv; + u64 ndiv, ndiv_int, ndiv_frac; + unsigned int pdiv; if (parent_rate == 0) return 0; @@ -366,22 +366,19 @@ val = readl(pll->pll_base + ctrl->ndiv_int.offset); ndiv_int = (val >> ctrl->ndiv_int.shift) & bit_mask(ctrl->ndiv_int.width); - ndiv = (u64)ndiv_int << ctrl->ndiv_int.shift; + ndiv = ndiv_int << 20; if (ctrl->flags & IPROC_CLK_PLL_HAS_NDIV_FRAC) { val = readl(pll->pll_base + ctrl->ndiv_frac.offset); ndiv_frac = (val >> ctrl->ndiv_frac.shift) & bit_mask(ctrl->ndiv_frac.width); - - if (ndiv_frac != 0) - ndiv = ((u64)ndiv_int << ctrl->ndiv_int.shift) | - ndiv_frac; + ndiv += ndiv_frac; } val = readl(pll->pll_base + ctrl->pdiv.offset); pdiv = (val >> ctrl->pdiv.shift) & bit_mask(ctrl->pdiv.width); - clk->rate = (ndiv * parent_rate) >> ctrl->ndiv_int.shift; + clk->rate = (ndiv * parent_rate) >> 20; if (pdiv == 0) clk->rate *= 2; --- linux-raspi2-4.2.0.orig/drivers/clk/clk-hifiberry-dacpro.c +++ linux-raspi2-4.2.0/drivers/clk/clk-hifiberry-dacpro.c @@ -0,0 +1,160 @@ +/* + * Clock Driver for HiFiBerry DAC Pro + * + * Author: Stuart MacLean + * Copyright 2015 + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * version 2 as published by the Free Software Foundation. + * + * 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 + +/* Clock rate of CLK44EN attached to GPIO6 pin */ +#define CLK_44EN_RATE 22579200UL +/* Clock rate of CLK48EN attached to GPIO3 pin */ +#define CLK_48EN_RATE 24576000UL + +/** + * struct hifiberry_dacpro_clk - Common struct to the HiFiBerry DAC Pro + * @hw: clk_hw for the common clk framework + * @mode: 0 => CLK44EN, 1 => CLK48EN + */ +struct clk_hifiberry_hw { + struct clk_hw hw; + uint8_t mode; +}; + +#define to_hifiberry_clk(_hw) container_of(_hw, struct clk_hifiberry_hw, hw) + +static const struct of_device_id clk_hifiberry_dacpro_dt_ids[] = { + { .compatible = "hifiberry,dacpro-clk",}, + { } +}; +MODULE_DEVICE_TABLE(of, clk_hifiberry_dacpro_dt_ids); + +static unsigned long clk_hifiberry_dacpro_recalc_rate(struct clk_hw *hw, + unsigned long parent_rate) +{ + return (to_hifiberry_clk(hw)->mode == 0) ? CLK_44EN_RATE : + CLK_48EN_RATE; +} + +static long clk_hifiberry_dacpro_round_rate(struct clk_hw *hw, + unsigned long rate, unsigned long *parent_rate) +{ + long actual_rate; + + if (rate <= CLK_44EN_RATE) { + actual_rate = (long)CLK_44EN_RATE; + } else if (rate >= CLK_48EN_RATE) { + actual_rate = (long)CLK_48EN_RATE; + } else { + long diff44Rate = (long)(rate - CLK_44EN_RATE); + long diff48Rate = (long)(CLK_48EN_RATE - rate); + + if (diff44Rate < diff48Rate) + actual_rate = (long)CLK_44EN_RATE; + else + actual_rate = (long)CLK_48EN_RATE; + } + return actual_rate; +} + + +static int clk_hifiberry_dacpro_set_rate(struct clk_hw *hw, + unsigned long rate, unsigned long parent_rate) +{ + unsigned long actual_rate; + struct clk_hifiberry_hw *clk = to_hifiberry_clk(hw); + + actual_rate = (unsigned long)clk_hifiberry_dacpro_round_rate(hw, rate, + &parent_rate); + clk->mode = (actual_rate == CLK_44EN_RATE) ? 0 : 1; + return 0; +} + + +const struct clk_ops clk_hifiberry_dacpro_rate_ops = { + .recalc_rate = clk_hifiberry_dacpro_recalc_rate, + .round_rate = clk_hifiberry_dacpro_round_rate, + .set_rate = clk_hifiberry_dacpro_set_rate, +}; + +static int clk_hifiberry_dacpro_probe(struct platform_device *pdev) +{ + int ret; + struct clk_hifiberry_hw *proclk; + struct clk *clk; + struct device *dev; + struct clk_init_data init; + + dev = &pdev->dev; + + proclk = kzalloc(sizeof(struct clk_hifiberry_hw), GFP_KERNEL); + if (!proclk) + return -ENOMEM; + + init.name = "clk-hifiberry-dacpro"; + init.ops = &clk_hifiberry_dacpro_rate_ops; + init.flags = CLK_IS_ROOT | CLK_IS_BASIC; + init.parent_names = NULL; + init.num_parents = 0; + + proclk->mode = 0; + proclk->hw.init = &init; + + clk = devm_clk_register(dev, &proclk->hw); + if (!IS_ERR(clk)) { + ret = of_clk_add_provider(dev->of_node, of_clk_src_simple_get, + clk); + } else { + dev_err(dev, "Fail to register clock driver\n"); + kfree(proclk); + ret = PTR_ERR(clk); + } + return ret; +} + +static int clk_hifiberry_dacpro_remove(struct platform_device *pdev) +{ + of_clk_del_provider(pdev->dev.of_node); + return 0; +} + +static struct platform_driver clk_hifiberry_dacpro_driver = { + .probe = clk_hifiberry_dacpro_probe, + .remove = clk_hifiberry_dacpro_remove, + .driver = { + .name = "clk-hifiberry-dacpro", + .of_match_table = clk_hifiberry_dacpro_dt_ids, + }, +}; + +static int __init clk_hifiberry_dacpro_init(void) +{ + return platform_driver_register(&clk_hifiberry_dacpro_driver); +} +core_initcall(clk_hifiberry_dacpro_init); + +static void __exit clk_hifiberry_dacpro_exit(void) +{ + platform_driver_unregister(&clk_hifiberry_dacpro_driver); +} +module_exit(clk_hifiberry_dacpro_exit); + +MODULE_DESCRIPTION("HiFiBerry DAC Pro clock driver"); +MODULE_LICENSE("GPL v2"); +MODULE_ALIAS("platform:clk-hifiberry-dacpro"); --- linux-raspi2-4.2.0.orig/drivers/clk/clkdev.c +++ linux-raspi2-4.2.0/drivers/clk/clkdev.c @@ -333,7 +333,8 @@ if (IS_ERR(r)) return PTR_ERR(r); - l = clkdev_create(r, alias, "%s", alias_dev_name); + l = clkdev_create(r, alias, alias_dev_name ? "%s" : NULL, + alias_dev_name); clk_put(r); return l ? 0 : -ENODEV; --- linux-raspi2-4.2.0.orig/drivers/clk/pistachio/clk-pistachio.c +++ linux-raspi2-4.2.0/drivers/clk/pistachio/clk-pistachio.c @@ -159,9 +159,15 @@ "wifi_pll_mux", "bt_pll_mux" }; static u32 mux_debug_idx[] = { 0x0, 0x1, 0x2, 0x4, 0x8, 0x10 }; -static unsigned int pistachio_critical_clks[] __initdata = { - CLK_MIPS, - CLK_PERIPH_SYS, +static unsigned int pistachio_critical_clks_core[] __initdata = { + CLK_MIPS +}; + +static unsigned int pistachio_critical_clks_sys[] __initdata = { + PERIPH_CLK_SYS, + PERIPH_CLK_SYS_BUS, + PERIPH_CLK_DDR, + PERIPH_CLK_ROM, }; static void __init pistachio_clk_init(struct device_node *np) @@ -193,8 +199,8 @@ pistachio_clk_register_provider(p); - pistachio_clk_force_enable(p, pistachio_critical_clks, - ARRAY_SIZE(pistachio_critical_clks)); + pistachio_clk_force_enable(p, pistachio_critical_clks_core, + ARRAY_SIZE(pistachio_critical_clks_core)); } CLK_OF_DECLARE(pistachio_clk, "img,pistachio-clk", pistachio_clk_init); @@ -261,6 +267,9 @@ ARRAY_SIZE(pistachio_periph_gates)); pistachio_clk_register_provider(p); + + pistachio_clk_force_enable(p, pistachio_critical_clks_sys, + ARRAY_SIZE(pistachio_critical_clks_sys)); } CLK_OF_DECLARE(pistachio_clk_periph, "img,pistachio-clk-periph", pistachio_clk_periph_init); --- linux-raspi2-4.2.0.orig/drivers/clk/pistachio/clk-pll.c +++ linux-raspi2-4.2.0/drivers/clk/pistachio/clk-pll.c @@ -65,6 +65,12 @@ #define MIN_OUTPUT_FRAC 12000000UL #define MAX_OUTPUT_FRAC 1600000000UL +/* Fractional PLL operating modes */ +enum pll_mode { + PLL_MODE_FRAC, + PLL_MODE_INT, +}; + struct pistachio_clk_pll { struct clk_hw hw; void __iomem *base; @@ -88,12 +94,10 @@ cpu_relax(); } -static inline u32 do_div_round_closest(u64 dividend, u32 divisor) +static inline u64 do_div_round_closest(u64 dividend, u64 divisor) { dividend += divisor / 2; - do_div(dividend, divisor); - - return dividend; + return div64_u64(dividend, divisor); } static inline struct pistachio_clk_pll *to_pistachio_pll(struct clk_hw *hw) @@ -101,6 +105,29 @@ return container_of(hw, struct pistachio_clk_pll, hw); } +static inline enum pll_mode pll_frac_get_mode(struct clk_hw *hw) +{ + struct pistachio_clk_pll *pll = to_pistachio_pll(hw); + u32 val; + + val = pll_readl(pll, PLL_CTRL3) & PLL_FRAC_CTRL3_DSMPD; + return val ? PLL_MODE_INT : PLL_MODE_FRAC; +} + +static inline void pll_frac_set_mode(struct clk_hw *hw, enum pll_mode mode) +{ + struct pistachio_clk_pll *pll = to_pistachio_pll(hw); + u32 val; + + val = pll_readl(pll, PLL_CTRL3); + if (mode == PLL_MODE_INT) + val |= PLL_FRAC_CTRL3_DSMPD | PLL_FRAC_CTRL3_DACPD; + else + val &= ~(PLL_FRAC_CTRL3_DSMPD | PLL_FRAC_CTRL3_DACPD); + + pll_writel(pll, val, PLL_CTRL3); +} + static struct pistachio_pll_rate_table * pll_get_params(struct pistachio_clk_pll *pll, unsigned long fref, unsigned long fout) @@ -136,8 +163,7 @@ u32 val; val = pll_readl(pll, PLL_CTRL3); - val &= ~(PLL_FRAC_CTRL3_PD | PLL_FRAC_CTRL3_DACPD | - PLL_FRAC_CTRL3_DSMPD | PLL_FRAC_CTRL3_FOUTPOSTDIVPD | + val &= ~(PLL_FRAC_CTRL3_PD | PLL_FRAC_CTRL3_FOUTPOSTDIVPD | PLL_FRAC_CTRL3_FOUT4PHASEPD | PLL_FRAC_CTRL3_FOUTVCOPD); pll_writel(pll, val, PLL_CTRL3); @@ -173,7 +199,7 @@ struct pistachio_clk_pll *pll = to_pistachio_pll(hw); struct pistachio_pll_rate_table *params; int enabled = pll_gf40lp_frac_is_enabled(hw); - u32 val, vco, old_postdiv1, old_postdiv2; + u64 val, vco, old_postdiv1, old_postdiv2; const char *name = __clk_get_name(hw->clk); if (rate < MIN_OUTPUT_FRAC || rate > MAX_OUTPUT_FRAC) @@ -183,17 +209,21 @@ if (!params || !params->refdiv) return -EINVAL; - vco = params->fref * params->fbdiv / params->refdiv; + /* calculate vco */ + vco = params->fref; + vco *= (params->fbdiv << 24) + params->frac; + vco = div64_u64(vco, params->refdiv << 24); + if (vco < MIN_VCO_FRAC_FRAC || vco > MAX_VCO_FRAC_FRAC) - pr_warn("%s: VCO %u is out of range %lu..%lu\n", name, vco, + pr_warn("%s: VCO %llu is out of range %lu..%lu\n", name, vco, MIN_VCO_FRAC_FRAC, MAX_VCO_FRAC_FRAC); - val = params->fref / params->refdiv; + val = div64_u64(params->fref, params->refdiv); if (val < MIN_PFD) - pr_warn("%s: PFD %u is too low (min %lu)\n", + pr_warn("%s: PFD %llu is too low (min %lu)\n", name, val, MIN_PFD); if (val > vco / 16) - pr_warn("%s: PFD %u is too high (max %u)\n", + pr_warn("%s: PFD %llu is too high (max %llu)\n", name, val, vco / 16); val = pll_readl(pll, PLL_CTRL1); @@ -227,6 +257,12 @@ (params->postdiv2 << PLL_FRAC_CTRL2_POSTDIV2_SHIFT); pll_writel(pll, val, PLL_CTRL2); + /* set operating mode */ + if (params->frac) + pll_frac_set_mode(hw, PLL_MODE_FRAC); + else + pll_frac_set_mode(hw, PLL_MODE_INT); + if (enabled) pll_lock(pll); @@ -237,8 +273,7 @@ unsigned long parent_rate) { struct pistachio_clk_pll *pll = to_pistachio_pll(hw); - u32 val, prediv, fbdiv, frac, postdiv1, postdiv2; - u64 rate = parent_rate; + u64 val, prediv, fbdiv, frac, postdiv1, postdiv2, rate; val = pll_readl(pll, PLL_CTRL1); prediv = (val >> PLL_CTRL1_REFDIV_SHIFT) & PLL_CTRL1_REFDIV_MASK; @@ -251,7 +286,13 @@ PLL_FRAC_CTRL2_POSTDIV2_MASK; frac = (val >> PLL_FRAC_CTRL2_FRAC_SHIFT) & PLL_FRAC_CTRL2_FRAC_MASK; - rate *= (fbdiv << 24) + frac; + /* get operating mode (int/frac) and calculate rate accordingly */ + rate = parent_rate; + if (pll_frac_get_mode(hw) == PLL_MODE_FRAC) + rate *= (fbdiv << 24) + frac; + else + rate *= (fbdiv << 24); + rate = do_div_round_closest(rate, (prediv * postdiv1 * postdiv2) << 24); return rate; @@ -279,7 +320,7 @@ u32 val; val = pll_readl(pll, PLL_CTRL1); - val &= ~(PLL_INT_CTRL1_PD | PLL_INT_CTRL1_DSMPD | + val &= ~(PLL_INT_CTRL1_PD | PLL_INT_CTRL1_FOUTPOSTDIVPD | PLL_INT_CTRL1_FOUTVCOPD); pll_writel(pll, val, PLL_CTRL1); @@ -325,12 +366,12 @@ if (!params || !params->refdiv) return -EINVAL; - vco = params->fref * params->fbdiv / params->refdiv; + vco = div_u64(params->fref * params->fbdiv, params->refdiv); if (vco < MIN_VCO_LA || vco > MAX_VCO_LA) pr_warn("%s: VCO %u is out of range %lu..%lu\n", name, vco, MIN_VCO_LA, MAX_VCO_LA); - val = params->fref / params->refdiv; + val = div_u64(params->fref, params->refdiv); if (val < MIN_PFD) pr_warn("%s: PFD %u is too low (min %lu)\n", name, val, MIN_PFD); --- linux-raspi2-4.2.0.orig/drivers/clk/pistachio/clk.h +++ linux-raspi2-4.2.0/drivers/clk/pistachio/clk.h @@ -95,13 +95,13 @@ } struct pistachio_pll_rate_table { - unsigned long fref; - unsigned long fout; - unsigned int refdiv; - unsigned int fbdiv; - unsigned int postdiv1; - unsigned int postdiv2; - unsigned int frac; + unsigned long long fref; + unsigned long long fout; + unsigned long long refdiv; + unsigned long long fbdiv; + unsigned long long postdiv1; + unsigned long long postdiv2; + unsigned long long frac; }; enum pistachio_pll_type { --- linux-raspi2-4.2.0.orig/drivers/clk/pxa/clk-pxa25x.c +++ linux-raspi2-4.2.0/drivers/clk/pxa/clk-pxa25x.c @@ -79,7 +79,7 @@ clks[3] / 1000000, (clks[3] % 1000000) / 10000); } - return (unsigned int)clks[0]; + return (unsigned int)clks[0] / KHz; } static unsigned long clk_pxa25x_memory_get_rate(struct clk_hw *hw, --- linux-raspi2-4.2.0.orig/drivers/clk/pxa/clk-pxa27x.c +++ linux-raspi2-4.2.0/drivers/clk/pxa/clk-pxa27x.c @@ -80,7 +80,7 @@ pr_info("System bus clock: %ld.%02ldMHz\n", clks[4] / 1000000, (clks[4] % 1000000) / 10000); } - return (unsigned int)clks[0]; + return (unsigned int)clks[0] / KHz; } bool pxa27x_is_ppll_disabled(void) --- linux-raspi2-4.2.0.orig/drivers/clk/pxa/clk-pxa3xx.c +++ linux-raspi2-4.2.0/drivers/clk/pxa/clk-pxa3xx.c @@ -78,7 +78,7 @@ pr_info("System bus clock: %ld.%02ldMHz\n", clks[4] / 1000000, (clks[4] % 1000000) / 10000); } - return (unsigned int)clks[0]; + return (unsigned int)clks[0] / KHz; } static unsigned long clk_pxa3xx_ac97_get_rate(struct clk_hw *hw, --- linux-raspi2-4.2.0.orig/drivers/clk/qcom/gcc-apq8084.c +++ linux-raspi2-4.2.0/drivers/clk/qcom/gcc-apq8084.c @@ -2105,6 +2105,7 @@ "ce1_clk_src", }, .num_parents = 1, + .flags = CLK_SET_RATE_PARENT, .ops = &clk_branch2_ops, }, }, --- linux-raspi2-4.2.0.orig/drivers/clk/qcom/gcc-msm8916.c +++ linux-raspi2-4.2.0/drivers/clk/qcom/gcc-msm8916.c @@ -2278,7 +2278,7 @@ .halt_check = BRANCH_HALT_VOTED, .clkr = { .enable_reg = 0x45004, - .enable_mask = BIT(0), + .enable_mask = BIT(8), .hw.init = &(struct clk_init_data){ .name = "gcc_prng_ahb_clk", .parent_names = (const char *[]){ --- linux-raspi2-4.2.0.orig/drivers/clk/qcom/gcc-msm8974.c +++ linux-raspi2-4.2.0/drivers/clk/qcom/gcc-msm8974.c @@ -1783,6 +1783,7 @@ "ce1_clk_src", }, .num_parents = 1, + .flags = CLK_SET_RATE_PARENT, .ops = &clk_branch2_ops, }, }, --- linux-raspi2-4.2.0.orig/drivers/clk/rockchip/clk-rk3288.c +++ linux-raspi2-4.2.0/drivers/clk/rockchip/clk-rk3288.c @@ -578,7 +578,7 @@ COMPOSITE(0, "mac_pll_src", mux_pll_src_npll_cpll_gpll_p, 0, RK3288_CLKSEL_CON(21), 0, 2, MFLAGS, 8, 5, DFLAGS, RK3288_CLKGATE_CON(2), 5, GFLAGS), - MUX(SCLK_MAC, "mac_clk", mux_mac_p, 0, + MUX(SCLK_MAC, "mac_clk", mux_mac_p, CLK_SET_RATE_PARENT, RK3288_CLKSEL_CON(21), 4, 1, MFLAGS), GATE(SCLK_MACREF_OUT, "sclk_macref_out", "mac_clk", 0, RK3288_CLKGATE_CON(5), 3, GFLAGS), --- linux-raspi2-4.2.0.orig/drivers/clk/samsung/clk-cpu.c +++ linux-raspi2-4.2.0/drivers/clk/samsung/clk-cpu.c @@ -161,7 +161,7 @@ * the values for DIV_COPY and DIV_HPM dividers need not be set. */ div0 = cfg_data->div0; - if (test_bit(CLK_CPU_HAS_DIV1, &cpuclk->flags)) { + if (cpuclk->flags & CLK_CPU_HAS_DIV1) { div1 = cfg_data->div1; if (readl(base + E4210_SRC_CPU) & E4210_MUX_HPM_MASK) div1 = readl(base + E4210_DIV_CPU1) & @@ -182,7 +182,7 @@ alt_div = DIV_ROUND_UP(alt_prate, tmp_rate) - 1; WARN_ON(alt_div >= MAX_DIV); - if (test_bit(CLK_CPU_NEEDS_DEBUG_ALT_DIV, &cpuclk->flags)) { + if (cpuclk->flags & CLK_CPU_NEEDS_DEBUG_ALT_DIV) { /* * In Exynos4210, ATB clock parent is also mout_core. So * ATB clock also needs to be mantained at safe speed. @@ -203,7 +203,7 @@ writel(div0, base + E4210_DIV_CPU0); wait_until_divider_stable(base + E4210_DIV_STAT_CPU0, DIV_MASK_ALL); - if (test_bit(CLK_CPU_HAS_DIV1, &cpuclk->flags)) { + if (cpuclk->flags & CLK_CPU_HAS_DIV1) { writel(div1, base + E4210_DIV_CPU1); wait_until_divider_stable(base + E4210_DIV_STAT_CPU1, DIV_MASK_ALL); @@ -222,7 +222,7 @@ unsigned long mux_reg; /* find out the divider values to use for clock data */ - if (test_bit(CLK_CPU_NEEDS_DEBUG_ALT_DIV, &cpuclk->flags)) { + if (cpuclk->flags & CLK_CPU_NEEDS_DEBUG_ALT_DIV) { while ((cfg_data->prate * 1000) != ndata->new_rate) { if (cfg_data->prate == 0) return -EINVAL; @@ -237,7 +237,7 @@ writel(mux_reg & ~(1 << 16), base + E4210_SRC_CPU); wait_until_mux_stable(base + E4210_STAT_CPU, 16, 1); - if (test_bit(CLK_CPU_NEEDS_DEBUG_ALT_DIV, &cpuclk->flags)) { + if (cpuclk->flags & CLK_CPU_NEEDS_DEBUG_ALT_DIV) { div |= (cfg_data->div0 & E4210_DIV0_ATB_MASK); div_mask |= E4210_DIV0_ATB_MASK; } --- linux-raspi2-4.2.0.orig/drivers/clk/samsung/clk-exynos4.c +++ linux-raspi2-4.2.0/drivers/clk/samsung/clk-exynos4.c @@ -86,6 +86,7 @@ #define DIV_PERIL4 0xc560 #define DIV_PERIL5 0xc564 #define E4X12_DIV_CAM1 0xc568 +#define E4X12_GATE_BUS_FSYS1 0xc744 #define GATE_SCLK_CAM 0xc820 #define GATE_IP_CAM 0xc920 #define GATE_IP_TV 0xc924 @@ -1097,6 +1098,7 @@ 0), GATE(CLK_PPMUIMAGE, "ppmuimage", "aclk200", E4X12_GATE_IP_IMAGE, 9, 0, 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_SYSREG, "sysreg", "aclk100", E4X12_GATE_IP_PERIR, 1, --- linux-raspi2-4.2.0.orig/drivers/clk/samsung/clk-s5pv210.c +++ linux-raspi2-4.2.0/drivers/clk/samsung/clk-s5pv210.c @@ -828,6 +828,8 @@ s5pv210_clk_sleep_init(); + samsung_clk_of_add_provider(np, ctx); + pr_info("%s clocks: mout_apll = %ld, mout_mpll = %ld\n" "\tmout_epll = %ld, mout_vpll = %ld\n", is_s5p6442 ? "S5P6442" : "S5PV210", --- linux-raspi2-4.2.0.orig/drivers/clk/ti/clk-3xxx.c +++ linux-raspi2-4.2.0/drivers/clk/ti/clk-3xxx.c @@ -163,7 +163,6 @@ DT_CLK(NULL, "gpio2_ick", "gpio2_ick"), DT_CLK(NULL, "wdt3_ick", "wdt3_ick"), DT_CLK(NULL, "uart3_ick", "uart3_ick"), - DT_CLK(NULL, "uart4_ick", "uart4_ick"), DT_CLK(NULL, "gpt9_ick", "gpt9_ick"), DT_CLK(NULL, "gpt8_ick", "gpt8_ick"), DT_CLK(NULL, "gpt7_ick", "gpt7_ick"), @@ -308,6 +307,7 @@ static struct ti_dt_clk omap36xx_clks[] = { DT_CLK(NULL, "omap_192m_alwon_fck", "omap_192m_alwon_fck"), DT_CLK(NULL, "uart4_fck", "uart4_fck"), + DT_CLK(NULL, "uart4_ick", "uart4_ick"), { .node_name = NULL }, }; --- linux-raspi2-4.2.0.orig/drivers/clk/ti/clk-7xx.c +++ linux-raspi2-4.2.0/drivers/clk/ti/clk-7xx.c @@ -16,7 +16,6 @@ #include #include -#define DRA7_DPLL_ABE_DEFFREQ 180633600 #define DRA7_DPLL_GMAC_DEFFREQ 1000000000 #define DRA7_DPLL_USB_DEFFREQ 960000000 @@ -312,27 +311,12 @@ int __init dra7xx_dt_clk_init(void) { int rc; - struct clk *abe_dpll_mux, *sys_clkin2, *dpll_ck, *hdcp_ck; + struct clk *dpll_ck, *hdcp_ck; ti_dt_clocks_register(dra7xx_clks); omap2_clk_disable_autoidle_all(); - abe_dpll_mux = clk_get_sys(NULL, "abe_dpll_sys_clk_mux"); - sys_clkin2 = clk_get_sys(NULL, "sys_clkin2"); - dpll_ck = clk_get_sys(NULL, "dpll_abe_ck"); - - rc = clk_set_parent(abe_dpll_mux, sys_clkin2); - if (!rc) - rc = clk_set_rate(dpll_ck, DRA7_DPLL_ABE_DEFFREQ); - if (rc) - pr_err("%s: failed to configure ABE DPLL!\n", __func__); - - dpll_ck = clk_get_sys(NULL, "dpll_abe_m2x2_ck"); - rc = clk_set_rate(dpll_ck, DRA7_DPLL_ABE_DEFFREQ * 2); - if (rc) - pr_err("%s: failed to configure ABE DPLL m2x2!\n", __func__); - dpll_ck = clk_get_sys(NULL, "dpll_gmac_ck"); rc = clk_set_rate(dpll_ck, DRA7_DPLL_GMAC_DEFFREQ); if (rc) --- linux-raspi2-4.2.0.orig/drivers/clk/versatile/clk-icst.c +++ linux-raspi2-4.2.0/drivers/clk/versatile/clk-icst.c @@ -156,8 +156,10 @@ icst->lockreg = base + desc->lock_offset; clk = clk_register(dev, &icst->hw); - if (IS_ERR(clk)) + if (IS_ERR(clk)) { + kfree(pclone); kfree(icst); + } return clk; } --- linux-raspi2-4.2.0.orig/drivers/clk/versatile/clk-sp810.c +++ linux-raspi2-4.2.0/drivers/clk/versatile/clk-sp810.c @@ -128,8 +128,8 @@ { struct clk_sp810 *sp810 = data; - if (WARN_ON(clkspec->args_count != 1 || clkspec->args[0] > - ARRAY_SIZE(sp810->timerclken))) + if (WARN_ON(clkspec->args_count != 1 || + clkspec->args[0] >= ARRAY_SIZE(sp810->timerclken))) return NULL; return sp810->timerclken[clkspec->args[0]].clk; --- linux-raspi2-4.2.0.orig/drivers/clocksource/Makefile +++ linux-raspi2-4.2.0/drivers/clocksource/Makefile @@ -19,7 +19,7 @@ obj-$(CONFIG_CLKSRC_DBX500_PRCMU) += clksrc-dbx500-prcmu.o obj-$(CONFIG_ARMADA_370_XP_TIMER) += time-armada-370-xp.o obj-$(CONFIG_ORION_TIMER) += time-orion.o -obj-$(CONFIG_ARCH_BCM2835) += bcm2835_timer.o +obj-$(CONFIG_ARCH_BCM2835)$(CONFIG_ARCH_BCM2708) += bcm2835_timer.o obj-$(CONFIG_ARCH_CLPS711X) += clps711x-timer.o obj-$(CONFIG_ARCH_ATLAS7) += timer-atlas7.o obj-$(CONFIG_ARCH_MOXART) += moxart_timer.o --- linux-raspi2-4.2.0.orig/drivers/clocksource/arm_arch_timer.c +++ linux-raspi2-4.2.0/drivers/clocksource/arm_arch_timer.c @@ -882,3 +882,39 @@ acpi_table_parse(ACPI_SIG_GTDT, arch_timer_acpi_init); } #endif + +int __init dc4_arch_timer_init(void) +{ + if (arch_timers_present & ARCH_CP15_TIMER) { + pr_warn("arch_timer: multiple nodes in dt, skipping\n"); + return -1; + } + + arch_timers_present |= ARCH_CP15_TIMER; + + /* Try to determine the frequency from the device tree or CNTFRQ */ + arch_timer_rate = 19200000; + + arch_timer_ppi[PHYS_SECURE_PPI] = IRQ_ARM_LOCAL_CNTPSIRQ; + arch_timer_ppi[PHYS_NONSECURE_PPI] = IRQ_ARM_LOCAL_CNTPNSIRQ; + arch_timer_ppi[VIRT_PPI] = IRQ_ARM_LOCAL_CNTVIRQ; + arch_timer_ppi[HYP_PPI] = IRQ_ARM_LOCAL_CNTHPIRQ; + + /* + * If HYP mode is available, we know that the physical timer + * has been configured to be accessible from PL1. Use it, so + * that a guest can use the virtual timer instead. + * + * If no interrupt provided for virtual timer, we'll have to + * stick to the physical timer. It'd better be accessible... + */ + if (is_hyp_mode_available() || !arch_timer_ppi[VIRT_PPI]) { + arch_timer_use_virtual = false; + } + + arch_timer_c3stop = 0; + + arch_timer_register(); + arch_timer_common_init(); + return 0; +} --- linux-raspi2-4.2.0.orig/drivers/cpufreq/Kconfig.arm +++ linux-raspi2-4.2.0/drivers/cpufreq/Kconfig.arm @@ -247,6 +247,15 @@ help This adds the CPUFreq driver support for SPEAr SOCs. +config ARM_BCM2835_CPUFREQ + depends on RASPBERRYPI_FIRMWARE + bool "BCM2835 Driver" + default y + help + This adds the CPUFreq driver for BCM2835 + + If in doubt, say N. + config ARM_TEGRA_CPUFREQ bool "TEGRA CPUFreq support" depends on ARCH_TEGRA --- linux-raspi2-4.2.0.orig/drivers/cpufreq/Makefile +++ linux-raspi2-4.2.0/drivers/cpufreq/Makefile @@ -76,6 +76,7 @@ obj-$(CONFIG_ARM_SA1100_CPUFREQ) += sa1100-cpufreq.o obj-$(CONFIG_ARM_SA1110_CPUFREQ) += sa1110-cpufreq.o obj-$(CONFIG_ARM_SPEAR_CPUFREQ) += spear-cpufreq.o +obj-$(CONFIG_ARM_BCM2835_CPUFREQ) += bcm2835-cpufreq.o obj-$(CONFIG_ARM_TEGRA_CPUFREQ) += tegra-cpufreq.o obj-$(CONFIG_ARM_VEXPRESS_SPC_CPUFREQ) += vexpress-spc-cpufreq.o --- linux-raspi2-4.2.0.orig/drivers/cpufreq/acpi-cpufreq.c +++ linux-raspi2-4.2.0/drivers/cpufreq/acpi-cpufreq.c @@ -146,6 +146,9 @@ { struct acpi_cpufreq_data *data = per_cpu(acfreq_data, policy->cpu); + if (unlikely(!data)) + return -ENODEV; + return cpufreq_show_cpus(data->freqdomain_cpus, buf); } --- linux-raspi2-4.2.0.orig/drivers/cpufreq/arm_big_little.c +++ linux-raspi2-4.2.0/drivers/cpufreq/arm_big_little.c @@ -149,6 +149,19 @@ __func__, cpu, old_cluster, new_cluster, new_rate); ret = clk_set_rate(clk[new_cluster], new_rate * 1000); + if (!ret) { + /* + * FIXME: clk_set_rate hasn't returned an error here however it + * may be that clk_change_rate failed due to hardware or + * firmware issues and wasn't able to report that due to the + * current design of the clk core layer. To work around this + * problem we will read back the clock rate and check it is + * correct. This needs to be removed once clk core is fixed. + */ + if (clk_get_rate(clk[new_cluster]) != new_rate * 1000) + ret = -EIO; + } + if (WARN_ON(ret)) { pr_err("clk_set_rate failed: %d, new cluster: %d\n", ret, new_cluster); @@ -189,15 +202,6 @@ mutex_unlock(&cluster_lock[old_cluster]); } - /* - * FIXME: clk_set_rate has to handle the case where clk_change_rate - * can fail due to hardware or firmware issues. Until the clk core - * layer is fixed, we can check here. In most of the cases we will - * be reading only the cached value anyway. This needs to be removed - * once clk core is fixed. - */ - if (bL_cpufreq_get_rate(cpu) != new_rate) - return -EIO; return 0; } --- linux-raspi2-4.2.0.orig/drivers/cpufreq/bcm2835-cpufreq.c +++ linux-raspi2-4.2.0/drivers/cpufreq/bcm2835-cpufreq.c @@ -0,0 +1,213 @@ +/***************************************************************************** +* Copyright 2011 Broadcom Corporation. All rights reserved. +* +* Unless you and Broadcom execute a separate written software license +* agreement governing use of this software, this software is licensed to you +* under the terms of the GNU General Public License version 2, available at +* http://www.broadcom.com/licenses/GPLv2.php (the "GPL"). +* +* Notwithstanding the above, under no circumstances may you combine this +* software in any way with any other Broadcom software provided under a +* license other than the GPL, without Broadcom's express prior written +* consent. +*****************************************************************************/ + +/***************************************************************************** +* FILENAME: bcm2835-cpufreq.h +* DESCRIPTION: This driver dynamically manages the CPU Frequency of the ARM +* processor. Messages are sent to Videocore either setting or requesting the +* frequency of the ARM in order to match an appropiate frequency to the current +* usage of the processor. The policy which selects the frequency to use is +* defined in the kernel .config file, but can be changed during runtime. +*****************************************************************************/ + +/* ---------- INCLUDES ---------- */ +#include +#include +#include +#include +#include + +/* ---------- DEFINES ---------- */ +/*#define CPUFREQ_DEBUG_ENABLE*/ /* enable debugging */ +#define MODULE_NAME "bcm2835-cpufreq" + +#define VCMSG_ID_ARM_CLOCK 0x000000003 /* Clock/Voltage ID's */ + +/* debug printk macros */ +#ifdef CPUFREQ_DEBUG_ENABLE +#define print_debug(fmt,...) pr_debug("%s:%s:%d: "fmt, MODULE_NAME, __func__, __LINE__, ##__VA_ARGS__) +#else +#define print_debug(fmt,...) +#endif +#define print_err(fmt,...) pr_err("%s:%s:%d: "fmt, MODULE_NAME, __func__,__LINE__, ##__VA_ARGS__) +#define print_info(fmt,...) pr_info("%s: "fmt, MODULE_NAME, ##__VA_ARGS__) + +/* ---------- GLOBALS ---------- */ +static struct cpufreq_driver bcm2835_cpufreq_driver; /* the cpufreq driver global */ + +static struct cpufreq_frequency_table bcm2835_freq_table[] = { + {0, 0, 0}, + {0, 0, 0}, + {0, 0, CPUFREQ_TABLE_END}, +}; + +/* + =============================================== + clk_rate either gets or sets the clock rates. + =============================================== +*/ + +static int bcm2835_cpufreq_clock_property(u32 tag, u32 id, u32 *val) +{ + struct rpi_firmware *fw = rpi_firmware_get(NULL); + struct { + u32 id; + u32 val; + } packet; + int ret; + + packet.id = id; + packet.val = *val; + ret = rpi_firmware_property(fw, tag, &packet, sizeof(packet)); + if (ret) + return ret; + + *val = packet.val; + + return 0; +} + +static uint32_t bcm2835_cpufreq_set_clock(int cur_rate, int arm_rate) +{ + u32 rate = arm_rate * 1000; + int ret; + + ret = bcm2835_cpufreq_clock_property(RPI_FIRMWARE_SET_CLOCK_RATE, VCMSG_ID_ARM_CLOCK, &rate); + if (ret) { + print_err("Failed to set clock: %d (%d)\n", arm_rate, ret); + return 0; + } + + rate /= 1000; + print_debug("Setting new frequency = %d -> %d (actual %d)\n", cur_rate, arm_rate, rate); + + return rate; +} + +static uint32_t bcm2835_cpufreq_get_clock(int tag) +{ + u32 rate; + int ret; + + ret = bcm2835_cpufreq_clock_property(tag, VCMSG_ID_ARM_CLOCK, &rate); + if (ret) { + print_err("Failed to get clock (%d)\n", ret); + return 0; + } + + rate /= 1000; + print_debug("%s frequency = %u\n", + tag == RPI_FIRMWARE_GET_CLOCK_RATE ? "Current": + tag == RPI_FIRMWARE_GET_MIN_CLOCK_RATE ? "Min": + tag == RPI_FIRMWARE_GET_MAX_CLOCK_RATE ? "Max": + "Unexpected", rate); + + return rate; +} + +/* + ==================================================== + Module Initialisation registers the cpufreq driver + ==================================================== +*/ +static int __init bcm2835_cpufreq_module_init(void) +{ + print_debug("IN\n"); + return cpufreq_register_driver(&bcm2835_cpufreq_driver); +} + +/* + ============= + Module exit + ============= +*/ +static void __exit bcm2835_cpufreq_module_exit(void) +{ + print_debug("IN\n"); + cpufreq_unregister_driver(&bcm2835_cpufreq_driver); + return; +} + +/* + ============================================================== + Initialisation function sets up the CPU policy for first use + ============================================================== +*/ +static int bcm2835_cpufreq_driver_init(struct cpufreq_policy *policy) +{ + /* measured value of how long it takes to change frequency */ + const unsigned int transition_latency = 355000; /* ns */ + + if (!rpi_firmware_get(NULL)) { + print_err("Firmware is not available\n"); + return -ENODEV; + } + + /* now find out what the maximum and minimum frequencies are */ + bcm2835_freq_table[0].frequency = bcm2835_cpufreq_get_clock(RPI_FIRMWARE_GET_MIN_CLOCK_RATE); + bcm2835_freq_table[1].frequency = bcm2835_cpufreq_get_clock(RPI_FIRMWARE_GET_MAX_CLOCK_RATE); + + print_info("min=%d max=%d\n", bcm2835_freq_table[0].frequency, bcm2835_freq_table[1].frequency); + return cpufreq_generic_init(policy, bcm2835_freq_table, transition_latency); +} + +/* + ===================================================================== + Target index function chooses the requested frequency from the table + ===================================================================== +*/ + +static int bcm2835_cpufreq_driver_target_index(struct cpufreq_policy *policy, unsigned int state) +{ + unsigned int target_freq = bcm2835_freq_table[state].frequency; + unsigned int cur = bcm2835_cpufreq_set_clock(policy->cur, target_freq); + + if (!cur) + { + print_err("Error occurred setting a new frequency (%d)\n", target_freq); + return -EINVAL; + } + print_debug("%s: %i: freq %d->%d\n", policy->governor->name, state, policy->cur, cur); + return 0; +} + +/* + ====================================================== + Get function returns the current frequency from table + ====================================================== +*/ + +static unsigned int bcm2835_cpufreq_driver_get(unsigned int cpu) +{ + unsigned int actual_rate = bcm2835_cpufreq_get_clock(RPI_FIRMWARE_GET_CLOCK_RATE); + print_debug("cpu%d: freq=%d\n", cpu, actual_rate); + return actual_rate <= bcm2835_freq_table[0].frequency ? bcm2835_freq_table[0].frequency : bcm2835_freq_table[1].frequency; +} + +/* the CPUFreq driver */ +static struct cpufreq_driver bcm2835_cpufreq_driver = { + .name = "BCM2835 CPUFreq", + .init = bcm2835_cpufreq_driver_init, + .verify = cpufreq_generic_frequency_table_verify, + .target_index = bcm2835_cpufreq_driver_target_index, + .get = bcm2835_cpufreq_driver_get, + .attr = cpufreq_generic_attr, +}; + +MODULE_AUTHOR("Dorian Peake and Dom Cobley"); +MODULE_DESCRIPTION("CPU frequency driver for BCM2835 chip"); +MODULE_LICENSE("GPL"); + +module_init(bcm2835_cpufreq_module_init); +module_exit(bcm2835_cpufreq_module_exit); --- linux-raspi2-4.2.0.orig/drivers/cpufreq/cpufreq-dt.c +++ linux-raspi2-4.2.0/drivers/cpufreq/cpufreq-dt.c @@ -255,7 +255,8 @@ rcu_read_unlock(); tol_uV = opp_uV * priv->voltage_tolerance / 100; - if (regulator_is_supported_voltage(cpu_reg, opp_uV, + if (regulator_is_supported_voltage(cpu_reg, + opp_uV - tol_uV, opp_uV + tol_uV)) { if (opp_uV < min_uV) min_uV = opp_uV; --- linux-raspi2-4.2.0.orig/drivers/cpufreq/cpufreq.c +++ linux-raspi2-4.2.0/drivers/cpufreq/cpufreq.c @@ -2487,6 +2487,20 @@ * REGISTER / UNREGISTER CPUFREQ DRIVER * *********************************************************************/ +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# @@ -2513,7 +2527,13 @@ (!!driver_data->get_intermediate != !!driver_data->target_intermediate)) 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; write_lock_irqsave(&cpufreq_driver_lock, flags); if (cpufreq_driver) { --- linux-raspi2-4.2.0.orig/drivers/cpufreq/intel_pstate.c +++ linux-raspi2-4.2.0/drivers/cpufreq/intel_pstate.c @@ -260,24 +260,31 @@ cpu->pstate.max_pstate == cpu->pstate.turbo_pstate); } -#define PCT_TO_HWP(x) (x * 255 / 100) static void intel_pstate_hwp_set(void) { - int min, max, cpu; - u64 value, freq; + int min, hw_min, max, hw_max, cpu, range, adj_range; + u64 value, cap; + + rdmsrl(MSR_HWP_CAPABILITIES, cap); + hw_min = HWP_LOWEST_PERF(cap); + hw_max = HWP_HIGHEST_PERF(cap); + range = hw_max - hw_min; get_online_cpus(); for_each_online_cpu(cpu) { rdmsrl_on_cpu(cpu, MSR_HWP_REQUEST, &value); - min = PCT_TO_HWP(limits.min_perf_pct); + adj_range = limits.min_perf_pct * range / 100; + min = hw_min + adj_range; value &= ~HWP_MIN_PERF(~0L); value |= HWP_MIN_PERF(min); - max = PCT_TO_HWP(limits.max_perf_pct); + adj_range = limits.max_perf_pct * range / 100; + max = hw_min + adj_range; if (limits.no_turbo) { - rdmsrl( MSR_HWP_CAPABILITIES, freq); - max = HWP_GUARANTEED_PERF(freq); + hw_max = HWP_GUARANTEED_PERF(cap); + if (hw_max < max) + max = hw_max; } value &= ~HWP_MAX_PERF(~0L); @@ -484,12 +491,11 @@ } /************************** sysfs end ************************/ -static void intel_pstate_hwp_enable(void) +static void intel_pstate_hwp_enable(struct cpudata *cpudata) { - hwp_active++; pr_info("intel_pstate: HWP enabled\n"); - wrmsrl( MSR_PM_ENABLE, 0x1); + wrmsrl_on_cpu(cpudata->cpu, MSR_PM_ENABLE, 0x1); } static int byt_get_min_pstate(void) @@ -522,7 +528,7 @@ int32_t vid_fp; u32 vid; - val = pstate << 8; + val = (u64)pstate << 8; if (limits.no_turbo && !limits.turbo_disabled) val |= (u64)1 << 32; @@ -611,7 +617,7 @@ { u64 val; - val = pstate << 8; + val = (u64)pstate << 8; if (limits.no_turbo && !limits.turbo_disabled) val |= (u64)1 << 32; @@ -766,6 +772,11 @@ local_irq_save(flags); rdmsrl(MSR_IA32_APERF, aperf); rdmsrl(MSR_IA32_MPERF, mperf); + if (cpu->prev_mperf == mperf) { + local_irq_restore(flags); + return; + } + tsc = native_read_tsc(); local_irq_restore(flags); @@ -909,6 +920,7 @@ ICPU(0x4c, byt_params), ICPU(0x4e, core_params), ICPU(0x4f, core_params), + ICPU(0x5e, core_params), ICPU(0x56, core_params), ICPU(0x57, knl_params), {} @@ -933,6 +945,10 @@ cpu = all_cpu_data[cpunum]; cpu->cpu = cpunum; + + if (hwp_active) + intel_pstate_hwp_enable(cpu); + intel_pstate_get_cpu_pstates(cpu); init_timer_deferrable(&cpu->timer); @@ -1066,6 +1082,7 @@ static int __initdata no_load; static int __initdata no_hwp; static int __initdata hwp_only; +static int __initdata skylake_hwp; static unsigned int force_load; static int intel_pstate_msrs_not_valid(void) @@ -1245,8 +1262,9 @@ if (!all_cpu_data) return -ENOMEM; - if (static_cpu_has_safe(X86_FEATURE_HWP) && !no_hwp) - intel_pstate_hwp_enable(); + if (static_cpu_has_safe(X86_FEATURE_HWP) && !no_hwp + && (id->model != 0x5e || skylake_hwp)) + hwp_active++; if (!hwp_active && hwp_only) goto out; @@ -1287,6 +1305,8 @@ force_load = 1; if (!strcmp(str, "hwp_only")) hwp_only = 1; + if (!strcmp(str, "skylake_hwp")) + skylake_hwp = 1; return 0; } early_param("intel_pstate", intel_pstate_setup); --- linux-raspi2-4.2.0.orig/drivers/cpufreq/powernv-cpufreq.c +++ linux-raspi2-4.2.0/drivers/cpufreq/powernv-cpufreq.c @@ -27,20 +27,31 @@ #include #include #include +#include #include #include #include #include /* Required for cpu_sibling_mask() in UP configs */ +#include #define POWERNV_MAX_PSTATES 256 #define PMSR_PSAFE_ENABLE (1UL << 30) #define PMSR_SPR_EM_DISABLE (1UL << 31) #define PMSR_MAX(x) ((x >> 32) & 0xFF) -#define PMSR_LP(x) ((x >> 48) & 0xFF) static struct cpufreq_frequency_table powernv_freqs[POWERNV_MAX_PSTATES+1]; -static bool rebooting, throttled; +static bool rebooting, throttled, occ_reset; + +static struct chip { + unsigned int id; + bool throttled; + cpumask_t mask; + struct work_struct throttle; + bool restore; +} *chips; + +static int nr_chips; /* * Note: The set of pstates consists of contiguous integers, the @@ -298,28 +309,40 @@ return powernv_pstate_info.max - powernv_pstate_info.nominal; } -static void powernv_cpufreq_throttle_check(unsigned int cpu) +static void powernv_cpufreq_throttle_check(void *data) { + unsigned int cpu = smp_processor_id(); unsigned long pmsr; - int pmsr_pmax, pmsr_lp; + int pmsr_pmax, i; pmsr = get_pmspr(SPRN_PMSR); + for (i = 0; i < nr_chips; i++) + if (chips[i].id == cpu_to_chip_id(cpu)) + break; + /* Check for Pmax Capping */ pmsr_pmax = (s8)PMSR_MAX(pmsr); if (pmsr_pmax != powernv_pstate_info.max) { - throttled = true; - pr_info("CPU %d Pmax is reduced to %d\n", cpu, pmsr_pmax); - pr_info("Max allowed Pstate is capped\n"); - } - - /* - * Check for Psafe by reading LocalPstate - * or check if Psafe_mode_active is set in PMSR. - */ - pmsr_lp = (s8)PMSR_LP(pmsr); - if ((pmsr_lp < powernv_pstate_info.min) || - (pmsr & PMSR_PSAFE_ENABLE)) { + if (chips[i].throttled) + goto next; + chips[i].throttled = true; + if (pmsr_pmax < powernv_pstate_info.nominal) + pr_crit("CPU %d on Chip %u has Pmax reduced to %d\n", + cpu, chips[i].id, pmsr_pmax); + else + pr_info("CPU %d on Chip %u has Pmax reduced to %d\n", + cpu, chips[i].id, pmsr_pmax); + + } else if (chips[i].throttled) { + chips[i].throttled = false; + pr_info("CPU %d on Chip %u has Pmax restored to %d\n", cpu, + chips[i].id, pmsr_pmax); + } + + /* Check if Psafe_mode_active is set in PMSR. */ +next: + if (pmsr & PMSR_PSAFE_ENABLE) { throttled = true; pr_info("Pstate set to safe frequency\n"); } @@ -350,7 +373,7 @@ return 0; if (!throttled) - powernv_cpufreq_throttle_check(smp_processor_id()); + powernv_cpufreq_throttle_check(NULL); freq_data.pstate_id = powernv_freqs[new_index].driver_data; @@ -395,6 +418,119 @@ .notifier_call = powernv_cpufreq_reboot_notifier, }; +void powernv_cpufreq_work_fn(struct work_struct *work) +{ + struct chip *chip = container_of(work, struct chip, throttle); + unsigned int cpu; + cpumask_var_t mask; + + smp_call_function_any(&chip->mask, + powernv_cpufreq_throttle_check, NULL, 0); + + if (!chip->restore) + return; + + chip->restore = false; + cpumask_copy(mask, &chip->mask); + for_each_cpu_and(cpu, mask, cpu_online_mask) { + int index, tcpu; + struct cpufreq_policy policy; + + cpufreq_get_policy(&policy, cpu); + cpufreq_frequency_table_target(&policy, policy.freq_table, + policy.cur, + CPUFREQ_RELATION_C, &index); + powernv_cpufreq_target_index(&policy, index); + for_each_cpu(tcpu, policy.cpus) + cpumask_clear_cpu(tcpu, mask); + } +} + +static char throttle_reason[][30] = { + "No throttling", + "Power Cap", + "Processor Over Temperature", + "Power Supply Failure", + "Over Current", + "OCC Reset" + }; + +static int powernv_cpufreq_occ_msg(struct notifier_block *nb, + unsigned long msg_type, void *_msg) +{ + struct opal_msg *msg = _msg; + struct opal_occ_msg omsg; + int i; + + if (msg_type != OPAL_MSG_OCC) + return 0; + + omsg.type = be64_to_cpu(msg->params[0]); + + switch (omsg.type) { + case OCC_RESET: + occ_reset = true; + pr_info("OCC (On Chip Controller - enforces hard thermal/power limits) Resetting\n"); + /* + * powernv_cpufreq_throttle_check() is called in + * target() callback which can detect the throttle state + * for governors like ondemand. + * But static governors will not call target() often thus + * report throttling here. + */ + if (!throttled) { + throttled = true; + pr_crit("CPU frequency is throttled for duration\n"); + } + + break; + case OCC_LOAD: + pr_info("OCC Loading, CPU frequency is throttled until OCC is started\n"); + break; + case OCC_THROTTLE: + omsg.chip = be64_to_cpu(msg->params[1]); + omsg.throttle_status = be64_to_cpu(msg->params[2]); + + if (occ_reset) { + occ_reset = false; + throttled = false; + pr_info("OCC Active, CPU frequency is no longer throttled\n"); + + for (i = 0; i < nr_chips; i++) { + chips[i].restore = true; + schedule_work(&chips[i].throttle); + } + + return 0; + } + + if (omsg.throttle_status && + omsg.throttle_status <= OCC_MAX_THROTTLE_STATUS) + pr_info("OCC: Chip %u Pmax reduced due to %s\n", + (unsigned int)omsg.chip, + throttle_reason[omsg.throttle_status]); + else if (!omsg.throttle_status) + pr_info("OCC: Chip %u %s\n", (unsigned int)omsg.chip, + throttle_reason[omsg.throttle_status]); + else + return 0; + + for (i = 0; i < nr_chips; i++) + if (chips[i].id == omsg.chip) { + if (!omsg.throttle_status) + chips[i].restore = true; + schedule_work(&chips[i].throttle); + } + } + return 0; +} + +static struct notifier_block powernv_cpufreq_opal_nb = { + .notifier_call = powernv_cpufreq_occ_msg, + .next = NULL, + .priority = 0, +}; + static void powernv_cpufreq_stop_cpu(struct cpufreq_policy *policy) { struct powernv_smp_call_data freq_data; @@ -414,6 +550,36 @@ .attr = powernv_cpu_freq_attr, }; +static int init_chip_info(void) +{ + unsigned int chip[256]; + unsigned int cpu, i; + unsigned int prev_chip_id = UINT_MAX; + + for_each_possible_cpu(cpu) { + unsigned int id = cpu_to_chip_id(cpu); + + if (prev_chip_id != id) { + prev_chip_id = id; + chip[nr_chips++] = id; + } + } + + chips = kmalloc_array(nr_chips, sizeof(struct chip), GFP_KERNEL); + if (!chips) + return -ENOMEM; + + for (i = 0; i < nr_chips; i++) { + chips[i].id = chip[i]; + chips[i].throttled = false; + cpumask_copy(&chips[i].mask, cpumask_of_node(chip[i])); + INIT_WORK(&chips[i].throttle, powernv_cpufreq_work_fn); + chips[i].restore = false; + } + + return 0; +} + static int __init powernv_cpufreq_init(void) { int rc = 0; @@ -429,7 +595,13 @@ return rc; } + /* Populate chip info */ + rc = init_chip_info(); + if (rc) + return rc; + register_reboot_notifier(&powernv_cpufreq_reboot_nb); + opal_message_notifier_register(OPAL_MSG_OCC, &powernv_cpufreq_opal_nb); return cpufreq_register_driver(&powernv_cpufreq_driver); } module_init(powernv_cpufreq_init); @@ -437,6 +609,8 @@ static void __exit powernv_cpufreq_exit(void) { unregister_reboot_notifier(&powernv_cpufreq_reboot_nb); + opal_message_notifier_unregister(OPAL_MSG_OCC, + &powernv_cpufreq_opal_nb); cpufreq_unregister_driver(&powernv_cpufreq_driver); } module_exit(powernv_cpufreq_exit); --- linux-raspi2-4.2.0.orig/drivers/crypto/Kconfig +++ linux-raspi2-4.2.0/drivers/crypto/Kconfig @@ -461,7 +461,7 @@ config CRYPTO_DEV_VMX bool "Support for VMX cryptographic acceleration instructions" - depends on PPC64 + depends on PPC64 && VSX help Support for VMX cryptographic acceleration instructions. --- linux-raspi2-4.2.0.orig/drivers/crypto/marvell/cesa.h +++ linux-raspi2-4.2.0/drivers/crypto/marvell/cesa.h @@ -687,6 +687,33 @@ int mv_cesa_queue_req(struct crypto_async_request *req); +/* + * Helper function that indicates whether a crypto request needs to be + * cleaned up or not after being enqueued using mv_cesa_queue_req(). + */ +static inline int mv_cesa_req_needs_cleanup(struct crypto_async_request *req, + int ret) +{ + /* + * The queue still had some space, the request was queued + * normally, so there's no need to clean it up. + */ + if (ret == -EINPROGRESS) + return false; + + /* + * The queue had not space left, but since the request is + * flagged with CRYPTO_TFM_REQ_MAY_BACKLOG, it was added to + * the backlog and will be processed later. There's no need to + * clean it up. + */ + if (ret == -EBUSY && req->flags & CRYPTO_TFM_REQ_MAY_BACKLOG) + return false; + + /* Request wasn't queued, we need to clean it up */ + return true; +} + /* TDMA functions */ static inline void mv_cesa_req_dma_iter_init(struct mv_cesa_dma_iter *iter, --- linux-raspi2-4.2.0.orig/drivers/crypto/marvell/cipher.c +++ linux-raspi2-4.2.0/drivers/crypto/marvell/cipher.c @@ -189,7 +189,6 @@ { struct ablkcipher_request *ablkreq = ablkcipher_request_cast(req); struct mv_cesa_ablkcipher_req *creq = ablkcipher_request_ctx(ablkreq); - creq->req.base.engine = engine; if (creq->req.base.type == CESA_DMA_REQ) @@ -431,7 +430,7 @@ return ret; ret = mv_cesa_queue_req(&req->base); - if (ret && ret != -EINPROGRESS) + if (mv_cesa_req_needs_cleanup(&req->base, ret)) mv_cesa_ablkcipher_cleanup(req); return ret; @@ -551,7 +550,7 @@ return ret; ret = mv_cesa_queue_req(&req->base); - if (ret && ret != -EINPROGRESS) + if (mv_cesa_req_needs_cleanup(&req->base, ret)) mv_cesa_ablkcipher_cleanup(req); return ret; @@ -693,7 +692,7 @@ return ret; ret = mv_cesa_queue_req(&req->base); - if (ret && ret != -EINPROGRESS) + if (mv_cesa_req_needs_cleanup(&req->base, ret)) mv_cesa_ablkcipher_cleanup(req); return ret; --- linux-raspi2-4.2.0.orig/drivers/crypto/marvell/hash.c +++ linux-raspi2-4.2.0/drivers/crypto/marvell/hash.c @@ -739,10 +739,8 @@ return 0; ret = mv_cesa_queue_req(&req->base); - if (ret && ret != -EINPROGRESS) { + if (mv_cesa_req_needs_cleanup(&req->base, ret)) mv_cesa_ahash_cleanup(req); - return ret; - } return ret; } @@ -766,7 +764,7 @@ return 0; ret = mv_cesa_queue_req(&req->base); - if (ret && ret != -EINPROGRESS) + if (mv_cesa_req_needs_cleanup(&req->base, ret)) mv_cesa_ahash_cleanup(req); return ret; @@ -791,7 +789,7 @@ return 0; ret = mv_cesa_queue_req(&req->base); - if (ret && ret != -EINPROGRESS) + if (mv_cesa_req_needs_cleanup(&req->base, ret)) mv_cesa_ahash_cleanup(req); return ret; --- linux-raspi2-4.2.0.orig/drivers/crypto/nx/Kconfig +++ linux-raspi2-4.2.0/drivers/crypto/nx/Kconfig @@ -14,11 +14,14 @@ config CRYPTO_DEV_NX_COMPRESS tristate "Compression acceleration support" default y + select CRYPTO_ALGAPI + select 842_DECOMPRESS help Support for PowerPC Nest (NX) compression acceleration. This module supports acceleration for compressing memory with the 842 - algorithm. One of the platform drivers must be selected also. - If you choose 'M' here, this module will be called nx_compress. + algorithm using the cryptographic API. One of the platform + drivers must be selected also. If you choose 'M' here, this + module will be called nx_compress. if CRYPTO_DEV_NX_COMPRESS @@ -42,14 +45,4 @@ algorithm. This supports NX hardware on the PowerNV platform. If you choose 'M' here, this module will be called nx_compress_powernv. -config CRYPTO_DEV_NX_COMPRESS_CRYPTO - tristate "Compression acceleration cryptographic interface" - select CRYPTO_ALGAPI - select 842_DECOMPRESS - default y - help - Support for PowerPC Nest (NX) accelerators using the cryptographic - API. If you choose 'M' here, this module will be called - nx_compress_crypto. - endif --- linux-raspi2-4.2.0.orig/drivers/crypto/nx/Makefile +++ linux-raspi2-4.2.0/drivers/crypto/nx/Makefile @@ -10,12 +10,8 @@ nx-sha256.o \ nx-sha512.o -obj-$(CONFIG_CRYPTO_DEV_NX_COMPRESS) += nx-compress.o nx-compress-platform.o -obj-$(CONFIG_CRYPTO_DEV_NX_COMPRESS_PSERIES) += nx-compress-pseries.o -obj-$(CONFIG_CRYPTO_DEV_NX_COMPRESS_POWERNV) += nx-compress-powernv.o -obj-$(CONFIG_CRYPTO_DEV_NX_COMPRESS_CRYPTO) += nx-compress-crypto.o +obj-$(CONFIG_CRYPTO_DEV_NX_COMPRESS_PSERIES) += nx-compress-pseries.o nx-compress.o +obj-$(CONFIG_CRYPTO_DEV_NX_COMPRESS_POWERNV) += nx-compress-powernv.o nx-compress.o nx-compress-objs := nx-842.o -nx-compress-platform-objs := nx-842-platform.o nx-compress-pseries-objs := nx-842-pseries.o nx-compress-powernv-objs := nx-842-powernv.o -nx-compress-crypto-objs := nx-842-crypto.o --- linux-raspi2-4.2.0.orig/drivers/crypto/nx/nx-842-powernv.c +++ linux-raspi2-4.2.0/drivers/crypto/nx/nx-842-powernv.c @@ -26,6 +26,8 @@ MODULE_LICENSE("GPL"); MODULE_AUTHOR("Dan Streetman "); MODULE_DESCRIPTION("842 H/W Compression driver for IBM PowerNV processors"); +MODULE_ALIAS_CRYPTO("842"); +MODULE_ALIAS_CRYPTO("842-nx"); #define WORKMEM_ALIGN (CRB_ALIGN) #define CSB_WAIT_MAX (5000) /* ms */ @@ -439,6 +441,14 @@ (unsigned int)ccw, (unsigned int)be32_to_cpu(crb->ccw)); + /* + * NX842 coprocessor sets 3rd bit in CR register with XER[S0]. + * XER[S0] is the integer summary overflow bit which is nothing + * to do NX. Since this bit can be set with other return values, + * mask this bit. + */ + ret &= ~ICSWX_XERS0; + switch (ret) { case ICSWX_INITIATED: ret = wait_for_csb(wmem, csb); @@ -451,10 +461,6 @@ pr_err_ratelimited("ICSWX rejected\n"); ret = -EPROTO; break; - default: - pr_err_ratelimited("Invalid ICSWX return code %x\n", ret); - ret = -EPROTO; - break; } if (!ret) @@ -488,7 +494,7 @@ void *wmem) { return nx842_powernv_function(in, inlen, out, outlenp, - wmem, CCW_FC_842_COMP_NOCRC); + wmem, CCW_FC_842_COMP_CRC); } /** @@ -516,7 +522,7 @@ void *wmem) { return nx842_powernv_function(in, inlen, out, outlenp, - wmem, CCW_FC_842_DECOMP_NOCRC); + wmem, CCW_FC_842_DECOMP_CRC); } static int __init nx842_powernv_probe(struct device_node *dn) @@ -581,9 +587,29 @@ .decompress = nx842_powernv_decompress, }; +static int nx842_powernv_crypto_init(struct crypto_tfm *tfm) +{ + return nx842_crypto_init(tfm, &nx842_powernv_driver); +} + +static struct crypto_alg nx842_powernv_alg = { + .cra_name = "842", + .cra_driver_name = "842-nx", + .cra_priority = 300, + .cra_flags = CRYPTO_ALG_TYPE_COMPRESS, + .cra_ctxsize = sizeof(struct nx842_crypto_ctx), + .cra_module = THIS_MODULE, + .cra_init = nx842_powernv_crypto_init, + .cra_exit = nx842_crypto_exit, + .cra_u = { .compress = { + .coa_compress = nx842_crypto_compress, + .coa_decompress = nx842_crypto_decompress } } +}; + static __init int nx842_powernv_init(void) { struct device_node *dn; + int ret; /* verify workmem size/align restrictions */ BUILD_BUG_ON(WORKMEM_ALIGN % CRB_ALIGN); @@ -594,17 +620,14 @@ BUILD_BUG_ON(DDE_BUFFER_ALIGN % DDE_BUFFER_SIZE_MULT); BUILD_BUG_ON(DDE_BUFFER_SIZE_MULT % DDE_BUFFER_LAST_MULT); - pr_info("loading\n"); - for_each_compatible_node(dn, NULL, "ibm,power-nx") nx842_powernv_probe(dn); - if (!nx842_ct) { - pr_err("no coprocessors found\n"); + if (!nx842_ct) return -ENODEV; - } - if (!nx842_platform_driver_set(&nx842_powernv_driver)) { + ret = crypto_register_alg(&nx842_powernv_alg); + if (ret) { struct nx842_coproc *coproc, *n; list_for_each_entry_safe(coproc, n, &nx842_coprocs, list) { @@ -612,11 +635,9 @@ kfree(coproc); } - return -EEXIST; + return ret; } - pr_info("loaded\n"); - return 0; } module_init(nx842_powernv_init); @@ -625,13 +646,11 @@ { struct nx842_coproc *coproc, *n; - nx842_platform_driver_unset(&nx842_powernv_driver); + crypto_unregister_alg(&nx842_powernv_alg); list_for_each_entry_safe(coproc, n, &nx842_coprocs, list) { list_del(&coproc->list); kfree(coproc); } - - pr_info("unloaded\n"); } module_exit(nx842_powernv_exit); --- linux-raspi2-4.2.0.orig/drivers/crypto/nx/nx-842-pseries.c +++ linux-raspi2-4.2.0/drivers/crypto/nx/nx-842-pseries.c @@ -29,6 +29,8 @@ MODULE_LICENSE("GPL"); MODULE_AUTHOR("Robert Jennings "); MODULE_DESCRIPTION("842 H/W Compression driver for IBM Power processors"); +MODULE_ALIAS_CRYPTO("842"); +MODULE_ALIAS_CRYPTO("842-nx"); static struct nx842_constraints nx842_pseries_constraints = { .alignment = DDE_BUFFER_ALIGN, @@ -99,11 +101,6 @@ #define NX842_HW_PAGE_SIZE (4096) #define NX842_HW_PAGE_MASK (~(NX842_HW_PAGE_SIZE-1)) -enum nx842_status { - UNAVAILABLE, - AVAILABLE -}; - struct ibm_nx842_counters { atomic64_t comp_complete; atomic64_t comp_failed; @@ -121,7 +118,6 @@ unsigned int max_sg_len; unsigned int max_sync_size; unsigned int max_sync_sg; - enum nx842_status status; } __rcu *devdata; static DEFINE_SPINLOCK(devdata_mutex); @@ -235,6 +231,10 @@ dev_dbg(dev, "%s: Compression output larger than input\n", __func__); return -ENOSPC; + case 65: /* Calculated CRC doesn't match the passed value */ + dev_dbg(dev, "%s: CRC mismatch for decompression\n", + __func__); + return -EINVAL; case 66: /* Input data contains an illegal template field */ case 67: /* Template indicates data past the end of the input stream */ dev_dbg(dev, "%s: Bad data for decompression (code:%d)\n", @@ -325,7 +325,7 @@ slout.entries = (struct nx842_slentry *)workmem->slout; /* Init operation */ - op.flags = NX842_OP_COMPRESS; + op.flags = NX842_OP_COMPRESS_CRC; csbcpb = &workmem->csbcpb; memset(csbcpb, 0, sizeof(*csbcpb)); op.csbcpb = nx842_get_pa(csbcpb); @@ -458,7 +458,7 @@ slout.entries = (struct nx842_slentry *)workmem->slout; /* Init operation */ - op.flags = NX842_OP_DECOMPRESS; + op.flags = NX842_OP_DECOMPRESS_CRC; csbcpb = &workmem->csbcpb; memset(csbcpb, 0, sizeof(*csbcpb)); op.csbcpb = nx842_get_pa(csbcpb); @@ -537,41 +537,36 @@ devdata->max_sync_size = 0; devdata->max_sync_sg = 0; devdata->max_sg_len = 0; - devdata->status = UNAVAILABLE; return 0; } else return -ENOENT; } /** - * nx842_OF_upd_status -- Update the device info from OF status prop + * nx842_OF_upd_status -- Check the device info from OF status prop * * The status property indicates if the accelerator is enabled. If the * device is in the OF tree it indicates that the hardware is present. * The status field indicates if the device is enabled when the status * is 'okay'. Otherwise the device driver will be disabled. * - * @devdata - struct nx842_devdata to update * @prop - struct property point containing the maxsyncop for the update * * Returns: * 0 - Device is available - * -EINVAL - Device is not available + * -ENODEV - Device is not available */ -static int nx842_OF_upd_status(struct nx842_devdata *devdata, - struct property *prop) { - int ret = 0; +static int nx842_OF_upd_status(struct property *prop) +{ const char *status = (const char *)prop->value; - if (!strncmp(status, "okay", (size_t)prop->length)) { - devdata->status = AVAILABLE; - } else { - dev_info(devdata->dev, "%s: status '%s' is not 'okay'\n", - __func__, status); - devdata->status = UNAVAILABLE; - } + if (!strncmp(status, "okay", (size_t)prop->length)) + return 0; + if (!strncmp(status, "disabled", (size_t)prop->length)) + return -ENODEV; + dev_info(devdata->dev, "%s: unknown status '%s'\n", __func__, status); - return ret; + return -EINVAL; } /** @@ -735,6 +730,10 @@ int ret = 0; unsigned long flags; + new_devdata = kzalloc(sizeof(*new_devdata), GFP_NOFS); + if (!new_devdata) + return -ENOMEM; + spin_lock_irqsave(&devdata_mutex, flags); old_devdata = rcu_dereference_check(devdata, lockdep_is_held(&devdata_mutex)); @@ -744,16 +743,10 @@ if (!old_devdata || !of_node) { pr_err("%s: device is not available\n", __func__); spin_unlock_irqrestore(&devdata_mutex, flags); + kfree(new_devdata); return -ENODEV; } - new_devdata = kzalloc(sizeof(*new_devdata), GFP_NOFS); - if (!new_devdata) { - dev_err(old_devdata->dev, "%s: Could not allocate memory for device data\n", __func__); - ret = -ENOMEM; - goto error_out; - } - memcpy(new_devdata, old_devdata, sizeof(*old_devdata)); new_devdata->counters = old_devdata->counters; @@ -777,7 +770,7 @@ goto out; /* Perform property updates */ - ret = nx842_OF_upd_status(new_devdata, status); + ret = nx842_OF_upd_status(status); if (ret) goto error_out; @@ -970,13 +963,43 @@ .decompress = nx842_pseries_decompress, }; -static int __init nx842_probe(struct vio_dev *viodev, - const struct vio_device_id *id) +static int nx842_pseries_crypto_init(struct crypto_tfm *tfm) +{ + return nx842_crypto_init(tfm, &nx842_pseries_driver); +} + +static struct crypto_alg nx842_pseries_alg = { + .cra_name = "842", + .cra_driver_name = "842-nx", + .cra_priority = 300, + .cra_flags = CRYPTO_ALG_TYPE_COMPRESS, + .cra_ctxsize = sizeof(struct nx842_crypto_ctx), + .cra_module = THIS_MODULE, + .cra_init = nx842_pseries_crypto_init, + .cra_exit = nx842_crypto_exit, + .cra_u = { .compress = { + .coa_compress = nx842_crypto_compress, + .coa_decompress = nx842_crypto_decompress } } +}; + +static int nx842_probe(struct vio_dev *viodev, + const struct vio_device_id *id) { struct nx842_devdata *old_devdata, *new_devdata = NULL; unsigned long flags; int ret = 0; + new_devdata = kzalloc(sizeof(*new_devdata), GFP_NOFS); + if (!new_devdata) + return -ENOMEM; + + new_devdata->counters = kzalloc(sizeof(*new_devdata->counters), + GFP_NOFS); + if (!new_devdata->counters) { + kfree(new_devdata); + return -ENOMEM; + } + spin_lock_irqsave(&devdata_mutex, flags); old_devdata = rcu_dereference_check(devdata, lockdep_is_held(&devdata_mutex)); @@ -989,21 +1012,6 @@ dev_set_drvdata(&viodev->dev, NULL); - new_devdata = kzalloc(sizeof(*new_devdata), GFP_NOFS); - if (!new_devdata) { - dev_err(&viodev->dev, "%s: Could not allocate memory for device data\n", __func__); - ret = -ENOMEM; - goto error_unlock; - } - - new_devdata->counters = kzalloc(sizeof(*new_devdata->counters), - GFP_NOFS); - if (!new_devdata->counters) { - dev_err(&viodev->dev, "%s: Could not allocate memory for performance counters\n", __func__); - ret = -ENOMEM; - goto error_unlock; - } - new_devdata->vdev = viodev; new_devdata->dev = &viodev->dev; nx842_OF_set_defaults(new_devdata); @@ -1016,9 +1024,12 @@ of_reconfig_notifier_register(&nx842_of_nb); ret = nx842_OF_upd(NULL); - if (ret && ret != -ENODEV) { - dev_err(&viodev->dev, "could not parse device tree. %d\n", ret); - ret = -1; + if (ret) + goto error; + + ret = crypto_register_alg(&nx842_pseries_alg); + if (ret) { + dev_err(&viodev->dev, "could not register comp alg: %d\n", ret); goto error; } @@ -1043,7 +1054,7 @@ return ret; } -static int __exit nx842_remove(struct vio_dev *viodev) +static int nx842_remove(struct vio_dev *viodev) { struct nx842_devdata *old_devdata; unsigned long flags; @@ -1051,6 +1062,8 @@ pr_info("Removing IBM Power 842 compression device\n"); sysfs_remove_group(&viodev->dev.kobj, &nx842_attribute_group); + crypto_unregister_alg(&nx842_pseries_alg); + spin_lock_irqsave(&devdata_mutex, flags); old_devdata = rcu_dereference_check(devdata, lockdep_is_held(&devdata_mutex)); @@ -1074,18 +1087,16 @@ static struct vio_driver nx842_vio_driver = { .name = KBUILD_MODNAME, .probe = nx842_probe, - .remove = __exit_p(nx842_remove), + .remove = nx842_remove, .get_desired_dma = nx842_get_desired_dma, .id_table = nx842_vio_driver_ids, }; -static int __init nx842_init(void) +static int __init nx842_pseries_init(void) { struct nx842_devdata *new_devdata; int ret; - pr_info("Registering IBM Power 842 compression driver\n"); - if (!of_find_compatible_node(NULL, NULL, "ibm,compression")) return -ENODEV; @@ -1095,7 +1106,6 @@ pr_err("Could not allocate memory for device data\n"); return -ENOMEM; } - new_devdata->status = UNAVAILABLE; RCU_INIT_POINTER(devdata, new_devdata); ret = vio_register_driver(&nx842_vio_driver); @@ -1106,24 +1116,18 @@ return ret; } - if (!nx842_platform_driver_set(&nx842_pseries_driver)) { - vio_unregister_driver(&nx842_vio_driver); - kfree(new_devdata); - return -EEXIST; - } - return 0; } -module_init(nx842_init); +module_init(nx842_pseries_init); -static void __exit nx842_exit(void) +static void __exit nx842_pseries_exit(void) { struct nx842_devdata *old_devdata; unsigned long flags; - pr_info("Exiting IBM Power 842 compression driver\n"); - nx842_platform_driver_unset(&nx842_pseries_driver); + crypto_unregister_alg(&nx842_pseries_alg); + spin_lock_irqsave(&devdata_mutex, flags); old_devdata = rcu_dereference_check(devdata, lockdep_is_held(&devdata_mutex)); @@ -1136,5 +1140,5 @@ vio_unregister_driver(&nx842_vio_driver); } -module_exit(nx842_exit); +module_exit(nx842_pseries_exit); --- linux-raspi2-4.2.0.orig/drivers/crypto/nx/nx-842.c +++ linux-raspi2-4.2.0/drivers/crypto/nx/nx-842.c @@ -1,10 +1,5 @@ /* - * Driver frontend for IBM Power 842 compression accelerator - * - * Copyright (C) 2015 Dan Streetman, IBM Corp - * - * Designer of the Power data compression engine: - * Bulent Abali + * Cryptographic API for the NX-842 hardware compression. * * 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 @@ -15,89 +10,522 @@ * 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. + * + * Copyright (C) IBM Corporation, 2011-2015 + * + * Designer of the Power data compression engine: + * Bulent Abali + * + * Original Authors: Robert Jennings + * Seth Jennings + * + * Rewrite: Dan Streetman + * + * This is an interface to the NX-842 compression hardware in PowerPC + * processors. Most of the complexity of this drvier is due to the fact that + * the NX-842 compression hardware requires the input and output data buffers + * to be specifically aligned, to be a specific multiple in length, and within + * specific minimum and maximum lengths. Those restrictions, provided by the + * nx-842 driver via nx842_constraints, mean this driver must use bounce + * buffers and headers to correct misaligned in or out buffers, and to split + * input buffers that are too large. + * + * This driver will fall back to software decompression if the hardware + * decompression fails, so this driver's decompression should never fail as + * long as the provided compressed buffer is valid. Any compressed buffer + * created by this driver will have a header (except ones where the input + * perfectly matches the constraints); so users of this driver cannot simply + * pass a compressed buffer created by this driver over to the 842 software + * decompression library. Instead, users must use this driver to decompress; + * if the hardware fails or is unavailable, the compressed buffer will be + * parsed and the header removed, and the raw 842 buffer(s) passed to the 842 + * software decompression library. + * + * This does not fall back to software compression, however, since the caller + * of this function is specifically requesting hardware compression; if the + * hardware compression fails, the caller can fall back to software + * compression, and the raw 842 compressed buffer that the software compressor + * creates can be passed to this driver for hardware decompression; any + * buffer without our specific header magic is assumed to be a raw 842 buffer + * and passed directly to the hardware. Note that the software compression + * library will produce a compressed buffer that is incompatible with the + * hardware decompressor if the original input buffer length is not a multiple + * of 8; if such a compressed buffer is passed to this driver for + * decompression, the hardware will reject it and this driver will then pass + * it over to the software library for decompression. */ #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt -#include "nx-842.h" +#include +#include +#include -MODULE_LICENSE("GPL"); -MODULE_AUTHOR("Dan Streetman "); -MODULE_DESCRIPTION("842 H/W Compression driver for IBM Power processors"); +#include "nx-842.h" -/** - * nx842_constraints - * - * This provides the driver's constraints. Different nx842 implementations - * may have varying requirements. The constraints are: - * @alignment: All buffers should be aligned to this - * @multiple: All buffer lengths should be a multiple of this - * @minimum: Buffer lengths must not be less than this amount - * @maximum: Buffer lengths must not be more than this amount - * - * The constraints apply to all buffers and lengths, both input and output, - * for both compression and decompression, except for the minimum which - * only applies to compression input and decompression output; the - * compressed data can be less than the minimum constraint. It can be - * assumed that compressed data will always adhere to the multiple - * constraint. - * - * The driver may succeed even if these constraints are violated; - * however the driver can return failure or suffer reduced performance - * if any constraint is not met. +/* The first 5 bits of this magic are 0x1f, which is an invalid 842 5-bit + * template (see lib/842/842.h), so this magic number will never appear at + * the start of a raw 842 compressed buffer. That is important, as any buffer + * passed to us without this magic is assumed to be a raw 842 compressed + * buffer, and passed directly to the hardware to decompress. */ -int nx842_constraints(struct nx842_constraints *c) +#define NX842_CRYPTO_MAGIC (0xf842) +#define NX842_CRYPTO_HEADER_SIZE(g) \ + (sizeof(struct nx842_crypto_header) + \ + sizeof(struct nx842_crypto_header_group) * (g)) +#define NX842_CRYPTO_HEADER_MAX_SIZE \ + NX842_CRYPTO_HEADER_SIZE(NX842_CRYPTO_GROUP_MAX) + +/* bounce buffer size */ +#define BOUNCE_BUFFER_ORDER (2) +#define BOUNCE_BUFFER_SIZE \ + ((unsigned int)(PAGE_SIZE << BOUNCE_BUFFER_ORDER)) + +/* try longer on comp because we can fallback to sw decomp if hw is busy */ +#define COMP_BUSY_TIMEOUT (250) /* ms */ +#define DECOMP_BUSY_TIMEOUT (50) /* ms */ + +struct nx842_crypto_param { + u8 *in; + unsigned int iremain; + u8 *out; + unsigned int oremain; + unsigned int ototal; +}; + +static int update_param(struct nx842_crypto_param *p, + unsigned int slen, unsigned int dlen) { - memcpy(c, nx842_platform_driver()->constraints, sizeof(*c)); + if (p->iremain < slen) + return -EOVERFLOW; + if (p->oremain < dlen) + return -ENOSPC; + + p->in += slen; + p->iremain -= slen; + p->out += dlen; + p->oremain -= dlen; + p->ototal += dlen; + return 0; } -EXPORT_SYMBOL_GPL(nx842_constraints); -/** - * nx842_workmem_size - * - * Get the amount of working memory the driver requires. - */ -size_t nx842_workmem_size(void) +int nx842_crypto_init(struct crypto_tfm *tfm, struct nx842_driver *driver) { - return nx842_platform_driver()->workmem_size; + struct nx842_crypto_ctx *ctx = crypto_tfm_ctx(tfm); + + spin_lock_init(&ctx->lock); + ctx->driver = driver; + ctx->wmem = kmalloc(driver->workmem_size, GFP_KERNEL); + ctx->sbounce = (u8 *)__get_free_pages(GFP_KERNEL, BOUNCE_BUFFER_ORDER); + ctx->dbounce = (u8 *)__get_free_pages(GFP_KERNEL, BOUNCE_BUFFER_ORDER); + if (!ctx->wmem || !ctx->sbounce || !ctx->dbounce) { + kfree(ctx->wmem); + free_page((unsigned long)ctx->sbounce); + free_page((unsigned long)ctx->dbounce); + return -ENOMEM; + } + + return 0; } -EXPORT_SYMBOL_GPL(nx842_workmem_size); +EXPORT_SYMBOL_GPL(nx842_crypto_init); -int nx842_compress(const unsigned char *in, unsigned int ilen, - unsigned char *out, unsigned int *olen, void *wmem) +void nx842_crypto_exit(struct crypto_tfm *tfm) { - return nx842_platform_driver()->compress(in, ilen, out, olen, wmem); + struct nx842_crypto_ctx *ctx = crypto_tfm_ctx(tfm); + + kfree(ctx->wmem); + free_page((unsigned long)ctx->sbounce); + free_page((unsigned long)ctx->dbounce); } -EXPORT_SYMBOL_GPL(nx842_compress); +EXPORT_SYMBOL_GPL(nx842_crypto_exit); -int nx842_decompress(const unsigned char *in, unsigned int ilen, - unsigned char *out, unsigned int *olen, void *wmem) +static void check_constraints(struct nx842_constraints *c) { - return nx842_platform_driver()->decompress(in, ilen, out, olen, wmem); + /* limit maximum, to always have enough bounce buffer to decompress */ + if (c->maximum > BOUNCE_BUFFER_SIZE) + c->maximum = BOUNCE_BUFFER_SIZE; } -EXPORT_SYMBOL_GPL(nx842_decompress); -static __init int nx842_init(void) +static int nx842_crypto_add_header(struct nx842_crypto_header *hdr, u8 *buf) { - request_module("nx-compress-powernv"); - request_module("nx-compress-pseries"); + int s = NX842_CRYPTO_HEADER_SIZE(hdr->groups); - /* we prevent loading if there's no platform driver, and we get the - * module that set it so it won't unload, so we don't need to check - * if it's set in any of the above functions - */ - if (!nx842_platform_driver_get()) { - pr_err("no nx842 driver found.\n"); - return -ENODEV; + /* compress should have added space for header */ + if (s > be16_to_cpu(hdr->group[0].padding)) { + pr_err("Internal error: no space for header\n"); + return -EINVAL; } + memcpy(buf, hdr, s); + + print_hex_dump_debug("header ", DUMP_PREFIX_OFFSET, 16, 1, buf, s, 0); + return 0; } -module_init(nx842_init); -static void __exit nx842_exit(void) +static int compress(struct nx842_crypto_ctx *ctx, + struct nx842_crypto_param *p, + struct nx842_crypto_header_group *g, + struct nx842_constraints *c, + u16 *ignore, + unsigned int hdrsize) +{ + unsigned int slen = p->iremain, dlen = p->oremain, tmplen; + unsigned int adj_slen = slen; + u8 *src = p->in, *dst = p->out; + int ret, dskip = 0; + ktime_t timeout; + + if (p->iremain == 0) + return -EOVERFLOW; + + if (p->oremain == 0 || hdrsize + c->minimum > dlen) + return -ENOSPC; + + if (slen % c->multiple) + adj_slen = round_up(slen, c->multiple); + if (slen < c->minimum) + adj_slen = c->minimum; + if (slen > c->maximum) + adj_slen = slen = c->maximum; + if (adj_slen > slen || (u64)src % c->alignment) { + adj_slen = min(adj_slen, BOUNCE_BUFFER_SIZE); + slen = min(slen, BOUNCE_BUFFER_SIZE); + if (adj_slen > slen) + memset(ctx->sbounce + slen, 0, adj_slen - slen); + memcpy(ctx->sbounce, src, slen); + src = ctx->sbounce; + slen = adj_slen; + pr_debug("using comp sbounce buffer, len %x\n", slen); + } + + dst += hdrsize; + dlen -= hdrsize; + + if ((u64)dst % c->alignment) { + dskip = (int)(PTR_ALIGN(dst, c->alignment) - dst); + dst += dskip; + dlen -= dskip; + } + if (dlen % c->multiple) + dlen = round_down(dlen, c->multiple); + if (dlen < c->minimum) { +nospc: + dst = ctx->dbounce; + dlen = min(p->oremain, BOUNCE_BUFFER_SIZE); + dlen = round_down(dlen, c->multiple); + dskip = 0; + pr_debug("using comp dbounce buffer, len %x\n", dlen); + } + if (dlen > c->maximum) + dlen = c->maximum; + + tmplen = dlen; + timeout = ktime_add_ms(ktime_get(), COMP_BUSY_TIMEOUT); + do { + dlen = tmplen; /* reset dlen, if we're retrying */ + ret = ctx->driver->compress(src, slen, dst, &dlen, ctx->wmem); + /* possibly we should reduce the slen here, instead of + * retrying with the dbounce buffer? + */ + if (ret == -ENOSPC && dst != ctx->dbounce) + goto nospc; + } while (ret == -EBUSY && ktime_before(ktime_get(), timeout)); + if (ret) + return ret; + + dskip += hdrsize; + + if (dst == ctx->dbounce) + memcpy(p->out + dskip, dst, dlen); + + g->padding = cpu_to_be16(dskip); + g->compressed_length = cpu_to_be32(dlen); + g->uncompressed_length = cpu_to_be32(slen); + + if (p->iremain < slen) { + *ignore = slen - p->iremain; + slen = p->iremain; + } + + pr_debug("compress slen %x ignore %x dlen %x padding %x\n", + slen, *ignore, dlen, dskip); + + return update_param(p, slen, dskip + dlen); +} + +int nx842_crypto_compress(struct crypto_tfm *tfm, + const u8 *src, unsigned int slen, + u8 *dst, unsigned int *dlen) +{ + struct nx842_crypto_ctx *ctx = crypto_tfm_ctx(tfm); + struct nx842_crypto_header *hdr = &ctx->header; + struct nx842_crypto_param p; + struct nx842_constraints c = *ctx->driver->constraints; + unsigned int groups, hdrsize, h; + int ret, n; + bool add_header; + u16 ignore = 0; + + check_constraints(&c); + + p.in = (u8 *)src; + p.iremain = slen; + p.out = dst; + p.oremain = *dlen; + p.ototal = 0; + + *dlen = 0; + + groups = min_t(unsigned int, NX842_CRYPTO_GROUP_MAX, + DIV_ROUND_UP(p.iremain, c.maximum)); + hdrsize = NX842_CRYPTO_HEADER_SIZE(groups); + + spin_lock_bh(&ctx->lock); + + /* skip adding header if the buffers meet all constraints */ + add_header = (p.iremain % c.multiple || + p.iremain < c.minimum || + p.iremain > c.maximum || + (u64)p.in % c.alignment || + p.oremain % c.multiple || + p.oremain < c.minimum || + p.oremain > c.maximum || + (u64)p.out % c.alignment); + + hdr->magic = cpu_to_be16(NX842_CRYPTO_MAGIC); + hdr->groups = 0; + hdr->ignore = 0; + + while (p.iremain > 0) { + n = hdr->groups++; + ret = -ENOSPC; + if (hdr->groups > NX842_CRYPTO_GROUP_MAX) + goto unlock; + + /* header goes before first group */ + h = !n && add_header ? hdrsize : 0; + + if (ignore) + pr_warn("interal error, ignore is set %x\n", ignore); + + ret = compress(ctx, &p, &hdr->group[n], &c, &ignore, h); + if (ret) + goto unlock; + } + + if (!add_header && hdr->groups > 1) { + pr_err("Internal error: No header but multiple groups\n"); + ret = -EINVAL; + goto unlock; + } + + /* ignore indicates the input stream needed to be padded */ + hdr->ignore = cpu_to_be16(ignore); + if (ignore) + pr_debug("marked %d bytes as ignore\n", ignore); + + if (add_header) + ret = nx842_crypto_add_header(hdr, dst); + if (ret) + goto unlock; + + *dlen = p.ototal; + + pr_debug("compress total slen %x dlen %x\n", slen, *dlen); + +unlock: + spin_unlock_bh(&ctx->lock); + return ret; +} +EXPORT_SYMBOL_GPL(nx842_crypto_compress); + +static int decompress(struct nx842_crypto_ctx *ctx, + struct nx842_crypto_param *p, + struct nx842_crypto_header_group *g, + struct nx842_constraints *c, + u16 ignore) { - nx842_platform_driver_put(); + unsigned int slen = be32_to_cpu(g->compressed_length); + unsigned int required_len = be32_to_cpu(g->uncompressed_length); + unsigned int dlen = p->oremain, tmplen; + unsigned int adj_slen = slen; + u8 *src = p->in, *dst = p->out; + u16 padding = be16_to_cpu(g->padding); + int ret, spadding = 0, dpadding = 0; + ktime_t timeout; + + if (!slen || !required_len) + return -EINVAL; + + if (p->iremain <= 0 || padding + slen > p->iremain) + return -EOVERFLOW; + + if (p->oremain <= 0 || required_len - ignore > p->oremain) + return -ENOSPC; + + src += padding; + + if (slen % c->multiple) + adj_slen = round_up(slen, c->multiple); + if (slen < c->minimum) + adj_slen = c->minimum; + if (slen > c->maximum) + goto usesw; + if (slen < adj_slen || (u64)src % c->alignment) { + /* we can append padding bytes because the 842 format defines + * an "end" template (see lib/842/842_decompress.c) and will + * ignore any bytes following it. + */ + if (slen < adj_slen) + memset(ctx->sbounce + slen, 0, adj_slen - slen); + memcpy(ctx->sbounce, src, slen); + src = ctx->sbounce; + spadding = adj_slen - slen; + slen = adj_slen; + pr_debug("using decomp sbounce buffer, len %x\n", slen); + } + + if (dlen % c->multiple) + dlen = round_down(dlen, c->multiple); + if (dlen < required_len || (u64)dst % c->alignment) { + dst = ctx->dbounce; + dlen = min(required_len, BOUNCE_BUFFER_SIZE); + pr_debug("using decomp dbounce buffer, len %x\n", dlen); + } + if (dlen < c->minimum) + goto usesw; + if (dlen > c->maximum) + dlen = c->maximum; + + tmplen = dlen; + timeout = ktime_add_ms(ktime_get(), DECOMP_BUSY_TIMEOUT); + do { + dlen = tmplen; /* reset dlen, if we're retrying */ + ret = ctx->driver->decompress(src, slen, dst, &dlen, ctx->wmem); + } while (ret == -EBUSY && ktime_before(ktime_get(), timeout)); + if (ret) { +usesw: + /* reset everything, sw doesn't have constraints */ + src = p->in + padding; + slen = be32_to_cpu(g->compressed_length); + spadding = 0; + dst = p->out; + dlen = p->oremain; + dpadding = 0; + if (dlen < required_len) { /* have ignore bytes */ + dst = ctx->dbounce; + dlen = BOUNCE_BUFFER_SIZE; + } + pr_info_ratelimited("using software 842 decompression\n"); + ret = sw842_decompress(src, slen, dst, &dlen); + } + if (ret) + return ret; + + slen -= spadding; + + dlen -= ignore; + if (ignore) + pr_debug("ignoring last %x bytes\n", ignore); + + if (dst == ctx->dbounce) + memcpy(p->out, dst, dlen); + + pr_debug("decompress slen %x padding %x dlen %x ignore %x\n", + slen, padding, dlen, ignore); + + return update_param(p, slen + padding, dlen); } -module_exit(nx842_exit); + +int nx842_crypto_decompress(struct crypto_tfm *tfm, + const u8 *src, unsigned int slen, + u8 *dst, unsigned int *dlen) +{ + struct nx842_crypto_ctx *ctx = crypto_tfm_ctx(tfm); + struct nx842_crypto_header *hdr; + struct nx842_crypto_param p; + struct nx842_constraints c = *ctx->driver->constraints; + int n, ret, hdr_len; + u16 ignore = 0; + + check_constraints(&c); + + p.in = (u8 *)src; + p.iremain = slen; + p.out = dst; + p.oremain = *dlen; + p.ototal = 0; + + *dlen = 0; + + hdr = (struct nx842_crypto_header *)src; + + spin_lock_bh(&ctx->lock); + + /* If it doesn't start with our header magic number, assume it's a raw + * 842 compressed buffer and pass it directly to the hardware driver + */ + if (be16_to_cpu(hdr->magic) != NX842_CRYPTO_MAGIC) { + struct nx842_crypto_header_group g = { + .padding = 0, + .compressed_length = cpu_to_be32(p.iremain), + .uncompressed_length = cpu_to_be32(p.oremain), + }; + + ret = decompress(ctx, &p, &g, &c, 0); + if (ret) + goto unlock; + + goto success; + } + + if (!hdr->groups) { + pr_err("header has no groups\n"); + ret = -EINVAL; + goto unlock; + } + if (hdr->groups > NX842_CRYPTO_GROUP_MAX) { + pr_err("header has too many groups %x, max %x\n", + hdr->groups, NX842_CRYPTO_GROUP_MAX); + ret = -EINVAL; + goto unlock; + } + + hdr_len = NX842_CRYPTO_HEADER_SIZE(hdr->groups); + if (hdr_len > slen) { + ret = -EOVERFLOW; + goto unlock; + } + + memcpy(&ctx->header, src, hdr_len); + hdr = &ctx->header; + + for (n = 0; n < hdr->groups; n++) { + /* ignore applies to last group */ + if (n + 1 == hdr->groups) + ignore = be16_to_cpu(hdr->ignore); + + ret = decompress(ctx, &p, &hdr->group[n], &c, ignore); + if (ret) + goto unlock; + } + +success: + *dlen = p.ototal; + + pr_debug("decompress total slen %x dlen %x\n", slen, *dlen); + + ret = 0; + +unlock: + spin_unlock_bh(&ctx->lock); + + return ret; +} +EXPORT_SYMBOL_GPL(nx842_crypto_decompress); + +MODULE_LICENSE("GPL"); +MODULE_DESCRIPTION("IBM PowerPC Nest (NX) 842 Hardware Compression Driver"); +MODULE_AUTHOR("Dan Streetman "); --- linux-raspi2-4.2.0.orig/drivers/crypto/nx/nx-842.h +++ linux-raspi2-4.2.0/drivers/crypto/nx/nx-842.h @@ -3,8 +3,9 @@ #define __NX_842_H__ #include +#include #include -#include +#include #include #include #include @@ -104,6 +105,25 @@ #define GET_FIELD(v, m) (((v) & (m)) >> MASK_LSH(m)) #define SET_FIELD(v, m, val) (((v) & ~(m)) | (((val) << MASK_LSH(m)) & (m))) +/** + * This provides the driver's constraints. Different nx842 implementations + * may have varying requirements. The constraints are: + * @alignment: All buffers should be aligned to this + * @multiple: All buffer lengths should be a multiple of this + * @minimum: Buffer lengths must not be less than this amount + * @maximum: Buffer lengths must not be more than this amount + * + * The constraints apply to all buffers and lengths, both input and output, + * for both compression and decompression, except for the minimum which + * only applies to compression input and decompression output; the + * compressed data can be less than the minimum constraint. It can be + * assumed that compressed data will always adhere to the multiple + * constraint. + * + * The driver may succeed even if these constraints are violated; + * however the driver can return failure or suffer reduced performance + * if any constraint is not met. + */ struct nx842_constraints { int alignment; int multiple; @@ -126,19 +146,40 @@ void *wrkmem); }; -struct nx842_driver *nx842_platform_driver(void); -bool nx842_platform_driver_set(struct nx842_driver *driver); -void nx842_platform_driver_unset(struct nx842_driver *driver); -bool nx842_platform_driver_get(void); -void nx842_platform_driver_put(void); - -size_t nx842_workmem_size(void); - -int nx842_constraints(struct nx842_constraints *constraints); - -int nx842_compress(const unsigned char *in, unsigned int in_len, - unsigned char *out, unsigned int *out_len, void *wrkmem); -int nx842_decompress(const unsigned char *in, unsigned int in_len, - unsigned char *out, unsigned int *out_len, void *wrkmem); +struct nx842_crypto_header_group { + __be16 padding; /* unused bytes at start of group */ + __be32 compressed_length; /* compressed bytes in group */ + __be32 uncompressed_length; /* bytes after decompression */ +} __packed; + +struct nx842_crypto_header { + __be16 magic; /* NX842_CRYPTO_MAGIC */ + __be16 ignore; /* decompressed end bytes to ignore */ + u8 groups; /* total groups in this header */ + struct nx842_crypto_header_group group[]; +} __packed; + +#define NX842_CRYPTO_GROUP_MAX (0x20) + +struct nx842_crypto_ctx { + spinlock_t lock; + + u8 *wmem; + u8 *sbounce, *dbounce; + + struct nx842_crypto_header header; + struct nx842_crypto_header_group group[NX842_CRYPTO_GROUP_MAX]; + + struct nx842_driver *driver; +}; + +int nx842_crypto_init(struct crypto_tfm *tfm, struct nx842_driver *driver); +void nx842_crypto_exit(struct crypto_tfm *tfm); +int nx842_crypto_compress(struct crypto_tfm *tfm, + const u8 *src, unsigned int slen, + u8 *dst, unsigned int *dlen); +int nx842_crypto_decompress(struct crypto_tfm *tfm, + const u8 *src, unsigned int slen, + u8 *dst, unsigned int *dlen); #endif /* __NX_842_H__ */ --- linux-raspi2-4.2.0.orig/drivers/crypto/vmx/aes.c +++ linux-raspi2-4.2.0/drivers/crypto/vmx/aes.c @@ -84,6 +84,7 @@ preempt_disable(); pagefault_disable(); enable_kernel_altivec(); + enable_kernel_vsx(); ret = aes_p8_set_encrypt_key(key, keylen * 8, &ctx->enc_key); ret += aes_p8_set_decrypt_key(key, keylen * 8, &ctx->dec_key); pagefault_enable(); @@ -103,6 +104,7 @@ preempt_disable(); pagefault_disable(); enable_kernel_altivec(); + enable_kernel_vsx(); aes_p8_encrypt(src, dst, &ctx->enc_key); pagefault_enable(); preempt_enable(); @@ -119,6 +121,7 @@ preempt_disable(); pagefault_disable(); enable_kernel_altivec(); + enable_kernel_vsx(); aes_p8_decrypt(src, dst, &ctx->dec_key); pagefault_enable(); preempt_enable(); --- linux-raspi2-4.2.0.orig/drivers/crypto/vmx/aes_cbc.c +++ linux-raspi2-4.2.0/drivers/crypto/vmx/aes_cbc.c @@ -85,6 +85,7 @@ preempt_disable(); pagefault_disable(); enable_kernel_altivec(); + enable_kernel_vsx(); ret = aes_p8_set_encrypt_key(key, keylen * 8, &ctx->enc_key); ret += aes_p8_set_decrypt_key(key, keylen * 8, &ctx->dec_key); pagefault_enable(); @@ -115,6 +116,7 @@ preempt_disable(); pagefault_disable(); enable_kernel_altivec(); + enable_kernel_vsx(); blkcipher_walk_init(&walk, dst, src, nbytes); ret = blkcipher_walk_virt(desc, &walk); @@ -155,6 +157,7 @@ preempt_disable(); pagefault_disable(); enable_kernel_altivec(); + enable_kernel_vsx(); blkcipher_walk_init(&walk, dst, src, nbytes); ret = blkcipher_walk_virt(desc, &walk); --- linux-raspi2-4.2.0.orig/drivers/crypto/vmx/aes_ctr.c +++ linux-raspi2-4.2.0/drivers/crypto/vmx/aes_ctr.c @@ -82,6 +82,7 @@ pagefault_disable(); enable_kernel_altivec(); + enable_kernel_vsx(); ret = aes_p8_set_encrypt_key(key, keylen * 8, &ctx->enc_key); pagefault_enable(); @@ -100,6 +101,7 @@ pagefault_disable(); enable_kernel_altivec(); + enable_kernel_vsx(); aes_p8_encrypt(ctrblk, keystream, &ctx->enc_key); pagefault_enable(); @@ -113,6 +115,7 @@ struct scatterlist *src, unsigned int nbytes) { int ret; + u64 inc; struct blkcipher_walk walk; struct p8_aes_ctr_ctx *ctx = crypto_tfm_ctx(crypto_blkcipher_tfm(desc->tfm)); @@ -131,6 +134,7 @@ while ((nbytes = walk.nbytes) >= AES_BLOCK_SIZE) { pagefault_disable(); enable_kernel_altivec(); + enable_kernel_vsx(); aes_p8_ctr32_encrypt_blocks(walk.src.virt.addr, walk.dst.virt.addr, (nbytes & @@ -140,7 +144,12 @@ walk.iv); pagefault_enable(); - crypto_inc(walk.iv, AES_BLOCK_SIZE); + /* We need to update IV mostly for last bytes/round */ + inc = (nbytes & AES_BLOCK_MASK) / AES_BLOCK_SIZE; + if (inc > 0) + while (inc--) + crypto_inc(walk.iv, AES_BLOCK_SIZE); + nbytes &= AES_BLOCK_SIZE - 1; ret = blkcipher_walk_done(desc, &walk, nbytes); } --- linux-raspi2-4.2.0.orig/drivers/crypto/vmx/aesp8-ppc.pl +++ linux-raspi2-4.2.0/drivers/crypto/vmx/aesp8-ppc.pl @@ -1437,28 +1437,28 @@ ?vperm v31,v31,$out0,$keyperm lvx v25,$x10,$key_ # pre-load round[2] - vadduwm $two,$one,$one + vadduqm $two,$one,$one subi $inp,$inp,15 # undo "caller" $SHL $len,$len,4 - vadduwm $out1,$ivec,$one # counter values ... - vadduwm $out2,$ivec,$two + vadduqm $out1,$ivec,$one # counter values ... + vadduqm $out2,$ivec,$two vxor $out0,$ivec,$rndkey0 # ... xored with rndkey[0] le?li $idx,8 - vadduwm $out3,$out1,$two + vadduqm $out3,$out1,$two vxor $out1,$out1,$rndkey0 le?lvsl $inpperm,0,$idx - vadduwm $out4,$out2,$two + vadduqm $out4,$out2,$two vxor $out2,$out2,$rndkey0 le?vspltisb $tmp,0x0f - vadduwm $out5,$out3,$two + vadduqm $out5,$out3,$two vxor $out3,$out3,$rndkey0 le?vxor $inpperm,$inpperm,$tmp # transform for lvx_u/stvx_u - vadduwm $out6,$out4,$two + vadduqm $out6,$out4,$two vxor $out4,$out4,$rndkey0 - vadduwm $out7,$out5,$two + vadduqm $out7,$out5,$two vxor $out5,$out5,$rndkey0 - vadduwm $ivec,$out6,$two # next counter value + vadduqm $ivec,$out6,$two # next counter value vxor $out6,$out6,$rndkey0 vxor $out7,$out7,$rndkey0 @@ -1594,27 +1594,27 @@ vcipherlast $in0,$out0,$in0 vcipherlast $in1,$out1,$in1 - vadduwm $out1,$ivec,$one # counter values ... + vadduqm $out1,$ivec,$one # counter values ... vcipherlast $in2,$out2,$in2 - vadduwm $out2,$ivec,$two + vadduqm $out2,$ivec,$two vxor $out0,$ivec,$rndkey0 # ... xored with rndkey[0] vcipherlast $in3,$out3,$in3 - vadduwm $out3,$out1,$two + vadduqm $out3,$out1,$two vxor $out1,$out1,$rndkey0 vcipherlast $in4,$out4,$in4 - vadduwm $out4,$out2,$two + vadduqm $out4,$out2,$two vxor $out2,$out2,$rndkey0 vcipherlast $in5,$out5,$in5 - vadduwm $out5,$out3,$two + vadduqm $out5,$out3,$two vxor $out3,$out3,$rndkey0 vcipherlast $in6,$out6,$in6 - vadduwm $out6,$out4,$two + vadduqm $out6,$out4,$two vxor $out4,$out4,$rndkey0 vcipherlast $in7,$out7,$in7 - vadduwm $out7,$out5,$two + vadduqm $out7,$out5,$two vxor $out5,$out5,$rndkey0 le?vperm $in0,$in0,$in0,$inpperm - vadduwm $ivec,$out6,$two # next counter value + vadduqm $ivec,$out6,$two # next counter value vxor $out6,$out6,$rndkey0 le?vperm $in1,$in1,$in1,$inpperm vxor $out7,$out7,$rndkey0 --- linux-raspi2-4.2.0.orig/drivers/crypto/vmx/ghash.c +++ linux-raspi2-4.2.0/drivers/crypto/vmx/ghash.c @@ -119,6 +119,7 @@ preempt_disable(); pagefault_disable(); enable_kernel_altivec(); + enable_kernel_vsx(); enable_kernel_fp(); gcm_init_p8(ctx->htable, (const u64 *) key); pagefault_enable(); @@ -149,6 +150,7 @@ preempt_disable(); pagefault_disable(); enable_kernel_altivec(); + enable_kernel_vsx(); enable_kernel_fp(); gcm_ghash_p8(dctx->shash, ctx->htable, dctx->buffer, GHASH_DIGEST_SIZE); @@ -163,6 +165,7 @@ preempt_disable(); pagefault_disable(); enable_kernel_altivec(); + enable_kernel_vsx(); enable_kernel_fp(); gcm_ghash_p8(dctx->shash, ctx->htable, src, len); pagefault_enable(); @@ -193,6 +196,7 @@ preempt_disable(); pagefault_disable(); enable_kernel_altivec(); + enable_kernel_vsx(); enable_kernel_fp(); gcm_ghash_p8(dctx->shash, ctx->htable, dctx->buffer, GHASH_DIGEST_SIZE); --- linux-raspi2-4.2.0.orig/drivers/crypto/vmx/ghashp8-ppc.pl +++ linux-raspi2-4.2.0/drivers/crypto/vmx/ghashp8-ppc.pl @@ -61,6 +61,12 @@ mtspr 256,r0 li r10,0x30 lvx_u $H,0,r4 # load H + le?xor r7,r7,r7 + le?addi r7,r7,0x8 # need a vperm start with 08 + le?lvsr 5,0,r7 + le?vspltisb 6,0x0f + le?vxor 5,5,6 # set a b-endian mask + le?vperm $H,$H,$H,5 vspltisb $xC2,-16 # 0xf0 vspltisb $t0,1 # one --- linux-raspi2-4.2.0.orig/drivers/dma/Kconfig +++ linux-raspi2-4.2.0/drivers/dma/Kconfig @@ -85,6 +85,14 @@ help Enable support for the Intel(R) IOP Series RAID engines. +config IDMA64 + tristate "Intel integrated DMA 64-bit support" + select DMA_ENGINE + select DMA_VIRTUAL_CHANNELS + help + Enable DMA support for Intel Low Power Subsystem such as found on + Intel Skylake PCH. + source "drivers/dma/dw/Kconfig" config AT_HDMAC @@ -348,10 +356,21 @@ config DMA_BCM2835 tristate "BCM2835 DMA engine support" - depends on ARCH_BCM2835 + depends on ARCH_BCM2835 || ARCH_BCM2708 || ARCH_BCM2709 + select DMA_ENGINE + select DMA_VIRTUAL_CHANNELS + +config DMA_BCM2708 + tristate "BCM2708 DMA engine support" + depends on MACH_BCM2708 || MACH_BCM2709 || ARCH_BCM2835 select DMA_ENGINE select DMA_VIRTUAL_CHANNELS +config DMA_BCM2708_LEGACY + bool "BCM2708 DMA legacy API support" + depends on DMA_BCM2708 + default y + config TI_CPPI41 tristate "AM33xx CPPI41 DMA support" depends on ARCH_OMAP @@ -400,7 +419,7 @@ select DMA_VIRTUAL_CHANNELS help Enable support for the MOXA ART SoC DMA controller. - + config FSL_EDMA tristate "Freescale eDMA engine support" depends on OF --- linux-raspi2-4.2.0.orig/drivers/dma/Makefile +++ linux-raspi2-4.2.0/drivers/dma/Makefile @@ -14,6 +14,7 @@ obj-$(CONFIG_MPC512X_DMA) += mpc512x_dma.o obj-$(CONFIG_PPC_BESTCOMM) += bestcomm/ obj-$(CONFIG_MV_XOR) += mv_xor.o +obj-$(CONFIG_IDMA64) += idma64.o obj-$(CONFIG_DW_DMAC_CORE) += dw/ obj-$(CONFIG_AT_HDMAC) += at_hdmac.o obj-$(CONFIG_AT_XDMAC) += at_xdmac.o @@ -41,6 +42,7 @@ obj-$(CONFIG_DMA_OMAP) += omap-dma.o obj-$(CONFIG_TI_DMA_CROSSBAR) += ti-dma-crossbar.o obj-$(CONFIG_DMA_BCM2835) += bcm2835-dma.o +obj-$(CONFIG_DMA_BCM2708) += bcm2708-dmaengine.o obj-$(CONFIG_MMP_PDMA) += mmp_pdma.o obj-$(CONFIG_DMA_JZ4740) += dma-jz4740.o obj-$(CONFIG_DMA_JZ4780) += dma-jz4780.o --- linux-raspi2-4.2.0.orig/drivers/dma/at_xdmac.c +++ linux-raspi2-4.2.0/drivers/dma/at_xdmac.c @@ -455,6 +455,15 @@ return desc; } +void at_xdmac_init_used_desc(struct at_xdmac_desc *desc) +{ + memset(&desc->lld, 0, sizeof(desc->lld)); + INIT_LIST_HEAD(&desc->descs_list); + desc->direction = DMA_TRANS_NONE; + desc->xfer_size = 0; + desc->active_xfer = false; +} + /* Call must be protected by lock. */ static struct at_xdmac_desc *at_xdmac_get_desc(struct at_xdmac_chan *atchan) { @@ -466,7 +475,7 @@ desc = list_first_entry(&atchan->free_descs_list, struct at_xdmac_desc, desc_node); list_del(&desc->desc_node); - desc->active_xfer = false; + at_xdmac_init_used_desc(desc); } return desc; @@ -797,10 +806,7 @@ list_add_tail(&desc->desc_node, &first->descs_list); } - prev->lld.mbr_nda = first->tx_dma_desc.phys; - dev_dbg(chan2dev(chan), - "%s: chain lld: prev=0x%p, mbr_nda=%pad\n", - __func__, prev, &prev->lld.mbr_nda); + at_xdmac_queue_desc(chan, prev, first); first->tx_dma_desc.flags = flags; first->xfer_size = buf_len; first->direction = direction; @@ -878,14 +884,14 @@ if (xt->src_inc) { if (xt->src_sgl) - chan_cc |= AT_XDMAC_CC_SAM_UBS_DS_AM; + chan_cc |= AT_XDMAC_CC_SAM_UBS_AM; else chan_cc |= AT_XDMAC_CC_SAM_INCREMENTED_AM; } if (xt->dst_inc) { if (xt->dst_sgl) - chan_cc |= AT_XDMAC_CC_DAM_UBS_DS_AM; + chan_cc |= AT_XDMAC_CC_DAM_UBS_AM; else chan_cc |= AT_XDMAC_CC_DAM_INCREMENTED_AM; } --- linux-raspi2-4.2.0.orig/drivers/dma/bcm2708-dmaengine.c +++ linux-raspi2-4.2.0/drivers/dma/bcm2708-dmaengine.c @@ -0,0 +1,1298 @@ +/* + * BCM2835 DMA engine support + * + * This driver supports cyclic and scatter/gather DMA transfers. + * + * Author: Florian Meier + * Gellert Weisz + * Copyright 2013-2014 + * + * Based on + * OMAP DMAengine support by Russell King + * + * BCM2708 DMA Driver + * Copyright (C) 2010 Broadcom + * + * Raspberry Pi PCM I2S ALSA Driver + * Copyright (c) by Phil Poole 2013 + * + * MARVELL MMP Peripheral DMA Driver + * Copyright 2012 Marvell International 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; 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 +#include +#include +#include +#include +#include + +#include "virt-dma.h" + +static unsigned dma_debug; + +/* + * Legacy DMA API + */ + +#ifdef CONFIG_DMA_BCM2708_LEGACY + +#define CACHE_LINE_MASK 31 +#define DEFAULT_DMACHAN_BITMAP 0x10 /* channel 4 only */ + +/* valid only for channels 0 - 14, 15 has its own base address */ +#define BCM2708_DMA_CHAN(n) ((n) << 8) /* base address */ +#define BCM2708_DMA_CHANIO(dma_base, n) \ + ((void __iomem *)((char *)(dma_base) + BCM2708_DMA_CHAN(n))) + +struct vc_dmaman { + void __iomem *dma_base; + u32 chan_available; /* bitmap of available channels */ + u32 has_feature[BCM_DMA_FEATURE_COUNT]; /* bitmap of feature presence */ + struct mutex lock; +}; + +static struct device *dmaman_dev; /* we assume there's only one! */ +static struct vc_dmaman *g_dmaman; /* DMA manager */ +static int dmachans = -1; /* module parameter */ + +/* DMA Auxiliary Functions */ + +/* A DMA buffer on an arbitrary boundary may separate a cache line into a + section inside the DMA buffer and another section outside it. + Even if we flush DMA buffers from the cache there is always the chance that + during a DMA someone will access the part of a cache line that is outside + the DMA buffer - which will then bring in unwelcome data. + Without being able to dictate our own buffer pools we must insist that + DMA buffers consist of a whole number of cache lines. +*/ +extern int bcm_sg_suitable_for_dma(struct scatterlist *sg_ptr, int sg_len) +{ + int i; + + for (i = 0; i < sg_len; i++) { + if (sg_ptr[i].offset & CACHE_LINE_MASK || + sg_ptr[i].length & CACHE_LINE_MASK) + return 0; + } + + return 1; +} +EXPORT_SYMBOL_GPL(bcm_sg_suitable_for_dma); + +extern void bcm_dma_start(void __iomem *dma_chan_base, + dma_addr_t control_block) +{ + dsb(); /* ARM data synchronization (push) operation */ + + writel(control_block, dma_chan_base + BCM2708_DMA_ADDR); + writel(BCM2708_DMA_ACTIVE, dma_chan_base + BCM2708_DMA_CS); +} +EXPORT_SYMBOL_GPL(bcm_dma_start); + +extern void bcm_dma_wait_idle(void __iomem *dma_chan_base) +{ + dsb(); + + /* ugly busy wait only option for now */ + while (readl(dma_chan_base + BCM2708_DMA_CS) & BCM2708_DMA_ACTIVE) + cpu_relax(); +} +EXPORT_SYMBOL_GPL(bcm_dma_wait_idle); + +extern bool bcm_dma_is_busy(void __iomem *dma_chan_base) +{ + dsb(); + + return readl(dma_chan_base + BCM2708_DMA_CS) & BCM2708_DMA_ACTIVE; +} +EXPORT_SYMBOL_GPL(bcm_dma_is_busy); + +/* Complete an ongoing DMA (assuming its results are to be ignored) + Does nothing if there is no DMA in progress. + This routine waits for the current AXI transfer to complete before + terminating the current DMA. If the current transfer is hung on a DREQ used + by an uncooperative peripheral the AXI transfer may never complete. In this + case the routine times out and return a non-zero error code. + Use of this routine doesn't guarantee that the ongoing or aborted DMA + does not produce an interrupt. +*/ +extern int bcm_dma_abort(void __iomem *dma_chan_base) +{ + unsigned long int cs; + int rc = 0; + + cs = readl(dma_chan_base + BCM2708_DMA_CS); + + if (BCM2708_DMA_ACTIVE & cs) { + long int timeout = 10000; + + /* write 0 to the active bit - pause the DMA */ + writel(0, dma_chan_base + BCM2708_DMA_CS); + + /* wait for any current AXI transfer to complete */ + while (0 != (cs & BCM2708_DMA_ISPAUSED) && --timeout >= 0) + cs = readl(dma_chan_base + BCM2708_DMA_CS); + + if (0 != (cs & BCM2708_DMA_ISPAUSED)) { + /* we'll un-pause when we set of our next DMA */ + rc = -ETIMEDOUT; + + } else if (BCM2708_DMA_ACTIVE & cs) { + /* terminate the control block chain */ + writel(0, dma_chan_base + BCM2708_DMA_NEXTCB); + + /* abort the whole DMA */ + writel(BCM2708_DMA_ABORT | BCM2708_DMA_ACTIVE, + dma_chan_base + BCM2708_DMA_CS); + } + } + + return rc; +} +EXPORT_SYMBOL_GPL(bcm_dma_abort); + + /* DMA Manager Device Methods */ + +static void vc_dmaman_init(struct vc_dmaman *dmaman, void __iomem *dma_base, + u32 chans_available) +{ + dmaman->dma_base = dma_base; + dmaman->chan_available = chans_available; + dmaman->has_feature[BCM_DMA_FEATURE_FAST_ORD] = 0x0c; /* 2 & 3 */ + dmaman->has_feature[BCM_DMA_FEATURE_BULK_ORD] = 0x01; /* 0 */ + dmaman->has_feature[BCM_DMA_FEATURE_NORMAL_ORD] = 0xfe; /* 1 to 7 */ + dmaman->has_feature[BCM_DMA_FEATURE_LITE_ORD] = 0x7f00; /* 8 to 14 */ +} + +static int vc_dmaman_chan_alloc(struct vc_dmaman *dmaman, + unsigned required_feature_set) +{ + u32 chans; + int chan = 0; + int feature; + + chans = dmaman->chan_available; + for (feature = 0; feature < BCM_DMA_FEATURE_COUNT; feature++) + /* select the subset of available channels with the desired + features */ + if (required_feature_set & (1 << feature)) + chans &= dmaman->has_feature[feature]; + + if (!chans) + return -ENOENT; + + /* return the ordinal of the first channel in the bitmap */ + while (chans != 0 && (chans & 1) == 0) { + chans >>= 1; + chan++; + } + /* claim the channel */ + dmaman->chan_available &= ~(1 << chan); + + return chan; +} + +static int vc_dmaman_chan_free(struct vc_dmaman *dmaman, int chan) +{ + if (chan < 0) + return -EINVAL; + + if ((1 << chan) & dmaman->chan_available) + return -EIDRM; + + dmaman->chan_available |= (1 << chan); + + return 0; +} + +/* DMA Manager Monitor */ + +extern int bcm_dma_chan_alloc(unsigned required_feature_set, + void __iomem **out_dma_base, int *out_dma_irq) +{ + struct vc_dmaman *dmaman = g_dmaman; + struct platform_device *pdev = to_platform_device(dmaman_dev); + struct resource *r; + int chan; + + if (!dmaman_dev) + return -ENODEV; + + mutex_lock(&dmaman->lock); + chan = vc_dmaman_chan_alloc(dmaman, required_feature_set); + if (chan < 0) + goto out; + + r = platform_get_resource(pdev, IORESOURCE_IRQ, (unsigned int)chan); + if (!r) { + dev_err(dmaman_dev, "failed to get irq for DMA channel %d\n", + chan); + vc_dmaman_chan_free(dmaman, chan); + chan = -ENOENT; + goto out; + } + + *out_dma_base = BCM2708_DMA_CHANIO(dmaman->dma_base, chan); + *out_dma_irq = r->start; + dev_dbg(dmaman_dev, + "Legacy API allocated channel=%d, base=%p, irq=%i\n", + chan, *out_dma_base, *out_dma_irq); + +out: + mutex_unlock(&dmaman->lock); + + return chan; +} +EXPORT_SYMBOL_GPL(bcm_dma_chan_alloc); + +extern int bcm_dma_chan_free(int channel) +{ + struct vc_dmaman *dmaman = g_dmaman; + int rc; + + if (!dmaman_dev) + return -ENODEV; + + mutex_lock(&dmaman->lock); + rc = vc_dmaman_chan_free(dmaman, channel); + mutex_unlock(&dmaman->lock); + + return rc; +} +EXPORT_SYMBOL_GPL(bcm_dma_chan_free); + +int bcm_dmaman_probe(struct platform_device *pdev, void __iomem *base, + u32 chans_available) +{ + struct device *dev = &pdev->dev; + struct vc_dmaman *dmaman; + + dmaman = devm_kzalloc(dev, sizeof(*dmaman), GFP_KERNEL); + if (!dmaman) + return -ENOMEM; + + mutex_init(&dmaman->lock); + vc_dmaman_init(dmaman, base, chans_available); + g_dmaman = dmaman; + dmaman_dev = dev; + + dev_info(dev, "DMA legacy API manager at %p, dmachans=0x%x\n", + base, chans_available); + + return 0; +} +EXPORT_SYMBOL(bcm_dmaman_probe); + +int bcm_dmaman_remove(struct platform_device *pdev) +{ + dmaman_dev = NULL; + + return 0; +} +EXPORT_SYMBOL(bcm_dmaman_remove); + +#endif /* CONFIG_DMA_BCM2708_LEGACY */ + +/* + * DMA engine + */ + +struct bcm2835_dmadev { + struct dma_device ddev; + spinlock_t lock; + void __iomem *base; + struct device_dma_parameters dma_parms; +}; + +struct bcm2835_dma_cb { + uint32_t info; + uint32_t src; + uint32_t dst; + uint32_t length; + uint32_t stride; + uint32_t next; + uint32_t pad[2]; +}; + +struct bcm2835_chan { + struct virt_dma_chan vc; + struct list_head node; + + struct dma_slave_config cfg; + bool cyclic; + + int ch; + struct bcm2835_desc *desc; + + void __iomem *chan_base; + int irq_number; + + unsigned int dreq; +}; + +struct bcm2835_desc { + struct virt_dma_desc vd; + enum dma_transfer_direction dir; + + unsigned int control_block_size; + struct bcm2835_dma_cb *control_block_base; + dma_addr_t control_block_base_phys; + + unsigned int frames; + size_t size; +}; + +#define BCM2835_DMA_CS 0x00 +#define BCM2835_DMA_ADDR 0x04 +#define BCM2835_DMA_SOURCE_AD 0x0c +#define BCM2835_DMA_DEST_AD 0x10 +#define BCM2835_DMA_NEXTCB 0x1C + +/* DMA CS Control and Status bits */ +#define BCM2835_DMA_ACTIVE BIT(0) +#define BCM2835_DMA_INT BIT(2) +#define BCM2835_DMA_ISPAUSED BIT(4) /* Pause requested or not active */ +#define BCM2835_DMA_ISHELD BIT(5) /* Is held by DREQ flow control */ +#define BCM2835_DMA_ERR BIT(8) +#define BCM2835_DMA_ABORT BIT(30) /* Stop current CB, go to next, WO */ +#define BCM2835_DMA_RESET BIT(31) /* WO, self clearing */ + +#define BCM2835_DMA_INT_EN BIT(0) +#define BCM2835_DMA_WAIT_RESP BIT(3) +#define BCM2835_DMA_D_INC BIT(4) +#define BCM2835_DMA_D_WIDTH BIT(5) +#define BCM2835_DMA_D_DREQ BIT(6) +#define BCM2835_DMA_S_INC BIT(8) +#define BCM2835_DMA_S_WIDTH BIT(9) +#define BCM2835_DMA_S_DREQ BIT(10) + +#define BCM2835_DMA_PER_MAP(x) ((x) << 16) +#define BCM2835_DMA_WAITS(x) (((x)&0x1f) << 21) + +#define SDHCI_BCM_DMA_WAITS 0 /* delays slowing DMA transfers: 0-31 */ + +#define BCM2835_DMA_DATA_TYPE_S8 1 +#define BCM2835_DMA_DATA_TYPE_S16 2 +#define BCM2835_DMA_DATA_TYPE_S32 4 +#define BCM2835_DMA_DATA_TYPE_S128 16 + +#define BCM2835_DMA_BULK_MASK BIT(0) +#define BCM2835_DMA_FIQ_MASK (BIT(2) | BIT(3)) + + +/* Valid only for channels 0 - 14, 15 has its own base address */ +#define BCM2835_DMA_CHAN(n) ((n) << 8) /* Base address */ +#define BCM2835_DMA_CHANIO(base, n) ((base) + BCM2835_DMA_CHAN(n)) + +#define MAX_LITE_TRANSFER 32768 +#define MAX_NORMAL_TRANSFER 1073741824 + +static inline struct bcm2835_dmadev *to_bcm2835_dma_dev(struct dma_device *d) +{ + return container_of(d, struct bcm2835_dmadev, ddev); +} + +static inline struct bcm2835_chan *to_bcm2835_dma_chan(struct dma_chan *c) +{ + return container_of(c, struct bcm2835_chan, vc.chan); +} + +static inline struct bcm2835_desc *to_bcm2835_dma_desc( + struct dma_async_tx_descriptor *t) +{ + return container_of(t, struct bcm2835_desc, vd.tx); +} + +#if 0 +static void dma_dumpregs(struct bcm2835_chan *c) +{ + pr_debug("-------------DMA DUMPREGS-------------\n"); + pr_debug("CS= %u\n", + readl(c->chan_base + BCM2835_DMA_CS)); + pr_debug("ADDR= %u\n", + readl(c->chan_base + BCM2835_DMA_ADDR)); + pr_debug("SOURCE_ADDR= %u\n", + readl(c->chan_base + BCM2835_DMA_SOURCE_AD)); + pr_debug("DEST_AD= %u\n", + readl(c->chan_base + BCM2835_DMA_DEST_AD)); + pr_debug("NEXTCB= %u\n", + readl(c->chan_base + BCM2835_DMA_NEXTCB)); + pr_debug("--------------------------------------\n"); +} +#endif + +static void bcm2835_dma_desc_free(struct virt_dma_desc *vd) +{ + struct bcm2835_desc *desc = container_of(vd, struct bcm2835_desc, vd); + dma_free_coherent(desc->vd.tx.chan->device->dev, + desc->control_block_size, + desc->control_block_base, + desc->control_block_base_phys); + kfree(desc); +} + +static int bcm2835_dma_abort(void __iomem *chan_base) +{ + unsigned long cs; + long int timeout = 10000; + + cs = readl(chan_base + BCM2835_DMA_CS); + if (!(cs & BCM2835_DMA_ACTIVE)) + return 0; + + /* Write 0 to the active bit - Pause the DMA */ + writel(0, chan_base + BCM2835_DMA_CS); + + /* Wait for any current AXI transfer to complete */ + while ((cs & BCM2835_DMA_ISPAUSED) && --timeout) { + cpu_relax(); + cs = readl(chan_base + BCM2835_DMA_CS); + } + + /* We'll un-pause when we set of our next DMA */ + if (!timeout) + return -ETIMEDOUT; + + if (!(cs & BCM2835_DMA_ACTIVE)) + return 0; + + /* Terminate the control block chain */ + writel(0, chan_base + BCM2835_DMA_NEXTCB); + + /* Abort the whole DMA */ + writel(BCM2835_DMA_ABORT | BCM2835_DMA_ACTIVE, + chan_base + BCM2835_DMA_CS); + + return 0; +} + + +static void bcm2835_dma_start_desc(struct bcm2835_chan *c) +{ + struct virt_dma_desc *vd = vchan_next_desc(&c->vc); + struct bcm2835_desc *d; + + if (!vd) { + c->desc = NULL; + return; + } + + list_del(&vd->node); + + c->desc = d = to_bcm2835_dma_desc(&vd->tx); + + writel(d->control_block_base_phys, c->chan_base + BCM2835_DMA_ADDR); + writel(BCM2835_DMA_ACTIVE, c->chan_base + BCM2835_DMA_CS); + +} + +static irqreturn_t bcm2835_dma_callback(int irq, void *data) +{ + struct bcm2835_chan *c = data; + struct bcm2835_desc *d; + unsigned long flags; + + spin_lock_irqsave(&c->vc.lock, flags); + + /* Acknowledge interrupt */ + writel(BCM2835_DMA_INT, c->chan_base + BCM2835_DMA_CS); + + d = c->desc; + + if (d) { + if (c->cyclic) { + vchan_cyclic_callback(&d->vd); + + /* Keep the DMA engine running */ + writel(BCM2835_DMA_ACTIVE, + c->chan_base + BCM2835_DMA_CS); + + } else { + vchan_cookie_complete(&c->desc->vd); + bcm2835_dma_start_desc(c); + } + } + + spin_unlock_irqrestore(&c->vc.lock, flags); + + return IRQ_HANDLED; +} + +static int bcm2835_dma_alloc_chan_resources(struct dma_chan *chan) +{ + struct bcm2835_chan *c = to_bcm2835_dma_chan(chan); + int ret; + + dev_dbg(c->vc.chan.device->dev, + "Allocating DMA channel %d\n", c->ch); + + ret = request_irq(c->irq_number, + bcm2835_dma_callback, 0, "DMA IRQ", c); + + return ret; +} + +static void bcm2835_dma_free_chan_resources(struct dma_chan *chan) +{ + struct bcm2835_chan *c = to_bcm2835_dma_chan(chan); + + vchan_free_chan_resources(&c->vc); + free_irq(c->irq_number, c); + + dev_dbg(c->vc.chan.device->dev, "Freeing DMA channel %u\n", c->ch); +} + +static size_t bcm2835_dma_desc_size(struct bcm2835_desc *d) +{ + return d->size; +} + +static size_t bcm2835_dma_desc_size_pos(struct bcm2835_desc *d, dma_addr_t addr) +{ + unsigned int i; + size_t size; + + for (size = i = 0; i < d->frames; i++) { + struct bcm2835_dma_cb *control_block = + &d->control_block_base[i]; + size_t this_size = control_block->length; + dma_addr_t dma; + + if (d->dir == DMA_DEV_TO_MEM) + dma = control_block->dst; + else + dma = control_block->src; + + if (size) + size += this_size; + else if (addr >= dma && addr < dma + this_size) + size += dma + this_size - addr; + } + + return size; +} + +static enum dma_status bcm2835_dma_tx_status(struct dma_chan *chan, + dma_cookie_t cookie, struct dma_tx_state *txstate) +{ + struct bcm2835_chan *c = to_bcm2835_dma_chan(chan); + struct bcm2835_desc *d; + struct virt_dma_desc *vd; + enum dma_status ret; + unsigned long flags; + dma_addr_t pos; + + ret = dma_cookie_status(chan, cookie, txstate); + if (ret == DMA_COMPLETE || !txstate) + return ret; + + spin_lock_irqsave(&c->vc.lock, flags); + vd = vchan_find_desc(&c->vc, cookie); + if (vd) { + txstate->residue = + bcm2835_dma_desc_size(to_bcm2835_dma_desc(&vd->tx)); + } else if (c->desc && c->desc->vd.tx.cookie == cookie) { + d = c->desc; + + if (d->dir == DMA_MEM_TO_DEV) + pos = readl(c->chan_base + BCM2835_DMA_SOURCE_AD); + else if (d->dir == DMA_DEV_TO_MEM) + pos = readl(c->chan_base + BCM2835_DMA_DEST_AD); + else + pos = 0; + + txstate->residue = bcm2835_dma_desc_size_pos(d, pos); + } else { + txstate->residue = 0; + } + + spin_unlock_irqrestore(&c->vc.lock, flags); + + return ret; +} + +static void bcm2835_dma_issue_pending(struct dma_chan *chan) +{ + struct bcm2835_chan *c = to_bcm2835_dma_chan(chan); + unsigned long flags; + + spin_lock_irqsave(&c->vc.lock, flags); + if (vchan_issue_pending(&c->vc) && !c->desc) + bcm2835_dma_start_desc(c); + + spin_unlock_irqrestore(&c->vc.lock, flags); +} + +static struct dma_async_tx_descriptor *bcm2835_dma_prep_dma_cyclic( + struct dma_chan *chan, dma_addr_t buf_addr, size_t buf_len, + size_t period_len, enum dma_transfer_direction direction, + unsigned long flags) +{ + struct bcm2835_chan *c = to_bcm2835_dma_chan(chan); + enum dma_slave_buswidth dev_width; + struct bcm2835_desc *d; + dma_addr_t dev_addr; + unsigned int es, sync_type; + unsigned int frame, max_size; + + /* Grab configuration */ + if (!is_slave_direction(direction)) { + dev_err(chan->device->dev, "%s: bad direction?\n", __func__); + return NULL; + } + + if (direction == DMA_DEV_TO_MEM) { + dev_addr = c->cfg.src_addr; + dev_width = c->cfg.src_addr_width; + sync_type = BCM2835_DMA_S_DREQ; + } else { + dev_addr = c->cfg.dst_addr; + dev_width = c->cfg.dst_addr_width; + sync_type = BCM2835_DMA_D_DREQ; + } + + /* Bus width translates to the element size (ES) */ + switch (dev_width) { + case DMA_SLAVE_BUSWIDTH_4_BYTES: + es = BCM2835_DMA_DATA_TYPE_S32; + break; + default: + return NULL; + } + + /* Now allocate and setup the descriptor. */ + d = kzalloc(sizeof(*d), GFP_NOWAIT); + if (!d) + return NULL; + + d->dir = direction; + + if (c->ch >= 8) /* we have a LITE channel */ + max_size = MAX_LITE_TRANSFER; + else + max_size = MAX_NORMAL_TRANSFER; + period_len = min(period_len, max_size); + + d->frames = (buf_len-1) / period_len + 1; + + /* Allocate memory for control blocks */ + d->control_block_size = d->frames * sizeof(struct bcm2835_dma_cb); + d->control_block_base = dma_zalloc_coherent(chan->device->dev, + d->control_block_size, &d->control_block_base_phys, + GFP_NOWAIT); + + if (!d->control_block_base) { + kfree(d); + return NULL; + } + + /* + * Iterate over all frames, create a control block + * for each frame and link them together. + */ + for (frame = 0; frame < d->frames; frame++) { + struct bcm2835_dma_cb *control_block = + &d->control_block_base[frame]; + + /* Setup adresses */ + if (d->dir == DMA_DEV_TO_MEM) { + control_block->info = BCM2835_DMA_D_INC; + control_block->src = dev_addr; + control_block->dst = buf_addr + frame * period_len; + } else { + control_block->info = BCM2835_DMA_S_INC; + control_block->src = buf_addr + frame * period_len; + control_block->dst = dev_addr; + } + + /* Enable interrupt */ + control_block->info |= BCM2835_DMA_INT_EN; + + /* Setup synchronization */ + if (sync_type != 0) + control_block->info |= sync_type; + + /* Setup DREQ channel */ + if (c->cfg.slave_id != 0) + control_block->info |= + BCM2835_DMA_PER_MAP(c->cfg.slave_id); + + /* Length of a frame */ + if (frame != d->frames-1) + control_block->length = period_len; + else + control_block->length = buf_len - (d->frames - 1) * period_len; + + d->size += control_block->length; + + /* + * Next block is the next frame. + * This function is called on cyclic DMA transfers. + * Therefore, wrap around at number of frames. + */ + control_block->next = d->control_block_base_phys + + sizeof(struct bcm2835_dma_cb) + * ((frame + 1) % d->frames); + } + + c->cyclic = true; + + return vchan_tx_prep(&c->vc, &d->vd, flags); +} + + +static struct dma_async_tx_descriptor *bcm2835_dma_prep_slave_sg( + struct dma_chan *chan, struct scatterlist *sgl, + unsigned int sg_len, enum dma_transfer_direction direction, + unsigned long flags, void *context) +{ + struct bcm2835_chan *c = to_bcm2835_dma_chan(chan); + enum dma_slave_buswidth dev_width; + struct bcm2835_desc *d; + dma_addr_t dev_addr; + struct scatterlist *sgent; + unsigned int es, sync_type; + unsigned int i, j, splitct, max_size; + + if (!is_slave_direction(direction)) { + dev_err(chan->device->dev, "%s: bad direction?\n", __func__); + return NULL; + } + + if (direction == DMA_DEV_TO_MEM) { + dev_addr = c->cfg.src_addr; + dev_width = c->cfg.src_addr_width; + sync_type = BCM2835_DMA_S_DREQ; + } else { + dev_addr = c->cfg.dst_addr; + dev_width = c->cfg.dst_addr_width; + sync_type = BCM2835_DMA_D_DREQ; + } + + /* Bus width translates to the element size (ES) */ + switch (dev_width) { + case DMA_SLAVE_BUSWIDTH_4_BYTES: + es = BCM2835_DMA_DATA_TYPE_S32; + break; + default: + return NULL; + } + + /* Now allocate and setup the descriptor. */ + d = kzalloc(sizeof(*d), GFP_NOWAIT); + if (!d) + return NULL; + + d->dir = direction; + + if (c->ch >= 8) /* we have a LITE channel */ + max_size = MAX_LITE_TRANSFER; + else + max_size = MAX_NORMAL_TRANSFER; + + /* We store the length of the SG list in d->frames + taking care to account for splitting up transfers + too large for a LITE channel */ + + d->frames = 0; + for_each_sg(sgl, sgent, sg_len, i) { + uint32_t len = sg_dma_len(sgent); + d->frames += 1 + len / max_size; + } + + /* Allocate memory for control blocks */ + d->control_block_size = d->frames * sizeof(struct bcm2835_dma_cb); + d->control_block_base = dma_zalloc_coherent(chan->device->dev, + d->control_block_size, &d->control_block_base_phys, + GFP_NOWAIT); + + if (!d->control_block_base) { + kfree(d); + return NULL; + } + + /* + * Iterate over all SG entries, create a control block + * for each frame and link them together. + */ + + /* we count the number of times an SG entry had to be splitct + as a result of using a LITE channel */ + splitct = 0; + + for_each_sg(sgl, sgent, sg_len, i) { + dma_addr_t addr = sg_dma_address(sgent); + uint32_t len = sg_dma_len(sgent); + + for (j = 0; j < len; j += max_size) { + u32 waits; + struct bcm2835_dma_cb *control_block = + &d->control_block_base[i+splitct]; + + /* Setup adresses */ + if (d->dir == DMA_DEV_TO_MEM) { + control_block->info = BCM2835_DMA_D_INC | + BCM2835_DMA_D_WIDTH | BCM2835_DMA_S_DREQ; + control_block->src = dev_addr; + control_block->dst = addr + (dma_addr_t)j; + } else { + control_block->info = BCM2835_DMA_S_INC | + BCM2835_DMA_S_WIDTH | BCM2835_DMA_D_DREQ; + control_block->src = addr + (dma_addr_t)j; + control_block->dst = dev_addr; + } + + /* Common part */ + waits = SDHCI_BCM_DMA_WAITS; + if ((dma_debug >> 0) & 0x1f) + waits = (dma_debug >> 0) & 0x1f; + control_block->info |= BCM2835_DMA_WAITS(waits); + control_block->info |= BCM2835_DMA_WAIT_RESP; + + /* Enable */ + if (i == sg_len-1 && len-j <= max_size) + control_block->info |= BCM2835_DMA_INT_EN; + + /* Setup synchronization */ + if (sync_type != 0) + control_block->info |= sync_type; + + /* Setup DREQ channel */ + if (c->dreq != 0) + control_block->info |= + BCM2835_DMA_PER_MAP(c->dreq); + + /* Length of a frame */ + control_block->length = min(len-j, max_size); + d->size += control_block->length; + + /* + * Next block is the next frame. + */ + if (i < sg_len-1 || len-j > max_size) { + /* next block is the next frame. */ + control_block->next = d->control_block_base_phys + + sizeof(struct bcm2835_dma_cb) * (i + splitct + 1); + } else { + /* next block is empty. */ + control_block->next = 0; + } + + if (len-j > max_size) + splitct++; + } + } + + c->cyclic = false; + + return vchan_tx_prep(&c->vc, &d->vd, flags); +} + +static int bcm2835_dma_slave_config(struct dma_chan *chan, + struct dma_slave_config *cfg) +{ + struct bcm2835_chan *c = to_bcm2835_dma_chan(chan); + if ((cfg->direction == DMA_DEV_TO_MEM && + cfg->src_addr_width != DMA_SLAVE_BUSWIDTH_4_BYTES) || + (cfg->direction == DMA_MEM_TO_DEV && + cfg->dst_addr_width != DMA_SLAVE_BUSWIDTH_4_BYTES) || + !is_slave_direction(cfg->direction)) { + return -EINVAL; + } + + c->cfg = *cfg; + if (!c->dreq) + c->dreq = cfg->slave_id; + + return 0; +} + +static int bcm2835_dma_terminate_all(struct dma_chan *chan) +{ + struct bcm2835_chan *c = to_bcm2835_dma_chan(chan); + struct bcm2835_dmadev *d = to_bcm2835_dma_dev(c->vc.chan.device); + unsigned long flags; + int timeout = 10000; + LIST_HEAD(head); + + spin_lock_irqsave(&c->vc.lock, flags); + + /* Prevent this channel being scheduled */ + spin_lock(&d->lock); + list_del_init(&c->node); + spin_unlock(&d->lock); + + /* + * Stop DMA activity: we assume the callback will not be called + * after bcm_dma_abort() returns (even if it does, it will see + * c->desc is NULL and exit.) + */ + if (c->desc) { + bcm2835_dma_desc_free(&c->desc->vd); + c->desc = NULL; + bcm2835_dma_abort(c->chan_base); + + /* Wait for stopping */ + while (--timeout) { + if (!(readl(c->chan_base + BCM2835_DMA_CS) & + BCM2835_DMA_ACTIVE)) + break; + + cpu_relax(); + } + + if (!timeout) + dev_err(d->ddev.dev, "DMA transfer could not be terminated\n"); + } + + vchan_get_all_descriptors(&c->vc, &head); + spin_unlock_irqrestore(&c->vc.lock, flags); + vchan_dma_desc_free_list(&c->vc, &head); + + return 0; +} + +#ifndef CONFIG_DMA_BCM2708_LEGACY +static int bcm2835_dma_chan_init(struct bcm2835_dmadev *d, int chan_id, int irq) +{ + struct bcm2835_chan *c; + + c = devm_kzalloc(d->ddev.dev, sizeof(*c), GFP_KERNEL); + if (!c) + return -ENOMEM; + + c->vc.desc_free = bcm2835_dma_desc_free; + vchan_init(&c->vc, &d->ddev); + INIT_LIST_HEAD(&c->node); + + c->chan_base = BCM2835_DMA_CHANIO(d->base, chan_id); + c->ch = chan_id; + c->irq_number = irq; + + return 0; +} +#endif + +static int bcm2708_dma_chan_init(struct bcm2835_dmadev *d, + void __iomem *chan_base, int chan_id, int irq) +{ + struct bcm2835_chan *c; + + c = devm_kzalloc(d->ddev.dev, sizeof(*c), GFP_KERNEL); + if (!c) + return -ENOMEM; + + c->vc.desc_free = bcm2835_dma_desc_free; + vchan_init(&c->vc, &d->ddev); + INIT_LIST_HEAD(&c->node); + + c->chan_base = chan_base; + c->ch = chan_id; + c->irq_number = irq; + + return 0; +} + + +static void bcm2835_dma_free(struct bcm2835_dmadev *od) +{ + struct bcm2835_chan *c, *next; + + list_for_each_entry_safe(c, next, &od->ddev.channels, + vc.chan.device_node) { + list_del(&c->vc.chan.device_node); + tasklet_kill(&c->vc.task); + } +} + +static const struct of_device_id bcm2835_dma_of_match[] = { + { .compatible = "brcm,bcm2708-dma", }, + {}, +}; +MODULE_DEVICE_TABLE(of, bcm2835_dma_of_match); + +static struct dma_chan *bcm2835_dma_xlate(struct of_phandle_args *spec, + struct of_dma *ofdma) +{ + struct bcm2835_dmadev *d = ofdma->of_dma_data; + struct dma_chan *chan; + + chan = dma_get_any_slave_channel(&d->ddev); + if (!chan) + return NULL; + + /* Set DREQ from param */ + to_bcm2835_dma_chan(chan)->dreq = spec->args[0]; + + return chan; +} + +static int bcm2835_dma_probe(struct platform_device *pdev) +{ + struct bcm2835_dmadev *od; + struct resource *res; + void __iomem *base; + uint32_t chans_available; + int rc; + int i; + int irq; +#ifdef CONFIG_DMA_BCM2708_LEGACY + static const u32 wanted_features[] = { + BCM_DMA_FEATURE_FAST, + BCM_DMA_FEATURE_NORMAL, + BCM_DMA_FEATURE_LITE + }; + int j; +#endif + + + if (!pdev->dev.dma_mask) + pdev->dev.dma_mask = &pdev->dev.coherent_dma_mask; + + res = platform_get_resource(pdev, IORESOURCE_MEM, 0); + base = devm_ioremap_resource(&pdev->dev, res); + if (IS_ERR(base)) + return PTR_ERR(base); + +#ifdef CONFIG_DMA_BCM2708_LEGACY + + rc = dma_set_mask(&pdev->dev, DMA_BIT_MASK(32)); + if (rc) + return rc; + dma_set_coherent_mask(&pdev->dev, DMA_BIT_MASK(32)); + + + od = devm_kzalloc(&pdev->dev, sizeof(*od), GFP_KERNEL); + if (!od) + return -ENOMEM; + + if (!of_property_read_u32(pdev->dev.of_node, + "brcm,dma-channel-mask", &chans_available)) + dmachans = chans_available; + else if (dmachans == -1) + dmachans = DEFAULT_DMACHAN_BITMAP; + + rc = bcm_dmaman_probe(pdev, base, dmachans); + if (rc) + return rc; + + pdev->dev.dma_parms = &od->dma_parms; + dma_set_max_seg_size(&pdev->dev, 0x3FFFFFFF); + + + dma_cap_set(DMA_SLAVE, od->ddev.cap_mask); + dma_cap_set(DMA_PRIVATE, od->ddev.cap_mask); + dma_cap_set(DMA_CYCLIC, od->ddev.cap_mask); + od->ddev.device_alloc_chan_resources = bcm2835_dma_alloc_chan_resources; + od->ddev.device_free_chan_resources = bcm2835_dma_free_chan_resources; + od->ddev.device_tx_status = bcm2835_dma_tx_status; + od->ddev.device_issue_pending = bcm2835_dma_issue_pending; + od->ddev.device_prep_dma_cyclic = bcm2835_dma_prep_dma_cyclic; + od->ddev.device_prep_slave_sg = bcm2835_dma_prep_slave_sg; + od->ddev.device_terminate_all = bcm2835_dma_terminate_all; + od->ddev.device_config = bcm2835_dma_slave_config; + od->ddev.src_addr_widths = BIT(DMA_SLAVE_BUSWIDTH_4_BYTES); + od->ddev.dst_addr_widths = BIT(DMA_SLAVE_BUSWIDTH_4_BYTES); + od->ddev.directions = BIT(DMA_DEV_TO_MEM) | BIT(DMA_MEM_TO_DEV); + od->ddev.residue_granularity = DMA_RESIDUE_GRANULARITY_BURST; + od->ddev.dev = &pdev->dev; + INIT_LIST_HEAD(&od->ddev.channels); + spin_lock_init(&od->lock); + + platform_set_drvdata(pdev, od); + + for (i = 0, j = 0; j < ARRAY_SIZE(wanted_features);) { + + void __iomem *chan_base; + int chan_id; + + chan_id = bcm_dma_chan_alloc(wanted_features[j], + &chan_base, + &irq); + + if (chan_id < 0) { + j++; + continue; + } + + rc = bcm2708_dma_chan_init(od, chan_base, chan_id, irq); + if (rc) + goto err_no_dma; + i++; + } + + if (pdev->dev.of_node) { + rc = of_dma_controller_register(pdev->dev.of_node, + bcm2835_dma_xlate, od); + if (rc) { + dev_err(&pdev->dev, + "Failed to register DMA controller\n"); + goto err_no_dma; + } + } + + dev_info(&pdev->dev, "Initialized %i DMA channels (+ 1 legacy)\n", i); + +#else + rc = dma_set_mask_and_coherent(&pdev->dev, DMA_BIT_MASK(32)); + if (rc) + return rc; + + + od = devm_kzalloc(&pdev->dev, sizeof(*od), GFP_KERNEL); + if (!od) + return -ENOMEM; + + pdev->dev.dma_parms = &od->dma_parms; + dma_set_max_seg_size(&pdev->dev, 0x3FFFFFFF); + + od->base = base; + + dma_cap_set(DMA_SLAVE, od->ddev.cap_mask); + dma_cap_set(DMA_PRIVATE, od->ddev.cap_mask); + dma_cap_set(DMA_CYCLIC, od->ddev.cap_mask); + od->ddev.device_alloc_chan_resources = bcm2835_dma_alloc_chan_resources; + od->ddev.device_free_chan_resources = bcm2835_dma_free_chan_resources; + od->ddev.device_tx_status = bcm2835_dma_tx_status; + od->ddev.device_issue_pending = bcm2835_dma_issue_pending; + od->ddev.device_prep_dma_cyclic = bcm2835_dma_prep_dma_cyclic; + od->ddev.device_prep_slave_sg = bcm2835_dma_prep_slave_sg; + od->ddev.device_terminate_all = bcm2835_dma_terminate_all; + od->ddev.device_config = bcm2835_dma_slave_config; + od->ddev.src_addr_widths = BIT(DMA_SLAVE_BUSWIDTH_4_BYTES); + od->ddev.dst_addr_widths = BIT(DMA_SLAVE_BUSWIDTH_4_BYTES); + od->ddev.directions = BIT(DMA_DEV_TO_MEM) | BIT(DMA_MEM_TO_DEV); + od->ddev.residue_granularity = DMA_RESIDUE_GRANULARITY_BURST; + od->ddev.dev = &pdev->dev; + INIT_LIST_HEAD(&od->ddev.channels); + spin_lock_init(&od->lock); + + platform_set_drvdata(pdev, od); + + + /* Request DMA channel mask from device tree */ + if (of_property_read_u32(pdev->dev.of_node, + "brcm,dma-channel-mask", + &chans_available)) { + dev_err(&pdev->dev, "Failed to get channel mask\n"); + rc = -EINVAL; + goto err_no_dma; + } + + + /* + * Do not use the FIQ and BULK channels, + * because they are used by the GPU. + */ + chans_available &= ~(BCM2835_DMA_FIQ_MASK | BCM2835_DMA_BULK_MASK); + + + for (i = 0; i < pdev->num_resources; i++) { + irq = platform_get_irq(pdev, i); + if (irq < 0) + break; + + if (chans_available & (1 << i)) { + rc = bcm2835_dma_chan_init(od, i, irq); + if (rc) + goto err_no_dma; + } + } + + dev_dbg(&pdev->dev, "Initialized %i DMA channels\n", i); + + /* Device-tree DMA controller registration */ + rc = of_dma_controller_register(pdev->dev.of_node, + bcm2835_dma_xlate, od); + if (rc) { + dev_err(&pdev->dev, "Failed to register DMA controller\n"); + goto err_no_dma; + } +#endif + + rc = dma_async_device_register(&od->ddev); + if (rc) { + dev_err(&pdev->dev, + "Failed to register slave DMA engine device: %d\n", rc); + goto err_no_dma; + } + + dev_info(&pdev->dev, "Load BCM2835 DMA engine driver\n"); + dev_info(&pdev->dev, "dma_debug:%x\n", dma_debug); + + return 0; + +err_no_dma: + bcm2835_dma_free(od); + return rc; +} + +static int bcm2835_dma_remove(struct platform_device *pdev) +{ + struct bcm2835_dmadev *od = platform_get_drvdata(pdev); + + dma_async_device_unregister(&od->ddev); + bcm2835_dma_free(od); + bcm_dmaman_remove(pdev); + + return 0; +} + +static struct platform_driver bcm2835_dma_driver = { + .probe = bcm2835_dma_probe, + .remove = bcm2835_dma_remove, + .driver = { + .name = "bcm2708-dmaengine", + .owner = THIS_MODULE, + .of_match_table = of_match_ptr(bcm2835_dma_of_match), + }, +}; + +static int bcm2835_init(void) +{ + return platform_driver_register(&bcm2835_dma_driver); +} + +static void bcm2835_exit(void) +{ + platform_driver_unregister(&bcm2835_dma_driver); +} + +/* + * Load after serial driver (arch_initcall) so we see the messages if it fails, + * but before drivers (module_init) that need a DMA channel. + */ +subsys_initcall(bcm2835_init); +module_exit(bcm2835_exit); + +module_param(dma_debug, uint, 0644); +#ifdef CONFIG_DMA_BCM2708_LEGACY +/* Keep backward compatibility: dma.dmachans= */ +#undef MODULE_PARAM_PREFIX +#define MODULE_PARAM_PREFIX "dma." +module_param(dmachans, int, 0644); +#endif +MODULE_ALIAS("platform:bcm2835-dma"); +MODULE_DESCRIPTION("BCM2835 DMA engine driver"); +MODULE_AUTHOR("Florian Meier "); +MODULE_AUTHOR("Gellert Weisz "); +MODULE_LICENSE("GPL v2"); --- linux-raspi2-4.2.0.orig/drivers/dma/bcm2835-dma.c +++ linux-raspi2-4.2.0/drivers/dma/bcm2835-dma.c @@ -1,11 +1,10 @@ /* * BCM2835 DMA engine support * - * This driver only supports cyclic DMA transfers - * as needed for the I2S module. - * * Author: Florian Meier * Copyright 2013 + * Gellert Weisz + * Copyright 2013-2014 * * Based on * OMAP DMAengine support by Russell King @@ -36,6 +35,7 @@ #include #include #include +#include #include #include #include @@ -45,6 +45,9 @@ #include "virt-dma.h" +static unsigned dma_debug; +module_param(dma_debug, uint, 0644); + struct bcm2835_dmadev { struct dma_device ddev; spinlock_t lock; @@ -89,6 +92,8 @@ size_t size; }; +#define BCM2835_DMA_WAIT_CYCLES 0 /* Slow down DMA transfers: 0-31 */ + #define BCM2835_DMA_CS 0x00 #define BCM2835_DMA_ADDR 0x04 #define BCM2835_DMA_SOURCE_AD 0x0c @@ -105,12 +110,16 @@ #define BCM2835_DMA_RESET BIT(31) /* WO, self clearing */ #define BCM2835_DMA_INT_EN BIT(0) +#define BCM2835_DMA_WAIT_RESP BIT(3) #define BCM2835_DMA_D_INC BIT(4) +#define BCM2835_DMA_D_WIDTH BIT(5) #define BCM2835_DMA_D_DREQ BIT(6) #define BCM2835_DMA_S_INC BIT(8) +#define BCM2835_DMA_S_WIDTH BIT(9) #define BCM2835_DMA_S_DREQ BIT(10) #define BCM2835_DMA_PER_MAP(x) ((x) << 16) +#define BCM2835_DMA_WAITS(x) (((x) & 0x1f) << 21) #define BCM2835_DMA_DATA_TYPE_S8 1 #define BCM2835_DMA_DATA_TYPE_S16 2 @@ -124,6 +133,20 @@ #define BCM2835_DMA_CHAN(n) ((n) << 8) /* Base address */ #define BCM2835_DMA_CHANIO(base, n) ((base) + BCM2835_DMA_CHAN(n)) +#define MAX_NORMAL_TRANSFER SZ_1G +/* + * Max length on a Lite channel is 65535 bytes. + * DMA handles byte-enables on SDRAM reads and writes even on 128-bit accesses, + * but byte-enables don't exist on peripheral addresses, so align to 32-bit. + */ +#define MAX_LITE_TRANSFER (SZ_64K - 4) + +/* + * Transfers larger than 32k cause issues with the bcm2708-i2s driver, + * so limit transfer size to 32k as bcm2708-dmaengine did. + */ +#define MAX_CYCLIC_LITE_TRANSFER SZ_32K + static inline struct bcm2835_dmadev *to_bcm2835_dma_dev(struct dma_device *d) { return container_of(d, struct bcm2835_dmadev, ddev); @@ -217,12 +240,18 @@ d = c->desc; if (d) { - /* TODO Only works for cyclic DMA */ - vchan_cyclic_callback(&d->vd); - } + if (c->cyclic) { + vchan_cyclic_callback(&d->vd); - /* Keep the DMA engine running */ - writel(BCM2835_DMA_ACTIVE, c->chan_base + BCM2835_DMA_CS); + /* Keep the DMA engine running */ + writel(BCM2835_DMA_ACTIVE, + c->chan_base + BCM2835_DMA_CS); + + } else { + vchan_cookie_complete(&c->desc->vd); + bcm2835_dma_start_desc(c); + } + } spin_unlock_irqrestore(&c->vc.lock, flags); @@ -323,8 +352,6 @@ struct bcm2835_chan *c = to_bcm2835_dma_chan(chan); unsigned long flags; - c->cyclic = true; /* Nothing else is implemented */ - spin_lock_irqsave(&c->vc.lock, flags); if (vchan_issue_pending(&c->vc) && !c->desc) bcm2835_dma_start_desc(c); @@ -342,7 +369,7 @@ struct bcm2835_desc *d; dma_addr_t dev_addr; unsigned int es, sync_type; - unsigned int frame; + unsigned int frame, max_size; /* Grab configuration */ if (!is_slave_direction(direction)) { @@ -375,7 +402,12 @@ return NULL; d->dir = direction; - d->frames = buf_len / period_len; + if (c->ch >= 8) /* LITE channel */ + max_size = MAX_CYCLIC_LITE_TRANSFER; + else + max_size = MAX_NORMAL_TRANSFER; + period_len = min(period_len, max_size); + d->frames = (buf_len - 1) / (period_len + 1); /* Allocate memory for control blocks */ d->control_block_size = d->frames * sizeof(struct bcm2835_dma_cb); @@ -420,12 +452,16 @@ BCM2835_DMA_PER_MAP(c->dreq); /* Length of a frame */ - control_block->length = period_len; + if (frame != d->frames - 1) + control_block->length = period_len; + else + control_block->length = buf_len - (d->frames - 1) * + period_len; d->size += control_block->length; /* * Next block is the next frame. - * This DMA engine driver currently only supports cyclic DMA. + * This function is called on cyclic DMA transfers. * Therefore, wrap around at number of frames. */ control_block->next = d->control_block_base_phys + @@ -433,6 +469,159 @@ * ((frame + 1) % d->frames); } + c->cyclic = true; + + return vchan_tx_prep(&c->vc, &d->vd, flags); +} + +static struct dma_async_tx_descriptor * +bcm2835_dma_prep_slave_sg(struct dma_chan *chan, + struct scatterlist *sgl, + unsigned int sg_len, + enum dma_transfer_direction direction, + unsigned long flags, void *context) +{ + struct bcm2835_chan *c = to_bcm2835_dma_chan(chan); + enum dma_slave_buswidth dev_width; + struct bcm2835_desc *d; + dma_addr_t dev_addr; + struct scatterlist *sgent; + unsigned int i, sync_type, split_cnt, max_size; + + if (!is_slave_direction(direction)) { + dev_err(chan->device->dev, "direction not supported\n"); + return NULL; + } + + if (direction == DMA_DEV_TO_MEM) { + dev_addr = c->cfg.src_addr; + dev_width = c->cfg.src_addr_width; + sync_type = BCM2835_DMA_S_DREQ; + } else { + dev_addr = c->cfg.dst_addr; + dev_width = c->cfg.dst_addr_width; + sync_type = BCM2835_DMA_D_DREQ; + } + + /* Bus width translates to the element size (ES) */ + switch (dev_width) { + case DMA_SLAVE_BUSWIDTH_4_BYTES: + break; + default: + dev_err(chan->device->dev, "buswidth not supported: %i\n", + dev_width); + return NULL; + } + + /* Allocate and setup the descriptor. */ + d = kzalloc(sizeof(*d), GFP_NOWAIT); + if (!d) + return NULL; + + d->dir = direction; + + if (c->ch >= 8) /* LITE channel */ + max_size = MAX_LITE_TRANSFER; + else + max_size = MAX_NORMAL_TRANSFER; + + /* + * Store the length of the SG list in d->frames + * taking care to account for splitting up transfers + * too large for a LITE channel + */ + d->frames = 0; + for_each_sg(sgl, sgent, sg_len, i) { + unsigned int len = sg_dma_len(sgent); + + d->frames += len / max_size + 1; + } + + /* Allocate memory for control blocks */ + d->control_block_size = d->frames * sizeof(struct bcm2835_dma_cb); + d->control_block_base = dma_zalloc_coherent(chan->device->dev, + d->control_block_size, &d->control_block_base_phys, + GFP_NOWAIT); + if (!d->control_block_base) { + kfree(d); + return NULL; + } + + /* + * Iterate over all SG entries, create a control block + * for each frame and link them together. + * Count the number of times an SG entry had to be split + * as a result of using a LITE channel + */ + split_cnt = 0; + + for_each_sg(sgl, sgent, sg_len, i) { + unsigned int j; + dma_addr_t addr = sg_dma_address(sgent); + unsigned int len = sg_dma_len(sgent); + + for (j = 0; j < len; j += max_size) { + u32 waits; + struct bcm2835_dma_cb *control_block = + &d->control_block_base[i + split_cnt]; + + /* Setup addresses */ + if (d->dir == DMA_DEV_TO_MEM) { + control_block->info = BCM2835_DMA_D_INC | + BCM2835_DMA_D_WIDTH | + BCM2835_DMA_S_DREQ; + control_block->src = dev_addr; + control_block->dst = addr + (dma_addr_t)j; + } else { + control_block->info = BCM2835_DMA_S_INC | + BCM2835_DMA_S_WIDTH | + BCM2835_DMA_D_DREQ; + control_block->src = addr + (dma_addr_t)j; + control_block->dst = dev_addr; + } + + /* Common part */ + waits = BCM2835_DMA_WAIT_CYCLES; + if ((dma_debug >> 0) & 0x1f) + waits = (dma_debug >> 0) & 0x1f; + control_block->info |= BCM2835_DMA_WAITS(waits); + control_block->info |= BCM2835_DMA_WAIT_RESP; + + /* Enable */ + if (i == sg_len - 1 && len - j <= max_size) + control_block->info |= BCM2835_DMA_INT_EN; + + /* Setup synchronization */ + if (sync_type) + control_block->info |= sync_type; + + /* Setup DREQ channel */ + if (c->dreq) + control_block->info |= + BCM2835_DMA_PER_MAP(c->dreq); + + /* Length of a frame */ + control_block->length = min(len - j, max_size); + d->size += control_block->length; + + if (i < sg_len - 1 || len - j > max_size) { + /* Next block is the next frame. */ + control_block->next = + d->control_block_base_phys + + sizeof(struct bcm2835_dma_cb) * + (i + split_cnt + 1); + } else { + /* Next block is empty. */ + control_block->next = 0; + } + + if (len - j > max_size) + split_cnt++; + } + } + + c->cyclic = false; + return vchan_tx_prep(&c->vc, &d->vd, flags); } @@ -450,6 +639,8 @@ } c->cfg = *cfg; + if (!c->dreq) + c->dreq = cfg->slave_id; return 0; } @@ -580,6 +771,10 @@ if (IS_ERR(base)) return PTR_ERR(base); + rc = bcm_dmaman_probe(pdev, base, BCM2835_DMA_BULK_MASK); + if (rc) + dev_err(&pdev->dev, "Failed to initialize the legacy API\n"); + od->base = base; dma_cap_set(DMA_SLAVE, od->ddev.cap_mask); @@ -590,11 +785,13 @@ od->ddev.device_tx_status = bcm2835_dma_tx_status; od->ddev.device_issue_pending = bcm2835_dma_issue_pending; od->ddev.device_prep_dma_cyclic = bcm2835_dma_prep_dma_cyclic; + od->ddev.device_prep_slave_sg = bcm2835_dma_prep_slave_sg; od->ddev.device_config = bcm2835_dma_slave_config; od->ddev.device_terminate_all = bcm2835_dma_terminate_all; od->ddev.src_addr_widths = BIT(DMA_SLAVE_BUSWIDTH_4_BYTES); od->ddev.dst_addr_widths = BIT(DMA_SLAVE_BUSWIDTH_4_BYTES); od->ddev.directions = BIT(DMA_DEV_TO_MEM) | BIT(DMA_MEM_TO_DEV); + od->ddev.residue_granularity = DMA_RESIDUE_GRANULARITY_BURST; od->ddev.dev = &pdev->dev; INIT_LIST_HEAD(&od->ddev.channels); spin_lock_init(&od->lock); @@ -610,11 +807,8 @@ goto err_no_dma; } - /* - * Do not use the FIQ and BULK channels, - * because they are used by the GPU. - */ - chans_available &= ~(BCM2835_DMA_FIQ_MASK | BCM2835_DMA_BULK_MASK); + /* Channel 0 is used by the legacy API */ + chans_available &= ~BCM2835_DMA_BULK_MASK; for (i = 0; i < pdev->num_resources; i++) { irq = platform_get_irq(pdev, i); @@ -646,6 +840,7 @@ } dev_dbg(&pdev->dev, "Load BCM2835 DMA engine driver\n"); + dev_info(&pdev->dev, "dma_debug:%x\n", dma_debug); return 0; @@ -658,6 +853,7 @@ { struct bcm2835_dmadev *od = platform_get_drvdata(pdev); + bcm_dmaman_remove(pdev); dma_async_device_unregister(&od->ddev); bcm2835_dma_free(od); @@ -673,9 +869,25 @@ }, }; -module_platform_driver(bcm2835_dma_driver); +static int bcm2835_dma_init(void) +{ + return platform_driver_register(&bcm2835_dma_driver); +} + +static void bcm2835_dma_exit(void) +{ + platform_driver_unregister(&bcm2835_dma_driver); +} + +/* + * Load after serial driver (arch_initcall) so we see the messages if it fails, + * but before drivers (module_init) that need a DMA channel. + */ +subsys_initcall(bcm2835_dma_init); +module_exit(bcm2835_dma_exit); MODULE_ALIAS("platform:bcm2835-dma"); MODULE_DESCRIPTION("BCM2835 DMA engine driver"); MODULE_AUTHOR("Florian Meier "); +MODULE_AUTHOR("Gellert Weisz "); MODULE_LICENSE("GPL v2"); --- linux-raspi2-4.2.0.orig/drivers/dma/dw/core.c +++ linux-raspi2-4.2.0/drivers/dma/dw/core.c @@ -163,7 +163,7 @@ /*----------------------------------------------------------------------*/ -static inline unsigned int dwc_fast_fls(unsigned long long v) +static inline unsigned int dwc_fast_ffs(unsigned long long v) { /* * We can be a lot more clever here, but this should take care @@ -712,7 +712,7 @@ dw->data_width[dwc->dst_master]); src_width = dst_width = min_t(unsigned int, data_width, - dwc_fast_fls(src | dest | len)); + dwc_fast_ffs(src | dest | len)); ctllo = DWC_DEFAULT_CTLLO(chan) | DWC_CTLL_DST_WIDTH(dst_width) @@ -791,7 +791,7 @@ switch (direction) { case DMA_MEM_TO_DEV: - reg_width = __fls(sconfig->dst_addr_width); + reg_width = __ffs(sconfig->dst_addr_width); reg = sconfig->dst_addr; ctllo = (DWC_DEFAULT_CTLLO(chan) | DWC_CTLL_DST_WIDTH(reg_width) @@ -811,7 +811,7 @@ len = sg_dma_len(sg); mem_width = min_t(unsigned int, - data_width, dwc_fast_fls(mem | len)); + data_width, dwc_fast_ffs(mem | len)); slave_sg_todev_fill_desc: desc = dwc_desc_get(dwc); @@ -848,7 +848,7 @@ } break; case DMA_DEV_TO_MEM: - reg_width = __fls(sconfig->src_addr_width); + reg_width = __ffs(sconfig->src_addr_width); reg = sconfig->src_addr; ctllo = (DWC_DEFAULT_CTLLO(chan) | DWC_CTLL_SRC_WIDTH(reg_width) @@ -868,7 +868,7 @@ len = sg_dma_len(sg); mem_width = min_t(unsigned int, - data_width, dwc_fast_fls(mem | len)); + data_width, dwc_fast_ffs(mem | len)); slave_sg_fromdev_fill_desc: desc = dwc_desc_get(dwc); @@ -1591,7 +1591,6 @@ INIT_LIST_HEAD(&dw->dma.channels); for (i = 0; i < nr_channels; i++) { struct dw_dma_chan *dwc = &dw->chan[i]; - int r = nr_channels - i - 1; dwc->chan.device = &dw->dma; dma_cookie_init(&dwc->chan); @@ -1603,7 +1602,7 @@ /* 7 is highest priority & 0 is lowest. */ if (pdata->chan_priority == CHAN_PRIORITY_ASCENDING) - dwc->priority = r; + dwc->priority = nr_channels - i - 1; else dwc->priority = i; @@ -1622,6 +1621,7 @@ /* Hardware configuration */ if (autocfg) { unsigned int dwc_params; + unsigned int r = DW_DMA_MAX_NR_CHANNELS - i - 1; void __iomem *addr = chip->regs + r * sizeof(u32); dwc_params = dma_read_byaddr(addr, DWC_PARAMS); --- linux-raspi2-4.2.0.orig/drivers/dma/idma64.c +++ linux-raspi2-4.2.0/drivers/dma/idma64.c @@ -0,0 +1,710 @@ +/* + * Core driver for the Intel integrated DMA 64-bit + * + * Copyright (C) 2015 Intel Corporation + * Author: Andy Shevchenko + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "idma64.h" + +/* Platform driver name */ +#define DRV_NAME "idma64" + +/* For now we support only two channels */ +#define IDMA64_NR_CHAN 2 + +/* ---------------------------------------------------------------------- */ + +static struct device *chan2dev(struct dma_chan *chan) +{ + return &chan->dev->device; +} + +/* ---------------------------------------------------------------------- */ + +static void idma64_off(struct idma64 *idma64) +{ + unsigned short count = 100; + + dma_writel(idma64, CFG, 0); + + channel_clear_bit(idma64, MASK(XFER), idma64->all_chan_mask); + channel_clear_bit(idma64, MASK(BLOCK), idma64->all_chan_mask); + channel_clear_bit(idma64, MASK(SRC_TRAN), idma64->all_chan_mask); + channel_clear_bit(idma64, MASK(DST_TRAN), idma64->all_chan_mask); + channel_clear_bit(idma64, MASK(ERROR), idma64->all_chan_mask); + + do { + cpu_relax(); + } while (dma_readl(idma64, CFG) & IDMA64_CFG_DMA_EN && --count); +} + +static void idma64_on(struct idma64 *idma64) +{ + dma_writel(idma64, CFG, IDMA64_CFG_DMA_EN); +} + +/* ---------------------------------------------------------------------- */ + +static void idma64_chan_init(struct idma64 *idma64, struct idma64_chan *idma64c) +{ + u32 cfghi = IDMA64C_CFGH_SRC_PER(1) | IDMA64C_CFGH_DST_PER(0); + u32 cfglo = 0; + + /* Enforce FIFO drain when channel is suspended */ + cfglo |= IDMA64C_CFGL_CH_DRAIN; + + /* Set default burst alignment */ + cfglo |= IDMA64C_CFGL_DST_BURST_ALIGN | IDMA64C_CFGL_SRC_BURST_ALIGN; + + channel_writel(idma64c, CFG_LO, cfglo); + channel_writel(idma64c, CFG_HI, cfghi); + + /* Enable interrupts */ + channel_set_bit(idma64, MASK(XFER), idma64c->mask); + channel_set_bit(idma64, MASK(ERROR), idma64c->mask); + + /* + * Enforce the controller to be turned on. + * + * The iDMA is turned off in ->probe() and looses context during system + * suspend / resume cycle. That's why we have to enable it each time we + * use it. + */ + idma64_on(idma64); +} + +static void idma64_chan_stop(struct idma64 *idma64, struct idma64_chan *idma64c) +{ + channel_clear_bit(idma64, CH_EN, idma64c->mask); +} + +static void idma64_chan_start(struct idma64 *idma64, struct idma64_chan *idma64c) +{ + struct idma64_desc *desc = idma64c->desc; + struct idma64_hw_desc *hw = &desc->hw[0]; + + channel_writeq(idma64c, SAR, 0); + channel_writeq(idma64c, DAR, 0); + + channel_writel(idma64c, CTL_HI, IDMA64C_CTLH_BLOCK_TS(~0UL)); + channel_writel(idma64c, CTL_LO, IDMA64C_CTLL_LLP_S_EN | IDMA64C_CTLL_LLP_D_EN); + + channel_writeq(idma64c, LLP, hw->llp); + + channel_set_bit(idma64, CH_EN, idma64c->mask); +} + +static void idma64_stop_transfer(struct idma64_chan *idma64c) +{ + struct idma64 *idma64 = to_idma64(idma64c->vchan.chan.device); + + idma64_chan_stop(idma64, idma64c); +} + +static void idma64_start_transfer(struct idma64_chan *idma64c) +{ + struct idma64 *idma64 = to_idma64(idma64c->vchan.chan.device); + struct virt_dma_desc *vdesc; + + /* Get the next descriptor */ + vdesc = vchan_next_desc(&idma64c->vchan); + if (!vdesc) { + idma64c->desc = NULL; + return; + } + + list_del(&vdesc->node); + idma64c->desc = to_idma64_desc(vdesc); + + /* Configure the channel */ + idma64_chan_init(idma64, idma64c); + + /* Start the channel with a new descriptor */ + idma64_chan_start(idma64, idma64c); +} + +/* ---------------------------------------------------------------------- */ + +static void idma64_chan_irq(struct idma64 *idma64, unsigned short c, + u32 status_err, u32 status_xfer) +{ + struct idma64_chan *idma64c = &idma64->chan[c]; + struct idma64_desc *desc; + unsigned long flags; + + spin_lock_irqsave(&idma64c->vchan.lock, flags); + desc = idma64c->desc; + if (desc) { + if (status_err & (1 << c)) { + dma_writel(idma64, CLEAR(ERROR), idma64c->mask); + desc->status = DMA_ERROR; + } else if (status_xfer & (1 << c)) { + dma_writel(idma64, CLEAR(XFER), idma64c->mask); + desc->status = DMA_COMPLETE; + vchan_cookie_complete(&desc->vdesc); + idma64_start_transfer(idma64c); + } + + /* idma64_start_transfer() updates idma64c->desc */ + if (idma64c->desc == NULL || desc->status == DMA_ERROR) + idma64_stop_transfer(idma64c); + } + spin_unlock_irqrestore(&idma64c->vchan.lock, flags); +} + +static irqreturn_t idma64_irq(int irq, void *dev) +{ + struct idma64 *idma64 = dev; + u32 status = dma_readl(idma64, STATUS_INT); + u32 status_xfer; + u32 status_err; + unsigned short i; + + dev_vdbg(idma64->dma.dev, "%s: status=%#x\n", __func__, status); + + /* Check if we have any interrupt from the DMA controller */ + if (!status) + return IRQ_NONE; + + /* Disable interrupts */ + channel_clear_bit(idma64, MASK(XFER), idma64->all_chan_mask); + channel_clear_bit(idma64, MASK(ERROR), idma64->all_chan_mask); + + status_xfer = dma_readl(idma64, RAW(XFER)); + status_err = dma_readl(idma64, RAW(ERROR)); + + for (i = 0; i < idma64->dma.chancnt; i++) + idma64_chan_irq(idma64, i, status_err, status_xfer); + + /* Re-enable interrupts */ + channel_set_bit(idma64, MASK(XFER), idma64->all_chan_mask); + channel_set_bit(idma64, MASK(ERROR), idma64->all_chan_mask); + + return IRQ_HANDLED; +} + +/* ---------------------------------------------------------------------- */ + +static struct idma64_desc *idma64_alloc_desc(unsigned int ndesc) +{ + struct idma64_desc *desc; + + desc = kzalloc(sizeof(*desc), GFP_NOWAIT); + if (!desc) + return NULL; + + desc->hw = kcalloc(ndesc, sizeof(*desc->hw), GFP_NOWAIT); + if (!desc->hw) { + kfree(desc); + return NULL; + } + + return desc; +} + +static void idma64_desc_free(struct idma64_chan *idma64c, + struct idma64_desc *desc) +{ + struct idma64_hw_desc *hw; + + if (desc->ndesc) { + unsigned int i = desc->ndesc; + + do { + hw = &desc->hw[--i]; + dma_pool_free(idma64c->pool, hw->lli, hw->llp); + } while (i); + } + + kfree(desc->hw); + kfree(desc); +} + +static void idma64_vdesc_free(struct virt_dma_desc *vdesc) +{ + struct idma64_chan *idma64c = to_idma64_chan(vdesc->tx.chan); + + idma64_desc_free(idma64c, to_idma64_desc(vdesc)); +} + +static u64 idma64_hw_desc_fill(struct idma64_hw_desc *hw, + struct dma_slave_config *config, + enum dma_transfer_direction direction, u64 llp) +{ + struct idma64_lli *lli = hw->lli; + u64 sar, dar; + u32 ctlhi = IDMA64C_CTLH_BLOCK_TS(hw->len); + u32 ctllo = IDMA64C_CTLL_LLP_S_EN | IDMA64C_CTLL_LLP_D_EN; + u32 src_width, dst_width; + + if (direction == DMA_MEM_TO_DEV) { + sar = hw->phys; + dar = config->dst_addr; + ctllo |= IDMA64C_CTLL_DST_FIX | IDMA64C_CTLL_SRC_INC | + IDMA64C_CTLL_FC_M2P; + src_width = min_t(u32, 2, __fls(sar | hw->len)); + dst_width = __fls(config->dst_addr_width); + } else { /* DMA_DEV_TO_MEM */ + sar = config->src_addr; + dar = hw->phys; + ctllo |= IDMA64C_CTLL_DST_INC | IDMA64C_CTLL_SRC_FIX | + IDMA64C_CTLL_FC_P2M; + src_width = __fls(config->src_addr_width); + dst_width = min_t(u32, 2, __fls(dar | hw->len)); + } + + lli->sar = sar; + lli->dar = dar; + + lli->ctlhi = ctlhi; + lli->ctllo = ctllo | + IDMA64C_CTLL_SRC_MSIZE(config->src_maxburst) | + IDMA64C_CTLL_DST_MSIZE(config->dst_maxburst) | + IDMA64C_CTLL_DST_WIDTH(dst_width) | + IDMA64C_CTLL_SRC_WIDTH(src_width); + + lli->llp = llp; + return hw->llp; +} + +static void idma64_desc_fill(struct idma64_chan *idma64c, + struct idma64_desc *desc) +{ + struct dma_slave_config *config = &idma64c->config; + struct idma64_hw_desc *hw = &desc->hw[desc->ndesc - 1]; + struct idma64_lli *lli = hw->lli; + u64 llp = 0; + unsigned int i = desc->ndesc; + + /* Fill the hardware descriptors and link them to a list */ + do { + hw = &desc->hw[--i]; + llp = idma64_hw_desc_fill(hw, config, desc->direction, llp); + desc->length += hw->len; + } while (i); + + /* Trigger interrupt after last block */ + lli->ctllo |= IDMA64C_CTLL_INT_EN; +} + +static struct dma_async_tx_descriptor *idma64_prep_slave_sg( + struct dma_chan *chan, struct scatterlist *sgl, + unsigned int sg_len, enum dma_transfer_direction direction, + unsigned long flags, void *context) +{ + struct idma64_chan *idma64c = to_idma64_chan(chan); + struct idma64_desc *desc; + struct scatterlist *sg; + unsigned int i; + + desc = idma64_alloc_desc(sg_len); + if (!desc) + return NULL; + + for_each_sg(sgl, sg, sg_len, i) { + struct idma64_hw_desc *hw = &desc->hw[i]; + + /* Allocate DMA capable memory for hardware descriptor */ + hw->lli = dma_pool_alloc(idma64c->pool, GFP_NOWAIT, &hw->llp); + if (!hw->lli) { + desc->ndesc = i; + idma64_desc_free(idma64c, desc); + return NULL; + } + + hw->phys = sg_dma_address(sg); + hw->len = sg_dma_len(sg); + } + + desc->ndesc = sg_len; + desc->direction = direction; + desc->status = DMA_IN_PROGRESS; + + idma64_desc_fill(idma64c, desc); + return vchan_tx_prep(&idma64c->vchan, &desc->vdesc, flags); +} + +static void idma64_issue_pending(struct dma_chan *chan) +{ + struct idma64_chan *idma64c = to_idma64_chan(chan); + unsigned long flags; + + spin_lock_irqsave(&idma64c->vchan.lock, flags); + if (vchan_issue_pending(&idma64c->vchan) && !idma64c->desc) + idma64_start_transfer(idma64c); + spin_unlock_irqrestore(&idma64c->vchan.lock, flags); +} + +static size_t idma64_active_desc_size(struct idma64_chan *idma64c) +{ + struct idma64_desc *desc = idma64c->desc; + struct idma64_hw_desc *hw; + size_t bytes = desc->length; + u64 llp; + u32 ctlhi; + unsigned int i = 0; + + llp = channel_readq(idma64c, LLP); + do { + hw = &desc->hw[i]; + } while ((hw->llp != llp) && (++i < desc->ndesc)); + + if (!i) + return bytes; + + do { + bytes -= desc->hw[--i].len; + } while (i); + + ctlhi = channel_readl(idma64c, CTL_HI); + return bytes - IDMA64C_CTLH_BLOCK_TS(ctlhi); +} + +static enum dma_status idma64_tx_status(struct dma_chan *chan, + dma_cookie_t cookie, struct dma_tx_state *state) +{ + struct idma64_chan *idma64c = to_idma64_chan(chan); + struct virt_dma_desc *vdesc; + enum dma_status status; + size_t bytes; + unsigned long flags; + + status = dma_cookie_status(chan, cookie, state); + if (status == DMA_COMPLETE) + return status; + + spin_lock_irqsave(&idma64c->vchan.lock, flags); + vdesc = vchan_find_desc(&idma64c->vchan, cookie); + if (idma64c->desc && cookie == idma64c->desc->vdesc.tx.cookie) { + bytes = idma64_active_desc_size(idma64c); + dma_set_residue(state, bytes); + status = idma64c->desc->status; + } else if (vdesc) { + bytes = to_idma64_desc(vdesc)->length; + dma_set_residue(state, bytes); + } + spin_unlock_irqrestore(&idma64c->vchan.lock, flags); + + return status; +} + +static void convert_burst(u32 *maxburst) +{ + if (*maxburst) + *maxburst = __fls(*maxburst); + else + *maxburst = 0; +} + +static int idma64_slave_config(struct dma_chan *chan, + struct dma_slave_config *config) +{ + struct idma64_chan *idma64c = to_idma64_chan(chan); + + /* Check if chan will be configured for slave transfers */ + if (!is_slave_direction(config->direction)) + return -EINVAL; + + memcpy(&idma64c->config, config, sizeof(idma64c->config)); + + convert_burst(&idma64c->config.src_maxburst); + convert_burst(&idma64c->config.dst_maxburst); + + return 0; +} + +static void idma64_chan_deactivate(struct idma64_chan *idma64c) +{ + unsigned short count = 100; + u32 cfglo; + + cfglo = channel_readl(idma64c, CFG_LO); + channel_writel(idma64c, CFG_LO, cfglo | IDMA64C_CFGL_CH_SUSP); + do { + udelay(1); + cfglo = channel_readl(idma64c, CFG_LO); + } while (!(cfglo & IDMA64C_CFGL_FIFO_EMPTY) && --count); +} + +static void idma64_chan_activate(struct idma64_chan *idma64c) +{ + u32 cfglo; + + cfglo = channel_readl(idma64c, CFG_LO); + channel_writel(idma64c, CFG_LO, cfglo & ~IDMA64C_CFGL_CH_SUSP); +} + +static int idma64_pause(struct dma_chan *chan) +{ + struct idma64_chan *idma64c = to_idma64_chan(chan); + unsigned long flags; + + spin_lock_irqsave(&idma64c->vchan.lock, flags); + if (idma64c->desc && idma64c->desc->status == DMA_IN_PROGRESS) { + idma64_chan_deactivate(idma64c); + idma64c->desc->status = DMA_PAUSED; + } + spin_unlock_irqrestore(&idma64c->vchan.lock, flags); + + return 0; +} + +static int idma64_resume(struct dma_chan *chan) +{ + struct idma64_chan *idma64c = to_idma64_chan(chan); + unsigned long flags; + + spin_lock_irqsave(&idma64c->vchan.lock, flags); + if (idma64c->desc && idma64c->desc->status == DMA_PAUSED) { + idma64c->desc->status = DMA_IN_PROGRESS; + idma64_chan_activate(idma64c); + } + spin_unlock_irqrestore(&idma64c->vchan.lock, flags); + + return 0; +} + +static int idma64_terminate_all(struct dma_chan *chan) +{ + struct idma64_chan *idma64c = to_idma64_chan(chan); + unsigned long flags; + LIST_HEAD(head); + + spin_lock_irqsave(&idma64c->vchan.lock, flags); + idma64_chan_deactivate(idma64c); + idma64_stop_transfer(idma64c); + if (idma64c->desc) { + idma64_vdesc_free(&idma64c->desc->vdesc); + idma64c->desc = NULL; + } + vchan_get_all_descriptors(&idma64c->vchan, &head); + spin_unlock_irqrestore(&idma64c->vchan.lock, flags); + + vchan_dma_desc_free_list(&idma64c->vchan, &head); + return 0; +} + +static int idma64_alloc_chan_resources(struct dma_chan *chan) +{ + struct idma64_chan *idma64c = to_idma64_chan(chan); + + /* Create a pool of consistent memory blocks for hardware descriptors */ + idma64c->pool = dma_pool_create(dev_name(chan2dev(chan)), + chan->device->dev, + sizeof(struct idma64_lli), 8, 0); + if (!idma64c->pool) { + dev_err(chan2dev(chan), "No memory for descriptors\n"); + return -ENOMEM; + } + + return 0; +} + +static void idma64_free_chan_resources(struct dma_chan *chan) +{ + struct idma64_chan *idma64c = to_idma64_chan(chan); + + vchan_free_chan_resources(to_virt_chan(chan)); + dma_pool_destroy(idma64c->pool); + idma64c->pool = NULL; +} + +/* ---------------------------------------------------------------------- */ + +#define IDMA64_BUSWIDTHS \ + BIT(DMA_SLAVE_BUSWIDTH_1_BYTE) | \ + BIT(DMA_SLAVE_BUSWIDTH_2_BYTES) | \ + BIT(DMA_SLAVE_BUSWIDTH_4_BYTES) + +static int idma64_probe(struct idma64_chip *chip) +{ + struct idma64 *idma64; + unsigned short nr_chan = IDMA64_NR_CHAN; + unsigned short i; + int ret; + + idma64 = devm_kzalloc(chip->dev, sizeof(*idma64), GFP_KERNEL); + if (!idma64) + return -ENOMEM; + + idma64->regs = chip->regs; + chip->idma64 = idma64; + + idma64->chan = devm_kcalloc(chip->dev, nr_chan, sizeof(*idma64->chan), + GFP_KERNEL); + if (!idma64->chan) + return -ENOMEM; + + idma64->all_chan_mask = (1 << nr_chan) - 1; + + /* Turn off iDMA controller */ + idma64_off(idma64); + + ret = devm_request_irq(chip->dev, chip->irq, idma64_irq, IRQF_SHARED, + dev_name(chip->dev), idma64); + if (ret) + return ret; + + INIT_LIST_HEAD(&idma64->dma.channels); + for (i = 0; i < nr_chan; i++) { + struct idma64_chan *idma64c = &idma64->chan[i]; + + idma64c->vchan.desc_free = idma64_vdesc_free; + vchan_init(&idma64c->vchan, &idma64->dma); + + idma64c->regs = idma64->regs + i * IDMA64_CH_LENGTH; + idma64c->mask = BIT(i); + } + + dma_cap_set(DMA_SLAVE, idma64->dma.cap_mask); + dma_cap_set(DMA_PRIVATE, idma64->dma.cap_mask); + + idma64->dma.device_alloc_chan_resources = idma64_alloc_chan_resources; + idma64->dma.device_free_chan_resources = idma64_free_chan_resources; + + idma64->dma.device_prep_slave_sg = idma64_prep_slave_sg; + + idma64->dma.device_issue_pending = idma64_issue_pending; + idma64->dma.device_tx_status = idma64_tx_status; + + idma64->dma.device_config = idma64_slave_config; + idma64->dma.device_pause = idma64_pause; + idma64->dma.device_resume = idma64_resume; + idma64->dma.device_terminate_all = idma64_terminate_all; + + idma64->dma.src_addr_widths = IDMA64_BUSWIDTHS; + idma64->dma.dst_addr_widths = IDMA64_BUSWIDTHS; + idma64->dma.directions = BIT(DMA_DEV_TO_MEM) | BIT(DMA_MEM_TO_DEV); + idma64->dma.residue_granularity = DMA_RESIDUE_GRANULARITY_BURST; + + idma64->dma.dev = chip->dev; + + ret = dma_async_device_register(&idma64->dma); + if (ret) + return ret; + + dev_info(chip->dev, "Found Intel integrated DMA 64-bit\n"); + return 0; +} + +static int idma64_remove(struct idma64_chip *chip) +{ + struct idma64 *idma64 = chip->idma64; + unsigned short i; + + dma_async_device_unregister(&idma64->dma); + + /* + * Explicitly call devm_request_irq() to avoid the side effects with + * the scheduled tasklets. + */ + devm_free_irq(chip->dev, chip->irq, idma64); + + for (i = 0; i < idma64->dma.chancnt; i++) { + struct idma64_chan *idma64c = &idma64->chan[i]; + + tasklet_kill(&idma64c->vchan.task); + } + + return 0; +} + +/* ---------------------------------------------------------------------- */ + +static int idma64_platform_probe(struct platform_device *pdev) +{ + struct idma64_chip *chip; + struct device *dev = &pdev->dev; + struct resource *mem; + int ret; + + chip = devm_kzalloc(dev, sizeof(*chip), GFP_KERNEL); + if (!chip) + return -ENOMEM; + + chip->irq = platform_get_irq(pdev, 0); + if (chip->irq < 0) + return chip->irq; + + mem = platform_get_resource(pdev, IORESOURCE_MEM, 0); + chip->regs = devm_ioremap_resource(dev, mem); + if (IS_ERR(chip->regs)) + return PTR_ERR(chip->regs); + + ret = dma_coerce_mask_and_coherent(&pdev->dev, DMA_BIT_MASK(64)); + if (ret) + return ret; + + chip->dev = dev; + + ret = idma64_probe(chip); + if (ret) + return ret; + + platform_set_drvdata(pdev, chip); + return 0; +} + +static int idma64_platform_remove(struct platform_device *pdev) +{ + struct idma64_chip *chip = platform_get_drvdata(pdev); + + return idma64_remove(chip); +} + +#ifdef CONFIG_PM_SLEEP + +static int idma64_pm_suspend(struct device *dev) +{ + struct platform_device *pdev = to_platform_device(dev); + struct idma64_chip *chip = platform_get_drvdata(pdev); + + idma64_off(chip->idma64); + return 0; +} + +static int idma64_pm_resume(struct device *dev) +{ + struct platform_device *pdev = to_platform_device(dev); + struct idma64_chip *chip = platform_get_drvdata(pdev); + + idma64_on(chip->idma64); + return 0; +} + +#endif /* CONFIG_PM_SLEEP */ + +static const struct dev_pm_ops idma64_dev_pm_ops = { + SET_SYSTEM_SLEEP_PM_OPS(idma64_pm_suspend, idma64_pm_resume) +}; + +static struct platform_driver idma64_platform_driver = { + .probe = idma64_platform_probe, + .remove = idma64_platform_remove, + .driver = { + .name = DRV_NAME, + .pm = &idma64_dev_pm_ops, + }, +}; + +module_platform_driver(idma64_platform_driver); + +MODULE_LICENSE("GPL v2"); +MODULE_DESCRIPTION("iDMA64 core driver"); +MODULE_AUTHOR("Andy Shevchenko "); +MODULE_ALIAS("platform:" DRV_NAME); --- linux-raspi2-4.2.0.orig/drivers/dma/idma64.h +++ linux-raspi2-4.2.0/drivers/dma/idma64.h @@ -0,0 +1,233 @@ +/* + * Driver for the Intel integrated DMA 64-bit + * + * Copyright (C) 2015 Intel Corporation + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + */ + +#ifndef __DMA_IDMA64_H__ +#define __DMA_IDMA64_H__ + +#include +#include +#include +#include + +#include "virt-dma.h" + +/* Channel registers */ + +#define IDMA64_CH_SAR 0x00 /* Source Address Register */ +#define IDMA64_CH_DAR 0x08 /* Destination Address Register */ +#define IDMA64_CH_LLP 0x10 /* Linked List Pointer */ +#define IDMA64_CH_CTL_LO 0x18 /* Control Register Low */ +#define IDMA64_CH_CTL_HI 0x1c /* Control Register High */ +#define IDMA64_CH_SSTAT 0x20 +#define IDMA64_CH_DSTAT 0x28 +#define IDMA64_CH_SSTATAR 0x30 +#define IDMA64_CH_DSTATAR 0x38 +#define IDMA64_CH_CFG_LO 0x40 /* Configuration Register Low */ +#define IDMA64_CH_CFG_HI 0x44 /* Configuration Register High */ +#define IDMA64_CH_SGR 0x48 +#define IDMA64_CH_DSR 0x50 + +#define IDMA64_CH_LENGTH 0x58 + +/* Bitfields in CTL_LO */ +#define IDMA64C_CTLL_INT_EN (1 << 0) /* irqs enabled? */ +#define IDMA64C_CTLL_DST_WIDTH(x) ((x) << 1) /* bytes per element */ +#define IDMA64C_CTLL_SRC_WIDTH(x) ((x) << 4) +#define IDMA64C_CTLL_DST_INC (0 << 8) /* DAR update/not */ +#define IDMA64C_CTLL_DST_FIX (1 << 8) +#define IDMA64C_CTLL_SRC_INC (0 << 10) /* SAR update/not */ +#define IDMA64C_CTLL_SRC_FIX (1 << 10) +#define IDMA64C_CTLL_DST_MSIZE(x) ((x) << 11) /* burst, #elements */ +#define IDMA64C_CTLL_SRC_MSIZE(x) ((x) << 14) +#define IDMA64C_CTLL_FC_M2P (1 << 20) /* mem-to-periph */ +#define IDMA64C_CTLL_FC_P2M (2 << 20) /* periph-to-mem */ +#define IDMA64C_CTLL_LLP_D_EN (1 << 27) /* dest block chain */ +#define IDMA64C_CTLL_LLP_S_EN (1 << 28) /* src block chain */ + +/* Bitfields in CTL_HI */ +#define IDMA64C_CTLH_BLOCK_TS(x) ((x) & ((1 << 17) - 1)) +#define IDMA64C_CTLH_DONE (1 << 17) + +/* Bitfields in CFG_LO */ +#define IDMA64C_CFGL_DST_BURST_ALIGN (1 << 0) /* dst burst align */ +#define IDMA64C_CFGL_SRC_BURST_ALIGN (1 << 1) /* src burst align */ +#define IDMA64C_CFGL_CH_SUSP (1 << 8) +#define IDMA64C_CFGL_FIFO_EMPTY (1 << 9) +#define IDMA64C_CFGL_CH_DRAIN (1 << 10) /* drain FIFO */ +#define IDMA64C_CFGL_DST_OPT_BL (1 << 20) /* optimize dst burst length */ +#define IDMA64C_CFGL_SRC_OPT_BL (1 << 21) /* optimize src burst length */ + +/* Bitfields in CFG_HI */ +#define IDMA64C_CFGH_SRC_PER(x) ((x) << 0) /* src peripheral */ +#define IDMA64C_CFGH_DST_PER(x) ((x) << 4) /* dst peripheral */ +#define IDMA64C_CFGH_RD_ISSUE_THD(x) ((x) << 8) +#define IDMA64C_CFGH_RW_ISSUE_THD(x) ((x) << 18) + +/* Interrupt registers */ + +#define IDMA64_INT_XFER 0x00 +#define IDMA64_INT_BLOCK 0x08 +#define IDMA64_INT_SRC_TRAN 0x10 +#define IDMA64_INT_DST_TRAN 0x18 +#define IDMA64_INT_ERROR 0x20 + +#define IDMA64_RAW(x) (0x2c0 + IDMA64_INT_##x) /* r */ +#define IDMA64_STATUS(x) (0x2e8 + IDMA64_INT_##x) /* r (raw & mask) */ +#define IDMA64_MASK(x) (0x310 + IDMA64_INT_##x) /* rw (set = irq enabled) */ +#define IDMA64_CLEAR(x) (0x338 + IDMA64_INT_##x) /* w (ack, affects "raw") */ + +/* Common registers */ + +#define IDMA64_STATUS_INT 0x360 /* r */ +#define IDMA64_CFG 0x398 +#define IDMA64_CH_EN 0x3a0 + +/* Bitfields in CFG */ +#define IDMA64_CFG_DMA_EN (1 << 0) + +/* Hardware descriptor for Linked LIst transfers */ +struct idma64_lli { + u64 sar; + u64 dar; + u64 llp; + u32 ctllo; + u32 ctlhi; + u32 sstat; + u32 dstat; +}; + +struct idma64_hw_desc { + struct idma64_lli *lli; + dma_addr_t llp; + dma_addr_t phys; + unsigned int len; +}; + +struct idma64_desc { + struct virt_dma_desc vdesc; + enum dma_transfer_direction direction; + struct idma64_hw_desc *hw; + unsigned int ndesc; + size_t length; + enum dma_status status; +}; + +static inline struct idma64_desc *to_idma64_desc(struct virt_dma_desc *vdesc) +{ + return container_of(vdesc, struct idma64_desc, vdesc); +} + +struct idma64_chan { + struct virt_dma_chan vchan; + + void __iomem *regs; + + /* hardware configuration */ + enum dma_transfer_direction direction; + unsigned int mask; + struct dma_slave_config config; + + void *pool; + struct idma64_desc *desc; +}; + +static inline struct idma64_chan *to_idma64_chan(struct dma_chan *chan) +{ + return container_of(chan, struct idma64_chan, vchan.chan); +} + +#define channel_set_bit(idma64, reg, mask) \ + dma_writel(idma64, reg, ((mask) << 8) | (mask)) +#define channel_clear_bit(idma64, reg, mask) \ + dma_writel(idma64, reg, ((mask) << 8) | 0) + +static inline u32 idma64c_readl(struct idma64_chan *idma64c, int offset) +{ + return readl(idma64c->regs + offset); +} + +static inline void idma64c_writel(struct idma64_chan *idma64c, int offset, + u32 value) +{ + writel(value, idma64c->regs + offset); +} + +#define channel_readl(idma64c, reg) \ + idma64c_readl(idma64c, IDMA64_CH_##reg) +#define channel_writel(idma64c, reg, value) \ + idma64c_writel(idma64c, IDMA64_CH_##reg, (value)) + +static inline u64 idma64c_readq(struct idma64_chan *idma64c, int offset) +{ + u64 l, h; + + l = idma64c_readl(idma64c, offset); + h = idma64c_readl(idma64c, offset + 4); + + return l | (h << 32); +} + +static inline void idma64c_writeq(struct idma64_chan *idma64c, int offset, + u64 value) +{ + idma64c_writel(idma64c, offset, value); + idma64c_writel(idma64c, offset + 4, value >> 32); +} + +#define channel_readq(idma64c, reg) \ + idma64c_readq(idma64c, IDMA64_CH_##reg) +#define channel_writeq(idma64c, reg, value) \ + idma64c_writeq(idma64c, IDMA64_CH_##reg, (value)) + +struct idma64 { + struct dma_device dma; + + void __iomem *regs; + + /* channels */ + unsigned short all_chan_mask; + struct idma64_chan *chan; +}; + +static inline struct idma64 *to_idma64(struct dma_device *ddev) +{ + return container_of(ddev, struct idma64, dma); +} + +static inline u32 idma64_readl(struct idma64 *idma64, int offset) +{ + return readl(idma64->regs + offset); +} + +static inline void idma64_writel(struct idma64 *idma64, int offset, u32 value) +{ + writel(value, idma64->regs + offset); +} + +#define dma_readl(idma64, reg) \ + idma64_readl(idma64, IDMA64_##reg) +#define dma_writel(idma64, reg, value) \ + idma64_writel(idma64, IDMA64_##reg, (value)) + +/** + * struct idma64_chip - representation of DesignWare DMA controller hardware + * @dev: struct device of the DMA controller + * @irq: irq line + * @regs: memory mapped I/O space + * @idma64: struct idma64 that is filed by idma64_probe() + */ +struct idma64_chip { + struct device *dev; + int irq; + void __iomem *regs; + struct idma64 *idma64; +}; + +#endif /* __DMA_IDMA64_H__ */ --- linux-raspi2-4.2.0.orig/drivers/dma/pxa_dma.c +++ linux-raspi2-4.2.0/drivers/dma/pxa_dma.c @@ -888,6 +888,7 @@ struct dma_async_tx_descriptor *tx; struct pxad_chan *chan = container_of(vc, struct pxad_chan, vc); + INIT_LIST_HEAD(&vd->node); tx = vchan_tx_prep(vc, vd, tx_flags); tx->tx_submit = pxad_tx_submit; dev_dbg(&chan->vc.chan.dev->device, --- linux-raspi2-4.2.0.orig/drivers/edac/sb_edac.c +++ linux-raspi2-4.2.0/drivers/edac/sb_edac.c @@ -1648,6 +1648,7 @@ { struct sbridge_pvt *pvt = mci->pvt_info; struct pci_dev *pdev; + u8 saw_chan_mask = 0; int i; for (i = 0; i < sbridge_dev->n_devs; i++) { @@ -1681,6 +1682,7 @@ { int id = pdev->device - PCI_DEVICE_ID_INTEL_SBRIDGE_IMC_TAD0; pvt->pci_tad[id] = pdev; + saw_chan_mask |= 1 << id; } break; case PCI_DEVICE_ID_INTEL_SBRIDGE_IMC_DDRIO: @@ -1701,10 +1703,8 @@ !pvt-> pci_tad || !pvt->pci_ras || !pvt->pci_ta) goto enodev; - for (i = 0; i < NUM_CHANNELS; i++) { - if (!pvt->pci_tad[i]) - goto enodev; - } + if (saw_chan_mask != 0x0f) + goto enodev; return 0; enodev: --- linux-raspi2-4.2.0.orig/drivers/extcon/extcon.c +++ linux-raspi2-4.2.0/drivers/extcon/extcon.c @@ -126,7 +126,7 @@ static int find_cable_id_by_name(struct extcon_dev *edev, const char *name) { - unsigned int id = -EINVAL; + int id = -EINVAL; int i = 0; /* Find the id of extcon cable */ @@ -143,7 +143,7 @@ static int find_cable_index_by_name(struct extcon_dev *edev, const char *name) { - unsigned int id; + int id; if (edev->max_supported == 0) return -EINVAL; @@ -159,7 +159,7 @@ static bool is_extcon_changed(u32 prev, u32 new, int idx, bool *attached) { if (((prev >> idx) & 0x1) != ((new >> idx) & 0x1)) { - *attached = new ? true : false; + *attached = ((new >> idx) & 0x1) ? true : false; return true; } @@ -378,7 +378,7 @@ */ int extcon_get_cable_state(struct extcon_dev *edev, const char *cable_name) { - unsigned int id; + int id; id = find_cable_id_by_name(edev, cable_name); if (id < 0) @@ -426,7 +426,7 @@ int extcon_set_cable_state(struct extcon_dev *edev, const char *cable_name, bool cable_state) { - unsigned int id; + int id; id = find_cable_id_by_name(edev, cable_name); if (id < 0) --- linux-raspi2-4.2.0.orig/drivers/firewire/ohci.c +++ linux-raspi2-4.2.0/drivers/firewire/ohci.c @@ -3675,6 +3675,11 @@ reg_write(ohci, OHCI1394_IsoXmitIntMaskSet, ~0); ohci->it_context_support = reg_read(ohci, OHCI1394_IsoXmitIntMaskSet); + /* JMicron JMB38x often shows 0 at first read, just ignore it */ + if (!ohci->it_context_support) { + ohci_notice(ohci, "overriding IsoXmitIntMask\n"); + ohci->it_context_support = 0xf; + } reg_write(ohci, OHCI1394_IsoXmitIntMaskClear, ~0); ohci->it_context_mask = ohci->it_context_support; ohci->n_it = hweight32(ohci->it_context_mask); --- linux-raspi2-4.2.0.orig/drivers/firmware/Kconfig +++ linux-raspi2-4.2.0/drivers/firmware/Kconfig @@ -136,6 +136,13 @@ bool depends on ARM || ARM64 +config RASPBERRYPI_FIRMWARE + tristate "Raspberry Pi Firmware Driver" + depends on BCM2835_MBOX + help + This option enables support for communicating with the firmware on the + Raspberry Pi. + source "drivers/firmware/broadcom/Kconfig" source "drivers/firmware/google/Kconfig" source "drivers/firmware/efi/Kconfig" --- linux-raspi2-4.2.0.orig/drivers/firmware/Makefile +++ linux-raspi2-4.2.0/drivers/firmware/Makefile @@ -14,6 +14,7 @@ obj-$(CONFIG_QCOM_SCM) += qcom_scm.o obj-$(CONFIG_QCOM_SCM) += qcom_scm-32.o CFLAGS_qcom_scm-32.o :=$(call as-instr,.arch_extension sec,-DREQUIRES_SEC=1) +obj-$(CONFIG_RASPBERRYPI_FIRMWARE) += raspberrypi.o obj-y += broadcom/ obj-$(CONFIG_GOOGLE_FIRMWARE) += google/ --- linux-raspi2-4.2.0.orig/drivers/firmware/efi/libstub/arm-stub.c +++ linux-raspi2-4.2.0/drivers/firmware/efi/libstub/arm-stub.c @@ -13,6 +13,7 @@ */ #include +#include #include #include "efistub.h" @@ -305,6 +306,44 @@ */ #define EFI_RT_VIRTUAL_BASE 0x40000000 +static int cmp_mem_desc(const void *l, const void *r) +{ + const efi_memory_desc_t *left = l, *right = r; + + return (left->phys_addr > right->phys_addr) ? 1 : -1; +} + +/* + * Returns whether region @left ends exactly where region @right starts, + * or false if either argument is NULL. + */ +static bool regions_are_adjacent(efi_memory_desc_t *left, + efi_memory_desc_t *right) +{ + u64 left_end; + + if (left == NULL || right == NULL) + return false; + + left_end = left->phys_addr + left->num_pages * EFI_PAGE_SIZE; + + return left_end == right->phys_addr; +} + +/* + * Returns whether region @left and region @right have compatible memory type + * mapping attributes, and are both EFI_MEMORY_RUNTIME regions. + */ +static bool regions_have_compatible_memory_type_attrs(efi_memory_desc_t *left, + efi_memory_desc_t *right) +{ + static const u64 mem_type_mask = EFI_MEMORY_WB | EFI_MEMORY_WT | + EFI_MEMORY_WC | EFI_MEMORY_UC | + EFI_MEMORY_RUNTIME; + + return ((left->attribute ^ right->attribute) & mem_type_mask) == 0; +} + /* * efi_get_virtmap() - create a virtual mapping for the EFI memory map * @@ -317,33 +356,52 @@ int *count) { u64 efi_virt_base = EFI_RT_VIRTUAL_BASE; - efi_memory_desc_t *out = runtime_map; + efi_memory_desc_t *in, *prev = NULL, *out = runtime_map; int l; - for (l = 0; l < map_size; l += desc_size) { - efi_memory_desc_t *in = (void *)memory_map + l; + /* + * To work around potential issues with the Properties Table feature + * introduced in UEFI 2.5, which may split PE/COFF executable images + * in memory into several RuntimeServicesCode and RuntimeServicesData + * regions, we need to preserve the relative offsets between adjacent + * EFI_MEMORY_RUNTIME regions with the same memory type attributes. + * The easiest way to find adjacent regions is to sort the memory map + * before traversing it. + */ + sort(memory_map, map_size / desc_size, desc_size, cmp_mem_desc, NULL); + + for (l = 0; l < map_size; l += desc_size, prev = in) { u64 paddr, size; + in = (void *)memory_map + l; if (!(in->attribute & EFI_MEMORY_RUNTIME)) continue; + paddr = in->phys_addr; + size = in->num_pages * EFI_PAGE_SIZE; + /* * Make the mapping compatible with 64k pages: this allows * a 4k page size kernel to kexec a 64k page size kernel and * vice versa. */ - paddr = round_down(in->phys_addr, SZ_64K); - size = round_up(in->num_pages * EFI_PAGE_SIZE + - in->phys_addr - paddr, SZ_64K); + if (!regions_are_adjacent(prev, in) || + !regions_have_compatible_memory_type_attrs(prev, in)) { - /* - * Avoid wasting memory on PTEs by choosing a virtual base that - * is compatible with section mappings if this region has the - * appropriate size and physical alignment. (Sections are 2 MB - * on 4k granule kernels) - */ - if (IS_ALIGNED(in->phys_addr, SZ_2M) && size >= SZ_2M) - efi_virt_base = round_up(efi_virt_base, SZ_2M); + paddr = round_down(in->phys_addr, SZ_64K); + size += in->phys_addr - paddr; + + /* + * Avoid wasting memory on PTEs by choosing a virtual + * base that is compatible with section mappings if this + * region has the appropriate size and physical + * alignment. (Sections are 2 MB on 4k granule kernels) + */ + if (IS_ALIGNED(in->phys_addr, SZ_2M) && size >= SZ_2M) + efi_virt_base = round_up(efi_virt_base, SZ_2M); + else + efi_virt_base = round_up(efi_virt_base, SZ_64K); + } in->virt_addr = efi_virt_base + in->phys_addr - paddr; efi_virt_base += size; --- linux-raspi2-4.2.0.orig/drivers/firmware/raspberrypi.c +++ linux-raspi2-4.2.0/drivers/firmware/raspberrypi.c @@ -0,0 +1,297 @@ +/* + * Defines interfaces for interacting wtih the Raspberry Pi firmware's + * property channel. + * + * Copyright © 2015 Broadcom + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + */ + +#include +#include +#include +#include +#include +#include + +#define MBOX_MSG(chan, data28) (((data28) & ~0xf) | ((chan) & 0xf)) +#define MBOX_CHAN(msg) ((msg) & 0xf) +#define MBOX_DATA28(msg) ((msg) & ~0xf) +#define MBOX_CHAN_PROPERTY 8 + +struct rpi_firmware { + struct mbox_client cl; + struct mbox_chan *chan; /* The property channel. */ + struct completion c; + u32 enabled; +}; + +static struct platform_device *g_pdev; + +static DEFINE_MUTEX(transaction_lock); + +static void response_callback(struct mbox_client *cl, void *msg) +{ + struct rpi_firmware *fw = container_of(cl, struct rpi_firmware, cl); + complete(&fw->c); +} + +/* + * Sends a request to the firmware through the BCM2835 mailbox driver, + * and synchronously waits for the reply. + */ +static int +rpi_firmware_transaction(struct rpi_firmware *fw, u32 chan, u32 data) +{ + u32 message = MBOX_MSG(chan, data); + int ret; + + WARN_ON(data & 0xf); + + mutex_lock(&transaction_lock); + reinit_completion(&fw->c); + ret = mbox_send_message(fw->chan, &message); + if (ret >= 0) { + wait_for_completion(&fw->c); + ret = 0; + } else { + dev_err(fw->cl.dev, "mbox_send_message returned %d\n", ret); + } + mutex_unlock(&transaction_lock); + + return ret; +} + +/** + * rpi_firmware_property_list - Submit firmware property list + * @fw: Pointer to firmware structure from rpi_firmware_get(). + * @data: Buffer holding tags. + * @tag_size: Size of tags buffer. + * + * Submits a set of concatenated tags to the VPU firmware through the + * mailbox property interface. + * + * The buffer header and the ending tag are added by this function and + * don't need to be supplied, just the actual tags for your operation. + * See struct rpi_firmware_property_tag_header for the per-tag + * structure. + */ +int rpi_firmware_property_list(struct rpi_firmware *fw, + void *data, size_t tag_size) +{ + size_t size = tag_size + 12; + u32 *buf; + dma_addr_t bus_addr; + int ret; + + /* Packets are processed a dword at a time. */ + if (size & 3) + return -EINVAL; + + buf = dma_alloc_coherent(fw->cl.dev, PAGE_ALIGN(size), &bus_addr, + GFP_ATOMIC); + if (!buf) + return -ENOMEM; + + /* The firmware will error out without parsing in this case. */ + WARN_ON(size >= 1024 * 1024); + + buf[0] = size; + buf[1] = RPI_FIRMWARE_STATUS_REQUEST; + memcpy(&buf[2], data, tag_size); + buf[size / 4 - 1] = RPI_FIRMWARE_PROPERTY_END; + wmb(); + + ret = rpi_firmware_transaction(fw, MBOX_CHAN_PROPERTY, bus_addr); + + rmb(); + memcpy(data, &buf[2], tag_size); + if (ret == 0 && buf[1] != RPI_FIRMWARE_STATUS_SUCCESS) { + /* + * The tag name here might not be the one causing the + * error, if there were multiple tags in the request. + * But single-tag is the most common, so go with it. + */ + dev_err(fw->cl.dev, "Request 0x%08x returned status 0x%08x\n", + buf[2], buf[1]); + ret = -EINVAL; + } + + dma_free_coherent(fw->cl.dev, PAGE_ALIGN(size), buf, bus_addr); + + return ret; +} +EXPORT_SYMBOL_GPL(rpi_firmware_property_list); + +/** + * rpi_firmware_property - Submit single firmware property + * @fw: Pointer to firmware structure from rpi_firmware_get(). + * @tag: One of enum_mbox_property_tag. + * @tag_data: Tag data buffer. + * @buf_size: Buffer size. + * + * Submits a single tag to the VPU firmware through the mailbox + * property interface. + * + * This is a convenience wrapper around + * rpi_firmware_property_list() to avoid some of the + * boilerplate in property calls. + */ +int rpi_firmware_property(struct rpi_firmware *fw, + u32 tag, void *tag_data, size_t buf_size) +{ + /* Single tags are very small (generally 8 bytes), so the + * stack should be safe. + */ + u8 data[buf_size + sizeof(struct rpi_firmware_property_tag_header)]; + struct rpi_firmware_property_tag_header *header = + (struct rpi_firmware_property_tag_header *)data; + int ret; + + header->tag = tag; + header->buf_size = buf_size; + header->req_resp_size = 0; + memcpy(data + sizeof(struct rpi_firmware_property_tag_header), + tag_data, buf_size); + + ret = rpi_firmware_property_list(fw, &data, sizeof(data)); + memcpy(tag_data, + data + sizeof(struct rpi_firmware_property_tag_header), + buf_size); + + return ret; +} +EXPORT_SYMBOL_GPL(rpi_firmware_property); + +static void +rpi_firmware_print_firmware_revision(struct rpi_firmware *fw) +{ + u32 packet; + int ret = rpi_firmware_property(fw, + RPI_FIRMWARE_GET_FIRMWARE_REVISION, + &packet, sizeof(packet)); + + if (ret == 0) { + struct tm tm; + + time_to_tm(packet, 0, &tm); + + dev_info(fw->cl.dev, + "Attached to firmware from %04ld-%02d-%02d %02d:%02d\n", + tm.tm_year + 1900, tm.tm_mon + 1, tm.tm_mday, + tm.tm_hour, tm.tm_min); + } +} + +static int raspberrypi_firmware_set_power(struct rpi_firmware *fw, + u32 domain, bool on) +{ + struct { + u32 domain; + u32 on; + } packet; + int ret; + + packet.domain = domain; + packet.on = on; + ret = rpi_firmware_property(fw, RPI_FIRMWARE_SET_POWER_STATE, + &packet, sizeof(packet)); + if (!ret && packet.on != on) + ret = -EINVAL; + + return ret; +} + +static int rpi_firmware_probe(struct platform_device *pdev) +{ + struct device *dev = &pdev->dev; + struct rpi_firmware *fw; + + fw = devm_kzalloc(dev, sizeof(*fw), GFP_KERNEL); + if (!fw) + return -ENOMEM; + + fw->cl.dev = dev; + fw->cl.rx_callback = response_callback; + fw->cl.tx_block = true; + + fw->chan = mbox_request_channel(&fw->cl, 0); + if (IS_ERR(fw->chan)) { + int ret = PTR_ERR(fw->chan); + if (ret != -EPROBE_DEFER) + dev_err(dev, "Failed to get mbox channel: %d\n", ret); + return ret; + } + + init_completion(&fw->c); + + platform_set_drvdata(pdev, fw); + g_pdev = pdev; + + rpi_firmware_print_firmware_revision(fw); + + if (raspberrypi_firmware_set_power(fw, 3, true)) + dev_err(dev, "failed to turn on USB power\n"); + + return 0; +} + +static int rpi_firmware_remove(struct platform_device *pdev) +{ + struct rpi_firmware *fw = platform_get_drvdata(pdev); + + mbox_free_channel(fw->chan); + g_pdev = NULL; + + return 0; +} + +/** + * rpi_firmware_get - Get pointer to rpi_firmware structure. + * @firmware_node: Pointer to the firmware Device Tree node. + * + * Returns NULL is the firmware device is not ready. + */ +struct rpi_firmware *rpi_firmware_get(struct device_node *firmware_node) +{ + struct platform_device *pdev = g_pdev; + + if (!pdev) + return NULL; + + return platform_get_drvdata(pdev); +} +EXPORT_SYMBOL_GPL(rpi_firmware_get); + +static const struct of_device_id rpi_firmware_of_match[] = { + { .compatible = "raspberrypi,bcm2835-firmware", }, + {}, +}; +MODULE_DEVICE_TABLE(of, rpi_firmware_of_match); + +static struct platform_driver rpi_firmware_driver = { + .driver = { + .name = "raspberrypi-firmware", + .of_match_table = rpi_firmware_of_match, + }, + .probe = rpi_firmware_probe, + .remove = rpi_firmware_remove, +}; + +static int __init rpi_firmware_init(void) +{ + return platform_driver_register(&rpi_firmware_driver); +} +subsys_initcall(rpi_firmware_init); + +static void __init rpi_firmware_exit(void) +{ + platform_driver_unregister(&rpi_firmware_driver); +} +module_exit(rpi_firmware_exit); + +MODULE_AUTHOR("Eric Anholt "); +MODULE_DESCRIPTION("Raspberry Pi firmware driver"); +MODULE_LICENSE("GPL v2"); --- linux-raspi2-4.2.0.orig/drivers/gpu/drm/amd/amdgpu/amdgpu.h +++ linux-raspi2-4.2.0/drivers/gpu/drm/amd/amdgpu/amdgpu.h @@ -1583,6 +1583,7 @@ u8 fan_max_rpm; /* dpm */ bool dpm_enabled; + bool sysfs_initialized; struct amdgpu_dpm dpm; const struct firmware *fw; /* SMC firmware */ uint32_t fw_version; @@ -1679,11 +1680,11 @@ int amdgpu_mn_register(struct amdgpu_bo *bo, unsigned long addr); void amdgpu_mn_unregister(struct amdgpu_bo *bo); #else -static int amdgpu_mn_register(struct amdgpu_bo *bo, unsigned long addr) +static inline int amdgpu_mn_register(struct amdgpu_bo *bo, unsigned long addr) { return -ENODEV; } -static void amdgpu_mn_unregister(struct amdgpu_bo *bo) {} +static inline void amdgpu_mn_unregister(struct amdgpu_bo *bo) {} #endif /* --- linux-raspi2-4.2.0.orig/drivers/gpu/drm/amd/amdgpu/amdgpu_connectors.c +++ linux-raspi2-4.2.0/drivers/gpu/drm/amd/amdgpu/amdgpu_connectors.c @@ -75,6 +75,11 @@ if (!amdgpu_display_hpd_sense(adev, amdgpu_connector->hpd.hpd)) { drm_helper_connector_dpms(connector, DRM_MODE_DPMS_OFF); } else if (amdgpu_atombios_dp_needs_link_train(amdgpu_connector)) { + /* Don't try to start link training before we + * have the dpcd */ + if (!amdgpu_atombios_dp_get_dpcd(amdgpu_connector)) + return; + /* set it to OFF so that drm_helper_connector_dpms() * won't return immediately since the current state * is ON at this point. --- linux-raspi2-4.2.0.orig/drivers/gpu/drm/amd/amdgpu/amdgpu_display.c +++ linux-raspi2-4.2.0/drivers/gpu/drm/amd/amdgpu/amdgpu_display.c @@ -76,8 +76,6 @@ /* We borrow the event spin lock for protecting flip_status */ spin_lock_irqsave(&crtc->dev->event_lock, flags); - /* set the proper interrupt */ - amdgpu_irq_get(adev, &adev->pageflip_irq, work->crtc_id); /* do the flip (mmio) */ adev->mode_info.funcs->page_flip(adev, work->crtc_id, work->base); /* set the flip status */ --- linux-raspi2-4.2.0.orig/drivers/gpu/drm/amd/amdgpu/amdgpu_ih.c +++ linux-raspi2-4.2.0/drivers/gpu/drm/amd/amdgpu/amdgpu_ih.c @@ -97,18 +97,12 @@ /* add 8 bytes for the rptr/wptr shadows and * add them to the end of the ring allocation. */ - adev->irq.ih.ring = kzalloc(adev->irq.ih.ring_size + 8, GFP_KERNEL); + adev->irq.ih.ring = pci_alloc_consistent(adev->pdev, + adev->irq.ih.ring_size + 8, + &adev->irq.ih.rb_dma_addr); if (adev->irq.ih.ring == NULL) return -ENOMEM; - adev->irq.ih.rb_dma_addr = pci_map_single(adev->pdev, - (void *)adev->irq.ih.ring, - adev->irq.ih.ring_size, - PCI_DMA_BIDIRECTIONAL); - if (pci_dma_mapping_error(adev->pdev, adev->irq.ih.rb_dma_addr)) { - dev_err(&adev->pdev->dev, "Failed to DMA MAP the IH RB page\n"); - kfree((void *)adev->irq.ih.ring); - return -ENOMEM; - } + memset((void *)adev->irq.ih.ring, 0, adev->irq.ih.ring_size + 8); adev->irq.ih.wptr_offs = (adev->irq.ih.ring_size / 4) + 0; adev->irq.ih.rptr_offs = (adev->irq.ih.ring_size / 4) + 1; } @@ -148,9 +142,9 @@ /* add 8 bytes for the rptr/wptr shadows and * add them to the end of the ring allocation. */ - pci_unmap_single(adev->pdev, adev->irq.ih.rb_dma_addr, - adev->irq.ih.ring_size + 8, PCI_DMA_BIDIRECTIONAL); - kfree((void *)adev->irq.ih.ring); + pci_free_consistent(adev->pdev, adev->irq.ih.ring_size + 8, + (void *)adev->irq.ih.ring, + adev->irq.ih.rb_dma_addr); adev->irq.ih.ring = NULL; } } else { --- linux-raspi2-4.2.0.orig/drivers/gpu/drm/amd/amdgpu/amdgpu_irq.c +++ linux-raspi2-4.2.0/drivers/gpu/drm/amd/amdgpu/amdgpu_irq.c @@ -140,7 +140,7 @@ */ int amdgpu_irq_postinstall(struct drm_device *dev) { - dev->max_vblank_count = 0x001fffff; + dev->max_vblank_count = 0x00ffffff; return 0; } --- linux-raspi2-4.2.0.orig/drivers/gpu/drm/amd/amdgpu/amdgpu_pm.c +++ linux-raspi2-4.2.0/drivers/gpu/drm/amd/amdgpu/amdgpu_pm.c @@ -693,6 +693,9 @@ { int ret; + if (adev->pm.sysfs_initialized) + return 0; + if (adev->pm.funcs->get_temperature == NULL) return 0; adev->pm.int_hwmon_dev = hwmon_device_register_with_groups(adev->dev, @@ -721,6 +724,8 @@ return ret; } + adev->pm.sysfs_initialized = true; + return 0; } --- linux-raspi2-4.2.0.orig/drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c +++ linux-raspi2-4.2.0/drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c @@ -374,7 +374,8 @@ unsigned height_in_mb = ALIGN(height / 16, 2); unsigned fs_in_mb = width_in_mb * height_in_mb; - unsigned image_size, tmp, min_dpb_size, num_dpb_buffer, min_ctx_size; + unsigned image_size, tmp, min_dpb_size, num_dpb_buffer; + unsigned min_ctx_size = 0; image_size = width * height; image_size += image_size / 2; @@ -542,46 +543,60 @@ return -EINVAL; } - if (msg_type == 1) { + switch (msg_type) { + case 0: + /* it's a create msg, calc image size (width * height) */ + amdgpu_bo_kunmap(bo); + + /* try to alloc a new handle */ + for (i = 0; i < AMDGPU_MAX_UVD_HANDLES; ++i) { + if (atomic_read(&adev->uvd.handles[i]) == handle) { + DRM_ERROR("Handle 0x%x already in use!\n", handle); + return -EINVAL; + } + + if (!atomic_cmpxchg(&adev->uvd.handles[i], 0, handle)) { + adev->uvd.filp[i] = ctx->parser->filp; + return 0; + } + } + + DRM_ERROR("No more free UVD handles!\n"); + return -EINVAL; + + case 1: /* it's a decode msg, calc buffer sizes */ r = amdgpu_uvd_cs_msg_decode(msg, ctx->buf_sizes); amdgpu_bo_kunmap(bo); if (r) return r; - } else if (msg_type == 2) { + /* validate the handle */ + for (i = 0; i < AMDGPU_MAX_UVD_HANDLES; ++i) { + if (atomic_read(&adev->uvd.handles[i]) == handle) { + if (adev->uvd.filp[i] != ctx->parser->filp) { + DRM_ERROR("UVD handle collision detected!\n"); + return -EINVAL; + } + return 0; + } + } + + DRM_ERROR("Invalid UVD handle 0x%x!\n", handle); + return -ENOENT; + + case 2: /* it's a destroy msg, free the handle */ for (i = 0; i < AMDGPU_MAX_UVD_HANDLES; ++i) atomic_cmpxchg(&adev->uvd.handles[i], handle, 0); amdgpu_bo_kunmap(bo); return 0; - } else { - /* it's a create msg */ - amdgpu_bo_kunmap(bo); - if (msg_type != 0) { - DRM_ERROR("Illegal UVD message type (%d)!\n", msg_type); - return -EINVAL; - } - - /* it's a create msg, no special handling needed */ - } - - /* create or decode, validate the handle */ - for (i = 0; i < AMDGPU_MAX_UVD_HANDLES; ++i) { - if (atomic_read(&adev->uvd.handles[i]) == handle) - return 0; - } - - /* handle not found try to alloc a new one */ - for (i = 0; i < AMDGPU_MAX_UVD_HANDLES; ++i) { - if (!atomic_cmpxchg(&adev->uvd.handles[i], 0, handle)) { - adev->uvd.filp[i] = ctx->parser->filp; - return 0; - } + default: + DRM_ERROR("Illegal UVD message type (%d)!\n", msg_type); + return -EINVAL; } - - DRM_ERROR("No more free UVD handles!\n"); + BUG(); return -EINVAL; } --- linux-raspi2-4.2.0.orig/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c +++ linux-raspi2-4.2.0/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c @@ -787,7 +787,7 @@ int r; if (mem) { - addr = mem->start << PAGE_SHIFT; + addr = (u64)mem->start << PAGE_SHIFT; if (mem->mem_type != TTM_PL_TT) addr += adev->vm_manager.vram_base_offset; } else { --- linux-raspi2-4.2.0.orig/drivers/gpu/drm/amd/amdgpu/atombios_dp.c +++ linux-raspi2-4.2.0/drivers/gpu/drm/amd/amdgpu/atombios_dp.c @@ -139,7 +139,8 @@ tx_buf[0] = msg->address & 0xff; tx_buf[1] = msg->address >> 8; - tx_buf[2] = msg->request << 4; + tx_buf[2] = (msg->request << 4) | + ((msg->address >> 16) & 0xf); tx_buf[3] = msg->size ? (msg->size - 1) : 0; switch (msg->request & ~DP_AUX_I2C_MOT) { --- linux-raspi2-4.2.0.orig/drivers/gpu/drm/amd/amdgpu/atombios_encoders.c +++ linux-raspi2-4.2.0/drivers/gpu/drm/amd/amdgpu/atombios_encoders.c @@ -1279,8 +1279,7 @@ amdgpu_atombios_encoder_setup_dig_encoder(encoder, ATOM_ENCODER_CMD_DP_VIDEO_ON, 0); } if (amdgpu_encoder->devices & (ATOM_DEVICE_LCD_SUPPORT)) - amdgpu_atombios_encoder_setup_dig_transmitter(encoder, - ATOM_TRANSMITTER_ACTION_LCD_BLON, 0, 0); + amdgpu_atombios_encoder_set_backlight_level(amdgpu_encoder, dig->backlight_level); if (ext_encoder) amdgpu_atombios_encoder_setup_external_encoder(encoder, ext_encoder, ATOM_ENABLE); } else { --- linux-raspi2-4.2.0.orig/drivers/gpu/drm/amd/amdgpu/ci_dpm.c +++ linux-raspi2-4.2.0/drivers/gpu/drm/amd/amdgpu/ci_dpm.c @@ -6185,6 +6185,11 @@ if (!amdgpu_dpm) return 0; + /* init the sysfs and debugfs files late */ + ret = amdgpu_pm_sysfs_init(adev); + if (ret) + return ret; + ret = ci_set_temperature_range(adev); if (ret) return ret; @@ -6232,9 +6237,6 @@ adev->pm.dpm.current_ps = adev->pm.dpm.requested_ps = adev->pm.dpm.boot_ps; if (amdgpu_dpm == 1) amdgpu_pm_print_power_states(adev); - ret = amdgpu_pm_sysfs_init(adev); - if (ret) - goto dpm_failed; mutex_unlock(&adev->pm.mutex); DRM_INFO("amdgpu: dpm initialized\n"); --- linux-raspi2-4.2.0.orig/drivers/gpu/drm/amd/amdgpu/cik.c +++ linux-raspi2-4.2.0/drivers/gpu/drm/amd/amdgpu/cik.c @@ -1565,6 +1565,9 @@ int ret, i; u16 tmp16; + if (pci_is_root_bus(adev->pdev->bus)) + return; + if (amdgpu_pcie_gen2 == 0) return; --- linux-raspi2-4.2.0.orig/drivers/gpu/drm/amd/amdgpu/cz_dpm.c +++ linux-raspi2-4.2.0/drivers/gpu/drm/amd/amdgpu/cz_dpm.c @@ -596,6 +596,12 @@ struct amdgpu_device *adev = (struct amdgpu_device *)handle; if (amdgpu_dpm) { + int ret; + /* init the sysfs and debugfs files late */ + ret = amdgpu_pm_sysfs_init(adev); + if (ret) + return ret; + /* powerdown unused blocks for now */ cz_dpm_powergate_uvd(adev, true); cz_dpm_powergate_vce(adev, true); @@ -632,10 +638,6 @@ if (amdgpu_dpm == 1) amdgpu_pm_print_power_states(adev); - ret = amdgpu_pm_sysfs_init(adev); - if (ret) - goto dpm_init_failed; - mutex_unlock(&adev->pm.mutex); DRM_INFO("amdgpu: dpm initialized\n"); --- linux-raspi2-4.2.0.orig/drivers/gpu/drm/amd/amdgpu/dce_v10_0.c +++ linux-raspi2-4.2.0/drivers/gpu/drm/amd/amdgpu/dce_v10_0.c @@ -233,6 +233,24 @@ return RREG32(mmCRTC_STATUS_FRAME_COUNT + crtc_offsets[crtc]); } +static void dce_v10_0_pageflip_interrupt_init(struct amdgpu_device *adev) +{ + unsigned i; + + /* Enable pflip interrupts */ + for (i = 0; i < adev->mode_info.num_crtc; i++) + amdgpu_irq_get(adev, &adev->pageflip_irq, i); +} + +static void dce_v10_0_pageflip_interrupt_fini(struct amdgpu_device *adev) +{ + unsigned i; + + /* Disable pflip interrupts */ + for (i = 0; i < adev->mode_info.num_crtc; i++) + amdgpu_irq_put(adev, &adev->pageflip_irq, i); +} + /** * dce_v10_0_page_flip - pageflip callback. * @@ -1331,7 +1349,7 @@ tmp = REG_SET_FIELD(wm_mask, DPG_WATERMARK_MASK_CONTROL, URGENCY_WATERMARK_MASK, 2); WREG32(mmDPG_WATERMARK_MASK_CONTROL + amdgpu_crtc->crtc_offset, tmp); tmp = RREG32(mmDPG_PIPE_URGENCY_CONTROL + amdgpu_crtc->crtc_offset); - tmp = REG_SET_FIELD(tmp, DPG_PIPE_URGENCY_CONTROL, URGENCY_LOW_WATERMARK, latency_watermark_a); + tmp = REG_SET_FIELD(tmp, DPG_PIPE_URGENCY_CONTROL, URGENCY_LOW_WATERMARK, latency_watermark_b); tmp = REG_SET_FIELD(tmp, DPG_PIPE_URGENCY_CONTROL, URGENCY_HIGH_WATERMARK, line_time); WREG32(mmDPG_PIPE_URGENCY_CONTROL + amdgpu_crtc->crtc_offset, tmp); /* restore original selection */ @@ -2641,9 +2659,10 @@ dce_v10_0_vga_enable(crtc, true); amdgpu_atombios_crtc_blank(crtc, ATOM_DISABLE); dce_v10_0_vga_enable(crtc, false); - /* Make sure VBLANK interrupt is still enabled */ + /* Make sure VBLANK and PFLIP interrupts are still enabled */ type = amdgpu_crtc_idx_to_irq_type(adev, amdgpu_crtc->crtc_id); amdgpu_irq_update(adev, &adev->crtc_irq, type); + amdgpu_irq_update(adev, &adev->pageflip_irq, type); drm_vblank_post_modeset(dev, amdgpu_crtc->crtc_id); dce_v10_0_crtc_load_lut(crtc); break; @@ -3002,6 +3021,8 @@ dce_v10_0_audio_enable(adev, &adev->mode_info.audio.pin[i], false); } + dce_v10_0_pageflip_interrupt_init(adev); + return 0; } @@ -3016,6 +3037,8 @@ dce_v10_0_audio_enable(adev, &adev->mode_info.audio.pin[i], false); } + dce_v10_0_pageflip_interrupt_fini(adev); + return 0; } @@ -3027,6 +3050,8 @@ dce_v10_0_hpd_fini(adev); + dce_v10_0_pageflip_interrupt_fini(adev); + return 0; } @@ -3052,6 +3077,8 @@ /* initialize hpd */ dce_v10_0_hpd_init(adev); + dce_v10_0_pageflip_interrupt_init(adev); + return 0; } @@ -3346,7 +3373,6 @@ spin_unlock_irqrestore(&adev->ddev->event_lock, flags); drm_vblank_put(adev->ddev, amdgpu_crtc->crtc_id); - amdgpu_irq_put(adev, &adev->pageflip_irq, crtc_id); queue_work(amdgpu_crtc->pflip_queue, &works->unpin_work); return 0; --- linux-raspi2-4.2.0.orig/drivers/gpu/drm/amd/amdgpu/dce_v11_0.c +++ linux-raspi2-4.2.0/drivers/gpu/drm/amd/amdgpu/dce_v11_0.c @@ -233,6 +233,24 @@ return RREG32(mmCRTC_STATUS_FRAME_COUNT + crtc_offsets[crtc]); } +static void dce_v11_0_pageflip_interrupt_init(struct amdgpu_device *adev) +{ + unsigned i; + + /* Enable pflip interrupts */ + for (i = 0; i < adev->mode_info.num_crtc; i++) + amdgpu_irq_get(adev, &adev->pageflip_irq, i); +} + +static void dce_v11_0_pageflip_interrupt_fini(struct amdgpu_device *adev) +{ + unsigned i; + + /* Disable pflip interrupts */ + for (i = 0; i < adev->mode_info.num_crtc; i++) + amdgpu_irq_put(adev, &adev->pageflip_irq, i); +} + /** * dce_v11_0_page_flip - pageflip callback. * @@ -1329,7 +1347,7 @@ tmp = REG_SET_FIELD(wm_mask, DPG_WATERMARK_MASK_CONTROL, URGENCY_WATERMARK_MASK, 2); WREG32(mmDPG_WATERMARK_MASK_CONTROL + amdgpu_crtc->crtc_offset, tmp); tmp = RREG32(mmDPG_PIPE_URGENCY_CONTROL + amdgpu_crtc->crtc_offset); - tmp = REG_SET_FIELD(tmp, DPG_PIPE_URGENCY_CONTROL, URGENCY_LOW_WATERMARK, latency_watermark_a); + tmp = REG_SET_FIELD(tmp, DPG_PIPE_URGENCY_CONTROL, URGENCY_LOW_WATERMARK, latency_watermark_b); tmp = REG_SET_FIELD(tmp, DPG_PIPE_URGENCY_CONTROL, URGENCY_HIGH_WATERMARK, line_time); WREG32(mmDPG_PIPE_URGENCY_CONTROL + amdgpu_crtc->crtc_offset, tmp); /* restore original selection */ @@ -2640,9 +2658,10 @@ dce_v11_0_vga_enable(crtc, true); amdgpu_atombios_crtc_blank(crtc, ATOM_DISABLE); dce_v11_0_vga_enable(crtc, false); - /* Make sure VBLANK interrupt is still enabled */ + /* Make sure VBLANK and PFLIP interrupts are still enabled */ type = amdgpu_crtc_idx_to_irq_type(adev, amdgpu_crtc->crtc_id); amdgpu_irq_update(adev, &adev->crtc_irq, type); + amdgpu_irq_update(adev, &adev->pageflip_irq, type); drm_vblank_post_modeset(dev, amdgpu_crtc->crtc_id); dce_v11_0_crtc_load_lut(crtc); break; @@ -2888,7 +2907,7 @@ switch (adev->asic_type) { case CHIP_CARRIZO: - adev->mode_info.num_crtc = 4; + adev->mode_info.num_crtc = 3; adev->mode_info.num_hpd = 6; adev->mode_info.num_dig = 9; break; @@ -3000,6 +3019,8 @@ dce_v11_0_audio_enable(adev, &adev->mode_info.audio.pin[i], false); } + dce_v11_0_pageflip_interrupt_init(adev); + return 0; } @@ -3014,6 +3035,8 @@ dce_v11_0_audio_enable(adev, &adev->mode_info.audio.pin[i], false); } + dce_v11_0_pageflip_interrupt_fini(adev); + return 0; } @@ -3025,6 +3048,8 @@ dce_v11_0_hpd_fini(adev); + dce_v11_0_pageflip_interrupt_fini(adev); + return 0; } @@ -3051,6 +3076,8 @@ /* initialize hpd */ dce_v11_0_hpd_init(adev); + dce_v11_0_pageflip_interrupt_init(adev); + return 0; } @@ -3345,7 +3372,6 @@ spin_unlock_irqrestore(&adev->ddev->event_lock, flags); drm_vblank_put(adev->ddev, amdgpu_crtc->crtc_id); - amdgpu_irq_put(adev, &adev->pageflip_irq, crtc_id); queue_work(amdgpu_crtc->pflip_queue, &works->unpin_work); return 0; --- linux-raspi2-4.2.0.orig/drivers/gpu/drm/amd/amdgpu/dce_v8_0.c +++ linux-raspi2-4.2.0/drivers/gpu/drm/amd/amdgpu/dce_v8_0.c @@ -204,6 +204,24 @@ return RREG32(mmCRTC_STATUS_FRAME_COUNT + crtc_offsets[crtc]); } +static void dce_v8_0_pageflip_interrupt_init(struct amdgpu_device *adev) +{ + unsigned i; + + /* Enable pflip interrupts */ + for (i = 0; i < adev->mode_info.num_crtc; i++) + amdgpu_irq_get(adev, &adev->pageflip_irq, i); +} + +static void dce_v8_0_pageflip_interrupt_fini(struct amdgpu_device *adev) +{ + unsigned i; + + /* Disable pflip interrupts */ + for (i = 0; i < adev->mode_info.num_crtc; i++) + amdgpu_irq_put(adev, &adev->pageflip_irq, i); +} + /** * dce_v8_0_page_flip - pageflip callback. * @@ -2575,9 +2593,10 @@ dce_v8_0_vga_enable(crtc, true); amdgpu_atombios_crtc_blank(crtc, ATOM_DISABLE); dce_v8_0_vga_enable(crtc, false); - /* Make sure VBLANK interrupt is still enabled */ + /* Make sure VBLANK and PFLIP interrupts are still enabled */ type = amdgpu_crtc_idx_to_irq_type(adev, amdgpu_crtc->crtc_id); amdgpu_irq_update(adev, &adev->crtc_irq, type); + amdgpu_irq_update(adev, &adev->pageflip_irq, type); drm_vblank_post_modeset(dev, amdgpu_crtc->crtc_id); dce_v8_0_crtc_load_lut(crtc); break; @@ -2933,6 +2952,8 @@ dce_v8_0_audio_enable(adev, &adev->mode_info.audio.pin[i], false); } + dce_v8_0_pageflip_interrupt_init(adev); + return 0; } @@ -2947,6 +2968,8 @@ dce_v8_0_audio_enable(adev, &adev->mode_info.audio.pin[i], false); } + dce_v8_0_pageflip_interrupt_fini(adev); + return 0; } @@ -2958,6 +2981,8 @@ dce_v8_0_hpd_fini(adev); + dce_v8_0_pageflip_interrupt_fini(adev); + return 0; } @@ -2981,6 +3006,8 @@ /* initialize hpd */ dce_v8_0_hpd_init(adev); + dce_v8_0_pageflip_interrupt_init(adev); + return 0; } @@ -3376,7 +3403,6 @@ spin_unlock_irqrestore(&adev->ddev->event_lock, flags); drm_vblank_put(adev->ddev, amdgpu_crtc->crtc_id); - amdgpu_irq_put(adev, &adev->pageflip_irq, crtc_id); queue_work(amdgpu_crtc->pflip_queue, &works->unpin_work); return 0; --- linux-raspi2-4.2.0.orig/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c +++ linux-raspi2-4.2.0/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c @@ -2012,6 +2012,8 @@ case 0x84: case 0xc8: case 0xcc: + case 0xe1: + case 0xe3: /* B10 */ adev->gfx.config.max_cu_per_sh = 8; break; @@ -2020,18 +2022,23 @@ case 0x85: case 0xc9: case 0xcd: + case 0xe2: + case 0xe4: /* B8 */ adev->gfx.config.max_cu_per_sh = 6; break; case 0xc6: case 0xca: case 0xce: + case 0x88: /* B6 */ adev->gfx.config.max_cu_per_sh = 6; break; case 0xc7: case 0x87: case 0xcb: + case 0xe5: + case 0x89: default: /* B4 */ adev->gfx.config.max_cu_per_sh = 4; @@ -4017,6 +4024,7 @@ amdgpu_ring_write(ring, PACKET3(PACKET3_RELEASE_MEM, 5)); amdgpu_ring_write(ring, (EOP_TCL1_ACTION_EN | EOP_TC_ACTION_EN | + EOP_TC_WB_ACTION_EN | EVENT_TYPE(CACHE_FLUSH_AND_INV_TS_EVENT) | EVENT_INDEX(5))); amdgpu_ring_write(ring, DATA_SEL(write64bit ? 2 : 1) | INT_SEL(int_sel ? 2 : 0)); --- linux-raspi2-4.2.0.orig/drivers/gpu/drm/amd/amdgpu/kv_dpm.c +++ linux-raspi2-4.2.0/drivers/gpu/drm/amd/amdgpu/kv_dpm.c @@ -2995,6 +2995,15 @@ { /* powerdown unused blocks for now */ struct amdgpu_device *adev = (struct amdgpu_device *)handle; + int ret; + + if (!amdgpu_dpm) + return 0; + + /* init the sysfs and debugfs files late */ + ret = amdgpu_pm_sysfs_init(adev); + if (ret) + return ret; kv_dpm_powergate_acp(adev, true); kv_dpm_powergate_samu(adev, true); @@ -3038,9 +3047,6 @@ adev->pm.dpm.current_ps = adev->pm.dpm.requested_ps = adev->pm.dpm.boot_ps; if (amdgpu_dpm == 1) amdgpu_pm_print_power_states(adev); - ret = amdgpu_pm_sysfs_init(adev); - if (ret) - goto dpm_failed; mutex_unlock(&adev->pm.mutex); DRM_INFO("amdgpu: dpm initialized\n"); --- linux-raspi2-4.2.0.orig/drivers/gpu/drm/amd/amdgpu/uvd_v4_2.c +++ linux-raspi2-4.2.0/drivers/gpu/drm/amd/amdgpu/uvd_v4_2.c @@ -224,11 +224,11 @@ int r; struct amdgpu_device *adev = (struct amdgpu_device *)handle; - r = uvd_v4_2_hw_fini(adev); + r = amdgpu_uvd_suspend(adev); if (r) return r; - r = amdgpu_uvd_suspend(adev); + r = uvd_v4_2_hw_fini(adev); if (r) return r; --- linux-raspi2-4.2.0.orig/drivers/gpu/drm/amd/amdgpu/uvd_v5_0.c +++ linux-raspi2-4.2.0/drivers/gpu/drm/amd/amdgpu/uvd_v5_0.c @@ -220,11 +220,11 @@ int r; struct amdgpu_device *adev = (struct amdgpu_device *)handle; - r = uvd_v5_0_hw_fini(adev); + r = amdgpu_uvd_suspend(adev); if (r) return r; - r = amdgpu_uvd_suspend(adev); + r = uvd_v5_0_hw_fini(adev); if (r) return r; --- linux-raspi2-4.2.0.orig/drivers/gpu/drm/amd/amdgpu/uvd_v6_0.c +++ linux-raspi2-4.2.0/drivers/gpu/drm/amd/amdgpu/uvd_v6_0.c @@ -214,11 +214,11 @@ int r; struct amdgpu_device *adev = (struct amdgpu_device *)handle; - r = uvd_v6_0_hw_fini(adev); + r = amdgpu_uvd_suspend(adev); if (r) return r; - r = amdgpu_uvd_suspend(adev); + r = uvd_v6_0_hw_fini(adev); if (r) return r; --- linux-raspi2-4.2.0.orig/drivers/gpu/drm/amd/amdgpu/vi.c +++ linux-raspi2-4.2.0/drivers/gpu/drm/amd/amdgpu/vi.c @@ -968,6 +968,9 @@ u32 mask; int ret; + if (pci_is_root_bus(adev->pdev->bus)) + return; + if (amdgpu_pcie_gen2 == 0) return; @@ -1290,7 +1293,8 @@ case CHIP_CARRIZO: adev->has_uvd = true; adev->cg_flags = 0; - adev->pg_flags = AMDGPU_PG_SUPPORT_UVD | AMDGPU_PG_SUPPORT_VCE; + /* Disable UVD pg */ + adev->pg_flags = /* AMDGPU_PG_SUPPORT_UVD | */AMDGPU_PG_SUPPORT_VCE; adev->external_rev_id = adev->rev_id + 0x1; if (amdgpu_smc_load_fw && smc_enabled) adev->firmware.smu_load = true; --- linux-raspi2-4.2.0.orig/drivers/gpu/drm/ast/ast_drv.h +++ linux-raspi2-4.2.0/drivers/gpu/drm/ast/ast_drv.h @@ -315,6 +315,7 @@ int ast_fbdev_init(struct drm_device *dev); void ast_fbdev_fini(struct drm_device *dev); void ast_fbdev_set_suspend(struct drm_device *dev, int state); +void ast_fbdev_set_base(struct ast_private *ast, unsigned long gpu_addr); struct ast_bo { struct ttm_buffer_object bo; --- linux-raspi2-4.2.0.orig/drivers/gpu/drm/ast/ast_fb.c +++ linux-raspi2-4.2.0/drivers/gpu/drm/ast/ast_fb.c @@ -379,3 +379,10 @@ fb_set_suspend(ast->fbdev->helper.fbdev, state); } + +void ast_fbdev_set_base(struct ast_private *ast, unsigned long gpu_addr) +{ + ast->fbdev->helper.fbdev->fix.smem_start = + ast->fbdev->helper.fbdev->apertures->ranges[0].base + gpu_addr; + ast->fbdev->helper.fbdev->fix.smem_len = ast->vram_size - gpu_addr; +} --- linux-raspi2-4.2.0.orig/drivers/gpu/drm/ast/ast_main.c +++ linux-raspi2-4.2.0/drivers/gpu/drm/ast/ast_main.c @@ -448,6 +448,7 @@ dev->mode_config.min_height = 0; dev->mode_config.preferred_depth = 24; dev->mode_config.prefer_shadow = 1; + dev->mode_config.fb_base = pci_resource_start(ast->dev->pdev, 0); if (ast->chip == AST2100 || ast->chip == AST2200 || --- linux-raspi2-4.2.0.orig/drivers/gpu/drm/ast/ast_mode.c +++ linux-raspi2-4.2.0/drivers/gpu/drm/ast/ast_mode.c @@ -547,6 +547,8 @@ ret = ttm_bo_kmap(&bo->bo, 0, bo->bo.num_pages, &bo->kmap); if (ret) DRM_ERROR("failed to kmap fbcon\n"); + else + ast_fbdev_set_base(ast, gpu_addr); } ast_bo_unreserve(bo); --- linux-raspi2-4.2.0.orig/drivers/gpu/drm/drm_atomic_helper.c +++ linux-raspi2-4.2.0/drivers/gpu/drm/drm_atomic_helper.c @@ -306,7 +306,7 @@ encoder->base.id, encoder->name); return ret; } - } else { + } else if (funcs->mode_fixup) { ret = funcs->mode_fixup(encoder, &crtc_state->mode, &crtc_state->adjusted_mode); if (!ret) { --- linux-raspi2-4.2.0.orig/drivers/gpu/drm/drm_crtc.c +++ linux-raspi2-4.2.0/drivers/gpu/drm/drm_crtc.c @@ -306,8 +306,7 @@ * reference counted modeset objects like framebuffers. * * Returns: - * New unique (relative to other objects in @dev) integer identifier for the - * object. + * Zero on success, error code on failure. */ int drm_mode_object_get(struct drm_device *dev, struct drm_mode_object *obj, uint32_t obj_type) @@ -423,7 +422,7 @@ out: mutex_unlock(&dev->mode_config.fb_lock); - return 0; + return ret; } EXPORT_SYMBOL(drm_framebuffer_init); @@ -4221,7 +4220,7 @@ struct drm_property_blob *blob; int ret; - if (!length) + if (!length || length > ULONG_MAX - sizeof(struct drm_property_blob)) return ERR_PTR(-EINVAL); blob = kzalloc(sizeof(struct drm_property_blob)+length, GFP_KERNEL); @@ -4573,7 +4572,7 @@ * not associated with any file_priv. */ mutex_lock(&dev->mode_config.blob_lock); out_resp->blob_id = blob->base.id; - list_add_tail(&file_priv->blobs, &blob->head_file); + list_add_tail(&blob->head_file, &file_priv->blobs); mutex_unlock(&dev->mode_config.blob_lock); return 0; --- linux-raspi2-4.2.0.orig/drivers/gpu/drm/drm_dp_mst_topology.c +++ linux-raspi2-4.2.0/drivers/gpu/drm/drm_dp_mst_topology.c @@ -804,8 +804,6 @@ struct drm_dp_mst_port *port, *tmp; bool wake_tx = false; - cancel_work_sync(&mstb->mgr->work); - /* * destroy all ports - don't need lock * as there are no more references to the mst branch @@ -863,29 +861,33 @@ { struct drm_dp_mst_port *port = container_of(kref, struct drm_dp_mst_port, kref); struct drm_dp_mst_topology_mgr *mgr = port->mgr; + if (!port->input) { port->vcpi.num_slots = 0; kfree(port->cached_edid); - /* we can't destroy the connector here, as - we might be holding the mode_config.mutex - from an EDID retrieval */ + /* + * The only time we don't have a connector + * on an output port is if the connector init + * fails. + */ if (port->connector) { + /* we can't destroy the connector here, as + * we might be holding the mode_config.mutex + * from an EDID retrieval */ + mutex_lock(&mgr->destroy_connector_lock); list_add(&port->next, &mgr->destroy_connector_list); mutex_unlock(&mgr->destroy_connector_lock); schedule_work(&mgr->destroy_connector_work); return; } + /* no need to clean up vcpi + * as if we have no connector we never setup a vcpi */ drm_dp_port_teardown_pdt(port, port->pdt); - - if (!port->input && port->vcpi.vcpi > 0) - drm_dp_mst_put_payload_id(mgr, port->vcpi.vcpi); } kfree(port); - - (*mgr->cbs->hotplug)(mgr); } static void drm_dp_put_port(struct drm_dp_mst_port *port) @@ -1115,12 +1117,21 @@ char proppath[255]; build_mst_prop_path(port, mstb, proppath, sizeof(proppath)); port->connector = (*mstb->mgr->cbs->add_connector)(mstb->mgr, port, proppath); - + if (!port->connector) { + /* remove it from the port list */ + mutex_lock(&mstb->mgr->lock); + list_del(&port->next); + mutex_unlock(&mstb->mgr->lock); + /* drop port list reference */ + drm_dp_put_port(port); + goto out; + } if (port->port_num >= 8) { port->cached_edid = drm_get_edid(port->connector, &port->aux.ddc); } } +out: /* put reference to this port */ drm_dp_put_port(port); } @@ -1182,17 +1193,18 @@ list_for_each_entry(port, &mstb->ports, next) { if (port->port_num == port_num) { - if (!port->mstb) { + mstb = port->mstb; + if (!mstb) { DRM_ERROR("failed to lookup MSTB with lct %d, rad %02x\n", lct, rad[0]); - return NULL; + goto out; } - mstb = port->mstb; break; } } } kref_get(&mstb->kref); +out: mutex_unlock(&mgr->lock); return mstb; } @@ -1978,6 +1990,8 @@ drm_dp_dpcd_writeb(mgr->aux, DP_MSTM_CTRL, DP_MST_EN | DP_UPSTREAM_IS_SRC); mutex_unlock(&mgr->lock); + flush_work(&mgr->work); + flush_work(&mgr->destroy_connector_work); } EXPORT_SYMBOL(drm_dp_mst_topology_mgr_suspend); @@ -2661,7 +2675,7 @@ { struct drm_dp_mst_topology_mgr *mgr = container_of(work, struct drm_dp_mst_topology_mgr, destroy_connector_work); struct drm_dp_mst_port *port; - + bool send_hotplug = false; /* * Not a regular list traverse as we have to drop the destroy * connector lock before destroying the connector, to avoid AB->BA @@ -2684,7 +2698,10 @@ if (!port->input && port->vcpi.vcpi > 0) drm_dp_mst_put_payload_id(mgr, port->vcpi.vcpi); kfree(port); + send_hotplug = true; } + if (send_hotplug) + (*mgr->cbs->hotplug)(mgr); } /** @@ -2737,6 +2754,7 @@ */ void drm_dp_mst_topology_mgr_destroy(struct drm_dp_mst_topology_mgr *mgr) { + flush_work(&mgr->work); flush_work(&mgr->destroy_connector_work); mutex_lock(&mgr->payload_lock); kfree(mgr->payloads); @@ -2772,12 +2790,13 @@ if (msgs[num - 1].flags & I2C_M_RD) reading = true; - if (!reading) { + if (!reading || (num - 1 > DP_REMOTE_I2C_READ_MAX_TRANSACTIONS)) { DRM_DEBUG_KMS("Unsupported I2C transaction for MST device\n"); ret = -EIO; goto out; } + memset(&msg, 0, sizeof(msg)); msg.req_type = DP_REMOTE_I2C_READ; msg.u.i2c_read.num_transactions = num - 1; msg.u.i2c_read.port_number = port->port_num; --- linux-raspi2-4.2.0.orig/drivers/gpu/drm/drm_fb_helper.c +++ linux-raspi2-4.2.0/drivers/gpu/drm/drm_fb_helper.c @@ -504,14 +504,6 @@ int i, j; /* - * fbdev->blank can be called from irq context in case of a panic. - * Since we already have our own special panic handler which will - * restore the fbdev console mode completely, just bail out early. - */ - if (oops_in_progress) - return; - - /* * For each CRTC in this fb, turn the connectors on/off. */ drm_modeset_lock_all(dev); @@ -544,6 +536,9 @@ */ int drm_fb_helper_blank(int blank, struct fb_info *info) { + if (oops_in_progress) + return -EBUSY; + switch (blank) { /* Display: On; HSync: On, VSync: On */ case FB_BLANK_UNBLANK: @@ -771,9 +766,10 @@ int i, j, rc = 0; int start; - if (__drm_modeset_lock_all(dev, !!oops_in_progress)) { + if (oops_in_progress) return -EBUSY; - } + + drm_modeset_lock_all(dev); if (!drm_fb_helper_is_bound(fb_helper)) { drm_modeset_unlock_all(dev); return -EBUSY; @@ -922,6 +918,9 @@ struct drm_fb_helper *fb_helper = info->par; struct fb_var_screeninfo *var = &info->var; + if (oops_in_progress) + return -EBUSY; + if (var->pixclock != 0) { DRM_ERROR("PIXEL CLOCK SET\n"); return -EINVAL; @@ -947,9 +946,10 @@ int ret = 0; int i; - if (__drm_modeset_lock_all(dev, !!oops_in_progress)) { + if (oops_in_progress) return -EBUSY; - } + + drm_modeset_lock_all(dev); if (!drm_fb_helper_is_bound(fb_helper)) { drm_modeset_unlock_all(dev); return -EBUSY; --- linux-raspi2-4.2.0.orig/drivers/gpu/drm/drm_lock.c +++ linux-raspi2-4.2.0/drivers/gpu/drm/drm_lock.c @@ -61,6 +61,9 @@ struct drm_master *master = file_priv->master; int ret = 0; + if (drm_core_check_feature(dev, DRIVER_MODESET)) + return -EINVAL; + ++file_priv->lock_count; if (lock->context == DRM_KERNEL_CONTEXT) { @@ -153,6 +156,9 @@ struct drm_lock *lock = data; struct drm_master *master = file_priv->master; + if (drm_core_check_feature(dev, DRIVER_MODESET)) + return -EINVAL; + if (lock->context == DRM_KERNEL_CONTEXT) { DRM_ERROR("Process %d using kernel context %d\n", task_pid_nr(current), lock->context); --- linux-raspi2-4.2.0.orig/drivers/gpu/drm/drm_sysfs.c +++ linux-raspi2-4.2.0/drivers/gpu/drm/drm_sysfs.c @@ -235,18 +235,12 @@ char *buf) { struct drm_connector *connector = to_drm_connector(device); - struct drm_device *dev = connector->dev; - uint64_t dpms_status; - int ret; + int dpms; - ret = drm_object_property_get_value(&connector->base, - dev->mode_config.dpms_property, - &dpms_status); - if (ret) - return 0; + dpms = READ_ONCE(connector->dpms); return snprintf(buf, PAGE_SIZE, "%s\n", - drm_get_dpms_name((int)dpms_status)); + drm_get_dpms_name(dpms)); } static ssize_t enabled_show(struct device *device, --- linux-raspi2-4.2.0.orig/drivers/gpu/drm/i915/i915_cmd_parser.c +++ linux-raspi2-4.2.0/drivers/gpu/drm/i915/i915_cmd_parser.c @@ -131,7 +131,7 @@ .mask = MI_GLOBAL_GTT, .expected = 0, }}, ), - CMD( MI_LOAD_REGISTER_MEM, SMI, !F, 0xFF, W | B, + CMD( MI_LOAD_REGISTER_MEM(1), SMI, !F, 0xFF, W | B, .reg = { .offset = 1, .mask = 0x007FFFFC }, .bits = {{ .offset = 0, @@ -1021,7 +1021,7 @@ * only MI_LOAD_REGISTER_IMM commands. */ if (reg_addr == OACONTROL) { - if (desc->cmd.value == MI_LOAD_REGISTER_MEM) { + if (desc->cmd.value == MI_LOAD_REGISTER_MEM(1)) { DRM_DEBUG_DRIVER("CMD: Rejected LRM to OACONTROL\n"); return false; } @@ -1035,7 +1035,7 @@ * allowed mask/value pair given in the whitelist entry. */ if (reg->mask) { - if (desc->cmd.value == MI_LOAD_REGISTER_MEM) { + if (desc->cmd.value == MI_LOAD_REGISTER_MEM(1)) { DRM_DEBUG_DRIVER("CMD: Rejected LRM to masked register 0x%08X\n", reg_addr); return false; --- linux-raspi2-4.2.0.orig/drivers/gpu/drm/i915/i915_debugfs.c +++ linux-raspi2-4.2.0/drivers/gpu/drm/i915/i915_debugfs.c @@ -2536,6 +2536,8 @@ return "PORT_DDI_D_2_LANES"; case POWER_DOMAIN_PORT_DDI_D_4_LANES: return "PORT_DDI_D_4_LANES"; + case POWER_DOMAIN_PORT_DDI_E_2_LANES: + return "PORT_DDI_E_2_LANES"; case POWER_DOMAIN_PORT_DSI: return "PORT_DSI"; case POWER_DOMAIN_PORT_CRT: --- linux-raspi2-4.2.0.orig/drivers/gpu/drm/i915/i915_dma.c +++ linux-raspi2-4.2.0/drivers/gpu/drm/i915/i915_dma.c @@ -719,11 +719,19 @@ info = (struct intel_device_info *)&dev_priv->info; + /* + * Skylake and Broxton currently don't expose the topmost plane as its + * use is exclusive with the legacy cursor and we only want to expose + * one of those, not both. Until we can safely expose the topmost plane + * as a DRM_PLANE_TYPE_CURSOR with all the features exposed/supported, + * we don't expose the topmost plane at all to prevent ABI breakage + * down the line. + */ if (IS_BROXTON(dev)) { - info->num_sprites[PIPE_A] = 3; - info->num_sprites[PIPE_B] = 3; - info->num_sprites[PIPE_C] = 2; - } else if (IS_VALLEYVIEW(dev) || INTEL_INFO(dev)->gen == 9) + info->num_sprites[PIPE_A] = 2; + info->num_sprites[PIPE_B] = 2; + info->num_sprites[PIPE_C] = 1; + } else if (IS_VALLEYVIEW(dev)) for_each_pipe(dev_priv, pipe) info->num_sprites[pipe] = 2; else @@ -933,8 +941,8 @@ goto out_mtrrfree; } - dev_priv->dp_wq = alloc_ordered_workqueue("i915-dp", 0); - if (dev_priv->dp_wq == NULL) { + dev_priv->hotplug.dp_wq = alloc_ordered_workqueue("i915-dp", 0); + if (dev_priv->hotplug.dp_wq == NULL) { DRM_ERROR("Failed to create our dp workqueue.\n"); ret = -ENOMEM; goto out_freewq; @@ -1029,7 +1037,7 @@ pm_qos_remove_request(&dev_priv->pm_qos); destroy_workqueue(dev_priv->gpu_error.hangcheck_wq); out_freedpwq: - destroy_workqueue(dev_priv->dp_wq); + destroy_workqueue(dev_priv->hotplug.dp_wq); out_freewq: destroy_workqueue(dev_priv->wq); out_mtrrfree: @@ -1123,7 +1131,7 @@ intel_teardown_gmbus(dev); intel_teardown_mchbar(dev); - destroy_workqueue(dev_priv->dp_wq); + destroy_workqueue(dev_priv->hotplug.dp_wq); destroy_workqueue(dev_priv->wq); destroy_workqueue(dev_priv->gpu_error.hangcheck_wq); pm_qos_remove_request(&dev_priv->pm_qos); --- linux-raspi2-4.2.0.orig/drivers/gpu/drm/i915/i915_drv.c +++ linux-raspi2-4.2.0/drivers/gpu/drm/i915/i915_drv.c @@ -356,7 +356,6 @@ }; static const struct intel_device_info intel_skylake_info = { - .is_preliminary = 1, .is_skylake = 1, .gen = 9, .num_pipes = 3, .need_gfx_hws = 1, .has_hotplug = 1, @@ -369,7 +368,6 @@ }; static const struct intel_device_info intel_skylake_gt3_info = { - .is_preliminary = 1, .is_skylake = 1, .gen = 9, .num_pipes = 3, .need_gfx_hws = 1, .has_hotplug = 1, @@ -545,15 +543,15 @@ { spin_lock_irq(&dev_priv->irq_lock); - dev_priv->long_hpd_port_mask = 0; - dev_priv->short_hpd_port_mask = 0; - dev_priv->hpd_event_bits = 0; + dev_priv->hotplug.long_port_mask = 0; + dev_priv->hotplug.short_port_mask = 0; + dev_priv->hotplug.event_bits = 0; spin_unlock_irq(&dev_priv->irq_lock); - cancel_work_sync(&dev_priv->dig_port_work); - cancel_work_sync(&dev_priv->hotplug_work); - cancel_delayed_work_sync(&dev_priv->hotplug_reenable_work); + cancel_work_sync(&dev_priv->hotplug.dig_port_work); + cancel_work_sync(&dev_priv->hotplug.hotplug_work); + cancel_delayed_work_sync(&dev_priv->hotplug.reenable_work); } void i915_firmware_load_error_print(const char *fw_path, int err) @@ -683,15 +681,18 @@ pci_disable_device(drm_dev->pdev); /* - * During hibernation on some GEN4 platforms the BIOS may try to access + * During hibernation on some platforms the BIOS may try to access * the device even though it's already in D3 and hang the machine. So * leave the device in D0 on those platforms and hope the BIOS will - * power down the device properly. Platforms where this was seen: - * Lenovo Thinkpad X301, X61s + * power down the device properly. The issue was seen on multiple old + * GENs with different BIOS vendors, so having an explicit blacklist + * is inpractical; apply the workaround on everything pre GEN6. The + * platforms where the issue was seen: + * Lenovo Thinkpad X301, X61s, X60, T60, X41 + * Fujitsu FSC S7110 + * Acer Aspire 1830T */ - if (!(hibernation && - drm_dev->pdev->subsystem_vendor == PCI_VENDOR_ID_LENOVO && - INTEL_INFO(dev_priv)->gen == 4)) + if (!(hibernation && INTEL_INFO(dev_priv)->gen < 6)) pci_set_power_state(drm_dev->pdev, PCI_D3hot); return 0; --- linux-raspi2-4.2.0.orig/drivers/gpu/drm/i915/i915_drv.h +++ linux-raspi2-4.2.0/drivers/gpu/drm/i915/i915_drv.h @@ -182,6 +182,7 @@ POWER_DOMAIN_PORT_DDI_C_4_LANES, POWER_DOMAIN_PORT_DDI_D_2_LANES, POWER_DOMAIN_PORT_DDI_D_4_LANES, + POWER_DOMAIN_PORT_DDI_E_2_LANES, POWER_DOMAIN_PORT_DSI, POWER_DOMAIN_PORT_CRT, POWER_DOMAIN_PORT_OTHER, @@ -214,9 +215,43 @@ HPD_PORT_B, HPD_PORT_C, HPD_PORT_D, + HPD_PORT_E, HPD_NUM_PINS }; +#define for_each_hpd_pin(__pin) \ + for ((__pin) = (HPD_NONE + 1); (__pin) < HPD_NUM_PINS; (__pin)++) + +struct i915_hotplug { + struct work_struct hotplug_work; + + struct { + unsigned long last_jiffies; + int count; + enum { + HPD_ENABLED = 0, + HPD_DISABLED = 1, + HPD_MARK_DISABLED = 2 + } state; + } stats[HPD_NUM_PINS]; + u32 event_bits; + struct delayed_work reenable_work; + + struct intel_digital_port *irq_port[I915_MAX_PORTS]; + u32 long_port_mask; + u32 short_port_mask; + struct work_struct dig_port_work; + + /* + * if we get a HPD irq from DP and a HPD irq from non-DP + * the non-DP HPD could block the workqueue on a mode config + * mutex getting, that userspace may have taken. However + * userspace is waiting on the DP workqueue to run which is + * blocked behind the non-DP one. + */ + struct workqueue_struct *dp_wq; +}; + #define I915_GEM_GPU_DOMAINS \ (I915_GEM_DOMAIN_RENDER | \ I915_GEM_DOMAIN_SAMPLER | \ @@ -1354,6 +1389,15 @@ MODESET_SUSPENDED, }; +#define DP_AUX_A 0x40 +#define DP_AUX_B 0x10 +#define DP_AUX_C 0x20 +#define DP_AUX_D 0x30 + +#define DDC_PIN_B 0x05 +#define DDC_PIN_C 0x04 +#define DDC_PIN_D 0x06 + struct ddi_vbt_port_info { /* * This is an index in the HDMI/DVI DDI buffer translation table. @@ -1366,6 +1410,12 @@ uint8_t supports_dvi:1; uint8_t supports_hdmi:1; uint8_t supports_dp:1; + + uint8_t alternate_aux_channel; + uint8_t alternate_ddc_pin; + + uint8_t dp_boost_level; + uint8_t hdmi_boost_level; }; enum psr_lines_to_wait { @@ -1680,19 +1730,7 @@ u32 pm_rps_events; u32 pipestat_irq_mask[I915_MAX_PIPES]; - struct work_struct hotplug_work; - struct { - unsigned long hpd_last_jiffies; - int hpd_cnt; - enum { - HPD_ENABLED = 0, - HPD_DISABLED = 1, - HPD_MARK_DISABLED = 2 - } hpd_mark; - } hpd_stats[HPD_NUM_PINS]; - u32 hpd_event_bits; - struct delayed_work hotplug_reenable_work; - + struct i915_hotplug hotplug; struct i915_fbc fbc; struct i915_drrs drrs; struct intel_opregion opregion; @@ -1809,6 +1847,7 @@ struct drm_property *force_audio_property; /* hda/i915 audio component */ + struct i915_audio_component *audio_component; bool audio_component_registered; uint32_t hw_context_size; @@ -1858,20 +1897,6 @@ struct i915_runtime_pm pm; - struct intel_digital_port *hpd_irq_port[I915_MAX_PORTS]; - u32 long_hpd_port_mask; - u32 short_hpd_port_mask; - struct work_struct dig_port_work; - - /* - * if we get a HPD irq from DP and a HPD irq from non-DP - * the non-DP HPD could block the workqueue on a mode config - * mutex getting, that userspace may have taken. However - * userspace is waiting on the DP workqueue to run which is - * blocked behind the non-DP one. - */ - struct workqueue_struct *dp_wq; - /* Abstract the submission mechanism (legacy ringbuffer or execlists) away */ struct { int (*execbuf_submit)(struct drm_device *dev, struct drm_file *file, @@ -2400,6 +2425,14 @@ /* ULX machines are also considered ULT. */ #define IS_HSW_ULX(dev) (INTEL_DEVID(dev) == 0x0A0E || \ INTEL_DEVID(dev) == 0x0A1E) +#define IS_SKL_ULT(dev) (INTEL_DEVID(dev) == 0x1906 || \ + INTEL_DEVID(dev) == 0x1913 || \ + INTEL_DEVID(dev) == 0x1916 || \ + INTEL_DEVID(dev) == 0x1921 || \ + INTEL_DEVID(dev) == 0x1926) +#define IS_SKL_ULX(dev) (INTEL_DEVID(dev) == 0x190E || \ + INTEL_DEVID(dev) == 0x1915 || \ + INTEL_DEVID(dev) == 0x191E) #define IS_PRELIMINARY_HW(intel_info) ((intel_info)->is_preliminary) #define SKL_REVID_A0 (0x0) @@ -3303,13 +3336,13 @@ #define I915_READ64(reg) dev_priv->uncore.funcs.mmio_readq(dev_priv, (reg), true) #define I915_READ64_2x32(lower_reg, upper_reg) ({ \ - u32 upper, lower, tmp; \ - tmp = I915_READ(upper_reg); \ + u32 upper, lower, old_upper, loop = 0; \ + upper = I915_READ(upper_reg); \ do { \ - upper = tmp; \ + old_upper = upper; \ lower = I915_READ(lower_reg); \ - tmp = I915_READ(upper_reg); \ - } while (upper != tmp); \ + upper = I915_READ(upper_reg); \ + } while (upper != old_upper && loop++ < 2); \ (u64)upper << 32 | lower; }) #define POSTING_READ(reg) (void)I915_READ_NOTRACE(reg) --- linux-raspi2-4.2.0.orig/drivers/gpu/drm/i915/i915_gem_execbuffer.c +++ linux-raspi2-4.2.0/drivers/gpu/drm/i915/i915_gem_execbuffer.c @@ -1024,6 +1024,7 @@ u32 old_read = obj->base.read_domains; u32 old_write = obj->base.write_domain; + obj->dirty = 1; /* be paranoid */ obj->base.write_domain = obj->base.pending_write_domain; if (obj->base.write_domain == 0) obj->base.pending_read_domains |= obj->base.read_domains; @@ -1031,7 +1032,6 @@ i915_vma_move_to_active(vma, ring); if (obj->base.write_domain) { - obj->dirty = 1; i915_gem_request_assign(&obj->last_write_req, req); intel_fb_obj_invalidate(obj, ring, ORIGIN_CS); --- linux-raspi2-4.2.0.orig/drivers/gpu/drm/i915/i915_gem_userptr.c +++ linux-raspi2-4.2.0/drivers/gpu/drm/i915/i915_gem_userptr.c @@ -59,6 +59,7 @@ struct interval_tree_node it; struct list_head link; struct drm_i915_gem_object *obj; + bool active; bool is_linear; }; @@ -114,7 +115,8 @@ obj = mo->obj; - if (!kref_get_unless_zero(&obj->base.refcount)) + if (!mo->active || + !kref_get_unless_zero(&obj->base.refcount)) continue; spin_unlock(&mn->lock); @@ -151,7 +153,8 @@ else it = interval_tree_iter_first(&mn->objects, start, end); if (it != NULL) { - obj = container_of(it, struct i915_mmu_object, it)->obj; + struct i915_mmu_object *mo = + container_of(it, struct i915_mmu_object, it); /* The mmu_object is released late when destroying the * GEM object so it is entirely possible to gain a @@ -160,11 +163,9 @@ * the struct_mutex - and consequently use it after it * is freed and then double free it. */ - if (!kref_get_unless_zero(&obj->base.refcount)) { - spin_unlock(&mn->lock); - serial = 0; - continue; - } + if (mo->active && + kref_get_unless_zero(&mo->obj->base.refcount)) + obj = mo->obj; serial = mn->serial; } @@ -566,30 +567,54 @@ } static void +__i915_gem_userptr_set_active(struct drm_i915_gem_object *obj, + bool value) +{ + /* During mm_invalidate_range we need to cancel any userptr that + * overlaps the range being invalidated. Doing so requires the + * struct_mutex, and that risks recursion. In order to cause + * recursion, the user must alias the userptr address space with + * a GTT mmapping (possible with a MAP_FIXED) - then when we have + * to invalidate that mmaping, mm_invalidate_range is called with + * the userptr address *and* the struct_mutex held. To prevent that + * we set a flag under the i915_mmu_notifier spinlock to indicate + * whether this object is valid. + */ +#if defined(CONFIG_MMU_NOTIFIER) + if (obj->userptr.mmu_object == NULL) + return; + + spin_lock(&obj->userptr.mmu_object->mn->lock); + obj->userptr.mmu_object->active = value; + spin_unlock(&obj->userptr.mmu_object->mn->lock); +#endif +} + +static void __i915_gem_userptr_get_pages_worker(struct work_struct *_work) { struct get_pages_work *work = container_of(_work, typeof(*work), work); struct drm_i915_gem_object *obj = work->obj; struct drm_device *dev = obj->base.dev; - const int num_pages = obj->base.size >> PAGE_SHIFT; + const int npages = obj->base.size >> PAGE_SHIFT; struct page **pvec; int pinned, ret; ret = -ENOMEM; pinned = 0; - pvec = kmalloc(num_pages*sizeof(struct page *), + pvec = kmalloc(npages*sizeof(struct page *), GFP_TEMPORARY | __GFP_NOWARN | __GFP_NORETRY); if (pvec == NULL) - pvec = drm_malloc_ab(num_pages, sizeof(struct page *)); + pvec = drm_malloc_ab(npages, sizeof(struct page *)); if (pvec != NULL) { struct mm_struct *mm = obj->userptr.mm->mm; down_read(&mm->mmap_sem); - while (pinned < num_pages) { + while (pinned < npages) { ret = get_user_pages(work->task, mm, obj->userptr.ptr + pinned * PAGE_SIZE, - num_pages - pinned, + npages - pinned, !obj->userptr.read_only, 0, pvec + pinned, NULL); if (ret < 0) @@ -601,20 +626,22 @@ } mutex_lock(&dev->struct_mutex); - if (obj->userptr.work != &work->work) { - ret = 0; - } else if (pinned == num_pages) { - ret = __i915_gem_userptr_set_pages(obj, pvec, num_pages); - if (ret == 0) { - list_add_tail(&obj->global_list, &to_i915(dev)->mm.unbound_list); - obj->get_page.sg = obj->pages->sgl; - obj->get_page.last = 0; - - pinned = 0; + if (obj->userptr.work == &work->work) { + if (pinned == npages) { + ret = __i915_gem_userptr_set_pages(obj, pvec, npages); + if (ret == 0) { + list_add_tail(&obj->global_list, + &to_i915(dev)->mm.unbound_list); + obj->get_page.sg = obj->pages->sgl; + obj->get_page.last = 0; + pinned = 0; + } } + obj->userptr.work = ERR_PTR(ret); + if (ret) + __i915_gem_userptr_set_active(obj, false); } - obj->userptr.work = ERR_PTR(ret); obj->userptr.workers--; drm_gem_object_unreference(&obj->base); mutex_unlock(&dev->struct_mutex); @@ -627,11 +654,60 @@ } static int +__i915_gem_userptr_get_pages_schedule(struct drm_i915_gem_object *obj, + bool *active) +{ + struct get_pages_work *work; + + /* Spawn a worker so that we can acquire the + * user pages without holding our mutex. Access + * to the user pages requires mmap_sem, and we have + * a strict lock ordering of mmap_sem, struct_mutex - + * we already hold struct_mutex here and so cannot + * call gup without encountering a lock inversion. + * + * Userspace will keep on repeating the operation + * (thanks to EAGAIN) until either we hit the fast + * path or the worker completes. If the worker is + * cancelled or superseded, the task is still run + * but the results ignored. (This leads to + * complications that we may have a stray object + * refcount that we need to be wary of when + * checking for existing objects during creation.) + * If the worker encounters an error, it reports + * that error back to this function through + * obj->userptr.work = ERR_PTR. + */ + if (obj->userptr.workers >= I915_GEM_USERPTR_MAX_WORKERS) + return -EAGAIN; + + work = kmalloc(sizeof(*work), GFP_KERNEL); + if (work == NULL) + return -ENOMEM; + + obj->userptr.work = &work->work; + obj->userptr.workers++; + + work->obj = obj; + drm_gem_object_reference(&obj->base); + + work->task = current; + get_task_struct(work->task); + + INIT_WORK(&work->work, __i915_gem_userptr_get_pages_worker); + schedule_work(&work->work); + + *active = true; + return -EAGAIN; +} + +static int i915_gem_userptr_get_pages(struct drm_i915_gem_object *obj) { const int num_pages = obj->base.size >> PAGE_SHIFT; struct page **pvec; int pinned, ret; + bool active; /* If userspace should engineer that these pages are replaced in * the vma between us binding this page into the GTT and completion @@ -649,6 +725,18 @@ * to the vma (discard or cloning) which should prevent the more * egregious cases from causing harm. */ + if (IS_ERR(obj->userptr.work)) { + /* active flag will have been dropped already by the worker */ + ret = PTR_ERR(obj->userptr.work); + obj->userptr.work = NULL; + return ret; + } + if (obj->userptr.work) + /* active flag should still be held for the pending work */ + return -EAGAIN; + + /* Let the mmu-notifier know that we have begun and need cancellation */ + __i915_gem_userptr_set_active(obj, true); pvec = NULL; pinned = 0; @@ -657,73 +745,27 @@ GFP_TEMPORARY | __GFP_NOWARN | __GFP_NORETRY); if (pvec == NULL) { pvec = drm_malloc_ab(num_pages, sizeof(struct page *)); - if (pvec == NULL) + if (pvec == NULL) { + __i915_gem_userptr_set_active(obj, false); return -ENOMEM; + } } pinned = __get_user_pages_fast(obj->userptr.ptr, num_pages, !obj->userptr.read_only, pvec); } - if (pinned < num_pages) { - if (pinned < 0) { - ret = pinned; - pinned = 0; - } else { - /* Spawn a worker so that we can acquire the - * user pages without holding our mutex. Access - * to the user pages requires mmap_sem, and we have - * a strict lock ordering of mmap_sem, struct_mutex - - * we already hold struct_mutex here and so cannot - * call gup without encountering a lock inversion. - * - * Userspace will keep on repeating the operation - * (thanks to EAGAIN) until either we hit the fast - * path or the worker completes. If the worker is - * cancelled or superseded, the task is still run - * but the results ignored. (This leads to - * complications that we may have a stray object - * refcount that we need to be wary of when - * checking for existing objects during creation.) - * If the worker encounters an error, it reports - * that error back to this function through - * obj->userptr.work = ERR_PTR. - */ - ret = -EAGAIN; - if (obj->userptr.work == NULL && - obj->userptr.workers < I915_GEM_USERPTR_MAX_WORKERS) { - struct get_pages_work *work; - - work = kmalloc(sizeof(*work), GFP_KERNEL); - if (work != NULL) { - obj->userptr.work = &work->work; - obj->userptr.workers++; - - work->obj = obj; - drm_gem_object_reference(&obj->base); - - work->task = current; - get_task_struct(work->task); - - INIT_WORK(&work->work, __i915_gem_userptr_get_pages_worker); - schedule_work(&work->work); - } else - ret = -ENOMEM; - } else { - if (IS_ERR(obj->userptr.work)) { - ret = PTR_ERR(obj->userptr.work); - obj->userptr.work = NULL; - } - } - } - } else { + + active = false; + if (pinned < 0) + ret = pinned, pinned = 0; + else if (pinned < num_pages) + ret = __i915_gem_userptr_get_pages_schedule(obj, &active); + else ret = __i915_gem_userptr_set_pages(obj, pvec, num_pages); - if (ret == 0) { - obj->userptr.work = NULL; - pinned = 0; - } + if (ret) { + __i915_gem_userptr_set_active(obj, active); + release_pages(pvec, pinned, 0); } - - release_pages(pvec, pinned, 0); drm_free_large(pvec); return ret; } @@ -734,6 +776,7 @@ struct sg_page_iter sg_iter; BUG_ON(obj->userptr.work != NULL); + __i915_gem_userptr_set_active(obj, false); if (obj->madv != I915_MADV_WILLNEED) obj->dirty = 0; @@ -804,7 +847,10 @@ * Also note, that the object created here is not currently a "first class" * object, in that several ioctls are banned. These are the CPU access * ioctls: mmap(), pwrite and pread. In practice, you are expected to use - * direct access via your pointer rather than use those ioctls. + * direct access via your pointer rather than use those ioctls. Another + * restriction is that we do not allow userptr surfaces to be pinned to the + * hardware and so we reject any attempt to create a framebuffer out of a + * userptr. * * If you think this is a good interface to use to pass GPU memory between * drivers, please use dma-buf instead. In fact, wherever possible use --- linux-raspi2-4.2.0.orig/drivers/gpu/drm/i915/i915_irq.c +++ linux-raspi2-4.2.0/drivers/gpu/drm/i915/i915_irq.c @@ -61,6 +61,13 @@ [HPD_PORT_D] = SDE_PORTD_HOTPLUG_CPT }; +static const u32 hpd_spt[HPD_NUM_PINS] = { + [HPD_PORT_B] = SDE_PORTB_HOTPLUG_CPT, + [HPD_PORT_C] = SDE_PORTC_HOTPLUG_CPT, + [HPD_PORT_D] = SDE_PORTD_HOTPLUG_CPT, + [HPD_PORT_E] = SDE_PORTE_HOTPLUG_SPT +}; + static const u32 hpd_mask_i915[HPD_NUM_PINS] = { [HPD_CRT] = CRT_HOTPLUG_INT_EN, [HPD_SDVO_B] = SDVOB_HOTPLUG_INT_EN, @@ -832,23 +839,23 @@ static void i915_digport_work_func(struct work_struct *work) { struct drm_i915_private *dev_priv = - container_of(work, struct drm_i915_private, dig_port_work); + container_of(work, struct drm_i915_private, hotplug.dig_port_work); u32 long_port_mask, short_port_mask; struct intel_digital_port *intel_dig_port; int i; u32 old_bits = 0; spin_lock_irq(&dev_priv->irq_lock); - long_port_mask = dev_priv->long_hpd_port_mask; - dev_priv->long_hpd_port_mask = 0; - short_port_mask = dev_priv->short_hpd_port_mask; - dev_priv->short_hpd_port_mask = 0; + long_port_mask = dev_priv->hotplug.long_port_mask; + dev_priv->hotplug.long_port_mask = 0; + short_port_mask = dev_priv->hotplug.short_port_mask; + dev_priv->hotplug.short_port_mask = 0; spin_unlock_irq(&dev_priv->irq_lock); for (i = 0; i < I915_MAX_PORTS; i++) { bool valid = false; bool long_hpd = false; - intel_dig_port = dev_priv->hpd_irq_port[i]; + intel_dig_port = dev_priv->hotplug.irq_port[i]; if (!intel_dig_port || !intel_dig_port->hpd_pulse) continue; @@ -871,9 +878,9 @@ if (old_bits) { spin_lock_irq(&dev_priv->irq_lock); - dev_priv->hpd_event_bits |= old_bits; + dev_priv->hotplug.event_bits |= old_bits; spin_unlock_irq(&dev_priv->irq_lock); - schedule_work(&dev_priv->hotplug_work); + schedule_work(&dev_priv->hotplug.hotplug_work); } } @@ -885,7 +892,7 @@ static void i915_hotplug_work_func(struct work_struct *work) { struct drm_i915_private *dev_priv = - container_of(work, struct drm_i915_private, hotplug_work); + container_of(work, struct drm_i915_private, hotplug.hotplug_work); struct drm_device *dev = dev_priv->dev; struct drm_mode_config *mode_config = &dev->mode_config; struct intel_connector *intel_connector; @@ -900,20 +907,20 @@ spin_lock_irq(&dev_priv->irq_lock); - hpd_event_bits = dev_priv->hpd_event_bits; - dev_priv->hpd_event_bits = 0; + hpd_event_bits = dev_priv->hotplug.event_bits; + dev_priv->hotplug.event_bits = 0; list_for_each_entry(connector, &mode_config->connector_list, head) { intel_connector = to_intel_connector(connector); if (!intel_connector->encoder) continue; intel_encoder = intel_connector->encoder; if (intel_encoder->hpd_pin > HPD_NONE && - dev_priv->hpd_stats[intel_encoder->hpd_pin].hpd_mark == HPD_MARK_DISABLED && + dev_priv->hotplug.stats[intel_encoder->hpd_pin].state == HPD_MARK_DISABLED && connector->polled == DRM_CONNECTOR_POLL_HPD) { DRM_INFO("HPD interrupt storm detected on connector %s: " "switching from hotplug detection to polling\n", connector->name); - dev_priv->hpd_stats[intel_encoder->hpd_pin].hpd_mark = HPD_DISABLED; + dev_priv->hotplug.stats[intel_encoder->hpd_pin].state = HPD_DISABLED; connector->polled = DRM_CONNECTOR_POLL_CONNECT | DRM_CONNECTOR_POLL_DISCONNECT; hpd_disabled = true; @@ -928,7 +935,7 @@ * some connectors */ if (hpd_disabled) { drm_kms_helper_poll_enable(dev); - mod_delayed_work(system_wq, &dev_priv->hotplug_reenable_work, + mod_delayed_work(system_wq, &dev_priv->hotplug.reenable_work, msecs_to_jiffies(I915_REENABLE_HOTPLUG_DELAY)); } @@ -1375,35 +1382,33 @@ #define HPD_STORM_DETECT_PERIOD 1000 #define HPD_STORM_THRESHOLD 5 -static int pch_port_to_hotplug_shift(enum port port) +static bool pch_port_hotplug_long_detect(enum port port, u32 val) { switch (port) { - case PORT_A: - case PORT_E: - default: - return -1; case PORT_B: - return 0; + return val & PORTB_HOTPLUG_LONG_DETECT; case PORT_C: - return 8; + return val & PORTC_HOTPLUG_LONG_DETECT; case PORT_D: - return 16; + return val & PORTD_HOTPLUG_LONG_DETECT; + case PORT_E: + return val & PORTE_HOTPLUG_LONG_DETECT; + default: + return false; } } -static int i915_port_to_hotplug_shift(enum port port) +static bool i9xx_port_hotplug_long_detect(enum port port, u32 val) { switch (port) { - case PORT_A: - case PORT_E: - default: - return -1; case PORT_B: - return 17; + return val & PORTB_HOTPLUG_INT_LONG_PULSE; case PORT_C: - return 19; + return val & PORTC_HOTPLUG_INT_LONG_PULSE; case PORT_D: - return 21; + return val & PORTD_HOTPLUG_INT_LONG_PULSE; + default: + return false; } } @@ -1421,62 +1426,111 @@ } } +/* Get a bit mask of pins that have triggered, and which ones may be long. */ +static void pch_get_hpd_pins(u32 *pin_mask, u32 *long_mask, + u32 hotplug_trigger, u32 dig_hotplug_reg, const u32 hpd[HPD_NUM_PINS]) +{ + int i; + + *pin_mask = 0; + *long_mask = 0; + + for_each_hpd_pin(i) { + if (hpd[i] & hotplug_trigger) { + *pin_mask |= BIT(i); + + if (pch_port_hotplug_long_detect(get_port_from_pin(i), dig_hotplug_reg)) + *long_mask |= BIT(i); + } + } + + DRM_DEBUG_DRIVER("hotplug event received, stat 0x%08x, dig 0x%08x, pins 0x%08x\n", + hotplug_trigger, dig_hotplug_reg, *pin_mask); + +} + +/* Get a bit mask of pins that have triggered, and which ones may be long. */ +static void i9xx_get_hpd_pins(u32 *pin_mask, u32 *long_mask, + u32 hotplug_trigger, const u32 hpd[HPD_NUM_PINS]) +{ + int i; + + *pin_mask = 0; + *long_mask = 0; + + if (!hotplug_trigger) + return; + + for_each_hpd_pin(i) { + if (hpd[i] & hotplug_trigger) { + *pin_mask |= BIT(i); + + if (i9xx_port_hotplug_long_detect(get_port_from_pin(i), hotplug_trigger)) + *long_mask |= BIT(i); + } + } + + DRM_DEBUG_DRIVER("hotplug event received, stat 0x%08x, pins 0x%08x\n", + hotplug_trigger, *pin_mask); +} + +/** + * intel_hpd_irq_handler - main hotplug irq handler + * @dev: drm device + * @pin_mask: a mask of hpd pins that have triggered the irq + * @long_mask: a mask of hpd pins that may be long hpd pulses + * + * This is the main hotplug irq handler for all platforms. The platform specific + * irq handlers call the platform specific hotplug irq handlers, which read and + * decode the appropriate registers into bitmasks about hpd pins that have + * triggered (@pin_mask), and which of those pins may be long pulses + * (@long_mask). The @long_mask is ignored if the port corresponding to the pin + * is not a digital port. + * + * Here, we do hotplug irq storm detection and mitigation, and pass further + * processing to appropriate bottom halves. + */ static void intel_hpd_irq_handler(struct drm_device *dev, - u32 hotplug_trigger, - u32 dig_hotplug_reg, - const u32 hpd[HPD_NUM_PINS]) + u32 pin_mask, u32 long_mask) { struct drm_i915_private *dev_priv = dev->dev_private; int i; enum port port; bool storm_detected = false; bool queue_dig = false, queue_hp = false; - u32 dig_shift; - u32 dig_port_mask = 0; + bool is_dig_port; - if (!hotplug_trigger) + if (!pin_mask) return; - DRM_DEBUG_DRIVER("hotplug event received, stat 0x%08x, dig 0x%08x\n", - hotplug_trigger, dig_hotplug_reg); - spin_lock(&dev_priv->irq_lock); - for (i = 1; i < HPD_NUM_PINS; i++) { - if (!(hpd[i] & hotplug_trigger)) + for_each_hpd_pin(i) { + if (!(BIT(i) & pin_mask)) continue; port = get_port_from_pin(i); - if (port && dev_priv->hpd_irq_port[port]) { - bool long_hpd; + is_dig_port = port && dev_priv->hotplug.irq_port[port]; - if (!HAS_GMCH_DISPLAY(dev_priv)) { - dig_shift = pch_port_to_hotplug_shift(port); - long_hpd = (dig_hotplug_reg >> dig_shift) & PORTB_HOTPLUG_LONG_DETECT; - } else { - dig_shift = i915_port_to_hotplug_shift(port); - long_hpd = (hotplug_trigger >> dig_shift) & PORTB_HOTPLUG_LONG_DETECT; - } + if (is_dig_port) { + bool long_hpd = long_mask & BIT(i); - DRM_DEBUG_DRIVER("digital hpd port %c - %s\n", - port_name(port), + DRM_DEBUG_DRIVER("digital hpd port %c - %s\n", port_name(port), long_hpd ? "long" : "short"); - /* for long HPD pulses we want to have the digital queue happen, - but we still want HPD storm detection to function. */ + /* + * For long HPD pulses we want to have the digital queue happen, + * but we still want HPD storm detection to function. + */ + queue_dig = true; if (long_hpd) { - dev_priv->long_hpd_port_mask |= (1 << port); - dig_port_mask |= hpd[i]; + dev_priv->hotplug.long_port_mask |= (1 << port); } else { /* for short HPD just trigger the digital queue */ - dev_priv->short_hpd_port_mask |= (1 << port); - hotplug_trigger &= ~hpd[i]; + dev_priv->hotplug.short_port_mask |= (1 << port); + continue; } - queue_dig = true; } - } - for (i = 1; i < HPD_NUM_PINS; i++) { - if (hpd[i] & hotplug_trigger && - dev_priv->hpd_stats[i].hpd_mark == HPD_DISABLED) { + if (dev_priv->hotplug.stats[i].state == HPD_DISABLED) { /* * On GMCH platforms the interrupt mask bits only * prevent irq generation, not the setting of the @@ -1484,36 +1538,33 @@ * interrupts on saner platforms. */ WARN_ONCE(INTEL_INFO(dev)->gen >= 5 && !IS_VALLEYVIEW(dev), - "Received HPD interrupt (0x%08x) on pin %d (0x%08x) although disabled\n", - hotplug_trigger, i, hpd[i]); - + "Received HPD interrupt on pin %d although disabled\n", i); continue; } - if (!(hpd[i] & hotplug_trigger) || - dev_priv->hpd_stats[i].hpd_mark != HPD_ENABLED) + if (dev_priv->hotplug.stats[i].state != HPD_ENABLED) continue; - if (!(dig_port_mask & hpd[i])) { - dev_priv->hpd_event_bits |= (1 << i); + if (!is_dig_port) { + dev_priv->hotplug.event_bits |= BIT(i); queue_hp = true; } - if (!time_in_range(jiffies, dev_priv->hpd_stats[i].hpd_last_jiffies, - dev_priv->hpd_stats[i].hpd_last_jiffies + if (!time_in_range(jiffies, dev_priv->hotplug.stats[i].last_jiffies, + dev_priv->hotplug.stats[i].last_jiffies + msecs_to_jiffies(HPD_STORM_DETECT_PERIOD))) { - dev_priv->hpd_stats[i].hpd_last_jiffies = jiffies; - dev_priv->hpd_stats[i].hpd_cnt = 0; + dev_priv->hotplug.stats[i].last_jiffies = jiffies; + dev_priv->hotplug.stats[i].count = 0; DRM_DEBUG_KMS("Received HPD interrupt on PIN %d - cnt: 0\n", i); - } else if (dev_priv->hpd_stats[i].hpd_cnt > HPD_STORM_THRESHOLD) { - dev_priv->hpd_stats[i].hpd_mark = HPD_MARK_DISABLED; - dev_priv->hpd_event_bits &= ~(1 << i); + } else if (dev_priv->hotplug.stats[i].count > HPD_STORM_THRESHOLD) { + dev_priv->hotplug.stats[i].state = HPD_MARK_DISABLED; + dev_priv->hotplug.event_bits &= ~BIT(i); DRM_DEBUG_KMS("HPD interrupt storm detected on PIN %d\n", i); storm_detected = true; } else { - dev_priv->hpd_stats[i].hpd_cnt++; + dev_priv->hotplug.stats[i].count++; DRM_DEBUG_KMS("Received HPD interrupt on PIN %d - cnt: %d\n", i, - dev_priv->hpd_stats[i].hpd_cnt); + dev_priv->hotplug.stats[i].count); } } @@ -1528,9 +1579,9 @@ * deadlock. */ if (queue_dig) - queue_work(dev_priv->dp_wq, &dev_priv->dig_port_work); + queue_work(dev_priv->hotplug.dp_wq, &dev_priv->hotplug.dig_port_work); if (queue_hp) - schedule_work(&dev_priv->hotplug_work); + schedule_work(&dev_priv->hotplug.hotplug_work); } static void gmbus_irq_handler(struct drm_device *dev) @@ -1755,28 +1806,31 @@ { struct drm_i915_private *dev_priv = dev->dev_private; u32 hotplug_status = I915_READ(PORT_HOTPLUG_STAT); + u32 pin_mask, long_mask; - if (hotplug_status) { - I915_WRITE(PORT_HOTPLUG_STAT, hotplug_status); - /* - * Make sure hotplug status is cleared before we clear IIR, or else we - * may miss hotplug events. - */ - POSTING_READ(PORT_HOTPLUG_STAT); + if (!hotplug_status) + return; - if (IS_G4X(dev) || IS_VALLEYVIEW(dev)) { - u32 hotplug_trigger = hotplug_status & HOTPLUG_INT_STATUS_G4X; + I915_WRITE(PORT_HOTPLUG_STAT, hotplug_status); + /* + * Make sure hotplug status is cleared before we clear IIR, or else we + * may miss hotplug events. + */ + POSTING_READ(PORT_HOTPLUG_STAT); - intel_hpd_irq_handler(dev, hotplug_trigger, 0, hpd_status_g4x); - } else { - u32 hotplug_trigger = hotplug_status & HOTPLUG_INT_STATUS_I915; + if (IS_G4X(dev) || IS_VALLEYVIEW(dev)) { + u32 hotplug_trigger = hotplug_status & HOTPLUG_INT_STATUS_G4X; - intel_hpd_irq_handler(dev, hotplug_trigger, 0, hpd_status_i915); - } + i9xx_get_hpd_pins(&pin_mask, &long_mask, hotplug_trigger, hpd_status_g4x); + intel_hpd_irq_handler(dev, pin_mask, long_mask); - if ((IS_G4X(dev) || IS_VALLEYVIEW(dev)) && - hotplug_status & DP_AUX_CHANNEL_MASK_INT_STATUS_G4X) + if (hotplug_status & DP_AUX_CHANNEL_MASK_INT_STATUS_G4X) dp_aux_irq_handler(dev); + } else { + u32 hotplug_trigger = hotplug_status & HOTPLUG_INT_STATUS_I915; + + i9xx_get_hpd_pins(&pin_mask, &long_mask, hotplug_trigger, hpd_status_i915); + intel_hpd_irq_handler(dev, pin_mask, long_mask); } } @@ -1875,12 +1929,17 @@ struct drm_i915_private *dev_priv = dev->dev_private; int pipe; u32 hotplug_trigger = pch_iir & SDE_HOTPLUG_MASK; - u32 dig_hotplug_reg; - dig_hotplug_reg = I915_READ(PCH_PORT_HOTPLUG); - I915_WRITE(PCH_PORT_HOTPLUG, dig_hotplug_reg); + if (hotplug_trigger) { + u32 dig_hotplug_reg, pin_mask, long_mask; + + dig_hotplug_reg = I915_READ(PCH_PORT_HOTPLUG); + I915_WRITE(PCH_PORT_HOTPLUG, dig_hotplug_reg); - intel_hpd_irq_handler(dev, hotplug_trigger, dig_hotplug_reg, hpd_ibx); + pch_get_hpd_pins(&pin_mask, &long_mask, hotplug_trigger, + dig_hotplug_reg, hpd_ibx); + intel_hpd_irq_handler(dev, pin_mask, long_mask); + } if (pch_iir & SDE_AUDIO_POWER_MASK) { int port = ffs((pch_iir & SDE_AUDIO_POWER_MASK) >> @@ -1971,13 +2030,35 @@ { struct drm_i915_private *dev_priv = dev->dev_private; int pipe; - u32 hotplug_trigger = pch_iir & SDE_HOTPLUG_MASK_CPT; - u32 dig_hotplug_reg; + u32 hotplug_trigger; - dig_hotplug_reg = I915_READ(PCH_PORT_HOTPLUG); - I915_WRITE(PCH_PORT_HOTPLUG, dig_hotplug_reg); + if (HAS_PCH_SPT(dev)) + hotplug_trigger = pch_iir & SDE_HOTPLUG_MASK_SPT; + else + hotplug_trigger = pch_iir & SDE_HOTPLUG_MASK_CPT; - intel_hpd_irq_handler(dev, hotplug_trigger, dig_hotplug_reg, hpd_cpt); + if (hotplug_trigger) { + u32 dig_hotplug_reg, pin_mask, long_mask; + + dig_hotplug_reg = I915_READ(PCH_PORT_HOTPLUG); + I915_WRITE(PCH_PORT_HOTPLUG, dig_hotplug_reg); + if (HAS_PCH_SPT(dev)) { + pch_get_hpd_pins(&pin_mask, &long_mask, + hotplug_trigger, + dig_hotplug_reg, hpd_cpt); + + /* detect PORTE HP event */ + dig_hotplug_reg = I915_READ(PCH_PORT_HOTPLUG2); + if (pch_port_hotplug_long_detect(PORT_E, + dig_hotplug_reg)) + long_mask |= 1 << HPD_PORT_E; + } else + pch_get_hpd_pins(&pin_mask, &long_mask, + hotplug_trigger, + dig_hotplug_reg, hpd_cpt); + + intel_hpd_irq_handler(dev, pin_mask, long_mask); + } if (pch_iir & SDE_AUDIO_POWER_MASK_CPT) { int port = ffs((pch_iir & SDE_AUDIO_POWER_MASK_CPT) >> @@ -2176,8 +2257,8 @@ static void bxt_hpd_handler(struct drm_device *dev, uint32_t iir_status) { struct drm_i915_private *dev_priv = dev->dev_private; - uint32_t hp_control; - uint32_t hp_trigger; + u32 hp_control, hp_trigger; + u32 pin_mask, long_mask; /* Get the status */ hp_trigger = iir_status & BXT_DE_PORT_HOTPLUG_MASK; @@ -2193,7 +2274,8 @@ hp_control & BXT_HOTPLUG_CTL_MASK); /* Check for HPD storm and schedule bottom half */ - intel_hpd_irq_handler(dev, hp_trigger, hp_control, hpd_bxt); + pch_get_hpd_pins(&pin_mask, &long_mask, hp_trigger, hp_control, hpd_bxt); + intel_hpd_irq_handler(dev, pin_mask, long_mask); /* * FIXME: Save the hot plug status for bottom half before @@ -3203,12 +3285,17 @@ if (HAS_PCH_IBX(dev)) { hotplug_irqs = SDE_HOTPLUG_MASK; for_each_intel_encoder(dev, intel_encoder) - if (dev_priv->hpd_stats[intel_encoder->hpd_pin].hpd_mark == HPD_ENABLED) + if (dev_priv->hotplug.stats[intel_encoder->hpd_pin].state == HPD_ENABLED) enabled_irqs |= hpd_ibx[intel_encoder->hpd_pin]; + } else if (HAS_PCH_SPT(dev)) { + hotplug_irqs = SDE_HOTPLUG_MASK_SPT; + for_each_intel_encoder(dev, intel_encoder) + if (dev_priv->hotplug.stats[intel_encoder->hpd_pin].state == HPD_ENABLED) + enabled_irqs |= hpd_spt[intel_encoder->hpd_pin]; } else { hotplug_irqs = SDE_HOTPLUG_MASK_CPT; for_each_intel_encoder(dev, intel_encoder) - if (dev_priv->hpd_stats[intel_encoder->hpd_pin].hpd_mark == HPD_ENABLED) + if (dev_priv->hotplug.stats[intel_encoder->hpd_pin].state == HPD_ENABLED) enabled_irqs |= hpd_cpt[intel_encoder->hpd_pin]; } @@ -3226,6 +3313,13 @@ hotplug |= PORTC_HOTPLUG_ENABLE | PORTC_PULSE_DURATION_2ms; hotplug |= PORTB_HOTPLUG_ENABLE | PORTB_PULSE_DURATION_2ms; I915_WRITE(PCH_PORT_HOTPLUG, hotplug); + + /* enable SPT PORTE hot plug */ + if (HAS_PCH_SPT(dev)) { + hotplug = I915_READ(PCH_PORT_HOTPLUG2); + hotplug |= PORTE_HOTPLUG_ENABLE; + I915_WRITE(PCH_PORT_HOTPLUG2, hotplug); + } } static void bxt_hpd_irq_setup(struct drm_device *dev) @@ -3237,7 +3331,7 @@ /* Now, enable HPD */ for_each_intel_encoder(dev, intel_encoder) { - if (dev_priv->hpd_stats[intel_encoder->hpd_pin].hpd_mark + if (dev_priv->hotplug.stats[intel_encoder->hpd_pin].state == HPD_ENABLED) hotplug_port |= hpd_bxt[intel_encoder->hpd_pin]; } @@ -4130,7 +4224,7 @@ /* Note HDMI and DP share hotplug bits */ /* enable bits are the same for all generations */ for_each_intel_encoder(dev, intel_encoder) - if (dev_priv->hpd_stats[intel_encoder->hpd_pin].hpd_mark == HPD_ENABLED) + if (dev_priv->hotplug.stats[intel_encoder->hpd_pin].state == HPD_ENABLED) hotplug_en |= hpd_mask_i915[intel_encoder->hpd_pin]; /* Programming the CRT detection parameters tends to generate a spurious hotplug event about three @@ -4274,7 +4368,7 @@ { struct drm_i915_private *dev_priv = container_of(work, typeof(*dev_priv), - hotplug_reenable_work.work); + hotplug.reenable_work.work); struct drm_device *dev = dev_priv->dev; struct drm_mode_config *mode_config = &dev->mode_config; int i; @@ -4282,13 +4376,13 @@ intel_runtime_pm_get(dev_priv); spin_lock_irq(&dev_priv->irq_lock); - for (i = (HPD_NONE + 1); i < HPD_NUM_PINS; i++) { + for_each_hpd_pin(i) { struct drm_connector *connector; - if (dev_priv->hpd_stats[i].hpd_mark != HPD_DISABLED) + if (dev_priv->hotplug.stats[i].state != HPD_DISABLED) continue; - dev_priv->hpd_stats[i].hpd_mark = HPD_ENABLED; + dev_priv->hotplug.stats[i].state = HPD_ENABLED; list_for_each_entry(connector, &mode_config->connector_list, head) { struct intel_connector *intel_connector = to_intel_connector(connector); @@ -4321,8 +4415,8 @@ { struct drm_device *dev = dev_priv->dev; - INIT_WORK(&dev_priv->hotplug_work, i915_hotplug_work_func); - INIT_WORK(&dev_priv->dig_port_work, i915_digport_work_func); + INIT_WORK(&dev_priv->hotplug.hotplug_work, i915_hotplug_work_func); + INIT_WORK(&dev_priv->hotplug.dig_port_work, i915_digport_work_func); INIT_WORK(&dev_priv->rps.work, gen6_pm_rps_work); INIT_WORK(&dev_priv->l3_parity.error_work, ivybridge_parity_work); @@ -4335,7 +4429,7 @@ INIT_DELAYED_WORK(&dev_priv->gpu_error.hangcheck_work, i915_hangcheck_elapsed); - INIT_DELAYED_WORK(&dev_priv->hotplug_reenable_work, + INIT_DELAYED_WORK(&dev_priv->hotplug.reenable_work, intel_hpd_irq_reenable_work); pm_qos_add_request(&dev_priv->pm_qos, PM_QOS_CPU_DMA_LATENCY, PM_QOS_DEFAULT_VALUE); @@ -4440,9 +4534,9 @@ struct drm_connector *connector; int i; - for (i = 1; i < HPD_NUM_PINS; i++) { - dev_priv->hpd_stats[i].hpd_cnt = 0; - dev_priv->hpd_stats[i].hpd_mark = HPD_ENABLED; + for_each_hpd_pin(i) { + dev_priv->hotplug.stats[i].count = 0; + dev_priv->hotplug.stats[i].state = HPD_ENABLED; } list_for_each_entry(connector, &mode_config->connector_list, head) { struct intel_connector *intel_connector = to_intel_connector(connector); --- linux-raspi2-4.2.0.orig/drivers/gpu/drm/i915/i915_reg.h +++ linux-raspi2-4.2.0/drivers/gpu/drm/i915/i915_reg.h @@ -155,6 +155,7 @@ #define GAM_ECOCHK 0x4090 #define BDW_DISABLE_HDC_INVALIDATION (1<<25) #define ECOCHK_SNB_BIT (1<<10) +#define ECOCHK_DIS_TLB (1<<8) #define HSW_ECOCHK_ARB_PRIO_SOL (1<<6) #define ECOCHK_PPGTT_CACHE64B (0x3<<3) #define ECOCHK_PPGTT_CACHE4B (0x0<<3) @@ -347,6 +348,8 @@ #define MI_INVALIDATE_BSD (1<<7) #define MI_FLUSH_DW_USE_GTT (1<<2) #define MI_FLUSH_DW_USE_PPGTT (0<<2) +#define MI_LOAD_REGISTER_MEM(x) MI_INSTR(0x29, 2*(x)-1) +#define MI_LOAD_REGISTER_MEM_GEN8(x) MI_INSTR(0x29, 3*(x)-1) #define MI_BATCH_BUFFER MI_INSTR(0x30, 1) #define MI_BATCH_NON_SECURE (1) /* for snb/ivb/vlv this also means "batch in ppgtt" when ppgtt is enabled. */ @@ -410,6 +413,7 @@ #define DISPLAY_PLANE_A (0<<20) #define DISPLAY_PLANE_B (1<<20) #define GFX_OP_PIPE_CONTROL(len) ((0x3<<29)|(0x3<<27)|(0x2<<24)|(len-2)) +#define PIPE_CONTROL_FLUSH_L3 (1<<27) #define PIPE_CONTROL_GLOBAL_GTT_IVB (1<<24) /* gen7+ */ #define PIPE_CONTROL_MMIO_WRITE (1<<23) #define PIPE_CONTROL_STORE_DATA_INDEX (1<<21) @@ -426,6 +430,7 @@ #define PIPE_CONTROL_INDIRECT_STATE_DISABLE (1<<9) #define PIPE_CONTROL_NOTIFY (1<<8) #define PIPE_CONTROL_FLUSH_ENABLE (1<<7) /* gen7+ */ +#define PIPE_CONTROL_DC_FLUSH_ENABLE (1<<5) #define PIPE_CONTROL_VF_CACHE_INVALIDATE (1<<4) #define PIPE_CONTROL_CONST_CACHE_INVALIDATE (1<<3) #define PIPE_CONTROL_STATE_CACHE_INVALIDATE (1<<2) @@ -449,7 +454,6 @@ #define MI_CLFLUSH MI_INSTR(0x27, 0) #define MI_REPORT_PERF_COUNT MI_INSTR(0x28, 0) #define MI_REPORT_PERF_COUNT_GGTT (1<<0) -#define MI_LOAD_REGISTER_MEM MI_INSTR(0x29, 0) #define MI_LOAD_REGISTER_REG MI_INSTR(0x2A, 0) #define MI_RS_STORE_DATA_IMM MI_INSTR(0x2B, 0) #define MI_LOAD_URB_MEM MI_INSTR(0x2C, 0) @@ -1377,6 +1381,18 @@ _PORT_TX_DW14_LN0_C) + \ _BXT_LANE_OFFSET(lane)) +/* UAIMI scratch pad register 1 */ +#define UAIMI_SPR1 0x4F074 +/* SKL VccIO mask */ +#define SKL_VCCIO_MASK 0x1 +/* SKL balance leg register */ +#define DISPIO_CR_TX_BMU_CR0 0x6C00C +/* I_boost values */ +#define BALANCE_LEG_SHIFT(port) (8+3*(port)) +#define BALANCE_LEG_MASK(port) (7<<(8+3*(port))) +/* Balance leg disable bits */ +#define BALANCE_LEG_DISABLE_SHIFT 23 + /* * Fence registers */ @@ -5791,6 +5807,7 @@ #define GEN8_L3SQCREG4 0xb118 #define GEN8_LQSC_RO_PERF_DIS (1<<27) +#define GEN8_LQSC_FLUSH_COHERENT_LINES (1<<21) /* GEN8 chicken */ #define HDC_CHICKEN0 0x7300 @@ -5868,6 +5885,7 @@ #define SDE_AUXC_CPT (1 << 26) #define SDE_AUXB_CPT (1 << 25) #define SDE_AUX_MASK_CPT (7 << 25) +#define SDE_PORTE_HOTPLUG_SPT (1 << 25) #define SDE_PORTD_HOTPLUG_CPT (1 << 23) #define SDE_PORTC_HOTPLUG_CPT (1 << 22) #define SDE_PORTB_HOTPLUG_CPT (1 << 21) @@ -5878,6 +5896,10 @@ SDE_PORTD_HOTPLUG_CPT | \ SDE_PORTC_HOTPLUG_CPT | \ SDE_PORTB_HOTPLUG_CPT) +#define SDE_HOTPLUG_MASK_SPT (SDE_PORTE_HOTPLUG_SPT | \ + SDE_PORTD_HOTPLUG_CPT | \ + SDE_PORTC_HOTPLUG_CPT | \ + SDE_PORTB_HOTPLUG_CPT) #define SDE_GMBUS_CPT (1 << 17) #define SDE_ERROR_CPT (1 << 16) #define SDE_AUDIO_CP_REQ_C_CPT (1 << 10) @@ -5944,6 +5966,13 @@ #define PORTB_HOTPLUG_SHORT_DETECT (1 << 0) #define PORTB_HOTPLUG_LONG_DETECT (2 << 0) +#define PCH_PORT_HOTPLUG2 0xc403C /* SHOTPLUG_CTL2 */ +#define PORTE_HOTPLUG_ENABLE (1 << 4) +#define PORTE_HOTPLUG_STATUS_MASK (0x3 << 0) +#define PORTE_HOTPLUG_NO_DETECT (0 << 0) +#define PORTE_HOTPLUG_SHORT_DETECT (1 << 0) +#define PORTE_HOTPLUG_LONG_DETECT (2 << 0) + #define PCH_GPIOA 0xc5010 #define PCH_GPIOB 0xc5014 #define PCH_GPIOC 0xc5018 @@ -6756,6 +6785,9 @@ #define GEN7_MISCCPCTL (0x9424) #define GEN7_DOP_CLOCK_GATE_ENABLE (1<<0) +#define GEN8_GARBCNTL 0xB004 +#define GEN9_GAPS_TSV_CREDIT_DISABLE (1<<7) + /* IVYBRIDGE DPF */ #define GEN7_L3CDERRST1 0xB008 /* L3CD Error Status 1 */ #define HSW_L3CDERRST11 0xB208 /* L3CD Error Status register 1 slice 1 */ --- linux-raspi2-4.2.0.orig/drivers/gpu/drm/i915/intel_audio.c +++ linux-raspi2-4.2.0/drivers/gpu/drm/i915/intel_audio.c @@ -399,6 +399,9 @@ struct drm_connector *connector; struct drm_device *dev = encoder->dev; struct drm_i915_private *dev_priv = dev->dev_private; + struct i915_audio_component *acomp = dev_priv->audio_component; + struct intel_digital_port *intel_dig_port = enc_to_dig_port(encoder); + enum port port = intel_dig_port->port; connector = drm_select_eld(encoder, mode); if (!connector) @@ -419,6 +422,9 @@ if (dev_priv->display.audio_codec_enable) dev_priv->display.audio_codec_enable(connector, intel_encoder, mode); + + if (acomp && acomp->audio_ops && acomp->audio_ops->pin_eld_notify) + acomp->audio_ops->pin_eld_notify(acomp->audio_ops->audio_ptr, (int) port); } /** @@ -428,13 +434,20 @@ * The disable sequences must be performed before disabling the transcoder or * port. */ -void intel_audio_codec_disable(struct intel_encoder *encoder) +void intel_audio_codec_disable(struct intel_encoder *intel_encoder) { - struct drm_device *dev = encoder->base.dev; + struct drm_encoder *encoder = &intel_encoder->base; + struct drm_device *dev = encoder->dev; struct drm_i915_private *dev_priv = dev->dev_private; + struct i915_audio_component *acomp = dev_priv->audio_component; + struct intel_digital_port *intel_dig_port = enc_to_dig_port(encoder); + enum port port = intel_dig_port->port; if (dev_priv->display.audio_codec_disable) - dev_priv->display.audio_codec_disable(encoder); + dev_priv->display.audio_codec_disable(intel_encoder); + + if (acomp && acomp->audio_ops && acomp->audio_ops->pin_eld_notify) + acomp->audio_ops->pin_eld_notify(acomp->audio_ops->audio_ptr, (int) port); } /** @@ -525,12 +538,16 @@ struct device *hda_dev, void *data) { struct i915_audio_component *acomp = data; + struct drm_i915_private *dev_priv = dev_to_i915(i915_dev); if (WARN_ON(acomp->ops || acomp->dev)) return -EEXIST; + drm_modeset_lock_all(dev_priv->dev); acomp->ops = &i915_audio_component_ops; acomp->dev = i915_dev; + dev_priv->audio_component = acomp; + drm_modeset_unlock_all(dev_priv->dev); return 0; } @@ -539,9 +556,13 @@ struct device *hda_dev, void *data) { struct i915_audio_component *acomp = data; + struct drm_i915_private *dev_priv = dev_to_i915(i915_dev); + drm_modeset_lock_all(dev_priv->dev); acomp->ops = NULL; acomp->dev = NULL; + dev_priv->audio_component = NULL; + drm_modeset_unlock_all(dev_priv->dev); } static const struct component_ops i915_audio_component_bind_ops = { --- linux-raspi2-4.2.0.orig/drivers/gpu/drm/i915/intel_bios.c +++ linux-raspi2-4.2.0/drivers/gpu/drm/i915/intel_bios.c @@ -42,7 +42,7 @@ const struct bdb_header *bdb = _bdb; const u8 *base = _bdb; int index = 0; - u16 total, current_size; + u32 total, current_size; u8 current_id; /* skip to first section */ @@ -57,6 +57,10 @@ current_size = *((const u16 *)(base + index)); index += 2; + /* The MIPI Sequence Block v3+ has a separate size field. */ + if (current_id == BDB_MIPI_SEQUENCE && *(base + index) >= 3) + current_size = *((const u32 *)(base + index + 1)); + if (index + current_size > total) return NULL; @@ -461,7 +465,7 @@ { struct sdvo_device_mapping *p_mapping; const struct bdb_general_definitions *p_defs; - const union child_device_config *p_child; + const struct old_child_dev_config *child; /* legacy */ int i, child_device_num, count; u16 block_size; @@ -470,14 +474,14 @@ DRM_DEBUG_KMS("No general definition block is found, unable to construct sdvo mapping.\n"); return; } - /* judge whether the size of child device meets the requirements. - * If the child device size obtained from general definition block - * is different with sizeof(struct child_device_config), skip the - * parsing of sdvo device info + + /* + * Only parse SDVO mappings when the general definitions block child + * device size matches that of the *legacy* child device config + * struct. Thus, SDVO mapping will be skipped for newer VBT. */ - if (p_defs->child_dev_size != sizeof(*p_child)) { - /* different child dev size . Ignore it */ - DRM_DEBUG_KMS("different child size is found. Invalid.\n"); + if (p_defs->child_dev_size != sizeof(*child)) { + DRM_DEBUG_KMS("Unsupported child device size for SDVO mapping.\n"); return; } /* get the block size of general definitions */ @@ -487,37 +491,37 @@ p_defs->child_dev_size; count = 0; for (i = 0; i < child_device_num; i++) { - p_child = child_device_ptr(p_defs, i); - if (!p_child->old.device_type) { + child = &child_device_ptr(p_defs, i)->old; + if (!child->device_type) { /* skip the device block if device type is invalid */ continue; } - if (p_child->old.slave_addr != SLAVE_ADDR1 && - p_child->old.slave_addr != SLAVE_ADDR2) { + if (child->slave_addr != SLAVE_ADDR1 && + child->slave_addr != SLAVE_ADDR2) { /* * If the slave address is neither 0x70 nor 0x72, * it is not a SDVO device. Skip it. */ continue; } - if (p_child->old.dvo_port != DEVICE_PORT_DVOB && - p_child->old.dvo_port != DEVICE_PORT_DVOC) { + if (child->dvo_port != DEVICE_PORT_DVOB && + child->dvo_port != DEVICE_PORT_DVOC) { /* skip the incorrect SDVO port */ DRM_DEBUG_KMS("Incorrect SDVO port. Skip it\n"); continue; } DRM_DEBUG_KMS("the SDVO device with slave addr %2x is found on" - " %s port\n", - p_child->old.slave_addr, - (p_child->old.dvo_port == DEVICE_PORT_DVOB) ? - "SDVOB" : "SDVOC"); - p_mapping = &(dev_priv->sdvo_mappings[p_child->old.dvo_port - 1]); + " %s port\n", + child->slave_addr, + (child->dvo_port == DEVICE_PORT_DVOB) ? + "SDVOB" : "SDVOC"); + p_mapping = &(dev_priv->sdvo_mappings[child->dvo_port - 1]); if (!p_mapping->initialized) { - p_mapping->dvo_port = p_child->old.dvo_port; - p_mapping->slave_addr = p_child->old.slave_addr; - p_mapping->dvo_wiring = p_child->old.dvo_wiring; - p_mapping->ddc_pin = p_child->old.ddc_pin; - p_mapping->i2c_pin = p_child->old.i2c_pin; + p_mapping->dvo_port = child->dvo_port; + p_mapping->slave_addr = child->slave_addr; + p_mapping->dvo_wiring = child->dvo_wiring; + p_mapping->ddc_pin = child->ddc_pin; + p_mapping->i2c_pin = child->i2c_pin; p_mapping->initialized = 1; DRM_DEBUG_KMS("SDVO device: dvo=%x, addr=%x, wiring=%d, ddc_pin=%d, i2c_pin=%d\n", p_mapping->dvo_port, @@ -529,7 +533,7 @@ DRM_DEBUG_KMS("Maybe one SDVO port is shared by " "two SDVO device.\n"); } - if (p_child->old.slave2_addr) { + if (child->slave2_addr) { /* Maybe this is a SDVO device with multiple inputs */ /* And the mapping info is not added */ DRM_DEBUG_KMS("there exists the slave2_addr. Maybe this" @@ -859,6 +863,12 @@ return; } + /* Fail gracefully for forward incompatible sequence block. */ + if (sequence->version >= 3) { + DRM_ERROR("Unable to parse MIPI Sequence Block v3+\n"); + return; + } + DRM_DEBUG_DRIVER("Found MIPI sequence block\n"); block_size = get_blocksize(sequence); @@ -946,6 +956,17 @@ memset(dev_priv->vbt.dsi.sequence, 0, sizeof(dev_priv->vbt.dsi.sequence)); } +static u8 translate_iboost(u8 val) +{ + static const u8 mapping[] = { 1, 3, 7 }; /* See VBT spec */ + + if (val >= ARRAY_SIZE(mapping)) { + DRM_DEBUG_KMS("Unsupported I_boost value found in VBT (%d), display may not work properly\n", val); + return 0; + } + return mapping[val]; +} + static void parse_ddi_port(struct drm_i915_private *dev_priv, enum port port, const struct bdb_header *bdb) { @@ -954,23 +975,23 @@ uint8_t hdmi_level_shift; int i, j; bool is_dvi, is_hdmi, is_dp, is_edp, is_crt; - uint8_t aux_channel; + uint8_t aux_channel, ddc_pin; /* Each DDI port can have more than one value on the "DVO Port" field, * so look for all the possible values for each port and abort if more * than one is found. */ - int dvo_ports[][2] = { - {DVO_PORT_HDMIA, DVO_PORT_DPA}, - {DVO_PORT_HDMIB, DVO_PORT_DPB}, - {DVO_PORT_HDMIC, DVO_PORT_DPC}, - {DVO_PORT_HDMID, DVO_PORT_DPD}, - {DVO_PORT_CRT, -1 /* Port E can only be DVO_PORT_CRT */ }, + int dvo_ports[][3] = { + {DVO_PORT_HDMIA, DVO_PORT_DPA, -1}, + {DVO_PORT_HDMIB, DVO_PORT_DPB, -1}, + {DVO_PORT_HDMIC, DVO_PORT_DPC, -1}, + {DVO_PORT_HDMID, DVO_PORT_DPD, -1}, + {DVO_PORT_CRT, DVO_PORT_HDMIE, DVO_PORT_DPE}, }; /* Find the child device to use, abort if more than one found. */ for (i = 0; i < dev_priv->vbt.child_dev_num; i++) { it = dev_priv->vbt.child_dev + i; - for (j = 0; j < 2; j++) { + for (j = 0; j < 3; j++) { if (dvo_ports[port][j] == -1) break; @@ -988,6 +1009,7 @@ return; aux_channel = child->raw[25]; + ddc_pin = child->common.ddc_pin; is_dvi = child->common.device_type & DEVICE_TYPE_TMDS_DVI_SIGNALING; is_dp = child->common.device_type & DEVICE_TYPE_DISPLAYPORT_OUTPUT; @@ -1019,22 +1041,53 @@ DRM_DEBUG_KMS("Port %c is internal DP\n", port_name(port)); if (is_dvi) { - if (child->common.ddc_pin == 0x05 && port != PORT_B) + if (port == PORT_E) { + info->alternate_ddc_pin = ddc_pin; + /* if DDIE share ddc pin with other port, then + * dvi/hdmi couldn't exist on the shared port. + * Otherwise they share the same ddc bin and system + * couldn't communicate with them seperately. */ + if (ddc_pin == DDC_PIN_B) { + dev_priv->vbt.ddi_port_info[PORT_B].supports_dvi = 0; + dev_priv->vbt.ddi_port_info[PORT_B].supports_hdmi = 0; + } else if (ddc_pin == DDC_PIN_C) { + dev_priv->vbt.ddi_port_info[PORT_C].supports_dvi = 0; + dev_priv->vbt.ddi_port_info[PORT_C].supports_hdmi = 0; + } else if (ddc_pin == DDC_PIN_D) { + dev_priv->vbt.ddi_port_info[PORT_D].supports_dvi = 0; + dev_priv->vbt.ddi_port_info[PORT_D].supports_hdmi = 0; + } + } else if (ddc_pin == DDC_PIN_B && port != PORT_B) DRM_DEBUG_KMS("Unexpected DDC pin for port B\n"); - if (child->common.ddc_pin == 0x04 && port != PORT_C) + else if (ddc_pin == DDC_PIN_C && port != PORT_C) DRM_DEBUG_KMS("Unexpected DDC pin for port C\n"); - if (child->common.ddc_pin == 0x06 && port != PORT_D) + else if (ddc_pin == DDC_PIN_D && port != PORT_D) DRM_DEBUG_KMS("Unexpected DDC pin for port D\n"); } if (is_dp) { - if (aux_channel == 0x40 && port != PORT_A) + if (port == PORT_E) { + info->alternate_aux_channel = aux_channel; + /* if DDIE share aux channel with other port, then + * DP couldn't exist on the shared port. Otherwise + * they share the same aux channel and system + * couldn't communicate with them seperately. */ + if (aux_channel == DP_AUX_A) + dev_priv->vbt.ddi_port_info[PORT_A].supports_dp = 0; + else if (aux_channel == DP_AUX_B) + dev_priv->vbt.ddi_port_info[PORT_B].supports_dp = 0; + else if (aux_channel == DP_AUX_C) + dev_priv->vbt.ddi_port_info[PORT_C].supports_dp = 0; + else if (aux_channel == DP_AUX_D) + dev_priv->vbt.ddi_port_info[PORT_D].supports_dp = 0; + } + else if (aux_channel == DP_AUX_A && port != PORT_A) DRM_DEBUG_KMS("Unexpected AUX channel for port A\n"); - if (aux_channel == 0x10 && port != PORT_B) + else if (aux_channel == DP_AUX_B && port != PORT_B) DRM_DEBUG_KMS("Unexpected AUX channel for port B\n"); - if (aux_channel == 0x20 && port != PORT_C) + else if (aux_channel == DP_AUX_C && port != PORT_C) DRM_DEBUG_KMS("Unexpected AUX channel for port C\n"); - if (aux_channel == 0x30 && port != PORT_D) + else if (aux_channel == DP_AUX_D && port != PORT_D) DRM_DEBUG_KMS("Unexpected AUX channel for port D\n"); } @@ -1046,6 +1099,16 @@ hdmi_level_shift); info->hdmi_level_shift = hdmi_level_shift; } + + /* Parse the I_boost config for SKL and above */ + if (bdb->version >= 196 && (child->common.flags_1 & IBOOST_ENABLE)) { + info->dp_boost_level = translate_iboost(child->common.iboost_level & 0xF); + DRM_DEBUG_KMS("VBT (e)DP boost level for port %c: %d\n", + port_name(port), info->dp_boost_level); + info->hdmi_boost_level = translate_iboost(child->common.iboost_level >> 4); + DRM_DEBUG_KMS("VBT HDMI boost level for port %c: %d\n", + port_name(port), info->hdmi_boost_level); + } } static void parse_ddi_ports(struct drm_i915_private *dev_priv, @@ -1075,17 +1138,39 @@ const union child_device_config *p_child; union child_device_config *child_dev_ptr; int i, child_device_num, count; - u16 block_size; + u8 expected_size; + u16 block_size; p_defs = find_section(bdb, BDB_GENERAL_DEFINITIONS); if (!p_defs) { DRM_DEBUG_KMS("No general definition block is found, no devices defined.\n"); return; } - if (p_defs->child_dev_size < sizeof(*p_child)) { - DRM_ERROR("General definiton block child device size is too small.\n"); + if (bdb->version < 195) { + expected_size = sizeof(struct old_child_dev_config); + } else if (bdb->version == 195) { + expected_size = 37; + } else if (bdb->version <= 197) { + expected_size = 38; + } else { + expected_size = 38; + BUILD_BUG_ON(sizeof(*p_child) < 38); + DRM_DEBUG_DRIVER("Expected child device config size for VBT version %u not known; assuming %u\n", + bdb->version, expected_size); + } + + /* The legacy sized child device config is the minimum we need. */ + if (p_defs->child_dev_size < sizeof(struct old_child_dev_config)) { + DRM_ERROR("Child device config size %u is too small.\n", + p_defs->child_dev_size); return; } + + /* Flag an error for unexpected size, but continue anyway. */ + if (p_defs->child_dev_size != expected_size) + DRM_ERROR("Unexpected child device config size %u (expected %u for VBT version %u)\n", + p_defs->child_dev_size, expected_size, bdb->version); + /* get the block size of general definitions */ block_size = get_blocksize(p_defs); /* get the number of child device */ @@ -1130,7 +1215,14 @@ child_dev_ptr = dev_priv->vbt.child_dev + count; count++; - memcpy(child_dev_ptr, p_child, sizeof(*p_child)); + + /* + * Copy as much as we know (sizeof) and is available + * (child_dev_size) of the child device. Accessing the data must + * depend on VBT version. + */ + memcpy(child_dev_ptr, p_child, + min_t(size_t, p_defs->child_dev_size, sizeof(*p_child))); } return; } --- linux-raspi2-4.2.0.orig/drivers/gpu/drm/i915/intel_bios.h +++ linux-raspi2-4.2.0/drivers/gpu/drm/i915/intel_bios.h @@ -203,9 +203,11 @@ #define DEVICE_PORT_DVOB 0x01 #define DEVICE_PORT_DVOC 0x02 -/* We used to keep this struct but without any version control. We should avoid +/* + * We used to keep this struct but without any version control. We should avoid * using it in the future, but it should be safe to keep using it in the old - * code. */ + * code. Do not change; we rely on its size. + */ struct old_child_dev_config { u16 handle; u16 device_type; @@ -231,6 +233,10 @@ /* This one contains field offsets that are known to be common for all BDB * versions. Notice that the meaning of the contents contents may still change, * but at least the offsets are consistent. */ + +/* Definitions for flags_1 */ +#define IBOOST_ENABLE (1<<3) + struct common_child_dev_config { u16 handle; u16 device_type; @@ -239,8 +245,13 @@ u8 not_common2[2]; u8 ddc_pin; u16 edid_ptr; + u8 obsolete; + u8 flags_1; + u8 not_common3[13]; + u8 iboost_level; } __packed; + /* This field changes depending on the BDB version, so the most reliable way to * read it is by checking the BDB version and reading the raw pointer. */ union child_device_config { @@ -747,11 +758,6 @@ #define DVO_C 2 #define DVO_D 3 -/* define the PORT for DP output type */ -#define PORT_IDPB 7 -#define PORT_IDPC 8 -#define PORT_IDPD 9 - /* Possible values for the "DVO Port" field for versions >= 155: */ #define DVO_PORT_HDMIA 0 #define DVO_PORT_HDMIB 1 @@ -764,6 +770,8 @@ #define DVO_PORT_DPC 8 #define DVO_PORT_DPD 9 #define DVO_PORT_DPA 10 +#define DVO_PORT_DPE 11 +#define DVO_PORT_HDMIE 12 #define DVO_PORT_MIPIA 21 #define DVO_PORT_MIPIB 22 #define DVO_PORT_MIPIC 23 --- linux-raspi2-4.2.0.orig/drivers/gpu/drm/i915/intel_csr.c +++ linux-raspi2-4.2.0/drivers/gpu/drm/i915/intel_csr.c @@ -350,7 +350,7 @@ } csr->mmio_count = dmc_header->mmio_count; for (i = 0; i < dmc_header->mmio_count; i++) { - if (dmc_header->mmioaddr[i] < CSR_MMIO_START_RANGE && + if (dmc_header->mmioaddr[i] < CSR_MMIO_START_RANGE || dmc_header->mmioaddr[i] > CSR_MMIO_END_RANGE) { DRM_ERROR(" Firmware has wrong mmio address 0x%x\n", dmc_header->mmioaddr[i]); --- linux-raspi2-4.2.0.orig/drivers/gpu/drm/i915/intel_ddi.c +++ linux-raspi2-4.2.0/drivers/gpu/drm/i915/intel_ddi.c @@ -31,6 +31,7 @@ struct ddi_buf_trans { u32 trans1; /* balance leg enable, de-emph level */ u32 trans2; /* vref sel, vswing */ + u8 i_boost; /* SKL: I_boost; valid: 0x0, 0x1, 0x3, 0x7 */ }; /* HDMI/DVI modes ignore everything but the last 2 items. So we share @@ -38,134 +39,213 @@ * automatically adapt to HDMI connections as well */ static const struct ddi_buf_trans hsw_ddi_translations_dp[] = { - { 0x00FFFFFF, 0x0006000E }, - { 0x00D75FFF, 0x0005000A }, - { 0x00C30FFF, 0x00040006 }, - { 0x80AAAFFF, 0x000B0000 }, - { 0x00FFFFFF, 0x0005000A }, - { 0x00D75FFF, 0x000C0004 }, - { 0x80C30FFF, 0x000B0000 }, - { 0x00FFFFFF, 0x00040006 }, - { 0x80D75FFF, 0x000B0000 }, + { 0x00FFFFFF, 0x0006000E, 0x0 }, + { 0x00D75FFF, 0x0005000A, 0x0 }, + { 0x00C30FFF, 0x00040006, 0x0 }, + { 0x80AAAFFF, 0x000B0000, 0x0 }, + { 0x00FFFFFF, 0x0005000A, 0x0 }, + { 0x00D75FFF, 0x000C0004, 0x0 }, + { 0x80C30FFF, 0x000B0000, 0x0 }, + { 0x00FFFFFF, 0x00040006, 0x0 }, + { 0x80D75FFF, 0x000B0000, 0x0 }, }; static const struct ddi_buf_trans hsw_ddi_translations_fdi[] = { - { 0x00FFFFFF, 0x0007000E }, - { 0x00D75FFF, 0x000F000A }, - { 0x00C30FFF, 0x00060006 }, - { 0x00AAAFFF, 0x001E0000 }, - { 0x00FFFFFF, 0x000F000A }, - { 0x00D75FFF, 0x00160004 }, - { 0x00C30FFF, 0x001E0000 }, - { 0x00FFFFFF, 0x00060006 }, - { 0x00D75FFF, 0x001E0000 }, + { 0x00FFFFFF, 0x0007000E, 0x0 }, + { 0x00D75FFF, 0x000F000A, 0x0 }, + { 0x00C30FFF, 0x00060006, 0x0 }, + { 0x00AAAFFF, 0x001E0000, 0x0 }, + { 0x00FFFFFF, 0x000F000A, 0x0 }, + { 0x00D75FFF, 0x00160004, 0x0 }, + { 0x00C30FFF, 0x001E0000, 0x0 }, + { 0x00FFFFFF, 0x00060006, 0x0 }, + { 0x00D75FFF, 0x001E0000, 0x0 }, }; static const struct ddi_buf_trans hsw_ddi_translations_hdmi[] = { /* Idx NT mV d T mV d db */ - { 0x00FFFFFF, 0x0006000E }, /* 0: 400 400 0 */ - { 0x00E79FFF, 0x000E000C }, /* 1: 400 500 2 */ - { 0x00D75FFF, 0x0005000A }, /* 2: 400 600 3.5 */ - { 0x00FFFFFF, 0x0005000A }, /* 3: 600 600 0 */ - { 0x00E79FFF, 0x001D0007 }, /* 4: 600 750 2 */ - { 0x00D75FFF, 0x000C0004 }, /* 5: 600 900 3.5 */ - { 0x00FFFFFF, 0x00040006 }, /* 6: 800 800 0 */ - { 0x80E79FFF, 0x00030002 }, /* 7: 800 1000 2 */ - { 0x00FFFFFF, 0x00140005 }, /* 8: 850 850 0 */ - { 0x00FFFFFF, 0x000C0004 }, /* 9: 900 900 0 */ - { 0x00FFFFFF, 0x001C0003 }, /* 10: 950 950 0 */ - { 0x80FFFFFF, 0x00030002 }, /* 11: 1000 1000 0 */ + { 0x00FFFFFF, 0x0006000E, 0x0 },/* 0: 400 400 0 */ + { 0x00E79FFF, 0x000E000C, 0x0 },/* 1: 400 500 2 */ + { 0x00D75FFF, 0x0005000A, 0x0 },/* 2: 400 600 3.5 */ + { 0x00FFFFFF, 0x0005000A, 0x0 },/* 3: 600 600 0 */ + { 0x00E79FFF, 0x001D0007, 0x0 },/* 4: 600 750 2 */ + { 0x00D75FFF, 0x000C0004, 0x0 },/* 5: 600 900 3.5 */ + { 0x00FFFFFF, 0x00040006, 0x0 },/* 6: 800 800 0 */ + { 0x80E79FFF, 0x00030002, 0x0 },/* 7: 800 1000 2 */ + { 0x00FFFFFF, 0x00140005, 0x0 },/* 8: 850 850 0 */ + { 0x00FFFFFF, 0x000C0004, 0x0 },/* 9: 900 900 0 */ + { 0x00FFFFFF, 0x001C0003, 0x0 },/* 10: 950 950 0 */ + { 0x80FFFFFF, 0x00030002, 0x0 },/* 11: 1000 1000 0 */ }; static const struct ddi_buf_trans bdw_ddi_translations_edp[] = { - { 0x00FFFFFF, 0x00000012 }, - { 0x00EBAFFF, 0x00020011 }, - { 0x00C71FFF, 0x0006000F }, - { 0x00AAAFFF, 0x000E000A }, - { 0x00FFFFFF, 0x00020011 }, - { 0x00DB6FFF, 0x0005000F }, - { 0x00BEEFFF, 0x000A000C }, - { 0x00FFFFFF, 0x0005000F }, - { 0x00DB6FFF, 0x000A000C }, + { 0x00FFFFFF, 0x00000012, 0x0 }, + { 0x00EBAFFF, 0x00020011, 0x0 }, + { 0x00C71FFF, 0x0006000F, 0x0 }, + { 0x00AAAFFF, 0x000E000A, 0x0 }, + { 0x00FFFFFF, 0x00020011, 0x0 }, + { 0x00DB6FFF, 0x0005000F, 0x0 }, + { 0x00BEEFFF, 0x000A000C, 0x0 }, + { 0x00FFFFFF, 0x0005000F, 0x0 }, + { 0x00DB6FFF, 0x000A000C, 0x0 }, }; static const struct ddi_buf_trans bdw_ddi_translations_dp[] = { - { 0x00FFFFFF, 0x0007000E }, - { 0x00D75FFF, 0x000E000A }, - { 0x00BEFFFF, 0x00140006 }, - { 0x80B2CFFF, 0x001B0002 }, - { 0x00FFFFFF, 0x000E000A }, - { 0x00DB6FFF, 0x00160005 }, - { 0x80C71FFF, 0x001A0002 }, - { 0x00F7DFFF, 0x00180004 }, - { 0x80D75FFF, 0x001B0002 }, + { 0x00FFFFFF, 0x0007000E, 0x0 }, + { 0x00D75FFF, 0x000E000A, 0x0 }, + { 0x00BEFFFF, 0x00140006, 0x0 }, + { 0x80B2CFFF, 0x001B0002, 0x0 }, + { 0x00FFFFFF, 0x000E000A, 0x0 }, + { 0x00DB6FFF, 0x00160005, 0x0 }, + { 0x80C71FFF, 0x001A0002, 0x0 }, + { 0x00F7DFFF, 0x00180004, 0x0 }, + { 0x80D75FFF, 0x001B0002, 0x0 }, }; static const struct ddi_buf_trans bdw_ddi_translations_fdi[] = { - { 0x00FFFFFF, 0x0001000E }, - { 0x00D75FFF, 0x0004000A }, - { 0x00C30FFF, 0x00070006 }, - { 0x00AAAFFF, 0x000C0000 }, - { 0x00FFFFFF, 0x0004000A }, - { 0x00D75FFF, 0x00090004 }, - { 0x00C30FFF, 0x000C0000 }, - { 0x00FFFFFF, 0x00070006 }, - { 0x00D75FFF, 0x000C0000 }, + { 0x00FFFFFF, 0x0001000E, 0x0 }, + { 0x00D75FFF, 0x0004000A, 0x0 }, + { 0x00C30FFF, 0x00070006, 0x0 }, + { 0x00AAAFFF, 0x000C0000, 0x0 }, + { 0x00FFFFFF, 0x0004000A, 0x0 }, + { 0x00D75FFF, 0x00090004, 0x0 }, + { 0x00C30FFF, 0x000C0000, 0x0 }, + { 0x00FFFFFF, 0x00070006, 0x0 }, + { 0x00D75FFF, 0x000C0000, 0x0 }, }; static const struct ddi_buf_trans bdw_ddi_translations_hdmi[] = { /* Idx NT mV d T mV df db */ - { 0x00FFFFFF, 0x0007000E }, /* 0: 400 400 0 */ - { 0x00D75FFF, 0x000E000A }, /* 1: 400 600 3.5 */ - { 0x00BEFFFF, 0x00140006 }, /* 2: 400 800 6 */ - { 0x00FFFFFF, 0x0009000D }, /* 3: 450 450 0 */ - { 0x00FFFFFF, 0x000E000A }, /* 4: 600 600 0 */ - { 0x00D7FFFF, 0x00140006 }, /* 5: 600 800 2.5 */ - { 0x80CB2FFF, 0x001B0002 }, /* 6: 600 1000 4.5 */ - { 0x00FFFFFF, 0x00140006 }, /* 7: 800 800 0 */ - { 0x80E79FFF, 0x001B0002 }, /* 8: 800 1000 2 */ - { 0x80FFFFFF, 0x001B0002 }, /* 9: 1000 1000 0 */ + { 0x00FFFFFF, 0x0007000E, 0x0 },/* 0: 400 400 0 */ + { 0x00D75FFF, 0x000E000A, 0x0 },/* 1: 400 600 3.5 */ + { 0x00BEFFFF, 0x00140006, 0x0 },/* 2: 400 800 6 */ + { 0x00FFFFFF, 0x0009000D, 0x0 },/* 3: 450 450 0 */ + { 0x00FFFFFF, 0x000E000A, 0x0 },/* 4: 600 600 0 */ + { 0x00D7FFFF, 0x00140006, 0x0 },/* 5: 600 800 2.5 */ + { 0x80CB2FFF, 0x001B0002, 0x0 },/* 6: 600 1000 4.5 */ + { 0x00FFFFFF, 0x00140006, 0x0 },/* 7: 800 800 0 */ + { 0x80E79FFF, 0x001B0002, 0x0 },/* 8: 800 1000 2 */ + { 0x80FFFFFF, 0x001B0002, 0x0 },/* 9: 1000 1000 0 */ }; +/* Skylake H and S */ static const struct ddi_buf_trans skl_ddi_translations_dp[] = { - { 0x00000018, 0x000000a2 }, - { 0x00004014, 0x0000009B }, - { 0x00006012, 0x00000088 }, - { 0x00008010, 0x00000087 }, - { 0x00000018, 0x0000009B }, - { 0x00004014, 0x00000088 }, - { 0x00006012, 0x00000087 }, - { 0x00000018, 0x00000088 }, - { 0x00004014, 0x00000087 }, + { 0x00002016, 0x000000A0, 0x0 }, + { 0x00005012, 0x0000009B, 0x0 }, + { 0x00007011, 0x00000088, 0x0 }, + { 0x00009010, 0x000000C7, 0x0 }, + { 0x00002016, 0x0000009B, 0x0 }, + { 0x00005012, 0x00000088, 0x0 }, + { 0x00007011, 0x000000C7, 0x0 }, + { 0x00002016, 0x000000DF, 0x0 }, + { 0x00005012, 0x000000C7, 0x0 }, +}; + +/* Skylake U */ +static const struct ddi_buf_trans skl_u_ddi_translations_dp[] = { + { 0x0000201B, 0x000000A2, 0x0 }, + { 0x00005012, 0x00000088, 0x0 }, + { 0x00007011, 0x00000087, 0x0 }, + { 0x80009010, 0x000000C7, 0x1 }, /* Uses I_boost level 0x1 */ + { 0x0000201B, 0x0000009D, 0x0 }, + { 0x00005012, 0x000000C7, 0x0 }, + { 0x00007011, 0x000000C7, 0x0 }, + { 0x00002016, 0x00000088, 0x0 }, + { 0x00005012, 0x000000C7, 0x0 }, +}; + +/* Skylake Y */ +static const struct ddi_buf_trans skl_y_ddi_translations_dp[] = { + { 0x00000018, 0x000000A2, 0x0 }, + { 0x00005012, 0x00000088, 0x0 }, + { 0x00007011, 0x00000087, 0x0 }, + { 0x80009010, 0x000000C7, 0x3 }, /* Uses I_boost level 0x3 */ + { 0x00000018, 0x0000009D, 0x0 }, + { 0x00005012, 0x000000C7, 0x0 }, + { 0x00007011, 0x000000C7, 0x0 }, + { 0x00000018, 0x00000088, 0x0 }, + { 0x00005012, 0x000000C7, 0x0 }, }; -/* eDP 1.4 low vswing translation parameters */ +/* + * Skylake H and S + * eDP 1.4 low vswing translation parameters + */ static const struct ddi_buf_trans skl_ddi_translations_edp[] = { - { 0x00000018, 0x000000a8 }, - { 0x00002016, 0x000000ab }, - { 0x00006012, 0x000000a2 }, - { 0x00008010, 0x00000088 }, - { 0x00000018, 0x000000ab }, - { 0x00004014, 0x000000a2 }, - { 0x00006012, 0x000000a6 }, - { 0x00000018, 0x000000a2 }, - { 0x00005013, 0x0000009c }, - { 0x00000018, 0x00000088 }, + { 0x00000018, 0x000000A8, 0x0 }, + { 0x00004013, 0x000000A9, 0x0 }, + { 0x00007011, 0x000000A2, 0x0 }, + { 0x00009010, 0x0000009C, 0x0 }, + { 0x00000018, 0x000000A9, 0x0 }, + { 0x00006013, 0x000000A2, 0x0 }, + { 0x00007011, 0x000000A6, 0x0 }, + { 0x00000018, 0x000000AB, 0x0 }, + { 0x00007013, 0x0000009F, 0x0 }, + { 0x00000018, 0x000000DF, 0x0 }, }; +/* + * Skylake U + * eDP 1.4 low vswing translation parameters + */ +static const struct ddi_buf_trans skl_u_ddi_translations_edp[] = { + { 0x00000018, 0x000000A8, 0x0 }, + { 0x00004013, 0x000000A9, 0x0 }, + { 0x00007011, 0x000000A2, 0x0 }, + { 0x00009010, 0x0000009C, 0x0 }, + { 0x00000018, 0x000000A9, 0x0 }, + { 0x00006013, 0x000000A2, 0x0 }, + { 0x00007011, 0x000000A6, 0x0 }, + { 0x00002016, 0x000000AB, 0x0 }, + { 0x00005013, 0x0000009F, 0x0 }, + { 0x00000018, 0x000000DF, 0x0 }, +}; + +/* + * Skylake Y + * eDP 1.4 low vswing translation parameters + */ +static const struct ddi_buf_trans skl_y_ddi_translations_edp[] = { + { 0x00000018, 0x000000A8, 0x0 }, + { 0x00004013, 0x000000AB, 0x0 }, + { 0x00007011, 0x000000A4, 0x0 }, + { 0x00009010, 0x000000DF, 0x0 }, + { 0x00000018, 0x000000AA, 0x0 }, + { 0x00006013, 0x000000A4, 0x0 }, + { 0x00007011, 0x0000009D, 0x0 }, + { 0x00000018, 0x000000A0, 0x0 }, + { 0x00006012, 0x000000DF, 0x0 }, + { 0x00000018, 0x0000008A, 0x0 }, +}; +/* Skylake U, H and S */ static const struct ddi_buf_trans skl_ddi_translations_hdmi[] = { - { 0x00000018, 0x000000ac }, - { 0x00005012, 0x0000009d }, - { 0x00007011, 0x00000088 }, - { 0x00000018, 0x000000a1 }, - { 0x00000018, 0x00000098 }, - { 0x00004013, 0x00000088 }, - { 0x00006012, 0x00000087 }, - { 0x00000018, 0x000000df }, - { 0x00003015, 0x00000087 }, - { 0x00003015, 0x000000c7 }, - { 0x00000018, 0x000000c7 }, + { 0x00000018, 0x000000AC, 0x0 }, + { 0x00005012, 0x0000009D, 0x0 }, + { 0x00007011, 0x00000088, 0x0 }, + { 0x00000018, 0x000000A1, 0x0 }, + { 0x00000018, 0x00000098, 0x0 }, + { 0x00004013, 0x00000088, 0x0 }, + { 0x00006012, 0x00000087, 0x0 }, + { 0x00000018, 0x000000DF, 0x0 }, + { 0x00003015, 0x00000087, 0x0 }, /* Default */ + { 0x00003015, 0x000000C7, 0x0 }, + { 0x00000018, 0x000000C7, 0x0 }, +}; + +/* Skylake Y */ +static const struct ddi_buf_trans skl_y_ddi_translations_hdmi[] = { + { 0x00000018, 0x000000A1, 0x0 }, + { 0x00005012, 0x000000DF, 0x0 }, + { 0x00007011, 0x00000084, 0x0 }, + { 0x00000018, 0x000000A4, 0x0 }, + { 0x00000018, 0x0000009D, 0x0 }, + { 0x00004013, 0x00000080, 0x0 }, + { 0x00006013, 0x000000C7, 0x0 }, + { 0x00000018, 0x0000008A, 0x0 }, + { 0x00003015, 0x000000C7, 0x0 }, /* Default */ + { 0x80003015, 0x000000C7, 0x7 }, /* Uses I_boost level 0x7 */ + { 0x00000018, 0x000000C7, 0x0 }, }; struct bxt_ddi_buf_trans { @@ -181,16 +261,16 @@ */ static const struct bxt_ddi_buf_trans bxt_ddi_translations_dp[] = { /* Idx NT mV diff db */ - { 52, 0, 0, 128, true }, /* 0: 400 0 */ - { 78, 0, 0, 85, false }, /* 1: 400 3.5 */ - { 104, 0, 0, 64, false }, /* 2: 400 6 */ - { 154, 0, 0, 43, false }, /* 3: 400 9.5 */ - { 77, 0, 0, 128, false }, /* 4: 600 0 */ - { 116, 0, 0, 85, false }, /* 5: 600 3.5 */ - { 154, 0, 0, 64, false }, /* 6: 600 6 */ - { 102, 0, 0, 128, false }, /* 7: 800 0 */ - { 154, 0, 0, 85, false }, /* 8: 800 3.5 */ - { 154, 0x9A, 1, 128, false }, /* 9: 1200 0 */ + { 52, 0x9A, 0, 128, true }, /* 0: 400 0 */ + { 78, 0x9A, 0, 85, false }, /* 1: 400 3.5 */ + { 104, 0x9A, 0, 64, false }, /* 2: 400 6 */ + { 154, 0x9A, 0, 43, false }, /* 3: 400 9.5 */ + { 77, 0x9A, 0, 128, false }, /* 4: 600 0 */ + { 116, 0x9A, 0, 85, false }, /* 5: 600 3.5 */ + { 154, 0x9A, 0, 64, false }, /* 6: 600 6 */ + { 102, 0x9A, 0, 128, false }, /* 7: 800 0 */ + { 154, 0x9A, 0, 85, false }, /* 8: 800 3.5 */ + { 154, 0x9A, 1, 128, false }, /* 9: 1200 0 */ }; /* BSpec has 2 recommended values - entries 0 and 8. @@ -198,18 +278,21 @@ */ static const struct bxt_ddi_buf_trans bxt_ddi_translations_hdmi[] = { /* Idx NT mV diff db */ - { 52, 0, 0, 128, false }, /* 0: 400 0 */ - { 52, 0, 0, 85, false }, /* 1: 400 3.5 */ - { 52, 0, 0, 64, false }, /* 2: 400 6 */ - { 42, 0, 0, 43, false }, /* 3: 400 9.5 */ - { 77, 0, 0, 128, false }, /* 4: 600 0 */ - { 77, 0, 0, 85, false }, /* 5: 600 3.5 */ - { 77, 0, 0, 64, false }, /* 6: 600 6 */ - { 102, 0, 0, 128, false }, /* 7: 800 0 */ - { 102, 0, 0, 85, false }, /* 8: 800 3.5 */ + { 52, 0x9A, 0, 128, false }, /* 0: 400 0 */ + { 52, 0x9A, 0, 85, false }, /* 1: 400 3.5 */ + { 52, 0x9A, 0, 64, false }, /* 2: 400 6 */ + { 42, 0x9A, 0, 43, false }, /* 3: 400 9.5 */ + { 77, 0x9A, 0, 128, false }, /* 4: 600 0 */ + { 77, 0x9A, 0, 85, false }, /* 5: 600 3.5 */ + { 77, 0x9A, 0, 64, false }, /* 6: 600 6 */ + { 102, 0x9A, 0, 128, false }, /* 7: 800 0 */ + { 102, 0x9A, 0, 85, false }, /* 8: 800 3.5 */ { 154, 0x9A, 1, 128, true }, /* 9: 1200 0 */ }; +static void bxt_ddi_vswing_sequence(struct drm_device *dev, u32 level, + enum port port, int type); + static void ddi_get_encoder_port(struct intel_encoder *intel_encoder, struct intel_digital_port **dig_port, enum port *port) @@ -249,6 +332,77 @@ return intel_dig_port->hdmi.hdmi_reg; } +static const struct ddi_buf_trans *skl_get_buf_trans_dp(struct drm_device *dev, + int *n_entries) +{ + const struct ddi_buf_trans *ddi_translations; + + if (IS_SKL_ULX(dev)) { + ddi_translations = skl_y_ddi_translations_dp; + *n_entries = ARRAY_SIZE(skl_y_ddi_translations_dp); + } else if (IS_SKL_ULT(dev)) { + ddi_translations = skl_u_ddi_translations_dp; + *n_entries = ARRAY_SIZE(skl_u_ddi_translations_dp); + } else { + ddi_translations = skl_ddi_translations_dp; + *n_entries = ARRAY_SIZE(skl_ddi_translations_dp); + } + + return ddi_translations; +} + +static const struct ddi_buf_trans *skl_get_buf_trans_edp(struct drm_device *dev, + int *n_entries) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + const struct ddi_buf_trans *ddi_translations; + + if (IS_SKL_ULX(dev)) { + if (dev_priv->edp_low_vswing) { + ddi_translations = skl_y_ddi_translations_edp; + *n_entries = ARRAY_SIZE(skl_y_ddi_translations_edp); + } else { + ddi_translations = skl_y_ddi_translations_dp; + *n_entries = ARRAY_SIZE(skl_y_ddi_translations_dp); + } + } else if (IS_SKL_ULT(dev)) { + if (dev_priv->edp_low_vswing) { + ddi_translations = skl_u_ddi_translations_edp; + *n_entries = ARRAY_SIZE(skl_u_ddi_translations_edp); + } else { + ddi_translations = skl_u_ddi_translations_dp; + *n_entries = ARRAY_SIZE(skl_u_ddi_translations_dp); + } + } else { + if (dev_priv->edp_low_vswing) { + ddi_translations = skl_ddi_translations_edp; + *n_entries = ARRAY_SIZE(skl_ddi_translations_edp); + } else { + ddi_translations = skl_ddi_translations_dp; + *n_entries = ARRAY_SIZE(skl_ddi_translations_dp); + } + } + + return ddi_translations; +} + +static const struct ddi_buf_trans * +skl_get_buf_trans_hdmi(struct drm_device *dev, + int *n_entries) +{ + const struct ddi_buf_trans *ddi_translations; + + if (IS_SKL_ULX(dev)) { + ddi_translations = skl_y_ddi_translations_hdmi; + *n_entries = ARRAY_SIZE(skl_y_ddi_translations_hdmi); + } else { + ddi_translations = skl_ddi_translations_hdmi; + *n_entries = ARRAY_SIZE(skl_ddi_translations_hdmi); + } + + return ddi_translations; +} + /* * Starting with Haswell, DDI port buffers must be programmed with correct * values in advance. The buffer values are different for FDI and DP modes, @@ -261,6 +415,7 @@ { struct drm_i915_private *dev_priv = dev->dev_private; u32 reg; + u32 iboost_bit = 0; int i, n_hdmi_entries, n_dp_entries, n_edp_entries, hdmi_default_entry, size; int hdmi_level = dev_priv->vbt.ddi_port_info[port].hdmi_level_shift; @@ -280,19 +435,17 @@ return; } else if (IS_SKYLAKE(dev)) { ddi_translations_fdi = NULL; - ddi_translations_dp = skl_ddi_translations_dp; - n_dp_entries = ARRAY_SIZE(skl_ddi_translations_dp); - if (dev_priv->edp_low_vswing) { - ddi_translations_edp = skl_ddi_translations_edp; - n_edp_entries = ARRAY_SIZE(skl_ddi_translations_edp); - } else { - ddi_translations_edp = skl_ddi_translations_dp; - n_edp_entries = ARRAY_SIZE(skl_ddi_translations_dp); - } - - ddi_translations_hdmi = skl_ddi_translations_hdmi; - n_hdmi_entries = ARRAY_SIZE(skl_ddi_translations_hdmi); - hdmi_default_entry = 7; + ddi_translations_dp = + skl_get_buf_trans_dp(dev, &n_dp_entries); + ddi_translations_edp = + skl_get_buf_trans_edp(dev, &n_edp_entries); + ddi_translations_hdmi = + skl_get_buf_trans_hdmi(dev, &n_hdmi_entries); + hdmi_default_entry = 8; + /* If we're boosting the current, set bit 31 of trans1 */ + if (dev_priv->vbt.ddi_port_info[port].hdmi_boost_level || + dev_priv->vbt.ddi_port_info[port].dp_boost_level) + iboost_bit = 1<<31; } else if (IS_BROADWELL(dev)) { ddi_translations_fdi = bdw_ddi_translations_fdi; ddi_translations_dp = bdw_ddi_translations_dp; @@ -353,7 +506,7 @@ } for (i = 0, reg = DDI_BUF_TRANS(port); i < size; i++) { - I915_WRITE(reg, ddi_translations[i].trans1); + I915_WRITE(reg, ddi_translations[i].trans1 | iboost_bit); reg += 4; I915_WRITE(reg, ddi_translations[i].trans2); reg += 4; @@ -368,7 +521,7 @@ hdmi_level = hdmi_default_entry; /* Entry 9 is for HDMI: */ - I915_WRITE(reg, ddi_translations_hdmi[hdmi_level].trans1); + I915_WRITE(reg, ddi_translations_hdmi[hdmi_level].trans1 | iboost_bit); reg += 4; I915_WRITE(reg, ddi_translations_hdmi[hdmi_level].trans2); reg += 4; @@ -1293,17 +1446,14 @@ DPLL_CFGCR2_PDIV(wrpll_params.pdiv) | wrpll_params.central_freq; } else if (intel_encoder->type == INTEL_OUTPUT_DISPLAYPORT) { - struct drm_encoder *encoder = &intel_encoder->base; - struct intel_dp *intel_dp = enc_to_intel_dp(encoder); - - switch (intel_dp->link_bw) { - case DP_LINK_BW_1_62: + switch (crtc_state->port_clock / 2) { + case 81000: ctrl1 |= DPLL_CTRL1_LINK_RATE(DPLL_CTRL1_LINK_RATE_810, 0); break; - case DP_LINK_BW_2_7: + case 135000: ctrl1 |= DPLL_CTRL1_LINK_RATE(DPLL_CTRL1_LINK_RATE_1350, 0); break; - case DP_LINK_BW_5_4: + case 270000: ctrl1 |= DPLL_CTRL1_LINK_RATE(DPLL_CTRL1_LINK_RATE_2700, 0); break; } @@ -1334,6 +1484,7 @@ /* bxt clock parameters */ struct bxt_clk_div { + int clock; uint32_t p1; uint32_t p2; uint32_t m2_int; @@ -1343,14 +1494,14 @@ }; /* pre-calculated values for DP linkrates */ -static struct bxt_clk_div bxt_dp_clk_val[7] = { - /* 162 */ {4, 2, 32, 1677722, 1, 1}, - /* 270 */ {4, 1, 27, 0, 0, 1}, - /* 540 */ {2, 1, 27, 0, 0, 1}, - /* 216 */ {3, 2, 32, 1677722, 1, 1}, - /* 243 */ {4, 1, 24, 1258291, 1, 1}, - /* 324 */ {4, 1, 32, 1677722, 1, 1}, - /* 432 */ {3, 1, 32, 1677722, 1, 1} +static const struct bxt_clk_div bxt_dp_clk_val[] = { + {162000, 4, 2, 32, 1677722, 1, 1}, + {270000, 4, 1, 27, 0, 0, 1}, + {540000, 2, 1, 27, 0, 0, 1}, + {216000, 3, 2, 32, 1677722, 1, 1}, + {243000, 4, 1, 24, 1258291, 1, 1}, + {324000, 4, 1, 32, 1677722, 1, 1}, + {432000, 3, 1, 32, 1677722, 1, 1} }; static bool @@ -1390,22 +1541,14 @@ vco = best_clock.vco; } else if (intel_encoder->type == INTEL_OUTPUT_DISPLAYPORT || intel_encoder->type == INTEL_OUTPUT_EDP) { - struct drm_encoder *encoder = &intel_encoder->base; - struct intel_dp *intel_dp = enc_to_intel_dp(encoder); + int i; - switch (intel_dp->link_bw) { - case DP_LINK_BW_1_62: - clk_div = bxt_dp_clk_val[0]; - break; - case DP_LINK_BW_2_7: - clk_div = bxt_dp_clk_val[1]; - break; - case DP_LINK_BW_5_4: - clk_div = bxt_dp_clk_val[2]; - break; - default: - clk_div = bxt_dp_clk_val[0]; - DRM_ERROR("Unknown link rate\n"); + clk_div = bxt_dp_clk_val[0]; + for (i = 0; i < ARRAY_SIZE(bxt_dp_clk_val); ++i) { + if (bxt_dp_clk_val[i].clock == clock) { + clk_div = bxt_dp_clk_val[i]; + break; + } } vco = clock * 10 / 2 * clk_div.p1 * clk_div.p2; } @@ -1799,8 +1942,65 @@ TRANS_CLK_SEL_DISABLED); } -void bxt_ddi_vswing_sequence(struct drm_device *dev, u32 level, - enum port port, int type) +static void skl_ddi_set_iboost(struct drm_device *dev, u32 level, + enum port port, int type) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + const struct ddi_buf_trans *ddi_translations; + uint8_t iboost; + uint8_t dp_iboost, hdmi_iboost; + int n_entries; + u32 reg; + + /* VBT may override standard boost values */ + dp_iboost = dev_priv->vbt.ddi_port_info[port].dp_boost_level; + hdmi_iboost = dev_priv->vbt.ddi_port_info[port].hdmi_boost_level; + + if (type == INTEL_OUTPUT_DISPLAYPORT) { + if (dp_iboost) { + iboost = dp_iboost; + } else { + ddi_translations = skl_get_buf_trans_dp(dev, &n_entries); + iboost = ddi_translations[port].i_boost; + } + } else if (type == INTEL_OUTPUT_EDP) { + if (dp_iboost) { + iboost = dp_iboost; + } else { + ddi_translations = skl_get_buf_trans_edp(dev, &n_entries); + iboost = ddi_translations[port].i_boost; + } + } else if (type == INTEL_OUTPUT_HDMI) { + if (hdmi_iboost) { + iboost = hdmi_iboost; + } else { + ddi_translations = skl_get_buf_trans_hdmi(dev, &n_entries); + iboost = ddi_translations[port].i_boost; + } + } else { + return; + } + + /* Make sure that the requested I_boost is valid */ + if (iboost && iboost != 0x1 && iboost != 0x3 && iboost != 0x7) { + DRM_ERROR("Invalid I_boost value %u\n", iboost); + return; + } + + reg = I915_READ(DISPIO_CR_TX_BMU_CR0); + reg &= ~BALANCE_LEG_MASK(port); + reg &= ~(1 << (BALANCE_LEG_DISABLE_SHIFT + port)); + + if (iboost) + reg |= iboost << BALANCE_LEG_SHIFT(port); + else + reg |= 1 << (BALANCE_LEG_DISABLE_SHIFT + port); + + I915_WRITE(DISPIO_CR_TX_BMU_CR0, reg); +} + +static void bxt_ddi_vswing_sequence(struct drm_device *dev, u32 level, + enum port port, int type) { struct drm_i915_private *dev_priv = dev->dev_private; const struct bxt_ddi_buf_trans *ddi_translations; @@ -1860,6 +2060,73 @@ I915_WRITE(BXT_PORT_PCS_DW10_GRP(port), val); } +static uint32_t translate_signal_level(int signal_levels) +{ + uint32_t level; + + switch (signal_levels) { + default: + DRM_DEBUG_KMS("Unsupported voltage swing/pre-emphasis level: 0x%x\n", + signal_levels); + case DP_TRAIN_VOLTAGE_SWING_LEVEL_0 | DP_TRAIN_PRE_EMPH_LEVEL_0: + level = 0; + break; + case DP_TRAIN_VOLTAGE_SWING_LEVEL_0 | DP_TRAIN_PRE_EMPH_LEVEL_1: + level = 1; + break; + case DP_TRAIN_VOLTAGE_SWING_LEVEL_0 | DP_TRAIN_PRE_EMPH_LEVEL_2: + level = 2; + break; + case DP_TRAIN_VOLTAGE_SWING_LEVEL_0 | DP_TRAIN_PRE_EMPH_LEVEL_3: + level = 3; + break; + + case DP_TRAIN_VOLTAGE_SWING_LEVEL_1 | DP_TRAIN_PRE_EMPH_LEVEL_0: + level = 4; + break; + case DP_TRAIN_VOLTAGE_SWING_LEVEL_1 | DP_TRAIN_PRE_EMPH_LEVEL_1: + level = 5; + break; + case DP_TRAIN_VOLTAGE_SWING_LEVEL_1 | DP_TRAIN_PRE_EMPH_LEVEL_2: + level = 6; + break; + + case DP_TRAIN_VOLTAGE_SWING_LEVEL_2 | DP_TRAIN_PRE_EMPH_LEVEL_0: + level = 7; + break; + case DP_TRAIN_VOLTAGE_SWING_LEVEL_2 | DP_TRAIN_PRE_EMPH_LEVEL_1: + level = 8; + break; + + case DP_TRAIN_VOLTAGE_SWING_LEVEL_3 | DP_TRAIN_PRE_EMPH_LEVEL_0: + level = 9; + break; + } + + return level; +} + +uint32_t ddi_signal_levels(struct intel_dp *intel_dp) +{ + struct intel_digital_port *dport = dp_to_dig_port(intel_dp); + struct drm_device *dev = dport->base.base.dev; + struct intel_encoder *encoder = &dport->base; + uint8_t train_set = intel_dp->train_set[0]; + int signal_levels = train_set & (DP_TRAIN_VOLTAGE_SWING_MASK | + DP_TRAIN_PRE_EMPHASIS_MASK); + enum port port = dport->port; + uint32_t level; + + level = translate_signal_level(signal_levels); + + if (IS_SKYLAKE(dev)) + skl_ddi_set_iboost(dev, level, port, encoder->type); + else if (IS_BROXTON(dev)) + bxt_ddi_vswing_sequence(dev, level, port, encoder->type); + + return DDI_BUF_TRANS_SELECT(level); +} + static void intel_ddi_pre_enable(struct intel_encoder *intel_encoder) { struct drm_encoder *encoder = &intel_encoder->base; @@ -2793,10 +3060,9 @@ dev_priv->vbt.ddi_port_info[port].supports_hdmi); init_dp = dev_priv->vbt.ddi_port_info[port].supports_dp; if (!init_dp && !init_hdmi) { - DRM_DEBUG_KMS("VBT says port %c is not DVI/HDMI/DP compatible, assuming it is\n", + DRM_DEBUG_KMS("VBT says port %c is not DVI/HDMI/DP compatible, respect it\n", port_name(port)); - init_hdmi = true; - init_dp = true; + return; } intel_dig_port = kzalloc(sizeof(*intel_dig_port), GFP_KERNEL); @@ -2832,7 +3098,7 @@ goto err; intel_dig_port->hpd_pulse = intel_dp_hpd_pulse; - dev_priv->hpd_irq_port[port] = intel_dig_port; + dev_priv->hotplug.irq_port[port] = intel_dig_port; } /* In theory we don't need the encoder->type check, but leave it just in --- linux-raspi2-4.2.0.orig/drivers/gpu/drm/i915/intel_display.c +++ linux-raspi2-4.2.0/drivers/gpu/drm/i915/intel_display.c @@ -1106,6 +1106,9 @@ case PORT_D: bit = SDE_PORTD_HOTPLUG_CPT; break; + case PORT_E: + bit = SDE_PORTE_HOTPLUG_SPT; + break; default: return true; } @@ -1729,6 +1732,8 @@ I915_READ(DPLL(!crtc->pipe)) | DPLL_DVO_2X_MODE); } + I915_WRITE(reg, dpll); + /* Wait for the clocks to stabilize. */ POSTING_READ(reg); udelay(150); @@ -5252,6 +5257,8 @@ return POWER_DOMAIN_PORT_DDI_C_4_LANES; case PORT_D: return POWER_DOMAIN_PORT_DDI_D_4_LANES; + case PORT_E: + return POWER_DOMAIN_PORT_DDI_E_2_LANES; default: WARN_ON_ONCE(1); return POWER_DOMAIN_PORT_OTHER; @@ -5714,16 +5721,13 @@ /* enable PG1 and Misc I/O */ intel_display_power_get(dev_priv, POWER_DOMAIN_PLLS); - /* DPLL0 already enabed !? */ - if (I915_READ(LCPLL1_CTL) & LCPLL_PLL_ENABLE) { - DRM_DEBUG_DRIVER("DPLL0 already running\n"); - return; + /* DPLL0 not enabled (happens on early BIOS versions) */ + if (!(I915_READ(LCPLL1_CTL) & LCPLL_PLL_ENABLE)) { + /* enable DPLL0 */ + required_vco = skl_cdclk_get_vco(dev_priv->skl_boot_cdclk); + skl_dpll0_enable(dev_priv, required_vco); } - /* enable DPLL0 */ - required_vco = skl_cdclk_get_vco(dev_priv->skl_boot_cdclk); - skl_dpll0_enable(dev_priv, required_vco); - /* set CDCLK to the frequency the BIOS chose */ skl_set_cdclk(dev_priv, dev_priv->skl_boot_cdclk); @@ -13292,8 +13296,12 @@ intel_crtc->atomic.update_fbc = true; - if (intel_wm_need_update(plane, &state->base)) - intel_crtc->atomic.update_wm = true; + if (state->visible && !old_state->visible) + intel_crtc->atomic.update_wm_pre = true; + else if (!state->visible && old_state->visible) + intel_crtc->atomic.update_wm_post = true; + else if (intel_wm_need_update(plane, &state->base)) + intel_crtc->atomic.update_wm_pre = true; } if (INTEL_INFO(dev)->gen >= 9) { @@ -13390,7 +13398,7 @@ if (intel_crtc->atomic.pre_disable_primary) intel_pre_disable_primary(crtc); - if (intel_crtc->atomic.update_wm) + if (intel_crtc->atomic.update_wm_pre) intel_update_watermarks(crtc); intel_runtime_pm_get(dev_priv); @@ -13420,6 +13428,9 @@ intel_frontbuffer_flip(dev, intel_crtc->atomic.fb_bits); + if (intel_crtc->atomic.update_wm_post) + intel_update_watermarks(crtc); + if (intel_crtc->atomic.update_fbc) { mutex_lock(&dev->struct_mutex); intel_fbc_update(dev); @@ -13591,7 +13602,7 @@ finish: if (intel_crtc->active) { if (plane->state->crtc_w != state->base.crtc_w) - intel_crtc->atomic.update_wm = true; + intel_crtc->atomic.update_wm_post = true; intel_crtc->atomic.fb_bits |= INTEL_FRONTBUFFER_CURSOR(intel_crtc->pipe); @@ -13919,8 +13930,7 @@ */ found = I915_READ(DDI_BUF_CTL_A) & DDI_INIT_DISPLAY_DETECTED; /* WaIgnoreDDIAStrap: skl */ - if (found || - (IS_SKYLAKE(dev) && INTEL_REVID(dev) < SKL_REVID_D0)) + if (found || IS_SKYLAKE(dev)) intel_ddi_init(dev, PORT_A); /* DDI B, C and D detection is indicated by the SFUSE_STRAP @@ -13933,6 +13943,15 @@ intel_ddi_init(dev, PORT_C); if (found & SFUSE_STRAP_DDID_DETECTED) intel_ddi_init(dev, PORT_D); + /* + * On SKL we don't have a way to detect DDI-E so we rely on VBT. + */ + if (IS_SKYLAKE(dev) && + (dev_priv->vbt.ddi_port_info[PORT_E].supports_dp || + dev_priv->vbt.ddi_port_info[PORT_E].supports_dvi || + dev_priv->vbt.ddi_port_info[PORT_E].supports_hdmi)) + intel_ddi_init(dev, PORT_E); + } else if (HAS_PCH_SPLIT(dev)) { int found; dpd_is_edp = intel_dp_is_edp(dev, PORT_D); @@ -14070,6 +14089,11 @@ struct intel_framebuffer *intel_fb = to_intel_framebuffer(fb); struct drm_i915_gem_object *obj = intel_fb->obj; + if (obj->userptr.mm) { + DRM_DEBUG("attempting to use a userptr for a framebuffer, denied\n"); + return -EINVAL; + } + return drm_gem_handle_create(file, &obj->base, handle); } @@ -14585,6 +14609,9 @@ /* Dell Chromebook 11 */ { 0x0a06, 0x1028, 0x0a35, quirk_backlight_present }, + + /* Dell Chromebook 11 (2015 version) */ + { 0x0a16, 0x1028, 0x0a35, quirk_backlight_present }, }; static void intel_init_quirks(struct drm_device *dev) @@ -14665,6 +14692,24 @@ if (INTEL_INFO(dev)->num_pipes == 0) return; + /* + * There may be no VBT; and if the BIOS enabled SSC we can + * just keep using it to avoid unnecessary flicker. Whereas if the + * BIOS isn't using it, don't assume it will work even if the VBT + * indicates as much. + */ + if (HAS_PCH_IBX(dev) || HAS_PCH_CPT(dev)) { + bool bios_lvds_use_ssc = !!(I915_READ(PCH_DREF_CONTROL) & + DREF_SSC1_ENABLE); + + if (dev_priv->vbt.lvds_use_ssc != bios_lvds_use_ssc) { + DRM_DEBUG_KMS("SSC %sabled by BIOS, overriding VBT which says %sabled\n", + bios_lvds_use_ssc ? "en" : "dis", + dev_priv->vbt.lvds_use_ssc ? "en" : "dis"); + dev_priv->vbt.lvds_use_ssc = bios_lvds_use_ssc; + } + } + intel_init_display(dev); intel_init_audio(dev); @@ -15160,7 +15205,6 @@ void intel_modeset_gem_init(struct drm_device *dev) { - struct drm_i915_private *dev_priv = dev->dev_private; struct drm_crtc *c; struct drm_i915_gem_object *obj; int ret; @@ -15169,16 +15213,6 @@ intel_init_gt_powersave(dev); mutex_unlock(&dev->struct_mutex); - /* - * There may be no VBT; and if the BIOS enabled SSC we can - * just keep using it to avoid unnecessary flicker. Whereas if the - * BIOS isn't using it, don't assume it will work even if the VBT - * indicates as much. - */ - if (HAS_PCH_IBX(dev) || HAS_PCH_CPT(dev)) - dev_priv->vbt.lvds_use_ssc = !!(I915_READ(PCH_DREF_CONTROL) & - DREF_SSC1_ENABLE); - intel_modeset_init_hw(dev); intel_setup_overlay(dev); --- linux-raspi2-4.2.0.orig/drivers/gpu/drm/i915/intel_dp.c +++ linux-raspi2-4.2.0/drivers/gpu/drm/i915/intel_dp.c @@ -48,28 +48,28 @@ #define INTEL_DP_RESOLUTION_FAILSAFE (3 << INTEL_DP_RESOLUTION_SHIFT_MASK) struct dp_link_dpll { - int link_bw; + int clock; struct dpll dpll; }; static const struct dp_link_dpll gen4_dpll[] = { - { DP_LINK_BW_1_62, + { 162000, { .p1 = 2, .p2 = 10, .n = 2, .m1 = 23, .m2 = 8 } }, - { DP_LINK_BW_2_7, + { 270000, { .p1 = 1, .p2 = 10, .n = 1, .m1 = 14, .m2 = 2 } } }; static const struct dp_link_dpll pch_dpll[] = { - { DP_LINK_BW_1_62, + { 162000, { .p1 = 2, .p2 = 10, .n = 1, .m1 = 12, .m2 = 9 } }, - { DP_LINK_BW_2_7, + { 270000, { .p1 = 1, .p2 = 10, .n = 2, .m1 = 14, .m2 = 8 } } }; static const struct dp_link_dpll vlv_dpll[] = { - { DP_LINK_BW_1_62, + { 162000, { .p1 = 3, .p2 = 2, .n = 5, .m1 = 3, .m2 = 81 } }, - { DP_LINK_BW_2_7, + { 270000, { .p1 = 2, .p2 = 2, .n = 1, .m1 = 2, .m2 = 27 } } }; @@ -83,14 +83,16 @@ * m2 is stored in fixed point format using formula below * (m2_int << 22) | m2_fraction */ - { DP_LINK_BW_1_62, /* m2_int = 32, m2_fraction = 1677722 */ + { 162000, /* m2_int = 32, m2_fraction = 1677722 */ { .p1 = 4, .p2 = 2, .n = 1, .m1 = 2, .m2 = 0x819999a } }, - { DP_LINK_BW_2_7, /* m2_int = 27, m2_fraction = 0 */ + { 270000, /* m2_int = 27, m2_fraction = 0 */ { .p1 = 4, .p2 = 1, .n = 1, .m1 = 2, .m2 = 0x6c00000 } }, - { DP_LINK_BW_5_4, /* m2_int = 27, m2_fraction = 0 */ + { 540000, /* m2_int = 27, m2_fraction = 0 */ { .p1 = 2, .p2 = 1, .n = 1, .m1 = 2, .m2 = 0x6c00000 } } }; +static const int bxt_rates[] = { 162000, 216000, 243000, 270000, + 324000, 432000, 540000 }; static const int skl_rates[] = { 162000, 216000, 270000, 324000, 432000, 540000 }; static const int default_rates[] = { 162000, 270000, 540000 }; @@ -1016,11 +1018,34 @@ intel_dp_aux_init(struct intel_dp *intel_dp, struct intel_connector *connector) { struct drm_device *dev = intel_dp_to_dev(intel_dp); + struct drm_i915_private *dev_priv = dev->dev_private; struct intel_digital_port *intel_dig_port = dp_to_dig_port(intel_dp); enum port port = intel_dig_port->port; + struct ddi_vbt_port_info *info = &dev_priv->vbt.ddi_port_info[port]; const char *name = NULL; + uint32_t porte_aux_ctl_reg = DPA_AUX_CH_CTL; int ret; + /* On SKL we don't have Aux for port E so we rely on VBT to set + * a proper alternate aux channel. + */ + if (IS_SKYLAKE(dev) && port == PORT_E) { + switch (info->alternate_aux_channel) { + case DP_AUX_B: + porte_aux_ctl_reg = DPB_AUX_CH_CTL; + break; + case DP_AUX_C: + porte_aux_ctl_reg = DPC_AUX_CH_CTL; + break; + case DP_AUX_D: + porte_aux_ctl_reg = DPD_AUX_CH_CTL; + break; + case DP_AUX_A: + default: + porte_aux_ctl_reg = DPA_AUX_CH_CTL; + } + } + switch (port) { case PORT_A: intel_dp->aux_ch_ctl_reg = DPA_AUX_CH_CTL; @@ -1038,6 +1063,10 @@ intel_dp->aux_ch_ctl_reg = PCH_DPD_AUX_CH_CTL; name = "DPDDC-D"; break; + case PORT_E: + intel_dp->aux_ch_ctl_reg = porte_aux_ctl_reg; + name = "DPDDC-E"; + break; default: BUG(); } @@ -1051,7 +1080,7 @@ * * Skylake moves AUX_CTL back next to DDI_BUF_CTL, on the CPU. */ - if (!IS_HASWELL(dev) && !IS_BROADWELL(dev)) + if (!IS_HASWELL(dev) && !IS_BROADWELL(dev) && port != PORT_E) intel_dp->aux_ch_ctl_reg = intel_dp->output_reg + 0x10; intel_dp->aux.name = name; @@ -1089,7 +1118,7 @@ } static void -skl_edp_set_pll_config(struct intel_crtc_state *pipe_config, int link_clock) +skl_edp_set_pll_config(struct intel_crtc_state *pipe_config) { u32 ctrl1; @@ -1101,7 +1130,7 @@ pipe_config->dpll_hw_state.cfgcr2 = 0; ctrl1 = DPLL_CTRL1_OVERRIDE(SKL_DPLL0); - switch (link_clock / 2) { + switch (pipe_config->port_clock / 2) { case 81000: ctrl1 |= DPLL_CTRL1_LINK_RATE(DPLL_CTRL1_LINK_RATE_810, SKL_DPLL0); @@ -1134,20 +1163,20 @@ pipe_config->dpll_hw_state.ctrl1 = ctrl1; } -static void -hsw_dp_set_ddi_pll_sel(struct intel_crtc_state *pipe_config, int link_bw) +void +hsw_dp_set_ddi_pll_sel(struct intel_crtc_state *pipe_config) { memset(&pipe_config->dpll_hw_state, 0, sizeof(pipe_config->dpll_hw_state)); - switch (link_bw) { - case DP_LINK_BW_1_62: + switch (pipe_config->port_clock / 2) { + case 81000: pipe_config->ddi_pll_sel = PORT_CLK_SEL_LCPLL_810; break; - case DP_LINK_BW_2_7: + case 135000: pipe_config->ddi_pll_sel = PORT_CLK_SEL_LCPLL_1350; break; - case DP_LINK_BW_5_4: + case 270000: pipe_config->ddi_pll_sel = PORT_CLK_SEL_LCPLL_2700; break; } @@ -1182,23 +1211,29 @@ static int intel_dp_source_rates(struct drm_device *dev, const int **source_rates) { - if (IS_SKYLAKE(dev)) { + int size; + + if (IS_BROXTON(dev)) { + *source_rates = bxt_rates; + size = ARRAY_SIZE(bxt_rates); + } else if (IS_SKYLAKE(dev)) { *source_rates = skl_rates; - return ARRAY_SIZE(skl_rates); + size = ARRAY_SIZE(skl_rates); + } else { + *source_rates = default_rates; + size = ARRAY_SIZE(default_rates); } - *source_rates = default_rates; - /* This depends on the fact that 5.4 is last value in the array */ - if (intel_dp_source_supports_hbr2(dev)) - return (DP_LINK_BW_5_4 >> 3) + 1; - else - return (DP_LINK_BW_2_7 >> 3) + 1; + if (!intel_dp_source_supports_hbr2(dev)) + size--; + + return size; } static void intel_dp_set_clock(struct intel_encoder *encoder, - struct intel_crtc_state *pipe_config, int link_bw) + struct intel_crtc_state *pipe_config) { struct drm_device *dev = encoder->base.dev; const struct dp_link_dpll *divisor = NULL; @@ -1220,7 +1255,7 @@ if (divisor && count) { for (i = 0; i < count; i++) { - if (link_bw == divisor[i].link_bw) { + if (pipe_config->port_clock == divisor[i].clock) { pipe_config->dpll = divisor[i].dpll; pipe_config->clock_set = true; break; @@ -1494,13 +1529,13 @@ } if (IS_SKYLAKE(dev) && is_edp(intel_dp)) - skl_edp_set_pll_config(pipe_config, common_rates[clock]); + skl_edp_set_pll_config(pipe_config); else if (IS_BROXTON(dev)) /* handled in ddi */; else if (IS_HASWELL(dev) || IS_BROADWELL(dev)) - hsw_dp_set_ddi_pll_sel(pipe_config, intel_dp->link_bw); + hsw_dp_set_ddi_pll_sel(pipe_config); else - intel_dp_set_clock(encoder, pipe_config, intel_dp->link_bw); + intel_dp_set_clock(encoder, pipe_config); return true; } @@ -3418,92 +3453,6 @@ } } -/* Gen7.5's (HSW) DP voltage swing and pre-emphasis control */ -static uint32_t -hsw_signal_levels(uint8_t train_set) -{ - int signal_levels = train_set & (DP_TRAIN_VOLTAGE_SWING_MASK | - DP_TRAIN_PRE_EMPHASIS_MASK); - switch (signal_levels) { - case DP_TRAIN_VOLTAGE_SWING_LEVEL_0 | DP_TRAIN_PRE_EMPH_LEVEL_0: - return DDI_BUF_TRANS_SELECT(0); - case DP_TRAIN_VOLTAGE_SWING_LEVEL_0 | DP_TRAIN_PRE_EMPH_LEVEL_1: - return DDI_BUF_TRANS_SELECT(1); - case DP_TRAIN_VOLTAGE_SWING_LEVEL_0 | DP_TRAIN_PRE_EMPH_LEVEL_2: - return DDI_BUF_TRANS_SELECT(2); - case DP_TRAIN_VOLTAGE_SWING_LEVEL_0 | DP_TRAIN_PRE_EMPH_LEVEL_3: - return DDI_BUF_TRANS_SELECT(3); - - case DP_TRAIN_VOLTAGE_SWING_LEVEL_1 | DP_TRAIN_PRE_EMPH_LEVEL_0: - return DDI_BUF_TRANS_SELECT(4); - case DP_TRAIN_VOLTAGE_SWING_LEVEL_1 | DP_TRAIN_PRE_EMPH_LEVEL_1: - return DDI_BUF_TRANS_SELECT(5); - case DP_TRAIN_VOLTAGE_SWING_LEVEL_1 | DP_TRAIN_PRE_EMPH_LEVEL_2: - return DDI_BUF_TRANS_SELECT(6); - - case DP_TRAIN_VOLTAGE_SWING_LEVEL_2 | DP_TRAIN_PRE_EMPH_LEVEL_0: - return DDI_BUF_TRANS_SELECT(7); - case DP_TRAIN_VOLTAGE_SWING_LEVEL_2 | DP_TRAIN_PRE_EMPH_LEVEL_1: - return DDI_BUF_TRANS_SELECT(8); - - case DP_TRAIN_VOLTAGE_SWING_LEVEL_3 | DP_TRAIN_PRE_EMPH_LEVEL_0: - return DDI_BUF_TRANS_SELECT(9); - default: - DRM_DEBUG_KMS("Unsupported voltage swing/pre-emphasis level:" - "0x%x\n", signal_levels); - return DDI_BUF_TRANS_SELECT(0); - } -} - -static void bxt_signal_levels(struct intel_dp *intel_dp) -{ - struct intel_digital_port *dport = dp_to_dig_port(intel_dp); - enum port port = dport->port; - struct drm_device *dev = dport->base.base.dev; - struct intel_encoder *encoder = &dport->base; - uint8_t train_set = intel_dp->train_set[0]; - uint32_t level = 0; - - int signal_levels = train_set & (DP_TRAIN_VOLTAGE_SWING_MASK | - DP_TRAIN_PRE_EMPHASIS_MASK); - switch (signal_levels) { - default: - DRM_DEBUG_KMS("Unsupported voltage swing/pre-emph level\n"); - case DP_TRAIN_VOLTAGE_SWING_LEVEL_0 | DP_TRAIN_PRE_EMPH_LEVEL_0: - level = 0; - break; - case DP_TRAIN_VOLTAGE_SWING_LEVEL_0 | DP_TRAIN_PRE_EMPH_LEVEL_1: - level = 1; - break; - case DP_TRAIN_VOLTAGE_SWING_LEVEL_0 | DP_TRAIN_PRE_EMPH_LEVEL_2: - level = 2; - break; - case DP_TRAIN_VOLTAGE_SWING_LEVEL_0 | DP_TRAIN_PRE_EMPH_LEVEL_3: - level = 3; - break; - case DP_TRAIN_VOLTAGE_SWING_LEVEL_1 | DP_TRAIN_PRE_EMPH_LEVEL_0: - level = 4; - break; - case DP_TRAIN_VOLTAGE_SWING_LEVEL_1 | DP_TRAIN_PRE_EMPH_LEVEL_1: - level = 5; - break; - case DP_TRAIN_VOLTAGE_SWING_LEVEL_1 | DP_TRAIN_PRE_EMPH_LEVEL_2: - level = 6; - break; - case DP_TRAIN_VOLTAGE_SWING_LEVEL_2 | DP_TRAIN_PRE_EMPH_LEVEL_0: - level = 7; - break; - case DP_TRAIN_VOLTAGE_SWING_LEVEL_2 | DP_TRAIN_PRE_EMPH_LEVEL_1: - level = 8; - break; - case DP_TRAIN_VOLTAGE_SWING_LEVEL_3 | DP_TRAIN_PRE_EMPH_LEVEL_0: - level = 9; - break; - } - - bxt_ddi_vswing_sequence(dev, level, port, encoder->type); -} - /* Properly updates "DP" with the correct signal levels. */ static void intel_dp_set_signal_levels(struct intel_dp *intel_dp, uint32_t *DP) @@ -3511,22 +3460,20 @@ struct intel_digital_port *intel_dig_port = dp_to_dig_port(intel_dp); enum port port = intel_dig_port->port; struct drm_device *dev = intel_dig_port->base.base.dev; - uint32_t signal_levels, mask; + uint32_t signal_levels, mask = 0; uint8_t train_set = intel_dp->train_set[0]; - if (IS_BROXTON(dev)) { - signal_levels = 0; - bxt_signal_levels(intel_dp); - mask = 0; - } else if (HAS_DDI(dev)) { - signal_levels = hsw_signal_levels(train_set); - mask = DDI_BUF_EMP_MASK; + if (HAS_DDI(dev)) { + signal_levels = ddi_signal_levels(intel_dp); + + if (IS_BROXTON(dev)) + signal_levels = 0; + else + mask = DDI_BUF_EMP_MASK; } else if (IS_CHERRYVIEW(dev)) { signal_levels = chv_signal_levels(intel_dp); - mask = 0; } else if (IS_VALLEYVIEW(dev)) { signal_levels = vlv_signal_levels(intel_dp); - mask = 0; } else if (IS_GEN7(dev) && port == PORT_A) { signal_levels = gen7_edp_signal_levels(train_set); mask = EDP_LINK_TRAIN_VOL_EMP_MASK_IVB; @@ -4987,9 +4934,12 @@ intel_dp_probe_oui(intel_dp); - if (!intel_dp_probe_mst(intel_dp)) + if (!intel_dp_probe_mst(intel_dp)) { + drm_modeset_lock(&dev->mode_config.connection_mutex, NULL); + intel_dp_check_link_status(intel_dp); + drm_modeset_unlock(&dev->mode_config.connection_mutex); goto mst_fail; - + } } else { if (intel_dp->is_mst) { if (intel_dp_check_mst_status(intel_dp) == -EINVAL) @@ -4997,10 +4947,6 @@ } if (!intel_dp->is_mst) { - /* - * we'll check the link status via the normal hot plug path later - - * but for short hpds we should check it now - */ drm_modeset_lock(&dev->mode_config.connection_mutex, NULL); intel_dp_check_link_status(intel_dp); drm_modeset_unlock(&dev->mode_config.connection_mutex); @@ -5042,16 +4988,17 @@ return -1; } -/* check the VBT to see whether the eDP is on DP-D port */ +/* check the VBT to see whether the eDP is on another port */ bool intel_dp_is_edp(struct drm_device *dev, enum port port) { struct drm_i915_private *dev_priv = dev->dev_private; union child_device_config *p_child; int i; static const short port_mapping[] = { - [PORT_B] = PORT_IDPB, - [PORT_C] = PORT_IDPC, - [PORT_D] = PORT_IDPD, + [PORT_B] = DVO_PORT_DPB, + [PORT_C] = DVO_PORT_DPC, + [PORT_D] = DVO_PORT_DPD, + [PORT_E] = DVO_PORT_DPE, }; if (port == PORT_A) @@ -5833,6 +5780,9 @@ case PORT_D: intel_encoder->hpd_pin = HPD_PORT_D; break; + case PORT_E: + intel_encoder->hpd_pin = HPD_PORT_E; + break; default: BUG(); } @@ -5951,7 +5901,7 @@ intel_encoder->hot_plug = intel_dp_hot_plug; intel_dig_port->hpd_pulse = intel_dp_hpd_pulse; - dev_priv->hpd_irq_port[port] = intel_dig_port; + dev_priv->hotplug.irq_port[port] = intel_dig_port; if (!intel_dp_init_connector(intel_dig_port, intel_connector)) { drm_encoder_cleanup(encoder); @@ -5967,7 +5917,7 @@ /* disable MST */ for (i = 0; i < I915_MAX_PORTS; i++) { - struct intel_digital_port *intel_dig_port = dev_priv->hpd_irq_port[i]; + struct intel_digital_port *intel_dig_port = dev_priv->hotplug.irq_port[i]; if (!intel_dig_port) continue; @@ -5986,7 +5936,7 @@ int i; for (i = 0; i < I915_MAX_PORTS; i++) { - struct intel_digital_port *intel_dig_port = dev_priv->hpd_irq_port[i]; + struct intel_digital_port *intel_dig_port = dev_priv->hotplug.irq_port[i]; if (!intel_dig_port) continue; if (intel_dig_port->base.type == INTEL_OUTPUT_DISPLAYPORT) { --- linux-raspi2-4.2.0.orig/drivers/gpu/drm/i915/intel_dp_mst.c +++ linux-raspi2-4.2.0/drivers/gpu/drm/i915/intel_dp_mst.c @@ -33,6 +33,7 @@ static bool intel_dp_mst_compute_config(struct intel_encoder *encoder, struct intel_crtc_state *pipe_config) { + struct drm_device *dev = encoder->base.dev; struct intel_dp_mst_encoder *intel_mst = enc_to_mst(&encoder->base); struct intel_digital_port *intel_dig_port = intel_mst->primary; struct intel_dp *intel_dp = &intel_dig_port->dp; @@ -97,6 +98,10 @@ &pipe_config->dp_m_n); pipe_config->dp_m_n.tu = slots; + + if (IS_HASWELL(dev) || IS_BROADWELL(dev)) + hsw_dp_set_ddi_pll_sel(pipe_config); + return true; } --- linux-raspi2-4.2.0.orig/drivers/gpu/drm/i915/intel_drv.h +++ linux-raspi2-4.2.0/drivers/gpu/drm/i915/intel_drv.h @@ -487,7 +487,7 @@ bool disable_fbc; bool disable_ips; bool pre_disable_primary; - bool update_wm; + bool update_wm_pre, update_wm_post; unsigned disabled_planes; /* Sleepable operations to perform after commit */ @@ -940,8 +940,7 @@ void intel_ddi_clock_get(struct intel_encoder *encoder, struct intel_crtc_state *pipe_config); void intel_ddi_set_vc_payload_alloc(struct drm_crtc *crtc, bool state); -void bxt_ddi_vswing_sequence(struct drm_device *dev, u32 level, - enum port port, int type); +uint32_t ddi_signal_levels(struct intel_dp *intel_dp); /* intel_frontbuffer.c */ void intel_fb_obj_invalidate(struct drm_i915_gem_object *obj, @@ -1194,6 +1193,7 @@ void intel_edp_drrs_invalidate(struct drm_device *dev, unsigned frontbuffer_bits); void intel_edp_drrs_flush(struct drm_device *dev, unsigned frontbuffer_bits); +void hsw_dp_set_ddi_pll_sel(struct intel_crtc_state *pipe_config); /* intel_dp_mst.c */ int intel_dp_mst_encoder_init(struct intel_digital_port *intel_dig_port, int conn_id); --- linux-raspi2-4.2.0.orig/drivers/gpu/drm/i915/intel_dsi.c +++ linux-raspi2-4.2.0/drivers/gpu/drm/i915/intel_dsi.c @@ -1036,11 +1036,7 @@ intel_connector->unregister = intel_connector_unregister; /* Pipe A maps to MIPI DSI port A, pipe B maps to MIPI DSI port C */ - if (dev_priv->vbt.dsi.config->dual_link) { - /* XXX: does dual link work on either pipe? */ - intel_encoder->crtc_mask = (1 << PIPE_A); - intel_dsi->ports = ((1 << PORT_A) | (1 << PORT_C)); - } else if (dev_priv->vbt.dsi.port == DVO_PORT_MIPIA) { + if (dev_priv->vbt.dsi.port == DVO_PORT_MIPIA) { intel_encoder->crtc_mask = (1 << PIPE_A); intel_dsi->ports = (1 << PORT_A); } else if (dev_priv->vbt.dsi.port == DVO_PORT_MIPIC) { @@ -1048,6 +1044,9 @@ intel_dsi->ports = (1 << PORT_C); } + if (dev_priv->vbt.dsi.config->dual_link) + intel_dsi->ports = ((1 << PORT_A) | (1 << PORT_C)); + /* Create a DSI host (and a device) for each port. */ for_each_dsi_port(port, intel_dsi->ports) { struct intel_dsi_host *host; --- linux-raspi2-4.2.0.orig/drivers/gpu/drm/i915/intel_fbdev.c +++ linux-raspi2-4.2.0/drivers/gpu/drm/i915/intel_fbdev.c @@ -55,13 +55,6 @@ ret = drm_fb_helper_set_par(info); if (ret == 0) { - /* - * FIXME: fbdev presumes that all callbacks also work from - * atomic contexts and relies on that for emergency oops - * printing. KMS totally doesn't do that and the locking here is - * by far not the only place this goes wrong. Ignore this for - * now until we solve this for real. - */ mutex_lock(&fb_helper->dev->struct_mutex); ret = i915_gem_object_set_to_gtt_domain(ifbdev->fb->obj, true); @@ -81,13 +74,6 @@ ret = drm_fb_helper_blank(blank, info); if (ret == 0) { - /* - * FIXME: fbdev presumes that all callbacks also work from - * atomic contexts and relies on that for emergency oops - * printing. KMS totally doesn't do that and the locking here is - * by far not the only place this goes wrong. Ignore this for - * now until we solve this for real. - */ mutex_lock(&fb_helper->dev->struct_mutex); intel_fb_obj_invalidate(ifbdev->fb->obj, NULL, ORIGIN_GTT); mutex_unlock(&fb_helper->dev->struct_mutex); @@ -107,13 +93,6 @@ ret = drm_fb_helper_pan_display(var, info); if (ret == 0) { - /* - * FIXME: fbdev presumes that all callbacks also work from - * atomic contexts and relies on that for emergency oops - * printing. KMS totally doesn't do that and the locking here is - * by far not the only place this goes wrong. Ignore this for - * now until we solve this for real. - */ mutex_lock(&fb_helper->dev->struct_mutex); intel_fb_obj_invalidate(ifbdev->fb->obj, NULL, ORIGIN_GTT); mutex_unlock(&fb_helper->dev->struct_mutex); --- linux-raspi2-4.2.0.orig/drivers/gpu/drm/i915/intel_hdmi.c +++ linux-raspi2-4.2.0/drivers/gpu/drm/i915/intel_hdmi.c @@ -1702,6 +1702,7 @@ struct drm_device *dev = intel_encoder->base.dev; struct drm_i915_private *dev_priv = dev->dev_private; enum port port = intel_dig_port->port; + uint8_t alternate_ddc_pin; drm_connector_init(dev, connector, &intel_hdmi_connector_funcs, DRM_MODE_CONNECTOR_HDMIA); @@ -1735,6 +1736,26 @@ intel_hdmi->ddc_bus = GMBUS_PIN_DPD; intel_encoder->hpd_pin = HPD_PORT_D; break; + case PORT_E: + /* On SKL PORT E doesn't have seperate GMBUS pin + * We rely on VBT to set a proper alternate GMBUS pin. */ + alternate_ddc_pin = + dev_priv->vbt.ddi_port_info[PORT_E].alternate_ddc_pin; + switch (alternate_ddc_pin) { + case DDC_PIN_B: + intel_hdmi->ddc_bus = GMBUS_PIN_DPB; + break; + case DDC_PIN_C: + intel_hdmi->ddc_bus = GMBUS_PIN_DPC; + break; + case DDC_PIN_D: + intel_hdmi->ddc_bus = GMBUS_PIN_DPD; + break; + default: + MISSING_CASE(alternate_ddc_pin); + } + intel_encoder->hpd_pin = HPD_PORT_E; + break; case PORT_A: intel_encoder->hpd_pin = HPD_PORT_A; /* Internal port only for eDP. */ --- linux-raspi2-4.2.0.orig/drivers/gpu/drm/i915/intel_hotplug.c +++ linux-raspi2-4.2.0/drivers/gpu/drm/i915/intel_hotplug.c @@ -0,0 +1,508 @@ +/* + * Copyright © 2015 Intel Corporation + * + * 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 (including the next + * paragraph) 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 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. + */ + +#include + +#include +#include + +#include "i915_drv.h" +#include "intel_drv.h" + +/** + * DOC: Hotplug + * + * Simply put, hotplug occurs when a display is connected to or disconnected + * from the system. However, there may be adapters and docking stations and + * Display Port short pulses and MST devices involved, complicating matters. + * + * Hotplug in i915 is handled in many different levels of abstraction. + * + * The platform dependent interrupt handling code in i915_irq.c enables, + * disables, and does preliminary handling of the interrupts. The interrupt + * handlers gather the hotplug detect (HPD) information from relevant registers + * into a platform independent mask of hotplug pins that have fired. + * + * The platform independent interrupt handler intel_hpd_irq_handler() in + * intel_hotplug.c does hotplug irq storm detection and mitigation, and passes + * further processing to appropriate bottom halves (Display Port specific and + * regular hotplug). + * + * The Display Port work function i915_digport_work_func() calls into + * intel_dp_hpd_pulse() via hooks, which handles DP short pulses and DP MST long + * pulses, with failures and non-MST long pulses triggering regular hotplug + * processing on the connector. + * + * The regular hotplug work function i915_hotplug_work_func() calls connector + * detect hooks, and, if connector status changes, triggers sending of hotplug + * uevent to userspace via drm_kms_helper_hotplug_event(). + * + * Finally, the userspace is responsible for triggering a modeset upon receiving + * the hotplug uevent, disabling or enabling the crtc as needed. + * + * The hotplug interrupt storm detection and mitigation code keeps track of the + * number of interrupts per hotplug pin per a period of time, and if the number + * of interrupts exceeds a certain threshold, the interrupt is disabled for a + * while before being re-enabled. The intention is to mitigate issues raising + * from broken hardware triggering massive amounts of interrupts and grinding + * the system to a halt. + * + * Current implementation expects that hotplug interrupt storm will not be + * seen when display port sink is connected, hence on platforms whose DP + * callback is handled by i915_digport_work_func reenabling of hpd is not + * performed (it was never expected to be disabled in the first place ;) ) + * this is specific to DP sinks handled by this routine and any other display + * such as HDMI or DVI enabled on the same port will have proper logic since + * it will use i915_hotplug_work_func where this logic is handled. + */ + +bool intel_hpd_pin_to_port(enum hpd_pin pin, enum port *port) +{ + switch (pin) { + case HPD_PORT_A: + *port = PORT_A; + return true; + case HPD_PORT_B: + *port = PORT_B; + return true; + case HPD_PORT_C: + *port = PORT_C; + return true; + case HPD_PORT_D: + *port = PORT_D; + return true; + case HPD_PORT_E: + *port = PORT_E; + return true; + default: + return false; /* no hpd */ + } +} + +#define HPD_STORM_DETECT_PERIOD 1000 +#define HPD_STORM_THRESHOLD 5 +#define HPD_STORM_REENABLE_DELAY (2 * 60 * 1000) + +/** + * intel_hpd_irq_storm_detect - gather stats and detect HPD irq storm on a pin + * @dev_priv: private driver data pointer + * @pin: the pin to gather stats on + * + * Gather stats about HPD irqs from the specified @pin, and detect irq + * storms. Only the pin specific stats and state are changed, the caller is + * responsible for further action. + * + * @HPD_STORM_THRESHOLD irqs are allowed within @HPD_STORM_DETECT_PERIOD ms, + * otherwise it's considered an irq storm, and the irq state is set to + * @HPD_MARK_DISABLED. + * + * Return true if an irq storm was detected on @pin. + */ +static bool intel_hpd_irq_storm_detect(struct drm_i915_private *dev_priv, + enum hpd_pin pin) +{ + unsigned long start = dev_priv->hotplug.stats[pin].last_jiffies; + unsigned long end = start + msecs_to_jiffies(HPD_STORM_DETECT_PERIOD); + bool storm = false; + + if (!time_in_range(jiffies, start, end)) { + dev_priv->hotplug.stats[pin].last_jiffies = jiffies; + dev_priv->hotplug.stats[pin].count = 0; + DRM_DEBUG_KMS("Received HPD interrupt on PIN %d - cnt: 0\n", pin); + } else if (dev_priv->hotplug.stats[pin].count > HPD_STORM_THRESHOLD) { + dev_priv->hotplug.stats[pin].state = HPD_MARK_DISABLED; + DRM_DEBUG_KMS("HPD interrupt storm detected on PIN %d\n", pin); + storm = true; + } else { + dev_priv->hotplug.stats[pin].count++; + DRM_DEBUG_KMS("Received HPD interrupt on PIN %d - cnt: %d\n", pin, + dev_priv->hotplug.stats[pin].count); + } + + return storm; +} + +static void intel_hpd_irq_storm_disable(struct drm_i915_private *dev_priv) +{ + struct drm_device *dev = dev_priv->dev; + struct drm_mode_config *mode_config = &dev->mode_config; + struct intel_connector *intel_connector; + struct intel_encoder *intel_encoder; + struct drm_connector *connector; + enum hpd_pin pin; + bool hpd_disabled = false; + + assert_spin_locked(&dev_priv->irq_lock); + + list_for_each_entry(connector, &mode_config->connector_list, head) { + if (connector->polled != DRM_CONNECTOR_POLL_HPD) + continue; + + intel_connector = to_intel_connector(connector); + intel_encoder = intel_connector->encoder; + if (!intel_encoder) + continue; + + pin = intel_encoder->hpd_pin; + if (pin == HPD_NONE || + dev_priv->hotplug.stats[pin].state != HPD_MARK_DISABLED) + continue; + + DRM_INFO("HPD interrupt storm detected on connector %s: " + "switching from hotplug detection to polling\n", + connector->name); + + dev_priv->hotplug.stats[pin].state = HPD_DISABLED; + connector->polled = DRM_CONNECTOR_POLL_CONNECT + | DRM_CONNECTOR_POLL_DISCONNECT; + hpd_disabled = true; + } + + /* Enable polling and queue hotplug re-enabling. */ + if (hpd_disabled) { + drm_kms_helper_poll_enable(dev); + mod_delayed_work(system_wq, &dev_priv->hotplug.reenable_work, + msecs_to_jiffies(HPD_STORM_REENABLE_DELAY)); + } +} + +static void intel_hpd_irq_storm_reenable_work(struct work_struct *work) +{ + struct drm_i915_private *dev_priv = + container_of(work, typeof(*dev_priv), + hotplug.reenable_work.work); + struct drm_device *dev = dev_priv->dev; + struct drm_mode_config *mode_config = &dev->mode_config; + int i; + + intel_runtime_pm_get(dev_priv); + + spin_lock_irq(&dev_priv->irq_lock); + for_each_hpd_pin(i) { + struct drm_connector *connector; + + if (dev_priv->hotplug.stats[i].state != HPD_DISABLED) + continue; + + dev_priv->hotplug.stats[i].state = HPD_ENABLED; + + list_for_each_entry(connector, &mode_config->connector_list, head) { + struct intel_connector *intel_connector = to_intel_connector(connector); + + if (intel_connector->encoder->hpd_pin == i) { + if (connector->polled != intel_connector->polled) + DRM_DEBUG_DRIVER("Reenabling HPD on connector %s\n", + connector->name); + connector->polled = intel_connector->polled; + if (!connector->polled) + connector->polled = DRM_CONNECTOR_POLL_HPD; + } + } + } + if (dev_priv->display.hpd_irq_setup) + dev_priv->display.hpd_irq_setup(dev); + spin_unlock_irq(&dev_priv->irq_lock); + + intel_runtime_pm_put(dev_priv); +} + +static bool intel_hpd_irq_event(struct drm_device *dev, + struct drm_connector *connector) +{ + enum drm_connector_status old_status; + + WARN_ON(!mutex_is_locked(&dev->mode_config.mutex)); + old_status = connector->status; + + connector->status = connector->funcs->detect(connector, false); + if (old_status == connector->status) + return false; + + DRM_DEBUG_KMS("[CONNECTOR:%d:%s] status updated from %s to %s\n", + connector->base.id, + connector->name, + drm_get_connector_status_name(old_status), + drm_get_connector_status_name(connector->status)); + + return true; +} + +static void i915_digport_work_func(struct work_struct *work) +{ + struct drm_i915_private *dev_priv = + container_of(work, struct drm_i915_private, hotplug.dig_port_work); + u32 long_port_mask, short_port_mask; + struct intel_digital_port *intel_dig_port; + int i; + u32 old_bits = 0; + + spin_lock_irq(&dev_priv->irq_lock); + long_port_mask = dev_priv->hotplug.long_port_mask; + dev_priv->hotplug.long_port_mask = 0; + short_port_mask = dev_priv->hotplug.short_port_mask; + dev_priv->hotplug.short_port_mask = 0; + spin_unlock_irq(&dev_priv->irq_lock); + + for (i = 0; i < I915_MAX_PORTS; i++) { + bool valid = false; + bool long_hpd = false; + intel_dig_port = dev_priv->hotplug.irq_port[i]; + if (!intel_dig_port || !intel_dig_port->hpd_pulse) + continue; + + if (long_port_mask & (1 << i)) { + valid = true; + long_hpd = true; + } else if (short_port_mask & (1 << i)) + valid = true; + + if (valid) { + enum irqreturn ret; + + ret = intel_dig_port->hpd_pulse(intel_dig_port, long_hpd); + if (ret == IRQ_NONE) { + /* fall back to old school hpd */ + old_bits |= (1 << intel_dig_port->base.hpd_pin); + } + } + } + + if (old_bits) { + spin_lock_irq(&dev_priv->irq_lock); + dev_priv->hotplug.event_bits |= old_bits; + spin_unlock_irq(&dev_priv->irq_lock); + schedule_work(&dev_priv->hotplug.hotplug_work); + } +} + +/* + * Handle hotplug events outside the interrupt handler proper. + */ +static void i915_hotplug_work_func(struct work_struct *work) +{ + struct drm_i915_private *dev_priv = + container_of(work, struct drm_i915_private, hotplug.hotplug_work); + struct drm_device *dev = dev_priv->dev; + struct drm_mode_config *mode_config = &dev->mode_config; + struct intel_connector *intel_connector; + struct intel_encoder *intel_encoder; + struct drm_connector *connector; + bool changed = false; + u32 hpd_event_bits; + + mutex_lock(&mode_config->mutex); + DRM_DEBUG_KMS("running encoder hotplug functions\n"); + + spin_lock_irq(&dev_priv->irq_lock); + + hpd_event_bits = dev_priv->hotplug.event_bits; + dev_priv->hotplug.event_bits = 0; + + /* Disable hotplug on connectors that hit an irq storm. */ + intel_hpd_irq_storm_disable(dev_priv); + + spin_unlock_irq(&dev_priv->irq_lock); + + list_for_each_entry(connector, &mode_config->connector_list, head) { + intel_connector = to_intel_connector(connector); + if (!intel_connector->encoder) + continue; + intel_encoder = intel_connector->encoder; + if (hpd_event_bits & (1 << intel_encoder->hpd_pin)) { + DRM_DEBUG_KMS("Connector %s (pin %i) received hotplug event.\n", + connector->name, intel_encoder->hpd_pin); + if (intel_encoder->hot_plug) + intel_encoder->hot_plug(intel_encoder); + if (intel_hpd_irq_event(dev, connector)) + changed = true; + } + } + mutex_unlock(&mode_config->mutex); + + if (changed) + drm_kms_helper_hotplug_event(dev); +} + + +/** + * intel_hpd_irq_handler - main hotplug irq handler + * @dev: drm device + * @pin_mask: a mask of hpd pins that have triggered the irq + * @long_mask: a mask of hpd pins that may be long hpd pulses + * + * This is the main hotplug irq handler for all platforms. The platform specific + * irq handlers call the platform specific hotplug irq handlers, which read and + * decode the appropriate registers into bitmasks about hpd pins that have + * triggered (@pin_mask), and which of those pins may be long pulses + * (@long_mask). The @long_mask is ignored if the port corresponding to the pin + * is not a digital port. + * + * Here, we do hotplug irq storm detection and mitigation, and pass further + * processing to appropriate bottom halves. + */ +void intel_hpd_irq_handler(struct drm_device *dev, + u32 pin_mask, u32 long_mask) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + int i; + enum port port; + bool storm_detected = false; + bool queue_dig = false, queue_hp = false; + bool is_dig_port; + + if (!pin_mask) + return; + + spin_lock(&dev_priv->irq_lock); + for_each_hpd_pin(i) { + if (!(BIT(i) & pin_mask)) + continue; + + is_dig_port = intel_hpd_pin_to_port(i, &port) && + dev_priv->hotplug.irq_port[port]; + + if (is_dig_port) { + bool long_hpd = long_mask & BIT(i); + + DRM_DEBUG_DRIVER("digital hpd port %c - %s\n", port_name(port), + long_hpd ? "long" : "short"); + /* + * For long HPD pulses we want to have the digital queue happen, + * but we still want HPD storm detection to function. + */ + queue_dig = true; + if (long_hpd) { + dev_priv->hotplug.long_port_mask |= (1 << port); + } else { + /* for short HPD just trigger the digital queue */ + dev_priv->hotplug.short_port_mask |= (1 << port); + continue; + } + } + + if (dev_priv->hotplug.stats[i].state == HPD_DISABLED) { + /* + * On GMCH platforms the interrupt mask bits only + * prevent irq generation, not the setting of the + * hotplug bits itself. So only WARN about unexpected + * interrupts on saner platforms. + */ + WARN_ONCE(INTEL_INFO(dev)->gen >= 5 && !IS_VALLEYVIEW(dev), + "Received HPD interrupt on pin %d although disabled\n", i); + continue; + } + + if (dev_priv->hotplug.stats[i].state != HPD_ENABLED) + continue; + + if (!is_dig_port) { + dev_priv->hotplug.event_bits |= BIT(i); + queue_hp = true; + } + + if (intel_hpd_irq_storm_detect(dev_priv, i)) { + dev_priv->hotplug.event_bits &= ~BIT(i); + storm_detected = true; + } + } + + if (storm_detected) + dev_priv->display.hpd_irq_setup(dev); + spin_unlock(&dev_priv->irq_lock); + + /* + * Our hotplug handler can grab modeset locks (by calling down into the + * fb helpers). Hence it must not be run on our own dev-priv->wq work + * queue for otherwise the flush_work in the pageflip code will + * deadlock. + */ + if (queue_dig) + queue_work(dev_priv->hotplug.dp_wq, &dev_priv->hotplug.dig_port_work); + if (queue_hp) + schedule_work(&dev_priv->hotplug.hotplug_work); +} + +/** + * intel_hpd_init - initializes and enables hpd support + * @dev_priv: i915 device instance + * + * This function enables the hotplug support. It requires that interrupts have + * already been enabled with intel_irq_init_hw(). From this point on hotplug and + * poll request can run concurrently to other code, so locking rules must be + * obeyed. + * + * This is a separate step from interrupt enabling to simplify the locking rules + * in the driver load and resume code. + */ +void intel_hpd_init(struct drm_i915_private *dev_priv) +{ + struct drm_device *dev = dev_priv->dev; + struct drm_mode_config *mode_config = &dev->mode_config; + struct drm_connector *connector; + int i; + + for_each_hpd_pin(i) { + dev_priv->hotplug.stats[i].count = 0; + dev_priv->hotplug.stats[i].state = HPD_ENABLED; + } + list_for_each_entry(connector, &mode_config->connector_list, head) { + struct intel_connector *intel_connector = to_intel_connector(connector); + connector->polled = intel_connector->polled; + if (connector->encoder && !connector->polled && I915_HAS_HOTPLUG(dev) && intel_connector->encoder->hpd_pin > HPD_NONE) + connector->polled = DRM_CONNECTOR_POLL_HPD; + if (intel_connector->mst_port) + connector->polled = DRM_CONNECTOR_POLL_HPD; + } + + /* + * Interrupt setup is already guaranteed to be single-threaded, this is + * just to make the assert_spin_locked checks happy. + */ + spin_lock_irq(&dev_priv->irq_lock); + if (dev_priv->display.hpd_irq_setup) + dev_priv->display.hpd_irq_setup(dev); + spin_unlock_irq(&dev_priv->irq_lock); +} + +void intel_hpd_init_work(struct drm_i915_private *dev_priv) +{ + INIT_WORK(&dev_priv->hotplug.hotplug_work, i915_hotplug_work_func); + INIT_WORK(&dev_priv->hotplug.dig_port_work, i915_digport_work_func); + INIT_DELAYED_WORK(&dev_priv->hotplug.reenable_work, + intel_hpd_irq_storm_reenable_work); +} + +void intel_hpd_cancel_work(struct drm_i915_private *dev_priv) +{ + spin_lock_irq(&dev_priv->irq_lock); + + dev_priv->hotplug.long_port_mask = 0; + dev_priv->hotplug.short_port_mask = 0; + dev_priv->hotplug.event_bits = 0; + + spin_unlock_irq(&dev_priv->irq_lock); + + cancel_work_sync(&dev_priv->hotplug.dig_port_work); + cancel_work_sync(&dev_priv->hotplug.hotplug_work); + cancel_delayed_work_sync(&dev_priv->hotplug.reenable_work); +} --- linux-raspi2-4.2.0.orig/drivers/gpu/drm/i915/intel_lrc.c +++ linux-raspi2-4.2.0/drivers/gpu/drm/i915/intel_lrc.c @@ -211,6 +211,7 @@ FAULT_AND_CONTINUE /* Unsupported */ }; #define GEN8_CTX_ID_SHIFT 32 +#define CTX_RCS_INDIRECT_CTX_OFFSET_DEFAULT 0x17 static int intel_lr_context_pin(struct intel_engine_cs *ring, struct intel_context *ctx); @@ -1079,6 +1080,353 @@ return 0; } +#define wa_ctx_emit(batch, index, cmd) \ + do { \ + int __index = (index)++; \ + if (WARN_ON(__index >= (PAGE_SIZE / sizeof(uint32_t)))) { \ + return -ENOSPC; \ + } \ + batch[__index] = (cmd); \ + } while (0) + + +/* + * In this WA we need to set GEN8_L3SQCREG4[21:21] and reset it after + * PIPE_CONTROL instruction. This is required for the flush to happen correctly + * but there is a slight complication as this is applied in WA batch where the + * values are only initialized once so we cannot take register value at the + * beginning and reuse it further; hence we save its value to memory, upload a + * constant value with bit21 set and then we restore it back with the saved value. + * To simplify the WA, a constant value is formed by using the default value + * of this register. This shouldn't be a problem because we are only modifying + * it for a short period and this batch in non-premptible. We can ofcourse + * use additional instructions that read the actual value of the register + * at that time and set our bit of interest but it makes the WA complicated. + * + * This WA is also required for Gen9 so extracting as a function avoids + * code duplication. + */ +static inline int gen8_emit_flush_coherentl3_wa(struct intel_engine_cs *ring, + uint32_t *const batch, + uint32_t index) +{ + uint32_t l3sqc4_flush = (0x40400000 | GEN8_LQSC_FLUSH_COHERENT_LINES); + + /* + * WaDisableLSQCROPERFforOCL:skl + * This WA is implemented in skl_init_clock_gating() but since + * this batch updates GEN8_L3SQCREG4 with default value we need to + * set this bit here to retain the WA during flush. + */ + if (IS_SKYLAKE(ring->dev) && INTEL_REVID(ring->dev) <= SKL_REVID_E0) + l3sqc4_flush |= GEN8_LQSC_RO_PERF_DIS; + + wa_ctx_emit(batch, index, (MI_STORE_REGISTER_MEM_GEN8(1) | + MI_SRM_LRM_GLOBAL_GTT)); + wa_ctx_emit(batch, index, GEN8_L3SQCREG4); + wa_ctx_emit(batch, index, ring->scratch.gtt_offset + 256); + wa_ctx_emit(batch, index, 0); + + wa_ctx_emit(batch, index, MI_LOAD_REGISTER_IMM(1)); + wa_ctx_emit(batch, index, GEN8_L3SQCREG4); + wa_ctx_emit(batch, index, l3sqc4_flush); + + wa_ctx_emit(batch, index, GFX_OP_PIPE_CONTROL(6)); + wa_ctx_emit(batch, index, (PIPE_CONTROL_CS_STALL | + PIPE_CONTROL_DC_FLUSH_ENABLE)); + wa_ctx_emit(batch, index, 0); + wa_ctx_emit(batch, index, 0); + wa_ctx_emit(batch, index, 0); + wa_ctx_emit(batch, index, 0); + + wa_ctx_emit(batch, index, (MI_LOAD_REGISTER_MEM_GEN8(1) | + MI_SRM_LRM_GLOBAL_GTT)); + wa_ctx_emit(batch, index, GEN8_L3SQCREG4); + wa_ctx_emit(batch, index, ring->scratch.gtt_offset + 256); + wa_ctx_emit(batch, index, 0); + + return index; +} + +static inline uint32_t wa_ctx_start(struct i915_wa_ctx_bb *wa_ctx, + uint32_t offset, + uint32_t start_alignment) +{ + return wa_ctx->offset = ALIGN(offset, start_alignment); +} + +static inline int wa_ctx_end(struct i915_wa_ctx_bb *wa_ctx, + uint32_t offset, + uint32_t size_alignment) +{ + wa_ctx->size = offset - wa_ctx->offset; + + WARN(wa_ctx->size % size_alignment, + "wa_ctx_bb failed sanity checks: size %d is not aligned to %d\n", + wa_ctx->size, size_alignment); + return 0; +} + +/** + * gen8_init_indirectctx_bb() - initialize indirect ctx batch with WA + * + * @ring: only applicable for RCS + * @wa_ctx: structure representing wa_ctx + * offset: specifies start of the batch, should be cache-aligned. This is updated + * with the offset value received as input. + * size: size of the batch in DWORDS but HW expects in terms of cachelines + * @batch: page in which WA are loaded + * @offset: This field specifies the start of the batch, it should be + * cache-aligned otherwise it is adjusted accordingly. + * Typically we only have one indirect_ctx and per_ctx batch buffer which are + * initialized at the beginning and shared across all contexts but this field + * helps us to have multiple batches at different offsets and select them based + * on a criteria. At the moment this batch always start at the beginning of the page + * and at this point we don't have multiple wa_ctx batch buffers. + * + * The number of WA applied are not known at the beginning; we use this field + * to return the no of DWORDS written. + + * It is to be noted that this batch does not contain MI_BATCH_BUFFER_END + * so it adds NOOPs as padding to make it cacheline aligned. + * MI_BATCH_BUFFER_END will be added to perctx batch and both of them together + * makes a complete batch buffer. + * + * Return: non-zero if we exceed the PAGE_SIZE limit. + */ + +static int gen8_init_indirectctx_bb(struct intel_engine_cs *ring, + struct i915_wa_ctx_bb *wa_ctx, + uint32_t *const batch, + uint32_t *offset) +{ + uint32_t scratch_addr; + uint32_t index = wa_ctx_start(wa_ctx, *offset, CACHELINE_DWORDS); + + /* WaDisableCtxRestoreArbitration:bdw,chv */ + wa_ctx_emit(batch, index, MI_ARB_ON_OFF | MI_ARB_DISABLE); + + /* WaFlushCoherentL3CacheLinesAtContextSwitch:bdw */ + if (IS_BROADWELL(ring->dev)) { + index = gen8_emit_flush_coherentl3_wa(ring, batch, index); + if (index < 0) + return index; + } + + /* WaClearSlmSpaceAtContextSwitch:bdw,chv */ + /* Actual scratch location is at 128 bytes offset */ + scratch_addr = ring->scratch.gtt_offset + 2*CACHELINE_BYTES; + + wa_ctx_emit(batch, index, GFX_OP_PIPE_CONTROL(6)); + wa_ctx_emit(batch, index, (PIPE_CONTROL_FLUSH_L3 | + PIPE_CONTROL_GLOBAL_GTT_IVB | + PIPE_CONTROL_CS_STALL | + PIPE_CONTROL_QW_WRITE)); + wa_ctx_emit(batch, index, scratch_addr); + wa_ctx_emit(batch, index, 0); + wa_ctx_emit(batch, index, 0); + wa_ctx_emit(batch, index, 0); + + /* Pad to end of cacheline */ + while (index % CACHELINE_DWORDS) + wa_ctx_emit(batch, index, MI_NOOP); + + /* + * MI_BATCH_BUFFER_END is not required in Indirect ctx BB because + * execution depends on the length specified in terms of cache lines + * in the register CTX_RCS_INDIRECT_CTX + */ + + return wa_ctx_end(wa_ctx, *offset = index, CACHELINE_DWORDS); +} + +/** + * gen8_init_perctx_bb() - initialize per ctx batch with WA + * + * @ring: only applicable for RCS + * @wa_ctx: structure representing wa_ctx + * offset: specifies start of the batch, should be cache-aligned. + * size: size of the batch in DWORDS but HW expects in terms of cachelines + * @offset: This field specifies the start of this batch. + * This batch is started immediately after indirect_ctx batch. Since we ensure + * that indirect_ctx ends on a cacheline this batch is aligned automatically. + * + * The number of DWORDS written are returned using this field. + * + * This batch is terminated with MI_BATCH_BUFFER_END and so we need not add padding + * to align it with cacheline as padding after MI_BATCH_BUFFER_END is redundant. + */ +static int gen8_init_perctx_bb(struct intel_engine_cs *ring, + struct i915_wa_ctx_bb *wa_ctx, + uint32_t *const batch, + uint32_t *offset) +{ + uint32_t index = wa_ctx_start(wa_ctx, *offset, CACHELINE_DWORDS); + + /* WaDisableCtxRestoreArbitration:bdw,chv */ + wa_ctx_emit(batch, index, MI_ARB_ON_OFF | MI_ARB_ENABLE); + + wa_ctx_emit(batch, index, MI_BATCH_BUFFER_END); + + return wa_ctx_end(wa_ctx, *offset = index, 1); +} + +static int gen9_init_indirectctx_bb(struct intel_engine_cs *ring, + struct i915_wa_ctx_bb *wa_ctx, + uint32_t *const batch, + uint32_t *offset) +{ + int ret; + struct drm_device *dev = ring->dev; + uint32_t index = wa_ctx_start(wa_ctx, *offset, CACHELINE_DWORDS); + + /* WaDisableCtxRestoreArbitration:skl,bxt */ + if ((IS_SKYLAKE(dev) && (INTEL_REVID(dev) <= SKL_REVID_D0)) || + (IS_BROXTON(dev) && (INTEL_REVID(dev) == BXT_REVID_A0))) + wa_ctx_emit(batch, index, MI_ARB_ON_OFF | MI_ARB_DISABLE); + + /* WaFlushCoherentL3CacheLinesAtContextSwitch:skl,bxt */ + ret = gen8_emit_flush_coherentl3_wa(ring, batch, index); + if (ret < 0) + return ret; + index = ret; + + /* Pad to end of cacheline */ + while (index % CACHELINE_DWORDS) + wa_ctx_emit(batch, index, MI_NOOP); + + return wa_ctx_end(wa_ctx, *offset = index, CACHELINE_DWORDS); +} + +static int gen9_init_perctx_bb(struct intel_engine_cs *ring, + struct i915_wa_ctx_bb *wa_ctx, + uint32_t *const batch, + uint32_t *offset) +{ + struct drm_device *dev = ring->dev; + uint32_t index = wa_ctx_start(wa_ctx, *offset, CACHELINE_DWORDS); + + /* WaSetDisablePixMaskCammingAndRhwoInCommonSliceChicken:skl,bxt */ + if ((IS_SKYLAKE(dev) && (INTEL_REVID(dev) <= SKL_REVID_B0)) || + (IS_BROXTON(dev) && (INTEL_REVID(dev) == BXT_REVID_A0))) { + wa_ctx_emit(batch, index, MI_LOAD_REGISTER_IMM(1)); + wa_ctx_emit(batch, index, GEN9_SLICE_COMMON_ECO_CHICKEN0); + wa_ctx_emit(batch, index, + _MASKED_BIT_ENABLE(DISABLE_PIXEL_MASK_CAMMING)); + wa_ctx_emit(batch, index, MI_NOOP); + } + + /* WaDisableCtxRestoreArbitration:skl,bxt */ + if ((IS_SKYLAKE(dev) && (INTEL_REVID(dev) <= SKL_REVID_D0)) || + (IS_BROXTON(dev) && (INTEL_REVID(dev) == BXT_REVID_A0))) + wa_ctx_emit(batch, index, MI_ARB_ON_OFF | MI_ARB_ENABLE); + + wa_ctx_emit(batch, index, MI_BATCH_BUFFER_END); + + return wa_ctx_end(wa_ctx, *offset = index, 1); +} + +static int lrc_setup_wa_ctx_obj(struct intel_engine_cs *ring, u32 size) +{ + int ret; + + ring->wa_ctx.obj = i915_gem_alloc_object(ring->dev, PAGE_ALIGN(size)); + if (!ring->wa_ctx.obj) { + DRM_DEBUG_DRIVER("alloc LRC WA ctx backing obj failed.\n"); + return -ENOMEM; + } + + ret = i915_gem_obj_ggtt_pin(ring->wa_ctx.obj, PAGE_SIZE, 0); + if (ret) { + DRM_DEBUG_DRIVER("pin LRC WA ctx backing obj failed: %d\n", + ret); + drm_gem_object_unreference(&ring->wa_ctx.obj->base); + return ret; + } + + return 0; +} + +static void lrc_destroy_wa_ctx_obj(struct intel_engine_cs *ring) +{ + if (ring->wa_ctx.obj) { + i915_gem_object_ggtt_unpin(ring->wa_ctx.obj); + drm_gem_object_unreference(&ring->wa_ctx.obj->base); + ring->wa_ctx.obj = NULL; + } +} + +static int intel_init_workaround_bb(struct intel_engine_cs *ring) +{ + int ret; + uint32_t *batch; + uint32_t offset; + struct page *page; + struct i915_ctx_workarounds *wa_ctx = &ring->wa_ctx; + + WARN_ON(ring->id != RCS); + + /* update this when WA for higher Gen are added */ + if (INTEL_INFO(ring->dev)->gen > 9) { + DRM_ERROR("WA batch buffer is not initialized for Gen%d\n", + INTEL_INFO(ring->dev)->gen); + return 0; + } + + /* some WA perform writes to scratch page, ensure it is valid */ + if (ring->scratch.obj == NULL) { + DRM_ERROR("scratch page not allocated for %s\n", ring->name); + return -EINVAL; + } + + ret = lrc_setup_wa_ctx_obj(ring, PAGE_SIZE); + if (ret) { + DRM_DEBUG_DRIVER("Failed to setup context WA page: %d\n", ret); + return ret; + } + + page = i915_gem_object_get_page(wa_ctx->obj, 0); + batch = kmap_atomic(page); + offset = 0; + + if (INTEL_INFO(ring->dev)->gen == 8) { + ret = gen8_init_indirectctx_bb(ring, + &wa_ctx->indirect_ctx, + batch, + &offset); + if (ret) + goto out; + + ret = gen8_init_perctx_bb(ring, + &wa_ctx->per_ctx, + batch, + &offset); + if (ret) + goto out; + } else if (INTEL_INFO(ring->dev)->gen == 9) { + ret = gen9_init_indirectctx_bb(ring, + &wa_ctx->indirect_ctx, + batch, + &offset); + if (ret) + goto out; + + ret = gen9_init_perctx_bb(ring, + &wa_ctx->per_ctx, + batch, + &offset); + if (ret) + goto out; + } + +out: + kunmap_atomic(batch); + if (ret) + lrc_destroy_wa_ctx_obj(ring); + + return ret; +} + static int gen8_init_common_ring(struct intel_engine_cs *ring) { struct drm_device *dev = ring->dev; @@ -1250,6 +1598,7 @@ if (flush_domains) { flags |= PIPE_CONTROL_RENDER_TARGET_CACHE_FLUSH; flags |= PIPE_CONTROL_DEPTH_CACHE_FLUSH; + flags |= PIPE_CONTROL_FLUSH_ENABLE; } if (invalidate_domains) { @@ -1419,6 +1768,8 @@ kunmap(sg_page(ring->status_page.obj->pages->sgl)); ring->status_page.obj = NULL; } + + lrc_destroy_wa_ctx_obj(ring); } static int logical_ring_init(struct drm_device *dev, struct intel_engine_cs *ring) @@ -1478,11 +1829,28 @@ ring->emit_bb_start = gen8_emit_bb_start; ring->dev = dev; - ret = logical_ring_init(dev, ring); + + ret = intel_init_pipe_control(ring); if (ret) return ret; - return intel_init_pipe_control(ring); + ret = intel_init_workaround_bb(ring); + if (ret) { + /* + * We continue even if we fail to initialize WA batch + * because we only expect rare glitches but nothing + * critical to prevent us from using GPU + */ + DRM_ERROR("WA batch buffer initialization failed: %d\n", + ret); + } + + ret = logical_ring_init(dev, ring); + if (ret) { + lrc_destroy_wa_ctx_obj(ring); + } + + return ret; } static int logical_bsd_ring_init(struct drm_device *dev) @@ -1762,15 +2130,27 @@ reg_state[CTX_SECOND_BB_STATE] = ring->mmio_base + 0x118; reg_state[CTX_SECOND_BB_STATE+1] = 0; if (ring->id == RCS) { - /* TODO: according to BSpec, the register state context - * for CHV does not have these. OTOH, these registers do - * exist in CHV. I'm waiting for a clarification */ reg_state[CTX_BB_PER_CTX_PTR] = ring->mmio_base + 0x1c0; reg_state[CTX_BB_PER_CTX_PTR+1] = 0; reg_state[CTX_RCS_INDIRECT_CTX] = ring->mmio_base + 0x1c4; reg_state[CTX_RCS_INDIRECT_CTX+1] = 0; reg_state[CTX_RCS_INDIRECT_CTX_OFFSET] = ring->mmio_base + 0x1c8; reg_state[CTX_RCS_INDIRECT_CTX_OFFSET+1] = 0; + if (ring->wa_ctx.obj) { + struct i915_ctx_workarounds *wa_ctx = &ring->wa_ctx; + uint32_t ggtt_offset = i915_gem_obj_ggtt_offset(wa_ctx->obj); + + reg_state[CTX_RCS_INDIRECT_CTX+1] = + (ggtt_offset + wa_ctx->indirect_ctx.offset * sizeof(uint32_t)) | + (wa_ctx->indirect_ctx.size / CACHELINE_DWORDS); + + reg_state[CTX_RCS_INDIRECT_CTX_OFFSET+1] = + CTX_RCS_INDIRECT_CTX_OFFSET_DEFAULT << 6; + + reg_state[CTX_BB_PER_CTX_PTR+1] = + (ggtt_offset + wa_ctx->per_ctx.offset * sizeof(uint32_t)) | + 0x01; + } } reg_state[CTX_LRI_HEADER_1] = MI_LOAD_REGISTER_IMM(9); reg_state[CTX_LRI_HEADER_1] |= MI_LRI_FORCE_POSTED; --- linux-raspi2-4.2.0.orig/drivers/gpu/drm/i915/intel_pm.c +++ linux-raspi2-4.2.0/drivers/gpu/drm/i915/intel_pm.c @@ -59,6 +59,10 @@ /* WaEnableLbsSlaRetryTimerDecrement:skl */ I915_WRITE(BDW_SCRATCH1, I915_READ(BDW_SCRATCH1) | GEN9_LBS_SLA_RETRY_TIMER_DECREMENT_ENABLE); + + /* WaDisableKillLogic:bxt,skl */ + I915_WRITE(GAM_ECOCHK, I915_READ(GAM_ECOCHK) | + ECOCHK_DIS_TLB); } static void skl_init_clock_gating(struct drm_device *dev) @@ -91,10 +95,19 @@ _MASKED_BIT_ENABLE(GEN9_TSG_BARRIER_ACK_DISABLE)); } + /* GEN8_L3SQCREG4 has a dependency with WA batch so any new changes + * involving this register should also be added to WA batch as required. + */ if (INTEL_REVID(dev) <= SKL_REVID_E0) /* WaDisableLSQCROPERFforOCL:skl */ I915_WRITE(GEN8_L3SQCREG4, I915_READ(GEN8_L3SQCREG4) | GEN8_LQSC_RO_PERF_DIS); + + /* WaEnableGapsTsvCreditFix:skl */ + if (IS_SKYLAKE(dev) && (INTEL_REVID(dev) >= SKL_REVID_C0)) { + I915_WRITE(GEN8_GARBCNTL, (I915_READ(GEN8_GARBCNTL) | + GEN9_GAPS_TSV_CREDIT_DISABLE)); + } } static void bxt_init_clock_gating(struct drm_device *dev) --- linux-raspi2-4.2.0.orig/drivers/gpu/drm/i915/intel_ringbuffer.c +++ linux-raspi2-4.2.0/drivers/gpu/drm/i915/intel_ringbuffer.c @@ -342,6 +342,7 @@ if (flush_domains) { flags |= PIPE_CONTROL_RENDER_TARGET_CACHE_FLUSH; flags |= PIPE_CONTROL_DEPTH_CACHE_FLUSH; + flags |= PIPE_CONTROL_FLUSH_ENABLE; } if (invalidate_domains) { flags |= PIPE_CONTROL_TLB_INVALIDATE; @@ -412,6 +413,7 @@ if (flush_domains) { flags |= PIPE_CONTROL_RENDER_TARGET_CACHE_FLUSH; flags |= PIPE_CONTROL_DEPTH_CACHE_FLUSH; + flags |= PIPE_CONTROL_FLUSH_ENABLE; } if (invalidate_domains) { flags |= PIPE_CONTROL_TLB_INVALIDATE; @@ -931,8 +933,11 @@ /* WaSetDisablePixMaskCammingAndRhwoInCommonSliceChicken:skl,bxt */ WA_SET_BIT_MASKED(GEN7_COMMON_SLICE_CHICKEN1, GEN9_RHWO_OPTIMIZATION_DISABLE); - WA_SET_BIT_MASKED(GEN9_SLICE_COMMON_ECO_CHICKEN0, - DISABLE_PIXEL_MASK_CAMMING); + /* + * WA also requires GEN9_SLICE_COMMON_ECO_CHICKEN0[14:14] to be set + * but we do that in per ctx batchbuffer as there is an issue + * with this register not getting restored on ctx restore + */ } if ((IS_SKYLAKE(dev) && INTEL_REVID(dev) >= SKL_REVID_C0) || @@ -1023,13 +1028,6 @@ WA_SET_BIT_MASKED(HIZ_CHICKEN, BDW_HIZ_POWER_COMPILER_CLOCK_GATING_DISABLE); - if (INTEL_REVID(dev) == SKL_REVID_C0 || - INTEL_REVID(dev) == SKL_REVID_D0) - /* WaBarrierPerformanceFixDisable:skl */ - WA_SET_BIT_MASKED(HDC_CHICKEN0, - HDC_FENCE_DEST_SLM_DISABLE | - HDC_BARRIER_PERFORMANCE_DISABLE); - if (INTEL_REVID(dev) <= SKL_REVID_D0) { /* *Use Force Non-Coherent whenever executing a 3D context. This @@ -1041,6 +1039,20 @@ HDC_FORCE_NON_COHERENT); } + if (INTEL_REVID(dev) == SKL_REVID_C0 || + INTEL_REVID(dev) == SKL_REVID_D0) + /* WaBarrierPerformanceFixDisable:skl */ + WA_SET_BIT_MASKED(HDC_CHICKEN0, + HDC_FENCE_DEST_SLM_DISABLE | + HDC_BARRIER_PERFORMANCE_DISABLE); + + /* WaDisableSbeCacheDispatchPortSharing:skl */ + if (INTEL_REVID(dev) <= SKL_REVID_F0) { + WA_SET_BIT_MASKED( + GEN7_HALF_SLICE_CHICKEN1, + GEN7_SBE_SS_CACHE_DISPATCH_PORT_SHARING_DISABLE); + } + return skl_tune_iz_hashing(ring); } --- linux-raspi2-4.2.0.orig/drivers/gpu/drm/i915/intel_ringbuffer.h +++ linux-raspi2-4.2.0/drivers/gpu/drm/i915/intel_ringbuffer.h @@ -12,6 +12,7 @@ * workarounds! */ #define CACHELINE_BYTES 64 +#define CACHELINE_DWORDS (CACHELINE_BYTES / sizeof(uint32_t)) /* * Gen2 BSpec "1. Programming Environment" / 1.4.4.6 "Ring Buffer Use" @@ -120,6 +121,25 @@ struct intel_context; struct drm_i915_reg_descriptor; +/* + * we use a single page to load ctx workarounds so all of these + * values are referred in terms of dwords + * + * struct i915_wa_ctx_bb: + * offset: specifies batch starting position, also helpful in case + * if we want to have multiple batches at different offsets based on + * some criteria. It is not a requirement at the moment but provides + * an option for future use. + * size: size of the batch in DWORDS + */ +struct i915_ctx_workarounds { + struct i915_wa_ctx_bb { + u32 offset; + u32 size; + } indirect_ctx, per_ctx; + struct drm_i915_gem_object *obj; +}; + struct intel_engine_cs { const char *name; enum intel_ring_id { @@ -143,6 +163,7 @@ struct i915_gem_batch_pool batch_pool; struct intel_hw_status_page status_page; + struct i915_ctx_workarounds wa_ctx; unsigned irq_refcount; /* protected by dev_priv->irq_lock */ u32 irq_enable_mask; /* bitmask to enable ring interrupt */ --- linux-raspi2-4.2.0.orig/drivers/gpu/drm/i915/intel_runtime_pm.c +++ linux-raspi2-4.2.0/drivers/gpu/drm/i915/intel_runtime_pm.c @@ -281,6 +281,7 @@ BIT(POWER_DOMAIN_PORT_DDI_C_4_LANES) | \ BIT(POWER_DOMAIN_PORT_DDI_D_2_LANES) | \ BIT(POWER_DOMAIN_PORT_DDI_D_4_LANES) | \ + BIT(POWER_DOMAIN_PORT_DDI_E_2_LANES) | \ BIT(POWER_DOMAIN_AUX_B) | \ BIT(POWER_DOMAIN_AUX_C) | \ BIT(POWER_DOMAIN_AUX_D) | \ @@ -300,6 +301,7 @@ #define SKL_DISPLAY_DDI_A_E_POWER_DOMAINS ( \ BIT(POWER_DOMAIN_PORT_DDI_A_2_LANES) | \ BIT(POWER_DOMAIN_PORT_DDI_A_4_LANES) | \ + BIT(POWER_DOMAIN_PORT_DDI_E_2_LANES) | \ BIT(POWER_DOMAIN_INIT)) #define SKL_DISPLAY_DDI_B_POWER_DOMAINS ( \ BIT(POWER_DOMAIN_PORT_DDI_B_2_LANES) | \ --- linux-raspi2-4.2.0.orig/drivers/gpu/drm/i915/intel_sprite.c +++ linux-raspi2-4.2.0/drivers/gpu/drm/i915/intel_sprite.c @@ -927,7 +927,7 @@ INTEL_FRONTBUFFER_SPRITE(intel_crtc->pipe); if (intel_wm_need_update(plane, &state->base)) - intel_crtc->atomic.update_wm = true; + intel_crtc->atomic.update_wm_pre = true; if (!state->visible) { /* --- linux-raspi2-4.2.0.orig/drivers/gpu/drm/nouveau/nouveau_bios.c +++ linux-raspi2-4.2.0/drivers/gpu/drm/nouveau/nouveau_bios.c @@ -350,7 +350,7 @@ /* Apple cards don't have the fp table; the laptops use DDC */ /* The table is also missing on some x86 IGPs */ #ifndef __powerpc__ - NV_ERROR(drm, "Pointer to flat panel table invalid\n"); + NV_WARN(drm, "Pointer to flat panel table invalid\n"); #endif bios->digital_min_front_porch = 0x4b; return 0; @@ -934,7 +934,7 @@ tmdstableptr = ROM16(bios->data[bitentry->offset]); if (!tmdstableptr) { - NV_ERROR(drm, "Pointer to TMDS table invalid\n"); + NV_WARN(drm, "Pointer to TMDS table invalid\n"); return -EINVAL; } --- linux-raspi2-4.2.0.orig/drivers/gpu/drm/nouveau/nouveau_fbcon.c +++ linux-raspi2-4.2.0/drivers/gpu/drm/nouveau/nouveau_fbcon.c @@ -178,8 +178,30 @@ return 0; } +static int +nouveau_fbcon_open(struct fb_info *info, int user) +{ + struct nouveau_fbdev *fbcon = info->par; + struct nouveau_drm *drm = nouveau_drm(fbcon->dev); + int ret = pm_runtime_get_sync(drm->dev->dev); + if (ret < 0 && ret != -EACCES) + return ret; + return 0; +} + +static int +nouveau_fbcon_release(struct fb_info *info, int user) +{ + struct nouveau_fbdev *fbcon = info->par; + struct nouveau_drm *drm = nouveau_drm(fbcon->dev); + pm_runtime_put(drm->dev->dev); + return 0; +} + static struct fb_ops nouveau_fbcon_ops = { .owner = THIS_MODULE, + .fb_open = nouveau_fbcon_open, + .fb_release = nouveau_fbcon_release, .fb_check_var = drm_fb_helper_check_var, .fb_set_par = drm_fb_helper_set_par, .fb_fillrect = nouveau_fbcon_fillrect, @@ -195,6 +217,8 @@ static struct fb_ops nouveau_fbcon_sw_ops = { .owner = THIS_MODULE, + .fb_open = nouveau_fbcon_open, + .fb_release = nouveau_fbcon_release, .fb_check_var = drm_fb_helper_check_var, .fb_set_par = drm_fb_helper_set_par, .fb_fillrect = cfb_fillrect, --- linux-raspi2-4.2.0.orig/drivers/gpu/drm/nouveau/nouveau_gem.c +++ linux-raspi2-4.2.0/drivers/gpu/drm/nouveau/nouveau_gem.c @@ -227,11 +227,12 @@ struct nouveau_bo *nvbo = nouveau_gem_object(gem); struct nvkm_vma *vma; - if (nvbo->bo.mem.mem_type == TTM_PL_TT) + if (is_power_of_2(nvbo->valid_domains)) + rep->domain = nvbo->valid_domains; + else if (nvbo->bo.mem.mem_type == TTM_PL_TT) rep->domain = NOUVEAU_GEM_DOMAIN_GART; else rep->domain = NOUVEAU_GEM_DOMAIN_VRAM; - rep->offset = nvbo->bo.offset; if (cli->vm) { vma = nouveau_bo_vma_find(nvbo, cli->vm); --- linux-raspi2-4.2.0.orig/drivers/gpu/drm/qxl/qxl_display.c +++ linux-raspi2-4.2.0/drivers/gpu/drm/qxl/qxl_display.c @@ -160,9 +160,35 @@ *pwidth = head->width; *pheight = head->height; drm_mode_probed_add(connector, mode); + /* remember the last custom size for mode validation */ + qdev->monitors_config_width = mode->hdisplay; + qdev->monitors_config_height = mode->vdisplay; return 1; } +static struct mode_size { + int w; + int h; +} common_modes[] = { + { 640, 480}, + { 720, 480}, + { 800, 600}, + { 848, 480}, + {1024, 768}, + {1152, 768}, + {1280, 720}, + {1280, 800}, + {1280, 854}, + {1280, 960}, + {1280, 1024}, + {1440, 900}, + {1400, 1050}, + {1680, 1050}, + {1600, 1200}, + {1920, 1080}, + {1920, 1200} +}; + static int qxl_add_common_modes(struct drm_connector *connector, unsigned pwidth, unsigned pheight) @@ -170,29 +196,6 @@ struct drm_device *dev = connector->dev; struct drm_display_mode *mode = NULL; int i; - struct mode_size { - int w; - int h; - } common_modes[] = { - { 640, 480}, - { 720, 480}, - { 800, 600}, - { 848, 480}, - {1024, 768}, - {1152, 768}, - {1280, 720}, - {1280, 800}, - {1280, 854}, - {1280, 960}, - {1280, 1024}, - {1440, 900}, - {1400, 1050}, - {1680, 1050}, - {1600, 1200}, - {1920, 1080}, - {1920, 1200} - }; - for (i = 0; i < ARRAY_SIZE(common_modes); i++) { mode = drm_cvt_mode(dev, common_modes[i].w, common_modes[i].h, 60, false, false, false); @@ -615,7 +618,7 @@ adjusted_mode->hdisplay, adjusted_mode->vdisplay); - if (qcrtc->index == 0) + if (bo->is_primary == false) recreate_primary = true; if (bo->surf.stride * bo->surf.height > qdev->vram_size) { @@ -823,11 +826,22 @@ static int qxl_conn_mode_valid(struct drm_connector *connector, struct drm_display_mode *mode) { + struct drm_device *ddev = connector->dev; + struct qxl_device *qdev = ddev->dev_private; + int i; + /* TODO: is this called for user defined modes? (xrandr --add-mode) * TODO: check that the mode fits in the framebuffer */ - DRM_DEBUG("%s: %dx%d status=%d\n", mode->name, mode->hdisplay, - mode->vdisplay, mode->status); - return MODE_OK; + + if(qdev->monitors_config_width == mode->hdisplay && + qdev->monitors_config_height == mode->vdisplay) + return MODE_OK; + + for (i = 0; i < ARRAY_SIZE(common_modes); i++) { + if (common_modes[i].w == mode->hdisplay && common_modes[i].h == mode->vdisplay) + return MODE_OK; + } + return MODE_BAD; } static struct drm_encoder *qxl_best_encoder(struct drm_connector *connector) @@ -872,13 +886,15 @@ drm_connector_to_qxl_output(connector); struct drm_device *ddev = connector->dev; struct qxl_device *qdev = ddev->dev_private; - int connected; + bool connected = false; /* The first monitor is always connected */ - connected = (output->index == 0) || - (qdev->client_monitors_config && - qdev->client_monitors_config->count > output->index && - qxl_head_enabled(&qdev->client_monitors_config->heads[output->index])); + if (!qdev->client_monitors_config) { + if (output->index == 0) + connected = true; + } else + connected = qdev->client_monitors_config->count > output->index && + qxl_head_enabled(&qdev->client_monitors_config->heads[output->index]); DRM_DEBUG("#%d connected: %d\n", output->index, connected); if (!connected) --- linux-raspi2-4.2.0.orig/drivers/gpu/drm/qxl/qxl_drv.h +++ linux-raspi2-4.2.0/drivers/gpu/drm/qxl/qxl_drv.h @@ -325,6 +325,8 @@ struct work_struct fb_work; struct drm_property *hotplug_mode_update_property; + int monitors_config_width; + int monitors_config_height; }; /* forward declaration for QXL_INFO_IO */ --- linux-raspi2-4.2.0.orig/drivers/gpu/drm/qxl/qxl_fb.c +++ linux-raspi2-4.2.0/drivers/gpu/drm/qxl/qxl_fb.c @@ -144,14 +144,17 @@ spin_lock_irqsave(&qfbdev->dirty.lock, flags); - if (qfbdev->dirty.y1 < y) - y = qfbdev->dirty.y1; - if (qfbdev->dirty.y2 > y2) - y2 = qfbdev->dirty.y2; - if (qfbdev->dirty.x1 < x) - x = qfbdev->dirty.x1; - if (qfbdev->dirty.x2 > x2) - x2 = qfbdev->dirty.x2; + if ((qfbdev->dirty.y2 - qfbdev->dirty.y1) && + (qfbdev->dirty.x2 - qfbdev->dirty.x1)) { + if (qfbdev->dirty.y1 < y) + y = qfbdev->dirty.y1; + if (qfbdev->dirty.y2 > y2) + y2 = qfbdev->dirty.y2; + if (qfbdev->dirty.x1 < x) + x = qfbdev->dirty.x1; + if (qfbdev->dirty.x2 > x2) + x2 = qfbdev->dirty.x2; + } qfbdev->dirty.x1 = x; qfbdev->dirty.x2 = x2; --- linux-raspi2-4.2.0.orig/drivers/gpu/drm/radeon/atombios_dp.c +++ linux-raspi2-4.2.0/drivers/gpu/drm/radeon/atombios_dp.c @@ -171,8 +171,9 @@ return -E2BIG; tx_buf[0] = msg->address & 0xff; - tx_buf[1] = msg->address >> 8; - tx_buf[2] = msg->request << 4; + tx_buf[1] = (msg->address >> 8) & 0xff; + tx_buf[2] = (msg->request << 4) | + ((msg->address >> 16) & 0xf); tx_buf[3] = msg->size ? (msg->size - 1) : 0; switch (msg->request & ~DP_AUX_I2C_MOT) { --- linux-raspi2-4.2.0.orig/drivers/gpu/drm/radeon/atombios_encoders.c +++ linux-raspi2-4.2.0/drivers/gpu/drm/radeon/atombios_encoders.c @@ -237,6 +237,7 @@ backlight_update_status(bd); DRM_INFO("radeon atom DIG backlight initialized\n"); + rdev->mode_info.bl_encoder = radeon_encoder; return; @@ -1624,8 +1625,14 @@ } else atom_execute_table(rdev->mode_info.atom_context, index, (uint32_t *)&args); if (radeon_encoder->devices & (ATOM_DEVICE_LCD_SUPPORT)) { - args.ucAction = ATOM_LCD_BLON; - atom_execute_table(rdev->mode_info.atom_context, index, (uint32_t *)&args); + if (rdev->mode_info.bl_encoder) { + struct radeon_encoder_atom_dig *dig = radeon_encoder->enc_priv; + + atombios_set_backlight_level(radeon_encoder, dig->backlight_level); + } else { + args.ucAction = ATOM_LCD_BLON; + atom_execute_table(rdev->mode_info.atom_context, index, (uint32_t *)&args); + } } break; case DRM_MODE_DPMS_STANDBY: @@ -1705,9 +1712,13 @@ if (ASIC_IS_DCE4(rdev)) atombios_dig_encoder_setup(encoder, ATOM_ENCODER_CMD_DP_VIDEO_ON, 0); } - if (radeon_encoder->devices & (ATOM_DEVICE_LCD_SUPPORT)) - atombios_dig_transmitter_setup(encoder, - ATOM_TRANSMITTER_ACTION_LCD_BLON, 0, 0); + if (radeon_encoder->devices & (ATOM_DEVICE_LCD_SUPPORT)) { + if (rdev->mode_info.bl_encoder) + atombios_set_backlight_level(radeon_encoder, dig->backlight_level); + else + atombios_dig_transmitter_setup(encoder, + ATOM_TRANSMITTER_ACTION_LCD_BLON, 0, 0); + } if (ext_encoder) atombios_external_encoder_setup(encoder, ext_encoder, ATOM_ENABLE); break; --- linux-raspi2-4.2.0.orig/drivers/gpu/drm/radeon/radeon.h +++ linux-raspi2-4.2.0/drivers/gpu/drm/radeon/radeon.h @@ -1658,6 +1658,7 @@ u8 fan_max_rpm; /* dpm */ bool dpm_enabled; + bool sysfs_initialized; struct radeon_dpm dpm; }; --- linux-raspi2-4.2.0.orig/drivers/gpu/drm/radeon/radeon_audio.c +++ linux-raspi2-4.2.0/drivers/gpu/drm/radeon/radeon_audio.c @@ -522,13 +522,15 @@ return err; } - if (drm_rgb_quant_range_selectable(radeon_connector_edid(connector))) { - if (radeon_encoder->output_csc == RADEON_OUTPUT_CSC_TVRGB) - frame.quantization_range = HDMI_QUANTIZATION_RANGE_LIMITED; - else - frame.quantization_range = HDMI_QUANTIZATION_RANGE_FULL; - } else { - frame.quantization_range = HDMI_QUANTIZATION_RANGE_DEFAULT; + if (radeon_encoder->output_csc != RADEON_OUTPUT_CSC_BYPASS) { + if (drm_rgb_quant_range_selectable(radeon_connector_edid(connector))) { + if (radeon_encoder->output_csc == RADEON_OUTPUT_CSC_TVRGB) + frame.quantization_range = HDMI_QUANTIZATION_RANGE_LIMITED; + else + frame.quantization_range = HDMI_QUANTIZATION_RANGE_FULL; + } else { + frame.quantization_range = HDMI_QUANTIZATION_RANGE_DEFAULT; + } } err = hdmi_avi_infoframe_pack(&frame, buffer, sizeof(buffer)); --- linux-raspi2-4.2.0.orig/drivers/gpu/drm/radeon/radeon_combios.c +++ linux-raspi2-4.2.0/drivers/gpu/drm/radeon/radeon_combios.c @@ -3387,6 +3387,14 @@ rdev->pdev->subsystem_device == 0x30ae) return; + /* quirk for rs4xx HP Compaq dc5750 Small Form Factor to make it resume + * - it hangs on resume inside the dynclk 1 table. + */ + if (rdev->family == CHIP_RS480 && + rdev->pdev->subsystem_vendor == 0x103c && + rdev->pdev->subsystem_device == 0x280a) + return; + /* DYN CLK 1 */ table = combios_get_table_offset(dev, COMBIOS_DYN_CLK_1_TABLE); if (table) --- linux-raspi2-4.2.0.orig/drivers/gpu/drm/radeon/radeon_connectors.c +++ linux-raspi2-4.2.0/drivers/gpu/drm/radeon/radeon_connectors.c @@ -95,6 +95,11 @@ if (!radeon_hpd_sense(rdev, radeon_connector->hpd.hpd)) { drm_helper_connector_dpms(connector, DRM_MODE_DPMS_OFF); } else if (radeon_dp_needs_link_train(radeon_connector)) { + /* Don't try to start link training before we + * have the dpcd */ + if (!radeon_dp_getdpcd(radeon_connector)) + return; + /* set it to OFF so that drm_helper_connector_dpms() * won't return immediately since the current state * is ON at this point. --- linux-raspi2-4.2.0.orig/drivers/gpu/drm/radeon/radeon_display.c +++ linux-raspi2-4.2.0/drivers/gpu/drm/radeon/radeon_display.c @@ -1633,18 +1633,8 @@ radeon_fbdev_init(rdev); drm_kms_helper_poll_init(rdev->ddev); - if (rdev->pm.dpm_enabled) { - /* do dpm late init */ - ret = radeon_pm_late_init(rdev); - if (ret) { - rdev->pm.dpm_enabled = false; - DRM_ERROR("radeon_pm_late_init failed, disabling dpm\n"); - } - /* set the dpm state for PX since there won't be - * a modeset to call this. - */ - radeon_pm_compute_clocks(rdev); - } + /* do pm late init */ + ret = radeon_pm_late_init(rdev); return 0; } --- linux-raspi2-4.2.0.orig/drivers/gpu/drm/radeon/radeon_dp_auxch.c +++ linux-raspi2-4.2.0/drivers/gpu/drm/radeon/radeon_dp_auxch.c @@ -116,8 +116,8 @@ AUX_SW_WR_BYTES(bytes)); /* write the data header into the registers */ - /* request, addres, msg size */ - byte = (msg->request << 4); + /* request, address, msg size */ + byte = (msg->request << 4) | ((msg->address >> 16) & 0xf); WREG32(AUX_SW_DATA + aux_offset[instance], AUX_SW_DATA_MASK(byte) | AUX_SW_AUTOINCREMENT_DISABLE); --- linux-raspi2-4.2.0.orig/drivers/gpu/drm/radeon/radeon_dp_mst.c +++ linux-raspi2-4.2.0/drivers/gpu/drm/radeon/radeon_dp_mst.c @@ -283,6 +283,7 @@ radeon_connector->mst_encoder = radeon_dp_create_fake_mst_encoder(master); drm_object_attach_property(&connector->base, dev->mode_config.path_property, 0); + drm_object_attach_property(&connector->base, dev->mode_config.tile_property, 0); drm_mode_connector_set_path_property(connector, pathprop); drm_reinit_primary_mode_group(dev); --- linux-raspi2-4.2.0.orig/drivers/gpu/drm/radeon/radeon_encoders.c +++ linux-raspi2-4.2.0/drivers/gpu/drm/radeon/radeon_encoders.c @@ -194,7 +194,6 @@ radeon_atom_backlight_init(radeon_encoder, connector); else radeon_legacy_backlight_init(radeon_encoder, connector); - rdev->mode_info.bl_encoder = radeon_encoder; } } --- linux-raspi2-4.2.0.orig/drivers/gpu/drm/radeon/radeon_legacy_encoders.c +++ linux-raspi2-4.2.0/drivers/gpu/drm/radeon/radeon_legacy_encoders.c @@ -441,6 +441,7 @@ backlight_update_status(bd); DRM_INFO("radeon legacy LVDS backlight initialized\n"); + rdev->mode_info.bl_encoder = radeon_encoder; return; --- linux-raspi2-4.2.0.orig/drivers/gpu/drm/radeon/radeon_pm.c +++ linux-raspi2-4.2.0/drivers/gpu/drm/radeon/radeon_pm.c @@ -720,10 +720,14 @@ struct radeon_device *rdev = dev_get_drvdata(dev); umode_t effective_mode = attr->mode; - /* Skip limit attributes if DPM is not enabled */ + /* Skip attributes if DPM is not enabled */ if (rdev->pm.pm_method != PM_METHOD_DPM && (attr == &sensor_dev_attr_temp1_crit.dev_attr.attr || - attr == &sensor_dev_attr_temp1_crit_hyst.dev_attr.attr)) + attr == &sensor_dev_attr_temp1_crit_hyst.dev_attr.attr || + attr == &sensor_dev_attr_pwm1.dev_attr.attr || + attr == &sensor_dev_attr_pwm1_enable.dev_attr.attr || + attr == &sensor_dev_attr_pwm1_max.dev_attr.attr || + attr == &sensor_dev_attr_pwm1_min.dev_attr.attr)) return 0; /* Skip fan attributes if fan is not present */ @@ -1331,14 +1335,6 @@ INIT_DELAYED_WORK(&rdev->pm.dynpm_idle_work, radeon_dynpm_idle_work_handler); if (rdev->pm.num_power_states > 1) { - /* where's the best place to put these? */ - ret = device_create_file(rdev->dev, &dev_attr_power_profile); - if (ret) - DRM_ERROR("failed to create device file for power profile\n"); - ret = device_create_file(rdev->dev, &dev_attr_power_method); - if (ret) - DRM_ERROR("failed to create device file for power method\n"); - if (radeon_debugfs_pm_init(rdev)) { DRM_ERROR("Failed to register debugfs file for PM!\n"); } @@ -1396,20 +1392,6 @@ goto dpm_failed; rdev->pm.dpm_enabled = true; - ret = device_create_file(rdev->dev, &dev_attr_power_dpm_state); - if (ret) - DRM_ERROR("failed to create device file for dpm state\n"); - ret = device_create_file(rdev->dev, &dev_attr_power_dpm_force_performance_level); - if (ret) - DRM_ERROR("failed to create device file for dpm state\n"); - /* XXX: these are noops for dpm but are here for backwards compat */ - ret = device_create_file(rdev->dev, &dev_attr_power_profile); - if (ret) - DRM_ERROR("failed to create device file for power profile\n"); - ret = device_create_file(rdev->dev, &dev_attr_power_method); - if (ret) - DRM_ERROR("failed to create device file for power method\n"); - if (radeon_debugfs_pm_init(rdev)) { DRM_ERROR("Failed to register debugfs file for dpm!\n"); } @@ -1550,9 +1532,51 @@ int ret = 0; if (rdev->pm.pm_method == PM_METHOD_DPM) { - mutex_lock(&rdev->pm.mutex); - ret = radeon_dpm_late_enable(rdev); - mutex_unlock(&rdev->pm.mutex); + if (rdev->pm.dpm_enabled) { + if (!rdev->pm.sysfs_initialized) { + ret = device_create_file(rdev->dev, &dev_attr_power_dpm_state); + if (ret) + DRM_ERROR("failed to create device file for dpm state\n"); + ret = device_create_file(rdev->dev, &dev_attr_power_dpm_force_performance_level); + if (ret) + DRM_ERROR("failed to create device file for dpm state\n"); + /* XXX: these are noops for dpm but are here for backwards compat */ + ret = device_create_file(rdev->dev, &dev_attr_power_profile); + if (ret) + DRM_ERROR("failed to create device file for power profile\n"); + ret = device_create_file(rdev->dev, &dev_attr_power_method); + if (ret) + DRM_ERROR("failed to create device file for power method\n"); + if (!ret) + rdev->pm.sysfs_initialized = true; + } + + mutex_lock(&rdev->pm.mutex); + ret = radeon_dpm_late_enable(rdev); + mutex_unlock(&rdev->pm.mutex); + if (ret) { + rdev->pm.dpm_enabled = false; + DRM_ERROR("radeon_pm_late_init failed, disabling dpm\n"); + } else { + /* set the dpm state for PX since there won't be + * a modeset to call this. + */ + radeon_pm_compute_clocks(rdev); + } + } + } else { + if ((rdev->pm.num_power_states > 1) && + (!rdev->pm.sysfs_initialized)) { + /* where's the best place to put these? */ + ret = device_create_file(rdev->dev, &dev_attr_power_profile); + if (ret) + DRM_ERROR("failed to create device file for power profile\n"); + ret = device_create_file(rdev->dev, &dev_attr_power_method); + if (ret) + DRM_ERROR("failed to create device file for power method\n"); + if (!ret) + rdev->pm.sysfs_initialized = true; + } } return ret; } --- linux-raspi2-4.2.0.orig/drivers/gpu/drm/radeon/si_dpm.c +++ linux-raspi2-4.2.0/drivers/gpu/drm/radeon/si_dpm.c @@ -2927,6 +2927,8 @@ { PCI_VENDOR_ID_ATI, 0x6810, 0x1462, 0x3036, 0, 120000 }, { PCI_VENDOR_ID_ATI, 0x6811, 0x174b, 0xe271, 0, 120000 }, { PCI_VENDOR_ID_ATI, 0x6810, 0x174b, 0xe271, 85000, 90000 }, + { PCI_VENDOR_ID_ATI, 0x6811, 0x1462, 0x2015, 0, 120000 }, + { PCI_VENDOR_ID_ATI, 0x6811, 0x1043, 0x2015, 0, 120000 }, { 0, 0, 0, 0 }, }; --- linux-raspi2-4.2.0.orig/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c +++ linux-raspi2-4.2.0/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c @@ -1458,6 +1458,9 @@ drm_pci_exit(&driver, &vmw_pci_driver); } +MODULE_INFO(vmw_patch, "ed7d78b2"); +MODULE_INFO(vmw_patch, "54c12bc3"); + module_init(vmwgfx_init); module_exit(vmwgfx_exit); --- linux-raspi2-4.2.0.orig/drivers/gpu/drm/vmwgfx/vmwgfx_drv.h +++ linux-raspi2-4.2.0/drivers/gpu/drm/vmwgfx/vmwgfx_drv.h @@ -636,7 +636,8 @@ uint32_t size, bool shareable, uint32_t *handle, - struct vmw_dma_buffer **p_dma_buf); + struct vmw_dma_buffer **p_dma_buf, + struct ttm_base_object **p_base); extern int vmw_user_dmabuf_reference(struct ttm_object_file *tfile, struct vmw_dma_buffer *dma_buf, uint32_t *handle); @@ -650,7 +651,8 @@ uint32_t cur_validate_node); extern void vmw_dmabuf_validate_clear(struct ttm_buffer_object *bo); extern int vmw_user_dmabuf_lookup(struct ttm_object_file *tfile, - uint32_t id, struct vmw_dma_buffer **out); + uint32_t id, struct vmw_dma_buffer **out, + struct ttm_base_object **base); extern int vmw_stream_claim_ioctl(struct drm_device *dev, void *data, struct drm_file *file_priv); extern int vmw_stream_unref_ioctl(struct drm_device *dev, void *data, --- linux-raspi2-4.2.0.orig/drivers/gpu/drm/vmwgfx/vmwgfx_execbuf.c +++ linux-raspi2-4.2.0/drivers/gpu/drm/vmwgfx/vmwgfx_execbuf.c @@ -887,7 +887,8 @@ struct vmw_relocation *reloc; int ret; - ret = vmw_user_dmabuf_lookup(sw_context->fp->tfile, handle, &vmw_bo); + ret = vmw_user_dmabuf_lookup(sw_context->fp->tfile, handle, &vmw_bo, + NULL); if (unlikely(ret != 0)) { DRM_ERROR("Could not find or use MOB buffer.\n"); ret = -EINVAL; @@ -949,7 +950,8 @@ struct vmw_relocation *reloc; int ret; - ret = vmw_user_dmabuf_lookup(sw_context->fp->tfile, handle, &vmw_bo); + ret = vmw_user_dmabuf_lookup(sw_context->fp->tfile, handle, &vmw_bo, + NULL); if (unlikely(ret != 0)) { DRM_ERROR("Could not find or use GMR region.\n"); ret = -EINVAL; --- linux-raspi2-4.2.0.orig/drivers/gpu/drm/vmwgfx/vmwgfx_overlay.c +++ linux-raspi2-4.2.0/drivers/gpu/drm/vmwgfx/vmwgfx_overlay.c @@ -484,7 +484,7 @@ goto out_unlock; } - ret = vmw_user_dmabuf_lookup(tfile, arg->handle, &buf); + ret = vmw_user_dmabuf_lookup(tfile, arg->handle, &buf, NULL); if (ret) goto out_unlock; --- linux-raspi2-4.2.0.orig/drivers/gpu/drm/vmwgfx/vmwgfx_resource.c +++ linux-raspi2-4.2.0/drivers/gpu/drm/vmwgfx/vmwgfx_resource.c @@ -356,7 +356,7 @@ } *out_surf = NULL; - ret = vmw_user_dmabuf_lookup(tfile, handle, out_buf); + ret = vmw_user_dmabuf_lookup(tfile, handle, out_buf, NULL); return ret; } @@ -483,7 +483,8 @@ uint32_t size, bool shareable, uint32_t *handle, - struct vmw_dma_buffer **p_dma_buf) + struct vmw_dma_buffer **p_dma_buf, + struct ttm_base_object **p_base) { struct vmw_user_dma_buffer *user_bo; struct ttm_buffer_object *tmp; @@ -517,6 +518,10 @@ } *p_dma_buf = &user_bo->dma; + if (p_base) { + *p_base = &user_bo->prime.base; + kref_get(&(*p_base)->refcount); + } *handle = user_bo->prime.base.hash.key; out_no_base_object: @@ -633,6 +638,7 @@ struct vmw_dma_buffer *dma_buf; struct vmw_user_dma_buffer *user_bo; struct ttm_object_file *tfile = vmw_fpriv(file_priv)->tfile; + struct ttm_base_object *buffer_base; int ret; if ((arg->flags & (drm_vmw_synccpu_read | drm_vmw_synccpu_write)) == 0 @@ -645,7 +651,8 @@ switch (arg->op) { case drm_vmw_synccpu_grab: - ret = vmw_user_dmabuf_lookup(tfile, arg->handle, &dma_buf); + ret = vmw_user_dmabuf_lookup(tfile, arg->handle, &dma_buf, + &buffer_base); if (unlikely(ret != 0)) return ret; @@ -653,6 +660,7 @@ dma); ret = vmw_user_dmabuf_synccpu_grab(user_bo, tfile, arg->flags); vmw_dmabuf_unreference(&dma_buf); + ttm_base_object_unref(&buffer_base); if (unlikely(ret != 0 && ret != -ERESTARTSYS && ret != -EBUSY)) { DRM_ERROR("Failed synccpu grab on handle 0x%08x.\n", @@ -694,7 +702,8 @@ return ret; ret = vmw_user_dmabuf_alloc(dev_priv, vmw_fpriv(file_priv)->tfile, - req->size, false, &handle, &dma_buf); + req->size, false, &handle, &dma_buf, + NULL); if (unlikely(ret != 0)) goto out_no_dmabuf; @@ -723,7 +732,8 @@ } int vmw_user_dmabuf_lookup(struct ttm_object_file *tfile, - uint32_t handle, struct vmw_dma_buffer **out) + uint32_t handle, struct vmw_dma_buffer **out, + struct ttm_base_object **p_base) { struct vmw_user_dma_buffer *vmw_user_bo; struct ttm_base_object *base; @@ -745,7 +755,10 @@ vmw_user_bo = container_of(base, struct vmw_user_dma_buffer, prime.base); (void)ttm_bo_reference(&vmw_user_bo->dma.base); - ttm_base_object_unref(&base); + if (p_base) + *p_base = base; + else + ttm_base_object_unref(&base); *out = &vmw_user_bo->dma; return 0; @@ -1006,7 +1019,7 @@ ret = vmw_user_dmabuf_alloc(dev_priv, vmw_fpriv(file_priv)->tfile, args->size, false, &args->handle, - &dma_buf); + &dma_buf, NULL); if (unlikely(ret != 0)) goto out_no_dmabuf; @@ -1034,7 +1047,7 @@ struct vmw_dma_buffer *out_buf; int ret; - ret = vmw_user_dmabuf_lookup(tfile, handle, &out_buf); + ret = vmw_user_dmabuf_lookup(tfile, handle, &out_buf, NULL); if (ret != 0) return -EINVAL; --- linux-raspi2-4.2.0.orig/drivers/gpu/drm/vmwgfx/vmwgfx_shader.c +++ linux-raspi2-4.2.0/drivers/gpu/drm/vmwgfx/vmwgfx_shader.c @@ -470,7 +470,7 @@ if (arg->buffer_handle != SVGA3D_INVALID_ID) { ret = vmw_user_dmabuf_lookup(tfile, arg->buffer_handle, - &buffer); + &buffer, NULL); if (unlikely(ret != 0)) { DRM_ERROR("Could not find buffer for shader " "creation.\n"); --- linux-raspi2-4.2.0.orig/drivers/gpu/drm/vmwgfx/vmwgfx_surface.c +++ linux-raspi2-4.2.0/drivers/gpu/drm/vmwgfx/vmwgfx_surface.c @@ -43,6 +43,7 @@ struct vmw_surface srf; uint32_t size; struct drm_master *master; + struct ttm_base_object *backup_base; }; /** @@ -652,6 +653,8 @@ struct vmw_resource *res = &user_srf->srf.res; *p_base = NULL; + if (user_srf->backup_base) + ttm_base_object_unref(&user_srf->backup_base); vmw_resource_unreference(&res); } @@ -846,7 +849,8 @@ res->backup_size, true, &backup_handle, - &res->backup); + &res->backup, + &user_srf->backup_base); if (unlikely(ret != 0)) { vmw_resource_unreference(&res); goto out_unlock; @@ -1309,7 +1313,8 @@ if (req->buffer_handle != SVGA3D_INVALID_ID) { ret = vmw_user_dmabuf_lookup(tfile, req->buffer_handle, - &res->backup); + &res->backup, + &user_srf->backup_base); } else if (req->drm_surface_flags & drm_vmw_surface_flag_create_buffer) ret = vmw_user_dmabuf_alloc(dev_priv, tfile, @@ -1317,7 +1322,8 @@ req->drm_surface_flags & drm_vmw_surface_flag_shareable, &backup_handle, - &res->backup); + &res->backup, + &user_srf->backup_base); if (unlikely(ret != 0)) { vmw_resource_unreference(&res); --- linux-raspi2-4.2.0.orig/drivers/hid/hid-core.c +++ linux-raspi2-4.2.0/drivers/hid/hid-core.c @@ -1591,7 +1591,7 @@ "Multi-Axis Controller" }; const char *type, *bus; - char buf[64]; + char buf[64] = ""; unsigned int i; int len; int ret; @@ -2270,6 +2270,7 @@ { HID_USB_DEVICE(USB_VENDOR_ID_DELORME, USB_DEVICE_ID_DELORME_EM_LT20) }, { HID_USB_DEVICE(USB_VENDOR_ID_DREAM_CHEEKY, 0x0004) }, { HID_USB_DEVICE(USB_VENDOR_ID_DREAM_CHEEKY, 0x000a) }, + { HID_I2C_DEVICE(USB_VENDOR_ID_ELAN, 0x0400) }, { HID_USB_DEVICE(USB_VENDOR_ID_ESSENTIAL_REALITY, USB_DEVICE_ID_ESSENTIAL_REALITY_P5) }, { HID_USB_DEVICE(USB_VENDOR_ID_ETT, USB_DEVICE_ID_TC5UH) }, { HID_USB_DEVICE(USB_VENDOR_ID_ETT, USB_DEVICE_ID_TC4UM) }, --- linux-raspi2-4.2.0.orig/drivers/hid/hid-cp2112.c +++ linux-raspi2-4.2.0/drivers/hid/hid-cp2112.c @@ -537,7 +537,7 @@ struct cp2112_device *dev = (struct cp2112_device *)adap->algo_data; struct hid_device *hdev = dev->hdev; u8 buf[64]; - __be16 word; + __le16 word; ssize_t count; size_t read_length = 0; unsigned int retries; @@ -554,7 +554,7 @@ if (I2C_SMBUS_READ == read_write) count = cp2112_read_req(buf, addr, read_length); else - count = cp2112_write_req(buf, addr, data->byte, NULL, + count = cp2112_write_req(buf, addr, command, NULL, 0); break; case I2C_SMBUS_BYTE_DATA: @@ -569,7 +569,7 @@ break; case I2C_SMBUS_WORD_DATA: read_length = 2; - word = cpu_to_be16(data->word); + word = cpu_to_le16(data->word); if (I2C_SMBUS_READ == read_write) count = cp2112_write_read_req(buf, addr, read_length, @@ -582,7 +582,7 @@ size = I2C_SMBUS_WORD_DATA; read_write = I2C_SMBUS_READ; read_length = 2; - word = cpu_to_be16(data->word); + word = cpu_to_le16(data->word); count = cp2112_write_read_req(buf, addr, read_length, command, (u8 *)&word, 2); @@ -675,7 +675,7 @@ data->byte = buf[0]; break; case I2C_SMBUS_WORD_DATA: - data->word = be16_to_cpup((__be16 *)buf); + data->word = le16_to_cpup((__le16 *)buf); break; case I2C_SMBUS_BLOCK_DATA: if (read_length > I2C_SMBUS_BLOCK_MAX) { --- linux-raspi2-4.2.0.orig/drivers/hid/hid-lenovo.c +++ linux-raspi2-4.2.0/drivers/hid/hid-lenovo.c @@ -37,6 +37,7 @@ }; struct lenovo_drvdata_cptkbd { + u8 middlebutton_state; /* 0:Up, 1:Down (undecided), 2:Scrolling */ bool fn_lock; int sensitivity; }; @@ -146,10 +147,10 @@ switch (usage->hid & HID_USAGE) { case 0x0000: - hid_map_usage(hi, usage, bit, max, EV_REL, 0x06); + hid_map_usage(hi, usage, bit, max, EV_REL, REL_HWHEEL); return 1; case 0x0001: - hid_map_usage(hi, usage, bit, max, EV_REL, 0x08); + hid_map_usage(hi, usage, bit, max, EV_REL, REL_WHEEL); return 1; default: return -1; @@ -207,9 +208,12 @@ struct lenovo_drvdata_cptkbd *cptkbd_data = hid_get_drvdata(hdev); ret = lenovo_send_cmd_cptkbd(hdev, 0x05, cptkbd_data->fn_lock); - ret = lenovo_send_cmd_cptkbd(hdev, 0x02, cptkbd_data->sensitivity); if (ret) hid_err(hdev, "Fn-lock setting failed: %d\n", ret); + + ret = lenovo_send_cmd_cptkbd(hdev, 0x02, cptkbd_data->sensitivity); + if (ret) + hid_err(hdev, "Sensitivity setting failed: %d\n", ret); } static ssize_t attr_fn_lock_show_cptkbd(struct device *dev, @@ -313,6 +317,53 @@ return 0; } +static int lenovo_event_cptkbd(struct hid_device *hdev, + struct hid_field *field, struct hid_usage *usage, __s32 value) +{ + struct lenovo_drvdata_cptkbd *cptkbd_data = hid_get_drvdata(hdev); + + /* "wheel" scroll events */ + if (usage->type == EV_REL && (usage->code == REL_WHEEL || + usage->code == REL_HWHEEL)) { + /* Scroll events disable middle-click event */ + cptkbd_data->middlebutton_state = 2; + return 0; + } + + /* Middle click events */ + if (usage->type == EV_KEY && usage->code == BTN_MIDDLE) { + if (value == 1) { + cptkbd_data->middlebutton_state = 1; + } else if (value == 0) { + if (cptkbd_data->middlebutton_state == 1) { + /* No scrolling inbetween, send middle-click */ + input_event(field->hidinput->input, + EV_KEY, BTN_MIDDLE, 1); + input_sync(field->hidinput->input); + input_event(field->hidinput->input, + EV_KEY, BTN_MIDDLE, 0); + input_sync(field->hidinput->input); + } + cptkbd_data->middlebutton_state = 0; + } + return 1; + } + + return 0; +} + +static int lenovo_event(struct hid_device *hdev, struct hid_field *field, + struct hid_usage *usage, __s32 value) +{ + switch (hdev->product) { + case USB_DEVICE_ID_LENOVO_CUSBKBD: + case USB_DEVICE_ID_LENOVO_CBTKBD: + return lenovo_event_cptkbd(hdev, field, usage, value); + default: + return 0; + } +} + static int lenovo_features_set_tpkbd(struct hid_device *hdev) { struct hid_report *report; @@ -705,6 +756,7 @@ hid_warn(hdev, "Failed to switch middle button: %d\n", ret); /* Set keyboard settings to known state */ + cptkbd_data->middlebutton_state = 0; cptkbd_data->fn_lock = true; cptkbd_data->sensitivity = 0x05; lenovo_features_set_cptkbd(hdev); @@ -832,6 +884,7 @@ .probe = lenovo_probe, .remove = lenovo_remove, .raw_event = lenovo_raw_event, + .event = lenovo_event, .report_fixup = lenovo_report_fixup, }; module_hid_driver(lenovo_driver); --- linux-raspi2-4.2.0.orig/drivers/hid/hid-rmi.c +++ linux-raspi2-4.2.0/drivers/hid/hid-rmi.c @@ -33,6 +33,9 @@ #define RMI_READ_DATA_PENDING 1 #define RMI_STARTED 2 +#define RMI_SLEEP_NORMAL 0x0 +#define RMI_SLEEP_DEEP_SLEEP 0x1 + /* device flags */ #define RMI_DEVICE BIT(0) #define RMI_DEVICE_HAS_PHYS_BUTTONS BIT(1) @@ -126,6 +129,10 @@ unsigned long device_flags; unsigned long firmware_id; + + u8 f01_ctrl0; + u8 interrupt_enable_mask; + bool restore_interrupt_mask; }; #define RMI_PAGE(addr) (((addr) >> 8) & 0xff) @@ -346,13 +353,34 @@ } } +static int rmi_reset_attn_mode(struct hid_device *hdev) +{ + struct rmi_data *data = hid_get_drvdata(hdev); + int ret; + + ret = rmi_set_mode(hdev, RMI_MODE_ATTN_REPORTS); + if (ret) + return ret; + + if (data->restore_interrupt_mask) { + ret = rmi_write(hdev, data->f01.control_base_addr + 1, + &data->interrupt_enable_mask); + if (ret) { + hid_err(hdev, "can not write F01 control register\n"); + return ret; + } + } + + return 0; +} + static void rmi_reset_work(struct work_struct *work) { struct rmi_data *hdata = container_of(work, struct rmi_data, reset_work); /* switch the device to RMI if we receive a generic mouse report */ - rmi_set_mode(hdata->hdev, RMI_MODE_ATTN_REPORTS); + rmi_reset_attn_mode(hdata->hdev); } static inline int rmi_schedule_reset(struct hid_device *hdev) @@ -532,14 +560,56 @@ } #ifdef CONFIG_PM +static int rmi_set_sleep_mode(struct hid_device *hdev, int sleep_mode) +{ + struct rmi_data *data = hid_get_drvdata(hdev); + int ret; + u8 f01_ctrl0; + + f01_ctrl0 = (data->f01_ctrl0 & ~0x3) | sleep_mode; + + ret = rmi_write(hdev, data->f01.control_base_addr, + &f01_ctrl0); + if (ret) { + hid_err(hdev, "can not write sleep mode\n"); + return ret; + } + + return 0; +} + +static int rmi_suspend(struct hid_device *hdev, pm_message_t message) +{ + if (!device_may_wakeup(hdev->dev.parent)) + return rmi_set_sleep_mode(hdev, RMI_SLEEP_DEEP_SLEEP); + + return 0; +} + static int rmi_post_reset(struct hid_device *hdev) { - return rmi_set_mode(hdev, RMI_MODE_ATTN_REPORTS); + int ret; + + ret = rmi_reset_attn_mode(hdev); + if (ret) { + hid_err(hdev, "can not set rmi mode\n"); + return ret; + } + + if (!device_may_wakeup(hdev->dev.parent)) { + ret = rmi_set_sleep_mode(hdev, RMI_SLEEP_NORMAL); + if (ret) { + hid_err(hdev, "can not write sleep mode\n"); + return ret; + } + } + + return ret; } static int rmi_post_resume(struct hid_device *hdev) { - return rmi_set_mode(hdev, RMI_MODE_ATTN_REPORTS); + return rmi_reset_attn_mode(hdev); } #endif /* CONFIG_PM */ @@ -595,6 +665,7 @@ f->interrupt_count = pdt_entry->interrupt_source_count; f->irq_mask = rmi_gen_mask(f->interrupt_base, f->interrupt_count); + data->interrupt_enable_mask |= f->irq_mask; } } @@ -732,6 +803,35 @@ data->firmware_id += info[2] * 65536; } + ret = rmi_read_block(hdev, data->f01.control_base_addr, info, + 2); + + if (ret) { + hid_err(hdev, "can not read f01 ctrl registers\n"); + return ret; + } + + data->f01_ctrl0 = info[0]; + + if (!info[1]) { + /* + * Do to a firmware bug in some touchpads the F01 interrupt + * enable control register will be cleared on reset. + * This will stop the touchpad from reporting data, so + * if F01 CTRL1 is 0 then we need to explicitly enable + * interrupts for the functions we want data for. + */ + data->restore_interrupt_mask = true; + + ret = rmi_write(hdev, data->f01.control_base_addr + 1, + &data->interrupt_enable_mask); + if (ret) { + hid_err(hdev, "can not write to control reg 1: %d.\n", + ret); + return ret; + } + } + return 0; } @@ -1273,6 +1373,7 @@ .input_mapping = rmi_input_mapping, .input_configured = rmi_input_configured, #ifdef CONFIG_PM + .suspend = rmi_suspend, .resume = rmi_post_resume, .reset_resume = rmi_post_reset, #endif --- linux-raspi2-4.2.0.orig/drivers/hid/usbhid/hid-core.c +++ linux-raspi2-4.2.0/drivers/hid/usbhid/hid-core.c @@ -49,7 +49,7 @@ * Module parameters. */ -static unsigned int hid_mousepoll_interval; +static unsigned int hid_mousepoll_interval = ~0; module_param_named(mousepoll, hid_mousepoll_interval, uint, 0644); MODULE_PARM_DESC(mousepoll, "Polling interval of mice"); @@ -164,7 +164,7 @@ if (time_after(jiffies, usbhid->stop_retry)) { /* Retries failed, so do a port reset unless we lack bandwidth*/ - if (test_bit(HID_NO_BANDWIDTH, &usbhid->iofl) + if (!test_bit(HID_NO_BANDWIDTH, &usbhid->iofl) && !test_and_set_bit(HID_RESET_PENDING, &usbhid->iofl)) { schedule_work(&usbhid->reset_work); @@ -1090,8 +1090,12 @@ } /* Change the polling interval of mice. */ - if (hid->collection->usage == HID_GD_MOUSE && hid_mousepoll_interval > 0) - interval = hid_mousepoll_interval; + if (hid->collection->usage == HID_GD_MOUSE) { + if (hid_mousepoll_interval == ~0 && interval < 16) + interval = 16; + else if (hid_mousepoll_interval != ~0 && hid_mousepoll_interval != 0) + interval = hid_mousepoll_interval; + } ret = -ENOMEM; if (usb_endpoint_dir_in(endpoint)) { --- linux-raspi2-4.2.0.orig/drivers/hsi/controllers/omap_ssi_port.c +++ linux-raspi2-4.2.0/drivers/hsi/controllers/omap_ssi_port.c @@ -1111,7 +1111,7 @@ struct omap_ssi_port *omap_port; struct hsi_controller *ssi = dev_get_drvdata(pd->dev.parent); struct omap_ssi_controller *omap_ssi = hsi_controller_drvdata(ssi); - u32 cawake_gpio = 0; + int cawake_gpio = 0; u32 port_id; int err; --- linux-raspi2-4.2.0.orig/drivers/hsi/hsi.c +++ linux-raspi2-4.2.0/drivers/hsi/hsi.c @@ -300,7 +300,6 @@ if (device_register(&cl->device) < 0) { pr_err("hsi: failed to register client: %s\n", name); put_device(&cl->device); - goto err3; } return; --- linux-raspi2-4.2.0.orig/drivers/hv/channel.c +++ linux-raspi2-4.2.0/drivers/hv/channel.c @@ -601,6 +601,7 @@ u64 aligned_data = 0; int ret; bool signal = false; + int num_vecs = ((bufferlen != 0) ? 3 : 1); /* Setup the descriptor */ @@ -618,7 +619,8 @@ bufferlist[2].iov_base = &aligned_data; bufferlist[2].iov_len = (packetlen_aligned - packetlen); - ret = hv_ringbuffer_write(&channel->outbound, bufferlist, 3, &signal); + ret = hv_ringbuffer_write(&channel->outbound, bufferlist, num_vecs, + &signal); /* * Signalling the host is conditional on many factors: --- linux-raspi2-4.2.0.orig/drivers/hv/channel_mgmt.c +++ linux-raspi2-4.2.0/drivers/hv/channel_mgmt.c @@ -204,6 +204,8 @@ spin_lock_irqsave(&vmbus_connection.channel_lock, flags); list_del(&channel->listentry); spin_unlock_irqrestore(&vmbus_connection.channel_lock, flags); + + primary_channel = channel; } else { primary_channel = channel->primary_channel; spin_lock_irqsave(&primary_channel->lock, flags); @@ -211,6 +213,14 @@ primary_channel->num_sc--; spin_unlock_irqrestore(&primary_channel->lock, flags); } + + /* + * We need to free the bit for init_vp_index() to work in the case + * of sub-channel, when we reload drivers like hv_netvsc. + */ + cpumask_clear_cpu(channel->target_cpu, + &primary_channel->alloced_cpus_in_node); + free_channel(channel); } @@ -347,6 +357,7 @@ IDE = 0, SCSI, NIC, + ND_NIC, MAX_PERF_CHN, }; @@ -391,6 +402,7 @@ struct vmbus_channel *primary = channel->primary_channel; int next_node; struct cpumask available_mask; + struct cpumask *alloced_mask; for (i = IDE; i < MAX_PERF_CHN; i++) { if (!memcmp(type_guid->b, hp_devs[i].guid, @@ -408,7 +420,6 @@ * channel, bind it to cpu 0. */ channel->numa_node = 0; - cpumask_set_cpu(0, &channel->alloced_cpus_in_node); channel->target_cpu = 0; channel->target_vp = hv_context.vp_index[0]; return; @@ -433,21 +444,45 @@ channel->numa_node = next_node; primary = channel; } + alloced_mask = &hv_context.hv_numa_map[primary->numa_node]; - if (cpumask_weight(&primary->alloced_cpus_in_node) == + if (cpumask_weight(alloced_mask) == cpumask_weight(cpumask_of_node(primary->numa_node))) { /* * We have cycled through all the CPUs in the node; * reset the alloced map. */ - cpumask_clear(&primary->alloced_cpus_in_node); + cpumask_clear(alloced_mask); } - cpumask_xor(&available_mask, &primary->alloced_cpus_in_node, + cpumask_xor(&available_mask, alloced_mask, cpumask_of_node(primary->numa_node)); - cur_cpu = cpumask_next(-1, &available_mask); - cpumask_set_cpu(cur_cpu, &primary->alloced_cpus_in_node); + cur_cpu = -1; + while (true) { + cur_cpu = cpumask_next(cur_cpu, &available_mask); + if (cur_cpu >= nr_cpu_ids) { + cur_cpu = -1; + cpumask_copy(&available_mask, + cpumask_of_node(primary->numa_node)); + continue; + } + + /* + * NOTE: in the case of sub-channel, we clear the sub-channel + * related bit(s) in primary->alloced_cpus_in_node in + * hv_process_channel_removal(), so when we reload drivers + * like hv_netvsc in SMP guest, here we're able to re-allocate + * bit from primary->alloced_cpus_in_node. + */ + if (!cpumask_test_cpu(cur_cpu, + &primary->alloced_cpus_in_node)) { + cpumask_set_cpu(cur_cpu, + &primary->alloced_cpus_in_node); + cpumask_set_cpu(cur_cpu, alloced_mask); + break; + } + } channel->target_cpu = cur_cpu; channel->target_vp = hv_context.vp_index[cur_cpu]; @@ -469,6 +504,10 @@ { struct vmbus_channel_message_header hdr; + /* Pre-Win2012R2 hosts don't support reconnect */ + if (vmbus_proto_version < VERSION_WIN8_1) + return; + init_completion(&vmbus_connection.unload_event); memset(&hdr, 0, sizeof(struct vmbus_channel_message_header)); hdr.msgtype = CHANNELMSG_UNLOAD; --- linux-raspi2-4.2.0.orig/drivers/hv/hv.c +++ linux-raspi2-4.2.0/drivers/hv/hv.c @@ -33,6 +33,14 @@ #include #include "hyperv_vmbus.h" +#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 + /* The one and only */ struct hv_context hv_context = { .synic_initialized = false, @@ -93,11 +101,14 @@ */ static u64 do_hypercall(u64 control, void *input, void *output) { -#ifdef CONFIG_X86_64 - u64 hv_status = 0; u64 input_address = (input) ? virt_to_phys(input) : 0; u64 output_address = (output) ? virt_to_phys(output) : 0; void *hypercall_page = hv_context.hypercall_page; +#ifdef CONFIG_X86_64 + u64 hv_status = 0; + + if (!hypercall_page) + return (u64)ULLONG_MAX; __asm__ __volatile__("mov %0, %%r8" : : "r" (output_address) : "r8"); __asm__ __volatile__("call *%3" : "=a" (hv_status) : @@ -112,13 +123,13 @@ u32 control_lo = control & 0xFFFFFFFF; u32 hv_status_hi = 1; u32 hv_status_lo = 1; - u64 input_address = (input) ? virt_to_phys(input) : 0; u32 input_address_hi = input_address >> 32; u32 input_address_lo = input_address & 0xFFFFFFFF; - u64 output_address = (output) ? virt_to_phys(output) : 0; u32 output_address_hi = output_address >> 32; u32 output_address_lo = output_address & 0xFFFFFFFF; - void *hypercall_page = hv_context.hypercall_page; + + if (!hypercall_page) + return (u64)ULLONG_MAX; __asm__ __volatile__ ("call *%8" : "=d"(hv_status_hi), "=a"(hv_status_lo) : "d" (control_hi), @@ -130,6 +141,56 @@ #endif /* !x86_64 */ } +#ifdef CONFIG_X86_64 +static cycle_t read_hv_clock_tsc(struct clocksource *arg) +{ + cycle_t current_tick; + struct ms_hyperv_tsc_page *tsc_pg = hv_context.tsc_page; + + if (tsc_pg->tsc_sequence != -1) { + /* + * Use the tsc page to compute the value. + */ + + while (1) { + cycle_t tmp; + u32 sequence = tsc_pg->tsc_sequence; + u64 cur_tsc; + u64 scale = tsc_pg->tsc_scale; + s64 offset = tsc_pg->tsc_offset; + + rdtscll(cur_tsc); + /* current_tick = ((cur_tsc *scale) >> 64) + offset */ + asm("mulq %3" + : "=d" (current_tick), "=a" (tmp) + : "a" (cur_tsc), "r" (scale)); + + current_tick += offset; + if (tsc_pg->tsc_sequence == sequence) + return current_tick; + + if (tsc_pg->tsc_sequence != -1) + continue; + /* + * Fallback using MSR method. + */ + break; + } + } + rdmsrl(HV_X64_MSR_TIME_REF_COUNT, current_tick); + return current_tick; +} + +static struct clocksource hyperv_cs_tsc = { + .name = "hyperv_clocksource_tsc_page", + .rating = 425, + .read = read_hv_clock_tsc, + .mask = CLOCKSOURCE_MASK(64), + .flags = CLOCK_SOURCE_IS_CONTINUOUS, +}; +#endif + + /* * hv_init - Main initialization routine. * @@ -139,7 +200,9 @@ { int max_leaf; union hv_x64_msr_hypercall_contents hypercall_msr; + union hv_x64_msr_hypercall_contents tsc_msr; void *virtaddr = NULL; + void *va_tsc = NULL; memset(hv_context.synic_event_page, 0, sizeof(void *) * NR_CPUS); memset(hv_context.synic_message_page, 0, @@ -158,7 +221,7 @@ /* * Write our OS ID. */ - hv_context.guestid = generate_guest_id(0, LINUX_VERSION_CODE, 0); + hv_context.guestid = generate_guest_id(0x80 /*Canonical*/, LINUX_VERSION_CODE, PKG_ABI); wrmsrl(HV_X64_MSR_GUEST_OS_ID, hv_context.guestid); /* See if the hypercall page is already set */ @@ -183,6 +246,22 @@ hv_context.hypercall_page = virtaddr; +#ifdef CONFIG_X86_64 + if (ms_hyperv.features & HV_X64_MSR_REFERENCE_TSC_AVAILABLE) { + va_tsc = __vmalloc(PAGE_SIZE, GFP_KERNEL, PAGE_KERNEL); + if (!va_tsc) + goto cleanup; + hv_context.tsc_page = va_tsc; + + rdmsrl(HV_X64_MSR_REFERENCE_TSC, tsc_msr.as_uint64); + + tsc_msr.enable = 1; + tsc_msr.guest_physical_address = vmalloc_to_pfn(va_tsc); + + wrmsrl(HV_X64_MSR_REFERENCE_TSC, tsc_msr.as_uint64); + clocksource_register_hz(&hyperv_cs_tsc, NSEC_PER_SEC/100); + } +#endif return 0; cleanup: @@ -216,6 +295,21 @@ vfree(hv_context.hypercall_page); hv_context.hypercall_page = NULL; } + +#ifdef CONFIG_X86_64 + /* + * Cleanup the TSC page based CS. + */ + if (ms_hyperv.features & HV_X64_MSR_REFERENCE_TSC_AVAILABLE) { + clocksource_change_rating(&hyperv_cs_tsc, 10); + clocksource_unregister(&hyperv_cs_tsc); + + hypercall_msr.as_uint64 = 0; + wrmsrl(HV_X64_MSR_REFERENCE_TSC, hypercall_msr.as_uint64); + vfree(hv_context.tsc_page); + hv_context.tsc_page = NULL; + } +#endif } /* @@ -271,7 +365,7 @@ { cycle_t current_tick; - WARN_ON(evt->mode != CLOCK_EVT_MODE_ONESHOT); + WARN_ON(!clockevent_state_oneshot(evt)); rdmsrl(HV_X64_MSR_TIME_REF_COUNT, current_tick); current_tick += delta; @@ -279,31 +373,24 @@ return 0; } -static void hv_ce_setmode(enum clock_event_mode mode, - struct clock_event_device *evt) +static int hv_ce_shutdown(struct clock_event_device *evt) +{ + wrmsrl(HV_X64_MSR_STIMER0_COUNT, 0); + wrmsrl(HV_X64_MSR_STIMER0_CONFIG, 0); + + return 0; +} + +static int hv_ce_set_oneshot(struct clock_event_device *evt) { union hv_timer_config timer_cfg; - switch (mode) { - case CLOCK_EVT_MODE_PERIODIC: - /* unsupported */ - break; - - case CLOCK_EVT_MODE_ONESHOT: - timer_cfg.enable = 1; - timer_cfg.auto_enable = 1; - timer_cfg.sintx = VMBUS_MESSAGE_SINT; - wrmsrl(HV_X64_MSR_STIMER0_CONFIG, timer_cfg.as_uint64); - break; - - case CLOCK_EVT_MODE_UNUSED: - case CLOCK_EVT_MODE_SHUTDOWN: - wrmsrl(HV_X64_MSR_STIMER0_COUNT, 0); - wrmsrl(HV_X64_MSR_STIMER0_CONFIG, 0); - break; - case CLOCK_EVT_MODE_RESUME: - break; - } + timer_cfg.enable = 1; + timer_cfg.auto_enable = 1; + timer_cfg.sintx = VMBUS_MESSAGE_SINT; + wrmsrl(HV_X64_MSR_STIMER0_CONFIG, timer_cfg.as_uint64); + + return 0; } static void hv_init_clockevent_device(struct clock_event_device *dev, int cpu) @@ -318,7 +405,8 @@ * references to the hv_vmbus module making it impossible to unload. */ - dev->set_mode = hv_ce_setmode; + dev->set_state_shutdown = hv_ce_shutdown; + dev->set_state_oneshot = hv_ce_set_oneshot; dev->set_next_event = hv_ce_set_next_event; } @@ -329,6 +417,13 @@ size_t ced_size = sizeof(struct clock_event_device); int cpu; + hv_context.hv_numa_map = kzalloc(sizeof(struct cpumask) * nr_node_ids, + GFP_ATOMIC); + if (hv_context.hv_numa_map == NULL) { + pr_err("Unable to allocate NUMA map\n"); + goto err; + } + for_each_online_cpu(cpu) { hv_context.event_dpc[cpu] = kmalloc(size, GFP_ATOMIC); if (hv_context.event_dpc[cpu] == NULL) { @@ -342,6 +437,7 @@ pr_err("Unable to allocate clock event device\n"); goto err; } + hv_init_clockevent_device(hv_context.clk_evt[cpu], cpu); hv_context.synic_message_page[cpu] = @@ -390,6 +486,7 @@ { int cpu; + kfree(hv_context.hv_numa_map); for_each_online_cpu(cpu) hv_synic_free_cpu(cpu); } @@ -503,8 +600,7 @@ /* Turn off clockevent device */ if (ms_hyperv.features & HV_X64_MSR_SYNTIMER_AVAILABLE) - hv_ce_setmode(CLOCK_EVT_MODE_SHUTDOWN, - hv_context.clk_evt[cpu]); + hv_ce_shutdown(hv_context.clk_evt[cpu]); rdmsrl(HV_X64_MSR_SINT0 + VMBUS_MESSAGE_SINT, shared_sint.as_uint64); @@ -530,6 +626,4 @@ rdmsrl(HV_X64_MSR_SCONTROL, sctrl.as_uint64); sctrl.enable = 0; wrmsrl(HV_X64_MSR_SCONTROL, sctrl.as_uint64); - - hv_synic_free_cpu(cpu); } --- linux-raspi2-4.2.0.orig/drivers/hv/hv_balloon.c +++ linux-raspi2-4.2.0/drivers/hv/hv_balloon.c @@ -62,11 +62,13 @@ enum { DYNMEM_PROTOCOL_VERSION_1 = DYNMEM_MAKE_VERSION(0, 3), DYNMEM_PROTOCOL_VERSION_2 = DYNMEM_MAKE_VERSION(1, 0), + DYNMEM_PROTOCOL_VERSION_3 = DYNMEM_MAKE_VERSION(2, 0), DYNMEM_PROTOCOL_VERSION_WIN7 = DYNMEM_PROTOCOL_VERSION_1, DYNMEM_PROTOCOL_VERSION_WIN8 = DYNMEM_PROTOCOL_VERSION_2, + DYNMEM_PROTOCOL_VERSION_WIN10 = DYNMEM_PROTOCOL_VERSION_3, - DYNMEM_PROTOCOL_VERSION_CURRENT = DYNMEM_PROTOCOL_VERSION_WIN8 + DYNMEM_PROTOCOL_VERSION_CURRENT = DYNMEM_PROTOCOL_VERSION_WIN10 }; @@ -1296,13 +1298,25 @@ if (dm->next_version == 0) goto version_error; - dm->next_version = 0; memset(&version_req, 0, sizeof(struct dm_version_request)); version_req.hdr.type = DM_VERSION_REQUEST; version_req.hdr.size = sizeof(struct dm_version_request); version_req.hdr.trans_id = atomic_inc_return(&trans_id); - version_req.version.version = DYNMEM_PROTOCOL_VERSION_WIN7; - version_req.is_last_attempt = 1; + version_req.version.version = dm->next_version; + + /* + * Set the next version to try in case current version fails. + * Win7 protocol ought to be the last one to try. + */ + switch (version_req.version.version) { + case DYNMEM_PROTOCOL_VERSION_WIN8: + dm->next_version = DYNMEM_PROTOCOL_VERSION_WIN7; + version_req.is_last_attempt = 0; + break; + default: + dm->next_version = 0; + version_req.is_last_attempt = 1; + } ret = vmbus_sendpacket(dm->dev->channel, &version_req, sizeof(struct dm_version_request), @@ -1442,7 +1456,7 @@ dm_device.dev = dev; dm_device.state = DM_INITIALIZING; - dm_device.next_version = DYNMEM_PROTOCOL_VERSION_WIN7; + dm_device.next_version = DYNMEM_PROTOCOL_VERSION_WIN8; init_completion(&dm_device.host_event); init_completion(&dm_device.config_event); INIT_LIST_HEAD(&dm_device.ha_region_list); @@ -1474,7 +1488,7 @@ version_req.hdr.type = DM_VERSION_REQUEST; version_req.hdr.size = sizeof(struct dm_version_request); version_req.hdr.trans_id = atomic_inc_return(&trans_id); - version_req.version.version = DYNMEM_PROTOCOL_VERSION_WIN8; + version_req.version.version = DYNMEM_PROTOCOL_VERSION_WIN10; version_req.is_last_attempt = 0; ret = vmbus_sendpacket(dev->channel, &version_req, --- linux-raspi2-4.2.0.orig/drivers/hv/hv_fcopy.c +++ linux-raspi2-4.2.0/drivers/hv/hv_fcopy.c @@ -116,7 +116,7 @@ static void fcopy_send_data(struct work_struct *dummy) { - struct hv_start_fcopy smsg_out; + struct hv_start_fcopy *smsg_out = NULL; int operation = fcopy_transaction.fcopy_msg->operation; struct hv_start_fcopy *smsg_in; void *out_src; @@ -136,21 +136,24 @@ switch (operation) { case START_FILE_COPY: out_len = sizeof(struct hv_start_fcopy); - memset(&smsg_out, 0, out_len); - smsg_out.hdr.operation = operation; + smsg_out = kzalloc(sizeof(*smsg_out), GFP_KERNEL); + if (!smsg_out) + return; + + smsg_out->hdr.operation = operation; smsg_in = (struct hv_start_fcopy *)fcopy_transaction.fcopy_msg; utf16s_to_utf8s((wchar_t *)smsg_in->file_name, W_MAX_PATH, UTF16_LITTLE_ENDIAN, - (__u8 *)&smsg_out.file_name, W_MAX_PATH - 1); + (__u8 *)&smsg_out->file_name, W_MAX_PATH - 1); utf16s_to_utf8s((wchar_t *)smsg_in->path_name, W_MAX_PATH, UTF16_LITTLE_ENDIAN, - (__u8 *)&smsg_out.path_name, W_MAX_PATH - 1); + (__u8 *)&smsg_out->path_name, W_MAX_PATH - 1); - smsg_out.copy_flags = smsg_in->copy_flags; - smsg_out.file_size = smsg_in->file_size; - out_src = &smsg_out; + smsg_out->copy_flags = smsg_in->copy_flags; + smsg_out->file_size = smsg_in->file_size; + out_src = smsg_out; break; default: @@ -168,6 +171,8 @@ fcopy_transaction.state = HVUTIL_READY; } } + kfree(smsg_out); + return; } --- linux-raspi2-4.2.0.orig/drivers/hv/hv_kvp.c +++ linux-raspi2-4.2.0/drivers/hv/hv_kvp.c @@ -353,6 +353,9 @@ return; message = kzalloc(sizeof(*message), GFP_KERNEL); + if (!message) + return; + message->kvp_hdr.operation = operation; message->kvp_hdr.pool = pool; in_msg = kvp_transaction.kvp_msg; --- linux-raspi2-4.2.0.orig/drivers/hv/hv_utils_transport.c +++ linux-raspi2-4.2.0/drivers/hv/hv_utils_transport.c @@ -186,7 +186,7 @@ return -EINVAL; } else if (hvt->mode == HVUTIL_TRANSPORT_NETLINK) { cn_msg = kzalloc(sizeof(*cn_msg) + len, GFP_ATOMIC); - if (!msg) + if (!cn_msg) return -ENOMEM; cn_msg->id.idx = hvt->cn_id.idx; cn_msg->id.val = hvt->cn_id.val; --- linux-raspi2-4.2.0.orig/drivers/hv/hyperv_vmbus.h +++ linux-raspi2-4.2.0/drivers/hv/hyperv_vmbus.h @@ -141,7 +141,7 @@ struct { u32 target_sint; u32 target_vp; - u16 base_flag_bumber; + u16 base_flag_number; u16 flag_count; u32 rsvdz; } event_port_info; @@ -517,6 +517,7 @@ u64 guestid; void *hypercall_page; + void *tsc_page; bool synic_initialized; @@ -551,10 +552,23 @@ * Support PV clockevent device. */ struct clock_event_device *clk_evt[NR_CPUS]; + /* + * To manage allocations in a NUMA node. + * Array indexed by numa node ID. + */ + struct cpumask *hv_numa_map; }; extern struct hv_context hv_context; +struct ms_hyperv_tsc_page { + volatile u32 tsc_sequence; + u32 reserved1; + volatile u64 tsc_scale; + volatile s64 tsc_offset; + u64 reserved2[509]; +}; + struct hv_ring_buffer_debug_info { u32 current_interrupt_mask; u32 current_read_index; --- linux-raspi2-4.2.0.orig/drivers/hv/ring_buffer.c +++ linux-raspi2-4.2.0/drivers/hv/ring_buffer.c @@ -103,10 +103,9 @@ * there is room for the producer to send the pending packet. */ -static bool hv_need_to_signal_on_read(u32 old_rd, - struct hv_ring_buffer_info *rbi) +static bool hv_need_to_signal_on_read(u32 prev_write_sz, + struct hv_ring_buffer_info *rbi) { - u32 prev_write_sz; u32 cur_write_sz; u32 r_size; u32 write_loc = rbi->ring_buffer->write_index; @@ -123,10 +122,6 @@ cur_write_sz = write_loc >= read_loc ? r_size - (write_loc - read_loc) : read_loc - write_loc; - prev_write_sz = write_loc >= old_rd ? r_size - (write_loc - old_rd) : - old_rd - write_loc; - - if ((prev_write_sz < pending_sz) && (cur_write_sz >= pending_sz)) return true; @@ -517,7 +512,6 @@ u32 next_read_location = 0; u64 prev_indices = 0; unsigned long flags; - u32 old_read; if (buflen <= 0) return -EINVAL; @@ -528,8 +522,6 @@ &bytes_avail_toread, &bytes_avail_towrite); - old_read = bytes_avail_toread; - /* Make sure there is something to read */ if (bytes_avail_toread < buflen) { spin_unlock_irqrestore(&inring_info->ring_lock, flags); @@ -560,7 +552,7 @@ spin_unlock_irqrestore(&inring_info->ring_lock, flags); - *signal = hv_need_to_signal_on_read(old_read, inring_info); + *signal = hv_need_to_signal_on_read(bytes_avail_towrite, inring_info); return 0; } --- linux-raspi2-4.2.0.orig/drivers/hv/vmbus_drv.c +++ linux-raspi2-4.2.0/drivers/hv/vmbus_drv.c @@ -39,6 +39,8 @@ #include #include #include +#include +#include #include "hyperv_vmbus.h" static struct acpi_device *hv_acpi_dev; @@ -48,12 +50,18 @@ static int irq; -static int hyperv_panic_event(struct notifier_block *nb, - unsigned long event, void *ptr) +static void hyperv_report_panic(struct pt_regs *regs) { - struct pt_regs *regs; + static bool panic_reported; - regs = current_pt_regs(); + /* + * We prefer to report panic on 'die' chain as we have proper + * registers to report, but if we miss it (e.g. on BUG()) we need + * to report it on 'panic'. + */ + if (panic_reported) + return; + panic_reported = true; wrmsrl(HV_X64_MSR_CRASH_P0, regs->ip); wrmsrl(HV_X64_MSR_CRASH_P1, regs->ax); @@ -65,18 +73,37 @@ * Let Hyper-V know there is crash data available */ wrmsrl(HV_X64_MSR_CRASH_CTL, HV_CRASH_CTL_CRASH_NOTIFY); +} + +static int hyperv_panic_event(struct notifier_block *nb, unsigned long val, + void *args) +{ + struct pt_regs *regs; + + regs = current_pt_regs(); + + hyperv_report_panic(regs); + return NOTIFY_DONE; +} + +static int hyperv_die_event(struct notifier_block *nb, unsigned long val, + void *args) +{ + struct die_args *die = (struct die_args *)args; + struct pt_regs *regs = die->regs; + + hyperv_report_panic(regs); return NOTIFY_DONE; } +static struct notifier_block hyperv_die_block = { + .notifier_call = hyperv_die_event, +}; static struct notifier_block hyperv_panic_block = { .notifier_call = hyperv_panic_event, }; -struct resource hyperv_mmio = { - .name = "hyperv mmio", - .flags = IORESOURCE_MEM, -}; -EXPORT_SYMBOL_GPL(hyperv_mmio); +struct resource *hyperv_mmio; static int vmbus_exists(void) { @@ -414,6 +441,43 @@ } static DEVICE_ATTR_RO(in_write_bytes_avail); +static ssize_t channel_vp_mapping_show(struct device *dev, + struct device_attribute *dev_attr, + char *buf) +{ + struct hv_device *hv_dev = device_to_hv_device(dev); + struct vmbus_channel *channel = hv_dev->channel, *cur_sc; + unsigned long flags; + int buf_size = PAGE_SIZE, n_written, tot_written; + struct list_head *cur; + + if (!channel) + return -ENODEV; + + tot_written = snprintf(buf, buf_size, "%u:%u\n", + channel->offermsg.child_relid, channel->target_cpu); + + spin_lock_irqsave(&channel->lock, flags); + + list_for_each(cur, &channel->sc_list) { + if (tot_written >= buf_size - 1) + break; + + cur_sc = list_entry(cur, struct vmbus_channel, sc_list); + n_written = scnprintf(buf + tot_written, + buf_size - tot_written, + "%u:%u\n", + cur_sc->offermsg.child_relid, + cur_sc->target_cpu); + tot_written += n_written; + } + + spin_unlock_irqrestore(&channel->lock, flags); + + return tot_written; +} +static DEVICE_ATTR_RO(channel_vp_mapping); + /* Set up per device attributes in /sys/bus/vmbus/devices/ */ static struct attribute *vmbus_attrs[] = { &dev_attr_id.attr, @@ -438,6 +502,7 @@ &dev_attr_in_write_index.attr, &dev_attr_in_read_bytes_avail.attr, &dev_attr_in_write_bytes_avail.attr, + &dev_attr_channel_vp_mapping.attr, NULL, }; ATTRIBUTE_GROUPS(vmbus); @@ -763,38 +828,6 @@ } } -#ifdef CONFIG_HOTPLUG_CPU -static int hyperv_cpu_disable(void) -{ - return -ENOSYS; -} - -static void hv_cpu_hotplug_quirk(bool vmbus_loaded) -{ - static void *previous_cpu_disable; - - /* - * Offlining a CPU when running on newer hypervisors (WS2012R2, Win8, - * ...) is not supported at this moment as channel interrupts are - * distributed across all of them. - */ - - if ((vmbus_proto_version == VERSION_WS2008) || - (vmbus_proto_version == VERSION_WIN7)) - return; - - if (vmbus_loaded) { - previous_cpu_disable = smp_ops.cpu_disable; - smp_ops.cpu_disable = hyperv_cpu_disable; - pr_notice("CPU offlining is not supported by hypervisor\n"); - } else if (previous_cpu_disable) - smp_ops.cpu_disable = previous_cpu_disable; -} -#else -static void hv_cpu_hotplug_quirk(bool vmbus_loaded) -{ -} -#endif /* * vmbus_bus_init -Main vmbus driver initialization routine. @@ -836,12 +869,14 @@ if (ret) goto err_alloc; - hv_cpu_hotplug_quirk(true); + if (vmbus_proto_version > VERSION_WIN7) + cpu_hotplug_disable(); /* * Only register if the crash MSRs are available */ - if (ms_hyperv.features & HV_FEATURE_GUEST_CRASH_MSR_AVAILABLE) { + if (ms_hyperv.misc_features & HV_FEATURE_GUEST_CRASH_MSR_AVAILABLE) { + register_die_notifier(&hyperv_die_block); atomic_notifier_chain_register(&panic_notifier_list, &hyperv_panic_block); } @@ -863,8 +898,8 @@ } /** - * __vmbus_child_driver_register - Register a vmbus's driver - * @drv: Pointer to driver structure you want to register + * __vmbus_child_driver_register() - Register a vmbus's driver + * @hv_driver: Pointer to driver structure you want to register * @owner: owner module of the drv * @mod_name: module name string * @@ -896,7 +931,8 @@ /** * vmbus_driver_unregister() - Unregister a vmbus's driver - * @drv: Pointer to driver structure you want to un-register + * @hv_driver: Pointer to driver structure you want to + * un-register * * Un-register the given driver that was previous registered with a call to * vmbus_driver_register() @@ -982,30 +1018,184 @@ /* - * VMBUS is an acpi enumerated device. Get the the information we + * VMBUS is an acpi enumerated device. Get the information we * need from DSDT. */ - +#define VTPM_BASE_ADDRESS 0xfed40000 static acpi_status vmbus_walk_resources(struct acpi_resource *res, void *ctx) { + resource_size_t start = 0; + resource_size_t end = 0; + struct resource *new_res; + struct resource **old_res = &hyperv_mmio; + struct resource **prev_res = NULL; + switch (res->type) { case ACPI_RESOURCE_TYPE_IRQ: irq = res->data.irq.interrupts[0]; + return AE_OK; + + /* + * "Address" descriptors are for bus windows. Ignore + * "memory" descriptors, which are for registers on + * devices. + */ + case ACPI_RESOURCE_TYPE_ADDRESS32: + start = res->data.address32.address.minimum; + end = res->data.address32.address.maximum; break; case ACPI_RESOURCE_TYPE_ADDRESS64: - hyperv_mmio.start = res->data.address64.address.minimum; - hyperv_mmio.end = res->data.address64.address.maximum; + start = res->data.address64.address.minimum; + end = res->data.address64.address.maximum; break; + + default: + /* Unused resource type */ + return AE_OK; + } + /* + * Ignore ranges that are below 1MB, as they're not + * necessary or useful here. + */ + if (end < 0x100000) + return AE_OK; + + new_res = kzalloc(sizeof(*new_res), GFP_ATOMIC); + if (!new_res) + return AE_NO_MEMORY; + + /* If this range overlaps the virtual TPM, truncate it. */ + if (end > VTPM_BASE_ADDRESS && start < VTPM_BASE_ADDRESS) + end = VTPM_BASE_ADDRESS; + + new_res->name = "hyperv mmio"; + new_res->flags = IORESOURCE_MEM; + new_res->start = start; + new_res->end = end; + + do { + if (!*old_res) { + *old_res = new_res; + break; + } + + if ((*old_res)->end < new_res->start) { + new_res->sibling = *old_res; + if (prev_res) + (*prev_res)->sibling = new_res; + *old_res = new_res; + break; + } + + prev_res = old_res; + old_res = &(*old_res)->sibling; + + } while (1); return AE_OK; } +static int vmbus_acpi_remove(struct acpi_device *device) +{ + struct resource *cur_res; + struct resource *next_res; + + if (hyperv_mmio) { + for (cur_res = hyperv_mmio; cur_res; cur_res = next_res) { + next_res = cur_res->sibling; + kfree(cur_res); + } + } + + return 0; +} + +/** + * vmbus_allocate_mmio() - Pick a memory-mapped I/O range. + * @new: If successful, supplied a pointer to the + * allocated MMIO space. + * @device_obj: Identifies the caller + * @min: Minimum guest physical address of the + * allocation + * @max: Maximum guest physical address + * @size: Size of the range to be allocated + * @align: Alignment of the range to be allocated + * @fb_overlap_ok: Whether this allocation can be allowed + * to overlap the video frame buffer. + * + * This function walks the resources granted to VMBus by the + * _CRS object in the ACPI namespace underneath the parent + * "bridge" whether that's a root PCI bus in the Generation 1 + * case or a Module Device in the Generation 2 case. It then + * attempts to allocate from the global MMIO pool in a way that + * matches the constraints supplied in these parameters and by + * that _CRS. + * + * Return: 0 on success, -errno on failure + */ +int vmbus_allocate_mmio(struct resource **new, struct hv_device *device_obj, + resource_size_t min, resource_size_t max, + resource_size_t size, resource_size_t align, + bool fb_overlap_ok) +{ + struct resource *iter; + resource_size_t range_min, range_max, start, local_min, local_max; + const char *dev_n = dev_name(&device_obj->device); + u32 fb_end = screen_info.lfb_base + (screen_info.lfb_size << 1); + int i; + + for (iter = hyperv_mmio; iter; iter = iter->sibling) { + if ((iter->start >= max) || (iter->end <= min)) + continue; + + range_min = iter->start; + range_max = iter->end; + + /* If this range overlaps the frame buffer, split it into + two tries. */ + for (i = 0; i < 2; i++) { + local_min = range_min; + local_max = range_max; + if (fb_overlap_ok || (range_min >= fb_end) || + (range_max <= screen_info.lfb_base)) { + i++; + } else { + if ((range_min <= screen_info.lfb_base) && + (range_max >= screen_info.lfb_base)) { + /* + * The frame buffer is in this window, + * so trim this into the part that + * preceeds the frame buffer. + */ + local_max = screen_info.lfb_base - 1; + range_min = fb_end; + } else { + range_min = fb_end; + continue; + } + } + + start = (local_min + align - 1) & ~(align - 1); + for (; start + size - 1 <= local_max; start += align) { + *new = request_mem_region_exclusive(start, size, + dev_n); + if (*new) + return 0; + } + } + } + + return -ENXIO; +} +EXPORT_SYMBOL_GPL(vmbus_allocate_mmio); + static int vmbus_acpi_add(struct acpi_device *device) { acpi_status result; int ret_val = -ENODEV; + struct acpi_device *ancestor; hv_acpi_dev = device; @@ -1015,35 +1205,27 @@ if (ACPI_FAILURE(result)) goto acpi_walk_err; /* - * The parent of the vmbus acpi device (Gen2 firmware) is the VMOD that - * has the mmio ranges. Get that. + * Some ancestor of the vmbus acpi device (Gen1 or Gen2 + * firmware) is the VMOD that has the mmio ranges. Get that. */ - if (device->parent) { - result = acpi_walk_resources(device->parent->handle, - METHOD_NAME__CRS, - vmbus_walk_resources, NULL); + for (ancestor = device->parent; ancestor; ancestor = ancestor->parent) { + result = acpi_walk_resources(ancestor->handle, METHOD_NAME__CRS, + vmbus_walk_resources, NULL); if (ACPI_FAILURE(result)) - goto acpi_walk_err; - if (hyperv_mmio.start && hyperv_mmio.end) - request_resource(&iomem_resource, &hyperv_mmio); + continue; + if (hyperv_mmio) + break; } ret_val = 0; acpi_walk_err: complete(&probe_event); + if (ret_val) + vmbus_acpi_remove(device); return ret_val; } -static int vmbus_acpi_remove(struct acpi_device *device) -{ - int ret = 0; - - if (hyperv_mmio.start && hyperv_mmio.end) - ret = release_resource(&hyperv_mmio); - return ret; -} - static const struct acpi_device_id vmbus_acpi_device_ids[] = { {"VMBUS", 0}, {"VMBus", 0}, @@ -1060,6 +1242,29 @@ }, }; +static void hv_kexec_handler(void) +{ + int cpu; + + hv_synic_clockevents_cleanup(); + vmbus_initiate_unload(); + for_each_online_cpu(cpu) + smp_call_function_single(cpu, hv_synic_cleanup, NULL, 1); + hv_cleanup(); +}; + +static void hv_crash_handler(struct pt_regs *regs) +{ + vmbus_initiate_unload(); + /* + * In crash handler we can't schedule synic cleanup for all CPUs, + * doing the cleanup for current CPU only. This should be sufficient + * for kdump. + */ + hv_synic_cleanup(NULL); + hv_cleanup(); +}; + static int __init hv_acpi_init(void) { int ret, t; @@ -1092,6 +1297,9 @@ if (ret) goto cleanup; + hv_setup_kexec_handler(hv_kexec_handler); + hv_setup_crash_handler(hv_crash_handler); + return 0; cleanup: @@ -1104,13 +1312,16 @@ { int cpu; + hv_remove_kexec_handler(); + hv_remove_crash_handler(); vmbus_connection.conn_state = DISCONNECTED; hv_synic_clockevents_cleanup(); vmbus_disconnect(); hv_remove_vmbus_irq(); tasklet_kill(&msg_dpc); vmbus_free_channels(); - if (ms_hyperv.features & HV_FEATURE_GUEST_CRASH_MSR_AVAILABLE) { + if (ms_hyperv.misc_features & HV_FEATURE_GUEST_CRASH_MSR_AVAILABLE) { + unregister_die_notifier(&hyperv_die_block); atomic_notifier_chain_unregister(&panic_notifier_list, &hyperv_panic_block); } @@ -1120,8 +1331,10 @@ tasklet_kill(hv_context.event_dpc[cpu]); smp_call_function_single(cpu, hv_synic_cleanup, NULL, 1); } + hv_synic_free(); acpi_bus_unregister_driver(&vmbus_acpi_driver); - hv_cpu_hotplug_quirk(false); + if (vmbus_proto_version > VERSION_WIN7) + cpu_hotplug_enable(); } --- linux-raspi2-4.2.0.orig/drivers/hwmon/nct6775.c +++ linux-raspi2-4.2.0/drivers/hwmon/nct6775.c @@ -354,6 +354,10 @@ /* NCT6776 specific data */ +/* STEP_UP_TIME and STEP_DOWN_TIME regs are swapped for all chips but NCT6775 */ +#define NCT6776_REG_FAN_STEP_UP_TIME NCT6775_REG_FAN_STEP_DOWN_TIME +#define NCT6776_REG_FAN_STEP_DOWN_TIME NCT6775_REG_FAN_STEP_UP_TIME + static const s8 NCT6776_ALARM_BITS[] = { 0, 1, 2, 3, 8, 21, 20, 16, /* in0.. in7 */ 17, -1, -1, -1, -1, -1, -1, /* in8..in14 */ @@ -3528,8 +3532,8 @@ data->REG_FAN_PULSES = NCT6776_REG_FAN_PULSES; data->FAN_PULSE_SHIFT = NCT6775_FAN_PULSE_SHIFT; data->REG_FAN_TIME[0] = NCT6775_REG_FAN_STOP_TIME; - data->REG_FAN_TIME[1] = NCT6775_REG_FAN_STEP_UP_TIME; - data->REG_FAN_TIME[2] = NCT6775_REG_FAN_STEP_DOWN_TIME; + data->REG_FAN_TIME[1] = NCT6776_REG_FAN_STEP_UP_TIME; + data->REG_FAN_TIME[2] = NCT6776_REG_FAN_STEP_DOWN_TIME; data->REG_TOLERANCE_H = NCT6776_REG_TOLERANCE_H; data->REG_PWM[0] = NCT6775_REG_PWM; data->REG_PWM[1] = NCT6775_REG_FAN_START_OUTPUT; @@ -3600,8 +3604,8 @@ data->REG_FAN_PULSES = NCT6779_REG_FAN_PULSES; data->FAN_PULSE_SHIFT = NCT6775_FAN_PULSE_SHIFT; data->REG_FAN_TIME[0] = NCT6775_REG_FAN_STOP_TIME; - data->REG_FAN_TIME[1] = NCT6775_REG_FAN_STEP_UP_TIME; - data->REG_FAN_TIME[2] = NCT6775_REG_FAN_STEP_DOWN_TIME; + data->REG_FAN_TIME[1] = NCT6776_REG_FAN_STEP_UP_TIME; + data->REG_FAN_TIME[2] = NCT6776_REG_FAN_STEP_DOWN_TIME; data->REG_TOLERANCE_H = NCT6776_REG_TOLERANCE_H; data->REG_PWM[0] = NCT6775_REG_PWM; data->REG_PWM[1] = NCT6775_REG_FAN_START_OUTPUT; @@ -3677,8 +3681,8 @@ data->REG_FAN_PULSES = NCT6779_REG_FAN_PULSES; data->FAN_PULSE_SHIFT = NCT6775_FAN_PULSE_SHIFT; data->REG_FAN_TIME[0] = NCT6775_REG_FAN_STOP_TIME; - data->REG_FAN_TIME[1] = NCT6775_REG_FAN_STEP_UP_TIME; - data->REG_FAN_TIME[2] = NCT6775_REG_FAN_STEP_DOWN_TIME; + data->REG_FAN_TIME[1] = NCT6776_REG_FAN_STEP_UP_TIME; + data->REG_FAN_TIME[2] = NCT6776_REG_FAN_STEP_DOWN_TIME; data->REG_TOLERANCE_H = NCT6776_REG_TOLERANCE_H; data->REG_PWM[0] = NCT6775_REG_PWM; data->REG_PWM[1] = NCT6775_REG_FAN_START_OUTPUT; --- linux-raspi2-4.2.0.orig/drivers/i2c/busses/Kconfig +++ linux-raspi2-4.2.0/drivers/i2c/busses/Kconfig @@ -8,6 +8,25 @@ comment "PC SMBus host controller drivers" depends on PCI +config I2C_BCM2708 + tristate "BCM2708 BSC" + depends on MACH_BCM2708 || MACH_BCM2709 || ARCH_BCM2835 + help + Enabling this option will add BSC (Broadcom Serial Controller) + support for the BCM2708. BSC is a Broadcom proprietary bus compatible + with I2C/TWI/SMBus. + +config I2C_BCM2708_BAUDRATE + prompt "BCM2708 I2C baudrate" + depends on I2C_BCM2708 + int + default 100000 + help + Set the I2C baudrate. This will alter the default value. A + different baudrate can be set by using a module parameter as well. If + no parameter is provided when loading, this is the value that will be + used. + config I2C_ALI1535 tristate "ALI 1535" depends on PCI @@ -362,7 +381,7 @@ config I2C_BCM2835 tristate "Broadcom BCM2835 I2C controller" - depends on ARCH_BCM2835 + depends on ARCH_BCM2835 || ARCH_BCM2708 || ARCH_BCM2709 help If you say yes to this option, support will be included for the BCM2835 I2C controller. --- linux-raspi2-4.2.0.orig/drivers/i2c/busses/Makefile +++ linux-raspi2-4.2.0/drivers/i2c/busses/Makefile @@ -2,6 +2,8 @@ # Makefile for the i2c bus drivers. # +obj-$(CONFIG_I2C_BCM2708) += i2c-bcm2708.o + # ACPI drivers obj-$(CONFIG_I2C_SCMI) += i2c-scmi.o --- linux-raspi2-4.2.0.orig/drivers/i2c/busses/i2c-at91.c +++ linux-raspi2-4.2.0/drivers/i2c/busses/i2c-at91.c @@ -347,8 +347,14 @@ static void at91_twi_read_next_byte(struct at91_twi_dev *dev) { - if (!dev->buf_len) + /* + * If we are in this case, it means there is garbage data in RHR, so + * delete them. + */ + if (!dev->buf_len) { + at91_twi_read(dev, AT91_TWI_RHR); return; + } /* 8bit read works with and without FIFO */ *dev->buf = readb_relaxed(dev->base + AT91_TWI_RHR); @@ -465,19 +471,73 @@ if (!irqstatus) return IRQ_NONE; - else if (irqstatus & AT91_TWI_RXRDY) + /* + * In reception, the behavior of the twi device (before sama5d2) is + * weird. There is some magic about RXRDY flag! When a data has been + * almost received, the reception of a new one is anticipated if there + * is no stop command to send. That is the reason why ask for sending + * the stop command not on the last data but on the second last one. + * + * Unfortunately, we could still have the RXRDY flag set even if the + * transfer is done and we have read the last data. It might happen + * when the i2c slave device sends too quickly data after receiving the + * ack from the master. The data has been almost received before having + * the order to send stop. In this case, sending the stop command could + * cause a RXRDY interrupt with a TXCOMP one. It is better to manage + * the RXRDY interrupt first in order to not keep garbage data in the + * Receive Holding Register for the next transfer. + */ + if (irqstatus & AT91_TWI_RXRDY) at91_twi_read_next_byte(dev); - else if (irqstatus & AT91_TWI_TXRDY) - at91_twi_write_next_byte(dev); - - /* catch error flags */ - dev->transfer_status |= status; + /* + * When a NACK condition is detected, the I2C controller sets the NACK, + * TXCOMP and TXRDY bits all together in the Status Register (SR). + * + * 1 - Handling NACK errors with CPU write transfer. + * + * In such case, we should not write the next byte into the Transmit + * Holding Register (THR) otherwise the I2C controller would start a new + * transfer and the I2C slave is likely to reply by another NACK. + * + * 2 - Handling NACK errors with DMA write transfer. + * + * By setting the TXRDY bit in the SR, the I2C controller also triggers + * the DMA controller to write the next data into the THR. Then the + * result depends on the hardware version of the I2C controller. + * + * 2a - Without support of the Alternative Command mode. + * + * This is the worst case: the DMA controller is triggered to write the + * next data into the THR, hence starting a new transfer: the I2C slave + * is likely to reply by another NACK. + * Concurrently, this interrupt handler is likely to be called to manage + * the first NACK before the I2C controller detects the second NACK and + * sets once again the NACK bit into the SR. + * When handling the first NACK, this interrupt handler disables the I2C + * controller interruptions, especially the NACK interrupt. + * Hence, the NACK bit is pending into the SR. This is why we should + * read the SR to clear all pending interrupts at the beginning of + * at91_do_twi_transfer() before actually starting a new transfer. + * + * 2b - With support of the Alternative Command mode. + * + * When a NACK condition is detected, the I2C controller also locks the + * THR (and sets the LOCK bit in the SR): even though the DMA controller + * is triggered by the TXRDY bit to write the next data into the THR, + * this data actually won't go on the I2C bus hence a second NACK is not + * generated. + */ if (irqstatus & (AT91_TWI_TXCOMP | AT91_TWI_NACK)) { at91_disable_twi_interrupts(dev); complete(&dev->cmd_complete); + } else if (irqstatus & AT91_TWI_TXRDY) { + at91_twi_write_next_byte(dev); } + /* catch error flags */ + dev->transfer_status |= status; + return IRQ_HANDLED; } @@ -537,6 +597,9 @@ reinit_completion(&dev->cmd_complete); dev->transfer_status = 0; + /* Clear pending interrupts, such as NACK. */ + at91_twi_read(dev, AT91_TWI_SR); + if (dev->fifo_size) { unsigned fifo_mr = at91_twi_read(dev, AT91_TWI_FMR); @@ -558,11 +621,6 @@ } else if (dev->msg->flags & I2C_M_RD) { unsigned start_flags = AT91_TWI_START; - if (at91_twi_read(dev, AT91_TWI_SR) & AT91_TWI_RXRDY) { - dev_err(dev->dev, "RXRDY still set!"); - at91_twi_read(dev, AT91_TWI_RHR); - } - /* if only one byte is to be read, immediately stop transfer */ if (!has_alt_cmd && dev->buf_len <= 1 && !(dev->msg->flags & I2C_M_RECV_LEN)) --- linux-raspi2-4.2.0.orig/drivers/i2c/busses/i2c-bcm2708.c +++ linux-raspi2-4.2.0/drivers/i2c/busses/i2c-bcm2708.c @@ -0,0 +1,528 @@ +/* + * Driver for Broadcom BCM2708 BSC Controllers + * + * Copyright (C) 2012 Chris Boot & Frank Buss + * + * This driver is inspired by: + * i2c-ocores.c, by Peter Korsgaard + * + * 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 +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +/* BSC register offsets */ +#define BSC_C 0x00 +#define BSC_S 0x04 +#define BSC_DLEN 0x08 +#define BSC_A 0x0c +#define BSC_FIFO 0x10 +#define BSC_DIV 0x14 +#define BSC_DEL 0x18 +#define BSC_CLKT 0x1c + +/* Bitfields in BSC_C */ +#define BSC_C_I2CEN 0x00008000 +#define BSC_C_INTR 0x00000400 +#define BSC_C_INTT 0x00000200 +#define BSC_C_INTD 0x00000100 +#define BSC_C_ST 0x00000080 +#define BSC_C_CLEAR_1 0x00000020 +#define BSC_C_CLEAR_2 0x00000010 +#define BSC_C_READ 0x00000001 + +/* Bitfields in BSC_S */ +#define BSC_S_CLKT 0x00000200 +#define BSC_S_ERR 0x00000100 +#define BSC_S_RXF 0x00000080 +#define BSC_S_TXE 0x00000040 +#define BSC_S_RXD 0x00000020 +#define BSC_S_TXD 0x00000010 +#define BSC_S_RXR 0x00000008 +#define BSC_S_TXW 0x00000004 +#define BSC_S_DONE 0x00000002 +#define BSC_S_TA 0x00000001 + +#define I2C_WAIT_LOOP_COUNT 200 + +#define DRV_NAME "bcm2708_i2c" + +static unsigned int baudrate = CONFIG_I2C_BCM2708_BAUDRATE; +module_param(baudrate, uint, S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP); +MODULE_PARM_DESC(baudrate, "The I2C baudrate"); + +static bool combined = false; +module_param(combined, bool, 0644); +MODULE_PARM_DESC(combined, "Use combined transactions"); + +struct bcm2708_i2c { + struct i2c_adapter adapter; + + spinlock_t lock; + void __iomem *base; + int irq; + struct clk *clk; + u32 cdiv; + + struct completion done; + + struct i2c_msg *msg; + int pos; + int nmsgs; + bool error; +}; + +#ifdef CONFIG_ARCH_BCM2835 +static void bcm2708_i2c_init_pinmode(int id) { } +#else +/* + * This function sets the ALT mode on the I2C pins so that we can use them with + * the BSC hardware. + * + * FIXME: This is a hack. Use pinmux / pinctrl. + */ +static void bcm2708_i2c_init_pinmode(int id) +{ +#define INP_GPIO(g) *(gpio+((g)/10)) &= ~(7<<(((g)%10)*3)) +#define SET_GPIO_ALT(g,a) *(gpio+(((g)/10))) |= (((a)<=3?(a)+4:(a)==4?3:2)<<(((g)%10)*3)) + + int pin; + u32 *gpio = ioremap(GPIO_BASE, SZ_16K); + + BUG_ON(id != 0 && id != 1); + /* BSC0 is on GPIO 0 & 1, BSC1 is on GPIO 2 & 3 */ + for (pin = id*2+0; pin <= id*2+1; pin++) { + printk("bcm2708_i2c_init_pinmode(%d,%d)\n", id, pin); + INP_GPIO(pin); /* set mode to GPIO input first */ + SET_GPIO_ALT(pin, 0); /* set mode to ALT 0 */ + } + + iounmap(gpio); + +#undef INP_GPIO +#undef SET_GPIO_ALT +} +#endif + +static inline u32 bcm2708_rd(struct bcm2708_i2c *bi, unsigned reg) +{ + return readl(bi->base + reg); +} + +static inline void bcm2708_wr(struct bcm2708_i2c *bi, unsigned reg, u32 val) +{ + writel(val, bi->base + reg); +} + +static inline void bcm2708_bsc_reset(struct bcm2708_i2c *bi) +{ + bcm2708_wr(bi, BSC_C, 0); + bcm2708_wr(bi, BSC_S, BSC_S_CLKT | BSC_S_ERR | BSC_S_DONE); +} + +static inline void bcm2708_bsc_fifo_drain(struct bcm2708_i2c *bi) +{ + while ((bcm2708_rd(bi, BSC_S) & BSC_S_RXD) && (bi->pos < bi->msg->len)) + bi->msg->buf[bi->pos++] = bcm2708_rd(bi, BSC_FIFO); +} + +static inline void bcm2708_bsc_fifo_fill(struct bcm2708_i2c *bi) +{ + while ((bcm2708_rd(bi, BSC_S) & BSC_S_TXD) && (bi->pos < bi->msg->len)) + bcm2708_wr(bi, BSC_FIFO, bi->msg->buf[bi->pos++]); +} + +static inline int bcm2708_bsc_setup(struct bcm2708_i2c *bi) +{ + u32 cdiv, s; + u32 c = BSC_C_I2CEN | BSC_C_INTD | BSC_C_ST | BSC_C_CLEAR_1; + int wait_loops = I2C_WAIT_LOOP_COUNT; + + /* Can't call clk_get_rate as it locks a mutex and here we are spinlocked. + * Use the value that we cached in the probe. + */ + cdiv = bi->cdiv; + + if (bi->msg->flags & I2C_M_RD) + c |= BSC_C_INTR | BSC_C_READ; + else + c |= BSC_C_INTT; + + bcm2708_wr(bi, BSC_DIV, cdiv); + bcm2708_wr(bi, BSC_A, bi->msg->addr); + bcm2708_wr(bi, BSC_DLEN, bi->msg->len); + if (combined) + { + /* Do the next two messages meet combined transaction criteria? + - Current message is a write, next message is a read + - Both messages to same slave address + - Write message can fit inside FIFO (16 bytes or less) */ + if ( (bi->nmsgs > 1) && + !(bi->msg[0].flags & I2C_M_RD) && (bi->msg[1].flags & I2C_M_RD) && + (bi->msg[0].addr == bi->msg[1].addr) && (bi->msg[0].len <= 16)) { + /* Fill FIFO with entire write message (16 byte FIFO) */ + while (bi->pos < bi->msg->len) { + bcm2708_wr(bi, BSC_FIFO, bi->msg->buf[bi->pos++]); + } + /* Start write transfer (no interrupts, don't clear FIFO) */ + bcm2708_wr(bi, BSC_C, BSC_C_I2CEN | BSC_C_ST); + + /* poll for transfer start bit (should only take 1-20 polls) */ + do { + s = bcm2708_rd(bi, BSC_S); + } while (!(s & (BSC_S_TA | BSC_S_ERR | BSC_S_CLKT | BSC_S_DONE)) && --wait_loops >= 0); + + /* did we time out or some error occured? */ + if (wait_loops < 0 || (s & (BSC_S_ERR | BSC_S_CLKT))) { + return -1; + } + + /* Send next read message before the write transfer finishes. */ + bi->nmsgs--; + bi->msg++; + bi->pos = 0; + bcm2708_wr(bi, BSC_DLEN, bi->msg->len); + c = BSC_C_I2CEN | BSC_C_INTD | BSC_C_INTR | BSC_C_ST | BSC_C_READ; + } + } + bcm2708_wr(bi, BSC_C, c); + + return 0; +} + +static irqreturn_t bcm2708_i2c_interrupt(int irq, void *dev_id) +{ + struct bcm2708_i2c *bi = dev_id; + bool handled = true; + u32 s; + int ret; + + spin_lock(&bi->lock); + + /* we may see camera interrupts on the "other" I2C channel + Just return if we've not sent anything */ + if (!bi->nmsgs || !bi->msg) { + goto early_exit; + } + + s = bcm2708_rd(bi, BSC_S); + + if (s & (BSC_S_CLKT | BSC_S_ERR)) { + bcm2708_bsc_reset(bi); + bi->error = true; + + bi->msg = 0; /* to inform the that all work is done */ + bi->nmsgs = 0; + /* wake up our bh */ + complete(&bi->done); + } else if (s & BSC_S_DONE) { + bi->nmsgs--; + + if (bi->msg->flags & I2C_M_RD) { + bcm2708_bsc_fifo_drain(bi); + } + + bcm2708_bsc_reset(bi); + + if (bi->nmsgs) { + /* advance to next message */ + bi->msg++; + bi->pos = 0; + ret = bcm2708_bsc_setup(bi); + if (ret < 0) { + bcm2708_bsc_reset(bi); + bi->error = true; + bi->msg = 0; /* to inform the that all work is done */ + bi->nmsgs = 0; + /* wake up our bh */ + complete(&bi->done); + goto early_exit; + } + } else { + bi->msg = 0; /* to inform the that all work is done */ + bi->nmsgs = 0; + /* wake up our bh */ + complete(&bi->done); + } + } else if (s & BSC_S_TXW) { + bcm2708_bsc_fifo_fill(bi); + } else if (s & BSC_S_RXR) { + bcm2708_bsc_fifo_drain(bi); + } else { + handled = false; + } + +early_exit: + spin_unlock(&bi->lock); + + return handled ? IRQ_HANDLED : IRQ_NONE; +} + +static int bcm2708_i2c_master_xfer(struct i2c_adapter *adap, + struct i2c_msg *msgs, int num) +{ + struct bcm2708_i2c *bi = adap->algo_data; + unsigned long flags; + int ret; + + spin_lock_irqsave(&bi->lock, flags); + + reinit_completion(&bi->done); + bi->msg = msgs; + bi->pos = 0; + bi->nmsgs = num; + bi->error = false; + + ret = bcm2708_bsc_setup(bi); + + spin_unlock_irqrestore(&bi->lock, flags); + + /* check the result of the setup */ + if (ret < 0) + { + dev_err(&adap->dev, "transfer setup timed out\n"); + goto error_timeout; + } + + ret = wait_for_completion_timeout(&bi->done, adap->timeout); + if (ret == 0) { + dev_err(&adap->dev, "transfer timed out\n"); + goto error_timeout; + } + + ret = bi->error ? -EIO : num; + return ret; + +error_timeout: + spin_lock_irqsave(&bi->lock, flags); + bcm2708_bsc_reset(bi); + bi->msg = 0; /* to inform the interrupt handler that there's nothing else to be done */ + bi->nmsgs = 0; + spin_unlock_irqrestore(&bi->lock, flags); + return -ETIMEDOUT; +} + +static u32 bcm2708_i2c_functionality(struct i2c_adapter *adap) +{ + return I2C_FUNC_I2C | /*I2C_FUNC_10BIT_ADDR |*/ I2C_FUNC_SMBUS_EMUL; +} + +static struct i2c_algorithm bcm2708_i2c_algorithm = { + .master_xfer = bcm2708_i2c_master_xfer, + .functionality = bcm2708_i2c_functionality, +}; + +static int bcm2708_i2c_probe(struct platform_device *pdev) +{ + struct resource *regs; + int irq, err = -ENOMEM; + struct clk *clk; + struct bcm2708_i2c *bi; + struct i2c_adapter *adap; + unsigned long bus_hz; + u32 cdiv; + + if (pdev->dev.of_node) { + u32 bus_clk_rate; + pdev->id = of_alias_get_id(pdev->dev.of_node, "i2c"); + if (pdev->id < 0) { + dev_err(&pdev->dev, "alias is missing\n"); + return -EINVAL; + } + if (!of_property_read_u32(pdev->dev.of_node, + "clock-frequency", &bus_clk_rate)) + baudrate = bus_clk_rate; + else + dev_warn(&pdev->dev, + "Could not read clock-frequency property\n"); + } + + regs = platform_get_resource(pdev, IORESOURCE_MEM, 0); + if (!regs) { + dev_err(&pdev->dev, "could not get IO memory\n"); + return -ENXIO; + } + + irq = platform_get_irq(pdev, 0); + if (irq < 0) { + dev_err(&pdev->dev, "could not get IRQ\n"); + return irq; + } + + clk = clk_get(&pdev->dev, NULL); + if (IS_ERR(clk)) { + dev_err(&pdev->dev, "could not find clk: %ld\n", PTR_ERR(clk)); + return PTR_ERR(clk); + } + + err = clk_prepare_enable(clk); + if (err) { + dev_err(&pdev->dev, "could not enable clk: %d\n", err); + goto out_clk_put; + } + + if (!pdev->dev.of_node) + bcm2708_i2c_init_pinmode(pdev->id); + + bi = kzalloc(sizeof(*bi), GFP_KERNEL); + if (!bi) + goto out_clk_disable; + + platform_set_drvdata(pdev, bi); + + adap = &bi->adapter; + adap->class = I2C_CLASS_HWMON | I2C_CLASS_DDC; + adap->algo = &bcm2708_i2c_algorithm; + adap->algo_data = bi; + adap->dev.parent = &pdev->dev; + adap->nr = pdev->id; + strlcpy(adap->name, dev_name(&pdev->dev), sizeof(adap->name)); + adap->dev.of_node = pdev->dev.of_node; + + switch (pdev->id) { + case 0: + adap->class = I2C_CLASS_HWMON; + break; + case 1: + adap->class = I2C_CLASS_DDC; + break; + case 2: + adap->class = I2C_CLASS_DDC; + break; + default: + dev_err(&pdev->dev, "can only bind to BSC 0, 1 or 2\n"); + err = -ENXIO; + goto out_free_bi; + } + + spin_lock_init(&bi->lock); + init_completion(&bi->done); + + bi->base = ioremap(regs->start, resource_size(regs)); + if (!bi->base) { + dev_err(&pdev->dev, "could not remap memory\n"); + goto out_free_bi; + } + + bi->irq = irq; + bi->clk = clk; + + err = request_irq(irq, bcm2708_i2c_interrupt, IRQF_SHARED, + dev_name(&pdev->dev), bi); + if (err) { + dev_err(&pdev->dev, "could not request IRQ: %d\n", err); + goto out_iounmap; + } + + bcm2708_bsc_reset(bi); + + err = i2c_add_numbered_adapter(adap); + if (err < 0) { + dev_err(&pdev->dev, "could not add I2C adapter: %d\n", err); + goto out_free_irq; + } + + bus_hz = clk_get_rate(bi->clk); + cdiv = bus_hz / baudrate; + if (cdiv > 0xffff) { + cdiv = 0xffff; + baudrate = bus_hz / cdiv; + } + bi->cdiv = cdiv; + + dev_info(&pdev->dev, "BSC%d Controller at 0x%08lx (irq %d) (baudrate %d)\n", + pdev->id, (unsigned long)regs->start, irq, baudrate); + + return 0; + +out_free_irq: + free_irq(bi->irq, bi); +out_iounmap: + iounmap(bi->base); +out_free_bi: + kfree(bi); +out_clk_disable: + clk_disable_unprepare(clk); +out_clk_put: + clk_put(clk); + return err; +} + +static int bcm2708_i2c_remove(struct platform_device *pdev) +{ + struct bcm2708_i2c *bi = platform_get_drvdata(pdev); + + platform_set_drvdata(pdev, NULL); + + i2c_del_adapter(&bi->adapter); + free_irq(bi->irq, bi); + iounmap(bi->base); + clk_disable_unprepare(bi->clk); + clk_put(bi->clk); + kfree(bi); + + return 0; +} + +static const struct of_device_id bcm2708_i2c_of_match[] = { + { .compatible = "brcm,bcm2708-i2c" }, + {}, +}; +MODULE_DEVICE_TABLE(of, bcm2708_i2c_of_match); + +static struct platform_driver bcm2708_i2c_driver = { + .driver = { + .name = DRV_NAME, + .owner = THIS_MODULE, + .of_match_table = bcm2708_i2c_of_match, + }, + .probe = bcm2708_i2c_probe, + .remove = bcm2708_i2c_remove, +}; + +// module_platform_driver(bcm2708_i2c_driver); + + +static int __init bcm2708_i2c_init(void) +{ + return platform_driver_register(&bcm2708_i2c_driver); +} + +static void __exit bcm2708_i2c_exit(void) +{ + platform_driver_unregister(&bcm2708_i2c_driver); +} + +module_init(bcm2708_i2c_init); +module_exit(bcm2708_i2c_exit); + + + +MODULE_DESCRIPTION("BSC controller driver for Broadcom BCM2708"); +MODULE_AUTHOR("Chris Boot "); +MODULE_LICENSE("GPL v2"); +MODULE_ALIAS("platform:" DRV_NAME); --- linux-raspi2-4.2.0.orig/drivers/i2c/busses/i2c-designware-platdrv.c +++ linux-raspi2-4.2.0/drivers/i2c/busses/i2c-designware-platdrv.c @@ -24,6 +24,7 @@ #include #include #include +#include #include #include #include @@ -51,6 +52,22 @@ } #ifdef CONFIG_ACPI +/* + * The HCNT/LCNT information coming from ACPI should be the most accurate + * for given platform. However, some systems get it wrong. On such systems + * we get better results by calculating those based on the input clock. + */ +static const struct dmi_system_id dw_i2c_no_acpi_params[] = { + { + .ident = "Dell Inspiron 7348", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."), + DMI_MATCH(DMI_PRODUCT_NAME, "Inspiron 7348"), + }, + }, + { } +}; + static void dw_i2c_acpi_params(struct platform_device *pdev, char method[], u16 *hcnt, u16 *lcnt, u32 *sda_hold) { @@ -58,6 +75,9 @@ acpi_handle handle = ACPI_HANDLE(&pdev->dev); union acpi_object *obj; + if (dmi_check_system(dw_i2c_no_acpi_params)) + return; + if (ACPI_FAILURE(acpi_evaluate_object(handle, method, NULL, &buf))) return; @@ -253,12 +273,6 @@ adap->dev.parent = &pdev->dev; adap->dev.of_node = pdev->dev.of_node; - r = i2c_add_numbered_adapter(adap); - if (r) { - dev_err(&pdev->dev, "failure adding adapter\n"); - return r; - } - if (dev->pm_runtime_disabled) { pm_runtime_forbid(&pdev->dev); } else { @@ -268,6 +282,13 @@ pm_runtime_enable(&pdev->dev); } + r = i2c_add_numbered_adapter(adap); + if (r) { + dev_err(&pdev->dev, "failure adding adapter\n"); + pm_runtime_disable(&pdev->dev); + return r; + } + return 0; } --- linux-raspi2-4.2.0.orig/drivers/i2c/busses/i2c-i801.c +++ linux-raspi2-4.2.0/drivers/i2c/busses/i2c-i801.c @@ -88,12 +88,13 @@ #include #include #include +#include +#include #if (defined CONFIG_I2C_MUX_GPIO || defined CONFIG_I2C_MUX_GPIO_MODULE) && \ defined CONFIG_DMI #include #include -#include #endif /* I801 SMBus address offsets */ @@ -113,6 +114,16 @@ #define SMBPCICTL 0x004 #define SMBPCISTS 0x006 #define SMBHSTCFG 0x040 +#define TCOBASE 0x050 +#define TCOCTL 0x054 + +#define ACPIBASE 0x040 +#define ACPIBASE_SMI_OFF 0x030 +#define ACPICTRL 0x044 +#define ACPICTRL_EN 0x080 + +#define SBREG_BAR 0x10 +#define SBREG_SMBCTRL 0xc6000c /* Host status bits for SMBPCISTS */ #define SMBPCISTS_INTS 0x08 @@ -125,6 +136,9 @@ #define SMBHSTCFG_SMB_SMI_EN 2 #define SMBHSTCFG_I2C_EN 4 +/* TCO configuration bits for TCOCTL */ +#define TCOCTL_EN 0x0100 + /* Auxiliary control register bits, ICH4+ only */ #define SMBAUXCTL_CRC 1 #define SMBAUXCTL_E32B 2 @@ -221,6 +235,7 @@ const struct i801_mux_config *mux_drvdata; struct platform_device *mux_pdev; #endif + struct platform_device *tco_pdev; }; #define FEATURE_SMBUS_PEC (1 << 0) @@ -230,6 +245,7 @@ #define FEATURE_IRQ (1 << 4) /* Not really a feature, but it's convenient to handle it as such */ #define FEATURE_IDF (1 << 15) +#define FEATURE_TCO (1 << 16) static const char *i801_feature_names[] = { "SMBus PEC", @@ -1132,6 +1148,95 @@ } #endif +static const struct itco_wdt_platform_data tco_platform_data = { + .name = "Intel PCH", + .version = 4, +}; + +static DEFINE_SPINLOCK(p2sb_spinlock); + +static void i801_add_tco(struct i801_priv *priv) +{ + struct pci_dev *pci_dev = priv->pci_dev; + struct resource tco_res[3], *res; + struct platform_device *pdev; + unsigned int devfn; + u32 tco_base, tco_ctl; + u32 base_addr, ctrl_val; + u64 base64_addr; + + if (!(priv->features & FEATURE_TCO)) + return; + + pci_read_config_dword(pci_dev, TCOBASE, &tco_base); + pci_read_config_dword(pci_dev, TCOCTL, &tco_ctl); + if (!(tco_ctl & TCOCTL_EN)) + return; + + memset(tco_res, 0, sizeof(tco_res)); + + res = &tco_res[ICH_RES_IO_TCO]; + res->start = tco_base & ~1; + res->end = res->start + 32 - 1; + res->flags = IORESOURCE_IO; + + /* + * Power Management registers. + */ + devfn = PCI_DEVFN(PCI_SLOT(pci_dev->devfn), 2); + pci_bus_read_config_dword(pci_dev->bus, devfn, ACPIBASE, &base_addr); + + res = &tco_res[ICH_RES_IO_SMI]; + res->start = (base_addr & ~1) + ACPIBASE_SMI_OFF; + res->end = res->start + 3; + res->flags = IORESOURCE_IO; + + /* + * Enable the ACPI I/O space. + */ + pci_bus_read_config_dword(pci_dev->bus, devfn, ACPICTRL, &ctrl_val); + ctrl_val |= ACPICTRL_EN; + pci_bus_write_config_dword(pci_dev->bus, devfn, ACPICTRL, ctrl_val); + + /* + * We must access the NO_REBOOT bit over the Primary to Sideband + * bridge (P2SB). The BIOS prevents the P2SB device from being + * enumerated by the PCI subsystem, so we need to unhide/hide it + * to lookup the P2SB BAR. + */ + spin_lock(&p2sb_spinlock); + + devfn = PCI_DEVFN(PCI_SLOT(pci_dev->devfn), 1); + + /* Unhide the P2SB device */ + pci_bus_write_config_byte(pci_dev->bus, devfn, 0xe1, 0x0); + + pci_bus_read_config_dword(pci_dev->bus, devfn, SBREG_BAR, &base_addr); + base64_addr = base_addr & 0xfffffff0; + + pci_bus_read_config_dword(pci_dev->bus, devfn, SBREG_BAR + 0x4, &base_addr); + base64_addr |= (u64)base_addr << 32; + + /* Hide the P2SB device */ + pci_bus_write_config_byte(pci_dev->bus, devfn, 0xe1, 0x1); + spin_unlock(&p2sb_spinlock); + + res = &tco_res[ICH_RES_MEM_OFF]; + res->start = (resource_size_t)base64_addr + SBREG_SMBCTRL; + res->end = res->start + 3; + res->flags = IORESOURCE_MEM; + + pdev = platform_device_register_resndata(&pci_dev->dev, "iTCO_wdt", -1, + tco_res, 3, &tco_platform_data, + sizeof(tco_platform_data)); + if (IS_ERR(pdev)) { + dev_warn(&pci_dev->dev, "failed to create iTCO device\n"); + return; + } + + priv->tco_pdev = pdev; +} + static int i801_probe(struct pci_dev *dev, const struct pci_device_id *id) { unsigned char temp; @@ -1149,6 +1254,15 @@ priv->pci_dev = dev; switch (dev->device) { + case PCI_DEVICE_ID_INTEL_SUNRISEPOINT_H_SMBUS: + case PCI_DEVICE_ID_INTEL_SUNRISEPOINT_LP_SMBUS: + priv->features |= FEATURE_I2C_BLOCK_READ; + priv->features |= FEATURE_IRQ; + priv->features |= FEATURE_SMBUS_PEC; + priv->features |= FEATURE_BLOCK_BUFFER; + priv->features |= FEATURE_TCO; + break; + case PCI_DEVICE_ID_INTEL_PATSBURG_SMBUS_IDF0: case PCI_DEVICE_ID_INTEL_PATSBURG_SMBUS_IDF1: case PCI_DEVICE_ID_INTEL_PATSBURG_SMBUS_IDF2: @@ -1265,6 +1379,8 @@ dev_info(&dev->dev, "SMBus using %s\n", priv->features & FEATURE_IRQ ? "PCI interrupt" : "polling"); + i801_add_tco(priv); + /* set up the sysfs linkage to our parent device */ priv->adapter.dev.parent = &dev->dev; @@ -1296,6 +1412,8 @@ i2c_del_adapter(&priv->adapter); pci_write_config_byte(dev, SMBHSTCFG, priv->original_hstcfg); + platform_device_unregister(priv->tco_pdev); + /* * do not call pci_disable_device(dev) since it can cause hard hangs on * some systems during power-off (eg. Fujitsu-Siemens Lifebook E8010) --- linux-raspi2-4.2.0.orig/drivers/i2c/busses/i2c-img-scb.c +++ linux-raspi2-4.2.0/drivers/i2c/busses/i2c-img-scb.c @@ -278,8 +278,6 @@ #define ISR_COMPLETE(err) (ISR_COMPLETE_M | (ISR_STATUS_M & (err))) #define ISR_FATAL(err) (ISR_COMPLETE(err) | ISR_FATAL_M) -#define REL_SOC_IP_SCB_2_2_1 0x00020201 - enum img_i2c_mode { MODE_INACTIVE, MODE_RAW, @@ -536,6 +534,7 @@ u32 fifo_status; u8 data; + img_i2c_wr_rd_fence(i2c); fifo_status = img_i2c_readl(i2c, SCB_FIFO_STATUS_REG); if (fifo_status & FIFO_READ_EMPTY) break; @@ -544,7 +543,6 @@ *i2c->msg.buf = data; img_i2c_writel(i2c, SCB_READ_FIFO_REG, 0xff); - img_i2c_wr_rd_fence(i2c); i2c->msg.len--; i2c->msg.buf++; } @@ -556,12 +554,12 @@ while (i2c->msg.len) { u32 fifo_status; + img_i2c_wr_rd_fence(i2c); fifo_status = img_i2c_readl(i2c, SCB_FIFO_STATUS_REG); if (fifo_status & FIFO_WRITE_FULL) break; img_i2c_writel(i2c, SCB_WRITE_DATA_REG, *i2c->msg.buf); - img_i2c_wr_rd_fence(i2c); i2c->msg.len--; i2c->msg.buf++; } @@ -1062,6 +1060,15 @@ i2c->last_msg = (i == num - 1); reinit_completion(&i2c->msg_complete); + /* + * Clear line status and all interrupts before starting a + * transfer, as we may have unserviced interrupts from + * previous transfers that might be handled in the context + * of the new transfer. + */ + img_i2c_writel(i2c, SCB_INT_CLEAR_REG, ~0); + img_i2c_writel(i2c, SCB_CLEAR_REG, ~0); + if (atomic) img_i2c_atomic_start(i2c); else if (msg->flags & I2C_M_RD) @@ -1120,13 +1127,8 @@ return -EINVAL; } - if (rev == REL_SOC_IP_SCB_2_2_1) { - i2c->need_wr_rd_fence = true; - dev_info(i2c->adap.dev.parent, "fence quirk enabled"); - } - - bitrate_khz = i2c->bitrate / 1000; - clk_khz = clk_get_rate(i2c->scb_clk) / 1000; + /* Fencing enabled by default. */ + i2c->need_wr_rd_fence = true; /* Determine what mode we're in from the bitrate */ timing = timings[0]; @@ -1136,6 +1138,17 @@ break; } } + if (i2c->bitrate > timings[ARRAY_SIZE(timings) - 1].max_bitrate) { + dev_warn(i2c->adap.dev.parent, + "requested bitrate (%u) is higher than the max bitrate supported (%u)\n", + i2c->bitrate, + timings[ARRAY_SIZE(timings) - 1].max_bitrate); + timing = timings[ARRAY_SIZE(timings) - 1]; + i2c->bitrate = timing.max_bitrate; + } + + bitrate_khz = i2c->bitrate / 1000; + clk_khz = clk_get_rate(i2c->scb_clk) / 1000; /* Find the prescale that would give us that inc (approx delay = 0) */ prescale = SCB_OPT_INC * clk_khz / (256 * 16 * bitrate_khz); @@ -1182,32 +1195,32 @@ ((bitrate_khz * clk_period) / 2)) int_bitrate++; - /* Setup TCKH value */ - tckh = timing.tckh / clk_period; - if (timing.tckh % clk_period) - tckh++; + /* + * Setup clock duty cycle, start with 50% and adjust TCKH and TCKL + * values from there if they don't meet minimum timing requirements + */ + tckh = int_bitrate / 2; + tckl = int_bitrate - tckh; - if (tckh > 0) - data = tckh - 1; - else - data = 0; + /* Adjust TCKH and TCKL values */ + data = DIV_ROUND_UP(timing.tckl, clk_period); - img_i2c_writel(i2c, SCB_TIME_TCKH_REG, data); + if (tckl < data) { + tckl = data; + tckh = int_bitrate - tckl; + } - /* Setup TCKL value */ - tckl = int_bitrate - tckh; + if (tckh > 0) + --tckh; if (tckl > 0) - data = tckl - 1; - else - data = 0; + --tckl; - img_i2c_writel(i2c, SCB_TIME_TCKL_REG, data); + img_i2c_writel(i2c, SCB_TIME_TCKH_REG, tckh); + img_i2c_writel(i2c, SCB_TIME_TCKL_REG, tckl); /* Setup TSDH value */ - tsdh = timing.tsdh / clk_period; - if (timing.tsdh % clk_period) - tsdh++; + tsdh = DIV_ROUND_UP(timing.tsdh, clk_period); if (tsdh > 1) data = tsdh - 1; --- linux-raspi2-4.2.0.orig/drivers/i2c/busses/i2c-mv64xxx.c +++ linux-raspi2-4.2.0/drivers/i2c/busses/i2c-mv64xxx.c @@ -669,8 +669,6 @@ struct i2c_msg *msgs = drv_data->msgs; int num = drv_data->num_msgs; - return false; - if (!drv_data->offload_enabled) return false; --- linux-raspi2-4.2.0.orig/drivers/i2c/busses/i2c-rcar.c +++ linux-raspi2-4.2.0/drivers/i2c/busses/i2c-rcar.c @@ -690,15 +690,16 @@ return ret; } + pm_runtime_enable(dev); + platform_set_drvdata(pdev, priv); + ret = i2c_add_numbered_adapter(adap); if (ret < 0) { dev_err(dev, "reg adap failed: %d\n", ret); + pm_runtime_disable(dev); return ret; } - pm_runtime_enable(dev); - platform_set_drvdata(pdev, priv); - dev_info(dev, "probed\n"); return 0; --- linux-raspi2-4.2.0.orig/drivers/i2c/busses/i2c-s3c2410.c +++ linux-raspi2-4.2.0/drivers/i2c/busses/i2c-s3c2410.c @@ -1243,17 +1243,19 @@ i2c->adap.nr = i2c->pdata->bus_num; i2c->adap.dev.of_node = pdev->dev.of_node; + platform_set_drvdata(pdev, i2c); + + pm_runtime_enable(&pdev->dev); + ret = i2c_add_numbered_adapter(&i2c->adap); if (ret < 0) { dev_err(&pdev->dev, "failed to add bus to i2c core\n"); + pm_runtime_disable(&pdev->dev); s3c24xx_i2c_deregister_cpufreq(i2c); clk_unprepare(i2c->clk); return ret; } - platform_set_drvdata(pdev, i2c); - - pm_runtime_enable(&pdev->dev); pm_runtime_enable(&i2c->adap.dev); dev_info(&pdev->dev, "%s: S3C I2C adapter\n", dev_name(&i2c->adap.dev)); --- linux-raspi2-4.2.0.orig/drivers/i2c/busses/i2c-xgene-slimpro.c +++ linux-raspi2-4.2.0/drivers/i2c/busses/i2c-xgene-slimpro.c @@ -198,10 +198,10 @@ int rc; paddr = dma_map_single(ctx->dev, ctx->dma_buffer, readlen, DMA_FROM_DEVICE); - rc = dma_mapping_error(ctx->dev, paddr); - if (rc) { + if (dma_mapping_error(ctx->dev, paddr)) { dev_err(&ctx->adapter.dev, "Error in mapping dma buffer %p\n", ctx->dma_buffer); + rc = -ENOMEM; goto err; } @@ -241,10 +241,10 @@ memcpy(ctx->dma_buffer, data, writelen); paddr = dma_map_single(ctx->dev, ctx->dma_buffer, writelen, DMA_TO_DEVICE); - rc = dma_mapping_error(ctx->dev, paddr); - if (rc) { + if (dma_mapping_error(ctx->dev, paddr)) { dev_err(&ctx->adapter.dev, "Error in mapping dma buffer %p\n", ctx->dma_buffer); + rc = -ENOMEM; goto err; } --- linux-raspi2-4.2.0.orig/drivers/idle/intel_idle.c +++ linux-raspi2-4.2.0/drivers/idle/intel_idle.c @@ -591,6 +591,67 @@ .enter = NULL } }; +static struct cpuidle_state skl_cstates[] = { + { + .name = "C1-SKL", + .desc = "MWAIT 0x00", + .flags = MWAIT2flg(0x00), + .exit_latency = 2, + .target_residency = 2, + .enter = &intel_idle, + .enter_freeze = intel_idle_freeze, }, + { + .name = "C1E-SKL", + .desc = "MWAIT 0x01", + .flags = MWAIT2flg(0x01), + .exit_latency = 10, + .target_residency = 20, + .enter = &intel_idle, + .enter_freeze = intel_idle_freeze, }, + { + .name = "C3-SKL", + .desc = "MWAIT 0x10", + .flags = MWAIT2flg(0x10) | CPUIDLE_FLAG_TLB_FLUSHED, + .exit_latency = 70, + .target_residency = 100, + .enter = &intel_idle, + .enter_freeze = intel_idle_freeze, }, + { + .name = "C6-SKL", + .desc = "MWAIT 0x20", + .flags = MWAIT2flg(0x20) | CPUIDLE_FLAG_TLB_FLUSHED, + .exit_latency = 75, + .target_residency = 200, + .enter = &intel_idle, + .enter_freeze = intel_idle_freeze, }, + { + .name = "C7s-SKL", + .desc = "MWAIT 0x33", + .flags = MWAIT2flg(0x33) | CPUIDLE_FLAG_TLB_FLUSHED, + .exit_latency = 124, + .target_residency = 800, + .enter = &intel_idle, + .enter_freeze = intel_idle_freeze, }, + { + .name = "C8-SKL", + .desc = "MWAIT 0x40", + .flags = MWAIT2flg(0x40) | CPUIDLE_FLAG_TLB_FLUSHED, + .exit_latency = 174, + .target_residency = 800, + .enter = &intel_idle, + .enter_freeze = intel_idle_freeze, }, + { + .name = "C10-SKL", + .desc = "MWAIT 0x60", + .flags = MWAIT2flg(0x60) | CPUIDLE_FLAG_TLB_FLUSHED, + .exit_latency = 890, + .target_residency = 5000, + .enter = &intel_idle, + .enter_freeze = intel_idle_freeze, }, + { + .enter = NULL } +}; + static struct cpuidle_state atom_cstates[] = { { .name = "C1E-ATM", @@ -810,6 +871,12 @@ .disable_promotion_to_c1e = true, }; +static const struct idle_cpu idle_cpu_skl = { + .state_table = skl_cstates, + .disable_promotion_to_c1e = true, +}; + + static const struct idle_cpu idle_cpu_avn = { .state_table = avn_cstates, .disable_promotion_to_c1e = true, @@ -844,6 +911,8 @@ ICPU(0x47, idle_cpu_bdw), ICPU(0x4f, idle_cpu_bdw), ICPU(0x56, idle_cpu_bdw), + ICPU(0x4e, idle_cpu_skl), + ICPU(0x5e, idle_cpu_skl), {} }; MODULE_DEVICE_TABLE(x86cpu, intel_idle_ids); --- linux-raspi2-4.2.0.orig/drivers/iio/accel/mma8452.c +++ linux-raspi2-4.2.0/drivers/iio/accel/mma8452.c @@ -229,7 +229,7 @@ int i = mma8452_get_odr_index(data); return mma8452_get_int_plus_micros_index(mma8452_hp_filter_cutoff[i], - ARRAY_SIZE(mma8452_scales[0]), val, val2); + ARRAY_SIZE(mma8452_hp_filter_cutoff[0]), val, val2); } static int mma8452_read_hp_filter(struct mma8452_data *data, int *hz, int *uHz) --- linux-raspi2-4.2.0.orig/drivers/iio/accel/st_accel_core.c +++ linux-raspi2-4.2.0/drivers/iio/accel/st_accel_core.c @@ -149,8 +149,6 @@ #define ST_ACCEL_4_BDU_MASK 0x40 #define ST_ACCEL_4_DRDY_IRQ_ADDR 0x21 #define ST_ACCEL_4_DRDY_IRQ_INT1_MASK 0x04 -#define ST_ACCEL_4_IG1_EN_ADDR 0x21 -#define ST_ACCEL_4_IG1_EN_MASK 0x08 #define ST_ACCEL_4_MULTIREAD_BIT true /* CUSTOM VALUES FOR SENSOR 5 */ @@ -484,10 +482,6 @@ .drdy_irq = { .addr = ST_ACCEL_4_DRDY_IRQ_ADDR, .mask_int1 = ST_ACCEL_4_DRDY_IRQ_INT1_MASK, - .ig1 = { - .en_addr = ST_ACCEL_4_IG1_EN_ADDR, - .en_mask = ST_ACCEL_4_IG1_EN_MASK, - }, }, .multi_read_bit = ST_ACCEL_4_MULTIREAD_BIT, .bootime = 2, /* guess */ --- linux-raspi2-4.2.0.orig/drivers/iio/gyro/Kconfig +++ linux-raspi2-4.2.0/drivers/iio/gyro/Kconfig @@ -53,7 +53,8 @@ config BMG160 tristate "BOSCH BMG160 Gyro Sensor" depends on I2C - select IIO_TRIGGERED_BUFFER if IIO_BUFFER + select IIO_BUFFER + select IIO_TRIGGERED_BUFFER help Say yes here to build support for Bosch BMG160 Tri-axis Gyro Sensor driver. This driver also supports BMI055 gyroscope. --- linux-raspi2-4.2.0.orig/drivers/iio/imu/adis16400_core.c +++ linux-raspi2-4.2.0/drivers/iio/imu/adis16400_core.c @@ -780,7 +780,7 @@ .flags = ADIS16400_HAS_PROD_ID | ADIS16400_HAS_SERIAL_NUMBER | ADIS16400_BURST_DIAG_STAT, - .gyro_scale_micro = IIO_DEGREE_TO_RAD(10000), /* 0.01 deg/s */ + .gyro_scale_micro = IIO_DEGREE_TO_RAD(40000), /* 0.04 deg/s */ .accel_scale_micro = IIO_G_TO_M_S_2(833), /* 1/1200 g */ .temp_scale_nano = 73860000, /* 0.07386 C */ .temp_offset = 31000000 / 73860, /* 31 C = 0x00 */ --- linux-raspi2-4.2.0.orig/drivers/iio/imu/adis16480.c +++ linux-raspi2-4.2.0/drivers/iio/imu/adis16480.c @@ -110,6 +110,10 @@ struct adis16480_chip_info { unsigned int num_channels; const struct iio_chan_spec *channels; + unsigned int gyro_max_val; + unsigned int gyro_max_scale; + unsigned int accel_max_val; + unsigned int accel_max_scale; }; struct adis16480 { @@ -497,19 +501,21 @@ static int adis16480_read_raw(struct iio_dev *indio_dev, const struct iio_chan_spec *chan, int *val, int *val2, long info) { + struct adis16480 *st = iio_priv(indio_dev); + switch (info) { case IIO_CHAN_INFO_RAW: return adis_single_conversion(indio_dev, chan, 0, val); case IIO_CHAN_INFO_SCALE: switch (chan->type) { case IIO_ANGL_VEL: - *val = 0; - *val2 = IIO_DEGREE_TO_RAD(20000); /* 0.02 degree/sec */ - return IIO_VAL_INT_PLUS_MICRO; + *val = st->chip_info->gyro_max_scale; + *val2 = st->chip_info->gyro_max_val; + return IIO_VAL_FRACTIONAL; case IIO_ACCEL: - *val = 0; - *val2 = IIO_G_TO_M_S_2(800); /* 0.8 mg */ - return IIO_VAL_INT_PLUS_MICRO; + *val = st->chip_info->accel_max_scale; + *val2 = st->chip_info->accel_max_val; + return IIO_VAL_FRACTIONAL; case IIO_MAGN: *val = 0; *val2 = 100; /* 0.0001 gauss */ @@ -674,18 +680,39 @@ [ADIS16375] = { .channels = adis16485_channels, .num_channels = ARRAY_SIZE(adis16485_channels), + /* + * storing the value in rad/degree and the scale in degree + * gives us the result in rad and better precession than + * storing the scale directly in rad. + */ + .gyro_max_val = IIO_RAD_TO_DEGREE(22887), + .gyro_max_scale = 300, + .accel_max_val = IIO_M_S_2_TO_G(21973), + .accel_max_scale = 18, }, [ADIS16480] = { .channels = adis16480_channels, .num_channels = ARRAY_SIZE(adis16480_channels), + .gyro_max_val = IIO_RAD_TO_DEGREE(22500), + .gyro_max_scale = 450, + .accel_max_val = IIO_M_S_2_TO_G(12500), + .accel_max_scale = 5, }, [ADIS16485] = { .channels = adis16485_channels, .num_channels = ARRAY_SIZE(adis16485_channels), + .gyro_max_val = IIO_RAD_TO_DEGREE(22500), + .gyro_max_scale = 450, + .accel_max_val = IIO_M_S_2_TO_G(20000), + .accel_max_scale = 5, }, [ADIS16488] = { .channels = adis16480_channels, .num_channels = ARRAY_SIZE(adis16480_channels), + .gyro_max_val = IIO_RAD_TO_DEGREE(22500), + .gyro_max_scale = 450, + .accel_max_val = IIO_M_S_2_TO_G(22500), + .accel_max_scale = 18, }, }; --- linux-raspi2-4.2.0.orig/drivers/iio/industrialio-buffer.c +++ linux-raspi2-4.2.0/drivers/iio/industrialio-buffer.c @@ -151,7 +151,7 @@ struct iio_buffer *rb = indio_dev->buffer; if (!indio_dev->info) - return -ENODEV; + return 0; poll_wait(filp, &rb->pollq, wait); if (iio_buffer_ready(indio_dev, rb, rb->watermark, 0)) --- linux-raspi2-4.2.0.orig/drivers/iio/industrialio-event.c +++ linux-raspi2-4.2.0/drivers/iio/industrialio-event.c @@ -84,7 +84,7 @@ unsigned int events = 0; if (!indio_dev->info) - return -ENODEV; + return events; poll_wait(filep, &ev_int->wait, wait); --- linux-raspi2-4.2.0.orig/drivers/iio/magnetometer/Kconfig +++ linux-raspi2-4.2.0/drivers/iio/magnetometer/Kconfig @@ -24,6 +24,24 @@ help Deprecated: AK09911 is now supported by AK8975 driver. +config BMC150_MAGN + tristate "Bosch BMC150 Magnetometer Driver" + depends on I2C + select REGMAP_I2C + select IIO_BUFFER + select IIO_TRIGGERED_BUFFER + help + Say yes here to build support for the BMC150 magnetometer. + + Currently this only supports the device via an i2c interface. + + This is a combo module with both accelerometer and magnetometer. + This driver is only implementing magnetometer part, which has + its own address and register map. + + To compile this driver as a module, choose M here: the module will be + called bmc150_magn. + config MAG3110 tristate "Freescale MAG3110 3-Axis Magnetometer" depends on I2C @@ -87,19 +105,4 @@ depends on IIO_ST_MAGN_3AXIS depends on IIO_ST_SENSORS_SPI -config BMC150_MAGN - tristate "Bosch BMC150 Magnetometer Driver" - depends on I2C - select REGMAP_I2C - select IIO_BUFFER - select IIO_TRIGGERED_BUFFER - help - Say yes here to build support for the BMC150 magnetometer. - - Currently this only supports the device via an i2c interface. - - This is a combo module with both accelerometer and magnetometer. - This driver is only implementing magnetometer part, which has - its own address and register map. - endmenu --- linux-raspi2-4.2.0.orig/drivers/iio/magnetometer/Makefile +++ linux-raspi2-4.2.0/drivers/iio/magnetometer/Makefile @@ -4,6 +4,7 @@ # When adding new entries keep the list in alphabetical order obj-$(CONFIG_AK8975) += ak8975.o +obj-$(CONFIG_BMC150_MAGN) += bmc150_magn.o obj-$(CONFIG_MAG3110) += mag3110.o obj-$(CONFIG_HID_SENSOR_MAGNETOMETER_3D) += hid-sensor-magn-3d.o obj-$(CONFIG_MMC35240) += mmc35240.o @@ -14,5 +15,3 @@ obj-$(CONFIG_IIO_ST_MAGN_I2C_3AXIS) += st_magn_i2c.o obj-$(CONFIG_IIO_ST_MAGN_SPI_3AXIS) += st_magn_spi.o - -obj-$(CONFIG_BMC150_MAGN) += bmc150_magn.o --- linux-raspi2-4.2.0.orig/drivers/infiniband/core/cm.c +++ linux-raspi2-4.2.0/drivers/infiniband/core/cm.c @@ -873,6 +873,11 @@ case IB_CM_SIDR_REQ_RCVD: spin_unlock_irq(&cm_id_priv->lock); cm_reject_sidr_req(cm_id_priv, IB_SIDR_REJECT); + spin_lock_irq(&cm.lock); + if (!RB_EMPTY_NODE(&cm_id_priv->sidr_id_node)) + rb_erase(&cm_id_priv->sidr_id_node, + &cm.remote_sidr_table); + spin_unlock_irq(&cm.lock); break; case IB_CM_REQ_SENT: case IB_CM_MRA_REQ_RCVD: @@ -3112,7 +3117,10 @@ spin_unlock_irqrestore(&cm_id_priv->lock, flags); spin_lock_irqsave(&cm.lock, flags); - rb_erase(&cm_id_priv->sidr_id_node, &cm.remote_sidr_table); + 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_irqrestore(&cm.lock, flags); return 0; --- linux-raspi2-4.2.0.orig/drivers/infiniband/core/cma.c +++ linux-raspi2-4.2.0/drivers/infiniband/core/cma.c @@ -84,7 +84,7 @@ [RDMA_CM_EVENT_TIMEWAIT_EXIT] = "timewait exit", }; -const char *rdma_event_msg(enum rdma_cm_event_type event) +const char *__attribute_const__ rdma_event_msg(enum rdma_cm_event_type event) { size_t index = event; --- linux-raspi2-4.2.0.orig/drivers/infiniband/core/uverbs.h +++ linux-raspi2-4.2.0/drivers/infiniband/core/uverbs.h @@ -85,7 +85,7 @@ */ struct ib_uverbs_device { - struct kref ref; + atomic_t refcount; int num_comp_vectors; struct completion comp; struct device *dev; @@ -94,6 +94,7 @@ struct cdev cdev; struct rb_root xrcd_tree; struct mutex xrcd_tree_mutex; + struct kobject kobj; }; struct ib_uverbs_event_file { --- linux-raspi2-4.2.0.orig/drivers/infiniband/core/uverbs_cmd.c +++ linux-raspi2-4.2.0/drivers/infiniband/core/uverbs_cmd.c @@ -1463,7 +1463,7 @@ if (copy_from_user(&cmd, buf, sizeof(cmd))) return -EFAULT; - INIT_UDATA(&ucore, buf, cmd.response, sizeof(cmd), sizeof(resp)); + INIT_UDATA(&ucore, buf, (unsigned long)cmd.response, sizeof(cmd), sizeof(resp)); INIT_UDATA(&uhw, buf + sizeof(cmd), (unsigned long)cmd.response + sizeof(resp), @@ -2346,6 +2346,12 @@ next->send_flags = user_wr->send_flags; if (is_ud) { + if (next->opcode != IB_WR_SEND && + next->opcode != IB_WR_SEND_WITH_IMM) { + ret = -EINVAL; + goto out_put; + } + next->wr.ud.ah = idr_read_ah(user_wr->wr.ud.ah, file->ucontext); if (!next->wr.ud.ah) { @@ -2385,9 +2391,11 @@ user_wr->wr.atomic.compare_add; next->wr.atomic.swap = user_wr->wr.atomic.swap; next->wr.atomic.rkey = user_wr->wr.atomic.rkey; + case IB_WR_SEND: break; default: - break; + ret = -EINVAL; + goto out_put; } } --- linux-raspi2-4.2.0.orig/drivers/infiniband/core/uverbs_main.c +++ linux-raspi2-4.2.0/drivers/infiniband/core/uverbs_main.c @@ -130,14 +130,18 @@ static void ib_uverbs_add_one(struct ib_device *device); static void ib_uverbs_remove_one(struct ib_device *device); -static void ib_uverbs_release_dev(struct kref *ref) +static void ib_uverbs_release_dev(struct kobject *kobj) { struct ib_uverbs_device *dev = - container_of(ref, struct ib_uverbs_device, ref); + container_of(kobj, struct ib_uverbs_device, kobj); - complete(&dev->comp); + kfree(dev); } +static struct kobj_type ib_uverbs_dev_ktype = { + .release = ib_uverbs_release_dev, +}; + static void ib_uverbs_release_event_file(struct kref *ref) { struct ib_uverbs_event_file *file = @@ -303,13 +307,19 @@ return context->device->dealloc_ucontext(context); } +static void ib_uverbs_comp_dev(struct ib_uverbs_device *dev) +{ + complete(&dev->comp); +} + static void ib_uverbs_release_file(struct kref *ref) { struct ib_uverbs_file *file = container_of(ref, struct ib_uverbs_file, ref); module_put(file->device->ib_dev->owner); - kref_put(&file->device->ref, ib_uverbs_release_dev); + if (atomic_dec_and_test(&file->device->refcount)) + ib_uverbs_comp_dev(file->device); kfree(file); } @@ -743,9 +753,7 @@ int ret; dev = container_of(inode->i_cdev, struct ib_uverbs_device, cdev); - if (dev) - kref_get(&dev->ref); - else + if (!atomic_inc_not_zero(&dev->refcount)) return -ENXIO; if (!try_module_get(dev->ib_dev->owner)) { @@ -766,6 +774,7 @@ mutex_init(&file->mutex); filp->private_data = file; + kobject_get(&dev->kobj); return nonseekable_open(inode, filp); @@ -773,13 +782,16 @@ module_put(dev->ib_dev->owner); err: - kref_put(&dev->ref, ib_uverbs_release_dev); + if (atomic_dec_and_test(&dev->refcount)) + ib_uverbs_comp_dev(dev); + return ret; } static int ib_uverbs_close(struct inode *inode, struct file *filp) { struct ib_uverbs_file *file = filp->private_data; + struct ib_uverbs_device *dev = file->device; ib_uverbs_cleanup_ucontext(file, file->ucontext); @@ -787,6 +799,7 @@ kref_put(&file->async_file->ref, ib_uverbs_release_event_file); kref_put(&file->ref, ib_uverbs_release_file); + kobject_put(&dev->kobj); return 0; } @@ -882,10 +895,11 @@ if (!uverbs_dev) return; - kref_init(&uverbs_dev->ref); + atomic_set(&uverbs_dev->refcount, 1); init_completion(&uverbs_dev->comp); uverbs_dev->xrcd_tree = RB_ROOT; mutex_init(&uverbs_dev->xrcd_tree_mutex); + kobject_init(&uverbs_dev->kobj, &ib_uverbs_dev_ktype); spin_lock(&map_lock); devnum = find_first_zero_bit(dev_map, IB_UVERBS_MAX_DEVICES); @@ -912,6 +926,7 @@ cdev_init(&uverbs_dev->cdev, NULL); uverbs_dev->cdev.owner = THIS_MODULE; uverbs_dev->cdev.ops = device->mmap ? &uverbs_mmap_fops : &uverbs_fops; + uverbs_dev->cdev.kobj.parent = &uverbs_dev->kobj; kobject_set_name(&uverbs_dev->cdev.kobj, "uverbs%d", uverbs_dev->devnum); if (cdev_add(&uverbs_dev->cdev, base, 1)) goto err_cdev; @@ -942,9 +957,10 @@ clear_bit(devnum, overflow_map); err: - kref_put(&uverbs_dev->ref, ib_uverbs_release_dev); + if (atomic_dec_and_test(&uverbs_dev->refcount)) + ib_uverbs_comp_dev(uverbs_dev); wait_for_completion(&uverbs_dev->comp); - kfree(uverbs_dev); + kobject_put(&uverbs_dev->kobj); return; } @@ -964,9 +980,10 @@ else clear_bit(uverbs_dev->devnum - IB_UVERBS_MAX_DEVICES, overflow_map); - kref_put(&uverbs_dev->ref, ib_uverbs_release_dev); + if (atomic_dec_and_test(&uverbs_dev->refcount)) + ib_uverbs_comp_dev(uverbs_dev); wait_for_completion(&uverbs_dev->comp); - kfree(uverbs_dev); + kobject_put(&uverbs_dev->kobj); } static char *uverbs_devnode(struct device *dev, umode_t *mode) --- linux-raspi2-4.2.0.orig/drivers/infiniband/core/verbs.c +++ linux-raspi2-4.2.0/drivers/infiniband/core/verbs.c @@ -70,7 +70,7 @@ [IB_EVENT_GID_CHANGE] = "GID changed", }; -const char *ib_event_msg(enum ib_event_type event) +const char *__attribute_const__ ib_event_msg(enum ib_event_type event) { size_t index = event; @@ -104,7 +104,7 @@ [IB_WC_GENERAL_ERR] = "general error", }; -const char *ib_wc_status_msg(enum ib_wc_status status) +const char *__attribute_const__ ib_wc_status_msg(enum ib_wc_status status) { size_t index = status; --- linux-raspi2-4.2.0.orig/drivers/infiniband/hw/cxgb4/mem.c +++ linux-raspi2-4.2.0/drivers/infiniband/hw/cxgb4/mem.c @@ -144,7 +144,7 @@ if (i == (num_wqe-1)) { req->wr.wr_hi = cpu_to_be32(FW_WR_OP_V(FW_ULPTX_WR) | FW_WR_COMPL_F); - req->wr.wr_lo = (__force __be64)&wr_wait; + req->wr.wr_lo = (__force __be64)(unsigned long)&wr_wait; } else req->wr.wr_hi = cpu_to_be32(FW_WR_OP_V(FW_ULPTX_WR)); req->wr.wr_mid = cpu_to_be32( --- linux-raspi2-4.2.0.orig/drivers/infiniband/hw/mlx4/ah.c +++ linux-raspi2-4.2.0/drivers/infiniband/hw/mlx4/ah.c @@ -148,9 +148,13 @@ enum rdma_link_layer ll; memset(ah_attr, 0, sizeof *ah_attr); - ah_attr->sl = be32_to_cpu(ah->av.ib.sl_tclass_flowlabel) >> 28; ah_attr->port_num = be32_to_cpu(ah->av.ib.port_pd) >> 24; ll = rdma_port_get_link_layer(ibah->device, ah_attr->port_num); + if (ll == IB_LINK_LAYER_ETHERNET) + ah_attr->sl = be32_to_cpu(ah->av.eth.sl_tclass_flowlabel) >> 29; + else + ah_attr->sl = be32_to_cpu(ah->av.ib.sl_tclass_flowlabel) >> 28; + ah_attr->dlid = ll == IB_LINK_LAYER_INFINIBAND ? be16_to_cpu(ah->av.ib.dlid) : 0; if (ah->av.ib.stat_rate) ah_attr->static_rate = ah->av.ib.stat_rate - MLX4_STAT_RATE_OFFSET; --- linux-raspi2-4.2.0.orig/drivers/infiniband/hw/mlx4/cq.c +++ linux-raspi2-4.2.0/drivers/infiniband/hw/mlx4/cq.c @@ -638,7 +638,7 @@ * simulated FLUSH_ERR completions */ list_for_each_entry(qp, &cq->send_qp_list, cq_send_list) { - mlx4_ib_qp_sw_comp(qp, num_entries, wc, npolled, 1); + mlx4_ib_qp_sw_comp(qp, num_entries, wc + *npolled, npolled, 1); if (*npolled >= num_entries) goto out; } --- linux-raspi2-4.2.0.orig/drivers/infiniband/hw/mlx4/mcg.c +++ linux-raspi2-4.2.0/drivers/infiniband/hw/mlx4/mcg.c @@ -206,15 +206,16 @@ { struct mlx4_ib_dev *dev = ctx->dev; struct ib_ah_attr ah_attr; + unsigned long flags; - spin_lock(&dev->sm_lock); + spin_lock_irqsave(&dev->sm_lock, flags); if (!dev->sm_ah[ctx->port - 1]) { /* port is not yet Active, sm_ah not ready */ - spin_unlock(&dev->sm_lock); + spin_unlock_irqrestore(&dev->sm_lock, flags); return -EAGAIN; } mlx4_ib_query_ah(dev->sm_ah[ctx->port - 1], &ah_attr); - spin_unlock(&dev->sm_lock); + spin_unlock_irqrestore(&dev->sm_lock, flags); return mlx4_ib_send_to_wire(dev, mlx4_master_func_num(dev->dev), ctx->port, IB_QPT_GSI, 0, 1, IB_QP1_QKEY, &ah_attr, NULL, mad); --- linux-raspi2-4.2.0.orig/drivers/infiniband/hw/mlx4/sysfs.c +++ linux-raspi2-4.2.0/drivers/infiniband/hw/mlx4/sysfs.c @@ -640,6 +640,8 @@ struct mlx4_port *p; int i; int ret; + int is_eth = rdma_port_get_link_layer(&dev->ib_dev, port_num) == + IB_LINK_LAYER_ETHERNET; p = kzalloc(sizeof *p, GFP_KERNEL); if (!p) @@ -657,7 +659,8 @@ p->pkey_group.name = "pkey_idx"; p->pkey_group.attrs = - alloc_group_attrs(show_port_pkey, store_port_pkey, + alloc_group_attrs(show_port_pkey, + is_eth ? NULL : store_port_pkey, dev->dev->caps.pkey_table_len[port_num]); if (!p->pkey_group.attrs) { ret = -ENOMEM; --- linux-raspi2-4.2.0.orig/drivers/infiniband/hw/mlx5/mr.c +++ linux-raspi2-4.2.0/drivers/infiniband/hw/mlx5/mr.c @@ -1118,19 +1118,7 @@ return &mr->ibmr; error: - /* - * Destroy the umem *before* destroying the MR, to ensure we - * will not have any in-flight notifiers when destroying the - * MR. - * - * As the MR is completely invalid to begin with, and this - * error path is only taken if we can't push the mr entry into - * the pagefault tree, this is safe. - */ - ib_umem_release(umem); - /* Kill the MR, and return an error code. */ - clean_mr(mr); return ERR_PTR(err); } --- linux-raspi2-4.2.0.orig/drivers/infiniband/hw/qib/qib_keys.c +++ linux-raspi2-4.2.0/drivers/infiniband/hw/qib/qib_keys.c @@ -86,6 +86,10 @@ * unrestricted LKEY. */ rkt->gen++; + /* + * bits are capped in qib_verbs.c to insure enough bits + * for generation number + */ mr->lkey = (r << (32 - ib_qib_lkey_table_size)) | ((((1 << (24 - ib_qib_lkey_table_size)) - 1) & rkt->gen) << 8); --- linux-raspi2-4.2.0.orig/drivers/infiniband/hw/qib/qib_verbs.c +++ linux-raspi2-4.2.0/drivers/infiniband/hw/qib/qib_verbs.c @@ -40,6 +40,7 @@ #include #include #include +#include #include "qib.h" #include "qib_common.h" @@ -2109,10 +2110,16 @@ * the LKEY). The remaining bits act as a generation number or tag. */ spin_lock_init(&dev->lk_table.lock); + /* insure generation is at least 4 bits see keys.c */ + if (ib_qib_lkey_table_size > MAX_LKEY_TABLE_BITS) { + qib_dev_warn(dd, "lkey bits %u too large, reduced to %u\n", + ib_qib_lkey_table_size, MAX_LKEY_TABLE_BITS); + ib_qib_lkey_table_size = MAX_LKEY_TABLE_BITS; + } dev->lk_table.max = 1 << ib_qib_lkey_table_size; lk_tab_size = dev->lk_table.max * sizeof(*dev->lk_table.table); dev->lk_table.table = (struct qib_mregion __rcu **) - __get_free_pages(GFP_KERNEL, get_order(lk_tab_size)); + vmalloc(lk_tab_size); if (dev->lk_table.table == NULL) { ret = -ENOMEM; goto err_lk; @@ -2286,7 +2293,7 @@ sizeof(struct qib_pio_header), dev->pio_hdrs, dev->pio_hdrs_phys); err_hdrs: - free_pages((unsigned long) dev->lk_table.table, get_order(lk_tab_size)); + vfree(dev->lk_table.table); err_lk: kfree(dev->qp_table); err_qpt: @@ -2340,8 +2347,7 @@ sizeof(struct qib_pio_header), dev->pio_hdrs, dev->pio_hdrs_phys); lk_tab_size = dev->lk_table.max * sizeof(*dev->lk_table.table); - free_pages((unsigned long) dev->lk_table.table, - get_order(lk_tab_size)); + vfree(dev->lk_table.table); kfree(dev->qp_table); } --- linux-raspi2-4.2.0.orig/drivers/infiniband/hw/qib/qib_verbs.h +++ linux-raspi2-4.2.0/drivers/infiniband/hw/qib/qib_verbs.h @@ -647,6 +647,8 @@ struct qpn_map map[QPNMAP_ENTRIES]; }; +#define MAX_LKEY_TABLE_BITS 23 + struct qib_lkey_table { spinlock_t lock; /* protect changes in this struct */ u32 next; /* next unused index (speeds search) */ --- linux-raspi2-4.2.0.orig/drivers/infiniband/ulp/iser/iscsi_iser.c +++ linux-raspi2-4.2.0/drivers/infiniband/ulp/iser/iscsi_iser.c @@ -201,6 +201,7 @@ goto out; } + tx_desc->mapped = true; tx_desc->dma_addr = dma_addr; tx_desc->tx_sg[0].addr = tx_desc->dma_addr; tx_desc->tx_sg[0].length = ISER_HEADERS_LEN; @@ -360,16 +361,19 @@ static void iscsi_iser_cleanup_task(struct iscsi_task *task) { struct iscsi_iser_task *iser_task = task->dd_data; - struct iser_tx_desc *tx_desc = &iser_task->desc; - struct iser_conn *iser_conn = task->conn->dd_data; + struct iser_tx_desc *tx_desc = &iser_task->desc; + struct iser_conn *iser_conn = task->conn->dd_data; struct iser_device *device = iser_conn->ib_conn.device; /* DEVICE_REMOVAL event might have already released the device */ if (!device) return; - ib_dma_unmap_single(device->ib_device, - tx_desc->dma_addr, ISER_HEADERS_LEN, DMA_TO_DEVICE); + if (likely(tx_desc->mapped)) { + ib_dma_unmap_single(device->ib_device, tx_desc->dma_addr, + ISER_HEADERS_LEN, DMA_TO_DEVICE); + tx_desc->mapped = false; + } /* mgmt tasks do not need special cleanup */ if (!task->sc) --- linux-raspi2-4.2.0.orig/drivers/infiniband/ulp/iser/iscsi_iser.h +++ linux-raspi2-4.2.0/drivers/infiniband/ulp/iser/iscsi_iser.h @@ -270,6 +270,7 @@ * sg[1] optionally points to either of immediate data * unsolicited data-out or control * @num_sge: number sges used on this TX task + * @mapped: Is the task header mapped */ struct iser_tx_desc { struct iser_hdr iser_header; @@ -278,6 +279,7 @@ u64 dma_addr; struct ib_sge tx_sg[2]; int num_sge; + bool mapped; }; #define ISER_RX_PAD_SIZE (256 - (ISER_RX_PAYLOAD_SIZE + \ --- linux-raspi2-4.2.0.orig/drivers/infiniband/ulp/iser/iser_initiator.c +++ linux-raspi2-4.2.0/drivers/infiniband/ulp/iser/iser_initiator.c @@ -454,7 +454,7 @@ unsigned long buf_offset; unsigned long data_seg_len; uint32_t itt; - int err = 0; + int err; struct ib_sge *tx_dsg; itt = (__force uint32_t)hdr->itt; @@ -475,7 +475,9 @@ memcpy(&tx_desc->iscsi_header, hdr, sizeof(struct iscsi_hdr)); /* build the tx desc */ - iser_initialize_task_headers(task, tx_desc); + err = iser_initialize_task_headers(task, tx_desc); + if (err) + goto send_data_out_error; mem_reg = &iser_task->rdma_reg[ISER_DIR_OUT]; tx_dsg = &tx_desc->tx_sg[1]; @@ -502,7 +504,7 @@ send_data_out_error: kmem_cache_free(ig.desc_cache, tx_desc); - iser_err("conn %p failed err %d\n",conn, err); + iser_err("conn %p failed err %d\n", conn, err); return err; } --- linux-raspi2-4.2.0.orig/drivers/infiniband/ulp/isert/ib_isert.c +++ linux-raspi2-4.2.0/drivers/infiniband/ulp/isert/ib_isert.c @@ -3012,9 +3012,16 @@ static int isert_immediate_queue(struct iscsi_conn *conn, struct iscsi_cmd *cmd, int state) { - int ret; + struct isert_cmd *isert_cmd = iscsit_priv_cmd(cmd); + int ret = 0; switch (state) { + case ISTATE_REMOVE: + spin_lock_bh(&conn->cmd_lock); + list_del_init(&cmd->i_conn_node); + spin_unlock_bh(&conn->cmd_lock); + isert_put_cmd(isert_cmd, true); + break; case ISTATE_SEND_NOPIN_WANT_RESPONSE: ret = isert_put_nopin(cmd, conn, false); break; @@ -3379,6 +3386,41 @@ wait_for_completion(&isert_conn->wait_comp_err); } +/** + * isert_put_unsol_pending_cmds() - Drop commands waiting for + * unsolicitate dataout + * @conn: iscsi connection + * + * We might still have commands that are waiting for unsolicited + * dataouts messages. We must put the extra reference on those + * before blocking on the target_wait_for_session_cmds + */ +static void +isert_put_unsol_pending_cmds(struct iscsi_conn *conn) +{ + struct iscsi_cmd *cmd, *tmp; + static LIST_HEAD(drop_cmd_list); + + spin_lock_bh(&conn->cmd_lock); + list_for_each_entry_safe(cmd, tmp, &conn->conn_cmd_list, i_conn_node) { + if ((cmd->cmd_flags & ICF_NON_IMMEDIATE_UNSOLICITED_DATA) && + (cmd->write_data_done < conn->sess->sess_ops->FirstBurstLength) && + (cmd->write_data_done < cmd->se_cmd.data_length)) + list_move_tail(&cmd->i_conn_node, &drop_cmd_list); + } + spin_unlock_bh(&conn->cmd_lock); + + list_for_each_entry_safe(cmd, tmp, &drop_cmd_list, i_conn_node) { + list_del_init(&cmd->i_conn_node); + if (cmd->i_state != ISTATE_REMOVE) { + struct isert_cmd *isert_cmd = iscsit_priv_cmd(cmd); + + isert_info("conn %p dropping cmd %p\n", conn, cmd); + isert_put_cmd(isert_cmd, true); + } + } +} + static void isert_wait_conn(struct iscsi_conn *conn) { struct isert_conn *isert_conn = conn->context; @@ -3397,8 +3439,9 @@ isert_conn_terminate(isert_conn); mutex_unlock(&isert_conn->mutex); - isert_wait4cmds(conn); isert_wait4flush(isert_conn); + isert_put_unsol_pending_cmds(conn); + isert_wait4cmds(conn); isert_wait4logout(isert_conn); queue_work(isert_release_wq, &isert_conn->release_work); --- linux-raspi2-4.2.0.orig/drivers/infiniband/ulp/srp/ib_srp.c +++ linux-raspi2-4.2.0/drivers/infiniband/ulp/srp/ib_srp.c @@ -2757,6 +2757,13 @@ return c; } +/* + * Return values: + * < 0 upon failure. Caller is responsible for SRP target port cleanup. + * 0 and target->state == SRP_TARGET_REMOVED if asynchronous target port + * removal has been scheduled. + * 0 and target->state != SRP_TARGET_REMOVED upon success. + */ static int srp_add_target(struct srp_host *host, struct srp_target_port *target) { struct srp_rport_identifiers ids; @@ -3262,7 +3269,7 @@ srp_free_ch_ib(target, ch); srp_free_req_data(target, ch); target->ch_count = ch - target->ch; - break; + goto connected; } } @@ -3272,6 +3279,7 @@ node_idx++; } +connected: target->scsi_host->nr_hw_queues = target->ch_count; ret = srp_add_target(host, target); @@ -3294,6 +3302,8 @@ mutex_unlock(&host->add_target_mutex); scsi_host_put(target->scsi_host); + if (ret < 0) + scsi_host_put(target->scsi_host); return ret; --- linux-raspi2-4.2.0.orig/drivers/input/evdev.c +++ linux-raspi2-4.2.0/drivers/input/evdev.c @@ -290,19 +290,14 @@ { struct evdev_client *client = file->private_data; struct evdev *evdev = client->evdev; - int retval; - retval = mutex_lock_interruptible(&evdev->mutex); - if (retval) - return retval; + mutex_lock(&evdev->mutex); - if (!evdev->exist || client->revoked) - retval = -ENODEV; - else - retval = input_flush_device(&evdev->handle, file); + if (evdev->exist && !client->revoked) + input_flush_device(&evdev->handle, file); mutex_unlock(&evdev->mutex); - return retval; + return 0; } static void evdev_free(struct device *dev) --- linux-raspi2-4.2.0.orig/drivers/input/joystick/Kconfig +++ linux-raspi2-4.2.0/drivers/input/joystick/Kconfig @@ -329,4 +329,12 @@ To compile this as a module choose M here: the module will be called maplecontrol. +config JOYSTICK_RPISENSE + tristate "Raspberry Pi Sense HAT joystick" + depends on GPIOLIB && INPUT + select MFD_RPISENSE_CORE + + help + This is the joystick driver for the Raspberry Pi Sense HAT + endif --- linux-raspi2-4.2.0.orig/drivers/input/joystick/Makefile +++ linux-raspi2-4.2.0/drivers/input/joystick/Makefile @@ -32,4 +32,5 @@ obj-$(CONFIG_JOYSTICK_XPAD) += xpad.o obj-$(CONFIG_JOYSTICK_ZHENHUA) += zhenhua.o obj-$(CONFIG_JOYSTICK_WALKERA0701) += walkera0701.o +obj-$(CONFIG_JOYSTICK_RPISENSE) += rpisense-js.o --- linux-raspi2-4.2.0.orig/drivers/input/joystick/rpisense-js.c +++ linux-raspi2-4.2.0/drivers/input/joystick/rpisense-js.c @@ -0,0 +1,153 @@ +/* + * Raspberry Pi Sense HAT joystick driver + * http://raspberrypi.org + * + * Copyright (C) 2015 Raspberry Pi + * + * Author: Serge Schneider + * + * 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. + * + */ + +#include + +#include +#include + +struct rpisense *rpisense; +unsigned char keymap[5] = {KEY_DOWN, KEY_RIGHT, KEY_UP, KEY_ENTER, KEY_LEFT,}; + +static void keys_work_fn(struct work_struct *work) +{ + int i; + static s32 prev_keys; + struct rpisense_js *rpisense_js = &rpisense->joystick; + s32 keys = rpisense_reg_read(rpisense, RPISENSE_KEYS); + s32 changes = keys ^ prev_keys; + + prev_keys = keys; + for (i = 0; i < 5; i++) { + if (changes & 1) { + input_report_key(rpisense_js->keys_dev, + keymap[i], keys & 1); + } + changes >>= 1; + keys >>= 1; + } + input_sync(rpisense_js->keys_dev); +} + +static irqreturn_t keys_irq_handler(int irq, void *pdev) +{ + struct rpisense_js *rpisense_js = &rpisense->joystick; + + schedule_work(&rpisense_js->keys_work_s); + return IRQ_HANDLED; +} + +static int rpisense_js_probe(struct platform_device *pdev) +{ + int ret; + int i; + struct rpisense_js *rpisense_js; + + rpisense = rpisense_get_dev(); + rpisense_js = &rpisense->joystick; + + INIT_WORK(&rpisense_js->keys_work_s, keys_work_fn); + + rpisense_js->keys_dev = input_allocate_device(); + if (!rpisense_js->keys_dev) { + dev_err(&pdev->dev, "Could not allocate input device.\n"); + return -ENOMEM; + } + + rpisense_js->keys_dev->evbit[0] = BIT_MASK(EV_KEY); + for (i = 0; i < ARRAY_SIZE(keymap); i++) { + set_bit(keymap[i], + rpisense_js->keys_dev->keybit); + } + + rpisense_js->keys_dev->name = "Raspberry Pi Sense HAT Joystick"; + rpisense_js->keys_dev->phys = "rpi-sense-joy/input0"; + rpisense_js->keys_dev->id.bustype = BUS_I2C; + rpisense_js->keys_dev->evbit[0] = BIT_MASK(EV_KEY) | BIT_MASK(EV_REP); + rpisense_js->keys_dev->keycode = keymap; + rpisense_js->keys_dev->keycodesize = sizeof(unsigned char); + rpisense_js->keys_dev->keycodemax = ARRAY_SIZE(keymap); + + ret = input_register_device(rpisense_js->keys_dev); + if (ret) { + dev_err(&pdev->dev, "Could not register input device.\n"); + goto err_keys_alloc; + } + + ret = gpiod_direction_input(rpisense_js->keys_desc); + if (ret) { + dev_err(&pdev->dev, "Could not set keys-int direction.\n"); + goto err_keys_reg; + } + + rpisense_js->keys_irq = gpiod_to_irq(rpisense_js->keys_desc); + if (rpisense_js->keys_irq < 0) { + dev_err(&pdev->dev, "Could not determine keys-int IRQ.\n"); + ret = rpisense_js->keys_irq; + goto err_keys_reg; + } + + ret = devm_request_irq(&pdev->dev, rpisense_js->keys_irq, + keys_irq_handler, IRQF_TRIGGER_RISING, + "keys", &pdev->dev); + if (ret) { + dev_err(&pdev->dev, "IRQ request failed.\n"); + goto err_keys_reg; + } + return 0; +err_keys_reg: + input_unregister_device(rpisense_js->keys_dev); +err_keys_alloc: + input_free_device(rpisense_js->keys_dev); + return ret; +} + +static int rpisense_js_remove(struct platform_device *pdev) +{ + struct rpisense_js *rpisense_js = &rpisense->joystick; + + input_unregister_device(rpisense_js->keys_dev); + input_free_device(rpisense_js->keys_dev); + return 0; +} + +#ifdef CONFIG_OF +static const struct of_device_id rpisense_js_id[] = { + { .compatible = "rpi,rpi-sense-js" }, + { }, +}; +MODULE_DEVICE_TABLE(of, rpisense_js_id); +#endif + +static struct platform_device_id rpisense_js_device_id[] = { + { .name = "rpi-sense-js" }, + { }, +}; +MODULE_DEVICE_TABLE(platform, rpisense_js_device_id); + +static struct platform_driver rpisense_js_driver = { + .probe = rpisense_js_probe, + .remove = rpisense_js_remove, + .driver = { + .name = "rpi-sense-js", + .owner = THIS_MODULE, + }, +}; + +module_platform_driver(rpisense_js_driver); + +MODULE_DESCRIPTION("Raspberry Pi Sense HAT joystick driver"); +MODULE_AUTHOR("Serge Schneider "); +MODULE_LICENSE("GPL"); --- linux-raspi2-4.2.0.orig/drivers/input/mouse/alps.c +++ linux-raspi2-4.2.0/drivers/input/mouse/alps.c @@ -100,7 +100,7 @@ #define ALPS_FOUR_BUTTONS 0x40 /* 4 direction button present */ #define ALPS_PS2_INTERLEAVED 0x80 /* 3-byte PS/2 packet interleaved with 6-byte ALPS packet */ -#define ALPS_DELL 0x100 /* device is a Dell laptop */ +#define ALPS_STICK_BITS 0x100 /* separate stick button bits */ #define ALPS_BUTTONPAD 0x200 /* device is a clickpad */ static const struct alps_model_info alps_model_data[] = { @@ -159,6 +159,43 @@ ALPS_PROTO_V8, 0x18, 0x18, 0 }; +/* + * Some v2 models report the stick buttons in separate bits + */ +static const struct dmi_system_id alps_dmi_has_separate_stick_buttons[] = { +#if defined(CONFIG_DMI) && defined(CONFIG_X86) + { + /* Extrapolated from other entries */ + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."), + DMI_MATCH(DMI_PRODUCT_NAME, "Latitude D420"), + }, + }, + { + /* Reported-by: Hans de Bruin */ + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."), + DMI_MATCH(DMI_PRODUCT_NAME, "Latitude D430"), + }, + }, + { + /* Reported-by: Hans de Goede */ + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."), + DMI_MATCH(DMI_PRODUCT_NAME, "Latitude D620"), + }, + }, + { + /* Extrapolated from other entries */ + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."), + DMI_MATCH(DMI_PRODUCT_NAME, "Latitude D630"), + }, + }, +#endif + { } +}; + static void alps_set_abs_params_st(struct alps_data *priv, struct input_dev *dev1); static void alps_set_abs_params_semi_mt(struct alps_data *priv, @@ -253,9 +290,8 @@ return; } - /* Dell non interleaved V2 dualpoint has separate stick button bits */ - if (priv->proto_version == ALPS_PROTO_V2 && - priv->flags == (ALPS_DELL | ALPS_PASS | ALPS_DUALPOINT)) { + /* Some models have separate stick button bits */ + if (priv->flags & ALPS_STICK_BITS) { left |= packet[0] & 1; right |= packet[0] & 2; middle |= packet[0] & 4; @@ -2552,8 +2588,6 @@ priv->byte0 = protocol->byte0; priv->mask0 = protocol->mask0; priv->flags = protocol->flags; - if (dmi_name_in_vendors("Dell")) - priv->flags |= ALPS_DELL; priv->x_max = 2000; priv->y_max = 1400; @@ -2568,6 +2602,8 @@ priv->set_abs_params = alps_set_abs_params_st; priv->x_max = 1023; priv->y_max = 767; + if (dmi_check_system(alps_dmi_has_separate_stick_buttons)) + priv->flags |= ALPS_STICK_BITS; break; case ALPS_PROTO_V3: --- linux-raspi2-4.2.0.orig/drivers/input/mouse/cypress_ps2.c +++ linux-raspi2-4.2.0/drivers/input/mouse/cypress_ps2.c @@ -390,7 +390,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); @@ -478,6 +480,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-raspi2-4.2.0.orig/drivers/input/mouse/cypress_ps2.h +++ linux-raspi2-4.2.0/drivers/input/mouse/cypress_ps2.h @@ -130,7 +130,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-raspi2-4.2.0.orig/drivers/input/mouse/elan_i2c_core.c +++ linux-raspi2-4.2.0/drivers/input/mouse/elan_i2c_core.c @@ -1165,6 +1165,7 @@ #ifdef CONFIG_ACPI static const struct acpi_device_id elan_acpi_id[] = { { "ELAN0000", 0 }, + { "ELAN0600", 0 }, { } }; MODULE_DEVICE_TABLE(acpi, elan_acpi_id); --- linux-raspi2-4.2.0.orig/drivers/input/mouse/elantech.c +++ linux-raspi2-4.2.0/drivers/input/mouse/elantech.c @@ -1520,6 +1520,13 @@ DMI_MATCH(DMI_PRODUCT_NAME, "LIFEBOOK E544"), }, }, + { + /* Fujitsu LIFEBOOK U745 does not work with crc_enabled == 0 */ + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "FUJITSU"), + DMI_MATCH(DMI_PRODUCT_NAME, "LIFEBOOK U745"), + }, + }, #endif { } }; --- linux-raspi2-4.2.0.orig/drivers/input/mouse/synaptics.c +++ linux-raspi2-4.2.0/drivers/input/mouse/synaptics.c @@ -1250,7 +1250,9 @@ /* Clickpads report only left button */ __clear_bit(BTN_RIGHT, dev->keybit); __clear_bit(BTN_MIDDLE, dev->keybit); - } + } else if (SYN_CAP_CLICKPAD2BTN(priv->ext_cap_0c) || + SYN_CAP_CLICKPAD2BTN2(priv->ext_cap_0c)) + __set_bit(INPUT_PROP_BUTTONPAD, dev->propbit); } static ssize_t synaptics_show_disable_gesture(struct psmouse *psmouse, --- linux-raspi2-4.2.0.orig/drivers/input/mouse/synaptics.h +++ linux-raspi2-4.2.0/drivers/input/mouse/synaptics.h @@ -85,6 +85,7 @@ */ #define SYN_CAP_CLICKPAD(ex0c) ((ex0c) & 0x100000) /* 1-button ClickPad */ #define SYN_CAP_CLICKPAD2BTN(ex0c) ((ex0c) & 0x000100) /* 2-button ClickPad */ +#define SYN_CAP_CLICKPAD2BTN2(ex0c) ((ex0c) & 0x200000) /* 2-button ClickPad */ #define SYN_CAP_MAX_DIMENSIONS(ex0c) ((ex0c) & 0x020000) #define SYN_CAP_MIN_DIMENSIONS(ex0c) ((ex0c) & 0x002000) #define SYN_CAP_ADV_GESTURE(ex0c) ((ex0c) & 0x080000) --- linux-raspi2-4.2.0.orig/drivers/input/touchscreen/Kconfig +++ linux-raspi2-4.2.0/drivers/input/touchscreen/Kconfig @@ -583,6 +583,13 @@ To compile this driver as a module, choose M here: the module will be called edt-ft5x06. +config TOUCHSCREEN_RPI_FT5406 + tristate "Raspberry Pi FT5406 driver" + depends on RASPBERRYPI_FIRMWARE + help + Say Y here to enable the Raspberry Pi memory based FT5406 device + + config TOUCHSCREEN_MIGOR tristate "Renesas MIGO-R touchscreen" depends on SH_MIGOR && I2C --- linux-raspi2-4.2.0.orig/drivers/input/touchscreen/Makefile +++ linux-raspi2-4.2.0/drivers/input/touchscreen/Makefile @@ -29,6 +29,7 @@ obj-$(CONFIG_TOUCHSCREEN_DA9052) += da9052_tsi.o obj-$(CONFIG_TOUCHSCREEN_DYNAPRO) += dynapro.o obj-$(CONFIG_TOUCHSCREEN_EDT_FT5X06) += edt-ft5x06.o +obj-$(CONFIG_TOUCHSCREEN_RPI_FT5406) += rpi-ft5406.o obj-$(CONFIG_TOUCHSCREEN_HAMPSHIRE) += hampshire.o obj-$(CONFIG_TOUCHSCREEN_GUNZE) += gunze.o obj-$(CONFIG_TOUCHSCREEN_EETI) += eeti_ts.o --- linux-raspi2-4.2.0.orig/drivers/input/touchscreen/rpi-ft5406.c +++ linux-raspi2-4.2.0/drivers/input/touchscreen/rpi-ft5406.c @@ -0,0 +1,246 @@ +/* + * Driver for memory based ft5406 touchscreen + * + * Copyright (C) 2015 Raspberry Pi + * + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + */ + + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#define MAXIMUM_SUPPORTED_POINTS 10 +struct ft5406_regs { + uint8_t device_mode; + uint8_t gesture_id; + uint8_t num_points; + struct ft5406_touch { + uint8_t xh; + uint8_t xl; + uint8_t yh; + uint8_t yl; + uint8_t res1; + uint8_t res2; + } point[MAXIMUM_SUPPORTED_POINTS]; +}; + +#define SCREEN_WIDTH 800 +#define SCREEN_HEIGHT 480 + +struct ft5406 { + struct platform_device * pdev; + struct input_dev * input_dev; + void __iomem * ts_base; + struct ft5406_regs * regs; + struct task_struct * thread; +}; + +/* Thread to poll for touchscreen events + * + * This thread polls the memory based register copy of the ft5406 registers + * using the number of points register to know whether the copy has been + * updated (we write 99 to the memory copy, the GPU will write between + * 0 - 10 points) + */ +static int ft5406_thread(void *arg) +{ + struct ft5406 *ts = (struct ft5406 *) arg; + struct ft5406_regs regs; + int known_ids = 0; + + while(!kthread_should_stop()) + { + // 60fps polling + msleep(17); + memcpy_fromio(®s, ts->regs, sizeof(*ts->regs)); + writel(99, &ts->regs->num_points); + // Do not output if theres no new information (num_points is 99) + // or we have no touch points and don't need to release any + if(!(regs.num_points == 99 || (regs.num_points == 0 && known_ids == 0))) + { + int i; + int modified_ids = 0, released_ids; + for(i = 0; i < regs.num_points; i++) + { + int x = (((int) regs.point[i].xh & 0xf) << 8) + regs.point[i].xl; + int y = (((int) regs.point[i].yh & 0xf) << 8) + regs.point[i].yl; + int touchid = (regs.point[i].yh >> 4) & 0xf; + + modified_ids |= 1 << touchid; + + if(!((1 << touchid) & known_ids)) + dev_dbg(&ts->pdev->dev, "x = %d, y = %d, touchid = %d\n", x, y, touchid); + + input_mt_slot(ts->input_dev, touchid); + input_mt_report_slot_state(ts->input_dev, MT_TOOL_FINGER, 1); + + input_report_abs(ts->input_dev, ABS_MT_POSITION_X, x); + input_report_abs(ts->input_dev, ABS_MT_POSITION_Y, y); + + } + + released_ids = known_ids & ~modified_ids; + for(i = 0; released_ids && i < MAXIMUM_SUPPORTED_POINTS; i++) + { + if(released_ids & (1<pdev->dev, "Released %d, known = %x modified = %x\n", i, known_ids, modified_ids); + input_mt_slot(ts->input_dev, i); + input_mt_report_slot_state(ts->input_dev, MT_TOOL_FINGER, 0); + modified_ids &= ~(1 << i); + } + } + known_ids = modified_ids; + + input_mt_report_pointer_emulation(ts->input_dev, true); + input_sync(ts->input_dev); + } + + } + + return 0; +} + +static int ft5406_probe(struct platform_device *pdev) +{ + int ret; + struct input_dev * input_dev = input_allocate_device(); + struct ft5406 * ts; + struct device_node *fw_node; + struct rpi_firmware *fw; + u32 touchbuf; + + dev_info(&pdev->dev, "Probing device\n"); + + fw_node = of_parse_phandle(pdev->dev.of_node, "firmware", 0); + if (!fw_node) { + dev_err(&pdev->dev, "Missing firmware node\n"); + return -ENOENT; + } + + fw = rpi_firmware_get(fw_node); + if (!fw) + return -EPROBE_DEFER; + + ret = rpi_firmware_property(fw, RPI_FIRMWARE_FRAMEBUFFER_GET_TOUCHBUF, + &touchbuf, sizeof(touchbuf)); + if (ret) { + dev_err(&pdev->dev, "Failed to get touch buffer\n"); + return ret; + } + + if (!touchbuf) { + dev_err(&pdev->dev, "Touchscreen not detected\n"); + return -ENODEV; + } + + dev_dbg(&pdev->dev, "Got TS buffer 0x%x\n", touchbuf); + + ts = kzalloc(sizeof(struct ft5406), GFP_KERNEL); + + if (!ts || !input_dev) { + ret = -ENOMEM; + dev_err(&pdev->dev, "Failed to allocate memory\n"); + return ret; + } + ts->input_dev = input_dev; + platform_set_drvdata(pdev, ts); + ts->pdev = pdev; + + input_dev->name = "FT5406 memory based driver"; + + __set_bit(EV_KEY, input_dev->evbit); + __set_bit(EV_SYN, input_dev->evbit); + __set_bit(EV_ABS, input_dev->evbit); + + input_set_abs_params(input_dev, ABS_MT_POSITION_X, 0, + SCREEN_WIDTH, 0, 0); + input_set_abs_params(input_dev, ABS_MT_POSITION_Y, 0, + SCREEN_HEIGHT, 0, 0); + + input_mt_init_slots(input_dev, MAXIMUM_SUPPORTED_POINTS, INPUT_MT_DIRECT); + + input_set_drvdata(input_dev, ts); + + ret = input_register_device(input_dev); + if (ret) { + dev_err(&pdev->dev, "could not register input device, %d\n", + ret); + return ret; + } + + // mmap the physical memory + touchbuf &= ~0xc0000000; + ts->ts_base = ioremap(touchbuf, sizeof(*ts->regs)); + if(ts->ts_base == NULL) + { + dev_err(&pdev->dev, "Failed to map physical address\n"); + input_unregister_device(input_dev); + kzfree(ts); + return -ENOMEM; + } + + ts->regs = (struct ft5406_regs *) ts->ts_base; + + // create thread to poll the touch events + ts->thread = kthread_run(ft5406_thread, ts, "ft5406"); + if(ts->thread == NULL) + { + dev_err(&pdev->dev, "Failed to create kernel thread"); + iounmap(ts->ts_base); + input_unregister_device(input_dev); + kzfree(ts); + } + + return 0; +} + +static int ft5406_remove(struct platform_device *pdev) +{ + struct ft5406 *ts = (struct ft5406 *) platform_get_drvdata(pdev); + + dev_info(&pdev->dev, "Removing rpi-ft5406\n"); + + kthread_stop(ts->thread); + iounmap(ts->ts_base); + input_unregister_device(ts->input_dev); + kzfree(ts); + + return 0; +} + +static const struct of_device_id ft5406_match[] = { + { .compatible = "rpi,rpi-ft5406", }, + {}, +}; +MODULE_DEVICE_TABLE(of, ft5406_match); + +static struct platform_driver ft5406_driver = { + .driver = { + .name = "rpi-ft5406", + .owner = THIS_MODULE, + .of_match_table = ft5406_match, + }, + .probe = ft5406_probe, + .remove = ft5406_remove, +}; + +module_platform_driver(ft5406_driver); + +MODULE_AUTHOR("Gordon Hollingworth"); +MODULE_DESCRIPTION("Touchscreen driver for memory based FT5406"); +MODULE_LICENSE("GPL"); --- linux-raspi2-4.2.0.orig/drivers/iommu/amd_iommu.c +++ linux-raspi2-4.2.0/drivers/iommu/amd_iommu.c @@ -1974,8 +1974,8 @@ static void clear_dte_entry(u16 devid) { /* remove entry from the device table seen by the hardware */ - amd_iommu_dev_table[devid].data[0] = IOMMU_PTE_P | IOMMU_PTE_TV; - amd_iommu_dev_table[devid].data[1] = 0; + amd_iommu_dev_table[devid].data[0] = IOMMU_PTE_P | IOMMU_PTE_TV; + amd_iommu_dev_table[devid].data[1] &= DTE_FLAG_MASK; amd_iommu_apply_erratum_63(devid); } --- linux-raspi2-4.2.0.orig/drivers/iommu/amd_iommu_types.h +++ linux-raspi2-4.2.0/drivers/iommu/amd_iommu_types.h @@ -295,6 +295,7 @@ #define IOMMU_PTE_IR (1ULL << 61) #define IOMMU_PTE_IW (1ULL << 62) +#define DTE_FLAG_MASK (0x3ffULL << 32) #define DTE_FLAG_IOTLB (0x01UL << 32) #define DTE_FLAG_GV (0x01ULL << 55) #define DTE_GLX_SHIFT (56) --- linux-raspi2-4.2.0.orig/drivers/iommu/amd_iommu_v2.c +++ linux-raspi2-4.2.0/drivers/iommu/amd_iommu_v2.c @@ -516,6 +516,13 @@ goto out; } + if (!(vma->vm_flags & (VM_READ | VM_EXEC | VM_WRITE))) { + /* handle_mm_fault would BUG_ON() */ + up_read(&mm->mmap_sem); + handle_fault_error(fault); + goto out; + } + ret = handle_mm_fault(mm, vma, address, write); if (ret & VM_FAULT_ERROR) { /* failed to service fault */ --- linux-raspi2-4.2.0.orig/drivers/iommu/arm-smmu-v3.c +++ linux-raspi2-4.2.0/drivers/iommu/arm-smmu-v3.c @@ -1445,7 +1445,7 @@ struct io_pgtable_cfg *pgtbl_cfg) { int ret; - u16 asid; + int asid; struct arm_smmu_device *smmu = smmu_domain->smmu; struct arm_smmu_s1_cfg *cfg = &smmu_domain->s1_cfg; @@ -1457,10 +1457,11 @@ &cfg->cdptr_dma, GFP_KERNEL); if (!cfg->cdptr) { dev_warn(smmu->dev, "failed to allocate context descriptor\n"); + ret = -ENOMEM; goto out_free_asid; } - cfg->cd.asid = asid; + cfg->cd.asid = (u16)asid; cfg->cd.ttbr = pgtbl_cfg->arm_lpae_s1_cfg.ttbr[0]; cfg->cd.tcr = pgtbl_cfg->arm_lpae_s1_cfg.tcr; cfg->cd.mair = pgtbl_cfg->arm_lpae_s1_cfg.mair[0]; @@ -1474,7 +1475,7 @@ static int arm_smmu_domain_finalise_s2(struct arm_smmu_domain *smmu_domain, struct io_pgtable_cfg *pgtbl_cfg) { - u16 vmid; + int vmid; struct arm_smmu_device *smmu = smmu_domain->smmu; struct arm_smmu_s2_cfg *cfg = &smmu_domain->s2_cfg; @@ -1482,7 +1483,7 @@ if (IS_ERR_VALUE(vmid)) return vmid; - cfg->vmid = vmid; + cfg->vmid = (u16)vmid; cfg->vttbr = pgtbl_cfg->arm_lpae_s2_cfg.vttbr; cfg->vtcr = pgtbl_cfg->arm_lpae_s2_cfg.vtcr; return 0; --- linux-raspi2-4.2.0.orig/drivers/iommu/fsl_pamu.c +++ linux-raspi2-4.2.0/drivers/iommu/fsl_pamu.c @@ -41,7 +41,6 @@ static struct paace *ppaact; static struct paace *spaact; -static struct ome *omt __initdata; /* * Table for matching compatible strings, for device tree @@ -50,7 +49,7 @@ * SOCs. For the older SOCs "fsl,qoriq-device-config-1.0" * string would be used. */ -static const struct of_device_id guts_device_ids[] __initconst = { +static const struct of_device_id guts_device_ids[] = { { .compatible = "fsl,qoriq-device-config-1.0", }, { .compatible = "fsl,qoriq-device-config-2.0", }, {} @@ -599,7 +598,7 @@ * Memory accesses to QMAN and BMAN private memory need not be coherent, so * clear the PAACE entry coherency attribute for them. */ -static void __init setup_qbman_paace(struct paace *ppaace, int paace_type) +static void setup_qbman_paace(struct paace *ppaace, int paace_type) { switch (paace_type) { case QMAN_PAACE: @@ -629,7 +628,7 @@ * this table to translate device transaction to appropriate corenet * transaction. */ -static void __init setup_omt(struct ome *omt) +static void setup_omt(struct ome *omt) { struct ome *ome; @@ -666,7 +665,7 @@ * Get the maximum number of PAACT table entries * and subwindows supported by PAMU */ -static void __init get_pamu_cap_values(unsigned long pamu_reg_base) +static void get_pamu_cap_values(unsigned long pamu_reg_base) { u32 pc_val; @@ -676,9 +675,9 @@ } /* Setup PAMU registers pointing to PAACT, SPAACT and OMT */ -static int __init setup_one_pamu(unsigned long pamu_reg_base, unsigned long pamu_reg_size, - phys_addr_t ppaact_phys, phys_addr_t spaact_phys, - phys_addr_t omt_phys) +static int setup_one_pamu(unsigned long pamu_reg_base, unsigned long pamu_reg_size, + phys_addr_t ppaact_phys, phys_addr_t spaact_phys, + phys_addr_t omt_phys) { u32 *pc; struct pamu_mmap_regs *pamu_regs; @@ -720,7 +719,7 @@ } /* Enable all device LIODNS */ -static void __init setup_liodns(void) +static void setup_liodns(void) { int i, len; struct paace *ppaace; @@ -846,7 +845,7 @@ /* * Create a coherence subdomain for a given memory block. */ -static int __init create_csd(phys_addr_t phys, size_t size, u32 csd_port_id) +static int create_csd(phys_addr_t phys, size_t size, u32 csd_port_id) { struct device_node *np; const __be32 *iprop; @@ -988,7 +987,7 @@ static const struct { u32 svr; u32 port_id; -} port_id_map[] __initconst = { +} port_id_map[] = { {(SVR_P2040 << 8) | 0x10, 0xFF000000}, /* P2040 1.0 */ {(SVR_P2040 << 8) | 0x11, 0xFF000000}, /* P2040 1.1 */ {(SVR_P2041 << 8) | 0x10, 0xFF000000}, /* P2041 1.0 */ @@ -1006,7 +1005,7 @@ #define SVR_SECURITY 0x80000 /* The Security (E) bit */ -static int __init fsl_pamu_probe(struct platform_device *pdev) +static int fsl_pamu_probe(struct platform_device *pdev) { struct device *dev = &pdev->dev; void __iomem *pamu_regs = NULL; @@ -1022,6 +1021,7 @@ int irq; phys_addr_t ppaact_phys; phys_addr_t spaact_phys; + struct ome *omt; phys_addr_t omt_phys; size_t mem_size = 0; unsigned int order = 0; @@ -1200,7 +1200,7 @@ return ret; } -static struct platform_driver fsl_of_pamu_driver __initdata = { +static struct platform_driver fsl_of_pamu_driver = { .driver = { .name = "fsl-of-pamu", }, --- linux-raspi2-4.2.0.orig/drivers/iommu/intel-iommu.c +++ linux-raspi2-4.2.0/drivers/iommu/intel-iommu.c @@ -755,6 +755,7 @@ struct context_entry *context; u64 *entry; + entry = &root->lo; if (ecs_enabled(iommu)) { if (devfn >= 0x80) { devfn -= 0x80; @@ -762,7 +763,6 @@ } devfn *= 2; } - entry = &root->lo; if (*entry & 1) context = phys_to_virt(*entry & VTD_PAGE_MASK); else { @@ -2109,15 +2109,19 @@ return -ENOMEM; /* It is large page*/ if (largepage_lvl > 1) { + unsigned long nr_superpages, end_pfn; + pteval |= DMA_PTE_LARGE_PAGE; lvl_pages = lvl_to_nr_pages(largepage_lvl); + + nr_superpages = sg_res / lvl_pages; + end_pfn = iov_pfn + nr_superpages * lvl_pages - 1; + /* * Ensure that old small page tables are - * removed to make room for superpage, - * if they exist. + * removed to make room for superpage(s). */ - dma_pte_free_pagetable(domain, iov_pfn, - iov_pfn + lvl_pages - 1); + dma_pte_free_pagetable(domain, iov_pfn, end_pfn); } else { pteval &= ~(uint64_t)DMA_PTE_LARGE_PAGE; } @@ -4227,14 +4231,17 @@ dev = pci_physfn(dev); for (bus = dev->bus; bus; bus = bus->parent) { bridge = bus->self; - if (!bridge || !pci_is_pcie(bridge) || + /* If it's an integrated device, allow ATS */ + if (!bridge) + return 1; + /* Connected via non-PCIe: no ATS */ + if (!pci_is_pcie(bridge) || pci_pcie_type(bridge) == PCI_EXP_TYPE_PCI_BRIDGE) return 0; + /* If we found the root port, look it up in the ATSR */ if (pci_pcie_type(bridge) == PCI_EXP_TYPE_ROOT_PORT) break; } - if (!bridge) - return 0; rcu_read_lock(); list_for_each_entry_rcu(atsru, &dmar_atsr_units, list) { --- linux-raspi2-4.2.0.orig/drivers/iommu/io-pgtable-arm.c +++ linux-raspi2-4.2.0/drivers/iommu/io-pgtable-arm.c @@ -200,6 +200,10 @@ static bool selftest_running = false; +static int __arm_lpae_unmap(struct arm_lpae_io_pgtable *data, + unsigned long iova, size_t size, int lvl, + arm_lpae_iopte *ptep); + static int arm_lpae_init_pte(struct arm_lpae_io_pgtable *data, unsigned long iova, phys_addr_t paddr, arm_lpae_iopte prot, int lvl, @@ -207,10 +211,21 @@ { arm_lpae_iopte pte = prot; - /* We require an unmap first */ if (iopte_leaf(*ptep, lvl)) { + /* We require an unmap first */ WARN_ON(!selftest_running); return -EEXIST; + } else if (iopte_type(*ptep, lvl) == ARM_LPAE_PTE_TYPE_TABLE) { + /* + * We need to unmap and free the old table before + * overwriting it with a block entry. + */ + arm_lpae_iopte *tblp; + size_t sz = ARM_LPAE_BLOCK_SIZE(lvl, data); + + tblp = ptep - ARM_LPAE_LVL_IDX(iova, lvl, data); + if (WARN_ON(__arm_lpae_unmap(data, iova, sz, lvl, tblp) != sz)) + return -EINVAL; } if (data->iop.cfg.quirks & IO_PGTABLE_QUIRK_ARM_NS) --- linux-raspi2-4.2.0.orig/drivers/iommu/tegra-smmu.c +++ linux-raspi2-4.2.0/drivers/iommu/tegra-smmu.c @@ -27,6 +27,7 @@ const struct tegra_smmu_soc *soc; unsigned long pfn_mask; + unsigned long tlb_mask; unsigned long *asids; struct mutex lock; @@ -68,7 +69,8 @@ #define SMMU_TLB_CONFIG 0x14 #define SMMU_TLB_CONFIG_HIT_UNDER_MISS (1 << 29) #define SMMU_TLB_CONFIG_ROUND_ROBIN_ARBITRATION (1 << 28) -#define SMMU_TLB_CONFIG_ACTIVE_LINES(x) ((x) & 0x3f) +#define SMMU_TLB_CONFIG_ACTIVE_LINES(smmu) \ + ((smmu)->soc->num_tlb_lines & (smmu)->tlb_mask) #define SMMU_PTC_CONFIG 0x18 #define SMMU_PTC_CONFIG_ENABLE (1 << 29) @@ -816,6 +818,9 @@ smmu->pfn_mask = BIT_MASK(mc->soc->num_address_bits - PAGE_SHIFT) - 1; dev_dbg(dev, "address bits: %u, PFN mask: %#lx\n", mc->soc->num_address_bits, smmu->pfn_mask); + smmu->tlb_mask = (smmu->soc->num_tlb_lines << 1) - 1; + dev_dbg(dev, "TLB lines: %u, mask: %#lx\n", smmu->soc->num_tlb_lines, + smmu->tlb_mask); value = SMMU_PTC_CONFIG_ENABLE | SMMU_PTC_CONFIG_INDEX_MAP(0x3f); @@ -825,7 +830,7 @@ smmu_writel(smmu, value, SMMU_PTC_CONFIG); value = SMMU_TLB_CONFIG_HIT_UNDER_MISS | - SMMU_TLB_CONFIG_ACTIVE_LINES(0x20); + SMMU_TLB_CONFIG_ACTIVE_LINES(smmu); if (soc->supports_round_robin_arbitration) value |= SMMU_TLB_CONFIG_ROUND_ROBIN_ARBITRATION; --- linux-raspi2-4.2.0.orig/drivers/irqchip/Makefile +++ linux-raspi2-4.2.0/drivers/irqchip/Makefile @@ -1,6 +1,7 @@ obj-$(CONFIG_IRQCHIP) += irqchip.o obj-$(CONFIG_ARCH_BCM2835) += irq-bcm2835.o +obj-$(CONFIG_ARCH_BCM2708) += irq-bcm2835.o obj-$(CONFIG_ARCH_EXYNOS) += exynos-combiner.o obj-$(CONFIG_ARCH_HIP04) += irq-hip04.o obj-$(CONFIG_ARCH_MMP) += irq-mmp.o --- linux-raspi2-4.2.0.orig/drivers/irqchip/irq-atmel-aic5.c +++ linux-raspi2-4.2.0/drivers/irqchip/irq-atmel-aic5.c @@ -88,28 +88,36 @@ { struct irq_domain *domain = d->domain; struct irq_domain_chip_generic *dgc = domain->gc; - struct irq_chip_generic *gc = dgc->gc[0]; + struct irq_chip_generic *bgc = dgc->gc[0]; + struct irq_chip_generic *gc = irq_data_get_irq_chip_data(d); - /* Disable interrupt on AIC5 */ - irq_gc_lock(gc); + /* + * Disable interrupt on AIC5. We always take the lock of the + * first irq chip as all chips share the same registers. + */ + irq_gc_lock(bgc); irq_reg_writel(gc, d->hwirq, AT91_AIC5_SSR); irq_reg_writel(gc, 1, AT91_AIC5_IDCR); gc->mask_cache &= ~d->mask; - irq_gc_unlock(gc); + irq_gc_unlock(bgc); } static void aic5_unmask(struct irq_data *d) { struct irq_domain *domain = d->domain; struct irq_domain_chip_generic *dgc = domain->gc; - struct irq_chip_generic *gc = dgc->gc[0]; + struct irq_chip_generic *bgc = dgc->gc[0]; + struct irq_chip_generic *gc = irq_data_get_irq_chip_data(d); - /* Enable interrupt on AIC5 */ - irq_gc_lock(gc); + /* + * Enable interrupt on AIC5. We always take the lock of the + * first irq chip as all chips share the same registers. + */ + irq_gc_lock(bgc); irq_reg_writel(gc, d->hwirq, AT91_AIC5_SSR); irq_reg_writel(gc, 1, AT91_AIC5_IECR); gc->mask_cache |= d->mask; - irq_gc_unlock(gc); + irq_gc_unlock(bgc); } static int aic5_retrigger(struct irq_data *d) --- linux-raspi2-4.2.0.orig/drivers/irqchip/irq-bcm2835.c +++ linux-raspi2-4.2.0/drivers/irqchip/irq-bcm2835.c @@ -56,7 +56,7 @@ #include "irqchip.h" /* Put the bank and irq (32 bits) into the hwirq */ -#define MAKE_HWIRQ(b, n) ((b << 5) | (n)) +#define MAKE_HWIRQ(b, n) (((b) << 5) | (n)) #define HWIRQ_BANK(i) (i >> 5) #define HWIRQ_BIT(i) BIT(i & 0x1f) @@ -72,9 +72,13 @@ | SHORTCUT1_MASK | SHORTCUT2_MASK) #define REG_FIQ_CONTROL 0x0c +#define REG_FIQ_ENABLE 0x80 +#define REG_FIQ_DISABLE 0 #define NR_BANKS 3 #define IRQS_PER_BANK 32 +#define NUMBER_IRQS MAKE_HWIRQ(NR_BANKS, 0) +#define FIQ_START (NR_IRQS_BANK0 + MAKE_HWIRQ(NR_BANKS - 1, 0)) static int reg_pending[] __initconst = { 0x00, 0x04, 0x08 }; static int reg_enable[] __initconst = { 0x18, 0x10, 0x14 }; @@ -98,14 +102,38 @@ static void __exception_irq_entry bcm2835_handle_irq( struct pt_regs *regs); +static inline unsigned int hwirq_to_fiq(unsigned long hwirq) +{ + hwirq -= NUMBER_IRQS; + /* + * The hwirq numbering used in this driver is: + * BASE (0-7) GPU1 (32-63) GPU2 (64-95). + * This differ from the one used in the FIQ register: + * GPU1 (0-31) GPU2 (32-63) BASE (64-71) + */ + if (hwirq >= 32) + return hwirq - 32; + + return hwirq + 64; +} + static void armctrl_mask_irq(struct irq_data *d) { - writel_relaxed(HWIRQ_BIT(d->hwirq), intc.disable[HWIRQ_BANK(d->hwirq)]); + if (d->hwirq >= NUMBER_IRQS) + writel_relaxed(REG_FIQ_DISABLE, intc.base + REG_FIQ_CONTROL); + else + writel_relaxed(HWIRQ_BIT(d->hwirq), + intc.disable[HWIRQ_BANK(d->hwirq)]); } static void armctrl_unmask_irq(struct irq_data *d) { - writel_relaxed(HWIRQ_BIT(d->hwirq), intc.enable[HWIRQ_BANK(d->hwirq)]); + if (d->hwirq >= NUMBER_IRQS) + writel_relaxed(REG_FIQ_ENABLE | hwirq_to_fiq(d->hwirq), + intc.base + REG_FIQ_CONTROL); + else + writel_relaxed(HWIRQ_BIT(d->hwirq), + intc.enable[HWIRQ_BANK(d->hwirq)]); } static struct irq_chip armctrl_chip = { @@ -150,8 +178,9 @@ panic("%s: unable to map IC registers\n", node->full_name); - intc.domain = irq_domain_add_linear(node, MAKE_HWIRQ(NR_BANKS, 0), - &armctrl_ops, NULL); + intc.base = base; + intc.domain = irq_domain_add_linear(node, NUMBER_IRQS * 2, + &armctrl_ops, NULL); if (!intc.domain) panic("%s: unable to create IRQ domain\n", node->full_name); @@ -168,8 +197,20 @@ set_irq_flags(irq, IRQF_VALID | IRQF_PROBE); } } - set_handle_irq(bcm2835_handle_irq); + + /* Make a duplicate irq range which is used to enable FIQ */ + for (b = 0; b < NR_BANKS; b++) { + for (i = 0; i < bank_irqs[b]; i++) { + irq = irq_create_mapping(intc.domain, + MAKE_HWIRQ(b, i) + NUMBER_IRQS); + BUG_ON(irq <= 0); + irq_set_chip(irq, &armctrl_chip); + set_irq_flags(irq, IRQF_VALID | IRQF_PROBE); + } + } + init_FIQ(FIQ_START); + return 0; } --- linux-raspi2-4.2.0.orig/drivers/irqchip/irq-gic-common.c +++ linux-raspi2-4.2.0/drivers/irqchip/irq-gic-common.c @@ -21,6 +21,17 @@ #include "irq-gic-common.h" +void gic_enable_quirks(u32 iidr, const struct gic_quirk *quirks, + void *data) +{ + for (; quirks->desc; quirks++) { + if (quirks->iidr != (quirks->mask & iidr)) + continue; + quirks->init(data); + pr_info("GIC: enabling workaround for %s\n", quirks->desc); + } +} + int gic_configure_irq(unsigned int irq, unsigned int type, void __iomem *base, void (*sync_access)(void)) { --- linux-raspi2-4.2.0.orig/drivers/irqchip/irq-gic-common.h +++ linux-raspi2-4.2.0/drivers/irqchip/irq-gic-common.h @@ -20,10 +20,19 @@ #include #include +struct gic_quirk { + const char *desc; + void (*init)(void *data); + u32 iidr; + u32 mask; +}; + int gic_configure_irq(unsigned int irq, unsigned int type, void __iomem *base, void (*sync_access)(void)); void gic_dist_config(void __iomem *base, int gic_irqs, void (*sync_access)(void)); void gic_cpu_config(void __iomem *base, void (*sync_access)(void)); +void gic_enable_quirks(u32 iidr, const struct gic_quirk *quirks, + void *data); #endif /* _IRQ_GIC_COMMON_H */ --- linux-raspi2-4.2.0.orig/drivers/irqchip/irq-gic-v3-its.c +++ linux-raspi2-4.2.0/drivers/irqchip/irq-gic-v3-its.c @@ -36,9 +36,10 @@ #include #include -#include "irqchip.h" +#include "irq-gic-common.h" -#define ITS_FLAGS_CMDQ_NEEDS_FLUSHING (1 << 0) +#define ITS_FLAGS_CMDQ_NEEDS_FLUSHING (1ULL << 0) +#define ITS_FLAGS_WORKAROUND_CAVIUM_22375 (1ULL << 1) #define RDIST_FLAGS_PROPBASE_NEEDS_FLUSHING (1 << 0) @@ -837,7 +838,22 @@ int i; int psz = SZ_64K; u64 shr = GITS_BASER_InnerShareable; - u64 cache = GITS_BASER_WaWb; + u64 cache; + u64 typer; + u32 ids; + + if (its->flags & ITS_FLAGS_WORKAROUND_CAVIUM_22375) { + /* + * erratum 22375: only alloc 8MB table size + * erratum 24313: ignore memory access type + */ + cache = 0; + ids = 0x14; /* 20 bits, 8MB */ + } else { + cache = GITS_BASER_WaWb; + typer = readq_relaxed(its->base + GITS_TYPER); + ids = GITS_TYPER_DEVBITS(typer); + } for (i = 0; i < GITS_BASER_NR_REGS; i++) { u64 val = readq_relaxed(its->base + GITS_BASER + i * 8); @@ -845,6 +861,7 @@ u64 entry_size = GITS_BASER_ENTRY_SIZE(val); int order = get_order(psz); int alloc_size; + int alloc_pages; u64 tmp; void *base; @@ -860,9 +877,6 @@ * For other tables, only allocate a single page. */ if (type == GITS_BASER_TYPE_DEVICE) { - u64 typer = readq_relaxed(its->base + GITS_TYPER); - u32 ids = GITS_TYPER_DEVBITS(typer); - /* * 'order' was initialized earlier to the default page * granule of the the ITS. We can't have an allocation @@ -879,6 +893,14 @@ } alloc_size = (1 << order) * PAGE_SIZE; + alloc_pages = (alloc_size / psz); + if (alloc_pages > GITS_BASER_PAGES_MAX) { + alloc_pages = GITS_BASER_PAGES_MAX; + order = get_order(GITS_BASER_PAGES_MAX * psz); + pr_warn("%s: Device Table too large, reduce its page order to %u (%u pages)\n", + its->msi_chip.of_node->full_name, order, alloc_pages); + } + base = (void *)__get_free_pages(GFP_KERNEL | __GFP_ZERO, order); if (!base) { err = -ENOMEM; @@ -907,7 +929,7 @@ break; } - val |= (alloc_size / psz) - 1; + val |= alloc_pages - 1; writeq_relaxed(val, its->base + GITS_BASER + i * 8); tmp = readq_relaxed(its->base + GITS_BASER + i * 8); @@ -921,8 +943,10 @@ * non-cacheable as well. */ shr = tmp & GITS_BASER_SHAREABILITY_MASK; - if (!shr) + if (!shr) { cache = GITS_BASER_nC; + __flush_dcache_area(base, alloc_size); + } goto retry_baser; } @@ -1163,6 +1187,8 @@ return NULL; } + __flush_dcache_area(itt, sz); + dev->its = its; dev->itt = itt; dev->nr_ites = nr_ites; @@ -1421,6 +1447,33 @@ } } +static void __maybe_unused its_enable_quirk_cavium_22375(void *data) +{ + struct its_node *its = data; + + its->flags |= ITS_FLAGS_WORKAROUND_CAVIUM_22375; +} + +static const struct gic_quirk its_quirks[] = { +#ifdef CONFIG_CAVIUM_ERRATUM_22375 + { + .desc = "ITS: Cavium errata 22375, 24313", + .iidr = 0xa100034c, /* ThunderX pass 1.x */ + .mask = 0xffff0fff, + .init = its_enable_quirk_cavium_22375, + }, +#endif + { + } +}; + +static void its_enable_quirks(struct its_node *its) +{ + u32 iidr = readl_relaxed(its->base + GITS_IIDR); + + gic_enable_quirks(iidr, its_quirks, its); +} + static int its_probe(struct device_node *node, struct irq_domain *parent) { struct resource res; @@ -1479,6 +1532,8 @@ } its->cmd_write = its->cmd_base; + its_enable_quirks(its); + err = its_alloc_tables(its); if (err) goto out_free_cmd; --- linux-raspi2-4.2.0.orig/drivers/irqchip/irq-gic-v3.c +++ linux-raspi2-4.2.0/drivers/irqchip/irq-gic-v3.c @@ -107,7 +107,7 @@ } /* Low level accessors */ -static u64 __maybe_unused gic_read_iar(void) +static u64 gic_read_iar_common(void) { u64 irqstat; @@ -115,6 +115,38 @@ return irqstat; } +/* + * Cavium ThunderX erratum 23154 + * + * The gicv3 of ThunderX requires a modified version for reading the + * IAR status to ensure data synchronization (access to icc_iar1_el1 + * is not sync'ed before and after). + */ +static u64 gic_read_iar_cavium_thunderx(void) +{ + u64 irqstat; + + asm volatile( + "nop;nop;nop;nop\n\t" + "nop;nop;nop;nop\n\t" + "mrs_s %0, " __stringify(ICC_IAR1_EL1) "\n\t" + "nop;nop;nop;nop" + : "=r" (irqstat)); + mb(); + + return irqstat; +} + +static struct static_key is_cavium_thunderx = STATIC_KEY_INIT_FALSE; + +static u64 __maybe_unused gic_read_iar(void) +{ + if (static_key_false(&is_cavium_thunderx)) + return gic_read_iar_cavium_thunderx(); + else + return gic_read_iar_common(); +} + static void __maybe_unused gic_write_pmr(u64 val) { asm volatile("msr_s " __stringify(ICC_PMR_EL1) ", %0" : : "r" (val)); @@ -766,6 +798,12 @@ .free = gic_irq_domain_free, }; +static void gicv3_enable_quirks(void) +{ + if (cpus_have_cap(ARM64_WORKAROUND_CAVIUM_23154)) + static_key_slow_inc(&is_cavium_thunderx); +} + static int __init gic_of_init(struct device_node *node, struct device_node *parent) { void __iomem *dist_base; @@ -825,6 +863,8 @@ gic_data.nr_redist_regions = nr_redist_regions; gic_data.redist_stride = redist_stride; + gicv3_enable_quirks(); + /* * Find out how many interrupts are supported. * The GIC only supports up to 1020 interrupt sources (SGI+PPI+SPI) --- linux-raspi2-4.2.0.orig/drivers/irqchip/irq-tegra.c +++ linux-raspi2-4.2.0/drivers/irqchip/irq-tegra.c @@ -215,6 +215,7 @@ .irq_unmask = tegra_unmask, .irq_retrigger = tegra_retrigger, .irq_set_wake = tegra_set_wake, + .irq_set_type = irq_chip_set_type_parent, .flags = IRQCHIP_MASK_ON_SUSPEND, #ifdef CONFIG_SMP .irq_set_affinity = irq_chip_set_affinity_parent, --- linux-raspi2-4.2.0.orig/drivers/isdn/i4l/isdn_ppp.c +++ linux-raspi2-4.2.0/drivers/isdn/i4l/isdn_ppp.c @@ -301,6 +301,8 @@ is->compflags = 0; is->reset = isdn_ppp_ccp_reset_alloc(is); + if (!is->reset) + return -ENOMEM; is->lp = NULL; is->mp_seqno = 0; /* MP sequence number */ @@ -320,6 +322,10 @@ * VJ header compression init */ is->slcomp = slhc_init(16, 16); /* not necessary for 2. link in bundle */ + if (IS_ERR(is->slcomp)) { + isdn_ppp_ccp_reset_free(is); + return PTR_ERR(is->slcomp); + } #endif #ifdef CONFIG_IPPP_FILTER is->pass_filter = NULL; @@ -567,10 +573,8 @@ is->maxcid = val; #ifdef CONFIG_ISDN_PPP_VJ sltmp = slhc_init(16, val); - if (!sltmp) { - printk(KERN_ERR "ippp, can't realloc slhc struct\n"); - return -ENOMEM; - } + if (IS_ERR(sltmp)) + return PTR_ERR(sltmp); if (is->slcomp) slhc_free(is->slcomp); is->slcomp = sltmp; --- linux-raspi2-4.2.0.orig/drivers/leds/Kconfig +++ linux-raspi2-4.2.0/drivers/leds/Kconfig @@ -229,7 +229,7 @@ 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_FALLBACK + select FW_LOADER_USER_HELPER help This option supports common operations for LP5521/5523/55231/5562/8501 devices. @@ -560,6 +560,17 @@ This option enables support for the BlinkM RGB LED connected through I2C. Say Y to enable support for the BlinkM LED. +config LEDS_POWERNV + tristate "LED support for PowerNV Platform" + depends on LEDS_CLASS + depends on PPC_POWERNV + depends on OF + help + This option enables support for the system LEDs present on + PowerNV platforms. Say 'y' to enable this support in kernel. + To compile this driver as a module, choose 'm' here: the module + will be called leds-powernv. + config LEDS_SYSCON bool "LED support for LEDs on system controllers" depends on LEDS_CLASS=y --- linux-raspi2-4.2.0.orig/drivers/leds/Makefile +++ linux-raspi2-4.2.0/drivers/leds/Makefile @@ -65,6 +65,7 @@ obj-$(CONFIG_LEDS_MENF21BMC) += leds-menf21bmc.o obj-$(CONFIG_LEDS_PM8941_WLED) += leds-pm8941-wled.o obj-$(CONFIG_LEDS_KTD2692) += leds-ktd2692.o +obj-$(CONFIG_LEDS_POWERNV) += leds-powernv.o # LED SPI Drivers obj-$(CONFIG_LEDS_DAC124S085) += leds-dac124s085.o --- linux-raspi2-4.2.0.orig/drivers/leds/led-class.c +++ linux-raspi2-4.2.0/drivers/leds/led-class.c @@ -228,12 +228,15 @@ { unsigned int i = 0; int ret = 0; + struct device *dev; strlcpy(name, init_name, len); - while (class_find_device(leds_class, NULL, name, match_name) && - (ret < len)) + while ((ret < len) && + (dev = class_find_device(leds_class, NULL, name, match_name))) { + put_device(dev); ret = snprintf(name, len, "%s_%u", init_name, ++i); + } if (ret >= len) return -ENOMEM; --- linux-raspi2-4.2.0.orig/drivers/leds/leds-gpio.c +++ linux-raspi2-4.2.0/drivers/leds/leds-gpio.c @@ -42,6 +42,13 @@ led_dat->platform_gpio_blink_set(led_dat->gpiod, led_dat->new_level, NULL, NULL); led_dat->blinking = 0; + } else if (led_dat->cdev.flags & SET_GPIO_INPUT) { + gpiod_direction_input(led_dat->gpiod); + led_dat->cdev.flags &= ~SET_GPIO_INPUT; + } + else if (led_dat->cdev.flags & SET_GPIO_OUTPUT) { + gpiod_direction_output(led_dat->gpiod, led_dat->new_level); + led_dat->cdev.flags &= ~SET_GPIO_OUTPUT; } else gpiod_set_value_cansleep(led_dat->gpiod, led_dat->new_level); } @@ -62,7 +69,8 @@ * seem to have a reliable way to know if we're already in one; so * let's just assume the worst. */ - if (led_dat->can_sleep) { + if (led_dat->can_sleep || + (led_dat->cdev.flags & (SET_GPIO_INPUT | SET_GPIO_OUTPUT) )) { led_dat->new_level = level; schedule_work(&led_dat->work); } else { @@ -75,6 +83,13 @@ } } +static enum led_brightness gpio_led_get(struct led_classdev *led_cdev) +{ + struct gpio_led_data *led_dat = + container_of(led_cdev, struct gpio_led_data, cdev); + return gpiod_get_value_cansleep(led_dat->gpiod) ? LED_FULL : LED_OFF; +} + static int gpio_blink_set(struct led_classdev *led_cdev, unsigned long *delay_on, unsigned long *delay_off) { @@ -131,6 +146,7 @@ led_dat->cdev.blink_set = gpio_blink_set; } led_dat->cdev.brightness_set = gpio_led_set; + led_dat->cdev.brightness_get = gpio_led_get; if (template->default_state == LEDS_GPIO_DEFSTATE_KEEP) state = !!gpiod_get_value_cansleep(led_dat->gpiod); else --- linux-raspi2-4.2.0.orig/drivers/leds/leds-powernv.c +++ linux-raspi2-4.2.0/drivers/leds/leds-powernv.c @@ -0,0 +1,345 @@ +/* + * PowerNV LED Driver + * + * Copyright IBM Corp. 2015 + * + * Author: Vasant Hegde + * Author: Anshuman Khandual + * + * 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. + */ + +#include +#include +#include +#include +#include +#include + +#include + +/* Map LED type to description. */ +struct led_type_map { + const int type; + const char *desc; +}; +static const struct led_type_map led_type_map[] = { + {OPAL_SLOT_LED_TYPE_ID, "identify"}, + {OPAL_SLOT_LED_TYPE_FAULT, "fault"}, + {OPAL_SLOT_LED_TYPE_ATTN, "attention"}, + {-1, NULL}, +}; + +struct powernv_led_common { + /* + * By default unload path resets all the LEDs. But on PowerNV + * platform we want to retain LED state across reboot as these + * are controlled by firmware. Also service processor can modify + * the LEDs independent of OS. Hence avoid resetting LEDs in + * unload path. + */ + bool led_disabled; + + /* Max supported LED type */ + __be64 max_led_type; + + /* glabal lock */ + struct mutex lock; +}; + +/* PowerNV LED data */ +struct powernv_led_data { + struct led_classdev cdev; + char *loc_code; /* LED location code */ + int led_type; /* OPAL_SLOT_LED_TYPE_* */ + + struct powernv_led_common *common; +}; + + +/* Returns OPAL_SLOT_LED_TYPE_* for given led type string */ +static int powernv_get_led_type(const char *led_type_desc) +{ + int i; + + for (i = 0; i < ARRAY_SIZE(led_type_map); i++) + if (!strcmp(led_type_map[i].desc, led_type_desc)) + return led_type_map[i].type; + + return -1; +} + +/* + * This commits the state change of the requested LED through an OPAL call. + * This function is called from work queue task context when ever it gets + * scheduled. This function can sleep at opal_async_wait_response call. + */ +static void powernv_led_set(struct powernv_led_data *powernv_led, + enum led_brightness value) +{ + int rc, token; + u64 led_mask, led_value = 0; + __be64 max_type; + struct opal_msg msg; + struct device *dev = powernv_led->cdev.dev; + struct powernv_led_common *powernv_led_common = powernv_led->common; + + /* Prepare for the OPAL call */ + max_type = powernv_led_common->max_led_type; + led_mask = OPAL_SLOT_LED_STATE_ON << powernv_led->led_type; + if (value) + led_value = led_mask; + + /* OPAL async call */ + token = opal_async_get_token_interruptible(); + if (token < 0) { + if (token != -ERESTARTSYS) + dev_err(dev, "%s: Couldn't get OPAL async token\n", + __func__); + return; + } + + rc = opal_leds_set_ind(token, powernv_led->loc_code, + led_mask, led_value, &max_type); + if (rc != OPAL_ASYNC_COMPLETION) { + dev_err(dev, "%s: OPAL set LED call failed for %s [rc=%d]\n", + __func__, powernv_led->loc_code, rc); + goto out_token; + } + + rc = opal_async_wait_response(token, &msg); + if (rc) { + dev_err(dev, + "%s: Failed to wait for the async response [rc=%d]\n", + __func__, rc); + goto out_token; + } + + rc = be64_to_cpu(msg.params[1]); + if (rc != OPAL_SUCCESS) + dev_err(dev, "%s : OAPL async call returned failed [rc=%d]\n", + __func__, rc); + +out_token: + opal_async_release_token(token); +} + +/* + * This function fetches the LED state for a given LED type for + * mentioned LED classdev structure. + */ +static enum led_brightness powernv_led_get(struct powernv_led_data *powernv_led) +{ + int rc; + __be64 mask, value, max_type; + u64 led_mask, led_value; + struct device *dev = powernv_led->cdev.dev; + struct powernv_led_common *powernv_led_common = powernv_led->common; + + /* Fetch all LED status */ + mask = cpu_to_be64(0); + value = cpu_to_be64(0); + max_type = powernv_led_common->max_led_type; + + rc = opal_leds_get_ind(powernv_led->loc_code, + &mask, &value, &max_type); + if (rc != OPAL_SUCCESS && rc != OPAL_PARTIAL) { + dev_err(dev, "%s: OPAL get led call failed [rc=%d]\n", + __func__, rc); + return LED_OFF; + } + + led_mask = be64_to_cpu(mask); + led_value = be64_to_cpu(value); + + /* LED status available */ + if (!((led_mask >> powernv_led->led_type) & OPAL_SLOT_LED_STATE_ON)) { + dev_err(dev, "%s: LED status not available for %s\n", + __func__, powernv_led->cdev.name); + return LED_OFF; + } + + /* LED status value */ + if ((led_value >> powernv_led->led_type) & OPAL_SLOT_LED_STATE_ON) + return LED_FULL; + + return LED_OFF; +} + +/* + * LED classdev 'brightness_get' function. This schedules work + * to update LED state. + */ +static void powernv_brightness_set(struct led_classdev *led_cdev, + enum led_brightness value) +{ + struct powernv_led_data *powernv_led = + container_of(led_cdev, struct powernv_led_data, cdev); + struct powernv_led_common *powernv_led_common = powernv_led->common; + + /* Do not modify LED in unload path */ + if (powernv_led_common->led_disabled) + return; + + mutex_lock(&powernv_led_common->lock); + powernv_led_set(powernv_led, value); + mutex_unlock(&powernv_led_common->lock); +} + +/* LED classdev 'brightness_get' function */ +static enum led_brightness powernv_brightness_get(struct led_classdev *led_cdev) +{ + struct powernv_led_data *powernv_led = + container_of(led_cdev, struct powernv_led_data, cdev); + + return powernv_led_get(powernv_led); +} + +/* + * This function registers classdev structure for any given type of LED on + * a given child LED device node. + */ +static int powernv_led_create(struct device *dev, + struct powernv_led_data *powernv_led, + const char *led_type_desc) +{ + int rc; + + /* Make sure LED type is supported */ + powernv_led->led_type = powernv_get_led_type(led_type_desc); + if (powernv_led->led_type == -1) { + dev_warn(dev, "%s: No support for led type : %s\n", + __func__, led_type_desc); + return -EINVAL; + } + + /* Create the name for classdev */ + powernv_led->cdev.name = devm_kasprintf(dev, GFP_KERNEL, "%s:%s", + powernv_led->loc_code, + led_type_desc); + if (!powernv_led->cdev.name) { + dev_err(dev, + "%s: Memory allocation failed for classdev name\n", + __func__); + return -ENOMEM; + } + + powernv_led->cdev.brightness_set = powernv_brightness_set; + powernv_led->cdev.brightness_get = powernv_brightness_get; + powernv_led->cdev.brightness = LED_OFF; + powernv_led->cdev.max_brightness = LED_FULL; + + /* Register the classdev */ + rc = devm_led_classdev_register(dev, &powernv_led->cdev); + if (rc) { + dev_err(dev, "%s: Classdev registration failed for %s\n", + __func__, powernv_led->cdev.name); + } + + return rc; +} + +/* Go through LED device tree node and register LED classdev structure */ +static int powernv_led_classdev(struct platform_device *pdev, + struct device_node *led_node, + struct powernv_led_common *powernv_led_common) +{ + const char *cur = NULL; + int rc = -1; + struct property *p; + struct device_node *np; + struct powernv_led_data *powernv_led; + struct device *dev = &pdev->dev; + + for_each_child_of_node(led_node, np) { + p = of_find_property(np, "led-types", NULL); + if (!p) + continue; + + while ((cur = of_prop_next_string(p, cur)) != NULL) { + powernv_led = devm_kzalloc(dev, sizeof(*powernv_led), + GFP_KERNEL); + if (!powernv_led) + return -ENOMEM; + + powernv_led->common = powernv_led_common; + powernv_led->loc_code = (char *)np->name; + + rc = powernv_led_create(dev, powernv_led, cur); + if (rc) + return rc; + } /* while end */ + } + + return rc; +} + +/* Platform driver probe */ +static int powernv_led_probe(struct platform_device *pdev) +{ + struct device_node *led_node; + struct powernv_led_common *powernv_led_common; + struct device *dev = &pdev->dev; + + led_node = of_find_node_by_path("/ibm,opal/leds"); + if (!led_node) { + dev_err(dev, "%s: LED parent device node not found\n", + __func__); + return -EINVAL; + } + + powernv_led_common = devm_kzalloc(dev, sizeof(*powernv_led_common), + GFP_KERNEL); + if (!powernv_led_common) + return -ENOMEM; + + mutex_init(&powernv_led_common->lock); + powernv_led_common->max_led_type = cpu_to_be64(OPAL_SLOT_LED_TYPE_MAX); + + platform_set_drvdata(pdev, powernv_led_common); + + return powernv_led_classdev(pdev, led_node, powernv_led_common); +} + +/* Platform driver remove */ +static int powernv_led_remove(struct platform_device *pdev) +{ + struct powernv_led_common *powernv_led_common; + + /* Disable LED operation */ + powernv_led_common = platform_get_drvdata(pdev); + powernv_led_common->led_disabled = true; + + /* Destroy lock */ + mutex_destroy(&powernv_led_common->lock); + + dev_info(&pdev->dev, "PowerNV led module unregistered\n"); + return 0; +} + +/* Platform driver property match */ +static const struct of_device_id powernv_led_match[] = { + { + .compatible = "ibm,opal-v3-led", + }, + {}, +}; +MODULE_DEVICE_TABLE(of, powernv_led_match); + +static struct platform_driver powernv_led_driver = { + .probe = powernv_led_probe, + .remove = powernv_led_remove, + .driver = { + .name = "powernv-led-driver", + .of_match_table = powernv_led_match, + }, +}; + +module_platform_driver(powernv_led_driver); + +MODULE_LICENSE("GPL v2"); +MODULE_DESCRIPTION("PowerNV LED driver"); +MODULE_AUTHOR("Vasant Hegde "); --- linux-raspi2-4.2.0.orig/drivers/leds/trigger/Kconfig +++ linux-raspi2-4.2.0/drivers/leds/trigger/Kconfig @@ -108,4 +108,11 @@ This enables direct flash/torch on/off by the driver, kernel space. If unsure, say Y. +config LEDS_TRIGGER_INPUT + tristate "LED Input Trigger" + depends on LEDS_TRIGGERS + help + This allows the GPIOs assigned to be LEDs to be initialised to inputs. + If unsure, say Y. + endif # LEDS_TRIGGERS --- linux-raspi2-4.2.0.orig/drivers/leds/trigger/Makefile +++ linux-raspi2-4.2.0/drivers/leds/trigger/Makefile @@ -8,3 +8,4 @@ obj-$(CONFIG_LEDS_TRIGGER_DEFAULT_ON) += ledtrig-default-on.o obj-$(CONFIG_LEDS_TRIGGER_TRANSIENT) += ledtrig-transient.o obj-$(CONFIG_LEDS_TRIGGER_CAMERA) += ledtrig-camera.o +obj-$(CONFIG_LEDS_TRIGGER_INPUT) += ledtrig-input.o --- linux-raspi2-4.2.0.orig/drivers/leds/trigger/ledtrig-input.c +++ linux-raspi2-4.2.0/drivers/leds/trigger/ledtrig-input.c @@ -0,0 +1,54 @@ +/* + * Set LED GPIO to Input "Trigger" + * + * Copyright 2015 Phil Elwell + * + * Based on Nick Forbes's ledtrig-default-on.c. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + * + */ + +#include +#include +#include +#include +#include +#include "../leds.h" + +static void input_trig_activate(struct led_classdev *led_cdev) +{ + led_cdev->flags |= SET_GPIO_INPUT; + led_set_brightness_async(led_cdev, 0); +} + +static void input_trig_deactivate(struct led_classdev *led_cdev) +{ + led_cdev->flags |= SET_GPIO_OUTPUT; + led_set_brightness_async(led_cdev, 0); +} + +static struct led_trigger input_led_trigger = { + .name = "input", + .activate = input_trig_activate, + .deactivate = input_trig_deactivate, +}; + +static int __init input_trig_init(void) +{ + return led_trigger_register(&input_led_trigger); +} + +static void __exit input_trig_exit(void) +{ + led_trigger_unregister(&input_led_trigger); +} + +module_init(input_trig_init); +module_exit(input_trig_exit); + +MODULE_AUTHOR("Phil Elwell "); +MODULE_DESCRIPTION("Set LED GPIO to Input \"trigger\""); +MODULE_LICENSE("GPL"); --- linux-raspi2-4.2.0.orig/drivers/macintosh/windfarm_core.c +++ linux-raspi2-4.2.0/drivers/macintosh/windfarm_core.c @@ -435,7 +435,7 @@ { mutex_lock(&wf_lock); blocking_notifier_chain_unregister(&wf_client_list, nb); - wf_client_count++; + wf_client_count--; if (wf_client_count == 0) wf_stop_thread(); mutex_unlock(&wf_lock); --- linux-raspi2-4.2.0.orig/drivers/mailbox/Kconfig +++ linux-raspi2-4.2.0/drivers/mailbox/Kconfig @@ -64,7 +64,7 @@ config BCM2835_MBOX tristate "BCM2835 Mailbox" - depends on ARCH_BCM2835 + depends on ARCH_BCM2835 || ARCH_BCM2708 || ARCH_BCM2709 help An implementation of the BCM2385 Mailbox. It is used to invoke the services of the Videocore. Say Y here if you want to use the --- linux-raspi2-4.2.0.orig/drivers/mailbox/bcm2835-mailbox.c +++ linux-raspi2-4.2.0/drivers/mailbox/bcm2835-mailbox.c @@ -51,12 +51,15 @@ #define MAIL1_WRT (ARM_0_MAIL1 + 0x00) #define MAIL1_STA (ARM_0_MAIL1 + 0x18) +/* On ARCH_BCM270x these come through (arm_control.h ) */ +#ifndef ARM_MS_FULL /* Status register: FIFO state. */ #define ARM_MS_FULL BIT(31) #define ARM_MS_EMPTY BIT(30) /* Configuration register: Enable interrupts. */ #define ARM_MC_IHAVEDATAIRQEN BIT(0) +#endif struct bcm2835_mbox { void __iomem *regs; @@ -151,7 +154,7 @@ return -ENOMEM; spin_lock_init(&mbox->lock); - ret = devm_request_irq(dev, irq_of_parse_and_map(dev->of_node, 0), + ret = devm_request_irq(dev, platform_get_irq(pdev, 0), bcm2835_mbox_irq, 0, dev_name(dev), mbox); if (ret) { dev_err(dev, "Failed to register a mailbox IRQ handler: %d\n", @@ -210,7 +213,18 @@ .probe = bcm2835_mbox_probe, .remove = bcm2835_mbox_remove, }; -module_platform_driver(bcm2835_mbox_driver); + +static int __init bcm2835_mbox_init(void) +{ + return platform_driver_register(&bcm2835_mbox_driver); +} +arch_initcall(bcm2835_mbox_init); + +static void __init bcm2835_mbox_exit(void) +{ + platform_driver_unregister(&bcm2835_mbox_driver); +} +module_exit(bcm2835_mbox_exit); MODULE_AUTHOR("Lubomir Rintel "); MODULE_DESCRIPTION("BCM2835 mailbox IPC driver"); --- linux-raspi2-4.2.0.orig/drivers/mailbox/mailbox.c +++ linux-raspi2-4.2.0/drivers/mailbox/mailbox.c @@ -304,13 +304,23 @@ unsigned long flags; int ret; - if (!dev || !dev->of_node) { + if (!dev) { pr_debug("%s: No owner device node\n", __func__); return ERR_PTR(-ENODEV); } mutex_lock(&con_mutex); + if (!dev->of_node) { + chan = ERR_PTR(-EPROBE_DEFER); + /* pick the first controller in the list */ + list_for_each_entry(mbox, &mbox_cons, node) { + chan = &mbox->chans[0]; + break; + } + goto skip_dt; + } + if (of_parse_phandle_with_args(dev->of_node, "mboxes", "#mbox-cells", index, &spec)) { dev_dbg(dev, "%s: can't parse \"mboxes\" property\n", __func__); @@ -327,6 +337,7 @@ of_node_put(spec.np); +skip_dt: if (IS_ERR(chan)) { mutex_unlock(&con_mutex); return chan; --- linux-raspi2-4.2.0.orig/drivers/md/Kconfig +++ linux-raspi2-4.2.0/drivers/md/Kconfig @@ -393,7 +393,7 @@ # of SCSI_DH if the latter isn't defined but if # it is, DM_MULTIPATH must depend on it. We get a build # error if SCSI_DH=m and DM_MULTIPATH=y - depends on SCSI_DH || !SCSI_DH + depends on !SCSI_DH || SCSI ---help--- Allow volume managers to support multipath hardware. --- linux-raspi2-4.2.0.orig/drivers/md/bcache/writeback.h +++ linux-raspi2-4.2.0/drivers/md/bcache/writeback.h @@ -63,7 +63,8 @@ static inline void bch_writeback_queue(struct cached_dev *dc) { - wake_up_process(dc->writeback_thread); + if (!IS_ERR_OR_NULL(dc->writeback_thread)) + wake_up_process(dc->writeback_thread); } static inline void bch_writeback_add(struct cached_dev *dc) --- linux-raspi2-4.2.0.orig/drivers/md/bitmap.c +++ linux-raspi2-4.2.0/drivers/md/bitmap.c @@ -1997,7 +1997,8 @@ if (bitmap->mddev->bitmap_info.offset || bitmap->mddev->bitmap_info.file) ret = bitmap_storage_alloc(&store, chunks, !bitmap->mddev->bitmap_info.external, - bitmap->cluster_slot); + mddev_is_clustered(bitmap->mddev) + ? bitmap->cluster_slot : 0); if (ret) goto err; --- linux-raspi2-4.2.0.orig/drivers/md/dm-cache-metadata.c +++ linux-raspi2-4.2.0/drivers/md/dm-cache-metadata.c @@ -634,10 +634,10 @@ disk_super = dm_block_data(sblock); + disk_super->flags = cpu_to_le32(cmd->flags); if (mutator) update_flags(disk_super, mutator); - disk_super->flags = cpu_to_le32(cmd->flags); disk_super->mapping_root = cpu_to_le64(cmd->root); disk_super->hint_root = cpu_to_le64(cmd->hint_root); disk_super->discard_root = cpu_to_le64(cmd->discard_root); --- linux-raspi2-4.2.0.orig/drivers/md/dm-cache-policy-cleaner.c +++ linux-raspi2-4.2.0/drivers/md/dm-cache-policy-cleaner.c @@ -436,7 +436,7 @@ static struct dm_cache_policy_type wb_policy_type = { .name = "cleaner", .version = {1, 0, 0}, - .hint_size = 0, + .hint_size = 4, .owner = THIS_MODULE, .create = wb_create }; --- linux-raspi2-4.2.0.orig/drivers/md/dm-cache-target.c +++ linux-raspi2-4.2.0/drivers/md/dm-cache-target.c @@ -1729,6 +1729,8 @@ remap_to_origin(cache, bio); issue(cache, bio); } + + free_prison_cell(cache, cell); } static void remap_cell_to_cache_dirty(struct cache *cache, struct dm_bio_prison_cell *cell, @@ -1763,6 +1765,8 @@ remap_to_cache(cache, bio, cblock); issue(cache, bio); } + + free_prison_cell(cache, cell); } /*----------------------------------------------------------------*/ --- linux-raspi2-4.2.0.orig/drivers/md/dm-crypt.c +++ linux-raspi2-4.2.0/drivers/md/dm-crypt.c @@ -968,7 +968,8 @@ /* * Generate a new unfragmented bio with the given size - * This should never violate the device limitations + * This should never violate the device limitations (but only because + * max_segment_size is being constrained to PAGE_SIZE). * * This function may be called concurrently. If we allocate from the mempool * concurrently, there is a possibility of deadlock. For example, if we have @@ -2058,9 +2059,20 @@ return fn(ti, cc->dev, cc->start, ti->len, data); } +static void crypt_io_hints(struct dm_target *ti, struct queue_limits *limits) +{ + /* + * Unfortunate constraint that is required to avoid the potential + * for exceeding underlying device's max_segments limits -- due to + * crypt_alloc_buffer() possibly allocating pages for the encryption + * bio that are not as physically contiguous as the original bio. + */ + limits->max_segment_size = PAGE_SIZE; +} + static struct target_type crypt_target = { .name = "crypt", - .version = {1, 14, 0}, + .version = {1, 14, 1}, .module = THIS_MODULE, .ctr = crypt_ctr, .dtr = crypt_dtr, @@ -2072,6 +2084,7 @@ .message = crypt_message, .merge = crypt_merge, .iterate_devices = crypt_iterate_devices, + .io_hints = crypt_io_hints, }; static int __init dm_crypt_init(void) --- linux-raspi2-4.2.0.orig/drivers/md/dm-mpath.c +++ linux-raspi2-4.2.0/drivers/md/dm-mpath.c @@ -1584,11 +1584,8 @@ /* * Only pass ioctls through if the device sizes match exactly. */ - if (!bdev || ti->len != i_size_read(bdev->bd_inode) >> SECTOR_SHIFT) { - int err = scsi_verify_blk_ioctl(NULL, cmd); - if (err) - r = err; - } + if (!r && ti->len != i_size_read(bdev->bd_inode) >> SECTOR_SHIFT) + r = scsi_verify_blk_ioctl(NULL, cmd); if (r == -ENOTCONN && !fatal_signal_pending(current)) { spin_lock_irqsave(&m->lock, flags); --- linux-raspi2-4.2.0.orig/drivers/md/dm-raid.c +++ linux-raspi2-4.2.0/drivers/md/dm-raid.c @@ -329,8 +329,7 @@ */ if (min_region_size > (1 << 13)) { /* If not a power of 2, make it the next power of 2 */ - if (min_region_size & (min_region_size - 1)) - region_size = 1 << fls(region_size); + region_size = roundup_pow_of_two(min_region_size); DMINFO("Choosing default region size of %lu sectors", region_size); } else { --- linux-raspi2-4.2.0.orig/drivers/md/dm-stats.c +++ linux-raspi2-4.2.0/drivers/md/dm-stats.c @@ -457,12 +457,24 @@ list_for_each_entry(s, &stats->list, list_entry) { if (!program || !strcmp(program, s->program_id)) { len = s->end - s->start; - DMEMIT("%d: %llu+%llu %llu %s %s\n", s->id, + DMEMIT("%d: %llu+%llu %llu %s %s", s->id, (unsigned long long)s->start, (unsigned long long)len, (unsigned long long)s->step, s->program_id, s->aux_data); + if (s->stat_flags & STAT_PRECISE_TIMESTAMPS) + DMEMIT(" precise_timestamps"); + if (s->n_histogram_entries) { + unsigned i; + DMEMIT(" histogram:"); + for (i = 0; i < s->n_histogram_entries; i++) { + if (i) + DMEMIT(","); + DMEMIT("%llu", s->histogram_boundaries[i]); + } + } + DMEMIT("\n"); } } mutex_unlock(&stats->mutex); --- linux-raspi2-4.2.0.orig/drivers/md/dm-thin.c +++ linux-raspi2-4.2.0/drivers/md/dm-thin.c @@ -3255,7 +3255,7 @@ metadata_low_callback, pool); if (r) - goto out_free_pt; + goto out_flags_changed; pt->callbacks.congested_fn = pool_is_congested; dm_table_add_target_callbacks(ti->table, &pt->callbacks); @@ -4333,6 +4333,10 @@ { struct thin_c *tc = ti->private; struct pool *pool = tc->pool; + struct queue_limits *pool_limits = dm_get_queue_limits(pool->pool_md); + + if (!pool_limits->discard_granularity) + return; /* pool's discard support is disabled */ limits->discard_granularity = pool->sectors_per_block << SECTOR_SHIFT; limits->max_discard_sectors = 2048 * 1024 * 16; /* 16G */ --- linux-raspi2-4.2.0.orig/drivers/md/dm.c +++ linux-raspi2-4.2.0/drivers/md/dm.c @@ -2251,6 +2251,13 @@ * This queue is new, so no concurrency on the queue_flags. */ queue_flag_clear_unlocked(QUEUE_FLAG_STACKABLE, md->queue); + + /* + * Initialize data that will only be used by a non-blk-mq DM queue + * - must do so here (in alloc_dev callchain) before queue is used + */ + md->queue->queuedata = md; + md->queue->backing_dev_info.congested_data = md; } static void dm_init_old_md_queue(struct mapped_device *md) @@ -2261,10 +2268,7 @@ /* * Initialize aspects of queue that aren't relevant for blk-mq */ - md->queue->queuedata = md; md->queue->backing_dev_info.congested_fn = dm_any_congested; - md->queue->backing_dev_info.congested_data = md; - blk_queue_bounce_limit(md->queue, BLK_BOUNCE_ANY); } @@ -2952,8 +2956,6 @@ might_sleep(); - map = dm_get_live_table(md, &srcu_idx); - spin_lock(&_minor_lock); idr_replace(&_minor_idr, MINOR_ALLOCED, MINOR(disk_devt(dm_disk(md)))); set_bit(DMF_FREEING, &md->flags); @@ -2967,14 +2969,14 @@ * do not race with internal suspend. */ mutex_lock(&md->suspend_lock); + map = dm_get_live_table(md, &srcu_idx); if (!dm_suspended_md(md)) { dm_table_presuspend_targets(map); dm_table_postsuspend_targets(map); } - mutex_unlock(&md->suspend_lock); - /* dm_put_live_table must be before msleep, otherwise deadlock is possible */ dm_put_live_table(md, srcu_idx); + mutex_unlock(&md->suspend_lock); /* * Rare, but there may be I/O requests still going to complete, --- linux-raspi2-4.2.0.orig/drivers/md/md.c +++ linux-raspi2-4.2.0/drivers/md/md.c @@ -8030,8 +8030,7 @@ !test_bit(Bitmap_sync, &rdev->flags))) continue; - if (rdev->saved_raid_disk < 0) - rdev->recovery_offset = 0; + rdev->recovery_offset = 0; if (mddev->pers-> hot_add_disk(mddev, rdev) == 0) { if (sysfs_link_rdev(mddev, rdev)) --- linux-raspi2-4.2.0.orig/drivers/md/persistent-data/dm-btree-remove.c +++ linux-raspi2-4.2.0/drivers/md/persistent-data/dm-btree-remove.c @@ -301,11 +301,16 @@ { int s; uint32_t max_entries = le32_to_cpu(left->header.max_entries); - unsigned target = (nr_left + nr_center + nr_right) / 3; - BUG_ON(target > max_entries); + unsigned total = nr_left + nr_center + nr_right; + unsigned target_right = total / 3; + unsigned remainder = (target_right * 3) != total; + unsigned target_left = target_right + remainder; + + BUG_ON(target_left > max_entries); + BUG_ON(target_right > max_entries); if (nr_left < nr_right) { - s = nr_left - target; + s = nr_left - target_left; if (s < 0 && nr_center < -s) { /* not enough in central node */ @@ -316,10 +321,10 @@ } else shift(left, center, s); - shift(center, right, target - nr_right); + shift(center, right, target_right - nr_right); } else { - s = target - nr_right; + s = target_right - nr_right; if (s > 0 && nr_center < s) { /* not enough in central node */ shift(center, right, nr_center); @@ -329,7 +334,7 @@ } else shift(center, right, s); - shift(left, center, nr_left - target); + shift(left, center, nr_left - target_left); } *key_ptr(parent, c->index) = center->keys[0]; --- linux-raspi2-4.2.0.orig/drivers/md/persistent-data/dm-btree.c +++ linux-raspi2-4.2.0/drivers/md/persistent-data/dm-btree.c @@ -523,7 +523,7 @@ r = new_block(s->info, &right); if (r < 0) { - /* FIXME: put left */ + unlock_block(s->info, left); return r; } --- linux-raspi2-4.2.0.orig/drivers/md/raid0.c +++ linux-raspi2-4.2.0/drivers/md/raid0.c @@ -83,7 +83,7 @@ char b[BDEVNAME_SIZE]; char b2[BDEVNAME_SIZE]; struct r0conf *conf = kzalloc(sizeof(*conf), GFP_KERNEL); - bool discard_supported = false; + unsigned short blksize = 512; if (!conf) return -ENOMEM; @@ -98,6 +98,9 @@ sector_div(sectors, mddev->chunk_sectors); rdev1->sectors = sectors * mddev->chunk_sectors; + blksize = max(blksize, queue_logical_block_size( + rdev1->bdev->bd_disk->queue)); + rdev_for_each(rdev2, mddev) { pr_debug("md/raid0:%s: comparing %s(%llu)" " with %s(%llu)\n", @@ -134,6 +137,18 @@ } pr_debug("md/raid0:%s: FINAL %d zones\n", mdname(mddev), conf->nr_strip_zones); + /* + * now since we have the hard sector sizes, we can make sure + * chunk size is a multiple of that sector size + */ + if ((mddev->chunk_sectors << 9) % blksize) { + printk(KERN_ERR "md/raid0:%s: chunk_size of %d not multiple of block size %d\n", + mdname(mddev), + mddev->chunk_sectors << 9, blksize); + err = -EINVAL; + goto abort; + } + err = -ENOMEM; conf->strip_zone = kzalloc(sizeof(struct strip_zone)* conf->nr_strip_zones, GFP_KERNEL); @@ -188,19 +203,12 @@ } dev[j] = rdev1; - if (mddev->queue) - disk_stack_limits(mddev->gendisk, rdev1->bdev, - rdev1->data_offset << 9); - if (rdev1->bdev->bd_disk->queue->merge_bvec_fn) conf->has_merge_bvec = 1; if (!smallest || (rdev1->sectors < smallest->sectors)) smallest = rdev1; cnt++; - - if (blk_queue_discard(bdev_get_queue(rdev1->bdev))) - discard_supported = true; } if (cnt != mddev->raid_disks) { printk(KERN_ERR "md/raid0:%s: too few disks (%d of %d) - " @@ -261,28 +269,6 @@ (unsigned long long)smallest->sectors); } - /* - * now since we have the hard sector sizes, we can make sure - * chunk size is a multiple of that sector size - */ - if ((mddev->chunk_sectors << 9) % queue_logical_block_size(mddev->queue)) { - printk(KERN_ERR "md/raid0:%s: chunk_size of %d not valid\n", - mdname(mddev), - mddev->chunk_sectors << 9); - goto abort; - } - - if (mddev->queue) { - blk_queue_io_min(mddev->queue, mddev->chunk_sectors << 9); - blk_queue_io_opt(mddev->queue, - (mddev->chunk_sectors << 9) * mddev->raid_disks); - - if (!discard_supported) - queue_flag_clear_unlocked(QUEUE_FLAG_DISCARD, mddev->queue); - else - queue_flag_set_unlocked(QUEUE_FLAG_DISCARD, mddev->queue); - } - pr_debug("md/raid0:%s: done.\n", mdname(mddev)); *private_conf = conf; @@ -433,12 +419,6 @@ if (md_check_no_bitmap(mddev)) return -EINVAL; - if (mddev->queue) { - blk_queue_max_hw_sectors(mddev->queue, mddev->chunk_sectors); - blk_queue_max_write_same_sectors(mddev->queue, mddev->chunk_sectors); - blk_queue_max_discard_sectors(mddev->queue, mddev->chunk_sectors); - } - /* if private is not null, we are here after takeover */ if (mddev->private == NULL) { ret = create_strip_zones(mddev, &conf); @@ -447,6 +427,29 @@ mddev->private = conf; } conf = mddev->private; + if (mddev->queue) { + struct md_rdev *rdev; + bool discard_supported = false; + + blk_queue_max_hw_sectors(mddev->queue, mddev->chunk_sectors); + blk_queue_max_write_same_sectors(mddev->queue, mddev->chunk_sectors); + blk_queue_max_discard_sectors(mddev->queue, mddev->chunk_sectors); + + blk_queue_io_min(mddev->queue, mddev->chunk_sectors << 9); + blk_queue_io_opt(mddev->queue, + (mddev->chunk_sectors << 9) * mddev->raid_disks); + + rdev_for_each(rdev, mddev) { + disk_stack_limits(mddev->gendisk, rdev->bdev, + rdev->data_offset << 9); + if (blk_queue_discard(bdev_get_queue(rdev->bdev))) + discard_supported = true; + } + if (!discard_supported) + queue_flag_clear_unlocked(QUEUE_FLAG_DISCARD, mddev->queue); + else + queue_flag_set_unlocked(QUEUE_FLAG_DISCARD, mddev->queue); + } /* calculate array device size */ md_set_array_sectors(mddev, raid0_size(mddev, 0, 0)); --- linux-raspi2-4.2.0.orig/drivers/md/raid1.c +++ linux-raspi2-4.2.0/drivers/md/raid1.c @@ -2249,7 +2249,7 @@ bio_trim(wbio, sector - r1_bio->sector, sectors); wbio->bi_iter.bi_sector += rdev->data_offset; wbio->bi_bdev = rdev->bdev; - if (submit_bio_wait(WRITE, wbio) == 0) + if (submit_bio_wait(WRITE, wbio) < 0) /* failure! */ ok = rdev_set_badblocks(rdev, sector, sectors, 0) --- linux-raspi2-4.2.0.orig/drivers/md/raid10.c +++ linux-raspi2-4.2.0/drivers/md/raid10.c @@ -2580,7 +2580,7 @@ choose_data_offset(r10_bio, rdev) + (sector - r10_bio->sector)); wbio->bi_bdev = rdev->bdev; - if (submit_bio_wait(WRITE, wbio) == 0) + if (submit_bio_wait(WRITE, wbio) < 0) /* Failure! */ ok = rdev_set_badblocks(rdev, sector, sectors, 0) --- linux-raspi2-4.2.0.orig/drivers/md/raid5.c +++ linux-raspi2-4.2.0/drivers/md/raid5.c @@ -3505,6 +3505,7 @@ } if (!discard_pending && test_bit(R5_Discard, &sh->dev[sh->pd_idx].flags)) { + int hash; clear_bit(R5_Discard, &sh->dev[sh->pd_idx].flags); clear_bit(R5_UPTODATE, &sh->dev[sh->pd_idx].flags); if (sh->qd_idx >= 0) { @@ -3518,16 +3519,17 @@ * no updated data, so remove it from hash list and the stripe * will be reinitialized */ - spin_lock_irq(&conf->device_lock); unhash: + hash = sh->hash_lock_index; + spin_lock_irq(conf->hash_locks + hash); remove_hash(sh); + spin_unlock_irq(conf->hash_locks + hash); if (head_sh->batch_head) { sh = list_first_entry(&sh->batch_list, struct stripe_head, batch_list); if (sh != head_sh) goto unhash; } - spin_unlock_irq(&conf->device_lock); sh = head_sh; if (test_bit(STRIPE_SYNC_REQUESTED, &sh->state)) --- linux-raspi2-4.2.0.orig/drivers/media/dvb-frontends/m88ds3103.c +++ linux-raspi2-4.2.0/drivers/media/dvb-frontends/m88ds3103.c @@ -18,6 +18,27 @@ static struct dvb_frontend_ops m88ds3103_ops; +/* write single register with mask */ +static int m88ds3103_update_bits(struct m88ds3103_dev *dev, + u8 reg, u8 mask, u8 val) +{ + int ret; + u8 tmp; + + /* no need for read if whole reg is written */ + if (mask != 0xff) { + ret = regmap_bulk_read(dev->regmap, reg, &tmp, 1); + if (ret) + return ret; + + val &= mask; + tmp &= ~mask; + val |= tmp; + } + + return regmap_bulk_write(dev->regmap, reg, &val, 1); +} + /* write reg val table using reg addr auto increment */ static int m88ds3103_wr_reg_val_tab(struct m88ds3103_dev *dev, const struct m88ds3103_reg_val *tab, int tab_len) @@ -394,10 +415,10 @@ u8tmp2 = 0x00; /* 0b00 */ break; } - ret = regmap_update_bits(dev->regmap, 0x22, 0xc0, u8tmp1 << 6); + ret = m88ds3103_update_bits(dev, 0x22, 0xc0, u8tmp1 << 6); if (ret) goto err; - ret = regmap_update_bits(dev->regmap, 0x24, 0xc0, u8tmp2 << 6); + ret = m88ds3103_update_bits(dev, 0x24, 0xc0, u8tmp2 << 6); if (ret) goto err; } @@ -455,13 +476,13 @@ if (ret) goto err; } - ret = regmap_update_bits(dev->regmap, 0x9d, 0x08, 0x08); + ret = m88ds3103_update_bits(dev, 0x9d, 0x08, 0x08); if (ret) goto err; ret = regmap_write(dev->regmap, 0xf1, 0x01); if (ret) goto err; - ret = regmap_update_bits(dev->regmap, 0x30, 0x80, 0x80); + ret = m88ds3103_update_bits(dev, 0x30, 0x80, 0x80); if (ret) goto err; } @@ -498,7 +519,7 @@ switch (dev->cfg->ts_mode) { case M88DS3103_TS_SERIAL: case M88DS3103_TS_SERIAL_D7: - ret = regmap_update_bits(dev->regmap, 0x29, 0x20, u8tmp1); + ret = m88ds3103_update_bits(dev, 0x29, 0x20, u8tmp1); if (ret) goto err; u8tmp1 = 0; @@ -567,11 +588,11 @@ if (ret) goto err; - ret = regmap_update_bits(dev->regmap, 0x4d, 0x02, dev->cfg->spec_inv << 1); + ret = m88ds3103_update_bits(dev, 0x4d, 0x02, dev->cfg->spec_inv << 1); if (ret) goto err; - ret = regmap_update_bits(dev->regmap, 0x30, 0x10, dev->cfg->agc_inv << 4); + ret = m88ds3103_update_bits(dev, 0x30, 0x10, dev->cfg->agc_inv << 4); if (ret) goto err; @@ -625,13 +646,13 @@ dev->warm = false; /* wake up device from sleep */ - ret = regmap_update_bits(dev->regmap, 0x08, 0x01, 0x01); + ret = m88ds3103_update_bits(dev, 0x08, 0x01, 0x01); if (ret) goto err; - ret = regmap_update_bits(dev->regmap, 0x04, 0x01, 0x00); + ret = m88ds3103_update_bits(dev, 0x04, 0x01, 0x00); if (ret) goto err; - ret = regmap_update_bits(dev->regmap, 0x23, 0x10, 0x00); + ret = m88ds3103_update_bits(dev, 0x23, 0x10, 0x00); if (ret) goto err; @@ -749,18 +770,18 @@ utmp = 0x29; else utmp = 0x27; - ret = regmap_update_bits(dev->regmap, utmp, 0x01, 0x00); + ret = m88ds3103_update_bits(dev, utmp, 0x01, 0x00); if (ret) goto err; /* sleep */ - ret = regmap_update_bits(dev->regmap, 0x08, 0x01, 0x00); + ret = m88ds3103_update_bits(dev, 0x08, 0x01, 0x00); if (ret) goto err; - ret = regmap_update_bits(dev->regmap, 0x04, 0x01, 0x01); + ret = m88ds3103_update_bits(dev, 0x04, 0x01, 0x01); if (ret) goto err; - ret = regmap_update_bits(dev->regmap, 0x23, 0x10, 0x10); + ret = m88ds3103_update_bits(dev, 0x23, 0x10, 0x10); if (ret) goto err; @@ -992,12 +1013,12 @@ } utmp = tone << 7 | dev->cfg->envelope_mode << 5; - ret = regmap_update_bits(dev->regmap, 0xa2, 0xe0, utmp); + ret = m88ds3103_update_bits(dev, 0xa2, 0xe0, utmp); if (ret) goto err; utmp = 1 << 2; - ret = regmap_update_bits(dev->regmap, 0xa1, reg_a1_mask, utmp); + ret = m88ds3103_update_bits(dev, 0xa1, reg_a1_mask, utmp); if (ret) goto err; @@ -1047,7 +1068,7 @@ voltage_dis ^= dev->cfg->lnb_en_pol; utmp = voltage_dis << 1 | voltage_sel << 0; - ret = regmap_update_bits(dev->regmap, 0xa2, 0x03, utmp); + ret = m88ds3103_update_bits(dev, 0xa2, 0x03, utmp); if (ret) goto err; @@ -1080,7 +1101,7 @@ } utmp = dev->cfg->envelope_mode << 5; - ret = regmap_update_bits(dev->regmap, 0xa2, 0xe0, utmp); + ret = m88ds3103_update_bits(dev, 0xa2, 0xe0, utmp); if (ret) goto err; @@ -1115,12 +1136,12 @@ } else { dev_dbg(&client->dev, "diseqc tx timeout\n"); - ret = regmap_update_bits(dev->regmap, 0xa1, 0xc0, 0x40); + ret = m88ds3103_update_bits(dev, 0xa1, 0xc0, 0x40); if (ret) goto err; } - ret = regmap_update_bits(dev->regmap, 0xa2, 0xc0, 0x80); + ret = m88ds3103_update_bits(dev, 0xa2, 0xc0, 0x80); if (ret) goto err; @@ -1152,7 +1173,7 @@ } utmp = dev->cfg->envelope_mode << 5; - ret = regmap_update_bits(dev->regmap, 0xa2, 0xe0, utmp); + ret = m88ds3103_update_bits(dev, 0xa2, 0xe0, utmp); if (ret) goto err; @@ -1194,12 +1215,12 @@ } else { dev_dbg(&client->dev, "diseqc tx timeout\n"); - ret = regmap_update_bits(dev->regmap, 0xa1, 0xc0, 0x40); + ret = m88ds3103_update_bits(dev, 0xa1, 0xc0, 0x40); if (ret) goto err; } - ret = regmap_update_bits(dev->regmap, 0xa2, 0xc0, 0x80); + ret = m88ds3103_update_bits(dev, 0xa2, 0xc0, 0x80); if (ret) goto err; @@ -1435,13 +1456,13 @@ goto err_kfree; /* sleep */ - ret = regmap_update_bits(dev->regmap, 0x08, 0x01, 0x00); + ret = m88ds3103_update_bits(dev, 0x08, 0x01, 0x00); if (ret) goto err_kfree; - ret = regmap_update_bits(dev->regmap, 0x04, 0x01, 0x01); + ret = m88ds3103_update_bits(dev, 0x04, 0x01, 0x01); if (ret) goto err_kfree; - ret = regmap_update_bits(dev->regmap, 0x23, 0x10, 0x10); + ret = m88ds3103_update_bits(dev, 0x23, 0x10, 0x10); if (ret) goto err_kfree; --- linux-raspi2-4.2.0.orig/drivers/media/dvb-frontends/si2168.c +++ linux-raspi2-4.2.0/drivers/media/dvb-frontends/si2168.c @@ -502,6 +502,10 @@ /* firmware is in the new format */ for (remaining = fw->size; remaining > 0; remaining -= 17) { len = fw->data[fw->size - remaining]; + if (len > SI2168_ARGLEN) { + ret = -EINVAL; + break; + } memcpy(cmd.args, &fw->data[(fw->size - remaining) + 1], len); cmd.wlen = len; cmd.rlen = 1; --- linux-raspi2-4.2.0.orig/drivers/media/pci/cobalt/Kconfig +++ linux-raspi2-4.2.0/drivers/media/pci/cobalt/Kconfig @@ -1,6 +1,6 @@ config VIDEO_COBALT tristate "Cisco Cobalt support" - depends on VIDEO_V4L2 && I2C && MEDIA_CONTROLLER + depends on VIDEO_V4L2 && I2C && VIDEO_V4L2_SUBDEV_API depends on PCI_MSI && MTD_COMPLEX_MAPPINGS && GPIOLIB depends on SND select I2C_ALGOBIT --- linux-raspi2-4.2.0.orig/drivers/media/platform/Kconfig +++ linux-raspi2-4.2.0/drivers/media/platform/Kconfig @@ -11,6 +11,8 @@ if V4L_PLATFORM_DRIVERS +source "drivers/media/platform/bcm2835/Kconfig" + source "drivers/media/platform/marvell-ccic/Kconfig" config VIDEO_VIA_CAMERA --- linux-raspi2-4.2.0.orig/drivers/media/platform/Makefile +++ linux-raspi2-4.2.0/drivers/media/platform/Makefile @@ -2,6 +2,8 @@ # Makefile for the video capture/playback device drivers. # +obj-$(CONFIG_VIDEO_BCM2835) += bcm2835/ + obj-$(CONFIG_VIDEO_TIMBERDALE) += timblogiw.o obj-$(CONFIG_VIDEO_M32R_AR_M64278) += arv.o --- linux-raspi2-4.2.0.orig/drivers/media/platform/am437x/am437x-vpfe.c +++ linux-raspi2-4.2.0/drivers/media/platform/am437x/am437x-vpfe.c @@ -1186,14 +1186,24 @@ static int vpfe_release(struct file *file) { struct vpfe_device *vpfe = video_drvdata(file); + bool fh_singular; int ret; mutex_lock(&vpfe->lock); - if (v4l2_fh_is_singular_file(file)) - vpfe_ccdc_close(&vpfe->ccdc, vpfe->pdev); + /* Save the singular status before we call the clean-up helper */ + fh_singular = v4l2_fh_is_singular_file(file); + + /* the release helper will cleanup any on-going streaming */ ret = _vb2_fop_release(file, NULL); + /* + * If this was the last open file. + * Then de-initialize hw module. + */ + if (fh_singular) + vpfe_ccdc_close(&vpfe->ccdc, vpfe->pdev); + mutex_unlock(&vpfe->lock); return ret; @@ -1565,7 +1575,7 @@ return -EBUSY; } - ret = vpfe_try_fmt(file, priv, fmt); + ret = vpfe_try_fmt(file, priv, &format); if (ret) return ret; --- linux-raspi2-4.2.0.orig/drivers/media/platform/bcm2835/Kconfig +++ linux-raspi2-4.2.0/drivers/media/platform/bcm2835/Kconfig @@ -0,0 +1,25 @@ +# Broadcom VideoCore IV v4l2 camera support + +config VIDEO_BCM2835 + bool "Broadcom BCM2835 camera interface driver" + depends on VIDEO_V4L2 && (ARCH_BCM2708 || ARCH_BCM2709 || ARCH_BCM2835) + ---help--- + Say Y here to enable camera host interface devices for + Broadcom BCM2835 SoC. This operates over the VCHIQ interface + to a service running on VideoCore. + + +if VIDEO_BCM2835 + +config VIDEO_BCM2835_MMAL + tristate "Broadcom BM2835 MMAL camera interface driver" + depends on BCM2708_VCHIQ + select VIDEOBUF2_VMALLOC + ---help--- + This is a V4L2 driver for the Broadcom BCM2835 MMAL camera host interface + + To compile this driver as a module, choose M here: the + module will be called bcm2835-v4l2.o + + +endif # VIDEO_BM2835 --- linux-raspi2-4.2.0.orig/drivers/media/platform/bcm2835/Makefile +++ linux-raspi2-4.2.0/drivers/media/platform/bcm2835/Makefile @@ -0,0 +1,5 @@ +bcm2835-v4l2-objs := bcm2835-camera.o controls.o mmal-vchiq.o + +obj-$(CONFIG_VIDEO_BCM2835_MMAL) += bcm2835-v4l2.o + +ccflags-$(CONFIG_VIDEO_BCM2835) += -Idrivers/misc/vc04_services -Idrivers/misc/vc04_services/interface/vcos/linuxkernel -D__VCCOREVER__=0x04000000 --- linux-raspi2-4.2.0.orig/drivers/media/platform/bcm2835/bcm2835-camera.c +++ linux-raspi2-4.2.0/drivers/media/platform/bcm2835/bcm2835-camera.c @@ -0,0 +1,1842 @@ +/* + * Broadcom BM2835 V4L2 driver + * + * Copyright © 2013 Raspberry Pi (Trading) Ltd. + * + * This file is subject to the terms and conditions of the GNU General Public + * License. See the file COPYING in the main directory of this archive + * for more details. + * + * Authors: Vincent Sanders + * Dave Stevenson + * Simon Mellor + * Luke Diamand + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "mmal-common.h" +#include "mmal-encodings.h" +#include "mmal-vchiq.h" +#include "mmal-msg.h" +#include "mmal-parameters.h" +#include "bcm2835-camera.h" + +#define BM2835_MMAL_VERSION "0.0.2" +#define BM2835_MMAL_MODULE_NAME "bcm2835-v4l2" +#define MIN_WIDTH 16 +#define MIN_HEIGHT 16 +#define MAX_WIDTH 2592 +#define MAX_HEIGHT 1944 +#define MIN_BUFFER_SIZE (80*1024) + +#define MAX_VIDEO_MODE_WIDTH 1280 +#define MAX_VIDEO_MODE_HEIGHT 720 + +MODULE_DESCRIPTION("Broadcom 2835 MMAL video capture"); +MODULE_AUTHOR("Vincent Sanders"); +MODULE_LICENSE("GPL"); +MODULE_VERSION(BM2835_MMAL_VERSION); + +int bcm2835_v4l2_debug; +module_param_named(debug, bcm2835_v4l2_debug, int, 0644); +MODULE_PARM_DESC(bcm2835_v4l2_debug, "Debug level 0-2"); + +int max_video_width = MAX_VIDEO_MODE_WIDTH; +int max_video_height = MAX_VIDEO_MODE_HEIGHT; +module_param(max_video_width, int, S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH); +MODULE_PARM_DESC(max_video_width, "Threshold for video mode"); +module_param(max_video_height, int, S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH); +MODULE_PARM_DESC(max_video_height, "Threshold for video mode"); + +/* Gstreamer bug https://bugzilla.gnome.org/show_bug.cgi?id=726521 + * v4l2src does bad (and actually wrong) things when the vidioc_enum_framesizes + * function says type V4L2_FRMSIZE_TYPE_STEPWISE, which we do by default. + * It's happier if we just don't say anything at all, when it then + * sets up a load of defaults that it thinks might work. + * If gst_v4l2src_is_broken is non-zero, then we remove the function from + * our function table list (actually switch to an alternate set, but same + * result). + */ +int gst_v4l2src_is_broken = 0; +module_param(gst_v4l2src_is_broken, int, S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH); +MODULE_PARM_DESC(gst_v4l2src_is_broken, "If non-zero, enable workaround for Gstreamer"); + +static struct bm2835_mmal_dev *gdev; /* global device data */ + +#define FPS_MIN 1 +#define FPS_MAX 90 + +/* timeperframe: min/max and default */ +static const struct v4l2_fract + tpf_min = {.numerator = 1, .denominator = FPS_MAX}, + tpf_max = {.numerator = 1, .denominator = FPS_MIN}, + tpf_default = {.numerator = 1000, .denominator = 30000}; + +/* video formats */ +static struct mmal_fmt formats[] = { + { + .name = "4:2:0, planar, YUV", + .fourcc = V4L2_PIX_FMT_YUV420, + .flags = 0, + .mmal = MMAL_ENCODING_I420, + .depth = 12, + .mmal_component = MMAL_COMPONENT_CAMERA, + .ybbp = 1, + }, + { + .name = "4:2:2, packed, YUYV", + .fourcc = V4L2_PIX_FMT_YUYV, + .flags = 0, + .mmal = MMAL_ENCODING_YUYV, + .depth = 16, + .mmal_component = MMAL_COMPONENT_CAMERA, + .ybbp = 2, + }, + { + .name = "RGB24 (LE)", + .fourcc = V4L2_PIX_FMT_RGB24, + .flags = 0, + .mmal = MMAL_ENCODING_BGR24, + .depth = 24, + .mmal_component = MMAL_COMPONENT_CAMERA, + .ybbp = 3, + }, + { + .name = "JPEG", + .fourcc = V4L2_PIX_FMT_JPEG, + .flags = V4L2_FMT_FLAG_COMPRESSED, + .mmal = MMAL_ENCODING_JPEG, + .depth = 8, + .mmal_component = MMAL_COMPONENT_IMAGE_ENCODE, + .ybbp = 0, + }, + { + .name = "H264", + .fourcc = V4L2_PIX_FMT_H264, + .flags = V4L2_FMT_FLAG_COMPRESSED, + .mmal = MMAL_ENCODING_H264, + .depth = 8, + .mmal_component = MMAL_COMPONENT_VIDEO_ENCODE, + .ybbp = 0, + }, + { + .name = "MJPEG", + .fourcc = V4L2_PIX_FMT_MJPEG, + .flags = V4L2_FMT_FLAG_COMPRESSED, + .mmal = MMAL_ENCODING_MJPEG, + .depth = 8, + .mmal_component = MMAL_COMPONENT_VIDEO_ENCODE, + .ybbp = 0, + }, + { + .name = "4:2:2, packed, YVYU", + .fourcc = V4L2_PIX_FMT_YVYU, + .flags = 0, + .mmal = MMAL_ENCODING_YVYU, + .depth = 16, + .mmal_component = MMAL_COMPONENT_CAMERA, + .ybbp = 2, + }, + { + .name = "4:2:2, packed, VYUY", + .fourcc = V4L2_PIX_FMT_VYUY, + .flags = 0, + .mmal = MMAL_ENCODING_VYUY, + .depth = 16, + .mmal_component = MMAL_COMPONENT_CAMERA, + .ybbp = 2, + }, + { + .name = "4:2:2, packed, UYVY", + .fourcc = V4L2_PIX_FMT_UYVY, + .flags = 0, + .mmal = MMAL_ENCODING_UYVY, + .depth = 16, + .mmal_component = MMAL_COMPONENT_CAMERA, + .ybbp = 2, + }, + { + .name = "4:2:0, planar, NV12", + .fourcc = V4L2_PIX_FMT_NV12, + .flags = 0, + .mmal = MMAL_ENCODING_NV12, + .depth = 12, + .mmal_component = MMAL_COMPONENT_CAMERA, + .ybbp = 1, + }, + { + .name = "RGB24 (BE)", + .fourcc = V4L2_PIX_FMT_BGR24, + .flags = 0, + .mmal = MMAL_ENCODING_RGB24, + .depth = 24, + .mmal_component = MMAL_COMPONENT_CAMERA, + .ybbp = 3, + }, + { + .name = "4:2:0, planar, YVU", + .fourcc = V4L2_PIX_FMT_YVU420, + .flags = 0, + .mmal = MMAL_ENCODING_YV12, + .depth = 12, + .mmal_component = MMAL_COMPONENT_CAMERA, + .ybbp = 1, + }, + { + .name = "4:2:0, planar, NV21", + .fourcc = V4L2_PIX_FMT_NV21, + .flags = 0, + .mmal = MMAL_ENCODING_NV21, + .depth = 12, + .mmal_component = MMAL_COMPONENT_CAMERA, + .ybbp = 1, + }, + { + .name = "RGB32 (BE)", + .fourcc = V4L2_PIX_FMT_BGR32, + .flags = 0, + .mmal = MMAL_ENCODING_BGRA, + .depth = 32, + .mmal_component = MMAL_COMPONENT_CAMERA, + .ybbp = 4, + }, +}; + +static struct mmal_fmt *get_format(struct v4l2_format *f) +{ + struct mmal_fmt *fmt; + unsigned int k; + + for (k = 0; k < ARRAY_SIZE(formats); k++) { + fmt = &formats[k]; + if (fmt->fourcc == f->fmt.pix.pixelformat) + break; + } + + if (k == ARRAY_SIZE(formats)) + return NULL; + + return &formats[k]; +} + +/* ------------------------------------------------------------------ + Videobuf queue operations + ------------------------------------------------------------------*/ + +static int queue_setup(struct vb2_queue *vq, const struct v4l2_format *fmt, + unsigned int *nbuffers, unsigned int *nplanes, + unsigned int sizes[], void *alloc_ctxs[]) +{ + struct bm2835_mmal_dev *dev = vb2_get_drv_priv(vq); + unsigned long size; + + /* refuse queue setup if port is not configured */ + if (dev->capture.port == NULL) { + v4l2_err(&dev->v4l2_dev, + "%s: capture port not configured\n", __func__); + return -EINVAL; + } + + size = dev->capture.port->current_buffer.size; + if (size == 0) { + v4l2_err(&dev->v4l2_dev, + "%s: capture port buffer size is zero\n", __func__); + return -EINVAL; + } + + if (*nbuffers < (dev->capture.port->current_buffer.num + 2)) + *nbuffers = (dev->capture.port->current_buffer.num + 2); + + *nplanes = 1; + + sizes[0] = size; + + /* + * videobuf2-vmalloc allocator is context-less so no need to set + * alloc_ctxs array. + */ + + v4l2_dbg(1, bcm2835_v4l2_debug, &dev->v4l2_dev, "%s: dev:%p\n", + __func__, dev); + + return 0; +} + +static int buffer_prepare(struct vb2_buffer *vb) +{ + struct bm2835_mmal_dev *dev = vb2_get_drv_priv(vb->vb2_queue); + unsigned long size; + + v4l2_dbg(1, bcm2835_v4l2_debug, &dev->v4l2_dev, "%s: dev:%p\n", + __func__, dev); + + BUG_ON(dev->capture.port == NULL); + BUG_ON(dev->capture.fmt == NULL); + + size = dev->capture.stride * dev->capture.height; + if (vb2_plane_size(vb, 0) < size) { + v4l2_err(&dev->v4l2_dev, + "%s data will not fit into plane (%lu < %lu)\n", + __func__, vb2_plane_size(vb, 0), size); + return -EINVAL; + } + + return 0; +} + +static inline bool is_capturing(struct bm2835_mmal_dev *dev) +{ + return dev->capture.camera_port == + &dev-> + component[MMAL_COMPONENT_CAMERA]->output[MMAL_CAMERA_PORT_CAPTURE]; +} + +static void buffer_cb(struct vchiq_mmal_instance *instance, + struct vchiq_mmal_port *port, + int status, + struct mmal_buffer *buf, + unsigned long length, u32 mmal_flags, s64 dts, s64 pts) +{ + struct bm2835_mmal_dev *dev = port->cb_ctx; + + v4l2_dbg(1, bcm2835_v4l2_debug, &dev->v4l2_dev, + "%s: status:%d, buf:%p, length:%lu, flags %u, pts %lld\n", + __func__, status, buf, length, mmal_flags, pts); + + if (status != 0) { + /* error in transfer */ + if (buf != NULL) { + /* there was a buffer with the error so return it */ + vb2_buffer_done(&buf->vb, VB2_BUF_STATE_ERROR); + } + return; + } else if (length == 0) { + /* stream ended */ + if (buf != NULL) { + /* this should only ever happen if the port is + * disabled and there are buffers still queued + */ + vb2_buffer_done(&buf->vb, VB2_BUF_STATE_ERROR); + pr_debug("Empty buffer"); + } else if (dev->capture.frame_count) { + /* grab another frame */ + if (is_capturing(dev)) { + pr_debug("Grab another frame"); + vchiq_mmal_port_parameter_set( + instance, + dev->capture. + camera_port, + MMAL_PARAMETER_CAPTURE, + &dev->capture. + frame_count, + sizeof(dev->capture.frame_count)); + } + } else { + /* signal frame completion */ + complete(&dev->capture.frame_cmplt); + } + } else { + if (dev->capture.frame_count) { + if (dev->capture.vc_start_timestamp != -1 && + pts != 0) { + s64 runtime_us = pts - + dev->capture.vc_start_timestamp; + u32 div = 0; + u32 rem = 0; + + div = + div_u64_rem(runtime_us, USEC_PER_SEC, &rem); + buf->vb.v4l2_buf.timestamp.tv_sec = + dev->capture.kernel_start_ts.tv_sec - 1 + + div; + buf->vb.v4l2_buf.timestamp.tv_usec = + dev->capture.kernel_start_ts.tv_usec + rem; + + if (buf->vb.v4l2_buf.timestamp.tv_usec >= + USEC_PER_SEC) { + buf->vb.v4l2_buf.timestamp.tv_sec++; + buf->vb.v4l2_buf.timestamp.tv_usec -= + USEC_PER_SEC; + } + v4l2_dbg(1, bcm2835_v4l2_debug, &dev->v4l2_dev, + "Convert start time %d.%06d and %llu " + "with offset %llu to %d.%06d\n", + (int)dev->capture.kernel_start_ts. + tv_sec, + (int)dev->capture.kernel_start_ts. + tv_usec, + dev->capture.vc_start_timestamp, pts, + (int)buf->vb.v4l2_buf.timestamp.tv_sec, + (int)buf->vb.v4l2_buf.timestamp. + tv_usec); + } else { + v4l2_get_timestamp(&buf->vb.v4l2_buf.timestamp); + } + + vb2_set_plane_payload(&buf->vb, 0, length); + vb2_buffer_done(&buf->vb, VB2_BUF_STATE_DONE); + + if (mmal_flags & MMAL_BUFFER_HEADER_FLAG_EOS && + is_capturing(dev)) { + v4l2_dbg(1, bcm2835_v4l2_debug, &dev->v4l2_dev, + "Grab another frame as buffer has EOS"); + vchiq_mmal_port_parameter_set( + instance, + dev->capture. + camera_port, + MMAL_PARAMETER_CAPTURE, + &dev->capture. + frame_count, + sizeof(dev->capture.frame_count)); + } + } else { + /* signal frame completion */ + complete(&dev->capture.frame_cmplt); + } + } +} + +static int enable_camera(struct bm2835_mmal_dev *dev) +{ + int ret; + if (!dev->camera_use_count) { + ret = vchiq_mmal_component_enable( + dev->instance, + dev->component[MMAL_COMPONENT_CAMERA]); + if (ret < 0) { + v4l2_err(&dev->v4l2_dev, + "Failed enabling camera, ret %d\n", ret); + return -EINVAL; + } + } + dev->camera_use_count++; + v4l2_dbg(1, bcm2835_v4l2_debug, + &dev->v4l2_dev, "enabled camera (refcount %d)\n", + dev->camera_use_count); + return 0; +} + +static int disable_camera(struct bm2835_mmal_dev *dev) +{ + int ret; + if (!dev->camera_use_count) { + v4l2_err(&dev->v4l2_dev, + "Disabled the camera when already disabled\n"); + return -EINVAL; + } + dev->camera_use_count--; + if (!dev->camera_use_count) { + unsigned int i = 0xFFFFFFFF; + v4l2_dbg(1, bcm2835_v4l2_debug, &dev->v4l2_dev, + "Disabling camera\n"); + ret = + vchiq_mmal_component_disable( + dev->instance, + dev->component[MMAL_COMPONENT_CAMERA]); + if (ret < 0) { + v4l2_err(&dev->v4l2_dev, + "Failed disabling camera, ret %d\n", ret); + return -EINVAL; + } + vchiq_mmal_port_parameter_set( + dev->instance, + &dev->component[MMAL_COMPONENT_CAMERA]->control, + MMAL_PARAMETER_CAMERA_NUM, &i, + sizeof(i)); + } + v4l2_dbg(1, bcm2835_v4l2_debug, &dev->v4l2_dev, + "Camera refcount now %d\n", dev->camera_use_count); + return 0; +} + +static void buffer_queue(struct vb2_buffer *vb) +{ + struct bm2835_mmal_dev *dev = vb2_get_drv_priv(vb->vb2_queue); + struct mmal_buffer *buf = container_of(vb, struct mmal_buffer, vb); + int ret; + + v4l2_dbg(1, bcm2835_v4l2_debug, &dev->v4l2_dev, + "%s: dev:%p buf:%p\n", __func__, dev, buf); + + buf->buffer = vb2_plane_vaddr(&buf->vb, 0); + buf->buffer_size = vb2_plane_size(&buf->vb, 0); + + ret = vchiq_mmal_submit_buffer(dev->instance, dev->capture.port, buf); + if (ret < 0) + v4l2_err(&dev->v4l2_dev, "%s: error submitting buffer\n", + __func__); +} + +static int start_streaming(struct vb2_queue *vq, unsigned int count) +{ + struct bm2835_mmal_dev *dev = vb2_get_drv_priv(vq); + int ret; + int parameter_size; + + v4l2_dbg(1, bcm2835_v4l2_debug, &dev->v4l2_dev, "%s: dev:%p\n", + __func__, dev); + + /* ensure a format has actually been set */ + if (dev->capture.port == NULL) + return -EINVAL; + + if (enable_camera(dev) < 0) { + v4l2_err(&dev->v4l2_dev, "Failed to enable camera\n"); + return -EINVAL; + } + + /*init_completion(&dev->capture.frame_cmplt); */ + + /* enable frame capture */ + dev->capture.frame_count = 1; + + /* if the preview is not already running, wait for a few frames for AGC + * to settle down. + */ + if (!dev->component[MMAL_COMPONENT_PREVIEW]->enabled) + msleep(300); + + /* enable the connection from camera to encoder (if applicable) */ + if (dev->capture.camera_port != dev->capture.port + && dev->capture.camera_port) { + ret = vchiq_mmal_port_enable(dev->instance, + dev->capture.camera_port, NULL); + if (ret) { + v4l2_err(&dev->v4l2_dev, + "Failed to enable encode tunnel - error %d\n", + ret); + return -1; + } + } + + /* Get VC timestamp at this point in time */ + parameter_size = sizeof(dev->capture.vc_start_timestamp); + if (vchiq_mmal_port_parameter_get(dev->instance, + dev->capture.camera_port, + MMAL_PARAMETER_SYSTEM_TIME, + &dev->capture.vc_start_timestamp, + ¶meter_size)) { + v4l2_err(&dev->v4l2_dev, + "Failed to get VC start time - update your VC f/w\n"); + + /* Flag to indicate just to rely on kernel timestamps */ + dev->capture.vc_start_timestamp = -1; + } else + v4l2_dbg(1, bcm2835_v4l2_debug, &dev->v4l2_dev, + "Start time %lld size %d\n", + dev->capture.vc_start_timestamp, parameter_size); + + v4l2_get_timestamp(&dev->capture.kernel_start_ts); + + /* enable the camera port */ + dev->capture.port->cb_ctx = dev; + ret = + vchiq_mmal_port_enable(dev->instance, dev->capture.port, buffer_cb); + if (ret) { + v4l2_err(&dev->v4l2_dev, + "Failed to enable capture port - error %d. " + "Disabling camera port again\n", ret); + + vchiq_mmal_port_disable(dev->instance, + dev->capture.camera_port); + if (disable_camera(dev) < 0) { + v4l2_err(&dev->v4l2_dev, "Failed to disable camera\n"); + return -EINVAL; + } + return -1; + } + + /* capture the first frame */ + vchiq_mmal_port_parameter_set(dev->instance, + dev->capture.camera_port, + MMAL_PARAMETER_CAPTURE, + &dev->capture.frame_count, + sizeof(dev->capture.frame_count)); + return 0; +} + +/* abort streaming and wait for last buffer */ +static void stop_streaming(struct vb2_queue *vq) +{ + int ret; + struct bm2835_mmal_dev *dev = vb2_get_drv_priv(vq); + + v4l2_dbg(1, bcm2835_v4l2_debug, &dev->v4l2_dev, "%s: dev:%p\n", + __func__, dev); + + init_completion(&dev->capture.frame_cmplt); + dev->capture.frame_count = 0; + + /* ensure a format has actually been set */ + if (dev->capture.port == NULL) { + v4l2_err(&dev->v4l2_dev, + "no capture port - stream not started?\n"); + return; + } + + v4l2_dbg(1, bcm2835_v4l2_debug, &dev->v4l2_dev, "stopping capturing\n"); + + /* stop capturing frames */ + vchiq_mmal_port_parameter_set(dev->instance, + dev->capture.camera_port, + MMAL_PARAMETER_CAPTURE, + &dev->capture.frame_count, + sizeof(dev->capture.frame_count)); + + /* wait for last frame to complete */ + ret = wait_for_completion_timeout(&dev->capture.frame_cmplt, HZ); + if (ret <= 0) + v4l2_err(&dev->v4l2_dev, + "error %d waiting for frame completion\n", ret); + + v4l2_dbg(1, bcm2835_v4l2_debug, &dev->v4l2_dev, + "disabling connection\n"); + + /* disable the connection from camera to encoder */ + ret = vchiq_mmal_port_disable(dev->instance, dev->capture.camera_port); + if (!ret && dev->capture.camera_port != dev->capture.port) { + v4l2_dbg(1, bcm2835_v4l2_debug, &dev->v4l2_dev, + "disabling port\n"); + ret = vchiq_mmal_port_disable(dev->instance, dev->capture.port); + } else if (dev->capture.camera_port != dev->capture.port) { + v4l2_err(&dev->v4l2_dev, "port_disable failed, error %d\n", + ret); + } + + if (disable_camera(dev) < 0) + v4l2_err(&dev->v4l2_dev, "Failed to disable camera\n"); +} + +static void bm2835_mmal_lock(struct vb2_queue *vq) +{ + struct bm2835_mmal_dev *dev = vb2_get_drv_priv(vq); + mutex_lock(&dev->mutex); +} + +static void bm2835_mmal_unlock(struct vb2_queue *vq) +{ + struct bm2835_mmal_dev *dev = vb2_get_drv_priv(vq); + mutex_unlock(&dev->mutex); +} + +static struct vb2_ops bm2835_mmal_video_qops = { + .queue_setup = queue_setup, + .buf_prepare = buffer_prepare, + .buf_queue = buffer_queue, + .start_streaming = start_streaming, + .stop_streaming = stop_streaming, + .wait_prepare = bm2835_mmal_unlock, + .wait_finish = bm2835_mmal_lock, +}; + +/* ------------------------------------------------------------------ + IOCTL operations + ------------------------------------------------------------------*/ + +/* overlay ioctl */ +static int vidioc_enum_fmt_vid_overlay(struct file *file, void *priv, + struct v4l2_fmtdesc *f) +{ + struct mmal_fmt *fmt; + + if (f->index >= ARRAY_SIZE(formats)) + return -EINVAL; + + fmt = &formats[f->index]; + + strlcpy(f->description, fmt->name, sizeof(f->description)); + f->pixelformat = fmt->fourcc; + f->flags = fmt->flags; + + return 0; +} + +static int vidioc_g_fmt_vid_overlay(struct file *file, void *priv, + struct v4l2_format *f) +{ + struct bm2835_mmal_dev *dev = video_drvdata(file); + + f->fmt.win = dev->overlay; + + return 0; +} + +static int vidioc_try_fmt_vid_overlay(struct file *file, void *priv, + struct v4l2_format *f) +{ + /* Only support one format so get the current one. */ + vidioc_g_fmt_vid_overlay(file, priv, f); + + /* todo: allow the size and/or offset to be changed. */ + return 0; +} + +static int vidioc_s_fmt_vid_overlay(struct file *file, void *priv, + struct v4l2_format *f) +{ + struct bm2835_mmal_dev *dev = video_drvdata(file); + + vidioc_try_fmt_vid_overlay(file, priv, f); + + dev->overlay = f->fmt.win; + + /* todo: program the preview port parameters */ + return 0; +} + +static int vidioc_overlay(struct file *file, void *f, unsigned int on) +{ + int ret; + struct bm2835_mmal_dev *dev = video_drvdata(file); + struct vchiq_mmal_port *src; + struct vchiq_mmal_port *dst; + struct mmal_parameter_displayregion prev_config = { + .set = MMAL_DISPLAY_SET_LAYER | MMAL_DISPLAY_SET_ALPHA | + MMAL_DISPLAY_SET_DEST_RECT | MMAL_DISPLAY_SET_FULLSCREEN, + .layer = PREVIEW_LAYER, + .alpha = 255, + .fullscreen = 0, + .dest_rect = { + .x = dev->overlay.w.left, + .y = dev->overlay.w.top, + .width = dev->overlay.w.width, + .height = dev->overlay.w.height, + }, + }; + + if ((on && dev->component[MMAL_COMPONENT_PREVIEW]->enabled) || + (!on && !dev->component[MMAL_COMPONENT_PREVIEW]->enabled)) + return 0; /* already in requested state */ + + src = + &dev->component[MMAL_COMPONENT_CAMERA]-> + output[MMAL_CAMERA_PORT_PREVIEW]; + + if (!on) { + /* disconnect preview ports and disable component */ + ret = vchiq_mmal_port_disable(dev->instance, src); + if (!ret) + ret = + vchiq_mmal_port_connect_tunnel(dev->instance, src, + NULL); + if (ret >= 0) + ret = vchiq_mmal_component_disable( + dev->instance, + dev->component[MMAL_COMPONENT_PREVIEW]); + + disable_camera(dev); + return ret; + } + + /* set preview port format and connect it to output */ + dst = &dev->component[MMAL_COMPONENT_PREVIEW]->input[0]; + + ret = vchiq_mmal_port_set_format(dev->instance, src); + if (ret < 0) + goto error; + + ret = vchiq_mmal_port_parameter_set(dev->instance, dst, + MMAL_PARAMETER_DISPLAYREGION, + &prev_config, sizeof(prev_config)); + if (ret < 0) + goto error; + + if (enable_camera(dev) < 0) + goto error; + + ret = vchiq_mmal_component_enable( + dev->instance, + dev->component[MMAL_COMPONENT_PREVIEW]); + if (ret < 0) + goto error; + + v4l2_dbg(1, bcm2835_v4l2_debug, &dev->v4l2_dev, "connecting %p to %p\n", + src, dst); + ret = vchiq_mmal_port_connect_tunnel(dev->instance, src, dst); + if (!ret) + ret = vchiq_mmal_port_enable(dev->instance, src, NULL); +error: + return ret; +} + +static int vidioc_g_fbuf(struct file *file, void *fh, + struct v4l2_framebuffer *a) +{ + /* The video overlay must stay within the framebuffer and can't be + positioned independently. */ + struct bm2835_mmal_dev *dev = video_drvdata(file); + struct vchiq_mmal_port *preview_port = + &dev->component[MMAL_COMPONENT_CAMERA]-> + output[MMAL_CAMERA_PORT_PREVIEW]; + a->flags = V4L2_FBUF_FLAG_OVERLAY; + a->fmt.width = preview_port->es.video.width; + a->fmt.height = preview_port->es.video.height; + a->fmt.pixelformat = V4L2_PIX_FMT_YUV420; + a->fmt.bytesperline = preview_port->es.video.width; + a->fmt.sizeimage = (preview_port->es.video.width * + preview_port->es.video.height * 3)>>1; + a->fmt.colorspace = V4L2_COLORSPACE_SMPTE170M; + + return 0; +} + +/* input ioctls */ +static int vidioc_enum_input(struct file *file, void *priv, + struct v4l2_input *inp) +{ + /* only a single camera input */ + if (inp->index != 0) + return -EINVAL; + + inp->type = V4L2_INPUT_TYPE_CAMERA; + sprintf(inp->name, "Camera %u", inp->index); + return 0; +} + +static int vidioc_g_input(struct file *file, void *priv, unsigned int *i) +{ + *i = 0; + return 0; +} + +static int vidioc_s_input(struct file *file, void *priv, unsigned int i) +{ + if (i != 0) + return -EINVAL; + + return 0; +} + +/* capture ioctls */ +static int vidioc_querycap(struct file *file, void *priv, + struct v4l2_capability *cap) +{ + struct bm2835_mmal_dev *dev = video_drvdata(file); + u32 major; + u32 minor; + + vchiq_mmal_version(dev->instance, &major, &minor); + + strcpy(cap->driver, "bm2835 mmal"); + snprintf(cap->card, sizeof(cap->card), "mmal service %d.%d", + major, minor); + + snprintf(cap->bus_info, sizeof(cap->bus_info), + "platform:%s", dev->v4l2_dev.name); + cap->device_caps = V4L2_CAP_VIDEO_CAPTURE | V4L2_CAP_VIDEO_OVERLAY | + V4L2_CAP_STREAMING | V4L2_CAP_READWRITE; + cap->capabilities = cap->device_caps | V4L2_CAP_DEVICE_CAPS; + + return 0; +} + +static int vidioc_enum_fmt_vid_cap(struct file *file, void *priv, + struct v4l2_fmtdesc *f) +{ + struct mmal_fmt *fmt; + + if (f->index >= ARRAY_SIZE(formats)) + return -EINVAL; + + fmt = &formats[f->index]; + + strlcpy(f->description, fmt->name, sizeof(f->description)); + f->pixelformat = fmt->fourcc; + f->flags = fmt->flags; + + return 0; +} + +static int vidioc_g_fmt_vid_cap(struct file *file, void *priv, + struct v4l2_format *f) +{ + struct bm2835_mmal_dev *dev = video_drvdata(file); + + f->fmt.pix.width = dev->capture.width; + f->fmt.pix.height = dev->capture.height; + f->fmt.pix.field = V4L2_FIELD_NONE; + f->fmt.pix.pixelformat = dev->capture.fmt->fourcc; + f->fmt.pix.bytesperline = dev->capture.stride; + f->fmt.pix.sizeimage = dev->capture.buffersize; + + if (dev->capture.fmt->fourcc == V4L2_PIX_FMT_RGB24) + f->fmt.pix.colorspace = V4L2_COLORSPACE_SRGB; + else if (dev->capture.fmt->fourcc == V4L2_PIX_FMT_JPEG) + f->fmt.pix.colorspace = V4L2_COLORSPACE_JPEG; + else + f->fmt.pix.colorspace = V4L2_COLORSPACE_SMPTE170M; + f->fmt.pix.priv = 0; + + v4l2_dump_pix_format(1, bcm2835_v4l2_debug, &dev->v4l2_dev, &f->fmt.pix, + __func__); + return 0; +} + +static int vidioc_try_fmt_vid_cap(struct file *file, void *priv, + struct v4l2_format *f) +{ + struct bm2835_mmal_dev *dev = video_drvdata(file); + struct mmal_fmt *mfmt; + + mfmt = get_format(f); + if (!mfmt) { + v4l2_dbg(1, bcm2835_v4l2_debug, &dev->v4l2_dev, + "Fourcc format (0x%08x) unknown.\n", + f->fmt.pix.pixelformat); + f->fmt.pix.pixelformat = formats[0].fourcc; + mfmt = get_format(f); + } + + f->fmt.pix.field = V4L2_FIELD_NONE; + + v4l2_dbg(1, bcm2835_v4l2_debug, &dev->v4l2_dev, + "Clipping/aligning %dx%d format %08X\n", + f->fmt.pix.width, f->fmt.pix.height, f->fmt.pix.pixelformat); + + v4l_bound_align_image(&f->fmt.pix.width, MIN_WIDTH, MAX_WIDTH, 1, + &f->fmt.pix.height, MIN_HEIGHT, MAX_HEIGHT, 1, 0); + f->fmt.pix.bytesperline = f->fmt.pix.width * mfmt->ybbp; + + /* Image buffer has to be padded to allow for alignment, even though + * we then remove that padding before delivering the buffer. + */ + f->fmt.pix.sizeimage = ((f->fmt.pix.height+15)&~15) * + (((f->fmt.pix.width+31)&~31) * mfmt->depth) >> 3; + + if ((mfmt->flags & V4L2_FMT_FLAG_COMPRESSED) && + f->fmt.pix.sizeimage < MIN_BUFFER_SIZE) + f->fmt.pix.sizeimage = MIN_BUFFER_SIZE; + + if (f->fmt.pix.pixelformat == V4L2_PIX_FMT_RGB24) + f->fmt.pix.colorspace = V4L2_COLORSPACE_SRGB; + else if (f->fmt.pix.pixelformat == V4L2_PIX_FMT_JPEG) + f->fmt.pix.colorspace = V4L2_COLORSPACE_JPEG; + else + f->fmt.pix.colorspace = V4L2_COLORSPACE_SMPTE170M; + f->fmt.pix.priv = 0; + + v4l2_dbg(1, bcm2835_v4l2_debug, &dev->v4l2_dev, + "Now %dx%d format %08X\n", + f->fmt.pix.width, f->fmt.pix.height, f->fmt.pix.pixelformat); + + v4l2_dump_pix_format(1, bcm2835_v4l2_debug, &dev->v4l2_dev, &f->fmt.pix, + __func__); + return 0; +} + +static int mmal_setup_components(struct bm2835_mmal_dev *dev, + struct v4l2_format *f) +{ + int ret; + struct vchiq_mmal_port *port = NULL, *camera_port = NULL; + struct vchiq_mmal_component *encode_component = NULL; + struct mmal_fmt *mfmt = get_format(f); + + BUG_ON(!mfmt); + + if (dev->capture.encode_component) { + v4l2_dbg(1, bcm2835_v4l2_debug, &dev->v4l2_dev, + "vid_cap - disconnect previous tunnel\n"); + + /* Disconnect any previous connection */ + vchiq_mmal_port_connect_tunnel(dev->instance, + dev->capture.camera_port, NULL); + dev->capture.camera_port = NULL; + ret = vchiq_mmal_component_disable(dev->instance, + dev->capture. + encode_component); + if (ret) + v4l2_err(&dev->v4l2_dev, + "Failed to disable encode component %d\n", + ret); + + dev->capture.encode_component = NULL; + } + /* format dependant port setup */ + switch (mfmt->mmal_component) { + case MMAL_COMPONENT_CAMERA: + /* Make a further decision on port based on resolution */ + if (f->fmt.pix.width <= max_video_width + && f->fmt.pix.height <= max_video_height) + camera_port = port = + &dev->component[MMAL_COMPONENT_CAMERA]-> + output[MMAL_CAMERA_PORT_VIDEO]; + else + camera_port = port = + &dev->component[MMAL_COMPONENT_CAMERA]-> + output[MMAL_CAMERA_PORT_CAPTURE]; + break; + case MMAL_COMPONENT_IMAGE_ENCODE: + encode_component = dev->component[MMAL_COMPONENT_IMAGE_ENCODE]; + port = &dev->component[MMAL_COMPONENT_IMAGE_ENCODE]->output[0]; + camera_port = + &dev->component[MMAL_COMPONENT_CAMERA]-> + output[MMAL_CAMERA_PORT_CAPTURE]; + break; + case MMAL_COMPONENT_VIDEO_ENCODE: + encode_component = dev->component[MMAL_COMPONENT_VIDEO_ENCODE]; + port = &dev->component[MMAL_COMPONENT_VIDEO_ENCODE]->output[0]; + camera_port = + &dev->component[MMAL_COMPONENT_CAMERA]-> + output[MMAL_CAMERA_PORT_VIDEO]; + break; + default: + break; + } + + if (!port) + return -EINVAL; + + if (encode_component) + camera_port->format.encoding = MMAL_ENCODING_OPAQUE; + else + camera_port->format.encoding = mfmt->mmal; + + camera_port->format.encoding_variant = 0; + camera_port->es.video.width = f->fmt.pix.width; + camera_port->es.video.height = f->fmt.pix.height; + camera_port->es.video.crop.x = 0; + camera_port->es.video.crop.y = 0; + camera_port->es.video.crop.width = f->fmt.pix.width; + camera_port->es.video.crop.height = f->fmt.pix.height; + camera_port->es.video.frame_rate.num = 0; + camera_port->es.video.frame_rate.den = 1; + camera_port->es.video.color_space = MMAL_COLOR_SPACE_JPEG_JFIF; + + ret = vchiq_mmal_port_set_format(dev->instance, camera_port); + + if (!ret + && camera_port == + &dev->component[MMAL_COMPONENT_CAMERA]-> + output[MMAL_CAMERA_PORT_VIDEO]) { + bool overlay_enabled = + !!dev->component[MMAL_COMPONENT_PREVIEW]->enabled; + struct vchiq_mmal_port *preview_port = + &dev->component[MMAL_COMPONENT_CAMERA]-> + output[MMAL_CAMERA_PORT_PREVIEW]; + /* Preview and encode ports need to match on resolution */ + if (overlay_enabled) { + /* Need to disable the overlay before we can update + * the resolution + */ + ret = + vchiq_mmal_port_disable(dev->instance, + preview_port); + if (!ret) + ret = + vchiq_mmal_port_connect_tunnel( + dev->instance, + preview_port, + NULL); + } + preview_port->es.video.width = f->fmt.pix.width; + preview_port->es.video.height = f->fmt.pix.height; + preview_port->es.video.crop.x = 0; + preview_port->es.video.crop.y = 0; + preview_port->es.video.crop.width = f->fmt.pix.width; + preview_port->es.video.crop.height = f->fmt.pix.height; + preview_port->es.video.frame_rate.num = + dev->capture.timeperframe.denominator; + preview_port->es.video.frame_rate.den = + dev->capture.timeperframe.numerator; + ret = vchiq_mmal_port_set_format(dev->instance, preview_port); + if (overlay_enabled) { + ret = vchiq_mmal_port_connect_tunnel( + dev->instance, + preview_port, + &dev->component[MMAL_COMPONENT_PREVIEW]->input[0]); + if (!ret) + ret = vchiq_mmal_port_enable(dev->instance, + preview_port, + NULL); + } + } + + if (ret) { + v4l2_dbg(1, bcm2835_v4l2_debug, &dev->v4l2_dev, + "%s failed to set format %dx%d %08X\n", __func__, + f->fmt.pix.width, f->fmt.pix.height, + f->fmt.pix.pixelformat); + /* ensure capture is not going to be tried */ + dev->capture.port = NULL; + } else { + if (encode_component) { + v4l2_dbg(1, bcm2835_v4l2_debug, &dev->v4l2_dev, + "vid_cap - set up encode comp\n"); + + /* configure buffering */ + camera_port->current_buffer.size = + camera_port->recommended_buffer.size; + camera_port->current_buffer.num = + camera_port->recommended_buffer.num; + + ret = + vchiq_mmal_port_connect_tunnel( + dev->instance, + camera_port, + &encode_component->input[0]); + if (ret) { + v4l2_dbg(1, bcm2835_v4l2_debug, + &dev->v4l2_dev, + "%s failed to create connection\n", + __func__); + /* ensure capture is not going to be tried */ + dev->capture.port = NULL; + } else { + port->es.video.width = f->fmt.pix.width; + port->es.video.height = f->fmt.pix.height; + port->es.video.crop.x = 0; + port->es.video.crop.y = 0; + port->es.video.crop.width = f->fmt.pix.width; + port->es.video.crop.height = f->fmt.pix.height; + port->es.video.frame_rate.num = + dev->capture.timeperframe.denominator; + port->es.video.frame_rate.den = + dev->capture.timeperframe.numerator; + + port->format.encoding = mfmt->mmal; + port->format.encoding_variant = 0; + /* Set any encoding specific parameters */ + switch (mfmt->mmal_component) { + case MMAL_COMPONENT_VIDEO_ENCODE: + port->format.bitrate = + dev->capture.encode_bitrate; + break; + case MMAL_COMPONENT_IMAGE_ENCODE: + /* Could set EXIF parameters here */ + break; + default: + break; + } + ret = vchiq_mmal_port_set_format(dev->instance, + port); + if (ret) + v4l2_dbg(1, bcm2835_v4l2_debug, + &dev->v4l2_dev, + "%s failed to set format %dx%d fmt %08X\n", + __func__, + f->fmt.pix.width, + f->fmt.pix.height, + f->fmt.pix.pixelformat + ); + } + + if (!ret) { + ret = vchiq_mmal_component_enable( + dev->instance, + encode_component); + if (ret) { + v4l2_dbg(1, bcm2835_v4l2_debug, + &dev->v4l2_dev, + "%s Failed to enable encode components\n", + __func__); + } + } + if (!ret) { + /* configure buffering */ + port->current_buffer.num = 1; + port->current_buffer.size = + f->fmt.pix.sizeimage; + if (port->format.encoding == + MMAL_ENCODING_JPEG) { + v4l2_dbg(1, bcm2835_v4l2_debug, + &dev->v4l2_dev, + "JPG - buf size now %d was %d\n", + f->fmt.pix.sizeimage, + port->current_buffer.size); + port->current_buffer.size = + (f->fmt.pix.sizeimage < + (100 << 10)) + ? (100 << 10) : f->fmt.pix. + sizeimage; + } + v4l2_dbg(1, bcm2835_v4l2_debug, + &dev->v4l2_dev, + "vid_cap - cur_buf.size set to %d\n", + f->fmt.pix.sizeimage); + port->current_buffer.alignment = 0; + } + } else { + /* configure buffering */ + camera_port->current_buffer.num = 1; + camera_port->current_buffer.size = f->fmt.pix.sizeimage; + camera_port->current_buffer.alignment = 0; + } + + if (!ret) { + dev->capture.fmt = mfmt; + dev->capture.stride = f->fmt.pix.bytesperline; + dev->capture.width = camera_port->es.video.crop.width; + dev->capture.height = camera_port->es.video.crop.height; + dev->capture.buffersize = port->current_buffer.size; + + /* select port for capture */ + dev->capture.port = port; + dev->capture.camera_port = camera_port; + dev->capture.encode_component = encode_component; + v4l2_dbg(1, bcm2835_v4l2_debug, + &dev->v4l2_dev, + "Set dev->capture.fmt %08X, %dx%d, stride %d, size %d", + port->format.encoding, + dev->capture.width, dev->capture.height, + dev->capture.stride, dev->capture.buffersize); + } + } + + /* todo: Need to convert the vchiq/mmal error into a v4l2 error. */ + return ret; +} + +static int vidioc_s_fmt_vid_cap(struct file *file, void *priv, + struct v4l2_format *f) +{ + int ret; + struct bm2835_mmal_dev *dev = video_drvdata(file); + struct mmal_fmt *mfmt; + + /* try the format to set valid parameters */ + ret = vidioc_try_fmt_vid_cap(file, priv, f); + if (ret) { + v4l2_err(&dev->v4l2_dev, + "vid_cap - vidioc_try_fmt_vid_cap failed\n"); + return ret; + } + + /* if a capture is running refuse to set format */ + if (vb2_is_busy(&dev->capture.vb_vidq)) { + v4l2_info(&dev->v4l2_dev, "%s device busy\n", __func__); + return -EBUSY; + } + + /* If the format is unsupported v4l2 says we should switch to + * a supported one and not return an error. */ + mfmt = get_format(f); + if (!mfmt) { + v4l2_dbg(1, bcm2835_v4l2_debug, &dev->v4l2_dev, + "Fourcc format (0x%08x) unknown.\n", + f->fmt.pix.pixelformat); + f->fmt.pix.pixelformat = formats[0].fourcc; + mfmt = get_format(f); + } + + ret = mmal_setup_components(dev, f); + if (ret != 0) { + v4l2_err(&dev->v4l2_dev, + "%s: failed to setup mmal components: %d\n", + __func__, ret); + ret = -EINVAL; + } + + return ret; +} + +int vidioc_enum_framesizes(struct file *file, void *fh, + struct v4l2_frmsizeenum *fsize) +{ + static const struct v4l2_frmsize_stepwise sizes = { + MIN_WIDTH, MAX_WIDTH, 2, + MIN_HEIGHT, MAX_HEIGHT, 2 + }; + int i; + + if (fsize->index) + return -EINVAL; + for (i = 0; i < ARRAY_SIZE(formats); i++) + if (formats[i].fourcc == fsize->pixel_format) + break; + if (i == ARRAY_SIZE(formats)) + return -EINVAL; + fsize->type = V4L2_FRMSIZE_TYPE_STEPWISE; + fsize->stepwise = sizes; + return 0; +} + +/* timeperframe is arbitrary and continous */ +static int vidioc_enum_frameintervals(struct file *file, void *priv, + struct v4l2_frmivalenum *fival) +{ + int i; + + if (fival->index) + return -EINVAL; + + for (i = 0; i < ARRAY_SIZE(formats); i++) + if (formats[i].fourcc == fival->pixel_format) + break; + if (i == ARRAY_SIZE(formats)) + return -EINVAL; + + /* regarding width & height - we support any within range */ + if (fival->width < MIN_WIDTH || fival->width > MAX_WIDTH || + fival->height < MIN_HEIGHT || fival->height > MAX_HEIGHT) + return -EINVAL; + + fival->type = V4L2_FRMIVAL_TYPE_CONTINUOUS; + + /* fill in stepwise (step=1.0 is requred by V4L2 spec) */ + fival->stepwise.min = tpf_min; + fival->stepwise.max = tpf_max; + fival->stepwise.step = (struct v4l2_fract) {1, 1}; + + return 0; +} + +static int vidioc_g_parm(struct file *file, void *priv, + struct v4l2_streamparm *parm) +{ + struct bm2835_mmal_dev *dev = video_drvdata(file); + + if (parm->type != V4L2_BUF_TYPE_VIDEO_CAPTURE) + return -EINVAL; + + parm->parm.capture.capability = V4L2_CAP_TIMEPERFRAME; + parm->parm.capture.timeperframe = dev->capture.timeperframe; + parm->parm.capture.readbuffers = 1; + return 0; +} + +#define FRACT_CMP(a, OP, b) \ + ((u64)(a).numerator * (b).denominator OP \ + (u64)(b).numerator * (a).denominator) + +static int vidioc_s_parm(struct file *file, void *priv, + struct v4l2_streamparm *parm) +{ + struct bm2835_mmal_dev *dev = video_drvdata(file); + struct v4l2_fract tpf; + struct mmal_parameter_rational fps_param; + + if (parm->type != V4L2_BUF_TYPE_VIDEO_CAPTURE) + return -EINVAL; + + tpf = parm->parm.capture.timeperframe; + + /* tpf: {*, 0} resets timing; clip to [min, max]*/ + tpf = tpf.denominator ? tpf : tpf_default; + tpf = FRACT_CMP(tpf, <, tpf_min) ? tpf_min : tpf; + tpf = FRACT_CMP(tpf, >, tpf_max) ? tpf_max : tpf; + + dev->capture.timeperframe = tpf; + parm->parm.capture.timeperframe = tpf; + parm->parm.capture.readbuffers = 1; + + fps_param.num = 0; /* Select variable fps, and then use + * FPS_RANGE to select the actual limits. + */ + fps_param.den = 1; + set_framerate_params(dev); + + return 0; +} + +static const struct v4l2_ioctl_ops camera0_ioctl_ops = { + /* overlay */ + .vidioc_enum_fmt_vid_overlay = vidioc_enum_fmt_vid_overlay, + .vidioc_g_fmt_vid_overlay = vidioc_g_fmt_vid_overlay, + .vidioc_try_fmt_vid_overlay = vidioc_try_fmt_vid_overlay, + .vidioc_s_fmt_vid_overlay = vidioc_s_fmt_vid_overlay, + .vidioc_overlay = vidioc_overlay, + .vidioc_g_fbuf = vidioc_g_fbuf, + + /* inputs */ + .vidioc_enum_input = vidioc_enum_input, + .vidioc_g_input = vidioc_g_input, + .vidioc_s_input = vidioc_s_input, + + /* capture */ + .vidioc_querycap = vidioc_querycap, + .vidioc_enum_fmt_vid_cap = vidioc_enum_fmt_vid_cap, + .vidioc_g_fmt_vid_cap = vidioc_g_fmt_vid_cap, + .vidioc_try_fmt_vid_cap = vidioc_try_fmt_vid_cap, + .vidioc_s_fmt_vid_cap = vidioc_s_fmt_vid_cap, + + /* buffer management */ + .vidioc_reqbufs = vb2_ioctl_reqbufs, + .vidioc_create_bufs = vb2_ioctl_create_bufs, + .vidioc_prepare_buf = vb2_ioctl_prepare_buf, + .vidioc_querybuf = vb2_ioctl_querybuf, + .vidioc_qbuf = vb2_ioctl_qbuf, + .vidioc_dqbuf = vb2_ioctl_dqbuf, + .vidioc_enum_framesizes = vidioc_enum_framesizes, + .vidioc_enum_frameintervals = vidioc_enum_frameintervals, + .vidioc_g_parm = vidioc_g_parm, + .vidioc_s_parm = vidioc_s_parm, + .vidioc_streamon = vb2_ioctl_streamon, + .vidioc_streamoff = vb2_ioctl_streamoff, + + .vidioc_log_status = v4l2_ctrl_log_status, + .vidioc_subscribe_event = v4l2_ctrl_subscribe_event, + .vidioc_unsubscribe_event = v4l2_event_unsubscribe, +}; + +static const struct v4l2_ioctl_ops camera0_ioctl_ops_gstreamer = { + /* overlay */ + .vidioc_enum_fmt_vid_overlay = vidioc_enum_fmt_vid_overlay, + .vidioc_g_fmt_vid_overlay = vidioc_g_fmt_vid_overlay, + .vidioc_try_fmt_vid_overlay = vidioc_try_fmt_vid_overlay, + .vidioc_s_fmt_vid_overlay = vidioc_s_fmt_vid_overlay, + .vidioc_overlay = vidioc_overlay, + .vidioc_g_fbuf = vidioc_g_fbuf, + + /* inputs */ + .vidioc_enum_input = vidioc_enum_input, + .vidioc_g_input = vidioc_g_input, + .vidioc_s_input = vidioc_s_input, + + /* capture */ + .vidioc_querycap = vidioc_querycap, + .vidioc_enum_fmt_vid_cap = vidioc_enum_fmt_vid_cap, + .vidioc_g_fmt_vid_cap = vidioc_g_fmt_vid_cap, + .vidioc_try_fmt_vid_cap = vidioc_try_fmt_vid_cap, + .vidioc_s_fmt_vid_cap = vidioc_s_fmt_vid_cap, + + /* buffer management */ + .vidioc_reqbufs = vb2_ioctl_reqbufs, + .vidioc_create_bufs = vb2_ioctl_create_bufs, + .vidioc_prepare_buf = vb2_ioctl_prepare_buf, + .vidioc_querybuf = vb2_ioctl_querybuf, + .vidioc_qbuf = vb2_ioctl_qbuf, + .vidioc_dqbuf = vb2_ioctl_dqbuf, + /* Remove this function ptr to fix gstreamer bug + .vidioc_enum_framesizes = vidioc_enum_framesizes, */ + .vidioc_enum_frameintervals = vidioc_enum_frameintervals, + .vidioc_g_parm = vidioc_g_parm, + .vidioc_s_parm = vidioc_s_parm, + .vidioc_streamon = vb2_ioctl_streamon, + .vidioc_streamoff = vb2_ioctl_streamoff, + + .vidioc_log_status = v4l2_ctrl_log_status, + .vidioc_subscribe_event = v4l2_ctrl_subscribe_event, + .vidioc_unsubscribe_event = v4l2_event_unsubscribe, +}; + +/* ------------------------------------------------------------------ + Driver init/finalise + ------------------------------------------------------------------*/ + +static const struct v4l2_file_operations camera0_fops = { + .owner = THIS_MODULE, + .open = v4l2_fh_open, + .release = vb2_fop_release, + .read = vb2_fop_read, + .poll = vb2_fop_poll, + .unlocked_ioctl = video_ioctl2, /* V4L2 ioctl handler */ + .mmap = vb2_fop_mmap, +}; + +static struct video_device vdev_template = { + .name = "camera0", + .fops = &camera0_fops, + .ioctl_ops = &camera0_ioctl_ops, + .release = video_device_release_empty, +}; + +static int set_camera_parameters(struct vchiq_mmal_instance *instance, + struct vchiq_mmal_component *camera) +{ + int ret; + struct mmal_parameter_camera_config cam_config = { + .max_stills_w = MAX_WIDTH, + .max_stills_h = MAX_HEIGHT, + .stills_yuv422 = 1, + .one_shot_stills = 1, + .max_preview_video_w = (max_video_width > 1920) ? + max_video_width : 1920, + .max_preview_video_h = (max_video_height > 1088) ? + max_video_height : 1088, + .num_preview_video_frames = 3, + .stills_capture_circular_buffer_height = 0, + .fast_preview_resume = 0, + .use_stc_timestamp = MMAL_PARAM_TIMESTAMP_MODE_RAW_STC + }; + + ret = vchiq_mmal_port_parameter_set(instance, &camera->control, + MMAL_PARAMETER_CAMERA_CONFIG, + &cam_config, sizeof(cam_config)); + return ret; +} + +/* MMAL instance and component init */ +static int __init mmal_init(struct bm2835_mmal_dev *dev) +{ + int ret; + struct mmal_es_format *format; + u32 bool_true = 1; + + ret = vchiq_mmal_init(&dev->instance); + if (ret < 0) + return ret; + + /* get the camera component ready */ + ret = vchiq_mmal_component_init(dev->instance, "ril.camera", + &dev->component[MMAL_COMPONENT_CAMERA]); + if (ret < 0) + goto unreg_mmal; + + if (dev->component[MMAL_COMPONENT_CAMERA]->outputs < + MMAL_CAMERA_PORT_COUNT) { + ret = -EINVAL; + goto unreg_camera; + } + + ret = set_camera_parameters(dev->instance, + dev->component[MMAL_COMPONENT_CAMERA]); + if (ret < 0) + goto unreg_camera; + + format = + &dev->component[MMAL_COMPONENT_CAMERA]-> + output[MMAL_CAMERA_PORT_PREVIEW].format; + + format->encoding = MMAL_ENCODING_OPAQUE; + format->encoding_variant = MMAL_ENCODING_I420; + + format->es->video.width = 1024; + format->es->video.height = 768; + format->es->video.crop.x = 0; + format->es->video.crop.y = 0; + format->es->video.crop.width = 1024; + format->es->video.crop.height = 768; + format->es->video.frame_rate.num = 0; /* Rely on fps_range */ + format->es->video.frame_rate.den = 1; + + format = + &dev->component[MMAL_COMPONENT_CAMERA]-> + output[MMAL_CAMERA_PORT_VIDEO].format; + + format->encoding = MMAL_ENCODING_OPAQUE; + format->encoding_variant = MMAL_ENCODING_I420; + + format->es->video.width = 1024; + format->es->video.height = 768; + format->es->video.crop.x = 0; + format->es->video.crop.y = 0; + format->es->video.crop.width = 1024; + format->es->video.crop.height = 768; + format->es->video.frame_rate.num = 0; /* Rely on fps_range */ + format->es->video.frame_rate.den = 1; + + vchiq_mmal_port_parameter_set(dev->instance, + &dev->component[MMAL_COMPONENT_CAMERA]-> + output[MMAL_CAMERA_PORT_VIDEO], + MMAL_PARAMETER_NO_IMAGE_PADDING, + &bool_true, sizeof(bool_true)); + + format = + &dev->component[MMAL_COMPONENT_CAMERA]-> + output[MMAL_CAMERA_PORT_CAPTURE].format; + + format->encoding = MMAL_ENCODING_OPAQUE; + + format->es->video.width = 2592; + format->es->video.height = 1944; + format->es->video.crop.x = 0; + format->es->video.crop.y = 0; + format->es->video.crop.width = 2592; + format->es->video.crop.height = 1944; + format->es->video.frame_rate.num = 0; /* Rely on fps_range */ + format->es->video.frame_rate.den = 1; + + dev->capture.width = format->es->video.width; + dev->capture.height = format->es->video.height; + dev->capture.fmt = &formats[0]; + dev->capture.encode_component = NULL; + dev->capture.timeperframe = tpf_default; + dev->capture.enc_profile = V4L2_MPEG_VIDEO_H264_PROFILE_HIGH; + dev->capture.enc_level = V4L2_MPEG_VIDEO_H264_LEVEL_4_0; + + vchiq_mmal_port_parameter_set(dev->instance, + &dev->component[MMAL_COMPONENT_CAMERA]-> + output[MMAL_CAMERA_PORT_CAPTURE], + MMAL_PARAMETER_NO_IMAGE_PADDING, + &bool_true, sizeof(bool_true)); + + /* get the preview component ready */ + ret = vchiq_mmal_component_init( + dev->instance, "ril.video_render", + &dev->component[MMAL_COMPONENT_PREVIEW]); + if (ret < 0) + goto unreg_camera; + + if (dev->component[MMAL_COMPONENT_PREVIEW]->inputs < 1) { + ret = -EINVAL; + pr_debug("too few input ports %d needed %d\n", + dev->component[MMAL_COMPONENT_PREVIEW]->inputs, 1); + goto unreg_preview; + } + + /* get the image encoder component ready */ + ret = vchiq_mmal_component_init( + dev->instance, "ril.image_encode", + &dev->component[MMAL_COMPONENT_IMAGE_ENCODE]); + if (ret < 0) + goto unreg_preview; + + if (dev->component[MMAL_COMPONENT_IMAGE_ENCODE]->inputs < 1) { + ret = -EINVAL; + v4l2_err(&dev->v4l2_dev, "too few input ports %d needed %d\n", + dev->component[MMAL_COMPONENT_IMAGE_ENCODE]->inputs, + 1); + goto unreg_image_encoder; + } + + /* get the video encoder component ready */ + ret = vchiq_mmal_component_init(dev->instance, "ril.video_encode", + &dev-> + component[MMAL_COMPONENT_VIDEO_ENCODE]); + if (ret < 0) + goto unreg_image_encoder; + + if (dev->component[MMAL_COMPONENT_VIDEO_ENCODE]->inputs < 1) { + ret = -EINVAL; + v4l2_err(&dev->v4l2_dev, "too few input ports %d needed %d\n", + dev->component[MMAL_COMPONENT_VIDEO_ENCODE]->inputs, + 1); + goto unreg_vid_encoder; + } + + { + struct vchiq_mmal_port *encoder_port = + &dev->component[MMAL_COMPONENT_VIDEO_ENCODE]->output[0]; + encoder_port->format.encoding = MMAL_ENCODING_H264; + ret = vchiq_mmal_port_set_format(dev->instance, + encoder_port); + } + + { + unsigned int enable = 1; + vchiq_mmal_port_parameter_set( + dev->instance, + &dev->component[MMAL_COMPONENT_VIDEO_ENCODE]->control, + MMAL_PARAMETER_VIDEO_IMMUTABLE_INPUT, + &enable, sizeof(enable)); + + vchiq_mmal_port_parameter_set(dev->instance, + &dev->component[MMAL_COMPONENT_VIDEO_ENCODE]->control, + MMAL_PARAMETER_MINIMISE_FRAGMENTATION, + &enable, + sizeof(enable)); + } + ret = bm2835_mmal_set_all_camera_controls(dev); + if (ret < 0) + goto unreg_vid_encoder; + + return 0; + +unreg_vid_encoder: + pr_err("Cleanup: Destroy video encoder\n"); + vchiq_mmal_component_finalise( + dev->instance, + dev->component[MMAL_COMPONENT_VIDEO_ENCODE]); + +unreg_image_encoder: + pr_err("Cleanup: Destroy image encoder\n"); + vchiq_mmal_component_finalise( + dev->instance, + dev->component[MMAL_COMPONENT_IMAGE_ENCODE]); + +unreg_preview: + pr_err("Cleanup: Destroy video render\n"); + vchiq_mmal_component_finalise(dev->instance, + dev->component[MMAL_COMPONENT_PREVIEW]); + +unreg_camera: + pr_err("Cleanup: Destroy camera\n"); + vchiq_mmal_component_finalise(dev->instance, + dev->component[MMAL_COMPONENT_CAMERA]); + +unreg_mmal: + vchiq_mmal_finalise(dev->instance); + return ret; +} + +static int __init bm2835_mmal_init_device(struct bm2835_mmal_dev *dev, + struct video_device *vfd) +{ + int ret; + + *vfd = vdev_template; + if (gst_v4l2src_is_broken) { + v4l2_info(&dev->v4l2_dev, + "Work-around for gstreamer issue is active.\n"); + vfd->ioctl_ops = &camera0_ioctl_ops_gstreamer; + } + + vfd->v4l2_dev = &dev->v4l2_dev; + + vfd->lock = &dev->mutex; + + vfd->queue = &dev->capture.vb_vidq; + + /* video device needs to be able to access instance data */ + video_set_drvdata(vfd, dev); + + ret = video_register_device(vfd, VFL_TYPE_GRABBER, -1); + if (ret < 0) + return ret; + + v4l2_info(vfd->v4l2_dev, + "V4L2 device registered as %s - stills mode > %dx%d\n", + video_device_node_name(vfd), max_video_width, max_video_height); + + return 0; +} + +static struct v4l2_format default_v4l2_format = { + .fmt.pix.pixelformat = V4L2_PIX_FMT_JPEG, + .fmt.pix.width = 1024, + .fmt.pix.bytesperline = 1024, + .fmt.pix.height = 768, + .fmt.pix.sizeimage = 1024*768, +}; + +static int __init bm2835_mmal_init(void) +{ + int ret; + struct bm2835_mmal_dev *dev; + struct vb2_queue *q; + + dev = kzalloc(sizeof(*gdev), GFP_KERNEL); + if (!dev) + return -ENOMEM; + + /* setup device defaults */ + dev->overlay.w.left = 150; + dev->overlay.w.top = 50; + dev->overlay.w.width = 1024; + dev->overlay.w.height = 768; + dev->overlay.clipcount = 0; + dev->overlay.field = V4L2_FIELD_NONE; + + dev->capture.fmt = &formats[3]; /* JPEG */ + + /* v4l device registration */ + snprintf(dev->v4l2_dev.name, sizeof(dev->v4l2_dev.name), + "%s", BM2835_MMAL_MODULE_NAME); + ret = v4l2_device_register(NULL, &dev->v4l2_dev); + if (ret) + goto free_dev; + + /* setup v4l controls */ + ret = bm2835_mmal_init_controls(dev, &dev->ctrl_handler); + if (ret < 0) + goto unreg_dev; + dev->v4l2_dev.ctrl_handler = &dev->ctrl_handler; + + /* mmal init */ + ret = mmal_init(dev); + if (ret < 0) + goto unreg_dev; + + /* initialize queue */ + q = &dev->capture.vb_vidq; + memset(q, 0, sizeof(*q)); + q->type = V4L2_BUF_TYPE_VIDEO_CAPTURE; + q->io_modes = VB2_MMAP | VB2_USERPTR | VB2_READ; + q->drv_priv = dev; + q->buf_struct_size = sizeof(struct mmal_buffer); + q->ops = &bm2835_mmal_video_qops; + q->mem_ops = &vb2_vmalloc_memops; + q->timestamp_flags = V4L2_BUF_FLAG_TIMESTAMP_MONOTONIC; + ret = vb2_queue_init(q); + if (ret < 0) + goto unreg_dev; + + /* v4l2 core mutex used to protect all fops and v4l2 ioctls. */ + mutex_init(&dev->mutex); + + /* initialise video devices */ + ret = bm2835_mmal_init_device(dev, &dev->vdev); + if (ret < 0) + goto unreg_dev; + + /* Really want to call vidioc_s_fmt_vid_cap with the default + * format, but currently the APIs don't join up. + */ + ret = mmal_setup_components(dev, &default_v4l2_format); + if (ret < 0) { + v4l2_err(&dev->v4l2_dev, + "%s: could not setup components\n", __func__); + goto unreg_dev; + } + + v4l2_info(&dev->v4l2_dev, + "Broadcom 2835 MMAL video capture ver %s loaded.\n", + BM2835_MMAL_VERSION); + + gdev = dev; + return 0; + +unreg_dev: + v4l2_ctrl_handler_free(&dev->ctrl_handler); + v4l2_device_unregister(&dev->v4l2_dev); + +free_dev: + kfree(dev); + + v4l2_err(&dev->v4l2_dev, + "%s: error %d while loading driver\n", + BM2835_MMAL_MODULE_NAME, ret); + + return ret; +} + +static void __exit bm2835_mmal_exit(void) +{ + if (!gdev) + return; + + v4l2_info(&gdev->v4l2_dev, "unregistering %s\n", + video_device_node_name(&gdev->vdev)); + + video_unregister_device(&gdev->vdev); + + if (gdev->capture.encode_component) { + v4l2_dbg(1, bcm2835_v4l2_debug, &gdev->v4l2_dev, + "mmal_exit - disconnect tunnel\n"); + vchiq_mmal_port_connect_tunnel(gdev->instance, + gdev->capture.camera_port, NULL); + vchiq_mmal_component_disable(gdev->instance, + gdev->capture.encode_component); + } + vchiq_mmal_component_disable(gdev->instance, + gdev->component[MMAL_COMPONENT_CAMERA]); + + vchiq_mmal_component_finalise(gdev->instance, + gdev-> + component[MMAL_COMPONENT_VIDEO_ENCODE]); + + vchiq_mmal_component_finalise(gdev->instance, + gdev-> + component[MMAL_COMPONENT_IMAGE_ENCODE]); + + vchiq_mmal_component_finalise(gdev->instance, + gdev->component[MMAL_COMPONENT_PREVIEW]); + + vchiq_mmal_component_finalise(gdev->instance, + gdev->component[MMAL_COMPONENT_CAMERA]); + + vchiq_mmal_finalise(gdev->instance); + + v4l2_ctrl_handler_free(&gdev->ctrl_handler); + + v4l2_device_unregister(&gdev->v4l2_dev); + + kfree(gdev); +} + +module_init(bm2835_mmal_init); +module_exit(bm2835_mmal_exit); --- linux-raspi2-4.2.0.orig/drivers/media/platform/bcm2835/bcm2835-camera.h +++ linux-raspi2-4.2.0/drivers/media/platform/bcm2835/bcm2835-camera.h @@ -0,0 +1,126 @@ +/* + * Broadcom BM2835 V4L2 driver + * + * Copyright © 2013 Raspberry Pi (Trading) Ltd. + * + * This file is subject to the terms and conditions of the GNU General Public + * License. See the file COPYING in the main directory of this archive + * for more details. + * + * Authors: Vincent Sanders + * Dave Stevenson + * Simon Mellor + * Luke Diamand + * + * core driver device + */ + +#define V4L2_CTRL_COUNT 28 /* number of v4l controls */ + +enum { + MMAL_COMPONENT_CAMERA = 0, + MMAL_COMPONENT_PREVIEW, + MMAL_COMPONENT_IMAGE_ENCODE, + MMAL_COMPONENT_VIDEO_ENCODE, + MMAL_COMPONENT_COUNT +}; + +enum { + MMAL_CAMERA_PORT_PREVIEW = 0, + MMAL_CAMERA_PORT_VIDEO, + MMAL_CAMERA_PORT_CAPTURE, + MMAL_CAMERA_PORT_COUNT +}; + +#define PREVIEW_LAYER 2 + +extern int bcm2835_v4l2_debug; + +struct bm2835_mmal_dev { + /* v4l2 devices */ + struct v4l2_device v4l2_dev; + struct video_device vdev; + struct mutex mutex; + + /* controls */ + struct v4l2_ctrl_handler ctrl_handler; + struct v4l2_ctrl *ctrls[V4L2_CTRL_COUNT]; + enum v4l2_scene_mode scene_mode; + struct mmal_colourfx colourfx; + int hflip; + int vflip; + int red_gain; + int blue_gain; + enum mmal_parameter_exposuremode exposure_mode_user; + enum v4l2_exposure_auto_type exposure_mode_v4l2_user; + /* active exposure mode may differ if selected via a scene mode */ + enum mmal_parameter_exposuremode exposure_mode_active; + enum mmal_parameter_exposuremeteringmode metering_mode; + unsigned int manual_shutter_speed; + bool exp_auto_priority; + + /* allocated mmal instance and components */ + struct vchiq_mmal_instance *instance; + struct vchiq_mmal_component *component[MMAL_COMPONENT_COUNT]; + int camera_use_count; + + struct v4l2_window overlay; + + struct { + unsigned int width; /* width */ + unsigned int height; /* height */ + unsigned int stride; /* stride */ + unsigned int buffersize; /* buffer size with padding */ + struct mmal_fmt *fmt; + struct v4l2_fract timeperframe; + + /* H264 encode bitrate */ + int encode_bitrate; + /* H264 bitrate mode. CBR/VBR */ + int encode_bitrate_mode; + /* H264 profile */ + enum v4l2_mpeg_video_h264_profile enc_profile; + /* H264 level */ + enum v4l2_mpeg_video_h264_level enc_level; + /* JPEG Q-factor */ + int q_factor; + + struct vb2_queue vb_vidq; + + /* VC start timestamp for streaming */ + s64 vc_start_timestamp; + /* Kernel start timestamp for streaming */ + struct timeval kernel_start_ts; + + struct vchiq_mmal_port *port; /* port being used for capture */ + /* camera port being used for capture */ + struct vchiq_mmal_port *camera_port; + /* component being used for encode */ + struct vchiq_mmal_component *encode_component; + /* number of frames remaining which driver should capture */ + unsigned int frame_count; + /* last frame completion */ + struct completion frame_cmplt; + + } capture; + +}; + +int bm2835_mmal_init_controls( + struct bm2835_mmal_dev *dev, + struct v4l2_ctrl_handler *hdl); + +int bm2835_mmal_set_all_camera_controls(struct bm2835_mmal_dev *dev); +int set_framerate_params(struct bm2835_mmal_dev *dev); + +/* Debug helpers */ + +#define v4l2_dump_pix_format(level, debug, dev, pix_fmt, desc) \ +{ \ + v4l2_dbg(level, debug, dev, \ +"%s: w %u h %u field %u pfmt 0x%x bpl %u sz_img %u colorspace 0x%x priv %u\n", \ + desc == NULL ? "" : desc, \ + (pix_fmt)->width, (pix_fmt)->height, (pix_fmt)->field, \ + (pix_fmt)->pixelformat, (pix_fmt)->bytesperline, \ + (pix_fmt)->sizeimage, (pix_fmt)->colorspace, (pix_fmt)->priv); \ +} --- linux-raspi2-4.2.0.orig/drivers/media/platform/bcm2835/controls.c +++ linux-raspi2-4.2.0/drivers/media/platform/bcm2835/controls.c @@ -0,0 +1,1324 @@ +/* + * Broadcom BM2835 V4L2 driver + * + * Copyright © 2013 Raspberry Pi (Trading) Ltd. + * + * This file is subject to the terms and conditions of the GNU General Public + * License. See the file COPYING in the main directory of this archive + * for more details. + * + * Authors: Vincent Sanders + * Dave Stevenson + * Simon Mellor + * Luke Diamand + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "mmal-common.h" +#include "mmal-vchiq.h" +#include "mmal-parameters.h" +#include "bcm2835-camera.h" + +/* The supported V4L2_CID_AUTO_EXPOSURE_BIAS values are from -4.0 to +4.0. + * MMAL values are in 1/6th increments so the MMAL range is -24 to +24. + * V4L2 docs say value "is expressed in terms of EV, drivers should interpret + * the values as 0.001 EV units, where the value 1000 stands for +1 EV." + * V4L2 is limited to a max of 32 values in a menu, so count in 1/3rds from + * -4 to +4 + */ +static const s64 ev_bias_qmenu[] = { + -4000, -3667, -3333, + -3000, -2667, -2333, + -2000, -1667, -1333, + -1000, -667, -333, + 0, 333, 667, + 1000, 1333, 1667, + 2000, 2333, 2667, + 3000, 3333, 3667, + 4000 +}; + +/* Supported ISO values + * ISOO = auto ISO + */ +static const s64 iso_qmenu[] = { + 0, 100, 200, 400, 800, +}; + +static const s64 mains_freq_qmenu[] = { + V4L2_CID_POWER_LINE_FREQUENCY_DISABLED, + V4L2_CID_POWER_LINE_FREQUENCY_50HZ, + V4L2_CID_POWER_LINE_FREQUENCY_60HZ, + V4L2_CID_POWER_LINE_FREQUENCY_AUTO +}; + +/* Supported video encode modes */ +static const s64 bitrate_mode_qmenu[] = { + (s64)V4L2_MPEG_VIDEO_BITRATE_MODE_VBR, + (s64)V4L2_MPEG_VIDEO_BITRATE_MODE_CBR, +}; + +enum bm2835_mmal_ctrl_type { + MMAL_CONTROL_TYPE_STD, + MMAL_CONTROL_TYPE_STD_MENU, + MMAL_CONTROL_TYPE_INT_MENU, + MMAL_CONTROL_TYPE_CLUSTER, /* special cluster entry */ +}; + +struct bm2835_mmal_v4l2_ctrl; + +typedef int(bm2835_mmal_v4l2_ctrl_cb)( + struct bm2835_mmal_dev *dev, + struct v4l2_ctrl *ctrl, + const struct bm2835_mmal_v4l2_ctrl *mmal_ctrl); + +struct bm2835_mmal_v4l2_ctrl { + u32 id; /* v4l2 control identifier */ + enum bm2835_mmal_ctrl_type type; + /* control minimum value or + * mask for MMAL_CONTROL_TYPE_STD_MENU */ + s32 min; + s32 max; /* maximum value of control */ + s32 def; /* default value of control */ + s32 step; /* step size of the control */ + const s64 *imenu; /* integer menu array */ + u32 mmal_id; /* mmal parameter id */ + bm2835_mmal_v4l2_ctrl_cb *setter; + bool ignore_errors; +}; + +struct v4l2_to_mmal_effects_setting { + u32 v4l2_effect; + u32 mmal_effect; + s32 col_fx_enable; + s32 col_fx_fixed_cbcr; + u32 u; + u32 v; + u32 num_effect_params; + u32 effect_params[MMAL_MAX_IMAGEFX_PARAMETERS]; +}; + +static const struct v4l2_to_mmal_effects_setting + v4l2_to_mmal_effects_values[] = { + { V4L2_COLORFX_NONE, MMAL_PARAM_IMAGEFX_NONE, + 0, 0, 0, 0, 0, {0, 0, 0, 0, 0} }, + { V4L2_COLORFX_BW, MMAL_PARAM_IMAGEFX_NONE, + 1, 0, 128, 128, 0, {0, 0, 0, 0, 0} }, + { V4L2_COLORFX_SEPIA, MMAL_PARAM_IMAGEFX_NONE, + 1, 0, 87, 151, 0, {0, 0, 0, 0, 0} }, + { V4L2_COLORFX_NEGATIVE, MMAL_PARAM_IMAGEFX_NEGATIVE, + 0, 0, 0, 0, 0, {0, 0, 0, 0, 0} }, + { V4L2_COLORFX_EMBOSS, MMAL_PARAM_IMAGEFX_EMBOSS, + 0, 0, 0, 0, 0, {0, 0, 0, 0, 0} }, + { V4L2_COLORFX_SKETCH, MMAL_PARAM_IMAGEFX_SKETCH, + 0, 0, 0, 0, 0, {0, 0, 0, 0, 0} }, + { V4L2_COLORFX_SKY_BLUE, MMAL_PARAM_IMAGEFX_PASTEL, + 0, 0, 0, 0, 0, {0, 0, 0, 0, 0} }, + { V4L2_COLORFX_GRASS_GREEN, MMAL_PARAM_IMAGEFX_WATERCOLOUR, + 0, 0, 0, 0, 0, {0, 0, 0, 0, 0} }, + { V4L2_COLORFX_SKIN_WHITEN, MMAL_PARAM_IMAGEFX_WASHEDOUT, + 0, 0, 0, 0, 0, {0, 0, 0, 0, 0} }, + { V4L2_COLORFX_VIVID, MMAL_PARAM_IMAGEFX_SATURATION, + 0, 0, 0, 0, 0, {0, 0, 0, 0, 0} }, + { V4L2_COLORFX_AQUA, MMAL_PARAM_IMAGEFX_NONE, + 1, 0, 171, 121, 0, {0, 0, 0, 0, 0} }, + { V4L2_COLORFX_ART_FREEZE, MMAL_PARAM_IMAGEFX_HATCH, + 0, 0, 0, 0, 0, {0, 0, 0, 0, 0} }, + { V4L2_COLORFX_SILHOUETTE, MMAL_PARAM_IMAGEFX_FILM, + 0, 0, 0, 0, 0, {0, 0, 0, 0, 0} }, + { V4L2_COLORFX_SOLARIZATION, MMAL_PARAM_IMAGEFX_SOLARIZE, + 0, 0, 0, 0, 5, {1, 128, 160, 160, 48} }, + { V4L2_COLORFX_ANTIQUE, MMAL_PARAM_IMAGEFX_COLOURBALANCE, + 0, 0, 0, 0, 3, {108, 274, 238, 0, 0} }, + { V4L2_COLORFX_SET_CBCR, MMAL_PARAM_IMAGEFX_NONE, + 1, 1, 0, 0, 0, {0, 0, 0, 0, 0} } +}; + +struct v4l2_mmal_scene_config { + enum v4l2_scene_mode v4l2_scene; + enum mmal_parameter_exposuremode exposure_mode; + enum mmal_parameter_exposuremeteringmode metering_mode; +}; + +static const struct v4l2_mmal_scene_config scene_configs[] = { + /* V4L2_SCENE_MODE_NONE automatically added */ + { + V4L2_SCENE_MODE_NIGHT, + MMAL_PARAM_EXPOSUREMODE_NIGHT, + MMAL_PARAM_EXPOSUREMETERINGMODE_AVERAGE + }, + { + V4L2_SCENE_MODE_SPORTS, + MMAL_PARAM_EXPOSUREMODE_SPORTS, + MMAL_PARAM_EXPOSUREMETERINGMODE_AVERAGE + }, +}; + +/* control handlers*/ + +static int ctrl_set_rational(struct bm2835_mmal_dev *dev, + struct v4l2_ctrl *ctrl, + const struct bm2835_mmal_v4l2_ctrl *mmal_ctrl) +{ + struct mmal_parameter_rational rational_value; + struct vchiq_mmal_port *control; + + control = &dev->component[MMAL_COMPONENT_CAMERA]->control; + + rational_value.num = ctrl->val; + rational_value.den = 100; + + return vchiq_mmal_port_parameter_set(dev->instance, control, + mmal_ctrl->mmal_id, + &rational_value, + sizeof(rational_value)); +} + +static int ctrl_set_value(struct bm2835_mmal_dev *dev, + struct v4l2_ctrl *ctrl, + const struct bm2835_mmal_v4l2_ctrl *mmal_ctrl) +{ + u32 u32_value; + struct vchiq_mmal_port *control; + + control = &dev->component[MMAL_COMPONENT_CAMERA]->control; + + u32_value = ctrl->val; + + return vchiq_mmal_port_parameter_set(dev->instance, control, + mmal_ctrl->mmal_id, + &u32_value, sizeof(u32_value)); +} + +static int ctrl_set_value_menu(struct bm2835_mmal_dev *dev, + struct v4l2_ctrl *ctrl, + const struct bm2835_mmal_v4l2_ctrl *mmal_ctrl) +{ + u32 u32_value; + struct vchiq_mmal_port *control; + + if (ctrl->val > mmal_ctrl->max || ctrl->val < mmal_ctrl->min) + return 1; + + control = &dev->component[MMAL_COMPONENT_CAMERA]->control; + + u32_value = mmal_ctrl->imenu[ctrl->val]; + + return vchiq_mmal_port_parameter_set(dev->instance, control, + mmal_ctrl->mmal_id, + &u32_value, sizeof(u32_value)); +} + +static int ctrl_set_value_ev(struct bm2835_mmal_dev *dev, + struct v4l2_ctrl *ctrl, + const struct bm2835_mmal_v4l2_ctrl *mmal_ctrl) +{ + s32 s32_value; + struct vchiq_mmal_port *control; + + control = &dev->component[MMAL_COMPONENT_CAMERA]->control; + + s32_value = (ctrl->val-12)*2; /* Convert from index to 1/6ths */ + + return vchiq_mmal_port_parameter_set(dev->instance, control, + mmal_ctrl->mmal_id, + &s32_value, sizeof(s32_value)); +} + +static int ctrl_set_rotate(struct bm2835_mmal_dev *dev, + struct v4l2_ctrl *ctrl, + const struct bm2835_mmal_v4l2_ctrl *mmal_ctrl) +{ + int ret; + u32 u32_value; + struct vchiq_mmal_component *camera; + + camera = dev->component[MMAL_COMPONENT_CAMERA]; + + u32_value = ((ctrl->val % 360) / 90) * 90; + + ret = vchiq_mmal_port_parameter_set(dev->instance, &camera->output[0], + mmal_ctrl->mmal_id, + &u32_value, sizeof(u32_value)); + if (ret < 0) + return ret; + + ret = vchiq_mmal_port_parameter_set(dev->instance, &camera->output[1], + mmal_ctrl->mmal_id, + &u32_value, sizeof(u32_value)); + if (ret < 0) + return ret; + + ret = vchiq_mmal_port_parameter_set(dev->instance, &camera->output[2], + mmal_ctrl->mmal_id, + &u32_value, sizeof(u32_value)); + + return ret; +} + +static int ctrl_set_flip(struct bm2835_mmal_dev *dev, + struct v4l2_ctrl *ctrl, + const struct bm2835_mmal_v4l2_ctrl *mmal_ctrl) +{ + int ret; + u32 u32_value; + struct vchiq_mmal_component *camera; + + if (ctrl->id == V4L2_CID_HFLIP) + dev->hflip = ctrl->val; + else + dev->vflip = ctrl->val; + + camera = dev->component[MMAL_COMPONENT_CAMERA]; + + if (dev->hflip && dev->vflip) + u32_value = MMAL_PARAM_MIRROR_BOTH; + else if (dev->hflip) + u32_value = MMAL_PARAM_MIRROR_HORIZONTAL; + else if (dev->vflip) + u32_value = MMAL_PARAM_MIRROR_VERTICAL; + else + u32_value = MMAL_PARAM_MIRROR_NONE; + + ret = vchiq_mmal_port_parameter_set(dev->instance, &camera->output[0], + mmal_ctrl->mmal_id, + &u32_value, sizeof(u32_value)); + if (ret < 0) + return ret; + + ret = vchiq_mmal_port_parameter_set(dev->instance, &camera->output[1], + mmal_ctrl->mmal_id, + &u32_value, sizeof(u32_value)); + if (ret < 0) + return ret; + + ret = vchiq_mmal_port_parameter_set(dev->instance, &camera->output[2], + mmal_ctrl->mmal_id, + &u32_value, sizeof(u32_value)); + + return ret; + +} + +static int ctrl_set_exposure(struct bm2835_mmal_dev *dev, + struct v4l2_ctrl *ctrl, + const struct bm2835_mmal_v4l2_ctrl *mmal_ctrl) +{ + enum mmal_parameter_exposuremode exp_mode = dev->exposure_mode_user; + u32 shutter_speed = 0; + struct vchiq_mmal_port *control; + int ret = 0; + + control = &dev->component[MMAL_COMPONENT_CAMERA]->control; + + if (mmal_ctrl->mmal_id == MMAL_PARAMETER_SHUTTER_SPEED) { + /* V4L2 is in 100usec increments. + * MMAL is 1usec. + */ + dev->manual_shutter_speed = ctrl->val * 100; + } else if (mmal_ctrl->mmal_id == MMAL_PARAMETER_EXPOSURE_MODE) { + switch (ctrl->val) { + case V4L2_EXPOSURE_AUTO: + exp_mode = MMAL_PARAM_EXPOSUREMODE_AUTO; + break; + + case V4L2_EXPOSURE_MANUAL: + exp_mode = MMAL_PARAM_EXPOSUREMODE_OFF; + break; + } + dev->exposure_mode_user = exp_mode; + dev->exposure_mode_v4l2_user = ctrl->val; + } else if (mmal_ctrl->id == V4L2_CID_EXPOSURE_AUTO_PRIORITY) { + dev->exp_auto_priority = ctrl->val; + } + + if (dev->scene_mode == V4L2_SCENE_MODE_NONE) { + if (exp_mode == MMAL_PARAM_EXPOSUREMODE_OFF) + shutter_speed = dev->manual_shutter_speed; + + ret = vchiq_mmal_port_parameter_set(dev->instance, + control, + MMAL_PARAMETER_SHUTTER_SPEED, + &shutter_speed, + sizeof(shutter_speed)); + ret += vchiq_mmal_port_parameter_set(dev->instance, + control, + MMAL_PARAMETER_EXPOSURE_MODE, + &exp_mode, + sizeof(u32)); + dev->exposure_mode_active = exp_mode; + } + /* exposure_dynamic_framerate (V4L2_CID_EXPOSURE_AUTO_PRIORITY) should + * always apply irrespective of scene mode. + */ + ret += set_framerate_params(dev); + + return ret; +} + +static int ctrl_set_metering_mode(struct bm2835_mmal_dev *dev, + struct v4l2_ctrl *ctrl, + const struct bm2835_mmal_v4l2_ctrl *mmal_ctrl) +{ + switch (ctrl->val) { + case V4L2_EXPOSURE_METERING_AVERAGE: + dev->metering_mode = MMAL_PARAM_EXPOSUREMETERINGMODE_AVERAGE; + break; + + case V4L2_EXPOSURE_METERING_CENTER_WEIGHTED: + dev->metering_mode = MMAL_PARAM_EXPOSUREMETERINGMODE_BACKLIT; + break; + + case V4L2_EXPOSURE_METERING_SPOT: + dev->metering_mode = MMAL_PARAM_EXPOSUREMETERINGMODE_SPOT; + break; + + /* todo matrix weighting not added to Linux API till 3.9 + case V4L2_EXPOSURE_METERING_MATRIX: + dev->metering_mode = MMAL_PARAM_EXPOSUREMETERINGMODE_MATRIX; + break; + */ + + } + + if (dev->scene_mode == V4L2_SCENE_MODE_NONE) { + struct vchiq_mmal_port *control; + u32 u32_value = dev->metering_mode; + + control = &dev->component[MMAL_COMPONENT_CAMERA]->control; + + return vchiq_mmal_port_parameter_set(dev->instance, control, + mmal_ctrl->mmal_id, + &u32_value, sizeof(u32_value)); + } else + return 0; +} + +static int ctrl_set_flicker_avoidance(struct bm2835_mmal_dev *dev, + struct v4l2_ctrl *ctrl, + const struct bm2835_mmal_v4l2_ctrl *mmal_ctrl) +{ + u32 u32_value; + struct vchiq_mmal_port *control; + + control = &dev->component[MMAL_COMPONENT_CAMERA]->control; + + switch (ctrl->val) { + case V4L2_CID_POWER_LINE_FREQUENCY_DISABLED: + u32_value = MMAL_PARAM_FLICKERAVOID_OFF; + break; + case V4L2_CID_POWER_LINE_FREQUENCY_50HZ: + u32_value = MMAL_PARAM_FLICKERAVOID_50HZ; + break; + case V4L2_CID_POWER_LINE_FREQUENCY_60HZ: + u32_value = MMAL_PARAM_FLICKERAVOID_60HZ; + break; + case V4L2_CID_POWER_LINE_FREQUENCY_AUTO: + u32_value = MMAL_PARAM_FLICKERAVOID_AUTO; + break; + } + + return vchiq_mmal_port_parameter_set(dev->instance, control, + mmal_ctrl->mmal_id, + &u32_value, sizeof(u32_value)); +} + +static int ctrl_set_awb_mode(struct bm2835_mmal_dev *dev, + struct v4l2_ctrl *ctrl, + const struct bm2835_mmal_v4l2_ctrl *mmal_ctrl) +{ + u32 u32_value; + struct vchiq_mmal_port *control; + + control = &dev->component[MMAL_COMPONENT_CAMERA]->control; + + switch (ctrl->val) { + case V4L2_WHITE_BALANCE_MANUAL: + u32_value = MMAL_PARAM_AWBMODE_OFF; + break; + + case V4L2_WHITE_BALANCE_AUTO: + u32_value = MMAL_PARAM_AWBMODE_AUTO; + break; + + case V4L2_WHITE_BALANCE_INCANDESCENT: + u32_value = MMAL_PARAM_AWBMODE_INCANDESCENT; + break; + + case V4L2_WHITE_BALANCE_FLUORESCENT: + u32_value = MMAL_PARAM_AWBMODE_FLUORESCENT; + break; + + case V4L2_WHITE_BALANCE_FLUORESCENT_H: + u32_value = MMAL_PARAM_AWBMODE_TUNGSTEN; + break; + + case V4L2_WHITE_BALANCE_HORIZON: + u32_value = MMAL_PARAM_AWBMODE_HORIZON; + break; + + case V4L2_WHITE_BALANCE_DAYLIGHT: + u32_value = MMAL_PARAM_AWBMODE_SUNLIGHT; + break; + + case V4L2_WHITE_BALANCE_FLASH: + u32_value = MMAL_PARAM_AWBMODE_FLASH; + break; + + case V4L2_WHITE_BALANCE_CLOUDY: + u32_value = MMAL_PARAM_AWBMODE_CLOUDY; + break; + + case V4L2_WHITE_BALANCE_SHADE: + u32_value = MMAL_PARAM_AWBMODE_SHADE; + break; + + } + + return vchiq_mmal_port_parameter_set(dev->instance, control, + mmal_ctrl->mmal_id, + &u32_value, sizeof(u32_value)); +} + +static int ctrl_set_awb_gains(struct bm2835_mmal_dev *dev, + struct v4l2_ctrl *ctrl, + const struct bm2835_mmal_v4l2_ctrl *mmal_ctrl) +{ + struct vchiq_mmal_port *control; + struct mmal_parameter_awbgains gains; + + control = &dev->component[MMAL_COMPONENT_CAMERA]->control; + + if (ctrl->id == V4L2_CID_RED_BALANCE) + dev->red_gain = ctrl->val; + else if (ctrl->id == V4L2_CID_BLUE_BALANCE) + dev->blue_gain = ctrl->val; + + gains.r_gain.num = dev->red_gain; + gains.b_gain.num = dev->blue_gain; + gains.r_gain.den = gains.b_gain.den = 1000; + + return vchiq_mmal_port_parameter_set(dev->instance, control, + mmal_ctrl->mmal_id, + &gains, sizeof(gains)); +} + +static int ctrl_set_image_effect(struct bm2835_mmal_dev *dev, + struct v4l2_ctrl *ctrl, + const struct bm2835_mmal_v4l2_ctrl *mmal_ctrl) +{ + int ret = -EINVAL; + int i, j; + struct vchiq_mmal_port *control; + struct mmal_parameter_imagefx_parameters imagefx; + + for (i = 0; i < ARRAY_SIZE(v4l2_to_mmal_effects_values); i++) { + if (ctrl->val == v4l2_to_mmal_effects_values[i].v4l2_effect) { + + imagefx.effect = + v4l2_to_mmal_effects_values[i].mmal_effect; + imagefx.num_effect_params = + v4l2_to_mmal_effects_values[i].num_effect_params; + + if (imagefx.num_effect_params > MMAL_MAX_IMAGEFX_PARAMETERS) + imagefx.num_effect_params = MMAL_MAX_IMAGEFX_PARAMETERS; + + for (j = 0; j < imagefx.num_effect_params; j++) + imagefx.effect_parameter[j] = + v4l2_to_mmal_effects_values[i].effect_params[j]; + + dev->colourfx.enable = + v4l2_to_mmal_effects_values[i].col_fx_enable; + if (!v4l2_to_mmal_effects_values[i].col_fx_fixed_cbcr) { + dev->colourfx.u = + v4l2_to_mmal_effects_values[i].u; + dev->colourfx.v = + v4l2_to_mmal_effects_values[i].v; + } + + control = &dev->component[MMAL_COMPONENT_CAMERA]->control; + + ret = vchiq_mmal_port_parameter_set( + dev->instance, control, + MMAL_PARAMETER_IMAGE_EFFECT_PARAMETERS, + &imagefx, sizeof(imagefx)); + if (ret) + goto exit; + + ret = vchiq_mmal_port_parameter_set( + dev->instance, control, + MMAL_PARAMETER_COLOUR_EFFECT, + &dev->colourfx, sizeof(dev->colourfx)); + } + } + +exit: + v4l2_dbg(1, bcm2835_v4l2_debug, &dev->v4l2_dev, + "mmal_ctrl:%p ctrl id:0x%x ctrl val:%d imagefx:0x%x color_effect:%s u:%d v:%d ret %d(%d)\n", + mmal_ctrl, ctrl->id, ctrl->val, imagefx.effect, + dev->colourfx.enable ? "true" : "false", + dev->colourfx.u, dev->colourfx.v, + ret, (ret == 0 ? 0 : -EINVAL)); + return (ret == 0 ? 0 : EINVAL); +} + +static int ctrl_set_colfx(struct bm2835_mmal_dev *dev, + struct v4l2_ctrl *ctrl, + const struct bm2835_mmal_v4l2_ctrl *mmal_ctrl) +{ + int ret = -EINVAL; + struct vchiq_mmal_port *control; + + control = &dev->component[MMAL_COMPONENT_CAMERA]->control; + + dev->colourfx.enable = (ctrl->val & 0xff00) >> 8; + dev->colourfx.enable = ctrl->val & 0xff; + + ret = vchiq_mmal_port_parameter_set(dev->instance, control, + MMAL_PARAMETER_COLOUR_EFFECT, + &dev->colourfx, sizeof(dev->colourfx)); + + v4l2_dbg(1, bcm2835_v4l2_debug, &dev->v4l2_dev, + "%s: After: mmal_ctrl:%p ctrl id:0x%x ctrl val:%d ret %d(%d)\n", + __func__, mmal_ctrl, ctrl->id, ctrl->val, ret, + (ret == 0 ? 0 : -EINVAL)); + return (ret == 0 ? 0 : EINVAL); +} + +static int ctrl_set_bitrate(struct bm2835_mmal_dev *dev, + struct v4l2_ctrl *ctrl, + const struct bm2835_mmal_v4l2_ctrl *mmal_ctrl) +{ + int ret; + struct vchiq_mmal_port *encoder_out; + + dev->capture.encode_bitrate = ctrl->val; + + encoder_out = &dev->component[MMAL_COMPONENT_VIDEO_ENCODE]->output[0]; + + ret = vchiq_mmal_port_parameter_set(dev->instance, encoder_out, + mmal_ctrl->mmal_id, + &ctrl->val, sizeof(ctrl->val)); + ret = 0; + return ret; +} + +static int ctrl_set_bitrate_mode(struct bm2835_mmal_dev *dev, + struct v4l2_ctrl *ctrl, + const struct bm2835_mmal_v4l2_ctrl *mmal_ctrl) +{ + u32 bitrate_mode; + struct vchiq_mmal_port *encoder_out; + + encoder_out = &dev->component[MMAL_COMPONENT_VIDEO_ENCODE]->output[0]; + + dev->capture.encode_bitrate_mode = ctrl->val; + switch (ctrl->val) { + default: + case V4L2_MPEG_VIDEO_BITRATE_MODE_VBR: + bitrate_mode = MMAL_VIDEO_RATECONTROL_VARIABLE; + break; + case V4L2_MPEG_VIDEO_BITRATE_MODE_CBR: + bitrate_mode = MMAL_VIDEO_RATECONTROL_CONSTANT; + break; + } + + vchiq_mmal_port_parameter_set(dev->instance, encoder_out, + mmal_ctrl->mmal_id, + &bitrate_mode, + sizeof(bitrate_mode)); + return 0; +} + +static int ctrl_set_image_encode_output(struct bm2835_mmal_dev *dev, + struct v4l2_ctrl *ctrl, + const struct bm2835_mmal_v4l2_ctrl *mmal_ctrl) +{ + u32 u32_value; + struct vchiq_mmal_port *jpeg_out; + + jpeg_out = &dev->component[MMAL_COMPONENT_IMAGE_ENCODE]->output[0]; + + u32_value = ctrl->val; + + return vchiq_mmal_port_parameter_set(dev->instance, jpeg_out, + mmal_ctrl->mmal_id, + &u32_value, sizeof(u32_value)); +} + +static int ctrl_set_video_encode_param_output(struct bm2835_mmal_dev *dev, + struct v4l2_ctrl *ctrl, + const struct bm2835_mmal_v4l2_ctrl *mmal_ctrl) +{ + u32 u32_value; + struct vchiq_mmal_port *vid_enc_ctl; + + vid_enc_ctl = &dev->component[MMAL_COMPONENT_VIDEO_ENCODE]->output[0]; + + u32_value = ctrl->val; + + return vchiq_mmal_port_parameter_set(dev->instance, vid_enc_ctl, + mmal_ctrl->mmal_id, + &u32_value, sizeof(u32_value)); +} + +static int ctrl_set_video_encode_profile_level(struct bm2835_mmal_dev *dev, + struct v4l2_ctrl *ctrl, + const struct bm2835_mmal_v4l2_ctrl *mmal_ctrl) +{ + struct mmal_parameter_video_profile param; + int ret = 0; + + if (ctrl->id == V4L2_CID_MPEG_VIDEO_H264_PROFILE) { + switch (ctrl->val) { + case V4L2_MPEG_VIDEO_H264_PROFILE_BASELINE: + case V4L2_MPEG_VIDEO_H264_PROFILE_CONSTRAINED_BASELINE: + case V4L2_MPEG_VIDEO_H264_PROFILE_MAIN: + case V4L2_MPEG_VIDEO_H264_PROFILE_HIGH: + dev->capture.enc_profile = ctrl->val; + break; + default: + ret = -EINVAL; + break; + } + } else if (ctrl->id == V4L2_CID_MPEG_VIDEO_H264_LEVEL) { + switch (ctrl->val) { + case V4L2_MPEG_VIDEO_H264_LEVEL_1_0: + case V4L2_MPEG_VIDEO_H264_LEVEL_1B: + case V4L2_MPEG_VIDEO_H264_LEVEL_1_1: + case V4L2_MPEG_VIDEO_H264_LEVEL_1_2: + case V4L2_MPEG_VIDEO_H264_LEVEL_1_3: + case V4L2_MPEG_VIDEO_H264_LEVEL_2_0: + case V4L2_MPEG_VIDEO_H264_LEVEL_2_1: + case V4L2_MPEG_VIDEO_H264_LEVEL_2_2: + case V4L2_MPEG_VIDEO_H264_LEVEL_3_0: + case V4L2_MPEG_VIDEO_H264_LEVEL_3_1: + case V4L2_MPEG_VIDEO_H264_LEVEL_3_2: + case V4L2_MPEG_VIDEO_H264_LEVEL_4_0: + dev->capture.enc_level = ctrl->val; + break; + default: + ret = -EINVAL; + break; + } + } + + if (!ret) { + switch (dev->capture.enc_profile) { + case V4L2_MPEG_VIDEO_H264_PROFILE_BASELINE: + param.profile = MMAL_VIDEO_PROFILE_H264_BASELINE; + break; + case V4L2_MPEG_VIDEO_H264_PROFILE_CONSTRAINED_BASELINE: + param.profile = + MMAL_VIDEO_PROFILE_H264_CONSTRAINED_BASELINE; + break; + case V4L2_MPEG_VIDEO_H264_PROFILE_MAIN: + param.profile = MMAL_VIDEO_PROFILE_H264_MAIN; + break; + case V4L2_MPEG_VIDEO_H264_PROFILE_HIGH: + param.profile = MMAL_VIDEO_PROFILE_H264_HIGH; + break; + default: + /* Should never get here */ + break; + } + + switch (dev->capture.enc_level) { + case V4L2_MPEG_VIDEO_H264_LEVEL_1_0: + param.level = MMAL_VIDEO_LEVEL_H264_1; + break; + case V4L2_MPEG_VIDEO_H264_LEVEL_1B: + param.level = MMAL_VIDEO_LEVEL_H264_1b; + break; + case V4L2_MPEG_VIDEO_H264_LEVEL_1_1: + param.level = MMAL_VIDEO_LEVEL_H264_11; + break; + case V4L2_MPEG_VIDEO_H264_LEVEL_1_2: + param.level = MMAL_VIDEO_LEVEL_H264_12; + break; + case V4L2_MPEG_VIDEO_H264_LEVEL_1_3: + param.level = MMAL_VIDEO_LEVEL_H264_13; + break; + case V4L2_MPEG_VIDEO_H264_LEVEL_2_0: + param.level = MMAL_VIDEO_LEVEL_H264_2; + break; + case V4L2_MPEG_VIDEO_H264_LEVEL_2_1: + param.level = MMAL_VIDEO_LEVEL_H264_21; + break; + case V4L2_MPEG_VIDEO_H264_LEVEL_2_2: + param.level = MMAL_VIDEO_LEVEL_H264_22; + break; + case V4L2_MPEG_VIDEO_H264_LEVEL_3_0: + param.level = MMAL_VIDEO_LEVEL_H264_3; + break; + case V4L2_MPEG_VIDEO_H264_LEVEL_3_1: + param.level = MMAL_VIDEO_LEVEL_H264_31; + break; + case V4L2_MPEG_VIDEO_H264_LEVEL_3_2: + param.level = MMAL_VIDEO_LEVEL_H264_32; + break; + case V4L2_MPEG_VIDEO_H264_LEVEL_4_0: + param.level = MMAL_VIDEO_LEVEL_H264_4; + break; + default: + /* Should never get here */ + break; + } + + ret = vchiq_mmal_port_parameter_set(dev->instance, + &dev->component[MMAL_COMPONENT_VIDEO_ENCODE]->output[0], + mmal_ctrl->mmal_id, + ¶m, sizeof(param)); + } + return ret; +} + +static int ctrl_set_scene_mode(struct bm2835_mmal_dev *dev, + struct v4l2_ctrl *ctrl, + const struct bm2835_mmal_v4l2_ctrl *mmal_ctrl) +{ + int ret = 0; + int shutter_speed; + struct vchiq_mmal_port *control; + + v4l2_dbg(0, bcm2835_v4l2_debug, &dev->v4l2_dev, + "scene mode selected %d, was %d\n", ctrl->val, + dev->scene_mode); + control = &dev->component[MMAL_COMPONENT_CAMERA]->control; + + if (ctrl->val == dev->scene_mode) + return 0; + + if (ctrl->val == V4L2_SCENE_MODE_NONE) { + /* Restore all user selections */ + dev->scene_mode = V4L2_SCENE_MODE_NONE; + + if (dev->exposure_mode_user == MMAL_PARAM_EXPOSUREMODE_OFF) + shutter_speed = dev->manual_shutter_speed; + else + shutter_speed = 0; + + v4l2_dbg(0, bcm2835_v4l2_debug, &dev->v4l2_dev, + "%s: scene mode none: shut_speed %d, exp_mode %d, metering %d\n", + __func__, shutter_speed, dev->exposure_mode_user, + dev->metering_mode); + ret = vchiq_mmal_port_parameter_set(dev->instance, + control, + MMAL_PARAMETER_SHUTTER_SPEED, + &shutter_speed, + sizeof(shutter_speed)); + ret += vchiq_mmal_port_parameter_set(dev->instance, + control, + MMAL_PARAMETER_EXPOSURE_MODE, + &dev->exposure_mode_user, + sizeof(u32)); + dev->exposure_mode_active = dev->exposure_mode_user; + ret += vchiq_mmal_port_parameter_set(dev->instance, + control, + MMAL_PARAMETER_EXP_METERING_MODE, + &dev->metering_mode, + sizeof(u32)); + ret += set_framerate_params(dev); + } else { + /* Set up scene mode */ + int i; + const struct v4l2_mmal_scene_config *scene = NULL; + int shutter_speed; + enum mmal_parameter_exposuremode exposure_mode; + enum mmal_parameter_exposuremeteringmode metering_mode; + + for (i = 0; i < ARRAY_SIZE(scene_configs); i++) { + if (scene_configs[i].v4l2_scene == + ctrl->val) { + scene = &scene_configs[i]; + break; + } + } + if (!scene) + return -EINVAL; + if (i >= ARRAY_SIZE(scene_configs)) + return -EINVAL; + + /* Set all the values */ + dev->scene_mode = ctrl->val; + + if (scene->exposure_mode == MMAL_PARAM_EXPOSUREMODE_OFF) + shutter_speed = dev->manual_shutter_speed; + else + shutter_speed = 0; + exposure_mode = scene->exposure_mode; + metering_mode = scene->metering_mode; + + v4l2_dbg(1, bcm2835_v4l2_debug, &dev->v4l2_dev, + "%s: scene mode none: shut_speed %d, exp_mode %d, metering %d\n", + __func__, shutter_speed, exposure_mode, metering_mode); + + ret = vchiq_mmal_port_parameter_set(dev->instance, control, + MMAL_PARAMETER_SHUTTER_SPEED, + &shutter_speed, + sizeof(shutter_speed)); + ret += vchiq_mmal_port_parameter_set(dev->instance, + control, + MMAL_PARAMETER_EXPOSURE_MODE, + &exposure_mode, + sizeof(u32)); + dev->exposure_mode_active = exposure_mode; + ret += vchiq_mmal_port_parameter_set(dev->instance, control, + MMAL_PARAMETER_EXPOSURE_MODE, + &exposure_mode, + sizeof(u32)); + ret += vchiq_mmal_port_parameter_set(dev->instance, control, + MMAL_PARAMETER_EXP_METERING_MODE, + &metering_mode, + sizeof(u32)); + ret += set_framerate_params(dev); + } + if (ret) { + v4l2_dbg(1, bcm2835_v4l2_debug, &dev->v4l2_dev, + "%s: Setting scene to %d, ret=%d\n", + __func__, ctrl->val, ret); + ret = -EINVAL; + } + return 0; +} + +static int bm2835_mmal_s_ctrl(struct v4l2_ctrl *ctrl) +{ + struct bm2835_mmal_dev *dev = + container_of(ctrl->handler, struct bm2835_mmal_dev, + ctrl_handler); + const struct bm2835_mmal_v4l2_ctrl *mmal_ctrl = ctrl->priv; + int ret; + + if ((mmal_ctrl == NULL) || + (mmal_ctrl->id != ctrl->id) || + (mmal_ctrl->setter == NULL)) { + pr_warn("mmal_ctrl:%p ctrl id:%d\n", mmal_ctrl, ctrl->id); + return -EINVAL; + } + + ret = mmal_ctrl->setter(dev, ctrl, mmal_ctrl); + if (ret) + pr_warn("ctrl id:%d/MMAL param %08X- returned ret %d\n", + ctrl->id, mmal_ctrl->mmal_id, ret); + if (mmal_ctrl->ignore_errors) + ret = 0; + return ret; +} + +static const struct v4l2_ctrl_ops bm2835_mmal_ctrl_ops = { + .s_ctrl = bm2835_mmal_s_ctrl, +}; + + + +static const struct bm2835_mmal_v4l2_ctrl v4l2_ctrls[V4L2_CTRL_COUNT] = { + { + V4L2_CID_SATURATION, MMAL_CONTROL_TYPE_STD, + -100, 100, 0, 1, NULL, + MMAL_PARAMETER_SATURATION, + &ctrl_set_rational, + false + }, + { + V4L2_CID_SHARPNESS, MMAL_CONTROL_TYPE_STD, + -100, 100, 0, 1, NULL, + MMAL_PARAMETER_SHARPNESS, + &ctrl_set_rational, + false + }, + { + V4L2_CID_CONTRAST, MMAL_CONTROL_TYPE_STD, + -100, 100, 0, 1, NULL, + MMAL_PARAMETER_CONTRAST, + &ctrl_set_rational, + false + }, + { + V4L2_CID_BRIGHTNESS, MMAL_CONTROL_TYPE_STD, + 0, 100, 50, 1, NULL, + MMAL_PARAMETER_BRIGHTNESS, + &ctrl_set_rational, + false + }, + { + V4L2_CID_ISO_SENSITIVITY, MMAL_CONTROL_TYPE_INT_MENU, + 0, ARRAY_SIZE(iso_qmenu) - 1, 0, 1, iso_qmenu, + MMAL_PARAMETER_ISO, + &ctrl_set_value_menu, + false + }, + { + V4L2_CID_IMAGE_STABILIZATION, MMAL_CONTROL_TYPE_STD, + 0, 1, 0, 1, NULL, + MMAL_PARAMETER_VIDEO_STABILISATION, + &ctrl_set_value, + false + }, +/* { + 0, MMAL_CONTROL_TYPE_CLUSTER, 3, 1, 0, NULL, 0, NULL + }, */ + { + V4L2_CID_EXPOSURE_AUTO, MMAL_CONTROL_TYPE_STD_MENU, + ~0x03, 3, V4L2_EXPOSURE_AUTO, 0, NULL, + MMAL_PARAMETER_EXPOSURE_MODE, + &ctrl_set_exposure, + false + }, +/* todo this needs mixing in with set exposure + { + V4L2_CID_SCENE_MODE, MMAL_CONTROL_TYPE_STD_MENU, + }, + */ + { + V4L2_CID_EXPOSURE_ABSOLUTE, MMAL_CONTROL_TYPE_STD, + /* Units of 100usecs */ + 1, 1*1000*10, 100*10, 1, NULL, + MMAL_PARAMETER_SHUTTER_SPEED, + &ctrl_set_exposure, + false + }, + { + V4L2_CID_AUTO_EXPOSURE_BIAS, MMAL_CONTROL_TYPE_INT_MENU, + 0, ARRAY_SIZE(ev_bias_qmenu) - 1, + (ARRAY_SIZE(ev_bias_qmenu)+1)/2 - 1, 0, ev_bias_qmenu, + MMAL_PARAMETER_EXPOSURE_COMP, + &ctrl_set_value_ev, + false + }, + { + V4L2_CID_EXPOSURE_AUTO_PRIORITY, MMAL_CONTROL_TYPE_STD, + 0, 1, + 0, 1, NULL, + 0, /* Dummy MMAL ID as it gets mapped into FPS range*/ + &ctrl_set_exposure, + false + }, + { + V4L2_CID_EXPOSURE_METERING, + MMAL_CONTROL_TYPE_STD_MENU, + ~0x7, 2, V4L2_EXPOSURE_METERING_AVERAGE, 0, NULL, + MMAL_PARAMETER_EXP_METERING_MODE, + &ctrl_set_metering_mode, + false + }, + { + V4L2_CID_AUTO_N_PRESET_WHITE_BALANCE, + MMAL_CONTROL_TYPE_STD_MENU, + ~0x3ff, 9, V4L2_WHITE_BALANCE_AUTO, 0, NULL, + MMAL_PARAMETER_AWB_MODE, + &ctrl_set_awb_mode, + false + }, + { + V4L2_CID_RED_BALANCE, MMAL_CONTROL_TYPE_STD, + 1, 7999, 1000, 1, NULL, + MMAL_PARAMETER_CUSTOM_AWB_GAINS, + &ctrl_set_awb_gains, + false + }, + { + V4L2_CID_BLUE_BALANCE, MMAL_CONTROL_TYPE_STD, + 1, 7999, 1000, 1, NULL, + MMAL_PARAMETER_CUSTOM_AWB_GAINS, + &ctrl_set_awb_gains, + false + }, + { + V4L2_CID_COLORFX, MMAL_CONTROL_TYPE_STD_MENU, + 0, 15, V4L2_COLORFX_NONE, 0, NULL, + MMAL_PARAMETER_IMAGE_EFFECT, + &ctrl_set_image_effect, + false + }, + { + V4L2_CID_COLORFX_CBCR, MMAL_CONTROL_TYPE_STD, + 0, 0xffff, 0x8080, 1, NULL, + MMAL_PARAMETER_COLOUR_EFFECT, + &ctrl_set_colfx, + false + }, + { + V4L2_CID_ROTATE, MMAL_CONTROL_TYPE_STD, + 0, 360, 0, 90, NULL, + MMAL_PARAMETER_ROTATION, + &ctrl_set_rotate, + false + }, + { + V4L2_CID_HFLIP, MMAL_CONTROL_TYPE_STD, + 0, 1, 0, 1, NULL, + MMAL_PARAMETER_MIRROR, + &ctrl_set_flip, + false + }, + { + V4L2_CID_VFLIP, MMAL_CONTROL_TYPE_STD, + 0, 1, 0, 1, NULL, + MMAL_PARAMETER_MIRROR, + &ctrl_set_flip, + false + }, + { + V4L2_CID_MPEG_VIDEO_BITRATE_MODE, MMAL_CONTROL_TYPE_STD_MENU, + 0, ARRAY_SIZE(bitrate_mode_qmenu) - 1, + 0, 0, bitrate_mode_qmenu, + MMAL_PARAMETER_RATECONTROL, + &ctrl_set_bitrate_mode, + false + }, + { + V4L2_CID_MPEG_VIDEO_BITRATE, MMAL_CONTROL_TYPE_STD, + 25*1000, 25*1000*1000, 10*1000*1000, 25*1000, NULL, + MMAL_PARAMETER_VIDEO_BIT_RATE, + &ctrl_set_bitrate, + false + }, + { + V4L2_CID_JPEG_COMPRESSION_QUALITY, MMAL_CONTROL_TYPE_STD, + 1, 100, + 30, 1, NULL, + MMAL_PARAMETER_JPEG_Q_FACTOR, + &ctrl_set_image_encode_output, + false + }, + { + V4L2_CID_POWER_LINE_FREQUENCY, MMAL_CONTROL_TYPE_STD_MENU, + 0, ARRAY_SIZE(mains_freq_qmenu) - 1, + 1, 1, NULL, + MMAL_PARAMETER_FLICKER_AVOID, + &ctrl_set_flicker_avoidance, + false + }, + { + V4L2_CID_MPEG_VIDEO_REPEAT_SEQ_HEADER, MMAL_CONTROL_TYPE_STD, + 0, 1, + 0, 1, NULL, + MMAL_PARAMETER_VIDEO_ENCODE_INLINE_HEADER, + &ctrl_set_video_encode_param_output, + true /* Errors ignored as requires latest firmware to work */ + }, + { + V4L2_CID_MPEG_VIDEO_H264_PROFILE, + MMAL_CONTROL_TYPE_STD_MENU, + ~((1<ctrls[c]) && (v4l2_ctrls[c].setter)) { + ret = v4l2_ctrls[c].setter(dev, dev->ctrls[c], + &v4l2_ctrls[c]); + if (!v4l2_ctrls[c].ignore_errors && ret) { + v4l2_dbg(1, bcm2835_v4l2_debug, &dev->v4l2_dev, + "Failed when setting default values for ctrl %d\n", + c); + break; + } + } + } + return ret; +} + +int set_framerate_params(struct bm2835_mmal_dev *dev) +{ + struct mmal_parameter_fps_range fps_range; + int ret; + + if ((dev->exposure_mode_active != MMAL_PARAM_EXPOSUREMODE_OFF) && + (dev->exp_auto_priority)) { + /* Variable FPS. Define min FPS as 1fps. + * Max as max defined FPS. + */ + fps_range.fps_low.num = 1; + fps_range.fps_low.den = 1; + fps_range.fps_high.num = dev->capture.timeperframe.denominator; + fps_range.fps_high.den = dev->capture.timeperframe.numerator; + } else { + /* Fixed FPS - set min and max to be the same */ + fps_range.fps_low.num = fps_range.fps_high.num = + dev->capture.timeperframe.denominator; + fps_range.fps_low.den = fps_range.fps_high.den = + dev->capture.timeperframe.numerator; + } + + v4l2_dbg(1, bcm2835_v4l2_debug, &dev->v4l2_dev, + "Set fps range to %d/%d to %d/%d\n", + fps_range.fps_low.num, + fps_range.fps_low.den, + fps_range.fps_high.num, + fps_range.fps_high.den + ); + + ret = vchiq_mmal_port_parameter_set(dev->instance, + &dev->component[MMAL_COMPONENT_CAMERA]-> + output[MMAL_CAMERA_PORT_PREVIEW], + MMAL_PARAMETER_FPS_RANGE, + &fps_range, sizeof(fps_range)); + ret += vchiq_mmal_port_parameter_set(dev->instance, + &dev->component[MMAL_COMPONENT_CAMERA]-> + output[MMAL_CAMERA_PORT_VIDEO], + MMAL_PARAMETER_FPS_RANGE, + &fps_range, sizeof(fps_range)); + ret += vchiq_mmal_port_parameter_set(dev->instance, + &dev->component[MMAL_COMPONENT_CAMERA]-> + output[MMAL_CAMERA_PORT_CAPTURE], + MMAL_PARAMETER_FPS_RANGE, + &fps_range, sizeof(fps_range)); + if (ret) + v4l2_dbg(0, bcm2835_v4l2_debug, &dev->v4l2_dev, + "Failed to set fps ret %d\n", + ret); + + return ret; + +} + +int bm2835_mmal_init_controls(struct bm2835_mmal_dev *dev, + struct v4l2_ctrl_handler *hdl) +{ + int c; + const struct bm2835_mmal_v4l2_ctrl *ctrl; + + v4l2_ctrl_handler_init(hdl, V4L2_CTRL_COUNT); + + for (c = 0; c < V4L2_CTRL_COUNT; c++) { + ctrl = &v4l2_ctrls[c]; + + switch (ctrl->type) { + case MMAL_CONTROL_TYPE_STD: + dev->ctrls[c] = v4l2_ctrl_new_std(hdl, + &bm2835_mmal_ctrl_ops, ctrl->id, + ctrl->min, ctrl->max, ctrl->step, ctrl->def); + break; + + case MMAL_CONTROL_TYPE_STD_MENU: + { + int mask = ctrl->min; + + if (ctrl->id == V4L2_CID_SCENE_MODE) { + /* Special handling to work out the mask + * value based on the scene_configs array + * at runtime. Reduces the chance of + * mismatches. + */ + int i; + mask = 1<ctrls[c] = v4l2_ctrl_new_std_menu(hdl, + &bm2835_mmal_ctrl_ops, ctrl->id, + ctrl->max, mask, ctrl->def); + break; + } + + case MMAL_CONTROL_TYPE_INT_MENU: + dev->ctrls[c] = v4l2_ctrl_new_int_menu(hdl, + &bm2835_mmal_ctrl_ops, ctrl->id, + ctrl->max, ctrl->def, ctrl->imenu); + break; + + case MMAL_CONTROL_TYPE_CLUSTER: + /* skip this entry when constructing controls */ + continue; + } + + if (hdl->error) + break; + + dev->ctrls[c]->priv = (void *)ctrl; + } + + if (hdl->error) { + pr_err("error adding control %d/%d id 0x%x\n", c, + V4L2_CTRL_COUNT, ctrl->id); + return hdl->error; + } + + for (c = 0; c < V4L2_CTRL_COUNT; c++) { + ctrl = &v4l2_ctrls[c]; + + switch (ctrl->type) { + case MMAL_CONTROL_TYPE_CLUSTER: + v4l2_ctrl_auto_cluster(ctrl->min, + &dev->ctrls[c+1], + ctrl->max, + ctrl->def); + break; + + case MMAL_CONTROL_TYPE_STD: + case MMAL_CONTROL_TYPE_STD_MENU: + case MMAL_CONTROL_TYPE_INT_MENU: + break; + } + + } + + return 0; +} --- linux-raspi2-4.2.0.orig/drivers/media/platform/bcm2835/mmal-common.h +++ linux-raspi2-4.2.0/drivers/media/platform/bcm2835/mmal-common.h @@ -0,0 +1,53 @@ +/* + * Broadcom BM2835 V4L2 driver + * + * Copyright © 2013 Raspberry Pi (Trading) Ltd. + * + * This file is subject to the terms and conditions of the GNU General Public + * License. See the file COPYING in the main directory of this archive + * for more details. + * + * Authors: Vincent Sanders + * Dave Stevenson + * Simon Mellor + * Luke Diamand + * + * MMAL structures + * + */ + +#define MMAL_FOURCC(a, b, c, d) ((a) | (b << 8) | (c << 16) | (d << 24)) +#define MMAL_MAGIC MMAL_FOURCC('m', 'm', 'a', 'l') + +/** Special value signalling that time is not known */ +#define MMAL_TIME_UNKNOWN (1LL<<63) + +/* mapping between v4l and mmal video modes */ +struct mmal_fmt { + char *name; + u32 fourcc; /* v4l2 format id */ + int flags; /* v4l2 flags field */ + u32 mmal; + int depth; + u32 mmal_component; /* MMAL component index to be used to encode */ + u32 ybbp; /* depth of first Y plane for planar formats */ +}; + +/* buffer for one video frame */ +struct mmal_buffer { + /* v4l buffer data -- must be first */ + struct vb2_buffer vb; + + /* list of buffers available */ + struct list_head list; + + void *buffer; /* buffer pointer */ + unsigned long buffer_size; /* size of allocated buffer */ +}; + +/* */ +struct mmal_colourfx { + s32 enable; + u32 u; + u32 v; +}; --- linux-raspi2-4.2.0.orig/drivers/media/platform/bcm2835/mmal-encodings.h +++ linux-raspi2-4.2.0/drivers/media/platform/bcm2835/mmal-encodings.h @@ -0,0 +1,127 @@ +/* + * Broadcom BM2835 V4L2 driver + * + * Copyright © 2013 Raspberry Pi (Trading) Ltd. + * + * This file is subject to the terms and conditions of the GNU General Public + * License. See the file COPYING in the main directory of this archive + * for more details. + * + * Authors: Vincent Sanders + * Dave Stevenson + * Simon Mellor + * Luke Diamand + */ +#ifndef MMAL_ENCODINGS_H +#define MMAL_ENCODINGS_H + +#define MMAL_ENCODING_H264 MMAL_FOURCC('H', '2', '6', '4') +#define MMAL_ENCODING_H263 MMAL_FOURCC('H', '2', '6', '3') +#define MMAL_ENCODING_MP4V MMAL_FOURCC('M', 'P', '4', 'V') +#define MMAL_ENCODING_MP2V MMAL_FOURCC('M', 'P', '2', 'V') +#define MMAL_ENCODING_MP1V MMAL_FOURCC('M', 'P', '1', 'V') +#define MMAL_ENCODING_WMV3 MMAL_FOURCC('W', 'M', 'V', '3') +#define MMAL_ENCODING_WMV2 MMAL_FOURCC('W', 'M', 'V', '2') +#define MMAL_ENCODING_WMV1 MMAL_FOURCC('W', 'M', 'V', '1') +#define MMAL_ENCODING_WVC1 MMAL_FOURCC('W', 'V', 'C', '1') +#define MMAL_ENCODING_VP8 MMAL_FOURCC('V', 'P', '8', ' ') +#define MMAL_ENCODING_VP7 MMAL_FOURCC('V', 'P', '7', ' ') +#define MMAL_ENCODING_VP6 MMAL_FOURCC('V', 'P', '6', ' ') +#define MMAL_ENCODING_THEORA MMAL_FOURCC('T', 'H', 'E', 'O') +#define MMAL_ENCODING_SPARK MMAL_FOURCC('S', 'P', 'R', 'K') +#define MMAL_ENCODING_MJPEG MMAL_FOURCC('M', 'J', 'P', 'G') + +#define MMAL_ENCODING_JPEG MMAL_FOURCC('J', 'P', 'E', 'G') +#define MMAL_ENCODING_GIF MMAL_FOURCC('G', 'I', 'F', ' ') +#define MMAL_ENCODING_PNG MMAL_FOURCC('P', 'N', 'G', ' ') +#define MMAL_ENCODING_PPM MMAL_FOURCC('P', 'P', 'M', ' ') +#define MMAL_ENCODING_TGA MMAL_FOURCC('T', 'G', 'A', ' ') +#define MMAL_ENCODING_BMP MMAL_FOURCC('B', 'M', 'P', ' ') + +#define MMAL_ENCODING_I420 MMAL_FOURCC('I', '4', '2', '0') +#define MMAL_ENCODING_I420_SLICE MMAL_FOURCC('S', '4', '2', '0') +#define MMAL_ENCODING_YV12 MMAL_FOURCC('Y', 'V', '1', '2') +#define MMAL_ENCODING_I422 MMAL_FOURCC('I', '4', '2', '2') +#define MMAL_ENCODING_I422_SLICE MMAL_FOURCC('S', '4', '2', '2') +#define MMAL_ENCODING_YUYV MMAL_FOURCC('Y', 'U', 'Y', 'V') +#define MMAL_ENCODING_YVYU MMAL_FOURCC('Y', 'V', 'Y', 'U') +#define MMAL_ENCODING_UYVY MMAL_FOURCC('U', 'Y', 'V', 'Y') +#define MMAL_ENCODING_VYUY MMAL_FOURCC('V', 'Y', 'U', 'Y') +#define MMAL_ENCODING_NV12 MMAL_FOURCC('N', 'V', '1', '2') +#define MMAL_ENCODING_NV21 MMAL_FOURCC('N', 'V', '2', '1') +#define MMAL_ENCODING_ARGB MMAL_FOURCC('A', 'R', 'G', 'B') +#define MMAL_ENCODING_RGBA MMAL_FOURCC('R', 'G', 'B', 'A') +#define MMAL_ENCODING_ABGR MMAL_FOURCC('A', 'B', 'G', 'R') +#define MMAL_ENCODING_BGRA MMAL_FOURCC('B', 'G', 'R', 'A') +#define MMAL_ENCODING_RGB16 MMAL_FOURCC('R', 'G', 'B', '2') +#define MMAL_ENCODING_RGB24 MMAL_FOURCC('R', 'G', 'B', '3') +#define MMAL_ENCODING_RGB32 MMAL_FOURCC('R', 'G', 'B', '4') +#define MMAL_ENCODING_BGR16 MMAL_FOURCC('B', 'G', 'R', '2') +#define MMAL_ENCODING_BGR24 MMAL_FOURCC('B', 'G', 'R', '3') +#define MMAL_ENCODING_BGR32 MMAL_FOURCC('B', 'G', 'R', '4') + +/** SAND Video (YUVUV128) format, native format understood by VideoCore. + * This format is *not* opaque - if requested you will receive full frames + * of YUV_UV video. + */ +#define MMAL_ENCODING_YUVUV128 MMAL_FOURCC('S', 'A', 'N', 'D') + +/** VideoCore opaque image format, image handles are returned to + * the host but not the actual image data. + */ +#define MMAL_ENCODING_OPAQUE MMAL_FOURCC('O', 'P', 'Q', 'V') + +/** An EGL image handle + */ +#define MMAL_ENCODING_EGL_IMAGE MMAL_FOURCC('E', 'G', 'L', 'I') + +/* }@ */ + +/** \name Pre-defined audio encodings */ +/* @{ */ +#define MMAL_ENCODING_PCM_UNSIGNED_BE MMAL_FOURCC('P', 'C', 'M', 'U') +#define MMAL_ENCODING_PCM_UNSIGNED_LE MMAL_FOURCC('p', 'c', 'm', 'u') +#define MMAL_ENCODING_PCM_SIGNED_BE MMAL_FOURCC('P', 'C', 'M', 'S') +#define MMAL_ENCODING_PCM_SIGNED_LE MMAL_FOURCC('p', 'c', 'm', 's') +#define MMAL_ENCODING_PCM_FLOAT_BE MMAL_FOURCC('P', 'C', 'M', 'F') +#define MMAL_ENCODING_PCM_FLOAT_LE MMAL_FOURCC('p', 'c', 'm', 'f') + +/* Pre-defined H264 encoding variants */ + +/** ISO 14496-10 Annex B byte stream format */ +#define MMAL_ENCODING_VARIANT_H264_DEFAULT 0 +/** ISO 14496-15 AVC stream format */ +#define MMAL_ENCODING_VARIANT_H264_AVC1 MMAL_FOURCC('A', 'V', 'C', '1') +/** Implicitly delineated NAL units without emulation prevention */ +#define MMAL_ENCODING_VARIANT_H264_RAW MMAL_FOURCC('R', 'A', 'W', ' ') + + +/** \defgroup MmalColorSpace List of pre-defined video color spaces + * This defines a list of common color spaces. This list isn't exhaustive and + * is only provided as a convenience to avoid clients having to use FourCC + * codes directly. However components are allowed to define and use their own + * FourCC codes. + */ +/* @{ */ + +/** Unknown color space */ +#define MMAL_COLOR_SPACE_UNKNOWN 0 +/** ITU-R BT.601-5 [SDTV] */ +#define MMAL_COLOR_SPACE_ITUR_BT601 MMAL_FOURCC('Y', '6', '0', '1') +/** ITU-R BT.709-3 [HDTV] */ +#define MMAL_COLOR_SPACE_ITUR_BT709 MMAL_FOURCC('Y', '7', '0', '9') +/** JPEG JFIF */ +#define MMAL_COLOR_SPACE_JPEG_JFIF MMAL_FOURCC('Y', 'J', 'F', 'I') +/** Title 47 Code of Federal Regulations (2003) 73.682 (a) (20) */ +#define MMAL_COLOR_SPACE_FCC MMAL_FOURCC('Y', 'F', 'C', 'C') +/** Society of Motion Picture and Television Engineers 240M (1999) */ +#define MMAL_COLOR_SPACE_SMPTE240M MMAL_FOURCC('Y', '2', '4', '0') +/** ITU-R BT.470-2 System M */ +#define MMAL_COLOR_SPACE_BT470_2_M MMAL_FOURCC('Y', '_', '_', 'M') +/** ITU-R BT.470-2 System BG */ +#define MMAL_COLOR_SPACE_BT470_2_BG MMAL_FOURCC('Y', '_', 'B', 'G') +/** JPEG JFIF, but with 16..255 luma */ +#define MMAL_COLOR_SPACE_JFIF_Y16_255 MMAL_FOURCC('Y', 'Y', '1', '6') +/* @} MmalColorSpace List */ + +#endif /* MMAL_ENCODINGS_H */ --- linux-raspi2-4.2.0.orig/drivers/media/platform/bcm2835/mmal-msg-common.h +++ linux-raspi2-4.2.0/drivers/media/platform/bcm2835/mmal-msg-common.h @@ -0,0 +1,50 @@ +/* + * Broadcom BM2835 V4L2 driver + * + * Copyright © 2013 Raspberry Pi (Trading) Ltd. + * + * This file is subject to the terms and conditions of the GNU General Public + * License. See the file COPYING in the main directory of this archive + * for more details. + * + * Authors: Vincent Sanders + * Dave Stevenson + * Simon Mellor + * Luke Diamand + */ + +#ifndef MMAL_MSG_COMMON_H +#define MMAL_MSG_COMMON_H + +enum mmal_msg_status { + MMAL_MSG_STATUS_SUCCESS = 0, /**< Success */ + MMAL_MSG_STATUS_ENOMEM, /**< Out of memory */ + MMAL_MSG_STATUS_ENOSPC, /**< Out of resources other than memory */ + MMAL_MSG_STATUS_EINVAL, /**< Argument is invalid */ + MMAL_MSG_STATUS_ENOSYS, /**< Function not implemented */ + MMAL_MSG_STATUS_ENOENT, /**< No such file or directory */ + MMAL_MSG_STATUS_ENXIO, /**< No such device or address */ + MMAL_MSG_STATUS_EIO, /**< I/O error */ + MMAL_MSG_STATUS_ESPIPE, /**< Illegal seek */ + MMAL_MSG_STATUS_ECORRUPT, /**< Data is corrupt \attention */ + MMAL_MSG_STATUS_ENOTREADY, /**< Component is not ready */ + MMAL_MSG_STATUS_ECONFIG, /**< Component is not configured */ + MMAL_MSG_STATUS_EISCONN, /**< Port is already connected */ + MMAL_MSG_STATUS_ENOTCONN, /**< Port is disconnected */ + MMAL_MSG_STATUS_EAGAIN, /**< Resource temporarily unavailable. */ + MMAL_MSG_STATUS_EFAULT, /**< Bad address */ +}; + +struct mmal_rect { + s32 x; /**< x coordinate (from left) */ + s32 y; /**< y coordinate (from top) */ + s32 width; /**< width */ + s32 height; /**< height */ +}; + +struct mmal_rational { + s32 num; /**< Numerator */ + s32 den; /**< Denominator */ +}; + +#endif /* MMAL_MSG_COMMON_H */ --- linux-raspi2-4.2.0.orig/drivers/media/platform/bcm2835/mmal-msg-format.h +++ linux-raspi2-4.2.0/drivers/media/platform/bcm2835/mmal-msg-format.h @@ -0,0 +1,81 @@ +/* + * Broadcom BM2835 V4L2 driver + * + * Copyright © 2013 Raspberry Pi (Trading) Ltd. + * + * This file is subject to the terms and conditions of the GNU General Public + * License. See the file COPYING in the main directory of this archive + * for more details. + * + * Authors: Vincent Sanders + * Dave Stevenson + * Simon Mellor + * Luke Diamand + */ + +#ifndef MMAL_MSG_FORMAT_H +#define MMAL_MSG_FORMAT_H + +#include "mmal-msg-common.h" + +/* MMAL_ES_FORMAT_T */ + + +struct mmal_audio_format { + u32 channels; /**< Number of audio channels */ + u32 sample_rate; /**< Sample rate */ + + u32 bits_per_sample; /**< Bits per sample */ + u32 block_align; /**< Size of a block of data */ +}; + +struct mmal_video_format { + u32 width; /**< Width of frame in pixels */ + u32 height; /**< Height of frame in rows of pixels */ + struct mmal_rect crop; /**< Visible region of the frame */ + struct mmal_rational frame_rate; /**< Frame rate */ + struct mmal_rational par; /**< Pixel aspect ratio */ + + /* FourCC specifying the color space of the video stream. See the + * \ref MmalColorSpace "pre-defined color spaces" for some examples. + */ + u32 color_space; +}; + +struct mmal_subpicture_format { + u32 x_offset; + u32 y_offset; +}; + +union mmal_es_specific_format { + struct mmal_audio_format audio; + struct mmal_video_format video; + struct mmal_subpicture_format subpicture; +}; + +/** Definition of an elementary stream format (MMAL_ES_FORMAT_T) */ +struct mmal_es_format { + u32 type; /* enum mmal_es_type */ + + u32 encoding; /* FourCC specifying encoding of the elementary stream.*/ + u32 encoding_variant; /* FourCC specifying the specific + * encoding variant of the elementary + * stream. + */ + + union mmal_es_specific_format *es; /* TODO: pointers in + * message serialisation?!? + */ + /* Type specific + * information for the + * elementary stream + */ + + u32 bitrate; /**< Bitrate in bits per second */ + u32 flags; /**< Flags describing properties of the elementary stream. */ + + u32 extradata_size; /**< Size of the codec specific data */ + u8 *extradata; /**< Codec specific data */ +}; + +#endif /* MMAL_MSG_FORMAT_H */ --- linux-raspi2-4.2.0.orig/drivers/media/platform/bcm2835/mmal-msg-port.h +++ linux-raspi2-4.2.0/drivers/media/platform/bcm2835/mmal-msg-port.h @@ -0,0 +1,107 @@ +/* + * Broadcom BM2835 V4L2 driver + * + * Copyright © 2013 Raspberry Pi (Trading) Ltd. + * + * This file is subject to the terms and conditions of the GNU General Public + * License. See the file COPYING in the main directory of this archive + * for more details. + * + * Authors: Vincent Sanders + * Dave Stevenson + * Simon Mellor + * Luke Diamand + */ + +/* MMAL_PORT_TYPE_T */ +enum mmal_port_type { + MMAL_PORT_TYPE_UNKNOWN = 0, /**< Unknown port type */ + MMAL_PORT_TYPE_CONTROL, /**< Control port */ + MMAL_PORT_TYPE_INPUT, /**< Input port */ + MMAL_PORT_TYPE_OUTPUT, /**< Output port */ + MMAL_PORT_TYPE_CLOCK, /**< Clock port */ +}; + +/** The port is pass-through and doesn't need buffer headers allocated */ +#define MMAL_PORT_CAPABILITY_PASSTHROUGH 0x01 +/** The port wants to allocate the buffer payloads. + * This signals a preference that payload allocation should be done + * on this port for efficiency reasons. */ +#define MMAL_PORT_CAPABILITY_ALLOCATION 0x02 +/** The port supports format change events. + * This applies to input ports and is used to let the client know + * whether the port supports being reconfigured via a format + * change event (i.e. without having to disable the port). */ +#define MMAL_PORT_CAPABILITY_SUPPORTS_EVENT_FORMAT_CHANGE 0x04 + +/* mmal port structure (MMAL_PORT_T) + * + * most elements are informational only, the pointer values for + * interogation messages are generally provided as additional + * strucures within the message. When used to set values only teh + * buffer_num, buffer_size and userdata parameters are writable. + */ +struct mmal_port { + void *priv; /* Private member used by the framework */ + const char *name; /* Port name. Used for debugging purposes (RO) */ + + u32 type; /* Type of the port (RO) enum mmal_port_type */ + u16 index; /* Index of the port in its type list (RO) */ + u16 index_all; /* Index of the port in the list of all ports (RO) */ + + u32 is_enabled; /* Indicates whether the port is enabled or not (RO) */ + struct mmal_es_format *format; /* Format of the elementary stream */ + + u32 buffer_num_min; /* Minimum number of buffers the port + * requires (RO). This is set by the + * component. + */ + + u32 buffer_size_min; /* Minimum size of buffers the port + * requires (RO). This is set by the + * component. + */ + + u32 buffer_alignment_min; /* Minimum alignment requirement for + * the buffers (RO). A value of + * zero means no special alignment + * requirements. This is set by the + * component. + */ + + u32 buffer_num_recommended; /* Number of buffers the port + * recommends for optimal + * performance (RO). A value of + * zero means no special + * recommendation. This is set + * by the component. + */ + + u32 buffer_size_recommended; /* Size of buffers the port + * recommends for optimal + * performance (RO). A value of + * zero means no special + * recommendation. This is set + * by the component. + */ + + u32 buffer_num; /* Actual number of buffers the port will use. + * This is set by the client. + */ + + u32 buffer_size; /* Actual maximum size of the buffers that + * will be sent to the port. This is set by + * the client. + */ + + void *component; /* Component this port belongs to (Read Only) */ + + void *userdata; /* Field reserved for use by the client */ + + u32 capabilities; /* Flags describing the capabilities of a + * port (RO). Bitwise combination of \ref + * portcapabilities "Port capabilities" + * values. + */ + +}; --- linux-raspi2-4.2.0.orig/drivers/media/platform/bcm2835/mmal-msg.h +++ linux-raspi2-4.2.0/drivers/media/platform/bcm2835/mmal-msg.h @@ -0,0 +1,404 @@ +/* + * Broadcom BM2835 V4L2 driver + * + * Copyright © 2013 Raspberry Pi (Trading) Ltd. + * + * This file is subject to the terms and conditions of the GNU General Public + * License. See the file COPYING in the main directory of this archive + * for more details. + * + * Authors: Vincent Sanders + * Dave Stevenson + * Simon Mellor + * Luke Diamand + */ + +/* all the data structures which serialise the MMAL protocol. note + * these are directly mapped onto the recived message data. + * + * BEWARE: They seem to *assume* pointers are u32 and that there is no + * structure padding! + * + * NOTE: this implementation uses kernel types to ensure sizes. Rather + * than assigning values to enums to force their size the + * implementation uses fixed size types and not the enums (though the + * comments have the actual enum type + */ + +#define VC_MMAL_VER 15 +#define VC_MMAL_MIN_VER 10 +#define VC_MMAL_SERVER_NAME MAKE_FOURCC("mmal") + +/* max total message size is 512 bytes */ +#define MMAL_MSG_MAX_SIZE 512 +/* with six 32bit header elements max payload is therefore 488 bytes */ +#define MMAL_MSG_MAX_PAYLOAD 488 + +#include "mmal-msg-common.h" +#include "mmal-msg-format.h" +#include "mmal-msg-port.h" + +enum mmal_msg_type { + MMAL_MSG_TYPE_QUIT = 1, + MMAL_MSG_TYPE_SERVICE_CLOSED, + MMAL_MSG_TYPE_GET_VERSION, + MMAL_MSG_TYPE_COMPONENT_CREATE, + MMAL_MSG_TYPE_COMPONENT_DESTROY, /* 5 */ + MMAL_MSG_TYPE_COMPONENT_ENABLE, + MMAL_MSG_TYPE_COMPONENT_DISABLE, + MMAL_MSG_TYPE_PORT_INFO_GET, + MMAL_MSG_TYPE_PORT_INFO_SET, + MMAL_MSG_TYPE_PORT_ACTION, /* 10 */ + MMAL_MSG_TYPE_BUFFER_FROM_HOST, + MMAL_MSG_TYPE_BUFFER_TO_HOST, + MMAL_MSG_TYPE_GET_STATS, + MMAL_MSG_TYPE_PORT_PARAMETER_SET, + MMAL_MSG_TYPE_PORT_PARAMETER_GET, /* 15 */ + MMAL_MSG_TYPE_EVENT_TO_HOST, + MMAL_MSG_TYPE_GET_CORE_STATS_FOR_PORT, + MMAL_MSG_TYPE_OPAQUE_ALLOCATOR, + MMAL_MSG_TYPE_CONSUME_MEM, + MMAL_MSG_TYPE_LMK, /* 20 */ + MMAL_MSG_TYPE_OPAQUE_ALLOCATOR_DESC, + MMAL_MSG_TYPE_DRM_GET_LHS32, + MMAL_MSG_TYPE_DRM_GET_TIME, + MMAL_MSG_TYPE_BUFFER_FROM_HOST_ZEROLEN, + MMAL_MSG_TYPE_PORT_FLUSH, /* 25 */ + MMAL_MSG_TYPE_HOST_LOG, + MMAL_MSG_TYPE_MSG_LAST +}; + +/* port action request messages differ depending on the action type */ +enum mmal_msg_port_action_type { + MMAL_MSG_PORT_ACTION_TYPE_UNKNOWN = 0, /* Unkown action */ + MMAL_MSG_PORT_ACTION_TYPE_ENABLE, /* Enable a port */ + MMAL_MSG_PORT_ACTION_TYPE_DISABLE, /* Disable a port */ + MMAL_MSG_PORT_ACTION_TYPE_FLUSH, /* Flush a port */ + MMAL_MSG_PORT_ACTION_TYPE_CONNECT, /* Connect ports */ + MMAL_MSG_PORT_ACTION_TYPE_DISCONNECT, /* Disconnect ports */ + MMAL_MSG_PORT_ACTION_TYPE_SET_REQUIREMENTS, /* Set buffer requirements*/ +}; + +struct mmal_msg_header { + u32 magic; + u32 type; /** enum mmal_msg_type */ + + /* Opaque handle to the control service */ + struct mmal_control_service *control_service; + + struct mmal_msg_context *context; /** a u32 per message context */ + u32 status; /** The status of the vchiq operation */ + u32 padding; +}; + +/* Send from VC to host to report version */ +struct mmal_msg_version { + u32 flags; + u32 major; + u32 minor; + u32 minimum; +}; + +/* request to VC to create component */ +struct mmal_msg_component_create { + void *client_component; /* component context */ + char name[128]; + u32 pid; /* For debug */ +}; + +/* reply from VC to component creation request */ +struct mmal_msg_component_create_reply { + u32 status; /** enum mmal_msg_status - how does this differ to + * the one in the header? + */ + u32 component_handle; /* VideoCore handle for component */ + u32 input_num; /* Number of input ports */ + u32 output_num; /* Number of output ports */ + u32 clock_num; /* Number of clock ports */ +}; + +/* request to VC to destroy a component */ +struct mmal_msg_component_destroy { + u32 component_handle; +}; + +struct mmal_msg_component_destroy_reply { + u32 status; /** The component destruction status */ +}; + + +/* request and reply to VC to enable a component */ +struct mmal_msg_component_enable { + u32 component_handle; +}; + +struct mmal_msg_component_enable_reply { + u32 status; /** The component enable status */ +}; + + +/* request and reply to VC to disable a component */ +struct mmal_msg_component_disable { + u32 component_handle; +}; + +struct mmal_msg_component_disable_reply { + u32 status; /** The component disable status */ +}; + +/* request to VC to get port information */ +struct mmal_msg_port_info_get { + u32 component_handle; /* component handle port is associated with */ + u32 port_type; /* enum mmal_msg_port_type */ + u32 index; /* port index to query */ +}; + +/* reply from VC to get port info request */ +struct mmal_msg_port_info_get_reply { + u32 status; /** enum mmal_msg_status */ + u32 component_handle; /* component handle port is associated with */ + u32 port_type; /* enum mmal_msg_port_type */ + u32 port_index; /* port indexed in query */ + s32 found; /* unused */ + u32 port_handle; /**< Handle to use for this port */ + struct mmal_port port; + struct mmal_es_format format; /* elementry stream format */ + union mmal_es_specific_format es; /* es type specific data */ + u8 extradata[MMAL_FORMAT_EXTRADATA_MAX_SIZE]; /* es extra data */ +}; + +/* request to VC to set port information */ +struct mmal_msg_port_info_set { + u32 component_handle; + u32 port_type; /* enum mmal_msg_port_type */ + u32 port_index; /* port indexed in query */ + struct mmal_port port; + struct mmal_es_format format; + union mmal_es_specific_format es; + u8 extradata[MMAL_FORMAT_EXTRADATA_MAX_SIZE]; +}; + +/* reply from VC to port info set request */ +struct mmal_msg_port_info_set_reply { + u32 status; + u32 component_handle; /* component handle port is associated with */ + u32 port_type; /* enum mmal_msg_port_type */ + u32 index; /* port indexed in query */ + s32 found; /* unused */ + u32 port_handle; /**< Handle to use for this port */ + struct mmal_port port; + struct mmal_es_format format; + union mmal_es_specific_format es; + u8 extradata[MMAL_FORMAT_EXTRADATA_MAX_SIZE]; +}; + + +/* port action requests that take a mmal_port as a parameter */ +struct mmal_msg_port_action_port { + u32 component_handle; + u32 port_handle; + u32 action; /* enum mmal_msg_port_action_type */ + struct mmal_port port; +}; + +/* port action requests that take handles as a parameter */ +struct mmal_msg_port_action_handle { + u32 component_handle; + u32 port_handle; + u32 action; /* enum mmal_msg_port_action_type */ + u32 connect_component_handle; + u32 connect_port_handle; +}; + +struct mmal_msg_port_action_reply { + u32 status; /** The port action operation status */ +}; + + + + +/* MMAL buffer transfer */ + +/** Size of space reserved in a buffer message for short messages. */ +#define MMAL_VC_SHORT_DATA 128 + +/** Signals that the current payload is the end of the stream of data */ +#define MMAL_BUFFER_HEADER_FLAG_EOS (1<<0) +/** Signals that the start of the current payload starts a frame */ +#define MMAL_BUFFER_HEADER_FLAG_FRAME_START (1<<1) +/** Signals that the end of the current payload ends a frame */ +#define MMAL_BUFFER_HEADER_FLAG_FRAME_END (1<<2) +/** Signals that the current payload contains only complete frames (>1) */ +#define MMAL_BUFFER_HEADER_FLAG_FRAME \ + (MMAL_BUFFER_HEADER_FLAG_FRAME_START|MMAL_BUFFER_HEADER_FLAG_FRAME_END) +/** Signals that the current payload is a keyframe (i.e. self decodable) */ +#define MMAL_BUFFER_HEADER_FLAG_KEYFRAME (1<<3) +/** Signals a discontinuity in the stream of data (e.g. after a seek). + * Can be used for instance by a decoder to reset its state */ +#define MMAL_BUFFER_HEADER_FLAG_DISCONTINUITY (1<<4) +/** Signals a buffer containing some kind of config data for the component + * (e.g. codec config data) */ +#define MMAL_BUFFER_HEADER_FLAG_CONFIG (1<<5) +/** Signals an encrypted payload */ +#define MMAL_BUFFER_HEADER_FLAG_ENCRYPTED (1<<6) +/** Signals a buffer containing side information */ +#define MMAL_BUFFER_HEADER_FLAG_CODECSIDEINFO (1<<7) +/** Signals a buffer which is the snapshot/postview image from a stills + * capture + */ +#define MMAL_BUFFER_HEADER_FLAGS_SNAPSHOT (1<<8) +/** Signals a buffer which contains data known to be corrupted */ +#define MMAL_BUFFER_HEADER_FLAG_CORRUPTED (1<<9) +/** Signals that a buffer failed to be transmitted */ +#define MMAL_BUFFER_HEADER_FLAG_TRANSMISSION_FAILED (1<<10) + +struct mmal_driver_buffer { + u32 magic; + u32 component_handle; + u32 port_handle; + void *client_context; +}; + +/* buffer header */ +struct mmal_buffer_header { + struct mmal_buffer_header *next; /* next header */ + void *priv; /* framework private data */ + u32 cmd; + void *data; + u32 alloc_size; + u32 length; + u32 offset; + u32 flags; + s64 pts; + s64 dts; + void *type; + void *user_data; +}; + +struct mmal_buffer_header_type_specific { + union { + struct { + u32 planes; + u32 offset[4]; + u32 pitch[4]; + u32 flags; + } video; + } u; +}; + +struct mmal_msg_buffer_from_host { + /* The front 32 bytes of the buffer header are copied + * back to us in the reply to allow for context. This + * area is used to store two mmal_driver_buffer structures to + * allow for multiple concurrent service users. + */ + /* control data */ + struct mmal_driver_buffer drvbuf; + + /* referenced control data for passthrough buffer management */ + struct mmal_driver_buffer drvbuf_ref; + struct mmal_buffer_header buffer_header; /* buffer header itself */ + struct mmal_buffer_header_type_specific buffer_header_type_specific; + s32 is_zero_copy; + s32 has_reference; + + /** allows short data to be xfered in control message */ + u32 payload_in_message; + u8 short_data[MMAL_VC_SHORT_DATA]; +}; + + +/* port parameter setting */ + +#define MMAL_WORKER_PORT_PARAMETER_SPACE 96 + +struct mmal_msg_port_parameter_set { + u32 component_handle; /* component */ + u32 port_handle; /* port */ + u32 id; /* Parameter ID */ + u32 size; /* Parameter size */ + uint32_t value[MMAL_WORKER_PORT_PARAMETER_SPACE]; +}; + +struct mmal_msg_port_parameter_set_reply { + u32 status; /** enum mmal_msg_status todo: how does this + * differ to the one in the header? + */ +}; + +/* port parameter getting */ + +struct mmal_msg_port_parameter_get { + u32 component_handle; /* component */ + u32 port_handle; /* port */ + u32 id; /* Parameter ID */ + u32 size; /* Parameter size */ +}; + +struct mmal_msg_port_parameter_get_reply { + u32 status; /* Status of mmal_port_parameter_get call */ + u32 id; /* Parameter ID */ + u32 size; /* Parameter size */ + uint32_t value[MMAL_WORKER_PORT_PARAMETER_SPACE]; +}; + +/* event messages */ +#define MMAL_WORKER_EVENT_SPACE 256 + +struct mmal_msg_event_to_host { + void *client_component; /* component context */ + + u32 port_type; + u32 port_num; + + u32 cmd; + u32 length; + u8 data[MMAL_WORKER_EVENT_SPACE]; + struct mmal_buffer_header *delayed_buffer; +}; + +/* all mmal messages are serialised through this structure */ +struct mmal_msg { + /* header */ + struct mmal_msg_header h; + /* payload */ + union { + struct mmal_msg_version version; + + struct mmal_msg_component_create component_create; + struct mmal_msg_component_create_reply component_create_reply; + + struct mmal_msg_component_destroy component_destroy; + struct mmal_msg_component_destroy_reply component_destroy_reply; + + struct mmal_msg_component_enable component_enable; + struct mmal_msg_component_enable_reply component_enable_reply; + + struct mmal_msg_component_disable component_disable; + struct mmal_msg_component_disable_reply component_disable_reply; + + struct mmal_msg_port_info_get port_info_get; + struct mmal_msg_port_info_get_reply port_info_get_reply; + + struct mmal_msg_port_info_set port_info_set; + struct mmal_msg_port_info_set_reply port_info_set_reply; + + struct mmal_msg_port_action_port port_action_port; + struct mmal_msg_port_action_handle port_action_handle; + struct mmal_msg_port_action_reply port_action_reply; + + struct mmal_msg_buffer_from_host buffer_from_host; + + struct mmal_msg_port_parameter_set port_parameter_set; + struct mmal_msg_port_parameter_set_reply + port_parameter_set_reply; + struct mmal_msg_port_parameter_get + port_parameter_get; + struct mmal_msg_port_parameter_get_reply + port_parameter_get_reply; + + struct mmal_msg_event_to_host event_to_host; + + u8 payload[MMAL_MSG_MAX_PAYLOAD]; + } u; +}; --- linux-raspi2-4.2.0.orig/drivers/media/platform/bcm2835/mmal-parameters.h +++ linux-raspi2-4.2.0/drivers/media/platform/bcm2835/mmal-parameters.h @@ -0,0 +1,656 @@ +/* + * Broadcom BM2835 V4L2 driver + * + * Copyright © 2013 Raspberry Pi (Trading) Ltd. + * + * This file is subject to the terms and conditions of the GNU General Public + * License. See the file COPYING in the main directory of this archive + * for more details. + * + * Authors: Vincent Sanders + * Dave Stevenson + * Simon Mellor + * Luke Diamand + */ + +/* common parameters */ + +/** @name Parameter groups + * Parameters are divided into groups, and then allocated sequentially within + * a group using an enum. + * @{ + */ + +/** Common parameter ID group, used with many types of component. */ +#define MMAL_PARAMETER_GROUP_COMMON (0<<16) +/** Camera-specific parameter ID group. */ +#define MMAL_PARAMETER_GROUP_CAMERA (1<<16) +/** Video-specific parameter ID group. */ +#define MMAL_PARAMETER_GROUP_VIDEO (2<<16) +/** Audio-specific parameter ID group. */ +#define MMAL_PARAMETER_GROUP_AUDIO (3<<16) +/** Clock-specific parameter ID group. */ +#define MMAL_PARAMETER_GROUP_CLOCK (4<<16) +/** Miracast-specific parameter ID group. */ +#define MMAL_PARAMETER_GROUP_MIRACAST (5<<16) + +/* Common parameters */ +enum mmal_parameter_common_type { + MMAL_PARAMETER_UNUSED /**< Never a valid parameter ID */ + = MMAL_PARAMETER_GROUP_COMMON, + MMAL_PARAMETER_SUPPORTED_ENCODINGS, /**< MMAL_PARAMETER_ENCODING_T */ + MMAL_PARAMETER_URI, /**< MMAL_PARAMETER_URI_T */ + + /** MMAL_PARAMETER_CHANGE_EVENT_REQUEST_T */ + MMAL_PARAMETER_CHANGE_EVENT_REQUEST, + + /** MMAL_PARAMETER_BOOLEAN_T */ + MMAL_PARAMETER_ZERO_COPY, + + /**< MMAL_PARAMETER_BUFFER_REQUIREMENTS_T */ + MMAL_PARAMETER_BUFFER_REQUIREMENTS, + + MMAL_PARAMETER_STATISTICS, /**< MMAL_PARAMETER_STATISTICS_T */ + MMAL_PARAMETER_CORE_STATISTICS, /**< MMAL_PARAMETER_CORE_STATISTICS_T */ + MMAL_PARAMETER_MEM_USAGE, /**< MMAL_PARAMETER_MEM_USAGE_T */ + MMAL_PARAMETER_BUFFER_FLAG_FILTER, /**< MMAL_PARAMETER_UINT32_T */ + MMAL_PARAMETER_SEEK, /**< MMAL_PARAMETER_SEEK_T */ + MMAL_PARAMETER_POWERMON_ENABLE, /**< MMAL_PARAMETER_BOOLEAN_T */ + MMAL_PARAMETER_LOGGING, /**< MMAL_PARAMETER_LOGGING_T */ + MMAL_PARAMETER_SYSTEM_TIME, /**< MMAL_PARAMETER_UINT64_T */ + MMAL_PARAMETER_NO_IMAGE_PADDING /**< MMAL_PARAMETER_BOOLEAN_T */ +}; + +/* camera parameters */ + +enum mmal_parameter_camera_type { + /* 0 */ + /** @ref MMAL_PARAMETER_THUMBNAIL_CONFIG_T */ + MMAL_PARAMETER_THUMBNAIL_CONFIGURATION + = MMAL_PARAMETER_GROUP_CAMERA, + MMAL_PARAMETER_CAPTURE_QUALITY, /**< Unused? */ + MMAL_PARAMETER_ROTATION, /**< @ref MMAL_PARAMETER_INT32_T */ + MMAL_PARAMETER_EXIF_DISABLE, /**< @ref MMAL_PARAMETER_BOOLEAN_T */ + MMAL_PARAMETER_EXIF, /**< @ref MMAL_PARAMETER_EXIF_T */ + MMAL_PARAMETER_AWB_MODE, /**< @ref MMAL_PARAM_AWBMODE_T */ + MMAL_PARAMETER_IMAGE_EFFECT, /**< @ref MMAL_PARAMETER_IMAGEFX_T */ + MMAL_PARAMETER_COLOUR_EFFECT, /**< @ref MMAL_PARAMETER_COLOURFX_T */ + MMAL_PARAMETER_FLICKER_AVOID, /**< @ref MMAL_PARAMETER_FLICKERAVOID_T */ + MMAL_PARAMETER_FLASH, /**< @ref MMAL_PARAMETER_FLASH_T */ + MMAL_PARAMETER_REDEYE, /**< @ref MMAL_PARAMETER_REDEYE_T */ + MMAL_PARAMETER_FOCUS, /**< @ref MMAL_PARAMETER_FOCUS_T */ + MMAL_PARAMETER_FOCAL_LENGTHS, /**< Unused? */ + MMAL_PARAMETER_EXPOSURE_COMP, /**< @ref MMAL_PARAMETER_INT32_T */ + MMAL_PARAMETER_ZOOM, /**< @ref MMAL_PARAMETER_SCALEFACTOR_T */ + MMAL_PARAMETER_MIRROR, /**< @ref MMAL_PARAMETER_MIRROR_T */ + + /* 0x10 */ + MMAL_PARAMETER_CAMERA_NUM, /**< @ref MMAL_PARAMETER_UINT32_T */ + MMAL_PARAMETER_CAPTURE, /**< @ref MMAL_PARAMETER_BOOLEAN_T */ + MMAL_PARAMETER_EXPOSURE_MODE, /**< @ref MMAL_PARAMETER_EXPOSUREMODE_T */ + MMAL_PARAMETER_EXP_METERING_MODE, /**< @ref MMAL_PARAMETER_EXPOSUREMETERINGMODE_T */ + MMAL_PARAMETER_FOCUS_STATUS, /**< @ref MMAL_PARAMETER_FOCUS_STATUS_T */ + MMAL_PARAMETER_CAMERA_CONFIG, /**< @ref MMAL_PARAMETER_CAMERA_CONFIG_T */ + MMAL_PARAMETER_CAPTURE_STATUS, /**< @ref MMAL_PARAMETER_CAPTURE_STATUS_T */ + MMAL_PARAMETER_FACE_TRACK, /**< @ref MMAL_PARAMETER_FACE_TRACK_T */ + MMAL_PARAMETER_DRAW_BOX_FACES_AND_FOCUS, /**< @ref MMAL_PARAMETER_BOOLEAN_T */ + MMAL_PARAMETER_JPEG_Q_FACTOR, /**< @ref MMAL_PARAMETER_UINT32_T */ + MMAL_PARAMETER_FRAME_RATE, /**< @ref MMAL_PARAMETER_FRAME_RATE_T */ + MMAL_PARAMETER_USE_STC, /**< @ref MMAL_PARAMETER_CAMERA_STC_MODE_T */ + MMAL_PARAMETER_CAMERA_INFO, /**< @ref MMAL_PARAMETER_CAMERA_INFO_T */ + MMAL_PARAMETER_VIDEO_STABILISATION, /**< @ref MMAL_PARAMETER_BOOLEAN_T */ + MMAL_PARAMETER_FACE_TRACK_RESULTS, /**< @ref MMAL_PARAMETER_FACE_TRACK_RESULTS_T */ + MMAL_PARAMETER_ENABLE_RAW_CAPTURE, /**< @ref MMAL_PARAMETER_BOOLEAN_T */ + + /* 0x20 */ + MMAL_PARAMETER_DPF_FILE, /**< @ref MMAL_PARAMETER_URI_T */ + MMAL_PARAMETER_ENABLE_DPF_FILE, /**< @ref MMAL_PARAMETER_BOOLEAN_T */ + MMAL_PARAMETER_DPF_FAIL_IS_FATAL, /**< @ref MMAL_PARAMETER_BOOLEAN_T */ + MMAL_PARAMETER_CAPTURE_MODE, /**< @ref MMAL_PARAMETER_CAPTUREMODE_T */ + MMAL_PARAMETER_FOCUS_REGIONS, /**< @ref MMAL_PARAMETER_FOCUS_REGIONS_T */ + MMAL_PARAMETER_INPUT_CROP, /**< @ref MMAL_PARAMETER_INPUT_CROP_T */ + MMAL_PARAMETER_SENSOR_INFORMATION, /**< @ref MMAL_PARAMETER_SENSOR_INFORMATION_T */ + MMAL_PARAMETER_FLASH_SELECT, /**< @ref MMAL_PARAMETER_FLASH_SELECT_T */ + MMAL_PARAMETER_FIELD_OF_VIEW, /**< @ref MMAL_PARAMETER_FIELD_OF_VIEW_T */ + MMAL_PARAMETER_HIGH_DYNAMIC_RANGE, /**< @ref MMAL_PARAMETER_BOOLEAN_T */ + MMAL_PARAMETER_DYNAMIC_RANGE_COMPRESSION, /**< @ref MMAL_PARAMETER_DRC_T */ + MMAL_PARAMETER_ALGORITHM_CONTROL, /**< @ref MMAL_PARAMETER_ALGORITHM_CONTROL_T */ + MMAL_PARAMETER_SHARPNESS, /**< @ref MMAL_PARAMETER_RATIONAL_T */ + MMAL_PARAMETER_CONTRAST, /**< @ref MMAL_PARAMETER_RATIONAL_T */ + MMAL_PARAMETER_BRIGHTNESS, /**< @ref MMAL_PARAMETER_RATIONAL_T */ + MMAL_PARAMETER_SATURATION, /**< @ref MMAL_PARAMETER_RATIONAL_T */ + + /* 0x30 */ + MMAL_PARAMETER_ISO, /**< @ref MMAL_PARAMETER_UINT32_T */ + MMAL_PARAMETER_ANTISHAKE, /**< @ref MMAL_PARAMETER_BOOLEAN_T */ + + /** @ref MMAL_PARAMETER_IMAGEFX_PARAMETERS_T */ + MMAL_PARAMETER_IMAGE_EFFECT_PARAMETERS, + + /** @ref MMAL_PARAMETER_BOOLEAN_T */ + MMAL_PARAMETER_CAMERA_BURST_CAPTURE, + + /** @ref MMAL_PARAMETER_UINT32_T */ + MMAL_PARAMETER_CAMERA_MIN_ISO, + + /** @ref MMAL_PARAMETER_CAMERA_USE_CASE_T */ + MMAL_PARAMETER_CAMERA_USE_CASE, + + /**< @ref MMAL_PARAMETER_BOOLEAN_T */ + MMAL_PARAMETER_CAPTURE_STATS_PASS, + + /** @ref MMAL_PARAMETER_UINT32_T */ + MMAL_PARAMETER_CAMERA_CUSTOM_SENSOR_CONFIG, + + /** @ref MMAL_PARAMETER_BOOLEAN_T */ + MMAL_PARAMETER_ENABLE_REGISTER_FILE, + + /** @ref MMAL_PARAMETER_BOOLEAN_T */ + MMAL_PARAMETER_REGISTER_FAIL_IS_FATAL, + + /** @ref MMAL_PARAMETER_CONFIGFILE_T */ + MMAL_PARAMETER_CONFIGFILE_REGISTERS, + + /** @ref MMAL_PARAMETER_CONFIGFILE_CHUNK_T */ + MMAL_PARAMETER_CONFIGFILE_CHUNK_REGISTERS, + MMAL_PARAMETER_JPEG_ATTACH_LOG, /**< @ref MMAL_PARAMETER_BOOLEAN_T */ + MMAL_PARAMETER_ZERO_SHUTTER_LAG, /**< @ref MMAL_PARAMETER_ZEROSHUTTERLAG_T */ + MMAL_PARAMETER_FPS_RANGE, /**< @ref MMAL_PARAMETER_FPS_RANGE_T */ + MMAL_PARAMETER_CAPTURE_EXPOSURE_COMP, /**< @ref MMAL_PARAMETER_INT32_T */ + + /* 0x40 */ + MMAL_PARAMETER_SW_SHARPEN_DISABLE, /**< @ref MMAL_PARAMETER_BOOLEAN_T */ + MMAL_PARAMETER_FLASH_REQUIRED, /**< @ref MMAL_PARAMETER_BOOLEAN_T */ + MMAL_PARAMETER_SW_SATURATION_DISABLE, /**< @ref MMAL_PARAMETER_BOOLEAN_T */ + MMAL_PARAMETER_SHUTTER_SPEED, /**< Takes a @ref MMAL_PARAMETER_UINT32_T */ + MMAL_PARAMETER_CUSTOM_AWB_GAINS, /**< Takes a @ref MMAL_PARAMETER_AWB_GAINS_T */ +}; + +struct mmal_parameter_rational { + s32 num; /**< Numerator */ + s32 den; /**< Denominator */ +}; + +enum mmal_parameter_camera_config_timestamp_mode { + MMAL_PARAM_TIMESTAMP_MODE_ZERO = 0, /* Always timestamp frames as 0 */ + MMAL_PARAM_TIMESTAMP_MODE_RAW_STC, /* Use the raw STC value + * for the frame timestamp + */ + MMAL_PARAM_TIMESTAMP_MODE_RESET_STC, /* Use the STC timestamp + * but subtract the + * timestamp of the first + * frame sent to give a + * zero based timestamp. + */ +}; + +struct mmal_parameter_fps_range { + /**< Low end of the permitted framerate range */ + struct mmal_parameter_rational fps_low; + /**< High end of the permitted framerate range */ + struct mmal_parameter_rational fps_high; +}; + + +/* camera configuration parameter */ +struct mmal_parameter_camera_config { + /* Parameters for setting up the image pools */ + u32 max_stills_w; /* Max size of stills capture */ + u32 max_stills_h; + u32 stills_yuv422; /* Allow YUV422 stills capture */ + u32 one_shot_stills; /* Continuous or one shot stills captures. */ + + u32 max_preview_video_w; /* Max size of the preview or video + * capture frames + */ + u32 max_preview_video_h; + u32 num_preview_video_frames; + + /** Sets the height of the circular buffer for stills capture. */ + u32 stills_capture_circular_buffer_height; + + /** Allows preview/encode to resume as fast as possible after the stills + * input frame has been received, and then processes the still frame in + * the background whilst preview/encode has resumed. + * Actual mode is controlled by MMAL_PARAMETER_CAPTURE_MODE. + */ + u32 fast_preview_resume; + + /** Selects algorithm for timestamping frames if + * there is no clock component connected. + * enum mmal_parameter_camera_config_timestamp_mode + */ + s32 use_stc_timestamp; +}; + + +enum mmal_parameter_exposuremode { + MMAL_PARAM_EXPOSUREMODE_OFF, + MMAL_PARAM_EXPOSUREMODE_AUTO, + MMAL_PARAM_EXPOSUREMODE_NIGHT, + MMAL_PARAM_EXPOSUREMODE_NIGHTPREVIEW, + MMAL_PARAM_EXPOSUREMODE_BACKLIGHT, + MMAL_PARAM_EXPOSUREMODE_SPOTLIGHT, + MMAL_PARAM_EXPOSUREMODE_SPORTS, + MMAL_PARAM_EXPOSUREMODE_SNOW, + MMAL_PARAM_EXPOSUREMODE_BEACH, + MMAL_PARAM_EXPOSUREMODE_VERYLONG, + MMAL_PARAM_EXPOSUREMODE_FIXEDFPS, + MMAL_PARAM_EXPOSUREMODE_ANTISHAKE, + MMAL_PARAM_EXPOSUREMODE_FIREWORKS, +}; + +enum mmal_parameter_exposuremeteringmode { + MMAL_PARAM_EXPOSUREMETERINGMODE_AVERAGE, + MMAL_PARAM_EXPOSUREMETERINGMODE_SPOT, + MMAL_PARAM_EXPOSUREMETERINGMODE_BACKLIT, + MMAL_PARAM_EXPOSUREMETERINGMODE_MATRIX, +}; + +enum mmal_parameter_awbmode { + MMAL_PARAM_AWBMODE_OFF, + MMAL_PARAM_AWBMODE_AUTO, + MMAL_PARAM_AWBMODE_SUNLIGHT, + MMAL_PARAM_AWBMODE_CLOUDY, + MMAL_PARAM_AWBMODE_SHADE, + MMAL_PARAM_AWBMODE_TUNGSTEN, + MMAL_PARAM_AWBMODE_FLUORESCENT, + MMAL_PARAM_AWBMODE_INCANDESCENT, + MMAL_PARAM_AWBMODE_FLASH, + MMAL_PARAM_AWBMODE_HORIZON, +}; + +enum mmal_parameter_imagefx { + MMAL_PARAM_IMAGEFX_NONE, + MMAL_PARAM_IMAGEFX_NEGATIVE, + MMAL_PARAM_IMAGEFX_SOLARIZE, + MMAL_PARAM_IMAGEFX_POSTERIZE, + MMAL_PARAM_IMAGEFX_WHITEBOARD, + MMAL_PARAM_IMAGEFX_BLACKBOARD, + MMAL_PARAM_IMAGEFX_SKETCH, + MMAL_PARAM_IMAGEFX_DENOISE, + MMAL_PARAM_IMAGEFX_EMBOSS, + MMAL_PARAM_IMAGEFX_OILPAINT, + MMAL_PARAM_IMAGEFX_HATCH, + MMAL_PARAM_IMAGEFX_GPEN, + MMAL_PARAM_IMAGEFX_PASTEL, + MMAL_PARAM_IMAGEFX_WATERCOLOUR, + MMAL_PARAM_IMAGEFX_FILM, + MMAL_PARAM_IMAGEFX_BLUR, + MMAL_PARAM_IMAGEFX_SATURATION, + MMAL_PARAM_IMAGEFX_COLOURSWAP, + MMAL_PARAM_IMAGEFX_WASHEDOUT, + MMAL_PARAM_IMAGEFX_POSTERISE, + MMAL_PARAM_IMAGEFX_COLOURPOINT, + MMAL_PARAM_IMAGEFX_COLOURBALANCE, + MMAL_PARAM_IMAGEFX_CARTOON, +}; + +enum MMAL_PARAM_FLICKERAVOID_T { + MMAL_PARAM_FLICKERAVOID_OFF, + MMAL_PARAM_FLICKERAVOID_AUTO, + MMAL_PARAM_FLICKERAVOID_50HZ, + MMAL_PARAM_FLICKERAVOID_60HZ, + MMAL_PARAM_FLICKERAVOID_MAX = 0x7FFFFFFF +}; + +struct mmal_parameter_awbgains { + struct mmal_parameter_rational r_gain; /**< Red gain */ + struct mmal_parameter_rational b_gain; /**< Blue gain */ +}; + +/** Manner of video rate control */ +enum mmal_parameter_rate_control_mode { + MMAL_VIDEO_RATECONTROL_DEFAULT, + MMAL_VIDEO_RATECONTROL_VARIABLE, + MMAL_VIDEO_RATECONTROL_CONSTANT, + MMAL_VIDEO_RATECONTROL_VARIABLE_SKIP_FRAMES, + MMAL_VIDEO_RATECONTROL_CONSTANT_SKIP_FRAMES +}; + +enum mmal_video_profile { + MMAL_VIDEO_PROFILE_H263_BASELINE, + MMAL_VIDEO_PROFILE_H263_H320CODING, + MMAL_VIDEO_PROFILE_H263_BACKWARDCOMPATIBLE, + MMAL_VIDEO_PROFILE_H263_ISWV2, + MMAL_VIDEO_PROFILE_H263_ISWV3, + MMAL_VIDEO_PROFILE_H263_HIGHCOMPRESSION, + MMAL_VIDEO_PROFILE_H263_INTERNET, + MMAL_VIDEO_PROFILE_H263_INTERLACE, + MMAL_VIDEO_PROFILE_H263_HIGHLATENCY, + MMAL_VIDEO_PROFILE_MP4V_SIMPLE, + MMAL_VIDEO_PROFILE_MP4V_SIMPLESCALABLE, + MMAL_VIDEO_PROFILE_MP4V_CORE, + MMAL_VIDEO_PROFILE_MP4V_MAIN, + MMAL_VIDEO_PROFILE_MP4V_NBIT, + MMAL_VIDEO_PROFILE_MP4V_SCALABLETEXTURE, + MMAL_VIDEO_PROFILE_MP4V_SIMPLEFACE, + MMAL_VIDEO_PROFILE_MP4V_SIMPLEFBA, + MMAL_VIDEO_PROFILE_MP4V_BASICANIMATED, + MMAL_VIDEO_PROFILE_MP4V_HYBRID, + MMAL_VIDEO_PROFILE_MP4V_ADVANCEDREALTIME, + MMAL_VIDEO_PROFILE_MP4V_CORESCALABLE, + MMAL_VIDEO_PROFILE_MP4V_ADVANCEDCODING, + MMAL_VIDEO_PROFILE_MP4V_ADVANCEDCORE, + MMAL_VIDEO_PROFILE_MP4V_ADVANCEDSCALABLE, + MMAL_VIDEO_PROFILE_MP4V_ADVANCEDSIMPLE, + MMAL_VIDEO_PROFILE_H264_BASELINE, + MMAL_VIDEO_PROFILE_H264_MAIN, + MMAL_VIDEO_PROFILE_H264_EXTENDED, + MMAL_VIDEO_PROFILE_H264_HIGH, + MMAL_VIDEO_PROFILE_H264_HIGH10, + MMAL_VIDEO_PROFILE_H264_HIGH422, + MMAL_VIDEO_PROFILE_H264_HIGH444, + MMAL_VIDEO_PROFILE_H264_CONSTRAINED_BASELINE, + MMAL_VIDEO_PROFILE_DUMMY = 0x7FFFFFFF +}; + +enum mmal_video_level { + MMAL_VIDEO_LEVEL_H263_10, + MMAL_VIDEO_LEVEL_H263_20, + MMAL_VIDEO_LEVEL_H263_30, + MMAL_VIDEO_LEVEL_H263_40, + MMAL_VIDEO_LEVEL_H263_45, + MMAL_VIDEO_LEVEL_H263_50, + MMAL_VIDEO_LEVEL_H263_60, + MMAL_VIDEO_LEVEL_H263_70, + MMAL_VIDEO_LEVEL_MP4V_0, + MMAL_VIDEO_LEVEL_MP4V_0b, + MMAL_VIDEO_LEVEL_MP4V_1, + MMAL_VIDEO_LEVEL_MP4V_2, + MMAL_VIDEO_LEVEL_MP4V_3, + MMAL_VIDEO_LEVEL_MP4V_4, + MMAL_VIDEO_LEVEL_MP4V_4a, + MMAL_VIDEO_LEVEL_MP4V_5, + MMAL_VIDEO_LEVEL_MP4V_6, + MMAL_VIDEO_LEVEL_H264_1, + MMAL_VIDEO_LEVEL_H264_1b, + MMAL_VIDEO_LEVEL_H264_11, + MMAL_VIDEO_LEVEL_H264_12, + MMAL_VIDEO_LEVEL_H264_13, + MMAL_VIDEO_LEVEL_H264_2, + MMAL_VIDEO_LEVEL_H264_21, + MMAL_VIDEO_LEVEL_H264_22, + MMAL_VIDEO_LEVEL_H264_3, + MMAL_VIDEO_LEVEL_H264_31, + MMAL_VIDEO_LEVEL_H264_32, + MMAL_VIDEO_LEVEL_H264_4, + MMAL_VIDEO_LEVEL_H264_41, + MMAL_VIDEO_LEVEL_H264_42, + MMAL_VIDEO_LEVEL_H264_5, + MMAL_VIDEO_LEVEL_H264_51, + MMAL_VIDEO_LEVEL_DUMMY = 0x7FFFFFFF +}; + +struct mmal_parameter_video_profile { + enum mmal_video_profile profile; + enum mmal_video_level level; +}; + +/* video parameters */ + +enum mmal_parameter_video_type { + /** @ref MMAL_DISPLAYREGION_T */ + MMAL_PARAMETER_DISPLAYREGION = MMAL_PARAMETER_GROUP_VIDEO, + + /** @ref MMAL_PARAMETER_VIDEO_PROFILE_T */ + MMAL_PARAMETER_SUPPORTED_PROFILES, + + /** @ref MMAL_PARAMETER_VIDEO_PROFILE_T */ + MMAL_PARAMETER_PROFILE, + + /** @ref MMAL_PARAMETER_UINT32_T */ + MMAL_PARAMETER_INTRAPERIOD, + + /** @ref MMAL_PARAMETER_VIDEO_RATECONTROL_T */ + MMAL_PARAMETER_RATECONTROL, + + /** @ref MMAL_PARAMETER_VIDEO_NALUNITFORMAT_T */ + MMAL_PARAMETER_NALUNITFORMAT, + + /** @ref MMAL_PARAMETER_BOOLEAN_T */ + MMAL_PARAMETER_MINIMISE_FRAGMENTATION, + + /** @ref MMAL_PARAMETER_UINT32_T. + * Setting the value to zero resets to the default (one slice per frame). + */ + MMAL_PARAMETER_MB_ROWS_PER_SLICE, + + /** @ref MMAL_PARAMETER_VIDEO_LEVEL_EXTENSION_T */ + MMAL_PARAMETER_VIDEO_LEVEL_EXTENSION, + + /** @ref MMAL_PARAMETER_VIDEO_EEDE_ENABLE_T */ + MMAL_PARAMETER_VIDEO_EEDE_ENABLE, + + /** @ref MMAL_PARAMETER_VIDEO_EEDE_LOSSRATE_T */ + MMAL_PARAMETER_VIDEO_EEDE_LOSSRATE, + + /** @ref MMAL_PARAMETER_BOOLEAN_T. Request an I-frame. */ + MMAL_PARAMETER_VIDEO_REQUEST_I_FRAME, + /** @ref MMAL_PARAMETER_VIDEO_INTRA_REFRESH_T */ + MMAL_PARAMETER_VIDEO_INTRA_REFRESH, + + /** @ref MMAL_PARAMETER_BOOLEAN_T. */ + MMAL_PARAMETER_VIDEO_IMMUTABLE_INPUT, + + /** @ref MMAL_PARAMETER_UINT32_T. Run-time bit rate control */ + MMAL_PARAMETER_VIDEO_BIT_RATE, + + /** @ref MMAL_PARAMETER_FRAME_RATE_T */ + MMAL_PARAMETER_VIDEO_FRAME_RATE, + + /** @ref MMAL_PARAMETER_UINT32_T. */ + MMAL_PARAMETER_VIDEO_ENCODE_MIN_QUANT, + + /** @ref MMAL_PARAMETER_UINT32_T. */ + MMAL_PARAMETER_VIDEO_ENCODE_MAX_QUANT, + + /** @ref MMAL_PARAMETER_VIDEO_ENCODE_RC_MODEL_T. */ + MMAL_PARAMETER_VIDEO_ENCODE_RC_MODEL, + + MMAL_PARAMETER_EXTRA_BUFFERS, /**< @ref MMAL_PARAMETER_UINT32_T. */ + /** @ref MMAL_PARAMETER_UINT32_T. + * Changing this parameter from the default can reduce frame rate + * because image buffers need to be re-pitched. + */ + MMAL_PARAMETER_VIDEO_ALIGN_HORIZ, + + /** @ref MMAL_PARAMETER_UINT32_T. + * Changing this parameter from the default can reduce frame rate + * because image buffers need to be re-pitched. + */ + MMAL_PARAMETER_VIDEO_ALIGN_VERT, + + /** @ref MMAL_PARAMETER_BOOLEAN_T. */ + MMAL_PARAMETER_VIDEO_DROPPABLE_PFRAMES, + + /** @ref MMAL_PARAMETER_UINT32_T. */ + MMAL_PARAMETER_VIDEO_ENCODE_INITIAL_QUANT, + + /**< @ref MMAL_PARAMETER_UINT32_T. */ + MMAL_PARAMETER_VIDEO_ENCODE_QP_P, + + /**< @ref MMAL_PARAMETER_UINT32_T. */ + MMAL_PARAMETER_VIDEO_ENCODE_RC_SLICE_DQUANT, + + /** @ref MMAL_PARAMETER_UINT32_T */ + MMAL_PARAMETER_VIDEO_ENCODE_FRAME_LIMIT_BITS, + + /** @ref MMAL_PARAMETER_UINT32_T. */ + MMAL_PARAMETER_VIDEO_ENCODE_PEAK_RATE, + + /* H264 specific parameters */ + + /** @ref MMAL_PARAMETER_BOOLEAN_T. */ + MMAL_PARAMETER_VIDEO_ENCODE_H264_DISABLE_CABAC, + + /** @ref MMAL_PARAMETER_BOOLEAN_T. */ + MMAL_PARAMETER_VIDEO_ENCODE_H264_LOW_LATENCY, + + /** @ref MMAL_PARAMETER_BOOLEAN_T. */ + MMAL_PARAMETER_VIDEO_ENCODE_H264_AU_DELIMITERS, + + /** @ref MMAL_PARAMETER_UINT32_T. */ + MMAL_PARAMETER_VIDEO_ENCODE_H264_DEBLOCK_IDC, + + /** @ref MMAL_PARAMETER_VIDEO_ENCODER_H264_MB_INTRA_MODES_T. */ + MMAL_PARAMETER_VIDEO_ENCODE_H264_MB_INTRA_MODE, + + /** @ref MMAL_PARAMETER_BOOLEAN_T */ + MMAL_PARAMETER_VIDEO_ENCODE_HEADER_ON_OPEN, + + /** @ref MMAL_PARAMETER_BOOLEAN_T */ + MMAL_PARAMETER_VIDEO_ENCODE_PRECODE_FOR_QP, + + /** @ref MMAL_PARAMETER_VIDEO_DRM_INIT_INFO_T. */ + MMAL_PARAMETER_VIDEO_DRM_INIT_INFO, + + /** @ref MMAL_PARAMETER_BOOLEAN_T */ + MMAL_PARAMETER_VIDEO_TIMESTAMP_FIFO, + + /** @ref MMAL_PARAMETER_BOOLEAN_T */ + MMAL_PARAMETER_VIDEO_DECODE_ERROR_CONCEALMENT, + + /** @ref MMAL_PARAMETER_VIDEO_DRM_PROTECT_BUFFER_T. */ + MMAL_PARAMETER_VIDEO_DRM_PROTECT_BUFFER, + + /** @ref MMAL_PARAMETER_BYTES_T */ + MMAL_PARAMETER_VIDEO_DECODE_CONFIG_VD3, + + /**< @ref MMAL_PARAMETER_BOOLEAN_T */ + MMAL_PARAMETER_VIDEO_ENCODE_H264_VCL_HRD_PARAMETERS, + + /**< @ref MMAL_PARAMETER_BOOLEAN_T */ + MMAL_PARAMETER_VIDEO_ENCODE_H264_LOW_DELAY_HRD_FLAG, + + /**< @ref MMAL_PARAMETER_BOOLEAN_T */ + MMAL_PARAMETER_VIDEO_ENCODE_INLINE_HEADER +}; + +/** Valid mirror modes */ +enum mmal_parameter_mirror { + MMAL_PARAM_MIRROR_NONE, + MMAL_PARAM_MIRROR_VERTICAL, + MMAL_PARAM_MIRROR_HORIZONTAL, + MMAL_PARAM_MIRROR_BOTH, +}; + +enum mmal_parameter_displaytransform { + MMAL_DISPLAY_ROT0 = 0, + MMAL_DISPLAY_MIRROR_ROT0 = 1, + MMAL_DISPLAY_MIRROR_ROT180 = 2, + MMAL_DISPLAY_ROT180 = 3, + MMAL_DISPLAY_MIRROR_ROT90 = 4, + MMAL_DISPLAY_ROT270 = 5, + MMAL_DISPLAY_ROT90 = 6, + MMAL_DISPLAY_MIRROR_ROT270 = 7, +}; + +enum mmal_parameter_displaymode { + MMAL_DISPLAY_MODE_FILL = 0, + MMAL_DISPLAY_MODE_LETTERBOX = 1, +}; + +enum mmal_parameter_displayset { + MMAL_DISPLAY_SET_NONE = 0, + MMAL_DISPLAY_SET_NUM = 1, + MMAL_DISPLAY_SET_FULLSCREEN = 2, + MMAL_DISPLAY_SET_TRANSFORM = 4, + MMAL_DISPLAY_SET_DEST_RECT = 8, + MMAL_DISPLAY_SET_SRC_RECT = 0x10, + MMAL_DISPLAY_SET_MODE = 0x20, + MMAL_DISPLAY_SET_PIXEL = 0x40, + MMAL_DISPLAY_SET_NOASPECT = 0x80, + MMAL_DISPLAY_SET_LAYER = 0x100, + MMAL_DISPLAY_SET_COPYPROTECT = 0x200, + MMAL_DISPLAY_SET_ALPHA = 0x400, +}; + +struct mmal_parameter_displayregion { + /** Bitfield that indicates which fields are set and should be + * used. All other fields will maintain their current value. + * \ref MMAL_DISPLAYSET_T defines the bits that can be + * combined. + */ + u32 set; + + /** Describes the display output device, with 0 typically + * being a directly connected LCD display. The actual values + * will depend on the hardware. Code using hard-wired numbers + * (e.g. 2) is certain to fail. + */ + + u32 display_num; + /** Indicates that we are using the full device screen area, + * rather than a window of the display. If zero, then + * dest_rect is used to specify a region of the display to + * use. + */ + + s32 fullscreen; + /** Indicates any rotation or flipping used to map frames onto + * the natural display orientation. + */ + u32 transform; /* enum mmal_parameter_displaytransform */ + + /** Where to display the frame within the screen, if + * fullscreen is zero. + */ + struct vchiq_mmal_rect dest_rect; + + /** Indicates which area of the frame to display. If all + * values are zero, the whole frame will be used. + */ + struct vchiq_mmal_rect src_rect; + + /** If set to non-zero, indicates that any display scaling + * should disregard the aspect ratio of the frame region being + * displayed. + */ + s32 noaspect; + + /** Indicates how the image should be scaled to fit the + * display. \code MMAL_DISPLAY_MODE_FILL \endcode indicates + * that the image should fill the screen by potentially + * cropping the frames. Setting \code mode \endcode to \code + * MMAL_DISPLAY_MODE_LETTERBOX \endcode indicates that all the + * source region should be displayed and black bars added if + * necessary. + */ + u32 mode; /* enum mmal_parameter_displaymode */ + + /** If non-zero, defines the width of a source pixel relative + * to \code pixel_y \endcode. If zero, then pixels default to + * being square. + */ + u32 pixel_x; + + /** If non-zero, defines the height of a source pixel relative + * to \code pixel_x \endcode. If zero, then pixels default to + * being square. + */ + u32 pixel_y; + + /** Sets the relative depth of the images, with greater values + * being in front of smaller values. + */ + u32 layer; + + /** Set to non-zero to ensure copy protection is used on + * output. + */ + s32 copyprotect_required; + + /** Level of opacity of the layer, where zero is fully + * transparent and 255 is fully opaque. + */ + u32 alpha; +}; + +#define MMAL_MAX_IMAGEFX_PARAMETERS 5 + +struct mmal_parameter_imagefx_parameters { + enum mmal_parameter_imagefx effect; + u32 num_effect_params; + u32 effect_parameter[MMAL_MAX_IMAGEFX_PARAMETERS]; +}; --- linux-raspi2-4.2.0.orig/drivers/media/platform/bcm2835/mmal-vchiq.c +++ linux-raspi2-4.2.0/drivers/media/platform/bcm2835/mmal-vchiq.c @@ -0,0 +1,1916 @@ +/* + * Broadcom BM2835 V4L2 driver + * + * Copyright © 2013 Raspberry Pi (Trading) Ltd. + * + * This file is subject to the terms and conditions of the GNU General Public + * License. See the file COPYING in the main directory of this archive + * for more details. + * + * Authors: Vincent Sanders + * Dave Stevenson + * Simon Mellor + * Luke Diamand + * + * V4L2 driver MMAL vchiq interface code + */ + +#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "mmal-common.h" +#include "mmal-vchiq.h" +#include "mmal-msg.h" + +#define USE_VCHIQ_ARM +#include "interface/vchi/vchi.h" + +/* maximum number of components supported */ +#define VCHIQ_MMAL_MAX_COMPONENTS 4 + +/*#define FULL_MSG_DUMP 1*/ + +#ifdef DEBUG +static const char *const msg_type_names[] = { + "UNKNOWN", + "QUIT", + "SERVICE_CLOSED", + "GET_VERSION", + "COMPONENT_CREATE", + "COMPONENT_DESTROY", + "COMPONENT_ENABLE", + "COMPONENT_DISABLE", + "PORT_INFO_GET", + "PORT_INFO_SET", + "PORT_ACTION", + "BUFFER_FROM_HOST", + "BUFFER_TO_HOST", + "GET_STATS", + "PORT_PARAMETER_SET", + "PORT_PARAMETER_GET", + "EVENT_TO_HOST", + "GET_CORE_STATS_FOR_PORT", + "OPAQUE_ALLOCATOR", + "CONSUME_MEM", + "LMK", + "OPAQUE_ALLOCATOR_DESC", + "DRM_GET_LHS32", + "DRM_GET_TIME", + "BUFFER_FROM_HOST_ZEROLEN", + "PORT_FLUSH", + "HOST_LOG", +}; +#endif + +static const char *const port_action_type_names[] = { + "UNKNOWN", + "ENABLE", + "DISABLE", + "FLUSH", + "CONNECT", + "DISCONNECT", + "SET_REQUIREMENTS", +}; + +#if defined(DEBUG) +#if defined(FULL_MSG_DUMP) +#define DBG_DUMP_MSG(MSG, MSG_LEN, TITLE) \ + do { \ + pr_debug(TITLE" type:%s(%d) length:%d\n", \ + msg_type_names[(MSG)->h.type], \ + (MSG)->h.type, (MSG_LEN)); \ + print_hex_dump(KERN_DEBUG, "<h.type], \ + (MSG)->h.type, (MSG_LEN)); \ + } +#endif +#else +#define DBG_DUMP_MSG(MSG, MSG_LEN, TITLE) +#endif + +/* normal message context */ +struct mmal_msg_context { + union { + struct { + /* work struct for defered callback - must come first */ + struct work_struct work; + /* mmal instance */ + struct vchiq_mmal_instance *instance; + /* mmal port */ + struct vchiq_mmal_port *port; + /* actual buffer used to store bulk reply */ + struct mmal_buffer *buffer; + /* amount of buffer used */ + unsigned long buffer_used; + /* MMAL buffer flags */ + u32 mmal_flags; + /* Presentation and Decode timestamps */ + s64 pts; + s64 dts; + + int status; /* context status */ + + } bulk; /* bulk data */ + + struct { + /* message handle to release */ + VCHI_HELD_MSG_T msg_handle; + /* pointer to received message */ + struct mmal_msg *msg; + /* received message length */ + u32 msg_len; + /* completion upon reply */ + struct completion cmplt; + } sync; /* synchronous response */ + } u; + +}; + +struct vchiq_mmal_instance { + VCHI_SERVICE_HANDLE_T handle; + + /* ensure serialised access to service */ + struct mutex vchiq_mutex; + + /* ensure serialised access to bulk operations */ + struct mutex bulk_mutex; + + /* vmalloc page to receive scratch bulk xfers into */ + void *bulk_scratch; + + /* component to use next */ + int component_idx; + struct vchiq_mmal_component component[VCHIQ_MMAL_MAX_COMPONENTS]; +}; + +static struct mmal_msg_context *get_msg_context(struct vchiq_mmal_instance + *instance) +{ + struct mmal_msg_context *msg_context; + + /* todo: should this be allocated from a pool to avoid kmalloc */ + msg_context = kmalloc(sizeof(*msg_context), GFP_KERNEL); + memset(msg_context, 0, sizeof(*msg_context)); + + return msg_context; +} + +static void release_msg_context(struct mmal_msg_context *msg_context) +{ + kfree(msg_context); +} + +/* deals with receipt of event to host message */ +static void event_to_host_cb(struct vchiq_mmal_instance *instance, + struct mmal_msg *msg, u32 msg_len) +{ + pr_debug("unhandled event\n"); + pr_debug("component:%p port type:%d num:%d cmd:0x%x length:%d\n", + msg->u.event_to_host.client_component, + msg->u.event_to_host.port_type, + msg->u.event_to_host.port_num, + msg->u.event_to_host.cmd, msg->u.event_to_host.length); +} + +/* workqueue scheduled callback + * + * we do this because it is important we do not call any other vchiq + * sync calls from witin the message delivery thread + */ +static void buffer_work_cb(struct work_struct *work) +{ + struct mmal_msg_context *msg_context = (struct mmal_msg_context *)work; + + msg_context->u.bulk.port->buffer_cb(msg_context->u.bulk.instance, + msg_context->u.bulk.port, + msg_context->u.bulk.status, + msg_context->u.bulk.buffer, + msg_context->u.bulk.buffer_used, + msg_context->u.bulk.mmal_flags, + msg_context->u.bulk.dts, + msg_context->u.bulk.pts); + + /* release message context */ + release_msg_context(msg_context); +} + +/* enqueue a bulk receive for a given message context */ +static int bulk_receive(struct vchiq_mmal_instance *instance, + struct mmal_msg *msg, + struct mmal_msg_context *msg_context) +{ + unsigned long rd_len; + unsigned long flags = 0; + int ret; + + /* bulk mutex stops other bulk operations while we have a + * receive in progress - released in callback + */ + ret = mutex_lock_interruptible(&instance->bulk_mutex); + if (ret != 0) + return ret; + + rd_len = msg->u.buffer_from_host.buffer_header.length; + + /* take buffer from queue */ + spin_lock_irqsave(&msg_context->u.bulk.port->slock, flags); + if (list_empty(&msg_context->u.bulk.port->buffers)) { + spin_unlock_irqrestore(&msg_context->u.bulk.port->slock, flags); + pr_err("buffer list empty trying to submit bulk receive\n"); + + /* todo: this is a serious error, we should never have + * commited a buffer_to_host operation to the mmal + * port without the buffer to back it up (underflow + * handling) and there is no obvious way to deal with + * this - how is the mmal servie going to react when + * we fail to do the xfer and reschedule a buffer when + * it arrives? perhaps a starved flag to indicate a + * waiting bulk receive? + */ + + mutex_unlock(&instance->bulk_mutex); + + return -EINVAL; + } + + msg_context->u.bulk.buffer = + list_entry(msg_context->u.bulk.port->buffers.next, + struct mmal_buffer, list); + list_del(&msg_context->u.bulk.buffer->list); + + spin_unlock_irqrestore(&msg_context->u.bulk.port->slock, flags); + + /* ensure we do not overrun the available buffer */ + if (rd_len > msg_context->u.bulk.buffer->buffer_size) { + rd_len = msg_context->u.bulk.buffer->buffer_size; + pr_warn("short read as not enough receive buffer space\n"); + /* todo: is this the correct response, what happens to + * the rest of the message data? + */ + } + + /* store length */ + msg_context->u.bulk.buffer_used = rd_len; + msg_context->u.bulk.mmal_flags = + msg->u.buffer_from_host.buffer_header.flags; + msg_context->u.bulk.dts = msg->u.buffer_from_host.buffer_header.dts; + msg_context->u.bulk.pts = msg->u.buffer_from_host.buffer_header.pts; + + // only need to flush L1 cache here, as VCHIQ takes care of the L2 + // cache. + __cpuc_flush_dcache_area(msg_context->u.bulk.buffer->buffer, rd_len); + + /* queue the bulk submission */ + vchi_service_use(instance->handle); + ret = vchi_bulk_queue_receive(instance->handle, + msg_context->u.bulk.buffer->buffer, + /* Actual receive needs to be a multiple + * of 4 bytes + */ + (rd_len + 3) & ~3, + VCHI_FLAGS_CALLBACK_WHEN_OP_COMPLETE | + VCHI_FLAGS_BLOCK_UNTIL_QUEUED, + msg_context); + + vchi_service_release(instance->handle); + + if (ret != 0) { + /* callback will not be clearing the mutex */ + mutex_unlock(&instance->bulk_mutex); + } + + return ret; +} + +/* enque a dummy bulk receive for a given message context */ +static int dummy_bulk_receive(struct vchiq_mmal_instance *instance, + struct mmal_msg_context *msg_context) +{ + int ret; + + /* bulk mutex stops other bulk operations while we have a + * receive in progress - released in callback + */ + ret = mutex_lock_interruptible(&instance->bulk_mutex); + if (ret != 0) + return ret; + + /* zero length indicates this was a dummy transfer */ + msg_context->u.bulk.buffer_used = 0; + + /* queue the bulk submission */ + vchi_service_use(instance->handle); + + ret = vchi_bulk_queue_receive(instance->handle, + instance->bulk_scratch, + 8, + VCHI_FLAGS_CALLBACK_WHEN_OP_COMPLETE | + VCHI_FLAGS_BLOCK_UNTIL_QUEUED, + msg_context); + + vchi_service_release(instance->handle); + + if (ret != 0) { + /* callback will not be clearing the mutex */ + mutex_unlock(&instance->bulk_mutex); + } + + return ret; +} + +/* data in message, memcpy from packet into output buffer */ +static int inline_receive(struct vchiq_mmal_instance *instance, + struct mmal_msg *msg, + struct mmal_msg_context *msg_context) +{ + unsigned long flags = 0; + + /* take buffer from queue */ + spin_lock_irqsave(&msg_context->u.bulk.port->slock, flags); + if (list_empty(&msg_context->u.bulk.port->buffers)) { + spin_unlock_irqrestore(&msg_context->u.bulk.port->slock, flags); + pr_err("buffer list empty trying to receive inline\n"); + + /* todo: this is a serious error, we should never have + * commited a buffer_to_host operation to the mmal + * port without the buffer to back it up (with + * underflow handling) and there is no obvious way to + * deal with this. Less bad than the bulk case as we + * can just drop this on the floor but...unhelpful + */ + return -EINVAL; + } + + msg_context->u.bulk.buffer = + list_entry(msg_context->u.bulk.port->buffers.next, + struct mmal_buffer, list); + list_del(&msg_context->u.bulk.buffer->list); + + spin_unlock_irqrestore(&msg_context->u.bulk.port->slock, flags); + + memcpy(msg_context->u.bulk.buffer->buffer, + msg->u.buffer_from_host.short_data, + msg->u.buffer_from_host.payload_in_message); + + msg_context->u.bulk.buffer_used = + msg->u.buffer_from_host.payload_in_message; + + return 0; +} + +/* queue the buffer availability with MMAL_MSG_TYPE_BUFFER_FROM_HOST */ +static int +buffer_from_host(struct vchiq_mmal_instance *instance, + struct vchiq_mmal_port *port, struct mmal_buffer *buf) +{ + struct mmal_msg_context *msg_context; + struct mmal_msg m; + int ret; + + pr_debug("instance:%p buffer:%p\n", instance->handle, buf); + + /* bulk mutex stops other bulk operations while we + * have a receive in progress + */ + if (mutex_lock_interruptible(&instance->bulk_mutex)) + return -EINTR; + + /* get context */ + msg_context = get_msg_context(instance); + if (msg_context == NULL) + return -ENOMEM; + + /* store bulk message context for when data arrives */ + msg_context->u.bulk.instance = instance; + msg_context->u.bulk.port = port; + msg_context->u.bulk.buffer = NULL; /* not valid until bulk xfer */ + msg_context->u.bulk.buffer_used = 0; + + /* initialise work structure ready to schedule callback */ + INIT_WORK(&msg_context->u.bulk.work, buffer_work_cb); + + /* prep the buffer from host message */ + memset(&m, 0xbc, sizeof(m)); /* just to make debug clearer */ + + m.h.type = MMAL_MSG_TYPE_BUFFER_FROM_HOST; + m.h.magic = MMAL_MAGIC; + m.h.context = msg_context; + m.h.status = 0; + + /* drvbuf is our private data passed back */ + m.u.buffer_from_host.drvbuf.magic = MMAL_MAGIC; + m.u.buffer_from_host.drvbuf.component_handle = port->component->handle; + m.u.buffer_from_host.drvbuf.port_handle = port->handle; + m.u.buffer_from_host.drvbuf.client_context = msg_context; + + /* buffer header */ + m.u.buffer_from_host.buffer_header.cmd = 0; + m.u.buffer_from_host.buffer_header.data = buf->buffer; + m.u.buffer_from_host.buffer_header.alloc_size = buf->buffer_size; + m.u.buffer_from_host.buffer_header.length = 0; /* nothing used yet */ + m.u.buffer_from_host.buffer_header.offset = 0; /* no offset */ + m.u.buffer_from_host.buffer_header.flags = 0; /* no flags */ + m.u.buffer_from_host.buffer_header.pts = MMAL_TIME_UNKNOWN; + m.u.buffer_from_host.buffer_header.dts = MMAL_TIME_UNKNOWN; + + /* clear buffer type sepecific data */ + memset(&m.u.buffer_from_host.buffer_header_type_specific, 0, + sizeof(m.u.buffer_from_host.buffer_header_type_specific)); + + /* no payload in message */ + m.u.buffer_from_host.payload_in_message = 0; + + vchi_service_use(instance->handle); + + ret = vchi_msg_queue(instance->handle, &m, + sizeof(struct mmal_msg_header) + + sizeof(m.u.buffer_from_host), + VCHI_FLAGS_BLOCK_UNTIL_QUEUED, NULL); + + if (ret != 0) { + release_msg_context(msg_context); + /* todo: is this correct error value? */ + } + + vchi_service_release(instance->handle); + + mutex_unlock(&instance->bulk_mutex); + + return ret; +} + +/* submit a buffer to the mmal sevice + * + * the buffer_from_host uses size data from the ports next available + * mmal_buffer and deals with there being no buffer available by + * incrementing the underflow for later + */ +static int port_buffer_from_host(struct vchiq_mmal_instance *instance, + struct vchiq_mmal_port *port) +{ + int ret; + struct mmal_buffer *buf; + unsigned long flags = 0; + + if (!port->enabled) + return -EINVAL; + + /* peek buffer from queue */ + spin_lock_irqsave(&port->slock, flags); + if (list_empty(&port->buffers)) { + port->buffer_underflow++; + spin_unlock_irqrestore(&port->slock, flags); + return -ENOSPC; + } + + buf = list_entry(port->buffers.next, struct mmal_buffer, list); + + spin_unlock_irqrestore(&port->slock, flags); + + /* issue buffer to mmal service */ + ret = buffer_from_host(instance, port, buf); + if (ret) { + pr_err("adding buffer header failed\n"); + /* todo: how should this be dealt with */ + } + + return ret; +} + +/* deals with receipt of buffer to host message */ +static void buffer_to_host_cb(struct vchiq_mmal_instance *instance, + struct mmal_msg *msg, u32 msg_len) +{ + struct mmal_msg_context *msg_context; + + pr_debug("buffer_to_host_cb: instance:%p msg:%p msg_len:%d\n", + instance, msg, msg_len); + + if (msg->u.buffer_from_host.drvbuf.magic == MMAL_MAGIC) { + msg_context = msg->u.buffer_from_host.drvbuf.client_context; + } else { + pr_err("MMAL_MSG_TYPE_BUFFER_TO_HOST with bad magic\n"); + return; + } + + if (msg->h.status != MMAL_MSG_STATUS_SUCCESS) { + /* message reception had an error */ + pr_warn("error %d in reply\n", msg->h.status); + + msg_context->u.bulk.status = msg->h.status; + + } else if (msg->u.buffer_from_host.buffer_header.length == 0) { + /* empty buffer */ + if (msg->u.buffer_from_host.buffer_header.flags & + MMAL_BUFFER_HEADER_FLAG_EOS) { + msg_context->u.bulk.status = + dummy_bulk_receive(instance, msg_context); + if (msg_context->u.bulk.status == 0) + return; /* successful bulk submission, bulk + * completion will trigger callback + */ + } else { + /* do callback with empty buffer - not EOS though */ + msg_context->u.bulk.status = 0; + msg_context->u.bulk.buffer_used = 0; + } + } else if (msg->u.buffer_from_host.payload_in_message == 0) { + /* data is not in message, queue a bulk receive */ + msg_context->u.bulk.status = + bulk_receive(instance, msg, msg_context); + if (msg_context->u.bulk.status == 0) + return; /* successful bulk submission, bulk + * completion will trigger callback + */ + + /* failed to submit buffer, this will end badly */ + pr_err("error %d on bulk submission\n", + msg_context->u.bulk.status); + + } else if (msg->u.buffer_from_host.payload_in_message <= + MMAL_VC_SHORT_DATA) { + /* data payload within message */ + msg_context->u.bulk.status = inline_receive(instance, msg, + msg_context); + } else { + pr_err("message with invalid short payload\n"); + + /* signal error */ + msg_context->u.bulk.status = -EINVAL; + msg_context->u.bulk.buffer_used = + msg->u.buffer_from_host.payload_in_message; + } + + /* replace the buffer header */ + port_buffer_from_host(instance, msg_context->u.bulk.port); + + /* schedule the port callback */ + schedule_work(&msg_context->u.bulk.work); +} + +static void bulk_receive_cb(struct vchiq_mmal_instance *instance, + struct mmal_msg_context *msg_context) +{ + /* bulk receive operation complete */ + mutex_unlock(&msg_context->u.bulk.instance->bulk_mutex); + + /* replace the buffer header */ + port_buffer_from_host(msg_context->u.bulk.instance, + msg_context->u.bulk.port); + + msg_context->u.bulk.status = 0; + + /* schedule the port callback */ + schedule_work(&msg_context->u.bulk.work); +} + +static void bulk_abort_cb(struct vchiq_mmal_instance *instance, + struct mmal_msg_context *msg_context) +{ + pr_err("%s: bulk ABORTED msg_context:%p\n", __func__, msg_context); + + /* bulk receive operation complete */ + mutex_unlock(&msg_context->u.bulk.instance->bulk_mutex); + + /* replace the buffer header */ + port_buffer_from_host(msg_context->u.bulk.instance, + msg_context->u.bulk.port); + + msg_context->u.bulk.status = -EINTR; + + schedule_work(&msg_context->u.bulk.work); +} + +/* incoming event service callback */ +static void service_callback(void *param, + const VCHI_CALLBACK_REASON_T reason, + void *bulk_ctx) +{ + struct vchiq_mmal_instance *instance = param; + int status; + u32 msg_len; + struct mmal_msg *msg; + VCHI_HELD_MSG_T msg_handle; + + if (!instance) { + pr_err("Message callback passed NULL instance\n"); + return; + } + + switch (reason) { + case VCHI_CALLBACK_MSG_AVAILABLE: + status = vchi_msg_hold(instance->handle, (void **)&msg, + &msg_len, VCHI_FLAGS_NONE, &msg_handle); + if (status) { + pr_err("Unable to dequeue a message (%d)\n", status); + break; + } + + DBG_DUMP_MSG(msg, msg_len, "<<< reply message"); + + /* handling is different for buffer messages */ + switch (msg->h.type) { + + case MMAL_MSG_TYPE_BUFFER_FROM_HOST: + vchi_held_msg_release(&msg_handle); + break; + + case MMAL_MSG_TYPE_EVENT_TO_HOST: + event_to_host_cb(instance, msg, msg_len); + vchi_held_msg_release(&msg_handle); + + break; + + case MMAL_MSG_TYPE_BUFFER_TO_HOST: + buffer_to_host_cb(instance, msg, msg_len); + vchi_held_msg_release(&msg_handle); + break; + + default: + /* messages dependant on header context to complete */ + + /* todo: the msg.context really ought to be sanity + * checked before we just use it, afaict it comes back + * and is used raw from the videocore. Perhaps it + * should be verified the address lies in the kernel + * address space. + */ + if (msg->h.context == NULL) { + pr_err("received message context was null!\n"); + vchi_held_msg_release(&msg_handle); + break; + } + + /* fill in context values */ + msg->h.context->u.sync.msg_handle = msg_handle; + msg->h.context->u.sync.msg = msg; + msg->h.context->u.sync.msg_len = msg_len; + + /* todo: should this check (completion_done() + * == 1) for no one waiting? or do we need a + * flag to tell us the completion has been + * interrupted so we can free the message and + * its context. This probably also solves the + * message arriving after interruption todo + * below + */ + + /* complete message so caller knows it happened */ + complete(&msg->h.context->u.sync.cmplt); + break; + } + + break; + + case VCHI_CALLBACK_BULK_RECEIVED: + bulk_receive_cb(instance, bulk_ctx); + break; + + case VCHI_CALLBACK_BULK_RECEIVE_ABORTED: + bulk_abort_cb(instance, bulk_ctx); + break; + + case VCHI_CALLBACK_SERVICE_CLOSED: + /* TODO: consider if this requires action if received when + * driver is not explicitly closing the service + */ + break; + + default: + pr_err("Received unhandled message reason %d\n", reason); + break; + } +} + +static int send_synchronous_mmal_msg(struct vchiq_mmal_instance *instance, + struct mmal_msg *msg, + unsigned int payload_len, + struct mmal_msg **msg_out, + VCHI_HELD_MSG_T *msg_handle_out) +{ + struct mmal_msg_context msg_context; + int ret; + + /* payload size must not cause message to exceed max size */ + if (payload_len > + (MMAL_MSG_MAX_SIZE - sizeof(struct mmal_msg_header))) { + pr_err("payload length %d exceeds max:%d\n", payload_len, + (MMAL_MSG_MAX_SIZE - sizeof(struct mmal_msg_header))); + return -EINVAL; + } + + init_completion(&msg_context.u.sync.cmplt); + + msg->h.magic = MMAL_MAGIC; + msg->h.context = &msg_context; + msg->h.status = 0; + + DBG_DUMP_MSG(msg, (sizeof(struct mmal_msg_header) + payload_len), + ">>> sync message"); + + vchi_service_use(instance->handle); + + ret = vchi_msg_queue(instance->handle, + msg, + sizeof(struct mmal_msg_header) + payload_len, + VCHI_FLAGS_BLOCK_UNTIL_QUEUED, NULL); + + vchi_service_release(instance->handle); + + if (ret) { + pr_err("error %d queuing message\n", ret); + return ret; + } + + ret = wait_for_completion_timeout(&msg_context.u.sync.cmplt, 3*HZ); + if (ret <= 0) { + pr_err("error %d waiting for sync completion\n", ret); + if (ret == 0) + ret = -ETIME; + /* todo: what happens if the message arrives after aborting */ + return ret; + } + + *msg_out = msg_context.u.sync.msg; + *msg_handle_out = msg_context.u.sync.msg_handle; + + return 0; +} + +static void dump_port_info(struct vchiq_mmal_port *port) +{ + pr_debug("port handle:0x%x enabled:%d\n", port->handle, port->enabled); + + pr_debug("buffer minimum num:%d size:%d align:%d\n", + port->minimum_buffer.num, + port->minimum_buffer.size, port->minimum_buffer.alignment); + + pr_debug("buffer recommended num:%d size:%d align:%d\n", + port->recommended_buffer.num, + port->recommended_buffer.size, + port->recommended_buffer.alignment); + + pr_debug("buffer current values num:%d size:%d align:%d\n", + port->current_buffer.num, + port->current_buffer.size, port->current_buffer.alignment); + + pr_debug("elementry stream: type:%d encoding:0x%x varient:0x%x\n", + port->format.type, + port->format.encoding, port->format.encoding_variant); + + pr_debug(" bitrate:%d flags:0x%x\n", + port->format.bitrate, port->format.flags); + + if (port->format.type == MMAL_ES_TYPE_VIDEO) { + pr_debug + ("es video format: width:%d height:%d colourspace:0x%x\n", + port->es.video.width, port->es.video.height, + port->es.video.color_space); + + pr_debug(" : crop xywh %d,%d,%d,%d\n", + port->es.video.crop.x, + port->es.video.crop.y, + port->es.video.crop.width, port->es.video.crop.height); + pr_debug(" : framerate %d/%d aspect %d/%d\n", + port->es.video.frame_rate.num, + port->es.video.frame_rate.den, + port->es.video.par.num, port->es.video.par.den); + } +} + +static void port_to_mmal_msg(struct vchiq_mmal_port *port, struct mmal_port *p) +{ + + /* todo do readonly fields need setting at all? */ + p->type = port->type; + p->index = port->index; + p->index_all = 0; + p->is_enabled = port->enabled; + p->buffer_num_min = port->minimum_buffer.num; + p->buffer_size_min = port->minimum_buffer.size; + p->buffer_alignment_min = port->minimum_buffer.alignment; + p->buffer_num_recommended = port->recommended_buffer.num; + p->buffer_size_recommended = port->recommended_buffer.size; + + /* only three writable fields in a port */ + p->buffer_num = port->current_buffer.num; + p->buffer_size = port->current_buffer.size; + p->userdata = port; +} + +static int port_info_set(struct vchiq_mmal_instance *instance, + struct vchiq_mmal_port *port) +{ + int ret; + struct mmal_msg m; + struct mmal_msg *rmsg; + VCHI_HELD_MSG_T rmsg_handle; + + pr_debug("setting port info port %p\n", port); + if (!port) + return -1; + dump_port_info(port); + + m.h.type = MMAL_MSG_TYPE_PORT_INFO_SET; + + m.u.port_info_set.component_handle = port->component->handle; + m.u.port_info_set.port_type = port->type; + m.u.port_info_set.port_index = port->index; + + port_to_mmal_msg(port, &m.u.port_info_set.port); + + /* elementry stream format setup */ + m.u.port_info_set.format.type = port->format.type; + m.u.port_info_set.format.encoding = port->format.encoding; + m.u.port_info_set.format.encoding_variant = + port->format.encoding_variant; + m.u.port_info_set.format.bitrate = port->format.bitrate; + m.u.port_info_set.format.flags = port->format.flags; + + memcpy(&m.u.port_info_set.es, &port->es, + sizeof(union mmal_es_specific_format)); + + m.u.port_info_set.format.extradata_size = port->format.extradata_size; + memcpy(&m.u.port_info_set.extradata, port->format.extradata, + port->format.extradata_size); + + ret = send_synchronous_mmal_msg(instance, &m, + sizeof(m.u.port_info_set), + &rmsg, &rmsg_handle); + if (ret) + return ret; + + if (rmsg->h.type != MMAL_MSG_TYPE_PORT_INFO_SET) { + /* got an unexpected message type in reply */ + ret = -EINVAL; + goto release_msg; + } + + /* return operation status */ + ret = -rmsg->u.port_info_get_reply.status; + + pr_debug("%s:result:%d component:0x%x port:%d\n", __func__, ret, + port->component->handle, port->handle); + +release_msg: + vchi_held_msg_release(&rmsg_handle); + + return ret; + +} + +/* use port info get message to retrive port information */ +static int port_info_get(struct vchiq_mmal_instance *instance, + struct vchiq_mmal_port *port) +{ + int ret; + struct mmal_msg m; + struct mmal_msg *rmsg; + VCHI_HELD_MSG_T rmsg_handle; + + /* port info time */ + m.h.type = MMAL_MSG_TYPE_PORT_INFO_GET; + m.u.port_info_get.component_handle = port->component->handle; + m.u.port_info_get.port_type = port->type; + m.u.port_info_get.index = port->index; + + ret = send_synchronous_mmal_msg(instance, &m, + sizeof(m.u.port_info_get), + &rmsg, &rmsg_handle); + if (ret) + return ret; + + if (rmsg->h.type != MMAL_MSG_TYPE_PORT_INFO_GET) { + /* got an unexpected message type in reply */ + ret = -EINVAL; + goto release_msg; + } + + /* return operation status */ + ret = -rmsg->u.port_info_get_reply.status; + if (ret != MMAL_MSG_STATUS_SUCCESS) + goto release_msg; + + if (rmsg->u.port_info_get_reply.port.is_enabled == 0) + port->enabled = false; + else + port->enabled = true; + + /* copy the values out of the message */ + port->handle = rmsg->u.port_info_get_reply.port_handle; + + /* port type and index cached to use on port info set becuase + * it does not use a port handle + */ + port->type = rmsg->u.port_info_get_reply.port_type; + port->index = rmsg->u.port_info_get_reply.port_index; + + port->minimum_buffer.num = + rmsg->u.port_info_get_reply.port.buffer_num_min; + port->minimum_buffer.size = + rmsg->u.port_info_get_reply.port.buffer_size_min; + port->minimum_buffer.alignment = + rmsg->u.port_info_get_reply.port.buffer_alignment_min; + + port->recommended_buffer.alignment = + rmsg->u.port_info_get_reply.port.buffer_alignment_min; + port->recommended_buffer.num = + rmsg->u.port_info_get_reply.port.buffer_num_recommended; + + port->current_buffer.num = rmsg->u.port_info_get_reply.port.buffer_num; + port->current_buffer.size = + rmsg->u.port_info_get_reply.port.buffer_size; + + /* stream format */ + port->format.type = rmsg->u.port_info_get_reply.format.type; + port->format.encoding = rmsg->u.port_info_get_reply.format.encoding; + port->format.encoding_variant = + rmsg->u.port_info_get_reply.format.encoding_variant; + port->format.bitrate = rmsg->u.port_info_get_reply.format.bitrate; + port->format.flags = rmsg->u.port_info_get_reply.format.flags; + + /* elementry stream format */ + memcpy(&port->es, + &rmsg->u.port_info_get_reply.es, + sizeof(union mmal_es_specific_format)); + port->format.es = &port->es; + + port->format.extradata_size = + rmsg->u.port_info_get_reply.format.extradata_size; + memcpy(port->format.extradata, + rmsg->u.port_info_get_reply.extradata, + port->format.extradata_size); + + pr_debug("received port info\n"); + dump_port_info(port); + +release_msg: + + pr_debug("%s:result:%d component:0x%x port:%d\n", + __func__, ret, port->component->handle, port->handle); + + vchi_held_msg_release(&rmsg_handle); + + return ret; +} + +/* create comonent on vc */ +static int create_component(struct vchiq_mmal_instance *instance, + struct vchiq_mmal_component *component, + const char *name) +{ + int ret; + struct mmal_msg m; + struct mmal_msg *rmsg; + VCHI_HELD_MSG_T rmsg_handle; + + /* build component create message */ + m.h.type = MMAL_MSG_TYPE_COMPONENT_CREATE; + m.u.component_create.client_component = component; + strncpy(m.u.component_create.name, name, + sizeof(m.u.component_create.name)); + + ret = send_synchronous_mmal_msg(instance, &m, + sizeof(m.u.component_create), + &rmsg, &rmsg_handle); + if (ret) + return ret; + + if (rmsg->h.type != m.h.type) { + /* got an unexpected message type in reply */ + ret = -EINVAL; + goto release_msg; + } + + ret = -rmsg->u.component_create_reply.status; + if (ret != MMAL_MSG_STATUS_SUCCESS) + goto release_msg; + + /* a valid component response received */ + component->handle = rmsg->u.component_create_reply.component_handle; + component->inputs = rmsg->u.component_create_reply.input_num; + component->outputs = rmsg->u.component_create_reply.output_num; + component->clocks = rmsg->u.component_create_reply.clock_num; + + pr_debug("Component handle:0x%x in:%d out:%d clock:%d\n", + component->handle, + component->inputs, component->outputs, component->clocks); + +release_msg: + vchi_held_msg_release(&rmsg_handle); + + return ret; +} + +/* destroys a component on vc */ +static int destroy_component(struct vchiq_mmal_instance *instance, + struct vchiq_mmal_component *component) +{ + int ret; + struct mmal_msg m; + struct mmal_msg *rmsg; + VCHI_HELD_MSG_T rmsg_handle; + + m.h.type = MMAL_MSG_TYPE_COMPONENT_DESTROY; + m.u.component_destroy.component_handle = component->handle; + + ret = send_synchronous_mmal_msg(instance, &m, + sizeof(m.u.component_destroy), + &rmsg, &rmsg_handle); + if (ret) + return ret; + + if (rmsg->h.type != m.h.type) { + /* got an unexpected message type in reply */ + ret = -EINVAL; + goto release_msg; + } + + ret = -rmsg->u.component_destroy_reply.status; + +release_msg: + + vchi_held_msg_release(&rmsg_handle); + + return ret; +} + +/* enable a component on vc */ +static int enable_component(struct vchiq_mmal_instance *instance, + struct vchiq_mmal_component *component) +{ + int ret; + struct mmal_msg m; + struct mmal_msg *rmsg; + VCHI_HELD_MSG_T rmsg_handle; + + m.h.type = MMAL_MSG_TYPE_COMPONENT_ENABLE; + m.u.component_enable.component_handle = component->handle; + + ret = send_synchronous_mmal_msg(instance, &m, + sizeof(m.u.component_enable), + &rmsg, &rmsg_handle); + if (ret) + return ret; + + if (rmsg->h.type != m.h.type) { + /* got an unexpected message type in reply */ + ret = -EINVAL; + goto release_msg; + } + + ret = -rmsg->u.component_enable_reply.status; + +release_msg: + vchi_held_msg_release(&rmsg_handle); + + return ret; +} + +/* disable a component on vc */ +static int disable_component(struct vchiq_mmal_instance *instance, + struct vchiq_mmal_component *component) +{ + int ret; + struct mmal_msg m; + struct mmal_msg *rmsg; + VCHI_HELD_MSG_T rmsg_handle; + + m.h.type = MMAL_MSG_TYPE_COMPONENT_DISABLE; + m.u.component_disable.component_handle = component->handle; + + ret = send_synchronous_mmal_msg(instance, &m, + sizeof(m.u.component_disable), + &rmsg, &rmsg_handle); + if (ret) + return ret; + + if (rmsg->h.type != m.h.type) { + /* got an unexpected message type in reply */ + ret = -EINVAL; + goto release_msg; + } + + ret = -rmsg->u.component_disable_reply.status; + +release_msg: + + vchi_held_msg_release(&rmsg_handle); + + return ret; +} + +/* get version of mmal implementation */ +static int get_version(struct vchiq_mmal_instance *instance, + u32 *major_out, u32 *minor_out) +{ + int ret; + struct mmal_msg m; + struct mmal_msg *rmsg; + VCHI_HELD_MSG_T rmsg_handle; + + m.h.type = MMAL_MSG_TYPE_GET_VERSION; + + ret = send_synchronous_mmal_msg(instance, &m, + sizeof(m.u.version), + &rmsg, &rmsg_handle); + if (ret) + return ret; + + if (rmsg->h.type != m.h.type) { + /* got an unexpected message type in reply */ + ret = -EINVAL; + goto release_msg; + } + + *major_out = rmsg->u.version.major; + *minor_out = rmsg->u.version.minor; + +release_msg: + vchi_held_msg_release(&rmsg_handle); + + return ret; +} + +/* do a port action with a port as a parameter */ +static int port_action_port(struct vchiq_mmal_instance *instance, + struct vchiq_mmal_port *port, + enum mmal_msg_port_action_type action_type) +{ + int ret; + struct mmal_msg m; + struct mmal_msg *rmsg; + VCHI_HELD_MSG_T rmsg_handle; + + m.h.type = MMAL_MSG_TYPE_PORT_ACTION; + m.u.port_action_port.component_handle = port->component->handle; + m.u.port_action_port.port_handle = port->handle; + m.u.port_action_port.action = action_type; + + port_to_mmal_msg(port, &m.u.port_action_port.port); + + ret = send_synchronous_mmal_msg(instance, &m, + sizeof(m.u.port_action_port), + &rmsg, &rmsg_handle); + if (ret) + return ret; + + if (rmsg->h.type != MMAL_MSG_TYPE_PORT_ACTION) { + /* got an unexpected message type in reply */ + ret = -EINVAL; + goto release_msg; + } + + ret = -rmsg->u.port_action_reply.status; + + pr_debug("%s:result:%d component:0x%x port:%d action:%s(%d)\n", + __func__, + ret, port->component->handle, port->handle, + port_action_type_names[action_type], action_type); + +release_msg: + vchi_held_msg_release(&rmsg_handle); + + return ret; +} + +/* do a port action with handles as parameters */ +static int port_action_handle(struct vchiq_mmal_instance *instance, + struct vchiq_mmal_port *port, + enum mmal_msg_port_action_type action_type, + u32 connect_component_handle, + u32 connect_port_handle) +{ + int ret; + struct mmal_msg m; + struct mmal_msg *rmsg; + VCHI_HELD_MSG_T rmsg_handle; + + m.h.type = MMAL_MSG_TYPE_PORT_ACTION; + + m.u.port_action_handle.component_handle = port->component->handle; + m.u.port_action_handle.port_handle = port->handle; + m.u.port_action_handle.action = action_type; + + m.u.port_action_handle.connect_component_handle = + connect_component_handle; + m.u.port_action_handle.connect_port_handle = connect_port_handle; + + ret = send_synchronous_mmal_msg(instance, &m, + sizeof(m.u.port_action_handle), + &rmsg, &rmsg_handle); + if (ret) + return ret; + + if (rmsg->h.type != MMAL_MSG_TYPE_PORT_ACTION) { + /* got an unexpected message type in reply */ + ret = -EINVAL; + goto release_msg; + } + + ret = -rmsg->u.port_action_reply.status; + + pr_debug("%s:result:%d component:0x%x port:%d action:%s(%d)" \ + " connect component:0x%x connect port:%d\n", + __func__, + ret, port->component->handle, port->handle, + port_action_type_names[action_type], + action_type, connect_component_handle, connect_port_handle); + +release_msg: + vchi_held_msg_release(&rmsg_handle); + + return ret; +} + +static int port_parameter_set(struct vchiq_mmal_instance *instance, + struct vchiq_mmal_port *port, + u32 parameter_id, void *value, u32 value_size) +{ + int ret; + struct mmal_msg m; + struct mmal_msg *rmsg; + VCHI_HELD_MSG_T rmsg_handle; + + m.h.type = MMAL_MSG_TYPE_PORT_PARAMETER_SET; + + m.u.port_parameter_set.component_handle = port->component->handle; + m.u.port_parameter_set.port_handle = port->handle; + m.u.port_parameter_set.id = parameter_id; + m.u.port_parameter_set.size = (2 * sizeof(u32)) + value_size; + memcpy(&m.u.port_parameter_set.value, value, value_size); + + ret = send_synchronous_mmal_msg(instance, &m, + (4 * sizeof(u32)) + value_size, + &rmsg, &rmsg_handle); + if (ret) + return ret; + + if (rmsg->h.type != MMAL_MSG_TYPE_PORT_PARAMETER_SET) { + /* got an unexpected message type in reply */ + ret = -EINVAL; + goto release_msg; + } + + ret = -rmsg->u.port_parameter_set_reply.status; + + pr_debug("%s:result:%d component:0x%x port:%d parameter:%d\n", + __func__, + ret, port->component->handle, port->handle, parameter_id); + +release_msg: + vchi_held_msg_release(&rmsg_handle); + + return ret; +} + +static int port_parameter_get(struct vchiq_mmal_instance *instance, + struct vchiq_mmal_port *port, + u32 parameter_id, void *value, u32 *value_size) +{ + int ret; + struct mmal_msg m; + struct mmal_msg *rmsg; + VCHI_HELD_MSG_T rmsg_handle; + + m.h.type = MMAL_MSG_TYPE_PORT_PARAMETER_GET; + + m.u.port_parameter_get.component_handle = port->component->handle; + m.u.port_parameter_get.port_handle = port->handle; + m.u.port_parameter_get.id = parameter_id; + m.u.port_parameter_get.size = (2 * sizeof(u32)) + *value_size; + + ret = send_synchronous_mmal_msg(instance, &m, + sizeof(struct + mmal_msg_port_parameter_get), + &rmsg, &rmsg_handle); + if (ret) + return ret; + + if (rmsg->h.type != MMAL_MSG_TYPE_PORT_PARAMETER_GET) { + /* got an unexpected message type in reply */ + pr_err("Incorrect reply type %d\n", rmsg->h.type); + ret = -EINVAL; + goto release_msg; + } + + ret = -rmsg->u.port_parameter_get_reply.status; + if (ret) { + /* Copy only as much as we have space for + * but report true size of parameter + */ + memcpy(value, &rmsg->u.port_parameter_get_reply.value, + *value_size); + *value_size = rmsg->u.port_parameter_get_reply.size; + } else + memcpy(value, &rmsg->u.port_parameter_get_reply.value, + rmsg->u.port_parameter_get_reply.size); + + pr_debug("%s:result:%d component:0x%x port:%d parameter:%d\n", __func__, + ret, port->component->handle, port->handle, parameter_id); + +release_msg: + vchi_held_msg_release(&rmsg_handle); + + return ret; +} + +/* disables a port and drains buffers from it */ +static int port_disable(struct vchiq_mmal_instance *instance, + struct vchiq_mmal_port *port) +{ + int ret; + struct list_head *q, *buf_head; + unsigned long flags = 0; + + if (!port->enabled) + return 0; + + port->enabled = false; + + ret = port_action_port(instance, port, + MMAL_MSG_PORT_ACTION_TYPE_DISABLE); + if (ret == 0) { + + /* drain all queued buffers on port */ + spin_lock_irqsave(&port->slock, flags); + + list_for_each_safe(buf_head, q, &port->buffers) { + struct mmal_buffer *mmalbuf; + mmalbuf = list_entry(buf_head, struct mmal_buffer, + list); + list_del(buf_head); + if (port->buffer_cb) + port->buffer_cb(instance, + port, 0, mmalbuf, 0, 0, + MMAL_TIME_UNKNOWN, + MMAL_TIME_UNKNOWN); + } + + spin_unlock_irqrestore(&port->slock, flags); + + ret = port_info_get(instance, port); + } + + return ret; +} + +/* enable a port */ +static int port_enable(struct vchiq_mmal_instance *instance, + struct vchiq_mmal_port *port) +{ + unsigned int hdr_count; + struct list_head *buf_head; + int ret; + + if (port->enabled) + return 0; + + /* ensure there are enough buffers queued to cover the buffer headers */ + if (port->buffer_cb != NULL) { + hdr_count = 0; + list_for_each(buf_head, &port->buffers) { + hdr_count++; + } + if (hdr_count < port->current_buffer.num) + return -ENOSPC; + } + + ret = port_action_port(instance, port, + MMAL_MSG_PORT_ACTION_TYPE_ENABLE); + if (ret) + goto done; + + port->enabled = true; + + if (port->buffer_cb) { + /* send buffer headers to videocore */ + hdr_count = 1; + list_for_each(buf_head, &port->buffers) { + struct mmal_buffer *mmalbuf; + mmalbuf = list_entry(buf_head, struct mmal_buffer, + list); + ret = buffer_from_host(instance, port, mmalbuf); + if (ret) + goto done; + + hdr_count++; + if (hdr_count > port->current_buffer.num) + break; + } + } + + ret = port_info_get(instance, port); + +done: + return ret; +} + +/* ------------------------------------------------------------------ + * Exported API + *------------------------------------------------------------------*/ + +int vchiq_mmal_port_set_format(struct vchiq_mmal_instance *instance, + struct vchiq_mmal_port *port) +{ + int ret; + + if (mutex_lock_interruptible(&instance->vchiq_mutex)) + return -EINTR; + + ret = port_info_set(instance, port); + if (ret) + goto release_unlock; + + /* read what has actually been set */ + ret = port_info_get(instance, port); + +release_unlock: + mutex_unlock(&instance->vchiq_mutex); + + return ret; + +} + +int vchiq_mmal_port_parameter_set(struct vchiq_mmal_instance *instance, + struct vchiq_mmal_port *port, + u32 parameter, void *value, u32 value_size) +{ + int ret; + + if (mutex_lock_interruptible(&instance->vchiq_mutex)) + return -EINTR; + + ret = port_parameter_set(instance, port, parameter, value, value_size); + + mutex_unlock(&instance->vchiq_mutex); + + return ret; +} + +int vchiq_mmal_port_parameter_get(struct vchiq_mmal_instance *instance, + struct vchiq_mmal_port *port, + u32 parameter, void *value, u32 *value_size) +{ + int ret; + + if (mutex_lock_interruptible(&instance->vchiq_mutex)) + return -EINTR; + + ret = port_parameter_get(instance, port, parameter, value, value_size); + + mutex_unlock(&instance->vchiq_mutex); + + return ret; +} + +/* enable a port + * + * enables a port and queues buffers for satisfying callbacks if we + * provide a callback handler + */ +int vchiq_mmal_port_enable(struct vchiq_mmal_instance *instance, + struct vchiq_mmal_port *port, + vchiq_mmal_buffer_cb buffer_cb) +{ + int ret; + + if (mutex_lock_interruptible(&instance->vchiq_mutex)) + return -EINTR; + + /* already enabled - noop */ + if (port->enabled) { + ret = 0; + goto unlock; + } + + port->buffer_cb = buffer_cb; + + ret = port_enable(instance, port); + +unlock: + mutex_unlock(&instance->vchiq_mutex); + + return ret; +} + +int vchiq_mmal_port_disable(struct vchiq_mmal_instance *instance, + struct vchiq_mmal_port *port) +{ + int ret; + + if (mutex_lock_interruptible(&instance->vchiq_mutex)) + return -EINTR; + + if (!port->enabled) { + mutex_unlock(&instance->vchiq_mutex); + return 0; + } + + ret = port_disable(instance, port); + + mutex_unlock(&instance->vchiq_mutex); + + return ret; +} + +/* ports will be connected in a tunneled manner so data buffers + * are not handled by client. + */ +int vchiq_mmal_port_connect_tunnel(struct vchiq_mmal_instance *instance, + struct vchiq_mmal_port *src, + struct vchiq_mmal_port *dst) +{ + int ret; + + if (mutex_lock_interruptible(&instance->vchiq_mutex)) + return -EINTR; + + /* disconnect ports if connected */ + if (src->connected != NULL) { + ret = port_disable(instance, src); + if (ret) { + pr_err("failed disabling src port(%d)\n", ret); + goto release_unlock; + } + + /* do not need to disable the destination port as they + * are connected and it is done automatically + */ + + ret = port_action_handle(instance, src, + MMAL_MSG_PORT_ACTION_TYPE_DISCONNECT, + src->connected->component->handle, + src->connected->handle); + if (ret < 0) { + pr_err("failed disconnecting src port\n"); + goto release_unlock; + } + src->connected->enabled = false; + src->connected = NULL; + } + + if (dst == NULL) { + /* do not make new connection */ + ret = 0; + pr_debug("not making new connection\n"); + goto release_unlock; + } + + /* copy src port format to dst */ + dst->format.encoding = src->format.encoding; + dst->es.video.width = src->es.video.width; + dst->es.video.height = src->es.video.height; + dst->es.video.crop.x = src->es.video.crop.x; + dst->es.video.crop.y = src->es.video.crop.y; + dst->es.video.crop.width = src->es.video.crop.width; + dst->es.video.crop.height = src->es.video.crop.height; + dst->es.video.frame_rate.num = src->es.video.frame_rate.num; + dst->es.video.frame_rate.den = src->es.video.frame_rate.den; + + /* set new format */ + ret = port_info_set(instance, dst); + if (ret) { + pr_debug("setting port info failed\n"); + goto release_unlock; + } + + /* read what has actually been set */ + ret = port_info_get(instance, dst); + if (ret) { + pr_debug("read back port info failed\n"); + goto release_unlock; + } + + /* connect two ports together */ + ret = port_action_handle(instance, src, + MMAL_MSG_PORT_ACTION_TYPE_CONNECT, + dst->component->handle, dst->handle); + if (ret < 0) { + pr_debug("connecting port %d:%d to %d:%d failed\n", + src->component->handle, src->handle, + dst->component->handle, dst->handle); + goto release_unlock; + } + src->connected = dst; + +release_unlock: + + mutex_unlock(&instance->vchiq_mutex); + + return ret; +} + +int vchiq_mmal_submit_buffer(struct vchiq_mmal_instance *instance, + struct vchiq_mmal_port *port, + struct mmal_buffer *buffer) +{ + unsigned long flags = 0; + + spin_lock_irqsave(&port->slock, flags); + list_add_tail(&buffer->list, &port->buffers); + spin_unlock_irqrestore(&port->slock, flags); + + /* the port previously underflowed because it was missing a + * mmal_buffer which has just been added, submit that buffer + * to the mmal service. + */ + if (port->buffer_underflow) { + port_buffer_from_host(instance, port); + port->buffer_underflow--; + } + + return 0; +} + +/* Initialise a mmal component and its ports + * + */ +int vchiq_mmal_component_init(struct vchiq_mmal_instance *instance, + const char *name, + struct vchiq_mmal_component **component_out) +{ + int ret; + int idx; /* port index */ + struct vchiq_mmal_component *component; + + if (mutex_lock_interruptible(&instance->vchiq_mutex)) + return -EINTR; + + if (instance->component_idx == VCHIQ_MMAL_MAX_COMPONENTS) { + ret = -EINVAL; /* todo is this correct error? */ + goto unlock; + } + + component = &instance->component[instance->component_idx]; + + ret = create_component(instance, component, name); + if (ret < 0) + goto unlock; + + /* ports info needs gathering */ + component->control.type = MMAL_PORT_TYPE_CONTROL; + component->control.index = 0; + component->control.component = component; + spin_lock_init(&component->control.slock); + INIT_LIST_HEAD(&component->control.buffers); + ret = port_info_get(instance, &component->control); + if (ret < 0) + goto release_component; + + for (idx = 0; idx < component->inputs; idx++) { + component->input[idx].type = MMAL_PORT_TYPE_INPUT; + component->input[idx].index = idx; + component->input[idx].component = component; + spin_lock_init(&component->input[idx].slock); + INIT_LIST_HEAD(&component->input[idx].buffers); + ret = port_info_get(instance, &component->input[idx]); + if (ret < 0) + goto release_component; + } + + for (idx = 0; idx < component->outputs; idx++) { + component->output[idx].type = MMAL_PORT_TYPE_OUTPUT; + component->output[idx].index = idx; + component->output[idx].component = component; + spin_lock_init(&component->output[idx].slock); + INIT_LIST_HEAD(&component->output[idx].buffers); + ret = port_info_get(instance, &component->output[idx]); + if (ret < 0) + goto release_component; + } + + for (idx = 0; idx < component->clocks; idx++) { + component->clock[idx].type = MMAL_PORT_TYPE_CLOCK; + component->clock[idx].index = idx; + component->clock[idx].component = component; + spin_lock_init(&component->clock[idx].slock); + INIT_LIST_HEAD(&component->clock[idx].buffers); + ret = port_info_get(instance, &component->clock[idx]); + if (ret < 0) + goto release_component; + } + + instance->component_idx++; + + *component_out = component; + + mutex_unlock(&instance->vchiq_mutex); + + return 0; + +release_component: + destroy_component(instance, component); +unlock: + mutex_unlock(&instance->vchiq_mutex); + + return ret; +} + +/* + * cause a mmal component to be destroyed + */ +int vchiq_mmal_component_finalise(struct vchiq_mmal_instance *instance, + struct vchiq_mmal_component *component) +{ + int ret; + + if (mutex_lock_interruptible(&instance->vchiq_mutex)) + return -EINTR; + + if (component->enabled) + ret = disable_component(instance, component); + + ret = destroy_component(instance, component); + + mutex_unlock(&instance->vchiq_mutex); + + return ret; +} + +/* + * cause a mmal component to be enabled + */ +int vchiq_mmal_component_enable(struct vchiq_mmal_instance *instance, + struct vchiq_mmal_component *component) +{ + int ret; + + if (mutex_lock_interruptible(&instance->vchiq_mutex)) + return -EINTR; + + if (component->enabled) { + mutex_unlock(&instance->vchiq_mutex); + return 0; + } + + ret = enable_component(instance, component); + if (ret == 0) + component->enabled = true; + + mutex_unlock(&instance->vchiq_mutex); + + return ret; +} + +/* + * cause a mmal component to be enabled + */ +int vchiq_mmal_component_disable(struct vchiq_mmal_instance *instance, + struct vchiq_mmal_component *component) +{ + int ret; + + if (mutex_lock_interruptible(&instance->vchiq_mutex)) + return -EINTR; + + if (!component->enabled) { + mutex_unlock(&instance->vchiq_mutex); + return 0; + } + + ret = disable_component(instance, component); + if (ret == 0) + component->enabled = false; + + mutex_unlock(&instance->vchiq_mutex); + + return ret; +} + +int vchiq_mmal_version(struct vchiq_mmal_instance *instance, + u32 *major_out, u32 *minor_out) +{ + int ret; + + if (mutex_lock_interruptible(&instance->vchiq_mutex)) + return -EINTR; + + ret = get_version(instance, major_out, minor_out); + + mutex_unlock(&instance->vchiq_mutex); + + return ret; +} + +int vchiq_mmal_finalise(struct vchiq_mmal_instance *instance) +{ + int status = 0; + + if (instance == NULL) + return -EINVAL; + + if (mutex_lock_interruptible(&instance->vchiq_mutex)) + return -EINTR; + + vchi_service_use(instance->handle); + + status = vchi_service_close(instance->handle); + if (status != 0) + pr_err("mmal-vchiq: VCHIQ close failed"); + + mutex_unlock(&instance->vchiq_mutex); + + vfree(instance->bulk_scratch); + + kfree(instance); + + return status; +} + +int vchiq_mmal_init(struct vchiq_mmal_instance **out_instance) +{ + int status; + struct vchiq_mmal_instance *instance; + static VCHI_CONNECTION_T *vchi_connection; + static VCHI_INSTANCE_T vchi_instance; + SERVICE_CREATION_T params = { + VCHI_VERSION_EX(VC_MMAL_VER, VC_MMAL_MIN_VER), + VC_MMAL_SERVER_NAME, + vchi_connection, + 0, /* rx fifo size (unused) */ + 0, /* tx fifo size (unused) */ + service_callback, + NULL, /* service callback parameter */ + 1, /* unaligned bulk receives */ + 1, /* unaligned bulk transmits */ + 0 /* want crc check on bulk transfers */ + }; + + /* compile time checks to ensure structure size as they are + * directly (de)serialised from memory. + */ + + /* ensure the header structure has packed to the correct size */ + BUILD_BUG_ON(sizeof(struct mmal_msg_header) != 24); + + /* ensure message structure does not exceed maximum length */ + BUILD_BUG_ON(sizeof(struct mmal_msg) > MMAL_MSG_MAX_SIZE); + + /* mmal port struct is correct size */ + BUILD_BUG_ON(sizeof(struct mmal_port) != 64); + + /* create a vchi instance */ + status = vchi_initialise(&vchi_instance); + if (status) { + pr_err("Failed to initialise VCHI instance (status=%d)\n", + status); + return -EIO; + } + + status = vchi_connect(NULL, 0, vchi_instance); + if (status) { + pr_err("Failed to connect VCHI instance (status=%d)\n", status); + return -EIO; + } + + instance = kmalloc(sizeof(*instance), GFP_KERNEL); + memset(instance, 0, sizeof(*instance)); + + mutex_init(&instance->vchiq_mutex); + mutex_init(&instance->bulk_mutex); + + instance->bulk_scratch = vmalloc(PAGE_SIZE); + + params.callback_param = instance; + + status = vchi_service_open(vchi_instance, ¶ms, &instance->handle); + if (status) { + pr_err("Failed to open VCHI service connection (status=%d)\n", + status); + goto err_close_services; + } + + vchi_service_release(instance->handle); + + *out_instance = instance; + + return 0; + +err_close_services: + + vchi_service_close(instance->handle); + vfree(instance->bulk_scratch); + kfree(instance); + return -ENODEV; +} --- linux-raspi2-4.2.0.orig/drivers/media/platform/bcm2835/mmal-vchiq.h +++ linux-raspi2-4.2.0/drivers/media/platform/bcm2835/mmal-vchiq.h @@ -0,0 +1,178 @@ +/* + * Broadcom BM2835 V4L2 driver + * + * Copyright © 2013 Raspberry Pi (Trading) Ltd. + * + * This file is subject to the terms and conditions of the GNU General Public + * License. See the file COPYING in the main directory of this archive + * for more details. + * + * Authors: Vincent Sanders + * Dave Stevenson + * Simon Mellor + * Luke Diamand + * + * MMAL interface to VCHIQ message passing + */ + +#ifndef MMAL_VCHIQ_H +#define MMAL_VCHIQ_H + +#include "mmal-msg-format.h" + +#define MAX_PORT_COUNT 4 + +/* Maximum size of the format extradata. */ +#define MMAL_FORMAT_EXTRADATA_MAX_SIZE 128 + +struct vchiq_mmal_instance; + +enum vchiq_mmal_es_type { + MMAL_ES_TYPE_UNKNOWN, /**< Unknown elementary stream type */ + MMAL_ES_TYPE_CONTROL, /**< Elementary stream of control commands */ + MMAL_ES_TYPE_AUDIO, /**< Audio elementary stream */ + MMAL_ES_TYPE_VIDEO, /**< Video elementary stream */ + MMAL_ES_TYPE_SUBPICTURE /**< Sub-picture elementary stream */ +}; + +/* rectangle, used lots so it gets its own struct */ +struct vchiq_mmal_rect { + s32 x; + s32 y; + s32 width; + s32 height; +}; + +struct vchiq_mmal_port_buffer { + unsigned int num; /* number of buffers */ + u32 size; /* size of buffers */ + u32 alignment; /* alignment of buffers */ +}; + +struct vchiq_mmal_port; + +typedef void (*vchiq_mmal_buffer_cb)( + struct vchiq_mmal_instance *instance, + struct vchiq_mmal_port *port, + int status, struct mmal_buffer *buffer, + unsigned long length, u32 mmal_flags, s64 dts, s64 pts); + +struct vchiq_mmal_port { + bool enabled; + u32 handle; + u32 type; /* port type, cached to use on port info set */ + u32 index; /* port index, cached to use on port info set */ + + /* component port belongs to, allows simple deref */ + struct vchiq_mmal_component *component; + + struct vchiq_mmal_port *connected; /* port conencted to */ + + /* buffer info */ + struct vchiq_mmal_port_buffer minimum_buffer; + struct vchiq_mmal_port_buffer recommended_buffer; + struct vchiq_mmal_port_buffer current_buffer; + + /* stream format */ + struct mmal_es_format format; + /* elementry stream format */ + union mmal_es_specific_format es; + + /* data buffers to fill */ + struct list_head buffers; + /* lock to serialise adding and removing buffers from list */ + spinlock_t slock; + /* count of how many buffer header refils have failed because + * there was no buffer to satisfy them + */ + int buffer_underflow; + /* callback on buffer completion */ + vchiq_mmal_buffer_cb buffer_cb; + /* callback context */ + void *cb_ctx; +}; + +struct vchiq_mmal_component { + bool enabled; + u32 handle; /* VideoCore handle for component */ + u32 inputs; /* Number of input ports */ + u32 outputs; /* Number of output ports */ + u32 clocks; /* Number of clock ports */ + struct vchiq_mmal_port control; /* control port */ + struct vchiq_mmal_port input[MAX_PORT_COUNT]; /* input ports */ + struct vchiq_mmal_port output[MAX_PORT_COUNT]; /* output ports */ + struct vchiq_mmal_port clock[MAX_PORT_COUNT]; /* clock ports */ +}; + + +int vchiq_mmal_init(struct vchiq_mmal_instance **out_instance); +int vchiq_mmal_finalise(struct vchiq_mmal_instance *instance); + +/* Initialise a mmal component and its ports +* +*/ +int vchiq_mmal_component_init( + struct vchiq_mmal_instance *instance, + const char *name, + struct vchiq_mmal_component **component_out); + +int vchiq_mmal_component_finalise( + struct vchiq_mmal_instance *instance, + struct vchiq_mmal_component *component); + +int vchiq_mmal_component_enable( + struct vchiq_mmal_instance *instance, + struct vchiq_mmal_component *component); + +int vchiq_mmal_component_disable( + struct vchiq_mmal_instance *instance, + struct vchiq_mmal_component *component); + + + +/* enable a mmal port + * + * enables a port and if a buffer callback provided enque buffer + * headers as apropriate for the port. + */ +int vchiq_mmal_port_enable( + struct vchiq_mmal_instance *instance, + struct vchiq_mmal_port *port, + vchiq_mmal_buffer_cb buffer_cb); + +/* disable a port + * + * disable a port will dequeue any pending buffers + */ +int vchiq_mmal_port_disable(struct vchiq_mmal_instance *instance, + struct vchiq_mmal_port *port); + + +int vchiq_mmal_port_parameter_set(struct vchiq_mmal_instance *instance, + struct vchiq_mmal_port *port, + u32 parameter, + void *value, + u32 value_size); + +int vchiq_mmal_port_parameter_get(struct vchiq_mmal_instance *instance, + struct vchiq_mmal_port *port, + u32 parameter, + void *value, + u32 *value_size); + +int vchiq_mmal_port_set_format(struct vchiq_mmal_instance *instance, + struct vchiq_mmal_port *port); + +int vchiq_mmal_port_connect_tunnel(struct vchiq_mmal_instance *instance, + struct vchiq_mmal_port *src, + struct vchiq_mmal_port *dst); + +int vchiq_mmal_version(struct vchiq_mmal_instance *instance, + u32 *major_out, + u32 *minor_out); + +int vchiq_mmal_submit_buffer(struct vchiq_mmal_instance *instance, + struct vchiq_mmal_port *port, + struct mmal_buffer *buf); + +#endif /* MMAL_VCHIQ_H */ --- linux-raspi2-4.2.0.orig/drivers/media/platform/omap3isp/isp.c +++ linux-raspi2-4.2.0/drivers/media/platform/omap3isp/isp.c @@ -829,14 +829,14 @@ int ret; if (notification == MEDIA_DEV_NOTIFY_POST_LINK_CH && - !(link->flags & MEDIA_LNK_FL_ENABLED)) { + !(flags & MEDIA_LNK_FL_ENABLED)) { /* Powering off entities is assumed to never fail. */ isp_pipeline_pm_power(source, -sink_use); isp_pipeline_pm_power(sink, -source_use); return 0; } - if (notification == MEDIA_DEV_NOTIFY_POST_LINK_CH && + if (notification == MEDIA_DEV_NOTIFY_PRE_LINK_CH && (flags & MEDIA_LNK_FL_ENABLED)) { ret = isp_pipeline_pm_power(source, sink_use); @@ -2000,10 +2000,8 @@ ret = v4l2_device_register_subdev_nodes(&isp->v4l2_dev); done: - if (ret < 0) { + if (ret < 0) isp_unregister_entities(isp); - v4l2_async_notifier_unregister(&isp->notifier); - } return ret; } @@ -2423,10 +2421,6 @@ ret = isp_of_parse_nodes(&pdev->dev, &isp->notifier); if (ret < 0) return ret; - ret = v4l2_async_notifier_register(&isp->v4l2_dev, - &isp->notifier); - if (ret) - return ret; } else { isp->pdata = pdev->dev.platform_data; isp->syscon = syscon_regmap_lookup_by_pdevname("syscon.0"); @@ -2557,18 +2551,27 @@ if (ret < 0) goto error_iommu; - isp->notifier.bound = isp_subdev_notifier_bound; - isp->notifier.complete = isp_subdev_notifier_complete; - ret = isp_register_entities(isp); if (ret < 0) goto error_modules; + if (IS_ENABLED(CONFIG_OF) && pdev->dev.of_node) { + isp->notifier.bound = isp_subdev_notifier_bound; + isp->notifier.complete = isp_subdev_notifier_complete; + + ret = v4l2_async_notifier_register(&isp->v4l2_dev, + &isp->notifier); + if (ret) + goto error_register_entities; + } + isp_core_init(isp, 1); omap3isp_put(isp); return 0; +error_register_entities: + isp_unregister_entities(isp); error_modules: isp_cleanup_modules(isp); error_iommu: --- linux-raspi2-4.2.0.orig/drivers/media/platform/vivid/vivid-core.c +++ linux-raspi2-4.2.0/drivers/media/platform/vivid/vivid-core.c @@ -1341,8 +1341,11 @@ struct vivid_dev *dev; unsigned i; - for (i = 0; vivid_devs[i]; i++) { + + for (i = 0; i < n_devs; i++) { dev = vivid_devs[i]; + if (!dev) + continue; if (dev->has_vid_cap) { v4l2_info(&dev->v4l2_dev, "unregistering %s\n", --- linux-raspi2-4.2.0.orig/drivers/media/platform/vivid/vivid-osd.c +++ linux-raspi2-4.2.0/drivers/media/platform/vivid/vivid-osd.c @@ -85,6 +85,7 @@ case FBIOGET_VBLANK: { struct fb_vblank vblank; + memset(&vblank, 0, sizeof(vblank)); vblank.flags = FB_VBLANK_HAVE_COUNT | FB_VBLANK_HAVE_VCOUNT | FB_VBLANK_HAVE_VSYNC; vblank.count = 0; --- linux-raspi2-4.2.0.orig/drivers/media/platform/xilinx/xilinx-dma.c +++ linux-raspi2-4.2.0/drivers/media/platform/xilinx/xilinx-dma.c @@ -699,8 +699,10 @@ /* ... and the buffers queue... */ dma->alloc_ctx = vb2_dma_contig_init_ctx(dma->xdev->dev); - if (IS_ERR(dma->alloc_ctx)) + if (IS_ERR(dma->alloc_ctx)) { + ret = PTR_ERR(dma->alloc_ctx); goto error; + } /* Don't enable VB2_READ and VB2_WRITE, as using the read() and write() * V4L2 APIs would be inefficient. Testing on the command line with a --- linux-raspi2-4.2.0.orig/drivers/media/rc/rc-main.c +++ linux-raspi2-4.2.0/drivers/media/rc/rc-main.c @@ -1191,9 +1191,6 @@ { struct rc_dev *dev = to_rc_dev(device); - if (!dev || !dev->input_dev) - return -ENODEV; - if (dev->rc_map.name) ADD_HOTPLUG_VAR("NAME=%s", dev->rc_map.name); if (dev->driver_name) --- linux-raspi2-4.2.0.orig/drivers/media/tuners/si2157.c +++ linux-raspi2-4.2.0/drivers/media/tuners/si2157.c @@ -166,6 +166,10 @@ for (remaining = fw->size; remaining > 0; remaining -= 17) { len = fw->data[fw->size - remaining]; + if (len > SI2157_ARGLEN) { + dev_err(&client->dev, "Bad firmware length\n"); + goto err_release_firmware; + } memcpy(cmd.args, &fw->data[(fw->size - remaining) + 1], len); cmd.wlen = len; cmd.rlen = 1; --- linux-raspi2-4.2.0.orig/drivers/media/usb/dvb-usb-v2/rtl28xxu.c +++ linux-raspi2-4.2.0/drivers/media/usb/dvb-usb-v2/rtl28xxu.c @@ -34,6 +34,14 @@ unsigned int pipe; u8 requesttype; + mutex_lock(&d->usb_mutex); + + if (req->size > sizeof(dev->buf)) { + dev_err(&d->intf->dev, "too large message %u\n", req->size); + ret = -EINVAL; + goto err_mutex_unlock; + } + if (req->index & CMD_WR_FLAG) { /* write */ memcpy(dev->buf, req->data, req->size); @@ -50,14 +58,17 @@ dvb_usb_dbg_usb_control_msg(d->udev, 0, requesttype, req->value, req->index, dev->buf, req->size); if (ret < 0) - goto err; + goto err_mutex_unlock; /* read request, copy returned data to return buf */ if (requesttype == (USB_TYPE_VENDOR | USB_DIR_IN)) memcpy(req->data, dev->buf, req->size); + mutex_unlock(&d->usb_mutex); + return 0; -err: +err_mutex_unlock: + mutex_unlock(&d->usb_mutex); dev_dbg(&d->intf->dev, "failed=%d\n", ret); return ret; } @@ -1887,6 +1898,10 @@ &rtl28xxu_props, "Compro VideoMate U620F", NULL) }, { DVB_USB_DEVICE(USB_VID_KWORLD_2, 0xd394, &rtl28xxu_props, "MaxMedia HU394-T", NULL) }, + { DVB_USB_DEVICE(USB_VID_GTEK, 0xb803 /*USB_PID_AUGUST_DVBT205*/, + &rtl28xxu_props, "August DVB-T 205", NULL) }, + { DVB_USB_DEVICE(USB_VID_GTEK, 0xa803 /*USB_PID_AUGUST_DVBT205*/, + &rtl28xxu_props, "August DVB-T 205", NULL) }, { DVB_USB_DEVICE(USB_VID_LEADTEK, 0x6a03, &rtl28xxu_props, "Leadtek WinFast DTV Dongle mini", NULL) }, { DVB_USB_DEVICE(USB_VID_GTEK, USB_PID_CPYTO_REDI_PC50A, --- linux-raspi2-4.2.0.orig/drivers/media/usb/dvb-usb-v2/rtl28xxu.h +++ linux-raspi2-4.2.0/drivers/media/usb/dvb-usb-v2/rtl28xxu.h @@ -71,7 +71,7 @@ struct rtl28xxu_dev { - u8 buf[28]; + u8 buf[128]; u8 chip_id; u8 tuner; char *tuner_name; --- linux-raspi2-4.2.0.orig/drivers/media/usb/uvc/uvc_driver.c +++ linux-raspi2-4.2.0/drivers/media/usb/uvc/uvc_driver.c @@ -2262,6 +2262,15 @@ .bInterfaceSubClass = 1, .bInterfaceProtocol = 0, .driver_info = UVC_QUIRK_PROBE_DEF }, + /* Alienware X51*/ + { .match_flags = USB_DEVICE_ID_MATCH_DEVICE + | USB_DEVICE_ID_MATCH_INT_INFO, + .idVendor = 0x05a9, + .idProduct = 0x2643, + .bInterfaceClass = USB_CLASS_VIDEO, + .bInterfaceSubClass = 1, + .bInterfaceProtocol = 0, + .driver_info = UVC_QUIRK_PROBE_DEF }, /* Apple Built-In iSight */ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE | USB_DEVICE_ID_MATCH_INT_INFO, --- linux-raspi2-4.2.0.orig/drivers/media/v4l2-core/v4l2-compat-ioctl32.c +++ linux-raspi2-4.2.0/drivers/media/v4l2-core/v4l2-compat-ioctl32.c @@ -266,7 +266,7 @@ struct v4l2_standard32 { __u32 index; - __u32 id[2]; /* __u64 would get the alignment wrong */ + compat_u64 id; __u8 name[24]; struct v4l2_fract frameperiod; /* Frames, not fields */ __u32 framelines; @@ -286,7 +286,7 @@ { if (!access_ok(VERIFY_WRITE, up, sizeof(struct v4l2_standard32)) || put_user(kp->index, &up->index) || - copy_to_user(up->id, &kp->id, sizeof(__u64)) || + put_user(kp->id, &up->id) || copy_to_user(up->name, kp->name, 24) || copy_to_user(&up->frameperiod, &kp->frameperiod, sizeof(kp->frameperiod)) || put_user(kp->framelines, &up->framelines) || @@ -587,10 +587,10 @@ __u32 type; /* Type of input */ __u32 audioset; /* Associated audios (bitfield) */ __u32 tuner; /* Associated tuner */ - v4l2_std_id std; + compat_u64 std; __u32 status; __u32 reserved[4]; -} __attribute__ ((packed)); +}; /* The 64-bit v4l2_input struct has extra padding at the end of the struct. Otherwise it is identical to the 32-bit version. */ @@ -738,6 +738,7 @@ struct v4l2_event32 { __u32 type; union { + compat_s64 value64; __u8 data[64]; } u; __u32 pending; --- linux-raspi2-4.2.0.orig/drivers/media/v4l2-core/v4l2-ctrls.c +++ linux-raspi2-4.2.0/drivers/media/v4l2-core/v4l2-ctrls.c @@ -2513,7 +2513,7 @@ /* We found a control with the given ID, so just get the next valid one in the list. */ list_for_each_entry_continue(ref, &hdl->ctrl_refs, node) { - is_compound = + is_compound = ref->ctrl->is_array || ref->ctrl->type >= V4L2_CTRL_COMPOUND_TYPES; if (id < ref->ctrl->id && (is_compound & mask) == match) @@ -2527,7 +2527,7 @@ is one, otherwise the first 'if' above would have been true. */ list_for_each_entry(ref, &hdl->ctrl_refs, node) { - is_compound = + is_compound = ref->ctrl->is_array || ref->ctrl->type >= V4L2_CTRL_COMPOUND_TYPES; if (id < ref->ctrl->id && (is_compound & mask) == match) @@ -2899,7 +2899,7 @@ * cur_to_user() calls below would need to be modified not to access * userspace memory when called from get_ctrl(). */ - if (!ctrl->is_int) + if (!ctrl->is_int && ctrl->type != V4L2_CTRL_TYPE_INTEGER64) return -EINVAL; if (ctrl->flags & V4L2_CTRL_FLAG_WRITE_ONLY) @@ -2957,9 +2957,9 @@ /* It's a driver bug if this happens. */ WARN_ON(ctrl->is_ptr || ctrl->type != V4L2_CTRL_TYPE_INTEGER64); - c.value = 0; + c.value64 = 0; get_ctrl(ctrl, &c); - return c.value; + return c.value64; } EXPORT_SYMBOL(v4l2_ctrl_g_ctrl_int64); @@ -3058,7 +3058,7 @@ { int i; - for (i = 0; i < master->ncontrols; i++) + for (i = 1; i < master->ncontrols; i++) cur_to_new(master->cluster[i]); if (!call_op(master, g_volatile_ctrl)) for (i = 1; i < master->ncontrols; i++) --- linux-raspi2-4.2.0.orig/drivers/media/v4l2-core/videobuf2-dma-contig.c +++ linux-raspi2-4.2.0/drivers/media/v4l2-core/videobuf2-dma-contig.c @@ -120,7 +120,8 @@ if (!sgt || buf->db_attach) return; - dma_sync_sg_for_device(buf->dev, sgt->sgl, sgt->nents, buf->dma_dir); + dma_sync_sg_for_device(buf->dev, sgt->sgl, sgt->orig_nents, + buf->dma_dir); } static void vb2_dc_finish(void *buf_priv) @@ -132,7 +133,7 @@ if (!sgt || buf->db_attach) return; - dma_sync_sg_for_cpu(buf->dev, sgt->sgl, sgt->nents, buf->dma_dir); + dma_sync_sg_for_cpu(buf->dev, sgt->sgl, sgt->orig_nents, buf->dma_dir); } /*********************************************/ --- linux-raspi2-4.2.0.orig/drivers/media/v4l2-core/videobuf2-dma-sg.c +++ linux-raspi2-4.2.0/drivers/media/v4l2-core/videobuf2-dma-sg.c @@ -210,7 +210,8 @@ if (buf->db_attach) return; - dma_sync_sg_for_device(buf->dev, sgt->sgl, sgt->nents, buf->dma_dir); + dma_sync_sg_for_device(buf->dev, sgt->sgl, sgt->orig_nents, + buf->dma_dir); } static void vb2_dma_sg_finish(void *buf_priv) @@ -222,7 +223,7 @@ if (buf->db_attach) return; - dma_sync_sg_for_cpu(buf->dev, sgt->sgl, sgt->nents, buf->dma_dir); + dma_sync_sg_for_cpu(buf->dev, sgt->sgl, sgt->orig_nents, buf->dma_dir); } static inline int vma_is_io(struct vm_area_struct *vma) --- linux-raspi2-4.2.0.orig/drivers/memory/tegra/tegra114.c +++ linux-raspi2-4.2.0/drivers/memory/tegra/tegra114.c @@ -935,6 +935,7 @@ .num_swgroups = ARRAY_SIZE(tegra114_swgroups), .supports_round_robin_arbitration = false, .supports_request_limit = false, + .num_tlb_lines = 32, .num_asids = 4, .ops = &tegra114_smmu_ops, }; --- linux-raspi2-4.2.0.orig/drivers/memory/tegra/tegra124.c +++ linux-raspi2-4.2.0/drivers/memory/tegra/tegra124.c @@ -1023,6 +1023,7 @@ .num_swgroups = ARRAY_SIZE(tegra124_swgroups), .supports_round_robin_arbitration = true, .supports_request_limit = true, + .num_tlb_lines = 32, .num_asids = 128, .ops = &tegra124_smmu_ops, }; --- linux-raspi2-4.2.0.orig/drivers/memory/tegra/tegra30.c +++ linux-raspi2-4.2.0/drivers/memory/tegra/tegra30.c @@ -957,6 +957,7 @@ .num_swgroups = ARRAY_SIZE(tegra30_swgroups), .supports_round_robin_arbitration = false, .supports_request_limit = false, + .num_tlb_lines = 16, .num_asids = 4, .ops = &tegra30_smmu_ops, }; --- linux-raspi2-4.2.0.orig/drivers/memstick/host/rtsx_usb_ms.c +++ linux-raspi2-4.2.0/drivers/memstick/host/rtsx_usb_ms.c @@ -706,7 +706,8 @@ if (host->eject) break; - msleep(1000); + if (msleep_interruptible(1000)) + flush_signals(current); } complete(&host->detect_ms_exit); --- linux-raspi2-4.2.0.orig/drivers/mfd/Kconfig +++ linux-raspi2-4.2.0/drivers/mfd/Kconfig @@ -10,6 +10,14 @@ select IRQ_DOMAIN default n +config MFD_RPISENSE_CORE + tristate "Raspberry Pi Sense HAT core functions" + depends on I2C + select MFD_CORE + help + This is the core driver for the Raspberry Pi Sense HAT. This provides + the necessary functions to communicate with the hardware. + config MFD_CS5535 tristate "AMD CS5535 and CS5536 southbridge core functions" select MFD_CORE @@ -328,6 +336,29 @@ thermal, charger and related power management functions on these systems. +config MFD_INTEL_LPSS + tristate + select COMMON_CLK + select MFD_CORE + +config MFD_INTEL_LPSS_ACPI + tristate "Intel Low Power Subsystem support in ACPI mode" + select MFD_INTEL_LPSS + depends on X86 && ACPI + help + This driver supports Intel Low Power Subsystem (LPSS) devices such as + I2C, SPI and HS-UART starting from Intel Sunrisepoint (Intel Skylake + PCH) in ACPI mode. + +config MFD_INTEL_LPSS_PCI + tristate "Intel Low Power Subsystem support in PCI mode" + select MFD_INTEL_LPSS + depends on X86 && PCI + help + This driver supports Intel Low Power Subsystem (LPSS) devices such as + I2C, SPI and HS-UART starting from Intel Sunrisepoint (Intel Skylake + PCH) in PCI mode. + config MFD_INTEL_MSIC bool "Intel MSIC" depends on INTEL_SCU_IPC --- linux-raspi2-4.2.0.orig/drivers/mfd/Makefile +++ linux-raspi2-4.2.0/drivers/mfd/Makefile @@ -161,6 +161,9 @@ obj-$(CONFIG_MFD_TPS65090) += tps65090.o obj-$(CONFIG_MFD_AAT2870_CORE) += aat2870-core.o obj-$(CONFIG_MFD_ATMEL_HLCDC) += atmel-hlcdc.o +obj-$(CONFIG_MFD_INTEL_LPSS) += intel-lpss.o +obj-$(CONFIG_MFD_INTEL_LPSS_PCI) += intel-lpss-pci.o +obj-$(CONFIG_MFD_INTEL_LPSS_ACPI) += intel-lpss-acpi.o obj-$(CONFIG_MFD_INTEL_MSIC) += intel_msic.o obj-$(CONFIG_MFD_PALMAS) += palmas.o obj-$(CONFIG_MFD_VIPERBOARD) += viperboard.o @@ -185,3 +188,5 @@ intel-soc-pmic-objs := intel_soc_pmic_core.o intel_soc_pmic_crc.o obj-$(CONFIG_INTEL_SOC_PMIC) += intel-soc-pmic.o obj-$(CONFIG_MFD_MT6397) += mt6397-core.o + +obj-$(CONFIG_MFD_RPISENSE_CORE) += rpisense-core.o --- linux-raspi2-4.2.0.orig/drivers/mfd/intel-lpss-acpi.c +++ linux-raspi2-4.2.0/drivers/mfd/intel-lpss-acpi.c @@ -0,0 +1,84 @@ +/* + * Intel LPSS ACPI support. + * + * Copyright (C) 2015, Intel Corporation + * + * Authors: Andy Shevchenko + * Mika Westerberg + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + */ + +#include +#include +#include +#include +#include +#include +#include + +#include "intel-lpss.h" + +static const struct intel_lpss_platform_info spt_info = { + .clk_rate = 120000000, +}; + +static const struct acpi_device_id intel_lpss_acpi_ids[] = { + /* SPT */ + { "INT3446", (kernel_ulong_t)&spt_info }, + { "INT3447", (kernel_ulong_t)&spt_info }, + { } +}; +MODULE_DEVICE_TABLE(acpi, intel_lpss_acpi_ids); + +static int intel_lpss_acpi_probe(struct platform_device *pdev) +{ + struct intel_lpss_platform_info *info; + const struct acpi_device_id *id; + + id = acpi_match_device(intel_lpss_acpi_ids, &pdev->dev); + if (!id) + return -ENODEV; + + info = devm_kmemdup(&pdev->dev, (void *)id->driver_data, sizeof(*info), + GFP_KERNEL); + if (!info) + return -ENOMEM; + + info->mem = platform_get_resource(pdev, IORESOURCE_MEM, 0); + info->irq = platform_get_irq(pdev, 0); + + pm_runtime_set_active(&pdev->dev); + pm_runtime_enable(&pdev->dev); + + return intel_lpss_probe(&pdev->dev, info); +} + +static int intel_lpss_acpi_remove(struct platform_device *pdev) +{ + intel_lpss_remove(&pdev->dev); + pm_runtime_disable(&pdev->dev); + + return 0; +} + +static INTEL_LPSS_PM_OPS(intel_lpss_acpi_pm_ops); + +static struct platform_driver intel_lpss_acpi_driver = { + .probe = intel_lpss_acpi_probe, + .remove = intel_lpss_acpi_remove, + .driver = { + .name = "intel-lpss", + .acpi_match_table = intel_lpss_acpi_ids, + .pm = &intel_lpss_acpi_pm_ops, + }, +}; + +module_platform_driver(intel_lpss_acpi_driver); + +MODULE_AUTHOR("Andy Shevchenko "); +MODULE_AUTHOR("Mika Westerberg "); +MODULE_DESCRIPTION("Intel LPSS ACPI driver"); +MODULE_LICENSE("GPL v2"); --- linux-raspi2-4.2.0.orig/drivers/mfd/intel-lpss-pci.c +++ linux-raspi2-4.2.0/drivers/mfd/intel-lpss-pci.c @@ -0,0 +1,113 @@ +/* + * Intel LPSS PCI support. + * + * Copyright (C) 2015, Intel Corporation + * + * Authors: Andy Shevchenko + * Mika Westerberg + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + */ + +#include +#include +#include +#include +#include +#include + +#include "intel-lpss.h" + +static int intel_lpss_pci_probe(struct pci_dev *pdev, + const struct pci_device_id *id) +{ + struct intel_lpss_platform_info *info; + int ret; + + ret = pcim_enable_device(pdev); + if (ret) + return ret; + + info = devm_kmemdup(&pdev->dev, (void *)id->driver_data, sizeof(*info), + GFP_KERNEL); + if (!info) + return -ENOMEM; + + info->mem = &pdev->resource[0]; + info->irq = pdev->irq; + + /* Probably it is enough to set this for iDMA capable devices only */ + pci_set_master(pdev); + + ret = intel_lpss_probe(&pdev->dev, info); + if (ret) + return ret; + + pm_runtime_put(&pdev->dev); + pm_runtime_allow(&pdev->dev); + + return 0; +} + +static void intel_lpss_pci_remove(struct pci_dev *pdev) +{ + pm_runtime_forbid(&pdev->dev); + pm_runtime_get_sync(&pdev->dev); + + intel_lpss_remove(&pdev->dev); +} + +static INTEL_LPSS_PM_OPS(intel_lpss_pci_pm_ops); + +static const struct intel_lpss_platform_info spt_info = { + .clk_rate = 120000000, +}; + +static const struct intel_lpss_platform_info spt_uart_info = { + .clk_rate = 120000000, + .clk_con_id = "baudclk", +}; + +static const struct pci_device_id intel_lpss_pci_ids[] = { + /* SPT-LP */ + { PCI_VDEVICE(INTEL, 0x9d27), (kernel_ulong_t)&spt_uart_info }, + { PCI_VDEVICE(INTEL, 0x9d28), (kernel_ulong_t)&spt_uart_info }, + { PCI_VDEVICE(INTEL, 0x9d29), (kernel_ulong_t)&spt_info }, + { PCI_VDEVICE(INTEL, 0x9d2a), (kernel_ulong_t)&spt_info }, + { PCI_VDEVICE(INTEL, 0x9d60), (kernel_ulong_t)&spt_info }, + { PCI_VDEVICE(INTEL, 0x9d61), (kernel_ulong_t)&spt_info }, + { PCI_VDEVICE(INTEL, 0x9d62), (kernel_ulong_t)&spt_info }, + { PCI_VDEVICE(INTEL, 0x9d63), (kernel_ulong_t)&spt_info }, + { PCI_VDEVICE(INTEL, 0x9d64), (kernel_ulong_t)&spt_info }, + { PCI_VDEVICE(INTEL, 0x9d65), (kernel_ulong_t)&spt_info }, + { PCI_VDEVICE(INTEL, 0x9d66), (kernel_ulong_t)&spt_uart_info }, + /* SPT-H */ + { PCI_VDEVICE(INTEL, 0xa127), (kernel_ulong_t)&spt_uart_info }, + { PCI_VDEVICE(INTEL, 0xa128), (kernel_ulong_t)&spt_uart_info }, + { PCI_VDEVICE(INTEL, 0xa129), (kernel_ulong_t)&spt_info }, + { PCI_VDEVICE(INTEL, 0xa12a), (kernel_ulong_t)&spt_info }, + { PCI_VDEVICE(INTEL, 0xa160), (kernel_ulong_t)&spt_info }, + { PCI_VDEVICE(INTEL, 0xa161), (kernel_ulong_t)&spt_info }, + { PCI_VDEVICE(INTEL, 0xa166), (kernel_ulong_t)&spt_uart_info }, + { } +}; +MODULE_DEVICE_TABLE(pci, intel_lpss_pci_ids); + +static struct pci_driver intel_lpss_pci_driver = { + .name = "intel-lpss", + .id_table = intel_lpss_pci_ids, + .probe = intel_lpss_pci_probe, + .remove = intel_lpss_pci_remove, + .driver = { + .pm = &intel_lpss_pci_pm_ops, + }, +}; + +module_pci_driver(intel_lpss_pci_driver); + +MODULE_AUTHOR("Andy Shevchenko "); +MODULE_AUTHOR("Mika Westerberg "); +MODULE_DESCRIPTION("Intel LPSS PCI driver"); +MODULE_LICENSE("GPL v2"); --- linux-raspi2-4.2.0.orig/drivers/mfd/intel-lpss.c +++ linux-raspi2-4.2.0/drivers/mfd/intel-lpss.c @@ -0,0 +1,524 @@ +/* + * Intel Sunrisepoint LPSS core support. + * + * Copyright (C) 2015, Intel Corporation + * + * Authors: Andy Shevchenko + * Mika Westerberg + * Heikki Krogerus + * Jarkko Nikula + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "intel-lpss.h" + +#define LPSS_DEV_OFFSET 0x000 +#define LPSS_DEV_SIZE 0x200 +#define LPSS_PRIV_OFFSET 0x200 +#define LPSS_PRIV_SIZE 0x100 +#define LPSS_IDMA64_OFFSET 0x800 +#define LPSS_IDMA64_SIZE 0x800 + +/* Offsets from lpss->priv */ +#define LPSS_PRIV_RESETS 0x04 +#define LPSS_PRIV_RESETS_FUNC BIT(2) +#define LPSS_PRIV_RESETS_IDMA 0x3 + +#define LPSS_PRIV_ACTIVELTR 0x10 +#define LPSS_PRIV_IDLELTR 0x14 + +#define LPSS_PRIV_LTR_REQ BIT(15) +#define LPSS_PRIV_LTR_SCALE_MASK 0xc00 +#define LPSS_PRIV_LTR_SCALE_1US 0x800 +#define LPSS_PRIV_LTR_SCALE_32US 0xc00 +#define LPSS_PRIV_LTR_VALUE_MASK 0x3ff + +#define LPSS_PRIV_SSP_REG 0x20 +#define LPSS_PRIV_SSP_REG_DIS_DMA_FIN BIT(0) + +#define LPSS_PRIV_REMAP_ADDR_LO 0x40 +#define LPSS_PRIV_REMAP_ADDR_HI 0x44 + +#define LPSS_PRIV_CAPS 0xfc +#define LPSS_PRIV_CAPS_NO_IDMA BIT(8) +#define LPSS_PRIV_CAPS_TYPE_SHIFT 4 +#define LPSS_PRIV_CAPS_TYPE_MASK (0xf << LPSS_PRIV_CAPS_TYPE_SHIFT) + +/* This matches the type field in CAPS register */ +enum intel_lpss_dev_type { + LPSS_DEV_I2C = 0, + LPSS_DEV_UART, + LPSS_DEV_SPI, +}; + +struct intel_lpss { + const struct intel_lpss_platform_info *info; + enum intel_lpss_dev_type type; + struct clk *clk; + struct clk_lookup *clock; + const struct mfd_cell *cell; + struct device *dev; + void __iomem *priv; + int devid; + u32 caps; + u32 active_ltr; + u32 idle_ltr; + struct dentry *debugfs; +}; + +static const struct resource intel_lpss_dev_resources[] = { + DEFINE_RES_MEM_NAMED(LPSS_DEV_OFFSET, LPSS_DEV_SIZE, "lpss_dev"), + DEFINE_RES_MEM_NAMED(LPSS_PRIV_OFFSET, LPSS_PRIV_SIZE, "lpss_priv"), + DEFINE_RES_IRQ(0), +}; + +static const struct resource intel_lpss_idma64_resources[] = { + DEFINE_RES_MEM(LPSS_IDMA64_OFFSET, LPSS_IDMA64_SIZE), + DEFINE_RES_IRQ(0), +}; + +#define LPSS_IDMA64_DRIVER_NAME "idma64" + +/* + * Cells needs to be ordered so that the iDMA is created first. This is + * because we need to be sure the DMA is available when the host controller + * driver is probed. + */ +static const struct mfd_cell intel_lpss_idma64_cell = { + .name = LPSS_IDMA64_DRIVER_NAME, + .num_resources = ARRAY_SIZE(intel_lpss_idma64_resources), + .resources = intel_lpss_idma64_resources, +}; + +static const struct mfd_cell intel_lpss_i2c_cell = { + .name = "i2c_designware", + .num_resources = ARRAY_SIZE(intel_lpss_dev_resources), + .resources = intel_lpss_dev_resources, +}; + +static const struct mfd_cell intel_lpss_uart_cell = { + .name = "dw-apb-uart", + .num_resources = ARRAY_SIZE(intel_lpss_dev_resources), + .resources = intel_lpss_dev_resources, +}; + +static const struct mfd_cell intel_lpss_spi_cell = { + .name = "pxa2xx-spi", + .num_resources = ARRAY_SIZE(intel_lpss_dev_resources), + .resources = intel_lpss_dev_resources, +}; + +static DEFINE_IDA(intel_lpss_devid_ida); +static struct dentry *intel_lpss_debugfs; + +static int intel_lpss_request_dma_module(const char *name) +{ + static bool intel_lpss_dma_requested; + + if (intel_lpss_dma_requested) + return 0; + + intel_lpss_dma_requested = true; + return request_module("%s", name); +} + +static void intel_lpss_cache_ltr(struct intel_lpss *lpss) +{ + lpss->active_ltr = readl(lpss->priv + LPSS_PRIV_ACTIVELTR); + lpss->idle_ltr = readl(lpss->priv + LPSS_PRIV_IDLELTR); +} + +static int intel_lpss_debugfs_add(struct intel_lpss *lpss) +{ + struct dentry *dir; + + dir = debugfs_create_dir(dev_name(lpss->dev), intel_lpss_debugfs); + if (IS_ERR(dir)) + return PTR_ERR(dir); + + /* Cache the values into lpss structure */ + intel_lpss_cache_ltr(lpss); + + debugfs_create_x32("capabilities", S_IRUGO, dir, &lpss->caps); + debugfs_create_x32("active_ltr", S_IRUGO, dir, &lpss->active_ltr); + debugfs_create_x32("idle_ltr", S_IRUGO, dir, &lpss->idle_ltr); + + lpss->debugfs = dir; + return 0; +} + +static void intel_lpss_debugfs_remove(struct intel_lpss *lpss) +{ + debugfs_remove_recursive(lpss->debugfs); +} + +static void intel_lpss_ltr_set(struct device *dev, s32 val) +{ + struct intel_lpss *lpss = dev_get_drvdata(dev); + u32 ltr; + + /* + * 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(lpss->priv + LPSS_PRIV_ACTIVELTR); + + if (val == PM_QOS_LATENCY_ANY || val < 0) { + ltr &= ~LPSS_PRIV_LTR_REQ; + } else { + ltr |= LPSS_PRIV_LTR_REQ; + ltr &= ~LPSS_PRIV_LTR_SCALE_MASK; + ltr &= ~LPSS_PRIV_LTR_VALUE_MASK; + + if (val > LPSS_PRIV_LTR_VALUE_MASK) + ltr |= LPSS_PRIV_LTR_SCALE_32US | val >> 5; + else + ltr |= LPSS_PRIV_LTR_SCALE_1US | val; + } + + if (ltr == lpss->active_ltr) + return; + + writel(ltr, lpss->priv + LPSS_PRIV_ACTIVELTR); + writel(ltr, lpss->priv + LPSS_PRIV_IDLELTR); + + /* Cache the values into lpss structure */ + intel_lpss_cache_ltr(lpss); +} + +static void intel_lpss_ltr_expose(struct intel_lpss *lpss) +{ + lpss->dev->power.set_latency_tolerance = intel_lpss_ltr_set; + dev_pm_qos_expose_latency_tolerance(lpss->dev); +} + +static void intel_lpss_ltr_hide(struct intel_lpss *lpss) +{ + dev_pm_qos_hide_latency_tolerance(lpss->dev); + lpss->dev->power.set_latency_tolerance = NULL; +} + +static int intel_lpss_assign_devs(struct intel_lpss *lpss) +{ + unsigned int type; + + type = lpss->caps & LPSS_PRIV_CAPS_TYPE_MASK; + type >>= LPSS_PRIV_CAPS_TYPE_SHIFT; + + switch (type) { + case LPSS_DEV_I2C: + lpss->cell = &intel_lpss_i2c_cell; + break; + case LPSS_DEV_UART: + lpss->cell = &intel_lpss_uart_cell; + break; + case LPSS_DEV_SPI: + lpss->cell = &intel_lpss_spi_cell; + break; + default: + return -ENODEV; + } + + lpss->type = type; + + return 0; +} + +static bool intel_lpss_has_idma(const struct intel_lpss *lpss) +{ + return (lpss->caps & LPSS_PRIV_CAPS_NO_IDMA) == 0; +} + +static void intel_lpss_set_remap_addr(const struct intel_lpss *lpss) +{ + resource_size_t addr = lpss->info->mem->start; + + writel(addr, lpss->priv + LPSS_PRIV_REMAP_ADDR_LO); +#if BITS_PER_LONG > 32 + writel(addr >> 32, lpss->priv + LPSS_PRIV_REMAP_ADDR_HI); +#else + writel(0, lpss->priv + LPSS_PRIV_REMAP_ADDR_HI); +#endif +} + +static void intel_lpss_deassert_reset(const struct intel_lpss *lpss) +{ + u32 value = LPSS_PRIV_RESETS_FUNC | LPSS_PRIV_RESETS_IDMA; + + /* Bring out the device from reset */ + writel(value, lpss->priv + LPSS_PRIV_RESETS); +} + +static void intel_lpss_init_dev(const struct intel_lpss *lpss) +{ + u32 value = LPSS_PRIV_SSP_REG_DIS_DMA_FIN; + + intel_lpss_deassert_reset(lpss); + + if (!intel_lpss_has_idma(lpss)) + return; + + intel_lpss_set_remap_addr(lpss); + + /* Make sure that SPI multiblock DMA transfers are re-enabled */ + if (lpss->type == LPSS_DEV_SPI) + writel(value, lpss->priv + LPSS_PRIV_SSP_REG); +} + +static void intel_lpss_unregister_clock_tree(struct clk *clk) +{ + struct clk *parent; + + while (clk) { + parent = clk_get_parent(clk); + clk_unregister(clk); + clk = parent; + } +} + +static int intel_lpss_register_clock_divider(struct intel_lpss *lpss, + const char *devname, + struct clk **clk) +{ + char name[32]; + struct clk *tmp = *clk; + + snprintf(name, sizeof(name), "%s-enable", devname); + tmp = clk_register_gate(NULL, name, __clk_get_name(tmp), 0, + lpss->priv, 0, 0, NULL); + if (IS_ERR(tmp)) + return PTR_ERR(tmp); + + snprintf(name, sizeof(name), "%s-div", devname); + tmp = clk_register_fractional_divider(NULL, name, __clk_get_name(tmp), + 0, lpss->priv, 1, 15, 16, 15, 0, + NULL); + if (IS_ERR(tmp)) + return PTR_ERR(tmp); + *clk = tmp; + + snprintf(name, sizeof(name), "%s-update", devname); + tmp = clk_register_gate(NULL, name, __clk_get_name(tmp), + CLK_SET_RATE_PARENT, lpss->priv, 31, 0, NULL); + if (IS_ERR(tmp)) + return PTR_ERR(tmp); + *clk = tmp; + + return 0; +} + +static int intel_lpss_register_clock(struct intel_lpss *lpss) +{ + const struct mfd_cell *cell = lpss->cell; + struct clk *clk; + char devname[24]; + int ret; + + if (!lpss->info->clk_rate) + return 0; + + /* Root clock */ + clk = clk_register_fixed_rate(NULL, dev_name(lpss->dev), NULL, + CLK_IS_ROOT, lpss->info->clk_rate); + if (IS_ERR(clk)) + return PTR_ERR(clk); + + snprintf(devname, sizeof(devname), "%s.%d", cell->name, lpss->devid); + + /* + * Support for clock divider only if it has some preset value. + * Otherwise we assume that the divider is not used. + */ + if (lpss->type != LPSS_DEV_I2C) { + ret = intel_lpss_register_clock_divider(lpss, devname, &clk); + if (ret) + goto err_clk_register; + } + + ret = -ENOMEM; + + /* Clock for the host controller */ + lpss->clock = clkdev_create(clk, lpss->info->clk_con_id, "%s", devname); + if (!lpss->clock) + goto err_clk_register; + + lpss->clk = clk; + + return 0; + +err_clk_register: + intel_lpss_unregister_clock_tree(clk); + + return ret; +} + +static void intel_lpss_unregister_clock(struct intel_lpss *lpss) +{ + if (IS_ERR_OR_NULL(lpss->clk)) + return; + + clkdev_drop(lpss->clock); + intel_lpss_unregister_clock_tree(lpss->clk); +} + +int intel_lpss_probe(struct device *dev, + const struct intel_lpss_platform_info *info) +{ + struct intel_lpss *lpss; + int ret; + + if (!info || !info->mem || info->irq <= 0) + return -EINVAL; + + lpss = devm_kzalloc(dev, sizeof(*lpss), GFP_KERNEL); + if (!lpss) + return -ENOMEM; + + lpss->priv = devm_ioremap(dev, info->mem->start + LPSS_PRIV_OFFSET, + LPSS_PRIV_SIZE); + if (!lpss->priv) + return -ENOMEM; + + lpss->info = info; + lpss->dev = dev; + lpss->caps = readl(lpss->priv + LPSS_PRIV_CAPS); + + dev_set_drvdata(dev, lpss); + + ret = intel_lpss_assign_devs(lpss); + if (ret) + return ret; + + intel_lpss_init_dev(lpss); + + lpss->devid = ida_simple_get(&intel_lpss_devid_ida, 0, 0, GFP_KERNEL); + if (lpss->devid < 0) + return lpss->devid; + + ret = intel_lpss_register_clock(lpss); + if (ret) + goto err_clk_register; + + intel_lpss_ltr_expose(lpss); + + ret = intel_lpss_debugfs_add(lpss); + if (ret) + dev_warn(dev, "Failed to create debugfs entries\n"); + + if (intel_lpss_has_idma(lpss)) { + /* + * Ensure the DMA driver is loaded before the host + * controller device appears, so that the host controller + * driver can request its DMA channels as early as + * possible. + * + * If the DMA module is not there that's OK as well. + */ + intel_lpss_request_dma_module(LPSS_IDMA64_DRIVER_NAME); + + ret = mfd_add_devices(dev, lpss->devid, &intel_lpss_idma64_cell, + 1, info->mem, info->irq, NULL); + if (ret) + dev_warn(dev, "Failed to add %s, fallback to PIO\n", + LPSS_IDMA64_DRIVER_NAME); + } + + ret = mfd_add_devices(dev, lpss->devid, lpss->cell, + 1, info->mem, info->irq, NULL); + if (ret) + goto err_remove_ltr; + + return 0; + +err_remove_ltr: + intel_lpss_debugfs_remove(lpss); + intel_lpss_ltr_hide(lpss); + +err_clk_register: + ida_simple_remove(&intel_lpss_devid_ida, lpss->devid); + + return ret; +} +EXPORT_SYMBOL_GPL(intel_lpss_probe); + +void intel_lpss_remove(struct device *dev) +{ + struct intel_lpss *lpss = dev_get_drvdata(dev); + + mfd_remove_devices(dev); + intel_lpss_debugfs_remove(lpss); + intel_lpss_ltr_hide(lpss); + intel_lpss_unregister_clock(lpss); + ida_simple_remove(&intel_lpss_devid_ida, lpss->devid); +} +EXPORT_SYMBOL_GPL(intel_lpss_remove); + +static int resume_lpss_device(struct device *dev, void *data) +{ + pm_runtime_resume(dev); + return 0; +} + +int intel_lpss_prepare(struct device *dev) +{ + /* + * Resume both child devices before entering system sleep. This + * ensures that they are in proper state before they get suspended. + */ + device_for_each_child_reverse(dev, NULL, resume_lpss_device); + return 0; +} +EXPORT_SYMBOL_GPL(intel_lpss_prepare); + +int intel_lpss_suspend(struct device *dev) +{ + return 0; +} +EXPORT_SYMBOL_GPL(intel_lpss_suspend); + +int intel_lpss_resume(struct device *dev) +{ + struct intel_lpss *lpss = dev_get_drvdata(dev); + + intel_lpss_init_dev(lpss); + + return 0; +} +EXPORT_SYMBOL_GPL(intel_lpss_resume); + +static int __init intel_lpss_init(void) +{ + intel_lpss_debugfs = debugfs_create_dir("intel_lpss", NULL); + return 0; +} +module_init(intel_lpss_init); + +static void __exit intel_lpss_exit(void) +{ + debugfs_remove(intel_lpss_debugfs); +} +module_exit(intel_lpss_exit); + +MODULE_AUTHOR("Andy Shevchenko "); +MODULE_AUTHOR("Mika Westerberg "); +MODULE_AUTHOR("Heikki Krogerus "); +MODULE_AUTHOR("Jarkko Nikula "); +MODULE_DESCRIPTION("Intel LPSS core driver"); +MODULE_LICENSE("GPL v2"); --- linux-raspi2-4.2.0.orig/drivers/mfd/intel-lpss.h +++ linux-raspi2-4.2.0/drivers/mfd/intel-lpss.h @@ -0,0 +1,62 @@ +/* + * Intel LPSS core support. + * + * Copyright (C) 2015, Intel Corporation + * + * Authors: Andy Shevchenko + * Mika Westerberg + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + */ + +#ifndef __MFD_INTEL_LPSS_H +#define __MFD_INTEL_LPSS_H + +struct device; +struct resource; + +struct intel_lpss_platform_info { + struct resource *mem; + int irq; + unsigned long clk_rate; + const char *clk_con_id; +}; + +int intel_lpss_probe(struct device *dev, + const struct intel_lpss_platform_info *info); +void intel_lpss_remove(struct device *dev); + +#ifdef CONFIG_PM +int intel_lpss_prepare(struct device *dev); +int intel_lpss_suspend(struct device *dev); +int intel_lpss_resume(struct device *dev); + +#ifdef CONFIG_PM_SLEEP +#define INTEL_LPSS_SLEEP_PM_OPS \ + .prepare = intel_lpss_prepare, \ + .suspend = intel_lpss_suspend, \ + .resume = intel_lpss_resume, \ + .freeze = intel_lpss_suspend, \ + .thaw = intel_lpss_resume, \ + .poweroff = intel_lpss_suspend, \ + .restore = intel_lpss_resume, +#endif + +#define INTEL_LPSS_RUNTIME_PM_OPS \ + .runtime_suspend = intel_lpss_suspend, \ + .runtime_resume = intel_lpss_resume, + +#else /* !CONFIG_PM */ +#define INTEL_LPSS_SLEEP_PM_OPS +#define INTEL_LPSS_RUNTIME_PM_OPS +#endif /* CONFIG_PM */ + +#define INTEL_LPSS_PM_OPS(name) \ +const struct dev_pm_ops name = { \ + INTEL_LPSS_SLEEP_PM_OPS \ + INTEL_LPSS_RUNTIME_PM_OPS \ +} + +#endif /* __MFD_INTEL_LPSS_H */ --- linux-raspi2-4.2.0.orig/drivers/mfd/lpc_ich.c +++ linux-raspi2-4.2.0/drivers/mfd/lpc_ich.c @@ -66,6 +66,7 @@ #include #include #include +#include #define ACPIBASE 0x40 #define ACPIBASE_GPE_OFF 0x28 @@ -835,9 +836,31 @@ priv->actrl_pbase_save = reg_save; } -static void lpc_ich_finalize_cell(struct pci_dev *dev, struct mfd_cell *cell) +static int lpc_ich_finalize_wdt_cell(struct pci_dev *dev) { + struct itco_wdt_platform_data *pdata; struct lpc_ich_priv *priv = pci_get_drvdata(dev); + struct lpc_ich_info *info; + struct mfd_cell *cell = &lpc_ich_cells[LPC_WDT]; + + pdata = devm_kzalloc(&dev->dev, sizeof(*pdata), GFP_KERNEL); + if (!pdata) + return -ENOMEM; + + info = &lpc_chipset_info[priv->chipset]; + + pdata->version = info->iTCO_version; + strlcpy(pdata->name, info->name, sizeof(pdata->name)); + + cell->platform_data = pdata; + cell->pdata_size = sizeof(*pdata); + return 0; +} + +static void lpc_ich_finalize_gpio_cell(struct pci_dev *dev) +{ + struct lpc_ich_priv *priv = pci_get_drvdata(dev); + struct mfd_cell *cell = &lpc_ich_cells[LPC_GPIO]; cell->platform_data = &lpc_chipset_info[priv->chipset]; cell->pdata_size = sizeof(struct lpc_ich_info); @@ -933,7 +956,7 @@ lpc_chipset_info[priv->chipset].use_gpio = ret; lpc_ich_enable_gpio_space(dev); - lpc_ich_finalize_cell(dev, &lpc_ich_cells[LPC_GPIO]); + lpc_ich_finalize_gpio_cell(dev); ret = mfd_add_devices(&dev->dev, PLATFORM_DEVID_AUTO, &lpc_ich_cells[LPC_GPIO], 1, NULL, 0, NULL); @@ -1007,7 +1030,10 @@ res->end = base_addr + ACPIBASE_PMC_END; } - lpc_ich_finalize_cell(dev, &lpc_ich_cells[LPC_WDT]); + ret = lpc_ich_finalize_wdt_cell(dev); + if (ret) + goto wdt_done; + ret = mfd_add_devices(&dev->dev, PLATFORM_DEVID_AUTO, &lpc_ich_cells[LPC_WDT], 1, NULL, 0, NULL); --- linux-raspi2-4.2.0.orig/drivers/mfd/max77843.c +++ linux-raspi2-4.2.0/drivers/mfd/max77843.c @@ -79,7 +79,7 @@ if (!max77843->i2c_chg) { dev_err(&max77843->i2c->dev, "Cannot allocate I2C device for Charger\n"); - return PTR_ERR(max77843->i2c_chg); + return -ENODEV; } i2c_set_clientdata(max77843->i2c_chg, max77843); --- linux-raspi2-4.2.0.orig/drivers/mfd/mfd-core.c +++ linux-raspi2-4.2.0/drivers/mfd/mfd-core.c @@ -302,7 +302,7 @@ { atomic_t *cnts = NULL; - device_for_each_child(parent, &cnts, mfd_remove_devices_fn); + device_for_each_child_reverse(parent, &cnts, mfd_remove_devices_fn); kfree(cnts); } EXPORT_SYMBOL(mfd_remove_devices); --- linux-raspi2-4.2.0.orig/drivers/mfd/rpisense-core.c +++ linux-raspi2-4.2.0/drivers/mfd/rpisense-core.c @@ -0,0 +1,157 @@ +/* + * Raspberry Pi Sense HAT core driver + * http://raspberrypi.org + * + * Copyright (C) 2015 Raspberry Pi + * + * Author: Serge Schneider + * + * 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 driver is based on wm8350 implementation. + */ + +#include +#include +#include +#include +#include +#include +#include +#include + +struct rpisense *rpisense; + +static void rpisense_client_dev_register(struct rpisense *rpisense, + const char *name, + struct platform_device **pdev) +{ + int ret; + + *pdev = platform_device_alloc(name, -1); + if (*pdev == NULL) { + dev_err(rpisense->dev, "Failed to allocate %s\n", name); + return; + } + + (*pdev)->dev.parent = rpisense->dev; + platform_set_drvdata(*pdev, rpisense); + ret = platform_device_add(*pdev); + if (ret != 0) { + dev_err(rpisense->dev, "Failed to register %s: %d\n", + name, ret); + platform_device_put(*pdev); + *pdev = NULL; + } +} + +static int rpisense_probe(struct i2c_client *i2c, + const struct i2c_device_id *id) +{ + int ret; + struct rpisense_js *rpisense_js; + + rpisense = devm_kzalloc(&i2c->dev, sizeof(struct rpisense), GFP_KERNEL); + if (rpisense == NULL) + return -ENOMEM; + + i2c_set_clientdata(i2c, rpisense); + rpisense->dev = &i2c->dev; + rpisense->i2c_client = i2c; + + ret = rpisense_reg_read(rpisense, RPISENSE_WAI); + if (ret > 0) { + if (ret != 's') + return -EINVAL; + } else { + return ret; + } + ret = rpisense_reg_read(rpisense, RPISENSE_VER); + if (ret < 0) + return ret; + + dev_info(rpisense->dev, + "Raspberry Pi Sense HAT firmware version %i\n", ret); + + rpisense_js = &rpisense->joystick; + rpisense_js->keys_desc = devm_gpiod_get(&i2c->dev, + "keys-int", GPIOD_IN); + if (IS_ERR(rpisense_js->keys_desc)) { + dev_warn(&i2c->dev, "Failed to get keys-int descriptor.\n"); + rpisense_js->keys_desc = gpio_to_desc(23); + if (rpisense_js->keys_desc == NULL) { + dev_err(&i2c->dev, "GPIO23 fallback failed.\n"); + return PTR_ERR(rpisense_js->keys_desc); + } + } + rpisense_client_dev_register(rpisense, "rpi-sense-js", + &(rpisense->joystick.pdev)); + rpisense_client_dev_register(rpisense, "rpi-sense-fb", + &(rpisense->framebuffer.pdev)); + + return 0; +} + +static int rpisense_remove(struct i2c_client *i2c) +{ + struct rpisense *rpisense = i2c_get_clientdata(i2c); + + platform_device_unregister(rpisense->joystick.pdev); + return 0; +} + +struct rpisense *rpisense_get_dev(void) +{ + return rpisense; +} +EXPORT_SYMBOL_GPL(rpisense_get_dev); + +s32 rpisense_reg_read(struct rpisense *rpisense, int reg) +{ + int ret = i2c_smbus_read_byte_data(rpisense->i2c_client, reg); + + if (ret < 0) + dev_err(rpisense->dev, "Read from reg %d failed\n", reg); + /* Due to the BCM270x I2C clock stretching bug, some values + * may have MSB set. Clear it to avoid incorrect values. + * */ + return ret & 0x7F; +} +EXPORT_SYMBOL_GPL(rpisense_reg_read); + +int rpisense_block_write(struct rpisense *rpisense, const char *buf, int count) +{ + int ret = i2c_master_send(rpisense->i2c_client, buf, count); + + if (ret < 0) + dev_err(rpisense->dev, "Block write failed\n"); + return ret; +} +EXPORT_SYMBOL_GPL(rpisense_block_write); + +static const struct i2c_device_id rpisense_i2c_id[] = { + { "rpi-sense", 0 }, + { } +}; +MODULE_DEVICE_TABLE(i2c, rpisense_i2c_id); + + +static struct i2c_driver rpisense_driver = { + .driver = { + .name = "rpi-sense", + .owner = THIS_MODULE, + }, + .probe = rpisense_probe, + .remove = rpisense_remove, + .id_table = rpisense_i2c_id, +}; + +module_i2c_driver(rpisense_driver); + +MODULE_DESCRIPTION("Raspberry Pi Sense HAT core driver"); +MODULE_AUTHOR("Serge Schneider "); +MODULE_LICENSE("GPL"); + --- linux-raspi2-4.2.0.orig/drivers/mfd/twl6040.c +++ linux-raspi2-4.2.0/drivers/mfd/twl6040.c @@ -647,6 +647,8 @@ twl6040->clk32k = devm_clk_get(&client->dev, "clk32k"); if (IS_ERR(twl6040->clk32k)) { + if (PTR_ERR(twl6040->clk32k) == -EPROBE_DEFER) + return -EPROBE_DEFER; dev_info(&client->dev, "clk32k is not handled\n"); twl6040->clk32k = NULL; } --- linux-raspi2-4.2.0.orig/drivers/misc/Kconfig +++ linux-raspi2-4.2.0/drivers/misc/Kconfig @@ -10,6 +10,14 @@ select INPUT_POLLDEV default n +config BCM2835_SMI + tristate "Broadcom 283x Secondary Memory Interface driver" + depends on MACH_BCM2708 || MACH_BCM2709 || ARCH_BCM2835 + default m + help + Driver for enabling and using Broadcom's Secondary/Slow Memory Interface. + Appears as /dev/bcm2835_smi. For ioctl interface see drivers/misc/bcm2835_smi.h + config AD525X_DPOT tristate "Analog Devices Digital Potentiometers" depends on (I2C || SPI) && SYSFS @@ -523,6 +531,7 @@ source "drivers/misc/altera-stapl/Kconfig" source "drivers/misc/mei/Kconfig" source "drivers/misc/vmw_vmci/Kconfig" +source "drivers/misc/vc04_services/Kconfig" source "drivers/misc/mic/Kconfig" source "drivers/misc/genwqe/Kconfig" source "drivers/misc/echo/Kconfig" --- linux-raspi2-4.2.0.orig/drivers/misc/Makefile +++ linux-raspi2-4.2.0/drivers/misc/Makefile @@ -9,6 +9,7 @@ obj-$(CONFIG_INTEL_MID_PTI) += pti.o obj-$(CONFIG_ATMEL_SSC) += atmel-ssc.o obj-$(CONFIG_ATMEL_TCLIB) += atmel_tclib.o +obj-$(CONFIG_BCM2835_SMI) += bcm2835_smi.o obj-$(CONFIG_BMP085) += bmp085.o obj-$(CONFIG_BMP085_I2C) += bmp085-i2c.o obj-$(CONFIG_BMP085_SPI) += bmp085-spi.o @@ -50,6 +51,7 @@ obj-$(CONFIG_VMWARE_VMCI) += vmw_vmci/ obj-$(CONFIG_LATTICE_ECP3_CONFIG) += lattice-ecp3-config.o obj-$(CONFIG_SRAM) += sram.o +obj-$(CONFIG_BCM2708_VCHIQ) += vc04_services/ obj-y += mic/ obj-$(CONFIG_GENWQE) += genwqe/ obj-$(CONFIG_ECHO) += echo/ --- linux-raspi2-4.2.0.orig/drivers/misc/bcm2835_smi.c +++ linux-raspi2-4.2.0/drivers/misc/bcm2835_smi.c @@ -0,0 +1,985 @@ +/** + * Broadcom Secondary Memory Interface driver + * + * Written by Luke Wren + * Copyright (c) 2015, Raspberry Pi (Trading) Ltd. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions, and the following disclaimer, + * without modification. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The names of the above-listed copyright holders may not be used + * to endorse or promote products derived from this software without + * specific prior written permission. + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") version 2, as published by the Free + * Software Foundation. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS + * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#define BCM2835_SMI_IMPLEMENTATION +#include + +#define DRIVER_NAME "smi-bcm2835" + +#define N_PAGES_FROM_BYTES(n) ((n + PAGE_SIZE-1) / PAGE_SIZE) + +#define DMA_WRITE_TO_MEM true +#define DMA_READ_FROM_MEM false + +struct bcm2835_smi_instance { + struct device *dev; + struct smi_settings settings; + __iomem void *smi_regs_ptr, *cm_smi_regs_ptr; + dma_addr_t smi_regs_busaddr; + + struct dma_chan *dma_chan; + struct dma_slave_config dma_config; + + struct bcm2835_smi_bounce_info bounce; + + struct scatterlist buffer_sgl; + + int clock_source; + int clock_divisor; + + /* Sometimes we are called into in an atomic context (e.g. by + JFFS2 + MTD) so we can't use a mutex */ + spinlock_t transaction_lock; +}; + +/**************************************************************************** +* +* SMI clock manager setup +* +***************************************************************************/ + +static inline void write_smi_cm_reg(struct bcm2835_smi_instance *inst, + u32 val, unsigned reg) +{ + writel(CM_PWD | val, inst->cm_smi_regs_ptr + reg); +} + +static inline u32 read_smi_cm_reg(struct bcm2835_smi_instance *inst, + unsigned reg) +{ + return readl(inst->cm_smi_regs_ptr + reg); +} + +static void smi_setup_clock(struct bcm2835_smi_instance *inst) +{ + dev_dbg(inst->dev, "Setting up clock..."); + /* Disable SMI clock and wait for it to stop. */ + write_smi_cm_reg(inst, 0, CM_SMI_CTL); + while (read_smi_cm_reg(inst, CM_SMI_CTL) & CM_SMI_CTL_BUSY) + ; + + write_smi_cm_reg(inst, (inst->clock_divisor << CM_SMI_DIV_DIVI_OFFS), + CM_SMI_DIV); + write_smi_cm_reg(inst, (inst->clock_source << CM_SMI_CTL_SRC_OFFS), + CM_SMI_CTL); + + /* Enable the clock */ + write_smi_cm_reg(inst, (inst->clock_source << CM_SMI_CTL_SRC_OFFS) | + CM_SMI_CTL_ENAB, CM_SMI_CTL); +} + +/**************************************************************************** +* +* SMI peripheral setup +* +***************************************************************************/ + +static inline void write_smi_reg(struct bcm2835_smi_instance *inst, + u32 val, unsigned reg) +{ + writel(val, inst->smi_regs_ptr + reg); +} + +static inline u32 read_smi_reg(struct bcm2835_smi_instance *inst, unsigned reg) +{ + return readl(inst->smi_regs_ptr + reg); +} + +/* Token-paste macro for e.g SMIDSR_RSTROBE -> value of SMIDSR_RSTROBE_MASK */ +#define _CONCAT(x, y) x##y +#define CONCAT(x, y) _CONCAT(x, y) + +#define SET_BIT_FIELD(dest, field, bits) ((dest) = \ + ((dest) & ~CONCAT(field, _MASK)) | (((bits) << CONCAT(field, _OFFS))& \ + CONCAT(field, _MASK))) +#define GET_BIT_FIELD(src, field) (((src) & \ + CONCAT(field, _MASK)) >> CONCAT(field, _OFFS)) + +static void smi_dump_context_labelled(struct bcm2835_smi_instance *inst, + const char *label) +{ + dev_err(inst->dev, "SMI context dump: %s", label); + dev_err(inst->dev, "SMICS: 0x%08x", read_smi_reg(inst, SMICS)); + dev_err(inst->dev, "SMIL: 0x%08x", read_smi_reg(inst, SMIL)); + dev_err(inst->dev, "SMIDSR: 0x%08x", read_smi_reg(inst, SMIDSR0)); + dev_err(inst->dev, "SMIDSW: 0x%08x", read_smi_reg(inst, SMIDSW0)); + dev_err(inst->dev, "SMIDC: 0x%08x", read_smi_reg(inst, SMIDC)); + dev_err(inst->dev, "SMIFD: 0x%08x", read_smi_reg(inst, SMIFD)); + dev_err(inst->dev, " "); +} + +static inline void smi_dump_context(struct bcm2835_smi_instance *inst) +{ + smi_dump_context_labelled(inst, ""); +} + +static void smi_get_default_settings(struct bcm2835_smi_instance *inst) +{ + struct smi_settings *settings = &inst->settings; + + settings->data_width = SMI_WIDTH_16BIT; + settings->pack_data = true; + + settings->read_setup_time = 1; + settings->read_hold_time = 1; + settings->read_pace_time = 1; + settings->read_strobe_time = 3; + + settings->write_setup_time = settings->read_setup_time; + settings->write_hold_time = settings->read_hold_time; + settings->write_pace_time = settings->read_pace_time; + settings->write_strobe_time = settings->read_strobe_time; + + settings->dma_enable = true; + settings->dma_passthrough_enable = false; + settings->dma_read_thresh = 0x01; + settings->dma_write_thresh = 0x3f; + settings->dma_panic_read_thresh = 0x20; + settings->dma_panic_write_thresh = 0x20; +} + +void bcm2835_smi_set_regs_from_settings(struct bcm2835_smi_instance *inst) +{ + struct smi_settings *settings = &inst->settings; + int smidsr_temp = 0, smidsw_temp = 0, smics_temp, + smidcs_temp, smidc_temp = 0; + + spin_lock(&inst->transaction_lock); + + /* temporarily disable the peripheral: */ + smics_temp = read_smi_reg(inst, SMICS); + write_smi_reg(inst, 0, SMICS); + smidcs_temp = read_smi_reg(inst, SMIDCS); + write_smi_reg(inst, 0, SMIDCS); + + if (settings->pack_data) + smics_temp |= SMICS_PXLDAT; + else + smics_temp &= ~SMICS_PXLDAT; + + SET_BIT_FIELD(smidsr_temp, SMIDSR_RWIDTH, settings->data_width); + SET_BIT_FIELD(smidsr_temp, SMIDSR_RSETUP, settings->read_setup_time); + SET_BIT_FIELD(smidsr_temp, SMIDSR_RHOLD, settings->read_hold_time); + SET_BIT_FIELD(smidsr_temp, SMIDSR_RPACE, settings->read_pace_time); + SET_BIT_FIELD(smidsr_temp, SMIDSR_RSTROBE, settings->read_strobe_time); + write_smi_reg(inst, smidsr_temp, SMIDSR0); + + SET_BIT_FIELD(smidsw_temp, SMIDSW_WWIDTH, settings->data_width); + if (settings->data_width == SMI_WIDTH_8BIT) + smidsw_temp |= SMIDSW_WSWAP; + else + smidsw_temp &= ~SMIDSW_WSWAP; + SET_BIT_FIELD(smidsw_temp, SMIDSW_WSETUP, settings->write_setup_time); + SET_BIT_FIELD(smidsw_temp, SMIDSW_WHOLD, settings->write_hold_time); + SET_BIT_FIELD(smidsw_temp, SMIDSW_WPACE, settings->write_pace_time); + SET_BIT_FIELD(smidsw_temp, SMIDSW_WSTROBE, + settings->write_strobe_time); + write_smi_reg(inst, smidsw_temp, SMIDSW0); + + SET_BIT_FIELD(smidc_temp, SMIDC_REQR, settings->dma_read_thresh); + SET_BIT_FIELD(smidc_temp, SMIDC_REQW, settings->dma_write_thresh); + SET_BIT_FIELD(smidc_temp, SMIDC_PANICR, + settings->dma_panic_read_thresh); + SET_BIT_FIELD(smidc_temp, SMIDC_PANICW, + settings->dma_panic_write_thresh); + if (settings->dma_passthrough_enable) { + smidc_temp |= SMIDC_DMAP; + smidsr_temp |= SMIDSR_RDREQ; + write_smi_reg(inst, smidsr_temp, SMIDSR0); + smidsw_temp |= SMIDSW_WDREQ; + write_smi_reg(inst, smidsw_temp, SMIDSW0); + } else + smidc_temp &= ~SMIDC_DMAP; + if (settings->dma_enable) + smidc_temp |= SMIDC_DMAEN; + else + smidc_temp &= ~SMIDC_DMAEN; + + write_smi_reg(inst, smidc_temp, SMIDC); + + /* re-enable (if was previously enabled) */ + write_smi_reg(inst, smics_temp, SMICS); + write_smi_reg(inst, smidcs_temp, SMIDCS); + + spin_unlock(&inst->transaction_lock); +} +EXPORT_SYMBOL(bcm2835_smi_set_regs_from_settings); + +struct smi_settings *bcm2835_smi_get_settings_from_regs + (struct bcm2835_smi_instance *inst) +{ + struct smi_settings *settings = &inst->settings; + int smidsr, smidsw, smidc; + + spin_lock(&inst->transaction_lock); + + smidsr = read_smi_reg(inst, SMIDSR0); + smidsw = read_smi_reg(inst, SMIDSW0); + smidc = read_smi_reg(inst, SMIDC); + + settings->pack_data = (read_smi_reg(inst, SMICS) & SMICS_PXLDAT) ? + true : false; + + settings->data_width = GET_BIT_FIELD(smidsr, SMIDSR_RWIDTH); + settings->read_setup_time = GET_BIT_FIELD(smidsr, SMIDSR_RSETUP); + settings->read_hold_time = GET_BIT_FIELD(smidsr, SMIDSR_RHOLD); + settings->read_pace_time = GET_BIT_FIELD(smidsr, SMIDSR_RPACE); + settings->read_strobe_time = GET_BIT_FIELD(smidsr, SMIDSR_RSTROBE); + + settings->write_setup_time = GET_BIT_FIELD(smidsw, SMIDSW_WSETUP); + settings->write_hold_time = GET_BIT_FIELD(smidsw, SMIDSW_WHOLD); + settings->write_pace_time = GET_BIT_FIELD(smidsw, SMIDSW_WPACE); + settings->write_strobe_time = GET_BIT_FIELD(smidsw, SMIDSW_WSTROBE); + + settings->dma_read_thresh = GET_BIT_FIELD(smidc, SMIDC_REQR); + settings->dma_write_thresh = GET_BIT_FIELD(smidc, SMIDC_REQW); + settings->dma_panic_read_thresh = GET_BIT_FIELD(smidc, SMIDC_PANICR); + settings->dma_panic_write_thresh = GET_BIT_FIELD(smidc, SMIDC_PANICW); + settings->dma_passthrough_enable = (smidc & SMIDC_DMAP) ? true : false; + settings->dma_enable = (smidc & SMIDC_DMAEN) ? true : false; + + spin_unlock(&inst->transaction_lock); + + return settings; +} +EXPORT_SYMBOL(bcm2835_smi_get_settings_from_regs); + +static inline void smi_set_address(struct bcm2835_smi_instance *inst, + unsigned int address) +{ + int smia_temp = 0, smida_temp = 0; + + SET_BIT_FIELD(smia_temp, SMIA_ADDR, address); + SET_BIT_FIELD(smida_temp, SMIDA_ADDR, address); + + /* Write to both address registers - user doesn't care whether we're + doing programmed or direct transfers. */ + write_smi_reg(inst, smia_temp, SMIA); + write_smi_reg(inst, smida_temp, SMIDA); +} + +static void smi_setup_regs(struct bcm2835_smi_instance *inst) +{ + + dev_dbg(inst->dev, "Initialising SMI registers..."); + /* Disable the peripheral if already enabled */ + write_smi_reg(inst, 0, SMICS); + write_smi_reg(inst, 0, SMIDCS); + + smi_get_default_settings(inst); + bcm2835_smi_set_regs_from_settings(inst); + smi_set_address(inst, 0); + + write_smi_reg(inst, read_smi_reg(inst, SMICS) | SMICS_ENABLE, SMICS); + write_smi_reg(inst, read_smi_reg(inst, SMIDCS) | SMIDCS_ENABLE, + SMIDCS); +} + +/**************************************************************************** +* +* Low-level SMI access functions +* Other modules should use the exported higher-level functions e.g. +* bcm2835_smi_write_buf() unless they have a good reason to use these +* +***************************************************************************/ + +static inline uint32_t smi_read_single_word(struct bcm2835_smi_instance *inst) +{ + int timeout = 0; + + write_smi_reg(inst, SMIDCS_ENABLE, SMIDCS); + write_smi_reg(inst, SMIDCS_ENABLE | SMIDCS_START, SMIDCS); + /* Make sure things happen in the right order...*/ + mb(); + while (!(read_smi_reg(inst, SMIDCS) & SMIDCS_DONE) && + ++timeout < 10000) + ; + if (timeout < 10000) + return read_smi_reg(inst, SMIDD); + + dev_err(inst->dev, + "SMI direct read timed out (is the clock set up correctly?)"); + return 0; +} + +static inline void smi_write_single_word(struct bcm2835_smi_instance *inst, + uint32_t data) +{ + int timeout = 0; + + write_smi_reg(inst, SMIDCS_ENABLE | SMIDCS_WRITE, SMIDCS); + write_smi_reg(inst, data, SMIDD); + write_smi_reg(inst, SMIDCS_ENABLE | SMIDCS_WRITE | SMIDCS_START, + SMIDCS); + + while (!(read_smi_reg(inst, SMIDCS) & SMIDCS_DONE) && + ++timeout < 10000) + ; + if (timeout >= 10000) + dev_err(inst->dev, + "SMI direct write timed out (is the clock set up correctly?)"); +} + +/* Initiates a programmed read into the read FIFO. It is up to the caller to + * read data from the FIFO - either via paced DMA transfer, + * or polling SMICS_RXD to check whether data is available. + * SMICS_ACTIVE will go low upon completion. */ +static void smi_init_programmed_read(struct bcm2835_smi_instance *inst, + int num_transfers) +{ + int smics_temp; + + /* Disable the peripheral: */ + smics_temp = read_smi_reg(inst, SMICS) & ~(SMICS_ENABLE | SMICS_WRITE); + write_smi_reg(inst, smics_temp, SMICS); + while (read_smi_reg(inst, SMICS) & SMICS_ENABLE) + ; + + /* Program the transfer count: */ + write_smi_reg(inst, num_transfers, SMIL); + + /* re-enable and start: */ + smics_temp |= SMICS_ENABLE; + write_smi_reg(inst, smics_temp, SMICS); + smics_temp |= SMICS_CLEAR; + /* Just to be certain: */ + mb(); + while (read_smi_reg(inst, SMICS) & SMICS_ACTIVE) + ; + write_smi_reg(inst, smics_temp, SMICS); + smics_temp |= SMICS_START; + write_smi_reg(inst, smics_temp, SMICS); +} + +/* Initiates a programmed write sequence, using data from the write FIFO. + * It is up to the caller to initiate a DMA transfer before calling, + * or use another method to keep the write FIFO topped up. + * SMICS_ACTIVE will go low upon completion. + */ +static void smi_init_programmed_write(struct bcm2835_smi_instance *inst, + int num_transfers) +{ + int smics_temp; + + /* Disable the peripheral: */ + smics_temp = read_smi_reg(inst, SMICS) & ~SMICS_ENABLE; + write_smi_reg(inst, smics_temp, SMICS); + while (read_smi_reg(inst, SMICS) & SMICS_ENABLE) + ; + + /* Program the transfer count: */ + write_smi_reg(inst, num_transfers, SMIL); + + /* setup, re-enable and start: */ + smics_temp |= SMICS_WRITE | SMICS_ENABLE; + write_smi_reg(inst, smics_temp, SMICS); + smics_temp |= SMICS_START; + write_smi_reg(inst, smics_temp, SMICS); +} + +/* Initiate a read and then poll FIFO for data, reading out as it appears. */ +static void smi_read_fifo(struct bcm2835_smi_instance *inst, + uint32_t *dest, int n_bytes) +{ + if (read_smi_reg(inst, SMICS) & SMICS_RXD) { + smi_dump_context_labelled(inst, + "WARNING: read FIFO not empty at start of read call."); + while (read_smi_reg(inst, SMICS)) + ; + } + + /* Dispatch the read: */ + if (inst->settings.data_width == SMI_WIDTH_8BIT) + smi_init_programmed_read(inst, n_bytes); + else if (inst->settings.data_width == SMI_WIDTH_16BIT) + smi_init_programmed_read(inst, n_bytes / 2); + else { + dev_err(inst->dev, "Unsupported data width for read."); + return; + } + + /* Poll FIFO to keep it empty */ + while (!(read_smi_reg(inst, SMICS) & SMICS_DONE)) + if (read_smi_reg(inst, SMICS) & SMICS_RXD) + *dest++ = read_smi_reg(inst, SMID); + + /* Ensure that the FIFO is emptied */ + if (read_smi_reg(inst, SMICS) & SMICS_RXD) { + int fifo_count; + + fifo_count = GET_BIT_FIELD(read_smi_reg(inst, SMIFD), + SMIFD_FCNT); + while (fifo_count--) + *dest++ = read_smi_reg(inst, SMID); + } + + if (!(read_smi_reg(inst, SMICS) & SMICS_DONE)) + smi_dump_context_labelled(inst, + "WARNING: transaction finished but done bit not set."); + + if (read_smi_reg(inst, SMICS) & SMICS_RXD) + smi_dump_context_labelled(inst, + "WARNING: read FIFO not empty at end of read call."); + +} + +/* Initiate a write, and then keep the FIFO topped up. */ +static void smi_write_fifo(struct bcm2835_smi_instance *inst, + uint32_t *src, int n_bytes) +{ + int i, timeout = 0; + + /* Empty FIFOs if not already so */ + if (!(read_smi_reg(inst, SMICS) & SMICS_TXE)) { + smi_dump_context_labelled(inst, + "WARNING: write fifo not empty at start of write call."); + write_smi_reg(inst, read_smi_reg(inst, SMICS) | SMICS_CLEAR, + SMICS); + } + + /* Initiate the transfer */ + if (inst->settings.data_width == SMI_WIDTH_8BIT) + smi_init_programmed_write(inst, n_bytes); + else if (inst->settings.data_width == SMI_WIDTH_16BIT) + smi_init_programmed_write(inst, n_bytes / 2); + else { + dev_err(inst->dev, "Unsupported data width for write."); + return; + } + /* Fill the FIFO: */ + for (i = 0; i < (n_bytes - 1) / 4 + 1; ++i) { + while (!(read_smi_reg(inst, SMICS) & SMICS_TXD)) + ; + write_smi_reg(inst, *src++, SMID); + } + /* Busy wait... */ + while (!(read_smi_reg(inst, SMICS) & SMICS_DONE) && ++timeout < + 1000000) + ; + if (timeout >= 1000000) + smi_dump_context_labelled(inst, + "Timed out on write operation!"); + if (!(read_smi_reg(inst, SMICS) & SMICS_TXE)) + smi_dump_context_labelled(inst, + "WARNING: FIFO not empty at end of write operation."); +} + +/**************************************************************************** +* +* SMI DMA operations +* +***************************************************************************/ + +/* Disable SMI and put it into the correct direction before doing DMA setup. + Stops spurious DREQs during setup. Peripheral is re-enabled by init_*() */ +static void smi_disable(struct bcm2835_smi_instance *inst, + enum dma_transfer_direction direction) +{ + int smics_temp = read_smi_reg(inst, SMICS) & ~SMICS_ENABLE; + + if (direction == DMA_DEV_TO_MEM) + smics_temp &= ~SMICS_WRITE; + else + smics_temp |= SMICS_WRITE; + write_smi_reg(inst, smics_temp, SMICS); + while (read_smi_reg(inst, SMICS) & SMICS_ACTIVE) + ; +} + +static struct scatterlist *smi_scatterlist_from_buffer( + struct bcm2835_smi_instance *inst, + dma_addr_t buf, + size_t len, + struct scatterlist *sg) +{ + sg_init_table(sg, 1); + sg_dma_address(sg) = buf; + sg_dma_len(sg) = len; + return sg; +} + +static void smi_dma_callback_user_copy(void *param) +{ + /* Notify the bottom half that a chunk is ready for user copy */ + struct bcm2835_smi_instance *inst = + (struct bcm2835_smi_instance *)param; + + up(&inst->bounce.callback_sem); +} + +/* Creates a descriptor, assigns the given callback, and submits the + descriptor to dmaengine. Does not block - can queue up multiple + descriptors and then wait for them all to complete. + sg_len is the number of control blocks, NOT the number of bytes. + dir can be DMA_MEM_TO_DEV or DMA_DEV_TO_MEM. + callback can be NULL - in this case it is not called. */ +static inline struct dma_async_tx_descriptor *smi_dma_submit_sgl( + struct bcm2835_smi_instance *inst, + struct scatterlist *sgl, + size_t sg_len, + enum dma_transfer_direction dir, + dma_async_tx_callback callback) +{ + struct dma_async_tx_descriptor *desc; + + desc = dmaengine_prep_slave_sg(inst->dma_chan, + sgl, + sg_len, + dir, + DMA_PREP_INTERRUPT | DMA_CTRL_ACK | + DMA_PREP_FENCE); + if (!desc) { + dev_err(inst->dev, "read_sgl: dma slave preparation failed!"); + write_smi_reg(inst, read_smi_reg(inst, SMICS) & ~SMICS_ACTIVE, + SMICS); + while (read_smi_reg(inst, SMICS) & SMICS_ACTIVE) + cpu_relax(); + write_smi_reg(inst, read_smi_reg(inst, SMICS) | SMICS_ACTIVE, + SMICS); + return NULL; + } + desc->callback = callback; + desc->callback_param = inst; + if (dmaengine_submit(desc) < 0) + return NULL; + return desc; +} + +/* NB this function blocks until the transfer is complete */ +static void +smi_dma_read_sgl(struct bcm2835_smi_instance *inst, + struct scatterlist *sgl, size_t sg_len, size_t n_bytes) +{ + struct dma_async_tx_descriptor *desc; + + /* Disable SMI and set to read before dispatching DMA - if SMI is in + * write mode and TX fifo is empty, it will generate a DREQ which may + * cause the read DMA to complete before the SMI read command is even + * dispatched! We want to dispatch DMA before SMI read so that reading + * is gapless, for logic analyser. + */ + + smi_disable(inst, DMA_DEV_TO_MEM); + + desc = smi_dma_submit_sgl(inst, sgl, sg_len, DMA_DEV_TO_MEM, NULL); + dma_async_issue_pending(inst->dma_chan); + + if (inst->settings.data_width == SMI_WIDTH_8BIT) + smi_init_programmed_read(inst, n_bytes); + else + smi_init_programmed_read(inst, n_bytes / 2); + + if (dma_wait_for_async_tx(desc) == DMA_ERROR) + smi_dump_context_labelled(inst, "DMA timeout!"); +} + +static void +smi_dma_write_sgl(struct bcm2835_smi_instance *inst, + struct scatterlist *sgl, size_t sg_len, size_t n_bytes) +{ + struct dma_async_tx_descriptor *desc; + + if (inst->settings.data_width == SMI_WIDTH_8BIT) + smi_init_programmed_write(inst, n_bytes); + else + smi_init_programmed_write(inst, n_bytes / 2); + + desc = smi_dma_submit_sgl(inst, sgl, sg_len, DMA_MEM_TO_DEV, NULL); + dma_async_issue_pending(inst->dma_chan); + + if (dma_wait_for_async_tx(desc) == DMA_ERROR) + smi_dump_context_labelled(inst, "DMA timeout!"); + else + /* Wait for SMI to finish our writes */ + while (!(read_smi_reg(inst, SMICS) & SMICS_DONE)) + cpu_relax(); +} + +ssize_t bcm2835_smi_user_dma( + struct bcm2835_smi_instance *inst, + enum dma_transfer_direction dma_dir, + char __user *user_ptr, size_t count, + struct bcm2835_smi_bounce_info **bounce) +{ + int chunk_no = 0, chunk_size, count_left = count; + struct scatterlist *sgl; + void (*init_trans_func)(struct bcm2835_smi_instance *, int); + + spin_lock(&inst->transaction_lock); + + if (dma_dir == DMA_DEV_TO_MEM) + init_trans_func = smi_init_programmed_read; + else + init_trans_func = smi_init_programmed_write; + + smi_disable(inst, dma_dir); + + sema_init(&inst->bounce.callback_sem, 0); + if (bounce) + *bounce = &inst->bounce; + while (count_left) { + chunk_size = count_left > DMA_BOUNCE_BUFFER_SIZE ? + DMA_BOUNCE_BUFFER_SIZE : count_left; + if (chunk_size == DMA_BOUNCE_BUFFER_SIZE) { + sgl = + &inst->bounce.sgl[chunk_no % DMA_BOUNCE_BUFFER_COUNT]; + } else { + sgl = smi_scatterlist_from_buffer( + inst, + inst->bounce.phys[ + chunk_no % DMA_BOUNCE_BUFFER_COUNT], + chunk_size, + &inst->buffer_sgl); + } + + if (!smi_dma_submit_sgl(inst, sgl, 1, dma_dir, + smi_dma_callback_user_copy + )) { + dev_err(inst->dev, "sgl submit failed"); + count = 0; + goto out; + } + count_left -= chunk_size; + chunk_no++; + } + dma_async_issue_pending(inst->dma_chan); + + if (inst->settings.data_width == SMI_WIDTH_8BIT) + init_trans_func(inst, count); + else if (inst->settings.data_width == SMI_WIDTH_16BIT) + init_trans_func(inst, count / 2); +out: + spin_unlock(&inst->transaction_lock); + return count; +} +EXPORT_SYMBOL(bcm2835_smi_user_dma); + + +/**************************************************************************** +* +* High level buffer transfer functions - for use by other drivers +* +***************************************************************************/ + +/* Buffer must be physically contiguous - i.e. kmalloc, not vmalloc! */ +void bcm2835_smi_write_buf( + struct bcm2835_smi_instance *inst, + const void *buf, size_t n_bytes) +{ + int odd_bytes = n_bytes & 0x3; + + n_bytes -= odd_bytes; + + spin_lock(&inst->transaction_lock); + + if (n_bytes > DMA_THRESHOLD_BYTES) { + dma_addr_t phy_addr = dma_map_single( + inst->dev, + (void *)buf, + n_bytes, + DMA_MEM_TO_DEV); + struct scatterlist *sgl = + smi_scatterlist_from_buffer(inst, phy_addr, n_bytes, + &inst->buffer_sgl); + + if (!sgl) { + smi_dump_context_labelled(inst, + "Error: could not create scatterlist for write!"); + goto out; + } + smi_dma_write_sgl(inst, sgl, 1, n_bytes); + + dma_unmap_single + (inst->dev, phy_addr, n_bytes, DMA_MEM_TO_DEV); + } else if (n_bytes) { + smi_write_fifo(inst, (uint32_t *) buf, n_bytes); + } + buf += n_bytes; + + if (inst->settings.data_width == SMI_WIDTH_8BIT) { + while (odd_bytes--) + smi_write_single_word(inst, *(uint8_t *) (buf++)); + } else { + while (odd_bytes >= 2) { + smi_write_single_word(inst, *(uint16_t *)buf); + buf += 2; + odd_bytes -= 2; + } + if (odd_bytes) { + /* Reading an odd number of bytes on a 16 bit bus is + a user bug. It's kinder to fail early and tell them + than to e.g. transparently give them the bottom byte + of a 16 bit transfer. */ + dev_err(inst->dev, + "WARNING: odd number of bytes specified for wide transfer."); + dev_err(inst->dev, + "At least one byte dropped as a result."); + dump_stack(); + } + } +out: + spin_unlock(&inst->transaction_lock); +} +EXPORT_SYMBOL(bcm2835_smi_write_buf); + +void bcm2835_smi_read_buf(struct bcm2835_smi_instance *inst, + void *buf, size_t n_bytes) +{ + + /* SMI is inherently 32-bit, which causes surprising amounts of mess + for bytes % 4 != 0. Easiest to avoid this mess altogether + by handling remainder separately. */ + int odd_bytes = n_bytes & 0x3; + + spin_lock(&inst->transaction_lock); + n_bytes -= odd_bytes; + if (n_bytes > DMA_THRESHOLD_BYTES) { + dma_addr_t phy_addr = dma_map_single(inst->dev, + buf, n_bytes, + DMA_DEV_TO_MEM); + struct scatterlist *sgl = smi_scatterlist_from_buffer( + inst, phy_addr, n_bytes, + &inst->buffer_sgl); + if (!sgl) { + smi_dump_context_labelled(inst, + "Error: could not create scatterlist for read!"); + goto out; + } + smi_dma_read_sgl(inst, sgl, 1, n_bytes); + dma_unmap_single(inst->dev, phy_addr, n_bytes, DMA_DEV_TO_MEM); + } else if (n_bytes) { + smi_read_fifo(inst, (uint32_t *)buf, n_bytes); + } + buf += n_bytes; + + if (inst->settings.data_width == SMI_WIDTH_8BIT) { + while (odd_bytes--) + *((uint8_t *) (buf++)) = smi_read_single_word(inst); + } else { + while (odd_bytes >= 2) { + *(uint16_t *) buf = smi_read_single_word(inst); + buf += 2; + odd_bytes -= 2; + } + if (odd_bytes) { + dev_err(inst->dev, + "WARNING: odd number of bytes specified for wide transfer."); + dev_err(inst->dev, + "At least one byte dropped as a result."); + dump_stack(); + } + } +out: + spin_unlock(&inst->transaction_lock); +} +EXPORT_SYMBOL(bcm2835_smi_read_buf); + +void bcm2835_smi_set_address(struct bcm2835_smi_instance *inst, + unsigned int address) +{ + spin_lock(&inst->transaction_lock); + smi_set_address(inst, address); + spin_unlock(&inst->transaction_lock); +} +EXPORT_SYMBOL(bcm2835_smi_set_address); + +struct bcm2835_smi_instance *bcm2835_smi_get(struct device_node *node) +{ + struct platform_device *pdev; + + if (!node) + return NULL; + + pdev = of_find_device_by_node(node); + if (!pdev) + return NULL; + + return platform_get_drvdata(pdev); +} +EXPORT_SYMBOL(bcm2835_smi_get); + +/**************************************************************************** +* +* bcm2835_smi_probe - called when the driver is loaded. +* +***************************************************************************/ + +static int bcm2835_smi_dma_setup(struct bcm2835_smi_instance *inst) +{ + int i, rv = 0; + + inst->dma_chan = dma_request_slave_channel(inst->dev, "rx-tx"); + + inst->dma_config.src_addr_width = DMA_SLAVE_BUSWIDTH_4_BYTES; + inst->dma_config.dst_addr_width = DMA_SLAVE_BUSWIDTH_4_BYTES; + inst->dma_config.src_addr = inst->smi_regs_busaddr + SMID; + inst->dma_config.dst_addr = inst->dma_config.src_addr; + /* Direction unimportant - always overridden by prep_slave_sg */ + inst->dma_config.direction = DMA_DEV_TO_MEM; + dmaengine_slave_config(inst->dma_chan, &inst->dma_config); + /* Alloc and map bounce buffers */ + for (i = 0; i < DMA_BOUNCE_BUFFER_COUNT; ++i) { + inst->bounce.buffer[i] = + dmam_alloc_coherent(inst->dev, DMA_BOUNCE_BUFFER_SIZE, + &inst->bounce.phys[i], + GFP_KERNEL); + if (!inst->bounce.buffer[i]) { + dev_err(inst->dev, "Could not allocate buffer!"); + rv = -ENOMEM; + break; + } + smi_scatterlist_from_buffer( + inst, + inst->bounce.phys[i], + DMA_BOUNCE_BUFFER_SIZE, + &inst->bounce.sgl[i] + ); + } + + return rv; +} + +static int bcm2835_smi_probe(struct platform_device *pdev) +{ + int err; + struct device *dev = &pdev->dev; + struct device_node *node = dev->of_node; + struct resource *ioresource; + struct bcm2835_smi_instance *inst; + + /* Allocate buffers and instance data */ + + inst = devm_kzalloc(dev, sizeof(struct bcm2835_smi_instance), + GFP_KERNEL); + + if (!inst) + return -ENOMEM; + + inst->dev = dev; + spin_lock_init(&inst->transaction_lock); + + /* We require device tree support */ + if (!node) + return -EINVAL; + + ioresource = platform_get_resource(pdev, IORESOURCE_MEM, 0); + inst->smi_regs_ptr = devm_ioremap_resource(dev, ioresource); + ioresource = platform_get_resource(pdev, IORESOURCE_MEM, 1); + inst->cm_smi_regs_ptr = devm_ioremap_resource(dev, ioresource); + inst->smi_regs_busaddr = be32_to_cpu( + *of_get_address(node, 0, NULL, NULL)); + of_property_read_u32(node, + "brcm,smi-clock-source", + &inst->clock_source); + of_property_read_u32(node, + "brcm,smi-clock-divisor", + &inst->clock_divisor); + + err = bcm2835_smi_dma_setup(inst); + if (err) + return err; + + /* Finally, do peripheral setup */ + + smi_setup_clock(inst); + smi_setup_regs(inst); + + platform_set_drvdata(pdev, inst); + + dev_info(inst->dev, "initialised"); + + return 0; +} + +/**************************************************************************** +* +* bcm2835_smi_remove - called when the driver is unloaded. +* +***************************************************************************/ + +static int bcm2835_smi_remove(struct platform_device *pdev) +{ + struct bcm2835_smi_instance *inst = platform_get_drvdata(pdev); + struct device *dev = inst->dev; + + dev_info(dev, "SMI device removed - OK"); + return 0; +} + +/**************************************************************************** +* +* Register the driver with device tree +* +***************************************************************************/ + +static const struct of_device_id bcm2835_smi_of_match[] = { + {.compatible = "brcm,bcm2835-smi",}, + { /* sentinel */ }, +}; + +MODULE_DEVICE_TABLE(of, bcm2835_smi_of_match); + +static struct platform_driver bcm2835_smi_driver = { + .probe = bcm2835_smi_probe, + .remove = bcm2835_smi_remove, + .driver = { + .name = DRIVER_NAME, + .owner = THIS_MODULE, + .of_match_table = bcm2835_smi_of_match, + }, +}; + +module_platform_driver(bcm2835_smi_driver); + +MODULE_ALIAS("platform:smi-bcm2835"); +MODULE_LICENSE("GPL"); +MODULE_DESCRIPTION("Device driver for BCM2835's secondary memory interface"); +MODULE_AUTHOR("Luke Wren "); --- linux-raspi2-4.2.0.orig/drivers/misc/cxl/Kconfig +++ linux-raspi2-4.2.0/drivers/misc/cxl/Kconfig @@ -11,11 +11,16 @@ bool default n +config CXL_EEH + bool + default n + config CXL tristate "Support for IBM Coherent Accelerators (CXL)" - depends on PPC_POWERNV && PCI_MSI + depends on PPC_POWERNV && PCI_MSI && EEH select CXL_BASE select CXL_KERNEL_API + select CXL_EEH default m help Select this option to enable driver support for IBM Coherent --- linux-raspi2-4.2.0.orig/drivers/misc/cxl/Makefile +++ linux-raspi2-4.2.0/drivers/misc/cxl/Makefile @@ -1,3 +1,5 @@ +ccflags-y := -Werror -Wno-unused-const-variable + cxl-y += main.o file.o irq.o fault.o native.o cxl-y += context.o sysfs.o debugfs.o pci.o trace.o cxl-y += vphb.o api.o --- linux-raspi2-4.2.0.orig/drivers/misc/cxl/api.c +++ linux-raspi2-4.2.0/drivers/misc/cxl/api.c @@ -12,11 +12,13 @@ #include #include #include +#include #include "cxl.h" struct cxl_context *cxl_dev_context_init(struct pci_dev *dev) { + struct address_space *mapping; struct cxl_afu *afu; struct cxl_context *ctx; int rc; @@ -25,19 +27,42 @@ get_device(&afu->dev); ctx = cxl_context_alloc(); - if (IS_ERR(ctx)) - return ctx; + if (IS_ERR(ctx)) { + rc = PTR_ERR(ctx); + goto err_dev; + } - /* Make it a slave context. We can promote it later? */ - rc = cxl_context_init(ctx, afu, false, NULL); - if (rc) { - kfree(ctx); - put_device(&afu->dev); - return ERR_PTR(-ENOMEM); + ctx->kernelapi = true; + + /* + * Make our own address space since we won't have one from the + * filesystem like the user api has, and even if we do associate a file + * with this context we don't want to use the global anonymous inode's + * address space as that can invalidate unrelated users: + */ + mapping = kmalloc(sizeof(struct address_space), GFP_KERNEL); + if (!mapping) { + rc = -ENOMEM; + goto err_ctx; } + address_space_init_once(mapping); + + /* Make it a slave context. We can promote it later? */ + rc = cxl_context_init(ctx, afu, false, mapping); + if (rc) + goto err_mapping; + cxl_assign_psn_space(ctx); return ctx; + +err_mapping: + kfree(mapping); +err_ctx: + kfree(ctx); +err_dev: + put_device(&afu->dev); + return ERR_PTR(rc); } EXPORT_SYMBOL_GPL(cxl_dev_context_init); @@ -59,7 +84,7 @@ int cxl_release_context(struct cxl_context *ctx) { - if (ctx->status != CLOSED) + if (ctx->status >= STARTED) return -EBUSY; put_device(&ctx->afu->dev); @@ -80,6 +105,7 @@ void cxl_free_afu_irqs(struct cxl_context *ctx) { + afu_irq_name_free(ctx); cxl_release_irq_ranges(&ctx->irqs, ctx->afu->adapter); } EXPORT_SYMBOL_GPL(cxl_free_afu_irqs); @@ -255,9 +281,16 @@ file = anon_inode_getfile("cxl", fops, ctx, flags); if (IS_ERR(file)) - put_unused_fd(fdtmp); + goto err_fd; + + file->f_mapping = ctx->mapping; + *fd = fdtmp; return file; + +err_fd: + put_unused_fd(fdtmp); + return NULL; } EXPORT_SYMBOL_GPL(cxl_get_fd); @@ -327,3 +360,10 @@ return cxl_afu_check_and_enable(afu); } EXPORT_SYMBOL_GPL(cxl_afu_reset); + +void cxl_perst_reloads_same_image(struct cxl_afu *afu, + bool perst_reloads_same_image) +{ + afu->adapter->perst_same_image = perst_reloads_same_image; +} +EXPORT_SYMBOL_GPL(cxl_perst_reloads_same_image); --- linux-raspi2-4.2.0.orig/drivers/misc/cxl/context.c +++ linux-raspi2-4.2.0/drivers/misc/cxl/context.c @@ -126,6 +126,18 @@ if (ctx->status != STARTED) { mutex_unlock(&ctx->status_mutex); pr_devel("%s: Context not started, failing problem state access\n", __func__); + if (ctx->mmio_err_ff) { + if (!ctx->ff_page) { + ctx->ff_page = alloc_page(GFP_USER); + if (!ctx->ff_page) + return VM_FAULT_OOM; + memset(page_address(ctx->ff_page), 0xff, PAGE_SIZE); + } + get_page(ctx->ff_page); + vmf->page = ctx->ff_page; + vma->vm_page_prot = pgprot_cached(vma->vm_page_prot); + return 0; + } return VM_FAULT_SIGBUS; } @@ -193,7 +205,11 @@ if (status != STARTED) return -EBUSY; - WARN_ON(cxl_detach_process(ctx)); + /* Only warn if we detached while the link was OK. + * If detach fails when hw is down, we don't care. + */ + WARN_ON(cxl_detach_process(ctx) && + cxl_adapter_link_ok(ctx->afu->adapter)); flush_work(&ctx->fault_work); /* Only needed for dedicated process */ put_pid(ctx->pid); cxl_ctx_put(); @@ -253,7 +269,14 @@ struct cxl_context *ctx = container_of(rcu, struct cxl_context, rcu); free_page((u64)ctx->sstp); + if (ctx->ff_page) + __free_page(ctx->ff_page); ctx->sstp = NULL; + if (ctx->kernelapi) + kfree(ctx->mapping); + + if (ctx->irq_bitmap) + kfree(ctx->irq_bitmap); kfree(ctx); } --- linux-raspi2-4.2.0.orig/drivers/misc/cxl/cxl.h +++ linux-raspi2-4.2.0/drivers/misc/cxl/cxl.h @@ -34,7 +34,7 @@ * Bump version each time a user API change is made, whether it is * backwards compatible ot not. */ -#define CXL_API_VERSION 1 +#define CXL_API_VERSION 2 #define CXL_API_VERSION_COMPATIBLE 1 /* @@ -83,8 +83,10 @@ /* 0x00C0:7EFF Implementation dependent area */ static const cxl_p1_reg_t CXL_PSL_FIR1 = {0x0100}; static const cxl_p1_reg_t CXL_PSL_FIR2 = {0x0108}; +static const cxl_p1_reg_t CXL_PSL_Timebase = {0x0110}; static const cxl_p1_reg_t CXL_PSL_VERSION = {0x0118}; static const cxl_p1_reg_t CXL_PSL_RESLCKTO = {0x0128}; +static const cxl_p1_reg_t CXL_PSL_TB_CTLSTAT = {0x0140}; static const cxl_p1_reg_t CXL_PSL_FIR_CNTL = {0x0148}; static const cxl_p1_reg_t CXL_PSL_DSNDCTL = {0x0150}; static const cxl_p1_reg_t CXL_PSL_SNWRALLOC = {0x0158}; @@ -152,6 +154,9 @@ #define CXL_PSL_SPAP_Size_Shift 4 #define CXL_PSL_SPAP_V 0x0000000000000001ULL +/****** CXL_PSL_Control ****************************************************/ +#define CXL_PSL_Control_tb 0x0000000000000001ULL + /****** CXL_PSL_DLCNTL *****************************************************/ #define CXL_PSL_DLCNTL_D (0x1ull << (63-28)) #define CXL_PSL_DLCNTL_C (0x1ull << (63-29)) @@ -418,6 +423,9 @@ /* Used to unmap any mmaps when force detaching */ struct address_space *mapping; struct mutex mapping_lock; + struct page *ff_page; + bool mmio_err_ff; + bool kernelapi; spinlock_t sste_lock; /* Protects segment table entries */ struct cxl_sste *sstp; @@ -493,6 +501,7 @@ bool user_image_loaded; bool perst_loads_image; bool perst_select_user; + bool perst_same_image; }; int cxl_alloc_one_irq(struct cxl *adapter); @@ -531,16 +540,33 @@ __be32 software_state; } __packed; +static inline bool cxl_adapter_link_ok(struct cxl *cxl) +{ + struct pci_dev *pdev; + + pdev = to_pci_dev(cxl->dev.parent); + return !pci_channel_offline(pdev); +} + static inline void __iomem *_cxl_p1_addr(struct cxl *cxl, cxl_p1_reg_t reg) { WARN_ON(!cpu_has_feature(CPU_FTR_HVMODE)); return cxl->p1_mmio + cxl_reg_off(reg); } -#define cxl_p1_write(cxl, reg, val) \ - out_be64(_cxl_p1_addr(cxl, reg), val) -#define cxl_p1_read(cxl, reg) \ - in_be64(_cxl_p1_addr(cxl, reg)) +static inline void cxl_p1_write(struct cxl *cxl, cxl_p1_reg_t reg, u64 val) +{ + if (likely(cxl_adapter_link_ok(cxl))) + out_be64(_cxl_p1_addr(cxl, reg), val); +} + +static inline u64 cxl_p1_read(struct cxl *cxl, cxl_p1_reg_t reg) +{ + if (likely(cxl_adapter_link_ok(cxl))) + return in_be64(_cxl_p1_addr(cxl, reg)); + else + return ~0ULL; +} static inline void __iomem *_cxl_p1n_addr(struct cxl_afu *afu, cxl_p1n_reg_t reg) { @@ -548,26 +574,56 @@ return afu->p1n_mmio + cxl_reg_off(reg); } -#define cxl_p1n_write(afu, reg, val) \ - out_be64(_cxl_p1n_addr(afu, reg), val) -#define cxl_p1n_read(afu, reg) \ - in_be64(_cxl_p1n_addr(afu, reg)) +static inline void cxl_p1n_write(struct cxl_afu *afu, cxl_p1n_reg_t reg, u64 val) +{ + if (likely(cxl_adapter_link_ok(afu->adapter))) + out_be64(_cxl_p1n_addr(afu, reg), val); +} + +static inline u64 cxl_p1n_read(struct cxl_afu *afu, cxl_p1n_reg_t reg) +{ + if (likely(cxl_adapter_link_ok(afu->adapter))) + return in_be64(_cxl_p1n_addr(afu, reg)); + else + return ~0ULL; +} static inline void __iomem *_cxl_p2n_addr(struct cxl_afu *afu, cxl_p2n_reg_t reg) { return afu->p2n_mmio + cxl_reg_off(reg); } -#define cxl_p2n_write(afu, reg, val) \ - out_be64(_cxl_p2n_addr(afu, reg), val) -#define cxl_p2n_read(afu, reg) \ - in_be64(_cxl_p2n_addr(afu, reg)) +static inline void cxl_p2n_write(struct cxl_afu *afu, cxl_p2n_reg_t reg, u64 val) +{ + if (likely(cxl_adapter_link_ok(afu->adapter))) + out_be64(_cxl_p2n_addr(afu, reg), val); +} + +static inline u64 cxl_p2n_read(struct cxl_afu *afu, cxl_p2n_reg_t reg) +{ + if (likely(cxl_adapter_link_ok(afu->adapter))) + return in_be64(_cxl_p2n_addr(afu, reg)); + else + return ~0ULL; +} +static inline u64 cxl_afu_cr_read64(struct cxl_afu *afu, int cr, u64 off) +{ + if (likely(cxl_adapter_link_ok(afu->adapter))) + return in_le64((afu)->afu_desc_mmio + (afu)->crs_offset + + ((cr) * (afu)->crs_len) + (off)); + else + return ~0ULL; +} -#define cxl_afu_cr_read64(afu, cr, off) \ - in_le64((afu)->afu_desc_mmio + (afu)->crs_offset + ((cr) * (afu)->crs_len) + (off)) -#define cxl_afu_cr_read32(afu, cr, off) \ - in_le32((afu)->afu_desc_mmio + (afu)->crs_offset + ((cr) * (afu)->crs_len) + (off)) +static inline u32 cxl_afu_cr_read32(struct cxl_afu *afu, int cr, u64 off) +{ + if (likely(cxl_adapter_link_ok(afu->adapter))) + return in_le32((afu)->afu_desc_mmio + (afu)->crs_offset + + ((cr) * (afu)->crs_len) + (off)); + else + return 0xffffffff; +} u16 cxl_afu_cr_read16(struct cxl_afu *afu, int cr, u64 off); u8 cxl_afu_cr_read8(struct cxl_afu *afu, int cr, u64 off); @@ -585,6 +641,9 @@ int cxl_alloc_adapter_nr(struct cxl *adapter); void cxl_remove_adapter_nr(struct cxl *adapter); +int cxl_alloc_spa(struct cxl_afu *afu); +void cxl_release_spa(struct cxl_afu *afu); + int cxl_file_init(void); void cxl_file_exit(void); int cxl_register_adapter(struct cxl *adapter); @@ -618,6 +677,7 @@ void cxl_release_serr_irq(struct cxl_afu *afu); int afu_register_irqs(struct cxl_context *ctx, u32 count); void afu_release_irqs(struct cxl_context *ctx, void *cookie); +void afu_irq_name_free(struct cxl_context *ctx); irqreturn_t cxl_slice_irq_err(int irq, void *data); int cxl_debugfs_init(void); @@ -675,6 +735,7 @@ void cxl_stop_trace(struct cxl *cxl); int cxl_pci_vphb_add(struct cxl_afu *afu); +void cxl_pci_vphb_reconfigure(struct cxl_afu *afu); void cxl_pci_vphb_remove(struct cxl_afu *afu); extern struct pci_driver cxl_pci_driver; --- linux-raspi2-4.2.0.orig/drivers/misc/cxl/debugfs.c +++ linux-raspi2-4.2.0/drivers/misc/cxl/debugfs.c @@ -48,7 +48,7 @@ static struct dentry *debugfs_create_io_x64(const char *name, umode_t mode, struct dentry *parent, u64 __iomem *value) { - return debugfs_create_file(name, mode, parent, (void *)value, &fops_io_x64); + return debugfs_create_file(name, mode, parent, (void __force *)value, &fops_io_x64); } int cxl_debugfs_adapter_add(struct cxl *adapter) --- linux-raspi2-4.2.0.orig/drivers/misc/cxl/file.c +++ linux-raspi2-4.2.0/drivers/misc/cxl/file.c @@ -73,6 +73,11 @@ if (!afu->current_mode) goto err_put_afu; + if (!cxl_adapter_link_ok(adapter)) { + rc = -EIO; + goto err_put_afu; + } + if (!(ctx = cxl_context_alloc())) { rc = -ENOMEM; goto err_put_afu; @@ -115,9 +120,16 @@ __func__, ctx->pe); cxl_context_detach(ctx); - mutex_lock(&ctx->mapping_lock); - ctx->mapping = NULL; - mutex_unlock(&ctx->mapping_lock); + + /* + * Delete the context's mapping pointer, unless it's created by the + * kernel API, in which case leave it so it can be freed by reclaim_ctx() + */ + if (!ctx->kernelapi) { + mutex_lock(&ctx->mapping_lock); + ctx->mapping = NULL; + mutex_unlock(&ctx->mapping_lock); + } put_device(&ctx->afu->dev); @@ -179,6 +191,8 @@ if (work.flags & CXL_START_WORK_AMR) amr = work.amr & mfspr(SPRN_UAMOR); + ctx->mmio_err_ff = !!(work.flags & CXL_START_WORK_ERR_FF); + /* * We grab the PID here and not in the file open to allow for the case * where a process (master, some daemon, etc) has opened the chardev on @@ -238,6 +252,9 @@ if (ctx->status == CLOSED) return -EIO; + if (!cxl_adapter_link_ok(ctx->afu->adapter)) + return -EIO; + pr_devel("afu_ioctl\n"); switch (cmd) { case CXL_IOCTL_START_WORK: @@ -251,7 +268,7 @@ return -EINVAL; } -long afu_compat_ioctl(struct file *file, unsigned int cmd, +static long afu_compat_ioctl(struct file *file, unsigned int cmd, unsigned long arg) { return afu_ioctl(file, cmd, arg); @@ -265,6 +282,9 @@ if (ctx->status != STARTED) return -EIO; + if (!cxl_adapter_link_ok(ctx->afu->adapter)) + return -EIO; + return cxl_context_iomap(ctx, vm); } @@ -309,6 +329,9 @@ int rc; DEFINE_WAIT(wait); + if (!cxl_adapter_link_ok(ctx->afu->adapter)) + return -EIO; + if (count < CXL_READ_MIN_SIZE) return -EINVAL; @@ -319,6 +342,11 @@ if (ctx_event_pending(ctx)) break; + if (!cxl_adapter_link_ok(ctx->afu->adapter)) { + rc = -EIO; + goto out; + } + if (file->f_flags & O_NONBLOCK) { rc = -EAGAIN; goto out; @@ -396,7 +424,7 @@ .mmap = afu_mmap, }; -const struct file_operations afu_master_fops = { +static const struct file_operations afu_master_fops = { .owner = THIS_MODULE, .open = afu_master_open, .poll = afu_poll, @@ -519,7 +547,7 @@ * If these change we really need to update API. Either change some * flags or update API version number CXL_API_VERSION. */ - BUILD_BUG_ON(CXL_API_VERSION != 1); + BUILD_BUG_ON(CXL_API_VERSION != 2); BUILD_BUG_ON(sizeof(struct cxl_ioctl_start_work) != 64); BUILD_BUG_ON(sizeof(struct cxl_event_header) != 8); BUILD_BUG_ON(sizeof(struct cxl_event_afu_interrupt) != 8); --- linux-raspi2-4.2.0.orig/drivers/misc/cxl/irq.c +++ linux-raspi2-4.2.0/drivers/misc/cxl/irq.c @@ -30,12 +30,12 @@ serr = cxl_p1n_read(ctx->afu, CXL_PSL_SERR_An); afu_debug = cxl_p1n_read(ctx->afu, CXL_AFU_DEBUG_An); - dev_crit(&ctx->afu->dev, "PSL ERROR STATUS: 0x%.16llx\n", errstat); - dev_crit(&ctx->afu->dev, "PSL_FIR1: 0x%.16llx\n", fir1); - dev_crit(&ctx->afu->dev, "PSL_FIR2: 0x%.16llx\n", fir2); - dev_crit(&ctx->afu->dev, "PSL_SERR_An: 0x%.16llx\n", serr); - dev_crit(&ctx->afu->dev, "PSL_FIR_SLICE_An: 0x%.16llx\n", fir_slice); - dev_crit(&ctx->afu->dev, "CXL_PSL_AFU_DEBUG_An: 0x%.16llx\n", afu_debug); + dev_crit(&ctx->afu->dev, "PSL ERROR STATUS: 0x%016llx\n", errstat); + dev_crit(&ctx->afu->dev, "PSL_FIR1: 0x%016llx\n", fir1); + dev_crit(&ctx->afu->dev, "PSL_FIR2: 0x%016llx\n", fir2); + dev_crit(&ctx->afu->dev, "PSL_SERR_An: 0x%016llx\n", serr); + dev_crit(&ctx->afu->dev, "PSL_FIR_SLICE_An: 0x%016llx\n", fir_slice); + dev_crit(&ctx->afu->dev, "CXL_PSL_AFU_DEBUG_An: 0x%016llx\n", afu_debug); dev_crit(&ctx->afu->dev, "STOPPING CXL TRACE\n"); cxl_stop_trace(ctx->afu->adapter); @@ -54,10 +54,10 @@ fir_slice = cxl_p1n_read(afu, CXL_PSL_FIR_SLICE_An); errstat = cxl_p2n_read(afu, CXL_PSL_ErrStat_An); afu_debug = cxl_p1n_read(afu, CXL_AFU_DEBUG_An); - dev_crit(&afu->dev, "PSL_SERR_An: 0x%.16llx\n", serr); - dev_crit(&afu->dev, "PSL_FIR_SLICE_An: 0x%.16llx\n", fir_slice); - dev_crit(&afu->dev, "CXL_PSL_ErrStat_An: 0x%.16llx\n", errstat); - dev_crit(&afu->dev, "CXL_PSL_AFU_DEBUG_An: 0x%.16llx\n", afu_debug); + dev_crit(&afu->dev, "PSL_SERR_An: 0x%016llx\n", serr); + dev_crit(&afu->dev, "PSL_FIR_SLICE_An: 0x%016llx\n", fir_slice); + dev_crit(&afu->dev, "CXL_PSL_ErrStat_An: 0x%016llx\n", errstat); + dev_crit(&afu->dev, "CXL_PSL_AFU_DEBUG_An: 0x%016llx\n", afu_debug); cxl_p1n_write(afu, CXL_PSL_SERR_An, serr); @@ -72,7 +72,7 @@ WARN(1, "CXL ERROR interrupt %i\n", irq); err_ivte = cxl_p1_read(adapter, CXL_PSL_ErrIVTE); - dev_crit(&adapter->dev, "PSL_ErrIVTE: 0x%.16llx\n", err_ivte); + dev_crit(&adapter->dev, "PSL_ErrIVTE: 0x%016llx\n", err_ivte); dev_crit(&adapter->dev, "STOPPING CXL TRACE\n"); cxl_stop_trace(adapter); @@ -80,7 +80,7 @@ fir1 = cxl_p1_read(adapter, CXL_PSL_FIR1); fir2 = cxl_p1_read(adapter, CXL_PSL_FIR2); - dev_crit(&adapter->dev, "PSL_FIR1: 0x%.16llx\nPSL_FIR2: 0x%.16llx\n", fir1, fir2); + dev_crit(&adapter->dev, "PSL_FIR1: 0x%016llx\nPSL_FIR2: 0x%016llx\n", fir1, fir2); return IRQ_HANDLED; } @@ -147,7 +147,7 @@ if (dsisr & CXL_PSL_DSISR_An_PE) return handle_psl_slice_error(ctx, dsisr, irq_info->errstat); if (dsisr & CXL_PSL_DSISR_An_AE) { - pr_devel("CXL interrupt: AFU Error %.llx\n", irq_info->afu_err); + pr_devel("CXL interrupt: AFU Error 0x%016llx\n", irq_info->afu_err); if (ctx->pending_afu_err) { /* @@ -158,7 +158,7 @@ * probably best that we log them somewhere: */ dev_err_ratelimited(&ctx->afu->dev, "CXL AFU Error " - "undelivered to pe %i: %.llx\n", + "undelivered to pe %i: 0x%016llx\n", ctx->pe, irq_info->afu_err); } else { spin_lock(&ctx->lock); @@ -211,8 +211,8 @@ } rcu_read_unlock(); - WARN(1, "Unable to demultiplex CXL PSL IRQ for PE %i DSISR %.16llx DAR" - " %.16llx\n(Possible AFU HW issue - was a term/remove acked" + WARN(1, "Unable to demultiplex CXL PSL IRQ for PE %i DSISR %016llx DAR" + " %016llx\n(Possible AFU HW issue - was a term/remove acked" " with outstanding transactions?)\n", ph, irq_info.dsisr, irq_info.dar); return fail_psl_irq(afu, &irq_info); @@ -341,6 +341,9 @@ void cxl_release_psl_err_irq(struct cxl *adapter) { + if (adapter->err_virq != irq_find_mapping(NULL, adapter->err_hwirq)) + return; + cxl_p1_write(adapter, CXL_PSL_ErrIVTE, 0x0000000000000000); cxl_unmap_irq(adapter->err_virq, adapter); cxl_release_one_irq(adapter, adapter->err_hwirq); @@ -374,6 +377,9 @@ void cxl_release_serr_irq(struct cxl_afu *afu) { + if (afu->serr_virq != irq_find_mapping(NULL, afu->serr_hwirq)) + return; + cxl_p1n_write(afu, CXL_PSL_SERR_An, 0x0000000000000000); cxl_unmap_irq(afu->serr_virq, afu); cxl_release_one_irq(afu->adapter, afu->serr_hwirq); @@ -400,6 +406,9 @@ void cxl_release_psl_irq(struct cxl_afu *afu) { + if (afu->psl_virq != irq_find_mapping(NULL, afu->psl_hwirq)) + return; + cxl_unmap_irq(afu->psl_virq, afu); cxl_release_one_irq(afu->adapter, afu->psl_hwirq); kfree(afu->psl_irq_name); @@ -421,6 +430,9 @@ int rc, r, i, j = 1; struct cxl_irq_name *irq_name; + /* Initialize the list head to hold irq names */ + INIT_LIST_HEAD(&ctx->irq_names); + if ((rc = cxl_alloc_irq_ranges(&ctx->irqs, ctx->afu->adapter, count))) return rc; @@ -432,13 +444,12 @@ ctx->irq_bitmap = kcalloc(BITS_TO_LONGS(count), sizeof(*ctx->irq_bitmap), GFP_KERNEL); if (!ctx->irq_bitmap) - return -ENOMEM; + goto out; /* * Allocate names first. If any fail, bail out before allocating * actual hardware IRQs. */ - INIT_LIST_HEAD(&ctx->irq_names); for (r = 1; r < CXL_IRQ_RANGES; r++) { for (i = 0; i < ctx->irqs.range[r]; i++) { irq_name = kmalloc(sizeof(struct cxl_irq_name), @@ -460,11 +471,12 @@ return 0; out: + cxl_release_irq_ranges(&ctx->irqs, ctx->afu->adapter); afu_irq_name_free(ctx); return -ENOMEM; } -void afu_register_hwirqs(struct cxl_context *ctx) +static void afu_register_hwirqs(struct cxl_context *ctx) { irq_hw_number_t hwirq; struct cxl_irq_name *irq_name; @@ -511,4 +523,6 @@ afu_irq_name_free(ctx); cxl_release_irq_ranges(&ctx->irqs, ctx->afu->adapter); + + ctx->irq_count = 0; } --- linux-raspi2-4.2.0.orig/drivers/misc/cxl/main.c +++ linux-raspi2-4.2.0/drivers/misc/cxl/main.c @@ -222,6 +222,7 @@ cxl_debugfs_exit(); cxl_file_exit(); unregister_cxl_calls(&cxl_calls); + idr_destroy(&cxl_adapter_idr); } module_init(init_cxl); --- linux-raspi2-4.2.0.orig/drivers/misc/cxl/native.c +++ linux-raspi2-4.2.0/drivers/misc/cxl/native.c @@ -41,7 +41,14 @@ rc = -EBUSY; goto out; } - pr_devel_ratelimited("AFU control... (0x%.16llx)\n", + + if (!cxl_adapter_link_ok(afu->adapter)) { + afu->enabled = enabled; + rc = -EIO; + goto out; + } + + pr_devel_ratelimited("AFU control... (0x%016llx)\n", AFU_Cntl | command); cpu_relax(); AFU_Cntl = cxl_p2n_read(afu, CXL_AFU_Cntl_An); @@ -85,6 +92,10 @@ int cxl_afu_check_and_enable(struct cxl_afu *afu) { + if (!cxl_adapter_link_ok(afu->adapter)) { + WARN(1, "Refusing to enable afu while link down!\n"); + return -EIO; + } if (afu->enabled) return 0; return afu_enable(afu); @@ -103,6 +114,12 @@ pr_devel("PSL purge request\n"); + if (!cxl_adapter_link_ok(afu->adapter)) { + dev_warn(&afu->dev, "PSL Purge called with link down, ignoring\n"); + rc = -EIO; + goto out; + } + if ((AFU_Cntl & CXL_AFU_Cntl_An_ES_MASK) != CXL_AFU_Cntl_An_ES_Disabled) { WARN(1, "psl_purge request while AFU not disabled!\n"); cxl_afu_disable(afu); @@ -119,14 +136,19 @@ rc = -EBUSY; goto out; } + if (!cxl_adapter_link_ok(afu->adapter)) { + rc = -EIO; + goto out; + } + dsisr = cxl_p2n_read(afu, CXL_PSL_DSISR_An); - pr_devel_ratelimited("PSL purging... PSL_CNTL: 0x%.16llx PSL_DSISR: 0x%.16llx\n", PSL_CNTL, dsisr); + pr_devel_ratelimited("PSL purging... PSL_CNTL: 0x%016llx PSL_DSISR: 0x%016llx\n", PSL_CNTL, dsisr); if (dsisr & CXL_PSL_DSISR_TRANS) { dar = cxl_p2n_read(afu, CXL_PSL_DAR_An); - dev_notice(&afu->dev, "PSL purge terminating pending translation, DSISR: 0x%.16llx, DAR: 0x%.16llx\n", dsisr, dar); + dev_notice(&afu->dev, "PSL purge terminating pending translation, DSISR: 0x%016llx, DAR: 0x%016llx\n", dsisr, dar); cxl_p2n_write(afu, CXL_PSL_TFC_An, CXL_PSL_TFC_An_AE); } else if (dsisr) { - dev_notice(&afu->dev, "PSL purge acknowledging pending non-translation fault, DSISR: 0x%.16llx\n", dsisr); + dev_notice(&afu->dev, "PSL purge acknowledging pending non-translation fault, DSISR: 0x%016llx\n", dsisr); cxl_p2n_write(afu, CXL_PSL_TFC_An, CXL_PSL_TFC_An_A); } else { cpu_relax(); @@ -161,10 +183,8 @@ return ((spa_size / 8) - 96) / 17; } -static int alloc_spa(struct cxl_afu *afu) +int cxl_alloc_spa(struct cxl_afu *afu) { - u64 spap; - /* Work out how many pages to allocate */ afu->spa_order = 0; do { @@ -183,6 +203,13 @@ pr_devel("spa pages: %i afu->spa_max_procs: %i afu->num_procs: %i\n", 1<spa_order, afu->spa_max_procs, afu->num_procs); + return 0; +} + +static void attach_spa(struct cxl_afu *afu) +{ + u64 spap; + afu->sw_command_status = (__be64 *)((char *)afu->spa + ((afu->spa_max_procs + 3) * 128)); @@ -191,14 +218,19 @@ spap |= CXL_PSL_SPAP_V; pr_devel("cxl: SPA allocated at 0x%p. Max processes: %i, sw_command_status: 0x%p CXL_PSL_SPAP_An=0x%016llx\n", afu->spa, afu->spa_max_procs, afu->sw_command_status, spap); cxl_p1n_write(afu, CXL_PSL_SPAP_An, spap); - - return 0; } -static void release_spa(struct cxl_afu *afu) +static inline void detach_spa(struct cxl_afu *afu) { cxl_p1n_write(afu, CXL_PSL_SPAP_An, 0); - free_pages((unsigned long) afu->spa, afu->spa_order); +} + +void cxl_release_spa(struct cxl_afu *afu) +{ + if (afu->spa) { + free_pages((unsigned long) afu->spa, afu->spa_order); + afu->spa = NULL; + } } int cxl_tlb_slb_invalidate(struct cxl *adapter) @@ -215,6 +247,8 @@ dev_warn(&adapter->dev, "WARNING: CXL adapter wide TLBIA timed out!\n"); return -EBUSY; } + if (!cxl_adapter_link_ok(adapter)) + return -EIO; cpu_relax(); } @@ -224,6 +258,8 @@ dev_warn(&adapter->dev, "WARNING: CXL adapter wide SLBIA timed out!\n"); return -EBUSY; } + if (!cxl_adapter_link_ok(adapter)) + return -EIO; cpu_relax(); } return 0; @@ -240,6 +276,11 @@ dev_warn(&afu->dev, "WARNING: CXL AFU SLBIA timed out!\n"); return -EBUSY; } + /* If the adapter has gone down, we can assume that we + * will PERST it and that will invalidate everything. + */ + if (!cxl_adapter_link_ok(afu->adapter)) + return -EIO; cpu_relax(); } return 0; @@ -279,6 +320,8 @@ cxl_p1_write(adapter, CXL_PSL_SLBIA, CXL_TLB_SLB_IQ_LPIDPID); while (1) { + if (!cxl_adapter_link_ok(adapter)) + break; slbia = cxl_p1_read(adapter, CXL_PSL_SLBIA); if (!(slbia & CXL_TLB_SLB_P)) break; @@ -308,6 +351,11 @@ rc = -EBUSY; goto out; } + if (!cxl_adapter_link_ok(ctx->afu->adapter)) { + dev_warn(&ctx->afu->dev, "WARNING: Device link down, aborting Process Element Command!\n"); + rc = -EIO; + goto out; + } state = be64_to_cpup(ctx->afu->sw_command_status); if (state == ~0ULL) { pr_err("cxl: Error adding process element to AFU\n"); @@ -355,8 +403,13 @@ mutex_lock(&ctx->afu->spa_mutex); pr_devel("%s Terminate pe: %i started\n", __func__, ctx->pe); - rc = do_process_element_cmd(ctx, CXL_SPA_SW_CMD_TERMINATE, - CXL_PE_SOFTWARE_STATE_V | CXL_PE_SOFTWARE_STATE_T); + /* We could be asked to terminate when the hw is down. That + * should always succeed: it's not running if the hw has gone + * away and is being reset. + */ + if (cxl_adapter_link_ok(ctx->afu->adapter)) + rc = do_process_element_cmd(ctx, CXL_SPA_SW_CMD_TERMINATE, + CXL_PE_SOFTWARE_STATE_V | CXL_PE_SOFTWARE_STATE_T); ctx->elem->software_state = 0; /* Remove Valid bit */ pr_devel("%s Terminate pe: %i finished\n", __func__, ctx->pe); mutex_unlock(&ctx->afu->spa_mutex); @@ -369,7 +422,14 @@ mutex_lock(&ctx->afu->spa_mutex); pr_devel("%s Remove pe: %i started\n", __func__, ctx->pe); - if (!(rc = do_process_element_cmd(ctx, CXL_SPA_SW_CMD_REMOVE, 0))) + + /* We could be asked to remove when the hw is down. Again, if + * the hw is down, the PE is gone, so we succeed. + */ + if (cxl_adapter_link_ok(ctx->afu->adapter)) + rc = do_process_element_cmd(ctx, CXL_SPA_SW_CMD_REMOVE, 0); + + if (!rc) ctx->pe_inserted = false; slb_invalid(ctx); pr_devel("%s Remove pe: %i finished\n", __func__, ctx->pe); @@ -397,15 +457,18 @@ dev_info(&afu->dev, "Activating AFU directed mode\n"); - if (alloc_spa(afu)) - return -ENOMEM; + afu->num_procs = afu->max_procs_virtualised; + if (afu->spa == NULL) { + if (cxl_alloc_spa(afu)) + return -ENOMEM; + } + attach_spa(afu); cxl_p1n_write(afu, CXL_PSL_SCNTL_An, CXL_PSL_SCNTL_An_PM_AFU); cxl_p1n_write(afu, CXL_PSL_AMOR_An, 0xFFFFFFFFFFFFFFFFULL); cxl_p1n_write(afu, CXL_PSL_ID_An, CXL_PSL_ID_An_F | CXL_PSL_ID_An_L); afu->current_mode = CXL_MODE_DIRECTED; - afu->num_procs = afu->max_procs_virtualised; if ((rc = cxl_chardev_m_afu_add(afu))) return rc; @@ -492,9 +555,7 @@ if ((result = cxl_afu_check_and_enable(ctx->afu))) return result; - add_process_element(ctx); - - return 0; + return add_process_element(ctx); } static int deactivate_afu_directed(struct cxl_afu *afu) @@ -511,8 +572,6 @@ cxl_afu_disable(afu); cxl_psl_purge(afu); - release_spa(afu); - return 0; } @@ -614,6 +673,11 @@ if (!(mode & afu->modes_supported)) return -EINVAL; + if (!cxl_adapter_link_ok(afu->adapter)) { + WARN(1, "Device link is down, refusing to activate!\n"); + return -EIO; + } + if (mode == CXL_MODE_DIRECTED) return activate_afu_directed(afu); if (mode == CXL_MODE_DEDICATED) @@ -624,6 +688,11 @@ int cxl_attach_process(struct cxl_context *ctx, bool kernel, u64 wed, u64 amr) { + if (!cxl_adapter_link_ok(ctx->afu->adapter)) { + WARN(1, "Device link is down, refusing to attach process!\n"); + return -EIO; + } + ctx->kernel = kernel; if (ctx->afu->current_mode == CXL_MODE_DIRECTED) return attach_afu_directed(ctx, wed, amr); @@ -668,6 +737,12 @@ { u64 pidtid; + /* If the adapter has gone away, we can't get any meaningful + * information. + */ + if (!cxl_adapter_link_ok(afu->adapter)) + return -EIO; + info->dsisr = cxl_p2n_read(afu, CXL_PSL_DSISR_An); info->dar = cxl_p2n_read(afu, CXL_PSL_DAR_An); info->dsr = cxl_p2n_read(afu, CXL_PSL_DSR_An); @@ -684,7 +759,7 @@ { u64 dsisr; - pr_devel("RECOVERING FROM PSL ERROR... (0x%.16llx)\n", errstat); + pr_devel("RECOVERING FROM PSL ERROR... (0x%016llx)\n", errstat); /* Clear PSL_DSISR[PE] */ dsisr = cxl_p2n_read(afu, CXL_PSL_DSISR_An); --- linux-raspi2-4.2.0.orig/drivers/misc/cxl/pci.c +++ linux-raspi2-4.2.0/drivers/misc/cxl/pci.c @@ -24,6 +24,7 @@ #include #include "cxl.h" +#include #define CXL_PCI_VSEC_ID 0x1280 @@ -133,7 +134,7 @@ return (val >> ((off & 0x3) * 8)) & 0xff; } -static DEFINE_PCI_DEVICE_TABLE(cxl_pci_tbl) = { +static const struct pci_device_id cxl_pci_tbl[] = { { PCI_DEVICE(PCI_VENDOR_ID_IBM, 0x0477), }, { PCI_DEVICE(PCI_VENDOR_ID_IBM, 0x044b), }, { PCI_DEVICE(PCI_VENDOR_ID_IBM, 0x04cf), }, @@ -369,6 +370,55 @@ return 0; } +#define TBSYNC_CNT(n) (((u64)n & 0x7) << (63-6)) +#define _2048_250MHZ_CYCLES 1 + +static int cxl_setup_psl_timebase(struct cxl *adapter, struct pci_dev *dev) +{ + u64 psl_tb; + int delta; + unsigned int retry = 0; + struct device_node *np; + + if (!(np = pnv_pci_get_phb_node(dev))) + return -ENODEV; + + /* Do not fail when CAPP timebase sync is not supported by OPAL */ + of_node_get(np); + if (! of_get_property(np, "ibm,capp-timebase-sync", NULL)) { + of_node_put(np); + pr_err("PSL: Timebase sync: OPAL support missing\n"); + return 0; + } + of_node_put(np); + + /* + * Setup PSL Timebase Control and Status register + * with the recommended Timebase Sync Count value + */ + cxl_p1_write(adapter, CXL_PSL_TB_CTLSTAT, + TBSYNC_CNT(2 * _2048_250MHZ_CYCLES)); + + /* Enable PSL Timebase */ + cxl_p1_write(adapter, CXL_PSL_Control, 0x0000000000000000); + cxl_p1_write(adapter, CXL_PSL_Control, CXL_PSL_Control_tb); + + /* Wait until CORE TB and PSL TB difference <= 16usecs */ + do { + msleep(1); + if (retry++ > 5) { + pr_err("PSL: Timebase sync: giving up!\n"); + return -EIO; + } + psl_tb = cxl_p1_read(adapter, CXL_PSL_Timebase); + delta = mftb() - psl_tb; + if (delta < 0) + delta = -delta; + } while (cputime_to_usecs(delta) > 16); + + return 0; +} + static int init_implementation_afu_regs(struct cxl_afu *afu) { /* read/write masks for this slice */ @@ -539,10 +589,18 @@ static void cxl_unmap_slice_regs(struct cxl_afu *afu) { - if (afu->p2n_mmio) + if (afu->p2n_mmio) { iounmap(afu->p2n_mmio); - if (afu->p1n_mmio) + afu->p2n_mmio = NULL; + } + if (afu->p1n_mmio) { iounmap(afu->p1n_mmio); + afu->p1n_mmio = NULL; + } + if (afu->afu_desc_mmio) { + iounmap(afu->afu_desc_mmio); + afu->afu_desc_mmio = NULL; + } } static void cxl_release_afu(struct device *dev) @@ -551,6 +609,9 @@ pr_devel("cxl_release_afu\n"); + idr_destroy(&afu->contexts_idr); + cxl_release_spa(afu); + kfree(afu); } @@ -656,7 +717,7 @@ */ reg = cxl_p2n_read(afu, CXL_AFU_Cntl_An); if ((reg & CXL_AFU_Cntl_An_ES_MASK) != CXL_AFU_Cntl_An_ES_Disabled) { - dev_warn(&afu->dev, "WARNING: AFU was not disabled: %#.16llx\n", reg); + dev_warn(&afu->dev, "WARNING: AFU was not disabled: %#016llx\n", reg); if (__cxl_afu_reset(afu)) return -EIO; if (cxl_afu_disable(afu)) @@ -677,7 +738,7 @@ cxl_p2n_write(afu, CXL_SSTP0_An, 0x0000000000000000); reg = cxl_p2n_read(afu, CXL_PSL_DSISR_An); if (reg) { - dev_warn(&afu->dev, "AFU had pending DSISR: %#.16llx\n", reg); + dev_warn(&afu->dev, "AFU had pending DSISR: %#016llx\n", reg); if (reg & CXL_PSL_DSISR_TRANS) cxl_p2n_write(afu, CXL_PSL_TFC_An, CXL_PSL_TFC_An_AE); else @@ -686,12 +747,12 @@ reg = cxl_p1n_read(afu, CXL_PSL_SERR_An); if (reg) { if (reg & ~0xffff) - dev_warn(&afu->dev, "AFU had pending SERR: %#.16llx\n", reg); + dev_warn(&afu->dev, "AFU had pending SERR: %#016llx\n", reg); cxl_p1n_write(afu, CXL_PSL_SERR_An, reg & ~0xffff); } reg = cxl_p2n_read(afu, CXL_PSL_ErrStat_An); if (reg) { - dev_warn(&afu->dev, "AFU had pending error status: %#.16llx\n", reg); + dev_warn(&afu->dev, "AFU had pending error status: %#016llx\n", reg); cxl_p2n_write(afu, CXL_PSL_ErrStat_An, reg); } @@ -742,45 +803,70 @@ return count; } -static int cxl_init_afu(struct cxl *adapter, int slice, struct pci_dev *dev) +static int cxl_configure_afu(struct cxl_afu *afu, struct cxl *adapter, struct pci_dev *dev) { - struct cxl_afu *afu; - bool free = true; int rc; - if (!(afu = cxl_alloc_afu(adapter, slice))) - return -ENOMEM; - - if ((rc = dev_set_name(&afu->dev, "afu%i.%i", adapter->adapter_num, slice))) - goto err1; - if ((rc = cxl_map_slice_regs(afu, adapter, dev))) - goto err1; + return rc; if ((rc = sanitise_afu_regs(afu))) - goto err2; + goto err1; /* We need to reset the AFU before we can read the AFU descriptor */ if ((rc = __cxl_afu_reset(afu))) - goto err2; + goto err1; if (cxl_verbose) dump_afu_descriptor(afu); if ((rc = cxl_read_afu_descriptor(afu))) - goto err2; + goto err1; if ((rc = cxl_afu_descriptor_looks_ok(afu))) - goto err2; + goto err1; if ((rc = init_implementation_afu_regs(afu))) - goto err2; + goto err1; if ((rc = cxl_register_serr_irq(afu))) - goto err2; + goto err1; if ((rc = cxl_register_psl_irq(afu))) - goto err3; + goto err2; + + return 0; + +err2: + cxl_release_serr_irq(afu); +err1: + cxl_unmap_slice_regs(afu); + return rc; +} + +static void cxl_deconfigure_afu(struct cxl_afu *afu) +{ + cxl_release_psl_irq(afu); + cxl_release_serr_irq(afu); + cxl_unmap_slice_regs(afu); +} + +static int cxl_init_afu(struct cxl *adapter, int slice, struct pci_dev *dev) +{ + struct cxl_afu *afu; + int rc; + + afu = cxl_alloc_afu(adapter, slice); + if (!afu) + return -ENOMEM; + + rc = dev_set_name(&afu->dev, "afu%i.%i", adapter->adapter_num, slice); + if (rc) + goto err_free; + + rc = cxl_configure_afu(afu, adapter, dev); + if (rc) + goto err_free; /* Don't care if this fails */ cxl_debugfs_afu_add(afu); @@ -795,10 +881,6 @@ if ((rc = cxl_sysfs_afu_add(afu))) goto err_put1; - - if ((rc = cxl_afu_select_best_mode(afu))) - goto err_put2; - adapter->afu[afu->slice] = afu; if ((rc = cxl_pci_vphb_add(afu))) @@ -806,21 +888,16 @@ return 0; -err_put2: - cxl_sysfs_afu_remove(afu); err_put1: - device_unregister(&afu->dev); - free = false; + cxl_deconfigure_afu(afu); cxl_debugfs_afu_remove(afu); - cxl_release_psl_irq(afu); -err3: - cxl_release_serr_irq(afu); -err2: - cxl_unmap_slice_regs(afu); -err1: - if (free) - kfree(afu); + device_unregister(&afu->dev); + return rc; + +err_free: + kfree(afu); return rc; + } static void cxl_remove_afu(struct cxl_afu *afu) @@ -840,10 +917,7 @@ cxl_context_detach_all(afu); cxl_afu_deactivate_mode(afu); - cxl_release_psl_irq(afu); - cxl_release_serr_irq(afu); - cxl_unmap_slice_regs(afu); - + cxl_deconfigure_afu(afu); device_unregister(&afu->dev); } @@ -851,16 +925,15 @@ { struct pci_dev *dev = to_pci_dev(adapter->dev.parent); int rc; - int i; - u32 val; - - dev_info(&dev->dev, "CXL reset\n"); - for (i = 0; i < adapter->slices; i++) { - cxl_pci_vphb_remove(adapter->afu[i]); - cxl_remove_afu(adapter->afu[i]); + if (adapter->perst_same_image) { + dev_warn(&dev->dev, + "cxl: refusing to reset/reflash when perst_reloads_same_image is set.\n"); + return -EINVAL; } + dev_info(&dev->dev, "CXL reset\n"); + /* pcie_warm_reset requests a fundamental pci reset which includes a * PERST assert/deassert. PERST triggers a loading of the image * if "user" or "factory" is selected in sysfs */ @@ -869,20 +942,6 @@ return rc; } - /* the PERST done above fences the PHB. So, reset depends on EEH - * to unbind the driver, tell Sapphire to reinit the PHB, and rebind - * the driver. Do an mmio read explictly to ensure EEH notices the - * fenced PHB. Retry for a few seconds before giving up. */ - i = 0; - while (((val = mmio_read32be(adapter->p1_mmio)) != 0xffffffff) && - (i < 5)) { - msleep(500); - i++; - } - - if (val != 0xffffffff) - dev_err(&dev->dev, "cxl: PERST failed to trigger EEH\n"); - return rc; } @@ -893,7 +952,7 @@ if (pci_request_region(dev, 0, "priv 1 regs")) goto err2; - pr_devel("cxl_map_adapter_regs: p1: %#.16llx %#llx, p2: %#.16llx %#llx", + pr_devel("cxl_map_adapter_regs: p1: %#016llx %#llx, p2: %#016llx %#llx", p1_base(dev), p1_size(dev), p2_base(dev), p2_size(dev)); if (!(adapter->p1_mmio = ioremap(p1_base(dev), p1_size(dev)))) @@ -917,10 +976,16 @@ static void cxl_unmap_adapter_regs(struct cxl *adapter) { - if (adapter->p1_mmio) + if (adapter->p1_mmio) { iounmap(adapter->p1_mmio); - if (adapter->p2_mmio) + adapter->p1_mmio = NULL; + pci_release_region(to_pci_dev(adapter->dev.parent), 2); + } + if (adapter->p2_mmio) { iounmap(adapter->p2_mmio); + adapter->p2_mmio = NULL; + pci_release_region(to_pci_dev(adapter->dev.parent), 0); + } } static int cxl_read_vsec(struct cxl *adapter, struct pci_dev *dev) @@ -949,7 +1014,6 @@ CXL_READ_VSEC_BASE_IMAGE(dev, vsec, &adapter->base_image); CXL_READ_VSEC_IMAGE_STATE(dev, vsec, &image_state); adapter->user_image_loaded = !!(image_state & CXL_VSEC_USER_IMAGE_LOADED); - adapter->perst_loads_image = true; adapter->perst_select_user = !!(image_state & CXL_VSEC_USER_IMAGE_LOADED); CXL_READ_VSEC_NAFUS(dev, vsec, &adapter->slices); @@ -971,6 +1035,32 @@ return 0; } +/* + * Workaround a PCIe Host Bridge defect on some cards, that can cause + * malformed Transaction Layer Packet (TLP) errors to be erroneously + * reported. Mask this error in the Uncorrectable Error Mask Register. + * + * The upper nibble of the PSL revision is used to distinguish between + * different cards. The affected ones have it set to 0. + */ +static void cxl_fixup_malformed_tlp(struct cxl *adapter, struct pci_dev *dev) +{ + int aer; + u32 data; + + if (adapter->psl_rev & 0xf000) + return; + if (!(aer = pci_find_ext_capability(dev, PCI_EXT_CAP_ID_ERR))) + return; + pci_read_config_dword(dev, aer + PCI_ERR_UNCOR_MASK, &data); + if (data & PCI_ERR_UNC_MALF_TLP) + if (data & PCI_ERR_UNC_INTN) + return; + data |= PCI_ERR_UNC_MALF_TLP; + data |= PCI_ERR_UNC_INTN; + pci_write_config_dword(dev, aer + PCI_ERR_UNCOR_MASK, data); +} + static int cxl_vsec_looks_ok(struct cxl *adapter, struct pci_dev *dev) { if (adapter->vsec_status & CXL_STATUS_SECOND_PORT) @@ -1009,81 +1099,140 @@ pr_devel("cxl_release_adapter\n"); + cxl_remove_adapter_nr(adapter); + kfree(adapter); } -static struct cxl *cxl_alloc_adapter(struct pci_dev *dev) +static struct cxl *cxl_alloc_adapter(void) { struct cxl *adapter; if (!(adapter = kzalloc(sizeof(struct cxl), GFP_KERNEL))) return NULL; - adapter->dev.parent = &dev->dev; - adapter->dev.release = cxl_release_adapter; - pci_set_drvdata(dev, adapter); spin_lock_init(&adapter->afu_list_lock); + if (cxl_alloc_adapter_nr(adapter)) + goto err1; + + if (dev_set_name(&adapter->dev, "card%i", adapter->adapter_num)) + goto err2; + return adapter; + +err2: + cxl_remove_adapter_nr(adapter); +err1: + kfree(adapter); + return NULL; } +#define CXL_PSL_ErrIVTE_tberror (0x1ull << (63-31)) + static int sanitise_adapter_regs(struct cxl *adapter) { - cxl_p1_write(adapter, CXL_PSL_ErrIVTE, 0x0000000000000000); + /* Clear PSL tberror bit by writing 1 to it */ + cxl_p1_write(adapter, CXL_PSL_ErrIVTE, CXL_PSL_ErrIVTE_tberror); return cxl_tlb_slb_invalidate(adapter); } -static struct cxl *cxl_init_adapter(struct pci_dev *dev) +/* This should contain *only* operations that can safely be done in + * both creation and recovery. + */ +static int cxl_configure_adapter(struct cxl *adapter, struct pci_dev *dev) { - struct cxl *adapter; - bool free = true; int rc; + adapter->dev.parent = &dev->dev; + adapter->dev.release = cxl_release_adapter; + pci_set_drvdata(dev, adapter); - if (!(adapter = cxl_alloc_adapter(dev))) - return ERR_PTR(-ENOMEM); + rc = pci_enable_device(dev); + if (rc) { + dev_err(&dev->dev, "pci_enable_device failed: %i\n", rc); + return rc; + } if ((rc = cxl_read_vsec(adapter, dev))) - goto err1; + return rc; if ((rc = cxl_vsec_looks_ok(adapter, dev))) - goto err1; + return rc; + + cxl_fixup_malformed_tlp(adapter, dev); if ((rc = setup_cxl_bars(dev))) - goto err1; + return rc; if ((rc = switch_card_to_cxl(dev))) - goto err1; - - if ((rc = cxl_alloc_adapter_nr(adapter))) - goto err1; - - if ((rc = dev_set_name(&adapter->dev, "card%i", adapter->adapter_num))) - goto err2; + return rc; if ((rc = cxl_update_image_control(adapter))) - goto err2; + return rc; if ((rc = cxl_map_adapter_regs(adapter, dev))) - goto err2; + return rc; if ((rc = sanitise_adapter_regs(adapter))) - goto err2; + goto err; if ((rc = init_implementation_adapter_regs(adapter, dev))) - goto err3; + goto err; if ((rc = pnv_phb_to_cxl_mode(dev, OPAL_PHB_CAPI_MODE_CAPI))) - goto err3; + goto err; /* If recovery happened, the last step is to turn on snooping. * In the non-recovery case this has no effect */ - if ((rc = pnv_phb_to_cxl_mode(dev, OPAL_PHB_CAPI_MODE_SNOOP_ON))) { - goto err3; - } + if ((rc = pnv_phb_to_cxl_mode(dev, OPAL_PHB_CAPI_MODE_SNOOP_ON))) + goto err; + + if ((rc = cxl_setup_psl_timebase(adapter, dev))) + goto err; if ((rc = cxl_register_psl_err_irq(adapter))) - goto err3; + goto err; + + return 0; + +err: + cxl_unmap_adapter_regs(adapter); + return rc; + +} + +static void cxl_deconfigure_adapter(struct cxl *adapter) +{ + struct pci_dev *pdev = to_pci_dev(adapter->dev.parent); + + cxl_release_psl_err_irq(adapter); + cxl_unmap_adapter_regs(adapter); + + pci_disable_device(pdev); +} + +static struct cxl *cxl_init_adapter(struct pci_dev *dev) +{ + struct cxl *adapter; + int rc; + + adapter = cxl_alloc_adapter(); + if (!adapter) + return ERR_PTR(-ENOMEM); + + /* Set defaults for parameters which need to persist over + * configure/reconfigure + */ + adapter->perst_loads_image = true; + adapter->perst_same_image = false; + + rc = cxl_configure_adapter(adapter, dev); + if (rc) { + pci_disable_device(dev); + cxl_release_adapter(&adapter->dev); + return ERR_PTR(rc); + } /* Don't care if this one fails: */ cxl_debugfs_adapter_add(adapter); @@ -1101,37 +1250,25 @@ return adapter; err_put1: - device_unregister(&adapter->dev); - free = false; + /* This should mirror cxl_remove_adapter, except without the + * sysfs parts + */ cxl_debugfs_adapter_remove(adapter); - cxl_release_psl_err_irq(adapter); -err3: - cxl_unmap_adapter_regs(adapter); -err2: - cxl_remove_adapter_nr(adapter); -err1: - if (free) - kfree(adapter); + cxl_deconfigure_adapter(adapter); + device_unregister(&adapter->dev); return ERR_PTR(rc); } static void cxl_remove_adapter(struct cxl *adapter) { - struct pci_dev *pdev = to_pci_dev(adapter->dev.parent); - - pr_devel("cxl_release_adapter\n"); + pr_devel("cxl_remove_adapter\n"); cxl_sysfs_adapter_remove(adapter); cxl_debugfs_adapter_remove(adapter); - cxl_release_psl_err_irq(adapter); - cxl_unmap_adapter_regs(adapter); - cxl_remove_adapter_nr(adapter); - device_unregister(&adapter->dev); + cxl_deconfigure_adapter(adapter); - pci_release_region(pdev, 0); - pci_release_region(pdev, 2); - pci_disable_device(pdev); + device_unregister(&adapter->dev); } static int cxl_probe(struct pci_dev *dev, const struct pci_device_id *id) @@ -1140,26 +1277,24 @@ int slice; int rc; - pci_dev_get(dev); - if (cxl_verbose) dump_cxl_config_space(dev); - if ((rc = pci_enable_device(dev))) { - dev_err(&dev->dev, "pci_enable_device failed: %i\n", rc); - return rc; - } - adapter = cxl_init_adapter(dev); if (IS_ERR(adapter)) { dev_err(&dev->dev, "cxl_init_adapter failed: %li\n", PTR_ERR(adapter)); - pci_disable_device(dev); return PTR_ERR(adapter); } for (slice = 0; slice < adapter->slices; slice++) { - if ((rc = cxl_init_afu(adapter, slice, dev))) + if ((rc = cxl_init_afu(adapter, slice, dev))) { dev_err(&dev->dev, "AFU %i failed to initialise: %i\n", slice, rc); + continue; + } + + rc = cxl_afu_select_best_mode(adapter->afu[slice]); + if (rc) + dev_err(&dev->dev, "AFU %i failed to start: %i\n", slice, rc); } return 0; @@ -1183,10 +1318,262 @@ cxl_remove_adapter(adapter); } +static pci_ers_result_t cxl_vphb_error_detected(struct cxl_afu *afu, + pci_channel_state_t state) +{ + struct pci_dev *afu_dev; + pci_ers_result_t result = PCI_ERS_RESULT_NEED_RESET; + pci_ers_result_t afu_result = PCI_ERS_RESULT_NEED_RESET; + + /* There should only be one entry, but go through the list + * anyway + */ + list_for_each_entry(afu_dev, &afu->phb->bus->devices, bus_list) { + if (!afu_dev->driver) + continue; + + afu_dev->error_state = state; + + if (afu_dev->driver->err_handler) + afu_result = afu_dev->driver->err_handler->error_detected(afu_dev, + state); + /* Disconnect trumps all, NONE trumps NEED_RESET */ + if (afu_result == PCI_ERS_RESULT_DISCONNECT) + result = PCI_ERS_RESULT_DISCONNECT; + else if ((afu_result == PCI_ERS_RESULT_NONE) && + (result == PCI_ERS_RESULT_NEED_RESET)) + result = PCI_ERS_RESULT_NONE; + } + return result; +} + +static pci_ers_result_t cxl_pci_error_detected(struct pci_dev *pdev, + pci_channel_state_t state) +{ + struct cxl *adapter = pci_get_drvdata(pdev); + struct cxl_afu *afu; + pci_ers_result_t result = PCI_ERS_RESULT_NEED_RESET; + int i; + + /* At this point, we could still have an interrupt pending. + * Let's try to get them out of the way before they do + * anything we don't like. + */ + schedule(); + + /* If we're permanently dead, give up. */ + if (state == pci_channel_io_perm_failure) { + /* Tell the AFU drivers; but we don't care what they + * say, we're going away. + */ + for (i = 0; i < adapter->slices; i++) { + afu = adapter->afu[i]; + cxl_vphb_error_detected(afu, state); + } + return PCI_ERS_RESULT_DISCONNECT; + } + + /* Are we reflashing? + * + * If we reflash, we could come back as something entirely + * different, including a non-CAPI card. As such, by default + * we don't participate in the process. We'll be unbound and + * the slot re-probed. (TODO: check EEH doesn't blindly rebind + * us!) + * + * However, this isn't the entire story: for reliablity + * reasons, we usually want to reflash the FPGA on PERST in + * order to get back to a more reliable known-good state. + * + * This causes us a bit of a problem: if we reflash we can't + * trust that we'll come back the same - we could have a new + * image and been PERSTed in order to load that + * image. However, most of the time we actually *will* come + * back the same - for example a regular EEH event. + * + * Therefore, we allow the user to assert that the image is + * indeed the same and that we should continue on into EEH + * anyway. + */ + if (adapter->perst_loads_image && !adapter->perst_same_image) { + /* TODO take the PHB out of CXL mode */ + dev_info(&pdev->dev, "reflashing, so opting out of EEH!\n"); + return PCI_ERS_RESULT_NONE; + } + + /* + * At this point, we want to try to recover. We'll always + * need a complete slot reset: we don't trust any other reset. + * + * Now, we go through each AFU: + * - We send the driver, if bound, an error_detected callback. + * We expect it to clean up, but it can also tell us to give + * up and permanently detach the card. To simplify things, if + * any bound AFU driver doesn't support EEH, we give up on EEH. + * + * - We detach all contexts associated with the AFU. This + * does not free them, but puts them into a CLOSED state + * which causes any the associated files to return useful + * errors to userland. It also unmaps, but does not free, + * any IRQs. + * + * - We clean up our side: releasing and unmapping resources we hold + * so we can wire them up again when the hardware comes back up. + * + * Driver authors should note: + * + * - Any contexts you create in your kernel driver (except + * those associated with anonymous file descriptors) are + * your responsibility to free and recreate. Likewise with + * any attached resources. + * + * - We will take responsibility for re-initialising the + * device context (the one set up for you in + * cxl_pci_enable_device_hook and accessed through + * cxl_get_context). If you've attached IRQs or other + * resources to it, they remains yours to free. + * + * You can call the same functions to release resources as you + * normally would: we make sure that these functions continue + * to work when the hardware is down. + * + * Two examples: + * + * 1) If you normally free all your resources at the end of + * each request, or if you use anonymous FDs, your + * error_detected callback can simply set a flag to tell + * your driver not to start any new calls. You can then + * clear the flag in the resume callback. + * + * 2) If you normally allocate your resources on startup: + * * Set a flag in error_detected as above. + * * Let CXL detach your contexts. + * * In slot_reset, free the old resources and allocate new ones. + * * In resume, clear the flag to allow things to start. + */ + for (i = 0; i < adapter->slices; i++) { + afu = adapter->afu[i]; + + result = cxl_vphb_error_detected(afu, state); + + /* Only continue if everyone agrees on NEED_RESET */ + if (result != PCI_ERS_RESULT_NEED_RESET) + return result; + + cxl_context_detach_all(afu); + cxl_afu_deactivate_mode(afu); + cxl_deconfigure_afu(afu); + } + cxl_deconfigure_adapter(adapter); + + return result; +} + +static pci_ers_result_t cxl_pci_slot_reset(struct pci_dev *pdev) +{ + struct cxl *adapter = pci_get_drvdata(pdev); + struct cxl_afu *afu; + struct cxl_context *ctx; + struct pci_dev *afu_dev; + pci_ers_result_t afu_result = PCI_ERS_RESULT_RECOVERED; + pci_ers_result_t result = PCI_ERS_RESULT_RECOVERED; + int i; + + if (cxl_configure_adapter(adapter, pdev)) + goto err; + + for (i = 0; i < adapter->slices; i++) { + afu = adapter->afu[i]; + + if (cxl_configure_afu(afu, adapter, pdev)) + goto err; + + if (cxl_afu_select_best_mode(afu)) + goto err; + + cxl_pci_vphb_reconfigure(afu); + + list_for_each_entry(afu_dev, &afu->phb->bus->devices, bus_list) { + /* Reset the device context. + * TODO: make this less disruptive + */ + ctx = cxl_get_context(afu_dev); + + if (ctx && cxl_release_context(ctx)) + goto err; + + ctx = cxl_dev_context_init(afu_dev); + if (!ctx) + goto err; + + afu_dev->dev.archdata.cxl_ctx = ctx; + + if (cxl_afu_check_and_enable(afu)) + goto err; + + afu_dev->error_state = pci_channel_io_normal; + + /* If there's a driver attached, allow it to + * chime in on recovery. Drivers should check + * if everything has come back OK, but + * shouldn't start new work until we call + * their resume function. + */ + if (!afu_dev->driver) + continue; + + if (afu_dev->driver->err_handler && + afu_dev->driver->err_handler->slot_reset) + afu_result = afu_dev->driver->err_handler->slot_reset(afu_dev); + + if (afu_result == PCI_ERS_RESULT_DISCONNECT) + result = PCI_ERS_RESULT_DISCONNECT; + } + } + return result; + +err: + /* All the bits that happen in both error_detected and cxl_remove + * should be idempotent, so we don't need to worry about leaving a mix + * of unconfigured and reconfigured resources. + */ + dev_err(&pdev->dev, "EEH recovery failed. Asking to be disconnected.\n"); + return PCI_ERS_RESULT_DISCONNECT; +} + +static void cxl_pci_resume(struct pci_dev *pdev) +{ + struct cxl *adapter = pci_get_drvdata(pdev); + struct cxl_afu *afu; + struct pci_dev *afu_dev; + int i; + + /* Everything is back now. Drivers should restart work now. + * This is not the place to be checking if everything came back up + * properly, because there's no return value: do that in slot_reset. + */ + for (i = 0; i < adapter->slices; i++) { + afu = adapter->afu[i]; + + list_for_each_entry(afu_dev, &afu->phb->bus->devices, bus_list) { + if (afu_dev->driver && afu_dev->driver->err_handler && + afu_dev->driver->err_handler->resume) + afu_dev->driver->err_handler->resume(afu_dev); + } + } +} + +static const struct pci_error_handlers cxl_err_handler = { + .error_detected = cxl_pci_error_detected, + .slot_reset = cxl_pci_slot_reset, + .resume = cxl_pci_resume, +}; + struct pci_driver cxl_pci_driver = { .name = "cxl-pci", .id_table = cxl_pci_tbl, .probe = cxl_probe, .remove = cxl_remove, .shutdown = cxl_remove, + .err_handler = &cxl_err_handler, }; --- linux-raspi2-4.2.0.orig/drivers/misc/cxl/sysfs.c +++ linux-raspi2-4.2.0/drivers/misc/cxl/sysfs.c @@ -112,12 +112,38 @@ return count; } +static ssize_t perst_reloads_same_image_show(struct device *device, + struct device_attribute *attr, + char *buf) +{ + struct cxl *adapter = to_cxl_adapter(device); + + return scnprintf(buf, PAGE_SIZE, "%i\n", adapter->perst_same_image); +} + +static ssize_t perst_reloads_same_image_store(struct device *device, + struct device_attribute *attr, + const char *buf, size_t count) +{ + struct cxl *adapter = to_cxl_adapter(device); + int rc; + int val; + + rc = sscanf(buf, "%i", &val); + if ((rc != 1) || !(val == 1 || val == 0)) + return -EINVAL; + + adapter->perst_same_image = (val == 1 ? true : false); + return count; +} + static struct device_attribute adapter_attrs[] = { __ATTR_RO(caia_version), __ATTR_RO(psl_revision), __ATTR_RO(base_image), __ATTR_RO(image_loaded), __ATTR_RW(load_image_on_perst), + __ATTR_RW(perst_reloads_same_image), __ATTR(reset, S_IWUSR, NULL, reset_adapter_store), }; @@ -443,12 +469,7 @@ struct afu_config_record *cr = to_cr(kobj); struct cxl_afu *afu = to_cxl_afu(container_of(kobj->parent, struct device, kobj)); - u64 i, j, val, size = afu->crs_len; - - if (off > size) - return 0; - if (off + count > size) - count = size - off; + u64 i, j, val; for (i = 0; i < count;) { val = cxl_afu_cr_read64(afu, cr->cr, off & ~0x7); @@ -571,6 +592,8 @@ /* conditionally create the add the binary file for error info buffer */ if (afu->eb_len) { + sysfs_attr_init(&afu->attr_eb.attr); + afu->attr_eb.attr.name = "afu_err_buff"; afu->attr_eb.attr.mode = S_IRUGO; afu->attr_eb.size = afu->eb_len; --- linux-raspi2-4.2.0.orig/drivers/misc/cxl/trace.h +++ linux-raspi2-4.2.0/drivers/misc/cxl/trace.h @@ -105,7 +105,7 @@ __entry->num_interrupts = num_interrupts; ), - TP_printk("afu%i.%i pid=%i pe=%i wed=0x%.16llx irqs=%i amr=0x%llx", + TP_printk("afu%i.%i pid=%i pe=%i wed=0x%016llx irqs=%i amr=0x%llx", __entry->card, __entry->afu, __entry->pid, @@ -177,7 +177,7 @@ __entry->dar = dar; ), - TP_printk("afu%i.%i pe=%i irq=%i dsisr=%s dar=0x%.16llx", + TP_printk("afu%i.%i pe=%i irq=%i dsisr=%s dar=0x%016llx", __entry->card, __entry->afu, __entry->pe, @@ -233,7 +233,7 @@ __entry->dar = dar; ), - TP_printk("afu%i.%i pe=%i dar=0x%.16llx", + TP_printk("afu%i.%i pe=%i dar=0x%016llx", __entry->card, __entry->afu, __entry->pe, @@ -264,7 +264,7 @@ __entry->v = v; ), - TP_printk("afu%i.%i pe=%i SSTE[%i] E=0x%.16llx V=0x%.16llx", + TP_printk("afu%i.%i pe=%i SSTE[%i] E=0x%016llx V=0x%016llx", __entry->card, __entry->afu, __entry->pe, @@ -295,7 +295,7 @@ __entry->dar = dar; ), - TP_printk("afu%i.%i pe=%i dsisr=%s dar=0x%.16llx", + TP_printk("afu%i.%i pe=%i dsisr=%s dar=0x%016llx", __entry->card, __entry->afu, __entry->pe, --- linux-raspi2-4.2.0.orig/drivers/misc/cxl/vphb.c +++ linux-raspi2-4.2.0/drivers/misc/cxl/vphb.c @@ -48,6 +48,12 @@ phb = pci_bus_to_host(dev->bus); afu = (struct cxl_afu *)phb->private_data; + + if (!cxl_adapter_link_ok(afu->adapter)) { + dev_warn(&dev->dev, "%s: Device link is down, refusing to enable AFU\n", __func__); + return false; + } + set_dma_ops(&dev->dev, &dma_direct_ops); set_dma_offset(&dev->dev, PAGE_OFFSET); @@ -138,6 +144,26 @@ return 0; } + +static inline bool cxl_config_link_ok(struct pci_bus *bus) +{ + struct pci_controller *phb; + struct cxl_afu *afu; + + /* Config space IO is based on phb->cfg_addr, which is based on + * afu_desc_mmio. This isn't safe to read/write when the link + * goes down, as EEH tears down MMIO space. + * + * Check if the link is OK before proceeding. + */ + + phb = pci_bus_to_host(bus); + if (phb == NULL) + return false; + afu = (struct cxl_afu *)phb->private_data; + return cxl_adapter_link_ok(afu->adapter); +} + static int cxl_pcie_read_config(struct pci_bus *bus, unsigned int devfn, int offset, int len, u32 *val) { @@ -150,6 +176,9 @@ if (rc) return rc; + if (!cxl_config_link_ok(bus)) + return PCIBIOS_DEVICE_NOT_FOUND; + /* Can only read 32 bits */ *val = (in_le32(ioaddr) >> shift) & mask; return PCIBIOS_SUCCESSFUL; @@ -167,6 +196,9 @@ if (rc) return rc; + if (!cxl_config_link_ok(bus)) + return PCIBIOS_DEVICE_NOT_FOUND; + /* Can only write 32 bits so do read-modify-write */ mask <<= shift; val <<= shift; @@ -240,6 +272,14 @@ return 0; } +void cxl_pci_vphb_reconfigure(struct cxl_afu *afu) +{ + /* When we are reconfigured, the AFU's MMIO space is unmapped + * and remapped. We need to reflect this in the PHB's view of + * the world. + */ + afu->phb->cfg_addr = afu->afu_desc_mmio + afu->crs_offset; +} void cxl_pci_vphb_remove(struct cxl_afu *afu) { --- linux-raspi2-4.2.0.orig/drivers/misc/mei/Makefile +++ linux-raspi2-4.2.0/drivers/misc/mei/Makefile @@ -11,7 +11,7 @@ mei-objs += amthif.o mei-objs += wd.o mei-objs += bus.o -mei-objs += nfc.o +mei-objs += bus-fixup.o mei-$(CONFIG_DEBUG_FS) += debugfs.o obj-$(CONFIG_INTEL_MEI_ME) += mei-me.o --- linux-raspi2-4.2.0.orig/drivers/misc/mei/bus-fixup.c +++ linux-raspi2-4.2.0/drivers/misc/mei/bus-fixup.c @@ -0,0 +1,306 @@ +/* + * + * Intel Management Engine Interface (Intel MEI) Linux driver + * Copyright (c) 2003-2013, Intel Corporation. + * + * 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. + * + */ + +#include +#include +#include +#include +#include +#include +#include + +#include + +#include "mei_dev.h" +#include "client.h" + +#define MEI_UUID_NFC_INFO UUID_LE(0xd2de1625, 0x382d, 0x417d, \ + 0x48, 0xa4, 0xef, 0xab, 0xba, 0x8a, 0x12, 0x06) + +static const uuid_le mei_nfc_info_guid = MEI_UUID_NFC_INFO; + +#define MEI_UUID_NFC_HCI UUID_LE(0x0bb17a78, 0x2a8e, 0x4c50, \ + 0x94, 0xd4, 0x50, 0x26, 0x67, 0x23, 0x77, 0x5c) + +#define MEI_UUID_ANY NULL_UUID_LE + +/** + * number_of_connections - determine whether an client be on the bus + * according number of connections + * We support only clients: + * 1. with single connection + * 2. and fixed clients (max_number_of_connections == 0) + * + * @cldev: me clients device + */ +static void number_of_connections(struct mei_cl_device *cldev) +{ + dev_dbg(&cldev->dev, "running hook %s on %pUl\n", + __func__, mei_me_cl_uuid(cldev->me_cl)); + + if (cldev->me_cl->props.max_number_of_connections > 1) + cldev->do_match = 0; +} + +/** + * blacklist - blacklist a client from the bus + * + * @cldev: me clients device + */ +static void blacklist(struct mei_cl_device *cldev) +{ + dev_dbg(&cldev->dev, "running hook %s on %pUl\n", + __func__, mei_me_cl_uuid(cldev->me_cl)); + cldev->do_match = 0; +} + +struct mei_nfc_cmd { + u8 command; + u8 status; + u16 req_id; + u32 reserved; + u16 data_size; + u8 sub_command; + u8 data[]; +} __packed; + +struct mei_nfc_reply { + u8 command; + u8 status; + u16 req_id; + u32 reserved; + u16 data_size; + u8 sub_command; + u8 reply_status; + u8 data[]; +} __packed; + +struct mei_nfc_if_version { + u8 radio_version_sw[3]; + u8 reserved[3]; + u8 radio_version_hw[3]; + u8 i2c_addr; + u8 fw_ivn; + u8 vendor_id; + u8 radio_type; +} __packed; + + +#define MEI_NFC_CMD_MAINTENANCE 0x00 +#define MEI_NFC_SUBCMD_IF_VERSION 0x01 + +/* Vendors */ +#define MEI_NFC_VENDOR_INSIDE 0x00 +#define MEI_NFC_VENDOR_NXP 0x01 + +/* Radio types */ +#define MEI_NFC_VENDOR_INSIDE_UREAD 0x00 +#define MEI_NFC_VENDOR_NXP_PN544 0x01 + +/** + * mei_nfc_if_version - get NFC interface version + * + * @cl: host client (nfc info) + * @ver: NFC interface version to be filled in + * + * Return: 0 on success; < 0 otherwise + */ +static int mei_nfc_if_version(struct mei_cl *cl, + struct mei_nfc_if_version *ver) +{ + struct mei_device *bus; + struct mei_nfc_cmd cmd = { + .command = MEI_NFC_CMD_MAINTENANCE, + .data_size = 1, + .sub_command = MEI_NFC_SUBCMD_IF_VERSION, + }; + struct mei_nfc_reply *reply = NULL; + size_t if_version_length; + int bytes_recv, ret; + + bus = cl->dev; + + WARN_ON(mutex_is_locked(&bus->device_lock)); + + ret = __mei_cl_send(cl, (u8 *)&cmd, sizeof(struct mei_nfc_cmd), 1); + if (ret < 0) { + dev_err(bus->dev, "Could not send IF version cmd\n"); + return ret; + } + + /* to be sure on the stack we alloc memory */ + if_version_length = sizeof(struct mei_nfc_reply) + + sizeof(struct mei_nfc_if_version); + + reply = kzalloc(if_version_length, GFP_KERNEL); + if (!reply) + return -ENOMEM; + + ret = 0; + bytes_recv = __mei_cl_recv(cl, (u8 *)reply, if_version_length); + if (bytes_recv < 0 || bytes_recv < sizeof(struct mei_nfc_reply)) { + dev_err(bus->dev, "Could not read IF version\n"); + ret = -EIO; + goto err; + } + + memcpy(ver, reply->data, sizeof(struct mei_nfc_if_version)); + + dev_info(bus->dev, "NFC MEI VERSION: IVN 0x%x Vendor ID 0x%x Type 0x%x\n", + ver->fw_ivn, ver->vendor_id, ver->radio_type); + +err: + kfree(reply); + return ret; +} + +/** + * mei_nfc_radio_name - derive nfc radio name from the interface version + * + * @ver: NFC radio version + * + * Return: radio name string + */ +static const char *mei_nfc_radio_name(struct mei_nfc_if_version *ver) +{ + + if (ver->vendor_id == MEI_NFC_VENDOR_INSIDE) { + if (ver->radio_type == MEI_NFC_VENDOR_INSIDE_UREAD) + return "microread"; + } + + if (ver->vendor_id == MEI_NFC_VENDOR_NXP) { + if (ver->radio_type == MEI_NFC_VENDOR_NXP_PN544) + return "pn544"; + } + + return NULL; +} + +/** + * mei_nfc - The nfc fixup function. The function retrieves nfc radio + * name and set is as device attribute so we can load + * the proper device driver for it + * + * @cldev: me client device (nfc) + */ +static void mei_nfc(struct mei_cl_device *cldev) +{ + struct mei_device *bus; + struct mei_cl *cl; + struct mei_me_client *me_cl = NULL; + struct mei_nfc_if_version ver; + const char *radio_name = NULL; + int ret; + + bus = cldev->bus; + + dev_dbg(bus->dev, "running hook %s: %pUl match=%d\n", + __func__, mei_me_cl_uuid(cldev->me_cl), cldev->do_match); + + mutex_lock(&bus->device_lock); + /* we need to connect to INFO GUID */ + cl = mei_cl_alloc_linked(bus, MEI_HOST_CLIENT_ID_ANY); + if (IS_ERR(cl)) { + ret = PTR_ERR(cl); + cl = NULL; + dev_err(bus->dev, "nfc hook alloc failed %d\n", ret); + goto out; + } + + me_cl = mei_me_cl_by_uuid(bus, &mei_nfc_info_guid); + if (!me_cl) { + ret = -ENOTTY; + dev_err(bus->dev, "Cannot find nfc info %d\n", ret); + goto out; + } + + ret = mei_cl_connect(cl, me_cl, NULL); + if (ret < 0) { + dev_err(&cldev->dev, "Can't connect to the NFC INFO ME ret = %d\n", + ret); + goto out; + } + + mutex_unlock(&bus->device_lock); + + ret = mei_nfc_if_version(cl, &ver); + if (ret) + goto disconnect; + + radio_name = mei_nfc_radio_name(&ver); + + if (!radio_name) { + ret = -ENOENT; + dev_err(&cldev->dev, "Can't get the NFC interface version ret = %d\n", + ret); + goto disconnect; + } + + dev_dbg(bus->dev, "nfc radio %s\n", radio_name); + strlcpy(cldev->name, radio_name, sizeof(cldev->name)); + +disconnect: + mutex_lock(&bus->device_lock); + if (mei_cl_disconnect(cl) < 0) + dev_err(bus->dev, "Can't disconnect the NFC INFO ME\n"); + + mei_cl_flush_queues(cl, NULL); + +out: + mei_cl_unlink(cl); + mutex_unlock(&bus->device_lock); + mei_me_cl_put(me_cl); + kfree(cl); + + if (ret) + cldev->do_match = 0; + + dev_dbg(bus->dev, "end of fixup match = %d\n", cldev->do_match); +} + +#define MEI_FIXUP(_uuid, _hook) { _uuid, _hook } + +static struct mei_fixup { + + const uuid_le uuid; + void (*hook)(struct mei_cl_device *cldev); +} mei_fixups[] = { + MEI_FIXUP(MEI_UUID_ANY, number_of_connections), + MEI_FIXUP(MEI_UUID_NFC_INFO, blacklist), + MEI_FIXUP(MEI_UUID_NFC_HCI, mei_nfc), +}; + +/** + * mei_cl_dev_fixup - run fixup handlers + * + * @cldev: me client device + */ +void mei_cl_dev_fixup(struct mei_cl_device *cldev) +{ + struct mei_fixup *f; + const uuid_le *uuid = mei_me_cl_uuid(cldev->me_cl); + int i; + + for (i = 0; i < ARRAY_SIZE(mei_fixups); i++) { + + f = &mei_fixups[i]; + if (uuid_le_cmp(f->uuid, MEI_UUID_ANY) == 0 || + uuid_le_cmp(f->uuid, *uuid) == 0) + f->hook(cldev); + } +} + --- linux-raspi2-4.2.0.orig/drivers/misc/mei/bus.c +++ linux-raspi2-4.2.0/drivers/misc/mei/bus.c @@ -30,276 +30,29 @@ #define to_mei_cl_driver(d) container_of(d, struct mei_cl_driver, driver) #define to_mei_cl_device(d) container_of(d, struct mei_cl_device, dev) -static int mei_cl_device_match(struct device *dev, struct device_driver *drv) -{ - struct mei_cl_device *device = to_mei_cl_device(dev); - struct mei_cl_driver *driver = to_mei_cl_driver(drv); - const struct mei_cl_device_id *id; - const uuid_le *uuid; - const char *name; - - if (!device) - return 0; - - uuid = mei_me_cl_uuid(device->me_cl); - name = device->name; - - if (!driver || !driver->id_table) - return 0; - - id = driver->id_table; - - while (uuid_le_cmp(NULL_UUID_LE, id->uuid)) { - - if (!uuid_le_cmp(*uuid, id->uuid)) { - if (id->name[0]) { - if (!strncmp(name, id->name, sizeof(id->name))) - return 1; - } else { - return 1; - } - } - - id++; - } - - return 0; -} - -static int mei_cl_device_probe(struct device *dev) -{ - struct mei_cl_device *device = to_mei_cl_device(dev); - struct mei_cl_driver *driver; - struct mei_cl_device_id id; - - if (!device) - return 0; - - driver = to_mei_cl_driver(dev->driver); - if (!driver || !driver->probe) - return -ENODEV; - - dev_dbg(dev, "Device probe\n"); - - strlcpy(id.name, device->name, sizeof(id.name)); - - return driver->probe(device, &id); -} - -static int mei_cl_device_remove(struct device *dev) -{ - struct mei_cl_device *device = to_mei_cl_device(dev); - struct mei_cl_driver *driver; - - if (!device || !dev->driver) - return 0; - - if (device->event_cb) { - device->event_cb = NULL; - cancel_work_sync(&device->event_work); - } - - driver = to_mei_cl_driver(dev->driver); - if (!driver->remove) { - dev->driver = NULL; - - return 0; - } - - return driver->remove(device); -} - -static ssize_t name_show(struct device *dev, struct device_attribute *a, - char *buf) -{ - struct mei_cl_device *device = to_mei_cl_device(dev); - size_t len; - - len = snprintf(buf, PAGE_SIZE, "%s", device->name); - - return (len >= PAGE_SIZE) ? (PAGE_SIZE - 1) : len; -} -static DEVICE_ATTR_RO(name); - -static ssize_t uuid_show(struct device *dev, struct device_attribute *a, - char *buf) -{ - struct mei_cl_device *device = to_mei_cl_device(dev); - const uuid_le *uuid = mei_me_cl_uuid(device->me_cl); - size_t len; - - len = snprintf(buf, PAGE_SIZE, "%pUl", uuid); - - return (len >= PAGE_SIZE) ? (PAGE_SIZE - 1) : len; -} -static DEVICE_ATTR_RO(uuid); - -static ssize_t modalias_show(struct device *dev, struct device_attribute *a, - char *buf) -{ - struct mei_cl_device *device = to_mei_cl_device(dev); - const uuid_le *uuid = mei_me_cl_uuid(device->me_cl); - size_t len; - - len = snprintf(buf, PAGE_SIZE, "mei:%s:" MEI_CL_UUID_FMT ":", - device->name, MEI_CL_UUID_ARGS(uuid->b)); - - return (len >= PAGE_SIZE) ? (PAGE_SIZE - 1) : len; -} -static DEVICE_ATTR_RO(modalias); - -static struct attribute *mei_cl_dev_attrs[] = { - &dev_attr_name.attr, - &dev_attr_uuid.attr, - &dev_attr_modalias.attr, - NULL, -}; -ATTRIBUTE_GROUPS(mei_cl_dev); - -static int mei_cl_uevent(struct device *dev, struct kobj_uevent_env *env) -{ - struct mei_cl_device *device = to_mei_cl_device(dev); - const uuid_le *uuid = mei_me_cl_uuid(device->me_cl); - - if (add_uevent_var(env, "MEI_CL_UUID=%pUl", uuid)) - return -ENOMEM; - - if (add_uevent_var(env, "MEI_CL_NAME=%s", device->name)) - return -ENOMEM; - - if (add_uevent_var(env, "MODALIAS=mei:%s:" MEI_CL_UUID_FMT ":", - device->name, MEI_CL_UUID_ARGS(uuid->b))) - return -ENOMEM; - - return 0; -} - -static struct bus_type mei_cl_bus_type = { - .name = "mei", - .dev_groups = mei_cl_dev_groups, - .match = mei_cl_device_match, - .probe = mei_cl_device_probe, - .remove = mei_cl_device_remove, - .uevent = mei_cl_uevent, -}; - -static void mei_cl_dev_release(struct device *dev) -{ - struct mei_cl_device *device = to_mei_cl_device(dev); - - if (!device) - return; - - mei_me_cl_put(device->me_cl); - kfree(device); -} - -static struct device_type mei_cl_device_type = { - .release = mei_cl_dev_release, -}; - -struct mei_cl *mei_cl_bus_find_cl_by_uuid(struct mei_device *dev, - uuid_le uuid) -{ - struct mei_cl *cl; - - list_for_each_entry(cl, &dev->device_list, device_link) { - if (cl->device && cl->device->me_cl && - !uuid_le_cmp(uuid, *mei_me_cl_uuid(cl->device->me_cl))) - return cl; - } - - return NULL; -} - -struct mei_cl_device *mei_cl_add_device(struct mei_device *dev, - struct mei_me_client *me_cl, - struct mei_cl *cl, - char *name) -{ - struct mei_cl_device *device; - int status; - - device = kzalloc(sizeof(struct mei_cl_device), GFP_KERNEL); - if (!device) - return NULL; - - device->me_cl = mei_me_cl_get(me_cl); - if (!device->me_cl) { - kfree(device); - return NULL; - } - - device->cl = cl; - device->dev.parent = dev->dev; - device->dev.bus = &mei_cl_bus_type; - device->dev.type = &mei_cl_device_type; - - strlcpy(device->name, name, sizeof(device->name)); - - dev_set_name(&device->dev, "mei:%s:%pUl", name, mei_me_cl_uuid(me_cl)); - - status = device_register(&device->dev); - if (status) { - dev_err(dev->dev, "Failed to register MEI device\n"); - mei_me_cl_put(device->me_cl); - kfree(device); - return NULL; - } - - cl->device = device; - - dev_dbg(&device->dev, "client %s registered\n", name); - - return device; -} -EXPORT_SYMBOL_GPL(mei_cl_add_device); - -void mei_cl_remove_device(struct mei_cl_device *device) -{ - device_unregister(&device->dev); -} -EXPORT_SYMBOL_GPL(mei_cl_remove_device); - -int __mei_cl_driver_register(struct mei_cl_driver *driver, struct module *owner) -{ - int err; - - driver->driver.name = driver->name; - driver->driver.owner = owner; - driver->driver.bus = &mei_cl_bus_type; - - err = driver_register(&driver->driver); - if (err) - return err; - - pr_debug("mei: driver [%s] registered\n", driver->driver.name); - - return 0; -} -EXPORT_SYMBOL_GPL(__mei_cl_driver_register); - -void mei_cl_driver_unregister(struct mei_cl_driver *driver) -{ - driver_unregister(&driver->driver); - - pr_debug("mei: driver [%s] unregistered\n", driver->driver.name); -} -EXPORT_SYMBOL_GPL(mei_cl_driver_unregister); - +/** + * __mei_cl_send - internal client send (write) + * + * @cl: host client + * @buf: buffer to send + * @length: buffer length + * @blocking: wait for write completion + * + * Return: written size bytes or < 0 on error + */ ssize_t __mei_cl_send(struct mei_cl *cl, u8 *buf, size_t length, bool blocking) { - struct mei_device *dev; + struct mei_device *bus; struct mei_cl_cb *cb = NULL; ssize_t rets; if (WARN_ON(!cl || !cl->dev)) return -ENODEV; - dev = cl->dev; + bus = cl->dev; - mutex_lock(&dev->device_lock); + mutex_lock(&bus->device_lock); if (!mei_cl_is_connected(cl)) { rets = -ENODEV; goto out; @@ -327,16 +80,25 @@ rets = mei_cl_write(cl, cb, blocking); out: - mutex_unlock(&dev->device_lock); + mutex_unlock(&bus->device_lock); if (rets < 0) mei_io_cb_free(cb); return rets; } +/** + * __mei_cl_recv - internal client receive (read) + * + * @cl: host client + * @buf: buffer to send + * @length: buffer length + * + * Return: read size in bytes of < 0 on error + */ ssize_t __mei_cl_recv(struct mei_cl *cl, u8 *buf, size_t length) { - struct mei_device *dev; + struct mei_device *bus; struct mei_cl_cb *cb; size_t r_length; ssize_t rets; @@ -344,9 +106,9 @@ if (WARN_ON(!cl || !cl->dev)) return -ENODEV; - dev = cl->dev; + bus = cl->dev; - mutex_lock(&dev->device_lock); + mutex_lock(&bus->device_lock); cb = mei_cl_read_cb(cl, NULL); if (cb) @@ -356,9 +118,10 @@ if (rets && rets != -EBUSY) goto out; + /* wait on event only if there is no other waiter */ if (list_empty(&cl->rd_completed) && !waitqueue_active(&cl->rx_wait)) { - mutex_unlock(&dev->device_lock); + mutex_unlock(&bus->device_lock); if (wait_event_interruptible(cl->rx_wait, (!list_empty(&cl->rd_completed)) || @@ -369,7 +132,7 @@ return -ERESTARTSYS; } - mutex_lock(&dev->device_lock); + mutex_lock(&bus->device_lock); if (!mei_cl_is_connected(cl)) { rets = -EBUSY; @@ -396,14 +159,23 @@ free: mei_io_cb_free(cb); out: - mutex_unlock(&dev->device_lock); + mutex_unlock(&bus->device_lock); return rets; } -ssize_t mei_cl_send(struct mei_cl_device *device, u8 *buf, size_t length) +/** + * mei_cl_send - me device send (write) + * + * @cldev: me client device + * @buf: buffer to send + * @length: buffer length + * + * Return: written size in bytes or < 0 on error + */ +ssize_t mei_cl_send(struct mei_cl_device *cldev, u8 *buf, size_t length) { - struct mei_cl *cl = device->cl; + struct mei_cl *cl = cldev->cl; if (cl == NULL) return -ENODEV; @@ -412,9 +184,18 @@ } EXPORT_SYMBOL_GPL(mei_cl_send); -ssize_t mei_cl_recv(struct mei_cl_device *device, u8 *buf, size_t length) +/** + * mei_cl_recv - client receive (read) + * + * @cldev: me client device + * @buf: buffer to send + * @length: buffer length + * + * Return: read size in bytes of < 0 on error + */ +ssize_t mei_cl_recv(struct mei_cl_device *cldev, u8 *buf, size_t length) { - struct mei_cl *cl = device->cl; + struct mei_cl *cl = cldev->cl; if (cl == NULL) return -ENODEV; @@ -423,134 +204,697 @@ } EXPORT_SYMBOL_GPL(mei_cl_recv); +/** + * mei_bus_event_work - dispatch rx event for a bus device + * and schedule new work + * + * @work: work + */ static void mei_bus_event_work(struct work_struct *work) { - struct mei_cl_device *device; + struct mei_cl_device *cldev; - device = container_of(work, struct mei_cl_device, event_work); + cldev = container_of(work, struct mei_cl_device, event_work); - if (device->event_cb) - device->event_cb(device, device->events, device->event_context); + if (cldev->event_cb) + cldev->event_cb(cldev, cldev->events, cldev->event_context); - device->events = 0; + cldev->events = 0; /* Prepare for the next read */ - mei_cl_read_start(device->cl, 0, NULL); + if (cldev->events_mask & BIT(MEI_CL_EVENT_RX)) + mei_cl_read_start(cldev->cl, 0, NULL); +} + +/** + * mei_cl_bus_notify_event - schedule notify cb on bus client + * + * @cl: host client + */ +void mei_cl_bus_notify_event(struct mei_cl *cl) +{ + struct mei_cl_device *cldev = cl->cldev; + + if (!cldev || !cldev->event_cb) + return; + + if (!(cldev->events_mask & BIT(MEI_CL_EVENT_NOTIF))) + return; + + if (!cl->notify_ev) + return; + + set_bit(MEI_CL_EVENT_NOTIF, &cldev->events); + + schedule_work(&cldev->event_work); + + cl->notify_ev = false; +} + +/** + * mei_cl_bus_rx_event - schedule rx evenet + * + * @cl: host client + */ +void mei_cl_bus_rx_event(struct mei_cl *cl) +{ + struct mei_cl_device *cldev = cl->cldev; + + if (!cldev || !cldev->event_cb) + return; + + if (!(cldev->events_mask & BIT(MEI_CL_EVENT_RX))) + return; + + set_bit(MEI_CL_EVENT_RX, &cldev->events); + + schedule_work(&cldev->event_work); } -int mei_cl_register_event_cb(struct mei_cl_device *device, +/** + * mei_cl_register_event_cb - register event callback + * + * @cldev: me client devices + * @event_cb: callback function + * @events_mask: requested events bitmask + * @context: driver context data + * + * Return: 0 on success + * -EALREADY if an callback is already registered + * <0 on other errors + */ +int mei_cl_register_event_cb(struct mei_cl_device *cldev, + unsigned long events_mask, mei_cl_event_cb_t event_cb, void *context) { - if (device->event_cb) - return -EALREADY; + int ret; - device->events = 0; - device->event_cb = event_cb; - device->event_context = context; - INIT_WORK(&device->event_work, mei_bus_event_work); + if (cldev->event_cb) + return -EALREADY; - mei_cl_read_start(device->cl, 0, NULL); + cldev->events = 0; + cldev->events_mask = events_mask; + cldev->event_cb = event_cb; + cldev->event_context = context; + INIT_WORK(&cldev->event_work, mei_bus_event_work); + + if (cldev->events_mask & BIT(MEI_CL_EVENT_RX)) { + ret = mei_cl_read_start(cldev->cl, 0, NULL); + if (ret && ret != -EBUSY) + return ret; + } + + if (cldev->events_mask & BIT(MEI_CL_EVENT_NOTIF)) { + mutex_lock(&cldev->cl->dev->device_lock); + ret = mei_cl_notify_request(cldev->cl, NULL, event_cb ? 1 : 0); + mutex_unlock(&cldev->cl->dev->device_lock); + if (ret) + return ret; + } return 0; } EXPORT_SYMBOL_GPL(mei_cl_register_event_cb); -void *mei_cl_get_drvdata(const struct mei_cl_device *device) +/** + * mei_cl_get_drvdata - driver data getter + * + * @cldev: mei client device + * + * Return: driver private data + */ +void *mei_cl_get_drvdata(const struct mei_cl_device *cldev) { - return dev_get_drvdata(&device->dev); + return dev_get_drvdata(&cldev->dev); } EXPORT_SYMBOL_GPL(mei_cl_get_drvdata); -void mei_cl_set_drvdata(struct mei_cl_device *device, void *data) +/** + * mei_cl_set_drvdata - driver data setter + * + * @cldev: mei client device + * @data: data to store + */ +void mei_cl_set_drvdata(struct mei_cl_device *cldev, void *data) { - dev_set_drvdata(&device->dev, data); + dev_set_drvdata(&cldev->dev, data); } EXPORT_SYMBOL_GPL(mei_cl_set_drvdata); -int mei_cl_enable_device(struct mei_cl_device *device) +/** + * mei_cl_enable_device - enable me client device + * create connection with me client + * + * @cldev: me client device + * + * Return: 0 on success and < 0 on error + */ +int mei_cl_enable_device(struct mei_cl_device *cldev) { - int err; - struct mei_device *dev; - struct mei_cl *cl = device->cl; - - if (cl == NULL) - return -ENODEV; + struct mei_device *bus = cldev->bus; + struct mei_cl *cl; + int ret; - dev = cl->dev; + cl = cldev->cl; - mutex_lock(&dev->device_lock); + if (!cl) { + mutex_lock(&bus->device_lock); + cl = mei_cl_alloc_linked(bus, MEI_HOST_CLIENT_ID_ANY); + mutex_unlock(&bus->device_lock); + if (IS_ERR(cl)) + return PTR_ERR(cl); + /* update pointers */ + cldev->cl = cl; + cl->cldev = cldev; + } + mutex_lock(&bus->device_lock); if (mei_cl_is_connected(cl)) { - mutex_unlock(&dev->device_lock); - dev_warn(dev->dev, "Already connected"); - return -EBUSY; + ret = 0; + goto out; } - err = mei_cl_connect(cl, device->me_cl, NULL); - if (err < 0) { - mutex_unlock(&dev->device_lock); - dev_err(dev->dev, "Could not connect to the ME client"); - - return err; + if (!mei_me_cl_is_active(cldev->me_cl)) { + dev_err(&cldev->dev, "me client is not active\n"); + ret = -ENOTTY; + goto out; } - mutex_unlock(&dev->device_lock); + ret = mei_cl_connect(cl, cldev->me_cl, NULL); + if (ret < 0) + dev_err(&cldev->dev, "cannot connect\n"); - if (device->event_cb) - mei_cl_read_start(device->cl, 0, NULL); +out: + mutex_unlock(&bus->device_lock); - return 0; + return ret; } EXPORT_SYMBOL_GPL(mei_cl_enable_device); -int mei_cl_disable_device(struct mei_cl_device *device) +/** + * mei_cl_disable_device - disable me client device + * disconnect form the me client + * + * @cldev: me client device + * + * Return: 0 on success and < 0 on error + */ +int mei_cl_disable_device(struct mei_cl_device *cldev) { + struct mei_device *bus; + struct mei_cl *cl; int err; - struct mei_device *dev; - struct mei_cl *cl = device->cl; - if (cl == NULL) + if (!cldev || !cldev->cl) return -ENODEV; - dev = cl->dev; + cl = cldev->cl; + + bus = cldev->bus; - device->event_cb = NULL; + cldev->event_cb = NULL; - mutex_lock(&dev->device_lock); + mutex_lock(&bus->device_lock); if (!mei_cl_is_connected(cl)) { - dev_err(dev->dev, "Already disconnected"); + dev_err(bus->dev, "Already disconnected"); err = 0; goto out; } err = mei_cl_disconnect(cl); - if (err < 0) { - dev_err(dev->dev, "Could not disconnect from the ME client"); - goto out; - } + if (err < 0) + dev_err(bus->dev, "Could not disconnect from the ME client"); +out: /* Flush queues and remove any pending read */ mei_cl_flush_queues(cl, NULL); + mei_cl_unlink(cl); -out: - mutex_unlock(&dev->device_lock); - return err; + kfree(cl); + cldev->cl = NULL; + mutex_unlock(&bus->device_lock); + return err; } EXPORT_SYMBOL_GPL(mei_cl_disable_device); -void mei_cl_bus_rx_event(struct mei_cl *cl) +/** + * mei_cl_device_find - find matching entry in the driver id table + * + * @cldev: me client device + * @cldrv: me client driver + * + * Return: id on success; NULL if no id is matching + */ +static const +struct mei_cl_device_id *mei_cl_device_find(struct mei_cl_device *cldev, + struct mei_cl_driver *cldrv) +{ + const struct mei_cl_device_id *id; + const uuid_le *uuid; + + uuid = mei_me_cl_uuid(cldev->me_cl); + + id = cldrv->id_table; + while (uuid_le_cmp(NULL_UUID_LE, id->uuid)) { + if (!uuid_le_cmp(*uuid, id->uuid)) { + + if (!cldev->name[0]) + return id; + + if (!strncmp(cldev->name, id->name, sizeof(id->name))) + return id; + } + + id++; + } + + return NULL; +} + +/** + * mei_cl_device_match - device match function + * + * @dev: device + * @drv: driver + * + * Return: 1 if matching device was found 0 otherwise + */ +static int mei_cl_device_match(struct device *dev, struct device_driver *drv) +{ + struct mei_cl_device *cldev = to_mei_cl_device(dev); + struct mei_cl_driver *cldrv = to_mei_cl_driver(drv); + const struct mei_cl_device_id *found_id; + + if (!cldev) + return 0; + + if (!cldev->do_match) + return 0; + + if (!cldrv || !cldrv->id_table) + return 0; + + found_id = mei_cl_device_find(cldev, cldrv); + if (found_id) + return 1; + + return 0; +} + +/** + * mei_cl_device_probe - bus probe function + * + * @dev: device + * + * Return: 0 on success; < 0 otherwise + */ +static int mei_cl_device_probe(struct device *dev) +{ + struct mei_cl_device *cldev; + struct mei_cl_driver *cldrv; + const struct mei_cl_device_id *id; + + cldev = to_mei_cl_device(dev); + cldrv = to_mei_cl_driver(dev->driver); + + if (!cldev) + return 0; + + if (!cldrv || !cldrv->probe) + return -ENODEV; + + id = mei_cl_device_find(cldev, cldrv); + if (!id) + return -ENODEV; + + __module_get(THIS_MODULE); + + return cldrv->probe(cldev, id); +} + +/** + * mei_cl_device_remove - remove device from the bus + * + * @dev: device + * + * Return: 0 on success; < 0 otherwise + */ +static int mei_cl_device_remove(struct device *dev) +{ + struct mei_cl_device *cldev = to_mei_cl_device(dev); + struct mei_cl_driver *cldrv; + int ret = 0; + + if (!cldev || !dev->driver) + return 0; + + if (cldev->event_cb) { + cldev->event_cb = NULL; + cancel_work_sync(&cldev->event_work); + } + + cldrv = to_mei_cl_driver(dev->driver); + if (cldrv->remove) + ret = cldrv->remove(cldev); + + module_put(THIS_MODULE); + dev->driver = NULL; + return ret; + +} + +static ssize_t name_show(struct device *dev, struct device_attribute *a, + char *buf) +{ + struct mei_cl_device *cldev = to_mei_cl_device(dev); + size_t len; + + len = snprintf(buf, PAGE_SIZE, "%s", cldev->name); + + return (len >= PAGE_SIZE) ? (PAGE_SIZE - 1) : len; +} +static DEVICE_ATTR_RO(name); + +static ssize_t uuid_show(struct device *dev, struct device_attribute *a, + char *buf) +{ + struct mei_cl_device *cldev = to_mei_cl_device(dev); + const uuid_le *uuid = mei_me_cl_uuid(cldev->me_cl); + size_t len; + + len = snprintf(buf, PAGE_SIZE, "%pUl", uuid); + + return (len >= PAGE_SIZE) ? (PAGE_SIZE - 1) : len; +} +static DEVICE_ATTR_RO(uuid); + +static ssize_t modalias_show(struct device *dev, struct device_attribute *a, + char *buf) +{ + struct mei_cl_device *cldev = to_mei_cl_device(dev); + const uuid_le *uuid = mei_me_cl_uuid(cldev->me_cl); + size_t len; + + len = snprintf(buf, PAGE_SIZE, "mei:%s:" MEI_CL_UUID_FMT ":", + cldev->name, MEI_CL_UUID_ARGS(uuid->b)); + + return (len >= PAGE_SIZE) ? (PAGE_SIZE - 1) : len; +} +static DEVICE_ATTR_RO(modalias); + +static struct attribute *mei_cl_dev_attrs[] = { + &dev_attr_name.attr, + &dev_attr_uuid.attr, + &dev_attr_modalias.attr, + NULL, +}; +ATTRIBUTE_GROUPS(mei_cl_dev); + +/** + * mei_cl_device_uevent - me client bus uevent handler + * + * @dev: device + * @env: uevent kobject + * + * Return: 0 on success -ENOMEM on when add_uevent_var fails + */ +static int mei_cl_device_uevent(struct device *dev, struct kobj_uevent_env *env) { - struct mei_cl_device *device = cl->device; + struct mei_cl_device *cldev = to_mei_cl_device(dev); + const uuid_le *uuid = mei_me_cl_uuid(cldev->me_cl); + + if (add_uevent_var(env, "MEI_CL_UUID=%pUl", uuid)) + return -ENOMEM; - if (!device || !device->event_cb) + if (add_uevent_var(env, "MEI_CL_NAME=%s", cldev->name)) + return -ENOMEM; + + if (add_uevent_var(env, "MODALIAS=mei:%s:" MEI_CL_UUID_FMT ":", + cldev->name, MEI_CL_UUID_ARGS(uuid->b))) + return -ENOMEM; + + return 0; +} + +static struct bus_type mei_cl_bus_type = { + .name = "mei", + .dev_groups = mei_cl_dev_groups, + .match = mei_cl_device_match, + .probe = mei_cl_device_probe, + .remove = mei_cl_device_remove, + .uevent = mei_cl_device_uevent, +}; + +static struct mei_device *mei_dev_bus_get(struct mei_device *bus) +{ + if (bus) + get_device(bus->dev); + + return bus; +} + +static void mei_dev_bus_put(struct mei_device *bus) +{ + if (bus) + put_device(bus->dev); +} + +static void mei_cl_dev_release(struct device *dev) +{ + struct mei_cl_device *cldev = to_mei_cl_device(dev); + + if (!cldev) return; - set_bit(MEI_CL_EVENT_RX, &device->events); + mei_me_cl_put(cldev->me_cl); + mei_dev_bus_put(cldev->bus); + kfree(cldev); +} + +static struct device_type mei_cl_device_type = { + .release = mei_cl_dev_release, +}; + +/** + * mei_cl_dev_alloc - initialize and allocate mei client device + * + * @bus: mei device + * @me_cl: me client + * + * Return: allocated device structur or NULL on allocation failure + */ +static struct mei_cl_device *mei_cl_dev_alloc(struct mei_device *bus, + struct mei_me_client *me_cl) +{ + struct mei_cl_device *cldev; + + cldev = kzalloc(sizeof(struct mei_cl_device), GFP_KERNEL); + if (!cldev) + return NULL; - schedule_work(&device->event_work); + device_initialize(&cldev->dev); + cldev->dev.parent = bus->dev; + cldev->dev.bus = &mei_cl_bus_type; + cldev->dev.type = &mei_cl_device_type; + cldev->bus = mei_dev_bus_get(bus); + cldev->me_cl = mei_me_cl_get(me_cl); + cldev->is_added = 0; + INIT_LIST_HEAD(&cldev->bus_list); + + return cldev; +} + +/** + * mei_cl_dev_setup - setup me client device + * run fix up routines and set the device name + * + * @bus: mei device + * @cldev: me client device + * + * Return: true if the device is eligible for enumeration + */ +static bool mei_cl_dev_setup(struct mei_device *bus, + struct mei_cl_device *cldev) +{ + cldev->do_match = 1; + mei_cl_dev_fixup(cldev); + + if (cldev->do_match) + dev_set_name(&cldev->dev, "mei:%s:%pUl", + cldev->name, mei_me_cl_uuid(cldev->me_cl)); + + return cldev->do_match == 1; +} + +/** + * mei_cl_bus_dev_add - add me client devices + * + * @cldev: me client device + * + * Return: 0 on success; < 0 on failre + */ +static int mei_cl_bus_dev_add(struct mei_cl_device *cldev) +{ + int ret; + + dev_dbg(cldev->bus->dev, "adding %pUL\n", mei_me_cl_uuid(cldev->me_cl)); + ret = device_add(&cldev->dev); + if (!ret) + cldev->is_added = 1; + + return ret; +} + +/** + * mei_cl_bus_dev_stop - stop the driver + * + * @cldev: me client device + */ +static void mei_cl_bus_dev_stop(struct mei_cl_device *cldev) +{ + if (cldev->is_added) + device_release_driver(&cldev->dev); +} + +/** + * mei_cl_bus_dev_destroy - destroy me client devices object + * + * @cldev: me client device + */ +static void mei_cl_bus_dev_destroy(struct mei_cl_device *cldev) +{ + if (!cldev->is_added) + return; + + device_del(&cldev->dev); + + mutex_lock(&cldev->bus->cl_bus_lock); + list_del_init(&cldev->bus_list); + mutex_unlock(&cldev->bus->cl_bus_lock); + + cldev->is_added = 0; + put_device(&cldev->dev); +} + +/** + * mei_cl_bus_remove_device - remove a devices form the bus + * + * @cldev: me client device + */ +static void mei_cl_bus_remove_device(struct mei_cl_device *cldev) +{ + mei_cl_bus_dev_stop(cldev); + mei_cl_bus_dev_destroy(cldev); +} + +/** + * mei_cl_bus_remove_devices - remove all devices form the bus + * + * @bus: mei device + */ +void mei_cl_bus_remove_devices(struct mei_device *bus) +{ + struct mei_cl_device *cldev, *next; + + list_for_each_entry_safe(cldev, next, &bus->device_list, bus_list) + mei_cl_bus_remove_device(cldev); +} + + +/** + * mei_cl_dev_init - allocate and initializes an mei client devices + * based on me client + * + * @bus: mei device + * @me_cl: me client + */ +static void mei_cl_dev_init(struct mei_device *bus, struct mei_me_client *me_cl) +{ + struct mei_cl_device *cldev; + + dev_dbg(bus->dev, "initializing %pUl", mei_me_cl_uuid(me_cl)); + + if (me_cl->bus_added) + return; + + cldev = mei_cl_dev_alloc(bus, me_cl); + if (!cldev) + return; + + mutex_lock(&cldev->bus->cl_bus_lock); + me_cl->bus_added = true; + list_add_tail(&cldev->bus_list, &bus->device_list); + mutex_unlock(&cldev->bus->cl_bus_lock); + +} + +/** + * mei_cl_bus_rescan - scan me clients list and add create + * devices for eligible clients + * + * @bus: mei device + */ +void mei_cl_bus_rescan(struct mei_device *bus) +{ + struct mei_cl_device *cldev, *n; + struct mei_me_client *me_cl; + + down_read(&bus->me_clients_rwsem); + list_for_each_entry(me_cl, &bus->me_clients, list) + mei_cl_dev_init(bus, me_cl); + up_read(&bus->me_clients_rwsem); + + mutex_lock(&bus->cl_bus_lock); + list_for_each_entry_safe(cldev, n, &bus->device_list, bus_list) { + + if (!mei_me_cl_is_active(cldev->me_cl)) { + mei_cl_bus_remove_device(cldev); + continue; + } + + if (cldev->is_added) + continue; + + if (mei_cl_dev_setup(bus, cldev)) + mei_cl_bus_dev_add(cldev); + else { + list_del_init(&cldev->bus_list); + put_device(&cldev->dev); + } + } + mutex_unlock(&bus->cl_bus_lock); + + dev_dbg(bus->dev, "rescan end"); +} + +int __mei_cl_driver_register(struct mei_cl_driver *cldrv, struct module *owner) +{ + int err; + + cldrv->driver.name = cldrv->name; + cldrv->driver.owner = owner; + cldrv->driver.bus = &mei_cl_bus_type; + + err = driver_register(&cldrv->driver); + if (err) + return err; + + pr_debug("mei: driver [%s] registered\n", cldrv->driver.name); + + return 0; +} +EXPORT_SYMBOL_GPL(__mei_cl_driver_register); + +void mei_cl_driver_unregister(struct mei_cl_driver *cldrv) +{ + driver_unregister(&cldrv->driver); + + pr_debug("mei: driver [%s] unregistered\n", cldrv->driver.name); } +EXPORT_SYMBOL_GPL(mei_cl_driver_unregister); + int __init mei_cl_bus_init(void) { --- linux-raspi2-4.2.0.orig/drivers/misc/mei/client.c +++ linux-raspi2-4.2.0/drivers/misc/mei/client.c @@ -555,10 +555,10 @@ init_waitqueue_head(&cl->wait); init_waitqueue_head(&cl->rx_wait); init_waitqueue_head(&cl->tx_wait); + init_waitqueue_head(&cl->ev_wait); INIT_LIST_HEAD(&cl->rd_completed); INIT_LIST_HEAD(&cl->rd_pending); INIT_LIST_HEAD(&cl->link); - INIT_LIST_HEAD(&cl->device_link); cl->writing_state = MEI_IDLE; cl->state = MEI_FILE_INITIALIZING; cl->dev = dev; @@ -690,16 +690,12 @@ mei_wd_host_init(dev, me_cl); mei_me_cl_put(me_cl); - me_cl = mei_me_cl_by_uuid(dev, &mei_nfc_guid); - if (me_cl) - mei_nfc_host_init(dev, me_cl); - mei_me_cl_put(me_cl); - - dev->dev_state = MEI_DEV_ENABLED; dev->reset_count = 0; mutex_unlock(&dev->device_lock); + mei_cl_bus_rescan(dev); + pm_runtime_mark_last_busy(dev->dev); dev_dbg(dev->dev, "rpm: autosuspend\n"); pm_runtime_autosuspend(dev->dev); @@ -841,45 +837,22 @@ return ret; } - - /** - * mei_cl_disconnect - disconnect host client from the me one + * __mei_cl_disconnect - disconnect host client from the me one + * internal function runtime pm has to be already acquired * * @cl: host client * - * Locking: called under "dev->device_lock" lock - * * Return: 0 on success, <0 on failure. */ -int mei_cl_disconnect(struct mei_cl *cl) +static int __mei_cl_disconnect(struct mei_cl *cl) { struct mei_device *dev; struct mei_cl_cb *cb; int rets; - if (WARN_ON(!cl || !cl->dev)) - return -ENODEV; - dev = cl->dev; - cl_dbg(dev, cl, "disconnecting"); - - if (!mei_cl_is_connected(cl)) - return 0; - - if (mei_cl_is_fixed_address(cl)) { - mei_cl_set_disconnected(cl); - return 0; - } - - rets = pm_runtime_get(dev->dev); - if (rets < 0 && rets != -EINPROGRESS) { - pm_runtime_put_noidle(dev->dev); - cl_err(dev, cl, "rpm: get failed %d\n", rets); - return rets; - } - cl->state = MEI_FILE_DISCONNECTING; cb = mei_io_cb_init(cl, MEI_FOP_DISCONNECT, NULL); @@ -915,11 +888,52 @@ if (!rets) cl_dbg(dev, cl, "successfully disconnected from FW client.\n"); + mei_io_cb_free(cb); + return rets; +} + +/** + * mei_cl_disconnect - disconnect host client from the me one + * + * @cl: host client + * + * Locking: called under "dev->device_lock" lock + * + * Return: 0 on success, <0 on failure. + */ +int mei_cl_disconnect(struct mei_cl *cl) +{ + struct mei_device *dev; + int rets; + + if (WARN_ON(!cl || !cl->dev)) + return -ENODEV; + + dev = cl->dev; + + cl_dbg(dev, cl, "disconnecting"); + + if (!mei_cl_is_connected(cl)) + return 0; + + if (mei_cl_is_fixed_address(cl)) { + mei_cl_set_disconnected(cl); + return 0; + } + + rets = pm_runtime_get(dev->dev); + if (rets < 0 && rets != -EINPROGRESS) { + pm_runtime_put_noidle(dev->dev); + cl_err(dev, cl, "rpm: get failed %d\n", rets); + return rets; + } + + rets = __mei_cl_disconnect(cl); + cl_dbg(dev, cl, "rpm: autosuspend\n"); pm_runtime_mark_last_busy(dev->dev); pm_runtime_put_autosuspend(dev->dev); - mei_io_cb_free(cb); return rets; } @@ -1064,11 +1078,23 @@ mutex_unlock(&dev->device_lock); wait_event_timeout(cl->wait, (cl->state == MEI_FILE_CONNECTED || + cl->state == MEI_FILE_DISCONNECT_REQUIRED || cl->state == MEI_FILE_DISCONNECT_REPLY), mei_secs_to_jiffies(MEI_CL_CONNECT_TIMEOUT)); mutex_lock(&dev->device_lock); if (!mei_cl_is_connected(cl)) { + if (cl->state == MEI_FILE_DISCONNECT_REQUIRED) { + mei_io_list_flush(&dev->ctrl_rd_list, cl); + mei_io_list_flush(&dev->ctrl_wr_list, cl); + /* ignore disconnect return valuue; + * in case of failure reset will be invoked + */ + __mei_cl_disconnect(cl); + rets = -EFAULT; + goto out; + } + /* timeout or something went really wrong */ if (!cl->status) cl->status = -EFAULT; @@ -1181,6 +1207,221 @@ } /** + * mei_cl_notify_fop2req - convert fop to proper request + * + * @fop: client notification start response command + * + * Return: MEI_HBM_NOTIFICATION_START/STOP + */ +u8 mei_cl_notify_fop2req(enum mei_cb_file_ops fop) +{ + if (fop == MEI_FOP_NOTIFY_START) + return MEI_HBM_NOTIFICATION_START; + else + return MEI_HBM_NOTIFICATION_STOP; +} + +/** + * mei_cl_notify_req2fop - convert notification request top file operation type + * + * @req: hbm notification request type + * + * Return: MEI_FOP_NOTIFY_START/STOP + */ +enum mei_cb_file_ops mei_cl_notify_req2fop(u8 req) +{ + if (req == MEI_HBM_NOTIFICATION_START) + return MEI_FOP_NOTIFY_START; + else + return MEI_FOP_NOTIFY_STOP; +} + +/** + * mei_cl_irq_notify - send notification request in irq_thread context + * + * @cl: client + * @cb: callback block. + * @cmpl_list: complete list. + * + * Return: 0 on such and error otherwise. + */ +int mei_cl_irq_notify(struct mei_cl *cl, struct mei_cl_cb *cb, + struct mei_cl_cb *cmpl_list) +{ + struct mei_device *dev = cl->dev; + u32 msg_slots; + int slots; + int ret; + bool request; + + msg_slots = mei_data2slots(sizeof(struct hbm_client_connect_request)); + slots = mei_hbuf_empty_slots(dev); + + if (slots < msg_slots) + return -EMSGSIZE; + + request = mei_cl_notify_fop2req(cb->fop_type); + ret = mei_hbm_cl_notify_req(dev, cl, request); + if (ret) { + cl->status = ret; + list_move_tail(&cb->list, &cmpl_list->list); + return ret; + } + + list_move_tail(&cb->list, &dev->ctrl_rd_list.list); + return 0; +} + +/** + * mei_cl_notify_request - send notification stop/start request + * + * @cl: host client + * @file: associate request with file + * @request: 1 for start or 0 for stop + * + * Locking: called under "dev->device_lock" lock + * + * Return: 0 on such and error otherwise. + */ +int mei_cl_notify_request(struct mei_cl *cl, struct file *file, u8 request) +{ + struct mei_device *dev; + struct mei_cl_cb *cb; + enum mei_cb_file_ops fop_type; + int rets; + + if (WARN_ON(!cl || !cl->dev)) + return -ENODEV; + + dev = cl->dev; + + if (!dev->hbm_f_ev_supported) { + cl_dbg(dev, cl, "notifications not supported\n"); + return -EOPNOTSUPP; + } + + rets = pm_runtime_get(dev->dev); + if (rets < 0 && rets != -EINPROGRESS) { + pm_runtime_put_noidle(dev->dev); + cl_err(dev, cl, "rpm: get failed %d\n", rets); + return rets; + } + + fop_type = mei_cl_notify_req2fop(request); + cb = mei_io_cb_init(cl, fop_type, file); + if (!cb) { + rets = -ENOMEM; + goto out; + } + + if (mei_hbuf_acquire(dev)) { + if (mei_hbm_cl_notify_req(dev, cl, request)) { + rets = -ENODEV; + goto out; + } + list_add_tail(&cb->list, &dev->ctrl_rd_list.list); + } else { + list_add_tail(&cb->list, &dev->ctrl_wr_list.list); + } + + mutex_unlock(&dev->device_lock); + wait_event_timeout(cl->wait, cl->notify_en == request, + mei_secs_to_jiffies(MEI_CL_CONNECT_TIMEOUT)); + mutex_lock(&dev->device_lock); + + if (cl->notify_en != request) { + mei_io_list_flush(&dev->ctrl_rd_list, cl); + mei_io_list_flush(&dev->ctrl_wr_list, cl); + if (!cl->status) + cl->status = -EFAULT; + } + + rets = cl->status; + +out: + cl_dbg(dev, cl, "rpm: autosuspend\n"); + pm_runtime_mark_last_busy(dev->dev); + pm_runtime_put_autosuspend(dev->dev); + + mei_io_cb_free(cb); + return rets; +} + +/** + * mei_cl_notify - raise notification + * + * @cl: host client + * + * Locking: called under "dev->device_lock" lock + */ +void mei_cl_notify(struct mei_cl *cl) +{ + struct mei_device *dev; + + if (!cl || !cl->dev) + return; + + dev = cl->dev; + + if (!cl->notify_en) + return; + + cl_dbg(dev, cl, "notify event"); + cl->notify_ev = true; + wake_up_interruptible_all(&cl->ev_wait); + + if (cl->ev_async) + kill_fasync(&cl->ev_async, SIGIO, POLL_PRI); + + mei_cl_bus_notify_event(cl); +} + +/** + * mei_cl_notify_get - get or wait for notification event + * + * @cl: host client + * @block: this request is blocking + * @notify_ev: true if notification event was received + * + * Locking: called under "dev->device_lock" lock + * + * Return: 0 on such and error otherwise. + */ +int mei_cl_notify_get(struct mei_cl *cl, bool block, bool *notify_ev) +{ + struct mei_device *dev; + int rets; + + *notify_ev = false; + + if (WARN_ON(!cl || !cl->dev)) + return -ENODEV; + + dev = cl->dev; + + if (!mei_cl_is_connected(cl)) + return -ENODEV; + + if (cl->notify_ev) + goto out; + + if (!block) + return -EAGAIN; + + mutex_unlock(&dev->device_lock); + rets = wait_event_interruptible(cl->ev_wait, cl->notify_ev); + mutex_lock(&dev->device_lock); + + if (rets < 0) + return rets; + +out: + *notify_ev = cl->notify_ev; + cl->notify_ev = false; + return 0; +} + +/** * mei_cl_read_start - the start read client message function. * * @cl: host client @@ -1356,6 +1597,7 @@ struct mei_device *dev; struct mei_msg_data *buf; struct mei_msg_hdr mei_hdr; + int size; int rets; @@ -1367,10 +1609,10 @@ dev = cl->dev; - buf = &cb->buf; + size = buf->size; - cl_dbg(dev, cl, "size=%d\n", buf->size); + cl_dbg(dev, cl, "size=%d\n", size); rets = pm_runtime_get(dev->dev); if (rets < 0 && rets != -EINPROGRESS) { @@ -1394,21 +1636,21 @@ if (rets == 0) { cl_dbg(dev, cl, "No flow control credentials: not sending.\n"); - rets = buf->size; + rets = size; goto out; } if (!mei_hbuf_acquire(dev)) { cl_dbg(dev, cl, "Cannot acquire the host buffer: not sending.\n"); - rets = buf->size; + rets = size; goto out; } /* Check for a maximum length */ - if (buf->size > mei_hbuf_max_len(dev)) { + if (size > mei_hbuf_max_len(dev)) { mei_hdr.length = mei_hbuf_max_len(dev); mei_hdr.msg_complete = 0; } else { - mei_hdr.length = buf->size; + mei_hdr.length = size; mei_hdr.msg_complete = 1; } @@ -1430,6 +1672,7 @@ else list_add_tail(&cb->list, &dev->write_list.list); + cb = NULL; if (blocking && cl->writing_state != MEI_WRITE_COMPLETE) { mutex_unlock(&dev->device_lock); @@ -1444,7 +1687,7 @@ } } - rets = buf->size; + rets = size; err: cl_dbg(dev, cl, "rpm: autosuspend\n"); pm_runtime_mark_last_busy(dev->dev); @@ -1486,6 +1729,8 @@ case MEI_FOP_CONNECT: case MEI_FOP_DISCONNECT: + case MEI_FOP_NOTIFY_STOP: + case MEI_FOP_NOTIFY_START: if (waitqueue_active(&cl->wait)) wake_up(&cl->wait); @@ -1528,6 +1773,12 @@ cl_dbg(dev, cl, "Waking up writing client!\n"); wake_up_interruptible(&cl->tx_wait); } + + /* synchronized under device mutex */ + if (waitqueue_active(&cl->ev_wait)) { + cl_dbg(dev, cl, "Waking up waiting for event clients!\n"); + wake_up_interruptible(&cl->ev_wait); + } } } --- linux-raspi2-4.2.0.orig/drivers/misc/mei/client.h +++ linux-raspi2-4.2.0/drivers/misc/mei/client.h @@ -219,6 +219,14 @@ void mei_host_client_init(struct work_struct *work); +u8 mei_cl_notify_fop2req(enum mei_cb_file_ops fop); +enum mei_cb_file_ops mei_cl_notify_req2fop(u8 request); +int mei_cl_notify_request(struct mei_cl *cl, struct file *file, u8 request); +int mei_cl_irq_notify(struct mei_cl *cl, struct mei_cl_cb *cb, + struct mei_cl_cb *cmpl_list); +int mei_cl_notify_get(struct mei_cl *cl, bool block, bool *notify_ev); +void mei_cl_notify(struct mei_cl *cl); + void mei_cl_all_disconnect(struct mei_device *dev); void mei_cl_all_wakeup(struct mei_device *dev); void mei_cl_all_write_clear(struct mei_device *dev); --- linux-raspi2-4.2.0.orig/drivers/misc/mei/debugfs.c +++ linux-raspi2-4.2.0/drivers/misc/mei/debugfs.c @@ -154,6 +154,12 @@ pos += scnprintf(buf + pos, bufsz - pos, "hbm features:\n"); pos += scnprintf(buf + pos, bufsz - pos, "\tPG: %01d\n", dev->hbm_f_pg_supported); + pos += scnprintf(buf + pos, bufsz - pos, "\tDC: %01d\n", + dev->hbm_f_dc_supported); + pos += scnprintf(buf + pos, bufsz - pos, "\tDOT: %01d\n", + dev->hbm_f_dot_supported); + pos += scnprintf(buf + pos, bufsz - pos, "\tEV: %01d\n", + dev->hbm_f_ev_supported); } pos += scnprintf(buf + pos, bufsz - pos, "pg: %s, %s\n", @@ -198,6 +204,8 @@ if (!dir) return -ENOMEM; + dev->dbgfs_dir = dir; + f = debugfs_create_file("meclients", S_IRUSR, dir, dev, &mei_dbgfs_fops_meclients); if (!f) { @@ -222,7 +230,6 @@ dev_err(dev->dev, "allow_fixed_address: registration failed\n"); goto err; } - dev->dbgfs_dir = dir; return 0; err: mei_dbgfs_deregister(dev); --- linux-raspi2-4.2.0.orig/drivers/misc/mei/hbm.c +++ linux-raspi2-4.2.0/drivers/misc/mei/hbm.c @@ -52,6 +52,7 @@ MEI_CL_CS(ALREADY_STARTED); MEI_CL_CS(OUT_OF_RESOURCES); MEI_CL_CS(MESSAGE_SMALL); + MEI_CL_CS(NOT_ALLOWED); default: return "unknown"; } #undef MEI_CL_CCS @@ -89,6 +90,7 @@ case MEI_CL_CONN_ALREADY_STARTED: return -EBUSY; case MEI_CL_CONN_OUT_OF_RESOURCES: return -EBUSY; case MEI_CL_CONN_MESSAGE_SMALL: return -EINVAL; + case MEI_CL_CONN_NOT_ALLOWED: return -EBUSY; default: return -EINVAL; } } @@ -299,6 +301,7 @@ enum_req = (struct hbm_host_enum_request *)dev->wr_msg.data; memset(enum_req, 0, len); enum_req->hbm_cmd = HOST_ENUM_REQ_CMD; + enum_req->allow_add = dev->hbm_f_dc_supported; ret = mei_write_message(dev, mei_hdr, dev->wr_msg.data); if (ret) { @@ -344,6 +347,180 @@ } /** + * mei_hbm_add_cl_resp - send response to fw on client add request + * + * @dev: the device structure + * @addr: me address + * @status: response status + * + * Return: 0 on success and < 0 on failure + */ +static int mei_hbm_add_cl_resp(struct mei_device *dev, u8 addr, u8 status) +{ + struct mei_msg_hdr *mei_hdr = &dev->wr_msg.hdr; + struct hbm_add_client_response *resp; + const size_t len = sizeof(struct hbm_add_client_response); + int ret; + + dev_dbg(dev->dev, "adding client response\n"); + + resp = (struct hbm_add_client_response *)dev->wr_msg.data; + + mei_hbm_hdr(mei_hdr, len); + memset(resp, 0, sizeof(struct hbm_add_client_response)); + + resp->hbm_cmd = MEI_HBM_ADD_CLIENT_RES_CMD; + resp->me_addr = addr; + resp->status = status; + + ret = mei_write_message(dev, mei_hdr, dev->wr_msg.data); + if (ret) + dev_err(dev->dev, "add client response write failed: ret = %d\n", + ret); + return ret; +} + +/** + * mei_hbm_fw_add_cl_req - request from the fw to add a client + * + * @dev: the device structure + * @req: add client request + * + * Return: 0 on success and < 0 on failure + */ +static int mei_hbm_fw_add_cl_req(struct mei_device *dev, + struct hbm_add_client_request *req) +{ + int ret; + u8 status = MEI_HBMS_SUCCESS; + + BUILD_BUG_ON(sizeof(struct hbm_add_client_request) != + sizeof(struct hbm_props_response)); + + ret = mei_hbm_me_cl_add(dev, (struct hbm_props_response *)req); + if (ret) + status = !MEI_HBMS_SUCCESS; + + return mei_hbm_add_cl_resp(dev, req->me_addr, status); +} + +/** + * mei_hbm_cl_notify_req - send notification request + * + * @dev: the device structure + * @cl: a client to disconnect from + * @start: true for start false for stop + * + * Return: 0 on success and -EIO on write failure + */ +int mei_hbm_cl_notify_req(struct mei_device *dev, + struct mei_cl *cl, u8 start) +{ + + struct mei_msg_hdr *mei_hdr = &dev->wr_msg.hdr; + struct hbm_notification_request *req; + const size_t len = sizeof(struct hbm_notification_request); + int ret; + + mei_hbm_hdr(mei_hdr, len); + mei_hbm_cl_hdr(cl, MEI_HBM_NOTIFY_REQ_CMD, dev->wr_msg.data, len); + + req = (struct hbm_notification_request *)dev->wr_msg.data; + req->start = start; + + ret = mei_write_message(dev, mei_hdr, dev->wr_msg.data); + if (ret) + dev_err(dev->dev, "notify request failed: ret = %d\n", ret); + + return ret; +} + +/** + * notify_res_to_fop - convert notification response to the proper + * notification FOP + * + * @cmd: client notification start response command + * + * Return: MEI_FOP_NOTIFY_START or MEI_FOP_NOTIFY_STOP; + */ +static inline enum mei_cb_file_ops notify_res_to_fop(struct mei_hbm_cl_cmd *cmd) +{ + struct hbm_notification_response *rs = + (struct hbm_notification_response *)cmd; + + return mei_cl_notify_req2fop(rs->start); +} + +/** + * mei_hbm_cl_notify_start_res - update the client state according + * notify start response + * + * @dev: the device structure + * @cl: mei host client + * @cmd: client notification start response command + */ +static void mei_hbm_cl_notify_start_res(struct mei_device *dev, + struct mei_cl *cl, + struct mei_hbm_cl_cmd *cmd) +{ + struct hbm_notification_response *rs = + (struct hbm_notification_response *)cmd; + + cl_dbg(dev, cl, "hbm: notify start response status=%d\n", rs->status); + + if (rs->status == MEI_HBMS_SUCCESS || + rs->status == MEI_HBMS_ALREADY_STARTED) { + cl->notify_en = true; + cl->status = 0; + } else { + cl->status = -EINVAL; + } +} + +/** + * mei_hbm_cl_notify_stop_res - update the client state according + * notify stop response + * + * @dev: the device structure + * @cl: mei host client + * @cmd: client notification stop response command + */ +static void mei_hbm_cl_notify_stop_res(struct mei_device *dev, + struct mei_cl *cl, + struct mei_hbm_cl_cmd *cmd) +{ + struct hbm_notification_response *rs = + (struct hbm_notification_response *)cmd; + + cl_dbg(dev, cl, "hbm: notify stop response status=%d\n", rs->status); + + if (rs->status == MEI_HBMS_SUCCESS || + rs->status == MEI_HBMS_NOT_STARTED) { + cl->notify_en = false; + cl->status = 0; + } else { + /* TODO: spec is not clear yet about other possible issues */ + cl->status = -EINVAL; + } +} + +/** + * mei_hbm_cl_notify - signal notification event + * + * @dev: the device structure + * @cmd: notification client message + */ +static void mei_hbm_cl_notify(struct mei_device *dev, + struct mei_hbm_cl_cmd *cmd) +{ + struct mei_cl *cl; + + cl = mei_hbm_cl_find_by_cmd(dev, cmd); + if (cl) + mei_cl_notify(cl); +} + +/** * mei_hbm_prop_req - request property for a single client * * @dev: the device structure @@ -610,8 +787,11 @@ if (rs->status == MEI_CL_CONN_SUCCESS) cl->state = MEI_FILE_CONNECTED; - else + else { cl->state = MEI_FILE_DISCONNECT_REPLY; + if (rs->status == MEI_CL_CONN_NOT_FOUND) + mei_me_cl_del(dev, cl->me_cl); + } cl->status = mei_cl_conn_status_to_errno(rs->status); } @@ -654,6 +834,12 @@ case MEI_FOP_DISCONNECT: mei_hbm_cl_disconnect_res(dev, cl, rs); break; + case MEI_FOP_NOTIFY_START: + mei_hbm_cl_notify_start_res(dev, cl, rs); + break; + case MEI_FOP_NOTIFY_STOP: + mei_hbm_cl_notify_stop_res(dev, cl, rs); + break; default: return; } @@ -694,6 +880,79 @@ } /** + * mei_hbm_pg_enter_res - PG enter response received + * + * @dev: the device structure. + * + * Return: 0 on success, -EPROTO on state mismatch + */ +static int mei_hbm_pg_enter_res(struct mei_device *dev) +{ + if (mei_pg_state(dev) != MEI_PG_OFF || + dev->pg_event != MEI_PG_EVENT_WAIT) { + dev_err(dev->dev, "hbm: pg entry response: state mismatch [%s, %d]\n", + mei_pg_state_str(mei_pg_state(dev)), dev->pg_event); + return -EPROTO; + } + + dev->pg_event = MEI_PG_EVENT_RECEIVED; + wake_up(&dev->wait_pg); + + return 0; +} + +/** + * mei_hbm_pg_resume - process with PG resume + * + * @dev: the device structure. + */ +void mei_hbm_pg_resume(struct mei_device *dev) +{ + pm_request_resume(dev->dev); +} +EXPORT_SYMBOL_GPL(mei_hbm_pg_resume); + +/** + * mei_hbm_pg_exit_res - PG exit response received + * + * @dev: the device structure. + * + * Return: 0 on success, -EPROTO on state mismatch + */ +static int mei_hbm_pg_exit_res(struct mei_device *dev) +{ + if (mei_pg_state(dev) != MEI_PG_ON || + (dev->pg_event != MEI_PG_EVENT_WAIT && + dev->pg_event != MEI_PG_EVENT_IDLE)) { + dev_err(dev->dev, "hbm: pg exit response: state mismatch [%s, %d]\n", + mei_pg_state_str(mei_pg_state(dev)), dev->pg_event); + return -EPROTO; + } + + switch (dev->pg_event) { + case MEI_PG_EVENT_WAIT: + dev->pg_event = MEI_PG_EVENT_RECEIVED; + wake_up(&dev->wait_pg); + break; + case MEI_PG_EVENT_IDLE: + /* + * If the driver is not waiting on this then + * this is HW initiated exit from PG. + * Start runtime pm resume sequence to exit from PG. + */ + dev->pg_event = MEI_PG_EVENT_RECEIVED; + mei_hbm_pg_resume(dev); + break; + default: + WARN(1, "hbm: pg exit response: unexpected pg event = %d\n", + dev->pg_event); + return -EPROTO; + } + + return 0; +} + +/** * mei_hbm_config_features - check what hbm features and commands * are supported by the fw * @@ -709,6 +968,17 @@ if (dev->version.major_version == HBM_MAJOR_VERSION_PGI && dev->version.minor_version >= HBM_MINOR_VERSION_PGI) dev->hbm_f_pg_supported = 1; + + if (dev->version.major_version >= HBM_MAJOR_VERSION_DC) + dev->hbm_f_dc_supported = 1; + + /* disconnect on connect timeout instead of link reset */ + if (dev->version.major_version >= HBM_MAJOR_VERSION_DOT) + dev->hbm_f_dot_supported = 1; + + /* Notification Event Support */ + if (dev->version.major_version >= HBM_MAJOR_VERSION_EV) + dev->hbm_f_ev_supported = 1; } /** @@ -740,6 +1010,8 @@ struct hbm_host_version_response *version_res; struct hbm_props_response *props_res; struct hbm_host_enum_response *enum_res; + struct hbm_add_client_request *add_cl_req; + int ret; struct mei_hbm_cl_cmd *cl_cmd; struct hbm_client_connect_request *disconnect_req; @@ -828,24 +1100,17 @@ break; case MEI_PG_ISOLATION_ENTRY_RES_CMD: - dev_dbg(dev->dev, "power gate isolation entry response received\n"); - dev->pg_event = MEI_PG_EVENT_RECEIVED; - if (waitqueue_active(&dev->wait_pg)) - wake_up(&dev->wait_pg); + dev_dbg(dev->dev, "hbm: power gate isolation entry response received\n"); + ret = mei_hbm_pg_enter_res(dev); + if (ret) + return ret; break; case MEI_PG_ISOLATION_EXIT_REQ_CMD: - dev_dbg(dev->dev, "power gate isolation exit request received\n"); - dev->pg_event = MEI_PG_EVENT_RECEIVED; - if (waitqueue_active(&dev->wait_pg)) - wake_up(&dev->wait_pg); - else - /* - * If the driver is not waiting on this then - * this is HW initiated exit from PG. - * Start runtime pm resume sequence to exit from PG. - */ - pm_request_resume(dev->dev); + dev_dbg(dev->dev, "hbm: power gate isolation exit request received\n"); + ret = mei_hbm_pg_exit_res(dev); + if (ret) + return ret; break; case HOST_CLIENT_PROPERTIES_RES_CMD: @@ -937,6 +1202,39 @@ return -EIO; } break; + + case MEI_HBM_ADD_CLIENT_REQ_CMD: + dev_dbg(dev->dev, "hbm: add client request received\n"); + /* + * after the host receives the enum_resp + * message clients may be added or removed + */ + if (dev->hbm_state <= MEI_HBM_ENUM_CLIENTS && + dev->hbm_state >= MEI_HBM_STOPPED) { + dev_err(dev->dev, "hbm: add client: state mismatch, [%d, %d]\n", + dev->dev_state, dev->hbm_state); + return -EPROTO; + } + add_cl_req = (struct hbm_add_client_request *)mei_msg; + ret = mei_hbm_fw_add_cl_req(dev, add_cl_req); + if (ret) { + dev_err(dev->dev, "hbm: add client: failed to send response %d\n", + ret); + return -EIO; + } + dev_dbg(dev->dev, "hbm: add client request processed\n"); + break; + + case MEI_HBM_NOTIFY_RES_CMD: + dev_dbg(dev->dev, "hbm: notify response received\n"); + mei_hbm_cl_res(dev, cl_cmd, notify_res_to_fop(cl_cmd)); + break; + + case MEI_HBM_NOTIFICATION_CMD: + dev_dbg(dev->dev, "hbm: notification\n"); + mei_hbm_cl_notify(dev, cl_cmd); + break; + default: BUG(); break; --- linux-raspi2-4.2.0.orig/drivers/misc/mei/hbm.h +++ linux-raspi2-4.2.0/drivers/misc/mei/hbm.h @@ -54,6 +54,9 @@ int mei_hbm_cl_connect_req(struct mei_device *dev, struct mei_cl *cl); bool mei_hbm_version_is_supported(struct mei_device *dev); int mei_hbm_pg(struct mei_device *dev, u8 pg_cmd); +void mei_hbm_pg_resume(struct mei_device *dev); +int mei_hbm_cl_notify_req(struct mei_device *dev, + struct mei_cl *cl, u8 request); #endif /* _MEI_HBM_H_ */ --- linux-raspi2-4.2.0.orig/drivers/misc/mei/hw-me-regs.h +++ linux-raspi2-4.2.0/drivers/misc/mei/hw-me-regs.h @@ -117,12 +117,17 @@ #define MEI_DEV_ID_WPT_LP 0x9CBA /* Wildcat Point LP */ #define MEI_DEV_ID_WPT_LP_2 0x9CBB /* Wildcat Point LP 2 */ +#define MEI_DEV_ID_SPT 0x9D3A /* Sunrise Point */ +#define MEI_DEV_ID_SPT_2 0x9D3B /* Sunrise Point 2 */ +#define MEI_DEV_ID_SPT_H 0xA13A /* Sunrise Point H */ +#define MEI_DEV_ID_SPT_H_2 0xA13B /* Sunrise Point H 2 */ /* * MEI HW Section */ /* Host Firmware Status Registers in PCI Config Space */ #define PCI_CFG_HFS_1 0x40 +# define PCI_CFG_HFS_1_D0I3_MSK 0x80000000 #define PCI_CFG_HFS_2 0x48 #define PCI_CFG_HFS_3 0x60 #define PCI_CFG_HFS_4 0x64 @@ -140,7 +145,8 @@ #define ME_CSR_HA 0xC /* H_HGC_CSR - PGI register */ #define H_HPG_CSR 0x10 - +/* H_D0I3C - D0I3 Control */ +#define H_D0I3C 0x800 /* register bits of H_CSR (Host Control Status register) */ /* Host Circular Buffer Depth - maximum number of 32-bit entries in CB */ @@ -159,7 +165,14 @@ #define H_IS 0x00000002 /* Host Interrupt Enable */ #define H_IE 0x00000001 - +/* Host D0I3 Interrupt Enable */ +#define H_D0I3C_IE 0x00000020 +/* Host D0I3 Interrupt Status */ +#define H_D0I3C_IS 0x00000040 + +/* H_CSR masks */ +#define H_CSR_IE_MASK (H_IE | H_D0I3C_IE) +#define H_CSR_IS_MASK (H_IS | H_D0I3C_IS) /* register bits of ME_CSR_HA (ME Control Status Host Access register) */ /* ME CB (Circular Buffer) Depth HRA (Host Read Access) - host read only @@ -183,8 +196,14 @@ #define ME_IE_HRA 0x00000001 -/* register bits - H_HPG_CSR */ -#define H_HPG_CSR_PGIHEXR 0x00000001 -#define H_HPG_CSR_PGI 0x00000002 +/* H_HPG_CSR register bits */ +#define H_HPG_CSR_PGIHEXR 0x00000001 +#define H_HPG_CSR_PGI 0x00000002 + +/* H_D0I3C register bits */ +#define H_D0I3C_CIP 0x00000001 +#define H_D0I3C_IR 0x00000002 +#define H_D0I3C_I3 0x00000004 +#define H_D0I3C_RR 0x00000008 #endif /* _MEI_HW_MEI_REGS_H_ */ --- linux-raspi2-4.2.0.orig/drivers/misc/mei/hw-me.c +++ linux-raspi2-4.2.0/drivers/misc/mei/hw-me.c @@ -134,11 +134,40 @@ */ static inline void mei_hcsr_set(struct mei_device *dev, u32 reg) { - reg &= ~H_IS; + reg &= ~H_CSR_IS_MASK; mei_hcsr_write(dev, reg); } /** + * mei_me_d0i3c_read - Reads 32bit data from the D0I3C register + * + * @dev: the device structure + * + * Return: H_D0I3C register value (u32) + */ +static inline u32 mei_me_d0i3c_read(const struct mei_device *dev) +{ + u32 reg; + + reg = mei_me_reg_read(to_me_hw(dev), H_D0I3C); + trace_mei_reg_read(dev->dev, "H_D0I3C", H_CSR, reg); + + return reg; +} + +/** + * mei_me_d0i3c_write - writes H_D0I3C register to device + * + * @dev: the device structure + * @reg: new register value + */ +static inline void mei_me_d0i3c_write(struct mei_device *dev, u32 reg) +{ + trace_mei_reg_write(dev->dev, "H_D0I3C", H_CSR, reg); + mei_me_reg_write(to_me_hw(dev), H_D0I3C, reg); +} + +/** * mei_me_fw_status - read fw status register from pci config space * * @dev: mei device @@ -176,12 +205,25 @@ */ static void mei_me_hw_config(struct mei_device *dev) { + struct pci_dev *pdev = to_pci_dev(dev->dev); struct mei_me_hw *hw = to_me_hw(dev); - u32 hcsr = mei_hcsr_read(dev); + u32 hcsr, reg; + /* Doesn't change in runtime */ + hcsr = mei_hcsr_read(dev); dev->hbuf_depth = (hcsr & H_CBD) >> 24; + reg = 0; + pci_read_config_dword(pdev, PCI_CFG_HFS_1, ®); + hw->d0i3_supported = + ((reg & PCI_CFG_HFS_1_D0I3_MSK) == PCI_CFG_HFS_1_D0I3_MSK); + hw->pg_state = MEI_PG_OFF; + if (hw->d0i3_supported) { + reg = mei_me_d0i3c_read(dev); + if (reg & H_D0I3C_I3) + hw->pg_state = MEI_PG_ON; + } } /** @@ -208,7 +250,7 @@ { u32 hcsr = mei_hcsr_read(dev); - if ((hcsr & H_IS) == H_IS) + if (hcsr & H_CSR_IS_MASK) mei_hcsr_write(dev, hcsr); } /** @@ -220,7 +262,7 @@ { u32 hcsr = mei_hcsr_read(dev); - hcsr |= H_IE; + hcsr |= H_CSR_IE_MASK; mei_hcsr_set(dev, hcsr); } @@ -233,7 +275,7 @@ { u32 hcsr = mei_hcsr_read(dev); - hcsr &= ~H_IE; + hcsr &= ~H_CSR_IE_MASK; mei_hcsr_set(dev, hcsr); } @@ -253,57 +295,6 @@ /* complete this write before we set host ready on another CPU */ mmiowb(); } -/** - * mei_me_hw_reset - resets fw via mei csr register. - * - * @dev: the device structure - * @intr_enable: if interrupt should be enabled after reset. - * - * Return: always 0 - */ -static int mei_me_hw_reset(struct mei_device *dev, bool intr_enable) -{ - u32 hcsr = mei_hcsr_read(dev); - - /* H_RST may be found lit before reset is started, - * for example if preceding reset flow hasn't completed. - * In that case asserting H_RST will be ignored, therefore - * we need to clean H_RST bit to start a successful reset sequence. - */ - if ((hcsr & H_RST) == H_RST) { - dev_warn(dev->dev, "H_RST is set = 0x%08X", hcsr); - hcsr &= ~H_RST; - mei_hcsr_set(dev, hcsr); - hcsr = mei_hcsr_read(dev); - } - - hcsr |= H_RST | H_IG | H_IS; - - if (intr_enable) - hcsr |= H_IE; - else - hcsr &= ~H_IE; - - dev->recvd_hw_ready = false; - mei_hcsr_write(dev, hcsr); - - /* - * Host reads the H_CSR once to ensure that the - * posted write to H_CSR completes. - */ - hcsr = mei_hcsr_read(dev); - - if ((hcsr & H_RST) == 0) - dev_warn(dev->dev, "H_RST is not set = 0x%08X", hcsr); - - if ((hcsr & H_RDY) == H_RDY) - dev_warn(dev->dev, "H_RDY is not cleared 0x%08X", hcsr); - - if (intr_enable == false) - mei_me_hw_reset_release(dev); - - return 0; -} /** * mei_me_host_set_ready - enable device @@ -314,7 +305,7 @@ { u32 hcsr = mei_hcsr_read(dev); - hcsr |= H_IE | H_IG | H_RDY; + hcsr |= H_CSR_IE_MASK | H_IG | H_RDY; mei_hcsr_set(dev, hcsr); } @@ -601,13 +592,13 @@ } /** - * mei_me_pg_enter_sync - perform pg entry procedure + * mei_me_pg_legacy_enter_sync - perform legacy pg entry procedure * * @dev: the device structure * * Return: 0 on success an error code otherwise */ -int mei_me_pg_enter_sync(struct mei_device *dev) +static int mei_me_pg_legacy_enter_sync(struct mei_device *dev) { struct mei_me_hw *hw = to_me_hw(dev); unsigned long timeout = mei_secs_to_jiffies(MEI_PGI_TIMEOUT); @@ -638,13 +629,13 @@ } /** - * mei_me_pg_exit_sync - perform pg exit procedure + * mei_me_pg_legacy_exit_sync - perform legacy pg exit procedure * * @dev: the device structure * * Return: 0 on success an error code otherwise */ -int mei_me_pg_exit_sync(struct mei_device *dev) +static int mei_me_pg_legacy_exit_sync(struct mei_device *dev) { struct mei_me_hw *hw = to_me_hw(dev); unsigned long timeout = mei_secs_to_jiffies(MEI_PGI_TIMEOUT); @@ -712,8 +703,12 @@ */ static bool mei_me_pg_is_enabled(struct mei_device *dev) { + struct mei_me_hw *hw = to_me_hw(dev); u32 reg = mei_me_mecsr_read(dev); + if (hw->d0i3_supported) + return true; + if ((reg & ME_PGIC_HRA) == 0) goto notsupported; @@ -723,7 +718,8 @@ return true; notsupported: - dev_dbg(dev->dev, "pg: not supported: HGP = %d hbm version %d.%d ?= %d.%d\n", + dev_dbg(dev->dev, "pg: not supported: d0i3 = %d HGP = %d hbm version %d.%d ?= %d.%d\n", + hw->d0i3_supported, !!(reg & ME_PGIC_HRA), dev->version.major_version, dev->version.minor_version, @@ -734,11 +730,211 @@ } /** - * mei_me_pg_intr - perform pg processing in interrupt thread handler + * mei_me_d0i3_set - write d0i3 register bit on mei device. * * @dev: the device structure + * @intr: ask for interrupt + * + * Return: D0I3C register value */ -static void mei_me_pg_intr(struct mei_device *dev) +static u32 mei_me_d0i3_set(struct mei_device *dev, bool intr) +{ + u32 reg = mei_me_d0i3c_read(dev); + + reg |= H_D0I3C_I3; + if (intr) + reg |= H_D0I3C_IR; + else + reg &= ~H_D0I3C_IR; + mei_me_d0i3c_write(dev, reg); + /* read it to ensure HW consistency */ + reg = mei_me_d0i3c_read(dev); + return reg; +} + +/** + * mei_me_d0i3_unset - clean d0i3 register bit on mei device. + * + * @dev: the device structure + * + * Return: D0I3C register value + */ +static u32 mei_me_d0i3_unset(struct mei_device *dev) +{ + u32 reg = mei_me_d0i3c_read(dev); + + reg &= ~H_D0I3C_I3; + reg |= H_D0I3C_IR; + mei_me_d0i3c_write(dev, reg); + /* read it to ensure HW consistency */ + reg = mei_me_d0i3c_read(dev); + return reg; +} + +/** + * mei_me_d0i3_enter_sync - perform d0i3 entry procedure + * + * @dev: the device structure + * + * Return: 0 on success an error code otherwise + */ +static int mei_me_d0i3_enter_sync(struct mei_device *dev) +{ + struct mei_me_hw *hw = to_me_hw(dev); + unsigned long d0i3_timeout = mei_secs_to_jiffies(MEI_D0I3_TIMEOUT); + unsigned long pgi_timeout = mei_secs_to_jiffies(MEI_PGI_TIMEOUT); + int ret; + u32 reg; + + reg = mei_me_d0i3c_read(dev); + if (reg & H_D0I3C_I3) { + /* we are in d0i3, nothing to do */ + dev_dbg(dev->dev, "d0i3 set not needed\n"); + ret = 0; + goto on; + } + + /* PGI entry procedure */ + dev->pg_event = MEI_PG_EVENT_WAIT; + + ret = mei_hbm_pg(dev, MEI_PG_ISOLATION_ENTRY_REQ_CMD); + if (ret) + /* FIXME: should we reset here? */ + goto out; + + mutex_unlock(&dev->device_lock); + wait_event_timeout(dev->wait_pg, + dev->pg_event == MEI_PG_EVENT_RECEIVED, pgi_timeout); + mutex_lock(&dev->device_lock); + + if (dev->pg_event != MEI_PG_EVENT_RECEIVED) { + ret = -ETIME; + goto out; + } + /* end PGI entry procedure */ + + dev->pg_event = MEI_PG_EVENT_INTR_WAIT; + + reg = mei_me_d0i3_set(dev, true); + if (!(reg & H_D0I3C_CIP)) { + dev_dbg(dev->dev, "d0i3 enter wait not needed\n"); + ret = 0; + goto on; + } + + mutex_unlock(&dev->device_lock); + wait_event_timeout(dev->wait_pg, + dev->pg_event == MEI_PG_EVENT_INTR_RECEIVED, d0i3_timeout); + mutex_lock(&dev->device_lock); + + if (dev->pg_event != MEI_PG_EVENT_INTR_RECEIVED) { + reg = mei_me_d0i3c_read(dev); + if (!(reg & H_D0I3C_I3)) { + ret = -ETIME; + goto out; + } + } + + ret = 0; +on: + hw->pg_state = MEI_PG_ON; +out: + dev->pg_event = MEI_PG_EVENT_IDLE; + dev_dbg(dev->dev, "d0i3 enter ret = %d\n", ret); + return ret; +} + +/** + * mei_me_d0i3_enter - perform d0i3 entry procedure + * no hbm PG handshake + * no waiting for confirmation; runs with interrupts + * disabled + * + * @dev: the device structure + * + * Return: 0 on success an error code otherwise + */ +static int mei_me_d0i3_enter(struct mei_device *dev) +{ + struct mei_me_hw *hw = to_me_hw(dev); + u32 reg; + + reg = mei_me_d0i3c_read(dev); + if (reg & H_D0I3C_I3) { + /* we are in d0i3, nothing to do */ + dev_dbg(dev->dev, "already d0i3 : set not needed\n"); + goto on; + } + + mei_me_d0i3_set(dev, false); +on: + hw->pg_state = MEI_PG_ON; + dev->pg_event = MEI_PG_EVENT_IDLE; + dev_dbg(dev->dev, "d0i3 enter\n"); + return 0; +} + +/** + * mei_me_d0i3_exit_sync - perform d0i3 exit procedure + * + * @dev: the device structure + * + * Return: 0 on success an error code otherwise + */ +static int mei_me_d0i3_exit_sync(struct mei_device *dev) +{ + struct mei_me_hw *hw = to_me_hw(dev); + unsigned long timeout = mei_secs_to_jiffies(MEI_D0I3_TIMEOUT); + int ret; + u32 reg; + + dev->pg_event = MEI_PG_EVENT_INTR_WAIT; + + reg = mei_me_d0i3c_read(dev); + if (!(reg & H_D0I3C_I3)) { + /* we are not in d0i3, nothing to do */ + dev_dbg(dev->dev, "d0i3 exit not needed\n"); + ret = 0; + goto off; + } + + reg = mei_me_d0i3_unset(dev); + if (!(reg & H_D0I3C_CIP)) { + dev_dbg(dev->dev, "d0i3 exit wait not needed\n"); + ret = 0; + goto off; + } + + mutex_unlock(&dev->device_lock); + wait_event_timeout(dev->wait_pg, + dev->pg_event == MEI_PG_EVENT_INTR_RECEIVED, timeout); + mutex_lock(&dev->device_lock); + + if (dev->pg_event != MEI_PG_EVENT_INTR_RECEIVED) { + reg = mei_me_d0i3c_read(dev); + if (reg & H_D0I3C_I3) { + ret = -ETIME; + goto out; + } + } + + ret = 0; +off: + hw->pg_state = MEI_PG_OFF; +out: + dev->pg_event = MEI_PG_EVENT_IDLE; + + dev_dbg(dev->dev, "d0i3 exit ret = %d\n", ret); + return ret; +} + +/** + * mei_me_pg_legacy_intr - perform legacy pg processing + * in interrupt thread handler + * + * @dev: the device structure + */ +static void mei_me_pg_legacy_intr(struct mei_device *dev) { struct mei_me_hw *hw = to_me_hw(dev); @@ -752,6 +948,162 @@ } /** + * mei_me_d0i3_intr - perform d0i3 processing in interrupt thread handler + * + * @dev: the device structure + */ +static void mei_me_d0i3_intr(struct mei_device *dev) +{ + struct mei_me_hw *hw = to_me_hw(dev); + + if (dev->pg_event == MEI_PG_EVENT_INTR_WAIT && + (hw->intr_source & H_D0I3C_IS)) { + dev->pg_event = MEI_PG_EVENT_INTR_RECEIVED; + if (hw->pg_state == MEI_PG_ON) { + hw->pg_state = MEI_PG_OFF; + if (dev->hbm_state != MEI_HBM_IDLE) { + /* + * force H_RDY because it could be + * wiped off during PG + */ + dev_dbg(dev->dev, "d0i3 set host ready\n"); + mei_me_host_set_ready(dev); + } + } else { + hw->pg_state = MEI_PG_ON; + } + + wake_up(&dev->wait_pg); + } + + if (hw->pg_state == MEI_PG_ON && (hw->intr_source & H_IS)) { + /* + * HW sent some data and we are in D0i3, so + * we got here because of HW initiated exit from D0i3. + * Start runtime pm resume sequence to exit low power state. + */ + dev_dbg(dev->dev, "d0i3 want resume\n"); + mei_hbm_pg_resume(dev); + } +} + +/** + * mei_me_pg_intr - perform pg processing in interrupt thread handler + * + * @dev: the device structure + */ +static void mei_me_pg_intr(struct mei_device *dev) +{ + struct mei_me_hw *hw = to_me_hw(dev); + + if (hw->d0i3_supported) + mei_me_d0i3_intr(dev); + else + mei_me_pg_legacy_intr(dev); +} + +/** + * mei_me_pg_enter_sync - perform runtime pm entry procedure + * + * @dev: the device structure + * + * Return: 0 on success an error code otherwise + */ +int mei_me_pg_enter_sync(struct mei_device *dev) +{ + struct mei_me_hw *hw = to_me_hw(dev); + + if (hw->d0i3_supported) + return mei_me_d0i3_enter_sync(dev); + else + return mei_me_pg_legacy_enter_sync(dev); +} + +/** + * mei_me_pg_exit_sync - perform runtime pm exit procedure + * + * @dev: the device structure + * + * Return: 0 on success an error code otherwise + */ +int mei_me_pg_exit_sync(struct mei_device *dev) +{ + struct mei_me_hw *hw = to_me_hw(dev); + + if (hw->d0i3_supported) + return mei_me_d0i3_exit_sync(dev); + else + return mei_me_pg_legacy_exit_sync(dev); +} + +/** + * mei_me_hw_reset - resets fw via mei csr register. + * + * @dev: the device structure + * @intr_enable: if interrupt should be enabled after reset. + * + * Return: 0 on success an error code otherwise + */ +static int mei_me_hw_reset(struct mei_device *dev, bool intr_enable) +{ + struct mei_me_hw *hw = to_me_hw(dev); + int ret; + u32 hcsr; + + if (intr_enable) { + mei_me_intr_enable(dev); + if (hw->d0i3_supported) { + ret = mei_me_d0i3_exit_sync(dev); + if (ret) + return ret; + } + } + + hcsr = mei_hcsr_read(dev); + /* H_RST may be found lit before reset is started, + * for example if preceding reset flow hasn't completed. + * In that case asserting H_RST will be ignored, therefore + * we need to clean H_RST bit to start a successful reset sequence. + */ + if ((hcsr & H_RST) == H_RST) { + dev_warn(dev->dev, "H_RST is set = 0x%08X", hcsr); + hcsr &= ~H_RST; + mei_hcsr_set(dev, hcsr); + hcsr = mei_hcsr_read(dev); + } + + hcsr |= H_RST | H_IG | H_CSR_IS_MASK; + + if (!intr_enable) + hcsr &= ~H_CSR_IE_MASK; + + dev->recvd_hw_ready = false; + mei_hcsr_write(dev, hcsr); + + /* + * Host reads the H_CSR once to ensure that the + * posted write to H_CSR completes. + */ + hcsr = mei_hcsr_read(dev); + + if ((hcsr & H_RST) == 0) + dev_warn(dev->dev, "H_RST is not set = 0x%08X", hcsr); + + if ((hcsr & H_RDY) == H_RDY) + dev_warn(dev->dev, "H_RDY is not cleared 0x%08X", hcsr); + + if (!intr_enable) { + mei_me_hw_reset_release(dev); + if (hw->d0i3_supported) { + ret = mei_me_d0i3_enter(dev); + if (ret) + return ret; + } + } + return 0; +} + +/** * mei_me_irq_quick_handler - The ISR of the MEI device * * @irq: The irq number @@ -759,16 +1111,20 @@ * * Return: irqreturn_t */ - irqreturn_t mei_me_irq_quick_handler(int irq, void *dev_id) { - struct mei_device *dev = (struct mei_device *) dev_id; - u32 hcsr = mei_hcsr_read(dev); + struct mei_device *dev = (struct mei_device *)dev_id; + struct mei_me_hw *hw = to_me_hw(dev); + u32 hcsr; - if ((hcsr & H_IS) != H_IS) + hcsr = mei_hcsr_read(dev); + if (!(hcsr & H_CSR_IS_MASK)) return IRQ_NONE; - /* clear H_IS bit in H_CSR */ + hw->intr_source = hcsr & H_CSR_IS_MASK; + dev_dbg(dev->dev, "interrupt source 0x%08X.\n", hw->intr_source); + + /* clear H_IS and H_D0I3C_IS bits in H_CSR to clear the interrupts */ mei_hcsr_write(dev, hcsr); return IRQ_WAKE_THREAD; @@ -796,11 +1152,6 @@ mutex_lock(&dev->device_lock); mei_io_list_init(&complete_list); - /* Ack the interrupt here - * In case of MSI we don't go through the quick handler */ - if (pci_dev_msi_enabled(to_pci_dev(dev->dev))) - mei_clear_interrupts(dev); - /* check if ME wants a reset */ if (!mei_hw_is_ready(dev) && dev->dev_state != MEI_DEV_RESETTING) { dev_warn(dev->dev, "FW not ready: resetting.\n"); --- linux-raspi2-4.2.0.orig/drivers/misc/mei/hw-me.h +++ linux-raspi2-4.2.0/drivers/misc/mei/hw-me.h @@ -50,13 +50,17 @@ * struct mei_me_hw - me hw specific data * * @cfg: per device generation config and ops - * @mem_addr: io memory address - * @pg_state: power gating state + * @mem_addr: io memory address + * @intr_source: interrupt source + * @pg_state: power gating state + * @d0i3_supported: di03 support */ struct mei_me_hw { const struct mei_cfg *cfg; void __iomem *mem_addr; + u32 intr_source; enum mei_pg_state pg_state; + bool d0i3_supported; }; #define to_me_hw(dev) (struct mei_me_hw *)((dev)->hw) --- linux-raspi2-4.2.0.orig/drivers/misc/mei/hw.h +++ linux-raspi2-4.2.0/drivers/misc/mei/hw.h @@ -31,14 +31,15 @@ #define MEI_IAMTHIF_STALL_TIMER 12 /* HPS */ #define MEI_IAMTHIF_READ_TIMER 10 /* HPS */ -#define MEI_PGI_TIMEOUT 1 /* PG Isolation time response 1 sec */ -#define MEI_HBM_TIMEOUT 1 /* 1 second */ +#define MEI_PGI_TIMEOUT 1 /* PG Isolation time response 1 sec */ +#define MEI_D0I3_TIMEOUT 5 /* D0i3 set/unset max response time */ +#define MEI_HBM_TIMEOUT 1 /* 1 second */ /* * MEI Version */ -#define HBM_MINOR_VERSION 1 -#define HBM_MAJOR_VERSION 1 +#define HBM_MINOR_VERSION 0 +#define HBM_MAJOR_VERSION 2 /* * MEI version with PGI support @@ -46,6 +47,24 @@ #define HBM_MINOR_VERSION_PGI 1 #define HBM_MAJOR_VERSION_PGI 1 +/* + * MEI version with Dynamic clients support + */ +#define HBM_MINOR_VERSION_DC 0 +#define HBM_MAJOR_VERSION_DC 2 + +/* + * MEI version with disconnect on connection timeout support + */ +#define HBM_MINOR_VERSION_DOT 0 +#define HBM_MAJOR_VERSION_DOT 2 + +/* + * MEI version with notifcation support + */ +#define HBM_MINOR_VERSION_EV 0 +#define HBM_MAJOR_VERSION_EV 2 + /* Host bus message command opcode */ #define MEI_HBM_CMD_OP_MSK 0x7f /* Host bus message command RESPONSE */ @@ -81,6 +100,13 @@ #define MEI_PG_ISOLATION_EXIT_REQ_CMD 0x0b #define MEI_PG_ISOLATION_EXIT_RES_CMD 0x8b +#define MEI_HBM_ADD_CLIENT_REQ_CMD 0x0f +#define MEI_HBM_ADD_CLIENT_RES_CMD 0x8f + +#define MEI_HBM_NOTIFY_REQ_CMD 0x10 +#define MEI_HBM_NOTIFY_RES_CMD 0x90 +#define MEI_HBM_NOTIFICATION_CMD 0x11 + /* * MEI Stop Reason * used by hbm_host_stop_request.reason @@ -136,6 +162,7 @@ MEI_CL_CONN_ALREADY_STARTED = MEI_HBMS_ALREADY_EXISTS, MEI_CL_CONN_OUT_OF_RESOURCES = MEI_HBMS_REJECTED, MEI_CL_CONN_MESSAGE_SMALL = MEI_HBMS_INVALID_PARAMETER, + MEI_CL_CONN_NOT_ALLOWED = MEI_HBMS_NOT_ALLOWED, }; /* @@ -213,9 +240,17 @@ u8 reserved[2]; } __packed; +/** + * struct hbm_host_enum_request - enumeration request from host to fw + * + * @hbm_cmd: bus message command header + * @allow_add: allow dynamic clients add HBM version >= 2.0 + * @reserved: reserved + */ struct hbm_host_enum_request { u8 hbm_cmd; - u8 reserved[3]; + u8 allow_add; + u8 reserved[2]; } __packed; struct hbm_host_enum_response { @@ -248,6 +283,38 @@ } __packed; /** + * struct hbm_add_client_request - request to add a client + * might be sent by fw after enumeration has already completed + * + * @hbm_cmd: bus message command header + * @me_addr: address of the client in ME + * @reserved: reserved + * @client_properties: client properties + */ +struct hbm_add_client_request { + u8 hbm_cmd; + u8 me_addr; + u8 reserved[2]; + struct mei_client_properties client_properties; +} __packed; + +/** + * struct hbm_add_client_response - response to add a client + * sent by the host to report client addition status to fw + * + * @hbm_cmd: bus message command header + * @me_addr: address of the client in ME + * @status: if HBMS_SUCCESS then the client can now accept connections. + * @reserved: reserved + */ +struct hbm_add_client_response { + u8 hbm_cmd; + u8 me_addr; + u8 status; + u8 reserved[1]; +} __packed; + +/** * struct hbm_power_gate - power gate request/response * * @hbm_cmd: bus message command header @@ -298,5 +365,62 @@ u8 reserved[MEI_FC_MESSAGE_RESERVED_LENGTH]; } __packed; +#define MEI_HBM_NOTIFICATION_START 1 +#define MEI_HBM_NOTIFICATION_STOP 0 +/** + * struct hbm_notification_request - start/stop notification request + * + * @hbm_cmd: bus message command header + * @me_addr: address of the client in ME + * @host_addr: address of the client in the driver + * @start: start = 1 or stop = 0 asynchronous notifications + */ +struct hbm_notification_request { + u8 hbm_cmd; + u8 me_addr; + u8 host_addr; + u8 start; +} __packed; + +/** + * struct hbm_notification_response - start/stop notification response + * + * @hbm_cmd: bus message command header + * @me_addr: address of the client in ME + * @host_addr: - address of the client in the driver + * @status: (mei_hbm_status) response status for the request + * - MEI_HBMS_SUCCESS: successful stop/start + * - MEI_HBMS_CLIENT_NOT_FOUND: if the connection could not be found. + * - MEI_HBMS_ALREADY_STARTED: for start requests for a previously + * started notification. + * - MEI_HBMS_NOT_STARTED: for stop request for a connected client for whom + * asynchronous notifications are currently disabled. + * + * @start: start = 1 or stop = 0 asynchronous notifications + * @reserved: reserved + */ +struct hbm_notification_response { + u8 hbm_cmd; + u8 me_addr; + u8 host_addr; + u8 status; + u8 start; + u8 reserved[3]; +} __packed; + +/** + * struct hbm_notification - notification event + * + * @hbm_cmd: bus message command header + * @me_addr: address of the client in ME + * @host_addr: address of the client in the driver + * @reserved: reserved for alignment + */ +struct hbm_notification { + u8 hbm_cmd; + u8 me_addr; + u8 host_addr; + u8 reserved[1]; +} __packed; #endif --- linux-raspi2-4.2.0.orig/drivers/misc/mei/init.c +++ linux-raspi2-4.2.0/drivers/misc/mei/init.c @@ -331,7 +331,7 @@ mei_cancel_work(dev); - mei_nfc_host_exit(dev); + mei_cl_bus_remove_devices(dev); mutex_lock(&dev->device_lock); @@ -390,6 +390,7 @@ INIT_LIST_HEAD(&dev->me_clients); mutex_init(&dev->device_lock); init_rwsem(&dev->me_clients_rwsem); + mutex_init(&dev->cl_bus_lock); init_waitqueue_head(&dev->wait_hw_ready); init_waitqueue_head(&dev->wait_pg); init_waitqueue_head(&dev->wait_hbm_start); --- linux-raspi2-4.2.0.orig/drivers/misc/mei/interrupt.c +++ linux-raspi2-4.2.0/drivers/misc/mei/interrupt.c @@ -403,6 +403,13 @@ if (ret) return ret; break; + + case MEI_FOP_NOTIFY_START: + case MEI_FOP_NOTIFY_STOP: + ret = mei_cl_irq_notify(cl, cb, cmpl_list); + if (ret) + return ret; + break; default: BUG(); } @@ -424,6 +431,24 @@ EXPORT_SYMBOL_GPL(mei_irq_write_handler); +/** + * mei_connect_timeout - connect/disconnect timeouts + * + * @cl: host client + */ +static void mei_connect_timeout(struct mei_cl *cl) +{ + struct mei_device *dev = cl->dev; + + if (cl->state == MEI_FILE_CONNECTING) { + if (dev->hbm_f_dot_supported) { + cl->state = MEI_FILE_DISCONNECT_REQUIRED; + wake_up(&cl->wait); + return; + } + } + mei_reset(dev); +} /** * mei_timer - timer function. @@ -464,7 +489,7 @@ if (cl->timer_count) { if (--cl->timer_count == 0) { dev_err(dev->dev, "timer: connect/disconnect timeout.\n"); - mei_reset(dev); + mei_connect_timeout(cl); goto out; } } --- linux-raspi2-4.2.0.orig/drivers/misc/mei/main.c +++ linux-raspi2-4.2.0/drivers/misc/mei/main.c @@ -446,6 +446,45 @@ } /** + * mei_ioctl_client_notify_request - + * propagate event notification request to client + * + * @file: pointer to file structure + * @request: 0 - disable, 1 - enable + * + * Return: 0 on success , <0 on error + */ +static int mei_ioctl_client_notify_request(struct file *file, u32 request) +{ + struct mei_cl *cl = file->private_data; + + return mei_cl_notify_request(cl, file, request); +} + +/** + * mei_ioctl_client_notify_get - wait for notification request + * + * @file: pointer to file structure + * @notify_get: 0 - disable, 1 - enable + * + * Return: 0 on success , <0 on error + */ +static int mei_ioctl_client_notify_get(struct file *file, u32 *notify_get) +{ + struct mei_cl *cl = file->private_data; + bool notify_ev; + bool block = (file->f_flags & O_NONBLOCK) == 0; + int rets; + + rets = mei_cl_notify_get(cl, block, ¬ify_ev); + if (rets) + return rets; + + *notify_get = notify_ev ? 1 : 0; + return 0; +} + +/** * mei_ioctl - the IOCTL function * * @file: pointer to file structure @@ -459,6 +498,7 @@ struct mei_device *dev; struct mei_cl *cl = file->private_data; struct mei_connect_client_data connect_data; + u32 notify_get, notify_req; int rets; @@ -499,6 +539,33 @@ break; + case IOCTL_MEI_NOTIFY_SET: + dev_dbg(dev->dev, ": IOCTL_MEI_NOTIFY_SET.\n"); + if (copy_from_user(¬ify_req, + (char __user *)data, sizeof(notify_req))) { + dev_dbg(dev->dev, "failed to copy data from userland\n"); + rets = -EFAULT; + goto out; + } + rets = mei_ioctl_client_notify_request(file, notify_req); + break; + + case IOCTL_MEI_NOTIFY_GET: + dev_dbg(dev->dev, ": IOCTL_MEI_NOTIFY_GET.\n"); + rets = mei_ioctl_client_notify_get(file, ¬ify_get); + if (rets) + goto out; + + dev_dbg(dev->dev, "copy connect data to user\n"); + if (copy_to_user((char __user *)data, + ¬ify_get, sizeof(notify_get))) { + dev_dbg(dev->dev, "failed to copy data to userland\n"); + rets = -EFAULT; + goto out; + + } + break; + default: dev_err(dev->dev, ": unsupported ioctl %d.\n", cmd); rets = -ENOIOCTLCMD; @@ -541,6 +608,7 @@ struct mei_cl *cl = file->private_data; struct mei_device *dev; unsigned int mask = 0; + bool notify_en; if (WARN_ON(!cl || !cl->dev)) return POLLERR; @@ -549,6 +617,7 @@ mutex_lock(&dev->device_lock); + notify_en = cl->notify_en && (req_events & POLLPRI); if (dev->dev_state != MEI_DEV_ENABLED || !mei_cl_is_connected(cl)) { @@ -561,6 +630,12 @@ goto out; } + if (notify_en) { + poll_wait(file, &cl->ev_wait, wait); + if (cl->notify_ev) + mask |= POLLPRI; + } + if (req_events & (POLLIN | POLLRDNORM)) { poll_wait(file, &cl->rx_wait, wait); @@ -576,6 +651,26 @@ } /** + * mei_fasync - asynchronous io support + * + * @fd: file descriptor + * @file: pointer to file structure + * @band: band bitmap + * + * Return: poll mask + */ +static int mei_fasync(int fd, struct file *file, int band) +{ + + struct mei_cl *cl = file->private_data; + + if (!mei_cl_is_connected(cl)) + return POLLERR; + + return fasync_helper(fd, file, band, &cl->ev_async); +} + +/** * fw_status_show - mei device attribute show method * * @device: device pointer @@ -627,6 +722,7 @@ .release = mei_release, .write = mei_write, .poll = mei_poll, + .fasync = mei_fasync, .llseek = no_llseek }; --- linux-raspi2-4.2.0.orig/drivers/misc/mei/mei_dev.h +++ linux-raspi2-4.2.0/drivers/misc/mei/mei_dev.h @@ -89,6 +89,7 @@ MEI_FILE_CONNECTED, MEI_FILE_DISCONNECTING, MEI_FILE_DISCONNECT_REPLY, + MEI_FILE_DISCONNECT_REQUIRED, MEI_FILE_DISCONNECTED, }; @@ -135,6 +136,8 @@ * @MEI_FOP_CONNECT: connect * @MEI_FOP_DISCONNECT: disconnect * @MEI_FOP_DISCONNECT_RSP: disconnect response + * @MEI_FOP_NOTIFY_START: start notification + * @MEI_FOP_NOTIFY_STOP: stop notification */ enum mei_cb_file_ops { MEI_FOP_READ = 0, @@ -142,6 +145,8 @@ MEI_FOP_CONNECT, MEI_FOP_DISCONNECT, MEI_FOP_DISCONNECT_RSP, + MEI_FOP_NOTIFY_START, + MEI_FOP_NOTIFY_STOP, }; /* @@ -178,7 +183,7 @@ * @client_id: me client id * @mei_flow_ctrl_creds: flow control credits * @connect_count: number connections to this client - * @reserved: reserved + * @bus_added: added to bus */ struct mei_me_client { struct list_head list; @@ -187,7 +192,7 @@ u8 client_id; u8 mei_flow_ctrl_creds; u8 connect_count; - u8 reserved; + u8 bus_added; }; @@ -230,18 +235,21 @@ * @tx_wait: wait queue for tx completion * @rx_wait: wait queue for rx completion * @wait: wait queue for management operation + * @ev_wait: notification wait queue + * @ev_async: event async notification * @status: connection status * @me_cl: fw client connected * @host_client_id: host id * @mei_flow_ctrl_creds: transmit flow credentials * @timer_count: watchdog timer for operation completion * @reserved: reserved for alignment + * @notify_en: notification - enabled/disabled + * @notify_ev: pending notification event * @writing_state: state of the tx * @rd_pending: pending read credits * @rd_completed: completed read * - * @device: device on the mei client bus - * @device_link: link to bus clients + * @cldev: device on the mei client bus */ struct mei_cl { struct list_head link; @@ -250,19 +258,21 @@ wait_queue_head_t tx_wait; wait_queue_head_t rx_wait; wait_queue_head_t wait; + wait_queue_head_t ev_wait; + struct fasync_struct *ev_async; int status; struct mei_me_client *me_cl; u8 host_client_id; u8 mei_flow_ctrl_creds; u8 timer_count; u8 reserved; + u8 notify_en; + u8 notify_ev; enum mei_file_transaction_states writing_state; struct list_head rd_pending; struct list_head rd_completed; - /* MEI CL bus data */ - struct mei_cl_device *device; - struct list_head device_link; + struct mei_cl_device *cldev; }; /** struct mei_hw_ops @@ -329,21 +339,16 @@ }; /* MEI bus API*/ - -struct mei_cl_device *mei_cl_add_device(struct mei_device *dev, - struct mei_me_client *me_cl, - struct mei_cl *cl, - char *name); -void mei_cl_remove_device(struct mei_cl_device *device); - +void mei_cl_bus_rescan(struct mei_device *bus); +void mei_cl_dev_fixup(struct mei_cl_device *dev); ssize_t __mei_cl_send(struct mei_cl *cl, u8 *buf, size_t length, bool blocking); ssize_t __mei_cl_recv(struct mei_cl *cl, u8 *buf, size_t length); void mei_cl_bus_rx_event(struct mei_cl *cl); -void mei_cl_bus_remove_devices(struct mei_device *dev); +void mei_cl_bus_notify_event(struct mei_cl *cl); +void mei_cl_bus_remove_devices(struct mei_device *bus); int mei_cl_bus_init(void); void mei_cl_bus_exit(void); -struct mei_cl *mei_cl_bus_find_cl_by_uuid(struct mei_device *dev, uuid_le uuid); /** * enum mei_pg_event - power gating transition events @@ -416,7 +421,10 @@ * @wr_msg : the buffer for hbm control messages * * @version : HBM protocol version in use - * @hbm_f_pg_supported : hbm feature pgi protocol + * @hbm_f_pg_supported : hbm feature pgi protocol + * @hbm_f_dc_supported : hbm feature dynamic clients + * @hbm_f_dot_supported : hbm feature disconnect on timeout + * @hbm_f_ev_supported : hbm feature event notification * * @me_clients_rwsem: rw lock over me_clients list * @me_clients : list of FW clients @@ -447,6 +455,7 @@ * @reset_work : work item for the device reset * * @device_list : mei client bus list + * @cl_bus_lock : client bus list lock * * @dbgfs_dir : debugfs mei root directory * @@ -509,6 +518,9 @@ struct hbm_version version; unsigned int hbm_f_pg_supported:1; + unsigned int hbm_f_dc_supported:1; + unsigned int hbm_f_dot_supported:1; + unsigned int hbm_f_ev_supported:1; struct rw_semaphore me_clients_rwsem; struct list_head me_clients; @@ -543,6 +555,7 @@ /* List of bus devices */ struct list_head device_list; + struct mutex cl_bus_lock; #if IS_ENABLED(CONFIG_DEBUG_FS) struct dentry *dbgfs_dir; --- linux-raspi2-4.2.0.orig/drivers/misc/mei/pci-me.c +++ linux-raspi2-4.2.0/drivers/misc/mei/pci-me.c @@ -40,6 +40,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_legacy_cfg)}, @@ -82,6 +85,11 @@ {MEI_PCI_DEVICE(MEI_DEV_ID_WPT_LP, mei_me_pch8_cfg)}, {MEI_PCI_DEVICE(MEI_DEV_ID_WPT_LP_2, mei_me_pch8_cfg)}, + {MEI_PCI_DEVICE(MEI_DEV_ID_SPT, mei_me_pch8_cfg)}, + {MEI_PCI_DEVICE(MEI_DEV_ID_SPT_2, mei_me_pch8_cfg)}, + {MEI_PCI_DEVICE(MEI_DEV_ID_SPT_H, mei_me_pch8_cfg)}, + {MEI_PCI_DEVICE(MEI_DEV_ID_SPT_H_2, mei_me_pch8_cfg)}, + /* required last entry */ {0, } }; @@ -128,6 +136,7 @@ const struct mei_cfg *cfg = (struct mei_cfg *)(ent->driver_data); struct mei_device *dev; struct mei_me_hw *hw; + unsigned int irqflags; int err; @@ -177,20 +186,16 @@ err = -ENOMEM; goto free_device; } - pci_enable_msi(pdev); + if (!disable_msi) + pci_enable_msi(pdev); /* request and enable interrupt */ - if (pci_dev_msi_enabled(pdev)) - err = request_threaded_irq(pdev->irq, - NULL, - mei_me_irq_thread_handler, - IRQF_ONESHOT, KBUILD_MODNAME, dev); - else - err = request_threaded_irq(pdev->irq, + irqflags = pci_dev_msi_enabled(pdev) ? IRQF_ONESHOT : IRQF_SHARED; + + err = request_threaded_irq(pdev->irq, mei_me_irq_quick_handler, mei_me_irq_thread_handler, - IRQF_SHARED, KBUILD_MODNAME, dev); - + irqflags, KBUILD_MODNAME, dev); if (err) { dev_err(&pdev->dev, "request_threaded_irq failure. irq = %d\n", pdev->irq); @@ -319,6 +324,7 @@ { struct pci_dev *pdev = to_pci_dev(device); struct mei_device *dev; + unsigned int irqflags; int err; dev = pci_get_drvdata(pdev); @@ -327,17 +333,13 @@ pci_enable_msi(pdev); + irqflags = pci_dev_msi_enabled(pdev) ? IRQF_ONESHOT : IRQF_SHARED; + /* request and enable interrupt */ - if (pci_dev_msi_enabled(pdev)) - err = request_threaded_irq(pdev->irq, - NULL, - mei_me_irq_thread_handler, - IRQF_ONESHOT, KBUILD_MODNAME, dev); - else - err = request_threaded_irq(pdev->irq, + err = request_threaded_irq(pdev->irq, mei_me_irq_quick_handler, mei_me_irq_thread_handler, - IRQF_SHARED, KBUILD_MODNAME, dev); + irqflags, KBUILD_MODNAME, dev); if (err) { dev_err(&pdev->dev, "request_threaded_irq failed: irq = %d.\n", --- linux-raspi2-4.2.0.orig/drivers/misc/vc04_services/Kconfig +++ linux-raspi2-4.2.0/drivers/misc/vc04_services/Kconfig @@ -0,0 +1,9 @@ +config BCM2708_VCHIQ + tristate "Videocore VCHIQ" + depends on RASPBERRYPI_FIRMWARE + default y + help + Kernel to VideoCore communication interface for the + BCM2708 family of products. + Defaults to Y when the Broadcom Videocore services + are included in the build, N otherwise. --- linux-raspi2-4.2.0.orig/drivers/misc/vc04_services/Makefile +++ linux-raspi2-4.2.0/drivers/misc/vc04_services/Makefile @@ -0,0 +1,14 @@ +obj-$(CONFIG_BCM2708_VCHIQ) += vchiq.o + +vchiq-objs := \ + interface/vchiq_arm/vchiq_core.o \ + interface/vchiq_arm/vchiq_arm.o \ + interface/vchiq_arm/vchiq_kern_lib.o \ + interface/vchiq_arm/vchiq_2835_arm.o \ + interface/vchiq_arm/vchiq_debugfs.o \ + interface/vchiq_arm/vchiq_shim.o \ + interface/vchiq_arm/vchiq_util.o \ + interface/vchiq_arm/vchiq_connected.o \ + +ccflags-y += -DVCOS_VERIFY_BKPTS=1 -Idrivers/misc/vc04_services -DUSE_VCHIQ_ARM -D__VCCOREVER__=0x04000000 + --- linux-raspi2-4.2.0.orig/drivers/misc/vc04_services/interface/vchi/connections/connection.h +++ linux-raspi2-4.2.0/drivers/misc/vc04_services/interface/vchi/connections/connection.h @@ -0,0 +1,328 @@ +/** + * Copyright (c) 2010-2012 Broadcom. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions, and the following disclaimer, + * without modification. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The names of the above-listed copyright holders may not be used + * to endorse or promote products derived from this software without + * specific prior written permission. + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") version 2, as published by the Free + * Software Foundation. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS + * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef CONNECTION_H_ +#define CONNECTION_H_ + +#include +#include +#include + +#include "interface/vchi/vchi_cfg_internal.h" +#include "interface/vchi/vchi_common.h" +#include "interface/vchi/message_drivers/message.h" + +/****************************************************************************** + Global defs + *****************************************************************************/ + +// Opaque handle for a connection / service pair +typedef struct opaque_vchi_connection_connected_service_handle_t *VCHI_CONNECTION_SERVICE_HANDLE_T; + +// opaque handle to the connection state information +typedef struct opaque_vchi_connection_info_t VCHI_CONNECTION_STATE_T; + +typedef struct vchi_connection_t VCHI_CONNECTION_T; + + +/****************************************************************************** + API + *****************************************************************************/ + +// Routine to init a connection with a particular low level driver +typedef VCHI_CONNECTION_STATE_T * (*VCHI_CONNECTION_INIT_T)( struct vchi_connection_t * connection, + const VCHI_MESSAGE_DRIVER_T * driver ); + +// Routine to control CRC enabling at a connection level +typedef int32_t (*VCHI_CONNECTION_CRC_CONTROL_T)( VCHI_CONNECTION_STATE_T *state_handle, + VCHI_CRC_CONTROL_T control ); + +// Routine to create a service +typedef int32_t (*VCHI_CONNECTION_SERVICE_CONNECT_T)( VCHI_CONNECTION_STATE_T *state_handle, + int32_t service_id, + uint32_t rx_fifo_size, + uint32_t tx_fifo_size, + int server, + VCHI_CALLBACK_T callback, + void *callback_param, + int32_t want_crc, + int32_t want_unaligned_bulk_rx, + int32_t want_unaligned_bulk_tx, + VCHI_CONNECTION_SERVICE_HANDLE_T *service_handle ); + +// Routine to close a service +typedef int32_t (*VCHI_CONNECTION_SERVICE_DISCONNECT_T)( VCHI_CONNECTION_SERVICE_HANDLE_T service_handle ); + +// Routine to queue a message +typedef int32_t (*VCHI_CONNECTION_SERVICE_QUEUE_MESSAGE_T)( VCHI_CONNECTION_SERVICE_HANDLE_T service_handle, + const void *data, + uint32_t data_size, + VCHI_FLAGS_T flags, + void *msg_handle ); + +// scatter-gather (vector) message queueing +typedef int32_t (*VCHI_CONNECTION_SERVICE_QUEUE_MESSAGEV_T)( VCHI_CONNECTION_SERVICE_HANDLE_T service_handle, + VCHI_MSG_VECTOR_T *vector, + uint32_t count, + VCHI_FLAGS_T flags, + void *msg_handle ); + +// Routine to dequeue a message +typedef int32_t (*VCHI_CONNECTION_SERVICE_DEQUEUE_MESSAGE_T)( VCHI_CONNECTION_SERVICE_HANDLE_T service_handle, + void *data, + uint32_t max_data_size_to_read, + uint32_t *actual_msg_size, + VCHI_FLAGS_T flags ); + +// Routine to peek at a message +typedef int32_t (*VCHI_CONNECTION_SERVICE_PEEK_MESSAGE_T)( VCHI_CONNECTION_SERVICE_HANDLE_T service_handle, + void **data, + uint32_t *msg_size, + VCHI_FLAGS_T flags ); + +// Routine to hold a message +typedef int32_t (*VCHI_CONNECTION_SERVICE_HOLD_MESSAGE_T)( VCHI_CONNECTION_SERVICE_HANDLE_T service_handle, + void **data, + uint32_t *msg_size, + VCHI_FLAGS_T flags, + void **message_handle ); + +// Routine to initialise a received message iterator +typedef int32_t (*VCHI_CONNECTION_SERVICE_LOOKAHEAD_MESSAGE_T)( VCHI_CONNECTION_SERVICE_HANDLE_T service_handle, + VCHI_MSG_ITER_T *iter, + VCHI_FLAGS_T flags ); + +// Routine to release a held message +typedef int32_t (*VCHI_CONNECTION_HELD_MSG_RELEASE_T)( VCHI_CONNECTION_SERVICE_HANDLE_T service_handle, + void *message_handle ); + +// Routine to get info on a held message +typedef int32_t (*VCHI_CONNECTION_HELD_MSG_INFO_T)( VCHI_CONNECTION_SERVICE_HANDLE_T service_handle, + void *message_handle, + void **data, + int32_t *msg_size, + uint32_t *tx_timestamp, + uint32_t *rx_timestamp ); + +// Routine to check whether the iterator has a next message +typedef int32_t (*VCHI_CONNECTION_MSG_ITER_HAS_NEXT_T)( VCHI_CONNECTION_SERVICE_HANDLE_T service, + const VCHI_MSG_ITER_T *iter ); + +// Routine to advance the iterator +typedef int32_t (*VCHI_CONNECTION_MSG_ITER_NEXT_T)( VCHI_CONNECTION_SERVICE_HANDLE_T service, + VCHI_MSG_ITER_T *iter, + void **data, + uint32_t *msg_size ); + +// Routine to remove the last message returned by the iterator +typedef int32_t (*VCHI_CONNECTION_MSG_ITER_REMOVE_T)( VCHI_CONNECTION_SERVICE_HANDLE_T service, + VCHI_MSG_ITER_T *iter ); + +// Routine to hold the last message returned by the iterator +typedef int32_t (*VCHI_CONNECTION_MSG_ITER_HOLD_T)( VCHI_CONNECTION_SERVICE_HANDLE_T service, + VCHI_MSG_ITER_T *iter, + void **msg_handle ); + +// Routine to transmit bulk data +typedef int32_t (*VCHI_CONNECTION_BULK_QUEUE_TRANSMIT_T)( VCHI_CONNECTION_SERVICE_HANDLE_T service_handle, + const void *data_src, + uint32_t data_size, + VCHI_FLAGS_T flags, + void *bulk_handle ); + +// Routine to receive data +typedef int32_t (*VCHI_CONNECTION_BULK_QUEUE_RECEIVE_T)( VCHI_CONNECTION_SERVICE_HANDLE_T service_handle, + void *data_dst, + uint32_t data_size, + VCHI_FLAGS_T flags, + void *bulk_handle ); + +// Routine to report if a server is available +typedef int32_t (*VCHI_CONNECTION_SERVER_PRESENT)( VCHI_CONNECTION_STATE_T *state, int32_t service_id, int32_t peer_flags ); + +// Routine to report the number of RX slots available +typedef int (*VCHI_CONNECTION_RX_SLOTS_AVAILABLE)( const VCHI_CONNECTION_STATE_T *state ); + +// Routine to report the RX slot size +typedef uint32_t (*VCHI_CONNECTION_RX_SLOT_SIZE)( const VCHI_CONNECTION_STATE_T *state ); + +// Callback to indicate that the other side has added a buffer to the rx bulk DMA FIFO +typedef void (*VCHI_CONNECTION_RX_BULK_BUFFER_ADDED)(VCHI_CONNECTION_STATE_T *state, + int32_t service, + uint32_t length, + MESSAGE_TX_CHANNEL_T channel, + uint32_t channel_params, + uint32_t data_length, + uint32_t data_offset); + +// Callback to inform a service that a Xon or Xoff message has been received +typedef void (*VCHI_CONNECTION_FLOW_CONTROL)(VCHI_CONNECTION_STATE_T *state, int32_t service_id, int32_t xoff); + +// Callback to inform a service that a server available reply message has been received +typedef void (*VCHI_CONNECTION_SERVER_AVAILABLE_REPLY)(VCHI_CONNECTION_STATE_T *state, int32_t service_id, uint32_t flags); + +// Callback to indicate that bulk auxiliary messages have arrived +typedef void (*VCHI_CONNECTION_BULK_AUX_RECEIVED)(VCHI_CONNECTION_STATE_T *state); + +// Callback to indicate that bulk auxiliary messages have arrived +typedef void (*VCHI_CONNECTION_BULK_AUX_TRANSMITTED)(VCHI_CONNECTION_STATE_T *state, void *handle); + +// Callback with all the connection info you require +typedef void (*VCHI_CONNECTION_INFO)(VCHI_CONNECTION_STATE_T *state, uint32_t protocol_version, uint32_t slot_size, uint32_t num_slots, uint32_t min_bulk_size); + +// Callback to inform of a disconnect +typedef void (*VCHI_CONNECTION_DISCONNECT)(VCHI_CONNECTION_STATE_T *state, uint32_t flags); + +// Callback to inform of a power control request +typedef void (*VCHI_CONNECTION_POWER_CONTROL)(VCHI_CONNECTION_STATE_T *state, MESSAGE_TX_CHANNEL_T channel, int32_t enable); + +// allocate memory suitably aligned for this connection +typedef void * (*VCHI_BUFFER_ALLOCATE)(VCHI_CONNECTION_SERVICE_HANDLE_T service_handle, uint32_t * length); + +// free memory allocated by buffer_allocate +typedef void (*VCHI_BUFFER_FREE)(VCHI_CONNECTION_SERVICE_HANDLE_T service_handle, void * address); + + +/****************************************************************************** + System driver struct + *****************************************************************************/ + +struct opaque_vchi_connection_api_t +{ + // Routine to init the connection + VCHI_CONNECTION_INIT_T init; + + // Connection-level CRC control + VCHI_CONNECTION_CRC_CONTROL_T crc_control; + + // Routine to connect to or create service + VCHI_CONNECTION_SERVICE_CONNECT_T service_connect; + + // Routine to disconnect from a service + VCHI_CONNECTION_SERVICE_DISCONNECT_T service_disconnect; + + // Routine to queue a message + VCHI_CONNECTION_SERVICE_QUEUE_MESSAGE_T service_queue_msg; + + // scatter-gather (vector) message queue + VCHI_CONNECTION_SERVICE_QUEUE_MESSAGEV_T service_queue_msgv; + + // Routine to dequeue a message + VCHI_CONNECTION_SERVICE_DEQUEUE_MESSAGE_T service_dequeue_msg; + + // Routine to peek at a message + VCHI_CONNECTION_SERVICE_PEEK_MESSAGE_T service_peek_msg; + + // Routine to hold a message + VCHI_CONNECTION_SERVICE_HOLD_MESSAGE_T service_hold_msg; + + // Routine to initialise a received message iterator + VCHI_CONNECTION_SERVICE_LOOKAHEAD_MESSAGE_T service_look_ahead_msg; + + // Routine to release a message + VCHI_CONNECTION_HELD_MSG_RELEASE_T held_msg_release; + + // Routine to get information on a held message + VCHI_CONNECTION_HELD_MSG_INFO_T held_msg_info; + + // Routine to check for next message on iterator + VCHI_CONNECTION_MSG_ITER_HAS_NEXT_T msg_iter_has_next; + + // Routine to get next message on iterator + VCHI_CONNECTION_MSG_ITER_NEXT_T msg_iter_next; + + // Routine to remove the last message returned by iterator + VCHI_CONNECTION_MSG_ITER_REMOVE_T msg_iter_remove; + + // Routine to hold the last message returned by iterator + VCHI_CONNECTION_MSG_ITER_HOLD_T msg_iter_hold; + + // Routine to transmit bulk data + VCHI_CONNECTION_BULK_QUEUE_TRANSMIT_T bulk_queue_transmit; + + // Routine to receive data + VCHI_CONNECTION_BULK_QUEUE_RECEIVE_T bulk_queue_receive; + + // Routine to report the available servers + VCHI_CONNECTION_SERVER_PRESENT server_present; + + // Routine to report the number of RX slots available + VCHI_CONNECTION_RX_SLOTS_AVAILABLE connection_rx_slots_available; + + // Routine to report the RX slot size + VCHI_CONNECTION_RX_SLOT_SIZE connection_rx_slot_size; + + // Callback to indicate that the other side has added a buffer to the rx bulk DMA FIFO + VCHI_CONNECTION_RX_BULK_BUFFER_ADDED rx_bulk_buffer_added; + + // Callback to inform a service that a Xon or Xoff message has been received + VCHI_CONNECTION_FLOW_CONTROL flow_control; + + // Callback to inform a service that a server available reply message has been received + VCHI_CONNECTION_SERVER_AVAILABLE_REPLY server_available_reply; + + // Callback to indicate that bulk auxiliary messages have arrived + VCHI_CONNECTION_BULK_AUX_RECEIVED bulk_aux_received; + + // Callback to indicate that a bulk auxiliary message has been transmitted + VCHI_CONNECTION_BULK_AUX_TRANSMITTED bulk_aux_transmitted; + + // Callback to provide information about the connection + VCHI_CONNECTION_INFO connection_info; + + // Callback to notify that peer has requested disconnect + VCHI_CONNECTION_DISCONNECT disconnect; + + // Callback to notify that peer has requested power change + VCHI_CONNECTION_POWER_CONTROL power_control; + + // allocate memory suitably aligned for this connection + VCHI_BUFFER_ALLOCATE buffer_allocate; + + // free memory allocated by buffer_allocate + VCHI_BUFFER_FREE buffer_free; + +}; + +struct vchi_connection_t { + const VCHI_CONNECTION_API_T *api; + VCHI_CONNECTION_STATE_T *state; +#ifdef VCHI_COARSE_LOCKING + struct semaphore sem; +#endif +}; + + +#endif /* CONNECTION_H_ */ + +/****************************** End of file **********************************/ --- linux-raspi2-4.2.0.orig/drivers/misc/vc04_services/interface/vchi/message_drivers/message.h +++ linux-raspi2-4.2.0/drivers/misc/vc04_services/interface/vchi/message_drivers/message.h @@ -0,0 +1,204 @@ +/** + * Copyright (c) 2010-2012 Broadcom. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions, and the following disclaimer, + * without modification. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The names of the above-listed copyright holders may not be used + * to endorse or promote products derived from this software without + * specific prior written permission. + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") version 2, as published by the Free + * Software Foundation. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS + * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef _VCHI_MESSAGE_H_ +#define _VCHI_MESSAGE_H_ + +#include +#include +#include + +#include "interface/vchi/vchi_cfg_internal.h" +#include "interface/vchi/vchi_common.h" + + +typedef enum message_event_type { + MESSAGE_EVENT_NONE, + MESSAGE_EVENT_NOP, + MESSAGE_EVENT_MESSAGE, + MESSAGE_EVENT_SLOT_COMPLETE, + MESSAGE_EVENT_RX_BULK_PAUSED, + MESSAGE_EVENT_RX_BULK_COMPLETE, + MESSAGE_EVENT_TX_COMPLETE, + MESSAGE_EVENT_MSG_DISCARDED +} MESSAGE_EVENT_TYPE_T; + +typedef enum vchi_msg_flags +{ + VCHI_MSG_FLAGS_NONE = 0x0, + VCHI_MSG_FLAGS_TERMINATE_DMA = 0x1 +} VCHI_MSG_FLAGS_T; + +typedef enum message_tx_channel +{ + MESSAGE_TX_CHANNEL_MESSAGE = 0, + MESSAGE_TX_CHANNEL_BULK = 1 // drivers may provide multiple bulk channels, from 1 upwards +} MESSAGE_TX_CHANNEL_T; + +// Macros used for cycling through bulk channels +#define MESSAGE_TX_CHANNEL_BULK_PREV(c) (MESSAGE_TX_CHANNEL_BULK+((c)-MESSAGE_TX_CHANNEL_BULK+VCHI_MAX_BULK_TX_CHANNELS_PER_CONNECTION-1)%VCHI_MAX_BULK_TX_CHANNELS_PER_CONNECTION) +#define MESSAGE_TX_CHANNEL_BULK_NEXT(c) (MESSAGE_TX_CHANNEL_BULK+((c)-MESSAGE_TX_CHANNEL_BULK+1)%VCHI_MAX_BULK_TX_CHANNELS_PER_CONNECTION) + +typedef enum message_rx_channel +{ + MESSAGE_RX_CHANNEL_MESSAGE = 0, + MESSAGE_RX_CHANNEL_BULK = 1 // drivers may provide multiple bulk channels, from 1 upwards +} MESSAGE_RX_CHANNEL_T; + +// Message receive slot information +typedef struct rx_msg_slot_info { + + struct rx_msg_slot_info *next; + //struct slot_info *prev; +#if !defined VCHI_COARSE_LOCKING + struct semaphore sem; +#endif + + uint8_t *addr; // base address of slot + uint32_t len; // length of slot in bytes + + uint32_t write_ptr; // hardware causes this to advance + uint32_t read_ptr; // this module does the reading + int active; // is this slot in the hardware dma fifo? + uint32_t msgs_parsed; // count how many messages are in this slot + uint32_t msgs_released; // how many messages have been released + void *state; // connection state information + uint8_t ref_count[VCHI_MAX_SERVICES_PER_CONNECTION]; // reference count for slots held by services +} RX_MSG_SLOTINFO_T; + +// The message driver no longer needs to know about the fields of RX_BULK_SLOTINFO_T - sort this out. +// In particular, it mustn't use addr and len - they're the client buffer, but the message +// driver will be tasked with sending the aligned core section. +typedef struct rx_bulk_slotinfo_t { + struct rx_bulk_slotinfo_t *next; + + struct semaphore *blocking; + + // needed by DMA + void *addr; + uint32_t len; + + // needed for the callback + void *service; + void *handle; + VCHI_FLAGS_T flags; +} RX_BULK_SLOTINFO_T; + + +/* ---------------------------------------------------------------------- + * each connection driver will have a pool of the following struct. + * + * the pool will be managed by vchi_qman_* + * this means there will be multiple queues (single linked lists) + * a given struct message_info will be on exactly one of these queues + * at any one time + * -------------------------------------------------------------------- */ +typedef struct rx_message_info { + + struct message_info *next; + //struct message_info *prev; + + uint8_t *addr; + uint32_t len; + RX_MSG_SLOTINFO_T *slot; // points to whichever slot contains this message + uint32_t tx_timestamp; + uint32_t rx_timestamp; + +} RX_MESSAGE_INFO_T; + +typedef struct { + MESSAGE_EVENT_TYPE_T type; + + struct { + // for messages + void *addr; // address of message + uint16_t slot_delta; // whether this message indicated slot delta + uint32_t len; // length of message + RX_MSG_SLOTINFO_T *slot; // slot this message is in + int32_t service; // service id this message is destined for + uint32_t tx_timestamp; // timestamp from the header + uint32_t rx_timestamp; // timestamp when we parsed it + } message; + + // FIXME: cleanup slot reporting... + RX_MSG_SLOTINFO_T *rx_msg; + RX_BULK_SLOTINFO_T *rx_bulk; + void *tx_handle; + MESSAGE_TX_CHANNEL_T tx_channel; + +} MESSAGE_EVENT_T; + + +// callbacks +typedef void VCHI_MESSAGE_DRIVER_EVENT_CALLBACK_T( void *state ); + +typedef struct { + VCHI_MESSAGE_DRIVER_EVENT_CALLBACK_T *event_callback; +} VCHI_MESSAGE_DRIVER_OPEN_T; + + +// handle to this instance of message driver (as returned by ->open) +typedef struct opaque_mhandle_t *VCHI_MDRIVER_HANDLE_T; + +struct opaque_vchi_message_driver_t { + VCHI_MDRIVER_HANDLE_T *(*open)( VCHI_MESSAGE_DRIVER_OPEN_T *params, void *state ); + int32_t (*suspending)( VCHI_MDRIVER_HANDLE_T *handle ); + int32_t (*resumed)( VCHI_MDRIVER_HANDLE_T *handle ); + int32_t (*power_control)( VCHI_MDRIVER_HANDLE_T *handle, MESSAGE_TX_CHANNEL_T, int32_t enable ); + int32_t (*add_msg_rx_slot)( VCHI_MDRIVER_HANDLE_T *handle, RX_MSG_SLOTINFO_T *slot ); // rx message + int32_t (*add_bulk_rx)( VCHI_MDRIVER_HANDLE_T *handle, void *data, uint32_t len, RX_BULK_SLOTINFO_T *slot ); // rx data (bulk) + int32_t (*send)( VCHI_MDRIVER_HANDLE_T *handle, MESSAGE_TX_CHANNEL_T channel, const void *data, uint32_t len, VCHI_MSG_FLAGS_T flags, void *send_handle ); // tx (message & bulk) + void (*next_event)( VCHI_MDRIVER_HANDLE_T *handle, MESSAGE_EVENT_T *event ); // get the next event from message_driver + int32_t (*enable)( VCHI_MDRIVER_HANDLE_T *handle ); + int32_t (*form_message)( VCHI_MDRIVER_HANDLE_T *handle, int32_t service_id, VCHI_MSG_VECTOR_T *vector, uint32_t count, void + *address, uint32_t length_avail, uint32_t max_total_length, int32_t pad_to_fill, int32_t allow_partial ); + + int32_t (*update_message)( VCHI_MDRIVER_HANDLE_T *handle, void *dest, int16_t *slot_count ); + int32_t (*buffer_aligned)( VCHI_MDRIVER_HANDLE_T *handle, int tx, int uncached, const void *address, const uint32_t length ); + void * (*allocate_buffer)( VCHI_MDRIVER_HANDLE_T *handle, uint32_t *length ); + void (*free_buffer)( VCHI_MDRIVER_HANDLE_T *handle, void *address ); + int (*rx_slot_size)( VCHI_MDRIVER_HANDLE_T *handle, int msg_size ); + int (*tx_slot_size)( VCHI_MDRIVER_HANDLE_T *handle, int msg_size ); + + int32_t (*tx_supports_terminate)( const VCHI_MDRIVER_HANDLE_T *handle, MESSAGE_TX_CHANNEL_T channel ); + uint32_t (*tx_bulk_chunk_size)( const VCHI_MDRIVER_HANDLE_T *handle, MESSAGE_TX_CHANNEL_T channel ); + int (*tx_alignment)( const VCHI_MDRIVER_HANDLE_T *handle, MESSAGE_TX_CHANNEL_T channel ); + int (*rx_alignment)( const VCHI_MDRIVER_HANDLE_T *handle, MESSAGE_RX_CHANNEL_T channel ); + void (*form_bulk_aux)( VCHI_MDRIVER_HANDLE_T *handle, MESSAGE_TX_CHANNEL_T channel, const void *data, uint32_t len, uint32_t chunk_size, const void **aux_data, int32_t *aux_len ); + void (*debug)( VCHI_MDRIVER_HANDLE_T *handle ); +}; + + +#endif // _VCHI_MESSAGE_H_ + +/****************************** End of file ***********************************/ --- linux-raspi2-4.2.0.orig/drivers/misc/vc04_services/interface/vchi/vchi.h +++ linux-raspi2-4.2.0/drivers/misc/vc04_services/interface/vchi/vchi.h @@ -0,0 +1,378 @@ +/** + * Copyright (c) 2010-2012 Broadcom. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions, and the following disclaimer, + * without modification. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The names of the above-listed copyright holders may not be used + * to endorse or promote products derived from this software without + * specific prior written permission. + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") version 2, as published by the Free + * Software Foundation. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS + * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef VCHI_H_ +#define VCHI_H_ + +#include "interface/vchi/vchi_cfg.h" +#include "interface/vchi/vchi_common.h" +#include "interface/vchi/connections/connection.h" +#include "vchi_mh.h" + + +/****************************************************************************** + Global defs + *****************************************************************************/ + +#define VCHI_BULK_ROUND_UP(x) ((((unsigned long)(x))+VCHI_BULK_ALIGN-1) & ~(VCHI_BULK_ALIGN-1)) +#define VCHI_BULK_ROUND_DOWN(x) (((unsigned long)(x)) & ~(VCHI_BULK_ALIGN-1)) +#define VCHI_BULK_ALIGN_NBYTES(x) (VCHI_BULK_ALIGNED(x) ? 0 : (VCHI_BULK_ALIGN - ((unsigned long)(x) & (VCHI_BULK_ALIGN-1)))) + +#ifdef USE_VCHIQ_ARM +#define VCHI_BULK_ALIGNED(x) 1 +#else +#define VCHI_BULK_ALIGNED(x) (((unsigned long)(x) & (VCHI_BULK_ALIGN-1)) == 0) +#endif + +struct vchi_version { + uint32_t version; + uint32_t version_min; +}; +#define VCHI_VERSION(v_) { v_, v_ } +#define VCHI_VERSION_EX(v_, m_) { v_, m_ } + +typedef enum +{ + VCHI_VEC_POINTER, + VCHI_VEC_HANDLE, + VCHI_VEC_LIST +} VCHI_MSG_VECTOR_TYPE_T; + +typedef struct vchi_msg_vector_ex { + + VCHI_MSG_VECTOR_TYPE_T type; + union + { + // a memory handle + struct + { + VCHI_MEM_HANDLE_T handle; + uint32_t offset; + int32_t vec_len; + } handle; + + // an ordinary data pointer + struct + { + const void *vec_base; + int32_t vec_len; + } ptr; + + // a nested vector list + struct + { + struct vchi_msg_vector_ex *vec; + uint32_t vec_len; + } list; + } u; +} VCHI_MSG_VECTOR_EX_T; + + +// Construct an entry in a msg vector for a pointer (p) of length (l) +#define VCHI_VEC_POINTER(p,l) VCHI_VEC_POINTER, { { (VCHI_MEM_HANDLE_T)(p), (l) } } + +// Construct an entry in a msg vector for a message handle (h), starting at offset (o) of length (l) +#define VCHI_VEC_HANDLE(h,o,l) VCHI_VEC_HANDLE, { { (h), (o), (l) } } + +// Macros to manipulate 'FOURCC' values +#define MAKE_FOURCC(x) ((int32_t)( (x[0] << 24) | (x[1] << 16) | (x[2] << 8) | x[3] )) +#define FOURCC_TO_CHAR(x) (x >> 24) & 0xFF,(x >> 16) & 0xFF,(x >> 8) & 0xFF, x & 0xFF + + +// Opaque service information +struct opaque_vchi_service_t; + +// Descriptor for a held message. Allocated by client, initialised by vchi_msg_hold, +// vchi_msg_iter_hold or vchi_msg_iter_hold_next. Fields are for internal VCHI use only. +typedef struct +{ + struct opaque_vchi_service_t *service; + void *message; +} VCHI_HELD_MSG_T; + + + +// structure used to provide the information needed to open a server or a client +typedef struct { + struct vchi_version version; + int32_t service_id; + VCHI_CONNECTION_T *connection; + uint32_t rx_fifo_size; + uint32_t tx_fifo_size; + VCHI_CALLBACK_T callback; + void *callback_param; + /* client intends to receive bulk transfers of + odd lengths or into unaligned buffers */ + int32_t want_unaligned_bulk_rx; + /* client intends to transmit bulk transfers of + odd lengths or out of unaligned buffers */ + int32_t want_unaligned_bulk_tx; + /* client wants to check CRCs on (bulk) xfers. + Only needs to be set at 1 end - will do both directions. */ + int32_t want_crc; +} SERVICE_CREATION_T; + +// Opaque handle for a VCHI instance +typedef struct opaque_vchi_instance_handle_t *VCHI_INSTANCE_T; + +// Opaque handle for a server or client +typedef struct opaque_vchi_service_handle_t *VCHI_SERVICE_HANDLE_T; + +// Service registration & startup +typedef void (*VCHI_SERVICE_INIT)(VCHI_INSTANCE_T initialise_instance, VCHI_CONNECTION_T **connections, uint32_t num_connections); + +typedef struct service_info_tag { + const char * const vll_filename; /* VLL to load to start this service. This is an empty string if VLL is "static" */ + VCHI_SERVICE_INIT init; /* Service initialisation function */ + void *vll_handle; /* VLL handle; NULL when unloaded or a "static VLL" in build */ +} SERVICE_INFO_T; + +/****************************************************************************** + Global funcs - implementation is specific to which side you are on (local / remote) + *****************************************************************************/ + +#ifdef __cplusplus +extern "C" { +#endif + +extern /*@observer@*/ VCHI_CONNECTION_T * vchi_create_connection( const VCHI_CONNECTION_API_T * function_table, + const VCHI_MESSAGE_DRIVER_T * low_level); + + +// Routine used to initialise the vchi on both local + remote connections +extern int32_t vchi_initialise( VCHI_INSTANCE_T *instance_handle ); + +extern int32_t vchi_exit( void ); + +extern int32_t vchi_connect( VCHI_CONNECTION_T **connections, + const uint32_t num_connections, + VCHI_INSTANCE_T instance_handle ); + +//When this is called, ensure that all services have no data pending. +//Bulk transfers can remain 'queued' +extern int32_t vchi_disconnect( VCHI_INSTANCE_T instance_handle ); + +// Global control over bulk CRC checking +extern int32_t vchi_crc_control( VCHI_CONNECTION_T *connection, + VCHI_CRC_CONTROL_T control ); + +// helper functions +extern void * vchi_allocate_buffer(VCHI_SERVICE_HANDLE_T handle, uint32_t *length); +extern void vchi_free_buffer(VCHI_SERVICE_HANDLE_T handle, void *address); +extern uint32_t vchi_current_time(VCHI_INSTANCE_T instance_handle); + + +/****************************************************************************** + Global service API + *****************************************************************************/ +// Routine to create a named service +extern int32_t vchi_service_create( VCHI_INSTANCE_T instance_handle, + SERVICE_CREATION_T *setup, + VCHI_SERVICE_HANDLE_T *handle ); + +// Routine to destory a service +extern int32_t vchi_service_destroy( const VCHI_SERVICE_HANDLE_T handle ); + +// Routine to open a named service +extern int32_t vchi_service_open( VCHI_INSTANCE_T instance_handle, + SERVICE_CREATION_T *setup, + VCHI_SERVICE_HANDLE_T *handle); + +extern int32_t vchi_get_peer_version( const VCHI_SERVICE_HANDLE_T handle, + short *peer_version ); + +// Routine to close a named service +extern int32_t vchi_service_close( const VCHI_SERVICE_HANDLE_T handle ); + +// Routine to increment ref count on a named service +extern int32_t vchi_service_use( const VCHI_SERVICE_HANDLE_T handle ); + +// Routine to decrement ref count on a named service +extern int32_t vchi_service_release( const VCHI_SERVICE_HANDLE_T handle ); + +// Routine to set a control option for a named service +extern int32_t vchi_service_set_option( const VCHI_SERVICE_HANDLE_T handle, + VCHI_SERVICE_OPTION_T option, + int value); + +// Routine to send a message across a service +extern int32_t vchi_msg_queue( VCHI_SERVICE_HANDLE_T handle, + const void *data, + uint32_t data_size, + VCHI_FLAGS_T flags, + void *msg_handle ); + +// scatter-gather (vector) and send message +int32_t vchi_msg_queuev_ex( VCHI_SERVICE_HANDLE_T handle, + VCHI_MSG_VECTOR_EX_T *vector, + uint32_t count, + VCHI_FLAGS_T flags, + void *msg_handle ); + +// legacy scatter-gather (vector) and send message, only handles pointers +int32_t vchi_msg_queuev( VCHI_SERVICE_HANDLE_T handle, + VCHI_MSG_VECTOR_T *vector, + uint32_t count, + VCHI_FLAGS_T flags, + void *msg_handle ); + +// Routine to receive a msg from a service +// Dequeue is equivalent to hold, copy into client buffer, release +extern int32_t vchi_msg_dequeue( VCHI_SERVICE_HANDLE_T handle, + void *data, + uint32_t max_data_size_to_read, + uint32_t *actual_msg_size, + VCHI_FLAGS_T flags ); + +// Routine to look at a message in place. +// The message is not dequeued, so a subsequent call to peek or dequeue +// will return the same message. +extern int32_t vchi_msg_peek( VCHI_SERVICE_HANDLE_T handle, + void **data, + uint32_t *msg_size, + VCHI_FLAGS_T flags ); + +// Routine to remove a message after it has been read in place with peek +// The first message on the queue is dequeued. +extern int32_t vchi_msg_remove( VCHI_SERVICE_HANDLE_T handle ); + +// Routine to look at a message in place. +// The message is dequeued, so the caller is left holding it; the descriptor is +// filled in and must be released when the user has finished with the message. +extern int32_t vchi_msg_hold( VCHI_SERVICE_HANDLE_T handle, + void **data, // } may be NULL, as info can be + uint32_t *msg_size, // } obtained from HELD_MSG_T + VCHI_FLAGS_T flags, + VCHI_HELD_MSG_T *message_descriptor ); + +// Initialise an iterator to look through messages in place +extern int32_t vchi_msg_look_ahead( VCHI_SERVICE_HANDLE_T handle, + VCHI_MSG_ITER_T *iter, + VCHI_FLAGS_T flags ); + +/****************************************************************************** + Global service support API - operations on held messages and message iterators + *****************************************************************************/ + +// Routine to get the address of a held message +extern void *vchi_held_msg_ptr( const VCHI_HELD_MSG_T *message ); + +// Routine to get the size of a held message +extern int32_t vchi_held_msg_size( const VCHI_HELD_MSG_T *message ); + +// Routine to get the transmit timestamp as written into the header by the peer +extern uint32_t vchi_held_msg_tx_timestamp( const VCHI_HELD_MSG_T *message ); + +// Routine to get the reception timestamp, written as we parsed the header +extern uint32_t vchi_held_msg_rx_timestamp( const VCHI_HELD_MSG_T *message ); + +// Routine to release a held message after it has been processed +extern int32_t vchi_held_msg_release( VCHI_HELD_MSG_T *message ); + +// Indicates whether the iterator has a next message. +extern int32_t vchi_msg_iter_has_next( const VCHI_MSG_ITER_T *iter ); + +// Return the pointer and length for the next message and advance the iterator. +extern int32_t vchi_msg_iter_next( VCHI_MSG_ITER_T *iter, + void **data, + uint32_t *msg_size ); + +// Remove the last message returned by vchi_msg_iter_next. +// Can only be called once after each call to vchi_msg_iter_next. +extern int32_t vchi_msg_iter_remove( VCHI_MSG_ITER_T *iter ); + +// Hold the last message returned by vchi_msg_iter_next. +// Can only be called once after each call to vchi_msg_iter_next. +extern int32_t vchi_msg_iter_hold( VCHI_MSG_ITER_T *iter, + VCHI_HELD_MSG_T *message ); + +// Return information for the next message, and hold it, advancing the iterator. +extern int32_t vchi_msg_iter_hold_next( VCHI_MSG_ITER_T *iter, + void **data, // } may be NULL + uint32_t *msg_size, // } + VCHI_HELD_MSG_T *message ); + + +/****************************************************************************** + Global bulk API + *****************************************************************************/ + +// Routine to prepare interface for a transfer from the other side +extern int32_t vchi_bulk_queue_receive( VCHI_SERVICE_HANDLE_T handle, + void *data_dst, + uint32_t data_size, + VCHI_FLAGS_T flags, + void *transfer_handle ); + + +// Prepare interface for a transfer from the other side into relocatable memory. +int32_t vchi_bulk_queue_receive_reloc( const VCHI_SERVICE_HANDLE_T handle, + VCHI_MEM_HANDLE_T h_dst, + uint32_t offset, + uint32_t data_size, + const VCHI_FLAGS_T flags, + void * const bulk_handle ); + +// Routine to queue up data ready for transfer to the other (once they have signalled they are ready) +extern int32_t vchi_bulk_queue_transmit( VCHI_SERVICE_HANDLE_T handle, + const void *data_src, + uint32_t data_size, + VCHI_FLAGS_T flags, + void *transfer_handle ); + + +/****************************************************************************** + Configuration plumbing + *****************************************************************************/ + +// function prototypes for the different mid layers (the state info gives the different physical connections) +extern const VCHI_CONNECTION_API_T *single_get_func_table( void ); +//extern const VCHI_CONNECTION_API_T *local_server_get_func_table( void ); +//extern const VCHI_CONNECTION_API_T *local_client_get_func_table( void ); + +// declare all message drivers here +const VCHI_MESSAGE_DRIVER_T *vchi_mphi_message_driver_func_table( void ); + +#ifdef __cplusplus +} +#endif + +extern int32_t vchi_bulk_queue_transmit_reloc( VCHI_SERVICE_HANDLE_T handle, + VCHI_MEM_HANDLE_T h_src, + uint32_t offset, + uint32_t data_size, + VCHI_FLAGS_T flags, + void *transfer_handle ); +#endif /* VCHI_H_ */ + +/****************************** End of file **********************************/ --- linux-raspi2-4.2.0.orig/drivers/misc/vc04_services/interface/vchi/vchi_cfg.h +++ linux-raspi2-4.2.0/drivers/misc/vc04_services/interface/vchi/vchi_cfg.h @@ -0,0 +1,224 @@ +/** + * Copyright (c) 2010-2012 Broadcom. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions, and the following disclaimer, + * without modification. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The names of the above-listed copyright holders may not be used + * to endorse or promote products derived from this software without + * specific prior written permission. + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") version 2, as published by the Free + * Software Foundation. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS + * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef VCHI_CFG_H_ +#define VCHI_CFG_H_ + +/**************************************************************************************** + * Defines in this first section are part of the VCHI API and may be examined by VCHI + * services. + ***************************************************************************************/ + +/* Required alignment of base addresses for bulk transfer, if unaligned transfers are not enabled */ +/* Really determined by the message driver, and should be available from a run-time call. */ +#ifndef VCHI_BULK_ALIGN +# if __VCCOREVER__ >= 0x04000000 +# define VCHI_BULK_ALIGN 32 // Allows for the need to do cache cleans +# else +# define VCHI_BULK_ALIGN 16 +# endif +#endif + +/* Required length multiple for bulk transfers, if unaligned transfers are not enabled */ +/* May be less than or greater than VCHI_BULK_ALIGN */ +/* Really determined by the message driver, and should be available from a run-time call. */ +#ifndef VCHI_BULK_GRANULARITY +# if __VCCOREVER__ >= 0x04000000 +# define VCHI_BULK_GRANULARITY 32 // Allows for the need to do cache cleans +# else +# define VCHI_BULK_GRANULARITY 16 +# endif +#endif + +/* The largest possible message to be queued with vchi_msg_queue. */ +#ifndef VCHI_MAX_MSG_SIZE +# if defined VCHI_LOCAL_HOST_PORT +# define VCHI_MAX_MSG_SIZE 16384 // makes file transfers fast, but should they be using bulk? +# else +# define VCHI_MAX_MSG_SIZE 4096 // NOTE: THIS MUST BE LARGER THAN OR EQUAL TO THE SIZE OF THE KHRONOS MERGE BUFFER!! +# endif +#endif + +/****************************************************************************************** + * Defines below are system configuration options, and should not be used by VCHI services. + *****************************************************************************************/ + +/* How many connections can we support? A localhost implementation uses 2 connections, + * 1 for host-app, 1 for VMCS, and these are hooked together by a loopback MPHI VCFW + * driver. */ +#ifndef VCHI_MAX_NUM_CONNECTIONS +# define VCHI_MAX_NUM_CONNECTIONS 3 +#endif + +/* How many services can we open per connection? Extending this doesn't cost processing time, just a small + * amount of static memory. */ +#ifndef VCHI_MAX_SERVICES_PER_CONNECTION +# define VCHI_MAX_SERVICES_PER_CONNECTION 36 +#endif + +/* Adjust if using a message driver that supports more logical TX channels */ +#ifndef VCHI_MAX_BULK_TX_CHANNELS_PER_CONNECTION +# define VCHI_MAX_BULK_TX_CHANNELS_PER_CONNECTION 9 // 1 MPHI + 8 CCP2 logical channels +#endif + +/* Adjust if using a message driver that supports more logical RX channels */ +#ifndef VCHI_MAX_BULK_RX_CHANNELS_PER_CONNECTION +# define VCHI_MAX_BULK_RX_CHANNELS_PER_CONNECTION 1 // 1 MPHI +#endif + +/* How many receive slots do we use. This times VCHI_MAX_MSG_SIZE gives the effective + * receive queue space, less message headers. */ +#ifndef VCHI_NUM_READ_SLOTS +# if defined(VCHI_LOCAL_HOST_PORT) +# define VCHI_NUM_READ_SLOTS 4 +# else +# define VCHI_NUM_READ_SLOTS 48 +# endif +#endif + +/* Do we utilise overrun facility for receive message slots? Can aid peer transmit + * performance. Only define on VideoCore end, talking to host. + */ +//#define VCHI_MSG_RX_OVERRUN + +/* How many transmit slots do we use. Generally don't need many, as the hardware driver + * underneath VCHI will usually have its own buffering. */ +#ifndef VCHI_NUM_WRITE_SLOTS +# define VCHI_NUM_WRITE_SLOTS 4 +#endif + +/* If a service has held or queued received messages in VCHI_XOFF_THRESHOLD or more slots, + * then it's taking up too much buffer space, and the peer service will be told to stop + * transmitting with an XOFF message. For this to be effective, the VCHI_NUM_READ_SLOTS + * needs to be considerably bigger than VCHI_NUM_WRITE_SLOTS, or the transmit latency + * is too high. */ +#ifndef VCHI_XOFF_THRESHOLD +# define VCHI_XOFF_THRESHOLD (VCHI_NUM_READ_SLOTS / 2) +#endif + +/* After we've sent an XOFF, the peer will be told to resume transmission once the local + * service has dequeued/released enough messages that it's now occupying + * VCHI_XON_THRESHOLD slots or fewer. */ +#ifndef VCHI_XON_THRESHOLD +# define VCHI_XON_THRESHOLD (VCHI_NUM_READ_SLOTS / 4) +#endif + +/* A size below which a bulk transfer omits the handshake completely and always goes + * via the message channel, if bulk auxiliary is being sent on that service. (The user + * can guarantee this by enabling unaligned transmits). + * Not API. */ +#ifndef VCHI_MIN_BULK_SIZE +# define VCHI_MIN_BULK_SIZE ( VCHI_MAX_MSG_SIZE / 2 < 4096 ? VCHI_MAX_MSG_SIZE / 2 : 4096 ) +#endif + +/* Maximum size of bulk transmission chunks, for each interface type. A trade-off between + * speed and latency; the smaller the chunk size the better change of messages and other + * bulk transmissions getting in when big bulk transfers are happening. Set to 0 to not + * break transmissions into chunks. + */ +#ifndef VCHI_MAX_BULK_CHUNK_SIZE_MPHI +# define VCHI_MAX_BULK_CHUNK_SIZE_MPHI (16 * 1024) +#endif + +/* NB Chunked CCP2 transmissions violate the letter of the CCP2 spec by using "JPEG8" mode + * with multiple-line frames. Only use if the receiver can cope. */ +#ifndef VCHI_MAX_BULK_CHUNK_SIZE_CCP2 +# define VCHI_MAX_BULK_CHUNK_SIZE_CCP2 0 +#endif + +/* How many TX messages can we have pending in our transmit slots. Once exhausted, + * vchi_msg_queue will be blocked. */ +#ifndef VCHI_TX_MSG_QUEUE_SIZE +# define VCHI_TX_MSG_QUEUE_SIZE 256 +#endif + +/* How many RX messages can we have parsed in the receive slots. Once exhausted, parsing + * will be suspended until older messages are dequeued/released. */ +#ifndef VCHI_RX_MSG_QUEUE_SIZE +# define VCHI_RX_MSG_QUEUE_SIZE 256 +#endif + +/* Really should be able to cope if we run out of received message descriptors, by + * suspending parsing as the comment above says, but we don't. This sweeps the issue + * under the carpet. */ +#if VCHI_RX_MSG_QUEUE_SIZE < (VCHI_MAX_MSG_SIZE/16 + 1) * VCHI_NUM_READ_SLOTS +# undef VCHI_RX_MSG_QUEUE_SIZE +# define VCHI_RX_MSG_QUEUE_SIZE (VCHI_MAX_MSG_SIZE/16 + 1) * VCHI_NUM_READ_SLOTS +#endif + +/* How many bulk transmits can we have pending. Once exhausted, vchi_bulk_queue_transmit + * will be blocked. */ +#ifndef VCHI_TX_BULK_QUEUE_SIZE +# define VCHI_TX_BULK_QUEUE_SIZE 64 +#endif + +/* How many bulk receives can we have pending. Once exhausted, vchi_bulk_queue_receive + * will be blocked. */ +#ifndef VCHI_RX_BULK_QUEUE_SIZE +# define VCHI_RX_BULK_QUEUE_SIZE 64 +#endif + +/* A limit on how many outstanding bulk requests we expect the peer to give us. If + * the peer asks for more than this, VCHI will fail and assert. The number is determined + * by the peer's hardware - it's the number of outstanding requests that can be queued + * on all bulk channels. VC3's MPHI peripheral allows 16. */ +#ifndef VCHI_MAX_PEER_BULK_REQUESTS +# define VCHI_MAX_PEER_BULK_REQUESTS 32 +#endif + +/* Define VCHI_CCP2TX_MANUAL_POWER if the host tells us when to turn the CCP2 + * transmitter on and off. + */ +/*#define VCHI_CCP2TX_MANUAL_POWER*/ + +#ifndef VCHI_CCP2TX_MANUAL_POWER + +/* Timeout (in milliseconds) for putting the CCP2TX interface into IDLE state. Set + * negative for no IDLE. + */ +# ifndef VCHI_CCP2TX_IDLE_TIMEOUT +# define VCHI_CCP2TX_IDLE_TIMEOUT 5 +# endif + +/* Timeout (in milliseconds) for putting the CCP2TX interface into OFF state. Set + * negative for no OFF. + */ +# ifndef VCHI_CCP2TX_OFF_TIMEOUT +# define VCHI_CCP2TX_OFF_TIMEOUT 1000 +# endif + +#endif /* VCHI_CCP2TX_MANUAL_POWER */ + +#endif /* VCHI_CFG_H_ */ + +/****************************** End of file **********************************/ --- linux-raspi2-4.2.0.orig/drivers/misc/vc04_services/interface/vchi/vchi_cfg_internal.h +++ linux-raspi2-4.2.0/drivers/misc/vc04_services/interface/vchi/vchi_cfg_internal.h @@ -0,0 +1,71 @@ +/** + * Copyright (c) 2010-2012 Broadcom. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions, and the following disclaimer, + * without modification. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The names of the above-listed copyright holders may not be used + * to endorse or promote products derived from this software without + * specific prior written permission. + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") version 2, as published by the Free + * Software Foundation. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS + * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef VCHI_CFG_INTERNAL_H_ +#define VCHI_CFG_INTERNAL_H_ + +/**************************************************************************************** + * Control optimisation attempts. + ***************************************************************************************/ + +// Don't use lots of short-term locks - use great long ones, reducing the overall locks-per-second +#define VCHI_COARSE_LOCKING + +// Avoid lock then unlock on exit from blocking queue operations (msg tx, bulk rx/tx) +// (only relevant if VCHI_COARSE_LOCKING) +#define VCHI_ELIDE_BLOCK_EXIT_LOCK + +// Avoid lock on non-blocking peek +// (only relevant if VCHI_COARSE_LOCKING) +#define VCHI_AVOID_PEEK_LOCK + +// Use one slot-handler thread per connection, rather than 1 thread dealing with all connections in rotation. +#define VCHI_MULTIPLE_HANDLER_THREADS + +// Put free descriptors onto the head of the free queue, rather than the tail, so that we don't thrash +// our way through the pool of descriptors. +#define VCHI_PUSH_FREE_DESCRIPTORS_ONTO_HEAD + +// Don't issue a MSG_AVAILABLE callback for every single message. Possibly only safe if VCHI_COARSE_LOCKING. +#define VCHI_FEWER_MSG_AVAILABLE_CALLBACKS + +// Don't use message descriptors for TX messages that don't need them +#define VCHI_MINIMISE_TX_MSG_DESCRIPTORS + +// Nano-locks for multiqueue +//#define VCHI_MQUEUE_NANOLOCKS + +// Lock-free(er) dequeuing +//#define VCHI_RX_NANOLOCKS + +#endif /*VCHI_CFG_INTERNAL_H_*/ --- linux-raspi2-4.2.0.orig/drivers/misc/vc04_services/interface/vchi/vchi_common.h +++ linux-raspi2-4.2.0/drivers/misc/vc04_services/interface/vchi/vchi_common.h @@ -0,0 +1,175 @@ +/** + * Copyright (c) 2010-2012 Broadcom. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions, and the following disclaimer, + * without modification. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The names of the above-listed copyright holders may not be used + * to endorse or promote products derived from this software without + * specific prior written permission. + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") version 2, as published by the Free + * Software Foundation. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS + * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef VCHI_COMMON_H_ +#define VCHI_COMMON_H_ + + +//flags used when sending messages (must be bitmapped) +typedef enum +{ + VCHI_FLAGS_NONE = 0x0, + VCHI_FLAGS_BLOCK_UNTIL_OP_COMPLETE = 0x1, // waits for message to be received, or sent (NB. not the same as being seen on other side) + VCHI_FLAGS_CALLBACK_WHEN_OP_COMPLETE = 0x2, // run a callback when message sent + VCHI_FLAGS_BLOCK_UNTIL_QUEUED = 0x4, // return once the transfer is in a queue ready to go + VCHI_FLAGS_ALLOW_PARTIAL = 0x8, + VCHI_FLAGS_BLOCK_UNTIL_DATA_READ = 0x10, + VCHI_FLAGS_CALLBACK_WHEN_DATA_READ = 0x20, + + VCHI_FLAGS_ALIGN_SLOT = 0x000080, // internal use only + VCHI_FLAGS_BULK_AUX_QUEUED = 0x010000, // internal use only + VCHI_FLAGS_BULK_AUX_COMPLETE = 0x020000, // internal use only + VCHI_FLAGS_BULK_DATA_QUEUED = 0x040000, // internal use only + VCHI_FLAGS_BULK_DATA_COMPLETE = 0x080000, // internal use only + VCHI_FLAGS_INTERNAL = 0xFF0000 +} VCHI_FLAGS_T; + +// constants for vchi_crc_control() +typedef enum { + VCHI_CRC_NOTHING = -1, + VCHI_CRC_PER_SERVICE = 0, + VCHI_CRC_EVERYTHING = 1, +} VCHI_CRC_CONTROL_T; + +//callback reasons when an event occurs on a service +typedef enum +{ + VCHI_CALLBACK_REASON_MIN, + + //This indicates that there is data available + //handle is the msg id that was transmitted with the data + // When a message is received and there was no FULL message available previously, send callback + // Tasks get kicked by the callback, reset their event and try and read from the fifo until it fails + VCHI_CALLBACK_MSG_AVAILABLE, + VCHI_CALLBACK_MSG_SENT, + VCHI_CALLBACK_MSG_SPACE_AVAILABLE, // XXX not yet implemented + + // This indicates that a transfer from the other side has completed + VCHI_CALLBACK_BULK_RECEIVED, + //This indicates that data queued up to be sent has now gone + //handle is the msg id that was used when sending the data + VCHI_CALLBACK_BULK_SENT, + VCHI_CALLBACK_BULK_RX_SPACE_AVAILABLE, // XXX not yet implemented + VCHI_CALLBACK_BULK_TX_SPACE_AVAILABLE, // XXX not yet implemented + + VCHI_CALLBACK_SERVICE_CLOSED, + + // this side has sent XOFF to peer due to lack of data consumption by service + // (suggests the service may need to take some recovery action if it has + // been deliberately holding off consuming data) + VCHI_CALLBACK_SENT_XOFF, + VCHI_CALLBACK_SENT_XON, + + // indicates that a bulk transfer has finished reading the source buffer + VCHI_CALLBACK_BULK_DATA_READ, + + // power notification events (currently host side only) + VCHI_CALLBACK_PEER_OFF, + VCHI_CALLBACK_PEER_SUSPENDED, + VCHI_CALLBACK_PEER_ON, + VCHI_CALLBACK_PEER_RESUMED, + VCHI_CALLBACK_FORCED_POWER_OFF, + +#ifdef USE_VCHIQ_ARM + // some extra notifications provided by vchiq_arm + VCHI_CALLBACK_SERVICE_OPENED, + VCHI_CALLBACK_BULK_RECEIVE_ABORTED, + VCHI_CALLBACK_BULK_TRANSMIT_ABORTED, +#endif + + VCHI_CALLBACK_REASON_MAX +} VCHI_CALLBACK_REASON_T; + +// service control options +typedef enum +{ + VCHI_SERVICE_OPTION_MIN, + + VCHI_SERVICE_OPTION_TRACE, + VCHI_SERVICE_OPTION_SYNCHRONOUS, + + VCHI_SERVICE_OPTION_MAX +} VCHI_SERVICE_OPTION_T; + + +//Callback used by all services / bulk transfers +typedef void (*VCHI_CALLBACK_T)( void *callback_param, //my service local param + VCHI_CALLBACK_REASON_T reason, + void *handle ); //for transmitting msg's only + + + +/* + * Define vector struct for scatter-gather (vector) operations + * Vectors can be nested - if a vector element has negative length, then + * the data pointer is treated as pointing to another vector array, with + * '-vec_len' elements. Thus to append a header onto an existing vector, + * you can do this: + * + * void foo(const VCHI_MSG_VECTOR_T *v, int n) + * { + * VCHI_MSG_VECTOR_T nv[2]; + * nv[0].vec_base = my_header; + * nv[0].vec_len = sizeof my_header; + * nv[1].vec_base = v; + * nv[1].vec_len = -n; + * ... + * + */ +typedef struct vchi_msg_vector { + const void *vec_base; + int32_t vec_len; +} VCHI_MSG_VECTOR_T; + +// Opaque type for a connection API +typedef struct opaque_vchi_connection_api_t VCHI_CONNECTION_API_T; + +// Opaque type for a message driver +typedef struct opaque_vchi_message_driver_t VCHI_MESSAGE_DRIVER_T; + + +// Iterator structure for reading ahead through received message queue. Allocated by client, +// initialised by vchi_msg_look_ahead. Fields are for internal VCHI use only. +// Iterates over messages in queue at the instant of the call to vchi_msg_lookahead - +// will not proceed to messages received since. Behaviour is undefined if an iterator +// is used again after messages for that service are removed/dequeued by any +// means other than vchi_msg_iter_... calls on the iterator itself. +typedef struct { + struct opaque_vchi_service_t *service; + void *last; + void *next; + void *remove; +} VCHI_MSG_ITER_T; + + +#endif // VCHI_COMMON_H_ --- linux-raspi2-4.2.0.orig/drivers/misc/vc04_services/interface/vchi/vchi_mh.h +++ linux-raspi2-4.2.0/drivers/misc/vc04_services/interface/vchi/vchi_mh.h @@ -0,0 +1,42 @@ +/** + * Copyright (c) 2010-2012 Broadcom. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions, and the following disclaimer, + * without modification. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The names of the above-listed copyright holders may not be used + * to endorse or promote products derived from this software without + * specific prior written permission. + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") version 2, as published by the Free + * Software Foundation. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS + * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef VCHI_MH_H_ +#define VCHI_MH_H_ + +#include + +typedef int32_t VCHI_MEM_HANDLE_T; +#define VCHI_MEM_HANDLE_INVALID 0 + +#endif --- linux-raspi2-4.2.0.orig/drivers/misc/vc04_services/interface/vchiq_arm/vchiq.h +++ linux-raspi2-4.2.0/drivers/misc/vc04_services/interface/vchiq_arm/vchiq.h @@ -0,0 +1,40 @@ +/** + * Copyright (c) 2010-2012 Broadcom. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions, and the following disclaimer, + * without modification. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The names of the above-listed copyright holders may not be used + * to endorse or promote products derived from this software without + * specific prior written permission. + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") version 2, as published by the Free + * Software Foundation. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS + * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef VCHIQ_VCHIQ_H +#define VCHIQ_VCHIQ_H + +#include "vchiq_if.h" +#include "vchiq_util.h" + +#endif --- linux-raspi2-4.2.0.orig/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_2835.h +++ linux-raspi2-4.2.0/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_2835.h @@ -0,0 +1,42 @@ +/** + * Copyright (c) 2010-2012 Broadcom. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions, and the following disclaimer, + * without modification. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The names of the above-listed copyright holders may not be used + * to endorse or promote products derived from this software without + * specific prior written permission. + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") version 2, as published by the Free + * Software Foundation. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS + * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef VCHIQ_2835_H +#define VCHIQ_2835_H + +#include "vchiq_pagelist.h" + +#define VCHIQ_PLATFORM_FRAGMENTS_OFFSET_IDX 0 +#define VCHIQ_PLATFORM_FRAGMENTS_COUNT_IDX 1 + +#endif /* VCHIQ_2835_H */ --- linux-raspi2-4.2.0.orig/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_2835_arm.c +++ linux-raspi2-4.2.0/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_2835_arm.c @@ -0,0 +1,580 @@ +/** + * Copyright (c) 2010-2012 Broadcom. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions, and the following disclaimer, + * without modification. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The names of the above-listed copyright holders may not be used + * to endorse or promote products derived from this software without + * specific prior written permission. + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") version 2, as published by the Free + * Software Foundation. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS + * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#define TOTAL_SLOTS (VCHIQ_SLOT_ZERO_SLOTS + 2 * 32) + +#define VCHIQ_ARM_ADDRESS(x) ((void *)((char *)x + g_virt_to_bus_offset)) + +#include "vchiq_arm.h" +#include "vchiq_2835.h" +#include "vchiq_connected.h" +#include "vchiq_killable.h" + +#define MAX_FRAGMENTS (VCHIQ_NUM_CURRENT_BULKS * 2) + +#define BELL0 0x00 +#define BELL2 0x08 + +typedef struct vchiq_2835_state_struct { + int inited; + VCHIQ_ARM_STATE_T arm_state; +} VCHIQ_2835_ARM_STATE_T; + +static void __iomem *g_regs; +static unsigned int g_cache_line_size = sizeof(CACHE_LINE_SIZE); +static unsigned int g_fragments_size; +static char *g_fragments_base; +static char *g_free_fragments; +static struct semaphore g_free_fragments_sema; +static unsigned long g_virt_to_bus_offset; + +extern int vchiq_arm_log_level; + +static DEFINE_SEMAPHORE(g_free_fragments_mutex); + +static irqreturn_t +vchiq_doorbell_irq(int irq, void *dev_id); + +static int +create_pagelist(char __user *buf, size_t count, unsigned short type, + struct task_struct *task, PAGELIST_T ** ppagelist); + +static void +free_pagelist(PAGELIST_T *pagelist, int actual); + +int vchiq_platform_init(struct platform_device *pdev, VCHIQ_STATE_T *state) +{ + struct device *dev = &pdev->dev; + struct rpi_firmware *fw = platform_get_drvdata(pdev); + VCHIQ_SLOT_ZERO_T *vchiq_slot_zero; + struct resource *res; + void *slot_mem; + dma_addr_t slot_phys; + u32 channelbase; + int slot_mem_size, frag_mem_size; + int err, irq, i; + + g_virt_to_bus_offset = virt_to_dma(dev, (void *)0); + + (void)of_property_read_u32(dev->of_node, "cache-line-size", + &g_cache_line_size); + g_fragments_size = 2 * g_cache_line_size; + + /* Allocate space for the channels in coherent memory */ + slot_mem_size = PAGE_ALIGN(TOTAL_SLOTS * VCHIQ_SLOT_SIZE); + frag_mem_size = PAGE_ALIGN(g_fragments_size * MAX_FRAGMENTS); + + slot_mem = dmam_alloc_coherent(dev, slot_mem_size + frag_mem_size, + &slot_phys, GFP_KERNEL); + if (!slot_mem) { + dev_err(dev, "could not allocate DMA memory\n"); + return -ENOMEM; + } + + WARN_ON(((int)slot_mem & (PAGE_SIZE - 1)) != 0); + + vchiq_slot_zero = vchiq_init_slots(slot_mem, slot_mem_size); + if (!vchiq_slot_zero) + return -EINVAL; + + vchiq_slot_zero->platform_data[VCHIQ_PLATFORM_FRAGMENTS_OFFSET_IDX] = + (int)slot_phys + slot_mem_size; + vchiq_slot_zero->platform_data[VCHIQ_PLATFORM_FRAGMENTS_COUNT_IDX] = + MAX_FRAGMENTS; + + g_fragments_base = (char *)slot_mem + slot_mem_size; + slot_mem_size += frag_mem_size; + + g_free_fragments = g_fragments_base; + for (i = 0; i < (MAX_FRAGMENTS - 1); i++) { + *(char **)&g_fragments_base[i*g_fragments_size] = + &g_fragments_base[(i + 1)*g_fragments_size]; + } + *(char **)&g_fragments_base[i * g_fragments_size] = NULL; + sema_init(&g_free_fragments_sema, MAX_FRAGMENTS); + + if (vchiq_init_state(state, vchiq_slot_zero, 0) != VCHIQ_SUCCESS) + return -EINVAL; + + res = platform_get_resource(pdev, IORESOURCE_MEM, 0); + g_regs = devm_ioremap_resource(&pdev->dev, res); + if (IS_ERR(g_regs)) + return PTR_ERR(g_regs); + + irq = platform_get_irq(pdev, 0); + if (irq <= 0) { + dev_err(dev, "failed to get IRQ\n"); + return irq; + } + + err = devm_request_irq(dev, irq, vchiq_doorbell_irq, IRQF_IRQPOLL, + "VCHIQ doorbell", state); + if (err) { + dev_err(dev, "failed to register irq=%d\n", irq); + return err; + } + + /* Send the base address of the slots to VideoCore */ + channelbase = slot_phys; + err = rpi_firmware_property(fw, RPI_FIRMWARE_VCHIQ_INIT, + &channelbase, sizeof(channelbase)); + if (err || channelbase) { + dev_err(dev, "failed to set channelbase\n"); + return err ? : -ENXIO; + } + + vchiq_log_info(vchiq_arm_log_level, + "vchiq_init - done (slots %x, phys %pad)", + (unsigned int)vchiq_slot_zero, &slot_phys); + + vchiq_call_connected_callbacks(); + + return 0; +} + +VCHIQ_STATUS_T +vchiq_platform_init_state(VCHIQ_STATE_T *state) +{ + VCHIQ_STATUS_T status = VCHIQ_SUCCESS; + state->platform_state = kzalloc(sizeof(VCHIQ_2835_ARM_STATE_T), GFP_KERNEL); + ((VCHIQ_2835_ARM_STATE_T*)state->platform_state)->inited = 1; + status = vchiq_arm_init_state(state, &((VCHIQ_2835_ARM_STATE_T*)state->platform_state)->arm_state); + if(status != VCHIQ_SUCCESS) + { + ((VCHIQ_2835_ARM_STATE_T*)state->platform_state)->inited = 0; + } + return status; +} + +VCHIQ_ARM_STATE_T* +vchiq_platform_get_arm_state(VCHIQ_STATE_T *state) +{ + if(!((VCHIQ_2835_ARM_STATE_T*)state->platform_state)->inited) + { + BUG(); + } + return &((VCHIQ_2835_ARM_STATE_T*)state->platform_state)->arm_state; +} + +void +remote_event_signal(REMOTE_EVENT_T *event) +{ + wmb(); + + event->fired = 1; + + dsb(); /* data barrier operation */ + + if (event->armed) + writel(0, g_regs + BELL2); /* trigger vc interrupt */ +} + +int +vchiq_copy_from_user(void *dst, const void *src, int size) +{ + if ((uint32_t)src < TASK_SIZE) { + return copy_from_user(dst, src, size); + } else { + memcpy(dst, src, size); + return 0; + } +} + +VCHIQ_STATUS_T +vchiq_prepare_bulk_data(VCHIQ_BULK_T *bulk, VCHI_MEM_HANDLE_T memhandle, + void *offset, int size, int dir) +{ + PAGELIST_T *pagelist; + int ret; + + WARN_ON(memhandle != VCHI_MEM_HANDLE_INVALID); + + ret = create_pagelist((char __user *)offset, size, + (dir == VCHIQ_BULK_RECEIVE) + ? PAGELIST_READ + : PAGELIST_WRITE, + current, + &pagelist); + if (ret != 0) + return VCHIQ_ERROR; + + bulk->handle = memhandle; + bulk->data = VCHIQ_ARM_ADDRESS(pagelist); + + /* Store the pagelist address in remote_data, which isn't used by the + slave. */ + bulk->remote_data = pagelist; + + return VCHIQ_SUCCESS; +} + +void +vchiq_complete_bulk(VCHIQ_BULK_T *bulk) +{ + if (bulk && bulk->remote_data && bulk->actual) + free_pagelist((PAGELIST_T *)bulk->remote_data, bulk->actual); +} + +void +vchiq_transfer_bulk(VCHIQ_BULK_T *bulk) +{ + /* + * This should only be called on the master (VideoCore) side, but + * provide an implementation to avoid the need for ifdefery. + */ + BUG(); +} + +void +vchiq_dump_platform_state(void *dump_context) +{ + char buf[80]; + int len; + len = snprintf(buf, sizeof(buf), + " Platform: 2835 (VC master)"); + vchiq_dump(dump_context, buf, len + 1); +} + +VCHIQ_STATUS_T +vchiq_platform_suspend(VCHIQ_STATE_T *state) +{ + return VCHIQ_ERROR; +} + +VCHIQ_STATUS_T +vchiq_platform_resume(VCHIQ_STATE_T *state) +{ + return VCHIQ_SUCCESS; +} + +void +vchiq_platform_paused(VCHIQ_STATE_T *state) +{ +} + +void +vchiq_platform_resumed(VCHIQ_STATE_T *state) +{ +} + +int +vchiq_platform_videocore_wanted(VCHIQ_STATE_T* state) +{ + return 1; // autosuspend not supported - videocore always wanted +} + +int +vchiq_platform_use_suspend_timer(void) +{ + return 0; +} +void +vchiq_dump_platform_use_state(VCHIQ_STATE_T *state) +{ + vchiq_log_info(vchiq_arm_log_level, "Suspend timer not in use"); +} +void +vchiq_platform_handle_timeout(VCHIQ_STATE_T *state) +{ + (void)state; +} +/* + * Local functions + */ + +static irqreturn_t +vchiq_doorbell_irq(int irq, void *dev_id) +{ + VCHIQ_STATE_T *state = dev_id; + irqreturn_t ret = IRQ_NONE; + unsigned int status; + + /* Read (and clear) the doorbell */ + status = readl(g_regs + BELL0); + + if (status & 0x4) { /* Was the doorbell rung? */ + remote_event_pollall(state); + ret = IRQ_HANDLED; + } + + return ret; +} + +/* There is a potential problem with partial cache lines (pages?) +** at the ends of the block when reading. If the CPU accessed anything in +** the same line (page?) then it may have pulled old data into the cache, +** obscuring the new data underneath. We can solve this by transferring the +** partial cache lines separately, and allowing the ARM to copy into the +** cached area. + +** N.B. This implementation plays slightly fast and loose with the Linux +** driver programming rules, e.g. its use of dmac_map_area instead of +** dma_map_single, but it isn't a multi-platform driver and it benefits +** from increased speed as a result. +*/ + +static int +create_pagelist(char __user *buf, size_t count, unsigned short type, + struct task_struct *task, PAGELIST_T ** ppagelist) +{ + PAGELIST_T *pagelist; + struct page **pages; + unsigned long *addrs; + unsigned int num_pages, offset, i; + char *addr, *base_addr, *next_addr; + int run, addridx, actual_pages; + unsigned long *need_release; + + offset = (unsigned int)buf & (PAGE_SIZE - 1); + num_pages = (count + offset + PAGE_SIZE - 1) / PAGE_SIZE; + + *ppagelist = NULL; + + /* Allocate enough storage to hold the page pointers and the page + ** list + */ + pagelist = kmalloc(sizeof(PAGELIST_T) + + (num_pages * sizeof(unsigned long)) + + sizeof(unsigned long) + + (num_pages * sizeof(pages[0])), + GFP_KERNEL); + + vchiq_log_trace(vchiq_arm_log_level, + "create_pagelist - %x", (unsigned int)pagelist); + if (!pagelist) + return -ENOMEM; + + addrs = pagelist->addrs; + need_release = (unsigned long *)(addrs + num_pages); + pages = (struct page **)(addrs + num_pages + 1); + + if (is_vmalloc_addr(buf)) { + int dir = (type == PAGELIST_WRITE) ? + DMA_TO_DEVICE : DMA_FROM_DEVICE; + unsigned long length = count; + unsigned int off = offset; + + for (actual_pages = 0; actual_pages < num_pages; + actual_pages++) { + struct page *pg = vmalloc_to_page(buf + (actual_pages * + PAGE_SIZE)); + size_t bytes = PAGE_SIZE - off; + + if (bytes > length) + bytes = length; + pages[actual_pages] = pg; + dmac_map_area(page_address(pg) + off, bytes, dir); + length -= bytes; + off = 0; + } + *need_release = 0; /* do not try and release vmalloc pages */ + } else { + down_read(&task->mm->mmap_sem); + actual_pages = get_user_pages(task, task->mm, + (unsigned long)buf & ~(PAGE_SIZE - 1), + num_pages, + (type == PAGELIST_READ) /*Write */ , + 0 /*Force */ , + pages, + NULL /*vmas */); + up_read(&task->mm->mmap_sem); + + if (actual_pages != num_pages) { + vchiq_log_info(vchiq_arm_log_level, + "create_pagelist - only %d/%d pages locked", + actual_pages, + num_pages); + + /* This is probably due to the process being killed */ + while (actual_pages > 0) + { + actual_pages--; + page_cache_release(pages[actual_pages]); + } + kfree(pagelist); + if (actual_pages == 0) + actual_pages = -ENOMEM; + return actual_pages; + } + *need_release = 1; /* release user pages */ + } + + pagelist->length = count; + pagelist->type = type; + pagelist->offset = offset; + + /* Group the pages into runs of contiguous pages */ + + base_addr = VCHIQ_ARM_ADDRESS(page_address(pages[0])); + next_addr = base_addr + PAGE_SIZE; + addridx = 0; + run = 0; + + for (i = 1; i < num_pages; i++) { + addr = VCHIQ_ARM_ADDRESS(page_address(pages[i])); + if ((addr == next_addr) && (run < (PAGE_SIZE - 1))) { + next_addr += PAGE_SIZE; + run++; + } else { + addrs[addridx] = (unsigned long)base_addr + run; + addridx++; + base_addr = addr; + next_addr = addr + PAGE_SIZE; + run = 0; + } + } + + addrs[addridx] = (unsigned long)base_addr + run; + addridx++; + + /* Partial cache lines (fragments) require special measures */ + if ((type == PAGELIST_READ) && + ((pagelist->offset & (g_cache_line_size - 1)) || + ((pagelist->offset + pagelist->length) & + (g_cache_line_size - 1)))) { + char *fragments; + + if (down_interruptible(&g_free_fragments_sema) != 0) { + kfree(pagelist); + return -EINTR; + } + + WARN_ON(g_free_fragments == NULL); + + down(&g_free_fragments_mutex); + fragments = g_free_fragments; + WARN_ON(fragments == NULL); + g_free_fragments = *(char **) g_free_fragments; + up(&g_free_fragments_mutex); + pagelist->type = PAGELIST_READ_WITH_FRAGMENTS + + (fragments - g_fragments_base) / g_fragments_size; + } + + dmac_flush_range(pagelist, addrs + num_pages); + + *ppagelist = pagelist; + + return 0; +} + +static void +free_pagelist(PAGELIST_T *pagelist, int actual) +{ + unsigned long *need_release; + struct page **pages; + unsigned int num_pages, i; + + vchiq_log_trace(vchiq_arm_log_level, + "free_pagelist - %x, %d", (unsigned int)pagelist, actual); + + num_pages = + (pagelist->length + pagelist->offset + PAGE_SIZE - 1) / + PAGE_SIZE; + + need_release = (unsigned long *)(pagelist->addrs + num_pages); + pages = (struct page **)(pagelist->addrs + num_pages + 1); + + /* Deal with any partial cache lines (fragments) */ + if (pagelist->type >= PAGELIST_READ_WITH_FRAGMENTS) { + char *fragments = g_fragments_base + + (pagelist->type - PAGELIST_READ_WITH_FRAGMENTS) * + g_fragments_size; + int head_bytes, tail_bytes; + head_bytes = (g_cache_line_size - pagelist->offset) & + (g_cache_line_size - 1); + tail_bytes = (pagelist->offset + actual) & + (g_cache_line_size - 1); + + if ((actual >= 0) && (head_bytes != 0)) { + if (head_bytes > actual) + head_bytes = actual; + + memcpy((char *)page_address(pages[0]) + + pagelist->offset, + fragments, + head_bytes); + } + if ((actual >= 0) && (head_bytes < actual) && + (tail_bytes != 0)) { + memcpy((char *)page_address(pages[num_pages - 1]) + + ((pagelist->offset + actual) & + (PAGE_SIZE - 1) & ~(g_cache_line_size - 1)), + fragments + g_cache_line_size, + tail_bytes); + } + + down(&g_free_fragments_mutex); + *(char **)fragments = g_free_fragments; + g_free_fragments = fragments; + up(&g_free_fragments_mutex); + up(&g_free_fragments_sema); + } + + if (*need_release) { + unsigned int length = pagelist->length; + unsigned int offset = pagelist->offset; + + for (i = 0; i < num_pages; i++) { + struct page *pg = pages[i]; + + if (pagelist->type != PAGELIST_WRITE) { + unsigned int bytes = PAGE_SIZE - offset; + + if (bytes > length) + bytes = length; + dmac_unmap_area(page_address(pg) + offset, + bytes, DMA_FROM_DEVICE); + length -= bytes; + offset = 0; + set_page_dirty(pg); + } + page_cache_release(pg); + } + } + + kfree(pagelist); +} --- linux-raspi2-4.2.0.orig/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_arm.c +++ linux-raspi2-4.2.0/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_arm.c @@ -0,0 +1,2903 @@ +/** + * Copyright (c) 2014 Raspberry Pi (Trading) Ltd. All rights reserved. + * Copyright (c) 2010-2012 Broadcom. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions, and the following disclaimer, + * without modification. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The names of the above-listed copyright holders may not be used + * to endorse or promote products derived from this software without + * specific prior written permission. + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") version 2, as published by the Free + * Software Foundation. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS + * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "vchiq_core.h" +#include "vchiq_ioctl.h" +#include "vchiq_arm.h" +#include "vchiq_debugfs.h" +#include "vchiq_killable.h" + +#define DEVICE_NAME "vchiq" + +/* Override the default prefix, which would be vchiq_arm (from the filename) */ +#undef MODULE_PARAM_PREFIX +#define MODULE_PARAM_PREFIX DEVICE_NAME "." + +#define VCHIQ_MINOR 0 + +/* Some per-instance constants */ +#define MAX_COMPLETIONS 16 +#define MAX_SERVICES 64 +#define MAX_ELEMENTS 8 +#define MSG_QUEUE_SIZE 64 + +#define KEEPALIVE_VER 1 +#define KEEPALIVE_VER_MIN KEEPALIVE_VER + +/* Run time control of log level, based on KERN_XXX level. */ +int vchiq_arm_log_level = VCHIQ_LOG_DEFAULT; +int vchiq_susp_log_level = VCHIQ_LOG_ERROR; + +#define SUSPEND_TIMER_TIMEOUT_MS 100 +#define SUSPEND_RETRY_TIMER_TIMEOUT_MS 1000 + +#define VC_SUSPEND_NUM_OFFSET 3 /* number of values before idle which are -ve */ +static const char *const suspend_state_names[] = { + "VC_SUSPEND_FORCE_CANCELED", + "VC_SUSPEND_REJECTED", + "VC_SUSPEND_FAILED", + "VC_SUSPEND_IDLE", + "VC_SUSPEND_REQUESTED", + "VC_SUSPEND_IN_PROGRESS", + "VC_SUSPEND_SUSPENDED" +}; +#define VC_RESUME_NUM_OFFSET 1 /* number of values before idle which are -ve */ +static const char *const resume_state_names[] = { + "VC_RESUME_FAILED", + "VC_RESUME_IDLE", + "VC_RESUME_REQUESTED", + "VC_RESUME_IN_PROGRESS", + "VC_RESUME_RESUMED" +}; +/* The number of times we allow force suspend to timeout before actually +** _forcing_ suspend. This is to cater for SW which fails to release vchiq +** correctly - we don't want to prevent ARM suspend indefinitely in this case. +*/ +#define FORCE_SUSPEND_FAIL_MAX 8 + +/* The time in ms allowed for videocore to go idle when force suspend has been + * requested */ +#define FORCE_SUSPEND_TIMEOUT_MS 200 + + +static void suspend_timer_callback(unsigned long context); + + +typedef struct user_service_struct { + VCHIQ_SERVICE_T *service; + void *userdata; + VCHIQ_INSTANCE_T instance; + char is_vchi; + char dequeue_pending; + char close_pending; + int message_available_pos; + int msg_insert; + int msg_remove; + struct semaphore insert_event; + struct semaphore remove_event; + struct semaphore close_event; + VCHIQ_HEADER_T * msg_queue[MSG_QUEUE_SIZE]; +} USER_SERVICE_T; + +struct bulk_waiter_node { + struct bulk_waiter bulk_waiter; + int pid; + struct list_head list; +}; + +struct vchiq_instance_struct { + VCHIQ_STATE_T *state; + VCHIQ_COMPLETION_DATA_T completions[MAX_COMPLETIONS]; + int completion_insert; + int completion_remove; + struct semaphore insert_event; + struct semaphore remove_event; + struct mutex completion_mutex; + + int connected; + int closing; + int pid; + int mark; + int use_close_delivered; + int trace; + + struct list_head bulk_waiter_list; + struct mutex bulk_waiter_list_mutex; + + VCHIQ_DEBUGFS_NODE_T debugfs_node; +}; + +typedef struct dump_context_struct { + char __user *buf; + size_t actual; + size_t space; + loff_t offset; +} DUMP_CONTEXT_T; + +static struct cdev vchiq_cdev; +static dev_t vchiq_devid; +static VCHIQ_STATE_T g_state; +static struct class *vchiq_class; +static struct device *vchiq_dev; +static DEFINE_SPINLOCK(msg_queue_spinlock); + +static const char *const ioctl_names[] = { + "CONNECT", + "SHUTDOWN", + "CREATE_SERVICE", + "REMOVE_SERVICE", + "QUEUE_MESSAGE", + "QUEUE_BULK_TRANSMIT", + "QUEUE_BULK_RECEIVE", + "AWAIT_COMPLETION", + "DEQUEUE_MESSAGE", + "GET_CLIENT_ID", + "GET_CONFIG", + "CLOSE_SERVICE", + "USE_SERVICE", + "RELEASE_SERVICE", + "SET_SERVICE_OPTION", + "DUMP_PHYS_MEM", + "LIB_VERSION", + "CLOSE_DELIVERED" +}; + +vchiq_static_assert((sizeof(ioctl_names)/sizeof(ioctl_names[0])) == + (VCHIQ_IOC_MAX + 1)); + +static void +dump_phys_mem(void *virt_addr, uint32_t num_bytes); + +/**************************************************************************** +* +* add_completion +* +***************************************************************************/ + +static VCHIQ_STATUS_T +add_completion(VCHIQ_INSTANCE_T instance, VCHIQ_REASON_T reason, + VCHIQ_HEADER_T *header, USER_SERVICE_T *user_service, + void *bulk_userdata) +{ + VCHIQ_COMPLETION_DATA_T *completion; + DEBUG_INITIALISE(g_state.local) + + while (instance->completion_insert == + (instance->completion_remove + MAX_COMPLETIONS)) { + /* Out of space - wait for the client */ + DEBUG_TRACE(SERVICE_CALLBACK_LINE); + vchiq_log_trace(vchiq_arm_log_level, + "add_completion - completion queue full"); + DEBUG_COUNT(COMPLETION_QUEUE_FULL_COUNT); + if (down_interruptible(&instance->remove_event) != 0) { + vchiq_log_info(vchiq_arm_log_level, + "service_callback interrupted"); + return VCHIQ_RETRY; + } else if (instance->closing) { + vchiq_log_info(vchiq_arm_log_level, + "service_callback closing"); + return VCHIQ_ERROR; + } + DEBUG_TRACE(SERVICE_CALLBACK_LINE); + } + + completion = + &instance->completions[instance->completion_insert & + (MAX_COMPLETIONS - 1)]; + + completion->header = header; + completion->reason = reason; + /* N.B. service_userdata is updated while processing AWAIT_COMPLETION */ + completion->service_userdata = user_service->service; + completion->bulk_userdata = bulk_userdata; + + if (reason == VCHIQ_SERVICE_CLOSED) { + /* Take an extra reference, to be held until + this CLOSED notification is delivered. */ + lock_service(user_service->service); + if (instance->use_close_delivered) + user_service->close_pending = 1; + } + + /* A write barrier is needed here to ensure that the entire completion + record is written out before the insert point. */ + wmb(); + + if (reason == VCHIQ_MESSAGE_AVAILABLE) + user_service->message_available_pos = + instance->completion_insert; + instance->completion_insert++; + + up(&instance->insert_event); + + return VCHIQ_SUCCESS; +} + +/**************************************************************************** +* +* service_callback +* +***************************************************************************/ + +static VCHIQ_STATUS_T +service_callback(VCHIQ_REASON_T reason, VCHIQ_HEADER_T *header, + VCHIQ_SERVICE_HANDLE_T handle, void *bulk_userdata) +{ + /* How do we ensure the callback goes to the right client? + ** The service_user data points to a USER_SERVICE_T record containing + ** the original callback and the user state structure, which contains a + ** circular buffer for completion records. + */ + USER_SERVICE_T *user_service; + VCHIQ_SERVICE_T *service; + VCHIQ_INSTANCE_T instance; + DEBUG_INITIALISE(g_state.local) + + DEBUG_TRACE(SERVICE_CALLBACK_LINE); + + service = handle_to_service(handle); + BUG_ON(!service); + user_service = (USER_SERVICE_T *)service->base.userdata; + instance = user_service->instance; + + if (!instance || instance->closing) + return VCHIQ_SUCCESS; + + vchiq_log_trace(vchiq_arm_log_level, + "service_callback - service %lx(%d,%p), reason %d, header %lx, " + "instance %lx, bulk_userdata %lx", + (unsigned long)user_service, + service->localport, user_service->userdata, + reason, (unsigned long)header, + (unsigned long)instance, (unsigned long)bulk_userdata); + + if (header && user_service->is_vchi) { + spin_lock(&msg_queue_spinlock); + while (user_service->msg_insert == + (user_service->msg_remove + MSG_QUEUE_SIZE)) { + spin_unlock(&msg_queue_spinlock); + DEBUG_TRACE(SERVICE_CALLBACK_LINE); + DEBUG_COUNT(MSG_QUEUE_FULL_COUNT); + vchiq_log_trace(vchiq_arm_log_level, + "service_callback - msg queue full"); + /* If there is no MESSAGE_AVAILABLE in the completion + ** queue, add one + */ + if ((user_service->message_available_pos - + instance->completion_remove) < 0) { + VCHIQ_STATUS_T status; + vchiq_log_info(vchiq_arm_log_level, + "Inserting extra MESSAGE_AVAILABLE"); + DEBUG_TRACE(SERVICE_CALLBACK_LINE); + status = add_completion(instance, reason, + NULL, user_service, bulk_userdata); + if (status != VCHIQ_SUCCESS) { + DEBUG_TRACE(SERVICE_CALLBACK_LINE); + return status; + } + } + + DEBUG_TRACE(SERVICE_CALLBACK_LINE); + if (down_interruptible(&user_service->remove_event) + != 0) { + vchiq_log_info(vchiq_arm_log_level, + "service_callback interrupted"); + DEBUG_TRACE(SERVICE_CALLBACK_LINE); + return VCHIQ_RETRY; + } else if (instance->closing) { + vchiq_log_info(vchiq_arm_log_level, + "service_callback closing"); + DEBUG_TRACE(SERVICE_CALLBACK_LINE); + return VCHIQ_ERROR; + } + DEBUG_TRACE(SERVICE_CALLBACK_LINE); + spin_lock(&msg_queue_spinlock); + } + + user_service->msg_queue[user_service->msg_insert & + (MSG_QUEUE_SIZE - 1)] = header; + user_service->msg_insert++; + spin_unlock(&msg_queue_spinlock); + + up(&user_service->insert_event); + + /* If there is a thread waiting in DEQUEUE_MESSAGE, or if + ** there is a MESSAGE_AVAILABLE in the completion queue then + ** bypass the completion queue. + */ + if (((user_service->message_available_pos - + instance->completion_remove) >= 0) || + user_service->dequeue_pending) { + DEBUG_TRACE(SERVICE_CALLBACK_LINE); + user_service->dequeue_pending = 0; + return VCHIQ_SUCCESS; + } + + header = NULL; + } + DEBUG_TRACE(SERVICE_CALLBACK_LINE); + + return add_completion(instance, reason, header, user_service, + bulk_userdata); +} + +/**************************************************************************** +* +* user_service_free +* +***************************************************************************/ +static void +user_service_free(void *userdata) +{ + kfree(userdata); +} + +/**************************************************************************** +* +* close_delivered +* +***************************************************************************/ +static void close_delivered(USER_SERVICE_T *user_service) +{ + vchiq_log_info(vchiq_arm_log_level, + "close_delivered(handle=%x)", + user_service->service->handle); + + if (user_service->close_pending) { + /* Allow the underlying service to be culled */ + unlock_service(user_service->service); + + /* Wake the user-thread blocked in close_ or remove_service */ + up(&user_service->close_event); + + user_service->close_pending = 0; + } +} + +/**************************************************************************** +* +* vchiq_ioctl +* +***************************************************************************/ +static long +vchiq_ioctl(struct file *file, unsigned int cmd, unsigned long arg) +{ + VCHIQ_INSTANCE_T instance = file->private_data; + VCHIQ_STATUS_T status = VCHIQ_SUCCESS; + VCHIQ_SERVICE_T *service = NULL; + long ret = 0; + int i, rc; + DEBUG_INITIALISE(g_state.local) + + vchiq_log_trace(vchiq_arm_log_level, + "vchiq_ioctl - instance %x, cmd %s, arg %lx", + (unsigned int)instance, + ((_IOC_TYPE(cmd) == VCHIQ_IOC_MAGIC) && + (_IOC_NR(cmd) <= VCHIQ_IOC_MAX)) ? + ioctl_names[_IOC_NR(cmd)] : "", arg); + + switch (cmd) { + case VCHIQ_IOC_SHUTDOWN: + if (!instance->connected) + break; + + /* Remove all services */ + i = 0; + while ((service = next_service_by_instance(instance->state, + instance, &i)) != NULL) { + status = vchiq_remove_service(service->handle); + unlock_service(service); + if (status != VCHIQ_SUCCESS) + break; + } + service = NULL; + + if (status == VCHIQ_SUCCESS) { + /* Wake the completion thread and ask it to exit */ + instance->closing = 1; + up(&instance->insert_event); + } + + break; + + case VCHIQ_IOC_CONNECT: + if (instance->connected) { + ret = -EINVAL; + break; + } + rc = mutex_lock_interruptible(&instance->state->mutex); + if (rc != 0) { + vchiq_log_error(vchiq_arm_log_level, + "vchiq: connect: could not lock mutex for " + "state %d: %d", + instance->state->id, rc); + ret = -EINTR; + break; + } + status = vchiq_connect_internal(instance->state, instance); + mutex_unlock(&instance->state->mutex); + + if (status == VCHIQ_SUCCESS) + instance->connected = 1; + else + vchiq_log_error(vchiq_arm_log_level, + "vchiq: could not connect: %d", status); + break; + + case VCHIQ_IOC_CREATE_SERVICE: { + VCHIQ_CREATE_SERVICE_T args; + USER_SERVICE_T *user_service = NULL; + void *userdata; + int srvstate; + + if (copy_from_user + (&args, (const void __user *)arg, + sizeof(args)) != 0) { + ret = -EFAULT; + break; + } + + user_service = kmalloc(sizeof(USER_SERVICE_T), GFP_KERNEL); + if (!user_service) { + ret = -ENOMEM; + break; + } + + if (args.is_open) { + if (!instance->connected) { + ret = -ENOTCONN; + kfree(user_service); + break; + } + srvstate = VCHIQ_SRVSTATE_OPENING; + } else { + srvstate = + instance->connected ? + VCHIQ_SRVSTATE_LISTENING : + VCHIQ_SRVSTATE_HIDDEN; + } + + userdata = args.params.userdata; + args.params.callback = service_callback; + args.params.userdata = user_service; + service = vchiq_add_service_internal( + instance->state, + &args.params, srvstate, + instance, user_service_free); + + if (service != NULL) { + user_service->service = service; + user_service->userdata = userdata; + user_service->instance = instance; + user_service->is_vchi = (args.is_vchi != 0); + user_service->dequeue_pending = 0; + user_service->close_pending = 0; + user_service->message_available_pos = + instance->completion_remove - 1; + user_service->msg_insert = 0; + user_service->msg_remove = 0; + sema_init(&user_service->insert_event, 0); + sema_init(&user_service->remove_event, 0); + sema_init(&user_service->close_event, 0); + + if (args.is_open) { + status = vchiq_open_service_internal + (service, instance->pid); + if (status != VCHIQ_SUCCESS) { + vchiq_remove_service(service->handle); + service = NULL; + ret = (status == VCHIQ_RETRY) ? + -EINTR : -EIO; + break; + } + } + + if (copy_to_user((void __user *) + &(((VCHIQ_CREATE_SERVICE_T __user *) + arg)->handle), + (const void *)&service->handle, + sizeof(service->handle)) != 0) { + ret = -EFAULT; + vchiq_remove_service(service->handle); + } + + service = NULL; + } else { + ret = -EEXIST; + kfree(user_service); + } + } break; + + case VCHIQ_IOC_CLOSE_SERVICE: { + VCHIQ_SERVICE_HANDLE_T handle = (VCHIQ_SERVICE_HANDLE_T)arg; + + service = find_service_for_instance(instance, handle); + if (service != NULL) { + USER_SERVICE_T *user_service = + (USER_SERVICE_T *)service->base.userdata; + /* close_pending is false on first entry, and when the + wait in vchiq_close_service has been interrupted. */ + if (!user_service->close_pending) { + status = vchiq_close_service(service->handle); + if (status != VCHIQ_SUCCESS) + break; + } + + /* close_pending is true once the underlying service + has been closed until the client library calls the + CLOSE_DELIVERED ioctl, signalling close_event. */ + if (user_service->close_pending && + down_interruptible(&user_service->close_event)) + status = VCHIQ_RETRY; + } + else + ret = -EINVAL; + } break; + + case VCHIQ_IOC_REMOVE_SERVICE: { + VCHIQ_SERVICE_HANDLE_T handle = (VCHIQ_SERVICE_HANDLE_T)arg; + + service = find_service_for_instance(instance, handle); + if (service != NULL) { + USER_SERVICE_T *user_service = + (USER_SERVICE_T *)service->base.userdata; + /* close_pending is false on first entry, and when the + wait in vchiq_close_service has been interrupted. */ + if (!user_service->close_pending) { + status = vchiq_remove_service(service->handle); + if (status != VCHIQ_SUCCESS) + break; + } + + /* close_pending is true once the underlying service + has been closed until the client library calls the + CLOSE_DELIVERED ioctl, signalling close_event. */ + if (user_service->close_pending && + down_interruptible(&user_service->close_event)) + status = VCHIQ_RETRY; + } + else + ret = -EINVAL; + } break; + + case VCHIQ_IOC_USE_SERVICE: + case VCHIQ_IOC_RELEASE_SERVICE: { + VCHIQ_SERVICE_HANDLE_T handle = (VCHIQ_SERVICE_HANDLE_T)arg; + + service = find_service_for_instance(instance, handle); + if (service != NULL) { + status = (cmd == VCHIQ_IOC_USE_SERVICE) ? + vchiq_use_service_internal(service) : + vchiq_release_service_internal(service); + if (status != VCHIQ_SUCCESS) { + vchiq_log_error(vchiq_susp_log_level, + "%s: cmd %s returned error %d for " + "service %c%c%c%c:%03d", + __func__, + (cmd == VCHIQ_IOC_USE_SERVICE) ? + "VCHIQ_IOC_USE_SERVICE" : + "VCHIQ_IOC_RELEASE_SERVICE", + status, + VCHIQ_FOURCC_AS_4CHARS( + service->base.fourcc), + service->client_id); + ret = -EINVAL; + } + } else + ret = -EINVAL; + } break; + + case VCHIQ_IOC_QUEUE_MESSAGE: { + VCHIQ_QUEUE_MESSAGE_T args; + if (copy_from_user + (&args, (const void __user *)arg, + sizeof(args)) != 0) { + ret = -EFAULT; + break; + } + + service = find_service_for_instance(instance, args.handle); + + if ((service != NULL) && (args.count <= MAX_ELEMENTS)) { + /* Copy elements into kernel space */ + VCHIQ_ELEMENT_T elements[MAX_ELEMENTS]; + if (copy_from_user(elements, args.elements, + args.count * sizeof(VCHIQ_ELEMENT_T)) == 0) + status = vchiq_queue_message + (args.handle, + elements, args.count); + else + ret = -EFAULT; + } else { + ret = -EINVAL; + } + } break; + + case VCHIQ_IOC_QUEUE_BULK_TRANSMIT: + case VCHIQ_IOC_QUEUE_BULK_RECEIVE: { + VCHIQ_QUEUE_BULK_TRANSFER_T args; + struct bulk_waiter_node *waiter = NULL; + VCHIQ_BULK_DIR_T dir = + (cmd == VCHIQ_IOC_QUEUE_BULK_TRANSMIT) ? + VCHIQ_BULK_TRANSMIT : VCHIQ_BULK_RECEIVE; + + if (copy_from_user + (&args, (const void __user *)arg, + sizeof(args)) != 0) { + ret = -EFAULT; + break; + } + + service = find_service_for_instance(instance, args.handle); + if (!service) { + ret = -EINVAL; + break; + } + + if (args.mode == VCHIQ_BULK_MODE_BLOCKING) { + waiter = kzalloc(sizeof(struct bulk_waiter_node), + GFP_KERNEL); + if (!waiter) { + ret = -ENOMEM; + break; + } + args.userdata = &waiter->bulk_waiter; + } else if (args.mode == VCHIQ_BULK_MODE_WAITING) { + struct list_head *pos; + mutex_lock(&instance->bulk_waiter_list_mutex); + list_for_each(pos, &instance->bulk_waiter_list) { + if (list_entry(pos, struct bulk_waiter_node, + list)->pid == current->pid) { + waiter = list_entry(pos, + struct bulk_waiter_node, + list); + list_del(pos); + break; + } + + } + mutex_unlock(&instance->bulk_waiter_list_mutex); + if (!waiter) { + vchiq_log_error(vchiq_arm_log_level, + "no bulk_waiter found for pid %d", + current->pid); + ret = -ESRCH; + break; + } + vchiq_log_info(vchiq_arm_log_level, + "found bulk_waiter %x for pid %d", + (unsigned int)waiter, current->pid); + args.userdata = &waiter->bulk_waiter; + } + status = vchiq_bulk_transfer + (args.handle, + VCHI_MEM_HANDLE_INVALID, + args.data, args.size, + args.userdata, args.mode, + dir); + if (!waiter) + break; + if ((status != VCHIQ_RETRY) || fatal_signal_pending(current) || + !waiter->bulk_waiter.bulk) { + if (waiter->bulk_waiter.bulk) { + /* Cancel the signal when the transfer + ** completes. */ + spin_lock(&bulk_waiter_spinlock); + waiter->bulk_waiter.bulk->userdata = NULL; + spin_unlock(&bulk_waiter_spinlock); + } + kfree(waiter); + } else { + const VCHIQ_BULK_MODE_T mode_waiting = + VCHIQ_BULK_MODE_WAITING; + waiter->pid = current->pid; + mutex_lock(&instance->bulk_waiter_list_mutex); + list_add(&waiter->list, &instance->bulk_waiter_list); + mutex_unlock(&instance->bulk_waiter_list_mutex); + vchiq_log_info(vchiq_arm_log_level, + "saved bulk_waiter %x for pid %d", + (unsigned int)waiter, current->pid); + + if (copy_to_user((void __user *) + &(((VCHIQ_QUEUE_BULK_TRANSFER_T __user *) + arg)->mode), + (const void *)&mode_waiting, + sizeof(mode_waiting)) != 0) + ret = -EFAULT; + } + } break; + + case VCHIQ_IOC_AWAIT_COMPLETION: { + VCHIQ_AWAIT_COMPLETION_T args; + + DEBUG_TRACE(AWAIT_COMPLETION_LINE); + if (!instance->connected) { + ret = -ENOTCONN; + break; + } + + if (copy_from_user(&args, (const void __user *)arg, + sizeof(args)) != 0) { + ret = -EFAULT; + break; + } + + mutex_lock(&instance->completion_mutex); + + DEBUG_TRACE(AWAIT_COMPLETION_LINE); + while ((instance->completion_remove == + instance->completion_insert) + && !instance->closing) { + int rc; + DEBUG_TRACE(AWAIT_COMPLETION_LINE); + mutex_unlock(&instance->completion_mutex); + rc = down_interruptible(&instance->insert_event); + mutex_lock(&instance->completion_mutex); + if (rc != 0) { + DEBUG_TRACE(AWAIT_COMPLETION_LINE); + vchiq_log_info(vchiq_arm_log_level, + "AWAIT_COMPLETION interrupted"); + ret = -EINTR; + break; + } + } + DEBUG_TRACE(AWAIT_COMPLETION_LINE); + + /* A read memory barrier is needed to stop prefetch of a stale + ** completion record + */ + rmb(); + + if (ret == 0) { + int msgbufcount = args.msgbufcount; + for (ret = 0; ret < args.count; ret++) { + VCHIQ_COMPLETION_DATA_T *completion; + VCHIQ_SERVICE_T *service; + USER_SERVICE_T *user_service; + VCHIQ_HEADER_T *header; + if (instance->completion_remove == + instance->completion_insert) + break; + completion = &instance->completions[ + instance->completion_remove & + (MAX_COMPLETIONS - 1)]; + + service = completion->service_userdata; + user_service = service->base.userdata; + completion->service_userdata = + user_service->userdata; + + header = completion->header; + if (header) { + void __user *msgbuf; + int msglen; + + msglen = header->size + + sizeof(VCHIQ_HEADER_T); + /* This must be a VCHIQ-style service */ + if (args.msgbufsize < msglen) { + vchiq_log_error( + vchiq_arm_log_level, + "header %x: msgbufsize" + " %x < msglen %x", + (unsigned int)header, + args.msgbufsize, + msglen); + WARN(1, "invalid message " + "size\n"); + if (ret == 0) + ret = -EMSGSIZE; + break; + } + if (msgbufcount <= 0) + /* Stall here for lack of a + ** buffer for the message. */ + break; + /* Get the pointer from user space */ + msgbufcount--; + if (copy_from_user(&msgbuf, + (const void __user *) + &args.msgbufs[msgbufcount], + sizeof(msgbuf)) != 0) { + if (ret == 0) + ret = -EFAULT; + break; + } + + /* Copy the message to user space */ + if (copy_to_user(msgbuf, header, + msglen) != 0) { + if (ret == 0) + ret = -EFAULT; + break; + } + + /* Now it has been copied, the message + ** can be released. */ + vchiq_release_message(service->handle, + header); + + /* The completion must point to the + ** msgbuf. */ + completion->header = msgbuf; + } + + if ((completion->reason == + VCHIQ_SERVICE_CLOSED) && + !instance->use_close_delivered) + unlock_service(service); + + if (copy_to_user((void __user *)( + (size_t)args.buf + + ret * sizeof(VCHIQ_COMPLETION_DATA_T)), + completion, + sizeof(VCHIQ_COMPLETION_DATA_T)) != 0) { + if (ret == 0) + ret = -EFAULT; + break; + } + + instance->completion_remove++; + } + + if (msgbufcount != args.msgbufcount) { + if (copy_to_user((void __user *) + &((VCHIQ_AWAIT_COMPLETION_T *)arg)-> + msgbufcount, + &msgbufcount, + sizeof(msgbufcount)) != 0) { + ret = -EFAULT; + } + } + } + + if (ret != 0) + up(&instance->remove_event); + mutex_unlock(&instance->completion_mutex); + DEBUG_TRACE(AWAIT_COMPLETION_LINE); + } break; + + case VCHIQ_IOC_DEQUEUE_MESSAGE: { + VCHIQ_DEQUEUE_MESSAGE_T args; + USER_SERVICE_T *user_service; + VCHIQ_HEADER_T *header; + + DEBUG_TRACE(DEQUEUE_MESSAGE_LINE); + if (copy_from_user + (&args, (const void __user *)arg, + sizeof(args)) != 0) { + ret = -EFAULT; + break; + } + service = find_service_for_instance(instance, args.handle); + if (!service) { + ret = -EINVAL; + break; + } + user_service = (USER_SERVICE_T *)service->base.userdata; + if (user_service->is_vchi == 0) { + ret = -EINVAL; + break; + } + + spin_lock(&msg_queue_spinlock); + if (user_service->msg_remove == user_service->msg_insert) { + if (!args.blocking) { + spin_unlock(&msg_queue_spinlock); + DEBUG_TRACE(DEQUEUE_MESSAGE_LINE); + ret = -EWOULDBLOCK; + break; + } + user_service->dequeue_pending = 1; + do { + spin_unlock(&msg_queue_spinlock); + DEBUG_TRACE(DEQUEUE_MESSAGE_LINE); + if (down_interruptible( + &user_service->insert_event) != 0) { + vchiq_log_info(vchiq_arm_log_level, + "DEQUEUE_MESSAGE interrupted"); + ret = -EINTR; + break; + } + spin_lock(&msg_queue_spinlock); + } while (user_service->msg_remove == + user_service->msg_insert); + + if (ret) + break; + } + + BUG_ON((int)(user_service->msg_insert - + user_service->msg_remove) < 0); + + header = user_service->msg_queue[user_service->msg_remove & + (MSG_QUEUE_SIZE - 1)]; + user_service->msg_remove++; + spin_unlock(&msg_queue_spinlock); + + up(&user_service->remove_event); + if (header == NULL) + ret = -ENOTCONN; + else if (header->size <= args.bufsize) { + /* Copy to user space if msgbuf is not NULL */ + if ((args.buf == NULL) || + (copy_to_user((void __user *)args.buf, + header->data, + header->size) == 0)) { + ret = header->size; + vchiq_release_message( + service->handle, + header); + } else + ret = -EFAULT; + } else { + vchiq_log_error(vchiq_arm_log_level, + "header %x: bufsize %x < size %x", + (unsigned int)header, args.bufsize, + header->size); + WARN(1, "invalid size\n"); + ret = -EMSGSIZE; + } + DEBUG_TRACE(DEQUEUE_MESSAGE_LINE); + } break; + + case VCHIQ_IOC_GET_CLIENT_ID: { + VCHIQ_SERVICE_HANDLE_T handle = (VCHIQ_SERVICE_HANDLE_T)arg; + + ret = vchiq_get_client_id(handle); + } break; + + case VCHIQ_IOC_GET_CONFIG: { + VCHIQ_GET_CONFIG_T args; + VCHIQ_CONFIG_T config; + + if (copy_from_user(&args, (const void __user *)arg, + sizeof(args)) != 0) { + ret = -EFAULT; + break; + } + if (args.config_size > sizeof(config)) { + ret = -EINVAL; + break; + } + status = vchiq_get_config(instance, args.config_size, &config); + if (status == VCHIQ_SUCCESS) { + if (copy_to_user((void __user *)args.pconfig, + &config, args.config_size) != 0) { + ret = -EFAULT; + break; + } + } + } break; + + case VCHIQ_IOC_SET_SERVICE_OPTION: { + VCHIQ_SET_SERVICE_OPTION_T args; + + if (copy_from_user( + &args, (const void __user *)arg, + sizeof(args)) != 0) { + ret = -EFAULT; + break; + } + + service = find_service_for_instance(instance, args.handle); + if (!service) { + ret = -EINVAL; + break; + } + + status = vchiq_set_service_option( + args.handle, args.option, args.value); + } break; + + case VCHIQ_IOC_DUMP_PHYS_MEM: { + VCHIQ_DUMP_MEM_T args; + + if (copy_from_user + (&args, (const void __user *)arg, + sizeof(args)) != 0) { + ret = -EFAULT; + break; + } + dump_phys_mem(args.virt_addr, args.num_bytes); + } break; + + case VCHIQ_IOC_LIB_VERSION: { + unsigned int lib_version = (unsigned int)arg; + + if (lib_version < VCHIQ_VERSION_MIN) + ret = -EINVAL; + else if (lib_version >= VCHIQ_VERSION_CLOSE_DELIVERED) + instance->use_close_delivered = 1; + } break; + + case VCHIQ_IOC_CLOSE_DELIVERED: { + VCHIQ_SERVICE_HANDLE_T handle = (VCHIQ_SERVICE_HANDLE_T)arg; + + service = find_closed_service_for_instance(instance, handle); + if (service != NULL) { + USER_SERVICE_T *user_service = + (USER_SERVICE_T *)service->base.userdata; + close_delivered(user_service); + } + else + ret = -EINVAL; + } break; + + default: + ret = -ENOTTY; + break; + } + + if (service) + unlock_service(service); + + if (ret == 0) { + if (status == VCHIQ_ERROR) + ret = -EIO; + else if (status == VCHIQ_RETRY) + ret = -EINTR; + } + + if ((status == VCHIQ_SUCCESS) && (ret < 0) && (ret != -EINTR) && + (ret != -EWOULDBLOCK)) + vchiq_log_info(vchiq_arm_log_level, + " ioctl instance %lx, cmd %s -> status %d, %ld", + (unsigned long)instance, + (_IOC_NR(cmd) <= VCHIQ_IOC_MAX) ? + ioctl_names[_IOC_NR(cmd)] : + "", + status, ret); + else + vchiq_log_trace(vchiq_arm_log_level, + " ioctl instance %lx, cmd %s -> status %d, %ld", + (unsigned long)instance, + (_IOC_NR(cmd) <= VCHIQ_IOC_MAX) ? + ioctl_names[_IOC_NR(cmd)] : + "", + status, ret); + + return ret; +} + +/**************************************************************************** +* +* vchiq_open +* +***************************************************************************/ + +static int +vchiq_open(struct inode *inode, struct file *file) +{ + int dev = iminor(inode) & 0x0f; + vchiq_log_info(vchiq_arm_log_level, "vchiq_open"); + switch (dev) { + case VCHIQ_MINOR: { + int ret; + VCHIQ_STATE_T *state = vchiq_get_state(); + VCHIQ_INSTANCE_T instance; + + if (!state) { + vchiq_log_error(vchiq_arm_log_level, + "vchiq has no connection to VideoCore"); + return -ENOTCONN; + } + + instance = kzalloc(sizeof(*instance), GFP_KERNEL); + if (!instance) + return -ENOMEM; + + instance->state = state; + instance->pid = current->tgid; + + ret = vchiq_debugfs_add_instance(instance); + if (ret != 0) { + kfree(instance); + return ret; + } + + sema_init(&instance->insert_event, 0); + sema_init(&instance->remove_event, 0); + mutex_init(&instance->completion_mutex); + mutex_init(&instance->bulk_waiter_list_mutex); + INIT_LIST_HEAD(&instance->bulk_waiter_list); + + file->private_data = instance; + } break; + + default: + vchiq_log_error(vchiq_arm_log_level, + "Unknown minor device: %d", dev); + return -ENXIO; + } + + return 0; +} + +/**************************************************************************** +* +* vchiq_release +* +***************************************************************************/ + +static int +vchiq_release(struct inode *inode, struct file *file) +{ + int dev = iminor(inode) & 0x0f; + int ret = 0; + switch (dev) { + case VCHIQ_MINOR: { + VCHIQ_INSTANCE_T instance = file->private_data; + VCHIQ_STATE_T *state = vchiq_get_state(); + VCHIQ_SERVICE_T *service; + int i; + + vchiq_log_info(vchiq_arm_log_level, + "vchiq_release: instance=%lx", + (unsigned long)instance); + + if (!state) { + ret = -EPERM; + goto out; + } + + /* Ensure videocore is awake to allow termination. */ + vchiq_use_internal(instance->state, NULL, + USE_TYPE_VCHIQ); + + mutex_lock(&instance->completion_mutex); + + /* Wake the completion thread and ask it to exit */ + instance->closing = 1; + up(&instance->insert_event); + + mutex_unlock(&instance->completion_mutex); + + /* Wake the slot handler if the completion queue is full. */ + up(&instance->remove_event); + + /* Mark all services for termination... */ + i = 0; + while ((service = next_service_by_instance(state, instance, + &i)) != NULL) { + USER_SERVICE_T *user_service = service->base.userdata; + + /* Wake the slot handler if the msg queue is full. */ + up(&user_service->remove_event); + + vchiq_terminate_service_internal(service); + unlock_service(service); + } + + /* ...and wait for them to die */ + i = 0; + while ((service = next_service_by_instance(state, instance, &i)) + != NULL) { + USER_SERVICE_T *user_service = service->base.userdata; + + down(&service->remove_event); + + BUG_ON(service->srvstate != VCHIQ_SRVSTATE_FREE); + + spin_lock(&msg_queue_spinlock); + + while (user_service->msg_remove != + user_service->msg_insert) { + VCHIQ_HEADER_T *header = user_service-> + msg_queue[user_service->msg_remove & + (MSG_QUEUE_SIZE - 1)]; + user_service->msg_remove++; + spin_unlock(&msg_queue_spinlock); + + if (header) + vchiq_release_message( + service->handle, + header); + spin_lock(&msg_queue_spinlock); + } + + spin_unlock(&msg_queue_spinlock); + + unlock_service(service); + } + + /* Release any closed services */ + while (instance->completion_remove != + instance->completion_insert) { + VCHIQ_COMPLETION_DATA_T *completion; + VCHIQ_SERVICE_T *service; + completion = &instance->completions[ + instance->completion_remove & + (MAX_COMPLETIONS - 1)]; + service = completion->service_userdata; + if (completion->reason == VCHIQ_SERVICE_CLOSED) + { + USER_SERVICE_T *user_service = + service->base.userdata; + + /* Wake any blocked user-thread */ + if (instance->use_close_delivered) + up(&user_service->close_event); + unlock_service(service); + } + instance->completion_remove++; + } + + /* Release the PEER service count. */ + vchiq_release_internal(instance->state, NULL); + + { + struct list_head *pos, *next; + list_for_each_safe(pos, next, + &instance->bulk_waiter_list) { + struct bulk_waiter_node *waiter; + waiter = list_entry(pos, + struct bulk_waiter_node, + list); + list_del(pos); + vchiq_log_info(vchiq_arm_log_level, + "bulk_waiter - cleaned up %x " + "for pid %d", + (unsigned int)waiter, waiter->pid); + kfree(waiter); + } + } + + vchiq_debugfs_remove_instance(instance); + + kfree(instance); + file->private_data = NULL; + } break; + + default: + vchiq_log_error(vchiq_arm_log_level, + "Unknown minor device: %d", dev); + ret = -ENXIO; + } + +out: + return ret; +} + +/**************************************************************************** +* +* vchiq_dump +* +***************************************************************************/ + +void +vchiq_dump(void *dump_context, const char *str, int len) +{ + DUMP_CONTEXT_T *context = (DUMP_CONTEXT_T *)dump_context; + + if (context->actual < context->space) { + int copy_bytes; + if (context->offset > 0) { + int skip_bytes = min(len, (int)context->offset); + str += skip_bytes; + len -= skip_bytes; + context->offset -= skip_bytes; + if (context->offset > 0) + return; + } + copy_bytes = min(len, (int)(context->space - context->actual)); + if (copy_bytes == 0) + return; + if (copy_to_user(context->buf + context->actual, str, + copy_bytes)) + context->actual = -EFAULT; + context->actual += copy_bytes; + len -= copy_bytes; + + /* If tne terminating NUL is included in the length, then it + ** marks the end of a line and should be replaced with a + ** carriage return. */ + if ((len == 0) && (str[copy_bytes - 1] == '\0')) { + char cr = '\n'; + if (copy_to_user(context->buf + context->actual - 1, + &cr, 1)) + context->actual = -EFAULT; + } + } +} + +/**************************************************************************** +* +* vchiq_dump_platform_instance_state +* +***************************************************************************/ + +void +vchiq_dump_platform_instances(void *dump_context) +{ + VCHIQ_STATE_T *state = vchiq_get_state(); + char buf[80]; + int len; + int i; + + /* There is no list of instances, so instead scan all services, + marking those that have been dumped. */ + + for (i = 0; i < state->unused_service; i++) { + VCHIQ_SERVICE_T *service = state->services[i]; + VCHIQ_INSTANCE_T instance; + + if (service && (service->base.callback == service_callback)) { + instance = service->instance; + if (instance) + instance->mark = 0; + } + } + + for (i = 0; i < state->unused_service; i++) { + VCHIQ_SERVICE_T *service = state->services[i]; + VCHIQ_INSTANCE_T instance; + + if (service && (service->base.callback == service_callback)) { + instance = service->instance; + if (instance && !instance->mark) { + len = snprintf(buf, sizeof(buf), + "Instance %x: pid %d,%s completions " + "%d/%d", + (unsigned int)instance, instance->pid, + instance->connected ? " connected, " : + "", + instance->completion_insert - + instance->completion_remove, + MAX_COMPLETIONS); + + vchiq_dump(dump_context, buf, len + 1); + + instance->mark = 1; + } + } + } +} + +/**************************************************************************** +* +* vchiq_dump_platform_service_state +* +***************************************************************************/ + +void +vchiq_dump_platform_service_state(void *dump_context, VCHIQ_SERVICE_T *service) +{ + USER_SERVICE_T *user_service = (USER_SERVICE_T *)service->base.userdata; + char buf[80]; + int len; + + len = snprintf(buf, sizeof(buf), " instance %x", + (unsigned int)service->instance); + + if ((service->base.callback == service_callback) && + user_service->is_vchi) { + len += snprintf(buf + len, sizeof(buf) - len, + ", %d/%d messages", + user_service->msg_insert - user_service->msg_remove, + MSG_QUEUE_SIZE); + + if (user_service->dequeue_pending) + len += snprintf(buf + len, sizeof(buf) - len, + " (dequeue pending)"); + } + + vchiq_dump(dump_context, buf, len + 1); +} + +/**************************************************************************** +* +* dump_user_mem +* +***************************************************************************/ + +static void +dump_phys_mem(void *virt_addr, uint32_t num_bytes) +{ + int rc; + uint8_t *end_virt_addr = virt_addr + num_bytes; + int num_pages; + int offset; + int end_offset; + int page_idx; + int prev_idx; + struct page *page; + struct page **pages; + uint8_t *kmapped_virt_ptr; + + /* Align virtAddr and endVirtAddr to 16 byte boundaries. */ + + virt_addr = (void *)((unsigned long)virt_addr & ~0x0fuL); + end_virt_addr = (void *)(((unsigned long)end_virt_addr + 15uL) & + ~0x0fuL); + + offset = (int)(long)virt_addr & (PAGE_SIZE - 1); + end_offset = (int)(long)end_virt_addr & (PAGE_SIZE - 1); + + num_pages = (offset + num_bytes + PAGE_SIZE - 1) / PAGE_SIZE; + + pages = kmalloc(sizeof(struct page *) * num_pages, GFP_KERNEL); + if (pages == NULL) { + vchiq_log_error(vchiq_arm_log_level, + "Unable to allocation memory for %d pages\n", + num_pages); + return; + } + + down_read(¤t->mm->mmap_sem); + rc = get_user_pages(current, /* task */ + current->mm, /* mm */ + (unsigned long)virt_addr, /* start */ + num_pages, /* len */ + 0, /* write */ + 0, /* force */ + pages, /* pages (array of page pointers) */ + NULL); /* vmas */ + up_read(¤t->mm->mmap_sem); + + prev_idx = -1; + page = NULL; + + while (offset < end_offset) { + + int page_offset = offset % PAGE_SIZE; + page_idx = offset / PAGE_SIZE; + + if (page_idx != prev_idx) { + + if (page != NULL) + kunmap(page); + page = pages[page_idx]; + kmapped_virt_ptr = kmap(page); + + prev_idx = page_idx; + } + + if (vchiq_arm_log_level >= VCHIQ_LOG_TRACE) + vchiq_log_dump_mem("ph", + (uint32_t)(unsigned long)&kmapped_virt_ptr[ + page_offset], + &kmapped_virt_ptr[page_offset], 16); + + offset += 16; + } + if (page != NULL) + kunmap(page); + + for (page_idx = 0; page_idx < num_pages; page_idx++) + page_cache_release(pages[page_idx]); + + kfree(pages); +} + +/**************************************************************************** +* +* vchiq_read +* +***************************************************************************/ + +static ssize_t +vchiq_read(struct file *file, char __user *buf, + size_t count, loff_t *ppos) +{ + DUMP_CONTEXT_T context; + context.buf = buf; + context.actual = 0; + context.space = count; + context.offset = *ppos; + + vchiq_dump_state(&context, &g_state); + + *ppos += context.actual; + + return context.actual; +} + +VCHIQ_STATE_T * +vchiq_get_state(void) +{ + + if (g_state.remote == NULL) + printk(KERN_ERR "%s: g_state.remote == NULL\n", __func__); + else if (g_state.remote->initialised != 1) + printk(KERN_NOTICE "%s: g_state.remote->initialised != 1 (%d)\n", + __func__, g_state.remote->initialised); + + return ((g_state.remote != NULL) && + (g_state.remote->initialised == 1)) ? &g_state : NULL; +} + +static const struct file_operations +vchiq_fops = { + .owner = THIS_MODULE, + .unlocked_ioctl = vchiq_ioctl, + .open = vchiq_open, + .release = vchiq_release, + .read = vchiq_read +}; + +/* + * Autosuspend related functionality + */ + +int +vchiq_videocore_wanted(VCHIQ_STATE_T *state) +{ + VCHIQ_ARM_STATE_T *arm_state = vchiq_platform_get_arm_state(state); + if (!arm_state) + /* autosuspend not supported - always return wanted */ + return 1; + else if (arm_state->blocked_count) + return 1; + else if (!arm_state->videocore_use_count) + /* usage count zero - check for override unless we're forcing */ + if (arm_state->resume_blocked) + return 0; + else + return vchiq_platform_videocore_wanted(state); + else + /* non-zero usage count - videocore still required */ + return 1; +} + +static VCHIQ_STATUS_T +vchiq_keepalive_vchiq_callback(VCHIQ_REASON_T reason, + VCHIQ_HEADER_T *header, + VCHIQ_SERVICE_HANDLE_T service_user, + void *bulk_user) +{ + vchiq_log_error(vchiq_susp_log_level, + "%s callback reason %d", __func__, reason); + return 0; +} + +static int +vchiq_keepalive_thread_func(void *v) +{ + VCHIQ_STATE_T *state = (VCHIQ_STATE_T *) v; + VCHIQ_ARM_STATE_T *arm_state = vchiq_platform_get_arm_state(state); + + VCHIQ_STATUS_T status; + VCHIQ_INSTANCE_T instance; + VCHIQ_SERVICE_HANDLE_T ka_handle; + + VCHIQ_SERVICE_PARAMS_T params = { + .fourcc = VCHIQ_MAKE_FOURCC('K', 'E', 'E', 'P'), + .callback = vchiq_keepalive_vchiq_callback, + .version = KEEPALIVE_VER, + .version_min = KEEPALIVE_VER_MIN + }; + + status = vchiq_initialise(&instance); + if (status != VCHIQ_SUCCESS) { + vchiq_log_error(vchiq_susp_log_level, + "%s vchiq_initialise failed %d", __func__, status); + goto exit; + } + + status = vchiq_connect(instance); + if (status != VCHIQ_SUCCESS) { + vchiq_log_error(vchiq_susp_log_level, + "%s vchiq_connect failed %d", __func__, status); + goto shutdown; + } + + status = vchiq_add_service(instance, ¶ms, &ka_handle); + if (status != VCHIQ_SUCCESS) { + vchiq_log_error(vchiq_susp_log_level, + "%s vchiq_open_service failed %d", __func__, status); + goto shutdown; + } + + while (1) { + long rc = 0, uc = 0; + if (wait_for_completion_interruptible(&arm_state->ka_evt) + != 0) { + vchiq_log_error(vchiq_susp_log_level, + "%s interrupted", __func__); + flush_signals(current); + continue; + } + + /* read and clear counters. Do release_count then use_count to + * prevent getting more releases than uses */ + rc = atomic_xchg(&arm_state->ka_release_count, 0); + uc = atomic_xchg(&arm_state->ka_use_count, 0); + + /* Call use/release service the requisite number of times. + * Process use before release so use counts don't go negative */ + while (uc--) { + atomic_inc(&arm_state->ka_use_ack_count); + status = vchiq_use_service(ka_handle); + if (status != VCHIQ_SUCCESS) { + vchiq_log_error(vchiq_susp_log_level, + "%s vchiq_use_service error %d", + __func__, status); + } + } + while (rc--) { + status = vchiq_release_service(ka_handle); + if (status != VCHIQ_SUCCESS) { + vchiq_log_error(vchiq_susp_log_level, + "%s vchiq_release_service error %d", + __func__, status); + } + } + } + +shutdown: + vchiq_shutdown(instance); +exit: + return 0; +} + + + +VCHIQ_STATUS_T +vchiq_arm_init_state(VCHIQ_STATE_T *state, VCHIQ_ARM_STATE_T *arm_state) +{ + VCHIQ_STATUS_T status = VCHIQ_SUCCESS; + + if (arm_state) { + rwlock_init(&arm_state->susp_res_lock); + + init_completion(&arm_state->ka_evt); + atomic_set(&arm_state->ka_use_count, 0); + atomic_set(&arm_state->ka_use_ack_count, 0); + atomic_set(&arm_state->ka_release_count, 0); + + init_completion(&arm_state->vc_suspend_complete); + + init_completion(&arm_state->vc_resume_complete); + /* Initialise to 'done' state. We only want to block on resume + * completion while videocore is suspended. */ + set_resume_state(arm_state, VC_RESUME_RESUMED); + + init_completion(&arm_state->resume_blocker); + /* Initialise to 'done' state. We only want to block on this + * completion while resume is blocked */ + complete_all(&arm_state->resume_blocker); + + init_completion(&arm_state->blocked_blocker); + /* Initialise to 'done' state. We only want to block on this + * completion while things are waiting on the resume blocker */ + complete_all(&arm_state->blocked_blocker); + + arm_state->suspend_timer_timeout = SUSPEND_TIMER_TIMEOUT_MS; + arm_state->suspend_timer_running = 0; + init_timer(&arm_state->suspend_timer); + arm_state->suspend_timer.data = (unsigned long)(state); + arm_state->suspend_timer.function = suspend_timer_callback; + + arm_state->first_connect = 0; + + } + return status; +} + +/* +** Functions to modify the state variables; +** set_suspend_state +** set_resume_state +** +** There are more state variables than we might like, so ensure they remain in +** step. Suspend and resume state are maintained separately, since most of +** these state machines can operate independently. However, there are a few +** states where state transitions in one state machine cause a reset to the +** other state machine. In addition, there are some completion events which +** need to occur on state machine reset and end-state(s), so these are also +** dealt with in these functions. +** +** In all states we set the state variable according to the input, but in some +** cases we perform additional steps outlined below; +** +** VC_SUSPEND_IDLE - Initialise the suspend completion at the same time. +** The suspend completion is completed after any suspend +** attempt. When we reset the state machine we also reset +** the completion. This reset occurs when videocore is +** resumed, and also if we initiate suspend after a suspend +** failure. +** +** VC_SUSPEND_IN_PROGRESS - This state is considered the point of no return for +** suspend - ie from this point on we must try to suspend +** before resuming can occur. We therefore also reset the +** resume state machine to VC_RESUME_IDLE in this state. +** +** VC_SUSPEND_SUSPENDED - Suspend has completed successfully. Also call +** complete_all on the suspend completion to notify +** anything waiting for suspend to happen. +** +** VC_SUSPEND_REJECTED - Videocore rejected suspend. Videocore will also +** initiate resume, so no need to alter resume state. +** We call complete_all on the suspend completion to notify +** of suspend rejection. +** +** VC_SUSPEND_FAILED - We failed to initiate videocore suspend. We notify the +** suspend completion and reset the resume state machine. +** +** VC_RESUME_IDLE - Initialise the resume completion at the same time. The +** resume completion is in it's 'done' state whenever +** videcore is running. Therfore, the VC_RESUME_IDLE state +** implies that videocore is suspended. +** Hence, any thread which needs to wait until videocore is +** running can wait on this completion - it will only block +** if videocore is suspended. +** +** VC_RESUME_RESUMED - Resume has completed successfully. Videocore is running. +** Call complete_all on the resume completion to unblock +** any threads waiting for resume. Also reset the suspend +** state machine to it's idle state. +** +** VC_RESUME_FAILED - Currently unused - no mechanism to fail resume exists. +*/ + +void +set_suspend_state(VCHIQ_ARM_STATE_T *arm_state, + enum vc_suspend_status new_state) +{ + /* set the state in all cases */ + arm_state->vc_suspend_state = new_state; + + /* state specific additional actions */ + switch (new_state) { + case VC_SUSPEND_FORCE_CANCELED: + complete_all(&arm_state->vc_suspend_complete); + break; + case VC_SUSPEND_REJECTED: + complete_all(&arm_state->vc_suspend_complete); + break; + case VC_SUSPEND_FAILED: + complete_all(&arm_state->vc_suspend_complete); + arm_state->vc_resume_state = VC_RESUME_RESUMED; + complete_all(&arm_state->vc_resume_complete); + break; + case VC_SUSPEND_IDLE: + reinit_completion(&arm_state->vc_suspend_complete); + break; + case VC_SUSPEND_REQUESTED: + break; + case VC_SUSPEND_IN_PROGRESS: + set_resume_state(arm_state, VC_RESUME_IDLE); + break; + case VC_SUSPEND_SUSPENDED: + complete_all(&arm_state->vc_suspend_complete); + break; + default: + BUG(); + break; + } +} + +void +set_resume_state(VCHIQ_ARM_STATE_T *arm_state, + enum vc_resume_status new_state) +{ + /* set the state in all cases */ + arm_state->vc_resume_state = new_state; + + /* state specific additional actions */ + switch (new_state) { + case VC_RESUME_FAILED: + break; + case VC_RESUME_IDLE: + reinit_completion(&arm_state->vc_resume_complete); + break; + case VC_RESUME_REQUESTED: + break; + case VC_RESUME_IN_PROGRESS: + break; + case VC_RESUME_RESUMED: + complete_all(&arm_state->vc_resume_complete); + set_suspend_state(arm_state, VC_SUSPEND_IDLE); + break; + default: + BUG(); + break; + } +} + + +/* should be called with the write lock held */ +inline void +start_suspend_timer(VCHIQ_ARM_STATE_T *arm_state) +{ + del_timer(&arm_state->suspend_timer); + arm_state->suspend_timer.expires = jiffies + + msecs_to_jiffies(arm_state-> + suspend_timer_timeout); + add_timer(&arm_state->suspend_timer); + arm_state->suspend_timer_running = 1; +} + +/* should be called with the write lock held */ +static inline void +stop_suspend_timer(VCHIQ_ARM_STATE_T *arm_state) +{ + if (arm_state->suspend_timer_running) { + del_timer(&arm_state->suspend_timer); + arm_state->suspend_timer_running = 0; + } +} + +static inline int +need_resume(VCHIQ_STATE_T *state) +{ + VCHIQ_ARM_STATE_T *arm_state = vchiq_platform_get_arm_state(state); + return (arm_state->vc_suspend_state > VC_SUSPEND_IDLE) && + (arm_state->vc_resume_state < VC_RESUME_REQUESTED) && + vchiq_videocore_wanted(state); +} + +static int +block_resume(VCHIQ_ARM_STATE_T *arm_state) +{ + int status = VCHIQ_SUCCESS; + const unsigned long timeout_val = + msecs_to_jiffies(FORCE_SUSPEND_TIMEOUT_MS); + int resume_count = 0; + + /* Allow any threads which were blocked by the last force suspend to + * complete if they haven't already. Only give this one shot; if + * blocked_count is incremented after blocked_blocker is completed + * (which only happens when blocked_count hits 0) then those threads + * will have to wait until next time around */ + if (arm_state->blocked_count) { + reinit_completion(&arm_state->blocked_blocker); + write_unlock_bh(&arm_state->susp_res_lock); + vchiq_log_info(vchiq_susp_log_level, "%s wait for previously " + "blocked clients", __func__); + if (wait_for_completion_interruptible_timeout( + &arm_state->blocked_blocker, timeout_val) + <= 0) { + vchiq_log_error(vchiq_susp_log_level, "%s wait for " + "previously blocked clients failed" , __func__); + status = VCHIQ_ERROR; + write_lock_bh(&arm_state->susp_res_lock); + goto out; + } + vchiq_log_info(vchiq_susp_log_level, "%s previously blocked " + "clients resumed", __func__); + write_lock_bh(&arm_state->susp_res_lock); + } + + /* We need to wait for resume to complete if it's in process */ + while (arm_state->vc_resume_state != VC_RESUME_RESUMED && + arm_state->vc_resume_state > VC_RESUME_IDLE) { + if (resume_count > 1) { + status = VCHIQ_ERROR; + vchiq_log_error(vchiq_susp_log_level, "%s waited too " + "many times for resume" , __func__); + goto out; + } + write_unlock_bh(&arm_state->susp_res_lock); + vchiq_log_info(vchiq_susp_log_level, "%s wait for resume", + __func__); + if (wait_for_completion_interruptible_timeout( + &arm_state->vc_resume_complete, timeout_val) + <= 0) { + vchiq_log_error(vchiq_susp_log_level, "%s wait for " + "resume failed (%s)", __func__, + resume_state_names[arm_state->vc_resume_state + + VC_RESUME_NUM_OFFSET]); + status = VCHIQ_ERROR; + write_lock_bh(&arm_state->susp_res_lock); + goto out; + } + vchiq_log_info(vchiq_susp_log_level, "%s resumed", __func__); + write_lock_bh(&arm_state->susp_res_lock); + resume_count++; + } + reinit_completion(&arm_state->resume_blocker); + arm_state->resume_blocked = 1; + +out: + return status; +} + +static inline void +unblock_resume(VCHIQ_ARM_STATE_T *arm_state) +{ + complete_all(&arm_state->resume_blocker); + arm_state->resume_blocked = 0; +} + +/* Initiate suspend via slot handler. Should be called with the write lock + * held */ +VCHIQ_STATUS_T +vchiq_arm_vcsuspend(VCHIQ_STATE_T *state) +{ + VCHIQ_STATUS_T status = VCHIQ_ERROR; + VCHIQ_ARM_STATE_T *arm_state = vchiq_platform_get_arm_state(state); + + if (!arm_state) + goto out; + + vchiq_log_trace(vchiq_susp_log_level, "%s", __func__); + status = VCHIQ_SUCCESS; + + + switch (arm_state->vc_suspend_state) { + case VC_SUSPEND_REQUESTED: + vchiq_log_info(vchiq_susp_log_level, "%s: suspend already " + "requested", __func__); + break; + case VC_SUSPEND_IN_PROGRESS: + vchiq_log_info(vchiq_susp_log_level, "%s: suspend already in " + "progress", __func__); + break; + + default: + /* We don't expect to be in other states, so log but continue + * anyway */ + vchiq_log_error(vchiq_susp_log_level, + "%s unexpected suspend state %s", __func__, + suspend_state_names[arm_state->vc_suspend_state + + VC_SUSPEND_NUM_OFFSET]); + /* fall through */ + case VC_SUSPEND_REJECTED: + case VC_SUSPEND_FAILED: + /* Ensure any idle state actions have been run */ + set_suspend_state(arm_state, VC_SUSPEND_IDLE); + /* fall through */ + case VC_SUSPEND_IDLE: + vchiq_log_info(vchiq_susp_log_level, + "%s: suspending", __func__); + set_suspend_state(arm_state, VC_SUSPEND_REQUESTED); + /* kick the slot handler thread to initiate suspend */ + request_poll(state, NULL, 0); + break; + } + +out: + vchiq_log_trace(vchiq_susp_log_level, "%s exit %d", __func__, status); + return status; +} + +void +vchiq_platform_check_suspend(VCHIQ_STATE_T *state) +{ + VCHIQ_ARM_STATE_T *arm_state = vchiq_platform_get_arm_state(state); + int susp = 0; + + if (!arm_state) + goto out; + + vchiq_log_trace(vchiq_susp_log_level, "%s", __func__); + + write_lock_bh(&arm_state->susp_res_lock); + if (arm_state->vc_suspend_state == VC_SUSPEND_REQUESTED && + arm_state->vc_resume_state == VC_RESUME_RESUMED) { + set_suspend_state(arm_state, VC_SUSPEND_IN_PROGRESS); + susp = 1; + } + write_unlock_bh(&arm_state->susp_res_lock); + + if (susp) + vchiq_platform_suspend(state); + +out: + vchiq_log_trace(vchiq_susp_log_level, "%s exit", __func__); + return; +} + + +static void +output_timeout_error(VCHIQ_STATE_T *state) +{ + VCHIQ_ARM_STATE_T *arm_state = vchiq_platform_get_arm_state(state); + char service_err[50] = ""; + int vc_use_count = arm_state->videocore_use_count; + int active_services = state->unused_service; + int i; + + if (!arm_state->videocore_use_count) { + snprintf(service_err, 50, " Videocore usecount is 0"); + goto output_msg; + } + for (i = 0; i < active_services; i++) { + VCHIQ_SERVICE_T *service_ptr = state->services[i]; + if (service_ptr && service_ptr->service_use_count && + (service_ptr->srvstate != VCHIQ_SRVSTATE_FREE)) { + snprintf(service_err, 50, " %c%c%c%c(%d) service has " + "use count %d%s", VCHIQ_FOURCC_AS_4CHARS( + service_ptr->base.fourcc), + service_ptr->client_id, + service_ptr->service_use_count, + service_ptr->service_use_count == + vc_use_count ? "" : " (+ more)"); + break; + } + } + +output_msg: + vchiq_log_error(vchiq_susp_log_level, + "timed out waiting for vc suspend (%d).%s", + arm_state->autosuspend_override, service_err); + +} + +/* Try to get videocore into suspended state, regardless of autosuspend state. +** We don't actually force suspend, since videocore may get into a bad state +** if we force suspend at a bad time. Instead, we wait for autosuspend to +** determine a good point to suspend. If this doesn't happen within 100ms we +** report failure. +** +** Returns VCHIQ_SUCCESS if videocore suspended successfully, VCHIQ_RETRY if +** videocore failed to suspend in time or VCHIQ_ERROR if interrupted. +*/ +VCHIQ_STATUS_T +vchiq_arm_force_suspend(VCHIQ_STATE_T *state) +{ + VCHIQ_ARM_STATE_T *arm_state = vchiq_platform_get_arm_state(state); + VCHIQ_STATUS_T status = VCHIQ_ERROR; + long rc = 0; + int repeat = -1; + + if (!arm_state) + goto out; + + vchiq_log_trace(vchiq_susp_log_level, "%s", __func__); + + write_lock_bh(&arm_state->susp_res_lock); + + status = block_resume(arm_state); + if (status != VCHIQ_SUCCESS) + goto unlock; + if (arm_state->vc_suspend_state == VC_SUSPEND_SUSPENDED) { + /* Already suspended - just block resume and exit */ + vchiq_log_info(vchiq_susp_log_level, "%s already suspended", + __func__); + status = VCHIQ_SUCCESS; + goto unlock; + } else if (arm_state->vc_suspend_state <= VC_SUSPEND_IDLE) { + /* initiate suspend immediately in the case that we're waiting + * for the timeout */ + stop_suspend_timer(arm_state); + if (!vchiq_videocore_wanted(state)) { + vchiq_log_info(vchiq_susp_log_level, "%s videocore " + "idle, initiating suspend", __func__); + status = vchiq_arm_vcsuspend(state); + } else if (arm_state->autosuspend_override < + FORCE_SUSPEND_FAIL_MAX) { + vchiq_log_info(vchiq_susp_log_level, "%s letting " + "videocore go idle", __func__); + status = VCHIQ_SUCCESS; + } else { + vchiq_log_warning(vchiq_susp_log_level, "%s failed too " + "many times - attempting suspend", __func__); + status = vchiq_arm_vcsuspend(state); + } + } else { + vchiq_log_info(vchiq_susp_log_level, "%s videocore suspend " + "in progress - wait for completion", __func__); + status = VCHIQ_SUCCESS; + } + + /* Wait for suspend to happen due to system idle (not forced..) */ + if (status != VCHIQ_SUCCESS) + goto unblock_resume; + + do { + write_unlock_bh(&arm_state->susp_res_lock); + + rc = wait_for_completion_interruptible_timeout( + &arm_state->vc_suspend_complete, + msecs_to_jiffies(FORCE_SUSPEND_TIMEOUT_MS)); + + write_lock_bh(&arm_state->susp_res_lock); + if (rc < 0) { + vchiq_log_warning(vchiq_susp_log_level, "%s " + "interrupted waiting for suspend", __func__); + status = VCHIQ_ERROR; + goto unblock_resume; + } else if (rc == 0) { + if (arm_state->vc_suspend_state > VC_SUSPEND_IDLE) { + /* Repeat timeout once if in progress */ + if (repeat < 0) { + repeat = 1; + continue; + } + } + arm_state->autosuspend_override++; + output_timeout_error(state); + + status = VCHIQ_RETRY; + goto unblock_resume; + } + } while (0 < (repeat--)); + + /* Check and report state in case we need to abort ARM suspend */ + if (arm_state->vc_suspend_state != VC_SUSPEND_SUSPENDED) { + status = VCHIQ_RETRY; + vchiq_log_error(vchiq_susp_log_level, + "%s videocore suspend failed (state %s)", __func__, + suspend_state_names[arm_state->vc_suspend_state + + VC_SUSPEND_NUM_OFFSET]); + /* Reset the state only if it's still in an error state. + * Something could have already initiated another suspend. */ + if (arm_state->vc_suspend_state < VC_SUSPEND_IDLE) + set_suspend_state(arm_state, VC_SUSPEND_IDLE); + + goto unblock_resume; + } + + /* successfully suspended - unlock and exit */ + goto unlock; + +unblock_resume: + /* all error states need to unblock resume before exit */ + unblock_resume(arm_state); + +unlock: + write_unlock_bh(&arm_state->susp_res_lock); + +out: + vchiq_log_trace(vchiq_susp_log_level, "%s exit %d", __func__, status); + return status; +} + +void +vchiq_check_suspend(VCHIQ_STATE_T *state) +{ + VCHIQ_ARM_STATE_T *arm_state = vchiq_platform_get_arm_state(state); + + if (!arm_state) + goto out; + + vchiq_log_trace(vchiq_susp_log_level, "%s", __func__); + + write_lock_bh(&arm_state->susp_res_lock); + if (arm_state->vc_suspend_state != VC_SUSPEND_SUSPENDED && + arm_state->first_connect && + !vchiq_videocore_wanted(state)) { + vchiq_arm_vcsuspend(state); + } + write_unlock_bh(&arm_state->susp_res_lock); + +out: + vchiq_log_trace(vchiq_susp_log_level, "%s exit", __func__); + return; +} + + +int +vchiq_arm_allow_resume(VCHIQ_STATE_T *state) +{ + VCHIQ_ARM_STATE_T *arm_state = vchiq_platform_get_arm_state(state); + int resume = 0; + int ret = -1; + + if (!arm_state) + goto out; + + vchiq_log_trace(vchiq_susp_log_level, "%s", __func__); + + write_lock_bh(&arm_state->susp_res_lock); + unblock_resume(arm_state); + resume = vchiq_check_resume(state); + write_unlock_bh(&arm_state->susp_res_lock); + + if (resume) { + if (wait_for_completion_interruptible( + &arm_state->vc_resume_complete) < 0) { + vchiq_log_error(vchiq_susp_log_level, + "%s interrupted", __func__); + /* failed, cannot accurately derive suspend + * state, so exit early. */ + goto out; + } + } + + read_lock_bh(&arm_state->susp_res_lock); + if (arm_state->vc_suspend_state == VC_SUSPEND_SUSPENDED) { + vchiq_log_info(vchiq_susp_log_level, + "%s: Videocore remains suspended", __func__); + } else { + vchiq_log_info(vchiq_susp_log_level, + "%s: Videocore resumed", __func__); + ret = 0; + } + read_unlock_bh(&arm_state->susp_res_lock); +out: + vchiq_log_trace(vchiq_susp_log_level, "%s exit %d", __func__, ret); + return ret; +} + +/* This function should be called with the write lock held */ +int +vchiq_check_resume(VCHIQ_STATE_T *state) +{ + VCHIQ_ARM_STATE_T *arm_state = vchiq_platform_get_arm_state(state); + int resume = 0; + + if (!arm_state) + goto out; + + vchiq_log_trace(vchiq_susp_log_level, "%s", __func__); + + if (need_resume(state)) { + set_resume_state(arm_state, VC_RESUME_REQUESTED); + request_poll(state, NULL, 0); + resume = 1; + } + +out: + vchiq_log_trace(vchiq_susp_log_level, "%s exit", __func__); + return resume; +} + +void +vchiq_platform_check_resume(VCHIQ_STATE_T *state) +{ + VCHIQ_ARM_STATE_T *arm_state = vchiq_platform_get_arm_state(state); + int res = 0; + + if (!arm_state) + goto out; + + vchiq_log_trace(vchiq_susp_log_level, "%s", __func__); + + write_lock_bh(&arm_state->susp_res_lock); + if (arm_state->wake_address == 0) { + vchiq_log_info(vchiq_susp_log_level, + "%s: already awake", __func__); + goto unlock; + } + if (arm_state->vc_resume_state == VC_RESUME_IN_PROGRESS) { + vchiq_log_info(vchiq_susp_log_level, + "%s: already resuming", __func__); + goto unlock; + } + + if (arm_state->vc_resume_state == VC_RESUME_REQUESTED) { + set_resume_state(arm_state, VC_RESUME_IN_PROGRESS); + res = 1; + } else + vchiq_log_trace(vchiq_susp_log_level, + "%s: not resuming (resume state %s)", __func__, + resume_state_names[arm_state->vc_resume_state + + VC_RESUME_NUM_OFFSET]); + +unlock: + write_unlock_bh(&arm_state->susp_res_lock); + + if (res) + vchiq_platform_resume(state); + +out: + vchiq_log_trace(vchiq_susp_log_level, "%s exit", __func__); + return; + +} + + + +VCHIQ_STATUS_T +vchiq_use_internal(VCHIQ_STATE_T *state, VCHIQ_SERVICE_T *service, + enum USE_TYPE_E use_type) +{ + VCHIQ_ARM_STATE_T *arm_state = vchiq_platform_get_arm_state(state); + VCHIQ_STATUS_T ret = VCHIQ_SUCCESS; + char entity[16]; + int *entity_uc; + int local_uc, local_entity_uc; + + if (!arm_state) + goto out; + + vchiq_log_trace(vchiq_susp_log_level, "%s", __func__); + + if (use_type == USE_TYPE_VCHIQ) { + sprintf(entity, "VCHIQ: "); + entity_uc = &arm_state->peer_use_count; + } else if (service) { + sprintf(entity, "%c%c%c%c:%03d", + VCHIQ_FOURCC_AS_4CHARS(service->base.fourcc), + service->client_id); + entity_uc = &service->service_use_count; + } else { + vchiq_log_error(vchiq_susp_log_level, "%s null service " + "ptr", __func__); + ret = VCHIQ_ERROR; + goto out; + } + + write_lock_bh(&arm_state->susp_res_lock); + while (arm_state->resume_blocked) { + /* If we call 'use' while force suspend is waiting for suspend, + * then we're about to block the thread which the force is + * waiting to complete, so we're bound to just time out. In this + * case, set the suspend state such that the wait will be + * canceled, so we can complete as quickly as possible. */ + if (arm_state->resume_blocked && arm_state->vc_suspend_state == + VC_SUSPEND_IDLE) { + set_suspend_state(arm_state, VC_SUSPEND_FORCE_CANCELED); + break; + } + /* If suspend is already in progress then we need to block */ + if (!try_wait_for_completion(&arm_state->resume_blocker)) { + /* Indicate that there are threads waiting on the resume + * blocker. These need to be allowed to complete before + * a _second_ call to force suspend can complete, + * otherwise low priority threads might never actually + * continue */ + arm_state->blocked_count++; + write_unlock_bh(&arm_state->susp_res_lock); + vchiq_log_info(vchiq_susp_log_level, "%s %s resume " + "blocked - waiting...", __func__, entity); + if (wait_for_completion_killable( + &arm_state->resume_blocker) != 0) { + vchiq_log_error(vchiq_susp_log_level, "%s %s " + "wait for resume blocker interrupted", + __func__, entity); + ret = VCHIQ_ERROR; + write_lock_bh(&arm_state->susp_res_lock); + arm_state->blocked_count--; + write_unlock_bh(&arm_state->susp_res_lock); + goto out; + } + vchiq_log_info(vchiq_susp_log_level, "%s %s resume " + "unblocked", __func__, entity); + write_lock_bh(&arm_state->susp_res_lock); + if (--arm_state->blocked_count == 0) + complete_all(&arm_state->blocked_blocker); + } + } + + stop_suspend_timer(arm_state); + + local_uc = ++arm_state->videocore_use_count; + local_entity_uc = ++(*entity_uc); + + /* If there's a pending request which hasn't yet been serviced then + * just clear it. If we're past VC_SUSPEND_REQUESTED state then + * vc_resume_complete will block until we either resume or fail to + * suspend */ + if (arm_state->vc_suspend_state <= VC_SUSPEND_REQUESTED) + set_suspend_state(arm_state, VC_SUSPEND_IDLE); + + if ((use_type != USE_TYPE_SERVICE_NO_RESUME) && need_resume(state)) { + set_resume_state(arm_state, VC_RESUME_REQUESTED); + vchiq_log_info(vchiq_susp_log_level, + "%s %s count %d, state count %d", + __func__, entity, local_entity_uc, local_uc); + request_poll(state, NULL, 0); + } else + vchiq_log_trace(vchiq_susp_log_level, + "%s %s count %d, state count %d", + __func__, entity, *entity_uc, local_uc); + + + write_unlock_bh(&arm_state->susp_res_lock); + + /* Completion is in a done state when we're not suspended, so this won't + * block for the non-suspended case. */ + if (!try_wait_for_completion(&arm_state->vc_resume_complete)) { + vchiq_log_info(vchiq_susp_log_level, "%s %s wait for resume", + __func__, entity); + if (wait_for_completion_killable( + &arm_state->vc_resume_complete) != 0) { + vchiq_log_error(vchiq_susp_log_level, "%s %s wait for " + "resume interrupted", __func__, entity); + ret = VCHIQ_ERROR; + goto out; + } + vchiq_log_info(vchiq_susp_log_level, "%s %s resumed", __func__, + entity); + } + + if (ret == VCHIQ_SUCCESS) { + VCHIQ_STATUS_T status = VCHIQ_SUCCESS; + long ack_cnt = atomic_xchg(&arm_state->ka_use_ack_count, 0); + while (ack_cnt && (status == VCHIQ_SUCCESS)) { + /* Send the use notify to videocore */ + status = vchiq_send_remote_use_active(state); + if (status == VCHIQ_SUCCESS) + ack_cnt--; + else + atomic_add(ack_cnt, + &arm_state->ka_use_ack_count); + } + } + +out: + vchiq_log_trace(vchiq_susp_log_level, "%s exit %d", __func__, ret); + return ret; +} + +VCHIQ_STATUS_T +vchiq_release_internal(VCHIQ_STATE_T *state, VCHIQ_SERVICE_T *service) +{ + VCHIQ_ARM_STATE_T *arm_state = vchiq_platform_get_arm_state(state); + VCHIQ_STATUS_T ret = VCHIQ_SUCCESS; + char entity[16]; + int *entity_uc; + int local_uc, local_entity_uc; + + if (!arm_state) + goto out; + + vchiq_log_trace(vchiq_susp_log_level, "%s", __func__); + + if (service) { + sprintf(entity, "%c%c%c%c:%03d", + VCHIQ_FOURCC_AS_4CHARS(service->base.fourcc), + service->client_id); + entity_uc = &service->service_use_count; + } else { + sprintf(entity, "PEER: "); + entity_uc = &arm_state->peer_use_count; + } + + write_lock_bh(&arm_state->susp_res_lock); + if (!arm_state->videocore_use_count || !(*entity_uc)) { + /* Don't use BUG_ON - don't allow user thread to crash kernel */ + WARN_ON(!arm_state->videocore_use_count); + WARN_ON(!(*entity_uc)); + ret = VCHIQ_ERROR; + goto unlock; + } + local_uc = --arm_state->videocore_use_count; + local_entity_uc = --(*entity_uc); + + if (!vchiq_videocore_wanted(state)) { + if (vchiq_platform_use_suspend_timer() && + !arm_state->resume_blocked) { + /* Only use the timer if we're not trying to force + * suspend (=> resume_blocked) */ + start_suspend_timer(arm_state); + } else { + vchiq_log_info(vchiq_susp_log_level, + "%s %s count %d, state count %d - suspending", + __func__, entity, *entity_uc, + arm_state->videocore_use_count); + vchiq_arm_vcsuspend(state); + } + } else + vchiq_log_trace(vchiq_susp_log_level, + "%s %s count %d, state count %d", + __func__, entity, *entity_uc, + arm_state->videocore_use_count); + +unlock: + write_unlock_bh(&arm_state->susp_res_lock); + +out: + vchiq_log_trace(vchiq_susp_log_level, "%s exit %d", __func__, ret); + return ret; +} + +void +vchiq_on_remote_use(VCHIQ_STATE_T *state) +{ + VCHIQ_ARM_STATE_T *arm_state = vchiq_platform_get_arm_state(state); + vchiq_log_trace(vchiq_susp_log_level, "%s", __func__); + atomic_inc(&arm_state->ka_use_count); + complete(&arm_state->ka_evt); +} + +void +vchiq_on_remote_release(VCHIQ_STATE_T *state) +{ + VCHIQ_ARM_STATE_T *arm_state = vchiq_platform_get_arm_state(state); + vchiq_log_trace(vchiq_susp_log_level, "%s", __func__); + atomic_inc(&arm_state->ka_release_count); + complete(&arm_state->ka_evt); +} + +VCHIQ_STATUS_T +vchiq_use_service_internal(VCHIQ_SERVICE_T *service) +{ + return vchiq_use_internal(service->state, service, USE_TYPE_SERVICE); +} + +VCHIQ_STATUS_T +vchiq_release_service_internal(VCHIQ_SERVICE_T *service) +{ + return vchiq_release_internal(service->state, service); +} + +VCHIQ_DEBUGFS_NODE_T * +vchiq_instance_get_debugfs_node(VCHIQ_INSTANCE_T instance) +{ + return &instance->debugfs_node; +} + +int +vchiq_instance_get_use_count(VCHIQ_INSTANCE_T instance) +{ + VCHIQ_SERVICE_T *service; + int use_count = 0, i; + i = 0; + while ((service = next_service_by_instance(instance->state, + instance, &i)) != NULL) { + use_count += service->service_use_count; + unlock_service(service); + } + return use_count; +} + +int +vchiq_instance_get_pid(VCHIQ_INSTANCE_T instance) +{ + return instance->pid; +} + +int +vchiq_instance_get_trace(VCHIQ_INSTANCE_T instance) +{ + return instance->trace; +} + +void +vchiq_instance_set_trace(VCHIQ_INSTANCE_T instance, int trace) +{ + VCHIQ_SERVICE_T *service; + int i; + i = 0; + while ((service = next_service_by_instance(instance->state, + instance, &i)) != NULL) { + service->trace = trace; + unlock_service(service); + } + instance->trace = (trace != 0); +} + +static void suspend_timer_callback(unsigned long context) +{ + VCHIQ_STATE_T *state = (VCHIQ_STATE_T *)context; + VCHIQ_ARM_STATE_T *arm_state = vchiq_platform_get_arm_state(state); + if (!arm_state) + goto out; + vchiq_log_info(vchiq_susp_log_level, + "%s - suspend timer expired - check suspend", __func__); + vchiq_check_suspend(state); +out: + return; +} + +VCHIQ_STATUS_T +vchiq_use_service_no_resume(VCHIQ_SERVICE_HANDLE_T handle) +{ + VCHIQ_STATUS_T ret = VCHIQ_ERROR; + VCHIQ_SERVICE_T *service = find_service_by_handle(handle); + if (service) { + ret = vchiq_use_internal(service->state, service, + USE_TYPE_SERVICE_NO_RESUME); + unlock_service(service); + } + return ret; +} + +VCHIQ_STATUS_T +vchiq_use_service(VCHIQ_SERVICE_HANDLE_T handle) +{ + VCHIQ_STATUS_T ret = VCHIQ_ERROR; + VCHIQ_SERVICE_T *service = find_service_by_handle(handle); + if (service) { + ret = vchiq_use_internal(service->state, service, + USE_TYPE_SERVICE); + unlock_service(service); + } + return ret; +} + +VCHIQ_STATUS_T +vchiq_release_service(VCHIQ_SERVICE_HANDLE_T handle) +{ + VCHIQ_STATUS_T ret = VCHIQ_ERROR; + VCHIQ_SERVICE_T *service = find_service_by_handle(handle); + if (service) { + ret = vchiq_release_internal(service->state, service); + unlock_service(service); + } + return ret; +} + +void +vchiq_dump_service_use_state(VCHIQ_STATE_T *state) +{ + VCHIQ_ARM_STATE_T *arm_state = vchiq_platform_get_arm_state(state); + int i, j = 0; + /* Only dump 64 services */ + static const int local_max_services = 64; + /* If there's more than 64 services, only dump ones with + * non-zero counts */ + int only_nonzero = 0; + static const char *nz = "<-- preventing suspend"; + + enum vc_suspend_status vc_suspend_state; + enum vc_resume_status vc_resume_state; + int peer_count; + int vc_use_count; + int active_services; + struct service_data_struct { + int fourcc; + int clientid; + int use_count; + } service_data[local_max_services]; + + if (!arm_state) + return; + + read_lock_bh(&arm_state->susp_res_lock); + vc_suspend_state = arm_state->vc_suspend_state; + vc_resume_state = arm_state->vc_resume_state; + peer_count = arm_state->peer_use_count; + vc_use_count = arm_state->videocore_use_count; + active_services = state->unused_service; + if (active_services > local_max_services) + only_nonzero = 1; + + for (i = 0; (i < active_services) && (j < local_max_services); i++) { + VCHIQ_SERVICE_T *service_ptr = state->services[i]; + if (!service_ptr) + continue; + + if (only_nonzero && !service_ptr->service_use_count) + continue; + + if (service_ptr->srvstate != VCHIQ_SRVSTATE_FREE) { + service_data[j].fourcc = service_ptr->base.fourcc; + service_data[j].clientid = service_ptr->client_id; + service_data[j++].use_count = service_ptr-> + service_use_count; + } + } + + read_unlock_bh(&arm_state->susp_res_lock); + + vchiq_log_warning(vchiq_susp_log_level, + "-- Videcore suspend state: %s --", + suspend_state_names[vc_suspend_state + VC_SUSPEND_NUM_OFFSET]); + vchiq_log_warning(vchiq_susp_log_level, + "-- Videcore resume state: %s --", + resume_state_names[vc_resume_state + VC_RESUME_NUM_OFFSET]); + + if (only_nonzero) + vchiq_log_warning(vchiq_susp_log_level, "Too many active " + "services (%d). Only dumping up to first %d services " + "with non-zero use-count", active_services, + local_max_services); + + for (i = 0; i < j; i++) { + vchiq_log_warning(vchiq_susp_log_level, + "----- %c%c%c%c:%d service count %d %s", + VCHIQ_FOURCC_AS_4CHARS(service_data[i].fourcc), + service_data[i].clientid, + service_data[i].use_count, + service_data[i].use_count ? nz : ""); + } + vchiq_log_warning(vchiq_susp_log_level, + "----- VCHIQ use count count %d", peer_count); + vchiq_log_warning(vchiq_susp_log_level, + "--- Overall vchiq instance use count %d", vc_use_count); + + vchiq_dump_platform_use_state(state); +} + +VCHIQ_STATUS_T +vchiq_check_service(VCHIQ_SERVICE_T *service) +{ + VCHIQ_ARM_STATE_T *arm_state; + VCHIQ_STATUS_T ret = VCHIQ_ERROR; + + if (!service || !service->state) + goto out; + + vchiq_log_trace(vchiq_susp_log_level, "%s", __func__); + + arm_state = vchiq_platform_get_arm_state(service->state); + + read_lock_bh(&arm_state->susp_res_lock); + if (service->service_use_count) + ret = VCHIQ_SUCCESS; + read_unlock_bh(&arm_state->susp_res_lock); + + if (ret == VCHIQ_ERROR) { + vchiq_log_error(vchiq_susp_log_level, + "%s ERROR - %c%c%c%c:%d service count %d, " + "state count %d, videocore suspend state %s", __func__, + VCHIQ_FOURCC_AS_4CHARS(service->base.fourcc), + service->client_id, service->service_use_count, + arm_state->videocore_use_count, + suspend_state_names[arm_state->vc_suspend_state + + VC_SUSPEND_NUM_OFFSET]); + vchiq_dump_service_use_state(service->state); + } +out: + return ret; +} + +/* stub functions */ +void vchiq_on_remote_use_active(VCHIQ_STATE_T *state) +{ + (void)state; +} + +void vchiq_platform_conn_state_changed(VCHIQ_STATE_T *state, + VCHIQ_CONNSTATE_T oldstate, VCHIQ_CONNSTATE_T newstate) +{ + VCHIQ_ARM_STATE_T *arm_state = vchiq_platform_get_arm_state(state); + vchiq_log_info(vchiq_susp_log_level, "%d: %s->%s", state->id, + get_conn_state_name(oldstate), get_conn_state_name(newstate)); + if (state->conn_state == VCHIQ_CONNSTATE_CONNECTED) { + write_lock_bh(&arm_state->susp_res_lock); + if (!arm_state->first_connect) { + char threadname[10]; + arm_state->first_connect = 1; + write_unlock_bh(&arm_state->susp_res_lock); + snprintf(threadname, sizeof(threadname), "VCHIQka-%d", + state->id); + arm_state->ka_thread = kthread_create( + &vchiq_keepalive_thread_func, + (void *)state, + threadname); + if (arm_state->ka_thread == NULL) { + vchiq_log_error(vchiq_susp_log_level, + "vchiq: FATAL: couldn't create thread %s", + threadname); + } else { + wake_up_process(arm_state->ka_thread); + } + } else + write_unlock_bh(&arm_state->susp_res_lock); + } +} + +static int vchiq_probe(struct platform_device *pdev) +{ + struct device_node *fw_node; + struct rpi_firmware *fw; + int err; + void *ptr_err; + + fw_node = of_parse_phandle(pdev->dev.of_node, "firmware", 0); +/* Remove comment when booting without Device Tree is no longer supported + if (!fw_node) { + dev_err(&pdev->dev, "Missing firmware node\n"); + return -ENOENT; + } +*/ + fw = rpi_firmware_get(fw_node); + if (!fw) + return -EPROBE_DEFER; + + platform_set_drvdata(pdev, fw); + + /* create debugfs entries */ + err = vchiq_debugfs_init(); + if (err != 0) + goto failed_debugfs_init; + + err = alloc_chrdev_region(&vchiq_devid, VCHIQ_MINOR, 1, DEVICE_NAME); + if (err != 0) { + vchiq_log_error(vchiq_arm_log_level, + "Unable to allocate device number"); + goto failed_alloc_chrdev; + } + cdev_init(&vchiq_cdev, &vchiq_fops); + vchiq_cdev.owner = THIS_MODULE; + err = cdev_add(&vchiq_cdev, vchiq_devid, 1); + if (err != 0) { + vchiq_log_error(vchiq_arm_log_level, + "Unable to register device"); + goto failed_cdev_add; + } + + /* create sysfs entries */ + vchiq_class = class_create(THIS_MODULE, DEVICE_NAME); + ptr_err = vchiq_class; + if (IS_ERR(ptr_err)) + goto failed_class_create; + + vchiq_dev = device_create(vchiq_class, NULL, + vchiq_devid, NULL, "vchiq"); + ptr_err = vchiq_dev; + if (IS_ERR(ptr_err)) + goto failed_device_create; + + err = vchiq_platform_init(pdev, &g_state); + if (err != 0) + goto failed_platform_init; + + vchiq_log_info(vchiq_arm_log_level, + "vchiq: initialised - version %d (min %d), device %d.%d", + VCHIQ_VERSION, VCHIQ_VERSION_MIN, + MAJOR(vchiq_devid), MINOR(vchiq_devid)); + + return 0; + +failed_platform_init: + device_destroy(vchiq_class, vchiq_devid); +failed_device_create: + class_destroy(vchiq_class); +failed_class_create: + cdev_del(&vchiq_cdev); + err = PTR_ERR(ptr_err); +failed_cdev_add: + unregister_chrdev_region(vchiq_devid, 1); +failed_alloc_chrdev: + vchiq_debugfs_deinit(); +failed_debugfs_init: + vchiq_log_warning(vchiq_arm_log_level, "could not load vchiq"); + return err; +} + +static int vchiq_remove(struct platform_device *pdev) +{ + device_destroy(vchiq_class, vchiq_devid); + class_destroy(vchiq_class); + cdev_del(&vchiq_cdev); + unregister_chrdev_region(vchiq_devid, 1); + + return 0; +} + +static const struct of_device_id vchiq_of_match[] = { + { .compatible = "brcm,bcm2835-vchiq", }, + {}, +}; +MODULE_DEVICE_TABLE(of, vchiq_of_match); + +static struct platform_driver vchiq_driver = { + .driver = { + .name = "bcm2835_vchiq", + .owner = THIS_MODULE, + .of_match_table = vchiq_of_match, + }, + .probe = vchiq_probe, + .remove = vchiq_remove, +}; +module_platform_driver(vchiq_driver); + +MODULE_LICENSE("GPL"); +MODULE_AUTHOR("Broadcom Corporation"); --- linux-raspi2-4.2.0.orig/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_arm.h +++ linux-raspi2-4.2.0/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_arm.h @@ -0,0 +1,220 @@ +/** + * Copyright (c) 2014 Raspberry Pi (Trading) Ltd. All rights reserved. + * Copyright (c) 2010-2012 Broadcom. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions, and the following disclaimer, + * without modification. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The names of the above-listed copyright holders may not be used + * to endorse or promote products derived from this software without + * specific prior written permission. + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") version 2, as published by the Free + * Software Foundation. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS + * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef VCHIQ_ARM_H +#define VCHIQ_ARM_H + +#include +#include +#include +#include +#include "vchiq_core.h" +#include "vchiq_debugfs.h" + + +enum vc_suspend_status { + VC_SUSPEND_FORCE_CANCELED = -3, /* Force suspend canceled, too busy */ + VC_SUSPEND_REJECTED = -2, /* Videocore rejected suspend request */ + VC_SUSPEND_FAILED = -1, /* Videocore suspend failed */ + VC_SUSPEND_IDLE = 0, /* VC active, no suspend actions */ + VC_SUSPEND_REQUESTED, /* User has requested suspend */ + VC_SUSPEND_IN_PROGRESS, /* Slot handler has recvd suspend request */ + VC_SUSPEND_SUSPENDED /* Videocore suspend succeeded */ +}; + +enum vc_resume_status { + VC_RESUME_FAILED = -1, /* Videocore resume failed */ + VC_RESUME_IDLE = 0, /* VC suspended, no resume actions */ + VC_RESUME_REQUESTED, /* User has requested resume */ + VC_RESUME_IN_PROGRESS, /* Slot handler has received resume request */ + VC_RESUME_RESUMED /* Videocore resumed successfully (active) */ +}; + + +enum USE_TYPE_E { + USE_TYPE_SERVICE, + USE_TYPE_SERVICE_NO_RESUME, + USE_TYPE_VCHIQ +}; + + + +typedef struct vchiq_arm_state_struct { + /* Keepalive-related data */ + struct task_struct *ka_thread; + struct completion ka_evt; + atomic_t ka_use_count; + atomic_t ka_use_ack_count; + atomic_t ka_release_count; + + struct completion vc_suspend_complete; + struct completion vc_resume_complete; + + rwlock_t susp_res_lock; + enum vc_suspend_status vc_suspend_state; + enum vc_resume_status vc_resume_state; + + unsigned int wake_address; + + struct timer_list suspend_timer; + int suspend_timer_timeout; + int suspend_timer_running; + + /* Global use count for videocore. + ** This is equal to the sum of the use counts for all services. When + ** this hits zero the videocore suspend procedure will be initiated. + */ + int videocore_use_count; + + /* Use count to track requests from videocore peer. + ** This use count is not associated with a service, so needs to be + ** tracked separately with the state. + */ + int peer_use_count; + + /* Flag to indicate whether resume is blocked. This happens when the + ** ARM is suspending + */ + struct completion resume_blocker; + int resume_blocked; + struct completion blocked_blocker; + int blocked_count; + + int autosuspend_override; + + /* Flag to indicate that the first vchiq connect has made it through. + ** This means that both sides should be fully ready, and we should + ** be able to suspend after this point. + */ + int first_connect; + + unsigned long long suspend_start_time; + unsigned long long sleep_start_time; + unsigned long long resume_start_time; + unsigned long long last_wake_time; + +} VCHIQ_ARM_STATE_T; + +extern int vchiq_arm_log_level; +extern int vchiq_susp_log_level; + +int vchiq_platform_init(struct platform_device *pdev, VCHIQ_STATE_T *state); + +extern VCHIQ_STATE_T * +vchiq_get_state(void); + +extern VCHIQ_STATUS_T +vchiq_arm_vcsuspend(VCHIQ_STATE_T *state); + +extern VCHIQ_STATUS_T +vchiq_arm_force_suspend(VCHIQ_STATE_T *state); + +extern int +vchiq_arm_allow_resume(VCHIQ_STATE_T *state); + +extern VCHIQ_STATUS_T +vchiq_arm_vcresume(VCHIQ_STATE_T *state); + +extern VCHIQ_STATUS_T +vchiq_arm_init_state(VCHIQ_STATE_T *state, VCHIQ_ARM_STATE_T *arm_state); + +extern int +vchiq_check_resume(VCHIQ_STATE_T *state); + +extern void +vchiq_check_suspend(VCHIQ_STATE_T *state); + VCHIQ_STATUS_T +vchiq_use_service(VCHIQ_SERVICE_HANDLE_T handle); + +extern VCHIQ_STATUS_T +vchiq_release_service(VCHIQ_SERVICE_HANDLE_T handle); + +extern VCHIQ_STATUS_T +vchiq_check_service(VCHIQ_SERVICE_T *service); + +extern VCHIQ_STATUS_T +vchiq_platform_suspend(VCHIQ_STATE_T *state); + +extern int +vchiq_platform_videocore_wanted(VCHIQ_STATE_T *state); + +extern int +vchiq_platform_use_suspend_timer(void); + +extern void +vchiq_dump_platform_use_state(VCHIQ_STATE_T *state); + +extern void +vchiq_dump_service_use_state(VCHIQ_STATE_T *state); + +extern VCHIQ_ARM_STATE_T* +vchiq_platform_get_arm_state(VCHIQ_STATE_T *state); + +extern int +vchiq_videocore_wanted(VCHIQ_STATE_T *state); + +extern VCHIQ_STATUS_T +vchiq_use_internal(VCHIQ_STATE_T *state, VCHIQ_SERVICE_T *service, + enum USE_TYPE_E use_type); +extern VCHIQ_STATUS_T +vchiq_release_internal(VCHIQ_STATE_T *state, VCHIQ_SERVICE_T *service); + +extern VCHIQ_DEBUGFS_NODE_T * +vchiq_instance_get_debugfs_node(VCHIQ_INSTANCE_T instance); + +extern int +vchiq_instance_get_use_count(VCHIQ_INSTANCE_T instance); + +extern int +vchiq_instance_get_pid(VCHIQ_INSTANCE_T instance); + +extern int +vchiq_instance_get_trace(VCHIQ_INSTANCE_T instance); + +extern void +vchiq_instance_set_trace(VCHIQ_INSTANCE_T instance, int trace); + +extern void +set_suspend_state(VCHIQ_ARM_STATE_T *arm_state, + enum vc_suspend_status new_state); + +extern void +set_resume_state(VCHIQ_ARM_STATE_T *arm_state, + enum vc_resume_status new_state); + +extern void +start_suspend_timer(VCHIQ_ARM_STATE_T *arm_state); + + +#endif /* VCHIQ_ARM_H */ --- linux-raspi2-4.2.0.orig/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_build_info.h +++ linux-raspi2-4.2.0/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_build_info.h @@ -0,0 +1,37 @@ +/** + * Copyright (c) 2010-2012 Broadcom. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions, and the following disclaimer, + * without modification. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The names of the above-listed copyright holders may not be used + * to endorse or promote products derived from this software without + * specific prior written permission. + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") version 2, as published by the Free + * Software Foundation. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS + * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +const char *vchiq_get_build_hostname(void); +const char *vchiq_get_build_version(void); +const char *vchiq_get_build_time(void); +const char *vchiq_get_build_date(void); --- linux-raspi2-4.2.0.orig/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_cfg.h +++ linux-raspi2-4.2.0/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_cfg.h @@ -0,0 +1,69 @@ +/** + * Copyright (c) 2010-2014 Broadcom. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions, and the following disclaimer, + * without modification. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The names of the above-listed copyright holders may not be used + * to endorse or promote products derived from this software without + * specific prior written permission. + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") version 2, as published by the Free + * Software Foundation. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS + * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef VCHIQ_CFG_H +#define VCHIQ_CFG_H + +#define VCHIQ_MAGIC VCHIQ_MAKE_FOURCC('V', 'C', 'H', 'I') +/* The version of VCHIQ - change with any non-trivial change */ +#define VCHIQ_VERSION 8 +/* The minimum compatible version - update to match VCHIQ_VERSION with any +** incompatible change */ +#define VCHIQ_VERSION_MIN 3 + +/* The version that introduced the VCHIQ_IOC_LIB_VERSION ioctl */ +#define VCHIQ_VERSION_LIB_VERSION 7 + +/* The version that introduced the VCHIQ_IOC_CLOSE_DELIVERED ioctl */ +#define VCHIQ_VERSION_CLOSE_DELIVERED 7 + +/* The version that made it safe to use SYNCHRONOUS mode */ +#define VCHIQ_VERSION_SYNCHRONOUS_MODE 8 + +#define VCHIQ_MAX_STATES 1 +#define VCHIQ_MAX_SERVICES 4096 +#define VCHIQ_MAX_SLOTS 128 +#define VCHIQ_MAX_SLOTS_PER_SIDE 64 + +#define VCHIQ_NUM_CURRENT_BULKS 32 +#define VCHIQ_NUM_SERVICE_BULKS 4 + +#ifndef VCHIQ_ENABLE_DEBUG +#define VCHIQ_ENABLE_DEBUG 1 +#endif + +#ifndef VCHIQ_ENABLE_STATS +#define VCHIQ_ENABLE_STATS 1 +#endif + +#endif /* VCHIQ_CFG_H */ --- linux-raspi2-4.2.0.orig/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_connected.c +++ linux-raspi2-4.2.0/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_connected.c @@ -0,0 +1,120 @@ +/** + * Copyright (c) 2010-2012 Broadcom. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions, and the following disclaimer, + * without modification. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The names of the above-listed copyright holders may not be used + * to endorse or promote products derived from this software without + * specific prior written permission. + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") version 2, as published by the Free + * Software Foundation. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS + * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include "vchiq_connected.h" +#include "vchiq_core.h" +#include "vchiq_killable.h" +#include +#include + +#define MAX_CALLBACKS 10 + +static int g_connected; +static int g_num_deferred_callbacks; +static VCHIQ_CONNECTED_CALLBACK_T g_deferred_callback[MAX_CALLBACKS]; +static int g_once_init; +static struct mutex g_connected_mutex; + +/**************************************************************************** +* +* Function to initialize our lock. +* +***************************************************************************/ + +static void connected_init(void) +{ + if (!g_once_init) { + mutex_init(&g_connected_mutex); + g_once_init = 1; + } +} + +/**************************************************************************** +* +* This function is used to defer initialization until the vchiq stack is +* initialized. If the stack is already initialized, then the callback will +* be made immediately, otherwise it will be deferred until +* vchiq_call_connected_callbacks is called. +* +***************************************************************************/ + +void vchiq_add_connected_callback(VCHIQ_CONNECTED_CALLBACK_T callback) +{ + connected_init(); + + if (mutex_lock_interruptible(&g_connected_mutex) != 0) + return; + + if (g_connected) + /* We're already connected. Call the callback immediately. */ + + callback(); + else { + if (g_num_deferred_callbacks >= MAX_CALLBACKS) + vchiq_log_error(vchiq_core_log_level, + "There already %d callback registered - " + "please increase MAX_CALLBACKS", + g_num_deferred_callbacks); + else { + g_deferred_callback[g_num_deferred_callbacks] = + callback; + g_num_deferred_callbacks++; + } + } + mutex_unlock(&g_connected_mutex); +} + +/**************************************************************************** +* +* This function is called by the vchiq stack once it has been connected to +* the videocore and clients can start to use the stack. +* +***************************************************************************/ + +void vchiq_call_connected_callbacks(void) +{ + int i; + + connected_init(); + + if (mutex_lock_interruptible(&g_connected_mutex) != 0) + return; + + for (i = 0; i < g_num_deferred_callbacks; i++) + g_deferred_callback[i](); + + g_num_deferred_callbacks = 0; + g_connected = 1; + mutex_unlock(&g_connected_mutex); +} +EXPORT_SYMBOL(vchiq_add_connected_callback); --- linux-raspi2-4.2.0.orig/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_connected.h +++ linux-raspi2-4.2.0/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_connected.h @@ -0,0 +1,50 @@ +/** + * Copyright (c) 2010-2012 Broadcom. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions, and the following disclaimer, + * without modification. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The names of the above-listed copyright holders may not be used + * to endorse or promote products derived from this software without + * specific prior written permission. + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") version 2, as published by the Free + * Software Foundation. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS + * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef VCHIQ_CONNECTED_H +#define VCHIQ_CONNECTED_H + +/* ---- Include Files ----------------------------------------------------- */ + +/* ---- Constants and Types ---------------------------------------------- */ + +typedef void (*VCHIQ_CONNECTED_CALLBACK_T)(void); + +/* ---- Variable Externs ------------------------------------------------- */ + +/* ---- Function Prototypes ---------------------------------------------- */ + +void vchiq_add_connected_callback(VCHIQ_CONNECTED_CALLBACK_T callback); +void vchiq_call_connected_callbacks(void); + +#endif /* VCHIQ_CONNECTED_H */ --- linux-raspi2-4.2.0.orig/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_core.c +++ linux-raspi2-4.2.0/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_core.c @@ -0,0 +1,3934 @@ +/** + * Copyright (c) 2010-2012 Broadcom. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions, and the following disclaimer, + * without modification. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The names of the above-listed copyright holders may not be used + * to endorse or promote products derived from this software without + * specific prior written permission. + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") version 2, as published by the Free + * Software Foundation. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS + * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include "vchiq_core.h" +#include "vchiq_killable.h" + +#define VCHIQ_SLOT_HANDLER_STACK 8192 + +#define HANDLE_STATE_SHIFT 12 + +#define SLOT_INFO_FROM_INDEX(state, index) (state->slot_info + (index)) +#define SLOT_DATA_FROM_INDEX(state, index) (state->slot_data + (index)) +#define SLOT_INDEX_FROM_DATA(state, data) \ + (((unsigned int)((char *)data - (char *)state->slot_data)) / \ + VCHIQ_SLOT_SIZE) +#define SLOT_INDEX_FROM_INFO(state, info) \ + ((unsigned int)(info - state->slot_info)) +#define SLOT_QUEUE_INDEX_FROM_POS(pos) \ + ((int)((unsigned int)(pos) / VCHIQ_SLOT_SIZE)) + +#define BULK_INDEX(x) (x & (VCHIQ_NUM_SERVICE_BULKS - 1)) + +#define SRVTRACE_LEVEL(srv) \ + (((srv) && (srv)->trace) ? VCHIQ_LOG_TRACE : vchiq_core_msg_log_level) +#define SRVTRACE_ENABLED(srv, lev) \ + (((srv) && (srv)->trace) || (vchiq_core_msg_log_level >= (lev))) + +struct vchiq_open_payload { + int fourcc; + int client_id; + short version; + short version_min; +}; + +struct vchiq_openack_payload { + short version; +}; + +enum +{ + QMFLAGS_IS_BLOCKING = (1 << 0), + QMFLAGS_NO_MUTEX_LOCK = (1 << 1), + QMFLAGS_NO_MUTEX_UNLOCK = (1 << 2) +}; + +/* we require this for consistency between endpoints */ +vchiq_static_assert(sizeof(VCHIQ_HEADER_T) == 8); +vchiq_static_assert(IS_POW2(sizeof(VCHIQ_HEADER_T))); +vchiq_static_assert(IS_POW2(VCHIQ_NUM_CURRENT_BULKS)); +vchiq_static_assert(IS_POW2(VCHIQ_NUM_SERVICE_BULKS)); +vchiq_static_assert(IS_POW2(VCHIQ_MAX_SERVICES)); +vchiq_static_assert(VCHIQ_VERSION >= VCHIQ_VERSION_MIN); + +/* Run time control of log level, based on KERN_XXX level. */ +int vchiq_core_log_level = VCHIQ_LOG_DEFAULT; +int vchiq_core_msg_log_level = VCHIQ_LOG_DEFAULT; +int vchiq_sync_log_level = VCHIQ_LOG_DEFAULT; + +static atomic_t pause_bulks_count = ATOMIC_INIT(0); + +static DEFINE_SPINLOCK(service_spinlock); +DEFINE_SPINLOCK(bulk_waiter_spinlock); +DEFINE_SPINLOCK(quota_spinlock); + +VCHIQ_STATE_T *vchiq_states[VCHIQ_MAX_STATES]; +static unsigned int handle_seq; + +static const char *const srvstate_names[] = { + "FREE", + "HIDDEN", + "LISTENING", + "OPENING", + "OPEN", + "OPENSYNC", + "CLOSESENT", + "CLOSERECVD", + "CLOSEWAIT", + "CLOSED" +}; + +static const char *const reason_names[] = { + "SERVICE_OPENED", + "SERVICE_CLOSED", + "MESSAGE_AVAILABLE", + "BULK_TRANSMIT_DONE", + "BULK_RECEIVE_DONE", + "BULK_TRANSMIT_ABORTED", + "BULK_RECEIVE_ABORTED" +}; + +static const char *const conn_state_names[] = { + "DISCONNECTED", + "CONNECTING", + "CONNECTED", + "PAUSING", + "PAUSE_SENT", + "PAUSED", + "RESUMING", + "PAUSE_TIMEOUT", + "RESUME_TIMEOUT" +}; + + +static void +release_message_sync(VCHIQ_STATE_T *state, VCHIQ_HEADER_T *header); + +static const char *msg_type_str(unsigned int msg_type) +{ + switch (msg_type) { + case VCHIQ_MSG_PADDING: return "PADDING"; + case VCHIQ_MSG_CONNECT: return "CONNECT"; + case VCHIQ_MSG_OPEN: return "OPEN"; + case VCHIQ_MSG_OPENACK: return "OPENACK"; + case VCHIQ_MSG_CLOSE: return "CLOSE"; + case VCHIQ_MSG_DATA: return "DATA"; + case VCHIQ_MSG_BULK_RX: return "BULK_RX"; + case VCHIQ_MSG_BULK_TX: return "BULK_TX"; + case VCHIQ_MSG_BULK_RX_DONE: return "BULK_RX_DONE"; + case VCHIQ_MSG_BULK_TX_DONE: return "BULK_TX_DONE"; + case VCHIQ_MSG_PAUSE: return "PAUSE"; + case VCHIQ_MSG_RESUME: return "RESUME"; + case VCHIQ_MSG_REMOTE_USE: return "REMOTE_USE"; + case VCHIQ_MSG_REMOTE_RELEASE: return "REMOTE_RELEASE"; + case VCHIQ_MSG_REMOTE_USE_ACTIVE: return "REMOTE_USE_ACTIVE"; + } + return "???"; +} + +static inline void +vchiq_set_service_state(VCHIQ_SERVICE_T *service, int newstate) +{ + vchiq_log_info(vchiq_core_log_level, "%d: srv:%d %s->%s", + service->state->id, service->localport, + srvstate_names[service->srvstate], + srvstate_names[newstate]); + service->srvstate = newstate; +} + +VCHIQ_SERVICE_T * +find_service_by_handle(VCHIQ_SERVICE_HANDLE_T handle) +{ + VCHIQ_SERVICE_T *service; + + spin_lock(&service_spinlock); + service = handle_to_service(handle); + if (service && (service->srvstate != VCHIQ_SRVSTATE_FREE) && + (service->handle == handle)) { + BUG_ON(service->ref_count == 0); + service->ref_count++; + } else + service = NULL; + spin_unlock(&service_spinlock); + + if (!service) + vchiq_log_info(vchiq_core_log_level, + "Invalid service handle 0x%x", handle); + + return service; +} + +VCHIQ_SERVICE_T * +find_service_by_port(VCHIQ_STATE_T *state, int localport) +{ + VCHIQ_SERVICE_T *service = NULL; + if ((unsigned int)localport <= VCHIQ_PORT_MAX) { + spin_lock(&service_spinlock); + service = state->services[localport]; + if (service && (service->srvstate != VCHIQ_SRVSTATE_FREE)) { + BUG_ON(service->ref_count == 0); + service->ref_count++; + } else + service = NULL; + spin_unlock(&service_spinlock); + } + + if (!service) + vchiq_log_info(vchiq_core_log_level, + "Invalid port %d", localport); + + return service; +} + +VCHIQ_SERVICE_T * +find_service_for_instance(VCHIQ_INSTANCE_T instance, + VCHIQ_SERVICE_HANDLE_T handle) { + VCHIQ_SERVICE_T *service; + + spin_lock(&service_spinlock); + service = handle_to_service(handle); + if (service && (service->srvstate != VCHIQ_SRVSTATE_FREE) && + (service->handle == handle) && + (service->instance == instance)) { + BUG_ON(service->ref_count == 0); + service->ref_count++; + } else + service = NULL; + spin_unlock(&service_spinlock); + + if (!service) + vchiq_log_info(vchiq_core_log_level, + "Invalid service handle 0x%x", handle); + + return service; +} + +VCHIQ_SERVICE_T * +find_closed_service_for_instance(VCHIQ_INSTANCE_T instance, + VCHIQ_SERVICE_HANDLE_T handle) { + VCHIQ_SERVICE_T *service; + + spin_lock(&service_spinlock); + service = handle_to_service(handle); + if (service && + ((service->srvstate == VCHIQ_SRVSTATE_FREE) || + (service->srvstate == VCHIQ_SRVSTATE_CLOSED)) && + (service->handle == handle) && + (service->instance == instance)) { + BUG_ON(service->ref_count == 0); + service->ref_count++; + } else + service = NULL; + spin_unlock(&service_spinlock); + + if (!service) + vchiq_log_info(vchiq_core_log_level, + "Invalid service handle 0x%x", handle); + + return service; +} + +VCHIQ_SERVICE_T * +next_service_by_instance(VCHIQ_STATE_T *state, VCHIQ_INSTANCE_T instance, + int *pidx) +{ + VCHIQ_SERVICE_T *service = NULL; + int idx = *pidx; + + spin_lock(&service_spinlock); + while (idx < state->unused_service) { + VCHIQ_SERVICE_T *srv = state->services[idx++]; + if (srv && (srv->srvstate != VCHIQ_SRVSTATE_FREE) && + (srv->instance == instance)) { + service = srv; + BUG_ON(service->ref_count == 0); + service->ref_count++; + break; + } + } + spin_unlock(&service_spinlock); + + *pidx = idx; + + return service; +} + +void +lock_service(VCHIQ_SERVICE_T *service) +{ + spin_lock(&service_spinlock); + BUG_ON(!service || (service->ref_count == 0)); + if (service) + service->ref_count++; + spin_unlock(&service_spinlock); +} + +void +unlock_service(VCHIQ_SERVICE_T *service) +{ + VCHIQ_STATE_T *state = service->state; + spin_lock(&service_spinlock); + BUG_ON(!service || (service->ref_count == 0)); + if (service && service->ref_count) { + service->ref_count--; + if (!service->ref_count) { + BUG_ON(service->srvstate != VCHIQ_SRVSTATE_FREE); + state->services[service->localport] = NULL; + } else + service = NULL; + } + spin_unlock(&service_spinlock); + + if (service && service->userdata_term) + service->userdata_term(service->base.userdata); + + kfree(service); +} + +int +vchiq_get_client_id(VCHIQ_SERVICE_HANDLE_T handle) +{ + VCHIQ_SERVICE_T *service = find_service_by_handle(handle); + int id; + + id = service ? service->client_id : 0; + if (service) + unlock_service(service); + + return id; +} + +void * +vchiq_get_service_userdata(VCHIQ_SERVICE_HANDLE_T handle) +{ + VCHIQ_SERVICE_T *service = handle_to_service(handle); + + return service ? service->base.userdata : NULL; +} + +int +vchiq_get_service_fourcc(VCHIQ_SERVICE_HANDLE_T handle) +{ + VCHIQ_SERVICE_T *service = handle_to_service(handle); + + return service ? service->base.fourcc : 0; +} + +static void +mark_service_closing_internal(VCHIQ_SERVICE_T *service, int sh_thread) +{ + VCHIQ_STATE_T *state = service->state; + VCHIQ_SERVICE_QUOTA_T *service_quota; + + service->closing = 1; + + /* Synchronise with other threads. */ + mutex_lock(&state->recycle_mutex); + mutex_unlock(&state->recycle_mutex); + if (!sh_thread || (state->conn_state != VCHIQ_CONNSTATE_PAUSE_SENT)) { + /* If we're pausing then the slot_mutex is held until resume + * by the slot handler. Therefore don't try to acquire this + * mutex if we're the slot handler and in the pause sent state. + * We don't need to in this case anyway. */ + mutex_lock(&state->slot_mutex); + mutex_unlock(&state->slot_mutex); + } + + /* Unblock any sending thread. */ + service_quota = &state->service_quotas[service->localport]; + up(&service_quota->quota_event); +} + +static void +mark_service_closing(VCHIQ_SERVICE_T *service) +{ + mark_service_closing_internal(service, 0); +} + +static inline VCHIQ_STATUS_T +make_service_callback(VCHIQ_SERVICE_T *service, VCHIQ_REASON_T reason, + VCHIQ_HEADER_T *header, void *bulk_userdata) +{ + VCHIQ_STATUS_T status; + vchiq_log_trace(vchiq_core_log_level, "%d: callback:%d (%s, %x, %x)", + service->state->id, service->localport, reason_names[reason], + (unsigned int)header, (unsigned int)bulk_userdata); + status = service->base.callback(reason, header, service->handle, + bulk_userdata); + if (status == VCHIQ_ERROR) { + vchiq_log_warning(vchiq_core_log_level, + "%d: ignoring ERROR from callback to service %x", + service->state->id, service->handle); + status = VCHIQ_SUCCESS; + } + return status; +} + +inline void +vchiq_set_conn_state(VCHIQ_STATE_T *state, VCHIQ_CONNSTATE_T newstate) +{ + VCHIQ_CONNSTATE_T oldstate = state->conn_state; + vchiq_log_info(vchiq_core_log_level, "%d: %s->%s", state->id, + conn_state_names[oldstate], + conn_state_names[newstate]); + state->conn_state = newstate; + vchiq_platform_conn_state_changed(state, oldstate, newstate); +} + +static inline void +remote_event_create(REMOTE_EVENT_T *event) +{ + event->armed = 0; + /* Don't clear the 'fired' flag because it may already have been set + ** by the other side. */ + sema_init(event->event, 0); +} + +static inline void +remote_event_destroy(REMOTE_EVENT_T *event) +{ + (void)event; +} + +static inline int +remote_event_wait(REMOTE_EVENT_T *event) +{ + if (!event->fired) { + event->armed = 1; + dsb(); + if (!event->fired) { + if (down_interruptible(event->event) != 0) { + event->armed = 0; + return 0; + } + } + event->armed = 0; + wmb(); + } + + event->fired = 0; + return 1; +} + +static inline void +remote_event_signal_local(REMOTE_EVENT_T *event) +{ + event->armed = 0; + up(event->event); +} + +static inline void +remote_event_poll(REMOTE_EVENT_T *event) +{ + if (event->fired && event->armed) + remote_event_signal_local(event); +} + +void +remote_event_pollall(VCHIQ_STATE_T *state) +{ + remote_event_poll(&state->local->sync_trigger); + remote_event_poll(&state->local->sync_release); + remote_event_poll(&state->local->trigger); + remote_event_poll(&state->local->recycle); +} + +/* Round up message sizes so that any space at the end of a slot is always big +** enough for a header. This relies on header size being a power of two, which +** has been verified earlier by a static assertion. */ + +static inline unsigned int +calc_stride(unsigned int size) +{ + /* Allow room for the header */ + size += sizeof(VCHIQ_HEADER_T); + + /* Round up */ + return (size + sizeof(VCHIQ_HEADER_T) - 1) & ~(sizeof(VCHIQ_HEADER_T) + - 1); +} + +/* Called by the slot handler thread */ +static VCHIQ_SERVICE_T * +get_listening_service(VCHIQ_STATE_T *state, int fourcc) +{ + int i; + + WARN_ON(fourcc == VCHIQ_FOURCC_INVALID); + + for (i = 0; i < state->unused_service; i++) { + VCHIQ_SERVICE_T *service = state->services[i]; + if (service && + (service->public_fourcc == fourcc) && + ((service->srvstate == VCHIQ_SRVSTATE_LISTENING) || + ((service->srvstate == VCHIQ_SRVSTATE_OPEN) && + (service->remoteport == VCHIQ_PORT_FREE)))) { + lock_service(service); + return service; + } + } + + return NULL; +} + +/* Called by the slot handler thread */ +static VCHIQ_SERVICE_T * +get_connected_service(VCHIQ_STATE_T *state, unsigned int port) +{ + int i; + for (i = 0; i < state->unused_service; i++) { + VCHIQ_SERVICE_T *service = state->services[i]; + if (service && (service->srvstate == VCHIQ_SRVSTATE_OPEN) + && (service->remoteport == port)) { + lock_service(service); + return service; + } + } + return NULL; +} + +inline void +request_poll(VCHIQ_STATE_T *state, VCHIQ_SERVICE_T *service, int poll_type) +{ + uint32_t value; + + if (service) { + do { + value = atomic_read(&service->poll_flags); + } while (atomic_cmpxchg(&service->poll_flags, value, + value | (1 << poll_type)) != value); + + do { + value = atomic_read(&state->poll_services[ + service->localport>>5]); + } while (atomic_cmpxchg( + &state->poll_services[service->localport>>5], + value, value | (1 << (service->localport & 0x1f))) + != value); + } + + state->poll_needed = 1; + wmb(); + + /* ... and ensure the slot handler runs. */ + remote_event_signal_local(&state->local->trigger); +} + +/* Called from queue_message, by the slot handler and application threads, +** with slot_mutex held */ +static VCHIQ_HEADER_T * +reserve_space(VCHIQ_STATE_T *state, int space, int is_blocking) +{ + VCHIQ_SHARED_STATE_T *local = state->local; + int tx_pos = state->local_tx_pos; + int slot_space = VCHIQ_SLOT_SIZE - (tx_pos & VCHIQ_SLOT_MASK); + + if (space > slot_space) { + VCHIQ_HEADER_T *header; + /* Fill the remaining space with padding */ + WARN_ON(state->tx_data == NULL); + header = (VCHIQ_HEADER_T *) + (state->tx_data + (tx_pos & VCHIQ_SLOT_MASK)); + header->msgid = VCHIQ_MSGID_PADDING; + header->size = slot_space - sizeof(VCHIQ_HEADER_T); + + tx_pos += slot_space; + } + + /* If necessary, get the next slot. */ + if ((tx_pos & VCHIQ_SLOT_MASK) == 0) { + int slot_index; + + /* If there is no free slot... */ + + if (down_trylock(&state->slot_available_event) != 0) { + /* ...wait for one. */ + + VCHIQ_STATS_INC(state, slot_stalls); + + /* But first, flush through the last slot. */ + state->local_tx_pos = tx_pos; + local->tx_pos = tx_pos; + remote_event_signal(&state->remote->trigger); + + if (!is_blocking || + (down_interruptible( + &state->slot_available_event) != 0)) + return NULL; /* No space available */ + } + + BUG_ON(tx_pos == + (state->slot_queue_available * VCHIQ_SLOT_SIZE)); + + slot_index = local->slot_queue[ + SLOT_QUEUE_INDEX_FROM_POS(tx_pos) & + VCHIQ_SLOT_QUEUE_MASK]; + state->tx_data = + (char *)SLOT_DATA_FROM_INDEX(state, slot_index); + } + + state->local_tx_pos = tx_pos + space; + + return (VCHIQ_HEADER_T *)(state->tx_data + (tx_pos & VCHIQ_SLOT_MASK)); +} + +/* Called by the recycle thread. */ +static void +process_free_queue(VCHIQ_STATE_T *state) +{ + VCHIQ_SHARED_STATE_T *local = state->local; + BITSET_T service_found[BITSET_SIZE(VCHIQ_MAX_SERVICES)]; + int slot_queue_available; + + /* Use a read memory barrier to ensure that any state that may have + ** been modified by another thread is not masked by stale prefetched + ** values. */ + rmb(); + + /* Find slots which have been freed by the other side, and return them + ** to the available queue. */ + slot_queue_available = state->slot_queue_available; + + while (slot_queue_available != local->slot_queue_recycle) { + unsigned int pos; + int slot_index = local->slot_queue[slot_queue_available++ & + VCHIQ_SLOT_QUEUE_MASK]; + char *data = (char *)SLOT_DATA_FROM_INDEX(state, slot_index); + int data_found = 0; + + vchiq_log_trace(vchiq_core_log_level, "%d: pfq %d=%x %x %x", + state->id, slot_index, (unsigned int)data, + local->slot_queue_recycle, slot_queue_available); + + /* Initialise the bitmask for services which have used this + ** slot */ + BITSET_ZERO(service_found); + + pos = 0; + + while (pos < VCHIQ_SLOT_SIZE) { + VCHIQ_HEADER_T *header = + (VCHIQ_HEADER_T *)(data + pos); + int msgid = header->msgid; + if (VCHIQ_MSG_TYPE(msgid) == VCHIQ_MSG_DATA) { + int port = VCHIQ_MSG_SRCPORT(msgid); + VCHIQ_SERVICE_QUOTA_T *service_quota = + &state->service_quotas[port]; + int count; + spin_lock("a_spinlock); + count = service_quota->message_use_count; + if (count > 0) + service_quota->message_use_count = + count - 1; + spin_unlock("a_spinlock); + + if (count == service_quota->message_quota) + /* Signal the service that it + ** has dropped below its quota + */ + up(&service_quota->quota_event); + else if (count == 0) { + vchiq_log_error(vchiq_core_log_level, + "service %d " + "message_use_count=%d " + "(header %x, msgid %x, " + "header->msgid %x, " + "header->size %x)", + port, + service_quota-> + message_use_count, + (unsigned int)header, msgid, + header->msgid, + header->size); + WARN(1, "invalid message use count\n"); + } + if (!BITSET_IS_SET(service_found, port)) { + /* Set the found bit for this service */ + BITSET_SET(service_found, port); + + spin_lock("a_spinlock); + count = service_quota->slot_use_count; + if (count > 0) + service_quota->slot_use_count = + count - 1; + spin_unlock("a_spinlock); + + if (count > 0) { + /* Signal the service in case + ** it has dropped below its + ** quota */ + up(&service_quota->quota_event); + vchiq_log_trace( + vchiq_core_log_level, + "%d: pfq:%d %x@%x - " + "slot_use->%d", + state->id, port, + header->size, + (unsigned int)header, + count - 1); + } else { + vchiq_log_error( + vchiq_core_log_level, + "service %d " + "slot_use_count" + "=%d (header %x" + ", msgid %x, " + "header->msgid" + " %x, header->" + "size %x)", + port, count, + (unsigned int)header, + msgid, + header->msgid, + header->size); + WARN(1, "bad slot use count\n"); + } + } + + data_found = 1; + } + + pos += calc_stride(header->size); + if (pos > VCHIQ_SLOT_SIZE) { + vchiq_log_error(vchiq_core_log_level, + "pfq - pos %x: header %x, msgid %x, " + "header->msgid %x, header->size %x", + pos, (unsigned int)header, msgid, + header->msgid, header->size); + WARN(1, "invalid slot position\n"); + } + } + + if (data_found) { + int count; + spin_lock("a_spinlock); + count = state->data_use_count; + if (count > 0) + state->data_use_count = + count - 1; + spin_unlock("a_spinlock); + if (count == state->data_quota) + up(&state->data_quota_event); + } + + state->slot_queue_available = slot_queue_available; + up(&state->slot_available_event); + } +} + +/* Called by the slot handler and application threads */ +static VCHIQ_STATUS_T +queue_message(VCHIQ_STATE_T *state, VCHIQ_SERVICE_T *service, + int msgid, const VCHIQ_ELEMENT_T *elements, + int count, int size, int flags) +{ + VCHIQ_SHARED_STATE_T *local; + VCHIQ_SERVICE_QUOTA_T *service_quota = NULL; + VCHIQ_HEADER_T *header; + int type = VCHIQ_MSG_TYPE(msgid); + + unsigned int stride; + + local = state->local; + + stride = calc_stride(size); + + WARN_ON(!(stride <= VCHIQ_SLOT_SIZE)); + + if (!(flags & QMFLAGS_NO_MUTEX_LOCK) && + (mutex_lock_interruptible(&state->slot_mutex) != 0)) + return VCHIQ_RETRY; + + if (type == VCHIQ_MSG_DATA) { + int tx_end_index; + + BUG_ON(!service); + BUG_ON((flags & (QMFLAGS_NO_MUTEX_LOCK | + QMFLAGS_NO_MUTEX_UNLOCK)) != 0); + + if (service->closing) { + /* The service has been closed */ + mutex_unlock(&state->slot_mutex); + return VCHIQ_ERROR; + } + + service_quota = &state->service_quotas[service->localport]; + + spin_lock("a_spinlock); + + /* Ensure this service doesn't use more than its quota of + ** messages or slots */ + tx_end_index = SLOT_QUEUE_INDEX_FROM_POS( + state->local_tx_pos + stride - 1); + + /* Ensure data messages don't use more than their quota of + ** slots */ + while ((tx_end_index != state->previous_data_index) && + (state->data_use_count == state->data_quota)) { + VCHIQ_STATS_INC(state, data_stalls); + spin_unlock("a_spinlock); + mutex_unlock(&state->slot_mutex); + + if (down_interruptible(&state->data_quota_event) + != 0) + return VCHIQ_RETRY; + + mutex_lock(&state->slot_mutex); + spin_lock("a_spinlock); + tx_end_index = SLOT_QUEUE_INDEX_FROM_POS( + state->local_tx_pos + stride - 1); + if ((tx_end_index == state->previous_data_index) || + (state->data_use_count < state->data_quota)) { + /* Pass the signal on to other waiters */ + up(&state->data_quota_event); + break; + } + } + + while ((service_quota->message_use_count == + service_quota->message_quota) || + ((tx_end_index != service_quota->previous_tx_index) && + (service_quota->slot_use_count == + service_quota->slot_quota))) { + spin_unlock("a_spinlock); + vchiq_log_trace(vchiq_core_log_level, + "%d: qm:%d %s,%x - quota stall " + "(msg %d, slot %d)", + state->id, service->localport, + msg_type_str(type), size, + service_quota->message_use_count, + service_quota->slot_use_count); + VCHIQ_SERVICE_STATS_INC(service, quota_stalls); + mutex_unlock(&state->slot_mutex); + if (down_interruptible(&service_quota->quota_event) + != 0) + return VCHIQ_RETRY; + if (service->closing) + return VCHIQ_ERROR; + if (mutex_lock_interruptible(&state->slot_mutex) != 0) + return VCHIQ_RETRY; + if (service->srvstate != VCHIQ_SRVSTATE_OPEN) { + /* The service has been closed */ + mutex_unlock(&state->slot_mutex); + return VCHIQ_ERROR; + } + spin_lock("a_spinlock); + tx_end_index = SLOT_QUEUE_INDEX_FROM_POS( + state->local_tx_pos + stride - 1); + } + + spin_unlock("a_spinlock); + } + + header = reserve_space(state, stride, flags & QMFLAGS_IS_BLOCKING); + + if (!header) { + if (service) + VCHIQ_SERVICE_STATS_INC(service, slot_stalls); + /* In the event of a failure, return the mutex to the + state it was in */ + if (!(flags & QMFLAGS_NO_MUTEX_LOCK)) + mutex_unlock(&state->slot_mutex); + return VCHIQ_RETRY; + } + + if (type == VCHIQ_MSG_DATA) { + int i, pos; + int tx_end_index; + int slot_use_count; + + vchiq_log_info(vchiq_core_log_level, + "%d: qm %s@%x,%x (%d->%d)", + state->id, + msg_type_str(VCHIQ_MSG_TYPE(msgid)), + (unsigned int)header, size, + VCHIQ_MSG_SRCPORT(msgid), + VCHIQ_MSG_DSTPORT(msgid)); + + BUG_ON(!service); + BUG_ON((flags & (QMFLAGS_NO_MUTEX_LOCK | + QMFLAGS_NO_MUTEX_UNLOCK)) != 0); + + for (i = 0, pos = 0; i < (unsigned int)count; + pos += elements[i++].size) + if (elements[i].size) { + if (vchiq_copy_from_user + (header->data + pos, elements[i].data, + (size_t) elements[i].size) != + VCHIQ_SUCCESS) { + mutex_unlock(&state->slot_mutex); + VCHIQ_SERVICE_STATS_INC(service, + error_count); + return VCHIQ_ERROR; + } + if (i == 0) { + if (SRVTRACE_ENABLED(service, + VCHIQ_LOG_INFO)) + vchiq_log_dump_mem("Sent", 0, + header->data + pos, + min(64u, + elements[0].size)); + } + } + + spin_lock("a_spinlock); + service_quota->message_use_count++; + + tx_end_index = + SLOT_QUEUE_INDEX_FROM_POS(state->local_tx_pos - 1); + + /* If this transmission can't fit in the last slot used by any + ** service, the data_use_count must be increased. */ + if (tx_end_index != state->previous_data_index) { + state->previous_data_index = tx_end_index; + state->data_use_count++; + } + + /* If this isn't the same slot last used by this service, + ** the service's slot_use_count must be increased. */ + if (tx_end_index != service_quota->previous_tx_index) { + service_quota->previous_tx_index = tx_end_index; + slot_use_count = ++service_quota->slot_use_count; + } else { + slot_use_count = 0; + } + + spin_unlock("a_spinlock); + + if (slot_use_count) + vchiq_log_trace(vchiq_core_log_level, + "%d: qm:%d %s,%x - slot_use->%d (hdr %p)", + state->id, service->localport, + msg_type_str(VCHIQ_MSG_TYPE(msgid)), size, + slot_use_count, header); + + VCHIQ_SERVICE_STATS_INC(service, ctrl_tx_count); + VCHIQ_SERVICE_STATS_ADD(service, ctrl_tx_bytes, size); + } else { + vchiq_log_info(vchiq_core_log_level, + "%d: qm %s@%x,%x (%d->%d)", state->id, + msg_type_str(VCHIQ_MSG_TYPE(msgid)), + (unsigned int)header, size, + VCHIQ_MSG_SRCPORT(msgid), + VCHIQ_MSG_DSTPORT(msgid)); + if (size != 0) { + WARN_ON(!((count == 1) && (size == elements[0].size))); + memcpy(header->data, elements[0].data, + elements[0].size); + } + VCHIQ_STATS_INC(state, ctrl_tx_count); + } + + header->msgid = msgid; + header->size = size; + + { + int svc_fourcc; + + svc_fourcc = service + ? service->base.fourcc + : VCHIQ_MAKE_FOURCC('?', '?', '?', '?'); + + vchiq_log_info(SRVTRACE_LEVEL(service), + "Sent Msg %s(%u) to %c%c%c%c s:%u d:%d len:%d", + msg_type_str(VCHIQ_MSG_TYPE(msgid)), + VCHIQ_MSG_TYPE(msgid), + VCHIQ_FOURCC_AS_4CHARS(svc_fourcc), + VCHIQ_MSG_SRCPORT(msgid), + VCHIQ_MSG_DSTPORT(msgid), + size); + } + + /* Make sure the new header is visible to the peer. */ + wmb(); + + /* Make the new tx_pos visible to the peer. */ + local->tx_pos = state->local_tx_pos; + wmb(); + + if (service && (type == VCHIQ_MSG_CLOSE)) + vchiq_set_service_state(service, VCHIQ_SRVSTATE_CLOSESENT); + + if (!(flags & QMFLAGS_NO_MUTEX_UNLOCK)) + mutex_unlock(&state->slot_mutex); + + remote_event_signal(&state->remote->trigger); + + return VCHIQ_SUCCESS; +} + +/* Called by the slot handler and application threads */ +static VCHIQ_STATUS_T +queue_message_sync(VCHIQ_STATE_T *state, VCHIQ_SERVICE_T *service, + int msgid, const VCHIQ_ELEMENT_T *elements, + int count, int size, int is_blocking) +{ + VCHIQ_SHARED_STATE_T *local; + VCHIQ_HEADER_T *header; + + local = state->local; + + if ((VCHIQ_MSG_TYPE(msgid) != VCHIQ_MSG_RESUME) && + (mutex_lock_interruptible(&state->sync_mutex) != 0)) + return VCHIQ_RETRY; + + remote_event_wait(&local->sync_release); + + rmb(); + + header = (VCHIQ_HEADER_T *)SLOT_DATA_FROM_INDEX(state, + local->slot_sync); + + { + int oldmsgid = header->msgid; + if (oldmsgid != VCHIQ_MSGID_PADDING) + vchiq_log_error(vchiq_core_log_level, + "%d: qms - msgid %x, not PADDING", + state->id, oldmsgid); + } + + if (service) { + int i, pos; + + vchiq_log_info(vchiq_sync_log_level, + "%d: qms %s@%x,%x (%d->%d)", state->id, + msg_type_str(VCHIQ_MSG_TYPE(msgid)), + (unsigned int)header, size, + VCHIQ_MSG_SRCPORT(msgid), + VCHIQ_MSG_DSTPORT(msgid)); + + for (i = 0, pos = 0; i < (unsigned int)count; + pos += elements[i++].size) + if (elements[i].size) { + if (vchiq_copy_from_user + (header->data + pos, elements[i].data, + (size_t) elements[i].size) != + VCHIQ_SUCCESS) { + mutex_unlock(&state->sync_mutex); + VCHIQ_SERVICE_STATS_INC(service, + error_count); + return VCHIQ_ERROR; + } + if (i == 0) { + if (vchiq_sync_log_level >= + VCHIQ_LOG_TRACE) + vchiq_log_dump_mem("Sent Sync", + 0, header->data + pos, + min(64u, + elements[0].size)); + } + } + + VCHIQ_SERVICE_STATS_INC(service, ctrl_tx_count); + VCHIQ_SERVICE_STATS_ADD(service, ctrl_tx_bytes, size); + } else { + vchiq_log_info(vchiq_sync_log_level, + "%d: qms %s@%x,%x (%d->%d)", state->id, + msg_type_str(VCHIQ_MSG_TYPE(msgid)), + (unsigned int)header, size, + VCHIQ_MSG_SRCPORT(msgid), + VCHIQ_MSG_DSTPORT(msgid)); + if (size != 0) { + WARN_ON(!((count == 1) && (size == elements[0].size))); + memcpy(header->data, elements[0].data, + elements[0].size); + } + VCHIQ_STATS_INC(state, ctrl_tx_count); + } + + header->size = size; + header->msgid = msgid; + + if (vchiq_sync_log_level >= VCHIQ_LOG_TRACE) { + int svc_fourcc; + + svc_fourcc = service + ? service->base.fourcc + : VCHIQ_MAKE_FOURCC('?', '?', '?', '?'); + + vchiq_log_trace(vchiq_sync_log_level, + "Sent Sync Msg %s(%u) to %c%c%c%c s:%u d:%d len:%d", + msg_type_str(VCHIQ_MSG_TYPE(msgid)), + VCHIQ_MSG_TYPE(msgid), + VCHIQ_FOURCC_AS_4CHARS(svc_fourcc), + VCHIQ_MSG_SRCPORT(msgid), + VCHIQ_MSG_DSTPORT(msgid), + size); + } + + /* Make sure the new header is visible to the peer. */ + wmb(); + + remote_event_signal(&state->remote->sync_trigger); + + if (VCHIQ_MSG_TYPE(msgid) != VCHIQ_MSG_PAUSE) + mutex_unlock(&state->sync_mutex); + + return VCHIQ_SUCCESS; +} + +static inline void +claim_slot(VCHIQ_SLOT_INFO_T *slot) +{ + slot->use_count++; +} + +static void +release_slot(VCHIQ_STATE_T *state, VCHIQ_SLOT_INFO_T *slot_info, + VCHIQ_HEADER_T *header, VCHIQ_SERVICE_T *service) +{ + int release_count; + + mutex_lock(&state->recycle_mutex); + + if (header) { + int msgid = header->msgid; + if (((msgid & VCHIQ_MSGID_CLAIMED) == 0) || + (service && service->closing)) { + mutex_unlock(&state->recycle_mutex); + return; + } + + /* Rewrite the message header to prevent a double + ** release */ + header->msgid = msgid & ~VCHIQ_MSGID_CLAIMED; + } + + release_count = slot_info->release_count; + slot_info->release_count = ++release_count; + + if (release_count == slot_info->use_count) { + int slot_queue_recycle; + /* Add to the freed queue */ + + /* A read barrier is necessary here to prevent speculative + ** fetches of remote->slot_queue_recycle from overtaking the + ** mutex. */ + rmb(); + + slot_queue_recycle = state->remote->slot_queue_recycle; + state->remote->slot_queue[slot_queue_recycle & + VCHIQ_SLOT_QUEUE_MASK] = + SLOT_INDEX_FROM_INFO(state, slot_info); + state->remote->slot_queue_recycle = slot_queue_recycle + 1; + vchiq_log_info(vchiq_core_log_level, + "%d: release_slot %d - recycle->%x", + state->id, SLOT_INDEX_FROM_INFO(state, slot_info), + state->remote->slot_queue_recycle); + + /* A write barrier is necessary, but remote_event_signal + ** contains one. */ + remote_event_signal(&state->remote->recycle); + } + + mutex_unlock(&state->recycle_mutex); +} + +/* Called by the slot handler - don't hold the bulk mutex */ +static VCHIQ_STATUS_T +notify_bulks(VCHIQ_SERVICE_T *service, VCHIQ_BULK_QUEUE_T *queue, + int retry_poll) +{ + VCHIQ_STATUS_T status = VCHIQ_SUCCESS; + + vchiq_log_trace(vchiq_core_log_level, + "%d: nb:%d %cx - p=%x rn=%x r=%x", + service->state->id, service->localport, + (queue == &service->bulk_tx) ? 't' : 'r', + queue->process, queue->remote_notify, queue->remove); + + if (service->state->is_master) { + while (queue->remote_notify != queue->process) { + VCHIQ_BULK_T *bulk = + &queue->bulks[BULK_INDEX(queue->remote_notify)]; + int msgtype = (bulk->dir == VCHIQ_BULK_TRANSMIT) ? + VCHIQ_MSG_BULK_RX_DONE : VCHIQ_MSG_BULK_TX_DONE; + int msgid = VCHIQ_MAKE_MSG(msgtype, service->localport, + service->remoteport); + VCHIQ_ELEMENT_T element = { &bulk->actual, 4 }; + /* Only reply to non-dummy bulk requests */ + if (bulk->remote_data) { + status = queue_message(service->state, NULL, + msgid, &element, 1, 4, 0); + if (status != VCHIQ_SUCCESS) + break; + } + queue->remote_notify++; + } + } else { + queue->remote_notify = queue->process; + } + + if (status == VCHIQ_SUCCESS) { + while (queue->remove != queue->remote_notify) { + VCHIQ_BULK_T *bulk = + &queue->bulks[BULK_INDEX(queue->remove)]; + + /* Only generate callbacks for non-dummy bulk + ** requests, and non-terminated services */ + if (bulk->data && service->instance) { + if (bulk->actual != VCHIQ_BULK_ACTUAL_ABORTED) { + if (bulk->dir == VCHIQ_BULK_TRANSMIT) { + VCHIQ_SERVICE_STATS_INC(service, + bulk_tx_count); + VCHIQ_SERVICE_STATS_ADD(service, + bulk_tx_bytes, + bulk->actual); + } else { + VCHIQ_SERVICE_STATS_INC(service, + bulk_rx_count); + VCHIQ_SERVICE_STATS_ADD(service, + bulk_rx_bytes, + bulk->actual); + } + } else { + VCHIQ_SERVICE_STATS_INC(service, + bulk_aborted_count); + } + if (bulk->mode == VCHIQ_BULK_MODE_BLOCKING) { + struct bulk_waiter *waiter; + spin_lock(&bulk_waiter_spinlock); + waiter = bulk->userdata; + if (waiter) { + waiter->actual = bulk->actual; + up(&waiter->event); + } + spin_unlock(&bulk_waiter_spinlock); + } else if (bulk->mode == + VCHIQ_BULK_MODE_CALLBACK) { + VCHIQ_REASON_T reason = (bulk->dir == + VCHIQ_BULK_TRANSMIT) ? + ((bulk->actual == + VCHIQ_BULK_ACTUAL_ABORTED) ? + VCHIQ_BULK_TRANSMIT_ABORTED : + VCHIQ_BULK_TRANSMIT_DONE) : + ((bulk->actual == + VCHIQ_BULK_ACTUAL_ABORTED) ? + VCHIQ_BULK_RECEIVE_ABORTED : + VCHIQ_BULK_RECEIVE_DONE); + status = make_service_callback(service, + reason, NULL, bulk->userdata); + if (status == VCHIQ_RETRY) + break; + } + } + + queue->remove++; + up(&service->bulk_remove_event); + } + if (!retry_poll) + status = VCHIQ_SUCCESS; + } + + if (status == VCHIQ_RETRY) + request_poll(service->state, service, + (queue == &service->bulk_tx) ? + VCHIQ_POLL_TXNOTIFY : VCHIQ_POLL_RXNOTIFY); + + return status; +} + +/* Called by the slot handler thread */ +static void +poll_services(VCHIQ_STATE_T *state) +{ + int group, i; + + for (group = 0; group < BITSET_SIZE(state->unused_service); group++) { + uint32_t flags; + flags = atomic_xchg(&state->poll_services[group], 0); + for (i = 0; flags; i++) { + if (flags & (1 << i)) { + VCHIQ_SERVICE_T *service = + find_service_by_port(state, + (group<<5) + i); + uint32_t service_flags; + flags &= ~(1 << i); + if (!service) + continue; + service_flags = + atomic_xchg(&service->poll_flags, 0); + if (service_flags & + (1 << VCHIQ_POLL_REMOVE)) { + vchiq_log_info(vchiq_core_log_level, + "%d: ps - remove %d<->%d", + state->id, service->localport, + service->remoteport); + + /* Make it look like a client, because + it must be removed and not left in + the LISTENING state. */ + service->public_fourcc = + VCHIQ_FOURCC_INVALID; + + if (vchiq_close_service_internal( + service, 0/*!close_recvd*/) != + VCHIQ_SUCCESS) + request_poll(state, service, + VCHIQ_POLL_REMOVE); + } else if (service_flags & + (1 << VCHIQ_POLL_TERMINATE)) { + vchiq_log_info(vchiq_core_log_level, + "%d: ps - terminate %d<->%d", + state->id, service->localport, + service->remoteport); + if (vchiq_close_service_internal( + service, 0/*!close_recvd*/) != + VCHIQ_SUCCESS) + request_poll(state, service, + VCHIQ_POLL_TERMINATE); + } + if (service_flags & (1 << VCHIQ_POLL_TXNOTIFY)) + notify_bulks(service, + &service->bulk_tx, + 1/*retry_poll*/); + if (service_flags & (1 << VCHIQ_POLL_RXNOTIFY)) + notify_bulks(service, + &service->bulk_rx, + 1/*retry_poll*/); + unlock_service(service); + } + } + } +} + +/* Called by the slot handler or application threads, holding the bulk mutex. */ +static int +resolve_bulks(VCHIQ_SERVICE_T *service, VCHIQ_BULK_QUEUE_T *queue) +{ + VCHIQ_STATE_T *state = service->state; + int resolved = 0; + int rc; + + while ((queue->process != queue->local_insert) && + (queue->process != queue->remote_insert)) { + VCHIQ_BULK_T *bulk = &queue->bulks[BULK_INDEX(queue->process)]; + + vchiq_log_trace(vchiq_core_log_level, + "%d: rb:%d %cx - li=%x ri=%x p=%x", + state->id, service->localport, + (queue == &service->bulk_tx) ? 't' : 'r', + queue->local_insert, queue->remote_insert, + queue->process); + + WARN_ON(!((int)(queue->local_insert - queue->process) > 0)); + WARN_ON(!((int)(queue->remote_insert - queue->process) > 0)); + + rc = mutex_lock_interruptible(&state->bulk_transfer_mutex); + if (rc != 0) + break; + + vchiq_transfer_bulk(bulk); + mutex_unlock(&state->bulk_transfer_mutex); + + if (SRVTRACE_ENABLED(service, VCHIQ_LOG_INFO)) { + const char *header = (queue == &service->bulk_tx) ? + "Send Bulk to" : "Recv Bulk from"; + if (bulk->actual != VCHIQ_BULK_ACTUAL_ABORTED) + vchiq_log_info(SRVTRACE_LEVEL(service), + "%s %c%c%c%c d:%d len:%d %x<->%x", + header, + VCHIQ_FOURCC_AS_4CHARS( + service->base.fourcc), + service->remoteport, + bulk->size, + (unsigned int)bulk->data, + (unsigned int)bulk->remote_data); + else + vchiq_log_info(SRVTRACE_LEVEL(service), + "%s %c%c%c%c d:%d ABORTED - tx len:%d," + " rx len:%d %x<->%x", + header, + VCHIQ_FOURCC_AS_4CHARS( + service->base.fourcc), + service->remoteport, + bulk->size, + bulk->remote_size, + (unsigned int)bulk->data, + (unsigned int)bulk->remote_data); + } + + vchiq_complete_bulk(bulk); + queue->process++; + resolved++; + } + return resolved; +} + +/* Called with the bulk_mutex held */ +static void +abort_outstanding_bulks(VCHIQ_SERVICE_T *service, VCHIQ_BULK_QUEUE_T *queue) +{ + int is_tx = (queue == &service->bulk_tx); + vchiq_log_trace(vchiq_core_log_level, + "%d: aob:%d %cx - li=%x ri=%x p=%x", + service->state->id, service->localport, is_tx ? 't' : 'r', + queue->local_insert, queue->remote_insert, queue->process); + + WARN_ON(!((int)(queue->local_insert - queue->process) >= 0)); + WARN_ON(!((int)(queue->remote_insert - queue->process) >= 0)); + + while ((queue->process != queue->local_insert) || + (queue->process != queue->remote_insert)) { + VCHIQ_BULK_T *bulk = &queue->bulks[BULK_INDEX(queue->process)]; + + if (queue->process == queue->remote_insert) { + /* fabricate a matching dummy bulk */ + bulk->remote_data = NULL; + bulk->remote_size = 0; + queue->remote_insert++; + } + + if (queue->process != queue->local_insert) { + vchiq_complete_bulk(bulk); + + vchiq_log_info(SRVTRACE_LEVEL(service), + "%s %c%c%c%c d:%d ABORTED - tx len:%d, " + "rx len:%d", + is_tx ? "Send Bulk to" : "Recv Bulk from", + VCHIQ_FOURCC_AS_4CHARS(service->base.fourcc), + service->remoteport, + bulk->size, + bulk->remote_size); + } else { + /* fabricate a matching dummy bulk */ + bulk->data = NULL; + bulk->size = 0; + bulk->actual = VCHIQ_BULK_ACTUAL_ABORTED; + bulk->dir = is_tx ? VCHIQ_BULK_TRANSMIT : + VCHIQ_BULK_RECEIVE; + queue->local_insert++; + } + + queue->process++; + } +} + +/* Called from the slot handler thread */ +static void +pause_bulks(VCHIQ_STATE_T *state) +{ + if (unlikely(atomic_inc_return(&pause_bulks_count) != 1)) { + WARN_ON_ONCE(1); + atomic_set(&pause_bulks_count, 1); + return; + } + + /* Block bulk transfers from all services */ + mutex_lock(&state->bulk_transfer_mutex); +} + +/* Called from the slot handler thread */ +static void +resume_bulks(VCHIQ_STATE_T *state) +{ + int i; + if (unlikely(atomic_dec_return(&pause_bulks_count) != 0)) { + WARN_ON_ONCE(1); + atomic_set(&pause_bulks_count, 0); + return; + } + + /* Allow bulk transfers from all services */ + mutex_unlock(&state->bulk_transfer_mutex); + + if (state->deferred_bulks == 0) + return; + + /* Deal with any bulks which had to be deferred due to being in + * paused state. Don't try to match up to number of deferred bulks + * in case we've had something come and close the service in the + * interim - just process all bulk queues for all services */ + vchiq_log_info(vchiq_core_log_level, "%s: processing %d deferred bulks", + __func__, state->deferred_bulks); + + for (i = 0; i < state->unused_service; i++) { + VCHIQ_SERVICE_T *service = state->services[i]; + int resolved_rx = 0; + int resolved_tx = 0; + if (!service || (service->srvstate != VCHIQ_SRVSTATE_OPEN)) + continue; + + mutex_lock(&service->bulk_mutex); + resolved_rx = resolve_bulks(service, &service->bulk_rx); + resolved_tx = resolve_bulks(service, &service->bulk_tx); + mutex_unlock(&service->bulk_mutex); + if (resolved_rx) + notify_bulks(service, &service->bulk_rx, 1); + if (resolved_tx) + notify_bulks(service, &service->bulk_tx, 1); + } + state->deferred_bulks = 0; +} + +static int +parse_open(VCHIQ_STATE_T *state, VCHIQ_HEADER_T *header) +{ + VCHIQ_SERVICE_T *service = NULL; + int msgid, size; + int type; + unsigned int localport, remoteport; + + msgid = header->msgid; + size = header->size; + type = VCHIQ_MSG_TYPE(msgid); + localport = VCHIQ_MSG_DSTPORT(msgid); + remoteport = VCHIQ_MSG_SRCPORT(msgid); + if (size >= sizeof(struct vchiq_open_payload)) { + const struct vchiq_open_payload *payload = + (struct vchiq_open_payload *)header->data; + unsigned int fourcc; + + fourcc = payload->fourcc; + vchiq_log_info(vchiq_core_log_level, + "%d: prs OPEN@%x (%d->'%c%c%c%c')", + state->id, (unsigned int)header, + localport, + VCHIQ_FOURCC_AS_4CHARS(fourcc)); + + service = get_listening_service(state, fourcc); + + if (service) { + /* A matching service exists */ + short version = payload->version; + short version_min = payload->version_min; + if ((service->version < version_min) || + (version < service->version_min)) { + /* Version mismatch */ + vchiq_loud_error_header(); + vchiq_loud_error("%d: service %d (%c%c%c%c) " + "version mismatch - local (%d, min %d)" + " vs. remote (%d, min %d)", + state->id, service->localport, + VCHIQ_FOURCC_AS_4CHARS(fourcc), + service->version, service->version_min, + version, version_min); + vchiq_loud_error_footer(); + unlock_service(service); + service = NULL; + goto fail_open; + } + service->peer_version = version; + + if (service->srvstate == VCHIQ_SRVSTATE_LISTENING) { + struct vchiq_openack_payload ack_payload = { + service->version + }; + VCHIQ_ELEMENT_T body = { + &ack_payload, + sizeof(ack_payload) + }; + + if (state->version_common < + VCHIQ_VERSION_SYNCHRONOUS_MODE) + service->sync = 0; + + /* Acknowledge the OPEN */ + if (service->sync && + (state->version_common >= + VCHIQ_VERSION_SYNCHRONOUS_MODE)) { + if (queue_message_sync(state, NULL, + VCHIQ_MAKE_MSG( + VCHIQ_MSG_OPENACK, + service->localport, + remoteport), + &body, 1, sizeof(ack_payload), + 0) == VCHIQ_RETRY) + goto bail_not_ready; + } else { + if (queue_message(state, NULL, + VCHIQ_MAKE_MSG( + VCHIQ_MSG_OPENACK, + service->localport, + remoteport), + &body, 1, sizeof(ack_payload), + 0) == VCHIQ_RETRY) + goto bail_not_ready; + } + + /* The service is now open */ + vchiq_set_service_state(service, + service->sync ? VCHIQ_SRVSTATE_OPENSYNC + : VCHIQ_SRVSTATE_OPEN); + } + + service->remoteport = remoteport; + service->client_id = ((int *)header->data)[1]; + if (make_service_callback(service, VCHIQ_SERVICE_OPENED, + NULL, NULL) == VCHIQ_RETRY) { + /* Bail out if not ready */ + service->remoteport = VCHIQ_PORT_FREE; + goto bail_not_ready; + } + + /* Success - the message has been dealt with */ + unlock_service(service); + return 1; + } + } + +fail_open: + /* No available service, or an invalid request - send a CLOSE */ + if (queue_message(state, NULL, + VCHIQ_MAKE_MSG(VCHIQ_MSG_CLOSE, 0, VCHIQ_MSG_SRCPORT(msgid)), + NULL, 0, 0, 0) == VCHIQ_RETRY) + goto bail_not_ready; + + return 1; + +bail_not_ready: + if (service) + unlock_service(service); + + return 0; +} + +/* Called by the slot handler thread */ +static void +parse_rx_slots(VCHIQ_STATE_T *state) +{ + VCHIQ_SHARED_STATE_T *remote = state->remote; + VCHIQ_SERVICE_T *service = NULL; + int tx_pos; + DEBUG_INITIALISE(state->local) + + tx_pos = remote->tx_pos; + + while (state->rx_pos != tx_pos) { + VCHIQ_HEADER_T *header; + int msgid, size; + int type; + unsigned int localport, remoteport; + + DEBUG_TRACE(PARSE_LINE); + if (!state->rx_data) { + int rx_index; + WARN_ON(!((state->rx_pos & VCHIQ_SLOT_MASK) == 0)); + rx_index = remote->slot_queue[ + SLOT_QUEUE_INDEX_FROM_POS(state->rx_pos) & + VCHIQ_SLOT_QUEUE_MASK]; + state->rx_data = (char *)SLOT_DATA_FROM_INDEX(state, + rx_index); + state->rx_info = SLOT_INFO_FROM_INDEX(state, rx_index); + + /* Initialise use_count to one, and increment + ** release_count at the end of the slot to avoid + ** releasing the slot prematurely. */ + state->rx_info->use_count = 1; + state->rx_info->release_count = 0; + } + + header = (VCHIQ_HEADER_T *)(state->rx_data + + (state->rx_pos & VCHIQ_SLOT_MASK)); + DEBUG_VALUE(PARSE_HEADER, (int)header); + msgid = header->msgid; + DEBUG_VALUE(PARSE_MSGID, msgid); + size = header->size; + type = VCHIQ_MSG_TYPE(msgid); + localport = VCHIQ_MSG_DSTPORT(msgid); + remoteport = VCHIQ_MSG_SRCPORT(msgid); + + if (type != VCHIQ_MSG_DATA) + VCHIQ_STATS_INC(state, ctrl_rx_count); + + switch (type) { + case VCHIQ_MSG_OPENACK: + case VCHIQ_MSG_CLOSE: + case VCHIQ_MSG_DATA: + case VCHIQ_MSG_BULK_RX: + case VCHIQ_MSG_BULK_TX: + case VCHIQ_MSG_BULK_RX_DONE: + case VCHIQ_MSG_BULK_TX_DONE: + service = find_service_by_port(state, localport); + if ((!service || + ((service->remoteport != remoteport) && + (service->remoteport != VCHIQ_PORT_FREE))) && + (localport == 0) && + (type == VCHIQ_MSG_CLOSE)) { + /* This could be a CLOSE from a client which + hadn't yet received the OPENACK - look for + the connected service */ + if (service) + unlock_service(service); + service = get_connected_service(state, + remoteport); + if (service) + vchiq_log_warning(vchiq_core_log_level, + "%d: prs %s@%x (%d->%d) - " + "found connected service %d", + state->id, msg_type_str(type), + (unsigned int)header, + remoteport, localport, + service->localport); + } + + if (!service) { + vchiq_log_error(vchiq_core_log_level, + "%d: prs %s@%x (%d->%d) - " + "invalid/closed service %d", + state->id, msg_type_str(type), + (unsigned int)header, + remoteport, localport, localport); + goto skip_message; + } + break; + default: + break; + } + + if (SRVTRACE_ENABLED(service, VCHIQ_LOG_INFO)) { + int svc_fourcc; + + svc_fourcc = service + ? service->base.fourcc + : VCHIQ_MAKE_FOURCC('?', '?', '?', '?'); + vchiq_log_info(SRVTRACE_LEVEL(service), + "Rcvd Msg %s(%u) from %c%c%c%c s:%d d:%d " + "len:%d", + msg_type_str(type), type, + VCHIQ_FOURCC_AS_4CHARS(svc_fourcc), + remoteport, localport, size); + if (size > 0) + vchiq_log_dump_mem("Rcvd", 0, header->data, + min(64, size)); + } + + if (((unsigned int)header & VCHIQ_SLOT_MASK) + calc_stride(size) + > VCHIQ_SLOT_SIZE) { + vchiq_log_error(vchiq_core_log_level, + "header %x (msgid %x) - size %x too big for " + "slot", + (unsigned int)header, (unsigned int)msgid, + (unsigned int)size); + WARN(1, "oversized for slot\n"); + } + + switch (type) { + case VCHIQ_MSG_OPEN: + WARN_ON(!(VCHIQ_MSG_DSTPORT(msgid) == 0)); + if (!parse_open(state, header)) + goto bail_not_ready; + break; + case VCHIQ_MSG_OPENACK: + if (size >= sizeof(struct vchiq_openack_payload)) { + const struct vchiq_openack_payload *payload = + (struct vchiq_openack_payload *) + header->data; + service->peer_version = payload->version; + } + vchiq_log_info(vchiq_core_log_level, + "%d: prs OPENACK@%x,%x (%d->%d) v:%d", + state->id, (unsigned int)header, size, + remoteport, localport, service->peer_version); + if (service->srvstate == + VCHIQ_SRVSTATE_OPENING) { + service->remoteport = remoteport; + vchiq_set_service_state(service, + VCHIQ_SRVSTATE_OPEN); + up(&service->remove_event); + } else + vchiq_log_error(vchiq_core_log_level, + "OPENACK received in state %s", + srvstate_names[service->srvstate]); + break; + case VCHIQ_MSG_CLOSE: + WARN_ON(size != 0); /* There should be no data */ + + vchiq_log_info(vchiq_core_log_level, + "%d: prs CLOSE@%x (%d->%d)", + state->id, (unsigned int)header, + remoteport, localport); + + mark_service_closing_internal(service, 1); + + if (vchiq_close_service_internal(service, + 1/*close_recvd*/) == VCHIQ_RETRY) + goto bail_not_ready; + + vchiq_log_info(vchiq_core_log_level, + "Close Service %c%c%c%c s:%u d:%d", + VCHIQ_FOURCC_AS_4CHARS(service->base.fourcc), + service->localport, + service->remoteport); + break; + case VCHIQ_MSG_DATA: + vchiq_log_info(vchiq_core_log_level, + "%d: prs DATA@%x,%x (%d->%d)", + state->id, (unsigned int)header, size, + remoteport, localport); + + if ((service->remoteport == remoteport) + && (service->srvstate == + VCHIQ_SRVSTATE_OPEN)) { + header->msgid = msgid | VCHIQ_MSGID_CLAIMED; + claim_slot(state->rx_info); + DEBUG_TRACE(PARSE_LINE); + if (make_service_callback(service, + VCHIQ_MESSAGE_AVAILABLE, header, + NULL) == VCHIQ_RETRY) { + DEBUG_TRACE(PARSE_LINE); + goto bail_not_ready; + } + VCHIQ_SERVICE_STATS_INC(service, ctrl_rx_count); + VCHIQ_SERVICE_STATS_ADD(service, ctrl_rx_bytes, + size); + } else { + VCHIQ_STATS_INC(state, error_count); + } + break; + case VCHIQ_MSG_CONNECT: + vchiq_log_info(vchiq_core_log_level, + "%d: prs CONNECT@%x", + state->id, (unsigned int)header); + state->version_common = ((VCHIQ_SLOT_ZERO_T *) + state->slot_data)->version; + up(&state->connect); + break; + case VCHIQ_MSG_BULK_RX: + case VCHIQ_MSG_BULK_TX: { + VCHIQ_BULK_QUEUE_T *queue; + WARN_ON(!state->is_master); + queue = (type == VCHIQ_MSG_BULK_RX) ? + &service->bulk_tx : &service->bulk_rx; + if ((service->remoteport == remoteport) + && (service->srvstate == + VCHIQ_SRVSTATE_OPEN)) { + VCHIQ_BULK_T *bulk; + int resolved = 0; + + DEBUG_TRACE(PARSE_LINE); + if (mutex_lock_interruptible( + &service->bulk_mutex) != 0) { + DEBUG_TRACE(PARSE_LINE); + goto bail_not_ready; + } + + WARN_ON(!(queue->remote_insert < queue->remove + + VCHIQ_NUM_SERVICE_BULKS)); + bulk = &queue->bulks[ + BULK_INDEX(queue->remote_insert)]; + bulk->remote_data = + (void *)((int *)header->data)[0]; + bulk->remote_size = ((int *)header->data)[1]; + wmb(); + + vchiq_log_info(vchiq_core_log_level, + "%d: prs %s@%x (%d->%d) %x@%x", + state->id, msg_type_str(type), + (unsigned int)header, + remoteport, localport, + bulk->remote_size, + (unsigned int)bulk->remote_data); + + queue->remote_insert++; + + if (atomic_read(&pause_bulks_count)) { + state->deferred_bulks++; + vchiq_log_info(vchiq_core_log_level, + "%s: deferring bulk (%d)", + __func__, + state->deferred_bulks); + if (state->conn_state != + VCHIQ_CONNSTATE_PAUSE_SENT) + vchiq_log_error( + vchiq_core_log_level, + "%s: bulks paused in " + "unexpected state %s", + __func__, + conn_state_names[ + state->conn_state]); + } else if (state->conn_state == + VCHIQ_CONNSTATE_CONNECTED) { + DEBUG_TRACE(PARSE_LINE); + resolved = resolve_bulks(service, + queue); + } + + mutex_unlock(&service->bulk_mutex); + if (resolved) + notify_bulks(service, queue, + 1/*retry_poll*/); + } + } break; + case VCHIQ_MSG_BULK_RX_DONE: + case VCHIQ_MSG_BULK_TX_DONE: + WARN_ON(state->is_master); + if ((service->remoteport == remoteport) + && (service->srvstate != + VCHIQ_SRVSTATE_FREE)) { + VCHIQ_BULK_QUEUE_T *queue; + VCHIQ_BULK_T *bulk; + + queue = (type == VCHIQ_MSG_BULK_RX_DONE) ? + &service->bulk_rx : &service->bulk_tx; + + DEBUG_TRACE(PARSE_LINE); + if (mutex_lock_interruptible( + &service->bulk_mutex) != 0) { + DEBUG_TRACE(PARSE_LINE); + goto bail_not_ready; + } + if ((int)(queue->remote_insert - + queue->local_insert) >= 0) { + vchiq_log_error(vchiq_core_log_level, + "%d: prs %s@%x (%d->%d) " + "unexpected (ri=%d,li=%d)", + state->id, msg_type_str(type), + (unsigned int)header, + remoteport, localport, + queue->remote_insert, + queue->local_insert); + mutex_unlock(&service->bulk_mutex); + break; + } + + BUG_ON(queue->process == queue->local_insert); + BUG_ON(queue->process != queue->remote_insert); + + bulk = &queue->bulks[ + BULK_INDEX(queue->remote_insert)]; + bulk->actual = *(int *)header->data; + queue->remote_insert++; + + vchiq_log_info(vchiq_core_log_level, + "%d: prs %s@%x (%d->%d) %x@%x", + state->id, msg_type_str(type), + (unsigned int)header, + remoteport, localport, + bulk->actual, (unsigned int)bulk->data); + + vchiq_log_trace(vchiq_core_log_level, + "%d: prs:%d %cx li=%x ri=%x p=%x", + state->id, localport, + (type == VCHIQ_MSG_BULK_RX_DONE) ? + 'r' : 't', + queue->local_insert, + queue->remote_insert, queue->process); + + DEBUG_TRACE(PARSE_LINE); + WARN_ON(queue->process == queue->local_insert); + vchiq_complete_bulk(bulk); + queue->process++; + mutex_unlock(&service->bulk_mutex); + DEBUG_TRACE(PARSE_LINE); + notify_bulks(service, queue, 1/*retry_poll*/); + DEBUG_TRACE(PARSE_LINE); + } + break; + case VCHIQ_MSG_PADDING: + vchiq_log_trace(vchiq_core_log_level, + "%d: prs PADDING@%x,%x", + state->id, (unsigned int)header, size); + break; + case VCHIQ_MSG_PAUSE: + /* If initiated, signal the application thread */ + vchiq_log_trace(vchiq_core_log_level, + "%d: prs PAUSE@%x,%x", + state->id, (unsigned int)header, size); + if (state->conn_state == VCHIQ_CONNSTATE_PAUSED) { + vchiq_log_error(vchiq_core_log_level, + "%d: PAUSE received in state PAUSED", + state->id); + break; + } + if (state->conn_state != VCHIQ_CONNSTATE_PAUSE_SENT) { + /* Send a PAUSE in response */ + if (queue_message(state, NULL, + VCHIQ_MAKE_MSG(VCHIQ_MSG_PAUSE, 0, 0), + NULL, 0, 0, QMFLAGS_NO_MUTEX_UNLOCK) + == VCHIQ_RETRY) + goto bail_not_ready; + if (state->is_master) + pause_bulks(state); + } + /* At this point slot_mutex is held */ + vchiq_set_conn_state(state, VCHIQ_CONNSTATE_PAUSED); + vchiq_platform_paused(state); + break; + case VCHIQ_MSG_RESUME: + vchiq_log_trace(vchiq_core_log_level, + "%d: prs RESUME@%x,%x", + state->id, (unsigned int)header, size); + /* Release the slot mutex */ + mutex_unlock(&state->slot_mutex); + if (state->is_master) + resume_bulks(state); + vchiq_set_conn_state(state, VCHIQ_CONNSTATE_CONNECTED); + vchiq_platform_resumed(state); + break; + + case VCHIQ_MSG_REMOTE_USE: + vchiq_on_remote_use(state); + break; + case VCHIQ_MSG_REMOTE_RELEASE: + vchiq_on_remote_release(state); + break; + case VCHIQ_MSG_REMOTE_USE_ACTIVE: + vchiq_on_remote_use_active(state); + break; + + default: + vchiq_log_error(vchiq_core_log_level, + "%d: prs invalid msgid %x@%x,%x", + state->id, msgid, (unsigned int)header, size); + WARN(1, "invalid message\n"); + break; + } + +skip_message: + if (service) { + unlock_service(service); + service = NULL; + } + + state->rx_pos += calc_stride(size); + + DEBUG_TRACE(PARSE_LINE); + /* Perform some housekeeping when the end of the slot is + ** reached. */ + if ((state->rx_pos & VCHIQ_SLOT_MASK) == 0) { + /* Remove the extra reference count. */ + release_slot(state, state->rx_info, NULL, NULL); + state->rx_data = NULL; + } + } + +bail_not_ready: + if (service) + unlock_service(service); +} + +/* Called by the slot handler thread */ +static int +slot_handler_func(void *v) +{ + VCHIQ_STATE_T *state = (VCHIQ_STATE_T *) v; + VCHIQ_SHARED_STATE_T *local = state->local; + DEBUG_INITIALISE(local) + + while (1) { + DEBUG_COUNT(SLOT_HANDLER_COUNT); + DEBUG_TRACE(SLOT_HANDLER_LINE); + remote_event_wait(&local->trigger); + + rmb(); + + DEBUG_TRACE(SLOT_HANDLER_LINE); + if (state->poll_needed) { + /* Check if we need to suspend - may change our + * conn_state */ + vchiq_platform_check_suspend(state); + + state->poll_needed = 0; + + /* Handle service polling and other rare conditions here + ** out of the mainline code */ + switch (state->conn_state) { + case VCHIQ_CONNSTATE_CONNECTED: + /* Poll the services as requested */ + poll_services(state); + break; + + case VCHIQ_CONNSTATE_PAUSING: + if (state->is_master) + pause_bulks(state); + if (queue_message(state, NULL, + VCHIQ_MAKE_MSG(VCHIQ_MSG_PAUSE, 0, 0), + NULL, 0, 0, + QMFLAGS_NO_MUTEX_UNLOCK) + != VCHIQ_RETRY) { + vchiq_set_conn_state(state, + VCHIQ_CONNSTATE_PAUSE_SENT); + } else { + if (state->is_master) + resume_bulks(state); + /* Retry later */ + state->poll_needed = 1; + } + break; + + case VCHIQ_CONNSTATE_PAUSED: + vchiq_platform_resume(state); + break; + + case VCHIQ_CONNSTATE_RESUMING: + if (queue_message(state, NULL, + VCHIQ_MAKE_MSG(VCHIQ_MSG_RESUME, 0, 0), + NULL, 0, 0, QMFLAGS_NO_MUTEX_LOCK) + != VCHIQ_RETRY) { + if (state->is_master) + resume_bulks(state); + vchiq_set_conn_state(state, + VCHIQ_CONNSTATE_CONNECTED); + vchiq_platform_resumed(state); + } else { + /* This should really be impossible, + ** since the PAUSE should have flushed + ** through outstanding messages. */ + vchiq_log_error(vchiq_core_log_level, + "Failed to send RESUME " + "message"); + BUG(); + } + break; + + case VCHIQ_CONNSTATE_PAUSE_TIMEOUT: + case VCHIQ_CONNSTATE_RESUME_TIMEOUT: + vchiq_platform_handle_timeout(state); + break; + default: + break; + } + + + } + + DEBUG_TRACE(SLOT_HANDLER_LINE); + parse_rx_slots(state); + } + return 0; +} + + +/* Called by the recycle thread */ +static int +recycle_func(void *v) +{ + VCHIQ_STATE_T *state = (VCHIQ_STATE_T *) v; + VCHIQ_SHARED_STATE_T *local = state->local; + + while (1) { + remote_event_wait(&local->recycle); + + process_free_queue(state); + } + return 0; +} + + +/* Called by the sync thread */ +static int +sync_func(void *v) +{ + VCHIQ_STATE_T *state = (VCHIQ_STATE_T *) v; + VCHIQ_SHARED_STATE_T *local = state->local; + VCHIQ_HEADER_T *header = (VCHIQ_HEADER_T *)SLOT_DATA_FROM_INDEX(state, + state->remote->slot_sync); + + while (1) { + VCHIQ_SERVICE_T *service; + int msgid, size; + int type; + unsigned int localport, remoteport; + + remote_event_wait(&local->sync_trigger); + + rmb(); + + msgid = header->msgid; + size = header->size; + type = VCHIQ_MSG_TYPE(msgid); + localport = VCHIQ_MSG_DSTPORT(msgid); + remoteport = VCHIQ_MSG_SRCPORT(msgid); + + service = find_service_by_port(state, localport); + + if (!service) { + vchiq_log_error(vchiq_sync_log_level, + "%d: sf %s@%x (%d->%d) - " + "invalid/closed service %d", + state->id, msg_type_str(type), + (unsigned int)header, + remoteport, localport, localport); + release_message_sync(state, header); + continue; + } + + if (vchiq_sync_log_level >= VCHIQ_LOG_TRACE) { + int svc_fourcc; + + svc_fourcc = service + ? service->base.fourcc + : VCHIQ_MAKE_FOURCC('?', '?', '?', '?'); + vchiq_log_trace(vchiq_sync_log_level, + "Rcvd Msg %s from %c%c%c%c s:%d d:%d len:%d", + msg_type_str(type), + VCHIQ_FOURCC_AS_4CHARS(svc_fourcc), + remoteport, localport, size); + if (size > 0) + vchiq_log_dump_mem("Rcvd", 0, header->data, + min(64, size)); + } + + switch (type) { + case VCHIQ_MSG_OPENACK: + if (size >= sizeof(struct vchiq_openack_payload)) { + const struct vchiq_openack_payload *payload = + (struct vchiq_openack_payload *) + header->data; + service->peer_version = payload->version; + } + vchiq_log_info(vchiq_sync_log_level, + "%d: sf OPENACK@%x,%x (%d->%d) v:%d", + state->id, (unsigned int)header, size, + remoteport, localport, service->peer_version); + if (service->srvstate == VCHIQ_SRVSTATE_OPENING) { + service->remoteport = remoteport; + vchiq_set_service_state(service, + VCHIQ_SRVSTATE_OPENSYNC); + service->sync = 1; + up(&service->remove_event); + } + release_message_sync(state, header); + break; + + case VCHIQ_MSG_DATA: + vchiq_log_trace(vchiq_sync_log_level, + "%d: sf DATA@%x,%x (%d->%d)", + state->id, (unsigned int)header, size, + remoteport, localport); + + if ((service->remoteport == remoteport) && + (service->srvstate == + VCHIQ_SRVSTATE_OPENSYNC)) { + if (make_service_callback(service, + VCHIQ_MESSAGE_AVAILABLE, header, + NULL) == VCHIQ_RETRY) + vchiq_log_error(vchiq_sync_log_level, + "synchronous callback to " + "service %d returns " + "VCHIQ_RETRY", + localport); + } + break; + + default: + vchiq_log_error(vchiq_sync_log_level, + "%d: sf unexpected msgid %x@%x,%x", + state->id, msgid, (unsigned int)header, size); + release_message_sync(state, header); + break; + } + + unlock_service(service); + } + + return 0; +} + + +static void +init_bulk_queue(VCHIQ_BULK_QUEUE_T *queue) +{ + queue->local_insert = 0; + queue->remote_insert = 0; + queue->process = 0; + queue->remote_notify = 0; + queue->remove = 0; +} + + +inline const char * +get_conn_state_name(VCHIQ_CONNSTATE_T conn_state) +{ + return conn_state_names[conn_state]; +} + + +VCHIQ_SLOT_ZERO_T * +vchiq_init_slots(void *mem_base, int mem_size) +{ + int mem_align = (VCHIQ_SLOT_SIZE - (int)mem_base) & VCHIQ_SLOT_MASK; + VCHIQ_SLOT_ZERO_T *slot_zero = + (VCHIQ_SLOT_ZERO_T *)((char *)mem_base + mem_align); + int num_slots = (mem_size - mem_align)/VCHIQ_SLOT_SIZE; + int first_data_slot = VCHIQ_SLOT_ZERO_SLOTS; + + /* Ensure there is enough memory to run an absolutely minimum system */ + num_slots -= first_data_slot; + + if (num_slots < 4) { + vchiq_log_error(vchiq_core_log_level, + "vchiq_init_slots - insufficient memory %x bytes", + mem_size); + return NULL; + } + + memset(slot_zero, 0, sizeof(VCHIQ_SLOT_ZERO_T)); + + slot_zero->magic = VCHIQ_MAGIC; + slot_zero->version = VCHIQ_VERSION; + slot_zero->version_min = VCHIQ_VERSION_MIN; + slot_zero->slot_zero_size = sizeof(VCHIQ_SLOT_ZERO_T); + slot_zero->slot_size = VCHIQ_SLOT_SIZE; + slot_zero->max_slots = VCHIQ_MAX_SLOTS; + slot_zero->max_slots_per_side = VCHIQ_MAX_SLOTS_PER_SIDE; + + slot_zero->master.slot_sync = first_data_slot; + slot_zero->master.slot_first = first_data_slot + 1; + slot_zero->master.slot_last = first_data_slot + (num_slots/2) - 1; + slot_zero->slave.slot_sync = first_data_slot + (num_slots/2); + slot_zero->slave.slot_first = first_data_slot + (num_slots/2) + 1; + slot_zero->slave.slot_last = first_data_slot + num_slots - 1; + + return slot_zero; +} + +VCHIQ_STATUS_T +vchiq_init_state(VCHIQ_STATE_T *state, VCHIQ_SLOT_ZERO_T *slot_zero, + int is_master) +{ + VCHIQ_SHARED_STATE_T *local; + VCHIQ_SHARED_STATE_T *remote; + VCHIQ_STATUS_T status; + char threadname[10]; + static int id; + int i; + + vchiq_log_warning(vchiq_core_log_level, + "%s: slot_zero = 0x%08lx, is_master = %d", + __func__, (unsigned long)slot_zero, is_master); + + /* Check the input configuration */ + + if (slot_zero->magic != VCHIQ_MAGIC) { + vchiq_loud_error_header(); + vchiq_loud_error("Invalid VCHIQ magic value found."); + vchiq_loud_error("slot_zero=%x: magic=%x (expected %x)", + (unsigned int)slot_zero, slot_zero->magic, VCHIQ_MAGIC); + vchiq_loud_error_footer(); + return VCHIQ_ERROR; + } + + if (slot_zero->version < VCHIQ_VERSION_MIN) { + vchiq_loud_error_header(); + vchiq_loud_error("Incompatible VCHIQ versions found."); + vchiq_loud_error("slot_zero=%x: VideoCore version=%d " + "(minimum %d)", + (unsigned int)slot_zero, slot_zero->version, + VCHIQ_VERSION_MIN); + vchiq_loud_error("Restart with a newer VideoCore image."); + vchiq_loud_error_footer(); + return VCHIQ_ERROR; + } + + if (VCHIQ_VERSION < slot_zero->version_min) { + vchiq_loud_error_header(); + vchiq_loud_error("Incompatible VCHIQ versions found."); + vchiq_loud_error("slot_zero=%x: version=%d (VideoCore " + "minimum %d)", + (unsigned int)slot_zero, VCHIQ_VERSION, + slot_zero->version_min); + vchiq_loud_error("Restart with a newer kernel."); + vchiq_loud_error_footer(); + return VCHIQ_ERROR; + } + + if ((slot_zero->slot_zero_size != sizeof(VCHIQ_SLOT_ZERO_T)) || + (slot_zero->slot_size != VCHIQ_SLOT_SIZE) || + (slot_zero->max_slots != VCHIQ_MAX_SLOTS) || + (slot_zero->max_slots_per_side != VCHIQ_MAX_SLOTS_PER_SIDE)) { + vchiq_loud_error_header(); + if (slot_zero->slot_zero_size != sizeof(VCHIQ_SLOT_ZERO_T)) + vchiq_loud_error("slot_zero=%x: slot_zero_size=%x " + "(expected %x)", + (unsigned int)slot_zero, + slot_zero->slot_zero_size, + sizeof(VCHIQ_SLOT_ZERO_T)); + if (slot_zero->slot_size != VCHIQ_SLOT_SIZE) + vchiq_loud_error("slot_zero=%x: slot_size=%d " + "(expected %d", + (unsigned int)slot_zero, slot_zero->slot_size, + VCHIQ_SLOT_SIZE); + if (slot_zero->max_slots != VCHIQ_MAX_SLOTS) + vchiq_loud_error("slot_zero=%x: max_slots=%d " + "(expected %d)", + (unsigned int)slot_zero, slot_zero->max_slots, + VCHIQ_MAX_SLOTS); + if (slot_zero->max_slots_per_side != VCHIQ_MAX_SLOTS_PER_SIDE) + vchiq_loud_error("slot_zero=%x: max_slots_per_side=%d " + "(expected %d)", + (unsigned int)slot_zero, + slot_zero->max_slots_per_side, + VCHIQ_MAX_SLOTS_PER_SIDE); + vchiq_loud_error_footer(); + return VCHIQ_ERROR; + } + + if (VCHIQ_VERSION < slot_zero->version) + slot_zero->version = VCHIQ_VERSION; + + if (is_master) { + local = &slot_zero->master; + remote = &slot_zero->slave; + } else { + local = &slot_zero->slave; + remote = &slot_zero->master; + } + + if (local->initialised) { + vchiq_loud_error_header(); + if (remote->initialised) + vchiq_loud_error("local state has already been " + "initialised"); + else + vchiq_loud_error("master/slave mismatch - two %ss", + is_master ? "master" : "slave"); + vchiq_loud_error_footer(); + return VCHIQ_ERROR; + } + + memset(state, 0, sizeof(VCHIQ_STATE_T)); + + state->id = id++; + state->is_master = is_master; + + /* + initialize shared state pointers + */ + + state->local = local; + state->remote = remote; + state->slot_data = (VCHIQ_SLOT_T *)slot_zero; + + /* + initialize events and mutexes + */ + + sema_init(&state->connect, 0); + mutex_init(&state->mutex); + sema_init(&state->trigger_event, 0); + sema_init(&state->recycle_event, 0); + sema_init(&state->sync_trigger_event, 0); + sema_init(&state->sync_release_event, 0); + + mutex_init(&state->slot_mutex); + mutex_init(&state->recycle_mutex); + mutex_init(&state->sync_mutex); + mutex_init(&state->bulk_transfer_mutex); + + sema_init(&state->slot_available_event, 0); + sema_init(&state->slot_remove_event, 0); + sema_init(&state->data_quota_event, 0); + + state->slot_queue_available = 0; + + for (i = 0; i < VCHIQ_MAX_SERVICES; i++) { + VCHIQ_SERVICE_QUOTA_T *service_quota = + &state->service_quotas[i]; + sema_init(&service_quota->quota_event, 0); + } + + for (i = local->slot_first; i <= local->slot_last; i++) { + local->slot_queue[state->slot_queue_available++] = i; + up(&state->slot_available_event); + } + + state->default_slot_quota = state->slot_queue_available/2; + state->default_message_quota = + min((unsigned short)(state->default_slot_quota * 256), + (unsigned short)~0); + + state->previous_data_index = -1; + state->data_use_count = 0; + state->data_quota = state->slot_queue_available - 1; + + local->trigger.event = &state->trigger_event; + remote_event_create(&local->trigger); + local->tx_pos = 0; + + local->recycle.event = &state->recycle_event; + remote_event_create(&local->recycle); + local->slot_queue_recycle = state->slot_queue_available; + + local->sync_trigger.event = &state->sync_trigger_event; + remote_event_create(&local->sync_trigger); + + local->sync_release.event = &state->sync_release_event; + remote_event_create(&local->sync_release); + + /* At start-of-day, the slot is empty and available */ + ((VCHIQ_HEADER_T *)SLOT_DATA_FROM_INDEX(state, local->slot_sync))->msgid + = VCHIQ_MSGID_PADDING; + remote_event_signal_local(&local->sync_release); + + local->debug[DEBUG_ENTRIES] = DEBUG_MAX; + + status = vchiq_platform_init_state(state); + + /* + bring up slot handler thread + */ + snprintf(threadname, sizeof(threadname), "VCHIQ-%d", state->id); + state->slot_handler_thread = kthread_create(&slot_handler_func, + (void *)state, + threadname); + + if (state->slot_handler_thread == NULL) { + vchiq_loud_error_header(); + vchiq_loud_error("couldn't create thread %s", threadname); + vchiq_loud_error_footer(); + return VCHIQ_ERROR; + } + set_user_nice(state->slot_handler_thread, -19); + wake_up_process(state->slot_handler_thread); + + snprintf(threadname, sizeof(threadname), "VCHIQr-%d", state->id); + state->recycle_thread = kthread_create(&recycle_func, + (void *)state, + threadname); + if (state->recycle_thread == NULL) { + vchiq_loud_error_header(); + vchiq_loud_error("couldn't create thread %s", threadname); + vchiq_loud_error_footer(); + return VCHIQ_ERROR; + } + set_user_nice(state->recycle_thread, -19); + wake_up_process(state->recycle_thread); + + snprintf(threadname, sizeof(threadname), "VCHIQs-%d", state->id); + state->sync_thread = kthread_create(&sync_func, + (void *)state, + threadname); + if (state->sync_thread == NULL) { + vchiq_loud_error_header(); + vchiq_loud_error("couldn't create thread %s", threadname); + vchiq_loud_error_footer(); + return VCHIQ_ERROR; + } + set_user_nice(state->sync_thread, -20); + wake_up_process(state->sync_thread); + + BUG_ON(state->id >= VCHIQ_MAX_STATES); + vchiq_states[state->id] = state; + + /* Indicate readiness to the other side */ + local->initialised = 1; + + return status; +} + +/* Called from application thread when a client or server service is created. */ +VCHIQ_SERVICE_T * +vchiq_add_service_internal(VCHIQ_STATE_T *state, + const VCHIQ_SERVICE_PARAMS_T *params, int srvstate, + VCHIQ_INSTANCE_T instance, VCHIQ_USERDATA_TERM_T userdata_term) +{ + VCHIQ_SERVICE_T *service; + + service = kmalloc(sizeof(VCHIQ_SERVICE_T), GFP_KERNEL); + if (service) { + service->base.fourcc = params->fourcc; + service->base.callback = params->callback; + service->base.userdata = params->userdata; + service->handle = VCHIQ_SERVICE_HANDLE_INVALID; + service->ref_count = 1; + service->srvstate = VCHIQ_SRVSTATE_FREE; + service->userdata_term = userdata_term; + service->localport = VCHIQ_PORT_FREE; + service->remoteport = VCHIQ_PORT_FREE; + + service->public_fourcc = (srvstate == VCHIQ_SRVSTATE_OPENING) ? + VCHIQ_FOURCC_INVALID : params->fourcc; + service->client_id = 0; + service->auto_close = 1; + service->sync = 0; + service->closing = 0; + service->trace = 0; + atomic_set(&service->poll_flags, 0); + service->version = params->version; + service->version_min = params->version_min; + service->state = state; + service->instance = instance; + service->service_use_count = 0; + init_bulk_queue(&service->bulk_tx); + init_bulk_queue(&service->bulk_rx); + sema_init(&service->remove_event, 0); + sema_init(&service->bulk_remove_event, 0); + mutex_init(&service->bulk_mutex); + memset(&service->stats, 0, sizeof(service->stats)); + } else { + vchiq_log_error(vchiq_core_log_level, + "Out of memory"); + } + + if (service) { + VCHIQ_SERVICE_T **pservice = NULL; + int i; + + /* Although it is perfectly possible to use service_spinlock + ** to protect the creation of services, it is overkill as it + ** disables interrupts while the array is searched. + ** The only danger is of another thread trying to create a + ** service - service deletion is safe. + ** Therefore it is preferable to use state->mutex which, + ** although slower to claim, doesn't block interrupts while + ** it is held. + */ + + mutex_lock(&state->mutex); + + /* Prepare to use a previously unused service */ + if (state->unused_service < VCHIQ_MAX_SERVICES) + pservice = &state->services[state->unused_service]; + + if (srvstate == VCHIQ_SRVSTATE_OPENING) { + for (i = 0; i < state->unused_service; i++) { + VCHIQ_SERVICE_T *srv = state->services[i]; + if (!srv) { + pservice = &state->services[i]; + break; + } + } + } else { + for (i = (state->unused_service - 1); i >= 0; i--) { + VCHIQ_SERVICE_T *srv = state->services[i]; + if (!srv) + pservice = &state->services[i]; + else if ((srv->public_fourcc == params->fourcc) + && ((srv->instance != instance) || + (srv->base.callback != + params->callback))) { + /* There is another server using this + ** fourcc which doesn't match. */ + pservice = NULL; + break; + } + } + } + + if (pservice) { + service->localport = (pservice - state->services); + if (!handle_seq) + handle_seq = VCHIQ_MAX_STATES * + VCHIQ_MAX_SERVICES; + service->handle = handle_seq | + (state->id * VCHIQ_MAX_SERVICES) | + service->localport; + handle_seq += VCHIQ_MAX_STATES * VCHIQ_MAX_SERVICES; + *pservice = service; + if (pservice == &state->services[state->unused_service]) + state->unused_service++; + } + + mutex_unlock(&state->mutex); + + if (!pservice) { + kfree(service); + service = NULL; + } + } + + if (service) { + VCHIQ_SERVICE_QUOTA_T *service_quota = + &state->service_quotas[service->localport]; + service_quota->slot_quota = state->default_slot_quota; + service_quota->message_quota = state->default_message_quota; + if (service_quota->slot_use_count == 0) + service_quota->previous_tx_index = + SLOT_QUEUE_INDEX_FROM_POS(state->local_tx_pos) + - 1; + + /* Bring this service online */ + vchiq_set_service_state(service, srvstate); + + vchiq_log_info(vchiq_core_msg_log_level, + "%s Service %c%c%c%c SrcPort:%d", + (srvstate == VCHIQ_SRVSTATE_OPENING) + ? "Open" : "Add", + VCHIQ_FOURCC_AS_4CHARS(params->fourcc), + service->localport); + } + + /* Don't unlock the service - leave it with a ref_count of 1. */ + + return service; +} + +VCHIQ_STATUS_T +vchiq_open_service_internal(VCHIQ_SERVICE_T *service, int client_id) +{ + struct vchiq_open_payload payload = { + service->base.fourcc, + client_id, + service->version, + service->version_min + }; + VCHIQ_ELEMENT_T body = { &payload, sizeof(payload) }; + VCHIQ_STATUS_T status = VCHIQ_SUCCESS; + + service->client_id = client_id; + vchiq_use_service_internal(service); + status = queue_message(service->state, NULL, + VCHIQ_MAKE_MSG(VCHIQ_MSG_OPEN, service->localport, 0), + &body, 1, sizeof(payload), QMFLAGS_IS_BLOCKING); + if (status == VCHIQ_SUCCESS) { + /* Wait for the ACK/NAK */ + if (down_interruptible(&service->remove_event) != 0) { + status = VCHIQ_RETRY; + vchiq_release_service_internal(service); + } else if ((service->srvstate != VCHIQ_SRVSTATE_OPEN) && + (service->srvstate != VCHIQ_SRVSTATE_OPENSYNC)) { + if (service->srvstate != VCHIQ_SRVSTATE_CLOSEWAIT) + vchiq_log_error(vchiq_core_log_level, + "%d: osi - srvstate = %s (ref %d)", + service->state->id, + srvstate_names[service->srvstate], + service->ref_count); + status = VCHIQ_ERROR; + VCHIQ_SERVICE_STATS_INC(service, error_count); + vchiq_release_service_internal(service); + } + } + return status; +} + +static void +release_service_messages(VCHIQ_SERVICE_T *service) +{ + VCHIQ_STATE_T *state = service->state; + int slot_last = state->remote->slot_last; + int i; + + /* Release any claimed messages aimed at this service */ + + if (service->sync) { + VCHIQ_HEADER_T *header = + (VCHIQ_HEADER_T *)SLOT_DATA_FROM_INDEX(state, + state->remote->slot_sync); + if (VCHIQ_MSG_DSTPORT(header->msgid) == service->localport) + release_message_sync(state, header); + + return; + } + + for (i = state->remote->slot_first; i <= slot_last; i++) { + VCHIQ_SLOT_INFO_T *slot_info = + SLOT_INFO_FROM_INDEX(state, i); + if (slot_info->release_count != slot_info->use_count) { + char *data = + (char *)SLOT_DATA_FROM_INDEX(state, i); + unsigned int pos, end; + + end = VCHIQ_SLOT_SIZE; + if (data == state->rx_data) + /* This buffer is still being read from - stop + ** at the current read position */ + end = state->rx_pos & VCHIQ_SLOT_MASK; + + pos = 0; + + while (pos < end) { + VCHIQ_HEADER_T *header = + (VCHIQ_HEADER_T *)(data + pos); + int msgid = header->msgid; + int port = VCHIQ_MSG_DSTPORT(msgid); + if ((port == service->localport) && + (msgid & VCHIQ_MSGID_CLAIMED)) { + vchiq_log_info(vchiq_core_log_level, + " fsi - hdr %x", + (unsigned int)header); + release_slot(state, slot_info, header, + NULL); + } + pos += calc_stride(header->size); + if (pos > VCHIQ_SLOT_SIZE) { + vchiq_log_error(vchiq_core_log_level, + "fsi - pos %x: header %x, " + "msgid %x, header->msgid %x, " + "header->size %x", + pos, (unsigned int)header, + msgid, header->msgid, + header->size); + WARN(1, "invalid slot position\n"); + } + } + } + } +} + +static int +do_abort_bulks(VCHIQ_SERVICE_T *service) +{ + VCHIQ_STATUS_T status; + + /* Abort any outstanding bulk transfers */ + if (mutex_lock_interruptible(&service->bulk_mutex) != 0) + return 0; + abort_outstanding_bulks(service, &service->bulk_tx); + abort_outstanding_bulks(service, &service->bulk_rx); + mutex_unlock(&service->bulk_mutex); + + status = notify_bulks(service, &service->bulk_tx, 0/*!retry_poll*/); + if (status == VCHIQ_SUCCESS) + status = notify_bulks(service, &service->bulk_rx, + 0/*!retry_poll*/); + return (status == VCHIQ_SUCCESS); +} + +static VCHIQ_STATUS_T +close_service_complete(VCHIQ_SERVICE_T *service, int failstate) +{ + VCHIQ_STATUS_T status; + int is_server = (service->public_fourcc != VCHIQ_FOURCC_INVALID); + int newstate; + + switch (service->srvstate) { + case VCHIQ_SRVSTATE_OPEN: + case VCHIQ_SRVSTATE_CLOSESENT: + case VCHIQ_SRVSTATE_CLOSERECVD: + if (is_server) { + if (service->auto_close) { + service->client_id = 0; + service->remoteport = VCHIQ_PORT_FREE; + newstate = VCHIQ_SRVSTATE_LISTENING; + } else + newstate = VCHIQ_SRVSTATE_CLOSEWAIT; + } else + newstate = VCHIQ_SRVSTATE_CLOSED; + vchiq_set_service_state(service, newstate); + break; + case VCHIQ_SRVSTATE_LISTENING: + break; + default: + vchiq_log_error(vchiq_core_log_level, + "close_service_complete(%x) called in state %s", + service->handle, srvstate_names[service->srvstate]); + WARN(1, "close_service_complete in unexpected state\n"); + return VCHIQ_ERROR; + } + + status = make_service_callback(service, + VCHIQ_SERVICE_CLOSED, NULL, NULL); + + if (status != VCHIQ_RETRY) { + int uc = service->service_use_count; + int i; + /* Complete the close process */ + for (i = 0; i < uc; i++) + /* cater for cases where close is forced and the + ** client may not close all it's handles */ + vchiq_release_service_internal(service); + + service->client_id = 0; + service->remoteport = VCHIQ_PORT_FREE; + + if (service->srvstate == VCHIQ_SRVSTATE_CLOSED) + vchiq_free_service_internal(service); + else if (service->srvstate != VCHIQ_SRVSTATE_CLOSEWAIT) { + if (is_server) + service->closing = 0; + + up(&service->remove_event); + } + } else + vchiq_set_service_state(service, failstate); + + return status; +} + +/* Called by the slot handler */ +VCHIQ_STATUS_T +vchiq_close_service_internal(VCHIQ_SERVICE_T *service, int close_recvd) +{ + VCHIQ_STATE_T *state = service->state; + VCHIQ_STATUS_T status = VCHIQ_SUCCESS; + int is_server = (service->public_fourcc != VCHIQ_FOURCC_INVALID); + + vchiq_log_info(vchiq_core_log_level, "%d: csi:%d,%d (%s)", + service->state->id, service->localport, close_recvd, + srvstate_names[service->srvstate]); + + switch (service->srvstate) { + case VCHIQ_SRVSTATE_CLOSED: + case VCHIQ_SRVSTATE_HIDDEN: + case VCHIQ_SRVSTATE_LISTENING: + case VCHIQ_SRVSTATE_CLOSEWAIT: + if (close_recvd) + vchiq_log_error(vchiq_core_log_level, + "vchiq_close_service_internal(1) called " + "in state %s", + srvstate_names[service->srvstate]); + else if (is_server) { + if (service->srvstate == VCHIQ_SRVSTATE_LISTENING) { + status = VCHIQ_ERROR; + } else { + service->client_id = 0; + service->remoteport = VCHIQ_PORT_FREE; + if (service->srvstate == + VCHIQ_SRVSTATE_CLOSEWAIT) + vchiq_set_service_state(service, + VCHIQ_SRVSTATE_LISTENING); + } + up(&service->remove_event); + } else + vchiq_free_service_internal(service); + break; + case VCHIQ_SRVSTATE_OPENING: + if (close_recvd) { + /* The open was rejected - tell the user */ + vchiq_set_service_state(service, + VCHIQ_SRVSTATE_CLOSEWAIT); + up(&service->remove_event); + } else { + /* Shutdown mid-open - let the other side know */ + status = queue_message(state, service, + VCHIQ_MAKE_MSG + (VCHIQ_MSG_CLOSE, + service->localport, + VCHIQ_MSG_DSTPORT(service->remoteport)), + NULL, 0, 0, 0); + } + break; + + case VCHIQ_SRVSTATE_OPENSYNC: + mutex_lock(&state->sync_mutex); + /* Drop through */ + + case VCHIQ_SRVSTATE_OPEN: + if (state->is_master || close_recvd) { + if (!do_abort_bulks(service)) + status = VCHIQ_RETRY; + } + + release_service_messages(service); + + if (status == VCHIQ_SUCCESS) + status = queue_message(state, service, + VCHIQ_MAKE_MSG + (VCHIQ_MSG_CLOSE, + service->localport, + VCHIQ_MSG_DSTPORT(service->remoteport)), + NULL, 0, 0, QMFLAGS_NO_MUTEX_UNLOCK); + + if (status == VCHIQ_SUCCESS) { + if (!close_recvd) { + /* Change the state while the mutex is + still held */ + vchiq_set_service_state(service, + VCHIQ_SRVSTATE_CLOSESENT); + mutex_unlock(&state->slot_mutex); + if (service->sync) + mutex_unlock(&state->sync_mutex); + break; + } + } else if (service->srvstate == VCHIQ_SRVSTATE_OPENSYNC) { + mutex_unlock(&state->sync_mutex); + break; + } else + break; + + /* Change the state while the mutex is still held */ + vchiq_set_service_state(service, VCHIQ_SRVSTATE_CLOSERECVD); + mutex_unlock(&state->slot_mutex); + if (service->sync) + mutex_unlock(&state->sync_mutex); + + status = close_service_complete(service, + VCHIQ_SRVSTATE_CLOSERECVD); + break; + + case VCHIQ_SRVSTATE_CLOSESENT: + if (!close_recvd) + /* This happens when a process is killed mid-close */ + break; + + if (!state->is_master) { + if (!do_abort_bulks(service)) { + status = VCHIQ_RETRY; + break; + } + } + + if (status == VCHIQ_SUCCESS) + status = close_service_complete(service, + VCHIQ_SRVSTATE_CLOSERECVD); + break; + + case VCHIQ_SRVSTATE_CLOSERECVD: + if (!close_recvd && is_server) + /* Force into LISTENING mode */ + vchiq_set_service_state(service, + VCHIQ_SRVSTATE_LISTENING); + status = close_service_complete(service, + VCHIQ_SRVSTATE_CLOSERECVD); + break; + + default: + vchiq_log_error(vchiq_core_log_level, + "vchiq_close_service_internal(%d) called in state %s", + close_recvd, srvstate_names[service->srvstate]); + break; + } + + return status; +} + +/* Called from the application process upon process death */ +void +vchiq_terminate_service_internal(VCHIQ_SERVICE_T *service) +{ + VCHIQ_STATE_T *state = service->state; + + vchiq_log_info(vchiq_core_log_level, "%d: tsi - (%d<->%d)", + state->id, service->localport, service->remoteport); + + mark_service_closing(service); + + /* Mark the service for removal by the slot handler */ + request_poll(state, service, VCHIQ_POLL_REMOVE); +} + +/* Called from the slot handler */ +void +vchiq_free_service_internal(VCHIQ_SERVICE_T *service) +{ + VCHIQ_STATE_T *state = service->state; + + vchiq_log_info(vchiq_core_log_level, "%d: fsi - (%d)", + state->id, service->localport); + + switch (service->srvstate) { + case VCHIQ_SRVSTATE_OPENING: + case VCHIQ_SRVSTATE_CLOSED: + case VCHIQ_SRVSTATE_HIDDEN: + case VCHIQ_SRVSTATE_LISTENING: + case VCHIQ_SRVSTATE_CLOSEWAIT: + break; + default: + vchiq_log_error(vchiq_core_log_level, + "%d: fsi - (%d) in state %s", + state->id, service->localport, + srvstate_names[service->srvstate]); + return; + } + + vchiq_set_service_state(service, VCHIQ_SRVSTATE_FREE); + + up(&service->remove_event); + + /* Release the initial lock */ + unlock_service(service); +} + +VCHIQ_STATUS_T +vchiq_connect_internal(VCHIQ_STATE_T *state, VCHIQ_INSTANCE_T instance) +{ + VCHIQ_SERVICE_T *service; + int i; + + /* Find all services registered to this client and enable them. */ + i = 0; + while ((service = next_service_by_instance(state, instance, + &i)) != NULL) { + if (service->srvstate == VCHIQ_SRVSTATE_HIDDEN) + vchiq_set_service_state(service, + VCHIQ_SRVSTATE_LISTENING); + unlock_service(service); + } + + if (state->conn_state == VCHIQ_CONNSTATE_DISCONNECTED) { + if (queue_message(state, NULL, + VCHIQ_MAKE_MSG(VCHIQ_MSG_CONNECT, 0, 0), NULL, 0, + 0, QMFLAGS_IS_BLOCKING) == VCHIQ_RETRY) + return VCHIQ_RETRY; + + vchiq_set_conn_state(state, VCHIQ_CONNSTATE_CONNECTING); + } + + if (state->conn_state == VCHIQ_CONNSTATE_CONNECTING) { + if (down_interruptible(&state->connect) != 0) + return VCHIQ_RETRY; + + vchiq_set_conn_state(state, VCHIQ_CONNSTATE_CONNECTED); + up(&state->connect); + } + + return VCHIQ_SUCCESS; +} + +VCHIQ_STATUS_T +vchiq_shutdown_internal(VCHIQ_STATE_T *state, VCHIQ_INSTANCE_T instance) +{ + VCHIQ_SERVICE_T *service; + int i; + + /* Find all services registered to this client and enable them. */ + i = 0; + while ((service = next_service_by_instance(state, instance, + &i)) != NULL) { + (void)vchiq_remove_service(service->handle); + unlock_service(service); + } + + return VCHIQ_SUCCESS; +} + +VCHIQ_STATUS_T +vchiq_pause_internal(VCHIQ_STATE_T *state) +{ + VCHIQ_STATUS_T status = VCHIQ_SUCCESS; + + switch (state->conn_state) { + case VCHIQ_CONNSTATE_CONNECTED: + /* Request a pause */ + vchiq_set_conn_state(state, VCHIQ_CONNSTATE_PAUSING); + request_poll(state, NULL, 0); + break; + default: + vchiq_log_error(vchiq_core_log_level, + "vchiq_pause_internal in state %s\n", + conn_state_names[state->conn_state]); + status = VCHIQ_ERROR; + VCHIQ_STATS_INC(state, error_count); + break; + } + + return status; +} + +VCHIQ_STATUS_T +vchiq_resume_internal(VCHIQ_STATE_T *state) +{ + VCHIQ_STATUS_T status = VCHIQ_SUCCESS; + + if (state->conn_state == VCHIQ_CONNSTATE_PAUSED) { + vchiq_set_conn_state(state, VCHIQ_CONNSTATE_RESUMING); + request_poll(state, NULL, 0); + } else { + status = VCHIQ_ERROR; + VCHIQ_STATS_INC(state, error_count); + } + + return status; +} + +VCHIQ_STATUS_T +vchiq_close_service(VCHIQ_SERVICE_HANDLE_T handle) +{ + /* Unregister the service */ + VCHIQ_SERVICE_T *service = find_service_by_handle(handle); + VCHIQ_STATUS_T status = VCHIQ_SUCCESS; + + if (!service) + return VCHIQ_ERROR; + + vchiq_log_info(vchiq_core_log_level, + "%d: close_service:%d", + service->state->id, service->localport); + + if ((service->srvstate == VCHIQ_SRVSTATE_FREE) || + (service->srvstate == VCHIQ_SRVSTATE_LISTENING) || + (service->srvstate == VCHIQ_SRVSTATE_HIDDEN)) { + unlock_service(service); + return VCHIQ_ERROR; + } + + mark_service_closing(service); + + if (current == service->state->slot_handler_thread) { + status = vchiq_close_service_internal(service, + 0/*!close_recvd*/); + BUG_ON(status == VCHIQ_RETRY); + } else { + /* Mark the service for termination by the slot handler */ + request_poll(service->state, service, VCHIQ_POLL_TERMINATE); + } + + while (1) { + if (down_interruptible(&service->remove_event) != 0) { + status = VCHIQ_RETRY; + break; + } + + if ((service->srvstate == VCHIQ_SRVSTATE_FREE) || + (service->srvstate == VCHIQ_SRVSTATE_LISTENING) || + (service->srvstate == VCHIQ_SRVSTATE_OPEN)) + break; + + vchiq_log_warning(vchiq_core_log_level, + "%d: close_service:%d - waiting in state %s", + service->state->id, service->localport, + srvstate_names[service->srvstate]); + } + + if ((status == VCHIQ_SUCCESS) && + (service->srvstate != VCHIQ_SRVSTATE_FREE) && + (service->srvstate != VCHIQ_SRVSTATE_LISTENING)) + status = VCHIQ_ERROR; + + unlock_service(service); + + return status; +} + +VCHIQ_STATUS_T +vchiq_remove_service(VCHIQ_SERVICE_HANDLE_T handle) +{ + /* Unregister the service */ + VCHIQ_SERVICE_T *service = find_service_by_handle(handle); + VCHIQ_STATUS_T status = VCHIQ_SUCCESS; + + if (!service) + return VCHIQ_ERROR; + + vchiq_log_info(vchiq_core_log_level, + "%d: remove_service:%d", + service->state->id, service->localport); + + if (service->srvstate == VCHIQ_SRVSTATE_FREE) { + unlock_service(service); + return VCHIQ_ERROR; + } + + mark_service_closing(service); + + if ((service->srvstate == VCHIQ_SRVSTATE_HIDDEN) || + (current == service->state->slot_handler_thread)) { + /* Make it look like a client, because it must be removed and + not left in the LISTENING state. */ + service->public_fourcc = VCHIQ_FOURCC_INVALID; + + status = vchiq_close_service_internal(service, + 0/*!close_recvd*/); + BUG_ON(status == VCHIQ_RETRY); + } else { + /* Mark the service for removal by the slot handler */ + request_poll(service->state, service, VCHIQ_POLL_REMOVE); + } + while (1) { + if (down_interruptible(&service->remove_event) != 0) { + status = VCHIQ_RETRY; + break; + } + + if ((service->srvstate == VCHIQ_SRVSTATE_FREE) || + (service->srvstate == VCHIQ_SRVSTATE_OPEN)) + break; + + vchiq_log_warning(vchiq_core_log_level, + "%d: remove_service:%d - waiting in state %s", + service->state->id, service->localport, + srvstate_names[service->srvstate]); + } + + if ((status == VCHIQ_SUCCESS) && + (service->srvstate != VCHIQ_SRVSTATE_FREE)) + status = VCHIQ_ERROR; + + unlock_service(service); + + return status; +} + + +/* This function may be called by kernel threads or user threads. + * User threads may receive VCHIQ_RETRY to indicate that a signal has been + * received and the call should be retried after being returned to user + * context. + * When called in blocking mode, the userdata field points to a bulk_waiter + * structure. + */ +VCHIQ_STATUS_T +vchiq_bulk_transfer(VCHIQ_SERVICE_HANDLE_T handle, + VCHI_MEM_HANDLE_T memhandle, void *offset, int size, void *userdata, + VCHIQ_BULK_MODE_T mode, VCHIQ_BULK_DIR_T dir) +{ + VCHIQ_SERVICE_T *service = find_service_by_handle(handle); + VCHIQ_BULK_QUEUE_T *queue; + VCHIQ_BULK_T *bulk; + VCHIQ_STATE_T *state; + struct bulk_waiter *bulk_waiter = NULL; + const char dir_char = (dir == VCHIQ_BULK_TRANSMIT) ? 't' : 'r'; + const int dir_msgtype = (dir == VCHIQ_BULK_TRANSMIT) ? + VCHIQ_MSG_BULK_TX : VCHIQ_MSG_BULK_RX; + VCHIQ_STATUS_T status = VCHIQ_ERROR; + + if (!service || + (service->srvstate != VCHIQ_SRVSTATE_OPEN) || + ((memhandle == VCHI_MEM_HANDLE_INVALID) && (offset == NULL)) || + (vchiq_check_service(service) != VCHIQ_SUCCESS)) + goto error_exit; + + switch (mode) { + case VCHIQ_BULK_MODE_NOCALLBACK: + case VCHIQ_BULK_MODE_CALLBACK: + break; + case VCHIQ_BULK_MODE_BLOCKING: + bulk_waiter = (struct bulk_waiter *)userdata; + sema_init(&bulk_waiter->event, 0); + bulk_waiter->actual = 0; + bulk_waiter->bulk = NULL; + break; + case VCHIQ_BULK_MODE_WAITING: + bulk_waiter = (struct bulk_waiter *)userdata; + bulk = bulk_waiter->bulk; + goto waiting; + default: + goto error_exit; + } + + state = service->state; + + queue = (dir == VCHIQ_BULK_TRANSMIT) ? + &service->bulk_tx : &service->bulk_rx; + + if (mutex_lock_interruptible(&service->bulk_mutex) != 0) { + status = VCHIQ_RETRY; + goto error_exit; + } + + if (queue->local_insert == queue->remove + VCHIQ_NUM_SERVICE_BULKS) { + VCHIQ_SERVICE_STATS_INC(service, bulk_stalls); + do { + mutex_unlock(&service->bulk_mutex); + if (down_interruptible(&service->bulk_remove_event) + != 0) { + status = VCHIQ_RETRY; + goto error_exit; + } + if (mutex_lock_interruptible(&service->bulk_mutex) + != 0) { + status = VCHIQ_RETRY; + goto error_exit; + } + } while (queue->local_insert == queue->remove + + VCHIQ_NUM_SERVICE_BULKS); + } + + bulk = &queue->bulks[BULK_INDEX(queue->local_insert)]; + + bulk->mode = mode; + bulk->dir = dir; + bulk->userdata = userdata; + bulk->size = size; + bulk->actual = VCHIQ_BULK_ACTUAL_ABORTED; + + if (vchiq_prepare_bulk_data(bulk, memhandle, offset, size, dir) != + VCHIQ_SUCCESS) + goto unlock_error_exit; + + wmb(); + + vchiq_log_info(vchiq_core_log_level, + "%d: bt (%d->%d) %cx %x@%x %x", + state->id, + service->localport, service->remoteport, dir_char, + size, (unsigned int)bulk->data, (unsigned int)userdata); + + /* The slot mutex must be held when the service is being closed, so + claim it here to ensure that isn't happening */ + if (mutex_lock_interruptible(&state->slot_mutex) != 0) { + status = VCHIQ_RETRY; + goto cancel_bulk_error_exit; + } + + if (service->srvstate != VCHIQ_SRVSTATE_OPEN) + goto unlock_both_error_exit; + + if (state->is_master) { + queue->local_insert++; + if (resolve_bulks(service, queue)) + request_poll(state, service, + (dir == VCHIQ_BULK_TRANSMIT) ? + VCHIQ_POLL_TXNOTIFY : VCHIQ_POLL_RXNOTIFY); + } else { + int payload[2] = { (int)bulk->data, bulk->size }; + VCHIQ_ELEMENT_T element = { payload, sizeof(payload) }; + + status = queue_message(state, NULL, + VCHIQ_MAKE_MSG(dir_msgtype, + service->localport, service->remoteport), + &element, 1, sizeof(payload), + QMFLAGS_IS_BLOCKING | + QMFLAGS_NO_MUTEX_LOCK | + QMFLAGS_NO_MUTEX_UNLOCK); + if (status != VCHIQ_SUCCESS) { + goto unlock_both_error_exit; + } + queue->local_insert++; + } + + mutex_unlock(&state->slot_mutex); + mutex_unlock(&service->bulk_mutex); + + vchiq_log_trace(vchiq_core_log_level, + "%d: bt:%d %cx li=%x ri=%x p=%x", + state->id, + service->localport, dir_char, + queue->local_insert, queue->remote_insert, queue->process); + +waiting: + unlock_service(service); + + status = VCHIQ_SUCCESS; + + if (bulk_waiter) { + bulk_waiter->bulk = bulk; + if (down_interruptible(&bulk_waiter->event) != 0) + status = VCHIQ_RETRY; + else if (bulk_waiter->actual == VCHIQ_BULK_ACTUAL_ABORTED) + status = VCHIQ_ERROR; + } + + return status; + +unlock_both_error_exit: + mutex_unlock(&state->slot_mutex); +cancel_bulk_error_exit: + vchiq_complete_bulk(bulk); +unlock_error_exit: + mutex_unlock(&service->bulk_mutex); + +error_exit: + if (service) + unlock_service(service); + return status; +} + +VCHIQ_STATUS_T +vchiq_queue_message(VCHIQ_SERVICE_HANDLE_T handle, + const VCHIQ_ELEMENT_T *elements, unsigned int count) +{ + VCHIQ_SERVICE_T *service = find_service_by_handle(handle); + VCHIQ_STATUS_T status = VCHIQ_ERROR; + + unsigned int size = 0; + unsigned int i; + + if (!service || + (vchiq_check_service(service) != VCHIQ_SUCCESS)) + goto error_exit; + + for (i = 0; i < (unsigned int)count; i++) { + if (elements[i].size) { + if (elements[i].data == NULL) { + VCHIQ_SERVICE_STATS_INC(service, error_count); + goto error_exit; + } + size += elements[i].size; + } + } + + if (size > VCHIQ_MAX_MSG_SIZE) { + VCHIQ_SERVICE_STATS_INC(service, error_count); + goto error_exit; + } + + switch (service->srvstate) { + case VCHIQ_SRVSTATE_OPEN: + status = queue_message(service->state, service, + VCHIQ_MAKE_MSG(VCHIQ_MSG_DATA, + service->localport, + service->remoteport), + elements, count, size, 1); + break; + case VCHIQ_SRVSTATE_OPENSYNC: + status = queue_message_sync(service->state, service, + VCHIQ_MAKE_MSG(VCHIQ_MSG_DATA, + service->localport, + service->remoteport), + elements, count, size, 1); + break; + default: + status = VCHIQ_ERROR; + break; + } + +error_exit: + if (service) + unlock_service(service); + + return status; +} + +void +vchiq_release_message(VCHIQ_SERVICE_HANDLE_T handle, VCHIQ_HEADER_T *header) +{ + VCHIQ_SERVICE_T *service = find_service_by_handle(handle); + VCHIQ_SHARED_STATE_T *remote; + VCHIQ_STATE_T *state; + int slot_index; + + if (!service) + return; + + state = service->state; + remote = state->remote; + + slot_index = SLOT_INDEX_FROM_DATA(state, (void *)header); + + if ((slot_index >= remote->slot_first) && + (slot_index <= remote->slot_last)) { + int msgid = header->msgid; + if (msgid & VCHIQ_MSGID_CLAIMED) { + VCHIQ_SLOT_INFO_T *slot_info = + SLOT_INFO_FROM_INDEX(state, slot_index); + + release_slot(state, slot_info, header, service); + } + } else if (slot_index == remote->slot_sync) + release_message_sync(state, header); + + unlock_service(service); +} + +static void +release_message_sync(VCHIQ_STATE_T *state, VCHIQ_HEADER_T *header) +{ + header->msgid = VCHIQ_MSGID_PADDING; + wmb(); + remote_event_signal(&state->remote->sync_release); +} + +VCHIQ_STATUS_T +vchiq_get_peer_version(VCHIQ_SERVICE_HANDLE_T handle, short *peer_version) +{ + VCHIQ_STATUS_T status = VCHIQ_ERROR; + VCHIQ_SERVICE_T *service = find_service_by_handle(handle); + + if (!service || + (vchiq_check_service(service) != VCHIQ_SUCCESS) || + !peer_version) + goto exit; + *peer_version = service->peer_version; + status = VCHIQ_SUCCESS; + +exit: + if (service) + unlock_service(service); + return status; +} + +VCHIQ_STATUS_T +vchiq_get_config(VCHIQ_INSTANCE_T instance, + int config_size, VCHIQ_CONFIG_T *pconfig) +{ + VCHIQ_CONFIG_T config; + + (void)instance; + + config.max_msg_size = VCHIQ_MAX_MSG_SIZE; + config.bulk_threshold = VCHIQ_MAX_MSG_SIZE; + config.max_outstanding_bulks = VCHIQ_NUM_SERVICE_BULKS; + config.max_services = VCHIQ_MAX_SERVICES; + config.version = VCHIQ_VERSION; + config.version_min = VCHIQ_VERSION_MIN; + + if (config_size > sizeof(VCHIQ_CONFIG_T)) + return VCHIQ_ERROR; + + memcpy(pconfig, &config, + min(config_size, (int)(sizeof(VCHIQ_CONFIG_T)))); + + return VCHIQ_SUCCESS; +} + +VCHIQ_STATUS_T +vchiq_set_service_option(VCHIQ_SERVICE_HANDLE_T handle, + VCHIQ_SERVICE_OPTION_T option, int value) +{ + VCHIQ_SERVICE_T *service = find_service_by_handle(handle); + VCHIQ_STATUS_T status = VCHIQ_ERROR; + + if (service) { + switch (option) { + case VCHIQ_SERVICE_OPTION_AUTOCLOSE: + service->auto_close = value; + status = VCHIQ_SUCCESS; + break; + + case VCHIQ_SERVICE_OPTION_SLOT_QUOTA: { + VCHIQ_SERVICE_QUOTA_T *service_quota = + &service->state->service_quotas[ + service->localport]; + if (value == 0) + value = service->state->default_slot_quota; + if ((value >= service_quota->slot_use_count) && + (value < (unsigned short)~0)) { + service_quota->slot_quota = value; + if ((value >= service_quota->slot_use_count) && + (service_quota->message_quota >= + service_quota->message_use_count)) { + /* Signal the service that it may have + ** dropped below its quota */ + up(&service_quota->quota_event); + } + status = VCHIQ_SUCCESS; + } + } break; + + case VCHIQ_SERVICE_OPTION_MESSAGE_QUOTA: { + VCHIQ_SERVICE_QUOTA_T *service_quota = + &service->state->service_quotas[ + service->localport]; + if (value == 0) + value = service->state->default_message_quota; + if ((value >= service_quota->message_use_count) && + (value < (unsigned short)~0)) { + service_quota->message_quota = value; + if ((value >= + service_quota->message_use_count) && + (service_quota->slot_quota >= + service_quota->slot_use_count)) + /* Signal the service that it may have + ** dropped below its quota */ + up(&service_quota->quota_event); + status = VCHIQ_SUCCESS; + } + } break; + + case VCHIQ_SERVICE_OPTION_SYNCHRONOUS: + if ((service->srvstate == VCHIQ_SRVSTATE_HIDDEN) || + (service->srvstate == + VCHIQ_SRVSTATE_LISTENING)) { + service->sync = value; + status = VCHIQ_SUCCESS; + } + break; + + case VCHIQ_SERVICE_OPTION_TRACE: + service->trace = value; + status = VCHIQ_SUCCESS; + break; + + default: + break; + } + unlock_service(service); + } + + return status; +} + +void +vchiq_dump_shared_state(void *dump_context, VCHIQ_STATE_T *state, + VCHIQ_SHARED_STATE_T *shared, const char *label) +{ + static const char *const debug_names[] = { + "", + "SLOT_HANDLER_COUNT", + "SLOT_HANDLER_LINE", + "PARSE_LINE", + "PARSE_HEADER", + "PARSE_MSGID", + "AWAIT_COMPLETION_LINE", + "DEQUEUE_MESSAGE_LINE", + "SERVICE_CALLBACK_LINE", + "MSG_QUEUE_FULL_COUNT", + "COMPLETION_QUEUE_FULL_COUNT" + }; + int i; + + char buf[80]; + int len; + len = snprintf(buf, sizeof(buf), + " %s: slots %d-%d tx_pos=%x recycle=%x", + label, shared->slot_first, shared->slot_last, + shared->tx_pos, shared->slot_queue_recycle); + vchiq_dump(dump_context, buf, len + 1); + + len = snprintf(buf, sizeof(buf), + " Slots claimed:"); + vchiq_dump(dump_context, buf, len + 1); + + for (i = shared->slot_first; i <= shared->slot_last; i++) { + VCHIQ_SLOT_INFO_T slot_info = *SLOT_INFO_FROM_INDEX(state, i); + if (slot_info.use_count != slot_info.release_count) { + len = snprintf(buf, sizeof(buf), + " %d: %d/%d", i, slot_info.use_count, + slot_info.release_count); + vchiq_dump(dump_context, buf, len + 1); + } + } + + for (i = 1; i < shared->debug[DEBUG_ENTRIES]; i++) { + len = snprintf(buf, sizeof(buf), " DEBUG: %s = %d(%x)", + debug_names[i], shared->debug[i], shared->debug[i]); + vchiq_dump(dump_context, buf, len + 1); + } +} + +void +vchiq_dump_state(void *dump_context, VCHIQ_STATE_T *state) +{ + char buf[80]; + int len; + int i; + + len = snprintf(buf, sizeof(buf), "State %d: %s", state->id, + conn_state_names[state->conn_state]); + vchiq_dump(dump_context, buf, len + 1); + + len = snprintf(buf, sizeof(buf), + " tx_pos=%x(@%x), rx_pos=%x(@%x)", + state->local->tx_pos, + (uint32_t)state->tx_data + + (state->local_tx_pos & VCHIQ_SLOT_MASK), + state->rx_pos, + (uint32_t)state->rx_data + + (state->rx_pos & VCHIQ_SLOT_MASK)); + vchiq_dump(dump_context, buf, len + 1); + + len = snprintf(buf, sizeof(buf), + " Version: %d (min %d)", + VCHIQ_VERSION, VCHIQ_VERSION_MIN); + vchiq_dump(dump_context, buf, len + 1); + + if (VCHIQ_ENABLE_STATS) { + len = snprintf(buf, sizeof(buf), + " Stats: ctrl_tx_count=%d, ctrl_rx_count=%d, " + "error_count=%d", + state->stats.ctrl_tx_count, state->stats.ctrl_rx_count, + state->stats.error_count); + vchiq_dump(dump_context, buf, len + 1); + } + + len = snprintf(buf, sizeof(buf), + " Slots: %d available (%d data), %d recyclable, %d stalls " + "(%d data)", + ((state->slot_queue_available * VCHIQ_SLOT_SIZE) - + state->local_tx_pos) / VCHIQ_SLOT_SIZE, + state->data_quota - state->data_use_count, + state->local->slot_queue_recycle - state->slot_queue_available, + state->stats.slot_stalls, state->stats.data_stalls); + vchiq_dump(dump_context, buf, len + 1); + + vchiq_dump_platform_state(dump_context); + + vchiq_dump_shared_state(dump_context, state, state->local, "Local"); + vchiq_dump_shared_state(dump_context, state, state->remote, "Remote"); + + vchiq_dump_platform_instances(dump_context); + + for (i = 0; i < state->unused_service; i++) { + VCHIQ_SERVICE_T *service = find_service_by_port(state, i); + + if (service) { + vchiq_dump_service_state(dump_context, service); + unlock_service(service); + } + } +} + +void +vchiq_dump_service_state(void *dump_context, VCHIQ_SERVICE_T *service) +{ + char buf[80]; + int len; + + len = snprintf(buf, sizeof(buf), "Service %d: %s (ref %u)", + service->localport, srvstate_names[service->srvstate], + service->ref_count - 1); /*Don't include the lock just taken*/ + + if (service->srvstate != VCHIQ_SRVSTATE_FREE) { + char remoteport[30]; + VCHIQ_SERVICE_QUOTA_T *service_quota = + &service->state->service_quotas[service->localport]; + int fourcc = service->base.fourcc; + int tx_pending, rx_pending; + if (service->remoteport != VCHIQ_PORT_FREE) { + int len2 = snprintf(remoteport, sizeof(remoteport), + "%d", service->remoteport); + if (service->public_fourcc != VCHIQ_FOURCC_INVALID) + snprintf(remoteport + len2, + sizeof(remoteport) - len2, + " (client %x)", service->client_id); + } else + strcpy(remoteport, "n/a"); + + len += snprintf(buf + len, sizeof(buf) - len, + " '%c%c%c%c' remote %s (msg use %d/%d, slot use %d/%d)", + VCHIQ_FOURCC_AS_4CHARS(fourcc), + remoteport, + service_quota->message_use_count, + service_quota->message_quota, + service_quota->slot_use_count, + service_quota->slot_quota); + + vchiq_dump(dump_context, buf, len + 1); + + tx_pending = service->bulk_tx.local_insert - + service->bulk_tx.remote_insert; + + rx_pending = service->bulk_rx.local_insert - + service->bulk_rx.remote_insert; + + len = snprintf(buf, sizeof(buf), + " Bulk: tx_pending=%d (size %d)," + " rx_pending=%d (size %d)", + tx_pending, + tx_pending ? service->bulk_tx.bulks[ + BULK_INDEX(service->bulk_tx.remove)].size : 0, + rx_pending, + rx_pending ? service->bulk_rx.bulks[ + BULK_INDEX(service->bulk_rx.remove)].size : 0); + + if (VCHIQ_ENABLE_STATS) { + vchiq_dump(dump_context, buf, len + 1); + + len = snprintf(buf, sizeof(buf), + " Ctrl: tx_count=%d, tx_bytes=%llu, " + "rx_count=%d, rx_bytes=%llu", + service->stats.ctrl_tx_count, + service->stats.ctrl_tx_bytes, + service->stats.ctrl_rx_count, + service->stats.ctrl_rx_bytes); + vchiq_dump(dump_context, buf, len + 1); + + len = snprintf(buf, sizeof(buf), + " Bulk: tx_count=%d, tx_bytes=%llu, " + "rx_count=%d, rx_bytes=%llu", + service->stats.bulk_tx_count, + service->stats.bulk_tx_bytes, + service->stats.bulk_rx_count, + service->stats.bulk_rx_bytes); + vchiq_dump(dump_context, buf, len + 1); + + len = snprintf(buf, sizeof(buf), + " %d quota stalls, %d slot stalls, " + "%d bulk stalls, %d aborted, %d errors", + service->stats.quota_stalls, + service->stats.slot_stalls, + service->stats.bulk_stalls, + service->stats.bulk_aborted_count, + service->stats.error_count); + } + } + + vchiq_dump(dump_context, buf, len + 1); + + if (service->srvstate != VCHIQ_SRVSTATE_FREE) + vchiq_dump_platform_service_state(dump_context, service); +} + + +void +vchiq_loud_error_header(void) +{ + vchiq_log_error(vchiq_core_log_level, + "============================================================" + "================"); + vchiq_log_error(vchiq_core_log_level, + "============================================================" + "================"); + vchiq_log_error(vchiq_core_log_level, "====="); +} + +void +vchiq_loud_error_footer(void) +{ + vchiq_log_error(vchiq_core_log_level, "====="); + vchiq_log_error(vchiq_core_log_level, + "============================================================" + "================"); + vchiq_log_error(vchiq_core_log_level, + "============================================================" + "================"); +} + + +VCHIQ_STATUS_T vchiq_send_remote_use(VCHIQ_STATE_T *state) +{ + VCHIQ_STATUS_T status = VCHIQ_RETRY; + if (state->conn_state != VCHIQ_CONNSTATE_DISCONNECTED) + status = queue_message(state, NULL, + VCHIQ_MAKE_MSG(VCHIQ_MSG_REMOTE_USE, 0, 0), + NULL, 0, 0, 0); + return status; +} + +VCHIQ_STATUS_T vchiq_send_remote_release(VCHIQ_STATE_T *state) +{ + VCHIQ_STATUS_T status = VCHIQ_RETRY; + if (state->conn_state != VCHIQ_CONNSTATE_DISCONNECTED) + status = queue_message(state, NULL, + VCHIQ_MAKE_MSG(VCHIQ_MSG_REMOTE_RELEASE, 0, 0), + NULL, 0, 0, 0); + return status; +} + +VCHIQ_STATUS_T vchiq_send_remote_use_active(VCHIQ_STATE_T *state) +{ + VCHIQ_STATUS_T status = VCHIQ_RETRY; + if (state->conn_state != VCHIQ_CONNSTATE_DISCONNECTED) + status = queue_message(state, NULL, + VCHIQ_MAKE_MSG(VCHIQ_MSG_REMOTE_USE_ACTIVE, 0, 0), + NULL, 0, 0, 0); + return status; +} + +void vchiq_log_dump_mem(const char *label, uint32_t addr, const void *voidMem, + size_t numBytes) +{ + const uint8_t *mem = (const uint8_t *)voidMem; + size_t offset; + char lineBuf[100]; + char *s; + + while (numBytes > 0) { + s = lineBuf; + + for (offset = 0; offset < 16; offset++) { + if (offset < numBytes) + s += snprintf(s, 4, "%02x ", mem[offset]); + else + s += snprintf(s, 4, " "); + } + + for (offset = 0; offset < 16; offset++) { + if (offset < numBytes) { + uint8_t ch = mem[offset]; + + if ((ch < ' ') || (ch > '~')) + ch = '.'; + *s++ = (char)ch; + } + } + *s++ = '\0'; + + if ((label != NULL) && (*label != '\0')) + vchiq_log_trace(VCHIQ_LOG_TRACE, + "%s: %08x: %s", label, addr, lineBuf); + else + vchiq_log_trace(VCHIQ_LOG_TRACE, + "%08x: %s", addr, lineBuf); + + addr += 16; + mem += 16; + if (numBytes > 16) + numBytes -= 16; + else + numBytes = 0; + } +} --- linux-raspi2-4.2.0.orig/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_core.h +++ linux-raspi2-4.2.0/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_core.h @@ -0,0 +1,712 @@ +/** + * Copyright (c) 2010-2012 Broadcom. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions, and the following disclaimer, + * without modification. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The names of the above-listed copyright holders may not be used + * to endorse or promote products derived from this software without + * specific prior written permission. + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") version 2, as published by the Free + * Software Foundation. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS + * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef VCHIQ_CORE_H +#define VCHIQ_CORE_H + +#include +#include +#include + +#include "vchiq_cfg.h" + +#include "vchiq.h" + +/* Run time control of log level, based on KERN_XXX level. */ +#define VCHIQ_LOG_DEFAULT 4 +#define VCHIQ_LOG_ERROR 3 +#define VCHIQ_LOG_WARNING 4 +#define VCHIQ_LOG_INFO 6 +#define VCHIQ_LOG_TRACE 7 + +#define VCHIQ_LOG_PREFIX KERN_INFO "vchiq: " + +#ifndef vchiq_log_error +#define vchiq_log_error(cat, fmt, ...) \ + do { if (cat >= VCHIQ_LOG_ERROR) \ + printk(VCHIQ_LOG_PREFIX fmt "\n", ##__VA_ARGS__); } while (0) +#endif +#ifndef vchiq_log_warning +#define vchiq_log_warning(cat, fmt, ...) \ + do { if (cat >= VCHIQ_LOG_WARNING) \ + printk(VCHIQ_LOG_PREFIX fmt "\n", ##__VA_ARGS__); } while (0) +#endif +#ifndef vchiq_log_info +#define vchiq_log_info(cat, fmt, ...) \ + do { if (cat >= VCHIQ_LOG_INFO) \ + printk(VCHIQ_LOG_PREFIX fmt "\n", ##__VA_ARGS__); } while (0) +#endif +#ifndef vchiq_log_trace +#define vchiq_log_trace(cat, fmt, ...) \ + do { if (cat >= VCHIQ_LOG_TRACE) \ + printk(VCHIQ_LOG_PREFIX fmt "\n", ##__VA_ARGS__); } while (0) +#endif + +#define vchiq_loud_error(...) \ + vchiq_log_error(vchiq_core_log_level, "===== " __VA_ARGS__) + +#ifndef vchiq_static_assert +#define vchiq_static_assert(cond) __attribute__((unused)) \ + extern int vchiq_static_assert[(cond) ? 1 : -1] +#endif + +#define IS_POW2(x) (x && ((x & (x - 1)) == 0)) + +/* Ensure that the slot size and maximum number of slots are powers of 2 */ +vchiq_static_assert(IS_POW2(VCHIQ_SLOT_SIZE)); +vchiq_static_assert(IS_POW2(VCHIQ_MAX_SLOTS)); +vchiq_static_assert(IS_POW2(VCHIQ_MAX_SLOTS_PER_SIDE)); + +#define VCHIQ_SLOT_MASK (VCHIQ_SLOT_SIZE - 1) +#define VCHIQ_SLOT_QUEUE_MASK (VCHIQ_MAX_SLOTS_PER_SIDE - 1) +#define VCHIQ_SLOT_ZERO_SLOTS ((sizeof(VCHIQ_SLOT_ZERO_T) + \ + VCHIQ_SLOT_SIZE - 1) / VCHIQ_SLOT_SIZE) + +#define VCHIQ_MSG_PADDING 0 /* - */ +#define VCHIQ_MSG_CONNECT 1 /* - */ +#define VCHIQ_MSG_OPEN 2 /* + (srcport, -), fourcc, client_id */ +#define VCHIQ_MSG_OPENACK 3 /* + (srcport, dstport) */ +#define VCHIQ_MSG_CLOSE 4 /* + (srcport, dstport) */ +#define VCHIQ_MSG_DATA 5 /* + (srcport, dstport) */ +#define VCHIQ_MSG_BULK_RX 6 /* + (srcport, dstport), data, size */ +#define VCHIQ_MSG_BULK_TX 7 /* + (srcport, dstport), data, size */ +#define VCHIQ_MSG_BULK_RX_DONE 8 /* + (srcport, dstport), actual */ +#define VCHIQ_MSG_BULK_TX_DONE 9 /* + (srcport, dstport), actual */ +#define VCHIQ_MSG_PAUSE 10 /* - */ +#define VCHIQ_MSG_RESUME 11 /* - */ +#define VCHIQ_MSG_REMOTE_USE 12 /* - */ +#define VCHIQ_MSG_REMOTE_RELEASE 13 /* - */ +#define VCHIQ_MSG_REMOTE_USE_ACTIVE 14 /* - */ + +#define VCHIQ_PORT_MAX (VCHIQ_MAX_SERVICES - 1) +#define VCHIQ_PORT_FREE 0x1000 +#define VCHIQ_PORT_IS_VALID(port) (port < VCHIQ_PORT_FREE) +#define VCHIQ_MAKE_MSG(type, srcport, dstport) \ + ((type<<24) | (srcport<<12) | (dstport<<0)) +#define VCHIQ_MSG_TYPE(msgid) ((unsigned int)msgid >> 24) +#define VCHIQ_MSG_SRCPORT(msgid) \ + (unsigned short)(((unsigned int)msgid >> 12) & 0xfff) +#define VCHIQ_MSG_DSTPORT(msgid) \ + ((unsigned short)msgid & 0xfff) + +#define VCHIQ_FOURCC_AS_4CHARS(fourcc) \ + ((fourcc) >> 24) & 0xff, \ + ((fourcc) >> 16) & 0xff, \ + ((fourcc) >> 8) & 0xff, \ + (fourcc) & 0xff + +/* Ensure the fields are wide enough */ +vchiq_static_assert(VCHIQ_MSG_SRCPORT(VCHIQ_MAKE_MSG(0, 0, VCHIQ_PORT_MAX)) + == 0); +vchiq_static_assert(VCHIQ_MSG_TYPE(VCHIQ_MAKE_MSG(0, VCHIQ_PORT_MAX, 0)) == 0); +vchiq_static_assert((unsigned int)VCHIQ_PORT_MAX < + (unsigned int)VCHIQ_PORT_FREE); + +#define VCHIQ_MSGID_PADDING VCHIQ_MAKE_MSG(VCHIQ_MSG_PADDING, 0, 0) +#define VCHIQ_MSGID_CLAIMED 0x40000000 + +#define VCHIQ_FOURCC_INVALID 0x00000000 +#define VCHIQ_FOURCC_IS_LEGAL(fourcc) (fourcc != VCHIQ_FOURCC_INVALID) + +#define VCHIQ_BULK_ACTUAL_ABORTED -1 + +typedef uint32_t BITSET_T; + +vchiq_static_assert((sizeof(BITSET_T) * 8) == 32); + +#define BITSET_SIZE(b) ((b + 31) >> 5) +#define BITSET_WORD(b) (b >> 5) +#define BITSET_BIT(b) (1 << (b & 31)) +#define BITSET_ZERO(bs) memset(bs, 0, sizeof(bs)) +#define BITSET_IS_SET(bs, b) (bs[BITSET_WORD(b)] & BITSET_BIT(b)) +#define BITSET_SET(bs, b) (bs[BITSET_WORD(b)] |= BITSET_BIT(b)) +#define BITSET_CLR(bs, b) (bs[BITSET_WORD(b)] &= ~BITSET_BIT(b)) + +#if VCHIQ_ENABLE_STATS +#define VCHIQ_STATS_INC(state, stat) (state->stats. stat++) +#define VCHIQ_SERVICE_STATS_INC(service, stat) (service->stats. stat++) +#define VCHIQ_SERVICE_STATS_ADD(service, stat, addend) \ + (service->stats. stat += addend) +#else +#define VCHIQ_STATS_INC(state, stat) ((void)0) +#define VCHIQ_SERVICE_STATS_INC(service, stat) ((void)0) +#define VCHIQ_SERVICE_STATS_ADD(service, stat, addend) ((void)0) +#endif + +enum { + DEBUG_ENTRIES, +#if VCHIQ_ENABLE_DEBUG + DEBUG_SLOT_HANDLER_COUNT, + DEBUG_SLOT_HANDLER_LINE, + DEBUG_PARSE_LINE, + DEBUG_PARSE_HEADER, + DEBUG_PARSE_MSGID, + DEBUG_AWAIT_COMPLETION_LINE, + DEBUG_DEQUEUE_MESSAGE_LINE, + DEBUG_SERVICE_CALLBACK_LINE, + DEBUG_MSG_QUEUE_FULL_COUNT, + DEBUG_COMPLETION_QUEUE_FULL_COUNT, +#endif + DEBUG_MAX +}; + +#if VCHIQ_ENABLE_DEBUG + +#define DEBUG_INITIALISE(local) int *debug_ptr = (local)->debug; +#define DEBUG_TRACE(d) \ + do { debug_ptr[DEBUG_ ## d] = __LINE__; dsb(); } while (0) +#define DEBUG_VALUE(d, v) \ + do { debug_ptr[DEBUG_ ## d] = (v); dsb(); } while (0) +#define DEBUG_COUNT(d) \ + do { debug_ptr[DEBUG_ ## d]++; dsb(); } while (0) + +#else /* VCHIQ_ENABLE_DEBUG */ + +#define DEBUG_INITIALISE(local) +#define DEBUG_TRACE(d) +#define DEBUG_VALUE(d, v) +#define DEBUG_COUNT(d) + +#endif /* VCHIQ_ENABLE_DEBUG */ + +typedef enum { + VCHIQ_CONNSTATE_DISCONNECTED, + VCHIQ_CONNSTATE_CONNECTING, + VCHIQ_CONNSTATE_CONNECTED, + VCHIQ_CONNSTATE_PAUSING, + VCHIQ_CONNSTATE_PAUSE_SENT, + VCHIQ_CONNSTATE_PAUSED, + VCHIQ_CONNSTATE_RESUMING, + VCHIQ_CONNSTATE_PAUSE_TIMEOUT, + VCHIQ_CONNSTATE_RESUME_TIMEOUT +} VCHIQ_CONNSTATE_T; + +enum { + VCHIQ_SRVSTATE_FREE, + VCHIQ_SRVSTATE_HIDDEN, + VCHIQ_SRVSTATE_LISTENING, + VCHIQ_SRVSTATE_OPENING, + VCHIQ_SRVSTATE_OPEN, + VCHIQ_SRVSTATE_OPENSYNC, + VCHIQ_SRVSTATE_CLOSESENT, + VCHIQ_SRVSTATE_CLOSERECVD, + VCHIQ_SRVSTATE_CLOSEWAIT, + VCHIQ_SRVSTATE_CLOSED +}; + +enum { + VCHIQ_POLL_TERMINATE, + VCHIQ_POLL_REMOVE, + VCHIQ_POLL_TXNOTIFY, + VCHIQ_POLL_RXNOTIFY, + VCHIQ_POLL_COUNT +}; + +typedef enum { + VCHIQ_BULK_TRANSMIT, + VCHIQ_BULK_RECEIVE +} VCHIQ_BULK_DIR_T; + +typedef void (*VCHIQ_USERDATA_TERM_T)(void *userdata); + +typedef struct vchiq_bulk_struct { + short mode; + short dir; + void *userdata; + VCHI_MEM_HANDLE_T handle; + void *data; + int size; + void *remote_data; + int remote_size; + int actual; +} VCHIQ_BULK_T; + +typedef struct vchiq_bulk_queue_struct { + int local_insert; /* Where to insert the next local bulk */ + int remote_insert; /* Where to insert the next remote bulk (master) */ + int process; /* Bulk to transfer next */ + int remote_notify; /* Bulk to notify the remote client of next (mstr) */ + int remove; /* Bulk to notify the local client of, and remove, + ** next */ + VCHIQ_BULK_T bulks[VCHIQ_NUM_SERVICE_BULKS]; +} VCHIQ_BULK_QUEUE_T; + +typedef struct remote_event_struct { + int armed; + int fired; + struct semaphore *event; +} REMOTE_EVENT_T; + +typedef struct opaque_platform_state_t *VCHIQ_PLATFORM_STATE_T; + +typedef struct vchiq_state_struct VCHIQ_STATE_T; + +typedef struct vchiq_slot_struct { + char data[VCHIQ_SLOT_SIZE]; +} VCHIQ_SLOT_T; + +typedef struct vchiq_slot_info_struct { + /* Use two counters rather than one to avoid the need for a mutex. */ + short use_count; + short release_count; +} VCHIQ_SLOT_INFO_T; + +typedef struct vchiq_service_struct { + VCHIQ_SERVICE_BASE_T base; + VCHIQ_SERVICE_HANDLE_T handle; + unsigned int ref_count; + int srvstate; + VCHIQ_USERDATA_TERM_T userdata_term; + unsigned int localport; + unsigned int remoteport; + int public_fourcc; + int client_id; + char auto_close; + char sync; + char closing; + char trace; + atomic_t poll_flags; + short version; + short version_min; + short peer_version; + + VCHIQ_STATE_T *state; + VCHIQ_INSTANCE_T instance; + + int service_use_count; + + VCHIQ_BULK_QUEUE_T bulk_tx; + VCHIQ_BULK_QUEUE_T bulk_rx; + + struct semaphore remove_event; + struct semaphore bulk_remove_event; + struct mutex bulk_mutex; + + struct service_stats_struct { + int quota_stalls; + int slot_stalls; + int bulk_stalls; + int error_count; + int ctrl_tx_count; + int ctrl_rx_count; + int bulk_tx_count; + int bulk_rx_count; + int bulk_aborted_count; + uint64_t ctrl_tx_bytes; + uint64_t ctrl_rx_bytes; + uint64_t bulk_tx_bytes; + uint64_t bulk_rx_bytes; + } stats; +} VCHIQ_SERVICE_T; + +/* The quota information is outside VCHIQ_SERVICE_T so that it can be + statically allocated, since for accounting reasons a service's slot + usage is carried over between users of the same port number. + */ +typedef struct vchiq_service_quota_struct { + unsigned short slot_quota; + unsigned short slot_use_count; + unsigned short message_quota; + unsigned short message_use_count; + struct semaphore quota_event; + int previous_tx_index; +} VCHIQ_SERVICE_QUOTA_T; + +typedef struct vchiq_shared_state_struct { + + /* A non-zero value here indicates that the content is valid. */ + int initialised; + + /* The first and last (inclusive) slots allocated to the owner. */ + int slot_first; + int slot_last; + + /* The slot allocated to synchronous messages from the owner. */ + int slot_sync; + + /* Signalling this event indicates that owner's slot handler thread + ** should run. */ + REMOTE_EVENT_T trigger; + + /* Indicates the byte position within the stream where the next message + ** will be written. The least significant bits are an index into the + ** slot. The next bits are the index of the slot in slot_queue. */ + int tx_pos; + + /* This event should be signalled when a slot is recycled. */ + REMOTE_EVENT_T recycle; + + /* The slot_queue index where the next recycled slot will be written. */ + int slot_queue_recycle; + + /* This event should be signalled when a synchronous message is sent. */ + REMOTE_EVENT_T sync_trigger; + + /* This event should be signalled when a synchronous message has been + ** released. */ + REMOTE_EVENT_T sync_release; + + /* A circular buffer of slot indexes. */ + int slot_queue[VCHIQ_MAX_SLOTS_PER_SIDE]; + + /* Debugging state */ + int debug[DEBUG_MAX]; +} VCHIQ_SHARED_STATE_T; + +typedef struct vchiq_slot_zero_struct { + int magic; + short version; + short version_min; + int slot_zero_size; + int slot_size; + int max_slots; + int max_slots_per_side; + int platform_data[2]; + VCHIQ_SHARED_STATE_T master; + VCHIQ_SHARED_STATE_T slave; + VCHIQ_SLOT_INFO_T slots[VCHIQ_MAX_SLOTS]; +} VCHIQ_SLOT_ZERO_T; + +struct vchiq_state_struct { + int id; + int initialised; + VCHIQ_CONNSTATE_T conn_state; + int is_master; + short version_common; + + VCHIQ_SHARED_STATE_T *local; + VCHIQ_SHARED_STATE_T *remote; + VCHIQ_SLOT_T *slot_data; + + unsigned short default_slot_quota; + unsigned short default_message_quota; + + /* Event indicating connect message received */ + struct semaphore connect; + + /* Mutex protecting services */ + struct mutex mutex; + VCHIQ_INSTANCE_T *instance; + + /* Processes incoming messages */ + struct task_struct *slot_handler_thread; + + /* Processes recycled slots */ + struct task_struct *recycle_thread; + + /* Processes synchronous messages */ + struct task_struct *sync_thread; + + /* Local implementation of the trigger remote event */ + struct semaphore trigger_event; + + /* Local implementation of the recycle remote event */ + struct semaphore recycle_event; + + /* Local implementation of the sync trigger remote event */ + struct semaphore sync_trigger_event; + + /* Local implementation of the sync release remote event */ + struct semaphore sync_release_event; + + char *tx_data; + char *rx_data; + VCHIQ_SLOT_INFO_T *rx_info; + + struct mutex slot_mutex; + + struct mutex recycle_mutex; + + struct mutex sync_mutex; + + struct mutex bulk_transfer_mutex; + + /* Indicates the byte position within the stream from where the next + ** message will be read. The least significant bits are an index into + ** the slot.The next bits are the index of the slot in + ** remote->slot_queue. */ + int rx_pos; + + /* A cached copy of local->tx_pos. Only write to local->tx_pos, and read + from remote->tx_pos. */ + int local_tx_pos; + + /* The slot_queue index of the slot to become available next. */ + int slot_queue_available; + + /* A flag to indicate if any poll has been requested */ + int poll_needed; + + /* Ths index of the previous slot used for data messages. */ + int previous_data_index; + + /* The number of slots occupied by data messages. */ + unsigned short data_use_count; + + /* The maximum number of slots to be occupied by data messages. */ + unsigned short data_quota; + + /* An array of bit sets indicating which services must be polled. */ + atomic_t poll_services[BITSET_SIZE(VCHIQ_MAX_SERVICES)]; + + /* The number of the first unused service */ + int unused_service; + + /* Signalled when a free slot becomes available. */ + struct semaphore slot_available_event; + + struct semaphore slot_remove_event; + + /* Signalled when a free data slot becomes available. */ + struct semaphore data_quota_event; + + /* Incremented when there are bulk transfers which cannot be processed + * whilst paused and must be processed on resume */ + int deferred_bulks; + + struct state_stats_struct { + int slot_stalls; + int data_stalls; + int ctrl_tx_count; + int ctrl_rx_count; + int error_count; + } stats; + + VCHIQ_SERVICE_T * services[VCHIQ_MAX_SERVICES]; + VCHIQ_SERVICE_QUOTA_T service_quotas[VCHIQ_MAX_SERVICES]; + VCHIQ_SLOT_INFO_T slot_info[VCHIQ_MAX_SLOTS]; + + VCHIQ_PLATFORM_STATE_T platform_state; +}; + +struct bulk_waiter { + VCHIQ_BULK_T *bulk; + struct semaphore event; + int actual; +}; + +extern spinlock_t bulk_waiter_spinlock; + +extern int vchiq_core_log_level; +extern int vchiq_core_msg_log_level; +extern int vchiq_sync_log_level; + +extern VCHIQ_STATE_T *vchiq_states[VCHIQ_MAX_STATES]; + +extern const char * +get_conn_state_name(VCHIQ_CONNSTATE_T conn_state); + +extern VCHIQ_SLOT_ZERO_T * +vchiq_init_slots(void *mem_base, int mem_size); + +extern VCHIQ_STATUS_T +vchiq_init_state(VCHIQ_STATE_T *state, VCHIQ_SLOT_ZERO_T *slot_zero, + int is_master); + +extern VCHIQ_STATUS_T +vchiq_connect_internal(VCHIQ_STATE_T *state, VCHIQ_INSTANCE_T instance); + +extern VCHIQ_SERVICE_T * +vchiq_add_service_internal(VCHIQ_STATE_T *state, + const VCHIQ_SERVICE_PARAMS_T *params, int srvstate, + VCHIQ_INSTANCE_T instance, VCHIQ_USERDATA_TERM_T userdata_term); + +extern VCHIQ_STATUS_T +vchiq_open_service_internal(VCHIQ_SERVICE_T *service, int client_id); + +extern VCHIQ_STATUS_T +vchiq_close_service_internal(VCHIQ_SERVICE_T *service, int close_recvd); + +extern void +vchiq_terminate_service_internal(VCHIQ_SERVICE_T *service); + +extern void +vchiq_free_service_internal(VCHIQ_SERVICE_T *service); + +extern VCHIQ_STATUS_T +vchiq_shutdown_internal(VCHIQ_STATE_T *state, VCHIQ_INSTANCE_T instance); + +extern VCHIQ_STATUS_T +vchiq_pause_internal(VCHIQ_STATE_T *state); + +extern VCHIQ_STATUS_T +vchiq_resume_internal(VCHIQ_STATE_T *state); + +extern void +remote_event_pollall(VCHIQ_STATE_T *state); + +extern VCHIQ_STATUS_T +vchiq_bulk_transfer(VCHIQ_SERVICE_HANDLE_T handle, + VCHI_MEM_HANDLE_T memhandle, void *offset, int size, void *userdata, + VCHIQ_BULK_MODE_T mode, VCHIQ_BULK_DIR_T dir); + +extern void +vchiq_dump_state(void *dump_context, VCHIQ_STATE_T *state); + +extern void +vchiq_dump_service_state(void *dump_context, VCHIQ_SERVICE_T *service); + +extern void +vchiq_loud_error_header(void); + +extern void +vchiq_loud_error_footer(void); + +extern void +request_poll(VCHIQ_STATE_T *state, VCHIQ_SERVICE_T *service, int poll_type); + +static inline VCHIQ_SERVICE_T * +handle_to_service(VCHIQ_SERVICE_HANDLE_T handle) +{ + VCHIQ_STATE_T *state = vchiq_states[(handle / VCHIQ_MAX_SERVICES) & + (VCHIQ_MAX_STATES - 1)]; + if (!state) + return NULL; + + return state->services[handle & (VCHIQ_MAX_SERVICES - 1)]; +} + +extern VCHIQ_SERVICE_T * +find_service_by_handle(VCHIQ_SERVICE_HANDLE_T handle); + +extern VCHIQ_SERVICE_T * +find_service_by_port(VCHIQ_STATE_T *state, int localport); + +extern VCHIQ_SERVICE_T * +find_service_for_instance(VCHIQ_INSTANCE_T instance, + VCHIQ_SERVICE_HANDLE_T handle); + +extern VCHIQ_SERVICE_T * +find_closed_service_for_instance(VCHIQ_INSTANCE_T instance, + VCHIQ_SERVICE_HANDLE_T handle); + +extern VCHIQ_SERVICE_T * +next_service_by_instance(VCHIQ_STATE_T *state, VCHIQ_INSTANCE_T instance, + int *pidx); + +extern void +lock_service(VCHIQ_SERVICE_T *service); + +extern void +unlock_service(VCHIQ_SERVICE_T *service); + +/* The following functions are called from vchiq_core, and external +** implementations must be provided. */ + +extern VCHIQ_STATUS_T +vchiq_prepare_bulk_data(VCHIQ_BULK_T *bulk, + VCHI_MEM_HANDLE_T memhandle, void *offset, int size, int dir); + +extern void +vchiq_transfer_bulk(VCHIQ_BULK_T *bulk); + +extern void +vchiq_complete_bulk(VCHIQ_BULK_T *bulk); + +extern VCHIQ_STATUS_T +vchiq_copy_from_user(void *dst, const void *src, int size); + +extern void +remote_event_signal(REMOTE_EVENT_T *event); + +void +vchiq_platform_check_suspend(VCHIQ_STATE_T *state); + +extern void +vchiq_platform_paused(VCHIQ_STATE_T *state); + +extern VCHIQ_STATUS_T +vchiq_platform_resume(VCHIQ_STATE_T *state); + +extern void +vchiq_platform_resumed(VCHIQ_STATE_T *state); + +extern void +vchiq_dump(void *dump_context, const char *str, int len); + +extern void +vchiq_dump_platform_state(void *dump_context); + +extern void +vchiq_dump_platform_instances(void *dump_context); + +extern void +vchiq_dump_platform_service_state(void *dump_context, + VCHIQ_SERVICE_T *service); + +extern VCHIQ_STATUS_T +vchiq_use_service_internal(VCHIQ_SERVICE_T *service); + +extern VCHIQ_STATUS_T +vchiq_release_service_internal(VCHIQ_SERVICE_T *service); + +extern void +vchiq_on_remote_use(VCHIQ_STATE_T *state); + +extern void +vchiq_on_remote_release(VCHIQ_STATE_T *state); + +extern VCHIQ_STATUS_T +vchiq_platform_init_state(VCHIQ_STATE_T *state); + +extern VCHIQ_STATUS_T +vchiq_check_service(VCHIQ_SERVICE_T *service); + +extern void +vchiq_on_remote_use_active(VCHIQ_STATE_T *state); + +extern VCHIQ_STATUS_T +vchiq_send_remote_use(VCHIQ_STATE_T *state); + +extern VCHIQ_STATUS_T +vchiq_send_remote_release(VCHIQ_STATE_T *state); + +extern VCHIQ_STATUS_T +vchiq_send_remote_use_active(VCHIQ_STATE_T *state); + +extern void +vchiq_platform_conn_state_changed(VCHIQ_STATE_T *state, + VCHIQ_CONNSTATE_T oldstate, VCHIQ_CONNSTATE_T newstate); + +extern void +vchiq_platform_handle_timeout(VCHIQ_STATE_T *state); + +extern void +vchiq_set_conn_state(VCHIQ_STATE_T *state, VCHIQ_CONNSTATE_T newstate); + + +extern void +vchiq_log_dump_mem(const char *label, uint32_t addr, const void *voidMem, + size_t numBytes); + +#endif --- linux-raspi2-4.2.0.orig/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_debugfs.c +++ linux-raspi2-4.2.0/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_debugfs.c @@ -0,0 +1,383 @@ +/** + * Copyright (c) 2014 Raspberry Pi (Trading) Ltd. All rights reserved. + * Copyright (c) 2010-2012 Broadcom. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions, and the following disclaimer, + * without modification. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The names of the above-listed copyright holders may not be used + * to endorse or promote products derived from this software without + * specific prior written permission. + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") version 2, as published by the Free + * Software Foundation. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS + * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + + +#include +#include "vchiq_core.h" +#include "vchiq_arm.h" +#include "vchiq_debugfs.h" + +#ifdef CONFIG_DEBUG_FS + +/**************************************************************************** +* +* log category entries +* +***************************************************************************/ +#define DEBUGFS_WRITE_BUF_SIZE 256 + +#define VCHIQ_LOG_ERROR_STR "error" +#define VCHIQ_LOG_WARNING_STR "warning" +#define VCHIQ_LOG_INFO_STR "info" +#define VCHIQ_LOG_TRACE_STR "trace" + + +/* Top-level debug info */ +struct vchiq_debugfs_info { + /* Global 'vchiq' debugfs entry used by all instances */ + struct dentry *vchiq_cfg_dir; + + /* one entry per client process */ + struct dentry *clients; + + /* log categories */ + struct dentry *log_categories; +}; + +static struct vchiq_debugfs_info debugfs_info; + +/* Log category debugfs entries */ +struct vchiq_debugfs_log_entry { + const char *name; + int *plevel; + struct dentry *dir; +}; + +static struct vchiq_debugfs_log_entry vchiq_debugfs_log_entries[] = { + { "core", &vchiq_core_log_level }, + { "msg", &vchiq_core_msg_log_level }, + { "sync", &vchiq_sync_log_level }, + { "susp", &vchiq_susp_log_level }, + { "arm", &vchiq_arm_log_level }, +}; +static int n_log_entries = + sizeof(vchiq_debugfs_log_entries)/sizeof(vchiq_debugfs_log_entries[0]); + + +static struct dentry *vchiq_clients_top(void); +static struct dentry *vchiq_debugfs_top(void); + +static int debugfs_log_show(struct seq_file *f, void *offset) +{ + int *levp = f->private; + char *log_value = NULL; + + switch (*levp) { + case VCHIQ_LOG_ERROR: + log_value = VCHIQ_LOG_ERROR_STR; + break; + case VCHIQ_LOG_WARNING: + log_value = VCHIQ_LOG_WARNING_STR; + break; + case VCHIQ_LOG_INFO: + log_value = VCHIQ_LOG_INFO_STR; + break; + case VCHIQ_LOG_TRACE: + log_value = VCHIQ_LOG_TRACE_STR; + break; + default: + break; + } + + seq_printf(f, "%s\n", log_value ? log_value : "(null)"); + + return 0; +} + +static int debugfs_log_open(struct inode *inode, struct file *file) +{ + return single_open(file, debugfs_log_show, inode->i_private); +} + +static int debugfs_log_write(struct file *file, + const char __user *buffer, + size_t count, loff_t *ppos) +{ + struct seq_file *f = (struct seq_file *)file->private_data; + int *levp = f->private; + char kbuf[DEBUGFS_WRITE_BUF_SIZE + 1]; + + memset(kbuf, 0, DEBUGFS_WRITE_BUF_SIZE + 1); + if (count >= DEBUGFS_WRITE_BUF_SIZE) + count = DEBUGFS_WRITE_BUF_SIZE; + + if (copy_from_user(kbuf, buffer, count) != 0) + return -EFAULT; + kbuf[count - 1] = 0; + + if (strncmp("error", kbuf, strlen("error")) == 0) + *levp = VCHIQ_LOG_ERROR; + else if (strncmp("warning", kbuf, strlen("warning")) == 0) + *levp = VCHIQ_LOG_WARNING; + else if (strncmp("info", kbuf, strlen("info")) == 0) + *levp = VCHIQ_LOG_INFO; + else if (strncmp("trace", kbuf, strlen("trace")) == 0) + *levp = VCHIQ_LOG_TRACE; + else + *levp = VCHIQ_LOG_DEFAULT; + + *ppos += count; + + return count; +} + +static const struct file_operations debugfs_log_fops = { + .owner = THIS_MODULE, + .open = debugfs_log_open, + .write = debugfs_log_write, + .read = seq_read, + .llseek = seq_lseek, + .release = single_release, +}; + +/* create an entry under /vchiq/log for each log category */ +static int vchiq_debugfs_create_log_entries(struct dentry *top) +{ + struct dentry *dir; + size_t i; + int ret = 0; + dir = debugfs_create_dir("log", vchiq_debugfs_top()); + if (!dir) + return -ENOMEM; + debugfs_info.log_categories = dir; + + for (i = 0; i < n_log_entries; i++) { + void *levp = (void *)vchiq_debugfs_log_entries[i].plevel; + dir = debugfs_create_file(vchiq_debugfs_log_entries[i].name, + 0644, + debugfs_info.log_categories, + levp, + &debugfs_log_fops); + if (!dir) { + ret = -ENOMEM; + break; + } + + vchiq_debugfs_log_entries[i].dir = dir; + } + return ret; +} + +static int debugfs_usecount_show(struct seq_file *f, void *offset) +{ + VCHIQ_INSTANCE_T instance = f->private; + int use_count; + + use_count = vchiq_instance_get_use_count(instance); + seq_printf(f, "%d\n", use_count); + + return 0; +} + +static int debugfs_usecount_open(struct inode *inode, struct file *file) +{ + return single_open(file, debugfs_usecount_show, inode->i_private); +} + +static const struct file_operations debugfs_usecount_fops = { + .owner = THIS_MODULE, + .open = debugfs_usecount_open, + .read = seq_read, + .llseek = seq_lseek, + .release = single_release, +}; + +static int debugfs_trace_show(struct seq_file *f, void *offset) +{ + VCHIQ_INSTANCE_T instance = f->private; + int trace; + + trace = vchiq_instance_get_trace(instance); + seq_printf(f, "%s\n", trace ? "Y" : "N"); + + return 0; +} + +static int debugfs_trace_open(struct inode *inode, struct file *file) +{ + return single_open(file, debugfs_trace_show, inode->i_private); +} + +static int debugfs_trace_write(struct file *file, + const char __user *buffer, + size_t count, loff_t *ppos) +{ + struct seq_file *f = (struct seq_file *)file->private_data; + VCHIQ_INSTANCE_T instance = f->private; + char firstchar; + + if (copy_from_user(&firstchar, buffer, 1) != 0) + return -EFAULT; + + switch (firstchar) { + case 'Y': + case 'y': + case '1': + vchiq_instance_set_trace(instance, 1); + break; + case 'N': + case 'n': + case '0': + vchiq_instance_set_trace(instance, 0); + break; + default: + break; + } + + *ppos += count; + + return count; +} + +static const struct file_operations debugfs_trace_fops = { + .owner = THIS_MODULE, + .open = debugfs_trace_open, + .write = debugfs_trace_write, + .read = seq_read, + .llseek = seq_lseek, + .release = single_release, +}; + +/* add an instance (process) to the debugfs entries */ +int vchiq_debugfs_add_instance(VCHIQ_INSTANCE_T instance) +{ + char pidstr[16]; + struct dentry *top, *use_count, *trace; + struct dentry *clients = vchiq_clients_top(); + + snprintf(pidstr, sizeof(pidstr), "%d", + vchiq_instance_get_pid(instance)); + + top = debugfs_create_dir(pidstr, clients); + if (!top) + goto fail_top; + + use_count = debugfs_create_file("use_count", + 0444, top, + instance, + &debugfs_usecount_fops); + if (!use_count) + goto fail_use_count; + + trace = debugfs_create_file("trace", + 0644, top, + instance, + &debugfs_trace_fops); + if (!trace) + goto fail_trace; + + vchiq_instance_get_debugfs_node(instance)->dentry = top; + + return 0; + +fail_trace: + debugfs_remove(use_count); +fail_use_count: + debugfs_remove(top); +fail_top: + return -ENOMEM; +} + +void vchiq_debugfs_remove_instance(VCHIQ_INSTANCE_T instance) +{ + VCHIQ_DEBUGFS_NODE_T *node = vchiq_instance_get_debugfs_node(instance); + debugfs_remove_recursive(node->dentry); +} + + +int vchiq_debugfs_init(void) +{ + BUG_ON(debugfs_info.vchiq_cfg_dir != NULL); + + debugfs_info.vchiq_cfg_dir = debugfs_create_dir("vchiq", NULL); + if (debugfs_info.vchiq_cfg_dir == NULL) + goto fail; + + debugfs_info.clients = debugfs_create_dir("clients", + vchiq_debugfs_top()); + if (!debugfs_info.clients) + goto fail; + + if (vchiq_debugfs_create_log_entries(vchiq_debugfs_top()) != 0) + goto fail; + + return 0; + +fail: + vchiq_debugfs_deinit(); + vchiq_log_error(vchiq_arm_log_level, + "%s: failed to create debugfs directory", + __func__); + + return -ENOMEM; +} + +/* remove all the debugfs entries */ +void vchiq_debugfs_deinit(void) +{ + debugfs_remove_recursive(vchiq_debugfs_top()); +} + +static struct dentry *vchiq_clients_top(void) +{ + return debugfs_info.clients; +} + +static struct dentry *vchiq_debugfs_top(void) +{ + BUG_ON(debugfs_info.vchiq_cfg_dir == NULL); + return debugfs_info.vchiq_cfg_dir; +} + +#else /* CONFIG_DEBUG_FS */ + +int vchiq_debugfs_init(void) +{ + return 0; +} + +void vchiq_debugfs_deinit(void) +{ +} + +int vchiq_debugfs_add_instance(VCHIQ_INSTANCE_T instance) +{ + return 0; +} + +void vchiq_debugfs_remove_instance(VCHIQ_INSTANCE_T instance) +{ +} + +#endif /* CONFIG_DEBUG_FS */ --- linux-raspi2-4.2.0.orig/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_debugfs.h +++ linux-raspi2-4.2.0/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_debugfs.h @@ -0,0 +1,52 @@ +/** + * Copyright (c) 2014 Raspberry Pi (Trading) Ltd. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions, and the following disclaimer, + * without modification. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The names of the above-listed copyright holders may not be used + * to endorse or promote products derived from this software without + * specific prior written permission. + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") version 2, as published by the Free + * Software Foundation. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS + * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef VCHIQ_DEBUGFS_H +#define VCHIQ_DEBUGFS_H + +#include "vchiq_core.h" + +typedef struct vchiq_debugfs_node_struct +{ + struct dentry *dentry; +} VCHIQ_DEBUGFS_NODE_T; + +int vchiq_debugfs_init(void); + +void vchiq_debugfs_deinit(void); + +int vchiq_debugfs_add_instance(VCHIQ_INSTANCE_T instance); + +void vchiq_debugfs_remove_instance(VCHIQ_INSTANCE_T instance); + +#endif /* VCHIQ_DEBUGFS_H */ --- linux-raspi2-4.2.0.orig/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_genversion +++ linux-raspi2-4.2.0/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_genversion @@ -0,0 +1,87 @@ +#!/usr/bin/perl -w + +use strict; + +# +# Generate a version from available information +# + +my $prefix = shift @ARGV; +my $root = shift @ARGV; + + +if ( not defined $root ) { + die "usage: $0 prefix root-dir\n"; +} + +if ( ! -d $root ) { + die "root directory $root not found\n"; +} + +my $version = "unknown"; +my $tainted = ""; + +if ( -d "$root/.git" ) { + # attempt to work out git version. only do so + # on a linux build host, as cygwin builds are + # already slow enough + + if ( -f "/usr/bin/git" || -f "/usr/local/bin/git" ) { + if (not open(F, "git --git-dir $root/.git rev-parse --verify HEAD|")) { + $version = "no git version"; + } + else { + $version = ; + $version =~ s/[ \r\n]*$//; # chomp may not be enough (cygwin). + $version =~ s/^[ \r\n]*//; # chomp may not be enough (cygwin). + } + + if (open(G, "git --git-dir $root/.git status --porcelain|")) { + $tainted = ; + $tainted =~ s/[ \r\n]*$//; # chomp may not be enough (cygwin). + $tainted =~ s/^[ \r\n]*//; # chomp may not be enough (cygwin). + if (length $tainted) { + $version = join ' ', $version, "(tainted)"; + } + else { + $version = join ' ', $version, "(clean)"; + } + } + } +} + +my $hostname = `hostname`; +$hostname =~ s/[ \r\n]*$//; # chomp may not be enough (cygwin). +$hostname =~ s/^[ \r\n]*//; # chomp may not be enough (cygwin). + + +print STDERR "Version $version\n"; +print < + +VC_DEBUG_DECLARE_STRING_VAR( ${prefix}_build_hostname, "$hostname" ); +VC_DEBUG_DECLARE_STRING_VAR( ${prefix}_build_version, "$version" ); +VC_DEBUG_DECLARE_STRING_VAR( ${prefix}_build_time, __TIME__ ); +VC_DEBUG_DECLARE_STRING_VAR( ${prefix}_build_date, __DATE__ ); + +const char *vchiq_get_build_hostname( void ) +{ + return vchiq_build_hostname; +} + +const char *vchiq_get_build_version( void ) +{ + return vchiq_build_version; +} + +const char *vchiq_get_build_date( void ) +{ + return vchiq_build_date; +} + +const char *vchiq_get_build_time( void ) +{ + return vchiq_build_time; +} +EOF --- linux-raspi2-4.2.0.orig/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_if.h +++ linux-raspi2-4.2.0/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_if.h @@ -0,0 +1,189 @@ +/** + * Copyright (c) 2010-2012 Broadcom. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions, and the following disclaimer, + * without modification. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The names of the above-listed copyright holders may not be used + * to endorse or promote products derived from this software without + * specific prior written permission. + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") version 2, as published by the Free + * Software Foundation. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS + * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef VCHIQ_IF_H +#define VCHIQ_IF_H + +#include "interface/vchi/vchi_mh.h" + +#define VCHIQ_SERVICE_HANDLE_INVALID 0 + +#define VCHIQ_SLOT_SIZE 4096 +#define VCHIQ_MAX_MSG_SIZE (VCHIQ_SLOT_SIZE - sizeof(VCHIQ_HEADER_T)) +#define VCHIQ_CHANNEL_SIZE VCHIQ_MAX_MSG_SIZE /* For backwards compatibility */ + +#define VCHIQ_MAKE_FOURCC(x0, x1, x2, x3) \ + (((x0) << 24) | ((x1) << 16) | ((x2) << 8) | (x3)) +#define VCHIQ_GET_SERVICE_USERDATA(service) vchiq_get_service_userdata(service) +#define VCHIQ_GET_SERVICE_FOURCC(service) vchiq_get_service_fourcc(service) + +typedef enum { + VCHIQ_SERVICE_OPENED, /* service, -, - */ + VCHIQ_SERVICE_CLOSED, /* service, -, - */ + VCHIQ_MESSAGE_AVAILABLE, /* service, header, - */ + VCHIQ_BULK_TRANSMIT_DONE, /* service, -, bulk_userdata */ + VCHIQ_BULK_RECEIVE_DONE, /* service, -, bulk_userdata */ + VCHIQ_BULK_TRANSMIT_ABORTED, /* service, -, bulk_userdata */ + VCHIQ_BULK_RECEIVE_ABORTED /* service, -, bulk_userdata */ +} VCHIQ_REASON_T; + +typedef enum { + VCHIQ_ERROR = -1, + VCHIQ_SUCCESS = 0, + VCHIQ_RETRY = 1 +} VCHIQ_STATUS_T; + +typedef enum { + VCHIQ_BULK_MODE_CALLBACK, + VCHIQ_BULK_MODE_BLOCKING, + VCHIQ_BULK_MODE_NOCALLBACK, + VCHIQ_BULK_MODE_WAITING /* Reserved for internal use */ +} VCHIQ_BULK_MODE_T; + +typedef enum { + VCHIQ_SERVICE_OPTION_AUTOCLOSE, + VCHIQ_SERVICE_OPTION_SLOT_QUOTA, + VCHIQ_SERVICE_OPTION_MESSAGE_QUOTA, + VCHIQ_SERVICE_OPTION_SYNCHRONOUS, + VCHIQ_SERVICE_OPTION_TRACE +} VCHIQ_SERVICE_OPTION_T; + +typedef struct vchiq_header_struct { + /* The message identifier - opaque to applications. */ + int msgid; + + /* Size of message data. */ + unsigned int size; + + char data[0]; /* message */ +} VCHIQ_HEADER_T; + +typedef struct { + const void *data; + unsigned int size; +} VCHIQ_ELEMENT_T; + +typedef unsigned int VCHIQ_SERVICE_HANDLE_T; + +typedef VCHIQ_STATUS_T (*VCHIQ_CALLBACK_T)(VCHIQ_REASON_T, VCHIQ_HEADER_T *, + VCHIQ_SERVICE_HANDLE_T, void *); + +typedef struct vchiq_service_base_struct { + int fourcc; + VCHIQ_CALLBACK_T callback; + void *userdata; +} VCHIQ_SERVICE_BASE_T; + +typedef struct vchiq_service_params_struct { + int fourcc; + VCHIQ_CALLBACK_T callback; + void *userdata; + short version; /* Increment for non-trivial changes */ + short version_min; /* Update for incompatible changes */ +} VCHIQ_SERVICE_PARAMS_T; + +typedef struct vchiq_config_struct { + unsigned int max_msg_size; + unsigned int bulk_threshold; /* The message size above which it + is better to use a bulk transfer + (<= max_msg_size) */ + unsigned int max_outstanding_bulks; + unsigned int max_services; + short version; /* The version of VCHIQ */ + short version_min; /* The minimum compatible version of VCHIQ */ +} VCHIQ_CONFIG_T; + +typedef struct vchiq_instance_struct *VCHIQ_INSTANCE_T; +typedef void (*VCHIQ_REMOTE_USE_CALLBACK_T)(void *cb_arg); + +extern VCHIQ_STATUS_T vchiq_initialise(VCHIQ_INSTANCE_T *pinstance); +extern VCHIQ_STATUS_T vchiq_shutdown(VCHIQ_INSTANCE_T instance); +extern VCHIQ_STATUS_T vchiq_connect(VCHIQ_INSTANCE_T instance); +extern VCHIQ_STATUS_T vchiq_add_service(VCHIQ_INSTANCE_T instance, + const VCHIQ_SERVICE_PARAMS_T *params, + VCHIQ_SERVICE_HANDLE_T *pservice); +extern VCHIQ_STATUS_T vchiq_open_service(VCHIQ_INSTANCE_T instance, + const VCHIQ_SERVICE_PARAMS_T *params, + VCHIQ_SERVICE_HANDLE_T *pservice); +extern VCHIQ_STATUS_T vchiq_close_service(VCHIQ_SERVICE_HANDLE_T service); +extern VCHIQ_STATUS_T vchiq_remove_service(VCHIQ_SERVICE_HANDLE_T service); +extern VCHIQ_STATUS_T vchiq_use_service(VCHIQ_SERVICE_HANDLE_T service); +extern VCHIQ_STATUS_T vchiq_use_service_no_resume( + VCHIQ_SERVICE_HANDLE_T service); +extern VCHIQ_STATUS_T vchiq_release_service(VCHIQ_SERVICE_HANDLE_T service); + +extern VCHIQ_STATUS_T vchiq_queue_message(VCHIQ_SERVICE_HANDLE_T service, + const VCHIQ_ELEMENT_T *elements, unsigned int count); +extern void vchiq_release_message(VCHIQ_SERVICE_HANDLE_T service, + VCHIQ_HEADER_T *header); +extern VCHIQ_STATUS_T vchiq_queue_bulk_transmit(VCHIQ_SERVICE_HANDLE_T service, + const void *data, unsigned int size, void *userdata); +extern VCHIQ_STATUS_T vchiq_queue_bulk_receive(VCHIQ_SERVICE_HANDLE_T service, + void *data, unsigned int size, void *userdata); +extern VCHIQ_STATUS_T vchiq_queue_bulk_transmit_handle( + VCHIQ_SERVICE_HANDLE_T service, VCHI_MEM_HANDLE_T handle, + const void *offset, unsigned int size, void *userdata); +extern VCHIQ_STATUS_T vchiq_queue_bulk_receive_handle( + VCHIQ_SERVICE_HANDLE_T service, VCHI_MEM_HANDLE_T handle, + void *offset, unsigned int size, void *userdata); +extern VCHIQ_STATUS_T vchiq_bulk_transmit(VCHIQ_SERVICE_HANDLE_T service, + const void *data, unsigned int size, void *userdata, + VCHIQ_BULK_MODE_T mode); +extern VCHIQ_STATUS_T vchiq_bulk_receive(VCHIQ_SERVICE_HANDLE_T service, + void *data, unsigned int size, void *userdata, + VCHIQ_BULK_MODE_T mode); +extern VCHIQ_STATUS_T vchiq_bulk_transmit_handle(VCHIQ_SERVICE_HANDLE_T service, + VCHI_MEM_HANDLE_T handle, const void *offset, unsigned int size, + void *userdata, VCHIQ_BULK_MODE_T mode); +extern VCHIQ_STATUS_T vchiq_bulk_receive_handle(VCHIQ_SERVICE_HANDLE_T service, + VCHI_MEM_HANDLE_T handle, void *offset, unsigned int size, + void *userdata, VCHIQ_BULK_MODE_T mode); +extern int vchiq_get_client_id(VCHIQ_SERVICE_HANDLE_T service); +extern void *vchiq_get_service_userdata(VCHIQ_SERVICE_HANDLE_T service); +extern int vchiq_get_service_fourcc(VCHIQ_SERVICE_HANDLE_T service); +extern VCHIQ_STATUS_T vchiq_get_config(VCHIQ_INSTANCE_T instance, + int config_size, VCHIQ_CONFIG_T *pconfig); +extern VCHIQ_STATUS_T vchiq_set_service_option(VCHIQ_SERVICE_HANDLE_T service, + VCHIQ_SERVICE_OPTION_T option, int value); + +extern VCHIQ_STATUS_T vchiq_remote_use(VCHIQ_INSTANCE_T instance, + VCHIQ_REMOTE_USE_CALLBACK_T callback, void *cb_arg); +extern VCHIQ_STATUS_T vchiq_remote_release(VCHIQ_INSTANCE_T instance); + +extern VCHIQ_STATUS_T vchiq_dump_phys_mem(VCHIQ_SERVICE_HANDLE_T service, + void *ptr, size_t num_bytes); + +extern VCHIQ_STATUS_T vchiq_get_peer_version(VCHIQ_SERVICE_HANDLE_T handle, + short *peer_version); + +#endif /* VCHIQ_IF_H */ --- linux-raspi2-4.2.0.orig/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_ioctl.h +++ linux-raspi2-4.2.0/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_ioctl.h @@ -0,0 +1,131 @@ +/** + * Copyright (c) 2010-2012 Broadcom. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions, and the following disclaimer, + * without modification. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The names of the above-listed copyright holders may not be used + * to endorse or promote products derived from this software without + * specific prior written permission. + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") version 2, as published by the Free + * Software Foundation. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS + * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef VCHIQ_IOCTLS_H +#define VCHIQ_IOCTLS_H + +#include +#include "vchiq_if.h" + +#define VCHIQ_IOC_MAGIC 0xc4 +#define VCHIQ_INVALID_HANDLE (~0) + +typedef struct { + VCHIQ_SERVICE_PARAMS_T params; + int is_open; + int is_vchi; + unsigned int handle; /* OUT */ +} VCHIQ_CREATE_SERVICE_T; + +typedef struct { + unsigned int handle; + unsigned int count; + const VCHIQ_ELEMENT_T *elements; +} VCHIQ_QUEUE_MESSAGE_T; + +typedef struct { + unsigned int handle; + void *data; + unsigned int size; + void *userdata; + VCHIQ_BULK_MODE_T mode; +} VCHIQ_QUEUE_BULK_TRANSFER_T; + +typedef struct { + VCHIQ_REASON_T reason; + VCHIQ_HEADER_T *header; + void *service_userdata; + void *bulk_userdata; +} VCHIQ_COMPLETION_DATA_T; + +typedef struct { + unsigned int count; + VCHIQ_COMPLETION_DATA_T *buf; + unsigned int msgbufsize; + unsigned int msgbufcount; /* IN/OUT */ + void **msgbufs; +} VCHIQ_AWAIT_COMPLETION_T; + +typedef struct { + unsigned int handle; + int blocking; + unsigned int bufsize; + void *buf; +} VCHIQ_DEQUEUE_MESSAGE_T; + +typedef struct { + unsigned int config_size; + VCHIQ_CONFIG_T *pconfig; +} VCHIQ_GET_CONFIG_T; + +typedef struct { + unsigned int handle; + VCHIQ_SERVICE_OPTION_T option; + int value; +} VCHIQ_SET_SERVICE_OPTION_T; + +typedef struct { + void *virt_addr; + size_t num_bytes; +} VCHIQ_DUMP_MEM_T; + +#define VCHIQ_IOC_CONNECT _IO(VCHIQ_IOC_MAGIC, 0) +#define VCHIQ_IOC_SHUTDOWN _IO(VCHIQ_IOC_MAGIC, 1) +#define VCHIQ_IOC_CREATE_SERVICE \ + _IOWR(VCHIQ_IOC_MAGIC, 2, VCHIQ_CREATE_SERVICE_T) +#define VCHIQ_IOC_REMOVE_SERVICE _IO(VCHIQ_IOC_MAGIC, 3) +#define VCHIQ_IOC_QUEUE_MESSAGE \ + _IOW(VCHIQ_IOC_MAGIC, 4, VCHIQ_QUEUE_MESSAGE_T) +#define VCHIQ_IOC_QUEUE_BULK_TRANSMIT \ + _IOWR(VCHIQ_IOC_MAGIC, 5, VCHIQ_QUEUE_BULK_TRANSFER_T) +#define VCHIQ_IOC_QUEUE_BULK_RECEIVE \ + _IOWR(VCHIQ_IOC_MAGIC, 6, VCHIQ_QUEUE_BULK_TRANSFER_T) +#define VCHIQ_IOC_AWAIT_COMPLETION \ + _IOWR(VCHIQ_IOC_MAGIC, 7, VCHIQ_AWAIT_COMPLETION_T) +#define VCHIQ_IOC_DEQUEUE_MESSAGE \ + _IOWR(VCHIQ_IOC_MAGIC, 8, VCHIQ_DEQUEUE_MESSAGE_T) +#define VCHIQ_IOC_GET_CLIENT_ID _IO(VCHIQ_IOC_MAGIC, 9) +#define VCHIQ_IOC_GET_CONFIG \ + _IOWR(VCHIQ_IOC_MAGIC, 10, VCHIQ_GET_CONFIG_T) +#define VCHIQ_IOC_CLOSE_SERVICE _IO(VCHIQ_IOC_MAGIC, 11) +#define VCHIQ_IOC_USE_SERVICE _IO(VCHIQ_IOC_MAGIC, 12) +#define VCHIQ_IOC_RELEASE_SERVICE _IO(VCHIQ_IOC_MAGIC, 13) +#define VCHIQ_IOC_SET_SERVICE_OPTION \ + _IOW(VCHIQ_IOC_MAGIC, 14, VCHIQ_SET_SERVICE_OPTION_T) +#define VCHIQ_IOC_DUMP_PHYS_MEM \ + _IOW(VCHIQ_IOC_MAGIC, 15, VCHIQ_DUMP_MEM_T) +#define VCHIQ_IOC_LIB_VERSION _IO(VCHIQ_IOC_MAGIC, 16) +#define VCHIQ_IOC_CLOSE_DELIVERED _IO(VCHIQ_IOC_MAGIC, 17) +#define VCHIQ_IOC_MAX 17 + +#endif --- linux-raspi2-4.2.0.orig/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_kern_lib.c +++ linux-raspi2-4.2.0/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_kern_lib.c @@ -0,0 +1,458 @@ +/** + * Copyright (c) 2010-2012 Broadcom. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions, and the following disclaimer, + * without modification. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The names of the above-listed copyright holders may not be used + * to endorse or promote products derived from this software without + * specific prior written permission. + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") version 2, as published by the Free + * Software Foundation. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS + * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/* ---- Include Files ---------------------------------------------------- */ + +#include +#include +#include + +#include "vchiq_core.h" +#include "vchiq_arm.h" +#include "vchiq_killable.h" + +/* ---- Public Variables ------------------------------------------------- */ + +/* ---- Private Constants and Types -------------------------------------- */ + +struct bulk_waiter_node { + struct bulk_waiter bulk_waiter; + int pid; + struct list_head list; +}; + +struct vchiq_instance_struct { + VCHIQ_STATE_T *state; + + int connected; + + struct list_head bulk_waiter_list; + struct mutex bulk_waiter_list_mutex; +}; + +static VCHIQ_STATUS_T +vchiq_blocking_bulk_transfer(VCHIQ_SERVICE_HANDLE_T handle, void *data, + unsigned int size, VCHIQ_BULK_DIR_T dir); + +/**************************************************************************** +* +* vchiq_initialise +* +***************************************************************************/ +#define VCHIQ_INIT_RETRIES 10 +VCHIQ_STATUS_T vchiq_initialise(VCHIQ_INSTANCE_T *instanceOut) +{ + VCHIQ_STATUS_T status = VCHIQ_ERROR; + VCHIQ_STATE_T *state; + VCHIQ_INSTANCE_T instance = NULL; + int i; + + vchiq_log_trace(vchiq_core_log_level, "%s called", __func__); + + /* VideoCore may not be ready due to boot up timing. + It may never be ready if kernel and firmware are mismatched, so don't block forever. */ + for (i=0; i0) { + vchiq_log_warning(vchiq_core_log_level, + "%s: videocore initialized after %d retries\n", __func__, i); + } + + instance = kzalloc(sizeof(*instance), GFP_KERNEL); + if (!instance) { + vchiq_log_error(vchiq_core_log_level, + "%s: error allocating vchiq instance\n", __func__); + goto failed; + } + + instance->connected = 0; + instance->state = state; + mutex_init(&instance->bulk_waiter_list_mutex); + INIT_LIST_HEAD(&instance->bulk_waiter_list); + + *instanceOut = instance; + + status = VCHIQ_SUCCESS; + +failed: + vchiq_log_trace(vchiq_core_log_level, + "%s(%p): returning %d", __func__, instance, status); + + return status; +} +EXPORT_SYMBOL(vchiq_initialise); + +/**************************************************************************** +* +* vchiq_shutdown +* +***************************************************************************/ + +VCHIQ_STATUS_T vchiq_shutdown(VCHIQ_INSTANCE_T instance) +{ + VCHIQ_STATUS_T status; + VCHIQ_STATE_T *state = instance->state; + + vchiq_log_trace(vchiq_core_log_level, + "%s(%p) called", __func__, instance); + + if (mutex_lock_interruptible(&state->mutex) != 0) + return VCHIQ_RETRY; + + /* Remove all services */ + status = vchiq_shutdown_internal(state, instance); + + mutex_unlock(&state->mutex); + + vchiq_log_trace(vchiq_core_log_level, + "%s(%p): returning %d", __func__, instance, status); + + if (status == VCHIQ_SUCCESS) { + struct list_head *pos, *next; + list_for_each_safe(pos, next, + &instance->bulk_waiter_list) { + struct bulk_waiter_node *waiter; + waiter = list_entry(pos, + struct bulk_waiter_node, + list); + list_del(pos); + vchiq_log_info(vchiq_arm_log_level, + "bulk_waiter - cleaned up %x " + "for pid %d", + (unsigned int)waiter, waiter->pid); + kfree(waiter); + } + kfree(instance); + } + + return status; +} +EXPORT_SYMBOL(vchiq_shutdown); + +/**************************************************************************** +* +* vchiq_is_connected +* +***************************************************************************/ + +int vchiq_is_connected(VCHIQ_INSTANCE_T instance) +{ + return instance->connected; +} + +/**************************************************************************** +* +* vchiq_connect +* +***************************************************************************/ + +VCHIQ_STATUS_T vchiq_connect(VCHIQ_INSTANCE_T instance) +{ + VCHIQ_STATUS_T status; + VCHIQ_STATE_T *state = instance->state; + + vchiq_log_trace(vchiq_core_log_level, + "%s(%p) called", __func__, instance); + + if (mutex_lock_interruptible(&state->mutex) != 0) { + vchiq_log_trace(vchiq_core_log_level, + "%s: call to mutex_lock failed", __func__); + status = VCHIQ_RETRY; + goto failed; + } + status = vchiq_connect_internal(state, instance); + + if (status == VCHIQ_SUCCESS) + instance->connected = 1; + + mutex_unlock(&state->mutex); + +failed: + vchiq_log_trace(vchiq_core_log_level, + "%s(%p): returning %d", __func__, instance, status); + + return status; +} +EXPORT_SYMBOL(vchiq_connect); + +/**************************************************************************** +* +* vchiq_add_service +* +***************************************************************************/ + +VCHIQ_STATUS_T vchiq_add_service( + VCHIQ_INSTANCE_T instance, + const VCHIQ_SERVICE_PARAMS_T *params, + VCHIQ_SERVICE_HANDLE_T *phandle) +{ + VCHIQ_STATUS_T status; + VCHIQ_STATE_T *state = instance->state; + VCHIQ_SERVICE_T *service = NULL; + int srvstate; + + vchiq_log_trace(vchiq_core_log_level, + "%s(%p) called", __func__, instance); + + *phandle = VCHIQ_SERVICE_HANDLE_INVALID; + + srvstate = vchiq_is_connected(instance) + ? VCHIQ_SRVSTATE_LISTENING + : VCHIQ_SRVSTATE_HIDDEN; + + service = vchiq_add_service_internal( + state, + params, + srvstate, + instance, + NULL); + + if (service) { + *phandle = service->handle; + status = VCHIQ_SUCCESS; + } else + status = VCHIQ_ERROR; + + vchiq_log_trace(vchiq_core_log_level, + "%s(%p): returning %d", __func__, instance, status); + + return status; +} +EXPORT_SYMBOL(vchiq_add_service); + +/**************************************************************************** +* +* vchiq_open_service +* +***************************************************************************/ + +VCHIQ_STATUS_T vchiq_open_service( + VCHIQ_INSTANCE_T instance, + const VCHIQ_SERVICE_PARAMS_T *params, + VCHIQ_SERVICE_HANDLE_T *phandle) +{ + VCHIQ_STATUS_T status = VCHIQ_ERROR; + VCHIQ_STATE_T *state = instance->state; + VCHIQ_SERVICE_T *service = NULL; + + vchiq_log_trace(vchiq_core_log_level, + "%s(%p) called", __func__, instance); + + *phandle = VCHIQ_SERVICE_HANDLE_INVALID; + + if (!vchiq_is_connected(instance)) + goto failed; + + service = vchiq_add_service_internal(state, + params, + VCHIQ_SRVSTATE_OPENING, + instance, + NULL); + + if (service) { + *phandle = service->handle; + status = vchiq_open_service_internal(service, current->pid); + if (status != VCHIQ_SUCCESS) { + vchiq_remove_service(service->handle); + *phandle = VCHIQ_SERVICE_HANDLE_INVALID; + } + } + +failed: + vchiq_log_trace(vchiq_core_log_level, + "%s(%p): returning %d", __func__, instance, status); + + return status; +} +EXPORT_SYMBOL(vchiq_open_service); + +VCHIQ_STATUS_T +vchiq_queue_bulk_transmit(VCHIQ_SERVICE_HANDLE_T handle, + const void *data, unsigned int size, void *userdata) +{ + return vchiq_bulk_transfer(handle, + VCHI_MEM_HANDLE_INVALID, (void *)data, size, userdata, + VCHIQ_BULK_MODE_CALLBACK, VCHIQ_BULK_TRANSMIT); +} +EXPORT_SYMBOL(vchiq_queue_bulk_transmit); + +VCHIQ_STATUS_T +vchiq_queue_bulk_receive(VCHIQ_SERVICE_HANDLE_T handle, void *data, + unsigned int size, void *userdata) +{ + return vchiq_bulk_transfer(handle, + VCHI_MEM_HANDLE_INVALID, data, size, userdata, + VCHIQ_BULK_MODE_CALLBACK, VCHIQ_BULK_RECEIVE); +} +EXPORT_SYMBOL(vchiq_queue_bulk_receive); + +VCHIQ_STATUS_T +vchiq_bulk_transmit(VCHIQ_SERVICE_HANDLE_T handle, const void *data, + unsigned int size, void *userdata, VCHIQ_BULK_MODE_T mode) +{ + VCHIQ_STATUS_T status; + + switch (mode) { + case VCHIQ_BULK_MODE_NOCALLBACK: + case VCHIQ_BULK_MODE_CALLBACK: + status = vchiq_bulk_transfer(handle, + VCHI_MEM_HANDLE_INVALID, (void *)data, size, userdata, + mode, VCHIQ_BULK_TRANSMIT); + break; + case VCHIQ_BULK_MODE_BLOCKING: + status = vchiq_blocking_bulk_transfer(handle, + (void *)data, size, VCHIQ_BULK_TRANSMIT); + break; + default: + return VCHIQ_ERROR; + } + + return status; +} +EXPORT_SYMBOL(vchiq_bulk_transmit); + +VCHIQ_STATUS_T +vchiq_bulk_receive(VCHIQ_SERVICE_HANDLE_T handle, void *data, + unsigned int size, void *userdata, VCHIQ_BULK_MODE_T mode) +{ + VCHIQ_STATUS_T status; + + switch (mode) { + case VCHIQ_BULK_MODE_NOCALLBACK: + case VCHIQ_BULK_MODE_CALLBACK: + status = vchiq_bulk_transfer(handle, + VCHI_MEM_HANDLE_INVALID, data, size, userdata, + mode, VCHIQ_BULK_RECEIVE); + break; + case VCHIQ_BULK_MODE_BLOCKING: + status = vchiq_blocking_bulk_transfer(handle, + (void *)data, size, VCHIQ_BULK_RECEIVE); + break; + default: + return VCHIQ_ERROR; + } + + return status; +} +EXPORT_SYMBOL(vchiq_bulk_receive); + +static VCHIQ_STATUS_T +vchiq_blocking_bulk_transfer(VCHIQ_SERVICE_HANDLE_T handle, void *data, + unsigned int size, VCHIQ_BULK_DIR_T dir) +{ + VCHIQ_INSTANCE_T instance; + VCHIQ_SERVICE_T *service; + VCHIQ_STATUS_T status; + struct bulk_waiter_node *waiter = NULL; + struct list_head *pos; + + service = find_service_by_handle(handle); + if (!service) + return VCHIQ_ERROR; + + instance = service->instance; + + unlock_service(service); + + mutex_lock(&instance->bulk_waiter_list_mutex); + list_for_each(pos, &instance->bulk_waiter_list) { + if (list_entry(pos, struct bulk_waiter_node, + list)->pid == current->pid) { + waiter = list_entry(pos, + struct bulk_waiter_node, + list); + list_del(pos); + break; + } + } + mutex_unlock(&instance->bulk_waiter_list_mutex); + + if (waiter) { + VCHIQ_BULK_T *bulk = waiter->bulk_waiter.bulk; + if (bulk) { + /* This thread has an outstanding bulk transfer. */ + if ((bulk->data != data) || + (bulk->size != size)) { + /* This is not a retry of the previous one. + ** Cancel the signal when the transfer + ** completes. */ + spin_lock(&bulk_waiter_spinlock); + bulk->userdata = NULL; + spin_unlock(&bulk_waiter_spinlock); + } + } + } + + if (!waiter) { + waiter = kzalloc(sizeof(struct bulk_waiter_node), GFP_KERNEL); + if (!waiter) { + vchiq_log_error(vchiq_core_log_level, + "%s - out of memory", __func__); + return VCHIQ_ERROR; + } + } + + status = vchiq_bulk_transfer(handle, VCHI_MEM_HANDLE_INVALID, + data, size, &waiter->bulk_waiter, VCHIQ_BULK_MODE_BLOCKING, + dir); + if ((status != VCHIQ_RETRY) || fatal_signal_pending(current) || + !waiter->bulk_waiter.bulk) { + VCHIQ_BULK_T *bulk = waiter->bulk_waiter.bulk; + if (bulk) { + /* Cancel the signal when the transfer + ** completes. */ + spin_lock(&bulk_waiter_spinlock); + bulk->userdata = NULL; + spin_unlock(&bulk_waiter_spinlock); + } + kfree(waiter); + } else { + waiter->pid = current->pid; + mutex_lock(&instance->bulk_waiter_list_mutex); + list_add(&waiter->list, &instance->bulk_waiter_list); + mutex_unlock(&instance->bulk_waiter_list_mutex); + vchiq_log_info(vchiq_arm_log_level, + "saved bulk_waiter %x for pid %d", + (unsigned int)waiter, current->pid); + } + + return status; +} --- linux-raspi2-4.2.0.orig/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_killable.h +++ linux-raspi2-4.2.0/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_killable.h @@ -0,0 +1,69 @@ +/** + * Copyright (c) 2010-2012 Broadcom. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions, and the following disclaimer, + * without modification. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The names of the above-listed copyright holders may not be used + * to endorse or promote products derived from this software without + * specific prior written permission. + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") version 2, as published by the Free + * Software Foundation. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS + * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef VCHIQ_KILLABLE_H +#define VCHIQ_KILLABLE_H + +#include +#include + +#define SHUTDOWN_SIGS (sigmask(SIGKILL) | sigmask(SIGINT) | sigmask(SIGQUIT) | sigmask(SIGTRAP) | sigmask(SIGSTOP) | sigmask(SIGCONT)) + +static inline int __must_check down_interruptible_killable(struct semaphore *sem) +{ + /* Allow interception of killable signals only. We don't want to be interrupted by harmless signals like SIGALRM */ + int ret; + sigset_t blocked, oldset; + siginitsetinv(&blocked, SHUTDOWN_SIGS); + sigprocmask(SIG_SETMASK, &blocked, &oldset); + ret = down_interruptible(sem); + sigprocmask(SIG_SETMASK, &oldset, NULL); + return ret; +} +#define down_interruptible down_interruptible_killable + + +static inline int __must_check mutex_lock_interruptible_killable(struct mutex *lock) +{ + /* Allow interception of killable signals only. We don't want to be interrupted by harmless signals like SIGALRM */ + int ret; + sigset_t blocked, oldset; + siginitsetinv(&blocked, SHUTDOWN_SIGS); + sigprocmask(SIG_SETMASK, &blocked, &oldset); + ret = mutex_lock_interruptible(lock); + sigprocmask(SIG_SETMASK, &oldset, NULL); + return ret; +} +#define mutex_lock_interruptible mutex_lock_interruptible_killable + +#endif --- linux-raspi2-4.2.0.orig/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_memdrv.h +++ linux-raspi2-4.2.0/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_memdrv.h @@ -0,0 +1,71 @@ +/** + * Copyright (c) 2010-2012 Broadcom. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions, and the following disclaimer, + * without modification. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The names of the above-listed copyright holders may not be used + * to endorse or promote products derived from this software without + * specific prior written permission. + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") version 2, as published by the Free + * Software Foundation. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS + * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef VCHIQ_MEMDRV_H +#define VCHIQ_MEMDRV_H + +/* ---- Include Files ----------------------------------------------------- */ + +#include +#include "vchiq_if.h" + +/* ---- Constants and Types ---------------------------------------------- */ + +typedef struct { + void *armSharedMemVirt; + dma_addr_t armSharedMemPhys; + size_t armSharedMemSize; + + void *vcSharedMemVirt; + dma_addr_t vcSharedMemPhys; + size_t vcSharedMemSize; +} VCHIQ_SHARED_MEM_INFO_T; + +/* ---- Variable Externs ------------------------------------------------- */ + +/* ---- Function Prototypes ---------------------------------------------- */ + +void vchiq_get_shared_mem_info(VCHIQ_SHARED_MEM_INFO_T *info); + +VCHIQ_STATUS_T vchiq_memdrv_initialise(void); + +VCHIQ_STATUS_T vchiq_userdrv_create_instance( + const VCHIQ_PLATFORM_DATA_T * platform_data); + +VCHIQ_STATUS_T vchiq_userdrv_suspend( + const VCHIQ_PLATFORM_DATA_T * platform_data); + +VCHIQ_STATUS_T vchiq_userdrv_resume( + const VCHIQ_PLATFORM_DATA_T * platform_data); + +#endif --- linux-raspi2-4.2.0.orig/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_pagelist.h +++ linux-raspi2-4.2.0/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_pagelist.h @@ -0,0 +1,58 @@ +/** + * Copyright (c) 2010-2012 Broadcom. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions, and the following disclaimer, + * without modification. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The names of the above-listed copyright holders may not be used + * to endorse or promote products derived from this software without + * specific prior written permission. + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") version 2, as published by the Free + * Software Foundation. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS + * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef VCHIQ_PAGELIST_H +#define VCHIQ_PAGELIST_H + +#ifndef PAGE_SIZE +#define PAGE_SIZE 4096 +#endif +#define CACHE_LINE_SIZE 32 +#define PAGELIST_WRITE 0 +#define PAGELIST_READ 1 +#define PAGELIST_READ_WITH_FRAGMENTS 2 + +typedef struct pagelist_struct { + unsigned long length; + unsigned short type; + unsigned short offset; + unsigned long addrs[1]; /* N.B. 12 LSBs hold the number of following + pages at consecutive addresses. */ +} PAGELIST_T; + +typedef struct fragments_struct { + char headbuf[CACHE_LINE_SIZE]; + char tailbuf[CACHE_LINE_SIZE]; +} FRAGMENTS_T; + +#endif /* VCHIQ_PAGELIST_H */ --- linux-raspi2-4.2.0.orig/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_shim.c +++ linux-raspi2-4.2.0/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_shim.c @@ -0,0 +1,860 @@ +/** + * Copyright (c) 2010-2012 Broadcom. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions, and the following disclaimer, + * without modification. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The names of the above-listed copyright holders may not be used + * to endorse or promote products derived from this software without + * specific prior written permission. + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") version 2, as published by the Free + * Software Foundation. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS + * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#include +#include + +#include "interface/vchi/vchi.h" +#include "vchiq.h" +#include "vchiq_core.h" + +#include "vchiq_util.h" + +#include + +#define vchiq_status_to_vchi(status) ((int32_t)status) + +typedef struct { + VCHIQ_SERVICE_HANDLE_T handle; + + VCHIU_QUEUE_T queue; + + VCHI_CALLBACK_T callback; + void *callback_param; +} SHIM_SERVICE_T; + +/* ---------------------------------------------------------------------- + * return pointer to the mphi message driver function table + * -------------------------------------------------------------------- */ +const VCHI_MESSAGE_DRIVER_T * +vchi_mphi_message_driver_func_table(void) +{ + return NULL; +} + +/* ---------------------------------------------------------------------- + * return a pointer to the 'single' connection driver fops + * -------------------------------------------------------------------- */ +const VCHI_CONNECTION_API_T * +single_get_func_table(void) +{ + return NULL; +} + +VCHI_CONNECTION_T *vchi_create_connection( + const VCHI_CONNECTION_API_T *function_table, + const VCHI_MESSAGE_DRIVER_T *low_level) +{ + (void)function_table; + (void)low_level; + return NULL; +} + +/*********************************************************** + * Name: vchi_msg_peek + * + * Arguments: const VCHI_SERVICE_HANDLE_T handle, + * void **data, + * uint32_t *msg_size, + + + * VCHI_FLAGS_T flags + * + * Description: Routine to return a pointer to the current message (to allow in + * place processing). The message can be removed using + * vchi_msg_remove when you're finished + * + * Returns: int32_t - success == 0 + * + ***********************************************************/ +int32_t vchi_msg_peek(VCHI_SERVICE_HANDLE_T handle, + void **data, + uint32_t *msg_size, + VCHI_FLAGS_T flags) +{ + SHIM_SERVICE_T *service = (SHIM_SERVICE_T *)handle; + VCHIQ_HEADER_T *header; + + WARN_ON((flags != VCHI_FLAGS_NONE) && + (flags != VCHI_FLAGS_BLOCK_UNTIL_OP_COMPLETE)); + + if (flags == VCHI_FLAGS_NONE) + if (vchiu_queue_is_empty(&service->queue)) + return -1; + + header = vchiu_queue_peek(&service->queue); + + *data = header->data; + *msg_size = header->size; + + return 0; +} +EXPORT_SYMBOL(vchi_msg_peek); + +/*********************************************************** + * Name: vchi_msg_remove + * + * Arguments: const VCHI_SERVICE_HANDLE_T handle, + * + * Description: Routine to remove a message (after it has been read with + * vchi_msg_peek) + * + * Returns: int32_t - success == 0 + * + ***********************************************************/ +int32_t vchi_msg_remove(VCHI_SERVICE_HANDLE_T handle) +{ + SHIM_SERVICE_T *service = (SHIM_SERVICE_T *)handle; + VCHIQ_HEADER_T *header; + + header = vchiu_queue_pop(&service->queue); + + vchiq_release_message(service->handle, header); + + return 0; +} +EXPORT_SYMBOL(vchi_msg_remove); + +/*********************************************************** + * Name: vchi_msg_queue + * + * Arguments: VCHI_SERVICE_HANDLE_T handle, + * const void *data, + * uint32_t data_size, + * VCHI_FLAGS_T flags, + * void *msg_handle, + * + * Description: Thin wrapper to queue a message onto a connection + * + * Returns: int32_t - success == 0 + * + ***********************************************************/ +int32_t vchi_msg_queue(VCHI_SERVICE_HANDLE_T handle, + const void *data, + uint32_t data_size, + VCHI_FLAGS_T flags, + void *msg_handle) +{ + SHIM_SERVICE_T *service = (SHIM_SERVICE_T *)handle; + VCHIQ_ELEMENT_T element = {data, data_size}; + VCHIQ_STATUS_T status; + + (void)msg_handle; + + WARN_ON(flags != VCHI_FLAGS_BLOCK_UNTIL_QUEUED); + + status = vchiq_queue_message(service->handle, &element, 1); + + /* vchiq_queue_message() may return VCHIQ_RETRY, so we need to + ** implement a retry mechanism since this function is supposed + ** to block until queued + */ + while (status == VCHIQ_RETRY) { + msleep(1); + status = vchiq_queue_message(service->handle, &element, 1); + } + + return vchiq_status_to_vchi(status); +} +EXPORT_SYMBOL(vchi_msg_queue); + +/*********************************************************** + * Name: vchi_bulk_queue_receive + * + * Arguments: VCHI_BULK_HANDLE_T handle, + * void *data_dst, + * const uint32_t data_size, + * VCHI_FLAGS_T flags + * void *bulk_handle + * + * Description: Routine to setup a rcv buffer + * + * Returns: int32_t - success == 0 + * + ***********************************************************/ +int32_t vchi_bulk_queue_receive(VCHI_SERVICE_HANDLE_T handle, + void *data_dst, + uint32_t data_size, + VCHI_FLAGS_T flags, + void *bulk_handle) +{ + SHIM_SERVICE_T *service = (SHIM_SERVICE_T *)handle; + VCHIQ_BULK_MODE_T mode; + VCHIQ_STATUS_T status; + + switch ((int)flags) { + case VCHI_FLAGS_CALLBACK_WHEN_OP_COMPLETE + | VCHI_FLAGS_BLOCK_UNTIL_QUEUED: + WARN_ON(!service->callback); + mode = VCHIQ_BULK_MODE_CALLBACK; + break; + case VCHI_FLAGS_BLOCK_UNTIL_OP_COMPLETE: + mode = VCHIQ_BULK_MODE_BLOCKING; + break; + case VCHI_FLAGS_BLOCK_UNTIL_QUEUED: + case VCHI_FLAGS_NONE: + mode = VCHIQ_BULK_MODE_NOCALLBACK; + break; + default: + WARN(1, "unsupported message\n"); + return vchiq_status_to_vchi(VCHIQ_ERROR); + } + + status = vchiq_bulk_receive(service->handle, data_dst, data_size, + bulk_handle, mode); + + /* vchiq_bulk_receive() may return VCHIQ_RETRY, so we need to + ** implement a retry mechanism since this function is supposed + ** to block until queued + */ + while (status == VCHIQ_RETRY) { + msleep(1); + status = vchiq_bulk_receive(service->handle, data_dst, + data_size, bulk_handle, mode); + } + + return vchiq_status_to_vchi(status); +} +EXPORT_SYMBOL(vchi_bulk_queue_receive); + +/*********************************************************** + * Name: vchi_bulk_queue_transmit + * + * Arguments: VCHI_BULK_HANDLE_T handle, + * const void *data_src, + * uint32_t data_size, + * VCHI_FLAGS_T flags, + * void *bulk_handle + * + * Description: Routine to transmit some data + * + * Returns: int32_t - success == 0 + * + ***********************************************************/ +int32_t vchi_bulk_queue_transmit(VCHI_SERVICE_HANDLE_T handle, + const void *data_src, + uint32_t data_size, + VCHI_FLAGS_T flags, + void *bulk_handle) +{ + SHIM_SERVICE_T *service = (SHIM_SERVICE_T *)handle; + VCHIQ_BULK_MODE_T mode; + VCHIQ_STATUS_T status; + + switch ((int)flags) { + case VCHI_FLAGS_CALLBACK_WHEN_OP_COMPLETE + | VCHI_FLAGS_BLOCK_UNTIL_QUEUED: + WARN_ON(!service->callback); + mode = VCHIQ_BULK_MODE_CALLBACK; + break; + case VCHI_FLAGS_BLOCK_UNTIL_DATA_READ: + case VCHI_FLAGS_BLOCK_UNTIL_OP_COMPLETE: + mode = VCHIQ_BULK_MODE_BLOCKING; + break; + case VCHI_FLAGS_BLOCK_UNTIL_QUEUED: + case VCHI_FLAGS_NONE: + mode = VCHIQ_BULK_MODE_NOCALLBACK; + break; + default: + WARN(1, "unsupported message\n"); + return vchiq_status_to_vchi(VCHIQ_ERROR); + } + + status = vchiq_bulk_transmit(service->handle, data_src, data_size, + bulk_handle, mode); + + /* vchiq_bulk_transmit() may return VCHIQ_RETRY, so we need to + ** implement a retry mechanism since this function is supposed + ** to block until queued + */ + while (status == VCHIQ_RETRY) { + msleep(1); + status = vchiq_bulk_transmit(service->handle, data_src, + data_size, bulk_handle, mode); + } + + return vchiq_status_to_vchi(status); +} +EXPORT_SYMBOL(vchi_bulk_queue_transmit); + +/*********************************************************** + * Name: vchi_msg_dequeue + * + * Arguments: VCHI_SERVICE_HANDLE_T handle, + * void *data, + * uint32_t max_data_size_to_read, + * uint32_t *actual_msg_size + * VCHI_FLAGS_T flags + * + * Description: Routine to dequeue a message into the supplied buffer + * + * Returns: int32_t - success == 0 + * + ***********************************************************/ +int32_t vchi_msg_dequeue(VCHI_SERVICE_HANDLE_T handle, + void *data, + uint32_t max_data_size_to_read, + uint32_t *actual_msg_size, + VCHI_FLAGS_T flags) +{ + SHIM_SERVICE_T *service = (SHIM_SERVICE_T *)handle; + VCHIQ_HEADER_T *header; + + WARN_ON((flags != VCHI_FLAGS_NONE) && + (flags != VCHI_FLAGS_BLOCK_UNTIL_OP_COMPLETE)); + + if (flags == VCHI_FLAGS_NONE) + if (vchiu_queue_is_empty(&service->queue)) + return -1; + + header = vchiu_queue_pop(&service->queue); + + memcpy(data, header->data, header->size < max_data_size_to_read ? + header->size : max_data_size_to_read); + + *actual_msg_size = header->size; + + vchiq_release_message(service->handle, header); + + return 0; +} +EXPORT_SYMBOL(vchi_msg_dequeue); + +/*********************************************************** + * Name: vchi_msg_queuev + * + * Arguments: VCHI_SERVICE_HANDLE_T handle, + * VCHI_MSG_VECTOR_T *vector, + * uint32_t count, + * VCHI_FLAGS_T flags, + * void *msg_handle + * + * Description: Thin wrapper to queue a message onto a connection + * + * Returns: int32_t - success == 0 + * + ***********************************************************/ + +vchiq_static_assert(sizeof(VCHI_MSG_VECTOR_T) == sizeof(VCHIQ_ELEMENT_T)); +vchiq_static_assert(offsetof(VCHI_MSG_VECTOR_T, vec_base) == + offsetof(VCHIQ_ELEMENT_T, data)); +vchiq_static_assert(offsetof(VCHI_MSG_VECTOR_T, vec_len) == + offsetof(VCHIQ_ELEMENT_T, size)); + +int32_t vchi_msg_queuev(VCHI_SERVICE_HANDLE_T handle, + VCHI_MSG_VECTOR_T *vector, + uint32_t count, + VCHI_FLAGS_T flags, + void *msg_handle) +{ + SHIM_SERVICE_T *service = (SHIM_SERVICE_T *)handle; + + (void)msg_handle; + + WARN_ON(flags != VCHI_FLAGS_BLOCK_UNTIL_QUEUED); + + return vchiq_status_to_vchi(vchiq_queue_message(service->handle, + (const VCHIQ_ELEMENT_T *)vector, count)); +} +EXPORT_SYMBOL(vchi_msg_queuev); + +/*********************************************************** + * Name: vchi_held_msg_release + * + * Arguments: VCHI_HELD_MSG_T *message + * + * Description: Routine to release a held message (after it has been read with + * vchi_msg_hold) + * + * Returns: int32_t - success == 0 + * + ***********************************************************/ +int32_t vchi_held_msg_release(VCHI_HELD_MSG_T *message) +{ + vchiq_release_message((VCHIQ_SERVICE_HANDLE_T)message->service, + (VCHIQ_HEADER_T *)message->message); + + return 0; +} +EXPORT_SYMBOL(vchi_held_msg_release); + +/*********************************************************** + * Name: vchi_msg_hold + * + * Arguments: VCHI_SERVICE_HANDLE_T handle, + * void **data, + * uint32_t *msg_size, + * VCHI_FLAGS_T flags, + * VCHI_HELD_MSG_T *message_handle + * + * Description: Routine to return a pointer to the current message (to allow + * in place processing). The message is dequeued - don't forget + * to release the message using vchi_held_msg_release when you're + * finished. + * + * Returns: int32_t - success == 0 + * + ***********************************************************/ +int32_t vchi_msg_hold(VCHI_SERVICE_HANDLE_T handle, + void **data, + uint32_t *msg_size, + VCHI_FLAGS_T flags, + VCHI_HELD_MSG_T *message_handle) +{ + SHIM_SERVICE_T *service = (SHIM_SERVICE_T *)handle; + VCHIQ_HEADER_T *header; + + WARN_ON((flags != VCHI_FLAGS_NONE) && + (flags != VCHI_FLAGS_BLOCK_UNTIL_OP_COMPLETE)); + + if (flags == VCHI_FLAGS_NONE) + if (vchiu_queue_is_empty(&service->queue)) + return -1; + + header = vchiu_queue_pop(&service->queue); + + *data = header->data; + *msg_size = header->size; + + message_handle->service = + (struct opaque_vchi_service_t *)service->handle; + message_handle->message = header; + + return 0; +} +EXPORT_SYMBOL(vchi_msg_hold); + +/*********************************************************** + * Name: vchi_initialise + * + * Arguments: VCHI_INSTANCE_T *instance_handle + * + * Description: Initialises the hardware but does not transmit anything + * When run as a Host App this will be called twice hence the need + * to malloc the state information + * + * Returns: 0 if successful, failure otherwise + * + ***********************************************************/ + +int32_t vchi_initialise(VCHI_INSTANCE_T *instance_handle) +{ + VCHIQ_INSTANCE_T instance; + VCHIQ_STATUS_T status; + + status = vchiq_initialise(&instance); + + *instance_handle = (VCHI_INSTANCE_T)instance; + + return vchiq_status_to_vchi(status); +} +EXPORT_SYMBOL(vchi_initialise); + +/*********************************************************** + * Name: vchi_connect + * + * Arguments: VCHI_CONNECTION_T **connections + * const uint32_t num_connections + * VCHI_INSTANCE_T instance_handle) + * + * Description: Starts the command service on each connection, + * causing INIT messages to be pinged back and forth + * + * Returns: 0 if successful, failure otherwise + * + ***********************************************************/ +int32_t vchi_connect(VCHI_CONNECTION_T **connections, + const uint32_t num_connections, + VCHI_INSTANCE_T instance_handle) +{ + VCHIQ_INSTANCE_T instance = (VCHIQ_INSTANCE_T)instance_handle; + + (void)connections; + (void)num_connections; + + return vchiq_connect(instance); +} +EXPORT_SYMBOL(vchi_connect); + + +/*********************************************************** + * Name: vchi_disconnect + * + * Arguments: VCHI_INSTANCE_T instance_handle + * + * Description: Stops the command service on each connection, + * causing DE-INIT messages to be pinged back and forth + * + * Returns: 0 if successful, failure otherwise + * + ***********************************************************/ +int32_t vchi_disconnect(VCHI_INSTANCE_T instance_handle) +{ + VCHIQ_INSTANCE_T instance = (VCHIQ_INSTANCE_T)instance_handle; + return vchiq_status_to_vchi(vchiq_shutdown(instance)); +} +EXPORT_SYMBOL(vchi_disconnect); + + +/*********************************************************** + * Name: vchi_service_open + * Name: vchi_service_create + * + * Arguments: VCHI_INSTANCE_T *instance_handle + * SERVICE_CREATION_T *setup, + * VCHI_SERVICE_HANDLE_T *handle + * + * Description: Routine to open a service + * + * Returns: int32_t - success == 0 + * + ***********************************************************/ + +static VCHIQ_STATUS_T shim_callback(VCHIQ_REASON_T reason, + VCHIQ_HEADER_T *header, VCHIQ_SERVICE_HANDLE_T handle, void *bulk_user) +{ + SHIM_SERVICE_T *service = + (SHIM_SERVICE_T *)VCHIQ_GET_SERVICE_USERDATA(handle); + + if (!service->callback) + goto release; + + switch (reason) { + case VCHIQ_MESSAGE_AVAILABLE: + vchiu_queue_push(&service->queue, header); + + service->callback(service->callback_param, + VCHI_CALLBACK_MSG_AVAILABLE, NULL); + + goto done; + break; + + case VCHIQ_BULK_TRANSMIT_DONE: + service->callback(service->callback_param, + VCHI_CALLBACK_BULK_SENT, bulk_user); + break; + + case VCHIQ_BULK_RECEIVE_DONE: + service->callback(service->callback_param, + VCHI_CALLBACK_BULK_RECEIVED, bulk_user); + break; + + case VCHIQ_SERVICE_CLOSED: + service->callback(service->callback_param, + VCHI_CALLBACK_SERVICE_CLOSED, NULL); + break; + + case VCHIQ_SERVICE_OPENED: + /* No equivalent VCHI reason */ + break; + + case VCHIQ_BULK_TRANSMIT_ABORTED: + service->callback(service->callback_param, + VCHI_CALLBACK_BULK_TRANSMIT_ABORTED, + bulk_user); + break; + + case VCHIQ_BULK_RECEIVE_ABORTED: + service->callback(service->callback_param, + VCHI_CALLBACK_BULK_RECEIVE_ABORTED, + bulk_user); + break; + + default: + WARN(1, "not supported\n"); + break; + } + +release: + vchiq_release_message(service->handle, header); +done: + return VCHIQ_SUCCESS; +} + +static SHIM_SERVICE_T *service_alloc(VCHIQ_INSTANCE_T instance, + SERVICE_CREATION_T *setup) +{ + SHIM_SERVICE_T *service = kzalloc(sizeof(SHIM_SERVICE_T), GFP_KERNEL); + + (void)instance; + + if (service) { + if (vchiu_queue_init(&service->queue, 64)) { + service->callback = setup->callback; + service->callback_param = setup->callback_param; + } else { + kfree(service); + service = NULL; + } + } + + return service; +} + +static void service_free(SHIM_SERVICE_T *service) +{ + if (service) { + vchiu_queue_delete(&service->queue); + kfree(service); + } +} + +int32_t vchi_service_open(VCHI_INSTANCE_T instance_handle, + SERVICE_CREATION_T *setup, + VCHI_SERVICE_HANDLE_T *handle) +{ + VCHIQ_INSTANCE_T instance = (VCHIQ_INSTANCE_T)instance_handle; + SHIM_SERVICE_T *service = service_alloc(instance, setup); + + *handle = (VCHI_SERVICE_HANDLE_T)service; + + if (service) { + VCHIQ_SERVICE_PARAMS_T params; + VCHIQ_STATUS_T status; + + memset(¶ms, 0, sizeof(params)); + params.fourcc = setup->service_id; + params.callback = shim_callback; + params.userdata = service; + params.version = setup->version.version; + params.version_min = setup->version.version_min; + + status = vchiq_open_service(instance, ¶ms, + &service->handle); + if (status != VCHIQ_SUCCESS) { + service_free(service); + service = NULL; + *handle = NULL; + } + } + + return (service != NULL) ? 0 : -1; +} +EXPORT_SYMBOL(vchi_service_open); + +int32_t vchi_service_create(VCHI_INSTANCE_T instance_handle, + SERVICE_CREATION_T *setup, + VCHI_SERVICE_HANDLE_T *handle) +{ + VCHIQ_INSTANCE_T instance = (VCHIQ_INSTANCE_T)instance_handle; + SHIM_SERVICE_T *service = service_alloc(instance, setup); + + *handle = (VCHI_SERVICE_HANDLE_T)service; + + if (service) { + VCHIQ_SERVICE_PARAMS_T params; + VCHIQ_STATUS_T status; + + memset(¶ms, 0, sizeof(params)); + params.fourcc = setup->service_id; + params.callback = shim_callback; + params.userdata = service; + params.version = setup->version.version; + params.version_min = setup->version.version_min; + status = vchiq_add_service(instance, ¶ms, &service->handle); + + if (status != VCHIQ_SUCCESS) { + service_free(service); + service = NULL; + *handle = NULL; + } + } + + return (service != NULL) ? 0 : -1; +} +EXPORT_SYMBOL(vchi_service_create); + +int32_t vchi_service_close(const VCHI_SERVICE_HANDLE_T handle) +{ + int32_t ret = -1; + SHIM_SERVICE_T *service = (SHIM_SERVICE_T *)handle; + if (service) { + VCHIQ_STATUS_T status = vchiq_close_service(service->handle); + if (status == VCHIQ_SUCCESS) { + service_free(service); + service = NULL; + } + + ret = vchiq_status_to_vchi(status); + } + return ret; +} +EXPORT_SYMBOL(vchi_service_close); + +int32_t vchi_service_destroy(const VCHI_SERVICE_HANDLE_T handle) +{ + int32_t ret = -1; + SHIM_SERVICE_T *service = (SHIM_SERVICE_T *)handle; + if (service) { + VCHIQ_STATUS_T status = vchiq_remove_service(service->handle); + if (status == VCHIQ_SUCCESS) { + service_free(service); + service = NULL; + } + + ret = vchiq_status_to_vchi(status); + } + return ret; +} +EXPORT_SYMBOL(vchi_service_destroy); + +int32_t vchi_service_set_option(const VCHI_SERVICE_HANDLE_T handle, + VCHI_SERVICE_OPTION_T option, + int value) +{ + int32_t ret = -1; + SHIM_SERVICE_T *service = (SHIM_SERVICE_T *)handle; + VCHIQ_SERVICE_OPTION_T vchiq_option; + switch (option) { + case VCHI_SERVICE_OPTION_TRACE: + vchiq_option = VCHIQ_SERVICE_OPTION_TRACE; + break; + case VCHI_SERVICE_OPTION_SYNCHRONOUS: + vchiq_option = VCHIQ_SERVICE_OPTION_SYNCHRONOUS; + break; + default: + service = NULL; + break; + } + if (service) { + VCHIQ_STATUS_T status = + vchiq_set_service_option(service->handle, + vchiq_option, + value); + + ret = vchiq_status_to_vchi(status); + } + return ret; +} +EXPORT_SYMBOL(vchi_service_set_option); + +int32_t vchi_get_peer_version( const VCHI_SERVICE_HANDLE_T handle, short *peer_version ) +{ + int32_t ret = -1; + SHIM_SERVICE_T *service = (SHIM_SERVICE_T *)handle; + if(service) + { + VCHIQ_STATUS_T status = vchiq_get_peer_version(service->handle, peer_version); + ret = vchiq_status_to_vchi( status ); + } + return ret; +} +EXPORT_SYMBOL(vchi_get_peer_version); + +/* ---------------------------------------------------------------------- + * read a uint32_t from buffer. + * network format is defined to be little endian + * -------------------------------------------------------------------- */ +uint32_t +vchi_readbuf_uint32(const void *_ptr) +{ + const unsigned char *ptr = _ptr; + return ptr[0] | (ptr[1] << 8) | (ptr[2] << 16) | (ptr[3] << 24); +} + +/* ---------------------------------------------------------------------- + * write a uint32_t to buffer. + * network format is defined to be little endian + * -------------------------------------------------------------------- */ +void +vchi_writebuf_uint32(void *_ptr, uint32_t value) +{ + unsigned char *ptr = _ptr; + ptr[0] = (unsigned char)((value >> 0) & 0xFF); + ptr[1] = (unsigned char)((value >> 8) & 0xFF); + ptr[2] = (unsigned char)((value >> 16) & 0xFF); + ptr[3] = (unsigned char)((value >> 24) & 0xFF); +} + +/* ---------------------------------------------------------------------- + * read a uint16_t from buffer. + * network format is defined to be little endian + * -------------------------------------------------------------------- */ +uint16_t +vchi_readbuf_uint16(const void *_ptr) +{ + const unsigned char *ptr = _ptr; + return ptr[0] | (ptr[1] << 8); +} + +/* ---------------------------------------------------------------------- + * write a uint16_t into the buffer. + * network format is defined to be little endian + * -------------------------------------------------------------------- */ +void +vchi_writebuf_uint16(void *_ptr, uint16_t value) +{ + unsigned char *ptr = _ptr; + ptr[0] = (value >> 0) & 0xFF; + ptr[1] = (value >> 8) & 0xFF; +} + +/*********************************************************** + * Name: vchi_service_use + * + * Arguments: const VCHI_SERVICE_HANDLE_T handle + * + * Description: Routine to increment refcount on a service + * + * Returns: void + * + ***********************************************************/ +int32_t vchi_service_use(const VCHI_SERVICE_HANDLE_T handle) +{ + int32_t ret = -1; + SHIM_SERVICE_T *service = (SHIM_SERVICE_T *)handle; + if (service) + ret = vchiq_status_to_vchi(vchiq_use_service(service->handle)); + return ret; +} +EXPORT_SYMBOL(vchi_service_use); + +/*********************************************************** + * Name: vchi_service_release + * + * Arguments: const VCHI_SERVICE_HANDLE_T handle + * + * Description: Routine to decrement refcount on a service + * + * Returns: void + * + ***********************************************************/ +int32_t vchi_service_release(const VCHI_SERVICE_HANDLE_T handle) +{ + int32_t ret = -1; + SHIM_SERVICE_T *service = (SHIM_SERVICE_T *)handle; + if (service) + ret = vchiq_status_to_vchi( + vchiq_release_service(service->handle)); + return ret; +} +EXPORT_SYMBOL(vchi_service_release); --- linux-raspi2-4.2.0.orig/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_util.c +++ linux-raspi2-4.2.0/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_util.c @@ -0,0 +1,156 @@ +/** + * Copyright (c) 2010-2012 Broadcom. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions, and the following disclaimer, + * without modification. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The names of the above-listed copyright holders may not be used + * to endorse or promote products derived from this software without + * specific prior written permission. + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") version 2, as published by the Free + * Software Foundation. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS + * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include "vchiq_util.h" +#include "vchiq_killable.h" + +static inline int is_pow2(int i) +{ + return i && !(i & (i - 1)); +} + +int vchiu_queue_init(VCHIU_QUEUE_T *queue, int size) +{ + WARN_ON(!is_pow2(size)); + + queue->size = size; + queue->read = 0; + queue->write = 0; + queue->initialized = 1; + + sema_init(&queue->pop, 0); + sema_init(&queue->push, 0); + + queue->storage = kzalloc(size * sizeof(VCHIQ_HEADER_T *), GFP_KERNEL); + if (queue->storage == NULL) { + vchiu_queue_delete(queue); + return 0; + } + return 1; +} + +void vchiu_queue_delete(VCHIU_QUEUE_T *queue) +{ + if (queue->storage != NULL) + kfree(queue->storage); +} + +int vchiu_queue_is_empty(VCHIU_QUEUE_T *queue) +{ + return queue->read == queue->write; +} + +int vchiu_queue_is_full(VCHIU_QUEUE_T *queue) +{ + return queue->write == queue->read + queue->size; +} + +void vchiu_queue_push(VCHIU_QUEUE_T *queue, VCHIQ_HEADER_T *header) +{ + if (!queue->initialized) + return; + + while (queue->write == queue->read + queue->size) { + if (down_interruptible(&queue->pop) != 0) { + flush_signals(current); + } + } + + /* + * Write to queue->storage must be visible after read from + * queue->read + */ + smp_mb(); + + queue->storage[queue->write & (queue->size - 1)] = header; + + /* + * Write to queue->storage must be visible before write to + * queue->write + */ + smp_wmb(); + + queue->write++; + + up(&queue->push); +} + +VCHIQ_HEADER_T *vchiu_queue_peek(VCHIU_QUEUE_T *queue) +{ + while (queue->write == queue->read) { + if (down_interruptible(&queue->push) != 0) { + flush_signals(current); + } + } + + up(&queue->push); // We haven't removed anything from the queue. + + /* + * Read from queue->storage must be visible after read from + * queue->write + */ + smp_rmb(); + + return queue->storage[queue->read & (queue->size - 1)]; +} + +VCHIQ_HEADER_T *vchiu_queue_pop(VCHIU_QUEUE_T *queue) +{ + VCHIQ_HEADER_T *header; + + while (queue->write == queue->read) { + if (down_interruptible(&queue->push) != 0) { + flush_signals(current); + } + } + + /* + * Read from queue->storage must be visible after read from + * queue->write + */ + smp_rmb(); + + header = queue->storage[queue->read & (queue->size - 1)]; + + /* + * Read from queue->storage must be visible before write to + * queue->read + */ + smp_mb(); + + queue->read++; + + up(&queue->pop); + + return header; +} --- linux-raspi2-4.2.0.orig/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_util.h +++ linux-raspi2-4.2.0/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_util.h @@ -0,0 +1,82 @@ +/** + * Copyright (c) 2010-2012 Broadcom. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions, and the following disclaimer, + * without modification. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The names of the above-listed copyright holders may not be used + * to endorse or promote products derived from this software without + * specific prior written permission. + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") version 2, as published by the Free + * Software Foundation. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS + * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef VCHIQ_UTIL_H +#define VCHIQ_UTIL_H + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include /* for time_t */ +#include +#include + +#include "vchiq_if.h" + +typedef struct { + int size; + int read; + int write; + int initialized; + + struct semaphore pop; + struct semaphore push; + + VCHIQ_HEADER_T **storage; +} VCHIU_QUEUE_T; + +extern int vchiu_queue_init(VCHIU_QUEUE_T *queue, int size); +extern void vchiu_queue_delete(VCHIU_QUEUE_T *queue); + +extern int vchiu_queue_is_empty(VCHIU_QUEUE_T *queue); +extern int vchiu_queue_is_full(VCHIU_QUEUE_T *queue); + +extern void vchiu_queue_push(VCHIU_QUEUE_T *queue, VCHIQ_HEADER_T *header); + +extern VCHIQ_HEADER_T *vchiu_queue_peek(VCHIU_QUEUE_T *queue); +extern VCHIQ_HEADER_T *vchiu_queue_pop(VCHIU_QUEUE_T *queue); + +#endif --- linux-raspi2-4.2.0.orig/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_version.c +++ linux-raspi2-4.2.0/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_version.c @@ -0,0 +1,59 @@ +/** + * Copyright (c) 2010-2012 Broadcom. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions, and the following disclaimer, + * without modification. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The names of the above-listed copyright holders may not be used + * to endorse or promote products derived from this software without + * specific prior written permission. + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") version 2, as published by the Free + * Software Foundation. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS + * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#include "vchiq_build_info.h" +#include + +VC_DEBUG_DECLARE_STRING_VAR( vchiq_build_hostname, "dc4-arm-01" ); +VC_DEBUG_DECLARE_STRING_VAR( vchiq_build_version, "9245b4c35b99b3870e1f7dc598c5692b3c66a6f0 (tainted)" ); +VC_DEBUG_DECLARE_STRING_VAR( vchiq_build_time, __TIME__ ); +VC_DEBUG_DECLARE_STRING_VAR( vchiq_build_date, __DATE__ ); + +const char *vchiq_get_build_hostname( void ) +{ + return vchiq_build_hostname; +} + +const char *vchiq_get_build_version( void ) +{ + return vchiq_build_version; +} + +const char *vchiq_get_build_date( void ) +{ + return vchiq_build_date; +} + +const char *vchiq_get_build_time( void ) +{ + return vchiq_build_time; +} --- linux-raspi2-4.2.0.orig/drivers/mmc/card/block.c +++ linux-raspi2-4.2.0/drivers/mmc/card/block.c @@ -1425,6 +1425,7 @@ brq->data.blocks = card->host->ops->multi_io_quirk(card, (rq_data_dir(req) == READ) ? MMC_DATA_READ : MMC_DATA_WRITE, + blk_rq_pos(req), brq->data.blocks); } --- linux-raspi2-4.2.0.orig/drivers/mmc/card/mmc_test.c +++ linux-raspi2-4.2.0/drivers/mmc/card/mmc_test.c @@ -2263,15 +2263,12 @@ /* * eMMC hardware reset. */ -static int mmc_test_hw_reset(struct mmc_test_card *test) +static int mmc_test_reset(struct mmc_test_card *test) { struct mmc_card *card = test->card; struct mmc_host *host = card->host; int err; - if (!mmc_card_mmc(card) || !mmc_can_reset(card)) - return RESULT_UNSUP_CARD; - err = mmc_hw_reset(host); if (!err) return RESULT_OK; @@ -2605,8 +2602,8 @@ }, { - .name = "eMMC hardware reset", - .run = mmc_test_hw_reset, + .name = "Reset test", + .run = mmc_test_reset, }, }; --- linux-raspi2-4.2.0.orig/drivers/mmc/core/core.c +++ linux-raspi2-4.2.0/drivers/mmc/core/core.c @@ -134,9 +134,11 @@ int err = cmd->error; /* Flag re-tuning needed on CRC errors */ - if (err == -EILSEQ || (mrq->sbc && mrq->sbc->error == -EILSEQ) || + if ((cmd->opcode != MMC_SEND_TUNING_BLOCK && + cmd->opcode != MMC_SEND_TUNING_BLOCK_HS200) && + (err == -EILSEQ || (mrq->sbc && mrq->sbc->error == -EILSEQ) || (mrq->data && mrq->data->error == -EILSEQ) || - (mrq->stop && mrq->stop->error == -EILSEQ)) + (mrq->stop && mrq->stop->error == -EILSEQ))) mmc_retune_needed(host); if (err && cmd->retries && mmc_host_is_spi(host)) { @@ -358,8 +360,10 @@ */ static void mmc_wait_data_done(struct mmc_request *mrq) { - mrq->host->context_info.is_done_rcv = true; - wake_up_interruptible(&mrq->host->context_info.wait); + struct mmc_context_info *context_info = &mrq->host->context_info; + + context_info->is_done_rcv = true; + wake_up_interruptible(&context_info->wait); } static void mmc_wait_done(struct mmc_request *mrq) --- linux-raspi2-4.2.0.orig/drivers/mmc/core/host.c +++ linux-raspi2-4.2.0/drivers/mmc/core/host.c @@ -457,7 +457,7 @@ 0, &cd_gpio_invert); if (!ret) dev_info(host->parent, "Got CD GPIO\n"); - else if (ret != -ENOENT) + else if (ret != -ENOENT && ret != -ENOSYS) return ret; /* @@ -481,7 +481,7 @@ ret = mmc_gpiod_request_ro(host, "wp", 0, false, 0, &ro_gpio_invert); if (!ret) dev_info(host->parent, "Got WP GPIO\n"); - else if (ret != -ENOENT) + else if (ret != -ENOENT && ret != -ENOSYS) return ret; if (of_property_read_bool(np, "disable-wp")) --- linux-raspi2-4.2.0.orig/drivers/mmc/core/mmc.c +++ linux-raspi2-4.2.0/drivers/mmc/core/mmc.c @@ -1924,7 +1924,6 @@ static int mmc_reset(struct mmc_host *host) { struct mmc_card *card = host->card; - u32 status; if (!(host->caps & MMC_CAP_HW_RESET) || !host->ops->hw_reset) return -EOPNOTSUPP; @@ -1937,12 +1936,6 @@ host->ops->hw_reset(host); - /* If the reset has happened, then a status command will fail */ - if (!mmc_send_status(card, &status)) { - mmc_host_clk_release(host); - return -ENOSYS; - } - /* Set initial state and call mmc_set_ios */ mmc_set_initial_state(host); mmc_host_clk_release(host); --- linux-raspi2-4.2.0.orig/drivers/mmc/core/quirks.c +++ linux-raspi2-4.2.0/drivers/mmc/core/quirks.c @@ -71,6 +71,7 @@ void mmc_fixup_device(struct mmc_card *card, const struct mmc_fixup *table) { + extern unsigned mmc_debug; const struct mmc_fixup *f; u64 rev = cid_rev_card(card); @@ -95,5 +96,10 @@ f->vendor_fixup(card, f->data); } } + /* SDHCI on BCM2708 - bug causes a certain sequence of CMD23 operations to fail. + * Disable this flag for all cards (fall-back to CMD25/CMD18 multi-block transfers). + */ + if (mmc_debug & (1<<13)) + card->quirks |= MMC_QUIRK_BLK_NO_CMD23; } EXPORT_SYMBOL(mmc_fixup_device); --- linux-raspi2-4.2.0.orig/drivers/mmc/host/Kconfig +++ linux-raspi2-4.2.0/drivers/mmc/host/Kconfig @@ -4,6 +4,45 @@ comment "MMC/SD/SDIO Host Controller Drivers" +config MMC_BCM2835 + tristate "MMC support on BCM2835" + depends on MACH_BCM2708 || MACH_BCM2709 || ARCH_BCM2835 + help + This selects the MMC Interface on BCM2835. + + If you have a controller with this interface, say Y or M here. + + If unsure, say N. + +config MMC_BCM2835_DMA + bool "DMA support on BCM2835 Arasan controller" + depends on MMC_BCM2835 + help + Enable DMA support on the Arasan SDHCI controller in Broadcom 2708 + based chips. + + If unsure, say N. + +config MMC_BCM2835_PIO_DMA_BARRIER + int "Block count limit for PIO transfers" + depends on MMC_BCM2835 && MMC_BCM2835_DMA + range 0 256 + default 2 + help + The inclusive limit in bytes under which PIO will be used instead of DMA + + If unsure, say 2 here. + +config MMC_BCM2835_SDHOST + tristate "Support for the SDHost controller on BCM2708/9" + depends on MACH_BCM2708 || MACH_BCM2709 || ARCH_BCM2835 + help + This selects the SDHost controller on BCM2835/6. + + If you have a controller with this interface, say Y or M here. + + If unsure, say N. + config MMC_ARMMMCI tristate "ARM AMBA Multimedia Card Interface support" depends on ARM_AMBA --- linux-raspi2-4.2.0.orig/drivers/mmc/host/Makefile +++ linux-raspi2-4.2.0/drivers/mmc/host/Makefile @@ -18,6 +18,8 @@ obj-$(CONFIG_MMC_SDHCI_SIRF) += sdhci-sirf.o obj-$(CONFIG_MMC_SDHCI_F_SDH30) += sdhci_f_sdh30.o obj-$(CONFIG_MMC_SDHCI_SPEAR) += sdhci-spear.o +obj-$(CONFIG_MMC_BCM2835_SDHOST) += bcm2835-sdhost.o +obj-$(CONFIG_MMC_BCM2835) += bcm2835-mmc.o obj-$(CONFIG_MMC_WBSD) += wbsd.o obj-$(CONFIG_MMC_AU1X) += au1xmmc.o obj-$(CONFIG_MMC_MTK) += mtk-sd.o --- linux-raspi2-4.2.0.orig/drivers/mmc/host/bcm2835-mmc.c +++ linux-raspi2-4.2.0/drivers/mmc/host/bcm2835-mmc.c @@ -0,0 +1,1539 @@ +/* + * BCM2835 MMC host driver. + * + * Author: Gellert Weisz + * Copyright 2014 + * + * Based on + * sdhci-bcm2708.c by Broadcom + * sdhci-bcm2835.c by Stephen Warren and Oleksandr Tymoshenko + * sdhci.c and sdhci-pci.c by Pierre Ossman + * + * 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. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "sdhci.h" + + +#define DRIVER_NAME "mmc-bcm2835" + +#define DBG(f, x...) \ +pr_debug(DRIVER_NAME " [%s()]: " f, __func__, ## x) + +#ifndef CONFIG_MMC_BCM2835_DMA + #define FORCE_PIO +#endif + + +/* the inclusive limit in bytes under which PIO will be used instead of DMA */ +#ifdef CONFIG_MMC_BCM2835_PIO_DMA_BARRIER +#define PIO_DMA_BARRIER CONFIG_MMC_BCM2835_PIO_DMA_BARRIER +#else +#define PIO_DMA_BARRIER 00 +#endif + +#define MIN_FREQ 400000 +#define TIMEOUT_VAL 0xE +#define BCM2835_SDHCI_WRITE_DELAY(f) (((2 * 1000000) / f) + 1) + +#ifndef BCM2708_PERI_BASE + #define BCM2708_PERI_BASE 0x20000000 +#endif + +/* FIXME: Needs IOMMU support */ +#define BCM2835_VCMMU_SHIFT (0x7E000000 - BCM2708_PERI_BASE) + + +unsigned mmc_debug; +unsigned mmc_debug2; + +struct bcm2835_host { + spinlock_t lock; + + void __iomem *ioaddr; + u32 phys_addr; + + struct mmc_host *mmc; + + u32 timeout; + + int clock; /* Current clock speed */ + u8 pwr; /* Current voltage */ + + unsigned int max_clk; /* Max possible freq */ + unsigned int timeout_clk; /* Timeout freq (KHz) */ + unsigned int clk_mul; /* Clock Muliplier value */ + + struct tasklet_struct finish_tasklet; /* Tasklet structures */ + + struct timer_list timer; /* Timer for timeouts */ + + struct sg_mapping_iter sg_miter; /* SG state for PIO */ + unsigned int blocks; /* remaining PIO blocks */ + + int irq; /* Device IRQ */ + + + u32 ier; /* cached registers */ + + struct mmc_request *mrq; /* Current request */ + struct mmc_command *cmd; /* Current command */ + struct mmc_data *data; /* Current data request */ + unsigned int data_early:1; /* Data finished before cmd */ + + wait_queue_head_t buf_ready_int; /* Waitqueue for Buffer Read Ready interrupt */ + + u32 thread_isr; + + u32 shadow; + + /*DMA part*/ + struct dma_chan *dma_chan_rx; /* DMA channel for reads */ + struct dma_chan *dma_chan_tx; /* DMA channel for writes */ + struct dma_async_tx_descriptor *tx_desc; /* descriptor */ + + bool have_dma; + bool use_dma; + /*end of DMA part*/ + + int max_delay; /* maximum length of time spent waiting */ + + int flags; /* Host attributes */ +#define SDHCI_REQ_USE_DMA (1<<2) /* Use DMA for this req. */ +#define SDHCI_DEVICE_DEAD (1<<3) /* Device unresponsive */ +#define SDHCI_AUTO_CMD12 (1<<6) /* Auto CMD12 support */ +#define SDHCI_AUTO_CMD23 (1<<7) /* Auto CMD23 support */ +#define SDHCI_SDIO_IRQ_ENABLED (1<<9) /* SDIO irq enabled */ + + u32 overclock_50; /* frequency to use when 50MHz is requested (in MHz) */ + u32 max_overclock; /* Highest reported */ +}; + + +static inline void bcm2835_mmc_writel(struct bcm2835_host *host, u32 val, int reg, int from) +{ + unsigned delay; + lockdep_assert_held_once(&host->lock); + writel(val, host->ioaddr + reg); + udelay(BCM2835_SDHCI_WRITE_DELAY(max(host->clock, MIN_FREQ))); + + delay = ((mmc_debug >> 16) & 0xf) << ((mmc_debug >> 20) & 0xf); + if (delay && !((1<lock); + writel(val, host->ioaddr + reg); + + delay = ((mmc_debug >> 24) & 0xf) << ((mmc_debug >> 28) & 0xf); + if (delay) + udelay(delay); +} + +static inline u32 bcm2835_mmc_readl(struct bcm2835_host *host, int reg) +{ + lockdep_assert_held_once(&host->lock); + return readl(host->ioaddr + reg); +} + +static inline void bcm2835_mmc_writew(struct bcm2835_host *host, u16 val, int reg) +{ + u32 oldval = (reg == SDHCI_COMMAND) ? host->shadow : + bcm2835_mmc_readl(host, reg & ~3); + u32 word_num = (reg >> 1) & 1; + u32 word_shift = word_num * 16; + u32 mask = 0xffff << word_shift; + u32 newval = (oldval & ~mask) | (val << word_shift); + + if (reg == SDHCI_TRANSFER_MODE) + host->shadow = newval; + else + bcm2835_mmc_writel(host, newval, reg & ~3, 0); + +} + +static inline void bcm2835_mmc_writeb(struct bcm2835_host *host, u8 val, int reg) +{ + u32 oldval = bcm2835_mmc_readl(host, reg & ~3); + u32 byte_num = reg & 3; + u32 byte_shift = byte_num * 8; + u32 mask = 0xff << byte_shift; + u32 newval = (oldval & ~mask) | (val << byte_shift); + + bcm2835_mmc_writel(host, newval, reg & ~3, 1); +} + + +static inline u16 bcm2835_mmc_readw(struct bcm2835_host *host, int reg) +{ + u32 val = bcm2835_mmc_readl(host, (reg & ~3)); + u32 word_num = (reg >> 1) & 1; + u32 word_shift = word_num * 16; + u32 word = (val >> word_shift) & 0xffff; + + return word; +} + +static inline u8 bcm2835_mmc_readb(struct bcm2835_host *host, int reg) +{ + u32 val = bcm2835_mmc_readl(host, (reg & ~3)); + u32 byte_num = reg & 3; + u32 byte_shift = byte_num * 8; + u32 byte = (val >> byte_shift) & 0xff; + + return byte; +} + +static void bcm2835_mmc_unsignal_irqs(struct bcm2835_host *host, u32 clear) +{ + u32 ier; + + ier = bcm2835_mmc_readl(host, SDHCI_SIGNAL_ENABLE); + ier &= ~clear; + /* change which requests generate IRQs - makes no difference to + the content of SDHCI_INT_STATUS, or the need to acknowledge IRQs */ + bcm2835_mmc_writel(host, ier, SDHCI_SIGNAL_ENABLE, 2); +} + + +static void bcm2835_mmc_dumpregs(struct bcm2835_host *host) +{ + pr_debug(DRIVER_NAME ": =========== REGISTER DUMP (%s)===========\n", + mmc_hostname(host->mmc)); + + pr_debug(DRIVER_NAME ": Sys addr: 0x%08x | Version: 0x%08x\n", + bcm2835_mmc_readl(host, SDHCI_DMA_ADDRESS), + bcm2835_mmc_readw(host, SDHCI_HOST_VERSION)); + pr_debug(DRIVER_NAME ": Blk size: 0x%08x | Blk cnt: 0x%08x\n", + bcm2835_mmc_readw(host, SDHCI_BLOCK_SIZE), + bcm2835_mmc_readw(host, SDHCI_BLOCK_COUNT)); + pr_debug(DRIVER_NAME ": Argument: 0x%08x | Trn mode: 0x%08x\n", + bcm2835_mmc_readl(host, SDHCI_ARGUMENT), + bcm2835_mmc_readw(host, SDHCI_TRANSFER_MODE)); + pr_debug(DRIVER_NAME ": Present: 0x%08x | Host ctl: 0x%08x\n", + bcm2835_mmc_readl(host, SDHCI_PRESENT_STATE), + bcm2835_mmc_readb(host, SDHCI_HOST_CONTROL)); + pr_debug(DRIVER_NAME ": Power: 0x%08x | Blk gap: 0x%08x\n", + bcm2835_mmc_readb(host, SDHCI_POWER_CONTROL), + bcm2835_mmc_readb(host, SDHCI_BLOCK_GAP_CONTROL)); + pr_debug(DRIVER_NAME ": Wake-up: 0x%08x | Clock: 0x%08x\n", + bcm2835_mmc_readb(host, SDHCI_WAKE_UP_CONTROL), + bcm2835_mmc_readw(host, SDHCI_CLOCK_CONTROL)); + pr_debug(DRIVER_NAME ": Timeout: 0x%08x | Int stat: 0x%08x\n", + bcm2835_mmc_readb(host, SDHCI_TIMEOUT_CONTROL), + bcm2835_mmc_readl(host, SDHCI_INT_STATUS)); + pr_debug(DRIVER_NAME ": Int enab: 0x%08x | Sig enab: 0x%08x\n", + bcm2835_mmc_readl(host, SDHCI_INT_ENABLE), + bcm2835_mmc_readl(host, SDHCI_SIGNAL_ENABLE)); + pr_debug(DRIVER_NAME ": AC12 err: 0x%08x | Slot int: 0x%08x\n", + bcm2835_mmc_readw(host, SDHCI_ACMD12_ERR), + bcm2835_mmc_readw(host, SDHCI_SLOT_INT_STATUS)); + pr_debug(DRIVER_NAME ": Caps: 0x%08x | Caps_1: 0x%08x\n", + bcm2835_mmc_readl(host, SDHCI_CAPABILITIES), + bcm2835_mmc_readl(host, SDHCI_CAPABILITIES_1)); + pr_debug(DRIVER_NAME ": Cmd: 0x%08x | Max curr: 0x%08x\n", + bcm2835_mmc_readw(host, SDHCI_COMMAND), + bcm2835_mmc_readl(host, SDHCI_MAX_CURRENT)); + pr_debug(DRIVER_NAME ": Host ctl2: 0x%08x\n", + bcm2835_mmc_readw(host, SDHCI_HOST_CONTROL2)); + + pr_debug(DRIVER_NAME ": ===========================================\n"); +} + + +static void bcm2835_mmc_reset(struct bcm2835_host *host, u8 mask) +{ + unsigned long timeout; + unsigned long flags; + + spin_lock_irqsave(&host->lock, flags); + bcm2835_mmc_writeb(host, mask, SDHCI_SOFTWARE_RESET); + + if (mask & SDHCI_RESET_ALL) + host->clock = 0; + + /* Wait max 100 ms */ + timeout = 100; + + /* hw clears the bit when it's done */ + while (bcm2835_mmc_readb(host, SDHCI_SOFTWARE_RESET) & mask) { + if (timeout == 0) { + pr_err("%s: Reset 0x%x never completed.\n", + mmc_hostname(host->mmc), (int)mask); + bcm2835_mmc_dumpregs(host); + return; + } + timeout--; + spin_unlock_irqrestore(&host->lock, flags); + mdelay(1); + spin_lock_irqsave(&host->lock, flags); + } + + if (100-timeout > 10 && 100-timeout > host->max_delay) { + host->max_delay = 100-timeout; + pr_warning("Warning: MMC controller hung for %d ms\n", host->max_delay); + } + spin_unlock_irqrestore(&host->lock, flags); +} + +static void bcm2835_mmc_set_ios(struct mmc_host *mmc, struct mmc_ios *ios); + +static void bcm2835_mmc_init(struct bcm2835_host *host, int soft) +{ + unsigned long flags; + if (soft) + bcm2835_mmc_reset(host, SDHCI_RESET_CMD|SDHCI_RESET_DATA); + else + bcm2835_mmc_reset(host, SDHCI_RESET_ALL); + + host->ier = SDHCI_INT_BUS_POWER | SDHCI_INT_DATA_END_BIT | + SDHCI_INT_DATA_CRC | SDHCI_INT_DATA_TIMEOUT | + SDHCI_INT_INDEX | SDHCI_INT_END_BIT | SDHCI_INT_CRC | + SDHCI_INT_TIMEOUT | SDHCI_INT_DATA_END | + SDHCI_INT_RESPONSE; + + spin_lock_irqsave(&host->lock, flags); + bcm2835_mmc_writel(host, host->ier, SDHCI_INT_ENABLE, 3); + bcm2835_mmc_writel(host, host->ier, SDHCI_SIGNAL_ENABLE, 3); + spin_unlock_irqrestore(&host->lock, flags); + + if (soft) { + /* force clock reconfiguration */ + host->clock = 0; + bcm2835_mmc_set_ios(host->mmc, &host->mmc->ios); + } +} + + + +static void bcm2835_mmc_finish_data(struct bcm2835_host *host); + +static void bcm2835_mmc_dma_complete(void *param) +{ + struct bcm2835_host *host = param; + struct dma_chan *dma_chan; + unsigned long flags; + u32 dir_data; + + spin_lock_irqsave(&host->lock, flags); + + if (host->data && !(host->data->flags & MMC_DATA_WRITE)) { + /* otherwise handled in SDHCI IRQ */ + dma_chan = host->dma_chan_rx; + dir_data = DMA_FROM_DEVICE; + + dma_unmap_sg(dma_chan->device->dev, + host->data->sg, host->data->sg_len, + dir_data); + + bcm2835_mmc_finish_data(host); + } + + spin_unlock_irqrestore(&host->lock, flags); +} + +static void bcm2835_bcm2835_mmc_read_block_pio(struct bcm2835_host *host) +{ + unsigned long flags; + size_t blksize, len, chunk; + + u32 uninitialized_var(scratch); + u8 *buf; + + blksize = host->data->blksz; + chunk = 0; + + local_irq_save(flags); + + while (blksize) { + if (!sg_miter_next(&host->sg_miter)) + BUG(); + + len = min(host->sg_miter.length, blksize); + + blksize -= len; + host->sg_miter.consumed = len; + + buf = host->sg_miter.addr; + + while (len) { + if (chunk == 0) { + scratch = bcm2835_mmc_readl(host, SDHCI_BUFFER); + chunk = 4; + } + + *buf = scratch & 0xFF; + + buf++; + scratch >>= 8; + chunk--; + len--; + } + } + + sg_miter_stop(&host->sg_miter); + + local_irq_restore(flags); +} + +static void bcm2835_bcm2835_mmc_write_block_pio(struct bcm2835_host *host) +{ + unsigned long flags; + size_t blksize, len, chunk; + u32 scratch; + u8 *buf; + + blksize = host->data->blksz; + chunk = 0; + chunk = 0; + scratch = 0; + + local_irq_save(flags); + + while (blksize) { + if (!sg_miter_next(&host->sg_miter)) + BUG(); + + len = min(host->sg_miter.length, blksize); + + blksize -= len; + host->sg_miter.consumed = len; + + buf = host->sg_miter.addr; + + while (len) { + scratch |= (u32)*buf << (chunk * 8); + + buf++; + chunk++; + len--; + + if ((chunk == 4) || ((len == 0) && (blksize == 0))) { + mmc_raw_writel(host, scratch, SDHCI_BUFFER); + chunk = 0; + scratch = 0; + } + } + } + + sg_miter_stop(&host->sg_miter); + + local_irq_restore(flags); +} + + +static void bcm2835_mmc_transfer_pio(struct bcm2835_host *host) +{ + u32 mask; + + BUG_ON(!host->data); + + if (host->blocks == 0) + return; + + if (host->data->flags & MMC_DATA_READ) + mask = SDHCI_DATA_AVAILABLE; + else + mask = SDHCI_SPACE_AVAILABLE; + + while (bcm2835_mmc_readl(host, SDHCI_PRESENT_STATE) & mask) { + + if (host->data->flags & MMC_DATA_READ) + bcm2835_bcm2835_mmc_read_block_pio(host); + else + bcm2835_bcm2835_mmc_write_block_pio(host); + + host->blocks--; + + /* QUIRK used in sdhci.c removes the 'if' */ + /* but it seems this is unnecessary */ + if (host->blocks == 0) + break; + + + } +} + + +static void bcm2835_mmc_transfer_dma(struct bcm2835_host *host) +{ + u32 len, dir_data, dir_slave; + struct dma_async_tx_descriptor *desc = NULL; + struct dma_chan *dma_chan; + + + WARN_ON(!host->data); + + if (!host->data) + return; + + if (host->blocks == 0) + return; + + if (host->data->flags & MMC_DATA_READ) { + dma_chan = host->dma_chan_rx; + dir_data = DMA_FROM_DEVICE; + dir_slave = DMA_DEV_TO_MEM; + } else { + dma_chan = host->dma_chan_tx; + dir_data = DMA_TO_DEVICE; + dir_slave = DMA_MEM_TO_DEV; + } + + BUG_ON(!dma_chan->device); + BUG_ON(!dma_chan->device->dev); + BUG_ON(!host->data->sg); + + len = dma_map_sg(dma_chan->device->dev, host->data->sg, + host->data->sg_len, dir_data); + if (len > 0) { + desc = dmaengine_prep_slave_sg(dma_chan, host->data->sg, + len, dir_slave, + DMA_PREP_INTERRUPT | DMA_CTRL_ACK); + } else { + dev_err(mmc_dev(host->mmc), "dma_map_sg returned zero length\n"); + } + if (desc) { + unsigned long flags; + spin_lock_irqsave(&host->lock, flags); + bcm2835_mmc_unsignal_irqs(host, SDHCI_INT_DATA_AVAIL | + SDHCI_INT_SPACE_AVAIL); + host->tx_desc = desc; + desc->callback = bcm2835_mmc_dma_complete; + desc->callback_param = host; + spin_unlock_irqrestore(&host->lock, flags); + dmaengine_submit(desc); + dma_async_issue_pending(dma_chan); + } + +} + + + +static void bcm2835_mmc_set_transfer_irqs(struct bcm2835_host *host) +{ + u32 pio_irqs = SDHCI_INT_DATA_AVAIL | SDHCI_INT_SPACE_AVAIL; + u32 dma_irqs = SDHCI_INT_DMA_END | SDHCI_INT_ADMA_ERROR; + + if (host->use_dma) + host->ier = (host->ier & ~pio_irqs) | dma_irqs; + else + host->ier = (host->ier & ~dma_irqs) | pio_irqs; + + bcm2835_mmc_writel(host, host->ier, SDHCI_INT_ENABLE, 4); + bcm2835_mmc_writel(host, host->ier, SDHCI_SIGNAL_ENABLE, 4); +} + + +static void bcm2835_mmc_prepare_data(struct bcm2835_host *host, struct mmc_command *cmd) +{ + u8 count; + struct mmc_data *data = cmd->data; + + WARN_ON(host->data); + + if (data || (cmd->flags & MMC_RSP_BUSY)) { + count = TIMEOUT_VAL; + bcm2835_mmc_writeb(host, count, SDHCI_TIMEOUT_CONTROL); + } + + if (!data) + return; + + /* Sanity checks */ + BUG_ON(data->blksz * data->blocks > 524288); + BUG_ON(data->blksz > host->mmc->max_blk_size); + BUG_ON(data->blocks > 65535); + + host->data = data; + host->data_early = 0; + host->data->bytes_xfered = 0; + + + if (!(host->flags & SDHCI_REQ_USE_DMA)) { + int flags; + + flags = SG_MITER_ATOMIC; + if (host->data->flags & MMC_DATA_READ) + flags |= SG_MITER_TO_SG; + else + flags |= SG_MITER_FROM_SG; + sg_miter_start(&host->sg_miter, data->sg, data->sg_len, flags); + host->blocks = data->blocks; + } + + host->use_dma = host->have_dma && data->blocks > PIO_DMA_BARRIER; + + bcm2835_mmc_set_transfer_irqs(host); + + /* Set the DMA boundary value and block size */ + bcm2835_mmc_writew(host, SDHCI_MAKE_BLKSZ(SDHCI_DEFAULT_BOUNDARY_ARG, + data->blksz), SDHCI_BLOCK_SIZE); + bcm2835_mmc_writew(host, data->blocks, SDHCI_BLOCK_COUNT); + + BUG_ON(!host->data); +} + +static void bcm2835_mmc_set_transfer_mode(struct bcm2835_host *host, + struct mmc_command *cmd) +{ + u16 mode; + struct mmc_data *data = cmd->data; + + if (data == NULL) { + /* clear Auto CMD settings for no data CMDs */ + mode = bcm2835_mmc_readw(host, SDHCI_TRANSFER_MODE); + bcm2835_mmc_writew(host, mode & ~(SDHCI_TRNS_AUTO_CMD12 | + SDHCI_TRNS_AUTO_CMD23), SDHCI_TRANSFER_MODE); + return; + } + + WARN_ON(!host->data); + + mode = SDHCI_TRNS_BLK_CNT_EN; + + if ((mmc_op_multi(cmd->opcode) || data->blocks > 1)) { + mode |= SDHCI_TRNS_MULTI; + + /* + * If we are sending CMD23, CMD12 never gets sent + * on successful completion (so no Auto-CMD12). + */ + if (!host->mrq->sbc && (host->flags & SDHCI_AUTO_CMD12)) + mode |= SDHCI_TRNS_AUTO_CMD12; + else if (host->mrq->sbc && (host->flags & SDHCI_AUTO_CMD23)) { + mode |= SDHCI_TRNS_AUTO_CMD23; + bcm2835_mmc_writel(host, host->mrq->sbc->arg, SDHCI_ARGUMENT2, 5); + } + } + + if (data->flags & MMC_DATA_READ) + mode |= SDHCI_TRNS_READ; + if (host->flags & SDHCI_REQ_USE_DMA) + mode |= SDHCI_TRNS_DMA; + + bcm2835_mmc_writew(host, mode, SDHCI_TRANSFER_MODE); +} + +void bcm2835_mmc_send_command(struct bcm2835_host *host, struct mmc_command *cmd) +{ + int flags; + u32 mask; + unsigned long timeout; + + WARN_ON(host->cmd); + + /* Wait max 10 ms */ + timeout = 1000; + + mask = SDHCI_CMD_INHIBIT; + if ((cmd->data != NULL) || (cmd->flags & MMC_RSP_BUSY)) + mask |= SDHCI_DATA_INHIBIT; + + /* We shouldn't wait for data inihibit for stop commands, even + though they might use busy signaling */ + if (host->mrq->data && (cmd == host->mrq->data->stop)) + mask &= ~SDHCI_DATA_INHIBIT; + + while (bcm2835_mmc_readl(host, SDHCI_PRESENT_STATE) & mask) { + if (timeout == 0) { + pr_err("%s: Controller never released inhibit bit(s).\n", + mmc_hostname(host->mmc)); + bcm2835_mmc_dumpregs(host); + cmd->error = -EIO; + tasklet_schedule(&host->finish_tasklet); + return; + } + timeout--; + udelay(10); + } + + if ((1000-timeout)/100 > 1 && (1000-timeout)/100 > host->max_delay) { + host->max_delay = (1000-timeout)/100; + pr_warning("Warning: MMC controller hung for %d ms\n", host->max_delay); + } + + timeout = jiffies; + if (!cmd->data && cmd->busy_timeout > 9000) + timeout += DIV_ROUND_UP(cmd->busy_timeout, 1000) * HZ + HZ; + else + timeout += 10 * HZ; + mod_timer(&host->timer, timeout); + + host->cmd = cmd; + + bcm2835_mmc_prepare_data(host, cmd); + + bcm2835_mmc_writel(host, cmd->arg, SDHCI_ARGUMENT, 6); + + bcm2835_mmc_set_transfer_mode(host, cmd); + + if ((cmd->flags & MMC_RSP_136) && (cmd->flags & MMC_RSP_BUSY)) { + pr_err("%s: Unsupported response type!\n", + mmc_hostname(host->mmc)); + cmd->error = -EINVAL; + tasklet_schedule(&host->finish_tasklet); + return; + } + + if (!(cmd->flags & MMC_RSP_PRESENT)) + flags = SDHCI_CMD_RESP_NONE; + else if (cmd->flags & MMC_RSP_136) + flags = SDHCI_CMD_RESP_LONG; + else if (cmd->flags & MMC_RSP_BUSY) + flags = SDHCI_CMD_RESP_SHORT_BUSY; + else + flags = SDHCI_CMD_RESP_SHORT; + + if (cmd->flags & MMC_RSP_CRC) + flags |= SDHCI_CMD_CRC; + if (cmd->flags & MMC_RSP_OPCODE) + flags |= SDHCI_CMD_INDEX; + + if (cmd->data) + flags |= SDHCI_CMD_DATA; + + bcm2835_mmc_writew(host, SDHCI_MAKE_CMD(cmd->opcode, flags), SDHCI_COMMAND); +} + + +static void bcm2835_mmc_finish_data(struct bcm2835_host *host) +{ + struct mmc_data *data; + + BUG_ON(!host->data); + + data = host->data; + host->data = NULL; + + if (data->error) + data->bytes_xfered = 0; + else + data->bytes_xfered = data->blksz * data->blocks; + + /* + * Need to send CMD12 if - + * a) open-ended multiblock transfer (no CMD23) + * b) error in multiblock transfer + */ + if (data->stop && + (data->error || + !host->mrq->sbc)) { + + /* + * The controller needs a reset of internal state machines + * upon error conditions. + */ + if (data->error) { + bcm2835_mmc_reset(host, SDHCI_RESET_CMD); + bcm2835_mmc_reset(host, SDHCI_RESET_DATA); + } + + bcm2835_mmc_send_command(host, data->stop); + } else + tasklet_schedule(&host->finish_tasklet); +} + +static void bcm2835_mmc_finish_command(struct bcm2835_host *host) +{ + int i; + + BUG_ON(host->cmd == NULL); + + if (host->cmd->flags & MMC_RSP_PRESENT) { + if (host->cmd->flags & MMC_RSP_136) { + /* CRC is stripped so we need to do some shifting. */ + for (i = 0; i < 4; i++) { + host->cmd->resp[i] = bcm2835_mmc_readl(host, + SDHCI_RESPONSE + (3-i)*4) << 8; + if (i != 3) + host->cmd->resp[i] |= + bcm2835_mmc_readb(host, + SDHCI_RESPONSE + (3-i)*4-1); + } + } else { + host->cmd->resp[0] = bcm2835_mmc_readl(host, SDHCI_RESPONSE); + } + } + + host->cmd->error = 0; + + /* Finished CMD23, now send actual command. */ + if (host->cmd == host->mrq->sbc) { + host->cmd = NULL; + bcm2835_mmc_send_command(host, host->mrq->cmd); + + if (host->mrq->cmd->data && host->use_dma) { + /* DMA transfer starts now, PIO starts after interrupt */ + bcm2835_mmc_transfer_dma(host); + } + } else { + + /* Processed actual command. */ + if (host->data && host->data_early) + bcm2835_mmc_finish_data(host); + + if (!host->cmd->data) + tasklet_schedule(&host->finish_tasklet); + + host->cmd = NULL; + } +} + + +static void bcm2835_mmc_timeout_timer(unsigned long data) +{ + struct bcm2835_host *host; + unsigned long flags; + + host = (struct bcm2835_host *)data; + + spin_lock_irqsave(&host->lock, flags); + + if (host->mrq) { + pr_err("%s: Timeout waiting for hardware interrupt.\n", + mmc_hostname(host->mmc)); + bcm2835_mmc_dumpregs(host); + + if (host->data) { + host->data->error = -ETIMEDOUT; + bcm2835_mmc_finish_data(host); + } else { + if (host->cmd) + host->cmd->error = -ETIMEDOUT; + else + host->mrq->cmd->error = -ETIMEDOUT; + + tasklet_schedule(&host->finish_tasklet); + } + } + + mmiowb(); + spin_unlock_irqrestore(&host->lock, flags); +} + + +static void bcm2835_mmc_enable_sdio_irq_nolock(struct bcm2835_host *host, int enable) +{ + if (!(host->flags & SDHCI_DEVICE_DEAD)) { + if (enable) + host->ier |= SDHCI_INT_CARD_INT; + else + host->ier &= ~SDHCI_INT_CARD_INT; + + bcm2835_mmc_writel(host, host->ier, SDHCI_INT_ENABLE, 7); + bcm2835_mmc_writel(host, host->ier, SDHCI_SIGNAL_ENABLE, 7); + mmiowb(); + } +} + +static void bcm2835_mmc_enable_sdio_irq(struct mmc_host *mmc, int enable) +{ + struct bcm2835_host *host = mmc_priv(mmc); + unsigned long flags; + + spin_lock_irqsave(&host->lock, flags); + if (enable) + host->flags |= SDHCI_SDIO_IRQ_ENABLED; + else + host->flags &= ~SDHCI_SDIO_IRQ_ENABLED; + + bcm2835_mmc_enable_sdio_irq_nolock(host, enable); + spin_unlock_irqrestore(&host->lock, flags); +} + +static void bcm2835_mmc_cmd_irq(struct bcm2835_host *host, u32 intmask) +{ + + BUG_ON(intmask == 0); + + if (!host->cmd) { + pr_err("%s: Got command interrupt 0x%08x even " + "though no command operation was in progress.\n", + mmc_hostname(host->mmc), (unsigned)intmask); + bcm2835_mmc_dumpregs(host); + return; + } + + if (intmask & SDHCI_INT_TIMEOUT) + host->cmd->error = -ETIMEDOUT; + else if (intmask & (SDHCI_INT_CRC | SDHCI_INT_END_BIT | + SDHCI_INT_INDEX)) { + host->cmd->error = -EILSEQ; + } + + if (host->cmd->error) { + tasklet_schedule(&host->finish_tasklet); + return; + } + + if (intmask & SDHCI_INT_RESPONSE) + bcm2835_mmc_finish_command(host); + +} + +static void bcm2835_mmc_data_irq(struct bcm2835_host *host, u32 intmask) +{ + struct dma_chan *dma_chan; + u32 dir_data; + + BUG_ON(intmask == 0); + + if (!host->data) { + /* + * The "data complete" interrupt is also used to + * indicate that a busy state has ended. See comment + * above in sdhci_cmd_irq(). + */ + if (host->cmd && (host->cmd->flags & MMC_RSP_BUSY)) { + if (intmask & SDHCI_INT_DATA_END) { + bcm2835_mmc_finish_command(host); + return; + } + } + + pr_debug("%s: Got data interrupt 0x%08x even " + "though no data operation was in progress.\n", + mmc_hostname(host->mmc), (unsigned)intmask); + bcm2835_mmc_dumpregs(host); + + return; + } + + if (intmask & SDHCI_INT_DATA_TIMEOUT) + host->data->error = -ETIMEDOUT; + else if (intmask & SDHCI_INT_DATA_END_BIT) + host->data->error = -EILSEQ; + else if ((intmask & SDHCI_INT_DATA_CRC) && + SDHCI_GET_CMD(bcm2835_mmc_readw(host, SDHCI_COMMAND)) + != MMC_BUS_TEST_R) + host->data->error = -EILSEQ; + + if (host->use_dma) { + if (host->data->flags & MMC_DATA_WRITE) { + /* IRQ handled here */ + + dma_chan = host->dma_chan_tx; + dir_data = DMA_TO_DEVICE; + dma_unmap_sg(dma_chan->device->dev, + host->data->sg, host->data->sg_len, + dir_data); + + bcm2835_mmc_finish_data(host); + } + + } else { + if (host->data->error) + bcm2835_mmc_finish_data(host); + else { + if (intmask & (SDHCI_INT_DATA_AVAIL | SDHCI_INT_SPACE_AVAIL)) + bcm2835_mmc_transfer_pio(host); + + if (intmask & SDHCI_INT_DATA_END) { + if (host->cmd) { + /* + * Data managed to finish before the + * command completed. Make sure we do + * things in the proper order. + */ + host->data_early = 1; + } else { + bcm2835_mmc_finish_data(host); + } + } + } + } +} + + +static irqreturn_t bcm2835_mmc_irq(int irq, void *dev_id) +{ + irqreturn_t result = IRQ_NONE; + struct bcm2835_host *host = dev_id; + u32 intmask, mask, unexpected = 0; + int max_loops = 16; + + spin_lock(&host->lock); + + intmask = bcm2835_mmc_readl(host, SDHCI_INT_STATUS); + + if (!intmask || intmask == 0xffffffff) { + result = IRQ_NONE; + goto out; + } + + do { + /* Clear selected interrupts. */ + mask = intmask & (SDHCI_INT_CMD_MASK | SDHCI_INT_DATA_MASK | + SDHCI_INT_BUS_POWER); + bcm2835_mmc_writel(host, mask, SDHCI_INT_STATUS, 8); + + + if (intmask & SDHCI_INT_CMD_MASK) + bcm2835_mmc_cmd_irq(host, intmask & SDHCI_INT_CMD_MASK); + + if (intmask & SDHCI_INT_DATA_MASK) + bcm2835_mmc_data_irq(host, intmask & SDHCI_INT_DATA_MASK); + + if (intmask & SDHCI_INT_BUS_POWER) + pr_err("%s: Card is consuming too much power!\n", + mmc_hostname(host->mmc)); + + if (intmask & SDHCI_INT_CARD_INT) { + bcm2835_mmc_enable_sdio_irq_nolock(host, false); + host->thread_isr |= SDHCI_INT_CARD_INT; + result = IRQ_WAKE_THREAD; + } + + intmask &= ~(SDHCI_INT_CARD_INSERT | SDHCI_INT_CARD_REMOVE | + SDHCI_INT_CMD_MASK | SDHCI_INT_DATA_MASK | + SDHCI_INT_ERROR | SDHCI_INT_BUS_POWER | + SDHCI_INT_CARD_INT); + + if (intmask) { + unexpected |= intmask; + bcm2835_mmc_writel(host, intmask, SDHCI_INT_STATUS, 9); + } + + if (result == IRQ_NONE) + result = IRQ_HANDLED; + + intmask = bcm2835_mmc_readl(host, SDHCI_INT_STATUS); + } while (intmask && --max_loops); +out: + spin_unlock(&host->lock); + + if (unexpected) { + pr_err("%s: Unexpected interrupt 0x%08x.\n", + mmc_hostname(host->mmc), unexpected); + bcm2835_mmc_dumpregs(host); + } + + return result; +} + +static irqreturn_t bcm2835_mmc_thread_irq(int irq, void *dev_id) +{ + struct bcm2835_host *host = dev_id; + unsigned long flags; + u32 isr; + + spin_lock_irqsave(&host->lock, flags); + isr = host->thread_isr; + host->thread_isr = 0; + spin_unlock_irqrestore(&host->lock, flags); + + if (isr & SDHCI_INT_CARD_INT) { + sdio_run_irqs(host->mmc); + + spin_lock_irqsave(&host->lock, flags); + if (host->flags & SDHCI_SDIO_IRQ_ENABLED) + bcm2835_mmc_enable_sdio_irq_nolock(host, true); + spin_unlock_irqrestore(&host->lock, flags); + } + + return isr ? IRQ_HANDLED : IRQ_NONE; +} + + + +void bcm2835_mmc_set_clock(struct bcm2835_host *host, unsigned int clock) +{ + int div = 0; /* Initialized for compiler warning */ + int real_div = div, clk_mul = 1; + u16 clk = 0; + unsigned long timeout; + unsigned int input_clock = clock; + + if (host->overclock_50 && (clock == 50000000)) + clock = host->overclock_50 * 1000000 + 999999; + + host->mmc->actual_clock = 0; + + bcm2835_mmc_writew(host, 0, SDHCI_CLOCK_CONTROL); + + if (clock == 0) + return; + + /* Version 3.00 divisors must be a multiple of 2. */ + if (host->max_clk <= clock) + div = 1; + else { + for (div = 2; div < SDHCI_MAX_DIV_SPEC_300; + div += 2) { + if ((host->max_clk / div) <= clock) + break; + } + } + + real_div = div; + div >>= 1; + + if (real_div) + clock = (host->max_clk * clk_mul) / real_div; + host->mmc->actual_clock = clock; + + if ((clock > input_clock) && (clock > host->max_overclock)) { + pr_warn("%s: Overclocking to %dHz\n", + mmc_hostname(host->mmc), clock); + host->max_overclock = clock; + } + + clk |= (div & SDHCI_DIV_MASK) << SDHCI_DIVIDER_SHIFT; + clk |= ((div & SDHCI_DIV_HI_MASK) >> SDHCI_DIV_MASK_LEN) + << SDHCI_DIVIDER_HI_SHIFT; + clk |= SDHCI_CLOCK_INT_EN; + bcm2835_mmc_writew(host, clk, SDHCI_CLOCK_CONTROL); + + /* Wait max 20 ms */ + timeout = 20; + while (!((clk = bcm2835_mmc_readw(host, SDHCI_CLOCK_CONTROL)) + & SDHCI_CLOCK_INT_STABLE)) { + if (timeout == 0) { + pr_err("%s: Internal clock never " + "stabilised.\n", mmc_hostname(host->mmc)); + bcm2835_mmc_dumpregs(host); + return; + } + timeout--; + mdelay(1); + } + + if (20-timeout > 10 && 20-timeout > host->max_delay) { + host->max_delay = 20-timeout; + pr_warning("Warning: MMC controller hung for %d ms\n", host->max_delay); + } + + clk |= SDHCI_CLOCK_CARD_EN; + bcm2835_mmc_writew(host, clk, SDHCI_CLOCK_CONTROL); +} + +static void bcm2835_mmc_request(struct mmc_host *mmc, struct mmc_request *mrq) +{ + struct bcm2835_host *host; + unsigned long flags; + + host = mmc_priv(mmc); + + spin_lock_irqsave(&host->lock, flags); + + WARN_ON(host->mrq != NULL); + + host->mrq = mrq; + + if (mrq->sbc && !(host->flags & SDHCI_AUTO_CMD23)) + bcm2835_mmc_send_command(host, mrq->sbc); + else + bcm2835_mmc_send_command(host, mrq->cmd); + + mmiowb(); + spin_unlock_irqrestore(&host->lock, flags); + + if (!(mrq->sbc && !(host->flags & SDHCI_AUTO_CMD23)) && mrq->cmd->data && host->use_dma) { + /* DMA transfer starts now, PIO starts after interrupt */ + bcm2835_mmc_transfer_dma(host); + } +} + + +static void bcm2835_mmc_set_ios(struct mmc_host *mmc, struct mmc_ios *ios) +{ + + struct bcm2835_host *host = mmc_priv(mmc); + unsigned long flags; + u8 ctrl; + u16 clk, ctrl_2; + + pr_debug("bcm2835_mmc_set_ios: clock %d, pwr %d, bus_width %d, timing %d, vdd %d, drv_type %d\n", + ios->clock, ios->power_mode, ios->bus_width, + ios->timing, ios->signal_voltage, ios->drv_type); + + spin_lock_irqsave(&host->lock, flags); + + if (!ios->clock || ios->clock != host->clock) { + bcm2835_mmc_set_clock(host, ios->clock); + host->clock = ios->clock; + } + + if (host->pwr != SDHCI_POWER_330) { + host->pwr = SDHCI_POWER_330; + bcm2835_mmc_writeb(host, SDHCI_POWER_330 | SDHCI_POWER_ON, SDHCI_POWER_CONTROL); + } + + ctrl = bcm2835_mmc_readb(host, SDHCI_HOST_CONTROL); + + /* set bus width */ + ctrl &= ~SDHCI_CTRL_8BITBUS; + if (ios->bus_width == MMC_BUS_WIDTH_4) + ctrl |= SDHCI_CTRL_4BITBUS; + else + ctrl &= ~SDHCI_CTRL_4BITBUS; + + ctrl &= ~SDHCI_CTRL_HISPD; /* NO_HISPD_BIT */ + + + bcm2835_mmc_writeb(host, ctrl, SDHCI_HOST_CONTROL); + /* + * We only need to set Driver Strength if the + * preset value enable is not set. + */ + ctrl_2 = bcm2835_mmc_readw(host, SDHCI_HOST_CONTROL2); + ctrl_2 &= ~SDHCI_CTRL_DRV_TYPE_MASK; + if (ios->drv_type == MMC_SET_DRIVER_TYPE_A) + ctrl_2 |= SDHCI_CTRL_DRV_TYPE_A; + else if (ios->drv_type == MMC_SET_DRIVER_TYPE_C) + ctrl_2 |= SDHCI_CTRL_DRV_TYPE_C; + + bcm2835_mmc_writew(host, ctrl_2, SDHCI_HOST_CONTROL2); + + /* Reset SD Clock Enable */ + clk = bcm2835_mmc_readw(host, SDHCI_CLOCK_CONTROL); + clk &= ~SDHCI_CLOCK_CARD_EN; + bcm2835_mmc_writew(host, clk, SDHCI_CLOCK_CONTROL); + + /* Re-enable SD Clock */ + bcm2835_mmc_set_clock(host, host->clock); + bcm2835_mmc_writeb(host, ctrl, SDHCI_HOST_CONTROL); + + mmiowb(); + + spin_unlock_irqrestore(&host->lock, flags); +} + + +static struct mmc_host_ops bcm2835_ops = { + .request = bcm2835_mmc_request, + .set_ios = bcm2835_mmc_set_ios, + .enable_sdio_irq = bcm2835_mmc_enable_sdio_irq, +}; + + +static void bcm2835_mmc_tasklet_finish(unsigned long param) +{ + struct bcm2835_host *host; + unsigned long flags; + struct mmc_request *mrq; + + host = (struct bcm2835_host *)param; + + spin_lock_irqsave(&host->lock, flags); + + /* + * If this tasklet gets rescheduled while running, it will + * be run again afterwards but without any active request. + */ + if (!host->mrq) { + spin_unlock_irqrestore(&host->lock, flags); + return; + } + + del_timer(&host->timer); + + mrq = host->mrq; + + /* + * The controller needs a reset of internal state machines + * upon error conditions. + */ + if (!(host->flags & SDHCI_DEVICE_DEAD) && + ((mrq->cmd && mrq->cmd->error) || + (mrq->data && (mrq->data->error || + (mrq->data->stop && mrq->data->stop->error))))) { + + spin_unlock_irqrestore(&host->lock, flags); + bcm2835_mmc_reset(host, SDHCI_RESET_CMD); + bcm2835_mmc_reset(host, SDHCI_RESET_DATA); + spin_lock_irqsave(&host->lock, flags); + } + + host->mrq = NULL; + host->cmd = NULL; + host->data = NULL; + + mmiowb(); + + spin_unlock_irqrestore(&host->lock, flags); + mmc_request_done(host->mmc, mrq); +} + + + +static int bcm2835_mmc_add_host(struct bcm2835_host *host) +{ + struct mmc_host *mmc = host->mmc; + struct device *dev = mmc->parent; +#ifndef FORCE_PIO + struct dma_slave_config cfg; +#endif + int ret; + + bcm2835_mmc_reset(host, SDHCI_RESET_ALL); + + host->clk_mul = 0; + + mmc->f_max = host->max_clk; + mmc->f_max = host->max_clk; + mmc->f_min = host->max_clk / SDHCI_MAX_DIV_SPEC_300; + + /* SDHCI_QUIRK_DATA_TIMEOUT_USES_SDCLK */ + host->timeout_clk = mmc->f_max / 1000; + mmc->max_busy_timeout = (1 << 27) / host->timeout_clk; + + /* host controller capabilities */ + mmc->caps |= MMC_CAP_CMD23 | MMC_CAP_ERASE | MMC_CAP_NEEDS_POLL | + MMC_CAP_SDIO_IRQ | MMC_CAP_SD_HIGHSPEED | + MMC_CAP_MMC_HIGHSPEED | MMC_CAP_4_BIT_DATA; + + mmc->caps2 |= MMC_CAP2_SDIO_IRQ_NOTHREAD; + + host->flags = SDHCI_AUTO_CMD23; + + dev_info(dev, "mmc_debug:%x mmc_debug2:%x\n", mmc_debug, mmc_debug2); +#ifdef FORCE_PIO + dev_info(dev, "Forcing PIO mode\n"); + host->have_dma = false; +#else + if (IS_ERR_OR_NULL(host->dma_chan_tx) || + IS_ERR_OR_NULL(host->dma_chan_rx)) { + dev_err(dev, "%s: Unable to initialise DMA channels. Falling back to PIO\n", + DRIVER_NAME); + host->have_dma = false; + } else { + dev_info(dev, "DMA channels allocated"); + host->have_dma = true; + + cfg.src_addr_width = DMA_SLAVE_BUSWIDTH_4_BYTES; + cfg.dst_addr_width = DMA_SLAVE_BUSWIDTH_4_BYTES; + cfg.slave_id = 11; /* DREQ channel */ + + cfg.direction = DMA_MEM_TO_DEV; + cfg.src_addr = 0; + cfg.dst_addr = host->phys_addr + SDHCI_BUFFER; + ret = dmaengine_slave_config(host->dma_chan_tx, &cfg); + + cfg.direction = DMA_DEV_TO_MEM; + cfg.src_addr = host->phys_addr + SDHCI_BUFFER; + cfg.dst_addr = 0; + ret = dmaengine_slave_config(host->dma_chan_rx, &cfg); + } +#endif + mmc->max_segs = 128; + mmc->max_req_size = 524288; + mmc->max_seg_size = mmc->max_req_size; + mmc->max_blk_size = 512; + mmc->max_blk_count = 65535; + + /* report supported voltage ranges */ + mmc->ocr_avail = MMC_VDD_32_33 | MMC_VDD_33_34; + + tasklet_init(&host->finish_tasklet, + bcm2835_mmc_tasklet_finish, (unsigned long)host); + + setup_timer(&host->timer, bcm2835_mmc_timeout_timer, (unsigned long)host); + init_waitqueue_head(&host->buf_ready_int); + + bcm2835_mmc_init(host, 0); + ret = devm_request_threaded_irq(dev, host->irq, bcm2835_mmc_irq, + bcm2835_mmc_thread_irq, IRQF_SHARED, + mmc_hostname(mmc), host); + if (ret) { + dev_err(dev, "Failed to request IRQ %d: %d\n", host->irq, ret); + goto untasklet; + } + + mmiowb(); + mmc_add_host(mmc); + + return 0; + +untasklet: + tasklet_kill(&host->finish_tasklet); + + return ret; +} + +static int bcm2835_mmc_probe(struct platform_device *pdev) +{ + struct device *dev = &pdev->dev; + struct device_node *node = dev->of_node; + struct clk *clk; + struct resource *iomem; + struct bcm2835_host *host; + struct mmc_host *mmc; + int ret; + + mmc = mmc_alloc_host(sizeof(*host), dev); + if (!mmc) + return -ENOMEM; + + mmc->ops = &bcm2835_ops; + host = mmc_priv(mmc); + host->mmc = mmc; + host->timeout = msecs_to_jiffies(1000); + spin_lock_init(&host->lock); + + iomem = platform_get_resource(pdev, IORESOURCE_MEM, 0); + host->ioaddr = devm_ioremap_resource(dev, iomem); + if (IS_ERR(host->ioaddr)) { + ret = PTR_ERR(host->ioaddr); + goto err; + } + + host->phys_addr = iomem->start + BCM2835_VCMMU_SHIFT; + +#ifndef FORCE_PIO + if (node) { + host->dma_chan_tx = dma_request_slave_channel(dev, "tx"); + host->dma_chan_rx = dma_request_slave_channel(dev, "rx"); + } else { + dma_cap_mask_t mask; + + dma_cap_zero(mask); + /* we don't care about the channel, any would work */ + dma_cap_set(DMA_SLAVE, mask); + host->dma_chan_tx = dma_request_channel(mask, NULL, NULL); + host->dma_chan_rx = dma_request_channel(mask, NULL, NULL); + } +#endif + clk = devm_clk_get(dev, NULL); + if (IS_ERR(clk)) { + dev_err(dev, "could not get clk\n"); + ret = PTR_ERR(clk); + goto err; + } + + host->max_clk = clk_get_rate(clk); + + host->irq = platform_get_irq(pdev, 0); + if (host->irq <= 0) { + dev_err(dev, "get IRQ failed\n"); + ret = -EINVAL; + goto err; + } + + if (node) { + mmc_of_parse(mmc); + + /* Read any custom properties */ + of_property_read_u32(node, + "brcm,overclock-50", + &host->overclock_50); + } else { + mmc->caps |= MMC_CAP_4_BIT_DATA; + } + + ret = bcm2835_mmc_add_host(host); + if (ret) + goto err; + + platform_set_drvdata(pdev, host); + + return 0; +err: + mmc_free_host(mmc); + + return ret; +} + +static int bcm2835_mmc_remove(struct platform_device *pdev) +{ + struct bcm2835_host *host = platform_get_drvdata(pdev); + unsigned long flags; + int dead; + u32 scratch; + + dead = 0; + scratch = bcm2835_mmc_readl(host, SDHCI_INT_STATUS); + if (scratch == (u32)-1) + dead = 1; + + + if (dead) { + spin_lock_irqsave(&host->lock, flags); + + host->flags |= SDHCI_DEVICE_DEAD; + + if (host->mrq) { + pr_err("%s: Controller removed during " + " transfer!\n", mmc_hostname(host->mmc)); + + host->mrq->cmd->error = -ENOMEDIUM; + tasklet_schedule(&host->finish_tasklet); + } + + spin_unlock_irqrestore(&host->lock, flags); + } + + mmc_remove_host(host->mmc); + + if (!dead) + bcm2835_mmc_reset(host, SDHCI_RESET_ALL); + + free_irq(host->irq, host); + + del_timer_sync(&host->timer); + + tasklet_kill(&host->finish_tasklet); + + mmc_free_host(host->mmc); + platform_set_drvdata(pdev, NULL); + + return 0; +} + + +static const struct of_device_id bcm2835_mmc_match[] = { + { .compatible = "brcm,bcm2835-mmc" }, + { } +}; +MODULE_DEVICE_TABLE(of, bcm2835_mmc_match); + + + +static struct platform_driver bcm2835_mmc_driver = { + .probe = bcm2835_mmc_probe, + .remove = bcm2835_mmc_remove, + .driver = { + .name = DRIVER_NAME, + .owner = THIS_MODULE, + .of_match_table = bcm2835_mmc_match, + }, +}; +module_platform_driver(bcm2835_mmc_driver); + +module_param(mmc_debug, uint, 0644); +module_param(mmc_debug2, uint, 0644); +MODULE_ALIAS("platform:mmc-bcm2835"); +MODULE_DESCRIPTION("BCM2835 SDHCI driver"); +MODULE_LICENSE("GPL v2"); +MODULE_AUTHOR("Gellert Weisz"); --- linux-raspi2-4.2.0.orig/drivers/mmc/host/bcm2835-sdhost.c +++ linux-raspi2-4.2.0/drivers/mmc/host/bcm2835-sdhost.c @@ -0,0 +1,1912 @@ +/* + * BCM2835 SD host driver. + * + * Author: Phil Elwell + * Copyright 2015 + * + * Based on + * mmc-bcm2835.c by Gellert Weisz + * which is, in turn, based on + * sdhci-bcm2708.c by Broadcom + * sdhci-bcm2835.c by Stephen Warren and Oleksandr Tymoshenko + * sdhci.c and sdhci-pci.c by Pierre Ossman + * + * 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. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#define SAFE_READ_THRESHOLD 4 +#define SAFE_WRITE_THRESHOLD 4 +#define ALLOW_DMA 1 +#define ALLOW_CMD23 0 +#define ALLOW_FAST 1 +#define USE_BLOCK_IRQ 1 + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#define DRIVER_NAME "sdhost-bcm2835" + +#define SDCMD 0x00 /* Command to SD card - 16 R/W */ +#define SDARG 0x04 /* Argument to SD card - 32 R/W */ +#define SDTOUT 0x08 /* Start value for timeout counter - 32 R/W */ +#define SDCDIV 0x0c /* Start value for clock divider - 11 R/W */ +#define SDRSP0 0x10 /* SD card response (31:0) - 32 R */ +#define SDRSP1 0x14 /* SD card response (63:32) - 32 R */ +#define SDRSP2 0x18 /* SD card response (95:64) - 32 R */ +#define SDRSP3 0x1c /* SD card response (127:96) - 32 R */ +#define SDHSTS 0x20 /* SD host status - 11 R */ +#define SDVDD 0x30 /* SD card power control - 1 R/W */ +#define SDEDM 0x34 /* Emergency Debug Mode - 13 R/W */ +#define SDHCFG 0x38 /* Host configuration - 2 R/W */ +#define SDHBCT 0x3c /* Host byte count (debug) - 32 R/W */ +#define SDDATA 0x40 /* Data to/from SD card - 32 R/W */ +#define SDHBLC 0x50 /* Host block count (SDIO/SDHC) - 9 R/W */ + +#define SDCMD_NEW_FLAG 0x8000 +#define SDCMD_FAIL_FLAG 0x4000 +#define SDCMD_BUSYWAIT 0x800 +#define SDCMD_NO_RESPONSE 0x400 +#define SDCMD_LONG_RESPONSE 0x200 +#define SDCMD_WRITE_CMD 0x80 +#define SDCMD_READ_CMD 0x40 +#define SDCMD_CMD_MASK 0x3f + +#define SDCDIV_MAX_CDIV 0x7ff + +#define SDHSTS_BUSY_IRPT 0x400 +#define SDHSTS_BLOCK_IRPT 0x200 +#define SDHSTS_SDIO_IRPT 0x100 +#define SDHSTS_REW_TIME_OUT 0x80 +#define SDHSTS_CMD_TIME_OUT 0x40 +#define SDHSTS_CRC16_ERROR 0x20 +#define SDHSTS_CRC7_ERROR 0x10 +#define SDHSTS_FIFO_ERROR 0x08 +/* Reserved */ +/* Reserved */ +#define SDHSTS_DATA_FLAG 0x01 + +#define SDHSTS_TRANSFER_ERROR_MASK (SDHSTS_CRC7_ERROR|SDHSTS_CRC16_ERROR|SDHSTS_REW_TIME_OUT|SDHSTS_FIFO_ERROR) +#define SDHSTS_ERROR_MASK (SDHSTS_CMD_TIME_OUT|SDHSTS_TRANSFER_ERROR_MASK) + +#define SDHCFG_BUSY_IRPT_EN (1<<10) +#define SDHCFG_BLOCK_IRPT_EN (1<<8) +#define SDHCFG_SDIO_IRPT_EN (1<<5) +#define SDHCFG_DATA_IRPT_EN (1<<4) +#define SDHCFG_SLOW_CARD (1<<3) +#define SDHCFG_WIDE_EXT_BUS (1<<2) +#define SDHCFG_WIDE_INT_BUS (1<<1) +#define SDHCFG_REL_CMD_LINE (1<<0) + +#define SDEDM_FORCE_DATA_MODE (1<<19) +#define SDEDM_CLOCK_PULSE (1<<20) +#define SDEDM_BYPASS (1<<21) + +#define SDEDM_WRITE_THRESHOLD_SHIFT 9 +#define SDEDM_READ_THRESHOLD_SHIFT 14 +#define SDEDM_THRESHOLD_MASK 0x1f + +#define MHZ 1000000 + +#ifndef BCM2708_PERI_BASE + #define BCM2708_PERI_BASE 0x20000000 +#endif + +/* FIXME: Needs IOMMU support */ +#define BCM2835_VCMMU_SHIFT (0x7E000000 - BCM2708_PERI_BASE) + + +struct bcm2835_host { + spinlock_t lock; + + void __iomem *ioaddr; + u32 phys_addr; + + struct mmc_host *mmc; + + u32 pio_timeout; /* In jiffies */ + + int clock; /* Current clock speed */ + + bool slow_card; /* Force 11-bit divisor */ + + unsigned int max_clk; /* Max possible freq */ + + struct tasklet_struct finish_tasklet; /* Tasklet structures */ + + struct timer_list timer; /* Timer for timeouts */ + + struct timer_list pio_timer; /* PIO error detection timer */ + + struct sg_mapping_iter sg_miter; /* SG state for PIO */ + unsigned int blocks; /* remaining PIO blocks */ + + int irq; /* Device IRQ */ + + + /* cached registers */ + u32 hcfg; + u32 cdiv; + + struct mmc_request *mrq; /* Current request */ + struct mmc_command *cmd; /* Current command */ + struct mmc_data *data; /* Current data request */ + unsigned int data_complete:1; /* Data finished before cmd */ + + unsigned int flush_fifo:1; /* Drain the fifo when finishing */ + + unsigned int use_busy:1; /* Wait for busy interrupt */ + + unsigned int debug:1; /* Enable debug output */ + + u32 thread_isr; + + /*DMA part*/ + struct dma_chan *dma_chan_rx; /* DMA channel for reads */ + struct dma_chan *dma_chan_tx; /* DMA channel for writes */ + + bool allow_dma; + bool have_dma; + bool use_dma; + /*end of DMA part*/ + + int max_delay; /* maximum length of time spent waiting */ + struct timeval stop_time; /* when the last stop was issued */ + u32 delay_after_stop; /* minimum time between stop and subsequent data transfer */ + u32 overclock_50; /* frequency to use when 50MHz is requested (in MHz) */ + u32 overclock; /* Current frequency if overclocked, else zero */ + u32 pio_limit; /* Maximum block count for PIO (0 = always DMA) */ +}; + + +static inline void bcm2835_sdhost_write(struct bcm2835_host *host, u32 val, int reg) +{ + writel(val, host->ioaddr + reg); +} + +static inline u32 bcm2835_sdhost_read(struct bcm2835_host *host, int reg) +{ + return readl(host->ioaddr + reg); +} + +static inline u32 bcm2835_sdhost_read_relaxed(struct bcm2835_host *host, int reg) +{ + return readl_relaxed(host->ioaddr + reg); +} + +static void bcm2835_sdhost_dumpcmd(struct bcm2835_host *host, + struct mmc_command *cmd, + const char *label) +{ + if (cmd) + pr_info("%s:%c%s op %d arg 0x%x flags 0x%x - resp %08x %08x %08x %08x, err %d\n", + mmc_hostname(host->mmc), + (cmd == host->cmd) ? '>' : ' ', + label, cmd->opcode, cmd->arg, cmd->flags, + cmd->resp[0], cmd->resp[1], cmd->resp[2], cmd->resp[3], + cmd->error); +} + +static void bcm2835_sdhost_dumpregs(struct bcm2835_host *host) +{ + bcm2835_sdhost_dumpcmd(host, host->mrq->sbc, "sbc"); + bcm2835_sdhost_dumpcmd(host, host->mrq->cmd, "cmd"); + if (host->mrq->data) + pr_err("%s: data blocks %x blksz %x - err %d\n", + mmc_hostname(host->mmc), + host->mrq->data->blocks, + host->mrq->data->blksz, + host->mrq->data->error); + bcm2835_sdhost_dumpcmd(host, host->mrq->stop, "stop"); + + pr_info("%s: =========== REGISTER DUMP ===========\n", + mmc_hostname(host->mmc)); + + pr_info("%s: SDCMD 0x%08x\n", + mmc_hostname(host->mmc), + bcm2835_sdhost_read(host, SDCMD)); + pr_info("%s: SDARG 0x%08x\n", + mmc_hostname(host->mmc), + bcm2835_sdhost_read(host, SDARG)); + pr_info("%s: SDTOUT 0x%08x\n", + mmc_hostname(host->mmc), + bcm2835_sdhost_read(host, SDTOUT)); + pr_info("%s: SDCDIV 0x%08x\n", + mmc_hostname(host->mmc), + bcm2835_sdhost_read(host, SDCDIV)); + pr_info("%s: SDRSP0 0x%08x\n", + mmc_hostname(host->mmc), + bcm2835_sdhost_read(host, SDRSP0)); + pr_info("%s: SDRSP1 0x%08x\n", + mmc_hostname(host->mmc), + bcm2835_sdhost_read(host, SDRSP1)); + pr_info("%s: SDRSP2 0x%08x\n", + mmc_hostname(host->mmc), + bcm2835_sdhost_read(host, SDRSP2)); + pr_info("%s: SDRSP3 0x%08x\n", + mmc_hostname(host->mmc), + bcm2835_sdhost_read(host, SDRSP3)); + pr_info("%s: SDHSTS 0x%08x\n", + mmc_hostname(host->mmc), + bcm2835_sdhost_read(host, SDHSTS)); + pr_info("%s: SDVDD 0x%08x\n", + mmc_hostname(host->mmc), + bcm2835_sdhost_read(host, SDVDD)); + pr_info("%s: SDEDM 0x%08x\n", + mmc_hostname(host->mmc), + bcm2835_sdhost_read(host, SDEDM)); + pr_info("%s: SDHCFG 0x%08x\n", + mmc_hostname(host->mmc), + bcm2835_sdhost_read(host, SDHCFG)); + pr_info("%s: SDHBCT 0x%08x\n", + mmc_hostname(host->mmc), + bcm2835_sdhost_read(host, SDHBCT)); + pr_info("%s: SDHBLC 0x%08x\n", + mmc_hostname(host->mmc), + bcm2835_sdhost_read(host, SDHBLC)); + + pr_info("%s: ===========================================\n", + mmc_hostname(host->mmc)); +} + + +static void bcm2835_sdhost_set_power(struct bcm2835_host *host, bool on) +{ + bcm2835_sdhost_write(host, on ? 1 : 0, SDVDD); +} + + +static void bcm2835_sdhost_reset_internal(struct bcm2835_host *host) +{ + u32 temp; + + bcm2835_sdhost_set_power(host, false); + + bcm2835_sdhost_write(host, 0, SDCMD); + bcm2835_sdhost_write(host, 0, SDARG); + bcm2835_sdhost_write(host, 0xf00000, SDTOUT); + bcm2835_sdhost_write(host, 0, SDCDIV); + bcm2835_sdhost_write(host, 0x7f8, SDHSTS); /* Write 1s to clear */ + bcm2835_sdhost_write(host, 0, SDHCFG); + bcm2835_sdhost_write(host, 0, SDHBCT); + bcm2835_sdhost_write(host, 0, SDHBLC); + + /* Limit fifo usage due to silicon bug */ + temp = bcm2835_sdhost_read(host, SDEDM); + temp &= ~((SDEDM_THRESHOLD_MASK<clock = 0; + bcm2835_sdhost_write(host, host->hcfg, SDHCFG); + bcm2835_sdhost_write(host, host->cdiv, SDCDIV); + mmiowb(); +} + + +static void bcm2835_sdhost_reset(struct mmc_host *mmc) +{ + struct bcm2835_host *host = mmc_priv(mmc); + unsigned long flags; + if (host->debug) + pr_info("%s: reset\n", mmc_hostname(mmc)); + spin_lock_irqsave(&host->lock, flags); + + bcm2835_sdhost_reset_internal(host); + + spin_unlock_irqrestore(&host->lock, flags); +} + +static void bcm2835_sdhost_set_ios(struct mmc_host *mmc, struct mmc_ios *ios); + +static void bcm2835_sdhost_init(struct bcm2835_host *host, int soft) +{ + pr_debug("bcm2835_sdhost_init(%d)\n", soft); + + /* Set interrupt enables */ + host->hcfg = SDHCFG_BUSY_IRPT_EN; + + bcm2835_sdhost_reset_internal(host); + + if (soft) { + /* force clock reconfiguration */ + host->clock = 0; + bcm2835_sdhost_set_ios(host->mmc, &host->mmc->ios); + } +} + +static bool bcm2835_sdhost_is_write_complete(struct bcm2835_host *host) +{ + bool write_complete = ((bcm2835_sdhost_read(host, SDEDM) & 0xf) == 1); + + if (!write_complete) { + /* Request an IRQ for the last block */ + host->hcfg |= SDHCFG_BLOCK_IRPT_EN; + bcm2835_sdhost_write(host, host->hcfg, SDHCFG); + if ((bcm2835_sdhost_read(host, SDEDM) & 0xf) == 1) { + /* The write has now completed. Disable the interrupt + and clear the status flag */ + host->hcfg &= ~SDHCFG_BLOCK_IRPT_EN; + bcm2835_sdhost_write(host, host->hcfg, SDHCFG); + bcm2835_sdhost_write(host, SDHSTS_BLOCK_IRPT, SDHSTS); + write_complete = true; + } + } + + return write_complete; +} + +static void bcm2835_sdhost_wait_write_complete(struct bcm2835_host *host) +{ + int timediff; +#ifdef DEBUG + static struct timeval start_time; + static int max_stall_time = 0; + static int total_stall_time = 0; + struct timeval before, after; + + do_gettimeofday(&before); + if (max_stall_time == 0) + start_time = before; +#endif + + timediff = 0; + + while (1) { + u32 edm = bcm2835_sdhost_read(host, SDEDM); + if ((edm & 0xf) == 1) + break; + timediff++; + if (timediff > 5000000) { +#ifdef DEBUG + do_gettimeofday(&after); + timediff = (after.tv_sec - before.tv_sec)*1000000 + + (after.tv_usec - before.tv_usec); + + pr_err(" wait_write_complete - still waiting after %dus\n", + timediff); +#else + pr_err(" wait_write_complete - still waiting after %d retries\n", + timediff); +#endif + bcm2835_sdhost_dumpregs(host); + host->data->error = -ETIMEDOUT; + return; + } + } + +#ifdef DEBUG + do_gettimeofday(&after); + timediff = (after.tv_sec - before.tv_sec)*1000000 + (after.tv_usec - before.tv_usec); + + total_stall_time += timediff; + if (timediff > max_stall_time) + max_stall_time = timediff; + + if ((after.tv_sec - start_time.tv_sec) > 10) { + pr_debug(" wait_write_complete - max wait %dus, total %dus\n", + max_stall_time, total_stall_time); + start_time = after; + max_stall_time = 0; + total_stall_time = 0; + } +#endif +} + +static void bcm2835_sdhost_finish_data(struct bcm2835_host *host); + +static void bcm2835_sdhost_dma_complete(void *param) +{ + struct bcm2835_host *host = param; + struct dma_chan *dma_chan; + unsigned long flags; + u32 dir_data; + + spin_lock_irqsave(&host->lock, flags); + + if (host->data) { + bool write_complete; + if (USE_BLOCK_IRQ) + write_complete = bcm2835_sdhost_is_write_complete(host); + else { + bcm2835_sdhost_wait_write_complete(host); + write_complete = true; + } + pr_debug("dma_complete() - write_complete=%d\n", + write_complete); + + if (write_complete || (host->data->flags & MMC_DATA_READ)) + { + if (write_complete) { + dma_chan = host->dma_chan_tx; + dir_data = DMA_TO_DEVICE; + } else { + dma_chan = host->dma_chan_rx; + dir_data = DMA_FROM_DEVICE; + } + + dma_unmap_sg(dma_chan->device->dev, + host->data->sg, host->data->sg_len, + dir_data); + + bcm2835_sdhost_finish_data(host); + } + } + + spin_unlock_irqrestore(&host->lock, flags); +} + +static bool data_transfer_wait(struct bcm2835_host *host) +{ + unsigned long timeout = 1000000; + while (timeout) + { + u32 sdhsts = bcm2835_sdhost_read(host, SDHSTS); + if (sdhsts & SDHSTS_DATA_FLAG) { + bcm2835_sdhost_write(host, SDHSTS_DATA_FLAG, SDHSTS); + break; + } + timeout--; + } + if (timeout == 0) { + pr_err("%s: Data %s timeout\n", + mmc_hostname(host->mmc), + (host->data->flags & MMC_DATA_READ) ? "read" : "write"); + bcm2835_sdhost_dumpregs(host); + host->data->error = -ETIMEDOUT; + return false; + } + return true; +} + +static void bcm2835_sdhost_read_block_pio(struct bcm2835_host *host) +{ + unsigned long flags; + size_t blksize, len; + u32 *buf; + + blksize = host->data->blksz; + + local_irq_save(flags); + + while (blksize) { + if (!sg_miter_next(&host->sg_miter)) + BUG(); + + len = min(host->sg_miter.length, blksize); + BUG_ON(len % 4); + + blksize -= len; + host->sg_miter.consumed = len; + + buf = (u32 *)host->sg_miter.addr; + + while (len) { + if (!data_transfer_wait(host)) + break; + + *(buf++) = bcm2835_sdhost_read(host, SDDATA); + len -= 4; + } + + if (host->data->error) + break; + } + + sg_miter_stop(&host->sg_miter); + + local_irq_restore(flags); +} + +static void bcm2835_sdhost_write_block_pio(struct bcm2835_host *host) +{ + unsigned long flags; + size_t blksize, len; + u32 *buf; + + blksize = host->data->blksz; + + local_irq_save(flags); + + while (blksize) { + if (!sg_miter_next(&host->sg_miter)) + BUG(); + + len = min(host->sg_miter.length, blksize); + BUG_ON(len % 4); + + blksize -= len; + host->sg_miter.consumed = len; + + buf = host->sg_miter.addr; + + while (len) { + if (!data_transfer_wait(host)) + break; + + bcm2835_sdhost_write(host, *(buf++), SDDATA); + len -= 4; + } + + if (host->data->error) + break; + } + + sg_miter_stop(&host->sg_miter); + + local_irq_restore(flags); +} + + +static void bcm2835_sdhost_transfer_pio(struct bcm2835_host *host) +{ + u32 sdhsts; + bool is_read; + BUG_ON(!host->data); + + is_read = (host->data->flags & MMC_DATA_READ) != 0; + if (is_read) + bcm2835_sdhost_read_block_pio(host); + else + bcm2835_sdhost_write_block_pio(host); + + sdhsts = bcm2835_sdhost_read(host, SDHSTS); + if (sdhsts & (SDHSTS_CRC16_ERROR | + SDHSTS_CRC7_ERROR | + SDHSTS_FIFO_ERROR)) { + pr_err("%s: %s transfer error - HSTS %x\n", + mmc_hostname(host->mmc), + is_read ? "read" : "write", + sdhsts); + host->data->error = -EILSEQ; + } else if ((sdhsts & (SDHSTS_CMD_TIME_OUT | + SDHSTS_REW_TIME_OUT))) { + pr_err("%s: %s timeout error - HSTS %x\n", + mmc_hostname(host->mmc), + is_read ? "read" : "write", + sdhsts); + host->data->error = -ETIMEDOUT; + } else if (!is_read && !host->data->error) { + /* Start a timer in case a transfer error occurs because + there is no error interrupt */ + mod_timer(&host->pio_timer, jiffies + host->pio_timeout); + } +} + + +static void bcm2835_sdhost_transfer_dma(struct bcm2835_host *host) +{ + u32 len, dir_data, dir_slave; + struct dma_async_tx_descriptor *desc = NULL; + struct dma_chan *dma_chan; + + pr_debug("bcm2835_sdhost_transfer_dma()\n"); + + WARN_ON(!host->data); + + if (!host->data) + return; + + if (host->data->flags & MMC_DATA_READ) { + dma_chan = host->dma_chan_rx; + dir_data = DMA_FROM_DEVICE; + dir_slave = DMA_DEV_TO_MEM; + } else { + dma_chan = host->dma_chan_tx; + dir_data = DMA_TO_DEVICE; + dir_slave = DMA_MEM_TO_DEV; + } + + BUG_ON(!dma_chan->device); + BUG_ON(!dma_chan->device->dev); + BUG_ON(!host->data->sg); + + len = dma_map_sg(dma_chan->device->dev, host->data->sg, + host->data->sg_len, dir_data); + if (len > 0) { + desc = dmaengine_prep_slave_sg(dma_chan, host->data->sg, + len, dir_slave, + DMA_PREP_INTERRUPT | DMA_CTRL_ACK); + } else { + dev_err(mmc_dev(host->mmc), "dma_map_sg returned zero length\n"); + } + if (desc) { + desc->callback = bcm2835_sdhost_dma_complete; + desc->callback_param = host; + dmaengine_submit(desc); + dma_async_issue_pending(dma_chan); + } + +} + + +static void bcm2835_sdhost_set_transfer_irqs(struct bcm2835_host *host) +{ + u32 all_irqs = SDHCFG_DATA_IRPT_EN | SDHCFG_BLOCK_IRPT_EN | + SDHCFG_BUSY_IRPT_EN; + if (host->use_dma) + host->hcfg = (host->hcfg & ~all_irqs) | + SDHCFG_BUSY_IRPT_EN; + else + host->hcfg = (host->hcfg & ~all_irqs) | + SDHCFG_DATA_IRPT_EN | + SDHCFG_BUSY_IRPT_EN; + + bcm2835_sdhost_write(host, host->hcfg, SDHCFG); +} + + +static void bcm2835_sdhost_prepare_data(struct bcm2835_host *host, struct mmc_command *cmd) +{ + struct mmc_data *data = cmd->data; + + WARN_ON(host->data); + + if (!data) + return; + + /* Sanity checks */ + BUG_ON(data->blksz * data->blocks > 524288); + BUG_ON(data->blksz > host->mmc->max_blk_size); + BUG_ON(data->blocks > 65535); + + host->data = data; + host->data_complete = 0; + host->flush_fifo = 0; + host->data->bytes_xfered = 0; + + host->use_dma = host->have_dma && (data->blocks > host->pio_limit); + if (!host->use_dma) { + int flags; + + flags = SG_MITER_ATOMIC; + if (data->flags & MMC_DATA_READ) + flags |= SG_MITER_TO_SG; + else + flags |= SG_MITER_FROM_SG; + sg_miter_start(&host->sg_miter, data->sg, data->sg_len, flags); + host->blocks = data->blocks; + } + + bcm2835_sdhost_set_transfer_irqs(host); + + bcm2835_sdhost_write(host, data->blksz, SDHBCT); + bcm2835_sdhost_write(host, host->use_dma ? data->blocks : 0, SDHBLC); + + BUG_ON(!host->data); +} + + +void bcm2835_sdhost_send_command(struct bcm2835_host *host, struct mmc_command *cmd) +{ + u32 sdcmd, sdhsts; + unsigned long timeout; + int delay; + + WARN_ON(host->cmd); + + if (cmd->data) + pr_debug("%s: send_command %d 0x%x " + "(flags 0x%x) - %s %d*%d\n", + mmc_hostname(host->mmc), + cmd->opcode, cmd->arg, cmd->flags, + (cmd->data->flags & MMC_DATA_READ) ? + "read" : "write", cmd->data->blocks, + cmd->data->blksz); + else + pr_debug("%s: send_command %d 0x%x (flags 0x%x)\n", + mmc_hostname(host->mmc), + cmd->opcode, cmd->arg, cmd->flags); + + /* Wait max 100 ms */ + timeout = 10000; + + while (bcm2835_sdhost_read(host, SDCMD) & SDCMD_NEW_FLAG) { + if (timeout == 0) { + pr_err("%s: previous command never completed.\n", + mmc_hostname(host->mmc)); + bcm2835_sdhost_dumpregs(host); + cmd->error = -EIO; + tasklet_schedule(&host->finish_tasklet); + return; + } + timeout--; + udelay(10); + } + + delay = (10000 - timeout)/100; + if (delay > host->max_delay) { + host->max_delay = delay; + pr_warning("%s: controller hung for %d ms\n", + mmc_hostname(host->mmc), + host->max_delay); + } + + timeout = jiffies; + if (!cmd->data && cmd->busy_timeout > 9000) + timeout += DIV_ROUND_UP(cmd->busy_timeout, 1000) * HZ + HZ; + else + timeout += 10 * HZ; + mod_timer(&host->timer, timeout); + + host->cmd = cmd; + + /* Clear any error flags */ + sdhsts = bcm2835_sdhost_read(host, SDHSTS); + if (sdhsts & SDHSTS_ERROR_MASK) + bcm2835_sdhost_write(host, sdhsts, SDHSTS); + + bcm2835_sdhost_prepare_data(host, cmd); + + bcm2835_sdhost_write(host, cmd->arg, SDARG); + + if ((cmd->flags & MMC_RSP_136) && (cmd->flags & MMC_RSP_BUSY)) { + pr_err("%s: unsupported response type!\n", + mmc_hostname(host->mmc)); + cmd->error = -EINVAL; + tasklet_schedule(&host->finish_tasklet); + return; + } + + sdcmd = cmd->opcode & SDCMD_CMD_MASK; + + if (!(cmd->flags & MMC_RSP_PRESENT)) + sdcmd |= SDCMD_NO_RESPONSE; + else { + if (cmd->flags & MMC_RSP_136) + sdcmd |= SDCMD_LONG_RESPONSE; + if (cmd->flags & MMC_RSP_BUSY) { + sdcmd |= SDCMD_BUSYWAIT; + host->use_busy = 1; + } + } + + if (cmd->data) { + if (host->delay_after_stop) { + struct timeval now; + int time_since_stop; + do_gettimeofday(&now); + time_since_stop = (now.tv_sec - host->stop_time.tv_sec); + if (time_since_stop < 2) { + /* Possibly less than one second */ + time_since_stop = time_since_stop * 1000000 + + (now.tv_usec - host->stop_time.tv_usec); + if (time_since_stop < host->delay_after_stop) + udelay(host->delay_after_stop - + time_since_stop); + } + } + + if (cmd->data->flags & MMC_DATA_WRITE) + sdcmd |= SDCMD_WRITE_CMD; + if (cmd->data->flags & MMC_DATA_READ) + sdcmd |= SDCMD_READ_CMD; + } + + bcm2835_sdhost_write(host, sdcmd | SDCMD_NEW_FLAG, SDCMD); +} + + +static void bcm2835_sdhost_finish_command(struct bcm2835_host *host); +static void bcm2835_sdhost_transfer_complete(struct bcm2835_host *host); + +static void bcm2835_sdhost_finish_data(struct bcm2835_host *host) +{ + struct mmc_data *data; + + data = host->data; + BUG_ON(!data); + + pr_debug("finish_data(error %d, stop %d, sbc %d)\n", + data->error, data->stop ? 1 : 0, + host->mrq->sbc ? 1 : 0); + + host->hcfg &= ~(SDHCFG_DATA_IRPT_EN | SDHCFG_BLOCK_IRPT_EN); + bcm2835_sdhost_write(host, host->hcfg, SDHCFG); + + if (data->error) { + data->bytes_xfered = 0; + } else + data->bytes_xfered = data->blksz * data->blocks; + + host->data_complete = 1; + + if (host->cmd) { + /* + * Data managed to finish before the + * command completed. Make sure we do + * things in the proper order. + */ + pr_debug("Finished early - HSTS %x\n", + bcm2835_sdhost_read(host, SDHSTS)); + } + else + bcm2835_sdhost_transfer_complete(host); +} + + +static void bcm2835_sdhost_transfer_complete(struct bcm2835_host *host) +{ + struct mmc_data *data; + + BUG_ON(host->cmd); + BUG_ON(!host->data); + BUG_ON(!host->data_complete); + + data = host->data; + host->data = NULL; + + pr_debug("transfer_complete(error %d, stop %d)\n", + data->error, data->stop ? 1 : 0); + + /* + * Need to send CMD12 if - + * a) open-ended multiblock transfer (no CMD23) + * b) error in multiblock transfer + */ + if (data->stop && + (data->error || + !host->mrq->sbc)) { + host->flush_fifo = 1; + bcm2835_sdhost_send_command(host, data->stop); + if (host->delay_after_stop) + do_gettimeofday(&host->stop_time); + if (!host->use_busy) + bcm2835_sdhost_finish_command(host); + } else { + tasklet_schedule(&host->finish_tasklet); + } +} + +static void bcm2835_sdhost_finish_command(struct bcm2835_host *host) +{ + u32 sdcmd; + unsigned long timeout; +#ifdef DEBUG + struct timeval before, after; + int timediff = 0; +#endif + + pr_debug("finish_command(%x)\n", bcm2835_sdhost_read(host, SDCMD)); + + BUG_ON(!host->cmd || !host->mrq); + +#ifdef DEBUG + do_gettimeofday(&before); +#endif + /* Wait max 100 ms */ + timeout = 10000; + for (sdcmd = bcm2835_sdhost_read(host, SDCMD); + (sdcmd & SDCMD_NEW_FLAG) && timeout; + timeout--) { + if (host->flush_fifo) { + while (bcm2835_sdhost_read(host, SDHSTS) & + SDHSTS_DATA_FLAG) + (void)bcm2835_sdhost_read(host, SDDATA); + } + udelay(10); + sdcmd = bcm2835_sdhost_read(host, SDCMD); + } +#ifdef DEBUG + do_gettimeofday(&after); + timediff = (after.tv_sec - before.tv_sec)*1000000 + + (after.tv_usec - before.tv_usec); + + pr_debug(" finish_command - waited %dus\n", timediff); +#endif + + if (timeout == 0) { + pr_err("%s: command never completed.\n", + mmc_hostname(host->mmc)); + bcm2835_sdhost_dumpregs(host); + host->cmd->error = -EIO; + tasklet_schedule(&host->finish_tasklet); + return; + } + + if (host->flush_fifo) { + for (timeout = 100; + (bcm2835_sdhost_read(host, SDHSTS) & SDHSTS_DATA_FLAG) && timeout; + timeout--) { + (void)bcm2835_sdhost_read(host, SDDATA); + } + host->flush_fifo = 0; + if (timeout == 0) { + pr_err("%s: FIFO never drained.\n", + mmc_hostname(host->mmc)); + bcm2835_sdhost_dumpregs(host); + host->cmd->error = -EIO; + tasklet_schedule(&host->finish_tasklet); + return; + } + } + + /* Check for errors */ + if (sdcmd & SDCMD_FAIL_FLAG) + { + u32 sdhsts = bcm2835_sdhost_read(host, SDHSTS); + + if (host->debug) + pr_info("%s: error detected - CMD %x, HSTS %03x, EDM %x\n", + mmc_hostname(host->mmc), sdcmd, sdhsts, + bcm2835_sdhost_read(host, SDEDM)); + + if ((sdhsts & SDHSTS_CRC7_ERROR) && + (host->cmd->opcode == 1)) { + if (host->debug) + pr_info("%s: ignoring CRC7 error for CMD1\n", + mmc_hostname(host->mmc)); + } else { + if (sdhsts & SDHSTS_CMD_TIME_OUT) { + switch (host->cmd->opcode) { + case 5: case 52: case 53: + /* Don't warn about SDIO commands */ + break; + default: + pr_err("%s: command timeout\n", + mmc_hostname(host->mmc)); + break; + } + host->cmd->error = -ETIMEDOUT; + } else { + pr_err("%s: unexpected command error\n", + mmc_hostname(host->mmc)); + bcm2835_sdhost_dumpregs(host); + host->cmd->error = -EIO; + } + tasklet_schedule(&host->finish_tasklet); + return; + } + } + + if (host->cmd->flags & MMC_RSP_PRESENT) { + if (host->cmd->flags & MMC_RSP_136) { + int i; + for (i = 0; i < 4; i++) + host->cmd->resp[3 - i] = bcm2835_sdhost_read(host, SDRSP0 + i*4); + pr_debug("%s: finish_command %08x %08x %08x %08x\n", + mmc_hostname(host->mmc), + host->cmd->resp[0], host->cmd->resp[1], host->cmd->resp[2], host->cmd->resp[3]); + } else { + host->cmd->resp[0] = bcm2835_sdhost_read(host, SDRSP0); + pr_debug("%s: finish_command %08x\n", + mmc_hostname(host->mmc), + host->cmd->resp[0]); + } + } + + host->cmd->error = 0; + + if (host->cmd == host->mrq->sbc) { + /* Finished CMD23, now send actual command. */ + host->cmd = NULL; + bcm2835_sdhost_send_command(host, host->mrq->cmd); + + if (host->cmd->data && host->use_dma) + /* DMA transfer starts now, PIO starts after irq */ + bcm2835_sdhost_transfer_dma(host); + + if (!host->use_busy) + bcm2835_sdhost_finish_command(host); + } else if (host->cmd == host->mrq->stop) + /* Finished CMD12 */ + tasklet_schedule(&host->finish_tasklet); + else { + /* Processed actual command. */ + host->cmd = NULL; + if (!host->data) + tasklet_schedule(&host->finish_tasklet); + else if (host->data_complete) + bcm2835_sdhost_transfer_complete(host); + } +} + +static void bcm2835_sdhost_timeout(unsigned long data) +{ + struct bcm2835_host *host; + unsigned long flags; + + host = (struct bcm2835_host *)data; + + spin_lock_irqsave(&host->lock, flags); + + if (host->mrq) { + pr_err("%s: timeout waiting for hardware interrupt.\n", + mmc_hostname(host->mmc)); + bcm2835_sdhost_dumpregs(host); + + if (host->data) { + host->data->error = -ETIMEDOUT; + bcm2835_sdhost_finish_data(host); + } else { + if (host->cmd) + host->cmd->error = -ETIMEDOUT; + else + host->mrq->cmd->error = -ETIMEDOUT; + + pr_debug("timeout_timer tasklet_schedule\n"); + tasklet_schedule(&host->finish_tasklet); + } + } + + mmiowb(); + spin_unlock_irqrestore(&host->lock, flags); +} + +static void bcm2835_sdhost_pio_timeout(unsigned long data) +{ + struct bcm2835_host *host; + unsigned long flags; + + host = (struct bcm2835_host *)data; + + spin_lock_irqsave(&host->lock, flags); + + if (host->data) { + u32 sdhsts = bcm2835_sdhost_read(host, SDHSTS); + + if (sdhsts & SDHSTS_REW_TIME_OUT) { + pr_err("%s: transfer timeout\n", + mmc_hostname(host->mmc)); + if (host->debug) + bcm2835_sdhost_dumpregs(host); + } else { + pr_err("%s: unexpected transfer timeout\n", + mmc_hostname(host->mmc)); + bcm2835_sdhost_dumpregs(host); + } + + bcm2835_sdhost_write(host, SDHSTS_TRANSFER_ERROR_MASK, + SDHSTS); + + host->data->error = -ETIMEDOUT; + + bcm2835_sdhost_finish_data(host); + } + + mmiowb(); + spin_unlock_irqrestore(&host->lock, flags); +} + +static void bcm2835_sdhost_enable_sdio_irq_nolock(struct bcm2835_host *host, int enable) +{ + if (enable) + host->hcfg |= SDHCFG_SDIO_IRPT_EN; + else + host->hcfg &= ~SDHCFG_SDIO_IRPT_EN; + bcm2835_sdhost_write(host, host->hcfg, SDHCFG); + mmiowb(); +} + +static void bcm2835_sdhost_enable_sdio_irq(struct mmc_host *mmc, int enable) +{ + struct bcm2835_host *host = mmc_priv(mmc); + unsigned long flags; + + pr_debug("%s: enable_sdio_irq(%d)\n", mmc_hostname(mmc), enable); + spin_lock_irqsave(&host->lock, flags); + bcm2835_sdhost_enable_sdio_irq_nolock(host, enable); + spin_unlock_irqrestore(&host->lock, flags); +} + +static u32 bcm2835_sdhost_busy_irq(struct bcm2835_host *host, u32 intmask) +{ + const u32 handled = (SDHSTS_REW_TIME_OUT | SDHSTS_CMD_TIME_OUT | + SDHSTS_CRC16_ERROR | SDHSTS_CRC7_ERROR | + SDHSTS_FIFO_ERROR); + + if (!host->cmd) { + pr_err("%s: got command busy interrupt 0x%08x even " + "though no command operation was in progress.\n", + mmc_hostname(host->mmc), (unsigned)intmask); + bcm2835_sdhost_dumpregs(host); + return 0; + } + + if (!host->use_busy) { + pr_err("%s: got command busy interrupt 0x%08x even " + "though not expecting one.\n", + mmc_hostname(host->mmc), (unsigned)intmask); + bcm2835_sdhost_dumpregs(host); + return 0; + } + host->use_busy = 0; + + if (intmask & SDHSTS_ERROR_MASK) + { + pr_err("sdhost_busy_irq: intmask %x, data %p\n", intmask, host->mrq->data); + if (intmask & SDHSTS_CRC7_ERROR) + host->cmd->error = -EILSEQ; + else if (intmask & (SDHSTS_CRC16_ERROR | + SDHSTS_FIFO_ERROR)) { + if (host->mrq->data) + host->mrq->data->error = -EILSEQ; + else + host->cmd->error = -EILSEQ; + } else if (intmask & SDHSTS_REW_TIME_OUT) { + if (host->mrq->data) + host->mrq->data->error = -ETIMEDOUT; + else + host->cmd->error = -ETIMEDOUT; + } else if (intmask & SDHSTS_CMD_TIME_OUT) + host->cmd->error = -ETIMEDOUT; + + bcm2835_sdhost_dumpregs(host); + tasklet_schedule(&host->finish_tasklet); + } + else + bcm2835_sdhost_finish_command(host); + + return handled; +} + +static u32 bcm2835_sdhost_data_irq(struct bcm2835_host *host, u32 intmask) +{ + const u32 handled = (SDHSTS_REW_TIME_OUT | + SDHSTS_CRC16_ERROR | + SDHSTS_FIFO_ERROR); + + /* There are no dedicated data/space available interrupt + status bits, so it is necessary to use the single shared + data/space available FIFO status bits. It is therefore not + an error to get here when there is no data transfer in + progress. */ + if (!host->data) + return 0; + + if (intmask & (SDHSTS_CRC16_ERROR | + SDHSTS_FIFO_ERROR | + SDHSTS_REW_TIME_OUT)) { + if (intmask & (SDHSTS_CRC16_ERROR | + SDHSTS_FIFO_ERROR)) + host->data->error = -EILSEQ; + else + host->data->error = -ETIMEDOUT; + + bcm2835_sdhost_dumpregs(host); + tasklet_schedule(&host->finish_tasklet); + return handled; + } + + /* Use the block interrupt for writes after the first block */ + if (host->data->flags & MMC_DATA_WRITE) { + host->hcfg &= ~(SDHCFG_DATA_IRPT_EN); + host->hcfg |= SDHCFG_BLOCK_IRPT_EN; + bcm2835_sdhost_write(host, host->hcfg, SDHCFG); + if (host->data->error) + bcm2835_sdhost_finish_data(host); + else + bcm2835_sdhost_transfer_pio(host); + } else { + if (!host->data->error) { + bcm2835_sdhost_transfer_pio(host); + host->blocks--; + } + if ((host->blocks == 0) || host->data->error) + bcm2835_sdhost_finish_data(host); + } + + return handled; +} + +static u32 bcm2835_sdhost_block_irq(struct bcm2835_host *host, u32 intmask) +{ + struct dma_chan *dma_chan; + u32 dir_data; + const u32 handled = (SDHSTS_REW_TIME_OUT | + SDHSTS_CRC16_ERROR | + SDHSTS_FIFO_ERROR); + + if (!host->data) { + pr_err("%s: got block interrupt 0x%08x even " + "though no data operation was in progress.\n", + mmc_hostname(host->mmc), (unsigned)intmask); + bcm2835_sdhost_dumpregs(host); + return handled; + } + + if (intmask & (SDHSTS_CRC16_ERROR | + SDHSTS_FIFO_ERROR | + SDHSTS_REW_TIME_OUT)) { + if (intmask & (SDHSTS_CRC16_ERROR | + SDHSTS_FIFO_ERROR)) + host->data->error = -EILSEQ; + else + host->data->error = -ETIMEDOUT; + + if (host->debug) + bcm2835_sdhost_dumpregs(host); + tasklet_schedule(&host->finish_tasklet); + return handled; + } + + if (!host->use_dma) { + BUG_ON(!host->blocks); + host->blocks--; + if ((host->blocks == 0) || host->data->error) { + /* Cancel the timer */ + del_timer(&host->pio_timer); + + bcm2835_sdhost_finish_data(host); + } else { + bcm2835_sdhost_transfer_pio(host); + + /* Reset the timer */ + mod_timer(&host->pio_timer, + jiffies + host->pio_timeout); + } + } else if (host->data->flags & MMC_DATA_WRITE) { + dma_chan = host->dma_chan_tx; + dir_data = DMA_TO_DEVICE; + dma_unmap_sg(dma_chan->device->dev, + host->data->sg, host->data->sg_len, + dir_data); + + bcm2835_sdhost_finish_data(host); + } + + return handled; +} + + +static irqreturn_t bcm2835_sdhost_irq(int irq, void *dev_id) +{ + irqreturn_t result = IRQ_NONE; + struct bcm2835_host *host = dev_id; + u32 unexpected = 0, early = 0; + int loops = 0; + + spin_lock(&host->lock); + + for (loops = 0; loops < 1; loops++) { + u32 intmask, handled; + + intmask = bcm2835_sdhost_read(host, SDHSTS); + handled = intmask & (SDHSTS_BUSY_IRPT | + SDHSTS_BLOCK_IRPT | + SDHSTS_SDIO_IRPT | + SDHSTS_DATA_FLAG); + if ((handled == SDHSTS_DATA_FLAG) && + (loops == 0) && !host->data) { + pr_err("%s: sdhost_irq data interrupt 0x%08x even " + "though no data operation was in progress.\n", + mmc_hostname(host->mmc), + (unsigned)intmask); + + bcm2835_sdhost_dumpregs(host); + } + + if (!handled) + break; + + if (loops) + early |= handled; + + result = IRQ_HANDLED; + + /* Clear all interrupts and notifications */ + bcm2835_sdhost_write(host, intmask, SDHSTS); + + if (intmask & SDHSTS_BUSY_IRPT) + handled |= bcm2835_sdhost_busy_irq(host, intmask); + + /* There is no true data interrupt status bit, so it is + necessary to qualify the data flag with the interrupt + enable bit */ + if ((intmask & SDHSTS_DATA_FLAG) && + (host->hcfg & SDHCFG_DATA_IRPT_EN)) + handled |= bcm2835_sdhost_data_irq(host, intmask); + + if (intmask & SDHSTS_BLOCK_IRPT) + handled |= bcm2835_sdhost_block_irq(host, intmask); + + if (intmask & SDHSTS_SDIO_IRPT) { + bcm2835_sdhost_enable_sdio_irq_nolock(host, false); + host->thread_isr |= SDHSTS_SDIO_IRPT; + result = IRQ_WAKE_THREAD; + } + + unexpected |= (intmask & ~handled); + } + + mmiowb(); + + spin_unlock(&host->lock); + + if (early) + pr_debug("%s: early %x (loops %d)\n", + mmc_hostname(host->mmc), early, loops); + + if (unexpected) { + pr_err("%s: unexpected interrupt 0x%08x.\n", + mmc_hostname(host->mmc), unexpected); + bcm2835_sdhost_dumpregs(host); + } + + return result; +} + +static irqreturn_t bcm2835_sdhost_thread_irq(int irq, void *dev_id) +{ + struct bcm2835_host *host = dev_id; + unsigned long flags; + u32 isr; + + spin_lock_irqsave(&host->lock, flags); + isr = host->thread_isr; + host->thread_isr = 0; + spin_unlock_irqrestore(&host->lock, flags); + + if (isr & SDHSTS_SDIO_IRPT) { + sdio_run_irqs(host->mmc); + +/* Is this necessary? Why re-enable an interrupt which is enabled? + spin_lock_irqsave(&host->lock, flags); + if (host->flags & SDHSTS_SDIO_IRPT_ENABLED) + bcm2835_sdhost_enable_sdio_irq_nolock(host, true); + spin_unlock_irqrestore(&host->lock, flags); +*/ + } + + return isr ? IRQ_HANDLED : IRQ_NONE; +} + + + +void bcm2835_sdhost_set_clock(struct bcm2835_host *host, unsigned int clock) +{ + int div = 0; /* Initialized for compiler warning */ + unsigned int input_clock = clock; + + if (host->debug) + pr_info("%s: set_clock(%d)\n", mmc_hostname(host->mmc), clock); + + if ((host->overclock_50 > 50) && + (clock == 50*MHZ)) { + clock = host->overclock_50 * MHZ + (MHZ - 1); + } + + /* The SDCDIV register has 11 bits, and holds (div - 2). + But in data mode the max is 50MHz wihout a minimum, and only the + bottom 3 bits are used. Since the switch over is automatic (unless + we have marked the card as slow...), chosen values have to make + sense in both modes. + Ident mode must be 100-400KHz, so can range check the requested + clock. CMD15 must be used to return to data mode, so this can be + monitored. + + clock 250MHz -> 0->125MHz, 1->83.3MHz, 2->62.5MHz, 3->50.0MHz + 4->41.7MHz, 5->35.7MHz, 6->31.3MHz, 7->27.8MHz + + 623->400KHz/27.8MHz + reset value (507)->491159/50MHz + + BUT, the 3-bit clock divisor in data mode is too small if the + core clock is higher than 250MHz, so instead use the SLOW_CARD + configuration bit to force the use of the ident clock divisor + at all times. + */ + + host->mmc->actual_clock = 0; + + if (clock < 100000) { + /* Can't stop the clock, but make it as slow as possible + * to show willing + */ + host->cdiv = SDCDIV_MAX_CDIV; + bcm2835_sdhost_write(host, host->cdiv, SDCDIV); + return; + } + + div = host->max_clk / clock; + if (div < 2) + div = 2; + if ((host->max_clk / div) > clock) + div++; + div -= 2; + + if (div > SDCDIV_MAX_CDIV) + div = SDCDIV_MAX_CDIV; + + clock = host->max_clk / (div + 2); + host->mmc->actual_clock = clock; + + if (clock > input_clock) { + /* Save the closest value, to make it easier + to reduce in the event of error */ + host->overclock_50 = (clock/MHZ); + + if (clock != host->overclock) { + pr_warn("%s: overclocking to %dHz\n", + mmc_hostname(host->mmc), clock); + host->overclock = clock; + } + } + else if (host->overclock) + { + host->overclock = 0; + if (clock == 50 * MHZ) + pr_warn("%s: cancelling overclock\n", + mmc_hostname(host->mmc)); + } + + host->cdiv = div; + bcm2835_sdhost_write(host, host->cdiv, SDCDIV); + + /* Set the timeout to 500ms */ + bcm2835_sdhost_write(host, host->mmc->actual_clock/2, SDTOUT); + + if (host->debug) + pr_info("%s: clock=%d -> max_clk=%d, cdiv=%x (actual clock %d)\n", + mmc_hostname(host->mmc), input_clock, + host->max_clk, host->cdiv, host->mmc->actual_clock); +} + +static void bcm2835_sdhost_request(struct mmc_host *mmc, struct mmc_request *mrq) +{ + struct bcm2835_host *host; + unsigned long flags; + + host = mmc_priv(mmc); + + if (host->debug) { + struct mmc_command *cmd = mrq->cmd; + BUG_ON(!cmd); + if (cmd->data) + pr_info("%s: cmd %d 0x%x (flags 0x%x) - %s %d*%d\n", + mmc_hostname(mmc), + cmd->opcode, cmd->arg, cmd->flags, + (cmd->data->flags & MMC_DATA_READ) ? + "read" : "write", cmd->data->blocks, + cmd->data->blksz); + else + pr_info("%s: cmd %d 0x%x (flags 0x%x)\n", + mmc_hostname(mmc), + cmd->opcode, cmd->arg, cmd->flags); + } + + /* Reset the error statuses in case this is a retry */ + if (mrq->cmd) + mrq->cmd->error = 0; + if (mrq->data) + mrq->data->error = 0; + if (mrq->stop) + mrq->stop->error = 0; + + if (mrq->data && !is_power_of_2(mrq->data->blksz)) { + pr_err("%s: unsupported block size (%d bytes)\n", + mmc_hostname(mmc), mrq->data->blksz); + mrq->cmd->error = -EINVAL; + mmc_request_done(mmc, mrq); + return; + } + + spin_lock_irqsave(&host->lock, flags); + + WARN_ON(host->mrq != NULL); + + host->mrq = mrq; + + if (mrq->sbc) + bcm2835_sdhost_send_command(host, mrq->sbc); + else + bcm2835_sdhost_send_command(host, mrq->cmd); + + mmiowb(); + spin_unlock_irqrestore(&host->lock, flags); + + if (!mrq->sbc && mrq->cmd->data && host->use_dma) + /* DMA transfer starts now, PIO starts after irq */ + bcm2835_sdhost_transfer_dma(host); + + if (!host->use_busy) + bcm2835_sdhost_finish_command(host); +} + + +static void bcm2835_sdhost_set_ios(struct mmc_host *mmc, struct mmc_ios *ios) +{ + + struct bcm2835_host *host = mmc_priv(mmc); + unsigned long flags; + + if (host->debug) + pr_info("%s: ios clock %d, pwr %d, bus_width %d, " + "timing %d, vdd %d, drv_type %d\n", + mmc_hostname(mmc), + ios->clock, ios->power_mode, ios->bus_width, + ios->timing, ios->signal_voltage, ios->drv_type); + + spin_lock_irqsave(&host->lock, flags); + + if (!ios->clock || ios->clock != host->clock) { + bcm2835_sdhost_set_clock(host, ios->clock); + host->clock = ios->clock; + } + + /* set bus width */ + host->hcfg &= ~SDHCFG_WIDE_EXT_BUS; + if (ios->bus_width == MMC_BUS_WIDTH_4) + host->hcfg |= SDHCFG_WIDE_EXT_BUS; + + host->hcfg |= SDHCFG_WIDE_INT_BUS; + + /* Disable clever clock switching, to cope with fast core clocks */ + host->hcfg |= SDHCFG_SLOW_CARD; + + bcm2835_sdhost_write(host, host->hcfg, SDHCFG); + + mmiowb(); + + spin_unlock_irqrestore(&host->lock, flags); +} + +static int bcm2835_sdhost_multi_io_quirk(struct mmc_card *card, + unsigned int direction, + u32 blk_pos, int blk_size) +{ + /* There is a bug in the host controller hardware that makes + reading the final sector of the card as part of a multiple read + problematic. Detect that case and shorten the read accordingly. + */ + /* csd.capacity is in weird units - convert to sectors */ + u32 card_sectors = (card->csd.capacity << (card->csd.read_blkbits - 9)); + + if ((direction == MMC_DATA_READ) && + ((blk_pos + blk_size) == card_sectors)) + blk_size--; + + return blk_size; +} + + +static struct mmc_host_ops bcm2835_sdhost_ops = { + .request = bcm2835_sdhost_request, + .set_ios = bcm2835_sdhost_set_ios, + .enable_sdio_irq = bcm2835_sdhost_enable_sdio_irq, + .hw_reset = bcm2835_sdhost_reset, + .multi_io_quirk = bcm2835_sdhost_multi_io_quirk, +}; + + +static void bcm2835_sdhost_tasklet_finish(unsigned long param) +{ + struct bcm2835_host *host; + unsigned long flags; + struct mmc_request *mrq; + + host = (struct bcm2835_host *)param; + + spin_lock_irqsave(&host->lock, flags); + + /* + * If this tasklet gets rescheduled while running, it will + * be run again afterwards but without any active request. + */ + if (!host->mrq) { + spin_unlock_irqrestore(&host->lock, flags); + return; + } + + del_timer(&host->timer); + + mrq = host->mrq; + + /* Drop the overclock after any data corruption, or after any + error overclocked */ + if (host->overclock) { + if ((mrq->cmd && mrq->cmd->error) || + (mrq->data && mrq->data->error) || + (mrq->stop && mrq->stop->error)) { + host->overclock_50--; + pr_warn("%s: reducing overclock due to errors\n", + mmc_hostname(host->mmc)); + bcm2835_sdhost_set_clock(host,50*MHZ); + mrq->cmd->error = -EILSEQ; + mrq->cmd->retries = 1; + } + } + + host->mrq = NULL; + host->cmd = NULL; + host->data = NULL; + + mmiowb(); + + spin_unlock_irqrestore(&host->lock, flags); + mmc_request_done(host->mmc, mrq); +} + + + +int bcm2835_sdhost_add_host(struct bcm2835_host *host) +{ + struct mmc_host *mmc; + struct dma_slave_config cfg; + char pio_limit_string[20]; + int ret; + + mmc = host->mmc; + + bcm2835_sdhost_reset_internal(host); + + mmc->f_max = host->max_clk; + mmc->f_min = host->max_clk / SDCDIV_MAX_CDIV; + + mmc->max_busy_timeout = (~(unsigned int)0)/(mmc->f_max/1000); + + pr_debug("f_max %d, f_min %d, max_busy_timeout %d\n", + mmc->f_max, mmc->f_min, mmc->max_busy_timeout); + + /* host controller capabilities */ + mmc->caps |= /* MMC_CAP_SDIO_IRQ |*/ MMC_CAP_4_BIT_DATA | + MMC_CAP_SD_HIGHSPEED | MMC_CAP_MMC_HIGHSPEED | + MMC_CAP_NEEDS_POLL | MMC_CAP_HW_RESET | MMC_CAP_ERASE | + (ALLOW_CMD23 * MMC_CAP_CMD23); + + spin_lock_init(&host->lock); + + if (host->allow_dma) { + if (IS_ERR_OR_NULL(host->dma_chan_tx) || + IS_ERR_OR_NULL(host->dma_chan_rx)) { + pr_err("%s: unable to initialise DMA channels. " + "Falling back to PIO\n", + mmc_hostname(mmc)); + host->have_dma = false; + } else { + host->have_dma = true; + + cfg.src_addr_width = DMA_SLAVE_BUSWIDTH_4_BYTES; + cfg.dst_addr_width = DMA_SLAVE_BUSWIDTH_4_BYTES; + cfg.slave_id = 13; /* DREQ channel */ + + cfg.direction = DMA_MEM_TO_DEV; + cfg.src_addr = 0; + cfg.dst_addr = host->phys_addr + SDDATA; + ret = dmaengine_slave_config(host->dma_chan_tx, &cfg); + + cfg.direction = DMA_DEV_TO_MEM; + cfg.src_addr = host->phys_addr + SDDATA; + cfg.dst_addr = 0; + ret = dmaengine_slave_config(host->dma_chan_rx, &cfg); + } + } else { + host->have_dma = false; + } + + mmc->max_segs = 128; + mmc->max_req_size = 524288; + mmc->max_seg_size = mmc->max_req_size; + mmc->max_blk_size = 512; + mmc->max_blk_count = 65535; + + /* report supported voltage ranges */ + mmc->ocr_avail = MMC_VDD_32_33 | MMC_VDD_33_34; + + tasklet_init(&host->finish_tasklet, + bcm2835_sdhost_tasklet_finish, (unsigned long)host); + + setup_timer(&host->timer, bcm2835_sdhost_timeout, + (unsigned long)host); + + setup_timer(&host->pio_timer, bcm2835_sdhost_pio_timeout, + (unsigned long)host); + + bcm2835_sdhost_init(host, 0); + ret = request_threaded_irq(host->irq, bcm2835_sdhost_irq, + bcm2835_sdhost_thread_irq, + IRQF_SHARED, mmc_hostname(mmc), host); + if (ret) { + pr_err("%s: failed to request IRQ %d: %d\n", + mmc_hostname(mmc), host->irq, ret); + goto untasklet; + } + + mmiowb(); + mmc_add_host(mmc); + + pio_limit_string[0] = '\0'; + if (host->have_dma && (host->pio_limit > 0)) + sprintf(pio_limit_string, " (>%d)", host->pio_limit); + pr_info("%s: %s loaded - DMA %s%s\n", + mmc_hostname(mmc), DRIVER_NAME, + host->have_dma ? "enabled" : "disabled", + pio_limit_string); + + return 0; + +untasklet: + tasklet_kill(&host->finish_tasklet); + + return ret; +} + +static int bcm2835_sdhost_probe(struct platform_device *pdev) +{ + struct device *dev = &pdev->dev; + struct device_node *node = dev->of_node; + struct clk *clk; + struct resource *iomem; + struct bcm2835_host *host; + struct mmc_host *mmc; + int ret; + + pr_debug("bcm2835_sdhost_probe\n"); + mmc = mmc_alloc_host(sizeof(*host), dev); + if (!mmc) + return -ENOMEM; + + mmc->ops = &bcm2835_sdhost_ops; + host = mmc_priv(mmc); + host->mmc = mmc; + host->pio_timeout = msecs_to_jiffies(500); + host->max_delay = 1; /* Warn if over 1ms */ + spin_lock_init(&host->lock); + + iomem = platform_get_resource(pdev, IORESOURCE_MEM, 0); + host->ioaddr = devm_ioremap_resource(dev, iomem); + if (IS_ERR(host->ioaddr)) { + ret = PTR_ERR(host->ioaddr); + goto err; + } + + host->phys_addr = iomem->start + BCM2835_VCMMU_SHIFT; + pr_debug(" - ioaddr %lx, iomem->start %lx, phys_addr %lx\n", + (unsigned long)host->ioaddr, + (unsigned long)iomem->start, + (unsigned long)host->phys_addr); + + host->allow_dma = ALLOW_DMA; + + if (node) { + /* Read any custom properties */ + of_property_read_u32(node, + "brcm,delay-after-stop", + &host->delay_after_stop); + of_property_read_u32(node, + "brcm,overclock-50", + &host->overclock_50); + of_property_read_u32(node, + "brcm,pio-limit", + &host->pio_limit); + host->allow_dma = ALLOW_DMA && + !of_property_read_bool(node, "brcm,force-pio"); + host->debug = of_property_read_bool(node, "brcm,debug"); + } + + if (host->allow_dma) { + if (node) { + host->dma_chan_tx = + dma_request_slave_channel(dev, "tx"); + host->dma_chan_rx = + dma_request_slave_channel(dev, "rx"); + } else { + dma_cap_mask_t mask; + + dma_cap_zero(mask); + /* we don't care about the channel, any would work */ + dma_cap_set(DMA_SLAVE, mask); + host->dma_chan_tx = + dma_request_channel(mask, NULL, NULL); + host->dma_chan_rx = + dma_request_channel(mask, NULL, NULL); + } + } + + clk = devm_clk_get(dev, NULL); + if (IS_ERR(clk)) { + dev_err(dev, "could not get clk\n"); + ret = PTR_ERR(clk); + goto err; + } + + host->max_clk = clk_get_rate(clk); + + host->irq = platform_get_irq(pdev, 0); + if (host->irq <= 0) { + dev_err(dev, "get IRQ failed\n"); + ret = -EINVAL; + goto err; + } + + pr_debug(" - max_clk %lx, irq %d\n", + (unsigned long)host->max_clk, + (int)host->irq); + + if (node) + mmc_of_parse(mmc); + else + mmc->caps |= MMC_CAP_4_BIT_DATA; + + ret = bcm2835_sdhost_add_host(host); + if (ret) + goto err; + + platform_set_drvdata(pdev, host); + + pr_debug("bcm2835_sdhost_probe -> OK\n"); + + return 0; + +err: + pr_debug("bcm2835_sdhost_probe -> err %d\n", ret); + mmc_free_host(mmc); + + return ret; +} + +static int bcm2835_sdhost_remove(struct platform_device *pdev) +{ + struct bcm2835_host *host = platform_get_drvdata(pdev); + + pr_debug("bcm2835_sdhost_remove\n"); + + mmc_remove_host(host->mmc); + + bcm2835_sdhost_set_power(host, false); + + free_irq(host->irq, host); + + del_timer_sync(&host->timer); + + tasklet_kill(&host->finish_tasklet); + + mmc_free_host(host->mmc); + platform_set_drvdata(pdev, NULL); + + pr_debug("bcm2835_sdhost_remove - OK\n"); + return 0; +} + + +static const struct of_device_id bcm2835_sdhost_match[] = { + { .compatible = "brcm,bcm2835-sdhost" }, + { } +}; +MODULE_DEVICE_TABLE(of, bcm2835_sdhost_match); + + + +static struct platform_driver bcm2835_sdhost_driver = { + .probe = bcm2835_sdhost_probe, + .remove = bcm2835_sdhost_remove, + .driver = { + .name = DRIVER_NAME, + .owner = THIS_MODULE, + .of_match_table = bcm2835_sdhost_match, + }, +}; +module_platform_driver(bcm2835_sdhost_driver); + +MODULE_ALIAS("platform:sdhost-bcm2835"); +MODULE_DESCRIPTION("BCM2835 SDHost driver"); +MODULE_LICENSE("GPL v2"); +MODULE_AUTHOR("Phil Elwell"); --- linux-raspi2-4.2.0.orig/drivers/mmc/host/dw_mmc.c +++ linux-raspi2-4.2.0/drivers/mmc/host/dw_mmc.c @@ -99,6 +99,9 @@ __le32 des3; /* buffer 2 physical address */ }; + +/* Each descriptor can transfer up to 4KB of data in chained mode */ +#define DW_MCI_DESC_DATA_LENGTH 0x1000 #endif /* CONFIG_MMC_DW_IDMAC */ static bool dw_mci_reset(struct dw_mci *host); @@ -462,66 +465,96 @@ static void dw_mci_translate_sglist(struct dw_mci *host, struct mmc_data *data, unsigned int sg_len) { + unsigned int desc_len; int i; if (host->dma_64bit_address == 1) { - struct idmac_desc_64addr *desc = host->sg_cpu; + struct idmac_desc_64addr *desc_first, *desc_last, *desc; + + desc_first = desc_last = desc = host->sg_cpu; - for (i = 0; i < sg_len; i++, desc++) { + for (i = 0; i < sg_len; i++) { unsigned int length = sg_dma_len(&data->sg[i]); u64 mem_addr = sg_dma_address(&data->sg[i]); - /* - * Set the OWN bit and disable interrupts for this - * descriptor - */ - desc->des0 = IDMAC_DES0_OWN | IDMAC_DES0_DIC | - IDMAC_DES0_CH; - /* Buffer length */ - IDMAC_64ADDR_SET_BUFFER1_SIZE(desc, length); - - /* Physical address to DMA to/from */ - desc->des4 = mem_addr & 0xffffffff; - desc->des5 = mem_addr >> 32; + for ( ; length ; desc++) { + desc_len = (length <= DW_MCI_DESC_DATA_LENGTH) ? + length : DW_MCI_DESC_DATA_LENGTH; + + length -= desc_len; + + /* + * Set the OWN bit and disable interrupts + * for this descriptor + */ + desc->des0 = IDMAC_DES0_OWN | IDMAC_DES0_DIC | + IDMAC_DES0_CH; + + /* Buffer length */ + IDMAC_64ADDR_SET_BUFFER1_SIZE(desc, desc_len); + + /* Physical address to DMA to/from */ + desc->des4 = mem_addr & 0xffffffff; + desc->des5 = mem_addr >> 32; + + /* Update physical address for the next desc */ + mem_addr += desc_len; + + /* Save pointer to the last descriptor */ + desc_last = desc; + } } /* Set first descriptor */ - desc = host->sg_cpu; - desc->des0 |= IDMAC_DES0_FD; + desc_first->des0 |= IDMAC_DES0_FD; /* Set last descriptor */ - desc = host->sg_cpu + (i - 1) * - sizeof(struct idmac_desc_64addr); - desc->des0 &= ~(IDMAC_DES0_CH | IDMAC_DES0_DIC); - desc->des0 |= IDMAC_DES0_LD; + desc_last->des0 &= ~(IDMAC_DES0_CH | IDMAC_DES0_DIC); + desc_last->des0 |= IDMAC_DES0_LD; } else { - struct idmac_desc *desc = host->sg_cpu; + struct idmac_desc *desc_first, *desc_last, *desc; + + desc_first = desc_last = desc = host->sg_cpu; - for (i = 0; i < sg_len; i++, desc++) { + for (i = 0; i < sg_len; i++) { unsigned int length = sg_dma_len(&data->sg[i]); u32 mem_addr = sg_dma_address(&data->sg[i]); - /* - * Set the OWN bit and disable interrupts for this - * descriptor - */ - desc->des0 = cpu_to_le32(IDMAC_DES0_OWN | - IDMAC_DES0_DIC | IDMAC_DES0_CH); - /* Buffer length */ - IDMAC_SET_BUFFER1_SIZE(desc, length); + for ( ; length ; desc++) { + desc_len = (length <= DW_MCI_DESC_DATA_LENGTH) ? + length : DW_MCI_DESC_DATA_LENGTH; + + length -= desc_len; + + /* + * Set the OWN bit and disable interrupts + * for this descriptor + */ + desc->des0 = cpu_to_le32(IDMAC_DES0_OWN | + IDMAC_DES0_DIC | + IDMAC_DES0_CH); + + /* Buffer length */ + IDMAC_SET_BUFFER1_SIZE(desc, desc_len); - /* Physical address to DMA to/from */ - desc->des2 = cpu_to_le32(mem_addr); + /* Physical address to DMA to/from */ + desc->des2 = cpu_to_le32(mem_addr); + + /* Update physical address for the next desc */ + mem_addr += desc_len; + + /* Save pointer to the last descriptor */ + desc_last = desc; + } } /* Set first descriptor */ - desc = host->sg_cpu; - desc->des0 |= cpu_to_le32(IDMAC_DES0_FD); + desc_first->des0 |= cpu_to_le32(IDMAC_DES0_FD); /* Set last descriptor */ - desc = host->sg_cpu + (i - 1) * sizeof(struct idmac_desc); - desc->des0 &= cpu_to_le32(~(IDMAC_DES0_CH | IDMAC_DES0_DIC)); - desc->des0 |= cpu_to_le32(IDMAC_DES0_LD); + desc_last->des0 &= cpu_to_le32(~(IDMAC_DES0_CH | + IDMAC_DES0_DIC)); + desc_last->des0 |= cpu_to_le32(IDMAC_DES0_LD); } wmb(); @@ -2394,7 +2427,7 @@ #ifdef CONFIG_MMC_DW_IDMAC mmc->max_segs = host->ring_size; mmc->max_blk_size = 65536; - mmc->max_seg_size = 0x1000; + mmc->max_seg_size = DW_MCI_DESC_DATA_LENGTH; mmc->max_req_size = mmc->max_seg_size * host->ring_size; mmc->max_blk_count = mmc->max_req_size / 512; #else --- linux-raspi2-4.2.0.orig/drivers/mmc/host/omap_hsmmc.c +++ linux-raspi2-4.2.0/drivers/mmc/host/omap_hsmmc.c @@ -1729,7 +1729,9 @@ } static int omap_hsmmc_multi_io_quirk(struct mmc_card *card, - unsigned int direction, int blk_size) + unsigned int direction, + u32 blk_pos, + int blk_size) { /* This controller can't do multiblock reads due to hw bugs */ if (direction == MMC_DATA_READ) --- linux-raspi2-4.2.0.orig/drivers/mmc/host/sdhci-of-esdhc.c +++ linux-raspi2-4.2.0/drivers/mmc/host/sdhci-of-esdhc.c @@ -208,6 +208,12 @@ if (clock == 0) return; + /* Workaround to start pre_div at 2 for VNN < VENDOR_V_23 */ + temp = esdhc_readw(host, SDHCI_HOST_VERSION); + temp = (temp & SDHCI_VENDOR_VER_MASK) >> SDHCI_VENDOR_VER_SHIFT; + if (temp < VENDOR_V_23) + pre_div = 2; + /* Workaround to reduce the clock frequency for p1010 esdhc */ if (of_find_compatible_node(NULL, NULL, "fsl,p1010-esdhc")) { if (clock > 20000000) --- linux-raspi2-4.2.0.orig/drivers/mmc/host/sdhci-pci.c +++ linux-raspi2-4.2.0/drivers/mmc/host/sdhci-pci.c @@ -618,6 +618,7 @@ static const struct sdhci_pci_fixes sdhci_o2 = { .probe = sdhci_pci_o2_probe, .quirks = SDHCI_QUIRK_NO_ENDATTR_IN_NOPDESC, + .quirks2 = SDHCI_QUIRK2_CLEAR_TRANSFERMODE_REG_BEFORE_CMD, .probe_slot = sdhci_pci_o2_probe_slot, .resume = sdhci_pci_o2_resume, }; --- linux-raspi2-4.2.0.orig/drivers/mmc/host/sdhci-pxav3.c +++ linux-raspi2-4.2.0/drivers/mmc/host/sdhci-pxav3.c @@ -135,6 +135,7 @@ struct sdhci_pxa *pxa = pltfm_host->priv; struct resource *res; + host->quirks &= ~SDHCI_QUIRK_CAP_CLOCK_BASE_BROKEN; host->quirks |= SDHCI_QUIRK_MISSING_CAPS; res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "conf-sdio3"); @@ -290,6 +291,9 @@ uhs == MMC_TIMING_UHS_DDR50) { reg_val &= ~SDIO3_CONF_CLK_INV; reg_val |= SDIO3_CONF_SD_FB_CLK; + } else if (uhs == MMC_TIMING_MMC_HS) { + reg_val &= ~SDIO3_CONF_CLK_INV; + reg_val &= ~SDIO3_CONF_SD_FB_CLK; } else { reg_val |= SDIO3_CONF_CLK_INV; reg_val &= ~SDIO3_CONF_SD_FB_CLK; @@ -398,7 +402,7 @@ if (of_device_is_compatible(np, "marvell,armada-380-sdhci")) { ret = armada_38x_quirks(pdev, host); if (ret < 0) - goto err_clk_get; + goto err_mbus_win; ret = mv_conf_mbus_windows(pdev, mv_mbus_dram_info()); if (ret < 0) goto err_mbus_win; --- linux-raspi2-4.2.0.orig/drivers/mmc/host/sdhci.c +++ linux-raspi2-4.2.0/drivers/mmc/host/sdhci.c @@ -54,8 +54,7 @@ static int sdhci_execute_tuning(struct mmc_host *mmc, u32 opcode); static void sdhci_enable_preset_value(struct sdhci_host *host, bool enable); static int sdhci_pre_dma_transfer(struct sdhci_host *host, - struct mmc_data *data, - struct sdhci_host_next *next); + struct mmc_data *data); static int sdhci_do_get_cd(struct sdhci_host *host); #ifdef CONFIG_PM @@ -496,7 +495,7 @@ goto fail; BUG_ON(host->align_addr & host->align_mask); - host->sg_count = sdhci_pre_dma_transfer(host, data, NULL); + host->sg_count = sdhci_pre_dma_transfer(host, data); if (host->sg_count < 0) goto unmap_align; @@ -635,9 +634,11 @@ } } - if (!data->host_cookie) + if (data->host_cookie == COOKIE_MAPPED) { dma_unmap_sg(mmc_dev(host->mmc), data->sg, data->sg_len, direction); + data->host_cookie = COOKIE_UNMAPPED; + } } static u8 sdhci_calc_timeout(struct sdhci_host *host, struct mmc_command *cmd) @@ -833,7 +834,7 @@ } else { int sg_cnt; - sg_cnt = sdhci_pre_dma_transfer(host, data, NULL); + sg_cnt = sdhci_pre_dma_transfer(host, data); if (sg_cnt <= 0) { /* * This only happens when someone fed @@ -949,11 +950,13 @@ if (host->flags & SDHCI_USE_ADMA) sdhci_adma_table_post(host, data); else { - if (!data->host_cookie) + if (data->host_cookie == COOKIE_MAPPED) { dma_unmap_sg(mmc_dev(host->mmc), data->sg, data->sg_len, (data->flags & MMC_DATA_READ) ? DMA_FROM_DEVICE : DMA_TO_DEVICE); + data->host_cookie = COOKIE_UNMAPPED; + } } } @@ -1132,6 +1135,7 @@ preset = sdhci_readw(host, SDHCI_PRESET_FOR_SDR104); break; case MMC_TIMING_UHS_DDR50: + case MMC_TIMING_MMC_DDR52: preset = sdhci_readw(host, SDHCI_PRESET_FOR_DDR50); break; case MMC_TIMING_MMC_HS400: @@ -1559,7 +1563,8 @@ (ios->timing == MMC_TIMING_UHS_SDR25) || (ios->timing == MMC_TIMING_UHS_SDR50) || (ios->timing == MMC_TIMING_UHS_SDR104) || - (ios->timing == MMC_TIMING_UHS_DDR50))) { + (ios->timing == MMC_TIMING_UHS_DDR50) || + (ios->timing == MMC_TIMING_MMC_DDR52))) { u16 preset; sdhci_enable_preset_value(host, true); @@ -2097,49 +2102,36 @@ struct mmc_data *data = mrq->data; if (host->flags & SDHCI_REQ_USE_DMA) { - if (data->host_cookie) + if (data->host_cookie == COOKIE_GIVEN || + data->host_cookie == COOKIE_MAPPED) dma_unmap_sg(mmc_dev(host->mmc), data->sg, data->sg_len, data->flags & MMC_DATA_WRITE ? DMA_TO_DEVICE : DMA_FROM_DEVICE); - mrq->data->host_cookie = 0; + data->host_cookie = COOKIE_UNMAPPED; } } static int sdhci_pre_dma_transfer(struct sdhci_host *host, - struct mmc_data *data, - struct sdhci_host_next *next) + struct mmc_data *data) { int sg_count; - if (!next && data->host_cookie && - data->host_cookie != host->next_data.cookie) { - pr_debug(DRIVER_NAME "[%s] invalid cookie: %d, next-cookie %d\n", - __func__, data->host_cookie, host->next_data.cookie); - data->host_cookie = 0; + if (data->host_cookie == COOKIE_MAPPED) { + data->host_cookie = COOKIE_GIVEN; + return data->sg_count; } - /* Check if next job is already prepared */ - if (next || - (!next && data->host_cookie != host->next_data.cookie)) { - sg_count = dma_map_sg(mmc_dev(host->mmc), data->sg, - data->sg_len, - data->flags & MMC_DATA_WRITE ? - DMA_TO_DEVICE : DMA_FROM_DEVICE); - - } else { - sg_count = host->next_data.sg_count; - host->next_data.sg_count = 0; - } + WARN_ON(data->host_cookie == COOKIE_GIVEN); + sg_count = dma_map_sg(mmc_dev(host->mmc), data->sg, data->sg_len, + data->flags & MMC_DATA_WRITE ? + DMA_TO_DEVICE : DMA_FROM_DEVICE); if (sg_count == 0) - return -EINVAL; + return -ENOSPC; - if (next) { - next->sg_count = sg_count; - data->host_cookie = ++next->cookie < 0 ? 1 : next->cookie; - } else - host->sg_count = sg_count; + data->sg_count = sg_count; + data->host_cookie = COOKIE_MAPPED; return sg_count; } @@ -2149,16 +2141,10 @@ { struct sdhci_host *host = mmc_priv(mmc); - if (mrq->data->host_cookie) { - mrq->data->host_cookie = 0; - return; - } + mrq->data->host_cookie = COOKIE_UNMAPPED; if (host->flags & SDHCI_REQ_USE_DMA) - if (sdhci_pre_dma_transfer(host, - mrq->data, - &host->next_data) < 0) - mrq->data->host_cookie = 0; + sdhci_pre_dma_transfer(host, mrq->data); } static void sdhci_card_event(struct mmc_host *mmc) @@ -3030,7 +3016,6 @@ host->max_clk = host->ops->get_max_clock(host); } - host->next_data.cookie = 1; /* * In case of Host Controller v3.00, find out whether clock * multiplier is supported. --- linux-raspi2-4.2.0.orig/drivers/mmc/host/sdhci.h +++ linux-raspi2-4.2.0/drivers/mmc/host/sdhci.h @@ -309,9 +309,10 @@ */ #define SDHCI_MAX_SEGS 128 -struct sdhci_host_next { - unsigned int sg_count; - s32 cookie; +enum sdhci_cookie { + COOKIE_UNMAPPED, + COOKIE_MAPPED, + COOKIE_GIVEN, }; struct sdhci_host { @@ -503,7 +504,6 @@ unsigned int tuning_mode; /* Re-tuning mode supported by host */ #define SDHCI_TUNING_MODE_1 0 - struct sdhci_host_next next_data; unsigned long private[0] ____cacheline_aligned; }; --- linux-raspi2-4.2.0.orig/drivers/mmc/host/sh_mobile_sdhi.c +++ linux-raspi2-4.2.0/drivers/mmc/host/sh_mobile_sdhi.c @@ -170,7 +170,9 @@ } static int sh_mobile_sdhi_multi_io_quirk(struct mmc_card *card, - unsigned int direction, int blk_size) + unsigned int direction, + u32 blk_pos, + int blk_size) { /* * In Renesas controllers, when performing a --- linux-raspi2-4.2.0.orig/drivers/mmc/host/tmio_mmc_pio.c +++ linux-raspi2-4.2.0/drivers/mmc/host/tmio_mmc_pio.c @@ -1001,7 +1001,9 @@ } static int tmio_multi_io_quirk(struct mmc_card *card, - unsigned int direction, int blk_size) + unsigned int direction, + u32 blk_pos, + int blk_size) { struct tmio_mmc_host *host = mmc_priv(card->host); --- linux-raspi2-4.2.0.orig/drivers/mtd/mtd_blkdevs.c +++ linux-raspi2-4.2.0/drivers/mtd/mtd_blkdevs.c @@ -196,8 +196,8 @@ if (!dev) return -ERESTARTSYS; /* FIXME: busy loop! -arnd*/ - mutex_lock(&dev->lock); mutex_lock(&mtd_table_mutex); + mutex_lock(&dev->lock); if (dev->open) goto unlock; @@ -221,8 +221,8 @@ unlock: dev->open++; - mutex_unlock(&mtd_table_mutex); mutex_unlock(&dev->lock); + mutex_unlock(&mtd_table_mutex); blktrans_dev_put(dev); return ret; @@ -232,8 +232,8 @@ error_put: module_put(dev->tr->owner); kref_put(&dev->ref, blktrans_dev_release); - mutex_unlock(&mtd_table_mutex); mutex_unlock(&dev->lock); + mutex_unlock(&mtd_table_mutex); blktrans_dev_put(dev); return ret; } @@ -245,8 +245,8 @@ if (!dev) return; - mutex_lock(&dev->lock); mutex_lock(&mtd_table_mutex); + mutex_lock(&dev->lock); if (--dev->open) goto unlock; @@ -260,8 +260,8 @@ __put_mtd_device(dev->mtd); } unlock: - mutex_unlock(&mtd_table_mutex); mutex_unlock(&dev->lock); + mutex_unlock(&mtd_table_mutex); blktrans_dev_put(dev); } --- linux-raspi2-4.2.0.orig/drivers/mtd/mtdpart.c +++ linux-raspi2-4.2.0/drivers/mtd/mtdpart.c @@ -664,8 +664,10 @@ for (i = 0; i < nbparts; i++) { slave = allocate_partition(master, parts + i, i, cur_offset); - if (IS_ERR(slave)) + if (IS_ERR(slave)) { + del_mtd_partitions(master); return PTR_ERR(slave); + } mutex_lock(&mtd_partitions_mutex); list_add(&slave->list, &mtd_partitions); --- linux-raspi2-4.2.0.orig/drivers/mtd/nand/Kconfig +++ linux-raspi2-4.2.0/drivers/mtd/nand/Kconfig @@ -41,6 +41,13 @@ tristate default n +config MTD_NAND_BCM2835_SMI + tristate "Use Broadcom's Secondary Memory Interface as a NAND controller (BCM283x)" + depends on (MACH_BCM2708 || MACH_BCM2709 || ARCH_BCM2835) && BCM2835_SMI && MTD_NAND + default m + help + Uses the BCM2835's SMI peripheral as a NAND controller. + config MTD_NAND_DENALI tristate "Support Denali NAND controller" depends on HAS_DMA --- linux-raspi2-4.2.0.orig/drivers/mtd/nand/Makefile +++ linux-raspi2-4.2.0/drivers/mtd/nand/Makefile @@ -14,6 +14,7 @@ obj-$(CONFIG_MTD_NAND_DENALI_PCI) += denali_pci.o obj-$(CONFIG_MTD_NAND_DENALI_DT) += denali_dt.o obj-$(CONFIG_MTD_NAND_AU1550) += au1550nd.o +obj-$(CONFIG_MTD_NAND_BCM2835_SMI) += bcm2835_smi_nand.o obj-$(CONFIG_MTD_NAND_BF5XX) += bf5xx_nand.o obj-$(CONFIG_MTD_NAND_S3C2410) += s3c2410.o obj-$(CONFIG_MTD_NAND_DAVINCI) += davinci_nand.o --- linux-raspi2-4.2.0.orig/drivers/mtd/nand/bcm2835_smi_nand.c +++ linux-raspi2-4.2.0/drivers/mtd/nand/bcm2835_smi_nand.c @@ -0,0 +1,268 @@ +/** + * NAND flash driver for Broadcom Secondary Memory Interface + * + * Written by Luke Wren + * Copyright (c) 2015, Raspberry Pi (Trading) Ltd. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions, and the following disclaimer, + * without modification. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The names of the above-listed copyright holders may not be used + * to endorse or promote products derived from this software without + * specific prior written permission. + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") version 2, as published by the Free + * Software Foundation. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS + * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include +#include +#include +#include +#include +#include +#include + +#include + +#define DEVICE_NAME "bcm2835-smi-nand" +#define DRIVER_NAME "smi-nand-bcm2835" + +struct bcm2835_smi_nand_host { + struct bcm2835_smi_instance *smi_inst; + struct nand_chip nand_chip; + struct mtd_info mtd; + struct device *dev; +}; + +/**************************************************************************** +* +* NAND functionality implementation +* +****************************************************************************/ + +#define SMI_NAND_CLE_PIN 0x01 +#define SMI_NAND_ALE_PIN 0x02 + +static inline void bcm2835_smi_nand_cmd_ctrl(struct mtd_info *mtd, int cmd, + unsigned int ctrl) +{ + uint32_t cmd32 = cmd; + uint32_t addr = ~(SMI_NAND_CLE_PIN | SMI_NAND_ALE_PIN); + struct bcm2835_smi_nand_host *host = dev_get_drvdata(mtd->dev.parent); + struct bcm2835_smi_instance *inst = host->smi_inst; + + if (ctrl & NAND_CLE) + addr |= SMI_NAND_CLE_PIN; + if (ctrl & NAND_ALE) + addr |= SMI_NAND_ALE_PIN; + /* Lower ALL the CS pins! */ + if (ctrl & NAND_NCE) + addr &= (SMI_NAND_CLE_PIN | SMI_NAND_ALE_PIN); + + bcm2835_smi_set_address(inst, addr); + + if (cmd != NAND_CMD_NONE) + bcm2835_smi_write_buf(inst, &cmd32, 1); +} + +static inline uint8_t bcm2835_smi_nand_read_byte(struct mtd_info *mtd) +{ + uint8_t byte; + struct bcm2835_smi_nand_host *host = dev_get_drvdata(mtd->dev.parent); + struct bcm2835_smi_instance *inst = host->smi_inst; + + bcm2835_smi_read_buf(inst, &byte, 1); + return byte; +} + +static inline void bcm2835_smi_nand_write_byte(struct mtd_info *mtd, + uint8_t byte) +{ + struct bcm2835_smi_nand_host *host = dev_get_drvdata(mtd->dev.parent); + struct bcm2835_smi_instance *inst = host->smi_inst; + + bcm2835_smi_write_buf(inst, &byte, 1); +} + +static inline void bcm2835_smi_nand_write_buf(struct mtd_info *mtd, + const uint8_t *buf, int len) +{ + struct bcm2835_smi_nand_host *host = dev_get_drvdata(mtd->dev.parent); + struct bcm2835_smi_instance *inst = host->smi_inst; + + bcm2835_smi_write_buf(inst, buf, len); +} + +static inline void bcm2835_smi_nand_read_buf(struct mtd_info *mtd, + uint8_t *buf, int len) +{ + struct bcm2835_smi_nand_host *host = dev_get_drvdata(mtd->dev.parent); + struct bcm2835_smi_instance *inst = host->smi_inst; + + bcm2835_smi_read_buf(inst, buf, len); +} + +/**************************************************************************** +* +* Probe and remove functions +* +***************************************************************************/ + +static int bcm2835_smi_nand_probe(struct platform_device *pdev) +{ + struct bcm2835_smi_nand_host *host; + struct nand_chip *this; + struct mtd_info *mtd; + struct device *dev = &pdev->dev; + struct device_node *node = dev->of_node, *smi_node; + struct mtd_part_parser_data ppdata; + struct smi_settings *smi_settings; + struct bcm2835_smi_instance *smi_inst; + int ret = -ENXIO; + + if (!node) { + dev_err(dev, "No device tree node supplied!"); + return -EINVAL; + } + + smi_node = of_parse_phandle(node, "smi_handle", 0); + + /* Request use of SMI peripheral: */ + smi_inst = bcm2835_smi_get(smi_node); + + if (!smi_inst) { + dev_err(dev, "Could not register with SMI."); + return -EPROBE_DEFER; + } + + /* Set SMI timing and bus width */ + + smi_settings = bcm2835_smi_get_settings_from_regs(smi_inst); + + smi_settings->data_width = SMI_WIDTH_8BIT; + smi_settings->read_setup_time = 2; + smi_settings->read_hold_time = 1; + smi_settings->read_pace_time = 1; + smi_settings->read_strobe_time = 3; + + smi_settings->write_setup_time = 2; + smi_settings->write_hold_time = 1; + smi_settings->write_pace_time = 1; + smi_settings->write_strobe_time = 3; + + bcm2835_smi_set_regs_from_settings(smi_inst); + + host = devm_kzalloc(dev, sizeof(struct bcm2835_smi_nand_host), + GFP_KERNEL); + if (!host) + return -ENOMEM; + + host->dev = dev; + host->smi_inst = smi_inst; + + platform_set_drvdata(pdev, host); + + /* Link the structures together */ + + this = &host->nand_chip; + mtd = &host->mtd; + mtd->priv = this; + mtd->owner = THIS_MODULE; + mtd->dev.parent = dev; + mtd->name = DRIVER_NAME; + ppdata.of_node = node; + + /* 20 us command delay time... */ + this->chip_delay = 20; + + this->priv = host; + this->cmd_ctrl = bcm2835_smi_nand_cmd_ctrl; + this->read_byte = bcm2835_smi_nand_read_byte; + this->write_byte = bcm2835_smi_nand_write_byte; + this->write_buf = bcm2835_smi_nand_write_buf; + this->read_buf = bcm2835_smi_nand_read_buf; + + this->ecc.mode = NAND_ECC_SOFT; + + /* Should never be accessed directly: */ + + this->IO_ADDR_R = (void *)0xdeadbeef; + this->IO_ADDR_W = (void *)0xdeadbeef; + + /* First scan to find the device and get the page size */ + + if (nand_scan_ident(mtd, 1, NULL)) + return -ENXIO; + + /* Second phase scan */ + + if (nand_scan_tail(mtd)) + return -ENXIO; + + ret = mtd_device_parse_register(mtd, NULL, &ppdata, NULL, 0); + if (!ret) + return 0; + + nand_release(mtd); + return -EINVAL; +} + +static int bcm2835_smi_nand_remove(struct platform_device *pdev) +{ + struct bcm2835_smi_nand_host *host = platform_get_drvdata(pdev); + + nand_release(&host->mtd); + + return 0; +} + +/**************************************************************************** +* +* Register the driver with device tree +* +***************************************************************************/ + +static const struct of_device_id bcm2835_smi_nand_of_match[] = { + {.compatible = "brcm,bcm2835-smi-nand",}, + { /* sentinel */ } +}; + +MODULE_DEVICE_TABLE(of, bcm2835_smi_nand_of_match); + +static struct platform_driver bcm2835_smi_nand_driver = { + .probe = bcm2835_smi_nand_probe, + .remove = bcm2835_smi_nand_remove, + .driver = { + .name = DRIVER_NAME, + .owner = THIS_MODULE, + .of_match_table = bcm2835_smi_nand_of_match, + }, +}; + +module_platform_driver(bcm2835_smi_nand_driver); + +MODULE_ALIAS("platform:smi-nand-bcm2835"); +MODULE_LICENSE("GPL"); +MODULE_DESCRIPTION + ("Driver for NAND chips using Broadcom Secondary Memory Interface"); +MODULE_AUTHOR("Luke Wren "); --- linux-raspi2-4.2.0.orig/drivers/mtd/nand/mxc_nand.c +++ linux-raspi2-4.2.0/drivers/mtd/nand/mxc_nand.c @@ -879,7 +879,7 @@ oob_chunk_size); /* the last chunk */ - memcpy16_toio(&s[oob_chunk_size * sparebuf_size], + memcpy16_toio(&s[i * sparebuf_size], &d[i * oob_chunk_size], host->used_oobsize - i * oob_chunk_size); } --- linux-raspi2-4.2.0.orig/drivers/mtd/nand/pxa3xx_nand.c +++ linux-raspi2-4.2.0/drivers/mtd/nand/pxa3xx_nand.c @@ -1473,6 +1473,9 @@ if (pdata->keep_config && !pxa3xx_nand_detect_config(info)) goto KEEP_CONFIG; + /* Set a default chunk size */ + info->chunk_size = 512; + ret = pxa3xx_nand_sensing(info); if (ret) { dev_info(&info->pdev->dev, "There is no chip on cs %d!\n", --- linux-raspi2-4.2.0.orig/drivers/mtd/nand/sunxi_nand.c +++ linux-raspi2-4.2.0/drivers/mtd/nand/sunxi_nand.c @@ -138,6 +138,10 @@ #define NFC_ECC_MODE GENMASK(15, 12) #define NFC_RANDOM_SEED GENMASK(30, 16) +/* NFC_USER_DATA helper macros */ +#define NFC_BUF_TO_USER_DATA(buf) ((buf)[0] | ((buf)[1] << 8) | \ + ((buf)[2] << 16) | ((buf)[3] << 24)) + #define NFC_DEFAULT_TIMEOUT_MS 1000 #define NFC_SRAM_SIZE 1024 @@ -632,15 +636,9 @@ offset = layout->eccpos[i * ecc->bytes] - 4 + mtd->writesize; /* Fill OOB data in */ - if (oob_required) { - tmp = 0xffffffff; - memcpy_toio(nfc->regs + NFC_REG_USER_DATA_BASE, &tmp, - 4); - } else { - memcpy_toio(nfc->regs + NFC_REG_USER_DATA_BASE, - chip->oob_poi + offset - mtd->writesize, - 4); - } + writel(NFC_BUF_TO_USER_DATA(chip->oob_poi + + layout->oobfree[i].offset), + nfc->regs + NFC_REG_USER_DATA_BASE); chip->cmdfunc(mtd, NAND_CMD_RNDIN, offset, -1); @@ -770,14 +768,8 @@ offset += ecc->size; /* Fill OOB data in */ - if (oob_required) { - tmp = 0xffffffff; - memcpy_toio(nfc->regs + NFC_REG_USER_DATA_BASE, &tmp, - 4); - } else { - memcpy_toio(nfc->regs + NFC_REG_USER_DATA_BASE, oob, - 4); - } + writel(NFC_BUF_TO_USER_DATA(oob), + nfc->regs + NFC_REG_USER_DATA_BASE); tmp = NFC_DATA_TRANS | NFC_DATA_SWAP_METHOD | NFC_ACCESS_DIR | (1 << 30); @@ -1312,6 +1304,7 @@ node); nand_release(&chip->mtd); sunxi_nand_ecc_cleanup(&chip->nand.ecc); + list_del(&chip->node); } } --- linux-raspi2-4.2.0.orig/drivers/mtd/ubi/fastmap-wl.c +++ linux-raspi2-4.2.0/drivers/mtd/ubi/fastmap-wl.c @@ -172,6 +172,30 @@ } /** + * produce_free_peb - produce a free physical eraseblock. + * @ubi: UBI device description object + * + * This function tries to make a free PEB by means of synchronous execution of + * pending works. This may be needed if, for example the background thread is + * disabled. Returns zero in case of success and a negative error code in case + * of failure. + */ +static int produce_free_peb(struct ubi_device *ubi) +{ + int err; + + while (!ubi->free.rb_node && ubi->works_count) { + dbg_wl("do one work synchronously"); + err = do_work(ubi); + + if (err) + return err; + } + + return 0; +} + +/** * ubi_wl_get_peb - get a physical eraseblock. * @ubi: UBI device description object * @@ -213,6 +237,11 @@ } retried = 1; up_read(&ubi->fm_eba_sem); + ret = produce_free_peb(ubi); + if (ret < 0) { + down_read(&ubi->fm_eba_sem); + goto out; + } goto again; } --- linux-raspi2-4.2.0.orig/drivers/mtd/ubi/io.c +++ linux-raspi2-4.2.0/drivers/mtd/ubi/io.c @@ -926,6 +926,11 @@ goto bad; } + if (data_size > ubi->leb_size) { + ubi_err(ubi, "bad data_size"); + goto bad; + } + if (vol_type == UBI_VID_STATIC) { /* * Although from high-level point of view static volumes may --- linux-raspi2-4.2.0.orig/drivers/mtd/ubi/vtbl.c +++ linux-raspi2-4.2.0/drivers/mtd/ubi/vtbl.c @@ -649,6 +649,7 @@ if (ubi->corr_peb_count) ubi_err(ubi, "%d PEBs are corrupted and not used", ubi->corr_peb_count); + return -ENOSPC; } ubi->rsvd_pebs += reserved_pebs; ubi->avail_pebs -= reserved_pebs; --- linux-raspi2-4.2.0.orig/drivers/mtd/ubi/wl.c +++ linux-raspi2-4.2.0/drivers/mtd/ubi/wl.c @@ -1601,6 +1601,7 @@ if (ubi->corr_peb_count) ubi_err(ubi, "%d PEBs are corrupted and not used", ubi->corr_peb_count); + err = -ENOSPC; goto out_free; } ubi->avail_pebs -= reserved_pebs; --- linux-raspi2-4.2.0.orig/drivers/net/bonding/bond_main.c +++ linux-raspi2-4.2.0/drivers/net/bonding/bond_main.c @@ -1751,6 +1751,7 @@ slave_dev->dev_addr)) eth_hw_addr_random(bond_dev); if (bond_dev->type != ARPHRD_ETHER) { + dev_close(bond_dev); ether_setup(bond_dev); bond_dev->flags |= IFF_MASTER; bond_dev->priv_flags &= ~IFF_TX_SKB_SHARING; @@ -3097,7 +3098,7 @@ int noff, proto = -1; if (bond->params.xmit_policy > BOND_XMIT_POLICY_LAYER23) - return skb_flow_dissect_flow_keys(skb, fk); + return skb_flow_dissect_flow_keys(skb, fk, 0); fk->ports.ports = 0; noff = skb_network_offset(skb); --- linux-raspi2-4.2.0.orig/drivers/net/can/dev.c +++ linux-raspi2-4.2.0/drivers/net/can/dev.c @@ -915,7 +915,7 @@ nla_put(skb, IFLA_CAN_BITTIMING_CONST, sizeof(*priv->bittiming_const), priv->bittiming_const)) || - nla_put(skb, IFLA_CAN_CLOCK, sizeof(cm), &priv->clock) || + 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) || --- linux-raspi2-4.2.0.orig/drivers/net/can/sja1000/sja1000.c +++ linux-raspi2-4.2.0/drivers/net/can/sja1000/sja1000.c @@ -218,6 +218,9 @@ priv->write_reg(priv, SJA1000_RXERR, 0x0); priv->read_reg(priv, SJA1000_ECC); + /* clear interrupt flags */ + priv->read_reg(priv, SJA1000_IR); + /* leave reset mode */ set_normal_mode(dev); } --- linux-raspi2-4.2.0.orig/drivers/net/dsa/bcm_sf2.c +++ linux-raspi2-4.2.0/drivers/net/dsa/bcm_sf2.c @@ -418,7 +418,7 @@ core_writel(priv, port, CORE_FAST_AGE_PORT); reg = core_readl(priv, CORE_FAST_AGE_CTRL); - reg |= EN_AGE_PORT | FAST_AGE_STR_DONE; + reg |= EN_AGE_PORT | EN_AGE_DYNAMIC | FAST_AGE_STR_DONE; core_writel(priv, reg, CORE_FAST_AGE_CTRL); do { @@ -432,6 +432,8 @@ if (!timeout) return -ETIMEDOUT; + core_writel(priv, 0, CORE_FAST_AGE_CTRL); + return 0; } @@ -507,7 +509,7 @@ u32 reg; reg = core_readl(priv, CORE_G_PCTL_PORT(port)); - cur_hw_state = reg >> G_MISTP_STATE_SHIFT; + cur_hw_state = reg & (G_MISTP_STATE_MASK << G_MISTP_STATE_SHIFT); switch (state) { case BR_STATE_DISABLED: @@ -531,10 +533,12 @@ } /* Fast-age ARL entries if we are moving a port from Learning or - * Forwarding state to Disabled, Blocking or Listening state + * Forwarding (cur_hw_state) state to Disabled, Blocking or Listening + * state (hw_state) */ if (cur_hw_state != hw_state) { - if (cur_hw_state & 4 && !(hw_state & 4)) { + if (cur_hw_state >= G_MISTP_LEARN_STATE && + hw_state <= G_MISTP_LISTEN_STATE) { ret = bcm_sf2_sw_fast_age_port(ds, port); if (ret) { pr_err("%s: fast-ageing failed\n", __func__); @@ -901,15 +905,11 @@ struct fixed_phy_status *status) { struct bcm_sf2_priv *priv = ds_to_priv(ds); - u32 duplex, pause, speed; + u32 duplex, pause; u32 reg; duplex = core_readl(priv, CORE_DUPSTS); pause = core_readl(priv, CORE_PAUSESTS); - speed = core_readl(priv, CORE_SPDSTS); - - speed >>= (port * SPDSTS_SHIFT); - speed &= SPDSTS_MASK; status->link = 0; @@ -944,18 +944,6 @@ reg &= ~LINK_STS; core_writel(priv, reg, CORE_STS_OVERRIDE_GMIIP_PORT(port)); - switch (speed) { - case SPDSTS_10: - status->speed = SPEED_10; - break; - case SPDSTS_100: - status->speed = SPEED_100; - break; - case SPDSTS_1000: - status->speed = SPEED_1000; - break; - } - if ((pause & (1 << port)) && (pause & (1 << (port + PAUSESTS_TX_PAUSE_SHIFT)))) { status->asym_pause = 1; --- linux-raspi2-4.2.0.orig/drivers/net/dsa/bcm_sf2.h +++ linux-raspi2-4.2.0/drivers/net/dsa/bcm_sf2.h @@ -112,8 +112,8 @@ spin_unlock(&priv->indir_lock); \ return (u64)indir << 32 | dir; \ } \ -static inline void name##_writeq(struct bcm_sf2_priv *priv, u32 off, \ - u64 val) \ +static inline void name##_writeq(struct bcm_sf2_priv *priv, u64 val, \ + u32 off) \ { \ spin_lock(&priv->indir_lock); \ reg_writel(priv, upper_32_bits(val), REG_DIR_DATA_WRITE); \ --- linux-raspi2-4.2.0.orig/drivers/net/dsa/mv88e6xxx.c +++ linux-raspi2-4.2.0/drivers/net/dsa/mv88e6xxx.c @@ -1387,6 +1387,7 @@ reg = _mv88e6xxx_reg_read(ds, REG_PORT(port), PORT_PCS_CTRL); if (dsa_is_cpu_port(ds, port) || ds->dsa_port_mask & (1 << port)) { + reg &= ~PORT_PCS_CTRL_UNFORCED; reg |= PORT_PCS_CTRL_FORCE_LINK | PORT_PCS_CTRL_LINK_UP | PORT_PCS_CTRL_DUPLEX_FULL | --- linux-raspi2-4.2.0.orig/drivers/net/ethernet/altera/altera_tse_main.c +++ linux-raspi2-4.2.0/drivers/net/ethernet/altera/altera_tse_main.c @@ -511,8 +511,7 @@ if (rxcomplete < budget) { - napi_gro_flush(napi, false); - __napi_complete(napi); + napi_complete(napi); netdev_dbg(priv->dev, "NAPI Complete, did %d packets with budget %d\n", --- linux-raspi2-4.2.0.orig/drivers/net/ethernet/amd/xgbe/xgbe-dev.c +++ linux-raspi2-4.2.0/drivers/net/ethernet/amd/xgbe/xgbe-dev.c @@ -1595,7 +1595,7 @@ packet->rdesc_count, 1); /* Make sure ownership is written to the descriptor */ - dma_wmb(); + smp_wmb(); ring->cur = cur_index + 1; if (!packet->skb->xmit_more || --- linux-raspi2-4.2.0.orig/drivers/net/ethernet/amd/xgbe/xgbe-drv.c +++ linux-raspi2-4.2.0/drivers/net/ethernet/amd/xgbe/xgbe-drv.c @@ -1807,6 +1807,7 @@ struct netdev_queue *txq; int processed = 0; unsigned int tx_packets = 0, tx_bytes = 0; + unsigned int cur; DBGPR("-->xgbe_tx_poll\n"); @@ -1814,10 +1815,15 @@ if (!ring) return 0; + cur = ring->cur; + + /* Be sure we get ring->cur before accessing descriptor data */ + smp_rmb(); + txq = netdev_get_tx_queue(netdev, channel->queue_index); while ((processed < XGBE_TX_DESC_MAX_PROC) && - (ring->dirty != ring->cur)) { + (ring->dirty != cur)) { rdata = XGBE_GET_DESC_DATA(ring, ring->dirty); rdesc = rdata->rdesc; --- linux-raspi2-4.2.0.orig/drivers/net/ethernet/apm/xgene/xgene_enet_hw.c +++ linux-raspi2-4.2.0/drivers/net/ethernet/apm/xgene/xgene_enet_hw.c @@ -458,6 +458,45 @@ xgene_enet_wr_mcx_mac(pdata, MAC_CONFIG_1_ADDR, 0); } +static void xgene_enet_configure_clock(struct xgene_enet_pdata *pdata) +{ + struct device *dev = &pdata->pdev->dev; + + if (dev->of_node) { + struct clk *parent = clk_get_parent(pdata->clk); + + switch (pdata->phy_speed) { + case SPEED_10: + clk_set_rate(parent, 2500000); + break; + case SPEED_100: + clk_set_rate(parent, 25000000); + break; + default: + clk_set_rate(parent, 125000000); + break; + } + } +#ifdef CONFIG_ACPI + else { + switch (pdata->phy_speed) { + case SPEED_10: + acpi_evaluate_object(ACPI_HANDLE(dev), + "S10", NULL, NULL); + break; + case SPEED_100: + acpi_evaluate_object(ACPI_HANDLE(dev), + "S100", NULL, NULL); + break; + default: + acpi_evaluate_object(ACPI_HANDLE(dev), + "S1G", NULL, NULL); + break; + } + } +#endif +} + static void xgene_gmac_init(struct xgene_enet_pdata *pdata) { u32 value, mc2; @@ -475,12 +514,14 @@ switch (pdata->phy_speed) { case SPEED_10: ENET_INTERFACE_MODE2_SET(&mc2, 1); + intf_ctl &= ~(ENET_LHD_MODE | ENET_GHD_MODE); CFG_MACMODE_SET(&icm0, 0); CFG_WAITASYNCRD_SET(&icm2, 500); rgmii &= ~CFG_SPEED_1250; break; case SPEED_100: ENET_INTERFACE_MODE2_SET(&mc2, 1); + intf_ctl &= ~ENET_GHD_MODE; intf_ctl |= ENET_LHD_MODE; CFG_MACMODE_SET(&icm0, 1); CFG_WAITASYNCRD_SET(&icm2, 80); @@ -488,15 +529,19 @@ break; default: ENET_INTERFACE_MODE2_SET(&mc2, 2); + intf_ctl &= ~ENET_LHD_MODE; intf_ctl |= ENET_GHD_MODE; + CFG_MACMODE_SET(&icm0, 2); + CFG_WAITASYNCRD_SET(&icm2, 0); CFG_TXCLK_MUXSEL0_SET(&rgmii, 4); + rgmii |= CFG_SPEED_1250; xgene_enet_rd_csr(pdata, DEBUG_REG_ADDR, &value); value |= CFG_BYPASS_UNISEC_TX | CFG_BYPASS_UNISEC_RX; xgene_enet_wr_csr(pdata, DEBUG_REG_ADDR, value); break; } - mc2 |= FULL_DUPLEX2; + mc2 |= FULL_DUPLEX2 | PAD_CRC; xgene_enet_wr_mcx_mac(pdata, MAC_CONFIG_2_ADDR, mc2); xgene_enet_wr_mcx_mac(pdata, INTERFACE_CONTROL_ADDR, intf_ctl); @@ -515,6 +560,7 @@ /* Rtype should be copied from FP */ xgene_enet_wr_csr(pdata, RSIF_RAM_DBG_REG0_ADDR, 0); xgene_enet_wr_csr(pdata, RGMII_REG_0_ADDR, rgmii); + xgene_enet_configure_clock(pdata); /* Rx-Tx traffic resume */ xgene_enet_wr_csr(pdata, CFG_LINK_AGGR_RESUME_0_ADDR, TX_PORT0); --- linux-raspi2-4.2.0.orig/drivers/net/ethernet/apm/xgene/xgene_enet_hw.h +++ linux-raspi2-4.2.0/drivers/net/ethernet/apm/xgene/xgene_enet_hw.h @@ -180,6 +180,7 @@ #define ENET_LHD_MODE BIT(25) #define ENET_GHD_MODE BIT(26) #define FULL_DUPLEX2 BIT(0) +#define PAD_CRC BIT(2) #define SCAN_AUTO_INCR BIT(5) #define TBYT_ADDR 0x38 #define TPKT_ADDR 0x39 --- linux-raspi2-4.2.0.orig/drivers/net/ethernet/apm/xgene/xgene_enet_main.c +++ linux-raspi2-4.2.0/drivers/net/ethernet/apm/xgene/xgene_enet_main.c @@ -505,7 +505,6 @@ else schedule_delayed_work(&pdata->link_work, PHY_POLL_LINK_OFF); - netif_carrier_off(ndev); netif_start_queue(ndev); return ret; --- linux-raspi2-4.2.0.orig/drivers/net/ethernet/atheros/alx/main.c +++ linux-raspi2-4.2.0/drivers/net/ethernet/atheros/alx/main.c @@ -1534,6 +1534,8 @@ .driver_data = ALX_DEV_QUIRK_MSI_INTX_DISABLE_BUG }, { PCI_VDEVICE(ATTANSIC, ALX_DEV_ID_E2200), .driver_data = ALX_DEV_QUIRK_MSI_INTX_DISABLE_BUG }, + { PCI_VDEVICE(ATTANSIC, ALX_DEV_ID_E2400), + .driver_data = ALX_DEV_QUIRK_MSI_INTX_DISABLE_BUG }, { PCI_VDEVICE(ATTANSIC, ALX_DEV_ID_AR8162), .driver_data = ALX_DEV_QUIRK_MSI_INTX_DISABLE_BUG }, { PCI_VDEVICE(ATTANSIC, ALX_DEV_ID_AR8171) }, --- linux-raspi2-4.2.0.orig/drivers/net/ethernet/atheros/alx/reg.h +++ linux-raspi2-4.2.0/drivers/net/ethernet/atheros/alx/reg.h @@ -37,6 +37,7 @@ #define ALX_DEV_ID_AR8161 0x1091 #define ALX_DEV_ID_E2200 0xe091 +#define ALX_DEV_ID_E2400 0xe0a1 #define ALX_DEV_ID_AR8162 0x1090 #define ALX_DEV_ID_AR8171 0x10A1 #define ALX_DEV_ID_AR8172 0x10A0 --- linux-raspi2-4.2.0.orig/drivers/net/ethernet/atheros/atl1c/atl1c_main.c +++ linux-raspi2-4.2.0/drivers/net/ethernet/atheros/atl1c/atl1c_main.c @@ -1014,13 +1014,12 @@ sizeof(struct atl1c_recv_ret_status) * rx_desc_count + 8 * 4; - ring_header->desc = pci_alloc_consistent(pdev, ring_header->size, - &ring_header->dma); + ring_header->desc = dma_zalloc_coherent(&pdev->dev, ring_header->size, + &ring_header->dma, GFP_KERNEL); if (unlikely(!ring_header->desc)) { - dev_err(&pdev->dev, "pci_alloc_consistend failed\n"); + dev_err(&pdev->dev, "could not get memory for DMA buffer\n"); goto err_nomem; } - memset(ring_header->desc, 0, ring_header->size); /* init TPD ring */ tpd_ring[0].dma = roundup(ring_header->dma, 8); --- linux-raspi2-4.2.0.orig/drivers/net/ethernet/broadcom/genet/bcmgenet.c +++ linux-raspi2-4.2.0/drivers/net/ethernet/broadcom/genet/bcmgenet.c @@ -2703,18 +2703,20 @@ goto err_irq0; } - /* Re-configure the port multiplexer towards the PHY device */ - bcmgenet_mii_config(priv->dev, false); - - phy_connect_direct(dev, priv->phydev, bcmgenet_mii_setup, - priv->phy_interface); + ret = bcmgenet_mii_probe(dev); + if (ret) { + netdev_err(dev, "failed to connect to PHY\n"); + goto err_irq1; + } bcmgenet_netif_start(dev); return 0; +err_irq1: + free_irq(priv->irq1, priv); err_irq0: - free_irq(priv->irq0, dev); + free_irq(priv->irq0, priv); err_fini_dma: bcmgenet_fini_dma(priv); err_clk_disable: --- linux-raspi2-4.2.0.orig/drivers/net/ethernet/broadcom/genet/bcmgenet.h +++ linux-raspi2-4.2.0/drivers/net/ethernet/broadcom/genet/bcmgenet.h @@ -671,6 +671,7 @@ /* MDIO routines */ int bcmgenet_mii_init(struct net_device *dev); int bcmgenet_mii_config(struct net_device *dev, bool init); +int bcmgenet_mii_probe(struct net_device *dev); void bcmgenet_mii_exit(struct net_device *dev); void bcmgenet_mii_reset(struct net_device *dev); void bcmgenet_phy_power_set(struct net_device *dev, bool enable); --- linux-raspi2-4.2.0.orig/drivers/net/ethernet/broadcom/genet/bcmmii.c +++ linux-raspi2-4.2.0/drivers/net/ethernet/broadcom/genet/bcmmii.c @@ -327,7 +327,7 @@ return 0; } -static int bcmgenet_mii_probe(struct net_device *dev) +int bcmgenet_mii_probe(struct net_device *dev) { struct bcmgenet_priv *priv = netdev_priv(dev); struct device_node *dn = priv->pdev->dev.of_node; @@ -345,22 +345,6 @@ priv->old_pause = -1; if (dn) { - if (priv->phydev) { - pr_info("PHY already attached\n"); - return 0; - } - - /* In the case of a fixed PHY, the DT node associated - * to the PHY is the Ethernet MAC DT node. - */ - if (!priv->phy_dn && of_phy_is_fixed_link(dn)) { - ret = of_phy_register_fixed_link(dn); - if (ret) - return ret; - - priv->phy_dn = of_node_get(dn); - } - phydev = of_phy_connect(dev, priv->phy_dn, bcmgenet_mii_setup, phy_flags, priv->phy_interface); if (!phydev) { @@ -402,9 +386,6 @@ else priv->mii_bus->irq[phydev->addr] = PHY_POLL; - pr_info("attached PHY at address %d [%s]\n", - phydev->addr, phydev->drv->name); - return 0; } @@ -513,6 +494,17 @@ /* Fetch the PHY phandle */ priv->phy_dn = of_parse_phandle(dn, "phy-handle", 0); + /* In the case of a fixed PHY, the DT node associated + * to the PHY is the Ethernet MAC DT node. + */ + if (!priv->phy_dn && of_phy_is_fixed_link(dn)) { + ret = of_phy_register_fixed_link(dn); + if (ret) + return ret; + + priv->phy_dn = of_node_get(dn); + } + /* Get the link mode */ priv->phy_interface = of_get_phy_mode(dn); @@ -615,10 +607,6 @@ ret = bcmgenet_mii_bus_init(priv); if (ret) - goto out_free; - - ret = bcmgenet_mii_probe(dev); - if (ret) goto out; return 0; @@ -626,7 +614,6 @@ out: of_node_put(priv->phy_dn); mdiobus_unregister(priv->mii_bus); -out_free: kfree(priv->mii_bus->irq); mdiobus_free(priv->mii_bus); return ret; --- linux-raspi2-4.2.0.orig/drivers/net/ethernet/broadcom/tg3.c +++ linux-raspi2-4.2.0/drivers/net/ethernet/broadcom/tg3.c @@ -329,6 +329,7 @@ {PCI_DEVICE(PCI_VENDOR_ID_BROADCOM, TG3PCI_DEVICE_TIGON3_57785)}, {PCI_DEVICE(PCI_VENDOR_ID_BROADCOM, TG3PCI_DEVICE_TIGON3_57761)}, {PCI_DEVICE(PCI_VENDOR_ID_BROADCOM, TG3PCI_DEVICE_TIGON3_57765)}, + {PCI_DEVICE(PCI_VENDOR_ID_BROADCOM, TG3PCI_DEVICE_TIGON3_57786)}, {PCI_DEVICE(PCI_VENDOR_ID_BROADCOM, TG3PCI_DEVICE_TIGON3_57791), .driver_data = TG3_DRV_DATA_FLAG_10_100_ONLY}, {PCI_DEVICE(PCI_VENDOR_ID_BROADCOM, TG3PCI_DEVICE_TIGON3_57795), @@ -10757,7 +10758,7 @@ tg3_ape_scratchpad_read(tp, &temperature, attr->index, sizeof(temperature)); spin_unlock_bh(&tp->lock); - return sprintf(buf, "%u\n", temperature); + return sprintf(buf, "%u\n", temperature * 1000); } --- linux-raspi2-4.2.0.orig/drivers/net/ethernet/cavium/thunder/nic.h +++ linux-raspi2-4.2.0/drivers/net/ethernet/cavium/thunder/nic.h @@ -135,6 +135,7 @@ #define NICVF_TX_TIMEOUT (50 * HZ) struct nicvf_cq_poll { + struct nicvf *nicvf; u8 cq_idx; /* Completion queue index */ struct napi_struct napi; }; @@ -190,10 +191,10 @@ }; struct nicvf_hw_stats { - u64 rx_bytes_ok; - u64 rx_ucast_frames_ok; - u64 rx_bcast_frames_ok; - u64 rx_mcast_frames_ok; + u64 rx_bytes; + u64 rx_ucast_frames; + u64 rx_bcast_frames; + u64 rx_mcast_frames; u64 rx_fcs_errors; u64 rx_l2_errors; u64 rx_drop_red; @@ -204,6 +205,31 @@ u64 rx_drop_mcast; u64 rx_drop_l3_bcast; u64 rx_drop_l3_mcast; + u64 rx_bgx_truncated_pkts; + u64 rx_jabber_errs; + u64 rx_fcs_errs; + u64 rx_bgx_errs; + u64 rx_prel2_errs; + u64 rx_l2_hdr_malformed; + u64 rx_oversize; + u64 rx_undersize; + u64 rx_l2_len_mismatch; + u64 rx_l2_pclp; + u64 rx_ip_ver_errs; + u64 rx_ip_csum_errs; + u64 rx_ip_hdr_malformed; + u64 rx_ip_payload_malformed; + u64 rx_ip_ttl_errs; + u64 rx_l3_pclp; + u64 rx_l4_malformed; + u64 rx_l4_csum_errs; + u64 rx_udp_len_errs; + u64 rx_l4_port_errs; + u64 rx_tcp_flag_errs; + u64 rx_tcp_offset_errs; + u64 rx_l4_pclp; + u64 rx_truncated_pkts; + u64 tx_bytes_ok; u64 tx_ucast_frames_ok; u64 tx_bcast_frames_ok; @@ -222,6 +248,7 @@ u64 rx_frames_1518; u64 rx_frames_jumbo; u64 rx_drops; + /* Tx */ u64 tx_frames_ok; u64 tx_drops; @@ -231,13 +258,24 @@ }; struct nicvf { + struct nicvf *pnicvf; struct net_device *netdev; struct pci_dev *pdev; u8 vf_id; u8 node; - u8 tns_mode; + u8 tns_mode:1; + u8 sqs_mode:1; + u8 loopback_supported:1; u16 mtu; struct queue_set *qs; +#define MAX_SQS_PER_VF_SINGLE_NODE 5 +#define MAX_SQS_PER_VF 11 + u8 sqs_id; + u8 sqs_count; /* Secondary Qset count */ + struct nicvf *snicvf[MAX_SQS_PER_VF]; + u8 rx_queues; + u8 tx_queues; + u8 max_queues; void __iomem *reg_base; bool link_up; u8 duplex; @@ -257,7 +295,7 @@ u32 cq_coalesce_usecs; u32 msg_enable; - struct nicvf_hw_stats stats; + struct nicvf_hw_stats hw_stats; struct nicvf_drv_stats drv_stats; struct bgx_stats bgx_stats; struct work_struct reset_task; @@ -269,10 +307,9 @@ char irq_name[NIC_VF_MSIX_VECTORS][20]; bool irq_allocated[NIC_VF_MSIX_VECTORS]; - bool pf_ready_to_rcv_msg; + /* VF <-> PF mailbox communication */ bool pf_acked; bool pf_nacked; - bool bgx_stats_acked; bool set_mac_pending; } ____cacheline_aligned_in_smp; @@ -304,14 +341,21 @@ #define NIC_MBOX_MSG_RQ_SW_SYNC 0x0F /* Flush inflight pkts to RQ */ #define NIC_MBOX_MSG_BGX_STATS 0x10 /* Get stats from BGX */ #define NIC_MBOX_MSG_BGX_LINK_CHANGE 0x11 /* BGX:LMAC link status */ -#define NIC_MBOX_MSG_CFG_DONE 0x12 /* VF configuration done */ -#define NIC_MBOX_MSG_SHUTDOWN 0x13 /* VF is being shutdown */ +#define NIC_MBOX_MSG_ALLOC_SQS 0x12 /* Allocate secondary Qset */ +#define NIC_MBOX_MSG_NICVF_PTR 0x13 /* Send nicvf ptr to PF */ +#define NIC_MBOX_MSG_PNICVF_PTR 0x14 /* Get primary qset nicvf ptr */ +#define NIC_MBOX_MSG_SNICVF_PTR 0x15 /* Send sqet nicvf ptr to PVF */ +#define NIC_MBOX_MSG_LOOPBACK 0x16 /* Set interface in loopback */ +#define NIC_MBOX_MSG_CFG_DONE 0xF0 /* VF configuration done */ +#define NIC_MBOX_MSG_SHUTDOWN 0xF1 /* VF is being shutdown */ struct nic_cfg_msg { u8 msg; u8 vf_id; - u8 tns_mode; u8 node_id; + u8 tns_mode:1; + u8 sqs_mode:1; + u8 loopback_supported:1; u8 mac_addr[ETH_ALEN]; }; @@ -319,6 +363,7 @@ struct qs_cfg_msg { u8 msg; u8 num; + u8 sqs_count; u64 cfg; }; @@ -335,6 +380,7 @@ u8 msg; u8 qs_num; u8 sq_num; + bool sqs_mode; u64 cfg; }; @@ -394,6 +440,28 @@ u32 speed; }; +/* Get Extra Qset IDs */ +struct sqs_alloc { + u8 msg; + u8 vf_id; + u8 qs_count; +}; + +struct nicvf_ptr { + u8 msg; + u8 vf_id; + bool sqs_mode; + u8 sqs_id; + u64 nicvf; +}; + +/* Set interface in loopback mode */ +struct set_loopback { + u8 msg; + u8 vf_id; + bool enable; +}; + /* 128 bit shared memory between PF and each VF */ union nic_mbx { struct { u8 msg; } msg; @@ -408,6 +476,9 @@ struct rss_cfg_msg rss_cfg; struct bgx_stats_msg bgx_stats; struct bgx_link_status link_status; + struct sqs_alloc sqs_alloc; + struct nicvf_ptr nicvf; + struct set_loopback lbk; }; #define NIC_NODE_ID_MASK 0x03 --- linux-raspi2-4.2.0.orig/drivers/net/ethernet/cavium/thunder/nic_main.c +++ linux-raspi2-4.2.0/drivers/net/ethernet/cavium/thunder/nic_main.c @@ -28,6 +28,11 @@ u8 num_vf_en; /* No of VF enabled */ bool vf_enabled[MAX_NUM_VFS_SUPPORTED]; void __iomem *reg_base; /* Register start address */ + u8 num_sqs_en; /* Secondary qsets enabled */ + u64 nicvf[MAX_NUM_VFS_SUPPORTED]; + u8 vf_sqs[MAX_NUM_VFS_SUPPORTED][MAX_SQS_PER_VF]; + u8 pqs_vf[MAX_NUM_VFS_SUPPORTED]; + bool sqs_used[MAX_NUM_VFS_SUPPORTED]; struct pkind_cfg pkind; #define NIC_SET_VF_LMAC_MAP(bgx, lmac) (((bgx & 0xF) << 4) | (lmac & 0xF)) #define NIC_GET_BGX_FROM_VF_LMAC_MAP(map) ((map >> 4) & 0xF) @@ -139,14 +144,19 @@ mbx.nic_cfg.tns_mode = NIC_TNS_BYPASS_MODE; - bgx_idx = NIC_GET_BGX_FROM_VF_LMAC_MAP(nic->vf_lmac_map[vf]); - lmac = NIC_GET_LMAC_FROM_VF_LMAC_MAP(nic->vf_lmac_map[vf]); + if (vf < MAX_LMAC) { + bgx_idx = NIC_GET_BGX_FROM_VF_LMAC_MAP(nic->vf_lmac_map[vf]); + lmac = NIC_GET_LMAC_FROM_VF_LMAC_MAP(nic->vf_lmac_map[vf]); + + mac = bgx_get_lmac_mac(nic->node, bgx_idx, lmac); + if (mac) + ether_addr_copy((u8 *)&mbx.nic_cfg.mac_addr, mac); + } + mbx.nic_cfg.sqs_mode = (vf >= nic->num_vf_en) ? true : false; + mbx.nic_cfg.node_id = nic->node; - mac = bgx_get_lmac_mac(nic->node, bgx_idx, lmac); - if (mac) - ether_addr_copy((u8 *)&mbx.nic_cfg.mac_addr, mac); + mbx.nic_cfg.loopback_supported = vf < MAX_LMAC; - mbx.nic_cfg.node_id = nic->node; nic_send_msg_to_vf(nic, vf, &mbx); } @@ -329,6 +339,10 @@ /* Timer config */ nic_reg_write(nic, NIC_PF_INTR_TIMER_CFG, NICPF_CLK_PER_INT_TICK); + + /* Enable VLAN ethertype matching and stripping */ + nic_reg_write(nic, NIC_PF_RX_ETYPE_0_7, + (2 << 19) | (ETYPE_ALG_VLAN_STRIP << 16) | ETH_P_8021Q); } /* Channel parse index configuration */ @@ -429,6 +443,12 @@ qset = cfg->vf_id; for (; rssi < (rssi_base + cfg->tbl_len); rssi++) { + u8 svf = cfg->ind_tbl[idx] >> 3; + + if (svf) + qset = nic->vf_sqs[cfg->vf_id][svf - 1]; + else + qset = cfg->vf_id; nic_reg_write(nic, NIC_PF_RSSI_0_4097_RQ | (rssi << 3), (qset << 3) | (cfg->ind_tbl[idx] & 0x7)); idx++; @@ -452,19 +472,31 @@ * VNIC6-SQ0 -> TL4(528) -> TL3[132] -> TL2[33] -> TL1[1] -> BGX1 * VNIC7-SQ0 -> TL4(536) -> TL3[134] -> TL2[33] -> TL1[1] -> BGX1 */ -static void nic_tx_channel_cfg(struct nicpf *nic, u8 vnic, u8 sq_idx) +static void nic_tx_channel_cfg(struct nicpf *nic, u8 vnic, + struct sq_cfg_msg *sq) { u32 bgx, lmac, chan; u32 tl2, tl3, tl4; u32 rr_quantum; + u8 sq_idx = sq->sq_num; + u8 pqs_vnic; + + if (sq->sqs_mode) + pqs_vnic = nic->pqs_vf[vnic]; + else + pqs_vnic = vnic; + + bgx = NIC_GET_BGX_FROM_VF_LMAC_MAP(nic->vf_lmac_map[pqs_vnic]); + lmac = NIC_GET_LMAC_FROM_VF_LMAC_MAP(nic->vf_lmac_map[pqs_vnic]); - bgx = NIC_GET_BGX_FROM_VF_LMAC_MAP(nic->vf_lmac_map[vnic]); - lmac = NIC_GET_LMAC_FROM_VF_LMAC_MAP(nic->vf_lmac_map[vnic]); /* 24 bytes for FCS, IPG and preamble */ rr_quantum = ((NIC_HW_MAX_FRS + 24) / 4); tl4 = (lmac * NIC_TL4_PER_LMAC) + (bgx * NIC_TL4_PER_BGX); tl4 += sq_idx; + if (sq->sqs_mode) + tl4 += vnic * 8; + tl3 = tl4 / (NIC_MAX_TL4 / NIC_MAX_TL3); nic_reg_write(nic, NIC_PF_QSET_0_127_SQ_0_7_CFG2 | ((u64)vnic << NIC_QS_ID_SHIFT) | @@ -485,6 +517,86 @@ nic_reg_write(nic, NIC_PF_TL2_0_63_PRI | (tl2 << 3), 0x00); } +/* Send primary nicvf pointer to secondary QS's VF */ +static void nic_send_pnicvf(struct nicpf *nic, int sqs) +{ + union nic_mbx mbx = {}; + + mbx.nicvf.msg = NIC_MBOX_MSG_PNICVF_PTR; + mbx.nicvf.nicvf = nic->nicvf[nic->pqs_vf[sqs]]; + nic_send_msg_to_vf(nic, sqs, &mbx); +} + +/* Send SQS's nicvf pointer to primary QS's VF */ +static void nic_send_snicvf(struct nicpf *nic, struct nicvf_ptr *nicvf) +{ + union nic_mbx mbx = {}; + int sqs_id = nic->vf_sqs[nicvf->vf_id][nicvf->sqs_id]; + + mbx.nicvf.msg = NIC_MBOX_MSG_SNICVF_PTR; + mbx.nicvf.sqs_id = nicvf->sqs_id; + mbx.nicvf.nicvf = nic->nicvf[sqs_id]; + nic_send_msg_to_vf(nic, nicvf->vf_id, &mbx); +} + +/* Find next available Qset that can be assigned as a + * secondary Qset to a VF. + */ +static int nic_nxt_avail_sqs(struct nicpf *nic) +{ + int sqs; + + for (sqs = 0; sqs < nic->num_sqs_en; sqs++) { + if (!nic->sqs_used[sqs]) + nic->sqs_used[sqs] = true; + else + continue; + return sqs + nic->num_vf_en; + } + return -1; +} + +/* Allocate additional Qsets for requested VF */ +static void nic_alloc_sqs(struct nicpf *nic, struct sqs_alloc *sqs) +{ + union nic_mbx mbx = {}; + int idx, alloc_qs = 0; + int sqs_id; + + if (!nic->num_sqs_en) + goto send_mbox; + + for (idx = 0; idx < sqs->qs_count; idx++) { + sqs_id = nic_nxt_avail_sqs(nic); + if (sqs_id < 0) + break; + nic->vf_sqs[sqs->vf_id][idx] = sqs_id; + nic->pqs_vf[sqs_id] = sqs->vf_id; + alloc_qs++; + } + +send_mbox: + mbx.sqs_alloc.msg = NIC_MBOX_MSG_ALLOC_SQS; + mbx.sqs_alloc.vf_id = sqs->vf_id; + mbx.sqs_alloc.qs_count = alloc_qs; + nic_send_msg_to_vf(nic, sqs->vf_id, &mbx); +} + +static int nic_config_loopback(struct nicpf *nic, struct set_loopback *lbk) +{ + int bgx_idx, lmac_idx; + + if (lbk->vf_id > MAX_LMAC) + return -1; + + bgx_idx = NIC_GET_BGX_FROM_VF_LMAC_MAP(nic->vf_lmac_map[lbk->vf_id]); + lmac_idx = NIC_GET_LMAC_FROM_VF_LMAC_MAP(nic->vf_lmac_map[lbk->vf_id]); + + bgx_lmac_internal_loopback(nic->node, bgx_idx, lmac_idx, lbk->enable); + + return 0; +} + /* Interrupt handler to handle mailbox messages from VFs */ static void nic_handle_mbx_intr(struct nicpf *nic, int vf) { @@ -492,6 +604,7 @@ u64 *mbx_data; u64 mbx_addr; u64 reg_addr; + u64 cfg; int bgx, lmac; int i; int ret = 0; @@ -512,15 +625,24 @@ switch (mbx.msg.msg) { case NIC_MBOX_MSG_READY: nic_mbx_send_ready(nic, vf); - nic->link[vf] = 0; - nic->duplex[vf] = 0; - nic->speed[vf] = 0; + if (vf < MAX_LMAC) { + nic->link[vf] = 0; + nic->duplex[vf] = 0; + nic->speed[vf] = 0; + } ret = 1; break; case NIC_MBOX_MSG_QS_CFG: reg_addr = NIC_PF_QSET_0_127_CFG | (mbx.qs.num << NIC_QS_ID_SHIFT); - nic_reg_write(nic, reg_addr, mbx.qs.cfg); + cfg = mbx.qs.cfg; + /* Check if its a secondary Qset */ + if (vf >= nic->num_vf_en) { + cfg = cfg & (~0x7FULL); + /* Assign this Qset to primary Qset's VF */ + cfg |= nic->pqs_vf[vf]; + } + nic_reg_write(nic, reg_addr, cfg); break; case NIC_MBOX_MSG_RQ_CFG: reg_addr = NIC_PF_QSET_0_127_RQ_0_7_CFG | @@ -548,9 +670,11 @@ (mbx.sq.qs_num << NIC_QS_ID_SHIFT) | (mbx.sq.sq_num << NIC_Q_NUM_SHIFT); nic_reg_write(nic, reg_addr, mbx.sq.cfg); - nic_tx_channel_cfg(nic, mbx.qs.num, mbx.sq.sq_num); + nic_tx_channel_cfg(nic, mbx.qs.num, &mbx.sq); break; case NIC_MBOX_MSG_SET_MAC: + if (vf >= nic->num_vf_en) + break; lmac = mbx.mac.vf_id; bgx = NIC_GET_BGX_FROM_VF_LMAC_MAP(nic->vf_lmac_map[lmac]); lmac = NIC_GET_LMAC_FROM_VF_LMAC_MAP(nic->vf_lmac_map[lmac]); @@ -577,10 +701,28 @@ case NIC_MBOX_MSG_SHUTDOWN: /* First msg in VF teardown sequence */ nic->vf_enabled[vf] = false; + if (vf >= nic->num_vf_en) + nic->sqs_used[vf - nic->num_vf_en] = false; + nic->pqs_vf[vf] = 0; break; + case NIC_MBOX_MSG_ALLOC_SQS: + nic_alloc_sqs(nic, &mbx.sqs_alloc); + goto unlock; + case NIC_MBOX_MSG_NICVF_PTR: + nic->nicvf[vf] = mbx.nicvf.nicvf; + break; + case NIC_MBOX_MSG_PNICVF_PTR: + nic_send_pnicvf(nic, vf); + goto unlock; + case NIC_MBOX_MSG_SNICVF_PTR: + nic_send_snicvf(nic, &mbx.nicvf); + goto unlock; case NIC_MBOX_MSG_BGX_STATS: nic_get_bgx_stats(nic, &mbx.bgx_stats); goto unlock; + case NIC_MBOX_MSG_LOOPBACK: + ret = nic_config_loopback(nic, &mbx.lbk); + break; default: dev_err(&nic->pdev->dev, "Invalid msg from VF%d, msg 0x%x\n", vf, mbx.msg.msg); @@ -606,8 +748,7 @@ if (intr & (1ULL << vf)) { dev_dbg(&nic->pdev->dev, "Intr from VF %d\n", vf + (mbx * vf_per_mbx_reg)); - if ((vf + (mbx * vf_per_mbx_reg)) > nic->num_vf_en) - break; + nic_handle_mbx_intr(nic, vf + (mbx * vf_per_mbx_reg)); nic_clear_mbx_intr(nic, vf, mbx); } @@ -713,9 +854,24 @@ nic_disable_msix(nic); } +static int nic_num_sqs_en(struct nicpf *nic, int vf_en) +{ + int pos, sqs_per_vf = MAX_SQS_PER_VF_SINGLE_NODE; + u16 total_vf; + + /* Check if its a multi-node environment */ + if (nr_node_ids > 1) + sqs_per_vf = MAX_SQS_PER_VF; + + pos = pci_find_ext_capability(nic->pdev, PCI_EXT_CAP_ID_SRIOV); + pci_read_config_word(nic->pdev, (pos + PCI_SRIOV_TOTAL_VF), &total_vf); + return min(total_vf - vf_en, vf_en * sqs_per_vf); +} + static int nic_sriov_init(struct pci_dev *pdev, struct nicpf *nic) { int pos = 0; + int vf_en; int err; u16 total_vf_cnt; @@ -732,16 +888,20 @@ if (!total_vf_cnt) return 0; - err = pci_enable_sriov(pdev, nic->num_vf_en); + vf_en = nic->num_vf_en; + nic->num_sqs_en = nic_num_sqs_en(nic, nic->num_vf_en); + vf_en += nic->num_sqs_en; + + err = pci_enable_sriov(pdev, vf_en); if (err) { dev_err(&pdev->dev, "SRIOV enable failed, num VF is %d\n", - nic->num_vf_en); + vf_en); nic->num_vf_en = 0; return err; } dev_info(&pdev->dev, "SRIOV enabled, number of VF available %d\n", - nic->num_vf_en); + vf_en); nic->flags |= NIC_SRIOV_ENABLED; return 0; --- linux-raspi2-4.2.0.orig/drivers/net/ethernet/cavium/thunder/nicvf_ethtool.c +++ linux-raspi2-4.2.0/drivers/net/ethernet/cavium/thunder/nicvf_ethtool.c @@ -35,10 +35,10 @@ } static const struct nicvf_stat nicvf_hw_stats[] = { - NICVF_HW_STAT(rx_bytes_ok), - NICVF_HW_STAT(rx_ucast_frames_ok), - NICVF_HW_STAT(rx_bcast_frames_ok), - NICVF_HW_STAT(rx_mcast_frames_ok), + NICVF_HW_STAT(rx_bytes), + NICVF_HW_STAT(rx_ucast_frames), + NICVF_HW_STAT(rx_bcast_frames), + NICVF_HW_STAT(rx_mcast_frames), NICVF_HW_STAT(rx_fcs_errors), NICVF_HW_STAT(rx_l2_errors), NICVF_HW_STAT(rx_drop_red), @@ -49,6 +49,30 @@ NICVF_HW_STAT(rx_drop_mcast), NICVF_HW_STAT(rx_drop_l3_bcast), NICVF_HW_STAT(rx_drop_l3_mcast), + NICVF_HW_STAT(rx_bgx_truncated_pkts), + NICVF_HW_STAT(rx_jabber_errs), + NICVF_HW_STAT(rx_fcs_errs), + NICVF_HW_STAT(rx_bgx_errs), + NICVF_HW_STAT(rx_prel2_errs), + NICVF_HW_STAT(rx_l2_hdr_malformed), + NICVF_HW_STAT(rx_oversize), + NICVF_HW_STAT(rx_undersize), + NICVF_HW_STAT(rx_l2_len_mismatch), + NICVF_HW_STAT(rx_l2_pclp), + NICVF_HW_STAT(rx_ip_ver_errs), + NICVF_HW_STAT(rx_ip_csum_errs), + NICVF_HW_STAT(rx_ip_hdr_malformed), + NICVF_HW_STAT(rx_ip_payload_malformed), + NICVF_HW_STAT(rx_ip_ttl_errs), + NICVF_HW_STAT(rx_l3_pclp), + NICVF_HW_STAT(rx_l4_malformed), + NICVF_HW_STAT(rx_l4_csum_errs), + NICVF_HW_STAT(rx_udp_len_errs), + NICVF_HW_STAT(rx_l4_port_errs), + NICVF_HW_STAT(rx_tcp_flag_errs), + NICVF_HW_STAT(rx_tcp_offset_errs), + NICVF_HW_STAT(rx_l4_pclp), + NICVF_HW_STAT(rx_truncated_pkts), NICVF_HW_STAT(tx_bytes_ok), NICVF_HW_STAT(tx_ucast_frames_ok), NICVF_HW_STAT(tx_bcast_frames_ok), @@ -125,10 +149,33 @@ nic->msg_enable = lvl; } +static void nicvf_get_qset_strings(struct nicvf *nic, u8 **data, int qset) +{ + int stats, qidx; + int start_qidx = qset * MAX_RCV_QUEUES_PER_QS; + + for (qidx = 0; qidx < nic->qs->rq_cnt; qidx++) { + for (stats = 0; stats < nicvf_n_queue_stats; stats++) { + sprintf(*data, "rxq%d: %s", qidx + start_qidx, + nicvf_queue_stats[stats].name); + *data += ETH_GSTRING_LEN; + } + } + + for (qidx = 0; qidx < nic->qs->sq_cnt; qidx++) { + for (stats = 0; stats < nicvf_n_queue_stats; stats++) { + sprintf(*data, "txq%d: %s", qidx + start_qidx, + nicvf_queue_stats[stats].name); + *data += ETH_GSTRING_LEN; + } + } +} + static void nicvf_get_strings(struct net_device *netdev, u32 sset, u8 *data) { struct nicvf *nic = netdev_priv(netdev); - int stats, qidx; + int stats; + int sqs; if (sset != ETH_SS_STATS) return; @@ -143,20 +190,12 @@ data += ETH_GSTRING_LEN; } - for (qidx = 0; qidx < nic->qs->rq_cnt; qidx++) { - for (stats = 0; stats < nicvf_n_queue_stats; stats++) { - sprintf(data, "rxq%d: %s", qidx, - nicvf_queue_stats[stats].name); - data += ETH_GSTRING_LEN; - } - } + nicvf_get_qset_strings(nic, &data, 0); - for (qidx = 0; qidx < nic->qs->sq_cnt; qidx++) { - for (stats = 0; stats < nicvf_n_queue_stats; stats++) { - sprintf(data, "txq%d: %s", qidx, - nicvf_queue_stats[stats].name); - data += ETH_GSTRING_LEN; - } + for (sqs = 0; sqs < nic->sqs_count; sqs++) { + if (!nic->snicvf[sqs]) + continue; + nicvf_get_qset_strings(nic->snicvf[sqs], &data, sqs + 1); } for (stats = 0; stats < BGX_RX_STATS_COUNT; stats++) { @@ -173,21 +212,58 @@ static int nicvf_get_sset_count(struct net_device *netdev, int sset) { struct nicvf *nic = netdev_priv(netdev); + int qstats_count; + int sqs; if (sset != ETH_SS_STATS) return -EINVAL; + qstats_count = nicvf_n_queue_stats * + (nic->qs->rq_cnt + nic->qs->sq_cnt); + for (sqs = 0; sqs < nic->sqs_count; sqs++) { + struct nicvf *snic; + + snic = nic->snicvf[sqs]; + if (!snic) + continue; + qstats_count += nicvf_n_queue_stats * + (snic->qs->rq_cnt + snic->qs->sq_cnt); + } + return nicvf_n_hw_stats + nicvf_n_drv_stats + - (nicvf_n_queue_stats * - (nic->qs->rq_cnt + nic->qs->sq_cnt)) + + qstats_count + BGX_RX_STATS_COUNT + BGX_TX_STATS_COUNT; } +static void nicvf_get_qset_stats(struct nicvf *nic, + struct ethtool_stats *stats, u64 **data) +{ + int stat, qidx; + + if (!nic) + return; + + for (qidx = 0; qidx < nic->qs->rq_cnt; qidx++) { + nicvf_update_rq_stats(nic, qidx); + for (stat = 0; stat < nicvf_n_queue_stats; stat++) + *((*data)++) = ((u64 *)&nic->qs->rq[qidx].stats) + [nicvf_queue_stats[stat].index]; + } + + for (qidx = 0; qidx < nic->qs->sq_cnt; qidx++) { + nicvf_update_sq_stats(nic, qidx); + for (stat = 0; stat < nicvf_n_queue_stats; stat++) + *((*data)++) = ((u64 *)&nic->qs->sq[qidx].stats) + [nicvf_queue_stats[stat].index]; + } +} + static void nicvf_get_ethtool_stats(struct net_device *netdev, struct ethtool_stats *stats, u64 *data) { struct nicvf *nic = netdev_priv(netdev); - int stat, qidx; + int stat; + int sqs; nicvf_update_stats(nic); @@ -195,22 +271,18 @@ nicvf_update_lmac_stats(nic); for (stat = 0; stat < nicvf_n_hw_stats; stat++) - *(data++) = ((u64 *)&nic->stats) + *(data++) = ((u64 *)&nic->hw_stats) [nicvf_hw_stats[stat].index]; for (stat = 0; stat < nicvf_n_drv_stats; stat++) *(data++) = ((u64 *)&nic->drv_stats) [nicvf_drv_stats[stat].index]; - for (qidx = 0; qidx < nic->qs->rq_cnt; qidx++) { - for (stat = 0; stat < nicvf_n_queue_stats; stat++) - *(data++) = ((u64 *)&nic->qs->rq[qidx].stats) - [nicvf_queue_stats[stat].index]; - } + nicvf_get_qset_stats(nic, stats, &data); - for (qidx = 0; qidx < nic->qs->sq_cnt; qidx++) { - for (stat = 0; stat < nicvf_n_queue_stats; stat++) - *(data++) = ((u64 *)&nic->qs->sq[qidx].stats) - [nicvf_queue_stats[stat].index]; + for (sqs = 0; sqs < nic->sqs_count; sqs++) { + if (!nic->snicvf[sqs]) + continue; + nicvf_get_qset_stats(nic->snicvf[sqs], stats, &data); } for (stat = 0; stat < BGX_RX_STATS_COUNT; stat++) @@ -369,7 +441,7 @@ switch (info->cmd) { case ETHTOOL_GRXRINGS: - info->data = nic->qs->rq_cnt; + info->data = nic->rx_queues; ret = 0; break; case ETHTOOL_GRXFH: @@ -501,17 +573,15 @@ struct nicvf_rss_info *rss = &nic->rss_info; int idx; - if ((nic->qs->rq_cnt <= 1) || (nic->cpi_alg != CPI_ALG_NONE)) { - rss->enable = false; - rss->hash_bits = 0; - return -EIO; - } - - /* We do not allow change in unsupported parameters */ if (hfunc != ETH_RSS_HASH_NO_CHANGE && hfunc != ETH_RSS_HASH_TOP) return -EOPNOTSUPP; - rss->enable = true; + if (!rss->enable) { + netdev_err(nic->netdev, + "RSS is disabled, cannot change settings\n"); + return -EIO; + } + if (indir) { for (idx = 0; idx < rss->rss_size; idx++) rss->ind_tbl[idx] = indir[idx]; @@ -534,11 +604,11 @@ memset(channel, 0, sizeof(*channel)); - channel->max_rx = MAX_RCV_QUEUES_PER_QS; - channel->max_tx = MAX_SND_QUEUES_PER_QS; + channel->max_rx = nic->max_queues; + channel->max_tx = nic->max_queues; - channel->rx_count = nic->qs->rq_cnt; - channel->tx_count = nic->qs->sq_cnt; + channel->rx_count = nic->rx_queues; + channel->tx_count = nic->tx_queues; } /* Set no of Tx, Rx queues to be used */ @@ -548,22 +618,34 @@ struct nicvf *nic = netdev_priv(dev); int err = 0; bool if_up = netif_running(dev); + int cqcount; if (!channel->rx_count || !channel->tx_count) return -EINVAL; - if (channel->rx_count > MAX_RCV_QUEUES_PER_QS) + if (channel->rx_count > nic->max_queues) return -EINVAL; - if (channel->tx_count > MAX_SND_QUEUES_PER_QS) + if (channel->tx_count > nic->max_queues) return -EINVAL; if (if_up) nicvf_stop(dev); - nic->qs->rq_cnt = channel->rx_count; - nic->qs->sq_cnt = channel->tx_count; + cqcount = max(channel->rx_count, channel->tx_count); + + if (cqcount > MAX_CMP_QUEUES_PER_QS) { + nic->sqs_count = roundup(cqcount, MAX_CMP_QUEUES_PER_QS); + nic->sqs_count = (nic->sqs_count / MAX_CMP_QUEUES_PER_QS) - 1; + } else { + nic->sqs_count = 0; + } + + nic->qs->rq_cnt = min_t(u32, channel->rx_count, MAX_RCV_QUEUES_PER_QS); + nic->qs->sq_cnt = min_t(u32, channel->tx_count, MAX_SND_QUEUES_PER_QS); nic->qs->cq_cnt = max(nic->qs->rq_cnt, nic->qs->sq_cnt); - err = nicvf_set_real_num_queues(dev, nic->qs->sq_cnt, nic->qs->rq_cnt); + nic->rx_queues = channel->rx_count; + nic->tx_queues = channel->tx_count; + err = nicvf_set_real_num_queues(dev, nic->tx_queues, nic->rx_queues); if (err) return err; @@ -571,7 +653,7 @@ nicvf_open(dev); netdev_info(dev, "Setting num Tx rings to %d, Rx rings to %d success\n", - nic->qs->sq_cnt, nic->qs->rq_cnt); + nic->tx_queues, nic->rx_queues); return err; } --- linux-raspi2-4.2.0.orig/drivers/net/ethernet/cavium/thunder/nicvf_main.c +++ linux-raspi2-4.2.0/drivers/net/ethernet/cavium/thunder/nicvf_main.c @@ -10,6 +10,7 @@ #include #include #include +#include #include #include #include @@ -50,6 +51,14 @@ MODULE_PARM_DESC(cpi_alg, "PFC algorithm (0=none, 1=VLAN, 2=VLAN16, 3=IP Diffserv)"); +static inline u8 nicvf_netdev_qidx(struct nicvf *nic, u8 qidx) +{ + if (nic->sqs_mode) + return qidx + ((nic->sqs_id + 1) * MAX_CMP_QUEUES_PER_QS); + else + return qidx; +} + static inline void nicvf_set_rx_frame_cnt(struct nicvf *nic, struct sk_buff *skb) { @@ -105,7 +114,6 @@ } /* VF -> PF mailbox communication */ - static void nicvf_write_to_mbx(struct nicvf *nic, union nic_mbx *mbx) { u64 *msg = (u64 *)mbx; @@ -147,26 +155,15 @@ */ static int nicvf_check_pf_ready(struct nicvf *nic) { - int timeout = 5000, sleep = 20; union nic_mbx mbx = {}; mbx.msg.msg = NIC_MBOX_MSG_READY; - - nic->pf_ready_to_rcv_msg = false; - - nicvf_write_to_mbx(nic, &mbx); - - while (!nic->pf_ready_to_rcv_msg) { - msleep(sleep); - if (nic->pf_ready_to_rcv_msg) - break; - timeout -= sleep; - if (!timeout) { - netdev_err(nic->netdev, - "PF didn't respond to READY msg\n"); - return 0; - } + if (nicvf_send_msg_to_pf(nic, &mbx)) { + netdev_err(nic->netdev, + "PF didn't respond to READY msg\n"); + return 0; } + return 1; } @@ -197,13 +194,15 @@ netdev_dbg(nic->netdev, "Mbox message: msg: 0x%x\n", mbx.msg.msg); switch (mbx.msg.msg) { case NIC_MBOX_MSG_READY: - nic->pf_ready_to_rcv_msg = true; + nic->pf_acked = true; nic->vf_id = mbx.nic_cfg.vf_id & 0x7F; nic->tns_mode = mbx.nic_cfg.tns_mode & 0x7F; nic->node = mbx.nic_cfg.node_id; if (!nic->set_mac_pending) ether_addr_copy(nic->netdev->dev_addr, mbx.nic_cfg.mac_addr); + nic->sqs_mode = mbx.nic_cfg.sqs_mode; + nic->loopback_supported = mbx.nic_cfg.loopback_supported; nic->link_up = false; nic->duplex = 0; nic->speed = 0; @@ -221,7 +220,6 @@ case NIC_MBOX_MSG_BGX_STATS: nicvf_read_bgx_stats(nic, &mbx.bgx_stats); nic->pf_acked = true; - nic->bgx_stats_acked = true; break; case NIC_MBOX_MSG_BGX_LINK_CHANGE: nic->pf_acked = true; @@ -242,6 +240,26 @@ netif_tx_stop_all_queues(nic->netdev); } break; + case NIC_MBOX_MSG_ALLOC_SQS: + nic->sqs_count = mbx.sqs_alloc.qs_count; + nic->pf_acked = true; + break; + case NIC_MBOX_MSG_SNICVF_PTR: + /* Primary VF: make note of secondary VF's pointer + * to be used while packet transmission. + */ + nic->snicvf[mbx.nicvf.sqs_id] = + (struct nicvf *)mbx.nicvf.nicvf; + nic->pf_acked = true; + break; + case NIC_MBOX_MSG_PNICVF_PTR: + /* Secondary VF/Qset: make note of primary VF's pointer + * to be used while packet reception, to handover packet + * to primary VF's netdev. + */ + nic->pnicvf = (struct nicvf *)mbx.nicvf.nicvf; + nic->pf_acked = true; + break; default: netdev_err(nic->netdev, "Invalid message from PF, msg 0x%x\n", mbx.msg.msg); @@ -326,7 +344,7 @@ nicvf_get_rss_size(nic); - if ((nic->qs->rq_cnt <= 1) || (cpi_alg != CPI_ALG_NONE)) { + if (cpi_alg != CPI_ALG_NONE) { rss->enable = false; rss->hash_bits = 0; return 0; @@ -350,11 +368,100 @@ for (idx = 0; idx < rss->rss_size; idx++) rss->ind_tbl[idx] = ethtool_rxfh_indir_default(idx, - nic->qs->rq_cnt); + nic->rx_queues); nicvf_config_rss(nic); return 1; } +/* Request PF to allocate additional Qsets */ +static void nicvf_request_sqs(struct nicvf *nic) +{ + union nic_mbx mbx = {}; + int sqs; + int sqs_count = nic->sqs_count; + int rx_queues = 0, tx_queues = 0; + + /* Only primary VF should request */ + if (nic->sqs_mode || !nic->sqs_count) + return; + + mbx.sqs_alloc.msg = NIC_MBOX_MSG_ALLOC_SQS; + mbx.sqs_alloc.vf_id = nic->vf_id; + mbx.sqs_alloc.qs_count = nic->sqs_count; + if (nicvf_send_msg_to_pf(nic, &mbx)) { + /* No response from PF */ + nic->sqs_count = 0; + return; + } + + /* Return if no Secondary Qsets available */ + if (!nic->sqs_count) + return; + + if (nic->rx_queues > MAX_RCV_QUEUES_PER_QS) + rx_queues = nic->rx_queues - MAX_RCV_QUEUES_PER_QS; + if (nic->tx_queues > MAX_SND_QUEUES_PER_QS) + tx_queues = nic->tx_queues - MAX_SND_QUEUES_PER_QS; + + /* Set no of Rx/Tx queues in each of the SQsets */ + for (sqs = 0; sqs < nic->sqs_count; sqs++) { + mbx.nicvf.msg = NIC_MBOX_MSG_SNICVF_PTR; + mbx.nicvf.vf_id = nic->vf_id; + mbx.nicvf.sqs_id = sqs; + nicvf_send_msg_to_pf(nic, &mbx); + + nic->snicvf[sqs]->sqs_id = sqs; + if (rx_queues > MAX_RCV_QUEUES_PER_QS) { + nic->snicvf[sqs]->qs->rq_cnt = MAX_RCV_QUEUES_PER_QS; + rx_queues -= MAX_RCV_QUEUES_PER_QS; + } else { + nic->snicvf[sqs]->qs->rq_cnt = rx_queues; + rx_queues = 0; + } + + if (tx_queues > MAX_SND_QUEUES_PER_QS) { + nic->snicvf[sqs]->qs->sq_cnt = MAX_SND_QUEUES_PER_QS; + tx_queues -= MAX_SND_QUEUES_PER_QS; + } else { + nic->snicvf[sqs]->qs->sq_cnt = tx_queues; + tx_queues = 0; + } + + nic->snicvf[sqs]->qs->cq_cnt = + max(nic->snicvf[sqs]->qs->rq_cnt, nic->snicvf[sqs]->qs->sq_cnt); + + /* Initialize secondary Qset's queues and its interrupts */ + nicvf_open(nic->snicvf[sqs]->netdev); + } + + /* Update stack with actual Rx/Tx queue count allocated */ + if (sqs_count != nic->sqs_count) + nicvf_set_real_num_queues(nic->netdev, + nic->tx_queues, nic->rx_queues); +} + +/* Send this Qset's nicvf pointer to PF. + * PF inturn sends primary VF's nicvf struct to secondary Qsets/VFs + * so that packets received by these Qsets can use primary VF's netdev + */ +static void nicvf_send_vf_struct(struct nicvf *nic) +{ + union nic_mbx mbx = {}; + + mbx.nicvf.msg = NIC_MBOX_MSG_NICVF_PTR; + mbx.nicvf.sqs_mode = nic->sqs_mode; + mbx.nicvf.nicvf = (u64)nic; + nicvf_send_msg_to_pf(nic, &mbx); +} + +static void nicvf_get_primary_vf_struct(struct nicvf *nic) +{ + union nic_mbx mbx = {}; + + mbx.nicvf.msg = NIC_MBOX_MSG_PNICVF_PTR; + nicvf_send_msg_to_pf(nic, &mbx); +} + int nicvf_set_real_num_queues(struct net_device *netdev, int tx_queues, int rx_queues) { @@ -429,6 +536,34 @@ } } +static inline void nicvf_set_rxhash(struct net_device *netdev, + struct cqe_rx_t *cqe_rx, + struct sk_buff *skb) +{ + u8 hash_type; + u32 hash; + + if (!(netdev->features & NETIF_F_RXHASH)) + return; + + switch (cqe_rx->rss_alg) { + case RSS_ALG_TCP_IP: + case RSS_ALG_UDP_IP: + hash_type = PKT_HASH_TYPE_L4; + hash = cqe_rx->rss_tag; + break; + case RSS_ALG_IP: + hash_type = PKT_HASH_TYPE_L3; + hash = cqe_rx->rss_tag; + break; + default: + hash_type = PKT_HASH_TYPE_NONE; + hash = 0; + } + + skb_set_hash(skb, hash, hash_type); +} + static void nicvf_rcv_pkt_handler(struct net_device *netdev, struct napi_struct *napi, struct cmp_queue *cq, @@ -437,6 +572,15 @@ struct sk_buff *skb; struct nicvf *nic = netdev_priv(netdev); int err = 0; + int rq_idx; + + rq_idx = nicvf_netdev_qidx(nic, cqe_rx->rq_idx); + + if (nic->sqs_mode) { + /* Use primary VF's 'nicvf' struct */ + nic = nic->pnicvf; + netdev = nic->netdev; + } /* Check for errors */ err = nicvf_check_cqe_rx_errs(nic, cq, cqe_rx); @@ -456,9 +600,17 @@ skb->data, skb->len, true); } + /* If error packet, drop it here */ + if (err) { + dev_kfree_skb_any(skb); + return; + } + nicvf_set_rx_frame_cnt(nic, skb); - skb_record_rx_queue(skb, cqe_rx->rq_idx); + nicvf_set_rxhash(netdev, cqe_rx, skb); + + skb_record_rx_queue(skb, rq_idx); if (netdev->hw_features & NETIF_F_RXCSUM) { /* HW by default verifies TCP/UDP/SCTP checksums */ skb->ip_summed = CHECKSUM_UNNECESSARY; @@ -468,6 +620,11 @@ skb->protocol = eth_type_trans(skb, netdev); + /* Check for stripped VLAN */ + if (cqe_rx->vlan_found && cqe_rx->vlan_stripped) + __vlan_hwaccel_put_tag(skb, htons(ETH_P_8021Q), + ntohs((__force __be16)cqe_rx->vlan_tci)); + if (napi && (netdev->features & NETIF_F_GRO)) napi_gro_receive(napi, skb); else @@ -549,8 +706,11 @@ done: /* Wakeup TXQ if its stopped earlier due to SQ full */ if (tx_done) { - txq = netdev_get_tx_queue(netdev, cq_idx); - if (netif_tx_queue_stopped(txq)) { + netdev = nic->pnicvf->netdev; + txq = netdev_get_tx_queue(netdev, + nicvf_netdev_qidx(nic, cq_idx)); + nic = nic->pnicvf; + if (netif_tx_queue_stopped(txq) && netif_carrier_ok(netdev)) { netif_tx_start_queue(txq); nic->drv_stats.txq_wake++; if (netif_msg_tx_err(nic)) @@ -624,11 +784,20 @@ nicvf_enable_intr(nic, NICVF_INTR_QS_ERR, 0); } +static void nicvf_dump_intr_status(struct nicvf *nic) +{ + if (netif_msg_intr(nic)) + netdev_info(nic->netdev, "%s: interrupt status 0x%llx\n", + nic->netdev->name, nicvf_reg_read(nic, NIC_VF_INT)); +} + static irqreturn_t nicvf_misc_intr_handler(int irq, void *nicvf_irq) { struct nicvf *nic = (struct nicvf *)nicvf_irq; u64 intr; + nicvf_dump_intr_status(nic); + intr = nicvf_reg_read(nic, NIC_VF_INT); /* Check for spurious interrupt */ if (!(intr & NICVF_INTR_MBOX_MASK)) @@ -639,59 +808,58 @@ return IRQ_HANDLED; } -static irqreturn_t nicvf_intr_handler(int irq, void *nicvf_irq) +static irqreturn_t nicvf_intr_handler(int irq, void *cq_irq) +{ + struct nicvf_cq_poll *cq_poll = (struct nicvf_cq_poll *)cq_irq; + struct nicvf *nic = cq_poll->nicvf; + int qidx = cq_poll->cq_idx; + + nicvf_dump_intr_status(nic); + + /* Disable interrupts */ + nicvf_disable_intr(nic, NICVF_INTR_CQ, qidx); + + /* Schedule NAPI */ + napi_schedule(&cq_poll->napi); + + /* Clear interrupt */ + nicvf_clear_intr(nic, NICVF_INTR_CQ, qidx); + + return IRQ_HANDLED; +} + +static irqreturn_t nicvf_rbdr_intr_handler(int irq, void *nicvf_irq) { - u64 qidx, intr, clear_intr = 0; - u64 cq_intr, rbdr_intr, qs_err_intr; struct nicvf *nic = (struct nicvf *)nicvf_irq; - struct queue_set *qs = nic->qs; - struct nicvf_cq_poll *cq_poll = NULL; + u8 qidx; - intr = nicvf_reg_read(nic, NIC_VF_INT); - if (netif_msg_intr(nic)) - netdev_info(nic->netdev, "%s: interrupt status 0x%llx\n", - nic->netdev->name, intr); - qs_err_intr = intr & NICVF_INTR_QS_ERR_MASK; - if (qs_err_intr) { - /* Disable Qset err interrupt and schedule softirq */ - nicvf_disable_intr(nic, NICVF_INTR_QS_ERR, 0); - tasklet_hi_schedule(&nic->qs_err_task); - clear_intr |= qs_err_intr; - } + nicvf_dump_intr_status(nic); - /* Disable interrupts and start polling */ - cq_intr = (intr & NICVF_INTR_CQ_MASK) >> NICVF_INTR_CQ_SHIFT; - for (qidx = 0; qidx < qs->cq_cnt; qidx++) { - if (!(cq_intr & (1 << qidx))) - continue; - if (!nicvf_is_intr_enabled(nic, NICVF_INTR_CQ, qidx)) + /* Disable RBDR interrupt and schedule softirq */ + for (qidx = 0; qidx < nic->qs->rbdr_cnt; qidx++) { + if (!nicvf_is_intr_enabled(nic, NICVF_INTR_RBDR, qidx)) continue; + nicvf_disable_intr(nic, NICVF_INTR_RBDR, qidx); + tasklet_hi_schedule(&nic->rbdr_task); + /* Clear interrupt */ + nicvf_clear_intr(nic, NICVF_INTR_RBDR, qidx); + } - nicvf_disable_intr(nic, NICVF_INTR_CQ, qidx); - clear_intr |= ((1 << qidx) << NICVF_INTR_CQ_SHIFT); + return IRQ_HANDLED; +} - cq_poll = nic->napi[qidx]; - /* Schedule NAPI */ - if (cq_poll) - napi_schedule(&cq_poll->napi); - } +static irqreturn_t nicvf_qs_err_intr_handler(int irq, void *nicvf_irq) +{ + struct nicvf *nic = (struct nicvf *)nicvf_irq; - /* Handle RBDR interrupts */ - rbdr_intr = (intr & NICVF_INTR_RBDR_MASK) >> NICVF_INTR_RBDR_SHIFT; - if (rbdr_intr) { - /* Disable RBDR interrupt and schedule softirq */ - for (qidx = 0; qidx < qs->rbdr_cnt; qidx++) { - if (!nicvf_is_intr_enabled(nic, NICVF_INTR_RBDR, qidx)) - continue; - nicvf_disable_intr(nic, NICVF_INTR_RBDR, qidx); - tasklet_hi_schedule(&nic->rbdr_task); - clear_intr |= ((1 << qidx) << NICVF_INTR_RBDR_SHIFT); - } - } + nicvf_dump_intr_status(nic); + + /* Disable Qset err interrupt and schedule softirq */ + nicvf_disable_intr(nic, NICVF_INTR_QS_ERR, 0); + tasklet_hi_schedule(&nic->qs_err_task); + nicvf_clear_intr(nic, NICVF_INTR_QS_ERR, 0); - /* Clear interrupts */ - nicvf_reg_write(nic, NIC_VF_INT, clear_intr); return IRQ_HANDLED; } @@ -725,7 +893,7 @@ static int nicvf_register_interrupts(struct nicvf *nic) { - int irq, free, ret = 0; + int irq, ret = 0; int vector; for_each_cq_irq(irq) @@ -740,44 +908,42 @@ sprintf(nic->irq_name[irq], "NICVF%d RBDR%d", nic->vf_id, irq - NICVF_INTR_ID_RBDR); - /* Register all interrupts except mailbox */ - for (irq = 0; irq < NICVF_INTR_ID_SQ; irq++) { + /* Register CQ interrupts */ + for (irq = 0; irq < nic->qs->cq_cnt; irq++) { vector = nic->msix_entries[irq].vector; ret = request_irq(vector, nicvf_intr_handler, - 0, nic->irq_name[irq], nic); + 0, nic->irq_name[irq], nic->napi[irq]); if (ret) - break; + goto err; nic->irq_allocated[irq] = true; } - for (irq = NICVF_INTR_ID_SQ; irq < NICVF_INTR_ID_MISC; irq++) { + /* Register RBDR interrupt */ + for (irq = NICVF_INTR_ID_RBDR; + irq < (NICVF_INTR_ID_RBDR + nic->qs->rbdr_cnt); irq++) { vector = nic->msix_entries[irq].vector; - ret = request_irq(vector, nicvf_intr_handler, + ret = request_irq(vector, nicvf_rbdr_intr_handler, 0, nic->irq_name[irq], nic); if (ret) - break; + goto err; nic->irq_allocated[irq] = true; } + /* Register QS error interrupt */ sprintf(nic->irq_name[NICVF_INTR_ID_QS_ERR], "NICVF%d Qset error", nic->vf_id); - if (!ret) { - vector = nic->msix_entries[NICVF_INTR_ID_QS_ERR].vector; - irq = NICVF_INTR_ID_QS_ERR; - ret = request_irq(vector, nicvf_intr_handler, - 0, nic->irq_name[irq], nic); - if (!ret) - nic->irq_allocated[irq] = true; - } + irq = NICVF_INTR_ID_QS_ERR; + ret = request_irq(nic->msix_entries[irq].vector, + nicvf_qs_err_intr_handler, + 0, nic->irq_name[irq], nic); + if (!ret) + nic->irq_allocated[irq] = true; - if (ret) { - netdev_err(nic->netdev, "Request irq failed\n"); - for (free = 0; free < irq; free++) - free_irq(nic->msix_entries[free].vector, nic); - return ret; - } +err: + if (ret) + netdev_err(nic->netdev, "request_irq failed, vector %d\n", irq); - return 0; + return ret; } static void nicvf_unregister_interrupts(struct nicvf *nic) @@ -786,8 +952,14 @@ /* Free registered interrupts */ for (irq = 0; irq < nic->num_vec; irq++) { - if (nic->irq_allocated[irq]) + if (!nic->irq_allocated[irq]) + continue; + + if (irq < NICVF_INTR_ID_SQ) + free_irq(nic->msix_entries[irq].vector, nic->napi[irq]); + else free_irq(nic->msix_entries[irq].vector, nic); + nic->irq_allocated[irq] = false; } @@ -852,13 +1024,26 @@ netdev_warn(netdev, "%s: Transmit ring full, stopping SQ%d\n", netdev->name, qid); - return NETDEV_TX_BUSY; } return NETDEV_TX_OK; } +static inline void nicvf_free_cq_poll(struct nicvf *nic) +{ + struct nicvf_cq_poll *cq_poll; + int qidx; + + for (qidx = 0; qidx < nic->qs->cq_cnt; qidx++) { + cq_poll = nic->napi[qidx]; + if (!cq_poll) + continue; + nic->napi[qidx] = NULL; + kfree(cq_poll); + } +} + int nicvf_stop(struct net_device *netdev) { int irq, qidx; @@ -871,6 +1056,17 @@ nicvf_send_msg_to_pf(nic, &mbx); netif_carrier_off(netdev); + netif_tx_stop_all_queues(nic->netdev); + + /* Teardown secondary qsets first */ + if (!nic->sqs_mode) { + for (qidx = 0; qidx < nic->sqs_count; qidx++) { + if (!nic->snicvf[qidx]) + continue; + nicvf_stop(nic->snicvf[qidx]->netdev); + nic->snicvf[qidx] = NULL; + } + } /* Disable RBDR & QS error interrupts */ for (qidx = 0; qidx < qs->rbdr_cnt; qidx++) { @@ -893,7 +1089,6 @@ cq_poll = nic->napi[qidx]; if (!cq_poll) continue; - nic->napi[qidx] = NULL; napi_synchronize(&cq_poll->napi); /* CQ intr is enabled while napi_complete, * so disable it now @@ -902,7 +1097,6 @@ nicvf_clear_intr(nic, NICVF_INTR_CQ, qidx); napi_disable(&cq_poll->napi); netif_napi_del(&cq_poll->napi); - kfree(cq_poll); } netif_tx_disable(netdev); @@ -918,6 +1112,12 @@ nicvf_unregister_interrupts(nic); + nicvf_free_cq_poll(nic); + + /* Clear multiqset info */ + nic->pnicvf = nic; + nic->sqs_count = 0; + return 0; } @@ -944,6 +1144,7 @@ goto napi_del; } cq_poll->cq_idx = qidx; + cq_poll->nicvf = nic; netif_napi_add(netdev, &cq_poll->napi, nicvf_poll, NAPI_POLL_WEIGHT); napi_enable(&cq_poll->napi); @@ -972,10 +1173,16 @@ /* Configure CPI alorithm */ nic->cpi_alg = cpi_alg; - nicvf_config_cpi(nic); + if (!nic->sqs_mode) + nicvf_config_cpi(nic); + + nicvf_request_sqs(nic); + if (nic->sqs_mode) + nicvf_get_primary_vf_struct(nic); /* Configure receive side scaling */ - nicvf_rss_init(nic); + if (!nic->sqs_mode) + nicvf_rss_init(nic); err = nicvf_register_interrupts(nic); if (err) @@ -1011,6 +1218,8 @@ cleanup: nicvf_disable_intr(nic, NICVF_INTR_MBOX, 0); nicvf_unregister_interrupts(nic); + tasklet_kill(&nic->qs_err_task); + tasklet_kill(&nic->rbdr_task); napi_del: for (qidx = 0; qidx < qs->cq_cnt; qidx++) { cq_poll = nic->napi[qidx]; @@ -1018,9 +1227,8 @@ continue; napi_disable(&cq_poll->napi); netif_napi_del(&cq_poll->napi); - kfree(cq_poll); - nic->napi[qidx] = NULL; } + nicvf_free_cq_poll(nic); return err; } @@ -1077,7 +1285,6 @@ { int stat = 0; union nic_mbx mbx = {}; - int timeout; if (!netif_running(nic->netdev)) return; @@ -1087,14 +1294,9 @@ /* Rx stats */ mbx.bgx_stats.rx = 1; while (stat < BGX_RX_STATS_COUNT) { - nic->bgx_stats_acked = 0; mbx.bgx_stats.idx = stat; - nicvf_send_msg_to_pf(nic, &mbx); - timeout = 0; - while ((!nic->bgx_stats_acked) && (timeout < 10)) { - msleep(2); - timeout++; - } + if (nicvf_send_msg_to_pf(nic, &mbx)) + return; stat++; } @@ -1103,14 +1305,9 @@ /* Tx stats */ mbx.bgx_stats.rx = 0; while (stat < BGX_TX_STATS_COUNT) { - nic->bgx_stats_acked = 0; mbx.bgx_stats.idx = stat; - nicvf_send_msg_to_pf(nic, &mbx); - timeout = 0; - while ((!nic->bgx_stats_acked) && (timeout < 10)) { - msleep(2); - timeout++; - } + if (nicvf_send_msg_to_pf(nic, &mbx)) + return; stat++; } } @@ -1118,7 +1315,7 @@ void nicvf_update_stats(struct nicvf *nic) { int qidx; - struct nicvf_hw_stats *stats = &nic->stats; + struct nicvf_hw_stats *stats = &nic->hw_stats; struct nicvf_drv_stats *drv_stats = &nic->drv_stats; struct queue_set *qs = nic->qs; @@ -1127,14 +1324,16 @@ #define GET_TX_STATS(reg) \ nicvf_reg_read(nic, NIC_VNIC_TX_STAT_0_4 | (reg << 3)) - stats->rx_bytes_ok = GET_RX_STATS(RX_OCTS); - stats->rx_ucast_frames_ok = GET_RX_STATS(RX_UCAST); - stats->rx_bcast_frames_ok = GET_RX_STATS(RX_BCAST); - stats->rx_mcast_frames_ok = GET_RX_STATS(RX_MCAST); + stats->rx_bytes = GET_RX_STATS(RX_OCTS); + stats->rx_ucast_frames = GET_RX_STATS(RX_UCAST); + stats->rx_bcast_frames = GET_RX_STATS(RX_BCAST); + stats->rx_mcast_frames = GET_RX_STATS(RX_MCAST); stats->rx_fcs_errors = GET_RX_STATS(RX_FCS); stats->rx_l2_errors = GET_RX_STATS(RX_L2ERR); stats->rx_drop_red = GET_RX_STATS(RX_RED); + stats->rx_drop_red_bytes = GET_RX_STATS(RX_RED_OCTS); stats->rx_drop_overrun = GET_RX_STATS(RX_ORUN); + stats->rx_drop_overrun_bytes = GET_RX_STATS(RX_ORUN_OCTS); stats->rx_drop_bcast = GET_RX_STATS(RX_DRP_BCAST); stats->rx_drop_mcast = GET_RX_STATS(RX_DRP_MCAST); stats->rx_drop_l3_bcast = GET_RX_STATS(RX_DRP_L3BCAST); @@ -1146,9 +1345,6 @@ stats->tx_mcast_frames_ok = GET_TX_STATS(TX_MCAST); stats->tx_drops = GET_TX_STATS(TX_DROP); - drv_stats->rx_frames_ok = stats->rx_ucast_frames_ok + - stats->rx_bcast_frames_ok + - stats->rx_mcast_frames_ok; drv_stats->tx_frames_ok = stats->tx_ucast_frames_ok + stats->tx_bcast_frames_ok + stats->tx_mcast_frames_ok; @@ -1167,14 +1363,15 @@ struct rtnl_link_stats64 *stats) { struct nicvf *nic = netdev_priv(netdev); - struct nicvf_hw_stats *hw_stats = &nic->stats; + struct nicvf_hw_stats *hw_stats = &nic->hw_stats; struct nicvf_drv_stats *drv_stats = &nic->drv_stats; nicvf_update_stats(nic); - stats->rx_bytes = hw_stats->rx_bytes_ok; + stats->rx_bytes = hw_stats->rx_bytes; stats->rx_packets = drv_stats->rx_frames_ok; stats->rx_dropped = drv_stats->rx_drops; + stats->multicast = hw_stats->rx_mcast_frames; stats->tx_bytes = hw_stats->tx_bytes_ok; stats->tx_packets = drv_stats->tx_frames_ok; @@ -1208,6 +1405,45 @@ nic->netdev->trans_start = jiffies; } +static int nicvf_config_loopback(struct nicvf *nic, + netdev_features_t features) +{ + union nic_mbx mbx = {}; + + mbx.lbk.msg = NIC_MBOX_MSG_LOOPBACK; + mbx.lbk.vf_id = nic->vf_id; + mbx.lbk.enable = (features & NETIF_F_LOOPBACK) != 0; + + return nicvf_send_msg_to_pf(nic, &mbx); +} + +static netdev_features_t nicvf_fix_features(struct net_device *netdev, + netdev_features_t features) +{ + struct nicvf *nic = netdev_priv(netdev); + + if ((features & NETIF_F_LOOPBACK) && + netif_running(netdev) && !nic->loopback_supported) + features &= ~NETIF_F_LOOPBACK; + + return features; +} + +static int nicvf_set_features(struct net_device *netdev, + netdev_features_t features) +{ + struct nicvf *nic = netdev_priv(netdev); + netdev_features_t changed = features ^ netdev->features; + + if (changed & NETIF_F_HW_VLAN_CTAG_RX) + nicvf_config_vlan_stripping(nic, features); + + if ((changed & NETIF_F_LOOPBACK) && netif_running(netdev)) + return nicvf_config_loopback(nic, features); + + return 0; +} + static const struct net_device_ops nicvf_netdev_ops = { .ndo_open = nicvf_open, .ndo_stop = nicvf_stop, @@ -1216,6 +1452,8 @@ .ndo_set_mac_address = nicvf_set_mac_address, .ndo_get_stats64 = nicvf_get_stats64, .ndo_tx_timeout = nicvf_tx_timeout, + .ndo_fix_features = nicvf_fix_features, + .ndo_set_features = nicvf_set_features, }; static int nicvf_probe(struct pci_dev *pdev, const struct pci_device_id *ent) @@ -1223,8 +1461,7 @@ struct device *dev = &pdev->dev; struct net_device *netdev; struct nicvf *nic; - struct queue_set *qs; - int err; + int err, qcount; err = pci_enable_device(pdev); if (err) { @@ -1250,9 +1487,17 @@ goto err_release_regions; } - netdev = alloc_etherdev_mqs(sizeof(struct nicvf), - MAX_RCV_QUEUES_PER_QS, - MAX_SND_QUEUES_PER_QS); + qcount = MAX_CMP_QUEUES_PER_QS; + + /* Restrict multiqset support only for host bound VFs */ + if (pdev->is_virtfn) { + /* Set max number of queues per VF */ + qcount = roundup(num_online_cpus(), MAX_CMP_QUEUES_PER_QS); + qcount = min(qcount, + (MAX_SQS_PER_VF + 1) * MAX_CMP_QUEUES_PER_QS); + } + + netdev = alloc_etherdev_mqs(sizeof(struct nicvf), qcount, qcount); if (!netdev) { err = -ENOMEM; goto err_release_regions; @@ -1265,6 +1510,8 @@ nic = netdev_priv(netdev); nic->netdev = netdev; nic->pdev = pdev; + nic->pnicvf = nic; + nic->max_queues = qcount; /* MAP VF's configuration registers */ nic->reg_base = pcim_iomap(pdev, PCI_CFG_REG_BAR_NUM, 0); @@ -1278,20 +1525,31 @@ if (err) goto err_free_netdev; - qs = nic->qs; - - err = nicvf_set_real_num_queues(netdev, qs->sq_cnt, qs->rq_cnt); - if (err) - goto err_free_netdev; - /* Check if PF is alive and get MAC address for this VF */ err = nicvf_register_misc_interrupt(nic); if (err) goto err_free_netdev; - netdev->features |= (NETIF_F_RXCSUM | NETIF_F_IP_CSUM | NETIF_F_SG | - NETIF_F_TSO | NETIF_F_GRO); - netdev->hw_features = netdev->features; + nicvf_send_vf_struct(nic); + + /* Check if this VF is in QS only mode */ + if (nic->sqs_mode) + return 0; + + err = nicvf_set_real_num_queues(netdev, nic->tx_queues, nic->rx_queues); + if (err) + goto err_unregister_interrupts; + + netdev->hw_features = (NETIF_F_RXCSUM | NETIF_F_IP_CSUM | NETIF_F_SG | + NETIF_F_TSO | NETIF_F_GRO | + NETIF_F_HW_VLAN_CTAG_RX); + + netdev->hw_features |= NETIF_F_RXHASH; + + netdev->features |= netdev->hw_features; + netdev->hw_features |= NETIF_F_LOOPBACK; + + netdev->vlan_features = NETIF_F_SG | NETIF_F_IP_CSUM | NETIF_F_TSO; netdev->netdev_ops = &nicvf_netdev_ops; netdev->watchdog_timeo = NICVF_TX_TIMEOUT; @@ -1325,9 +1583,20 @@ static void nicvf_remove(struct pci_dev *pdev) { struct net_device *netdev = pci_get_drvdata(pdev); - struct nicvf *nic = netdev_priv(netdev); + struct nicvf *nic; + struct net_device *pnetdev; + + if (!netdev) + return; + + nic = netdev_priv(netdev); + pnetdev = nic->pnicvf->netdev; - unregister_netdev(netdev); + /* Check if this Qset is assigned to different VF. + * If yes, clean primary and all secondary Qsets. + */ + if (pnetdev && (pnetdev->reg_state == NETREG_REGISTERED)) + unregister_netdev(pnetdev); nicvf_unregister_interrupts(nic); pci_set_drvdata(pdev, NULL); free_netdev(netdev); --- linux-raspi2-4.2.0.orig/drivers/net/ethernet/cavium/thunder/nicvf_queues.c +++ linux-raspi2-4.2.0/drivers/net/ethernet/cavium/thunder/nicvf_queues.c @@ -475,6 +475,27 @@ return; } +void nicvf_config_vlan_stripping(struct nicvf *nic, netdev_features_t features) +{ + u64 rq_cfg; + int sqs; + + rq_cfg = nicvf_queue_reg_read(nic, NIC_QSET_RQ_GEN_CFG, 0); + + /* Enable first VLAN stripping */ + if (features & NETIF_F_HW_VLAN_CTAG_RX) + rq_cfg |= (1ULL << 25); + else + rq_cfg &= ~(1ULL << 25); + nicvf_queue_reg_write(nic, NIC_QSET_RQ_GEN_CFG, 0, rq_cfg); + + /* Configure Secondary Qsets, if any */ + for (sqs = 0; sqs < nic->sqs_count; sqs++) + if (nic->snicvf[sqs]) + nicvf_queue_reg_write(nic->snicvf[sqs], + NIC_QSET_RQ_GEN_CFG, 0, rq_cfg); +} + /* Configures receive queue */ static void nicvf_rcv_queue_config(struct nicvf *nic, struct queue_set *qs, int qidx, bool enable) @@ -524,7 +545,9 @@ mbx.rq.cfg = (1ULL << 62) | (RQ_CQ_DROP << 8); nicvf_send_msg_to_pf(nic, &mbx); - nicvf_queue_reg_write(nic, NIC_QSET_RQ_GEN_CFG, qidx, 0x00); + nicvf_queue_reg_write(nic, NIC_QSET_RQ_GEN_CFG, 0, 0x00); + if (!nic->sqs_mode) + nicvf_config_vlan_stripping(nic, nic->netdev->features); /* Enable Receive queue */ rq_cfg.ena = 1; @@ -598,6 +621,7 @@ mbx.sq.msg = NIC_MBOX_MSG_SQ_CFG; mbx.sq.qs_num = qs->vnic_id; mbx.sq.sq_num = qidx; + mbx.sq.sqs_mode = nic->sqs_mode; mbx.sq.cfg = (sq->cq_qs << 3) | sq->cq_idx; nicvf_send_msg_to_pf(nic, &mbx); @@ -679,6 +703,7 @@ /* Send a mailbox msg to PF to config Qset */ mbx.qs.msg = NIC_MBOX_MSG_QS_CFG; mbx.qs.num = qs->vnic_id; + mbx.qs.sqs_count = nic->sqs_count; mbx.qs.cfg = 0; qs_cfg = (struct qs_cfg *)&mbx.qs.cfg; @@ -759,6 +784,10 @@ qs->rbdr_len = RCV_BUF_COUNT; qs->sq_len = SND_QUEUE_LEN; qs->cq_len = CMP_QUEUE_LEN; + + nic->rx_queues = qs->rq_cnt; + nic->tx_queues = qs->sq_cnt; + return 0; } @@ -961,9 +990,6 @@ /* Offload checksum calculation to HW */ if (skb->ip_summed == CHECKSUM_PARTIAL) { - if (skb->protocol != htons(ETH_P_IP)) - return; - hdr->csum_l3 = 1; /* Enable IP csum calculation */ hdr->l3_offset = skb_network_offset(skb); hdr->l4_offset = skb_transport_offset(skb); @@ -1005,7 +1031,7 @@ * them to SQ for transfer */ static int nicvf_sq_append_tso(struct nicvf *nic, struct snd_queue *sq, - int qentry, struct sk_buff *skb) + int sq_num, int qentry, struct sk_buff *skb) { struct tso_t tso; int seg_subdescs = 0, desc_cnt = 0; @@ -1065,7 +1091,7 @@ /* Inform HW to xmit all TSO segments */ nicvf_queue_reg_write(nic, NIC_QSET_SQ_0_7_DOOR, - skb_get_queue_mapping(skb), desc_cnt); + sq_num, desc_cnt); nic->drv_stats.tx_tso++; return 1; } @@ -1076,10 +1102,24 @@ int i, size; int subdesc_cnt; int sq_num, qentry; - struct queue_set *qs = nic->qs; + struct queue_set *qs; struct snd_queue *sq; sq_num = skb_get_queue_mapping(skb); + if (sq_num >= MAX_SND_QUEUES_PER_QS) { + /* Get secondary Qset's SQ structure */ + i = sq_num / MAX_SND_QUEUES_PER_QS; + if (!nic->snicvf[i - 1]) { + netdev_warn(nic->netdev, + "Secondary Qset#%d's ptr not initialized\n", + i - 1); + return 1; + } + nic = (struct nicvf *)nic->snicvf[i - 1]; + sq_num = sq_num % MAX_SND_QUEUES_PER_QS; + } + + qs = nic->qs; sq = &qs->sq[sq_num]; subdesc_cnt = nicvf_sq_subdesc_required(nic, skb); @@ -1090,7 +1130,7 @@ /* Check if its a TSO packet */ if (skb_shinfo(skb)->gso_size) - return nicvf_sq_append_tso(nic, sq, qentry, skb); + return nicvf_sq_append_tso(nic, sq, sq_num, qentry, skb); /* Add SQ header subdesc */ nicvf_sq_add_hdr_subdesc(sq, qentry, subdesc_cnt - 1, skb, skb->len); @@ -1126,6 +1166,8 @@ return 1; append_fail: + /* Use original PCI dev for debug log */ + nic = nic->pnicvf; netdev_dbg(nic->netdev, "Not enough SQ descriptors to xmit pkt\n"); return 0; } @@ -1371,10 +1413,11 @@ int nicvf_check_cqe_rx_errs(struct nicvf *nic, struct cmp_queue *cq, struct cqe_rx_t *cqe_rx) { - struct cmp_queue_stats *stats = &cq->stats; + struct nicvf_hw_stats *stats = &nic->hw_stats; + struct nicvf_drv_stats *drv_stats = &nic->drv_stats; if (!cqe_rx->err_level && !cqe_rx->err_opcode) { - stats->rx.errop.good++; + drv_stats->rx_frames_ok++; return 0; } @@ -1384,111 +1427,78 @@ nic->netdev->name, cqe_rx->err_level, cqe_rx->err_opcode); - switch (cqe_rx->err_level) { - case CQ_ERRLVL_MAC: - stats->rx.errlvl.mac_errs++; - break; - case CQ_ERRLVL_L2: - stats->rx.errlvl.l2_errs++; - break; - case CQ_ERRLVL_L3: - stats->rx.errlvl.l3_errs++; - break; - case CQ_ERRLVL_L4: - stats->rx.errlvl.l4_errs++; - break; - } - switch (cqe_rx->err_opcode) { case CQ_RX_ERROP_RE_PARTIAL: - stats->rx.errop.partial_pkts++; + stats->rx_bgx_truncated_pkts++; break; case CQ_RX_ERROP_RE_JABBER: - stats->rx.errop.jabber_errs++; + stats->rx_jabber_errs++; break; case CQ_RX_ERROP_RE_FCS: - stats->rx.errop.fcs_errs++; - break; - case CQ_RX_ERROP_RE_TERMINATE: - stats->rx.errop.terminate_errs++; + stats->rx_fcs_errs++; break; case CQ_RX_ERROP_RE_RX_CTL: - stats->rx.errop.bgx_rx_errs++; + stats->rx_bgx_errs++; break; case CQ_RX_ERROP_PREL2_ERR: - stats->rx.errop.prel2_errs++; - break; - case CQ_RX_ERROP_L2_FRAGMENT: - stats->rx.errop.l2_frags++; - break; - case CQ_RX_ERROP_L2_OVERRUN: - stats->rx.errop.l2_overruns++; - break; - case CQ_RX_ERROP_L2_PFCS: - stats->rx.errop.l2_pfcs++; - break; - case CQ_RX_ERROP_L2_PUNY: - stats->rx.errop.l2_puny++; + stats->rx_prel2_errs++; break; case CQ_RX_ERROP_L2_MAL: - stats->rx.errop.l2_hdr_malformed++; + stats->rx_l2_hdr_malformed++; break; case CQ_RX_ERROP_L2_OVERSIZE: - stats->rx.errop.l2_oversize++; + stats->rx_oversize++; break; case CQ_RX_ERROP_L2_UNDERSIZE: - stats->rx.errop.l2_undersize++; + stats->rx_undersize++; break; case CQ_RX_ERROP_L2_LENMISM: - stats->rx.errop.l2_len_mismatch++; + stats->rx_l2_len_mismatch++; break; case CQ_RX_ERROP_L2_PCLP: - stats->rx.errop.l2_pclp++; + stats->rx_l2_pclp++; break; case CQ_RX_ERROP_IP_NOT: - stats->rx.errop.non_ip++; + stats->rx_ip_ver_errs++; break; case CQ_RX_ERROP_IP_CSUM_ERR: - stats->rx.errop.ip_csum_err++; + stats->rx_ip_csum_errs++; break; case CQ_RX_ERROP_IP_MAL: - stats->rx.errop.ip_hdr_malformed++; + stats->rx_ip_hdr_malformed++; break; case CQ_RX_ERROP_IP_MALD: - stats->rx.errop.ip_payload_malformed++; + stats->rx_ip_payload_malformed++; break; case CQ_RX_ERROP_IP_HOP: - stats->rx.errop.ip_hop_errs++; - break; - case CQ_RX_ERROP_L3_ICRC: - stats->rx.errop.l3_icrc_errs++; + stats->rx_ip_ttl_errs++; break; case CQ_RX_ERROP_L3_PCLP: - stats->rx.errop.l3_pclp++; + stats->rx_l3_pclp++; break; case CQ_RX_ERROP_L4_MAL: - stats->rx.errop.l4_malformed++; + stats->rx_l4_malformed++; break; case CQ_RX_ERROP_L4_CHK: - stats->rx.errop.l4_csum_errs++; + stats->rx_l4_csum_errs++; break; case CQ_RX_ERROP_UDP_LEN: - stats->rx.errop.udp_len_err++; + stats->rx_udp_len_errs++; break; case CQ_RX_ERROP_L4_PORT: - stats->rx.errop.bad_l4_port++; + stats->rx_l4_port_errs++; break; case CQ_RX_ERROP_TCP_FLAG: - stats->rx.errop.bad_tcp_flag++; + stats->rx_tcp_flag_errs++; break; case CQ_RX_ERROP_TCP_OFFSET: - stats->rx.errop.tcp_offset_errs++; + stats->rx_tcp_offset_errs++; break; case CQ_RX_ERROP_L4_PCLP: - stats->rx.errop.l4_pclp++; + stats->rx_l4_pclp++; break; case CQ_RX_ERROP_RBDR_TRUNC: - stats->rx.errop.pkt_truncated++; + stats->rx_truncated_pkts++; break; } --- linux-raspi2-4.2.0.orig/drivers/net/ethernet/cavium/thunder/nicvf_queues.h +++ linux-raspi2-4.2.0/drivers/net/ethernet/cavium/thunder/nicvf_queues.h @@ -181,47 +181,6 @@ }; struct cmp_queue_stats { - struct rx_stats { - struct { - u64 mac_errs; - u64 l2_errs; - u64 l3_errs; - u64 l4_errs; - } errlvl; - struct { - u64 good; - u64 partial_pkts; - u64 jabber_errs; - u64 fcs_errs; - u64 terminate_errs; - u64 bgx_rx_errs; - u64 prel2_errs; - u64 l2_frags; - u64 l2_overruns; - u64 l2_pfcs; - u64 l2_puny; - u64 l2_hdr_malformed; - u64 l2_oversize; - u64 l2_undersize; - u64 l2_len_mismatch; - u64 l2_pclp; - u64 non_ip; - u64 ip_csum_err; - u64 ip_hdr_malformed; - u64 ip_payload_malformed; - u64 ip_hop_errs; - u64 l3_icrc_errs; - u64 l3_pclp; - u64 l4_malformed; - u64 l4_csum_errs; - u64 udp_len_err; - u64 bad_l4_port; - u64 bad_tcp_flag; - u64 tcp_offset_errs; - u64 l4_pclp; - u64 pkt_truncated; - } errop; - } rx; struct tx_stats { u64 good; u64 desc_fault; @@ -292,6 +251,7 @@ void *desc; struct q_desc_mem dmem; struct cmp_queue_stats stats; + int irq; } ____cacheline_aligned_in_smp; struct snd_queue { @@ -347,6 +307,8 @@ #define CQ_ERR_MASK (CQ_WR_FULL | CQ_WR_DISABLE | CQ_WR_FAULT) +void nicvf_config_vlan_stripping(struct nicvf *nic, + netdev_features_t features); int nicvf_set_qset_resources(struct nicvf *nic); int nicvf_config_data_transfer(struct nicvf *nic, bool enable); void nicvf_qset_config(struct nicvf *nic, bool enable); --- linux-raspi2-4.2.0.orig/drivers/net/ethernet/cavium/thunder/thunder_bgx.c +++ linux-raspi2-4.2.0/drivers/net/ethernet/cavium/thunder/thunder_bgx.c @@ -6,6 +6,7 @@ * as published by the Free Software Foundation. */ +#include #include #include #include @@ -26,7 +27,7 @@ struct lmac { struct bgx *bgx; int dmac; - unsigned char mac[ETH_ALEN]; + u8 mac[ETH_ALEN]; bool link_up; int lmacid; /* ID within BGX */ int lmacid_bd; /* ID on board */ @@ -328,6 +329,37 @@ } } +/* Configure BGX LMAC in internal loopback mode */ +void bgx_lmac_internal_loopback(int node, int bgx_idx, + int lmac_idx, bool enable) +{ + struct bgx *bgx; + struct lmac *lmac; + u64 cfg; + + bgx = bgx_vnic[(node * MAX_BGX_PER_CN88XX) + bgx_idx]; + if (!bgx) + return; + + lmac = &bgx->lmac[lmac_idx]; + if (lmac->is_sgmii) { + cfg = bgx_reg_read(bgx, lmac_idx, BGX_GMP_PCS_MRX_CTL); + if (enable) + cfg |= PCS_MRX_CTL_LOOPBACK1; + else + cfg &= ~PCS_MRX_CTL_LOOPBACK1; + bgx_reg_write(bgx, lmac_idx, BGX_GMP_PCS_MRX_CTL, cfg); + } else { + cfg = bgx_reg_read(bgx, lmac_idx, BGX_SPUX_CONTROL1); + if (enable) + cfg |= SPU_CTL_LOOPBACK; + else + cfg &= ~SPU_CTL_LOOPBACK; + bgx_reg_write(bgx, lmac_idx, BGX_SPUX_CONTROL1, cfg); + } +} +EXPORT_SYMBOL(bgx_lmac_internal_loopback); + static int bgx_lmac_sgmii_init(struct bgx *bgx, int lmacid) { u64 cfg; @@ -835,18 +867,108 @@ } } -static void bgx_init_of(struct bgx *bgx, struct device_node *np) +#ifdef CONFIG_ACPI + +static int acpi_get_mac_address(struct acpi_device *adev, u8 *dst) +{ + u8 mac[ETH_ALEN]; + int ret; + + ret = fwnode_property_read_u8_array(acpi_fwnode_handle(adev), + "mac-address", mac, ETH_ALEN); + if (ret) + goto out; + + if (!is_valid_ether_addr(mac)) { + ret = -EINVAL; + goto out; + } + + memcpy(dst, mac, ETH_ALEN); +out: + return ret; +} + +/* Currently only sets the MAC address. */ +static acpi_status bgx_acpi_register_phy(acpi_handle handle, + u32 lvl, void *context, void **rv) +{ + struct bgx *bgx = context; + struct acpi_device *adev; + + if (acpi_bus_get_device(handle, &adev)) + goto out; + + acpi_get_mac_address(adev, bgx->lmac[bgx->lmac_count].mac); + + SET_NETDEV_DEV(&bgx->lmac[bgx->lmac_count].netdev, &bgx->pdev->dev); + + bgx->lmac[bgx->lmac_count].lmacid = bgx->lmac_count; +out: + bgx->lmac_count++; + return AE_OK; +} + +static acpi_status bgx_acpi_match_id(acpi_handle handle, u32 lvl, + void *context, void **ret_val) +{ + struct acpi_buffer string = { ACPI_ALLOCATE_BUFFER, NULL }; + struct bgx *bgx = context; + char bgx_sel[5]; + + snprintf(bgx_sel, 5, "BGX%d", bgx->bgx_id); + if (ACPI_FAILURE(acpi_get_name(handle, ACPI_SINGLE_NAME, &string))) { + pr_warn("Invalid link device\n"); + return AE_OK; + } + + if (strncmp(string.pointer, bgx_sel, 4)) + return AE_OK; + + acpi_walk_namespace(ACPI_TYPE_DEVICE, handle, 1, + bgx_acpi_register_phy, NULL, bgx, NULL); + + kfree(string.pointer); + return AE_CTRL_TERMINATE; +} + +static int bgx_init_acpi_phy(struct bgx *bgx) +{ + acpi_get_devices(NULL, bgx_acpi_match_id, bgx, (void **)NULL); + return 0; +} + +#else + +static int bgx_init_acpi_phy(struct bgx *bgx) +{ + return -ENODEV; +} + +#endif /* CONFIG_ACPI */ + +#if IS_ENABLED(CONFIG_OF_MDIO) + +static int bgx_init_of_phy(struct bgx *bgx) { + struct device_node *np; struct device_node *np_child; u8 lmac = 0; + char bgx_sel[5]; + const char *mac; - for_each_child_of_node(np, np_child) { - struct device_node *phy_np; - const char *mac; + /* Get BGX node from DT */ + snprintf(bgx_sel, 5, "bgx%d", bgx->bgx_id); + np = of_find_node_by_name(NULL, bgx_sel); + if (!np) + return -ENODEV; - phy_np = of_parse_phandle(np_child, "phy-handle", 0); - if (phy_np) - bgx->lmac[lmac].phydev = of_phy_find_device(phy_np); + for_each_child_of_node(np, np_child) { + struct device_node *phy_np = of_parse_phandle(np_child, + "phy-handle", 0); + if (!phy_np) + continue; + bgx->lmac[lmac].phydev = of_phy_find_device(phy_np); mac = of_get_mac_address(np_child); if (mac) @@ -858,6 +980,24 @@ if (lmac == MAX_LMAC_PER_BGX) break; } + return 0; +} + +#else + +static int bgx_init_of_phy(struct bgx *bgx) +{ + return -ENODEV; +} + +#endif /* CONFIG_OF_MDIO */ + +static int bgx_init_phy(struct bgx *bgx) +{ + if (!acpi_disabled) + return bgx_init_acpi_phy(bgx); + + return bgx_init_of_phy(bgx); } static int bgx_probe(struct pci_dev *pdev, const struct pci_device_id *ent) @@ -865,8 +1005,6 @@ int err; struct device *dev = &pdev->dev; struct bgx *bgx = NULL; - struct device_node *np; - char bgx_sel[5]; u8 lmac; bgx = devm_kzalloc(dev, sizeof(*bgx), GFP_KERNEL); @@ -902,10 +1040,9 @@ bgx_vnic[bgx->bgx_id] = bgx; bgx_get_qlm_mode(bgx); - snprintf(bgx_sel, 5, "bgx%d", bgx->bgx_id); - np = of_find_node_by_name(NULL, bgx_sel); - if (np) - bgx_init_of(bgx, np); + err = bgx_init_phy(bgx); + if (err) + goto err_enable; bgx_init_hw(bgx); --- linux-raspi2-4.2.0.orig/drivers/net/ethernet/cavium/thunder/thunder_bgx.h +++ linux-raspi2-4.2.0/drivers/net/ethernet/cavium/thunder/thunder_bgx.h @@ -72,6 +72,7 @@ #define BGX_SPUX_CONTROL1 0x10000 #define SPU_CTL_LOW_POWER BIT_ULL(11) +#define SPU_CTL_LOOPBACK BIT_ULL(14) #define SPU_CTL_RESET BIT_ULL(15) #define BGX_SPUX_STATUS1 0x10008 #define SPU_STATUS1_RCV_LNK BIT_ULL(2) @@ -126,6 +127,7 @@ #define PCS_MRX_CTL_RST_AN BIT_ULL(9) #define PCS_MRX_CTL_PWR_DN BIT_ULL(11) #define PCS_MRX_CTL_AN_EN BIT_ULL(12) +#define PCS_MRX_CTL_LOOPBACK1 BIT_ULL(14) #define PCS_MRX_CTL_RESET BIT_ULL(15) #define BGX_GMP_PCS_MRX_STATUS 0x30008 #define PCS_MRX_STATUS_AN_CPT BIT_ULL(5) @@ -186,6 +188,8 @@ const u8 *bgx_get_lmac_mac(int node, int bgx_idx, int lmacid); void bgx_set_lmac_mac(int node, int bgx_idx, int lmacid, const u8 *mac); void bgx_get_lmac_link_state(int node, int bgx_idx, int lmacid, void *status); +void bgx_lmac_internal_loopback(int node, int bgx_idx, + int lmac_idx, bool enable); u64 bgx_get_rx_stats(int node, int bgx_idx, int lmac, int idx); u64 bgx_get_tx_stats(int node, int bgx_idx, int lmac, int idx); #define BGX_RX_STATS_COUNT 11 --- linux-raspi2-4.2.0.orig/drivers/net/ethernet/cisco/enic/enic_clsf.c +++ linux-raspi2-4.2.0/drivers/net/ethernet/cisco/enic/enic_clsf.c @@ -177,7 +177,7 @@ int res, i; enic = netdev_priv(dev); - res = skb_flow_dissect_flow_keys(skb, &keys); + res = skb_flow_dissect_flow_keys(skb, &keys, 0); if (!res || keys.basic.n_proto != htons(ETH_P_IP) || (keys.basic.ip_proto != IPPROTO_TCP && keys.basic.ip_proto != IPPROTO_UDP)) --- linux-raspi2-4.2.0.orig/drivers/net/ethernet/freescale/fec_main.c +++ linux-raspi2-4.2.0/drivers/net/ethernet/freescale/fec_main.c @@ -1402,6 +1402,7 @@ if ((status & BD_ENET_RX_LAST) == 0) netdev_err(ndev, "rcv is not +last\n"); + writel(FEC_ENET_RXF, fep->hwp + FEC_IEVENT); /* Check for errors. */ if (status & (BD_ENET_RX_LG | BD_ENET_RX_SH | BD_ENET_RX_NO | @@ -1774,7 +1775,7 @@ int ret = 0; ret = pm_runtime_get_sync(dev); - if (IS_ERR_VALUE(ret)) + if (ret < 0) return ret; fep->mii_timeout = 0; @@ -1810,11 +1811,13 @@ struct fec_enet_private *fep = bus->priv; struct device *dev = &fep->pdev->dev; unsigned long time_left; - int ret = 0; + int ret; ret = pm_runtime_get_sync(dev); - if (IS_ERR_VALUE(ret)) + if (ret < 0) return ret; + else + ret = 0; fep->mii_timeout = 0; reinit_completion(&fep->mdio_done); @@ -2865,7 +2868,7 @@ int ret; ret = pm_runtime_get_sync(&fep->pdev->dev); - if (IS_ERR_VALUE(ret)) + if (ret < 0) return ret; pinctrl_pm_select_default_state(&fep->pdev->dev); --- linux-raspi2-4.2.0.orig/drivers/net/ethernet/freescale/gianfar.c +++ linux-raspi2-4.2.0/drivers/net/ethernet/freescale/gianfar.c @@ -928,7 +928,8 @@ FSL_GIANFAR_DEV_HAS_VLAN | FSL_GIANFAR_DEV_HAS_MAGIC_PACKET | FSL_GIANFAR_DEV_HAS_EXTENDED_HASH | - FSL_GIANFAR_DEV_HAS_TIMER; + FSL_GIANFAR_DEV_HAS_TIMER | + FSL_GIANFAR_DEV_HAS_RX_FILER; err = of_property_read_string(np, "phy-connection-type", &ctype); @@ -1431,8 +1432,9 @@ priv->rx_queue[i]->rxic = DEFAULT_RXIC; } - /* always enable rx filer */ - priv->rx_filer_enable = 1; + /* Always enable rx filer if available */ + priv->rx_filer_enable = + (priv->device_flags & FSL_GIANFAR_DEV_HAS_RX_FILER) ? 1 : 0; /* Enable most messages by default */ priv->msg_enable = (NETIF_MSG_IFUP << 1 ) - 1; /* use pritority h/w tx queue scheduling for single queue devices */ --- linux-raspi2-4.2.0.orig/drivers/net/ethernet/freescale/gianfar.h +++ linux-raspi2-4.2.0/drivers/net/ethernet/freescale/gianfar.h @@ -917,6 +917,7 @@ #define FSL_GIANFAR_DEV_HAS_BD_STASHING 0x00000200 #define FSL_GIANFAR_DEV_HAS_BUF_STASHING 0x00000400 #define FSL_GIANFAR_DEV_HAS_TIMER 0x00000800 +#define FSL_GIANFAR_DEV_HAS_RX_FILER 0x00002000 #if (MAXGROUPS == 2) #define DEFAULT_MAPPING 0xAA --- linux-raspi2-4.2.0.orig/drivers/net/ethernet/ibm/emac/core.h +++ linux-raspi2-4.2.0/drivers/net/ethernet/ibm/emac/core.h @@ -460,8 +460,8 @@ u32 index; }; -#define EMAC_ETHTOOL_REGS_VER 0 -#define EMAC4_ETHTOOL_REGS_VER 1 -#define EMAC4SYNC_ETHTOOL_REGS_VER 2 +#define EMAC_ETHTOOL_REGS_VER 3 +#define EMAC4_ETHTOOL_REGS_VER 4 +#define EMAC4SYNC_ETHTOOL_REGS_VER 5 #endif /* __IBM_NEWEMAC_CORE_H */ --- linux-raspi2-4.2.0.orig/drivers/net/ethernet/intel/e1000e/netdev.c +++ linux-raspi2-4.2.0/drivers/net/ethernet/intel/e1000e/netdev.c @@ -4280,18 +4280,29 @@ struct e1000_adapter *adapter = container_of(cc, struct e1000_adapter, cc); struct e1000_hw *hw = &adapter->hw; + u32 systimel_1, systimel_2, systimeh; cycle_t systim, systim_next; - /* SYSTIMH latching upon SYSTIML read does not work well. To fix that - * we don't want to allow overflow of SYSTIML and a change to SYSTIMH - * to occur between reads, so if we read a vale close to overflow, we - * wait for overflow to occur and read both registers when its safe. + /* SYSTIMH latching upon SYSTIML read does not work well. + * This means that if SYSTIML overflows after we read it but before + * we read SYSTIMH, the value of SYSTIMH has been incremented and we + * will experience a huge non linear increment in the systime value + * to fix that we test for overflow and if true, we re-read systime. */ - u32 systim_overflow_latch_fix = 0x3FFFFFFF; - - do { - systim = (cycle_t)er32(SYSTIML); - } while (systim > systim_overflow_latch_fix); - systim |= (cycle_t)er32(SYSTIMH) << 32; + systimel_1 = er32(SYSTIML); + systimeh = er32(SYSTIMH); + systimel_2 = er32(SYSTIML); + /* Check for overflow. If there was no overflow, use the values */ + if (systimel_1 < systimel_2) { + systim = (cycle_t)systimel_1; + systim |= (cycle_t)systimeh << 32; + } else { + /* There was an overflow, read again SYSTIMH, and use + * systimel_2 + */ + systimeh = er32(SYSTIMH); + systim = (cycle_t)systimel_2; + systim |= (cycle_t)systimeh << 32; + } if ((hw->mac.type == e1000_82574) || (hw->mac.type == e1000_82583)) { u64 incvalue, time_delta, rem, temp; --- linux-raspi2-4.2.0.orig/drivers/net/ethernet/intel/igb/igb.h +++ linux-raspi2-4.2.0/drivers/net/ethernet/intel/igb/igb.h @@ -540,6 +540,7 @@ struct sk_buff *skb); int igb_ptp_set_ts_config(struct net_device *netdev, struct ifreq *ifr); int igb_ptp_get_ts_config(struct net_device *netdev, struct ifreq *ifr); +void igb_set_flag_queue_pairs(struct igb_adapter *, const u32); #ifdef CONFIG_IGB_HWMON void igb_sysfs_exit(struct igb_adapter *adapter); int igb_sysfs_init(struct igb_adapter *adapter); --- linux-raspi2-4.2.0.orig/drivers/net/ethernet/intel/igb/igb_ethtool.c +++ linux-raspi2-4.2.0/drivers/net/ethernet/intel/igb/igb_ethtool.c @@ -2991,6 +2991,7 @@ { struct igb_adapter *adapter = netdev_priv(netdev); unsigned int count = ch->combined_count; + unsigned int max_combined = 0; /* Verify they are not requesting separate vectors */ if (!count || ch->rx_count || ch->tx_count) @@ -3001,11 +3002,13 @@ return -EINVAL; /* Verify the number of channels doesn't exceed hw limits */ - if (count > igb_max_channels(adapter)) + max_combined = igb_max_channels(adapter); + if (count > max_combined) return -EINVAL; if (count != adapter->rss_queues) { adapter->rss_queues = count; + igb_set_flag_queue_pairs(adapter, max_combined); /* Hardware has to reinitialize queues and interrupts to * match the new configuration. --- linux-raspi2-4.2.0.orig/drivers/net/ethernet/intel/igb/igb_main.c +++ linux-raspi2-4.2.0/drivers/net/ethernet/intel/igb/igb_main.c @@ -1205,10 +1205,14 @@ /* allocate q_vector and rings */ q_vector = adapter->q_vector[v_idx]; - if (!q_vector) + if (!q_vector) { q_vector = kzalloc(size, GFP_KERNEL); - else + } else if (size > ksize(q_vector)) { + kfree_rcu(q_vector, rcu); + q_vector = kzalloc(size, GFP_KERNEL); + } else { memset(q_vector, 0, size); + } if (!q_vector) return -ENOMEM; @@ -2847,7 +2851,7 @@ return; pci_sriov_set_totalvfs(pdev, 7); - igb_pci_enable_sriov(pdev, max_vfs); + igb_enable_sriov(pdev, max_vfs); #endif /* CONFIG_PCI_IOV */ } @@ -2888,6 +2892,14 @@ adapter->rss_queues = min_t(u32, max_rss_queues, num_online_cpus()); + igb_set_flag_queue_pairs(adapter, max_rss_queues); +} + +void igb_set_flag_queue_pairs(struct igb_adapter *adapter, + const u32 max_rss_queues) +{ + struct e1000_hw *hw = &adapter->hw; + /* Determine if we need to pair queues. */ switch (hw->mac.type) { case e1000_82575: --- linux-raspi2-4.2.0.orig/drivers/net/ethernet/marvell/Kconfig +++ linux-raspi2-4.2.0/drivers/net/ethernet/marvell/Kconfig @@ -44,6 +44,7 @@ tristate "Marvell Armada 370/38x/XP network interface support" depends on PLAT_ORION select MVMDIO + select FIXED_PHY ---help--- This driver supports the network interface units in the Marvell ARMADA XP, ARMADA 370 and ARMADA 38x SoC family. --- linux-raspi2-4.2.0.orig/drivers/net/ethernet/marvell/mvneta.c +++ linux-raspi2-4.2.0/drivers/net/ethernet/marvell/mvneta.c @@ -949,7 +949,7 @@ /* Set CPU queue access map - all CPUs have access to all RX * queues and to all TX queues */ - for (cpu = 0; cpu < CONFIG_NR_CPUS; cpu++) + for_each_present_cpu(cpu) mvreg_write(pp, MVNETA_CPU_MAP(cpu), (MVNETA_CPU_RXQ_ACCESS_ALL_MASK | MVNETA_CPU_TXQ_ACCESS_ALL_MASK)); @@ -1479,6 +1479,7 @@ struct mvneta_rx_desc *rx_desc = mvneta_rxq_next_desc_get(rxq); struct sk_buff *skb; unsigned char *data; + dma_addr_t phys_addr; u32 rx_status; int rx_bytes, err; @@ -1486,6 +1487,7 @@ rx_status = rx_desc->status; rx_bytes = rx_desc->data_size - (ETH_FCS_LEN + MVNETA_MH_SIZE); data = (unsigned char *)rx_desc->buf_cookie; + phys_addr = rx_desc->buf_phys_addr; if (!mvneta_rxq_desc_is_first_last(rx_status) || (rx_status & MVNETA_RXD_ERR_SUMMARY)) { @@ -1531,12 +1533,16 @@ } skb = build_skb(data, pp->frag_size > PAGE_SIZE ? 0 : pp->frag_size); - if (!skb) - goto err_drop_frame; - dma_unmap_single(dev->dev.parent, rx_desc->buf_phys_addr, + /* After refill old buffer has to be unmapped regardless + * the skb is successfully built or not. + */ + dma_unmap_single(dev->dev.parent, phys_addr, MVNETA_RX_BUF_SIZE(pp->pkt_size), DMA_FROM_DEVICE); + if (!skb) + goto err_drop_frame; + rcvd_pkts++; rcvd_bytes += rx_bytes; @@ -3027,8 +3033,8 @@ const char *dt_mac_addr; char hw_mac_addr[ETH_ALEN]; const char *mac_from; + const char *managed; int phy_mode; - int fixed_phy = 0; int err; /* Our multiqueue support is not complete, so for now, only @@ -3062,7 +3068,6 @@ dev_err(&pdev->dev, "cannot register fixed PHY\n"); goto err_free_irq; } - fixed_phy = 1; /* In the case of a fixed PHY, the DT node associated * to the PHY is the Ethernet MAC DT node. @@ -3086,8 +3091,10 @@ pp = netdev_priv(dev); pp->phy_node = phy_node; pp->phy_interface = phy_mode; - pp->use_inband_status = (phy_mode == PHY_INTERFACE_MODE_SGMII) && - fixed_phy; + + err = of_property_read_string(dn, "managed", &managed); + pp->use_inband_status = (err == 0 && + strcmp(managed, "in-band-status") == 0); pp->clk = devm_clk_get(&pdev->dev, NULL); if (IS_ERR(pp->clk)) { --- linux-raspi2-4.2.0.orig/drivers/net/ethernet/mellanox/mlx4/cmd.c +++ linux-raspi2-4.2.0/drivers/net/ethernet/mellanox/mlx4/cmd.c @@ -2398,7 +2398,7 @@ } } - memset(&priv->mfunc.master.cmd_eqe, 0, dev->caps.eqe_size); + memset(&priv->mfunc.master.cmd_eqe, 0, sizeof(struct mlx4_eqe)); priv->mfunc.master.cmd_eqe.type = MLX4_EVENT_TYPE_CMD; INIT_WORK(&priv->mfunc.master.comm_work, mlx4_master_comm_channel); --- linux-raspi2-4.2.0.orig/drivers/net/ethernet/mellanox/mlx4/en_clock.c +++ linux-raspi2-4.2.0/drivers/net/ethernet/mellanox/mlx4/en_clock.c @@ -242,6 +242,13 @@ unsigned long flags; u64 ns, zero = 0; + /* mlx4_en_init_timestamp is called for each netdev. + * mdev->ptp_clock is common for all ports, skip initialization if + * was done for other port. + */ + if (mdev->ptp_clock) + return; + rwlock_init(&mdev->clock_lock); memset(&mdev->cycles, 0, sizeof(mdev->cycles)); --- linux-raspi2-4.2.0.orig/drivers/net/ethernet/mellanox/mlx4/en_main.c +++ linux-raspi2-4.2.0/drivers/net/ethernet/mellanox/mlx4/en_main.c @@ -210,9 +210,6 @@ if (mdev->pndev[i]) mlx4_en_destroy_netdev(mdev->pndev[i]); - if (mdev->dev->caps.flags2 & MLX4_DEV_CAP_FLAG2_TS) - mlx4_en_remove_timestamp(mdev); - flush_workqueue(mdev->workqueue); destroy_workqueue(mdev->workqueue); (void) mlx4_mr_free(dev, &mdev->mr); @@ -278,10 +275,6 @@ mlx4_foreach_port(i, dev, MLX4_PORT_TYPE_ETH) mdev->port_cnt++; - /* Initialize time stamp mechanism */ - if (mdev->dev->caps.flags2 & MLX4_DEV_CAP_FLAG2_TS) - mlx4_en_init_timestamp(mdev); - /* Set default number of RX rings*/ mlx4_en_set_num_rx_rings(mdev); --- linux-raspi2-4.2.0.orig/drivers/net/ethernet/mellanox/mlx4/en_netdev.c +++ linux-raspi2-4.2.0/drivers/net/ethernet/mellanox/mlx4/en_netdev.c @@ -2056,6 +2056,9 @@ /* flush any pending task for this netdev */ flush_workqueue(mdev->workqueue); + if (mdev->dev->caps.flags2 & MLX4_DEV_CAP_FLAG2_TS) + mlx4_en_remove_timestamp(mdev); + /* Detach the netdev so tasks would not attempt to access it */ mutex_lock(&mdev->state_lock); mdev->pndev[priv->port] = NULL; @@ -2997,9 +3000,12 @@ } queue_delayed_work(mdev->workqueue, &priv->stats_task, STATS_DELAY); + /* Initialize time stamp mechanism */ if (mdev->dev->caps.flags2 & MLX4_DEV_CAP_FLAG2_TS) - queue_delayed_work(mdev->workqueue, &priv->service_task, - SERVICE_TASK_DELAY); + mlx4_en_init_timestamp(mdev); + + queue_delayed_work(mdev->workqueue, &priv->service_task, + SERVICE_TASK_DELAY); mlx4_en_set_stats_bitmap(mdev->dev, &priv->stats_bitmap, mdev->profile.prof[priv->port].rx_ppp, --- linux-raspi2-4.2.0.orig/drivers/net/ethernet/mellanox/mlx4/en_rx.c +++ linux-raspi2-4.2.0/drivers/net/ethernet/mellanox/mlx4/en_rx.c @@ -1250,8 +1250,6 @@ rss_context->hash_fn = MLX4_RSS_HASH_TOP; memcpy(rss_context->rss_key, priv->rss_key, MLX4_EN_RSS_KEY_SIZE); - netdev_rss_key_fill(rss_context->rss_key, - MLX4_EN_RSS_KEY_SIZE); } else { en_err(priv, "Unknown RSS hash function requested\n"); err = -EINVAL; --- linux-raspi2-4.2.0.orig/drivers/net/ethernet/mellanox/mlx4/eq.c +++ linux-raspi2-4.2.0/drivers/net/ethernet/mellanox/mlx4/eq.c @@ -196,7 +196,7 @@ return; } - memcpy(s_eqe, eqe, dev->caps.eqe_size - 1); + memcpy(s_eqe, eqe, sizeof(struct mlx4_eqe) - 1); s_eqe->slave_id = slave; /* ensure all information is written before setting the ownersip bit */ dma_wmb(); --- linux-raspi2-4.2.0.orig/drivers/net/ethernet/mellanox/mlx4/main.c +++ linux-raspi2-4.2.0/drivers/net/ethernet/mellanox/mlx4/main.c @@ -2654,9 +2654,14 @@ if (msi_x) { int nreq = dev->caps.num_ports * num_online_cpus() + 1; + bool shared_ports = false; nreq = min_t(int, dev->caps.num_eqs - dev->caps.reserved_eqs, nreq); + if (nreq > MAX_MSIX) { + nreq = MAX_MSIX; + shared_ports = true; + } entries = kcalloc(nreq, sizeof *entries, GFP_KERNEL); if (!entries) @@ -2679,6 +2684,9 @@ bitmap_zero(priv->eq_table.eq[MLX4_EQ_ASYNC].actv_ports.ports, dev->caps.num_ports); + if (MLX4_IS_LEGACY_EQ_MODE(dev->caps)) + shared_ports = true; + for (i = 0; i < dev->caps.num_comp_vectors + 1; i++) { if (i == MLX4_EQ_ASYNC) continue; @@ -2686,7 +2694,7 @@ priv->eq_table.eq[i].irq = entries[i + 1 - !!(i > MLX4_EQ_ASYNC)].vector; - if (MLX4_IS_LEGACY_EQ_MODE(dev->caps)) { + if (shared_ports) { bitmap_fill(priv->eq_table.eq[i].actv_ports.ports, dev->caps.num_ports); /* We don't set affinity hint when there --- linux-raspi2-4.2.0.orig/drivers/net/ethernet/mellanox/mlx4/resource_tracker.c +++ linux-raspi2-4.2.0/drivers/net/ethernet/mellanox/mlx4/resource_tracker.c @@ -4934,26 +4934,41 @@ struct res_counter *counter; struct res_counter *tmp; int err; - int index; + int *counters_arr = NULL; + int i, j; err = move_all_busy(dev, slave, RES_COUNTER); if (err) mlx4_warn(dev, "rem_slave_counters: Could not move all counters - too busy for slave %d\n", slave); - spin_lock_irq(mlx4_tlock(dev)); - list_for_each_entry_safe(counter, tmp, counter_list, com.list) { - if (counter->com.owner == slave) { - index = counter->com.res_id; - rb_erase(&counter->com.node, - &tracker->res_tree[RES_COUNTER]); - list_del(&counter->com.list); - kfree(counter); - __mlx4_counter_free(dev, index); + counters_arr = kmalloc_array(dev->caps.max_counters, + sizeof(*counters_arr), GFP_KERNEL); + if (!counters_arr) + return; + + do { + i = 0; + j = 0; + spin_lock_irq(mlx4_tlock(dev)); + list_for_each_entry_safe(counter, tmp, counter_list, com.list) { + if (counter->com.owner == slave) { + counters_arr[i++] = counter->com.res_id; + rb_erase(&counter->com.node, + &tracker->res_tree[RES_COUNTER]); + list_del(&counter->com.list); + kfree(counter); + } + } + spin_unlock_irq(mlx4_tlock(dev)); + + while (j < i) { + __mlx4_counter_free(dev, counters_arr[j++]); mlx4_release_resource(dev, slave, RES_COUNTER, 1, 0); } - } - spin_unlock_irq(mlx4_tlock(dev)); + } while (i); + + kfree(counters_arr); } static void rem_slave_xrcdns(struct mlx4_dev *dev, int slave) --- linux-raspi2-4.2.0.orig/drivers/net/ethernet/mellanox/mlx5/core/alloc.c +++ linux-raspi2-4.2.0/drivers/net/ethernet/mellanox/mlx5/core/alloc.c @@ -45,15 +45,34 @@ * register it in a memory region at HCA virtual address 0. */ -int mlx5_buf_alloc(struct mlx5_core_dev *dev, int size, struct mlx5_buf *buf) +static void *mlx5_dma_zalloc_coherent_node(struct mlx5_core_dev *dev, + size_t size, dma_addr_t *dma_handle, + int node) +{ + struct mlx5_priv *priv = &dev->priv; + int original_node; + void *cpu_handle; + + mutex_lock(&priv->alloc_mutex); + original_node = dev_to_node(&dev->pdev->dev); + set_dev_node(&dev->pdev->dev, node); + cpu_handle = dma_zalloc_coherent(&dev->pdev->dev, size, + dma_handle, GFP_KERNEL); + set_dev_node(&dev->pdev->dev, original_node); + mutex_unlock(&priv->alloc_mutex); + return cpu_handle; +} + +int mlx5_buf_alloc_node(struct mlx5_core_dev *dev, int size, + struct mlx5_buf *buf, int node) { dma_addr_t t; buf->size = size; buf->npages = 1; buf->page_shift = (u8)get_order(size) + PAGE_SHIFT; - buf->direct.buf = dma_zalloc_coherent(&dev->pdev->dev, - size, &t, GFP_KERNEL); + buf->direct.buf = mlx5_dma_zalloc_coherent_node(dev, size, + &t, node); if (!buf->direct.buf) return -ENOMEM; @@ -66,6 +85,11 @@ return 0; } + +int mlx5_buf_alloc(struct mlx5_core_dev *dev, int size, struct mlx5_buf *buf) +{ + return mlx5_buf_alloc_node(dev, size, buf, dev->priv.numa_node); +} EXPORT_SYMBOL_GPL(mlx5_buf_alloc); void mlx5_buf_free(struct mlx5_core_dev *dev, struct mlx5_buf *buf) @@ -75,7 +99,8 @@ } EXPORT_SYMBOL_GPL(mlx5_buf_free); -static struct mlx5_db_pgdir *mlx5_alloc_db_pgdir(struct device *dma_device) +static struct mlx5_db_pgdir *mlx5_alloc_db_pgdir(struct mlx5_core_dev *dev, + int node) { struct mlx5_db_pgdir *pgdir; @@ -84,8 +109,9 @@ return NULL; bitmap_fill(pgdir->bitmap, MLX5_DB_PER_PAGE); - pgdir->db_page = dma_alloc_coherent(dma_device, PAGE_SIZE, - &pgdir->db_dma, GFP_KERNEL); + + pgdir->db_page = mlx5_dma_zalloc_coherent_node(dev, PAGE_SIZE, + &pgdir->db_dma, node); if (!pgdir->db_page) { kfree(pgdir); return NULL; @@ -118,7 +144,7 @@ return 0; } -int mlx5_db_alloc(struct mlx5_core_dev *dev, struct mlx5_db *db) +int mlx5_db_alloc_node(struct mlx5_core_dev *dev, struct mlx5_db *db, int node) { struct mlx5_db_pgdir *pgdir; int ret = 0; @@ -129,7 +155,7 @@ if (!mlx5_alloc_db_from_pgdir(pgdir, db)) goto out; - pgdir = mlx5_alloc_db_pgdir(&(dev->pdev->dev)); + pgdir = mlx5_alloc_db_pgdir(dev, node); if (!pgdir) { ret = -ENOMEM; goto out; @@ -145,6 +171,12 @@ return ret; } +EXPORT_SYMBOL_GPL(mlx5_db_alloc_node); + +int mlx5_db_alloc(struct mlx5_core_dev *dev, struct mlx5_db *db) +{ + return mlx5_db_alloc_node(dev, db, dev->priv.numa_node); +} EXPORT_SYMBOL_GPL(mlx5_db_alloc); void mlx5_db_free(struct mlx5_core_dev *dev, struct mlx5_db *db) --- linux-raspi2-4.2.0.orig/drivers/net/ethernet/mellanox/mlx5/core/en.h +++ linux-raspi2-4.2.0/drivers/net/ethernet/mellanox/mlx5/core/en.h @@ -60,6 +60,7 @@ #define MLX5E_TX_CQ_POLL_BUDGET 128 #define MLX5E_UPDATE_STATS_INTERVAL 200 /* msecs */ +#define MLX5E_SQ_BF_BUDGET 16 static const char vport_strings[][ETH_GSTRING_LEN] = { /* vport statistics */ @@ -195,6 +196,8 @@ u16 rx_hash_log_tbl_sz; bool lro_en; u32 lro_wqe_sz; + u8 rss_hfunc; + u16 tx_max_inline; }; enum { @@ -266,7 +269,9 @@ /* dirtied @xmit */ u16 pc ____cacheline_aligned_in_smp; u32 dma_fifo_pc; - u32 bf_offset; + u16 bf_offset; + u16 prev_cc; + u8 bf_budget; struct mlx5e_sq_stats stats; struct mlx5e_cq cq; @@ -279,9 +284,10 @@ struct mlx5_wq_cyc wq; u32 dma_fifo_mask; void __iomem *uar_map; + void __iomem *uar_bf_map; struct netdev_queue *txq; u32 sqn; - u32 bf_buf_size; + u16 bf_buf_size; u16 max_inline; u16 edge; struct device *pdev; @@ -324,14 +330,18 @@ }; enum mlx5e_traffic_types { - MLX5E_TT_IPV4_TCP = 0, - MLX5E_TT_IPV6_TCP = 1, - MLX5E_TT_IPV4_UDP = 2, - MLX5E_TT_IPV6_UDP = 3, - MLX5E_TT_IPV4 = 4, - MLX5E_TT_IPV6 = 5, - MLX5E_TT_ANY = 6, - MLX5E_NUM_TT = 7, + MLX5E_TT_IPV4_TCP, + MLX5E_TT_IPV6_TCP, + MLX5E_TT_IPV4_UDP, + MLX5E_TT_IPV6_UDP, + MLX5E_TT_IPV4_IPSEC_AH, + MLX5E_TT_IPV6_IPSEC_AH, + MLX5E_TT_IPV4_IPSEC_ESP, + MLX5E_TT_IPV6_IPSEC_ESP, + MLX5E_TT_IPV4, + MLX5E_TT_IPV6, + MLX5E_TT_ANY, + MLX5E_NUM_TT, }; enum { @@ -491,8 +501,10 @@ struct mlx5e_params *new_params); static inline void mlx5e_tx_notify_hw(struct mlx5e_sq *sq, - struct mlx5e_tx_wqe *wqe) + struct mlx5e_tx_wqe *wqe, int bf_sz) { + u16 ofst = MLX5_BF_OFFSET + sq->bf_offset; + /* ensure wqe is visible to device before updating doorbell record */ dma_wmb(); @@ -503,9 +515,15 @@ */ wmb(); - mlx5_write64((__be32 *)&wqe->ctrl, - sq->uar_map + MLX5_BF_OFFSET + sq->bf_offset, - NULL); + if (bf_sz) { + __iowrite64_copy(sq->uar_bf_map + ofst, &wqe->ctrl, bf_sz); + + /* flush the write-combining mapped buffer */ + wmb(); + + } else { + mlx5_write64((__be32 *)&wqe->ctrl, sq->uar_map + ofst, NULL); + } sq->bf_offset ^= sq->bf_buf_size; } @@ -519,3 +537,4 @@ } extern const struct ethtool_ops mlx5e_ethtool_ops; +u16 mlx5e_get_max_inline_cap(struct mlx5_core_dev *mdev); --- linux-raspi2-4.2.0.orig/drivers/net/ethernet/mellanox/mlx5/core/en_ethtool.c +++ linux-raspi2-4.2.0/drivers/net/ethernet/mellanox/mlx5/core/en_ethtool.c @@ -606,7 +606,7 @@ u32 link_modes; u32 speed; u32 eth_proto_cap, eth_proto_admin; - u8 port_status; + enum mlx5_port_status ps; int err; speed = ethtool_cmd_speed(cmd); @@ -640,25 +640,102 @@ if (link_modes == eth_proto_admin) goto out; - err = mlx5_set_port_proto(mdev, link_modes, MLX5_PTYS_EN); - if (err) { - netdev_err(netdev, "%s: set port eth proto admin failed: %d\n", - __func__, err); - goto out; - } + mlx5_query_port_admin_status(mdev, &ps); + if (ps == MLX5_PORT_UP) + mlx5_set_port_admin_status(mdev, MLX5_PORT_DOWN); + mlx5_set_port_proto(mdev, link_modes, MLX5_PTYS_EN); + if (ps == MLX5_PORT_UP) + mlx5_set_port_admin_status(mdev, MLX5_PORT_UP); - err = mlx5_query_port_status(mdev, &port_status); - if (err) - goto out; +out: + return err; +} - if (port_status == MLX5_PORT_DOWN) +static int mlx5e_get_rxfh(struct net_device *netdev, u32 *indir, u8 *key, + u8 *hfunc) +{ + struct mlx5e_priv *priv = netdev_priv(netdev); + + if (hfunc) + *hfunc = priv->params.rss_hfunc; + + return 0; +} + +static int mlx5e_set_rxfh(struct net_device *netdev, const u32 *indir, + const u8 *key, const u8 hfunc) +{ + struct mlx5e_priv *priv = netdev_priv(netdev); + int err = 0; + + if (hfunc == ETH_RSS_HASH_NO_CHANGE) return 0; - err = mlx5_set_port_status(mdev, MLX5_PORT_DOWN); - if (err) - goto out; - err = mlx5_set_port_status(mdev, MLX5_PORT_UP); -out: + if ((hfunc != ETH_RSS_HASH_XOR) && + (hfunc != ETH_RSS_HASH_TOP)) + return -EINVAL; + + mutex_lock(&priv->state_lock); + + priv->params.rss_hfunc = hfunc; + if (test_bit(MLX5E_STATE_OPENED, &priv->state)) { + mlx5e_close_locked(priv->netdev); + err = mlx5e_open_locked(priv->netdev); + } + + mutex_unlock(&priv->state_lock); + + return err; +} + +static int mlx5e_get_tunable(struct net_device *dev, + const struct ethtool_tunable *tuna, + void *data) +{ + const struct mlx5e_priv *priv = netdev_priv(dev); + int err = 0; + + switch (tuna->id) { + case ETHTOOL_TX_COPYBREAK: + *(u32 *)data = priv->params.tx_max_inline; + break; + default: + err = -EINVAL; + break; + } + + return err; +} + +static int mlx5e_set_tunable(struct net_device *dev, + const struct ethtool_tunable *tuna, + const void *data) +{ + struct mlx5e_priv *priv = netdev_priv(dev); + struct mlx5_core_dev *mdev = priv->mdev; + struct mlx5e_params new_params; + u32 val; + int err = 0; + + switch (tuna->id) { + case ETHTOOL_TX_COPYBREAK: + val = *(u32 *)data; + if (val > mlx5e_get_max_inline_cap(mdev)) { + err = -EINVAL; + break; + } + + mutex_lock(&priv->state_lock); + new_params = priv->params; + new_params.tx_max_inline = val; + err = mlx5e_update_priv_params(priv, &new_params); + mutex_unlock(&priv->state_lock); + break; + default: + err = -EINVAL; + break; + } + return err; } @@ -676,4 +753,8 @@ .set_coalesce = mlx5e_set_coalesce, .get_settings = mlx5e_get_settings, .set_settings = mlx5e_set_settings, + .get_rxfh = mlx5e_get_rxfh, + .set_rxfh = mlx5e_set_rxfh, + .get_tunable = mlx5e_get_tunable, + .set_tunable = mlx5e_set_tunable, }; --- linux-raspi2-4.2.0.orig/drivers/net/ethernet/mellanox/mlx5/core/en_flow_table.c +++ linux-raspi2-4.2.0/drivers/net/ethernet/mellanox/mlx5/core/en_flow_table.c @@ -105,25 +105,41 @@ { void *ft = priv->ft.main; - if (ai->tt_vec & (1 << MLX5E_TT_IPV6_TCP)) + if (ai->tt_vec & BIT(MLX5E_TT_IPV6_IPSEC_ESP)) + mlx5_del_flow_table_entry(ft, + ai->ft_ix[MLX5E_TT_IPV6_IPSEC_ESP]); + + if (ai->tt_vec & BIT(MLX5E_TT_IPV4_IPSEC_ESP)) + mlx5_del_flow_table_entry(ft, + ai->ft_ix[MLX5E_TT_IPV4_IPSEC_ESP]); + + if (ai->tt_vec & BIT(MLX5E_TT_IPV6_IPSEC_AH)) + mlx5_del_flow_table_entry(ft, + ai->ft_ix[MLX5E_TT_IPV6_IPSEC_AH]); + + if (ai->tt_vec & BIT(MLX5E_TT_IPV4_IPSEC_AH)) + mlx5_del_flow_table_entry(ft, + ai->ft_ix[MLX5E_TT_IPV4_IPSEC_AH]); + + if (ai->tt_vec & BIT(MLX5E_TT_IPV6_TCP)) mlx5_del_flow_table_entry(ft, ai->ft_ix[MLX5E_TT_IPV6_TCP]); - if (ai->tt_vec & (1 << MLX5E_TT_IPV4_TCP)) + if (ai->tt_vec & BIT(MLX5E_TT_IPV4_TCP)) mlx5_del_flow_table_entry(ft, ai->ft_ix[MLX5E_TT_IPV4_TCP]); - if (ai->tt_vec & (1 << MLX5E_TT_IPV6_UDP)) + if (ai->tt_vec & BIT(MLX5E_TT_IPV6_UDP)) mlx5_del_flow_table_entry(ft, ai->ft_ix[MLX5E_TT_IPV6_UDP]); - if (ai->tt_vec & (1 << MLX5E_TT_IPV4_UDP)) + if (ai->tt_vec & BIT(MLX5E_TT_IPV4_UDP)) mlx5_del_flow_table_entry(ft, ai->ft_ix[MLX5E_TT_IPV4_UDP]); - if (ai->tt_vec & (1 << MLX5E_TT_IPV6)) + if (ai->tt_vec & BIT(MLX5E_TT_IPV6)) mlx5_del_flow_table_entry(ft, ai->ft_ix[MLX5E_TT_IPV6]); - if (ai->tt_vec & (1 << MLX5E_TT_IPV4)) + if (ai->tt_vec & BIT(MLX5E_TT_IPV4)) mlx5_del_flow_table_entry(ft, ai->ft_ix[MLX5E_TT_IPV4]); - if (ai->tt_vec & (1 << MLX5E_TT_ANY)) + if (ai->tt_vec & BIT(MLX5E_TT_ANY)) mlx5_del_flow_table_entry(ft, ai->ft_ix[MLX5E_TT_ANY]); } @@ -156,33 +172,37 @@ switch (eth_addr_type) { case MLX5E_UC: ret = - (1 << MLX5E_TT_IPV4_TCP) | - (1 << MLX5E_TT_IPV6_TCP) | - (1 << MLX5E_TT_IPV4_UDP) | - (1 << MLX5E_TT_IPV6_UDP) | - (1 << MLX5E_TT_IPV4) | - (1 << MLX5E_TT_IPV6) | - (1 << MLX5E_TT_ANY) | + BIT(MLX5E_TT_IPV4_TCP) | + BIT(MLX5E_TT_IPV6_TCP) | + BIT(MLX5E_TT_IPV4_UDP) | + BIT(MLX5E_TT_IPV6_UDP) | + BIT(MLX5E_TT_IPV4_IPSEC_AH) | + BIT(MLX5E_TT_IPV6_IPSEC_AH) | + BIT(MLX5E_TT_IPV4_IPSEC_ESP) | + BIT(MLX5E_TT_IPV6_IPSEC_ESP) | + BIT(MLX5E_TT_IPV4) | + BIT(MLX5E_TT_IPV6) | + BIT(MLX5E_TT_ANY) | 0; break; case MLX5E_MC_IPV4: ret = - (1 << MLX5E_TT_IPV4_UDP) | - (1 << MLX5E_TT_IPV4) | + BIT(MLX5E_TT_IPV4_UDP) | + BIT(MLX5E_TT_IPV4) | 0; break; case MLX5E_MC_IPV6: ret = - (1 << MLX5E_TT_IPV6_UDP) | - (1 << MLX5E_TT_IPV6) | + BIT(MLX5E_TT_IPV6_UDP) | + BIT(MLX5E_TT_IPV6) | 0; break; case MLX5E_MC_OTHER: ret = - (1 << MLX5E_TT_ANY) | + BIT(MLX5E_TT_ANY) | 0; break; } @@ -191,23 +211,27 @@ case MLX5E_ALLMULTI: ret = - (1 << MLX5E_TT_IPV4_UDP) | - (1 << MLX5E_TT_IPV6_UDP) | - (1 << MLX5E_TT_IPV4) | - (1 << MLX5E_TT_IPV6) | - (1 << MLX5E_TT_ANY) | + BIT(MLX5E_TT_IPV4_UDP) | + BIT(MLX5E_TT_IPV6_UDP) | + BIT(MLX5E_TT_IPV4) | + BIT(MLX5E_TT_IPV6) | + BIT(MLX5E_TT_ANY) | 0; break; default: /* MLX5E_PROMISC */ ret = - (1 << MLX5E_TT_IPV4_TCP) | - (1 << MLX5E_TT_IPV6_TCP) | - (1 << MLX5E_TT_IPV4_UDP) | - (1 << MLX5E_TT_IPV6_UDP) | - (1 << MLX5E_TT_IPV4) | - (1 << MLX5E_TT_IPV6) | - (1 << MLX5E_TT_ANY) | + BIT(MLX5E_TT_IPV4_TCP) | + BIT(MLX5E_TT_IPV6_TCP) | + BIT(MLX5E_TT_IPV4_UDP) | + BIT(MLX5E_TT_IPV6_UDP) | + BIT(MLX5E_TT_IPV4_IPSEC_AH) | + BIT(MLX5E_TT_IPV6_IPSEC_AH) | + BIT(MLX5E_TT_IPV4_IPSEC_ESP) | + BIT(MLX5E_TT_IPV6_IPSEC_ESP) | + BIT(MLX5E_TT_IPV4) | + BIT(MLX5E_TT_IPV6) | + BIT(MLX5E_TT_ANY) | 0; break; } @@ -226,6 +250,7 @@ u8 *match_criteria_dmac; void *ft = priv->ft.main; u32 *tirn = priv->tirn; + u32 *ft_ix; u32 tt_vec; int err; @@ -261,51 +286,51 @@ tt_vec = mlx5e_get_tt_vec(ai, type); - if (tt_vec & (1 << MLX5E_TT_ANY)) { + ft_ix = &ai->ft_ix[MLX5E_TT_ANY]; + if (tt_vec & BIT(MLX5E_TT_ANY)) { MLX5_SET(dest_format_struct, dest, destination_id, tirn[MLX5E_TT_ANY]); err = mlx5_add_flow_table_entry(ft, match_criteria_enable, match_criteria, flow_context, - &ai->ft_ix[MLX5E_TT_ANY]); - if (err) { - mlx5e_del_eth_addr_from_flow_table(priv, ai); - return err; - } - ai->tt_vec |= (1 << MLX5E_TT_ANY); + ft_ix); + if (err) + goto err_del_ai; + + ai->tt_vec |= BIT(MLX5E_TT_ANY); } match_criteria_enable = MLX5_MATCH_OUTER_HEADERS; MLX5_SET_TO_ONES(fte_match_param, match_criteria, outer_headers.ethertype); - if (tt_vec & (1 << MLX5E_TT_IPV4)) { + ft_ix = &ai->ft_ix[MLX5E_TT_IPV4]; + if (tt_vec & BIT(MLX5E_TT_IPV4)) { MLX5_SET(fte_match_param, match_value, outer_headers.ethertype, ETH_P_IP); MLX5_SET(dest_format_struct, dest, destination_id, tirn[MLX5E_TT_IPV4]); err = mlx5_add_flow_table_entry(ft, match_criteria_enable, match_criteria, flow_context, - &ai->ft_ix[MLX5E_TT_IPV4]); - if (err) { - mlx5e_del_eth_addr_from_flow_table(priv, ai); - return err; - } - ai->tt_vec |= (1 << MLX5E_TT_IPV4); + ft_ix); + if (err) + goto err_del_ai; + + ai->tt_vec |= BIT(MLX5E_TT_IPV4); } - if (tt_vec & (1 << MLX5E_TT_IPV6)) { + ft_ix = &ai->ft_ix[MLX5E_TT_IPV6]; + if (tt_vec & BIT(MLX5E_TT_IPV6)) { MLX5_SET(fte_match_param, match_value, outer_headers.ethertype, ETH_P_IPV6); MLX5_SET(dest_format_struct, dest, destination_id, tirn[MLX5E_TT_IPV6]); err = mlx5_add_flow_table_entry(ft, match_criteria_enable, match_criteria, flow_context, - &ai->ft_ix[MLX5E_TT_IPV6]); - if (err) { - mlx5e_del_eth_addr_from_flow_table(priv, ai); - return err; - } - ai->tt_vec |= (1 << MLX5E_TT_IPV6); + ft_ix); + if (err) + goto err_del_ai; + + ai->tt_vec |= BIT(MLX5E_TT_IPV6); } MLX5_SET_TO_ONES(fte_match_param, match_criteria, @@ -313,70 +338,141 @@ MLX5_SET(fte_match_param, match_value, outer_headers.ip_protocol, IPPROTO_UDP); - if (tt_vec & (1 << MLX5E_TT_IPV4_UDP)) { + ft_ix = &ai->ft_ix[MLX5E_TT_IPV4_UDP]; + if (tt_vec & BIT(MLX5E_TT_IPV4_UDP)) { MLX5_SET(fte_match_param, match_value, outer_headers.ethertype, ETH_P_IP); MLX5_SET(dest_format_struct, dest, destination_id, tirn[MLX5E_TT_IPV4_UDP]); err = mlx5_add_flow_table_entry(ft, match_criteria_enable, match_criteria, flow_context, - &ai->ft_ix[MLX5E_TT_IPV4_UDP]); - if (err) { - mlx5e_del_eth_addr_from_flow_table(priv, ai); - return err; - } - ai->tt_vec |= (1 << MLX5E_TT_IPV4_UDP); + ft_ix); + if (err) + goto err_del_ai; + + ai->tt_vec |= BIT(MLX5E_TT_IPV4_UDP); } - if (tt_vec & (1 << MLX5E_TT_IPV6_UDP)) { + ft_ix = &ai->ft_ix[MLX5E_TT_IPV6_UDP]; + if (tt_vec & BIT(MLX5E_TT_IPV6_UDP)) { MLX5_SET(fte_match_param, match_value, outer_headers.ethertype, ETH_P_IPV6); MLX5_SET(dest_format_struct, dest, destination_id, tirn[MLX5E_TT_IPV6_UDP]); err = mlx5_add_flow_table_entry(ft, match_criteria_enable, match_criteria, flow_context, - &ai->ft_ix[MLX5E_TT_IPV6_UDP]); - if (err) { - mlx5e_del_eth_addr_from_flow_table(priv, ai); - return err; - } - ai->tt_vec |= (1 << MLX5E_TT_IPV6_UDP); + ft_ix); + if (err) + goto err_del_ai; + + ai->tt_vec |= BIT(MLX5E_TT_IPV6_UDP); } MLX5_SET(fte_match_param, match_value, outer_headers.ip_protocol, IPPROTO_TCP); - if (tt_vec & (1 << MLX5E_TT_IPV4_TCP)) { + ft_ix = &ai->ft_ix[MLX5E_TT_IPV4_TCP]; + if (tt_vec & BIT(MLX5E_TT_IPV4_TCP)) { MLX5_SET(fte_match_param, match_value, outer_headers.ethertype, ETH_P_IP); MLX5_SET(dest_format_struct, dest, destination_id, tirn[MLX5E_TT_IPV4_TCP]); err = mlx5_add_flow_table_entry(ft, match_criteria_enable, match_criteria, flow_context, - &ai->ft_ix[MLX5E_TT_IPV4_TCP]); - if (err) { - mlx5e_del_eth_addr_from_flow_table(priv, ai); - return err; - } - ai->tt_vec |= (1 << MLX5E_TT_IPV4_TCP); + ft_ix); + if (err) + goto err_del_ai; + + ai->tt_vec |= BIT(MLX5E_TT_IPV4_TCP); } - if (tt_vec & (1 << MLX5E_TT_IPV6_TCP)) { + ft_ix = &ai->ft_ix[MLX5E_TT_IPV6_TCP]; + if (tt_vec & BIT(MLX5E_TT_IPV6_TCP)) { MLX5_SET(fte_match_param, match_value, outer_headers.ethertype, ETH_P_IPV6); MLX5_SET(dest_format_struct, dest, destination_id, tirn[MLX5E_TT_IPV6_TCP]); err = mlx5_add_flow_table_entry(ft, match_criteria_enable, match_criteria, flow_context, - &ai->ft_ix[MLX5E_TT_IPV6_TCP]); - if (err) { - mlx5e_del_eth_addr_from_flow_table(priv, ai); - return err; - } - ai->tt_vec |= (1 << MLX5E_TT_IPV6_TCP); + ft_ix); + if (err) + goto err_del_ai; + + ai->tt_vec |= BIT(MLX5E_TT_IPV6_TCP); + } + + MLX5_SET(fte_match_param, match_value, outer_headers.ip_protocol, + IPPROTO_AH); + + ft_ix = &ai->ft_ix[MLX5E_TT_IPV4_IPSEC_AH]; + if (tt_vec & BIT(MLX5E_TT_IPV4_IPSEC_AH)) { + MLX5_SET(fte_match_param, match_value, outer_headers.ethertype, + ETH_P_IP); + MLX5_SET(dest_format_struct, dest, destination_id, + tirn[MLX5E_TT_IPV4_IPSEC_AH]); + err = mlx5_add_flow_table_entry(ft, match_criteria_enable, + match_criteria, flow_context, + ft_ix); + if (err) + goto err_del_ai; + + ai->tt_vec |= BIT(MLX5E_TT_IPV4_IPSEC_AH); + } + + ft_ix = &ai->ft_ix[MLX5E_TT_IPV6_IPSEC_AH]; + if (tt_vec & BIT(MLX5E_TT_IPV6_IPSEC_AH)) { + MLX5_SET(fte_match_param, match_value, outer_headers.ethertype, + ETH_P_IPV6); + MLX5_SET(dest_format_struct, dest, destination_id, + tirn[MLX5E_TT_IPV6_IPSEC_AH]); + err = mlx5_add_flow_table_entry(ft, match_criteria_enable, + match_criteria, flow_context, + ft_ix); + if (err) + goto err_del_ai; + + ai->tt_vec |= BIT(MLX5E_TT_IPV6_IPSEC_AH); + } + + MLX5_SET(fte_match_param, match_value, outer_headers.ip_protocol, + IPPROTO_ESP); + + ft_ix = &ai->ft_ix[MLX5E_TT_IPV4_IPSEC_ESP]; + if (tt_vec & BIT(MLX5E_TT_IPV4_IPSEC_ESP)) { + MLX5_SET(fte_match_param, match_value, outer_headers.ethertype, + ETH_P_IP); + MLX5_SET(dest_format_struct, dest, destination_id, + tirn[MLX5E_TT_IPV4_IPSEC_ESP]); + err = mlx5_add_flow_table_entry(ft, match_criteria_enable, + match_criteria, flow_context, + ft_ix); + if (err) + goto err_del_ai; + + ai->tt_vec |= BIT(MLX5E_TT_IPV4_IPSEC_ESP); + } + + ft_ix = &ai->ft_ix[MLX5E_TT_IPV6_IPSEC_ESP]; + if (tt_vec & BIT(MLX5E_TT_IPV6_IPSEC_ESP)) { + MLX5_SET(fte_match_param, match_value, outer_headers.ethertype, + ETH_P_IPV6); + MLX5_SET(dest_format_struct, dest, destination_id, + tirn[MLX5E_TT_IPV6_IPSEC_ESP]); + err = mlx5_add_flow_table_entry(ft, match_criteria_enable, + match_criteria, flow_context, + ft_ix); + if (err) + goto err_del_ai; + + ai->tt_vec |= BIT(MLX5E_TT_IPV6_IPSEC_ESP); } return 0; + +err_del_ai: + mlx5e_del_eth_addr_from_flow_table(priv, ai); + + return err; } static int mlx5e_add_eth_addr_rule(struct mlx5e_priv *priv, @@ -498,26 +594,24 @@ void mlx5e_enable_vlan_filter(struct mlx5e_priv *priv) { - WARN_ON(!mutex_is_locked(&priv->state_lock)); + if (!priv->vlan.filter_disabled) + return; - if (priv->vlan.filter_disabled) { - priv->vlan.filter_disabled = false; - if (test_bit(MLX5E_STATE_OPENED, &priv->state)) - mlx5e_del_vlan_rule(priv, MLX5E_VLAN_RULE_TYPE_ANY_VID, - 0); - } + priv->vlan.filter_disabled = false; + if (priv->netdev->flags & IFF_PROMISC) + return; + mlx5e_del_vlan_rule(priv, MLX5E_VLAN_RULE_TYPE_ANY_VID, 0); } void mlx5e_disable_vlan_filter(struct mlx5e_priv *priv) { - WARN_ON(!mutex_is_locked(&priv->state_lock)); + if (priv->vlan.filter_disabled) + return; - if (!priv->vlan.filter_disabled) { - priv->vlan.filter_disabled = true; - if (test_bit(MLX5E_STATE_OPENED, &priv->state)) - mlx5e_add_vlan_rule(priv, MLX5E_VLAN_RULE_TYPE_ANY_VID, - 0); - } + priv->vlan.filter_disabled = true; + if (priv->netdev->flags & IFF_PROMISC) + return; + mlx5e_add_vlan_rule(priv, MLX5E_VLAN_RULE_TYPE_ANY_VID, 0); } int mlx5e_vlan_rx_add_vid(struct net_device *dev, __always_unused __be16 proto, @@ -679,8 +773,12 @@ bool enable_broadcast = !ea->broadcast_enabled && broadcast_enabled; bool disable_broadcast = ea->broadcast_enabled && !broadcast_enabled; - if (enable_promisc) + if (enable_promisc) { mlx5e_add_eth_addr_rule(priv, &ea->promisc, MLX5E_PROMISC); + if (!priv->vlan.filter_disabled) + mlx5e_add_vlan_rule(priv, MLX5E_VLAN_RULE_TYPE_ANY_VID, + 0); + } if (enable_allmulti) mlx5e_add_eth_addr_rule(priv, &ea->allmulti, MLX5E_ALLMULTI); if (enable_broadcast) @@ -692,8 +790,12 @@ mlx5e_del_eth_addr_from_flow_table(priv, &ea->broadcast); if (disable_allmulti) mlx5e_del_eth_addr_from_flow_table(priv, &ea->allmulti); - if (disable_promisc) + if (disable_promisc) { + if (!priv->vlan.filter_disabled) + mlx5e_del_vlan_rule(priv, MLX5E_VLAN_RULE_TYPE_ANY_VID, + 0); mlx5e_del_eth_addr_from_flow_table(priv, &ea->promisc); + } ea->promisc_enabled = promisc_enabled; ea->allmulti_enabled = allmulti_enabled; @@ -725,7 +827,7 @@ if (!g) return -ENOMEM; - g[0].log_sz = 2; + g[0].log_sz = 3; g[0].match_criteria_enable = MLX5_MATCH_OUTER_HEADERS; MLX5_SET_TO_ONES(fte_match_param, g[0].match_criteria, outer_headers.ethertype); --- linux-raspi2-4.2.0.orig/drivers/net/ethernet/mellanox/mlx5/core/en_main.c +++ linux-raspi2-4.2.0/drivers/net/ethernet/mellanox/mlx5/core/en_main.c @@ -41,6 +41,7 @@ struct mlx5e_sq_param { u32 sqc[MLX5_ST_SZ_DW(sqc)]; struct mlx5_wq_param wq; + u16 max_inline; }; struct mlx5e_cq_param { @@ -272,6 +273,8 @@ int err; int i; + param->wq.db_numa_node = cpu_to_node(c->cpu); + err = mlx5_wq_ll_create(mdev, ¶m->wq, rqc_wq, &rq->wq, &rq->wq_ctrl); if (err) @@ -502,6 +505,8 @@ if (err) return err; + param->wq.db_numa_node = cpu_to_node(c->cpu); + err = mlx5_wq_cyc_create(mdev, ¶m->wq, sqc_wq, &sq->wq, &sq->wq_ctrl); if (err) @@ -509,7 +514,9 @@ sq->wq.db = &sq->wq.db[MLX5_SND_DBR]; sq->uar_map = sq->uar.map; + sq->uar_bf_map = sq->uar.bf_map; sq->bf_buf_size = (1 << MLX5_CAP_GEN(mdev, log_bf_reg_size)) / 2; + sq->max_inline = param->max_inline; err = mlx5e_alloc_sq_db(sq, cpu_to_node(c->cpu)); if (err) @@ -518,11 +525,12 @@ txq_ix = c->ix + tc * priv->params.num_channels; sq->txq = netdev_get_tx_queue(priv->netdev, txq_ix); - sq->pdev = c->pdev; - sq->mkey_be = c->mkey_be; - sq->channel = c; - sq->tc = tc; - sq->edge = (sq->wq.sz_m1 + 1) - MLX5_SEND_WQE_MAX_WQEBBS; + sq->pdev = c->pdev; + sq->mkey_be = c->mkey_be; + sq->channel = c; + sq->tc = tc; + sq->edge = (sq->wq.sz_m1 + 1) - MLX5_SEND_WQE_MAX_WQEBBS; + sq->bf_budget = MLX5E_SQ_BF_BUDGET; priv->txq_to_sq_map[txq_ix] = sq; return 0; @@ -702,7 +710,8 @@ int err; u32 i; - param->wq.numa = cpu_to_node(c->cpu); + param->wq.buf_numa_node = cpu_to_node(c->cpu); + param->wq.db_numa_node = cpu_to_node(c->cpu); param->eq_ix = c->ix; err = mlx5_cqwq_create(mdev, ¶m->wq, param->cqc, &cq->wq, @@ -1000,7 +1009,7 @@ MLX5_SET(wq, wq, log_wq_sz, priv->params.log_rq_size); MLX5_SET(wq, wq, pd, priv->pdn); - param->wq.numa = dev_to_node(&priv->mdev->pdev->dev); + param->wq.buf_numa_node = dev_to_node(&priv->mdev->pdev->dev); param->wq.linear = 1; } @@ -1014,7 +1023,8 @@ MLX5_SET(wq, wq, log_wq_stride, ilog2(MLX5_SEND_WQE_BB)); MLX5_SET(wq, wq, pd, priv->pdn); - param->wq.numa = dev_to_node(&priv->mdev->pdev->dev); + param->wq.buf_numa_node = dev_to_node(&priv->mdev->pdev->dev); + param->max_inline = priv->params.tx_max_inline; } static void mlx5e_build_common_cq_param(struct mlx5e_priv *priv, @@ -1158,6 +1168,24 @@ mlx5e_close_tis(priv, tc); } +static int mlx5e_rx_hash_fn(int hfunc) +{ + return (hfunc == ETH_RSS_HASH_TOP) ? + MLX5_RX_HASH_FN_TOEPLITZ : + MLX5_RX_HASH_FN_INVERTED_XOR8; +} + +static int mlx5e_bits_invert(unsigned long a, int size) +{ + int inv = 0; + int i; + + for (i = 0; i < size; i++) + inv |= (test_bit(size - i - 1, &a) ? 1 : 0) << i; + + return inv; +} + static int mlx5e_open_rqt(struct mlx5e_priv *priv) { struct mlx5_core_dev *mdev = priv->mdev; @@ -1166,11 +1194,10 @@ void *rqtc; int inlen; int err; - int sz; + int log_tbl_sz = priv->params.rx_hash_log_tbl_sz; + int sz = 1 << log_tbl_sz; int i; - sz = 1 << priv->params.rx_hash_log_tbl_sz; - inlen = MLX5_ST_SZ_BYTES(create_rqt_in) + sizeof(u32) * sz; in = mlx5_vzalloc(inlen); if (!in) @@ -1182,8 +1209,12 @@ MLX5_SET(rqtc, rqtc, rqt_max_size, sz); for (i = 0; i < sz; i++) { - int ix = i % priv->params.num_channels; + int ix = i; + + if (priv->params.rss_hfunc == ETH_RSS_HASH_XOR) + ix = mlx5e_bits_invert(i, log_tbl_sz); + ix = ix % priv->params.num_channels; MLX5_SET(rqtc, rqtc, rq_num[i], priv->channel[ix]->rq.rqn); } @@ -1221,13 +1252,17 @@ #define ROUGH_MAX_L2_L3_HDR_SZ 256 -#define MLX5_HASH_IP (MLX5_HASH_FIELD_SEL_SRC_IP |\ - MLX5_HASH_FIELD_SEL_DST_IP) +#define MLX5_HASH_IP (MLX5_HASH_FIELD_SEL_SRC_IP |\ + MLX5_HASH_FIELD_SEL_DST_IP) -#define MLX5_HASH_ALL (MLX5_HASH_FIELD_SEL_SRC_IP |\ - MLX5_HASH_FIELD_SEL_DST_IP |\ - MLX5_HASH_FIELD_SEL_L4_SPORT |\ - MLX5_HASH_FIELD_SEL_L4_DPORT) +#define MLX5_HASH_IP_L4PORTS (MLX5_HASH_FIELD_SEL_SRC_IP |\ + MLX5_HASH_FIELD_SEL_DST_IP |\ + MLX5_HASH_FIELD_SEL_L4_SPORT |\ + MLX5_HASH_FIELD_SEL_L4_DPORT) + +#define MLX5_HASH_IP_IPSEC_SPI (MLX5_HASH_FIELD_SEL_SRC_IP |\ + MLX5_HASH_FIELD_SEL_DST_IP |\ + MLX5_HASH_FIELD_SEL_IPSEC_SPI) if (priv->params.lro_en) { MLX5_SET(tirc, tirc, lro_enable_mask, @@ -1254,12 +1289,16 @@ MLX5_SET(tirc, tirc, indirect_table, priv->rqtn); MLX5_SET(tirc, tirc, rx_hash_fn, - MLX5_TIRC_RX_HASH_FN_HASH_TOEPLITZ); - MLX5_SET(tirc, tirc, rx_hash_symmetric, 1); - netdev_rss_key_fill(MLX5_ADDR_OF(tirc, tirc, - rx_hash_toeplitz_key), - MLX5_FLD_SZ_BYTES(tirc, - rx_hash_toeplitz_key)); + mlx5e_rx_hash_fn(priv->params.rss_hfunc)); + if (priv->params.rss_hfunc == ETH_RSS_HASH_TOP) { + void *rss_key = MLX5_ADDR_OF(tirc, tirc, + rx_hash_toeplitz_key); + size_t len = MLX5_FLD_SZ_BYTES(tirc, + rx_hash_toeplitz_key); + + MLX5_SET(tirc, tirc, rx_hash_symmetric, 1); + netdev_rss_key_fill(rss_key, len); + } break; } @@ -1270,7 +1309,7 @@ MLX5_SET(rx_hash_field_select, hfso, l4_prot_type, MLX5_L4_PROT_TYPE_TCP); MLX5_SET(rx_hash_field_select, hfso, selected_fields, - MLX5_HASH_ALL); + MLX5_HASH_IP_L4PORTS); break; case MLX5E_TT_IPV6_TCP: @@ -1279,7 +1318,7 @@ MLX5_SET(rx_hash_field_select, hfso, l4_prot_type, MLX5_L4_PROT_TYPE_TCP); MLX5_SET(rx_hash_field_select, hfso, selected_fields, - MLX5_HASH_ALL); + MLX5_HASH_IP_L4PORTS); break; case MLX5E_TT_IPV4_UDP: @@ -1288,7 +1327,7 @@ MLX5_SET(rx_hash_field_select, hfso, l4_prot_type, MLX5_L4_PROT_TYPE_UDP); MLX5_SET(rx_hash_field_select, hfso, selected_fields, - MLX5_HASH_ALL); + MLX5_HASH_IP_L4PORTS); break; case MLX5E_TT_IPV6_UDP: @@ -1297,7 +1336,35 @@ MLX5_SET(rx_hash_field_select, hfso, l4_prot_type, MLX5_L4_PROT_TYPE_UDP); MLX5_SET(rx_hash_field_select, hfso, selected_fields, - MLX5_HASH_ALL); + MLX5_HASH_IP_L4PORTS); + break; + + case MLX5E_TT_IPV4_IPSEC_AH: + MLX5_SET(rx_hash_field_select, hfso, l3_prot_type, + MLX5_L3_PROT_TYPE_IPV4); + MLX5_SET(rx_hash_field_select, hfso, selected_fields, + MLX5_HASH_IP_IPSEC_SPI); + break; + + case MLX5E_TT_IPV6_IPSEC_AH: + MLX5_SET(rx_hash_field_select, hfso, l3_prot_type, + MLX5_L3_PROT_TYPE_IPV6); + MLX5_SET(rx_hash_field_select, hfso, selected_fields, + MLX5_HASH_IP_IPSEC_SPI); + break; + + case MLX5E_TT_IPV4_IPSEC_ESP: + MLX5_SET(rx_hash_field_select, hfso, l3_prot_type, + MLX5_L3_PROT_TYPE_IPV4); + MLX5_SET(rx_hash_field_select, hfso, selected_fields, + MLX5_HASH_IP_IPSEC_SPI); + break; + + case MLX5E_TT_IPV6_IPSEC_ESP: + MLX5_SET(rx_hash_field_select, hfso, l3_prot_type, + MLX5_L3_PROT_TYPE_IPV6); + MLX5_SET(rx_hash_field_select, hfso, selected_fields, + MLX5_HASH_IP_IPSEC_SPI); break; case MLX5E_TT_IPV4: @@ -1625,6 +1692,8 @@ mlx5_query_port_max_mtu(mdev, &max_mtu, 1); + max_mtu = MLX5E_HW2SW_MTU(max_mtu); + if (new_mtu > max_mtu) { netdev_err(netdev, "%s: Bad MTU (%d) > (%d) Max\n", @@ -1673,6 +1742,15 @@ return 0; } +u16 mlx5e_get_max_inline_cap(struct mlx5_core_dev *mdev) +{ + int bf_buf_size = (1 << MLX5_CAP_GEN(mdev, log_bf_reg_size)) / 2; + + return bf_buf_size - + sizeof(struct mlx5e_tx_wqe) + + 2 /*sizeof(mlx5e_tx_wqe.inline_hdr_start)*/; +} + static void mlx5e_build_netdev_priv(struct mlx5_core_dev *mdev, struct net_device *netdev, int num_comp_vectors) @@ -1691,6 +1769,7 @@ MLX5E_PARAMS_DEFAULT_TX_CQ_MODERATION_USEC; priv->params.tx_cq_moderation_pkts = MLX5E_PARAMS_DEFAULT_TX_CQ_MODERATION_PKTS; + priv->params.tx_max_inline = mlx5e_get_max_inline_cap(mdev); priv->params.min_rx_wqes = MLX5E_PARAMS_DEFAULT_MIN_RX_WQES; priv->params.rx_hash_log_tbl_sz = @@ -1700,6 +1779,7 @@ MLX5E_PARAMS_DEFAULT_RX_HASH_LOG_TBL_SZ; priv->params.num_tc = 1; priv->params.default_vlan_prio = 0; + priv->params.rss_hfunc = ETH_RSS_HASH_XOR; priv->params.lro_en = false && !!MLX5_CAP_ETH(priv->mdev, lro_cap); priv->params.lro_wqe_sz = @@ -1755,6 +1835,7 @@ netdev->vlan_features |= NETIF_F_LRO; netdev->hw_features = netdev->vlan_features; + netdev->hw_features |= NETIF_F_HW_VLAN_CTAG_TX; netdev->hw_features |= NETIF_F_HW_VLAN_CTAG_RX; netdev->hw_features |= NETIF_F_HW_VLAN_CTAG_FILTER; --- linux-raspi2-4.2.0.orig/drivers/net/ethernet/mellanox/mlx5/core/en_tx.c +++ linux-raspi2-4.2.0/drivers/net/ethernet/mellanox/mlx5/core/en_tx.c @@ -57,7 +57,7 @@ if (notify_hw) { cseg->fm_ce_se = MLX5_WQE_CTRL_CQ_UPDATE; - mlx5e_tx_notify_hw(sq, wqe); + mlx5e_tx_notify_hw(sq, wqe, 0); } } @@ -110,12 +110,42 @@ } static inline u16 mlx5e_get_inline_hdr_size(struct mlx5e_sq *sq, - struct sk_buff *skb) + struct sk_buff *skb, bool bf) { -#define MLX5E_MIN_INLINE 16 /* eth header with vlan (w/o next ethertype) */ + /* Some NIC TX decisions, e.g loopback, are based on the packet + * headers and occur before the data gather. + * Therefore these headers must be copied into the WQE + */ +#define MLX5E_MIN_INLINE ETH_HLEN + + if (bf) { + u16 ihs = skb_headlen(skb); + + if (skb_vlan_tag_present(skb)) + ihs += VLAN_HLEN; + + if (ihs <= sq->max_inline) + return skb_headlen(skb); + } + return MLX5E_MIN_INLINE; } +static inline void mlx5e_insert_vlan(void *start, struct sk_buff *skb, u16 ihs) +{ + struct vlan_ethhdr *vhdr = (struct vlan_ethhdr *)start; + int cpy1_sz = 2 * ETH_ALEN; + int cpy2_sz = ihs - cpy1_sz; + + skb_copy_from_linear_data(skb, vhdr, cpy1_sz); + skb_pull_inline(skb, cpy1_sz); + vhdr->h_vlan_proto = skb->vlan_proto; + vhdr->h_vlan_TCI = cpu_to_be16(skb_vlan_tag_get(skb)); + skb_copy_from_linear_data(skb, &vhdr->h_vlan_encapsulated_proto, + cpy2_sz); + skb_pull_inline(skb, cpy2_sz); +} + static netdev_tx_t mlx5e_sq_xmit(struct mlx5e_sq *sq, struct sk_buff *skb) { struct mlx5_wq_cyc *wq = &sq->wq; @@ -129,6 +159,7 @@ u8 opcode = MLX5_OPCODE_SEND; dma_addr_t dma_addr = 0; + bool bf = false; u16 headlen; u16 ds_cnt; u16 ihs; @@ -141,6 +172,11 @@ else sq->stats.csum_offload_none++; + if (sq->cc != sq->prev_cc) { + sq->prev_cc = sq->cc; + sq->bf_budget = (sq->cc == sq->pc) ? MLX5E_SQ_BF_BUDGET : 0; + } + if (skb_is_gso(skb)) { u32 payload_len; @@ -153,13 +189,21 @@ sq->stats.tso_packets++; sq->stats.tso_bytes += payload_len; } else { - ihs = mlx5e_get_inline_hdr_size(sq, skb); + bf = sq->bf_budget && + !skb->xmit_more && + !skb_shinfo(skb)->nr_frags; + ihs = mlx5e_get_inline_hdr_size(sq, skb, bf); MLX5E_TX_SKB_CB(skb)->num_bytes = max_t(unsigned int, skb->len, ETH_ZLEN); } - skb_copy_from_linear_data(skb, eseg->inline_hdr_start, ihs); - skb_pull_inline(skb, ihs); + if (skb_vlan_tag_present(skb)) { + mlx5e_insert_vlan(eseg->inline_hdr_start, skb, ihs); + ihs += VLAN_HLEN; + } else { + skb_copy_from_linear_data(skb, eseg->inline_hdr_start, ihs); + skb_pull_inline(skb, ihs); + } eseg->inline_hdr_sz = cpu_to_be16(ihs); @@ -225,14 +269,21 @@ } if (!skb->xmit_more || netif_xmit_stopped(sq->txq)) { + int bf_sz = 0; + + if (bf && sq->uar_bf_map) + bf_sz = MLX5E_TX_SKB_CB(skb)->num_wqebbs << 3; + cseg->fm_ce_se = MLX5_WQE_CTRL_CQ_UPDATE; - mlx5e_tx_notify_hw(sq, wqe); + mlx5e_tx_notify_hw(sq, wqe, bf_sz); } /* fill sq edge with nops to avoid wqe wrap around */ while ((sq->pc & wq->sz_m1) > sq->edge) mlx5e_send_nop(sq, false); + sq->bf_budget = bf ? sq->bf_budget - 1 : 0; + sq->stats.packets++; return NETDEV_TX_OK; --- linux-raspi2-4.2.0.orig/drivers/net/ethernet/mellanox/mlx5/core/main.c +++ linux-raspi2-4.2.0/drivers/net/ethernet/mellanox/mlx5/core/main.c @@ -457,7 +457,7 @@ struct mlx5_priv *priv = &mdev->priv; struct msix_entry *msix = priv->msix_arr; int irq = msix[i + MLX5_EQ_VEC_COMP_BASE].vector; - int numa_node = dev_to_node(&mdev->pdev->dev); + int numa_node = priv->numa_node; int err; if (!zalloc_cpumask_var(&priv->irq_info[i].mask, GFP_KERNEL)) { @@ -656,6 +656,22 @@ } #endif +static int map_bf_area(struct mlx5_core_dev *dev) +{ + resource_size_t bf_start = pci_resource_start(dev->pdev, 0); + resource_size_t bf_len = pci_resource_len(dev->pdev, 0); + + dev->priv.bf_mapping = io_mapping_create_wc(bf_start, bf_len); + + return dev->priv.bf_mapping ? 0 : -ENOMEM; +} + +static void unmap_bf_area(struct mlx5_core_dev *dev) +{ + if (dev->priv.bf_mapping) + io_mapping_free(dev->priv.bf_mapping); +} + static int mlx5_dev_init(struct mlx5_core_dev *dev, struct pci_dev *pdev) { struct mlx5_priv *priv = &dev->priv; @@ -670,6 +686,10 @@ INIT_LIST_HEAD(&priv->pgdir_list); spin_lock_init(&priv->mkey_lock); + mutex_init(&priv->alloc_mutex); + + priv->numa_node = dev_to_node(&dev->pdev->dev); + priv->dbg_root = debugfs_create_dir(dev_name(&pdev->dev), mlx5_debugfs_root); if (!priv->dbg_root) return -ENOMEM; @@ -806,10 +826,13 @@ goto err_stop_eqs; } + if (map_bf_area(dev)) + dev_err(&pdev->dev, "Failed to map blue flame area\n"); + err = mlx5_irq_set_affinity_hints(dev); if (err) { dev_err(&pdev->dev, "Failed to alloc affinity hint cpumask\n"); - goto err_free_comp_eqs; + goto err_unmap_bf_area; } MLX5_INIT_DOORBELL_LOCK(&priv->cq_uar_lock); @@ -821,7 +844,9 @@ return 0; -err_free_comp_eqs: +err_unmap_bf_area: + unmap_bf_area(dev); + free_comp_eqs(dev); err_stop_eqs: @@ -879,6 +904,7 @@ mlx5_cleanup_qp_table(dev); mlx5_cleanup_cq_table(dev); mlx5_irq_clear_affinity_hints(dev); + unmap_bf_area(dev); free_comp_eqs(dev); mlx5_stop_eqs(dev); mlx5_free_uuars(dev, &priv->uuari); --- linux-raspi2-4.2.0.orig/drivers/net/ethernet/mellanox/mlx5/core/port.c +++ linux-raspi2-4.2.0/drivers/net/ethernet/mellanox/mlx5/core/port.c @@ -216,22 +216,25 @@ } EXPORT_SYMBOL_GPL(mlx5_set_port_proto); -int mlx5_set_port_status(struct mlx5_core_dev *dev, - enum mlx5_port_status status) +int mlx5_set_port_admin_status(struct mlx5_core_dev *dev, + enum mlx5_port_status status) { u32 in[MLX5_ST_SZ_DW(paos_reg)]; u32 out[MLX5_ST_SZ_DW(paos_reg)]; memset(in, 0, sizeof(in)); + MLX5_SET(paos_reg, in, local_port, 1); MLX5_SET(paos_reg, in, admin_status, status); MLX5_SET(paos_reg, in, ase, 1); return mlx5_core_access_reg(dev, in, sizeof(in), out, sizeof(out), MLX5_REG_PAOS, 0, 1); } +EXPORT_SYMBOL_GPL(mlx5_set_port_admin_status); -int mlx5_query_port_status(struct mlx5_core_dev *dev, u8 *status) +int mlx5_query_port_admin_status(struct mlx5_core_dev *dev, + enum mlx5_port_status *status) { u32 in[MLX5_ST_SZ_DW(paos_reg)]; u32 out[MLX5_ST_SZ_DW(paos_reg)]; @@ -239,14 +242,17 @@ memset(in, 0, sizeof(in)); + MLX5_SET(paos_reg, in, local_port, 1); + err = mlx5_core_access_reg(dev, in, sizeof(in), out, sizeof(out), MLX5_REG_PAOS, 0, 0); if (err) return err; - *status = MLX5_GET(paos_reg, out, oper_status); + *status = MLX5_GET(paos_reg, out, admin_status); return err; } +EXPORT_SYMBOL_GPL(mlx5_query_port_admin_status); static void mlx5_query_port_mtu(struct mlx5_core_dev *dev, int *admin_mtu, int *max_mtu, int *oper_mtu, u8 port) --- linux-raspi2-4.2.0.orig/drivers/net/ethernet/mellanox/mlx5/core/uar.c +++ linux-raspi2-4.2.0/drivers/net/ethernet/mellanox/mlx5/core/uar.c @@ -32,6 +32,7 @@ #include #include +#include #include #include #include "mlx5_core.h" @@ -246,6 +247,10 @@ goto err_free_uar; } + if (mdev->priv.bf_mapping) + uar->bf_map = io_mapping_map_wc(mdev->priv.bf_mapping, + uar->index << PAGE_SHIFT); + return 0; err_free_uar: @@ -257,6 +262,7 @@ void mlx5_unmap_free_uar(struct mlx5_core_dev *mdev, struct mlx5_uar *uar) { + io_mapping_unmap(uar->bf_map); iounmap(uar->map); mlx5_cmd_free_uar(mdev, uar->index); } --- linux-raspi2-4.2.0.orig/drivers/net/ethernet/mellanox/mlx5/core/wq.c +++ linux-raspi2-4.2.0/drivers/net/ethernet/mellanox/mlx5/core/wq.c @@ -73,13 +73,14 @@ wq->log_stride = MLX5_GET(wq, wqc, log_wq_stride); wq->sz_m1 = (1 << MLX5_GET(wq, wqc, log_wq_sz)) - 1; - err = mlx5_db_alloc(mdev, &wq_ctrl->db); + err = mlx5_db_alloc_node(mdev, &wq_ctrl->db, param->db_numa_node); if (err) { mlx5_core_warn(mdev, "mlx5_db_alloc() failed, %d\n", err); return err; } - err = mlx5_buf_alloc(mdev, mlx5_wq_cyc_get_byte_size(wq), &wq_ctrl->buf); + err = mlx5_buf_alloc_node(mdev, mlx5_wq_cyc_get_byte_size(wq), + &wq_ctrl->buf, param->buf_numa_node); if (err) { mlx5_core_warn(mdev, "mlx5_buf_alloc() failed, %d\n", err); goto err_db_free; @@ -108,13 +109,14 @@ wq->log_sz = MLX5_GET(cqc, cqc, log_cq_size); wq->sz_m1 = (1 << wq->log_sz) - 1; - err = mlx5_db_alloc(mdev, &wq_ctrl->db); + err = mlx5_db_alloc_node(mdev, &wq_ctrl->db, param->db_numa_node); if (err) { mlx5_core_warn(mdev, "mlx5_db_alloc() failed, %d\n", err); return err; } - err = mlx5_buf_alloc(mdev, mlx5_cqwq_get_byte_size(wq), &wq_ctrl->buf); + err = mlx5_buf_alloc_node(mdev, mlx5_cqwq_get_byte_size(wq), + &wq_ctrl->buf, param->buf_numa_node); if (err) { mlx5_core_warn(mdev, "mlx5_buf_alloc() failed, %d\n", err); goto err_db_free; @@ -144,7 +146,7 @@ wq->log_stride = MLX5_GET(wq, wqc, log_wq_stride); wq->sz_m1 = (1 << MLX5_GET(wq, wqc, log_wq_sz)) - 1; - err = mlx5_db_alloc(mdev, &wq_ctrl->db); + err = mlx5_db_alloc_node(mdev, &wq_ctrl->db, param->db_numa_node); if (err) { mlx5_core_warn(mdev, "mlx5_db_alloc() failed, %d\n", err); return err; --- linux-raspi2-4.2.0.orig/drivers/net/ethernet/mellanox/mlx5/core/wq.h +++ linux-raspi2-4.2.0/drivers/net/ethernet/mellanox/mlx5/core/wq.h @@ -37,7 +37,8 @@ struct mlx5_wq_param { int linear; - int numa; + int buf_numa_node; + int db_numa_node; }; struct mlx5_wq_ctrl { --- linux-raspi2-4.2.0.orig/drivers/net/ethernet/microchip/enc28j60.c +++ linux-raspi2-4.2.0/drivers/net/ethernet/microchip/enc28j60.c @@ -1630,10 +1630,21 @@ return 0; } +#ifdef CONFIG_OF +static const struct of_device_id enc28j60_of_match[] = { + { .compatible = "microchip,enc28j60", }, + { /* sentinel */ } +}; +MODULE_DEVICE_TABLE(of, enc28j60_of_match); +#endif + static struct spi_driver enc28j60_driver = { .driver = { .name = DRV_NAME, .owner = THIS_MODULE, +#ifdef CONFIG_OF + .of_match_table = enc28j60_of_match, +#endif }, .probe = enc28j60_probe, .remove = enc28j60_remove, --- linux-raspi2-4.2.0.orig/drivers/net/ethernet/neterion/vxge/vxge-main.c +++ linux-raspi2-4.2.0/drivers/net/ethernet/neterion/vxge/vxge-main.c @@ -4219,6 +4219,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; @@ -4261,9 +4264,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 @@ -4868,3 +4871,5 @@ } module_init(vxge_starter); module_exit(vxge_closer); +MODULE_FIRMWARE(VXGE_PXE_FIRMWARE); +MODULE_FIRMWARE(VXGE_FIRMWARE); --- linux-raspi2-4.2.0.orig/drivers/net/ethernet/qualcomm/qca_spi.c +++ linux-raspi2-4.2.0/drivers/net/ethernet/qualcomm/qca_spi.c @@ -736,9 +736,8 @@ netdev_info(qca->net_dev, "Transmit timeout at %ld, latency %ld\n", jiffies, jiffies - dev->trans_start); qca->net_dev->stats.tx_errors++; - /* wake the queue if there is room */ - if (qcaspi_tx_ring_has_space(&qca->txr)) - netif_wake_queue(dev); + /* Trigger tx queue flush and QCA7000 reset */ + qca->sync = QCASPI_SYNC_UNKNOWN; } static int --- linux-raspi2-4.2.0.orig/drivers/net/ethernet/renesas/sh_eth.c +++ linux-raspi2-4.2.0/drivers/net/ethernet/renesas/sh_eth.c @@ -1481,6 +1481,7 @@ if (mdp->cd->shift_rd0) desc_status >>= 16; + skb = mdp->rx_skbuff[entry]; if (desc_status & (RD_RFS1 | RD_RFS2 | RD_RFS3 | RD_RFS4 | RD_RFS5 | RD_RFS6 | RD_RFS10)) { ndev->stats.rx_errors++; @@ -1496,12 +1497,11 @@ ndev->stats.rx_missed_errors++; if (desc_status & RD_RFS10) ndev->stats.rx_over_errors++; - } else { + } else if (skb) { if (!mdp->cd->hw_swap) sh_eth_soft_swap( phys_to_virt(ALIGN(rxdesc->addr, 4)), pkt_len + 2); - skb = mdp->rx_skbuff[entry]; mdp->rx_skbuff[entry] = NULL; if (mdp->cd->rpadir) skb_reserve(skb, NET_IP_ALIGN); --- linux-raspi2-4.2.0.orig/drivers/net/ethernet/sfc/ef10.c +++ linux-raspi2-4.2.0/drivers/net/ethernet/sfc/ef10.c @@ -1809,7 +1809,9 @@ unsigned int write_ptr; efx_qword_t *txd; - BUG_ON(tx_queue->write_count == tx_queue->insert_count); + tx_queue->xmit_more_available = false; + if (unlikely(tx_queue->write_count == tx_queue->insert_count)) + return; do { write_ptr = tx_queue->write_count & tx_queue->ptr_mask; --- linux-raspi2-4.2.0.orig/drivers/net/ethernet/sfc/farch.c +++ linux-raspi2-4.2.0/drivers/net/ethernet/sfc/farch.c @@ -321,7 +321,9 @@ unsigned write_ptr; unsigned old_write_count = tx_queue->write_count; - BUG_ON(tx_queue->write_count == tx_queue->insert_count); + tx_queue->xmit_more_available = false; + if (unlikely(tx_queue->write_count == tx_queue->insert_count)) + return; do { write_ptr = tx_queue->write_count & tx_queue->ptr_mask; --- linux-raspi2-4.2.0.orig/drivers/net/ethernet/sfc/net_driver.h +++ linux-raspi2-4.2.0/drivers/net/ethernet/sfc/net_driver.h @@ -219,6 +219,7 @@ * @tso_packets: Number of packets via the TSO xmit path * @pushes: Number of times the TX push feature has been used * @pio_packets: Number of times the TX PIO feature has been used + * @xmit_more_available: Are any packets waiting to be pushed to the NIC * @empty_read_count: If the completion path has seen the queue as empty * and the transmission path has not yet checked this, the value of * @read_count bitwise-added to %EFX_EMPTY_COUNT_VALID; otherwise 0. @@ -253,6 +254,7 @@ unsigned int tso_packets; unsigned int pushes; unsigned int pio_packets; + bool xmit_more_available; /* Statistics to supplement MAC stats */ unsigned long tx_packets; --- linux-raspi2-4.2.0.orig/drivers/net/ethernet/sfc/tx.c +++ linux-raspi2-4.2.0/drivers/net/ethernet/sfc/tx.c @@ -431,8 +431,20 @@ efx_tx_maybe_stop_queue(tx_queue); /* Pass off to hardware */ - if (!skb->xmit_more || netif_xmit_stopped(tx_queue->core_txq)) + if (!skb->xmit_more || netif_xmit_stopped(tx_queue->core_txq)) { + struct efx_tx_queue *txq2 = efx_tx_queue_partner(tx_queue); + + /* There could be packets left on the partner queue if those + * SKBs had skb->xmit_more set. If we do not push those they + * could be left for a long time and cause a netdev watchdog. + */ + if (txq2->xmit_more_available) + efx_nic_push_buffers(txq2); + efx_nic_push_buffers(tx_queue); + } else { + tx_queue->xmit_more_available = skb->xmit_more; + } tx_queue->tx_packets++; @@ -722,6 +734,7 @@ tx_queue->read_count = 0; tx_queue->old_read_count = 0; tx_queue->empty_read_count = 0 | EFX_EMPTY_COUNT_VALID; + tx_queue->xmit_more_available = false; /* Set up TX descriptor ring */ efx_nic_init_tx(tx_queue); @@ -747,6 +760,7 @@ ++tx_queue->read_count; } + tx_queue->xmit_more_available = false; netdev_tx_reset_queue(tx_queue->core_txq); } @@ -1302,8 +1316,20 @@ efx_tx_maybe_stop_queue(tx_queue); /* Pass off to hardware */ - if (!skb->xmit_more || netif_xmit_stopped(tx_queue->core_txq)) + if (!skb->xmit_more || netif_xmit_stopped(tx_queue->core_txq)) { + struct efx_tx_queue *txq2 = efx_tx_queue_partner(tx_queue); + + /* There could be packets left on the partner queue if those + * SKBs had skb->xmit_more set. If we do not push those they + * could be left for a long time and cause a netdev watchdog. + */ + if (txq2->xmit_more_available) + efx_nic_push_buffers(txq2); + efx_nic_push_buffers(tx_queue); + } else { + tx_queue->xmit_more_available = skb->xmit_more; + } tx_queue->tso_bursts++; return NETDEV_TX_OK; --- linux-raspi2-4.2.0.orig/drivers/net/ethernet/stmicro/stmmac/stmmac_ethtool.c +++ linux-raspi2-4.2.0/drivers/net/ethernet/stmicro/stmmac/stmmac_ethtool.c @@ -721,10 +721,13 @@ { struct stmmac_priv *priv = netdev_priv(dev); - if ((priv->hwts_tx_en) && (priv->hwts_rx_en)) { + if ((priv->dma_cap.time_stamp || priv->dma_cap.atime_stamp)) { - info->so_timestamping = SOF_TIMESTAMPING_TX_HARDWARE | + info->so_timestamping = SOF_TIMESTAMPING_TX_SOFTWARE | + SOF_TIMESTAMPING_TX_HARDWARE | + SOF_TIMESTAMPING_RX_SOFTWARE | SOF_TIMESTAMPING_RX_HARDWARE | + SOF_TIMESTAMPING_SOFTWARE | SOF_TIMESTAMPING_RAW_HARDWARE; if (priv->ptp_clock) --- linux-raspi2-4.2.0.orig/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c +++ linux-raspi2-4.2.0/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c @@ -837,8 +837,11 @@ interface); } - if (IS_ERR(phydev)) { + if (IS_ERR_OR_NULL(phydev)) { pr_err("%s: Could not attach to PHY\n", dev->name); + if (!phydev) + return -ENODEV; + return PTR_ERR(phydev); } --- linux-raspi2-4.2.0.orig/drivers/net/ethernet/via/Kconfig +++ linux-raspi2-4.2.0/drivers/net/ethernet/via/Kconfig @@ -17,7 +17,7 @@ config VIA_RHINE tristate "VIA Rhine support" - depends on (PCI || OF_IRQ) + depends on PCI || (OF_IRQ && GENERIC_PCI_IOMAP) depends on HAS_DMA select CRC32 select MII --- linux-raspi2-4.2.0.orig/drivers/net/ethernet/via/via-rhine.c +++ linux-raspi2-4.2.0/drivers/net/ethernet/via/via-rhine.c @@ -2134,10 +2134,11 @@ } skb_put(skb, pkt_len); - skb->protocol = eth_type_trans(skb, dev); rhine_rx_vlan_tag(skb, desc, data_size); + skb->protocol = eth_type_trans(skb, dev); + netif_receive_skb(skb); u64_stats_update_begin(&rp->rx_stats.syncp); --- linux-raspi2-4.2.0.orig/drivers/net/hyperv/hyperv_net.h +++ linux-raspi2-4.2.0/drivers/net/hyperv/hyperv_net.h @@ -162,6 +162,7 @@ bool link_state; /* 0 - link up, 1 - link down */ int ring_size; u32 max_num_vrss_chns; + u32 num_chn; }; enum rndis_device_state { @@ -541,6 +542,29 @@ struct nvsp_2_free_rxbuf free_rxbuf; } __packed; +struct nvsp_4_send_vf_association { + /* 1: allocated, serial number is valid. 0: not allocated */ + u32 allocated; + + /* Serial number of the VF to team with */ + u32 serial; +} __packed; + +enum nvsp_vm_datapath { + NVSP_DATAPATH_SYNTHETIC = 0, + NVSP_DATAPATH_VF, + NVSP_DATAPATH_MAX +}; + +struct nvsp_4_sw_datapath { + u32 active_datapath; /* active data path in VM */ +} __packed; + +union nvsp_4_message_uber { + struct nvsp_4_send_vf_association vf_assoc; + struct nvsp_4_sw_datapath active_dp; +} __packed; + enum nvsp_subchannel_operation { NVSP_SUBCHANNEL_NONE = 0, NVSP_SUBCHANNEL_ALLOCATE, @@ -578,6 +602,7 @@ union nvsp_message_init_uber init_msg; union nvsp_1_message_uber v1_msg; union nvsp_2_message_uber v2_msg; + union nvsp_4_message_uber v4_msg; union nvsp_5_message_uber v5_msg; } __packed; @@ -589,6 +614,7 @@ #define NETVSC_MTU 65536 +#define NETVSC_MTU_MIN 68 #define NETVSC_RECEIVE_BUFFER_SIZE (1024*1024*16) /* 16MB */ #define NETVSC_RECEIVE_BUFFER_SIZE_LEGACY (1024*1024*15) /* 15MB */ @@ -670,6 +696,8 @@ u32 send_table[VRSS_SEND_TAB_SIZE]; u32 max_chn; u32 num_chn; + spinlock_t sc_lock; /* Protects num_sc_offered variable */ + u32 num_sc_offered; atomic_t queue_sends[NR_CPUS]; /* Holds rndis device info */ @@ -688,6 +716,11 @@ /* The net device context */ struct net_device_context *nd_ctx; + + /* 1: allocated, serial number is valid. 0: not allocated */ + u32 vf_alloc; + /* Serial number of the VF to team with */ + u32 vf_serial; }; /* NdisInitialize message */ --- linux-raspi2-4.2.0.orig/drivers/net/hyperv/netvsc.c +++ linux-raspi2-4.2.0/drivers/net/hyperv/netvsc.c @@ -453,13 +453,16 @@ if (nvsp_ver == NVSP_PROTOCOL_VERSION_1) return 0; - /* NVSPv2 only: Send NDIS config */ + /* NVSPv2 or later: Send NDIS config */ memset(init_packet, 0, sizeof(struct nvsp_message)); init_packet->hdr.msg_type = NVSP_MSG2_TYPE_SEND_NDIS_CONFIG; init_packet->msg.v2_msg.send_ndis_config.mtu = net_device->ndev->mtu + ETH_HLEN; init_packet->msg.v2_msg.send_ndis_config.capability.ieee8021q = 1; + if (nvsp_ver >= NVSP_PROTOCOL_VERSION_5) + init_packet->msg.v2_msg.send_ndis_config.capability.sriov = 1; + ret = vmbus_sendpacket(device->channel, init_packet, sizeof(struct nvsp_message), (unsigned long)init_packet, @@ -1064,11 +1067,10 @@ static void netvsc_send_table(struct hv_device *hdev, - struct vmpacket_descriptor *vmpkt) + struct nvsp_message *nvmsg) { struct netvsc_device *nvscdev; struct net_device *ndev; - struct nvsp_message *nvmsg; int i; u32 count, *tab; @@ -1077,12 +1079,6 @@ return; ndev = nvscdev->ndev; - nvmsg = (struct nvsp_message *)((unsigned long)vmpkt + - (vmpkt->offset8 << 3)); - - if (nvmsg->hdr.msg_type != NVSP_MSG5_TYPE_SEND_INDIRECTION_TABLE) - return; - count = nvmsg->msg.v5_msg.send_table.count; if (count != VRSS_SEND_TAB_SIZE) { netdev_err(ndev, "Received wrong send-table size:%u\n", count); @@ -1096,6 +1092,28 @@ nvscdev->send_table[i] = tab[i]; } +static void netvsc_send_vf(struct netvsc_device *nvdev, + struct nvsp_message *nvmsg) +{ + nvdev->vf_alloc = nvmsg->msg.v4_msg.vf_assoc.allocated; + nvdev->vf_serial = nvmsg->msg.v4_msg.vf_assoc.serial; +} + +static inline void netvsc_receive_inband(struct hv_device *hdev, + struct netvsc_device *nvdev, + struct nvsp_message *nvmsg) +{ + switch (nvmsg->hdr.msg_type) { + case NVSP_MSG5_TYPE_SEND_INDIRECTION_TABLE: + netvsc_send_table(hdev, nvmsg); + break; + + case NVSP_MSG4_TYPE_SEND_VF_ASSOCIATION: + netvsc_send_vf(nvdev, nvmsg); + break; + } +} + void netvsc_channel_cb(void *context) { int ret; @@ -1108,6 +1126,7 @@ unsigned char *buffer; int bufferlen = NETVSC_PACKET_SIZE; struct net_device *ndev; + struct nvsp_message *nvmsg; if (channel->primary_channel != NULL) device = channel->primary_channel->device_obj; @@ -1126,6 +1145,8 @@ if (ret == 0) { if (bytes_recvd > 0) { desc = (struct vmpacket_descriptor *)buffer; + nvmsg = (struct nvsp_message *)((unsigned long) + desc + (desc->offset8 << 3)); switch (desc->type) { case VM_PKT_COMP: netvsc_send_completion(net_device, @@ -1138,7 +1159,9 @@ break; case VM_PKT_DATA_INBAND: - netvsc_send_table(device, desc); + netvsc_receive_inband(device, + net_device, + nvmsg); break; default: --- linux-raspi2-4.2.0.orig/drivers/net/hyperv/netvsc_drv.c +++ linux-raspi2-4.2.0/drivers/net/hyperv/netvsc_drv.c @@ -106,7 +106,7 @@ return ret; } - netif_tx_start_all_queues(net); + netif_tx_wake_all_queues(net); nvdev = hv_get_drvdata(device_obj); rdev = nvdev->extension; @@ -120,15 +120,56 @@ { struct net_device_context *net_device_ctx = netdev_priv(net); struct hv_device *device_obj = net_device_ctx->device_ctx; + struct netvsc_device *nvdev = hv_get_drvdata(device_obj); int ret; + u32 aread, awrite, i, msec = 10, retry = 0, retry_max = 20; + struct vmbus_channel *chn; netif_tx_disable(net); /* Make sure netvsc_set_multicast_list doesn't re-enable filter! */ cancel_work_sync(&net_device_ctx->work); ret = rndis_filter_close(device_obj); - if (ret != 0) + if (ret != 0) { netdev_err(net, "unable to close device (ret %d).\n", ret); + return ret; + } + + /* Ensure pending bytes in ring are read */ + while (true) { + aread = 0; + for (i = 0; i < nvdev->num_chn; i++) { + chn = nvdev->chn_table[i]; + if (!chn) + continue; + + hv_get_ringbuffer_availbytes(&chn->inbound, &aread, + &awrite); + + if (aread) + break; + + hv_get_ringbuffer_availbytes(&chn->outbound, &aread, + &awrite); + + if (aread) + break; + } + + retry++; + if (retry > retry_max || aread == 0) + break; + + msleep(msec); + + if (msec < 1000) + msec *= 2; + } + + if (aread) { + netdev_err(net, "Ring buffer not empty after closing rndis\n"); + ret = -ETIMEDOUT; + } return ret; } @@ -195,20 +236,40 @@ static bool netvsc_set_hash(u32 *hash, struct sk_buff *skb) { - struct flow_keys flow; + struct iphdr *iphdr; + struct ipv6hdr *ipv6hdr; + __be32 dbuf[9]; int data_len; - if (!skb_flow_dissect_flow_keys(skb, &flow) || - !(flow.basic.n_proto == htons(ETH_P_IP) || - flow.basic.n_proto == htons(ETH_P_IPV6))) + if (eth_hdr(skb)->h_proto != htons(ETH_P_IP) && + eth_hdr(skb)->h_proto != htons(ETH_P_IPV6)) return false; - if (flow.basic.ip_proto == IPPROTO_TCP) - data_len = 12; - else - data_len = 8; + iphdr = ip_hdr(skb); + ipv6hdr = ipv6_hdr(skb); + + if (iphdr->version == 4) { + dbuf[0] = iphdr->saddr; + dbuf[1] = iphdr->daddr; + if (iphdr->protocol == IPPROTO_TCP) { + dbuf[2] = *(__be32 *)&tcp_hdr(skb)->source; + data_len = 12; + } else { + data_len = 8; + } + } else if (ipv6hdr->version == 6) { + memcpy(dbuf, &ipv6hdr->saddr, 32); + if (ipv6hdr->nexthdr == IPPROTO_TCP) { + dbuf[8] = *(__be32 *)&tcp_hdr(skb)->source; + data_len = 36; + } else { + data_len = 32; + } + } else { + return false; + } - *hash = comp_hash(netvsc_hash_key, HASH_KEYLEN, &flow, data_len); + *hash = comp_hash(netvsc_hash_key, HASH_KEYLEN, dbuf, data_len); return true; } @@ -729,6 +790,104 @@ } } +static int netvsc_set_channels(struct net_device *net, + struct ethtool_channels *channels) +{ + struct net_device_context *net_device_ctx = netdev_priv(net); + struct hv_device *dev = net_device_ctx->device_ctx; + struct netvsc_device *nvdev = hv_get_drvdata(dev); + struct netvsc_device_info device_info; + u32 num_chn; + u32 max_chn; + int ret = 0; + bool recovering = false; + + if (!nvdev || nvdev->destroy) + return -ENODEV; + + num_chn = nvdev->num_chn; + max_chn = min_t(u32, nvdev->max_chn, num_online_cpus()); + + if (nvdev->nvsp_version < NVSP_PROTOCOL_VERSION_5) { + pr_info("vRSS unsupported before NVSP Version 5\n"); + return -EINVAL; + } + + /* We do not support rx, tx, or other */ + if (!channels || + channels->rx_count || + channels->tx_count || + channels->other_count || + (channels->combined_count < 1)) + return -EINVAL; + + if (channels->combined_count > max_chn) { + pr_info("combined channels too high, using %d\n", max_chn); + channels->combined_count = max_chn; + } + + ret = netvsc_close(net); + if (ret) + goto out; + + do_set: + nvdev->start_remove = true; + rndis_filter_device_remove(dev); + + nvdev->num_chn = channels->combined_count; + + net_device_ctx->device_ctx = dev; + hv_set_drvdata(dev, net); + + memset(&device_info, 0, sizeof(device_info)); + device_info.num_chn = nvdev->num_chn; /* passed to RNDIS */ + device_info.ring_size = ring_size; + device_info.max_num_vrss_chns = max_num_vrss_chns; + + ret = rndis_filter_device_add(dev, &device_info); + if (ret) { + if (recovering) { + netdev_err(net, "unable to add netvsc device (ret %d)\n", ret); + return ret; + } + goto recover; + } + + nvdev = hv_get_drvdata(dev); + + ret = netif_set_real_num_tx_queues(net, nvdev->num_chn); + if (ret) { + if (recovering) { + netdev_err(net, "could not set tx queue count (ret %d)\n", ret); + return ret; + } + goto recover; + } + + ret = netif_set_real_num_rx_queues(net, nvdev->num_chn); + if (ret) { + if (recovering) { + netdev_err(net, "could not set rx queue count (ret %d)\n", ret); + return ret; + } + goto recover; + } + + out: + netvsc_open(net); + + return ret; + + recover: + /* If the above failed, we attempt to recover through the same + * process but with the original number of channels. + */ + netdev_err(net, "could not set channels, recovering\n"); + recovering = true; + channels->combined_count = num_chn; + goto do_set; +} + static int netvsc_change_mtu(struct net_device *ndev, int mtu) { struct net_device_context *ndevctx = netdev_priv(ndev); @@ -736,6 +895,7 @@ struct netvsc_device *nvdev = hv_get_drvdata(hdev); struct netvsc_device_info device_info; int limit = ETH_DATA_LEN; + int ret = 0; if (nvdev == NULL || nvdev->destroy) return -ENODEV; @@ -743,25 +903,31 @@ if (nvdev->nvsp_version >= NVSP_PROTOCOL_VERSION_2) limit = NETVSC_MTU - ETH_HLEN; - /* Hyper-V hosts don't support MTU < ETH_DATA_LEN (1500) */ - if (mtu < ETH_DATA_LEN || mtu > limit) + if (mtu < NETVSC_MTU_MIN || mtu > limit) return -EINVAL; + ret = netvsc_close(ndev); + if (ret) + goto out; + nvdev->start_remove = true; - cancel_work_sync(&ndevctx->work); - netif_tx_disable(ndev); rndis_filter_device_remove(hdev); ndev->mtu = mtu; ndevctx->device_ctx = hdev; hv_set_drvdata(hdev, ndev); + + memset(&device_info, 0, sizeof(device_info)); device_info.ring_size = ring_size; + device_info.num_chn = nvdev->num_chn; device_info.max_num_vrss_chns = max_num_vrss_chns; rndis_filter_device_add(hdev, &device_info); - netif_tx_wake_all_queues(ndev); - return 0; +out: + netvsc_open(ndev); + + return ret; } static struct rtnl_link_stats64 *netvsc_get_stats64(struct net_device *net, @@ -844,6 +1010,7 @@ .get_drvinfo = netvsc_get_drvinfo, .get_link = ethtool_op_get_link, .get_channels = netvsc_get_channels, + .set_channels = netvsc_set_channels, }; static const struct net_device_ops device_ops = { @@ -977,6 +1144,7 @@ net->needed_headroom = max_needed_headroom; /* Notify the netvsc driver of the new device */ + memset(&device_info, 0, sizeof(device_info)); device_info.ring_size = ring_size; device_info.max_num_vrss_chns = max_num_vrss_chns; ret = rndis_filter_device_add(dev, &device_info); --- linux-raspi2-4.2.0.orig/drivers/net/hyperv/rndis_filter.c +++ linux-raspi2-4.2.0/drivers/net/hyperv/rndis_filter.c @@ -984,9 +984,16 @@ struct netvsc_device *nvscdev; u16 chn_index = new_sc->offermsg.offer.sub_channel_index; int ret; + unsigned long flags; nvscdev = hv_get_drvdata(new_sc->primary_channel->device_obj); + spin_lock_irqsave(&nvscdev->sc_lock, flags); + nvscdev->num_sc_offered--; + spin_unlock_irqrestore(&nvscdev->sc_lock, flags); + if (nvscdev->num_sc_offered == 0) + complete(&nvscdev->channel_init_wait); + if (chn_index >= nvscdev->num_chn) return; @@ -1015,8 +1022,10 @@ u32 rsscap_size = sizeof(struct ndis_recv_scale_cap); u32 mtu, size; u32 num_rss_qs; + u32 sc_delta; const struct cpumask *node_cpu_mask; u32 num_possible_rss_qs; + unsigned long flags; rndis_device = get_rndis_device(); if (!rndis_device) @@ -1039,6 +1048,8 @@ net_device->max_chn = 1; net_device->num_chn = 1; + spin_lock_init(&net_device->sc_lock); + net_device->extension = rndis_device; rndis_device->net_dev = net_device; @@ -1054,7 +1065,7 @@ ret = rndis_filter_query_device(rndis_device, RNDIS_OID_GEN_MAXIMUM_FRAME_SIZE, &mtu, &size); - if (ret == 0 && size == sizeof(u32)) + if (ret == 0 && size == sizeof(u32) && mtu < net_device->ndev->mtu) net_device->ndev->mtu = mtu; /* Get the mac address */ @@ -1114,7 +1125,15 @@ */ node_cpu_mask = cpumask_of_node(cpu_to_node(dev->channel->target_cpu)); num_possible_rss_qs = cpumask_weight(node_cpu_mask); - net_device->num_chn = min(num_possible_rss_qs, num_rss_qs); + + /* We will use the given number of channels if available. */ + if (device_info->num_chn && device_info->num_chn < net_device->max_chn) + net_device->num_chn = device_info->num_chn; + else + net_device->num_chn = min(num_possible_rss_qs, num_rss_qs); + + num_rss_qs = net_device->num_chn - 1; + net_device->num_sc_offered = num_rss_qs; if (net_device->num_chn == 1) goto out; @@ -1157,11 +1176,25 @@ ret = rndis_filter_set_rss_param(rndis_device, net_device->num_chn); + /* + * Wait for the host to send us the sub-channel offers. + */ + spin_lock_irqsave(&net_device->sc_lock, flags); + sc_delta = num_rss_qs - (net_device->num_chn - 1); + net_device->num_sc_offered -= sc_delta; + spin_unlock_irqrestore(&net_device->sc_lock, flags); + + while (net_device->num_sc_offered != 0) { + t = wait_for_completion_timeout(&net_device->channel_init_wait, 10*HZ); + if (t == 0) + WARN(1, "Netvsc: Waiting for sub-channel processing"); + } out: if (ret) { net_device->max_chn = 1; net_device->num_chn = 1; } + return 0; /* return 0 because primary channel can be used alone */ err_dev_remv: --- linux-raspi2-4.2.0.orig/drivers/net/macvtap.c +++ linux-raspi2-4.2.0/drivers/net/macvtap.c @@ -137,7 +137,7 @@ #define TUN_OFFLOADS (NETIF_F_HW_CSUM | NETIF_F_TSO_ECN | NETIF_F_TSO | \ NETIF_F_TSO6 | NETIF_F_UFO) #define RX_OFFLOADS (NETIF_F_GRO | NETIF_F_LRO) -#define TAP_FEATURES (NETIF_F_GSO | NETIF_F_SG) +#define TAP_FEATURES (NETIF_F_GSO | NETIF_F_SG | NETIF_F_FRAGLIST) static struct macvlan_dev *macvtap_get_vlan_rcu(const struct net_device *dev) { @@ -1111,10 +1111,10 @@ return 0; case TUNSETSNDBUF: - if (get_user(u, up)) + if (get_user(s, sp)) return -EFAULT; - q->sk.sk_sndbuf = u; + q->sk.sk_sndbuf = s; return 0; case TUNGETVNETHDRSZ: --- linux-raspi2-4.2.0.orig/drivers/net/phy/Kconfig +++ linux-raspi2-4.2.0/drivers/net/phy/Kconfig @@ -145,13 +145,13 @@ will be called mdio-gpio. config MDIO_OCTEON - tristate "Support for MDIO buses on Octeon SOCs" - depends on CAVIUM_OCTEON_SOC - default y + tristate "Support for MDIO buses on Octeon and ThunderX SOCs" + depends on 64BIT help - This module provides a driver for the Octeon MDIO busses. - It is required by the Octeon Ethernet device drivers. + This module provides a driver for the Octeon and ThunderX MDIO + busses. It is required by the Octeon and ThunderX ethernet device + drivers. If in doubt, say Y. --- linux-raspi2-4.2.0.orig/drivers/net/phy/broadcom.c +++ linux-raspi2-4.2.0/drivers/net/phy/broadcom.c @@ -675,7 +675,7 @@ { PHY_ID_BCM5461, 0xfffffff0 }, { PHY_ID_BCM54616S, 0xfffffff0 }, { PHY_ID_BCM5464, 0xfffffff0 }, - { PHY_ID_BCM5482, 0xfffffff0 }, + { PHY_ID_BCM5481, 0xfffffff0 }, { PHY_ID_BCM5482, 0xfffffff0 }, { PHY_ID_BCM50610, 0xfffffff0 }, { PHY_ID_BCM50610M, 0xfffffff0 }, --- linux-raspi2-4.2.0.orig/drivers/net/phy/fixed_phy.c +++ linux-raspi2-4.2.0/drivers/net/phy/fixed_phy.c @@ -5,6 +5,7 @@ * Anton Vorontsov * * Copyright (c) 2006-2007 MontaVista Software, Inc. + * Copyright 2009 Freescale Semiconductor, Inc. * * 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 @@ -17,6 +18,7 @@ #include #include #include +#include #include #include #include @@ -52,10 +54,17 @@ u16 lpagb = 0; u16 lpa = 0; + if (!fp->status.link) + goto done; + bmsr |= BMSR_LSTATUS | BMSR_ANEGCOMPLETE; + if (fp->status.duplex) { bmcr |= BMCR_FULLDPLX; switch (fp->status.speed) { + case 10000: + fp->regs[MDIO_STAT2] = MDIO_STAT2_DEVPRST_VAL; + break; case 1000: bmsr |= BMSR_ESTATEN; bmcr |= BMCR_SPEED1000; @@ -76,6 +85,9 @@ } } else { switch (fp->status.speed) { + case 10000: + fp->regs[MDIO_STAT2] = MDIO_STAT2_DEVPRST_VAL; + break; case 1000: bmsr |= BMSR_ESTATEN; bmcr |= BMCR_SPEED1000; @@ -96,15 +108,13 @@ } } - if (fp->status.link) - bmsr |= BMSR_LSTATUS | BMSR_ANEGCOMPLETE; - if (fp->status.pause) lpa |= LPA_PAUSE_CAP; if (fp->status.asym_pause) lpa |= LPA_PAUSE_ASYM; +done: fp->regs[MII_PHYSID1] = 0; fp->regs[MII_PHYSID2] = 0; --- linux-raspi2-4.2.0.orig/drivers/net/phy/mdio-octeon.c +++ linux-raspi2-4.2.0/drivers/net/phy/mdio-octeon.c @@ -7,6 +7,7 @@ */ #include +#include #include #include #include @@ -14,11 +15,12 @@ #include #include +#ifdef CONFIG_CAVIUM_OCTEON_SOC #include -#include +#endif -#define DRV_VERSION "1.0" -#define DRV_DESCRIPTION "Cavium Networks Octeon SMI/MDIO driver" +#define DRV_VERSION "1.1" +#define DRV_DESCRIPTION "Cavium Networks Octeon/ThunderX SMI/MDIO driver" #define SMI_CMD 0x0 #define SMI_WR_DAT 0x8 @@ -26,6 +28,79 @@ #define SMI_CLK 0x18 #define SMI_EN 0x20 +#ifdef __BIG_ENDIAN_BITFIELD +#define OCT_MDIO_BITFIELD_FIELD(field, more) \ + field; \ + more + +#else +#define OCT_MDIO_BITFIELD_FIELD(field, more) \ + more \ + field; + +#endif + +union cvmx_smix_clk { + u64 u64; + struct cvmx_smix_clk_s { + OCT_MDIO_BITFIELD_FIELD(u64 reserved_25_63:39, + OCT_MDIO_BITFIELD_FIELD(u64 mode:1, + OCT_MDIO_BITFIELD_FIELD(u64 reserved_21_23:3, + OCT_MDIO_BITFIELD_FIELD(u64 sample_hi:5, + OCT_MDIO_BITFIELD_FIELD(u64 sample_mode:1, + OCT_MDIO_BITFIELD_FIELD(u64 reserved_14_14:1, + OCT_MDIO_BITFIELD_FIELD(u64 clk_idle:1, + OCT_MDIO_BITFIELD_FIELD(u64 preamble:1, + OCT_MDIO_BITFIELD_FIELD(u64 sample:4, + OCT_MDIO_BITFIELD_FIELD(u64 phase:8, + ;)))))))))) + } s; +}; + +union cvmx_smix_cmd { + u64 u64; + struct cvmx_smix_cmd_s { + OCT_MDIO_BITFIELD_FIELD(u64 reserved_18_63:46, + OCT_MDIO_BITFIELD_FIELD(u64 phy_op:2, + OCT_MDIO_BITFIELD_FIELD(u64 reserved_13_15:3, + OCT_MDIO_BITFIELD_FIELD(u64 phy_adr:5, + OCT_MDIO_BITFIELD_FIELD(u64 reserved_5_7:3, + OCT_MDIO_BITFIELD_FIELD(u64 reg_adr:5, + ;)))))) + } s; +}; + +union cvmx_smix_en { + u64 u64; + struct cvmx_smix_en_s { + OCT_MDIO_BITFIELD_FIELD(u64 reserved_1_63:63, + OCT_MDIO_BITFIELD_FIELD(u64 en:1, + ;)) + } s; +}; + +union cvmx_smix_rd_dat { + u64 u64; + struct cvmx_smix_rd_dat_s { + OCT_MDIO_BITFIELD_FIELD(u64 reserved_18_63:46, + OCT_MDIO_BITFIELD_FIELD(u64 pending:1, + OCT_MDIO_BITFIELD_FIELD(u64 val:1, + OCT_MDIO_BITFIELD_FIELD(u64 dat:16, + ;)))) + } s; +}; + +union cvmx_smix_wr_dat { + u64 u64; + struct cvmx_smix_wr_dat_s { + OCT_MDIO_BITFIELD_FIELD(u64 reserved_18_63:46, + OCT_MDIO_BITFIELD_FIELD(u64 pending:1, + OCT_MDIO_BITFIELD_FIELD(u64 val:1, + OCT_MDIO_BITFIELD_FIELD(u64 dat:16, + ;)))) + } s; +}; + enum octeon_mdiobus_mode { UNINIT = 0, C22, @@ -41,6 +116,21 @@ int phy_irq[PHY_MAX_ADDR]; }; +#ifdef CONFIG_CAVIUM_OCTEON_SOC +static void oct_mdio_writeq(u64 val, u64 addr) +{ + cvmx_write_csr(addr, val); +} + +static u64 oct_mdio_readq(u64 addr) +{ + return cvmx_read_csr(addr); +} +#else +#define oct_mdio_writeq(val, addr) writeq_relaxed(val, (void *)addr) +#define oct_mdio_readq(addr) readq_relaxed((void *)addr) +#endif + static void octeon_mdiobus_set_mode(struct octeon_mdiobus *p, enum octeon_mdiobus_mode m) { @@ -49,10 +139,10 @@ if (m == p->mode) return; - smi_clk.u64 = cvmx_read_csr(p->register_base + SMI_CLK); + smi_clk.u64 = oct_mdio_readq(p->register_base + SMI_CLK); smi_clk.s.mode = (m == C45) ? 1 : 0; smi_clk.s.preamble = 1; - cvmx_write_csr(p->register_base + SMI_CLK, smi_clk.u64); + oct_mdio_writeq(smi_clk.u64, p->register_base + SMI_CLK); p->mode = m; } @@ -67,7 +157,7 @@ smi_wr.u64 = 0; smi_wr.s.dat = regnum & 0xffff; - cvmx_write_csr(p->register_base + SMI_WR_DAT, smi_wr.u64); + oct_mdio_writeq(smi_wr.u64, p->register_base + SMI_WR_DAT); regnum = (regnum >> 16) & 0x1f; @@ -75,14 +165,14 @@ smi_cmd.s.phy_op = 0; /* MDIO_CLAUSE_45_ADDRESS */ smi_cmd.s.phy_adr = phy_id; smi_cmd.s.reg_adr = regnum; - cvmx_write_csr(p->register_base + SMI_CMD, smi_cmd.u64); + oct_mdio_writeq(smi_cmd.u64, p->register_base + SMI_CMD); do { /* Wait 1000 clocks so we don't saturate the RSL bus * doing reads. */ __delay(1000); - smi_wr.u64 = cvmx_read_csr(p->register_base + SMI_WR_DAT); + smi_wr.u64 = oct_mdio_readq(p->register_base + SMI_WR_DAT); } while (smi_wr.s.pending && --timeout); if (timeout <= 0) @@ -114,14 +204,14 @@ smi_cmd.s.phy_op = op; smi_cmd.s.phy_adr = phy_id; smi_cmd.s.reg_adr = regnum; - cvmx_write_csr(p->register_base + SMI_CMD, smi_cmd.u64); + oct_mdio_writeq(smi_cmd.u64, p->register_base + SMI_CMD); do { /* Wait 1000 clocks so we don't saturate the RSL bus * doing reads. */ __delay(1000); - smi_rd.u64 = cvmx_read_csr(p->register_base + SMI_RD_DAT); + smi_rd.u64 = oct_mdio_readq(p->register_base + SMI_RD_DAT); } while (smi_rd.s.pending && --timeout); if (smi_rd.s.val) @@ -153,20 +243,20 @@ smi_wr.u64 = 0; smi_wr.s.dat = val; - cvmx_write_csr(p->register_base + SMI_WR_DAT, smi_wr.u64); + oct_mdio_writeq(smi_wr.u64, p->register_base + SMI_WR_DAT); smi_cmd.u64 = 0; smi_cmd.s.phy_op = op; smi_cmd.s.phy_adr = phy_id; smi_cmd.s.reg_adr = regnum; - cvmx_write_csr(p->register_base + SMI_CMD, smi_cmd.u64); + oct_mdio_writeq(smi_cmd.u64, p->register_base + SMI_CMD); do { /* Wait 1000 clocks so we don't saturate the RSL bus * doing reads. */ __delay(1000); - smi_wr.u64 = cvmx_read_csr(p->register_base + SMI_WR_DAT); + smi_wr.u64 = oct_mdio_readq(p->register_base + SMI_WR_DAT); } while (smi_wr.s.pending && --timeout); if (timeout <= 0) @@ -187,30 +277,34 @@ return -ENOMEM; res_mem = platform_get_resource(pdev, IORESOURCE_MEM, 0); - if (res_mem == NULL) { dev_err(&pdev->dev, "found no memory resource\n"); - err = -ENXIO; - goto fail; + return -ENXIO; } + bus->mdio_phys = res_mem->start; bus->regsize = resource_size(res_mem); + if (!devm_request_mem_region(&pdev->dev, bus->mdio_phys, bus->regsize, res_mem->name)) { dev_err(&pdev->dev, "request_mem_region failed\n"); - goto fail; + return -ENXIO; } + bus->register_base = (u64)devm_ioremap(&pdev->dev, bus->mdio_phys, bus->regsize); + if (!bus->register_base) { + dev_err(&pdev->dev, "dev_ioremap failed\n"); + return -ENOMEM; + } bus->mii_bus = mdiobus_alloc(); - if (!bus->mii_bus) goto fail; smi_en.u64 = 0; smi_en.s.en = 1; - cvmx_write_csr(bus->register_base + SMI_EN, smi_en.u64); + oct_mdio_writeq(smi_en.u64, bus->register_base + SMI_EN); bus->mii_bus->priv = bus; bus->mii_bus->irq = bus->phy_irq; @@ -234,7 +328,7 @@ mdiobus_free(bus->mii_bus); fail: smi_en.u64 = 0; - cvmx_write_csr(bus->register_base + SMI_EN, smi_en.u64); + oct_mdio_writeq(smi_en.u64, bus->register_base + SMI_EN); return err; } @@ -248,7 +342,7 @@ mdiobus_unregister(bus->mii_bus); mdiobus_free(bus->mii_bus); smi_en.u64 = 0; - cvmx_write_csr(bus->register_base + SMI_EN, smi_en.u64); + oct_mdio_writeq(smi_en.u64, bus->register_base + SMI_EN); return 0; } --- linux-raspi2-4.2.0.orig/drivers/net/phy/mdio_bus.c +++ linux-raspi2-4.2.0/drivers/net/phy/mdio_bus.c @@ -303,12 +303,12 @@ BUG_ON(bus->state != MDIOBUS_REGISTERED); bus->state = MDIOBUS_UNREGISTERED; - device_del(&bus->dev); for (i = 0; i < PHY_MAX_ADDR; i++) { if (bus->phy_map[i]) device_unregister(&bus->phy_map[i]->dev); bus->phy_map[i] = NULL; } + device_del(&bus->dev); } EXPORT_SYMBOL(mdiobus_unregister); --- linux-raspi2-4.2.0.orig/drivers/net/phy/micrel.c +++ linux-raspi2-4.2.0/drivers/net/phy/micrel.c @@ -339,9 +339,18 @@ { const struct device *dev = &phydev->dev; const struct device_node *of_node = dev->of_node; + const struct device *dev_walker; - if (!of_node && dev->parent->of_node) - of_node = dev->parent->of_node; + /* The Micrel driver has a deprecated option to place phy OF + * properties in the MAC node. Walk up the tree of devices to + * find a device with an OF node. + */ + dev_walker = &phydev->dev; + do { + of_node = dev_walker->of_node; + dev_walker = dev_walker->parent; + + } while (!of_node && dev_walker); if (of_node) { ksz9021_load_values_from_of(phydev, of_node, --- linux-raspi2-4.2.0.orig/drivers/net/phy/vitesse.c +++ linux-raspi2-4.2.0/drivers/net/phy/vitesse.c @@ -75,7 +75,7 @@ MODULE_AUTHOR("Kriston Carson"); MODULE_LICENSE("GPL"); -static int vsc824x_add_skew(struct phy_device *phydev) +int vsc824x_add_skew(struct phy_device *phydev) { int err; int extcon; @@ -95,6 +95,7 @@ return err; } +EXPORT_SYMBOL(vsc824x_add_skew); static int vsc824x_config_init(struct phy_device *phydev) { --- linux-raspi2-4.2.0.orig/drivers/net/ppp/ppp_generic.c +++ linux-raspi2-4.2.0/drivers/net/ppp/ppp_generic.c @@ -719,10 +719,8 @@ val &= 0xffff; } vj = slhc_init(val2+1, val+1); - if (!vj) { - netdev_err(ppp->dev, - "PPP: no memory (VJ compressor)\n"); - err = -ENOMEM; + if (IS_ERR(vj)) { + err = PTR_ERR(vj); break; } ppp_lock(ppp); @@ -2742,6 +2740,7 @@ */ dev_net_set(dev, net); + rtnl_lock(); mutex_lock(&pn->all_ppp_mutex); if (unit < 0) { @@ -2772,7 +2771,7 @@ ppp->file.index = unit; sprintf(dev->name, "ppp%d", unit); - ret = register_netdev(dev); + ret = register_netdevice(dev); if (ret != 0) { unit_put(&pn->units_idr, unit); netdev_err(ppp->dev, "PPP: couldn't register device %s (%d)\n", @@ -2784,6 +2783,7 @@ atomic_inc(&ppp_unit_count); mutex_unlock(&pn->all_ppp_mutex); + rtnl_unlock(); *retp = 0; return ppp; --- linux-raspi2-4.2.0.orig/drivers/net/ppp/pppoe.c +++ linux-raspi2-4.2.0/drivers/net/ppp/pppoe.c @@ -313,7 +313,6 @@ if (po->pppoe_dev == dev && sk->sk_state & (PPPOX_CONNECTED | PPPOX_BOUND | PPPOX_ZOMBIE)) { pppox_unbind_sock(sk); - sk->sk_state = PPPOX_ZOMBIE; sk->sk_state_change(sk); po->pppoe_dev = NULL; dev_put(dev); @@ -569,6 +568,9 @@ sk->sk_family = PF_PPPOX; sk->sk_protocol = PX_PROTO_OE; + INIT_WORK(&pppox_sk(sk)->proto.pppoe.padt_work, + pppoe_unbind_sock_work); + return 0; } @@ -590,7 +592,7 @@ po = pppox_sk(sk); - if (sk->sk_state & (PPPOX_CONNECTED | PPPOX_BOUND | PPPOX_ZOMBIE)) { + if (po->pppoe_dev) { dev_put(po->pppoe_dev); po->pppoe_dev = NULL; } @@ -633,8 +635,6 @@ lock_sock(sk); - INIT_WORK(&po->proto.pppoe.padt_work, pppoe_unbind_sock_work); - error = -EINVAL; if (sp->sa_protocol != PX_PROTO_OE) goto end; @@ -664,8 +664,13 @@ po->pppoe_dev = NULL; } - memset(sk_pppox(po) + 1, 0, - sizeof(struct pppox_sock) - sizeof(struct sock)); + po->pppoe_ifindex = 0; + memset(&po->pppoe_pa, 0, sizeof(po->pppoe_pa)); + memset(&po->pppoe_relay, 0, sizeof(po->pppoe_relay)); + memset(&po->chan, 0, sizeof(po->chan)); + po->next = NULL; + po->num = 0; + sk->sk_state = PPPOX_NONE; } --- linux-raspi2-4.2.0.orig/drivers/net/ppp/pptp.c +++ linux-raspi2-4.2.0/drivers/net/ppp/pptp.c @@ -418,6 +418,9 @@ struct pptp_opt *opt = &po->proto.pptp; int error = 0; + if (sockaddr_len < sizeof(struct sockaddr_pppox)) + return -EINVAL; + lock_sock(sk); opt->src_addr = sp->sa_addr.pptp; @@ -439,6 +442,9 @@ struct flowi4 fl4; int error = 0; + if (sockaddr_len < sizeof(struct sockaddr_pppox)) + return -EINVAL; + if (sp->sa_protocol != PX_PROTO_PPTP) return -EINVAL; --- linux-raspi2-4.2.0.orig/drivers/net/slip/slhc.c +++ linux-raspi2-4.2.0/drivers/net/slip/slhc.c @@ -84,8 +84,9 @@ static unsigned char * put16(unsigned char *cp, unsigned short x); static unsigned short pull16(unsigned char **cpp); -/* Initialize compression data structure +/* Allocate compression data structure * slots must be in range 0 to 255 (zero meaning no compression) + * Returns pointer to structure or ERR_PTR() on error. */ struct slcompress * slhc_init(int rslots, int tslots) @@ -94,11 +95,14 @@ register struct cstate *ts; struct slcompress *comp; + if (rslots < 0 || rslots > 255 || tslots < 0 || tslots > 255) + return ERR_PTR(-EINVAL); + comp = kzalloc(sizeof(struct slcompress), GFP_KERNEL); if (! comp) goto out_fail; - if ( rslots > 0 && rslots < 256 ) { + if (rslots > 0) { size_t rsize = rslots * sizeof(struct cstate); comp->rstate = kzalloc(rsize, GFP_KERNEL); if (! comp->rstate) @@ -106,7 +110,7 @@ comp->rslot_limit = rslots - 1; } - if ( tslots > 0 && tslots < 256 ) { + if (tslots > 0) { size_t tsize = tslots * sizeof(struct cstate); comp->tstate = kzalloc(tsize, GFP_KERNEL); if (! comp->tstate) @@ -141,7 +145,7 @@ out_free: kfree(comp); out_fail: - return NULL; + return ERR_PTR(-ENOMEM); } --- linux-raspi2-4.2.0.orig/drivers/net/slip/slip.c +++ linux-raspi2-4.2.0/drivers/net/slip/slip.c @@ -164,7 +164,7 @@ if (cbuff == NULL) goto err_exit; slcomp = slhc_init(16, 16); - if (slcomp == NULL) + if (IS_ERR(slcomp)) goto err_exit; #endif spin_lock_bh(&sl->lock); --- linux-raspi2-4.2.0.orig/drivers/net/usb/cdc_ether.c +++ linux-raspi2-4.2.0/drivers/net/usb/cdc_ether.c @@ -764,6 +764,11 @@ USB_CDC_SUBCLASS_ETHERNET, USB_CDC_PROTO_NONE), .driver_info = (kernel_ulong_t) &wwan_info, }, { + /* Dell DW5580 modules */ + USB_DEVICE_AND_INTERFACE_INFO(DELL_VENDOR_ID, 0x81ba, USB_CLASS_COMM, + USB_CDC_SUBCLASS_ETHERNET, USB_CDC_PROTO_NONE), + .driver_info = (kernel_ulong_t)&wwan_info, +}, { USB_INTERFACE_INFO(USB_CLASS_COMM, USB_CDC_SUBCLASS_ETHERNET, USB_CDC_PROTO_NONE), .driver_info = (unsigned long) &cdc_info, --- linux-raspi2-4.2.0.orig/drivers/net/usb/cdc_mbim.c +++ linux-raspi2-4.2.0/drivers/net/usb/cdc_mbim.c @@ -158,7 +158,7 @@ if (!cdc_ncm_comm_intf_is_mbim(intf->cur_altsetting)) goto err; - ret = cdc_ncm_bind_common(dev, intf, data_altsetting, 0); + ret = cdc_ncm_bind_common(dev, intf, data_altsetting, dev->driver_info->data); if (ret) goto err; @@ -582,6 +582,26 @@ .tx_fixup = cdc_mbim_tx_fixup, }; +/* The spefication explicitly allows NDPs to be placed anywhere in the + * frame, but some devices fail unless the NDP is placed after the IP + * packets. Using the CDC_NCM_FLAG_NDP_TO_END flags to force this + * behaviour. + * + * Note: The current implementation of this feature restricts each NTB + * to a single NDP, implying that multiplexed sessions cannot share an + * NTB. This might affect performace for multiplexed sessions. + */ +static const struct driver_info cdc_mbim_info_ndp_to_end = { + .description = "CDC MBIM", + .flags = FLAG_NO_SETINT | FLAG_MULTI_PACKET | FLAG_WWAN, + .bind = cdc_mbim_bind, + .unbind = cdc_mbim_unbind, + .manage_power = cdc_mbim_manage_power, + .rx_fixup = cdc_mbim_rx_fixup, + .tx_fixup = cdc_mbim_tx_fixup, + .data = CDC_NCM_FLAG_NDP_TO_END, +}; + static const struct usb_device_id mbim_devs[] = { /* This duplicate NCM entry is intentional. MBIM devices can * be disguised as NCM by default, and this is necessary to @@ -597,6 +617,10 @@ { USB_VENDOR_AND_INTERFACE_INFO(0x0bdb, USB_CLASS_COMM, USB_CDC_SUBCLASS_MBIM, USB_CDC_PROTO_NONE), .driver_info = (unsigned long)&cdc_mbim_info, }, + /* Huawei E3372 fails unless NDP comes after the IP packets */ + { USB_DEVICE_AND_INTERFACE_INFO(0x12d1, 0x157d, USB_CLASS_COMM, USB_CDC_SUBCLASS_MBIM, USB_CDC_PROTO_NONE), + .driver_info = (unsigned long)&cdc_mbim_info_ndp_to_end, + }, /* default entry */ { USB_INTERFACE_INFO(USB_CLASS_COMM, USB_CDC_SUBCLASS_MBIM, USB_CDC_PROTO_NONE), .driver_info = (unsigned long)&cdc_mbim_info_zlp, --- linux-raspi2-4.2.0.orig/drivers/net/usb/cdc_ncm.c +++ linux-raspi2-4.2.0/drivers/net/usb/cdc_ncm.c @@ -1006,10 +1006,18 @@ * NTH16 header as we would normally do. NDP isn't written to the SKB yet, and * the wNdpIndex field in the header is actually not consistent with reality. It will be later. */ - if (ctx->drvflags & CDC_NCM_FLAG_NDP_TO_END) + if (ctx->drvflags & CDC_NCM_FLAG_NDP_TO_END) { if (ctx->delayed_ndp16->dwSignature == sign) return ctx->delayed_ndp16; + /* We can only push a single NDP to the end. Return + * NULL to send what we've already got and queue this + * skb for later. + */ + else if (ctx->delayed_ndp16->dwSignature) + return NULL; + } + /* follow the chain of NDPs, looking for a match */ while (ndpoffset) { ndp16 = (struct usb_cdc_ncm_ndp16 *)(skb->data + ndpoffset); @@ -1601,6 +1609,24 @@ .driver_info = (unsigned long) &wwan_info, }, + /* DW5812 LTE Verizon Mobile Broadband Card + * Unlike DW5550 this device requires FLAG_NOARP + */ + { USB_DEVICE_AND_INTERFACE_INFO(0x413c, 0x81bb, + USB_CLASS_COMM, + USB_CDC_SUBCLASS_NCM, USB_CDC_PROTO_NONE), + .driver_info = (unsigned long)&wwan_noarp_info, + }, + + /* DW5813 LTE AT&T Mobile Broadband Card + * Unlike DW5550 this device requires FLAG_NOARP + */ + { USB_DEVICE_AND_INTERFACE_INFO(0x413c, 0x81bc, + USB_CLASS_COMM, + USB_CDC_SUBCLASS_NCM, USB_CDC_PROTO_NONE), + .driver_info = (unsigned long)&wwan_noarp_info, + }, + /* Dell branded MBM devices like DW5550 */ { .match_flags = USB_DEVICE_ID_MATCH_INT_INFO | USB_DEVICE_ID_MATCH_VENDOR, --- linux-raspi2-4.2.0.orig/drivers/net/usb/qmi_wwan.c +++ linux-raspi2-4.2.0/drivers/net/usb/qmi_wwan.c @@ -539,6 +539,10 @@ USB_CDC_PROTO_NONE), .driver_info = (unsigned long)&qmi_wwan_info, }, + { /* HP lt4112 LTE/HSPA+ Gobi 4G Module (Huawei me906e) */ + USB_DEVICE_AND_INTERFACE_INFO(0x03f0, 0x581d, USB_CLASS_VENDOR_SPEC, 1, 7), + .driver_info = (unsigned long)&qmi_wwan_info, + }, /* 3. Combined interface devices matching on interface number */ {QMI_FIXED_INTF(0x0408, 0xea42, 4)}, /* Yota / Megafon M100-1 */ @@ -765,12 +769,17 @@ {QMI_FIXED_INTF(0x1199, 0x9056, 8)}, /* Sierra Wireless Modem */ {QMI_FIXED_INTF(0x1199, 0x9057, 8)}, {QMI_FIXED_INTF(0x1199, 0x9061, 8)}, /* Sierra Wireless Modem */ + {QMI_FIXED_INTF(0x1199, 0x9070, 8)}, /* Sierra Wireless MC74xx/EM74xx */ + {QMI_FIXED_INTF(0x1199, 0x9070, 10)}, /* Sierra Wireless MC74xx/EM74xx */ + {QMI_FIXED_INTF(0x1199, 0x9071, 8)}, /* Sierra Wireless MC74xx/EM74xx */ + {QMI_FIXED_INTF(0x1199, 0x9071, 10)}, /* Sierra Wireless MC74xx/EM74xx */ {QMI_FIXED_INTF(0x1bbb, 0x011e, 4)}, /* Telekom Speedstick LTE II (Alcatel One Touch L100V LTE) */ {QMI_FIXED_INTF(0x1bbb, 0x0203, 2)}, /* Alcatel L800MA */ {QMI_FIXED_INTF(0x2357, 0x0201, 4)}, /* TP-LINK HSUPA Modem MA180 */ {QMI_FIXED_INTF(0x2357, 0x9000, 4)}, /* TP-LINK MA260 */ {QMI_FIXED_INTF(0x1bc7, 0x1200, 5)}, /* Telit LE920 */ {QMI_FIXED_INTF(0x1bc7, 0x1201, 2)}, /* Telit LE920 */ + {QMI_FIXED_INTF(0x1c9e, 0x9b01, 3)}, /* XS Stick W100-2 from 4G Systems */ {QMI_FIXED_INTF(0x0b3c, 0xc000, 4)}, /* Olivetti Olicard 100 */ {QMI_FIXED_INTF(0x0b3c, 0xc001, 4)}, /* Olivetti Olicard 120 */ {QMI_FIXED_INTF(0x0b3c, 0xc002, 4)}, /* Olivetti Olicard 140 */ @@ -786,7 +795,6 @@ {QMI_FIXED_INTF(0x413c, 0x81a8, 8)}, /* Dell Wireless 5808 Gobi(TM) 4G LTE Mobile Broadband Card */ {QMI_FIXED_INTF(0x413c, 0x81a9, 8)}, /* Dell Wireless 5808e Gobi(TM) 4G LTE Mobile Broadband Card */ {QMI_FIXED_INTF(0x03f0, 0x4e1d, 8)}, /* HP lt4111 LTE/EV-DO/HSPA+ Gobi 4G Module */ - {QMI_FIXED_INTF(0x03f0, 0x581d, 4)}, /* HP lt4112 LTE/HSPA+ Gobi 4G Module (Huawei me906e) */ /* 4. Gobi 1000 devices */ {QMI_GOBI1K_DEVICE(0x05c6, 0x9212)}, /* Acer Gobi Modem Device */ --- linux-raspi2-4.2.0.orig/drivers/net/usb/r8152.c +++ linux-raspi2-4.2.0/drivers/net/usb/r8152.c @@ -3025,17 +3025,6 @@ mutex_lock(&tp->control); - /* The WORK_ENABLE may be set when autoresume occurs */ - if (test_bit(WORK_ENABLE, &tp->flags)) { - clear_bit(WORK_ENABLE, &tp->flags); - usb_kill_urb(tp->intr_urb); - cancel_delayed_work_sync(&tp->schedule); - - /* disable the tx/rx, if the workqueue has enabled them. */ - if (netif_carrier_ok(netdev)) - tp->rtl_ops.disable(tp); - } - tp->rtl_ops.up(tp); rtl8152_set_speed(tp, AUTONEG_ENABLE, @@ -3082,12 +3071,6 @@ } else { mutex_lock(&tp->control); - /* The autosuspend may have been enabled and wouldn't - * be disable when autoresume occurs, because the - * netif_running() would be false. - */ - rtl_runtime_suspend_enable(tp, false); - tp->rtl_ops.down(tp); mutex_unlock(&tp->control); @@ -3442,7 +3425,7 @@ netif_device_attach(tp->netdev); } - if (netif_running(tp->netdev)) { + if (netif_running(tp->netdev) && tp->netdev->flags & IFF_UP) { if (test_bit(SELECTIVE_SUSPEND, &tp->flags)) { rtl_runtime_suspend_enable(tp, false); clear_bit(SELECTIVE_SUSPEND, &tp->flags); @@ -3462,6 +3445,8 @@ } usb_submit_urb(tp->intr_urb, GFP_KERNEL); } else if (test_bit(SELECTIVE_SUSPEND, &tp->flags)) { + if (tp->netdev->flags & IFF_UP) + rtl_runtime_suspend_enable(tp, false); clear_bit(SELECTIVE_SUSPEND, &tp->flags); } --- linux-raspi2-4.2.0.orig/drivers/net/usb/smsc95xx.c +++ linux-raspi2-4.2.0/drivers/net/usb/smsc95xx.c @@ -59,6 +59,7 @@ #define SUSPEND_SUSPEND3 (0x08) #define SUSPEND_ALLMODES (SUSPEND_SUSPEND0 | SUSPEND_SUSPEND1 | \ SUSPEND_SUSPEND2 | SUSPEND_SUSPEND3) +#define MAC_ADDR_LEN (6) struct smsc95xx_priv { u32 mac_cr; @@ -70,10 +71,14 @@ u8 suspend_flags; }; -static bool turbo_mode = true; +static bool turbo_mode = false; module_param(turbo_mode, bool, 0644); MODULE_PARM_DESC(turbo_mode, "Enable multiple frames per Rx transaction"); +static char *macaddr = ":"; +module_param(macaddr, charp, 0); +MODULE_PARM_DESC(macaddr, "MAC address"); + static int __must_check __smsc95xx_read_reg(struct usbnet *dev, u32 index, u32 *data, int in_pm) { @@ -763,8 +768,59 @@ return generic_mii_ioctl(&dev->mii, if_mii(rq), cmd, NULL); } +/* Check the macaddr module parameter for a MAC address */ +static int smsc95xx_is_macaddr_param(struct usbnet *dev, u8 *dev_mac) +{ + int i, j, got_num, num; + u8 mtbl[MAC_ADDR_LEN]; + + if (macaddr[0] == ':') + return 0; + + i = 0; + j = 0; + num = 0; + got_num = 0; + while (j < MAC_ADDR_LEN) { + if (macaddr[i] && macaddr[i] != ':') { + got_num++; + if ('0' <= macaddr[i] && macaddr[i] <= '9') + num = num * 16 + macaddr[i] - '0'; + else if ('A' <= macaddr[i] && macaddr[i] <= 'F') + num = num * 16 + 10 + macaddr[i] - 'A'; + else if ('a' <= macaddr[i] && macaddr[i] <= 'f') + num = num * 16 + 10 + macaddr[i] - 'a'; + else + break; + i++; + } else if (got_num == 2) { + mtbl[j++] = (u8) num; + num = 0; + got_num = 0; + i++; + } else { + break; + } + } + + if (j == MAC_ADDR_LEN) { + netif_dbg(dev, ifup, dev->net, "Overriding MAC address with: " + "%02x:%02x:%02x:%02x:%02x:%02x\n", mtbl[0], mtbl[1], mtbl[2], + mtbl[3], mtbl[4], mtbl[5]); + for (i = 0; i < MAC_ADDR_LEN; i++) + dev_mac[i] = mtbl[i]; + return 1; + } else { + return 0; + } +} + static void smsc95xx_init_mac_address(struct usbnet *dev) { + /* Check module parameters */ + if (smsc95xx_is_macaddr_param(dev, dev->net->dev_addr)) + return; + /* try reading mac address from EEPROM */ if (smsc95xx_read_eeprom(dev, EEPROM_MAC_OFFSET, ETH_ALEN, dev->net->dev_addr) == 0) { @@ -1785,7 +1841,6 @@ if (dev->net->features & NETIF_F_RXCSUM) smsc95xx_rx_csum_offload(skb); skb_trim(skb, skb->len - 4); /* remove fcs */ - skb->truesize = size + sizeof(struct sk_buff); return 1; } @@ -1803,7 +1858,6 @@ if (dev->net->features & NETIF_F_RXCSUM) smsc95xx_rx_csum_offload(ax_skb); skb_trim(ax_skb, ax_skb->len - 4); /* remove fcs */ - ax_skb->truesize = size + sizeof(struct sk_buff); usbnet_skb_return(dev, ax_skb); } --- linux-raspi2-4.2.0.orig/drivers/net/vxlan.c +++ linux-raspi2-4.2.0/drivers/net/vxlan.c @@ -2352,10 +2352,6 @@ eth_hw_addr_random(dev); ether_setup(dev); - if (vxlan->default_dst.remote_ip.sa.sa_family == AF_INET6) - dev->needed_headroom = ETH_HLEN + VXLAN6_HEADROOM; - else - dev->needed_headroom = ETH_HLEN + VXLAN_HEADROOM; dev->netdev_ops = &vxlan_netdev_ops; dev->destructor = free_netdev; @@ -2651,8 +2647,12 @@ dev->needed_headroom = lowerdev->hard_header_len + (use_ipv6 ? VXLAN6_HEADROOM : VXLAN_HEADROOM); - } else if (use_ipv6) + } else if (use_ipv6) { vxlan->flags |= VXLAN_F_IPV6; + dev->needed_headroom = ETH_HLEN + VXLAN6_HEADROOM; + } else { + dev->needed_headroom = ETH_HLEN + VXLAN_HEADROOM; + } if (data[IFLA_VXLAN_TOS]) vxlan->tos = nla_get_u8(data[IFLA_VXLAN_TOS]); --- linux-raspi2-4.2.0.orig/drivers/net/wireless/Kconfig +++ linux-raspi2-4.2.0/drivers/net/wireless/Kconfig @@ -278,7 +278,8 @@ source "drivers/net/wireless/p54/Kconfig" source "drivers/net/wireless/rt2x00/Kconfig" source "drivers/net/wireless/mediatek/Kconfig" -source "drivers/net/wireless/rtlwifi/Kconfig" +#source "drivers/net/wireless/rtlwifi/Kconfig" +source "drivers/net/wireless/rtl8192cu/Kconfig" source "drivers/net/wireless/ti/Kconfig" source "drivers/net/wireless/zd1211rw/Kconfig" source "drivers/net/wireless/mwifiex/Kconfig" --- linux-raspi2-4.2.0.orig/drivers/net/wireless/Makefile +++ linux-raspi2-4.2.0/drivers/net/wireless/Makefile @@ -24,7 +24,8 @@ obj-$(CONFIG_ZD1211RW) += zd1211rw/ obj-$(CONFIG_RTL8180) += rtl818x/ obj-$(CONFIG_RTL8187) += rtl818x/ -obj-$(CONFIG_RTLWIFI) += rtlwifi/ +#obj-$(CONFIG_RTLWIFI) += rtlwifi/ +obj-$(CONFIG_RTL8192CU) += rtl8192cu/ # 16-bit wireless PCMCIA client drivers obj-$(CONFIG_PCMCIA_RAYCS) += ray_cs.o --- linux-raspi2-4.2.0.orig/drivers/net/wireless/ath/ath10k/htc.c +++ linux-raspi2-4.2.0/drivers/net/wireless/ath/ath10k/htc.c @@ -145,8 +145,10 @@ skb_cb->eid = eid; skb_cb->paddr = dma_map_single(dev, skb->data, skb->len, DMA_TO_DEVICE); ret = dma_mapping_error(dev, skb_cb->paddr); - if (ret) + if (ret) { + ret = -EIO; goto err_credits; + } sg_item.transfer_id = ep->eid; sg_item.transfer_context = skb; --- linux-raspi2-4.2.0.orig/drivers/net/wireless/ath/ath10k/htt_tx.c +++ linux-raspi2-4.2.0/drivers/net/wireless/ath/ath10k/htt_tx.c @@ -371,8 +371,10 @@ skb_cb->paddr = dma_map_single(dev, msdu->data, msdu->len, DMA_TO_DEVICE); res = dma_mapping_error(dev, skb_cb->paddr); - if (res) + if (res) { + res = -EIO; goto err_free_txdesc; + } skb_put(txdesc, len); cmd = (struct htt_cmd *)txdesc->data; @@ -456,8 +458,10 @@ skb_cb->paddr = dma_map_single(dev, msdu->data, msdu->len, DMA_TO_DEVICE); res = dma_mapping_error(dev, skb_cb->paddr); - if (res) + if (res) { + res = -EIO; goto err_free_txbuf; + } switch (skb_cb->txmode) { case ATH10K_HW_TXRX_RAW: --- linux-raspi2-4.2.0.orig/drivers/net/wireless/ath/ath10k/mac.c +++ linux-raspi2-4.2.0/drivers/net/wireless/ath/ath10k/mac.c @@ -591,11 +591,19 @@ static int ath10k_peer_create(struct ath10k *ar, u32 vdev_id, const u8 *addr, enum wmi_peer_type peer_type) { + struct ath10k_vif *arvif; + int num_peers = 0; int ret; lockdep_assert_held(&ar->conf_mutex); - if (ar->num_peers >= ar->max_num_peers) + num_peers = ar->num_peers; + + /* Each vdev consumes a peer entry as well */ + list_for_each_entry(arvif, &ar->arvifs, list) + num_peers++; + + if (num_peers >= ar->max_num_peers) return -ENOBUFS; ret = ath10k_wmi_peer_create(ar, vdev_id, addr, peer_type); @@ -2062,7 +2070,8 @@ enum ieee80211_band band; const u8 *ht_mcs_mask; const u16 *vht_mcs_mask; - int i, n, max_nss; + int i, n; + u8 max_nss; u32 stbc; lockdep_assert_held(&ar->conf_mutex); @@ -2147,7 +2156,7 @@ arg->peer_ht_rates.rates[i] = i; } else { arg->peer_ht_rates.num_rates = n; - arg->peer_num_spatial_streams = max_nss; + arg->peer_num_spatial_streams = min(sta->rx_nss, max_nss); } ath10k_dbg(ar, ATH10K_DBG_MAC, "mac ht peer %pM mcs cnt %d nss %d\n", @@ -2995,6 +3004,8 @@ IEEE80211_IFACE_ITER_RESUME_ALL, ath10k_mac_tx_unlock_iter, ar); + + ieee80211_wake_queue(ar->hw, ar->hw->offchannel_tx_hw_queue); } void ath10k_mac_vif_tx_lock(struct ath10k_vif *arvif, int reason) @@ -3034,38 +3045,16 @@ lockdep_assert_held(&ar->htt.tx_lock); - switch (pause_id) { - case WMI_TLV_TX_PAUSE_ID_MCC: - case WMI_TLV_TX_PAUSE_ID_P2P_CLI_NOA: - case WMI_TLV_TX_PAUSE_ID_P2P_GO_PS: - case WMI_TLV_TX_PAUSE_ID_AP_PS: - case WMI_TLV_TX_PAUSE_ID_IBSS_PS: - switch (action) { - case WMI_TLV_TX_PAUSE_ACTION_STOP: - ath10k_mac_vif_tx_lock(arvif, pause_id); - break; - case WMI_TLV_TX_PAUSE_ACTION_WAKE: - ath10k_mac_vif_tx_unlock(arvif, pause_id); - break; - default: - ath10k_warn(ar, "received unknown tx pause action %d on vdev %i, ignoring\n", - action, arvif->vdev_id); - break; - } + switch (action) { + case WMI_TLV_TX_PAUSE_ACTION_STOP: + ath10k_mac_vif_tx_lock(arvif, pause_id); + break; + case WMI_TLV_TX_PAUSE_ACTION_WAKE: + ath10k_mac_vif_tx_unlock(arvif, pause_id); break; - case WMI_TLV_TX_PAUSE_ID_AP_PEER_PS: - case WMI_TLV_TX_PAUSE_ID_AP_PEER_UAPSD: - case WMI_TLV_TX_PAUSE_ID_STA_ADD_BA: - case WMI_TLV_TX_PAUSE_ID_HOST: default: - /* FIXME: Some pause_ids aren't vdev specific. Instead they - * target peer_id and tid. Implementing these could improve - * traffic scheduling fairness across multiple connected - * stations in AP/IBSS modes. - */ - ath10k_dbg(ar, ATH10K_DBG_MAC, - "mac ignoring unsupported tx pause vdev %i id %d\n", - arvif->vdev_id, pause_id); + ath10k_warn(ar, "received unknown tx pause action %d on vdev %i, ignoring\n", + action, arvif->vdev_id); break; } } @@ -3082,12 +3071,15 @@ struct ath10k_vif *arvif = ath10k_vif_to_arvif(vif); struct ath10k_mac_tx_pause *arg = data; + if (arvif->vdev_id != arg->vdev_id) + return; + ath10k_mac_vif_handle_tx_pause(arvif, arg->pause_id, arg->action); } -void ath10k_mac_handle_tx_pause(struct ath10k *ar, u32 vdev_id, - enum wmi_tlv_tx_pause_id pause_id, - enum wmi_tlv_tx_pause_action action) +void ath10k_mac_handle_tx_pause_vdev(struct ath10k *ar, u32 vdev_id, + enum wmi_tlv_tx_pause_id pause_id, + enum wmi_tlv_tx_pause_action action) { struct ath10k_mac_tx_pause arg = { .vdev_id = vdev_id, @@ -4030,7 +4022,7 @@ static u32 get_nss_from_chainmask(u16 chain_mask) { - if ((chain_mask & 0x15) == 0x15) + if ((chain_mask & 0xf) == 0xf) return 4; else if ((chain_mask & 0x7) == 0x7) return 3; @@ -4080,6 +4072,11 @@ sizeof(arvif->bitrate_mask.control[i].vht_mcs)); } + if (ar->num_peers >= ar->max_num_peers) { + ath10k_warn(ar, "refusing vdev creation due to insufficient peer entry resources in firmware\n"); + return -ENOBUFS; + } + if (ar->free_vdev_map == 0) { ath10k_warn(ar, "Free vdev map is empty, no more interfaces allowed.\n"); ret = -EBUSY; @@ -4287,6 +4284,11 @@ } } + spin_lock_bh(&ar->htt.tx_lock); + if (!ar->tx_paused) + ieee80211_wake_queue(ar->hw, arvif->vdev_id); + spin_unlock_bh(&ar->htt.tx_lock); + mutex_unlock(&ar->conf_mutex); return 0; @@ -5561,6 +5563,21 @@ return ret; } +static int ath10k_mac_op_set_frag_threshold(struct ieee80211_hw *hw, u32 value) +{ + /* Even though there's a WMI enum for fragmentation threshold no known + * firmware actually implements it. Moreover it is not possible to rely + * frame fragmentation to mac80211 because firmware clears the "more + * fragments" bit in frame control making it impossible for remote + * devices to reassemble frames. + * + * Hence implement a dummy callback just to say fragmentation isn't + * supported. This effectively prevents mac80211 from doing frame + * fragmentation in software. + */ + return -EOPNOTSUPP; +} + static void ath10k_flush(struct ieee80211_hw *hw, struct ieee80211_vif *vif, u32 queues, bool drop) { @@ -6395,6 +6412,7 @@ .remain_on_channel = ath10k_remain_on_channel, .cancel_remain_on_channel = ath10k_cancel_remain_on_channel, .set_rts_threshold = ath10k_set_rts_threshold, + .set_frag_threshold = ath10k_mac_op_set_frag_threshold, .flush = ath10k_flush, .tx_last_beacon = ath10k_tx_last_beacon, .set_antenna = ath10k_set_antenna, --- linux-raspi2-4.2.0.orig/drivers/net/wireless/ath/ath10k/mac.h +++ linux-raspi2-4.2.0/drivers/net/wireless/ath/ath10k/mac.h @@ -61,9 +61,9 @@ void ath10k_mac_handle_beacon(struct ath10k *ar, struct sk_buff *skb); void ath10k_mac_handle_beacon_miss(struct ath10k *ar, u32 vdev_id); -void ath10k_mac_handle_tx_pause(struct ath10k *ar, u32 vdev_id, - enum wmi_tlv_tx_pause_id pause_id, - enum wmi_tlv_tx_pause_action action); +void ath10k_mac_handle_tx_pause_vdev(struct ath10k *ar, u32 vdev_id, + enum wmi_tlv_tx_pause_id pause_id, + enum wmi_tlv_tx_pause_action action); u8 ath10k_mac_hw_rate_to_idx(const struct ieee80211_supported_band *sband, u8 hw_rate); --- linux-raspi2-4.2.0.orig/drivers/net/wireless/ath/ath10k/pci.c +++ linux-raspi2-4.2.0/drivers/net/wireless/ath/ath10k/pci.c @@ -1546,8 +1546,10 @@ req_paddr = dma_map_single(ar->dev, treq, req_len, DMA_TO_DEVICE); ret = dma_mapping_error(ar->dev, req_paddr); - if (ret) + if (ret) { + ret = -EIO; goto err_dma; + } if (resp && resp_len) { tresp = kzalloc(*resp_len, GFP_KERNEL); @@ -1559,8 +1561,10 @@ resp_paddr = dma_map_single(ar->dev, tresp, *resp_len, DMA_FROM_DEVICE); ret = dma_mapping_error(ar->dev, resp_paddr); - if (ret) + if (ret) { + ret = EIO; goto err_req; + } xfer.wait_for_resp = true; xfer.resp_len = 0; --- linux-raspi2-4.2.0.orig/drivers/net/wireless/ath/ath10k/wmi-tlv.c +++ linux-raspi2-4.2.0/drivers/net/wireless/ath/ath10k/wmi-tlv.c @@ -377,12 +377,34 @@ "wmi tlv tx pause pause_id %u action %u vdev_map 0x%08x peer_id %u tid_map 0x%08x\n", pause_id, action, vdev_map, peer_id, tid_map); - for (vdev_id = 0; vdev_map; vdev_id++) { - if (!(vdev_map & BIT(vdev_id))) - continue; + switch (pause_id) { + case WMI_TLV_TX_PAUSE_ID_MCC: + case WMI_TLV_TX_PAUSE_ID_P2P_CLI_NOA: + case WMI_TLV_TX_PAUSE_ID_P2P_GO_PS: + case WMI_TLV_TX_PAUSE_ID_AP_PS: + case WMI_TLV_TX_PAUSE_ID_IBSS_PS: + for (vdev_id = 0; vdev_map; vdev_id++) { + if (!(vdev_map & BIT(vdev_id))) + continue; - vdev_map &= ~BIT(vdev_id); - ath10k_mac_handle_tx_pause(ar, vdev_id, pause_id, action); + vdev_map &= ~BIT(vdev_id); + ath10k_mac_handle_tx_pause_vdev(ar, vdev_id, pause_id, + action); + } + break; + case WMI_TLV_TX_PAUSE_ID_AP_PEER_PS: + case WMI_TLV_TX_PAUSE_ID_AP_PEER_UAPSD: + case WMI_TLV_TX_PAUSE_ID_STA_ADD_BA: + case WMI_TLV_TX_PAUSE_ID_HOST: + ath10k_dbg(ar, ATH10K_DBG_MAC, + "mac ignoring unsupported tx pause id %d\n", + pause_id); + break; + default: + ath10k_dbg(ar, ATH10K_DBG_MAC, + "mac ignoring unknown tx pause vdev %d\n", + pause_id); + break; } kfree(tb); --- linux-raspi2-4.2.0.orig/drivers/net/wireless/ath/ath10k/wmi.c +++ linux-raspi2-4.2.0/drivers/net/wireless/ath/ath10k/wmi.c @@ -2391,6 +2391,7 @@ ath10k_warn(ar, "failed to map beacon: %d\n", ret); dev_kfree_skb_any(bcn); + ret = -EIO; goto skip; } --- linux-raspi2-4.2.0.orig/drivers/net/wireless/ath/ath9k/init.c +++ linux-raspi2-4.2.0/drivers/net/wireless/ath/ath9k/init.c @@ -874,6 +874,7 @@ hw->max_rate_tries = 10; hw->sta_data_size = sizeof(struct ath_node); hw->vif_data_size = sizeof(struct ath_vif); + hw->extra_tx_headroom = 4; hw->wiphy->available_antennas_rx = BIT(ah->caps.max_rxchains) - 1; hw->wiphy->available_antennas_tx = BIT(ah->caps.max_txchains) - 1; --- linux-raspi2-4.2.0.orig/drivers/net/wireless/hostap/hostap_hw.c +++ linux-raspi2-4.2.0/drivers/net/wireless/hostap/hostap_hw.c @@ -69,7 +69,7 @@ module_param_string(essid, essid, sizeof(essid), 0444); MODULE_PARM_DESC(essid, "Host AP's ESSID"); -static int iw_mode[MAX_PARM_DEVICES] = { IW_MODE_MASTER, DEF_INTS }; +static int iw_mode[MAX_PARM_DEVICES] = { IW_MODE_INFRA, DEF_INTS }; module_param_array(iw_mode, int, NULL, 0444); MODULE_PARM_DESC(iw_mode, "Initial operation mode"); --- linux-raspi2-4.2.0.orig/drivers/net/wireless/iwlwifi/dvm/lib.c +++ linux-raspi2-4.2.0/drivers/net/wireless/iwlwifi/dvm/lib.c @@ -1022,7 +1022,7 @@ u8 *pn = seq.ccmp.pn; ieee80211_get_key_rx_seq(key, i, &seq); - aes_sc->pn = cpu_to_le64( + aes_sc[i].pn = cpu_to_le64( (u64)pn[5] | ((u64)pn[4] << 8) | ((u64)pn[3] << 16) | --- linux-raspi2-4.2.0.orig/drivers/net/wireless/iwlwifi/iwl-7000.c +++ linux-raspi2-4.2.0/drivers/net/wireless/iwlwifi/iwl-7000.c @@ -348,6 +348,6 @@ }; MODULE_FIRMWARE(IWL7260_MODULE_FIRMWARE(IWL7260_UCODE_API_OK)); -MODULE_FIRMWARE(IWL3160_MODULE_FIRMWARE(IWL3160_UCODE_API_OK)); +MODULE_FIRMWARE(IWL3160_MODULE_FIRMWARE(IWL7260_UCODE_API_OK)); MODULE_FIRMWARE(IWL7265_MODULE_FIRMWARE(IWL7260_UCODE_API_OK)); MODULE_FIRMWARE(IWL7265D_MODULE_FIRMWARE(IWL7260_UCODE_API_OK)); --- linux-raspi2-4.2.0.orig/drivers/net/wireless/iwlwifi/mvm/d3.c +++ linux-raspi2-4.2.0/drivers/net/wireless/iwlwifi/mvm/d3.c @@ -274,18 +274,13 @@ break; case WLAN_CIPHER_SUITE_CCMP: if (sta) { - u8 *pn = seq.ccmp.pn; + u64 pn64; aes_sc = data->rsc_tsc->all_tsc_rsc.aes.unicast_rsc; aes_tx_sc = &data->rsc_tsc->all_tsc_rsc.aes.tsc; - ieee80211_get_key_tx_seq(key, &seq); - aes_tx_sc->pn = cpu_to_le64((u64)pn[5] | - ((u64)pn[4] << 8) | - ((u64)pn[3] << 16) | - ((u64)pn[2] << 24) | - ((u64)pn[1] << 32) | - ((u64)pn[0] << 40)); + pn64 = atomic64_read(&key->tx_pn); + aes_tx_sc->pn = cpu_to_le64(pn64); } else { aes_sc = data->rsc_tsc->all_tsc_rsc.aes.multicast_rsc; } @@ -298,12 +293,12 @@ u8 *pn = seq.ccmp.pn; ieee80211_get_key_rx_seq(key, i, &seq); - aes_sc->pn = cpu_to_le64((u64)pn[5] | - ((u64)pn[4] << 8) | - ((u64)pn[3] << 16) | - ((u64)pn[2] << 24) | - ((u64)pn[1] << 32) | - ((u64)pn[0] << 40)); + aes_sc[i].pn = cpu_to_le64((u64)pn[5] | + ((u64)pn[4] << 8) | + ((u64)pn[3] << 16) | + ((u64)pn[2] << 24) | + ((u64)pn[1] << 32) | + ((u64)pn[0] << 40)); } data->use_rsc_tsc = true; break; @@ -1446,15 +1441,15 @@ switch (key->cipher) { case WLAN_CIPHER_SUITE_CCMP: - iwl_mvm_aes_sc_to_seq(&sc->aes.tsc, &seq); iwl_mvm_set_aes_rx_seq(sc->aes.unicast_rsc, key); + atomic64_set(&key->tx_pn, le64_to_cpu(sc->aes.tsc.pn)); break; case WLAN_CIPHER_SUITE_TKIP: iwl_mvm_tkip_sc_to_seq(&sc->tkip.tsc, &seq); iwl_mvm_set_tkip_rx_seq(sc->tkip.unicast_rsc, key); + ieee80211_set_key_tx_seq(key, &seq); break; } - ieee80211_set_key_tx_seq(key, &seq); /* that's it for this key */ return; --- linux-raspi2-4.2.0.orig/drivers/net/wireless/iwlwifi/mvm/fw.c +++ linux-raspi2-4.2.0/drivers/net/wireless/iwlwifi/mvm/fw.c @@ -364,7 +364,7 @@ * abort after reading the nvm in case RF Kill is on, we will complete * the init seq later when RF kill will switch to off */ - if (iwl_mvm_is_radio_killed(mvm)) { + if (iwl_mvm_is_radio_hw_killed(mvm)) { IWL_DEBUG_RF_KILL(mvm, "jump over all phy activities due to RF kill\n"); iwl_remove_notification(&mvm->notif_wait, &calib_wait); @@ -397,7 +397,7 @@ ret = iwl_wait_notification(&mvm->notif_wait, &calib_wait, MVM_UCODE_CALIB_TIMEOUT); - if (ret && iwl_mvm_is_radio_killed(mvm)) { + if (ret && iwl_mvm_is_radio_hw_killed(mvm)) { IWL_DEBUG_RF_KILL(mvm, "RFKILL while calibrating.\n"); ret = 1; } --- linux-raspi2-4.2.0.orig/drivers/net/wireless/iwlwifi/mvm/mac80211.c +++ linux-raspi2-4.2.0/drivers/net/wireless/iwlwifi/mvm/mac80211.c @@ -2373,6 +2373,7 @@ iwl_mvm_remove_time_event(mvm, mvmvif, &mvmvif->time_event_data); RCU_INIT_POINTER(mvm->csa_vif, NULL); + mvmvif->csa_countdown = false; } if (rcu_access_pointer(mvm->csa_tx_blocked_vif) == vif) { --- linux-raspi2-4.2.0.orig/drivers/net/wireless/iwlwifi/mvm/mvm.h +++ linux-raspi2-4.2.0/drivers/net/wireless/iwlwifi/mvm/mvm.h @@ -848,6 +848,11 @@ test_bit(IWL_MVM_STATUS_HW_CTKILL, &mvm->status); } +static inline bool iwl_mvm_is_radio_hw_killed(struct iwl_mvm *mvm) +{ + return test_bit(IWL_MVM_STATUS_HW_RFKILL, &mvm->status); +} + /* Must be called with rcu_read_lock() held and it can only be * released when mvmsta is not needed anymore. */ --- linux-raspi2-4.2.0.orig/drivers/net/wireless/iwlwifi/mvm/ops.c +++ linux-raspi2-4.2.0/drivers/net/wireless/iwlwifi/mvm/ops.c @@ -582,6 +582,7 @@ ieee80211_unregister_hw(mvm->hw); iwl_mvm_leds_exit(mvm); out_free: + flush_delayed_work(&mvm->fw_dump_wk); iwl_phy_db_free(mvm->phy_db); kfree(mvm->scan_cmd); if (!cfg->no_power_up_nic_in_init || !mvm->nvm_file_name) --- linux-raspi2-4.2.0.orig/drivers/net/wireless/iwlwifi/pcie/drv.c +++ linux-raspi2-4.2.0/drivers/net/wireless/iwlwifi/pcie/drv.c @@ -414,18 +414,30 @@ {IWL_PCI_DEVICE(0x095A, 0x5590, iwl7265_2ac_cfg)}, {IWL_PCI_DEVICE(0x095B, 0x5290, iwl7265_2ac_cfg)}, {IWL_PCI_DEVICE(0x095A, 0x5490, iwl7265_2ac_cfg)}, + {IWL_PCI_DEVICE(0x095A, 0x5F10, iwl7265_2ac_cfg)}, + {IWL_PCI_DEVICE(0x095B, 0x5212, iwl7265_2ac_cfg)}, + {IWL_PCI_DEVICE(0x095B, 0x520A, iwl7265_2ac_cfg)}, + {IWL_PCI_DEVICE(0x095A, 0x9000, iwl7265_2ac_cfg)}, + {IWL_PCI_DEVICE(0x095A, 0x9400, iwl7265_2ac_cfg)}, /* 8000 Series */ {IWL_PCI_DEVICE(0x24F3, 0x0010, iwl8260_2ac_cfg)}, {IWL_PCI_DEVICE(0x24F3, 0x1010, iwl8260_2ac_cfg)}, + {IWL_PCI_DEVICE(0x24F3, 0x0130, iwl8260_2ac_cfg)}, + {IWL_PCI_DEVICE(0x24F3, 0x1130, iwl8260_2ac_cfg)}, + {IWL_PCI_DEVICE(0x24F3, 0x0132, iwl8260_2ac_cfg)}, + {IWL_PCI_DEVICE(0x24F3, 0x1132, iwl8260_2ac_cfg)}, {IWL_PCI_DEVICE(0x24F3, 0x0110, iwl8260_2ac_cfg)}, + {IWL_PCI_DEVICE(0x24F3, 0x01F0, iwl8260_2ac_cfg)}, + {IWL_PCI_DEVICE(0x24F3, 0x0012, iwl8260_2ac_cfg)}, + {IWL_PCI_DEVICE(0x24F3, 0x1012, iwl8260_2ac_cfg)}, {IWL_PCI_DEVICE(0x24F3, 0x1110, iwl8260_2ac_cfg)}, {IWL_PCI_DEVICE(0x24F3, 0x0050, iwl8260_2ac_cfg)}, {IWL_PCI_DEVICE(0x24F3, 0x0250, iwl8260_2ac_cfg)}, {IWL_PCI_DEVICE(0x24F3, 0x1050, iwl8260_2ac_cfg)}, {IWL_PCI_DEVICE(0x24F3, 0x0150, iwl8260_2ac_cfg)}, + {IWL_PCI_DEVICE(0x24F3, 0x1150, iwl8260_2ac_cfg)}, {IWL_PCI_DEVICE(0x24F4, 0x0030, iwl8260_2ac_cfg)}, - {IWL_PCI_DEVICE(0x24F4, 0x1130, iwl8260_2ac_cfg)}, {IWL_PCI_DEVICE(0x24F4, 0x1030, iwl8260_2ac_cfg)}, {IWL_PCI_DEVICE(0x24F3, 0xC010, iwl8260_2ac_cfg)}, {IWL_PCI_DEVICE(0x24F3, 0xC110, iwl8260_2ac_cfg)}, @@ -433,18 +445,28 @@ {IWL_PCI_DEVICE(0x24F3, 0xC050, iwl8260_2ac_cfg)}, {IWL_PCI_DEVICE(0x24F3, 0xD050, iwl8260_2ac_cfg)}, {IWL_PCI_DEVICE(0x24F3, 0x8010, iwl8260_2ac_cfg)}, + {IWL_PCI_DEVICE(0x24F3, 0x8110, iwl8260_2ac_cfg)}, {IWL_PCI_DEVICE(0x24F3, 0x9010, iwl8260_2ac_cfg)}, + {IWL_PCI_DEVICE(0x24F3, 0x9110, iwl8260_2ac_cfg)}, {IWL_PCI_DEVICE(0x24F4, 0x8030, iwl8260_2ac_cfg)}, {IWL_PCI_DEVICE(0x24F4, 0x9030, iwl8260_2ac_cfg)}, + {IWL_PCI_DEVICE(0x24F3, 0x8130, iwl8260_2ac_cfg)}, + {IWL_PCI_DEVICE(0x24F3, 0x9130, iwl8260_2ac_cfg)}, + {IWL_PCI_DEVICE(0x24F3, 0x8132, iwl8260_2ac_cfg)}, + {IWL_PCI_DEVICE(0x24F3, 0x9132, iwl8260_2ac_cfg)}, {IWL_PCI_DEVICE(0x24F3, 0x8050, iwl8260_2ac_cfg)}, + {IWL_PCI_DEVICE(0x24F3, 0x8150, iwl8260_2ac_cfg)}, {IWL_PCI_DEVICE(0x24F3, 0x9050, iwl8260_2ac_cfg)}, + {IWL_PCI_DEVICE(0x24F3, 0x9150, iwl8260_2ac_cfg)}, {IWL_PCI_DEVICE(0x24F3, 0x0004, iwl8260_2n_cfg)}, + {IWL_PCI_DEVICE(0x24F3, 0x0044, iwl8260_2n_cfg)}, {IWL_PCI_DEVICE(0x24F5, 0x0010, iwl4165_2ac_cfg)}, {IWL_PCI_DEVICE(0x24F6, 0x0030, iwl4165_2ac_cfg)}, {IWL_PCI_DEVICE(0x24F3, 0x0810, iwl8260_2ac_cfg)}, {IWL_PCI_DEVICE(0x24F3, 0x0910, iwl8260_2ac_cfg)}, {IWL_PCI_DEVICE(0x24F3, 0x0850, iwl8260_2ac_cfg)}, {IWL_PCI_DEVICE(0x24F3, 0x0950, iwl8260_2ac_cfg)}, + {IWL_PCI_DEVICE(0x24F3, 0x0930, iwl8260_2ac_cfg)}, #endif /* CONFIG_IWLMVM */ {0} --- linux-raspi2-4.2.0.orig/drivers/net/wireless/iwlwifi/pcie/trans.c +++ linux-raspi2-4.2.0/drivers/net/wireless/iwlwifi/pcie/trans.c @@ -592,10 +592,8 @@ do { ret = iwl_pcie_set_hw_ready(trans); - if (ret >= 0) { - ret = 0; - goto out; - } + if (ret >= 0) + return 0; usleep_range(200, 1000); t += 200; @@ -605,10 +603,6 @@ IWL_ERR(trans, "Couldn't prepare the card\n"); -out: - iwl_clear_bit(trans, CSR_DBG_LINK_PWR_MGMT_REG, - CSR_RESET_LINK_PWR_MGMT_DISABLED); - return ret; } --- linux-raspi2-4.2.0.orig/drivers/net/wireless/mediatek/mt7601u/dma.c +++ linux-raspi2-4.2.0/drivers/net/wireless/mediatek/mt7601u/dma.c @@ -112,7 +112,9 @@ if (!skb) return; - ieee80211_rx_ni(dev->hw, skb); + spin_lock(&dev->mac_lock); + ieee80211_rx(dev->hw, skb); + spin_unlock(&dev->mac_lock); } static u16 mt7601u_rx_next_seg_len(u8 *data, u32 data_len) @@ -236,23 +238,42 @@ skb = q->e[q->start].skb; trace_mt_tx_dma_done(dev, skb); - mt7601u_tx_status(dev, skb); + __skb_queue_tail(&dev->tx_skb_done, skb); + tasklet_schedule(&dev->tx_tasklet); if (q->used == q->entries - q->entries / 8) ieee80211_wake_queue(dev->hw, skb_get_queue_mapping(skb)); q->start = (q->start + 1) % q->entries; q->used--; +out: + spin_unlock_irqrestore(&dev->tx_lock, flags); +} - if (urb->status) - goto out; +static void mt7601u_tx_tasklet(unsigned long data) +{ + struct mt7601u_dev *dev = (struct mt7601u_dev *) data; + struct sk_buff_head skbs; + unsigned long flags; + + __skb_queue_head_init(&skbs); + + spin_lock_irqsave(&dev->tx_lock, flags); set_bit(MT7601U_STATE_MORE_STATS, &dev->state); if (!test_and_set_bit(MT7601U_STATE_READING_STATS, &dev->state)) queue_delayed_work(dev->stat_wq, &dev->stat_work, msecs_to_jiffies(10)); -out: + + skb_queue_splice_init(&dev->tx_skb_done, &skbs); + spin_unlock_irqrestore(&dev->tx_lock, flags); + + while (!skb_queue_empty(&skbs)) { + struct sk_buff *skb = __skb_dequeue(&skbs); + + mt7601u_tx_status(dev, skb); + } } static int mt7601u_dma_submit_tx(struct mt7601u_dev *dev, @@ -475,6 +496,7 @@ { int ret = -ENOMEM; + tasklet_init(&dev->tx_tasklet, mt7601u_tx_tasklet, (unsigned long) dev); tasklet_init(&dev->rx_tasklet, mt7601u_rx_tasklet, (unsigned long) dev); ret = mt7601u_alloc_tx(dev); @@ -502,4 +524,6 @@ mt7601u_free_rx(dev); mt7601u_free_tx(dev); + + tasklet_kill(&dev->tx_tasklet); } --- linux-raspi2-4.2.0.orig/drivers/net/wireless/mediatek/mt7601u/init.c +++ linux-raspi2-4.2.0/drivers/net/wireless/mediatek/mt7601u/init.c @@ -454,8 +454,10 @@ spin_lock_init(&dev->tx_lock); spin_lock_init(&dev->rx_lock); spin_lock_init(&dev->lock); + spin_lock_init(&dev->mac_lock); spin_lock_init(&dev->con_mon_lock); atomic_set(&dev->avg_ampdu_len, 1); + skb_queue_head_init(&dev->tx_skb_done); dev->stat_wq = alloc_workqueue("mt7601u", WQ_UNBOUND, 0); if (!dev->stat_wq) { --- linux-raspi2-4.2.0.orig/drivers/net/wireless/mediatek/mt7601u/mac.c +++ linux-raspi2-4.2.0/drivers/net/wireless/mediatek/mt7601u/mac.c @@ -181,7 +181,11 @@ } mt76_mac_fill_tx_status(dev, &info, stat); + + spin_lock_bh(&dev->mac_lock); ieee80211_tx_status_noskb(dev->hw, sta, &info); + spin_unlock_bh(&dev->mac_lock); + rcu_read_unlock(); } --- linux-raspi2-4.2.0.orig/drivers/net/wireless/mediatek/mt7601u/mt7601u.h +++ linux-raspi2-4.2.0/drivers/net/wireless/mediatek/mt7601u/mt7601u.h @@ -141,12 +141,13 @@ /** * struct mt7601u_dev - adapter structure * @lock: protects @wcid->tx_rate. + * @mac_lock: locks out mac80211's tx status and rx paths. * @tx_lock: protects @tx_q and changes of MT7601U_STATE_*_STATS - flags in @state. + * flags in @state. * @rx_lock: protects @rx_q. * @con_mon_lock: protects @ap_bssid, @bcn_*, @avg_rssi. * @mutex: ensures exclusive access from mac80211 callbacks. - * @vendor_req_mutex: ensures atomicity of vendor requests. + * @vendor_req_mutex: protects @vend_buf, ensures atomicity of split writes. * @reg_atomic_mutex: ensures atomicity of indirect register accesses * (accesses to RF and BBP). * @hw_atomic_mutex: ensures exclusive access to HW during critical @@ -177,6 +178,7 @@ struct mt76_wcid __rcu *wcid[N_WCIDS]; spinlock_t lock; + spinlock_t mac_lock; const u16 *beacon_offsets; @@ -184,6 +186,8 @@ struct mt7601u_eeprom_params *ee; struct mutex vendor_req_mutex; + void *vend_buf; + struct mutex reg_atomic_mutex; struct mutex hw_atomic_mutex; @@ -197,7 +201,9 @@ /* TX */ spinlock_t tx_lock; + struct tasklet_struct tx_tasklet; struct mt7601u_tx_queue *tx_q; + struct sk_buff_head tx_skb_done; atomic_t avg_ampdu_len; --- linux-raspi2-4.2.0.orig/drivers/net/wireless/mediatek/mt7601u/tx.c +++ linux-raspi2-4.2.0/drivers/net/wireless/mediatek/mt7601u/tx.c @@ -116,7 +116,10 @@ ieee80211_tx_info_clear_status(info); info->status.rates[0].idx = -1; info->flags |= IEEE80211_TX_STAT_ACK; + + spin_lock(&dev->mac_lock); ieee80211_tx_status(dev->hw, skb); + spin_unlock(&dev->mac_lock); } static int mt7601u_skb_rooms(struct mt7601u_dev *dev, struct sk_buff *skb) --- linux-raspi2-4.2.0.orig/drivers/net/wireless/mediatek/mt7601u/usb.c +++ linux-raspi2-4.2.0/drivers/net/wireless/mediatek/mt7601u/usb.c @@ -92,10 +92,9 @@ complete(cmpl); } -static int -__mt7601u_vendor_request(struct mt7601u_dev *dev, const u8 req, - const u8 direction, const u16 val, const u16 offset, - void *buf, const size_t buflen) +int mt7601u_vendor_request(struct mt7601u_dev *dev, const u8 req, + const u8 direction, const u16 val, const u16 offset, + void *buf, const size_t buflen) { int i, ret; struct usb_device *usb_dev = mt7601u_to_usb_dev(dev); @@ -110,6 +109,8 @@ trace_mt_vend_req(dev, pipe, req, req_type, val, offset, buf, buflen, ret); + if (ret == -ENODEV) + set_bit(MT7601U_STATE_REMOVED, &dev->state); if (ret >= 0 || ret == -ENODEV) return ret; @@ -122,25 +123,6 @@ return ret; } -int -mt7601u_vendor_request(struct mt7601u_dev *dev, const u8 req, - const u8 direction, const u16 val, const u16 offset, - void *buf, const size_t buflen) -{ - int ret; - - mutex_lock(&dev->vendor_req_mutex); - - ret = __mt7601u_vendor_request(dev, req, direction, val, offset, - buf, buflen); - if (ret == -ENODEV) - set_bit(MT7601U_STATE_REMOVED, &dev->state); - - mutex_unlock(&dev->vendor_req_mutex); - - return ret; -} - void mt7601u_vendor_reset(struct mt7601u_dev *dev) { mt7601u_vendor_request(dev, MT_VEND_DEV_MODE, USB_DIR_OUT, @@ -150,19 +132,21 @@ u32 mt7601u_rr(struct mt7601u_dev *dev, u32 offset) { int ret; - __le32 reg; - u32 val; + u32 val = ~0; WARN_ONCE(offset > USHRT_MAX, "read high off:%08x", offset); + mutex_lock(&dev->vendor_req_mutex); + ret = mt7601u_vendor_request(dev, MT_VEND_MULTI_READ, USB_DIR_IN, - 0, offset, ®, sizeof(reg)); - val = le32_to_cpu(reg); - if (ret > 0 && ret != sizeof(reg)) { + 0, offset, dev->vend_buf, MT_VEND_BUF); + if (ret == MT_VEND_BUF) + val = get_unaligned_le32(dev->vend_buf); + else if (ret > 0) dev_err(dev->dev, "Error: wrong size read:%d off:%08x\n", ret, offset); - val = ~0; - } + + mutex_unlock(&dev->vendor_req_mutex); trace_reg_read(dev, offset, val); return val; @@ -173,12 +157,17 @@ { int ret; + mutex_lock(&dev->vendor_req_mutex); + ret = mt7601u_vendor_request(dev, req, USB_DIR_OUT, val & 0xffff, offset, NULL, 0); - if (ret) - return ret; - return mt7601u_vendor_request(dev, req, USB_DIR_OUT, - val >> 16, offset + 2, NULL, 0); + if (!ret) + ret = mt7601u_vendor_request(dev, req, USB_DIR_OUT, + val >> 16, offset + 2, NULL, 0); + + mutex_unlock(&dev->vendor_req_mutex); + + return ret; } void mt7601u_wr(struct mt7601u_dev *dev, u32 offset, u32 val) @@ -275,6 +264,12 @@ usb_set_intfdata(usb_intf, dev); + dev->vend_buf = devm_kmalloc(dev->dev, MT_VEND_BUF, GFP_KERNEL); + if (!dev->vend_buf) { + ret = -ENOMEM; + goto err; + } + ret = mt7601u_assign_pipes(usb_intf, dev); if (ret) goto err; --- linux-raspi2-4.2.0.orig/drivers/net/wireless/mediatek/mt7601u/usb.h +++ linux-raspi2-4.2.0/drivers/net/wireless/mediatek/mt7601u/usb.h @@ -23,6 +23,8 @@ #define MT_VEND_DEV_MODE_RESET 1 +#define MT_VEND_BUF sizeof(__le32) + enum mt_vendor_req { MT_VEND_DEV_MODE = 1, MT_VEND_WRITE = 2, --- linux-raspi2-4.2.0.orig/drivers/net/wireless/mwifiex/debugfs.c +++ linux-raspi2-4.2.0/drivers/net/wireless/mwifiex/debugfs.c @@ -731,7 +731,7 @@ (struct mwifiex_private *) file->private_data; unsigned long addr = get_zeroed_page(GFP_KERNEL); char *buf = (char *) addr; - int pos = 0, ret = 0, i; + int pos, ret, i; u8 value[MAX_EEPROM_DATA]; if (!buf) @@ -739,7 +739,7 @@ if (saved_offset == -1) { /* No command has been given */ - pos += snprintf(buf, PAGE_SIZE, "0"); + pos = snprintf(buf, PAGE_SIZE, "0"); goto done; } @@ -748,17 +748,17 @@ (u16) saved_bytes, value); if (ret) { ret = -EINVAL; - goto done; + goto out_free; } - pos += snprintf(buf, PAGE_SIZE, "%d %d ", saved_offset, saved_bytes); + pos = snprintf(buf, PAGE_SIZE, "%d %d ", saved_offset, saved_bytes); for (i = 0; i < saved_bytes; i++) - pos += snprintf(buf + strlen(buf), PAGE_SIZE, "%d ", value[i]); - - ret = simple_read_from_buffer(ubuf, count, ppos, buf, pos); + pos += scnprintf(buf + pos, PAGE_SIZE - pos, "%d ", value[i]); done: + ret = simple_read_from_buffer(ubuf, count, ppos, buf, pos); +out_free: free_page(addr); return ret; } --- linux-raspi2-4.2.0.orig/drivers/net/wireless/rsi/rsi_91x_sdio_ops.c +++ linux-raspi2-4.2.0/drivers/net/wireless/rsi/rsi_91x_sdio_ops.c @@ -203,8 +203,10 @@ /* Copy firmware into DMA-accessible memory */ fw = kmemdup(fw_entry->data, fw_entry->size, GFP_KERNEL); - if (!fw) - return -ENOMEM; + if (!fw) { + status = -ENOMEM; + goto out; + } len = fw_entry->size; if (len % 4) @@ -217,6 +219,8 @@ status = rsi_copy_to_card(common, fw, len, num_blocks); kfree(fw); + +out: release_firmware(fw_entry); return status; } --- linux-raspi2-4.2.0.orig/drivers/net/wireless/rsi/rsi_91x_usb_ops.c +++ linux-raspi2-4.2.0/drivers/net/wireless/rsi/rsi_91x_usb_ops.c @@ -148,8 +148,10 @@ /* Copy firmware into DMA-accessible memory */ fw = kmemdup(fw_entry->data, fw_entry->size, GFP_KERNEL); - if (!fw) - return -ENOMEM; + if (!fw) { + status = -ENOMEM; + goto out; + } len = fw_entry->size; if (len % 4) @@ -162,6 +164,8 @@ status = rsi_copy_to_card(common, fw, len, num_blocks); kfree(fw); + +out: release_firmware(fw_entry); return status; } --- linux-raspi2-4.2.0.orig/drivers/net/wireless/rtl8192cu/Kconfig +++ linux-raspi2-4.2.0/drivers/net/wireless/rtl8192cu/Kconfig @@ -0,0 +1,9 @@ +config RTL8192CU + tristate "Realtek 8192C USB WiFi" + depends on MAC80211 && USB + select CFG80211_WEXT + select WIRELESS_EXT + select WEXT_PRIV + ---help--- + This option adds the Realtek RTL8192CU USB device such as Edimax EW-7811Un. + --- linux-raspi2-4.2.0.orig/drivers/net/wireless/rtl8192cu/Makefile +++ linux-raspi2-4.2.0/drivers/net/wireless/rtl8192cu/Makefile @@ -0,0 +1,615 @@ +EXTRA_CFLAGS += $(USER_EXTRA_CFLAGS) +EXTRA_CFLAGS += -O1 +#EXTRA_CFLAGS += -O3 +#EXTRA_CFLAGS += -Wall +#EXTRA_CFLAGS += -Wextra +#EXTRA_CFLAGS += -Werror +#EXTRA_CFLAGS += -pedantic +#EXTRA_CFLAGS += -Wshadow -Wpointer-arith -Wcast-qual -Wstrict-prototypes -Wmissing-prototypes + +EXTRA_CFLAGS += -Wno-unused-variable +EXTRA_CFLAGS += -Wno-unused-value +EXTRA_CFLAGS += -Wno-unused-label +EXTRA_CFLAGS += -Wno-unused-parameter +EXTRA_CFLAGS += -Wno-unused-function +EXTRA_CFLAGS += -Wno-unused + +EXTRA_CFLAGS += -Wno-uninitialized + +EXTRA_CFLAGS += -I$(src)/include + +CONFIG_AUTOCFG_CP = n + +CONFIG_RTL8192C = y +CONFIG_RTL8192D = n +CONFIG_RTL8723A = n + +CONFIG_USB_HCI = y +CONFIG_PCI_HCI = n +CONFIG_SDIO_HCI = n + +CONFIG_MP_INCLUDED = n +CONFIG_POWER_SAVING = y +CONFIG_USB_AUTOSUSPEND = n +CONFIG_HW_PWRP_DETECTION = n +CONFIG_WIFI_TEST = n +CONFIG_BT_COEXISTENCE = n +CONFIG_RTL8192CU_REDEFINE_1X1 = n +CONFIG_INTEL_WIDI = n +CONFIG_WAKE_ON_WLAN = n + +CONFIG_PLATFORM_I386_PC = y +CONFIG_PLATFORM_TI_AM3517 = n +CONFIG_PLATFORM_ANDROID_X86 = n +CONFIG_PLATFORM_JB_X86 = n +CONFIG_PLATFORM_ARM_S3C2K4 = n +CONFIG_PLATFORM_ARM_PXA2XX = n +CONFIG_PLATFORM_ARM_S3C6K4 = n +CONFIG_PLATFORM_MIPS_RMI = n +CONFIG_PLATFORM_RTD2880B = n +CONFIG_PLATFORM_MIPS_AR9132 = n +CONFIG_PLATFORM_RTK_DMP = n +CONFIG_PLATFORM_MIPS_PLM = n +CONFIG_PLATFORM_MSTAR389 = n +CONFIG_PLATFORM_MT53XX = n +CONFIG_PLATFORM_ARM_MX51_241H = n +CONFIG_PLATFORM_FS_MX61 = n +CONFIG_PLATFORM_ACTIONS_ATJ227X = n +CONFIG_PLATFORM_TEGRA3_CARDHU = n +CONFIG_PLATFORM_TEGRA4_DALMORE = n +CONFIG_PLATFORM_ARM_TCC8900 = n +CONFIG_PLATFORM_ARM_TCC8920 = n +CONFIG_PLATFORM_ARM_TCC8920_JB42 = n +CONFIG_PLATFORM_ARM_RK2818 = n +CONFIG_PLATFORM_ARM_TI_PANDA = n +CONFIG_PLATFORM_MIPS_JZ4760 = n +CONFIG_PLATFORM_DMP_PHILIPS = n +CONFIG_PLATFORM_TI_DM365 = n +CONFIG_PLATFORM_MN10300 = n +CONFIG_PLATFORM_MSTAR_TITANIA12 = n +CONFIG_PLATFORM_MSTAR_A3 = n +CONFIG_PLATFORM_ARM_SUNxI = n +CONFIG_PLATFORM_ARM_SUN6I = n + +CONFIG_DRVEXT_MODULE = n + +export TopDIR ?= $(shell pwd) + + +ifeq ($(CONFIG_RTL8192C), y) + +RTL871X = rtl8192c + +ifeq ($(CONFIG_USB_HCI), y) +MODULE_NAME = 8192cu +FW_FILES := hal/$(RTL871X)/usb/Hal8192CUHWImg.o +ifneq ($(CONFIG_WAKE_ON_WLAN), n) +FW_FILES += hal/$(RTL871X)/usb/Hal8192CUHWImg_wowlan.o +endif +endif +ifeq ($(CONFIG_PCI_HCI), y) +MODULE_NAME = 8192ce +FW_FILES := hal/$(RTL871X)/pci/Hal8192CEHWImg.o +endif + +CHIP_FILES := \ + hal/$(RTL871X)/$(RTL871X)_sreset.o \ + hal/$(RTL871X)/$(RTL871X)_xmit.o +CHIP_FILES += $(FW_FILES) +endif + +ifeq ($(CONFIG_RTL8192D), y) + +RTL871X = rtl8192d + +ifeq ($(CONFIG_USB_HCI), y) +MODULE_NAME = 8192du +FW_FILES := hal/$(RTL871X)/usb/Hal8192DUHWImg.o +ifneq ($(CONFIG_WAKE_ON_WLAN), n) +FW_FILES += hal/$(RTL871X)/usb/Hal8192DUHWImg_wowlan.o +endif +endif +ifeq ($(CONFIG_PCI_HCI), y) +MODULE_NAME = 8192de +FW_FILES := hal/$(RTL871X)/pci/Hal8192DEHWImg.o +endif + +CHIP_FILES := \ + hal/$(RTL871X)/$(RTL871X)_xmit.o +CHIP_FILES += $(FW_FILES) +endif + +ifeq ($(CONFIG_RTL8723A), y) + +RTL871X = rtl8723a + +ifeq ($(CONFIG_SDIO_HCI), y) +MODULE_NAME = 8723as +FW_FILES := hal/$(RTL871X)/sdio/Hal8723SHWImg.o +endif + +ifeq ($(CONFIG_USB_HCI), y) +MODULE_NAME = 8723au +FW_FILES := hal/$(RTL871X)/usb/Hal8723UHWImg.o +endif + +ifeq ($(CONFIG_PCI_HCI), y) +MODULE_NAME = 8723ae +FW_FILES := hal/$(RTL871X)/pci/Hal8723EHWImg.o +endif + +PWRSEQ_FILES := hal/HalPwrSeqCmd.o \ + hal/$(RTL871X)/Hal8723PwrSeq.o + +CHIP_FILES += $(FW_FILES) $(PWRSEQ_FILES) + +endif + +ifeq ($(CONFIG_SDIO_HCI), y) +HCI_NAME = sdio +endif + +ifeq ($(CONFIG_USB_HCI), y) +HCI_NAME = usb +endif + +ifeq ($(CONFIG_PCI_HCI), y) +HCI_NAME = pci +endif + + +_OS_INTFS_FILES := os_dep/osdep_service.o \ + os_dep/linux/os_intfs.o \ + os_dep/linux/$(HCI_NAME)_intf.o \ + os_dep/linux/$(HCI_NAME)_ops_linux.o \ + os_dep/linux/ioctl_linux.o \ + os_dep/linux/xmit_linux.o \ + os_dep/linux/mlme_linux.o \ + os_dep/linux/recv_linux.o \ + os_dep/linux/ioctl_cfg80211.o \ + os_dep/linux/rtw_android.o + + +_HAL_INTFS_FILES := hal/hal_intf.o \ + hal/hal_com.o \ + hal/dm.o \ + hal/$(RTL871X)/$(RTL871X)_hal_init.o \ + hal/$(RTL871X)/$(RTL871X)_phycfg.o \ + hal/$(RTL871X)/$(RTL871X)_rf6052.o \ + hal/$(RTL871X)/$(RTL871X)_dm.o \ + hal/$(RTL871X)/$(RTL871X)_rxdesc.o \ + hal/$(RTL871X)/$(RTL871X)_cmd.o \ + hal/$(RTL871X)/$(HCI_NAME)/$(HCI_NAME)_halinit.o \ + hal/$(RTL871X)/$(HCI_NAME)/rtl$(MODULE_NAME)_led.o \ + hal/$(RTL871X)/$(HCI_NAME)/rtl$(MODULE_NAME)_xmit.o \ + hal/$(RTL871X)/$(HCI_NAME)/rtl$(MODULE_NAME)_recv.o + +ifeq ($(CONFIG_SDIO_HCI), y) +_HAL_INTFS_FILES += hal/$(RTL871X)/$(HCI_NAME)/$(HCI_NAME)_ops.o +else +_HAL_INTFS_FILES += hal/$(RTL871X)/$(HCI_NAME)/$(HCI_NAME)_ops_linux.o +endif + +ifeq ($(CONFIG_MP_INCLUDED), y) +_HAL_INTFS_FILES += hal/$(RTL871X)/$(RTL871X)_mp.o +endif + +_HAL_INTFS_FILES += $(CHIP_FILES) + + +ifeq ($(CONFIG_AUTOCFG_CP), y) +$(shell cp $(TopDIR)/autoconf_$(RTL871X)_$(HCI_NAME)_linux.h $(TopDIR)/include/autoconf.h) +endif + + +ifeq ($(CONFIG_USB_HCI), y) +ifeq ($(CONFIG_USB_AUTOSUSPEND), y) +EXTRA_CFLAGS += -DCONFIG_USB_AUTOSUSPEND +endif +endif + +ifeq ($(CONFIG_POWER_SAVING), y) +EXTRA_CFLAGS += -DCONFIG_POWER_SAVING +endif + +ifeq ($(CONFIG_HW_PWRP_DETECTION), y) +EXTRA_CFLAGS += -DCONFIG_HW_PWRP_DETECTION +endif + +ifeq ($(CONFIG_WIFI_TEST), y) +EXTRA_CFLAGS += -DCONFIG_WIFI_TEST +endif + +ifeq ($(CONFIG_BT_COEXISTENCE), y) +EXTRA_CFLAGS += -DCONFIG_BT_COEXISTENCE +endif + +ifeq ($(CONFIG_RTL8192CU_REDEFINE_1X1), y) +EXTRA_CFLAGS += -DRTL8192C_RECONFIG_TO_1T1R +endif + +ifeq ($(CONFIG_WAKE_ON_WLAN), y) +EXTRA_CFLAGS += -DCONFIG_WAKE_ON_WLAN +endif + +ifeq ($(CONFIG_INTEL_WIDI), y) +EXTRA_CFLAGS += -DCONFIG_INTEL_WIDI +endif + +ifeq ($(CONFIG_PLATFORM_I386_PC), y) +EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN +SUBARCH := $(shell uname -m | sed -e s/i.86/i386/) +ARCH ?= $(SUBARCH) +CROSS_COMPILE ?= +KVER := $(shell uname -r) +KSRC := /lib/modules/$(KVER)/build +MODDESTDIR := /lib/modules/$(KVER)/kernel/drivers/net/wireless/ +INSTALL_PREFIX := +endif + +ifeq ($(CONFIG_PLATFORM_TI_AM3517), y) +EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN -DCONFIG_PLATFORM_ANDROID -DCONFIG_PLATFORM_SHUTTLE +CROSS_COMPILE := arm-eabi- +KSRC := $(shell pwd)/../../../Android/kernel +ARCH := arm +endif + +ifeq ($(CONFIG_PLATFORM_MSTAR_TITANIA12), y) +EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN -DCONFIG_PLATFORM_MSTAR -DCONFIG_PLATFORM_MSTAR_TITANIA12 +ARCH:=mips +CROSS_COMPILE:= /usr/src/Mstar_kernel/mips-4.3/bin/mips-linux-gnu- +KVER:= 2.6.28.9 +KSRC:= /usr/src/Mstar_kernel/2.6.28.9/ +endif + +ifeq ($(CONFIG_PLATFORM_MSTAR_A3), y) +EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN -DCONFIG_PLATFORM_MSTAR -DCONFIG_PLATFORM_MSTAR_A3 +ARCH:=arm +CROSS_COMPILE:= arm-none-linux-gnueabi- +KVER:= 2.6.35.11 +KSRC:= /home/gary/PERFORCE/THEALE/RedLion/2.6.35.11/ +MODULE_NAME = wlan +endif + +ifeq ($(CONFIG_PLATFORM_ANDROID_X86), y) +EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN +SUBARCH := $(shell uname -m | sed -e s/i.86/i386/) +ARCH := $(SUBARCH) +CROSS_COMPILE := /media/DATA-2/android-x86/ics-x86_20120130/prebuilt/linux-x86/toolchain/i686-unknown-linux-gnu-4.2.1/bin/i686-unknown-linux-gnu- +KSRC := /media/DATA-2/android-x86/ics-x86_20120130/out/target/product/generic_x86/obj/kernel +MODULE_NAME :=wlan +endif + +ifeq ($(CONFIG_PLATFORM_JB_X86), y) +EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN +EXTRA_CFLAGS += -DCONFIG_CONCURRENT_MODE +EXTRA_CFLAGS += -DCONFIG_IOCTL_CFG80211 -DRTW_USE_CFG80211_STA_EVENT +EXTRA_CFLAGS += -DCONFIG_P2P_IPS +SUBARCH := $(shell uname -m | sed -e s/i.86/i386/) +ARCH := $(SUBARCH) +CROSS_COMPILE := /home/android_sdk/android-x86_JB/prebuilts/gcc/linux-x86/x86/i686-linux-android-4.7/bin/i686-linux-android- +KSRC := /home/android_sdk/android-x86_JB/out/target/product/x86/obj/kernel/ +MODULE_NAME :=wlan +endif + +ifeq ($(CONFIG_PLATFORM_ARM_PXA2XX), y) +EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN +ARCH := arm +CROSS_COMPILE := arm-none-linux-gnueabi- +KVER := 2.6.34.1 +KSRC ?= /usr/src/linux-2.6.34.1 +endif + +ifeq ($(CONFIG_PLATFORM_ARM_S3C2K4), y) +EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN +ARCH := arm +CROSS_COMPILE := arm-linux- +KVER := 2.6.24.7_$(ARCH) +KSRC := /usr/src/kernels/linux-$(KVER) +endif + +ifeq ($(CONFIG_PLATFORM_ARM_S3C6K4), y) +EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN +ARCH := arm +CROSS_COMPILE := arm-none-linux-gnueabi- +KVER := 2.6.34.1 +KSRC ?= /usr/src/linux-2.6.34.1 +endif + +ifeq ($(CONFIG_PLATFORM_RTD2880B), y) +EXTRA_CFLAGS += -DCONFIG_BIG_ENDIAN -DCONFIG_PLATFORM_RTD2880B +ARCH:= +CROSS_COMPILE:= +KVER:= +KSRC:= +endif + +ifeq ($(CONFIG_PLATFORM_MIPS_RMI), y) +EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN +ARCH:=mips +CROSS_COMPILE:=mipsisa32r2-uclibc- +KVER:= +KSRC:= /root/work/kernel_realtek +endif + +ifeq ($(CONFIG_PLATFORM_MIPS_PLM), y) +EXTRA_CFLAGS += -DCONFIG_BIG_ENDIAN +ARCH:=mips +CROSS_COMPILE:=mipsisa32r2-uclibc- +KVER:= +KSRC:= /root/work/kernel_realtek +endif + +ifeq ($(CONFIG_PLATFORM_MSTAR389), y) +EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN -DCONFIG_PLATFORM_MSTAR389 +ARCH:=mips +CROSS_COMPILE:= mips-linux-gnu- +KVER:= 2.6.28.10 +KSRC:= /home/mstar/mstar_linux/2.6.28.9/ +endif + +ifeq ($(CONFIG_PLATFORM_MIPS_AR9132), y) +EXTRA_CFLAGS += -DCONFIG_BIG_ENDIAN +ARCH := mips +CROSS_COMPILE := mips-openwrt-linux- +KSRC := /home/alex/test_openwrt/tmp/linux-2.6.30.9 +endif + +ifeq ($(CONFIG_PLATFORM_DMP_PHILIPS), y) +EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN -DRTK_DMP_PLATFORM +ARCH := mips +#CROSS_COMPILE:=/usr/local/msdk-4.3.6-mips-EL-2.6.12.6-0.9.30.3/bin/mipsel-linux- +CROSS_COMPILE:=/usr/local/toolchain_mipsel/bin/mipsel-linux- +KSRC ?=/usr/local/Jupiter/linux-2.6.12 +endif + +ifeq ($(CONFIG_PLATFORM_RTK_DMP), y) +EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN -DRTK_DMP_PLATFORM +ARCH:=mips +CROSS_COMPILE:=mipsel-linux- +KVER:= +KSRC ?= /usr/src/DMP_Kernel/jupiter/linux-2.6.12 +endif + +ifeq ($(CONFIG_PLATFORM_MT53XX), y) +EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN -DCONFIG_PLATFORM_MT53XX +ARCH:= arm +CROSS_COMPILE:= arm11_mtk_le- +KVER:= 2.6.27 +KSRC?= /proj/mtk00802/BD_Compare/BDP/Dev/BDP_V301/BDP_Linux/linux-2.6.27 +endif + +ifeq ($(CONFIG_PLATFORM_ARM_MX51_241H), y) +EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN -DCONFIG_WISTRON_PLATFORM +ARCH := arm +CROSS_COMPILE := /opt/freescale/usr/local/gcc-4.1.2-glibc-2.5-nptl-3/arm-none-linux-gnueabi/bin/arm-none-linux-gnueabi- +KVER := 2.6.31 +KSRC ?= /lib/modules/2.6.31-770-g0e46b52/source +endif + +ifeq ($(CONFIG_PLATFORM_FS_MX61), y) +EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN +ARCH := arm +CROSS_COMPILE := /home/share/CusEnv/FreeScale/arm-eabi-4.4.3/bin/arm-eabi- +KSRC ?= /home/share/CusEnv/FreeScale/FS_kernel_env +endif + + + +ifeq ($(CONFIG_PLATFORM_ACTIONS_ATJ227X), y) +EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN -DCONFIG_PLATFORM_ACTIONS_ATJ227X +ARCH := mips +CROSS_COMPILE := /home/cnsd4/project/actions/tools-2.6.27/bin/mipsel-linux-gnu- +KVER := 2.6.27 +KSRC := /home/cnsd4/project/actions/linux-2.6.27.28 +endif + +ifeq ($(CONFIG_PLATFORM_TI_DM365), y) +EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN -DCONFIG_PLATFORM_TI_DM365 +ARCH := arm +CROSS_COMPILE := /home/cnsd4/Appro/mv_pro_5.0/montavista/pro/devkit/arm/v5t_le/bin/arm_v5t_le- +KVER := 2.6.18 +KSRC := /home/cnsd4/Appro/mv_pro_5.0/montavista/pro/devkit/lsp/ti-davinci/linux-dm365 +endif + +ifeq ($(CONFIG_PLATFORM_TEGRA3_CARDHU), y) +EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN +# default setting for Android 4.1, 4.2 +EXTRA_CFLAGS += -DRTW_ENABLE_WIFI_CONTROL_FUNC +EXTRA_CFLAGS += -DCONFIG_CONCURRENT_MODE +EXTRA_CFLAGS += -DCONFIG_IOCTL_CFG80211 -DRTW_USE_CFG80211_STA_EVENT +EXTRA_CFLAGS += -DCONFIG_P2P_IPS +ARCH := arm +CROSS_COMPILE := /home/android_sdk/nvidia/tegra-16r3-partner-android-4.1_20120723/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/arm-eabi- +KSRC := /home/android_sdk/nvidia/tegra-16r3-partner-android-4.1_20120723/out/target/product/cardhu/obj/KERNEL +MODULE_NAME := wlan +endif + +ifeq ($(CONFIG_PLATFORM_TEGRA4_DALMORE), y) +EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN +# default setting for Android 4.1, 4.2 +EXTRA_CFLAGS += -DRTW_ENABLE_WIFI_CONTROL_FUNC +EXTRA_CFLAGS += -DCONFIG_CONCURRENT_MODE +EXTRA_CFLAGS += -DCONFIG_IOCTL_CFG80211 -DRTW_USE_CFG80211_STA_EVENT +EXTRA_CFLAGS += -DCONFIG_P2P_IPS +ARCH := arm +CROSS_COMPILE := /home/android_sdk/nvidia/tegra-17r9-partner-android-4.2-dalmore_20130131/prebuilts/gcc/linux-x86/arm/arm-eabi-4.6/bin/arm-eabi- +KSRC := /home/android_sdk/nvidia/tegra-17r9-partner-android-4.2-dalmore_20130131/out/target/product/dalmore/obj/KERNEL +MODULE_NAME := wlan +endif + +ifeq ($(CONFIG_PLATFORM_ARM_TCC8900), y) +EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN +ARCH := arm +CROSS_COMPILE := /home/android_sdk/Telechips/SDK_2304_20110613/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/arm-eabi- +KSRC := /home/android_sdk/Telechips/SDK_2304_20110613/kernel +MODULE_NAME := wlan +endif + +ifeq ($(CONFIG_PLATFORM_ARM_TCC8920), y) +EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN +ARCH := arm +CROSS_COMPILE := /home/android_sdk/Telechips/v12.06_r1-tcc-android-4.0.4/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/arm-eabi- +KSRC := /home/android_sdk/Telechips/v12.06_r1-tcc-android-4.0.4/kernel +MODULE_NAME := wlan +endif + +ifeq ($(CONFIG_PLATFORM_ARM_TCC8920_JB42), y) +EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN +# default setting for Android 4.1, 4.2 +EXTRA_CFLAGS += -DCONFIG_CONCURRENT_MODE +EXTRA_CFLAGS += -DCONFIG_IOCTL_CFG80211 -DRTW_USE_CFG80211_STA_EVENT +EXTRA_CFLAGS += -DCONFIG_P2P_IPS +ARCH := arm +CROSS_COMPILE := /home/android_sdk/Telechips/v13.03_r1-tcc-android-4.2.2_ds_patched/prebuilts/gcc/linux-x86/arm/arm-eabi-4.6/bin/arm-eabi- +KSRC := /home/android_sdk/Telechips/v13.03_r1-tcc-android-4.2.2_ds_patched/kernel +MODULE_NAME := wlan +endif + +ifeq ($(CONFIG_PLATFORM_ARM_RK2818), y) +EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN -DCONFIG_PLATFORM_ANDROID -DCONFIG_PLATFORM_ROCKCHIPS -DCONFIG_MINIMAL_MEMORY_USAGE +ARCH := arm +CROSS_COMPILE := /usr/src/release_fae_version/toolchain/arm-eabi-4.4.0/bin/arm-eabi- +KSRC := /usr/src/release_fae_version/kernel25_A7_281x +MODULE_NAME := wlan +endif + +ifeq ($(CONFIG_PLATFORM_ARM_TI_PANDA), y) +EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN #-DCONFIG_MINIMAL_MEMORY_USAGE +ARCH := arm +#CROSS_COMPILE := /media/DATA-1/aosp/ics-aosp_20111227/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/arm-eabi- +#KSRC := /media/DATA-1/aosp/android-omap-panda-3.0_20120104 +CROSS_COMPILE := /media/DATA-1/android-4.0/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/arm-eabi- +KSRC := /media/DATA-1/android-4.0/panda_kernel/omap +MODULE_NAME := wlan +endif + +ifeq ($(CONFIG_PLATFORM_MIPS_JZ4760), y) +EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN -DCONFIG_MINIMAL_MEMORY_USAGE +ARCH ?= mips +CROSS_COMPILE ?= /mnt/sdb5/Ingenic/Umido/mips-4.3/bin/mips-linux-gnu- +KSRC ?= /mnt/sdb5/Ingenic/Umido/kernel +endif + +#Add setting for MN10300 +ifeq ($(CONFIG_PLATFORM_MN10300), y) +EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN -DCONFIG_PLATFORM_MN10300 +ARCH := mn10300 +CROSS_COMPILE := mn10300-linux- +KVER := 2.6.32.2 +KSRC := /home/winuser/work/Plat_sLD2T_V3010/usr/src/linux-2.6.32.2 +INSTALL_PREFIX := +endif + +ifeq ($(CONFIG_PLATFORM_ARM_SUNxI), y) +EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN -DCONFIG_PLATFORM_ARM_SUNxI +ARCH := arm +CROSS_COMPILE := arm-none-linux-gnueabi- +KVER := 3.0.8 +#KSRC:= ../lichee/linux-3.0/ +endif + +ifeq ($(CONFIG_PLATFORM_ARM_SUN6I), y) +EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN +EXTRA_CFLAGS += -DCONFIG_PLATFORM_ARM_SUN6I +EXTRA_CFLAGS += -DCONFIG_USE_USB_BUFFER_ALLOC_TX +EXTRA_CFLAGS += -DCONFIG_TRAFFIC_PROTECT +# default setting for Android 4.1, 4.2 +EXTRA_CFLAGS += -DCONFIG_CONCURRENT_MODE +EXTRA_CFLAGS += -DCONFIG_IOCTL_CFG80211 -DRTW_USE_CFG80211_STA_EVENT +EXTRA_CFLAGS += -DCONFIG_P2P_IPS +ARCH := arm +CROSS_COMPILE := arm-none-linux-gnueabi- +KVER := 3.3.0 +#KSRC:= ../lichee/linux-3.3/ +endif + +ifneq ($(USER_MODULE_NAME),) +MODULE_NAME := $(USER_MODULE_NAME) +endif + +ifeq ($(CONFIG_MP_INCLUDED), y) +MODULE_NAME := $(MODULE_NAME)_mp +EXTRA_CFLAGS += -DCONFIG_MP_INCLUDED +endif + + +ifneq ($(KERNELRELEASE),) + + +rtk_core := core/rtw_cmd.o \ + core/rtw_security.o \ + core/rtw_debug.o \ + core/rtw_io.o \ + core/rtw_ioctl_query.o \ + core/rtw_ioctl_set.o \ + core/rtw_ieee80211.o \ + core/rtw_mlme.o \ + core/rtw_mlme_ext.o \ + core/rtw_wlan_util.o \ + core/rtw_pwrctrl.o \ + core/rtw_rf.o \ + core/rtw_recv.o \ + core/rtw_sta_mgt.o \ + core/rtw_ap.o \ + core/rtw_xmit.o \ + core/rtw_p2p.o \ + core/rtw_tdls.o \ + core/rtw_br_ext.o \ + core/rtw_iol.o \ + core/rtw_sreset.o + +$(MODULE_NAME)-y += $(rtk_core) + +$(MODULE_NAME)-$(CONFIG_INTEL_WIDI) += core/rtw_intel_widi.o + +$(MODULE_NAME)-y += core/efuse/rtw_efuse.o + +$(MODULE_NAME)-y += $(_HAL_INTFS_FILES) + +$(MODULE_NAME)-y += $(_OS_INTFS_FILES) + +$(MODULE_NAME)-$(CONFIG_MP_INCLUDED) += core/rtw_mp.o \ + core/rtw_mp_ioctl.o + +obj-$(CONFIG_RTL8192CU) := $(MODULE_NAME).o + +else + +export CONFIG_RTL8192CU = m + +all: modules + +modules: + $(MAKE) ARCH=$(ARCH) CROSS_COMPILE=$(CROSS_COMPILE) -C $(KSRC) M=$(shell pwd) modules + +strip: + $(CROSS_COMPILE)strip $(MODULE_NAME).ko --strip-unneeded + +install: + install -p -m 644 $(MODULE_NAME).ko $(MODDESTDIR) + /sbin/depmod -a ${KVER} + +uninstall: + rm -f $(MODDESTDIR)/$(MODULE_NAME).ko + /sbin/depmod -a ${KVER} + + +config_r: + @echo "make config" + /bin/bash script/Configure script/config.in + +.PHONY: modules clean + +clean: + rm -fr *.mod.c *.mod *.o .*.cmd *.ko *~ + rm .tmp_versions -fr ; rm Module.symvers -fr + rm -fr Module.markers ; rm -fr modules.order + cd core/efuse ; rm -fr *.mod.c *.mod *.o .*.cmd *.ko + cd core ; rm -fr *.mod.c *.mod *.o .*.cmd *.ko + cd hal/$(RTL871X)/$(HCI_NAME) ; rm -fr *.mod.c *.mod *.o .*.cmd *.ko + cd hal/$(RTL871X) ; rm -fr *.mod.c *.mod *.o .*.cmd *.ko + cd hal ; rm -fr *.mod.c *.mod *.o .*.cmd *.ko + cd os_dep/linux ; rm -fr *.mod.c *.mod *.o .*.cmd *.ko + cd os_dep ; rm -fr *.mod.c *.mod *.o .*.cmd *.ko +endif --- linux-raspi2-4.2.0.orig/drivers/net/wireless/rtl8192cu/clean +++ linux-raspi2-4.2.0/drivers/net/wireless/rtl8192cu/clean @@ -0,0 +1,5 @@ +#!/bin/bash +rmmod 8192cu +rmmod 8192ce +rmmod 8192du +rmmod 8192de --- linux-raspi2-4.2.0.orig/drivers/net/wireless/rtl8192cu/core/efuse/rtw_efuse.c +++ linux-raspi2-4.2.0/drivers/net/wireless/rtl8192cu/core/efuse/rtw_efuse.c @@ -0,0 +1,1145 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved. + * + * 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 + * published by the Free Software Foundation. + * + * 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 Street, Fifth Floor, Boston, MA 02110, USA + * + * + ******************************************************************************/ +#define _RTW_EFUSE_C_ + +#include +#include +#include + +#include + + + +/*------------------------Define local variable------------------------------*/ +u8 fakeEfuseBank=0; +u32 fakeEfuseUsedBytes=0; +u8 fakeEfuseContent[EFUSE_MAX_HW_SIZE]={0}; +u8 fakeEfuseInitMap[EFUSE_MAX_MAP_LEN]={0}; +u8 fakeEfuseModifiedMap[EFUSE_MAX_MAP_LEN]={0}; + +u32 BTEfuseUsedBytes=0; +u8 BTEfuseContent[EFUSE_MAX_BT_BANK][EFUSE_MAX_HW_SIZE]; +u8 BTEfuseInitMap[EFUSE_BT_MAX_MAP_LEN]={0}; +u8 BTEfuseModifiedMap[EFUSE_BT_MAX_MAP_LEN]={0}; + +u32 fakeBTEfuseUsedBytes=0; +u8 fakeBTEfuseContent[EFUSE_MAX_BT_BANK][EFUSE_MAX_HW_SIZE]; +u8 fakeBTEfuseInitMap[EFUSE_BT_MAX_MAP_LEN]={0}; +u8 fakeBTEfuseModifiedMap[EFUSE_BT_MAX_MAP_LEN]={0}; +/*------------------------Define local variable------------------------------*/ + +//------------------------------------------------------------------------------ +#define REG_EFUSE_CTRL 0x0030 +#define EFUSE_CTRL REG_EFUSE_CTRL // E-Fuse Control. +//------------------------------------------------------------------------------ + +BOOLEAN +Efuse_Read1ByteFromFakeContent( + IN PADAPTER pAdapter, + IN u16 Offset, + IN OUT u8 *Value ); +BOOLEAN +Efuse_Read1ByteFromFakeContent( + IN PADAPTER pAdapter, + IN u16 Offset, + IN OUT u8 *Value ) +{ + if(Offset >= EFUSE_MAX_HW_SIZE) + { + return _FALSE; + } + //DbgPrint("Read fake content, offset = %d\n", Offset); + if(fakeEfuseBank == 0) + *Value = fakeEfuseContent[Offset]; + else + *Value = fakeBTEfuseContent[fakeEfuseBank-1][Offset]; + return _TRUE; +} + +BOOLEAN +Efuse_Write1ByteToFakeContent( + IN PADAPTER pAdapter, + IN u16 Offset, + IN u8 Value ); +BOOLEAN +Efuse_Write1ByteToFakeContent( + IN PADAPTER pAdapter, + IN u16 Offset, + IN u8 Value ) +{ + if(Offset >= EFUSE_MAX_HW_SIZE) + { + return _FALSE; + } + if(fakeEfuseBank == 0) + fakeEfuseContent[Offset] = Value; + else + { + fakeBTEfuseContent[fakeEfuseBank-1][Offset] = Value; + } + return _TRUE; +} + +/*----------------------------------------------------------------------------- + * Function: Efuse_PowerSwitch + * + * Overview: When we want to enable write operation, we should change to + * pwr on state. When we stop write, we should switch to 500k mode + * and disable LDO 2.5V. + * + * Input: NONE + * + * Output: NONE + * + * Return: NONE + * + * Revised History: + * When Who Remark + * 11/17/2008 MHC Create Version 0. + * + *---------------------------------------------------------------------------*/ +VOID +Efuse_PowerSwitch( + IN PADAPTER pAdapter, + IN u8 bWrite, + IN u8 PwrState) +{ + pAdapter->HalFunc.EfusePowerSwitch(pAdapter, bWrite, PwrState); +} + +/*----------------------------------------------------------------------------- + * Function: efuse_GetCurrentSize + * + * Overview: Get current efuse size!!! + * + * Input: NONE + * + * Output: NONE + * + * Return: NONE + * + * Revised History: + * When Who Remark + * 11/16/2008 MHC Create Version 0. + * + *---------------------------------------------------------------------------*/ +u16 +Efuse_GetCurrentSize( + IN PADAPTER pAdapter, + IN u8 efuseType, + IN BOOLEAN bPseudoTest) +{ + u16 ret=0; + + ret = pAdapter->HalFunc.EfuseGetCurrentSize(pAdapter, efuseType, bPseudoTest); + + return ret; +} + +/* 11/16/2008 MH Add description. Get current efuse area enabled word!!. */ +u8 +Efuse_CalculateWordCnts(IN u8 word_en) +{ + u8 word_cnts = 0; + if(!(word_en & BIT(0))) word_cnts++; // 0 : write enable + if(!(word_en & BIT(1))) word_cnts++; + if(!(word_en & BIT(2))) word_cnts++; + if(!(word_en & BIT(3))) word_cnts++; + return word_cnts; +} + +// +// Description: +// Execute E-Fuse read byte operation. +// Refered from SD1 Richard. +// +// Assumption: +// 1. Boot from E-Fuse and successfully auto-load. +// 2. PASSIVE_LEVEL (USB interface) +// +// Created by Roger, 2008.10.21. +// +VOID +ReadEFuseByte( + PADAPTER Adapter, + u16 _offset, + u8 *pbuf, + IN BOOLEAN bPseudoTest) +{ + u32 value32; + u8 readbyte; + u16 retry; + //u32 start=rtw_get_current_time(); + + if(bPseudoTest) + { + Efuse_Read1ByteFromFakeContent(Adapter, _offset, pbuf); + return; + } + + //Write Address + rtw_write8(Adapter, EFUSE_CTRL+1, (_offset & 0xff)); + readbyte = rtw_read8(Adapter, EFUSE_CTRL+2); + rtw_write8(Adapter, EFUSE_CTRL+2, ((_offset >> 8) & 0x03) | (readbyte & 0xfc)); + + //Write bit 32 0 + readbyte = rtw_read8(Adapter, EFUSE_CTRL+3); + rtw_write8(Adapter, EFUSE_CTRL+3, (readbyte & 0x7f)); + + //Check bit 32 read-ready + retry = 0; + value32 = rtw_read32(Adapter, EFUSE_CTRL); + //while(!(((value32 >> 24) & 0xff) & 0x80) && (retry<10)) + while(!(((value32 >> 24) & 0xff) & 0x80) && (retry<10000)) + { + value32 = rtw_read32(Adapter, EFUSE_CTRL); + retry++; + } + + // 20100205 Joseph: Add delay suggested by SD1 Victor. + // This fix the problem that Efuse read error in high temperature condition. + // Designer says that there shall be some delay after ready bit is set, or the + // result will always stay on last data we read. + rtw_udelay_os(50); + value32 = rtw_read32(Adapter, EFUSE_CTRL); + + *pbuf = (u8)(value32 & 0xff); + //DBG_871X("ReadEFuseByte _offset:%08u, in %d ms\n",_offset ,rtw_get_passing_time_ms(start)); + +} + + +// +// Description: +// 1. Execute E-Fuse read byte operation according as map offset and +// save to E-Fuse table. +// 2. Refered from SD1 Richard. +// +// Assumption: +// 1. Boot from E-Fuse and successfully auto-load. +// 2. PASSIVE_LEVEL (USB interface) +// +// Created by Roger, 2008.10.21. +// +// 2008/12/12 MH 1. Reorganize code flow and reserve bytes. and add description. +// 2. Add efuse utilization collect. +// 2008/12/22 MH Read Efuse must check if we write section 1 data again!!! Sec1 +// write addr must be after sec5. +// + +VOID +efuse_ReadEFuse( + PADAPTER Adapter, + u8 efuseType, + u16 _offset, + u16 _size_byte, + u8 *pbuf, + IN BOOLEAN bPseudoTest + ); +VOID +efuse_ReadEFuse( + PADAPTER Adapter, + u8 efuseType, + u16 _offset, + u16 _size_byte, + u8 *pbuf, + IN BOOLEAN bPseudoTest + ) +{ + Adapter->HalFunc.ReadEFuse(Adapter, efuseType, _offset, _size_byte, pbuf, bPseudoTest); +} + +VOID +EFUSE_GetEfuseDefinition( + IN PADAPTER pAdapter, + IN u8 efuseType, + IN u8 type, + OUT void *pOut, + IN BOOLEAN bPseudoTest + ) +{ + pAdapter->HalFunc.EFUSEGetEfuseDefinition(pAdapter, efuseType, type, pOut, bPseudoTest); +} + +/*----------------------------------------------------------------------------- + * Function: EFUSE_Read1Byte + * + * Overview: Copy from WMAC fot EFUSE read 1 byte. + * + * Input: NONE + * + * Output: NONE + * + * Return: NONE + * + * Revised History: + * When Who Remark + * 09/23/2008 MHC Copy from WMAC. + * + *---------------------------------------------------------------------------*/ +u8 +EFUSE_Read1Byte( + IN PADAPTER Adapter, + IN u16 Address) +{ + u8 data; + u8 Bytetemp = {0x00}; + u8 temp = {0x00}; + u32 k=0; + u16 contentLen=0; + + EFUSE_GetEfuseDefinition(Adapter, EFUSE_WIFI , TYPE_EFUSE_REAL_CONTENT_LEN, (PVOID)&contentLen, _FALSE); + + if (Address < contentLen) //E-fuse 512Byte + { + //Write E-fuse Register address bit0~7 + temp = Address & 0xFF; + rtw_write8(Adapter, EFUSE_CTRL+1, temp); + Bytetemp = rtw_read8(Adapter, EFUSE_CTRL+2); + //Write E-fuse Register address bit8~9 + temp = ((Address >> 8) & 0x03) | (Bytetemp & 0xFC); + rtw_write8(Adapter, EFUSE_CTRL+2, temp); + + //Write 0x30[31]=0 + Bytetemp = rtw_read8(Adapter, EFUSE_CTRL+3); + temp = Bytetemp & 0x7F; + rtw_write8(Adapter, EFUSE_CTRL+3, temp); + + //Wait Write-ready (0x30[31]=1) + Bytetemp = rtw_read8(Adapter, EFUSE_CTRL+3); + while(!(Bytetemp & 0x80)) + { + Bytetemp = rtw_read8(Adapter, EFUSE_CTRL+3); + k++; + if(k==1000) + { + k=0; + break; + } + } + data=rtw_read8(Adapter, EFUSE_CTRL); + return data; + } + else + return 0xFF; + +}/* EFUSE_Read1Byte */ + +/*----------------------------------------------------------------------------- + * Function: EFUSE_Write1Byte + * + * Overview: Copy from WMAC fot EFUSE write 1 byte. + * + * Input: NONE + * + * Output: NONE + * + * Return: NONE + * + * Revised History: + * When Who Remark + * 09/23/2008 MHC Copy from WMAC. + * + *---------------------------------------------------------------------------*/ + +void +EFUSE_Write1Byte( + IN PADAPTER Adapter, + IN u16 Address, + IN u8 Value); +void +EFUSE_Write1Byte( + IN PADAPTER Adapter, + IN u16 Address, + IN u8 Value) +{ + u8 Bytetemp = {0x00}; + u8 temp = {0x00}; + u32 k=0; + u16 contentLen=0; + + //RT_TRACE(COMP_EFUSE, DBG_LOUD, ("Addr=%x Data =%x\n", Address, Value)); + EFUSE_GetEfuseDefinition(Adapter, EFUSE_WIFI , TYPE_EFUSE_REAL_CONTENT_LEN, (PVOID)&contentLen, _FALSE); + + if( Address < contentLen) //E-fuse 512Byte + { + rtw_write8(Adapter, EFUSE_CTRL, Value); + + //Write E-fuse Register address bit0~7 + temp = Address & 0xFF; + rtw_write8(Adapter, EFUSE_CTRL+1, temp); + Bytetemp = rtw_read8(Adapter, EFUSE_CTRL+2); + + //Write E-fuse Register address bit8~9 + temp = ((Address >> 8) & 0x03) | (Bytetemp & 0xFC); + rtw_write8(Adapter, EFUSE_CTRL+2, temp); + + //Write 0x30[31]=1 + Bytetemp = rtw_read8(Adapter, EFUSE_CTRL+3); + temp = Bytetemp | 0x80; + rtw_write8(Adapter, EFUSE_CTRL+3, temp); + + //Wait Write-ready (0x30[31]=0) + Bytetemp = rtw_read8(Adapter, EFUSE_CTRL+3); + while(Bytetemp & 0x80) + { + Bytetemp = rtw_read8(Adapter, EFUSE_CTRL+3); + k++; + if(k==100) + { + k=0; + break; + } + } + } +}/* EFUSE_Write1Byte */ + +/* 11/16/2008 MH Read one byte from real Efuse. */ +u8 +efuse_OneByteRead( + IN PADAPTER pAdapter, + IN u16 addr, + IN u8 *data, + IN BOOLEAN bPseudoTest) +{ + u8 tmpidx = 0; + u8 bResult; + + if(bPseudoTest) + { + bResult = Efuse_Read1ByteFromFakeContent(pAdapter, addr, data); + return bResult; + } + // -----------------e-fuse reg ctrl --------------------------------- + //address + rtw_write8(pAdapter, EFUSE_CTRL+1, (u8)(addr&0xff)); + rtw_write8(pAdapter, EFUSE_CTRL+2, ((u8)((addr>>8) &0x03) ) | + (rtw_read8(pAdapter, EFUSE_CTRL+2)&0xFC )); + + rtw_write8(pAdapter, EFUSE_CTRL+3, 0x72);//read cmd + + while(!(0x80 &rtw_read8(pAdapter, EFUSE_CTRL+3))&&(tmpidx<100)) + { + tmpidx++; + } + if(tmpidx<100) + { + *data=rtw_read8(pAdapter, EFUSE_CTRL); + bResult = _TRUE; + } + else + { + *data = 0xff; + bResult = _FALSE; + } + return bResult; +} + +/* 11/16/2008 MH Write one byte to reald Efuse. */ +u8 +efuse_OneByteWrite( + IN PADAPTER pAdapter, + IN u16 addr, + IN u8 data, + IN BOOLEAN bPseudoTest) +{ + u8 tmpidx = 0; + u8 bResult; + + if(bPseudoTest) + { + bResult = Efuse_Write1ByteToFakeContent(pAdapter, addr, data); + return bResult; + } + //RT_TRACE(COMP_EFUSE, DBG_LOUD, ("Addr = %x Data=%x\n", addr, data)); + + //return 0; + + // -----------------e-fuse reg ctrl --------------------------------- + //address + rtw_write8(pAdapter, EFUSE_CTRL+1, (u8)(addr&0xff)); + rtw_write8(pAdapter, EFUSE_CTRL+2, + (rtw_read8(pAdapter, EFUSE_CTRL+2)&0xFC )|(u8)((addr>>8)&0x03) ); + rtw_write8(pAdapter, EFUSE_CTRL, data);//data + + rtw_write8(pAdapter, EFUSE_CTRL+3, 0xF2);//write cmd + + while((0x80 & rtw_read8(pAdapter, EFUSE_CTRL+3)) && (tmpidx<100) ){ + tmpidx++; + } + + if(tmpidx<100) + { + bResult = _TRUE; + } + else + { + bResult = _FALSE; + } + + return bResult; +} + +int +Efuse_PgPacketRead( IN PADAPTER pAdapter, + IN u8 offset, + IN u8 *data, + IN BOOLEAN bPseudoTest) +{ + int ret=0; + + ret = pAdapter->HalFunc.Efuse_PgPacketRead(pAdapter, offset, data, bPseudoTest); + + return ret; +} + +int +Efuse_PgPacketWrite(IN PADAPTER pAdapter, + IN u8 offset, + IN u8 word_en, + IN u8 *data, + IN BOOLEAN bPseudoTest) +{ + int ret; + + ret = pAdapter->HalFunc.Efuse_PgPacketWrite(pAdapter, offset, word_en, data, bPseudoTest); + + return ret; +} + +/*----------------------------------------------------------------------------- + * Function: efuse_WordEnableDataRead + * + * Overview: Read allowed word in current efuse section data. + * + * Input: NONE + * + * Output: NONE + * + * Return: NONE + * + * Revised History: + * When Who Remark + * 11/16/2008 MHC Create Version 0. + * 11/21/2008 MHC Fix Write bug when we only enable late word. + * + *---------------------------------------------------------------------------*/ +void +efuse_WordEnableDataRead(IN u8 word_en, + IN u8 *sourdata, + IN u8 *targetdata) +{ + if (!(word_en&BIT(0))) + { + targetdata[0] = sourdata[0]; + targetdata[1] = sourdata[1]; + } + if (!(word_en&BIT(1))) + { + targetdata[2] = sourdata[2]; + targetdata[3] = sourdata[3]; + } + if (!(word_en&BIT(2))) + { + targetdata[4] = sourdata[4]; + targetdata[5] = sourdata[5]; + } + if (!(word_en&BIT(3))) + { + targetdata[6] = sourdata[6]; + targetdata[7] = sourdata[7]; + } +} + + +u8 +Efuse_WordEnableDataWrite( IN PADAPTER pAdapter, + IN u16 efuse_addr, + IN u8 word_en, + IN u8 *data, + IN BOOLEAN bPseudoTest) +{ + u8 ret=0; + + ret = pAdapter->HalFunc.Efuse_WordEnableDataWrite(pAdapter, efuse_addr, word_en, data, bPseudoTest); + + return ret; +} + +static u8 efuse_read8(PADAPTER padapter, u16 address, u8 *value) +{ + return efuse_OneByteRead(padapter,address, value, _FALSE); +} + +static u8 efuse_write8(PADAPTER padapter, u16 address, u8 *value) +{ + return efuse_OneByteWrite(padapter,address, *value, _FALSE); +} + +/* + * read/wirte raw efuse data + */ +u8 rtw_efuse_access(PADAPTER padapter, u8 bWrite, u16 start_addr, u16 cnts, u8 *data) +{ + int i = 0; + u16 real_content_len = 0, max_available_size = 0; + u8 res = _FAIL ; + u8 (*rw8)(PADAPTER, u16, u8*); + + EFUSE_GetEfuseDefinition(padapter, EFUSE_WIFI, TYPE_EFUSE_REAL_CONTENT_LEN, (PVOID)&real_content_len, _FALSE); + EFUSE_GetEfuseDefinition(padapter, EFUSE_WIFI, TYPE_AVAILABLE_EFUSE_BYTES_TOTAL, (PVOID)&max_available_size, _FALSE); + + if (start_addr > real_content_len) + return _FAIL; + + if (_TRUE == bWrite) { + if ((start_addr + cnts) > max_available_size) + return _FAIL; + rw8 = &efuse_write8; + } else + rw8 = &efuse_read8; + + Efuse_PowerSwitch(padapter, bWrite, _TRUE); + + // e-fuse one byte read / write + for (i = 0; i < cnts; i++) { + if (start_addr >= real_content_len) { + res = _FAIL; + break; + } + + res = rw8(padapter, start_addr++, data++); + if (_FAIL == res) break; + } + + Efuse_PowerSwitch(padapter, bWrite, _FALSE); + + return res; +} +//------------------------------------------------------------------------------ +u16 efuse_GetMaxSize(PADAPTER padapter) +{ + u16 max_size; + EFUSE_GetEfuseDefinition(padapter, EFUSE_WIFI , TYPE_AVAILABLE_EFUSE_BYTES_TOTAL, (PVOID)&max_size, _FALSE); + return max_size; +} +//------------------------------------------------------------------------------ +u8 efuse_GetCurrentSize(PADAPTER padapter, u16 *size) +{ + Efuse_PowerSwitch(padapter, _FALSE, _TRUE); + *size = Efuse_GetCurrentSize(padapter, EFUSE_WIFI, _FALSE); + Efuse_PowerSwitch(padapter, _FALSE, _FALSE); + + return _SUCCESS; +} +//------------------------------------------------------------------------------ +u8 rtw_efuse_map_read(PADAPTER padapter, u16 addr, u16 cnts, u8 *data) +{ + u16 mapLen=0; + + EFUSE_GetEfuseDefinition(padapter, EFUSE_WIFI, TYPE_EFUSE_MAP_LEN, (PVOID)&mapLen, _FALSE); + + if ((addr + cnts) > mapLen) + return _FAIL; + + Efuse_PowerSwitch(padapter, _FALSE, _TRUE); + + efuse_ReadEFuse(padapter, EFUSE_WIFI, addr, cnts, data, _FALSE); + + Efuse_PowerSwitch(padapter, _FALSE, _FALSE); + + return _SUCCESS; +} +//------------------------------------------------------------------------------ +u8 rtw_efuse_map_write(PADAPTER padapter, u16 addr, u16 cnts, u8 *data) +{ + u8 offset, word_en; + u8 *map; + u8 newdata[PGPKT_DATA_SIZE]; + s32 i, j, idx; + u8 ret = _SUCCESS; + u16 mapLen=0; + + EFUSE_GetEfuseDefinition(padapter, EFUSE_WIFI, TYPE_EFUSE_MAP_LEN, (PVOID)&mapLen, _FALSE); + + if ((addr + cnts) > mapLen) + return _FAIL; + + map = rtw_zmalloc(mapLen); + if(map == NULL){ + return _FAIL; + } + + ret = rtw_efuse_map_read(padapter, 0, mapLen, map); + if (ret == _FAIL) goto exit; + + Efuse_PowerSwitch(padapter, _TRUE, _TRUE); + + offset = (addr >> 3); + word_en = 0xF; + _rtw_memset(newdata, 0xFF, PGPKT_DATA_SIZE); + i = addr & 0x7; // index of one package + j = 0; // index of new package + idx = 0; // data index + + if (i & 0x1) { + // odd start + if (data[idx] != map[addr+idx]) { + word_en &= ~BIT(i >> 1); + newdata[i-1] = map[addr+idx-1]; + newdata[i] = data[idx]; + } + i++; + idx++; + } + do { + for (; i < PGPKT_DATA_SIZE; i += 2) + { + if (cnts == idx) break; + if ((cnts - idx) == 1) { + if (data[idx] != map[addr+idx]) { + word_en &= ~BIT(i >> 1); + newdata[i] = data[idx]; + newdata[i+1] = map[addr+idx+1]; + } + idx++; + break; + } else { + if ((data[idx] != map[addr+idx]) || + (data[idx+1] != map[addr+idx+1])) + { + word_en &= ~BIT(i >> 1); + newdata[i] = data[idx]; + newdata[i+1] = data[idx + 1]; + } + idx += 2; + } + if (idx == cnts) break; + } + + if (word_en != 0xF) { + ret = Efuse_PgPacketWrite(padapter, offset, word_en, newdata, _FALSE); + DBG_871X("offset=%x \n",offset); + DBG_871X("word_en=%x \n",word_en); + + for(i=0;iefuse_eeprom_data[Offset]; + +} // EFUSE_ShadowRead1Byte + +//---------------Read Two Bytes +static VOID +efuse_ShadowRead2Byte( + IN PADAPTER pAdapter, + IN u16 Offset, + IN OUT u16 *Value) +{ + EEPROM_EFUSE_PRIV *pEEPROM = GET_EEPROM_EFUSE_PRIV(pAdapter); + + *Value = pEEPROM->efuse_eeprom_data[Offset]; + *Value |= pEEPROM->efuse_eeprom_data[Offset+1]<<8; + +} // EFUSE_ShadowRead2Byte + +//---------------Read Four Bytes +static VOID +efuse_ShadowRead4Byte( + IN PADAPTER pAdapter, + IN u16 Offset, + IN OUT u32 *Value) +{ + EEPROM_EFUSE_PRIV *pEEPROM = GET_EEPROM_EFUSE_PRIV(pAdapter); + + *Value = pEEPROM->efuse_eeprom_data[Offset]; + *Value |= pEEPROM->efuse_eeprom_data[Offset+1]<<8; + *Value |= pEEPROM->efuse_eeprom_data[Offset+2]<<16; + *Value |= pEEPROM->efuse_eeprom_data[Offset+3]<<24; + +} // efuse_ShadowRead4Byte + + +/*----------------------------------------------------------------------------- + * Function: efuse_ShadowWrite1Byte + * efuse_ShadowWrite2Byte + * efuse_ShadowWrite4Byte + * + * Overview: Write efuse modify map by one/two/four byte. + * + * Input: NONE + * + * Output: NONE + * + * Return: NONE + * + * Revised History: + * When Who Remark + * 11/12/2008 MHC Create Version 0. + * + *---------------------------------------------------------------------------*/ +#ifdef PLATFORM +static VOID +efuse_ShadowWrite1Byte( + IN PADAPTER pAdapter, + IN u16 Offset, + IN u8 Value); +#endif //PLATFORM +static VOID +efuse_ShadowWrite1Byte( + IN PADAPTER pAdapter, + IN u16 Offset, + IN u8 Value) +{ + EEPROM_EFUSE_PRIV *pEEPROM = GET_EEPROM_EFUSE_PRIV(pAdapter); + + pEEPROM->efuse_eeprom_data[Offset] = Value; + +} // efuse_ShadowWrite1Byte + +//---------------Write Two Bytes +static VOID +efuse_ShadowWrite2Byte( + IN PADAPTER pAdapter, + IN u16 Offset, + IN u16 Value) +{ + EEPROM_EFUSE_PRIV *pEEPROM = GET_EEPROM_EFUSE_PRIV(pAdapter); + + pEEPROM->efuse_eeprom_data[Offset] = Value&0x00FF; + pEEPROM->efuse_eeprom_data[Offset+1] = Value>>8; + +} // efuse_ShadowWrite1Byte + +//---------------Write Four Bytes +static VOID +efuse_ShadowWrite4Byte( + IN PADAPTER pAdapter, + IN u16 Offset, + IN u32 Value) +{ + EEPROM_EFUSE_PRIV *pEEPROM = GET_EEPROM_EFUSE_PRIV(pAdapter); + + pEEPROM->efuse_eeprom_data[Offset] = (u8)(Value&0x000000FF); + pEEPROM->efuse_eeprom_data[Offset+1] = (u8)((Value>>8)&0x0000FF); + pEEPROM->efuse_eeprom_data[Offset+2] = (u8)((Value>>16)&0x00FF); + pEEPROM->efuse_eeprom_data[Offset+3] = (u8)((Value>>24)&0xFF); + +} // efuse_ShadowWrite1Byte + +/*----------------------------------------------------------------------------- + * Function: EFUSE_ShadowMapUpdate + * + * Overview: Transfer current EFUSE content to shadow init and modify map. + * + * Input: NONE + * + * Output: NONE + * + * Return: NONE + * + * Revised History: + * When Who Remark + * 11/13/2008 MHC Create Version 0. + * + *---------------------------------------------------------------------------*/ +void EFUSE_ShadowMapUpdate( + IN PADAPTER pAdapter, + IN u8 efuseType, + IN BOOLEAN bPseudoTest) +{ + EEPROM_EFUSE_PRIV *pEEPROM = GET_EEPROM_EFUSE_PRIV(pAdapter); + u16 mapLen=0; + + EFUSE_GetEfuseDefinition(pAdapter, efuseType, TYPE_EFUSE_MAP_LEN, (PVOID)&mapLen, bPseudoTest); + + if (pEEPROM->bautoload_fail_flag == _TRUE) + { + _rtw_memset(pEEPROM->efuse_eeprom_data, 0xFF, mapLen); + } + else + { + #ifdef CONFIG_ADAPTOR_INFO_CACHING_FILE + if(_SUCCESS != retriveAdaptorInfoFile(pAdapter->registrypriv.adaptor_info_caching_file_path, pEEPROM)) { + #endif + + Efuse_ReadAllMap(pAdapter, efuseType, pEEPROM->efuse_eeprom_data, bPseudoTest); + + #ifdef CONFIG_ADAPTOR_INFO_CACHING_FILE + storeAdaptorInfoFile(pAdapter->registrypriv.adaptor_info_caching_file_path, pEEPROM); + } + #endif + } + + //PlatformMoveMemory((PVOID)&pHalData->EfuseMap[EFUSE_MODIFY_MAP][0], + //(PVOID)&pHalData->EfuseMap[EFUSE_INIT_MAP][0], mapLen); +}// EFUSE_ShadowMapUpdate + + +/*----------------------------------------------------------------------------- + * Function: EFUSE_ShadowRead + * + * Overview: Read from efuse init map !!!!! + * + * Input: NONE + * + * Output: NONE + * + * Return: NONE + * + * Revised History: + * When Who Remark + * 11/12/2008 MHC Create Version 0. + * + *---------------------------------------------------------------------------*/ +void +EFUSE_ShadowRead( + IN PADAPTER pAdapter, + IN u8 Type, + IN u16 Offset, + IN OUT u32 *Value ) +{ + if (Type == 1) + efuse_ShadowRead1Byte(pAdapter, Offset, (u8 *)Value); + else if (Type == 2) + efuse_ShadowRead2Byte(pAdapter, Offset, (u16 *)Value); + else if (Type == 4) + efuse_ShadowRead4Byte(pAdapter, Offset, (u32 *)Value); + +} // EFUSE_ShadowRead + +/*----------------------------------------------------------------------------- + * Function: EFUSE_ShadowWrite + * + * Overview: Write efuse modify map for later update operation to use!!!!! + * + * Input: NONE + * + * Output: NONE + * + * Return: NONE + * + * Revised History: + * When Who Remark + * 11/12/2008 MHC Create Version 0. + * + *---------------------------------------------------------------------------*/ +VOID +EFUSE_ShadowWrite( + IN PADAPTER pAdapter, + IN u8 Type, + IN u16 Offset, + IN OUT u32 Value); +VOID +EFUSE_ShadowWrite( + IN PADAPTER pAdapter, + IN u8 Type, + IN u16 Offset, + IN OUT u32 Value) +{ +#if (MP_DRIVER == 0) + return; +#endif + + if (Type == 1) + efuse_ShadowWrite1Byte(pAdapter, Offset, (u8)Value); + else if (Type == 2) + efuse_ShadowWrite2Byte(pAdapter, Offset, (u16)Value); + else if (Type == 4) + efuse_ShadowWrite4Byte(pAdapter, Offset, (u32)Value); + +} // EFUSE_ShadowWrite + +VOID +Efuse_InitSomeVar( + IN PADAPTER pAdapter + ); +VOID +Efuse_InitSomeVar( + IN PADAPTER pAdapter + ) +{ + u8 i; + + _rtw_memset((PVOID)&fakeEfuseContent[0], 0xff, EFUSE_MAX_HW_SIZE); + _rtw_memset((PVOID)&fakeEfuseInitMap[0], 0xff, EFUSE_MAX_MAP_LEN); + _rtw_memset((PVOID)&fakeEfuseModifiedMap[0], 0xff, EFUSE_MAX_MAP_LEN); + + for(i=0; i + + int isAdaptorInfoFileValid(void) +{ + return _TRUE; +} + +int storeAdaptorInfoFile(char *path, struct eeprom_priv * eeprom_priv) +{ + int ret =_SUCCESS; + + if(path && eeprom_priv) { + ret = rtw_store_to_file(path, eeprom_priv->efuse_eeprom_data, EEPROM_MAX_SIZE); + if(ret == EEPROM_MAX_SIZE) + ret = _SUCCESS; + else + ret = _FAIL; + } else { + DBG_871X("%s NULL pointer\n",__FUNCTION__); + ret = _FAIL; + } + return ret; +} + +int retriveAdaptorInfoFile(char *path, struct eeprom_priv * eeprom_priv) +{ + int ret = _SUCCESS; + mm_segment_t oldfs; + struct file *fp; + + if(path && eeprom_priv) { + + ret = rtw_retrive_from_file(path, eeprom_priv->efuse_eeprom_data, EEPROM_MAX_SIZE); + + if(ret == EEPROM_MAX_SIZE) + ret = _SUCCESS; + else + ret = _FAIL; + + #if 0 + if(isAdaptorInfoFileValid()) { + return 0; + } else { + return _FAIL; + } + #endif + + } else { + DBG_871X("%s NULL pointer\n",__FUNCTION__); + ret = _FAIL; + } + return ret; +} +#endif //CONFIG_ADAPTOR_INFO_CACHING_FILE +#endif //PLATFORM_LINUX --- linux-raspi2-4.2.0.orig/drivers/net/wireless/rtl8192cu/core/rtw_ap.c +++ linux-raspi2-4.2.0/drivers/net/wireless/rtl8192cu/core/rtw_ap.c @@ -0,0 +1,2939 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2012 Realtek Corporation. All rights reserved. + * + * 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 + * published by the Free Software Foundation. + * + * 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 Street, Fifth Floor, Boston, MA 02110, USA + * + * + ******************************************************************************/ +#define _RTW_AP_C_ + +#include +#include +#include +#include + + +#ifdef CONFIG_AP_MODE + +extern unsigned char RTW_WPA_OUI[]; +extern unsigned char WMM_OUI[]; +extern unsigned char WPS_OUI[]; +extern unsigned char P2P_OUI[]; +extern unsigned char WFD_OUI[]; + +void init_mlme_ap_info(_adapter *padapter) +{ + struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; + struct mlme_priv *pmlmepriv = &(padapter->mlmepriv); + struct sta_priv *pstapriv = &padapter->stapriv; + struct wlan_acl_pool *pacl_list = &pstapriv->acl_list; + + + _rtw_spinlock_init(&pmlmepriv->bcn_update_lock); + + //for ACL + _rtw_init_queue(&pacl_list->acl_node_q); + + //pmlmeext->bstart_bss = _FALSE; + + start_ap_mode(padapter); +} + +void free_mlme_ap_info(_adapter *padapter) +{ + _irqL irqL; + struct sta_info *psta=NULL; + struct sta_priv *pstapriv = &padapter->stapriv; + struct mlme_priv *pmlmepriv = &(padapter->mlmepriv); + struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; + struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info); + + //stop_ap_mode(padapter); + + pmlmepriv->update_bcn = _FALSE; + pmlmeext->bstart_bss = _FALSE; + + rtw_sta_flush(padapter); + + pmlmeinfo->state = _HW_STATE_NOLINK_; + + //free_assoc_sta_resources + rtw_free_all_stainfo(padapter); + + //free bc/mc sta_info + psta = rtw_get_bcmc_stainfo(padapter); + _enter_critical_bh(&(pstapriv->sta_hash_lock), &irqL); + rtw_free_stainfo(padapter, psta); + _exit_critical_bh(&(pstapriv->sta_hash_lock), &irqL); + + + _rtw_spinlock_free(&pmlmepriv->bcn_update_lock); + +} + +static void update_BCNTIM(_adapter *padapter) +{ + struct sta_priv *pstapriv = &padapter->stapriv; + struct mlme_ext_priv *pmlmeext = &(padapter->mlmeextpriv); + struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info); + WLAN_BSSID_EX *pnetwork_mlmeext = &(pmlmeinfo->network); + unsigned char *pie = pnetwork_mlmeext->IEs; + + //DBG_871X("%s\n", __FUNCTION__); + + //update TIM IE + //if(pstapriv->tim_bitmap) + if(_TRUE) + { + u8 *p, *dst_ie, *premainder_ie=NULL, *pbackup_remainder_ie=NULL; + u16 tim_bitmap_le; + uint offset, tmp_len, tim_ielen, tim_ie_offset, remainder_ielen; + + tim_bitmap_le = cpu_to_le16(pstapriv->tim_bitmap); + + p = rtw_get_ie(pie + _FIXED_IE_LENGTH_, _TIM_IE_, &tim_ielen, pnetwork_mlmeext->IELength - _FIXED_IE_LENGTH_); + if (p != NULL && tim_ielen>0) + { + tim_ielen += 2; + + premainder_ie = p+tim_ielen; + + tim_ie_offset = (sint)(p -pie); + + remainder_ielen = pnetwork_mlmeext->IELength - tim_ie_offset - tim_ielen; + + //append TIM IE from dst_ie offset + dst_ie = p; + } + else + { + tim_ielen = 0; + + //calucate head_len + offset = _FIXED_IE_LENGTH_; + + /* get ssid_ie len */ + p = rtw_get_ie(pie + _BEACON_IE_OFFSET_, _SSID_IE_, &tmp_len, (pnetwork_mlmeext->IELength - _BEACON_IE_OFFSET_)); + if (p != NULL) + offset += tmp_len+2; + + // get supported rates len + p = rtw_get_ie(pie + _BEACON_IE_OFFSET_, _SUPPORTEDRATES_IE_, &tmp_len, (pnetwork_mlmeext->IELength - _BEACON_IE_OFFSET_)); + if (p != NULL) + { + offset += tmp_len+2; + } + + //DS Parameter Set IE, len=3 + offset += 3; + + premainder_ie = pie + offset; + + remainder_ielen = pnetwork_mlmeext->IELength - offset - tim_ielen; + + //append TIM IE from offset + dst_ie = pie + offset; + + } + + + if(remainder_ielen>0) + { + pbackup_remainder_ie = rtw_malloc(remainder_ielen); + if(pbackup_remainder_ie && premainder_ie) + _rtw_memcpy(pbackup_remainder_ie, premainder_ie, remainder_ielen); + } + + *dst_ie++=_TIM_IE_; + + if((pstapriv->tim_bitmap&0xff00) && (pstapriv->tim_bitmap&0x00fc)) + tim_ielen = 5; + else + tim_ielen = 4; + + *dst_ie++= tim_ielen; + + *dst_ie++=0;//DTIM count + *dst_ie++=1;//DTIM peroid + + if(pstapriv->tim_bitmap&BIT(0))//for bc/mc frames + *dst_ie++ = BIT(0);//bitmap ctrl + else + *dst_ie++ = 0; + + if(tim_ielen==4) + { + *dst_ie++ = *(u8*)&tim_bitmap_le; + } + else if(tim_ielen==5) + { + _rtw_memcpy(dst_ie, &tim_bitmap_le, 2); + dst_ie+=2; + } + + //copy remainder IE + if(pbackup_remainder_ie) + { + _rtw_memcpy(dst_ie, pbackup_remainder_ie, remainder_ielen); + + rtw_mfree(pbackup_remainder_ie, remainder_ielen); + } + + offset = (uint)(dst_ie - pie); + pnetwork_mlmeext->IELength = offset + remainder_ielen; + + } + +#ifndef CONFIG_INTERRUPT_BASED_TXBCN +#if defined(CONFIG_USB_HCI) || defined(CONFIG_SDIO_HCI) || defined(CONFIG_GSPI_HCI) + set_tx_beacon_cmd(padapter); +#endif +#endif //!CONFIG_INTERRUPT_BASED_TXBCN + + +} + +void rtw_add_bcn_ie(_adapter *padapter, WLAN_BSSID_EX *pnetwork, u8 index, u8 *data, u8 len) +{ + PNDIS_802_11_VARIABLE_IEs pIE; + u8 bmatch = _FALSE; + u8 *pie = pnetwork->IEs; + u8 *p, *dst_ie, *premainder_ie=NULL, *pbackup_remainder_ie=NULL; + u32 i, offset, ielen, ie_offset, remainder_ielen = 0; + + for (i = sizeof(NDIS_802_11_FIXED_IEs); i < pnetwork->IELength;) + { + pIE = (PNDIS_802_11_VARIABLE_IEs)(pnetwork->IEs + i); + + if (pIE->ElementID > index) + { + break; + } + else if(pIE->ElementID == index) // already exist the same IE + { + p = (u8 *)pIE; + ielen = pIE->Length; + bmatch = _TRUE; + break; + } + + p = (u8 *)pIE; + ielen = pIE->Length; + i += (pIE->Length + 2); + } + + if (p != NULL && ielen>0) + { + ielen += 2; + + premainder_ie = p+ielen; + + ie_offset = (sint)(p -pie); + + remainder_ielen = pnetwork->IELength - ie_offset - ielen; + + if(bmatch) + dst_ie = p; + else + dst_ie = (p+ielen); + } + + if(remainder_ielen>0) + { + pbackup_remainder_ie = rtw_malloc(remainder_ielen); + if(pbackup_remainder_ie && premainder_ie) + _rtw_memcpy(pbackup_remainder_ie, premainder_ie, remainder_ielen); + } + + *dst_ie++=index; + *dst_ie++=len; + + _rtw_memcpy(dst_ie, data, len); + dst_ie+=len; + + //copy remainder IE + if(pbackup_remainder_ie) + { + _rtw_memcpy(dst_ie, pbackup_remainder_ie, remainder_ielen); + + rtw_mfree(pbackup_remainder_ie, remainder_ielen); + } + + offset = (uint)(dst_ie - pie); + pnetwork->IELength = offset + remainder_ielen; +} + +void rtw_remove_bcn_ie(_adapter *padapter, WLAN_BSSID_EX *pnetwork, u8 index) +{ + u8 *p, *dst_ie, *premainder_ie=NULL, *pbackup_remainder_ie=NULL; + uint offset, ielen, ie_offset, remainder_ielen = 0; + u8 *pie = pnetwork->IEs; + + p = rtw_get_ie(pie + _FIXED_IE_LENGTH_, index, &ielen, pnetwork->IELength - _FIXED_IE_LENGTH_); + if (p != NULL && ielen>0) + { + ielen += 2; + + premainder_ie = p+ielen; + + ie_offset = (sint)(p -pie); + + remainder_ielen = pnetwork->IELength - ie_offset - ielen; + + dst_ie = p; + } + else { + return; + } + + if(remainder_ielen>0) + { + pbackup_remainder_ie = rtw_malloc(remainder_ielen); + if(pbackup_remainder_ie && premainder_ie) + _rtw_memcpy(pbackup_remainder_ie, premainder_ie, remainder_ielen); + } + + //copy remainder IE + if(pbackup_remainder_ie) + { + _rtw_memcpy(dst_ie, pbackup_remainder_ie, remainder_ielen); + + rtw_mfree(pbackup_remainder_ie, remainder_ielen); + } + + offset = (uint)(dst_ie - pie); + pnetwork->IELength = offset + remainder_ielen; +} + + +u8 chk_sta_is_alive(struct sta_info *psta); +u8 chk_sta_is_alive(struct sta_info *psta) +{ + u8 ret = _FALSE; + #ifdef DBG_EXPIRATION_CHK + DBG_871X("sta:"MAC_FMT", rssi:%d, rx:"STA_PKTS_FMT", expire_to:%u, %s%ssq_len:%u\n" + , MAC_ARG(psta->hwaddr) + , psta->rssi_stat.UndecoratedSmoothedPWDB + //, STA_RX_PKTS_ARG(psta) + , STA_RX_PKTS_DIFF_ARG(psta) + , psta->expire_to + , psta->state&WIFI_SLEEP_STATE?"PS, ":"" + , psta->state&WIFI_STA_ALIVE_CHK_STATE?"SAC, ":"" + , psta->sleepq_len + ); + #endif + + //if(sta_last_rx_pkts(psta) == sta_rx_pkts(psta)) + if((psta->sta_stats.last_rx_data_pkts + psta->sta_stats.last_rx_ctrl_pkts) == (psta->sta_stats.rx_data_pkts + psta->sta_stats.rx_ctrl_pkts)) + { + #if 0 + if(psta->state&WIFI_SLEEP_STATE) + ret = _TRUE; + #endif + } + else + { + ret = _TRUE; + } + + sta_update_last_rx_pkts(psta); + + return ret; +} + +void expire_timeout_chk(_adapter *padapter) +{ + _irqL irqL; + _list *phead, *plist; + u8 updated; + struct sta_info *psta=NULL; + struct sta_priv *pstapriv = &padapter->stapriv; + u8 chk_alive_num = 0; + char chk_alive_list[NUM_STA]; + int i; + + _enter_critical_bh(&pstapriv->auth_list_lock, &irqL); + + phead = &pstapriv->auth_list; + plist = get_next(phead); + + //check auth_queue + #ifdef DBG_EXPIRATION_CHK + if (rtw_end_of_queue_search(phead, plist) == _FALSE) { + DBG_871X(FUNC_NDEV_FMT" auth_list, cnt:%u\n" + , FUNC_NDEV_ARG(padapter->pnetdev), pstapriv->auth_list_cnt); + } + #endif + while ((rtw_end_of_queue_search(phead, plist)) == _FALSE) + { + psta = LIST_CONTAINOR(plist, struct sta_info, auth_list); + plist = get_next(plist); + + if(psta->expire_to>0) + { + psta->expire_to--; + if (psta->expire_to == 0) + { + rtw_list_delete(&psta->auth_list); + pstapriv->auth_list_cnt--; + + DBG_871X("auth expire %02X%02X%02X%02X%02X%02X\n", + psta->hwaddr[0],psta->hwaddr[1],psta->hwaddr[2],psta->hwaddr[3],psta->hwaddr[4],psta->hwaddr[5]); + + _exit_critical_bh(&pstapriv->auth_list_lock, &irqL); + + _enter_critical_bh(&(pstapriv->sta_hash_lock), &irqL); + rtw_free_stainfo(padapter, psta); + _exit_critical_bh(&(pstapriv->sta_hash_lock), &irqL); + + _enter_critical_bh(&pstapriv->auth_list_lock, &irqL); + } + } + + } + + _exit_critical_bh(&pstapriv->auth_list_lock, &irqL); + + psta = NULL; + + + _enter_critical_bh(&pstapriv->asoc_list_lock, &irqL); + + phead = &pstapriv->asoc_list; + plist = get_next(phead); + + //check asoc_queue + #ifdef DBG_EXPIRATION_CHK + if (rtw_end_of_queue_search(phead, plist) == _FALSE) { + DBG_871X(FUNC_NDEV_FMT" asoc_list, cnt:%u\n" + , FUNC_NDEV_ARG(padapter->pnetdev), pstapriv->asoc_list_cnt); + } + #endif + while ((rtw_end_of_queue_search(phead, plist)) == _FALSE) + { + psta = LIST_CONTAINOR(plist, struct sta_info, asoc_list); + plist = get_next(plist); + + if (chk_sta_is_alive(psta) || !psta->expire_to) { + psta->expire_to = pstapriv->expire_to; + psta->keep_alive_trycnt = 0; + #ifdef CONFIG_TX_MCAST2UNI + psta->under_exist_checking = 0; + #endif // CONFIG_TX_MCAST2UNI + } else { + psta->expire_to--; + } + +#ifndef CONFIG_ACTIVE_KEEP_ALIVE_CHECK +#ifdef CONFIG_TX_MCAST2UNI + if ( (psta->flags & WLAN_STA_HT) && (psta->htpriv.agg_enable_bitmap || psta->under_exist_checking) ) { + // check sta by delba(addba) for 11n STA + // ToDo: use CCX report to check for all STAs + //DBG_871X("asoc check by DELBA/ADDBA! (pstapriv->expire_to=%d s)(psta->expire_to=%d s), [%02x, %d]\n", pstapriv->expire_to*2, psta->expire_to*2, psta->htpriv.agg_enable_bitmap, psta->under_exist_checking); + + if ( psta->expire_to <= (pstapriv->expire_to - 50 ) ) { + DBG_871X("asoc expire by DELBA/ADDBA! (%d s)\n", (pstapriv->expire_to-psta->expire_to)*2); + psta->under_exist_checking = 0; + psta->expire_to = 0; + } else if ( psta->expire_to <= (pstapriv->expire_to - 3) && (psta->under_exist_checking==0)) { + DBG_871X("asoc check by DELBA/ADDBA! (%d s)\n", (pstapriv->expire_to-psta->expire_to)*2); + psta->under_exist_checking = 1; + //tear down TX AMPDU + send_delba(padapter, 1, psta->hwaddr);// // originator + psta->htpriv.agg_enable_bitmap = 0x0;//reset + psta->htpriv.candidate_tid_bitmap = 0x0;//reset + } + } +#endif // CONFIG_TX_MCAST2UNI +#endif //CONFIG_ACTIVE_KEEP_ALIVE_CHECK + + if (psta->expire_to <= 0) + { + #ifdef CONFIG_ACTIVE_KEEP_ALIVE_CHECK + struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; + + if (padapter->registrypriv.wifi_spec == 1) + { + psta->expire_to = pstapriv->expire_to; + continue; + } + + if (psta->state & WIFI_SLEEP_STATE) { + if (!(psta->state & WIFI_STA_ALIVE_CHK_STATE)) { + //to check if alive by another methods if staion is at ps mode. + psta->expire_to = pstapriv->expire_to; + psta->state |= WIFI_STA_ALIVE_CHK_STATE; + + //DBG_871X("alive chk, sta:" MAC_FMT " is at ps mode!\n", MAC_ARG(psta->hwaddr)); + + //to update bcn with tim_bitmap for this station + pstapriv->tim_bitmap |= BIT(psta->aid); + update_beacon(padapter, _TIM_IE_, NULL, _FALSE); + + if(!pmlmeext->active_keep_alive_check) + continue; + } + } + + if (pmlmeext->active_keep_alive_check) { + int stainfo_offset; + + stainfo_offset = rtw_stainfo_offset(pstapriv, psta); + if (stainfo_offset_valid(stainfo_offset)) { + chk_alive_list[chk_alive_num++] = stainfo_offset; + } + + continue; + } + #endif /* CONFIG_ACTIVE_KEEP_ALIVE_CHECK */ + + rtw_list_delete(&psta->asoc_list); + pstapriv->asoc_list_cnt--; + + DBG_871X("asoc expire "MAC_FMT", state=0x%x\n", MAC_ARG(psta->hwaddr), psta->state); + updated = ap_free_sta(padapter, psta, _FALSE, WLAN_REASON_DEAUTH_LEAVING); + } + else + { + /* TODO: Aging mechanism to digest frames in sleep_q to avoid running out of xmitframe */ + if (psta->sleepq_len > (NR_XMITFRAME/pstapriv->asoc_list_cnt) + && padapter->xmitpriv.free_xmitframe_cnt < (NR_XMITFRAME/pstapriv->asoc_list_cnt/2) + ){ + DBG_871X("%s sta:"MAC_FMT", sleepq_len:%u, free_xmitframe_cnt:%u, asoc_list_cnt:%u, clear sleep_q\n", __func__ + , MAC_ARG(psta->hwaddr) + , psta->sleepq_len, padapter->xmitpriv.free_xmitframe_cnt, pstapriv->asoc_list_cnt); + wakeup_sta_to_xmit(padapter, psta); + } + } + } + + _exit_critical_bh(&pstapriv->asoc_list_lock, &irqL); + +#ifdef CONFIG_ACTIVE_KEEP_ALIVE_CHECK +if (chk_alive_num) { + + u8 backup_oper_channel=0; + struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; + /* switch to correct channel of current network before issue keep-alive frames */ + if (rtw_get_oper_ch(padapter) != pmlmeext->cur_channel) { + backup_oper_channel = rtw_get_oper_ch(padapter); + SelectChannel(padapter, pmlmeext->cur_channel); + } + + /* issue null data to check sta alive*/ + for (i = 0; i < chk_alive_num; i++) { + + int ret = _FAIL; + + psta = rtw_get_stainfo_by_offset(pstapriv, chk_alive_list[i]); + if(!(psta->state &_FW_LINKED)) + continue; + + if (psta->state & WIFI_SLEEP_STATE) + ret = issue_nulldata(padapter, psta->hwaddr, 0, 1, 50); + else + ret = issue_nulldata(padapter, psta->hwaddr, 0, 3, 50); + + psta->keep_alive_trycnt++; + if (ret == _SUCCESS) + { + DBG_871X("asoc check, sta(" MAC_FMT ") is alive\n", MAC_ARG(psta->hwaddr)); + psta->expire_to = pstapriv->expire_to; + psta->keep_alive_trycnt = 0; + continue; + } + else if (psta->keep_alive_trycnt <= 3) + { + DBG_871X("ack check for asoc expire, keep_alive_trycnt=%d\n", psta->keep_alive_trycnt); + psta->expire_to = 1; + continue; + } + + psta->keep_alive_trycnt = 0; + + DBG_871X("asoc expire "MAC_FMT", state=0x%x\n", MAC_ARG(psta->hwaddr), psta->state); + _enter_critical_bh(&pstapriv->asoc_list_lock, &irqL); + if (rtw_is_list_empty(&psta->asoc_list)==_FALSE) { + rtw_list_delete(&psta->asoc_list); + pstapriv->asoc_list_cnt--; + updated = ap_free_sta(padapter, psta, _FALSE, WLAN_REASON_DEAUTH_LEAVING); + } + _exit_critical_bh(&pstapriv->asoc_list_lock, &irqL); + + } + + if (backup_oper_channel>0) /* back to the original operation channel */ + SelectChannel(padapter, backup_oper_channel); +} +#endif /* CONFIG_ACTIVE_KEEP_ALIVE_CHECK */ + + associated_clients_update(padapter, updated); +} + + +static void add_RATid(_adapter *padapter, struct sta_info *psta) +{ + int i; + u8 rf_type; + u32 init_rate=0; + unsigned char sta_band = 0, raid, shortGIrate = _FALSE; + unsigned char limit; + unsigned int tx_ra_bitmap=0; + struct ht_priv *psta_ht = NULL; + struct mlme_priv *pmlmepriv = &(padapter->mlmepriv); + WLAN_BSSID_EX *pcur_network = (WLAN_BSSID_EX *)&pmlmepriv->cur_network.network; + + + if(psta) + psta_ht = &psta->htpriv; + else + return; + + //b/g mode ra_bitmap + for (i=0; ibssrateset); i++) + { + if (psta->bssrateset[i]) + tx_ra_bitmap |= rtw_get_bit_value_from_ieee_value(psta->bssrateset[i]&0x7f); + } + + //n mode ra_bitmap + if(psta_ht->ht_option) + { + rtw_hal_get_hwreg(padapter, HW_VAR_RF_TYPE, (u8 *)(&rf_type)); + if(rf_type == RF_2T2R) + limit=16;// 2R + else + limit=8;// 1R + + for (i=0; iht_cap.supp_mcs_set[i/8] & BIT(i%8)) + tx_ra_bitmap |= BIT(i+12); + } + + //max short GI rate + shortGIrate = psta_ht->sgi; + } + + +#if 0//gtest + if(get_rf_mimo_mode(padapter) == RTL8712_RF_2T2R) + { + //is this a 2r STA? + if((pstat->tx_ra_bitmap & 0x0ff00000) != 0 && !(priv->pshare->has_2r_sta & BIT(pstat->aid))) + { + priv->pshare->has_2r_sta |= BIT(pstat->aid); + if(rtw_read16(padapter, 0x102501f6) != 0xffff) + { + rtw_write16(padapter, 0x102501f6, 0xffff); + reset_1r_sta_RA(priv, 0xffff); + Switch_1SS_Antenna(priv, 3); + } + } + else// bg or 1R STA? + { + if((priv->pmib->dot11BssType.net_work_type & WIRELESS_11N) && pstat->ht_cap_len && priv->pshare->has_2r_sta == 0) + { + if(rtw_read16(padapter, 0x102501f6) != 0x7777) + { // MCS7 SGI + rtw_write16(padapter, 0x102501f6,0x7777); + reset_1r_sta_RA(priv, 0x7777); + Switch_1SS_Antenna(priv, 2); + } + } + } + + } + + if ((pstat->rssi_level < 1) || (pstat->rssi_level > 3)) + { + if (pstat->rssi >= priv->pshare->rf_ft_var.raGoDownUpper) + pstat->rssi_level = 1; + else if ((pstat->rssi >= priv->pshare->rf_ft_var.raGoDown20MLower) || + ((priv->pshare->is_40m_bw) && (pstat->ht_cap_len) && + (pstat->rssi >= priv->pshare->rf_ft_var.raGoDown40MLower) && + (pstat->ht_cap_buf.ht_cap_info & cpu_to_le16(_HTCAP_SUPPORT_CH_WDTH_)))) + pstat->rssi_level = 2; + else + pstat->rssi_level = 3; + } + + // rate adaptive by rssi + if ((priv->pmib->dot11BssType.net_work_type & WIRELESS_11N) && pstat->ht_cap_len) + { + if ((get_rf_mimo_mode(priv) == MIMO_1T2R) || (get_rf_mimo_mode(priv) == MIMO_1T1R)) + { + switch (pstat->rssi_level) { + case 1: + pstat->tx_ra_bitmap &= 0x100f0000; + break; + case 2: + pstat->tx_ra_bitmap &= 0x100ff000; + break; + case 3: + if (priv->pshare->is_40m_bw) + pstat->tx_ra_bitmap &= 0x100ff005; + else + pstat->tx_ra_bitmap &= 0x100ff001; + + break; + } + } + else + { + switch (pstat->rssi_level) { + case 1: + pstat->tx_ra_bitmap &= 0x1f0f0000; + break; + case 2: + pstat->tx_ra_bitmap &= 0x1f0ff000; + break; + case 3: + if (priv->pshare->is_40m_bw) + pstat->tx_ra_bitmap &= 0x000ff005; + else + pstat->tx_ra_bitmap &= 0x000ff001; + + break; + } + + // Don't need to mask high rates due to new rate adaptive parameters + //if (pstat->is_broadcom_sta) // use MCS12 as the highest rate vs. Broadcom sta + // pstat->tx_ra_bitmap &= 0x81ffffff; + + // NIC driver will report not supporting MCS15 and MCS14 in asoc req + //if (pstat->is_rtl8190_sta && !pstat->is_2t_mimo_sta) + // pstat->tx_ra_bitmap &= 0x83ffffff; // if Realtek 1x2 sta, don't use MCS15 and MCS14 + } + } + else if ((priv->pmib->dot11BssType.net_work_type & WIRELESS_11G) && isErpSta(pstat)) + { + switch (pstat->rssi_level) { + case 1: + pstat->tx_ra_bitmap &= 0x00000f00; + break; + case 2: + pstat->tx_ra_bitmap &= 0x00000ff0; + break; + case 3: + pstat->tx_ra_bitmap &= 0x00000ff5; + break; + } + } + else + { + pstat->tx_ra_bitmap &= 0x0000000d; + } + + // disable tx short GI when station cannot rx MCS15(AP is 2T2R) + // disable tx short GI when station cannot rx MCS7 (AP is 1T2R or 1T1R) + // if there is only 1r STA and we are 2T2R, DO NOT mask SGI rate + if ((!(pstat->tx_ra_bitmap & 0x8000000) && (priv->pshare->has_2r_sta > 0) && (get_rf_mimo_mode(padapter) == RTL8712_RF_2T2R)) || + (!(pstat->tx_ra_bitmap & 0x80000) && (get_rf_mimo_mode(padapter) != RTL8712_RF_2T2R))) + { + pstat->tx_ra_bitmap &= ~BIT(28); + } +#endif + + if ( pcur_network->Configuration.DSConfig > 14 ) { + // 5G band + if (tx_ra_bitmap & 0xffff000) + sta_band |= WIRELESS_11_5N | WIRELESS_11A; + else + sta_band |= WIRELESS_11A; + } else { + if (tx_ra_bitmap & 0xffff000) + sta_band |= WIRELESS_11_24N | WIRELESS_11G | WIRELESS_11B; + else if (tx_ra_bitmap & 0xff0) + sta_band |= WIRELESS_11G |WIRELESS_11B; + else + sta_band |= WIRELESS_11B; + } + + raid = networktype_to_raid(sta_band); + init_rate = get_highest_rate_idx(tx_ra_bitmap&0x0fffffff)&0x3f; + + if (psta->aid < NUM_STA) + { + u8 arg = 0; + + arg = psta->mac_id&0x1f; + + arg |= BIT(7);//support entry 2~31 + + if (shortGIrate==_TRUE) + arg |= BIT(5); + + tx_ra_bitmap |= ((raid<<28)&0xf0000000); + + DBG_871X("%s=> mac_id:%d , raid:%d , bitmap=0x%x, arg=0x%x\n", + __FUNCTION__ , psta->mac_id, raid ,tx_ra_bitmap, arg); + + //bitmap[0:27] = tx_rate_bitmap + //bitmap[28:31]= Rate Adaptive id + //arg[0:4] = macid + //arg[5] = Short GI + rtw_hal_add_ra_tid(padapter, tx_ra_bitmap, arg); + + if (shortGIrate==_TRUE) + init_rate |= BIT(6); + + //set ra_id, init_rate + psta->raid = raid; + psta->init_rate = init_rate; + + } + else + { + DBG_871X("station aid %d exceed the max number\n", psta->aid); + } + +} + +static void update_bmc_sta(_adapter *padapter) +{ + _irqL irqL; + u32 init_rate=0; + unsigned char network_type, raid; + int i, supportRateNum = 0; + unsigned int tx_ra_bitmap=0; + struct mlme_priv *pmlmepriv = &(padapter->mlmepriv); + WLAN_BSSID_EX *pcur_network = (WLAN_BSSID_EX *)&pmlmepriv->cur_network.network; + struct sta_info *psta = rtw_get_bcmc_stainfo(padapter); + + if(psta) + { + psta->aid = 0;//default set to 0 + //psta->mac_id = psta->aid+4; + psta->mac_id = psta->aid + 1; + + psta->qos_option = 0; + psta->htpriv.ht_option = _FALSE; + + psta->ieee8021x_blocked = 0; + + _rtw_memset((void*)&psta->sta_stats, 0, sizeof(struct stainfo_stats)); + + //psta->dot118021XPrivacy = _NO_PRIVACY_;//!!! remove it, because it has been set before this. + + + + //prepare for add_RATid + supportRateNum = rtw_get_rateset_len((u8*)&pcur_network->SupportedRates); + network_type = rtw_check_network_type((u8*)&pcur_network->SupportedRates, supportRateNum, 1); + + _rtw_memcpy(psta->bssrateset, &pcur_network->SupportedRates, supportRateNum); + psta->bssratelen = supportRateNum; + + //b/g mode ra_bitmap + for (i=0; ibssrateset[i]) + tx_ra_bitmap |= rtw_get_bit_value_from_ieee_value(psta->bssrateset[i]&0x7f); + } + + if ( pcur_network->Configuration.DSConfig > 14 ) { + //force to A mode. 5G doesn't support CCK rates + network_type = WIRELESS_11A; + tx_ra_bitmap = 0x150; // 6, 12, 24 Mbps + } else { + //force to b mode + network_type = WIRELESS_11B; + tx_ra_bitmap = 0xf; + } + + //tx_ra_bitmap = update_basic_rate(pcur_network->SupportedRates, supportRateNum); + + raid = networktype_to_raid(network_type); + init_rate = get_highest_rate_idx(tx_ra_bitmap&0x0fffffff)&0x3f; + + //DBG_871X("Add id %d val %08x to ratr for bmc sta\n", psta->aid, tx_ra_bitmap); + + //if(pHalData->fw_ractrl == _TRUE) + { + u8 arg = 0; + + arg = psta->mac_id&0x1f; + + arg |= BIT(7); + + //if (shortGIrate==_TRUE) + // arg |= BIT(5); + + tx_ra_bitmap |= ((raid<<28)&0xf0000000); + + DBG_871X("update_bmc_sta, mask=0x%x, arg=0x%x\n", tx_ra_bitmap, arg); + + //bitmap[0:27] = tx_rate_bitmap + //bitmap[28:31]= Rate Adaptive id + //arg[0:4] = macid + //arg[5] = Short GI + rtw_hal_add_ra_tid(padapter, tx_ra_bitmap, arg); + + } + + //set ra_id, init_rate + psta->raid = raid; + psta->init_rate = init_rate; + + _enter_critical_bh(&psta->lock, &irqL); + psta->state = _FW_LINKED; + _exit_critical_bh(&psta->lock, &irqL); + + } + else + { + DBG_871X("add_RATid_bmc_sta error!\n"); + } + +} + +//notes: +//AID: 1~MAX for sta and 0 for bc/mc in ap/adhoc mode +//MAC_ID = AID+1 for sta in ap/adhoc mode +//MAC_ID = 1 for bc/mc for sta/ap/adhoc +//MAC_ID = 0 for bssid for sta/ap/adhoc +//CAM_ID = //0~3 for default key, cmd_id=macid + 3, macid=aid+1; + +void update_sta_info_apmode(_adapter *padapter, struct sta_info *psta) +{ + _irqL irqL; + struct mlme_priv *pmlmepriv = &(padapter->mlmepriv); + struct security_priv *psecuritypriv = &padapter->securitypriv; + struct mlme_ext_priv *pmlmeext = &(padapter->mlmeextpriv); + struct ht_priv *phtpriv_ap = &pmlmepriv->htpriv; + struct ht_priv *phtpriv_sta = &psta->htpriv; + + //set intf_tag to if1 + //psta->intf_tag = 0; + + //psta->mac_id = psta->aid+4; + psta->mac_id = psta->aid+1; + + if(psecuritypriv->dot11AuthAlgrthm==dot11AuthAlgrthm_8021X) + psta->ieee8021x_blocked = _TRUE; + else + psta->ieee8021x_blocked = _FALSE; + + + //update sta's cap + + //ERP + VCS_update(padapter, psta); + + //HT related cap + if(phtpriv_sta->ht_option) + { + //check if sta supports rx ampdu + phtpriv_sta->ampdu_enable = phtpriv_ap->ampdu_enable; + + //check if sta support s Short GI + if((phtpriv_sta->ht_cap.cap_info & phtpriv_ap->ht_cap.cap_info) & cpu_to_le16(IEEE80211_HT_CAP_SGI_20|IEEE80211_HT_CAP_SGI_40)) + { + phtpriv_sta->sgi = _TRUE; + } + + // bwmode + if((phtpriv_sta->ht_cap.cap_info & phtpriv_ap->ht_cap.cap_info) & cpu_to_le16(IEEE80211_HT_CAP_SUP_WIDTH)) + { + //phtpriv_sta->bwmode = HT_CHANNEL_WIDTH_40; + phtpriv_sta->bwmode = pmlmeext->cur_bwmode; + phtpriv_sta->ch_offset = pmlmeext->cur_ch_offset; + + } + + psta->qos_option = _TRUE; + + } + else + { + phtpriv_sta->ampdu_enable = _FALSE; + + phtpriv_sta->sgi = _FALSE; + phtpriv_sta->bwmode = HT_CHANNEL_WIDTH_20; + phtpriv_sta->ch_offset = HAL_PRIME_CHNL_OFFSET_DONT_CARE; + } + + //Rx AMPDU + send_delba(padapter, 0, psta->hwaddr);// recipient + + //TX AMPDU + send_delba(padapter, 1, psta->hwaddr);// // originator + phtpriv_sta->agg_enable_bitmap = 0x0;//reset + phtpriv_sta->candidate_tid_bitmap = 0x0;//reset + + + //todo: init other variables + + _rtw_memset((void*)&psta->sta_stats, 0, sizeof(struct stainfo_stats)); + + + //add ratid + //add_RATid(padapter, psta);//move to ap_sta_info_defer_update() + + + _enter_critical_bh(&psta->lock, &irqL); + psta->state |= _FW_LINKED; + _exit_critical_bh(&psta->lock, &irqL); + + +} + +static void update_hw_ht_param(_adapter *padapter) +{ + unsigned char max_AMPDU_len; + unsigned char min_MPDU_spacing; + struct registry_priv *pregpriv = &padapter->registrypriv; + struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; + struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info); + + DBG_871X("%s\n", __FUNCTION__); + + + //handle A-MPDU parameter field + /* + AMPDU_para [1:0]:Max AMPDU Len => 0:8k , 1:16k, 2:32k, 3:64k + AMPDU_para [4:2]:Min MPDU Start Spacing + */ + max_AMPDU_len = pmlmeinfo->HT_caps.u.HT_cap_element.AMPDU_para & 0x03; + + min_MPDU_spacing = (pmlmeinfo->HT_caps.u.HT_cap_element.AMPDU_para & 0x1c) >> 2; + + rtw_hal_set_hwreg(padapter, HW_VAR_AMPDU_MIN_SPACE, (u8 *)(&min_MPDU_spacing)); + + rtw_hal_set_hwreg(padapter, HW_VAR_AMPDU_FACTOR, (u8 *)(&max_AMPDU_len)); + + // + // Config SM Power Save setting + // + pmlmeinfo->SM_PS = (pmlmeinfo->HT_caps.u.HT_cap_element.HT_caps_info & 0x0C) >> 2; + if(pmlmeinfo->SM_PS == WLAN_HT_CAP_SM_PS_STATIC) + { + /*u8 i; + //update the MCS rates + for (i = 0; i < 16; i++) + { + pmlmeinfo->HT_caps.HT_cap_element.MCS_rate[i] &= MCS_rate_1R[i]; + }*/ + DBG_871X("%s(): WLAN_HT_CAP_SM_PS_STATIC\n",__FUNCTION__); + } + + // + // Config current HT Protection mode. + // + //pmlmeinfo->HT_protection = pmlmeinfo->HT_info.infos[1] & 0x3; + +} + +static void start_bss_network(_adapter *padapter, u8 *pbuf) +{ + u8 *p; + u8 val8, cur_channel, cur_bwmode, cur_ch_offset; + u16 bcn_interval; + u32 acparm; + int ie_len; + struct registry_priv *pregpriv = &padapter->registrypriv; + struct mlme_priv *pmlmepriv = &(padapter->mlmepriv); + struct security_priv* psecuritypriv=&(padapter->securitypriv); + WLAN_BSSID_EX *pnetwork = (WLAN_BSSID_EX *)&pmlmepriv->cur_network.network; + struct mlme_ext_priv *pmlmeext = &(padapter->mlmeextpriv); + struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info); + WLAN_BSSID_EX *pnetwork_mlmeext = &(pmlmeinfo->network); + struct HT_info_element *pht_info=NULL; +#ifdef CONFIG_P2P + struct wifidirect_info *pwdinfo = &(padapter->wdinfo); +#endif //CONFIG_P2P + u8 cbw40_enable=0; + u8 change_band = _FALSE; + //DBG_871X("%s\n", __FUNCTION__); + + bcn_interval = (u16)pnetwork->Configuration.BeaconPeriod; + cur_channel = pnetwork->Configuration.DSConfig; + cur_bwmode = HT_CHANNEL_WIDTH_20;; + cur_ch_offset = HAL_PRIME_CHNL_OFFSET_DONT_CARE; + + + //check if there is wps ie, + //if there is wpsie in beacon, the hostapd will update beacon twice when stating hostapd, + //and at first time the security ie ( RSN/WPA IE) will not include in beacon. + if(NULL == rtw_get_wps_ie(pnetwork->IEs+_FIXED_IE_LENGTH_, pnetwork->IELength-_FIXED_IE_LENGTH_, NULL, NULL)) + { + pmlmeext->bstart_bss = _TRUE; + } + + //todo: update wmm, ht cap + //pmlmeinfo->WMM_enable; + //pmlmeinfo->HT_enable; + if(pmlmepriv->qospriv.qos_option) + pmlmeinfo->WMM_enable = _TRUE; + + if(pmlmepriv->htpriv.ht_option) + { + pmlmeinfo->WMM_enable = _TRUE; + pmlmeinfo->HT_enable = _TRUE; + //pmlmeinfo->HT_info_enable = _TRUE; + //pmlmeinfo->HT_caps_enable = _TRUE; + + update_hw_ht_param(padapter); + } + + + if(pmlmepriv->cur_network.join_res != _TRUE) //setting only at first time + { + //WEP Key will be set before this function, do not clear CAM. + if ((psecuritypriv->dot11PrivacyAlgrthm != _WEP40_) && (psecuritypriv->dot11PrivacyAlgrthm != _WEP104_)) + flush_all_cam_entry(padapter); //clear CAM + } + + //set MSR to AP_Mode + Set_MSR(padapter, _HW_STATE_AP_); + + //Set BSSID REG + rtw_hal_set_hwreg(padapter, HW_VAR_BSSID, pnetwork->MacAddress); + + //Set EDCA param reg +#ifdef CONFIG_CONCURRENT_MODE + acparm = 0x005ea42b; +#else + acparm = 0x002F3217; // VO +#endif + rtw_hal_set_hwreg(padapter, HW_VAR_AC_PARAM_VO, (u8 *)(&acparm)); + acparm = 0x005E4317; // VI + rtw_hal_set_hwreg(padapter, HW_VAR_AC_PARAM_VI, (u8 *)(&acparm)); + //acparm = 0x00105320; // BE + acparm = 0x005ea42b; + rtw_hal_set_hwreg(padapter, HW_VAR_AC_PARAM_BE, (u8 *)(&acparm)); + acparm = 0x0000A444; // BK + rtw_hal_set_hwreg(padapter, HW_VAR_AC_PARAM_BK, (u8 *)(&acparm)); + + //Set Security + val8 = (psecuritypriv->dot11AuthAlgrthm == dot11AuthAlgrthm_8021X)? 0xcc: 0xcf; + rtw_hal_set_hwreg(padapter, HW_VAR_SEC_CFG, (u8 *)(&val8)); + + //Beacon Control related register + rtw_hal_set_hwreg(padapter, HW_VAR_BEACON_INTERVAL, (u8 *)(&bcn_interval)); + + if(pmlmepriv->cur_network.join_res != _TRUE) //setting only at first time + { + u32 initialgain; + + initialgain = 0x1e; + + + //disable dynamic functions, such as high power, DIG + //Save_DM_Func_Flag(padapter); + //Switch_DM_Func(padapter, DYNAMIC_FUNC_DISABLE, _FALSE); + +#ifdef CONFIG_CONCURRENT_MODE + if(padapter->adapter_type > PRIMARY_ADAPTER) + { + if(rtw_buddy_adapter_up(padapter)) + { + _adapter *pbuddy_adapter = padapter->pbuddy_adapter; + + //turn on dynamic functions on PRIMARY_ADAPTER, dynamic functions only runs at PRIMARY_ADAPTER + Switch_DM_Func(pbuddy_adapter, DYNAMIC_FUNC_DIG|DYNAMIC_FUNC_HP|DYNAMIC_FUNC_SS, _TRUE); + + rtw_hal_set_hwreg(pbuddy_adapter, HW_VAR_INITIAL_GAIN, (u8 *)(&initialgain)); + } + } + else +#endif + { + //turn on dynamic functions + Switch_DM_Func(padapter, DYNAMIC_FUNC_DIG|DYNAMIC_FUNC_HP|DYNAMIC_FUNC_SS, _TRUE); + + rtw_hal_set_hwreg(padapter, HW_VAR_INITIAL_GAIN, (u8 *)(&initialgain)); + } + + } + + //set channel, bwmode + p = rtw_get_ie((pnetwork->IEs + sizeof(NDIS_802_11_FIXED_IEs)), _HT_ADD_INFO_IE_, &ie_len, (pnetwork->IELength - sizeof(NDIS_802_11_FIXED_IEs))); + if( p && ie_len) + { + pht_info = (struct HT_info_element *)(p+2); + + if( pmlmeext->cur_channel > 14 ) + { + if( pregpriv->cbw40_enable & BIT(1) ) + cbw40_enable = 1; + } + else + if( pregpriv->cbw40_enable & BIT(0) ) + cbw40_enable = 1; + + if ((cbw40_enable) && (pht_info->infos[0] & BIT(2))) + { + //switch to the 40M Hz mode + //pmlmeext->cur_bwmode = HT_CHANNEL_WIDTH_40; + cur_bwmode = HT_CHANNEL_WIDTH_40; + switch (pht_info->infos[0] & 0x3) + { + case 1: + //pmlmeext->cur_ch_offset = HAL_PRIME_CHNL_OFFSET_LOWER; + cur_ch_offset = HAL_PRIME_CHNL_OFFSET_LOWER; + break; + + case 3: + //pmlmeext->cur_ch_offset = HAL_PRIME_CHNL_OFFSET_UPPER; + cur_ch_offset = HAL_PRIME_CHNL_OFFSET_UPPER; + break; + + default: + //pmlmeext->cur_ch_offset = HAL_PRIME_CHNL_OFFSET_DONT_CARE; + cur_ch_offset = HAL_PRIME_CHNL_OFFSET_DONT_CARE; + break; + } + + } + + } + +#ifdef CONFIG_DUALMAC_CONCURRENT + dc_set_ap_channel_bandwidth(padapter, cur_channel, cur_ch_offset, cur_bwmode); +#else + //TODO: need to judge the phy parameters on concurrent mode for single phy + //set_channel_bwmode(padapter, pmlmeext->cur_channel, pmlmeext->cur_ch_offset, pmlmeext->cur_bwmode); +#ifdef CONFIG_CONCURRENT_MODE + if(!check_buddy_fwstate(padapter, _FW_LINKED|_FW_UNDER_LINKING|_FW_UNDER_SURVEY)) + { + set_channel_bwmode(padapter, cur_channel, cur_ch_offset, cur_bwmode); + } + else if(check_buddy_fwstate(padapter, _FW_LINKED)==_TRUE)//only second adapter can enter AP Mode + { + _adapter *pbuddy_adapter = padapter->pbuddy_adapter; + struct mlme_ext_priv *pbuddy_mlmeext = &pbuddy_adapter->mlmeextpriv; + + //To sync cur_channel/cur_bwmode/cur_ch_offset with primary adapter + DBG_871X("primary iface is at linked state, sync cur_channel/cur_bwmode/cur_ch_offset\n"); + DBG_871X("primary adapter, CH=%d, BW=%d, offset=%d\n", pbuddy_mlmeext->cur_channel, pbuddy_mlmeext->cur_bwmode, pbuddy_mlmeext->cur_ch_offset); + DBG_871X("second adapter, CH=%d, BW=%d, offset=%d\n", cur_channel, cur_bwmode, cur_ch_offset); + + if((cur_channel <= 14 && pbuddy_mlmeext->cur_channel >= 36) || + (cur_channel >= 36 && pbuddy_mlmeext->cur_channel <= 14)) + change_band = _TRUE; + + cur_channel = pbuddy_mlmeext->cur_channel; + if(cur_bwmode == HT_CHANNEL_WIDTH_40) + { + if(pht_info) + pht_info->infos[0] &= ~(BIT(0)|BIT(1)); + + if(pbuddy_mlmeext->cur_bwmode == HT_CHANNEL_WIDTH_40) + { + cur_ch_offset = pbuddy_mlmeext->cur_ch_offset; + + //to update cur_ch_offset value in beacon + if(pht_info) + { + switch(cur_ch_offset) + { + case HAL_PRIME_CHNL_OFFSET_LOWER: + pht_info->infos[0] |= 0x1; + break; + case HAL_PRIME_CHNL_OFFSET_UPPER: + pht_info->infos[0] |= 0x3; + break; + case HAL_PRIME_CHNL_OFFSET_DONT_CARE: + default: + break; + } + } + + } + else if(pbuddy_mlmeext->cur_bwmode == HT_CHANNEL_WIDTH_20) + { + cur_bwmode = HT_CHANNEL_WIDTH_20; + cur_ch_offset = HAL_PRIME_CHNL_OFFSET_DONT_CARE; + + if(cur_channel>0 && cur_channel<5) + { + if(pht_info) + pht_info->infos[0] |= 0x1; + + cur_bwmode = HT_CHANNEL_WIDTH_40; + cur_ch_offset = HAL_PRIME_CHNL_OFFSET_LOWER; + } + + if(cur_channel>7 && cur_channel<(14+1)) + { + if(pht_info) + pht_info->infos[0] |= 0x3; + + cur_bwmode = HT_CHANNEL_WIDTH_40; + cur_ch_offset = HAL_PRIME_CHNL_OFFSET_UPPER; + } + + set_channel_bwmode(padapter, cur_channel, cur_ch_offset, cur_bwmode); + } + + } + + // to update channel value in beacon + pnetwork->Configuration.DSConfig = cur_channel; + p = rtw_get_ie((pnetwork->IEs + sizeof(NDIS_802_11_FIXED_IEs)), _DSSET_IE_, &ie_len, (pnetwork->IELength - sizeof(NDIS_802_11_FIXED_IEs))); + if(p && ie_len>0) + *(p + 2) = cur_channel; + + if(pht_info) + pht_info->primary_channel = cur_channel; + + //set buddy adapter channel, bandwidth, offeset to current adapter + pmlmeext->cur_channel = cur_channel; + pmlmeext->cur_bwmode = cur_bwmode; + pmlmeext->cur_ch_offset = cur_ch_offset; + + //buddy interface band is different from current interface, update ERP, support rate, ext support rate IE + if(change_band == _TRUE) + change_band_update_ie(padapter, pnetwork); + } +#else + set_channel_bwmode(padapter, cur_channel, cur_ch_offset, cur_bwmode); +#endif //CONFIG_CONCURRENT_MODE + + DBG_871X("CH=%d, BW=%d, offset=%d\n", cur_channel, cur_bwmode, cur_ch_offset); + + // + pmlmeext->cur_channel = cur_channel; + pmlmeext->cur_bwmode = cur_bwmode; + pmlmeext->cur_ch_offset = cur_ch_offset; +#endif //CONFIG_DUALMAC_CONCURRENT + pmlmeext->cur_wireless_mode = pmlmepriv->cur_network.network_type; + + //update cur_wireless_mode + update_wireless_mode(padapter); + + //update RRSR after set channel and bandwidth + UpdateBrateTbl(padapter, pnetwork->SupportedRates); + rtw_hal_set_hwreg(padapter, HW_VAR_BASIC_RATE, pnetwork->SupportedRates); + + //udpate capability after cur_wireless_mode updated + update_capinfo(padapter, rtw_get_capability((WLAN_BSSID_EX *)pnetwork)); + + //let pnetwork_mlmeext == pnetwork_mlme. + _rtw_memcpy(pnetwork_mlmeext, pnetwork, pnetwork->Length); + +#ifdef CONFIG_P2P + _rtw_memcpy(pwdinfo->p2p_group_ssid, pnetwork->Ssid.Ssid, pnetwork->Ssid.SsidLength); + pwdinfo->p2p_group_ssid_len = pnetwork->Ssid.SsidLength; +#endif //CONFIG_P2P + + if(_TRUE == pmlmeext->bstart_bss) + { + update_beacon(padapter, _TIM_IE_, NULL, _FALSE); + +#ifndef CONFIG_INTERRUPT_BASED_TXBCN //other case will tx beacon when bcn interrupt coming in. +#if defined(CONFIG_USB_HCI) || defined(CONFIG_SDIO_HCI) || defined(CONFIG_GSPI_HCI) + //issue beacon frame + if(send_beacon(padapter)==_FAIL) + { + DBG_871X("issue_beacon, fail!\n"); + } +#endif +#endif //!CONFIG_INTERRUPT_BASED_TXBCN + + } + + + //update bc/mc sta_info + update_bmc_sta(padapter); + + //pmlmeext->bstart_bss = _TRUE; + +} + +int rtw_check_beacon_data(_adapter *padapter, u8 *pbuf, int len) +{ + int ret=_SUCCESS; + u8 *p; + u8 *pHT_caps_ie=NULL; + u8 *pHT_info_ie=NULL; + struct sta_info *psta = NULL; + u16 cap, ht_cap=_FALSE; + uint ie_len = 0; + int group_cipher, pairwise_cipher; + u8 channel, network_type, supportRate[NDIS_802_11_LENGTH_RATES_EX]; + int supportRateNum = 0; + u8 OUI1[] = {0x00, 0x50, 0xf2,0x01}; + u8 wps_oui[4]={0x0,0x50,0xf2,0x04}; + u8 WMM_PARA_IE[] = {0x00, 0x50, 0xf2, 0x02, 0x01, 0x01}; + struct registry_priv *pregistrypriv = &padapter->registrypriv; + struct security_priv *psecuritypriv = &padapter->securitypriv; + struct mlme_priv *pmlmepriv = &(padapter->mlmepriv); + WLAN_BSSID_EX *pbss_network = (WLAN_BSSID_EX *)&pmlmepriv->cur_network.network; + struct sta_priv *pstapriv = &padapter->stapriv; + u8 *ie = pbss_network->IEs; + + + /* SSID */ + /* Supported rates */ + /* DS Params */ + /* WLAN_EID_COUNTRY */ + /* ERP Information element */ + /* Extended supported rates */ + /* WPA/WPA2 */ + /* Wi-Fi Wireless Multimedia Extensions */ + /* ht_capab, ht_oper */ + /* WPS IE */ + + DBG_871X("%s, len=%d\n", __FUNCTION__, len); + + if(check_fwstate(pmlmepriv, WIFI_AP_STATE) != _TRUE) + return _FAIL; + + + if(len>MAX_IE_SZ) + return _FAIL; + + pbss_network->IELength = len; + + _rtw_memset(ie, 0, MAX_IE_SZ); + + _rtw_memcpy(ie, pbuf, pbss_network->IELength); + + + if(pbss_network->InfrastructureMode!=Ndis802_11APMode) + return _FAIL; + + pbss_network->Rssi = 0; + + _rtw_memcpy(pbss_network->MacAddress, myid(&(padapter->eeprompriv)), ETH_ALEN); + + //beacon interval + p = rtw_get_beacon_interval_from_ie(ie);//ie + 8; // 8: TimeStamp, 2: Beacon Interval 2:Capability + //pbss_network->Configuration.BeaconPeriod = le16_to_cpu(*(unsigned short*)p); + pbss_network->Configuration.BeaconPeriod = RTW_GET_LE16(p); + + //capability + //cap = *(unsigned short *)rtw_get_capability_from_ie(ie); + //cap = le16_to_cpu(cap); + cap = RTW_GET_LE16(ie); + + //SSID + p = rtw_get_ie(ie + _BEACON_IE_OFFSET_, _SSID_IE_, &ie_len, (pbss_network->IELength -_BEACON_IE_OFFSET_)); + if(p && ie_len>0) + { + _rtw_memset(&pbss_network->Ssid, 0, sizeof(NDIS_802_11_SSID)); + _rtw_memcpy(pbss_network->Ssid.Ssid, (p + 2), ie_len); + pbss_network->Ssid.SsidLength = ie_len; + } + + //chnnel + channel = 0; + pbss_network->Configuration.Length = 0; + p = rtw_get_ie(ie + _BEACON_IE_OFFSET_, _DSSET_IE_, &ie_len, (pbss_network->IELength - _BEACON_IE_OFFSET_)); + if(p && ie_len>0) + channel = *(p + 2); + + pbss_network->Configuration.DSConfig = channel; + + + _rtw_memset(supportRate, 0, NDIS_802_11_LENGTH_RATES_EX); + // get supported rates + p = rtw_get_ie(ie + _BEACON_IE_OFFSET_, _SUPPORTEDRATES_IE_, &ie_len, (pbss_network->IELength - _BEACON_IE_OFFSET_)); + if (p != NULL) + { + _rtw_memcpy(supportRate, p+2, ie_len); + supportRateNum = ie_len; + } + + //get ext_supported rates + p = rtw_get_ie(ie + _BEACON_IE_OFFSET_, _EXT_SUPPORTEDRATES_IE_, &ie_len, pbss_network->IELength - _BEACON_IE_OFFSET_); + if (p != NULL) + { + _rtw_memcpy(supportRate+supportRateNum, p+2, ie_len); + supportRateNum += ie_len; + + } + + network_type = rtw_check_network_type(supportRate, supportRateNum, channel); + + rtw_set_supported_rate(pbss_network->SupportedRates, network_type); + + + //parsing ERP_IE + p = rtw_get_ie(ie + _BEACON_IE_OFFSET_, _ERPINFO_IE_, &ie_len, (pbss_network->IELength - _BEACON_IE_OFFSET_)); + if(p && ie_len>0) + { + ERP_IE_handler(padapter, (PNDIS_802_11_VARIABLE_IEs)p); + } + + //update privacy/security + if (cap & BIT(4)) + pbss_network->Privacy = 1; + else + pbss_network->Privacy = 0; + + psecuritypriv->wpa_psk = 0; + + //wpa2 + group_cipher = 0; pairwise_cipher = 0; + psecuritypriv->wpa2_group_cipher = _NO_PRIVACY_; + psecuritypriv->wpa2_pairwise_cipher = _NO_PRIVACY_; + p = rtw_get_ie(ie + _BEACON_IE_OFFSET_, _RSN_IE_2_, &ie_len, (pbss_network->IELength - _BEACON_IE_OFFSET_)); + if(p && ie_len>0) + { + if(rtw_parse_wpa2_ie(p, ie_len+2, &group_cipher, &pairwise_cipher) == _SUCCESS) + { + psecuritypriv->dot11AuthAlgrthm= dot11AuthAlgrthm_8021X; + + psecuritypriv->dot8021xalg = 1;//psk, todo:802.1x + psecuritypriv->wpa_psk |= BIT(1); + + psecuritypriv->wpa2_group_cipher = group_cipher; + psecuritypriv->wpa2_pairwise_cipher = pairwise_cipher; +#if 0 + switch(group_cipher) + { + case WPA_CIPHER_NONE: + psecuritypriv->wpa2_group_cipher = _NO_PRIVACY_; + break; + case WPA_CIPHER_WEP40: + psecuritypriv->wpa2_group_cipher = _WEP40_; + break; + case WPA_CIPHER_TKIP: + psecuritypriv->wpa2_group_cipher = _TKIP_; + break; + case WPA_CIPHER_CCMP: + psecuritypriv->wpa2_group_cipher = _AES_; + break; + case WPA_CIPHER_WEP104: + psecuritypriv->wpa2_group_cipher = _WEP104_; + break; + } + + switch(pairwise_cipher) + { + case WPA_CIPHER_NONE: + psecuritypriv->wpa2_pairwise_cipher = _NO_PRIVACY_; + break; + case WPA_CIPHER_WEP40: + psecuritypriv->wpa2_pairwise_cipher = _WEP40_; + break; + case WPA_CIPHER_TKIP: + psecuritypriv->wpa2_pairwise_cipher = _TKIP_; + break; + case WPA_CIPHER_CCMP: + psecuritypriv->wpa2_pairwise_cipher = _AES_; + break; + case WPA_CIPHER_WEP104: + psecuritypriv->wpa2_pairwise_cipher = _WEP104_; + break; + } +#endif + } + + } + + //wpa + ie_len = 0; + group_cipher = 0; pairwise_cipher = 0; + psecuritypriv->wpa_group_cipher = _NO_PRIVACY_; + psecuritypriv->wpa_pairwise_cipher = _NO_PRIVACY_; + for (p = ie + _BEACON_IE_OFFSET_; ;p += (ie_len + 2)) + { + p = rtw_get_ie(p, _SSN_IE_1_, &ie_len, (pbss_network->IELength - _BEACON_IE_OFFSET_ - (ie_len + 2))); + if ((p) && (_rtw_memcmp(p+2, OUI1, 4))) + { + if(rtw_parse_wpa_ie(p, ie_len+2, &group_cipher, &pairwise_cipher) == _SUCCESS) + { + psecuritypriv->dot11AuthAlgrthm= dot11AuthAlgrthm_8021X; + + psecuritypriv->dot8021xalg = 1;//psk, todo:802.1x + + psecuritypriv->wpa_psk |= BIT(0); + + psecuritypriv->wpa_group_cipher = group_cipher; + psecuritypriv->wpa_pairwise_cipher = pairwise_cipher; + +#if 0 + switch(group_cipher) + { + case WPA_CIPHER_NONE: + psecuritypriv->wpa_group_cipher = _NO_PRIVACY_; + break; + case WPA_CIPHER_WEP40: + psecuritypriv->wpa_group_cipher = _WEP40_; + break; + case WPA_CIPHER_TKIP: + psecuritypriv->wpa_group_cipher = _TKIP_; + break; + case WPA_CIPHER_CCMP: + psecuritypriv->wpa_group_cipher = _AES_; + break; + case WPA_CIPHER_WEP104: + psecuritypriv->wpa_group_cipher = _WEP104_; + break; + } + + switch(pairwise_cipher) + { + case WPA_CIPHER_NONE: + psecuritypriv->wpa_pairwise_cipher = _NO_PRIVACY_; + break; + case WPA_CIPHER_WEP40: + psecuritypriv->wpa_pairwise_cipher = _WEP40_; + break; + case WPA_CIPHER_TKIP: + psecuritypriv->wpa_pairwise_cipher = _TKIP_; + break; + case WPA_CIPHER_CCMP: + psecuritypriv->wpa_pairwise_cipher = _AES_; + break; + case WPA_CIPHER_WEP104: + psecuritypriv->wpa_pairwise_cipher = _WEP104_; + break; + } +#endif + } + + break; + + } + + if ((p == NULL) || (ie_len == 0)) + { + break; + } + + } + + //wmm + ie_len = 0; + pmlmepriv->qospriv.qos_option = 0; + if(pregistrypriv->wmm_enable) + { + for (p = ie + _BEACON_IE_OFFSET_; ;p += (ie_len + 2)) + { + p = rtw_get_ie(p, _VENDOR_SPECIFIC_IE_, &ie_len, (pbss_network->IELength - _BEACON_IE_OFFSET_ - (ie_len + 2))); + if((p) && _rtw_memcmp(p+2, WMM_PARA_IE, 6)) + { + pmlmepriv->qospriv.qos_option = 1; + + *(p+8) |= BIT(7);//QoS Info, support U-APSD + + /* disable all ACM bits since the WMM admission control is not supported */ + *(p + 10) &= ~BIT(4); /* BE */ + *(p + 14) &= ~BIT(4); /* BK */ + *(p + 18) &= ~BIT(4); /* VI */ + *(p + 22) &= ~BIT(4); /* VO */ + + break; + } + + if ((p == NULL) || (ie_len == 0)) + { + break; + } + } + } + + //parsing HT_CAP_IE + p = rtw_get_ie(ie + _BEACON_IE_OFFSET_, _HT_CAPABILITY_IE_, &ie_len, (pbss_network->IELength - _BEACON_IE_OFFSET_)); + if(p && ie_len>0) + { + u8 rf_type; + + struct rtw_ieee80211_ht_cap *pht_cap = (struct rtw_ieee80211_ht_cap *)(p+2); + + pHT_caps_ie=p; + + + ht_cap = _TRUE; + network_type |= WIRELESS_11_24N; + + + rtw_hal_get_hwreg(padapter, HW_VAR_RF_TYPE, (u8 *)(&rf_type)); + + if((psecuritypriv->wpa_pairwise_cipher & WPA_CIPHER_CCMP) || + (psecuritypriv->wpa2_pairwise_cipher & WPA_CIPHER_CCMP)) + { + pht_cap->ampdu_params_info |= (IEEE80211_HT_CAP_AMPDU_DENSITY&(0x07<<2)); + } + else + { + pht_cap->ampdu_params_info |= (IEEE80211_HT_CAP_AMPDU_DENSITY&0x00); + } + + pht_cap->ampdu_params_info |= (IEEE80211_HT_CAP_AMPDU_FACTOR & 0x03); //set Max Rx AMPDU size to 64K + + if(rf_type == RF_1T1R) + { + pht_cap->supp_mcs_set[0] = 0xff; + pht_cap->supp_mcs_set[1] = 0x0; + } + + _rtw_memcpy(&pmlmepriv->htpriv.ht_cap, p+2, ie_len); + + } + + //parsing HT_INFO_IE + p = rtw_get_ie(ie + _BEACON_IE_OFFSET_, _HT_ADD_INFO_IE_, &ie_len, (pbss_network->IELength - _BEACON_IE_OFFSET_)); + if(p && ie_len>0) + { + pHT_info_ie=p; + } + + switch(network_type) + { + case WIRELESS_11B: + pbss_network->NetworkTypeInUse = Ndis802_11DS; + break; + case WIRELESS_11G: + case WIRELESS_11BG: + case WIRELESS_11G_24N: + case WIRELESS_11BG_24N: + pbss_network->NetworkTypeInUse = Ndis802_11OFDM24; + break; + case WIRELESS_11A: + pbss_network->NetworkTypeInUse = Ndis802_11OFDM5; + break; + default : + pbss_network->NetworkTypeInUse = Ndis802_11OFDM24; + break; + } + + pmlmepriv->cur_network.network_type = network_type; + + + pmlmepriv->htpriv.ht_option = _FALSE; +#ifdef CONFIG_80211N_HT + if( (psecuritypriv->wpa2_pairwise_cipher&WPA_CIPHER_TKIP) || + (psecuritypriv->wpa_pairwise_cipher&WPA_CIPHER_TKIP)) + { + //todo: + //ht_cap = _FALSE; + } + + //ht_cap + if(pregistrypriv->ht_enable && ht_cap==_TRUE) + { + pmlmepriv->htpriv.ht_option = _TRUE; + pmlmepriv->qospriv.qos_option = 1; + + if(pregistrypriv->ampdu_enable==1) + { + pmlmepriv->htpriv.ampdu_enable = _TRUE; + } + + HT_caps_handler(padapter, (PNDIS_802_11_VARIABLE_IEs)pHT_caps_ie); + + HT_info_handler(padapter, (PNDIS_802_11_VARIABLE_IEs)pHT_info_ie); + } +#endif + + + pbss_network->Length = get_WLAN_BSSID_EX_sz((WLAN_BSSID_EX *)pbss_network); + + //issue beacon to start bss network + start_bss_network(padapter, (u8*)pbss_network); + + + //alloc sta_info for ap itself + psta = rtw_get_stainfo(&padapter->stapriv, pbss_network->MacAddress); + if(!psta) + { + psta = rtw_alloc_stainfo(&padapter->stapriv, pbss_network->MacAddress); + if (psta == NULL) + { + return _FAIL; + } + } + psta->state |= WIFI_AP_STATE; //Aries, add,fix bug of flush_cam_entry at STOP AP mode , 0724 + rtw_indicate_connect( padapter); + + pmlmepriv->cur_network.join_res = _TRUE;//for check if already set beacon + + //update bc/mc sta_info + //update_bmc_sta(padapter); + + return ret; + +} + +void rtw_set_macaddr_acl(_adapter *padapter, int mode) +{ + struct sta_priv *pstapriv = &padapter->stapriv; + struct wlan_acl_pool *pacl_list = &pstapriv->acl_list; + + DBG_871X("%s, mode=%d\n", __func__, mode); + + pacl_list->mode = mode; +} + +int rtw_acl_add_sta(_adapter *padapter, u8 *addr) +{ + _irqL irqL; + _list *plist, *phead; + u8 added = _FALSE; + int i, ret=0; + struct rtw_wlan_acl_node *paclnode; + struct sta_priv *pstapriv = &padapter->stapriv; + struct wlan_acl_pool *pacl_list = &pstapriv->acl_list; + _queue *pacl_node_q =&pacl_list->acl_node_q; + + DBG_871X("%s(acl_num=%d)=" MAC_FMT "\n", __func__, pacl_list->num, MAC_ARG(addr)); + + if((NUM_ACL-1) < pacl_list->num) + return (-1); + + + _enter_critical_bh(&(pacl_node_q->lock), &irqL); + + phead = get_list_head(pacl_node_q); + plist = get_next(phead); + + while ((rtw_end_of_queue_search(phead, plist)) == _FALSE) + { + paclnode = LIST_CONTAINOR(plist, struct rtw_wlan_acl_node, list); + plist = get_next(plist); + + if(_rtw_memcmp(paclnode->addr, addr, ETH_ALEN)) + { + if(paclnode->valid == _TRUE) + { + added = _TRUE; + DBG_871X("%s, sta has been added\n", __func__); + break; + } + } + } + + _exit_critical_bh(&(pacl_node_q->lock), &irqL); + + + if(added == _TRUE) + return ret; + + + _enter_critical_bh(&(pacl_node_q->lock), &irqL); + + for(i=0; i< NUM_ACL; i++) + { + paclnode = &pacl_list->aclnode[i]; + + if(paclnode->valid == _FALSE) + { + _rtw_init_listhead(&paclnode->list); + + _rtw_memcpy(paclnode->addr, addr, ETH_ALEN); + + paclnode->valid = _TRUE; + + rtw_list_insert_tail(&paclnode->list, get_list_head(pacl_node_q)); + + pacl_list->num++; + + break; + } + } + + DBG_871X("%s, acl_num=%d\n", __func__, pacl_list->num); + + _exit_critical_bh(&(pacl_node_q->lock), &irqL); + + return ret; +} + +int rtw_acl_remove_sta(_adapter *padapter, u8 *addr) +{ + _irqL irqL; + _list *plist, *phead; + int i, ret=0; + struct rtw_wlan_acl_node *paclnode; + struct sta_priv *pstapriv = &padapter->stapriv; + struct wlan_acl_pool *pacl_list = &pstapriv->acl_list; + _queue *pacl_node_q =&pacl_list->acl_node_q; + + DBG_871X("%s(acl_num=%d)=" MAC_FMT "\n", __func__, pacl_list->num, MAC_ARG(addr)); + + _enter_critical_bh(&(pacl_node_q->lock), &irqL); + + phead = get_list_head(pacl_node_q); + plist = get_next(phead); + + while ((rtw_end_of_queue_search(phead, plist)) == _FALSE) + { + paclnode = LIST_CONTAINOR(plist, struct rtw_wlan_acl_node, list); + plist = get_next(plist); + + if(_rtw_memcmp(paclnode->addr, addr, ETH_ALEN)) + { + if(paclnode->valid == _TRUE) + { + paclnode->valid = _FALSE; + + rtw_list_delete(&paclnode->list); + + pacl_list->num--; + } + } + } + + _exit_critical_bh(&(pacl_node_q->lock), &irqL); + + DBG_871X("%s, acl_num=%d\n", __func__, pacl_list->num); + + return ret; + +} + +#ifdef CONFIG_NATIVEAP_MLME + +static void update_bcn_fixed_ie(_adapter *padapter) +{ + DBG_871X("%s\n", __FUNCTION__); + +} + +static void update_bcn_erpinfo_ie(_adapter *padapter) +{ + struct mlme_priv *pmlmepriv = &(padapter->mlmepriv); + struct mlme_ext_priv *pmlmeext = &(padapter->mlmeextpriv); + struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info); + WLAN_BSSID_EX *pnetwork = &(pmlmeinfo->network); + unsigned char *p, *ie = pnetwork->IEs; + u32 len = 0; + + DBG_871X("%s, ERP_enable=%d\n", __FUNCTION__, pmlmeinfo->ERP_enable); + + if(!pmlmeinfo->ERP_enable) + return; + + //parsing ERP_IE + p = rtw_get_ie(ie + _BEACON_IE_OFFSET_, _ERPINFO_IE_, &len, (pnetwork->IELength - _BEACON_IE_OFFSET_)); + if(p && len>0) + { + PNDIS_802_11_VARIABLE_IEs pIE = (PNDIS_802_11_VARIABLE_IEs)p; + + if (pmlmepriv->num_sta_non_erp == 1) + pIE->data[0] |= RTW_ERP_INFO_NON_ERP_PRESENT|RTW_ERP_INFO_USE_PROTECTION; + else + pIE->data[0] &= ~(RTW_ERP_INFO_NON_ERP_PRESENT|RTW_ERP_INFO_USE_PROTECTION); + + if(pmlmepriv->num_sta_no_short_preamble > 0) + pIE->data[0] |= RTW_ERP_INFO_BARKER_PREAMBLE_MODE; + else + pIE->data[0] &= ~(RTW_ERP_INFO_BARKER_PREAMBLE_MODE); + + ERP_IE_handler(padapter, pIE); + } + +} + +static void update_bcn_htcap_ie(_adapter *padapter) +{ + DBG_871X("%s\n", __FUNCTION__); + +} + +static void update_bcn_htinfo_ie(_adapter *padapter) +{ + DBG_871X("%s\n", __FUNCTION__); + +} + +static void update_bcn_rsn_ie(_adapter *padapter) +{ + DBG_871X("%s\n", __FUNCTION__); + +} + +static void update_bcn_wpa_ie(_adapter *padapter) +{ + DBG_871X("%s\n", __FUNCTION__); + +} + +static void update_bcn_wmm_ie(_adapter *padapter) +{ + DBG_871X("%s\n", __FUNCTION__); + +} + +static void update_bcn_wps_ie(_adapter *padapter) +{ + u8 *pwps_ie=NULL, *pwps_ie_src, *premainder_ie, *pbackup_remainder_ie=NULL; + uint wps_ielen=0, wps_offset, remainder_ielen; + struct mlme_priv *pmlmepriv = &(padapter->mlmepriv); + struct mlme_ext_priv *pmlmeext = &(padapter->mlmeextpriv); + struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info); + WLAN_BSSID_EX *pnetwork = &(pmlmeinfo->network); + unsigned char *ie = pnetwork->IEs; + u32 ielen = pnetwork->IELength; + + + DBG_871X("%s\n", __FUNCTION__); + + pwps_ie = rtw_get_wps_ie(ie+_FIXED_IE_LENGTH_, ielen-_FIXED_IE_LENGTH_, NULL, &wps_ielen); + + if(pwps_ie==NULL || wps_ielen==0) + return; + + wps_offset = (uint)(pwps_ie-ie); + + premainder_ie = pwps_ie + wps_ielen; + + remainder_ielen = ielen - wps_offset - wps_ielen; + + if(remainder_ielen>0) + { + pbackup_remainder_ie = rtw_malloc(remainder_ielen); + if(pbackup_remainder_ie) + _rtw_memcpy(pbackup_remainder_ie, premainder_ie, remainder_ielen); + } + + + pwps_ie_src = pmlmepriv->wps_beacon_ie; + if(pwps_ie_src == NULL) + return; + + + wps_ielen = (uint)pwps_ie_src[1];//to get ie data len + if((wps_offset+wps_ielen+2+remainder_ielen)<=MAX_IE_SZ) + { + _rtw_memcpy(pwps_ie, pwps_ie_src, wps_ielen+2); + pwps_ie += (wps_ielen+2); + + if(pbackup_remainder_ie) + _rtw_memcpy(pwps_ie, pbackup_remainder_ie, remainder_ielen); + + //update IELength + pnetwork->IELength = wps_offset + (wps_ielen+2) + remainder_ielen; + } + + if(pbackup_remainder_ie) + rtw_mfree(pbackup_remainder_ie, remainder_ielen); + +} + +static void update_bcn_p2p_ie(_adapter *padapter) +{ + +} + +static void update_bcn_vendor_spec_ie(_adapter *padapter, u8*oui) +{ + DBG_871X("%s\n", __FUNCTION__); + + if(_rtw_memcmp(RTW_WPA_OUI, oui, 4)) + { + update_bcn_wpa_ie(padapter); + } + else if(_rtw_memcmp(WMM_OUI, oui, 4)) + { + update_bcn_wmm_ie(padapter); + } + else if(_rtw_memcmp(WPS_OUI, oui, 4)) + { + update_bcn_wps_ie(padapter); + } + else if(_rtw_memcmp(P2P_OUI, oui, 4)) + { + update_bcn_p2p_ie(padapter); + } + else + { + DBG_871X("unknown OUI type!\n"); + } + + +} + +void update_beacon(_adapter *padapter, u8 ie_id, u8 *oui, u8 tx) +{ + _irqL irqL; + struct mlme_priv *pmlmepriv; + struct mlme_ext_priv *pmlmeext; + //struct mlme_ext_info *pmlmeinfo; + + //DBG_871X("%s\n", __FUNCTION__); + + if(!padapter) + return; + + pmlmepriv = &(padapter->mlmepriv); + pmlmeext = &(padapter->mlmeextpriv); + //pmlmeinfo = &(pmlmeext->mlmext_info); + + if(_FALSE == pmlmeext->bstart_bss) + return; + + _enter_critical_bh(&pmlmepriv->bcn_update_lock, &irqL); + + switch(ie_id) + { + case 0xFF: + + update_bcn_fixed_ie(padapter);//8: TimeStamp, 2: Beacon Interval 2:Capability + + break; + + case _TIM_IE_: + + update_BCNTIM(padapter); + + break; + + case _ERPINFO_IE_: + + update_bcn_erpinfo_ie(padapter); + + break; + + case _HT_CAPABILITY_IE_: + + update_bcn_htcap_ie(padapter); + + break; + + case _RSN_IE_2_: + + update_bcn_rsn_ie(padapter); + + break; + + case _HT_ADD_INFO_IE_: + + update_bcn_htinfo_ie(padapter); + + break; + + case _VENDOR_SPECIFIC_IE_: + + update_bcn_vendor_spec_ie(padapter, oui); + + break; + + default: + break; + } + + pmlmepriv->update_bcn = _TRUE; + + _exit_critical_bh(&pmlmepriv->bcn_update_lock, &irqL); + +#ifndef CONFIG_INTERRUPT_BASED_TXBCN +#if defined(CONFIG_USB_HCI) || defined(CONFIG_SDIO_HCI) || defined(CONFIG_GSPI_HCI) + if(tx) + { + //send_beacon(padapter);//send_beacon must execute on TSR level + set_tx_beacon_cmd(padapter); + } +#else + { + //PCI will issue beacon when BCN interrupt occurs. + } +#endif +#endif //!CONFIG_INTERRUPT_BASED_TXBCN + +} + +#ifdef CONFIG_80211N_HT + +/* +op_mode +Set to 0 (HT pure) under the followign conditions + - all STAs in the BSS are 20/40 MHz HT in 20/40 MHz BSS or + - all STAs in the BSS are 20 MHz HT in 20 MHz BSS +Set to 1 (HT non-member protection) if there may be non-HT STAs + in both the primary and the secondary channel +Set to 2 if only HT STAs are associated in BSS, + however and at least one 20 MHz HT STA is associated +Set to 3 (HT mixed mode) when one or more non-HT STAs are associated + (currently non-GF HT station is considered as non-HT STA also) +*/ +static int rtw_ht_operation_update(_adapter *padapter) +{ + u16 cur_op_mode, new_op_mode; + int op_mode_changes = 0; + struct mlme_priv *pmlmepriv = &(padapter->mlmepriv); + struct ht_priv *phtpriv_ap = &pmlmepriv->htpriv; + + if(pmlmepriv->htpriv.ht_option == _TRUE) + return 0; + + //if (!iface->conf->ieee80211n || iface->conf->ht_op_mode_fixed) + // return 0; + + DBG_871X("%s current operation mode=0x%X\n", + __FUNCTION__, pmlmepriv->ht_op_mode); + + if (!(pmlmepriv->ht_op_mode & HT_INFO_OPERATION_MODE_NON_GF_DEVS_PRESENT) + && pmlmepriv->num_sta_ht_no_gf) { + pmlmepriv->ht_op_mode |= + HT_INFO_OPERATION_MODE_NON_GF_DEVS_PRESENT; + op_mode_changes++; + } else if ((pmlmepriv->ht_op_mode & + HT_INFO_OPERATION_MODE_NON_GF_DEVS_PRESENT) && + pmlmepriv->num_sta_ht_no_gf == 0) { + pmlmepriv->ht_op_mode &= + ~HT_INFO_OPERATION_MODE_NON_GF_DEVS_PRESENT; + op_mode_changes++; + } + + if (!(pmlmepriv->ht_op_mode & HT_INFO_OPERATION_MODE_NON_HT_STA_PRESENT) && + (pmlmepriv->num_sta_no_ht || pmlmepriv->olbc_ht)) { + pmlmepriv->ht_op_mode |= HT_INFO_OPERATION_MODE_NON_HT_STA_PRESENT; + op_mode_changes++; + } else if ((pmlmepriv->ht_op_mode & + HT_INFO_OPERATION_MODE_NON_HT_STA_PRESENT) && + (pmlmepriv->num_sta_no_ht == 0 && !pmlmepriv->olbc_ht)) { + pmlmepriv->ht_op_mode &= + ~HT_INFO_OPERATION_MODE_NON_HT_STA_PRESENT; + op_mode_changes++; + } + + /* Note: currently we switch to the MIXED op mode if HT non-greenfield + * station is associated. Probably it's a theoretical case, since + * it looks like all known HT STAs support greenfield. + */ + new_op_mode = 0; + if (pmlmepriv->num_sta_no_ht || + (pmlmepriv->ht_op_mode & HT_INFO_OPERATION_MODE_NON_GF_DEVS_PRESENT)) + new_op_mode = OP_MODE_MIXED; + else if ((phtpriv_ap->ht_cap.cap_info & IEEE80211_HT_CAP_SUP_WIDTH) + && pmlmepriv->num_sta_ht_20mhz) + new_op_mode = OP_MODE_20MHZ_HT_STA_ASSOCED; + else if (pmlmepriv->olbc_ht) + new_op_mode = OP_MODE_MAY_BE_LEGACY_STAS; + else + new_op_mode = OP_MODE_PURE; + + cur_op_mode = pmlmepriv->ht_op_mode & HT_INFO_OPERATION_MODE_OP_MODE_MASK; + if (cur_op_mode != new_op_mode) { + pmlmepriv->ht_op_mode &= ~HT_INFO_OPERATION_MODE_OP_MODE_MASK; + pmlmepriv->ht_op_mode |= new_op_mode; + op_mode_changes++; + } + + DBG_871X("%s new operation mode=0x%X changes=%d\n", + __FUNCTION__, pmlmepriv->ht_op_mode, op_mode_changes); + + return op_mode_changes; + +} + +#endif /* CONFIG_80211N_HT */ + +void associated_clients_update(_adapter *padapter, u8 updated) +{ + //update associcated stations cap. + if(updated == _TRUE) + { + _irqL irqL; + _list *phead, *plist; + struct sta_info *psta=NULL; + struct sta_priv *pstapriv = &padapter->stapriv; + + _enter_critical_bh(&pstapriv->asoc_list_lock, &irqL); + + phead = &pstapriv->asoc_list; + plist = get_next(phead); + + //check asoc_queue + while ((rtw_end_of_queue_search(phead, plist)) == _FALSE) + { + psta = LIST_CONTAINOR(plist, struct sta_info, asoc_list); + + plist = get_next(plist); + + VCS_update(padapter, psta); + } + + _exit_critical_bh(&pstapriv->asoc_list_lock, &irqL); + + } + +} + +/* called > TSR LEVEL for USB or SDIO Interface*/ +void bss_cap_update_on_sta_join(_adapter *padapter, struct sta_info *psta) +{ + u8 beacon_updated = _FALSE; + struct mlme_priv *pmlmepriv = &(padapter->mlmepriv); + struct mlme_ext_priv *pmlmeext = &(padapter->mlmeextpriv); + + +#if 0 + if (!(psta->capability & WLAN_CAPABILITY_SHORT_PREAMBLE) && + !psta->no_short_preamble_set) { + psta->no_short_preamble_set = 1; + pmlmepriv->num_sta_no_short_preamble++; + if ((pmlmeext->cur_wireless_mode > WIRELESS_11B) && + (pmlmepriv->num_sta_no_short_preamble == 1)) + ieee802_11_set_beacons(hapd->iface); + } +#endif + + + if(!(psta->flags & WLAN_STA_SHORT_PREAMBLE)) + { + if(!psta->no_short_preamble_set) + { + psta->no_short_preamble_set = 1; + + pmlmepriv->num_sta_no_short_preamble++; + + if ((pmlmeext->cur_wireless_mode > WIRELESS_11B) && + (pmlmepriv->num_sta_no_short_preamble == 1)) + { + beacon_updated = _TRUE; + update_beacon(padapter, 0xFF, NULL, _TRUE); + } + + } + } + else + { + if(psta->no_short_preamble_set) + { + psta->no_short_preamble_set = 0; + + pmlmepriv->num_sta_no_short_preamble--; + + if ((pmlmeext->cur_wireless_mode > WIRELESS_11B) && + (pmlmepriv->num_sta_no_short_preamble == 0)) + { + beacon_updated = _TRUE; + update_beacon(padapter, 0xFF, NULL, _TRUE); + } + + } + } + +#if 0 + if (psta->flags & WLAN_STA_NONERP && !psta->nonerp_set) { + psta->nonerp_set = 1; + pmlmepriv->num_sta_non_erp++; + if (pmlmepriv->num_sta_non_erp == 1) + ieee802_11_set_beacons(hapd->iface); + } +#endif + + if(psta->flags & WLAN_STA_NONERP) + { + if(!psta->nonerp_set) + { + psta->nonerp_set = 1; + + pmlmepriv->num_sta_non_erp++; + + if (pmlmepriv->num_sta_non_erp == 1) + { + beacon_updated = _TRUE; + update_beacon(padapter, _ERPINFO_IE_, NULL, _TRUE); + } + } + + } + else + { + if(psta->nonerp_set) + { + psta->nonerp_set = 0; + + pmlmepriv->num_sta_non_erp--; + + if (pmlmepriv->num_sta_non_erp == 0) + { + beacon_updated = _TRUE; + update_beacon(padapter, _ERPINFO_IE_, NULL, _TRUE); + } + } + + } + + +#if 0 + if (!(psta->capability & WLAN_CAPABILITY_SHORT_SLOT) && + !psta->no_short_slot_time_set) { + psta->no_short_slot_time_set = 1; + pmlmepriv->num_sta_no_short_slot_time++; + if ((pmlmeext->cur_wireless_mode > WIRELESS_11B) && + (pmlmepriv->num_sta_no_short_slot_time == 1)) + ieee802_11_set_beacons(hapd->iface); + } +#endif + + if(!(psta->capability & WLAN_CAPABILITY_SHORT_SLOT)) + { + if(!psta->no_short_slot_time_set) + { + psta->no_short_slot_time_set = 1; + + pmlmepriv->num_sta_no_short_slot_time++; + + if ((pmlmeext->cur_wireless_mode > WIRELESS_11B) && + (pmlmepriv->num_sta_no_short_slot_time == 1)) + { + beacon_updated = _TRUE; + update_beacon(padapter, 0xFF, NULL, _TRUE); + } + + } + } + else + { + if(psta->no_short_slot_time_set) + { + psta->no_short_slot_time_set = 0; + + pmlmepriv->num_sta_no_short_slot_time--; + + if ((pmlmeext->cur_wireless_mode > WIRELESS_11B) && + (pmlmepriv->num_sta_no_short_slot_time == 0)) + { + beacon_updated = _TRUE; + update_beacon(padapter, 0xFF, NULL, _TRUE); + } + } + } + +#ifdef CONFIG_80211N_HT + + if (psta->flags & WLAN_STA_HT) + { + u16 ht_capab = le16_to_cpu(psta->htpriv.ht_cap.cap_info); + + DBG_871X("HT: STA " MAC_FMT " HT Capabilities " + "Info: 0x%04x\n", MAC_ARG(psta->hwaddr), ht_capab); + + if (psta->no_ht_set) { + psta->no_ht_set = 0; + pmlmepriv->num_sta_no_ht--; + } + + if ((ht_capab & IEEE80211_HT_CAP_GRN_FLD) == 0) { + if (!psta->no_ht_gf_set) { + psta->no_ht_gf_set = 1; + pmlmepriv->num_sta_ht_no_gf++; + } + DBG_871X("%s STA " MAC_FMT " - no " + "greenfield, num of non-gf stations %d\n", + __FUNCTION__, MAC_ARG(psta->hwaddr), + pmlmepriv->num_sta_ht_no_gf); + } + + if ((ht_capab & IEEE80211_HT_CAP_SUP_WIDTH) == 0) { + if (!psta->ht_20mhz_set) { + psta->ht_20mhz_set = 1; + pmlmepriv->num_sta_ht_20mhz++; + } + DBG_871X("%s STA " MAC_FMT " - 20 MHz HT, " + "num of 20MHz HT STAs %d\n", + __FUNCTION__, MAC_ARG(psta->hwaddr), + pmlmepriv->num_sta_ht_20mhz); + } + + } + else + { + if (!psta->no_ht_set) { + psta->no_ht_set = 1; + pmlmepriv->num_sta_no_ht++; + } + if(pmlmepriv->htpriv.ht_option == _TRUE) { + DBG_871X("%s STA " MAC_FMT + " - no HT, num of non-HT stations %d\n", + __FUNCTION__, MAC_ARG(psta->hwaddr), + pmlmepriv->num_sta_no_ht); + } + } + + if (rtw_ht_operation_update(padapter) > 0) + { + update_beacon(padapter, _HT_CAPABILITY_IE_, NULL, _FALSE); + update_beacon(padapter, _HT_ADD_INFO_IE_, NULL, _TRUE); + } + +#endif /* CONFIG_80211N_HT */ + + //update associcated stations cap. + associated_clients_update(padapter, beacon_updated); + + DBG_871X("%s, updated=%d\n", __func__, beacon_updated); + +} + +u8 bss_cap_update_on_sta_leave(_adapter *padapter, struct sta_info *psta) +{ + u8 beacon_updated = _FALSE; + struct mlme_priv *pmlmepriv = &(padapter->mlmepriv); + struct mlme_ext_priv *pmlmeext = &(padapter->mlmeextpriv); + + if(!psta) + return beacon_updated; + + if (psta->no_short_preamble_set) { + psta->no_short_preamble_set = 0; + pmlmepriv->num_sta_no_short_preamble--; + if (pmlmeext->cur_wireless_mode > WIRELESS_11B + && pmlmepriv->num_sta_no_short_preamble == 0) + { + beacon_updated = _TRUE; + update_beacon(padapter, 0xFF, NULL, _TRUE); + } + } + + if (psta->nonerp_set) { + psta->nonerp_set = 0; + pmlmepriv->num_sta_non_erp--; + if (pmlmepriv->num_sta_non_erp == 0) + { + beacon_updated = _TRUE; + update_beacon(padapter, _ERPINFO_IE_, NULL, _TRUE); + } + } + + if (psta->no_short_slot_time_set) { + psta->no_short_slot_time_set = 0; + pmlmepriv->num_sta_no_short_slot_time--; + if (pmlmeext->cur_wireless_mode > WIRELESS_11B + && pmlmepriv->num_sta_no_short_slot_time == 0) + { + beacon_updated = _TRUE; + update_beacon(padapter, 0xFF, NULL, _TRUE); + } + } + +#ifdef CONFIG_80211N_HT + + if (psta->no_ht_gf_set) { + psta->no_ht_gf_set = 0; + pmlmepriv->num_sta_ht_no_gf--; + } + + if (psta->no_ht_set) { + psta->no_ht_set = 0; + pmlmepriv->num_sta_no_ht--; + } + + if (psta->ht_20mhz_set) { + psta->ht_20mhz_set = 0; + pmlmepriv->num_sta_ht_20mhz--; + } + + if (rtw_ht_operation_update(padapter) > 0) + { + update_beacon(padapter, _HT_CAPABILITY_IE_, NULL, _FALSE); + update_beacon(padapter, _HT_ADD_INFO_IE_, NULL, _TRUE); + } + +#endif /* CONFIG_80211N_HT */ + + //update associcated stations cap. + //associated_clients_update(padapter, beacon_updated); //move it to avoid deadlock + + DBG_871X("%s, updated=%d\n", __func__, beacon_updated); + + return beacon_updated; + +} + +u8 ap_free_sta(_adapter *padapter, struct sta_info *psta, bool active, u16 reason) +{ + _irqL irqL; + u8 beacon_updated = _FALSE; + struct mlme_priv *pmlmepriv = &(padapter->mlmepriv); + struct mlme_ext_priv *pmlmeext = &(padapter->mlmeextpriv); + struct sta_priv *pstapriv = &padapter->stapriv; + + if(!psta) + return beacon_updated; + + if (active == _TRUE) + { +#ifdef CONFIG_80211N_HT + //tear down Rx AMPDU + send_delba(padapter, 0, psta->hwaddr);// recipient + + //tear down TX AMPDU + send_delba(padapter, 1, psta->hwaddr);// // originator + +#endif //CONFIG_80211N_HT + + issue_deauth(padapter, psta->hwaddr, reason); + } + + psta->htpriv.agg_enable_bitmap = 0x0;//reset + psta->htpriv.candidate_tid_bitmap = 0x0;//reset + + + //report_del_sta_event(padapter, psta->hwaddr, reason); + + //clear cam entry / key + //clear_cam_entry(padapter, (psta->mac_id + 3)); + rtw_clearstakey_cmd(padapter, (u8*)psta, (u8)(psta->mac_id + 3), _TRUE); + + + _enter_critical_bh(&psta->lock, &irqL); + psta->state &= ~_FW_LINKED; + _exit_critical_bh(&psta->lock, &irqL); + + #ifdef CONFIG_IOCTL_CFG80211 + if (1) { + #ifdef COMPAT_KERNEL_RELEASE + rtw_cfg80211_indicate_sta_disassoc(padapter, psta->hwaddr, reason); + #elif (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,37)) && !defined(CONFIG_CFG80211_FORCE_COMPATIBLE_2_6_37_UNDER) + rtw_cfg80211_indicate_sta_disassoc(padapter, psta->hwaddr, reason); + #else //(LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,37)) && !defined(CONFIG_CFG80211_FORCE_COMPATIBLE_2_6_37_UNDER) + /* will call rtw_cfg80211_indicate_sta_disassoc() in cmd_thread for old API context */ + #endif //(LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,37)) && !defined(CONFIG_CFG80211_FORCE_COMPATIBLE_2_6_37_UNDER) + } else + #endif //CONFIG_IOCTL_CFG80211 + { + rtw_indicate_sta_disassoc_event(padapter, psta); + } + + report_del_sta_event(padapter, psta->hwaddr, reason); + + beacon_updated = bss_cap_update_on_sta_leave(padapter, psta); + + _enter_critical_bh(&(pstapriv->sta_hash_lock), &irqL); + rtw_free_stainfo(padapter, psta); + _exit_critical_bh(&(pstapriv->sta_hash_lock), &irqL); + + + return beacon_updated; + +} + +int rtw_ap_inform_ch_switch(_adapter *padapter, u8 new_ch, u8 ch_offset) +{ + _irqL irqL; + _list *phead, *plist; + int ret=0; + struct sta_info *psta = NULL; + struct sta_priv *pstapriv = &padapter->stapriv; + struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; + struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info); + u8 bc_addr[ETH_ALEN] = {0xff,0xff,0xff,0xff,0xff,0xff}; + + if((pmlmeinfo->state&0x03) != WIFI_FW_AP_STATE) + return ret; + + DBG_871X(FUNC_NDEV_FMT" with ch:%u, offset:%u\n", + FUNC_NDEV_ARG(padapter->pnetdev), new_ch, ch_offset); + + _enter_critical_bh(&pstapriv->asoc_list_lock, &irqL); + phead = &pstapriv->asoc_list; + plist = get_next(phead); + + /* for each sta in asoc_queue */ + while ((rtw_end_of_queue_search(phead, plist)) == _FALSE) + { + psta = LIST_CONTAINOR(plist, struct sta_info, asoc_list); + plist = get_next(plist); + + issue_action_spct_ch_switch(padapter, psta->hwaddr, new_ch, ch_offset); + psta->expire_to = ((pstapriv->expire_to * 2) > 5) ? 5 : (pstapriv->expire_to * 2); + } + _exit_critical_bh(&pstapriv->asoc_list_lock, &irqL); + + issue_action_spct_ch_switch(padapter, bc_addr, new_ch, ch_offset); + + return ret; +} + +int rtw_sta_flush(_adapter *padapter) +{ + _irqL irqL; + _list *phead, *plist; + int ret=0; + struct sta_info *psta = NULL; + struct sta_priv *pstapriv = &padapter->stapriv; + struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; + struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info); + u8 bc_addr[ETH_ALEN] = {0xff,0xff,0xff,0xff,0xff,0xff}; + u8 chk_alive_num = 0; + char chk_alive_list[NUM_STA]; + int i; + + DBG_871X(FUNC_NDEV_FMT"\n", FUNC_NDEV_ARG(padapter->pnetdev)); + + if((pmlmeinfo->state&0x03) != WIFI_FW_AP_STATE) + return ret; + + _enter_critical_bh(&pstapriv->asoc_list_lock, &irqL); + phead = &pstapriv->asoc_list; + plist = get_next(phead); + + while ((rtw_end_of_queue_search(phead, plist)) == _FALSE) { + int stainfo_offset; + + psta = LIST_CONTAINOR(plist, struct sta_info, asoc_list); + plist = get_next(plist); + + /* Remove sta from asoc_list */ + rtw_list_delete(&psta->asoc_list); + pstapriv->asoc_list_cnt--; + + /* Keep sta for ap_free_sta() beyond this asoc_list loop */ + stainfo_offset = rtw_stainfo_offset(pstapriv, psta); + if (stainfo_offset_valid(stainfo_offset)) { + chk_alive_list[chk_alive_num++] = stainfo_offset; + } + } + _exit_critical_bh(&pstapriv->asoc_list_lock, &irqL); + + + /* For each sta in chk_alive_list, call ap_free_sta */ + for (i = 0; i < chk_alive_num; i++) { + psta = rtw_get_stainfo_by_offset(pstapriv, chk_alive_list[i]); + ap_free_sta(padapter, psta, _TRUE, WLAN_REASON_DEAUTH_LEAVING); + } + + issue_deauth(padapter, bc_addr, WLAN_REASON_DEAUTH_LEAVING); + + associated_clients_update(padapter, _TRUE); + + return ret; + +} + +/* called > TSR LEVEL for USB or SDIO Interface*/ +void sta_info_update(_adapter *padapter, struct sta_info *psta) +{ + int flags = psta->flags; + struct mlme_priv *pmlmepriv = &(padapter->mlmepriv); + + + //update wmm cap. + if(WLAN_STA_WME&flags) + psta->qos_option = 1; + else + psta->qos_option = 0; + + if(pmlmepriv->qospriv.qos_option == 0) + psta->qos_option = 0; + + +#ifdef CONFIG_80211N_HT + //update 802.11n ht cap. + if(WLAN_STA_HT&flags) + { + psta->htpriv.ht_option = _TRUE; + psta->qos_option = 1; + } + else + { + psta->htpriv.ht_option = _FALSE; + } + + if(pmlmepriv->htpriv.ht_option == _FALSE) + psta->htpriv.ht_option = _FALSE; +#endif + + + update_sta_info_apmode(padapter, psta); + + +} + +/* called >= TSR LEVEL for USB or SDIO Interface*/ +void ap_sta_info_defer_update(_adapter *padapter, struct sta_info *psta) +{ + if(psta->state & _FW_LINKED) + { + //add ratid + add_RATid(padapter, psta); + } +} + +/* restore hw setting from sw data structures */ +void rtw_ap_restore_network(_adapter *padapter) +{ + struct mlme_priv *mlmepriv = &padapter->mlmepriv; + struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; + struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info); + struct sta_priv * pstapriv = &padapter->stapriv; + struct sta_info *psta; + struct security_priv* psecuritypriv=&(padapter->securitypriv); + _irqL irqL; + _list *phead, *plist; + u8 chk_alive_num = 0; + char chk_alive_list[NUM_STA]; + int i; + + rtw_setopmode_cmd(padapter, Ndis802_11APMode); + + set_channel_bwmode(padapter, pmlmeext->cur_channel, pmlmeext->cur_ch_offset, pmlmeext->cur_bwmode); + + start_bss_network(padapter, (u8*)&mlmepriv->cur_network.network); + + if((padapter->securitypriv.dot11PrivacyAlgrthm == _TKIP_) || + (padapter->securitypriv.dot11PrivacyAlgrthm == _AES_)) + { + /* restore group key, WEP keys is restored in ips_leave() */ + rtw_set_key(padapter, psecuritypriv, psecuritypriv->dot118021XGrpKeyid, 0); + } + + /* per sta pairwise key and settings */ + if((padapter->securitypriv.dot11PrivacyAlgrthm != _TKIP_) && + (padapter->securitypriv.dot11PrivacyAlgrthm != _AES_)) { + return; + } + + _enter_critical_bh(&pstapriv->asoc_list_lock, &irqL); + + phead = &pstapriv->asoc_list; + plist = get_next(phead); + + while ((rtw_end_of_queue_search(phead, plist)) == _FALSE) { + int stainfo_offset; + + psta = LIST_CONTAINOR(plist, struct sta_info, asoc_list); + plist = get_next(plist); + + stainfo_offset = rtw_stainfo_offset(pstapriv, psta); + if (stainfo_offset_valid(stainfo_offset)) { + chk_alive_list[chk_alive_num++] = stainfo_offset; + } + } + + _exit_critical_bh(&pstapriv->asoc_list_lock, &irqL); + + for (i = 0; i < chk_alive_num; i++) { + psta = rtw_get_stainfo_by_offset(pstapriv, chk_alive_list[i]); + + if (psta == NULL) { + DBG_871X(FUNC_ADPT_FMT" sta_info is null\n", FUNC_ADPT_ARG(padapter)); + } else if (psta->state &_FW_LINKED) { + Update_RA_Entry(padapter, psta->mac_id); + //pairwise key + rtw_setstakey_cmd(padapter, (unsigned char *)psta, _TRUE); + } + } + +} + +void start_ap_mode(_adapter *padapter) +{ + int i; + struct mlme_priv *pmlmepriv = &(padapter->mlmepriv); + struct sta_priv *pstapriv = &padapter->stapriv; + struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; + struct wlan_acl_pool *pacl_list = &pstapriv->acl_list; + + pmlmepriv->update_bcn = _FALSE; + + //init_mlme_ap_info(padapter); + pmlmeext->bstart_bss = _FALSE; + + pmlmepriv->num_sta_non_erp = 0; + + pmlmepriv->num_sta_no_short_slot_time = 0; + + pmlmepriv->num_sta_no_short_preamble = 0; + + pmlmepriv->num_sta_ht_no_gf = 0; + + pmlmepriv->num_sta_no_ht = 0; + + pmlmepriv->num_sta_ht_20mhz = 0; + + pmlmepriv->olbc = _FALSE; + + pmlmepriv->olbc_ht = _FALSE; + +#ifdef CONFIG_80211N_HT + pmlmepriv->ht_op_mode = 0; +#endif + + for(i=0; ista_aid[i] = NULL; + + pmlmepriv->wps_beacon_ie = NULL; + pmlmepriv->wps_probe_resp_ie = NULL; + pmlmepriv->wps_assoc_resp_ie = NULL; + + pmlmepriv->p2p_beacon_ie = NULL; + pmlmepriv->p2p_probe_resp_ie = NULL; + + + //for ACL + _rtw_init_listhead(&(pacl_list->acl_node_q.queue)); + pacl_list->num = 0; + pacl_list->mode = 0; + for(i = 0; i < NUM_ACL; i++) + { + _rtw_init_listhead(&pacl_list->aclnode[i].list); + pacl_list->aclnode[i].valid = _FALSE; + } + +} + +void stop_ap_mode(_adapter *padapter) +{ + _irqL irqL; + _list *phead, *plist; + struct rtw_wlan_acl_node *paclnode; + struct sta_info *psta=NULL; + struct sta_priv *pstapriv = &padapter->stapriv; + struct mlme_priv *pmlmepriv = &(padapter->mlmepriv); + struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; + struct wlan_acl_pool *pacl_list = &pstapriv->acl_list; + _queue *pacl_node_q =&pacl_list->acl_node_q; + + pmlmepriv->update_bcn = _FALSE; + pmlmeext->bstart_bss = _FALSE; + //_rtw_spinlock_free(&pmlmepriv->bcn_update_lock); + + //reset and init security priv , this can refine with rtw_reset_securitypriv + _rtw_memset((unsigned char *)&padapter->securitypriv, 0, sizeof (struct security_priv)); + padapter->securitypriv.ndisauthtype = Ndis802_11AuthModeOpen; + padapter->securitypriv.ndisencryptstatus = Ndis802_11WEPDisabled; + + //for ACL + _enter_critical_bh(&(pacl_node_q->lock), &irqL); + phead = get_list_head(pacl_node_q); + plist = get_next(phead); + while ((rtw_end_of_queue_search(phead, plist)) == _FALSE) + { + paclnode = LIST_CONTAINOR(plist, struct rtw_wlan_acl_node, list); + plist = get_next(plist); + + if(paclnode->valid == _TRUE) + { + paclnode->valid = _FALSE; + + rtw_list_delete(&paclnode->list); + + pacl_list->num--; + } + } + _exit_critical_bh(&(pacl_node_q->lock), &irqL); + + DBG_871X("%s, free acl_node_queue, num=%d\n", __func__, pacl_list->num); + + rtw_sta_flush(padapter); + + //free_assoc_sta_resources + rtw_free_all_stainfo(padapter); + + psta = rtw_get_bcmc_stainfo(padapter); + _enter_critical_bh(&(pstapriv->sta_hash_lock), &irqL); + rtw_free_stainfo(padapter, psta); + _exit_critical_bh(&(pstapriv->sta_hash_lock), &irqL); + + rtw_init_bcmc_stainfo(padapter); + + rtw_free_mlme_priv_ie_data(pmlmepriv); + +} + +#endif //CONFIG_NATIVEAP_MLME +#endif //CONFIG_AP_MODE --- linux-raspi2-4.2.0.orig/drivers/net/wireless/rtl8192cu/core/rtw_br_ext.c +++ linux-raspi2-4.2.0/drivers/net/wireless/rtl8192cu/core/rtw_br_ext.c @@ -0,0 +1,1699 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved. + * + * 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 + * published by the Free Software Foundation. + * + * 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 Street, Fifth Floor, Boston, MA 02110, USA + * + * + ******************************************************************************/ +#define _RTW_BR_EXT_C_ + +#ifdef __KERNEL__ +#include +#include +#include +#include +#include +#include +#endif + +#if 1 // rtw_wifi_driver +#include +#include +#include "rtw_br_ext.h" +#else // rtw_wifi_driver +#include "./8192cd_cfg.h" + +#ifndef __KERNEL__ +#include "./sys-support.h" +#endif + +#include "./8192cd.h" +#include "./8192cd_headers.h" +#include "./8192cd_br_ext.h" +#include "./8192cd_debug.h" +#endif // rtw_wifi_driver + +#ifdef CL_IPV6_PASS +#ifdef __KERNEL__ +#include +#include +#include +#include +#endif +#endif + +#ifdef CONFIG_BR_EXT + +//#define BR_EXT_DEBUG + +#define NAT25_IPV4 01 +#define NAT25_IPV6 02 +#define NAT25_IPX 03 +#define NAT25_APPLE 04 +#define NAT25_PPPOE 05 + +#define RTL_RELAY_TAG_LEN (ETH_ALEN) +#define TAG_HDR_LEN 4 + +#define MAGIC_CODE 0x8186 +#define MAGIC_CODE_LEN 2 +#define WAIT_TIME_PPPOE 5 // waiting time for pppoe server in sec + +/*----------------------------------------------------------------- + How database records network address: + 0 1 2 3 4 5 6 7 8 9 10 + |----|----|----|----|----|----|----|----|----|----|----| + IPv4 |type| | IP addr | + IPX |type| Net addr | Node addr | + IPX |type| Net addr |Sckt addr| + Apple |type| Network |node| + PPPoE |type| SID | AC MAC | +-----------------------------------------------------------------*/ + + +//Find a tag in pppoe frame and return the pointer +static __inline__ unsigned char *__nat25_find_pppoe_tag(struct pppoe_hdr *ph, unsigned short type) +{ + unsigned char *cur_ptr, *start_ptr; + unsigned short tagLen, tagType; + + start_ptr = cur_ptr = (unsigned char *)ph->tag; + while((cur_ptr - start_ptr) < ntohs(ph->length)) { + // prevent un-alignment access + tagType = (unsigned short)((cur_ptr[0] << 8) + cur_ptr[1]); + tagLen = (unsigned short)((cur_ptr[2] << 8) + cur_ptr[3]); + if(tagType == type) + return cur_ptr; + cur_ptr = cur_ptr + TAG_HDR_LEN + tagLen; + } + return 0; +} + + +static __inline__ int __nat25_add_pppoe_tag(struct sk_buff *skb, struct pppoe_tag *tag) +{ + struct pppoe_hdr *ph = (struct pppoe_hdr *)(skb->data + ETH_HLEN); + int data_len; + + data_len = tag->tag_len + TAG_HDR_LEN; + if (skb_tailroom(skb) < data_len) { + _DEBUG_ERR("skb_tailroom() failed in add SID tag!\n"); + return -1; + } + + skb_put(skb, data_len); + // have a room for new tag + memmove(((unsigned char *)ph->tag + data_len), (unsigned char *)ph->tag, ntohs(ph->length)); + ph->length = htons(ntohs(ph->length) + data_len); + memcpy((unsigned char *)ph->tag, tag, data_len); + return data_len; +} + +static int skb_pull_and_merge(struct sk_buff *skb, unsigned char *src, int len) +{ + int tail_len; + unsigned long end, tail; + + if ((src+len) > skb_tail_pointer(skb) || skb->len < len) + return -1; + + tail = (unsigned long)skb_tail_pointer(skb); + end = (unsigned long)src+len; + if (tail < end) + return -1; + + tail_len = (int)(tail-end); + if (tail_len > 0) + memmove(src, src+len, tail_len); + + skb_trim(skb, skb->len-len); + return 0; +} + +static __inline__ unsigned long __nat25_timeout(_adapter *priv) +{ + unsigned long timeout; + + timeout = jiffies - NAT25_AGEING_TIME*HZ; + + return timeout; +} + + +static __inline__ int __nat25_has_expired(_adapter *priv, + struct nat25_network_db_entry *fdb) +{ + if(time_before_eq(fdb->ageing_timer, __nat25_timeout(priv))) + return 1; + + return 0; +} + + +static __inline__ void __nat25_generate_ipv4_network_addr(unsigned char *networkAddr, + unsigned int *ipAddr) +{ + memset(networkAddr, 0, MAX_NETWORK_ADDR_LEN); + + networkAddr[0] = NAT25_IPV4; + memcpy(networkAddr+7, (unsigned char *)ipAddr, 4); +} + + +static __inline__ void __nat25_generate_ipx_network_addr_with_node(unsigned char *networkAddr, + unsigned int *ipxNetAddr, unsigned char *ipxNodeAddr) +{ + memset(networkAddr, 0, MAX_NETWORK_ADDR_LEN); + + networkAddr[0] = NAT25_IPX; + memcpy(networkAddr+1, (unsigned char *)ipxNetAddr, 4); + memcpy(networkAddr+5, ipxNodeAddr, 6); +} + + +static __inline__ void __nat25_generate_ipx_network_addr_with_socket(unsigned char *networkAddr, + unsigned int *ipxNetAddr, unsigned short *ipxSocketAddr) +{ + memset(networkAddr, 0, MAX_NETWORK_ADDR_LEN); + + networkAddr[0] = NAT25_IPX; + memcpy(networkAddr+1, (unsigned char *)ipxNetAddr, 4); + memcpy(networkAddr+5, (unsigned char *)ipxSocketAddr, 2); +} + + +static __inline__ void __nat25_generate_apple_network_addr(unsigned char *networkAddr, + unsigned short *network, unsigned char *node) +{ + memset(networkAddr, 0, MAX_NETWORK_ADDR_LEN); + + networkAddr[0] = NAT25_APPLE; + memcpy(networkAddr+1, (unsigned char *)network, 2); + networkAddr[3] = *node; +} + + +static __inline__ void __nat25_generate_pppoe_network_addr(unsigned char *networkAddr, + unsigned char *ac_mac, unsigned short *sid) +{ + memset(networkAddr, 0, MAX_NETWORK_ADDR_LEN); + + networkAddr[0] = NAT25_PPPOE; + memcpy(networkAddr+1, (unsigned char *)sid, 2); + memcpy(networkAddr+3, (unsigned char *)ac_mac, 6); +} + + +#ifdef CL_IPV6_PASS +static void __nat25_generate_ipv6_network_addr(unsigned char *networkAddr, + unsigned int *ipAddr) +{ + memset(networkAddr, 0, MAX_NETWORK_ADDR_LEN); + + networkAddr[0] = NAT25_IPV6; + memcpy(networkAddr+1, (unsigned char *)ipAddr, 16); +} + + +static unsigned char *scan_tlv(unsigned char *data, int len, unsigned char tag, unsigned char len8b) +{ + while (len > 0) { + if (*data == tag && *(data+1) == len8b && len >= len8b*8) + return data+2; + + len -= (*(data+1))*8; + data += (*(data+1))*8; + } + return NULL; +} + + +static int update_nd_link_layer_addr(unsigned char *data, int len, unsigned char *replace_mac) +{ + struct icmp6hdr *icmphdr = (struct icmp6hdr *)data; + unsigned char *mac; + + if (icmphdr->icmp6_type == NDISC_ROUTER_SOLICITATION) { + if (len >= 8) { + mac = scan_tlv(&data[8], len-8, 1, 1); + if (mac) { + _DEBUG_INFO("Router Solicitation, replace MAC From: %02x:%02x:%02x:%02x:%02x:%02x, To: %02x:%02x:%02x:%02x:%02x:%02x\n", + mac[0],mac[1],mac[2],mac[3],mac[4],mac[5], + replace_mac[0],replace_mac[1],replace_mac[2],replace_mac[3],replace_mac[4],replace_mac[5]); + memcpy(mac, replace_mac, 6); + return 1; + } + } + } + else if (icmphdr->icmp6_type == NDISC_ROUTER_ADVERTISEMENT) { + if (len >= 16) { + mac = scan_tlv(&data[16], len-16, 1, 1); + if (mac) { + _DEBUG_INFO("Router Advertisement, replace MAC From: %02x:%02x:%02x:%02x:%02x:%02x, To: %02x:%02x:%02x:%02x:%02x:%02x\n", + mac[0],mac[1],mac[2],mac[3],mac[4],mac[5], + replace_mac[0],replace_mac[1],replace_mac[2],replace_mac[3],replace_mac[4],replace_mac[5]); + memcpy(mac, replace_mac, 6); + return 1; + } + } + } + else if (icmphdr->icmp6_type == NDISC_NEIGHBOUR_SOLICITATION) { + if (len >= 24) { + mac = scan_tlv(&data[24], len-24, 1, 1); + if (mac) { + _DEBUG_INFO("Neighbor Solicitation, replace MAC From: %02x:%02x:%02x:%02x:%02x:%02x, To: %02x:%02x:%02x:%02x:%02x:%02x\n", + mac[0],mac[1],mac[2],mac[3],mac[4],mac[5], + replace_mac[0],replace_mac[1],replace_mac[2],replace_mac[3],replace_mac[4],replace_mac[5]); + memcpy(mac, replace_mac, 6); + return 1; + } + } + } + else if (icmphdr->icmp6_type == NDISC_NEIGHBOUR_ADVERTISEMENT) { + if (len >= 24) { + mac = scan_tlv(&data[24], len-24, 2, 1); + if (mac) { + _DEBUG_INFO("Neighbor Advertisement, replace MAC From: %02x:%02x:%02x:%02x:%02x:%02x, To: %02x:%02x:%02x:%02x:%02x:%02x\n", + mac[0],mac[1],mac[2],mac[3],mac[4],mac[5], + replace_mac[0],replace_mac[1],replace_mac[2],replace_mac[3],replace_mac[4],replace_mac[5]); + memcpy(mac, replace_mac, 6); + return 1; + } + } + } + else if (icmphdr->icmp6_type == NDISC_REDIRECT) { + if (len >= 40) { + mac = scan_tlv(&data[40], len-40, 2, 1); + if (mac) { + _DEBUG_INFO("Redirect, replace MAC From: %02x:%02x:%02x:%02x:%02x:%02x, To: %02x:%02x:%02x:%02x:%02x:%02x\n", + mac[0],mac[1],mac[2],mac[3],mac[4],mac[5], + replace_mac[0],replace_mac[1],replace_mac[2],replace_mac[3],replace_mac[4],replace_mac[5]); + memcpy(mac, replace_mac, 6); + return 1; + } + } + } + return 0; +} + + +static void convert_ipv6_mac_to_mc(struct sk_buff *skb) +{ + struct ipv6hdr *iph = (struct ipv6hdr *)(skb->data + ETH_HLEN); + unsigned char *dst_mac = skb->data; + + //dst_mac[0] = 0xff; + //dst_mac[1] = 0xff; + /*modified by qinjunjie,ipv6 multicast address ix 0x33-33-xx-xx-xx-xx*/ + dst_mac[0] = 0x33; + dst_mac[1] = 0x33; + memcpy(&dst_mac[2], &iph->daddr.s6_addr32[3], 4); + #if defined(__LINUX_2_6__) + /*modified by qinjunjie,warning:should not remove next line*/ + skb->pkt_type = PACKET_MULTICAST; + #endif +} +#endif /* CL_IPV6_PASS */ + + +static __inline__ int __nat25_network_hash(unsigned char *networkAddr) +{ + if(networkAddr[0] == NAT25_IPV4) + { + unsigned long x; + + x = networkAddr[7] ^ networkAddr[8] ^ networkAddr[9] ^ networkAddr[10]; + + return x & (NAT25_HASH_SIZE - 1); + } + else if(networkAddr[0] == NAT25_IPX) + { + unsigned long x; + + x = networkAddr[1] ^ networkAddr[2] ^ networkAddr[3] ^ networkAddr[4] ^ networkAddr[5] ^ + networkAddr[6] ^ networkAddr[7] ^ networkAddr[8] ^ networkAddr[9] ^ networkAddr[10]; + + return x & (NAT25_HASH_SIZE - 1); + } + else if(networkAddr[0] == NAT25_APPLE) + { + unsigned long x; + + x = networkAddr[1] ^ networkAddr[2] ^ networkAddr[3]; + + return x & (NAT25_HASH_SIZE - 1); + } + else if(networkAddr[0] == NAT25_PPPOE) + { + unsigned long x; + + x = networkAddr[0] ^ networkAddr[1] ^ networkAddr[2] ^ networkAddr[3] ^ networkAddr[4] ^ networkAddr[5] ^ networkAddr[6] ^ networkAddr[7] ^ networkAddr[8]; + + return x & (NAT25_HASH_SIZE - 1); + } +#ifdef CL_IPV6_PASS + else if(networkAddr[0] == NAT25_IPV6) + { + unsigned long x; + + x = networkAddr[1] ^ networkAddr[2] ^ networkAddr[3] ^ networkAddr[4] ^ networkAddr[5] ^ + networkAddr[6] ^ networkAddr[7] ^ networkAddr[8] ^ networkAddr[9] ^ networkAddr[10] ^ + networkAddr[11] ^ networkAddr[12] ^ networkAddr[13] ^ networkAddr[14] ^ networkAddr[15] ^ + networkAddr[16]; + + return x & (NAT25_HASH_SIZE - 1); + } +#endif + else + { + unsigned long x = 0; + int i; + + for (i=0; ibr_ext_lock, &irqL); + + ent->next_hash = priv->nethash[hash]; + if(ent->next_hash != NULL) + ent->next_hash->pprev_hash = &ent->next_hash; + priv->nethash[hash] = ent; + ent->pprev_hash = &priv->nethash[hash]; + + //_exit_critical_bh(&priv->br_ext_lock, &irqL); +} + + +static __inline__ void __network_hash_unlink(struct nat25_network_db_entry *ent) +{ + // Caller must _enter_critical_bh already! + //_irqL irqL; + //_enter_critical_bh(&priv->br_ext_lock, &irqL); + + *(ent->pprev_hash) = ent->next_hash; + if(ent->next_hash != NULL) + ent->next_hash->pprev_hash = ent->pprev_hash; + ent->next_hash = NULL; + ent->pprev_hash = NULL; + + //_exit_critical_bh(&priv->br_ext_lock, &irqL); +} + + +static int __nat25_db_network_lookup_and_replace(_adapter *priv, + struct sk_buff *skb, unsigned char *networkAddr) +{ + struct nat25_network_db_entry *db; + _irqL irqL; + _enter_critical_bh(&priv->br_ext_lock, &irqL); + + db = priv->nethash[__nat25_network_hash(networkAddr)]; + while (db != NULL) + { + if(!memcmp(db->networkAddr, networkAddr, MAX_NETWORK_ADDR_LEN)) + { + if(!__nat25_has_expired(priv, db)) + { + // replace the destination mac address + memcpy(skb->data, db->macAddr, ETH_ALEN); + atomic_inc(&db->use_count); + +#ifdef CL_IPV6_PASS + DEBUG_INFO("NAT25: Lookup M:%02x%02x%02x%02x%02x%02x N:%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x" + "%02x%02x%02x%02x%02x%02x\n", + db->macAddr[0], + db->macAddr[1], + db->macAddr[2], + db->macAddr[3], + db->macAddr[4], + db->macAddr[5], + db->networkAddr[0], + db->networkAddr[1], + db->networkAddr[2], + db->networkAddr[3], + db->networkAddr[4], + db->networkAddr[5], + db->networkAddr[6], + db->networkAddr[7], + db->networkAddr[8], + db->networkAddr[9], + db->networkAddr[10], + db->networkAddr[11], + db->networkAddr[12], + db->networkAddr[13], + db->networkAddr[14], + db->networkAddr[15], + db->networkAddr[16]); +#else + DEBUG_INFO("NAT25: Lookup M:%02x%02x%02x%02x%02x%02x N:%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x\n", + db->macAddr[0], + db->macAddr[1], + db->macAddr[2], + db->macAddr[3], + db->macAddr[4], + db->macAddr[5], + db->networkAddr[0], + db->networkAddr[1], + db->networkAddr[2], + db->networkAddr[3], + db->networkAddr[4], + db->networkAddr[5], + db->networkAddr[6], + db->networkAddr[7], + db->networkAddr[8], + db->networkAddr[9], + db->networkAddr[10]); +#endif + } + _exit_critical_bh(&priv->br_ext_lock, &irqL); + return 1; + } + + db = db->next_hash; + } + + _exit_critical_bh(&priv->br_ext_lock, &irqL); + return 0; +} + + +static void __nat25_db_network_insert(_adapter *priv, + unsigned char *macAddr, unsigned char *networkAddr) +{ + struct nat25_network_db_entry *db; + int hash; + _irqL irqL; + _enter_critical_bh(&priv->br_ext_lock, &irqL); + + hash = __nat25_network_hash(networkAddr); + db = priv->nethash[hash]; + while (db != NULL) + { + if(!memcmp(db->networkAddr, networkAddr, MAX_NETWORK_ADDR_LEN)) + { + memcpy(db->macAddr, macAddr, ETH_ALEN); + db->ageing_timer = jiffies; + _exit_critical_bh(&priv->br_ext_lock, &irqL); + return; + } + + db = db->next_hash; + } + + db = (struct nat25_network_db_entry *) rtw_malloc(sizeof(*db)); + if(db == NULL) { + _exit_critical_bh(&priv->br_ext_lock, &irqL); + return; + } + + memcpy(db->networkAddr, networkAddr, MAX_NETWORK_ADDR_LEN); + memcpy(db->macAddr, macAddr, ETH_ALEN); + atomic_set(&db->use_count, 1); + db->ageing_timer = jiffies; + + __network_hash_link(priv, db, hash); + + _exit_critical_bh(&priv->br_ext_lock, &irqL); +} + + +static void __nat25_db_print(_adapter *priv) +{ + _irqL irqL; + _enter_critical_bh(&priv->br_ext_lock, &irqL); + +#ifdef BR_EXT_DEBUG + static int counter = 0; + int i, j; + struct nat25_network_db_entry *db; + + counter++; + if((counter % 16) != 0) + return; + + for(i=0, j=0; inethash[i]; + + while (db != NULL) + { +#ifdef CL_IPV6_PASS + panic_printk("NAT25: DB(%d) H(%02d) C(%d) M:%02x%02x%02x%02x%02x%02x N:%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x" + "%02x%02x%02x%02x%02x%02x\n", + j, + i, + atomic_read(&db->use_count), + db->macAddr[0], + db->macAddr[1], + db->macAddr[2], + db->macAddr[3], + db->macAddr[4], + db->macAddr[5], + db->networkAddr[0], + db->networkAddr[1], + db->networkAddr[2], + db->networkAddr[3], + db->networkAddr[4], + db->networkAddr[5], + db->networkAddr[6], + db->networkAddr[7], + db->networkAddr[8], + db->networkAddr[9], + db->networkAddr[10], + db->networkAddr[11], + db->networkAddr[12], + db->networkAddr[13], + db->networkAddr[14], + db->networkAddr[15], + db->networkAddr[16]); +#else + panic_printk("NAT25: DB(%d) H(%02d) C(%d) M:%02x%02x%02x%02x%02x%02x N:%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x\n", + j, + i, + atomic_read(&db->use_count), + db->macAddr[0], + db->macAddr[1], + db->macAddr[2], + db->macAddr[3], + db->macAddr[4], + db->macAddr[5], + db->networkAddr[0], + db->networkAddr[1], + db->networkAddr[2], + db->networkAddr[3], + db->networkAddr[4], + db->networkAddr[5], + db->networkAddr[6], + db->networkAddr[7], + db->networkAddr[8], + db->networkAddr[9], + db->networkAddr[10]); +#endif + j++; + + db = db->next_hash; + } + } +#endif + + _exit_critical_bh(&priv->br_ext_lock, &irqL); +} + + + + +/* + * NAT2.5 interface + */ + +void nat25_db_cleanup(_adapter *priv) +{ + int i; + _irqL irqL; + _enter_critical_bh(&priv->br_ext_lock, &irqL); + + for(i=0; inethash[i]; + while (f != NULL) { + struct nat25_network_db_entry *g; + + g = f->next_hash; + if(priv->scdb_entry == f) + { + memset(priv->scdb_mac, 0, ETH_ALEN); + memset(priv->scdb_ip, 0, 4); + priv->scdb_entry = NULL; + } + __network_hash_unlink(f); + rtw_mfree((u8 *) f, sizeof(struct nat25_network_db_entry)); + + f = g; + } + } + + _exit_critical_bh(&priv->br_ext_lock, &irqL); +} + + +void nat25_db_expire(_adapter *priv) +{ + int i; + _irqL irqL; + _enter_critical_bh(&priv->br_ext_lock, &irqL); + + //if(!priv->ethBrExtInfo.nat25_disable) + { + for (i=0; inethash[i]; + + while (f != NULL) + { + struct nat25_network_db_entry *g; + g = f->next_hash; + + if(__nat25_has_expired(priv, f)) + { + if(atomic_dec_and_test(&f->use_count)) + { +#ifdef BR_EXT_DEBUG +#ifdef CL_IPV6_PASS + panic_printk("NAT25 Expire H(%02d) M:%02x%02x%02x%02x%02x%02x N:%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x" + "%02x%02x%02x%02x%02x%02x\n", + i, + f->macAddr[0], + f->macAddr[1], + f->macAddr[2], + f->macAddr[3], + f->macAddr[4], + f->macAddr[5], + f->networkAddr[0], + f->networkAddr[1], + f->networkAddr[2], + f->networkAddr[3], + f->networkAddr[4], + f->networkAddr[5], + f->networkAddr[6], + f->networkAddr[7], + f->networkAddr[8], + f->networkAddr[9], + f->networkAddr[10], + f->networkAddr[11], + f->networkAddr[12], + f->networkAddr[13], + f->networkAddr[14], + f->networkAddr[15], + f->networkAddr[16]); +#else + + panic_printk("NAT25 Expire H(%02d) M:%02x%02x%02x%02x%02x%02x N:%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x\n", + i, + f->macAddr[0], + f->macAddr[1], + f->macAddr[2], + f->macAddr[3], + f->macAddr[4], + f->macAddr[5], + f->networkAddr[0], + f->networkAddr[1], + f->networkAddr[2], + f->networkAddr[3], + f->networkAddr[4], + f->networkAddr[5], + f->networkAddr[6], + f->networkAddr[7], + f->networkAddr[8], + f->networkAddr[9], + f->networkAddr[10]); +#endif +#endif + if(priv->scdb_entry == f) + { + memset(priv->scdb_mac, 0, ETH_ALEN); + memset(priv->scdb_ip, 0, 4); + priv->scdb_entry = NULL; + } + __network_hash_unlink(f); + rtw_mfree((u8 *) f, sizeof(struct nat25_network_db_entry)); + } + } + + f = g; + } + } + } + + _exit_critical_bh(&priv->br_ext_lock, &irqL); +} + + +#ifdef SUPPORT_TX_MCAST2UNI +static int checkIPMcAndReplace(_adapter *priv, struct sk_buff *skb, unsigned int *dst_ip) +{ + struct stat_info *pstat; + struct list_head *phead, *plist; + int i; + + phead = &priv->asoc_list; + plist = phead->next; + + while (plist != phead) { + pstat = list_entry(plist, struct stat_info, asoc_list); + plist = plist->next; + + if (pstat->ipmc_num == 0) + continue; + + for (i=0; iipmc[i].used && !memcmp(&pstat->ipmc[i].mcmac[3], ((unsigned char *)dst_ip)+1, 3)) { + memcpy(skb->data, pstat->ipmc[i].mcmac, ETH_ALEN); + return 1; + } + } + } + return 0; +} +#endif + +int nat25_db_handle(_adapter *priv, struct sk_buff *skb, int method) +{ + unsigned short protocol; + unsigned char networkAddr[MAX_NETWORK_ADDR_LEN]; + + if(skb == NULL) + return -1; + + if((method <= NAT25_MIN) || (method >= NAT25_MAX)) + return -1; + + protocol = *((unsigned short *)(skb->data + 2 * ETH_ALEN)); + + /*---------------------------------------------------*/ + /* Handle IP frame */ + /*---------------------------------------------------*/ + if(protocol == __constant_htons(ETH_P_IP)) + { + struct iphdr* iph = (struct iphdr *)(skb->data + ETH_HLEN); + + if(((unsigned char*)(iph) + (iph->ihl<<2)) >= (skb->data + ETH_HLEN + skb->len)) + { + DEBUG_WARN("NAT25: malformed IP packet !\n"); + return -1; + } + + switch(method) + { + case NAT25_CHECK: + return -1; + + case NAT25_INSERT: + { + //some muticast with source IP is all zero, maybe other case is illegal + //in class A, B, C, host address is all zero or all one is illegal + if (iph->saddr == 0) + return 0; + DEBUG_INFO("NAT25: Insert IP, SA=%08x, DA=%08x\n", iph->saddr, iph->daddr); + __nat25_generate_ipv4_network_addr(networkAddr, &iph->saddr); + //record source IP address and , source mac address into db + __nat25_db_network_insert(priv, skb->data+ETH_ALEN, networkAddr); + + __nat25_db_print(priv); + } + return 0; + + case NAT25_LOOKUP: + { + DEBUG_INFO("NAT25: Lookup IP, SA=%08x, DA=%08x\n", iph->saddr, iph->daddr); +#ifdef SUPPORT_TX_MCAST2UNI + if (priv->pshare->rf_ft_var.mc2u_disable || + ((((OPMODE & (WIFI_STATION_STATE|WIFI_ASOC_STATE)) + == (WIFI_STATION_STATE|WIFI_ASOC_STATE)) && + !checkIPMcAndReplace(priv, skb, &iph->daddr)) || + (OPMODE & WIFI_ADHOC_STATE))) +#endif + { + __nat25_generate_ipv4_network_addr(networkAddr, &iph->daddr); + + if (!__nat25_db_network_lookup_and_replace(priv, skb, networkAddr)) { + if (*((unsigned char *)&iph->daddr + 3) == 0xff) { + // L2 is unicast but L3 is broadcast, make L2 bacome broadcast + DEBUG_INFO("NAT25: Set DA as boardcast\n"); + memset(skb->data, 0xff, ETH_ALEN); + } + else { + // forward unknow IP packet to upper TCP/IP + DEBUG_INFO("NAT25: Replace DA with BR's MAC\n"); + if ( (*(u32 *)priv->br_mac) == 0 && (*(u16 *)(priv->br_mac+4)) == 0 ) { + void netdev_br_init(struct net_device *netdev); + printk("Re-init netdev_br_init() due to br_mac==0!\n"); + netdev_br_init(priv->pnetdev); + } + memcpy(skb->data, priv->br_mac, ETH_ALEN); + } + } + } + } + return 0; + + default: + return -1; + } + } + + /*---------------------------------------------------*/ + /* Handle ARP frame */ + /*---------------------------------------------------*/ + else if(protocol == __constant_htons(ETH_P_ARP)) + { + struct arphdr *arp = (struct arphdr *)(skb->data + ETH_HLEN); + unsigned char *arp_ptr = (unsigned char *)(arp + 1); + unsigned int *sender, *target; + + if(arp->ar_pro != __constant_htons(ETH_P_IP)) + { + DEBUG_WARN("NAT25: arp protocol unknown (%4x)!\n", htons(arp->ar_pro)); + return -1; + } + + switch(method) + { + case NAT25_CHECK: + return 0; // skb_copy for all ARP frame + + case NAT25_INSERT: + { + DEBUG_INFO("NAT25: Insert ARP, MAC=%02x%02x%02x%02x%02x%02x\n", arp_ptr[0], + arp_ptr[1], arp_ptr[2], arp_ptr[3], arp_ptr[4], arp_ptr[5]); + + // change to ARP sender mac address to wlan STA address + memcpy(arp_ptr, GET_MY_HWADDR(priv), ETH_ALEN); + + arp_ptr += arp->ar_hln; + sender = (unsigned int *)arp_ptr; + + __nat25_generate_ipv4_network_addr(networkAddr, sender); + + __nat25_db_network_insert(priv, skb->data+ETH_ALEN, networkAddr); + + __nat25_db_print(priv); + } + return 0; + + case NAT25_LOOKUP: + { + DEBUG_INFO("NAT25: Lookup ARP\n"); + + arp_ptr += arp->ar_hln; + sender = (unsigned int *)arp_ptr; + arp_ptr += (arp->ar_hln + arp->ar_pln); + target = (unsigned int *)arp_ptr; + + __nat25_generate_ipv4_network_addr(networkAddr, target); + + __nat25_db_network_lookup_and_replace(priv, skb, networkAddr); + + // change to ARP target mac address to Lookup result + arp_ptr = (unsigned char *)(arp + 1); + arp_ptr += (arp->ar_hln + arp->ar_pln); + memcpy(arp_ptr, skb->data, ETH_ALEN); + } + return 0; + + default: + return -1; + } + } + + /*---------------------------------------------------*/ + /* Handle IPX and Apple Talk frame */ + /*---------------------------------------------------*/ + else if((protocol == __constant_htons(ETH_P_IPX)) || + (protocol <= __constant_htons(ETH_FRAME_LEN))) + { + unsigned char ipx_header[2] = {0xFF, 0xFF}; + struct ipxhdr *ipx = NULL; + struct elapaarp *ea = NULL; + struct ddpehdr *ddp = NULL; + unsigned char *framePtr = skb->data + ETH_HLEN; + + if(protocol == __constant_htons(ETH_P_IPX)) + { + DEBUG_INFO("NAT25: Protocol=IPX (Ethernet II)\n"); + ipx = (struct ipxhdr *)framePtr; + } + else if(protocol <= __constant_htons(ETH_FRAME_LEN)) + { + if(!memcmp(ipx_header, framePtr, 2)) + { + DEBUG_INFO("NAT25: Protocol=IPX (Ethernet 802.3)\n"); + ipx = (struct ipxhdr *)framePtr; + } + else + { + unsigned char ipx_8022_type = 0xE0; + unsigned char snap_8022_type = 0xAA; + + if(*framePtr == snap_8022_type) + { + unsigned char ipx_snap_id[5] = {0x0, 0x0, 0x0, 0x81, 0x37}; // IPX SNAP ID + unsigned char aarp_snap_id[5] = {0x00, 0x00, 0x00, 0x80, 0xF3}; // Apple Talk AARP SNAP ID + unsigned char ddp_snap_id[5] = {0x08, 0x00, 0x07, 0x80, 0x9B}; // Apple Talk DDP SNAP ID + + framePtr += 3; // eliminate the 802.2 header + + if(!memcmp(ipx_snap_id, framePtr, 5)) + { + framePtr += 5; // eliminate the SNAP header + + DEBUG_INFO("NAT25: Protocol=IPX (Ethernet SNAP)\n"); + ipx = (struct ipxhdr *)framePtr; + } + else if(!memcmp(aarp_snap_id, framePtr, 5)) + { + framePtr += 5; // eliminate the SNAP header + + ea = (struct elapaarp *)framePtr; + } + else if(!memcmp(ddp_snap_id, framePtr, 5)) + { + framePtr += 5; // eliminate the SNAP header + + ddp = (struct ddpehdr *)framePtr; + } + else + { + DEBUG_WARN("NAT25: Protocol=Ethernet SNAP %02x%02x%02x%02x%02x\n", framePtr[0], + framePtr[1], framePtr[2], framePtr[3], framePtr[4]); + return -1; + } + } + else if(*framePtr == ipx_8022_type) + { + framePtr += 3; // eliminate the 802.2 header + + if(!memcmp(ipx_header, framePtr, 2)) + { + DEBUG_INFO("NAT25: Protocol=IPX (Ethernet 802.2)\n"); + ipx = (struct ipxhdr *)framePtr; + } + else + return -1; + } + else + return -1; + } + } + else + return -1; + + /* IPX */ + if(ipx != NULL) + { + switch(method) + { + case NAT25_CHECK: + if(!memcmp(skb->data+ETH_ALEN, ipx->ipx_source.node, ETH_ALEN)) + { + DEBUG_INFO("NAT25: Check IPX skb_copy\n"); + return 0; + } + return -1; + + case NAT25_INSERT: + { + DEBUG_INFO("NAT25: Insert IPX, Dest=%08x,%02x%02x%02x%02x%02x%02x,%04x Source=%08x,%02x%02x%02x%02x%02x%02x,%04x\n", + ipx->ipx_dest.net, + ipx->ipx_dest.node[0], + ipx->ipx_dest.node[1], + ipx->ipx_dest.node[2], + ipx->ipx_dest.node[3], + ipx->ipx_dest.node[4], + ipx->ipx_dest.node[5], + ipx->ipx_dest.sock, + ipx->ipx_source.net, + ipx->ipx_source.node[0], + ipx->ipx_source.node[1], + ipx->ipx_source.node[2], + ipx->ipx_source.node[3], + ipx->ipx_source.node[4], + ipx->ipx_source.node[5], + ipx->ipx_source.sock); + + if(!memcmp(skb->data+ETH_ALEN, ipx->ipx_source.node, ETH_ALEN)) + { + DEBUG_INFO("NAT25: Use IPX Net, and Socket as network addr\n"); + + __nat25_generate_ipx_network_addr_with_socket(networkAddr, &ipx->ipx_source.net, &ipx->ipx_source.sock); + + // change IPX source node addr to wlan STA address + memcpy(ipx->ipx_source.node, GET_MY_HWADDR(priv), ETH_ALEN); + } + else + { + __nat25_generate_ipx_network_addr_with_node(networkAddr, &ipx->ipx_source.net, ipx->ipx_source.node); + } + + __nat25_db_network_insert(priv, skb->data+ETH_ALEN, networkAddr); + + __nat25_db_print(priv); + } + return 0; + + case NAT25_LOOKUP: + { + if(!memcmp(GET_MY_HWADDR(priv), ipx->ipx_dest.node, ETH_ALEN)) + { + DEBUG_INFO("NAT25: Lookup IPX, Modify Destination IPX Node addr\n"); + + __nat25_generate_ipx_network_addr_with_socket(networkAddr, &ipx->ipx_dest.net, &ipx->ipx_dest.sock); + + __nat25_db_network_lookup_and_replace(priv, skb, networkAddr); + + // replace IPX destination node addr with Lookup destination MAC addr + memcpy(ipx->ipx_dest.node, skb->data, ETH_ALEN); + } + else + { + __nat25_generate_ipx_network_addr_with_node(networkAddr, &ipx->ipx_dest.net, ipx->ipx_dest.node); + + __nat25_db_network_lookup_and_replace(priv, skb, networkAddr); + } + } + return 0; + + default: + return -1; + } + } + + /* AARP */ + else if(ea != NULL) + { + /* Sanity check fields. */ + if(ea->hw_len != ETH_ALEN || ea->pa_len != AARP_PA_ALEN) + { + DEBUG_WARN("NAT25: Appletalk AARP Sanity check fail!\n"); + return -1; + } + + switch(method) + { + case NAT25_CHECK: + return 0; + + case NAT25_INSERT: + { + // change to AARP source mac address to wlan STA address + memcpy(ea->hw_src, GET_MY_HWADDR(priv), ETH_ALEN); + + DEBUG_INFO("NAT25: Insert AARP, Source=%d,%d Destination=%d,%d\n", + ea->pa_src_net, + ea->pa_src_node, + ea->pa_dst_net, + ea->pa_dst_node); + + __nat25_generate_apple_network_addr(networkAddr, &ea->pa_src_net, &ea->pa_src_node); + + __nat25_db_network_insert(priv, skb->data+ETH_ALEN, networkAddr); + + __nat25_db_print(priv); + } + return 0; + + case NAT25_LOOKUP: + { + DEBUG_INFO("NAT25: Lookup AARP, Source=%d,%d Destination=%d,%d\n", + ea->pa_src_net, + ea->pa_src_node, + ea->pa_dst_net, + ea->pa_dst_node); + + __nat25_generate_apple_network_addr(networkAddr, &ea->pa_dst_net, &ea->pa_dst_node); + + __nat25_db_network_lookup_and_replace(priv, skb, networkAddr); + + // change to AARP destination mac address to Lookup result + memcpy(ea->hw_dst, skb->data, ETH_ALEN); + } + return 0; + + default: + return -1; + } + } + + /* DDP */ + else if(ddp != NULL) + { + switch(method) + { + case NAT25_CHECK: + return -1; + + case NAT25_INSERT: + { + DEBUG_INFO("NAT25: Insert DDP, Source=%d,%d Destination=%d,%d\n", + ddp->deh_snet, + ddp->deh_snode, + ddp->deh_dnet, + ddp->deh_dnode); + + __nat25_generate_apple_network_addr(networkAddr, &ddp->deh_snet, &ddp->deh_snode); + + __nat25_db_network_insert(priv, skb->data+ETH_ALEN, networkAddr); + + __nat25_db_print(priv); + } + return 0; + + case NAT25_LOOKUP: + { + DEBUG_INFO("NAT25: Lookup DDP, Source=%d,%d Destination=%d,%d\n", + ddp->deh_snet, + ddp->deh_snode, + ddp->deh_dnet, + ddp->deh_dnode); + + __nat25_generate_apple_network_addr(networkAddr, &ddp->deh_dnet, &ddp->deh_dnode); + + __nat25_db_network_lookup_and_replace(priv, skb, networkAddr); + } + return 0; + + default: + return -1; + } + } + + return -1; + } + + /*---------------------------------------------------*/ + /* Handle PPPoE frame */ + /*---------------------------------------------------*/ + else if((protocol == __constant_htons(ETH_P_PPP_DISC)) || + (protocol == __constant_htons(ETH_P_PPP_SES))) + { + struct pppoe_hdr *ph = (struct pppoe_hdr *)(skb->data + ETH_HLEN); + unsigned short *pMagic; + + switch(method) + { + case NAT25_CHECK: + if (ph->sid == 0) + return 0; + return 1; + + case NAT25_INSERT: + if(ph->sid == 0) // Discovery phase according to tag + { + if(ph->code == PADI_CODE || ph->code == PADR_CODE) + { + if (priv->ethBrExtInfo.addPPPoETag) { + struct pppoe_tag *tag, *pOldTag; + unsigned char tag_buf[40]; + int old_tag_len=0; + + tag = (struct pppoe_tag *)tag_buf; + pOldTag = (struct pppoe_tag *)__nat25_find_pppoe_tag(ph, ntohs(PTT_RELAY_SID)); + if (pOldTag) { // if SID existed, copy old value and delete it + old_tag_len = ntohs(pOldTag->tag_len); + if (old_tag_len+TAG_HDR_LEN+MAGIC_CODE_LEN+RTL_RELAY_TAG_LEN > sizeof(tag_buf)) { + DEBUG_ERR("SID tag length too long!\n"); + return -1; + } + + memcpy(tag->tag_data+MAGIC_CODE_LEN+RTL_RELAY_TAG_LEN, + pOldTag->tag_data, old_tag_len); + + if (skb_pull_and_merge(skb, (unsigned char *)pOldTag, TAG_HDR_LEN+old_tag_len) < 0) { + DEBUG_ERR("call skb_pull_and_merge() failed in PADI/R packet!\n"); + return -1; + } + ph->length = htons(ntohs(ph->length)-TAG_HDR_LEN-old_tag_len); + } + + tag->tag_type = PTT_RELAY_SID; + tag->tag_len = htons(MAGIC_CODE_LEN+RTL_RELAY_TAG_LEN+old_tag_len); + + // insert the magic_code+client mac in relay tag + pMagic = (unsigned short *)tag->tag_data; + *pMagic = htons(MAGIC_CODE); + memcpy(tag->tag_data+MAGIC_CODE_LEN, skb->data+ETH_ALEN, ETH_ALEN); + + //Add relay tag + if(__nat25_add_pppoe_tag(skb, tag) < 0) + return -1; + + DEBUG_INFO("NAT25: Insert PPPoE, forward %s packet\n", + (ph->code == PADI_CODE ? "PADI" : "PADR")); + } + else { // not add relay tag + if (priv->pppoe_connection_in_progress && + memcmp(skb->data+ETH_ALEN, priv->pppoe_addr, ETH_ALEN)) { + DEBUG_ERR("Discard PPPoE packet due to another PPPoE connection is in progress!\n"); + return -2; + } + + if (priv->pppoe_connection_in_progress == 0) + memcpy(priv->pppoe_addr, skb->data+ETH_ALEN, ETH_ALEN); + + priv->pppoe_connection_in_progress = WAIT_TIME_PPPOE; + } + } + else + return -1; + } + else // session phase + { + DEBUG_INFO("NAT25: Insert PPPoE, insert session packet to %s\n", skb->dev->name); + + __nat25_generate_pppoe_network_addr(networkAddr, skb->data, &(ph->sid)); + + __nat25_db_network_insert(priv, skb->data+ETH_ALEN, networkAddr); + + __nat25_db_print(priv); + + if (!priv->ethBrExtInfo.addPPPoETag && + priv->pppoe_connection_in_progress && + !memcmp(skb->data+ETH_ALEN, priv->pppoe_addr, ETH_ALEN)) + priv->pppoe_connection_in_progress = 0; + } + return 0; + + case NAT25_LOOKUP: + if(ph->code == PADO_CODE || ph->code == PADS_CODE) + { + if (priv->ethBrExtInfo.addPPPoETag) { + struct pppoe_tag *tag; + unsigned char *ptr; + unsigned short tagType, tagLen; + int offset=0; + + if((ptr = __nat25_find_pppoe_tag(ph, ntohs(PTT_RELAY_SID))) == 0) { + DEBUG_ERR("Fail to find PTT_RELAY_SID in FADO!\n"); + return -1; + } + + tag = (struct pppoe_tag *)ptr; + tagType = (unsigned short)((ptr[0] << 8) + ptr[1]); + tagLen = (unsigned short)((ptr[2] << 8) + ptr[3]); + + if((tagType != ntohs(PTT_RELAY_SID)) || (tagLen < (MAGIC_CODE_LEN+RTL_RELAY_TAG_LEN))) { + DEBUG_ERR("Invalid PTT_RELAY_SID tag length [%d]!\n", tagLen); + return -1; + } + + pMagic = (unsigned short *)tag->tag_data; + if (ntohs(*pMagic) != MAGIC_CODE) { + DEBUG_ERR("Can't find MAGIC_CODE in %s packet!\n", + (ph->code == PADO_CODE ? "PADO" : "PADS")); + return -1; + } + + memcpy(skb->data, tag->tag_data+MAGIC_CODE_LEN, ETH_ALEN); + + if (tagLen > MAGIC_CODE_LEN+RTL_RELAY_TAG_LEN) + offset = TAG_HDR_LEN; + + if (skb_pull_and_merge(skb, ptr+offset, TAG_HDR_LEN+MAGIC_CODE_LEN+RTL_RELAY_TAG_LEN-offset) < 0) { + DEBUG_ERR("call skb_pull_and_merge() failed in PADO packet!\n"); + return -1; + } + ph->length = htons(ntohs(ph->length)-(TAG_HDR_LEN+MAGIC_CODE_LEN+RTL_RELAY_TAG_LEN-offset)); + if (offset > 0) + tag->tag_len = htons(tagLen-MAGIC_CODE_LEN-RTL_RELAY_TAG_LEN); + + DEBUG_INFO("NAT25: Lookup PPPoE, forward %s Packet from %s\n", + (ph->code == PADO_CODE ? "PADO" : "PADS"), skb->dev->name); + } + else { // not add relay tag + if (!priv->pppoe_connection_in_progress) { + DEBUG_ERR("Discard PPPoE packet due to no connection in progresss!\n"); + return -1; + } + memcpy(skb->data, priv->pppoe_addr, ETH_ALEN); + priv->pppoe_connection_in_progress = WAIT_TIME_PPPOE; + } + } + else { + if(ph->sid != 0) + { + DEBUG_INFO("NAT25: Lookup PPPoE, lookup session packet from %s\n", skb->dev->name); + __nat25_generate_pppoe_network_addr(networkAddr, skb->data+ETH_ALEN, &(ph->sid)); + + __nat25_db_network_lookup_and_replace(priv, skb, networkAddr); + + __nat25_db_print(priv); + } + else + return -1; + + } + return 0; + + default: + return -1; + } + } + + /*---------------------------------------------------*/ + /* Handle EAP frame */ + /*---------------------------------------------------*/ + else if(protocol == __constant_htons(0x888e)) + { + switch(method) + { + case NAT25_CHECK: + return -1; + + case NAT25_INSERT: + return 0; + + case NAT25_LOOKUP: + return 0; + + default: + return -1; + } + } + + /*---------------------------------------------------*/ + /* Handle C-Media proprietary frame */ + /*---------------------------------------------------*/ + else if((protocol == __constant_htons(0xe2ae)) || + (protocol == __constant_htons(0xe2af))) + { + switch(method) + { + case NAT25_CHECK: + return -1; + + case NAT25_INSERT: + return 0; + + case NAT25_LOOKUP: + return 0; + + default: + return -1; + } + } + + /*---------------------------------------------------*/ + /* Handle IPV6 frame */ + /*---------------------------------------------------*/ +#ifdef CL_IPV6_PASS + else if(protocol == __constant_htons(ETH_P_IPV6)) + { + struct ipv6hdr *iph = (struct ipv6hdr *)(skb->data + ETH_HLEN); + + if (sizeof(*iph) >= (skb->len - ETH_HLEN)) + { + DEBUG_WARN("NAT25: malformed IPv6 packet !\n"); + return -1; + } + + switch(method) + { + case NAT25_CHECK: + if (skb->data[0] & 1) + return 0; + return -1; + + case NAT25_INSERT: + { + DEBUG_INFO("NAT25: Insert IP, SA=%4x:%4x:%4x:%4x:%4x:%4x:%4x:%4x," + " DA=%4x:%4x:%4x:%4x:%4x:%4x:%4x:%4x\n", + iph->saddr.s6_addr16[0],iph->saddr.s6_addr16[1],iph->saddr.s6_addr16[2],iph->saddr.s6_addr16[3], + iph->saddr.s6_addr16[4],iph->saddr.s6_addr16[5],iph->saddr.s6_addr16[6],iph->saddr.s6_addr16[7], + iph->daddr.s6_addr16[0],iph->daddr.s6_addr16[1],iph->daddr.s6_addr16[2],iph->daddr.s6_addr16[3], + iph->daddr.s6_addr16[4],iph->daddr.s6_addr16[5],iph->daddr.s6_addr16[6],iph->daddr.s6_addr16[7]); + + if (memcmp(&iph->saddr, "\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0", 16)) { + __nat25_generate_ipv6_network_addr(networkAddr, (unsigned int *)&iph->saddr); + __nat25_db_network_insert(priv, skb->data+ETH_ALEN, networkAddr); + __nat25_db_print(priv); + + if (iph->nexthdr == IPPROTO_ICMPV6 && + skb->len > (ETH_HLEN + sizeof(*iph) + 4)) { + if (update_nd_link_layer_addr(skb->data + ETH_HLEN + sizeof(*iph), + skb->len - ETH_HLEN - sizeof(*iph), GET_MY_HWADDR(priv))) { + struct icmp6hdr *hdr = (struct icmp6hdr *)(skb->data + ETH_HLEN + sizeof(*iph)); + hdr->icmp6_cksum = 0; + hdr->icmp6_cksum = csum_ipv6_magic(&iph->saddr, &iph->daddr, + iph->payload_len, + IPPROTO_ICMPV6, + csum_partial((__u8 *)hdr, iph->payload_len, 0)); + } + } + } + } + return 0; + + case NAT25_LOOKUP: + DEBUG_INFO("NAT25: Lookup IP, SA=%4x:%4x:%4x:%4x:%4x:%4x:%4x:%4x," + " DA=%4x:%4x:%4x:%4x:%4x:%4x:%4x:%4x\n", + iph->saddr.s6_addr16[0],iph->saddr.s6_addr16[1],iph->saddr.s6_addr16[2],iph->saddr.s6_addr16[3], + iph->saddr.s6_addr16[4],iph->saddr.s6_addr16[5],iph->saddr.s6_addr16[6],iph->saddr.s6_addr16[7], + iph->daddr.s6_addr16[0],iph->daddr.s6_addr16[1],iph->daddr.s6_addr16[2],iph->daddr.s6_addr16[3], + iph->daddr.s6_addr16[4],iph->daddr.s6_addr16[5],iph->daddr.s6_addr16[6],iph->daddr.s6_addr16[7]); + + + __nat25_generate_ipv6_network_addr(networkAddr, (unsigned int *)&iph->daddr); + if (!__nat25_db_network_lookup_and_replace(priv, skb, networkAddr)) { +#ifdef SUPPORT_RX_UNI2MCAST + if (iph->daddr.s6_addr[0] == 0xff) + convert_ipv6_mac_to_mc(skb); +#endif + } + return 0; + + default: + return -1; + } + } +#endif // CL_IPV6_PASS + + return -1; +} + + +int nat25_handle_frame(_adapter *priv, struct sk_buff *skb) +{ +#ifdef BR_EXT_DEBUG + if((!priv->ethBrExtInfo.nat25_disable) && (!(skb->data[0] & 1))) + { + panic_printk("NAT25: Input Frame: DA=%02x%02x%02x%02x%02x%02x SA=%02x%02x%02x%02x%02x%02x\n", + skb->data[0], + skb->data[1], + skb->data[2], + skb->data[3], + skb->data[4], + skb->data[5], + skb->data[6], + skb->data[7], + skb->data[8], + skb->data[9], + skb->data[10], + skb->data[11]); + } +#endif + + if(!(skb->data[0] & 1)) + { + int is_vlan_tag=0, i, retval=0; + unsigned short vlan_hdr=0; + + if (*((unsigned short *)(skb->data+ETH_ALEN*2)) == __constant_htons(ETH_P_8021Q)) { + is_vlan_tag = 1; + vlan_hdr = *((unsigned short *)(skb->data+ETH_ALEN*2+2)); + for (i=0; i<6; i++) + *((unsigned short *)(skb->data+ETH_ALEN*2+2-i*2)) = *((unsigned short *)(skb->data+ETH_ALEN*2-2-i*2)); + skb_pull(skb, 4); + } + + if (!priv->ethBrExtInfo.nat25_disable) + { + _irqL irqL; + _enter_critical_bh(&priv->br_ext_lock, &irqL); + /* + * This function look up the destination network address from + * the NAT2.5 database. Return value = -1 means that the + * corresponding network protocol is NOT support. + */ + if (!priv->ethBrExtInfo.nat25sc_disable && + (*((unsigned short *)(skb->data+ETH_ALEN*2)) == __constant_htons(ETH_P_IP)) && + !memcmp(priv->scdb_ip, skb->data+ETH_HLEN+16, 4)) { + memcpy(skb->data, priv->scdb_mac, ETH_ALEN); + + _exit_critical_bh(&priv->br_ext_lock, &irqL); + } + else { + _exit_critical_bh(&priv->br_ext_lock, &irqL); + + retval = nat25_db_handle(priv, skb, NAT25_LOOKUP); + } + } + else { + if (((*((unsigned short *)(skb->data+ETH_ALEN*2)) == __constant_htons(ETH_P_IP)) && + !memcmp(priv->br_ip, skb->data+ETH_HLEN+16, 4)) || + ((*((unsigned short *)(skb->data+ETH_ALEN*2)) == __constant_htons(ETH_P_ARP)) && + !memcmp(priv->br_ip, skb->data+ETH_HLEN+24, 4))) { + // for traffic to upper TCP/IP + retval = nat25_db_handle(priv, skb, NAT25_LOOKUP); + } + } + + if (is_vlan_tag) { + skb_push(skb, 4); + for (i=0; i<6; i++) + *((unsigned short *)(skb->data+i*2)) = *((unsigned short *)(skb->data+4+i*2)); + *((unsigned short *)(skb->data+ETH_ALEN*2)) = __constant_htons(ETH_P_8021Q); + *((unsigned short *)(skb->data+ETH_ALEN*2+2)) = vlan_hdr; + } + + if(retval == -1) { + //DEBUG_ERR("NAT25: Lookup fail!\n"); + return -1; + } + } + + return 0; +} + +#if 0 +void mac_clone(_adapter *priv, unsigned char *addr) +{ + struct sockaddr sa; + + memcpy(sa.sa_data, addr, ETH_ALEN); + DEBUG_INFO("MAC Clone: Addr=%02x%02x%02x%02x%02x%02x\n", + addr[0], addr[1], addr[2], addr[3], addr[4], addr[5]); + rtl8192cd_set_hwaddr(priv->dev, &sa); +} + + +int mac_clone_handle_frame(_adapter *priv, struct sk_buff *skb) +{ + if(priv->ethBrExtInfo.macclone_enable && !priv->macclone_completed) + { + if(!(skb->data[ETH_ALEN] & 1)) //// check any other particular MAC add + { + if(memcmp(skb->data+ETH_ALEN, GET_MY_HWADDR(priv), ETH_ALEN) && + ((priv->dev->br_port) && + memcmp(skb->data+ETH_ALEN, priv->br_mac, ETH_ALEN))) + { + mac_clone(priv, skb->data+ETH_ALEN); + priv->macclone_completed = 1; + } + } + } + + return 0; +} +#endif // 0 + +#define SERVER_PORT 67 +#define CLIENT_PORT 68 +#define DHCP_MAGIC 0x63825363 +#define BROADCAST_FLAG 0x8000 + +struct dhcpMessage { + u_int8_t op; + u_int8_t htype; + u_int8_t hlen; + u_int8_t hops; + u_int32_t xid; + u_int16_t secs; + u_int16_t flags; + u_int32_t ciaddr; + u_int32_t yiaddr; + u_int32_t siaddr; + u_int32_t giaddr; + u_int8_t chaddr[16]; + u_int8_t sname[64]; + u_int8_t file[128]; + u_int32_t cookie; + u_int8_t options[308]; /* 312 - cookie */ +}; + +void dhcp_flag_bcast(_adapter *priv, struct sk_buff *skb) +{ + if(skb == NULL) + return; + + if(!priv->ethBrExtInfo.dhcp_bcst_disable) + { + unsigned short protocol = *((unsigned short *)(skb->data + 2 * ETH_ALEN)); + + if(protocol == __constant_htons(ETH_P_IP)) // IP + { + struct iphdr* iph = (struct iphdr *)(skb->data + ETH_HLEN); + + if(iph->protocol == IPPROTO_UDP) // UDP + { + struct udphdr *udph = (struct udphdr *)((SIZE_PTR)iph + (iph->ihl << 2)); + + if((udph->source == __constant_htons(CLIENT_PORT)) + && (udph->dest == __constant_htons(SERVER_PORT))) // DHCP request + { + struct dhcpMessage *dhcph = + (struct dhcpMessage *)((SIZE_PTR)udph + sizeof(struct udphdr)); + + if(dhcph->cookie == __constant_htonl(DHCP_MAGIC)) // match magic word + { + if(!(dhcph->flags & htons(BROADCAST_FLAG))) // if not broadcast + { + register int sum = 0; + + DEBUG_INFO("DHCP: change flag of DHCP request to broadcast.\n"); + // or BROADCAST flag + dhcph->flags |= htons(BROADCAST_FLAG); + // recalculate checksum + sum = ~(udph->check) & 0xffff; + sum += dhcph->flags; + while(sum >> 16) + sum = (sum & 0xffff) + (sum >> 16); + udph->check = ~sum; + } + } + } + } + } + } +} + + +void *scdb_findEntry(_adapter *priv, unsigned char *macAddr, + unsigned char *ipAddr) +{ + unsigned char networkAddr[MAX_NETWORK_ADDR_LEN]; + struct nat25_network_db_entry *db; + int hash; + //_irqL irqL; + //_enter_critical_bh(&priv->br_ext_lock, &irqL); + + __nat25_generate_ipv4_network_addr(networkAddr, (unsigned int *)ipAddr); + hash = __nat25_network_hash(networkAddr); + db = priv->nethash[hash]; + while (db != NULL) + { + if(!memcmp(db->networkAddr, networkAddr, MAX_NETWORK_ADDR_LEN)) { + //_exit_critical_bh(&priv->br_ext_lock, &irqL); + return (void *)db; + } + + db = db->next_hash; + } + + //_exit_critical_bh(&priv->br_ext_lock, &irqL); + return NULL; +} + +#endif // CONFIG_BR_EXT --- linux-raspi2-4.2.0.orig/drivers/net/wireless/rtl8192cu/core/rtw_cmd.c +++ linux-raspi2-4.2.0/drivers/net/wireless/rtl8192cu/core/rtw_cmd.c @@ -0,0 +1,3034 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved. + * + * 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 + * published by the Free Software Foundation. + * + * 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 Street, Fifth Floor, Boston, MA 02110, USA + * + * + ******************************************************************************/ +#define _RTW_CMD_C_ + +#include +#include +#include +#include +#include +#include +#include +#ifdef CONFIG_BR_EXT +#include +#endif //CONFIG_BR_EXT +/* +Caller and the rtw_cmd_thread can protect cmd_q by spin_lock. +No irqsave is necessary. +*/ + +sint _rtw_init_cmd_priv (struct cmd_priv *pcmdpriv) +{ + sint res=_SUCCESS; + +_func_enter_; + + _rtw_init_sema(&(pcmdpriv->cmd_queue_sema), 0); + //_rtw_init_sema(&(pcmdpriv->cmd_done_sema), 0); + _rtw_init_sema(&(pcmdpriv->terminate_cmdthread_sema), 0); + + + _rtw_init_queue(&(pcmdpriv->cmd_queue)); + + //allocate DMA-able/Non-Page memory for cmd_buf and rsp_buf + + pcmdpriv->cmd_seq = 1; + + pcmdpriv->cmd_allocated_buf = rtw_zmalloc(MAX_CMDSZ + CMDBUFF_ALIGN_SZ); + + if (pcmdpriv->cmd_allocated_buf == NULL){ + res= _FAIL; + goto exit; + } + + pcmdpriv->cmd_buf = pcmdpriv->cmd_allocated_buf + CMDBUFF_ALIGN_SZ - ( (SIZE_PTR)(pcmdpriv->cmd_allocated_buf) & (CMDBUFF_ALIGN_SZ-1)); + + pcmdpriv->rsp_allocated_buf = rtw_zmalloc(MAX_RSPSZ + 4); + + if (pcmdpriv->rsp_allocated_buf == NULL){ + res= _FAIL; + goto exit; + } + + pcmdpriv->rsp_buf = pcmdpriv->rsp_allocated_buf + 4 - ( (SIZE_PTR)(pcmdpriv->rsp_allocated_buf) & 3); + + pcmdpriv->cmd_issued_cnt = pcmdpriv->cmd_done_cnt = pcmdpriv->rsp_cnt = 0; + +exit: + +_func_exit_; + + return res; + +} + +#ifdef CONFIG_C2H_WK +static void c2h_wk_callback(_workitem *work); +#endif +sint _rtw_init_evt_priv(struct evt_priv *pevtpriv) +{ + sint res=_SUCCESS; + +_func_enter_; + +#ifdef CONFIG_H2CLBK + _rtw_init_sema(&(pevtpriv->lbkevt_done), 0); + pevtpriv->lbkevt_limit = 0; + pevtpriv->lbkevt_num = 0; + pevtpriv->cmdevt_parm = NULL; +#endif + + //allocate DMA-able/Non-Page memory for cmd_buf and rsp_buf + ATOMIC_SET(&pevtpriv->event_seq, 0); + pevtpriv->evt_done_cnt = 0; + +#ifdef CONFIG_EVENT_THREAD_MODE + + _rtw_init_sema(&(pevtpriv->evt_notify), 0); + _rtw_init_sema(&(pevtpriv->terminate_evtthread_sema), 0); + + pevtpriv->evt_allocated_buf = rtw_zmalloc(MAX_EVTSZ + 4); + if (pevtpriv->evt_allocated_buf == NULL){ + res= _FAIL; + goto exit; + } + pevtpriv->evt_buf = pevtpriv->evt_allocated_buf + 4 - ((unsigned int)(pevtpriv->evt_allocated_buf) & 3); + + +#ifdef CONFIG_SDIO_HCI + pevtpriv->allocated_c2h_mem = rtw_zmalloc(C2H_MEM_SZ +4); + + if (pevtpriv->allocated_c2h_mem == NULL){ + res= _FAIL; + goto exit; + } + + pevtpriv->c2h_mem = pevtpriv->allocated_c2h_mem + 4\ + - ( (u32)(pevtpriv->allocated_c2h_mem) & 3); +#ifdef PLATFORM_OS_XP + pevtpriv->pc2h_mdl= IoAllocateMdl((u8 *)pevtpriv->c2h_mem, C2H_MEM_SZ , FALSE, FALSE, NULL); + + if(pevtpriv->pc2h_mdl == NULL){ + res= _FAIL; + goto exit; + } + MmBuildMdlForNonPagedPool(pevtpriv->pc2h_mdl); +#endif +#endif //end of CONFIG_SDIO_HCI + + _rtw_init_queue(&(pevtpriv->evt_queue)); + +exit: + +#endif //end of CONFIG_EVENT_THREAD_MODE + +#ifdef CONFIG_C2H_WK + _init_workitem(&pevtpriv->c2h_wk, c2h_wk_callback, NULL); + pevtpriv->c2h_wk_alive = _FALSE; + pevtpriv->c2h_queue = rtw_cbuf_alloc(C2H_QUEUE_MAX_LEN+1); +#endif + +_func_exit_; + + return res; +} + +void _rtw_free_evt_priv (struct evt_priv *pevtpriv) +{ +_func_enter_; + + RT_TRACE(_module_rtl871x_cmd_c_,_drv_info_,("+_rtw_free_evt_priv \n")); + +#ifdef CONFIG_EVENT_THREAD_MODE + _rtw_free_sema(&(pevtpriv->evt_notify)); + _rtw_free_sema(&(pevtpriv->terminate_evtthread_sema)); + + + if (pevtpriv->evt_allocated_buf) + rtw_mfree(pevtpriv->evt_allocated_buf, MAX_EVTSZ + 4); +#endif + +#ifdef CONFIG_C2H_WK + _cancel_workitem_sync(&pevtpriv->c2h_wk); + while(pevtpriv->c2h_wk_alive) + rtw_msleep_os(10); + + while (!rtw_cbuf_empty(pevtpriv->c2h_queue)) { + void *c2h; + if ((c2h = rtw_cbuf_pop(pevtpriv->c2h_queue)) != NULL + && c2h != (void *)pevtpriv) { + rtw_mfree(c2h, 16); + } + } + rtw_cbuf_free(pevtpriv->c2h_queue); +#endif + + RT_TRACE(_module_rtl871x_cmd_c_,_drv_info_,("-_rtw_free_evt_priv \n")); + +_func_exit_; + +} + +void _rtw_free_cmd_priv (struct cmd_priv *pcmdpriv) +{ +_func_enter_; + + if(pcmdpriv){ + _rtw_spinlock_free(&(pcmdpriv->cmd_queue.lock)); + _rtw_free_sema(&(pcmdpriv->cmd_queue_sema)); + //_rtw_free_sema(&(pcmdpriv->cmd_done_sema)); + _rtw_free_sema(&(pcmdpriv->terminate_cmdthread_sema)); + + if (pcmdpriv->cmd_allocated_buf) + rtw_mfree(pcmdpriv->cmd_allocated_buf, MAX_CMDSZ + CMDBUFF_ALIGN_SZ); + + if (pcmdpriv->rsp_allocated_buf) + rtw_mfree(pcmdpriv->rsp_allocated_buf, MAX_RSPSZ + 4); + } +_func_exit_; +} + +/* +Calling Context: + +rtw_enqueue_cmd can only be called between kernel thread, +since only spin_lock is used. + +ISR/Call-Back functions can't call this sub-function. + +*/ + +sint _rtw_enqueue_cmd(_queue *queue, struct cmd_obj *obj) +{ + _irqL irqL; + +_func_enter_; + + if (obj == NULL) + goto exit; + + //_enter_critical_bh(&queue->lock, &irqL); + _enter_critical(&queue->lock, &irqL); + + rtw_list_insert_tail(&obj->list, &queue->queue); + + //_exit_critical_bh(&queue->lock, &irqL); + _exit_critical(&queue->lock, &irqL); + +exit: + +_func_exit_; + + return _SUCCESS; +} + +struct cmd_obj *_rtw_dequeue_cmd(_queue *queue) +{ + _irqL irqL; + struct cmd_obj *obj; + +_func_enter_; + + //_enter_critical_bh(&(queue->lock), &irqL); + _enter_critical(&queue->lock, &irqL); + if (rtw_is_list_empty(&(queue->queue))) + obj = NULL; + else + { + obj = LIST_CONTAINOR(get_next(&(queue->queue)), struct cmd_obj, list); + rtw_list_delete(&obj->list); + } + + //_exit_critical_bh(&(queue->lock), &irqL); + _exit_critical(&queue->lock, &irqL); + +_func_exit_; + + return obj; +} + +u32 rtw_init_cmd_priv(struct cmd_priv *pcmdpriv) +{ + u32 res; +_func_enter_; + res = _rtw_init_cmd_priv (pcmdpriv); +_func_exit_; + return res; +} + +u32 rtw_init_evt_priv (struct evt_priv *pevtpriv) +{ + int res; +_func_enter_; + res = _rtw_init_evt_priv(pevtpriv); +_func_exit_; + return res; +} + +void rtw_free_evt_priv (struct evt_priv *pevtpriv) +{ +_func_enter_; + RT_TRACE(_module_rtl871x_cmd_c_,_drv_info_,("rtw_free_evt_priv\n")); + _rtw_free_evt_priv(pevtpriv); +_func_exit_; +} + +void rtw_free_cmd_priv (struct cmd_priv *pcmdpriv) +{ +_func_enter_; + RT_TRACE(_module_rtl871x_cmd_c_,_drv_info_,("rtw_free_cmd_priv\n")); + _rtw_free_cmd_priv(pcmdpriv); +_func_exit_; +} + +int rtw_cmd_filter(struct cmd_priv *pcmdpriv, struct cmd_obj *cmd_obj); +int rtw_cmd_filter(struct cmd_priv *pcmdpriv, struct cmd_obj *cmd_obj) +{ + u8 bAllow = _FALSE; //set to _TRUE to allow enqueuing cmd when hw_init_completed is _FALSE + + #ifdef SUPPORT_HW_RFOFF_DETECTED + //To decide allow or not + if( (pcmdpriv->padapter->pwrctrlpriv.bHWPwrPindetect) + &&(!pcmdpriv->padapter->registrypriv.usbss_enable) + ) + { + if(cmd_obj->cmdcode == GEN_CMD_CODE(_Set_Drv_Extra) ) + { + struct drvextra_cmd_parm *pdrvextra_cmd_parm = (struct drvextra_cmd_parm *)cmd_obj->parmbuf; + if(pdrvextra_cmd_parm->ec_id == POWER_SAVING_CTRL_WK_CID) + { + //DBG_871X("==>enqueue POWER_SAVING_CTRL_WK_CID\n"); + bAllow = _TRUE; + } + } + } + #endif + + if(cmd_obj->cmdcode == GEN_CMD_CODE(_SetChannelPlan)) + bAllow = _TRUE; + + if( (pcmdpriv->padapter->hw_init_completed ==_FALSE && bAllow == _FALSE) + || pcmdpriv->cmdthd_running== _FALSE //com_thread not running + ) + { + //DBG_871X("%s:%s: drop cmdcode:%u, hw_init_completed:%u, cmdthd_running:%u\n", caller_func, __FUNCTION__, + // cmd_obj->cmdcode, + // pcmdpriv->padapter->hw_init_completed, + // pcmdpriv->cmdthd_running + //); + + return _FAIL; + } + return _SUCCESS; +} + + + +u32 rtw_enqueue_cmd(struct cmd_priv *pcmdpriv, struct cmd_obj *cmd_obj) +{ + int res = _FAIL; + PADAPTER padapter = pcmdpriv->padapter; + +_func_enter_; + + if (cmd_obj == NULL) { + goto exit; + } + + cmd_obj->padapter = padapter; + +#ifdef CONFIG_CONCURRENT_MODE + //change pcmdpriv to primary's pcmdpriv + if (padapter->adapter_type != PRIMARY_ADAPTER && padapter->pbuddy_adapter) + pcmdpriv = &(padapter->pbuddy_adapter->cmdpriv); +#endif + + if( _FAIL == (res=rtw_cmd_filter(pcmdpriv, cmd_obj)) ) { + rtw_free_cmd_obj(cmd_obj); + goto exit; + } + + res = _rtw_enqueue_cmd(&pcmdpriv->cmd_queue, cmd_obj); + + if(res == _SUCCESS) + _rtw_up_sema(&pcmdpriv->cmd_queue_sema); + +exit: + +_func_exit_; + + return res; +} + +struct cmd_obj *rtw_dequeue_cmd(struct cmd_priv *pcmdpriv) +{ + struct cmd_obj *cmd_obj; + +_func_enter_; + + cmd_obj = _rtw_dequeue_cmd(&pcmdpriv->cmd_queue); + +_func_exit_; + return cmd_obj; +} + +void rtw_cmd_clr_isr(struct cmd_priv *pcmdpriv) +{ +_func_enter_; + pcmdpriv->cmd_done_cnt++; + //_rtw_up_sema(&(pcmdpriv->cmd_done_sema)); +_func_exit_; +} + +void rtw_free_cmd_obj(struct cmd_obj *pcmd) +{ +_func_enter_; + + if((pcmd->cmdcode!=_JoinBss_CMD_) &&(pcmd->cmdcode!= _CreateBss_CMD_)) + { + //free parmbuf in cmd_obj + rtw_mfree((unsigned char*)pcmd->parmbuf, pcmd->cmdsz); + } + + if(pcmd->rsp!=NULL) + { + if(pcmd->rspsz!= 0) + { + //free rsp in cmd_obj + rtw_mfree((unsigned char*)pcmd->rsp, pcmd->rspsz); + } + } + + //free cmd_obj + rtw_mfree((unsigned char*)pcmd, sizeof(struct cmd_obj)); + +_func_exit_; +} + +void rtw_stop_cmd_thread(_adapter *adapter) +{ + if(adapter->cmdThread && adapter->cmdpriv.cmdthd_running == _TRUE + && adapter->cmdpriv.stop_req == 0) + { + adapter->cmdpriv.stop_req = 1; + _rtw_up_sema(&adapter->cmdpriv.cmd_queue_sema); + _rtw_down_sema(&adapter->cmdpriv.terminate_cmdthread_sema); + } +} + +thread_return rtw_cmd_thread(thread_context context) +{ + u8 ret; + struct cmd_obj *pcmd; + u8 *pcmdbuf, *prspbuf; + u8 (*cmd_hdl)(_adapter *padapter, u8* pbuf); + void (*pcmd_callback)(_adapter *dev, struct cmd_obj *pcmd); + _adapter *padapter = (_adapter *)context; + struct cmd_priv *pcmdpriv = &(padapter->cmdpriv); + +_func_enter_; + + thread_enter("RTW_CMD_THREAD"); + + pcmdbuf = pcmdpriv->cmd_buf; + prspbuf = pcmdpriv->rsp_buf; + + pcmdpriv->stop_req = 0; + pcmdpriv->cmdthd_running=_TRUE; + _rtw_up_sema(&pcmdpriv->terminate_cmdthread_sema); + + RT_TRACE(_module_rtl871x_cmd_c_,_drv_info_,("start r871x rtw_cmd_thread !!!!\n")); + + while(1) + { + if ((_rtw_down_sema(&(pcmdpriv->cmd_queue_sema))) == _FAIL) { + LOG_LEVEL(_drv_err_, FUNC_ADPT_FMT" _rtw_down_sema(&pcmdpriv->cmd_queue_sema) return _FAIL, break\n", FUNC_ADPT_ARG(padapter)); + break; + } + + if (pcmdpriv->stop_req) { + LOG_LEVEL(_drv_err_, FUNC_ADPT_FMT" stop_req:%u, break\n", FUNC_ADPT_ARG(padapter), pcmdpriv->stop_req); + break; + } + +#ifdef CONFIG_LPS_LCLK + if (rtw_register_cmd_alive(padapter) != _SUCCESS) + { + continue; + } +#endif + +_next: + if ((padapter->bDriverStopped == _TRUE)||(padapter->bSurpriseRemoved == _TRUE)) + { + LOG_LEVEL(_drv_err_, "%s: DriverStopped(%d) SurpriseRemoved(%d) break at line %d\n", + __FUNCTION__, padapter->bDriverStopped, padapter->bSurpriseRemoved, __LINE__); + break; + } + + if(!(pcmd = rtw_dequeue_cmd(pcmdpriv))) { +#ifdef CONFIG_LPS_LCLK + rtw_unregister_cmd_alive(padapter); +#endif + continue; + } + + if( _FAIL == rtw_cmd_filter(pcmdpriv, pcmd) ) + { + pcmd->res = H2C_DROPPED; + goto post_process; + } + + if( _FAIL == rtw_cmd_filter(pcmdpriv, pcmd) ) { + rtw_free_cmd_obj(pcmd); + continue; + } + + pcmdpriv->cmd_issued_cnt++; + + pcmd->cmdsz = _RND4((pcmd->cmdsz));//_RND4 + + _rtw_memcpy(pcmdbuf, pcmd->parmbuf, pcmd->cmdsz); + + if(pcmd->cmdcode <= (sizeof(wlancmds) /sizeof(struct cmd_hdl))) + { + cmd_hdl = wlancmds[pcmd->cmdcode].h2cfuns; + + if (cmd_hdl) + { + ret = cmd_hdl(pcmd->padapter, pcmdbuf); + pcmd->res = ret; + } + + pcmdpriv->cmd_seq++; + } + else + { + pcmd->res = H2C_PARAMETERS_ERROR; + } + + cmd_hdl = NULL; + +post_process: + + //call callback function for post-processed + if(pcmd->cmdcode <= (sizeof(rtw_cmd_callback) /sizeof(struct _cmd_callback))) + { + pcmd_callback = rtw_cmd_callback[pcmd->cmdcode].callback; + if(pcmd_callback == NULL) + { + RT_TRACE(_module_rtl871x_cmd_c_,_drv_info_,("mlme_cmd_hdl(): pcmd_callback=0x%p, cmdcode=0x%x\n", pcmd_callback, pcmd->cmdcode)); + rtw_free_cmd_obj(pcmd); + } + else + { + //todo: !!! fill rsp_buf to pcmd->rsp if (pcmd->rsp!=NULL) + pcmd_callback(pcmd->padapter, pcmd);//need conider that free cmd_obj in rtw_cmd_callback + } + } + + flush_signals_thread(); + + goto _next; + + } + pcmdpriv->cmdthd_running=_FALSE; + + + // free all cmd_obj resources + do{ + pcmd = rtw_dequeue_cmd(pcmdpriv); + if(pcmd==NULL) + break; + + //DBG_871X("%s: leaving... drop cmdcode:%u\n", __FUNCTION__, pcmd->cmdcode); + + rtw_free_cmd_obj(pcmd); + }while(1); + + _rtw_up_sema(&pcmdpriv->terminate_cmdthread_sema); + +_func_exit_; + + thread_exit(); + +} + + +#ifdef CONFIG_EVENT_THREAD_MODE +u32 rtw_enqueue_evt(struct evt_priv *pevtpriv, struct evt_obj *obj) +{ + _irqL irqL; + int res; + _queue *queue = &pevtpriv->evt_queue; + +_func_enter_; + + res = _SUCCESS; + + if (obj == NULL) { + res = _FAIL; + goto exit; + } + + _enter_critical_bh(&queue->lock, &irqL); + + rtw_list_insert_tail(&obj->list, &queue->queue); + + _exit_critical_bh(&queue->lock, &irqL); + + //rtw_evt_notify_isr(pevtpriv); + +exit: + +_func_exit_; + + return res; +} + +struct evt_obj *rtw_dequeue_evt(_queue *queue) +{ + _irqL irqL; + struct evt_obj *pevtobj; + +_func_enter_; + + _enter_critical_bh(&queue->lock, &irqL); + + if (rtw_is_list_empty(&(queue->queue))) + pevtobj = NULL; + else + { + pevtobj = LIST_CONTAINOR(get_next(&(queue->queue)), struct evt_obj, list); + rtw_list_delete(&pevtobj->list); + } + + _exit_critical_bh(&queue->lock, &irqL); + +_func_exit_; + + return pevtobj; +} + +void rtw_free_evt_obj(struct evt_obj *pevtobj) +{ +_func_enter_; + + if(pevtobj->parmbuf) + rtw_mfree((unsigned char*)pevtobj->parmbuf, pevtobj->evtsz); + + rtw_mfree((unsigned char*)pevtobj, sizeof(struct evt_obj)); + +_func_exit_; +} + +void rtw_evt_notify_isr(struct evt_priv *pevtpriv) +{ +_func_enter_; + pevtpriv->evt_done_cnt++; + _rtw_up_sema(&(pevtpriv->evt_notify)); +_func_exit_; +} +#endif + + +/* +u8 rtw_setstandby_cmd(unsigned char *adapter) +*/ +u8 rtw_setstandby_cmd(_adapter *padapter, uint action) +{ + struct cmd_obj* ph2c; + struct usb_suspend_parm* psetusbsuspend; + struct cmd_priv *pcmdpriv=&padapter->cmdpriv; + + u8 ret = _SUCCESS; + +_func_enter_; + + ph2c = (struct cmd_obj*)rtw_zmalloc(sizeof(struct cmd_obj)); + if (ph2c == NULL) { + ret = _FAIL; + goto exit; + } + + psetusbsuspend = (struct usb_suspend_parm*)rtw_zmalloc(sizeof(struct usb_suspend_parm)); + if (psetusbsuspend == NULL) { + rtw_mfree((u8 *) ph2c, sizeof(struct cmd_obj)); + ret = _FAIL; + goto exit; + } + + psetusbsuspend->action = action; + + init_h2fwcmd_w_parm_no_rsp(ph2c, psetusbsuspend, GEN_CMD_CODE(_SetUsbSuspend)); + + ret = rtw_enqueue_cmd(pcmdpriv, ph2c); + +exit: + +_func_exit_; + + return ret; +} + +/* +rtw_sitesurvey_cmd(~) + ### NOTE:#### (!!!!) + MUST TAKE CARE THAT BEFORE CALLING THIS FUNC, YOU SHOULD HAVE LOCKED pmlmepriv->lock +*/ +u8 rtw_sitesurvey_cmd(_adapter *padapter, NDIS_802_11_SSID *ssid, int ssid_num, + struct rtw_ieee80211_channel *ch, int ch_num) +{ + u8 res = _FAIL; + struct cmd_obj *ph2c; + struct sitesurvey_parm *psurveyPara; + struct cmd_priv *pcmdpriv = &padapter->cmdpriv; + struct mlme_priv *pmlmepriv = &padapter->mlmepriv; + +_func_enter_; + +#ifdef CONFIG_LPS + if(check_fwstate(pmlmepriv, _FW_LINKED) == _TRUE){ + rtw_lps_ctrl_wk_cmd(padapter, LPS_CTRL_SCAN, 1); + } +#endif + +#ifdef CONFIG_P2P_PS + if (check_fwstate(pmlmepriv, _FW_LINKED) == _TRUE) { + p2p_ps_wk_cmd(padapter, P2P_PS_SCAN, 1); + } +#endif // CONFIG_P2P_PS + + ph2c = (struct cmd_obj*)rtw_zmalloc(sizeof(struct cmd_obj)); + if (ph2c == NULL) + return _FAIL; + + psurveyPara = (struct sitesurvey_parm*)rtw_zmalloc(sizeof(struct sitesurvey_parm)); + if (psurveyPara == NULL) { + rtw_mfree((unsigned char*) ph2c, sizeof(struct cmd_obj)); + return _FAIL; + } + + rtw_free_network_queue(padapter, _FALSE); + + RT_TRACE(_module_rtl871x_cmd_c_, _drv_info_, ("\nflush network queue\n\n")); + + init_h2fwcmd_w_parm_no_rsp(ph2c, psurveyPara, GEN_CMD_CODE(_SiteSurvey)); + + /* psurveyPara->bsslimit = 48; */ + psurveyPara->scan_mode = pmlmepriv->scan_mode; + + /* prepare ssid list */ + if (ssid) { + int i; + for (i=0; issid[i], &ssid[i], sizeof(NDIS_802_11_SSID)); + psurveyPara->ssid_num++; + if (0) + DBG_871X(FUNC_ADPT_FMT" ssid:(%s, %d)\n", FUNC_ADPT_ARG(padapter), + psurveyPara->ssid[i].Ssid, psurveyPara->ssid[i].SsidLength); + } + } + } + + /* prepare channel list */ + if (ch) { + int i; + for (i=0; ich[i], &ch[i], sizeof(struct rtw_ieee80211_channel)); + psurveyPara->ch_num++; + if (0) + DBG_871X(FUNC_ADPT_FMT" ch:%u\n", FUNC_ADPT_ARG(padapter), + psurveyPara->ch[i].hw_value); + } + } + } + + set_fwstate(pmlmepriv, _FW_UNDER_SURVEY); + + res = rtw_enqueue_cmd(pcmdpriv, ph2c); + + if(res == _SUCCESS) { + + pmlmepriv->scan_start_time = rtw_get_current_time(); + +#ifdef CONFIG_STA_MODE_SCAN_UNDER_AP_MODE + if (padapter->pbuddy_adapter == NULL ) + goto full_scan_timeout; + if((padapter->pbuddy_adapter->mlmeextpriv.mlmext_info.state&0x03) == WIFI_FW_AP_STATE) + _set_timer(&pmlmepriv->scan_to_timer, + SURVEY_TO * ( padapter->mlmeextpriv.max_chan_nums + ( padapter->mlmeextpriv.max_chan_nums / RTW_SCAN_NUM_OF_CH ) * RTW_STAY_AP_CH_MILLISECOND ) + 1000 ); + else +#endif //CONFIG_STA_MODE_SCAN_UNDER_AP_MODE +full_scan_timeout: + _set_timer(&pmlmepriv->scan_to_timer, SCANNING_TIMEOUT); + + rtw_led_control(padapter, LED_CTL_SITE_SURVEY); + + pmlmepriv->scan_interval = SCAN_INTERVAL;// 30*2 sec = 60sec + } else { + _clr_fwstate_(pmlmepriv, _FW_UNDER_SURVEY); + } + +_func_exit_; + + return res; +} + +u8 rtw_setdatarate_cmd(_adapter *padapter, u8 *rateset) +{ + struct cmd_obj* ph2c; + struct setdatarate_parm* pbsetdataratepara; + struct cmd_priv* pcmdpriv = &padapter->cmdpriv; + u8 res = _SUCCESS; + +_func_enter_; + + ph2c = (struct cmd_obj*)rtw_zmalloc(sizeof(struct cmd_obj)); + if (ph2c == NULL) { + res = _FAIL; + goto exit; + } + + pbsetdataratepara = (struct setdatarate_parm*)rtw_zmalloc(sizeof(struct setdatarate_parm)); + if (pbsetdataratepara == NULL) { + rtw_mfree((u8 *) ph2c, sizeof(struct cmd_obj)); + res = _FAIL; + goto exit; + } + + init_h2fwcmd_w_parm_no_rsp(ph2c, pbsetdataratepara, GEN_CMD_CODE(_SetDataRate)); +#ifdef MP_FIRMWARE_OFFLOAD + pbsetdataratepara->curr_rateidx = *(u32*)rateset; +// _rtw_memcpy(pbsetdataratepara, rateset, sizeof(u32)); +#else + pbsetdataratepara->mac_id = 5; + _rtw_memcpy(pbsetdataratepara->datarates, rateset, NumRates); +#endif + res = rtw_enqueue_cmd(pcmdpriv, ph2c); +exit: + +_func_exit_; + + return res; +} + +u8 rtw_setbasicrate_cmd(_adapter *padapter, u8 *rateset) +{ + struct cmd_obj* ph2c; + struct setbasicrate_parm* pssetbasicratepara; + struct cmd_priv* pcmdpriv=&padapter->cmdpriv; + u8 res = _SUCCESS; + +_func_enter_; + + ph2c = (struct cmd_obj*)rtw_zmalloc(sizeof(struct cmd_obj)); + if (ph2c == NULL) { + res= _FAIL; + goto exit; + } + pssetbasicratepara = (struct setbasicrate_parm*)rtw_zmalloc(sizeof(struct setbasicrate_parm)); + + if (pssetbasicratepara == NULL) { + rtw_mfree((u8*) ph2c, sizeof(struct cmd_obj)); + res = _FAIL; + goto exit; + } + + init_h2fwcmd_w_parm_no_rsp(ph2c, pssetbasicratepara, _SetBasicRate_CMD_); + + _rtw_memcpy(pssetbasicratepara->basicrates, rateset, NumRates); + + res = rtw_enqueue_cmd(pcmdpriv, ph2c); +exit: + +_func_exit_; + + return res; +} + + +/* +unsigned char rtw_setphy_cmd(unsigned char *adapter) + +1. be called only after rtw_update_registrypriv_dev_network( ~) or mp testing program +2. for AdHoc/Ap mode or mp mode? + +*/ +u8 rtw_setphy_cmd(_adapter *padapter, u8 modem, u8 ch) +{ + struct cmd_obj* ph2c; + struct setphy_parm* psetphypara; + struct cmd_priv *pcmdpriv=&padapter->cmdpriv; +// struct mlme_priv *pmlmepriv = &padapter->mlmepriv; +// struct registry_priv* pregistry_priv = &padapter->registrypriv; + u8 res=_SUCCESS; + +_func_enter_; + + ph2c = (struct cmd_obj*)rtw_zmalloc(sizeof(struct cmd_obj)); + if(ph2c==NULL){ + res= _FAIL; + goto exit; + } + psetphypara = (struct setphy_parm*)rtw_zmalloc(sizeof(struct setphy_parm)); + + if(psetphypara==NULL){ + rtw_mfree((u8 *) ph2c, sizeof(struct cmd_obj)); + res= _FAIL; + goto exit; + } + + init_h2fwcmd_w_parm_no_rsp(ph2c, psetphypara, _SetPhy_CMD_); + + RT_TRACE(_module_rtl871x_cmd_c_,_drv_info_,("CH=%d, modem=%d", ch, modem)); + + psetphypara->modem = modem; + psetphypara->rfchannel = ch; + + res = rtw_enqueue_cmd(pcmdpriv, ph2c); +exit: +_func_exit_; + return res; +} + +u8 rtw_setbbreg_cmd(_adapter*padapter, u8 offset, u8 val) +{ + struct cmd_obj* ph2c; + struct writeBB_parm* pwritebbparm; + struct cmd_priv *pcmdpriv=&padapter->cmdpriv; + u8 res=_SUCCESS; +_func_enter_; + ph2c = (struct cmd_obj*)rtw_zmalloc(sizeof(struct cmd_obj)); + if(ph2c==NULL){ + res= _FAIL; + goto exit; + } + pwritebbparm = (struct writeBB_parm*)rtw_zmalloc(sizeof(struct writeBB_parm)); + + if(pwritebbparm==NULL){ + rtw_mfree((u8 *) ph2c, sizeof(struct cmd_obj)); + res= _FAIL; + goto exit; + } + + init_h2fwcmd_w_parm_no_rsp(ph2c, pwritebbparm, GEN_CMD_CODE(_SetBBReg)); + + pwritebbparm->offset = offset; + pwritebbparm->value = val; + + res = rtw_enqueue_cmd(pcmdpriv, ph2c); +exit: +_func_exit_; + return res; +} + +u8 rtw_getbbreg_cmd(_adapter *padapter, u8 offset, u8 *pval) +{ + struct cmd_obj* ph2c; + struct readBB_parm* prdbbparm; + struct cmd_priv *pcmdpriv=&padapter->cmdpriv; + u8 res=_SUCCESS; + +_func_enter_; + ph2c = (struct cmd_obj*)rtw_zmalloc(sizeof(struct cmd_obj)); + if(ph2c==NULL){ + res=_FAIL; + goto exit; + } + prdbbparm = (struct readBB_parm*)rtw_zmalloc(sizeof(struct readBB_parm)); + + if(prdbbparm ==NULL){ + rtw_mfree((unsigned char *) ph2c, sizeof(struct cmd_obj)); + return _FAIL; + } + + _rtw_init_listhead(&ph2c->list); + ph2c->cmdcode =GEN_CMD_CODE(_GetBBReg); + ph2c->parmbuf = (unsigned char *)prdbbparm; + ph2c->cmdsz = sizeof(struct readBB_parm); + ph2c->rsp = pval; + ph2c->rspsz = sizeof(struct readBB_rsp); + + prdbbparm ->offset = offset; + + res = rtw_enqueue_cmd(pcmdpriv, ph2c); +exit: +_func_exit_; + return res; +} + +u8 rtw_setrfreg_cmd(_adapter *padapter, u8 offset, u32 val) +{ + struct cmd_obj* ph2c; + struct writeRF_parm* pwriterfparm; + struct cmd_priv *pcmdpriv=&padapter->cmdpriv; + u8 res=_SUCCESS; +_func_enter_; + ph2c = (struct cmd_obj*)rtw_zmalloc(sizeof(struct cmd_obj)); + if(ph2c==NULL){ + res= _FAIL; + goto exit; + } + pwriterfparm = (struct writeRF_parm*)rtw_zmalloc(sizeof(struct writeRF_parm)); + + if(pwriterfparm==NULL){ + rtw_mfree((u8 *) ph2c, sizeof(struct cmd_obj)); + res= _FAIL; + goto exit; + } + + init_h2fwcmd_w_parm_no_rsp(ph2c, pwriterfparm, GEN_CMD_CODE(_SetRFReg)); + + pwriterfparm->offset = offset; + pwriterfparm->value = val; + + res = rtw_enqueue_cmd(pcmdpriv, ph2c); +exit: +_func_exit_; + return res; +} + +u8 rtw_getrfreg_cmd(_adapter *padapter, u8 offset, u8 *pval) +{ + struct cmd_obj* ph2c; + struct readRF_parm* prdrfparm; + struct cmd_priv *pcmdpriv=&padapter->cmdpriv; + u8 res=_SUCCESS; + +_func_enter_; + + ph2c = (struct cmd_obj*)rtw_zmalloc(sizeof(struct cmd_obj)); + if(ph2c==NULL){ + res= _FAIL; + goto exit; + } + + prdrfparm = (struct readRF_parm*)rtw_zmalloc(sizeof(struct readRF_parm)); + if(prdrfparm ==NULL){ + rtw_mfree((u8 *) ph2c, sizeof(struct cmd_obj)); + res= _FAIL; + goto exit; + } + + _rtw_init_listhead(&ph2c->list); + ph2c->cmdcode =GEN_CMD_CODE(_GetRFReg); + ph2c->parmbuf = (unsigned char *)prdrfparm; + ph2c->cmdsz = sizeof(struct readRF_parm); + ph2c->rsp = pval; + ph2c->rspsz = sizeof(struct readRF_rsp); + + prdrfparm ->offset = offset; + + res = rtw_enqueue_cmd(pcmdpriv, ph2c); + +exit: + +_func_exit_; + + return res; +} + +void rtw_getbbrfreg_cmdrsp_callback(_adapter* padapter, struct cmd_obj *pcmd) +{ + _func_enter_; + + //rtw_free_cmd_obj(pcmd); + rtw_mfree((unsigned char*) pcmd->parmbuf, pcmd->cmdsz); + rtw_mfree((unsigned char*) pcmd, sizeof(struct cmd_obj)); + +#ifdef CONFIG_MP_INCLUDED + padapter->mppriv.workparam.bcompleted= _TRUE; +#endif +_func_exit_; +} + +void rtw_readtssi_cmdrsp_callback(_adapter* padapter, struct cmd_obj *pcmd) +{ + _func_enter_; + + rtw_mfree((unsigned char*) pcmd->parmbuf, pcmd->cmdsz); + rtw_mfree((unsigned char*) pcmd, sizeof(struct cmd_obj)); + +#ifdef CONFIG_MP_INCLUDED + padapter->mppriv.workparam.bcompleted= _TRUE; +#endif + +_func_exit_; +} + +u8 rtw_createbss_cmd(_adapter *padapter) +{ + struct cmd_obj* pcmd; + struct cmd_priv *pcmdpriv=&padapter->cmdpriv; + struct mlme_priv *pmlmepriv = &padapter->mlmepriv; + WLAN_BSSID_EX *pdev_network = &padapter->registrypriv.dev_network; + u8 res=_SUCCESS; + +_func_enter_; + + rtw_led_control(padapter, LED_CTL_START_TO_LINK); + + if (pmlmepriv->assoc_ssid.SsidLength == 0){ + RT_TRACE(_module_rtl871x_cmd_c_,_drv_info_,(" createbss for Any SSid:%s\n",pmlmepriv->assoc_ssid.Ssid)); + } else { + RT_TRACE(_module_rtl871x_cmd_c_,_drv_info_,(" createbss for SSid:%s\n", pmlmepriv->assoc_ssid.Ssid)); + } + + pcmd = (struct cmd_obj*)rtw_zmalloc(sizeof(struct cmd_obj)); + if(pcmd==NULL){ + res= _FAIL; + goto exit; + } + + _rtw_init_listhead(&pcmd->list); + pcmd->cmdcode = _CreateBss_CMD_; + pcmd->parmbuf = (unsigned char *)pdev_network; + pcmd->cmdsz = get_WLAN_BSSID_EX_sz((WLAN_BSSID_EX*)pdev_network); + pcmd->rsp = NULL; + pcmd->rspsz = 0; + + pdev_network->Length = pcmd->cmdsz; + +#ifdef CONFIG_RTL8712 + //notes: translate IELength & Length after assign the Length to cmdsz; + pdev_network->Length = cpu_to_le32(pcmd->cmdsz); + pdev_network->IELength = cpu_to_le32(pdev_network->IELength); + pdev_network->Ssid.SsidLength = cpu_to_le32(pdev_network->Ssid.SsidLength); +#endif + + res = rtw_enqueue_cmd(pcmdpriv, pcmd); + +exit: + +_func_exit_; + + return res; +} + +u8 rtw_createbss_cmd_ex(_adapter *padapter, unsigned char *pbss, unsigned int sz) +{ + struct cmd_obj* pcmd; + struct cmd_priv *pcmdpriv=&padapter->cmdpriv; + u8 res=_SUCCESS; + +_func_enter_; + + pcmd = (struct cmd_obj*)rtw_zmalloc(sizeof(struct cmd_obj)); + if(pcmd==NULL){ + res= _FAIL; + goto exit; + } + + _rtw_init_listhead(&pcmd->list); + pcmd->cmdcode = GEN_CMD_CODE(_CreateBss); + pcmd->parmbuf = pbss; + pcmd->cmdsz = sz; + pcmd->rsp = NULL; + pcmd->rspsz = 0; + + res = rtw_enqueue_cmd(pcmdpriv, pcmd); + +exit: + +_func_exit_; + + return res; +} + +u8 rtw_joinbss_cmd(_adapter *padapter, struct wlan_network* pnetwork) +{ + u8 *auth, res = _SUCCESS; + uint t_len = 0; + WLAN_BSSID_EX *psecnetwork; + struct cmd_obj *pcmd; + struct cmd_priv *pcmdpriv=&padapter->cmdpriv; + struct mlme_priv *pmlmepriv = &padapter->mlmepriv; + struct qos_priv *pqospriv= &pmlmepriv->qospriv; + struct security_priv *psecuritypriv=&padapter->securitypriv; + struct registry_priv *pregistrypriv = &padapter->registrypriv; + struct ht_priv *phtpriv = &pmlmepriv->htpriv; + NDIS_802_11_NETWORK_INFRASTRUCTURE ndis_network_mode = pnetwork->network.InfrastructureMode; + struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; + struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info); + +_func_enter_; + + rtw_led_control(padapter, LED_CTL_START_TO_LINK); + + if (pmlmepriv->assoc_ssid.SsidLength == 0){ + RT_TRACE(_module_rtl871x_cmd_c_, _drv_info_, ("+Join cmd: Any SSid\n")); + } else { + RT_TRACE(_module_rtl871x_cmd_c_, _drv_notice_, ("+Join cmd: SSid=[%s]\n", pmlmepriv->assoc_ssid.Ssid)); + } + + pcmd = (struct cmd_obj*)rtw_zmalloc(sizeof(struct cmd_obj)); + if(pcmd==NULL){ + res=_FAIL; + RT_TRACE(_module_rtl871x_cmd_c_, _drv_err_, ("rtw_joinbss_cmd: memory allocate for cmd_obj fail!!!\n")); + goto exit; + } + /* // for IEs is pointer + t_len = sizeof (ULONG) + sizeof (NDIS_802_11_MAC_ADDRESS) + 2 + + sizeof (NDIS_802_11_SSID) + sizeof (ULONG) + + sizeof (NDIS_802_11_RSSI) + sizeof (NDIS_802_11_NETWORK_TYPE) + + sizeof (NDIS_802_11_CONFIGURATION) + + sizeof (NDIS_802_11_NETWORK_INFRASTRUCTURE) + + sizeof (NDIS_802_11_RATES_EX)+ sizeof(WLAN_PHY_INFO)+ sizeof (ULONG) + MAX_IE_SZ; + */ + //for IEs is fix buf size + t_len = sizeof(WLAN_BSSID_EX); + + + //for hidden ap to set fw_state here + if (check_fwstate(pmlmepriv, WIFI_STATION_STATE|WIFI_ADHOC_STATE) != _TRUE) + { + switch(ndis_network_mode) + { + case Ndis802_11IBSS: + set_fwstate(pmlmepriv, WIFI_ADHOC_STATE); + break; + + case Ndis802_11Infrastructure: + set_fwstate(pmlmepriv, WIFI_STATION_STATE); + break; + + case Ndis802_11APMode: + case Ndis802_11AutoUnknown: + case Ndis802_11InfrastructureMax: + break; + + } + } + + psecnetwork=(WLAN_BSSID_EX *)&psecuritypriv->sec_bss; + if(psecnetwork==NULL) + { + if(pcmd !=NULL) + rtw_mfree((unsigned char *)pcmd, sizeof(struct cmd_obj)); + + res=_FAIL; + + RT_TRACE(_module_rtl871x_cmd_c_, _drv_err_, ("rtw_joinbss_cmd :psecnetwork==NULL!!!\n")); + + goto exit; + } + + _rtw_memset(psecnetwork, 0, t_len); + + _rtw_memcpy(psecnetwork, &pnetwork->network, get_WLAN_BSSID_EX_sz(&pnetwork->network)); + + auth=&psecuritypriv->authenticator_ie[0]; + psecuritypriv->authenticator_ie[0]=(unsigned char)psecnetwork->IELength; + + if((psecnetwork->IELength-12) < (256-1)) { + _rtw_memcpy(&psecuritypriv->authenticator_ie[1], &psecnetwork->IEs[12], psecnetwork->IELength-12); + } else { + _rtw_memcpy(&psecuritypriv->authenticator_ie[1], &psecnetwork->IEs[12], (256-1)); + } + + psecnetwork->IELength = 0; + // Added by Albert 2009/02/18 + // If the the driver wants to use the bssid to create the connection. + // If not, we have to copy the connecting AP's MAC address to it so that + // the driver just has the bssid information for PMKIDList searching. + + if ( pmlmepriv->assoc_by_bssid == _FALSE ) + { + _rtw_memcpy( &pmlmepriv->assoc_bssid[ 0 ], &pnetwork->network.MacAddress[ 0 ], ETH_ALEN ); + } + + psecnetwork->IELength = rtw_restruct_sec_ie(padapter, &pnetwork->network.IEs[0], &psecnetwork->IEs[0], pnetwork->network.IELength); + + + pqospriv->qos_option = 0; + + if(pregistrypriv->wmm_enable) + { + u32 tmp_len; + + tmp_len = rtw_restruct_wmm_ie(padapter, &pnetwork->network.IEs[0], &psecnetwork->IEs[0], pnetwork->network.IELength, psecnetwork->IELength); + + if (psecnetwork->IELength != tmp_len) + { + psecnetwork->IELength = tmp_len; + pqospriv->qos_option = 1; //There is WMM IE in this corresp. beacon + } + else + { + pqospriv->qos_option = 0;//There is no WMM IE in this corresp. beacon + } + } + +#ifdef CONFIG_80211N_HT + phtpriv->ht_option = _FALSE; + if(pregistrypriv->ht_enable) + { + // Added by Albert 2010/06/23 + // For the WEP mode, we will use the bg mode to do the connection to avoid some IOT issue. + // Especially for Realtek 8192u SoftAP. + if ( ( padapter->securitypriv.dot11PrivacyAlgrthm != _WEP40_ ) && + ( padapter->securitypriv.dot11PrivacyAlgrthm != _WEP104_ ) && + ( padapter->securitypriv.dot11PrivacyAlgrthm != _TKIP_ )) + { + //rtw_restructure_ht_ie + rtw_restructure_ht_ie(padapter, &pnetwork->network.IEs[0], &psecnetwork->IEs[0], + pnetwork->network.IELength, &psecnetwork->IELength, (u8)psecnetwork->Configuration.DSConfig ); + } + } + +#endif + + pmlmeinfo->assoc_AP_vendor = check_assoc_AP(pnetwork->network.IEs, pnetwork->network.IELength); + + #if 0 + psecuritypriv->supplicant_ie[0]=(u8)psecnetwork->IELength; + + if(psecnetwork->IELength < (256-1)) + { + _rtw_memcpy(&psecuritypriv->supplicant_ie[1], &psecnetwork->IEs[0], psecnetwork->IELength); + } + else + { + _rtw_memcpy(&psecuritypriv->supplicant_ie[1], &psecnetwork->IEs[0], (256-1)); + } + #endif + + pcmd->cmdsz = get_WLAN_BSSID_EX_sz(psecnetwork);//get cmdsz before endian conversion + +#ifdef CONFIG_RTL8712 + //wlan_network endian conversion + psecnetwork->Length = cpu_to_le32(psecnetwork->Length); + psecnetwork->Ssid.SsidLength= cpu_to_le32(psecnetwork->Ssid.SsidLength); + psecnetwork->Privacy = cpu_to_le32(psecnetwork->Privacy); + psecnetwork->Rssi = cpu_to_le32(psecnetwork->Rssi); + psecnetwork->NetworkTypeInUse = cpu_to_le32(psecnetwork->NetworkTypeInUse); + psecnetwork->Configuration.ATIMWindow = cpu_to_le32(psecnetwork->Configuration.ATIMWindow); + psecnetwork->Configuration.BeaconPeriod = cpu_to_le32(psecnetwork->Configuration.BeaconPeriod); + psecnetwork->Configuration.DSConfig = cpu_to_le32(psecnetwork->Configuration.DSConfig); + psecnetwork->Configuration.FHConfig.DwellTime=cpu_to_le32(psecnetwork->Configuration.FHConfig.DwellTime); + psecnetwork->Configuration.FHConfig.HopPattern=cpu_to_le32(psecnetwork->Configuration.FHConfig.HopPattern); + psecnetwork->Configuration.FHConfig.HopSet=cpu_to_le32(psecnetwork->Configuration.FHConfig.HopSet); + psecnetwork->Configuration.FHConfig.Length=cpu_to_le32(psecnetwork->Configuration.FHConfig.Length); + psecnetwork->Configuration.Length = cpu_to_le32(psecnetwork->Configuration.Length); + psecnetwork->InfrastructureMode = cpu_to_le32(psecnetwork->InfrastructureMode); + psecnetwork->IELength = cpu_to_le32(psecnetwork->IELength); +#endif + + _rtw_init_listhead(&pcmd->list); + pcmd->cmdcode = _JoinBss_CMD_;//GEN_CMD_CODE(_JoinBss) + pcmd->parmbuf = (unsigned char *)psecnetwork; + pcmd->rsp = NULL; + pcmd->rspsz = 0; + + res = rtw_enqueue_cmd(pcmdpriv, pcmd); + +exit: + +_func_exit_; + + return res; +} + +u8 rtw_disassoc_cmd(_adapter*padapter, u32 deauth_timeout_ms, bool enqueue) /* for sta_mode */ +{ + struct cmd_obj *cmdobj = NULL; + struct disconnect_parm *param = NULL; + struct cmd_priv *cmdpriv = &padapter->cmdpriv; + u8 res = _SUCCESS; + +_func_enter_; + + RT_TRACE(_module_rtl871x_cmd_c_, _drv_notice_, ("+rtw_disassoc_cmd\n")); + + /* prepare cmd parameter */ + param = (struct disconnect_parm *)rtw_zmalloc(sizeof(*param)); + if (param == NULL) { + res = _FAIL; + goto exit; + } + param->deauth_timeout_ms = deauth_timeout_ms; + + if (enqueue) { + /* need enqueue, prepare cmd_obj and enqueue */ + cmdobj = (struct cmd_obj *)rtw_zmalloc(sizeof(*cmdobj)); + if (cmdobj == NULL) { + res = _FAIL; + rtw_mfree((u8 *)param, sizeof(*param)); + goto exit; + } + init_h2fwcmd_w_parm_no_rsp(cmdobj, param, _DisConnect_CMD_); + res = rtw_enqueue_cmd(cmdpriv, cmdobj); + } else { + /* no need to enqueue, do the cmd hdl directly and free cmd parameter */ + if (H2C_SUCCESS != disconnect_hdl(padapter, (u8 *)param)) + res = _FAIL; + rtw_mfree((u8 *)param, sizeof(*param)); + } + +exit: + +_func_exit_; + + return res; +} + +u8 rtw_setopmode_cmd(_adapter *padapter, NDIS_802_11_NETWORK_INFRASTRUCTURE networktype) +{ + struct cmd_obj* ph2c; + struct setopmode_parm* psetop; + + struct cmd_priv *pcmdpriv= &padapter->cmdpriv; + u8 res=_SUCCESS; + +_func_enter_; + + ph2c = (struct cmd_obj*)rtw_zmalloc(sizeof(struct cmd_obj)); + if(ph2c==NULL){ + res= _FALSE; + goto exit; + } + psetop = (struct setopmode_parm*)rtw_zmalloc(sizeof(struct setopmode_parm)); + + if(psetop==NULL){ + rtw_mfree((u8 *) ph2c, sizeof(struct cmd_obj)); + res=_FALSE; + goto exit; + } + + init_h2fwcmd_w_parm_no_rsp(ph2c, psetop, _SetOpMode_CMD_); + psetop->mode = (u8)networktype; + + res = rtw_enqueue_cmd(pcmdpriv, ph2c); + +exit: + +_func_exit_; + + return res; +} + +u8 rtw_setstakey_cmd(_adapter *padapter, u8 *psta, u8 unicast_key) +{ + struct cmd_obj* ph2c; + struct set_stakey_parm *psetstakey_para; + struct cmd_priv *pcmdpriv=&padapter->cmdpriv; + struct set_stakey_rsp *psetstakey_rsp = NULL; + + struct mlme_priv *pmlmepriv = &padapter->mlmepriv; + struct security_priv *psecuritypriv = &padapter->securitypriv; + struct sta_info* sta = (struct sta_info* )psta; + u8 res=_SUCCESS; + +_func_enter_; + + ph2c = (struct cmd_obj*)rtw_zmalloc(sizeof(struct cmd_obj)); + if ( ph2c == NULL){ + res= _FAIL; + goto exit; + } + + psetstakey_para = (struct set_stakey_parm*)rtw_zmalloc(sizeof(struct set_stakey_parm)); + if(psetstakey_para==NULL){ + rtw_mfree((u8 *) ph2c, sizeof(struct cmd_obj)); + res=_FAIL; + goto exit; + } + + psetstakey_rsp = (struct set_stakey_rsp*)rtw_zmalloc(sizeof(struct set_stakey_rsp)); + if(psetstakey_rsp == NULL){ + rtw_mfree((u8 *) ph2c, sizeof(struct cmd_obj)); + rtw_mfree((u8 *) psetstakey_para, sizeof(struct set_stakey_parm)); + res=_FAIL; + goto exit; + } + + init_h2fwcmd_w_parm_no_rsp(ph2c, psetstakey_para, _SetStaKey_CMD_); + ph2c->rsp = (u8 *) psetstakey_rsp; + ph2c->rspsz = sizeof(struct set_stakey_rsp); + + _rtw_memcpy(psetstakey_para->addr, sta->hwaddr,ETH_ALEN); + + if(check_fwstate(pmlmepriv, WIFI_STATION_STATE)){ +#ifdef CONFIG_TDLS + if(sta->tdls_sta_state&TDLS_LINKED_STATE) + psetstakey_para->algorithm=(u8)sta->dot118021XPrivacy; + else +#endif //CONFIG_TDLS + psetstakey_para->algorithm =(unsigned char) psecuritypriv->dot11PrivacyAlgrthm; + }else{ + GET_ENCRY_ALGO(psecuritypriv, sta, psetstakey_para->algorithm, _FALSE); + } + + if (unicast_key == _TRUE) { +#ifdef CONFIG_TDLS + if(sta->tdls_sta_state&TDLS_LINKED_STATE) + _rtw_memcpy(&psetstakey_para->key, sta->tpk.tk, 16); + else +#endif //CONFIG_TDLS + _rtw_memcpy(&psetstakey_para->key, &sta->dot118021x_UncstKey, 16); + } else { + _rtw_memcpy(&psetstakey_para->key, &psecuritypriv->dot118021XGrpKey[psecuritypriv->dot118021XGrpKeyid].skey, 16); + } + + //jeff: set this becasue at least sw key is ready + padapter->securitypriv.busetkipkey=_TRUE; + + res = rtw_enqueue_cmd(pcmdpriv, ph2c); + +exit: + +_func_exit_; + + return res; +} + +u8 rtw_clearstakey_cmd(_adapter *padapter, u8 *psta, u8 entry, u8 enqueue) +{ + struct cmd_obj* ph2c; + struct set_stakey_parm *psetstakey_para; + struct cmd_priv *pcmdpriv=&padapter->cmdpriv; + struct set_stakey_rsp *psetstakey_rsp = NULL; + struct mlme_priv *pmlmepriv = &padapter->mlmepriv; + struct security_priv *psecuritypriv = &padapter->securitypriv; + struct sta_info* sta = (struct sta_info* )psta; + u8 res=_SUCCESS; + +_func_enter_; + + if(!enqueue) + { + clear_cam_entry(padapter, entry); + } + else + { + ph2c = (struct cmd_obj*)rtw_zmalloc(sizeof(struct cmd_obj)); + if ( ph2c == NULL){ + res= _FAIL; + goto exit; + } + + psetstakey_para = (struct set_stakey_parm*)rtw_zmalloc(sizeof(struct set_stakey_parm)); + if(psetstakey_para==NULL){ + rtw_mfree((u8 *) ph2c, sizeof(struct cmd_obj)); + res=_FAIL; + goto exit; + } + + psetstakey_rsp = (struct set_stakey_rsp*)rtw_zmalloc(sizeof(struct set_stakey_rsp)); + if(psetstakey_rsp == NULL){ + rtw_mfree((u8 *) ph2c, sizeof(struct cmd_obj)); + rtw_mfree((u8 *) psetstakey_para, sizeof(struct set_stakey_parm)); + res=_FAIL; + goto exit; + } + + init_h2fwcmd_w_parm_no_rsp(ph2c, psetstakey_para, _SetStaKey_CMD_); + ph2c->rsp = (u8 *) psetstakey_rsp; + ph2c->rspsz = sizeof(struct set_stakey_rsp); + + _rtw_memcpy(psetstakey_para->addr, sta->hwaddr, ETH_ALEN); + + psetstakey_para->algorithm = _NO_PRIVACY_; + + psetstakey_para->id = entry; + + res = rtw_enqueue_cmd(pcmdpriv, ph2c); + + } + +exit: + +_func_exit_; + + return res; +} + +u8 rtw_setrttbl_cmd(_adapter *padapter, struct setratable_parm *prate_table) +{ + struct cmd_obj* ph2c; + struct setratable_parm * psetrttblparm; + struct cmd_priv *pcmdpriv=&padapter->cmdpriv; + u8 res=_SUCCESS; +_func_enter_; + + ph2c = (struct cmd_obj*)rtw_zmalloc(sizeof(struct cmd_obj)); + if(ph2c==NULL){ + res= _FAIL; + goto exit; + } + psetrttblparm = (struct setratable_parm*)rtw_zmalloc(sizeof(struct setratable_parm)); + + if(psetrttblparm==NULL){ + rtw_mfree((unsigned char *) ph2c, sizeof(struct cmd_obj)); + res= _FAIL; + goto exit; + } + + init_h2fwcmd_w_parm_no_rsp(ph2c, psetrttblparm, GEN_CMD_CODE(_SetRaTable)); + + _rtw_memcpy(psetrttblparm,prate_table,sizeof(struct setratable_parm)); + + res = rtw_enqueue_cmd(pcmdpriv, ph2c); +exit: +_func_exit_; + return res; + +} + +u8 rtw_getrttbl_cmd(_adapter *padapter, struct getratable_rsp *pval) +{ + struct cmd_obj* ph2c; + struct getratable_parm * pgetrttblparm; + struct cmd_priv *pcmdpriv=&padapter->cmdpriv; + u8 res=_SUCCESS; +_func_enter_; + + ph2c = (struct cmd_obj*)rtw_zmalloc(sizeof(struct cmd_obj)); + if(ph2c==NULL){ + res= _FAIL; + goto exit; + } + pgetrttblparm = (struct getratable_parm*)rtw_zmalloc(sizeof(struct getratable_parm)); + + if(pgetrttblparm==NULL){ + rtw_mfree((unsigned char *) ph2c, sizeof(struct cmd_obj)); + res= _FAIL; + goto exit; + } + +// init_h2fwcmd_w_parm_no_rsp(ph2c, psetrttblparm, GEN_CMD_CODE(_SetRaTable)); + + _rtw_init_listhead(&ph2c->list); + ph2c->cmdcode =GEN_CMD_CODE(_GetRaTable); + ph2c->parmbuf = (unsigned char *)pgetrttblparm; + ph2c->cmdsz = sizeof(struct getratable_parm); + ph2c->rsp = (u8*)pval; + ph2c->rspsz = sizeof(struct getratable_rsp); + + pgetrttblparm ->rsvd = 0x0; + + res = rtw_enqueue_cmd(pcmdpriv, ph2c); +exit: +_func_exit_; + return res; + +} + +u8 rtw_setassocsta_cmd(_adapter *padapter, u8 *mac_addr) +{ + struct cmd_priv *pcmdpriv = &padapter->cmdpriv; + struct cmd_obj* ph2c; + struct set_assocsta_parm *psetassocsta_para; + struct set_stakey_rsp *psetassocsta_rsp = NULL; + + u8 res=_SUCCESS; + +_func_enter_; + + ph2c = (struct cmd_obj*)rtw_zmalloc(sizeof(struct cmd_obj)); + if(ph2c==NULL){ + res= _FAIL; + goto exit; + } + + psetassocsta_para = (struct set_assocsta_parm*)rtw_zmalloc(sizeof(struct set_assocsta_parm)); + if(psetassocsta_para==NULL){ + rtw_mfree((u8 *) ph2c, sizeof(struct cmd_obj)); + res=_FAIL; + goto exit; + } + + psetassocsta_rsp = (struct set_stakey_rsp*)rtw_zmalloc(sizeof(struct set_assocsta_rsp)); + if(psetassocsta_rsp==NULL){ + rtw_mfree((u8 *) ph2c, sizeof(struct cmd_obj)); + rtw_mfree((u8 *) psetassocsta_para, sizeof(struct set_assocsta_parm)); + return _FAIL; + } + + init_h2fwcmd_w_parm_no_rsp(ph2c, psetassocsta_para, _SetAssocSta_CMD_); + ph2c->rsp = (u8 *) psetassocsta_rsp; + ph2c->rspsz = sizeof(struct set_assocsta_rsp); + + _rtw_memcpy(psetassocsta_para->addr, mac_addr,ETH_ALEN); + + res = rtw_enqueue_cmd(pcmdpriv, ph2c); + +exit: + +_func_exit_; + + return res; + } + +u8 rtw_addbareq_cmd(_adapter*padapter, u8 tid, u8 *addr) +{ + struct cmd_priv *pcmdpriv = &padapter->cmdpriv; + struct cmd_obj* ph2c; + struct addBaReq_parm *paddbareq_parm; + + u8 res=_SUCCESS; + +_func_enter_; + + ph2c = (struct cmd_obj*)rtw_zmalloc(sizeof(struct cmd_obj)); + if(ph2c==NULL){ + res= _FAIL; + goto exit; + } + + paddbareq_parm = (struct addBaReq_parm*)rtw_zmalloc(sizeof(struct addBaReq_parm)); + if(paddbareq_parm==NULL){ + rtw_mfree((unsigned char *)ph2c, sizeof(struct cmd_obj)); + res= _FAIL; + goto exit; + } + + paddbareq_parm->tid = tid; + _rtw_memcpy(paddbareq_parm->addr, addr, ETH_ALEN); + + init_h2fwcmd_w_parm_no_rsp(ph2c, paddbareq_parm, GEN_CMD_CODE(_AddBAReq)); + + //DBG_871X("rtw_addbareq_cmd, tid=%d\n", tid); + + //rtw_enqueue_cmd(pcmdpriv, ph2c); + res = rtw_enqueue_cmd(pcmdpriv, ph2c); + +exit: + +_func_exit_; + + return res; +} +//add for CONFIG_IEEE80211W, none 11w can use it +u8 rtw_reset_securitypriv_cmd(_adapter*padapter) +{ + struct cmd_obj* ph2c; + struct drvextra_cmd_parm *pdrvextra_cmd_parm; + struct cmd_priv *pcmdpriv=&padapter->cmdpriv; + u8 res=_SUCCESS; + +_func_enter_; + + ph2c = (struct cmd_obj*)rtw_zmalloc(sizeof(struct cmd_obj)); + if(ph2c==NULL){ + res= _FAIL; + goto exit; + } + + pdrvextra_cmd_parm = (struct drvextra_cmd_parm*)rtw_zmalloc(sizeof(struct drvextra_cmd_parm)); + if(pdrvextra_cmd_parm==NULL){ + rtw_mfree((unsigned char *)ph2c, sizeof(struct cmd_obj)); + res= _FAIL; + goto exit; + } + + pdrvextra_cmd_parm->ec_id = RESET_SECURITYPRIV; + pdrvextra_cmd_parm->type_size = 0; + pdrvextra_cmd_parm->pbuf = (u8 *)padapter; + + init_h2fwcmd_w_parm_no_rsp(ph2c, pdrvextra_cmd_parm, GEN_CMD_CODE(_Set_Drv_Extra)); + + + //rtw_enqueue_cmd(pcmdpriv, ph2c); + res = rtw_enqueue_cmd(pcmdpriv, ph2c); + +exit: + +_func_exit_; + + return res; + +} + +u8 rtw_free_assoc_resources_cmd(_adapter*padapter) +{ + struct cmd_obj* ph2c; + struct drvextra_cmd_parm *pdrvextra_cmd_parm; + struct cmd_priv *pcmdpriv=&padapter->cmdpriv; + u8 res=_SUCCESS; + +_func_enter_; + + ph2c = (struct cmd_obj*)rtw_zmalloc(sizeof(struct cmd_obj)); + if(ph2c==NULL){ + res= _FAIL; + goto exit; + } + + pdrvextra_cmd_parm = (struct drvextra_cmd_parm*)rtw_zmalloc(sizeof(struct drvextra_cmd_parm)); + if(pdrvextra_cmd_parm==NULL){ + rtw_mfree((unsigned char *)ph2c, sizeof(struct cmd_obj)); + res= _FAIL; + goto exit; + } + + pdrvextra_cmd_parm->ec_id = FREE_ASSOC_RESOURCES; + pdrvextra_cmd_parm->type_size = 0; + pdrvextra_cmd_parm->pbuf = (u8 *)padapter; + + init_h2fwcmd_w_parm_no_rsp(ph2c, pdrvextra_cmd_parm, GEN_CMD_CODE(_Set_Drv_Extra)); + + + //rtw_enqueue_cmd(pcmdpriv, ph2c); + res = rtw_enqueue_cmd(pcmdpriv, ph2c); + +exit: + +_func_exit_; + + return res; + +} + + +u8 rtw_dynamic_chk_wk_cmd(_adapter*padapter) +{ + struct cmd_obj* ph2c; + struct drvextra_cmd_parm *pdrvextra_cmd_parm; + struct cmd_priv *pcmdpriv=&padapter->cmdpriv; + u8 res=_SUCCESS; + +_func_enter_; + + if ((padapter->bDriverStopped == _TRUE)||(padapter->bSurpriseRemoved== _TRUE)) + goto exit; + + +#ifdef CONFIG_CONCURRENT_MODE + if (padapter->adapter_type != PRIMARY_ADAPTER && padapter->pbuddy_adapter) + pcmdpriv = &(padapter->pbuddy_adapter->cmdpriv); +#endif + + ph2c = (struct cmd_obj*)rtw_zmalloc(sizeof(struct cmd_obj)); + if(ph2c==NULL){ + res= _FAIL; + goto exit; + } + + pdrvextra_cmd_parm = (struct drvextra_cmd_parm*)rtw_zmalloc(sizeof(struct drvextra_cmd_parm)); + if(pdrvextra_cmd_parm==NULL){ + rtw_mfree((unsigned char *)ph2c, sizeof(struct cmd_obj)); + res= _FAIL; + goto exit; + } + + pdrvextra_cmd_parm->ec_id = DYNAMIC_CHK_WK_CID; + pdrvextra_cmd_parm->type_size = 0; + pdrvextra_cmd_parm->pbuf = (u8 *)padapter; + + init_h2fwcmd_w_parm_no_rsp(ph2c, pdrvextra_cmd_parm, GEN_CMD_CODE(_Set_Drv_Extra)); + + + //rtw_enqueue_cmd(pcmdpriv, ph2c); + res = rtw_enqueue_cmd(pcmdpriv, ph2c); + +exit: + +_func_exit_; + + return res; + +} + +u8 rtw_set_ch_cmd(_adapter*padapter, u8 ch, u8 bw, u8 ch_offset, u8 enqueue) +{ + struct cmd_obj *pcmdobj; + struct set_ch_parm *set_ch_parm; + struct cmd_priv *pcmdpriv = &padapter->cmdpriv; + + u8 res=_SUCCESS; + +_func_enter_; + + DBG_871X(FUNC_NDEV_FMT" ch:%u, bw:%u, ch_offset:%u\n", + FUNC_NDEV_ARG(padapter->pnetdev), ch, bw, ch_offset); + + /* check input parameter */ + + /* prepare cmd parameter */ + set_ch_parm = (struct set_ch_parm *)rtw_zmalloc(sizeof(*set_ch_parm)); + if (set_ch_parm == NULL) { + res= _FAIL; + goto exit; + } + set_ch_parm->ch = ch; + set_ch_parm->bw = bw; + set_ch_parm->ch_offset = ch_offset; + + if (enqueue) { + /* need enqueue, prepare cmd_obj and enqueue */ + pcmdobj = (struct cmd_obj*)rtw_zmalloc(sizeof(struct cmd_obj)); + if(pcmdobj == NULL){ + rtw_mfree((u8 *)set_ch_parm, sizeof(*set_ch_parm)); + res=_FAIL; + goto exit; + } + + init_h2fwcmd_w_parm_no_rsp(pcmdobj, set_ch_parm, GEN_CMD_CODE(_SetChannel)); + res = rtw_enqueue_cmd(pcmdpriv, pcmdobj); + } else { + /* no need to enqueue, do the cmd hdl directly and free cmd parameter */ + if( H2C_SUCCESS !=set_ch_hdl(padapter, (u8 *)set_ch_parm) ) + res = _FAIL; + + rtw_mfree((u8 *)set_ch_parm, sizeof(*set_ch_parm)); + } + + /* do something based on res... */ + +exit: + + DBG_871X(FUNC_NDEV_FMT" res:%u\n", FUNC_NDEV_ARG(padapter->pnetdev), res); + +_func_exit_; + + return res; +} + +u8 rtw_set_chplan_cmd(_adapter*padapter, u8 chplan, u8 enqueue) +{ + struct cmd_obj* pcmdobj; + struct SetChannelPlan_param *setChannelPlan_param; + struct cmd_priv *pcmdpriv = &padapter->cmdpriv; + + u8 res=_SUCCESS; + +_func_enter_; + + RT_TRACE(_module_rtl871x_cmd_c_, _drv_notice_, ("+rtw_set_chplan_cmd\n")); + + //check input parameter + if(!rtw_is_channel_plan_valid(chplan)) { + res = _FAIL; + goto exit; + } + + //prepare cmd parameter + setChannelPlan_param = (struct SetChannelPlan_param *)rtw_zmalloc(sizeof(struct SetChannelPlan_param)); + if(setChannelPlan_param == NULL) { + res= _FAIL; + goto exit; + } + setChannelPlan_param->channel_plan=chplan; + + if(enqueue) + { + //need enqueue, prepare cmd_obj and enqueue + pcmdobj = (struct cmd_obj*)rtw_zmalloc(sizeof(struct cmd_obj)); + if(pcmdobj == NULL){ + rtw_mfree((u8 *)setChannelPlan_param, sizeof(struct SetChannelPlan_param)); + res=_FAIL; + goto exit; + } + + init_h2fwcmd_w_parm_no_rsp(pcmdobj, setChannelPlan_param, GEN_CMD_CODE(_SetChannelPlan)); + res = rtw_enqueue_cmd(pcmdpriv, pcmdobj); + } + else + { + //no need to enqueue, do the cmd hdl directly and free cmd parameter + if( H2C_SUCCESS !=set_chplan_hdl(padapter, (unsigned char *)setChannelPlan_param) ) + res = _FAIL; + + rtw_mfree((u8 *)setChannelPlan_param, sizeof(struct SetChannelPlan_param)); + } + + //do something based on res... + if(res == _SUCCESS) + padapter->mlmepriv.ChannelPlan = chplan; + +exit: + +_func_exit_; + + return res; +} + +u8 rtw_led_blink_cmd(_adapter*padapter, PLED_871x pLed) +{ + struct cmd_obj* pcmdobj; + struct LedBlink_param *ledBlink_param; + struct cmd_priv *pcmdpriv = &padapter->cmdpriv; + + u8 res=_SUCCESS; + +_func_enter_; + + RT_TRACE(_module_rtl871x_cmd_c_, _drv_notice_, ("+rtw_led_blink_cmd\n")); + + pcmdobj = (struct cmd_obj*)rtw_zmalloc(sizeof(struct cmd_obj)); + if(pcmdobj == NULL){ + res=_FAIL; + goto exit; + } + + ledBlink_param = (struct LedBlink_param *)rtw_zmalloc(sizeof(struct LedBlink_param)); + if(ledBlink_param == NULL) { + rtw_mfree((u8 *)pcmdobj, sizeof(struct cmd_obj)); + res= _FAIL; + goto exit; + } + + ledBlink_param->pLed=pLed; + + init_h2fwcmd_w_parm_no_rsp(pcmdobj, ledBlink_param, GEN_CMD_CODE(_LedBlink)); + res = rtw_enqueue_cmd(pcmdpriv, pcmdobj); + +exit: + +_func_exit_; + + return res; +} + +u8 rtw_set_csa_cmd(_adapter*padapter, u8 new_ch_no) +{ + struct cmd_obj* pcmdobj; + struct SetChannelSwitch_param*setChannelSwitch_param; + struct mlme_priv *pmlmepriv = &padapter->mlmepriv; + struct cmd_priv *pcmdpriv = &padapter->cmdpriv; + + u8 res=_SUCCESS; + +_func_enter_; + + RT_TRACE(_module_rtl871x_cmd_c_, _drv_notice_, ("+rtw_set_csa_cmd\n")); + + pcmdobj = (struct cmd_obj*)rtw_zmalloc(sizeof(struct cmd_obj)); + if(pcmdobj == NULL){ + res=_FAIL; + goto exit; + } + + setChannelSwitch_param = (struct SetChannelSwitch_param *)rtw_zmalloc(sizeof(struct SetChannelSwitch_param)); + if(setChannelSwitch_param == NULL) { + rtw_mfree((u8 *)pcmdobj, sizeof(struct cmd_obj)); + res= _FAIL; + goto exit; + } + + setChannelSwitch_param->new_ch_no=new_ch_no; + + init_h2fwcmd_w_parm_no_rsp(pcmdobj, setChannelSwitch_param, GEN_CMD_CODE(_SetChannelSwitch)); + res = rtw_enqueue_cmd(pcmdpriv, pcmdobj); + +exit: + +_func_exit_; + + return res; +} + +u8 rtw_tdls_cmd(_adapter *padapter, u8 *addr, u8 option) +{ + struct cmd_obj* pcmdobj; + struct TDLSoption_param *TDLSoption; + struct mlme_priv *pmlmepriv = &padapter->mlmepriv; + struct cmd_priv *pcmdpriv = &padapter->cmdpriv; + + u8 res=_SUCCESS; + +_func_enter_; + +#ifdef CONFIG_TDLS + + RT_TRACE(_module_rtl871x_cmd_c_, _drv_notice_, ("+rtw_set_tdls_cmd\n")); + + pcmdobj = (struct cmd_obj*)rtw_zmalloc(sizeof(struct cmd_obj)); + if(pcmdobj == NULL){ + res=_FAIL; + goto exit; + } + + TDLSoption= (struct TDLSoption_param *)rtw_zmalloc(sizeof(struct TDLSoption_param)); + if(TDLSoption == NULL) { + rtw_mfree((u8 *)pcmdobj, sizeof(struct cmd_obj)); + res= _FAIL; + goto exit; + } + + _rtw_spinlock(&(padapter->tdlsinfo.cmd_lock)); + _rtw_memcpy(TDLSoption->addr, addr, 6); + TDLSoption->option = option; + _rtw_spinunlock(&(padapter->tdlsinfo.cmd_lock)); + init_h2fwcmd_w_parm_no_rsp(pcmdobj, TDLSoption, GEN_CMD_CODE(_TDLS)); + res = rtw_enqueue_cmd(pcmdpriv, pcmdobj); + +#endif //CONFIG_TDLS + +exit: + + +_func_exit_; + + return res; +} + +static void traffic_status_watchdog(_adapter *padapter) +{ +#ifdef CONFIG_LPS + u8 bEnterPS; +#endif + u16 BusyThreshold = 100; + u8 bBusyTraffic = _FALSE, bTxBusyTraffic = _FALSE, bRxBusyTraffic = _FALSE; + u8 bHigherBusyTraffic = _FALSE, bHigherBusyRxTraffic = _FALSE, bHigherBusyTxTraffic = _FALSE; + struct mlme_priv *pmlmepriv = &(padapter->mlmepriv); +#ifdef CONFIG_TDLS + struct tdls_info *ptdlsinfo = &(padapter->tdlsinfo); +#endif //CONFIG_TDLS + + RT_LINK_DETECT_T * link_detect = &pmlmepriv->LinkDetectInfo; + + // + // Determine if our traffic is busy now + // + if((check_fwstate(pmlmepriv, _FW_LINKED)== _TRUE) + /*&& !MgntInitAdapterInProgress(pMgntInfo)*/) + { + + // if we raise bBusyTraffic in last watchdog, using lower threshold. + if (pmlmepriv->LinkDetectInfo.bBusyTraffic) + BusyThreshold = 75; + if( pmlmepriv->LinkDetectInfo.NumRxOkInPeriod > BusyThreshold || + pmlmepriv->LinkDetectInfo.NumTxOkInPeriod > BusyThreshold ) + { + bBusyTraffic = _TRUE; + + if(pmlmepriv->LinkDetectInfo.NumRxOkInPeriod > BusyThreshold) + bRxBusyTraffic = _TRUE; + + if(pmlmepriv->LinkDetectInfo.NumTxOkInPeriod > BusyThreshold) + bTxBusyTraffic = _TRUE; + } + + // Higher Tx/Rx data. + if( pmlmepriv->LinkDetectInfo.NumRxOkInPeriod > 4000 || + pmlmepriv->LinkDetectInfo.NumTxOkInPeriod > 4000 ) + { + bHigherBusyTraffic = _TRUE; + + // Extremely high Rx data. + if(pmlmepriv->LinkDetectInfo.NumRxOkInPeriod > 5000) + bHigherBusyRxTraffic = _TRUE; + + // Extremely high Tx data. + if(pmlmepriv->LinkDetectInfo.NumTxOkInPeriod > 5000) + bHigherBusyTxTraffic = _TRUE; + } + +#ifdef CONFIG_TRAFFIC_PROTECT +#define TX_ACTIVE_TH 2 +#define RX_ACTIVE_TH 1 +#define TRAFFIC_PROTECT_PERIOD_MS 4500 + + if (link_detect->NumTxOkInPeriod > TX_ACTIVE_TH + || link_detect->NumRxUnicastOkInPeriod > RX_ACTIVE_TH) { + + LOG_LEVEL(_drv_info_, FUNC_ADPT_FMT" acqiure wake_lock for %u ms(tx:%d,rx_unicast:%d)\n", + FUNC_ADPT_ARG(padapter), + TRAFFIC_PROTECT_PERIOD_MS, + link_detect->NumTxOkInPeriod, + link_detect->NumRxUnicastOkInPeriod); + + rtw_lock_suspend_timeout(TRAFFIC_PROTECT_PERIOD_MS); + } +#endif + +#ifdef CONFIG_TDLS +#ifdef CONFIG_TDLS_AUTOSETUP + if( ( ptdlsinfo->watchdog_count % TDLS_WATCHDOG_PERIOD ) == 0 ) //TDLS_WATCHDOG_PERIOD * 2sec, periodically sending + issue_tdls_dis_req( padapter, NULL ); + ptdlsinfo->watchdog_count++; +#endif //CONFIG_TDLS_AUTOSETUP +#endif //CONFIG_TDLS + +#ifdef CONFIG_LPS + // check traffic for powersaving. + if( ((pmlmepriv->LinkDetectInfo.NumRxUnicastOkInPeriod + pmlmepriv->LinkDetectInfo.NumTxOkInPeriod) > 8 ) || + (pmlmepriv->LinkDetectInfo.NumRxUnicastOkInPeriod > 2) ) + { + //DBG_871X("Tx = %d, Rx = %d \n",pmlmepriv->LinkDetectInfo.NumTxOkInPeriod,pmlmepriv->LinkDetectInfo.NumRxUnicastOkInPeriod); + bEnterPS= _FALSE; + } + else + { + bEnterPS= _TRUE; + } + + // LeisurePS only work in infra mode. + if(bEnterPS) + { + LPS_Enter(padapter); + } + else + { + LPS_Leave(padapter); + } +#endif + } + else + { +#ifdef CONFIG_LPS + LPS_Leave(padapter); +#endif + } + + pmlmepriv->LinkDetectInfo.NumRxOkInPeriod = 0; + pmlmepriv->LinkDetectInfo.NumTxOkInPeriod = 0; + pmlmepriv->LinkDetectInfo.NumRxUnicastOkInPeriod = 0; + pmlmepriv->LinkDetectInfo.bBusyTraffic = bBusyTraffic; + pmlmepriv->LinkDetectInfo.bTxBusyTraffic = bTxBusyTraffic; + pmlmepriv->LinkDetectInfo.bRxBusyTraffic = bRxBusyTraffic; + pmlmepriv->LinkDetectInfo.bHigherBusyTraffic = bHigherBusyTraffic; + pmlmepriv->LinkDetectInfo.bHigherBusyRxTraffic = bHigherBusyRxTraffic; + pmlmepriv->LinkDetectInfo.bHigherBusyTxTraffic = bHigherBusyTxTraffic; + +} + +void dynamic_chk_wk_hdl(_adapter *padapter, u8 *pbuf, int sz); +void dynamic_chk_wk_hdl(_adapter *padapter, u8 *pbuf, int sz) +{ + struct mlme_priv *pmlmepriv; + + if ((padapter->bDriverStopped == _TRUE)||(padapter->bSurpriseRemoved== _TRUE)) + return; + + if((void*)padapter != (void*)pbuf && padapter->pbuddy_adapter == NULL) + return; + + padapter = (_adapter *)pbuf; + + if ((padapter->bDriverStopped == _TRUE)||(padapter->bSurpriseRemoved== _TRUE)) + return; + + pmlmepriv = &(padapter->mlmepriv); + +#ifdef CONFIG_ACTIVE_KEEP_ALIVE_CHECK +#ifdef CONFIG_AP_MODE + if(check_fwstate(pmlmepriv, WIFI_AP_STATE) == _TRUE) + { + expire_timeout_chk(padapter); + } +#endif +#endif //CONFIG_ACTIVE_KEEP_ALIVE_CHECK + + #ifdef DBG_CONFIG_ERROR_DETECT + rtw_hal_sreset_xmit_status_check(padapter); + #endif + + //if(check_fwstate(pmlmepriv, _FW_UNDER_LINKING|_FW_UNDER_SURVEY)==_FALSE) + { + linked_status_chk(padapter); + traffic_status_watchdog(padapter); + } + + rtw_hal_dm_watchdog(padapter); + + //check_hw_pbc(padapter, pdrvextra_cmd->pbuf, pdrvextra_cmd->type_size); + +} + +#ifdef CONFIG_LPS + +void lps_ctrl_wk_hdl(_adapter *padapter, u8 lps_ctrl_type); +void lps_ctrl_wk_hdl(_adapter *padapter, u8 lps_ctrl_type) +{ + struct pwrctrl_priv *pwrpriv = &padapter->pwrctrlpriv; + struct mlme_priv *pmlmepriv = &(padapter->mlmepriv); + u8 mstatus; + +_func_enter_; + + if((check_fwstate(pmlmepriv, WIFI_ADHOC_MASTER_STATE) == _TRUE) + || (check_fwstate(pmlmepriv, WIFI_ADHOC_STATE) == _TRUE)) + { + return; + } + + switch(lps_ctrl_type) + { + case LPS_CTRL_SCAN: + //DBG_871X("LPS_CTRL_SCAN \n"); + LeaveAllPowerSaveMode(padapter); + break; + case LPS_CTRL_JOINBSS: + //DBG_871X("LPS_CTRL_JOINBSS \n"); + LPS_Leave(padapter); + break; + case LPS_CTRL_CONNECT: + //DBG_871X("LPS_CTRL_CONNECT \n"); + mstatus = 1; + // Reset LPS Setting + padapter->pwrctrlpriv.LpsIdleCount = 0; + rtw_hal_set_hwreg(padapter, HW_VAR_H2C_FW_JOINBSSRPT, (u8 *)(&mstatus)); + break; + case LPS_CTRL_DISCONNECT: + //DBG_871X("LPS_CTRL_DISCONNECT \n"); + mstatus = 0; + LPS_Leave(padapter); + rtw_hal_set_hwreg(padapter, HW_VAR_H2C_FW_JOINBSSRPT, (u8 *)(&mstatus)); + break; + case LPS_CTRL_SPECIAL_PACKET: + //DBG_871X("LPS_CTRL_SPECIAL_PACKET \n"); + pwrpriv->DelayLPSLastTimeStamp = rtw_get_current_time(); + LPS_Leave(padapter); + break; + + default: + break; + } + +_func_exit_; +} + +u8 rtw_lps_ctrl_wk_cmd(_adapter*padapter, u8 lps_ctrl_type, u8 enqueue) +{ + struct cmd_obj *ph2c; + struct drvextra_cmd_parm *pdrvextra_cmd_parm; + struct cmd_priv *pcmdpriv = &padapter->cmdpriv; + //struct pwrctrl_priv *pwrctrlpriv = &padapter->pwrctrlpriv; + u8 res = _SUCCESS; + +_func_enter_; + + //if(!pwrctrlpriv->bLeisurePs) + // return res; + +#ifdef CONFIG_CONCURRENT_MODE + if (padapter->iface_type != IFACE_PORT0) + return res; +#endif + + if(enqueue) + { + ph2c = (struct cmd_obj*)rtw_zmalloc(sizeof(struct cmd_obj)); + if(ph2c==NULL){ + res= _FAIL; + goto exit; + } + + pdrvextra_cmd_parm = (struct drvextra_cmd_parm*)rtw_zmalloc(sizeof(struct drvextra_cmd_parm)); + if(pdrvextra_cmd_parm==NULL){ + rtw_mfree((unsigned char *)ph2c, sizeof(struct cmd_obj)); + res= _FAIL; + goto exit; + } + + pdrvextra_cmd_parm->ec_id = LPS_CTRL_WK_CID; + pdrvextra_cmd_parm->type_size = lps_ctrl_type; + pdrvextra_cmd_parm->pbuf = NULL; + + init_h2fwcmd_w_parm_no_rsp(ph2c, pdrvextra_cmd_parm, GEN_CMD_CODE(_Set_Drv_Extra)); + + res = rtw_enqueue_cmd(pcmdpriv, ph2c); + } + else + { + lps_ctrl_wk_hdl(padapter, lps_ctrl_type); + } + +exit: + +_func_exit_; + + return res; + +} + +#endif +#ifdef CONFIG_ANTENNA_DIVERSITY + +void antenna_select_wk_hdl(_adapter *padapter, u8 antenna) +{ + rtw_hal_set_hwreg(padapter, HW_VAR_ANTENNA_DIVERSITY_SELECT, (u8 *)(&antenna)); +} + +u8 rtw_antenna_select_cmd(_adapter*padapter, u8 antenna,u8 enqueue) +{ + struct cmd_obj *ph2c; + struct drvextra_cmd_parm *pdrvextra_cmd_parm; + struct cmd_priv *pcmdpriv = &padapter->cmdpriv; + u8 bSupportAntDiv = _FALSE; + u8 res = _SUCCESS; + +_func_enter_; + rtw_hal_get_def_var(padapter, HAL_DEF_IS_SUPPORT_ANT_DIV, &(bSupportAntDiv)); + if(_FALSE == bSupportAntDiv ) return res; + + if(_TRUE == enqueue) + { + ph2c = (struct cmd_obj*)rtw_zmalloc(sizeof(struct cmd_obj)); + if(ph2c==NULL){ + res= _FAIL; + goto exit; + } + + pdrvextra_cmd_parm = (struct drvextra_cmd_parm*)rtw_zmalloc(sizeof(struct drvextra_cmd_parm)); + if(pdrvextra_cmd_parm==NULL){ + rtw_mfree((unsigned char *)ph2c, sizeof(struct cmd_obj)); + res= _FAIL; + goto exit; + } + + pdrvextra_cmd_parm->ec_id = ANT_SELECT_WK_CID; + pdrvextra_cmd_parm->type_size = antenna; + pdrvextra_cmd_parm->pbuf = NULL; + init_h2fwcmd_w_parm_no_rsp(ph2c, pdrvextra_cmd_parm, GEN_CMD_CODE(_Set_Drv_Extra)); + + res = rtw_enqueue_cmd(pcmdpriv, ph2c); + } + else{ + antenna_select_wk_hdl(padapter,antenna ); + } +exit: + +_func_exit_; + + return res; + +} +#endif + +void power_saving_wk_hdl(_adapter *padapter, u8 *pbuf, int sz); +void power_saving_wk_hdl(_adapter *padapter, u8 *pbuf, int sz) +{ + rtw_ps_processor(padapter); +} + +//add for CONFIG_IEEE80211W, none 11w can use it +void reset_securitypriv_hdl(_adapter *padapter) +{ + rtw_reset_securitypriv(padapter); +} + +void free_assoc_resources_hdl(_adapter *padapter) +{ + rtw_free_assoc_resources(padapter, 1); +} + +#ifdef CONFIG_P2P +u8 p2p_protocol_wk_cmd(_adapter*padapter, int intCmdType ) +{ + struct cmd_obj *ph2c; + struct drvextra_cmd_parm *pdrvextra_cmd_parm; + struct wifidirect_info *pwdinfo= &(padapter->wdinfo); + struct cmd_priv *pcmdpriv = &padapter->cmdpriv; + u8 res = _SUCCESS; + +_func_enter_; + + if(rtw_p2p_chk_state(pwdinfo, P2P_STATE_NONE)) + { + return res; + } + + ph2c = (struct cmd_obj*)rtw_zmalloc(sizeof(struct cmd_obj)); + if(ph2c==NULL){ + res= _FAIL; + goto exit; + } + + pdrvextra_cmd_parm = (struct drvextra_cmd_parm*)rtw_zmalloc(sizeof(struct drvextra_cmd_parm)); + if(pdrvextra_cmd_parm==NULL){ + rtw_mfree((unsigned char *)ph2c, sizeof(struct cmd_obj)); + res= _FAIL; + goto exit; + } + + pdrvextra_cmd_parm->ec_id = P2P_PROTO_WK_CID; + pdrvextra_cmd_parm->type_size = intCmdType; // As the command tppe. + pdrvextra_cmd_parm->pbuf = NULL; // Must be NULL here + + init_h2fwcmd_w_parm_no_rsp(ph2c, pdrvextra_cmd_parm, GEN_CMD_CODE(_Set_Drv_Extra)); + + res = rtw_enqueue_cmd(pcmdpriv, ph2c); + +exit: + +_func_exit_; + + return res; + +} +#endif //CONFIG_P2P + +u8 rtw_ps_cmd(_adapter*padapter) +{ + struct cmd_obj *ppscmd; + struct drvextra_cmd_parm *pdrvextra_cmd_parm; + struct cmd_priv *pcmdpriv = &padapter->cmdpriv; + + u8 res = _SUCCESS; +_func_enter_; + +#ifdef CONFIG_CONCURRENT_MODE + if (padapter->adapter_type != PRIMARY_ADAPTER) + goto exit; +#endif + + ppscmd = (struct cmd_obj*)rtw_zmalloc(sizeof(struct cmd_obj)); + if(ppscmd==NULL){ + res= _FAIL; + goto exit; + } + + pdrvextra_cmd_parm = (struct drvextra_cmd_parm*)rtw_zmalloc(sizeof(struct drvextra_cmd_parm)); + if(pdrvextra_cmd_parm==NULL){ + rtw_mfree((unsigned char *)ppscmd, sizeof(struct cmd_obj)); + res= _FAIL; + goto exit; + } + + pdrvextra_cmd_parm->ec_id = POWER_SAVING_CTRL_WK_CID; + pdrvextra_cmd_parm->pbuf = NULL; + init_h2fwcmd_w_parm_no_rsp(ppscmd, pdrvextra_cmd_parm, GEN_CMD_CODE(_Set_Drv_Extra)); + + res = rtw_enqueue_cmd(pcmdpriv, ppscmd); + +exit: + +_func_exit_; + + return res; + +} + +#ifdef CONFIG_AP_MODE + +static void rtw_chk_hi_queue_hdl(_adapter *padapter) +{ + int cnt=0; + struct sta_info *psta_bmc; + struct sta_priv *pstapriv = &padapter->stapriv; + + psta_bmc = rtw_get_bcmc_stainfo(padapter); + if(!psta_bmc) + return; + + + if(psta_bmc->sleepq_len==0) + { + while((rtw_read32(padapter, 0x414)&0x00ffff00)!=0) + { + rtw_msleep_os(100); + + cnt++; + + if(cnt>10) + break; + } + + if(cnt<=10) + { + pstapriv->tim_bitmap &= ~BIT(0); + pstapriv->sta_dz_bitmap &= ~BIT(0); + + update_beacon(padapter, _TIM_IE_, NULL, _FALSE); + } + } + +} + +u8 rtw_chk_hi_queue_cmd(_adapter*padapter) +{ + struct cmd_obj *ph2c; + struct drvextra_cmd_parm *pdrvextra_cmd_parm; + struct cmd_priv *pcmdpriv = &padapter->cmdpriv; + u8 res = _SUCCESS; + + ph2c = (struct cmd_obj*)rtw_zmalloc(sizeof(struct cmd_obj)); + if(ph2c==NULL){ + res= _FAIL; + goto exit; + } + + pdrvextra_cmd_parm = (struct drvextra_cmd_parm*)rtw_zmalloc(sizeof(struct drvextra_cmd_parm)); + if(pdrvextra_cmd_parm==NULL){ + rtw_mfree((unsigned char *)ph2c, sizeof(struct cmd_obj)); + res= _FAIL; + goto exit; + } + + pdrvextra_cmd_parm->ec_id = CHECK_HIQ_WK_CID; + pdrvextra_cmd_parm->type_size = 0; + pdrvextra_cmd_parm->pbuf = NULL; + + init_h2fwcmd_w_parm_no_rsp(ph2c, pdrvextra_cmd_parm, GEN_CMD_CODE(_Set_Drv_Extra)); + + res = rtw_enqueue_cmd(pcmdpriv, ph2c); + +exit: + + return res; + +} +#endif + +u8 rtw_c2h_wk_cmd(PADAPTER padapter, u8 *c2h_evt) +{ + struct cmd_obj *ph2c; + struct drvextra_cmd_parm *pdrvextra_cmd_parm; + struct cmd_priv *pcmdpriv = &padapter->cmdpriv; + u8 res = _SUCCESS; + + ph2c = (struct cmd_obj*)rtw_zmalloc(sizeof(struct cmd_obj)); + if (ph2c == NULL) { + res = _FAIL; + goto exit; + } + + pdrvextra_cmd_parm = (struct drvextra_cmd_parm*)rtw_zmalloc(sizeof(struct drvextra_cmd_parm)); + if (pdrvextra_cmd_parm == NULL) { + rtw_mfree((u8*)ph2c, sizeof(struct cmd_obj)); + res = _FAIL; + goto exit; + } + + pdrvextra_cmd_parm->ec_id = C2H_WK_CID; + pdrvextra_cmd_parm->type_size = c2h_evt?16:0; + pdrvextra_cmd_parm->pbuf = c2h_evt; + + init_h2fwcmd_w_parm_no_rsp(ph2c, pdrvextra_cmd_parm, GEN_CMD_CODE(_Set_Drv_Extra)); + + res = rtw_enqueue_cmd(pcmdpriv, ph2c); + +exit: + + return res; +} + +s32 c2h_evt_hdl(_adapter *adapter, struct c2h_evt_hdr *c2h_evt, c2h_id_filter filter) +{ + s32 ret = _FAIL; + u8 buf[16]; + + if (!c2h_evt) { + /* No c2h event in cmd_obj, read c2h event before handling*/ + if (c2h_evt_read(adapter, buf) == _SUCCESS) { + c2h_evt = (struct c2h_evt_hdr *)buf; + + if (filter && filter(c2h_evt->id) == _FALSE) + goto exit; + + ret = rtw_hal_c2h_handler(adapter, c2h_evt); + } + } else { + + if (filter && filter(c2h_evt->id) == _FALSE) + goto exit; + + ret = rtw_hal_c2h_handler(adapter, c2h_evt); + } +exit: + return ret; +} + +#ifdef CONFIG_C2H_WK +static void c2h_wk_callback(_workitem *work) +{ + struct evt_priv *evtpriv = container_of(work, struct evt_priv, c2h_wk); + _adapter *adapter = container_of(evtpriv, _adapter, evtpriv); + struct c2h_evt_hdr *c2h_evt; + c2h_id_filter ccx_id_filter = rtw_hal_c2h_id_filter_ccx(adapter); + + evtpriv->c2h_wk_alive = _TRUE; + + while (!rtw_cbuf_empty(evtpriv->c2h_queue)) { + if ((c2h_evt = (struct c2h_evt_hdr *)rtw_cbuf_pop(evtpriv->c2h_queue)) != NULL) { + /* This C2H event is read, clear it */ + c2h_evt_clear(adapter); + } else if ((c2h_evt = (struct c2h_evt_hdr *)rtw_malloc(16)) != NULL) { + /* This C2H event is not read, read & clear now */ + if (c2h_evt_read(adapter, (u8*)c2h_evt) != _SUCCESS) + continue; + } + + /* Special pointer to trigger c2h_evt_clear only */ + if ((void *)c2h_evt == (void *)evtpriv) + continue; + + if (!c2h_evt_exist(c2h_evt)) { + rtw_mfree((u8*)c2h_evt, 16); + continue; + } + + if (ccx_id_filter(c2h_evt->id) == _TRUE) { + /* Handle CCX report here */ + rtw_hal_c2h_handler(adapter, c2h_evt); + rtw_mfree((u8*)c2h_evt, 16); + } else { + /* Enqueue into cmd_thread for others */ + rtw_c2h_wk_cmd(adapter, (u8 *)c2h_evt); + } + } + + evtpriv->c2h_wk_alive = _FALSE; +} +#endif + +u8 rtw_drvextra_cmd_hdl(_adapter *padapter, unsigned char *pbuf) +{ + struct drvextra_cmd_parm *pdrvextra_cmd; + + if(!pbuf) + return H2C_PARAMETERS_ERROR; + + pdrvextra_cmd = (struct drvextra_cmd_parm*)pbuf; + + switch(pdrvextra_cmd->ec_id) + { + case DYNAMIC_CHK_WK_CID: + dynamic_chk_wk_hdl(padapter, pdrvextra_cmd->pbuf, pdrvextra_cmd->type_size); + break; + case POWER_SAVING_CTRL_WK_CID: + power_saving_wk_hdl(padapter, pdrvextra_cmd->pbuf, pdrvextra_cmd->type_size); + break; +#ifdef CONFIG_LPS + case LPS_CTRL_WK_CID: + lps_ctrl_wk_hdl(padapter, (u8)pdrvextra_cmd->type_size); + break; +#endif +#ifdef CONFIG_ANTENNA_DIVERSITY + case ANT_SELECT_WK_CID: + antenna_select_wk_hdl(padapter, pdrvextra_cmd->type_size); + break; +#endif +#ifdef CONFIG_P2P_PS + case P2P_PS_WK_CID: + p2p_ps_wk_hdl(padapter, pdrvextra_cmd->type_size); + break; +#endif // CONFIG_P2P_PS + case P2P_PROTO_WK_CID: + // Commented by Albert 2011/07/01 + // I used the type_size as the type command + p2p_protocol_wk_hdl( padapter, pdrvextra_cmd->type_size ); + break; +#ifdef CONFIG_AP_MODE + case CHECK_HIQ_WK_CID: + rtw_chk_hi_queue_hdl(padapter); + break; +#endif //CONFIG_AP_MODE +#ifdef CONFIG_INTEL_WIDI + case INTEl_WIDI_WK_CID: + intel_widi_wk_hdl(padapter, pdrvextra_cmd->type_size, pdrvextra_cmd->pbuf); + break; +#endif //CONFIG_INTEL_WIDI + //add for CONFIG_IEEE80211W, none 11w can use it + case RESET_SECURITYPRIV: + reset_securitypriv_hdl(padapter); + break; + case FREE_ASSOC_RESOURCES: + free_assoc_resources_hdl(padapter); + break; + case C2H_WK_CID: + c2h_evt_hdl(padapter, (struct c2h_evt_hdr *)pdrvextra_cmd->pbuf, NULL); + break; + + default: + break; + } + + + if(pdrvextra_cmd->pbuf && pdrvextra_cmd->type_size>0) + { + rtw_mfree(pdrvextra_cmd->pbuf, pdrvextra_cmd->type_size); + } + + + return H2C_SUCCESS; + +} + +void rtw_survey_cmd_callback(_adapter* padapter , struct cmd_obj *pcmd) +{ + struct mlme_priv *pmlmepriv = &padapter->mlmepriv; + +_func_enter_; + + if(pcmd->res == H2C_DROPPED) + { + //TODO: cancel timer and do timeout handler directly... + //need to make timeout handlerOS independent + _set_timer(&pmlmepriv->scan_to_timer, 1); + } + else if (pcmd->res != H2C_SUCCESS) { + _set_timer(&pmlmepriv->scan_to_timer, 1); + RT_TRACE(_module_rtl871x_cmd_c_,_drv_err_,("\n ********Error: MgntActrtw_set_802_11_bssid_LIST_SCAN Fail ************\n\n.")); + } + + // free cmd + rtw_free_cmd_obj(pcmd); + +_func_exit_; +} +void rtw_disassoc_cmd_callback(_adapter* padapter, struct cmd_obj *pcmd) +{ + _irqL irqL; + struct mlme_priv *pmlmepriv = &padapter->mlmepriv; + +_func_enter_; + + if (pcmd->res != H2C_SUCCESS) + { + _enter_critical_bh(&pmlmepriv->lock, &irqL); + set_fwstate(pmlmepriv, _FW_LINKED); + _exit_critical_bh(&pmlmepriv->lock, &irqL); + + RT_TRACE(_module_rtl871x_cmd_c_,_drv_err_,("\n ***Error: disconnect_cmd_callback Fail ***\n.")); + + goto exit; + } +#ifdef CONFIG_BR_EXT + else //clear bridge database + nat25_db_cleanup(padapter); +#endif //CONFIG_BR_EXT + + // free cmd + rtw_free_cmd_obj(pcmd); + +exit: + +_func_exit_; +} + + +void rtw_joinbss_cmd_callback(_adapter* padapter, struct cmd_obj *pcmd) +{ + struct mlme_priv *pmlmepriv = &padapter->mlmepriv; + +_func_enter_; + + if(pcmd->res == H2C_DROPPED) + { + //TODO: cancel timer and do timeout handler directly... + //need to make timeout handlerOS independent + _set_timer(&pmlmepriv->assoc_timer, 1); + } + else if(pcmd->res != H2C_SUCCESS) + { + RT_TRACE(_module_rtl871x_cmd_c_,_drv_err_,("********Error:rtw_select_and_join_from_scanned_queue Wait Sema Fail ************\n")); + _set_timer(&pmlmepriv->assoc_timer, 1); + } + + rtw_free_cmd_obj(pcmd); + +_func_exit_; +} + +void rtw_createbss_cmd_callback(_adapter *padapter, struct cmd_obj *pcmd) +{ + _irqL irqL; + u8 timer_cancelled; + struct sta_info *psta = NULL; + struct wlan_network *pwlan = NULL; + struct mlme_priv *pmlmepriv = &padapter->mlmepriv; + WLAN_BSSID_EX *pnetwork = (WLAN_BSSID_EX *)pcmd->parmbuf; + struct wlan_network *tgt_network = &(pmlmepriv->cur_network); + +_func_enter_; + + if((pcmd->res != H2C_SUCCESS)) + { + RT_TRACE(_module_rtl871x_cmd_c_,_drv_err_,("\n ********Error: rtw_createbss_cmd_callback Fail ************\n\n.")); + _set_timer(&pmlmepriv->assoc_timer, 1 ); + } + + _cancel_timer(&pmlmepriv->assoc_timer, &timer_cancelled); + +#ifdef CONFIG_FW_MLMLE + //endian_convert + pnetwork->Length = le32_to_cpu(pnetwork->Length); + pnetwork->Ssid.SsidLength = le32_to_cpu(pnetwork->Ssid.SsidLength); + pnetwork->Privacy =le32_to_cpu(pnetwork->Privacy); + pnetwork->Rssi = le32_to_cpu(pnetwork->Rssi); + pnetwork->NetworkTypeInUse =le32_to_cpu(pnetwork->NetworkTypeInUse); + pnetwork->Configuration.ATIMWindow = le32_to_cpu(pnetwork->Configuration.ATIMWindow); + //pnetwork->Configuration.BeaconPeriod = le32_to_cpu(pnetwork->Configuration.BeaconPeriod); + pnetwork->Configuration.DSConfig =le32_to_cpu(pnetwork->Configuration.DSConfig); + pnetwork->Configuration.FHConfig.DwellTime=le32_to_cpu(pnetwork->Configuration.FHConfig.DwellTime); + pnetwork->Configuration.FHConfig.HopPattern=le32_to_cpu(pnetwork->Configuration.FHConfig.HopPattern); + pnetwork->Configuration.FHConfig.HopSet=le32_to_cpu(pnetwork->Configuration.FHConfig.HopSet); + pnetwork->Configuration.FHConfig.Length=le32_to_cpu(pnetwork->Configuration.FHConfig.Length); + pnetwork->Configuration.Length = le32_to_cpu(pnetwork->Configuration.Length); + pnetwork->InfrastructureMode = le32_to_cpu(pnetwork->InfrastructureMode); + pnetwork->IELength = le32_to_cpu(pnetwork->IELength); +#endif + + _enter_critical_bh(&pmlmepriv->lock, &irqL); + + + if(check_fwstate(pmlmepriv, WIFI_AP_STATE) ) + { + psta = rtw_get_stainfo(&padapter->stapriv, pnetwork->MacAddress); + if(!psta) + { + psta = rtw_alloc_stainfo(&padapter->stapriv, pnetwork->MacAddress); + if (psta == NULL) + { + RT_TRACE(_module_rtl871x_cmd_c_,_drv_err_,("\nCan't alloc sta_info when createbss_cmd_callback\n")); + goto createbss_cmd_fail ; + } + } + + rtw_indicate_connect( padapter); + } + else + { + _irqL irqL; + + pwlan = _rtw_alloc_network(pmlmepriv); + _enter_critical_bh(&(pmlmepriv->scanned_queue.lock), &irqL); + if ( pwlan == NULL) + { + pwlan = rtw_get_oldest_wlan_network(&pmlmepriv->scanned_queue); + if( pwlan == NULL) + { + RT_TRACE(_module_rtl871x_cmd_c_,_drv_err_,("\n Error: can't get pwlan in rtw_joinbss_event_callback \n")); + _exit_critical_bh(&(pmlmepriv->scanned_queue.lock), &irqL); + goto createbss_cmd_fail; + } + pwlan->last_scanned = rtw_get_current_time(); + } + else + { + rtw_list_insert_tail(&(pwlan->list), &pmlmepriv->scanned_queue.queue); + } + + pnetwork->Length = get_WLAN_BSSID_EX_sz(pnetwork); + _rtw_memcpy(&(pwlan->network), pnetwork, pnetwork->Length); + //pwlan->fixed = _TRUE; + + //rtw_list_insert_tail(&(pwlan->list), &pmlmepriv->scanned_queue.queue); + + // copy pdev_network information to pmlmepriv->cur_network + _rtw_memcpy(&tgt_network->network, pnetwork, (get_WLAN_BSSID_EX_sz(pnetwork))); + + // reset DSConfig + //tgt_network->network.Configuration.DSConfig = (u32)rtw_ch2freq(pnetwork->Configuration.DSConfig); + + _clr_fwstate_(pmlmepriv, _FW_UNDER_LINKING); + +#if 0 + if((pmlmepriv->fw_state) & WIFI_AP_STATE) + { + psta = rtw_alloc_stainfo(&padapter->stapriv, pnetwork->MacAddress); + + if (psta == NULL) { // for AP Mode & Adhoc Master Mode + RT_TRACE(_module_rtl871x_cmd_c_,_drv_err_,("\nCan't alloc sta_info when createbss_cmd_callback\n")); + goto createbss_cmd_fail ; + } + + rtw_indicate_connect( padapter); + } + else { + + //rtw_indicate_disconnect(dev); + } +#endif + _exit_critical_bh(&(pmlmepriv->scanned_queue.lock), &irqL); + // we will set _FW_LINKED when there is one more sat to join us (rtw_stassoc_event_callback) + + } + +createbss_cmd_fail: + + _exit_critical_bh(&pmlmepriv->lock, &irqL); + + rtw_free_cmd_obj(pcmd); + +_func_exit_; + +} + + + +void rtw_setstaKey_cmdrsp_callback(_adapter* padapter , struct cmd_obj *pcmd) +{ + + struct sta_priv * pstapriv = &padapter->stapriv; + struct set_stakey_rsp* psetstakey_rsp = (struct set_stakey_rsp*) (pcmd->rsp); + struct sta_info* psta = rtw_get_stainfo(pstapriv, psetstakey_rsp->addr); + +_func_enter_; + + if(psta==NULL) + { + RT_TRACE(_module_rtl871x_cmd_c_,_drv_err_,("\nERROR: rtw_setstaKey_cmdrsp_callback => can't get sta_info \n\n")); + goto exit; + } + + //psta->aid = psta->mac_id = psetstakey_rsp->keyid; //CAM_ID(CAM_ENTRY) + +exit: + + rtw_free_cmd_obj(pcmd); + +_func_exit_; + +} +void rtw_setassocsta_cmdrsp_callback(_adapter* padapter, struct cmd_obj *pcmd) +{ + _irqL irqL; + struct sta_priv * pstapriv = &padapter->stapriv; + struct mlme_priv *pmlmepriv = &padapter->mlmepriv; + struct set_assocsta_parm* passocsta_parm = (struct set_assocsta_parm*)(pcmd->parmbuf); + struct set_assocsta_rsp* passocsta_rsp = (struct set_assocsta_rsp*) (pcmd->rsp); + struct sta_info* psta = rtw_get_stainfo(pstapriv, passocsta_parm->addr); + +_func_enter_; + + if(psta==NULL) + { + RT_TRACE(_module_rtl871x_cmd_c_,_drv_err_,("\nERROR: setassocsta_cmdrsp_callbac => can't get sta_info \n\n")); + goto exit; + } + + psta->aid = psta->mac_id = passocsta_rsp->cam_id; + + _enter_critical_bh(&pmlmepriv->lock, &irqL); + + if ((check_fwstate(pmlmepriv, WIFI_MP_STATE) == _TRUE) && (check_fwstate(pmlmepriv, _FW_UNDER_LINKING) == _TRUE)) + _clr_fwstate_(pmlmepriv, _FW_UNDER_LINKING); + + set_fwstate(pmlmepriv, _FW_LINKED); + _exit_critical_bh(&pmlmepriv->lock, &irqL); + +exit: + rtw_free_cmd_obj(pcmd); + +_func_exit_; +} + +void rtw_getrttbl_cmd_cmdrsp_callback(_adapter* padapter, struct cmd_obj *pcmd); +void rtw_getrttbl_cmd_cmdrsp_callback(_adapter* padapter, struct cmd_obj *pcmd) +{ +_func_enter_; + + rtw_free_cmd_obj(pcmd); +#ifdef CONFIG_MP_INCLUDED + padapter->mppriv.workparam.bcompleted=_TRUE; +#endif + +_func_exit_; + +} --- linux-raspi2-4.2.0.orig/drivers/net/wireless/rtl8192cu/core/rtw_debug.c +++ linux-raspi2-4.2.0/drivers/net/wireless/rtl8192cu/core/rtw_debug.c @@ -0,0 +1,1336 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved. + * + * 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 + * published by the Free Software Foundation. + * + * 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 Street, Fifth Floor, Boston, MA 02110, USA + * + * + ******************************************************************************/ +#define _RTW_DEBUG_C_ + + +#include +#include <../hal/dm.h> + +//#ifdef CONFIG_DEBUG_RTL871X + + u32 GlobalDebugLevel = _drv_err_; + + u64 GlobalDebugComponents = \ + _module_rtl871x_xmit_c_ | + _module_xmit_osdep_c_ | + _module_rtl871x_recv_c_ | + _module_recv_osdep_c_ | + _module_rtl871x_mlme_c_ | + _module_mlme_osdep_c_ | + _module_rtl871x_sta_mgt_c_ | + _module_rtl871x_cmd_c_ | + _module_cmd_osdep_c_ | + _module_rtl871x_io_c_ | + _module_io_osdep_c_ | + _module_os_intfs_c_| + _module_rtl871x_security_c_| + _module_rtl871x_eeprom_c_| + _module_hal_init_c_| + _module_hci_hal_init_c_| + _module_rtl871x_ioctl_c_| + _module_rtl871x_ioctl_set_c_| + _module_rtl871x_ioctl_query_c_| + _module_rtl871x_pwrctrl_c_| + _module_hci_intfs_c_| + _module_hci_ops_c_| + _module_hci_ops_os_c_| + _module_rtl871x_ioctl_os_c| + _module_rtl8712_cmd_c_| + _module_hal_xmit_c_| + _module_rtl8712_recv_c_ | + _module_mp_ | + _module_efuse_; + +//#endif + +#ifdef CONFIG_PROC_DEBUG +#include + +int proc_get_drv_version(char *page, char **start, + off_t offset, int count, + int *eof, void *data) +{ + struct net_device *dev = data; + + int len = 0; + + len += snprintf(page + len, count - len, "%s\n", DRIVERVERSION); + + *eof = 1; + return len; +} + +int proc_get_log_level(char *page, char **start, + off_t offset, int count, + int *eof, void *data) +{ + struct net_device *dev = data; + _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); + struct mlme_priv *pmlmepriv = &(padapter->mlmepriv); + + int len = 0; + + len += snprintf(page + len, count - len, + "log_level:%d\n", + GlobalDebugLevel + ); + + *eof = 1; + return len; +} + +int proc_set_log_level(struct file *file, const char *buffer, + unsigned long count, void *data) +{ + struct net_device *dev = (struct net_device *)data; + _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); + char tmp[32]; + u32 is_signal_dbg; + + if (count < 1) + return -EFAULT; + + if (buffer && !copy_from_user(tmp, buffer, sizeof(tmp))) { + + int num = sscanf(tmp, "%d ", &is_signal_dbg); + + if( is_signal_dbg >= 0 && is_signal_dbg < 10 ) + { + GlobalDebugLevel= is_signal_dbg; + printk("%d\n", GlobalDebugLevel); + } + } + + return count; + +} + +#ifdef DBG_MEM_ALLOC +int proc_get_mstat(char *page, char **start, + off_t offset, int count, + int *eof, void *data) +{ + int len = 0; + + len += _rtw_mstat_dump(page+len, count-len); + *eof = 1; + + return len; +} +#endif /* DBG_MEM_ALLOC */ + +int proc_get_write_reg(char *page, char **start, + off_t offset, int count, + int *eof, void *data) +{ + *eof = 1; + return 0; +} + +int proc_set_write_reg(struct file *file, const char *buffer, + unsigned long count, void *data) +{ + struct net_device *dev = (struct net_device *)data; + _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); + char tmp[32]; + u32 addr, val, len; + + if (count < 3) + { + DBG_871X("argument size is less than 3\n"); + return -EFAULT; + } + + if (buffer && !copy_from_user(tmp, buffer, sizeof(tmp))) { + + int num = sscanf(tmp, "%x %x %x", &addr, &val, &len); + + if (num != 3) { + DBG_871X("invalid write_reg parameter!\n"); + return count; + } + + switch(len) + { + case 1: + rtw_write8(padapter, addr, (u8)val); + break; + case 2: + rtw_write16(padapter, addr, (u16)val); + break; + case 4: + rtw_write32(padapter, addr, val); + break; + default: + DBG_871X("error write length=%d", len); + break; + } + + } + + return count; + +} + +static u32 proc_get_read_addr=0xeeeeeeee; +static u32 proc_get_read_len=0x4; + +int proc_get_read_reg(char *page, char **start, + off_t offset, int count, + int *eof, void *data) +{ + struct net_device *dev = data; + _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); + + int len = 0; + + if(proc_get_read_addr==0xeeeeeeee) + { + *eof = 1; + return len; + } + + switch(proc_get_read_len) + { + case 1: + len += snprintf(page + len, count - len, "rtw_read8(0x%x)=0x%x\n", proc_get_read_addr, rtw_read8(padapter, proc_get_read_addr)); + break; + case 2: + len += snprintf(page + len, count - len, "rtw_read16(0x%x)=0x%x\n", proc_get_read_addr, rtw_read16(padapter, proc_get_read_addr)); + break; + case 4: + len += snprintf(page + len, count - len, "rtw_read32(0x%x)=0x%x\n", proc_get_read_addr, rtw_read32(padapter, proc_get_read_addr)); + break; + default: + len += snprintf(page + len, count - len, "error read length=%d\n", proc_get_read_len); + break; + } + + *eof = 1; + return len; + +} + +int proc_set_read_reg(struct file *file, const char *buffer, + unsigned long count, void *data) +{ + char tmp[16]; + u32 addr, len; + + if (count < 2) + { + DBG_871X("argument size is less than 2\n"); + return -EFAULT; + } + + if (buffer && !copy_from_user(tmp, buffer, sizeof(tmp))) { + + int num = sscanf(tmp, "%x %x", &addr, &len); + + if (num != 2) { + DBG_871X("invalid read_reg parameter!\n"); + return count; + } + + proc_get_read_addr = addr; + + proc_get_read_len = len; + } + + return count; + +} + +int proc_get_fwstate(char *page, char **start, + off_t offset, int count, + int *eof, void *data) +{ + struct net_device *dev = data; + _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); + struct mlme_priv *pmlmepriv = &(padapter->mlmepriv); + + int len = 0; + + len += snprintf(page + len, count - len, "fwstate=0x%x\n", get_fwstate(pmlmepriv)); + + *eof = 1; + return len; +} + +int proc_get_sec_info(char *page, char **start, + off_t offset, int count, + int *eof, void *data) +{ + struct net_device *dev = data; + _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); + struct security_priv *psecuritypriv = &padapter->securitypriv; + + int len = 0; + + len += snprintf(page + len, count - len, "auth_alg=0x%x, enc_alg=0x%x, auth_type=0x%x, enc_type=0x%x\n", + psecuritypriv->dot11AuthAlgrthm, psecuritypriv->dot11PrivacyAlgrthm, + psecuritypriv->ndisauthtype, psecuritypriv->ndisencryptstatus); + + *eof = 1; + return len; +} + +int proc_get_mlmext_state(char *page, char **start, + off_t offset, int count, + int *eof, void *data) +{ + struct net_device *dev = data; + _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); + struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; + struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info); + + int len = 0; + + len += snprintf(page + len, count - len, "pmlmeinfo->state=0x%x\n", pmlmeinfo->state); + + *eof = 1; + return len; +} + +int proc_get_qos_option(char *page, char **start, + off_t offset, int count, + int *eof, void *data) +{ + struct net_device *dev = data; + _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); + struct mlme_priv *pmlmepriv = &(padapter->mlmepriv); + + int len = 0; + + len += snprintf(page + len, count - len, "qos_option=%d\n", pmlmepriv->qospriv.qos_option); + + *eof = 1; + return len; + +} + +int proc_get_ht_option(char *page, char **start, + off_t offset, int count, + int *eof, void *data) +{ + struct net_device *dev = data; + _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); + struct mlme_priv *pmlmepriv = &(padapter->mlmepriv); + + int len = 0; + + len += snprintf(page + len, count - len, "ht_option=%d\n", pmlmepriv->htpriv.ht_option); + + *eof = 1; + return len; +} + +int proc_get_rf_info(char *page, char **start, + off_t offset, int count, + int *eof, void *data) +{ + struct net_device *dev = data; + _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); + struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; + int len = 0; + + len += snprintf(page + len, count - len, "cur_ch=%d, cur_bw=%d, cur_ch_offet=%d\n" + "oper_ch=%d, oper_bw=%d, oper_ch_offet=%d\n", + pmlmeext->cur_channel, pmlmeext->cur_bwmode, pmlmeext->cur_ch_offset, + rtw_get_oper_ch(padapter), rtw_get_oper_bw(padapter), rtw_get_oper_choffset(padapter)); + *eof = 1; + + return len; +} + +int proc_get_ap_info(char *page, char **start, + off_t offset, int count, + int *eof, void *data) +{ + struct sta_info *psta; + struct net_device *dev = data; + _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); + struct mlme_priv *pmlmepriv = &(padapter->mlmepriv); + struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; + struct wlan_network *cur_network = &(pmlmepriv->cur_network); + struct sta_priv *pstapriv = &padapter->stapriv; + int len = 0; + + psta = rtw_get_stainfo(pstapriv, cur_network->network.MacAddress); + if(psta) + { + int i; + struct recv_reorder_ctrl *preorder_ctrl; + + len += snprintf(page + len, count - len, "SSID=%s\n", cur_network->network.Ssid.Ssid); + len += snprintf(page + len, count - len, "sta's macaddr:" MAC_FMT "\n", MAC_ARG(psta->hwaddr)); + len += snprintf(page + len, count - len, "cur_channel=%d, cur_bwmode=%d, cur_ch_offset=%d\n", pmlmeext->cur_channel, pmlmeext->cur_bwmode, pmlmeext->cur_ch_offset); + len += snprintf(page + len, count - len, "rtsen=%d, cts2slef=%d\n", psta->rtsen, psta->cts2self); + len += snprintf(page + len, count - len, "qos_en=%d, ht_en=%d, init_rate=%d\n", psta->qos_option, psta->htpriv.ht_option, psta->init_rate); + len += snprintf(page + len, count - len, "state=0x%x, aid=%d, macid=%d, raid=%d\n", psta->state, psta->aid, psta->mac_id, psta->raid); + len += snprintf(page + len, count - len, "bwmode=%d, ch_offset=%d, sgi=%d\n", psta->htpriv.bwmode, psta->htpriv.ch_offset, psta->htpriv.sgi); + len += snprintf(page + len, count - len, "ampdu_enable = %d\n", psta->htpriv.ampdu_enable); + len += snprintf(page + len, count - len, "agg_enable_bitmap=%x, candidate_tid_bitmap=%x\n", psta->htpriv.agg_enable_bitmap, psta->htpriv.candidate_tid_bitmap); + + for(i=0;i<16;i++) + { + preorder_ctrl = &psta->recvreorder_ctrl[i]; + if(preorder_ctrl->enable) + { + len += snprintf(page + len, count - len, "tid=%d, indicate_seq=%d\n", i, preorder_ctrl->indicate_seq); + } + } + + } + else + { + len += snprintf(page + len, count - len, "can't get sta's macaddr, cur_network's macaddr:" MAC_FMT "\n", MAC_ARG(cur_network->network.MacAddress)); + } + + *eof = 1; + return len; + +} + +int proc_get_adapter_state(char *page, char **start, + off_t offset, int count, + int *eof, void *data) +{ + struct net_device *dev = data; + _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); + int len = 0; + + len += snprintf(page + len, count - len, "bSurpriseRemoved=%d, bDriverStopped=%d\n", + padapter->bSurpriseRemoved, padapter->bDriverStopped); + + *eof = 1; + return len; + +} + +int proc_get_trx_info(char *page, char **start, + off_t offset, int count, + int *eof, void *data) +{ + int i; + struct net_device *dev = data; + _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); + struct xmit_priv *pxmitpriv = &padapter->xmitpriv; + struct recv_priv *precvpriv = &padapter->recvpriv; + struct dvobj_priv *pdvobj = adapter_to_dvobj(padapter); + struct hw_xmit *phwxmit; + int len = 0; + + len += snprintf(page + len, count - len, "free_xmitbuf_cnt=%d, free_xmitframe_cnt=%d" + ", free_ext_xmitbuf_cnt=%d, free_xframe_ext_cnt=%d" + ", free_recvframe_cnt=%d\n", + pxmitpriv->free_xmitbuf_cnt, pxmitpriv->free_xmitframe_cnt, + pxmitpriv->free_xmit_extbuf_cnt, pxmitpriv->free_xframe_ext_cnt, + precvpriv->free_recvframe_cnt); +#ifdef CONFIG_USB_HCI + len += snprintf(page + len, count - len, "rx_urb_pending_cnt=%d\n", precvpriv->rx_pending_cnt); +#endif + + len += snprintf(page + len, count - len, "recvbuf_skb_alloc_fail_cnt=%d\n", precvpriv->recvbuf_skb_alloc_fail_cnt); + len += snprintf(page + len, count - len, "recvbuf_null_cnt=%d\n", precvpriv->recvbuf_null_cnt); + len += snprintf(page + len, count - len, "read_port_complete_EINPROGRESS_cnt=%d\n", precvpriv->read_port_complete_EINPROGRESS_cnt); + len += snprintf(page + len, count - len, "read_port_complete_other_urb_err_cnt=%d\n", precvpriv->read_port_complete_other_urb_err_cnt); + len += snprintf(page + len, count - len, "hw_init_completed=%d\n", padapter->hw_init_completed); +#ifdef CONFIG_USB_HCI + len += snprintf(page + len, count - len, "continual_urb_error=%d\n", atomic_read(&pdvobj->continual_urb_error)); +#endif + + for(i = 0; i < 4; i++) + { + phwxmit = pxmitpriv->hwxmits + i; + len += snprintf(page + len, count - len, "%d, hwq.accnt=%d\n", i, phwxmit->accnt); + } + + *eof = 1; + return len; + +} + + + +int proc_get_mac_reg_dump1(char *page, char **start, + off_t offset, int count, + int *eof, void *data) +{ + struct net_device *dev = data; + _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); + int len = 0; + int i,j=1; + + len += snprintf(page + len, count - len, "\n======= MAC REG =======\n"); + + for(i=0x0;i<0x300;i+=4) + { + if(j%4==1) len += snprintf(page + len, count - len,"0x%02x",i); + len += snprintf(page + len, count - len," 0x%08x ",rtw_read32(padapter,i)); + if((j++)%4 == 0) len += snprintf(page + len, count - len,"\n"); + } + + *eof = 1; + return len; + +} + +int proc_get_mac_reg_dump2(char *page, char **start, + off_t offset, int count, + int *eof, void *data) +{ + struct net_device *dev = data; + _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); + int len = 0; + int i,j=1; + + len += snprintf(page + len, count - len, "\n======= MAC REG =======\n"); + memset(page, 0, count); + for(i=0x300;i<0x600;i+=4) + { + if(j%4==1) len += snprintf(page + len, count - len,"0x%02x",i); + len += snprintf(page + len, count - len," 0x%08x ",rtw_read32(padapter,i)); + if((j++)%4 == 0) len += snprintf(page + len, count - len,"\n"); + } + + *eof = 1; + return len; + +} + +int proc_get_mac_reg_dump3(char *page, char **start, + off_t offset, int count, + int *eof, void *data) +{ + struct net_device *dev = data; + _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); + int len = 0; + int i,j=1; + + len += snprintf(page + len, count - len, "\n======= MAC REG =======\n"); + + for(i=0x600;i<0x800;i+=4) + { + if(j%4==1) len += snprintf(page + len, count - len,"0x%02x",i); + len += snprintf(page + len, count - len," 0x%08x ",rtw_read32(padapter,i)); + if((j++)%4 == 0) len += snprintf(page + len, count - len,"\n"); + } + + *eof = 1; + return len; + +} + +int proc_get_bb_reg_dump1(char *page, char **start, + off_t offset, int count, + int *eof, void *data) +{ + struct net_device *dev = data; + _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); + int len = 0; + int i,j=1; + + len += snprintf(page + len, count - len, "\n======= BB REG =======\n"); + for(i=0x800;i<0xB00;i+=4) + { + if(j%4==1) len += snprintf(page + len, count - len,"0x%02x",i); + len += snprintf(page + len, count - len," 0x%08x ",rtw_read32(padapter,i)); + if((j++)%4 == 0) len += snprintf(page + len, count - len,"\n"); + } + *eof = 1; + return len; +} + +int proc_get_bb_reg_dump2(char *page, char **start, + off_t offset, int count, + int *eof, void *data) +{ + struct net_device *dev = data; + _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); + int len = 0; + int i,j=1; + + len += snprintf(page + len, count - len, "\n======= BB REG =======\n"); + for(i=0xB00;i<0xE00;i+=4) + { + if(j%4==1) len += snprintf(page + len, count - len,"0x%02x",i); + len += snprintf(page + len, count - len," 0x%08x ",rtw_read32(padapter,i)); + if((j++)%4 == 0) len += snprintf(page + len, count - len,"\n"); + } + *eof = 1; + return len; +} + +int proc_get_bb_reg_dump3(char *page, char **start, + off_t offset, int count, + int *eof, void *data) +{ + struct net_device *dev = data; + _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); + int len = 0; + int i,j=1; + + len += snprintf(page + len, count - len, "\n======= BB REG =======\n"); + for(i=0xE00;i<0x1000;i+=4) + { + if(j%4==1) len += snprintf(page + len, count - len,"0x%02x",i); + len += snprintf(page + len, count - len," 0x%08x ",rtw_read32(padapter,i)); + if((j++)%4 == 0) len += snprintf(page + len, count - len,"\n"); + } + *eof = 1; + return len; +} + +int proc_get_rf_reg_dump1(char *page, char **start, + off_t offset, int count, + int *eof, void *data) +{ + struct net_device *dev = data; + _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); + int len = 0; + int i,j=1,path; + u32 value; + + len += snprintf(page + len, count - len, "\n======= RF REG =======\n"); + path = 1; + len += snprintf(page + len, count - len, "\nRF_Path(%x)\n",path); + for(i=0;i<0xC0;i++) + { + //value = PHY_QueryRFReg(padapter, (RF90_RADIO_PATH_E)path,i, bMaskDWord); + value =rtw_hal_read_rfreg(padapter, path, i, 0xffffffff); + if(j%4==1) len += snprintf(page + len, count - len, "0x%02x ",i); + len += snprintf(page + len, count - len, " 0x%08x ",value); + if((j++)%4==0) len += snprintf(page + len, count - len, "\n"); + } + + *eof = 1; + return len; +} + + +int proc_get_rf_reg_dump2(char *page, char **start, + off_t offset, int count, + int *eof, void *data) +{ + struct net_device *dev = data; + _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); + int len = 0; + int i,j=1,path; + u32 value; + + len += snprintf(page + len, count - len, "\n======= RF REG =======\n"); + path = 1; + len += snprintf(page + len, count - len, "\nRF_Path(%x)\n",path); + for(i=0xC0;i<0x100;i++) + { + //value = PHY_QueryRFReg(padapter, (RF90_RADIO_PATH_E)path,i, bMaskDWord); + value =rtw_hal_read_rfreg(padapter, path, i, 0xffffffff); + if(j%4==1) len += snprintf(page + len, count - len, "0x%02x ",i); + len += snprintf(page + len, count - len, " 0x%08x ",value); + if((j++)%4==0) len += snprintf(page + len, count - len, "\n"); + } + *eof = 1; + return len; +} + + +int proc_get_rf_reg_dump3(char *page, char **start, + off_t offset, int count, + int *eof, void *data) +{ + struct net_device *dev = data; + _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); + int len = 0; + int i,j=1,path; + u32 value; + + len += snprintf(page + len, count - len, "\n======= RF REG =======\n"); + path = 2; + len += snprintf(page + len, count - len, "\nRF_Path(%x)\n",path); + for(i=0;i<0xC0;i++) + { + //value = PHY_QueryRFReg(padapter, (RF90_RADIO_PATH_E)path,i, bMaskDWord); + value =rtw_hal_read_rfreg(padapter, path, i, 0xffffffff); + if(j%4==1) len += snprintf(page + len, count - len, "0x%02x ",i); + len += snprintf(page + len, count - len, " 0x%08x ",value); + if((j++)%4==0) len += snprintf(page + len, count - len, "\n"); + } + + *eof = 1; + return len; +} + + +int proc_get_rf_reg_dump4(char *page, char **start, + off_t offset, int count, + int *eof, void *data) +{ + struct net_device *dev = data; + _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); + int len = 0; + int i,j=1,path; + u32 value; + + len += snprintf(page + len, count - len, "\n======= RF REG =======\n"); + path = 2; + len += snprintf(page + len, count - len, "\nRF_Path(%x)\n",path); + for(i=0xC0;i<0x100;i++) + { + //value = PHY_QueryRFReg(padapter, (RF90_RADIO_PATH_E)path,i, bMaskDWord); + value =rtw_hal_read_rfreg(padapter, path, i, 0xffffffff); + if(j%4==1) len += snprintf(page + len, count - len, "0x%02x ",i); + len += snprintf(page + len, count - len, " 0x%08x ",value); + if((j++)%4==0) len += snprintf(page + len, count - len, "\n"); + } + *eof = 1; + return len; +} + + + +int proc_get_rx_signal(char *page, char **start, + off_t offset, int count, + int *eof, void *data) +{ + struct net_device *dev = data; + _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); + struct mlme_priv *pmlmepriv = &(padapter->mlmepriv); + + int len = 0; + + len += snprintf(page + len, count - len, + "rssi:%d\n" + "rxpwdb:%d\n" + "signal_strength:%u\n" + "signal_qual:%u\n" + "noise:%u\n", + padapter->recvpriv.rssi, + padapter->recvpriv.rxpwdb, + padapter->recvpriv.signal_strength, + padapter->recvpriv.signal_qual, + padapter->recvpriv.noise + ); + + *eof = 1; + return len; +} + +int proc_set_rx_signal(struct file *file, const char *buffer, + unsigned long count, void *data) +{ + struct net_device *dev = (struct net_device *)data; + _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); + char tmp[32]; + u32 is_signal_dbg, signal_strength; + + if (count < 1) + return -EFAULT; + + if (buffer && !copy_from_user(tmp, buffer, sizeof(tmp))) { + + int num = sscanf(tmp, "%u %u", &is_signal_dbg, &signal_strength); + + is_signal_dbg = is_signal_dbg==0?0:1; + + if(is_signal_dbg && num!=2) + return count; + + signal_strength = signal_strength>100?100:signal_strength; + signal_strength = signal_strength<0?0:signal_strength; + + padapter->recvpriv.is_signal_dbg = is_signal_dbg; + padapter->recvpriv.signal_strength_dbg=signal_strength; + + if(is_signal_dbg) + DBG_871X("set %s %u\n", "DBG_SIGNAL_STRENGTH", signal_strength); + else + DBG_871X("set %s\n", "HW_SIGNAL_STRENGTH"); + + } + + return count; + +} + +int proc_get_ht_enable(char *page, char **start, + off_t offset, int count, + int *eof, void *data) +{ + struct net_device *dev = data; + _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); + struct registry_priv *pregpriv = &padapter->registrypriv; + + int len = 0; + + if(pregpriv) + len += snprintf(page + len, count - len, + "%d\n", + pregpriv->ht_enable + ); + + *eof = 1; + return len; +} + +int proc_set_ht_enable(struct file *file, const char *buffer, + unsigned long count, void *data) +{ + struct net_device *dev = (struct net_device *)data; + _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); + struct registry_priv *pregpriv = &padapter->registrypriv; + char tmp[32]; + u32 mode; + + if (count < 1) + return -EFAULT; + + if (buffer && !copy_from_user(tmp, buffer, sizeof(tmp))) { + + int num = sscanf(tmp, "%d ", &mode); + + if( pregpriv && mode >= 0 && mode < 2 ) + { + pregpriv->ht_enable= mode; + printk("ht_enable=%d\n", pregpriv->ht_enable); + } + } + + return count; + +} + + +int proc_get_cbw40_enable(char *page, char **start, + off_t offset, int count, + int *eof, void *data) +{ + struct net_device *dev = data; + _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); + struct registry_priv *pregpriv = &padapter->registrypriv; + + int len = 0; + + if(pregpriv) + len += snprintf(page + len, count - len, + "%d\n", + pregpriv->cbw40_enable + ); + + *eof = 1; + return len; +} + +int proc_set_cbw40_enable(struct file *file, const char *buffer, + unsigned long count, void *data) +{ + struct net_device *dev = (struct net_device *)data; + _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); + struct registry_priv *pregpriv = &padapter->registrypriv; + char tmp[32]; + u32 mode; + + if (count < 1) + return -EFAULT; + + if (buffer && !copy_from_user(tmp, buffer, sizeof(tmp))) { + + int num = sscanf(tmp, "%d ", &mode); + + if( pregpriv && mode >= 0 && mode < 2 ) + { + pregpriv->cbw40_enable= mode; + printk("cbw40_enable=%d\n", mode); + } + } + + return count; + +} + +int proc_get_ampdu_enable(char *page, char **start, + off_t offset, int count, + int *eof, void *data) +{ + struct net_device *dev = data; + _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); + struct registry_priv *pregpriv = &padapter->registrypriv; + + int len = 0; + + if(pregpriv) + len += snprintf(page + len, count - len, + "%d\n", + pregpriv->ampdu_enable + ); + + *eof = 1; + return len; +} + +int proc_set_ampdu_enable(struct file *file, const char *buffer, + unsigned long count, void *data) +{ + struct net_device *dev = (struct net_device *)data; + _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); + struct registry_priv *pregpriv = &padapter->registrypriv; + char tmp[32]; + u32 mode; + + if (count < 1) + return -EFAULT; + + if (buffer && !copy_from_user(tmp, buffer, sizeof(tmp))) { + + int num = sscanf(tmp, "%d ", &mode); + + if( pregpriv && mode >= 0 && mode < 3 ) + { + pregpriv->ampdu_enable= mode; + printk("ampdu_enable=%d\n", mode); + } + } + + return count; + +} + + +int proc_get_two_path_rssi(char *page, char **start, + off_t offset, int count, + int *eof, void *data) +{ + struct net_device *dev = data; + _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); + + int len = 0; + + if(padapter) + len += snprintf(page + len, count - len, + "%d %d\n", + padapter->recvpriv.RxRssi[0], + padapter->recvpriv.RxRssi[1] + ); + + *eof = 1; + return len; +} + +int proc_get_rx_stbc(char *page, char **start, + off_t offset, int count, + int *eof, void *data) +{ + struct net_device *dev = data; + _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); + struct registry_priv *pregpriv = &padapter->registrypriv; + + int len = 0; + + if(pregpriv) + len += snprintf(page + len, count - len, + "%d\n", + pregpriv->rx_stbc + ); + + *eof = 1; + return len; +} + +int proc_set_rx_stbc(struct file *file, const char *buffer, + unsigned long count, void *data) +{ + struct net_device *dev = (struct net_device *)data; + _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); + struct registry_priv *pregpriv = &padapter->registrypriv; + char tmp[32]; + u32 mode; + + if (count < 1) + return -EFAULT; + + if (buffer && !copy_from_user(tmp, buffer, sizeof(tmp))) { + + int num = sscanf(tmp, "%d ", &mode); + + if( pregpriv && (mode == 0 || mode == 1|| mode == 2|| mode == 3)) + { + pregpriv->rx_stbc= mode; + printk("rx_stbc=%d\n", mode); + } + } + + return count; + +} + +int proc_get_vid(char *page, char **start, + off_t offset, int count, + int *eof, void *data) +{ + struct net_device *dev = data; + _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); + u16 VID=0; + int len = 0; + + rtw_hal_get_hwreg(padapter, HW_VAR_VID, (u8 *)&VID); + len += snprintf(page + len, count - len, + "%04x\n", + VID + ); + + *eof = 1; + return len; +} + +int proc_get_pid(char *page, char **start, + off_t offset, int count, + int *eof, void *data) +{ + struct net_device *dev = data; + _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); + u16 PID=0; + int len = 0; + + rtw_hal_get_hwreg(padapter, HW_VAR_PID, (u8 *)&PID); + len += snprintf(page + len, count - len, + "%04x\n", + PID + ); + + *eof = 1; + return len; +} + +int proc_get_rssi_disp(char *page, char **start, + off_t offset, int count, + int *eof, void *data) +{ + *eof = 1; + return 0; +} + +int proc_set_rssi_disp(struct file *file, const char *buffer, + unsigned long count, void *data) +{ + struct net_device *dev = (struct net_device *)data; + _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); + char tmp[32]; + u32 enable=0; + + if (count < 1) + { + DBG_8192C("argument size is less than 1\n"); + return -EFAULT; + } + + if (buffer && !copy_from_user(tmp, buffer, sizeof(tmp))) { + + int num = sscanf(tmp, "%x", &enable); + + if (num != 1) { + DBG_8192C("invalid set_rssi_disp parameter!\n"); + return count; + } + + if(enable) + { + DBG_8192C("Turn On Rx RSSI Display Function\n"); + padapter->bRxRSSIDisplay = enable ; + } + else + { + DBG_8192C("Turn Off Rx RSSI Display Function\n"); + padapter->bRxRSSIDisplay = 0 ; + } + + } + + return count; + +} + + +#ifdef CONFIG_AP_MODE + +int proc_get_all_sta_info(char *page, char **start, + off_t offset, int count, + int *eof, void *data) +{ + _irqL irqL; + struct sta_info *psta; + struct net_device *dev = data; + _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); + struct sta_priv *pstapriv = &padapter->stapriv; + int i, j; + _list *plist, *phead; + struct recv_reorder_ctrl *preorder_ctrl; + int len = 0; + + + len += snprintf(page + len, count - len, "sta_dz_bitmap=0x%x, tim_bitmap=0x%x\n", pstapriv->sta_dz_bitmap, pstapriv->tim_bitmap); + + _enter_critical_bh(&pstapriv->sta_hash_lock, &irqL); + + for(i=0; i< NUM_STA; i++) + { + phead = &(pstapriv->sta_hash[i]); + plist = get_next(phead); + + while ((rtw_end_of_queue_search(phead, plist)) == _FALSE) + { + psta = LIST_CONTAINOR(plist, struct sta_info, hash_list); + + plist = get_next(plist); + + //if(extra_arg == psta->aid) + { + len += snprintf(page + len, count - len, "sta's macaddr:" MAC_FMT "\n", MAC_ARG(psta->hwaddr)); + len += snprintf(page + len, count - len, "rtsen=%d, cts2slef=%d\n", psta->rtsen, psta->cts2self); + len += snprintf(page + len, count - len, "qos_en=%d, ht_en=%d, init_rate=%d\n", psta->qos_option, psta->htpriv.ht_option, psta->init_rate); + len += snprintf(page + len, count - len, "state=0x%x, aid=%d, macid=%d, raid=%d\n", psta->state, psta->aid, psta->mac_id, psta->raid); + len += snprintf(page + len, count - len, "bwmode=%d, ch_offset=%d, sgi=%d\n", psta->htpriv.bwmode, psta->htpriv.ch_offset, psta->htpriv.sgi); + len += snprintf(page + len, count - len, "ampdu_enable = %d\n", psta->htpriv.ampdu_enable); + len += snprintf(page + len, count - len, "agg_enable_bitmap=%x, candidate_tid_bitmap=%x\n", psta->htpriv.agg_enable_bitmap, psta->htpriv.candidate_tid_bitmap); + len += snprintf(page + len, count - len, "sleepq_len=%d\n", psta->sleepq_len); + len += snprintf(page + len, count - len, "capability=0x%x\n", psta->capability); + len += snprintf(page + len, count - len, "flags=0x%x\n", psta->flags); + len += snprintf(page + len, count - len, "wpa_psk=0x%x\n", psta->wpa_psk); + len += snprintf(page + len, count - len, "wpa2_group_cipher=0x%x\n", psta->wpa2_group_cipher); + len += snprintf(page + len, count - len, "wpa2_pairwise_cipher=0x%x\n", psta->wpa2_pairwise_cipher); + len += snprintf(page + len, count - len, "qos_info=0x%x\n", psta->qos_info); + len += snprintf(page + len, count - len, "dot118021XPrivacy=0x%x\n", psta->dot118021XPrivacy); + + for(j=0;j<16;j++) + { + preorder_ctrl = &psta->recvreorder_ctrl[j]; + if(preorder_ctrl->enable) + { + len += snprintf(page + len, count - len, "tid=%d, indicate_seq=%d\n", j, preorder_ctrl->indicate_seq); + } + } + + } + + } + + } + + _exit_critical_bh(&pstapriv->sta_hash_lock, &irqL); + + *eof = 1; + return len; + +} + +#endif + +#ifdef DBG_MEMORY_LEAK +#include +extern atomic_t _malloc_cnt;; +extern atomic_t _malloc_size;; + +int proc_get_malloc_cnt(char *page, char **start, + off_t offset, int count, + int *eof, void *data) +{ + + int len = 0; + + len += snprintf(page + len, count - len, "_malloc_cnt=%d\n", atomic_read(&_malloc_cnt)); + len += snprintf(page + len, count - len, "_malloc_size=%d\n", atomic_read(&_malloc_size)); + + *eof = 1; + return len; +} +#endif /* DBG_MEMORY_LEAK */ + +#ifdef CONFIG_FIND_BEST_CHANNEL +int proc_get_best_channel(char *page, char **start, + off_t offset, int count, + int *eof, void *data) +{ + struct net_device *dev = data; + _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); + struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; + int len = 0; + u32 i, best_channel_24G = 1, best_channel_5G = 36, index_24G = 0, index_5G = 0; + + for (i=0; pmlmeext->channel_set[i].ChannelNum !=0; i++) { + if ( pmlmeext->channel_set[i].ChannelNum == 1) + index_24G = i; + if ( pmlmeext->channel_set[i].ChannelNum == 36) + index_5G = i; + } + + for (i=0; pmlmeext->channel_set[i].ChannelNum !=0; i++) { + // 2.4G + if ( pmlmeext->channel_set[i].ChannelNum == 6 ) { + if ( pmlmeext->channel_set[i].rx_count < pmlmeext->channel_set[index_24G].rx_count ) { + index_24G = i; + best_channel_24G = pmlmeext->channel_set[i].ChannelNum; + } + } + + // 5G + if ( pmlmeext->channel_set[i].ChannelNum >= 36 + && pmlmeext->channel_set[i].ChannelNum < 140 ) { + // Find primary channel + if ( (( pmlmeext->channel_set[i].ChannelNum - 36) % 8 == 0) + && (pmlmeext->channel_set[i].rx_count < pmlmeext->channel_set[index_5G].rx_count) ) { + index_5G = i; + best_channel_5G = pmlmeext->channel_set[i].ChannelNum; + } + } + + if ( pmlmeext->channel_set[i].ChannelNum >= 149 + && pmlmeext->channel_set[i].ChannelNum < 165) { + // find primary channel + if ( (( pmlmeext->channel_set[i].ChannelNum - 149) % 8 == 0) + && (pmlmeext->channel_set[i].rx_count < pmlmeext->channel_set[index_5G].rx_count) ) { + index_5G = i; + best_channel_5G = pmlmeext->channel_set[i].ChannelNum; + } + } +#if 1 // debug + len += snprintf(page + len, count - len, "The rx cnt of channel %3d = %d\n", + pmlmeext->channel_set[i].ChannelNum, pmlmeext->channel_set[i].rx_count); +#endif + } + + len += snprintf(page + len, count - len, "best_channel_5G = %d\n", best_channel_5G); + len += snprintf(page + len, count - len, "best_channel_24G = %d\n", best_channel_24G); + + *eof = 1; + return len; + +} + +int proc_set_best_channel(struct file *file, const char *buffer, + unsigned long count, void *data) +{ + struct net_device *dev = (struct net_device *)data; + _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); + struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; + char tmp[32]; + + if(count < 1) + return -EFAULT; + + if(buffer && !copy_from_user(tmp, buffer, sizeof(tmp))) + { + int i; + for(i = 0; pmlmeext->channel_set[i].ChannelNum != 0; i++) + { + pmlmeext->channel_set[i].rx_count = 0; + } + + DBG_871X("set %s\n", "Clean Best Channel Count"); + } + + return count; +} +#endif /* CONFIG_FIND_BEST_CHANNEL */ + +#if defined(DBG_CONFIG_ERROR_DETECT) +#include +int proc_get_sreset(char *page, char **start, off_t offset, int count, int *eof, void *data) +{ + struct net_device *dev = data; + _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); + struct mlme_priv *pmlmepriv = &(padapter->mlmepriv); + + int len = 0; + + *eof = 1; + return len; +} + +int proc_set_sreset(struct file *file, const char *buffer, unsigned long count, void *data) +{ + struct net_device *dev = (struct net_device *)data; + _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); + char tmp[32]; + s32 trigger_point; + + if (count < 1) + return -EFAULT; + + if (buffer && !copy_from_user(tmp, buffer, sizeof(tmp))) { + + int num = sscanf(tmp, "%d", &trigger_point); + + if (trigger_point == SRESET_TGP_NULL) + rtw_hal_sreset_reset(padapter); + else + sreset_set_trigger_point(padapter, trigger_point); + } + + return count; + +} +#endif /* DBG_CONFIG_ERROR_DETECT */ + +#ifdef CONFIG_DM_ADAPTIVITY +int proc_get_dm_adaptivity(char *page, char **start, + off_t offset, int count, + int *eof, void *data) +{ + struct net_device *dev = data; + _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); + int len = 0; + + len += dm_adaptivity_get_parm_str(padapter, page, count); + + *eof = 1; + return len; +} + +int proc_set_dm_adaptivity(struct file *file, const char *buffer, + unsigned long count, void *data) +{ + struct net_device *dev = (struct net_device *)data; + _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); + char tmp[32]; + u32 TH_L2H_ini; + s8 TH_EDCCA_HL_diff; + u32 IGI_Base; + int ForceEDCCA; + u8 AdapEn_RSSI; + u8 IGI_LowerBound; + + if (count < 1) + return -EFAULT; + + if (buffer && !copy_from_user(tmp, buffer, sizeof(tmp))) { + + int num = sscanf(tmp, "%x %hhd %x %d %hhu %hhu", + &TH_L2H_ini, &TH_EDCCA_HL_diff, &IGI_Base, &ForceEDCCA, &AdapEn_RSSI, &IGI_LowerBound); + + if (num != 6) + return count; + + dm_adaptivity_set_parm(padapter, (s8)TH_L2H_ini, TH_EDCCA_HL_diff, (s8)IGI_Base, (bool)ForceEDCCA, AdapEn_RSSI, IGI_LowerBound); + } + + return count; +} +#endif /* CONFIG_DM_ADAPTIVITY */ + +#endif --- linux-raspi2-4.2.0.orig/drivers/net/wireless/rtl8192cu/core/rtw_eeprom.c +++ linux-raspi2-4.2.0/drivers/net/wireless/rtl8192cu/core/rtw_eeprom.c @@ -0,0 +1,422 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved. + * + * 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 + * published by the Free Software Foundation. + * + * 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 Street, Fifth Floor, Boston, MA 02110, USA + * + * + ******************************************************************************/ +#define _RTW_EEPROM_C_ + +#include +#include +#include + +void up_clk(_adapter* padapter, u16 *x) +{ +_func_enter_; + *x = *x | _EESK; + rtw_write8(padapter, EE_9346CR, (u8)*x); + rtw_udelay_os(CLOCK_RATE); + +_func_exit_; + +} + +void down_clk(_adapter * padapter, u16 *x ) +{ +_func_enter_; + *x = *x & ~_EESK; + rtw_write8(padapter, EE_9346CR, (u8)*x); + rtw_udelay_os(CLOCK_RATE); +_func_exit_; +} + +void shift_out_bits(_adapter * padapter, u16 data, u16 count) +{ + u16 x,mask; +_func_enter_; + + if(padapter->bSurpriseRemoved==_TRUE){ + RT_TRACE(_module_rtl871x_eeprom_c_,_drv_err_,("padapter->bSurpriseRemoved==_TRUE")); + goto out; + } + mask = 0x01 << (count - 1); + x = rtw_read8(padapter, EE_9346CR); + + x &= ~(_EEDO | _EEDI); + + do + { + x &= ~_EEDI; + if(data & mask) + x |= _EEDI; + if(padapter->bSurpriseRemoved==_TRUE){ + RT_TRACE(_module_rtl871x_eeprom_c_,_drv_err_,("padapter->bSurpriseRemoved==_TRUE")); + goto out; + } + rtw_write8(padapter, EE_9346CR, (u8)x); + rtw_udelay_os(CLOCK_RATE); + up_clk(padapter, &x); + down_clk(padapter, &x); + mask = mask >> 1; + } while(mask); + if(padapter->bSurpriseRemoved==_TRUE){ + RT_TRACE(_module_rtl871x_eeprom_c_,_drv_err_,("padapter->bSurpriseRemoved==_TRUE")); + goto out; + } + x &= ~_EEDI; + rtw_write8(padapter, EE_9346CR, (u8)x); +out: +_func_exit_; +} + +u16 shift_in_bits (_adapter * padapter) +{ + u16 x,d=0,i; +_func_enter_; + if(padapter->bSurpriseRemoved==_TRUE){ + RT_TRACE(_module_rtl871x_eeprom_c_,_drv_err_,("padapter->bSurpriseRemoved==_TRUE")); + goto out; + } + x = rtw_read8(padapter, EE_9346CR); + + x &= ~( _EEDO | _EEDI); + d = 0; + + for(i=0; i<16; i++) + { + d = d << 1; + up_clk(padapter, &x); + if(padapter->bSurpriseRemoved==_TRUE){ + RT_TRACE(_module_rtl871x_eeprom_c_,_drv_err_,("padapter->bSurpriseRemoved==_TRUE")); + goto out; + } + x = rtw_read8(padapter, EE_9346CR); + + x &= ~(_EEDI); + if(x & _EEDO) + d |= 1; + + down_clk(padapter, &x); + } +out: +_func_exit_; + + return d; +} + +void standby(_adapter * padapter ) +{ + u8 x; +_func_enter_; + x = rtw_read8(padapter, EE_9346CR); + + x &= ~(_EECS | _EESK); + rtw_write8(padapter, EE_9346CR,x); + + rtw_udelay_os(CLOCK_RATE); + x |= _EECS; + rtw_write8(padapter, EE_9346CR, x); + rtw_udelay_os(CLOCK_RATE); +_func_exit_; +} + +u16 wait_eeprom_cmd_done(_adapter* padapter) +{ + u8 x; + u16 i,res=_FALSE; +_func_enter_; + standby(padapter ); + for (i=0; i<200; i++) + { + x = rtw_read8(padapter, EE_9346CR); + if (x & _EEDO){ + res=_TRUE; + goto exit; + } + rtw_udelay_os(CLOCK_RATE); + } +exit: +_func_exit_; + return res; +} + +void eeprom_clean(_adapter * padapter) +{ + u16 x; +_func_enter_; + if(padapter->bSurpriseRemoved==_TRUE){ + RT_TRACE(_module_rtl871x_eeprom_c_,_drv_err_,("padapter->bSurpriseRemoved==_TRUE")); + goto out; + } + x = rtw_read8(padapter, EE_9346CR); + if(padapter->bSurpriseRemoved==_TRUE){ + RT_TRACE(_module_rtl871x_eeprom_c_,_drv_err_,("padapter->bSurpriseRemoved==_TRUE")); + goto out; + } + x &= ~(_EECS | _EEDI); + rtw_write8(padapter, EE_9346CR, (u8)x); + if(padapter->bSurpriseRemoved==_TRUE){ + RT_TRACE(_module_rtl871x_eeprom_c_,_drv_err_,("padapter->bSurpriseRemoved==_TRUE")); + goto out; + } + up_clk(padapter, &x); + if(padapter->bSurpriseRemoved==_TRUE){ + RT_TRACE(_module_rtl871x_eeprom_c_,_drv_err_,("padapter->bSurpriseRemoved==_TRUE")); + goto out; + } + down_clk(padapter, &x); +out: +_func_exit_; +} + +void eeprom_write16(_adapter * padapter, u16 reg, u16 data) +{ + u8 x; +#ifdef CONFIG_RTL8712 + u8 tmp8_ori,tmp8_new,tmp8_clk_ori,tmp8_clk_new; + tmp8_ori=rtw_read8(padapter, 0x102502f1); + tmp8_new=tmp8_ori & 0xf7; + if(tmp8_ori != tmp8_new){ + rtw_write8(padapter, 0x102502f1, tmp8_new); + RT_TRACE(_module_rtl871x_mp_ioctl_c_,_drv_err_,("====write 0x102502f1=====\n")); + } + tmp8_clk_ori=rtw_read8(padapter,0x10250003); + tmp8_clk_new=tmp8_clk_ori|0x20; + if(tmp8_clk_new!=tmp8_clk_ori){ + RT_TRACE(_module_rtl871x_mp_ioctl_c_,_drv_err_,("====write 0x10250003=====\n")); + rtw_write8(padapter, 0x10250003, tmp8_clk_new); + } +#endif +_func_enter_; + + x = rtw_read8(padapter, EE_9346CR); + + x &= ~(_EEDI | _EEDO | _EESK | _EEM0); + x |= _EEM1 | _EECS; + rtw_write8(padapter, EE_9346CR, x); + + shift_out_bits(padapter, EEPROM_EWEN_OPCODE, 5); + + if(padapter->EepromAddressSize==8) //CF+ and SDIO + shift_out_bits(padapter, 0, 6); + else //USB + shift_out_bits(padapter, 0, 4); + + standby( padapter); + +// Commented out by rcnjko, 2004.0 +// // Erase this particular word. Write the erase opcode and register +// // number in that order. The opcode is 3bits in length; reg is 6 bits long. +// shift_out_bits(Adapter, EEPROM_ERASE_OPCODE, 3); +// shift_out_bits(Adapter, reg, Adapter->EepromAddressSize); +// +// if (wait_eeprom_cmd_done(Adapter ) == FALSE) +// { +// return; +// } + + + standby(padapter ); + + // write the new word to the EEPROM + + // send the write opcode the EEPORM + shift_out_bits(padapter, EEPROM_WRITE_OPCODE, 3); + + // select which word in the EEPROM that we are writing to. + shift_out_bits(padapter, reg, padapter->EepromAddressSize); + + // write the data to the selected EEPROM word. + shift_out_bits(padapter, data, 16); + + if (wait_eeprom_cmd_done(padapter ) == _FALSE) + { + + goto exit; + } + + standby(padapter ); + + shift_out_bits(padapter, EEPROM_EWDS_OPCODE, 5); + shift_out_bits(padapter, reg, 4); + + eeprom_clean(padapter ); +exit: +#ifdef CONFIG_RTL8712 + if(tmp8_clk_new!=tmp8_clk_ori) + rtw_write8(padapter, 0x10250003, tmp8_clk_ori); + if(tmp8_new!=tmp8_ori) + rtw_write8(padapter, 0x102502f1, tmp8_ori); + +#endif +_func_exit_; + return; +} + +u16 eeprom_read16(_adapter * padapter, u16 reg) //ReadEEprom +{ + + u16 x; + u16 data=0; +#ifdef CONFIG_RTL8712 + u8 tmp8_ori,tmp8_new,tmp8_clk_ori,tmp8_clk_new; + tmp8_ori= rtw_read8(padapter, 0x102502f1); + tmp8_new = tmp8_ori & 0xf7; + if(tmp8_ori != tmp8_new){ + rtw_write8(padapter, 0x102502f1, tmp8_new); + RT_TRACE(_module_rtl871x_mp_ioctl_c_,_drv_err_,("====write 0x102502f1=====\n")); + } + tmp8_clk_ori=rtw_read8(padapter,0x10250003); + tmp8_clk_new=tmp8_clk_ori|0x20; + if(tmp8_clk_new!=tmp8_clk_ori){ + RT_TRACE(_module_rtl871x_mp_ioctl_c_,_drv_err_,("====write 0x10250003=====\n")); + rtw_write8(padapter, 0x10250003, tmp8_clk_new); + } +#endif +_func_enter_; + + if(padapter->bSurpriseRemoved==_TRUE){ + RT_TRACE(_module_rtl871x_eeprom_c_,_drv_err_,("padapter->bSurpriseRemoved==_TRUE")); + goto out; + } + // select EEPROM, reset bits, set _EECS + x = rtw_read8(padapter, EE_9346CR); + + if(padapter->bSurpriseRemoved==_TRUE){ + RT_TRACE(_module_rtl871x_eeprom_c_,_drv_err_,("padapter->bSurpriseRemoved==_TRUE")); + goto out; + } + + x &= ~(_EEDI | _EEDO | _EESK | _EEM0); + x |= _EEM1 | _EECS; + rtw_write8(padapter, EE_9346CR, (unsigned char)x); + + // write the read opcode and register number in that order + // The opcode is 3bits in length, reg is 6 bits long + shift_out_bits(padapter, EEPROM_READ_OPCODE, 3); + shift_out_bits(padapter, reg, padapter->EepromAddressSize); + + // Now read the data (16 bits) in from the selected EEPROM word + data = shift_in_bits(padapter); + + eeprom_clean(padapter); +out: +#ifdef CONFIG_RTL8712 + if(tmp8_clk_new!=tmp8_clk_ori) + rtw_write8(padapter, 0x10250003, tmp8_clk_ori); + if(tmp8_new!=tmp8_ori) + rtw_write8(padapter, 0x102502f1, tmp8_ori); + +#endif +_func_exit_; + return data; + + +} + + + + +//From even offset +void eeprom_read_sz(_adapter * padapter, u16 reg, u8* data, u32 sz) +{ + + u16 x, data16; + u32 i; +_func_enter_; + if(padapter->bSurpriseRemoved==_TRUE){ + RT_TRACE(_module_rtl871x_eeprom_c_,_drv_err_,("padapter->bSurpriseRemoved==_TRUE")); + goto out; + } + // select EEPROM, reset bits, set _EECS + x = rtw_read8(padapter, EE_9346CR); + + if(padapter->bSurpriseRemoved==_TRUE){ + RT_TRACE(_module_rtl871x_eeprom_c_,_drv_err_,("padapter->bSurpriseRemoved==_TRUE")); + goto out; + } + + x &= ~(_EEDI | _EEDO | _EESK | _EEM0); + x |= _EEM1 | _EECS; + rtw_write8(padapter, EE_9346CR, (unsigned char)x); + + // write the read opcode and register number in that order + // The opcode is 3bits in length, reg is 6 bits long + shift_out_bits(padapter, EEPROM_READ_OPCODE, 3); + shift_out_bits(padapter, reg, padapter->EepromAddressSize); + + + for(i=0; i>8; + } + + eeprom_clean(padapter); +out: +_func_exit_; + + + +} + + +//addr_off : address offset of the entry in eeprom (not the tuple number of eeprom (reg); that is addr_off !=reg) +u8 eeprom_read(_adapter * padapter, u32 addr_off, u8 sz, u8* rbuf) +{ + u8 quotient, remainder, addr_2align_odd; + u16 reg, stmp , i=0, idx = 0; +_func_enter_; + reg = (u16)(addr_off >> 1); + addr_2align_odd = (u8)(addr_off & 0x1); + + if(addr_2align_odd) //read that start at high part: e.g 1,3,5,7,9,... + { + stmp = eeprom_read16(padapter, reg); + rbuf[idx++] = (u8) ((stmp>>8)&0xff); //return hogh-part of the short + reg++; sz--; + } + + quotient = sz >> 1; + remainder = sz & 0x1; + + for( i=0 ; i < quotient; i++) + { + stmp = eeprom_read16(padapter, reg+i); + rbuf[idx++] = (u8) (stmp&0xff); + rbuf[idx++] = (u8) ((stmp>>8)&0xff); + } + + reg = reg+i; + if(remainder){ //end of read at lower part of short : 0,2,4,6,... + stmp = eeprom_read16(padapter, reg); + rbuf[idx] = (u8)(stmp & 0xff); + } +_func_exit_; + return _TRUE; +} + + + +VOID read_eeprom_content(_adapter * padapter) +{ + +_func_enter_; + + +_func_exit_; +} --- linux-raspi2-4.2.0.orig/drivers/net/wireless/rtl8192cu/core/rtw_ieee80211.c +++ linux-raspi2-4.2.0/drivers/net/wireless/rtl8192cu/core/rtw_ieee80211.c @@ -0,0 +1,1914 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved. + * + * 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 + * published by the Free Software Foundation. + * + * 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 Street, Fifth Floor, Boston, MA 02110, USA + * + * + ******************************************************************************/ +#define _IEEE80211_C + +#include +#include +#include +#include +#include + +u8 RTW_WPA_OUI_TYPE[] = { 0x00, 0x50, 0xf2, 1 }; +u16 RTW_WPA_VERSION = 1; +u8 WPA_AUTH_KEY_MGMT_NONE[] = { 0x00, 0x50, 0xf2, 0 }; +u8 WPA_AUTH_KEY_MGMT_UNSPEC_802_1X[] = { 0x00, 0x50, 0xf2, 1 }; +u8 WPA_AUTH_KEY_MGMT_PSK_OVER_802_1X[] = { 0x00, 0x50, 0xf2, 2 }; +u8 WPA_CIPHER_SUITE_NONE[] = { 0x00, 0x50, 0xf2, 0 }; +u8 WPA_CIPHER_SUITE_WEP40[] = { 0x00, 0x50, 0xf2, 1 }; +u8 WPA_CIPHER_SUITE_TKIP[] = { 0x00, 0x50, 0xf2, 2 }; +u8 WPA_CIPHER_SUITE_WRAP[] = { 0x00, 0x50, 0xf2, 3 }; +u8 WPA_CIPHER_SUITE_CCMP[] = { 0x00, 0x50, 0xf2, 4 }; +u8 WPA_CIPHER_SUITE_WEP104[] = { 0x00, 0x50, 0xf2, 5 }; + +u16 RSN_VERSION_BSD = 1; +u8 RSN_AUTH_KEY_MGMT_UNSPEC_802_1X[] = { 0x00, 0x0f, 0xac, 1 }; +u8 RSN_AUTH_KEY_MGMT_PSK_OVER_802_1X[] = { 0x00, 0x0f, 0xac, 2 }; +u8 RSN_CIPHER_SUITE_NONE[] = { 0x00, 0x0f, 0xac, 0 }; +u8 RSN_CIPHER_SUITE_WEP40[] = { 0x00, 0x0f, 0xac, 1 }; +u8 RSN_CIPHER_SUITE_TKIP[] = { 0x00, 0x0f, 0xac, 2 }; +u8 RSN_CIPHER_SUITE_WRAP[] = { 0x00, 0x0f, 0xac, 3 }; +u8 RSN_CIPHER_SUITE_CCMP[] = { 0x00, 0x0f, 0xac, 4 }; +u8 RSN_CIPHER_SUITE_WEP104[] = { 0x00, 0x0f, 0xac, 5 }; +//----------------------------------------------------------- +// for adhoc-master to generate ie and provide supported-rate to fw +//----------------------------------------------------------- + +static u8 WIFI_CCKRATES[] = +{(IEEE80211_CCK_RATE_1MB | IEEE80211_BASIC_RATE_MASK), + (IEEE80211_CCK_RATE_2MB | IEEE80211_BASIC_RATE_MASK), + (IEEE80211_CCK_RATE_5MB | IEEE80211_BASIC_RATE_MASK), + (IEEE80211_CCK_RATE_11MB | IEEE80211_BASIC_RATE_MASK)}; + +static u8 WIFI_OFDMRATES[] = +{(IEEE80211_OFDM_RATE_6MB), + (IEEE80211_OFDM_RATE_9MB), + (IEEE80211_OFDM_RATE_12MB), + (IEEE80211_OFDM_RATE_18MB), + (IEEE80211_OFDM_RATE_24MB), + IEEE80211_OFDM_RATE_36MB, + IEEE80211_OFDM_RATE_48MB, + IEEE80211_OFDM_RATE_54MB}; + + +int rtw_get_bit_value_from_ieee_value(u8 val) +{ + unsigned char dot11_rate_table[]={2,4,11,22,12,18,24,36,48,72,96,108,0}; // last element must be zero!! + + int i=0; + while(dot11_rate_table[i] != 0) { + if (dot11_rate_table[i] == val) + return BIT(i); + i++; + } + return 0; +} + +uint rtw_is_cckrates_included(u8 *rate) +{ + u32 i = 0; + + while(rate[i]!=0) + { + if ( (((rate[i]) & 0x7f) == 2) || (((rate[i]) & 0x7f) == 4) || + (((rate[i]) & 0x7f) == 11) || (((rate[i]) & 0x7f) == 22) ) + return _TRUE; + i++; + } + + return _FALSE; +} + +uint rtw_is_cckratesonly_included(u8 *rate) +{ + u32 i = 0; + + + while(rate[i]!=0) + { + if ( (((rate[i]) & 0x7f) != 2) && (((rate[i]) & 0x7f) != 4) && + (((rate[i]) & 0x7f) != 11) && (((rate[i]) & 0x7f) != 22) ) + + return _FALSE; + + i++; + } + + return _TRUE; + +} + +int rtw_check_network_type(unsigned char *rate, int ratelen, int channel) +{ + if (channel > 14) + { + if ((rtw_is_cckrates_included(rate)) == _TRUE) + return WIRELESS_INVALID; + else + return WIRELESS_11A; + } + else // could be pure B, pure G, or B/G + { + if ((rtw_is_cckratesonly_included(rate)) == _TRUE) + return WIRELESS_11B; + else if((rtw_is_cckrates_included(rate)) == _TRUE) + return WIRELESS_11BG; + else + return WIRELESS_11G; + } + +} + +u8 *rtw_set_fixed_ie(unsigned char *pbuf, unsigned int len, unsigned char *source, + unsigned int *frlen) +{ + _rtw_memcpy((void *)pbuf, (void *)source, len); + *frlen = *frlen + len; + return (pbuf + len); +} + +// rtw_set_ie will update frame length +u8 *rtw_set_ie +( + u8 *pbuf, + sint index, + uint len, + u8 *source, + uint *frlen //frame length +) +{ +_func_enter_; + *pbuf = (u8)index; + + *(pbuf + 1) = (u8)len; + + if (len > 0) + _rtw_memcpy((void *)(pbuf + 2), (void *)source, len); + + *frlen = *frlen + (len + 2); + + return (pbuf + len + 2); +_func_exit_; +} + +inline u8 *rtw_set_ie_ch_switch(u8 *buf, u32 *buf_len, u8 ch_switch_mode, + u8 new_ch, u8 ch_switch_cnt) +{ + u8 ie_data[3]; + + ie_data[0] = ch_switch_mode; + ie_data[1] = new_ch; + ie_data[2] = ch_switch_cnt; + return rtw_set_ie(buf, WLAN_EID_CHANNEL_SWITCH, 3, ie_data, buf_len); +} + +inline u8 secondary_ch_offset_to_hal_ch_offset(u8 ch_offset) +{ + if (ch_offset == SCN) + return HAL_PRIME_CHNL_OFFSET_DONT_CARE; + else if(ch_offset == SCA) + return HAL_PRIME_CHNL_OFFSET_UPPER; + else if(ch_offset == SCB) + return HAL_PRIME_CHNL_OFFSET_LOWER; + + return HAL_PRIME_CHNL_OFFSET_DONT_CARE; +} + +inline u8 hal_ch_offset_to_secondary_ch_offset(u8 ch_offset) +{ + if (ch_offset == HAL_PRIME_CHNL_OFFSET_DONT_CARE) + return SCN; + else if(ch_offset == HAL_PRIME_CHNL_OFFSET_LOWER) + return SCB; + else if(ch_offset == HAL_PRIME_CHNL_OFFSET_UPPER) + return SCA; + + return SCN; +} + +inline u8 *rtw_set_ie_secondary_ch_offset(u8 *buf, u32 *buf_len, u8 secondary_ch_offset) +{ + return rtw_set_ie(buf, WLAN_EID_SECONDARY_CHANNEL_OFFSET, 1, &secondary_ch_offset, buf_len); +} + +inline u8 *rtw_set_ie_mesh_ch_switch_parm(u8 *buf, u32 *buf_len, u8 ttl, + u8 flags, u16 reason, u16 precedence) +{ + u8 ie_data[6]; + + ie_data[0] = ttl; + ie_data[1] = flags; + RTW_PUT_LE16((u8*)&ie_data[2], reason); + RTW_PUT_LE16((u8*)&ie_data[4], precedence); + + return rtw_set_ie(buf, 0x118, 6, ie_data, buf_len); +} + +/*---------------------------------------------------------------------------- +index: the information element id index, limit is the limit for search +-----------------------------------------------------------------------------*/ +u8 *rtw_get_ie(u8 *pbuf, sint index, sint *len, sint limit) +{ + sint tmp,i; + u8 *p; +_func_enter_; + if (limit < 1){ + _func_exit_; + return NULL; + } + + p = pbuf; + i = 0; + *len = 0; + while(1) + { + if (*p == index) + { + *len = *(p + 1); + return (p); + } + else + { + tmp = *(p + 1); + p += (tmp + 2); + i += (tmp + 2); + } + if (i >= limit) + break; + } +_func_exit_; + return NULL; +} + +/** + * rtw_get_ie_ex - Search specific IE from a series of IEs + * @in_ie: Address of IEs to search + * @in_len: Length limit from in_ie + * @eid: Element ID to match + * @oui: OUI to match + * @oui_len: OUI length + * @ie: If not NULL and the specific IE is found, the IE will be copied to the buf starting from the specific IE + * @ielen: If not NULL and the specific IE is found, will set to the length of the entire IE + * + * Returns: The address of the specific IE found, or NULL + */ +u8 *rtw_get_ie_ex(u8 *in_ie, uint in_len, u8 eid, u8 *oui, u8 oui_len, u8 *ie, uint *ielen) +{ + uint cnt; + u8 *target_ie = NULL; + + + if(ielen) + *ielen = 0; + + if(!in_ie || in_len<=0) + return target_ie; + + cnt = 0; + + while(cnt 12) + break; + + i++; + } +_func_exit_; + return i; +} + +int rtw_generate_ie(struct registry_priv *pregistrypriv) +{ + u8 wireless_mode; + int sz = 0, rateLen; + WLAN_BSSID_EX* pdev_network = &pregistrypriv->dev_network; + u8* ie = pdev_network->IEs; + +_func_enter_; + + //timestamp will be inserted by hardware + sz += 8; + ie += sz; + + //beacon interval : 2bytes + *(u16*)ie = cpu_to_le16((u16)pdev_network->Configuration.BeaconPeriod);//BCN_INTERVAL; + sz += 2; + ie += 2; + + //capability info + *(u16*)ie = 0; + + *(u16*)ie |= cpu_to_le16(cap_IBSS); + + if(pregistrypriv->preamble == PREAMBLE_SHORT) + *(u16*)ie |= cpu_to_le16(cap_ShortPremble); + + if (pdev_network->Privacy) + *(u16*)ie |= cpu_to_le16(cap_Privacy); + + sz += 2; + ie += 2; + + //SSID + ie = rtw_set_ie(ie, _SSID_IE_, pdev_network->Ssid.SsidLength, pdev_network->Ssid.Ssid, &sz); + + //supported rates + if(pregistrypriv->wireless_mode == WIRELESS_11ABGN) + { + if(pdev_network->Configuration.DSConfig > 14) + wireless_mode = WIRELESS_11A_5N; + else + wireless_mode = WIRELESS_11BG_24N; + } + else + { + wireless_mode = pregistrypriv->wireless_mode; + } + + rtw_set_supported_rate(pdev_network->SupportedRates, wireless_mode) ; + + rateLen = rtw_get_rateset_len(pdev_network->SupportedRates); + + if (rateLen > 8) + { + ie = rtw_set_ie(ie, _SUPPORTEDRATES_IE_, 8, pdev_network->SupportedRates, &sz); + //ie = rtw_set_ie(ie, _EXT_SUPPORTEDRATES_IE_, (rateLen - 8), (pdev_network->SupportedRates + 8), &sz); + } + else + { + ie = rtw_set_ie(ie, _SUPPORTEDRATES_IE_, rateLen, pdev_network->SupportedRates, &sz); + } + + //DS parameter set + ie = rtw_set_ie(ie, _DSSET_IE_, 1, (u8 *)&(pdev_network->Configuration.DSConfig), &sz); + + + //IBSS Parameter Set + + ie = rtw_set_ie(ie, _IBSS_PARA_IE_, 2, (u8 *)&(pdev_network->Configuration.ATIMWindow), &sz); + + if (rateLen > 8) + { + ie = rtw_set_ie(ie, _EXT_SUPPORTEDRATES_IE_, (rateLen - 8), (pdev_network->SupportedRates + 8), &sz); + } + + + //HT Cap. + if(((pregistrypriv->wireless_mode&WIRELESS_11_5N)||(pregistrypriv->wireless_mode&WIRELESS_11_24N)) + && (pregistrypriv->ht_enable==_TRUE)) + { + //todo: + } + + //pdev_network->IELength = sz; //update IELength + +_func_exit_; + + //return _SUCCESS; + + return sz; + +} + +unsigned char *rtw_get_wpa_ie(unsigned char *pie, int *wpa_ie_len, int limit) +{ + int len; + u16 val16; + unsigned char wpa_oui_type[] = {0x00, 0x50, 0xf2, 0x01}; + u8 *pbuf = pie; + + while(1) + { + pbuf = rtw_get_ie(pbuf, _WPA_IE_ID_, &len, limit); + + if (pbuf) { + + //check if oui matches... + if (_rtw_memcmp((pbuf + 2), wpa_oui_type, sizeof (wpa_oui_type)) == _FALSE) { + + goto check_next_ie; + } + + //check version... + _rtw_memcpy((u8 *)&val16, (pbuf + 6), sizeof(val16)); + + val16 = le16_to_cpu(val16); + if (val16 != 0x0001) + goto check_next_ie; + + *wpa_ie_len = *(pbuf + 1); + + return pbuf; + } + else { + + *wpa_ie_len = 0; + return NULL; + } + +check_next_ie: + + limit -= (2 + len); + + if (limit <= 0) + break; + + pbuf += (2 + len); + } + + *wpa_ie_len = 0; + + return NULL; +} + +unsigned char *rtw_get_wpa2_ie(unsigned char *pie, int *rsn_ie_len, int limit) +{ + + return rtw_get_ie(pie, _WPA2_IE_ID_,rsn_ie_len, limit); + +} + +int rtw_get_wpa_cipher_suite(u8 *s) +{ + if (_rtw_memcmp(s, WPA_CIPHER_SUITE_NONE, WPA_SELECTOR_LEN) == _TRUE) + return WPA_CIPHER_NONE; + if (_rtw_memcmp(s, WPA_CIPHER_SUITE_WEP40, WPA_SELECTOR_LEN) == _TRUE) + return WPA_CIPHER_WEP40; + if (_rtw_memcmp(s, WPA_CIPHER_SUITE_TKIP, WPA_SELECTOR_LEN) == _TRUE) + return WPA_CIPHER_TKIP; + if (_rtw_memcmp(s, WPA_CIPHER_SUITE_CCMP, WPA_SELECTOR_LEN) == _TRUE) + return WPA_CIPHER_CCMP; + if (_rtw_memcmp(s, WPA_CIPHER_SUITE_WEP104, WPA_SELECTOR_LEN) == _TRUE) + return WPA_CIPHER_WEP104; + + return 0; +} + +int rtw_get_wpa2_cipher_suite(u8 *s) +{ + if (_rtw_memcmp(s, RSN_CIPHER_SUITE_NONE, RSN_SELECTOR_LEN) == _TRUE) + return WPA_CIPHER_NONE; + if (_rtw_memcmp(s, RSN_CIPHER_SUITE_WEP40, RSN_SELECTOR_LEN) == _TRUE) + return WPA_CIPHER_WEP40; + if (_rtw_memcmp(s, RSN_CIPHER_SUITE_TKIP, RSN_SELECTOR_LEN) == _TRUE) + return WPA_CIPHER_TKIP; + if (_rtw_memcmp(s, RSN_CIPHER_SUITE_CCMP, RSN_SELECTOR_LEN) == _TRUE) + return WPA_CIPHER_CCMP; + if (_rtw_memcmp(s, RSN_CIPHER_SUITE_WEP104, RSN_SELECTOR_LEN) == _TRUE) + return WPA_CIPHER_WEP104; + + return 0; +} + + +int rtw_parse_wpa_ie(u8* wpa_ie, int wpa_ie_len, int *group_cipher, int *pairwise_cipher) +{ + int i, ret=_SUCCESS; + int left, count; + u8 *pos; + + if (wpa_ie_len <= 0) { + /* No WPA IE - fail silently */ + return _FAIL; + } + + + if ((*wpa_ie != _WPA_IE_ID_) || (*(wpa_ie+1) != (u8)(wpa_ie_len - 2)) || + (_rtw_memcmp(wpa_ie+2, RTW_WPA_OUI_TYPE, WPA_SELECTOR_LEN) != _TRUE) ) + { + return _FAIL; + } + + pos = wpa_ie; + + pos += 8; + left = wpa_ie_len - 8; + + + //group_cipher + if (left >= WPA_SELECTOR_LEN) { + + *group_cipher = rtw_get_wpa_cipher_suite(pos); + + pos += WPA_SELECTOR_LEN; + left -= WPA_SELECTOR_LEN; + + } + else if (left > 0) + { + RT_TRACE(_module_rtl871x_mlme_c_,_drv_err_,("%s: ie length mismatch, %u too much", __FUNCTION__, left)); + + return _FAIL; + } + + + //pairwise_cipher + if (left >= 2) + { + //count = le16_to_cpu(*(u16*)pos); + count = RTW_GET_LE16(pos); + pos += 2; + left -= 2; + + if (count == 0 || left < count * WPA_SELECTOR_LEN) { + RT_TRACE(_module_rtl871x_mlme_c_,_drv_err_,("%s: ie count botch (pairwise), " + "count %u left %u", __FUNCTION__, count, left)); + return _FAIL; + } + + for (i = 0; i < count; i++) + { + *pairwise_cipher |= rtw_get_wpa_cipher_suite(pos); + + pos += WPA_SELECTOR_LEN; + left -= WPA_SELECTOR_LEN; + } + + } + else if (left == 1) + { + RT_TRACE(_module_rtl871x_mlme_c_,_drv_err_,("%s: ie too short (for key mgmt)", __FUNCTION__)); + return _FAIL; + } + + + return ret; + +} + +int rtw_parse_wpa2_ie(u8* rsn_ie, int rsn_ie_len, int *group_cipher, int *pairwise_cipher) +{ + int i, ret=_SUCCESS; + int left, count; + u8 *pos; + + if (rsn_ie_len <= 0) { + /* No RSN IE - fail silently */ + return _FAIL; + } + + + if ((*rsn_ie!= _WPA2_IE_ID_) || (*(rsn_ie+1) != (u8)(rsn_ie_len - 2))) + { + return _FAIL; + } + + pos = rsn_ie; + pos += 4; + left = rsn_ie_len - 4; + + //group_cipher + if (left >= RSN_SELECTOR_LEN) { + + *group_cipher = rtw_get_wpa2_cipher_suite(pos); + + pos += RSN_SELECTOR_LEN; + left -= RSN_SELECTOR_LEN; + + } else if (left > 0) { + RT_TRACE(_module_rtl871x_mlme_c_,_drv_err_,("%s: ie length mismatch, %u too much", __FUNCTION__, left)); + return _FAIL; + } + + //pairwise_cipher + if (left >= 2) + { + //count = le16_to_cpu(*(u16*)pos); + count = RTW_GET_LE16(pos); + pos += 2; + left -= 2; + + if (count == 0 || left < count * RSN_SELECTOR_LEN) { + RT_TRACE(_module_rtl871x_mlme_c_,_drv_err_,("%s: ie count botch (pairwise), " + "count %u left %u", __FUNCTION__, count, left)); + return _FAIL; + } + + for (i = 0; i < count; i++) + { + *pairwise_cipher |= rtw_get_wpa2_cipher_suite(pos); + + pos += RSN_SELECTOR_LEN; + left -= RSN_SELECTOR_LEN; + } + + } + else if (left == 1) + { + RT_TRACE(_module_rtl871x_mlme_c_,_drv_err_,("%s: ie too short (for key mgmt)", __FUNCTION__)); + + return _FAIL; + } + + + return ret; + +} + +int rtw_get_sec_ie(u8 *in_ie,uint in_len,u8 *rsn_ie,u16 *rsn_len,u8 *wpa_ie,u16 *wpa_len) +{ + u8 authmode, sec_idx, i; + u8 wpa_oui[4]={0x0,0x50,0xf2,0x01}; + uint cnt; + +_func_enter_; + + //Search required WPA or WPA2 IE and copy to sec_ie[ ] + + cnt = (_TIMESTAMP_ + _BEACON_ITERVAL_ + _CAPABILITY_); + + sec_idx=0; + + while(cnt found WPS_IE.....\n"); + *wps_ielen = ie_ptr[1]+2; + match=_TRUE; + } + return match; +} + +/** + * rtw_get_wps_ie - Search WPS IE from a series of IEs + * @in_ie: Address of IEs to search + * @in_len: Length limit from in_ie + * @wps_ie: If not NULL and WPS IE is found, WPS IE will be copied to the buf starting from wps_ie + * @wps_ielen: If not NULL and WPS IE is found, will set to the length of the entire WPS IE + * + * Returns: The address of the WPS IE found, or NULL + */ +u8 *rtw_get_wps_ie(u8 *in_ie, uint in_len, u8 *wps_ie, uint *wps_ielen) +{ + uint cnt; + u8 *wpsie_ptr=NULL; + u8 eid, wps_oui[4]={0x0,0x50,0xf2,0x04}; + + if(wps_ielen) + *wps_ielen = 0; + + if(!in_ie || in_len<=0) + return wpsie_ptr; + + cnt = 0; + + while(cntwpa_ie = pos; + elems->wpa_ie_len = elen; + break; + case WME_OUI_TYPE: /* this is a Wi-Fi WME info. element */ + if (elen < 5) { + DBG_871X("short WME " + "information element ignored " + "(len=%lu)\n", + (unsigned long) elen); + return -1; + } + switch (pos[4]) { + case WME_OUI_SUBTYPE_INFORMATION_ELEMENT: + case WME_OUI_SUBTYPE_PARAMETER_ELEMENT: + elems->wme = pos; + elems->wme_len = elen; + break; + case WME_OUI_SUBTYPE_TSPEC_ELEMENT: + elems->wme_tspec = pos; + elems->wme_tspec_len = elen; + break; + default: + DBG_871X("unknown WME " + "information element ignored " + "(subtype=%d len=%lu)\n", + pos[4], (unsigned long) elen); + return -1; + } + break; + case 4: + /* Wi-Fi Protected Setup (WPS) IE */ + elems->wps_ie = pos; + elems->wps_ie_len = elen; + break; + default: + DBG_871X("Unknown Microsoft " + "information element ignored " + "(type=%d len=%lu)\n", + pos[3], (unsigned long) elen); + return -1; + } + break; + + case OUI_BROADCOM: + switch (pos[3]) { + case VENDOR_HT_CAPAB_OUI_TYPE: + elems->vendor_ht_cap = pos; + elems->vendor_ht_cap_len = elen; + break; + default: + DBG_871X("Unknown Broadcom " + "information element ignored " + "(type=%d len=%lu)\n", + pos[3], (unsigned long) elen); + return -1; + } + break; + + default: + DBG_871X("unknown vendor specific information " + "element ignored (vendor OUI %02x:%02x:%02x " + "len=%lu)\n", + pos[0], pos[1], pos[2], (unsigned long) elen); + return -1; + } + + return 0; + +} + +/** + * ieee802_11_parse_elems - Parse information elements in management frames + * @start: Pointer to the start of IEs + * @len: Length of IE buffer in octets + * @elems: Data structure for parsed elements + * @show_errors: Whether to show parsing errors in debug log + * Returns: Parsing result + */ +ParseRes rtw_ieee802_11_parse_elems(u8 *start, uint len, + struct rtw_ieee802_11_elems *elems, + int show_errors) +{ + uint left = len; + u8 *pos = start; + int unknown = 0; + + _rtw_memset(elems, 0, sizeof(*elems)); + + while (left >= 2) { + u8 id, elen; + + id = *pos++; + elen = *pos++; + left -= 2; + + if (elen > left) { + if (show_errors) { + DBG_871X("IEEE 802.11 element " + "parse failed (id=%d elen=%d " + "left=%lu)\n", + id, elen, (unsigned long) left); + } + return ParseFailed; + } + + switch (id) { + case WLAN_EID_SSID: + elems->ssid = pos; + elems->ssid_len = elen; + break; + case WLAN_EID_SUPP_RATES: + elems->supp_rates = pos; + elems->supp_rates_len = elen; + break; + case WLAN_EID_FH_PARAMS: + elems->fh_params = pos; + elems->fh_params_len = elen; + break; + case WLAN_EID_DS_PARAMS: + elems->ds_params = pos; + elems->ds_params_len = elen; + break; + case WLAN_EID_CF_PARAMS: + elems->cf_params = pos; + elems->cf_params_len = elen; + break; + case WLAN_EID_TIM: + elems->tim = pos; + elems->tim_len = elen; + break; + case WLAN_EID_IBSS_PARAMS: + elems->ibss_params = pos; + elems->ibss_params_len = elen; + break; + case WLAN_EID_CHALLENGE: + elems->challenge = pos; + elems->challenge_len = elen; + break; + case WLAN_EID_ERP_INFO: + elems->erp_info = pos; + elems->erp_info_len = elen; + break; + case WLAN_EID_EXT_SUPP_RATES: + elems->ext_supp_rates = pos; + elems->ext_supp_rates_len = elen; + break; + case WLAN_EID_VENDOR_SPECIFIC: + if (rtw_ieee802_11_parse_vendor_specific(pos, elen, + elems, + show_errors)) + unknown++; + break; + case WLAN_EID_RSN: + elems->rsn_ie = pos; + elems->rsn_ie_len = elen; + break; + case WLAN_EID_PWR_CAPABILITY: + elems->power_cap = pos; + elems->power_cap_len = elen; + break; + case WLAN_EID_SUPPORTED_CHANNELS: + elems->supp_channels = pos; + elems->supp_channels_len = elen; + break; + case WLAN_EID_MOBILITY_DOMAIN: + elems->mdie = pos; + elems->mdie_len = elen; + break; + case WLAN_EID_FAST_BSS_TRANSITION: + elems->ftie = pos; + elems->ftie_len = elen; + break; + case WLAN_EID_TIMEOUT_INTERVAL: + elems->timeout_int = pos; + elems->timeout_int_len = elen; + break; + case WLAN_EID_HT_CAP: + elems->ht_capabilities = pos; + elems->ht_capabilities_len = elen; + break; + case WLAN_EID_HT_OPERATION: + elems->ht_operation = pos; + elems->ht_operation_len = elen; + break; + default: + unknown++; + if (!show_errors) + break; + DBG_871X("IEEE 802.11 element parse " + "ignored unknown element (id=%d elen=%d)\n", + id, elen); + break; + } + + left -= elen; + pos += elen; + } + + if (left) + return ParseFailed; + + return unknown ? ParseUnknown : ParseOK; + +} + +static u8 key_char2num(u8 ch); +static u8 key_char2num(u8 ch) +{ + if((ch>='0')&&(ch<='9')) + return ch - '0'; + else if ((ch>='a')&&(ch<='f')) + return ch - 'a' + 10; + else if ((ch>='A')&&(ch<='F')) + return ch - 'A' + 10; + else + return 0xff; +} + +u8 str_2char2num(u8 hch, u8 lch); +u8 str_2char2num(u8 hch, u8 lch) +{ + return ((key_char2num(hch) * 10 ) + key_char2num(lch)); +} + +u8 key_2char2num(u8 hch, u8 lch); +u8 key_2char2num(u8 hch, u8 lch) +{ + return ((key_char2num(hch) << 4) | key_char2num(lch)); +} + +u8 convert_ip_addr(u8 hch, u8 mch, u8 lch) +{ + return ((key_char2num(hch) * 100) + (key_char2num(mch) * 10 ) + key_char2num(lch)); +} + +extern char* rtw_initmac; +void rtw_macaddr_cfg(u8 *mac_addr) +{ + u8 mac[ETH_ALEN]; + if(mac_addr == NULL) return; + + if ( rtw_initmac ) + { // Users specify the mac address + int jj,kk; + + for( jj = 0, kk = 0; jj < ETH_ALEN; jj++, kk += 3 ) + { + mac[jj] = key_2char2num(rtw_initmac[kk], rtw_initmac[kk+ 1]); + } + _rtw_memcpy(mac_addr, mac, ETH_ALEN); + } + else + { // Use the mac address stored in the Efuse + _rtw_memcpy(mac, mac_addr, ETH_ALEN); + } + + if (((mac[0]==0xff) &&(mac[1]==0xff) && (mac[2]==0xff) && + (mac[3]==0xff) && (mac[4]==0xff) &&(mac[5]==0xff)) || + ((mac[0]==0x0) && (mac[1]==0x0) && (mac[2]==0x0) && + (mac[3]==0x0) && (mac[4]==0x0) &&(mac[5]==0x0))) + { + mac[0] = 0x00; + mac[1] = 0xe0; + mac[2] = 0x4c; + mac[3] = 0x87; + mac[4] = 0x00; + mac[5] = 0x00; + // use default mac addresss + _rtw_memcpy(mac_addr, mac, ETH_ALEN); + DBG_871X("MAC Address from efuse error, assign default one !!!\n"); + } + + DBG_871X("rtw_macaddr_cfg MAC Address = "MAC_FMT"\n", MAC_ARG(mac_addr)); +} + +void dump_ies(u8 *buf, u32 buf_len) { + u8* pos = (u8*)buf; + u8 id, len; + + while(pos-buf<=buf_len){ + id = *pos; + len = *(pos+1); + + DBG_871X("%s ID:%u, LEN:%u\n", __FUNCTION__, id, len); + #ifdef CONFIG_P2P + dump_p2p_ie(pos, len); + #endif + dump_wps_ie(pos, len); + + pos+=(2+len); + } +} + +void dump_wps_ie(u8 *ie, u32 ie_len) { + u8* pos = (u8*)ie; + u16 id; + u16 len; + + u8 *wps_ie; + uint wps_ielen; + + wps_ie = rtw_get_wps_ie(ie, ie_len, NULL, &wps_ielen); + if(wps_ie != ie || wps_ielen == 0) + return; + + pos+=6; + while(pos-ie < ie_len){ + id = RTW_GET_BE16(pos); + len = RTW_GET_BE16(pos + 2); + + DBG_871X("%s ID:0x%04x, LEN:%u\n", __FUNCTION__, id, len); + + pos+=(4+len); + } +} + +#ifdef CONFIG_P2P +/** + * rtw_get_p2p_merged_len - Get merged ie length from muitiple p2p ies. + * @in_ie: Pointer of the first p2p ie + * @in_len: Total len of muiltiple p2p ies + * Returns: Length of merged p2p ie length + */ +u32 rtw_get_p2p_merged_ies_len(u8 *in_ie, u32 in_len) +{ + PNDIS_802_11_VARIABLE_IEs pIE; + u8 OUI[4] = { 0x50, 0x6f, 0x9a, 0x09 }; + int i=0; + int j=0, len=0; + + while( i < in_len) + { + pIE = (PNDIS_802_11_VARIABLE_IEs)(in_ie+ i); + + if( pIE->ElementID == _VENDOR_SPECIFIC_IE_ && _rtw_memcmp(pIE->data, OUI, 4) ) + { + len += pIE->Length-4; // 4 is P2P OUI length, don't count it in this loop + } + + i += (pIE->Length + 2); + } + + return len + 4; // Append P2P OUI length at last. +} + +/** + * rtw_p2p_merge_ies - Merge muitiple p2p ies into one + * @in_ie: Pointer of the first p2p ie + * @in_len: Total len of muiltiple p2p ies + * @merge_ie: Pointer of merged ie + * Returns: Length of merged p2p ie + */ +int rtw_p2p_merge_ies(u8 *in_ie, u32 in_len, u8 *merge_ie) +{ + PNDIS_802_11_VARIABLE_IEs pIE; + u8 len = 0; + u8 OUI[4] = { 0x50, 0x6f, 0x9a, 0x09 }; + u8 ELOUI[6] = { 0xDD, 0x00, 0x50, 0x6f, 0x9a, 0x09 }; //EID;Len;OUI, Len would copy at the end of function + int i=0; + + if( merge_ie != NULL) + { + //Set first P2P OUI + _rtw_memcpy(merge_ie, ELOUI, 6); + merge_ie += 6; + + while( i < in_len) + { + pIE = (PNDIS_802_11_VARIABLE_IEs)(in_ie+ i); + + // Take out the rest of P2P OUIs + if( pIE->ElementID == _VENDOR_SPECIFIC_IE_ && _rtw_memcmp(pIE->data, OUI, 4) ) + { + _rtw_memcpy( merge_ie, pIE->data +4, pIE->Length -4); + len += pIE->Length-4; + merge_ie += pIE->Length-4; + } + + i += (pIE->Length + 2); + } + + return len + 4; // 4 is for P2P OUI + + } + + return 0; +} + +void dump_p2p_ie(u8 *ie, u32 ie_len) { + u8* pos = (u8*)ie; + u8 id; + u16 len; + + u8 *p2p_ie; + uint p2p_ielen; + + p2p_ie = rtw_get_p2p_ie(ie, ie_len, NULL, &p2p_ielen); + if(p2p_ie != ie || p2p_ielen == 0) + return; + + pos+=6; + while(pos-ie < ie_len){ + id = *pos; + len = RTW_GET_LE16(pos+1); + + DBG_871X("%s ID:%u, LEN:%u\n", __FUNCTION__, id, len); + + pos+=(3+len); + } +} + +/** + * rtw_get_p2p_ie - Search P2P IE from a series of IEs + * @in_ie: Address of IEs to search + * @in_len: Length limit from in_ie + * @p2p_ie: If not NULL and P2P IE is found, P2P IE will be copied to the buf starting from p2p_ie + * @p2p_ielen: If not NULL and P2P IE is found, will set to the length of the entire P2P IE + * + * Returns: The address of the P2P IE found, or NULL + */ +u8 *rtw_get_p2p_ie(u8 *in_ie, int in_len, u8 *p2p_ie, uint *p2p_ielen) +{ + uint cnt = 0; + u8 *p2p_ie_ptr; + u8 eid, p2p_oui[4]={0x50,0x6F,0x9A,0x09}; + + if ( p2p_ielen != NULL ) + *p2p_ielen = 0; + + while(cnt MAX_IE_SZ)) { +#ifdef PLATFORM_LINUX + dump_stack(); +#endif + return NULL; + } + if( ( eid == _VENDOR_SPECIFIC_IE_ ) && ( _rtw_memcmp( &in_ie[cnt+2], p2p_oui, 4) == _TRUE ) ) + { + p2p_ie_ptr = in_ie + cnt; + + if ( p2p_ie != NULL ) + { + _rtw_memcpy( p2p_ie, &in_ie[ cnt ], in_ie[ cnt + 1 ] + 2 ); + } + + if ( p2p_ielen != NULL ) + { + *p2p_ielen = in_ie[ cnt + 1 ] + 2; + } + + return p2p_ie_ptr; + + break; + } + else + { + cnt += in_ie[ cnt + 1 ] +2; //goto next + } + + } + + return NULL; + +} + +/** + * rtw_get_p2p_attr - Search a specific P2P attribute from a given P2P IE + * @p2p_ie: Address of P2P IE to search + * @p2p_ielen: Length limit from p2p_ie + * @target_attr_id: The attribute ID of P2P attribute to search + * @buf_attr: If not NULL and the P2P attribute is found, P2P attribute will be copied to the buf starting from buf_attr + * @len_attr: If not NULL and the P2P attribute is found, will set to the length of the entire P2P attribute + * + * Returns: the address of the specific WPS attribute found, or NULL + */ +u8 *rtw_get_p2p_attr(u8 *p2p_ie, uint p2p_ielen, u8 target_attr_id ,u8 *buf_attr, u32 *len_attr) +{ + u8 *attr_ptr = NULL; + u8 *target_attr_ptr = NULL; + u8 p2p_oui[4]={0x50,0x6F,0x9A,0x09}; + + if(len_attr) + *len_attr = 0; + + if ( !p2p_ie || ( p2p_ie[0] != _VENDOR_SPECIFIC_IE_ ) || + ( _rtw_memcmp( p2p_ie + 2, p2p_oui , 4 ) != _TRUE ) ) + { + return attr_ptr; + } + + // 6 = 1(Element ID) + 1(Length) + 3 (OUI) + 1(OUI Type) + attr_ptr = p2p_ie + 6; //goto first attr + + while(attr_ptr - p2p_ie < p2p_ielen) + { + // 3 = 1(Attribute ID) + 2(Length) + u8 attr_id = *attr_ptr; + u16 attr_data_len = RTW_GET_LE16(attr_ptr + 1); + u16 attr_len = attr_data_len + 3; + + //DBG_871X("%s attr_ptr:%p, id:%u, length:%u\n", __FUNCTION__, attr_ptr, attr_id, attr_data_len); + if( attr_id == target_attr_id ) + { + target_attr_ptr = attr_ptr; + + if(buf_attr) + _rtw_memcpy(buf_attr, attr_ptr, attr_len); + + if(len_attr) + *len_attr = attr_len; + + break; + } + else + { + attr_ptr += attr_len; //goto next + } + + } + + return target_attr_ptr; +} + +/** + * rtw_get_p2p_attr_content - Search a specific P2P attribute content from a given P2P IE + * @p2p_ie: Address of P2P IE to search + * @p2p_ielen: Length limit from p2p_ie + * @target_attr_id: The attribute ID of P2P attribute to search + * @buf_content: If not NULL and the P2P attribute is found, P2P attribute content will be copied to the buf starting from buf_content + * @len_content: If not NULL and the P2P attribute is found, will set to the length of the P2P attribute content + * + * Returns: the address of the specific P2P attribute content found, or NULL + */ +u8 *rtw_get_p2p_attr_content(u8 *p2p_ie, uint p2p_ielen, u8 target_attr_id ,u8 *buf_content, uint *len_content) +{ + u8 *attr_ptr; + u32 attr_len; + + if(len_content) + *len_content = 0; + + attr_ptr = rtw_get_p2p_attr(p2p_ie, p2p_ielen, target_attr_id, NULL, &attr_len); + + if(attr_ptr && attr_len) + { + if(buf_content) + _rtw_memcpy(buf_content, attr_ptr+3, attr_len-3); + + if(len_content) + *len_content = attr_len-3; + + return attr_ptr+3; + } + + return NULL; +} + +u32 rtw_set_p2p_attr_content(u8 *pbuf, u8 attr_id, u16 attr_len, u8 *pdata_attr) +{ + u32 a_len; + + *pbuf = attr_id; + + //*(u16*)(pbuf + 1) = cpu_to_le16(attr_len); + RTW_PUT_LE16(pbuf + 1, attr_len); + + if(pdata_attr) + _rtw_memcpy(pbuf + 3, pdata_attr, attr_len); + + a_len = attr_len + 3; + + return a_len; +} + +static uint rtw_p2p_attr_remove(u8 *ie, uint ielen_ori, u8 attr_id) +{ + u8 *target_attr; + u32 target_attr_len; + uint ielen = ielen_ori; + int index=0; + + while(1) { + target_attr=rtw_get_p2p_attr(ie, ielen, attr_id, NULL, &target_attr_len); + if(target_attr && target_attr_len) + { + u8 *next_attr = target_attr+target_attr_len; + uint remain_len = ielen-(next_attr-ie); + //dump_ies(ie, ielen); + #if 0 + DBG_871X("[%d] ie:%p, ielen:%u\n" + "target_attr:%p, target_attr_len:%u\n" + "next_attr:%p, remain_len:%u\n" + , index++ + , ie, ielen + , target_attr, target_attr_len + , next_attr, remain_len + ); + #endif + + _rtw_memset(target_attr, 0, target_attr_len); + _rtw_memcpy(target_attr, next_attr, remain_len); + _rtw_memset(target_attr+remain_len, 0, target_attr_len); + *(ie+1) -= target_attr_len; + ielen-=target_attr_len; + } + else + { + //if(index>0) + // dump_ies(ie, ielen); + break; + } + } + + return ielen; +} + +void rtw_WLAN_BSSID_EX_remove_p2p_attr(WLAN_BSSID_EX *bss_ex, u8 attr_id) +{ + u8 *p2p_ie; + uint p2p_ielen, p2p_ielen_ori; + int cnt; + + if( (p2p_ie=rtw_get_p2p_ie(bss_ex->IEs+_FIXED_IE_LENGTH_, bss_ex->IELength-_FIXED_IE_LENGTH_, NULL, &p2p_ielen_ori)) ) + { + #if 0 + if(rtw_get_p2p_attr(p2p_ie, p2p_ielen_ori, attr_id, NULL, NULL)) { + DBG_871X("rtw_get_p2p_attr: GOT P2P_ATTR:%u!!!!!!!!\n", attr_id); + dump_ies(bss_ex->IEs+_FIXED_IE_LENGTH_, bss_ex->IELength-_FIXED_IE_LENGTH_); + } + #endif + + p2p_ielen=rtw_p2p_attr_remove(p2p_ie, p2p_ielen_ori, attr_id); + if(p2p_ielen != p2p_ielen_ori) { + + u8 *next_ie_ori = p2p_ie+p2p_ielen_ori; + u8 *next_ie = p2p_ie+p2p_ielen; + uint remain_len = bss_ex->IELength-(next_ie_ori-bss_ex->IEs); + + _rtw_memcpy(next_ie, next_ie_ori, remain_len); + _rtw_memset(next_ie+remain_len, 0, p2p_ielen_ori-p2p_ielen); + bss_ex->IELength -= p2p_ielen_ori-p2p_ielen; + + #if 0 + DBG_871X("remove P2P_ATTR:%u!\n", attr_id); + dump_ies(bss_ex->IEs+_FIXED_IE_LENGTH_, bss_ex->IELength-_FIXED_IE_LENGTH_); + #endif + } + } +} + +#endif //CONFIG_P2P + +#ifdef CONFIG_WFD +int rtw_get_wfd_ie(u8 *in_ie, int in_len, u8 *wfd_ie, uint *wfd_ielen) +{ + int match; + uint cnt = 0; + u8 eid, wfd_oui[4]={0x50,0x6F,0x9A,0x0A}; + + + match=_FALSE; + + if ( in_len < 0 ) + { + return match; + } + + while(cnt 1 byte for attribute ID field, 2 bytes for length field + if(attr_content) + _rtw_memcpy( attr_content, &wfd_ie[ cnt + 3 ], attrlen ); + + if(attr_contentlen) + *attr_contentlen = attrlen; + + cnt += attrlen + 3; + + match = _TRUE; + break; + } + else + { + cnt += attrlen + 3; //goto next + } + + } + + return match; + +} +#endif // CONFIG_WFD + +//Baron adds to avoid FreeBSD warning +int ieee80211_is_empty_essid(const char *essid, int essid_len) +{ + /* Single white space is for Linksys APs */ + if (essid_len == 1 && essid[0] == ' ') + return 1; + + /* Otherwise, if the entire essid is 0, we assume it is hidden */ + while (essid_len) { + essid_len--; + if (essid[essid_len] != '\0') + return 0; + } + + return 1; +} + +int ieee80211_get_hdrlen(u16 fc) +{ + int hdrlen = 24; + + switch (WLAN_FC_GET_TYPE(fc)) { + case RTW_IEEE80211_FTYPE_DATA: + if (fc & RTW_IEEE80211_STYPE_QOS_DATA) + hdrlen += 2; + if ((fc & RTW_IEEE80211_FCTL_FROMDS) && (fc & RTW_IEEE80211_FCTL_TODS)) + hdrlen += 6; /* Addr4 */ + break; + case RTW_IEEE80211_FTYPE_CTL: + switch (WLAN_FC_GET_STYPE(fc)) { + case RTW_IEEE80211_STYPE_CTS: + case RTW_IEEE80211_STYPE_ACK: + hdrlen = 10; + break; + default: + hdrlen = 16; + break; + } + break; + } + + return hdrlen; +} + +//show MCS rate, unit: 100Kbps +u16 rtw_mcs_rate(u8 rf_type, u8 bw_40MHz, u8 short_GI_20, u8 short_GI_40, unsigned char * MCS_rate) +{ + u16 max_rate = 0; + + if(rf_type == RF_1T1R) + { + if(MCS_rate[0] & BIT(7)) + max_rate = (bw_40MHz) ? ((short_GI_40)?1500:1350):((short_GI_20)?722:650); + else if(MCS_rate[0] & BIT(6)) + max_rate = (bw_40MHz) ? ((short_GI_40)?1350:1215):((short_GI_20)?650:585); + else if(MCS_rate[0] & BIT(5)) + max_rate = (bw_40MHz) ? ((short_GI_40)?1200:1080):((short_GI_20)?578:520); + else if(MCS_rate[0] & BIT(4)) + max_rate = (bw_40MHz) ? ((short_GI_40)?900:810):((short_GI_20)?433:390); + else if(MCS_rate[0] & BIT(3)) + max_rate = (bw_40MHz) ? ((short_GI_40)?600:540):((short_GI_20)?289:260); + else if(MCS_rate[0] & BIT(2)) + max_rate = (bw_40MHz) ? ((short_GI_40)?450:405):((short_GI_20)?217:195); + else if(MCS_rate[0] & BIT(1)) + max_rate = (bw_40MHz) ? ((short_GI_40)?300:270):((short_GI_20)?144:130); + else if(MCS_rate[0] & BIT(0)) + max_rate = (bw_40MHz) ? ((short_GI_40)?150:135):((short_GI_20)?72:65); + } + else + { + if(MCS_rate[1]) + { + if(MCS_rate[1] & BIT(7)) + max_rate = (bw_40MHz) ? ((short_GI_40)?3000:2700):((short_GI_20)?1444:1300); + else if(MCS_rate[1] & BIT(6)) + max_rate = (bw_40MHz) ? ((short_GI_40)?2700:2430):((short_GI_20)?1300:1170); + else if(MCS_rate[1] & BIT(5)) + max_rate = (bw_40MHz) ? ((short_GI_40)?2400:2160):((short_GI_20)?1156:1040); + else if(MCS_rate[1] & BIT(4)) + max_rate = (bw_40MHz) ? ((short_GI_40)?1800:1620):((short_GI_20)?867:780); + else if(MCS_rate[1] & BIT(3)) + max_rate = (bw_40MHz) ? ((short_GI_40)?1200:1080):((short_GI_20)?578:520); + else if(MCS_rate[1] & BIT(2)) + max_rate = (bw_40MHz) ? ((short_GI_40)?900:810):((short_GI_20)?433:390); + else if(MCS_rate[1] & BIT(1)) + max_rate = (bw_40MHz) ? ((short_GI_40)?600:540):((short_GI_20)?289:260); + else if(MCS_rate[1] & BIT(0)) + max_rate = (bw_40MHz) ? ((short_GI_40)?300:270):((short_GI_20)?144:130); + } + else + { + if(MCS_rate[0] & BIT(7)) + max_rate = (bw_40MHz) ? ((short_GI_40)?1500:1350):((short_GI_20)?722:650); + else if(MCS_rate[0] & BIT(6)) + max_rate = (bw_40MHz) ? ((short_GI_40)?1350:1215):((short_GI_20)?650:585); + else if(MCS_rate[0] & BIT(5)) + max_rate = (bw_40MHz) ? ((short_GI_40)?1200:1080):((short_GI_20)?578:520); + else if(MCS_rate[0] & BIT(4)) + max_rate = (bw_40MHz) ? ((short_GI_40)?900:810):((short_GI_20)?433:390); + else if(MCS_rate[0] & BIT(3)) + max_rate = (bw_40MHz) ? ((short_GI_40)?600:540):((short_GI_20)?289:260); + else if(MCS_rate[0] & BIT(2)) + max_rate = (bw_40MHz) ? ((short_GI_40)?450:405):((short_GI_20)?217:195); + else if(MCS_rate[0] & BIT(1)) + max_rate = (bw_40MHz) ? ((short_GI_40)?300:270):((short_GI_20)?144:130); + else if(MCS_rate[0] & BIT(0)) + max_rate = (bw_40MHz) ? ((short_GI_40)?150:135):((short_GI_20)?72:65); + } + } + return max_rate; +} + +int rtw_action_frame_parse(const u8 *frame, u32 frame_len, u8* category, u8 *action) +{ + const u8 *frame_body = frame + sizeof(struct rtw_ieee80211_hdr_3addr); + u16 fc; + u8 c, a; + + fc = le16_to_cpu(((struct rtw_ieee80211_hdr_3addr *)frame)->frame_ctl); + + if ((fc & (RTW_IEEE80211_FCTL_FTYPE|RTW_IEEE80211_FCTL_STYPE)) + != (RTW_IEEE80211_FTYPE_MGMT|RTW_IEEE80211_STYPE_ACTION) + ) + { + return _FALSE; + } + + c = frame_body[0]; + + switch(c) { + case RTW_WLAN_CATEGORY_P2P: /* vendor-specific */ + break; + default: + a = frame_body[1]; + } + + if (category) + *category = c; + if (action) + *action = a; + + return _TRUE; +} + +static const char *_action_public_str[] = { + "ACT_PUB_BSSCOEXIST", + "ACT_PUB_DSE_ENABLE", + "ACT_PUB_DSE_DEENABLE", + "ACT_PUB_DSE_REG_LOCATION", + "ACT_PUB_EXT_CHL_SWITCH", + "ACT_PUB_DSE_MSR_REQ", + "ACT_PUB_DSE_MSR_RPRT", + "ACT_PUB_MP", + "ACT_PUB_DSE_PWR_CONSTRAINT", + "ACT_PUB_VENDOR", + "ACT_PUB_GAS_INITIAL_REQ", + "ACT_PUB_GAS_INITIAL_RSP", + "ACT_PUB_GAS_COMEBACK_REQ", + "ACT_PUB_GAS_COMEBACK_RSP", + "ACT_PUB_TDLS_DISCOVERY_RSP", + "ACT_PUB_LOCATION_TRACK", + "ACT_PUB_RSVD", +}; + +const char *action_public_str(u8 action) +{ + action = (action >= ACT_PUBLIC_MAX) ? ACT_PUBLIC_MAX : action; + return _action_public_str[action]; +} --- linux-raspi2-4.2.0.orig/drivers/net/wireless/rtl8192cu/core/rtw_io.c +++ linux-raspi2-4.2.0/drivers/net/wireless/rtl8192cu/core/rtw_io.c @@ -0,0 +1,462 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved. + * + * 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 + * published by the Free Software Foundation. + * + * 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 Street, Fifth Floor, Boston, MA 02110, USA + * + * + ******************************************************************************/ +/* + +The purpose of rtw_io.c + +a. provides the API + +b. provides the protocol engine + +c. provides the software interface between caller and the hardware interface + + +Compiler Flag Option: + +1. CONFIG_SDIO_HCI: + a. USE_SYNC_IRP: Only sync operations are provided. + b. USE_ASYNC_IRP:Both sync/async operations are provided. + +2. CONFIG_USB_HCI: + a. USE_ASYNC_IRP: Both sync/async operations are provided. + +3. CONFIG_CFIO_HCI: + b. USE_SYNC_IRP: Only sync operations are provided. + + +Only sync read/rtw_write_mem operations are provided. + +jackson@realtek.com.tw + +*/ + +#define _RTW_IO_C_ +#include +#include +#include +#include +#include + +#if defined (PLATFORM_LINUX) && defined (PLATFORM_WINDOWS) +#error "Shall be Linux or Windows, but not both!\n" +#endif + +#ifdef CONFIG_SDIO_HCI +#include +#endif + +#ifdef CONFIG_USB_HCI +#include +#endif + +#ifdef CONFIG_PCI_HCI +#include +#endif + + +u8 _rtw_read8(_adapter *adapter, u32 addr) +{ + u8 r_val; + //struct io_queue *pio_queue = (struct io_queue *)adapter->pio_queue; + struct io_priv *pio_priv = &adapter->iopriv; + struct intf_hdl *pintfhdl = &(pio_priv->intf); + u8 (*_read8)(struct intf_hdl *pintfhdl, u32 addr); + _func_enter_; + _read8 = pintfhdl->io_ops._read8; + + r_val = _read8(pintfhdl, addr); + _func_exit_; + return r_val; +} + +u16 _rtw_read16(_adapter *adapter, u32 addr) +{ + u16 r_val; + //struct io_queue *pio_queue = (struct io_queue *)adapter->pio_queue; + struct io_priv *pio_priv = &adapter->iopriv; + struct intf_hdl *pintfhdl = &(pio_priv->intf); + u16 (*_read16)(struct intf_hdl *pintfhdl, u32 addr); + _func_enter_; + _read16 = pintfhdl->io_ops._read16; + + r_val = _read16(pintfhdl, addr); + _func_exit_; + return r_val; +} + +u32 _rtw_read32(_adapter *adapter, u32 addr) +{ + u32 r_val; + //struct io_queue *pio_queue = (struct io_queue *)adapter->pio_queue; + struct io_priv *pio_priv = &adapter->iopriv; + struct intf_hdl *pintfhdl = &(pio_priv->intf); + u32 (*_read32)(struct intf_hdl *pintfhdl, u32 addr); + _func_enter_; + _read32 = pintfhdl->io_ops._read32; + + r_val = _read32(pintfhdl, addr); + _func_exit_; + return r_val; + +} + +int _rtw_write8(_adapter *adapter, u32 addr, u8 val) +{ + //struct io_queue *pio_queue = (struct io_queue *)adapter->pio_queue; + struct io_priv *pio_priv = &adapter->iopriv; + struct intf_hdl *pintfhdl = &(pio_priv->intf); + int (*_write8)(struct intf_hdl *pintfhdl, u32 addr, u8 val); + int ret; + _func_enter_; + _write8 = pintfhdl->io_ops._write8; + + ret = _write8(pintfhdl, addr, val); + _func_exit_; + + return RTW_STATUS_CODE(ret); +} +int _rtw_write16(_adapter *adapter, u32 addr, u16 val) +{ + //struct io_queue *pio_queue = (struct io_queue *)adapter->pio_queue; + struct io_priv *pio_priv = &adapter->iopriv; + struct intf_hdl *pintfhdl = &(pio_priv->intf); + int (*_write16)(struct intf_hdl *pintfhdl, u32 addr, u16 val); + int ret; + _func_enter_; + _write16 = pintfhdl->io_ops._write16; + + ret = _write16(pintfhdl, addr, val); + _func_exit_; + + return RTW_STATUS_CODE(ret); +} +int _rtw_write32(_adapter *adapter, u32 addr, u32 val) +{ + //struct io_queue *pio_queue = (struct io_queue *)adapter->pio_queue; + struct io_priv *pio_priv = &adapter->iopriv; + struct intf_hdl *pintfhdl = &(pio_priv->intf); + int (*_write32)(struct intf_hdl *pintfhdl, u32 addr, u32 val); + int ret; + _func_enter_; + _write32 = pintfhdl->io_ops._write32; + + ret = _write32(pintfhdl, addr, val); + _func_exit_; + + return RTW_STATUS_CODE(ret); +} + +int _rtw_writeN(_adapter *adapter, u32 addr ,u32 length , u8 *pdata) +{ + //struct io_queue *pio_queue = (struct io_queue *)adapter->pio_queue; + struct io_priv *pio_priv = &adapter->iopriv; + struct intf_hdl *pintfhdl = (struct intf_hdl*)(&(pio_priv->intf)); + int (*_writeN)(struct intf_hdl *pintfhdl, u32 addr,u32 length, u8 *pdata); + int ret; + _func_enter_; + _writeN = pintfhdl->io_ops._writeN; + + ret = _writeN(pintfhdl, addr,length,pdata); + _func_exit_; + + return RTW_STATUS_CODE(ret); +} +int _rtw_write8_async(_adapter *adapter, u32 addr, u8 val) +{ + //struct io_queue *pio_queue = (struct io_queue *)adapter->pio_queue; + struct io_priv *pio_priv = &adapter->iopriv; + struct intf_hdl *pintfhdl = &(pio_priv->intf); + int (*_write8_async)(struct intf_hdl *pintfhdl, u32 addr, u8 val); + int ret; + _func_enter_; + _write8_async = pintfhdl->io_ops._write8_async; + + ret = _write8_async(pintfhdl, addr, val); + _func_exit_; + + return RTW_STATUS_CODE(ret); +} +int _rtw_write16_async(_adapter *adapter, u32 addr, u16 val) +{ + //struct io_queue *pio_queue = (struct io_queue *)adapter->pio_queue; + struct io_priv *pio_priv = &adapter->iopriv; + struct intf_hdl *pintfhdl = &(pio_priv->intf); + int (*_write16_async)(struct intf_hdl *pintfhdl, u32 addr, u16 val); + int ret; + _func_enter_; + _write16_async = pintfhdl->io_ops._write16_async; + + ret = _write16_async(pintfhdl, addr, val); + _func_exit_; + + return RTW_STATUS_CODE(ret); +} +int _rtw_write32_async(_adapter *adapter, u32 addr, u32 val) +{ + //struct io_queue *pio_queue = (struct io_queue *)adapter->pio_queue; + struct io_priv *pio_priv = &adapter->iopriv; + struct intf_hdl *pintfhdl = &(pio_priv->intf); + int (*_write32_async)(struct intf_hdl *pintfhdl, u32 addr, u32 val); + int ret; + _func_enter_; + _write32_async = pintfhdl->io_ops._write32_async; + + ret = _write32_async(pintfhdl, addr, val); + _func_exit_; + + return RTW_STATUS_CODE(ret); +} +void _rtw_read_mem(_adapter *adapter, u32 addr, u32 cnt, u8 *pmem) +{ + void (*_read_mem)(struct intf_hdl *pintfhdl, u32 addr, u32 cnt, u8 *pmem); + //struct io_queue *pio_queue = (struct io_queue *)adapter->pio_queue; + struct io_priv *pio_priv = &adapter->iopriv; + struct intf_hdl *pintfhdl = &(pio_priv->intf); + + _func_enter_; + + if( (adapter->bDriverStopped ==_TRUE) || (adapter->bSurpriseRemoved == _TRUE)) + { + RT_TRACE(_module_rtl871x_io_c_, _drv_info_, ("rtw_read_mem:bDriverStopped(%d) OR bSurpriseRemoved(%d)", adapter->bDriverStopped, adapter->bSurpriseRemoved)); + return; + } + + _read_mem = pintfhdl->io_ops._read_mem; + + _read_mem(pintfhdl, addr, cnt, pmem); + + _func_exit_; + +} + +void _rtw_write_mem(_adapter *adapter, u32 addr, u32 cnt, u8 *pmem) +{ + void (*_write_mem)(struct intf_hdl *pintfhdl, u32 addr, u32 cnt, u8 *pmem); + //struct io_queue *pio_queue = (struct io_queue *)adapter->pio_queue; + struct io_priv *pio_priv = &adapter->iopriv; + struct intf_hdl *pintfhdl = &(pio_priv->intf); + + _func_enter_; + + _write_mem = pintfhdl->io_ops._write_mem; + + _write_mem(pintfhdl, addr, cnt, pmem); + + _func_exit_; + +} + +void _rtw_read_port(_adapter *adapter, u32 addr, u32 cnt, u8 *pmem) +{ + u32 (*_read_port)(struct intf_hdl *pintfhdl, u32 addr, u32 cnt, u8 *pmem); + //struct io_queue *pio_queue = (struct io_queue *)adapter->pio_queue; + struct io_priv *pio_priv = &adapter->iopriv; + struct intf_hdl *pintfhdl = &(pio_priv->intf); + + _func_enter_; + + if( (adapter->bDriverStopped ==_TRUE) || (adapter->bSurpriseRemoved == _TRUE)) + { + RT_TRACE(_module_rtl871x_io_c_, _drv_info_, ("rtw_read_port:bDriverStopped(%d) OR bSurpriseRemoved(%d)", adapter->bDriverStopped, adapter->bSurpriseRemoved)); + return; + } + + _read_port = pintfhdl->io_ops._read_port; + + _read_port(pintfhdl, addr, cnt, pmem); + + _func_exit_; + +} + +void _rtw_read_port_cancel(_adapter *adapter) +{ + void (*_read_port_cancel)(struct intf_hdl *pintfhdl); + struct io_priv *pio_priv = &adapter->iopriv; + struct intf_hdl *pintfhdl = &(pio_priv->intf); + + _read_port_cancel = pintfhdl->io_ops._read_port_cancel; + + if(_read_port_cancel) + _read_port_cancel(pintfhdl); + +} + +u32 _rtw_write_port(_adapter *adapter, u32 addr, u32 cnt, u8 *pmem) +{ + u32 (*_write_port)(struct intf_hdl *pintfhdl, u32 addr, u32 cnt, u8 *pmem); + //struct io_queue *pio_queue = (struct io_queue *)adapter->pio_queue; + struct io_priv *pio_priv = &adapter->iopriv; + struct intf_hdl *pintfhdl = &(pio_priv->intf); + u32 ret = _SUCCESS; + + _func_enter_; + + _write_port = pintfhdl->io_ops._write_port; + + ret = _write_port(pintfhdl, addr, cnt, pmem); + + _func_exit_; + + return ret; +} + +u32 _rtw_write_port_and_wait(_adapter *adapter, u32 addr, u32 cnt, u8 *pmem, int timeout_ms) +{ + int ret = _SUCCESS; + struct xmit_buf *pxmitbuf = (struct xmit_buf *)pmem; + struct submit_ctx sctx; + + rtw_sctx_init(&sctx, timeout_ms); + pxmitbuf->sctx = &sctx; + + ret = _rtw_write_port(adapter, addr, cnt, pmem); + + if (ret == _SUCCESS) + ret = rtw_sctx_wait(&sctx); + + return ret; +} + +void _rtw_write_port_cancel(_adapter *adapter) +{ + void (*_write_port_cancel)(struct intf_hdl *pintfhdl); + struct io_priv *pio_priv = &adapter->iopriv; + struct intf_hdl *pintfhdl = &(pio_priv->intf); + + _write_port_cancel = pintfhdl->io_ops._write_port_cancel; + + if(_write_port_cancel) + _write_port_cancel(pintfhdl); + +} + +int rtw_init_io_priv(_adapter *padapter, void (*set_intf_ops)(struct _io_ops *pops)) +{ + struct io_priv *piopriv = &padapter->iopriv; + struct intf_hdl *pintf = &piopriv->intf; + + if (set_intf_ops == NULL) + return _FAIL; + + piopriv->padapter = padapter; + pintf->padapter = padapter; + pintf->pintf_dev = adapter_to_dvobj(padapter); + + set_intf_ops(&pintf->io_ops); + + return _SUCCESS; +} + +#ifdef DBG_IO + +u16 read_sniff_ranges[][2] = { + //{0x550, 0x551}, +}; + +u16 write_sniff_ranges[][2] = { + //{0x550, 0x551}, + //{0x4c, 0x4c}, +}; + +int read_sniff_num = sizeof(read_sniff_ranges)/sizeof(u16)/2; +int write_sniff_num = sizeof(write_sniff_ranges)/sizeof(u16)/2; + +bool match_read_sniff_ranges(u16 addr, u16 len) +{ + int i; + for (i = 0; i read_sniff_ranges[i][0] && addr <= read_sniff_ranges[i][1]) + return _TRUE; + } + + return _FALSE; +} + +bool match_write_sniff_ranges(u16 addr, u16 len) +{ + int i; + for (i = 0; i write_sniff_ranges[i][0] && addr <= write_sniff_ranges[i][1]) + return _TRUE; + } + + return _FALSE; +} + +u8 dbg_rtw_read8(_adapter *adapter, u32 addr, const char *caller, const int line) +{ + u8 val = _rtw_read8(adapter, addr); + + if (match_read_sniff_ranges(addr, 1)) + DBG_871X("DBG_IO %s:%d rtw_read8(0x%04x) return 0x%02x\n", caller, line, addr, val); + + return val; +} + +u16 dbg_rtw_read16(_adapter *adapter, u32 addr, const char *caller, const int line) +{ + u16 val = _rtw_read16(adapter, addr); + + if (match_read_sniff_ranges(addr, 2)) + DBG_871X("DBG_IO %s:%d rtw_read16(0x%04x) return 0x%04x\n", caller, line, addr, val); + + return val; +} + +u32 dbg_rtw_read32(_adapter *adapter, u32 addr, const char *caller, const int line) +{ + u32 val = _rtw_read32(adapter, addr); + + if (match_read_sniff_ranges(addr, 4)) + DBG_871X("DBG_IO %s:%d rtw_read32(0x%04x) return 0x%08x\n", caller, line, addr, val); + + return val; +} + +int dbg_rtw_write8(_adapter *adapter, u32 addr, u8 val, const char *caller, const int line) +{ + if (match_write_sniff_ranges(addr, 1)) + DBG_871X("DBG_IO %s:%d rtw_write8(0x%04x, 0x%02x)\n", caller, line, addr, val); + + return _rtw_write8(adapter, addr, val); +} +int dbg_rtw_write16(_adapter *adapter, u32 addr, u16 val, const char *caller, const int line) +{ + if (match_write_sniff_ranges(addr, 2)) + DBG_871X("DBG_IO %s:%d rtw_write16(0x%04x, 0x%04x)\n", caller, line, addr, val); + + return _rtw_write16(adapter, addr, val); +} +int dbg_rtw_write32(_adapter *adapter, u32 addr, u32 val, const char *caller, const int line) +{ + if (match_write_sniff_ranges(addr, 4)) + DBG_871X("DBG_IO %s:%d rtw_write32(0x%04x, 0x%08x)\n", caller, line, addr, val); + + return _rtw_write32(adapter, addr, val); +} +int dbg_rtw_writeN(_adapter *adapter, u32 addr ,u32 length , u8 *data, const char *caller, const int line) +{ + if (match_write_sniff_ranges(addr, length)) + DBG_871X("DBG_IO %s:%d rtw_writeN(0x%04x, %u)\n", caller, line, addr, length); + + return _rtw_writeN(adapter, addr, length, data); +} +#endif --- linux-raspi2-4.2.0.orig/drivers/net/wireless/rtl8192cu/core/rtw_ioctl_query.c +++ linux-raspi2-4.2.0/drivers/net/wireless/rtl8192cu/core/rtw_ioctl_query.c @@ -0,0 +1,195 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved. + * + * 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 + * published by the Free Software Foundation. + * + * 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 Street, Fifth Floor, Boston, MA 02110, USA + * + * + ******************************************************************************/ +#define _RTW_IOCTL_QUERY_C_ + +#include +#include +#include +#include +#include + + +#ifdef PLATFORM_WINDOWS +// +// Added for WPA2-PSK, by Annie, 2005-09-20. +// +u8 +query_802_11_capability( + _adapter* Adapter, + u8* pucBuf, + u32 * pulOutLen +) +{ + static NDIS_802_11_AUTHENTICATION_ENCRYPTION szAuthEnc[] = + { + {Ndis802_11AuthModeOpen, Ndis802_11EncryptionDisabled}, + {Ndis802_11AuthModeOpen, Ndis802_11Encryption1Enabled}, + {Ndis802_11AuthModeShared, Ndis802_11EncryptionDisabled}, + {Ndis802_11AuthModeShared, Ndis802_11Encryption1Enabled}, + {Ndis802_11AuthModeWPA, Ndis802_11Encryption2Enabled}, + {Ndis802_11AuthModeWPA, Ndis802_11Encryption3Enabled}, + {Ndis802_11AuthModeWPAPSK, Ndis802_11Encryption2Enabled}, + {Ndis802_11AuthModeWPAPSK, Ndis802_11Encryption3Enabled}, + {Ndis802_11AuthModeWPANone, Ndis802_11Encryption2Enabled}, + {Ndis802_11AuthModeWPANone, Ndis802_11Encryption3Enabled}, + {Ndis802_11AuthModeWPA2, Ndis802_11Encryption2Enabled}, + {Ndis802_11AuthModeWPA2, Ndis802_11Encryption3Enabled}, + {Ndis802_11AuthModeWPA2PSK, Ndis802_11Encryption2Enabled}, + {Ndis802_11AuthModeWPA2PSK, Ndis802_11Encryption3Enabled} + }; + static ULONG ulNumOfPairSupported = sizeof(szAuthEnc)/sizeof(NDIS_802_11_AUTHENTICATION_ENCRYPTION); + NDIS_802_11_CAPABILITY * pCap = (NDIS_802_11_CAPABILITY *)pucBuf; + u8* pucAuthEncryptionSupported = (u8*) pCap->AuthenticationEncryptionSupported; + + + pCap->Length = sizeof(NDIS_802_11_CAPABILITY); + if(ulNumOfPairSupported > 1 ) + pCap->Length += (ulNumOfPairSupported-1) * sizeof(NDIS_802_11_AUTHENTICATION_ENCRYPTION); + + pCap->Version = 2; + pCap->NoOfPMKIDs = NUM_PMKID_CACHE; + pCap->NoOfAuthEncryptPairsSupported = ulNumOfPairSupported; + + if( sizeof (szAuthEnc) <= 240 ) // 240 = 256 - 4*4 // SecurityInfo.szCapability: only 256 bytes in size. + { + _rtw_memcpy( pucAuthEncryptionSupported, (u8*)szAuthEnc, sizeof (szAuthEnc) ); + *pulOutLen = pCap->Length; + return _TRUE; + } + else + { + *pulOutLen = 0; + RT_TRACE(_module_rtl871x_ioctl_query_c_,_drv_info_,("_query_802_11_capability(): szAuthEnc size is too large.\n")); + return _FALSE; + } +} + +u8 query_802_11_association_information( _adapter *padapter,PNDIS_802_11_ASSOCIATION_INFORMATION pAssocInfo) +{ + struct wlan_network *tgt_network; + struct mlme_priv *pmlmepriv = &(padapter->mlmepriv); + struct security_priv *psecuritypriv=&(padapter->securitypriv); + WLAN_BSSID_EX *psecnetwork=(WLAN_BSSID_EX*)&(psecuritypriv->sec_bss); + u8 * pDest = (u8 *)pAssocInfo + sizeof(NDIS_802_11_ASSOCIATION_INFORMATION); + unsigned char i,*auth_ie,*supp_ie; + + //NdisZeroMemory(pAssocInfo, sizeof(NDIS_802_11_ASSOCIATION_INFORMATION)); + _rtw_memset(pAssocInfo, 0, sizeof(NDIS_802_11_ASSOCIATION_INFORMATION)); + //pAssocInfo->Length = sizeof(NDIS_802_11_ASSOCIATION_INFORMATION); + + //------------------------------------------------------ + // Association Request related information + //------------------------------------------------------ + // Req_1. AvailableRequestFixedIEs + if(psecnetwork!=NULL){ + + pAssocInfo->AvailableRequestFixedIEs |= NDIS_802_11_AI_REQFI_CAPABILITIES|NDIS_802_11_AI_REQFI_CURRENTAPADDRESS; + pAssocInfo->RequestFixedIEs.Capabilities = (unsigned short)* & psecnetwork->IEs[10]; + _rtw_memcpy(pAssocInfo->RequestFixedIEs.CurrentAPAddress, + & psecnetwork->MacAddress, 6); + + pAssocInfo->OffsetRequestIEs = sizeof(NDIS_802_11_ASSOCIATION_INFORMATION); + + if(check_fwstate( pmlmepriv, _FW_UNDER_LINKING|_FW_LINKED)==_TRUE) + { + + if(psecuritypriv->ndisauthtype>=Ndis802_11AuthModeWPA2) + pDest[0] =48; //RSN Information Element + else + pDest[0] =221; //WPA(SSN) Information Element + + RT_TRACE(_module_rtl871x_ioctl_query_c_,_drv_info_,("\n Adapter->ndisauthtype==Ndis802_11AuthModeWPA)?0xdd:0x30 [%d]",pDest[0])); + supp_ie=&psecuritypriv->supplicant_ie[0]; + for(i=0;inetwork.IELength=%d\n\n", i,(int)psecnetwork->IELength)); + while((iRequestIELength += (2 + supp_ie[1+i]);// (2 + psecnetwork->IEs[1+i]+4); + + } + + + RT_TRACE(_module_rtl871x_ioctl_query_c_,_drv_info_,("\n psecnetwork != NULL,fwstate==_FW_UNDER_LINKING \n")); + + } + + + //------------------------------------------------------ + // Association Response related information + //------------------------------------------------------ + + if(check_fwstate( pmlmepriv, _FW_LINKED)==_TRUE) + { + tgt_network =&(pmlmepriv->cur_network); + if(tgt_network!=NULL){ + pAssocInfo->AvailableResponseFixedIEs = + NDIS_802_11_AI_RESFI_CAPABILITIES + |NDIS_802_11_AI_RESFI_ASSOCIATIONID + ; + + pAssocInfo->ResponseFixedIEs.Capabilities =(unsigned short)* & tgt_network->network.IEs[10]; + pAssocInfo->ResponseFixedIEs.StatusCode = 0; + pAssocInfo->ResponseFixedIEs.AssociationId =(unsigned short) tgt_network->aid; + + pDest = (u8 *)pAssocInfo + sizeof(NDIS_802_11_ASSOCIATION_INFORMATION)+pAssocInfo->RequestIELength; + auth_ie=&psecuritypriv->authenticator_ie[0]; + + for(i=0;i0){ + _rtw_memcpy((u8 *)&pDest[0],&auth_ie[1],i); + pAssocInfo->ResponseIELength =i; + } + + + pAssocInfo->OffsetResponseIEs = sizeof(NDIS_802_11_ASSOCIATION_INFORMATION) + pAssocInfo->RequestIELength; + + + RT_TRACE(_module_rtl871x_ioctl_query_c_,_drv_info_,("\n tgt_network != NULL,fwstate==_FW_LINKED \n")); + } + } + RT_TRACE(_module_rtl871x_ioctl_query_c_,_drv_info_,("\n exit query_802_11_association_information \n")); +_func_exit_; + + return _TRUE; +} +#endif --- linux-raspi2-4.2.0.orig/drivers/net/wireless/rtl8192cu/core/rtw_ioctl_rtl.c +++ linux-raspi2-4.2.0/drivers/net/wireless/rtl8192cu/core/rtw_ioctl_rtl.c @@ -0,0 +1,1031 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved. + * + * 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 + * published by the Free Software Foundation. + * + * 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 Street, Fifth Floor, Boston, MA 02110, USA + * + * + ******************************************************************************/ +#define _RTW_IOCTL_RTL_C_ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#ifdef CONFIG_MP_INCLUDED +#include +#include +#endif + +struct oid_obj_priv oid_rtl_seg_01_01[] = +{ + {1, &oid_null_function}, //0x80 + {1, &oid_null_function}, //0x81 + {1, &oid_null_function}, //0x82 + {1, &oid_null_function}, //0x83//OID_RT_SET_SNIFFER_MODE + {1, &oid_rt_get_signal_quality_hdl}, //0x84 + {1, &oid_rt_get_small_packet_crc_hdl}, //0x85 + {1, &oid_rt_get_middle_packet_crc_hdl}, //0x86 + {1, &oid_rt_get_large_packet_crc_hdl}, //0x87 + {1, &oid_rt_get_tx_retry_hdl}, //0x88 + {1, &oid_rt_get_rx_retry_hdl}, //0x89 + {1, &oid_rt_pro_set_fw_dig_state_hdl}, //0x8A + {1, &oid_rt_pro_set_fw_ra_state_hdl} , //0x8B + {1, &oid_null_function}, //0x8C + {1, &oid_null_function}, //0x8D + {1, &oid_null_function}, //0x8E + {1, &oid_null_function}, //0x8F + {1, &oid_rt_get_rx_total_packet_hdl}, //0x90 + {1, &oid_rt_get_tx_beacon_ok_hdl}, //0x91 + {1, &oid_rt_get_tx_beacon_err_hdl}, //0x92 + {1, &oid_rt_get_rx_icv_err_hdl}, //0x93 + {1, &oid_rt_set_encryption_algorithm_hdl}, //0x94 + {1, &oid_null_function}, //0x95 + {1, &oid_rt_get_preamble_mode_hdl}, //0x96 + {1, &oid_null_function}, //0x97 + {1, &oid_rt_get_ap_ip_hdl}, //0x98 + {1, &oid_rt_get_channelplan_hdl}, //0x99 + {1, &oid_rt_set_preamble_mode_hdl}, //0x9A + {1, &oid_rt_set_bcn_intvl_hdl}, //0x9B + {1, &oid_null_function}, //0x9C + {1, &oid_rt_dedicate_probe_hdl}, //0x9D + {1, &oid_null_function}, //0x9E + {1, &oid_null_function}, //0x9F + {1, &oid_null_function}, //0xA0 + {1, &oid_null_function}, //0xA1 + {1, &oid_null_function}, //0xA2 + {1, &oid_null_function}, //0xA3 + {1, &oid_null_function}, //0xA4 + {1, &oid_null_function}, //0xA5 + {1, &oid_null_function}, //0xA6 + {1, &oid_rt_get_total_tx_bytes_hdl}, //0xA7 + {1, &oid_rt_get_total_rx_bytes_hdl}, //0xA8 + {1, &oid_rt_current_tx_power_level_hdl}, //0xA9 + {1, &oid_rt_get_enc_key_mismatch_count_hdl}, //0xAA + {1, &oid_rt_get_enc_key_match_count_hdl}, //0xAB + {1, &oid_rt_get_channel_hdl}, //0xAC + {1, &oid_rt_set_channelplan_hdl}, //0xAD + {1, &oid_rt_get_hardware_radio_off_hdl}, //0xAE + {1, &oid_null_function}, //0xAF + {1, &oid_null_function}, //0xB0 + {1, &oid_null_function}, //0xB1 + {1, &oid_null_function}, //0xB2 + {1, &oid_null_function}, //0xB3 + {1, &oid_rt_get_key_mismatch_hdl}, //0xB4 + {1, &oid_null_function}, //0xB5 + {1, &oid_null_function}, //0xB6 + {1, &oid_null_function}, //0xB7 + {1, &oid_null_function}, //0xB8 + {1, &oid_null_function}, //0xB9 + {1, &oid_null_function}, //0xBA + {1, &oid_rt_supported_wireless_mode_hdl}, //0xBB + {1, &oid_rt_get_channel_list_hdl}, //0xBC + {1, &oid_rt_get_scan_in_progress_hdl}, //0xBD + {1, &oid_null_function}, //0xBE + {1, &oid_null_function}, //0xBF + {1, &oid_null_function}, //0xC0 + {1, &oid_rt_forced_data_rate_hdl}, //0xC1 + {1, &oid_rt_wireless_mode_for_scan_list_hdl}, //0xC2 + {1, &oid_rt_get_bss_wireless_mode_hdl}, //0xC3 + {1, &oid_rt_scan_with_magic_packet_hdl}, //0xC4 + {1, &oid_null_function}, //0xC5 + {1, &oid_null_function}, //0xC6 + {1, &oid_null_function}, //0xC7 + {1, &oid_null_function}, //0xC8 + {1, &oid_null_function}, //0xC9 + {1, &oid_null_function}, //0xCA + {1, &oid_null_function}, //0xCB + {1, &oid_null_function}, //0xCC + {1, &oid_null_function}, //0xCD + {1, &oid_null_function}, //0xCE + {1, &oid_null_function}, //0xCF + +}; + +struct oid_obj_priv oid_rtl_seg_01_03[] = +{ + {1, &oid_rt_ap_get_associated_station_list_hdl}, //0x00 + {1, &oid_null_function}, //0x01 + {1, &oid_rt_ap_switch_into_ap_mode_hdl}, //0x02 + {1, &oid_null_function}, //0x03 + {1, &oid_rt_ap_supported_hdl}, //0x04 + {1, &oid_rt_ap_set_passphrase_hdl}, //0x05 + +}; + +struct oid_obj_priv oid_rtl_seg_01_11[] = +{ + {1, &oid_null_function}, //0xC0 OID_RT_PRO_RX_FILTER + {1, &oid_null_function}, //0xC1 OID_CE_USB_WRITE_REGISTRY + {1, &oid_null_function}, //0xC2 OID_CE_USB_READ_REGISTRY + {1, &oid_null_function}, //0xC3 OID_RT_PRO_SET_INITIAL_GAIN + {1, &oid_null_function}, //0xC4 OID_RT_PRO_SET_BB_RF_STANDBY_MODE + {1, &oid_null_function}, //0xC5 OID_RT_PRO_SET_BB_RF_SHUTDOWN_MODE + {1, &oid_null_function}, //0xC6 OID_RT_PRO_SET_TX_CHARGE_PUMP + {1, &oid_null_function}, //0xC7 OID_RT_PRO_SET_RX_CHARGE_PUMP + {1, &oid_rt_pro_rf_write_registry_hdl}, //0xC8 + {1, &oid_rt_pro_rf_read_registry_hdl}, //0xC9 + {1, &oid_null_function} //0xCA OID_RT_PRO_QUERY_RF_TYPE + +}; + +struct oid_obj_priv oid_rtl_seg_03_00[] = +{ + {1, &oid_null_function}, //0x00 + {1, &oid_rt_get_connect_state_hdl}, //0x01 + {1, &oid_null_function}, //0x02 + {1, &oid_null_function}, //0x03 + {1, &oid_rt_set_default_key_id_hdl}, //0x04 + + +}; + + +//************** oid_rtl_seg_01_01 section start ************** + +NDIS_STATUS oid_rt_pro_set_fw_dig_state_hdl(struct oid_par_priv* poid_par_priv) +{ + NDIS_STATUS status = NDIS_STATUS_SUCCESS; +#if 0 + PADAPTER Adapter = (PADAPTER)(poid_par_priv->adapter_context); + _irqL oldirql; + + _func_enter_; + + if(poid_par_priv->type_of_oid != SET_OID) + { + status = NDIS_STATUS_NOT_ACCEPTED; + return status; + } + + _irqlevel_changed_(&oldirql,LOWER); + if(poid_par_priv->information_buf_len >= sizeof(struct setdig_parm)) + { + //DEBUG_ERR(("===> oid_rt_pro_set_fw_dig_state_hdl. type:0x%02x.\n",*((unsigned char*)poid_par_priv->information_buf ))); + if(!rtw_setfwdig_cmd(Adapter,*((unsigned char*)poid_par_priv->information_buf ))) + { + status = NDIS_STATUS_NOT_ACCEPTED; + } + + } + else{ + status = NDIS_STATUS_NOT_ACCEPTED; + } + _irqlevel_changed_(&oldirql,RAISE); + _func_exit_; +#endif + return status; +} +//----------------------------------------------------------------------------- +NDIS_STATUS oid_rt_pro_set_fw_ra_state_hdl(struct oid_par_priv* poid_par_priv) +{ + + NDIS_STATUS status = NDIS_STATUS_SUCCESS; +#if 0 + PADAPTER Adapter = (PADAPTER)(poid_par_priv->adapter_context); + _irqL oldirql; + + _func_enter_; + if(poid_par_priv->type_of_oid != SET_OID) + { + status = NDIS_STATUS_NOT_ACCEPTED; + return status; + } + + + _irqlevel_changed_(&oldirql,LOWER); + + if(poid_par_priv->information_buf_len >= sizeof(struct setra_parm)) + { + //DEBUG_ERR(("===> oid_rt_pro_set_fw_ra_state_hdl. type:0x%02x.\n",*((unsigned char*)poid_par_priv->information_buf ))); + if(!rtw_setfwra_cmd(Adapter,*((unsigned char*)poid_par_priv->information_buf ))) + { + status = NDIS_STATUS_NOT_ACCEPTED; + } + + } + else{ + status = NDIS_STATUS_NOT_ACCEPTED; + } + _irqlevel_changed_(&oldirql,RAISE); + _func_exit_; +#endif + return status; +} +//----------------------------------------------------------------------------- +NDIS_STATUS oid_rt_get_signal_quality_hdl(struct oid_par_priv* poid_par_priv) +{ + NDIS_STATUS status = NDIS_STATUS_SUCCESS; + PADAPTER padapter = (PADAPTER)(poid_par_priv->adapter_context); + + //DEBUG_ERR(("<**********************oid_rt_get_signal_quality_hdl \n")); + if(poid_par_priv->type_of_oid != QUERY_OID) + { + status = NDIS_STATUS_NOT_ACCEPTED; + return status; + } + +#if 0 + if(pMgntInfo->mAssoc || pMgntInfo->mIbss) + { + ulInfo = pAdapter->RxStats.SignalQuality; + *poid_par_priv->bytes_rw = poid_par_priv->information_buf_len; + } + else + { + ulInfo = 0xffffffff; // It stands for -1 in 4-byte integer. + } + break; +#endif + + return status; +} + +//------------------------------------------------------------------------------ + +NDIS_STATUS oid_rt_get_small_packet_crc_hdl(struct oid_par_priv* poid_par_priv) +{ + NDIS_STATUS status = NDIS_STATUS_SUCCESS; + PADAPTER padapter = (PADAPTER)(poid_par_priv->adapter_context); + + if(poid_par_priv->type_of_oid != QUERY_OID) + { + status = NDIS_STATUS_NOT_ACCEPTED; + return status; + } + + if(poid_par_priv->information_buf_len >= sizeof(ULONG) ) + { + *(ULONG *)poid_par_priv->information_buf = padapter->recvpriv.rx_smallpacket_crcerr; + *poid_par_priv->bytes_rw = poid_par_priv->information_buf_len; + } + else + { + status = NDIS_STATUS_INVALID_LENGTH; + } + + return status; +} +//------------------------------------------------------------------------------ +NDIS_STATUS oid_rt_get_middle_packet_crc_hdl(struct oid_par_priv* poid_par_priv) +{ + NDIS_STATUS status = NDIS_STATUS_SUCCESS; + PADAPTER padapter = (PADAPTER)(poid_par_priv->adapter_context); + + if(poid_par_priv->type_of_oid != QUERY_OID) + { + status = NDIS_STATUS_NOT_ACCEPTED; + return status; + } + + if(poid_par_priv->information_buf_len >= sizeof(ULONG) ) + { + *(ULONG *)poid_par_priv->information_buf = padapter->recvpriv.rx_middlepacket_crcerr; + *poid_par_priv->bytes_rw = poid_par_priv->information_buf_len; + } + else + { + status = NDIS_STATUS_INVALID_LENGTH; + } + + + return status; +} +//------------------------------------------------------------------------------ +NDIS_STATUS oid_rt_get_large_packet_crc_hdl(struct oid_par_priv* poid_par_priv) +{ + NDIS_STATUS status = NDIS_STATUS_SUCCESS; + PADAPTER padapter = (PADAPTER)(poid_par_priv->adapter_context); + + if(poid_par_priv->type_of_oid != QUERY_OID) + { + status = NDIS_STATUS_NOT_ACCEPTED; + return status; + } + + if(poid_par_priv->information_buf_len >= sizeof(ULONG) ) + { + *(ULONG *)poid_par_priv->information_buf = padapter->recvpriv.rx_largepacket_crcerr; + *poid_par_priv->bytes_rw = poid_par_priv->information_buf_len; + } + else + { + status = NDIS_STATUS_INVALID_LENGTH; + } + + + return status; +} + +//------------------------------------------------------------------------------ +NDIS_STATUS oid_rt_get_tx_retry_hdl(struct oid_par_priv* poid_par_priv) +{ + NDIS_STATUS status = NDIS_STATUS_SUCCESS; + PADAPTER padapter = (PADAPTER)(poid_par_priv->adapter_context); + + if(poid_par_priv->type_of_oid != QUERY_OID) + { + status = NDIS_STATUS_NOT_ACCEPTED; + return status; + } + + return status; +} +NDIS_STATUS oid_rt_get_rx_retry_hdl(struct oid_par_priv* poid_par_priv) +{ + NDIS_STATUS status = NDIS_STATUS_SUCCESS; + PADAPTER padapter = (PADAPTER)(poid_par_priv->adapter_context); + + if(poid_par_priv->type_of_oid != QUERY_OID) + { + status = NDIS_STATUS_NOT_ACCEPTED; + return status; + } + *poid_par_priv->bytes_rw = poid_par_priv->information_buf_len; + return status; +} +//------------------------------------------------------------------------------ +NDIS_STATUS oid_rt_get_rx_total_packet_hdl(struct oid_par_priv* poid_par_priv) +{ + NDIS_STATUS status = NDIS_STATUS_SUCCESS; + PADAPTER padapter = (PADAPTER)(poid_par_priv->adapter_context); + + if(poid_par_priv->type_of_oid != QUERY_OID) + { + status = NDIS_STATUS_NOT_ACCEPTED; + return status; + } + if(poid_par_priv->information_buf_len >= sizeof(ULONG) ) + { + *(u64 *)poid_par_priv->information_buf = padapter->recvpriv.rx_pkts + padapter->recvpriv.rx_drop; + *poid_par_priv->bytes_rw = poid_par_priv->information_buf_len; + } + else + { + status = NDIS_STATUS_INVALID_LENGTH; + } + + + return status; +} +//------------------------------------------------------------------------------ +NDIS_STATUS oid_rt_get_tx_beacon_ok_hdl(struct oid_par_priv* poid_par_priv) +{ + NDIS_STATUS status = NDIS_STATUS_SUCCESS; + PADAPTER padapter = (PADAPTER)(poid_par_priv->adapter_context); + + if(poid_par_priv->type_of_oid != QUERY_OID) + { + status = NDIS_STATUS_NOT_ACCEPTED; + return status; + } + + return status; +} +NDIS_STATUS oid_rt_get_tx_beacon_err_hdl(struct oid_par_priv* poid_par_priv) +{ + NDIS_STATUS status = NDIS_STATUS_SUCCESS; + PADAPTER padapter = (PADAPTER)(poid_par_priv->adapter_context); + + if(poid_par_priv->type_of_oid != QUERY_OID) + { + status = NDIS_STATUS_NOT_ACCEPTED; + return status; + } + + return status; +} +//------------------------------------------------------------------------------ +NDIS_STATUS oid_rt_get_rx_icv_err_hdl(struct oid_par_priv* poid_par_priv) +{ + NDIS_STATUS status = NDIS_STATUS_SUCCESS; + PADAPTER padapter = (PADAPTER)(poid_par_priv->adapter_context); + + if(poid_par_priv->type_of_oid != QUERY_OID) + { + status = NDIS_STATUS_NOT_ACCEPTED; + return status; + } + if(poid_par_priv->information_buf_len>= sizeof(u32)) + { + //_rtw_memcpy(*(uint *)poid_par_priv->information_buf,padapter->recvpriv.rx_icv_err,sizeof(u32)); + *(uint *)poid_par_priv->information_buf = padapter->recvpriv.rx_icv_err; + *poid_par_priv->bytes_rw = poid_par_priv->information_buf_len; + } + else + { + status = NDIS_STATUS_INVALID_LENGTH ; + } + + + return status; +} +//------------------------------------------------------------------------------ +NDIS_STATUS oid_rt_set_encryption_algorithm_hdl(struct oid_par_priv* poid_par_priv) +{ + NDIS_STATUS status = NDIS_STATUS_SUCCESS; + PADAPTER padapter = (PADAPTER)(poid_par_priv->adapter_context); + + if(poid_par_priv->type_of_oid != SET_OID) + { + status = NDIS_STATUS_NOT_ACCEPTED; + return status; + } + + return status; +} +//------------------------------------------------------------------------------ +NDIS_STATUS oid_rt_get_preamble_mode_hdl(struct oid_par_priv* poid_par_priv) +{ + NDIS_STATUS status = NDIS_STATUS_SUCCESS; + PADAPTER padapter = (PADAPTER)(poid_par_priv->adapter_context); + ULONG preamblemode = 0 ; + + if(poid_par_priv->type_of_oid != QUERY_OID) + { + status = NDIS_STATUS_NOT_ACCEPTED; + return status; + } + if(poid_par_priv->information_buf_len>= sizeof(ULONG)) + { + if(padapter->registrypriv.preamble == PREAMBLE_LONG) + preamblemode = 0; + else if (padapter->registrypriv.preamble == PREAMBLE_AUTO) + preamblemode = 1; + else if (padapter->registrypriv.preamble == PREAMBLE_SHORT) + preamblemode = 2; + + + *(ULONG *)poid_par_priv->information_buf = preamblemode ; + *poid_par_priv->bytes_rw = poid_par_priv->information_buf_len; + } + else + { + status = NDIS_STATUS_INVALID_LENGTH ; + } + return status; +} +//------------------------------------------------------------------------------ +NDIS_STATUS oid_rt_get_ap_ip_hdl(struct oid_par_priv* poid_par_priv) +{ + NDIS_STATUS status = NDIS_STATUS_SUCCESS; + PADAPTER padapter = (PADAPTER)(poid_par_priv->adapter_context); + + if(poid_par_priv->type_of_oid != QUERY_OID) + { + status = NDIS_STATUS_NOT_ACCEPTED; + return status; + } + + return status; +} + +NDIS_STATUS oid_rt_get_channelplan_hdl(struct oid_par_priv* poid_par_priv) +{ + NDIS_STATUS status = NDIS_STATUS_SUCCESS; + PADAPTER padapter = (PADAPTER)(poid_par_priv->adapter_context); + struct eeprom_priv* peeprompriv = &padapter->eeprompriv; + + if(poid_par_priv->type_of_oid != QUERY_OID) + { + status = NDIS_STATUS_NOT_ACCEPTED; + return status; + } + *poid_par_priv->bytes_rw = poid_par_priv->information_buf_len; + *(u16 *)poid_par_priv->information_buf = peeprompriv->channel_plan ; + + return status; +} +NDIS_STATUS oid_rt_set_channelplan_hdl(struct oid_par_priv* poid_par_priv) +{ + NDIS_STATUS status = NDIS_STATUS_SUCCESS; + PADAPTER padapter = (PADAPTER)(poid_par_priv->adapter_context); + struct eeprom_priv* peeprompriv = &padapter->eeprompriv; + + if(poid_par_priv->type_of_oid != SET_OID) + { + status = NDIS_STATUS_NOT_ACCEPTED; + return status; + } + + peeprompriv->channel_plan = *(u16 *)poid_par_priv->information_buf ; + + return status; +} +//------------------------------------------------------------------------------ +NDIS_STATUS oid_rt_set_preamble_mode_hdl(struct oid_par_priv* poid_par_priv) +{ + NDIS_STATUS status = NDIS_STATUS_SUCCESS; + PADAPTER padapter = (PADAPTER)(poid_par_priv->adapter_context); + ULONG preamblemode = 0; + if(poid_par_priv->type_of_oid != SET_OID) + { + status = NDIS_STATUS_NOT_ACCEPTED; + return status; + } + + if(poid_par_priv->information_buf_len>= sizeof(ULONG)) + { + preamblemode = *(ULONG *)poid_par_priv->information_buf ; + if( preamblemode == 0) + padapter->registrypriv.preamble = PREAMBLE_LONG; + else if (preamblemode==1 ) + padapter->registrypriv.preamble = PREAMBLE_AUTO; + else if ( preamblemode==2 ) + padapter->registrypriv.preamble = PREAMBLE_SHORT; + + *(ULONG *)poid_par_priv->information_buf = preamblemode ; + *poid_par_priv->bytes_rw = poid_par_priv->information_buf_len; + } + else + { + status = NDIS_STATUS_INVALID_LENGTH ; + } + + return status; +} +//------------------------------------------------------------------------------ +NDIS_STATUS oid_rt_set_bcn_intvl_hdl(struct oid_par_priv* poid_par_priv) +{ + NDIS_STATUS status = NDIS_STATUS_SUCCESS; + PADAPTER padapter = (PADAPTER)(poid_par_priv->adapter_context); + + if(poid_par_priv->type_of_oid != SET_OID) + { + status = NDIS_STATUS_NOT_ACCEPTED; + return status; + } + + return status; +} +NDIS_STATUS oid_rt_dedicate_probe_hdl(struct oid_par_priv* poid_par_priv) +{ + NDIS_STATUS status = NDIS_STATUS_SUCCESS; + PADAPTER padapter = (PADAPTER)(poid_par_priv->adapter_context); + + return status; +} +//------------------------------------------------------------------------------ +NDIS_STATUS oid_rt_get_total_tx_bytes_hdl(struct oid_par_priv* poid_par_priv) +{ + NDIS_STATUS status = NDIS_STATUS_SUCCESS; + PADAPTER padapter = (PADAPTER)(poid_par_priv->adapter_context); + + if(poid_par_priv->type_of_oid != QUERY_OID) + { + status = NDIS_STATUS_NOT_ACCEPTED; + return status; + } + if(poid_par_priv->information_buf_len>= sizeof(ULONG)) + { + *(u64 *)poid_par_priv->information_buf = padapter->xmitpriv.tx_bytes; + *poid_par_priv->bytes_rw = poid_par_priv->information_buf_len; + } + else + { + status = NDIS_STATUS_INVALID_LENGTH ; + } + + + return status; +} +//------------------------------------------------------------------------------ +NDIS_STATUS oid_rt_get_total_rx_bytes_hdl(struct oid_par_priv* poid_par_priv) +{ + NDIS_STATUS status = NDIS_STATUS_SUCCESS; + PADAPTER padapter = (PADAPTER)(poid_par_priv->adapter_context); + + if(poid_par_priv->type_of_oid != QUERY_OID) + { + status = NDIS_STATUS_NOT_ACCEPTED; + return status; + } + if(poid_par_priv->information_buf_len>= sizeof(ULONG)) + { + //_rtw_memcpy(*(uint *)poid_par_priv->information_buf,padapter->recvpriv.rx_icv_err,sizeof(u32)); + *(u64 *)poid_par_priv->information_buf = padapter->recvpriv.rx_bytes; + *poid_par_priv->bytes_rw = poid_par_priv->information_buf_len; + } + else + { + status = NDIS_STATUS_INVALID_LENGTH ; + } + return status; +} +//------------------------------------------------------------------------------ +NDIS_STATUS oid_rt_current_tx_power_level_hdl(struct oid_par_priv* poid_par_priv) +{ + NDIS_STATUS status = NDIS_STATUS_SUCCESS; + PADAPTER padapter = (PADAPTER)(poid_par_priv->adapter_context); + + return status; +} +NDIS_STATUS oid_rt_get_enc_key_mismatch_count_hdl(struct oid_par_priv* poid_par_priv) +{ + NDIS_STATUS status = NDIS_STATUS_SUCCESS; + PADAPTER padapter = (PADAPTER)(poid_par_priv->adapter_context); + + if(poid_par_priv->type_of_oid != QUERY_OID) + { + status = NDIS_STATUS_NOT_ACCEPTED; + return status; + } + + return status; +} +NDIS_STATUS oid_rt_get_enc_key_match_count_hdl(struct oid_par_priv* poid_par_priv) +{ + NDIS_STATUS status = NDIS_STATUS_SUCCESS; + PADAPTER padapter = (PADAPTER)(poid_par_priv->adapter_context); + + if(poid_par_priv->type_of_oid != QUERY_OID) + { + status = NDIS_STATUS_NOT_ACCEPTED; + return status; + } + + return status; +} +NDIS_STATUS oid_rt_get_channel_hdl(struct oid_par_priv* poid_par_priv) +{ + NDIS_STATUS status = NDIS_STATUS_SUCCESS; + PADAPTER padapter = (PADAPTER)(poid_par_priv->adapter_context); + struct mlme_priv *pmlmepriv = &padapter->mlmepriv; + NDIS_802_11_CONFIGURATION *pnic_Config; + + ULONG channelnum; + + _func_enter_; + if(poid_par_priv->type_of_oid != QUERY_OID) + { + status = NDIS_STATUS_NOT_ACCEPTED; + return status; + } + + if ( (check_fwstate(pmlmepriv, _FW_LINKED) == _TRUE) || + (check_fwstate(pmlmepriv, WIFI_ADHOC_MASTER_STATE) == _TRUE)) + pnic_Config = &pmlmepriv->cur_network.network.Configuration; + else + pnic_Config = &padapter->registrypriv.dev_network.Configuration; + + channelnum = pnic_Config->DSConfig; + *(ULONG *)poid_par_priv->information_buf = channelnum; + + *poid_par_priv->bytes_rw = poid_par_priv->information_buf_len; + + _func_exit_; + + + + return status; +} +NDIS_STATUS oid_rt_get_hardware_radio_off_hdl(struct oid_par_priv* poid_par_priv) +{ + NDIS_STATUS status = NDIS_STATUS_SUCCESS; + PADAPTER padapter = (PADAPTER)(poid_par_priv->adapter_context); + + if(poid_par_priv->type_of_oid != QUERY_OID) + { + status = NDIS_STATUS_NOT_ACCEPTED; + return status; + } + + return status; +} +NDIS_STATUS oid_rt_get_key_mismatch_hdl(struct oid_par_priv* poid_par_priv) +{ + NDIS_STATUS status = NDIS_STATUS_SUCCESS; + PADAPTER padapter = (PADAPTER)(poid_par_priv->adapter_context); + + if(poid_par_priv->type_of_oid != QUERY_OID) + { + status = NDIS_STATUS_NOT_ACCEPTED; + return status; + } + + return status; +} +NDIS_STATUS oid_rt_supported_wireless_mode_hdl(struct oid_par_priv* poid_par_priv) +{ + NDIS_STATUS status = NDIS_STATUS_SUCCESS; + PADAPTER padapter = (PADAPTER)(poid_par_priv->adapter_context); + ULONG ulInfo = 0 ; + //DEBUG_ERR(("<**********************oid_rt_supported_wireless_mode_hdl \n")); + if(poid_par_priv->type_of_oid != QUERY_OID) + { + status = NDIS_STATUS_NOT_ACCEPTED; + return status; + } + if(poid_par_priv->information_buf_len >= sizeof(ULONG)){ + ulInfo |= 0x0100; //WIRELESS_MODE_B + ulInfo |= 0x0200; //WIRELESS_MODE_G + ulInfo |= 0x0400; //WIRELESS_MODE_A + + *(ULONG *) poid_par_priv->information_buf = ulInfo; + //DEBUG_ERR(("<===oid_rt_supported_wireless_mode %x\n",ulInfo)); + *poid_par_priv->bytes_rw = poid_par_priv->information_buf_len; + } + else{ + status = NDIS_STATUS_INVALID_LENGTH; + } + + return status; +} +NDIS_STATUS oid_rt_get_channel_list_hdl(struct oid_par_priv* poid_par_priv) +{ + NDIS_STATUS status = NDIS_STATUS_SUCCESS; + PADAPTER padapter = (PADAPTER)(poid_par_priv->adapter_context); + + if(poid_par_priv->type_of_oid != QUERY_OID) + { + status = NDIS_STATUS_NOT_ACCEPTED; + return status; + } + + return status; +} +NDIS_STATUS oid_rt_get_scan_in_progress_hdl(struct oid_par_priv* poid_par_priv) +{ + NDIS_STATUS status = NDIS_STATUS_SUCCESS; + PADAPTER padapter = (PADAPTER)(poid_par_priv->adapter_context); + + if(poid_par_priv->type_of_oid != QUERY_OID) + { + status = NDIS_STATUS_NOT_ACCEPTED; + return status; + } + + return status; +} + + +NDIS_STATUS oid_rt_forced_data_rate_hdl(struct oid_par_priv* poid_par_priv) +{ + NDIS_STATUS status = NDIS_STATUS_SUCCESS; + PADAPTER padapter = (PADAPTER)(poid_par_priv->adapter_context); + + return status; +} +NDIS_STATUS oid_rt_wireless_mode_for_scan_list_hdl(struct oid_par_priv* poid_par_priv) +{ + NDIS_STATUS status = NDIS_STATUS_SUCCESS; + PADAPTER padapter = (PADAPTER)(poid_par_priv->adapter_context); + + return status; +} +NDIS_STATUS oid_rt_get_bss_wireless_mode_hdl(struct oid_par_priv* poid_par_priv) +{ + NDIS_STATUS status = NDIS_STATUS_SUCCESS; + PADAPTER padapter = (PADAPTER)(poid_par_priv->adapter_context); + + if(poid_par_priv->type_of_oid != QUERY_OID) + { + status = NDIS_STATUS_NOT_ACCEPTED; + return status; + } + + return status; +} + +NDIS_STATUS oid_rt_scan_with_magic_packet_hdl(struct oid_par_priv* poid_par_priv) +{ + NDIS_STATUS status = NDIS_STATUS_SUCCESS; + PADAPTER padapter = (PADAPTER)(poid_par_priv->adapter_context); + + return status; +} +//************** oid_rtl_seg_01_01 section end ************** + +//************** oid_rtl_seg_01_03 section start ************** +NDIS_STATUS oid_rt_ap_get_associated_station_list_hdl(struct oid_par_priv* poid_par_priv) +{ + NDIS_STATUS status = NDIS_STATUS_SUCCESS; + PADAPTER padapter = (PADAPTER)(poid_par_priv->adapter_context); + + if(poid_par_priv->type_of_oid != QUERY_OID) + { + status = NDIS_STATUS_NOT_ACCEPTED; + return status; + } + + return status; +} +NDIS_STATUS oid_rt_ap_switch_into_ap_mode_hdl(struct oid_par_priv* poid_par_priv) +{ + NDIS_STATUS status = NDIS_STATUS_SUCCESS; + PADAPTER padapter = (PADAPTER)(poid_par_priv->adapter_context); + + return status; +} +NDIS_STATUS oid_rt_ap_supported_hdl(struct oid_par_priv* poid_par_priv) +{ + NDIS_STATUS status = NDIS_STATUS_SUCCESS; + PADAPTER padapter = (PADAPTER)(poid_par_priv->adapter_context); + + return status; +} +NDIS_STATUS oid_rt_ap_set_passphrase_hdl(struct oid_par_priv* poid_par_priv) +{ + NDIS_STATUS status = NDIS_STATUS_SUCCESS; + PADAPTER padapter = (PADAPTER)(poid_par_priv->adapter_context); + + if(poid_par_priv->type_of_oid != SET_OID) + { + status = NDIS_STATUS_NOT_ACCEPTED; + return status; + } + + return status; +} + +//************** oid_rtl_seg_01_03 section end ************** + +//**************** oid_rtl_seg_01_11 section start **************** +NDIS_STATUS oid_rt_pro_rf_write_registry_hdl(struct oid_par_priv* poid_par_priv) +{ + NDIS_STATUS status = NDIS_STATUS_SUCCESS; + PADAPTER Adapter = (PADAPTER)(poid_par_priv->adapter_context); + _irqL oldirql; + _func_enter_; + //DEBUG_ERR(("<**********************oid_rt_pro_rf_write_registry_hdl \n")); + if(poid_par_priv->type_of_oid != SET_OID) //QUERY_OID + { + status = NDIS_STATUS_NOT_ACCEPTED; + return status; + } + + _irqlevel_changed_(&oldirql,LOWER); + if(poid_par_priv->information_buf_len== (sizeof(unsigned long)*3)) + { + //RegOffsetValue - The offset of RF register to write. + //RegDataWidth - The data width of RF register to write. + //RegDataValue - The value to write. + //RegOffsetValue = *((unsigned long*)InformationBuffer); + //RegDataWidth = *((unsigned long*)InformationBuffer+1); + //RegDataValue = *((unsigned long*)InformationBuffer+2); + if(!rtw_setrfreg_cmd(Adapter, + *(unsigned char*)poid_par_priv->information_buf, + (unsigned long)(*((unsigned long*)poid_par_priv->information_buf+2)))) + { + status = NDIS_STATUS_NOT_ACCEPTED; + } + + } + else{ + status = NDIS_STATUS_INVALID_LENGTH; + } + _irqlevel_changed_(&oldirql,RAISE); + _func_exit_; + + return status; +} + +//------------------------------------------------------------------------------ +NDIS_STATUS oid_rt_pro_rf_read_registry_hdl(struct oid_par_priv* poid_par_priv) +{ + NDIS_STATUS status = NDIS_STATUS_SUCCESS; +#if 0 + PADAPTER Adapter = (PADAPTER)(poid_par_priv->adapter_context); + _irqL oldirql; + _func_enter_; + + //DEBUG_ERR(("<**********************oid_rt_pro_rf_read_registry_hdl \n")); + if(poid_par_priv->type_of_oid != SET_OID) //QUERY_OID + { + status = NDIS_STATUS_NOT_ACCEPTED; + return status; + } + + _irqlevel_changed_(&oldirql,LOWER); + if(poid_par_priv->information_buf_len== (sizeof(unsigned long)*3)) + { + if(Adapter->mppriv.act_in_progress == _TRUE) + { + status = NDIS_STATUS_NOT_ACCEPTED; + } + else + { + //init workparam + Adapter->mppriv.act_in_progress = _TRUE; + Adapter->mppriv.workparam.bcompleted= _FALSE; + Adapter->mppriv.workparam.act_type = MPT_READ_RF; + Adapter->mppriv.workparam.io_offset = *(unsigned long*)poid_par_priv->information_buf; + Adapter->mppriv.workparam.io_value = 0xcccccccc; + + //RegOffsetValue - The offset of RF register to read. + //RegDataWidth - The data width of RF register to read. + //RegDataValue - The value to read. + //RegOffsetValue = *((unsigned long*)InformationBuffer); + //RegDataWidth = *((unsigned long*)InformationBuffer+1); + //RegDataValue = *((unsigned long*)InformationBuffer+2); + if(!rtw_getrfreg_cmd(Adapter, + *(unsigned char*)poid_par_priv->information_buf, + (unsigned char*)&Adapter->mppriv.workparam.io_value)) + { + status = NDIS_STATUS_NOT_ACCEPTED; + } + } + + + } + else { + status = NDIS_STATUS_INVALID_LENGTH; + } + _irqlevel_changed_(&oldirql,RAISE); + _func_exit_; +#endif + return status; +} + +//**************** oid_rtl_seg_01_11 section end**************** + + +//************** oid_rtl_seg_03_00 section start ************** +enum _CONNECT_STATE_{ + CHECKINGSTATUS, + ASSOCIATED, + ADHOCMODE, + NOTASSOCIATED +}; + +NDIS_STATUS oid_rt_get_connect_state_hdl(struct oid_par_priv* poid_par_priv) +{ + NDIS_STATUS status = NDIS_STATUS_SUCCESS; + PADAPTER padapter = (PADAPTER)(poid_par_priv->adapter_context); + + struct mlme_priv *pmlmepriv = &(padapter->mlmepriv); + + ULONG ulInfo; + + if(poid_par_priv->type_of_oid != QUERY_OID) + { + status = NDIS_STATUS_NOT_ACCEPTED; + return status; + } + + // nStatus==0 CheckingStatus + // nStatus==1 Associated + // nStatus==2 AdHocMode + // nStatus==3 NotAssociated + + if(check_fwstate(pmlmepriv, _FW_UNDER_LINKING) == _TRUE) + ulInfo = CHECKINGSTATUS; + else if(check_fwstate(pmlmepriv, _FW_LINKED) == _TRUE) + ulInfo = ASSOCIATED; + else if(check_fwstate(pmlmepriv, WIFI_ADHOC_STATE)== _TRUE) + ulInfo = ADHOCMODE; + else + ulInfo = NOTASSOCIATED ; + + *(ULONG *)poid_par_priv->information_buf = ulInfo; + *poid_par_priv->bytes_rw = poid_par_priv->information_buf_len; + +#if 0 + // Rearrange the order to let the UI still shows connection when scan is in progress + RT_TRACE(COMP_OID_QUERY, DBG_LOUD, ("===> Query OID_RT_GET_CONNECT_STATE.\n")); + if(pMgntInfo->mAssoc) + ulInfo = 1; + else if(pMgntInfo->mIbss) + ulInfo = 2; + else if(pMgntInfo->bScanInProgress) + ulInfo = 0; + else + ulInfo = 3; + ulInfoLen = sizeof(ULONG); + RT_TRACE(COMP_OID_QUERY, DBG_LOUD, ("<=== Query OID_RT_GET_CONNECT_STATE: %d\n", ulInfo)); +#endif + + return status; +} + +NDIS_STATUS oid_rt_set_default_key_id_hdl(struct oid_par_priv* poid_par_priv) +{ + NDIS_STATUS status = NDIS_STATUS_SUCCESS; + PADAPTER padapter = (PADAPTER)(poid_par_priv->adapter_context); + + if(poid_par_priv->type_of_oid != SET_OID) + { + status = NDIS_STATUS_NOT_ACCEPTED; + return status; + } + + return status; +} +//************** oid_rtl_seg_03_00 section end ************** --- linux-raspi2-4.2.0.orig/drivers/net/wireless/rtl8192cu/core/rtw_ioctl_set.c +++ linux-raspi2-4.2.0/drivers/net/wireless/rtl8192cu/core/rtw_ioctl_set.c @@ -0,0 +1,1493 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved. + * + * 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 + * published by the Free Software Foundation. + * + * 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 Street, Fifth Floor, Boston, MA 02110, USA + * + * + ******************************************************************************/ +#define _RTW_IOCTL_SET_C_ + + +#include +#include +#include +#include +#include + +#ifdef CONFIG_USB_HCI +#include +#include +#endif +#ifdef CONFIG_SDIO_HCI +#include +#endif + +extern void indicate_wx_scan_complete_event(_adapter *padapter); + +#define IS_MAC_ADDRESS_BROADCAST(addr) \ +( \ + ( (addr[0] == 0xff) && (addr[1] == 0xff) && \ + (addr[2] == 0xff) && (addr[3] == 0xff) && \ + (addr[4] == 0xff) && (addr[5] == 0xff) ) ? _TRUE : _FALSE \ +) + +u8 rtw_validate_bssid(u8 *bssid) +{ + u8 ret = _TRUE; + + if (is_zero_mac_addr(bssid) + || is_broadcast_mac_addr(bssid) + || is_multicast_mac_addr(bssid) + ) { + ret = _FALSE; + } + + return ret; +} + +u8 rtw_validate_ssid(NDIS_802_11_SSID *ssid) +{ + u8 i; + u8 ret=_TRUE; + +_func_enter_; + + if (ssid->SsidLength > 32) { + RT_TRACE(_module_rtl871x_ioctl_set_c_, _drv_err_, ("ssid length >32\n")); + ret= _FALSE; + goto exit; + } + +#ifdef CONFIG_VALIDATE_SSID + for(i = 0; i < ssid->SsidLength; i++) + { + //wifi, printable ascii code must be supported + if(!( (ssid->Ssid[i] >= 0x20) && (ssid->Ssid[i] <= 0x7e) )){ + RT_TRACE(_module_rtl871x_ioctl_set_c_, _drv_err_, ("ssid has nonprintabl ascii\n")); + ret= _FALSE; + break; + } + } +#endif /* CONFIG_VALIDATE_SSID */ + +exit: + +_func_exit_; + + return ret; +} + +u8 rtw_do_join(_adapter * padapter); +u8 rtw_do_join(_adapter * padapter) +{ + _irqL irqL; + _list *plist, *phead; + u8* pibss = NULL; + struct mlme_priv *pmlmepriv = &(padapter->mlmepriv); + _queue *queue = &(pmlmepriv->scanned_queue); + u8 ret=_SUCCESS; + +_func_enter_; + + _enter_critical_bh(&(pmlmepriv->scanned_queue.lock), &irqL); + phead = get_list_head(queue); + plist = get_next(phead); + + RT_TRACE(_module_rtl871x_ioctl_set_c_,_drv_info_,("\n rtw_do_join: phead = %p; plist = %p \n\n\n", phead, plist)); + + pmlmepriv->cur_network.join_res = -2; + + set_fwstate(pmlmepriv, _FW_UNDER_LINKING); + + pmlmepriv->pscanned = plist; + + pmlmepriv->to_join = _TRUE; + + if(_rtw_queue_empty(queue)== _TRUE) + { + _exit_critical_bh(&(pmlmepriv->scanned_queue.lock), &irqL); + _clr_fwstate_(pmlmepriv, _FW_UNDER_LINKING); + + //when set_ssid/set_bssid for rtw_do_join(), but scanning queue is empty + //we try to issue sitesurvey firstly + + if (pmlmepriv->LinkDetectInfo.bBusyTraffic ==_FALSE + || rtw_to_roaming(padapter) > 0 + ) + { + RT_TRACE(_module_rtl871x_ioctl_set_c_,_drv_info_,("rtw_do_join(): site survey if scanned_queue is empty\n.")); + // submit site_survey_cmd + if(_SUCCESS!=(ret=rtw_sitesurvey_cmd(padapter, &pmlmepriv->assoc_ssid, 1, NULL, 0)) ) { + RT_TRACE(_module_rtl871x_ioctl_set_c_,_drv_err_,("rtw_do_join(): site survey return error\n.")); + } + } + + goto exit; + } + else + { + int select_ret; + _exit_critical_bh(&(pmlmepriv->scanned_queue.lock), &irqL); + if((select_ret=rtw_select_and_join_from_scanned_queue(pmlmepriv))==_SUCCESS) + { + pmlmepriv->to_join = _FALSE; + _set_timer(&pmlmepriv->assoc_timer, MAX_JOIN_TIMEOUT); + } + else if(ret == 2)//there is no need to wait for join + { + ret = _SUCCESS; + _clr_fwstate_(pmlmepriv, _FW_UNDER_LINKING); + rtw_indicate_connect(padapter); + } + else + { + if(check_fwstate(pmlmepriv, WIFI_ADHOC_STATE)==_TRUE) + { + // submit createbss_cmd to change to a ADHOC_MASTER + + //pmlmepriv->lock has been acquired by caller... + WLAN_BSSID_EX *pdev_network = &(padapter->registrypriv.dev_network); + + pmlmepriv->fw_state = WIFI_ADHOC_MASTER_STATE; + + pibss = padapter->registrypriv.dev_network.MacAddress; + + _rtw_memset(&pdev_network->Ssid, 0, sizeof(NDIS_802_11_SSID)); + _rtw_memcpy(&pdev_network->Ssid, &pmlmepriv->assoc_ssid, sizeof(NDIS_802_11_SSID)); + + rtw_update_registrypriv_dev_network(padapter); + + rtw_generate_random_ibss(pibss); + + if(rtw_createbss_cmd(padapter)!=_SUCCESS) + { + RT_TRACE(_module_rtl871x_ioctl_set_c_,_drv_err_,("***Error=>do_goin: rtw_createbss_cmd status FAIL*** \n ")); + ret = _FALSE; + goto exit; + } + + pmlmepriv->to_join = _FALSE; + + RT_TRACE(_module_rtl871x_ioctl_set_c_,_drv_info_,("***Error=> rtw_select_and_join_from_scanned_queue FAIL under STA_Mode*** \n ")); + + } + else + { + // can't associate ; reset under-linking + _clr_fwstate_(pmlmepriv, _FW_UNDER_LINKING); + +#if 0 + if((check_fwstate(pmlmepriv, WIFI_STATION_STATE) == _TRUE)) + { + if(_rtw_memcmp(pmlmepriv->cur_network.network.Ssid.Ssid, pmlmepriv->assoc_ssid.Ssid, pmlmepriv->assoc_ssid.SsidLength)) + { + // for funk to do roaming + // funk will reconnect, but funk will not sitesurvey before reconnect + RT_TRACE(_module_rtl871x_ioctl_set_c_,_drv_info_,("for funk to do roaming")); + if(pmlmepriv->sitesurveyctrl.traffic_busy==_FALSE) + rtw_sitesurvey_cmd(padapter, &pmlmepriv->assoc_ssid, 1, NULL, 0); + } + + } +#endif + + //when set_ssid/set_bssid for rtw_do_join(), but there are no desired bss in scanning queue + //we try to issue sitesurvey firstly + if(pmlmepriv->LinkDetectInfo.bBusyTraffic==_FALSE + || rtw_to_roaming(padapter) > 0 + ) + { + //DBG_871X("rtw_do_join() when no desired bss in scanning queue \n"); + if( _SUCCESS!=(ret=rtw_sitesurvey_cmd(padapter, &pmlmepriv->assoc_ssid, 1, NULL, 0)) ){ + RT_TRACE(_module_rtl871x_ioctl_set_c_,_drv_err_,("do_join(): site survey return error\n.")); + } + } + + + } + + } + + } + +exit: + +_func_exit_; + + return ret; +} + +#ifdef PLATFORM_WINDOWS +u8 rtw_pnp_set_power_wakeup(_adapter* padapter) +{ + u8 res=_SUCCESS; + +_func_enter_; + + RT_TRACE(_module_rtl871x_ioctl_set_c_,_drv_err_,("==>rtw_pnp_set_power_wakeup!!!\n")); + + res = rtw_setstandby_cmd(padapter, 0); + + RT_TRACE(_module_rtl871x_ioctl_set_c_,_drv_err_,("<==rtw_pnp_set_power_wakeup!!!\n")); + +_func_exit_; + + return res; +} + +u8 rtw_pnp_set_power_sleep(_adapter* padapter) +{ + u8 res=_SUCCESS; + +_func_enter_; + + RT_TRACE(_module_rtl871x_ioctl_set_c_,_drv_err_,("==>rtw_pnp_set_power_sleep!!!\n")); + //DbgPrint("+rtw_pnp_set_power_sleep\n"); + + res = rtw_setstandby_cmd(padapter, 1); + + RT_TRACE(_module_rtl871x_ioctl_set_c_,_drv_err_,("<==rtw_pnp_set_power_sleep!!!\n")); + +_func_exit_; + + return res; +} + +u8 rtw_set_802_11_reload_defaults(_adapter * padapter, NDIS_802_11_RELOAD_DEFAULTS reloadDefaults) +{ +_func_enter_; + + switch( reloadDefaults) + { + case Ndis802_11ReloadWEPKeys: + RT_TRACE(_module_rtl871x_ioctl_set_c_,_drv_info_,("SetInfo OID_802_11_RELOAD_DEFAULTS : Ndis802_11ReloadWEPKeys\n")); + break; + } + + // SecClearAllKeys(Adapter); + // 8711 CAM was not for En/Decrypt only + // so, we can't clear all keys. + // should we disable WPAcfg (ox0088) bit 1-2, instead of clear all CAM + + //TO DO... + +_func_exit_; + + return _TRUE; +} + +u8 set_802_11_test(_adapter* padapter, NDIS_802_11_TEST *test) +{ + u8 ret=_TRUE; + +_func_enter_; + + switch(test->Type) + { + case 1: + NdisMIndicateStatus(padapter->hndis_adapter, NDIS_STATUS_MEDIA_SPECIFIC_INDICATION, (PVOID)&test->AuthenticationEvent, test->Length - 8); + NdisMIndicateStatusComplete(padapter->hndis_adapter); + break; + + case 2: + NdisMIndicateStatus(padapter->hndis_adapter, NDIS_STATUS_MEDIA_SPECIFIC_INDICATION, (PVOID)&test->RssiTrigger, sizeof(NDIS_802_11_RSSI)); + NdisMIndicateStatusComplete(padapter->hndis_adapter); + break; + + default: + ret=_FALSE; + break; + } + +_func_exit_; + + return ret; +} + +u8 rtw_set_802_11_pmkid(_adapter* padapter, NDIS_802_11_PMKID *pmkid) +{ + u8 ret=_SUCCESS; + + return ret; +} + +#endif + +u8 rtw_set_802_11_bssid(_adapter* padapter, u8 *bssid) +{ + _irqL irqL; + u8 status=_SUCCESS; + u32 cur_time = 0; + + struct mlme_priv *pmlmepriv = &padapter->mlmepriv; + +_func_enter_; + + RT_TRACE(_module_rtl871x_ioctl_set_c_, _drv_notice_, + ("+rtw_set_802_11_bssid: bssid="MAC_FMT"\n", MAC_ARG(bssid) )); + + if ((bssid[0]==0x00 && bssid[1]==0x00 && bssid[2]==0x00 && bssid[3]==0x00 && bssid[4]==0x00 &&bssid[5]==0x00) || + (bssid[0]==0xFF && bssid[1]==0xFF && bssid[2]==0xFF && bssid[3]==0xFF && bssid[4]==0xFF &&bssid[5]==0xFF)) + { + status = _FAIL; + goto exit; + } + + _enter_critical_bh(&pmlmepriv->lock, &irqL); + + + DBG_871X("Set BSSID under fw_state=0x%08x\n", get_fwstate(pmlmepriv)); + if (check_fwstate(pmlmepriv, _FW_UNDER_SURVEY) == _TRUE) { + goto handle_tkip_countermeasure; + } else if (check_fwstate(pmlmepriv, _FW_UNDER_LINKING) == _TRUE) { + goto release_mlme_lock; + } + + if (check_fwstate(pmlmepriv, _FW_LINKED|WIFI_ADHOC_MASTER_STATE) == _TRUE) + { + RT_TRACE(_module_rtl871x_ioctl_set_c_, _drv_info_, ("set_bssid: _FW_LINKED||WIFI_ADHOC_MASTER_STATE\n")); + + if (_rtw_memcmp(&pmlmepriv->cur_network.network.MacAddress, bssid, ETH_ALEN) == _TRUE) + { + if (check_fwstate(pmlmepriv, WIFI_STATION_STATE) == _FALSE) + goto release_mlme_lock;//it means driver is in WIFI_ADHOC_MASTER_STATE, we needn't create bss again. + } else { + RT_TRACE(_module_rtl871x_ioctl_set_c_,_drv_info_,("Set BSSID not the same bssid\n")); + RT_TRACE(_module_rtl871x_ioctl_set_c_,_drv_info_,("set_bssid="MAC_FMT"\n", MAC_ARG(bssid) )); + RT_TRACE(_module_rtl871x_ioctl_set_c_,_drv_info_,("cur_bssid="MAC_FMT"\n", MAC_ARG(pmlmepriv->cur_network.network.MacAddress) )); + + rtw_disassoc_cmd(padapter, 0, _TRUE); + + if (check_fwstate(pmlmepriv, _FW_LINKED) == _TRUE) + rtw_indicate_disconnect(padapter); + + rtw_free_assoc_resources(padapter, 1); + + if ((check_fwstate(pmlmepriv, WIFI_ADHOC_MASTER_STATE) == _TRUE)) { + _clr_fwstate_(pmlmepriv, WIFI_ADHOC_MASTER_STATE); + set_fwstate(pmlmepriv, WIFI_ADHOC_STATE); + } + } + } + +handle_tkip_countermeasure: + if (rtw_handle_tkip_countermeasure(padapter, __func__) == _FAIL) { + status = _FAIL; + goto release_mlme_lock; + } + + _rtw_memcpy(&pmlmepriv->assoc_bssid, bssid, ETH_ALEN); + pmlmepriv->assoc_by_bssid=_TRUE; + + if (check_fwstate(pmlmepriv, _FW_UNDER_SURVEY) == _TRUE) { + pmlmepriv->to_join = _TRUE; + } + else { + status = rtw_do_join(padapter); + } + +release_mlme_lock: + _exit_critical_bh(&pmlmepriv->lock, &irqL); + +exit: + RT_TRACE(_module_rtl871x_ioctl_set_c_, _drv_err_, + ("rtw_set_802_11_bssid: status=%d\n", status)); + +_func_exit_; + + return status; +} + +u8 rtw_set_802_11_ssid(_adapter* padapter, NDIS_802_11_SSID *ssid) +{ + _irqL irqL; + u8 status = _SUCCESS; + u32 cur_time = 0; + + struct mlme_priv *pmlmepriv = &padapter->mlmepriv; + struct wlan_network *pnetwork = &pmlmepriv->cur_network; + +_func_enter_; + + RT_TRACE(_module_rtl871x_ioctl_set_c_, _drv_notice_, + ("+rtw_set_802_11_ssid: ssid=[%s] fw_state=0x%08x\n", + ssid->Ssid, get_fwstate(pmlmepriv))); + + if(padapter->hw_init_completed==_FALSE){ + RT_TRACE(_module_rtl871x_ioctl_set_c_, _drv_err_, + ("set_ssid: hw_init_completed==_FALSE=>exit!!!\n")); + status = _FAIL; + goto exit; + } + + _enter_critical_bh(&pmlmepriv->lock, &irqL); + + DBG_871X("Set SSID under fw_state=0x%08x\n", get_fwstate(pmlmepriv)); + if (check_fwstate(pmlmepriv, _FW_UNDER_SURVEY) == _TRUE) { + goto handle_tkip_countermeasure; + } else if (check_fwstate(pmlmepriv, _FW_UNDER_LINKING) == _TRUE) { + goto release_mlme_lock; + } + + if (check_fwstate(pmlmepriv, _FW_LINKED|WIFI_ADHOC_MASTER_STATE) == _TRUE) + { + RT_TRACE(_module_rtl871x_ioctl_set_c_, _drv_info_, + ("set_ssid: _FW_LINKED||WIFI_ADHOC_MASTER_STATE\n")); + + if ((pmlmepriv->assoc_ssid.SsidLength == ssid->SsidLength) && + (_rtw_memcmp(&pmlmepriv->assoc_ssid.Ssid, ssid->Ssid, ssid->SsidLength) == _TRUE)) + { + if((check_fwstate(pmlmepriv, WIFI_STATION_STATE) == _FALSE)) + { + RT_TRACE(_module_rtl871x_ioctl_set_c_, _drv_err_, + ("Set SSID is the same ssid, fw_state=0x%08x\n", + get_fwstate(pmlmepriv))); + + if(rtw_is_same_ibss(padapter, pnetwork) == _FALSE) + { + //if in WIFI_ADHOC_MASTER_STATE | WIFI_ADHOC_STATE, create bss or rejoin again + rtw_disassoc_cmd(padapter, 0, _TRUE); + + if (check_fwstate(pmlmepriv, _FW_LINKED) == _TRUE) + rtw_indicate_disconnect(padapter); + + rtw_free_assoc_resources(padapter, 1); + + if (check_fwstate(pmlmepriv, WIFI_ADHOC_MASTER_STATE) == _TRUE) { + _clr_fwstate_(pmlmepriv, WIFI_ADHOC_MASTER_STATE); + set_fwstate(pmlmepriv, WIFI_ADHOC_STATE); + } + } + else + { + goto release_mlme_lock;//it means driver is in WIFI_ADHOC_MASTER_STATE, we needn't create bss again. + } + } +#ifdef CONFIG_LPS + else { + rtw_lps_ctrl_wk_cmd(padapter, LPS_CTRL_JOINBSS, 1); + } +#endif + } + else + { + RT_TRACE(_module_rtl871x_ioctl_set_c_,_drv_info_,("Set SSID not the same ssid\n")); + RT_TRACE(_module_rtl871x_ioctl_set_c_,_drv_info_,("set_ssid=[%s] len=0x%x\n", ssid->Ssid, (unsigned int)ssid->SsidLength)); + RT_TRACE(_module_rtl871x_ioctl_set_c_,_drv_info_,("assoc_ssid=[%s] len=0x%x\n", pmlmepriv->assoc_ssid.Ssid, (unsigned int)pmlmepriv->assoc_ssid.SsidLength)); + + rtw_disassoc_cmd(padapter, 0, _TRUE); + + if (check_fwstate(pmlmepriv, _FW_LINKED) == _TRUE) + rtw_indicate_disconnect(padapter); + + rtw_free_assoc_resources(padapter, 1); + + if (check_fwstate(pmlmepriv, WIFI_ADHOC_MASTER_STATE) == _TRUE) { + _clr_fwstate_(pmlmepriv, WIFI_ADHOC_MASTER_STATE); + set_fwstate(pmlmepriv, WIFI_ADHOC_STATE); + } + } + } + +handle_tkip_countermeasure: + if (rtw_handle_tkip_countermeasure(padapter, __func__) == _FAIL) { + status = _FAIL; + goto release_mlme_lock; + } + + if (rtw_validate_ssid(ssid) == _FALSE) { + status = _FAIL; + goto release_mlme_lock; + } + + _rtw_memcpy(&pmlmepriv->assoc_ssid, ssid, sizeof(NDIS_802_11_SSID)); + pmlmepriv->assoc_by_bssid=_FALSE; + + if (check_fwstate(pmlmepriv, _FW_UNDER_SURVEY) == _TRUE) { + pmlmepriv->to_join = _TRUE; + } + else { + status = rtw_do_join(padapter); + } + +release_mlme_lock: + _exit_critical_bh(&pmlmepriv->lock, &irqL); + +exit: + RT_TRACE(_module_rtl871x_ioctl_set_c_, _drv_err_, + ("-rtw_set_802_11_ssid: status=%d\n", status)); + +_func_exit_; + + return status; + +} + +u8 rtw_set_802_11_connect(_adapter* padapter, u8 *bssid, NDIS_802_11_SSID *ssid) +{ + _irqL irqL; + u8 status = _SUCCESS; + u32 cur_time = 0; + bool bssid_valid = _TRUE; + bool ssid_valid = _TRUE; + struct mlme_priv *pmlmepriv = &padapter->mlmepriv; + +_func_enter_; + + if (!ssid || rtw_validate_ssid(ssid) == _FALSE) + ssid_valid = _FALSE; + + if (!bssid || rtw_validate_bssid(bssid) == _FALSE) + bssid_valid = _FALSE; + + if (ssid_valid == _FALSE && bssid_valid == _FALSE) { + DBG_871X(FUNC_ADPT_FMT" ssid:%p, ssid_valid:%d, bssid:%p, bssid_valid:%d\n", + FUNC_ADPT_ARG(padapter), ssid, ssid_valid, bssid, bssid_valid); + status = _FAIL; + goto exit; + } + + if(padapter->hw_init_completed==_FALSE){ + RT_TRACE(_module_rtl871x_ioctl_set_c_, _drv_err_, + ("set_ssid: hw_init_completed==_FALSE=>exit!!!\n")); + status = _FAIL; + goto exit; + } + + _enter_critical_bh(&pmlmepriv->lock, &irqL); + + LOG_LEVEL(_drv_info_, FUNC_ADPT_FMT" fw_state=0x%08x\n", + FUNC_ADPT_ARG(padapter), get_fwstate(pmlmepriv)); + + if (check_fwstate(pmlmepriv, _FW_UNDER_SURVEY) == _TRUE) { + goto handle_tkip_countermeasure; + } else if (check_fwstate(pmlmepriv, _FW_UNDER_LINKING) == _TRUE) { + goto release_mlme_lock; + } + +handle_tkip_countermeasure: + if (rtw_handle_tkip_countermeasure(padapter, __func__) == _FAIL) { + status = _FAIL; + goto release_mlme_lock; + } + + if (ssid && ssid_valid) + _rtw_memcpy(&pmlmepriv->assoc_ssid, ssid, sizeof(NDIS_802_11_SSID)); + + if (bssid && bssid_valid) { + _rtw_memcpy(&pmlmepriv->assoc_bssid, bssid, ETH_ALEN); + pmlmepriv->assoc_by_bssid = _TRUE; + } + + if (check_fwstate(pmlmepriv, _FW_UNDER_SURVEY) == _TRUE) { + pmlmepriv->to_join = _TRUE; + } + else { + status = rtw_do_join(padapter); + } + +release_mlme_lock: + _exit_critical_bh(&pmlmepriv->lock, &irqL); + +exit: + +_func_exit_; + + return status; +} + +/* +rtw_set_802_11_infrastructure_mode(~) + ### NOTE:#### (!!!!) + MUST TAKE CARE THAT BEFORE CALLING THIS FUNC, YOU SHOULD HAVE LOCKED pmlmepriv->lock and scanned_queue->lock in sequence +*/ +u8 rtw_set_802_11_infrastructure_mode(_adapter* padapter, + NDIS_802_11_NETWORK_INFRASTRUCTURE networktype) +{ + _irqL irqL; + struct mlme_priv *pmlmepriv = &padapter->mlmepriv; + struct wlan_network *cur_network = &pmlmepriv->cur_network; + NDIS_802_11_NETWORK_INFRASTRUCTURE* pold_state = &(cur_network->network.InfrastructureMode); + +_func_enter_; + + RT_TRACE(_module_rtl871x_ioctl_set_c_,_drv_notice_, + ("+rtw_set_802_11_infrastructure_mode: old=%d new=%d fw_state=0x%08x\n", + *pold_state, networktype, get_fwstate(pmlmepriv))); + + if(*pold_state != networktype) + { + + RT_TRACE(_module_rtl871x_ioctl_set_c_,_drv_info_,(" change mode!")); + //DBG_871X("change mode, old_mode=%d, new_mode=%d, fw_state=0x%x\n", *pold_state, networktype, get_fwstate(pmlmepriv)); + + if(*pold_state==Ndis802_11APMode) + { + //change to other mode from Ndis802_11APMode + cur_network->join_res = -1; + +#ifdef CONFIG_NATIVEAP_MLME + stop_ap_mode(padapter); +#endif + } + + if((check_fwstate(pmlmepriv, _FW_LINKED)== _TRUE) ||(*pold_state==Ndis802_11IBSS)) + rtw_disassoc_cmd(padapter, 0, _TRUE); + + if((check_fwstate(pmlmepriv, _FW_LINKED)== _TRUE) || + (check_fwstate(pmlmepriv, WIFI_ADHOC_MASTER_STATE)== _TRUE) ) + rtw_free_assoc_resources(padapter, 0); + + if((*pold_state == Ndis802_11Infrastructure) ||(*pold_state == Ndis802_11IBSS)) + { + if(check_fwstate(pmlmepriv, _FW_LINKED) == _TRUE) + { + rtw_indicate_disconnect(padapter); //will clr Linked_state; before this function, we must have chked whether issue dis-assoc_cmd or not + } + } + + *pold_state = networktype; + + _clr_fwstate_(pmlmepriv, ~WIFI_NULL_STATE); + + switch(networktype) + { + case Ndis802_11IBSS: + set_fwstate(pmlmepriv, WIFI_ADHOC_STATE); + break; + + case Ndis802_11Infrastructure: + set_fwstate(pmlmepriv, WIFI_STATION_STATE); + break; + + case Ndis802_11APMode: + set_fwstate(pmlmepriv, WIFI_AP_STATE); +#ifdef CONFIG_NATIVEAP_MLME + start_ap_mode(padapter); + //rtw_indicate_connect(padapter); +#endif + + break; + + case Ndis802_11AutoUnknown: + case Ndis802_11InfrastructureMax: + break; + } + + //SecClearAllKeys(adapter); + + //RT_TRACE(COMP_OID_SET, DBG_LOUD, ("set_infrastructure: fw_state:%x after changing mode\n", + // get_fwstate(pmlmepriv) )); + + } + +_func_exit_; + + return _TRUE; +} + + +u8 rtw_set_802_11_disassociate(_adapter *padapter) +{ + _irqL irqL; + struct mlme_priv * pmlmepriv = &padapter->mlmepriv; + +_func_enter_; + + _enter_critical_bh(&pmlmepriv->lock, &irqL); + + if (check_fwstate(pmlmepriv, _FW_LINKED) == _TRUE) + { + RT_TRACE(_module_rtl871x_ioctl_set_c_,_drv_info_,("MgntActrtw_set_802_11_disassociate: rtw_indicate_disconnect\n")); + + rtw_disassoc_cmd(padapter, 0, _TRUE); + rtw_indicate_disconnect(padapter); + //modify for CONFIG_IEEE80211W, none 11w can use it + rtw_free_assoc_resources_cmd(padapter); + } + + _exit_critical_bh(&pmlmepriv->lock, &irqL); + +_func_exit_; + + return _TRUE; +} + +u8 rtw_set_802_11_bssid_list_scan(_adapter* padapter, NDIS_802_11_SSID *pssid, int ssid_max_num) +{ + _irqL irqL; + struct mlme_priv *pmlmepriv= &padapter->mlmepriv; + u8 res=_TRUE; + +_func_enter_; + + RT_TRACE(_module_rtl871x_ioctl_set_c_,_drv_err_,("+rtw_set_802_11_bssid_list_scan(), fw_state=%x\n", get_fwstate(pmlmepriv))); + + if (padapter == NULL) { + res=_FALSE; + goto exit; + } + if (padapter->hw_init_completed==_FALSE){ + res = _FALSE; + RT_TRACE(_module_rtl871x_ioctl_set_c_,_drv_err_,("\n===rtw_set_802_11_bssid_list_scan:hw_init_completed==_FALSE===\n")); + goto exit; + } + + if ((check_fwstate(pmlmepriv, _FW_UNDER_SURVEY|_FW_UNDER_LINKING) == _TRUE) || + (pmlmepriv->LinkDetectInfo.bBusyTraffic == _TRUE)) + { + // Scan or linking is in progress, do nothing. + RT_TRACE(_module_rtl871x_ioctl_set_c_,_drv_err_,("rtw_set_802_11_bssid_list_scan fail since fw_state = %x\n", get_fwstate(pmlmepriv))); + res = _TRUE; + + if(check_fwstate(pmlmepriv, (_FW_UNDER_SURVEY|_FW_UNDER_LINKING))== _TRUE){ + RT_TRACE(_module_rtl871x_ioctl_set_c_,_drv_err_,("\n###_FW_UNDER_SURVEY|_FW_UNDER_LINKING\n\n")); + } else { + RT_TRACE(_module_rtl871x_ioctl_set_c_,_drv_err_,("\n###pmlmepriv->sitesurveyctrl.traffic_busy==_TRUE\n\n")); + } + } else { + if (rtw_is_scan_deny(padapter)) { + DBG_871X(FUNC_ADPT_FMT": scan deny\n", FUNC_ADPT_ARG(padapter)); + indicate_wx_scan_complete_event(padapter); + return _SUCCESS; + } + + _enter_critical_bh(&pmlmepriv->lock, &irqL); + + res = rtw_sitesurvey_cmd(padapter, pssid, ssid_max_num, NULL, 0); + + _exit_critical_bh(&pmlmepriv->lock, &irqL); + } +exit: + +_func_exit_; + + return res; +} + +u8 rtw_set_802_11_authentication_mode(_adapter* padapter, NDIS_802_11_AUTHENTICATION_MODE authmode) +{ + struct security_priv *psecuritypriv = &padapter->securitypriv; + int res; + u8 ret; + +_func_enter_; + + RT_TRACE(_module_rtl871x_ioctl_set_c_,_drv_info_,("set_802_11_auth.mode(): mode=%x\n", authmode)); + + psecuritypriv->ndisauthtype=authmode; + + RT_TRACE(_module_rtl871x_ioctl_set_c_,_drv_info_,("rtw_set_802_11_authentication_mode:psecuritypriv->ndisauthtype=%d", psecuritypriv->ndisauthtype)); + + if(psecuritypriv->ndisauthtype>3) + psecuritypriv->dot11AuthAlgrthm=dot11AuthAlgrthm_8021X; + + res=rtw_set_auth(padapter,psecuritypriv); + + if(res==_SUCCESS) + ret=_TRUE; + else + ret=_FALSE; + +_func_exit_; + + return ret; +} + +u8 rtw_set_802_11_add_wep(_adapter* padapter, NDIS_802_11_WEP *wep){ + + u8 bdefaultkey; + u8 btransmitkey; + sint keyid,res; + struct security_priv* psecuritypriv=&(padapter->securitypriv); + u8 ret=_SUCCESS; + +_func_enter_; + + bdefaultkey=(wep->KeyIndex & 0x40000000) > 0 ? _FALSE : _TRUE; //for ??? + btransmitkey= (wep->KeyIndex & 0x80000000) > 0 ? _TRUE : _FALSE; //for ??? + keyid=wep->KeyIndex & 0x3fffffff; + + if(keyid>4) + { + RT_TRACE(_module_rtl871x_ioctl_set_c_,_drv_err_,("MgntActrtw_set_802_11_add_wep:keyid>4=>fail\n")); + ret=_FALSE; + goto exit; + } + + switch(wep->KeyLength) + { + case 5: + psecuritypriv->dot11PrivacyAlgrthm=_WEP40_; + RT_TRACE(_module_rtl871x_ioctl_set_c_,_drv_info_,("MgntActrtw_set_802_11_add_wep:wep->KeyLength=5\n")); + break; + case 13: + psecuritypriv->dot11PrivacyAlgrthm=_WEP104_; + RT_TRACE(_module_rtl871x_ioctl_set_c_,_drv_info_,("MgntActrtw_set_802_11_add_wep:wep->KeyLength=13\n")); + break; + default: + psecuritypriv->dot11PrivacyAlgrthm=_NO_PRIVACY_; + RT_TRACE(_module_rtl871x_ioctl_set_c_,_drv_info_,("MgntActrtw_set_802_11_add_wep:wep->KeyLength!=5 or 13\n")); + break; + } + + RT_TRACE(_module_rtl871x_ioctl_set_c_,_drv_info_,("rtw_set_802_11_add_wep:befor memcpy, wep->KeyLength=0x%x wep->KeyIndex=0x%x keyid =%x\n",wep->KeyLength,wep->KeyIndex,keyid)); + + _rtw_memcpy(&(psecuritypriv->dot11DefKey[keyid].skey[0]),&(wep->KeyMaterial),wep->KeyLength); + + psecuritypriv->dot11DefKeylen[keyid]=wep->KeyLength; + + psecuritypriv->dot11PrivacyKeyIndex=keyid; + + RT_TRACE(_module_rtl871x_ioctl_set_c_,_drv_info_,("rtw_set_802_11_add_wep:security key material : %x %x %x %x %x %x %x %x %x %x %x %x %x \n", + psecuritypriv->dot11DefKey[keyid].skey[0],psecuritypriv->dot11DefKey[keyid].skey[1],psecuritypriv->dot11DefKey[keyid].skey[2], + psecuritypriv->dot11DefKey[keyid].skey[3],psecuritypriv->dot11DefKey[keyid].skey[4],psecuritypriv->dot11DefKey[keyid].skey[5], + psecuritypriv->dot11DefKey[keyid].skey[6],psecuritypriv->dot11DefKey[keyid].skey[7],psecuritypriv->dot11DefKey[keyid].skey[8], + psecuritypriv->dot11DefKey[keyid].skey[9],psecuritypriv->dot11DefKey[keyid].skey[10],psecuritypriv->dot11DefKey[keyid].skey[11], + psecuritypriv->dot11DefKey[keyid].skey[12])); + + res=rtw_set_key(padapter,psecuritypriv, keyid, 1); + + if(res==_FAIL) + ret= _FALSE; +exit: + +_func_exit_; + + return ret; + +} + +u8 rtw_set_802_11_remove_wep(_adapter* padapter, u32 keyindex){ + + u8 ret=_SUCCESS; + +_func_enter_; + + if (keyindex >= 0x80000000 || padapter == NULL){ + + ret=_FALSE; + goto exit; + + } + else + { + int res; + struct security_priv* psecuritypriv=&(padapter->securitypriv); + if( keyindex < 4 ){ + + _rtw_memset(&psecuritypriv->dot11DefKey[keyindex], 0, 16); + + res=rtw_set_key(padapter,psecuritypriv,keyindex, 0); + + psecuritypriv->dot11DefKeylen[keyindex]=0; + + if(res==_FAIL) + ret=_FAIL; + + } + else + { + ret=_FAIL; + } + + } + +exit: + +_func_exit_; + + return ret; + +} + +u8 rtw_set_802_11_add_key(_adapter* padapter, NDIS_802_11_KEY *key){ + + uint encryptionalgo; + u8 * pbssid; + struct sta_info *stainfo; + u8 bgroup = _FALSE; + u8 bgrouptkey = _FALSE;//can be remove later + u8 ret=_SUCCESS; + +_func_enter_; + + if (((key->KeyIndex & 0x80000000) == 0) && ((key->KeyIndex & 0x40000000) > 0)){ + + // It is invalid to clear bit 31 and set bit 30. If the miniport driver encounters this combination, + // it must fail the request and return NDIS_STATUS_INVALID_DATA. + RT_TRACE(_module_rtl871x_ioctl_set_c_,_drv_info_,("rtw_set_802_11_add_key: ((key->KeyIndex & 0x80000000) == 0)[=%d] ",(int)(key->KeyIndex & 0x80000000) == 0)); + RT_TRACE(_module_rtl871x_ioctl_set_c_,_drv_info_,("rtw_set_802_11_add_key:((key->KeyIndex & 0x40000000) > 0)[=%d]" , (int)(key->KeyIndex & 0x40000000) > 0)); + RT_TRACE(_module_rtl871x_ioctl_set_c_,_drv_info_,("rtw_set_802_11_add_key: key->KeyIndex=%d \n" ,(int)key->KeyIndex)); + ret= _FAIL; + goto exit; + } + + if(key->KeyIndex & 0x40000000) + { + // Pairwise key + + RT_TRACE(_module_rtl871x_ioctl_set_c_,_drv_err_,("OID_802_11_ADD_KEY: +++++ Pairwise key +++++\n")); + + pbssid=get_bssid(&padapter->mlmepriv); + stainfo=rtw_get_stainfo(&padapter->stapriv, pbssid); + + if((stainfo!=NULL)&&(padapter->securitypriv.dot11AuthAlgrthm==dot11AuthAlgrthm_8021X)){ + RT_TRACE(_module_rtl871x_ioctl_set_c_,_drv_err_,("OID_802_11_ADD_KEY:( stainfo!=NULL)&&(Adapter->securitypriv.dot11AuthAlgrthm==dot11AuthAlgrthm_8021X)\n")); + encryptionalgo=stainfo->dot118021XPrivacy; + } + else{ + RT_TRACE(_module_rtl871x_ioctl_set_c_,_drv_err_,("OID_802_11_ADD_KEY: stainfo==NULL)||(Adapter->securitypriv.dot11AuthAlgrthm!=dot11AuthAlgrthm_8021X)\n")); + encryptionalgo=padapter->securitypriv.dot11PrivacyAlgrthm; + } + + RT_TRACE(_module_rtl871x_ioctl_set_c_,_drv_err_,("rtw_set_802_11_add_key: (encryptionalgo ==%d)!\n",encryptionalgo )); + RT_TRACE(_module_rtl871x_ioctl_set_c_,_drv_err_,("rtw_set_802_11_add_key: (Adapter->securitypriv.dot11PrivacyAlgrthm ==%d)!\n",padapter->securitypriv.dot11PrivacyAlgrthm)); + RT_TRACE(_module_rtl871x_ioctl_set_c_,_drv_err_,("rtw_set_802_11_add_key: (Adapter->securitypriv.dot11AuthAlgrthm ==%d)!\n",padapter->securitypriv.dot11AuthAlgrthm)); + + if((stainfo!=NULL)){ + RT_TRACE(_module_rtl871x_ioctl_set_c_,_drv_err_,("rtw_set_802_11_add_key: (stainfo->dot118021XPrivacy ==%d)!\n", stainfo->dot118021XPrivacy)); + } + + if(key->KeyIndex & 0x000000FF){ + // The key index is specified in the lower 8 bits by values of zero to 255. + // The key index should be set to zero for a Pairwise key, and the driver should fail with + // NDIS_STATUS_INVALID_DATA if the lower 8 bits is not zero + RT_TRACE(_module_rtl871x_ioctl_set_c_,_drv_err_,(" key->KeyIndex & 0x000000FF.\n")); + ret= _FAIL; + goto exit; + } + + // check BSSID + if (IS_MAC_ADDRESS_BROADCAST(key->BSSID) == _TRUE){ + + RT_TRACE(_module_rtl871x_ioctl_set_c_,_drv_err_,("MacAddr_isBcst(key->BSSID)\n")); + ret= _FALSE; + goto exit; + } + + // Check key length for TKIP. + //if(encryptionAlgorithm == RT_ENC_TKIP_ENCRYPTION && key->KeyLength != 32) + if((encryptionalgo== _TKIP_)&& (key->KeyLength != 32)){ + RT_TRACE(_module_rtl871x_ioctl_set_c_,_drv_err_,("TKIP KeyLength:0x%x != 32\n", key->KeyLength)); + ret=_FAIL; + goto exit; + + } + + // Check key length for AES. + if((encryptionalgo== _AES_)&& (key->KeyLength != 16)) { + // For our supplicant, EAPPkt9x.vxd, cannot differentiate TKIP and AES case. + if(key->KeyLength == 32) { + key->KeyLength = 16; + } else { + ret= _FAIL; + goto exit; + } + } + + // Check key length for WEP. For NDTEST, 2005.01.27, by rcnjko. + if( (encryptionalgo== _WEP40_|| encryptionalgo== _WEP104_) && (key->KeyLength != 5 || key->KeyLength != 13)) { + RT_TRACE(_module_rtl871x_ioctl_set_c_,_drv_err_,("WEP KeyLength:0x%x != 5 or 13\n", key->KeyLength)); + ret=_FAIL; + goto exit; + } + + bgroup = _FALSE; + + // Check the pairwise key. Added by Annie, 2005-07-06. + RT_TRACE(_module_rtl871x_ioctl_set_c_,_drv_err_,("------------------------------------------\n")); + RT_TRACE(_module_rtl871x_ioctl_set_c_,_drv_err_,("[Pairwise Key set]\n")); + RT_TRACE(_module_rtl871x_ioctl_set_c_,_drv_err_,("------------------------------------------\n")); + RT_TRACE(_module_rtl871x_ioctl_set_c_,_drv_err_,("key index: 0x%8x(0x%8x)\n", key->KeyIndex,(key->KeyIndex&0x3))); + RT_TRACE(_module_rtl871x_ioctl_set_c_,_drv_err_,("key Length: %d\n", key->KeyLength)); + RT_TRACE(_module_rtl871x_ioctl_set_c_,_drv_err_,("------------------------------------------\n")); + + } + else + { + // Group key - KeyIndex(BIT30==0) + RT_TRACE(_module_rtl871x_ioctl_set_c_,_drv_err_,("OID_802_11_ADD_KEY: +++++ Group key +++++\n")); + + + // when add wep key through add key and didn't assigned encryption type before + if((padapter->securitypriv.ndisauthtype<=3)&&(padapter->securitypriv.dot118021XGrpPrivacy==0)) + { + RT_TRACE(_module_rtl871x_ioctl_set_c_,_drv_err_,("keylen=%d( Adapter->securitypriv.dot11PrivacyAlgrthm=%x )padapter->securitypriv.dot118021XGrpPrivacy(%x)\n", key->KeyLength,padapter->securitypriv.dot11PrivacyAlgrthm,padapter->securitypriv.dot118021XGrpPrivacy)); + + switch(key->KeyLength) + { + case 5: + padapter->securitypriv.dot11PrivacyAlgrthm=_WEP40_; + RT_TRACE(_module_rtl871x_ioctl_set_c_,_drv_err_,("Adapter->securitypriv.dot11PrivacyAlgrthm= %x key->KeyLength=%u\n", padapter->securitypriv.dot11PrivacyAlgrthm,key->KeyLength)); + break; + case 13: + padapter->securitypriv.dot11PrivacyAlgrthm=_WEP104_; + RT_TRACE(_module_rtl871x_ioctl_set_c_,_drv_err_,("Adapter->securitypriv.dot11PrivacyAlgrthm= %x key->KeyLength=%u\n", padapter->securitypriv.dot11PrivacyAlgrthm,key->KeyLength)); + break; + default: + padapter->securitypriv.dot11PrivacyAlgrthm=_NO_PRIVACY_; + RT_TRACE(_module_rtl871x_ioctl_set_c_,_drv_err_,("Adapter->securitypriv.dot11PrivacyAlgrthm= %x key->KeyLength=%u \n", padapter->securitypriv.dot11PrivacyAlgrthm,key->KeyLength)); + break; + } + + encryptionalgo=padapter->securitypriv.dot11PrivacyAlgrthm; + + RT_TRACE(_module_rtl871x_ioctl_set_c_,_drv_err_,(" Adapter->securitypriv.dot11PrivacyAlgrthm=%x\n", padapter->securitypriv.dot11PrivacyAlgrthm)); + + } + else + { + encryptionalgo=padapter->securitypriv.dot118021XGrpPrivacy; + RT_TRACE(_module_rtl871x_ioctl_set_c_,_drv_err_,("( Adapter->securitypriv.dot11PrivacyAlgrthm=%x )encryptionalgo(%x)=padapter->securitypriv.dot118021XGrpPrivacy(%x)keylen=%d\n", padapter->securitypriv.dot11PrivacyAlgrthm,encryptionalgo,padapter->securitypriv.dot118021XGrpPrivacy,key->KeyLength)); + + } + + if((check_fwstate(&padapter->mlmepriv, WIFI_ADHOC_STATE)==_TRUE) && (IS_MAC_ADDRESS_BROADCAST(key->BSSID) == _FALSE)) { + RT_TRACE(_module_rtl871x_ioctl_set_c_,_drv_err_,(" IBSS but BSSID is not Broadcast Address.\n")); + ret= _FAIL; + goto exit; + } + + // Check key length for TKIP + if((encryptionalgo== _TKIP_) && (key->KeyLength != 32)) { + + RT_TRACE(_module_rtl871x_ioctl_set_c_,_drv_err_,(" TKIP GTK KeyLength:%u != 32\n", key->KeyLength)); + ret= _FAIL; + goto exit; + + } else if(encryptionalgo== _AES_ && (key->KeyLength != 16 && key->KeyLength != 32) ) { + + // Check key length for AES + // For NDTEST, we allow keylen=32 in this case. 2005.01.27, by rcnjko. + RT_TRACE(_module_rtl871x_ioctl_set_c_,_drv_err_,("<=== SetInfo, OID_802_11_ADD_KEY: AES GTK KeyLength:%u != 16 or 32\n", key->KeyLength)); + ret= _FAIL; + goto exit; + } + + // Change the key length for EAPPkt9x.vxd. Added by Annie, 2005-11-03. + if((encryptionalgo== _AES_) && (key->KeyLength == 32) ) { + key->KeyLength = 16; + RT_TRACE(_module_rtl871x_ioctl_set_c_,_drv_err_,("AES key length changed: %u\n", key->KeyLength) ); + } + + if(key->KeyIndex & 0x8000000) {//error ??? 0x8000_0000 + bgrouptkey = _TRUE; + } + + if((check_fwstate(&padapter->mlmepriv, WIFI_ADHOC_STATE)==_TRUE)&&(check_fwstate(&padapter->mlmepriv, _FW_LINKED)==_TRUE)) + { + bgrouptkey = _TRUE; + } + + bgroup = _TRUE; + + RT_TRACE(_module_rtl871x_ioctl_set_c_,_drv_err_,("------------------------------------------\n") ); + RT_TRACE(_module_rtl871x_ioctl_set_c_,_drv_err_,("[Group Key set]\n") ); + RT_TRACE(_module_rtl871x_ioctl_set_c_,_drv_err_,("------------------------------------------\n")) ; + RT_TRACE(_module_rtl871x_ioctl_set_c_,_drv_err_,("key index: 0x%8x(0x%8x)\n", key->KeyIndex,(key->KeyIndex&0x3))); + RT_TRACE(_module_rtl871x_ioctl_set_c_,_drv_err_,("key Length: %d\n", key->KeyLength)) ; + RT_TRACE(_module_rtl871x_ioctl_set_c_,_drv_err_,("------------------------------------------\n")); + + } + + // If WEP encryption algorithm, just call rtw_set_802_11_add_wep(). + if((padapter->securitypriv.dot11AuthAlgrthm !=dot11AuthAlgrthm_8021X)&&(encryptionalgo== _WEP40_ || encryptionalgo== _WEP104_)) + { + u8 ret; + u32 keyindex; + u32 len = FIELD_OFFSET(NDIS_802_11_KEY, KeyMaterial) + key->KeyLength; + NDIS_802_11_WEP *wep = &padapter->securitypriv.ndiswep; + + RT_TRACE(_module_rtl871x_ioctl_set_c_,_drv_err_,("OID_802_11_ADD_KEY: +++++ WEP key +++++\n")); + + wep->Length = len; + keyindex = key->KeyIndex&0x7fffffff; + wep->KeyIndex = keyindex ; + wep->KeyLength = key->KeyLength; + + RT_TRACE(_module_rtl871x_ioctl_set_c_,_drv_err_,("OID_802_11_ADD_KEY:Before memcpy \n")); + + _rtw_memcpy(wep->KeyMaterial, key->KeyMaterial, key->KeyLength); + _rtw_memcpy(&(padapter->securitypriv.dot11DefKey[keyindex].skey[0]), key->KeyMaterial, key->KeyLength); + + padapter->securitypriv.dot11DefKeylen[keyindex]=key->KeyLength; + padapter->securitypriv.dot11PrivacyKeyIndex=keyindex; + + ret = rtw_set_802_11_add_wep(padapter, wep); + + goto exit; + + } + + if(key->KeyIndex & 0x20000000){ + // SetRSC + RT_TRACE(_module_rtl871x_ioctl_set_c_,_drv_err_,("OID_802_11_ADD_KEY: +++++ SetRSC+++++\n")); + if(bgroup == _TRUE) + { + NDIS_802_11_KEY_RSC keysrc=key->KeyRSC & 0x00FFFFFFFFFFFFULL; + _rtw_memcpy(&padapter->securitypriv.dot11Grprxpn, &keysrc, 8); + } + else + { + NDIS_802_11_KEY_RSC keysrc=key->KeyRSC & 0x00FFFFFFFFFFFFULL; + _rtw_memcpy(&padapter->securitypriv.dot11Grptxpn, &keysrc, 8); + } + + } + + // Indicate this key idx is used for TX + // Save the key in KeyMaterial + if(bgroup == _TRUE) // Group transmit key + { + int res; + + if(bgrouptkey == _TRUE) + { + padapter->securitypriv.dot118021XGrpKeyid=(u8)key->KeyIndex; + } + + if((key->KeyIndex&0x3) == 0){ + ret = _FAIL; + goto exit; + } + + _rtw_memset(&padapter->securitypriv.dot118021XGrpKey[(u8)((key->KeyIndex) & 0x03)], 0, 16); + _rtw_memset(&padapter->securitypriv.dot118021XGrptxmickey[(u8)((key->KeyIndex) & 0x03)], 0, 16); + _rtw_memset(&padapter->securitypriv.dot118021XGrprxmickey[(u8)((key->KeyIndex) & 0x03)], 0, 16); + + if((key->KeyIndex & 0x10000000)) + { + _rtw_memcpy(&padapter->securitypriv.dot118021XGrptxmickey[(u8)((key->KeyIndex) & 0x03)], key->KeyMaterial + 16, 8); + _rtw_memcpy(&padapter->securitypriv.dot118021XGrprxmickey[(u8)((key->KeyIndex) & 0x03)], key->KeyMaterial + 24, 8); + + RT_TRACE(_module_rtl871x_ioctl_set_c_,_drv_err_,("\n rtw_set_802_11_add_key:rx mic :0x%02x:0x%02x:0x%02x:0x%02x:0x%02x:0x%02x:0x%02x:0x%02x\n", + padapter->securitypriv.dot118021XGrprxmickey[(u8)((key->KeyIndex) & 0x03)].skey[0],padapter->securitypriv.dot118021XGrprxmickey[(u8)((key->KeyIndex-1) & 0x03)].skey[1], + padapter->securitypriv.dot118021XGrprxmickey[(u8)((key->KeyIndex) & 0x03)].skey[2],padapter->securitypriv.dot118021XGrprxmickey[(u8)((key->KeyIndex-1) & 0x03)].skey[3], + padapter->securitypriv.dot118021XGrprxmickey[(u8)((key->KeyIndex) & 0x03)].skey[4],padapter->securitypriv.dot118021XGrprxmickey[(u8)((key->KeyIndex-1) & 0x03)].skey[5], + padapter->securitypriv.dot118021XGrprxmickey[(u8)((key->KeyIndex) & 0x03)].skey[6],padapter->securitypriv.dot118021XGrprxmickey[(u8)((key->KeyIndex-1) & 0x03)].skey[7])); + RT_TRACE(_module_rtl871x_ioctl_set_c_,_drv_err_,("\n rtw_set_802_11_add_key:set Group mic key!!!!!!!!\n")); + + } + else + { + _rtw_memcpy(&padapter->securitypriv.dot118021XGrptxmickey[(u8)((key->KeyIndex) & 0x03)], key->KeyMaterial + 24, 8); + _rtw_memcpy(&padapter->securitypriv.dot118021XGrprxmickey[(u8)((key->KeyIndex) & 0x03)], key->KeyMaterial + 16, 8); + + RT_TRACE(_module_rtl871x_ioctl_set_c_,_drv_err_,("\n rtw_set_802_11_add_key:rx mic :0x%02x:0x%02x:0x%02x:0x%02x:0x%02x:0x%02x:0x%02x:0x%02x\n", + padapter->securitypriv.dot118021XGrprxmickey[(u8)((key->KeyIndex) & 0x03)].skey[0],padapter->securitypriv.dot118021XGrprxmickey[(u8)((key->KeyIndex-1) & 0x03)].skey[1], + padapter->securitypriv.dot118021XGrprxmickey[(u8)((key->KeyIndex) & 0x03)].skey[2],padapter->securitypriv.dot118021XGrprxmickey[(u8)((key->KeyIndex-1) & 0x03)].skey[3], + padapter->securitypriv.dot118021XGrprxmickey[(u8)((key->KeyIndex) & 0x03)].skey[4],padapter->securitypriv.dot118021XGrprxmickey[(u8)((key->KeyIndex-1) & 0x03)].skey[5], + padapter->securitypriv.dot118021XGrprxmickey[(u8)((key->KeyIndex) & 0x03)].skey[6],padapter->securitypriv.dot118021XGrprxmickey[(u8)((key->KeyIndex-1) & 0x03)].skey[7])); + RT_TRACE(_module_rtl871x_ioctl_set_c_,_drv_err_,("\n rtw_set_802_11_add_key:set Group mic key!!!!!!!!\n")); + + } + + //set group key by index + _rtw_memcpy(&padapter->securitypriv.dot118021XGrpKey[(u8)((key->KeyIndex) & 0x03)], key->KeyMaterial, key->KeyLength); + + key->KeyIndex=key->KeyIndex & 0x03; + + padapter->securitypriv.binstallGrpkey=_TRUE; + + padapter->securitypriv.bcheck_grpkey=_FALSE; + + RT_TRACE(_module_rtl871x_ioctl_set_c_,_drv_err_,("reset group key")); + + res=rtw_set_key(padapter,&padapter->securitypriv, key->KeyIndex, 1); + + if(res==_FAIL) + ret= _FAIL; + + goto exit; + + } + else // Pairwise Key + { + u8 res; + + pbssid=get_bssid(&padapter->mlmepriv); + stainfo=rtw_get_stainfo(&padapter->stapriv , pbssid ); + + if(stainfo!=NULL) + { + _rtw_memset( &stainfo->dot118021x_UncstKey, 0, 16);// clear keybuffer + + _rtw_memcpy(&stainfo->dot118021x_UncstKey, key->KeyMaterial, 16); + + if(encryptionalgo== _TKIP_) + { + padapter->securitypriv.busetkipkey=_FALSE; + + //_set_timer(&padapter->securitypriv.tkip_timer, 50); + + RT_TRACE(_module_rtl871x_ioctl_set_c_,_drv_err_,("\n ==========_set_timer\n")); + + // if TKIP, save the Receive/Transmit MIC key in KeyMaterial[128-255] + if((key->KeyIndex & 0x10000000)){ + _rtw_memcpy(&stainfo->dot11tkiptxmickey, key->KeyMaterial + 16, 8); + _rtw_memcpy(&stainfo->dot11tkiprxmickey, key->KeyMaterial + 24, 8); + + } else { + _rtw_memcpy(&stainfo->dot11tkiptxmickey, key->KeyMaterial + 24, 8); + _rtw_memcpy(&stainfo->dot11tkiprxmickey, key->KeyMaterial + 16, 8); + + } + + } + else if(encryptionalgo == _AES_) + { + + } + + + //Set key to CAM through H2C command + if(bgrouptkey)//never go to here + { + res=rtw_setstakey_cmd(padapter, (unsigned char *)stainfo, _FALSE); + RT_TRACE(_module_rtl871x_ioctl_set_c_,_drv_err_,("\n rtw_set_802_11_add_key:rtw_setstakey_cmd(group)\n")); + } + else{ + res=rtw_setstakey_cmd(padapter, (unsigned char *)stainfo, _TRUE); + RT_TRACE(_module_rtl871x_ioctl_set_c_,_drv_err_,("\n rtw_set_802_11_add_key:rtw_setstakey_cmd(unicast)\n")); + } + + if(res ==_FALSE) + ret= _FAIL; + + } + + } + +exit: + +_func_exit_; + + return ret; +} + +u8 rtw_set_802_11_remove_key(_adapter* padapter, NDIS_802_11_REMOVE_KEY *key){ + + uint encryptionalgo; + u8 * pbssid; + struct sta_info *stainfo; + u8 bgroup = (key->KeyIndex & 0x4000000) > 0 ? _FALSE: _TRUE; + u8 keyIndex = (u8)key->KeyIndex & 0x03; + u8 ret=_SUCCESS; + +_func_enter_; + + if ((key->KeyIndex & 0xbffffffc) > 0) { + ret=_FAIL; + goto exit; + } + + if (bgroup == _TRUE) { + encryptionalgo= padapter->securitypriv.dot118021XGrpPrivacy; + // clear group key by index + //NdisZeroMemory(Adapter->MgntInfo.SecurityInfo.KeyBuf[keyIndex], MAX_WEP_KEY_LEN); + //Adapter->MgntInfo.SecurityInfo.KeyLen[keyIndex] = 0; + + _rtw_memset(&padapter->securitypriv.dot118021XGrpKey[keyIndex], 0, 16); + + //! \todo Send a H2C Command to Firmware for removing this Key in CAM Entry. + + } else { + + pbssid=get_bssid(&padapter->mlmepriv); + stainfo=rtw_get_stainfo(&padapter->stapriv , pbssid ); + if(stainfo !=NULL){ + encryptionalgo=stainfo->dot118021XPrivacy; + + // clear key by BSSID + _rtw_memset(&stainfo->dot118021x_UncstKey, 0, 16); + + //! \todo Send a H2C Command to Firmware for disable this Key in CAM Entry. + + } + else{ + ret= _FAIL; + goto exit; + } + } + +exit: + +_func_exit_; + + return _TRUE; + +} + +/* +* rtw_get_cur_max_rate - +* @adapter: pointer to _adapter structure +* +* Return 0 or 100Kbps +*/ +u16 rtw_get_cur_max_rate(_adapter *adapter) +{ + int i = 0; + u8 *p; + u16 rate = 0, max_rate = 0; + struct mlme_ext_priv *pmlmeext = &adapter->mlmeextpriv; + struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info); + struct registry_priv *pregistrypriv = &adapter->registrypriv; + struct mlme_priv *pmlmepriv = &adapter->mlmepriv; + WLAN_BSSID_EX *pcur_bss = &pmlmepriv->cur_network.network; +#ifdef CONFIG_80211N_HT + struct rtw_ieee80211_ht_cap *pht_capie; + u8 rf_type = 0; + u8 bw_40MHz=0, short_GI_20=0, short_GI_40=0; + u16 mcs_rate=0; + u32 ht_ielen = 0; +#endif + +#ifdef CONFIG_MP_INCLUDED + if (adapter->registrypriv.mp_mode == 1) + { + if (check_fwstate(pmlmepriv, WIFI_MP_STATE) == _TRUE) + return 0; + } +#endif + + if((check_fwstate(pmlmepriv, _FW_LINKED) != _TRUE) + && (check_fwstate(pmlmepriv, WIFI_ADHOC_MASTER_STATE) != _TRUE)) + return 0; + +#ifdef CONFIG_80211N_HT + if (pmlmeext->cur_wireless_mode & (WIRELESS_11_24N|WIRELESS_11_5N)) { + p = rtw_get_ie(&pcur_bss->IEs[12], _HT_CAPABILITY_IE_, &ht_ielen, pcur_bss->IELength-12); + if(p && ht_ielen>0) + { + pht_capie = (struct rtw_ieee80211_ht_cap *)(p+2); + + _rtw_memcpy(&mcs_rate , pht_capie->supp_mcs_set, 2); + + //bw_40MHz = (pht_capie->cap_info&IEEE80211_HT_CAP_SUP_WIDTH) ? 1:0; + //cur_bwmod is updated by beacon, pmlmeinfo is updated by association response + bw_40MHz = (pmlmeext->cur_bwmode && (HT_INFO_HT_PARAM_REC_TRANS_CHNL_WIDTH & pmlmeinfo->HT_info.infos[0])) ? 1:0; + + //short_GI = (pht_capie->cap_info&(IEEE80211_HT_CAP_SGI_20|IEEE80211_HT_CAP_SGI_40)) ? 1:0; + short_GI_20 = (pmlmeinfo->HT_caps.u.HT_cap_element.HT_caps_info&IEEE80211_HT_CAP_SGI_20) ? 1:0; + short_GI_40 = (pmlmeinfo->HT_caps.u.HT_cap_element.HT_caps_info&IEEE80211_HT_CAP_SGI_40) ? 1:0; + + rtw_hal_get_hwreg(adapter, HW_VAR_RF_TYPE, (u8 *)(&rf_type)); + max_rate = rtw_mcs_rate( + rf_type, + bw_40MHz & (pregistrypriv->cbw40_enable), + short_GI_20, + short_GI_40, + pmlmeinfo->HT_caps.u.HT_cap_element.MCS_rate + ); + } + } + else +#endif //CONFIG_80211N_HT + { + while( (pcur_bss->SupportedRates[i]!=0) && (pcur_bss->SupportedRates[i]!=0xFF)) + { + rate = pcur_bss->SupportedRates[i]&0x7F; + if(rate>max_rate) + max_rate = rate; + i++; + } + + max_rate = max_rate*10/2; + } + + return max_rate; +} + +/* +* rtw_set_scan_mode - +* @adapter: pointer to _adapter structure +* @scan_mode: +* +* Return _SUCCESS or _FAIL +*/ +int rtw_set_scan_mode(_adapter *adapter, RT_SCAN_TYPE scan_mode) +{ + if(scan_mode != SCAN_ACTIVE && scan_mode != SCAN_PASSIVE) + return _FAIL; + + adapter->mlmepriv.scan_mode = scan_mode; + + return _SUCCESS; +} + +/* +* rtw_set_channel_plan - +* @adapter: pointer to _adapter structure +* @channel_plan: +* +* Return _SUCCESS or _FAIL +*/ +int rtw_set_channel_plan(_adapter *adapter, u8 channel_plan) +{ + struct registry_priv *pregistrypriv = &adapter->registrypriv; + struct mlme_priv *pmlmepriv = &adapter->mlmepriv; + + //handle by cmd_thread to sync with scan operation + return rtw_set_chplan_cmd(adapter, channel_plan, 1); +} + +/* +* rtw_set_country - +* @adapter: pointer to _adapter structure +* @country_code: string of country code +* +* Return _SUCCESS or _FAIL +*/ +int rtw_set_country(_adapter *adapter, const char *country_code) +{ + int channel_plan = RT_CHANNEL_DOMAIN_WORLD_WIDE_5G; + + DBG_871X("%s country_code:%s\n", __func__, country_code); + + //TODO: should have a table to match country code and RT_CHANNEL_DOMAIN + //TODO: should consider 2-character and 3-character country code + if(0 == strcmp(country_code, "US")) + channel_plan = RT_CHANNEL_DOMAIN_FCC; + else if(0 == strcmp(country_code, "EU")) + channel_plan = RT_CHANNEL_DOMAIN_ETSI; + else if(0 == strcmp(country_code, "JP")) + channel_plan = RT_CHANNEL_DOMAIN_MKK; + else if(0 == strcmp(country_code, "CN")) + channel_plan = RT_CHANNEL_DOMAIN_CHINA; + else + DBG_871X("%s unknown country_code:%s\n", __FUNCTION__, country_code); + + return rtw_set_channel_plan(adapter, channel_plan); +} + +/* +* rtw_set_band - +* @adapter: pointer to _adapter structure +* @band: band to set +* +* Return _SUCCESS or _FAIL +*/ +int rtw_set_band(_adapter *adapter, enum _BAND band) +{ + if (rtw_band_valid(band)) { + DBG_871X(FUNC_ADPT_FMT" band:%d\n", FUNC_ADPT_ARG(adapter), band); + adapter->setband = band; + return _SUCCESS; + } + + DBG_871X_LEVEL(_drv_always_, FUNC_ADPT_FMT" band:%d fail\n", FUNC_ADPT_ARG(adapter), band); + return _FAIL; +} --- linux-raspi2-4.2.0.orig/drivers/net/wireless/rtl8192cu/core/rtw_iol.c +++ linux-raspi2-4.2.0/drivers/net/wireless/rtl8192cu/core/rtw_iol.c @@ -0,0 +1,262 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved. + * + * 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 + * published by the Free Software Foundation. + * + * 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 Street, Fifth Floor, Boston, MA 02110, USA + * + * + ******************************************************************************/ + +#include + +#ifdef CONFIG_IOL +struct xmit_frame *rtw_IOL_accquire_xmit_frame(ADAPTER *adapter) +{ + struct xmit_frame *xmit_frame; + struct xmit_buf *xmitbuf; + struct pkt_attrib *pattrib; + struct xmit_priv *pxmitpriv = &(adapter->xmitpriv); + +#if 1 + if ((xmit_frame = rtw_alloc_xmitframe(pxmitpriv)) == NULL) + { + DBG_871X("%s rtw_alloc_xmitframe return null\n", __FUNCTION__); + goto exit; + } + + if ((xmitbuf = rtw_alloc_xmitbuf(pxmitpriv)) == NULL) + { + DBG_871X("%s rtw_alloc_xmitbuf return null\n", __FUNCTION__); + rtw_free_xmitframe(pxmitpriv, xmit_frame); + xmit_frame=NULL; + goto exit; + } + + xmit_frame->frame_tag = MGNT_FRAMETAG; + xmit_frame->pxmitbuf = xmitbuf; + xmit_frame->buf_addr = xmitbuf->pbuf; + xmitbuf->priv_data = xmit_frame; + + pattrib = &xmit_frame->attrib; + update_mgntframe_attrib(adapter, pattrib); + pattrib->qsel = 0x10; + pattrib->pktlen = pattrib->last_txcmdsz = 0; + +#else + if ((xmit_frame = alloc_mgtxmitframe(pxmitpriv)) == NULL) + { + DBG_871X("%s alloc_mgtxmitframe return null\n", __FUNCTION__); + } + else { + pattrib = &xmit_frame->attrib; + update_mgntframe_attrib(adapter, pattrib); + pattrib->qsel = 0x10; + pattrib->pktlen = pattrib->last_txcmdsz = 0; + } +#endif + +exit: + return xmit_frame; +} + + +int rtw_IOL_append_cmds(struct xmit_frame *xmit_frame, u8 *IOL_cmds, u32 cmd_len) +{ + struct pkt_attrib *pattrib = &xmit_frame->attrib; + u16 buf_offset; + u32 ori_len; + +//Todo: bulkout without this offset +#ifdef CONFIG_USB_HCI + buf_offset = TXDESC_OFFSET; +#else + buf_offset = 0; +#endif + + ori_len = buf_offset+pattrib->pktlen; + + //check if the io_buf can accommodate new cmds + if(ori_len + cmd_len + 8 > MAX_XMITBUF_SZ) { + DBG_871X("%s %u is large than MAX_XMITBUF_SZ:%u, can't accommodate new cmds\n", __FUNCTION__ + , ori_len + cmd_len + 8, MAX_XMITBUF_SZ); + return _FAIL; + } + + _rtw_memcpy(xmit_frame->buf_addr + buf_offset + pattrib->pktlen, IOL_cmds, cmd_len); + pattrib->pktlen += cmd_len; + pattrib->last_txcmdsz += cmd_len; + + //DBG_871X("%s ori:%u + cmd_len:%u = %u\n", __FUNCTION__, ori_len, cmd_len, buf_offset+pattrib->pktlen); + + return _SUCCESS; +} + +int rtw_IOL_append_LLT_cmd(struct xmit_frame *xmit_frame, u8 page_boundary) +{ + IOL_CMD cmd = {0x0, IOL_CMD_LLT, 0x0, 0x0}; + + RTW_PUT_BE32((u8*)&cmd.value, (u32)page_boundary); + + return rtw_IOL_append_cmds(xmit_frame, (u8*)&cmd, 8); +} + +int _rtw_IOL_append_WB_cmd(struct xmit_frame *xmit_frame, u16 addr, u8 value) +{ + IOL_CMD cmd = {0x0, IOL_CMD_WB_REG, 0x0, 0x0}; + + RTW_PUT_BE16((u8*)&cmd.address, (u16)addr); + RTW_PUT_BE32((u8*)&cmd.value, (u32)value); + + return rtw_IOL_append_cmds(xmit_frame, (u8*)&cmd, 8); +} + +int _rtw_IOL_append_WW_cmd(struct xmit_frame *xmit_frame, u16 addr, u16 value) +{ + IOL_CMD cmd = {0x0, IOL_CMD_WW_REG, 0x0, 0x0}; + + RTW_PUT_BE16((u8*)&cmd.address, (u16)addr); + RTW_PUT_BE32((u8*)&cmd.value, (u32)value); + + return rtw_IOL_append_cmds(xmit_frame, (u8*)&cmd, 8); +} + +int _rtw_IOL_append_WD_cmd(struct xmit_frame *xmit_frame, u16 addr, u32 value) +{ + IOL_CMD cmd = {0x0, IOL_CMD_WD_REG, 0x0, 0x0}; + u8* pos = (u8 *)&cmd; + + RTW_PUT_BE16((u8*)&cmd.address, (u16)addr); + RTW_PUT_BE32((u8*)&cmd.value, (u32)value); + + return rtw_IOL_append_cmds(xmit_frame, (u8*)&cmd, 8); +} + +#ifdef DBG_IO +int dbg_rtw_IOL_append_WB_cmd(struct xmit_frame *xmit_frame, u16 addr, u8 value, const char *caller, const int line) +{ + if (match_write_sniff_ranges(addr, 1)) + DBG_871X("DBG_IO %s:%d IOL_WB(0x%04x, 0x%02x)\n", caller, line, addr, value); + + return _rtw_IOL_append_WB_cmd(xmit_frame, addr, value); +} + +int dbg_rtw_IOL_append_WW_cmd(struct xmit_frame *xmit_frame, u16 addr, u16 value, const char *caller, const int line) +{ + if (match_write_sniff_ranges(addr, 2)) + DBG_871X("DBG_IO %s:%d IOL_WW(0x%04x, 0x%04x)\n", caller, line, addr, value); + + return _rtw_IOL_append_WW_cmd(xmit_frame, addr, value); +} + +int dbg_rtw_IOL_append_WD_cmd(struct xmit_frame *xmit_frame, u16 addr, u32 value, const char *caller, const int line) +{ + if (match_write_sniff_ranges(addr, 4)) + DBG_871X("DBG_IO %s:%d IOL_WD(0x%04x, 0x%08x)\n", caller, line, addr, value); + + return _rtw_IOL_append_WD_cmd(xmit_frame, addr, value); +} +#endif + +int rtw_IOL_append_DELAY_US_cmd(struct xmit_frame *xmit_frame, u16 us) +{ + IOL_CMD cmd = {0x0, IOL_CMD_DELAY_US, 0x0, 0x0}; + + RTW_PUT_BE32((u8*)&cmd.value, (u32)us); + + //DBG_871X("%s %u\n", __FUNCTION__, us); + + return rtw_IOL_append_cmds(xmit_frame, (u8*)&cmd, 8); +} + +int rtw_IOL_append_DELAY_MS_cmd(struct xmit_frame *xmit_frame, u16 ms) +{ + IOL_CMD cmd = {0x0, IOL_CMD_DELAY_MS, 0x0, 0x0}; + + RTW_PUT_BE32((u8*)&cmd.value, (u32)ms); + + //DBG_871X("%s %u\n", __FUNCTION__, ms); + + return rtw_IOL_append_cmds(xmit_frame, (u8*)&cmd, 8); +} + +int rtw_IOL_append_END_cmd(struct xmit_frame *xmit_frame) +{ + struct pkt_attrib *pattrib = &xmit_frame->attrib; + u16 buf_offset; + u32 ori_len; + IOL_CMD end_cmd = {0x0, IOL_CMD_END, 0x0, 0x0}; + +//Todo: bulkout without this offset +#ifdef CONFIG_USB_HCI + buf_offset = TXDESC_OFFSET; +#else + buf_offset = 0; +#endif + + ori_len = buf_offset+pattrib->pktlen; + + //check if the io_buf can accommodate new cmds + if(ori_len + 8 > MAX_XMITBUF_SZ) { + DBG_871X("%s %u is large than MAX_XMITBUF_SZ:%u, can't accommodate end cmd\n", __FUNCTION__ + , ori_len + 8, MAX_XMITBUF_SZ); + return _FAIL; + } + + _rtw_memcpy(xmit_frame->buf_addr + buf_offset + pattrib->pktlen, (u8*)&end_cmd, 8); + pattrib->pktlen += 8; + pattrib->last_txcmdsz += 8; + + //DBG_871X("%s ori:%u + 8 = %u\n", __FUNCTION__ , ori_len, buf_offset+pattrib->pktlen); + + return _SUCCESS; +} + +int rtw_IOL_exec_cmds_sync(ADAPTER *adapter, struct xmit_frame *xmit_frame, u32 max_wating_ms) +{ + return rtw_hal_iol_cmd(adapter, xmit_frame, max_wating_ms); +} + +int rtw_IOL_exec_cmd_array_sync(PADAPTER adapter, u8 *IOL_cmds, u32 cmd_num, u32 max_wating_ms) +{ + struct xmit_frame *xmit_frame; + + if((xmit_frame=rtw_IOL_accquire_xmit_frame(adapter)) == NULL) + return _FAIL; + + if(rtw_IOL_append_cmds(xmit_frame, IOL_cmds, cmd_num<<3) == _FAIL) + return _FAIL; + + return rtw_IOL_exec_cmds_sync(adapter, xmit_frame, max_wating_ms); +} + +int rtw_IOL_exec_empty_cmds_sync(ADAPTER *adapter, u32 max_wating_ms) +{ + IOL_CMD end_cmd = {0x0, IOL_CMD_END, 0x0, 0x0}; + return rtw_IOL_exec_cmd_array_sync(adapter, (u8*)&end_cmd, 1, max_wating_ms); +} + +bool rtw_IOL_applied(ADAPTER *adapter) +{ + if(adapter->registrypriv.force_iol) + return _TRUE; + +#ifdef CONFIG_USB_HCI + if(!adapter_to_dvobj(adapter)->ishighspeed) + return _TRUE; +#endif + + return _FALSE; +} + +#endif //CONFIG_IOL --- linux-raspi2-4.2.0.orig/drivers/net/wireless/rtl8192cu/core/rtw_mlme.c +++ linux-raspi2-4.2.0/drivers/net/wireless/rtl8192cu/core/rtw_mlme.c @@ -0,0 +1,3966 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved. + * + * 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 + * published by the Free Software Foundation. + * + * 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 Street, Fifth Floor, Boston, MA 02110, USA + * + * + ******************************************************************************/ +#define _RTW_MLME_C_ + + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +extern void indicate_wx_scan_complete_event(_adapter *padapter); +extern u8 rtw_do_join(_adapter * padapter); + +#ifdef CONFIG_DISABLE_MCS13TO15 +extern unsigned char MCS_rate_2R_MCS13TO15_OFF[16]; +extern unsigned char MCS_rate_2R[16]; +#else //CONFIG_DISABLE_MCS13TO15 +extern unsigned char MCS_rate_2R[16]; +#endif //CONFIG_DISABLE_MCS13TO15 +extern unsigned char MCS_rate_1R[16]; + +sint _rtw_init_mlme_priv (_adapter* padapter) +{ + sint i; + u8 *pbuf; + struct wlan_network *pnetwork; + struct mlme_priv *pmlmepriv = &padapter->mlmepriv; + sint res = _SUCCESS; + +_func_enter_; + + // We don't need to memset padapter->XXX to zero, because adapter is allocated by rtw_zvmalloc(). + //_rtw_memset((u8 *)pmlmepriv, 0, sizeof(struct mlme_priv)); + + pmlmepriv->nic_hdl = (u8 *)padapter; + + pmlmepriv->pscanned = NULL; + pmlmepriv->fw_state = 0; + pmlmepriv->cur_network.network.InfrastructureMode = Ndis802_11AutoUnknown; + pmlmepriv->scan_mode=SCAN_ACTIVE;// 1: active, 0: pasive. Maybe someday we should rename this varable to "active_mode" (Jeff) + + _rtw_spinlock_init(&(pmlmepriv->lock)); + _rtw_init_queue(&(pmlmepriv->free_bss_pool)); + _rtw_init_queue(&(pmlmepriv->scanned_queue)); + + set_scanned_network_val(pmlmepriv, 0); + + _rtw_memset(&pmlmepriv->assoc_ssid,0,sizeof(NDIS_802_11_SSID)); + + pbuf = rtw_zvmalloc(MAX_BSS_CNT * (sizeof(struct wlan_network))); + + if (pbuf == NULL){ + res=_FAIL; + goto exit; + } + pmlmepriv->free_bss_buf = pbuf; + + pnetwork = (struct wlan_network *)pbuf; + + for(i = 0; i < MAX_BSS_CNT; i++) + { + _rtw_init_listhead(&(pnetwork->list)); + + rtw_list_insert_tail(&(pnetwork->list), &(pmlmepriv->free_bss_pool.queue)); + + pnetwork++; + } + + //allocate DMA-able/Non-Page memory for cmd_buf and rsp_buf + + rtw_clear_scan_deny(padapter); + + rtw_init_mlme_timer(padapter); + +exit: + +_func_exit_; + + return res; +} + +void rtw_mfree_mlme_priv_lock (struct mlme_priv *pmlmepriv); +void rtw_mfree_mlme_priv_lock (struct mlme_priv *pmlmepriv) +{ + _rtw_spinlock_free(&pmlmepriv->lock); + _rtw_spinlock_free(&(pmlmepriv->free_bss_pool.lock)); + _rtw_spinlock_free(&(pmlmepriv->scanned_queue.lock)); +} + +static void rtw_free_mlme_ie_data(u8 **ppie, u32 *plen) +{ + if(*ppie) + { + rtw_mfree(*ppie, *plen); + *plen = 0; + *ppie=NULL; + } +} + +void rtw_free_mlme_priv_ie_data(struct mlme_priv *pmlmepriv) +{ +#if defined (CONFIG_AP_MODE) && defined (CONFIG_NATIVEAP_MLME) + rtw_buf_free(&pmlmepriv->assoc_req, &pmlmepriv->assoc_req_len); + rtw_buf_free(&pmlmepriv->assoc_rsp, &pmlmepriv->assoc_rsp_len); + rtw_free_mlme_ie_data(&pmlmepriv->wps_beacon_ie, &pmlmepriv->wps_beacon_ie_len); + rtw_free_mlme_ie_data(&pmlmepriv->wps_probe_req_ie, &pmlmepriv->wps_probe_req_ie_len); + rtw_free_mlme_ie_data(&pmlmepriv->wps_probe_resp_ie, &pmlmepriv->wps_probe_resp_ie_len); + rtw_free_mlme_ie_data(&pmlmepriv->wps_assoc_resp_ie, &pmlmepriv->wps_assoc_resp_ie_len); + + rtw_free_mlme_ie_data(&pmlmepriv->p2p_beacon_ie, &pmlmepriv->p2p_beacon_ie_len); + rtw_free_mlme_ie_data(&pmlmepriv->p2p_probe_req_ie, &pmlmepriv->p2p_probe_req_ie_len); + rtw_free_mlme_ie_data(&pmlmepriv->p2p_probe_resp_ie, &pmlmepriv->p2p_probe_resp_ie_len); + rtw_free_mlme_ie_data(&pmlmepriv->p2p_go_probe_resp_ie, &pmlmepriv->p2p_go_probe_resp_ie_len); + rtw_free_mlme_ie_data(&pmlmepriv->p2p_assoc_req_ie, &pmlmepriv->p2p_assoc_req_ie_len); +#endif + +#if defined(CONFIG_WFD) && defined(CONFIG_IOCTL_CFG80211) + rtw_free_mlme_ie_data(&pmlmepriv->wfd_beacon_ie, &pmlmepriv->wfd_beacon_ie_len); + rtw_free_mlme_ie_data(&pmlmepriv->wfd_probe_req_ie, &pmlmepriv->wfd_probe_req_ie_len); + rtw_free_mlme_ie_data(&pmlmepriv->wfd_probe_resp_ie, &pmlmepriv->wfd_probe_resp_ie_len); + rtw_free_mlme_ie_data(&pmlmepriv->wfd_go_probe_resp_ie, &pmlmepriv->wfd_go_probe_resp_ie_len); + rtw_free_mlme_ie_data(&pmlmepriv->wfd_assoc_req_ie, &pmlmepriv->wfd_assoc_req_ie_len); +#endif + +} + +void _rtw_free_mlme_priv (struct mlme_priv *pmlmepriv) +{ +_func_enter_; + + rtw_free_mlme_priv_ie_data(pmlmepriv); + + if(pmlmepriv){ + rtw_mfree_mlme_priv_lock (pmlmepriv); + + if (pmlmepriv->free_bss_buf) { + rtw_vmfree(pmlmepriv->free_bss_buf, MAX_BSS_CNT * sizeof(struct wlan_network)); + } + } +_func_exit_; +} + +sint _rtw_enqueue_network(_queue *queue, struct wlan_network *pnetwork) +{ + _irqL irqL; + +_func_enter_; + + if (pnetwork == NULL) + goto exit; + + _enter_critical_bh(&queue->lock, &irqL); + + rtw_list_insert_tail(&pnetwork->list, &queue->queue); + + _exit_critical_bh(&queue->lock, &irqL); + +exit: + +_func_exit_; + + return _SUCCESS; +} + +struct wlan_network *_rtw_dequeue_network(_queue *queue) +{ + _irqL irqL; + + struct wlan_network *pnetwork; + +_func_enter_; + + _enter_critical_bh(&queue->lock, &irqL); + + if (_rtw_queue_empty(queue) == _TRUE) + + pnetwork = NULL; + + else + { + pnetwork = LIST_CONTAINOR(get_next(&queue->queue), struct wlan_network, list); + + rtw_list_delete(&(pnetwork->list)); + } + + _exit_critical_bh(&queue->lock, &irqL); + +_func_exit_; + + return pnetwork; +} + +struct wlan_network *_rtw_alloc_network(struct mlme_priv *pmlmepriv )//(_queue *free_queue) +{ + _irqL irqL; + struct wlan_network *pnetwork; + _queue *free_queue = &pmlmepriv->free_bss_pool; + _list* plist = NULL; + +_func_enter_; + + _enter_critical_bh(&free_queue->lock, &irqL); + + if (_rtw_queue_empty(free_queue) == _TRUE) { + pnetwork=NULL; + goto exit; + } + plist = get_next(&(free_queue->queue)); + + pnetwork = LIST_CONTAINOR(plist , struct wlan_network, list); + + rtw_list_delete(&pnetwork->list); + + RT_TRACE(_module_rtl871x_mlme_c_, _drv_info_, ("_rtw_alloc_network: ptr=%p\n", plist)); + pnetwork->network_type = 0; + pnetwork->fixed = _FALSE; + pnetwork->last_scanned = rtw_get_current_time(); + pnetwork->aid=0; + pnetwork->join_res=0; + + pmlmepriv->num_of_scanned ++; + +exit: + _exit_critical_bh(&free_queue->lock, &irqL); + +_func_exit_; + + return pnetwork; +} + +void _rtw_free_network(struct mlme_priv *pmlmepriv ,struct wlan_network *pnetwork, u8 isfreeall) +{ + u32 curr_time, delta_time; + u32 lifetime = SCANQUEUE_LIFETIME; + _irqL irqL; + _queue *free_queue = &(pmlmepriv->free_bss_pool); + +_func_enter_; + + if (pnetwork == NULL) + goto exit; + + if (pnetwork->fixed == _TRUE) + goto exit; + + curr_time = rtw_get_current_time(); + + if ( (check_fwstate(pmlmepriv, WIFI_ADHOC_MASTER_STATE)==_TRUE ) || + (check_fwstate(pmlmepriv, WIFI_ADHOC_STATE)==_TRUE ) ) + lifetime = 1; + + if(!isfreeall) + { +#ifdef PLATFORM_WINDOWS + + delta_time = (curr_time -pnetwork->last_scanned)/10; + + if(delta_time < lifetime*1000000)// unit:usec + { + goto exit; + } + +#endif + +#ifdef PLATFORM_LINUX + + delta_time = (curr_time -pnetwork->last_scanned)/HZ; + + if(delta_time < lifetime)// unit:sec + { + goto exit; + } + +#endif + +#ifdef PLATFORM_FREEBSD + //i think needs to check again + delta_time = (curr_time -pnetwork->last_scanned)/hz; + + if(delta_time < lifetime)// unit:sec + { + goto exit; + } + +#endif + } + + _enter_critical_bh(&free_queue->lock, &irqL); + + rtw_list_delete(&(pnetwork->list)); + + rtw_list_insert_tail(&(pnetwork->list),&(free_queue->queue)); + + pmlmepriv->num_of_scanned --; + + + //DBG_871X("_rtw_free_network:SSID=%s\n", pnetwork->network.Ssid.Ssid); + + _exit_critical_bh(&free_queue->lock, &irqL); + +exit: + +_func_exit_; + +} + +void _rtw_free_network_nolock(struct mlme_priv *pmlmepriv, struct wlan_network *pnetwork) +{ + + _queue *free_queue = &(pmlmepriv->free_bss_pool); + +_func_enter_; + + if (pnetwork == NULL) + goto exit; + + if (pnetwork->fixed == _TRUE) + goto exit; + + //_enter_critical(&free_queue->lock, &irqL); + + rtw_list_delete(&(pnetwork->list)); + + rtw_list_insert_tail(&(pnetwork->list), get_list_head(free_queue)); + + pmlmepriv->num_of_scanned --; + + //_exit_critical(&free_queue->lock, &irqL); + +exit: + +_func_exit_; + +} + + +/* + return the wlan_network with the matching addr + + Shall be calle under atomic context... to avoid possible racing condition... +*/ +struct wlan_network *_rtw_find_network(_queue *scanned_queue, u8 *addr) +{ + + //_irqL irqL; + _list *phead, *plist; + struct wlan_network *pnetwork = NULL; + u8 zero_addr[ETH_ALEN] = {0,0,0,0,0,0}; + +_func_enter_; + + if(_rtw_memcmp(zero_addr, addr, ETH_ALEN)){ + pnetwork=NULL; + goto exit; + } + + //_enter_critical_bh(&scanned_queue->lock, &irqL); + + phead = get_list_head(scanned_queue); + plist = get_next(phead); + + while (plist != phead) + { + pnetwork = LIST_CONTAINOR(plist, struct wlan_network ,list); + + if (_rtw_memcmp(addr, pnetwork->network.MacAddress, ETH_ALEN) == _TRUE) + break; + + plist = get_next(plist); + } + + if(plist == phead) + pnetwork = NULL; + + //_exit_critical_bh(&scanned_queue->lock, &irqL); + +exit: + +_func_exit_; + + return pnetwork; + +} + + +void _rtw_free_network_queue(_adapter *padapter, u8 isfreeall) +{ + _irqL irqL; + _list *phead, *plist; + struct wlan_network *pnetwork; + struct mlme_priv* pmlmepriv = &padapter->mlmepriv; + _queue *scanned_queue = &pmlmepriv->scanned_queue; + +_func_enter_; + + + _enter_critical_bh(&scanned_queue->lock, &irqL); + + phead = get_list_head(scanned_queue); + plist = get_next(phead); + + while (rtw_end_of_queue_search(phead, plist) == _FALSE) + { + + pnetwork = LIST_CONTAINOR(plist, struct wlan_network, list); + + plist = get_next(plist); + + _rtw_free_network(pmlmepriv,pnetwork, isfreeall); + + } + + _exit_critical_bh(&scanned_queue->lock, &irqL); + +_func_exit_; + +} + + + + +sint rtw_if_up(_adapter *padapter) { + + sint res; +_func_enter_; + + if( padapter->bDriverStopped || padapter->bSurpriseRemoved || + (check_fwstate(&padapter->mlmepriv, _FW_LINKED)== _FALSE)){ + RT_TRACE(_module_rtl871x_mlme_c_, _drv_info_, ("rtw_if_up:bDriverStopped(%d) OR bSurpriseRemoved(%d)", padapter->bDriverStopped, padapter->bSurpriseRemoved)); + res=_FALSE; + } + else + res= _TRUE; + +_func_exit_; + return res; +} + + +void rtw_generate_random_ibss(u8* pibss) +{ + u32 curtime = rtw_get_current_time(); + +_func_enter_; + pibss[0] = 0x02; //in ad-hoc mode bit1 must set to 1 + pibss[1] = 0x11; + pibss[2] = 0x87; + pibss[3] = (u8)(curtime & 0xff) ;//p[0]; + pibss[4] = (u8)((curtime>>8) & 0xff) ;//p[1]; + pibss[5] = (u8)((curtime>>16) & 0xff) ;//p[2]; +_func_exit_; + return; +} + +u8 *rtw_get_capability_from_ie(u8 *ie) +{ + return (ie + 8 + 2); +} + + +u16 rtw_get_capability(WLAN_BSSID_EX *bss) +{ + u16 val; +_func_enter_; + + _rtw_memcpy((u8 *)&val, rtw_get_capability_from_ie(bss->IEs), 2); + +_func_exit_; + return le16_to_cpu(val); +} + +u8 *rtw_get_timestampe_from_ie(u8 *ie) +{ + return (ie + 0); +} + +u8 *rtw_get_beacon_interval_from_ie(u8 *ie) +{ + return (ie + 8); +} + + +int rtw_init_mlme_priv (_adapter *padapter)//(struct mlme_priv *pmlmepriv) +{ + int res; +_func_enter_; + res = _rtw_init_mlme_priv(padapter);// (pmlmepriv); +_func_exit_; + return res; +} + +void rtw_free_mlme_priv (struct mlme_priv *pmlmepriv) +{ +_func_enter_; + RT_TRACE(_module_rtl871x_mlme_c_,_drv_err_,("rtw_free_mlme_priv\n")); + _rtw_free_mlme_priv (pmlmepriv); +_func_exit_; +} + +int rtw_enqueue_network(_queue *queue, struct wlan_network *pnetwork); +int rtw_enqueue_network(_queue *queue, struct wlan_network *pnetwork) +{ + int res; +_func_enter_; + res = _rtw_enqueue_network(queue, pnetwork); +_func_exit_; + return res; +} + + +#ifndef PLATFORM_FREEBSD //Baron +static struct wlan_network *rtw_dequeue_network(_queue *queue) +{ + struct wlan_network *pnetwork; +_func_enter_; + pnetwork = _rtw_dequeue_network(queue); +_func_exit_; + return pnetwork; +} +#endif //PLATFORM_FREEBSD + +struct wlan_network *rtw_alloc_network(struct mlme_priv *pmlmepriv ); +struct wlan_network *rtw_alloc_network(struct mlme_priv *pmlmepriv )//(_queue *free_queue) +{ + struct wlan_network *pnetwork; +_func_enter_; + pnetwork = _rtw_alloc_network(pmlmepriv); +_func_exit_; + return pnetwork; +} + +void rtw_free_network(struct mlme_priv *pmlmepriv, struct wlan_network *pnetwork, u8 is_freeall); +void rtw_free_network(struct mlme_priv *pmlmepriv, struct wlan_network *pnetwork, u8 is_freeall)//(struct wlan_network *pnetwork, _queue *free_queue) +{ +_func_enter_; + RT_TRACE(_module_rtl871x_mlme_c_,_drv_err_,("rtw_free_network==> ssid = %s \n\n" , pnetwork->network.Ssid.Ssid)); + _rtw_free_network(pmlmepriv, pnetwork, is_freeall); +_func_exit_; +} + +void rtw_free_network_nolock(struct mlme_priv *pmlmepriv, struct wlan_network *pnetwork ); +void rtw_free_network_nolock(struct mlme_priv *pmlmepriv, struct wlan_network *pnetwork ) +{ +_func_enter_; + //RT_TRACE(_module_rtl871x_mlme_c_,_drv_err_,("rtw_free_network==> ssid = %s \n\n" , pnetwork->network.Ssid.Ssid)); + _rtw_free_network_nolock(pmlmepriv, pnetwork); +_func_exit_; +} + + +void rtw_free_network_queue(_adapter* dev, u8 isfreeall) +{ +_func_enter_; + _rtw_free_network_queue(dev, isfreeall); +_func_exit_; +} + +/* + return the wlan_network with the matching addr + + Shall be calle under atomic context... to avoid possible racing condition... +*/ +struct wlan_network *rtw_find_network(_queue *scanned_queue, u8 *addr) +{ + struct wlan_network *pnetwork = _rtw_find_network(scanned_queue, addr); + + return pnetwork; +} + +int rtw_is_same_ibss(_adapter *adapter, struct wlan_network *pnetwork) +{ + int ret=_TRUE; + struct security_priv *psecuritypriv = &adapter->securitypriv; + + if ( (psecuritypriv->dot11PrivacyAlgrthm != _NO_PRIVACY_ ) && + ( pnetwork->network.Privacy == 0 ) ) + { + ret=_FALSE; + } + else if((psecuritypriv->dot11PrivacyAlgrthm == _NO_PRIVACY_ ) && + ( pnetwork->network.Privacy == 1 ) ) + { + ret=_FALSE; + } + else + { + ret=_TRUE; + } + + return ret; + +} + +inline int is_same_ess(WLAN_BSSID_EX *a, WLAN_BSSID_EX *b); +inline int is_same_ess(WLAN_BSSID_EX *a, WLAN_BSSID_EX *b) +{ + //RT_TRACE(_module_rtl871x_mlme_c_,_drv_err_,("(%s,%d)(%s,%d)\n", + // a->Ssid.Ssid,a->Ssid.SsidLength,b->Ssid.Ssid,b->Ssid.SsidLength)); + return (a->Ssid.SsidLength == b->Ssid.SsidLength) + && _rtw_memcmp(a->Ssid.Ssid, b->Ssid.Ssid, a->Ssid.SsidLength)==_TRUE; +} + +int is_same_network(WLAN_BSSID_EX *src, WLAN_BSSID_EX *dst) +{ + u16 s_cap, d_cap; + +_func_enter_; + +#ifdef PLATFORM_OS_XP + if ( ((uint)dst) <= 0x7fffffff || + ((uint)src) <= 0x7fffffff || + ((uint)&s_cap) <= 0x7fffffff || + ((uint)&d_cap) <= 0x7fffffff) + { + RT_TRACE(_module_rtl871x_mlme_c_,_drv_err_,("\n@@@@ error address of dst\n")); + + KeBugCheckEx(0x87110000, (ULONG_PTR)dst, (ULONG_PTR)src,(ULONG_PTR)&s_cap, (ULONG_PTR)&d_cap); + + return _FALSE; + } +#endif + + + _rtw_memcpy((u8 *)&s_cap, rtw_get_capability_from_ie(src->IEs), 2); + _rtw_memcpy((u8 *)&d_cap, rtw_get_capability_from_ie(dst->IEs), 2); + + + s_cap = le16_to_cpu(s_cap); + d_cap = le16_to_cpu(d_cap); + +_func_exit_; + + return ((src->Ssid.SsidLength == dst->Ssid.SsidLength) && + // (src->Configuration.DSConfig == dst->Configuration.DSConfig) && + ( (_rtw_memcmp(src->MacAddress, dst->MacAddress, ETH_ALEN)) == _TRUE) && + ( (_rtw_memcmp(src->Ssid.Ssid, dst->Ssid.Ssid, src->Ssid.SsidLength)) == _TRUE) && + ((s_cap & WLAN_CAPABILITY_IBSS) == + (d_cap & WLAN_CAPABILITY_IBSS)) && + ((s_cap & WLAN_CAPABILITY_BSS) == + (d_cap & WLAN_CAPABILITY_BSS))); + +} + +struct wlan_network * rtw_get_oldest_wlan_network(_queue *scanned_queue) +{ + _list *plist, *phead; + + + struct wlan_network *pwlan = NULL; + struct wlan_network *oldest = NULL; +_func_enter_; + phead = get_list_head(scanned_queue); + + plist = get_next(phead); + + while(1) + { + + if (rtw_end_of_queue_search(phead,plist)== _TRUE) + break; + + pwlan= LIST_CONTAINOR(plist, struct wlan_network, list); + + if(pwlan->fixed!=_TRUE) + { + if (oldest == NULL ||time_after(oldest->last_scanned, pwlan->last_scanned)) + oldest = pwlan; + } + + plist = get_next(plist); + } +_func_exit_; + return oldest; + +} + +static void update_network(WLAN_BSSID_EX *dst, WLAN_BSSID_EX *src, + _adapter * padapter, bool update_ie) +{ + u8 ss_ori = dst->PhyInfo.SignalStrength; + u8 sq_ori = dst->PhyInfo.SignalQuality; + long rssi_ori = dst->Rssi; + + u8 ss_smp = src->PhyInfo.SignalStrength; + u8 sq_smp = src->PhyInfo.SignalQuality; + long rssi_smp = src->Rssi; + + u8 ss_final; + u8 sq_final; + long rssi_final; + +_func_enter_; + +#ifdef CONFIG_ANTENNA_DIVERSITY + rtw_hal_antdiv_rssi_compared(padapter, dst, src); //this will update src.Rssi, need consider again +#endif + + #if defined(DBG_RX_SIGNAL_DISPLAY_SSID_MONITORED) && 1 + if(strcmp(dst->Ssid.Ssid, DBG_RX_SIGNAL_DISPLAY_SSID_MONITORED) == 0) { + DBG_871X(FUNC_ADPT_FMT" %s("MAC_FMT", ch%u) ss_ori:%3u, sq_ori:%3u, rssi_ori:%3ld, ss_smp:%3u, sq_smp:%3u, rssi_smp:%3ld\n" + , FUNC_ADPT_ARG(padapter) + , src->Ssid.Ssid, MAC_ARG(src->MacAddress), src->Configuration.DSConfig + ,ss_ori, sq_ori, rssi_ori + ,ss_smp, sq_smp, rssi_smp + ); + } + #endif + + /* The rule below is 1/5 for sample value, 4/5 for history value */ + if (check_fwstate(&padapter->mlmepriv, _FW_LINKED) && is_same_network(&(padapter->mlmepriv.cur_network.network), src)) { + /* Take the recvpriv's value for the connected AP*/ + ss_final = padapter->recvpriv.signal_strength; + sq_final = padapter->recvpriv.signal_qual; + /* the rssi value here is undecorated, and will be used for antenna diversity */ + if(sq_smp != 101) /* from the right channel */ + rssi_final = (src->Rssi+dst->Rssi*4)/5; + else + rssi_final = rssi_ori; + } + else { + if(sq_smp != 101) { /* from the right channel */ + ss_final = ((u32)(src->PhyInfo.SignalStrength)+(u32)(dst->PhyInfo.SignalStrength)*4)/5; + sq_final = ((u32)(src->PhyInfo.SignalQuality)+(u32)(dst->PhyInfo.SignalQuality)*4)/5; + rssi_final = (src->Rssi+dst->Rssi*4)/5; + } else { + /* bss info not receving from the right channel, use the original RX signal infos */ + ss_final = dst->PhyInfo.SignalStrength; + sq_final = dst->PhyInfo.SignalQuality; + rssi_final = dst->Rssi; + } + + } + + if (update_ie) + _rtw_memcpy((u8 *)dst, (u8 *)src, get_WLAN_BSSID_EX_sz(src)); + + dst->PhyInfo.SignalStrength = ss_final; + dst->PhyInfo.SignalQuality = sq_final; + dst->Rssi = rssi_final; + + #if defined(DBG_RX_SIGNAL_DISPLAY_SSID_MONITORED) && 1 + if(strcmp(dst->Ssid.Ssid, DBG_RX_SIGNAL_DISPLAY_SSID_MONITORED) == 0) { + DBG_871X(FUNC_ADPT_FMT" %s("MAC_FMT"), SignalStrength:%u, SignalQuality:%u, RawRSSI:%ld\n" + , FUNC_ADPT_ARG(padapter) + , dst->Ssid.Ssid, MAC_ARG(dst->MacAddress), dst->PhyInfo.SignalStrength, dst->PhyInfo.SignalQuality, dst->Rssi); + } + #endif + +#if 0 // old codes, may be useful one day... +// DBG_871X("update_network: rssi=0x%lx dst->Rssi=%d ,dst->Rssi=0x%lx , src->Rssi=0x%lx",(dst->Rssi+src->Rssi)/2,dst->Rssi,dst->Rssi,src->Rssi); + if (check_fwstate(&padapter->mlmepriv, _FW_LINKED) && is_same_network(&(padapter->mlmepriv.cur_network.network), src)) + { + + //DBG_871X("b:ssid=%s update_network: src->rssi=0x%d padapter->recvpriv.ui_rssi=%d\n",src->Ssid.Ssid,src->Rssi,padapter->recvpriv.signal); + if(padapter->recvpriv.signal_qual_data.total_num++ >= PHY_LINKQUALITY_SLID_WIN_MAX) + { + padapter->recvpriv.signal_qual_data.total_num = PHY_LINKQUALITY_SLID_WIN_MAX; + last_evm = padapter->recvpriv.signal_qual_data.elements[padapter->recvpriv.signal_qual_data.index]; + padapter->recvpriv.signal_qual_data.total_val -= last_evm; + } + padapter->recvpriv.signal_qual_data.total_val += query_rx_pwr_percentage(src->Rssi); + + padapter->recvpriv.signal_qual_data.elements[padapter->recvpriv.signal_qual_data.index++] = query_rx_pwr_percentage(src->Rssi); + if(padapter->recvpriv.signal_qual_data.index >= PHY_LINKQUALITY_SLID_WIN_MAX) + padapter->recvpriv.signal_qual_data.index = 0; + + //DBG_871X("Total SQ=%d pattrib->signal_qual= %d\n", padapter->recvpriv.signal_qual_data.total_val, src->Rssi); + + // <1> Showed on UI for user,in percentage. + tmpVal = padapter->recvpriv.signal_qual_data.total_val/padapter->recvpriv.signal_qual_data.total_num; + padapter->recvpriv.signal=(u8)tmpVal;//Link quality + + src->Rssi= translate_percentage_to_dbm(padapter->recvpriv.signal) ; + } + else{ +// DBG_871X("ELSE:ssid=%s update_network: src->rssi=0x%d dst->rssi=%d\n",src->Ssid.Ssid,src->Rssi,dst->Rssi); + src->Rssi=(src->Rssi +dst->Rssi)/2;//dBM + } + +// DBG_871X("a:update_network: src->rssi=0x%d padapter->recvpriv.ui_rssi=%d\n",src->Rssi,padapter->recvpriv.signal); + +#endif + +_func_exit_; +} + +static void update_current_network(_adapter *adapter, WLAN_BSSID_EX *pnetwork) +{ + struct mlme_priv *pmlmepriv = &(adapter->mlmepriv); + +_func_enter_; + +#ifdef PLATFORM_OS_XP + if ((unsigned long)(&(pmlmepriv->cur_network.network)) < 0x7ffffff) + { + KeBugCheckEx(0x87111c1c, (ULONG_PTR)(&(pmlmepriv->cur_network.network)), 0, 0,0); + } +#endif + + if ( (check_fwstate(pmlmepriv, _FW_LINKED)== _TRUE) && (is_same_network(&(pmlmepriv->cur_network.network), pnetwork))) + { + //RT_TRACE(_module_rtl871x_mlme_c_,_drv_err_,"Same Network\n"); + + //if(pmlmepriv->cur_network.network.IELength<= pnetwork->IELength) + { + update_network(&(pmlmepriv->cur_network.network), pnetwork,adapter, _TRUE); + rtw_update_protection(adapter, (pmlmepriv->cur_network.network.IEs) + sizeof (NDIS_802_11_FIXED_IEs), + pmlmepriv->cur_network.network.IELength); + } + } + +_func_exit_; + +} + + +/* + +Caller must hold pmlmepriv->lock first. + + +*/ +void rtw_update_scanned_network(_adapter *adapter, WLAN_BSSID_EX *target) +{ + _irqL irqL; + _list *plist, *phead; + ULONG bssid_ex_sz; + struct mlme_priv *pmlmepriv = &(adapter->mlmepriv); + _queue *queue = &(pmlmepriv->scanned_queue); + struct wlan_network *pnetwork = NULL; + struct wlan_network *oldest = NULL; + +_func_enter_; + + _enter_critical_bh(&queue->lock, &irqL); + phead = get_list_head(queue); + plist = get_next(phead); + + while(1) + { + if (rtw_end_of_queue_search(phead,plist)== _TRUE) + break; + + pnetwork = LIST_CONTAINOR(plist, struct wlan_network, list); + + if ((unsigned long)(pnetwork) < 0x7ffffff) + { +#ifdef PLATFORM_OS_XP + KeBugCheckEx(0x87111c1c, (ULONG_PTR)pnetwork, 0, 0,0); +#endif + } + + if (is_same_network(&(pnetwork->network), target)) + break; + + if ((oldest == ((struct wlan_network *)0)) || + time_after(oldest->last_scanned, pnetwork->last_scanned)) + oldest = pnetwork; + + plist = get_next(plist); + + } + + + /* If we didn't find a match, then get a new network slot to initialize + * with this beacon's information */ + if (rtw_end_of_queue_search(phead,plist)== _TRUE) { + + if (_rtw_queue_empty(&(pmlmepriv->free_bss_pool)) == _TRUE) { + /* If there are no more slots, expire the oldest */ + //list_del_init(&oldest->list); + pnetwork = oldest; + +#ifdef CONFIG_ANTENNA_DIVERSITY + //target->PhyInfo.Optimum_antenna = pHalData->CurAntenna;//optimum_antenna=>For antenna diversity + rtw_hal_get_def_var(adapter, HAL_DEF_CURRENT_ANTENNA, &(target->PhyInfo.Optimum_antenna)); +#endif + _rtw_memcpy(&(pnetwork->network), target, get_WLAN_BSSID_EX_sz(target)); + //pnetwork->last_scanned = rtw_get_current_time(); + // variable initialize + pnetwork->fixed = _FALSE; + pnetwork->last_scanned = rtw_get_current_time(); + + pnetwork->network_type = 0; + pnetwork->aid=0; + pnetwork->join_res=0; + + /* bss info not receving from the right channel */ + if (pnetwork->network.PhyInfo.SignalQuality == 101) + pnetwork->network.PhyInfo.SignalQuality = 0; + } + else { + /* Otherwise just pull from the free list */ + + pnetwork = rtw_alloc_network(pmlmepriv); // will update scan_time + + if(pnetwork==NULL){ + RT_TRACE(_module_rtl871x_mlme_c_,_drv_err_,("\n\n\nsomething wrong here\n\n\n")); + goto exit; + } + + bssid_ex_sz = get_WLAN_BSSID_EX_sz(target); + target->Length = bssid_ex_sz; +#ifdef CONFIG_ANTENNA_DIVERSITY + //target->PhyInfo.Optimum_antenna = pHalData->CurAntenna; + rtw_hal_get_def_var(adapter, HAL_DEF_CURRENT_ANTENNA, &(target->PhyInfo.Optimum_antenna)); +#endif + _rtw_memcpy(&(pnetwork->network), target, bssid_ex_sz ); + + pnetwork->last_scanned = rtw_get_current_time(); + + /* bss info not receving from the right channel */ + if (pnetwork->network.PhyInfo.SignalQuality == 101) + pnetwork->network.PhyInfo.SignalQuality = 0; + + rtw_list_insert_tail(&(pnetwork->list),&(queue->queue)); + + } + } + else { + /* we have an entry and we are going to update it. But this entry may + * be already expired. In this case we do the same as we found a new + * net and call the new_net handler + */ + bool update_ie = _TRUE; + + pnetwork->last_scanned = rtw_get_current_time(); + + //target.Reserved[0]==1, means that scaned network is a bcn frame. + if((pnetwork->network.IELength>target->IELength) && (target->Reserved[0]==1)) + update_ie = _FALSE; + + update_network(&(pnetwork->network), target,adapter, update_ie); + } + +exit: + _exit_critical_bh(&queue->lock, &irqL); + +_func_exit_; +} + +void rtw_add_network(_adapter *adapter, WLAN_BSSID_EX *pnetwork); +void rtw_add_network(_adapter *adapter, WLAN_BSSID_EX *pnetwork) +{ + _irqL irqL; + struct mlme_priv *pmlmepriv = &(((_adapter *)adapter)->mlmepriv); + //_queue *queue = &(pmlmepriv->scanned_queue); + +_func_enter_; + + //_enter_critical_bh(&queue->lock, &irqL); + + #if defined(CONFIG_P2P) && defined(CONFIG_P2P_REMOVE_GROUP_INFO) + rtw_WLAN_BSSID_EX_remove_p2p_attr(pnetwork, P2P_ATTR_GROUP_INFO); + #endif + + update_current_network(adapter, pnetwork); + + rtw_update_scanned_network(adapter, pnetwork); + + //_exit_critical_bh(&queue->lock, &irqL); + +_func_exit_; +} + +//select the desired network based on the capability of the (i)bss. +// check items: (1) security +// (2) network_type +// (3) WMM +// (4) HT +// (5) others +int rtw_is_desired_network(_adapter *adapter, struct wlan_network *pnetwork); +int rtw_is_desired_network(_adapter *adapter, struct wlan_network *pnetwork) +{ + struct security_priv *psecuritypriv = &adapter->securitypriv; + struct mlme_priv *pmlmepriv = &adapter->mlmepriv; + u32 desired_encmode; + u32 privacy; + + //u8 wps_ie[512]; + uint wps_ielen; + + int bselected = _TRUE; + + desired_encmode = psecuritypriv->ndisencryptstatus; + privacy = pnetwork->network.Privacy; + + if(check_fwstate(pmlmepriv, WIFI_UNDER_WPS)) + { + if(rtw_get_wps_ie(pnetwork->network.IEs+_FIXED_IE_LENGTH_, pnetwork->network.IELength-_FIXED_IE_LENGTH_, NULL, &wps_ielen)!=NULL) + { + return _TRUE; + } + else + { + return _FALSE; + } + } + if (adapter->registrypriv.wifi_spec == 1) //for correct flow of 8021X to do.... + { + u8 *p=NULL; + uint ie_len=0; + + if ((desired_encmode == Ndis802_11EncryptionDisabled) && (privacy != 0)) + bselected = _FALSE; + + if ( psecuritypriv->ndisauthtype == Ndis802_11AuthModeWPA2PSK) { + p = rtw_get_ie(pnetwork->network.IEs + _BEACON_IE_OFFSET_, _RSN_IE_2_, &ie_len, (pnetwork->network.IELength - _BEACON_IE_OFFSET_)); + if (p && ie_len>0) { + bselected = _TRUE; + } else { + bselected = _FALSE; + } + } + } + + + if ((desired_encmode != Ndis802_11EncryptionDisabled) && (privacy == 0)) { + DBG_871X("desired_encmode: %d, privacy: %d\n", desired_encmode, privacy); + bselected = _FALSE; + } + + if(check_fwstate(pmlmepriv, WIFI_ADHOC_STATE) == _TRUE) + { + if(pnetwork->network.InfrastructureMode != pmlmepriv->cur_network.network.InfrastructureMode) + bselected = _FALSE; + } + + + return bselected; +} + +/* TODO: Perry : For Power Management */ +void rtw_atimdone_event_callback(_adapter *adapter , u8 *pbuf) +{ + +_func_enter_; + RT_TRACE(_module_rtl871x_mlme_c_,_drv_err_,("receive atimdone_evet\n")); +_func_exit_; + return; +} + + +void rtw_survey_event_callback(_adapter *adapter, u8 *pbuf) +{ + _irqL irqL; + u32 len; + WLAN_BSSID_EX *pnetwork; + struct mlme_priv *pmlmepriv = &(adapter->mlmepriv); + +_func_enter_; + + pnetwork = (WLAN_BSSID_EX *)pbuf; + + RT_TRACE(_module_rtl871x_mlme_c_,_drv_info_,("rtw_survey_event_callback, ssid=%s\n", pnetwork->Ssid.Ssid)); + +#ifdef CONFIG_RTL8712 + //endian_convert + pnetwork->Length = le32_to_cpu(pnetwork->Length); + pnetwork->Ssid.SsidLength = le32_to_cpu(pnetwork->Ssid.SsidLength); + pnetwork->Privacy =le32_to_cpu( pnetwork->Privacy); + pnetwork->Rssi = le32_to_cpu(pnetwork->Rssi); + pnetwork->NetworkTypeInUse =le32_to_cpu(pnetwork->NetworkTypeInUse); + pnetwork->Configuration.ATIMWindow = le32_to_cpu(pnetwork->Configuration.ATIMWindow); + pnetwork->Configuration.BeaconPeriod = le32_to_cpu(pnetwork->Configuration.BeaconPeriod); + pnetwork->Configuration.DSConfig =le32_to_cpu(pnetwork->Configuration.DSConfig); + pnetwork->Configuration.FHConfig.DwellTime=le32_to_cpu(pnetwork->Configuration.FHConfig.DwellTime); + pnetwork->Configuration.FHConfig.HopPattern=le32_to_cpu(pnetwork->Configuration.FHConfig.HopPattern); + pnetwork->Configuration.FHConfig.HopSet=le32_to_cpu(pnetwork->Configuration.FHConfig.HopSet); + pnetwork->Configuration.FHConfig.Length=le32_to_cpu(pnetwork->Configuration.FHConfig.Length); + pnetwork->Configuration.Length = le32_to_cpu(pnetwork->Configuration.Length); + pnetwork->InfrastructureMode = le32_to_cpu(pnetwork->InfrastructureMode); + pnetwork->IELength = le32_to_cpu(pnetwork->IELength); +#endif + + len = get_WLAN_BSSID_EX_sz(pnetwork); + if(len > (sizeof(WLAN_BSSID_EX))) + { + RT_TRACE(_module_rtl871x_mlme_c_,_drv_err_,("\n ****rtw_survey_event_callback: return a wrong bss ***\n")); + return; + } + + + _enter_critical_bh(&pmlmepriv->lock, &irqL); + + // update IBSS_network 's timestamp + if ((check_fwstate(pmlmepriv, WIFI_ADHOC_MASTER_STATE)) == _TRUE) + { + //RT_TRACE(_module_rtl871x_mlme_c_,_drv_err_,"rtw_survey_event_callback : WIFI_ADHOC_MASTER_STATE \n\n"); + if(_rtw_memcmp(&(pmlmepriv->cur_network.network.MacAddress), pnetwork->MacAddress, ETH_ALEN)) + { + struct wlan_network* ibss_wlan = NULL; + _irqL irqL; + + _rtw_memcpy(pmlmepriv->cur_network.network.IEs, pnetwork->IEs, 8); + _enter_critical_bh(&(pmlmepriv->scanned_queue.lock), &irqL); + ibss_wlan = rtw_find_network(&pmlmepriv->scanned_queue, pnetwork->MacAddress); + if(ibss_wlan) + { + _rtw_memcpy(ibss_wlan->network.IEs , pnetwork->IEs, 8); + _exit_critical_bh(&(pmlmepriv->scanned_queue.lock), &irqL); + goto exit; + } + _exit_critical_bh(&(pmlmepriv->scanned_queue.lock), &irqL); + } + } + + // lock pmlmepriv->lock when you accessing network_q + if ((check_fwstate(pmlmepriv, _FW_UNDER_LINKING)) == _FALSE) + { + if( pnetwork->Ssid.Ssid[0] == 0 ) + { + pnetwork->Ssid.SsidLength = 0; + } + rtw_add_network(adapter, pnetwork); + } + +exit: + + _exit_critical_bh(&pmlmepriv->lock, &irqL); + +_func_exit_; + + return; +} + + + +void rtw_surveydone_event_callback(_adapter *adapter, u8 *pbuf) +{ + _irqL irqL; + u8 timer_cancelled = _FALSE; + struct mlme_priv *pmlmepriv = &(adapter->mlmepriv); + +#ifdef CONFIG_MLME_EXT + + mlmeext_surveydone_event_callback(adapter); + +#endif + +_func_enter_; + + _enter_critical_bh(&pmlmepriv->lock, &irqL); + if(pmlmepriv->wps_probe_req_ie) + { + u32 free_len = pmlmepriv->wps_probe_req_ie_len; + pmlmepriv->wps_probe_req_ie_len = 0; + rtw_mfree(pmlmepriv->wps_probe_req_ie, free_len); + pmlmepriv->wps_probe_req_ie = NULL; + } + + RT_TRACE(_module_rtl871x_mlme_c_,_drv_info_,("rtw_surveydone_event_callback: fw_state:%x\n\n", get_fwstate(pmlmepriv))); + + if (check_fwstate(pmlmepriv,_FW_UNDER_SURVEY)) + { + //u8 timer_cancelled; + + timer_cancelled = _TRUE; + //_cancel_timer(&pmlmepriv->scan_to_timer, &timer_cancelled); + + _clr_fwstate_(pmlmepriv, _FW_UNDER_SURVEY); + } + else { + + RT_TRACE(_module_rtl871x_mlme_c_,_drv_err_,("nic status =%x, survey done event comes too late!\n", get_fwstate(pmlmepriv))); + } + _exit_critical_bh(&pmlmepriv->lock, &irqL); + + if(timer_cancelled) + _cancel_timer(&pmlmepriv->scan_to_timer, &timer_cancelled); + + + _enter_critical_bh(&pmlmepriv->lock, &irqL); + + #ifdef CONFIG_NEW_SIGNAL_STAT_PROCESS + rtw_set_signal_stat_timer(&adapter->recvpriv); + #endif + + if(pmlmepriv->to_join == _TRUE) + { + if((check_fwstate(pmlmepriv, WIFI_ADHOC_STATE)==_TRUE) ) + { + if(check_fwstate(pmlmepriv, _FW_LINKED)==_FALSE) + { + set_fwstate(pmlmepriv, _FW_UNDER_LINKING); + + if(rtw_select_and_join_from_scanned_queue(pmlmepriv)==_SUCCESS) + { + _set_timer(&pmlmepriv->assoc_timer, MAX_JOIN_TIMEOUT ); + } + else + { + WLAN_BSSID_EX *pdev_network = &(adapter->registrypriv.dev_network); + u8 *pibss = adapter->registrypriv.dev_network.MacAddress; + + //pmlmepriv->fw_state ^= _FW_UNDER_SURVEY;//because don't set assoc_timer + _clr_fwstate_(pmlmepriv, _FW_UNDER_SURVEY); + + RT_TRACE(_module_rtl871x_mlme_c_,_drv_err_,("switching to adhoc master\n")); + + _rtw_memset(&pdev_network->Ssid, 0, sizeof(NDIS_802_11_SSID)); + _rtw_memcpy(&pdev_network->Ssid, &pmlmepriv->assoc_ssid, sizeof(NDIS_802_11_SSID)); + + rtw_update_registrypriv_dev_network(adapter); + rtw_generate_random_ibss(pibss); + + pmlmepriv->fw_state = WIFI_ADHOC_MASTER_STATE; + + if(rtw_createbss_cmd(adapter)!=_SUCCESS) + { + RT_TRACE(_module_rtl871x_mlme_c_,_drv_err_,("Error=>rtw_createbss_cmd status FAIL\n")); + } + + pmlmepriv->to_join = _FALSE; + } + } + } + else + { + int s_ret; + set_fwstate(pmlmepriv, _FW_UNDER_LINKING); + pmlmepriv->to_join = _FALSE; + if(_SUCCESS == (s_ret=rtw_select_and_join_from_scanned_queue(pmlmepriv))) + { + _set_timer(&pmlmepriv->assoc_timer, MAX_JOIN_TIMEOUT); + } + else if(s_ret == 2)//there is no need to wait for join + { + _clr_fwstate_(pmlmepriv, _FW_UNDER_LINKING); + rtw_indicate_connect(adapter); + } + else + { + DBG_871X("try_to_join, but select scanning queue fail, to_roaming:%d\n", rtw_to_roaming(adapter)); + #ifdef CONFIG_LAYER2_ROAMING + if (rtw_to_roaming(adapter) != 0) { + if( --pmlmepriv->to_roaming == 0 + || _SUCCESS != rtw_sitesurvey_cmd(adapter, &pmlmepriv->assoc_ssid, 1, NULL, 0) + ) { + rtw_set_roaming(adapter, 0); +#ifdef CONFIG_INTEL_WIDI + if(adapter->mlmepriv.widi_state == INTEL_WIDI_STATE_ROAMING) + { + _rtw_memset(pmlmepriv->sa_ext, 0x00, L2SDTA_SERVICE_VE_LEN); + intel_widi_wk_cmd(adapter, INTEL_WIDI_LISTEN_WK, NULL); + DBG_871X("change to widi listen\n"); + } +#endif // CONFIG_INTEL_WIDI + rtw_free_assoc_resources(adapter, 1); + rtw_indicate_disconnect(adapter); + } else { + pmlmepriv->to_join = _TRUE; + } + } + #endif + _clr_fwstate_(pmlmepriv, _FW_UNDER_LINKING); + } + } + } + + indicate_wx_scan_complete_event(adapter); + //DBG_871X("scan complete in %dms\n",rtw_get_passing_time_ms(pmlmepriv->scan_start_time)); + + _exit_critical_bh(&pmlmepriv->lock, &irqL); + +#ifdef CONFIG_P2P_PS + if (check_fwstate(pmlmepriv, _FW_LINKED) == _TRUE) { + p2p_ps_wk_cmd(adapter, P2P_PS_SCAN_DONE, 0); + } +#endif // CONFIG_P2P_PS + + rtw_os_xmit_schedule(adapter); +#ifdef CONFIG_CONCURRENT_MODE + rtw_os_xmit_schedule(adapter->pbuddy_adapter); +#endif +#ifdef CONFIG_DUALMAC_CONCURRENT + dc_resume_xmit(adapter); +#endif + +#ifdef CONFIG_DRVEXT_MODULE_WSC + drvext_surveydone_callback(&adapter->drvextpriv); +#endif + +#ifdef DBG_CONFIG_ERROR_DETECT +#ifdef CONFIG_INTEL_WIDI + if (adapter->mlmepriv.widi_state == INTEL_WIDI_STATE_NONE) +#endif + { + struct mlme_ext_priv *pmlmeext = &adapter->mlmeextpriv; + if(pmlmeext->sitesurvey_res.bss_cnt == 0){ + rtw_hal_sreset_reset(adapter); + } + } +#endif + +#ifdef CONFIG_IOCTL_CFG80211 + rtw_cfg80211_surveydone_event_callback(adapter); +#endif //CONFIG_IOCTL_CFG80211 + +_func_exit_; + +} + +void rtw_dummy_event_callback(_adapter *adapter , u8 *pbuf) +{ + +} + +void rtw_fwdbg_event_callback(_adapter *adapter , u8 *pbuf) +{ + +} + +static void free_scanqueue(struct mlme_priv *pmlmepriv) +{ + _irqL irqL, irqL0; + _queue *free_queue = &pmlmepriv->free_bss_pool; + _queue *scan_queue = &pmlmepriv->scanned_queue; + _list *plist, *phead, *ptemp; + +_func_enter_; + + RT_TRACE(_module_rtl871x_mlme_c_, _drv_notice_, ("+free_scanqueue\n")); + _enter_critical_bh(&scan_queue->lock, &irqL0); + _enter_critical_bh(&free_queue->lock, &irqL); + + phead = get_list_head(scan_queue); + plist = get_next(phead); + + while (plist != phead) + { + ptemp = get_next(plist); + rtw_list_delete(plist); + rtw_list_insert_tail(plist, &free_queue->queue); + plist =ptemp; + pmlmepriv->num_of_scanned --; + } + + _exit_critical_bh(&free_queue->lock, &irqL); + _exit_critical_bh(&scan_queue->lock, &irqL0); + +_func_exit_; +} + +/* +*rtw_free_assoc_resources: the caller has to lock pmlmepriv->lock +*/ +void rtw_free_assoc_resources(_adapter *adapter, int lock_scanned_queue) +{ + _irqL irqL; + struct wlan_network* pwlan = NULL; + struct mlme_priv *pmlmepriv = &adapter->mlmepriv; + struct sta_priv *pstapriv = &adapter->stapriv; + struct wlan_network *tgt_network = &pmlmepriv->cur_network; + +#ifdef CONFIG_TDLS + struct tdls_info *ptdlsinfo = &adapter->tdlsinfo; +#endif //CONFIG_TDLS +_func_enter_; + + RT_TRACE(_module_rtl871x_mlme_c_, _drv_notice_, ("+rtw_free_assoc_resources\n")); + RT_TRACE(_module_rtl871x_mlme_c_, _drv_info_, ("tgt_network->network.MacAddress="MAC_FMT" ssid=%s\n", + MAC_ARG(tgt_network->network.MacAddress), tgt_network->network.Ssid.Ssid)); + + if(check_fwstate( pmlmepriv, WIFI_STATION_STATE|WIFI_AP_STATE)) + { + struct sta_info* psta; + + psta = rtw_get_stainfo(&adapter->stapriv, tgt_network->network.MacAddress); + +#ifdef CONFIG_TDLS + if(ptdlsinfo->setup_state != TDLS_STATE_NONE) + { + rtw_tdls_cmd(adapter, myid(&(adapter->eeprompriv)), TDLS_RS_RCR); + rtw_reset_tdls_info(adapter); + rtw_free_all_stainfo(adapter); + _enter_critical_bh(&(pstapriv->sta_hash_lock), &irqL); + } + else +#endif //CONFIG_TDLS + { + _enter_critical_bh(&(pstapriv->sta_hash_lock), &irqL); + rtw_free_stainfo(adapter, psta); + } + + _exit_critical_bh(&(pstapriv->sta_hash_lock), &irqL); + + } + + if(check_fwstate( pmlmepriv, WIFI_ADHOC_STATE|WIFI_ADHOC_MASTER_STATE|WIFI_AP_STATE)) + { + struct sta_info* psta; + + rtw_free_all_stainfo(adapter); + + psta = rtw_get_bcmc_stainfo(adapter); + _enter_critical_bh(&(pstapriv->sta_hash_lock), &irqL); + rtw_free_stainfo(adapter, psta); + _exit_critical_bh(&(pstapriv->sta_hash_lock), &irqL); + + rtw_init_bcmc_stainfo(adapter); + } + + if(lock_scanned_queue) + _enter_critical_bh(&(pmlmepriv->scanned_queue.lock), &irqL); + + pwlan = rtw_find_network(&pmlmepriv->scanned_queue, tgt_network->network.MacAddress); + if(pwlan) + { + pwlan->fixed = _FALSE; +#ifdef CONFIG_P2P + if(!rtw_p2p_chk_state(&adapter->wdinfo, P2P_STATE_NONE)) + { + u32 p2p_ielen=0; + u8 *p2p_ie; + //u16 capability; + u8 *pcap = NULL; + u32 capability_len=0; + + //DBG_871X("free disconnecting network\n"); + //rtw_free_network_nolock(pmlmepriv, pwlan); + + if((p2p_ie=rtw_get_p2p_ie(pwlan->network.IEs+_FIXED_IE_LENGTH_, pwlan->network.IELength-_FIXED_IE_LENGTH_, NULL, &p2p_ielen))) + { + pcap = rtw_get_p2p_attr_content(p2p_ie, p2p_ielen, P2P_ATTR_CAPABILITY, NULL, &capability_len); + if(pcap && capability_len==2) + { + u16 cap = *(u16*)pcap ; + *(u16*)pcap = cap&0x00ff;//clear group capability when free this network + } + } + + rtw_set_scan_deny(adapter, 2000); + //rtw_clear_scan_deny(adapter); + } +#endif //CONFIG_P2P + } + else + { + RT_TRACE(_module_rtl871x_mlme_c_,_drv_err_,("rtw_free_assoc_resources : pwlan== NULL \n\n")); + } + + + if((check_fwstate(pmlmepriv, WIFI_ADHOC_MASTER_STATE) && (adapter->stapriv.asoc_sta_count== 1)) + /*||check_fwstate(pmlmepriv, WIFI_STATION_STATE)*/) + { + rtw_free_network_nolock(pmlmepriv, pwlan); + } + + if(lock_scanned_queue) + _exit_critical_bh(&(pmlmepriv->scanned_queue.lock), &irqL); + + adapter->securitypriv.key_mask = 0; + +_func_exit_; + +} + +/* +*rtw_indicate_connect: the caller has to lock pmlmepriv->lock +*/ +void rtw_indicate_connect(_adapter *padapter) +{ + struct mlme_priv *pmlmepriv = &padapter->mlmepriv; + struct xmit_priv *pxmitpriv = &padapter->xmitpriv; + +_func_enter_; + + RT_TRACE(_module_rtl871x_mlme_c_, _drv_err_, ("+rtw_indicate_connect\n")); + + pmlmepriv->to_join = _FALSE; + + if(!check_fwstate(&padapter->mlmepriv, _FW_LINKED)) + { + +#ifdef CONFIG_SW_ANTENNA_DIVERSITY + rtw_hal_set_hwreg(padapter, HW_VAR_ANTENNA_DIVERSITY_LINK, 0); +#endif + set_fwstate(pmlmepriv, _FW_LINKED); + + rtw_led_control(padapter, LED_CTL_LINK); + +#ifdef CONFIG_DRVEXT_MODULE + if(padapter->drvextpriv.enable_wpa) + { + indicate_l2_connect(padapter); + } + else +#endif + { + rtw_os_indicate_connect(padapter); + } + + } + + rtw_set_roaming(padapter, 0); + +#ifdef CONFIG_INTEL_WIDI + if(padapter->mlmepriv.widi_state == INTEL_WIDI_STATE_ROAMING) + { + _rtw_memset(pmlmepriv->sa_ext, 0x00, L2SDTA_SERVICE_VE_LEN); + intel_widi_wk_cmd(padapter, INTEL_WIDI_LISTEN_WK, NULL); + DBG_871X("change to widi listen\n"); + } +#endif // CONFIG_INTEL_WIDI + + rtw_set_scan_deny(padapter, 3000); + + RT_TRACE(_module_rtl871x_mlme_c_, _drv_err_, ("-rtw_indicate_connect: fw_state=0x%08x\n", get_fwstate(pmlmepriv))); + +_func_exit_; + +} + + +/* +*rtw_indicate_disconnect: the caller has to lock pmlmepriv->lock +*/ +void rtw_indicate_disconnect( _adapter *padapter ) +{ + struct mlme_priv *pmlmepriv = &padapter->mlmepriv; + +_func_enter_; + + RT_TRACE(_module_rtl871x_mlme_c_, _drv_err_, ("+rtw_indicate_disconnect\n")); + + _clr_fwstate_(pmlmepriv, _FW_UNDER_LINKING|WIFI_UNDER_WPS); + + if(rtw_to_roaming(padapter) > 0) + _clr_fwstate_(pmlmepriv, _FW_LINKED); + + if(check_fwstate(&padapter->mlmepriv, _FW_LINKED) + || (rtw_to_roaming(padapter) <= 0) + ) + { + rtw_os_indicate_disconnect(padapter); + + //set ips_deny_time to avoid enter IPS before LPS leave + padapter->pwrctrlpriv.ips_deny_time = rtw_get_current_time() + rtw_ms_to_systime(3000); + + _clr_fwstate_(pmlmepriv, _FW_LINKED); + + rtw_led_control(padapter, LED_CTL_NO_LINK); + + rtw_clear_scan_deny(padapter); + + } + +#ifdef CONFIG_P2P_PS + p2p_ps_wk_cmd(padapter, P2P_PS_DISABLE, 1); +#endif // CONFIG_P2P_PS + +#ifdef CONFIG_LPS +#ifdef CONFIG_WOWLAN + if(padapter->pwrctrlpriv.wowlan_mode==_FALSE) +#endif //CONFIG_WOWLAN + rtw_lps_ctrl_wk_cmd(padapter, LPS_CTRL_DISCONNECT, 1); + +#endif + +_func_exit_; +} + +inline void rtw_indicate_scan_done( _adapter *padapter, bool aborted) +{ + rtw_os_indicate_scan_done(padapter, aborted); +} + +void rtw_scan_abort(_adapter *adapter) +{ + u32 cnt=0; + u32 start; + struct mlme_priv *pmlmepriv = &(adapter->mlmepriv); + struct mlme_ext_priv *pmlmeext = &(adapter->mlmeextpriv); + + start = rtw_get_current_time(); + pmlmeext->scan_abort = _TRUE; + while (check_fwstate(pmlmepriv, _FW_UNDER_SURVEY) + && rtw_get_passing_time_ms(start) <= 200) { + + if (adapter->bDriverStopped || adapter->bSurpriseRemoved) + break; + + DBG_871X(FUNC_NDEV_FMT"fw_state=_FW_UNDER_SURVEY!\n", FUNC_NDEV_ARG(adapter->pnetdev)); + rtw_msleep_os(20); + } + + if (check_fwstate(pmlmepriv, _FW_UNDER_SURVEY)) { + if (!adapter->bDriverStopped && !adapter->bSurpriseRemoved) + DBG_871X(FUNC_NDEV_FMT"waiting for scan_abort time out!\n", FUNC_NDEV_ARG(adapter->pnetdev)); + #ifdef CONFIG_PLATFORM_MSTAR + //_clr_fwstate_(pmlmepriv, _FW_UNDER_SURVEY); + set_survey_timer(pmlmeext, 0); + _set_timer(&pmlmepriv->scan_to_timer, 50); + #endif + rtw_indicate_scan_done(adapter, _TRUE); + } + pmlmeext->scan_abort = _FALSE; +} + +static struct sta_info *rtw_joinbss_update_stainfo(_adapter *padapter, struct wlan_network *pnetwork) +{ + int i; + struct sta_info *bmc_sta, *psta=NULL; + struct recv_reorder_ctrl *preorder_ctrl; + struct sta_priv *pstapriv = &padapter->stapriv; + struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; + + psta = rtw_get_stainfo(pstapriv, pnetwork->network.MacAddress); + if(psta==NULL) { + psta = rtw_alloc_stainfo(pstapriv, pnetwork->network.MacAddress); + } + + if(psta) //update ptarget_sta + { + DBG_871X("%s\n", __FUNCTION__); + + psta->aid = pnetwork->join_res; +#ifdef CONFIG_CONCURRENT_MODE + + if(PRIMARY_ADAPTER == padapter->adapter_type) + psta->mac_id=0; + else + psta->mac_id=2; +#else + psta->mac_id=0; +#endif + + psta->raid = networktype_to_raid(pmlmeext->cur_wireless_mode); + + //security related + if(padapter->securitypriv.dot11AuthAlgrthm== dot11AuthAlgrthm_8021X) + { + padapter->securitypriv.binstallGrpkey=_FALSE; + padapter->securitypriv.busetkipkey=_FALSE; + padapter->securitypriv.bgrpkey_handshake=_FALSE; + + psta->ieee8021x_blocked=_TRUE; + psta->dot118021XPrivacy=padapter->securitypriv.dot11PrivacyAlgrthm; + + _rtw_memset((u8 *)&psta->dot118021x_UncstKey, 0, sizeof (union Keytype)); + + _rtw_memset((u8 *)&psta->dot11tkiprxmickey, 0, sizeof (union Keytype)); + _rtw_memset((u8 *)&psta->dot11tkiptxmickey, 0, sizeof (union Keytype)); + + _rtw_memset((u8 *)&psta->dot11txpn, 0, sizeof (union pn48)); +#ifdef CONFIG_IEEE80211W + _rtw_memset((u8 *)&psta->dot11wtxpn, 0, sizeof (union pn48)); +#endif //CONFIG_IEEE80211W + _rtw_memset((u8 *)&psta->dot11rxpn, 0, sizeof (union pn48)); + } + + // Commented by Albert 2012/07/21 + // When doing the WPS, the wps_ie_len won't equal to 0 + // And the Wi-Fi driver shouldn't allow the data packet to be tramsmitted. + if ( padapter->securitypriv.wps_ie_len != 0 ) + { + psta->ieee8021x_blocked=_TRUE; + padapter->securitypriv.wps_ie_len = 0; + } + + + //for A-MPDU Rx reordering buffer control for bmc_sta & sta_info + //if A-MPDU Rx is enabled, reseting rx_ordering_ctrl wstart_b(indicate_seq) to default value=0xffff + //todo: check if AP can send A-MPDU packets + for(i=0; i < 16 ; i++) + { + //preorder_ctrl = &precvpriv->recvreorder_ctrl[i]; + preorder_ctrl = &psta->recvreorder_ctrl[i]; + preorder_ctrl->enable = _FALSE; + preorder_ctrl->indicate_seq = 0xffff; + #ifdef DBG_RX_SEQ + DBG_871X("DBG_RX_SEQ %s:%d indicate_seq:%u \n", __FUNCTION__, __LINE__, + preorder_ctrl->indicate_seq); + #endif + preorder_ctrl->wend_b= 0xffff; + preorder_ctrl->wsize_b = 64;//max_ampdu_sz;//ex. 32(kbytes) -> wsize_b=32 + } + + + bmc_sta = rtw_get_bcmc_stainfo(padapter); + if(bmc_sta) + { + for(i=0; i < 16 ; i++) + { + //preorder_ctrl = &precvpriv->recvreorder_ctrl[i]; + preorder_ctrl = &bmc_sta->recvreorder_ctrl[i]; + preorder_ctrl->enable = _FALSE; + preorder_ctrl->indicate_seq = 0xffff; + #ifdef DBG_RX_SEQ + DBG_871X("DBG_RX_SEQ %s:%d indicate_seq:%u \n", __FUNCTION__, __LINE__, + preorder_ctrl->indicate_seq); + #endif + preorder_ctrl->wend_b= 0xffff; + preorder_ctrl->wsize_b = 64;//max_ampdu_sz;//ex. 32(kbytes) -> wsize_b=32 + } + } + + + //misc. + update_sta_info(padapter, psta); + + } + + return psta; + +} + +//pnetwork : returns from rtw_joinbss_event_callback +//ptarget_wlan: found from scanned_queue +static void rtw_joinbss_update_network(_adapter *padapter, struct wlan_network *ptarget_wlan, struct wlan_network *pnetwork) +{ + struct mlme_priv *pmlmepriv = &(padapter->mlmepriv); + struct wlan_network *cur_network = &(pmlmepriv->cur_network); + + DBG_871X("%s\n", __FUNCTION__); + + RT_TRACE(_module_rtl871x_mlme_c_,_drv_info_,("\nfw_state:%x, BSSID:"MAC_FMT"\n" + ,get_fwstate(pmlmepriv), MAC_ARG(pnetwork->network.MacAddress))); + + + // why not use ptarget_wlan?? + _rtw_memcpy(&cur_network->network, &pnetwork->network, pnetwork->network.Length); + + cur_network->aid = pnetwork->join_res; + + +#ifdef CONFIG_NEW_SIGNAL_STAT_PROCESS + rtw_set_signal_stat_timer(&padapter->recvpriv); +#endif + padapter->recvpriv.signal_strength = ptarget_wlan->network.PhyInfo.SignalStrength; + padapter->recvpriv.signal_qual = ptarget_wlan->network.PhyInfo.SignalQuality; + //the ptarget_wlan->network.Rssi is raw data, we use ptarget_wlan->network.PhyInfo.SignalStrength instead (has scaled) + padapter->recvpriv.rssi = translate_percentage_to_dbm(ptarget_wlan->network.PhyInfo.SignalStrength); + #if defined(DBG_RX_SIGNAL_DISPLAY_PROCESSING) && 1 + DBG_871X(FUNC_ADPT_FMT" signal_strength:%3u, rssi:%3d, signal_qual:%3u" + "\n" + , FUNC_ADPT_ARG(padapter) + , padapter->recvpriv.signal_strength + , padapter->recvpriv.rssi + , padapter->recvpriv.signal_qual + ); + #endif +#ifdef CONFIG_NEW_SIGNAL_STAT_PROCESS + rtw_set_signal_stat_timer(&padapter->recvpriv); +#endif + + //update fw_state //will clr _FW_UNDER_LINKING here indirectly + switch(pnetwork->network.InfrastructureMode) + { + case Ndis802_11Infrastructure: + + if(pmlmepriv->fw_state&WIFI_UNDER_WPS) + pmlmepriv->fw_state = WIFI_STATION_STATE|WIFI_UNDER_WPS; + else + pmlmepriv->fw_state = WIFI_STATION_STATE; + + break; + case Ndis802_11IBSS: + pmlmepriv->fw_state = WIFI_ADHOC_STATE; + break; + default: + pmlmepriv->fw_state = WIFI_NULL_STATE; + RT_TRACE(_module_rtl871x_mlme_c_,_drv_err_,("Invalid network_mode\n")); + break; + } + + rtw_update_protection(padapter, (cur_network->network.IEs) + sizeof (NDIS_802_11_FIXED_IEs), + (cur_network->network.IELength)); + +#ifdef CONFIG_80211N_HT + rtw_update_ht_cap(padapter, cur_network->network.IEs, cur_network->network.IELength, (u8) cur_network->network.Configuration.DSConfig); +#endif + + +} + +//Notes: the fucntion could be > passive_level (the same context as Rx tasklet) +//pnetwork : returns from rtw_joinbss_event_callback +//ptarget_wlan: found from scanned_queue +//if join_res > 0, for (fw_state==WIFI_STATION_STATE), we check if "ptarget_sta" & "ptarget_wlan" exist. +//if join_res > 0, for (fw_state==WIFI_ADHOC_STATE), we only check if "ptarget_wlan" exist. +//if join_res > 0, update "cur_network->network" from "pnetwork->network" if (ptarget_wlan !=NULL). +// +//#define REJOIN +void rtw_joinbss_event_prehandle(_adapter *adapter, u8 *pbuf) +{ + _irqL irqL,irqL2; + static u8 retry=0; + u8 timer_cancelled; + struct sta_info *ptarget_sta= NULL, *pcur_sta = NULL; + struct sta_priv *pstapriv = &adapter->stapriv; + struct mlme_priv *pmlmepriv = &(adapter->mlmepriv); + struct wlan_network *pnetwork = (struct wlan_network *)pbuf; + struct wlan_network *cur_network = &(pmlmepriv->cur_network); + struct wlan_network *pcur_wlan = NULL, *ptarget_wlan = NULL; + unsigned int the_same_macaddr = _FALSE; + +_func_enter_; + +#ifdef CONFIG_RTL8712 + //endian_convert + pnetwork->join_res = le32_to_cpu(pnetwork->join_res); + pnetwork->network_type = le32_to_cpu(pnetwork->network_type); + pnetwork->network.Length = le32_to_cpu(pnetwork->network.Length); + pnetwork->network.Ssid.SsidLength = le32_to_cpu(pnetwork->network.Ssid.SsidLength); + pnetwork->network.Privacy =le32_to_cpu( pnetwork->network.Privacy); + pnetwork->network.Rssi = le32_to_cpu(pnetwork->network.Rssi); + pnetwork->network.NetworkTypeInUse =le32_to_cpu(pnetwork->network.NetworkTypeInUse) ; + pnetwork->network.Configuration.ATIMWindow = le32_to_cpu(pnetwork->network.Configuration.ATIMWindow); + pnetwork->network.Configuration.BeaconPeriod = le32_to_cpu(pnetwork->network.Configuration.BeaconPeriod); + pnetwork->network.Configuration.DSConfig = le32_to_cpu(pnetwork->network.Configuration.DSConfig); + pnetwork->network.Configuration.FHConfig.DwellTime=le32_to_cpu(pnetwork->network.Configuration.FHConfig.DwellTime); + pnetwork->network.Configuration.FHConfig.HopPattern=le32_to_cpu(pnetwork->network.Configuration.FHConfig.HopPattern); + pnetwork->network.Configuration.FHConfig.HopSet=le32_to_cpu(pnetwork->network.Configuration.FHConfig.HopSet); + pnetwork->network.Configuration.FHConfig.Length=le32_to_cpu(pnetwork->network.Configuration.FHConfig.Length); + pnetwork->network.Configuration.Length = le32_to_cpu(pnetwork->network.Configuration.Length); + pnetwork->network.InfrastructureMode = le32_to_cpu(pnetwork->network.InfrastructureMode); + pnetwork->network.IELength = le32_to_cpu(pnetwork->network.IELength ); +#endif + + RT_TRACE(_module_rtl871x_mlme_c_,_drv_info_,("joinbss event call back received with res=%d\n", pnetwork->join_res)); + + rtw_get_encrypt_decrypt_from_registrypriv(adapter); + + + if (pmlmepriv->assoc_ssid.SsidLength == 0) + { + RT_TRACE(_module_rtl871x_mlme_c_,_drv_err_,("@@@@@ joinbss event call back for Any SSid\n")); + } + else + { + RT_TRACE(_module_rtl871x_mlme_c_,_drv_err_,("@@@@@ rtw_joinbss_event_callback for SSid:%s\n", pmlmepriv->assoc_ssid.Ssid)); + } + + the_same_macaddr = _rtw_memcmp(pnetwork->network.MacAddress, cur_network->network.MacAddress, ETH_ALEN); + + pnetwork->network.Length = get_WLAN_BSSID_EX_sz(&pnetwork->network); + if(pnetwork->network.Length > sizeof(WLAN_BSSID_EX)) + { + RT_TRACE(_module_rtl871x_mlme_c_,_drv_err_,("\n\n ***joinbss_evt_callback return a wrong bss ***\n\n")); + goto ignore_joinbss_callback; + } + + _enter_critical_bh(&pmlmepriv->lock, &irqL); + + RT_TRACE(_module_rtl871x_mlme_c_,_drv_info_,("\n rtw_joinbss_event_callback !! _enter_critical \n")); + + if(pnetwork->join_res > 0) + { + _enter_critical_bh(&(pmlmepriv->scanned_queue.lock), &irqL); + retry = 0; + if (check_fwstate(pmlmepriv,_FW_UNDER_LINKING) ) + { + //s1. find ptarget_wlan + if(check_fwstate(pmlmepriv, _FW_LINKED) ) + { + if(the_same_macaddr == _TRUE) + { + ptarget_wlan = rtw_find_network(&pmlmepriv->scanned_queue, cur_network->network.MacAddress); + } + else + { + pcur_wlan = rtw_find_network(&pmlmepriv->scanned_queue, cur_network->network.MacAddress); + if(pcur_wlan) pcur_wlan->fixed = _FALSE; + + pcur_sta = rtw_get_stainfo(pstapriv, cur_network->network.MacAddress); + if(pcur_sta){ + _enter_critical_bh(&(pstapriv->sta_hash_lock), &irqL2); + rtw_free_stainfo(adapter, pcur_sta); + _exit_critical_bh(&(pstapriv->sta_hash_lock), &irqL2); + } + + ptarget_wlan = rtw_find_network(&pmlmepriv->scanned_queue, pnetwork->network.MacAddress); + if(check_fwstate(pmlmepriv, WIFI_STATION_STATE) == _TRUE){ + if(ptarget_wlan) ptarget_wlan->fixed = _TRUE; + } + } + + } + else + { + ptarget_wlan = rtw_find_network(&pmlmepriv->scanned_queue, pnetwork->network.MacAddress); + if(check_fwstate(pmlmepriv, WIFI_STATION_STATE) == _TRUE){ + if(ptarget_wlan) ptarget_wlan->fixed = _TRUE; + } + } + + //s2. update cur_network + if(ptarget_wlan) + { + rtw_joinbss_update_network(adapter, ptarget_wlan, pnetwork); + } + else + { + RT_TRACE(_module_rtl871x_mlme_c_,_drv_err_,("Can't find ptarget_wlan when joinbss_event callback\n")); + _exit_critical_bh(&(pmlmepriv->scanned_queue.lock), &irqL); + goto ignore_joinbss_callback; + } + + + //s3. find ptarget_sta & update ptarget_sta after update cur_network only for station mode + if(check_fwstate(pmlmepriv, WIFI_STATION_STATE) == _TRUE) + { + ptarget_sta = rtw_joinbss_update_stainfo(adapter, pnetwork); + if(ptarget_sta==NULL) + { + RT_TRACE(_module_rtl871x_mlme_c_,_drv_err_,("Can't update stainfo when joinbss_event callback\n")); + _exit_critical_bh(&(pmlmepriv->scanned_queue.lock), &irqL); + goto ignore_joinbss_callback; + } + } + + //s4. indicate connect + if(check_fwstate(pmlmepriv, WIFI_STATION_STATE) == _TRUE) + { + rtw_indicate_connect(adapter); + } + else + { + //adhoc mode will rtw_indicate_connect when rtw_stassoc_event_callback + RT_TRACE(_module_rtl871x_mlme_c_,_drv_info_,("adhoc mode, fw_state:%x", get_fwstate(pmlmepriv))); + } + + + //s5. Cancle assoc_timer + _cancel_timer(&pmlmepriv->assoc_timer, &timer_cancelled); + + RT_TRACE(_module_rtl871x_mlme_c_,_drv_info_,("Cancle assoc_timer\n")); + + } + else + { + RT_TRACE(_module_rtl871x_mlme_c_,_drv_err_,("rtw_joinbss_event_callback err: fw_state:%x", get_fwstate(pmlmepriv))); + _exit_critical_bh(&(pmlmepriv->scanned_queue.lock), &irqL); + goto ignore_joinbss_callback; + } + + _exit_critical_bh(&(pmlmepriv->scanned_queue.lock), &irqL); + + } + else if(pnetwork->join_res == -4) + { + rtw_reset_securitypriv(adapter); + _set_timer(&pmlmepriv->assoc_timer, 1); + + //rtw_free_assoc_resources(adapter, 1); + + if((check_fwstate(pmlmepriv, _FW_UNDER_LINKING)) == _TRUE) + { + RT_TRACE(_module_rtl871x_mlme_c_,_drv_err_,("fail! clear _FW_UNDER_LINKING ^^^fw_state=%x\n", get_fwstate(pmlmepriv))); + _clr_fwstate_(pmlmepriv, _FW_UNDER_LINKING); + } + + } + else //if join_res < 0 (join fails), then try again + { + + #ifdef REJOIN + res = _FAIL; + if(retry < 2) { + res = rtw_select_and_join_from_scanned_queue(pmlmepriv); + RT_TRACE(_module_rtl871x_mlme_c_,_drv_err_,("rtw_select_and_join_from_scanned_queue again! res:%d\n",res)); + } + + if(res == _SUCCESS) + { + //extend time of assoc_timer + _set_timer(&pmlmepriv->assoc_timer, MAX_JOIN_TIMEOUT); + retry++; + } + else if(res == 2)//there is no need to wait for join + { + _clr_fwstate_(pmlmepriv, _FW_UNDER_LINKING); + rtw_indicate_connect(adapter); + } + else + { + RT_TRACE(_module_rtl871x_mlme_c_,_drv_err_,("Set Assoc_Timer = 1; can't find match ssid in scanned_q \n")); + #endif + + _set_timer(&pmlmepriv->assoc_timer, 1); + //rtw_free_assoc_resources(adapter, 1); + _clr_fwstate_(pmlmepriv, _FW_UNDER_LINKING); + + #ifdef REJOIN + retry = 0; + } + #endif + } + +ignore_joinbss_callback: + + _exit_critical_bh(&pmlmepriv->lock, &irqL); + _func_exit_; +} + +void rtw_joinbss_event_callback(_adapter *adapter, u8 *pbuf) +{ + struct wlan_network *pnetwork = (struct wlan_network *)pbuf; + +_func_enter_; + + mlmeext_joinbss_event_callback(adapter, pnetwork->join_res); + + rtw_os_xmit_schedule(adapter); + +#ifdef CONFIG_CONCURRENT_MODE + rtw_os_xmit_schedule(adapter->pbuddy_adapter); +#endif + +#ifdef CONFIG_DUALMAC_CONCURRENT + dc_resume_xmit(adapter); +#endif + +_func_exit_; +} + +void rtw_stassoc_event_callback(_adapter *adapter, u8 *pbuf) +{ + _irqL irqL; + struct sta_info *psta; + struct mlme_priv *pmlmepriv = &(adapter->mlmepriv); + struct stassoc_event *pstassoc = (struct stassoc_event*)pbuf; + struct wlan_network *cur_network = &(pmlmepriv->cur_network); + struct wlan_network *ptarget_wlan = NULL; + +_func_enter_; + + if(rtw_access_ctrl(adapter, pstassoc->macaddr) == _FALSE) + return; + +#if defined (CONFIG_AP_MODE) && defined (CONFIG_NATIVEAP_MLME) + if(check_fwstate(pmlmepriv, WIFI_AP_STATE)) + { + psta = rtw_get_stainfo(&adapter->stapriv, pstassoc->macaddr); + if(psta) + { +#ifdef CONFIG_IOCTL_CFG80211 +#ifdef COMPAT_KERNEL_RELEASE + +#elif (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,37)) || defined(CONFIG_CFG80211_FORCE_COMPATIBLE_2_6_37_UNDER) + u8 *passoc_req = NULL; + u32 assoc_req_len; + + _enter_critical_bh(&psta->lock, &irqL); + if(psta->passoc_req && psta->assoc_req_len>0) + { + passoc_req = rtw_zmalloc(psta->assoc_req_len); + if(passoc_req) + { + assoc_req_len = psta->assoc_req_len; + _rtw_memcpy(passoc_req, psta->passoc_req, assoc_req_len); + + rtw_mfree(psta->passoc_req , psta->assoc_req_len); + psta->passoc_req = NULL; + psta->assoc_req_len = 0; + } + } + _exit_critical_bh(&psta->lock, &irqL); + + if(passoc_req && assoc_req_len>0) + { + rtw_cfg80211_indicate_sta_assoc(adapter, passoc_req, assoc_req_len); + + rtw_mfree(passoc_req, assoc_req_len); + } +#endif //(LINUX_VERSION_CODE < KERNEL_VERSION(2,6,37)) || defined(CONFIG_CFG80211_FORCE_COMPATIBLE_2_6_37_UNDER) +#endif //CONFIG_IOCTL_CFG80211 + + //bss_cap_update_on_sta_join(adapter, psta); + //sta_info_update(adapter, psta); + ap_sta_info_defer_update(adapter, psta); + } + + goto exit; + } +#endif + + psta = rtw_get_stainfo(&adapter->stapriv, pstassoc->macaddr); + if( psta != NULL) + { + //the sta have been in sta_info_queue => do nothing + + RT_TRACE(_module_rtl871x_mlme_c_,_drv_err_,("Error: rtw_stassoc_event_callback: sta has been in sta_hash_queue \n")); + + goto exit; //(between drv has received this event before and fw have not yet to set key to CAM_ENTRY) + } + + psta = rtw_alloc_stainfo(&adapter->stapriv, pstassoc->macaddr); + if (psta == NULL) { + RT_TRACE(_module_rtl871x_mlme_c_,_drv_err_,("Can't alloc sta_info when rtw_stassoc_event_callback\n")); + goto exit; + } + + //to do : init sta_info variable + psta->qos_option = 0; + psta->mac_id = (uint)pstassoc->cam_id; + //psta->aid = (uint)pstassoc->cam_id; + + if(adapter->securitypriv.dot11AuthAlgrthm==dot11AuthAlgrthm_8021X) + psta->dot118021XPrivacy = adapter->securitypriv.dot11PrivacyAlgrthm; + + psta->ieee8021x_blocked = _FALSE; + + _enter_critical_bh(&pmlmepriv->lock, &irqL); + + if ( (check_fwstate(pmlmepriv, WIFI_ADHOC_MASTER_STATE)==_TRUE ) || + (check_fwstate(pmlmepriv, WIFI_ADHOC_STATE)==_TRUE ) ) + { + if(adapter->stapriv.asoc_sta_count== 2) + { + _enter_critical_bh(&(pmlmepriv->scanned_queue.lock), &irqL); + ptarget_wlan = rtw_find_network(&pmlmepriv->scanned_queue, cur_network->network.MacAddress); + if(ptarget_wlan) ptarget_wlan->fixed = _TRUE; + _exit_critical_bh(&(pmlmepriv->scanned_queue.lock), &irqL); + // a sta + bc/mc_stainfo (not Ibss_stainfo) + rtw_indicate_connect(adapter); + } + } + + _exit_critical_bh(&pmlmepriv->lock, &irqL); + + + mlmeext_sta_add_event_callback(adapter, psta); + +#ifdef CONFIG_RTL8711 + //submit SetStaKey_cmd to tell fw, fw will allocate an CAM entry for this sta + rtw_setstakey_cmd(adapter, (unsigned char*)psta, _FALSE); +#endif + +exit: + +_func_exit_; + +} + +void rtw_stadel_event_callback(_adapter *adapter, u8 *pbuf) +{ + _irqL irqL,irqL2; + struct sta_info *psta; + struct wlan_network* pwlan = NULL; + WLAN_BSSID_EX *pdev_network=NULL; + u8* pibss = NULL; + struct mlme_priv *pmlmepriv = &(adapter->mlmepriv); + struct stadel_event *pstadel = (struct stadel_event*)pbuf; + struct sta_priv *pstapriv = &adapter->stapriv; + struct wlan_network *tgt_network = &(pmlmepriv->cur_network); + +_func_enter_; + + if(check_fwstate(pmlmepriv, WIFI_AP_STATE)) + { +#ifdef CONFIG_IOCTL_CFG80211 +#ifdef COMPAT_KERNEL_RELEASE + +#elif (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,37)) || defined(CONFIG_CFG80211_FORCE_COMPATIBLE_2_6_37_UNDER) + rtw_cfg80211_indicate_sta_disassoc(adapter, pstadel->macaddr, *(u16*)pstadel->rsvd); +#endif //(LINUX_VERSION_CODE < KERNEL_VERSION(2,6,37)) || defined(CONFIG_CFG80211_FORCE_COMPATIBLE_2_6_37_UNDER) +#endif //CONFIG_IOCTL_CFG80211 + + return; + } + + + mlmeext_sta_del_event_callback(adapter); + + _enter_critical_bh(&pmlmepriv->lock, &irqL2); + + if(check_fwstate(pmlmepriv, WIFI_STATION_STATE) ) + { + #ifdef CONFIG_LAYER2_ROAMING + if (rtw_to_roaming(adapter) > 0) + pmlmepriv->to_roaming--; /* this stadel_event is caused by roaming, decrease to_roaming */ + else if (rtw_to_roaming(adapter) == 0) + rtw_set_roaming(adapter, adapter->registrypriv.max_roaming_times); +#ifdef CONFIG_INTEL_WIDI + if(adapter->mlmepriv.widi_state != INTEL_WIDI_STATE_CONNECTED) +#endif // CONFIG_INTEL_WIDI + if(*((unsigned short *)(pstadel->rsvd)) != WLAN_REASON_EXPIRATION_CHK) + rtw_set_roaming(adapter, 0); /* don't roam */ + #endif + + rtw_free_uc_swdec_pending_queue(adapter); + + rtw_free_assoc_resources(adapter, 1); + rtw_indicate_disconnect(adapter); + _enter_critical_bh(&(pmlmepriv->scanned_queue.lock), &irqL); + // remove the network entry in scanned_queue + pwlan = rtw_find_network(&pmlmepriv->scanned_queue, tgt_network->network.MacAddress); + if (pwlan) { + pwlan->fixed = _FALSE; + rtw_free_network_nolock(pmlmepriv, pwlan); + } + _exit_critical_bh(&(pmlmepriv->scanned_queue.lock), &irqL); + + _rtw_roaming(adapter, tgt_network); + +#ifdef CONFIG_INTEL_WIDI + if (!rtw_to_roaming(adapter)) + process_intel_widi_disconnect(adapter, 1); +#endif // CONFIG_INTEL_WIDI + } + + if ( check_fwstate(pmlmepriv,WIFI_ADHOC_MASTER_STATE) || + check_fwstate(pmlmepriv,WIFI_ADHOC_STATE)) + { + psta = rtw_get_stainfo(&adapter->stapriv, pstadel->macaddr); + + _enter_critical_bh(&(pstapriv->sta_hash_lock), &irqL); + rtw_free_stainfo(adapter, psta); + _exit_critical_bh(&(pstapriv->sta_hash_lock), &irqL); + + if(adapter->stapriv.asoc_sta_count== 1) //a sta + bc/mc_stainfo (not Ibss_stainfo) + { + //rtw_indicate_disconnect(adapter);//removed@20091105 + _enter_critical_bh(&(pmlmepriv->scanned_queue.lock), &irqL); + //free old ibss network + //pwlan = rtw_find_network(&pmlmepriv->scanned_queue, pstadel->macaddr); + pwlan = rtw_find_network(&pmlmepriv->scanned_queue, tgt_network->network.MacAddress); + if(pwlan) + { + pwlan->fixed = _FALSE; + rtw_free_network_nolock(pmlmepriv, pwlan); + } + _exit_critical_bh(&(pmlmepriv->scanned_queue.lock), &irqL); + //re-create ibss + pdev_network = &(adapter->registrypriv.dev_network); + pibss = adapter->registrypriv.dev_network.MacAddress; + + _rtw_memcpy(pdev_network, &tgt_network->network, get_WLAN_BSSID_EX_sz(&tgt_network->network)); + + _rtw_memset(&pdev_network->Ssid, 0, sizeof(NDIS_802_11_SSID)); + _rtw_memcpy(&pdev_network->Ssid, &pmlmepriv->assoc_ssid, sizeof(NDIS_802_11_SSID)); + + rtw_update_registrypriv_dev_network(adapter); + + rtw_generate_random_ibss(pibss); + + if(check_fwstate(pmlmepriv,WIFI_ADHOC_STATE)) + { + set_fwstate(pmlmepriv, WIFI_ADHOC_MASTER_STATE); + _clr_fwstate_(pmlmepriv, WIFI_ADHOC_STATE); + } + + if(rtw_createbss_cmd(adapter)!=_SUCCESS) + { + + RT_TRACE(_module_rtl871x_ioctl_set_c_,_drv_err_,("***Error=>stadel_event_callback: rtw_createbss_cmd status FAIL*** \n ")); + + } + + + } + + } + + _exit_critical_bh(&pmlmepriv->lock, &irqL2); + +_func_exit_; + +} + + +void rtw_cpwm_event_callback(PADAPTER padapter, u8 *pbuf) +{ +#ifdef CONFIG_LPS_LCLK + struct reportpwrstate_parm *preportpwrstate; +#endif + +_func_enter_; + + RT_TRACE(_module_rtl871x_mlme_c_,_drv_err_,("rtw_cpwm_event_callback !!!\n")); +#ifdef CONFIG_LPS_LCLK + preportpwrstate = (struct reportpwrstate_parm*)pbuf; + preportpwrstate->state |= (u8)(padapter->pwrctrlpriv.cpwm_tog + 0x80); + cpwm_int_hdl(padapter, preportpwrstate); +#endif + +_func_exit_; + +} + +/* +* _rtw_join_timeout_handler - Timeout/faliure handler for CMD JoinBss +* @adapter: pointer to _adapter structure +*/ +void _rtw_join_timeout_handler (_adapter *adapter) +{ + _irqL irqL; + struct mlme_priv *pmlmepriv = &adapter->mlmepriv; +#ifdef CONFIG_LAYER2_ROAMING + int do_join_r; +#endif //CONFIG_LAYER2_ROAMING + +#if 0 + if (adapter->bDriverStopped == _TRUE){ + _rtw_up_sema(&pmlmepriv->assoc_terminate); + return; + } +#endif + +_func_enter_; +#ifdef PLATFORM_FREEBSD + rtw_mtx_lock(NULL); + if (callout_pending(&adapter->mlmepriv.assoc_timer.callout)) { + /* callout was reset */ + //mtx_unlock(&sc->sc_mtx); + rtw_mtx_unlock(NULL); + return; + } + if (!callout_active(&adapter->mlmepriv.assoc_timer.callout)) { + /* callout was stopped */ + //mtx_unlock(&sc->sc_mtx); + rtw_mtx_unlock(NULL); + return; + } + callout_deactivate(&adapter->mlmepriv.assoc_timer.callout); + + +#endif + + DBG_871X("%s, fw_state=%x\n", __FUNCTION__, get_fwstate(pmlmepriv)); + + if(adapter->bDriverStopped ||adapter->bSurpriseRemoved) + return; + + + _enter_critical_bh(&pmlmepriv->lock, &irqL); + + #ifdef CONFIG_LAYER2_ROAMING + if (rtw_to_roaming(adapter) > 0) { /* join timeout caused by roaming */ + while(1) { + pmlmepriv->to_roaming--; + if (rtw_to_roaming(adapter) != 0) { /* try another */ + DBG_871X("%s try another roaming\n", __FUNCTION__); + if( _SUCCESS!=(do_join_r=rtw_do_join(adapter)) ) { + DBG_871X("%s roaming do_join return %d\n", __FUNCTION__ ,do_join_r); + continue; + } + break; + } else { +#ifdef CONFIG_INTEL_WIDI + if(adapter->mlmepriv.widi_state == INTEL_WIDI_STATE_ROAMING) + { + _rtw_memset(pmlmepriv->sa_ext, 0x00, L2SDTA_SERVICE_VE_LEN); + intel_widi_wk_cmd(adapter, INTEL_WIDI_LISTEN_WK, NULL); + DBG_871X("change to widi listen\n"); + } +#endif // CONFIG_INTEL_WIDI + DBG_871X("%s We've try roaming but fail\n", __FUNCTION__); + rtw_indicate_disconnect(adapter); + break; + } + } + + } else + #endif + { + rtw_indicate_disconnect(adapter); + free_scanqueue(pmlmepriv);//??? + +#ifdef CONFIG_IOCTL_CFG80211 + //indicate disconnect for the case that join_timeout and check_fwstate != FW_LINKED + rtw_cfg80211_indicate_disconnect(adapter); +#endif //CONFIG_IOCTL_CFG80211 + + } + + _exit_critical_bh(&pmlmepriv->lock, &irqL); + + +#ifdef CONFIG_DRVEXT_MODULE_WSC + drvext_assoc_fail_indicate(&adapter->drvextpriv); +#endif +#ifdef PLATFORM_FREEBSD + rtw_mtx_unlock(NULL); +#endif + +_func_exit_; + +} + +/* +* rtw_scan_timeout_handler - Timeout/Faliure handler for CMD SiteSurvey +* @adapter: pointer to _adapter structure +*/ +void rtw_scan_timeout_handler (_adapter *adapter) +{ + _irqL irqL; + struct mlme_priv *pmlmepriv = &adapter->mlmepriv; + + DBG_871X(FUNC_ADPT_FMT" fw_state=%x\n", FUNC_ADPT_ARG(adapter), get_fwstate(pmlmepriv)); + + _enter_critical_bh(&pmlmepriv->lock, &irqL); + + _clr_fwstate_(pmlmepriv, _FW_UNDER_SURVEY); + + _exit_critical_bh(&pmlmepriv->lock, &irqL); + + rtw_indicate_scan_done(adapter, _TRUE); + +} + +static void rtw_auto_scan_handler(_adapter *padapter) +{ + struct mlme_priv *pmlmepriv = &padapter->mlmepriv; + struct pwrctrl_priv *pwrctrlpriv = &padapter->pwrctrlpriv; + + //auto site survey per 60sec + if(pmlmepriv->scan_interval >0) + { + pmlmepriv->scan_interval--; + if(pmlmepriv->scan_interval==0) + { +/* + if (check_fwstate(pmlmepriv, _FW_UNDER_SURVEY|_FW_UNDER_LINKING) == _TRUE) + { + DBG_871X("exit %s when _FW_UNDER_SURVEY|_FW_UNDER_LINKING -> \n", __FUNCTION__); + return; + } + + if(pmlmepriv->sitesurveyctrl.traffic_busy == _TRUE) + { + DBG_871X("%s exit cause traffic_busy(%x)\n",__FUNCTION__, pmlmepriv->sitesurveyctrl.traffic_busy); + return; + } +*/ + +#ifdef CONFIG_CONCURRENT_MODE + if (rtw_buddy_adapter_up(padapter)) + { + if ((check_buddy_fwstate(padapter, _FW_UNDER_SURVEY|_FW_UNDER_LINKING) == _TRUE) || + (padapter->pbuddy_adapter->mlmepriv.LinkDetectInfo.bBusyTraffic == _TRUE)) + { + DBG_871X("%s, but buddy_intf is under scanning or linking or BusyTraffic\n", __FUNCTION__); + return; + } + } +#endif + + DBG_871X("%s\n", __FUNCTION__); + + rtw_set_802_11_bssid_list_scan(padapter, NULL, 0); + + pmlmepriv->scan_interval = SCAN_INTERVAL;// 30*2 sec = 60sec + + } + + } + +} + +void rtw_dynamic_check_timer_handlder(_adapter *adapter) +{ +#ifdef CONFIG_AP_MODE + struct mlme_priv *pmlmepriv = &adapter->mlmepriv; +#endif //CONFIG_AP_MODE + struct registry_priv *pregistrypriv = &adapter->registrypriv; +#ifdef CONFIG_CONCURRENT_MODE + PADAPTER pbuddy_adapter = adapter->pbuddy_adapter; +#endif + + if(!adapter) + return; + + if(adapter->hw_init_completed == _FALSE) + return; + + if ((adapter->bDriverStopped == _TRUE)||(adapter->bSurpriseRemoved== _TRUE)) + return; + + +#ifdef CONFIG_CONCURRENT_MODE + if(pbuddy_adapter) + { + if(adapter->net_closed == _TRUE && pbuddy_adapter->net_closed == _TRUE) + { + return; + } + } + else +#endif //CONFIG_CONCURRENT_MODE + if(adapter->net_closed == _TRUE) + { + return; + } + + rtw_dynamic_chk_wk_cmd(adapter); + + if(pregistrypriv->wifi_spec==1) + { +#ifdef CONFIG_P2P + struct wifidirect_info *pwdinfo = &adapter->wdinfo; + if(rtw_p2p_chk_state(pwdinfo, P2P_STATE_NONE)) +#endif + { + //auto site survey + rtw_auto_scan_handler(adapter); + } + } + +#ifndef CONFIG_ACTIVE_KEEP_ALIVE_CHECK +#ifdef CONFIG_AP_MODE + if(check_fwstate(pmlmepriv, WIFI_AP_STATE) == _TRUE) + { + expire_timeout_chk(adapter); + } +#endif +#endif //!CONFIG_ACTIVE_KEEP_ALIVE_CHECK + +#ifdef CONFIG_BR_EXT + +#if (LINUX_VERSION_CODE > KERNEL_VERSION(2, 6, 35)) + rcu_read_lock(); +#endif // (LINUX_VERSION_CODE > KERNEL_VERSION(2, 6, 35)) + +#if (LINUX_VERSION_CODE <= KERNEL_VERSION(2, 6, 35)) + if( adapter->pnetdev->br_port +#else // (LINUX_VERSION_CODE <= KERNEL_VERSION(2, 6, 35)) + if( rcu_dereference(adapter->pnetdev->rx_handler_data) +#endif // (LINUX_VERSION_CODE <= KERNEL_VERSION(2, 6, 35)) + && (check_fwstate(pmlmepriv, WIFI_STATION_STATE|WIFI_ADHOC_STATE) == _TRUE) ) + { + // expire NAT2.5 entry + void nat25_db_expire(_adapter *priv); + nat25_db_expire(adapter); + + if (adapter->pppoe_connection_in_progress > 0) { + adapter->pppoe_connection_in_progress--; + } + + // due to rtw_dynamic_check_timer_handlder() is called every 2 seconds + if (adapter->pppoe_connection_in_progress > 0) { + adapter->pppoe_connection_in_progress--; + } + } + +#if (LINUX_VERSION_CODE > KERNEL_VERSION(2, 6, 35)) + rcu_read_unlock(); +#endif // (LINUX_VERSION_CODE > KERNEL_VERSION(2, 6, 35)) + +#endif // CONFIG_BR_EXT + +} + + +#ifdef CONFIG_SET_SCAN_DENY_TIMER +inline bool rtw_is_scan_deny(_adapter *adapter) +{ + struct mlme_priv *mlmepriv = &adapter->mlmepriv; + return (ATOMIC_READ(&mlmepriv->set_scan_deny) != 0) ? _TRUE : _FALSE; +} + +inline void rtw_clear_scan_deny(_adapter *adapter) +{ + struct mlme_priv *mlmepriv = &adapter->mlmepriv; + ATOMIC_SET(&mlmepriv->set_scan_deny, 0); + if (0) + DBG_871X(FUNC_ADPT_FMT"\n", FUNC_ADPT_ARG(adapter)); +} + +void rtw_set_scan_deny_timer_hdl(_adapter *adapter) +{ + rtw_clear_scan_deny(adapter); +} + +void rtw_set_scan_deny(_adapter *adapter, u32 ms) +{ + struct mlme_priv *mlmepriv = &adapter->mlmepriv; +#ifdef CONFIG_CONCURRENT_MODE + struct mlme_priv *b_mlmepriv; +#endif + + if (0) + DBG_871X(FUNC_ADPT_FMT"\n", FUNC_ADPT_ARG(adapter)); + ATOMIC_SET(&mlmepriv->set_scan_deny, 1); + _set_timer(&mlmepriv->set_scan_deny_timer, ms); + +#ifdef CONFIG_CONCURRENT_MODE + if (!adapter->pbuddy_adapter) + return; + + if (0) + DBG_871X(FUNC_ADPT_FMT"\n", FUNC_ADPT_ARG(adapter->pbuddy_adapter)); + b_mlmepriv = &adapter->pbuddy_adapter->mlmepriv; + ATOMIC_SET(&b_mlmepriv->set_scan_deny, 1); + _set_timer(&b_mlmepriv->set_scan_deny_timer, ms); +#endif + +} +#endif + +#if defined(IEEE80211_SCAN_RESULT_EXPIRE) +#define RTW_SCAN_RESULT_EXPIRE IEEE80211_SCAN_RESULT_EXPIRE/HZ*1000 -1000 //3000 -1000 +#else +#define RTW_SCAN_RESULT_EXPIRE 2000 +#endif + +#ifndef PLATFORM_FREEBSD +/* +* Select a new join candidate from the original @param candidate and @param competitor +* @return _TRUE: candidate is updated +* @return _FALSE: candidate is not updated +*/ +static int rtw_check_join_candidate(struct mlme_priv *pmlmepriv + , struct wlan_network **candidate, struct wlan_network *competitor) +{ + int updated = _FALSE; + _adapter *adapter = container_of(pmlmepriv, _adapter, mlmepriv); + + + //check bssid, if needed + if(pmlmepriv->assoc_by_bssid==_TRUE) { + if(_rtw_memcmp(competitor->network.MacAddress, pmlmepriv->assoc_bssid, ETH_ALEN) ==_FALSE) + goto exit; + } + + //check ssid, if needed + if(pmlmepriv->assoc_ssid.Ssid && pmlmepriv->assoc_ssid.SsidLength) { + if( competitor->network.Ssid.SsidLength != pmlmepriv->assoc_ssid.SsidLength + || _rtw_memcmp(competitor->network.Ssid.Ssid, pmlmepriv->assoc_ssid.Ssid, pmlmepriv->assoc_ssid.SsidLength) == _FALSE + ) + goto exit; + } + + if(rtw_is_desired_network(adapter, competitor) == _FALSE) + goto exit; + +#ifdef CONFIG_LAYER2_ROAMING + if(rtw_to_roaming(adapter) > 0) { + if( rtw_get_passing_time_ms((u32)competitor->last_scanned) >= RTW_SCAN_RESULT_EXPIRE + || is_same_ess(&competitor->network, &pmlmepriv->cur_network.network) == _FALSE + ) + goto exit; + } +#endif + + if(*candidate == NULL ||(*candidate)->network.Rssinetwork.Rssi ) + { + *candidate = competitor; + updated = _TRUE; + } + +#if 0 + if(pmlmepriv->assoc_by_bssid==_TRUE) { // associate with bssid + if( (*candidate == NULL ||(*candidate)->network.Rssinetwork.Rssi ) + && _rtw_memcmp(competitor->network.MacAddress, pmlmepriv->assoc_bssid, ETH_ALEN)==_TRUE + ) { + *candidate = competitor; + updated = _TRUE; + } + } else if (pmlmepriv->assoc_ssid.SsidLength == 0 ) { // associate with ssid, but ssidlength is 0 + if( (*candidate == NULL ||(*candidate)->network.Rssinetwork.Rssi ) ) { + *candidate = competitor; + updated = _TRUE; + } + } else +#ifdef CONFIG_LAYER2_ROAMING + if(rtw_to_roaming(adapter)) { // roaming + if( (*candidate == NULL ||(*candidate)->network.Rssinetwork.Rssi ) + && is_same_ess(&competitor->network, &pmlmepriv->cur_network.network) + //&&(!is_same_network(&competitor->network, &pmlmepriv->cur_network.network)) + && rtw_get_passing_time_ms((u32)competitor->last_scanned) < RTW_SCAN_RESULT_EXPIRE + && rtw_is_desired_network(adapter, competitor) + ) { + *candidate = competitor; + updated = _TRUE; + } + + } else +#endif + { // associate with ssid + if( (*candidate == NULL ||(*candidate)->network.Rssinetwork.Rssi ) + && (competitor->network.Ssid.SsidLength==pmlmepriv->assoc_ssid.SsidLength) + &&((_rtw_memcmp(competitor->network.Ssid.Ssid, pmlmepriv->assoc_ssid.Ssid, pmlmepriv->assoc_ssid.SsidLength)) == _TRUE) + && rtw_is_desired_network(adapter, competitor) + ) { + *candidate = competitor; + updated = _TRUE; + } + } +#endif + + if(updated){ + DBG_871X("[by_bssid:%u][assoc_ssid:%s]" + #ifdef CONFIG_LAYER2_ROAMING + "[to_roaming:%u] " + #endif + "new candidate: %s("MAC_FMT", ch%u) rssi:%d\n", + pmlmepriv->assoc_by_bssid, + pmlmepriv->assoc_ssid.Ssid, + #ifdef CONFIG_LAYER2_ROAMING + rtw_to_roaming(adapter), + #endif + (*candidate)->network.Ssid.Ssid, + MAC_ARG((*candidate)->network.MacAddress), + (*candidate)->network.Configuration.DSConfig, + (int)(*candidate)->network.Rssi + ); + } + +exit: + return updated; +} + +/* +Calling context: +The caller of the sub-routine will be in critical section... + +The caller must hold the following spinlock + +pmlmepriv->lock + + +*/ + +int rtw_select_and_join_from_scanned_queue(struct mlme_priv *pmlmepriv ) +{ + _irqL irqL; + int ret; + _list *phead; + _adapter *adapter; + _queue *queue = &(pmlmepriv->scanned_queue); + struct wlan_network *pnetwork = NULL; + struct wlan_network *candidate = NULL; + u8 bSupportAntDiv = _FALSE; + +_func_enter_; + + _enter_critical_bh(&(pmlmepriv->scanned_queue.lock), &irqL); + phead = get_list_head(queue); + adapter = (_adapter *)pmlmepriv->nic_hdl; + + pmlmepriv->pscanned = get_next( phead ); + + while (!rtw_end_of_queue_search(phead, pmlmepriv->pscanned)) { + + pnetwork = LIST_CONTAINOR(pmlmepriv->pscanned, struct wlan_network, list); + if(pnetwork==NULL){ + RT_TRACE(_module_rtl871x_mlme_c_,_drv_err_,("%s return _FAIL:(pnetwork==NULL)\n", __FUNCTION__)); + ret = _FAIL; + goto exit; + } + + pmlmepriv->pscanned = get_next(pmlmepriv->pscanned); + + #if 0 + DBG_871X("MacAddress:"MAC_FMT" ssid:%s\n", MAC_ARG(pnetwork->network.MacAddress), pnetwork->network.Ssid.Ssid); + #endif + + rtw_check_join_candidate(pmlmepriv, &candidate, pnetwork); + + } + + if(candidate == NULL) { + DBG_871X("%s: return _FAIL(candidate == NULL)\n", __FUNCTION__); + ret = _FAIL; + goto exit; + } else { + DBG_871X("%s: candidate: %s("MAC_FMT", ch:%u)\n", __FUNCTION__, + candidate->network.Ssid.Ssid, MAC_ARG(candidate->network.MacAddress), + candidate->network.Configuration.DSConfig); + } + + + // check for situation of _FW_LINKED + if (check_fwstate(pmlmepriv, _FW_LINKED) == _TRUE) + { + DBG_871X("%s: _FW_LINKED while ask_for_joinbss!!!\n", __FUNCTION__); + + #if 0 // for WPA/WPA2 authentication, wpa_supplicant will expect authentication from AP, it is needed to reconnect AP... + if(is_same_network(&pmlmepriv->cur_network.network, &candidate->network)) + { + DBG_871X("%s: _FW_LINKED and is same network, it needn't join again\n", __FUNCTION__); + + rtw_indicate_connect(adapter);//rtw_indicate_connect again + + ret = 2; + goto exit; + } + else + #endif + { + rtw_disassoc_cmd(adapter, 0, _TRUE); + rtw_indicate_disconnect(adapter); + rtw_free_assoc_resources(adapter, 0); + } + } + + #ifdef CONFIG_ANTENNA_DIVERSITY + rtw_hal_get_def_var(adapter, HAL_DEF_IS_SUPPORT_ANT_DIV, &(bSupportAntDiv)); + if(_TRUE == bSupportAntDiv) + { + u8 CurrentAntenna; + rtw_hal_get_def_var(adapter, HAL_DEF_CURRENT_ANTENNA, &(CurrentAntenna)); + DBG_871X("#### Opt_Ant_(%s) , cur_Ant(%s)\n", + (2==candidate->network.PhyInfo.Optimum_antenna)?"A":"B", + (2==CurrentAntenna)?"A":"B" + ); + } + #endif + set_fwstate(pmlmepriv, _FW_UNDER_LINKING); + ret = rtw_joinbss_cmd(adapter, candidate); + +exit: + _exit_critical_bh(&(pmlmepriv->scanned_queue.lock), &irqL); + +_func_exit_; + + return ret; +} +#else +int rtw_select_and_join_from_scanned_queue(struct mlme_priv *pmlmepriv ) +{ + _irqL irqL; + _list *phead; +#ifdef CONFIG_ANTENNA_DIVERSITY + u8 CurrentAntenna; +#endif + unsigned char *dst_ssid, *src_ssid; + _adapter *adapter; + _queue *queue = &(pmlmepriv->scanned_queue); + struct wlan_network *pnetwork = NULL; + struct wlan_network *pnetwork_max_rssi = NULL; + #ifdef CONFIG_LAYER2_ROAMING + struct wlan_network * roaming_candidate=NULL; + u32 cur_time=rtw_get_current_time(); + #endif + +_func_enter_; + _enter_critical_bh(&(pmlmepriv->scanned_queue.lock), &irqL); + phead = get_list_head(queue); + adapter = (_adapter *)pmlmepriv->nic_hdl; + + pmlmepriv->pscanned = get_next( phead ); + + while (!rtw_end_of_queue_search(phead, pmlmepriv->pscanned)) { + + pnetwork = LIST_CONTAINOR(pmlmepriv->pscanned, struct wlan_network, list); + if(pnetwork==NULL){ + RT_TRACE(_module_rtl871x_mlme_c_,_drv_err_,("(2)rtw_select_and_join_from_scanned_queue return _FAIL:(pnetwork==NULL)\n")); + _exit_critical_bh(&(pmlmepriv->scanned_queue.lock), &irqL); + return _FAIL; + } + + dst_ssid = pnetwork->network.Ssid.Ssid; + src_ssid = pmlmepriv->assoc_ssid.Ssid; + + pmlmepriv->pscanned = get_next(pmlmepriv->pscanned); + + #if 0 + DBG_871X("MacAddress:"MAC_FMT" ssid:%s\n", MAC_ARG(pnetwork->network.MacAddress), pnetwork->network.Ssid.Ssid); + #endif + + if(pmlmepriv->assoc_by_bssid==_TRUE) + { + if(_rtw_memcmp(pnetwork->network.MacAddress, pmlmepriv->assoc_bssid, ETH_ALEN)==_TRUE) + { + //remove the condition @ 20081125 + //if((pmlmepriv->cur_network.network.InfrastructureMode==Ndis802_11AutoUnknown)|| + // pmlmepriv->cur_network.network.InfrastructureMode == pnetwork->network.InfrastructureMode) + // goto ask_for_joinbss; + + if (check_fwstate(pmlmepriv, _FW_LINKED) == _TRUE) + { + if(is_same_network(&pmlmepriv->cur_network.network, &pnetwork->network)) + { + //DBG_871X("select_and_join(1): _FW_LINKED and is same network, it needn't join again\n"); + + rtw_indicate_connect(adapter);//rtw_indicate_connect again + _exit_critical_bh(&(pmlmepriv->scanned_queue.lock), &irqL); + return 2; + } + else + { + rtw_disassoc_cmd(adapter, 0, _TRUE); + rtw_indicate_disconnect(adapter); + rtw_free_assoc_resources(adapter, 0); + _exit_critical_bh(&(pmlmepriv->scanned_queue.lock), &irqL); + goto ask_for_joinbss; + + } + } + else + { + _exit_critical_bh(&(pmlmepriv->scanned_queue.lock), &irqL); + goto ask_for_joinbss; + } + + } + + } else if (pmlmepriv->assoc_ssid.SsidLength == 0) { + _exit_critical_bh(&(pmlmepriv->scanned_queue.lock), &irqL); + goto ask_for_joinbss;//anyway, join first selected(dequeued) pnetwork if ssid_len=0 + + #ifdef CONFIG_LAYER2_ROAMING + } else if (rtw_to_roaming(adapter) > 0) { + + if( (roaming_candidate == NULL ||roaming_candidate->network.Rssinetwork.Rssi ) + && is_same_ess(&pnetwork->network, &pmlmepriv->cur_network.network) + //&&(!is_same_network(&pnetwork->network, &pmlmepriv->cur_network.network)) + && rtw_get_time_interval_ms((u32)pnetwork->last_scanned,cur_time) < 5000 + ) { + roaming_candidate = pnetwork; + //RT_TRACE(_module_rtl871x_mlme_c_,_drv_err_, + DBG_871X + ("roaming_candidate???: %s("MAC_FMT")\n", + roaming_candidate->network.Ssid.Ssid, MAC_ARG(roaming_candidate->network.MacAddress) ) + //) + ; + } + continue; + #endif + + } else if ( (pnetwork->network.Ssid.SsidLength==pmlmepriv->assoc_ssid.SsidLength) + &&((_rtw_memcmp(dst_ssid, src_ssid, pmlmepriv->assoc_ssid.SsidLength)) == _TRUE) + ) + { + RT_TRACE(_module_rtl871x_mlme_c_,_drv_err_,("dst_ssid=%s, src_ssid=%s \n", dst_ssid, src_ssid)); +#ifdef CONFIG_ANTENNA_DIVERSITY + rtw_hal_get_def_var(adapter, HAL_DEF_CURRENT_ANTENNA, &(CurrentAntenna)); + DBG_871X("#### dst_ssid=(%s) Opt_Ant_(%s) , cur_Ant(%s)\n", dst_ssid, + (2==pnetwork->network.PhyInfo.Optimum_antenna)?"A":"B", + (2==CurrentAntenna)?"A":"B"); +#endif + //remove the condition @ 20081125 + //if((pmlmepriv->cur_network.network.InfrastructureMode==Ndis802_11AutoUnknown)|| + // pmlmepriv->cur_network.network.InfrastructureMode == pnetwork->network.InfrastructureMode) + //{ + // _rtw_memcpy(pmlmepriv->assoc_bssid, pnetwork->network.MacAddress, ETH_ALEN); + // goto ask_for_joinbss; + //} + + if(pmlmepriv->assoc_by_rssi==_TRUE)//if the ssid is the same, select the bss which has the max rssi + { + if( NULL==pnetwork_max_rssi|| pnetwork->network.Rssi > pnetwork_max_rssi->network.Rssi) + pnetwork_max_rssi = pnetwork; + } + else if(rtw_is_desired_network(adapter, pnetwork) == _TRUE) + { + if (check_fwstate(pmlmepriv, _FW_LINKED) == _TRUE) + { +#if 0 + if(is_same_network(&pmlmepriv->cur_network.network, &pnetwork->network)) + { + DBG_871X("select_and_join(2): _FW_LINKED and is same network, it needn't join again\n"); + + rtw_indicate_connect(adapter);//rtw_indicate_connect again + + return 2; + } + else +#endif + { + rtw_disassoc_cmd(adapter, 0, _TRUE); + //rtw_indicate_disconnect(adapter);// + rtw_free_assoc_resources(adapter, 0); + _exit_critical_bh(&(pmlmepriv->scanned_queue.lock), &irqL); + goto ask_for_joinbss; + } + } + else + { + _exit_critical_bh(&(pmlmepriv->scanned_queue.lock), &irqL); + goto ask_for_joinbss; + } + + } + + + } + + } + _exit_critical_bh(&(pmlmepriv->scanned_queue.lock), &irqL); + #ifdef CONFIG_LAYER2_ROAMING + if(rtw_to_roaming(adapter) > 0 && roaming_candidate ){ + pnetwork=roaming_candidate; + DBG_871X("select_and_join_from_scanned_queue: roaming_candidate: %s("MAC_FMT")\n", + pnetwork->network.Ssid.Ssid, MAC_ARG(pnetwork->network.MacAddress)); + goto ask_for_joinbss; + } + #endif + + if((pmlmepriv->assoc_by_rssi==_TRUE) && (pnetwork_max_rssi!=NULL)) + { + pnetwork = pnetwork_max_rssi; + DBG_871X("select_and_join_from_scanned_queue: pnetwork_max_rssi: %s("MAC_FMT")\n", + pnetwork->network.Ssid.Ssid, MAC_ARG(pnetwork->network.MacAddress)); + goto ask_for_joinbss; + } + + DBG_871X("(1)rtw_select_and_join_from_scanned_queue return _FAIL\n"); + +_func_exit_; + + return _FAIL; + +ask_for_joinbss: + +_func_exit_; + + return rtw_joinbss_cmd(adapter, pnetwork); + +} +#endif //PLATFORM_FREEBSD + + +sint rtw_set_auth(_adapter * adapter,struct security_priv *psecuritypriv) +{ + struct cmd_obj* pcmd; + struct setauth_parm *psetauthparm; + struct cmd_priv *pcmdpriv=&(adapter->cmdpriv); + sint res=_SUCCESS; + +_func_enter_; + + pcmd = (struct cmd_obj*)rtw_zmalloc(sizeof(struct cmd_obj)); + if(pcmd==NULL){ + res= _FAIL; //try again + goto exit; + } + + psetauthparm=(struct setauth_parm*)rtw_zmalloc(sizeof(struct setauth_parm)); + if(psetauthparm==NULL){ + rtw_mfree((unsigned char *)pcmd, sizeof(struct cmd_obj)); + res= _FAIL; + goto exit; + } + + _rtw_memset(psetauthparm, 0, sizeof(struct setauth_parm)); + psetauthparm->mode=(unsigned char)psecuritypriv->dot11AuthAlgrthm; + + pcmd->cmdcode = _SetAuth_CMD_; + pcmd->parmbuf = (unsigned char *)psetauthparm; + pcmd->cmdsz = (sizeof(struct setauth_parm)); + pcmd->rsp = NULL; + pcmd->rspsz = 0; + + + _rtw_init_listhead(&pcmd->list); + + RT_TRACE(_module_rtl871x_mlme_c_,_drv_err_,("after enqueue set_auth_cmd, auth_mode=%x\n", psecuritypriv->dot11AuthAlgrthm)); + + res = rtw_enqueue_cmd(pcmdpriv, pcmd); + +exit: + +_func_exit_; + + return res; + +} + + +sint rtw_set_key(_adapter * adapter,struct security_priv *psecuritypriv,sint keyid, u8 set_tx) +{ + u8 keylen; + struct cmd_obj *pcmd; + struct setkey_parm *psetkeyparm; + struct cmd_priv *pcmdpriv = &(adapter->cmdpriv); + struct mlme_priv *pmlmepriv = &(adapter->mlmepriv); + sint res=_SUCCESS; + +_func_enter_; + + pcmd = (struct cmd_obj*)rtw_zmalloc(sizeof(struct cmd_obj)); + if(pcmd==NULL){ + res= _FAIL; //try again + goto exit; + } + psetkeyparm=(struct setkey_parm*)rtw_zmalloc(sizeof(struct setkey_parm)); + if(psetkeyparm==NULL){ + rtw_mfree((unsigned char *)pcmd, sizeof(struct cmd_obj)); + res= _FAIL; + goto exit; + } + + _rtw_memset(psetkeyparm, 0, sizeof(struct setkey_parm)); + + if(psecuritypriv->dot11AuthAlgrthm ==dot11AuthAlgrthm_8021X){ + psetkeyparm->algorithm=(unsigned char)psecuritypriv->dot118021XGrpPrivacy; + RT_TRACE(_module_rtl871x_mlme_c_,_drv_err_,("\n rtw_set_key: psetkeyparm->algorithm=(unsigned char)psecuritypriv->dot118021XGrpPrivacy=%d \n", psetkeyparm->algorithm)); + } + else{ + psetkeyparm->algorithm=(u8)psecuritypriv->dot11PrivacyAlgrthm; + RT_TRACE(_module_rtl871x_mlme_c_,_drv_err_,("\n rtw_set_key: psetkeyparm->algorithm=(u8)psecuritypriv->dot11PrivacyAlgrthm=%d \n", psetkeyparm->algorithm)); + + } + psetkeyparm->keyid = (u8)keyid;//0~3 + psetkeyparm->set_tx = set_tx; + if (is_wep_enc(psetkeyparm->algorithm)) + psecuritypriv->key_mask |= BIT(psetkeyparm->keyid); + + DBG_871X("==> rtw_set_key algorithm(%x),keyid(%x),key_mask(%x)\n",psetkeyparm->algorithm,psetkeyparm->keyid, psecuritypriv->key_mask); + RT_TRACE(_module_rtl871x_mlme_c_,_drv_err_,("\n rtw_set_key: psetkeyparm->algorithm=%d psetkeyparm->keyid=(u8)keyid=%d \n",psetkeyparm->algorithm, keyid)); + + switch(psetkeyparm->algorithm){ + + case _WEP40_: + keylen=5; + _rtw_memcpy(&(psetkeyparm->key[0]), &(psecuritypriv->dot11DefKey[keyid].skey[0]), keylen); + break; + case _WEP104_: + keylen=13; + _rtw_memcpy(&(psetkeyparm->key[0]), &(psecuritypriv->dot11DefKey[keyid].skey[0]), keylen); + break; + case _TKIP_: + keylen=16; + _rtw_memcpy(&psetkeyparm->key, &psecuritypriv->dot118021XGrpKey[keyid], keylen); + psetkeyparm->grpkey=1; + break; + case _AES_: + keylen=16; + _rtw_memcpy(&psetkeyparm->key, &psecuritypriv->dot118021XGrpKey[keyid], keylen); + psetkeyparm->grpkey=1; + break; + default: + RT_TRACE(_module_rtl871x_mlme_c_,_drv_err_,("\n rtw_set_key:psecuritypriv->dot11PrivacyAlgrthm = %x (must be 1 or 2 or 4 or 5)\n",psecuritypriv->dot11PrivacyAlgrthm)); + res= _FAIL; + goto exit; + } + + + pcmd->cmdcode = _SetKey_CMD_; + pcmd->parmbuf = (u8 *)psetkeyparm; + pcmd->cmdsz = (sizeof(struct setkey_parm)); + pcmd->rsp = NULL; + pcmd->rspsz = 0; + + + _rtw_init_listhead(&pcmd->list); + + //_rtw_init_sema(&(pcmd->cmd_sem), 0); + + res = rtw_enqueue_cmd(pcmdpriv, pcmd); + +exit: +_func_exit_; + return res; + +} + + +//adjust IEs for rtw_joinbss_cmd in WMM +int rtw_restruct_wmm_ie(_adapter *adapter, u8 *in_ie, u8 *out_ie, uint in_len, uint initial_out_len) +{ + unsigned int ielength=0; + unsigned int i, j; + + i = 12; //after the fixed IE + while(i=0 :if there is pre-auth key, and return the entry id +// +// + +static int SecIsInPMKIDList(_adapter *Adapter, u8 *bssid) +{ + struct security_priv *psecuritypriv=&Adapter->securitypriv; + int i=0; + + do + { + if( ( psecuritypriv->PMKIDList[i].bUsed ) && + ( _rtw_memcmp( psecuritypriv->PMKIDList[i].Bssid, bssid, ETH_ALEN ) == _TRUE ) ) + { + break; + } + else + { + i++; + //continue; + } + + }while(isecuritypriv; + + if(ie[13]<=20){ + // The RSN IE didn't include the PMK ID, append the PMK information + ie[ie_len]=1; + ie_len++; + ie[ie_len]=0; //PMKID count = 0x0100 + ie_len++; + _rtw_memcpy( &ie[ie_len], &psecuritypriv->PMKIDList[iEntry].PMKID, 16); + + ie_len+=16; + ie[13]+=18;//PMKID length = 2+16 + + } + return (ie_len); + +} +sint rtw_restruct_sec_ie(_adapter *adapter,u8 *in_ie, u8 *out_ie, uint in_len) +{ + u8 authmode, securitytype, match; + u8 sec_ie[255], uncst_oui[4], bkup_ie[255]; + u8 wpa_oui[4]={0x0, 0x50, 0xf2, 0x01}; + uint ielength, cnt, remove_cnt; + int iEntry; + + struct mlme_priv *pmlmepriv = &adapter->mlmepriv; + struct security_priv *psecuritypriv=&adapter->securitypriv; + uint ndisauthmode=psecuritypriv->ndisauthtype; + uint ndissecuritytype = psecuritypriv->ndisencryptstatus; + +_func_enter_; + + RT_TRACE(_module_rtl871x_mlme_c_, _drv_notice_, + ("+rtw_restruct_sec_ie: ndisauthmode=%d ndissecuritytype=%d\n", + ndisauthmode, ndissecuritytype)); + + //copy fixed ie only + _rtw_memcpy(out_ie, in_ie,12); + ielength=12; + if((ndisauthmode==Ndis802_11AuthModeWPA)||(ndisauthmode==Ndis802_11AuthModeWPAPSK)) + authmode=_WPA_IE_ID_; + if((ndisauthmode==Ndis802_11AuthModeWPA2)||(ndisauthmode==Ndis802_11AuthModeWPA2PSK)) + authmode=_WPA2_IE_ID_; + + if(check_fwstate(pmlmepriv, WIFI_UNDER_WPS)) + { + _rtw_memcpy(out_ie+ielength, psecuritypriv->wps_ie, psecuritypriv->wps_ie_len); + + ielength += psecuritypriv->wps_ie_len; + } + else if((authmode==_WPA_IE_ID_)||(authmode==_WPA2_IE_ID_)) + { + //copy RSN or SSN + _rtw_memcpy(&out_ie[ielength], &psecuritypriv->supplicant_ie[0], psecuritypriv->supplicant_ie[1]+2); + /* debug for CONFIG_IEEE80211W + { + int jj; + printk("supplicant_ie_length=%d &&&&&&&&&&&&&&&&&&&\n", psecuritypriv->supplicant_ie[1]+2); + for(jj=0; jj < psecuritypriv->supplicant_ie[1]+2; jj++) + printk(" %02x ", psecuritypriv->supplicant_ie[jj]); + printk("\n"); + }*/ + ielength+=psecuritypriv->supplicant_ie[1]+2; + rtw_report_sec_ie(adapter, authmode, psecuritypriv->supplicant_ie); + +#ifdef CONFIG_DRVEXT_MODULE + drvext_report_sec_ie(&adapter->drvextpriv, authmode, sec_ie); +#endif + } + + iEntry = SecIsInPMKIDList(adapter, pmlmepriv->assoc_bssid); + if(iEntry<0) + { + return ielength; + } + else + { + if(authmode == _WPA2_IE_ID_) + { + ielength=rtw_append_pmkid(adapter, iEntry, out_ie, ielength); + } + } + +_func_exit_; + + return ielength; +} + +void rtw_init_registrypriv_dev_network( _adapter* adapter) +{ + struct registry_priv* pregistrypriv = &adapter->registrypriv; + struct eeprom_priv* peepriv = &adapter->eeprompriv; + WLAN_BSSID_EX *pdev_network = &pregistrypriv->dev_network; + u8 *myhwaddr = myid(peepriv); + +_func_enter_; + + _rtw_memcpy(pdev_network->MacAddress, myhwaddr, ETH_ALEN); + + _rtw_memcpy(&pdev_network->Ssid, &pregistrypriv->ssid, sizeof(NDIS_802_11_SSID)); + + pdev_network->Configuration.Length=sizeof(NDIS_802_11_CONFIGURATION); + pdev_network->Configuration.BeaconPeriod = 100; + pdev_network->Configuration.FHConfig.Length = 0; + pdev_network->Configuration.FHConfig.HopPattern = 0; + pdev_network->Configuration.FHConfig.HopSet = 0; + pdev_network->Configuration.FHConfig.DwellTime = 0; + + +_func_exit_; + +} + +void rtw_update_registrypriv_dev_network(_adapter* adapter) +{ + int sz=0; + struct registry_priv* pregistrypriv = &adapter->registrypriv; + WLAN_BSSID_EX *pdev_network = &pregistrypriv->dev_network; + struct security_priv* psecuritypriv = &adapter->securitypriv; + struct wlan_network *cur_network = &adapter->mlmepriv.cur_network; + //struct xmit_priv *pxmitpriv = &adapter->xmitpriv; + +_func_enter_; + +#if 0 + pxmitpriv->vcs_setting = pregistrypriv->vrtl_carrier_sense; + pxmitpriv->vcs = pregistrypriv->vcs_type; + pxmitpriv->vcs_type = pregistrypriv->vcs_type; + //pxmitpriv->rts_thresh = pregistrypriv->rts_thresh; + pxmitpriv->frag_len = pregistrypriv->frag_thresh; + + adapter->qospriv.qos_option = pregistrypriv->wmm_enable; +#endif + + pdev_network->Privacy = (psecuritypriv->dot11PrivacyAlgrthm > 0 ? 1 : 0) ; // adhoc no 802.1x + + pdev_network->Rssi = 0; + + switch(pregistrypriv->wireless_mode) + { + case WIRELESS_11B: + pdev_network->NetworkTypeInUse = (Ndis802_11DS); + break; + case WIRELESS_11G: + case WIRELESS_11BG: + case WIRELESS_11_24N: + case WIRELESS_11G_24N: + case WIRELESS_11BG_24N: + pdev_network->NetworkTypeInUse = (Ndis802_11OFDM24); + break; + case WIRELESS_11A: + case WIRELESS_11A_5N: + pdev_network->NetworkTypeInUse = (Ndis802_11OFDM5); + break; + case WIRELESS_11ABGN: + if(pregistrypriv->channel > 14) + pdev_network->NetworkTypeInUse = (Ndis802_11OFDM5); + else + pdev_network->NetworkTypeInUse = (Ndis802_11OFDM24); + break; + default : + // TODO + break; + } + + pdev_network->Configuration.DSConfig = (pregistrypriv->channel); + RT_TRACE(_module_rtl871x_mlme_c_,_drv_info_,("pregistrypriv->channel=%d, pdev_network->Configuration.DSConfig=0x%x\n", pregistrypriv->channel, pdev_network->Configuration.DSConfig)); + + if(cur_network->network.InfrastructureMode == Ndis802_11IBSS) + pdev_network->Configuration.ATIMWindow = (0); + + pdev_network->InfrastructureMode = (cur_network->network.InfrastructureMode); + + // 1. Supported rates + // 2. IE + + //rtw_set_supported_rate(pdev_network->SupportedRates, pregistrypriv->wireless_mode) ; // will be called in rtw_generate_ie + sz = rtw_generate_ie(pregistrypriv); + + pdev_network->IELength = sz; + + pdev_network->Length = get_WLAN_BSSID_EX_sz((WLAN_BSSID_EX *)pdev_network); + + //notes: translate IELength & Length after assign the Length to cmdsz in createbss_cmd(); + //pdev_network->IELength = cpu_to_le32(sz); + +_func_exit_; + +} + +void rtw_get_encrypt_decrypt_from_registrypriv(_adapter* adapter) +{ +_func_enter_; + + +_func_exit_; + +} + +//the fucntion is at passive_level +void rtw_joinbss_reset(_adapter *padapter) +{ + u8 threshold; + struct mlme_priv *pmlmepriv = &padapter->mlmepriv; + +#ifdef CONFIG_80211N_HT + struct ht_priv *phtpriv = &pmlmepriv->htpriv; +#endif + + //todo: if you want to do something io/reg/hw setting before join_bss, please add code here + + + + +#ifdef CONFIG_80211N_HT + + pmlmepriv->num_FortyMHzIntolerant = 0; + + pmlmepriv->num_sta_no_ht = 0; + + phtpriv->ampdu_enable = _FALSE;//reset to disabled + +#ifdef CONFIG_USB_HCI + // TH=1 => means that invalidate usb rx aggregation + // TH=0 => means that validate usb rx aggregation, use init value. + if(phtpriv->ht_option) + { + if(padapter->registrypriv.wifi_spec==1) + threshold = 1; + else + threshold = 0; + rtw_hal_set_hwreg(padapter, HW_VAR_RXDMA_AGG_PG_TH, (u8 *)(&threshold)); + } + else + { + threshold = 1; + rtw_hal_set_hwreg(padapter, HW_VAR_RXDMA_AGG_PG_TH, (u8 *)(&threshold)); + } +#endif + +#endif + +} + + +#ifdef CONFIG_80211N_HT + +//the fucntion is >= passive_level +unsigned int rtw_restructure_ht_ie(_adapter *padapter, u8 *in_ie, u8 *out_ie, uint in_len, uint *pout_len, u8 channel) +{ + u32 ielen, out_len; + unsigned char *p, *pframe; + struct rtw_ieee80211_ht_cap ht_capie; + unsigned char WMM_IE[] = {0x00, 0x50, 0xf2, 0x02, 0x00, 0x01, 0x00}; + struct mlme_priv *pmlmepriv = &padapter->mlmepriv; + struct qos_priv *pqospriv= &pmlmepriv->qospriv; + struct ht_priv *phtpriv = &pmlmepriv->htpriv; + struct registry_priv *pregpriv = &padapter->registrypriv; + u8 cbw40_enable = 0; + + phtpriv->ht_option = _FALSE; + + p = rtw_get_ie(in_ie+12, _HT_CAPABILITY_IE_, &ielen, in_len-12); + + if(p && ielen>0) + { + if(pqospriv->qos_option == 0) + { + out_len = *pout_len; + pframe = rtw_set_ie(out_ie+out_len, _VENDOR_SPECIFIC_IE_, + _WMM_IE_Length_, WMM_IE, pout_len); + + pqospriv->qos_option = 1; + } + + out_len = *pout_len; + + _rtw_memset(&ht_capie, 0, sizeof(struct rtw_ieee80211_ht_cap)); + + ht_capie.cap_info = IEEE80211_HT_CAP_SGI_20 | IEEE80211_HT_CAP_TX_STBC | + IEEE80211_HT_CAP_DSSSCCK40; + //if insert module set only support 20MHZ, don't add the 40MHZ and SGI_40 + if( channel > 14 ) + { + if( pregpriv->cbw40_enable & BIT(1) ) + cbw40_enable = 1; + } + else + if( pregpriv->cbw40_enable & BIT(0) ) + cbw40_enable = 1; + + if ( cbw40_enable != 0 ) + ht_capie.cap_info |= IEEE80211_HT_CAP_SUP_WIDTH | IEEE80211_HT_CAP_SGI_40; + + + + { + u32 rx_packet_offset, max_recvbuf_sz; + rtw_hal_get_def_var(padapter, HAL_DEF_RX_PACKET_OFFSET, &rx_packet_offset); + rtw_hal_get_def_var(padapter, HAL_DEF_MAX_RECVBUF_SZ, &max_recvbuf_sz); + //if(max_recvbuf_sz-rx_packet_offset>(8191-256)) { + // DBG_871X("%s IEEE80211_HT_CAP_MAX_AMSDU is set\n", __FUNCTION__); + // ht_capie.cap_info = ht_capie.cap_info |IEEE80211_HT_CAP_MAX_AMSDU; + //} + } + + ht_capie.ampdu_params_info = (IEEE80211_HT_CAP_AMPDU_FACTOR&0x03); + + if(padapter->securitypriv.dot11PrivacyAlgrthm == _AES_ ) + ht_capie.ampdu_params_info |= (IEEE80211_HT_CAP_AMPDU_DENSITY&(0x07<<2)); + else + ht_capie.ampdu_params_info |= (IEEE80211_HT_CAP_AMPDU_DENSITY&0x00); + + + pframe = rtw_set_ie(out_ie+out_len, _HT_CAPABILITY_IE_, + sizeof(struct rtw_ieee80211_ht_cap), (unsigned char*)&ht_capie, pout_len); + + + //_rtw_memcpy(out_ie+out_len, p, ielen+2);//gtest + //*pout_len = *pout_len + (ielen+2); + + + phtpriv->ht_option = _TRUE; + + p = rtw_get_ie(in_ie+12, _HT_ADD_INFO_IE_, &ielen, in_len-12); + if(p && (ielen==sizeof(struct ieee80211_ht_addt_info))) + { + out_len = *pout_len; + pframe = rtw_set_ie(out_ie+out_len, _HT_ADD_INFO_IE_, ielen, p+2 , pout_len); + } + + } + + return (phtpriv->ht_option); + +} + +//the fucntion is > passive_level (in critical_section) +void rtw_update_ht_cap(_adapter *padapter, u8 *pie, uint ie_len, u8 channel) +{ + u8 *p, max_ampdu_sz; + int len; + //struct sta_info *bmc_sta, *psta; + struct rtw_ieee80211_ht_cap *pht_capie; + struct ieee80211_ht_addt_info *pht_addtinfo; + //struct recv_reorder_ctrl *preorder_ctrl; + struct mlme_priv *pmlmepriv = &padapter->mlmepriv; + struct ht_priv *phtpriv = &pmlmepriv->htpriv; + //struct recv_priv *precvpriv = &padapter->recvpriv; + struct registry_priv *pregistrypriv = &padapter->registrypriv; + //struct wlan_network *pcur_network = &(pmlmepriv->cur_network);; + struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; + struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info); + u8 cbw40_enable=0; + + if(!phtpriv->ht_option) + return; + + if ((!pmlmeinfo->HT_info_enable) || (!pmlmeinfo->HT_caps_enable)) + return; + + DBG_871X("+rtw_update_ht_cap()\n"); + + //maybe needs check if ap supports rx ampdu. + if((phtpriv->ampdu_enable==_FALSE) &&(pregistrypriv->ampdu_enable==1)) + { + //In the wifi cert. test, the test Lab should turn off the AP's RX AMPDU. client doen't need to close the TX AMPDU + /*if(pregistrypriv->wifi_spec==1) + { + phtpriv->ampdu_enable = _FALSE; + } + else*/ + { + phtpriv->ampdu_enable = _TRUE; + } + } + else if(pregistrypriv->ampdu_enable==2) + { + phtpriv->ampdu_enable = _TRUE; + } + + + //check Max Rx A-MPDU Size + len = 0; + p = rtw_get_ie(pie+sizeof (NDIS_802_11_FIXED_IEs), _HT_CAPABILITY_IE_, &len, ie_len-sizeof (NDIS_802_11_FIXED_IEs)); + if(p && len>0) + { + pht_capie = (struct rtw_ieee80211_ht_cap *)(p+2); + max_ampdu_sz = (pht_capie->ampdu_params_info & IEEE80211_HT_CAP_AMPDU_FACTOR); + max_ampdu_sz = 1 << (max_ampdu_sz+3); // max_ampdu_sz (kbytes); + + //DBG_871X("rtw_update_ht_cap(): max_ampdu_sz=%d\n", max_ampdu_sz); + phtpriv->rx_ampdu_maxlen = max_ampdu_sz; + + } + + + len=0; + p = rtw_get_ie(pie+sizeof (NDIS_802_11_FIXED_IEs), _HT_ADD_INFO_IE_, &len, ie_len-sizeof (NDIS_802_11_FIXED_IEs)); + if(p && len>0) + { + pht_addtinfo = (struct ieee80211_ht_addt_info *)(p+2); + //todo: + } + + if( channel > 14 ) + { + if( pregistrypriv->cbw40_enable & BIT(1) ) + cbw40_enable = 1; + } + else + if( pregistrypriv->cbw40_enable & BIT(0) ) + cbw40_enable = 1; + + + //update cur_bwmode & cur_ch_offset + if ((cbw40_enable) && + (pmlmeinfo->HT_caps.u.HT_cap_element.HT_caps_info & BIT(1)) && + (pmlmeinfo->HT_info.infos[0] & BIT(2))) + { + int i; + u8 rf_type; + + rtw_hal_get_hwreg(padapter, HW_VAR_RF_TYPE, (u8 *)(&rf_type)); + + //update the MCS rates + for (i = 0; i < 16; i++) + { + if((rf_type == RF_1T1R) || (rf_type == RF_1T2R)) + { + pmlmeinfo->HT_caps.u.HT_cap_element.MCS_rate[i] &= MCS_rate_1R[i]; + } + else + { + #ifdef CONFIG_DISABLE_MCS13TO15 + if(pmlmeext->cur_bwmode == HT_CHANNEL_WIDTH_40 && pregistrypriv->wifi_spec != 1 ) + { + pmlmeinfo->HT_caps.u.HT_cap_element.MCS_rate[i] &= MCS_rate_2R_MCS13TO15_OFF[i]; + } + else + pmlmeinfo->HT_caps.u.HT_cap_element.MCS_rate[i] &= MCS_rate_2R[i]; + #else + pmlmeinfo->HT_caps.u.HT_cap_element.MCS_rate[i] &= MCS_rate_2R[i]; + #endif //CONFIG_DISABLE_MCS13TO15 + } + #ifdef RTL8192C_RECONFIG_TO_1T1R + { + pmlmeinfo->HT_caps.u.HT_cap_element.MCS_rate[i] &= MCS_rate_1R[i]; + } + #endif + + if(pregistrypriv->special_rf_path) + pmlmeinfo->HT_caps.u.HT_cap_element.MCS_rate[i] &= MCS_rate_1R[i]; + + } + //switch to the 40M Hz mode accoring to the AP + pmlmeext->cur_bwmode = HT_CHANNEL_WIDTH_40; + switch ((pmlmeinfo->HT_info.infos[0] & 0x3)) + { + case HT_EXTCHNL_OFFSET_UPPER: + pmlmeext->cur_ch_offset = HAL_PRIME_CHNL_OFFSET_LOWER; + break; + + case HT_EXTCHNL_OFFSET_LOWER: + pmlmeext->cur_ch_offset = HAL_PRIME_CHNL_OFFSET_UPPER; + break; + + default: + pmlmeext->cur_ch_offset = HAL_PRIME_CHNL_OFFSET_DONT_CARE; + break; + } + } + + // + // Config SM Power Save setting + // + pmlmeinfo->SM_PS = (pmlmeinfo->HT_caps.u.HT_cap_element.HT_caps_info & 0x0C) >> 2; + if(pmlmeinfo->SM_PS == WLAN_HT_CAP_SM_PS_STATIC) + { + /*u8 i; + //update the MCS rates + for (i = 0; i < 16; i++) + { + pmlmeinfo->HT_caps.HT_cap_element.MCS_rate[i] &= MCS_rate_1R[i]; + }*/ + DBG_871X("%s(): WLAN_HT_CAP_SM_PS_STATIC\n",__FUNCTION__); + } + + // + // Config current HT Protection mode. + // + pmlmeinfo->HT_protection = pmlmeinfo->HT_info.infos[1] & 0x3; + + + +#if 0 //move to rtw_update_sta_info_client() + //for A-MPDU Rx reordering buffer control for bmc_sta & sta_info + //if A-MPDU Rx is enabled, reseting rx_ordering_ctrl wstart_b(indicate_seq) to default value=0xffff + //todo: check if AP can send A-MPDU packets + bmc_sta = rtw_get_bcmc_stainfo(padapter); + if(bmc_sta) + { + for(i=0; i < 16 ; i++) + { + //preorder_ctrl = &precvpriv->recvreorder_ctrl[i]; + preorder_ctrl = &bmc_sta->recvreorder_ctrl[i]; + preorder_ctrl->enable = _FALSE; + preorder_ctrl->indicate_seq = 0xffff; + #ifdef DBG_RX_SEQ + DBG_871X("DBG_RX_SEQ %s:%d indicate_seq:%u \n", __FUNCTION__, __LINE__, + preorder_ctrl->indicate_seq); + #endif + preorder_ctrl->wend_b= 0xffff; + preorder_ctrl->wsize_b = 64;//max_ampdu_sz;//ex. 32(kbytes) -> wsize_b=32 + } + } + + psta = rtw_get_stainfo(&padapter->stapriv, pcur_network->network.MacAddress); + if(psta) + { + for(i=0; i < 16 ; i++) + { + //preorder_ctrl = &precvpriv->recvreorder_ctrl[i]; + preorder_ctrl = &psta->recvreorder_ctrl[i]; + preorder_ctrl->enable = _FALSE; + preorder_ctrl->indicate_seq = 0xffff; + #ifdef DBG_RX_SEQ + DBG_871X("DBG_RX_SEQ %s:%d indicate_seq:%u \n", __FUNCTION__, __LINE__, + preorder_ctrl->indicate_seq); + #endif + preorder_ctrl->wend_b= 0xffff; + preorder_ctrl->wsize_b = 64;//max_ampdu_sz;//ex. 32(kbytes) -> wsize_b=32 + } + } +#endif + +} + +void rtw_issue_addbareq_cmd(_adapter *padapter, struct xmit_frame *pxmitframe) +{ + u8 issued; + int priority; + struct sta_info *psta=NULL; + struct ht_priv *phtpriv; + struct pkt_attrib *pattrib =&pxmitframe->attrib; + s32 bmcst = IS_MCAST(pattrib->ra); + + if(bmcst || (padapter->mlmepriv.LinkDetectInfo.bTxBusyTraffic == _FALSE)) + return; + + priority = pattrib->priority; + + if (pattrib->psta) + psta = pattrib->psta; + else + { + DBG_871X("%s, call rtw_get_stainfo()\n", __func__); + psta = rtw_get_stainfo(&padapter->stapriv, pattrib->ra); + } + + if(psta==NULL) + { + DBG_871X("%s, psta==NUL\n", __func__); + return; + } + + if(!(psta->state &_FW_LINKED)) + { + DBG_871X("%s, psta->state(0x%x) != _FW_LINKED\n", __func__, psta->state); + return; + } + + + phtpriv = &psta->htpriv; + + if((phtpriv->ht_option==_TRUE) && (phtpriv->ampdu_enable==_TRUE)) + { + issued = (phtpriv->agg_enable_bitmap>>priority)&0x1; + issued |= (phtpriv->candidate_tid_bitmap>>priority)&0x1; + + if(0==issued) + { + DBG_871X("rtw_issue_addbareq_cmd, p=%d\n", priority); + psta->htpriv.candidate_tid_bitmap |= BIT((u8)priority); + rtw_addbareq_cmd(padapter,(u8) priority, pattrib->ra); + } + } + +} + +#endif + +#ifdef CONFIG_LAYER2_ROAMING +inline void rtw_set_roaming(_adapter *adapter, u8 to_roaming) +{ + if (to_roaming == 0) + adapter->mlmepriv.to_join = _FALSE; + adapter->mlmepriv.to_roaming = to_roaming; +} + +inline u8 rtw_to_roaming(_adapter *adapter) +{ + return adapter->mlmepriv.to_roaming; +} + +void rtw_roaming(_adapter *padapter, struct wlan_network *tgt_network) +{ + _irqL irqL; + struct mlme_priv *pmlmepriv = &padapter->mlmepriv; + + _enter_critical_bh(&pmlmepriv->lock, &irqL); + _rtw_roaming(padapter, tgt_network); + _exit_critical_bh(&pmlmepriv->lock, &irqL); +} +void _rtw_roaming(_adapter *padapter, struct wlan_network *tgt_network) +{ + struct mlme_priv *pmlmepriv = &padapter->mlmepriv; + int do_join_r; + + struct wlan_network *pnetwork; + + if(tgt_network != NULL) + pnetwork = tgt_network; + else + pnetwork = &pmlmepriv->cur_network; + + if(0 < rtw_to_roaming(padapter)) { + DBG_871X("roaming from %s("MAC_FMT"), length:%d\n", + pnetwork->network.Ssid.Ssid, MAC_ARG(pnetwork->network.MacAddress), + pnetwork->network.Ssid.SsidLength); + _rtw_memcpy(&pmlmepriv->assoc_ssid, &pnetwork->network.Ssid, sizeof(NDIS_802_11_SSID)); + + pmlmepriv->assoc_by_bssid = _FALSE; + + while(1) { + if( _SUCCESS==(do_join_r=rtw_do_join(padapter)) ) { + break; + } else { + DBG_871X("roaming do_join return %d\n", do_join_r); + pmlmepriv->to_roaming--; + + if(0< rtw_to_roaming(padapter)) { + continue; + } else { + DBG_871X("%s(%d) -to roaming fail, indicate_disconnect\n", __FUNCTION__,__LINE__); + rtw_indicate_disconnect(padapter); + break; + } + } + } + } + +} +#endif + +#ifdef CONFIG_CONCURRENT_MODE +sint rtw_buddy_adapter_up(_adapter *padapter) +{ + sint res = _FALSE; + + if(padapter == NULL) + return res; + + + if(padapter->pbuddy_adapter == NULL) + { + res = _FALSE; + } + else if( (padapter->pbuddy_adapter->bDriverStopped) || (padapter->pbuddy_adapter->bSurpriseRemoved) || + (padapter->pbuddy_adapter->bup == _FALSE) || (padapter->pbuddy_adapter->hw_init_completed == _FALSE)) + { + res = _FALSE; + } + else + { + res = _TRUE; + } + + return res; + +} + +sint check_buddy_fwstate(_adapter *padapter, sint state) +{ + if(padapter == NULL) + return _FALSE; + + if(padapter->pbuddy_adapter == NULL) + return _FALSE; + + if ((state == WIFI_FW_NULL_STATE) && + (padapter->pbuddy_adapter->mlmepriv.fw_state == WIFI_FW_NULL_STATE)) + return _TRUE; + + if (padapter->pbuddy_adapter->mlmepriv.fw_state & state) + return _TRUE; + + return _FALSE; +} +#endif //CONFIG_CONCURRENT_MODE --- linux-raspi2-4.2.0.orig/drivers/net/wireless/rtl8192cu/core/rtw_mlme_ext.c +++ linux-raspi2-4.2.0/drivers/net/wireless/rtl8192cu/core/rtw_mlme_ext.c @@ -0,0 +1,13599 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2012 Realtek Corporation. All rights reserved. + * + * 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 + * published by the Free Software Foundation. + * + * 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 Street, Fifth Floor, Boston, MA 02110, USA + * + * + ******************************************************************************/ +#define _RTW_MLME_EXT_C_ + +#include +#include +#include +#include +#include +#include +#include +#include + +struct mlme_handler mlme_sta_tbl[]={ + {WIFI_ASSOCREQ, "OnAssocReq", &OnAssocReq}, + {WIFI_ASSOCRSP, "OnAssocRsp", &OnAssocRsp}, + {WIFI_REASSOCREQ, "OnReAssocReq", &OnAssocReq}, + {WIFI_REASSOCRSP, "OnReAssocRsp", &OnAssocRsp}, + {WIFI_PROBEREQ, "OnProbeReq", &OnProbeReq}, + {WIFI_PROBERSP, "OnProbeRsp", &OnProbeRsp}, + + /*---------------------------------------------------------- + below 2 are reserved + -----------------------------------------------------------*/ + {0, "DoReserved", &DoReserved}, + {0, "DoReserved", &DoReserved}, + {WIFI_BEACON, "OnBeacon", &OnBeacon}, + {WIFI_ATIM, "OnATIM", &OnAtim}, + {WIFI_DISASSOC, "OnDisassoc", &OnDisassoc}, + {WIFI_AUTH, "OnAuth", &OnAuthClient}, + {WIFI_DEAUTH, "OnDeAuth", &OnDeAuth}, + {WIFI_ACTION, "OnAction", &OnAction}, +}; + +#ifdef _CONFIG_NATIVEAP_MLME_ +struct mlme_handler mlme_ap_tbl[]={ + {WIFI_ASSOCREQ, "OnAssocReq", &OnAssocReq}, + {WIFI_ASSOCRSP, "OnAssocRsp", &OnAssocRsp}, + {WIFI_REASSOCREQ, "OnReAssocReq", &OnAssocReq}, + {WIFI_REASSOCRSP, "OnReAssocRsp", &OnAssocRsp}, + {WIFI_PROBEREQ, "OnProbeReq", &OnProbeReq}, + {WIFI_PROBERSP, "OnProbeRsp", &OnProbeRsp}, + + /*---------------------------------------------------------- + below 2 are reserved + -----------------------------------------------------------*/ + {0, "DoReserved", &DoReserved}, + {0, "DoReserved", &DoReserved}, + {WIFI_BEACON, "OnBeacon", &OnBeacon}, + {WIFI_ATIM, "OnATIM", &OnAtim}, + {WIFI_DISASSOC, "OnDisassoc", &OnDisassoc}, + {WIFI_AUTH, "OnAuth", &OnAuth}, + {WIFI_DEAUTH, "OnDeAuth", &OnDeAuth}, + {WIFI_ACTION, "OnAction", &OnAction}, +}; +#endif + +struct action_handler OnAction_tbl[]={ + {RTW_WLAN_CATEGORY_SPECTRUM_MGMT, "ACTION_SPECTRUM_MGMT", on_action_spct}, + {RTW_WLAN_CATEGORY_QOS, "ACTION_QOS", &OnAction_qos}, + {RTW_WLAN_CATEGORY_DLS, "ACTION_DLS", &OnAction_dls}, + {RTW_WLAN_CATEGORY_BACK, "ACTION_BACK", &OnAction_back}, + {RTW_WLAN_CATEGORY_PUBLIC, "ACTION_PUBLIC", on_action_public}, + {RTW_WLAN_CATEGORY_RADIO_MEASUREMENT, "ACTION_RADIO_MEASUREMENT", &DoReserved}, + {RTW_WLAN_CATEGORY_FT, "ACTION_FT", &DoReserved}, + {RTW_WLAN_CATEGORY_HT, "ACTION_HT", &OnAction_ht}, +#ifdef CONFIG_IEEE80211W + {RTW_WLAN_CATEGORY_SA_QUERY, "ACTION_SA_QUERY", &OnAction_sa_query}, +#else + {RTW_WLAN_CATEGORY_SA_QUERY, "ACTION_SA_QUERY", &DoReserved}, +#endif //CONFIG_IEEE80211W + //add for CONFIG_IEEE80211W + {RTW_WLAN_CATEGORY_UNPROTECTED_WNM, "ACTION_UNPROTECTED_WNM", &DoReserved}, + {RTW_WLAN_CATEGORY_SELF_PROTECTED, "ACTION_SELF_PROTECTED", &DoReserved}, + {RTW_WLAN_CATEGORY_WMM, "ACTION_WMM", &OnAction_wmm}, + {RTW_WLAN_CATEGORY_P2P, "ACTION_P2P", &OnAction_p2p}, +}; + + +u8 null_addr[ETH_ALEN]= {0,0,0,0,0,0}; + +/************************************************** +OUI definitions for the vendor specific IE +***************************************************/ +unsigned char RTW_WPA_OUI[] = {0x00, 0x50, 0xf2, 0x01}; +unsigned char WMM_OUI[] = {0x00, 0x50, 0xf2, 0x02}; +unsigned char WPS_OUI[] = {0x00, 0x50, 0xf2, 0x04}; +unsigned char P2P_OUI[] = {0x50,0x6F,0x9A,0x09}; +unsigned char WFD_OUI[] = {0x50,0x6F,0x9A,0x0A}; + +unsigned char WMM_INFO_OUI[] = {0x00, 0x50, 0xf2, 0x02, 0x00, 0x01}; +unsigned char WMM_PARA_OUI[] = {0x00, 0x50, 0xf2, 0x02, 0x01, 0x01}; + +unsigned char WPA_TKIP_CIPHER[4] = {0x00, 0x50, 0xf2, 0x02}; +unsigned char RSN_TKIP_CIPHER[4] = {0x00, 0x0f, 0xac, 0x02}; + +extern unsigned char REALTEK_96B_IE[]; + +/******************************************************** +MCS rate definitions +*********************************************************/ +#ifdef CONFIG_DISABLE_MCS13TO15 +unsigned char MCS_rate_2R_MCS13TO15_OFF[16] = {0xff, 0x1f, 0x0, 0x0, 0x01, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}; +unsigned char MCS_rate_2R[16] = {0xff, 0xff, 0x0, 0x0, 0x01, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}; +#else //CONFIG_DISABLE_MCS13TO15 +unsigned char MCS_rate_2R[16] = {0xff, 0xff, 0x0, 0x0, 0x01, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}; +#endif //CONFIG_DISABLE_MCS13TO15 +unsigned char MCS_rate_1R[16] = {0xff, 0x00, 0x0, 0x0, 0x01, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}; + +/******************************************************** +ChannelPlan definitions +*********************************************************/ +/*static RT_CHANNEL_PLAN DefaultChannelPlan[RT_CHANNEL_DOMAIN_MAX] = { + {{1,2,3,4,5,6,7,8,9,10,11,36,40,44,48,52,56,60,64,100,104,108,112,116,132,136,140,149,153,157,161,165},32}, // 0x00, RT_CHANNEL_DOMAIN_FCC + {{1,2,3,4,5,6,7,8,9,10,11,36,40,44,48,52,56,60,64,100,104,108,112,116,136,140,149,153,157,161,165},31}, // 0x01, RT_CHANNEL_DOMAIN_IC + {{1,2,3,4,5,6,7,8,9,10,11,12,13,36,40,44,48,52,56,60,64,100,104,108,112,116,120,124,128,132,136,140},32}, // 0x02, RT_CHANNEL_DOMAIN_ETSI + {{1,2,3,4,5,6,7,8,9,10,11,12,13},13}, // 0x03, RT_CHANNEL_DOMAIN_SPAIN + {{1,2,3,4,5,6,7,8,9,10,11,12,13},13}, // 0x04, RT_CHANNEL_DOMAIN_FRANCE + {{1,2,3,4,5,6,7,8,9,10,11,12,13},13}, // 0x05, RT_CHANNEL_DOMAIN_MKK + {{1,2,3,4,5,6,7,8,9,10,11,12,13},13}, // 0x06, RT_CHANNEL_DOMAIN_MKK1 + {{1,2,3,4,5,6,7,8,9,10,11,12,13,36,40,44,48,52,56,60,64},21}, // 0x07, RT_CHANNEL_DOMAIN_ISRAEL + {{1,2,3,4,5,6,7,8,9,10,11,12,13,14,36,40,44,48,52,56,60,64},22}, // 0x08, RT_CHANNEL_DOMAIN_TELEC + {{1,2,3,4,5,6,7,8,9,10,11,12,13,14},14}, // 0x09, RT_CHANNEL_DOMAIN_GLOBAL_DOAMIN + {{1,2,3,4,5,6,7,8,9,10,11,12,13},13}, // 0x0A, RT_CHANNEL_DOMAIN_WORLD_WIDE_13 + {{1,2,3,4,5,6,7,8,9,10,11,56,60,64,100,104,108,112,116,136,140,149,153,157,161,165},26}, // 0x0B, RT_CHANNEL_DOMAIN_TAIWAN + {{1,2,3,4,5,6,7,8,9,10,11,12,13,149,153,157,161,165},18}, // 0x0C, RT_CHANNEL_DOMAIN_CHINA + {{1,2,3,4,5,6,7,8,9,10,11,36,40,44,48,52,56,60,64,149,153,157,161,165},24}, // 0x0D, RT_CHANNEL_DOMAIN_SINGAPORE_INDIA_MEXICO + {{1,2,3,4,5,6,7,8,9,10,11,36,40,44,48,52,56,60,64,100,104,108,112,116,120,124,149,153,157,161,165},31}, // 0x0E, RT_CHANNEL_DOMAIN_KOREA + {{1,2,3,4,5,6,7,8,9,10,11,36,40,44,48,52,56,60,64},19}, // 0x0F, RT_CHANNEL_DOMAIN_TURKEY + {{1,2,3,4,5,6,7,8,9,10,11,12,13,36,40,44,48,52,56,60,64,100,104,108,112,116,120,124,128,132,136,140},32}, // 0x10, RT_CHANNEL_DOMAIN_JAPAN + {{1,2,3,4,5,6,7,8,9,10,11,36,40,44,48,149,153,157,161,165},20}, // 0x11, RT_CHANNEL_DOMAIN_FCC_NO_DFS + {{1,2,3,4,5,6,7,8,9,10,11,12,13,36,40,44,48},17}, // 0x12, RT_CHANNEL_DOMAIN_JAPAN_NO_DFS + {{1,2,3,4,5,6,7,8,9,10,11,12,13,36,40,44,48,52,56,60,64,100,104,108,112,116,120,124,128,132,136,140,149,153,157,161,165},37}, // 0x13, RT_CHANNEL_DOMAIN_WORLD_WIDE_5G + {{1,2,3,4,5,6,7,8,9,10,11,56,60,64,149,153,157,161,165},19}, // 0x14, RT_CHANNEL_DOMAIN_TAIWAN_NO_DFS +};*/ + +static RT_CHANNEL_PLAN_2G RTW_ChannelPlan2G[RT_CHANNEL_DOMAIN_2G_MAX] = { + {{1,2,3,4,5,6,7,8,9,10,11,12,13},13}, // 0x00, RT_CHANNEL_DOMAIN_2G_WORLD , Passive scan CH 12, 13 + {{1,2,3,4,5,6,7,8,9,10,11,12,13},13}, // 0x01, RT_CHANNEL_DOMAIN_2G_ETSI1 + {{1,2,3,4,5,6,7,8,9,10,11},11}, // 0x02, RT_CHANNEL_DOMAIN_2G_FCC1 + {{1,2,3,4,5,6,7,8,9,10,11,12,13,14},14}, // 0x03, RT_CHANNEL_DOMAIN_2G_MIKK1 + {{10,11,12,13},4}, // 0x04, RT_CHANNEL_DOMAIN_2G_ETSI2 + {{},0}, // 0x05, RT_CHANNEL_DOMAIN_2G_NULL +}; + +static RT_CHANNEL_PLAN_5G RTW_ChannelPlan5G[RT_CHANNEL_DOMAIN_5G_MAX] = { + {{},0}, // 0x00, RT_CHANNEL_DOMAIN_5G_NULL + {{36,40,44,48,52,56,60,64,100,104,108,112,116,120,124,128,132,136,140},19}, // 0x01, RT_CHANNEL_DOMAIN_5G_ETSI1 + {{36,40,44,48,52,56,60,64,100,104,108,112,116,120,124,128,132,136,140,149,153,157,161,165},24}, // 0x02, RT_CHANNEL_DOMAIN_5G_ETSI2 + {{36,40,44,48,52,56,60,64,100,104,108,112,116,120,124,128,132,149,153,157,161,165},22}, // 0x03, RT_CHANNEL_DOMAIN_5G_ETSI3 + {{36,40,44,48,52,56,60,64,100,104,108,112,116,120,124,128,132,136,140,149,153,157,161,165},24}, // 0x04, RT_CHANNEL_DOMAIN_5G_FCC1 + {{36,40,44,48,149,153,157,161,165},9}, // 0x05, RT_CHANNEL_DOMAIN_5G_FCC2 + {{36,40,44,48,52,56,60,64,149,153,157,161,165},13}, // 0x06, RT_CHANNEL_DOMAIN_5G_FCC3 + {{36,40,44,48,52,56,60,64,149,153,157,161},12}, // 0x07, RT_CHANNEL_DOMAIN_5G_FCC4 + {{149,153,157,161,165},5}, // 0x08, RT_CHANNEL_DOMAIN_5G_FCC5 + {{36,40,44,48,52,56,60,64},8}, // 0x09, RT_CHANNEL_DOMAIN_5G_FCC6 + {{36,40,44,48,52,56,60,64,100,104,108,112,116,136,140,149,153,157,161,165},20}, // 0x0A, RT_CHANNEL_DOMAIN_5G_FCC7_IC1 + {{36,40,44,48,52,56,60,64,100,104,108,112,116,120,124,149,153,157,161,165},20}, // 0x0B, RT_CHANNEL_DOMAIN_5G_KCC1 + {{36,40,44,48,52,56,60,64,100,104,108,112,116,120,124,128,132,136,140},19}, // 0x0C, RT_CHANNEL_DOMAIN_5G_MKK1 + {{36,40,44,48,52,56,60,64},8}, // 0x0D, RT_CHANNEL_DOMAIN_5G_MKK2 + {{100,104,108,112,116,120,124,128,132,136,140},11}, // 0x0E, RT_CHANNEL_DOMAIN_5G_MKK3 + {{56,60,64,100,104,108,112,116,136,140,149,153,157,161,165},15}, // 0x0F, RT_CHANNEL_DOMAIN_5G_NCC1 + {{56,60,64,149,153,157,161,165},8}, // 0x10, RT_CHANNEL_DOMAIN_5G_NCC2 + + //===== Driver self defined for old channel plan Compatible ,Remember to modify if have new channel plan definition ===== + {{36,40,44,48,52,56,60,64,100,104,108,112,116,132,136,140,149,153,157,161,165},21}, // 0x11, RT_CHANNEL_DOMAIN_5G_FCC + {{36,40,44,48},4}, // 0x12, RT_CHANNEL_DOMAIN_5G_JAPAN_NO_DFS + {{36,40,44,48,149,153,157,161},8}, // 0x13, RT_CHANNEL_DOMAIN_5G_FCC4_NO_DFS +}; + +static RT_CHANNEL_PLAN_MAP RTW_ChannelPlanMap[RT_CHANNEL_DOMAIN_MAX] = { + //===== 0x00 ~ 0x1F , Old Define ===== + {0x02,0x11}, //0x00, RT_CHANNEL_DOMAIN_FCC + {0x02,0x0A}, //0x01, RT_CHANNEL_DOMAIN_IC + {0x01,0x01}, //0x02, RT_CHANNEL_DOMAIN_ETSI + {0x01,0x00}, //0x03, RT_CHANNEL_DOMAIN_SPAIN + {0x01,0x00}, //0x04, RT_CHANNEL_DOMAIN_FRANCE + {0x03,0x00}, //0x05, RT_CHANNEL_DOMAIN_MKK + {0x03,0x00}, //0x06, RT_CHANNEL_DOMAIN_MKK1 + {0x01,0x09}, //0x07, RT_CHANNEL_DOMAIN_ISRAEL + {0x03,0x09}, //0x08, RT_CHANNEL_DOMAIN_TELEC + {0x03,0x00}, //0x09, RT_CHANNEL_DOMAIN_GLOBAL_DOAMIN + {0x00,0x00}, //0x0A, RT_CHANNEL_DOMAIN_WORLD_WIDE_13 + {0x02,0x0F}, //0x0B, RT_CHANNEL_DOMAIN_TAIWAN + {0x01,0x08}, //0x0C, RT_CHANNEL_DOMAIN_CHINA + {0x02,0x06}, //0x0D, RT_CHANNEL_DOMAIN_SINGAPORE_INDIA_MEXICO + {0x02,0x0B}, //0x0E, RT_CHANNEL_DOMAIN_KOREA + {0x02,0x09}, //0x0F, RT_CHANNEL_DOMAIN_TURKEY + {0x01,0x01}, //0x10, RT_CHANNEL_DOMAIN_JAPAN + {0x02,0x05}, //0x11, RT_CHANNEL_DOMAIN_FCC_NO_DFS + {0x01,0x12}, //0x12, RT_CHANNEL_DOMAIN_JAPAN_NO_DFS + {0x00,0x04}, //0x13, RT_CHANNEL_DOMAIN_WORLD_WIDE_5G + {0x02,0x10}, //0x14, RT_CHANNEL_DOMAIN_TAIWAN_NO_DFS + {0x00,0x12}, //0x15, RT_CHANNEL_DOMAIN_ETSI_NO_DFS + {0x00,0x13}, //0x16, RT_CHANNEL_DOMAIN_KOREA_NO_DFS + {0x03,0x12}, //0x17, RT_CHANNEL_DOMAIN_JAPAN_NO_DFS + {0x05,0x08}, //0x18, RT_CHANNEL_DOMAIN_PAKISTAN_NO_DFS + {0x02,0x08}, //0x19, RT_CHANNEL_DOMAIN_TAIWAN2_NO_DFS + {0x00,0x00}, //0x1A, + {0x00,0x00}, //0x1B, + {0x00,0x00}, //0x1C, + {0x00,0x00}, //0x1D, + {0x00,0x00}, //0x1E, + {0x05,0x04}, //0x1F, RT_CHANNEL_DOMAIN_WORLD_WIDE_ONLY_5G + //===== 0x20 ~ 0x7F ,New Define ===== + {0x00,0x00}, //0x20, RT_CHANNEL_DOMAIN_WORLD_NULL + {0x01,0x00}, //0x21, RT_CHANNEL_DOMAIN_ETSI1_NULL + {0x02,0x00}, //0x22, RT_CHANNEL_DOMAIN_FCC1_NULL + {0x03,0x00}, //0x23, RT_CHANNEL_DOMAIN_MKK1_NULL + {0x04,0x00}, //0x24, RT_CHANNEL_DOMAIN_ETSI2_NULL + {0x02,0x04}, //0x25, RT_CHANNEL_DOMAIN_FCC1_FCC1 + {0x00,0x01}, //0x26, RT_CHANNEL_DOMAIN_WORLD_ETSI1 + {0x03,0x0C}, //0x27, RT_CHANNEL_DOMAIN_MKK1_MKK1 + {0x00,0x0B}, //0x28, RT_CHANNEL_DOMAIN_WORLD_KCC1 + {0x00,0x05}, //0x29, RT_CHANNEL_DOMAIN_WORLD_FCC2 + {0x00,0x00}, //0x2A, + {0x00,0x00}, //0x2B, + {0x00,0x00}, //0x2C, + {0x00,0x00}, //0x2D, + {0x00,0x00}, //0x2E, + {0x00,0x00}, //0x2F, + {0x00,0x06}, //0x30, RT_CHANNEL_DOMAIN_WORLD_FCC3 + {0x00,0x07}, //0x31, RT_CHANNEL_DOMAIN_WORLD_FCC4 + {0x00,0x08}, //0x32, RT_CHANNEL_DOMAIN_WORLD_FCC5 + {0x00,0x09}, //0x33, RT_CHANNEL_DOMAIN_WORLD_FCC6 + {0x02,0x0A}, //0x34, RT_CHANNEL_DOMAIN_FCC1_FCC7 + {0x00,0x02}, //0x35, RT_CHANNEL_DOMAIN_WORLD_ETSI2 + {0x00,0x03}, //0x36, RT_CHANNEL_DOMAIN_WORLD_ETSI3 + {0x03,0x0D}, //0x37, RT_CHANNEL_DOMAIN_MKK1_MKK2 + {0x03,0x0E}, //0x38, RT_CHANNEL_DOMAIN_MKK1_MKK3 + {0x02,0x0F}, //0x39, RT_CHANNEL_DOMAIN_FCC1_NCC1 + {0x00,0x00}, //0x3A, + {0x00,0x00}, //0x3B, + {0x00,0x00}, //0x3C, + {0x00,0x00}, //0x3D, + {0x00,0x00}, //0x3E, + {0x00,0x00}, //0x3F, + {0x02,0x10}, //0x40, RT_CHANNEL_DOMAIN_FCC1_NCC2 +}; + +static RT_CHANNEL_PLAN_MAP RTW_CHANNEL_PLAN_MAP_REALTEK_DEFINE = {0x03,0x02}; //use the conbination for max channel numbers + +/* + * Search the @param ch in given @param ch_set + * @ch_set: the given channel set + * @ch: the given channel number + * + * return the index of channel_num in channel_set, -1 if not found + */ +int rtw_ch_set_search_ch(RT_CHANNEL_INFO *ch_set, const u32 ch) +{ + int i; + for(i=0;ch_set[i].ChannelNum!=0;i++){ + if(ch == ch_set[i].ChannelNum) + break; + } + + if(i >= ch_set[i].ChannelNum) + return -1; + return i; +} + +/* + * Check the @param ch is fit with setband setting of @param adapter + * @adapter: the given adapter + * @ch: the given channel number + * + * return _TRUE when check valid, _FALSE not valid + */ +bool rtw_mlme_band_check(_adapter *adapter, const u32 ch) +{ + if (adapter->setband == GHZ24_50 /* 2.4G and 5G */ + || (adapter->setband == GHZ_24 && ch < 35) /* 2.4G only */ + || (adapter->setband == GHZ_50 && ch > 35) /* 5G only */ + ) { + return _TRUE; + } + return _FALSE; +} + +/**************************************************************************** + +Following are the initialization functions for WiFi MLME + +*****************************************************************************/ + +int init_hw_mlme_ext(_adapter *padapter) +{ + struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; + + //set_opmode_cmd(padapter, infra_client_with_mlme);//removed + + set_channel_bwmode(padapter, pmlmeext->cur_channel, pmlmeext->cur_ch_offset, pmlmeext->cur_bwmode); + + return _SUCCESS; +} + +static void init_mlme_ext_priv_value(_adapter* padapter) +{ + struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; + struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info); + + //unsigned char default_channel_set[MAX_CHANNEL_NUM] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 0, 0}; + unsigned char mixed_datarate[NumRates] = {_1M_RATE_, _2M_RATE_, _5M_RATE_, _11M_RATE_, _6M_RATE_,_9M_RATE_, _12M_RATE_, _18M_RATE_, _24M_RATE_, _36M_RATE_, _48M_RATE_, _54M_RATE_, 0xff}; + unsigned char mixed_basicrate[NumRates] ={_1M_RATE_, _2M_RATE_, _5M_RATE_, _11M_RATE_, _6M_RATE_, _12M_RATE_, _24M_RATE_, 0xff,}; + + ATOMIC_SET(&pmlmeext->event_seq, 0); + pmlmeext->mgnt_seq = 0;//reset to zero when disconnect at client mode +#ifdef CONFIG_IEEE80211W + pmlmeext->sa_query_seq = 0; + pmlmeext->mgnt_80211w_IPN=0; + pmlmeext->mgnt_80211w_IPN_rx=0; +#endif //CONFIG_IEEE80211W + pmlmeext->cur_channel = padapter->registrypriv.channel; + pmlmeext->cur_bwmode = HT_CHANNEL_WIDTH_20; + pmlmeext->cur_ch_offset = HAL_PRIME_CHNL_OFFSET_DONT_CARE; + + pmlmeext->retry = 0; + + pmlmeext->cur_wireless_mode = padapter->registrypriv.wireless_mode; + + //_rtw_memcpy(pmlmeext->channel_set, DefaultChannelPlan[padapter->mlmepriv.ChannelPlan].Channel, DefaultChannelPlan[padapter->mlmepriv.ChannelPlan].Len); + //_rtw_memcpy(pmlmeext->channel_set, default_channel_set, MAX_CHANNEL_NUM); + _rtw_memcpy(pmlmeext->datarate, mixed_datarate, NumRates); + _rtw_memcpy(pmlmeext->basicrate, mixed_basicrate, NumRates); + + if(pmlmeext->cur_channel > 14) + pmlmeext->tx_rate = IEEE80211_OFDM_RATE_6MB; + else + pmlmeext->tx_rate = IEEE80211_CCK_RATE_1MB; + + pmlmeext->sitesurvey_res.state = SCAN_DISABLE; + pmlmeext->sitesurvey_res.channel_idx = 0; + pmlmeext->sitesurvey_res.bss_cnt = 0; + pmlmeext->scan_abort = _FALSE; + + pmlmeinfo->state = WIFI_FW_NULL_STATE; + pmlmeinfo->reauth_count = 0; + pmlmeinfo->reassoc_count = 0; + pmlmeinfo->link_count = 0; + pmlmeinfo->auth_seq = 0; + pmlmeinfo->auth_algo = dot11AuthAlgrthm_Open; + pmlmeinfo->key_index = 0; + pmlmeinfo->iv = 0; + + pmlmeinfo->enc_algo = _NO_PRIVACY_; + pmlmeinfo->authModeToggle = 0; + + _rtw_memset(pmlmeinfo->chg_txt, 0, 128); + + pmlmeinfo->slotTime = SHORT_SLOT_TIME; + pmlmeinfo->preamble_mode = PREAMBLE_AUTO; + + pmlmeinfo->dialogToken = 0; + + pmlmeext->action_public_rxseq = 0xffff; + pmlmeext->action_public_dialog_token = 0xff; +} + +static int has_channel(RT_CHANNEL_INFO *channel_set, + u8 chanset_size, + u8 chan) { + int i; + + for (i = 0; i < chanset_size; i++) { + if (channel_set[i].ChannelNum == chan) { + return 1; + } + } + + return 0; +} + +static void init_channel_list(_adapter *padapter, RT_CHANNEL_INFO *channel_set, + u8 chanset_size, + struct p2p_channels *channel_list) { + + struct p2p_oper_class_map op_class[] = { + { IEEE80211G, 81, 1, 13, 1, BW20 }, + { IEEE80211G, 82, 14, 14, 1, BW20 }, +#if 0 /* Do not enable HT40 on 2 GHz */ + { IEEE80211G, 83, 1, 9, 1, BW40PLUS }, + { IEEE80211G, 84, 5, 13, 1, BW40MINUS }, +#endif + { IEEE80211A, 115, 36, 48, 4, BW20 }, + { IEEE80211A, 116, 36, 44, 8, BW40PLUS }, + { IEEE80211A, 117, 40, 48, 8, BW40MINUS }, + { IEEE80211A, 124, 149, 161, 4, BW20 }, + { IEEE80211A, 125, 149, 169, 4, BW20 }, + { IEEE80211A, 126, 149, 157, 8, BW40PLUS }, + { IEEE80211A, 127, 153, 161, 8, BW40MINUS }, + { -1, 0, 0, 0, 0, BW20 } + }; + + int cla, op; + + cla = 0; + + for (op = 0; op_class[op].op_class; op++) { + u8 ch; + struct p2p_oper_class_map *o = &op_class[op]; + struct p2p_reg_class *reg = NULL; + + for (ch = o->min_chan; ch <= o->max_chan; ch += o->inc) { + if (!has_channel(channel_set, chanset_size, ch)) { + continue; + } + + if ((0 == padapter->registrypriv.ht_enable) && (8 == o->inc)) + continue; + + if ((0 == (padapter->registrypriv.cbw40_enable & BIT(1))) && + ((BW40MINUS == o->bw) || (BW40PLUS == o->bw))) + continue; + + if (reg == NULL) { + reg = &channel_list->reg_class[cla]; + cla++; + reg->reg_class = o->op_class; + reg->channels = 0; + } + reg->channel[reg->channels] = ch; + reg->channels++; + } + } + channel_list->reg_classes = cla; + +} + +static u8 init_channel_set(_adapter* padapter, u8 ChannelPlan, RT_CHANNEL_INFO *channel_set) +{ + u8 index,chanset_size = 0; + u8 b5GBand = _FALSE, b2_4GBand = _FALSE; + u8 Index2G = 0, Index5G=0; + + _rtw_memset(channel_set, 0, sizeof(RT_CHANNEL_INFO)*MAX_CHANNEL_NUM); + + if(ChannelPlan >= RT_CHANNEL_DOMAIN_MAX && ChannelPlan != RT_CHANNEL_DOMAIN_REALTEK_DEFINE) + { + DBG_871X("ChannelPlan ID %x error !!!!!\n",ChannelPlan); + return chanset_size; + } + + if(padapter->registrypriv.wireless_mode & WIRELESS_11G) + { + b2_4GBand = _TRUE; + if(RT_CHANNEL_DOMAIN_REALTEK_DEFINE == ChannelPlan) + Index2G = RTW_CHANNEL_PLAN_MAP_REALTEK_DEFINE.Index2G; + else + Index2G = RTW_ChannelPlanMap[ChannelPlan].Index2G; + } + + if(padapter->registrypriv.wireless_mode & WIRELESS_11A) + { + b5GBand = _TRUE; + if(RT_CHANNEL_DOMAIN_REALTEK_DEFINE == ChannelPlan) + Index5G = RTW_CHANNEL_PLAN_MAP_REALTEK_DEFINE.Index5G; + else + Index5G = RTW_ChannelPlanMap[ChannelPlan].Index5G; + } + + if(b2_4GBand) + { + for(index=0;index= 1 && channel_set[chanset_size].ChannelNum <= 11) + channel_set[chanset_size].ScanType = SCAN_ACTIVE; + else if((channel_set[chanset_size].ChannelNum >= 12 && channel_set[chanset_size].ChannelNum <= 14)) + channel_set[chanset_size].ScanType = SCAN_PASSIVE; + } + else if(RT_CHANNEL_DOMAIN_WORLD_WIDE_13 == ChannelPlan || + RT_CHANNEL_DOMAIN_WORLD_WIDE_5G == ChannelPlan || + RT_CHANNEL_DOMAIN_2G_WORLD == Index2G)// channel 12~13, passive scan + { + if(channel_set[chanset_size].ChannelNum <= 11) + channel_set[chanset_size].ScanType = SCAN_ACTIVE; + else + channel_set[chanset_size].ScanType = SCAN_PASSIVE; + } + else + { + channel_set[chanset_size].ScanType = SCAN_ACTIVE; + } + + chanset_size++; + } + } + + if(b5GBand) + { + for(index=0;index= 149 ) + { + if(RT_CHANNEL_DOMAIN_WORLD_WIDE_5G == ChannelPlan)//passive scan for all 5G channels + channel_set[chanset_size].ScanType = SCAN_PASSIVE; + else + channel_set[chanset_size].ScanType = SCAN_ACTIVE; + } + else + { + channel_set[chanset_size].ScanType = SCAN_PASSIVE; + } + chanset_size++; +#else /* CONFIG_DFS */ + if ( RTW_ChannelPlan5G[Index5G].Channel[index] <= 48 + || RTW_ChannelPlan5G[Index5G].Channel[index] >= 149 ) { + channel_set[chanset_size].ChannelNum = RTW_ChannelPlan5G[Index5G].Channel[index]; + if(RT_CHANNEL_DOMAIN_WORLD_WIDE_5G == ChannelPlan)//passive scan for all 5G channels + channel_set[chanset_size].ScanType = SCAN_PASSIVE; + else + channel_set[chanset_size].ScanType = SCAN_ACTIVE; + DBG_871X("%s(): channel_set[%d].ChannelNum = %d\n", __FUNCTION__, chanset_size, channel_set[chanset_size].ChannelNum); + chanset_size++; + } +#endif /* CONFIG_DFS */ + } + } + + return chanset_size; +} + +int init_mlme_ext_priv(_adapter* padapter) +{ + int res = _SUCCESS; + struct registry_priv* pregistrypriv = &padapter->registrypriv; + struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; + struct mlme_priv *pmlmepriv = &(padapter->mlmepriv); + struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info); + + // We don't need to memset padapter->XXX to zero, because adapter is allocated by rtw_zvmalloc(). + //_rtw_memset((u8 *)pmlmeext, 0, sizeof(struct mlme_ext_priv)); + + pmlmeext->padapter = padapter; + + //fill_fwpriv(padapter, &(pmlmeext->fwpriv)); + + init_mlme_ext_priv_value(padapter); + pmlmeinfo->bAcceptAddbaReq = pregistrypriv->bAcceptAddbaReq; + + init_mlme_ext_timer(padapter); + +#ifdef CONFIG_AP_MODE + init_mlme_ap_info(padapter); +#endif + + pmlmeext->max_chan_nums = init_channel_set(padapter, pmlmepriv->ChannelPlan,pmlmeext->channel_set); + init_channel_list(padapter, pmlmeext->channel_set, pmlmeext->max_chan_nums, &pmlmeext->channel_list); + + pmlmeext->chan_scan_time = SURVEY_TO; + pmlmeext->mlmeext_init = _TRUE; + + +#ifdef CONFIG_ACTIVE_KEEP_ALIVE_CHECK + pmlmeext->active_keep_alive_check = _TRUE; +#endif + + return res; + +} + +void free_mlme_ext_priv (struct mlme_ext_priv *pmlmeext) +{ + _adapter *padapter = pmlmeext->padapter; + + if (!padapter) + return; + + if (padapter->bDriverStopped == _TRUE) + { + _cancel_timer_ex(&pmlmeext->survey_timer); + _cancel_timer_ex(&pmlmeext->link_timer); + //_cancel_timer_ex(&pmlmeext->ADDBA_timer); + } +} + +static u8 cmp_pkt_chnl_diff(_adapter *padapter,u8* pframe,uint packet_len) +{ // if the channel is same, return 0. else return channel differential + uint len; + u8 channel; + u8 *p; + p = rtw_get_ie(pframe + WLAN_HDR_A3_LEN + _BEACON_IE_OFFSET_, _DSSET_IE_, &len, packet_len - _BEACON_IE_OFFSET_); + if (p) + { + channel = *(p + 2); + if(padapter->mlmeextpriv.cur_channel >= channel) + { + return (padapter->mlmeextpriv.cur_channel - channel); + } + else + { + return (channel-padapter->mlmeextpriv.cur_channel); + } + } + else + { + return 0; + } +} + +static void _mgt_dispatcher(_adapter *padapter, struct mlme_handler *ptable, union recv_frame *precv_frame) +{ + u8 bc_addr[ETH_ALEN] = {0xff,0xff,0xff,0xff,0xff,0xff}; + u8 *pframe = precv_frame->u.hdr.rx_data; + + if(ptable->func) + { + //receive the frames that ra(a1) is my address or ra(a1) is bc address. + if (!_rtw_memcmp(GetAddr1Ptr(pframe), myid(&padapter->eeprompriv), ETH_ALEN) && + !_rtw_memcmp(GetAddr1Ptr(pframe), bc_addr, ETH_ALEN)) + { + return; + } + + ptable->func(padapter, precv_frame); + } + +} + +void mgt_dispatcher(_adapter *padapter, union recv_frame *precv_frame) +{ + int index; + struct mlme_handler *ptable; +#ifdef CONFIG_AP_MODE + struct mlme_priv *pmlmepriv = &padapter->mlmepriv; +#endif //CONFIG_AP_MODE + u8 bc_addr[ETH_ALEN] = {0xff,0xff,0xff,0xff,0xff,0xff}; + u8 *pframe = precv_frame->u.hdr.rx_data; + struct sta_info *psta = rtw_get_stainfo(&padapter->stapriv, GetAddr2Ptr(pframe)); + + RT_TRACE(_module_rtl871x_mlme_c_, _drv_info_, + ("+mgt_dispatcher: type(0x%x) subtype(0x%x)\n", + GetFrameType(pframe), GetFrameSubType(pframe))); + +#if 0 + { + u8 *pbuf; + pbuf = GetAddr1Ptr(pframe); + DBG_871X("A1-%x:%x:%x:%x:%x:%x\n", *pbuf, *(pbuf+1), *(pbuf+2), *(pbuf+3), *(pbuf+4), *(pbuf+5)); + pbuf = GetAddr2Ptr(pframe); + DBG_871X("A2-%x:%x:%x:%x:%x:%x\n", *pbuf, *(pbuf+1), *(pbuf+2), *(pbuf+3), *(pbuf+4), *(pbuf+5)); + pbuf = GetAddr3Ptr(pframe); + DBG_871X("A3-%x:%x:%x:%x:%x:%x\n", *pbuf, *(pbuf+1), *(pbuf+2), *(pbuf+3), *(pbuf+4), *(pbuf+5)); + } +#endif + + if (GetFrameType(pframe) != WIFI_MGT_TYPE) + { + RT_TRACE(_module_rtl871x_mlme_c_, _drv_err_, ("mgt_dispatcher: type(0x%x) error!\n", GetFrameType(pframe))); + return; + } + + //receive the frames that ra(a1) is my address or ra(a1) is bc address. + if (!_rtw_memcmp(GetAddr1Ptr(pframe), myid(&padapter->eeprompriv), ETH_ALEN) && + !_rtw_memcmp(GetAddr1Ptr(pframe), bc_addr, ETH_ALEN)) + { + return; + } + + ptable = mlme_sta_tbl; + + index = GetFrameSubType(pframe) >> 4; + +#ifdef CONFIG_TDLS + if((index << 4)==WIFI_ACTION){ + //category==RTW_WLAN_CATEGORY_PUBLIC, action==TDLS_DISCOVERY_RESPONSE + if(*(pframe + IEEE80211_MGMT_HDR_LEN ) == RTW_WLAN_CATEGORY_PUBLIC + && *(pframe + IEEE80211_MGMT_HDR_LEN + 1) == TDLS_DISCOVERY_RESPONSE ) + { + DBG_871X("recv tdls discovery response frame\n"); + On_TDLS_Dis_Rsp(padapter, precv_frame); + } + } +#endif //CONFIG_TDLS + + if (index > 13) + { + RT_TRACE(_module_rtl871x_mlme_c_,_drv_err_,("Currently we do not support reserved sub-fr-type=%d\n", index)); + return; + } + ptable += index; + +#if 1 + if (psta != NULL) + { + if (GetRetry(pframe)) + { + if (precv_frame->u.hdr.attrib.seq_num == psta->RxMgmtFrameSeqNum) + { + /* drop the duplicate management frame */ + DBG_871X("Drop duplicate management frame with seq_num = %d.\n", precv_frame->u.hdr.attrib.seq_num); + return; + } + } + psta->RxMgmtFrameSeqNum = precv_frame->u.hdr.attrib.seq_num; + } +#else + + if(GetRetry(pframe)) + { + //RT_TRACE(_module_rtl871x_mlme_c_,_drv_err_,("drop due to decache!\n")); + //return; + } +#endif + +#ifdef CONFIG_AP_MODE + switch (GetFrameSubType(pframe)) + { + case WIFI_AUTH: + if(check_fwstate(pmlmepriv, WIFI_AP_STATE) == _TRUE) + ptable->func = &OnAuth; + else + ptable->func = &OnAuthClient; + //pass through + case WIFI_ASSOCREQ: + case WIFI_REASSOCREQ: + _mgt_dispatcher(padapter, ptable, precv_frame); +#ifdef CONFIG_HOSTAPD_MLME + if(check_fwstate(pmlmepriv, WIFI_AP_STATE) == _TRUE) + rtw_hostapd_mlme_rx(padapter, precv_frame); +#endif + break; + case WIFI_PROBEREQ: + if(check_fwstate(pmlmepriv, WIFI_AP_STATE) == _TRUE) + { +#ifdef CONFIG_HOSTAPD_MLME + rtw_hostapd_mlme_rx(padapter, precv_frame); +#else + _mgt_dispatcher(padapter, ptable, precv_frame); +#endif + } + else + _mgt_dispatcher(padapter, ptable, precv_frame); + break; + case WIFI_BEACON: + _mgt_dispatcher(padapter, ptable, precv_frame); + break; + case WIFI_ACTION: + //if(check_fwstate(pmlmepriv, WIFI_AP_STATE) == _TRUE) + _mgt_dispatcher(padapter, ptable, precv_frame); + break; + default: + _mgt_dispatcher(padapter, ptable, precv_frame); + if(check_fwstate(pmlmepriv, WIFI_AP_STATE) == _TRUE) + rtw_hostapd_mlme_rx(padapter, precv_frame); + break; + } +#else + + _mgt_dispatcher(padapter, ptable, precv_frame); + +#endif + +} + +#ifdef CONFIG_P2P +u32 p2p_listen_state_process(_adapter *padapter, unsigned char *da) +{ + bool response = _TRUE; + +#ifdef CONFIG_IOCTL_CFG80211 + if( padapter->wdinfo.driver_interface == DRIVER_CFG80211 ) + { + if (wdev_to_priv(padapter->rtw_wdev)->p2p_enabled == _FALSE + || padapter->mlmepriv.wps_probe_resp_ie == NULL + || padapter->mlmepriv.p2p_probe_resp_ie == NULL + ) + { + DBG_871X("DON'T issue_probersp_p2p: p2p_enabled:%d, wps_probe_resp_ie:%p, p2p_probe_resp_ie:%p\n", + wdev_to_priv(padapter->rtw_wdev)->p2p_enabled, + padapter->mlmepriv.wps_probe_resp_ie, + padapter->mlmepriv.p2p_probe_resp_ie); + response = _FALSE; + } + } + else +#endif //CONFIG_IOCTL_CFG80211 + if( padapter->wdinfo.driver_interface == DRIVER_WEXT ) + { + // do nothing if the device name is empty + if ( !padapter->wdinfo.device_name_len ) + { + response = _FALSE; + } + } + + if (response == _TRUE) + issue_probersp_p2p( padapter, da); + + return _SUCCESS; +} +#endif //CONFIG_P2P + + +/**************************************************************************** + +Following are the callback functions for each subtype of the management frames + +*****************************************************************************/ + +unsigned int OnProbeReq(_adapter *padapter, union recv_frame *precv_frame) +{ + unsigned int ielen; + unsigned char *p; + struct mlme_priv *pmlmepriv = &padapter->mlmepriv; + struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; + struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info); + WLAN_BSSID_EX *cur = &(pmlmeinfo->network); + u8 *pframe = precv_frame->u.hdr.rx_data; + uint len = precv_frame->u.hdr.len; + u8 is_valid_p2p_probereq = _FALSE; + +#ifdef CONFIG_P2P + struct wifidirect_info *pwdinfo = &(padapter->wdinfo); + struct rx_pkt_attrib *pattrib = &precv_frame->u.hdr.attrib; + u8 wifi_test_chk_rate = 1; + + if ( !rtw_p2p_chk_state(pwdinfo, P2P_STATE_NONE) && + !rtw_p2p_chk_state(pwdinfo, P2P_STATE_IDLE) && + !rtw_p2p_chk_role(pwdinfo, P2P_ROLE_CLIENT) && + !rtw_p2p_chk_state(pwdinfo, P2P_STATE_FIND_PHASE_SEARCH) && + !rtw_p2p_chk_state(pwdinfo, P2P_STATE_SCAN) + ) + { + // Commented by Albert 2011/03/17 + // mcs_rate = 0 -> CCK 1M rate + // mcs_rate = 1 -> CCK 2M rate + // mcs_rate = 2 -> CCK 5.5M rate + // mcs_rate = 3 -> CCK 11M rate + // In the P2P mode, the driver should not support the CCK rate + + // Commented by Kurt 2012/10/16 + // IOT issue: Google Nexus7 use 1M rate to send p2p_probe_req after GO nego completed and Nexus7 is client +#ifdef CONFIG_WIFI_TEST + if ( pattrib->mcs_rate <= 3 ) + { + wifi_test_chk_rate = 0; + } +#endif //CONFIG_WIFI_TEST + + if( wifi_test_chk_rate == 1 ) + { + if((is_valid_p2p_probereq = process_probe_req_p2p_ie(pwdinfo, pframe, len)) == _TRUE) + { + if(rtw_p2p_chk_role(pwdinfo, P2P_ROLE_DEVICE)) + { + p2p_listen_state_process( padapter, get_sa(pframe)); + + return _SUCCESS; + } + + if(rtw_p2p_chk_role(pwdinfo, P2P_ROLE_GO)) + { + goto _continue; + } + } + } + } + +_continue: +#endif //CONFIG_P2P + + if(check_fwstate(pmlmepriv, WIFI_STATION_STATE)) + { + return _SUCCESS; + } + + if(check_fwstate(pmlmepriv, _FW_LINKED) == _FALSE && + check_fwstate(pmlmepriv, WIFI_ADHOC_MASTER_STATE|WIFI_AP_STATE)==_FALSE) + { + return _SUCCESS; + } + + + //DBG_871X("+OnProbeReq\n"); + +#ifdef CONFIG_AUTO_AP_MODE + if(check_fwstate(pmlmepriv, _FW_LINKED) == _TRUE && + pmlmepriv->cur_network.join_res == _TRUE) + { + _irqL irqL; + struct sta_info *psta; + u8 *mac_addr, *peer_addr; + struct sta_priv *pstapriv = &padapter->stapriv; + u8 RC_OUI[4]={0x00,0xE0,0x4C,0x0A}; + //EID[1] + EID_LEN[1] + RC_OUI[4] + MAC[6] + PairingID[2] + ChannelNum[2] + + p = rtw_get_ie(pframe + WLAN_HDR_A3_LEN + _PROBEREQ_IE_OFFSET_, _VENDOR_SPECIFIC_IE_, (int *)&ielen, + len - WLAN_HDR_A3_LEN - _PROBEREQ_IE_OFFSET_); + + if(!p || ielen !=14) + goto _non_rc_device; + + if(!_rtw_memcmp(p+2, RC_OUI, sizeof(RC_OUI))) + goto _non_rc_device; + + if(!_rtw_memcmp(p+6, get_sa(pframe), ETH_ALEN)) + { + DBG_871X("%s, do rc pairing ("MAC_FMT"), but mac addr mismatch!("MAC_FMT")\n", __FUNCTION__, + MAC_ARG(get_sa(pframe)), MAC_ARG(p+6)); + + goto _non_rc_device; + } + + DBG_871X("%s, got the pairing device("MAC_FMT")\n", __FUNCTION__, MAC_ARG(get_sa(pframe))); + + //new a station + psta = rtw_get_stainfo(pstapriv, get_sa(pframe)); + if (psta == NULL) + { + // allocate a new one + DBG_871X("going to alloc stainfo for rc="MAC_FMT"\n", MAC_ARG(get_sa(pframe))); + psta = rtw_alloc_stainfo(pstapriv, get_sa(pframe)); + if (psta == NULL) + { + //TODO: + DBG_871X(" Exceed the upper limit of supported clients...\n"); + return _SUCCESS; + } + + _enter_critical_bh(&pstapriv->asoc_list_lock, &irqL); + if (rtw_is_list_empty(&psta->asoc_list)) + { + psta->expire_to = pstapriv->expire_to; + rtw_list_insert_tail(&psta->asoc_list, &pstapriv->asoc_list); + pstapriv->asoc_list_cnt++; + } + _exit_critical_bh(&pstapriv->asoc_list_lock, &irqL); + + //generate pairing ID + mac_addr = myid(&(padapter->eeprompriv)); + peer_addr = psta->hwaddr; + psta->pid = (u16)(((mac_addr[4]<<8) + mac_addr[5]) + ((peer_addr[4]<<8) + peer_addr[5])); + + //update peer stainfo + psta->isrc = _TRUE; + //psta->aid = 0; + //psta->mac_id = 2; + + /* get a unique AID */ + if (psta->aid > 0) { + DBG_871X("old AID %d\n", psta->aid); + } else { + for (psta->aid = 1; psta->aid <= NUM_STA; psta->aid++) + if (pstapriv->sta_aid[psta->aid - 1] == NULL) + break; + + if (psta->aid > pstapriv->max_num_sta) { + psta->aid = 0; + DBG_871X("no room for more AIDs\n"); + return _SUCCESS; + } else { + pstapriv->sta_aid[psta->aid - 1] = psta; + DBG_871X("allocate new AID = (%d)\n", psta->aid); + } + } + + psta->qos_option = 1; + psta->htpriv.ht_option = _TRUE; + psta->ieee8021x_blocked = _FALSE; + psta->htpriv.ampdu_enable = _FALSE; + psta->htpriv.sgi = _FALSE; + psta->htpriv.bwmode = HT_CHANNEL_WIDTH_20; + psta->htpriv.ch_offset = HAL_PRIME_CHNL_OFFSET_DONT_CARE; + + //rtw_hal_set_odm_var(padapter, HAL_ODM_STA_INFO, psta, _TRUE); + + psta->htpriv.agg_enable_bitmap = 0x0;//reset + psta->htpriv.candidate_tid_bitmap = 0x0;//reset + + _rtw_memset((void*)&psta->sta_stats, 0, sizeof(struct stainfo_stats)); + + _enter_critical_bh(&psta->lock, &irqL); + psta->state |= _FW_LINKED; + _exit_critical_bh(&psta->lock, &irqL); + + report_add_sta_event(padapter, psta->hwaddr, psta->aid); + + } + + issue_probersp(padapter, get_sa(pframe), _FALSE); + + return _SUCCESS; + + } + +_non_rc_device: + + return _SUCCESS; +#endif //CONFIG_AUTO_AP_MODE + + +#ifdef CONFIG_CONCURRENT_MODE + if(((pmlmeinfo->state&0x03) == WIFI_FW_AP_STATE) && + check_buddy_fwstate(padapter, _FW_UNDER_LINKING|_FW_UNDER_SURVEY)) + { + //don't process probe req + return _SUCCESS; + } +#endif + + p = rtw_get_ie(pframe + WLAN_HDR_A3_LEN + _PROBEREQ_IE_OFFSET_, _SSID_IE_, (int *)&ielen, + len - WLAN_HDR_A3_LEN - _PROBEREQ_IE_OFFSET_); + + + //check (wildcard) SSID + if (p != NULL) + { + if(is_valid_p2p_probereq == _TRUE) + { + goto _issue_probersp; + } + + if ( (ielen != 0 && _FALSE ==_rtw_memcmp((void *)(p+2), (void *)cur->Ssid.Ssid, cur->Ssid.SsidLength)) + || (ielen == 0 && pmlmeinfo->hidden_ssid_mode) + ) + { + return _SUCCESS; + } + +_issue_probersp: + + if(check_fwstate(pmlmepriv, _FW_LINKED) == _TRUE && + pmlmepriv->cur_network.join_res == _TRUE) + { + //DBG_871X("+issue_probersp during ap mode\n"); + issue_probersp(padapter, get_sa(pframe), is_valid_p2p_probereq); + } + + } + + return _SUCCESS; + +} + +unsigned int OnProbeRsp(_adapter *padapter, union recv_frame *precv_frame) +{ + struct sta_info *psta; + struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; + struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info); + struct sta_priv *pstapriv = &padapter->stapriv; + u8 *pframe = precv_frame->u.hdr.rx_data; +#ifdef CONFIG_P2P + struct wifidirect_info *pwdinfo = &padapter->wdinfo; +#endif + + +#ifdef CONFIG_P2P + if(rtw_p2p_chk_state(pwdinfo, P2P_STATE_TX_PROVISION_DIS_REQ)) + { + if ( _TRUE == pwdinfo->tx_prov_disc_info.benable ) + { + if( _rtw_memcmp( pwdinfo->tx_prov_disc_info.peerIFAddr, GetAddr2Ptr(pframe), ETH_ALEN ) ) + { + if(rtw_p2p_chk_role(pwdinfo, P2P_ROLE_CLIENT)) + { + pwdinfo->tx_prov_disc_info.benable = _FALSE; + issue_p2p_provision_request( padapter, + pwdinfo->tx_prov_disc_info.ssid.Ssid, + pwdinfo->tx_prov_disc_info.ssid.SsidLength, + pwdinfo->tx_prov_disc_info.peerDevAddr ); + } + else if ( rtw_p2p_chk_role(pwdinfo, P2P_ROLE_DEVICE) || rtw_p2p_chk_role(pwdinfo, P2P_ROLE_GO) ) + { + pwdinfo->tx_prov_disc_info.benable = _FALSE; + issue_p2p_provision_request( padapter, + NULL, + 0, + pwdinfo->tx_prov_disc_info.peerDevAddr ); + } + } + } + return _SUCCESS; + } + else if(rtw_p2p_chk_state(pwdinfo, P2P_STATE_GONEGO_ING)) + { + if ( _TRUE == pwdinfo->nego_req_info.benable ) + { + DBG_871X( "[%s] P2P State is GONEGO ING!\n", __FUNCTION__ ); + if( _rtw_memcmp( pwdinfo->nego_req_info.peerDevAddr, GetAddr2Ptr(pframe), ETH_ALEN ) ) + { + pwdinfo->nego_req_info.benable = _FALSE; + issue_p2p_GO_request( padapter, pwdinfo->nego_req_info.peerDevAddr); + } + } + } + else if( rtw_p2p_chk_state(pwdinfo, P2P_STATE_TX_INVITE_REQ ) ) + { + if ( _TRUE == pwdinfo->invitereq_info.benable ) + { + DBG_871X( "[%s] P2P_STATE_TX_INVITE_REQ!\n", __FUNCTION__ ); + if( _rtw_memcmp( pwdinfo->invitereq_info.peer_macaddr, GetAddr2Ptr(pframe), ETH_ALEN ) ) + { + pwdinfo->invitereq_info.benable = _FALSE; + issue_p2p_invitation_request( padapter, pwdinfo->invitereq_info.peer_macaddr ); + } + } + } +#endif + + + if (pmlmeext->sitesurvey_res.state == SCAN_PROCESS) + { + report_survey_event(padapter, precv_frame); +#ifdef CONFIG_CONCURRENT_MODE + report_survey_event(padapter->pbuddy_adapter, precv_frame); +#endif +#ifdef CONFIG_DUALMAC_CONCURRENT + dc_report_survey_event(padapter, precv_frame); +#endif + return _SUCCESS; + } + + #if 0 //move to validate_recv_mgnt_frame + if (_rtw_memcmp(GetAddr3Ptr(pframe), get_my_bssid(&pmlmeinfo->network), ETH_ALEN)) + { + if (pmlmeinfo->state & WIFI_FW_ASSOC_SUCCESS) + { + if ((psta = rtw_get_stainfo(pstapriv, GetAddr2Ptr(pframe))) != NULL) + { + psta->sta_stats.rx_mgnt_pkts++; + } + } + } + #endif + + return _SUCCESS; + +} + +unsigned int OnBeacon(_adapter *padapter, union recv_frame *precv_frame) +{ + int cam_idx; + struct sta_info *psta; + struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; + struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info); + struct sta_priv *pstapriv = &padapter->stapriv; + u8 *pframe = precv_frame->u.hdr.rx_data; + uint len = precv_frame->u.hdr.len; + u8 *p = NULL; + u32 ielen = 0; + +#ifdef CONFIG_ATTEMPT_TO_FIX_AP_BEACON_ERROR + p = rtw_get_ie(pframe + sizeof(struct rtw_ieee80211_hdr_3addr) + _BEACON_IE_OFFSET_, _EXT_SUPPORTEDRATES_IE_, &ielen, precv_frame->u.hdr.len -sizeof(struct rtw_ieee80211_hdr_3addr) - _BEACON_IE_OFFSET_); + if ((p != NULL) && (ielen > 0)) + { + if ((*(p + 1 + ielen) == 0x2D) && (*(p + 2 + ielen) != 0x2D)) + { + /* Invalid value 0x2D is detected in Extended Supported Rates (ESR) IE. Try to fix the IE length to avoid failed Beacon parsing. */ + DBG_871X("[WIFIDBG] Error in ESR IE is detected in Beacon of BSSID:"MAC_FMT". Fix the length of ESR IE to avoid failed Beacon parsing.\n", MAC_ARG(GetAddr3Ptr(pframe))); + *(p + 1) = ielen - 1; + } + } +#endif + + if (pmlmeext->sitesurvey_res.state == SCAN_PROCESS) + { + report_survey_event(padapter, precv_frame); +#ifdef CONFIG_CONCURRENT_MODE + report_survey_event(padapter->pbuddy_adapter, precv_frame); +#endif + +#ifdef CONFIG_DUALMAC_CONCURRENT + dc_report_survey_event(padapter, precv_frame); +#endif + + return _SUCCESS; + } + + if (_rtw_memcmp(GetAddr3Ptr(pframe), get_my_bssid(&pmlmeinfo->network), ETH_ALEN)) + { + if (pmlmeinfo->state & WIFI_FW_AUTH_NULL) + { + //check the vendor of the assoc AP + pmlmeinfo->assoc_AP_vendor = check_assoc_AP(pframe+sizeof(struct rtw_ieee80211_hdr_3addr), len-sizeof(struct rtw_ieee80211_hdr_3addr)); +#ifdef CONFIG_P2P_PS + // do P2P PS Before link ? , ToDo + //process_p2p_ps_ie(padapter, (pframe + WLAN_HDR_A3_LEN), (len - WLAN_HDR_A3_LEN)); +#endif // CONFIG_P2P_PS + + //update TSF Value + update_TSF(pmlmeext, pframe, len); + + //start auth + start_clnt_auth(padapter); + + return _SUCCESS; + } + + if(((pmlmeinfo->state&0x03) == WIFI_FW_STATION_STATE) && (pmlmeinfo->state & WIFI_FW_ASSOC_SUCCESS)) + { + if ((psta = rtw_get_stainfo(pstapriv, GetAddr2Ptr(pframe))) != NULL) + { + #ifdef CONFIG_PATCH_JOIN_WRONG_CHANNEL + //Merge from 8712 FW code + if (cmp_pkt_chnl_diff(padapter,pframe,len) != 0) + { // join wrong channel, deauth and reconnect + issue_deauth(padapter, (&(pmlmeinfo->network))->MacAddress, WLAN_REASON_DEAUTH_LEAVING); + + report_del_sta_event(padapter,(&(pmlmeinfo->network))->MacAddress, WLAN_REASON_JOIN_WRONG_CHANNEL); + pmlmeinfo->state &= (~WIFI_FW_ASSOC_SUCCESS); + return _SUCCESS; + } + #endif //CONFIG_PATCH_JOIN_WRONG_CHANNEL + + //update WMM, ERP in the beacon + //todo: the timer is used instead of the number of the beacon received + if ((sta_rx_pkts(psta) & 0xf) == 0) + { + //DBG_871X("update_bcn_info\n"); + update_beacon_info(padapter, pframe, len, psta); + } + +#ifdef CONFIG_DFS + process_csa_ie(padapter, pframe, len); //channel switch announcement +#endif //CONFIG_DFS + +#ifdef CONFIG_P2P_PS + //if(psta->ieee8021x_blocked == _FALSE) // do not allow P2P PS during EAPOL handshake ? + process_p2p_ps_ie(padapter, (pframe + WLAN_HDR_A3_LEN), (len - WLAN_HDR_A3_LEN)); +#endif //CONFIG_P2P_PS + + #if 0 //move to validate_recv_mgnt_frame + psta->sta_stats.rx_mgnt_pkts++; + #endif + } + } + else if((pmlmeinfo->state&0x03) == WIFI_FW_ADHOC_STATE) + { + if ((psta = rtw_get_stainfo(pstapriv, GetAddr2Ptr(pframe))) != NULL) + { + //update WMM, ERP in the beacon + //todo: the timer is used instead of the number of the beacon received + if ((sta_rx_pkts(psta) & 0xf) == 0) + { + //DBG_871X("update_bcn_info\n"); + update_beacon_info(padapter, pframe, len, psta); + } + + #if 0 //move to validate_recv_mgnt_frame + psta->sta_stats.rx_mgnt_pkts++; + #endif + } + else + { + //allocate a new CAM entry for IBSS station + if ((cam_idx = allocate_fw_sta_entry(padapter)) == NUM_STA) + { + goto _END_ONBEACON_; + } + + //get supported rate + if (update_sta_support_rate(padapter, (pframe + WLAN_HDR_A3_LEN + _BEACON_IE_OFFSET_), (len - WLAN_HDR_A3_LEN - _BEACON_IE_OFFSET_), cam_idx) == _FAIL) + { + pmlmeinfo->FW_sta_info[cam_idx].status = 0; + goto _END_ONBEACON_; + } + + //update TSF Value + update_TSF(pmlmeext, pframe, len); + + //report sta add event + report_add_sta_event(padapter, GetAddr2Ptr(pframe), cam_idx); + } + } + } + +_END_ONBEACON_: + + return _SUCCESS; + +} + +unsigned int OnAuth(_adapter *padapter, union recv_frame *precv_frame) +{ +#ifdef CONFIG_AP_MODE + _irqL irqL; + unsigned int auth_mode, seq, ie_len; + unsigned char *sa, *p; + u16 algorithm; + int status; + static struct sta_info stat; + struct sta_info *pstat=NULL; + struct sta_priv *pstapriv = &padapter->stapriv; + struct security_priv *psecuritypriv = &padapter->securitypriv; + struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; + struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info); + u8 *pframe = precv_frame->u.hdr.rx_data; + uint len = precv_frame->u.hdr.len; + + +#ifdef CONFIG_CONCURRENT_MODE + if(((pmlmeinfo->state&0x03) == WIFI_FW_AP_STATE) && + check_buddy_fwstate(padapter, _FW_UNDER_LINKING|_FW_UNDER_SURVEY)) + { + //don't process auth request; + return _SUCCESS; + } +#endif //CONFIG_CONCURRENT_MODE + + if((pmlmeinfo->state&0x03) != WIFI_FW_AP_STATE) + return _FAIL; + + DBG_871X("+OnAuth\n"); + + sa = GetAddr2Ptr(pframe); + + auth_mode = psecuritypriv->dot11AuthAlgrthm; + seq = cpu_to_le16(*(u16*)((SIZE_PTR)pframe + WLAN_HDR_A3_LEN + 2)); + algorithm = cpu_to_le16(*(u16*)((SIZE_PTR)pframe + WLAN_HDR_A3_LEN)); + + if (GetPrivacy(pframe)) + { +#if 0 //TODO: SW rtw_wep_decrypt + if (SWCRYPTO) + { + status = rtw_wep_decrypt(priv, pframe, pfrinfo->pktlen, + priv->pmib->dot1180211AuthEntry.dot11PrivacyAlgrthm); + if (status == FALSE) + { + SAVE_INT_AND_CLI(flags); + RT_TRACE(_module_rtl871x_mlme_c_,_drv_err_,"wep-decrypt a Auth frame error!\n"); + status = _STATS_CHALLENGE_FAIL_; + goto auth_fail; + } + } + + seq = cpu_to_le16(*(unsigned short *)((unsigned int)pframe + WLAN_HDR_A3_LEN + 4 + 2)); + algorithm = cpu_to_le16(*(unsigned short *)((unsigned int)pframe + WLAN_HDR_A3_LEN + 4)); +#endif + } + + + DBG_871X("auth alg=%x, seq=%X\n", algorithm, seq); + + if (auth_mode == 2 && + psecuritypriv->dot11PrivacyAlgrthm != _WEP40_ && + psecuritypriv->dot11PrivacyAlgrthm != _WEP104_) + auth_mode = 0; + + if ((algorithm > 0 && auth_mode == 0) || // rx a shared-key auth but shared not enabled + (algorithm == 0 && auth_mode == 1) ) // rx a open-system auth but shared-key is enabled + { + DBG_871X("auth rejected due to bad alg [alg=%d, auth_mib=%d] %02X%02X%02X%02X%02X%02X\n", + algorithm, auth_mode, sa[0], sa[1], sa[2], sa[3], sa[4], sa[5]); + + status = _STATS_NO_SUPP_ALG_; + + goto auth_fail; + } + +#if 0 //ACL control + phead = &priv->wlan_acl_list; + plist = phead->next; + //check sa + if (acl_mode == 1) // 1: positive check, only those on acl_list can be connected. + res = FAIL; + else + res = SUCCESS; + + while(plist != phead) + { + paclnode = list_entry(plist, struct rtw_wlan_acl_node, list); + plist = plist->next; + if (!memcmp((void *)sa, paclnode->addr, 6)) { + if (paclnode->mode & 2) { // deny + res = FAIL; + break; + } + else { + res = SUCCESS; + break; + } + } + } + + if (res != SUCCESS) { + RT_TRACE(_module_rtl871x_mlme_c_,_drv_err_,"auth abort because ACL!\n"); + return FAIL; + } +#else + if(rtw_access_ctrl(padapter, sa) == _FALSE) + { + status = _STATS_UNABLE_HANDLE_STA_; + goto auth_fail; + } +#endif + + pstat = rtw_get_stainfo(pstapriv, sa); + if (pstat == NULL) + { + // allocate a new one + DBG_871X("going to alloc stainfo for sa="MAC_FMT"\n", MAC_ARG(sa)); + pstat = rtw_alloc_stainfo(pstapriv, sa); + if (pstat == NULL) + { + DBG_871X(" Exceed the upper limit of supported clients...\n"); + status = _STATS_UNABLE_HANDLE_STA_; + goto auth_fail; + } + + pstat->state = WIFI_FW_AUTH_NULL; + pstat->auth_seq = 0; + + //pstat->flags = 0; + //pstat->capability = 0; + } + else + { + _enter_critical_bh(&pstapriv->asoc_list_lock, &irqL); + if(rtw_is_list_empty(&pstat->asoc_list)==_FALSE) + { + rtw_list_delete(&pstat->asoc_list); + pstapriv->asoc_list_cnt--; + if (pstat->expire_to > 0) + { + //TODO: STA re_auth within expire_to + } + } + _exit_critical_bh(&pstapriv->asoc_list_lock, &irqL); + + if (seq==1) { + //TODO: STA re_auth and auth timeout + } + } + + _enter_critical_bh(&pstapriv->auth_list_lock, &irqL); + if (rtw_is_list_empty(&pstat->auth_list)) + { + rtw_list_insert_tail(&pstat->auth_list, &pstapriv->auth_list); + pstapriv->auth_list_cnt++; + } + _exit_critical_bh(&pstapriv->auth_list_lock, &irqL); + + if (pstat->auth_seq == 0) + pstat->expire_to = pstapriv->auth_to; + + if ((pstat->auth_seq + 1) != seq) + { + DBG_871X("(1)auth rejected because out of seq [rx_seq=%d, exp_seq=%d]!\n", + seq, pstat->auth_seq+1); + status = _STATS_OUT_OF_AUTH_SEQ_; + goto auth_fail; + } + + if (algorithm==0 && (auth_mode == 0 || auth_mode == 2)) + { + if (seq == 1) + { + pstat->state &= ~WIFI_FW_AUTH_NULL; + pstat->state |= WIFI_FW_AUTH_SUCCESS; + pstat->expire_to = pstapriv->assoc_to; + pstat->authalg = algorithm; + } + else + { + DBG_871X("(2)auth rejected because out of seq [rx_seq=%d, exp_seq=%d]!\n", + seq, pstat->auth_seq+1); + status = _STATS_OUT_OF_AUTH_SEQ_; + goto auth_fail; + } + } + else // shared system or auto authentication + { + if (seq == 1) + { + //prepare for the challenging txt... + + //get_random_bytes((void *)pstat->chg_txt, 128);//TODO: + + pstat->state &= ~WIFI_FW_AUTH_NULL; + pstat->state |= WIFI_FW_AUTH_STATE; + pstat->authalg = algorithm; + pstat->auth_seq = 2; + } + else if (seq == 3) + { + //checking for challenging txt... + DBG_871X("checking for challenging txt...\n"); + + p = rtw_get_ie(pframe + WLAN_HDR_A3_LEN + 4 + _AUTH_IE_OFFSET_ , _CHLGETXT_IE_, (int *)&ie_len, + len - WLAN_HDR_A3_LEN - _AUTH_IE_OFFSET_ - 4); + + if((p==NULL) || (ie_len<=0)) + { + DBG_871X("auth rejected because challenge failure!(1)\n"); + status = _STATS_CHALLENGE_FAIL_; + goto auth_fail; + } + + if (_rtw_memcmp((void *)(p + 2), pstat->chg_txt, 128)) + { + pstat->state &= (~WIFI_FW_AUTH_STATE); + pstat->state |= WIFI_FW_AUTH_SUCCESS; + // challenging txt is correct... + pstat->expire_to = pstapriv->assoc_to; + } + else + { + DBG_871X("auth rejected because challenge failure!\n"); + status = _STATS_CHALLENGE_FAIL_; + goto auth_fail; + } + } + else + { + DBG_871X("(3)auth rejected because out of seq [rx_seq=%d, exp_seq=%d]!\n", + seq, pstat->auth_seq+1); + status = _STATS_OUT_OF_AUTH_SEQ_; + goto auth_fail; + } + } + + + // Now, we are going to issue_auth... + pstat->auth_seq = seq + 1; + +#ifdef CONFIG_NATIVEAP_MLME + issue_auth(padapter, pstat, (unsigned short)(_STATS_SUCCESSFUL_)); +#endif + + if (pstat->state & WIFI_FW_AUTH_SUCCESS) + pstat->auth_seq = 0; + + + return _SUCCESS; + +auth_fail: + + if(pstat) + rtw_free_stainfo(padapter , pstat); + + pstat = &stat; + _rtw_memset((char *)pstat, '\0', sizeof(stat)); + pstat->auth_seq = 2; + _rtw_memcpy(pstat->hwaddr, sa, 6); + +#ifdef CONFIG_NATIVEAP_MLME + issue_auth(padapter, pstat, (unsigned short)status); +#endif + +#endif + return _FAIL; + +} + +unsigned int OnAuthClient(_adapter *padapter, union recv_frame *precv_frame) +{ + unsigned int seq, len, status, algthm, offset; + unsigned char *p; + unsigned int go2asoc = 0; + struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; + struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info); + u8 *pframe = precv_frame->u.hdr.rx_data; + uint pkt_len = precv_frame->u.hdr.len; + + DBG_871X("%s\n", __FUNCTION__); + + //check A1 matches or not + if (!_rtw_memcmp(myid(&(padapter->eeprompriv)), get_da(pframe), ETH_ALEN)) + return _SUCCESS; + + if (!(pmlmeinfo->state & WIFI_FW_AUTH_STATE)) + return _SUCCESS; + + offset = (GetPrivacy(pframe))? 4: 0; + + algthm = le16_to_cpu(*(unsigned short *)((SIZE_PTR)pframe + WLAN_HDR_A3_LEN + offset)); + seq = le16_to_cpu(*(unsigned short *)((SIZE_PTR)pframe + WLAN_HDR_A3_LEN + offset + 2)); + status = le16_to_cpu(*(unsigned short *)((SIZE_PTR)pframe + WLAN_HDR_A3_LEN + offset + 4)); + + if (status != 0) + { + DBG_871X("clnt auth fail, status: %d\n", status); + if(status == 13)//&& pmlmeinfo->auth_algo == dot11AuthAlgrthm_Auto) + { + if(pmlmeinfo->auth_algo == dot11AuthAlgrthm_Shared) + pmlmeinfo->auth_algo = dot11AuthAlgrthm_Open; + else + pmlmeinfo->auth_algo = dot11AuthAlgrthm_Shared; + //pmlmeinfo->reauth_count = 0; + } + + set_link_timer(pmlmeext, 1); + goto authclnt_fail; + } + + if (seq == 2) + { + if (pmlmeinfo->auth_algo == dot11AuthAlgrthm_Shared) + { + // legendary shared system + p = rtw_get_ie(pframe + WLAN_HDR_A3_LEN + _AUTH_IE_OFFSET_, _CHLGETXT_IE_, (int *)&len, + pkt_len - WLAN_HDR_A3_LEN - _AUTH_IE_OFFSET_); + + if (p == NULL) + { + //DBG_871X("marc: no challenge text?\n"); + goto authclnt_fail; + } + + _rtw_memcpy((void *)(pmlmeinfo->chg_txt), (void *)(p + 2), len); + pmlmeinfo->auth_seq = 3; + issue_auth(padapter, NULL, 0); + set_link_timer(pmlmeext, REAUTH_TO); + + return _SUCCESS; + } + else + { + // open system + go2asoc = 1; + } + } + else if (seq == 4) + { + if (pmlmeinfo->auth_algo == dot11AuthAlgrthm_Shared) + { + go2asoc = 1; + } + else + { + goto authclnt_fail; + } + } + else + { + // this is also illegal + //DBG_871X("marc: clnt auth failed due to illegal seq=%x\n", seq); + goto authclnt_fail; + } + + if (go2asoc) + { + start_clnt_assoc(padapter); + return _SUCCESS; + } + +authclnt_fail: + + //pmlmeinfo->state &= ~(WIFI_FW_AUTH_STATE); + + return _FAIL; + +} + +unsigned int OnAssocReq(_adapter *padapter, union recv_frame *precv_frame) +{ +#ifdef CONFIG_AP_MODE + _irqL irqL; + u16 capab_info, listen_interval; + struct rtw_ieee802_11_elems elems; + struct sta_info *pstat; + unsigned char reassoc, *p, *pos, *wpa_ie; + unsigned char WMM_IE[] = {0x00, 0x50, 0xf2, 0x02, 0x00, 0x01}; + int i, ie_len, wpa_ie_len, left; + unsigned char supportRate[16]; + int supportRateNum; + unsigned short status = _STATS_SUCCESSFUL_; + unsigned short frame_type, ie_offset=0; + struct mlme_priv *pmlmepriv = &padapter->mlmepriv; + struct security_priv *psecuritypriv = &padapter->securitypriv; + struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; + struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info); + WLAN_BSSID_EX *cur = &(pmlmeinfo->network); + struct sta_priv *pstapriv = &padapter->stapriv; + u8 *pframe = precv_frame->u.hdr.rx_data; + uint pkt_len = precv_frame->u.hdr.len; +#ifdef CONFIG_P2P + struct wifidirect_info *pwdinfo = &(padapter->wdinfo); + u8 p2p_status_code = P2P_STATUS_SUCCESS; + u8 *p2pie; + u32 p2pielen = 0; +#ifdef CONFIG_WFD + u8 wfd_ie[ 128 ] = { 0x00 }; + u32 wfd_ielen = 0; +#endif // CONFIG_WFD +#endif //CONFIG_P2P + +#ifdef CONFIG_CONCURRENT_MODE + if(((pmlmeinfo->state&0x03) == WIFI_FW_AP_STATE) && + check_buddy_fwstate(padapter, _FW_UNDER_LINKING|_FW_UNDER_SURVEY)) + { + //don't process assoc request; + return _SUCCESS; + } +#endif //CONFIG_CONCURRENT_MODE + + if((pmlmeinfo->state&0x03) != WIFI_FW_AP_STATE) + return _FAIL; + + frame_type = GetFrameSubType(pframe); + if (frame_type == WIFI_ASSOCREQ) + { + reassoc = 0; + ie_offset = _ASOCREQ_IE_OFFSET_; + } + else // WIFI_REASSOCREQ + { + reassoc = 1; + ie_offset = _REASOCREQ_IE_OFFSET_; + } + + + if (pkt_len < IEEE80211_3ADDR_LEN + ie_offset) { + DBG_871X("handle_assoc(reassoc=%d) - too short payload (len=%lu)" + "\n", reassoc, (unsigned long)pkt_len); + return _FAIL; + } + + pstat = rtw_get_stainfo(pstapriv, GetAddr2Ptr(pframe)); + if (pstat == (struct sta_info *)NULL) + { + status = _RSON_CLS2_; + goto asoc_class2_error; + } + + capab_info = RTW_GET_LE16(pframe + WLAN_HDR_A3_LEN); + //capab_info = le16_to_cpu(*(unsigned short *)(pframe + WLAN_HDR_A3_LEN)); + //listen_interval = le16_to_cpu(*(unsigned short *)(pframe + WLAN_HDR_A3_LEN+2)); + listen_interval = RTW_GET_LE16(pframe + WLAN_HDR_A3_LEN+2); + + left = pkt_len - (IEEE80211_3ADDR_LEN + ie_offset); + pos = pframe + (IEEE80211_3ADDR_LEN + ie_offset); + + + DBG_871X("%s\n", __FUNCTION__); + + // check if this stat has been successfully authenticated/assocated + if (!((pstat->state) & WIFI_FW_AUTH_SUCCESS)) + { + if (!((pstat->state) & WIFI_FW_ASSOC_SUCCESS)) + { + status = _RSON_CLS2_; + goto asoc_class2_error; + } + else + { + pstat->state &= (~WIFI_FW_ASSOC_SUCCESS); + pstat->state |= WIFI_FW_ASSOC_STATE; + } + } + else + { + pstat->state &= (~WIFI_FW_AUTH_SUCCESS); + pstat->state |= WIFI_FW_ASSOC_STATE; + } + + +#if 0// todo:tkip_countermeasures + if (hapd->tkip_countermeasures) { + resp = WLAN_REASON_MICHAEL_MIC_FAILURE; + goto fail; + } +#endif + + pstat->capability = capab_info; + +#if 0//todo: + //check listen_interval + if (listen_interval > hapd->conf->max_listen_interval) { + hostapd_logger(hapd, mgmt->sa, HOSTAPD_MODULE_IEEE80211, + HOSTAPD_LEVEL_DEBUG, + "Too large Listen Interval (%d)", + listen_interval); + resp = WLAN_STATUS_ASSOC_DENIED_LISTEN_INT_TOO_LARGE; + goto fail; + } + + pstat->listen_interval = listen_interval; +#endif + + //now parse all ieee802_11 ie to point to elems + if (rtw_ieee802_11_parse_elems(pos, left, &elems, 1) == ParseFailed || + !elems.ssid) { + DBG_871X("STA " MAC_FMT " sent invalid association request\n", + MAC_ARG(pstat->hwaddr)); + status = _STATS_FAILURE_; + goto OnAssocReqFail; + } + + + // now we should check all the fields... + // checking SSID + p = rtw_get_ie(pframe + WLAN_HDR_A3_LEN + ie_offset, _SSID_IE_, &ie_len, + pkt_len - WLAN_HDR_A3_LEN - ie_offset); + if (p == NULL) + { + status = _STATS_FAILURE_; + } + + if (ie_len == 0) // broadcast ssid, however it is not allowed in assocreq + status = _STATS_FAILURE_; + else + { + // check if ssid match + if (!_rtw_memcmp((void *)(p+2), cur->Ssid.Ssid, cur->Ssid.SsidLength)) + status = _STATS_FAILURE_; + + if (ie_len != cur->Ssid.SsidLength) + status = _STATS_FAILURE_; + } + + if(_STATS_SUCCESSFUL_ != status) + goto OnAssocReqFail; + + // check if the supported rate is ok + p = rtw_get_ie(pframe + WLAN_HDR_A3_LEN + ie_offset, _SUPPORTEDRATES_IE_, &ie_len, pkt_len - WLAN_HDR_A3_LEN - ie_offset); + if (p == NULL) { + DBG_871X("Rx a sta assoc-req which supported rate is empty!\n"); + // use our own rate set as statoin used + //_rtw_memcpy(supportRate, AP_BSSRATE, AP_BSSRATE_LEN); + //supportRateNum = AP_BSSRATE_LEN; + + status = _STATS_FAILURE_; + goto OnAssocReqFail; + } + else { + _rtw_memcpy(supportRate, p+2, ie_len); + supportRateNum = ie_len; + + p = rtw_get_ie(pframe + WLAN_HDR_A3_LEN + ie_offset, _EXT_SUPPORTEDRATES_IE_ , &ie_len, + pkt_len - WLAN_HDR_A3_LEN - ie_offset); + if (p != NULL) { + + if(supportRateNum<=sizeof(supportRate)) + { + _rtw_memcpy(supportRate+supportRateNum, p+2, ie_len); + supportRateNum += ie_len; + } + } + } + + //todo: mask supportRate between AP & STA -> move to update raid + //get_matched_rate(pmlmeext, supportRate, &supportRateNum, 0); + + //update station supportRate + pstat->bssratelen = supportRateNum; + _rtw_memcpy(pstat->bssrateset, supportRate, supportRateNum); + + + //check RSN/WPA/WPS + pstat->dot8021xalg = 0; + pstat->wpa_psk = 0; + pstat->wpa_group_cipher = 0; + pstat->wpa2_group_cipher = 0; + pstat->wpa_pairwise_cipher = 0; + pstat->wpa2_pairwise_cipher = 0; + _rtw_memset(pstat->wpa_ie, 0, sizeof(pstat->wpa_ie)); + if((psecuritypriv->wpa_psk & BIT(1)) && elems.rsn_ie) { + + int group_cipher=0, pairwise_cipher=0; + + wpa_ie = elems.rsn_ie; + wpa_ie_len = elems.rsn_ie_len; + + if(rtw_parse_wpa2_ie(wpa_ie-2, wpa_ie_len+2, &group_cipher, &pairwise_cipher) == _SUCCESS) + { + pstat->dot8021xalg = 1;//psk, todo:802.1x + pstat->wpa_psk |= BIT(1); + + pstat->wpa2_group_cipher = group_cipher&psecuritypriv->wpa2_group_cipher; + pstat->wpa2_pairwise_cipher = pairwise_cipher&psecuritypriv->wpa2_pairwise_cipher; + + if(!pstat->wpa2_group_cipher) + status = WLAN_STATUS_GROUP_CIPHER_NOT_VALID; + + if(!pstat->wpa2_pairwise_cipher) + status = WLAN_STATUS_PAIRWISE_CIPHER_NOT_VALID; + } + else + { + status = WLAN_STATUS_INVALID_IE; + } + + } else if ((psecuritypriv->wpa_psk & BIT(0)) && elems.wpa_ie) { + + int group_cipher=0, pairwise_cipher=0; + + wpa_ie = elems.wpa_ie; + wpa_ie_len = elems.wpa_ie_len; + + if(rtw_parse_wpa_ie(wpa_ie-2, wpa_ie_len+2, &group_cipher, &pairwise_cipher) == _SUCCESS) + { + pstat->dot8021xalg = 1;//psk, todo:802.1x + pstat->wpa_psk |= BIT(0); + + pstat->wpa_group_cipher = group_cipher&psecuritypriv->wpa_group_cipher; + pstat->wpa_pairwise_cipher = pairwise_cipher&psecuritypriv->wpa_pairwise_cipher; + + if(!pstat->wpa_group_cipher) + status = WLAN_STATUS_GROUP_CIPHER_NOT_VALID; + + if(!pstat->wpa_pairwise_cipher) + status = WLAN_STATUS_PAIRWISE_CIPHER_NOT_VALID; + + } + else + { + status = WLAN_STATUS_INVALID_IE; + } + + } else { + wpa_ie = NULL; + wpa_ie_len = 0; + } + + if(_STATS_SUCCESSFUL_ != status) + goto OnAssocReqFail; + + pstat->flags &= ~(WLAN_STA_WPS | WLAN_STA_MAYBE_WPS); + //if (hapd->conf->wps_state && wpa_ie == NULL) { //todo: to check ap if supporting WPS + if(wpa_ie == NULL) { + if (elems.wps_ie) { + DBG_871X("STA included WPS IE in " + "(Re)Association Request - assume WPS is " + "used\n"); + pstat->flags |= WLAN_STA_WPS; + //wpabuf_free(sta->wps_ie); + //sta->wps_ie = wpabuf_alloc_copy(elems.wps_ie + 4, + // elems.wps_ie_len - 4); + } else { + DBG_871X("STA did not include WPA/RSN IE " + "in (Re)Association Request - possible WPS " + "use\n"); + pstat->flags |= WLAN_STA_MAYBE_WPS; + } + + + // AP support WPA/RSN, and sta is going to do WPS, but AP is not ready + // that the selected registrar of AP is _FLASE + if((psecuritypriv->wpa_psk >0) + && (pstat->flags & (WLAN_STA_WPS|WLAN_STA_MAYBE_WPS))) + { + if(pmlmepriv->wps_beacon_ie) + { + u8 selected_registrar = 0; + + rtw_get_wps_attr_content(pmlmepriv->wps_beacon_ie, pmlmepriv->wps_beacon_ie_len, WPS_ATTR_SELECTED_REGISTRAR , &selected_registrar, NULL); + + if(!selected_registrar) + { + DBG_871X("selected_registrar is _FALSE , or AP is not ready to do WPS\n"); + + status = _STATS_UNABLE_HANDLE_STA_; + + goto OnAssocReqFail; + } + } + } + + } + else + { + int copy_len; + + if(psecuritypriv->wpa_psk == 0) + { + DBG_871X("STA " MAC_FMT ": WPA/RSN IE in association " + "request, but AP don't support WPA/RSN\n", MAC_ARG(pstat->hwaddr)); + + status = WLAN_STATUS_INVALID_IE; + + goto OnAssocReqFail; + + } + + if (elems.wps_ie) { + DBG_871X("STA included WPS IE in " + "(Re)Association Request - WPS is " + "used\n"); + pstat->flags |= WLAN_STA_WPS; + copy_len=0; + } + else + { + copy_len = ((wpa_ie_len+2) > sizeof(pstat->wpa_ie)) ? (sizeof(pstat->wpa_ie)):(wpa_ie_len+2); + } + + + if(copy_len>0) + _rtw_memcpy(pstat->wpa_ie, wpa_ie-2, copy_len); + + } + + + // check if there is WMM IE & support WWM-PS + pstat->flags &= ~WLAN_STA_WME; + pstat->qos_option = 0; + pstat->qos_info = 0; + pstat->has_legacy_ac = _TRUE; + pstat->uapsd_vo = 0; + pstat->uapsd_vi = 0; + pstat->uapsd_be = 0; + pstat->uapsd_bk = 0; + if (pmlmepriv->qospriv.qos_option) + { + p = pframe + WLAN_HDR_A3_LEN + ie_offset; ie_len = 0; + for (;;) + { + p = rtw_get_ie(p, _VENDOR_SPECIFIC_IE_, &ie_len, pkt_len - WLAN_HDR_A3_LEN - ie_offset); + if (p != NULL) { + if (_rtw_memcmp(p+2, WMM_IE, 6)) { + + pstat->flags |= WLAN_STA_WME; + + pstat->qos_option = 1; + pstat->qos_info = *(p+8); + + pstat->max_sp_len = (pstat->qos_info>>5)&0x3; + + if((pstat->qos_info&0xf) !=0xf) + pstat->has_legacy_ac = _TRUE; + else + pstat->has_legacy_ac = _FALSE; + + if(pstat->qos_info&0xf) + { + if(pstat->qos_info&BIT(0)) + pstat->uapsd_vo = BIT(0)|BIT(1); + else + pstat->uapsd_vo = 0; + + if(pstat->qos_info&BIT(1)) + pstat->uapsd_vi = BIT(0)|BIT(1); + else + pstat->uapsd_vi = 0; + + if(pstat->qos_info&BIT(2)) + pstat->uapsd_bk = BIT(0)|BIT(1); + else + pstat->uapsd_bk = 0; + + if(pstat->qos_info&BIT(3)) + pstat->uapsd_be = BIT(0)|BIT(1); + else + pstat->uapsd_be = 0; + + } + + break; + } + } + else { + break; + } + p = p + ie_len + 2; + } + } + + +#ifdef CONFIG_80211N_HT + /* save HT capabilities in the sta object */ + _rtw_memset(&pstat->htpriv.ht_cap, 0, sizeof(struct rtw_ieee80211_ht_cap)); + if (elems.ht_capabilities && elems.ht_capabilities_len >= sizeof(struct rtw_ieee80211_ht_cap)) + { + pstat->flags |= WLAN_STA_HT; + + pstat->flags |= WLAN_STA_WME; + + _rtw_memcpy(&pstat->htpriv.ht_cap, elems.ht_capabilities, sizeof(struct rtw_ieee80211_ht_cap)); + + } else + pstat->flags &= ~WLAN_STA_HT; + + + if((pmlmepriv->htpriv.ht_option == _FALSE) && (pstat->flags&WLAN_STA_HT)) + { + status = _STATS_FAILURE_; + goto OnAssocReqFail; + } + + + if ((pstat->flags & WLAN_STA_HT) && + ((pstat->wpa2_pairwise_cipher&WPA_CIPHER_TKIP) || + (pstat->wpa_pairwise_cipher&WPA_CIPHER_TKIP))) + { + DBG_871X("HT: " MAC_FMT " tried to " + "use TKIP with HT association\n", MAC_ARG(pstat->hwaddr)); + + //status = WLAN_STATUS_CIPHER_REJECTED_PER_POLICY; + //goto OnAssocReqFail; + } +#endif /* CONFIG_80211N_HT */ + + // + //if (hapd->iface->current_mode->mode == HOSTAPD_MODE_IEEE80211G)//? + pstat->flags |= WLAN_STA_NONERP; + for (i = 0; i < pstat->bssratelen; i++) { + if ((pstat->bssrateset[i] & 0x7f) > 22) { + pstat->flags &= ~WLAN_STA_NONERP; + break; + } + } + + if (pstat->capability & WLAN_CAPABILITY_SHORT_PREAMBLE) + pstat->flags |= WLAN_STA_SHORT_PREAMBLE; + else + pstat->flags &= ~WLAN_STA_SHORT_PREAMBLE; + + + + if (status != _STATS_SUCCESSFUL_) + goto OnAssocReqFail; + +#ifdef CONFIG_P2P + pstat->is_p2p_device = _FALSE; + if(rtw_p2p_chk_role(pwdinfo, P2P_ROLE_GO)) + { + if( (p2pie=rtw_get_p2p_ie(pframe + WLAN_HDR_A3_LEN + ie_offset , pkt_len - WLAN_HDR_A3_LEN - ie_offset , NULL, &p2pielen))) + { + pstat->is_p2p_device = _TRUE; + if((p2p_status_code=(u8)process_assoc_req_p2p_ie(pwdinfo, pframe, pkt_len, pstat))>0) + { + pstat->p2p_status_code = p2p_status_code; + status = _STATS_CAP_FAIL_; + goto OnAssocReqFail; + } + } +#ifdef CONFIG_WFD + if(rtw_get_wfd_ie(pframe + WLAN_HDR_A3_LEN + ie_offset , pkt_len - WLAN_HDR_A3_LEN - ie_offset , wfd_ie, &wfd_ielen )) + { + u8 attr_content[ 10 ] = { 0x00 }; + u32 attr_contentlen = 0; + + DBG_8192C( "[%s] WFD IE Found!!\n", __FUNCTION__ ); + rtw_get_wfd_attr_content( wfd_ie, wfd_ielen, WFD_ATTR_DEVICE_INFO, attr_content, &attr_contentlen); + if ( attr_contentlen ) + { + pwdinfo->wfd_info->peer_rtsp_ctrlport = RTW_GET_BE16( attr_content + 2 ); + DBG_8192C( "[%s] Peer PORT NUM = %d\n", __FUNCTION__, pwdinfo->wfd_info->peer_rtsp_ctrlport ); + } + } +#endif + } + pstat->p2p_status_code = p2p_status_code; +#endif //CONFIG_P2P + + //TODO: identify_proprietary_vendor_ie(); + // Realtek proprietary IE + // identify if this is Broadcom sta + // identify if this is ralink sta + // Customer proprietary IE + + + + /* get a unique AID */ + if (pstat->aid > 0) { + DBG_871X(" old AID %d\n", pstat->aid); + } else { + for (pstat->aid = 1; pstat->aid <= NUM_STA; pstat->aid++) + if (pstapriv->sta_aid[pstat->aid - 1] == NULL) + break; + + //if (pstat->aid > NUM_STA) { + if (pstat->aid > pstapriv->max_num_sta) { + + pstat->aid = 0; + + DBG_871X(" no room for more AIDs\n"); + + status = WLAN_STATUS_AP_UNABLE_TO_HANDLE_NEW_STA; + + goto OnAssocReqFail; + + + } else { + pstapriv->sta_aid[pstat->aid - 1] = pstat; + DBG_871X("allocate new AID = (%d)\n", pstat->aid); + } + } + + + pstat->state &= (~WIFI_FW_ASSOC_STATE); + pstat->state |= WIFI_FW_ASSOC_SUCCESS; + + _enter_critical_bh(&pstapriv->auth_list_lock, &irqL); + if (!rtw_is_list_empty(&pstat->auth_list)) + { + rtw_list_delete(&pstat->auth_list); + pstapriv->auth_list_cnt--; + } + _exit_critical_bh(&pstapriv->auth_list_lock, &irqL); + + _enter_critical_bh(&pstapriv->asoc_list_lock, &irqL); + if (rtw_is_list_empty(&pstat->asoc_list)) + { + pstat->expire_to = pstapriv->expire_to; + rtw_list_insert_tail(&pstat->asoc_list, &pstapriv->asoc_list); + pstapriv->asoc_list_cnt++; + } + _exit_critical_bh(&pstapriv->asoc_list_lock, &irqL); + + // now the station is qualified to join our BSS... + if(pstat && (pstat->state & WIFI_FW_ASSOC_SUCCESS) && (_STATS_SUCCESSFUL_==status)) + { +#ifdef CONFIG_NATIVEAP_MLME + //.1 bss_cap_update & sta_info_update + bss_cap_update_on_sta_join(padapter, pstat); + sta_info_update(padapter, pstat); + + //issue assoc rsp before notify station join event. + if (frame_type == WIFI_ASSOCREQ) + issue_asocrsp(padapter, status, pstat, WIFI_ASSOCRSP); + else + issue_asocrsp(padapter, status, pstat, WIFI_REASSOCRSP); + + //.2 - report to upper layer + DBG_871X("indicate_sta_join_event to upper layer - hostapd\n"); + +#ifdef CONFIG_IOCTL_CFG80211 + #ifdef COMPAT_KERNEL_RELEASE + rtw_cfg80211_indicate_sta_assoc(padapter, pframe, pkt_len); + #elif (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,37)) && !defined(CONFIG_CFG80211_FORCE_COMPATIBLE_2_6_37_UNDER) + rtw_cfg80211_indicate_sta_assoc(padapter, pframe, pkt_len); + #else //(LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,37)) && !defined(CONFIG_CFG80211_FORCE_COMPATIBLE_2_6_37_UNDER) + _enter_critical_bh(&pstat->lock, &irqL); + if(pstat->passoc_req) + { + rtw_mfree(pstat->passoc_req, pstat->assoc_req_len); + pstat->passoc_req = NULL; + pstat->assoc_req_len = 0; + } + + pstat->passoc_req = rtw_zmalloc(pkt_len); + if(pstat->passoc_req) + { + _rtw_memcpy(pstat->passoc_req, pframe, pkt_len); + pstat->assoc_req_len = pkt_len; + } + _exit_critical_bh(&pstat->lock, &irqL); + #endif //(LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,37)) && !defined(CONFIG_CFG80211_FORCE_COMPATIBLE_2_6_37_UNDER) +#else + rtw_indicate_sta_assoc_event(padapter, pstat); +#endif //CONFIG_IOCTL_CFG80211 + + //.3-(1) report sta add event + report_add_sta_event(padapter, pstat->hwaddr, pstat->aid); + +/* + //issue assoc rsp before notify station join event. + if (frame_type == WIFI_ASSOCREQ) + issue_asocrsp(padapter, status, pstat, WIFI_ASSOCRSP); + else + issue_asocrsp(padapter, status, pstat, WIFI_REASSOCRSP); +*/ + +#endif + } + + return _SUCCESS; + +asoc_class2_error: + +#ifdef CONFIG_NATIVEAP_MLME + issue_deauth(padapter, (void *)GetAddr2Ptr(pframe), status); +#endif + + return _FAIL; + +OnAssocReqFail: + + +#ifdef CONFIG_NATIVEAP_MLME + pstat->aid = 0; + if (frame_type == WIFI_ASSOCREQ) + issue_asocrsp(padapter, status, pstat, WIFI_ASSOCRSP); + else + issue_asocrsp(padapter, status, pstat, WIFI_REASSOCRSP); +#endif + + +#endif /* CONFIG_AP_MODE */ + + return _FAIL; + +} + +unsigned int OnAssocRsp(_adapter *padapter, union recv_frame *precv_frame) +{ + uint i; + int res; + unsigned short status; + PNDIS_802_11_VARIABLE_IEs pIE; + struct mlme_priv *pmlmepriv = &padapter->mlmepriv; + struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; + struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info); + //WLAN_BSSID_EX *cur_network = &(pmlmeinfo->network); + u8 *pframe = precv_frame->u.hdr.rx_data; + uint pkt_len = precv_frame->u.hdr.len; + + DBG_871X("%s\n", __FUNCTION__); + + //check A1 matches or not + if (!_rtw_memcmp(myid(&(padapter->eeprompriv)), get_da(pframe), ETH_ALEN)) + return _SUCCESS; + + if (!(pmlmeinfo->state & (WIFI_FW_AUTH_SUCCESS | WIFI_FW_ASSOC_STATE))) + return _SUCCESS; + + if (pmlmeinfo->state & WIFI_FW_ASSOC_SUCCESS) + return _SUCCESS; + + _cancel_timer_ex(&pmlmeext->link_timer); + + //status + if ((status = le16_to_cpu(*(unsigned short *)(pframe + WLAN_HDR_A3_LEN + 2))) > 0) + { + DBG_871X("assoc reject, status code: %d\n", status); + pmlmeinfo->state = WIFI_FW_NULL_STATE; + res = -4; + goto report_assoc_result; + } + + //get capabilities + pmlmeinfo->capability = le16_to_cpu(*(unsigned short *)(pframe + WLAN_HDR_A3_LEN)); + + //set slot time + pmlmeinfo->slotTime = (pmlmeinfo->capability & BIT(10))? 9: 20; + + //AID + res = pmlmeinfo->aid = (int)(le16_to_cpu(*(unsigned short *)(pframe + WLAN_HDR_A3_LEN + 4))&0x3fff); + + //following are moved to join event callback function + //to handle HT, WMM, rate adaptive, update MAC reg + //for not to handle the synchronous IO in the tasklet + for (i = (6 + WLAN_HDR_A3_LEN); i < pkt_len;) + { + pIE = (PNDIS_802_11_VARIABLE_IEs)(pframe + i); + + switch (pIE->ElementID) + { + case _VENDOR_SPECIFIC_IE_: + if (_rtw_memcmp(pIE->data, WMM_PARA_OUI, 6)) //WMM + { + WMM_param_handler(padapter, pIE); + } +#if defined(CONFIG_P2P) && defined(CONFIG_WFD) + else if ( _rtw_memcmp(pIE->data, WFD_OUI, 4)) //WFD + { + DBG_871X( "[%s] Found WFD IE\n", __FUNCTION__ ); + WFD_info_handler( padapter, pIE ); + } +#endif + break; + + case _HT_CAPABILITY_IE_: //HT caps + HT_caps_handler(padapter, pIE); + break; + + case _HT_EXTRA_INFO_IE_: //HT info + HT_info_handler(padapter, pIE); + break; + + case _ERPINFO_IE_: + ERP_IE_handler(padapter, pIE); + + default: + break; + } + + i += (pIE->Length + 2); + } + + pmlmeinfo->state &= (~WIFI_FW_ASSOC_STATE); + pmlmeinfo->state |= WIFI_FW_ASSOC_SUCCESS; + + //Update Basic Rate Table for spec, 2010-12-28 , by thomas + UpdateBrateTbl(padapter, pmlmeinfo->network.SupportedRates); + +#ifdef CONFIG_IOCTL_CFG80211 + if (!rtw_cfg80211_check_bss(padapter)) { + DBG_871X("rtw_cfg80211_check_bss() : BSS not found !!\n"); + res = -2; + goto report_assoc_result; + } +#endif + +report_assoc_result: + if (res > 0) { + rtw_buf_update(&pmlmepriv->assoc_rsp, &pmlmepriv->assoc_rsp_len, pframe, pkt_len); + } else { + rtw_buf_free(&pmlmepriv->assoc_rsp, &pmlmepriv->assoc_rsp_len); + } + + report_join_res(padapter, res); + return _SUCCESS; +} + +unsigned int OnDeAuth(_adapter *padapter, union recv_frame *precv_frame) +{ + unsigned short reason; + struct mlme_priv *pmlmepriv = &padapter->mlmepriv; + struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; + struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info); + u8 *pframe = precv_frame->u.hdr.rx_data; +#ifdef CONFIG_P2P + struct wifidirect_info *pwdinfo= &(padapter->wdinfo); +#endif //CONFIG_P2P + + //check A3 + if (!(_rtw_memcmp(GetAddr3Ptr(pframe), get_my_bssid(&pmlmeinfo->network), ETH_ALEN))) + return _SUCCESS; + +#ifdef CONFIG_P2P + if ( pwdinfo->rx_invitereq_info.scan_op_ch_only ) + { + _cancel_timer_ex( &pwdinfo->reset_ch_sitesurvey ); + _set_timer( &pwdinfo->reset_ch_sitesurvey, 10 ); + } +#endif //CONFIG_P2P + + reason = le16_to_cpu(*(unsigned short *)(pframe + WLAN_HDR_A3_LEN)); + + DBG_871X("%s Reason code(%d)\n", __FUNCTION__,reason); + +#ifdef CONFIG_AP_MODE + if(check_fwstate(pmlmepriv, WIFI_AP_STATE) == _TRUE) + { + _irqL irqL; + struct sta_info *psta; + struct sta_priv *pstapriv = &padapter->stapriv; + + //_enter_critical_bh(&(pstapriv->sta_hash_lock), &irqL); + //rtw_free_stainfo(padapter, psta); + //_exit_critical_bh(&(pstapriv->sta_hash_lock), &irqL); + + DBG_871X("%s, STA:" MAC_FMT "\n", __FUNCTION__, MAC_ARG(GetAddr2Ptr(pframe))); + + psta = rtw_get_stainfo(pstapriv, GetAddr2Ptr(pframe)); + if(psta) + { + u8 updated; + + _enter_critical_bh(&pstapriv->asoc_list_lock, &irqL); + if(rtw_is_list_empty(&psta->asoc_list)==_FALSE) + { + rtw_list_delete(&psta->asoc_list); + pstapriv->asoc_list_cnt--; + updated = ap_free_sta(padapter, psta, _FALSE, reason); + + } + _exit_critical_bh(&pstapriv->asoc_list_lock, &irqL); + + associated_clients_update(padapter, updated); + } + + + return _SUCCESS; + } + else +#endif + { + int ignore_received_deauth = 0; + + // Commented by Albert 20130604 + // Before sending the auth frame to start the STA/GC mode connection with AP/GO, + // we will send the deauth first. + // However, the Win8.1 with BRCM Wi-Fi will send the deauth with reason code 6 to us after receieving our deauth. + // Added the following code to avoid this case. + if ( ( pmlmeinfo->state & WIFI_FW_AUTH_STATE ) || + ( pmlmeinfo->state & WIFI_FW_ASSOC_STATE ) ) + { + if ( reason == WLAN_REASON_CLASS2_FRAME_FROM_NONAUTH_STA ) + { + ignore_received_deauth = 1; + } else if (WLAN_REASON_PREV_AUTH_NOT_VALID == reason) { + // TODO: 802.11r + ignore_received_deauth = 1; + } + } + + DBG_871X("%s, STA:" MAC_FMT ", ignore = %d\n", __FUNCTION__, MAC_ARG(GetAddr3Ptr(pframe)), ignore_received_deauth); + if ( 0 == ignore_received_deauth ) + { + receive_disconnect(padapter, GetAddr3Ptr(pframe) ,reason); + } + } + pmlmepriv->LinkDetectInfo.bBusyTraffic = _FALSE; + return _SUCCESS; + +} + +unsigned int OnDisassoc(_adapter *padapter, union recv_frame *precv_frame) +{ + unsigned short reason; + struct mlme_priv *pmlmepriv = &padapter->mlmepriv; + struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; + struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info); + u8 *pframe = precv_frame->u.hdr.rx_data; +#ifdef CONFIG_P2P + struct wifidirect_info *pwdinfo= &(padapter->wdinfo); +#endif //CONFIG_P2P + + //check A3 + if (!(_rtw_memcmp(GetAddr3Ptr(pframe), get_my_bssid(&pmlmeinfo->network), ETH_ALEN))) + return _SUCCESS; + +#ifdef CONFIG_P2P + if ( pwdinfo->rx_invitereq_info.scan_op_ch_only ) + { + _cancel_timer_ex( &pwdinfo->reset_ch_sitesurvey ); + _set_timer( &pwdinfo->reset_ch_sitesurvey, 10 ); + } +#endif //CONFIG_P2P + + reason = le16_to_cpu(*(unsigned short *)(pframe + WLAN_HDR_A3_LEN)); + + DBG_871X("%s Reason code(%d)\n", __FUNCTION__,reason); + +#ifdef CONFIG_AP_MODE + if(check_fwstate(pmlmepriv, WIFI_AP_STATE) == _TRUE) + { + _irqL irqL; + struct sta_info *psta; + struct sta_priv *pstapriv = &padapter->stapriv; + + //_enter_critical_bh(&(pstapriv->sta_hash_lock), &irqL); + //rtw_free_stainfo(padapter, psta); + //_exit_critical_bh(&(pstapriv->sta_hash_lock), &irqL); + + DBG_871X("%s, STA:" MAC_FMT "\n", __FUNCTION__, MAC_ARG(GetAddr2Ptr(pframe))); + + psta = rtw_get_stainfo(pstapriv, GetAddr2Ptr(pframe)); + if(psta) + { + u8 updated; + + _enter_critical_bh(&pstapriv->asoc_list_lock, &irqL); + if(rtw_is_list_empty(&psta->asoc_list)==_FALSE) + { + rtw_list_delete(&psta->asoc_list); + pstapriv->asoc_list_cnt--; + updated = ap_free_sta(padapter, psta, _FALSE, reason); + + } + _exit_critical_bh(&pstapriv->asoc_list_lock, &irqL); + + associated_clients_update(padapter, updated); + } + + return _SUCCESS; + } + else +#endif + { + DBG_871X("%s, STA:" MAC_FMT "\n", __FUNCTION__, MAC_ARG(GetAddr3Ptr(pframe))); + + receive_disconnect(padapter, GetAddr3Ptr(pframe), reason); + } + pmlmepriv->LinkDetectInfo.bBusyTraffic = _FALSE; + return _SUCCESS; + +} + +unsigned int OnAtim(_adapter *padapter, union recv_frame *precv_frame) +{ + DBG_871X("%s\n", __FUNCTION__); + return _SUCCESS; +} + +unsigned int on_action_spct_ch_switch(_adapter *padapter, struct sta_info *psta, u8 *ies, uint ies_len) +{ + unsigned int ret = _FAIL; + struct mlme_ext_priv *mlmeext = &padapter->mlmeextpriv; + struct mlme_ext_info *pmlmeinfo = &(mlmeext->mlmext_info); + + if (!(pmlmeinfo->state & WIFI_FW_ASSOC_SUCCESS)) { + ret = _SUCCESS; + goto exit; + } + + if ((pmlmeinfo->state & 0x03) == WIFI_FW_STATION_STATE) { + + int ch_switch_mode = -1, ch = -1, ch_switch_cnt = -1; + int ch_offset = -1; + u8 bwmode; + struct ieee80211_info_element *ie; + + DBG_871X(FUNC_NDEV_FMT" from "MAC_FMT"\n", + FUNC_NDEV_ARG(padapter->pnetdev), MAC_ARG(psta->hwaddr)); + + for_each_ie(ie, ies, ies_len) { + if (ie->id == WLAN_EID_CHANNEL_SWITCH) { + ch_switch_mode = ie->data[0]; + ch = ie->data[1]; + ch_switch_cnt = ie->data[2]; + DBG_871X("ch_switch_mode:%d, ch:%d, ch_switch_cnt:%d\n", + ch_switch_mode, ch, ch_switch_cnt); + } + else if (ie->id == WLAN_EID_SECONDARY_CHANNEL_OFFSET) { + ch_offset = secondary_ch_offset_to_hal_ch_offset(ie->data[0]); + DBG_871X("ch_offset:%d\n", ch_offset); + } + } + + if (ch == -1) + return _SUCCESS; + + if (ch_offset == -1) + bwmode = mlmeext->cur_bwmode; + else + bwmode = (ch_offset == HAL_PRIME_CHNL_OFFSET_DONT_CARE) ? + HT_CHANNEL_WIDTH_20 : HT_CHANNEL_WIDTH_40; + + ch_offset = (ch_offset == -1) ? mlmeext->cur_ch_offset : ch_offset; + + /* todo: + * 1. the decision of channel switching + * 2. things after channel switching + */ + + ret = rtw_set_ch_cmd(padapter, ch, bwmode, ch_offset, _TRUE); + } + +exit: + return ret; +} + +unsigned int on_action_spct(_adapter *padapter, union recv_frame *precv_frame) +{ + unsigned int ret = _FAIL; + struct sta_info *psta = NULL; + struct sta_priv *pstapriv = &padapter->stapriv; + u8 *pframe = precv_frame->u.hdr.rx_data; + uint frame_len = precv_frame->u.hdr.len; + u8 *frame_body = (u8 *)(pframe + sizeof(struct rtw_ieee80211_hdr_3addr)); + u8 category; + u8 action; + + DBG_871X(FUNC_NDEV_FMT"\n", FUNC_NDEV_ARG(padapter->pnetdev)); + + psta = rtw_get_stainfo(pstapriv, GetAddr2Ptr(pframe)); + + if (!psta) + goto exit; + + category = frame_body[0]; + if(category != RTW_WLAN_CATEGORY_SPECTRUM_MGMT) + goto exit; + + action = frame_body[1]; + switch (action) { + case RTW_WLAN_ACTION_SPCT_MSR_REQ: + case RTW_WLAN_ACTION_SPCT_MSR_RPRT: + case RTW_WLAN_ACTION_SPCT_TPC_REQ: + case RTW_WLAN_ACTION_SPCT_TPC_RPRT: + break; + case RTW_WLAN_ACTION_SPCT_CHL_SWITCH: + #ifdef CONFIG_SPCT_CH_SWITCH + ret = on_action_spct_ch_switch(padapter, psta, &frame_body[2], + frame_len-(frame_body-pframe)-2); + #endif + break; + default: + break; + } + +exit: + return ret; +} + +unsigned int OnAction_qos(_adapter *padapter, union recv_frame *precv_frame) +{ + return _SUCCESS; +} + +unsigned int OnAction_dls(_adapter *padapter, union recv_frame *precv_frame) +{ + return _SUCCESS; +} + +unsigned int OnAction_back(_adapter *padapter, union recv_frame *precv_frame) +{ + u8 *addr; + struct sta_info *psta=NULL; + struct recv_reorder_ctrl *preorder_ctrl; + unsigned char *frame_body; + unsigned char category, action; + unsigned short tid, status, reason_code = 0; + struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; + struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info); + u8 *pframe = precv_frame->u.hdr.rx_data; + struct sta_priv *pstapriv = &padapter->stapriv; + + //check RA matches or not + if (!_rtw_memcmp(myid(&(padapter->eeprompriv)), GetAddr1Ptr(pframe), ETH_ALEN))//for if1, sta/ap mode + return _SUCCESS; + +/* + //check A1 matches or not + if (!_rtw_memcmp(myid(&(padapter->eeprompriv)), get_da(pframe), ETH_ALEN)) + return _SUCCESS; +*/ + DBG_871X("%s\n", __FUNCTION__); + + if((pmlmeinfo->state&0x03) != WIFI_FW_AP_STATE) + if (!(pmlmeinfo->state & WIFI_FW_ASSOC_SUCCESS)) + return _SUCCESS; + + addr = GetAddr2Ptr(pframe); + psta = rtw_get_stainfo(pstapriv, addr); + + if(psta==NULL) + return _SUCCESS; + + frame_body = (unsigned char *)(pframe + sizeof(struct rtw_ieee80211_hdr_3addr)); + + category = frame_body[0]; + if (category == RTW_WLAN_CATEGORY_BACK)// representing Block Ack + { +#ifdef CONFIG_TDLS + if((psta->tdls_sta_state & TDLS_LINKED_STATE) && + (psta->htpriv.ht_option==_TRUE) && + (psta->htpriv.ampdu_enable==_TRUE) ) + { + //do nothing; just don't want to return _SUCCESS; + } + else +#endif //CONFIG_TDLS + if (!pmlmeinfo->HT_enable) + { + return _SUCCESS; + } + + action = frame_body[1]; + DBG_871X("%s, action=%d\n", __FUNCTION__, action); + switch (action) + { + case RTW_WLAN_ACTION_ADDBA_REQ: //ADDBA request + + _rtw_memcpy(&(pmlmeinfo->ADDBA_req), &(frame_body[2]), sizeof(struct ADDBA_request)); + //process_addba_req(padapter, (u8*)&(pmlmeinfo->ADDBA_req), GetAddr3Ptr(pframe)); + process_addba_req(padapter, (u8*)&(pmlmeinfo->ADDBA_req), addr); + + if(pmlmeinfo->bAcceptAddbaReq == _TRUE) + { + issue_action_BA(padapter, addr, RTW_WLAN_ACTION_ADDBA_RESP, 0); + } + else + { + issue_action_BA(padapter, addr, RTW_WLAN_ACTION_ADDBA_RESP, 37);//reject ADDBA Req + } + + break; + + case RTW_WLAN_ACTION_ADDBA_RESP: //ADDBA response + + //status = frame_body[3] | (frame_body[4] << 8); //endian issue + status = RTW_GET_LE16(&frame_body[3]); + tid = ((frame_body[5] >> 2) & 0x7); + + if (status == 0) + { //successful + DBG_871X("agg_enable for TID=%d\n", tid); + psta->htpriv.agg_enable_bitmap |= 1 << tid; + psta->htpriv.candidate_tid_bitmap &= ~BIT(tid); + } + else + { + psta->htpriv.agg_enable_bitmap &= ~BIT(tid); + } + + //DBG_871X("marc: ADDBA RSP: %x\n", pmlmeinfo->agg_enable_bitmap); + break; + + case RTW_WLAN_ACTION_DELBA: //DELBA + if ((frame_body[3] & BIT(3)) == 0) + { + psta->htpriv.agg_enable_bitmap &= ~(1 << ((frame_body[3] >> 4) & 0xf)); + psta->htpriv.candidate_tid_bitmap &= ~(1 << ((frame_body[3] >> 4) & 0xf)); + + //reason_code = frame_body[4] | (frame_body[5] << 8); + reason_code = RTW_GET_LE16(&frame_body[4]); + } + else if((frame_body[3] & BIT(3)) == BIT(3)) + { + tid = (frame_body[3] >> 4) & 0x0F; + + preorder_ctrl = &psta->recvreorder_ctrl[tid]; + preorder_ctrl->enable = _FALSE; + preorder_ctrl->indicate_seq = 0xffff; + #ifdef DBG_RX_SEQ + DBG_871X("DBG_RX_SEQ %s:%d indicate_seq:%u \n", __FUNCTION__, __LINE__, + preorder_ctrl->indicate_seq); + #endif + } + + DBG_871X("%s(): DELBA: %x(%x)\n", __FUNCTION__,pmlmeinfo->agg_enable_bitmap, reason_code); + //todo: how to notify the host while receiving DELETE BA + break; + + default: + break; + } + } + + return _SUCCESS; +} + +#ifdef CONFIG_P2P + +static int get_reg_classes_full_count(struct p2p_channels channel_list) { + int cnt = 0; + int i; + + for (i = 0; i < channel_list.reg_classes; i++) { + cnt += channel_list.reg_class[i].channels; + } + + return cnt; +} + +static void get_channel_cnt_24g_5gl_5gh( struct mlme_ext_priv *pmlmeext, u8* p24g_cnt, u8* p5gl_cnt, u8* p5gh_cnt ) +{ + int i = 0; + + *p24g_cnt = 0; + *p5gl_cnt = 0; + *p5gh_cnt = 0; + + for( i = 0; i < pmlmeext->max_chan_nums; i++ ) + { + if ( pmlmeext->channel_set[ i ].ChannelNum <= 14 ) + { + (*p24g_cnt)++; + } + else if ( ( pmlmeext->channel_set[ i ].ChannelNum > 14 ) && ( pmlmeext->channel_set[ i ].ChannelNum <= 48 ) ) + { + // Just include the channel 36, 40, 44, 48 channels for 5G low + (*p5gl_cnt)++; + } + else if ( ( pmlmeext->channel_set[ i ].ChannelNum >= 149 ) && ( pmlmeext->channel_set[ i ].ChannelNum <= 161 ) ) + { + // Just include the channel 149, 153, 157, 161 channels for 5G high + (*p5gh_cnt)++; + } + } +} + +void issue_p2p_GO_request(_adapter *padapter, u8* raddr) +{ + + unsigned char category = RTW_WLAN_CATEGORY_PUBLIC; + u8 action = P2P_PUB_ACTION_ACTION; + u32 p2poui = cpu_to_be32(P2POUI); + u8 oui_subtype = P2P_GO_NEGO_REQ; + u8 wpsie[ 255 ] = { 0x00 }, p2pie[ 255 ] = { 0x00 }; + u8 wpsielen = 0, p2pielen = 0, i; + u8 channel_cnt_24g = 0, channel_cnt_5gl = 0, channel_cnt_5gh = 0; + u16 len_channellist_attr = 0; +#ifdef CONFIG_WFD + u32 wfdielen = 0; +#endif //CONFIG_WFD + + struct xmit_frame *pmgntframe; + struct pkt_attrib *pattrib; + unsigned char *pframe; + struct rtw_ieee80211_hdr *pwlanhdr; + unsigned short *fctrl; + struct xmit_priv *pxmitpriv = &(padapter->xmitpriv); + struct mlme_ext_priv *pmlmeext = &(padapter->mlmeextpriv); + struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info); + struct wifidirect_info *pwdinfo = &( padapter->wdinfo); + + + if ((pmgntframe = alloc_mgtxmitframe(pxmitpriv)) == NULL) + { + return; + } + + DBG_871X( "[%s] In\n", __FUNCTION__ ); + //update attribute + pattrib = &pmgntframe->attrib; + update_mgntframe_attrib(padapter, pattrib); + + _rtw_memset(pmgntframe->buf_addr, 0, WLANHDR_OFFSET + TXDESC_OFFSET); + + pframe = (u8 *)(pmgntframe->buf_addr) + TXDESC_OFFSET; + pwlanhdr = (struct rtw_ieee80211_hdr *)pframe; + + fctrl = &(pwlanhdr->frame_ctl); + *(fctrl) = 0; + + _rtw_memcpy(pwlanhdr->addr1, raddr, ETH_ALEN); + _rtw_memcpy(pwlanhdr->addr2, myid(&(padapter->eeprompriv)), ETH_ALEN); + _rtw_memcpy(pwlanhdr->addr3, myid(&(padapter->eeprompriv)), ETH_ALEN); + + SetSeqNum(pwlanhdr, pmlmeext->mgnt_seq); + pmlmeext->mgnt_seq++; + SetFrameSubType(pframe, WIFI_ACTION); + + pframe += sizeof(struct rtw_ieee80211_hdr_3addr); + pattrib->pktlen = sizeof(struct rtw_ieee80211_hdr_3addr); + + pframe = rtw_set_fixed_ie(pframe, 1, &(category), &(pattrib->pktlen)); + pframe = rtw_set_fixed_ie(pframe, 1, &(action), &(pattrib->pktlen)); + pframe = rtw_set_fixed_ie(pframe, 4, (unsigned char *) &(p2poui), &(pattrib->pktlen)); + pframe = rtw_set_fixed_ie(pframe, 1, &(oui_subtype), &(pattrib->pktlen)); + pwdinfo->negotiation_dialog_token = 1; // Initialize the dialog value + pframe = rtw_set_fixed_ie(pframe, 1, &pwdinfo->negotiation_dialog_token, &(pattrib->pktlen)); + + + + // WPS Section + wpsielen = 0; + // WPS OUI + *(u32*) ( wpsie ) = cpu_to_be32( WPSOUI ); + wpsielen += 4; + + // WPS version + // Type: + *(u16*) ( wpsie + wpsielen ) = cpu_to_be16( WPS_ATTR_VER1 ); + wpsielen += 2; + + // Length: + *(u16*) ( wpsie + wpsielen ) = cpu_to_be16( 0x0001 ); + wpsielen += 2; + + // Value: + wpsie[wpsielen++] = WPS_VERSION_1; // Version 1.0 + + // Device Password ID + // Type: + *(u16*) ( wpsie + wpsielen ) = cpu_to_be16( WPS_ATTR_DEVICE_PWID ); + wpsielen += 2; + + // Length: + *(u16*) ( wpsie + wpsielen ) = cpu_to_be16( 0x0002 ); + wpsielen += 2; + + // Value: + + if ( pwdinfo->ui_got_wps_info == P2P_GOT_WPSINFO_PEER_DISPLAY_PIN ) + { + *(u16*) ( wpsie + wpsielen ) = cpu_to_be16( WPS_DPID_USER_SPEC ); + } + else if ( pwdinfo->ui_got_wps_info == P2P_GOT_WPSINFO_SELF_DISPLAY_PIN ) + { + *(u16*) ( wpsie + wpsielen ) = cpu_to_be16( WPS_DPID_REGISTRAR_SPEC ); + } + else if ( pwdinfo->ui_got_wps_info == P2P_GOT_WPSINFO_PBC ) + { + *(u16*) ( wpsie + wpsielen ) = cpu_to_be16( WPS_DPID_PBC ); + } + + wpsielen += 2; + + pframe = rtw_set_ie(pframe, _VENDOR_SPECIFIC_IE_, wpsielen, (unsigned char *) wpsie, &pattrib->pktlen ); + + + // P2P IE Section. + + // P2P OUI + p2pielen = 0; + p2pie[ p2pielen++ ] = 0x50; + p2pie[ p2pielen++ ] = 0x6F; + p2pie[ p2pielen++ ] = 0x9A; + p2pie[ p2pielen++ ] = 0x09; // WFA P2P v1.0 + + // Commented by Albert 20110306 + // According to the P2P Specification, the group negoitation request frame should contain 9 P2P attributes + // 1. P2P Capability + // 2. Group Owner Intent + // 3. Configuration Timeout + // 4. Listen Channel + // 5. Extended Listen Timing + // 6. Intended P2P Interface Address + // 7. Channel List + // 8. P2P Device Info + // 9. Operating Channel + + + // P2P Capability + // Type: + p2pie[ p2pielen++ ] = P2P_ATTR_CAPABILITY; + + // Length: + *(u16*) ( p2pie + p2pielen ) = cpu_to_le16( 0x0002 ); + p2pielen += 2; + + // Value: + // Device Capability Bitmap, 1 byte + p2pie[ p2pielen++ ] = DMP_P2P_DEVCAP_SUPPORT; + + // Group Capability Bitmap, 1 byte + if ( pwdinfo->persistent_supported ) + { + p2pie[ p2pielen++ ] = P2P_GRPCAP_CROSS_CONN | P2P_GRPCAP_PERSISTENT_GROUP; + } + else + { + p2pie[ p2pielen++ ] = P2P_GRPCAP_CROSS_CONN; + } + + + // Group Owner Intent + // Type: + p2pie[ p2pielen++ ] = P2P_ATTR_GO_INTENT; + + // Length: + *(u16*) ( p2pie + p2pielen ) = cpu_to_le16( 0x0001 ); + p2pielen += 2; + + // Value: + // Todo the tie breaker bit. + p2pie[ p2pielen++ ] = ( ( pwdinfo->intent << 1 ) | BIT(0) ); + + // Configuration Timeout + // Type: + p2pie[ p2pielen++ ] = P2P_ATTR_CONF_TIMEOUT; + + // Length: + *(u16*) ( p2pie + p2pielen ) = cpu_to_le16( 0x0002 ); + p2pielen += 2; + + // Value: + p2pie[ p2pielen++ ] = 200; // 2 seconds needed to be the P2P GO + p2pie[ p2pielen++ ] = 200; // 2 seconds needed to be the P2P Client + + + // Listen Channel + // Type: + p2pie[ p2pielen++ ] = P2P_ATTR_LISTEN_CH; + + // Length: + *(u16*) ( p2pie + p2pielen ) = cpu_to_le16( 0x0005 ); + p2pielen += 2; + + // Value: + // Country String + p2pie[ p2pielen++ ] = 'X'; + p2pie[ p2pielen++ ] = 'X'; + + // The third byte should be set to 0x04. + // Described in the "Operating Channel Attribute" section. + p2pie[ p2pielen++ ] = 0x04; + + // Operating Class + p2pie[ p2pielen++ ] = 0x51; // Copy from SD7 + + // Channel Number + p2pie[ p2pielen++ ] = pwdinfo->listen_channel; // listening channel number + + + // Extended Listen Timing ATTR + // Type: + p2pie[ p2pielen++ ] = P2P_ATTR_EX_LISTEN_TIMING; + + // Length: + *(u16*) ( p2pie + p2pielen ) = cpu_to_le16( 0x0004 ); + p2pielen += 2; + + // Value: + // Availability Period + *(u16*) ( p2pie + p2pielen ) = cpu_to_le16( 0xFFFF ); + p2pielen += 2; + + // Availability Interval + *(u16*) ( p2pie + p2pielen ) = cpu_to_le16( 0xFFFF ); + p2pielen += 2; + + + // Intended P2P Interface Address + // Type: + p2pie[ p2pielen++ ] = P2P_ATTR_INTENTED_IF_ADDR; + + // Length: + *(u16*) ( p2pie + p2pielen ) = cpu_to_le16( ETH_ALEN ); + p2pielen += 2; + + // Value: + _rtw_memcpy( p2pie + p2pielen, myid( &padapter->eeprompriv ), ETH_ALEN ); + p2pielen += ETH_ALEN; + + + // Channel List + // Type: + p2pie[ p2pielen++ ] = P2P_ATTR_CH_LIST; + + // Length: + // Country String(3) + // + ( Operating Class (1) + Number of Channels(1) ) * Operation Classes (?) + // + number of channels in all classes + len_channellist_attr = 3 + + (1 + 1) * (u16)(pmlmeext->channel_list.reg_classes) + + get_reg_classes_full_count(pmlmeext->channel_list); + +#ifdef CONFIG_CONCURRENT_MODE + if ( check_buddy_fwstate(padapter, _FW_LINKED ) ) + { + *(u16*) ( p2pie + p2pielen ) = cpu_to_le16( 5 + 1 ); + } + else + { + *(u16*) ( p2pie + p2pielen ) = cpu_to_le16( len_channellist_attr ); + } +#else + + *(u16*) ( p2pie + p2pielen ) = cpu_to_le16( len_channellist_attr ); + +#endif + p2pielen += 2; + + // Value: + // Country String + p2pie[ p2pielen++ ] = 'X'; + p2pie[ p2pielen++ ] = 'X'; + + // The third byte should be set to 0x04. + // Described in the "Operating Channel Attribute" section. + p2pie[ p2pielen++ ] = 0x04; + + // Channel Entry List + +#ifdef CONFIG_CONCURRENT_MODE + if ( check_buddy_fwstate(padapter, _FW_LINKED ) ) + { + _adapter *pbuddy_adapter = padapter->pbuddy_adapter; + struct mlme_ext_priv *pbuddy_mlmeext = &pbuddy_adapter->mlmeextpriv; + + // Operating Class + if ( pbuddy_mlmeext->cur_channel > 14 ) + { + if ( pbuddy_mlmeext->cur_channel >= 149 ) + { + p2pie[ p2pielen++ ] = 0x7c; + } + else + { + p2pie[ p2pielen++ ] = 0x73; + } + } + else + { + p2pie[ p2pielen++ ] = 0x51; + } + + // Number of Channels + // Just support 1 channel and this channel is AP's channel + p2pie[ p2pielen++ ] = 1; + + // Channel List + p2pie[ p2pielen++ ] = pbuddy_mlmeext->cur_channel; + } + else + { + int i,j; + for (j = 0; j < pmlmeext->channel_list.reg_classes; j++) { + // Operating Class + p2pie[p2pielen++] = pmlmeext->channel_list.reg_class[j].reg_class; + + // Number of Channels + p2pie[p2pielen++] = pmlmeext->channel_list.reg_class[j].channels; + + // Channel List + for (i = 0; i < pmlmeext->channel_list.reg_class[j].channels; i++) { + p2pie[p2pielen++] = pmlmeext->channel_list.reg_class[j].channel[i]; + } + } + } +#else // CONFIG_CONCURRENT_MODE + { + int i,j; + for (j = 0; j < pmlmeext->channel_list.reg_classes; j++) { + // Operating Class + p2pie[p2pielen++] = pmlmeext->channel_list.reg_class[j].reg_class; + + // Number of Channels + p2pie[p2pielen++] = pmlmeext->channel_list.reg_class[j].channels; + + // Channel List + for (i = 0; i < pmlmeext->channel_list.reg_class[j].channels; i++) { + p2pie[p2pielen++] = pmlmeext->channel_list.reg_class[j].channel[i]; + } + } + } +#endif // CONFIG_CONCURRENT_MODE + + // Device Info + // Type: + p2pie[ p2pielen++ ] = P2P_ATTR_DEVICE_INFO; + + // Length: + // 21 -> P2P Device Address (6bytes) + Config Methods (2bytes) + Primary Device Type (8bytes) + // + NumofSecondDevType (1byte) + WPS Device Name ID field (2bytes) + WPS Device Name Len field (2bytes) + *(u16*) ( p2pie + p2pielen ) = cpu_to_le16( 21 + pwdinfo->device_name_len ); + p2pielen += 2; + + // Value: + // P2P Device Address + _rtw_memcpy( p2pie + p2pielen, myid( &padapter->eeprompriv ), ETH_ALEN ); + p2pielen += ETH_ALEN; + + // Config Method + // This field should be big endian. Noted by P2P specification. + + *(u16*) ( p2pie + p2pielen ) = cpu_to_be16( pwdinfo->supported_wps_cm ); + + p2pielen += 2; + + // Primary Device Type + // Category ID + *(u16*) ( p2pie + p2pielen ) = cpu_to_be16( WPS_PDT_CID_MULIT_MEDIA ); + p2pielen += 2; + + // OUI + *(u32*) ( p2pie + p2pielen ) = cpu_to_be32( WPSOUI ); + p2pielen += 4; + + // Sub Category ID + *(u16*) ( p2pie + p2pielen ) = cpu_to_be16( WPS_PDT_SCID_MEDIA_SERVER ); + p2pielen += 2; + + // Number of Secondary Device Types + p2pie[ p2pielen++ ] = 0x00; // No Secondary Device Type List + + // Device Name + // Type: + *(u16*) ( p2pie + p2pielen ) = cpu_to_be16( WPS_ATTR_DEVICE_NAME ); + p2pielen += 2; + + // Length: + *(u16*) ( p2pie + p2pielen ) = cpu_to_be16( pwdinfo->device_name_len ); + p2pielen += 2; + + // Value: + _rtw_memcpy( p2pie + p2pielen, pwdinfo->device_name , pwdinfo->device_name_len ); + p2pielen += pwdinfo->device_name_len; + + + // Operating Channel + // Type: + p2pie[ p2pielen++ ] = P2P_ATTR_OPERATING_CH; + + // Length: + *(u16*) ( p2pie + p2pielen ) = cpu_to_le16( 0x0005 ); + p2pielen += 2; + + // Value: + // Country String + p2pie[ p2pielen++ ] = 'X'; + p2pie[ p2pielen++ ] = 'X'; + + // The third byte should be set to 0x04. + // Described in the "Operating Channel Attribute" section. + p2pie[ p2pielen++ ] = 0x04; + + // Operating Class + if ( pwdinfo->operating_channel <= 14 ) + { + // Operating Class + p2pie[ p2pielen++ ] = 0x51; + } + else if ( ( pwdinfo->operating_channel >= 36 ) && ( pwdinfo->operating_channel <= 48 ) ) + { + // Operating Class + p2pie[ p2pielen++ ] = 0x73; + } + else + { + // Operating Class + p2pie[ p2pielen++ ] = 0x7c; + } + + // Channel Number + p2pie[ p2pielen++ ] = pwdinfo->operating_channel; // operating channel number + + pframe = rtw_set_ie(pframe, _VENDOR_SPECIFIC_IE_, p2pielen, (unsigned char *) p2pie, &pattrib->pktlen ); + +#ifdef CONFIG_WFD + wfdielen = build_nego_req_wfd_ie(pwdinfo, pframe); + pframe += wfdielen; + pattrib->pktlen += wfdielen; +#endif //CONFIG_WFD + + pattrib->last_txcmdsz = pattrib->pktlen; + + dump_mgntframe(padapter, pmgntframe); + + return; + +} + + +void issue_p2p_GO_response(_adapter *padapter, u8* raddr, u8* frame_body,uint len, u8 result) +{ + + unsigned char category = RTW_WLAN_CATEGORY_PUBLIC; + u8 action = P2P_PUB_ACTION_ACTION; + u32 p2poui = cpu_to_be32(P2POUI); + u8 oui_subtype = P2P_GO_NEGO_RESP; + u8 wpsie[ 255 ] = { 0x00 }, p2pie[ 255 ] = { 0x00 }; + u8 p2pielen = 0, i; + uint wpsielen = 0; + u16 wps_devicepassword_id = 0x0000; + uint wps_devicepassword_id_len = 0; + u8 channel_cnt_24g = 0, channel_cnt_5gl = 0, channel_cnt_5gh; + u16 len_channellist_attr = 0; + + struct xmit_frame *pmgntframe; + struct pkt_attrib *pattrib; + unsigned char *pframe; + struct rtw_ieee80211_hdr *pwlanhdr; + unsigned short *fctrl; + struct xmit_priv *pxmitpriv = &(padapter->xmitpriv); + struct mlme_ext_priv *pmlmeext = &(padapter->mlmeextpriv); + struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info); + struct wifidirect_info *pwdinfo = &( padapter->wdinfo); + +#ifdef CONFIG_WFD + u32 wfdielen = 0; +#endif //CONFIG_WFD + + if ((pmgntframe = alloc_mgtxmitframe(pxmitpriv)) == NULL) + { + return; + } + + DBG_871X( "[%s] In, result = %d\n", __FUNCTION__, result ); + //update attribute + pattrib = &pmgntframe->attrib; + update_mgntframe_attrib(padapter, pattrib); + + _rtw_memset(pmgntframe->buf_addr, 0, WLANHDR_OFFSET + TXDESC_OFFSET); + + pframe = (u8 *)(pmgntframe->buf_addr) + TXDESC_OFFSET; + pwlanhdr = (struct rtw_ieee80211_hdr *)pframe; + + fctrl = &(pwlanhdr->frame_ctl); + *(fctrl) = 0; + + _rtw_memcpy(pwlanhdr->addr1, raddr, ETH_ALEN); + _rtw_memcpy(pwlanhdr->addr2, myid(&(padapter->eeprompriv)), ETH_ALEN); + _rtw_memcpy(pwlanhdr->addr3, myid(&(padapter->eeprompriv)), ETH_ALEN); + + SetSeqNum(pwlanhdr, pmlmeext->mgnt_seq); + pmlmeext->mgnt_seq++; + SetFrameSubType(pframe, WIFI_ACTION); + + pframe += sizeof(struct rtw_ieee80211_hdr_3addr); + pattrib->pktlen = sizeof(struct rtw_ieee80211_hdr_3addr); + + pframe = rtw_set_fixed_ie(pframe, 1, &(category), &(pattrib->pktlen)); + pframe = rtw_set_fixed_ie(pframe, 1, &(action), &(pattrib->pktlen)); + pframe = rtw_set_fixed_ie(pframe, 4, (unsigned char *) &(p2poui), &(pattrib->pktlen)); + pframe = rtw_set_fixed_ie(pframe, 1, &(oui_subtype), &(pattrib->pktlen)); + pwdinfo->negotiation_dialog_token = frame_body[7]; // The Dialog Token of provisioning discovery request frame. + pframe = rtw_set_fixed_ie(pframe, 1, &(pwdinfo->negotiation_dialog_token), &(pattrib->pktlen)); + + // Commented by Albert 20110328 + // Try to get the device password ID from the WPS IE of group negotiation request frame + // WiFi Direct test plan 5.1.15 + rtw_get_wps_ie( frame_body + _PUBLIC_ACTION_IE_OFFSET_, len - _PUBLIC_ACTION_IE_OFFSET_, wpsie, &wpsielen); + rtw_get_wps_attr_content( wpsie, wpsielen, WPS_ATTR_DEVICE_PWID, (u8*) &wps_devicepassword_id, &wps_devicepassword_id_len); + wps_devicepassword_id = be16_to_cpu( wps_devicepassword_id ); + + _rtw_memset( wpsie, 0x00, 255 ); + wpsielen = 0; + + // WPS Section + wpsielen = 0; + // WPS OUI + *(u32*) ( wpsie ) = cpu_to_be32( WPSOUI ); + wpsielen += 4; + + // WPS version + // Type: + *(u16*) ( wpsie + wpsielen ) = cpu_to_be16( WPS_ATTR_VER1 ); + wpsielen += 2; + + // Length: + *(u16*) ( wpsie + wpsielen ) = cpu_to_be16( 0x0001 ); + wpsielen += 2; + + // Value: + wpsie[wpsielen++] = WPS_VERSION_1; // Version 1.0 + + // Device Password ID + // Type: + *(u16*) ( wpsie + wpsielen ) = cpu_to_be16( WPS_ATTR_DEVICE_PWID ); + wpsielen += 2; + + // Length: + *(u16*) ( wpsie + wpsielen ) = cpu_to_be16( 0x0002 ); + wpsielen += 2; + + // Value: + if ( wps_devicepassword_id == WPS_DPID_USER_SPEC ) + { + *(u16*) ( wpsie + wpsielen ) = cpu_to_be16( WPS_DPID_REGISTRAR_SPEC ); + } + else if ( wps_devicepassword_id == WPS_DPID_REGISTRAR_SPEC ) + { + *(u16*) ( wpsie + wpsielen ) = cpu_to_be16( WPS_DPID_USER_SPEC ); + } + else + { + *(u16*) ( wpsie + wpsielen ) = cpu_to_be16( WPS_DPID_PBC ); + } + wpsielen += 2; + + // Commented by Kurt 20120113 + // If some device wants to do p2p handshake without sending prov_disc_req + // We have to get peer_req_cm from here. + if(_rtw_memcmp( pwdinfo->rx_prov_disc_info.strconfig_method_desc_of_prov_disc_req, "000", 3) ) + { + if ( wps_devicepassword_id == WPS_DPID_USER_SPEC ) + { + _rtw_memcpy( pwdinfo->rx_prov_disc_info.strconfig_method_desc_of_prov_disc_req, "dis", 3 ); + } + else if ( wps_devicepassword_id == WPS_DPID_REGISTRAR_SPEC ) + { + _rtw_memcpy( pwdinfo->rx_prov_disc_info.strconfig_method_desc_of_prov_disc_req, "pad", 3 ); + } + else + { + _rtw_memcpy( pwdinfo->rx_prov_disc_info.strconfig_method_desc_of_prov_disc_req, "pbc", 3 ); + } + } + + pframe = rtw_set_ie(pframe, _VENDOR_SPECIFIC_IE_, wpsielen, (unsigned char *) wpsie, &pattrib->pktlen ); + + + // P2P IE Section. + + // P2P OUI + p2pielen = 0; + p2pie[ p2pielen++ ] = 0x50; + p2pie[ p2pielen++ ] = 0x6F; + p2pie[ p2pielen++ ] = 0x9A; + p2pie[ p2pielen++ ] = 0x09; // WFA P2P v1.0 + + // Commented by Albert 20100908 + // According to the P2P Specification, the group negoitation response frame should contain 9 P2P attributes + // 1. Status + // 2. P2P Capability + // 3. Group Owner Intent + // 4. Configuration Timeout + // 5. Operating Channel + // 6. Intended P2P Interface Address + // 7. Channel List + // 8. Device Info + // 9. Group ID ( Only GO ) + + + // ToDo: + + // P2P Status + // Type: + p2pie[ p2pielen++ ] = P2P_ATTR_STATUS; + + // Length: + *(u16*) ( p2pie + p2pielen ) = cpu_to_le16( 0x0001 ); + p2pielen += 2; + + // Value: + p2pie[ p2pielen++ ] = result; + + // P2P Capability + // Type: + p2pie[ p2pielen++ ] = P2P_ATTR_CAPABILITY; + + // Length: + *(u16*) ( p2pie + p2pielen ) = cpu_to_le16( 0x0002 ); + p2pielen += 2; + + // Value: + // Device Capability Bitmap, 1 byte + + if ( rtw_p2p_chk_role(pwdinfo, P2P_ROLE_CLIENT) ) + { + // Commented by Albert 2011/03/08 + // According to the P2P specification + // if the sending device will be client, the P2P Capability should be reserved of group negotation response frame + p2pie[ p2pielen++ ] = 0; + } + else + { + // Be group owner or meet the error case + p2pie[ p2pielen++ ] = DMP_P2P_DEVCAP_SUPPORT; + } + + // Group Capability Bitmap, 1 byte + if ( pwdinfo->persistent_supported ) + { + p2pie[ p2pielen++ ] = P2P_GRPCAP_CROSS_CONN | P2P_GRPCAP_PERSISTENT_GROUP; + } + else + { + p2pie[ p2pielen++ ] = P2P_GRPCAP_CROSS_CONN; + } + + // Group Owner Intent + // Type: + p2pie[ p2pielen++ ] = P2P_ATTR_GO_INTENT; + + // Length: + *(u16*) ( p2pie + p2pielen ) = cpu_to_le16( 0x0001 ); + p2pielen += 2; + + // Value: + if ( pwdinfo->peer_intent & 0x01 ) + { + // Peer's tie breaker bit is 1, our tie breaker bit should be 0 + p2pie[ p2pielen++ ] = ( pwdinfo->intent << 1 ); + } + else + { + // Peer's tie breaker bit is 0, our tie breaker bit should be 1 + p2pie[ p2pielen++ ] = ( ( pwdinfo->intent << 1 ) | BIT(0) ); + } + + + // Configuration Timeout + // Type: + p2pie[ p2pielen++ ] = P2P_ATTR_CONF_TIMEOUT; + + // Length: + *(u16*) ( p2pie + p2pielen ) = cpu_to_le16( 0x0002 ); + p2pielen += 2; + + // Value: + p2pie[ p2pielen++ ] = 200; // 2 seconds needed to be the P2P GO + p2pie[ p2pielen++ ] = 200; // 2 seconds needed to be the P2P Client + + // Operating Channel + // Type: + p2pie[ p2pielen++ ] = P2P_ATTR_OPERATING_CH; + + // Length: + *(u16*) ( p2pie + p2pielen ) = cpu_to_le16( 0x0005 ); + p2pielen += 2; + + // Value: + // Country String + p2pie[ p2pielen++ ] = 'X'; + p2pie[ p2pielen++ ] = 'X'; + + // The third byte should be set to 0x04. + // Described in the "Operating Channel Attribute" section. + p2pie[ p2pielen++ ] = 0x04; + + // Operating Class + if ( pwdinfo->operating_channel <= 14 ) + { + // Operating Class + p2pie[ p2pielen++ ] = 0x51; + } + else if ( ( pwdinfo->operating_channel >= 36 ) && ( pwdinfo->operating_channel <= 48 ) ) + { + // Operating Class + p2pie[ p2pielen++ ] = 0x73; + } + else + { + // Operating Class + p2pie[ p2pielen++ ] = 0x7c; + } + + // Channel Number + p2pie[ p2pielen++ ] = pwdinfo->operating_channel; // operating channel number + + // Intended P2P Interface Address + // Type: + p2pie[ p2pielen++ ] = P2P_ATTR_INTENTED_IF_ADDR; + + // Length: + *(u16*) ( p2pie + p2pielen ) = cpu_to_le16( ETH_ALEN ); + p2pielen += 2; + + // Value: + _rtw_memcpy( p2pie + p2pielen, myid( &padapter->eeprompriv ), ETH_ALEN ); + p2pielen += ETH_ALEN; + + // Channel List + // Type: + p2pie[ p2pielen++ ] = P2P_ATTR_CH_LIST; + + // Country String(3) + // + ( Operating Class (1) + Number of Channels(1) ) * Operation Classes (?) + // + number of channels in all classes + len_channellist_attr = 3 + + (1 + 1) * (u16)pmlmeext->channel_list.reg_classes + + get_reg_classes_full_count(pmlmeext->channel_list); + +#ifdef CONFIG_CONCURRENT_MODE + if ( check_buddy_fwstate(padapter, _FW_LINKED ) ) + { + *(u16*) ( p2pie + p2pielen ) = cpu_to_le16( 5 + 1 ); + } + else + { + *(u16*) ( p2pie + p2pielen ) = cpu_to_le16( len_channellist_attr ); + } +#else + + *(u16*) ( p2pie + p2pielen ) = cpu_to_le16( len_channellist_attr ); + + #endif + p2pielen += 2; + + // Value: + // Country String + p2pie[ p2pielen++ ] = 'X'; + p2pie[ p2pielen++ ] = 'X'; + + // The third byte should be set to 0x04. + // Described in the "Operating Channel Attribute" section. + p2pie[ p2pielen++ ] = 0x04; + + // Channel Entry List + +#ifdef CONFIG_CONCURRENT_MODE + if ( check_buddy_fwstate(padapter, _FW_LINKED ) ) + { + _adapter *pbuddy_adapter = padapter->pbuddy_adapter; + struct mlme_ext_priv *pbuddy_mlmeext = &pbuddy_adapter->mlmeextpriv; + + // Operating Class + if ( pbuddy_mlmeext->cur_channel > 14 ) + { + if ( pbuddy_mlmeext->cur_channel >= 149 ) + { + p2pie[ p2pielen++ ] = 0x7c; + } + else + { + p2pie[ p2pielen++ ] = 0x73; + } + } + else + { + p2pie[ p2pielen++ ] = 0x51; + } + + // Number of Channels + // Just support 1 channel and this channel is AP's channel + p2pie[ p2pielen++ ] = 1; + + // Channel List + p2pie[ p2pielen++ ] = pbuddy_mlmeext->cur_channel; + } + else + { + int i, j; + for (j = 0; j < pmlmeext->channel_list.reg_classes; j++) { + // Operating Class + p2pie[p2pielen++] = pmlmeext->channel_list.reg_class[j].reg_class; + + // Number of Channels + p2pie[p2pielen++] = pmlmeext->channel_list.reg_class[j].channels; + + // Channel List + for (i = 0; i < pmlmeext->channel_list.reg_class[j].channels; i++) { + p2pie[p2pielen++] = pmlmeext->channel_list.reg_class[j].channel[i]; + } + } + } +#else // CONFIG_CONCURRENT_MODE + { + int i, j; + for (j = 0; j < pmlmeext->channel_list.reg_classes; j++) { + // Operating Class + p2pie[p2pielen++] = pmlmeext->channel_list.reg_class[j].reg_class; + + // Number of Channels + p2pie[p2pielen++] = pmlmeext->channel_list.reg_class[j].channels; + + // Channel List + for (i = 0; i < pmlmeext->channel_list.reg_class[j].channels; i++) { + p2pie[p2pielen++] = pmlmeext->channel_list.reg_class[j].channel[i]; + } + } + } +#endif // CONFIG_CONCURRENT_MODE + + // Device Info + // Type: + p2pie[ p2pielen++ ] = P2P_ATTR_DEVICE_INFO; + + // Length: + // 21 -> P2P Device Address (6bytes) + Config Methods (2bytes) + Primary Device Type (8bytes) + // + NumofSecondDevType (1byte) + WPS Device Name ID field (2bytes) + WPS Device Name Len field (2bytes) + *(u16*) ( p2pie + p2pielen ) = cpu_to_le16( 21 + pwdinfo->device_name_len ); + p2pielen += 2; + + // Value: + // P2P Device Address + _rtw_memcpy( p2pie + p2pielen, myid( &padapter->eeprompriv ), ETH_ALEN ); + p2pielen += ETH_ALEN; + + // Config Method + // This field should be big endian. Noted by P2P specification. + + *(u16*) ( p2pie + p2pielen ) = cpu_to_be16( pwdinfo->supported_wps_cm ); + + p2pielen += 2; + + // Primary Device Type + // Category ID + *(u16*) ( p2pie + p2pielen ) = cpu_to_be16( WPS_PDT_CID_MULIT_MEDIA ); + p2pielen += 2; + + // OUI + *(u32*) ( p2pie + p2pielen ) = cpu_to_be32( WPSOUI ); + p2pielen += 4; + + // Sub Category ID + *(u16*) ( p2pie + p2pielen ) = cpu_to_be16( WPS_PDT_SCID_MEDIA_SERVER ); + p2pielen += 2; + + // Number of Secondary Device Types + p2pie[ p2pielen++ ] = 0x00; // No Secondary Device Type List + + // Device Name + // Type: + *(u16*) ( p2pie + p2pielen ) = cpu_to_be16( WPS_ATTR_DEVICE_NAME ); + p2pielen += 2; + + // Length: + *(u16*) ( p2pie + p2pielen ) = cpu_to_be16( pwdinfo->device_name_len ); + p2pielen += 2; + + // Value: + _rtw_memcpy( p2pie + p2pielen, pwdinfo->device_name , pwdinfo->device_name_len ); + p2pielen += pwdinfo->device_name_len; + + if ( rtw_p2p_chk_role(pwdinfo, P2P_ROLE_GO) ) + { + // Group ID Attribute + // Type: + p2pie[ p2pielen++ ] = P2P_ATTR_GROUP_ID; + + // Length: + *(u16*) ( p2pie + p2pielen ) = cpu_to_le16( ETH_ALEN + pwdinfo->nego_ssidlen ); + p2pielen += 2; + + // Value: + // p2P Device Address + _rtw_memcpy( p2pie + p2pielen , pwdinfo->device_addr, ETH_ALEN ); + p2pielen += ETH_ALEN; + + // SSID + _rtw_memcpy( p2pie + p2pielen, pwdinfo->nego_ssid, pwdinfo->nego_ssidlen ); + p2pielen += pwdinfo->nego_ssidlen; + + } + + pframe = rtw_set_ie(pframe, _VENDOR_SPECIFIC_IE_, p2pielen, (unsigned char *) p2pie, &pattrib->pktlen ); + +#ifdef CONFIG_WFD + wfdielen = build_nego_resp_wfd_ie(pwdinfo, pframe); + pframe += wfdielen; + pattrib->pktlen += wfdielen; +#endif //CONFIG_WFD + + pattrib->last_txcmdsz = pattrib->pktlen; + + dump_mgntframe(padapter, pmgntframe); + + return; + +} + +void issue_p2p_GO_confirm(_adapter *padapter, u8* raddr, u8 result) +{ + + unsigned char category = RTW_WLAN_CATEGORY_PUBLIC; + u8 action = P2P_PUB_ACTION_ACTION; + u32 p2poui = cpu_to_be32(P2POUI); + u8 oui_subtype = P2P_GO_NEGO_CONF; + u8 wpsie[ 255 ] = { 0x00 }, p2pie[ 255 ] = { 0x00 }; + u8 wpsielen = 0, p2pielen = 0; + + struct xmit_frame *pmgntframe; + struct pkt_attrib *pattrib; + unsigned char *pframe; + struct rtw_ieee80211_hdr *pwlanhdr; + unsigned short *fctrl; + struct xmit_priv *pxmitpriv = &(padapter->xmitpriv); + struct mlme_ext_priv *pmlmeext = &(padapter->mlmeextpriv); + struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info); + struct wifidirect_info *pwdinfo = &( padapter->wdinfo); +#ifdef CONFIG_WFD + u32 wfdielen = 0; +#endif //CONFIG_WFD + + if ((pmgntframe = alloc_mgtxmitframe(pxmitpriv)) == NULL) + { + return; + } + + DBG_871X( "[%s] In\n", __FUNCTION__ ); + //update attribute + pattrib = &pmgntframe->attrib; + update_mgntframe_attrib(padapter, pattrib); + + _rtw_memset(pmgntframe->buf_addr, 0, WLANHDR_OFFSET + TXDESC_OFFSET); + + pframe = (u8 *)(pmgntframe->buf_addr) + TXDESC_OFFSET; + pwlanhdr = (struct rtw_ieee80211_hdr *)pframe; + + fctrl = &(pwlanhdr->frame_ctl); + *(fctrl) = 0; + + _rtw_memcpy(pwlanhdr->addr1, raddr, ETH_ALEN); + _rtw_memcpy(pwlanhdr->addr2, myid(&(padapter->eeprompriv)), ETH_ALEN); + _rtw_memcpy(pwlanhdr->addr3, myid(&(padapter->eeprompriv)), ETH_ALEN); + + SetSeqNum(pwlanhdr, pmlmeext->mgnt_seq); + pmlmeext->mgnt_seq++; + SetFrameSubType(pframe, WIFI_ACTION); + + pframe += sizeof(struct rtw_ieee80211_hdr_3addr); + pattrib->pktlen = sizeof(struct rtw_ieee80211_hdr_3addr); + + pframe = rtw_set_fixed_ie(pframe, 1, &(category), &(pattrib->pktlen)); + pframe = rtw_set_fixed_ie(pframe, 1, &(action), &(pattrib->pktlen)); + pframe = rtw_set_fixed_ie(pframe, 4, (unsigned char *) &(p2poui), &(pattrib->pktlen)); + pframe = rtw_set_fixed_ie(pframe, 1, &(oui_subtype), &(pattrib->pktlen)); + pframe = rtw_set_fixed_ie(pframe, 1, &(pwdinfo->negotiation_dialog_token), &(pattrib->pktlen)); + + + + // P2P IE Section. + + // P2P OUI + p2pielen = 0; + p2pie[ p2pielen++ ] = 0x50; + p2pie[ p2pielen++ ] = 0x6F; + p2pie[ p2pielen++ ] = 0x9A; + p2pie[ p2pielen++ ] = 0x09; // WFA P2P v1.0 + + // Commented by Albert 20110306 + // According to the P2P Specification, the group negoitation request frame should contain 5 P2P attributes + // 1. Status + // 2. P2P Capability + // 3. Operating Channel + // 4. Channel List + // 5. Group ID ( if this WiFi is GO ) + + // P2P Status + // Type: + p2pie[ p2pielen++ ] = P2P_ATTR_STATUS; + + // Length: + *(u16*) ( p2pie + p2pielen ) = cpu_to_le16( 0x0001 ); + p2pielen += 2; + + // Value: + p2pie[ p2pielen++ ] = result; + + // P2P Capability + // Type: + p2pie[ p2pielen++ ] = P2P_ATTR_CAPABILITY; + + // Length: + *(u16*) ( p2pie + p2pielen ) = cpu_to_le16( 0x0002 ); + p2pielen += 2; + + // Value: + // Device Capability Bitmap, 1 byte + p2pie[ p2pielen++ ] = DMP_P2P_DEVCAP_SUPPORT; + + // Group Capability Bitmap, 1 byte + if ( pwdinfo->persistent_supported ) + { + p2pie[ p2pielen++ ] = P2P_GRPCAP_CROSS_CONN | P2P_GRPCAP_PERSISTENT_GROUP; + } + else + { + p2pie[ p2pielen++ ] = P2P_GRPCAP_CROSS_CONN; + } + + + // Operating Channel + // Type: + p2pie[ p2pielen++ ] = P2P_ATTR_OPERATING_CH; + + // Length: + *(u16*) ( p2pie + p2pielen ) = cpu_to_le16( 0x0005 ); + p2pielen += 2; + + // Value: + // Country String + p2pie[ p2pielen++ ] = 'X'; + p2pie[ p2pielen++ ] = 'X'; + + // The third byte should be set to 0x04. + // Described in the "Operating Channel Attribute" section. + p2pie[ p2pielen++ ] = 0x04; + + + if ( rtw_p2p_chk_role(pwdinfo, P2P_ROLE_CLIENT) ) + { + if ( pwdinfo->peer_operating_ch <= 14 ) + { + // Operating Class + p2pie[ p2pielen++ ] = 0x51; + } + else if ( ( pwdinfo->peer_operating_ch >= 36 ) && ( pwdinfo->peer_operating_ch <= 48 ) ) + { + // Operating Class + p2pie[ p2pielen++ ] = 0x73; + } + else + { + // Operating Class + p2pie[ p2pielen++ ] = 0x7c; + } + + p2pie[ p2pielen++ ] = pwdinfo->peer_operating_ch; + } + else + { + if ( pwdinfo->operating_channel <= 14 ) + { + // Operating Class + p2pie[ p2pielen++ ] = 0x51; + } + else if ( ( pwdinfo->operating_channel >= 36 ) && ( pwdinfo->operating_channel <= 48 ) ) + { + // Operating Class + p2pie[ p2pielen++ ] = 0x73; + } + else + { + // Operating Class + p2pie[ p2pielen++ ] = 0x7c; + } + + // Channel Number + p2pie[ p2pielen++ ] = pwdinfo->operating_channel; // Use the listen channel as the operating channel + } + + + // Channel List + // Type: + p2pie[ p2pielen++ ] = P2P_ATTR_CH_LIST; + + *(u16*) ( p2pie + p2pielen ) = 6; + p2pielen += 2; + + // Country String + p2pie[ p2pielen++ ] = 'X'; + p2pie[ p2pielen++ ] = 'X'; + + // The third byte should be set to 0x04. + // Described in the "Operating Channel Attribute" section. + p2pie[ p2pielen++ ] = 0x04; + + // Value: + if ( rtw_p2p_chk_role(pwdinfo, P2P_ROLE_CLIENT) ) + { + if ( pwdinfo->peer_operating_ch <= 14 ) + { + // Operating Class + p2pie[ p2pielen++ ] = 0x51; + } + else if ( ( pwdinfo->peer_operating_ch >= 36 ) && ( pwdinfo->peer_operating_ch <= 48 ) ) + { + // Operating Class + p2pie[ p2pielen++ ] = 0x73; + } + else + { + // Operating Class + p2pie[ p2pielen++ ] = 0x7c; + } + p2pie[ p2pielen++ ] = 1; + p2pie[ p2pielen++ ] = pwdinfo->peer_operating_ch; + } + else + { + if ( pwdinfo->operating_channel <= 14 ) + { + // Operating Class + p2pie[ p2pielen++ ] = 0x51; + } + else if ( ( pwdinfo->operating_channel >= 36 ) && ( pwdinfo->operating_channel <= 48 ) ) + { + // Operating Class + p2pie[ p2pielen++ ] = 0x73; + } + else + { + // Operating Class + p2pie[ p2pielen++ ] = 0x7c; + } + + // Channel Number + p2pie[ p2pielen++ ] = 1; + p2pie[ p2pielen++ ] = pwdinfo->operating_channel; // Use the listen channel as the operating channel + } + + if (rtw_p2p_chk_role(pwdinfo, P2P_ROLE_GO) ) + { + // Group ID Attribute + // Type: + p2pie[ p2pielen++ ] = P2P_ATTR_GROUP_ID; + + // Length: + *(u16*) ( p2pie + p2pielen ) = cpu_to_le16( ETH_ALEN + pwdinfo->nego_ssidlen ); + p2pielen += 2; + + // Value: + // p2P Device Address + _rtw_memcpy( p2pie + p2pielen , pwdinfo->device_addr, ETH_ALEN ); + p2pielen += ETH_ALEN; + + // SSID + _rtw_memcpy( p2pie + p2pielen, pwdinfo->nego_ssid, pwdinfo->nego_ssidlen ); + p2pielen += pwdinfo->nego_ssidlen; + } + + pframe = rtw_set_ie(pframe, _VENDOR_SPECIFIC_IE_, p2pielen, (unsigned char *) p2pie, &pattrib->pktlen ); + +#ifdef CONFIG_WFD + wfdielen = build_nego_confirm_wfd_ie(pwdinfo, pframe); + pframe += wfdielen; + pattrib->pktlen += wfdielen; +#endif //CONFIG_WFD + + pattrib->last_txcmdsz = pattrib->pktlen; + + dump_mgntframe(padapter, pmgntframe); + + return; + +} + +void issue_p2p_invitation_request(_adapter *padapter, u8* raddr ) +{ + + unsigned char category = RTW_WLAN_CATEGORY_PUBLIC; + u8 action = P2P_PUB_ACTION_ACTION; + u32 p2poui = cpu_to_be32(P2POUI); + u8 oui_subtype = P2P_INVIT_REQ; + u8 p2pie[ 255 ] = { 0x00 }; + u8 p2pielen = 0, i; + u8 dialogToken = 3; + u8 channel_cnt_24g = 0, channel_cnt_5gl = 0, channel_cnt_5gh = 0; + u16 len_channellist_attr = 0; +#ifdef CONFIG_WFD + u32 wfdielen = 0; +#endif //CONFIG_WFD +#ifdef CONFIG_CONCURRENT_MODE + _adapter *pbuddy_adapter = padapter->pbuddy_adapter; + struct wifidirect_info *pbuddy_wdinfo = &pbuddy_adapter->wdinfo; + struct mlme_priv *pbuddy_mlmepriv = &pbuddy_adapter->mlmepriv; + struct mlme_ext_priv *pbuddy_mlmeext = &pbuddy_adapter->mlmeextpriv; +#endif + + struct xmit_frame *pmgntframe; + struct pkt_attrib *pattrib; + unsigned char *pframe; + struct rtw_ieee80211_hdr *pwlanhdr; + unsigned short *fctrl; + struct xmit_priv *pxmitpriv = &(padapter->xmitpriv); + struct mlme_ext_priv *pmlmeext = &(padapter->mlmeextpriv); + struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info); + struct wifidirect_info *pwdinfo = &( padapter->wdinfo); + + + if ((pmgntframe = alloc_mgtxmitframe(pxmitpriv)) == NULL) + { + return; + } + + //update attribute + pattrib = &pmgntframe->attrib; + update_mgntframe_attrib(padapter, pattrib); + + _rtw_memset(pmgntframe->buf_addr, 0, WLANHDR_OFFSET + TXDESC_OFFSET); + + pframe = (u8 *)(pmgntframe->buf_addr) + TXDESC_OFFSET; + pwlanhdr = (struct rtw_ieee80211_hdr *)pframe; + + fctrl = &(pwlanhdr->frame_ctl); + *(fctrl) = 0; + + _rtw_memcpy(pwlanhdr->addr1, raddr, ETH_ALEN); + _rtw_memcpy(pwlanhdr->addr2, myid(&(padapter->eeprompriv)), ETH_ALEN); + _rtw_memcpy(pwlanhdr->addr3, raddr, ETH_ALEN); + + SetSeqNum(pwlanhdr, pmlmeext->mgnt_seq); + pmlmeext->mgnt_seq++; + SetFrameSubType(pframe, WIFI_ACTION); + + pframe += sizeof(struct rtw_ieee80211_hdr_3addr); + pattrib->pktlen = sizeof(struct rtw_ieee80211_hdr_3addr); + + pframe = rtw_set_fixed_ie(pframe, 1, &(category), &(pattrib->pktlen)); + pframe = rtw_set_fixed_ie(pframe, 1, &(action), &(pattrib->pktlen)); + pframe = rtw_set_fixed_ie(pframe, 4, (unsigned char *) &(p2poui), &(pattrib->pktlen)); + pframe = rtw_set_fixed_ie(pframe, 1, &(oui_subtype), &(pattrib->pktlen)); + pframe = rtw_set_fixed_ie(pframe, 1, &(dialogToken), &(pattrib->pktlen)); + + // P2P IE Section. + + // P2P OUI + p2pielen = 0; + p2pie[ p2pielen++ ] = 0x50; + p2pie[ p2pielen++ ] = 0x6F; + p2pie[ p2pielen++ ] = 0x9A; + p2pie[ p2pielen++ ] = 0x09; // WFA P2P v1.0 + + // Commented by Albert 20101011 + // According to the P2P Specification, the P2P Invitation request frame should contain 7 P2P attributes + // 1. Configuration Timeout + // 2. Invitation Flags + // 3. Operating Channel ( Only GO ) + // 4. P2P Group BSSID ( Should be included if I am the GO ) + // 5. Channel List + // 6. P2P Group ID + // 7. P2P Device Info + + // Configuration Timeout + // Type: + p2pie[ p2pielen++ ] = P2P_ATTR_CONF_TIMEOUT; + + // Length: + *(u16*) ( p2pie + p2pielen ) = cpu_to_le16( 0x0002 ); + p2pielen += 2; + + // Value: + p2pie[ p2pielen++ ] = 200; // 2 seconds needed to be the P2P GO + p2pie[ p2pielen++ ] = 200; // 2 seconds needed to be the P2P Client + + // Invitation Flags + // Type: + p2pie[ p2pielen++ ] = P2P_ATTR_INVITATION_FLAGS; + + // Length: + *(u16*) ( p2pie + p2pielen ) = cpu_to_le16( 0x0001 ); + p2pielen += 2; + + // Value: + p2pie[ p2pielen++ ] = P2P_INVITATION_FLAGS_PERSISTENT; + + + // Operating Channel + // Type: + p2pie[ p2pielen++ ] = P2P_ATTR_OPERATING_CH; + + // Length: + *(u16*) ( p2pie + p2pielen ) = cpu_to_le16( 0x0005 ); + p2pielen += 2; + + // Value: + // Country String + p2pie[ p2pielen++ ] = 'X'; + p2pie[ p2pielen++ ] = 'X'; + + // The third byte should be set to 0x04. + // Described in the "Operating Channel Attribute" section. + p2pie[ p2pielen++ ] = 0x04; + + // Operating Class + if ( pwdinfo->invitereq_info.operating_ch <= 14 ) + p2pie[ p2pielen++ ] = 0x51; + else if ( ( pwdinfo->invitereq_info.operating_ch >= 36 ) && ( pwdinfo->invitereq_info.operating_ch <= 48 ) ) + p2pie[ p2pielen++ ] = 0x73; + else + p2pie[ p2pielen++ ] = 0x7c; + + // Channel Number + p2pie[ p2pielen++ ] = pwdinfo->invitereq_info.operating_ch; // operating channel number + + if ( _rtw_memcmp( myid( &padapter->eeprompriv ), pwdinfo->invitereq_info.go_bssid, ETH_ALEN ) ) + { + // P2P Group BSSID + // Type: + p2pie[ p2pielen++ ] = P2P_ATTR_GROUP_BSSID; + + // Length: + *(u16*) ( p2pie + p2pielen ) = cpu_to_le16( ETH_ALEN ); + p2pielen += 2; + + // Value: + // P2P Device Address for GO + _rtw_memcpy( p2pie + p2pielen, pwdinfo->invitereq_info.go_bssid, ETH_ALEN ); + p2pielen += ETH_ALEN; + } + + // Channel List + // Type: + p2pie[ p2pielen++ ] = P2P_ATTR_CH_LIST; + + + // Length: + // Country String(3) + // + ( Operating Class (1) + Number of Channels(1) ) * Operation Classes (?) + // + number of channels in all classes + len_channellist_attr = 3 + + (1 + 1) * (u16)pmlmeext->channel_list.reg_classes + + get_reg_classes_full_count(pmlmeext->channel_list); + +#ifdef CONFIG_CONCURRENT_MODE + if ( check_buddy_fwstate(padapter, _FW_LINKED ) ) + { + *(u16*) ( p2pie + p2pielen ) = cpu_to_le16( 5 + 1 ); + } + else + { + *(u16*) ( p2pie + p2pielen ) = cpu_to_le16( len_channellist_attr ); + } +#else + + *(u16*) ( p2pie + p2pielen ) = cpu_to_le16( len_channellist_attr ); + + #endif + p2pielen += 2; + + // Value: + // Country String + p2pie[ p2pielen++ ] = 'X'; + p2pie[ p2pielen++ ] = 'X'; + + // The third byte should be set to 0x04. + // Described in the "Operating Channel Attribute" section. + p2pie[ p2pielen++ ] = 0x04; + + // Channel Entry List +#ifdef CONFIG_CONCURRENT_MODE + if ( check_buddy_fwstate(padapter, _FW_LINKED ) ) + { + _adapter *pbuddy_adapter = padapter->pbuddy_adapter; + struct mlme_ext_priv *pbuddy_mlmeext = &pbuddy_adapter->mlmeextpriv; + + // Operating Class + if ( pbuddy_mlmeext->cur_channel > 14 ) + { + if ( pbuddy_mlmeext->cur_channel >= 149 ) + { + p2pie[ p2pielen++ ] = 0x7c; + } + else + { + p2pie[ p2pielen++ ] = 0x73; + } + } + else + { + p2pie[ p2pielen++ ] = 0x51; + } + + // Number of Channels + // Just support 1 channel and this channel is AP's channel + p2pie[ p2pielen++ ] = 1; + + // Channel List + p2pie[ p2pielen++ ] = pbuddy_mlmeext->cur_channel; + } + else + { + int i, j; + for (j = 0; j < pmlmeext->channel_list.reg_classes; j++) { + // Operating Class + p2pie[p2pielen++] = pmlmeext->channel_list.reg_class[j].reg_class; + + // Number of Channels + p2pie[p2pielen++] = pmlmeext->channel_list.reg_class[j].channels; + + // Channel List + for (i = 0; i < pmlmeext->channel_list.reg_class[j].channels; i++) { + p2pie[p2pielen++] = pmlmeext->channel_list.reg_class[j].channel[i]; + } + } + } +#else // CONFIG_CONCURRENT_MODE + { + int i, j; + for (j = 0; j < pmlmeext->channel_list.reg_classes; j++) { + // Operating Class + p2pie[p2pielen++] = pmlmeext->channel_list.reg_class[j].reg_class; + + // Number of Channels + p2pie[p2pielen++] = pmlmeext->channel_list.reg_class[j].channels; + + // Channel List + for (i = 0; i < pmlmeext->channel_list.reg_class[j].channels; i++) { + p2pie[p2pielen++] = pmlmeext->channel_list.reg_class[j].channel[i]; + } + } + } +#endif // CONFIG_CONCURRENT_MODE + + + // P2P Group ID + // Type: + p2pie[ p2pielen++ ] = P2P_ATTR_GROUP_ID; + + // Length: + *(u16*) ( p2pie + p2pielen ) = cpu_to_le16( 6 + pwdinfo->invitereq_info.ssidlen ); + p2pielen += 2; + + // Value: + // P2P Device Address for GO + _rtw_memcpy( p2pie + p2pielen, pwdinfo->invitereq_info.go_bssid, ETH_ALEN ); + p2pielen += ETH_ALEN; + + // SSID + _rtw_memcpy( p2pie + p2pielen, pwdinfo->invitereq_info.go_ssid, pwdinfo->invitereq_info.ssidlen ); + p2pielen += pwdinfo->invitereq_info.ssidlen; + + + // Device Info + // Type: + p2pie[ p2pielen++ ] = P2P_ATTR_DEVICE_INFO; + + // Length: + // 21 -> P2P Device Address (6bytes) + Config Methods (2bytes) + Primary Device Type (8bytes) + // + NumofSecondDevType (1byte) + WPS Device Name ID field (2bytes) + WPS Device Name Len field (2bytes) + *(u16*) ( p2pie + p2pielen ) = cpu_to_le16( 21 + pwdinfo->device_name_len ); + p2pielen += 2; + + // Value: + // P2P Device Address + _rtw_memcpy( p2pie + p2pielen, myid( &padapter->eeprompriv ), ETH_ALEN ); + p2pielen += ETH_ALEN; + + // Config Method + // This field should be big endian. Noted by P2P specification. + *(u16*) ( p2pie + p2pielen ) = cpu_to_be16( WPS_CONFIG_METHOD_DISPLAY ); + p2pielen += 2; + + // Primary Device Type + // Category ID + *(u16*) ( p2pie + p2pielen ) = cpu_to_be16( WPS_PDT_CID_MULIT_MEDIA ); + p2pielen += 2; + + // OUI + *(u32*) ( p2pie + p2pielen ) = cpu_to_be32( WPSOUI ); + p2pielen += 4; + + // Sub Category ID + *(u16*) ( p2pie + p2pielen ) = cpu_to_be16( WPS_PDT_SCID_MEDIA_SERVER ); + p2pielen += 2; + + // Number of Secondary Device Types + p2pie[ p2pielen++ ] = 0x00; // No Secondary Device Type List + + // Device Name + // Type: + *(u16*) ( p2pie + p2pielen ) = cpu_to_be16( WPS_ATTR_DEVICE_NAME ); + p2pielen += 2; + + // Length: + *(u16*) ( p2pie + p2pielen ) = cpu_to_be16( pwdinfo->device_name_len ); + p2pielen += 2; + + // Value: + _rtw_memcpy( p2pie + p2pielen, pwdinfo->device_name, pwdinfo->device_name_len ); + p2pielen += pwdinfo->device_name_len; + + pframe = rtw_set_ie(pframe, _VENDOR_SPECIFIC_IE_, p2pielen, (unsigned char *) p2pie, &pattrib->pktlen ); + +#ifdef CONFIG_WFD + wfdielen = build_invitation_req_wfd_ie(pwdinfo, pframe); + pframe += wfdielen; + pattrib->pktlen += wfdielen; +#endif //CONFIG_WFD + + pattrib->last_txcmdsz = pattrib->pktlen; + + dump_mgntframe(padapter, pmgntframe); + + return; + +} + +void issue_p2p_invitation_response(_adapter *padapter, u8* raddr, u8 dialogToken, u8 status_code) +{ + + unsigned char category = RTW_WLAN_CATEGORY_PUBLIC; + u8 action = P2P_PUB_ACTION_ACTION; + u32 p2poui = cpu_to_be32(P2POUI); + u8 oui_subtype = P2P_INVIT_RESP; + u8 p2pie[ 255 ] = { 0x00 }; + u8 p2pielen = 0, i; + u8 channel_cnt_24g = 0, channel_cnt_5gl = 0, channel_cnt_5gh = 0; + u16 len_channellist_attr = 0; +#ifdef CONFIG_CONCURRENT_MODE + _adapter *pbuddy_adapter = padapter->pbuddy_adapter; + struct wifidirect_info *pbuddy_wdinfo = &pbuddy_adapter->wdinfo; + struct mlme_priv *pbuddy_mlmepriv = &pbuddy_adapter->mlmepriv; + struct mlme_ext_priv *pbuddy_mlmeext = &pbuddy_adapter->mlmeextpriv; +#endif +#ifdef CONFIG_WFD + u32 wfdielen = 0; +#endif //CONFIG_WFD + + struct xmit_frame *pmgntframe; + struct pkt_attrib *pattrib; + unsigned char *pframe; + struct rtw_ieee80211_hdr *pwlanhdr; + unsigned short *fctrl; + struct xmit_priv *pxmitpriv = &(padapter->xmitpriv); + struct mlme_ext_priv *pmlmeext = &(padapter->mlmeextpriv); + struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info); + struct wifidirect_info *pwdinfo = &( padapter->wdinfo); + + + if ((pmgntframe = alloc_mgtxmitframe(pxmitpriv)) == NULL) + { + return; + } + + //update attribute + pattrib = &pmgntframe->attrib; + update_mgntframe_attrib(padapter, pattrib); + + _rtw_memset(pmgntframe->buf_addr, 0, WLANHDR_OFFSET + TXDESC_OFFSET); + + pframe = (u8 *)(pmgntframe->buf_addr) + TXDESC_OFFSET; + pwlanhdr = (struct rtw_ieee80211_hdr *)pframe; + + fctrl = &(pwlanhdr->frame_ctl); + *(fctrl) = 0; + + _rtw_memcpy(pwlanhdr->addr1, raddr, ETH_ALEN); + _rtw_memcpy(pwlanhdr->addr2, myid(&(padapter->eeprompriv)), ETH_ALEN); + _rtw_memcpy(pwlanhdr->addr3, raddr, ETH_ALEN); + + SetSeqNum(pwlanhdr, pmlmeext->mgnt_seq); + pmlmeext->mgnt_seq++; + SetFrameSubType(pframe, WIFI_ACTION); + + pframe += sizeof(struct rtw_ieee80211_hdr_3addr); + pattrib->pktlen = sizeof(struct rtw_ieee80211_hdr_3addr); + + pframe = rtw_set_fixed_ie(pframe, 1, &(category), &(pattrib->pktlen)); + pframe = rtw_set_fixed_ie(pframe, 1, &(action), &(pattrib->pktlen)); + pframe = rtw_set_fixed_ie(pframe, 4, (unsigned char *) &(p2poui), &(pattrib->pktlen)); + pframe = rtw_set_fixed_ie(pframe, 1, &(oui_subtype), &(pattrib->pktlen)); + pframe = rtw_set_fixed_ie(pframe, 1, &(dialogToken), &(pattrib->pktlen)); + + // P2P IE Section. + + // P2P OUI + p2pielen = 0; + p2pie[ p2pielen++ ] = 0x50; + p2pie[ p2pielen++ ] = 0x6F; + p2pie[ p2pielen++ ] = 0x9A; + p2pie[ p2pielen++ ] = 0x09; // WFA P2P v1.0 + + // Commented by Albert 20101005 + // According to the P2P Specification, the P2P Invitation response frame should contain 5 P2P attributes + // 1. Status + // 2. Configuration Timeout + // 3. Operating Channel ( Only GO ) + // 4. P2P Group BSSID ( Only GO ) + // 5. Channel List + + // P2P Status + // Type: + p2pie[ p2pielen++ ] = P2P_ATTR_STATUS; + + // Length: + *(u16*) ( p2pie + p2pielen ) = cpu_to_le16( 0x0001 ); + p2pielen += 2; + + // Value: + // When status code is P2P_STATUS_FAIL_INFO_UNAVAILABLE. + // Sent the event receiving the P2P Invitation Req frame to DMP UI. + // DMP had to compare the MAC address to find out the profile. + // So, the WiFi driver will send the P2P_STATUS_FAIL_INFO_UNAVAILABLE to NB. + // If the UI found the corresponding profile, the WiFi driver sends the P2P Invitation Req + // to NB to rebuild the persistent group. + p2pie[ p2pielen++ ] = status_code; + + // Configuration Timeout + // Type: + p2pie[ p2pielen++ ] = P2P_ATTR_CONF_TIMEOUT; + + // Length: + *(u16*) ( p2pie + p2pielen ) = cpu_to_le16( 0x0002 ); + p2pielen += 2; + + // Value: + p2pie[ p2pielen++ ] = 200; // 2 seconds needed to be the P2P GO + p2pie[ p2pielen++ ] = 200; // 2 seconds needed to be the P2P Client + + if( status_code == P2P_STATUS_SUCCESS ) + { + if( rtw_p2p_chk_role( pwdinfo, P2P_ROLE_GO ) ) + { + // The P2P Invitation request frame asks this Wi-Fi device to be the P2P GO + // In this case, the P2P Invitation response frame should carry the two more P2P attributes. + // First one is operating channel attribute. + // Second one is P2P Group BSSID attribute. + + // Operating Channel + // Type: + p2pie[ p2pielen++ ] = P2P_ATTR_OPERATING_CH; + + // Length: + *(u16*) ( p2pie + p2pielen ) = cpu_to_le16( 0x0005 ); + p2pielen += 2; + + // Value: + // Country String + p2pie[ p2pielen++ ] = 'X'; + p2pie[ p2pielen++ ] = 'X'; + + // The third byte should be set to 0x04. + // Described in the "Operating Channel Attribute" section. + p2pie[ p2pielen++ ] = 0x04; + + // Operating Class + p2pie[ p2pielen++ ] = 0x51; // Copy from SD7 + + // Channel Number + p2pie[ p2pielen++ ] = pwdinfo->operating_channel; // operating channel number + + + // P2P Group BSSID + // Type: + p2pie[ p2pielen++ ] = P2P_ATTR_GROUP_BSSID; + + // Length: + *(u16*) ( p2pie + p2pielen ) = cpu_to_le16( ETH_ALEN ); + p2pielen += 2; + + // Value: + // P2P Device Address for GO + _rtw_memcpy( p2pie + p2pielen, myid( &padapter->eeprompriv ), ETH_ALEN ); + p2pielen += ETH_ALEN; + + } + + // Channel List + // Type: + p2pie[ p2pielen++ ] = P2P_ATTR_CH_LIST; + + // Length: + // Country String(3) + // + ( Operating Class (1) + Number of Channels(1) ) * Operation Classes (?) + // + number of channels in all classes + len_channellist_attr = 3 + + (1 + 1) * (u16)pmlmeext->channel_list.reg_classes + + get_reg_classes_full_count(pmlmeext->channel_list); + +#ifdef CONFIG_CONCURRENT_MODE + if ( check_buddy_fwstate(padapter, _FW_LINKED ) ) + { + *(u16*) ( p2pie + p2pielen ) = cpu_to_le16( 5 + 1 ); + } + else + { + *(u16*) ( p2pie + p2pielen ) = cpu_to_le16( len_channellist_attr ); + } +#else + + *(u16*) ( p2pie + p2pielen ) = cpu_to_le16( len_channellist_attr ); + +#endif + p2pielen += 2; + + // Value: + // Country String + p2pie[ p2pielen++ ] = 'X'; + p2pie[ p2pielen++ ] = 'X'; + + // The third byte should be set to 0x04. + // Described in the "Operating Channel Attribute" section. + p2pie[ p2pielen++ ] = 0x04; + + // Channel Entry List +#ifdef CONFIG_CONCURRENT_MODE + if ( check_buddy_fwstate(padapter, _FW_LINKED ) ) + { + _adapter *pbuddy_adapter = padapter->pbuddy_adapter; + struct mlme_ext_priv *pbuddy_mlmeext = &pbuddy_adapter->mlmeextpriv; + + // Operating Class + if ( pbuddy_mlmeext->cur_channel > 14 ) + { + if ( pbuddy_mlmeext->cur_channel >= 149 ) + { + p2pie[ p2pielen++ ] = 0x7c; + } + else + { + p2pie[ p2pielen++ ] = 0x73; + } + } + else + { + p2pie[ p2pielen++ ] = 0x51; + } + + // Number of Channels + // Just support 1 channel and this channel is AP's channel + p2pie[ p2pielen++ ] = 1; + + // Channel List + p2pie[ p2pielen++ ] = pbuddy_mlmeext->cur_channel; + } + else + { + int i, j; + for (j = 0; j < pmlmeext->channel_list.reg_classes; j++) { + // Operating Class + p2pie[p2pielen++] = pmlmeext->channel_list.reg_class[j].reg_class; + + // Number of Channels + p2pie[p2pielen++] = pmlmeext->channel_list.reg_class[j].channels; + + // Channel List + for (i = 0; i < pmlmeext->channel_list.reg_class[j].channels; i++) { + p2pie[p2pielen++] = pmlmeext->channel_list.reg_class[j].channel[i]; + } + } + } +#else // CONFIG_CONCURRENT_MODE + { + int i, j; + for (j = 0; j < pmlmeext->channel_list.reg_classes; j++) { + // Operating Class + p2pie[p2pielen++] = pmlmeext->channel_list.reg_class[j].reg_class; + + // Number of Channels + p2pie[p2pielen++] = pmlmeext->channel_list.reg_class[j].channels; + + // Channel List + for (i = 0; i < pmlmeext->channel_list.reg_class[j].channels; i++) { + p2pie[p2pielen++] = pmlmeext->channel_list.reg_class[j].channel[i]; + } + } + } +#endif // CONFIG_CONCURRENT_MODE + } + + pframe = rtw_set_ie(pframe, _VENDOR_SPECIFIC_IE_, p2pielen, (unsigned char *) p2pie, &pattrib->pktlen ); + +#ifdef CONFIG_WFD + wfdielen = build_invitation_resp_wfd_ie(pwdinfo, pframe); + pframe += wfdielen; + pattrib->pktlen += wfdielen; +#endif //CONFIG_WFD + + pattrib->last_txcmdsz = pattrib->pktlen; + + dump_mgntframe(padapter, pmgntframe); + + return; + +} + +void issue_p2p_provision_request(_adapter *padapter, u8* pssid, u8 ussidlen, u8* pdev_raddr ) +{ + unsigned char category = RTW_WLAN_CATEGORY_PUBLIC; + u8 action = P2P_PUB_ACTION_ACTION; + u8 dialogToken = 1; + u32 p2poui = cpu_to_be32(P2POUI); + u8 oui_subtype = P2P_PROVISION_DISC_REQ; + u8 wpsie[ 100 ] = { 0x00 }; + u8 wpsielen = 0; + u32 p2pielen = 0; +#ifdef CONFIG_WFD + u32 wfdielen = 0; +#endif //CONFIG_WFD + + struct xmit_frame *pmgntframe; + struct pkt_attrib *pattrib; + unsigned char *pframe; + struct rtw_ieee80211_hdr *pwlanhdr; + unsigned short *fctrl; + struct xmit_priv *pxmitpriv = &(padapter->xmitpriv); + struct mlme_ext_priv *pmlmeext = &(padapter->mlmeextpriv); + struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info); + struct wifidirect_info *pwdinfo = &(padapter->wdinfo); + + + if ((pmgntframe = alloc_mgtxmitframe(pxmitpriv)) == NULL) + { + return; + } + + DBG_871X( "[%s] In\n", __FUNCTION__ ); + //update attribute + pattrib = &pmgntframe->attrib; + update_mgntframe_attrib(padapter, pattrib); + + _rtw_memset(pmgntframe->buf_addr, 0, WLANHDR_OFFSET + TXDESC_OFFSET); + + pframe = (u8 *)(pmgntframe->buf_addr) + TXDESC_OFFSET; + pwlanhdr = (struct rtw_ieee80211_hdr *)pframe; + + fctrl = &(pwlanhdr->frame_ctl); + *(fctrl) = 0; + + _rtw_memcpy(pwlanhdr->addr1, pdev_raddr, ETH_ALEN); + _rtw_memcpy(pwlanhdr->addr2, myid(&(padapter->eeprompriv)), ETH_ALEN); + _rtw_memcpy(pwlanhdr->addr3, pdev_raddr, ETH_ALEN); + + SetSeqNum(pwlanhdr, pmlmeext->mgnt_seq); + pmlmeext->mgnt_seq++; + SetFrameSubType(pframe, WIFI_ACTION); + + pframe += sizeof(struct rtw_ieee80211_hdr_3addr); + pattrib->pktlen = sizeof(struct rtw_ieee80211_hdr_3addr); + + pframe = rtw_set_fixed_ie(pframe, 1, &(category), &(pattrib->pktlen)); + pframe = rtw_set_fixed_ie(pframe, 1, &(action), &(pattrib->pktlen)); + pframe = rtw_set_fixed_ie(pframe, 4, (unsigned char *) &(p2poui), &(pattrib->pktlen)); + pframe = rtw_set_fixed_ie(pframe, 1, &(oui_subtype), &(pattrib->pktlen)); + pframe = rtw_set_fixed_ie(pframe, 1, &(dialogToken), &(pattrib->pktlen)); + + p2pielen = build_prov_disc_request_p2p_ie( pwdinfo, pframe, pssid, ussidlen, pdev_raddr ); + + pframe += p2pielen; + pattrib->pktlen += p2pielen; + + wpsielen = 0; + // WPS OUI + *(u32*) ( wpsie ) = cpu_to_be32( WPSOUI ); + wpsielen += 4; + + // WPS version + // Type: + *(u16*) ( wpsie + wpsielen ) = cpu_to_be16( WPS_ATTR_VER1 ); + wpsielen += 2; + + // Length: + *(u16*) ( wpsie + wpsielen ) = cpu_to_be16( 0x0001 ); + wpsielen += 2; + + // Value: + wpsie[wpsielen++] = WPS_VERSION_1; // Version 1.0 + + // Config Method + // Type: + *(u16*) ( wpsie + wpsielen ) = cpu_to_be16( WPS_ATTR_CONF_METHOD ); + wpsielen += 2; + + // Length: + *(u16*) ( wpsie + wpsielen ) = cpu_to_be16( 0x0002 ); + wpsielen += 2; + + // Value: + *(u16*) ( wpsie + wpsielen ) = cpu_to_be16( pwdinfo->tx_prov_disc_info.wps_config_method_request ); + wpsielen += 2; + + pframe = rtw_set_ie(pframe, _VENDOR_SPECIFIC_IE_, wpsielen, (unsigned char *) wpsie, &pattrib->pktlen ); + + +#ifdef CONFIG_WFD + wfdielen = build_provdisc_req_wfd_ie(pwdinfo, pframe); + pframe += wfdielen; + pattrib->pktlen += wfdielen; +#endif //CONFIG_WFD + + pattrib->last_txcmdsz = pattrib->pktlen; + + dump_mgntframe(padapter, pmgntframe); + + return; + +} + + +u8 is_matched_in_profilelist( u8* peermacaddr, struct profile_info* profileinfo ) +{ + u8 i, match_result = 0; + + DBG_871X( "[%s] peermac = %.2X %.2X %.2X %.2X %.2X %.2X\n", __FUNCTION__, + peermacaddr[0], peermacaddr[1],peermacaddr[2],peermacaddr[3],peermacaddr[4],peermacaddr[5]); + + for( i = 0; i < P2P_MAX_PERSISTENT_GROUP_NUM; i++, profileinfo++ ) + { + DBG_871X( "[%s] profileinfo_mac = %.2X %.2X %.2X %.2X %.2X %.2X\n", __FUNCTION__, + profileinfo->peermac[0], profileinfo->peermac[1],profileinfo->peermac[2],profileinfo->peermac[3],profileinfo->peermac[4],profileinfo->peermac[5]); + if ( _rtw_memcmp( peermacaddr, profileinfo->peermac, ETH_ALEN ) ) + { + match_result = 1; + DBG_871X( "[%s] Match!\n", __FUNCTION__ ); + break; + } + } + + return (match_result ); +} + +void issue_probersp_p2p(_adapter *padapter, unsigned char *da) +{ + struct xmit_frame *pmgntframe; + struct pkt_attrib *pattrib; + unsigned char *pframe; + struct rtw_ieee80211_hdr *pwlanhdr; + unsigned short *fctrl; + unsigned char *mac; + struct xmit_priv *pxmitpriv = &(padapter->xmitpriv); + struct mlme_ext_priv *pmlmeext = &(padapter->mlmeextpriv); + struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info); + struct mlme_priv *pmlmepriv = &(padapter->mlmepriv); + //WLAN_BSSID_EX *cur_network = &(pmlmeinfo->network); + u16 beacon_interval = 100; + u16 capInfo = 0; + struct wifidirect_info *pwdinfo = &(padapter->wdinfo); + u8 wpsie[255] = { 0x00 }; + u32 wpsielen = 0, p2pielen = 0; +#ifdef CONFIG_WFD + u32 wfdielen = 0; +#endif //CONFIG_WFD +#ifdef CONFIG_INTEL_WIDI + u8 zero_array_check[L2SDTA_SERVICE_VE_LEN] = { 0x00 }; +#endif //CONFIG_INTEL_WIDI + + //DBG_871X("%s\n", __FUNCTION__); + + if ((pmgntframe = alloc_mgtxmitframe(pxmitpriv)) == NULL) + { + return; + } + + //update attribute + pattrib = &pmgntframe->attrib; + update_mgntframe_attrib(padapter, pattrib); + + _rtw_memset(pmgntframe->buf_addr, 0, WLANHDR_OFFSET + TXDESC_OFFSET); + + pframe = (u8 *)(pmgntframe->buf_addr) + TXDESC_OFFSET; + pwlanhdr = (struct rtw_ieee80211_hdr *)pframe; + + mac = myid(&(padapter->eeprompriv)); + + fctrl = &(pwlanhdr->frame_ctl); + *(fctrl) = 0; + _rtw_memcpy(pwlanhdr->addr1, da, ETH_ALEN); + _rtw_memcpy(pwlanhdr->addr2, mac, ETH_ALEN); + + // Use the device address for BSSID field. + _rtw_memcpy(pwlanhdr->addr3, mac, ETH_ALEN); + + SetSeqNum(pwlanhdr, pmlmeext->mgnt_seq); + pmlmeext->mgnt_seq++; + SetFrameSubType(fctrl, WIFI_PROBERSP); + + pattrib->hdrlen = sizeof(struct rtw_ieee80211_hdr_3addr); + pattrib->pktlen = pattrib->hdrlen; + pframe += pattrib->hdrlen; + + //timestamp will be inserted by hardware + pframe += 8; + pattrib->pktlen += 8; + + // beacon interval: 2 bytes + _rtw_memcpy(pframe, (unsigned char *) &beacon_interval, 2); + pframe += 2; + pattrib->pktlen += 2; + + // capability info: 2 bytes + // ESS and IBSS bits must be 0 (defined in the 3.1.2.1.1 of WiFi Direct Spec) + capInfo |= cap_ShortPremble; + capInfo |= cap_ShortSlot; + + _rtw_memcpy(pframe, (unsigned char *) &capInfo, 2); + pframe += 2; + pattrib->pktlen += 2; + + + // SSID + pframe = rtw_set_ie(pframe, _SSID_IE_, 7, pwdinfo->p2p_wildcard_ssid, &pattrib->pktlen); + + // supported rates... + // Use the OFDM rate in the P2P probe response frame. ( 6(B), 9(B), 12, 18, 24, 36, 48, 54 ) + pframe = rtw_set_ie(pframe, _SUPPORTEDRATES_IE_, 8, pwdinfo->support_rate, &pattrib->pktlen); + + // DS parameter set + pframe = rtw_set_ie(pframe, _DSSET_IE_, 1, (unsigned char *)&pwdinfo->listen_channel, &pattrib->pktlen); + +#ifdef CONFIG_IOCTL_CFG80211 + if(wdev_to_priv(padapter->rtw_wdev)->p2p_enabled && pwdinfo->driver_interface == DRIVER_CFG80211 ) + { + if( pmlmepriv->wps_probe_resp_ie != NULL && pmlmepriv->p2p_probe_resp_ie != NULL ) + { + //WPS IE + _rtw_memcpy(pframe, pmlmepriv->wps_probe_resp_ie, pmlmepriv->wps_probe_resp_ie_len); + pattrib->pktlen += pmlmepriv->wps_probe_resp_ie_len; + pframe += pmlmepriv->wps_probe_resp_ie_len; + + //P2P IE + _rtw_memcpy(pframe, pmlmepriv->p2p_probe_resp_ie, pmlmepriv->p2p_probe_resp_ie_len); + pattrib->pktlen += pmlmepriv->p2p_probe_resp_ie_len; + pframe += pmlmepriv->p2p_probe_resp_ie_len; + } + } + else +#endif //CONFIG_IOCTL_CFG80211 + { + + // Todo: WPS IE + // Noted by Albert 20100907 + // According to the WPS specification, all the WPS attribute is presented by Big Endian. + + wpsielen = 0; + // WPS OUI + *(u32*) ( wpsie ) = cpu_to_be32( WPSOUI ); + wpsielen += 4; + + // WPS version + // Type: + *(u16*) ( wpsie + wpsielen ) = cpu_to_be16( WPS_ATTR_VER1 ); + wpsielen += 2; + + // Length: + *(u16*) ( wpsie + wpsielen ) = cpu_to_be16( 0x0001 ); + wpsielen += 2; + + // Value: + wpsie[wpsielen++] = WPS_VERSION_1; // Version 1.0 + +#ifdef CONFIG_INTEL_WIDI + // Commented by Kurt + // Appended WiDi info. only if we did issued_probereq_widi(), and then we saved ven. ext. in pmlmepriv->sa_ext. + if( _rtw_memcmp(pmlmepriv->sa_ext, zero_array_check, L2SDTA_SERVICE_VE_LEN) == _FALSE + || pmlmepriv->num_p2p_sdt != 0 ) + { + //Sec dev type + *(u16*) ( wpsie + wpsielen ) = cpu_to_be16( WPS_ATTR_SEC_DEV_TYPE_LIST ); + wpsielen += 2; + + // Length: + *(u16*) ( wpsie + wpsielen ) = cpu_to_be16( 0x0008 ); + wpsielen += 2; + + // Value: + // Category ID + *(u16*) ( wpsie + wpsielen ) = cpu_to_be16( WPS_PDT_CID_DISPLAYS ); + wpsielen += 2; + + // OUI + *(u32*) ( wpsie + wpsielen ) = cpu_to_be32( INTEL_DEV_TYPE_OUI ); + wpsielen += 4; + + *(u16*) ( wpsie + wpsielen ) = cpu_to_be16( WPS_PDT_SCID_WIDI_CONSUMER_SINK ); + wpsielen += 2; + + if( _rtw_memcmp(pmlmepriv->sa_ext, zero_array_check, L2SDTA_SERVICE_VE_LEN) == _FALSE ) + { + // Vendor Extension + _rtw_memcpy( wpsie + wpsielen, pmlmepriv->sa_ext, L2SDTA_SERVICE_VE_LEN ); + wpsielen += L2SDTA_SERVICE_VE_LEN; + } + } +#endif //CONFIG_INTEL_WIDI + + // WiFi Simple Config State + // Type: + *(u16*) ( wpsie + wpsielen ) = cpu_to_be16( WPS_ATTR_SIMPLE_CONF_STATE ); + wpsielen += 2; + + // Length: + *(u16*) ( wpsie + wpsielen ) = cpu_to_be16( 0x0001 ); + wpsielen += 2; + + // Value: + wpsie[wpsielen++] = WPS_WSC_STATE_NOT_CONFIG; // Not Configured. + + // Response Type + // Type: + *(u16*) ( wpsie + wpsielen ) = cpu_to_be16( WPS_ATTR_RESP_TYPE ); + wpsielen += 2; + + // Length: + *(u16*) ( wpsie + wpsielen ) = cpu_to_be16( 0x0001 ); + wpsielen += 2; + + // Value: + wpsie[wpsielen++] = WPS_RESPONSE_TYPE_8021X; + + // UUID-E + // Type: + *(u16*) ( wpsie + wpsielen ) = cpu_to_be16( WPS_ATTR_UUID_E ); + wpsielen += 2; + + // Length: + *(u16*) ( wpsie + wpsielen ) = cpu_to_be16( 0x0010 ); + wpsielen += 2; + + // Value: + if (pwdinfo->external_uuid == 0) { + _rtw_memset( wpsie + wpsielen, 0x0, 16 ); + _rtw_memcpy( wpsie + wpsielen, myid( &padapter->eeprompriv ), ETH_ALEN ); + } else { + _rtw_memcpy( wpsie + wpsielen, pwdinfo->uuid, 0x10 ); + } + wpsielen += 0x10; + + // Manufacturer + // Type: + *(u16*) ( wpsie + wpsielen ) = cpu_to_be16( WPS_ATTR_MANUFACTURER ); + wpsielen += 2; + + // Length: + *(u16*) ( wpsie + wpsielen ) = cpu_to_be16( 0x0007 ); + wpsielen += 2; + + // Value: + _rtw_memcpy( wpsie + wpsielen, "Realtek", 7 ); + wpsielen += 7; + + // Model Name + // Type: + *(u16*) ( wpsie + wpsielen ) = cpu_to_be16( WPS_ATTR_MODEL_NAME ); + wpsielen += 2; + + // Length: + *(u16*) ( wpsie + wpsielen ) = cpu_to_be16( 0x0006 ); + wpsielen += 2; + + // Value: + _rtw_memcpy( wpsie + wpsielen, "8192CU", 6 ); + wpsielen += 6; + + // Model Number + // Type: + *(u16*) ( wpsie + wpsielen ) = cpu_to_be16( WPS_ATTR_MODEL_NUMBER ); + wpsielen += 2; + + // Length: + *(u16*) ( wpsie + wpsielen ) = cpu_to_be16( 0x0001 ); + wpsielen += 2; + + // Value: + wpsie[ wpsielen++ ] = 0x31; // character 1 + + // Serial Number + // Type: + *(u16*) ( wpsie + wpsielen ) = cpu_to_be16( WPS_ATTR_SERIAL_NUMBER ); + wpsielen += 2; + + // Length: + *(u16*) ( wpsie + wpsielen ) = cpu_to_be16( ETH_ALEN ); + wpsielen += 2; + + // Value: + _rtw_memcpy( wpsie + wpsielen, "123456" , ETH_ALEN ); + wpsielen += ETH_ALEN; + + // Primary Device Type + // Type: + *(u16*) ( wpsie + wpsielen ) = cpu_to_be16( WPS_ATTR_PRIMARY_DEV_TYPE ); + wpsielen += 2; + + // Length: + *(u16*) ( wpsie + wpsielen ) = cpu_to_be16( 0x0008 ); + wpsielen += 2; + + // Value: + // Category ID + *(u16*) ( wpsie + wpsielen ) = cpu_to_be16( WPS_PDT_CID_RTK_WIDI ); + wpsielen += 2; + + // OUI + *(u32*) ( wpsie + wpsielen ) = cpu_to_be32( WPSOUI ); + wpsielen += 4; + + // Sub Category ID + *(u16*) ( wpsie + wpsielen ) = cpu_to_be16( WPS_PDT_SCID_RTK_DMP ); + wpsielen += 2; + + // Device Name + // Type: + *(u16*) ( wpsie + wpsielen ) = cpu_to_be16( WPS_ATTR_DEVICE_NAME ); + wpsielen += 2; + + // Length: + *(u16*) ( wpsie + wpsielen ) = cpu_to_be16( pwdinfo->device_name_len ); + wpsielen += 2; + + // Value: + _rtw_memcpy( wpsie + wpsielen, pwdinfo->device_name, pwdinfo->device_name_len ); + wpsielen += pwdinfo->device_name_len; + + // Config Method + // Type: + *(u16*) ( wpsie + wpsielen ) = cpu_to_be16( WPS_ATTR_CONF_METHOD ); + wpsielen += 2; + + // Length: + *(u16*) ( wpsie + wpsielen ) = cpu_to_be16( 0x0002 ); + wpsielen += 2; + + // Value: + *(u16*) ( wpsie + wpsielen ) = cpu_to_be16( pwdinfo->supported_wps_cm ); + wpsielen += 2; + + + pframe = rtw_set_ie(pframe, _VENDOR_SPECIFIC_IE_, wpsielen, (unsigned char *) wpsie, &pattrib->pktlen ); + + + p2pielen = build_probe_resp_p2p_ie(pwdinfo, pframe); + pframe += p2pielen; + pattrib->pktlen += p2pielen; + } + +#ifdef CONFIG_WFD +#ifdef CONFIG_IOCTL_CFG80211 + if ( _TRUE == pwdinfo->wfd_info->wfd_enable ) +#endif //CONFIG_IOCTL_CFG80211 + { + wfdielen = build_probe_resp_wfd_ie(pwdinfo, pframe, 0); + pframe += wfdielen; + pattrib->pktlen += wfdielen; + } +#ifdef CONFIG_IOCTL_CFG80211 + else if (pmlmepriv->wfd_probe_resp_ie != NULL && pmlmepriv->wfd_probe_resp_ie_len>0) + { + //WFD IE + _rtw_memcpy(pframe, pmlmepriv->wfd_probe_resp_ie, pmlmepriv->wfd_probe_resp_ie_len); + pattrib->pktlen += pmlmepriv->wfd_probe_resp_ie_len; + pframe += pmlmepriv->wfd_probe_resp_ie_len; + } +#endif //CONFIG_IOCTL_CFG80211 +#endif //CONFIG_WFD + + pattrib->last_txcmdsz = pattrib->pktlen; + + + dump_mgntframe(padapter, pmgntframe); + + return; + +} + +int _issue_probereq_p2p(_adapter *padapter, u8 *da, int wait_ack) +{ + int ret = _FAIL; + struct xmit_frame *pmgntframe; + struct pkt_attrib *pattrib; + unsigned char *pframe; + struct rtw_ieee80211_hdr *pwlanhdr; + unsigned short *fctrl; + unsigned char *mac; + unsigned char bssrate[NumRates]; + struct xmit_priv *pxmitpriv = &(padapter->xmitpriv); + struct mlme_ext_priv *pmlmeext = &(padapter->mlmeextpriv); + struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info); + int bssrate_len = 0; + u8 bc_addr[] = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff}; + struct wifidirect_info *pwdinfo = &(padapter->wdinfo); + u8 wpsie[255] = { 0x00 }, p2pie[ 255 ] = { 0x00 }; + u16 wpsielen = 0, p2pielen = 0; +#ifdef CONFIG_WFD + u32 wfdielen = 0; +#endif //CONFIG_WFD + + struct mlme_priv *pmlmepriv = &(padapter->mlmepriv); + + + if ((pmgntframe = alloc_mgtxmitframe(pxmitpriv)) == NULL) + { + goto exit; + } + + //update attribute + pattrib = &pmgntframe->attrib; + update_mgntframe_attrib(padapter, pattrib); + + + _rtw_memset(pmgntframe->buf_addr, 0, WLANHDR_OFFSET + TXDESC_OFFSET); + + pframe = (u8 *)(pmgntframe->buf_addr) + TXDESC_OFFSET; + pwlanhdr = (struct rtw_ieee80211_hdr *)pframe; + + mac = myid(&(padapter->eeprompriv)); + + fctrl = &(pwlanhdr->frame_ctl); + *(fctrl) = 0; + + if (da) { + _rtw_memcpy(pwlanhdr->addr1, da, ETH_ALEN); + _rtw_memcpy(pwlanhdr->addr3, da, ETH_ALEN); + } else { + if ( ( pwdinfo->p2p_info.scan_op_ch_only ) || ( pwdinfo->rx_invitereq_info.scan_op_ch_only ) ) + { + // This two flags will be set when this is only the P2P client mode. + _rtw_memcpy(pwlanhdr->addr1, pwdinfo->p2p_peer_interface_addr, ETH_ALEN); + _rtw_memcpy(pwlanhdr->addr3, pwdinfo->p2p_peer_interface_addr, ETH_ALEN); + } + else + { + // broadcast probe request frame + _rtw_memcpy(pwlanhdr->addr1, bc_addr, ETH_ALEN); + _rtw_memcpy(pwlanhdr->addr3, bc_addr, ETH_ALEN); + } + } + _rtw_memcpy(pwlanhdr->addr2, mac, ETH_ALEN); + + SetSeqNum(pwlanhdr, pmlmeext->mgnt_seq); + pmlmeext->mgnt_seq++; + SetFrameSubType(pframe, WIFI_PROBEREQ); + + pframe += sizeof (struct rtw_ieee80211_hdr_3addr); + pattrib->pktlen = sizeof (struct rtw_ieee80211_hdr_3addr); + + if(rtw_p2p_chk_state(pwdinfo, P2P_STATE_TX_PROVISION_DIS_REQ)) + { + pframe = rtw_set_ie(pframe, _SSID_IE_, pwdinfo->tx_prov_disc_info.ssid.SsidLength, pwdinfo->tx_prov_disc_info.ssid.Ssid, &(pattrib->pktlen)); + } + else + { + pframe = rtw_set_ie(pframe, _SSID_IE_, P2P_WILDCARD_SSID_LEN, pwdinfo->p2p_wildcard_ssid, &(pattrib->pktlen)); + } + // Use the OFDM rate in the P2P probe request frame. ( 6(B), 9(B), 12(B), 24(B), 36, 48, 54 ) + pframe = rtw_set_ie(pframe, _SUPPORTEDRATES_IE_, 8, pwdinfo->support_rate, &pattrib->pktlen); + +#ifdef CONFIG_IOCTL_CFG80211 + if(wdev_to_priv(padapter->rtw_wdev)->p2p_enabled && pwdinfo->driver_interface == DRIVER_CFG80211 ) + { + if( pmlmepriv->wps_probe_req_ie != NULL && pmlmepriv->p2p_probe_req_ie != NULL ) + { + //WPS IE + _rtw_memcpy(pframe, pmlmepriv->wps_probe_req_ie, pmlmepriv->wps_probe_req_ie_len); + pattrib->pktlen += pmlmepriv->wps_probe_req_ie_len; + pframe += pmlmepriv->wps_probe_req_ie_len; + + //P2P IE + _rtw_memcpy(pframe, pmlmepriv->p2p_probe_req_ie, pmlmepriv->p2p_probe_req_ie_len); + pattrib->pktlen += pmlmepriv->p2p_probe_req_ie_len; + pframe += pmlmepriv->p2p_probe_req_ie_len; + } + } + else +#endif //CONFIG_IOCTL_CFG80211 + { + + // WPS IE + // Noted by Albert 20110221 + // According to the WPS specification, all the WPS attribute is presented by Big Endian. + + wpsielen = 0; + // WPS OUI + *(u32*) ( wpsie ) = cpu_to_be32( WPSOUI ); + wpsielen += 4; + + // WPS version + // Type: + *(u16*) ( wpsie + wpsielen ) = cpu_to_be16( WPS_ATTR_VER1 ); + wpsielen += 2; + + // Length: + *(u16*) ( wpsie + wpsielen ) = cpu_to_be16( 0x0001 ); + wpsielen += 2; + + // Value: + wpsie[wpsielen++] = WPS_VERSION_1; // Version 1.0 + + if( pmlmepriv->wps_probe_req_ie == NULL ) + { + // UUID-E + // Type: + *(u16*) ( wpsie + wpsielen ) = cpu_to_be16( WPS_ATTR_UUID_E ); + wpsielen += 2; + + // Length: + *(u16*) ( wpsie + wpsielen ) = cpu_to_be16( 0x0010 ); + wpsielen += 2; + + // Value: + if (pwdinfo->external_uuid == 0) { + _rtw_memset( wpsie + wpsielen, 0x0, 16 ); + _rtw_memcpy( wpsie + wpsielen, myid( &padapter->eeprompriv ), ETH_ALEN ); + } else { + _rtw_memcpy( wpsie + wpsielen, pwdinfo->uuid, 0x10 ); + } + wpsielen += 0x10; + + // Config Method + // Type: + *(u16*) ( wpsie + wpsielen ) = cpu_to_be16( WPS_ATTR_CONF_METHOD ); + wpsielen += 2; + + // Length: + *(u16*) ( wpsie + wpsielen ) = cpu_to_be16( 0x0002 ); + wpsielen += 2; + + // Value: + *(u16*) ( wpsie + wpsielen ) = cpu_to_be16( pwdinfo->supported_wps_cm ); + wpsielen += 2; + } + + // Device Name + // Type: + *(u16*) ( wpsie + wpsielen ) = cpu_to_be16( WPS_ATTR_DEVICE_NAME ); + wpsielen += 2; + + // Length: + *(u16*) ( wpsie + wpsielen ) = cpu_to_be16( pwdinfo->device_name_len ); + wpsielen += 2; + + // Value: + _rtw_memcpy( wpsie + wpsielen, pwdinfo->device_name, pwdinfo->device_name_len ); + wpsielen += pwdinfo->device_name_len; + + // Primary Device Type + // Type: + *(u16*) ( wpsie + wpsielen ) = cpu_to_be16( WPS_ATTR_PRIMARY_DEV_TYPE ); + wpsielen += 2; + + // Length: + *(u16*) ( wpsie + wpsielen ) = cpu_to_be16( 0x0008 ); + wpsielen += 2; + + // Value: + // Category ID + *(u16*) ( wpsie + wpsielen ) = cpu_to_be16( WPS_PDT_CID_MULIT_MEDIA ); + wpsielen += 2; + + // OUI + *(u32*) ( wpsie + wpsielen ) = cpu_to_be32( WPSOUI ); + wpsielen += 4; + + // Sub Category ID + *(u16*) ( wpsie + wpsielen ) = cpu_to_be16( WPS_PDT_SCID_MEDIA_SERVER ); + wpsielen += 2; + + // Device Password ID + // Type: + *(u16*) ( wpsie + wpsielen ) = cpu_to_be16( WPS_ATTR_DEVICE_PWID ); + wpsielen += 2; + + // Length: + *(u16*) ( wpsie + wpsielen ) = cpu_to_be16( 0x0002 ); + wpsielen += 2; + + // Value: + *(u16*) ( wpsie + wpsielen ) = cpu_to_be16( WPS_DPID_REGISTRAR_SPEC ); // Registrar-specified + wpsielen += 2; + + pframe = rtw_set_ie(pframe, _VENDOR_SPECIFIC_IE_, wpsielen, (unsigned char *) wpsie, &pattrib->pktlen ); + + // P2P OUI + p2pielen = 0; + p2pie[ p2pielen++ ] = 0x50; + p2pie[ p2pielen++ ] = 0x6F; + p2pie[ p2pielen++ ] = 0x9A; + p2pie[ p2pielen++ ] = 0x09; // WFA P2P v1.0 + + // Commented by Albert 20110221 + // According to the P2P Specification, the probe request frame should contain 5 P2P attributes + // 1. P2P Capability + // 2. P2P Device ID if this probe request wants to find the specific P2P device + // 3. Listen Channel + // 4. Extended Listen Timing + // 5. Operating Channel if this WiFi is working as the group owner now + + // P2P Capability + // Type: + p2pie[ p2pielen++ ] = P2P_ATTR_CAPABILITY; + + // Length: + *(u16*) ( p2pie + p2pielen ) = cpu_to_le16( 0x0002 ); + p2pielen += 2; + + // Value: + // Device Capability Bitmap, 1 byte + p2pie[ p2pielen++ ] = DMP_P2P_DEVCAP_SUPPORT; + + // Group Capability Bitmap, 1 byte + if ( pwdinfo->persistent_supported ) + p2pie[ p2pielen++ ] = P2P_GRPCAP_PERSISTENT_GROUP | DMP_P2P_GRPCAP_SUPPORT; + else + p2pie[ p2pielen++ ] = DMP_P2P_GRPCAP_SUPPORT; + + // Listen Channel + // Type: + p2pie[ p2pielen++ ] = P2P_ATTR_LISTEN_CH; + + // Length: + *(u16*) ( p2pie + p2pielen ) = cpu_to_le16( 0x0005 ); + p2pielen += 2; + + // Value: + // Country String + p2pie[ p2pielen++ ] = 'X'; + p2pie[ p2pielen++ ] = 'X'; + + // The third byte should be set to 0x04. + // Described in the "Operating Channel Attribute" section. + p2pie[ p2pielen++ ] = 0x04; + + // Operating Class + p2pie[ p2pielen++ ] = 0x51; // Copy from SD7 + + // Channel Number + p2pie[ p2pielen++ ] = pwdinfo->listen_channel; // listen channel + + + // Extended Listen Timing + // Type: + p2pie[ p2pielen++ ] = P2P_ATTR_EX_LISTEN_TIMING; + + // Length: + *(u16*) ( p2pie + p2pielen ) = cpu_to_le16( 0x0004 ); + p2pielen += 2; + + // Value: + // Availability Period + *(u16*) ( p2pie + p2pielen ) = cpu_to_le16( 0xFFFF ); + p2pielen += 2; + + // Availability Interval + *(u16*) ( p2pie + p2pielen ) = cpu_to_le16( 0xFFFF ); + p2pielen += 2; + + if ( rtw_p2p_chk_role(pwdinfo, P2P_ROLE_GO) ) + { + // Operating Channel (if this WiFi is working as the group owner now) + // Type: + p2pie[ p2pielen++ ] = P2P_ATTR_OPERATING_CH; + + // Length: + *(u16*) ( p2pie + p2pielen ) = cpu_to_le16( 0x0005 ); + p2pielen += 2; + + // Value: + // Country String + p2pie[ p2pielen++ ] = 'X'; + p2pie[ p2pielen++ ] = 'X'; + + // The third byte should be set to 0x04. + // Described in the "Operating Channel Attribute" section. + p2pie[ p2pielen++ ] = 0x04; + + // Operating Class + p2pie[ p2pielen++ ] = 0x51; // Copy from SD7 + + // Channel Number + p2pie[ p2pielen++ ] = pwdinfo->operating_channel; // operating channel number + + } + + pframe = rtw_set_ie(pframe, _VENDOR_SPECIFIC_IE_, p2pielen, (unsigned char *) p2pie, &pattrib->pktlen ); + + if( pmlmepriv->wps_probe_req_ie != NULL ) + { + //WPS IE + _rtw_memcpy(pframe, pmlmepriv->wps_probe_req_ie, pmlmepriv->wps_probe_req_ie_len); + pattrib->pktlen += pmlmepriv->wps_probe_req_ie_len; + pframe += pmlmepriv->wps_probe_req_ie_len; + } + } + +#ifdef CONFIG_WFD +#ifdef CONFIG_IOCTL_CFG80211 + if ( _TRUE == pwdinfo->wfd_info->wfd_enable ) +#endif + { + wfdielen = build_probe_req_wfd_ie(pwdinfo, pframe); + pframe += wfdielen; + pattrib->pktlen += wfdielen; + } +#ifdef CONFIG_IOCTL_CFG80211 + else if (pmlmepriv->wfd_probe_req_ie != NULL && pmlmepriv->wfd_probe_req_ie_len>0) + { + //WFD IE + _rtw_memcpy(pframe, pmlmepriv->wfd_probe_req_ie, pmlmepriv->wfd_probe_req_ie_len); + pattrib->pktlen += pmlmepriv->wfd_probe_req_ie_len; + pframe += pmlmepriv->wfd_probe_req_ie_len; + } +#endif //CONFIG_IOCTL_CFG80211 +#endif //CONFIG_WFD + + pattrib->last_txcmdsz = pattrib->pktlen; + + RT_TRACE(_module_rtl871x_mlme_c_,_drv_info_,("issuing probe_req, tx_len=%d\n", pattrib->last_txcmdsz)); + + if (wait_ack) { + ret = dump_mgntframe_and_wait_ack(padapter, pmgntframe); + } else { + dump_mgntframe(padapter, pmgntframe); + ret = _SUCCESS; + } + +exit: + return ret; +} + +inline void issue_probereq_p2p(_adapter *adapter, u8 *da) +{ + _issue_probereq_p2p(adapter, da, _FALSE); +} + +int issue_probereq_p2p_ex(_adapter *adapter, u8 *da, int try_cnt, int wait_ms) +{ + int ret; + int i = 0; + u32 start = rtw_get_current_time(); + + do + { + ret = _issue_probereq_p2p(adapter, da, wait_ms>0?_TRUE:_FALSE); + + i++; + + if (adapter->bDriverStopped || adapter->bSurpriseRemoved) + break; + + if(i < try_cnt && wait_ms > 0 && ret==_FAIL) + rtw_msleep_os(wait_ms); + + }while((iu.hdr.adapter; + struct mlme_ext_priv *mlmeext = &(adapter->mlmeextpriv); + u8 *frame = recv_frame->u.hdr.rx_data; + u16 seq_ctrl = ( (recv_frame->u.hdr.attrib.seq_num&0xffff) << 4) | + (recv_frame->u.hdr.attrib.frag_num & 0xf); + + if (GetRetry(frame)) { + if (token >= 0) { + if ((seq_ctrl == mlmeext->action_public_rxseq) + && (token == mlmeext->action_public_dialog_token)) + { + DBG_871X(FUNC_ADPT_FMT" seq_ctrl=0x%x, rxseq=0x%x, token:%d\n", + FUNC_ADPT_ARG(adapter), seq_ctrl, mlmeext->action_public_rxseq, token); + return _FAIL; + } + } else { + if (seq_ctrl == mlmeext->action_public_rxseq) { + DBG_871X(FUNC_ADPT_FMT" seq_ctrl=0x%x, rxseq=0x%x\n", + FUNC_ADPT_ARG(adapter), seq_ctrl, mlmeext->action_public_rxseq); + return _FAIL; + } + } + } + + mlmeext->action_public_rxseq = seq_ctrl; + + if (token >= 0) + mlmeext->action_public_dialog_token = token; + + return _SUCCESS; +} + +unsigned int on_action_public_p2p(union recv_frame *precv_frame) +{ + _adapter *padapter = precv_frame->u.hdr.adapter; + u8 *pframe = precv_frame->u.hdr.rx_data; + uint len = precv_frame->u.hdr.len; + u8 *frame_body; + u8 dialogToken=0; +#ifdef CONFIG_P2P + u8 *p2p_ie; + u32 p2p_ielen, wps_ielen; + struct wifidirect_info *pwdinfo = &( padapter->wdinfo ); + u8 result = P2P_STATUS_SUCCESS; + u8 empty_addr[ETH_ALEN] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; + u8 *merged_p2pie = NULL; + u32 merged_p2p_ielen = 0; +#endif //CONFIG_P2P + + frame_body = (unsigned char *)(pframe + sizeof(struct rtw_ieee80211_hdr_3addr)); + + dialogToken = frame_body[7]; + + if (rtw_action_public_decache(precv_frame, dialogToken) == _FAIL) + return _FAIL; + +#ifdef CONFIG_P2P + _cancel_timer_ex( &pwdinfo->reset_ch_sitesurvey ); +#ifdef CONFIG_IOCTL_CFG80211 + if(wdev_to_priv(padapter->rtw_wdev)->p2p_enabled && pwdinfo->driver_interface == DRIVER_CFG80211) + { + rtw_cfg80211_rx_p2p_action_public(padapter, pframe, len); + } + else +#endif //CONFIG_IOCTL_CFG80211 + { + // Do nothing if the driver doesn't enable the P2P function. + if(rtw_p2p_chk_state(pwdinfo, P2P_STATE_NONE) || rtw_p2p_chk_state(pwdinfo, P2P_STATE_IDLE)) + return _SUCCESS; + + len -= sizeof(struct rtw_ieee80211_hdr_3addr); + + switch( frame_body[ 6 ] )//OUI Subtype + { + case P2P_GO_NEGO_REQ: + { + DBG_871X( "[%s] Got GO Nego Req Frame\n", __FUNCTION__); + _rtw_memset( &pwdinfo->groupid_info, 0x00, sizeof( struct group_id_info ) ); + + if(rtw_p2p_chk_state(pwdinfo, P2P_STATE_RX_PROVISION_DIS_REQ)) + { + rtw_p2p_set_state(pwdinfo, rtw_p2p_pre_state(pwdinfo)); + } + + if(rtw_p2p_chk_state(pwdinfo, P2P_STATE_GONEGO_FAIL)) + { + // Commented by Albert 20110526 + // In this case, this means the previous nego fail doesn't be reset yet. + _cancel_timer_ex( &pwdinfo->restore_p2p_state_timer ); + // Restore the previous p2p state + rtw_p2p_set_state(pwdinfo, rtw_p2p_pre_state(pwdinfo)); + DBG_871X( "[%s] Restore the previous p2p state to %d\n", __FUNCTION__, rtw_p2p_state(pwdinfo) ); + } +#ifdef CONFIG_CONCURRENT_MODE + if ( check_buddy_fwstate(padapter, _FW_LINKED ) ) + { + _cancel_timer_ex( &pwdinfo->ap_p2p_switch_timer ); + } +#endif // CONFIG_CONCURRENT_MODE + + // Commented by Kurt 20110902 + //Add if statement to avoid receiving duplicate prov disc req. such that pre_p2p_state would be covered. + if(!rtw_p2p_chk_state(pwdinfo, P2P_STATE_GONEGO_ING)) + rtw_p2p_set_pre_state(pwdinfo, rtw_p2p_state(pwdinfo)); + + // Commented by Kurt 20120113 + // Get peer_dev_addr here if peer doesn't issue prov_disc frame. + if( _rtw_memcmp(pwdinfo->rx_prov_disc_info.peerDevAddr, empty_addr, ETH_ALEN) ); + _rtw_memcpy(pwdinfo->rx_prov_disc_info.peerDevAddr, GetAddr2Ptr(pframe), ETH_ALEN); + + result = process_p2p_group_negotation_req( pwdinfo, frame_body, len ); + issue_p2p_GO_response( padapter, GetAddr2Ptr(pframe), frame_body, len, result ); +#ifdef CONFIG_INTEL_WIDI + if( (padapter->mlmepriv.widi_state == INTEL_WIDI_STATE_LISTEN) && (padapter->mlmepriv.widi_state != INTEL_WIDI_STATE_WFD_CONNECTION) ) + { + padapter->mlmepriv.widi_state = INTEL_WIDI_STATE_WFD_CONNECTION; + _cancel_timer_ex(&(padapter->mlmepriv.listen_timer)); + intel_widi_wk_cmd(padapter, INTEL_WIDI_LISTEN_STOP_WK, NULL); + } +#endif //CONFIG_INTEL_WIDI + + // Commented by Albert 20110718 + // No matter negotiating or negotiation failure, the driver should set up the restore P2P state timer. +#ifdef CONFIG_CONCURRENT_MODE + // Commented by Albert 20120107 + _set_timer( &pwdinfo->restore_p2p_state_timer, 3000 ); +#else // CONFIG_CONCURRENT_MODE + _set_timer( &pwdinfo->restore_p2p_state_timer, 5000 ); +#endif // CONFIG_CONCURRENT_MODE + break; + } + case P2P_GO_NEGO_RESP: + { + DBG_871X( "[%s] Got GO Nego Resp Frame\n", __FUNCTION__); + + if(rtw_p2p_chk_state(pwdinfo, P2P_STATE_GONEGO_ING)) + { + // Commented by Albert 20110425 + // The restore timer is enabled when issuing the nego request frame of rtw_p2p_connect function. + _cancel_timer_ex( &pwdinfo->restore_p2p_state_timer ); + pwdinfo->nego_req_info.benable = _FALSE; + result = process_p2p_group_negotation_resp( pwdinfo, frame_body, len); + issue_p2p_GO_confirm( pwdinfo->padapter, GetAddr2Ptr(pframe), result); + if ( P2P_STATUS_SUCCESS == result ) + { + if ( rtw_p2p_role(pwdinfo) == P2P_ROLE_CLIENT ) + { + pwdinfo->p2p_info.operation_ch[ 0 ] = pwdinfo->peer_operating_ch; + #ifdef P2P_OP_CHECK_SOCIAL_CH + pwdinfo->p2p_info.operation_ch[ 1 ] = 1; //Check whether GO is operating in channel 1; + pwdinfo->p2p_info.operation_ch[ 2 ] = 6; //Check whether GO is operating in channel 6; + pwdinfo->p2p_info.operation_ch[ 3 ] = 11; //Check whether GO is operating in channel 11; + #endif //P2P_OP_CHECK_SOCIAL_CH + pwdinfo->p2p_info.scan_op_ch_only = 1; + _set_timer( &pwdinfo->reset_ch_sitesurvey2, P2P_RESET_SCAN_CH ); + } + } + + // Reset the dialog token for group negotiation frames. + pwdinfo->negotiation_dialog_token = 1; + + if(rtw_p2p_chk_state(pwdinfo, P2P_STATE_GONEGO_FAIL)) + { + _set_timer( &pwdinfo->restore_p2p_state_timer, 5000 ); + } + } + else + { + DBG_871X( "[%s] Skipped GO Nego Resp Frame (p2p_state != P2P_STATE_GONEGO_ING)\n", __FUNCTION__); + } + + break; + } + case P2P_GO_NEGO_CONF: + { + DBG_871X( "[%s] Got GO Nego Confirm Frame\n", __FUNCTION__); + result = process_p2p_group_negotation_confirm( pwdinfo, frame_body, len); + if ( P2P_STATUS_SUCCESS == result ) + { + if ( rtw_p2p_role(pwdinfo) == P2P_ROLE_CLIENT ) + { + pwdinfo->p2p_info.operation_ch[ 0 ] = pwdinfo->peer_operating_ch; + #ifdef P2P_OP_CHECK_SOCIAL_CH + pwdinfo->p2p_info.operation_ch[ 1 ] = 1; //Check whether GO is operating in channel 1; + pwdinfo->p2p_info.operation_ch[ 2 ] = 6; //Check whether GO is operating in channel 6; + pwdinfo->p2p_info.operation_ch[ 3 ] = 11; //Check whether GO is operating in channel 11; + #endif //P2P_OP_CHECK_SOCIAL_CH + pwdinfo->p2p_info.scan_op_ch_only = 1; + _set_timer( &pwdinfo->reset_ch_sitesurvey2, P2P_RESET_SCAN_CH ); + } + } + break; + } + case P2P_INVIT_REQ: + { + // Added by Albert 2010/10/05 + // Received the P2P Invite Request frame. + + DBG_871X( "[%s] Got invite request frame!\n", __FUNCTION__ ); + if ( (p2p_ie=rtw_get_p2p_ie( frame_body + _PUBLIC_ACTION_IE_OFFSET_, len - _PUBLIC_ACTION_IE_OFFSET_, NULL, &p2p_ielen)) ) + { + // Parse the necessary information from the P2P Invitation Request frame. + // For example: The MAC address of sending this P2P Invitation Request frame. + u32 attr_contentlen = 0; + u8 status_code = P2P_STATUS_FAIL_INFO_UNAVAILABLE; + struct group_id_info group_id; + u8 invitation_flag = 0; + + merged_p2p_ielen = rtw_get_p2p_merged_ies_len(frame_body + _PUBLIC_ACTION_IE_OFFSET_, len - _PUBLIC_ACTION_IE_OFFSET_); + + merged_p2pie = rtw_malloc(merged_p2p_ielen); + if (merged_p2pie == NULL) + { + DBG_871X( "[%s] Malloc p2p ie fail\n", __FUNCTION__); + goto exit; + } + _rtw_memset(merged_p2pie, 0x00, merged_p2p_ielen); + + merged_p2p_ielen = rtw_p2p_merge_ies(frame_body + _PUBLIC_ACTION_IE_OFFSET_, len - _PUBLIC_ACTION_IE_OFFSET_, merged_p2pie); + + rtw_get_p2p_attr_content( merged_p2pie, merged_p2p_ielen, P2P_ATTR_INVITATION_FLAGS, &invitation_flag, &attr_contentlen); + if ( attr_contentlen ) + { + + rtw_get_p2p_attr_content( merged_p2pie, merged_p2p_ielen, P2P_ATTR_GROUP_BSSID, pwdinfo->p2p_peer_interface_addr, &attr_contentlen); + // Commented by Albert 20120510 + // Copy to the pwdinfo->p2p_peer_interface_addr. + // So that the WFD UI ( or Sigma ) can get the peer interface address by using the following command. + // #> iwpriv wlan0 p2p_get peer_ifa + // After having the peer interface address, the sigma can find the correct conf file for wpa_supplicant. + + if ( attr_contentlen ) + { + DBG_871X( "[%s] GO's BSSID = %.2X %.2X %.2X %.2X %.2X %.2X\n", __FUNCTION__, + pwdinfo->p2p_peer_interface_addr[0], pwdinfo->p2p_peer_interface_addr[1], + pwdinfo->p2p_peer_interface_addr[2], pwdinfo->p2p_peer_interface_addr[3], + pwdinfo->p2p_peer_interface_addr[4], pwdinfo->p2p_peer_interface_addr[5] ); + } + + if ( invitation_flag & P2P_INVITATION_FLAGS_PERSISTENT ) + { + // Re-invoke the persistent group. + + _rtw_memset( &group_id, 0x00, sizeof( struct group_id_info ) ); + rtw_get_p2p_attr_content( merged_p2pie, merged_p2p_ielen, P2P_ATTR_GROUP_ID, ( u8* ) &group_id, &attr_contentlen); + if ( attr_contentlen ) + { + if ( _rtw_memcmp( group_id.go_device_addr, myid( &padapter->eeprompriv ), ETH_ALEN ) ) + { + // The p2p device sending this p2p invitation request wants this Wi-Fi device to be the persistent GO. + rtw_p2p_set_state(pwdinfo, P2P_STATE_RECV_INVITE_REQ_GO ); + rtw_p2p_set_role( pwdinfo, P2P_ROLE_GO ); + status_code = P2P_STATUS_SUCCESS; + } + else + { + // The p2p device sending this p2p invitation request wants to be the persistent GO. + if ( is_matched_in_profilelist( pwdinfo->p2p_peer_interface_addr, &pwdinfo->profileinfo[ 0 ] ) ) + { + u8 operatingch_info[5] = { 0x00 }; + + if ( rtw_get_p2p_attr_content(merged_p2pie, merged_p2p_ielen, P2P_ATTR_OPERATING_CH, operatingch_info, &attr_contentlen) ) + { + if( rtw_ch_set_search_ch(padapter->mlmeextpriv.channel_set, (u32)operatingch_info[4] ) >= 0 ) + { + // The operating channel is acceptable for this device. + pwdinfo->rx_invitereq_info.operation_ch[0]= operatingch_info[4]; + #ifdef P2P_OP_CHECK_SOCIAL_CH + pwdinfo->rx_invitereq_info.operation_ch[1]= 1; //Check whether GO is operating in channel 1; + pwdinfo->rx_invitereq_info.operation_ch[2]= 6; //Check whether GO is operating in channel 6; + pwdinfo->rx_invitereq_info.operation_ch[3]= 11; //Check whether GO is operating in channel 11; + #endif //P2P_OP_CHECK_SOCIAL_CH + pwdinfo->rx_invitereq_info.scan_op_ch_only = 1; + _set_timer( &pwdinfo->reset_ch_sitesurvey, P2P_RESET_SCAN_CH ); + rtw_p2p_set_state(pwdinfo, P2P_STATE_RECV_INVITE_REQ_MATCH ); + rtw_p2p_set_role( pwdinfo, P2P_ROLE_CLIENT ); + status_code = P2P_STATUS_SUCCESS; + } + else + { + // The operating channel isn't supported by this device. + rtw_p2p_set_state(pwdinfo, P2P_STATE_RECV_INVITE_REQ_DISMATCH ); + rtw_p2p_set_role( pwdinfo, P2P_ROLE_DEVICE ); + status_code = P2P_STATUS_FAIL_NO_COMMON_CH; + _set_timer( &pwdinfo->restore_p2p_state_timer, 3000 ); + } + } + else + { + // Commented by Albert 20121130 + // Intel will use the different P2P IE to store the operating channel information + // Workaround for Intel WiDi 3.5 + rtw_p2p_set_state(pwdinfo, P2P_STATE_RECV_INVITE_REQ_MATCH ); + rtw_p2p_set_role( pwdinfo, P2P_ROLE_CLIENT ); + status_code = P2P_STATUS_SUCCESS; + } + } + else + { + rtw_p2p_set_state(pwdinfo, P2P_STATE_RECV_INVITE_REQ_DISMATCH ); + #ifdef CONFIG_INTEL_WIDI + _rtw_memcpy( pwdinfo->p2p_peer_device_addr, group_id.go_device_addr , ETH_ALEN ); + rtw_p2p_set_role( pwdinfo, P2P_ROLE_CLIENT ); + #endif //CONFIG_INTEL_WIDI + + status_code = P2P_STATUS_FAIL_UNKNOWN_P2PGROUP; + } + } + } + else + { + DBG_871X( "[%s] P2P Group ID Attribute NOT FOUND!\n", __FUNCTION__ ); + status_code = P2P_STATUS_FAIL_INFO_UNAVAILABLE; + } + } + else + { + // Received the invitation to join a P2P group. + + _rtw_memset( &group_id, 0x00, sizeof( struct group_id_info ) ); + rtw_get_p2p_attr_content( merged_p2pie, merged_p2p_ielen, P2P_ATTR_GROUP_ID, ( u8* ) &group_id, &attr_contentlen); + if ( attr_contentlen ) + { + if ( _rtw_memcmp( group_id.go_device_addr, myid( &padapter->eeprompriv ), ETH_ALEN ) ) + { + // In this case, the GO can't be myself. + rtw_p2p_set_state(pwdinfo, P2P_STATE_RECV_INVITE_REQ_DISMATCH ); + status_code = P2P_STATUS_FAIL_INFO_UNAVAILABLE; + } + else + { + // The p2p device sending this p2p invitation request wants to join an existing P2P group + // Commented by Albert 2012/06/28 + // In this case, this Wi-Fi device should use the iwpriv command to get the peer device address. + // The peer device address should be the destination address for the provisioning discovery request. + // Then, this Wi-Fi device should use the iwpriv command to get the peer interface address. + // The peer interface address should be the address for WPS mac address + _rtw_memcpy( pwdinfo->p2p_peer_device_addr, group_id.go_device_addr , ETH_ALEN ); + rtw_p2p_set_role( pwdinfo, P2P_ROLE_CLIENT ); + rtw_p2p_set_state(pwdinfo, P2P_STATE_RECV_INVITE_REQ_JOIN ); + status_code = P2P_STATUS_SUCCESS; + } + } + else + { + DBG_871X( "[%s] P2P Group ID Attribute NOT FOUND!\n", __FUNCTION__ ); + status_code = P2P_STATUS_FAIL_INFO_UNAVAILABLE; + } + } + } + else + { + DBG_871X( "[%s] P2P Invitation Flags Attribute NOT FOUND!\n", __FUNCTION__ ); + status_code = P2P_STATUS_FAIL_INFO_UNAVAILABLE; + } + + DBG_871X( "[%s] status_code = %d\n", __FUNCTION__, status_code ); + + pwdinfo->inviteresp_info.token = frame_body[ 7 ]; + issue_p2p_invitation_response( padapter, GetAddr2Ptr(pframe), pwdinfo->inviteresp_info.token, status_code ); + _set_timer( &pwdinfo->restore_p2p_state_timer, 3000 ); + } +#ifdef CONFIG_INTEL_WIDI + if( (padapter->mlmepriv.widi_state == INTEL_WIDI_STATE_LISTEN) && (padapter->mlmepriv.widi_state != INTEL_WIDI_STATE_WFD_CONNECTION) ) + { + padapter->mlmepriv.widi_state = INTEL_WIDI_STATE_WFD_CONNECTION; + _cancel_timer_ex(&(padapter->mlmepriv.listen_timer)); + intel_widi_wk_cmd(padapter, INTEL_WIDI_LISTEN_STOP_WK, NULL); + } +#endif //CONFIG_INTEL_WIDI + break; + } + case P2P_INVIT_RESP: + { + u8 attr_content = 0x00; + u32 attr_contentlen = 0; + + DBG_871X( "[%s] Got invite response frame!\n", __FUNCTION__ ); + _cancel_timer_ex( &pwdinfo->restore_p2p_state_timer ); + if ( (p2p_ie=rtw_get_p2p_ie( frame_body + _PUBLIC_ACTION_IE_OFFSET_, len - _PUBLIC_ACTION_IE_OFFSET_, NULL, &p2p_ielen)) ) + { + rtw_get_p2p_attr_content(p2p_ie, p2p_ielen, P2P_ATTR_STATUS, &attr_content, &attr_contentlen); + + if ( attr_contentlen == 1 ) + { + DBG_871X( "[%s] Status = %d\n", __FUNCTION__, attr_content ); + pwdinfo->invitereq_info.benable = _FALSE; + + if ( attr_content == P2P_STATUS_SUCCESS ) + { + if ( _rtw_memcmp( pwdinfo->invitereq_info.go_bssid, myid( &padapter->eeprompriv ), ETH_ALEN )) + { + rtw_p2p_set_role(pwdinfo, P2P_ROLE_GO ); + } + else + { + rtw_p2p_set_role(pwdinfo, P2P_ROLE_CLIENT); + } + rtw_p2p_set_state( pwdinfo, P2P_STATE_RX_INVITE_RESP_OK ); + } + else + { + rtw_p2p_set_role(pwdinfo, P2P_ROLE_DEVICE); + rtw_p2p_set_state( pwdinfo, P2P_STATE_RX_INVITE_RESP_FAIL ); + } + } + else + { + rtw_p2p_set_role(pwdinfo, P2P_ROLE_DEVICE); + rtw_p2p_set_state( pwdinfo, P2P_STATE_RX_INVITE_RESP_FAIL ); + } + } + else + { + rtw_p2p_set_role(pwdinfo, P2P_ROLE_DEVICE); + rtw_p2p_set_state( pwdinfo, P2P_STATE_RX_INVITE_RESP_FAIL ); + } + + if ( rtw_p2p_chk_state( pwdinfo, P2P_STATE_RX_INVITE_RESP_FAIL ) ) + { + _set_timer( &pwdinfo->restore_p2p_state_timer, 5000 ); + } + break; + } + case P2P_DEVDISC_REQ: + + process_p2p_devdisc_req(pwdinfo, pframe, len); + + break; + + case P2P_DEVDISC_RESP: + + process_p2p_devdisc_resp(pwdinfo, pframe, len); + + break; + + case P2P_PROVISION_DISC_REQ: + DBG_871X( "[%s] Got Provisioning Discovery Request Frame\n", __FUNCTION__ ); + process_p2p_provdisc_req(pwdinfo, pframe, len); + _rtw_memcpy(pwdinfo->rx_prov_disc_info.peerDevAddr, GetAddr2Ptr(pframe), ETH_ALEN); + + //20110902 Kurt + //Add the following statement to avoid receiving duplicate prov disc req. such that pre_p2p_state would be covered. + if(!rtw_p2p_chk_state(pwdinfo, P2P_STATE_RX_PROVISION_DIS_REQ)) + rtw_p2p_set_pre_state(pwdinfo, rtw_p2p_state(pwdinfo)); + + rtw_p2p_set_state(pwdinfo, P2P_STATE_RX_PROVISION_DIS_REQ); + _set_timer( &pwdinfo->restore_p2p_state_timer, P2P_PROVISION_TIMEOUT ); +#ifdef CONFIG_INTEL_WIDI + if( (padapter->mlmepriv.widi_state == INTEL_WIDI_STATE_LISTEN) && (padapter->mlmepriv.widi_state != INTEL_WIDI_STATE_WFD_CONNECTION) ) + { + padapter->mlmepriv.widi_state = INTEL_WIDI_STATE_WFD_CONNECTION; + _cancel_timer_ex(&(padapter->mlmepriv.listen_timer)); + intel_widi_wk_cmd(padapter, INTEL_WIDI_LISTEN_STOP_WK, NULL); + } +#endif //CONFIG_INTEL_WIDI + break; + + case P2P_PROVISION_DISC_RESP: + // Commented by Albert 20110707 + // Should we check the pwdinfo->tx_prov_disc_info.bsent flag here?? + DBG_871X( "[%s] Got Provisioning Discovery Response Frame\n", __FUNCTION__ ); + // Commented by Albert 20110426 + // The restore timer is enabled when issuing the provisioing request frame in rtw_p2p_prov_disc function. + _cancel_timer_ex( &pwdinfo->restore_p2p_state_timer ); + rtw_p2p_set_state(pwdinfo, P2P_STATE_RX_PROVISION_DIS_RSP); + process_p2p_provdisc_resp(pwdinfo, pframe); + _set_timer( &pwdinfo->restore_p2p_state_timer, P2P_PROVISION_TIMEOUT ); + break; + + } + } +#endif //CONFIG_P2P + +exit: + + if(merged_p2pie) + { + rtw_mfree(merged_p2pie, merged_p2p_ielen); + } + + return _SUCCESS; +} + +unsigned int on_action_public_vendor(union recv_frame *precv_frame) +{ + unsigned int ret = _FAIL; + u8 *pframe = precv_frame->u.hdr.rx_data; + uint frame_len = precv_frame->u.hdr.len; + u8 *frame_body = pframe + sizeof(struct rtw_ieee80211_hdr_3addr); + + if (_rtw_memcmp(frame_body + 2, P2P_OUI, 4) == _TRUE) { + ret = on_action_public_p2p(precv_frame); + } + + return ret; +} + +unsigned int on_action_public_default(union recv_frame *precv_frame, u8 action) +{ + unsigned int ret = _FAIL; + u8 *pframe = precv_frame->u.hdr.rx_data; + uint frame_len = precv_frame->u.hdr.len; + u8 *frame_body = pframe + sizeof(struct rtw_ieee80211_hdr_3addr); + u8 token; + _adapter *adapter = precv_frame->u.hdr.adapter; + int cnt = 0; + char msg[64]; + + token = frame_body[2]; + + if (rtw_action_public_decache(precv_frame, token) == _FAIL) + goto exit; + + #ifdef CONFIG_IOCTL_CFG80211 + cnt += sprintf((msg+cnt), "%s(token:%u)", action_public_str(action), token); + rtw_cfg80211_rx_action(adapter, pframe, frame_len, msg); + #endif + + ret = _SUCCESS; + +exit: + return ret; +} + +unsigned int on_action_public(_adapter *padapter, union recv_frame *precv_frame) +{ + unsigned int ret = _FAIL; + u8 *pframe = precv_frame->u.hdr.rx_data; + uint frame_len = precv_frame->u.hdr.len; + u8 *frame_body = pframe + sizeof(struct rtw_ieee80211_hdr_3addr); + u8 category, action; + + /* check RA matches or not */ + if (!_rtw_memcmp(myid(&(padapter->eeprompriv)), GetAddr1Ptr(pframe), ETH_ALEN)) + goto exit; + + category = frame_body[0]; + if(category != RTW_WLAN_CATEGORY_PUBLIC) + goto exit; + + action = frame_body[1]; + switch (action) { + case ACT_PUBLIC_VENDOR: + ret = on_action_public_vendor(precv_frame); + break; + default: + ret = on_action_public_default(precv_frame, action); + break; + } + +exit: + return ret; +} + +unsigned int OnAction_ht(_adapter *padapter, union recv_frame *precv_frame) +{ + return _SUCCESS; +} + +#ifdef CONFIG_IEEE80211W +unsigned int OnAction_sa_query(_adapter *padapter, union recv_frame *precv_frame) +{ + u8 *pframe = precv_frame->u.hdr.rx_data; + struct rx_pkt_attrib *pattrib = &precv_frame->u.hdr.attrib; + struct mlme_ext_priv *pmlmeext = &(padapter->mlmeextpriv); + unsigned short tid; + //Baron + + DBG_871X("OnAction_sa_query\n"); + + switch (pframe[WLAN_HDR_A3_LEN+1]) + { + case 0: //SA Query req + _rtw_memcpy(&tid, &pframe[WLAN_HDR_A3_LEN+2], sizeof(unsigned short)); + DBG_871X("OnAction_sa_query request,action=%d, tid=%04x\n", pframe[WLAN_HDR_A3_LEN+1], tid); + issue_action_SA_Query(padapter, GetAddr2Ptr(pframe), 1, tid); + break; + + case 1: //SA Query rsp + _cancel_timer_ex(&pmlmeext->sa_query_timer); + DBG_871X("OnAction_sa_query response,action=%d, tid=%04x, cancel timer\n", pframe[WLAN_HDR_A3_LEN+1], pframe[WLAN_HDR_A3_LEN+2]); + break; + default: + break; + } + if(0) + { + int pp; + printk("pattrib->pktlen = %d =>", pattrib->pkt_len); + for(pp=0;pp< pattrib->pkt_len; pp++) + printk(" %02x ", pframe[pp]); + printk("\n"); + } + + return _SUCCESS; +} +#endif //CONFIG_IEEE80211W + +unsigned int OnAction_wmm(_adapter *padapter, union recv_frame *precv_frame) +{ + return _SUCCESS; +} + +unsigned int OnAction_p2p(_adapter *padapter, union recv_frame *precv_frame) +{ +#ifdef CONFIG_P2P + u8 *frame_body; + u8 category, OUI_Subtype, dialogToken=0; + u8 *pframe = precv_frame->u.hdr.rx_data; + uint len = precv_frame->u.hdr.len; + struct wifidirect_info *pwdinfo = &( padapter->wdinfo ); + + + DBG_871X("%s\n", __FUNCTION__); + + //check RA matches or not + if (!_rtw_memcmp(myid(&(padapter->eeprompriv)), GetAddr1Ptr(pframe), ETH_ALEN))//for if1, sta/ap mode + return _SUCCESS; + + frame_body = (unsigned char *)(pframe + sizeof(struct rtw_ieee80211_hdr_3addr)); + + category = frame_body[0]; + if(category != RTW_WLAN_CATEGORY_P2P) + return _SUCCESS; + + if ( cpu_to_be32( *( ( u32* ) ( frame_body + 1 ) ) ) != P2POUI ) + return _SUCCESS; + +#ifdef CONFIG_IOCTL_CFG80211 + if(wdev_to_priv(padapter->rtw_wdev)->p2p_enabled && pwdinfo->driver_interface == DRIVER_CFG80211 ) + { + rtw_cfg80211_rx_action_p2p(padapter, pframe, len); + return _SUCCESS; + } + else +#endif //CONFIG_IOCTL_CFG80211 + { + len -= sizeof(struct rtw_ieee80211_hdr_3addr); + OUI_Subtype = frame_body[5]; + dialogToken = frame_body[6]; + + switch(OUI_Subtype) + { + case P2P_NOTICE_OF_ABSENCE: + + break; + + case P2P_PRESENCE_REQUEST: + + process_p2p_presence_req(pwdinfo, pframe, len); + + break; + + case P2P_PRESENCE_RESPONSE: + + break; + + case P2P_GO_DISC_REQUEST: + + break; + + default: + break; + + } + } +#endif //CONFIG_P2P + + return _SUCCESS; + +} + +unsigned int OnAction(_adapter *padapter, union recv_frame *precv_frame) +{ + int i; + unsigned char category; + struct action_handler *ptable; + unsigned char *frame_body; + u8 *pframe = precv_frame->u.hdr.rx_data; + + frame_body = (unsigned char *)(pframe + sizeof(struct rtw_ieee80211_hdr_3addr)); + + category = frame_body[0]; + + for(i = 0; i < sizeof(OnAction_tbl)/sizeof(struct action_handler); i++) + { + ptable = &OnAction_tbl[i]; + + if(category == ptable->num) + ptable->func(padapter, precv_frame); + + } + + return _SUCCESS; + +} + +unsigned int DoReserved(_adapter *padapter, union recv_frame *precv_frame) +{ + + //DBG_871X("rcvd mgt frame(%x, %x)\n", (GetFrameSubType(pframe) >> 4), *(unsigned int *)GetAddr1Ptr(pframe)); + return _SUCCESS; +} + +struct xmit_frame *_alloc_mgtxmitframe(struct xmit_priv *pxmitpriv, bool once) +{ + struct xmit_frame *pmgntframe; + struct xmit_buf *pxmitbuf; + + if (once) + pmgntframe = rtw_alloc_xmitframe_once(pxmitpriv); + else + pmgntframe = rtw_alloc_xmitframe_ext(pxmitpriv); + + if (pmgntframe == NULL) { + DBG_871X(FUNC_ADPT_FMT" alloc xmitframe fail, once:%d\n", FUNC_ADPT_ARG(pxmitpriv->adapter), once); + goto exit; + } + + if ((pxmitbuf = rtw_alloc_xmitbuf_ext(pxmitpriv)) == NULL) { + DBG_871X(FUNC_ADPT_FMT" alloc xmitbuf fail\n", FUNC_ADPT_ARG(pxmitpriv->adapter)); + rtw_free_xmitframe(pxmitpriv, pmgntframe); + pmgntframe = NULL; + goto exit; + } + + pmgntframe->frame_tag = MGNT_FRAMETAG; + pmgntframe->pxmitbuf = pxmitbuf; + pmgntframe->buf_addr = pxmitbuf->pbuf; + pxmitbuf->priv_data = pmgntframe; + +exit: + return pmgntframe; + +} + +inline struct xmit_frame *alloc_mgtxmitframe(struct xmit_priv *pxmitpriv) +{ + return _alloc_mgtxmitframe(pxmitpriv, _FALSE); +} + +inline struct xmit_frame *alloc_mgtxmitframe_once(struct xmit_priv *pxmitpriv) +{ + return _alloc_mgtxmitframe(pxmitpriv, _TRUE); +} + + +/**************************************************************************** + +Following are some TX fuctions for WiFi MLME + +*****************************************************************************/ + +void update_mgnt_tx_rate(_adapter *padapter, u8 rate) +{ + struct mlme_ext_priv *pmlmeext = &(padapter->mlmeextpriv); + + pmlmeext->tx_rate = rate; + + //DBG_871X("%s(): rate = %x\n",__FUNCTION__, rate); +} + +void update_mgntframe_attrib(_adapter *padapter, struct pkt_attrib *pattrib) +{ + struct mlme_ext_priv *pmlmeext = &(padapter->mlmeextpriv); + + _rtw_memset((u8 *)(pattrib), 0, sizeof(struct pkt_attrib)); + + pattrib->hdrlen = 24; + pattrib->nr_frags = 1; + pattrib->priority = 7; + pattrib->mac_id = 0; + pattrib->qsel = 0x12; + + pattrib->pktlen = 0; + + if(pmlmeext->cur_wireless_mode & WIRELESS_11B) + pattrib->raid = 6;//b mode + else + pattrib->raid = 5;//a/g mode + + pattrib->encrypt = _NO_PRIVACY_; + pattrib->bswenc = _FALSE; + + pattrib->qos_en = _FALSE; + pattrib->ht_en = _FALSE; + pattrib->bwmode = HT_CHANNEL_WIDTH_20; + pattrib->ch_offset = HAL_PRIME_CHNL_OFFSET_DONT_CARE; + pattrib->sgi = _FALSE; + + pattrib->seqnum = pmlmeext->mgnt_seq; + + pattrib->retry_ctrl = _TRUE; + +} + +void dump_mgntframe(_adapter *padapter, struct xmit_frame *pmgntframe) +{ + if(padapter->bSurpriseRemoved == _TRUE || + padapter->bDriverStopped == _TRUE) + { + rtw_free_xmitbuf(&padapter->xmitpriv, pmgntframe->pxmitbuf); + rtw_free_xmitframe(&padapter->xmitpriv, pmgntframe); + return; + } + + rtw_hal_mgnt_xmit(padapter, pmgntframe); +} + +s32 dump_mgntframe_and_wait(_adapter *padapter, struct xmit_frame *pmgntframe, int timeout_ms) +{ + s32 ret = _FAIL; + _irqL irqL; + struct xmit_priv *pxmitpriv = &padapter->xmitpriv; + struct xmit_buf *pxmitbuf = pmgntframe->pxmitbuf; + struct submit_ctx sctx; + + if(padapter->bSurpriseRemoved == _TRUE || + padapter->bDriverStopped == _TRUE) + { + rtw_free_xmitbuf(&padapter->xmitpriv, pmgntframe->pxmitbuf); + rtw_free_xmitframe(&padapter->xmitpriv, pmgntframe); + return ret; + } + + rtw_sctx_init(&sctx, timeout_ms); + pxmitbuf->sctx = &sctx; + + ret = rtw_hal_mgnt_xmit(padapter, pmgntframe); + + if (ret == _SUCCESS) + ret = rtw_sctx_wait(&sctx); + + _enter_critical(&pxmitpriv->lock_sctx, &irqL); + pxmitbuf->sctx = NULL; + _exit_critical(&pxmitpriv->lock_sctx, &irqL); + + return ret; +} + +s32 dump_mgntframe_and_wait_ack(_adapter *padapter, struct xmit_frame *pmgntframe) +{ +#ifdef CONFIG_XMIT_ACK + s32 ret = _FAIL; + u32 timeout_ms = 500;// 500ms + struct xmit_priv *pxmitpriv = &padapter->xmitpriv; + #ifdef CONFIG_CONCURRENT_MODE + if (padapter->pbuddy_adapter && !padapter->isprimary) + pxmitpriv = &(padapter->pbuddy_adapter->xmitpriv); + #endif + + if(padapter->bSurpriseRemoved == _TRUE || + padapter->bDriverStopped == _TRUE) + { + rtw_free_xmitbuf(&padapter->xmitpriv, pmgntframe->pxmitbuf); + rtw_free_xmitframe(&padapter->xmitpriv, pmgntframe); + return -1; + } + + _enter_critical_mutex(&pxmitpriv->ack_tx_mutex, NULL); + pxmitpriv->ack_tx = _TRUE; + + pmgntframe->ack_report = 1; + if (rtw_hal_mgnt_xmit(padapter, pmgntframe) == _SUCCESS) { + ret = rtw_ack_tx_wait(pxmitpriv, timeout_ms); + } + + pxmitpriv->ack_tx = _FALSE; + _exit_critical_mutex(&pxmitpriv->ack_tx_mutex, NULL); + + return ret; +#else //!CONFIG_XMIT_ACK + dump_mgntframe(padapter, pmgntframe); + rtw_msleep_os(50); + return _SUCCESS; +#endif //!CONFIG_XMIT_ACK +} + +int update_hidden_ssid(u8 *ies, u32 ies_len, u8 hidden_ssid_mode) +{ + u8 *ssid_ie; + sint ssid_len_ori; + int len_diff = 0; + + ssid_ie = rtw_get_ie(ies, WLAN_EID_SSID, &ssid_len_ori, ies_len); + + //DBG_871X("%s hidden_ssid_mode:%u, ssid_ie:%p, ssid_len_ori:%d\n", __FUNCTION__, hidden_ssid_mode, ssid_ie, ssid_len_ori); + + if(ssid_ie && ssid_len_ori>0) + { + switch(hidden_ssid_mode) + { + case 1: + { + u8 *next_ie = ssid_ie + 2 + ssid_len_ori; + u32 remain_len = 0; + + remain_len = ies_len -(next_ie-ies); + + ssid_ie[1] = 0; + _rtw_memcpy(ssid_ie+2, next_ie, remain_len); + len_diff -= ssid_len_ori; + + break; + } + case 2: + _rtw_memset(&ssid_ie[2], 0, ssid_len_ori); + break; + default: + break; + } + } + + return len_diff; +} + +void issue_beacon(_adapter *padapter) +{ + struct xmit_frame *pmgntframe; + struct pkt_attrib *pattrib; + unsigned char *pframe; + struct rtw_ieee80211_hdr *pwlanhdr; + unsigned short *fctrl; + unsigned int rate_len; + struct xmit_priv *pxmitpriv = &(padapter->xmitpriv); +#if defined (CONFIG_AP_MODE) && defined (CONFIG_NATIVEAP_MLME) + _irqL irqL; + struct mlme_priv *pmlmepriv = &(padapter->mlmepriv); +#endif //#if defined (CONFIG_AP_MODE) && defined (CONFIG_NATIVEAP_MLME) + struct mlme_ext_priv *pmlmeext = &(padapter->mlmeextpriv); + struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info); + WLAN_BSSID_EX *cur_network = &(pmlmeinfo->network); + u8 bc_addr[] = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff}; +#ifdef CONFIG_P2P + struct wifidirect_info *pwdinfo = &(padapter->wdinfo); +#endif //CONFIG_P2P + + + //DBG_871X("%s\n", __FUNCTION__); + + if ((pmgntframe = alloc_mgtxmitframe(pxmitpriv)) == NULL) + { + DBG_871X("%s, alloc mgnt frame fail\n", __FUNCTION__); + return; + } +#if defined (CONFIG_AP_MODE) && defined (CONFIG_NATIVEAP_MLME) + _enter_critical_bh(&pmlmepriv->bcn_update_lock, &irqL); +#endif //#if defined (CONFIG_AP_MODE) && defined (CONFIG_NATIVEAP_MLME) + + //update attribute + pattrib = &pmgntframe->attrib; + update_mgntframe_attrib(padapter, pattrib); + pattrib->qsel = 0x10; + + _rtw_memset(pmgntframe->buf_addr, 0, WLANHDR_OFFSET + TXDESC_OFFSET); + + pframe = (u8 *)(pmgntframe->buf_addr) + TXDESC_OFFSET; + pwlanhdr = (struct rtw_ieee80211_hdr *)pframe; + + + fctrl = &(pwlanhdr->frame_ctl); + *(fctrl) = 0; + + _rtw_memcpy(pwlanhdr->addr1, bc_addr, ETH_ALEN); + _rtw_memcpy(pwlanhdr->addr2, myid(&(padapter->eeprompriv)), ETH_ALEN); + _rtw_memcpy(pwlanhdr->addr3, get_my_bssid(cur_network), ETH_ALEN); + + SetSeqNum(pwlanhdr, 0/*pmlmeext->mgnt_seq*/); + //pmlmeext->mgnt_seq++; + SetFrameSubType(pframe, WIFI_BEACON); + + pframe += sizeof(struct rtw_ieee80211_hdr_3addr); + pattrib->pktlen = sizeof (struct rtw_ieee80211_hdr_3addr); + + if( (pmlmeinfo->state&0x03) == WIFI_FW_AP_STATE) + { + //DBG_871X("ie len=%d\n", cur_network->IELength); +#ifdef CONFIG_P2P + // for P2P : Primary Device Type & Device Name + u32 wpsielen=0, insert_len=0; + u8 *wpsie=NULL; + wpsie = rtw_get_wps_ie(cur_network->IEs+_FIXED_IE_LENGTH_, cur_network->IELength-_FIXED_IE_LENGTH_, NULL, &wpsielen); + + if(rtw_p2p_chk_role(pwdinfo, P2P_ROLE_GO) && wpsie && wpsielen>0) + { + uint wps_offset, remainder_ielen; + u8 *premainder_ie, *pframe_wscie; + + wps_offset = (uint)(wpsie - cur_network->IEs); + + premainder_ie = wpsie + wpsielen; + + remainder_ielen = cur_network->IELength - wps_offset - wpsielen; + +#ifdef CONFIG_IOCTL_CFG80211 + if(wdev_to_priv(padapter->rtw_wdev)->p2p_enabled && pwdinfo->driver_interface == DRIVER_CFG80211 ) + { + if(pmlmepriv->wps_beacon_ie && pmlmepriv->wps_beacon_ie_len>0) + { + _rtw_memcpy(pframe, cur_network->IEs, wps_offset); + pframe += wps_offset; + pattrib->pktlen += wps_offset; + + _rtw_memcpy(pframe, pmlmepriv->wps_beacon_ie, pmlmepriv->wps_beacon_ie_len); + pframe += pmlmepriv->wps_beacon_ie_len; + pattrib->pktlen += pmlmepriv->wps_beacon_ie_len; + + //copy remainder_ie to pframe + _rtw_memcpy(pframe, premainder_ie, remainder_ielen); + pframe += remainder_ielen; + pattrib->pktlen += remainder_ielen; + } + else + { + _rtw_memcpy(pframe, cur_network->IEs, cur_network->IELength); + pframe += cur_network->IELength; + pattrib->pktlen += cur_network->IELength; + } + } + else +#endif //CONFIG_IOCTL_CFG80211 + { + pframe_wscie = pframe + wps_offset; + _rtw_memcpy(pframe, cur_network->IEs, wps_offset+wpsielen); + pframe += (wps_offset + wpsielen); + pattrib->pktlen += (wps_offset + wpsielen); + + //now pframe is end of wsc ie, insert Primary Device Type & Device Name + // Primary Device Type + // Type: + *(u16*) ( pframe + insert_len) = cpu_to_be16( WPS_ATTR_PRIMARY_DEV_TYPE ); + insert_len += 2; + + // Length: + *(u16*) ( pframe + insert_len ) = cpu_to_be16( 0x0008 ); + insert_len += 2; + + // Value: + // Category ID + *(u16*) ( pframe + insert_len ) = cpu_to_be16( WPS_PDT_CID_MULIT_MEDIA ); + insert_len += 2; + + // OUI + *(u32*) ( pframe + insert_len ) = cpu_to_be32( WPSOUI ); + insert_len += 4; + + // Sub Category ID + *(u16*) ( pframe + insert_len ) = cpu_to_be16( WPS_PDT_SCID_MEDIA_SERVER ); + insert_len += 2; + + + // Device Name + // Type: + *(u16*) ( pframe + insert_len ) = cpu_to_be16( WPS_ATTR_DEVICE_NAME ); + insert_len += 2; + + // Length: + *(u16*) ( pframe + insert_len ) = cpu_to_be16( pwdinfo->device_name_len ); + insert_len += 2; + + // Value: + _rtw_memcpy( pframe + insert_len, pwdinfo->device_name, pwdinfo->device_name_len ); + insert_len += pwdinfo->device_name_len; + + + //update wsc ie length + *(pframe_wscie+1) = (wpsielen -2) + insert_len; + + //pframe move to end + pframe+=insert_len; + pattrib->pktlen += insert_len; + + //copy remainder_ie to pframe + _rtw_memcpy(pframe, premainder_ie, remainder_ielen); + pframe += remainder_ielen; + pattrib->pktlen += remainder_ielen; + } + } + else +#endif //CONFIG_P2P + { + int len_diff; + _rtw_memcpy(pframe, cur_network->IEs, cur_network->IELength); + len_diff = update_hidden_ssid( + pframe+_BEACON_IE_OFFSET_ + , cur_network->IELength-_BEACON_IE_OFFSET_ + , pmlmeinfo->hidden_ssid_mode + ); + pframe += (cur_network->IELength+len_diff); + pattrib->pktlen += (cur_network->IELength+len_diff); + } + + { + u8 *wps_ie; + uint wps_ielen; + u8 sr = 0; + wps_ie = rtw_get_wps_ie(pmgntframe->buf_addr+TXDESC_OFFSET+sizeof (struct rtw_ieee80211_hdr_3addr)+_BEACON_IE_OFFSET_, + pattrib->pktlen-sizeof (struct rtw_ieee80211_hdr_3addr)-_BEACON_IE_OFFSET_, NULL, &wps_ielen); + if (wps_ie && wps_ielen>0) { + rtw_get_wps_attr_content(wps_ie, wps_ielen, WPS_ATTR_SELECTED_REGISTRAR, (u8*)(&sr), NULL); + } + if (sr != 0) + set_fwstate(pmlmepriv, WIFI_UNDER_WPS); + else + _clr_fwstate_(pmlmepriv, WIFI_UNDER_WPS); + } + +#ifdef CONFIG_P2P + if(rtw_p2p_chk_role(pwdinfo, P2P_ROLE_GO)) + { + u32 len; +#ifdef CONFIG_IOCTL_CFG80211 + if(wdev_to_priv(padapter->rtw_wdev)->p2p_enabled && pwdinfo->driver_interface == DRIVER_CFG80211 ) + { + len = pmlmepriv->p2p_beacon_ie_len; + if(pmlmepriv->p2p_beacon_ie && len>0) + _rtw_memcpy(pframe, pmlmepriv->p2p_beacon_ie, len); + } + else +#endif //CONFIG_IOCTL_CFG80211 + { + len = build_beacon_p2p_ie(pwdinfo, pframe); + } + + pframe += len; + pattrib->pktlen += len; +#ifdef CONFIG_WFD +#ifdef CONFIG_IOCTL_CFG80211 + if(_TRUE == pwdinfo->wfd_info->wfd_enable) +#endif //CONFIG_IOCTL_CFG80211 + { + len = build_beacon_wfd_ie( pwdinfo, pframe ); + } +#ifdef CONFIG_IOCTL_CFG80211 + else + { + len = 0; + if(pmlmepriv->wfd_beacon_ie && pmlmepriv->wfd_beacon_ie_len>0) + { + len = pmlmepriv->wfd_beacon_ie_len; + _rtw_memcpy(pframe, pmlmepriv->wfd_beacon_ie, len); + } + } +#endif //CONFIG_IOCTL_CFG80211 + pframe += len; + pattrib->pktlen += len; +#endif //CONFIG_WFD + } +#endif //CONFIG_P2P + + goto _issue_bcn; + + } + + //below for ad-hoc mode + + //timestamp will be inserted by hardware + pframe += 8; + pattrib->pktlen += 8; + + // beacon interval: 2 bytes + + _rtw_memcpy(pframe, (unsigned char *)(rtw_get_beacon_interval_from_ie(cur_network->IEs)), 2); + + pframe += 2; + pattrib->pktlen += 2; + + // capability info: 2 bytes + + _rtw_memcpy(pframe, (unsigned char *)(rtw_get_capability_from_ie(cur_network->IEs)), 2); + + pframe += 2; + pattrib->pktlen += 2; + + // SSID + pframe = rtw_set_ie(pframe, _SSID_IE_, cur_network->Ssid.SsidLength, cur_network->Ssid.Ssid, &pattrib->pktlen); + + // supported rates... + rate_len = rtw_get_rateset_len(cur_network->SupportedRates); + pframe = rtw_set_ie(pframe, _SUPPORTEDRATES_IE_, ((rate_len > 8)? 8: rate_len), cur_network->SupportedRates, &pattrib->pktlen); + + // DS parameter set + pframe = rtw_set_ie(pframe, _DSSET_IE_, 1, (unsigned char *)&(cur_network->Configuration.DSConfig), &pattrib->pktlen); + + //if( (pmlmeinfo->state&0x03) == WIFI_FW_ADHOC_STATE) + { + u8 erpinfo=0; + u32 ATIMWindow; + // IBSS Parameter Set... + //ATIMWindow = cur->Configuration.ATIMWindow; + ATIMWindow = 0; + pframe = rtw_set_ie(pframe, _IBSS_PARA_IE_, 2, (unsigned char *)(&ATIMWindow), &pattrib->pktlen); + + //ERP IE + pframe = rtw_set_ie(pframe, _ERPINFO_IE_, 1, &erpinfo, &pattrib->pktlen); + } + + + // EXTERNDED SUPPORTED RATE + if (rate_len > 8) + { + pframe = rtw_set_ie(pframe, _EXT_SUPPORTEDRATES_IE_, (rate_len - 8), (cur_network->SupportedRates + 8), &pattrib->pktlen); + } + + + //todo:HT for adhoc + +_issue_bcn: + +#if defined (CONFIG_AP_MODE) && defined (CONFIG_NATIVEAP_MLME) + pmlmepriv->update_bcn = _FALSE; + + _exit_critical_bh(&pmlmepriv->bcn_update_lock, &irqL); +#endif //#if defined (CONFIG_AP_MODE) && defined (CONFIG_NATIVEAP_MLME) + + if ((pattrib->pktlen + TXDESC_SIZE) > 512) + { + DBG_871X("beacon frame too large\n"); + return; + } + + pattrib->last_txcmdsz = pattrib->pktlen; + + //DBG_871X("issue bcn_sz=%d\n", pattrib->last_txcmdsz); + + dump_mgntframe(padapter, pmgntframe); + +} + +void issue_probersp(_adapter *padapter, unsigned char *da, u8 is_valid_p2p_probereq) +{ + struct xmit_frame *pmgntframe; + struct pkt_attrib *pattrib; + unsigned char *pframe; + struct rtw_ieee80211_hdr *pwlanhdr; + unsigned short *fctrl; + unsigned char *mac, *bssid; + struct xmit_priv *pxmitpriv = &(padapter->xmitpriv); +#if defined (CONFIG_AP_MODE) && defined (CONFIG_NATIVEAP_MLME) + u8 *pwps_ie; + uint wps_ielen; + struct mlme_priv *pmlmepriv = &padapter->mlmepriv; +#endif //#if defined (CONFIG_AP_MODE) && defined (CONFIG_NATIVEAP_MLME) + struct mlme_ext_priv *pmlmeext = &(padapter->mlmeextpriv); + struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info); + WLAN_BSSID_EX *cur_network = &(pmlmeinfo->network); + unsigned int rate_len; +#ifdef CONFIG_P2P + struct wifidirect_info *pwdinfo = &(padapter->wdinfo); +#ifdef CONFIG_WFD + u32 wfdielen = 0; +#endif //CONFIG_WFD +#endif //CONFIG_P2P + + //DBG_871X("%s\n", __FUNCTION__); + + if ((pmgntframe = alloc_mgtxmitframe(pxmitpriv)) == NULL) + { + DBG_871X("%s, alloc mgnt frame fail\n", __FUNCTION__); + return; + } + + + //update attribute + pattrib = &pmgntframe->attrib; + update_mgntframe_attrib(padapter, pattrib); + + _rtw_memset(pmgntframe->buf_addr, 0, WLANHDR_OFFSET + TXDESC_OFFSET); + + pframe = (u8 *)(pmgntframe->buf_addr) + TXDESC_OFFSET; + pwlanhdr = (struct rtw_ieee80211_hdr *)pframe; + + mac = myid(&(padapter->eeprompriv)); + bssid = cur_network->MacAddress; + + fctrl = &(pwlanhdr->frame_ctl); + *(fctrl) = 0; + _rtw_memcpy(pwlanhdr->addr1, da, ETH_ALEN); + _rtw_memcpy(pwlanhdr->addr2, mac, ETH_ALEN); + _rtw_memcpy(pwlanhdr->addr3, bssid, ETH_ALEN); + + SetSeqNum(pwlanhdr, pmlmeext->mgnt_seq); + pmlmeext->mgnt_seq++; + SetFrameSubType(fctrl, WIFI_PROBERSP); + + pattrib->hdrlen = sizeof(struct rtw_ieee80211_hdr_3addr); + pattrib->pktlen = pattrib->hdrlen; + pframe += pattrib->hdrlen; + + + if(cur_network->IELength>MAX_IE_SZ) + return; + +#if defined (CONFIG_AP_MODE) && defined (CONFIG_NATIVEAP_MLME) + if( (pmlmeinfo->state&0x03) == WIFI_FW_AP_STATE) + { + pwps_ie = rtw_get_wps_ie(cur_network->IEs+_FIXED_IE_LENGTH_, cur_network->IELength-_FIXED_IE_LENGTH_, NULL, &wps_ielen); + + //inerset & update wps_probe_resp_ie + if((pmlmepriv->wps_probe_resp_ie!=NULL) && pwps_ie && (wps_ielen>0)) + { + uint wps_offset, remainder_ielen; + u8 *premainder_ie; + + wps_offset = (uint)(pwps_ie - cur_network->IEs); + + premainder_ie = pwps_ie + wps_ielen; + + remainder_ielen = cur_network->IELength - wps_offset - wps_ielen; + + _rtw_memcpy(pframe, cur_network->IEs, wps_offset); + pframe += wps_offset; + pattrib->pktlen += wps_offset; + + wps_ielen = (uint)pmlmepriv->wps_probe_resp_ie[1];//to get ie data len + if((wps_offset+wps_ielen+2)<=MAX_IE_SZ) + { + _rtw_memcpy(pframe, pmlmepriv->wps_probe_resp_ie, wps_ielen+2); + pframe += wps_ielen+2; + pattrib->pktlen += wps_ielen+2; + } + + if((wps_offset+wps_ielen+2+remainder_ielen)<=MAX_IE_SZ) + { + _rtw_memcpy(pframe, premainder_ie, remainder_ielen); + pframe += remainder_ielen; + pattrib->pktlen += remainder_ielen; + } + } + else + { + _rtw_memcpy(pframe, cur_network->IEs, cur_network->IELength); + pframe += cur_network->IELength; + pattrib->pktlen += cur_network->IELength; + } + + /* retrieve SSID IE from cur_network->Ssid */ + { + u8 *ssid_ie; + sint ssid_ielen; + sint ssid_ielen_diff; + u8 buf[MAX_IE_SZ]; + u8 *ies = pmgntframe->buf_addr+TXDESC_OFFSET+sizeof(struct rtw_ieee80211_hdr_3addr); + + ssid_ie = rtw_get_ie(ies+_FIXED_IE_LENGTH_, _SSID_IE_, &ssid_ielen, + (pframe-ies)-_FIXED_IE_LENGTH_); + + ssid_ielen_diff = cur_network->Ssid.SsidLength - ssid_ielen; + + if (ssid_ie && cur_network->Ssid.SsidLength) { + uint remainder_ielen; + u8 *remainder_ie; + remainder_ie = ssid_ie+2; + remainder_ielen = (pframe-remainder_ie); + + LOG_LEVEL(_drv_warning_, FUNC_ADPT_FMT" remainder_ielen > MAX_IE_SZ\n", FUNC_ADPT_ARG(padapter)); + if (remainder_ielen > MAX_IE_SZ) { + remainder_ielen = MAX_IE_SZ; + } + + _rtw_memcpy(buf, remainder_ie, remainder_ielen); + _rtw_memcpy(remainder_ie+ssid_ielen_diff, buf, remainder_ielen); + *(ssid_ie+1) = cur_network->Ssid.SsidLength; + _rtw_memcpy(ssid_ie+2, cur_network->Ssid.Ssid, cur_network->Ssid.SsidLength); + + pframe += ssid_ielen_diff; + pattrib->pktlen += ssid_ielen_diff; + } + } + } + else +#endif + { + + //timestamp will be inserted by hardware + pframe += 8; + pattrib->pktlen += 8; + + // beacon interval: 2 bytes + + _rtw_memcpy(pframe, (unsigned char *)(rtw_get_beacon_interval_from_ie(cur_network->IEs)), 2); + + pframe += 2; + pattrib->pktlen += 2; + + // capability info: 2 bytes + + _rtw_memcpy(pframe, (unsigned char *)(rtw_get_capability_from_ie(cur_network->IEs)), 2); + + pframe += 2; + pattrib->pktlen += 2; + + //below for ad-hoc mode + + // SSID + pframe = rtw_set_ie(pframe, _SSID_IE_, cur_network->Ssid.SsidLength, cur_network->Ssid.Ssid, &pattrib->pktlen); + + // supported rates... + rate_len = rtw_get_rateset_len(cur_network->SupportedRates); + pframe = rtw_set_ie(pframe, _SUPPORTEDRATES_IE_, ((rate_len > 8)? 8: rate_len), cur_network->SupportedRates, &pattrib->pktlen); + + // DS parameter set + pframe =rtw_set_ie(pframe, _DSSET_IE_, 1, (unsigned char *)&(cur_network->Configuration.DSConfig), &pattrib->pktlen); + + if( (pmlmeinfo->state&0x03) == WIFI_FW_ADHOC_STATE) + { + u8 erpinfo=0; + u32 ATIMWindow; + // IBSS Parameter Set... + //ATIMWindow = cur->Configuration.ATIMWindow; + ATIMWindow = 0; + pframe = rtw_set_ie(pframe, _IBSS_PARA_IE_, 2, (unsigned char *)(&ATIMWindow), &pattrib->pktlen); + + //ERP IE + pframe = rtw_set_ie(pframe, _ERPINFO_IE_, 1, &erpinfo, &pattrib->pktlen); + } + + + // EXTERNDED SUPPORTED RATE + if (rate_len > 8) + { + pframe = rtw_set_ie(pframe, _EXT_SUPPORTEDRATES_IE_, (rate_len - 8), (cur_network->SupportedRates + 8), &pattrib->pktlen); + } + + + //todo:HT for adhoc + + } + +#ifdef CONFIG_P2P + if(rtw_p2p_chk_role(pwdinfo, P2P_ROLE_GO) /*&& is_valid_p2p_probereq*/) + { + u32 len; +#ifdef CONFIG_IOCTL_CFG80211 + if(wdev_to_priv(padapter->rtw_wdev)->p2p_enabled && pwdinfo->driver_interface == DRIVER_CFG80211 ) + { + //if pwdinfo->role == P2P_ROLE_DEVICE will call issue_probersp_p2p() + len = pmlmepriv->p2p_go_probe_resp_ie_len; + if(pmlmepriv->p2p_go_probe_resp_ie && len>0) + _rtw_memcpy(pframe, pmlmepriv->p2p_go_probe_resp_ie, len); + } + else +#endif //CONFIG_IOCTL_CFG80211 + { + len = build_probe_resp_p2p_ie(pwdinfo, pframe); + } + + pframe += len; + pattrib->pktlen += len; + +#ifdef CONFIG_WFD +#ifdef CONFIG_IOCTL_CFG80211 + if(_TRUE == pwdinfo->wfd_info->wfd_enable) +#endif //CONFIG_IOCTL_CFG80211 + { + len = build_probe_resp_wfd_ie(pwdinfo, pframe, 0); + } +#ifdef CONFIG_IOCTL_CFG80211 + else + { + len = 0; + if(pmlmepriv->wfd_probe_resp_ie && pmlmepriv->wfd_probe_resp_ie_len>0) + { + len = pmlmepriv->wfd_probe_resp_ie_len; + _rtw_memcpy(pframe, pmlmepriv->wfd_probe_resp_ie, len); + } + } +#endif //CONFIG_IOCTL_CFG80211 + pframe += len; + pattrib->pktlen += len; +#endif //CONFIG_WFD + + } +#endif //CONFIG_P2P + + +#ifdef CONFIG_AUTO_AP_MODE +{ + struct sta_info *psta; + struct sta_priv *pstapriv = &padapter->stapriv; + + DBG_871X("(%s)\n", __FUNCTION__); + + //check rc station + psta = rtw_get_stainfo(pstapriv, da); + if (psta && psta->isrc && psta->pid>0) + { + u8 RC_OUI[4]={0x00,0xE0,0x4C,0x0A}; + u8 RC_INFO[14] = {0}; + //EID[1] + EID_LEN[1] + RC_OUI[4] + MAC[6] + PairingID[2] + ChannelNum[2] + u16 cu_ch = (u16)cur_network->Configuration.DSConfig; + + DBG_871X("%s, reply rc(pid=0x%x) device "MAC_FMT" in ch=%d\n", __FUNCTION__, + psta->pid, MAC_ARG(psta->hwaddr), cu_ch); + + //append vendor specific ie + _rtw_memcpy(RC_INFO, RC_OUI, sizeof(RC_OUI)); + _rtw_memcpy(&RC_INFO[4], mac, ETH_ALEN); + _rtw_memcpy(&RC_INFO[10], (u8*)&psta->pid, 2); + _rtw_memcpy(&RC_INFO[12], (u8*)&cu_ch, 2); + + pframe = rtw_set_ie(pframe, _VENDOR_SPECIFIC_IE_, sizeof(RC_INFO), RC_INFO, &pattrib->pktlen); + } +} +#endif //CONFIG_AUTO_AP_MODE + + + pattrib->last_txcmdsz = pattrib->pktlen; + + + dump_mgntframe(padapter, pmgntframe); + + return; + +} + +int _issue_probereq(_adapter *padapter, NDIS_802_11_SSID *pssid, u8 *da, int wait_ack) +{ + int ret = _FAIL; + struct xmit_frame *pmgntframe; + struct pkt_attrib *pattrib; + unsigned char *pframe; + struct rtw_ieee80211_hdr *pwlanhdr; + unsigned short *fctrl; + unsigned char *mac; + unsigned char bssrate[NumRates]; + struct xmit_priv *pxmitpriv = &(padapter->xmitpriv); + struct mlme_priv *pmlmepriv = &(padapter->mlmepriv); + struct mlme_ext_priv *pmlmeext = &(padapter->mlmeextpriv); + struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info); + int bssrate_len = 0; + u8 bc_addr[] = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff}; + + RT_TRACE(_module_rtl871x_mlme_c_,_drv_notice_,("+issue_probereq\n")); + + if ((pmgntframe = alloc_mgtxmitframe(pxmitpriv)) == NULL) + { + goto exit; + } + + //update attribute + pattrib = &pmgntframe->attrib; + update_mgntframe_attrib(padapter, pattrib); + + + _rtw_memset(pmgntframe->buf_addr, 0, WLANHDR_OFFSET + TXDESC_OFFSET); + + pframe = (u8 *)(pmgntframe->buf_addr) + TXDESC_OFFSET; + pwlanhdr = (struct rtw_ieee80211_hdr *)pframe; + + mac = myid(&(padapter->eeprompriv)); + + fctrl = &(pwlanhdr->frame_ctl); + *(fctrl) = 0; + + if (da) + { + // unicast probe request frame + _rtw_memcpy(pwlanhdr->addr1, da, ETH_ALEN); + _rtw_memcpy(pwlanhdr->addr3, da, ETH_ALEN); + } + else + { + // broadcast probe request frame + _rtw_memcpy(pwlanhdr->addr1, bc_addr, ETH_ALEN); + _rtw_memcpy(pwlanhdr->addr3, bc_addr, ETH_ALEN); + } + + _rtw_memcpy(pwlanhdr->addr2, mac, ETH_ALEN); + + SetSeqNum(pwlanhdr, pmlmeext->mgnt_seq); + pmlmeext->mgnt_seq++; + SetFrameSubType(pframe, WIFI_PROBEREQ); + + pframe += sizeof (struct rtw_ieee80211_hdr_3addr); + pattrib->pktlen = sizeof (struct rtw_ieee80211_hdr_3addr); + + if(pssid) + pframe = rtw_set_ie(pframe, _SSID_IE_, pssid->SsidLength, pssid->Ssid, &(pattrib->pktlen)); + else + pframe = rtw_set_ie(pframe, _SSID_IE_, 0, NULL, &(pattrib->pktlen)); + + get_rate_set(padapter, bssrate, &bssrate_len); + + if (bssrate_len > 8) + { + pframe = rtw_set_ie(pframe, _SUPPORTEDRATES_IE_ , 8, bssrate, &(pattrib->pktlen)); + pframe = rtw_set_ie(pframe, _EXT_SUPPORTEDRATES_IE_ , (bssrate_len - 8), (bssrate + 8), &(pattrib->pktlen)); + } + else + { + pframe = rtw_set_ie(pframe, _SUPPORTEDRATES_IE_ , bssrate_len , bssrate, &(pattrib->pktlen)); + } + +#if 0 + //add wps_ie for wps2.0 + if(pmlmepriv->probereq_wpsie_len>0 && pmlmepriv->probereq_wpsie_lenprobereq_wpsie, pmlmepriv->probereq_wpsie_len); + pframe += pmlmepriv->probereq_wpsie_len; + pattrib->pktlen += pmlmepriv->probereq_wpsie_len; + //pmlmepriv->probereq_wpsie_len = 0 ;//reset to zero + } +#else + //add wps_ie for wps2.0 + if(pmlmepriv->wps_probe_req_ie_len>0 && pmlmepriv->wps_probe_req_ie) + { + _rtw_memcpy(pframe, pmlmepriv->wps_probe_req_ie, pmlmepriv->wps_probe_req_ie_len); + pframe += pmlmepriv->wps_probe_req_ie_len; + pattrib->pktlen += pmlmepriv->wps_probe_req_ie_len; + //pmlmepriv->wps_probe_req_ie_len = 0 ;//reset to zero + } +#endif + + pattrib->last_txcmdsz = pattrib->pktlen; + + RT_TRACE(_module_rtl871x_mlme_c_,_drv_notice_,("issuing probe_req, tx_len=%d\n", pattrib->last_txcmdsz)); + + if (wait_ack) { + ret = dump_mgntframe_and_wait_ack(padapter, pmgntframe); + } else { + dump_mgntframe(padapter, pmgntframe); + ret = _SUCCESS; + } + +exit: + return ret; +} + +inline void issue_probereq(_adapter *padapter, NDIS_802_11_SSID *pssid, u8 *da) +{ + _issue_probereq(padapter, pssid, da, _FALSE); +} + +int issue_probereq_ex(_adapter *padapter, NDIS_802_11_SSID *pssid, u8 *da, + int try_cnt, int wait_ms) +{ + int ret; + int i = 0; + u32 start = rtw_get_current_time(); + + do + { + ret = _issue_probereq(padapter, pssid, da, wait_ms>0?_TRUE:_FALSE); + + i++; + + if (padapter->bDriverStopped || padapter->bSurpriseRemoved) + break; + + if(i < try_cnt && wait_ms > 0 && ret==_FAIL) + rtw_msleep_os(wait_ms); + + }while((ixmitpriv); + struct mlme_ext_priv *pmlmeext = &(padapter->mlmeextpriv); + struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info); + + if ((pmgntframe = alloc_mgtxmitframe(pxmitpriv)) == NULL) + { + return; + } + + //update attribute + pattrib = &pmgntframe->attrib; + update_mgntframe_attrib(padapter, pattrib); + + _rtw_memset(pmgntframe->buf_addr, 0, WLANHDR_OFFSET + TXDESC_OFFSET); + + pframe = (u8 *)(pmgntframe->buf_addr) + TXDESC_OFFSET; + pwlanhdr = (struct rtw_ieee80211_hdr *)pframe; + + fctrl = &(pwlanhdr->frame_ctl); + *(fctrl) = 0; + + SetSeqNum(pwlanhdr, pmlmeext->mgnt_seq); + pmlmeext->mgnt_seq++; + SetFrameSubType(pframe, WIFI_AUTH); + + pframe += sizeof(struct rtw_ieee80211_hdr_3addr); + pattrib->pktlen = sizeof(struct rtw_ieee80211_hdr_3addr); + + + if(psta)// for AP mode + { +#ifdef CONFIG_NATIVEAP_MLME + + _rtw_memcpy(pwlanhdr->addr1, psta->hwaddr, ETH_ALEN); + _rtw_memcpy(pwlanhdr->addr2, myid(&(padapter->eeprompriv)), ETH_ALEN); + _rtw_memcpy(pwlanhdr->addr3, myid(&(padapter->eeprompriv)), ETH_ALEN); + + + // setting auth algo number + val16 = (u16)psta->authalg; + + if(status != _STATS_SUCCESSFUL_) + val16 = 0; + + if (val16) { + val16 = cpu_to_le16(val16); + use_shared_key = 1; + } + + pframe = rtw_set_fixed_ie(pframe, _AUTH_ALGM_NUM_, (unsigned char *)&val16, &(pattrib->pktlen)); + + // setting auth seq number + val16 =(u16)psta->auth_seq; + val16 = cpu_to_le16(val16); + pframe = rtw_set_fixed_ie(pframe, _AUTH_SEQ_NUM_, (unsigned char *)&val16, &(pattrib->pktlen)); + + // setting status code... + val16 = status; + val16 = cpu_to_le16(val16); + pframe = rtw_set_fixed_ie(pframe, _STATUS_CODE_, (unsigned char *)&val16, &(pattrib->pktlen)); + + // added challenging text... + if ((psta->auth_seq == 2) && (psta->state & WIFI_FW_AUTH_STATE) && (use_shared_key==1)) + { + pframe = rtw_set_ie(pframe, _CHLGETXT_IE_, 128, psta->chg_txt, &(pattrib->pktlen)); + } +#endif + } + else + { + _rtw_memcpy(pwlanhdr->addr1, get_my_bssid(&pmlmeinfo->network), ETH_ALEN); + _rtw_memcpy(pwlanhdr->addr2, myid(&padapter->eeprompriv), ETH_ALEN); + _rtw_memcpy(pwlanhdr->addr3, get_my_bssid(&pmlmeinfo->network), ETH_ALEN); + + // setting auth algo number + val16 = (pmlmeinfo->auth_algo == dot11AuthAlgrthm_Shared)? 1: 0;// 0:OPEN System, 1:Shared key + if (val16) { + val16 = cpu_to_le16(val16); + use_shared_key = 1; + } + //DBG_871X("%s auth_algo= %s auth_seq=%d\n",__FUNCTION__,(pmlmeinfo->auth_algo==0)?"OPEN":"SHARED",pmlmeinfo->auth_seq); + + //setting IV for auth seq #3 + if ((pmlmeinfo->auth_seq == 3) && (pmlmeinfo->state & WIFI_FW_AUTH_STATE) && (use_shared_key==1)) + { + //DBG_871X("==> iv(%d),key_index(%d)\n",pmlmeinfo->iv,pmlmeinfo->key_index); + val32 = ((pmlmeinfo->iv++) | (pmlmeinfo->key_index << 30)); + val32 = cpu_to_le32(val32); + pframe = rtw_set_fixed_ie(pframe, 4, (unsigned char *)&val32, &(pattrib->pktlen)); + + pattrib->iv_len = 4; + } + + pframe = rtw_set_fixed_ie(pframe, _AUTH_ALGM_NUM_, (unsigned char *)&val16, &(pattrib->pktlen)); + + // setting auth seq number + val16 = pmlmeinfo->auth_seq; + val16 = cpu_to_le16(val16); + pframe = rtw_set_fixed_ie(pframe, _AUTH_SEQ_NUM_, (unsigned char *)&val16, &(pattrib->pktlen)); + + + // setting status code... + val16 = status; + val16 = cpu_to_le16(val16); + pframe = rtw_set_fixed_ie(pframe, _STATUS_CODE_, (unsigned char *)&val16, &(pattrib->pktlen)); + + // then checking to see if sending challenging text... + if ((pmlmeinfo->auth_seq == 3) && (pmlmeinfo->state & WIFI_FW_AUTH_STATE) && (use_shared_key==1)) + { + pframe = rtw_set_ie(pframe, _CHLGETXT_IE_, 128, pmlmeinfo->chg_txt, &(pattrib->pktlen)); + + SetPrivacy(fctrl); + + pattrib->hdrlen = sizeof(struct rtw_ieee80211_hdr_3addr); + + pattrib->encrypt = _WEP40_; + + pattrib->icv_len = 4; + + pattrib->pktlen += pattrib->icv_len; + + } + + } + + pattrib->last_txcmdsz = pattrib->pktlen; + + rtw_wep_encrypt(padapter, (u8 *)pmgntframe); + + dump_mgntframe(padapter, pmgntframe); + + return; +} + + +void issue_asocrsp(_adapter *padapter, unsigned short status, struct sta_info *pstat, int pkt_type) +{ +#ifdef CONFIG_AP_MODE + struct xmit_frame *pmgntframe; + struct rtw_ieee80211_hdr *pwlanhdr; + struct pkt_attrib *pattrib; + unsigned char *pbuf, *pframe; + unsigned short val; + unsigned short *fctrl; + struct xmit_priv *pxmitpriv = &(padapter->xmitpriv); + struct mlme_priv *pmlmepriv = &(padapter->mlmepriv); + struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; + struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info); + WLAN_BSSID_EX *pnetwork = &(pmlmeinfo->network); + u8 *ie = pnetwork->IEs; +#ifdef CONFIG_P2P + struct wifidirect_info *pwdinfo = &(padapter->wdinfo); +#ifdef CONFIG_WFD + u32 wfdielen = 0; +#endif //CONFIG_WFD +#endif //CONFIG_P2P + + DBG_871X("%s\n", __FUNCTION__); + + if ((pmgntframe = alloc_mgtxmitframe(pxmitpriv)) == NULL) + { + return; + } + + //update attribute + pattrib = &pmgntframe->attrib; + update_mgntframe_attrib(padapter, pattrib); + + + _rtw_memset(pmgntframe->buf_addr, 0, WLANHDR_OFFSET + TXDESC_OFFSET); + + pframe = (u8 *)(pmgntframe->buf_addr) + TXDESC_OFFSET; + pwlanhdr = (struct rtw_ieee80211_hdr *)pframe; + + fctrl = &(pwlanhdr->frame_ctl); + *(fctrl) = 0; + + _rtw_memcpy((void *)GetAddr1Ptr(pwlanhdr), pstat->hwaddr, ETH_ALEN); + _rtw_memcpy((void *)GetAddr2Ptr(pwlanhdr), myid(&(padapter->eeprompriv)), ETH_ALEN); + _rtw_memcpy((void *)GetAddr3Ptr(pwlanhdr), get_my_bssid(&(pmlmeinfo->network)), ETH_ALEN); + + + SetSeqNum(pwlanhdr, pmlmeext->mgnt_seq); + pmlmeext->mgnt_seq++; + if ((pkt_type == WIFI_ASSOCRSP) || (pkt_type == WIFI_REASSOCRSP)) + SetFrameSubType(pwlanhdr, pkt_type); + else + return; + + pattrib->hdrlen = sizeof(struct rtw_ieee80211_hdr_3addr); + pattrib->pktlen += pattrib->hdrlen; + pframe += pattrib->hdrlen; + + //capability + val = *(unsigned short *)rtw_get_capability_from_ie(ie); + + pframe = rtw_set_fixed_ie(pframe, _CAPABILITY_ , (unsigned char *)&val, &(pattrib->pktlen)); + + status = cpu_to_le16(status); + pframe = rtw_set_fixed_ie(pframe , _STATUS_CODE_ , (unsigned char *)&status, &(pattrib->pktlen)); + + val = cpu_to_le16(pstat->aid | BIT(14) | BIT(15)); + pframe = rtw_set_fixed_ie(pframe, _ASOC_ID_ , (unsigned char *)&val, &(pattrib->pktlen)); + + if (pstat->bssratelen <= 8) + { + pframe = rtw_set_ie(pframe, _SUPPORTEDRATES_IE_, pstat->bssratelen, pstat->bssrateset, &(pattrib->pktlen)); + } + else + { + pframe = rtw_set_ie(pframe, _SUPPORTEDRATES_IE_, 8, pstat->bssrateset, &(pattrib->pktlen)); + pframe = rtw_set_ie(pframe, _EXT_SUPPORTEDRATES_IE_, (pstat->bssratelen-8), pstat->bssrateset+8, &(pattrib->pktlen)); + } + +#ifdef CONFIG_80211N_HT + if ((pstat->flags & WLAN_STA_HT) && (pmlmepriv->htpriv.ht_option)) + { + uint ie_len=0; + + //FILL HT CAP INFO IE + //p = hostapd_eid_ht_capabilities_info(hapd, p); + pbuf = rtw_get_ie(ie + _BEACON_IE_OFFSET_, _HT_CAPABILITY_IE_, &ie_len, (pnetwork->IELength - _BEACON_IE_OFFSET_)); + if(pbuf && ie_len>0) + { + _rtw_memcpy(pframe, pbuf, ie_len+2); + pframe += (ie_len+2); + pattrib->pktlen +=(ie_len+2); + } + + //FILL HT ADD INFO IE + //p = hostapd_eid_ht_operation(hapd, p); + pbuf = rtw_get_ie(ie + _BEACON_IE_OFFSET_, _HT_ADD_INFO_IE_, &ie_len, (pnetwork->IELength - _BEACON_IE_OFFSET_)); + if(pbuf && ie_len>0) + { + _rtw_memcpy(pframe, pbuf, ie_len+2); + pframe += (ie_len+2); + pattrib->pktlen +=(ie_len+2); + } + + } +#endif + + //FILL WMM IE + if ((pstat->flags & WLAN_STA_WME) && (pmlmepriv->qospriv.qos_option)) + { + uint ie_len=0; + unsigned char WMM_PARA_IE[] = {0x00, 0x50, 0xf2, 0x02, 0x01, 0x01}; + + for (pbuf = ie + _BEACON_IE_OFFSET_; ;pbuf+= (ie_len + 2)) + { + pbuf = rtw_get_ie(pbuf, _VENDOR_SPECIFIC_IE_, &ie_len, (pnetwork->IELength - _BEACON_IE_OFFSET_ - (ie_len + 2))); + if(pbuf && _rtw_memcmp(pbuf+2, WMM_PARA_IE, 6)) + { + _rtw_memcpy(pframe, pbuf, ie_len+2); + pframe += (ie_len+2); + pattrib->pktlen +=(ie_len+2); + + break; + } + + if ((pbuf == NULL) || (ie_len == 0)) + { + break; + } + } + + } + + + if (pmlmeinfo->assoc_AP_vendor == realtekAP) + { + pframe = rtw_set_ie(pframe, _VENDOR_SPECIFIC_IE_, 6 , REALTEK_96B_IE, &(pattrib->pktlen)); + } + + //add WPS IE ie for wps 2.0 + if(pmlmepriv->wps_assoc_resp_ie && pmlmepriv->wps_assoc_resp_ie_len>0) + { + _rtw_memcpy(pframe, pmlmepriv->wps_assoc_resp_ie, pmlmepriv->wps_assoc_resp_ie_len); + + pframe += pmlmepriv->wps_assoc_resp_ie_len; + pattrib->pktlen += pmlmepriv->wps_assoc_resp_ie_len; + } + +#ifdef CONFIG_P2P + if( padapter->wdinfo.driver_interface == DRIVER_WEXT ) + { + if(rtw_p2p_chk_role(pwdinfo, P2P_ROLE_GO) && (pstat->is_p2p_device == _TRUE)) + { + u32 len; + + len = build_assoc_resp_p2p_ie(pwdinfo, pframe, pstat->p2p_status_code); + + pframe += len; + pattrib->pktlen += len; + } + } +#ifdef CONFIG_WFD + if(rtw_p2p_chk_role(pwdinfo, P2P_ROLE_GO) +#ifdef CONFIG_IOCTL_CFG80211 + && (_TRUE == pwdinfo->wfd_info->wfd_enable) +#endif //CONFIG_IOCTL_CFG80211 + ) + { + wfdielen = build_assoc_resp_wfd_ie(pwdinfo, pframe); + pframe += wfdielen; + pattrib->pktlen += wfdielen; + } +#endif //CONFIG_WFD +#endif //CONFIG_P2P + + pattrib->last_txcmdsz = pattrib->pktlen; + + dump_mgntframe(padapter, pmgntframe); + +#endif +} + +void issue_assocreq(_adapter *padapter) +{ + int ret = _FAIL; + struct xmit_frame *pmgntframe; + struct pkt_attrib *pattrib; + unsigned char *pframe, *p; + struct rtw_ieee80211_hdr *pwlanhdr; + unsigned short *fctrl; + unsigned short val16; + unsigned int i, j, ie_len, index=0; + unsigned char rf_type, bssrate[NumRates], sta_bssrate[NumRates]; + PNDIS_802_11_VARIABLE_IEs pIE; + struct registry_priv *pregpriv = &padapter->registrypriv; + struct xmit_priv *pxmitpriv = &(padapter->xmitpriv); + struct mlme_priv *pmlmepriv = &(padapter->mlmepriv); + struct mlme_ext_priv *pmlmeext = &(padapter->mlmeextpriv); + struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info); + int bssrate_len = 0, sta_bssrate_len = 0; + u8 cbw40_enable = 0; +#ifdef CONFIG_P2P + struct wifidirect_info *pwdinfo = &(padapter->wdinfo); + u8 p2pie[ 255 ] = { 0x00 }; + u16 p2pielen = 0; +#ifdef CONFIG_WFD + u32 wfdielen = 0; +#endif //CONFIG_WFD +#endif //CONFIG_P2P + +#ifdef CONFIG_DFS + u16 cap; + u8 pow_cap_ele[2] = { 0x00 }; + u8 sup_ch[ 30 * 2 ] = {0x00 }, sup_ch_idx = 0, idx_5g = 2; //For supported channel +#endif //CONFIG_DFS + + if ((pmgntframe = alloc_mgtxmitframe(pxmitpriv)) == NULL) + goto exit; + + //update attribute + pattrib = &pmgntframe->attrib; + update_mgntframe_attrib(padapter, pattrib); + + + _rtw_memset(pmgntframe->buf_addr, 0, WLANHDR_OFFSET + TXDESC_OFFSET); + + pframe = (u8 *)(pmgntframe->buf_addr) + TXDESC_OFFSET; + pwlanhdr = (struct rtw_ieee80211_hdr *)pframe; + + fctrl = &(pwlanhdr->frame_ctl); + *(fctrl) = 0; + _rtw_memcpy(pwlanhdr->addr1, get_my_bssid(&(pmlmeinfo->network)), ETH_ALEN); + _rtw_memcpy(pwlanhdr->addr2, myid(&(padapter->eeprompriv)), ETH_ALEN); + _rtw_memcpy(pwlanhdr->addr3, get_my_bssid(&(pmlmeinfo->network)), ETH_ALEN); + + SetSeqNum(pwlanhdr, pmlmeext->mgnt_seq); + pmlmeext->mgnt_seq++; + SetFrameSubType(pframe, WIFI_ASSOCREQ); + + pframe += sizeof(struct rtw_ieee80211_hdr_3addr); + pattrib->pktlen = sizeof(struct rtw_ieee80211_hdr_3addr); + + //caps + +#ifdef CONFIG_DFS + _rtw_memcpy(&cap, rtw_get_capability_from_ie(pmlmeinfo->network.IEs), 2); + if(pmlmeext->cur_channel > 14) + cap |= BIT(8); //Spectrum Mgmt. Enabled + _rtw_memcpy(pframe, &cap, 2); +#else + _rtw_memcpy(pframe, rtw_get_capability_from_ie(pmlmeinfo->network.IEs), 2); +#endif //CONFIG_DFS + + pframe += 2; + pattrib->pktlen += 2; + + //listen interval + //todo: listen interval for power saving + val16 = cpu_to_le16(3); + _rtw_memcpy(pframe ,(unsigned char *)&val16, 2); + pframe += 2; + pattrib->pktlen += 2; + + //SSID + pframe = rtw_set_ie(pframe, _SSID_IE_, pmlmeinfo->network.Ssid.SsidLength, pmlmeinfo->network.Ssid.Ssid, &(pattrib->pktlen)); + + //supported rate & extended supported rate + +#if 1 // Check if the AP's supported rates are also supported by STA. + get_rate_set(padapter, sta_bssrate, &sta_bssrate_len); + //DBG_871X("sta_bssrate_len=%d\n", sta_bssrate_len); + + if(pmlmeext->cur_channel == 14)// for JAPAN, channel 14 can only uses B Mode(CCK) + { + sta_bssrate_len = 4; + } + + + //for (i = 0; i < sta_bssrate_len; i++) { + // DBG_871X("sta_bssrate[%d]=%02X\n", i, sta_bssrate[i]); + //} + + for (i = 0; i < NDIS_802_11_LENGTH_RATES_EX; i++) { + if (pmlmeinfo->network.SupportedRates[i] == 0) break; + DBG_871X("network.SupportedRates[%d]=%02X\n", i, pmlmeinfo->network.SupportedRates[i]); + } + + + for (i = 0; i < NDIS_802_11_LENGTH_RATES_EX; i++) { + if (pmlmeinfo->network.SupportedRates[i] == 0) break; + + + // Check if the AP's supported rates are also supported by STA. + for (j=0; j < sta_bssrate_len; j++) { + // Avoid the proprietary data rate (22Mbps) of Handlink WSG-4000 AP + if ( (pmlmeinfo->network.SupportedRates[i]|IEEE80211_BASIC_RATE_MASK) + == (sta_bssrate[j]|IEEE80211_BASIC_RATE_MASK)) { + //DBG_871X("match i = %d, j=%d\n", i, j); + break; + } else { + //DBG_871X("not match: %02X != %02X\n", (pmlmeinfo->network.SupportedRates[i]|IEEE80211_BASIC_RATE_MASK), (sta_bssrate[j]|IEEE80211_BASIC_RATE_MASK)); + } + } + + if (j == sta_bssrate_len) { + // the rate is not supported by STA + DBG_871X("%s(): the rate[%d]=%02X is not supported by STA!\n",__FUNCTION__, i, pmlmeinfo->network.SupportedRates[i]); + } else { + // the rate is supported by STA + bssrate[index++] = pmlmeinfo->network.SupportedRates[i]; + } + } + + bssrate_len = index; + DBG_871X("bssrate_len = %d\n", bssrate_len); + +#else // Check if the AP's supported rates are also supported by STA. +#if 0 + get_rate_set(padapter, bssrate, &bssrate_len); +#else + for (bssrate_len = 0; bssrate_len < NumRates; bssrate_len++) { + if (pmlmeinfo->network.SupportedRates[bssrate_len] == 0) break; + + if (pmlmeinfo->network.SupportedRates[bssrate_len] == 0x2C) // Avoid the proprietary data rate (22Mbps) of Handlink WSG-4000 AP + break; + + bssrate[bssrate_len] = pmlmeinfo->network.SupportedRates[bssrate_len]; + } +#endif +#endif // Check if the AP's supported rates are also supported by STA. + + if (bssrate_len == 0) { + rtw_free_xmitbuf(pxmitpriv, pmgntframe->pxmitbuf); + rtw_free_xmitframe(pxmitpriv, pmgntframe); + goto exit; //don't connect to AP if no joint supported rate + } + + + if (bssrate_len > 8) + { + pframe = rtw_set_ie(pframe, _SUPPORTEDRATES_IE_ , 8, bssrate, &(pattrib->pktlen)); + pframe = rtw_set_ie(pframe, _EXT_SUPPORTEDRATES_IE_ , (bssrate_len - 8), (bssrate + 8), &(pattrib->pktlen)); + } + else + { + pframe = rtw_set_ie(pframe, _SUPPORTEDRATES_IE_ , bssrate_len , bssrate, &(pattrib->pktlen)); + } + +#ifdef CONFIG_DFS + if(pmlmeext->cur_channel > 14) + { + pow_cap_ele[0] = 13; // Minimum transmit power capability + pow_cap_ele[1] = 21; // Maximum transmit power capability + pframe = rtw_set_ie(pframe, _POW_CAP_IE_, 2, pow_cap_ele, &(pattrib->pktlen)); + + //supported channels + do{ + if( pmlmeext->channel_set[sup_ch_idx].ChannelNum <= 14 ) + { + sup_ch[0] = 1; //First channel number + sup_ch[1] = pmlmeext->channel_set[sup_ch_idx].ChannelNum; //Number of channel + } + else + { + sup_ch[idx_5g++] = pmlmeext->channel_set[sup_ch_idx].ChannelNum; + sup_ch[idx_5g++] = 1; + } + sup_ch_idx++; + } + while( pmlmeext->channel_set[sup_ch_idx].ChannelNum != 0 ); + pframe = rtw_set_ie(pframe, _SUPPORTED_CH_IE_, idx_5g, sup_ch, &(pattrib->pktlen)); + } +#endif //CONFIG_DFS + + //RSN + p = rtw_get_ie((pmlmeinfo->network.IEs + sizeof(NDIS_802_11_FIXED_IEs)), _RSN_IE_2_, &ie_len, (pmlmeinfo->network.IELength - sizeof(NDIS_802_11_FIXED_IEs))); + if (p != NULL) + { + pframe = rtw_set_ie(pframe, _RSN_IE_2_, ie_len, (p + 2), &(pattrib->pktlen)); + } + +#ifdef CONFIG_80211N_HT + //HT caps + if(padapter->mlmepriv.htpriv.ht_option==_TRUE) + { + p = rtw_get_ie((pmlmeinfo->network.IEs + sizeof(NDIS_802_11_FIXED_IEs)), _HT_CAPABILITY_IE_, &ie_len, (pmlmeinfo->network.IELength - sizeof(NDIS_802_11_FIXED_IEs))); + if ((p != NULL) && (!(is_ap_in_tkip(padapter)))) + { + _rtw_memcpy(&(pmlmeinfo->HT_caps), (p + 2), sizeof(struct HT_caps_element)); + + //to disable 40M Hz support while gd_bw_40MHz_en = 0 + if( pmlmeext->cur_channel > 14) + { + if(pregpriv->cbw40_enable & BIT(1) ) + cbw40_enable=1; + } + else + if(pregpriv->cbw40_enable & BIT(0) ) + cbw40_enable=1; + + if (cbw40_enable == 0) + { + pmlmeinfo->HT_caps.u.HT_cap_element.HT_caps_info &= (~(BIT(6) | BIT(1))); + } + else + { + pmlmeinfo->HT_caps.u.HT_cap_element.HT_caps_info |= BIT(1); + } + + //todo: disable SM power save mode + pmlmeinfo->HT_caps.u.HT_cap_element.HT_caps_info |= 0x000c; + + rtw_hal_get_hwreg(padapter, HW_VAR_RF_TYPE, (u8 *)(&rf_type)); + //switch (pregpriv->rf_config) + switch(rf_type) + { + case RF_1T1R: + + if(pregpriv->rx_stbc) + pmlmeinfo->HT_caps.u.HT_cap_element.HT_caps_info |= cpu_to_le16(0x0100);//RX STBC One spatial stream + + _rtw_memcpy(pmlmeinfo->HT_caps.u.HT_cap_element.MCS_rate, MCS_rate_1R, 16); + break; + + case RF_2T2R: + case RF_1T2R: + default: + + + if(pregpriv->special_rf_path) + { + if(pregpriv->rx_stbc) + pmlmeinfo->HT_caps.u.HT_cap_element.HT_caps_info |= cpu_to_le16(0x0100);//RX STBC One spatial stream + _rtw_memcpy(pmlmeinfo->HT_caps.u.HT_cap_element.MCS_rate, MCS_rate_1R, 16); + break; + } + + if((pregpriv->rx_stbc == 0x3) ||//enable for 2.4/5 GHz + ((pmlmeext->cur_wireless_mode & WIRELESS_11_24N) && (pregpriv->rx_stbc == 0x1)) || //enable for 2.4GHz + ((pmlmeext->cur_wireless_mode & WIRELESS_11_5N) && (pregpriv->rx_stbc == 0x2)) || //enable for 5GHz + (pregpriv->wifi_spec==1)) + { + DBG_871X("declare supporting RX STBC\n"); + pmlmeinfo->HT_caps.u.HT_cap_element.HT_caps_info |= cpu_to_le16(0x0200);//RX STBC two spatial stream + } + #ifdef CONFIG_DISABLE_MCS13TO15 + if(pmlmeext->cur_bwmode == HT_CHANNEL_WIDTH_40 && (pregpriv->wifi_spec!=1)) + _rtw_memcpy(pmlmeinfo->HT_caps.u.HT_cap_element.MCS_rate, MCS_rate_2R_MCS13TO15_OFF, 16); + else + _rtw_memcpy(pmlmeinfo->HT_caps.u.HT_cap_element.MCS_rate, MCS_rate_2R, 16); + #else //CONFIG_DISABLE_MCS13TO15 + _rtw_memcpy(pmlmeinfo->HT_caps.u.HT_cap_element.MCS_rate, MCS_rate_2R, 16); + #endif //CONFIG_DISABLE_MCS13TO15 + break; + } +#ifdef RTL8192C_RECONFIG_TO_1T1R + { + if(pregpriv->rx_stbc) + pmlmeinfo->HT_caps.u.HT_cap_element.HT_caps_info |= cpu_to_le16(0x0100);//RX STBC One spatial stream + + _rtw_memcpy(pmlmeinfo->HT_caps.u.HT_cap_element.MCS_rate, MCS_rate_1R, 16); + } +#endif + pmlmeinfo->HT_caps.u.HT_cap_element.HT_caps_info = cpu_to_le16(pmlmeinfo->HT_caps.u.HT_cap_element.HT_caps_info); + pframe = rtw_set_ie(pframe, _HT_CAPABILITY_IE_, ie_len , (u8 *)(&(pmlmeinfo->HT_caps)), &(pattrib->pktlen)); + + } + } +#endif + + //vendor specific IE, such as WPA, WMM, WPS + for (i = sizeof(NDIS_802_11_FIXED_IEs); i < pmlmeinfo->network.IELength;) + { + pIE = (PNDIS_802_11_VARIABLE_IEs)(pmlmeinfo->network.IEs + i); + + switch (pIE->ElementID) + { + case _VENDOR_SPECIFIC_IE_: + if ((_rtw_memcmp(pIE->data, RTW_WPA_OUI, 4)) || + (_rtw_memcmp(pIE->data, WMM_OUI, 4)) || + (_rtw_memcmp(pIE->data, WPS_OUI, 4))) + { + if(!padapter->registrypriv.wifi_spec) + { + //Commented by Kurt 20110629 + //In some older APs, WPS handshake + //would be fail if we append vender extensions informations to AP + if(_rtw_memcmp(pIE->data, WPS_OUI, 4)){ + pIE->Length=14; + } + } + pframe = rtw_set_ie(pframe, _VENDOR_SPECIFIC_IE_, pIE->Length, pIE->data, &(pattrib->pktlen)); + } + break; + + default: + break; + } + + i += (pIE->Length + 2); + } + + if (pmlmeinfo->assoc_AP_vendor == realtekAP) + { + pframe = rtw_set_ie(pframe, _VENDOR_SPECIFIC_IE_, 6 , REALTEK_96B_IE, &(pattrib->pktlen)); + } + +#ifdef CONFIG_P2P + +#ifdef CONFIG_IOCTL_CFG80211 + if(wdev_to_priv(padapter->rtw_wdev)->p2p_enabled && pwdinfo->driver_interface == DRIVER_CFG80211 ) + { + if(pmlmepriv->p2p_assoc_req_ie && pmlmepriv->p2p_assoc_req_ie_len>0) + { + _rtw_memcpy(pframe, pmlmepriv->p2p_assoc_req_ie, pmlmepriv->p2p_assoc_req_ie_len); + pframe += pmlmepriv->p2p_assoc_req_ie_len; + pattrib->pktlen += pmlmepriv->p2p_assoc_req_ie_len; + } + } + else +#endif //CONFIG_IOCTL_CFG80211 + { + if(!rtw_p2p_chk_state(pwdinfo, P2P_STATE_NONE) && !rtw_p2p_chk_state(pwdinfo, P2P_STATE_IDLE)) + { + // Should add the P2P IE in the association request frame. + // P2P OUI + + p2pielen = 0; + p2pie[ p2pielen++ ] = 0x50; + p2pie[ p2pielen++ ] = 0x6F; + p2pie[ p2pielen++ ] = 0x9A; + p2pie[ p2pielen++ ] = 0x09; // WFA P2P v1.0 + + // Commented by Albert 20101109 + // According to the P2P Specification, the association request frame should contain 3 P2P attributes + // 1. P2P Capability + // 2. Extended Listen Timing + // 3. Device Info + // Commented by Albert 20110516 + // 4. P2P Interface + + // P2P Capability + // Type: + p2pie[ p2pielen++ ] = P2P_ATTR_CAPABILITY; + + // Length: + *(u16*) ( p2pie + p2pielen ) = cpu_to_le16( 0x0002 ); + p2pielen += 2; + + // Value: + // Device Capability Bitmap, 1 byte + p2pie[ p2pielen++ ] = DMP_P2P_DEVCAP_SUPPORT; + + // Group Capability Bitmap, 1 byte + if ( pwdinfo->persistent_supported ) + p2pie[ p2pielen++ ] = P2P_GRPCAP_PERSISTENT_GROUP | DMP_P2P_GRPCAP_SUPPORT; + else + p2pie[ p2pielen++ ] = DMP_P2P_GRPCAP_SUPPORT; + + // Extended Listen Timing + // Type: + p2pie[ p2pielen++ ] = P2P_ATTR_EX_LISTEN_TIMING; + + // Length: + *(u16*) ( p2pie + p2pielen ) = cpu_to_le16( 0x0004 ); + p2pielen += 2; + + // Value: + // Availability Period + *(u16*) ( p2pie + p2pielen ) = cpu_to_le16( 0xFFFF ); + p2pielen += 2; + + // Availability Interval + *(u16*) ( p2pie + p2pielen ) = cpu_to_le16( 0xFFFF ); + p2pielen += 2; + + // Device Info + // Type: + p2pie[ p2pielen++ ] = P2P_ATTR_DEVICE_INFO; + + // Length: + // 21 -> P2P Device Address (6bytes) + Config Methods (2bytes) + Primary Device Type (8bytes) + // + NumofSecondDevType (1byte) + WPS Device Name ID field (2bytes) + WPS Device Name Len field (2bytes) + *(u16*) ( p2pie + p2pielen ) = cpu_to_le16( 21 + pwdinfo->device_name_len ); + p2pielen += 2; + + // Value: + // P2P Device Address + _rtw_memcpy( p2pie + p2pielen, myid( &padapter->eeprompriv ), ETH_ALEN ); + p2pielen += ETH_ALEN; + + // Config Method + // This field should be big endian. Noted by P2P specification. + if ( ( pwdinfo->ui_got_wps_info == P2P_GOT_WPSINFO_PEER_DISPLAY_PIN ) || + ( pwdinfo->ui_got_wps_info == P2P_GOT_WPSINFO_SELF_DISPLAY_PIN ) ) + { + *(u16*) ( p2pie + p2pielen ) = cpu_to_be16( WPS_CONFIG_METHOD_DISPLAY ); + } + else + { + *(u16*) ( p2pie + p2pielen ) = cpu_to_be16( WPS_CONFIG_METHOD_PBC ); + } + + p2pielen += 2; + + // Primary Device Type + // Category ID + *(u16*) ( p2pie + p2pielen ) = cpu_to_be16( WPS_PDT_CID_MULIT_MEDIA ); + p2pielen += 2; + + // OUI + *(u32*) ( p2pie + p2pielen ) = cpu_to_be32( WPSOUI ); + p2pielen += 4; + + // Sub Category ID + *(u16*) ( p2pie + p2pielen ) = cpu_to_be16( WPS_PDT_SCID_MEDIA_SERVER ); + p2pielen += 2; + + // Number of Secondary Device Types + p2pie[ p2pielen++ ] = 0x00; // No Secondary Device Type List + + // Device Name + // Type: + *(u16*) ( p2pie + p2pielen ) = cpu_to_be16( WPS_ATTR_DEVICE_NAME ); + p2pielen += 2; + + // Length: + *(u16*) ( p2pie + p2pielen ) = cpu_to_be16( pwdinfo->device_name_len ); + p2pielen += 2; + + // Value: + _rtw_memcpy( p2pie + p2pielen, pwdinfo->device_name, pwdinfo->device_name_len ); + p2pielen += pwdinfo->device_name_len; + + // P2P Interface + // Type: + p2pie[ p2pielen++ ] = P2P_ATTR_INTERFACE; + + // Length: + *(u16*) ( p2pie + p2pielen ) = cpu_to_le16( 0x000D ); + p2pielen += 2; + + // Value: + _rtw_memcpy( p2pie + p2pielen, pwdinfo->device_addr, ETH_ALEN ); // P2P Device Address + p2pielen += ETH_ALEN; + + p2pie[ p2pielen++ ] = 1; // P2P Interface Address Count + + _rtw_memcpy( p2pie + p2pielen, pwdinfo->device_addr, ETH_ALEN ); // P2P Interface Address List + p2pielen += ETH_ALEN; + + pframe = rtw_set_ie(pframe, _VENDOR_SPECIFIC_IE_, p2pielen, (unsigned char *) p2pie, &pattrib->pktlen ); + +#ifdef CONFIG_WFD + //wfdielen = build_assoc_req_wfd_ie(pwdinfo, pframe); + //pframe += wfdielen; + //pattrib->pktlen += wfdielen; +#endif //CONFIG_WFD + } + } + +#endif //CONFIG_P2P + +#ifdef CONFIG_WFD +#ifdef CONFIG_IOCTL_CFG80211 + if ( _TRUE == pwdinfo->wfd_info->wfd_enable ) +#endif //CONFIG_IOCTL_CFG80211 + { + wfdielen = build_assoc_req_wfd_ie(pwdinfo, pframe); + pframe += wfdielen; + pattrib->pktlen += wfdielen; + } +#ifdef CONFIG_IOCTL_CFG80211 + else if (pmlmepriv->wfd_assoc_req_ie != NULL && pmlmepriv->wfd_assoc_req_ie_len>0) + { + //WFD IE + _rtw_memcpy(pframe, pmlmepriv->wfd_assoc_req_ie, pmlmepriv->wfd_assoc_req_ie_len); + pattrib->pktlen += pmlmepriv->wfd_assoc_req_ie_len; + pframe += pmlmepriv->wfd_assoc_req_ie_len; + } +#endif //CONFIG_IOCTL_CFG80211 +#endif //CONFIG_WFD + + pattrib->last_txcmdsz = pattrib->pktlen; + dump_mgntframe(padapter, pmgntframe); + + ret = _SUCCESS; + +exit: + if (ret == _SUCCESS) + rtw_buf_update(&pmlmepriv->assoc_req, &pmlmepriv->assoc_req_len, (u8 *)pwlanhdr, pattrib->pktlen); + else + rtw_buf_free(&pmlmepriv->assoc_req, &pmlmepriv->assoc_req_len); + + return; +} + +//when wait_ack is ture, this function shoule be called at process context +static int _issue_nulldata(_adapter *padapter, unsigned char *da, unsigned int power_mode, int wait_ack) +{ + int ret = _FAIL; + struct xmit_frame *pmgntframe; + struct pkt_attrib *pattrib; + unsigned char *pframe; + struct rtw_ieee80211_hdr *pwlanhdr; + unsigned short *fctrl; + struct xmit_priv *pxmitpriv; + struct mlme_ext_priv *pmlmeext; + struct mlme_ext_info *pmlmeinfo; + + //DBG_871X("%s:%d\n", __FUNCTION__, power_mode); + + if(!padapter) + goto exit; + + pxmitpriv = &(padapter->xmitpriv); + pmlmeext = &(padapter->mlmeextpriv); + pmlmeinfo = &(pmlmeext->mlmext_info); + + if ((pmgntframe = alloc_mgtxmitframe(pxmitpriv)) == NULL) + { + goto exit; + } + + //update attribute + pattrib = &pmgntframe->attrib; + update_mgntframe_attrib(padapter, pattrib); + pattrib->retry_ctrl = _FALSE; + + _rtw_memset(pmgntframe->buf_addr, 0, WLANHDR_OFFSET + TXDESC_OFFSET); + + pframe = (u8 *)(pmgntframe->buf_addr) + TXDESC_OFFSET; + pwlanhdr = (struct rtw_ieee80211_hdr *)pframe; + + fctrl = &(pwlanhdr->frame_ctl); + *(fctrl) = 0; + + if((pmlmeinfo->state&0x03) == WIFI_FW_AP_STATE) + { + SetFrDs(fctrl); + } + else if((pmlmeinfo->state&0x03) == WIFI_FW_STATION_STATE) + { + SetToDs(fctrl); + } + + if (power_mode) + { + SetPwrMgt(fctrl); + } + + _rtw_memcpy(pwlanhdr->addr1, da, ETH_ALEN); + _rtw_memcpy(pwlanhdr->addr2, myid(&(padapter->eeprompriv)), ETH_ALEN); + _rtw_memcpy(pwlanhdr->addr3, get_my_bssid(&(pmlmeinfo->network)), ETH_ALEN); + + SetSeqNum(pwlanhdr, pmlmeext->mgnt_seq); + pmlmeext->mgnt_seq++; + SetFrameSubType(pframe, WIFI_DATA_NULL); + + pframe += sizeof(struct rtw_ieee80211_hdr_3addr); + pattrib->pktlen = sizeof(struct rtw_ieee80211_hdr_3addr); + + pattrib->last_txcmdsz = pattrib->pktlen; + + if(wait_ack) + { + ret = dump_mgntframe_and_wait_ack(padapter, pmgntframe); + } + else + { + dump_mgntframe(padapter, pmgntframe); + ret = _SUCCESS; + } + +exit: + return ret; +} + + +//when wait_ms >0 , this function shoule be called at process context +//da == NULL for station mode +int issue_nulldata(_adapter *padapter, unsigned char *da, unsigned int power_mode, int try_cnt, int wait_ms) +{ + int ret; + int i = 0; + u32 start = rtw_get_current_time(); + struct mlme_ext_priv *pmlmeext = &(padapter->mlmeextpriv); + struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info); + + /* da == NULL, assum it's null data for sta to ap*/ + if (da == NULL) + da = get_my_bssid(&(pmlmeinfo->network)); + + do + { + ret = _issue_nulldata(padapter, da, power_mode, wait_ms>0?_TRUE:_FALSE); + + i++; + + if (padapter->bDriverStopped || padapter->bSurpriseRemoved) + break; + + if(i < try_cnt && wait_ms > 0 && ret==_FAIL) + rtw_msleep_os(wait_ms); + + }while((ixmitpriv); + struct mlme_ext_priv *pmlmeext = &(padapter->mlmeextpriv); + struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info); + + DBG_871X("%s\n", __FUNCTION__); + + if ((pmgntframe = alloc_mgtxmitframe(pxmitpriv)) == NULL) + { + goto exit; + } + + //update attribute + pattrib = &pmgntframe->attrib; + update_mgntframe_attrib(padapter, pattrib); + + pattrib->hdrlen +=2; + pattrib->qos_en = _TRUE; + pattrib->eosp = 1; + pattrib->ack_policy = 0; + pattrib->mdata = 0; + + _rtw_memset(pmgntframe->buf_addr, 0, WLANHDR_OFFSET + TXDESC_OFFSET); + + pframe = (u8 *)(pmgntframe->buf_addr) + TXDESC_OFFSET; + pwlanhdr = (struct rtw_ieee80211_hdr *)pframe; + + fctrl = &(pwlanhdr->frame_ctl); + *(fctrl) = 0; + + if((pmlmeinfo->state&0x03) == WIFI_FW_AP_STATE) + { + SetFrDs(fctrl); + } + else if((pmlmeinfo->state&0x03) == WIFI_FW_STATION_STATE) + { + SetToDs(fctrl); + } + + if(pattrib->mdata) + SetMData(fctrl); + + qc = (unsigned short *)(pframe + pattrib->hdrlen - 2); + + SetPriority(qc, tid); + + SetEOSP(qc, pattrib->eosp); + + SetAckpolicy(qc, pattrib->ack_policy); + + _rtw_memcpy(pwlanhdr->addr1, da, ETH_ALEN); + _rtw_memcpy(pwlanhdr->addr2, myid(&(padapter->eeprompriv)), ETH_ALEN); + _rtw_memcpy(pwlanhdr->addr3, get_my_bssid(&(pmlmeinfo->network)), ETH_ALEN); + + SetSeqNum(pwlanhdr, pmlmeext->mgnt_seq); + pmlmeext->mgnt_seq++; + SetFrameSubType(pframe, WIFI_QOS_DATA_NULL); + + pframe += sizeof(struct rtw_ieee80211_hdr_3addr_qos); + pattrib->pktlen = sizeof(struct rtw_ieee80211_hdr_3addr_qos); + + pattrib->last_txcmdsz = pattrib->pktlen; + + if(wait_ack) + { + ret = dump_mgntframe_and_wait_ack(padapter, pmgntframe); + } + else + { + dump_mgntframe(padapter, pmgntframe); + ret = _SUCCESS; + } + +exit: + return ret; +} + +//when wait_ms >0 , this function shoule be called at process context +//da == NULL for station mode +int issue_qos_nulldata(_adapter *padapter, unsigned char *da, u16 tid, int try_cnt, int wait_ms) +{ + int ret; + int i = 0; + u32 start = rtw_get_current_time(); + struct mlme_ext_priv *pmlmeext = &(padapter->mlmeextpriv); + struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info); + + /* da == NULL, assum it's null data for sta to ap*/ + if (da == NULL) + da = get_my_bssid(&(pmlmeinfo->network)); + + do + { + ret = _issue_qos_nulldata(padapter, da, tid, wait_ms>0?_TRUE:_FALSE); + + i++; + + if (padapter->bDriverStopped || padapter->bSurpriseRemoved) + break; + + if(i < try_cnt && wait_ms > 0 && ret==_FAIL) + rtw_msleep_os(wait_ms); + + }while((ixmitpriv); + struct mlme_ext_priv *pmlmeext = &(padapter->mlmeextpriv); + struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info); + int ret = _FAIL; +#ifdef CONFIG_P2P + struct wifidirect_info *pwdinfo= &(padapter->wdinfo); +#endif //CONFIG_P2P + + //DBG_871X("%s to "MAC_FMT"\n", __func__, MAC_ARG(da)); + +#ifdef CONFIG_P2P + if ( !( rtw_p2p_chk_state( pwdinfo, P2P_STATE_NONE ) ) && ( pwdinfo->rx_invitereq_info.scan_op_ch_only ) ) + { + _cancel_timer_ex( &pwdinfo->reset_ch_sitesurvey ); + _set_timer( &pwdinfo->reset_ch_sitesurvey, 10 ); + } +#endif //CONFIG_P2P + + if ((pmgntframe = alloc_mgtxmitframe(pxmitpriv)) == NULL) + { + goto exit; + } + + //update attribute + pattrib = &pmgntframe->attrib; + update_mgntframe_attrib(padapter, pattrib); + pattrib->retry_ctrl = _FALSE; + + _rtw_memset(pmgntframe->buf_addr, 0, WLANHDR_OFFSET + TXDESC_OFFSET); + + pframe = (u8 *)(pmgntframe->buf_addr) + TXDESC_OFFSET; + pwlanhdr = (struct rtw_ieee80211_hdr *)pframe; + + fctrl = &(pwlanhdr->frame_ctl); + *(fctrl) = 0; + + _rtw_memcpy(pwlanhdr->addr1, da, ETH_ALEN); + _rtw_memcpy(pwlanhdr->addr2, myid(&(padapter->eeprompriv)), ETH_ALEN); + _rtw_memcpy(pwlanhdr->addr3, get_my_bssid(&(pmlmeinfo->network)), ETH_ALEN); + + SetSeqNum(pwlanhdr, pmlmeext->mgnt_seq); + pmlmeext->mgnt_seq++; + SetFrameSubType(pframe, WIFI_DEAUTH); + + pframe += sizeof(struct rtw_ieee80211_hdr_3addr); + pattrib->pktlen = sizeof(struct rtw_ieee80211_hdr_3addr); + + reason = cpu_to_le16(reason); + pframe = rtw_set_fixed_ie(pframe, _RSON_CODE_ , (unsigned char *)&reason, &(pattrib->pktlen)); + + pattrib->last_txcmdsz = pattrib->pktlen; + + + if(wait_ack) + { + ret = dump_mgntframe_and_wait_ack(padapter, pmgntframe); + } + else + { + dump_mgntframe(padapter, pmgntframe); + ret = _SUCCESS; + } + +exit: + return ret; +} + +int issue_deauth(_adapter *padapter, unsigned char *da, unsigned short reason) +{ + DBG_871X("%s to "MAC_FMT"\n", __func__, MAC_ARG(da)); + return _issue_deauth(padapter, da, reason, _FALSE); +} + +int issue_deauth_ex(_adapter *padapter, u8 *da, unsigned short reason, int try_cnt, + int wait_ms) +{ + int ret; + int i = 0; + u32 start = rtw_get_current_time(); + + do + { + ret = _issue_deauth(padapter, da, reason, wait_ms>0?_TRUE:_FALSE); + + i++; + + if (padapter->bDriverStopped || padapter->bSurpriseRemoved) + break; + + if(i < try_cnt && wait_ms > 0 && ret==_FAIL) + rtw_msleep_os(wait_ms); + + }while((ixmitpriv); + struct mlme_priv *pmlmepriv = &padapter->mlmepriv; + struct mlme_ext_priv *pmlmeext = &(padapter->mlmeextpriv); + struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info); + + + DBG_871X(FUNC_NDEV_FMT" ra="MAC_FMT", ch:%u, offset:%u\n", + FUNC_NDEV_ARG(padapter->pnetdev), MAC_ARG(ra), new_ch, ch_offset); + + if ((pmgntframe = alloc_mgtxmitframe(pxmitpriv)) == NULL) + return; + + //update attribute + pattrib = &pmgntframe->attrib; + update_mgntframe_attrib(padapter, pattrib); + + _rtw_memset(pmgntframe->buf_addr, 0, WLANHDR_OFFSET + TXDESC_OFFSET); + + pframe = (u8 *)(pmgntframe->buf_addr) + TXDESC_OFFSET; + pwlanhdr = (struct rtw_ieee80211_hdr *)pframe; + + fctrl = &(pwlanhdr->frame_ctl); + *(fctrl) = 0; + + _rtw_memcpy(pwlanhdr->addr1, ra, ETH_ALEN); /* RA */ + _rtw_memcpy(pwlanhdr->addr2, myid(&(padapter->eeprompriv)), ETH_ALEN); /* TA */ + _rtw_memcpy(pwlanhdr->addr3, ra, ETH_ALEN); /* DA = RA */ + + SetSeqNum(pwlanhdr, pmlmeext->mgnt_seq); + pmlmeext->mgnt_seq++; + SetFrameSubType(pframe, WIFI_ACTION); + + pframe += sizeof(struct rtw_ieee80211_hdr_3addr); + pattrib->pktlen = sizeof(struct rtw_ieee80211_hdr_3addr); + + /* category, action */ + { + u8 category, action; + category = RTW_WLAN_CATEGORY_SPECTRUM_MGMT; + action = RTW_WLAN_ACTION_SPCT_CHL_SWITCH; + + pframe = rtw_set_fixed_ie(pframe, 1, &(category), &(pattrib->pktlen)); + pframe = rtw_set_fixed_ie(pframe, 1, &(action), &(pattrib->pktlen)); + } + + pframe = rtw_set_ie_ch_switch(pframe, &(pattrib->pktlen), 0, new_ch, 0); + pframe = rtw_set_ie_secondary_ch_offset(pframe, &(pattrib->pktlen), + hal_ch_offset_to_secondary_ch_offset(ch_offset)); + + pattrib->last_txcmdsz = pattrib->pktlen; + + dump_mgntframe(padapter, pmgntframe); + +} + +#ifdef CONFIG_IEEE80211W +void issue_action_SA_Query(_adapter *padapter, unsigned char *raddr, unsigned char action, unsigned short tid) +{ + u8 category = RTW_WLAN_CATEGORY_SA_QUERY; + u16 reason_code; + struct xmit_frame *pmgntframe; + struct pkt_attrib *pattrib; + u8 *pframe; + struct rtw_ieee80211_hdr *pwlanhdr; + u16 *fctrl; + struct xmit_priv *pxmitpriv = &(padapter->xmitpriv); + struct mlme_ext_priv *pmlmeext = &(padapter->mlmeextpriv); + struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info); + struct sta_info *psta; + struct sta_priv *pstapriv = &padapter->stapriv; + struct registry_priv *pregpriv = &padapter->registrypriv; + + + DBG_871X("%s\n", __FUNCTION__); + + if ((pmgntframe = alloc_mgtxmitframe(pxmitpriv)) == NULL) + { + DBG_871X("%s: alloc_mgtxmitframe fail\n", __FUNCTION__); + return; + } + + //update attribute + pattrib = &pmgntframe->attrib; + update_mgntframe_attrib(padapter, pattrib); + + _rtw_memset(pmgntframe->buf_addr, 0, WLANHDR_OFFSET + TXDESC_OFFSET); + + pframe = (u8 *)(pmgntframe->buf_addr) + TXDESC_OFFSET; + pwlanhdr = (struct rtw_ieee80211_hdr *)pframe; + + fctrl = &(pwlanhdr->frame_ctl); + *(fctrl) = 0; + + if(raddr) + _rtw_memcpy(pwlanhdr->addr1, raddr, ETH_ALEN); + else + _rtw_memcpy(pwlanhdr->addr1, get_my_bssid(&(pmlmeinfo->network)), ETH_ALEN); + _rtw_memcpy(pwlanhdr->addr2, myid(&(padapter->eeprompriv)), ETH_ALEN); + _rtw_memcpy(pwlanhdr->addr3, get_my_bssid(&(pmlmeinfo->network)), ETH_ALEN); + + SetSeqNum(pwlanhdr, pmlmeext->mgnt_seq); + pmlmeext->mgnt_seq++; + SetFrameSubType(pframe, WIFI_ACTION); + + pframe += sizeof(struct rtw_ieee80211_hdr_3addr); + pattrib->pktlen = sizeof(struct rtw_ieee80211_hdr_3addr); + + pframe = rtw_set_fixed_ie(pframe, 1, &category, &pattrib->pktlen); + pframe = rtw_set_fixed_ie(pframe, 1, &action, &pattrib->pktlen); + + switch (action) + { + case 0: //SA Query req + pframe = rtw_set_fixed_ie(pframe, 2, (unsigned char *)&pmlmeext->sa_query_seq, &pattrib->pktlen); + pmlmeext->sa_query_seq++; + //send sa query request to AP, AP should reply sa query response in 1 second + set_sa_query_timer(pmlmeext, 1000); + break; + + case 1: //SA Query rsp + tid = cpu_to_le16(tid); + pframe = rtw_set_fixed_ie(pframe, 2, (unsigned char *)&tid, &pattrib->pktlen); + break; + default: + break; + } + + pattrib->last_txcmdsz = pattrib->pktlen; + + dump_mgntframe(padapter, pmgntframe); +} +#endif //CONFIG_IEEE80211W + +void issue_action_BA(_adapter *padapter, unsigned char *raddr, unsigned char action, unsigned short status) +{ + u8 category = RTW_WLAN_CATEGORY_BACK; + u16 start_seq; + u16 BA_para_set; + u16 reason_code; + u16 BA_timeout_value; + u16 BA_starting_seqctrl; + struct xmit_frame *pmgntframe; + struct pkt_attrib *pattrib; + u8 *pframe; + struct rtw_ieee80211_hdr *pwlanhdr; + u16 *fctrl; + struct xmit_priv *pxmitpriv = &(padapter->xmitpriv); + struct mlme_ext_priv *pmlmeext = &(padapter->mlmeextpriv); + struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info); + struct sta_info *psta; + struct sta_priv *pstapriv = &padapter->stapriv; + struct registry_priv *pregpriv = &padapter->registrypriv; + + + DBG_871X("%s, category=%d, action=%d, status=%d\n", __FUNCTION__, category, action, status); + + if ((pmgntframe = alloc_mgtxmitframe(pxmitpriv)) == NULL) + { + return; + } + + //update attribute + pattrib = &pmgntframe->attrib; + update_mgntframe_attrib(padapter, pattrib); + + _rtw_memset(pmgntframe->buf_addr, 0, WLANHDR_OFFSET + TXDESC_OFFSET); + + pframe = (u8 *)(pmgntframe->buf_addr) + TXDESC_OFFSET; + pwlanhdr = (struct rtw_ieee80211_hdr *)pframe; + + fctrl = &(pwlanhdr->frame_ctl); + *(fctrl) = 0; + + //_rtw_memcpy(pwlanhdr->addr1, get_my_bssid(&(pmlmeinfo->network)), ETH_ALEN); + _rtw_memcpy(pwlanhdr->addr1, raddr, ETH_ALEN); + _rtw_memcpy(pwlanhdr->addr2, myid(&(padapter->eeprompriv)), ETH_ALEN); + _rtw_memcpy(pwlanhdr->addr3, get_my_bssid(&(pmlmeinfo->network)), ETH_ALEN); + + SetSeqNum(pwlanhdr, pmlmeext->mgnt_seq); + pmlmeext->mgnt_seq++; + SetFrameSubType(pframe, WIFI_ACTION); + + pframe += sizeof(struct rtw_ieee80211_hdr_3addr); + pattrib->pktlen = sizeof(struct rtw_ieee80211_hdr_3addr); + + pframe = rtw_set_fixed_ie(pframe, 1, &(category), &(pattrib->pktlen)); + pframe = rtw_set_fixed_ie(pframe, 1, &(action), &(pattrib->pktlen)); + + status = cpu_to_le16(status); + + + if (category == 3) + { + switch (action) + { + case 0: //ADDBA req + do { + pmlmeinfo->dialogToken++; + } while (pmlmeinfo->dialogToken == 0); + pframe = rtw_set_fixed_ie(pframe, 1, &(pmlmeinfo->dialogToken), &(pattrib->pktlen)); + + BA_para_set = (0x1002 | ((status & 0xf) << 2)); //immediate ack & 64 buffer size + //sys_mib.BA_para_set = 0x0802; //immediate ack & 32 buffer size + BA_para_set = cpu_to_le16(BA_para_set); + pframe = rtw_set_fixed_ie(pframe, 2, (unsigned char *)(&(BA_para_set)), &(pattrib->pktlen)); + + //BA_timeout_value = 0xffff;//max: 65535 TUs(~ 65 ms) + BA_timeout_value = 5000;//~ 5ms + BA_timeout_value = cpu_to_le16(BA_timeout_value); + pframe = rtw_set_fixed_ie(pframe, 2, (unsigned char *)(&(BA_timeout_value)), &(pattrib->pktlen)); + + //if ((psta = rtw_get_stainfo(pstapriv, pmlmeinfo->network.MacAddress)) != NULL) + if ((psta = rtw_get_stainfo(pstapriv, raddr)) != NULL) + { + start_seq = (psta->sta_xmitpriv.txseq_tid[status & 0x07]&0xfff) + 1; + + DBG_871X("BA_starting_seqctrl = %d for TID=%d\n", start_seq, status & 0x07); + + psta->BA_starting_seqctrl[status & 0x07] = start_seq; + + BA_starting_seqctrl = start_seq << 4; + } + + BA_starting_seqctrl = cpu_to_le16(BA_starting_seqctrl); + pframe = rtw_set_fixed_ie(pframe, 2, (unsigned char *)(&(BA_starting_seqctrl)), &(pattrib->pktlen)); + break; + + case 1: //ADDBA rsp + pframe = rtw_set_fixed_ie(pframe, 1, &(pmlmeinfo->ADDBA_req.dialog_token), &(pattrib->pktlen)); + pframe = rtw_set_fixed_ie(pframe, 2, (unsigned char *)(&status), &(pattrib->pktlen)); + + //BA_para_set = cpu_to_le16((le16_to_cpu(pmlmeinfo->ADDBA_req.BA_para_set) & 0x3f) | 0x1000); //64 buffer size + BA_para_set = ((le16_to_cpu(pmlmeinfo->ADDBA_req.BA_para_set) & 0x3f) | 0x1000); //64 buffer size + + if(pregpriv->ampdu_amsdu==0)//disabled + BA_para_set = cpu_to_le16(BA_para_set & ~BIT(0)); + else if(pregpriv->ampdu_amsdu==1)//enabled + BA_para_set = cpu_to_le16(BA_para_set | BIT(0)); + else //auto + BA_para_set = cpu_to_le16(BA_para_set); + + pframe = rtw_set_fixed_ie(pframe, 2, (unsigned char *)(&(BA_para_set)), &(pattrib->pktlen)); + pframe = rtw_set_fixed_ie(pframe, 2, (unsigned char *)(&(pmlmeinfo->ADDBA_req.BA_timeout_value)), &(pattrib->pktlen)); + break; + case 2://DELBA + BA_para_set = (status & 0x1F) << 3; + BA_para_set = cpu_to_le16(BA_para_set); + pframe = rtw_set_fixed_ie(pframe, 2, (unsigned char *)(&(BA_para_set)), &(pattrib->pktlen)); + + reason_code = 37;//Requested from peer STA as it does not want to use the mechanism + reason_code = cpu_to_le16(reason_code); + pframe = rtw_set_fixed_ie(pframe, 2, (unsigned char *)(&(reason_code)), &(pattrib->pktlen)); + break; + default: + break; + } + } + + pattrib->last_txcmdsz = pattrib->pktlen; + + dump_mgntframe(padapter, pmgntframe); +} + +static void issue_action_BSSCoexistPacket(_adapter *padapter) +{ + _irqL irqL; + _list *plist, *phead; + unsigned char category, action; + struct xmit_frame *pmgntframe; + struct pkt_attrib *pattrib; + unsigned char *pframe; + struct rtw_ieee80211_hdr *pwlanhdr; + unsigned short *fctrl; + struct wlan_network *pnetwork = NULL; + struct xmit_priv *pxmitpriv = &(padapter->xmitpriv); + struct mlme_priv *pmlmepriv = &padapter->mlmepriv; + struct mlme_ext_priv *pmlmeext = &(padapter->mlmeextpriv); + struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info); + _queue *queue = &(pmlmepriv->scanned_queue); + u8 InfoContent[16] = {0}; + u8 ICS[8][15]; + + if((pmlmepriv->num_FortyMHzIntolerant==0) || (pmlmepriv->num_sta_no_ht==0)) + return; + + if(_TRUE == pmlmeinfo->bwmode_updated) + return; + + + DBG_871X("%s\n", __FUNCTION__); + + + category = RTW_WLAN_CATEGORY_PUBLIC; + action = ACT_PUBLIC_BSSCOEXIST; + + if ((pmgntframe = alloc_mgtxmitframe(pxmitpriv)) == NULL) + { + return; + } + + //update attribute + pattrib = &pmgntframe->attrib; + update_mgntframe_attrib(padapter, pattrib); + + _rtw_memset(pmgntframe->buf_addr, 0, WLANHDR_OFFSET + TXDESC_OFFSET); + + pframe = (u8 *)(pmgntframe->buf_addr) + TXDESC_OFFSET; + pwlanhdr = (struct rtw_ieee80211_hdr *)pframe; + + fctrl = &(pwlanhdr->frame_ctl); + *(fctrl) = 0; + + _rtw_memcpy(pwlanhdr->addr1, get_my_bssid(&(pmlmeinfo->network)), ETH_ALEN); + _rtw_memcpy(pwlanhdr->addr2, myid(&(padapter->eeprompriv)), ETH_ALEN); + _rtw_memcpy(pwlanhdr->addr3, get_my_bssid(&(pmlmeinfo->network)), ETH_ALEN); + + SetSeqNum(pwlanhdr, pmlmeext->mgnt_seq); + pmlmeext->mgnt_seq++; + SetFrameSubType(pframe, WIFI_ACTION); + + pframe += sizeof(struct rtw_ieee80211_hdr_3addr); + pattrib->pktlen = sizeof(struct rtw_ieee80211_hdr_3addr); + + pframe = rtw_set_fixed_ie(pframe, 1, &(category), &(pattrib->pktlen)); + pframe = rtw_set_fixed_ie(pframe, 1, &(action), &(pattrib->pktlen)); + + + // + if(pmlmepriv->num_FortyMHzIntolerant>0) + { + u8 iedata=0; + + iedata |= BIT(2);//20 MHz BSS Width Request + + pframe = rtw_set_ie(pframe, EID_BSSCoexistence, 1, &iedata, &(pattrib->pktlen)); + + } + + + // + _rtw_memset(ICS, 0, sizeof(ICS)); + if(pmlmepriv->num_sta_no_ht>0) + { + int i; + + _enter_critical_bh(&(pmlmepriv->scanned_queue.lock), &irqL); + + phead = get_list_head(queue); + plist = get_next(phead); + + while(1) + { + int len; + u8 *p; + WLAN_BSSID_EX *pbss_network; + + if (rtw_end_of_queue_search(phead,plist)== _TRUE) + break; + + pnetwork = LIST_CONTAINOR(plist, struct wlan_network, list); + + plist = get_next(plist); + + pbss_network = (WLAN_BSSID_EX *)&pnetwork->network; + + p = rtw_get_ie(pbss_network->IEs + _FIXED_IE_LENGTH_, _HT_CAPABILITY_IE_, &len, pbss_network->IELength - _FIXED_IE_LENGTH_); + if((p==NULL) || (len==0))//non-HT + { + if((pbss_network->Configuration.DSConfig<=0) || (pbss_network->Configuration.DSConfig>14)) + continue; + + ICS[0][pbss_network->Configuration.DSConfig]=1; + + if(ICS[0][0] == 0) + ICS[0][0] = 1; + } + + } + + _exit_critical_bh(&(pmlmepriv->scanned_queue.lock), &irqL); + + + for(i= 0;i<8;i++) + { + if(ICS[i][0] == 1) + { + int j, k = 0; + + InfoContent[k] = i; + //SET_BSS_INTOLERANT_ELE_REG_CLASS(InfoContent,i); + k++; + + for(j=1;j<=14;j++) + { + if(ICS[i][j]==1) + { + if(k<16) + { + InfoContent[k] = j; //channel number + //SET_BSS_INTOLERANT_ELE_CHANNEL(InfoContent+k, j); + k++; + } + } + } + + pframe = rtw_set_ie(pframe, EID_BSSIntolerantChlReport, k, InfoContent, &(pattrib->pktlen)); + + } + + } + + + } + + + pattrib->last_txcmdsz = pattrib->pktlen; + + dump_mgntframe(padapter, pmgntframe); + +} + +unsigned int send_delba(_adapter *padapter, u8 initiator, u8 *addr) +{ + struct sta_priv *pstapriv = &padapter->stapriv; + struct sta_info *psta = NULL; + //struct recv_reorder_ctrl *preorder_ctrl; + struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; + struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info); + u16 tid; + + if((pmlmeinfo->state&0x03) != WIFI_FW_AP_STATE) + if (!(pmlmeinfo->state & WIFI_FW_ASSOC_SUCCESS)) + return _SUCCESS; + + psta = rtw_get_stainfo(pstapriv, addr); + if(psta==NULL) + return _SUCCESS; + + //DBG_871X("%s:%s\n", __FUNCTION__, (initiator==0)?"RX_DIR":"TX_DIR"); + + if(initiator==0) // recipient + { + for(tid = 0;tidrecvreorder_ctrl[tid].enable == _TRUE) + { + DBG_871X("rx agg disable tid(%d)\n",tid); + issue_action_BA(padapter, addr, RTW_WLAN_ACTION_DELBA, (((tid <<1) |initiator)&0x1F)); + psta->recvreorder_ctrl[tid].enable = _FALSE; + psta->recvreorder_ctrl[tid].indicate_seq = 0xffff; + #ifdef DBG_RX_SEQ + DBG_871X("DBG_RX_SEQ %s:%d indicate_seq:%u \n", __FUNCTION__, __LINE__, + psta->recvreorder_ctrl[tid].indicate_seq); + #endif + } + } + } + else if(initiator == 1)// originator + { + //DBG_871X("tx agg_enable_bitmap(0x%08x)\n", psta->htpriv.agg_enable_bitmap); + for(tid = 0;tidhtpriv.agg_enable_bitmap & BIT(tid)) + { + DBG_871X("tx agg disable tid(%d)\n",tid); + issue_action_BA(padapter, addr, RTW_WLAN_ACTION_DELBA, (((tid <<1) |initiator)&0x1F) ); + psta->htpriv.agg_enable_bitmap &= ~BIT(tid); + psta->htpriv.candidate_tid_bitmap &= ~BIT(tid); + + } + } + } + + return _SUCCESS; + +} + +unsigned int send_beacon(_adapter *padapter) +{ + u8 bxmitok = _FALSE; + int issue=0; + int poll = 0; +//#ifdef CONFIG_CONCURRENT_MODE + //struct mlme_ext_priv *pmlmeext = &(padapter->mlmeextpriv); + //struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info); + //_adapter *pbuddy_adapter = padapter->pbuddy_adapter; + //struct mlme_priv *pbuddy_mlmepriv = &(pbuddy_adapter->mlmepriv); +//#endif + +#ifdef CONFIG_PCI_HCI + + //DBG_871X("%s\n", __FUNCTION__); + + issue_beacon(padapter); + + return _SUCCESS; + +#endif + +#if defined(CONFIG_USB_HCI) || defined(CONFIG_SDIO_HCI) || defined(CONFIG_GSPI_HCI) + u32 start = rtw_get_current_time(); + + rtw_hal_set_hwreg(padapter, HW_VAR_BCN_VALID, NULL); + do{ + issue_beacon(padapter); + issue++; + do { + rtw_yield_os(); + rtw_hal_get_hwreg(padapter, HW_VAR_BCN_VALID, (u8 *)(&bxmitok)); + poll++; + }while((poll%10)!=0 && _FALSE == bxmitok && !padapter->bSurpriseRemoved && !padapter->bDriverStopped); + + }while(_FALSE == bxmitok && issue<100 && !padapter->bSurpriseRemoved && !padapter->bDriverStopped); + + if(padapter->bSurpriseRemoved || padapter->bDriverStopped) + { + return _FAIL; + } + if(_FALSE == bxmitok) + { + DBG_871X("%s fail! %u ms\n", __FUNCTION__, rtw_get_passing_time_ms(start)); + return _FAIL; + } + else + { + u32 passing_time = rtw_get_passing_time_ms(start); + + if(passing_time > 100 || issue > 3) + DBG_871X("%s success, issue:%d, poll:%d, %u ms\n", __FUNCTION__, issue, poll, rtw_get_passing_time_ms(start)); + //else + // DBG_871X("%s success, issue:%d, poll:%d, %u ms\n", __FUNCTION__, issue, poll, rtw_get_passing_time_ms(start)); + + return _SUCCESS; + } + +#endif + +} + +/**************************************************************************** + +Following are some utitity fuctions for WiFi MLME + +*****************************************************************************/ + +BOOLEAN IsLegal5GChannel( + IN PADAPTER Adapter, + IN u8 channel) +{ + + int i=0; + u8 Channel_5G[45] = {36,38,40,42,44,46,48,50,52,54,56,58, + 60,62,64,100,102,104,106,108,110,112,114,116,118,120,122, + 124,126,128,130,132,134,136,138,140,149,151,153,155,157,159, + 161,163,165}; + for(i=0;imlmeextpriv; + struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info); + u32 initialgain = 0; + u8 restore_initial_gain = 1; + +#ifdef CONFIG_P2P + +#ifdef CONFIG_CONCURRENT_MODE + +#ifdef CONFIG_STA_MODE_SCAN_UNDER_AP_MODE + u8 stay_buddy_ch = 0; +#endif //CONFIG_STA_MODE_SCAN_UNDER_AP_MODE + + struct mlme_priv *pmlmepriv = &(padapter->mlmepriv); + PADAPTER pbuddy_adapter = padapter->pbuddy_adapter; + struct mlme_ext_priv *pbuddy_mlmeext = &pbuddy_adapter->mlmeextpriv; + +#endif //CONFIG_CONCURRENT_MODE + struct wifidirect_info *pwdinfo= &(padapter->wdinfo); + static unsigned char prev_survey_channel = 0; + static unsigned int p2p_scan_count = 0; + + + if ( ( pwdinfo->rx_invitereq_info.scan_op_ch_only ) || ( pwdinfo->p2p_info.scan_op_ch_only ) ) + { + if ( pwdinfo->rx_invitereq_info.scan_op_ch_only ) + { + survey_channel = pwdinfo->rx_invitereq_info.operation_ch[pmlmeext->sitesurvey_res.channel_idx]; + } + else + { + survey_channel = pwdinfo->p2p_info.operation_ch[pmlmeext->sitesurvey_res.channel_idx]; + } + ScanType = SCAN_ACTIVE; + } + else if(rtw_p2p_findphase_ex_is_social(pwdinfo)) + { + // Commented by Albert 2011/06/03 + // The driver is in the find phase, it should go through the social channel. + int ch_set_idx; + survey_channel = pwdinfo->social_chan[pmlmeext->sitesurvey_res.channel_idx]; + ch_set_idx = rtw_ch_set_search_ch(pmlmeext->channel_set, survey_channel); + if (ch_set_idx >= 0) + ScanType = pmlmeext->channel_set[ch_set_idx].ScanType; + else + ScanType = SCAN_ACTIVE; + } + else +#endif //CONFIG_P2P + { + struct rtw_ieee80211_channel *ch; + if (pmlmeext->sitesurvey_res.channel_idx < pmlmeext->sitesurvey_res.ch_num) { + ch = &pmlmeext->sitesurvey_res.ch[pmlmeext->sitesurvey_res.channel_idx]; + survey_channel = ch->hw_value; + ScanType = (ch->flags & RTW_IEEE80211_CHAN_PASSIVE_SCAN) ? SCAN_PASSIVE : SCAN_ACTIVE; + } + } + + if (0) + DBG_871X(FUNC_ADPT_FMT" ch:%u(cnt:%u,idx:%d) at %dms, %c%c%c\n" + , FUNC_ADPT_ARG(padapter) + , survey_channel + , pwdinfo->find_phase_state_exchange_cnt, pmlmeext->sitesurvey_res.channel_idx + , rtw_get_passing_time_ms(padapter->mlmepriv.scan_start_time) + , ScanType?'A':'P', pmlmeext->sitesurvey_res.scan_mode?'A':'P' + , pmlmeext->sitesurvey_res.ssid[0].SsidLength?'S':' ' + ); + + if(survey_channel != 0) + { + //PAUSE 4-AC Queue when site_survey + //rtw_hal_get_hwreg(padapter, HW_VAR_TXPAUSE, (u8 *)(&val8)); + //val8 |= 0x0f; + //rtw_hal_set_hwreg(padapter, HW_VAR_TXPAUSE, (u8 *)(&val8)); +#ifdef CONFIG_CONCURRENT_MODE +#ifdef CONFIG_STA_MODE_SCAN_UNDER_AP_MODE + if((padapter->pbuddy_adapter->mlmeextpriv.mlmext_info.state&0x03) == WIFI_FW_AP_STATE) + { + if( pmlmeinfo->scan_cnt == RTW_SCAN_NUM_OF_CH ) + { + pmlmeinfo->scan_cnt = 0; + survey_channel = pbuddy_mlmeext->cur_channel; + stay_buddy_ch = 1; + } + else + { + if( pmlmeinfo->scan_cnt == 0 ) + stay_buddy_ch = 2; + pmlmeinfo->scan_cnt++; + } + } +#endif //CONFIG_STA_MODE_SCAN_UNDER_AP_MODE +#endif //CONFIG_CONCURRENT_MODE + if(pmlmeext->sitesurvey_res.channel_idx == 0) + { + set_channel_bwmode(padapter, survey_channel, HAL_PRIME_CHNL_OFFSET_DONT_CARE, HT_CHANNEL_WIDTH_20); + } + else + { + SelectChannel(padapter, survey_channel); + } + +#ifdef CONFIG_STA_MODE_SCAN_UNDER_AP_MODE + if( stay_buddy_ch == 1 ) + { + val8 = 0; //survey done + rtw_hal_set_hwreg(padapter, HW_VAR_MLME_SITESURVEY, (u8 *)(&val8)); + + if(check_buddy_mlmeinfo_state(padapter, WIFI_FW_AP_STATE) && + check_buddy_fwstate(padapter, _FW_LINKED)) + { + update_beacon(padapter->pbuddy_adapter, 0, NULL, _TRUE); + } + } + else if( stay_buddy_ch == 2 ) + { + val8 = 1; //under site survey + rtw_hal_set_hwreg(padapter, HW_VAR_MLME_SITESURVEY, (u8 *)(&val8)); + } +#endif //CONFIG_STA_MODE_SCAN_UNDER_AP_MODE + + if(ScanType == SCAN_ACTIVE) //obey the channel plan setting... + { + #ifdef CONFIG_P2P + if(rtw_p2p_chk_state(pwdinfo, P2P_STATE_SCAN) || + rtw_p2p_chk_state(pwdinfo, P2P_STATE_FIND_PHASE_SEARCH) + ) + { + issue_probereq_p2p(padapter, NULL); + issue_probereq_p2p(padapter, NULL); + issue_probereq_p2p(padapter, NULL); + } + else + #endif //CONFIG_P2P + { + int i; + for(i=0;isitesurvey_res.ssid[i].SsidLength) { + //todo: to issue two probe req??? + issue_probereq(padapter, &(pmlmeext->sitesurvey_res.ssid[i]), NULL); + //rtw_msleep_os(SURVEY_TO>>1); + issue_probereq(padapter, &(pmlmeext->sitesurvey_res.ssid[i]), NULL); + } else { + break; + } + } + + if(pmlmeext->sitesurvey_res.scan_mode == SCAN_ACTIVE) { + //todo: to issue two probe req??? + issue_probereq(padapter, NULL, NULL); + //rtw_msleep_os(SURVEY_TO>>1); + issue_probereq(padapter, NULL, NULL); + } + } + } + +#ifdef CONFIG_STA_MODE_SCAN_UNDER_AP_MODE + if( stay_buddy_ch == 1 ) + set_survey_timer(pmlmeext, pmlmeext->chan_scan_time * RTW_STAY_AP_CH_MILLISECOND ); + else +#endif //CONFIG_STA_MODE_SCAN_UNDER_AP_MODE + set_survey_timer(pmlmeext, pmlmeext->chan_scan_time); + + } + else + { + + // channel number is 0 or this channel is not valid. + +#ifdef CONFIG_CONCURRENT_MODE + u8 cur_channel; + u8 cur_bwmode; + u8 cur_ch_offset; + + if (rtw_get_ch_setting_union(padapter, &cur_channel, &cur_bwmode, &cur_ch_offset) != 0) + { + if (0) + DBG_871X(FUNC_ADPT_FMT" back to linked union - ch:%u, bw:%u, offset:%u\n", + FUNC_ADPT_ARG(padapter), cur_channel, cur_bwmode, cur_ch_offset); + } + #ifdef CONFIG_IOCTL_CFG80211 + else if(padapter->pbuddy_adapter + && pbuddy_adapter->wdinfo.driver_interface == DRIVER_CFG80211 + && wdev_to_priv(pbuddy_adapter->rtw_wdev)->p2p_enabled + && rtw_p2p_chk_state(&pbuddy_adapter->wdinfo, P2P_STATE_LISTEN) + ) + { + cur_channel = pbuddy_adapter->wdinfo.listen_channel; + cur_bwmode = pbuddy_mlmeext->cur_bwmode; + cur_ch_offset = pbuddy_mlmeext->cur_ch_offset; + } + #endif + else + { + cur_channel = pmlmeext->cur_channel; + cur_bwmode = pmlmeext->cur_bwmode; + cur_ch_offset = pmlmeext->cur_ch_offset; + } +#endif + + +#ifdef CONFIG_P2P + if(rtw_p2p_chk_state(pwdinfo, P2P_STATE_SCAN) || rtw_p2p_chk_state(pwdinfo, P2P_STATE_FIND_PHASE_SEARCH)) + { + if( ( pwdinfo->rx_invitereq_info.scan_op_ch_only ) || ( pwdinfo->p2p_info.scan_op_ch_only ) ) + { + // Set the find_phase_state_exchange_cnt to P2P_FINDPHASE_EX_CNT. + // This will let the following flow to run the scanning end. + rtw_p2p_findphase_ex_set(pwdinfo, P2P_FINDPHASE_EX_MAX); + } + #ifdef CONFIG_DBG_P2P + DBG_871X( "[%s] find phase exchange cnt = %d\n", __FUNCTION__, pwdinfo->find_phase_state_exchange_cnt ); + #endif + } + + if(rtw_p2p_findphase_ex_is_needed(pwdinfo)) + { + // Set the P2P State to the listen state of find phase and set the current channel to the listen channel + set_channel_bwmode(padapter, pwdinfo->listen_channel, HAL_PRIME_CHNL_OFFSET_DONT_CARE, HT_CHANNEL_WIDTH_20); + rtw_p2p_set_state(pwdinfo, P2P_STATE_FIND_PHASE_LISTEN); + pmlmeext->sitesurvey_res.state = SCAN_DISABLE; + + //turn on dynamic functions + Restore_DM_Func_Flag(padapter); + //Switch_DM_Func(padapter, DYNAMIC_FUNC_DIG|DYNAMIC_FUNC_HP|DYNAMIC_FUNC_SS, _TRUE); + + _set_timer( &pwdinfo->find_phase_timer, ( u32 ) ( ( u32 ) ( pwdinfo->listen_dwell ) * 100 ) ); + } + else +#endif //CONFIG_P2P + { + +#ifdef CONFIG_STA_MODE_SCAN_UNDER_AP_MODE + pmlmeinfo->scan_cnt = 0; +#endif //CONFIG_DMP_STA_NODE_SCAN_UNDER_AP_MODE + +#ifdef CONFIG_ANTENNA_DIVERSITY + // 20100721:Interrupt scan operation here. + // For SW antenna diversity before link, it needs to switch to another antenna and scan again. + // It compares the scan result and select beter one to do connection. + if(rtw_hal_antdiv_before_linked(padapter)) + { + pmlmeext->sitesurvey_res.bss_cnt = 0; + pmlmeext->sitesurvey_res.channel_idx = -1; + pmlmeext->chan_scan_time = SURVEY_TO /2; + set_survey_timer(pmlmeext, pmlmeext->chan_scan_time); + return; + } +#endif + +#ifdef CONFIG_P2P + if(rtw_p2p_chk_state(pwdinfo, P2P_STATE_SCAN) || rtw_p2p_chk_state(pwdinfo, P2P_STATE_FIND_PHASE_SEARCH)) + { + #ifdef CONFIG_CONCURRENT_MODE + if( pwdinfo->driver_interface == DRIVER_WEXT ) + { + if ( check_buddy_fwstate(padapter, _FW_LINKED ) ) + { + _set_timer( &pwdinfo->ap_p2p_switch_timer, 500 ); + } + } + rtw_p2p_set_state(pwdinfo, rtw_p2p_pre_state(pwdinfo)); + #else + rtw_p2p_set_state(pwdinfo, rtw_p2p_pre_state(pwdinfo)); + #endif + } + rtw_p2p_findphase_ex_set(pwdinfo, P2P_FINDPHASE_EX_NONE); +#endif //CONFIG_P2P + + pmlmeext->sitesurvey_res.state = SCAN_COMPLETE; + + //switch back to the original channel + //SelectChannel(padapter, pmlmeext->cur_channel, pmlmeext->cur_ch_offset); + + { +#ifdef CONFIG_CONCURRENT_MODE + set_channel_bwmode(padapter, cur_channel, cur_ch_offset, cur_bwmode); +#else +#ifdef CONFIG_DUALMAC_CONCURRENT + dc_set_channel_bwmode_survey_done(padapter); +#else + if( pwdinfo->driver_interface == DRIVER_WEXT ) + { + if( rtw_p2p_chk_state(pwdinfo, P2P_STATE_LISTEN) ) + { + set_channel_bwmode(padapter, pwdinfo->listen_channel, HAL_PRIME_CHNL_OFFSET_DONT_CARE, HT_CHANNEL_WIDTH_20); + } + else + set_channel_bwmode(padapter, pmlmeext->cur_channel, pmlmeext->cur_ch_offset, pmlmeext->cur_bwmode); + } + else if( pwdinfo->driver_interface == DRIVER_CFG80211 ) + { + set_channel_bwmode(padapter, pmlmeext->cur_channel, pmlmeext->cur_ch_offset, pmlmeext->cur_bwmode); + } +#endif //CONFIG_DUALMAC_CONCURRENT +#endif //CONFIG_CONCURRENT_MODE + } + + //flush 4-AC Queue after site_survey + //val8 = 0; + //rtw_hal_set_hwreg(padapter, HW_VAR_TXPAUSE, (u8 *)(&val8)); + + val8 = 0; //survey done + rtw_hal_set_hwreg(padapter, HW_VAR_MLME_SITESURVEY, (u8 *)(&val8)); + + //config MSR + Set_MSR(padapter, (pmlmeinfo->state & 0x3)); + + +#ifdef CONFIG_IOCTL_CFG80211 + if((wdev_to_priv(padapter->rtw_wdev))->p2p_enabled == _TRUE) + { + restore_initial_gain = 0; + } +#endif //CONFIG_IOCTL_CFG80211 + + if(restore_initial_gain == 1) + { + initialgain = 0xff; //restore RX GAIN + rtw_hal_set_hwreg(padapter, HW_VAR_INITIAL_GAIN, (u8 *)(&initialgain)); + } + + //turn on dynamic functions + Restore_DM_Func_Flag(padapter); + //Switch_DM_Func(padapter, DYNAMIC_FUNC_DIG|DYNAMIC_FUNC_HP|DYNAMIC_FUNC_SS, _TRUE); + + if (is_client_associated_to_ap(padapter) == _TRUE) + { + issue_nulldata(padapter, NULL, 0, 3, 500); + +#ifdef CONFIG_CONCURRENT_MODE + if(is_client_associated_to_ap(padapter->pbuddy_adapter) == _TRUE) + { + DBG_871X("adapter is surveydone(buddy_adapter is linked), issue nulldata(pwrbit=0)\n"); + + issue_nulldata(padapter->pbuddy_adapter, NULL, 0, 3, 500); + } +#endif + } +#ifdef CONFIG_CONCURRENT_MODE + else if(is_client_associated_to_ap(padapter->pbuddy_adapter) == _TRUE) + { + issue_nulldata(padapter->pbuddy_adapter, NULL, 0, 3, 500); + } +#endif + + report_surveydone_event(padapter); + + pmlmeext->chan_scan_time = SURVEY_TO; + pmlmeext->sitesurvey_res.state = SCAN_DISABLE; + + issue_action_BSSCoexistPacket(padapter); + issue_action_BSSCoexistPacket(padapter); + issue_action_BSSCoexistPacket(padapter); + + } + +#ifdef CONFIG_CONCURRENT_MODE + if(check_buddy_mlmeinfo_state(padapter, WIFI_FW_AP_STATE) && + check_buddy_fwstate(padapter, _FW_LINKED)) + { + + DBG_871X("survey done, current CH=%d, BW=%d, offset=%d\n", cur_channel, cur_bwmode, cur_ch_offset); + + DBG_871X("restart pbuddy_adapter's beacon\n"); + + update_beacon(padapter->pbuddy_adapter, 0, NULL, _TRUE); + } +#endif + + } + + return; + +} + +//collect bss info from Beacon and Probe response frames. +u8 collect_bss_info(_adapter *padapter, union recv_frame *precv_frame, WLAN_BSSID_EX *bssid) +{ + int i; + u32 len; + u8 *p; + u16 val16, subtype; + u8 *pframe = precv_frame->u.hdr.rx_data; + u32 packet_len = precv_frame->u.hdr.len; + struct registry_priv *pregistrypriv = &padapter->registrypriv; + struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; + struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info); + + len = packet_len - sizeof(struct rtw_ieee80211_hdr_3addr); + + if (len > MAX_IE_SZ) + { + //DBG_871X("IE too long for survey event\n"); + return _FAIL; + } + + _rtw_memset(bssid, 0, sizeof(WLAN_BSSID_EX)); + + subtype = GetFrameSubType(pframe); + + if(subtype==WIFI_BEACON) + bssid->Reserved[0] = 1; + else + bssid->Reserved[0] = 0; + + bssid->Length = sizeof(WLAN_BSSID_EX) - MAX_IE_SZ + len; + + //below is to copy the information element + bssid->IELength = len; + _rtw_memcpy(bssid->IEs, (pframe + sizeof(struct rtw_ieee80211_hdr_3addr)), bssid->IELength); + + //get the signal strength + bssid->PhyInfo.SignalQuality = precv_frame->u.hdr.attrib.signal_qual;//in percentage + bssid->PhyInfo.SignalStrength = precv_frame->u.hdr.attrib.signal_strength;//in percentage + bssid->Rssi = precv_frame->u.hdr.attrib.RecvSignalPower; // in dBM.raw data + +#ifdef CONFIG_ANTENNA_DIVERSITY + //rtw_hal_get_hwreg(padapter, HW_VAR_CURRENT_ANTENNA, (u8 *)(&bssid->PhyInfo.Optimum_antenna)); + rtw_hal_get_def_var(padapter, HAL_DEF_CURRENT_ANTENNA, &bssid->PhyInfo.Optimum_antenna); +#endif + + // checking SSID + if ((p = rtw_get_ie(bssid->IEs + _FIXED_IE_LENGTH_, _SSID_IE_, &len, bssid->IELength - _FIXED_IE_LENGTH_)) == NULL) + { + DBG_871X("marc: cannot find SSID for survey event\n"); + return _FAIL; + } + + if (*(p + 1)) + { + if (len > NDIS_802_11_LENGTH_SSID) + { + DBG_871X("%s()-%d: IE too long (%d) for survey event\n", __FUNCTION__, __LINE__, len); + return _FAIL; + } + _rtw_memcpy(bssid->Ssid.Ssid, (p + 2), *(p + 1)); + bssid->Ssid.SsidLength = *(p + 1); + } + else + { + bssid->Ssid.SsidLength = 0; + } + + _rtw_memset(bssid->SupportedRates, 0, NDIS_802_11_LENGTH_RATES_EX); + + //checking rate info... + i = 0; + p = rtw_get_ie(bssid->IEs + _FIXED_IE_LENGTH_, _SUPPORTEDRATES_IE_, &len, bssid->IELength - _FIXED_IE_LENGTH_); + if (p != NULL) + { + if (len > NDIS_802_11_LENGTH_RATES_EX) + { + DBG_871X("%s()-%d: IE too long (%d) for survey event\n", __FUNCTION__, __LINE__, len); + return _FAIL; + } + _rtw_memcpy(bssid->SupportedRates, (p + 2), len); + i = len; + } + + p = rtw_get_ie(bssid->IEs + _FIXED_IE_LENGTH_, _EXT_SUPPORTEDRATES_IE_, &len, bssid->IELength - _FIXED_IE_LENGTH_); + if (p != NULL) + { + if (len > (NDIS_802_11_LENGTH_RATES_EX-i)) + { + DBG_871X("%s()-%d: IE too long (%d) for survey event\n", __FUNCTION__, __LINE__, len); + return _FAIL; + } + _rtw_memcpy(bssid->SupportedRates + i, (p + 2), len); + } + + //todo: +#if 0 + if (judge_network_type(bssid->SupportedRates, (len + i)) == WIRELESS_11B) + { + bssid->NetworkTypeInUse = Ndis802_11DS; + } + else +#endif + { + bssid->NetworkTypeInUse = Ndis802_11OFDM24; + } + + if (bssid->IELength < 12) + return _FAIL; + + // Checking for DSConfig + p = rtw_get_ie(bssid->IEs + _FIXED_IE_LENGTH_, _DSSET_IE_, &len, bssid->IELength - _FIXED_IE_LENGTH_); + + bssid->Configuration.DSConfig = 0; + bssid->Configuration.Length = 0; + + if (p) + { + bssid->Configuration.DSConfig = *(p + 2); + } + else + {// In 5G, some ap do not have DSSET IE + // checking HT info for channel + p = rtw_get_ie(bssid->IEs + _FIXED_IE_LENGTH_, _HT_ADD_INFO_IE_, &len, bssid->IELength - _FIXED_IE_LENGTH_); + if(p) + { + struct HT_info_element *HT_info = (struct HT_info_element *)(p + 2); + bssid->Configuration.DSConfig = HT_info->primary_channel; + } + else + { // use current channel + bssid->Configuration.DSConfig = rtw_get_oper_ch(padapter); + } + } + + _rtw_memcpy(&bssid->Configuration.BeaconPeriod, rtw_get_beacon_interval_from_ie(bssid->IEs), 2); + bssid->Configuration.BeaconPeriod = le32_to_cpu(bssid->Configuration.BeaconPeriod); + + val16 = rtw_get_capability((WLAN_BSSID_EX *)bssid); + + if (val16 & BIT(0)) + { + bssid->InfrastructureMode = Ndis802_11Infrastructure; + _rtw_memcpy(bssid->MacAddress, GetAddr2Ptr(pframe), ETH_ALEN); + } + else + { + bssid->InfrastructureMode = Ndis802_11IBSS; + _rtw_memcpy(bssid->MacAddress, GetAddr3Ptr(pframe), ETH_ALEN); + } + + if (val16 & BIT(4)) + bssid->Privacy = 1; + else + bssid->Privacy = 0; + + bssid->Configuration.ATIMWindow = 0; + + //20/40 BSS Coexistence check + if((pregistrypriv->wifi_spec==1) && (_FALSE == pmlmeinfo->bwmode_updated)) + { + struct mlme_priv *pmlmepriv = &padapter->mlmepriv; + + p = rtw_get_ie(bssid->IEs + _FIXED_IE_LENGTH_, _HT_CAPABILITY_IE_, &len, bssid->IELength - _FIXED_IE_LENGTH_); + if(p && len>0) + { + struct HT_caps_element *pHT_caps; + pHT_caps = (struct HT_caps_element *)(p + 2); + + if(pHT_caps->u.HT_cap_element.HT_caps_info&BIT(14)) + { + pmlmepriv->num_FortyMHzIntolerant++; + } + } + else + { + pmlmepriv->num_sta_no_ht++; + } + + } + +#ifdef CONFIG_INTEL_WIDI + //process_intel_widi_query_or_tigger(padapter, bssid); + if(process_intel_widi_query_or_tigger(padapter, bssid)) + { + return _FAIL; + } +#endif // CONFIG_INTEL_WIDI + + #if defined(DBG_RX_SIGNAL_DISPLAY_SSID_MONITORED) & 1 + if(strcmp(bssid->Ssid.Ssid, DBG_RX_SIGNAL_DISPLAY_SSID_MONITORED) == 0) { + DBG_871X("Receiving %s("MAC_FMT", DSConfig:%u) from ch%u with ss:%3u, sq:%3u, RawRSSI:%3ld\n" + , bssid->Ssid.Ssid, MAC_ARG(bssid->MacAddress), bssid->Configuration.DSConfig + , rtw_get_oper_ch(padapter) + , bssid->PhyInfo.SignalStrength, bssid->PhyInfo.SignalQuality, bssid->Rssi + ); + } + #endif + + // mark bss info receving from nearby channel as SignalQuality 101 + if(bssid->Configuration.DSConfig != rtw_get_oper_ch(padapter)) + { + bssid->PhyInfo.SignalQuality= 101; + } + + return _SUCCESS; +} + +void start_create_ibss(_adapter* padapter) +{ + unsigned short caps; + u8 val8; + u8 join_type; + struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; + struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info); + WLAN_BSSID_EX *pnetwork = (WLAN_BSSID_EX*)(&(pmlmeinfo->network)); + pmlmeext->cur_channel = (u8)pnetwork->Configuration.DSConfig; + pmlmeinfo->bcn_interval = get_beacon_interval(pnetwork); + + //update wireless mode + update_wireless_mode(padapter); + + //udpate capability + caps = rtw_get_capability((WLAN_BSSID_EX *)pnetwork); + update_capinfo(padapter, caps); + if(caps&cap_IBSS)//adhoc master + { + //set_opmode_cmd(padapter, adhoc);//removed + + val8 = 0xcf; + rtw_hal_set_hwreg(padapter, HW_VAR_SEC_CFG, (u8 *)(&val8)); + + //switch channel + //SelectChannel(padapter, pmlmeext->cur_channel, HAL_PRIME_CHNL_OFFSET_DONT_CARE); + set_channel_bwmode(padapter, pmlmeext->cur_channel, HAL_PRIME_CHNL_OFFSET_DONT_CARE, HT_CHANNEL_WIDTH_20); + + beacon_timing_control(padapter); + + //set msr to WIFI_FW_ADHOC_STATE + pmlmeinfo->state = WIFI_FW_ADHOC_STATE; + Set_MSR(padapter, (pmlmeinfo->state & 0x3)); + + //issue beacon + if(send_beacon(padapter)==_FAIL) + { + RT_TRACE(_module_rtl871x_mlme_c_,_drv_err_,("issuing beacon frame fail....\n")); + + report_join_res(padapter, -1); + pmlmeinfo->state = WIFI_FW_NULL_STATE; + } + else + { + rtw_hal_set_hwreg(padapter, HW_VAR_BSSID, padapter->registrypriv.dev_network.MacAddress); + join_type = 0; + rtw_hal_set_hwreg(padapter, HW_VAR_MLME_JOIN, (u8 *)(&join_type)); + + report_join_res(padapter, 1); + pmlmeinfo->state |= WIFI_FW_ASSOC_SUCCESS; + } + } + else + { + DBG_871X("start_create_ibss, invalid cap:%x\n", caps); + return; + } + +} + +void start_clnt_join(_adapter* padapter) +{ + unsigned short caps; + u8 val8; + struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; + struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info); + WLAN_BSSID_EX *pnetwork = (WLAN_BSSID_EX*)(&(pmlmeinfo->network)); + + //update wireless mode + update_wireless_mode(padapter); + + //udpate capability + caps = rtw_get_capability((WLAN_BSSID_EX *)pnetwork); + update_capinfo(padapter, caps); + if (caps&cap_ESS) + { + Set_MSR(padapter, WIFI_FW_STATION_STATE); + + val8 = (pmlmeinfo->auth_algo == dot11AuthAlgrthm_8021X)? 0xcc: 0xcf; + rtw_hal_set_hwreg(padapter, HW_VAR_SEC_CFG, (u8 *)(&val8)); + + #ifdef CONFIG_DEAUTH_BEFORE_CONNECT + // Because of AP's not receiving deauth before + // AP may: 1)not response auth or 2)deauth us after link is complete + // issue deauth before issuing auth to deal with the situation + + // Commented by Albert 2012/07/21 + // For the Win8 P2P connection, it will be hard to have a successful connection if this Wi-Fi doesn't connect to it. + { + #ifdef CONFIG_P2P + _queue *queue = &(padapter->mlmepriv.scanned_queue); + _list *head = get_list_head(queue); + _list *pos = get_next(head); + struct wlan_network *scanned = NULL; + u8 ie_offset = 0; + _irqL irqL; + bool has_p2p_ie = _FALSE; + + _enter_critical_bh(&(padapter->mlmepriv.scanned_queue.lock), &irqL); + + for (pos = get_next(head);!rtw_end_of_queue_search(head, pos); pos = get_next(pos)) { + + scanned = LIST_CONTAINOR(pos, struct wlan_network, list); + if(scanned==NULL) + rtw_warn_on(1); + + if (_rtw_memcmp(&(scanned->network.Ssid), &(pnetwork->Ssid), sizeof(NDIS_802_11_SSID)) == _TRUE + && _rtw_memcmp(scanned->network.MacAddress, pnetwork->MacAddress, sizeof(NDIS_802_11_MAC_ADDRESS)) == _TRUE + ) { + ie_offset = (scanned->network.Reserved[0] == 2? 0:12); + if (rtw_get_p2p_ie(scanned->network.IEs+ie_offset, scanned->network.IELength-ie_offset, NULL, NULL)) + has_p2p_ie = _TRUE; + break; + } + } + + _exit_critical_bh(&(padapter->mlmepriv.scanned_queue.lock), &irqL); + + if (scanned == NULL || rtw_end_of_queue_search(head, pos) || has_p2p_ie == _FALSE) + #endif /* CONFIG_P2P */ + issue_deauth_ex(padapter, pnetwork->MacAddress, WLAN_REASON_DEAUTH_LEAVING, 5, 100); + } + #endif /* CONFIG_DEAUTH_BEFORE_CONNECT */ + + //here wait for receiving the beacon to start auth + //and enable a timer + set_link_timer(pmlmeext, decide_wait_for_beacon_timeout(pmlmeinfo->bcn_interval)); + + pmlmeinfo->state = WIFI_FW_AUTH_NULL | WIFI_FW_STATION_STATE; + } + else if (caps&cap_IBSS) //adhoc client + { + Set_MSR(padapter, WIFI_FW_ADHOC_STATE); + + val8 = 0xcf; + rtw_hal_set_hwreg(padapter, HW_VAR_SEC_CFG, (u8 *)(&val8)); + + //switch channel + set_channel_bwmode(padapter, pmlmeext->cur_channel, pmlmeext->cur_ch_offset, pmlmeext->cur_bwmode); + + beacon_timing_control(padapter); + + pmlmeinfo->state = WIFI_FW_ADHOC_STATE; + + report_join_res(padapter, 1); + } + else + { + //DBG_871X("marc: invalid cap:%x\n", caps); + return; + } + +} + +void start_clnt_auth(_adapter* padapter) +{ + struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; + struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info); + + _cancel_timer_ex(&pmlmeext->link_timer); + + pmlmeinfo->state &= (~WIFI_FW_AUTH_NULL); + pmlmeinfo->state |= WIFI_FW_AUTH_STATE; + + pmlmeinfo->auth_seq = 1; + pmlmeinfo->reauth_count = 0; + pmlmeinfo->reassoc_count = 0; + pmlmeinfo->link_count = 0; + pmlmeext->retry = 0; + + + issue_auth(padapter, NULL, 0); + + set_link_timer(pmlmeext, REAUTH_TO); + +} + + +void start_clnt_assoc(_adapter* padapter) +{ + struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; + struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info); + + _cancel_timer_ex(&pmlmeext->link_timer); + + pmlmeinfo->state &= (~(WIFI_FW_AUTH_NULL | WIFI_FW_AUTH_STATE)); + pmlmeinfo->state |= (WIFI_FW_AUTH_SUCCESS | WIFI_FW_ASSOC_STATE); + + issue_assocreq(padapter); + + set_link_timer(pmlmeext, REASSOC_TO); +} + +unsigned int receive_disconnect(_adapter *padapter, unsigned char *MacAddr, unsigned short reason) +{ + struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; + struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info); + + //check A3 + if (!(_rtw_memcmp(MacAddr, get_my_bssid(&pmlmeinfo->network), ETH_ALEN))) + return _SUCCESS; + + DBG_871X("%s\n", __FUNCTION__); + + if((pmlmeinfo->state&0x03) == WIFI_FW_STATION_STATE) + { + if (pmlmeinfo->state & WIFI_FW_ASSOC_SUCCESS) + { + pmlmeinfo->state = WIFI_FW_NULL_STATE; + report_del_sta_event(padapter, MacAddr, reason); + + } + else if (pmlmeinfo->state & WIFI_FW_LINKING_STATE) + { + pmlmeinfo->state = WIFI_FW_NULL_STATE; + report_join_res(padapter, -2); + } + } + + return _SUCCESS; +} + +#ifdef CONFIG_80211D +static void process_80211d(PADAPTER padapter, WLAN_BSSID_EX *bssid) +{ + struct registry_priv *pregistrypriv; + struct mlme_ext_priv *pmlmeext; + RT_CHANNEL_INFO *chplan_new; + u8 channel; + u8 i; + + + pregistrypriv = &padapter->registrypriv; + pmlmeext = &padapter->mlmeextpriv; + + // Adjust channel plan by AP Country IE + if (pregistrypriv->enable80211d && + (!pmlmeext->update_channel_plan_by_ap_done)) + { + u8 *ie, *p; + u32 len; + RT_CHANNEL_PLAN chplan_ap; + RT_CHANNEL_INFO chplan_sta[MAX_CHANNEL_NUM]; + u8 country[4]; + u8 fcn; // first channel number + u8 noc; // number of channel + u8 j, k; + + ie = rtw_get_ie(bssid->IEs + _FIXED_IE_LENGTH_, _COUNTRY_IE_, &len, bssid->IELength - _FIXED_IE_LENGTH_); + if (!ie) return; + if (len < 6) return; + + ie += 2; + p = ie; + ie += len; + + _rtw_memset(country, 0, 4); + _rtw_memcpy(country, p, 3); + p += 3; + RT_TRACE(_module_rtl871x_mlme_c_, _drv_notice_, + ("%s: 802.11d country=%s\n", __FUNCTION__, country)); + + i = 0; + while ((ie - p) >= 3) + { + fcn = *(p++); + noc = *(p++); + p++; + + for (j = 0; j < noc; j++) + { + if (fcn <= 14) channel = fcn + j; // 2.4 GHz + else channel = fcn + j*4; // 5 GHz + + chplan_ap.Channel[i++] = channel; + } + } + chplan_ap.Len = i; + +#ifdef CONFIG_DEBUG_RTL871X +#ifdef PLATFORM_LINUX + i = 0; + printk("%s: AP[%s] channel plan {", __func__, bssid->Ssid.Ssid); + while ((i < chplan_ap.Len) && (chplan_ap.Channel[i] != 0)) + { + printk("%02d,", chplan_ap.Channel[i]); + i++; + } + printk("}\n"); +#endif +#endif + + _rtw_memcpy(chplan_sta, pmlmeext->channel_set, sizeof(chplan_sta)); +#ifdef CONFIG_DEBUG_RTL871X +#ifdef PLATFORM_LINUX + i = 0; + printk("%s: STA channel plan {", __func__); + while ((i < MAX_CHANNEL_NUM) && (chplan_sta[i].ChannelNum != 0)) + { + printk("%02d(%c),", chplan_sta[i].ChannelNum, chplan_sta[i].ScanType==SCAN_PASSIVE?'p':'a'); + i++; + } + printk("}\n"); +#endif +#endif + + _rtw_memset(pmlmeext->channel_set, 0, sizeof(pmlmeext->channel_set)); + chplan_new = pmlmeext->channel_set; + + i = j = k = 0; + if (pregistrypriv->wireless_mode & WIRELESS_11G) + { + do { + if ((i == MAX_CHANNEL_NUM) || + (chplan_sta[i].ChannelNum == 0) || + (chplan_sta[i].ChannelNum > 14)) + break; + + if ((j == chplan_ap.Len) || (chplan_ap.Channel[j] > 14)) + break; + + if (chplan_sta[i].ChannelNum == chplan_ap.Channel[j]) + { + chplan_new[k].ChannelNum = chplan_ap.Channel[j]; + chplan_new[k].ScanType = SCAN_ACTIVE; + i++; + j++; + k++; + } + else if (chplan_sta[i].ChannelNum < chplan_ap.Channel[j]) + { + chplan_new[k].ChannelNum = chplan_sta[i].ChannelNum; +// chplan_new[k].ScanType = chplan_sta[i].ScanType; + chplan_new[k].ScanType = SCAN_PASSIVE; + i++; + k++; + } + else if (chplan_sta[i].ChannelNum > chplan_ap.Channel[j]) + { + chplan_new[k].ChannelNum = chplan_ap.Channel[j]; + chplan_new[k].ScanType = SCAN_ACTIVE; + j++; + k++; + } + } while (1); + + // change AP not support channel to Passive scan + while ((i < MAX_CHANNEL_NUM) && + (chplan_sta[i].ChannelNum != 0) && + (chplan_sta[i].ChannelNum <= 14)) + { + chplan_new[k].ChannelNum = chplan_sta[i].ChannelNum; +// chplan_new[k].ScanType = chplan_sta[i].ScanType; + chplan_new[k].ScanType = SCAN_PASSIVE; + i++; + k++; + } + + // add channel AP supported + while ((j < chplan_ap.Len) && (chplan_ap.Channel[j] <= 14)) + { + chplan_new[k].ChannelNum = chplan_ap.Channel[j]; + chplan_new[k].ScanType = SCAN_ACTIVE; + j++; + k++; + } + } + else + { + // keep original STA 2.4G channel plan + while ((i < MAX_CHANNEL_NUM) && + (chplan_sta[i].ChannelNum != 0) && + (chplan_sta[i].ChannelNum <= 14)) + { + chplan_new[k].ChannelNum = chplan_sta[i].ChannelNum; + chplan_new[k].ScanType = chplan_sta[i].ScanType; + i++; + k++; + } + + // skip AP 2.4G channel plan + while ((j < chplan_ap.Len) && (chplan_ap.Channel[j] <= 14)) + { + j++; + } + } + + if (pregistrypriv->wireless_mode & WIRELESS_11A) + { + do { + if ((i == MAX_CHANNEL_NUM) || + (chplan_sta[i].ChannelNum == 0)) + break; + + if ((j == chplan_ap.Len) || (chplan_ap.Channel[j] == 0)) + break; + + if (chplan_sta[i].ChannelNum == chplan_ap.Channel[j]) + { + chplan_new[k].ChannelNum = chplan_ap.Channel[j]; + chplan_new[k].ScanType = SCAN_ACTIVE; + i++; + j++; + k++; + } + else if (chplan_sta[i].ChannelNum < chplan_ap.Channel[j]) + { + chplan_new[k].ChannelNum = chplan_sta[i].ChannelNum; +// chplan_new[k].ScanType = chplan_sta[i].ScanType; + chplan_new[k].ScanType = SCAN_PASSIVE; + i++; + k++; + } + else if (chplan_sta[i].ChannelNum > chplan_ap.Channel[j]) + { + chplan_new[k].ChannelNum = chplan_ap.Channel[j]; + chplan_new[k].ScanType = SCAN_ACTIVE; + j++; + k++; + } + } while (1); + + // change AP not support channel to Passive scan + while ((i < MAX_CHANNEL_NUM) && (chplan_sta[i].ChannelNum != 0)) + { + chplan_new[k].ChannelNum = chplan_sta[i].ChannelNum; +// chplan_new[k].ScanType = chplan_sta[i].ScanType; + chplan_new[k].ScanType = SCAN_PASSIVE; + i++; + k++; + } + + // add channel AP supported + while ((j < chplan_ap.Len) && (chplan_ap.Channel[j] != 0)) + { + chplan_new[k].ChannelNum = chplan_ap.Channel[j]; + chplan_new[k].ScanType = SCAN_ACTIVE; + j++; + k++; + } + } + else + { + // keep original STA 5G channel plan + while ((i < MAX_CHANNEL_NUM) && (chplan_sta[i].ChannelNum != 0)) + { + chplan_new[k].ChannelNum = chplan_sta[i].ChannelNum; + chplan_new[k].ScanType = chplan_sta[i].ScanType; + i++; + k++; + } + } + + pmlmeext->update_channel_plan_by_ap_done = 1; + +#ifdef CONFIG_DEBUG_RTL871X +#ifdef PLATFORM_LINUX + k = 0; + printk("%s: new STA channel plan {", __func__); + while ((k < MAX_CHANNEL_NUM) && (chplan_new[k].ChannelNum != 0)) + { + printk("%02d(%c),", chplan_new[k].ChannelNum, chplan_new[k].ScanType==SCAN_PASSIVE?'p':'c'); + k++; + } + printk("}\n"); +#endif +#endif + +#if 0 + // recover the right channel index + channel = chplan_sta[pmlmeext->sitesurvey_res.channel_idx].ChannelNum; + k = 0; + while ((k < MAX_CHANNEL_NUM) && (chplan_new[k].ChannelNum != 0)) + { + if (chplan_new[k].ChannelNum == channel) { + RT_TRACE(_module_rtl871x_mlme_c_, _drv_notice_, + ("%s: change mlme_ext sitesurvey channel index from %d to %d\n", + __FUNCTION__, pmlmeext->sitesurvey_res.channel_idx, k)); + pmlmeext->sitesurvey_res.channel_idx = k; + break; + } + k++; + } +#endif + } + + // If channel is used by AP, set channel scan type to active + channel = bssid->Configuration.DSConfig; + chplan_new = pmlmeext->channel_set; + i = 0; + while ((i < MAX_CHANNEL_NUM) && (chplan_new[i].ChannelNum != 0)) + { + if (chplan_new[i].ChannelNum == channel) + { + if (chplan_new[i].ScanType == SCAN_PASSIVE) + { + //5G Bnad 2, 3 (DFS) doesn't change to active scan + if(channel >= 52 && channel <= 144) + break; + + chplan_new[i].ScanType = SCAN_ACTIVE; + RT_TRACE(_module_rtl871x_mlme_c_, _drv_notice_, + ("%s: change channel %d scan type from passive to active\n", + __FUNCTION__, channel)); + } + break; + } + i++; + } +} +#endif + +/**************************************************************************** + +Following are the functions to report events + +*****************************************************************************/ + +void report_survey_event(_adapter *padapter, union recv_frame *precv_frame) +{ + struct cmd_obj *pcmd_obj; + u8 *pevtcmd; + u32 cmdsz; + struct survey_event *psurvey_evt; + struct C2HEvent_Header *pc2h_evt_hdr; + struct mlme_ext_priv *pmlmeext; + struct cmd_priv *pcmdpriv; + //u8 *pframe = precv_frame->u.hdr.rx_data; + //uint len = precv_frame->u.hdr.len; + + if(!padapter) + return; + + pmlmeext = &padapter->mlmeextpriv; + pcmdpriv = &padapter->cmdpriv; + + + if ((pcmd_obj = (struct cmd_obj*)rtw_zmalloc(sizeof(struct cmd_obj))) == NULL) + { + return; + } + + cmdsz = (sizeof(struct survey_event) + sizeof(struct C2HEvent_Header)); + if ((pevtcmd = (u8*)rtw_zmalloc(cmdsz)) == NULL) + { + rtw_mfree((u8 *)pcmd_obj, sizeof(struct cmd_obj)); + return; + } + + _rtw_init_listhead(&pcmd_obj->list); + + pcmd_obj->cmdcode = GEN_CMD_CODE(_Set_MLME_EVT); + pcmd_obj->cmdsz = cmdsz; + pcmd_obj->parmbuf = pevtcmd; + + pcmd_obj->rsp = NULL; + pcmd_obj->rspsz = 0; + + pc2h_evt_hdr = (struct C2HEvent_Header*)(pevtcmd); + pc2h_evt_hdr->len = sizeof(struct survey_event); + pc2h_evt_hdr->ID = GEN_EVT_CODE(_Survey); + pc2h_evt_hdr->seq = ATOMIC_INC_RETURN(&pmlmeext->event_seq); + + psurvey_evt = (struct survey_event*)(pevtcmd + sizeof(struct C2HEvent_Header)); + + if (collect_bss_info(padapter, precv_frame, (WLAN_BSSID_EX *)&psurvey_evt->bss) == _FAIL) + { + rtw_mfree((u8 *)pcmd_obj, sizeof(struct cmd_obj)); + rtw_mfree((u8 *)pevtcmd, cmdsz); + return; + } + +#ifdef CONFIG_80211D + process_80211d(padapter, &psurvey_evt->bss); +#endif + + rtw_enqueue_cmd(pcmdpriv, pcmd_obj); + + pmlmeext->sitesurvey_res.bss_cnt++; + + return; + +} + +void report_surveydone_event(_adapter *padapter) +{ + struct cmd_obj *pcmd_obj; + u8 *pevtcmd; + u32 cmdsz; + struct surveydone_event *psurveydone_evt; + struct C2HEvent_Header *pc2h_evt_hdr; + struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; + struct cmd_priv *pcmdpriv = &padapter->cmdpriv; + + if ((pcmd_obj = (struct cmd_obj*)rtw_zmalloc(sizeof(struct cmd_obj))) == NULL) + { + return; + } + + cmdsz = (sizeof(struct surveydone_event) + sizeof(struct C2HEvent_Header)); + if ((pevtcmd = (u8*)rtw_zmalloc(cmdsz)) == NULL) + { + rtw_mfree((u8 *)pcmd_obj, sizeof(struct cmd_obj)); + return; + } + + _rtw_init_listhead(&pcmd_obj->list); + + pcmd_obj->cmdcode = GEN_CMD_CODE(_Set_MLME_EVT); + pcmd_obj->cmdsz = cmdsz; + pcmd_obj->parmbuf = pevtcmd; + + pcmd_obj->rsp = NULL; + pcmd_obj->rspsz = 0; + + pc2h_evt_hdr = (struct C2HEvent_Header*)(pevtcmd); + pc2h_evt_hdr->len = sizeof(struct surveydone_event); + pc2h_evt_hdr->ID = GEN_EVT_CODE(_SurveyDone); + pc2h_evt_hdr->seq = ATOMIC_INC_RETURN(&pmlmeext->event_seq); + + psurveydone_evt = (struct surveydone_event*)(pevtcmd + sizeof(struct C2HEvent_Header)); + psurveydone_evt->bss_cnt = pmlmeext->sitesurvey_res.bss_cnt; + + DBG_871X("survey done event(%x) band:%d for "ADPT_FMT"\n", psurveydone_evt->bss_cnt, padapter->setband, ADPT_ARG(padapter)); + + rtw_enqueue_cmd(pcmdpriv, pcmd_obj); + + return; + +} + +void report_join_res(_adapter *padapter, int res) +{ + struct cmd_obj *pcmd_obj; + u8 *pevtcmd; + u32 cmdsz; + struct joinbss_event *pjoinbss_evt; + struct C2HEvent_Header *pc2h_evt_hdr; + struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; + struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info); + struct cmd_priv *pcmdpriv = &padapter->cmdpriv; + + if ((pcmd_obj = (struct cmd_obj*)rtw_zmalloc(sizeof(struct cmd_obj))) == NULL) + { + return; + } + + cmdsz = (sizeof(struct joinbss_event) + sizeof(struct C2HEvent_Header)); + if ((pevtcmd = (u8*)rtw_zmalloc(cmdsz)) == NULL) + { + rtw_mfree((u8 *)pcmd_obj, sizeof(struct cmd_obj)); + return; + } + + _rtw_init_listhead(&pcmd_obj->list); + + pcmd_obj->cmdcode = GEN_CMD_CODE(_Set_MLME_EVT); + pcmd_obj->cmdsz = cmdsz; + pcmd_obj->parmbuf = pevtcmd; + + pcmd_obj->rsp = NULL; + pcmd_obj->rspsz = 0; + + pc2h_evt_hdr = (struct C2HEvent_Header*)(pevtcmd); + pc2h_evt_hdr->len = sizeof(struct joinbss_event); + pc2h_evt_hdr->ID = GEN_EVT_CODE(_JoinBss); + pc2h_evt_hdr->seq = ATOMIC_INC_RETURN(&pmlmeext->event_seq); + + pjoinbss_evt = (struct joinbss_event*)(pevtcmd + sizeof(struct C2HEvent_Header)); + _rtw_memcpy((unsigned char *)(&(pjoinbss_evt->network.network)), &(pmlmeinfo->network), sizeof(WLAN_BSSID_EX)); + pjoinbss_evt->network.join_res = pjoinbss_evt->network.aid = res; + + DBG_871X("report_join_res(%d)\n", res); + + + rtw_joinbss_event_prehandle(padapter, (u8 *)&pjoinbss_evt->network); + + + rtw_enqueue_cmd(pcmdpriv, pcmd_obj); + + return; + +} + +void report_del_sta_event(_adapter *padapter, unsigned char* MacAddr, unsigned short reason) +{ + struct cmd_obj *pcmd_obj; + u8 *pevtcmd; + u32 cmdsz; + struct sta_info *psta; + int mac_id; + struct stadel_event *pdel_sta_evt; + struct C2HEvent_Header *pc2h_evt_hdr; + struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; + struct cmd_priv *pcmdpriv = &padapter->cmdpriv; + + if ((pcmd_obj = (struct cmd_obj*)rtw_zmalloc(sizeof(struct cmd_obj))) == NULL) + { + return; + } + + cmdsz = (sizeof(struct stadel_event) + sizeof(struct C2HEvent_Header)); + if ((pevtcmd = (u8*)rtw_zmalloc(cmdsz)) == NULL) + { + rtw_mfree((u8 *)pcmd_obj, sizeof(struct cmd_obj)); + return; + } + + _rtw_init_listhead(&pcmd_obj->list); + + pcmd_obj->cmdcode = GEN_CMD_CODE(_Set_MLME_EVT); + pcmd_obj->cmdsz = cmdsz; + pcmd_obj->parmbuf = pevtcmd; + + pcmd_obj->rsp = NULL; + pcmd_obj->rspsz = 0; + + pc2h_evt_hdr = (struct C2HEvent_Header*)(pevtcmd); + pc2h_evt_hdr->len = sizeof(struct stadel_event); + pc2h_evt_hdr->ID = GEN_EVT_CODE(_DelSTA); + pc2h_evt_hdr->seq = ATOMIC_INC_RETURN(&pmlmeext->event_seq); + + pdel_sta_evt = (struct stadel_event*)(pevtcmd + sizeof(struct C2HEvent_Header)); + _rtw_memcpy((unsigned char *)(&(pdel_sta_evt->macaddr)), MacAddr, ETH_ALEN); + _rtw_memcpy((unsigned char *)(pdel_sta_evt->rsvd),(unsigned char *)(&reason),2); + + + psta = rtw_get_stainfo(&padapter->stapriv, MacAddr); + if(psta) + mac_id = (int)psta->mac_id; + else + mac_id = (-1); + + pdel_sta_evt->mac_id = mac_id; + + DBG_871X("report_del_sta_event: delete STA, mac_id=%d\n", mac_id); + + rtw_enqueue_cmd(pcmdpriv, pcmd_obj); + + return; +} + +void report_add_sta_event(_adapter *padapter, unsigned char* MacAddr, int cam_idx) +{ + struct cmd_obj *pcmd_obj; + u8 *pevtcmd; + u32 cmdsz; + struct stassoc_event *padd_sta_evt; + struct C2HEvent_Header *pc2h_evt_hdr; + struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; + struct cmd_priv *pcmdpriv = &padapter->cmdpriv; + + if ((pcmd_obj = (struct cmd_obj*)rtw_zmalloc(sizeof(struct cmd_obj))) == NULL) + { + return; + } + + cmdsz = (sizeof(struct stassoc_event) + sizeof(struct C2HEvent_Header)); + if ((pevtcmd = (u8*)rtw_zmalloc(cmdsz)) == NULL) + { + rtw_mfree((u8 *)pcmd_obj, sizeof(struct cmd_obj)); + return; + } + + _rtw_init_listhead(&pcmd_obj->list); + + pcmd_obj->cmdcode = GEN_CMD_CODE(_Set_MLME_EVT); + pcmd_obj->cmdsz = cmdsz; + pcmd_obj->parmbuf = pevtcmd; + + pcmd_obj->rsp = NULL; + pcmd_obj->rspsz = 0; + + pc2h_evt_hdr = (struct C2HEvent_Header*)(pevtcmd); + pc2h_evt_hdr->len = sizeof(struct stassoc_event); + pc2h_evt_hdr->ID = GEN_EVT_CODE(_AddSTA); + pc2h_evt_hdr->seq = ATOMIC_INC_RETURN(&pmlmeext->event_seq); + + padd_sta_evt = (struct stassoc_event*)(pevtcmd + sizeof(struct C2HEvent_Header)); + _rtw_memcpy((unsigned char *)(&(padd_sta_evt->macaddr)), MacAddr, ETH_ALEN); + padd_sta_evt->cam_id = cam_idx; + + DBG_871X("report_add_sta_event: add STA\n"); + + rtw_enqueue_cmd(pcmdpriv, pcmd_obj); + + return; +} + + +/**************************************************************************** + +Following are the event callback functions + +*****************************************************************************/ + +//for sta/adhoc mode +void update_sta_info(_adapter *padapter, struct sta_info *psta) +{ + struct mlme_priv *pmlmepriv = &(padapter->mlmepriv); + struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; + struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info); + + //ERP + VCS_update(padapter, psta); + + + //HT + if(pmlmepriv->htpriv.ht_option) + { + psta->htpriv.ht_option = _TRUE; + + psta->htpriv.ampdu_enable = pmlmepriv->htpriv.ampdu_enable; + + if (support_short_GI(padapter, &(pmlmeinfo->HT_caps))) + psta->htpriv.sgi = _TRUE; + + psta->qos_option = _TRUE; + + } + else + { + psta->htpriv.ht_option = _FALSE; + + psta->htpriv.ampdu_enable = _FALSE; + + psta->htpriv.sgi = _FALSE; + + psta->qos_option = _FALSE; + + } + + psta->htpriv.bwmode = pmlmeext->cur_bwmode; + psta->htpriv.ch_offset = pmlmeext->cur_ch_offset; + + psta->htpriv.agg_enable_bitmap = 0x0;//reset + psta->htpriv.candidate_tid_bitmap = 0x0;//reset + + + //QoS + if(pmlmepriv->qospriv.qos_option) + psta->qos_option = _TRUE; + + + psta->state = _FW_LINKED; + +} + +void mlmeext_joinbss_event_callback(_adapter *padapter, int join_res) +{ + struct sta_info *psta, *psta_bmc; + struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; + struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info); + WLAN_BSSID_EX *cur_network = &(pmlmeinfo->network); + struct sta_priv *pstapriv = &padapter->stapriv; + u8 join_type; + + if(join_res < 0) + { + join_type = 1; + rtw_hal_set_hwreg(padapter, HW_VAR_MLME_JOIN, (u8 *)(&join_type)); + rtw_hal_set_hwreg(padapter, HW_VAR_BSSID, null_addr); + + //restore to initial setting. + update_tx_basic_rate(padapter, padapter->registrypriv.wireless_mode); +#if 0 //temply remove +#ifdef CONFIG_INTEL_WIDI +#ifdef DBG_CONFIG_ERROR_DETECT + DBG_871X("%s(): do silentreset\n",__FUNCTION__); + rtw_hal_sreset_reset(padapter); +#endif +#endif +#endif + goto exit_mlmeext_joinbss_event_callback; + } + + if((pmlmeinfo->state&0x03) == WIFI_FW_ADHOC_STATE) + { + //for bc/mc + psta_bmc = rtw_get_bcmc_stainfo(padapter); + if(psta_bmc) + { + pmlmeinfo->FW_sta_info[psta_bmc->mac_id].psta = psta_bmc; + update_bmc_sta_support_rate(padapter, psta_bmc->mac_id); + Update_RA_Entry(padapter, psta_bmc->mac_id); + } + } + + + //turn on dynamic functions + Switch_DM_Func(padapter, DYNAMIC_FUNC_DIG|DYNAMIC_FUNC_HP|DYNAMIC_FUNC_SS, _TRUE); + + // update IOT-releated issue + update_IOT_info(padapter); + + rtw_hal_set_hwreg(padapter, HW_VAR_BASIC_RATE, cur_network->SupportedRates); + + //BCN interval + rtw_hal_set_hwreg(padapter, HW_VAR_BEACON_INTERVAL, (u8 *)(&pmlmeinfo->bcn_interval)); + + //udpate capability + update_capinfo(padapter, pmlmeinfo->capability); + + //WMM, Update EDCA param + WMMOnAssocRsp(padapter); + + //HT + HTOnAssocRsp(padapter); + +#ifndef CONFIG_CONCURRENT_MODE + // Call set_channel_bwmode when the CONFIG_CONCURRENT_MODE doesn't be defined. + //Set cur_channel&cur_bwmode&cur_ch_offset + set_channel_bwmode(padapter, pmlmeext->cur_channel, pmlmeext->cur_ch_offset, pmlmeext->cur_bwmode); +#endif + + psta = rtw_get_stainfo(pstapriv, cur_network->MacAddress); + if (psta) //only for infra. mode + { + pmlmeinfo->FW_sta_info[psta->mac_id].psta = psta; + + //DBG_871X("set_sta_rate\n"); + + //set per sta rate after updating HT cap. + set_sta_rate(padapter, psta); + } + + join_type = 2; + rtw_hal_set_hwreg(padapter, HW_VAR_MLME_JOIN, (u8 *)(&join_type)); + + if((pmlmeinfo->state&0x03) == WIFI_FW_STATION_STATE) + { + // correcting TSF + correct_TSF(padapter, pmlmeext); + + //set_link_timer(pmlmeext, DISCONNECT_TO); + } + +#ifdef CONFIG_LPS + rtw_lps_ctrl_wk_cmd(padapter, LPS_CTRL_CONNECT, 0); +#endif + +exit_mlmeext_joinbss_event_callback: + +#ifdef CONFIG_DUALMAC_CONCURRENT + dc_handle_join_done(padapter, join_res); +#endif +#ifdef CONFIG_CONCURRENT_MODE + concurrent_chk_joinbss_done(padapter, join_res); +#endif + + DBG_871X("=>%s\n", __FUNCTION__); + +} + +void mlmeext_sta_add_event_callback(_adapter *padapter, struct sta_info *psta) +{ + struct mlme_ext_priv *pmlmeext = &(padapter->mlmeextpriv); + struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info); + u8 join_type; + + DBG_871X("%s\n", __FUNCTION__); + + if((pmlmeinfo->state&0x03) == WIFI_FW_ADHOC_STATE) + { + if(pmlmeinfo->state & WIFI_FW_ASSOC_SUCCESS)//adhoc master or sta_count>1 + { + //nothing to do + } + else//adhoc client + { + //update TSF Value + //update_TSF(pmlmeext, pframe, len); + + // correcting TSF + correct_TSF(padapter, pmlmeext); + + //start beacon + if(send_beacon(padapter)==_FAIL) + { + pmlmeinfo->FW_sta_info[psta->mac_id].status = 0; + + pmlmeinfo->state ^= WIFI_FW_ADHOC_STATE; + + return; + } + + pmlmeinfo->state |= WIFI_FW_ASSOC_SUCCESS; + + } + + join_type = 2; + rtw_hal_set_hwreg(padapter, HW_VAR_MLME_JOIN, (u8 *)(&join_type)); + } + + pmlmeinfo->FW_sta_info[psta->mac_id].psta = psta; + + //rate radaptive + Update_RA_Entry(padapter, psta->mac_id); + + //update adhoc sta_info + update_sta_info(padapter, psta); + +} + +void mlmeext_sta_del_event_callback(_adapter *padapter) +{ + struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; + struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info); + + if (is_client_associated_to_ap(padapter) || is_IBSS_empty(padapter)) + { + //set_opmode_cmd(padapter, infra_client_with_mlme); + + rtw_hal_set_hwreg(padapter, HW_VAR_MLME_DISCONNECT, 0); + rtw_hal_set_hwreg(padapter, HW_VAR_BSSID, null_addr); + + //restore to initial setting. + update_tx_basic_rate(padapter, padapter->registrypriv.wireless_mode); + +#ifdef CONFIG_DUALMAC_CONCURRENT + dc_set_channel_bwmode_disconnect(padapter); +#else +#ifdef CONFIG_CONCURRENT_MODE + if((check_buddy_fwstate(padapter, _FW_LINKED)) != _TRUE) + { +#endif //CONFIG_CONCURRENT_MODE + + //switch to the 20M Hz mode after disconnect + pmlmeext->cur_bwmode = HT_CHANNEL_WIDTH_20; + pmlmeext->cur_ch_offset = HAL_PRIME_CHNL_OFFSET_DONT_CARE; + + //SelectChannel(padapter, pmlmeext->cur_channel, pmlmeext->cur_ch_offset); + set_channel_bwmode(padapter, pmlmeext->cur_channel, pmlmeext->cur_ch_offset, pmlmeext->cur_bwmode); + +#ifdef CONFIG_CONCURRENT_MODE + } +#endif //CONFIG_CONCURRENT_MODE +#endif //CONFIG_DUALMAC_CONCURRENT + + flush_all_cam_entry(padapter); + + pmlmeinfo->state = WIFI_FW_NULL_STATE; + + //set MSR to no link state -> infra. mode + Set_MSR(padapter, _HW_STATE_STATION_); + + _cancel_timer_ex(&pmlmeext->link_timer); + + } + +} + +/**************************************************************************** + +Following are the functions for the timer handlers + +*****************************************************************************/ +void _linked_rx_signal_strehgth_display(_adapter *padapter); +void _linked_rx_signal_strehgth_display(_adapter *padapter) +{ + int UndecoratedSmoothedPWDB; + +#ifdef CONFIG_CONCURRENT_MODE + PADAPTER pbuddy_adapter = padapter->pbuddy_adapter; + DBG_871X("============ pbuddy_adapter linked status check ===================\n"); + DBG_871X("buddy_adapter_type=%d\n", pbuddy_adapter->adapter_type); + DBG_871X("pbuddy_adapter pathA Rx SNRdb:%d\n",pbuddy_adapter->recvpriv.RxSNRdB[0]); + DBG_871X("pbuddy_adapter pathA Rx PWDB:%d\n",pbuddy_adapter->recvpriv.rxpwdb); + DBG_871X("pbuddy_adapter pathA Rx RSSI:%d,pathB Rx RSSI:%d\n" + ,pbuddy_adapter->recvpriv.RxRssi[0],pbuddy_adapter->recvpriv.RxRssi[1]); + rtw_hal_get_def_var(pbuddy_adapter, HAL_DEF_UNDERCORATEDSMOOTHEDPWDB, &UndecoratedSmoothedPWDB); + DBG_871X("pbuddy_adapter UndecoratedSmoothedPWDB:%d\n",UndecoratedSmoothedPWDB); + DBG_871X("Rx RSSI:%d\n",pbuddy_adapter->recvpriv.rssi); + DBG_871X("Rx Signal_strength:%d\n",pbuddy_adapter->recvpriv.signal_strength); + DBG_871X("Rx Signal_qual:%d \n",pbuddy_adapter->recvpriv.signal_qual); + DBG_871X("============ linked status check ===================\n"); + DBG_871X("adapter_type=%d\n", padapter->adapter_type); +#else //CONFIG_CONCURRENT_MODE + DBG_871X("============ linked status check ===================\n"); +#endif //CONFIG_CONCURRENT_MODE + DBG_871X("pathA Rx SNRdb:%d, pathB Rx SNRdb:%d\n",padapter->recvpriv.RxSNRdB[0], padapter->recvpriv.RxSNRdB[1]); + DBG_871X("pathA Rx PWDB:%d\n",padapter->recvpriv.rxpwdb); + DBG_871X("pathA Rx RSSI:%d,pathB Rx RSSI:%d\n",padapter->recvpriv.RxRssi[0],padapter->recvpriv.RxRssi[1]); + rtw_hal_get_def_var(padapter, HAL_DEF_UNDERCORATEDSMOOTHEDPWDB, &UndecoratedSmoothedPWDB); + DBG_871X("UndecoratedSmoothedPWDB:%d\n",UndecoratedSmoothedPWDB); + DBG_871X("Rx RSSI:%d\n",padapter->recvpriv.rssi); + DBG_871X("Rx Signal_strength:%d\n",padapter->recvpriv.signal_strength); + DBG_871X("Rx Signal_qual:%d \n",padapter->recvpriv.signal_qual); + if ( check_fwstate( &padapter->mlmepriv, _FW_LINKED )) + { + DBG_871X("bw mode: %d, channel: %d\n", padapter->mlmeextpriv.cur_bwmode, padapter->mlmeextpriv.cur_channel ); + DBG_871X("received bytes = %d\n", (u32) (padapter->recvpriv.rx_bytes - padapter->recvpriv.last_rx_bytes ) ); + } + DBG_871X("============ linked status check ===================\n"); + DBG_871X(" DIG PATH-A(0x%02x), PATH-B(0x%02x)\n",rtw_read8(padapter,0xc50),rtw_read8(padapter,0xc58)); + DBG_871X(" OFDM -Alarm DA2(0x%04x),DA4(0x%04x),DA6(0x%04x),DA8(0x%04x)\n", + rtw_read16(padapter,0xDA2),rtw_read16(padapter,0xDA4),rtw_read16(padapter,0xDA6),rtw_read16(padapter,0xDA8)); + + DBG_871X(" CCK -Alarm A5B(0x%02x),A5C(0x%02x)\n",rtw_read8(padapter,0xA5B),rtw_read8(padapter,0xA5C)); + DBG_871X(" FalseAlmCnt_all(%d)\n",padapter->recvpriv.FalseAlmCnt_all); + +} + +u8 chk_ap_is_alive(_adapter *padapter, struct sta_info *psta) +{ + u8 ret = _FALSE; + struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; + struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info); + + #ifdef DBG_EXPIRATION_CHK + DBG_871X(FUNC_ADPT_FMT" rx:"STA_PKTS_FMT", beacon:%llu, probersp_to_self:%llu" + /*", probersp_bm:%llu, probersp_uo:%llu, probereq:%llu, BI:%u"*/ + ", retry:%u\n" + , FUNC_ADPT_ARG(padapter) + , STA_RX_PKTS_DIFF_ARG(psta) + , psta->sta_stats.rx_beacon_pkts - psta->sta_stats.last_rx_beacon_pkts + , psta->sta_stats.rx_probersp_pkts - psta->sta_stats.last_rx_probersp_pkts + /*, psta->sta_stats.rx_probersp_bm_pkts - psta->sta_stats.last_rx_probersp_bm_pkts + , psta->sta_stats.rx_probersp_uo_pkts - psta->sta_stats.last_rx_probersp_uo_pkts + , psta->sta_stats.rx_probereq_pkts - psta->sta_stats.last_rx_probereq_pkts + , pmlmeinfo->bcn_interval*/ + , pmlmeext->retry + ); + + DBG_871X(FUNC_ADPT_FMT" tx_pkts:%llu, link_count:%u\n", FUNC_ADPT_ARG(padapter) + , padapter->xmitpriv.tx_pkts + , pmlmeinfo->link_count + ); + #endif + + if((sta_rx_data_pkts(psta) == sta_last_rx_data_pkts(psta)) + && sta_rx_beacon_pkts(psta) == sta_last_rx_beacon_pkts(psta) + && sta_rx_probersp_pkts(psta) == sta_last_rx_probersp_pkts(psta) + ) + { + ret = _FALSE; + } + else + { + ret = _TRUE; + } + + sta_update_last_rx_pkts(psta); + + return ret; +} + +void linked_status_chk(_adapter *padapter) +{ + u32 i; + struct sta_info *psta; + struct xmit_priv *pxmitpriv = &(padapter->xmitpriv); + struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; + struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info); + struct sta_priv *pstapriv = &padapter->stapriv; + + if(padapter->bRxRSSIDisplay) + _linked_rx_signal_strehgth_display(padapter); + + #ifdef DBG_CONFIG_ERROR_DETECT + rtw_hal_sreset_linked_status_check(padapter); + #endif + + if (is_client_associated_to_ap(padapter)) + { + //linked infrastructure client mode + + int tx_chk = _SUCCESS, rx_chk = _SUCCESS; + int rx_chk_limit; + + #if defined(DBG_ROAMING_TEST) + rx_chk_limit = 1; + #elif defined(CONFIG_ACTIVE_KEEP_ALIVE_CHECK) + rx_chk_limit = 4; + #else + rx_chk_limit = 8; + #endif + + // Marked by Kurt 20130715 + // For WiDi 3.5 and later on, they don't ask WiDi sink to do roaming, so we could not check rx limit that strictly. + // todo: To check why rx_chk would be _FALSE under miracast session. + //#ifdef CONFIG_INTEL_WIDI + //if (padapter->mlmepriv.widi_state != INTEL_WIDI_STATE_NONE) + // rx_chk_limit = 1; + //#endif + + if ((psta = rtw_get_stainfo(pstapriv, pmlmeinfo->network.MacAddress)) != NULL) + { + bool is_p2p_enable = _FALSE; + #ifdef CONFIG_P2P + is_p2p_enable = !rtw_p2p_chk_state(&padapter->wdinfo, P2P_STATE_NONE); + #endif + + if (chk_ap_is_alive(padapter, psta) == _FALSE) + rx_chk = _FAIL; + + if (pxmitpriv->last_tx_pkts == pxmitpriv->tx_pkts) + tx_chk = _FAIL; + + #ifdef CONFIG_ACTIVE_KEEP_ALIVE_CHECK + if (pmlmeext->active_keep_alive_check && (rx_chk == _FAIL || tx_chk == _FAIL)) { + u8 backup_oper_channel=0; + + /* switch to correct channel of current network before issue keep-alive frames */ + if (rtw_get_oper_ch(padapter) != pmlmeext->cur_channel) { + backup_oper_channel = rtw_get_oper_ch(padapter); + SelectChannel(padapter, pmlmeext->cur_channel); + } + + if (rx_chk != _SUCCESS) + issue_probereq_ex(padapter, &pmlmeinfo->network.Ssid, psta->hwaddr, 3, 1); + + if ((tx_chk != _SUCCESS && pmlmeinfo->link_count++ == 0xf) || rx_chk != _SUCCESS) { + tx_chk = issue_nulldata(padapter, psta->hwaddr, 0, 3, 1); + /* if tx acked and p2p disabled, set rx_chk _SUCCESS to reset retry count */ + if (tx_chk == _SUCCESS && !is_p2p_enable) + rx_chk = _SUCCESS; + } + + /* back to the original operation channel */ + if(backup_oper_channel>0) + SelectChannel(padapter, backup_oper_channel); + + } + else + #endif /* CONFIG_ACTIVE_KEEP_ALIVE_CHECK */ + { + if (rx_chk != _SUCCESS) { + if (pmlmeext->retry == 0) { + #ifdef DBG_EXPIRATION_CHK + DBG_871X("issue_probereq to trigger probersp, retry=%d\n", pmlmeext->retry); + #endif + issue_probereq(padapter, &pmlmeinfo->network.Ssid, pmlmeinfo->network.MacAddress); + issue_probereq(padapter, &pmlmeinfo->network.Ssid, pmlmeinfo->network.MacAddress); + issue_probereq(padapter, &pmlmeinfo->network.Ssid, pmlmeinfo->network.MacAddress); + } + } + + if (tx_chk != _SUCCESS && pmlmeinfo->link_count++ == 0xf) { + #ifdef DBG_EXPIRATION_CHK + DBG_871X("%s issue_nulldata 0\n", __FUNCTION__); + #endif + tx_chk = issue_nulldata(padapter, NULL, 0, 1, 0); + } + } + + if (rx_chk == _FAIL) { + pmlmeext->retry++; + if (pmlmeext->retry > rx_chk_limit) { + DBG_871X(FUNC_ADPT_FMT" disconnect or roaming\n", + FUNC_ADPT_ARG(padapter)); + receive_disconnect(padapter, pmlmeinfo->network.MacAddress + , WLAN_REASON_EXPIRATION_CHK); + return; + } + } else { + pmlmeext->retry = 0; + } + + if (tx_chk == _FAIL) { + pmlmeinfo->link_count &= 0xf; + } else { + pxmitpriv->last_tx_pkts = pxmitpriv->tx_pkts; + pmlmeinfo->link_count = 0; + } + + } //end of if ((psta = rtw_get_stainfo(pstapriv, passoc_res->network.MacAddress)) != NULL) + } + else if (is_client_associated_to_ibss(padapter)) + { + //linked IBSS mode + //for each assoc list entry to check the rx pkt counter + for (i = IBSS_START_MAC_ID; i < NUM_STA; i++) + { + if (pmlmeinfo->FW_sta_info[i].status == 1) + { + psta = pmlmeinfo->FW_sta_info[i].psta; + + if(NULL==psta) continue; + + if (pmlmeinfo->FW_sta_info[i].rx_pkt == sta_rx_pkts(psta)) + { + + if(pmlmeinfo->FW_sta_info[i].retry<3) + { + pmlmeinfo->FW_sta_info[i].retry++; + } + else + { + pmlmeinfo->FW_sta_info[i].retry = 0; + pmlmeinfo->FW_sta_info[i].status = 0; + report_del_sta_event(padapter, psta->hwaddr + , 65535// indicate disconnect caused by no rx + ); + } + } + else + { + pmlmeinfo->FW_sta_info[i].retry = 0; + pmlmeinfo->FW_sta_info[i].rx_pkt = (u32)sta_rx_pkts(psta); + } + } + } + + //set_link_timer(pmlmeext, DISCONNECT_TO); + + } + +} + +void survey_timer_hdl(_adapter *padapter) +{ + struct cmd_obj *ph2c; + struct sitesurvey_parm *psurveyPara; + struct cmd_priv *pcmdpriv=&padapter->cmdpriv; + struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; +#ifdef CONFIG_P2P + struct wifidirect_info *pwdinfo= &(padapter->wdinfo); +#endif + + //DBG_871X("marc: survey timer\n"); +#ifdef PLATFORM_FREEBSD + rtw_mtx_lock(NULL); + if (callout_pending(&padapter->mlmeextpriv.survey_timer.callout)) { + /* callout was reset */ + //mtx_unlock(&sc->sc_mtx); + rtw_mtx_unlock(NULL); + return; + } + if (!callout_active(&padapter->mlmeextpriv.survey_timer.callout)) { + /* callout was stopped */ + //mtx_unlock(&sc->sc_mtx); + rtw_mtx_unlock(NULL); + return; + } + callout_deactivate(&padapter->mlmeextpriv.survey_timer.callout); + + +#endif + + //issue rtw_sitesurvey_cmd + if (pmlmeext->sitesurvey_res.state > SCAN_START) + { + if(pmlmeext->sitesurvey_res.state == SCAN_PROCESS) + { +#ifdef CONFIG_STA_MODE_SCAN_UNDER_AP_MODE + if( padapter->mlmeextpriv.mlmext_info.scan_cnt != RTW_SCAN_NUM_OF_CH ) +#endif //CONFIG_STA_MODE_SCAN_UNDER_AP_MODE + pmlmeext->sitesurvey_res.channel_idx++; + } + + if(pmlmeext->scan_abort == _TRUE) + { + #ifdef CONFIG_P2P + if(!rtw_p2p_chk_state(&padapter->wdinfo, P2P_STATE_NONE)) + { + rtw_p2p_findphase_ex_set(pwdinfo, P2P_FINDPHASE_EX_MAX); + pmlmeext->sitesurvey_res.channel_idx = 3; + DBG_871X("%s idx:%d, cnt:%u\n", __FUNCTION__ + , pmlmeext->sitesurvey_res.channel_idx + , pwdinfo->find_phase_state_exchange_cnt + ); + } + else + #endif + { + pmlmeext->sitesurvey_res.channel_idx = pmlmeext->sitesurvey_res.ch_num; + DBG_871X("%s idx:%d\n", __FUNCTION__ + , pmlmeext->sitesurvey_res.channel_idx + ); + } + + pmlmeext->scan_abort = _FALSE;//reset + } + + if ((ph2c = (struct cmd_obj*)rtw_zmalloc(sizeof(struct cmd_obj))) == NULL) + { + goto exit_survey_timer_hdl; + } + + if ((psurveyPara = (struct sitesurvey_parm*)rtw_zmalloc(sizeof(struct sitesurvey_parm))) == NULL) + { + rtw_mfree((unsigned char *)ph2c, sizeof(struct cmd_obj)); + goto exit_survey_timer_hdl; + } + + init_h2fwcmd_w_parm_no_rsp(ph2c, psurveyPara, GEN_CMD_CODE(_SiteSurvey)); + rtw_enqueue_cmd(pcmdpriv, ph2c); + } + + +exit_survey_timer_hdl: +#ifdef PLATFORM_FREEBSD + rtw_mtx_unlock(NULL); +#endif + + return; +} + +void link_timer_hdl(_adapter *padapter) +{ + //static unsigned int rx_pkt = 0; + //static u64 tx_cnt = 0; + //struct xmit_priv *pxmitpriv = &(padapter->xmitpriv); + struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; + struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info); + //struct sta_priv *pstapriv = &padapter->stapriv; + +#ifdef PLATFORM_FREEBSD + rtw_mtx_lock(NULL); + if (callout_pending(&padapter->mlmeextpriv.survey_timer.callout)) { + /* callout was reset */ + //mtx_unlock(&sc->sc_mtx); + rtw_mtx_unlock(NULL); + return; + } + if (!callout_active(&padapter->mlmeextpriv.survey_timer.callout)) { + /* callout was stopped */ + //mtx_unlock(&sc->sc_mtx); + rtw_mtx_unlock(NULL); + return; + } + callout_deactivate(&padapter->mlmeextpriv.survey_timer.callout); + + +#endif + + if (pmlmeinfo->state & WIFI_FW_AUTH_NULL) + { + DBG_871X("link_timer_hdl:no beacon while connecting\n"); + pmlmeinfo->state = WIFI_FW_NULL_STATE; + report_join_res(padapter, -3); + } + else if (pmlmeinfo->state & WIFI_FW_AUTH_STATE) + { + //re-auth timer + if (++pmlmeinfo->reauth_count > REAUTH_LIMIT) + { + //if (pmlmeinfo->auth_algo != dot11AuthAlgrthm_Auto) + //{ + pmlmeinfo->state = 0; + report_join_res(padapter, -1); + return; + //} + //else + //{ + // pmlmeinfo->auth_algo = dot11AuthAlgrthm_Shared; + // pmlmeinfo->reauth_count = 0; + //} + } + + DBG_871X("link_timer_hdl: auth timeout and try again\n"); + pmlmeinfo->auth_seq = 1; + issue_auth(padapter, NULL, 0); + set_link_timer(pmlmeext, REAUTH_TO); + } + else if (pmlmeinfo->state & WIFI_FW_ASSOC_STATE) + { + //re-assoc timer + if (++pmlmeinfo->reassoc_count > REASSOC_LIMIT) + { + pmlmeinfo->state = WIFI_FW_NULL_STATE; + report_join_res(padapter, -2); + return; + } + + DBG_871X("link_timer_hdl: assoc timeout and try again\n"); + issue_assocreq(padapter); + set_link_timer(pmlmeext, REASSOC_TO); + } +#if 0 + else if (is_client_associated_to_ap(padapter)) + { + //linked infrastructure client mode + if ((psta = rtw_get_stainfo(pstapriv, pmlmeinfo->network.MacAddress)) != NULL) + { + /*to monitor whether the AP is alive or not*/ + if (rx_pkt == psta->sta_stats.rx_pkts) + { + receive_disconnect(padapter, pmlmeinfo->network.MacAddress); + return; + } + else + { + rx_pkt = psta->sta_stats.rx_pkts; + set_link_timer(pmlmeext, DISCONNECT_TO); + } + + //update the EDCA paramter according to the Tx/RX mode + update_EDCA_param(padapter); + + /*to send the AP a nulldata if no frame is xmitted in order to keep alive*/ + if (pmlmeinfo->link_count++ == 0) + { + tx_cnt = pxmitpriv->tx_pkts; + } + else if ((pmlmeinfo->link_count & 0xf) == 0) + { + if (tx_cnt == pxmitpriv->tx_pkts) + { + issue_nulldata(padapter, NULL, 0, 0, 0); + } + + tx_cnt = pxmitpriv->tx_pkts; + } + } //end of if ((psta = rtw_get_stainfo(pstapriv, passoc_res->network.MacAddress)) != NULL) + } + else if (is_client_associated_to_ibss(padapter)) + { + //linked IBSS mode + //for each assoc list entry to check the rx pkt counter + for (i = IBSS_START_MAC_ID; i < NUM_STA; i++) + { + if (pmlmeinfo->FW_sta_info[i].status == 1) + { + psta = pmlmeinfo->FW_sta_info[i].psta; + + if (pmlmeinfo->FW_sta_info[i].rx_pkt == psta->sta_stats.rx_pkts) + { + pmlmeinfo->FW_sta_info[i].status = 0; + report_del_sta_event(padapter, psta->hwaddr); + } + else + { + pmlmeinfo->FW_sta_info[i].rx_pkt = psta->sta_stats.rx_pkts; + } + } + } + + set_link_timer(pmlmeext, DISCONNECT_TO); + } +#endif + +#ifdef PLATFORM_FREEBSD + rtw_mtx_unlock(NULL); +#endif + + return; +} + +void addba_timer_hdl(struct sta_info *psta) +{ + struct ht_priv *phtpriv; + + if(!psta) + return; + + phtpriv = &psta->htpriv; + + if((phtpriv->ht_option==_TRUE) && (phtpriv->ampdu_enable==_TRUE)) + { + if(phtpriv->candidate_tid_bitmap) + phtpriv->candidate_tid_bitmap=0x0; + + } +} + +#ifdef CONFIG_IEEE80211W +void sa_query_timer_hdl(_adapter *padapter) +{ + struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; + struct mlme_priv * pmlmepriv = &padapter->mlmepriv; + _irqL irqL; + //disconnect + _enter_critical_bh(&pmlmepriv->lock, &irqL); + + if (check_fwstate(pmlmepriv, _FW_LINKED) == _TRUE) + { + rtw_disassoc_cmd(padapter, 0, _TRUE); + rtw_indicate_disconnect(padapter); + rtw_free_assoc_resources(padapter, 1); + } + + _exit_critical_bh(&pmlmepriv->lock, &irqL); + DBG_871X("SA query timeout disconnect\n"); +} +#endif //CONFIG_IEEE80211W + +u8 NULL_hdl(_adapter *padapter, u8 *pbuf) +{ + return H2C_SUCCESS; +} + +#ifdef CONFIG_AUTO_AP_MODE +void rtw_start_auto_ap(_adapter *adapter) +{ + DBG_871X("%s\n", __FUNCTION__); + + rtw_set_802_11_infrastructure_mode(adapter, Ndis802_11APMode); + + rtw_setopmode_cmd(adapter, Ndis802_11APMode); +} + +static int rtw_auto_ap_start_beacon(_adapter *adapter) +{ + int ret=0; + u8 *pbuf = NULL; + uint len; + u8 supportRate[16]; + int sz = 0, rateLen; + u8 * ie; + u8 wireless_mode, oper_channel; + u8 ssid[3] = {0}; //hidden ssid + u32 ssid_len = sizeof(ssid); + struct mlme_priv *pmlmepriv = &(adapter->mlmepriv); + + + if(check_fwstate(pmlmepriv, WIFI_AP_STATE) != _TRUE) + return -EINVAL; + + + len = 128; + pbuf = rtw_zmalloc(len); + if(!pbuf) + return -ENOMEM; + + + //generate beacon + ie = pbuf; + + //timestamp will be inserted by hardware + sz += 8; + ie += sz; + + //beacon interval : 2bytes + *(u16*)ie = cpu_to_le16((u16)100);//BCN_INTERVAL=100; + sz += 2; + ie += 2; + + //capability info + *(u16*)ie = 0; + *(u16*)ie |= cpu_to_le16(cap_ESS); + *(u16*)ie |= cpu_to_le16(cap_ShortPremble); + //*(u16*)ie |= cpu_to_le16(cap_Privacy); + sz += 2; + ie += 2; + + //SSID + ie = rtw_set_ie(ie, _SSID_IE_, ssid_len, ssid, &sz); + + //supported rates + wireless_mode = WIRELESS_11BG_24N; + rtw_set_supported_rate(supportRate, wireless_mode) ; + rateLen = rtw_get_rateset_len(supportRate); + if (rateLen > 8) + { + ie = rtw_set_ie(ie, _SUPPORTEDRATES_IE_, 8, supportRate, &sz); + } + else + { + ie = rtw_set_ie(ie, _SUPPORTEDRATES_IE_, rateLen, supportRate, &sz); + } + + + //DS parameter set + if(check_buddy_fwstate(adapter, _FW_LINKED) && + check_buddy_fwstate(adapter, WIFI_STATION_STATE)) + { + PADAPTER pbuddy_adapter = adapter->pbuddy_adapter; + struct mlme_ext_priv *pbuddy_mlmeext = &pbuddy_adapter->mlmeextpriv; + + oper_channel = pbuddy_mlmeext->cur_channel; + } + else + { + oper_channel = adapter_to_dvobj(adapter)->oper_channel; + } + ie = rtw_set_ie(ie, _DSSET_IE_, 1, &oper_channel, &sz); + + //ext supported rates + if (rateLen > 8) + { + ie = rtw_set_ie(ie, _EXT_SUPPORTEDRATES_IE_, (rateLen - 8), (supportRate + 8), &sz); + } + + DBG_871X("%s, start auto ap beacon sz=%d\n", __FUNCTION__, sz); + + //lunch ap mode & start to issue beacon + if(rtw_check_beacon_data(adapter, pbuf, sz) == _SUCCESS) + { + + } + else + { + ret = -EINVAL; + } + + + rtw_mfree(pbuf, len); + + return ret; + +} +#endif//CONFIG_AUTO_AP_MODE + +u8 setopmode_hdl(_adapter *padapter, u8 *pbuf) +{ + u8 type; + struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; + struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info); + struct setopmode_parm *psetop = (struct setopmode_parm *)pbuf; + + if(psetop->mode == Ndis802_11APMode) + { + pmlmeinfo->state = WIFI_FW_AP_STATE; + type = _HW_STATE_AP_; +#ifdef CONFIG_NATIVEAP_MLME + //start_ap_mode(padapter); +#endif + } + else if(psetop->mode == Ndis802_11Infrastructure) + { + pmlmeinfo->state &= ~(BIT(0)|BIT(1));// clear state + pmlmeinfo->state |= WIFI_FW_STATION_STATE;//set to STATION_STATE + type = _HW_STATE_STATION_; + } + else if(psetop->mode == Ndis802_11IBSS) + { + type = _HW_STATE_ADHOC_; + } + else + { + type = _HW_STATE_NOLINK_; + } + + rtw_hal_set_hwreg(padapter, HW_VAR_SET_OPMODE, (u8 *)(&type)); + //Set_NETYPE0_MSR(padapter, type); + +#ifdef CONFIG_AUTO_AP_MODE + if(psetop->mode == Ndis802_11APMode) + rtw_auto_ap_start_beacon(padapter); +#endif + + return H2C_SUCCESS; + +} + +u8 createbss_hdl(_adapter *padapter, u8 *pbuf) +{ + struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; + struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info); + WLAN_BSSID_EX *pnetwork = (WLAN_BSSID_EX*)(&(pmlmeinfo->network)); + struct joinbss_parm *pparm = (struct joinbss_parm *)pbuf; + u32 initialgain; + + + if(pparm->network.InfrastructureMode == Ndis802_11APMode) + { +#ifdef CONFIG_AP_MODE + + if(pmlmeinfo->state == WIFI_FW_AP_STATE) + { + //todo: + return H2C_SUCCESS; + } +#endif + } + + //below is for ad-hoc master + if(pparm->network.InfrastructureMode == Ndis802_11IBSS) + { + rtw_joinbss_reset(padapter); + + pmlmeext->cur_bwmode = HT_CHANNEL_WIDTH_20; + pmlmeext->cur_ch_offset= HAL_PRIME_CHNL_OFFSET_DONT_CARE; + pmlmeinfo->ERP_enable = 0; + pmlmeinfo->WMM_enable = 0; + pmlmeinfo->HT_enable = 0; + pmlmeinfo->HT_caps_enable = 0; + pmlmeinfo->HT_info_enable = 0; + pmlmeinfo->agg_enable_bitmap = 0; + pmlmeinfo->candidate_tid_bitmap = 0; + + //disable dynamic functions, such as high power, DIG + Save_DM_Func_Flag(padapter); + Switch_DM_Func(padapter, DYNAMIC_FUNC_DISABLE, _FALSE); + + //config the initial gain under linking, need to write the BB registers + initialgain = 0x1E; + rtw_hal_set_hwreg(padapter, HW_VAR_INITIAL_GAIN, (u8 *)(&initialgain)); + + //cancel link timer + _cancel_timer_ex(&pmlmeext->link_timer); + + //clear CAM + flush_all_cam_entry(padapter); + + _rtw_memcpy(pnetwork, pbuf, FIELD_OFFSET(WLAN_BSSID_EX, IELength)); + pnetwork->IELength = ((WLAN_BSSID_EX *)pbuf)->IELength; + + if(pnetwork->IELength>MAX_IE_SZ)//Check pbuf->IELength + return H2C_PARAMETERS_ERROR; + + _rtw_memcpy(pnetwork->IEs, ((WLAN_BSSID_EX *)pbuf)->IEs, pnetwork->IELength); + + start_create_ibss(padapter); + + } + + return H2C_SUCCESS; + +} + +u8 join_cmd_hdl(_adapter *padapter, u8 *pbuf) +{ + u8 join_type; + PNDIS_802_11_VARIABLE_IEs pIE; + struct registry_priv *pregpriv = &padapter->registrypriv; + struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; + struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info); + WLAN_BSSID_EX *pnetwork = (WLAN_BSSID_EX*)(&(pmlmeinfo->network)); +#ifdef CONFIG_ANTENNA_DIVERSITY + struct joinbss_parm *pparm = (struct joinbss_parm *)pbuf; +#endif //CONFIG_ANTENNA_DIVERSITY + u32 initialgain, i; + u8 cbw40_enable=0; + //u32 acparm; + + //check already connecting to AP or not + if (pmlmeinfo->state & WIFI_FW_ASSOC_SUCCESS) + { + if (pmlmeinfo->state & WIFI_FW_STATION_STATE) + { + issue_deauth_ex(padapter, pnetwork->MacAddress, WLAN_REASON_DEAUTH_LEAVING, 5, 100); + } + + pmlmeinfo->state = WIFI_FW_NULL_STATE; + + //clear CAM + flush_all_cam_entry(padapter); + + _cancel_timer_ex(&pmlmeext->link_timer); + + //set MSR to nolink -> infra. mode + //Set_MSR(padapter, _HW_STATE_NOLINK_); + Set_MSR(padapter, _HW_STATE_STATION_); + + + rtw_hal_set_hwreg(padapter, HW_VAR_MLME_DISCONNECT, 0); + } + +#ifdef CONFIG_ANTENNA_DIVERSITY + rtw_antenna_select_cmd(padapter, pparm->network.PhyInfo.Optimum_antenna, _FALSE); +#endif + + rtw_joinbss_reset(padapter); + + pmlmeext->cur_bwmode = HT_CHANNEL_WIDTH_20; + pmlmeext->cur_ch_offset= HAL_PRIME_CHNL_OFFSET_DONT_CARE; + pmlmeinfo->ERP_enable = 0; + pmlmeinfo->WMM_enable = 0; + pmlmeinfo->HT_enable = 0; + pmlmeinfo->HT_caps_enable = 0; + pmlmeinfo->HT_info_enable = 0; + pmlmeinfo->agg_enable_bitmap = 0; + pmlmeinfo->candidate_tid_bitmap = 0; + pmlmeinfo->bwmode_updated = _FALSE; + //pmlmeinfo->assoc_AP_vendor = maxAP; + + _rtw_memcpy(pnetwork, pbuf, FIELD_OFFSET(WLAN_BSSID_EX, IELength)); + pnetwork->IELength = ((WLAN_BSSID_EX *)pbuf)->IELength; + + if(pnetwork->IELength>MAX_IE_SZ)//Check pbuf->IELength + return H2C_PARAMETERS_ERROR; + + _rtw_memcpy(pnetwork->IEs, ((WLAN_BSSID_EX *)pbuf)->IEs, pnetwork->IELength); + + pmlmeext->cur_channel = (u8)pnetwork->Configuration.DSConfig; + pmlmeinfo->bcn_interval = get_beacon_interval(pnetwork); + + //Check AP vendor to move rtw_joinbss_cmd() + //pmlmeinfo->assoc_AP_vendor = check_assoc_AP(pnetwork->IEs, pnetwork->IELength); + + for (i = sizeof(NDIS_802_11_FIXED_IEs); i < pnetwork->IELength;) + { + pIE = (PNDIS_802_11_VARIABLE_IEs)(pnetwork->IEs + i); + + switch (pIE->ElementID) + { + case _VENDOR_SPECIFIC_IE_://Get WMM IE. + if ( _rtw_memcmp(pIE->data, WMM_OUI, 4) ) + { + pmlmeinfo->WMM_enable = 1; + } + break; + + case _HT_CAPABILITY_IE_: //Get HT Cap IE. + pmlmeinfo->HT_caps_enable = 1; + break; + + case _HT_EXTRA_INFO_IE_: //Get HT Info IE. + pmlmeinfo->HT_info_enable = 1; + + //spec case only for cisco's ap because cisco's ap issue assoc rsp using mcs rate @40MHz or @20MHz +//#if !defined(CONFIG_CONCURRENT_MODE) && !defined(CONFIG_DUALMAC_CONCURRENT) +// if(pmlmeinfo->assoc_AP_vendor == ciscoAP) +//#endif + { + struct HT_info_element *pht_info = (struct HT_info_element *)(pIE->data); + + if( pnetwork->Configuration.DSConfig > 14 ) + { + if( pregpriv->cbw40_enable & BIT(1) ) + cbw40_enable = 1; + } + else + if( pregpriv->cbw40_enable & BIT(0) ) + cbw40_enable = 1; + + if ((cbw40_enable) && (pht_info->infos[0] & BIT(2))) + { + //switch to the 40M Hz mode according to the AP + pmlmeext->cur_bwmode = HT_CHANNEL_WIDTH_40; + switch (pht_info->infos[0] & 0x3) + { + case 1: + pmlmeext->cur_ch_offset = HAL_PRIME_CHNL_OFFSET_LOWER; + break; + + case 3: + pmlmeext->cur_ch_offset = HAL_PRIME_CHNL_OFFSET_UPPER; + break; + + default: + pmlmeext->cur_ch_offset = HAL_PRIME_CHNL_OFFSET_DONT_CARE; + break; + } + + DBG_871X("set ch/bw before connected\n"); + } + } + break; + + default: + break; + } + + i += (pIE->Length + 2); + } +#if 0 + if (padapter->registrypriv.wifi_spec) { + // for WiFi test, follow WMM test plan spec + acparm = 0x002F431C; // VO + rtw_hal_set_hwreg(padapter, HW_VAR_AC_PARAM_VO, (u8 *)(&acparm)); + acparm = 0x005E541C; // VI + rtw_hal_set_hwreg(padapter, HW_VAR_AC_PARAM_VI, (u8 *)(&acparm)); + acparm = 0x0000A525; // BE + rtw_hal_set_hwreg(padapter, HW_VAR_AC_PARAM_BE, (u8 *)(&acparm)); + acparm = 0x0000A549; // BK + rtw_hal_set_hwreg(padapter, HW_VAR_AC_PARAM_BK, (u8 *)(&acparm)); + + // for WiFi test, mixed mode with intel STA under bg mode throughput issue + if (padapter->mlmepriv.htpriv.ht_option == _FALSE){ + acparm = 0x00004320; + rtw_hal_set_hwreg(padapter, HW_VAR_AC_PARAM_BE, (u8 *)(&acparm)); + } + } + else { + acparm = 0x002F3217; // VO + rtw_hal_set_hwreg(padapter, HW_VAR_AC_PARAM_VO, (u8 *)(&acparm)); + acparm = 0x005E4317; // VI + rtw_hal_set_hwreg(padapter, HW_VAR_AC_PARAM_VI, (u8 *)(&acparm)); + acparm = 0x00105320; // BE + rtw_hal_set_hwreg(padapter, HW_VAR_AC_PARAM_BE, (u8 *)(&acparm)); + acparm = 0x0000A444; // BK + rtw_hal_set_hwreg(padapter, HW_VAR_AC_PARAM_BK, (u8 *)(&acparm)); + } +#endif + + /* check channel, bandwidth, offset and switch */ +#ifdef CONFIG_DUALMAC_CONCURRENT + if(dc_handle_join_request(padapter) == _FAIL) { + DBG_871X("dc_handle_join_request fail !!!\n"); + return H2C_SUCCESS; + } + set_channel_bwmode(padapter, pmlmeext->cur_channel, pmlmeext->cur_ch_offset, pmlmeext->cur_bwmode); +#else //NON CONFIG_DUALMAC_CONCURRENT + if(rtw_chk_start_clnt_join(padapter) == _FAIL) { + report_join_res(padapter, (-4)); + return H2C_SUCCESS; + } +#endif + + //disable dynamic functions, such as high power, DIG + //Switch_DM_Func(padapter, DYNAMIC_FUNC_DISABLE, _FALSE); + + //config the initial gain under linking, need to write the BB registers + + initialgain = 0x1E; + rtw_hal_set_hwreg(padapter, HW_VAR_INITIAL_GAIN, (u8 *)(&initialgain)); + + + rtw_hal_set_hwreg(padapter, HW_VAR_BSSID, pmlmeinfo->network.MacAddress); + join_type = 0; + rtw_hal_set_hwreg(padapter, HW_VAR_MLME_JOIN, (u8 *)(&join_type)); + + //cancel link timer + _cancel_timer_ex(&pmlmeext->link_timer); + + start_clnt_join(padapter); + + return H2C_SUCCESS; + +} + +u8 disconnect_hdl(_adapter *padapter, unsigned char *pbuf) +{ + struct disconnect_parm *param = (struct disconnect_parm *)pbuf; + struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; + struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info); + WLAN_BSSID_EX *pnetwork = (WLAN_BSSID_EX*)(&(pmlmeinfo->network)); + u8 val8; + + if (is_client_associated_to_ap(padapter)) + { + issue_deauth_ex(padapter, pnetwork->MacAddress, WLAN_REASON_DEAUTH_LEAVING, param->deauth_timeout_ms/100, 100); + } + + //set_opmode_cmd(padapter, infra_client_with_mlme); + + //pmlmeinfo->state = WIFI_FW_NULL_STATE; + + + rtw_hal_set_hwreg(padapter, HW_VAR_MLME_DISCONNECT, 0); + rtw_hal_set_hwreg(padapter, HW_VAR_BSSID, null_addr); + + //restore to initial setting. + update_tx_basic_rate(padapter, padapter->registrypriv.wireless_mode); + + if(((pmlmeinfo->state&0x03) == WIFI_FW_ADHOC_STATE) || ((pmlmeinfo->state&0x03) == WIFI_FW_AP_STATE)) + { + //Stop BCN + val8 = 0; + rtw_hal_set_hwreg(padapter, HW_VAR_BCN_FUNC, (u8 *)(&val8)); + } + + + //set MSR to no link state -> infra. mode + Set_MSR(padapter, _HW_STATE_STATION_); + + pmlmeinfo->state = WIFI_FW_NULL_STATE; + +#ifdef CONFIG_DUALMAC_CONCURRENT + dc_set_channel_bwmode_disconnect(padapter); +#else +#ifdef CONFIG_CONCURRENT_MODE + if((check_buddy_fwstate(padapter, _FW_LINKED)) != _TRUE) + { +#endif //CONFIG_CONCURRENT_MODE + //switch to the 20M Hz mode after disconnect + pmlmeext->cur_bwmode = HT_CHANNEL_WIDTH_20; + pmlmeext->cur_ch_offset = HAL_PRIME_CHNL_OFFSET_DONT_CARE; + + set_channel_bwmode(padapter, pmlmeext->cur_channel, pmlmeext->cur_ch_offset, pmlmeext->cur_bwmode); +#ifdef CONFIG_CONCURRENT_MODE + } +#endif //CONFIG_CONCURRENT_MODE +#endif //CONFIG_DUALMAC_CONCURRENT + + flush_all_cam_entry(padapter); + + _cancel_timer_ex(&pmlmeext->link_timer); + + rtw_free_uc_swdec_pending_queue(padapter); + + return H2C_SUCCESS; +} + +int rtw_scan_ch_decision(_adapter *padapter, struct rtw_ieee80211_channel *out, + u32 out_num, struct rtw_ieee80211_channel *in, u32 in_num) +{ + int i, j; + int scan_ch_num = 0; + int set_idx; + struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; + + /* clear first */ + _rtw_memset(out, 0, sizeof(struct rtw_ieee80211_channel)*out_num); + + /* acquire channels from in */ + j = 0; + for (i=0;ichannel_set, in[i].hw_value)) >=0 + && rtw_mlme_band_check(padapter, in[i].hw_value) == _TRUE + ) + { + if (j >= out_num) { + DBG_871X_LEVEL(_drv_always_, FUNC_ADPT_FMT" out_num:%u not enough\n", + FUNC_ADPT_ARG(padapter), out_num); + break; + } + + _rtw_memcpy(&out[j], &in[i], sizeof(struct rtw_ieee80211_channel)); + + if(pmlmeext->channel_set[set_idx].ScanType == SCAN_PASSIVE) + out[j].flags &= RTW_IEEE80211_CHAN_PASSIVE_SCAN; + + j++; + } + if(j>=out_num) + break; + } + + /* if out is empty, use channel_set as default */ + if(j == 0) { + for (i=0;imax_chan_nums;i++) { + + if (0) + DBG_871X(FUNC_ADPT_FMT" ch:%u\n", FUNC_ADPT_ARG(padapter), pmlmeext->channel_set[i].ChannelNum); + + if (rtw_mlme_band_check(padapter, pmlmeext->channel_set[i].ChannelNum) == _TRUE) { + + if (j >= out_num) { + DBG_871X_LEVEL(_drv_always_, FUNC_ADPT_FMT" out_num:%u not enough\n", + FUNC_ADPT_ARG(padapter), out_num); + break; + } + + out[j].hw_value = pmlmeext->channel_set[i].ChannelNum; + + if(pmlmeext->channel_set[i].ScanType == SCAN_PASSIVE) + out[j].flags &= RTW_IEEE80211_CHAN_PASSIVE_SCAN; + + j++; + } + } + } + + return j; +} + +u8 sitesurvey_cmd_hdl(_adapter *padapter, u8 *pbuf) +{ + struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; + struct sitesurvey_parm *pparm = (struct sitesurvey_parm *)pbuf; + u8 bdelayscan = _FALSE; + u8 val8; + u32 initialgain; + u32 i; + u8 write_initial_gain = 1; + +#ifdef CONFIG_P2P + struct wifidirect_info* pwdinfo = &padapter->wdinfo; +#endif + + if (pmlmeext->sitesurvey_res.state == SCAN_DISABLE) + { +#ifdef CONFIG_CONCURRENT_MODE + //for first time sitesurvey_cmd + rtw_hal_set_hwreg(padapter, HW_VAR_CHECK_TXBUF, 0); +#endif //CONFIG_CONCURRENT_MODE + + pmlmeext->sitesurvey_res.state = SCAN_START; + pmlmeext->sitesurvey_res.bss_cnt = 0; + pmlmeext->sitesurvey_res.channel_idx = 0; + + for(i=0;issid[i].SsidLength) { + _rtw_memcpy(pmlmeext->sitesurvey_res.ssid[i].Ssid, pparm->ssid[i].Ssid, IW_ESSID_MAX_SIZE); + pmlmeext->sitesurvey_res.ssid[i].SsidLength= pparm->ssid[i].SsidLength; + } else { + pmlmeext->sitesurvey_res.ssid[i].SsidLength= 0; + } + } + + pmlmeext->sitesurvey_res.ch_num = rtw_scan_ch_decision(padapter + , pmlmeext->sitesurvey_res.ch, RTW_CHANNEL_SCAN_AMOUNT + , pparm->ch, pparm->ch_num + ); + + pmlmeext->sitesurvey_res.scan_mode = pparm->scan_mode; + +#ifdef CONFIG_DUALMAC_CONCURRENT + bdelayscan = dc_handle_site_survey(padapter); +#endif + + //issue null data if associating to the AP + if (is_client_associated_to_ap(padapter) == _TRUE) + { + pmlmeext->sitesurvey_res.state = SCAN_TXNULL; + + issue_nulldata(padapter, NULL, 1, 3, 500); + +#ifdef CONFIG_CONCURRENT_MODE + if(is_client_associated_to_ap(padapter->pbuddy_adapter) == _TRUE) + { + DBG_871X("adapter is scanning(buddy_adapter is linked), issue nulldata(pwrbit=1)\n"); + + issue_nulldata(padapter->pbuddy_adapter, NULL, 1, 3, 500); + } +#endif + bdelayscan = _TRUE; + } +#ifdef CONFIG_CONCURRENT_MODE + else if(is_client_associated_to_ap(padapter->pbuddy_adapter) == _TRUE) + { + #ifdef CONFIG_TDLS + if(padapter->pbuddy_adapter->wdinfo.wfd_tdls_enable == 1) + { + issue_tunneled_probe_req(padapter->pbuddy_adapter); + } + #endif //CONFIG_TDLS + + pmlmeext->sitesurvey_res.state = SCAN_TXNULL; + + issue_nulldata(padapter->pbuddy_adapter, NULL, 1, 3, 500); + + bdelayscan = _TRUE; + } +#endif + if(bdelayscan) + { + //delay 50ms to protect nulldata(1). + set_survey_timer(pmlmeext, 50); + return H2C_SUCCESS; + } + } + + if ((pmlmeext->sitesurvey_res.state == SCAN_START) || (pmlmeext->sitesurvey_res.state == SCAN_TXNULL)) + { +#ifdef CONFIG_FIND_BEST_CHANNEL +#if 0 + for (i=0; pmlmeext->channel_set[i].ChannelNum !=0; i++) { + pmlmeext->channel_set[i].rx_count = 0; + } +#endif +#endif /* CONFIG_FIND_BEST_CHANNEL */ + + //disable dynamic functions, such as high power, DIG + Save_DM_Func_Flag(padapter); + Switch_DM_Func(padapter, DYNAMIC_FUNC_DISABLE, _FALSE); + + //config the initial gain under scaning, need to write the BB registers + +#ifdef CONFIG_P2P +#ifdef CONFIG_IOCTL_CFG80211 + if((wdev_to_priv(padapter->rtw_wdev))->p2p_enabled == _TRUE && pwdinfo->driver_interface == DRIVER_CFG80211 ) + { + write_initial_gain = 0; + } + else +#endif //CONFIG_IOCTL_CFG80211 + if ( !rtw_p2p_chk_state( pwdinfo, P2P_STATE_NONE ) ) + initialgain = 0x28; + else +#endif //CONFIG_P2P + initialgain = 0x17; + + if(write_initial_gain == 1) + rtw_hal_set_hwreg(padapter, HW_VAR_INITIAL_GAIN, (u8 *)(&initialgain)); + + //set MSR to no link state + Set_MSR(padapter, _HW_STATE_NOLINK_); + + val8 = 1; //under site survey + rtw_hal_set_hwreg(padapter, HW_VAR_MLME_SITESURVEY, (u8 *)(&val8)); + + pmlmeext->sitesurvey_res.state = SCAN_PROCESS; + } + + site_survey(padapter); + + return H2C_SUCCESS; + +} + +u8 setauth_hdl(_adapter *padapter, unsigned char *pbuf) +{ + struct setauth_parm *pparm = (struct setauth_parm *)pbuf; + struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; + struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info); + + if (pparm->mode < 4) + { + pmlmeinfo->auth_algo = pparm->mode; + } + + return H2C_SUCCESS; +} + +u8 setkey_hdl(_adapter *padapter, u8 *pbuf) +{ + unsigned short ctrl; + struct setkey_parm *pparm = (struct setkey_parm *)pbuf; + struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; + struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info); + unsigned char null_sta[] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; + + //main tx key for wep. + if(pparm->set_tx) + pmlmeinfo->key_index = pparm->keyid; + + //write cam + ctrl = BIT(15) | ((pparm->algorithm) << 2) | pparm->keyid; + + write_cam(padapter, pparm->keyid, ctrl, null_sta, pparm->key); + + //allow multicast packets to driver + rtw_hal_set_hwreg(padapter, HW_VAR_ON_RCR_AM, null_addr); + + return H2C_SUCCESS; +} + +u8 set_stakey_hdl(_adapter *padapter, u8 *pbuf) +{ + u16 ctrl=0; + u8 cam_id;//cam_entry + struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; + struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info); + struct set_stakey_parm *pparm = (struct set_stakey_parm *)pbuf; +#ifdef CONFIG_TDLS + struct tdls_info *ptdlsinfo = &padapter->tdlsinfo; + struct sta_priv *pstapriv = &padapter->stapriv; + struct sta_info *psta; +#endif //CONFIG_TDLS + + //cam_entry: + //0~3 for default key + + //for concurrent mode (ap+sta): + //default key is disable, using sw encrypt/decrypt + //cam_entry = 4 //for sta mode (macid=0) + //cam_entry(macid+3) = 5 ~ N//for ap mode (aid=1~N, macid=2 ~N) + + //for concurrent mode (sta+sta): + //default key is disable, using sw encrypt/decrypt + //cam_entry = 4 //mapping to macid=0 + //cam_entry = 5 //mapping to macid=2 + +#ifdef CONFIG_CONCURRENT_MODE + if((pmlmeinfo->state&0x03) == WIFI_FW_STATION_STATE) + { + struct sta_priv *pstapriv = &padapter->stapriv; + struct sta_info *psta; + + psta = rtw_get_stainfo(pstapriv, pmlmeinfo->network.MacAddress); + + if(psta && psta->mac_id==2) + { + cam_id = 5; + } + else + { + cam_id = 4; + } +/* + if(padapter->iface_type > PRIMARY_IFACE) + { + cam_id = 5; + } + else + { + cam_id = 4; + } +*/ + } +#else + cam_id = 4; +#endif + + + if((pmlmeinfo->state&0x03) == WIFI_FW_AP_STATE) + { + + struct sta_info *psta; + struct sta_priv *pstapriv = &padapter->stapriv; + + if(pparm->algorithm == _NO_PRIVACY_) // clear cam entry + { + clear_cam_entry(padapter, pparm->id); + return H2C_SUCCESS_RSP; + } + + psta = rtw_get_stainfo(pstapriv, pparm->addr); + if(psta) + { + ctrl = (BIT(15) | ((pparm->algorithm) << 2)); + + DBG_871X("r871x_set_stakey_hdl(): enc_algorithm=%d\n", pparm->algorithm); + + if((psta->mac_id<1) || (psta->mac_id>(NUM_STA-4))) + { + DBG_871X("r871x_set_stakey_hdl():set_stakey failed, mac_id(aid)=%d\n", psta->mac_id); + return H2C_REJECTED; + } + + cam_id = (psta->mac_id + 3);//0~3 for default key, cmd_id=macid + 3, macid=aid+1; + + DBG_871X("Write CAM, mac_addr=%x:%x:%x:%x:%x:%x, cam_entry=%d\n", pparm->addr[0], + pparm->addr[1], pparm->addr[2], pparm->addr[3], pparm->addr[4], + pparm->addr[5], cam_id); + + write_cam(padapter, cam_id, ctrl, pparm->addr, pparm->key); + + return H2C_SUCCESS_RSP; + + } + else + { + DBG_871X("r871x_set_stakey_hdl(): sta has been free\n"); + return H2C_REJECTED; + } + + } + + //below for sta mode + + if(pparm->algorithm == _NO_PRIVACY_) // clear cam entry + { + clear_cam_entry(padapter, pparm->id); + return H2C_SUCCESS; + } + + ctrl = BIT(15) | ((pparm->algorithm) << 2); + +#ifdef CONFIG_TDLS + if(ptdlsinfo->clear_cam!=0){ + clear_cam_entry(padapter, ptdlsinfo->clear_cam); + ptdlsinfo->clear_cam=0; + + return H2C_SUCCESS; + } + + psta = rtw_get_stainfo(pstapriv, pparm->addr);//Get TDLS Peer STA + if( psta->tdls_sta_state&TDLS_LINKED_STATE ){ + write_cam(padapter, psta->mac_id, ctrl, pparm->addr, pparm->key); + } + else +#endif //CONFIG_TDLS + write_cam(padapter, cam_id, ctrl, pparm->addr, pparm->key); + + pmlmeinfo->enc_algo = pparm->algorithm; + + return H2C_SUCCESS; +} + +u8 add_ba_hdl(_adapter *padapter, unsigned char *pbuf) +{ + struct addBaReq_parm *pparm = (struct addBaReq_parm *)pbuf; + struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; + struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info); + + struct sta_info *psta = rtw_get_stainfo(&padapter->stapriv, pparm->addr); + + if(!psta) + return H2C_SUCCESS; + + + if (((pmlmeinfo->state & WIFI_FW_ASSOC_SUCCESS) && (pmlmeinfo->HT_enable)) || + ((pmlmeinfo->state&0x03) == WIFI_FW_AP_STATE)) + { + //pmlmeinfo->ADDBA_retry_count = 0; + //pmlmeinfo->candidate_tid_bitmap |= (0x1 << pparm->tid); + //psta->htpriv.candidate_tid_bitmap |= BIT(pparm->tid); + issue_action_BA(padapter, pparm->addr, RTW_WLAN_ACTION_ADDBA_REQ, (u16)pparm->tid); + //_set_timer(&pmlmeext->ADDBA_timer, ADDBA_TO); + _set_timer(&psta->addba_retry_timer, ADDBA_TO); + } +#ifdef CONFIG_TDLS + else if((psta->tdls_sta_state & TDLS_LINKED_STATE)&& + (psta->htpriv.ht_option==_TRUE) && + (psta->htpriv.ampdu_enable==_TRUE) ) + { + issue_action_BA(padapter, pparm->addr, RTW_WLAN_ACTION_ADDBA_REQ, (u16)pparm->tid); + //_set_timer(&pmlmeext->ADDBA_timer, ADDBA_TO); + _set_timer(&psta->addba_retry_timer, ADDBA_TO); + } +#endif //CONFIG + else + { + psta->htpriv.candidate_tid_bitmap &= ~BIT(pparm->tid); + } + + return H2C_SUCCESS; +} + +u8 set_tx_beacon_cmd(_adapter* padapter) +{ + struct cmd_obj *ph2c; + struct Tx_Beacon_param *ptxBeacon_parm; + struct cmd_priv *pcmdpriv = &(padapter->cmdpriv); + struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; + struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info); + u8 res = _SUCCESS; + int len_diff = 0; + +_func_enter_; + + if ((ph2c = (struct cmd_obj*)rtw_zmalloc(sizeof(struct cmd_obj))) == NULL) + { + res= _FAIL; + goto exit; + } + + if ((ptxBeacon_parm = (struct Tx_Beacon_param *)rtw_zmalloc(sizeof(struct Tx_Beacon_param))) == NULL) + { + rtw_mfree((unsigned char *)ph2c, sizeof(struct cmd_obj)); + res= _FAIL; + goto exit; + } + + _rtw_memcpy(&(ptxBeacon_parm->network), &(pmlmeinfo->network), sizeof(WLAN_BSSID_EX)); + + len_diff = update_hidden_ssid( + ptxBeacon_parm->network.IEs+_BEACON_IE_OFFSET_ + , ptxBeacon_parm->network.IELength-_BEACON_IE_OFFSET_ + , pmlmeinfo->hidden_ssid_mode + ); + ptxBeacon_parm->network.IELength += len_diff; + + init_h2fwcmd_w_parm_no_rsp(ph2c, ptxBeacon_parm, GEN_CMD_CODE(_TX_Beacon)); + + res = rtw_enqueue_cmd(pcmdpriv, ph2c); + + +exit: + +_func_exit_; + + return res; +} + + +u8 mlme_evt_hdl(_adapter *padapter, unsigned char *pbuf) +{ + u8 evt_code, evt_seq; + u16 evt_sz; + uint *peventbuf; + void (*event_callback)(_adapter *dev, u8 *pbuf); + struct evt_priv *pevt_priv = &(padapter->evtpriv); + + peventbuf = (uint*)pbuf; + evt_sz = (u16)(*peventbuf&0xffff); + evt_seq = (u8)((*peventbuf>>24)&0x7f); + evt_code = (u8)((*peventbuf>>16)&0xff); + + + #ifdef CHECK_EVENT_SEQ + // checking event sequence... + if (evt_seq != (ATOMIC_READ(&pevt_priv->event_seq) & 0x7f) ) + { + RT_TRACE(_module_rtl871x_cmd_c_,_drv_info_,("Evetn Seq Error! %d vs %d\n", (evt_seq & 0x7f), (ATOMIC_READ(&pevt_priv->event_seq) & 0x7f))); + + pevt_priv->event_seq = (evt_seq+1)&0x7f; + + goto _abort_event_; + } + #endif + + // checking if event code is valid + if (evt_code >= MAX_C2HEVT) + { + RT_TRACE(_module_rtl871x_cmd_c_,_drv_err_,("\nEvent Code(%d) mismatch!\n", evt_code)); + goto _abort_event_; + } + + // checking if event size match the event parm size + if ((wlanevents[evt_code].parmsize != 0) && + (wlanevents[evt_code].parmsize != evt_sz)) + { + + RT_TRACE(_module_rtl871x_cmd_c_,_drv_err_,("\nEvent(%d) Parm Size mismatch (%d vs %d)!\n", + evt_code, wlanevents[evt_code].parmsize, evt_sz)); + goto _abort_event_; + + } + + ATOMIC_INC(&pevt_priv->event_seq); + + peventbuf += 2; + + if(peventbuf) + { + event_callback = wlanevents[evt_code].event_callback; + event_callback(padapter, (u8*)peventbuf); + + pevt_priv->evt_done_cnt++; + } + + +_abort_event_: + + + return H2C_SUCCESS; + +} + +u8 h2c_msg_hdl(_adapter *padapter, unsigned char *pbuf) +{ + if(!pbuf) + return H2C_PARAMETERS_ERROR; + + return H2C_SUCCESS; +} + +u8 tx_beacon_hdl(_adapter *padapter, unsigned char *pbuf) +{ + if(send_beacon(padapter)==_FAIL) + { + DBG_871X("issue_beacon, fail!\n"); + return H2C_PARAMETERS_ERROR; + } +#ifdef CONFIG_AP_MODE + else //tx bc/mc frames after update TIM + { + _irqL irqL; + struct sta_info *psta_bmc; + _list *xmitframe_plist, *xmitframe_phead; + struct xmit_frame *pxmitframe=NULL; + struct xmit_priv *pxmitpriv = &padapter->xmitpriv; + struct sta_priv *pstapriv = &padapter->stapriv; + + //for BC/MC Frames + psta_bmc = rtw_get_bcmc_stainfo(padapter); + if(!psta_bmc) + return H2C_SUCCESS; + + if((pstapriv->tim_bitmap&BIT(0)) && (psta_bmc->sleepq_len>0)) + { +#ifndef CONFIG_PCI_HCI + rtw_msleep_os(10);// 10ms, ATIM(HIQ) Windows +#endif + //_enter_critical_bh(&psta_bmc->sleep_q.lock, &irqL); + _enter_critical_bh(&pxmitpriv->lock, &irqL); + + xmitframe_phead = get_list_head(&psta_bmc->sleep_q); + xmitframe_plist = get_next(xmitframe_phead); + + while ((rtw_end_of_queue_search(xmitframe_phead, xmitframe_plist)) == _FALSE) + { + pxmitframe = LIST_CONTAINOR(xmitframe_plist, struct xmit_frame, list); + + xmitframe_plist = get_next(xmitframe_plist); + + rtw_list_delete(&pxmitframe->list); + + psta_bmc->sleepq_len--; + if(psta_bmc->sleepq_len>0) + pxmitframe->attrib.mdata = 1; + else + pxmitframe->attrib.mdata = 0; + + pxmitframe->attrib.triggered=1; + + pxmitframe->attrib.qsel = 0x11;//HIQ + +#if 0 + _exit_critical_bh(&psta_bmc->sleep_q.lock, &irqL); + if(rtw_hal_xmit(padapter, pxmitframe) == _TRUE) + { + rtw_os_xmit_complete(padapter, pxmitframe); + } + _enter_critical_bh(&psta_bmc->sleep_q.lock, &irqL); + +#endif + rtw_hal_xmitframe_enqueue(padapter, pxmitframe); + + //pstapriv->tim_bitmap &= ~BIT(0); + + } + + //_exit_critical_bh(&psta_bmc->sleep_q.lock, &irqL); + _exit_critical_bh(&pxmitpriv->lock, &irqL); + + } + + } +#endif + + return H2C_SUCCESS; + +} + +void change_band_update_ie(_adapter *padapter, WLAN_BSSID_EX *pnetwork) +{ + u8 network_type,rate_len, total_rate_len,remainder_rate_len; + struct mlme_ext_priv *pmlmeext = &(padapter->mlmeextpriv); + struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info); + u8 erpinfo=0x4; + + //DBG_871X("%s\n", __FUNCTION__); + + if(pmlmeext->cur_channel >= 36) + { + network_type = WIRELESS_11A; + total_rate_len = IEEE80211_NUM_OFDM_RATESLEN; + DBG_871X("%s(): change to 5G Band\n",__FUNCTION__); + rtw_remove_bcn_ie(padapter, pnetwork, _ERPINFO_IE_); + } + else + { + network_type = WIRELESS_11BG; + total_rate_len = IEEE80211_CCK_RATE_LEN+IEEE80211_NUM_OFDM_RATESLEN; + DBG_871X("%s(): change to 2.4G Band\n",__FUNCTION__); + rtw_add_bcn_ie(padapter, pnetwork, _ERPINFO_IE_, &erpinfo, 1); + } + + rtw_set_supported_rate(pnetwork->SupportedRates, network_type); + + UpdateBrateTbl(padapter, pnetwork->SupportedRates); + rtw_hal_set_hwreg(padapter, HW_VAR_BASIC_RATE, pnetwork->SupportedRates); + + if(total_rate_len > 8) + { + rate_len = 8; + remainder_rate_len = total_rate_len - 8; + } + else + { + rate_len = total_rate_len; + remainder_rate_len = 0; + } + + rtw_add_bcn_ie(padapter, pnetwork, _SUPPORTEDRATES_IE_, pnetwork->SupportedRates, rate_len); + + if(remainder_rate_len) + { + rtw_add_bcn_ie(padapter, pnetwork, _EXT_SUPPORTEDRATES_IE_, (pnetwork->SupportedRates+8), remainder_rate_len); + } + else + { + rtw_remove_bcn_ie(padapter, pnetwork, _EXT_SUPPORTEDRATES_IE_); + } +} + + +#ifdef CONFIG_DUALMAC_CONCURRENT +void dc_SelectChannel(_adapter *padapter, unsigned char channel) +{ + PADAPTER ptarget_adapter; + + if( (padapter->pbuddy_adapter != NULL) && + (padapter->DualMacConcurrent == _TRUE) && + (padapter->adapter_type == SECONDARY_ADAPTER)) + { + // only mac0 could control BB&RF + ptarget_adapter = padapter->pbuddy_adapter; + } + else + { + ptarget_adapter = padapter; + } + + _enter_critical_mutex(&(adapter_to_dvobj(ptarget_adapter)->setch_mutex), NULL); + + rtw_hal_set_chan(ptarget_adapter, channel); + + _exit_critical_mutex(&(adapter_to_dvobj(ptarget_adapter)->setch_mutex), NULL); +} + +void dc_SetBWMode(_adapter *padapter, unsigned short bwmode, unsigned char channel_offset) +{ + PADAPTER ptarget_adapter; + + if( (padapter->pbuddy_adapter != NULL) && + (padapter->DualMacConcurrent == _TRUE) && + (padapter->adapter_type == SECONDARY_ADAPTER)) + { + // only mac0 could control BB&RF + ptarget_adapter = padapter->pbuddy_adapter; + } + else + { + ptarget_adapter = padapter; + } + + _enter_critical_mutex(&(adapter_to_dvobj(ptarget_adapter)->setbw_mutex), NULL); + + rtw_hal_set_bwmode(ptarget_adapter, (HT_CHANNEL_WIDTH)bwmode, channel_offset); + + _exit_critical_mutex(&(adapter_to_dvobj(ptarget_adapter)->setbw_mutex), NULL); +} + +void dc_set_channel_bwmode_disconnect(_adapter *padapter) +{ + struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; + PADAPTER pbuddy_adapter = padapter->pbuddy_adapter; + struct mlme_priv *pbuddy_mlmepriv = NULL; + + if(pbuddy_adapter != NULL && + padapter->DualMacConcurrent == _TRUE) + { + pbuddy_mlmepriv = &(pbuddy_adapter->mlmepriv); + if((check_fwstate(pbuddy_mlmepriv, _FW_LINKED)) != _TRUE) + { + //switch to the 20M Hz mode after disconnect + pmlmeext->cur_bwmode = HT_CHANNEL_WIDTH_20; + pmlmeext->cur_ch_offset = HAL_PRIME_CHNL_OFFSET_DONT_CARE; + + set_channel_bwmode(padapter, pmlmeext->cur_channel, pmlmeext->cur_ch_offset, pmlmeext->cur_bwmode); + } + } + else + { + //switch to the 20M Hz mode after disconnect + pmlmeext->cur_bwmode = HT_CHANNEL_WIDTH_20; + pmlmeext->cur_ch_offset = HAL_PRIME_CHNL_OFFSET_DONT_CARE; + + set_channel_bwmode(padapter, pmlmeext->cur_channel, pmlmeext->cur_ch_offset, pmlmeext->cur_bwmode); + } +} + +u8 dc_handle_join_request(_adapter *padapter) +{ + struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; + struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info); + WLAN_BSSID_EX *pnetwork = (WLAN_BSSID_EX*)(&(pmlmeinfo->network)); + PADAPTER pbuddy_adapter = padapter->pbuddy_adapter; + struct mlme_ext_priv *pbuddy_mlmeext = NULL; + struct mlme_priv *pbuddy_mlmepriv = NULL; + u8 ret = _SUCCESS; + + if(pbuddy_adapter != NULL && + padapter->DualMacConcurrent == _TRUE) + { + pbuddy_mlmeext = &pbuddy_adapter->mlmeextpriv; + pbuddy_mlmepriv = &(pbuddy_adapter->mlmepriv); + + if(pmlmeext->cur_channel != pbuddy_mlmeext->cur_channel || + pmlmeext->cur_bwmode != pbuddy_mlmeext->cur_bwmode || + pmlmeext->cur_ch_offset != pbuddy_mlmeext->cur_ch_offset) + { + if((check_fwstate(pbuddy_mlmepriv, WIFI_AP_STATE)) == _TRUE) + { + //issue deauth to all stas if if2 is at ap mode + rtw_sta_flush(pbuddy_adapter); + + //rtw_hal_set_hwreg(padapter, HW_VAR_CHECK_TXBUF, 0); + rtw_hal_set_hwreg(pbuddy_adapter, HW_VAR_CHECK_TXBUF, 0); + } + else if(check_fwstate(pbuddy_mlmepriv, _FW_LINKED) == _TRUE) + { + if(pmlmeext->cur_channel == pbuddy_mlmeext->cur_channel) + { + // HT_CHANNEL_WIDTH_40 or HT_CHANNEL_WIDTH_20 but channel offset is different + if((pmlmeext->cur_bwmode == pbuddy_mlmeext->cur_bwmode) && + (pmlmeext->cur_ch_offset != pbuddy_mlmeext->cur_ch_offset) ) + { + report_join_res(padapter, -4); + ret = _FAIL; + } + } + else + { + report_join_res(padapter, -4); + ret = _FAIL; + } + } + } + else if (is_client_associated_to_ap(pbuddy_adapter) == _TRUE) + { + issue_nulldata(pbuddy_adapter, NULL, 1, 0, 0); + } + } + + return ret; +} + +void dc_handle_join_done(_adapter *padapter, u8 join_res) +{ + struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; + struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info); + PADAPTER pbuddy_adapter = padapter->pbuddy_adapter; + struct mlme_priv *pbuddy_mlmepriv = NULL; + struct mlme_ext_priv *pbuddy_mlmeext = NULL; + struct mlme_ext_info *pbuddy_mlmeinfo = NULL; + WLAN_BSSID_EX *pbuddy_network_mlmeext = NULL; + u8 change_band = _FALSE; + + + if(pbuddy_adapter != NULL && + padapter->DualMacConcurrent == _TRUE) + { + pbuddy_mlmepriv = &(pbuddy_adapter->mlmepriv); + pbuddy_mlmeext = &pbuddy_adapter->mlmeextpriv; + pbuddy_mlmeinfo = &(pbuddy_mlmeext->mlmext_info); + pbuddy_network_mlmeext = &(pbuddy_mlmeinfo->network); + + if(((pbuddy_mlmeinfo->state&0x03) == WIFI_FW_AP_STATE) && + check_fwstate(pbuddy_mlmepriv, _FW_LINKED)) + { + //restart and update beacon + DBG_871X("after join, current adapter, CH=%d, BW=%d, offset=%d\n", pmlmeext->cur_channel, pmlmeext->cur_bwmode, pmlmeext->cur_ch_offset); + + if(join_res >= 0) + { + u8 *p; + int ie_len; + struct HT_info_element *pht_info=NULL; + + if((pbuddy_mlmeext->cur_channel <= 14 && pmlmeext->cur_channel >= 36) || + (pbuddy_mlmeext->cur_channel >= 36 && pmlmeext->cur_channel <= 14)) + { + change_band = _TRUE; + } + + //sync channel/bwmode/ch_offset with another adapter + pbuddy_mlmeext->cur_channel = pmlmeext->cur_channel; + + if(pbuddy_mlmeext->cur_bwmode == HT_CHANNEL_WIDTH_40) + { + p = rtw_get_ie((pbuddy_network_mlmeext->IEs + sizeof(NDIS_802_11_FIXED_IEs)), _HT_ADD_INFO_IE_, &ie_len, (pbuddy_network_mlmeext->IELength - sizeof(NDIS_802_11_FIXED_IEs))); + if( p && ie_len) + { + pht_info = (struct HT_info_element *)(p+2); + pht_info->infos[0] &= ~(BIT(0)|BIT(1)); //no secondary channel is present + } + + if(pmlmeext->cur_bwmode == HT_CHANNEL_WIDTH_40) + { + pbuddy_mlmeext->cur_ch_offset = pmlmeext->cur_ch_offset; + + //to update cur_ch_offset value in beacon + if( pht_info ) + { + switch(pmlmeext->cur_ch_offset) + { + case HAL_PRIME_CHNL_OFFSET_LOWER: + pht_info->infos[0] |= 0x1; + break; + case HAL_PRIME_CHNL_OFFSET_UPPER: + pht_info->infos[0] |= 0x3; + break; + case HAL_PRIME_CHNL_OFFSET_DONT_CARE: + default: + break; + } + } + } + else if(pmlmeext->cur_bwmode == HT_CHANNEL_WIDTH_20) + { + pbuddy_mlmeext->cur_bwmode = HT_CHANNEL_WIDTH_20; + pbuddy_mlmeext->cur_ch_offset = HAL_PRIME_CHNL_OFFSET_DONT_CARE; + + if(pmlmeext->cur_channel>0 && pmlmeext->cur_channel<5) + { + if(pht_info) + pht_info->infos[0] |= 0x1; + + pbuddy_mlmeext->cur_bwmode = HT_CHANNEL_WIDTH_40; + pbuddy_mlmeext->cur_ch_offset = HAL_PRIME_CHNL_OFFSET_LOWER; + } + + if(pmlmeext->cur_channel>7 && pmlmeext->cur_channel<(14+1)) + { + if(pht_info) + pht_info->infos[0] |= 0x3; + + pbuddy_mlmeext->cur_bwmode = HT_CHANNEL_WIDTH_40; + pbuddy_mlmeext->cur_ch_offset = HAL_PRIME_CHNL_OFFSET_UPPER; + } + + set_channel_bwmode(padapter, pbuddy_mlmeext->cur_channel, pbuddy_mlmeext->cur_ch_offset, pbuddy_mlmeext->cur_bwmode); + } + } + + // to update channel value in beacon + pbuddy_network_mlmeext->Configuration.DSConfig = pmlmeext->cur_channel; + p = rtw_get_ie((pbuddy_network_mlmeext->IEs + sizeof(NDIS_802_11_FIXED_IEs)), _DSSET_IE_, &ie_len, (pbuddy_network_mlmeext->IELength - sizeof(NDIS_802_11_FIXED_IEs))); + if(p && ie_len>0) + *(p + 2) = pmlmeext->cur_channel; + + p = rtw_get_ie((pbuddy_network_mlmeext->IEs + sizeof(NDIS_802_11_FIXED_IEs)), _HT_ADD_INFO_IE_, &ie_len, (pbuddy_network_mlmeext->IELength - sizeof(NDIS_802_11_FIXED_IEs))); + if( p && ie_len) + { + pht_info = (struct HT_info_element *)(p+2); + pht_info->primary_channel = pmlmeext->cur_channel; + } + + // update mlmepriv's cur_network + _rtw_memcpy(&pbuddy_mlmepriv->cur_network.network, pbuddy_network_mlmeext, pbuddy_network_mlmeext->Length); + } + else + { + // switch back to original channel/bwmode/ch_offset; + set_channel_bwmode(padapter, pbuddy_mlmeext->cur_channel, pbuddy_mlmeext->cur_ch_offset, pbuddy_mlmeext->cur_bwmode); + } + + DBG_871X("after join, another adapter, CH=%d, BW=%d, offset=%d\n", pbuddy_mlmeext->cur_channel, pbuddy_mlmeext->cur_bwmode, pbuddy_mlmeext->cur_ch_offset); + + if(change_band == _TRUE) + change_band_update_ie(pbuddy_adapter, pbuddy_network_mlmeext); + + DBG_871X("update pbuddy_adapter's beacon\n"); + + update_beacon(pbuddy_adapter, 0, NULL, _TRUE); + } + else if (is_client_associated_to_ap(pbuddy_adapter) == _TRUE) + { + if((pbuddy_mlmeext->cur_bwmode == HT_CHANNEL_WIDTH_40) && + (pmlmeext->cur_bwmode == HT_CHANNEL_WIDTH_20)) + { + set_channel_bwmode(padapter, pbuddy_mlmeext->cur_channel, pbuddy_mlmeext->cur_ch_offset, pbuddy_mlmeext->cur_bwmode); + } + + issue_nulldata(pbuddy_adapter, NULL, 0, 0, 0); + } + } +} + +sint dc_check_fwstate(_adapter *padapter, sint fw_state) +{ + PADAPTER pbuddy_adapter = padapter->pbuddy_adapter; + struct mlme_priv *pbuddy_mlmepriv = NULL; + + if(padapter->pbuddy_adapter != NULL && + padapter->DualMacConcurrent == _TRUE) + + { + pbuddy_mlmepriv = &(pbuddy_adapter->mlmepriv); + + return check_fwstate(pbuddy_mlmepriv, fw_state); + } + + return _FALSE; +} + +u8 dc_handle_site_survey(_adapter *padapter) +{ + struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; + struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info); + PADAPTER pbuddy_adapter = padapter->pbuddy_adapter; + + // only mac0 can do scan request, help issue nulldata(1) for mac1 + if(pbuddy_adapter != NULL && + padapter->DualMacConcurrent == _TRUE) + { + if (is_client_associated_to_ap(pbuddy_adapter) == _TRUE) + { + pmlmeext->sitesurvey_res.state = SCAN_TXNULL; + + issue_nulldata(pbuddy_adapter, NULL, 1, 2, 0); + + return _TRUE; + } + } + + return _FALSE; +} + +void dc_report_survey_event(_adapter *padapter, union recv_frame *precv_frame) +{ + if(padapter->pbuddy_adapter != NULL && + padapter->DualMacConcurrent == _TRUE) + { + report_survey_event(padapter->pbuddy_adapter, precv_frame); + } +} + +void dc_set_channel_bwmode_survey_done(_adapter *padapter) +{ + struct mlme_priv *pmlmepriv = &(padapter->mlmepriv); + struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; + PADAPTER pbuddy_adapter = padapter->pbuddy_adapter; + struct mlme_priv *pbuddy_mlmepriv = NULL; + struct mlme_ext_priv *pbuddy_mlmeext = NULL; + struct mlme_ext_info *pbuddy_mlmeinfo = NULL; + u8 cur_channel; + u8 cur_bwmode; + u8 cur_ch_offset; + + if(pbuddy_adapter != NULL && + padapter->DualMacConcurrent == _TRUE) + { + pbuddy_mlmepriv = &(pbuddy_adapter->mlmepriv); + pbuddy_mlmeext = &pbuddy_adapter->mlmeextpriv; + pbuddy_mlmeinfo = &(pbuddy_mlmeext->mlmext_info); + + if(check_fwstate(pbuddy_mlmepriv, _FW_LINKED)) + { + if(check_fwstate(pmlmepriv, _FW_LINKED) && + (pmlmeext->cur_bwmode == HT_CHANNEL_WIDTH_40)) + { + cur_channel = pmlmeext->cur_channel; + cur_bwmode = pmlmeext->cur_bwmode; + cur_ch_offset = pmlmeext->cur_ch_offset; + } + else + { + cur_channel = pbuddy_mlmeext->cur_channel; + cur_bwmode = pbuddy_mlmeext->cur_bwmode; + cur_ch_offset = pbuddy_mlmeext->cur_ch_offset; + } + } + else + { + cur_channel = pmlmeext->cur_channel; + cur_bwmode = pmlmeext->cur_bwmode; + cur_ch_offset = pmlmeext->cur_ch_offset; + } + + set_channel_bwmode(padapter, cur_channel, cur_ch_offset, cur_bwmode); + + if (is_client_associated_to_ap(pbuddy_adapter) == _TRUE) + { + //issue null data + issue_nulldata(pbuddy_adapter, NULL, 0, 0, 0); + } + + if(((pbuddy_mlmeinfo->state&0x03) == WIFI_FW_AP_STATE) && + check_fwstate(pbuddy_mlmepriv, _FW_LINKED)) + { + + DBG_871X("survey done, current CH=%d, BW=%d, offset=%d\n", cur_channel, cur_bwmode, cur_ch_offset); + + DBG_871X("restart pbuddy_adapter's beacon\n"); + + update_beacon(pbuddy_adapter, 0, NULL, _TRUE); + } + } + else + { + set_channel_bwmode(padapter, pmlmeext->cur_channel, pmlmeext->cur_ch_offset, pmlmeext->cur_bwmode); + } +} + +void dc_set_ap_channel_bandwidth(_adapter *padapter, u8 channel, u8 channel_offset, u8 bwmode) +{ + u8 *p; + u8 val8, cur_channel, cur_bwmode, cur_ch_offset, change_band; + int ie_len; + struct registry_priv *pregpriv = &padapter->registrypriv; + struct mlme_priv *pmlmepriv = &(padapter->mlmepriv); + WLAN_BSSID_EX *pnetwork = (WLAN_BSSID_EX *)&pmlmepriv->cur_network.network; + struct mlme_ext_priv *pmlmeext = &(padapter->mlmeextpriv); + struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info); + struct HT_info_element *pht_info=NULL; + _adapter *pbuddy_adapter = padapter->pbuddy_adapter; + struct mlme_priv *pbuddy_mlmepriv = NULL; + struct mlme_ext_priv *pbuddy_mlmeext = NULL; + + DBG_871X("dualmac_concurrent_ap_set_channel_bwmode ==>\n"); + + cur_channel = channel; + cur_bwmode = bwmode; + cur_ch_offset = channel_offset; + change_band = _FALSE; + + p = rtw_get_ie((pnetwork->IEs + sizeof(NDIS_802_11_FIXED_IEs)), _HT_ADD_INFO_IE_, &ie_len, (pnetwork->IELength - sizeof(NDIS_802_11_FIXED_IEs))); + if( p && ie_len) + { + pht_info = (struct HT_info_element *)(p+2); + } + + if(pbuddy_adapter != NULL && + padapter->DualMacConcurrent == _TRUE) + { + pbuddy_mlmepriv = &(pbuddy_adapter->mlmepriv); + pbuddy_mlmeext = &pbuddy_adapter->mlmeextpriv; + + if(!check_fwstate(pbuddy_mlmepriv, _FW_LINKED|_FW_UNDER_LINKING|_FW_UNDER_SURVEY)) + { + set_channel_bwmode(padapter, cur_channel, cur_ch_offset, cur_bwmode); + } + else if(check_fwstate(pbuddy_mlmepriv, _FW_LINKED)==_TRUE) + { + //To sync cur_channel/cur_bwmode/cur_ch_offset with another adapter + DBG_871X("Another iface is at linked state, sync cur_channel/cur_bwmode/cur_ch_offset\n"); + DBG_871X("Another adapter, CH=%d, BW=%d, offset=%d\n", pbuddy_mlmeext->cur_channel, pbuddy_mlmeext->cur_bwmode, pbuddy_mlmeext->cur_ch_offset); + DBG_871X("Current adapter, CH=%d, BW=%d, offset=%d\n", cur_channel, cur_bwmode, cur_ch_offset); + + cur_channel = pbuddy_mlmeext->cur_channel; + if(cur_bwmode == HT_CHANNEL_WIDTH_40) + { + if(pht_info) + pht_info->infos[0] &= ~(BIT(0)|BIT(1)); + + if(pbuddy_mlmeext->cur_bwmode == HT_CHANNEL_WIDTH_40) + { + cur_ch_offset = pbuddy_mlmeext->cur_ch_offset; + + //to update cur_ch_offset value in beacon + if(pht_info) + { + switch(cur_ch_offset) + { + case HAL_PRIME_CHNL_OFFSET_LOWER: + pht_info->infos[0] |= 0x1; + break; + case HAL_PRIME_CHNL_OFFSET_UPPER: + pht_info->infos[0] |= 0x3; + break; + case HAL_PRIME_CHNL_OFFSET_DONT_CARE: + default: + break; + } + } + } + else if(pbuddy_mlmeext->cur_bwmode == HT_CHANNEL_WIDTH_20) + { + cur_bwmode = HT_CHANNEL_WIDTH_20; + cur_ch_offset = HAL_PRIME_CHNL_OFFSET_DONT_CARE; + + if(cur_channel>0 && cur_channel<5) + { + if(pht_info) + pht_info->infos[0] |= 0x1; + + cur_bwmode = HT_CHANNEL_WIDTH_40; + cur_ch_offset = HAL_PRIME_CHNL_OFFSET_LOWER; + } + + if(cur_channel>7 && cur_channel<(14+1)) + { + if(pht_info) + pht_info->infos[0] |= 0x3; + + cur_bwmode = HT_CHANNEL_WIDTH_40; + cur_ch_offset = HAL_PRIME_CHNL_OFFSET_UPPER; + } + + set_channel_bwmode(padapter, cur_channel, cur_ch_offset, cur_bwmode); + } + } + + // to update channel value in beacon + pnetwork->Configuration.DSConfig = cur_channel; + p = rtw_get_ie((pnetwork->IEs + sizeof(NDIS_802_11_FIXED_IEs)), _DSSET_IE_, &ie_len, (pnetwork->IELength - sizeof(NDIS_802_11_FIXED_IEs))); + if(p && ie_len>0) + *(p + 2) = cur_channel; + + if(pht_info) + pht_info->primary_channel = cur_channel; + } + } + else + { + set_channel_bwmode(padapter, cur_channel, cur_ch_offset, cur_bwmode); + } + + DBG_871X("CH=%d, BW=%d, offset=%d\n", cur_channel, cur_bwmode, cur_ch_offset); + + if((channel <= 14 && cur_channel >= 36) || + (channel >= 36 && cur_channel <= 14)) + { + change_band = _TRUE; + } + + pmlmeext->cur_channel = cur_channel; + pmlmeext->cur_bwmode = cur_bwmode; + pmlmeext->cur_ch_offset = cur_ch_offset; + + if(change_band == _TRUE) + change_band_update_ie(padapter, pnetwork); + + DBG_871X("dualmac_concurrent_ap_set_channel_bwmode <==\n"); +} + +void dc_resume_xmit(_adapter *padapter) +{ + PADAPTER pbuddy_adapter = padapter->pbuddy_adapter; + + if(pbuddy_adapter != NULL && + padapter->DualMacConcurrent == _TRUE) + { + DBG_871X("dc_resume_xmit, resume pbuddy_adapter Tx\n"); + rtw_os_xmit_schedule(pbuddy_adapter); + } +} + +u8 dc_check_xmit(_adapter *padapter) +{ + PADAPTER pbuddy_adapter = padapter->pbuddy_adapter; + struct mlme_priv *pbuddy_mlmepriv = NULL; + + if(pbuddy_adapter != NULL && + padapter->DualMacConcurrent == _TRUE) + { + pbuddy_mlmepriv = &(pbuddy_adapter->mlmepriv); + if (check_fwstate(pbuddy_mlmepriv, _FW_UNDER_SURVEY|_FW_UNDER_LINKING) == _TRUE) + { + DBG_871X("dc_check_xmit pbuddy_adapter is under survey or under linking\n"); + return _FALSE; + } + } + + return _TRUE; +} +#endif + +#ifdef CONFIG_CONCURRENT_MODE +sint check_buddy_mlmeinfo_state(_adapter *padapter, u32 state) +{ + PADAPTER pbuddy_adapter; + struct mlme_ext_priv *pbuddy_mlmeext; + struct mlme_ext_info *pbuddy_mlmeinfo; + + if(padapter == NULL) + return _FALSE; + + pbuddy_adapter = padapter->pbuddy_adapter; + + if(pbuddy_adapter == NULL) + return _FALSE; + + + pbuddy_mlmeext = &pbuddy_adapter->mlmeextpriv; + pbuddy_mlmeinfo = &(pbuddy_mlmeext->mlmext_info); + + if((pbuddy_mlmeinfo->state&0x03) == state) + return _TRUE; + + return _FALSE; + +} + +void concurrent_chk_joinbss_done(_adapter *padapter, int join_res) +{ + struct mlme_ext_priv *pmlmeext; + struct mlme_ext_info *pmlmeinfo; + PADAPTER pbuddy_adapter; + struct mlme_priv *pbuddy_mlmepriv; + struct mlme_ext_priv *pbuddy_mlmeext; + struct mlme_ext_info *pbuddy_mlmeinfo; + WLAN_BSSID_EX *pbuddy_network_mlmeext; + + pmlmeext = &padapter->mlmeextpriv; + pmlmeinfo = &(pmlmeext->mlmext_info); + + + if(!rtw_buddy_adapter_up(padapter)) + { + set_channel_bwmode(padapter, pmlmeext->cur_channel, pmlmeext->cur_ch_offset, pmlmeext->cur_bwmode); + return; + } + + pbuddy_adapter = padapter->pbuddy_adapter; + pbuddy_mlmepriv = &(pbuddy_adapter->mlmepriv); + pbuddy_mlmeext = &pbuddy_adapter->mlmeextpriv; + pbuddy_mlmeinfo = &(pbuddy_mlmeext->mlmext_info); + pbuddy_network_mlmeext = &(pbuddy_mlmeinfo->network); + + if(((pbuddy_mlmeinfo->state&0x03) == WIFI_FW_AP_STATE) && + check_fwstate(pbuddy_mlmepriv, _FW_LINKED)) + { + //restart and update beacon + + DBG_871X("after join,primary adapter, CH=%d, BW=%d, offset=%d\n" + , pmlmeext->cur_channel, pmlmeext->cur_bwmode, pmlmeext->cur_ch_offset); + + + if(join_res >= 0) + { + u8 *p; + int ie_len; + u8 change_band = _FALSE; + struct HT_info_element *pht_info=NULL; + + if((pmlmeext->cur_channel <= 14 && pbuddy_mlmeext->cur_channel >= 36) || + (pmlmeext->cur_channel >= 36 && pbuddy_mlmeext->cur_channel <= 14)) + change_band = _TRUE; + + //sync channel/bwmode/ch_offset with primary adapter + pbuddy_mlmeext->cur_channel = pmlmeext->cur_channel; + if(pbuddy_mlmeext->cur_bwmode == HT_CHANNEL_WIDTH_40) + { + p = rtw_get_ie((pbuddy_network_mlmeext->IEs + sizeof(NDIS_802_11_FIXED_IEs)), _HT_ADD_INFO_IE_, &ie_len, (pbuddy_network_mlmeext->IELength - sizeof(NDIS_802_11_FIXED_IEs))); + if( p && ie_len) + { + pht_info = (struct HT_info_element *)(p+2); + pht_info->infos[0] &= ~(BIT(0)|BIT(1)); //no secondary channel is present + } + + if(pmlmeext->cur_bwmode == HT_CHANNEL_WIDTH_40) + { + pbuddy_mlmeext->cur_ch_offset = pmlmeext->cur_ch_offset; + + //to update cur_ch_offset value in beacon + if( pht_info ) + { + switch(pmlmeext->cur_ch_offset) + { + case HAL_PRIME_CHNL_OFFSET_LOWER: + pht_info->infos[0] |= 0x1; + break; + case HAL_PRIME_CHNL_OFFSET_UPPER: + pht_info->infos[0] |= 0x3; + break; + case HAL_PRIME_CHNL_OFFSET_DONT_CARE: + default: + break; + } + + } + + } + else if(pmlmeext->cur_bwmode == HT_CHANNEL_WIDTH_20) + { + if(pmlmeext->cur_channel>=1 && pmlmeext->cur_channel<=4) + { + if(pht_info) + pht_info->infos[0] |= HT_INFO_HT_PARAM_SECONDARY_CHNL_ABOVE; + + pbuddy_mlmeext->cur_bwmode = HT_CHANNEL_WIDTH_40; + pbuddy_mlmeext->cur_ch_offset = HAL_PRIME_CHNL_OFFSET_LOWER; + } + else if(pmlmeext->cur_channel>=5 && pmlmeext->cur_channel<=14) + { + if(pht_info) + pht_info->infos[0] |= HT_INFO_HT_PARAM_SECONDARY_CHNL_BELOW; + + pbuddy_mlmeext->cur_bwmode = HT_CHANNEL_WIDTH_40; + pbuddy_mlmeext->cur_ch_offset = HAL_PRIME_CHNL_OFFSET_UPPER; + } + else + { + switch(pmlmeext->cur_channel) + { + case 36: + case 44: + case 52: + case 60: + case 100: + case 108: + case 116: + case 124: + case 132: + case 149: + case 157: + { + if(pht_info) + pht_info->infos[0] |= HT_INFO_HT_PARAM_SECONDARY_CHNL_ABOVE; + pbuddy_mlmeext->cur_bwmode = HT_CHANNEL_WIDTH_40; + pbuddy_mlmeext->cur_ch_offset = HAL_PRIME_CHNL_OFFSET_LOWER; + break; + } + case 40: + case 48: + case 56: + case 64: + case 104: + case 112: + case 120: + case 128: + case 136: + case 153: + case 161: + { + if(pht_info) + pht_info->infos[0] |= HT_INFO_HT_PARAM_SECONDARY_CHNL_BELOW; + + pbuddy_mlmeext->cur_bwmode = HT_CHANNEL_WIDTH_40; + pbuddy_mlmeext->cur_ch_offset = HAL_PRIME_CHNL_OFFSET_UPPER; + break; + } + default: + if(pht_info) + pht_info->infos[0] &= ~HT_INFO_HT_PARAM_SECONDARY_CHNL_BELOW; + pbuddy_mlmeext->cur_bwmode = HT_CHANNEL_WIDTH_20; + pbuddy_mlmeext->cur_ch_offset = HAL_PRIME_CHNL_OFFSET_DONT_CARE; + break; + + } + + } + + } + + set_channel_bwmode(padapter, pbuddy_mlmeext->cur_channel, pbuddy_mlmeext->cur_ch_offset, pbuddy_mlmeext->cur_bwmode); + + } + else + { + set_channel_bwmode(padapter, pmlmeext->cur_channel, pmlmeext->cur_ch_offset, pmlmeext->cur_bwmode); + } + + + // to update channel value in beacon + pbuddy_network_mlmeext->Configuration.DSConfig = pmlmeext->cur_channel; + p = rtw_get_ie((pbuddy_network_mlmeext->IEs + sizeof(NDIS_802_11_FIXED_IEs)), _DSSET_IE_, &ie_len, (pbuddy_network_mlmeext->IELength - sizeof(NDIS_802_11_FIXED_IEs))); + if(p && ie_len>0) + *(p + 2) = pmlmeext->cur_channel; + + p = rtw_get_ie((pbuddy_network_mlmeext->IEs + sizeof(NDIS_802_11_FIXED_IEs)), _HT_ADD_INFO_IE_, &ie_len, (pbuddy_network_mlmeext->IELength - sizeof(NDIS_802_11_FIXED_IEs))); + if( p && ie_len) + { + pht_info = (struct HT_info_element *)(p+2); + pht_info->primary_channel = pmlmeext->cur_channel; + } + + //buddy interface band is different from current interface, update ERP, support rate, ext support rate IE + if(change_band == _TRUE) + change_band_update_ie(pbuddy_adapter, pbuddy_network_mlmeext); + } + else + { + // switch back to original channel/bwmode/ch_offset; + set_channel_bwmode(padapter, pbuddy_mlmeext->cur_channel, pbuddy_mlmeext->cur_ch_offset, pbuddy_mlmeext->cur_bwmode); + } + + DBG_871X("after join, second adapter, CH=%d, BW=%d, offset=%d\n", pbuddy_mlmeext->cur_channel, pbuddy_mlmeext->cur_bwmode, pbuddy_mlmeext->cur_ch_offset); + + DBG_871X("update pbuddy_adapter's beacon\n"); + + update_beacon(pbuddy_adapter, 0, NULL, _TRUE); + + } + else if(((pbuddy_mlmeinfo->state&0x03) == WIFI_FW_STATION_STATE) && + check_fwstate(pbuddy_mlmepriv, _FW_LINKED)) + { + if(join_res >= 0) + { + pbuddy_mlmeext->cur_channel = pmlmeext->cur_channel; + if(pbuddy_mlmeext->cur_bwmode == HT_CHANNEL_WIDTH_40) + set_channel_bwmode(padapter, pbuddy_mlmeext->cur_channel, pbuddy_mlmeext->cur_ch_offset, pbuddy_mlmeext->cur_bwmode); + else if(pmlmeext->cur_bwmode == HT_CHANNEL_WIDTH_40) + set_channel_bwmode(padapter, pmlmeext->cur_channel, pmlmeext->cur_ch_offset, pmlmeext->cur_bwmode); + else + set_channel_bwmode(padapter, pmlmeext->cur_channel, HAL_PRIME_CHNL_OFFSET_DONT_CARE, HT_CHANNEL_WIDTH_20); + } + else + { + // switch back to original channel/bwmode/ch_offset; + set_channel_bwmode(padapter, pbuddy_mlmeext->cur_channel, pbuddy_mlmeext->cur_ch_offset, pbuddy_mlmeext->cur_bwmode); + } + } + else + { + set_channel_bwmode(padapter, pmlmeext->cur_channel, pmlmeext->cur_ch_offset, pmlmeext->cur_bwmode); + } + +} +#endif //CONFIG_CONCURRENT_MODE + +int rtw_chk_start_clnt_join(_adapter *padapter) +{ + struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; + unsigned char cur_ch = pmlmeext->cur_channel; + unsigned char cur_bw = pmlmeext->cur_bwmode; + unsigned char cur_ch_offset = pmlmeext->cur_ch_offset; + bool chbw_allow = _TRUE; + bool connect_allow = _TRUE; + +#ifdef CONFIG_CONCURRENT_MODE + PADAPTER pbuddy_adapter; + struct mlme_ext_priv *pbuddy_mlmeext; + struct mlme_ext_info *pbuddy_pmlmeinfo; + struct mlme_priv *pbuddy_mlmepriv; + + if (!rtw_buddy_adapter_up(padapter)) { + goto start_join_set_ch_bw; + } + + pbuddy_adapter = padapter->pbuddy_adapter; + pbuddy_mlmeext = &pbuddy_adapter->mlmeextpriv; + pbuddy_pmlmeinfo = &(pbuddy_mlmeext->mlmext_info); + pbuddy_mlmepriv = &(pbuddy_adapter->mlmepriv); + + if((pbuddy_pmlmeinfo->state&0x03) == WIFI_FW_AP_STATE)//for AP MODE + { + DBG_871X("start_clnt_join: "ADPT_FMT"(ch=%d, bw=%d, ch_offset=%d)" + ", "ADPT_FMT" AP mode(ch=%d, bw=%d, ch_offset=%d)\n", + ADPT_ARG(padapter), pmlmeext->cur_channel, pmlmeext->cur_bwmode, pmlmeext->cur_ch_offset, + ADPT_ARG(pbuddy_adapter), pbuddy_mlmeext->cur_channel, pbuddy_mlmeext->cur_bwmode, pbuddy_mlmeext->cur_ch_offset); + + if(pmlmeext->cur_channel != pbuddy_mlmeext->cur_channel) + { + chbw_allow = _FALSE; + } + else if((pmlmeext->cur_bwmode == HT_CHANNEL_WIDTH_40) && + (pbuddy_mlmeext->cur_bwmode == HT_CHANNEL_WIDTH_40) && + (pmlmeext->cur_ch_offset != pbuddy_mlmeext->cur_ch_offset)) + { + chbw_allow = _FALSE; + } + else if((pmlmeext->cur_bwmode == HT_CHANNEL_WIDTH_20) && + (pbuddy_mlmeext->cur_bwmode == HT_CHANNEL_WIDTH_40)) + { + cur_ch = pmlmeext->cur_channel; + cur_bw = pbuddy_mlmeext->cur_bwmode; + cur_ch_offset = pbuddy_mlmeext->cur_ch_offset; + } + + DBG_871X("start_clnt_join: connect_allow:%d, chbw_allow:%d\n", connect_allow, chbw_allow); + if (chbw_allow == _FALSE) { + #ifdef CONFIG_SPCT_CH_SWITCH + if (1) { + rtw_ap_inform_ch_switch(pbuddy_adapter, pmlmeext->cur_channel , pmlmeext->cur_ch_offset); + } else + #endif + { + //issue deauth to all stas if if2 is at ap mode + rtw_sta_flush(pbuddy_adapter); + } + rtw_hal_set_hwreg(padapter, HW_VAR_CHECK_TXBUF, 0); + } + } + else if(check_fwstate(pbuddy_mlmepriv, _FW_LINKED) == _TRUE && + check_fwstate(pbuddy_mlmepriv, WIFI_STATION_STATE) == _TRUE) //for Client Mode/p2p client + { + DBG_871X("start_clnt_join: "ADPT_FMT"(ch=%d, bw=%d, ch_offset=%d)" + ", "ADPT_FMT" STA mode(ch=%d, bw=%d, ch_offset=%d)\n", + ADPT_ARG(padapter), pmlmeext->cur_channel, pmlmeext->cur_bwmode, pmlmeext->cur_ch_offset, + ADPT_ARG(pbuddy_adapter), pbuddy_mlmeext->cur_channel, pbuddy_mlmeext->cur_bwmode, pbuddy_mlmeext->cur_ch_offset); + + if(pmlmeext->cur_channel != pbuddy_mlmeext->cur_channel) + { + chbw_allow = _FALSE; + } + else if((pmlmeext->cur_bwmode == HT_CHANNEL_WIDTH_20) && + (pbuddy_mlmeext->cur_bwmode == HT_CHANNEL_WIDTH_40)) + { + cur_bw = HT_CHANNEL_WIDTH_40; + cur_ch_offset = pbuddy_mlmeext->cur_ch_offset; + } + else if((pmlmeext->cur_bwmode == HT_CHANNEL_WIDTH_40) && + (pbuddy_mlmeext->cur_bwmode == HT_CHANNEL_WIDTH_40) && + (pmlmeext->cur_ch_offset != pbuddy_mlmeext->cur_ch_offset)) + { + chbw_allow = _FALSE; + } + + connect_allow = chbw_allow; + + #if defined(CONFIG_P2P) && defined(CONFIG_IOCTL_CFG80211) + /* wlan0-sta mode has higher priority than p2p0-p2p client */ + if (!rtw_p2p_chk_state(&(pbuddy_adapter->wdinfo), P2P_STATE_NONE) + && pbuddy_adapter->wdinfo.driver_interface == DRIVER_CFG80211) + { + connect_allow = _TRUE; + } + #endif /* CONFIG_P2P && CONFIG_IOCTL_CFG80211 */ + + DBG_871X("start_clnt_join: connect_allow:%d, chbw_allow:%d\n", connect_allow, chbw_allow); + if (connect_allow == _TRUE && chbw_allow == _FALSE) { + /* disconnect buddy's connection */ + rtw_disassoc_cmd(pbuddy_adapter, 500, _FALSE); + rtw_indicate_disconnect(pbuddy_adapter); + rtw_free_assoc_resources(pbuddy_adapter, 1); + } + } + +start_join_set_ch_bw: +#endif /* CONFIG_CONCURRENT_MODE */ + + if (connect_allow == _TRUE) { + DBG_871X("start_join_set_ch_bw: ch=%d, bwmode=%d, ch_offset=%d\n", cur_ch, cur_bw, cur_ch_offset); + set_channel_bwmode(padapter, cur_ch, cur_ch_offset, cur_bw); + } + + return connect_allow == _TRUE ? _SUCCESS : _FAIL; +} + +/* Find union about ch, bw, ch_offset of all linked interfaces */ +int rtw_get_ch_setting_union(_adapter *adapter, u8 *ch, u8 *bw, u8 *offset) +{ + struct dvobj_priv *dvobj = adapter_to_dvobj(adapter); + _adapter *iface; + struct mlme_ext_priv *mlmeext; + int i; + u8 ch_ret = 0; + u8 bw_ret = HT_CHANNEL_WIDTH_20; + u8 offset_ret = HAL_PRIME_CHNL_OFFSET_DONT_CARE; + int num = 0; + + if (ch) *ch = 0; + if (bw) *bw = HT_CHANNEL_WIDTH_20; + if (offset) *offset = HAL_PRIME_CHNL_OFFSET_DONT_CARE; + + for (i = 0; iiface_nums; i++) { + iface = dvobj->padapters[i]; + mlmeext = &iface->mlmeextpriv; + + if (!check_fwstate(&iface->mlmepriv, _FW_LINKED)) + continue; + + if (num == 0) { + ch_ret = mlmeext->cur_channel; + bw_ret = mlmeext->cur_bwmode; + offset_ret = mlmeext->cur_ch_offset; + num++; + continue; + } + + if (ch_ret != mlmeext->cur_channel) { + num = 0; + break; + } + + if (bw_ret < mlmeext->cur_bwmode) { + bw_ret = mlmeext->cur_bwmode; + offset_ret = mlmeext->cur_ch_offset; + } else if (bw_ret == mlmeext->cur_bwmode && offset_ret != mlmeext->cur_ch_offset) { + num = 0; + break; + } + + num++; + } + + if (num) { + if (ch) *ch = ch_ret; + if (bw) *bw = bw_ret; + if (offset) *offset = offset_ret; + } + + return num; +} + +u8 set_ch_hdl(_adapter *padapter, u8 *pbuf) +{ + struct set_ch_parm *set_ch_parm; + struct mlme_priv *pmlmepriv = &padapter->mlmepriv; + struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; + + if(!pbuf) + return H2C_PARAMETERS_ERROR; + + set_ch_parm = (struct set_ch_parm *)pbuf; + + DBG_871X(FUNC_NDEV_FMT" ch:%u, bw:%u, ch_offset:%u\n", + FUNC_NDEV_ARG(padapter->pnetdev), + set_ch_parm->ch, set_ch_parm->bw, set_ch_parm->ch_offset); + + pmlmeext->cur_channel = set_ch_parm->ch; + pmlmeext->cur_ch_offset = set_ch_parm->ch_offset; + pmlmeext->cur_bwmode = set_ch_parm->bw; + + set_channel_bwmode(padapter, set_ch_parm->ch, set_ch_parm->ch_offset, set_ch_parm->bw); + + return H2C_SUCCESS; +} + +u8 set_chplan_hdl(_adapter *padapter, unsigned char *pbuf) +{ + struct SetChannelPlan_param *setChannelPlan_param; + struct mlme_priv *pmlmepriv = &padapter->mlmepriv; + struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; + + if(!pbuf) + return H2C_PARAMETERS_ERROR; + + setChannelPlan_param = (struct SetChannelPlan_param *)pbuf; + + pmlmeext->max_chan_nums = init_channel_set(padapter, setChannelPlan_param->channel_plan, pmlmeext->channel_set); + init_channel_list(padapter, pmlmeext->channel_set, pmlmeext->max_chan_nums, &pmlmeext->channel_list); + + return H2C_SUCCESS; +} + +u8 led_blink_hdl(_adapter *padapter, unsigned char *pbuf) +{ + struct LedBlink_param *ledBlink_param; + + if(!pbuf) + return H2C_PARAMETERS_ERROR; + + ledBlink_param = (struct LedBlink_param *)pbuf; + + #ifdef CONFIG_LED_HANDLED_BY_CMD_THREAD + BlinkHandler(ledBlink_param->pLed); + #endif + + return H2C_SUCCESS; +} + +u8 set_csa_hdl(_adapter *padapter, unsigned char *pbuf) +{ +#ifdef CONFIG_DFS + struct SetChannelSwitch_param *setChannelSwitch_param; + struct SetChannelPlan_param *setChannelPlan_param; + struct mlme_priv *pmlmepriv = &padapter->mlmepriv; + struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; + struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info; + u8 new_ch_no; + u8 gval8 = 0x00, sval8 = 0xff; + + if(!pbuf) + return H2C_PARAMETERS_ERROR; + + setChannelSwitch_param = (struct SetChannelSwitch_param *)pbuf; + new_ch_no = setChannelSwitch_param->new_ch_no; + + rtw_hal_get_hwreg(padapter, HW_VAR_TXPAUSE, &gval8); + + rtw_hal_set_hwreg(padapter, HW_VAR_TXPAUSE, &sval8); + + DBG_871X("DFS detected! Swiching channel to %d!\n", new_ch_no); + SelectChannel(padapter, new_ch_no); + + rtw_hal_set_hwreg(padapter, HW_VAR_TXPAUSE, &gval8); + + rtw_free_network_queue(padapter, _TRUE); + rtw_indicate_disconnect(padapter); + + if ( ((new_ch_no >= 52) && (new_ch_no <= 64)) ||((new_ch_no >= 100) && (new_ch_no <= 140)) ) { + DBG_871X("Switched to DFS band (ch %02x) again!!\n", new_ch_no); + } + + return H2C_SUCCESS; +#else + return H2C_REJECTED; +#endif //CONFIG_DFS + +} + +// TDLS_WRCR : write RCR DATA BIT +// TDLS_SD_PTI : issue peer traffic indication +// TDLS_CS_OFF : go back to the channel linked with AP, terminating channel switch procedure +// TDLS_INIT_CH_SEN : init channel sensing, receive all data and mgnt frame +// TDLS_DONE_CH_SEN: channel sensing and report candidate channel +// TDLS_OFF_CH : first time set channel to off channel +// TDLS_BASE_CH : go back tp the channel linked with AP when set base channel as target channel +// TDLS_P_OFF_CH : periodically go to off channel +// TDLS_P_BASE_CH : periodically go back to base channel +// TDLS_RS_RCR : restore RCR +// TDLS_CKALV_PH1 : check alive timer phase1 +// TDLS_CKALV_PH2 : check alive timer phase2 +// TDLS_FREE_STA : free tdls sta +u8 tdls_hdl(_adapter *padapter, unsigned char *pbuf) +{ +#ifdef CONFIG_TDLS + _irqL irqL; + struct tdls_info *ptdlsinfo = &padapter->tdlsinfo; + struct TDLSoption_param *TDLSoption; + struct sta_info *ptdls_sta; + struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; + struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info; + u8 survey_channel, i, min, option; + + if(!pbuf) + return H2C_PARAMETERS_ERROR; + + TDLSoption = (struct TDLSoption_param *)pbuf; + + ptdls_sta = rtw_get_stainfo( &(padapter->stapriv), TDLSoption->addr ); + option = TDLSoption->option; + + if( ptdls_sta == NULL ) + { + if( option != TDLS_RS_RCR ) + return H2C_REJECTED; + } + + //_enter_critical_bh(&(ptdlsinfo->hdl_lock), &irqL); + DBG_871X("[%s] option:%d\n", __FUNCTION__, option); + + switch(option){ + case TDLS_WRCR: + //As long as TDLS handshake success, we should set RCR_CBSSID_DATA bit to 0 + //such we can receive all kinds of data frames. + rtw_hal_set_hwreg(padapter, HW_VAR_TDLS_WRCR, 0); + DBG_871X("TDLS with "MAC_FMT"\n", MAC_ARG(ptdls_sta->hwaddr)); + + pmlmeinfo->FW_sta_info[ptdls_sta->mac_id].psta = ptdls_sta; + //set TDLS sta rate. + set_sta_rate(padapter, ptdls_sta); + break; + case TDLS_SD_PTI: + issue_tdls_peer_traffic_indication(padapter, ptdls_sta); + break; + case TDLS_CS_OFF: + _cancel_timer_ex(&ptdls_sta->base_ch_timer); + _cancel_timer_ex(&ptdls_sta->off_ch_timer); + SelectChannel(padapter, pmlmeext->cur_channel); + ptdls_sta->tdls_sta_state &= ~(TDLS_CH_SWITCH_ON_STATE | + TDLS_PEER_AT_OFF_STATE | + TDLS_AT_OFF_CH_STATE); + DBG_871X("go back to base channel\n "); + issue_nulldata(padapter, NULL, 0, 0, 0); + break; + case TDLS_INIT_CH_SEN: + rtw_hal_set_hwreg(padapter, HW_VAR_TDLS_INIT_CH_SEN, 0); + pmlmeext->sitesurvey_res.channel_idx = 0; + ptdls_sta->option = TDLS_DONE_CH_SEN; + rtw_tdls_cmd(padapter, ptdls_sta->hwaddr, TDLS_DONE_CH_SEN); + break; + case TDLS_DONE_CH_SEN: + survey_channel = pmlmeext->channel_set[pmlmeext->sitesurvey_res.channel_idx].ChannelNum; + if(survey_channel){ + SelectChannel(padapter, survey_channel); + ptdlsinfo->cur_channel = survey_channel; + pmlmeext->sitesurvey_res.channel_idx++; + _set_timer(&ptdls_sta->option_timer, SURVEY_TO); + }else{ + SelectChannel(padapter, pmlmeext->cur_channel); + + rtw_hal_set_hwreg(padapter, HW_VAR_TDLS_DONE_CH_SEN, 0); + + if(ptdlsinfo->ch_sensing==1){ + ptdlsinfo->ch_sensing=0; + ptdlsinfo->cur_channel=1; + min=ptdlsinfo->collect_pkt_num[0]; + for(i=1; i ptdlsinfo->collect_pkt_num[i]){ + ptdlsinfo->cur_channel=i+1; + min=ptdlsinfo->collect_pkt_num[i]; + } + ptdlsinfo->collect_pkt_num[i]=0; + } + ptdlsinfo->collect_pkt_num[0]=0; + ptdlsinfo->candidate_ch=ptdlsinfo->cur_channel; + DBG_871X("TDLS channel sensing done, candidate channel: %02x\n", ptdlsinfo->candidate_ch); + ptdlsinfo->cur_channel=0; + + } + + if(ptdls_sta->tdls_sta_state & TDLS_PEER_SLEEP_STATE){ + ptdls_sta->tdls_sta_state |= TDLS_APSD_CHSW_STATE; + }else{ + //send null data with pwrbit==1 before send ch_switching_req to peer STA. + issue_nulldata(padapter, NULL, 1, 0, 0); + + ptdls_sta->tdls_sta_state |= TDLS_CH_SW_INITIATOR_STATE; + + issue_tdls_ch_switch_req(padapter, ptdls_sta->hwaddr); + DBG_871X("issue tdls ch switch req\n"); + } + } + break; + case TDLS_OFF_CH: + issue_nulldata(padapter, NULL, 1, 0, 0); + SelectChannel(padapter, ptdls_sta->off_ch); + + DBG_871X("change channel to tar ch:%02x\n", ptdls_sta->off_ch); + ptdls_sta->tdls_sta_state |= TDLS_AT_OFF_CH_STATE; + ptdls_sta->tdls_sta_state &= ~(TDLS_PEER_AT_OFF_STATE); + _set_timer(&ptdls_sta->option_timer, (u32)ptdls_sta->ch_switch_time); + break; + case TDLS_BASE_CH: + _cancel_timer_ex(&ptdls_sta->base_ch_timer); + _cancel_timer_ex(&ptdls_sta->off_ch_timer); + SelectChannel(padapter, pmlmeext->cur_channel); + ptdls_sta->tdls_sta_state &= ~(TDLS_CH_SWITCH_ON_STATE | + TDLS_PEER_AT_OFF_STATE | + TDLS_AT_OFF_CH_STATE); + DBG_871X("go back to base channel\n "); + issue_nulldata(padapter, NULL, 0, 0, 0); + _set_timer(&ptdls_sta->option_timer, (u32)ptdls_sta->ch_switch_time); + break; + case TDLS_P_OFF_CH: + SelectChannel(padapter, pmlmeext->cur_channel); + issue_nulldata(padapter, NULL, 0, 0, 0); + DBG_871X("change channel to base ch:%02x\n", pmlmeext->cur_channel); + ptdls_sta->tdls_sta_state &= ~(TDLS_PEER_AT_OFF_STATE| TDLS_AT_OFF_CH_STATE); + _set_timer(&ptdls_sta->off_ch_timer, TDLS_STAY_TIME); + break; + case TDLS_P_BASE_CH: + issue_nulldata(ptdls_sta->padapter, NULL, 1, 0, 0); + SelectChannel(padapter, ptdls_sta->off_ch); + DBG_871X("change channel to off ch:%02x\n", ptdls_sta->off_ch); + ptdls_sta->tdls_sta_state |= TDLS_AT_OFF_CH_STATE; + if((ptdls_sta->tdls_sta_state & TDLS_PEER_AT_OFF_STATE) != TDLS_PEER_AT_OFF_STATE){ + issue_nulldata_to_TDLS_peer_STA(padapter, ptdls_sta, 0); + } + _set_timer(&ptdls_sta->base_ch_timer, TDLS_STAY_TIME); + break; + case TDLS_RS_RCR: + rtw_hal_set_hwreg(padapter, HW_VAR_TDLS_RS_RCR, 0); + DBG_871X("wirte REG_RCR, set bit6 on\n"); + break; + case TDLS_CKALV_PH1: + _set_timer(&ptdls_sta->alive_timer2, TDLS_ALIVE_TIMER_PH2); + break; + case TDLS_CKALV_PH2: + _set_timer(&ptdls_sta->alive_timer1, TDLS_ALIVE_TIMER_PH1); + break; + case TDLS_FREE_STA: + free_tdls_sta(padapter, ptdls_sta); + break; + + } + + //_exit_critical_bh(&(ptdlsinfo->hdl_lock), &irqL); + + return H2C_SUCCESS; +#else + return H2C_REJECTED; +#endif //CONFIG_TDLS + +} --- linux-raspi2-4.2.0.orig/drivers/net/wireless/rtl8192cu/core/rtw_mp.c +++ linux-raspi2-4.2.0/drivers/net/wireless/rtl8192cu/core/rtw_mp.c @@ -0,0 +1,1323 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved. + * + * 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 + * published by the Free Software Foundation. + * + * 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 Street, Fifth Floor, Boston, MA 02110, USA + * + * + ******************************************************************************/ +#define _RTW_MP_C_ + +#include + +#ifdef PLATFORM_FREEBSD +#include /* for RFHIGHPID */ +#endif + +#ifdef CONFIG_RTL8712 +#include +#endif +#ifdef CONFIG_RTL8192C +#include +#endif +#ifdef CONFIG_RTL8192D +#include +#endif +#ifdef CONFIG_RTL8723A +#include +#endif + + +#ifdef CONFIG_MP_INCLUDED + +u32 read_macreg(_adapter *padapter, u32 addr, u32 sz) +{ + u32 val = 0; + + switch(sz) + { + case 1: + val = rtw_read8(padapter, addr); + break; + case 2: + val = rtw_read16(padapter, addr); + break; + case 4: + val = rtw_read32(padapter, addr); + break; + default: + val = 0xffffffff; + break; + } + + return val; + +} + +void write_macreg(_adapter *padapter, u32 addr, u32 val, u32 sz) +{ + switch(sz) + { + case 1: + rtw_write8(padapter, addr, (u8)val); + break; + case 2: + rtw_write16(padapter, addr, (u16)val); + break; + case 4: + rtw_write32(padapter, addr, val); + break; + default: + break; + } + +} + +u32 read_bbreg(_adapter *padapter, u32 addr, u32 bitmask) +{ + return rtw_hal_read_bbreg(padapter, addr, bitmask); +} + +void write_bbreg(_adapter *padapter, u32 addr, u32 bitmask, u32 val) +{ + rtw_hal_write_bbreg(padapter, addr, bitmask, val); +} + +u32 _read_rfreg(PADAPTER padapter, u8 rfpath, u32 addr, u32 bitmask) +{ + return rtw_hal_read_rfreg(padapter, (RF_RADIO_PATH_E)rfpath, addr, bitmask); +} + +void _write_rfreg(PADAPTER padapter, u8 rfpath, u32 addr, u32 bitmask, u32 val) +{ + rtw_hal_write_rfreg(padapter, (RF_RADIO_PATH_E)rfpath, addr, bitmask, val); +} + +u32 read_rfreg(PADAPTER padapter, u8 rfpath, u32 addr) +{ + return _read_rfreg(padapter, (RF_RADIO_PATH_E)rfpath, addr, bRFRegOffsetMask); +} + +void write_rfreg(PADAPTER padapter, u8 rfpath, u32 addr, u32 val) +{ + _write_rfreg(padapter, (RF_RADIO_PATH_E)rfpath, addr, bRFRegOffsetMask, val); +} + +static void _init_mp_priv_(struct mp_priv *pmp_priv) +{ + WLAN_BSSID_EX *pnetwork; + + _rtw_memset(pmp_priv, 0, sizeof(struct mp_priv)); + + pmp_priv->mode = MP_OFF; + + pmp_priv->channel = 1; + pmp_priv->bandwidth = HT_CHANNEL_WIDTH_20; + pmp_priv->prime_channel_offset = HAL_PRIME_CHNL_OFFSET_DONT_CARE; + pmp_priv->rateidx = MPT_RATE_1M; + pmp_priv->txpoweridx = 0x2A; + + pmp_priv->antenna_tx = ANTENNA_A; + pmp_priv->antenna_rx = ANTENNA_AB; + + pmp_priv->check_mp_pkt = 0; + + pmp_priv->tx_pktcount = 0; + + pmp_priv->rx_pktcount = 0; + pmp_priv->rx_crcerrpktcount = 0; + + pmp_priv->network_macaddr[0] = 0x00; + pmp_priv->network_macaddr[1] = 0xE0; + pmp_priv->network_macaddr[2] = 0x4C; + pmp_priv->network_macaddr[3] = 0x87; + pmp_priv->network_macaddr[4] = 0x66; + pmp_priv->network_macaddr[5] = 0x55; + + pnetwork = &pmp_priv->mp_network.network; + _rtw_memcpy(pnetwork->MacAddress, pmp_priv->network_macaddr, ETH_ALEN); + + pnetwork->Ssid.SsidLength = 8; + _rtw_memcpy(pnetwork->Ssid.Ssid, "mp_871x", pnetwork->Ssid.SsidLength); +} + +#ifdef PLATFORM_WINDOWS +/* +void mp_wi_callback( + IN NDIS_WORK_ITEM* pwk_item, + IN PVOID cntx + ) +{ + _adapter* padapter =(_adapter *)cntx; + struct mp_priv *pmppriv=&padapter->mppriv; + struct mp_wi_cntx *pmp_wi_cntx=&pmppriv->wi_cntx; + + // Execute specified action. + if(pmp_wi_cntx->curractfunc != NULL) + { + LARGE_INTEGER cur_time; + ULONGLONG start_time, end_time; + NdisGetCurrentSystemTime(&cur_time); // driver version + start_time = cur_time.QuadPart/10; // The return value is in microsecond + + pmp_wi_cntx->curractfunc(padapter); + + NdisGetCurrentSystemTime(&cur_time); // driver version + end_time = cur_time.QuadPart/10; // The return value is in microsecond + + RT_TRACE(_module_mp_, _drv_info_, + ("WorkItemActType: %d, time spent: %I64d us\n", + pmp_wi_cntx->param.act_type, (end_time-start_time))); + } + + NdisAcquireSpinLock(&(pmp_wi_cntx->mp_wi_lock)); + pmp_wi_cntx->bmp_wi_progress= _FALSE; + NdisReleaseSpinLock(&(pmp_wi_cntx->mp_wi_lock)); + + if (pmp_wi_cntx->bmpdrv_unload) + { + NdisSetEvent(&(pmp_wi_cntx->mp_wi_evt)); + } + +} +*/ + +static int init_mp_priv_by_os(struct mp_priv *pmp_priv) +{ + struct mp_wi_cntx *pmp_wi_cntx; + + if (pmp_priv == NULL) return _FAIL; + + pmp_priv->rx_testcnt = 0; + pmp_priv->rx_testcnt1 = 0; + pmp_priv->rx_testcnt2 = 0; + + pmp_priv->tx_testcnt = 0; + pmp_priv->tx_testcnt1 = 0; + + pmp_wi_cntx = &pmp_priv->wi_cntx + pmp_wi_cntx->bmpdrv_unload = _FALSE; + pmp_wi_cntx->bmp_wi_progress = _FALSE; + pmp_wi_cntx->curractfunc = NULL; + + return _SUCCESS; +} +#endif + +#ifdef PLATFORM_LINUX +static int init_mp_priv_by_os(struct mp_priv *pmp_priv) +{ + int i, res; + struct mp_xmit_frame *pmp_xmitframe; + + if (pmp_priv == NULL) return _FAIL; + + _rtw_init_queue(&pmp_priv->free_mp_xmitqueue); + + pmp_priv->pallocated_mp_xmitframe_buf = NULL; + pmp_priv->pallocated_mp_xmitframe_buf = rtw_zmalloc(NR_MP_XMITFRAME * sizeof(struct mp_xmit_frame) + 4); + if (pmp_priv->pallocated_mp_xmitframe_buf == NULL) { + res = _FAIL; + goto _exit_init_mp_priv; + } + + pmp_priv->pmp_xmtframe_buf = pmp_priv->pallocated_mp_xmitframe_buf + 4 - ((uint) (pmp_priv->pallocated_mp_xmitframe_buf) & 3); + + pmp_xmitframe = (struct mp_xmit_frame*)pmp_priv->pmp_xmtframe_buf; + + for (i = 0; i < NR_MP_XMITFRAME; i++) + { + _rtw_init_listhead(&pmp_xmitframe->list); + rtw_list_insert_tail(&pmp_xmitframe->list, &pmp_priv->free_mp_xmitqueue.queue); + + pmp_xmitframe->pkt = NULL; + pmp_xmitframe->frame_tag = MP_FRAMETAG; + pmp_xmitframe->padapter = pmp_priv->papdater; + + pmp_xmitframe++; + } + + pmp_priv->free_mp_xmitframe_cnt = NR_MP_XMITFRAME; + + res = _SUCCESS; + +_exit_init_mp_priv: + + return res; +} +#endif + +static void mp_init_xmit_attrib(struct mp_tx *pmptx, PADAPTER padapter) +{ + struct pkt_attrib *pattrib; + struct tx_desc *desc; + + // init xmitframe attribute + pattrib = &pmptx->attrib; + _rtw_memset(pattrib, 0, sizeof(struct pkt_attrib)); + desc = &pmptx->desc; + _rtw_memset(desc, 0, TXDESC_SIZE); + + pattrib->ether_type = 0x8712; + //_rtw_memcpy(pattrib->src, padapter->eeprompriv.mac_addr, ETH_ALEN); +// _rtw_memcpy(pattrib->ta, pattrib->src, ETH_ALEN); + _rtw_memset(pattrib->dst, 0xFF, ETH_ALEN); +// pattrib->pctrl = 0; +// pattrib->dhcp_pkt = 0; +// pattrib->pktlen = 0; + pattrib->ack_policy = 0; +// pattrib->pkt_hdrlen = ETH_HLEN; + pattrib->hdrlen = WLAN_HDR_A3_LEN; + pattrib->subtype = WIFI_DATA; + pattrib->priority = 0; + pattrib->qsel = pattrib->priority; +// do_queue_select(padapter, pattrib); + pattrib->nr_frags = 1; + pattrib->encrypt = 0; + pattrib->bswenc = _FALSE; + pattrib->qos_en = _FALSE; +} + +s32 init_mp_priv(PADAPTER padapter) +{ + struct mp_priv *pmppriv = &padapter->mppriv; + + _init_mp_priv_(pmppriv); + pmppriv->papdater = padapter; + + pmppriv->tx.stop = 1; + mp_init_xmit_attrib(&pmppriv->tx, padapter); + + switch (padapter->registrypriv.rf_config) { + case RF_1T1R: + pmppriv->antenna_tx = ANTENNA_A; + pmppriv->antenna_rx = ANTENNA_A; + break; + case RF_1T2R: + default: + pmppriv->antenna_tx = ANTENNA_A; + pmppriv->antenna_rx = ANTENNA_AB; + break; + case RF_2T2R: + case RF_2T2R_GREEN: + pmppriv->antenna_tx = ANTENNA_AB; + pmppriv->antenna_rx = ANTENNA_AB; + break; + case RF_2T4R: + pmppriv->antenna_tx = ANTENNA_AB; + pmppriv->antenna_rx = ANTENNA_ABCD; + break; + } + + return _SUCCESS; +} + +void free_mp_priv(struct mp_priv *pmp_priv) +{ + if (pmp_priv->pallocated_mp_xmitframe_buf) { + rtw_mfree(pmp_priv->pallocated_mp_xmitframe_buf, 0); + pmp_priv->pallocated_mp_xmitframe_buf = NULL; + } + pmp_priv->pmp_xmtframe_buf = NULL; +} + +#ifdef CONFIG_RTL8192C +#define PHY_IQCalibrate(a,b) rtl8192c_PHY_IQCalibrate(a,b) +#define PHY_LCCalibrate(a) rtl8192c_PHY_LCCalibrate(a) +#define dm_CheckTXPowerTracking(a) rtl8192c_dm_CheckTXPowerTracking(a) +#define PHY_SetRFPathSwitch(a,b) rtl8192c_PHY_SetRFPathSwitch(a,b) +#endif + +#ifdef CONFIG_RTL8192D +#define PHY_IQCalibrate(a) rtl8192d_PHY_IQCalibrate(a) +#define PHY_LCCalibrate(a) rtl8192d_PHY_LCCalibrate(a) +#define dm_CheckTXPowerTracking(a) rtl8192d_dm_CheckTXPowerTracking(a) +#define PHY_SetRFPathSwitch(a,b) rtl8192d_PHY_SetRFPathSwitch(a,b) +#endif + +s32 +MPT_InitializeAdapter( + IN PADAPTER pAdapter, + IN u8 Channel + ) +{ + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(pAdapter); + s32 rtStatus = _SUCCESS; + PMPT_CONTEXT pMptCtx = &pAdapter->mppriv.MptCtx; + u32 ledsetting; + + //------------------------------------------------------------------------- + // HW Initialization for 8190 MPT. + //------------------------------------------------------------------------- + //------------------------------------------------------------------------- + // SW Initialization for 8190 MP. + //------------------------------------------------------------------------- + pMptCtx->bMptDrvUnload = _FALSE; + pMptCtx->bMassProdTest = _FALSE; + pMptCtx->bMptIndexEven = _TRUE; //default gain index is -6.0db + + /* Init mpt event. */ +#if 0 // for Windows + NdisInitializeEvent( &(pMptCtx->MptWorkItemEvent) ); + NdisAllocateSpinLock( &(pMptCtx->MptWorkItemSpinLock) ); + + PlatformInitializeWorkItem( + Adapter, + &(pMptCtx->MptWorkItem), + (RT_WORKITEM_CALL_BACK)MPT_WorkItemCallback, + (PVOID)Adapter, + "MptWorkItem"); +#endif + pMptCtx->bMptWorkItemInProgress = _FALSE; + pMptCtx->CurrMptAct = NULL; + //------------------------------------------------------------------------- + +#if 1 + // Don't accept any packets + rtw_write32(pAdapter, REG_RCR, 0); +#else + // Accept CRC error and destination address + pHalData->ReceiveConfig |= (RCR_ACRC32|RCR_AAP); + rtw_write32(pAdapter, REG_RCR, pHalData->ReceiveConfig); +#endif + +#if 0 + // If EEPROM or EFUSE is empty,we assign as RF 2T2R for MP. + if (pHalData->AutoloadFailFlag == TRUE) + { + pHalData->RF_Type = RF_2T2R; + } +#endif + ledsetting = rtw_read32(pAdapter, REG_LEDCFG0); + rtw_write32(pAdapter, REG_LEDCFG0, ledsetting & ~LED0DIS); + +#ifdef CONFIG_RTL8192C + PHY_IQCalibrate(pAdapter, _FALSE); + dm_CheckTXPowerTracking(pAdapter); //trigger thermal meter + PHY_LCCalibrate(pAdapter); +#endif + +#ifdef CONFIG_RTL8192D + PHY_IQCalibrate(pAdapter); + dm_CheckTXPowerTracking(pAdapter); //trigger thermal meter + PHY_LCCalibrate(pAdapter); +#endif + +#ifdef CONFIG_PCI_HCI + PHY_SetRFPathSwitch(pAdapter, 1/*pHalData->bDefaultAntenna*/); //Wifi default use Main +#else + +#ifdef CONFIG_RTL8192C +#if 1 + if (pHalData->BoardType == BOARD_MINICARD) + PHY_SetRFPathSwitch(pAdapter, 1/*pHalData->bDefaultAntenna*/); //default use Main +#else + if(pAdapter->HalFunc.GetInterfaceSelectionHandler(pAdapter) == INTF_SEL2_MINICARD ) + PHY_SetRFPathSwitch(Adapter, pAdapter->MgntInfo.bDefaultAntenna); //default use Main +#endif + +#endif + +#endif + + pMptCtx->backup0xc50 = (u1Byte)PHY_QueryBBReg(pAdapter, rOFDM0_XAAGCCore1, bMaskByte0); + pMptCtx->backup0xc58 = (u1Byte)PHY_QueryBBReg(pAdapter, rOFDM0_XBAGCCore1, bMaskByte0); + pMptCtx->backup0xc30 = (u1Byte)PHY_QueryBBReg(pAdapter, rOFDM0_RxDetector1, bMaskByte0); + + return rtStatus; +} + +/*----------------------------------------------------------------------------- + * Function: MPT_DeInitAdapter() + * + * Overview: Extra DeInitialization for Mass Production Test. + * + * Input: PADAPTER pAdapter + * + * Output: NONE + * + * Return: NONE + * + * Revised History: + * When Who Remark + * 05/08/2007 MHC Create Version 0. + * 05/18/2007 MHC Add normal driver MPHalt code. + * + *---------------------------------------------------------------------------*/ +VOID +MPT_DeInitAdapter( + IN PADAPTER pAdapter + ) +{ + PMPT_CONTEXT pMptCtx = &pAdapter->mppriv.MptCtx; + + pMptCtx->bMptDrvUnload = _TRUE; +#if 0 // for Windows + PlatformFreeWorkItem( &(pMptCtx->MptWorkItem) ); + + while(pMptCtx->bMptWorkItemInProgress) + { + if(NdisWaitEvent(&(pMptCtx->MptWorkItemEvent), 50)) + { + break; + } + } + NdisFreeSpinLock( &(pMptCtx->MptWorkItemSpinLock) ); +#endif +} + +static u8 mpt_ProStartTest(PADAPTER padapter) +{ + PMPT_CONTEXT pMptCtx = &padapter->mppriv.MptCtx; + + pMptCtx->bMassProdTest = _TRUE; + pMptCtx->bStartContTx = _FALSE; + pMptCtx->bCckContTx = _FALSE; + pMptCtx->bOfdmContTx = _FALSE; + pMptCtx->bSingleCarrier = _FALSE; + pMptCtx->bCarrierSuppression = _FALSE; + pMptCtx->bSingleTone = _FALSE; + + return _SUCCESS; +} + +/* + * General use + */ +s32 SetPowerTracking(PADAPTER padapter, u8 enable) +{ + + Hal_SetPowerTracking( padapter, enable ); + return 0; +} + +void GetPowerTracking(PADAPTER padapter, u8 *enable) +{ + Hal_GetPowerTracking( padapter, enable ); +} + +static void disable_dm(PADAPTER padapter) +{ +#ifndef CONFIG_RTL8723A + u8 v8; +#endif + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(padapter); + struct dm_priv *pdmpriv = &pHalData->dmpriv; + + + //3 1. disable firmware dynamic mechanism + // disable Power Training, Rate Adaptive +#ifdef CONFIG_RTL8723A + SetBcnCtrlReg(padapter, 0, EN_BCN_FUNCTION); +#else + v8 = rtw_read8(padapter, REG_BCN_CTRL); + v8 &= ~EN_BCN_FUNCTION; + rtw_write8(padapter, REG_BCN_CTRL, v8); +#endif + + //3 2. disable driver dynamic mechanism + // disable Dynamic Initial Gain + // disable High Power + // disable Power Tracking + Switch_DM_Func(padapter, DYNAMIC_FUNC_DISABLE, _FALSE); + + // enable APK, LCK and IQK but disable power tracking + pdmpriv->TxPowerTrackControl = _FALSE; + Switch_DM_Func(padapter, DYNAMIC_FUNC_SS, _TRUE); +} + +//This function initializes the DUT to the MP test mode +s32 mp_start_test(PADAPTER padapter) +{ + WLAN_BSSID_EX bssid; + struct sta_info *psta; + u32 length; + u8 val8; + + _irqL irqL; + s32 res = _SUCCESS; + + struct mp_priv *pmppriv = &padapter->mppriv; + struct mlme_priv *pmlmepriv = &padapter->mlmepriv; + struct wlan_network *tgt_network = &pmlmepriv->cur_network; + + + //3 disable dynamic mechanism + disable_dm(padapter); + + //3 0. update mp_priv +#if defined (CONFIG_RTL8192C) || defined (CONFIG_RTL8192D) + if (padapter->registrypriv.rf_config == RF_819X_MAX_TYPE) { +// HAL_DATA_TYPE *phal = GET_HAL_DATA(padapter); +// switch (phal->rf_type) { + switch (GET_RF_TYPE(padapter)) { + case RF_1T1R: + pmppriv->antenna_tx = ANTENNA_A; + pmppriv->antenna_rx = ANTENNA_A; + break; + case RF_1T2R: + default: + pmppriv->antenna_tx = ANTENNA_A; + pmppriv->antenna_rx = ANTENNA_AB; + break; + case RF_2T2R: + case RF_2T2R_GREEN: + pmppriv->antenna_tx = ANTENNA_AB; + pmppriv->antenna_rx = ANTENNA_AB; + break; + case RF_2T4R: + pmppriv->antenna_tx = ANTENNA_AB; + pmppriv->antenna_rx = ANTENNA_ABCD; + break; + } + } +#endif + mpt_ProStartTest(padapter); + + //3 1. initialize a new WLAN_BSSID_EX +// _rtw_memset(&bssid, 0, sizeof(WLAN_BSSID_EX)); + _rtw_memcpy(bssid.MacAddress, pmppriv->network_macaddr, ETH_ALEN); + bssid.Ssid.SsidLength = strlen("mp_pseudo_adhoc"); + _rtw_memcpy(bssid.Ssid.Ssid, (u8*)"mp_pseudo_adhoc", bssid.Ssid.SsidLength); + bssid.InfrastructureMode = Ndis802_11IBSS; + bssid.NetworkTypeInUse = Ndis802_11DS; + bssid.IELength = 0; + + length = get_WLAN_BSSID_EX_sz(&bssid); + if (length % 4) + bssid.Length = ((length >> 2) + 1) << 2; //round up to multiple of 4 bytes. + else + bssid.Length = length; + + _enter_critical_bh(&pmlmepriv->lock, &irqL); + + if (check_fwstate(pmlmepriv, WIFI_MP_STATE) == _TRUE) + goto end_of_mp_start_test; + + //init mp_start_test status + if (check_fwstate(pmlmepriv, _FW_LINKED) == _TRUE) { + rtw_disassoc_cmd(padapter, 500, _TRUE); + rtw_indicate_disconnect(padapter); + rtw_free_assoc_resources(padapter, 1); + } + pmppriv->prev_fw_state = get_fwstate(pmlmepriv); + pmlmepriv->fw_state = WIFI_MP_STATE; +#if 0 + if (pmppriv->mode == _LOOPBOOK_MODE_) { + set_fwstate(pmlmepriv, WIFI_MP_LPBK_STATE); //append txdesc + RT_TRACE(_module_mp_, _drv_notice_, ("+start mp in Lookback mode\n")); + } else { + RT_TRACE(_module_mp_, _drv_notice_, ("+start mp in normal mode\n")); + } +#endif + set_fwstate(pmlmepriv, _FW_UNDER_LINKING); + + //3 2. create a new psta for mp driver + //clear psta in the cur_network, if any + psta = rtw_get_stainfo(&padapter->stapriv, tgt_network->network.MacAddress); + if (psta) rtw_free_stainfo(padapter, psta); + + psta = rtw_alloc_stainfo(&padapter->stapriv, bssid.MacAddress); + if (psta == NULL) { + RT_TRACE(_module_mp_, _drv_err_, ("mp_start_test: Can't alloc sta_info!\n")); + pmlmepriv->fw_state = pmppriv->prev_fw_state; + res = _FAIL; + goto end_of_mp_start_test; + } + + //3 3. join psudo AdHoc + tgt_network->join_res = 1; + tgt_network->aid = psta->aid = 1; + _rtw_memcpy(&tgt_network->network, &bssid, length); + + rtw_indicate_connect(padapter); + _clr_fwstate_(pmlmepriv, _FW_UNDER_LINKING); + +end_of_mp_start_test: + + _exit_critical_bh(&pmlmepriv->lock, &irqL); + + if (res == _SUCCESS) + { + // set MSR to WIFI_FW_ADHOC_STATE +#if defined (CONFIG_RTL8192C) || defined (CONFIG_RTL8192D) + val8 = rtw_read8(padapter, MSR) & 0xFC; // 0x0102 + val8 |= WIFI_FW_ADHOC_STATE; + rtw_write8(padapter, MSR, val8); // Link in ad hoc network +#endif + +#if !defined (CONFIG_RTL8192C) && !defined (CONFIG_RTL8192D) + rtw_write8(padapter, MSR, 1); // Link in ad hoc network + rtw_write8(padapter, RCR, 0); // RCR : disable all pkt, 0x10250048 + rtw_write8(padapter, RCR+2, 0x57); // RCR disable Check BSSID, 0x1025004a + + // disable RX filter map , mgt frames will put in RX FIFO 0 + rtw_write16(padapter, RXFLTMAP0, 0x0); // 0x10250116 + + val8 = rtw_read8(padapter, EE_9346CR); // 0x1025000A + if (!(val8 & _9356SEL))//boot from EFUSE + efuse_change_max_size(padapter); +#endif + } + + return res; +} +//------------------------------------------------------------------------------ +//This function change the DUT from the MP test mode into normal mode +void mp_stop_test(PADAPTER padapter) +{ + struct mp_priv *pmppriv = &padapter->mppriv; + struct mlme_priv *pmlmepriv = &padapter->mlmepriv; + struct wlan_network *tgt_network = &pmlmepriv->cur_network; + struct sta_info *psta; + + _irqL irqL; + + + _enter_critical_bh(&pmlmepriv->lock, &irqL); + + if (check_fwstate(pmlmepriv, WIFI_MP_STATE) == _FALSE) + goto end_of_mp_stop_test; + + //3 1. disconnect psudo AdHoc + rtw_indicate_disconnect(padapter); + + //3 2. clear psta used in mp test mode. +// rtw_free_assoc_resources(padapter, 1); + psta = rtw_get_stainfo(&padapter->stapriv, tgt_network->network.MacAddress); + if (psta) rtw_free_stainfo(padapter, psta); + + //3 3. return to normal state (default:station mode) + pmlmepriv->fw_state = pmppriv->prev_fw_state; // WIFI_STATION_STATE; + + //flush the cur_network + _rtw_memset(tgt_network, 0, sizeof(struct wlan_network)); + + _clr_fwstate_(pmlmepriv, WIFI_MP_STATE); + +end_of_mp_stop_test: + + _exit_critical_bh(&pmlmepriv->lock, &irqL); +} +/*---------------------------hal\rtl8192c\MPT_Phy.c---------------------------*/ +#if 0 +//#ifdef CONFIG_USB_HCI +static VOID mpt_AdjustRFRegByRateByChan92CU(PADAPTER pAdapter, u8 RateIdx, u8 Channel, u8 BandWidthID) +{ + u8 eRFPath; + u32 rfReg0x26; + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(pAdapter); + + + if (RateIdx < MPT_RATE_6M) { // CCK rate,for 88cu + rfReg0x26 = 0xf400; + } + else if ((RateIdx >= MPT_RATE_6M) && (RateIdx <= MPT_RATE_54M)) {// OFDM rate,for 88cu + if ((4 == Channel) || (8 == Channel) || (12 == Channel)) + rfReg0x26 = 0xf000; + else if ((5 == Channel) || (7 == Channel) || (13 == Channel) || (14 == Channel)) + rfReg0x26 = 0xf400; + else + rfReg0x26 = 0x4f200; + } + else if ((RateIdx >= MPT_RATE_MCS0) && (RateIdx <= MPT_RATE_MCS15)) {// MCS 20M ,for 88cu // MCS40M rate,for 88cu + + if (HT_CHANNEL_WIDTH_20 == BandWidthID) { + if ((4 == Channel) || (8 == Channel)) + rfReg0x26 = 0xf000; + else if ((5 == Channel) || (7 == Channel) || (13 == Channel) || (14 == Channel)) + rfReg0x26 = 0xf400; + else + rfReg0x26 = 0x4f200; + } + else{ + if ((4 == Channel) || (8 == Channel)) + rfReg0x26 = 0xf000; + else if ((5 == Channel) || (7 == Channel)) + rfReg0x26 = 0xf400; + else + rfReg0x26 = 0x4f200; + } + } + +// RT_TRACE(COMP_CMD, DBG_LOUD, ("\n mpt_AdjustRFRegByRateByChan92CU():Chan:%d Rate=%d rfReg0x26:0x%08x\n",Channel, RateIdx,rfReg0x26)); + for (eRFPath = 0; eRFPath < pHalData->NumTotalRFPath; eRFPath++) { + write_rfreg(pAdapter, eRFPath, RF_SYN_G2, rfReg0x26); + } +} +#endif +/*----------------------------------------------------------------------------- + * Function: mpt_SwitchRfSetting + * + * Overview: Change RF Setting when we siwthc channel/rate/BW for MP. + * + * Input: IN PADAPTER pAdapter + * + * Output: NONE + * + * Return: NONE + * + * Revised History: + * When Who Remark + * 01/08/2009 MHC Suggestion from SD3 Willis for 92S series. + * 01/09/2009 MHC Add CCK modification for 40MHZ. Suggestion from SD3. + * + *---------------------------------------------------------------------------*/ +static void mpt_SwitchRfSetting(PADAPTER pAdapter) +{ + Hal_mpt_SwitchRfSetting(pAdapter); + } + +/*---------------------------hal\rtl8192c\MPT_Phy.c---------------------------*/ +/*---------------------------hal\rtl8192c\MPT_HelperFunc.c---------------------------*/ +static void MPT_CCKTxPowerAdjust(PADAPTER Adapter, BOOLEAN bInCH14) +{ + Hal_MPT_CCKTxPowerAdjust(Adapter,bInCH14); +} + +static void MPT_CCKTxPowerAdjustbyIndex(PADAPTER pAdapter, BOOLEAN beven) +{ + Hal_MPT_CCKTxPowerAdjustbyIndex(pAdapter,beven); + } + +/*---------------------------hal\rtl8192c\MPT_HelperFunc.c---------------------------*/ + +/* + * SetChannel + * Description + * Use H2C command to change channel, + * not only modify rf register, but also other setting need to be done. + */ +void SetChannel(PADAPTER pAdapter) +{ + Hal_SetChannel(pAdapter); + +} + +/* + * Notice + * Switch bandwitdth may change center frequency(channel) + */ +void SetBandwidth(PADAPTER pAdapter) +{ + Hal_SetBandwidth(pAdapter); + +} + +static void SetCCKTxPower(PADAPTER pAdapter, u8 *TxPower) +{ + Hal_SetCCKTxPower(pAdapter,TxPower); +} + +static void SetOFDMTxPower(PADAPTER pAdapter, u8 *TxPower) +{ + Hal_SetOFDMTxPower(pAdapter,TxPower); + } + + +void SetAntenna(PADAPTER pAdapter) + { + Hal_SetAntenna(pAdapter); +} + +void SetAntennaPathPower(PADAPTER pAdapter) +{ + Hal_SetAntennaPathPower(pAdapter); +} + +void SetTxPower(PADAPTER pAdapter) +{ + Hal_SetTxPower(pAdapter); + } + +void SetTxAGCOffset(PADAPTER pAdapter, u32 ulTxAGCOffset) +{ + u32 TxAGCOffset_B, TxAGCOffset_C, TxAGCOffset_D,tmpAGC; + + TxAGCOffset_B = (ulTxAGCOffset&0x000000ff); + TxAGCOffset_C = ((ulTxAGCOffset&0x0000ff00)>>8); + TxAGCOffset_D = ((ulTxAGCOffset&0x00ff0000)>>16); + + tmpAGC = (TxAGCOffset_D<<8 | TxAGCOffset_C<<4 | TxAGCOffset_B); + write_bbreg(pAdapter, rFPGA0_TxGainStage, + (bXBTxAGC|bXCTxAGC|bXDTxAGC), tmpAGC); +} + +void SetDataRate(PADAPTER pAdapter) +{ + Hal_SetDataRate(pAdapter); +} + +#if !defined (CONFIG_RTL8192C) && !defined (CONFIG_RTL8192D) +/*------------------------------Define structure----------------------------*/ +typedef struct _R_ANTENNA_SELECT_OFDM { + u32 r_tx_antenna:4; + u32 r_ant_l:4; + u32 r_ant_non_ht:4; + u32 r_ant_ht1:4; + u32 r_ant_ht2:4; + u32 r_ant_ht_s1:4; + u32 r_ant_non_ht_s1:4; + u32 OFDM_TXSC:2; + u32 Reserved:2; +}R_ANTENNA_SELECT_OFDM; + +typedef struct _R_ANTENNA_SELECT_CCK { + u8 r_cckrx_enable_2:2; + u8 r_cckrx_enable:2; + u8 r_ccktx_enable:4; +}R_ANTENNA_SELECT_CCK; +#endif + +s32 SetThermalMeter(PADAPTER pAdapter, u8 target_ther) +{ + return Hal_SetThermalMeter( pAdapter, target_ther); +} + +static void TriggerRFThermalMeter(PADAPTER pAdapter) +{ + Hal_TriggerRFThermalMeter(pAdapter); +} + +static u8 ReadRFThermalMeter(PADAPTER pAdapter) +{ + return Hal_ReadRFThermalMeter(pAdapter); +} + +void GetThermalMeter(PADAPTER pAdapter, u8 *value) +{ + Hal_GetThermalMeter(pAdapter,value); +} + +void SetSingleCarrierTx(PADAPTER pAdapter, u8 bStart) +{ + Hal_SetSingleCarrierTx(pAdapter,bStart); +} + +void SetSingleToneTx(PADAPTER pAdapter, u8 bStart) +{ + Hal_SetSingleToneTx(pAdapter,bStart); +} + +void SetCarrierSuppressionTx(PADAPTER pAdapter, u8 bStart) +{ + Hal_SetCarrierSuppressionTx(pAdapter, bStart); +} + +void SetCCKContinuousTx(PADAPTER pAdapter, u8 bStart) + { + Hal_SetCCKContinuousTx(pAdapter,bStart); + } + +void SetOFDMContinuousTx(PADAPTER pAdapter, u8 bStart) + { + Hal_SetOFDMContinuousTx( pAdapter, bStart); +}/* mpt_StartOfdmContTx */ + +void SetContinuousTx(PADAPTER pAdapter, u8 bStart) +{ + Hal_SetContinuousTx(pAdapter,bStart); +} + +//------------------------------------------------------------------------------ +static void dump_mpframe(PADAPTER padapter, struct xmit_frame *pmpframe) +{ + rtw_hal_mgnt_xmit(padapter, pmpframe); +} + +static struct xmit_frame *alloc_mp_xmitframe(struct xmit_priv *pxmitpriv) +{ + struct xmit_frame *pmpframe; + struct xmit_buf *pxmitbuf; + + if ((pmpframe = rtw_alloc_xmitframe(pxmitpriv)) == NULL) + { + return NULL; + } + + if ((pxmitbuf = rtw_alloc_xmitbuf(pxmitpriv)) == NULL) + { + rtw_free_xmitframe(pxmitpriv, pmpframe); + return NULL; + } + + pmpframe->frame_tag = MP_FRAMETAG; + + pmpframe->pxmitbuf = pxmitbuf; + + pmpframe->buf_addr = pxmitbuf->pbuf; + + pxmitbuf->priv_data = pmpframe; + + return pmpframe; + +} + +static thread_return mp_xmit_packet_thread(thread_context context) +{ + struct xmit_frame *pxmitframe; + struct mp_tx *pmptx; + struct mp_priv *pmp_priv; + struct xmit_priv *pxmitpriv; + PADAPTER padapter; + + pmp_priv = (struct mp_priv *)context; + pmptx = &pmp_priv->tx; + padapter = pmp_priv->papdater; + pxmitpriv = &(padapter->xmitpriv); + + thread_enter("RTW_MP_THREAD"); + + DBG_871X("%s:pkTx Start\n", __func__); + while (1) { + pxmitframe = alloc_mp_xmitframe(pxmitpriv); + if (pxmitframe == NULL) { + if (pmptx->stop || + padapter->bSurpriseRemoved || + padapter->bDriverStopped) { + goto exit; + } + else { + rtw_msleep_os(1); + continue; + } + } + + _rtw_memcpy((u8 *)(pxmitframe->buf_addr+TXDESC_OFFSET), pmptx->buf, pmptx->write_size); + _rtw_memcpy(&(pxmitframe->attrib), &(pmptx->attrib), sizeof(struct pkt_attrib)); + + dump_mpframe(padapter, pxmitframe); + + pmptx->sended++; + pmp_priv->tx_pktcount++; + + if (pmptx->stop || + padapter->bSurpriseRemoved || + padapter->bDriverStopped) + goto exit; + if ((pmptx->count != 0) && + (pmptx->count == pmptx->sended)) + goto exit; + + flush_signals_thread(); + } + +exit: + //DBG_871X("%s:pkTx Exit\n", __func__); + rtw_mfree(pmptx->pallocated_buf, pmptx->buf_size); + pmptx->pallocated_buf = NULL; + pmptx->stop = 1; + + thread_exit(); +} + +void fill_txdesc_for_mp(PADAPTER padapter, struct tx_desc *ptxdesc) +{ + struct mp_priv *pmp_priv = &padapter->mppriv; + _rtw_memcpy(ptxdesc, &(pmp_priv->tx.desc), TXDESC_SIZE); +} + +void SetPacketTx(PADAPTER padapter) +{ + u8 *ptr, *pkt_start, *pkt_end; + u32 pkt_size; + struct tx_desc *desc; + struct rtw_ieee80211_hdr *hdr; + u8 payload; + s32 bmcast; + struct pkt_attrib *pattrib; + struct mp_priv *pmp_priv; + + + pmp_priv = &padapter->mppriv; + if (pmp_priv->tx.stop) return; + pmp_priv->tx.sended = 0; + pmp_priv->tx.stop = 0; + pmp_priv->tx_pktcount = 0; + + //3 1. update_attrib() + pattrib = &pmp_priv->tx.attrib; + _rtw_memcpy(pattrib->src, padapter->eeprompriv.mac_addr, ETH_ALEN); + _rtw_memcpy(pattrib->ta, pattrib->src, ETH_ALEN); + _rtw_memcpy(pattrib->ra, pattrib->dst, ETH_ALEN); + bmcast = IS_MCAST(pattrib->ra); + if (bmcast) { + pattrib->mac_id = 1; + pattrib->psta = rtw_get_bcmc_stainfo(padapter); + } else { + pattrib->mac_id = 0; + pattrib->psta = rtw_get_stainfo(&padapter->stapriv, get_bssid(&padapter->mlmepriv)); + } + + pattrib->last_txcmdsz = pattrib->hdrlen + pattrib->pktlen; + + //3 2. allocate xmit buffer + pkt_size = pattrib->last_txcmdsz; + + if (pmp_priv->tx.pallocated_buf) + rtw_mfree(pmp_priv->tx.pallocated_buf, pmp_priv->tx.buf_size); + pmp_priv->tx.write_size = pkt_size; + pmp_priv->tx.buf_size = pkt_size + XMITBUF_ALIGN_SZ; + pmp_priv->tx.pallocated_buf = rtw_zmalloc(pmp_priv->tx.buf_size); + if (pmp_priv->tx.pallocated_buf == NULL) { + DBG_871X("%s: malloc(%d) fail!!\n", __func__, pmp_priv->tx.buf_size); + return; + } + pmp_priv->tx.buf = (u8 *)N_BYTE_ALIGMENT((SIZE_PTR)(pmp_priv->tx.pallocated_buf), XMITBUF_ALIGN_SZ); + ptr = pmp_priv->tx.buf; + + desc = &(pmp_priv->tx.desc); + _rtw_memset(desc, 0, TXDESC_SIZE); + pkt_start = ptr; + pkt_end = pkt_start + pkt_size; + + //3 3. init TX descriptor + // offset 0 + //desc->txdw0 |= cpu_to_le32(pkt_size & 0x0000FFFF); // packet size + //desc->txdw0 |= cpu_to_le32(OWN | FSG | LSG); + //desc->txdw0 |= cpu_to_le32(((TXDESC_SIZE + OFFSET_SZ) << OFFSET_SHT) & 0x00FF0000); //32 bytes for TX Desc + //if (bmcast) desc->txdw0 |= cpu_to_le32(BMC); // broadcast packet + + // offset 4 + desc->txdw1 |= cpu_to_le32(BK); // don't aggregate(AMPDU) + desc->txdw1 |= cpu_to_le32((pattrib->mac_id) & 0x1F); //CAM_ID(MAC_ID) + desc->txdw1 |= cpu_to_le32((pattrib->qsel << QSEL_SHT) & 0x00001F00); // Queue Select, TID + desc->txdw1 |= cpu_to_le32((pattrib->raid << Rate_ID_SHT) & 0x000F0000); // Rate Adaptive ID + + // offset 8 + // offset 12 + //desc->txdw3 |= cpu_to_le32((pattrib->seqnum << SEQ_SHT) & 0xffff0000); + + // offset 16 + //desc->txdw4 |= cpu_to_le32(QoS); + desc->txdw4 |= cpu_to_le32(HW_SEQ_EN); + desc->txdw4 |= cpu_to_le32(USERATE); + desc->txdw4 |= cpu_to_le32(DISDATAFB); + + if( pmp_priv->preamble ){ + if (pmp_priv->rateidx <= MPT_RATE_54M) + desc->txdw4 |= cpu_to_le32(DATA_SHORT); // CCK Short Preamble + } + if (pmp_priv->bandwidth == HT_CHANNEL_WIDTH_40) + desc->txdw4 |= cpu_to_le32(DATA_BW); + + // offset 20 + desc->txdw5 |= cpu_to_le32(pmp_priv->rateidx & 0x0000001F); + + if( pmp_priv->preamble ){ + if (pmp_priv->rateidx > MPT_RATE_54M) + desc->txdw5 |= cpu_to_le32(SGI); // MCS Short Guard Interval + } + desc->txdw5 |= cpu_to_le32(0x0001FF00); // DATA/RTS Rate Fallback Limit + + //3 4. make wlan header, make_wlanhdr() + hdr = (struct rtw_ieee80211_hdr *)pkt_start; + SetFrameSubType(&hdr->frame_ctl, pattrib->subtype); + _rtw_memcpy(hdr->addr1, pattrib->dst, ETH_ALEN); // DA + _rtw_memcpy(hdr->addr2, pattrib->src, ETH_ALEN); // SA + _rtw_memcpy(hdr->addr3, get_bssid(&padapter->mlmepriv), ETH_ALEN); // RA, BSSID + + //3 5. make payload + ptr = pkt_start + pattrib->hdrlen; + + switch (pmp_priv->tx.payload) { + case 0: + payload = 0x00; + break; + case 1: + payload = 0x5a; + break; + case 2: + payload = 0xa5; + break; + case 3: + payload = 0xff; + break; + default: + payload = 0x00; + break; + } + + _rtw_memset(ptr, payload, pkt_end - ptr); + + //3 6. start thread +#ifdef PLATFORM_LINUX + pmp_priv->tx.PktTxThread = kthread_run(mp_xmit_packet_thread, pmp_priv, "RTW_MP_THREAD"); + if (IS_ERR(pmp_priv->tx.PktTxThread)) + DBG_871X("Create PktTx Thread Fail !!!!!\n"); +#endif +#ifdef PLATFORM_FREEBSD +{ + struct proc *p; + struct thread *td; + pmp_priv->tx.PktTxThread = kproc_kthread_add(mp_xmit_packet_thread, pmp_priv, + &p, &td, RFHIGHPID, 0, "MPXmitThread", "MPXmitThread"); + + if (pmp_priv->tx.PktTxThread < 0) + DBG_871X("Create PktTx Thread Fail !!!!!\n"); +} +#endif +} + +void SetPacketRx(PADAPTER pAdapter, u8 bStartRx) +{ + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(pAdapter); + + if(bStartRx) + { + pHalData->ReceiveConfig = AAP | APM | AM | AB | APP_ICV | ADF | AMF | HTC_LOC_CTRL | APP_MIC | APP_PHYSTS; + + pHalData->ReceiveConfig |= ACRC32; + + rtw_write32(pAdapter, REG_RCR, pHalData->ReceiveConfig); + + // Accept all data frames + rtw_write16(pAdapter, REG_RXFLTMAP2, 0xFFFF); + } + else + { + rtw_write32(pAdapter, REG_RCR, 0); + } +} + +void ResetPhyRxPktCount(PADAPTER pAdapter) +{ + u32 i, phyrx_set = 0; + + for (i = 0; i <= 0xF; i++) { + phyrx_set = 0; + phyrx_set |= _RXERR_RPT_SEL(i); //select + phyrx_set |= RXERR_RPT_RST; // set counter to zero + rtw_write32(pAdapter, REG_RXERR_RPT, phyrx_set); + } +} + +static u32 GetPhyRxPktCounts(PADAPTER pAdapter, u32 selbit) +{ + //selection + u32 phyrx_set = 0, count = 0; + + phyrx_set = _RXERR_RPT_SEL(selbit & 0xF); + rtw_write32(pAdapter, REG_RXERR_RPT, phyrx_set); + + //Read packet count + count = rtw_read32(pAdapter, REG_RXERR_RPT) & RXERR_COUNTER_MASK; + + return count; +} + +u32 GetPhyRxPktReceived(PADAPTER pAdapter) +{ + u32 OFDM_cnt = 0, CCK_cnt = 0, HT_cnt = 0; + + OFDM_cnt = GetPhyRxPktCounts(pAdapter, RXERR_TYPE_OFDM_MPDU_OK); + CCK_cnt = GetPhyRxPktCounts(pAdapter, RXERR_TYPE_CCK_MPDU_OK); + HT_cnt = GetPhyRxPktCounts(pAdapter, RXERR_TYPE_HT_MPDU_OK); + + return OFDM_cnt + CCK_cnt + HT_cnt; +} + +u32 GetPhyRxPktCRC32Error(PADAPTER pAdapter) +{ + u32 OFDM_cnt = 0, CCK_cnt = 0, HT_cnt = 0; + + OFDM_cnt = GetPhyRxPktCounts(pAdapter, RXERR_TYPE_OFDM_MPDU_FAIL); + CCK_cnt = GetPhyRxPktCounts(pAdapter, RXERR_TYPE_CCK_MPDU_FAIL); + HT_cnt = GetPhyRxPktCounts(pAdapter, RXERR_TYPE_HT_MPDU_FAIL); + + return OFDM_cnt + CCK_cnt + HT_cnt; +} + +//reg 0x808[9:0]: FFT data x +//reg 0x808[22]: 0 --> 1 to get 1 FFT data y +//reg 0x8B4[15:0]: FFT data y report +static u32 GetPSDData(PADAPTER pAdapter, u32 point) +{ + int psd_val; + + + psd_val = rtw_read32(pAdapter, 0x808); + psd_val &= 0xFFBFFC00; + psd_val |= point; + + rtw_write32(pAdapter, 0x808, psd_val); + rtw_mdelay_os(1); + psd_val |= 0x00400000; + + rtw_write32(pAdapter, 0x808, psd_val); + rtw_mdelay_os(1); + psd_val = rtw_read32(pAdapter, 0x8B4); + + psd_val &= 0x0000FFFF; + + return psd_val; +} + +/* + * pts start_point_min stop_point_max + * 128 64 64 + 128 = 192 + * 256 128 128 + 256 = 384 + * 512 256 256 + 512 = 768 + * 1024 512 512 + 1024 = 1536 + * + */ +u32 mp_query_psd(PADAPTER pAdapter, u8 *data) +{ + u32 i, psd_pts=0, psd_start=0, psd_stop=0; + u32 psd_data=0; + +#ifdef PLATFORM_LINUX + if (!netif_running(pAdapter->pnetdev)) { + RT_TRACE(_module_mp_, _drv_warning_, ("mp_query_psd: Fail! interface not opened!\n")); + return 0; + } +#endif + + if (check_fwstate(&pAdapter->mlmepriv, WIFI_MP_STATE) == _FALSE) { + RT_TRACE(_module_mp_, _drv_warning_, ("mp_query_psd: Fail! not in MP mode!\n")); + return 0; + } + + if (strlen(data) == 0) { //default value + psd_pts = 128; + psd_start = 64; + psd_stop = 128; + } else { + sscanf(data, "pts=%d,start=%d,stop=%d", &psd_pts, &psd_start, &psd_stop); + } + + _rtw_memset(data, '\0', sizeof(data)); + + i = psd_start; + while (i < psd_stop) + { + if (i >= psd_pts) { + psd_data = GetPSDData(pAdapter, i-psd_pts); + } else { + psd_data = GetPSDData(pAdapter, i); + } + sprintf(data, "%s%x ", data, psd_data); + i++; + } + + #ifdef CONFIG_LONG_DELAY_ISSUE + rtw_msleep_os(100); + #else + rtw_mdelay_os(100); + #endif + + return strlen(data)+1; +} + +#endif --- linux-raspi2-4.2.0.orig/drivers/net/wireless/rtl8192cu/core/rtw_mp_ioctl.c +++ linux-raspi2-4.2.0/drivers/net/wireless/rtl8192cu/core/rtw_mp_ioctl.c @@ -0,0 +1,2953 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved. + * + * 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 + * published by the Free Software Foundation. + * + * 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 Street, Fifth Floor, Boston, MA 02110, USA + * + * + ******************************************************************************/ +#define _RTW_MP_IOCTL_C_ + +#include +#include +#include +#include + +//#include +#include + + +//**************** oid_rtl_seg_81_85 section start **************** +NDIS_STATUS oid_rt_wireless_mode_hdl(struct oid_par_priv *poid_par_priv) +{ + NDIS_STATUS status = NDIS_STATUS_SUCCESS; + PADAPTER Adapter = (PADAPTER)(poid_par_priv->adapter_context); + +_func_enter_; + + if (poid_par_priv->information_buf_len < sizeof(u8)) + return NDIS_STATUS_INVALID_LENGTH; + + if (poid_par_priv->type_of_oid == SET_OID) { + Adapter->registrypriv.wireless_mode = *(u8*)poid_par_priv->information_buf; + } else if (poid_par_priv->type_of_oid == QUERY_OID) { + *(u8*)poid_par_priv->information_buf = Adapter->registrypriv.wireless_mode; + *poid_par_priv->bytes_rw = poid_par_priv->information_buf_len; + RT_TRACE(_module_mp_, _drv_info_, ("-query Wireless Mode=%d\n", Adapter->registrypriv.wireless_mode)); + } else { + status = NDIS_STATUS_NOT_ACCEPTED; + } + +_func_exit_; + + return status; +} +//**************** oid_rtl_seg_81_87_80 section start **************** +NDIS_STATUS oid_rt_pro_write_bb_reg_hdl(struct oid_par_priv *poid_par_priv) +{ +#ifdef PLATFORM_OS_XP + _irqL oldirql; +#endif + struct bb_reg_param *pbbreg; + u16 offset; + u32 value; + NDIS_STATUS status = NDIS_STATUS_SUCCESS; + PADAPTER Adapter = (PADAPTER)(poid_par_priv->adapter_context); + +_func_enter_; + + RT_TRACE(_module_mp_, _drv_notice_, ("+oid_rt_pro_write_bb_reg_hdl\n")); + + if (poid_par_priv->type_of_oid != SET_OID) + return NDIS_STATUS_NOT_ACCEPTED; + + if (poid_par_priv->information_buf_len < sizeof(struct bb_reg_param)) + return NDIS_STATUS_INVALID_LENGTH; + + pbbreg = (struct bb_reg_param *)(poid_par_priv->information_buf); + + offset = (u16)(pbbreg->offset) & 0xFFF; //0ffset :0x800~0xfff + if (offset < BB_REG_BASE_ADDR) offset |= BB_REG_BASE_ADDR; + + value = pbbreg->value; + + RT_TRACE(_module_mp_, _drv_notice_, + ("oid_rt_pro_write_bb_reg_hdl: offset=0x%03X value=0x%08X\n", + offset, value)); + + _irqlevel_changed_(&oldirql, LOWER); + write_bbreg(Adapter, offset, 0xFFFFFFFF, value); + _irqlevel_changed_(&oldirql, RAISE); + +_func_exit_; + + return status; +} +//------------------------------------------------------------------------------ +NDIS_STATUS oid_rt_pro_read_bb_reg_hdl(struct oid_par_priv *poid_par_priv) +{ +#ifdef PLATFORM_OS_XP + _irqL oldirql; +#endif + struct bb_reg_param *pbbreg; + u16 offset; + u32 value; + NDIS_STATUS status = NDIS_STATUS_SUCCESS; + PADAPTER Adapter = (PADAPTER)(poid_par_priv->adapter_context); + +_func_enter_; + + RT_TRACE(_module_mp_, _drv_notice_, ("+oid_rt_pro_read_bb_reg_hdl\n")); + + if (poid_par_priv->type_of_oid != QUERY_OID) + return NDIS_STATUS_NOT_ACCEPTED; + + if (poid_par_priv->information_buf_len < sizeof(struct bb_reg_param)) + return NDIS_STATUS_INVALID_LENGTH; + + pbbreg = (struct bb_reg_param *)(poid_par_priv->information_buf); + + offset = (u16)(pbbreg->offset) & 0xFFF; //0ffset :0x800~0xfff + if (offset < BB_REG_BASE_ADDR) offset |= BB_REG_BASE_ADDR; + + _irqlevel_changed_(&oldirql, LOWER); + value = read_bbreg(Adapter, offset, 0xFFFFFFFF); + _irqlevel_changed_(&oldirql, RAISE); + + pbbreg->value = value; + *poid_par_priv->bytes_rw = poid_par_priv->information_buf_len; + + RT_TRACE(_module_mp_, _drv_notice_, + ("-oid_rt_pro_read_bb_reg_hdl: offset=0x%03X value:0x%08X\n", + offset, value)); +_func_exit_; + + return status; +} +//------------------------------------------------------------------------------ +NDIS_STATUS oid_rt_pro_write_rf_reg_hdl(struct oid_par_priv *poid_par_priv) +{ +#ifdef PLATFORM_OS_XP + _irqL oldirql; +#endif + struct rf_reg_param *pbbreg; + u8 path; + u8 offset; + u32 value; + NDIS_STATUS status = NDIS_STATUS_SUCCESS; + PADAPTER Adapter = (PADAPTER)(poid_par_priv->adapter_context); + +_func_enter_; + + RT_TRACE(_module_mp_, _drv_notice_, ("+oid_rt_pro_write_rf_reg_hdl\n")); + + if (poid_par_priv->type_of_oid != SET_OID) + return NDIS_STATUS_NOT_ACCEPTED; + + if (poid_par_priv->information_buf_len < sizeof(struct rf_reg_param)) + return NDIS_STATUS_INVALID_LENGTH; + + pbbreg = (struct rf_reg_param *)(poid_par_priv->information_buf); + + if (pbbreg->path >= MAX_RF_PATH_NUMS) + return NDIS_STATUS_NOT_ACCEPTED; + if (pbbreg->offset > 0xFF) + return NDIS_STATUS_NOT_ACCEPTED; + if (pbbreg->value > 0xFFFFF) + return NDIS_STATUS_NOT_ACCEPTED; + + path = (u8)pbbreg->path; + offset = (u8)pbbreg->offset; + value = pbbreg->value; + + RT_TRACE(_module_mp_, _drv_notice_, + ("oid_rt_pro_write_rf_reg_hdl: path=%d offset=0x%02X value=0x%05X\n", + path, offset, value)); + + _irqlevel_changed_(&oldirql, LOWER); + write_rfreg(Adapter, path, offset, value); + _irqlevel_changed_(&oldirql, RAISE); + +_func_exit_; + + return status; +} +//------------------------------------------------------------------------------ +NDIS_STATUS oid_rt_pro_read_rf_reg_hdl(struct oid_par_priv *poid_par_priv) +{ +#ifdef PLATFORM_OS_XP + _irqL oldirql; +#endif + struct rf_reg_param *pbbreg; + u8 path; + u8 offset; + u32 value; + PADAPTER Adapter = (PADAPTER)(poid_par_priv->adapter_context); + NDIS_STATUS status = NDIS_STATUS_SUCCESS; + +_func_enter_; + + RT_TRACE(_module_mp_, _drv_notice_, ("+oid_rt_pro_read_rf_reg_hdl\n")); + + if (poid_par_priv->type_of_oid != QUERY_OID) + return NDIS_STATUS_NOT_ACCEPTED; + + if (poid_par_priv->information_buf_len < sizeof(struct rf_reg_param)) + return NDIS_STATUS_INVALID_LENGTH; + + pbbreg = (struct rf_reg_param *)(poid_par_priv->information_buf); + + if (pbbreg->path >= MAX_RF_PATH_NUMS) + return NDIS_STATUS_NOT_ACCEPTED; + if (pbbreg->offset > 0xFF) + return NDIS_STATUS_NOT_ACCEPTED; + + path = (u8)pbbreg->path; + offset = (u8)pbbreg->offset; + + _irqlevel_changed_(&oldirql, LOWER); + value = read_rfreg(Adapter, path, offset); + _irqlevel_changed_(&oldirql, RAISE); + + pbbreg->value = value; + + *poid_par_priv->bytes_rw = poid_par_priv->information_buf_len; + + RT_TRACE(_module_mp_, _drv_notice_, + ("-oid_rt_pro_read_rf_reg_hdl: path=%d offset=0x%02X value=0x%05X\n", + path, offset, value)); + +_func_exit_; + + return status; +} +//**************** oid_rtl_seg_81_87_00 section end**************** +//------------------------------------------------------------------------------ + +//**************** oid_rtl_seg_81_80_00 section start **************** +//------------------------------------------------------------------------------ +NDIS_STATUS oid_rt_pro_set_data_rate_hdl(struct oid_par_priv *poid_par_priv) +{ +#ifdef PLATFORM_OS_XP + _irqL oldirql; +#endif + u32 ratevalue;//4 + NDIS_STATUS status = NDIS_STATUS_SUCCESS; + PADAPTER Adapter = (PADAPTER)(poid_par_priv->adapter_context); + +_func_enter_; + + RT_TRACE(_module_mp_, _drv_notice_, + ("+oid_rt_pro_set_data_rate_hdl\n")); + + if (poid_par_priv->type_of_oid != SET_OID) + return NDIS_STATUS_NOT_ACCEPTED; + + if (poid_par_priv->information_buf_len != sizeof(u32)) + return NDIS_STATUS_INVALID_LENGTH; + + ratevalue = *((u32*)poid_par_priv->information_buf);//4 + RT_TRACE(_module_mp_, _drv_notice_, + ("oid_rt_pro_set_data_rate_hdl: data rate idx=%d\n", ratevalue)); + if (ratevalue >= MPT_RATE_LAST) + return NDIS_STATUS_INVALID_DATA; + + Adapter->mppriv.rateidx = ratevalue; + + _irqlevel_changed_(&oldirql, LOWER); + SetDataRate(Adapter); + _irqlevel_changed_(&oldirql, RAISE); + +_func_exit_; + + return status; +} +//------------------------------------------------------------------------------ +NDIS_STATUS oid_rt_pro_start_test_hdl(struct oid_par_priv *poid_par_priv) +{ +#ifdef PLATFORM_OS_XP + _irqL oldirql; +#endif + u32 mode; + NDIS_STATUS status = NDIS_STATUS_SUCCESS; + PADAPTER Adapter = (PADAPTER)(poid_par_priv->adapter_context); + +_func_enter_; + + RT_TRACE(_module_mp_, _drv_notice_, ("+oid_rt_pro_start_test_hdl\n")); + + if (Adapter->registrypriv.mp_mode == 0) + return NDIS_STATUS_NOT_ACCEPTED; + + if (poid_par_priv->type_of_oid != SET_OID) + return NDIS_STATUS_NOT_ACCEPTED; + + _irqlevel_changed_(&oldirql, LOWER); + + //IQCalibrateBcut(Adapter); + + mode = *((u32*)poid_par_priv->information_buf); + Adapter->mppriv.mode = mode;// 1 for loopback + + if (mp_start_test(Adapter) == _FAIL) { + status = NDIS_STATUS_NOT_ACCEPTED; + goto exit; + } + +exit: + _irqlevel_changed_(&oldirql, RAISE); + + RT_TRACE(_module_mp_, _drv_notice_, ("-oid_rt_pro_start_test_hdl: mp_mode=%d\n", Adapter->mppriv.mode)); + +_func_exit_; + + return status; +} +//------------------------------------------------------------------------------ +NDIS_STATUS oid_rt_pro_stop_test_hdl(struct oid_par_priv *poid_par_priv) +{ +#ifdef PLATFORM_OS_XP + _irqL oldirql; +#endif + NDIS_STATUS status = NDIS_STATUS_SUCCESS; + PADAPTER Adapter = (PADAPTER)(poid_par_priv->adapter_context); + +_func_enter_; + + RT_TRACE(_module_mp_, _drv_notice_, ("+Set OID_RT_PRO_STOP_TEST\n")); + + if (poid_par_priv->type_of_oid != SET_OID) + return NDIS_STATUS_NOT_ACCEPTED; + + _irqlevel_changed_(&oldirql, LOWER); + mp_stop_test(Adapter); + _irqlevel_changed_(&oldirql, RAISE); + + RT_TRACE(_module_mp_, _drv_notice_, ("-Set OID_RT_PRO_STOP_TEST\n")); + +_func_exit_; + + return status; +} +//------------------------------------------------------------------------------ +NDIS_STATUS oid_rt_pro_set_channel_direct_call_hdl(struct oid_par_priv *poid_par_priv) +{ +#ifdef PLATFORM_OS_XP + _irqL oldirql; +#endif + u32 Channel; + NDIS_STATUS status = NDIS_STATUS_SUCCESS; + PADAPTER Adapter = (PADAPTER)(poid_par_priv->adapter_context); + +_func_enter_; + + RT_TRACE(_module_mp_, _drv_notice_, ("+oid_rt_pro_set_channel_direct_call_hdl\n")); + + if (poid_par_priv->information_buf_len != sizeof(u32)) + return NDIS_STATUS_INVALID_LENGTH; + + if (poid_par_priv->type_of_oid == QUERY_OID) { + *((u32*)poid_par_priv->information_buf) = Adapter->mppriv.channel; + return NDIS_STATUS_SUCCESS; + } + + if (poid_par_priv->type_of_oid != SET_OID) + return NDIS_STATUS_NOT_ACCEPTED; + + Channel = *((u32*)poid_par_priv->information_buf); + RT_TRACE(_module_mp_, _drv_notice_, ("oid_rt_pro_set_channel_direct_call_hdl: Channel=%d\n", Channel)); + if (Channel > 14) + return NDIS_STATUS_NOT_ACCEPTED; + Adapter->mppriv.channel = Channel; + + _irqlevel_changed_(&oldirql, LOWER); + SetChannel(Adapter); + _irqlevel_changed_(&oldirql, RAISE); + +_func_exit_; + + return status; +} +//------------------------------------------------------------------------------ +NDIS_STATUS oid_rt_set_bandwidth_hdl(struct oid_par_priv *poid_par_priv) +{ +#ifdef PLATFORM_OS_XP + _irqL oldirql; +#endif + u16 bandwidth; + u16 channel_offset; + NDIS_STATUS status = NDIS_STATUS_SUCCESS; + PADAPTER padapter = (PADAPTER)(poid_par_priv->adapter_context); + +_func_enter_; + + RT_TRACE(_module_mp_, _drv_info_, + ("+oid_rt_set_bandwidth_hdl\n")); + + if (poid_par_priv->type_of_oid != SET_OID) + return NDIS_STATUS_NOT_ACCEPTED; + + if (poid_par_priv->information_buf_len < sizeof(u32)) + return NDIS_STATUS_INVALID_LENGTH; + + bandwidth = *((u32*)poid_par_priv->information_buf);//4 + channel_offset = HAL_PRIME_CHNL_OFFSET_DONT_CARE; + + if (bandwidth != HT_CHANNEL_WIDTH_40) + bandwidth = HT_CHANNEL_WIDTH_20; + padapter->mppriv.bandwidth = (u8)bandwidth; + padapter->mppriv.prime_channel_offset = (u8)channel_offset; + + _irqlevel_changed_(&oldirql, LOWER); + SetBandwidth(padapter); + _irqlevel_changed_(&oldirql, RAISE); + + RT_TRACE(_module_mp_, _drv_notice_, + ("-oid_rt_set_bandwidth_hdl: bandwidth=%d channel_offset=%d\n", + bandwidth, channel_offset)); + +_func_exit_; + + return status; +} +//------------------------------------------------------------------------------ +NDIS_STATUS oid_rt_pro_set_antenna_bb_hdl(struct oid_par_priv *poid_par_priv) +{ +#ifdef PLATFORM_OS_XP + _irqL oldirql; +#endif + u32 antenna; + NDIS_STATUS status = NDIS_STATUS_SUCCESS; + PADAPTER Adapter = (PADAPTER)(poid_par_priv->adapter_context); + +_func_enter_; + + RT_TRACE(_module_mp_, _drv_notice_, ("+oid_rt_pro_set_antenna_bb_hdl\n")); + + if (poid_par_priv->information_buf_len != sizeof(u32)) + return NDIS_STATUS_INVALID_LENGTH; + + if (poid_par_priv->type_of_oid == SET_OID) + { + antenna = *(u32*)poid_par_priv->information_buf; + + Adapter->mppriv.antenna_tx = (u16)((antenna & 0xFFFF0000) >> 16); + Adapter->mppriv.antenna_rx = (u16)(antenna & 0x0000FFFF); + RT_TRACE(_module_mp_, _drv_notice_, + ("oid_rt_pro_set_antenna_bb_hdl: tx_ant=0x%04x rx_ant=0x%04x\n", + Adapter->mppriv.antenna_tx, Adapter->mppriv.antenna_rx)); + + _irqlevel_changed_(&oldirql, LOWER); + SetAntenna(Adapter); + _irqlevel_changed_(&oldirql, RAISE); + } else { + antenna = (Adapter->mppriv.antenna_tx << 16)|Adapter->mppriv.antenna_rx; + *(u32*)poid_par_priv->information_buf = antenna; + } + +_func_exit_; + + return status; +} + +NDIS_STATUS oid_rt_pro_set_tx_power_control_hdl(struct oid_par_priv *poid_par_priv) +{ +#ifdef PLATFORM_OS_XP + _irqL oldirql; +#endif + u32 tx_pwr_idx; + NDIS_STATUS status = NDIS_STATUS_SUCCESS; + PADAPTER Adapter = (PADAPTER)(poid_par_priv->adapter_context); + +_func_enter_; + + RT_TRACE(_module_mp_, _drv_info_, ("+oid_rt_pro_set_tx_power_control_hdl\n")); + + if (poid_par_priv->type_of_oid != SET_OID) + return NDIS_STATUS_NOT_ACCEPTED; + + if (poid_par_priv->information_buf_len != sizeof(u32)) + return NDIS_STATUS_INVALID_LENGTH; + + tx_pwr_idx = *((u32*)poid_par_priv->information_buf); + if (tx_pwr_idx > MAX_TX_PWR_INDEX_N_MODE) + return NDIS_STATUS_NOT_ACCEPTED; + + Adapter->mppriv.txpoweridx = (u8)tx_pwr_idx; + + RT_TRACE(_module_mp_, _drv_notice_, + ("oid_rt_pro_set_tx_power_control_hdl: idx=0x%2x\n", + Adapter->mppriv.txpoweridx)); + + _irqlevel_changed_(&oldirql, LOWER); + SetTxPower(Adapter); + _irqlevel_changed_(&oldirql, RAISE); + +_func_exit_; + + return status; +} + +//------------------------------------------------------------------------------ +//**************** oid_rtl_seg_81_80_20 section start **************** +//------------------------------------------------------------------------------ +NDIS_STATUS oid_rt_pro_query_tx_packet_sent_hdl(struct oid_par_priv *poid_par_priv) +{ + NDIS_STATUS status = NDIS_STATUS_SUCCESS; + PADAPTER Adapter = (PADAPTER)(poid_par_priv->adapter_context); + +_func_enter_; + + if (poid_par_priv->type_of_oid !=QUERY_OID) { + status = NDIS_STATUS_NOT_ACCEPTED; + return status; + } + + if (poid_par_priv->information_buf_len == sizeof(ULONG)) { + *(ULONG*)poid_par_priv->information_buf = Adapter->mppriv.tx_pktcount; + *poid_par_priv->bytes_rw = poid_par_priv->information_buf_len; + } else { + status = NDIS_STATUS_INVALID_LENGTH; + } + +_func_exit_; + + return status; +} +//------------------------------------------------------------------------------ +NDIS_STATUS oid_rt_pro_query_rx_packet_received_hdl(struct oid_par_priv *poid_par_priv) +{ + NDIS_STATUS status = NDIS_STATUS_SUCCESS; + PADAPTER Adapter = (PADAPTER)(poid_par_priv->adapter_context); + +_func_enter_; + + if (poid_par_priv->type_of_oid != QUERY_OID) { + status = NDIS_STATUS_NOT_ACCEPTED; + return status; + } + RT_TRACE(_module_mp_, _drv_alert_, ("===> oid_rt_pro_query_rx_packet_received_hdl.\n")); + if (poid_par_priv->information_buf_len == sizeof(ULONG)) { + *(ULONG*)poid_par_priv->information_buf = Adapter->mppriv.rx_pktcount; + *poid_par_priv->bytes_rw = poid_par_priv->information_buf_len; + RT_TRACE(_module_mp_, _drv_alert_, ("recv_ok:%d \n",Adapter->mppriv.rx_pktcount)); + } else { + status = NDIS_STATUS_INVALID_LENGTH; + } + +_func_exit_; + + return status; +} +//------------------------------------------------------------------------------ +NDIS_STATUS oid_rt_pro_query_rx_packet_crc32_error_hdl(struct oid_par_priv *poid_par_priv) +{ + NDIS_STATUS status = NDIS_STATUS_SUCCESS; + PADAPTER Adapter = (PADAPTER)(poid_par_priv->adapter_context); + +_func_enter_; + + if (poid_par_priv->type_of_oid != QUERY_OID) { + status = NDIS_STATUS_NOT_ACCEPTED; + return status; + } + RT_TRACE(_module_mp_, _drv_alert_, ("===> oid_rt_pro_query_rx_packet_crc32_error_hdl.\n")); + if (poid_par_priv->information_buf_len == sizeof(ULONG)) { + *(ULONG*)poid_par_priv->information_buf = Adapter->mppriv.rx_crcerrpktcount; + *poid_par_priv->bytes_rw = poid_par_priv->information_buf_len; + RT_TRACE(_module_mp_, _drv_alert_, ("recv_err:%d \n",Adapter->mppriv.rx_crcerrpktcount)); + } else { + status = NDIS_STATUS_INVALID_LENGTH; + } + +_func_exit_; + + return status; +} +//------------------------------------------------------------------------------ + +NDIS_STATUS oid_rt_pro_reset_tx_packet_sent_hdl(struct oid_par_priv *poid_par_priv) +{ + NDIS_STATUS status = NDIS_STATUS_SUCCESS; + PADAPTER Adapter = (PADAPTER)(poid_par_priv->adapter_context); + +_func_enter_; + + if (poid_par_priv->type_of_oid != SET_OID) { + status = NDIS_STATUS_NOT_ACCEPTED; + return status; + } + + RT_TRACE(_module_mp_, _drv_alert_, ("===> oid_rt_pro_reset_tx_packet_sent_hdl.\n")); + Adapter->mppriv.tx_pktcount = 0; + +_func_exit_; + + return status; +} +//------------------------------------------------------------------------------ +NDIS_STATUS oid_rt_pro_reset_rx_packet_received_hdl(struct oid_par_priv *poid_par_priv) +{ + NDIS_STATUS status = NDIS_STATUS_SUCCESS; + PADAPTER Adapter = (PADAPTER)(poid_par_priv->adapter_context); + +_func_enter_; + + if (poid_par_priv->type_of_oid != SET_OID) + { + status = NDIS_STATUS_NOT_ACCEPTED; + return status; + } + + if (poid_par_priv->information_buf_len == sizeof(ULONG)) { + Adapter->mppriv.rx_pktcount = 0; + Adapter->mppriv.rx_crcerrpktcount = 0; + } else { + status = NDIS_STATUS_INVALID_LENGTH; + } + +_func_exit_; + + return status; +} +//------------------------------------------------------------------------------ +NDIS_STATUS oid_rt_reset_phy_rx_packet_count_hdl(struct oid_par_priv *poid_par_priv) +{ +#ifdef PLATFORM_OS_XP + _irqL oldirql; +#endif + NDIS_STATUS status = NDIS_STATUS_SUCCESS; + PADAPTER Adapter = (PADAPTER)(poid_par_priv->adapter_context); + +_func_enter_; + + if (poid_par_priv->type_of_oid != SET_OID) { + status = NDIS_STATUS_NOT_ACCEPTED; + return status; + } + + _irqlevel_changed_(&oldirql, LOWER); + ResetPhyRxPktCount(Adapter); + _irqlevel_changed_(&oldirql, RAISE); + +_func_exit_; + + return status; +} +//------------------------------------------------------------------------------ +NDIS_STATUS oid_rt_get_phy_rx_packet_received_hdl(struct oid_par_priv *poid_par_priv) +{ +#ifdef PLATFORM_OS_XP + _irqL oldirql; +#endif + NDIS_STATUS status = NDIS_STATUS_SUCCESS; + PADAPTER Adapter = (PADAPTER)(poid_par_priv->adapter_context); + +_func_enter_; + + RT_TRACE(_module_mp_, _drv_info_, ("+oid_rt_get_phy_rx_packet_received_hdl\n")); + + if (poid_par_priv->type_of_oid != QUERY_OID) + return NDIS_STATUS_NOT_ACCEPTED; + + if (poid_par_priv->information_buf_len != sizeof(ULONG)) + return NDIS_STATUS_INVALID_LENGTH; + + _irqlevel_changed_(&oldirql, LOWER); + *(ULONG*)poid_par_priv->information_buf = GetPhyRxPktReceived(Adapter); + _irqlevel_changed_(&oldirql, RAISE); + + *poid_par_priv->bytes_rw = poid_par_priv->information_buf_len; + + RT_TRACE(_module_mp_, _drv_notice_, ("-oid_rt_get_phy_rx_packet_received_hdl: recv_ok=%d\n", *(ULONG*)poid_par_priv->information_buf)); + +_func_exit_; + + return status; +} +//------------------------------------------------------------------------------ +NDIS_STATUS oid_rt_get_phy_rx_packet_crc32_error_hdl(struct oid_par_priv *poid_par_priv) +{ +#ifdef PLATFORM_OS_XP + _irqL oldirql; +#endif + NDIS_STATUS status = NDIS_STATUS_SUCCESS; + PADAPTER Adapter = (PADAPTER)(poid_par_priv->adapter_context); + +_func_enter_; + + RT_TRACE(_module_mp_, _drv_info_, ("+oid_rt_get_phy_rx_packet_crc32_error_hdl\n")); + + if (poid_par_priv->type_of_oid != QUERY_OID) + return NDIS_STATUS_NOT_ACCEPTED; + + + if (poid_par_priv->information_buf_len != sizeof(ULONG)) + return NDIS_STATUS_INVALID_LENGTH; + + _irqlevel_changed_(&oldirql, LOWER); + *(ULONG*)poid_par_priv->information_buf = GetPhyRxPktCRC32Error(Adapter); + _irqlevel_changed_(&oldirql, RAISE); + + *poid_par_priv->bytes_rw = poid_par_priv->information_buf_len; + + RT_TRACE(_module_mp_, _drv_info_, ("-oid_rt_get_phy_rx_packet_crc32_error_hdl: recv_err=%d\n", *(ULONG*)poid_par_priv->information_buf)); + +_func_exit_; + + return status; +} +//**************** oid_rtl_seg_81_80_20 section end **************** +NDIS_STATUS oid_rt_pro_set_continuous_tx_hdl(struct oid_par_priv *poid_par_priv) +{ +#ifdef PLATFORM_OS_XP + _irqL oldirql; +#endif + u32 bStartTest; + NDIS_STATUS status = NDIS_STATUS_SUCCESS; + PADAPTER Adapter = (PADAPTER)(poid_par_priv->adapter_context); + +_func_enter_; + + RT_TRACE(_module_mp_, _drv_notice_, ("+oid_rt_pro_set_continuous_tx_hdl\n")); + + if (poid_par_priv->type_of_oid != SET_OID) + return NDIS_STATUS_NOT_ACCEPTED; + + bStartTest = *((u32*)poid_par_priv->information_buf); + + _irqlevel_changed_(&oldirql, LOWER); + SetContinuousTx(Adapter,(u8)bStartTest); + if (bStartTest) { + struct mp_priv *pmp_priv = &Adapter->mppriv; + if (pmp_priv->tx.stop == 0) { + pmp_priv->tx.stop = 1; + DBG_871X("%s: pkt tx is running...\n", __func__); + rtw_msleep_os(5); + } + pmp_priv->tx.stop = 0; + pmp_priv->tx.count = 1; + SetPacketTx(Adapter); + } + _irqlevel_changed_(&oldirql, RAISE); + +_func_exit_; + + return status; +} + +NDIS_STATUS oid_rt_pro_set_single_carrier_tx_hdl(struct oid_par_priv *poid_par_priv) +{ +#ifdef PLATFORM_OS_XP + _irqL oldirql; +#endif + u32 bStartTest; + NDIS_STATUS status = NDIS_STATUS_SUCCESS; + PADAPTER Adapter = (PADAPTER)(poid_par_priv->adapter_context); + +_func_enter_; + + RT_TRACE(_module_mp_, _drv_alert_, ("+oid_rt_pro_set_single_carrier_tx_hdl\n")); + + if (poid_par_priv->type_of_oid != SET_OID) + return NDIS_STATUS_NOT_ACCEPTED; + + bStartTest = *((u32*)poid_par_priv->information_buf); + + _irqlevel_changed_(&oldirql, LOWER); + SetSingleCarrierTx(Adapter, (u8)bStartTest); + if (bStartTest) { + struct mp_priv *pmp_priv = &Adapter->mppriv; + if (pmp_priv->tx.stop == 0) { + pmp_priv->tx.stop = 1; + DBG_871X("%s: pkt tx is running...\n", __func__); + rtw_msleep_os(5); + } + pmp_priv->tx.stop = 0; + pmp_priv->tx.count = 1; + SetPacketTx(Adapter); + } + _irqlevel_changed_(&oldirql, RAISE); + +_func_exit_; + + return status; +} + +NDIS_STATUS oid_rt_pro_set_carrier_suppression_tx_hdl(struct oid_par_priv *poid_par_priv) +{ +#ifdef PLATFORM_OS_XP + _irqL oldirql; +#endif + u32 bStartTest; + NDIS_STATUS status = NDIS_STATUS_SUCCESS; + PADAPTER Adapter = (PADAPTER)(poid_par_priv->adapter_context); + +_func_enter_; + + RT_TRACE(_module_mp_, _drv_notice_, ("+oid_rt_pro_set_carrier_suppression_tx_hdl\n")); + + if (poid_par_priv->type_of_oid != SET_OID) + return NDIS_STATUS_NOT_ACCEPTED; + + bStartTest = *((u32*)poid_par_priv->information_buf); + + _irqlevel_changed_(&oldirql, LOWER); + SetCarrierSuppressionTx(Adapter, (u8)bStartTest); + if (bStartTest) { + struct mp_priv *pmp_priv = &Adapter->mppriv; + if (pmp_priv->tx.stop == 0) { + pmp_priv->tx.stop = 1; + DBG_871X("%s: pkt tx is running...\n", __func__); + rtw_msleep_os(5); + } + pmp_priv->tx.stop = 0; + pmp_priv->tx.count = 1; + SetPacketTx(Adapter); + } + _irqlevel_changed_(&oldirql, RAISE); + +_func_exit_; + + return status; +} + +NDIS_STATUS oid_rt_pro_set_single_tone_tx_hdl(struct oid_par_priv *poid_par_priv) +{ +#ifdef PLATFORM_OS_XP + _irqL oldirql; +#endif + u32 bStartTest; + NDIS_STATUS status = NDIS_STATUS_SUCCESS; + PADAPTER Adapter = (PADAPTER)(poid_par_priv->adapter_context); + +_func_enter_; + + RT_TRACE(_module_mp_, _drv_alert_, ("+oid_rt_pro_set_single_tone_tx_hdl\n")); + + if (poid_par_priv->type_of_oid != SET_OID) + return NDIS_STATUS_NOT_ACCEPTED; + + bStartTest = *((u32*)poid_par_priv->information_buf); + + _irqlevel_changed_(&oldirql, LOWER); + SetSingleToneTx(Adapter,(u8)bStartTest); + _irqlevel_changed_(&oldirql, RAISE); + +_func_exit_; + + return status; +} + +NDIS_STATUS oid_rt_pro_set_modulation_hdl(struct oid_par_priv* poid_par_priv) +{ + return 0; +} + +NDIS_STATUS oid_rt_pro_trigger_gpio_hdl(struct oid_par_priv *poid_par_priv) +{ + PADAPTER Adapter = (PADAPTER)(poid_par_priv->adapter_context); + +#ifdef PLATFORM_OS_XP + _irqL oldirql; +#endif + NDIS_STATUS status = NDIS_STATUS_SUCCESS; +_func_enter_; + + if (poid_par_priv->type_of_oid != SET_OID) + return NDIS_STATUS_NOT_ACCEPTED; + + _irqlevel_changed_(&oldirql, LOWER); + rtw_hal_set_hwreg(Adapter, HW_VAR_TRIGGER_GPIO_0, 0); + _irqlevel_changed_(&oldirql, RAISE); + +_func_exit_; + + return status; +} +//**************** oid_rtl_seg_81_80_00 section end **************** +//------------------------------------------------------------------------------ +NDIS_STATUS oid_rt_pro8711_join_bss_hdl(struct oid_par_priv *poid_par_priv) +{ +#if 0 + PADAPTER Adapter = (PADAPTER)(poid_par_priv->adapter_context); + +#ifdef PLATFORM_OS_XP + _irqL oldirql; +#endif + NDIS_STATUS status = NDIS_STATUS_SUCCESS; + + PNDIS_802_11_SSID pssid; + +_func_enter_; + + if (poid_par_priv->type_of_oid != SET_OID) + return NDIS_STATUS_NOT_ACCEPTED; + + *poid_par_priv->bytes_needed = (u32)sizeof(NDIS_802_11_SSID); + *poid_par_priv->bytes_rw = 0; + if (poid_par_priv->information_buf_len < *poid_par_priv->bytes_needed) + return NDIS_STATUS_INVALID_LENGTH; + + pssid = (PNDIS_802_11_SSID)poid_par_priv->information_buf; + + _irqlevel_changed_(&oldirql, LOWER); + + if (mp_start_joinbss(Adapter, pssid) == _FAIL) + status = NDIS_STATUS_NOT_ACCEPTED; + + _irqlevel_changed_(&oldirql, RAISE); + + *poid_par_priv->bytes_rw = sizeof(NDIS_802_11_SSID); + +_func_exit_; + + return status; +#else + return 0; +#endif +} +//------------------------------------------------------------------------------ +NDIS_STATUS oid_rt_pro_read_register_hdl(struct oid_par_priv *poid_par_priv) +{ +#ifdef PLATFORM_OS_XP + _irqL oldirql; +#endif + pRW_Reg RegRWStruct; + u32 offset, width; + NDIS_STATUS status = NDIS_STATUS_SUCCESS; + PADAPTER Adapter = (PADAPTER)(poid_par_priv->adapter_context); + +_func_enter_; + + RT_TRACE(_module_mp_, _drv_info_, + ("+oid_rt_pro_read_register_hdl\n")); + + if (poid_par_priv->type_of_oid != QUERY_OID) + return NDIS_STATUS_NOT_ACCEPTED; + + RegRWStruct = (pRW_Reg)poid_par_priv->information_buf; + offset = RegRWStruct->offset; + width = RegRWStruct->width; + + if (offset > 0xFFF) + return NDIS_STATUS_NOT_ACCEPTED; + + _irqlevel_changed_(&oldirql, LOWER); + + switch (width) { + case 1: + RegRWStruct->value = rtw_read8(Adapter, offset); + break; + case 2: + RegRWStruct->value = rtw_read16(Adapter, offset); + break; + default: + width = 4; + RegRWStruct->value = rtw_read32(Adapter, offset); + break; + } + RT_TRACE(_module_mp_, _drv_notice_, + ("oid_rt_pro_read_register_hdl: offset:0x%04X value:0x%X\n", + offset, RegRWStruct->value)); + + _irqlevel_changed_(&oldirql, RAISE); + + *poid_par_priv->bytes_rw = width; + +_func_exit_; + + return status; +} +//------------------------------------------------------------------------------ +NDIS_STATUS oid_rt_pro_write_register_hdl(struct oid_par_priv *poid_par_priv) +{ +#ifdef PLATFORM_OS_XP + _irqL oldirql; +#endif + pRW_Reg RegRWStruct; + u32 offset, width, value; + NDIS_STATUS status = NDIS_STATUS_SUCCESS; + PADAPTER padapter = (PADAPTER)(poid_par_priv->adapter_context); + +_func_enter_; + + RT_TRACE(_module_mp_, _drv_info_, + ("+oid_rt_pro_write_register_hdl\n")); + + if (poid_par_priv->type_of_oid != SET_OID) + return NDIS_STATUS_NOT_ACCEPTED; + + RegRWStruct = (pRW_Reg)poid_par_priv->information_buf; + offset = RegRWStruct->offset; + width = RegRWStruct->width; + value = RegRWStruct->value; + + if (offset > 0xFFF) + return NDIS_STATUS_NOT_ACCEPTED; + + _irqlevel_changed_(&oldirql, LOWER); + + switch (RegRWStruct->width) + { + case 1: + if (value > 0xFF) { + status = NDIS_STATUS_NOT_ACCEPTED; + break; + } + rtw_write8(padapter, offset, (u8)value); + break; + case 2: + if (value > 0xFFFF) { + status = NDIS_STATUS_NOT_ACCEPTED; + break; + } + rtw_write16(padapter, offset, (u16)value); + break; + case 4: + rtw_write32(padapter, offset, value); + break; + default: + status = NDIS_STATUS_NOT_ACCEPTED; + break; + } + + _irqlevel_changed_(&oldirql, RAISE); + + RT_TRACE(_module_mp_, _drv_info_, + ("-oid_rt_pro_write_register_hdl: offset=0x%08X width=%d value=0x%X\n", + offset, width, value)); + +_func_exit_; + + return status; +} +//------------------------------------------------------------------------------ +NDIS_STATUS oid_rt_pro_burst_read_register_hdl(struct oid_par_priv *poid_par_priv) +{ +#if 0 +#ifdef PLATFORM_OS_XP + _irqL oldirql; +#endif + pBurst_RW_Reg pBstRwReg; + NDIS_STATUS status = NDIS_STATUS_SUCCESS; + PADAPTER padapter = (PADAPTER)(poid_par_priv->adapter_context); + +_func_enter_; + + RT_TRACE(_module_mp_, _drv_notice_, ("+oid_rt_pro_burst_read_register_hdl\n")); + + if (poid_par_priv->type_of_oid != QUERY_OID) + return NDIS_STATUS_NOT_ACCEPTED; + + pBstRwReg = (pBurst_RW_Reg)poid_par_priv->information_buf; + + _irqlevel_changed_(&oldirql, LOWER); + rtw_read_mem(padapter, pBstRwReg->offset, (u32)pBstRwReg->len, pBstRwReg->Data); + _irqlevel_changed_(&oldirql, RAISE); + + *poid_par_priv->bytes_rw = poid_par_priv->information_buf_len; + + RT_TRACE(_module_mp_, _drv_info_, ("-oid_rt_pro_burst_read_register_hdl\n")); + +_func_exit_; + + return status; +#else + return 0; +#endif +} +//------------------------------------------------------------------------------ +NDIS_STATUS oid_rt_pro_burst_write_register_hdl(struct oid_par_priv *poid_par_priv) +{ +#if 0 +#ifdef PLATFORM_OS_XP + _irqL oldirql; +#endif + pBurst_RW_Reg pBstRwReg; + NDIS_STATUS status = NDIS_STATUS_SUCCESS; + PADAPTER padapter = (PADAPTER)(poid_par_priv->adapter_context); + +_func_enter_; + + RT_TRACE(_module_mp_, _drv_notice_, ("+oid_rt_pro_burst_write_register_hdl\n")); + + if (poid_par_priv->type_of_oid != SET_OID) + return NDIS_STATUS_NOT_ACCEPTED; + + pBstRwReg = (pBurst_RW_Reg)poid_par_priv->information_buf; + + _irqlevel_changed_(&oldirql, LOWER); + rtw_write_mem(padapter, pBstRwReg->offset, (u32)pBstRwReg->len, pBstRwReg->Data); + _irqlevel_changed_(&oldirql, RAISE); + + RT_TRACE(_module_mp_, _drv_info_, ("-oid_rt_pro_burst_write_register_hdl\n")); + +_func_exit_; + + return status; +#else + return 0; +#endif +} +//------------------------------------------------------------------------------ +NDIS_STATUS oid_rt_pro_write_txcmd_hdl(struct oid_par_priv *poid_par_priv) +{ +#if 0 + NDIS_STATUS status = NDIS_STATUS_SUCCESS; + + PADAPTER Adapter = (PADAPTER)( poid_par_priv->adapter_context); + +#ifdef PLATFORM_OS_XP + _irqL oldirql; +#endif + + TX_CMD_Desc *TxCmd_Info; + +_func_enter_; + + if (poid_par_priv->type_of_oid != SET_OID) + return NDIS_STATUS_NOT_ACCEPTED; + + RT_TRACE(_module_mp_, _drv_info_, ("+Set OID_RT_PRO_WRITE_TXCMD\n")); + + TxCmd_Info=(TX_CMD_Desc*)poid_par_priv->information_buf; + + RT_TRACE(_module_mp_, _drv_info_, ("WRITE_TXCMD:Addr=%.8X\n", TxCmd_Info->offset)); + RT_TRACE(_module_mp_, _drv_info_, ("WRITE_TXCMD:1.)%.8X\n", (ULONG)TxCmd_Info->TxCMD.value[0])); + RT_TRACE(_module_mp_, _drv_info_, ("WRITE_TXCMD:2.)%.8X\n", (ULONG)TxCmd_Info->TxCMD.value[1])); + RT_TRACE(_module_mp_, _drv_info_, (("WRITE_TXCMD:3.)%.8X\n", (ULONG)TxCmd_Info->TxCMD.value[2])); + RT_TRACE(_module_mp_, _drv_info_, ("WRITE_TXCMD:4.)%.8X\n", (ULONG)TxCmd_Info->TxCMD.value[3])); + + _irqlevel_changed_(&oldirql, LOWER); + + rtw_write32(Adapter, TxCmd_Info->offset + 0, (unsigned int)TxCmd_Info->TxCMD.value[0]); + rtw_write32(Adapter, TxCmd_Info->offset + 4, (unsigned int)TxCmd_Info->TxCMD.value[1]); + + _irqlevel_changed_(&oldirql, RAISE); + + RT_TRACE(_module_mp_, _drv_notice_, + ("-Set OID_RT_PRO_WRITE_TXCMD: status=0x%08X\n", status)); + +_func_exit_; + + return status; +#else + return 0; +#endif +} + +//------------------------------------------------------------------------------ +NDIS_STATUS oid_rt_pro_read16_eeprom_hdl(struct oid_par_priv *poid_par_priv) +{ +#if 0 +#ifdef PLATFORM_OS_XP + _irqL oldirql; +#endif + pEEPROM_RWParam pEEPROM; + NDIS_STATUS status = NDIS_STATUS_SUCCESS; + PADAPTER padapter = (PADAPTER)(poid_par_priv->adapter_context); + +_func_enter_; + + RT_TRACE(_module_mp_, _drv_info_, ("+Query OID_RT_PRO_READ16_EEPROM\n")); + + if (poid_par_priv->type_of_oid != QUERY_OID) + return NDIS_STATUS_NOT_ACCEPTED; + + pEEPROM = (pEEPROM_RWParam)poid_par_priv->information_buf; + + _irqlevel_changed_(&oldirql, LOWER); + pEEPROM->value = eeprom_read16(padapter, (u16)(pEEPROM->offset >> 1)); + _irqlevel_changed_(&oldirql, RAISE); + + *poid_par_priv->bytes_rw = poid_par_priv->information_buf_len; + + RT_TRACE(_module_mp_, _drv_notice_, + ("-Query OID_RT_PRO_READ16_EEPROM: offset=0x%x value=0x%x\n", + pEEPROM->offset, pEEPROM->value)); + +_func_exit_; + + return status; +#else + return 0; +#endif +} + +//------------------------------------------------------------------------------ +NDIS_STATUS oid_rt_pro_write16_eeprom_hdl (struct oid_par_priv *poid_par_priv) +{ +#if 0 +#ifdef PLATFORM_OS_XP + _irqL oldirql; +#endif + pEEPROM_RWParam pEEPROM; + NDIS_STATUS status = NDIS_STATUS_SUCCESS; + PADAPTER padapter = (PADAPTER)(poid_par_priv->adapter_context); + +_func_enter_; + + RT_TRACE(_module_mp_, _drv_notice_, ("+Set OID_RT_PRO_WRITE16_EEPROM\n")); + + if (poid_par_priv->type_of_oid != SET_OID) + return NDIS_STATUS_NOT_ACCEPTED; + + pEEPROM = (pEEPROM_RWParam)poid_par_priv->information_buf; + + _irqlevel_changed_(&oldirql, LOWER); + eeprom_write16(padapter, (u16)(pEEPROM->offset >> 1), pEEPROM->value); + _irqlevel_changed_(&oldirql, RAISE); + + *poid_par_priv->bytes_rw = poid_par_priv->information_buf_len; + +_func_exit_; + + return status; +#else + return 0; +#endif +} +//------------------------------------------------------------------------------ +NDIS_STATUS oid_rt_pro8711_wi_poll_hdl(struct oid_par_priv *poid_par_priv) +{ +#if 0 + PADAPTER Adapter = (PADAPTER)( poid_par_priv->adapter_context); + + NDIS_STATUS status = NDIS_STATUS_SUCCESS; + + struct mp_wiparam *pwi_param; + +_func_enter_; + + if (poid_par_priv->type_of_oid != QUERY_OID) + return NDIS_STATUS_NOT_ACCEPTED; + + if (poid_par_priv->information_buf_len < sizeof(struct mp_wiparam)) + return NDIS_STATUS_INVALID_LENGTH; + + if (Adapter->mppriv.workparam.bcompleted == _FALSE) + return NDIS_STATUS_NOT_ACCEPTED; + + pwi_param = (struct mp_wiparam *)poid_par_priv->information_buf; + + _rtw_memcpy(pwi_param, &Adapter->mppriv.workparam, sizeof(struct mp_wiparam)); + Adapter->mppriv.act_in_progress = _FALSE; +// RT_TRACE(_module_mp_, _drv_info_, ("rf:%x\n", pwiparam->IoValue)); + *poid_par_priv->bytes_rw = poid_par_priv->information_buf_len; + +_func_exit_; + + return status; +#else + return 0; +#endif +} +//------------------------------------------------------------------------------ +NDIS_STATUS oid_rt_pro8711_pkt_loss_hdl(struct oid_par_priv *poid_par_priv) +{ +#if 0 + PADAPTER Adapter = (PADAPTER)( poid_par_priv->adapter_context); + + NDIS_STATUS status = NDIS_STATUS_SUCCESS; + +_func_enter_; + + RT_TRACE(_module_mp_, _drv_notice_, ("+oid_rt_pro8711_pkt_loss_hdl\n")); + + if (poid_par_priv->type_of_oid != QUERY_OID) + return NDIS_STATUS_NOT_ACCEPTED; + + if (poid_par_priv->information_buf_len < sizeof(uint)*2) { + RT_TRACE(_module_mp_, _drv_err_, ("-oid_rt_pro8711_pkt_loss_hdl: buf_len=%d\n", (int)poid_par_priv->information_buf_len)); + return NDIS_STATUS_INVALID_LENGTH; + } + + if (*(uint*)poid_par_priv->information_buf == 1)//init==1 + Adapter->mppriv.rx_pktloss = 0; + + *((uint*)poid_par_priv->information_buf+1) = Adapter->mppriv.rx_pktloss; + *poid_par_priv->bytes_rw = poid_par_priv->information_buf_len; + +_func_exit_; + + return status; +#else + return 0; +#endif +} +//------------------------------------------------------------------------------ +NDIS_STATUS oid_rt_rd_attrib_mem_hdl(struct oid_par_priv *poid_par_priv) +{ +#if 0 + PADAPTER Adapter = (PADAPTER)( poid_par_priv->adapter_context); + struct io_queue *pio_queue = (struct io_queue *)Adapter->pio_queue; + struct intf_hdl *pintfhdl = &pio_queue->intf; + +#ifdef PLATFORM_OS_XP + _irqL oldirql; +#endif + NDIS_STATUS status = NDIS_STATUS_SUCCESS; + +#ifdef CONFIG_SDIO_HCI + void (*_attrib_read)(struct intf_hdl *pintfhdl, u32 addr, u32 cnt, u8 *pmem); +#endif + +_func_enter_; + + RT_TRACE(_module_mp_, _drv_notice_, ("+Query OID_RT_RD_ATTRIB_MEM\n")); + + if (poid_par_priv->type_of_oid != QUERY_OID) + return NDIS_STATUS_NOT_ACCEPTED; + +#ifdef CONFIG_SDIO_HCI + _irqlevel_changed_(&oldirql, LOWER); +{ + u32 *plmem = (u32*)poid_par_priv->information_buf+2; + _attrib_read = pintfhdl->io_ops._attrib_read; + _attrib_read(pintfhdl, *((u32*)poid_par_priv->information_buf), + *((u32*)poid_par_priv->information_buf+1), (u8*)plmem); + *poid_par_priv->bytes_rw = poid_par_priv->information_buf_len; +} + _irqlevel_changed_(&oldirql, RAISE); +#endif + +_func_exit_; + + return status; +#else + return 0; +#endif +} +//------------------------------------------------------------------------------ +NDIS_STATUS oid_rt_wr_attrib_mem_hdl (struct oid_par_priv *poid_par_priv) +{ +#if 0 + PADAPTER Adapter = (PADAPTER)(poid_par_priv->adapter_context); + struct io_queue *pio_queue = (struct io_queue *)Adapter->pio_queue; + struct intf_hdl *pintfhdl = &pio_queue->intf; + +#ifdef PLATFORM_OS_XP + _irqL oldirql; +#endif + NDIS_STATUS status = NDIS_STATUS_SUCCESS; + +#ifdef CONFIG_SDIO_HCI + void (*_attrib_write)(struct intf_hdl *pintfhdl, u32 addr, u32 cnt, u8 *pmem); +#endif + +_func_enter_; + + if (poid_par_priv->type_of_oid != SET_OID) + return NDIS_STATUS_NOT_ACCEPTED; + +#ifdef CONFIG_SDIO_HCI + _irqlevel_changed_(&oldirql, LOWER); +{ + u32 *plmem = (u32*)poid_par_priv->information_buf + 2; + _attrib_write = pintfhdl->io_ops._attrib_write; + _attrib_write(pintfhdl, *(u32*)poid_par_priv->information_buf, + *((u32*)poid_par_priv->information_buf+1), (u8*)plmem); +} + _irqlevel_changed_(&oldirql, RAISE); +#endif + +_func_exit_; + + return status; +#else + return 0; +#endif +} +//------------------------------------------------------------------------------ +NDIS_STATUS oid_rt_pro_set_rf_intfs_hdl(struct oid_par_priv *poid_par_priv) +{ +#if 0 + PADAPTER Adapter = (PADAPTER)(poid_par_priv->adapter_context); + +#ifdef PLATFORM_OS_XP + _irqL oldirql; +#endif + NDIS_STATUS status = NDIS_STATUS_SUCCESS; + +_func_enter_; + + RT_TRACE(_module_mp_, _drv_notice_, ("+OID_RT_PRO_SET_RF_INTFS\n")); + + if (poid_par_priv->type_of_oid != SET_OID) + return NDIS_STATUS_NOT_ACCEPTED; + + _irqlevel_changed_(&oldirql, LOWER); + + if (rtw_setrfintfs_cmd(Adapter, *(unsigned char*)poid_par_priv->information_buf) == _FAIL) + status = NDIS_STATUS_NOT_ACCEPTED; + + _irqlevel_changed_(&oldirql, RAISE); + +_func_exit_; + + return status; +#else + return 0; +#endif +} +//------------------------------------------------------------------------------ +NDIS_STATUS oid_rt_poll_rx_status_hdl(struct oid_par_priv *poid_par_priv) +{ +#if 0 + PADAPTER Adapter = (PADAPTER)(poid_par_priv->adapter_context); + + NDIS_STATUS status = NDIS_STATUS_SUCCESS; + +_func_enter_; + + if (poid_par_priv->type_of_oid != QUERY_OID) + return NDIS_STATUS_NOT_ACCEPTED; + + _rtw_memcpy(poid_par_priv->information_buf, (unsigned char*)&Adapter->mppriv.rxstat, sizeof(struct recv_stat)); + *poid_par_priv->bytes_rw = poid_par_priv->information_buf_len; + +_func_exit_; + + return status; +#else + return 0; +#endif +} +//------------------------------------------------------------------------------ +NDIS_STATUS oid_rt_pro_cfg_debug_message_hdl(struct oid_par_priv *poid_par_priv) +{ +#if 0 + PADAPTER Adapter = (PADAPTER)(poid_par_priv->adapter_context); + + NDIS_STATUS status = NDIS_STATUS_SUCCESS; + + PCFG_DBG_MSG_STRUCT pdbg_msg; + +_func_enter_; + +// RT_TRACE(0xffffffffff,_drv_alert_,("===> oid_rt_pro_cfg_debug_message_hdl.\n")); + +#if 0//#ifdef CONFIG_DEBUG_RTL871X + + pdbg_msg = (PCFG_DBG_MSG_STRUCT)(poid_par_priv->information_buf); + + if (poid_par_priv->type_of_oid == SET_OID) { + RT_TRACE(0xffffffffff, _drv_alert_, + ("===>Set level :0x%08x, H32:0x%08x L32:0x%08x\n", + pdbg_msg->DebugLevel, pdbg_msg->DebugComponent_H32, pdbg_msg->DebugComponent_L32)); + + GlobalDebugLevel = pdbg_msg->DebugLevel; + GlobalDebugComponents = (pdbg_msg->DebugComponent_H32 << 32) | pdbg_msg->DebugComponent_L32; + RT_TRACE(0xffffffffff, _drv_alert_, + ("===> Set level :0x%08x, component:0x%016x\n", + GlobalDebugLevel, (u32)GlobalDebugComponents)); + } else { + pdbg_msg->DebugLevel = GlobalDebugLevel; + pdbg_msg->DebugComponent_H32 = (u32)(GlobalDebugComponents >> 32); + pdbg_msg->DebugComponent_L32 = (u32)GlobalDebugComponents; + *poid_par_priv->bytes_rw = poid_par_priv->information_buf_len; + + RT_TRACE(0xffffffffff, _drv_alert_, + ("===>Query level:0x%08x H32:0x%08x L32:0x%08x\n", + (u32)pdbg_msg->DebugLevel, (u32)pdbg_msg->DebugComponent_H32, (u32)pdbg_msg->DebugComponent_L32)); + } + +#endif + +_func_exit_; + + return status; +#else + return 0; +#endif +} +//------------------------------------------------------------------------------ +NDIS_STATUS oid_rt_pro_set_data_rate_ex_hdl(struct oid_par_priv *poid_par_priv) +{ + PADAPTER Adapter = (PADAPTER)(poid_par_priv->adapter_context); + +#ifdef PLATFORM_OS_XP + _irqL oldirql; +#endif + NDIS_STATUS status = NDIS_STATUS_SUCCESS; + +_func_enter_; + + RT_TRACE(_module_mp_, _drv_notice_, ("+OID_RT_PRO_SET_DATA_RATE_EX\n")); + + if (poid_par_priv->type_of_oid != SET_OID) + return NDIS_STATUS_NOT_ACCEPTED; + + _irqlevel_changed_(&oldirql, LOWER); + + if (rtw_setdatarate_cmd(Adapter, poid_par_priv->information_buf) !=_SUCCESS) + status = NDIS_STATUS_NOT_ACCEPTED; + + _irqlevel_changed_(&oldirql, RAISE); + +_func_exit_; + + return status; +} +//----------------------------------------------------------------------------- +NDIS_STATUS oid_rt_get_thermal_meter_hdl(struct oid_par_priv *poid_par_priv) +{ +#ifdef PLATFORM_OS_XP + _irqL oldirql; +#endif + NDIS_STATUS status = NDIS_STATUS_SUCCESS; + u8 thermal = 0; + PADAPTER Adapter = (PADAPTER)(poid_par_priv->adapter_context); + +_func_enter_; + + RT_TRACE(_module_mp_, _drv_notice_, ("+oid_rt_get_thermal_meter_hdl\n")); + + if (poid_par_priv->type_of_oid != QUERY_OID) + return NDIS_STATUS_NOT_ACCEPTED; + + if (poid_par_priv->information_buf_len < sizeof(u32)) + return NDIS_STATUS_INVALID_LENGTH; + + _irqlevel_changed_(&oldirql, LOWER); + GetThermalMeter(Adapter, &thermal); + _irqlevel_changed_(&oldirql, RAISE); + + *(u32*)poid_par_priv->information_buf = (u32)thermal; + *poid_par_priv->bytes_rw = sizeof(u32); + +_func_exit_; + + return status; +} +//----------------------------------------------------------------------------- +NDIS_STATUS oid_rt_pro_read_tssi_hdl(struct oid_par_priv *poid_par_priv) +{ +#if 0 + PADAPTER Adapter = (PADAPTER)(poid_par_priv->adapter_context); + +#ifdef PLATFORM_OS_XP + _irqL oldirql; +#endif + NDIS_STATUS status = NDIS_STATUS_SUCCESS; + +_func_enter_; + + RT_TRACE(_module_mp_, _drv_notice_, ("+oid_rt_pro_read_tssi_hdl\n")); + + if (poid_par_priv->type_of_oid != SET_OID) + return NDIS_STATUS_NOT_ACCEPTED; + + if (Adapter->mppriv.act_in_progress == _TRUE) + return NDIS_STATUS_NOT_ACCEPTED; + + if (poid_par_priv->information_buf_len < sizeof(u8)) + return NDIS_STATUS_INVALID_LENGTH; + + //init workparam + Adapter->mppriv.act_in_progress = _TRUE; + Adapter->mppriv.workparam.bcompleted = _FALSE; + Adapter->mppriv.workparam.act_type = MPT_READ_TSSI; + Adapter->mppriv.workparam.io_offset = 0; + Adapter->mppriv.workparam.io_value = 0xFFFFFFFF; + + _irqlevel_changed_(&oldirql, LOWER); + + if (!rtw_gettssi_cmd(Adapter,0, (u8*)&Adapter->mppriv.workparam.io_value)) + status = NDIS_STATUS_NOT_ACCEPTED; + + _irqlevel_changed_(&oldirql, RAISE); + +_func_exit_; + + return status; +#else + return 0; +#endif +} +//------------------------------------------------------------------------------ +NDIS_STATUS oid_rt_pro_set_power_tracking_hdl(struct oid_par_priv *poid_par_priv) +{ +#ifdef PLATFORM_OS_XP + _irqL oldirql; +#endif + NDIS_STATUS status = NDIS_STATUS_SUCCESS; + PADAPTER Adapter = (PADAPTER)(poid_par_priv->adapter_context); + + +_func_enter_; + +// if (poid_par_priv->type_of_oid != SET_OID) +// return NDIS_STATUS_NOT_ACCEPTED; + + if (poid_par_priv->information_buf_len < sizeof(u8)) + return NDIS_STATUS_INVALID_LENGTH; + + _irqlevel_changed_(&oldirql, LOWER); + if (poid_par_priv->type_of_oid == SET_OID) { + u8 enable; + + enable = *(u8*)poid_par_priv->information_buf; + RT_TRACE(_module_mp_, _drv_notice_, + ("+oid_rt_pro_set_power_tracking_hdl: enable=%d\n", enable)); + + SetPowerTracking(Adapter, enable); + } else { + GetPowerTracking(Adapter, (u8*)poid_par_priv->information_buf); + } + _irqlevel_changed_(&oldirql, RAISE); + +_func_exit_; + + return status; +} +//----------------------------------------------------------------------------- +NDIS_STATUS oid_rt_pro_set_basic_rate_hdl(struct oid_par_priv *poid_par_priv) +{ +#if 0 +#ifdef PLATFORM_OS_XP + _irqL oldirql; +#endif + u32 ratevalue; + u8 datarates[NumRates]; + int i; + NDIS_STATUS status = NDIS_STATUS_SUCCESS; + PADAPTER padapter = (PADAPTER)(poid_par_priv->adapter_context); + +_func_enter_; + + RT_TRACE(_module_mp_, _drv_info_, ("+OID_RT_PRO_SET_BASIC_RATE\n")); + + if (poid_par_priv->type_of_oid != SET_OID) + return NDIS_STATUS_NOT_ACCEPTED; +#if 0 + ratevalue = *((u32*)poid_par_priv->information_buf); + + for (i = 0; i < NumRates; i++) { + if (ratevalue == mpdatarate[i]) + datarates[i] = mpdatarate[i]; + else + datarates[i] = 0xff; + RT_TRACE(_module_rtl871x_ioctl_c_, _drv_info_, ("basicrate_inx=%d\n", datarates[i])); + } + + _irqlevel_changed_(&oldirql, LOWER); + + if (rtw_setbasicrate_cmd(padapter, datarates) != _SUCCESS) + status = NDIS_STATUS_NOT_ACCEPTED; + + _irqlevel_changed_(&oldirql, RAISE); +#endif + RT_TRACE(_module_mp_, _drv_notice_, + ("-OID_RT_PRO_SET_BASIC_RATE: status=0x%08X\n", status)); + +_func_exit_; + + return status; +#else + return 0; +#endif +} +//------------------------------------------------------------------------------ +NDIS_STATUS oid_rt_pro_qry_pwrstate_hdl(struct oid_par_priv *poid_par_priv) +{ +#if 0 + PADAPTER Adapter = (PADAPTER)(poid_par_priv->adapter_context); + + NDIS_STATUS status = NDIS_STATUS_SUCCESS; + +_func_enter_; + + if (poid_par_priv->type_of_oid != QUERY_OID) + return NDIS_STATUS_NOT_ACCEPTED; + + if (poid_par_priv->information_buf_len < 8) + return NDIS_STATUS_INVALID_LENGTH; + + *poid_par_priv->bytes_rw = 8; + _rtw_memcpy(poid_par_priv->information_buf, &(Adapter->pwrctrlpriv.pwr_mode), 8); + *poid_par_priv->bytes_rw = poid_par_priv->information_buf_len; + + RT_TRACE(_module_mp_, _drv_notice_, + ("-oid_rt_pro_qry_pwrstate_hdl: pwr_mode=%d smart_ps=%d\n", + Adapter->pwrctrlpriv.pwr_mode, Adapter->pwrctrlpriv.smart_ps)); + +_func_exit_; + + return status; +#else + return 0; +#endif +} +//------------------------------------------------------------------------------ +NDIS_STATUS oid_rt_pro_set_pwrstate_hdl(struct oid_par_priv *poid_par_priv) +{ +#if 0 + PADAPTER Adapter = (PADAPTER)(poid_par_priv->adapter_context); + + NDIS_STATUS status = NDIS_STATUS_SUCCESS; + + uint pwr_mode, smart_ps; + +_func_enter_; + + RT_TRACE(_module_mp_, _drv_notice_, ("+Set OID_RT_PRO_SET_PWRSTATE\n")); + + if (poid_par_priv->type_of_oid != SET_OID) + return NDIS_STATUS_NOT_ACCEPTED; + + *poid_par_priv->bytes_rw = 0; + *poid_par_priv->bytes_needed = 8; + + if (poid_par_priv->information_buf_len < 8) + return NDIS_STATUS_INVALID_LENGTH; + + pwr_mode = *(uint *)(poid_par_priv->information_buf); + smart_ps = *(uint *)((int)poid_par_priv->information_buf + 4); + + *poid_par_priv->bytes_rw = 8; + +_func_exit_; + + return status; +#else + return 0; +#endif +} +//------------------------------------------------------------------------------ +NDIS_STATUS oid_rt_pro_h2c_set_rate_table_hdl(struct oid_par_priv *poid_par_priv) +{ +#if 0 + PADAPTER Adapter = (PADAPTER)(poid_par_priv->adapter_context); + +#ifdef PLATFORM_OS_XP + _irqL oldirql; +#endif + NDIS_STATUS status = NDIS_STATUS_SUCCESS; + + struct setratable_parm *prate_table; + u8 res; + +_func_enter_; + + if (poid_par_priv->type_of_oid != SET_OID) + return NDIS_STATUS_NOT_ACCEPTED; + + *poid_par_priv->bytes_needed = sizeof(struct setratable_parm); + if (poid_par_priv->information_buf_len < sizeof(struct setratable_parm)) + return NDIS_STATUS_INVALID_LENGTH; + + prate_table = (struct setratable_parm*)poid_par_priv->information_buf; + + _irqlevel_changed_(&oldirql, LOWER); + res = rtw_setrttbl_cmd(Adapter, prate_table); + _irqlevel_changed_(&oldirql, RAISE); + + if (res == _FAIL) + status = NDIS_STATUS_FAILURE; + +_func_exit_; + + return status; +#else + return 0; +#endif +} +//------------------------------------------------------------------------------ +NDIS_STATUS oid_rt_pro_h2c_get_rate_table_hdl(struct oid_par_priv *poid_par_priv) +{ +#if 0 + PADAPTER Adapter = (PADAPTER)(poid_par_priv->adapter_context); + + NDIS_STATUS status = NDIS_STATUS_SUCCESS; + +_func_enter_; + + if (poid_par_priv->type_of_oid != QUERY_OID) + return NDIS_STATUS_NOT_ACCEPTED; + + #if 0 + struct mp_wi_cntx *pmp_wi_cntx=&(Adapter->mppriv.wi_cntx); + u8 res=_SUCCESS; + DEBUG_INFO(("===> Set OID_RT_PRO_H2C_GET_RATE_TABLE.\n")); + + if(pmp_wi_cntx->bmp_wi_progress ==_TRUE){ + DEBUG_ERR(("\n mp workitem is progressing, not allow to set another workitem right now!!!\n")); + Status = NDIS_STATUS_NOT_ACCEPTED; + break; + } + else{ + pmp_wi_cntx->bmp_wi_progress=_TRUE; + pmp_wi_cntx->param.bcompleted=_FALSE; + pmp_wi_cntx->param.act_type=MPT_GET_RATE_TABLE; + pmp_wi_cntx->param.io_offset=0x0; + pmp_wi_cntx->param.bytes_cnt=sizeof(struct getratable_rsp); + pmp_wi_cntx->param.io_value=0xffffffff; + + res=rtw_getrttbl_cmd(Adapter,(struct getratable_rsp *)pmp_wi_cntx->param.data); + *poid_par_priv->bytes_rw = poid_par_priv->information_buf_len; + if(res != _SUCCESS) + { + Status = NDIS_STATUS_NOT_ACCEPTED; + } + } + DEBUG_INFO(("\n <=== Set OID_RT_PRO_H2C_GET_RATE_TABLE.\n")); + #endif + +_func_exit_; + + return status; +#else + return 0; +#endif +} + +//**************** oid_rtl_seg_87_12_00 section start **************** +NDIS_STATUS oid_rt_pro_encryption_ctrl_hdl(struct oid_par_priv *poid_par_priv) +{ +#if 0 + PADAPTER Adapter = (PADAPTER)(poid_par_priv->adapter_context); + struct security_priv *psecuritypriv = &Adapter->securitypriv; + + NDIS_STATUS status = NDIS_STATUS_SUCCESS; + + ENCRY_CTRL_STATE encry_mode; + + + *poid_par_priv->bytes_needed = sizeof(u8); + if (poid_par_priv->information_buf_len < *poid_par_priv->bytes_needed) + return NDIS_STATUS_INVALID_LENGTH; + + if (poid_par_priv->type_of_oid == SET_OID) + { + encry_mode = *((u8*)poid_par_priv->information_buf); + switch (encry_mode) + { + case HW_CONTROL: + #if 0 + Adapter->registrypriv.software_decrypt=_FALSE; + Adapter->registrypriv.software_encrypt=_FALSE; + #else + psecuritypriv->sw_decrypt = _FALSE; + psecuritypriv->sw_encrypt = _FALSE; + #endif + break; + case SW_CONTROL: + #if 0 + Adapter->registrypriv.software_decrypt=_TRUE; + Adapter->registrypriv.software_encrypt=_TRUE; + #else + psecuritypriv->sw_decrypt = _TRUE; + psecuritypriv->sw_encrypt = _TRUE; + #endif + break; + case HW_ENCRY_SW_DECRY: + #if 0 + Adapter->registrypriv.software_decrypt=_TRUE; + Adapter->registrypriv.software_encrypt=_FALSE; + #else + psecuritypriv->sw_decrypt = _TRUE; + psecuritypriv->sw_encrypt = _FALSE; + #endif + break; + case SW_ENCRY_HW_DECRY: + #if 0 + Adapter->registrypriv.software_decrypt=_FALSE; + Adapter->registrypriv.software_encrypt=_TRUE; + #else + psecuritypriv->sw_decrypt = _FALSE; + psecuritypriv->sw_encrypt = _TRUE; + #endif + break; + } + + RT_TRACE(_module_rtl871x_ioctl_c_, _drv_notice_, + ("-oid_rt_pro_encryption_ctrl_hdl: SET encry_mode=0x%x sw_encrypt=0x%x sw_decrypt=0x%x\n", + encry_mode, psecuritypriv->sw_encrypt, psecuritypriv->sw_decrypt)); + } + else { + #if 0 + if (Adapter->registrypriv.software_encrypt == _FALSE) { + if (Adapter->registrypriv.software_decrypt == _FALSE) + encry_mode = HW_CONTROL; + else + encry_mode = HW_ENCRY_SW_DECRY; + } + else { + if (Adapter->registrypriv.software_decrypt == _FALSE) + encry_mode = SW_ENCRY_HW_DECRY; + else + encry_mode = SW_CONTROL; + } + #else + + if ((psecuritypriv->sw_encrypt == _FALSE) && (psecuritypriv->sw_decrypt == _FALSE)) + encry_mode = HW_CONTROL; + else if ((psecuritypriv->sw_encrypt == _FALSE) && (psecuritypriv->sw_decrypt == _TRUE)) + encry_mode = HW_ENCRY_SW_DECRY; + else if ((psecuritypriv->sw_encrypt == _TRUE) && (psecuritypriv->sw_decrypt == _FALSE)) + encry_mode = SW_ENCRY_HW_DECRY; + else if ((psecuritypriv->sw_encrypt == _TRUE) && (psecuritypriv->sw_decrypt == _TRUE)) + encry_mode = SW_CONTROL; + + #endif + + *(u8*)poid_par_priv->information_buf = encry_mode; + *poid_par_priv->bytes_rw = poid_par_priv->information_buf_len; + + RT_TRACE(_module_mp_, _drv_notice_, + ("-oid_rt_pro_encryption_ctrl_hdl: QUERY encry_mode=0x%x\n", + encry_mode)); + } + + return status; +#else + return 0; +#endif +} +//------------------------------------------------------------------------------ +NDIS_STATUS oid_rt_pro_add_sta_info_hdl(struct oid_par_priv *poid_par_priv) +{ +#if 0 + PADAPTER Adapter = (PADAPTER)(poid_par_priv->adapter_context); + +#ifdef PLATFORM_OS_XP + _irqL oldirql; +#endif + NDIS_STATUS status = NDIS_STATUS_SUCCESS; + + struct sta_info *psta = NULL; + UCHAR *macaddr; + + + if (poid_par_priv->type_of_oid != SET_OID) + return NDIS_STATUS_NOT_ACCEPTED; + + *poid_par_priv->bytes_needed = ETH_ALEN; + if (poid_par_priv->information_buf_len < *poid_par_priv->bytes_needed) + return NDIS_STATUS_INVALID_LENGTH; + + macaddr = (UCHAR *) poid_par_priv->information_buf ; + + RT_TRACE(_module_rtl871x_ioctl_c_,_drv_notice_, + ("OID_RT_PRO_ADD_STA_INFO: addr="MAC_FMT"\n", MAC_ARG(macaddr) )); + + _irqlevel_changed_(&oldirql, LOWER); + + psta = rtw_get_stainfo(&Adapter->stapriv, macaddr); + + if (psta == NULL) { // the sta have been in sta_info_queue => do nothing + psta = rtw_alloc_stainfo(&Adapter->stapriv, macaddr); + + if (psta == NULL) { + RT_TRACE(_module_rtl871x_ioctl_c_,_drv_err_,("Can't alloc sta_info when OID_RT_PRO_ADD_STA_INFO\n")); + status = NDIS_STATUS_FAILURE; + } + } else { //(between drv has received this event before and fw have not yet to set key to CAM_ENTRY) + RT_TRACE(_module_rtl871x_ioctl_c_, _drv_err_, + ("Error: OID_RT_PRO_ADD_STA_INFO: sta has been in sta_hash_queue \n")); + } + + _irqlevel_changed_(&oldirql, RAISE); + + return status; +#else + return 0; +#endif +} +//------------------------------------------------------------------------------ +NDIS_STATUS oid_rt_pro_dele_sta_info_hdl(struct oid_par_priv *poid_par_priv) +{ +#if 0 + PADAPTER Adapter = (PADAPTER)(poid_par_priv->adapter_context); + +#ifdef PLATFORM_OS_XP + _irqL oldirql; +#endif + NDIS_STATUS status = NDIS_STATUS_SUCCESS; + + struct sta_info *psta = NULL; + UCHAR *macaddr; + + + if (poid_par_priv->type_of_oid != SET_OID) + return NDIS_STATUS_NOT_ACCEPTED; + + *poid_par_priv->bytes_needed = ETH_ALEN; + if (poid_par_priv->information_buf_len < *poid_par_priv->bytes_needed) + return NDIS_STATUS_INVALID_LENGTH; + + macaddr = (UCHAR *) poid_par_priv->information_buf ; + RT_TRACE(_module_rtl871x_ioctl_c_,_drv_notice_, + ("+OID_RT_PRO_ADD_STA_INFO: addr="MAC_FMT"\n", MAC_ARG(macaddr) )); + + psta = rtw_get_stainfo(&Adapter->stapriv, macaddr); + if (psta != NULL) { + _enter_critical(&(Adapter->stapriv.sta_hash_lock), &irqL); + rtw_free_stainfo(Adapter, psta); + _exit_critical(&(Adapter->stapriv.sta_hash_lock), &irqL); + } + + return status; +#else + return 0; +#endif +} +//------------------------------------------------------------------------------ +#if 0 +#include +static u32 mp_query_drv_var(_adapter *padapter, u8 offset, u32 var) +{ +#ifdef CONFIG_SDIO_HCI + + if (offset == 1) { + u16 tmp_blk_num; + tmp_blk_num = rtw_read16(padapter, SDIO_RX0_RDYBLK_NUM); + RT_TRACE(_module_mp_, _drv_err_, ("Query Information, mp_query_drv_var SDIO_RX0_RDYBLK_NUM=0x%x adapter_to_dvobj(padapter)->rxblknum=0x%x\n", tmp_blk_num, adapter_to_dvobj(padapter)->rxblknum)); + if (adapter_to_dvobj(padapter)->rxblknum != tmp_blk_num) { + RT_TRACE(_module_mp_,_drv_err_, ("Query Information, mp_query_drv_var call recv rx\n")); + // sd_recv_rxfifo(padapter); + } + } + +#if 0 + if(offset <=100){ //For setting data rate and query data rate + if(offset==100){ //For query data rate + RT_TRACE(_module_mp_, _drv_emerg_, ("\n mp_query_drv_var: offset(%d): query rate=0x%.2x \n",offset,padapter->registrypriv.tx_rate)); + var=padapter->registrypriv.tx_rate; + + } + else if(offset<0x1d){ //For setting data rate + padapter->registrypriv.tx_rate=offset; + var=padapter->registrypriv.tx_rate; + padapter->registrypriv.use_rate=_TRUE; + RT_TRACE(_module_mp_, _drv_emerg_, ("\n mp_query_drv_var: offset(%d): set rate=0x%.2x \n",offset,padapter->registrypriv.tx_rate)); + } + else{ //not use the data rate + padapter->registrypriv.use_rate=_FALSE; + RT_TRACE(_module_mp_, _drv_emerg_, ("\n mp_query_drv_var: offset(%d) out of rate range\n",offset)); + } + } + else if (offset<=110){ //for setting debug level + RT_TRACE(_module_mp_, _drv_emerg_, (" mp_query_drv_var: offset(%d) for set debug level\n",offset)); + if(offset==110){ //For query data rate + RT_TRACE(_module_mp_, _drv_emerg_, (" mp_query_drv_var: offset(%d): query dbg level=0x%.2x \n",offset,padapter->registrypriv.dbg_level)); + padapter->registrypriv.dbg_level=GlobalDebugLevel; + var=padapter->registrypriv.dbg_level; + } + else if(offset<110 && offset>100){ + RT_TRACE(_module_mp_, _drv_emerg_, (" mp_query_drv_var: offset(%d): set dbg level=0x%.2x \n",offset,offset-100)); + padapter->registrypriv.dbg_level=GlobalDebugLevel=offset-100; + var=padapter->registrypriv.dbg_level; + RT_TRACE(_module_mp_, _drv_emerg_, (" mp_query_drv_var(_drv_emerg_): offset(%d): set dbg level=0x%.2x \n",offset,GlobalDebugLevel)); + RT_TRACE(_module_mp_, _drv_alert_, (" mp_query_drv_var(_drv_alert_): offset(%d): set dbg level=0x%.2x \n",offset,GlobalDebugLevel)); + RT_TRACE(_module_mp_, _drv_crit_, (" mp_query_drv_var(_drv_crit_): offset(%d): set dbg level=0x%.2x \n",offset,GlobalDebugLevel)); + RT_TRACE(_module_mp_, _drv_err_, (" mp_query_drv_var(_drv_err_): offset(%d): set dbg level=0x%.2x \n",offset,GlobalDebugLevel)); + RT_TRACE(_module_mp_, _drv_warning_, (" mp_query_drv_var(_drv_warning_): offset(%d): set dbg level=0x%.2x \n",offset,GlobalDebugLevel)); + RT_TRACE(_module_mp_, _drv_notice_, (" mp_query_drv_var(_drv_notice_): offset(%d): set dbg level=0x%.2x \n",offset,GlobalDebugLevel)); + RT_TRACE(_module_mp_, _drv_info_, (" mp_query_drv_var(_drv_info_): offset(%d): set dbg level=0x%.2x \n",offset,GlobalDebugLevel)); + RT_TRACE(_module_mp_, _drv_debug_, (" mp_query_drv_var(_drv_debug_): offset(%d): set dbg level=0x%.2x \n",offset,GlobalDebugLevel)); + + } + } + else if(offset >110 &&offset <116){ + if(115==offset){ + RT_TRACE(_module_mp_, _drv_emerg_, (" mp_query_drv_var(_drv_emerg_): offset(%d): query TRX access type: [tx_block_mode=%x,rx_block_mode=%x]\n",\ + offset, adapter_to_dvobj(padapter)->tx_block_mode, adapter_to_dvobj(padapter)->rx_block_mode)); + } + else { + switch(offset){ + case 111: + adapter_to_dvobj(padapter)->tx_block_mode=1; + adapter_to_dvobj(padapter)->rx_block_mode=1; + RT_TRACE(_module_mp_, _drv_emerg_, \ + (" mp_query_drv_var(_drv_emerg_): offset(%d): SET TRX access type:(TX block/RX block) [tx_block_mode=%x,rx_block_mode=%x]\n",\ + offset, adapter_to_dvobj(padapter)->tx_block_mode, adapter_to_dvobj(padapter)->rx_block_mode)); + break; + case 112: + adapter_to_dvobj(padapter)->tx_block_mode=1; + adapter_to_dvobj(padapter)->rx_block_mode=0; + RT_TRACE(_module_mp_, _drv_emerg_, \ + (" mp_query_drv_var(_drv_emerg_): offset(%d): SET TRX access type:(TX block/RX byte) [tx_block_mode=%x,rx_block_mode=%x]\n",\ + offset, adapter_to_dvobj(padapter)->tx_block_mode, adapter_to_dvobj(padapter)->rx_block_mode)); + break; + case 113: + adapter_to_dvobj(padapter)->tx_block_mode=0; + adapter_to_dvobj(padapter)->rx_block_mode=1; + RT_TRACE(_module_mp_, _drv_emerg_, \ + (" mp_query_drv_var(_drv_emerg_): offset(%d): SET TRX access type:(TX byte/RX block) [tx_block_mode=%x,rx_block_mode=%x]\n",\ + offset, adapter_to_dvobj(padapter)->tx_block_mode, adapter_to_dvobj(padapter)->rx_block_mode)); + break; + case 114: + adapter_to_dvobj(padapter)->tx_block_mode=0; + adapter_to_dvobj(padapter)->rx_block_mode=0; + RT_TRACE(_module_mp_, _drv_emerg_, \ + (" mp_query_drv_var(_drv_emerg_): offset(%d): SET TRX access type:(TX byte/RX byte) [tx_block_mode=%x,rx_block_mode=%x]\n",\ + offset, adapter_to_dvobj(padapter)->tx_block_mode, adapter_to_dvobj(padapter)->rx_block_mode)); + break; + default : + break; + + } + + } + + } + else if(offset>=127){ + u64 prnt_dbg_comp; + u8 chg_idx; + u64 tmp_dbg_comp; + chg_idx=offset-0x80; + tmp_dbg_comp=BIT(chg_idx); + prnt_dbg_comp=padapter->registrypriv.dbg_component= GlobalDebugComponents; + RT_TRACE(_module_mp_, _drv_emerg_, (" 1: mp_query_drv_var: offset(%d;0x%x):for dbg conpoment prnt_dbg_comp=0x%.16x GlobalDebugComponents=0x%.16x padapter->registrypriv.dbg_component=0x%.16x\n",offset,offset,prnt_dbg_comp,GlobalDebugComponents,padapter->registrypriv.dbg_component)); + if(offset==127){ + // prnt_dbg_comp=padapter->registrypriv.dbg_component= GlobalDebugComponents; + var=(u32)(padapter->registrypriv.dbg_component); + RT_TRACE(0xffffffff, _drv_emerg_, ("2: mp_query_drv_var: offset(%d;0x%x):for query dbg conpoment=0x%x(l) 0x%x(h) GlobalDebugComponents=0x%x(l) 0x%x(h) \n",offset,offset,padapter->registrypriv.dbg_component,prnt_dbg_comp)); + prnt_dbg_comp=GlobalDebugComponents; + RT_TRACE(0xffffffff, _drv_emerg_, ("2-1: mp_query_drv_var: offset(%d;0x%x):for query dbg conpoment=0x%x(l) 0x%x(h) GlobalDebugComponents=0x%x(l) 0x%x(h)\n",offset,offset,padapter->registrypriv.dbg_component,prnt_dbg_comp)); + prnt_dbg_comp=GlobalDebugComponents=padapter->registrypriv.dbg_component; + RT_TRACE(0xffffffff, _drv_emerg_, ("2-2: mp_query_drv_var: offset(%d;0x%x):for query dbg conpoment=0x%x(l) 0x%x(h) GlobalDebugComponents=0x%x(l) 0x%x(h)\n",offset,offset,padapter->registrypriv.dbg_component,prnt_dbg_comp)); + + } + else{ + RT_TRACE(0xffffffff, _drv_emerg_, ("3: mp_query_drv_var: offset(%d;0x%x):for query dbg conpoment=0x%x(l) 0x%x(h) GlobalDebugComponents=0x%x(l) 0x%x(h) chg_idx=%d\n",offset,offset,padapter->registrypriv.dbg_component,prnt_dbg_comp,chg_idx)); + prnt_dbg_comp=GlobalDebugComponents; + RT_TRACE(0xffffffff, _drv_emerg_,("3-1: mp_query_drv_var: offset(%d;0x%x):for query dbg conpoment=0x%x(l) 0x%x(h) GlobalDebugComponents=0x%x(l) 0x%x(h) chg_idx=%d\n",offset,offset,padapter->registrypriv.dbg_component,prnt_dbg_comp,chg_idx));// ("3-1: mp_query_drv_var: offset(%d;0x%x):before set dbg conpoment=0x%x chg_idx=%d or0x%x BIT(chg_idx[%d]=0x%x)\n",offset,offset,prnt_dbg_comp,chg_idx,chg_idx,(chg_idx),tmp_dbg_comp) + prnt_dbg_comp=GlobalDebugComponents=padapter->registrypriv.dbg_component; + RT_TRACE(0xffffffff, _drv_emerg_, ("3-2: mp_query_drv_var: offset(%d;0x%x):for query dbg conpoment=0x%x(l) 0x%x(h) GlobalDebugComponents=0x%x(l) 0x%x(h)\n",offset,offset,padapter->registrypriv.dbg_component,prnt_dbg_comp)); + + if(GlobalDebugComponents&tmp_dbg_comp){ + //this bit is already set, now clear it + GlobalDebugComponents=GlobalDebugComponents&(~tmp_dbg_comp); + } + else{ + //this bit is not set, now set it. + GlobalDebugComponents =GlobalDebugComponents|tmp_dbg_comp; + } + RT_TRACE(0xffffffff, _drv_emerg_, ("4: mp_query_drv_var: offset(%d;0x%x):before set dbg conpoment tmp_dbg_comp=0x%x GlobalDebugComponents=0x%x(l) 0x%x(h)",offset,offset,tmp_dbg_comp,prnt_dbg_comp)); + prnt_dbg_comp=GlobalDebugComponents; + RT_TRACE(0xffffffff, _drv_emerg_, ("4-1: mp_query_drv_var: offset(%d;0x%x):before set dbg conpoment tmp_dbg_comp=0x%x GlobalDebugComponents=0x%x(l) 0x%x(h)",offset,offset,tmp_dbg_comp,prnt_dbg_comp)); + + RT_TRACE(_module_rtl871x_xmit_c_, _drv_emerg_, ("0: mp_query_drv_var(_module_rtl871x_xmit_c_:0): offset(%d;0x%x):before set dbg conpoment=0x%x(l) 0x%x(h)\n",offset,offset,prnt_dbg_comp)); + RT_TRACE(_module_xmit_osdep_c_, _drv_emerg_, ("1: mp_query_drv_var(_module_xmit_osdep_c_:1): offset(%d;0x%x):before set dbg conpoment=0x%x(l) 0x%x(h)\n",offset,offset,GlobalDebugComponents)); + RT_TRACE(_module_rtl871x_recv_c_, _drv_emerg_, ("2: mp_query_drv_var(_module_rtl871x_recv_c_:2): offset(%d;0x%x):before set dbg conpoment=0x%x(l) 0x%x(h)\n",offset,offset,GlobalDebugComponents)); + RT_TRACE(_module_recv_osdep_c_, _drv_emerg_, ("3: mp_query_drv_var(_module_recv_osdep_c_:3): offset(%d;0x%x):before set dbg conpoment=0x%x(l) 0x%x(h)\n",offset,offset,GlobalDebugComponents)); + RT_TRACE(_module_rtl871x_mlme_c_, _drv_emerg_, ("4: mp_query_drv_var(_module_rtl871x_mlme_c_:4): offset(%d;0x%x):before set dbg conpoment=0x%x(l) 0x%x(h)\n",offset,offset,GlobalDebugComponents)); + RT_TRACE(_module_mlme_osdep_c_, _drv_emerg_, (" 5:mp_query_drv_var(_module_mlme_osdep_c_:5): offset(%d;0x%x):before set dbg conpoment=0x%x(l) 0x%x(h)\n",offset,offset,GlobalDebugComponents)); + RT_TRACE(_module_rtl871x_sta_mgt_c_, _drv_emerg_, ("6: mp_query_drv_var(_module_rtl871x_sta_mgt_c_:6): offset(%d;0x%x):before set dbg conpoment=0x%x(l) 0x%x(h)\n",offset,offset,GlobalDebugComponents)); + RT_TRACE(_module_rtl871x_cmd_c_, _drv_emerg_, ("7: mp_query_drv_var(_module_rtl871x_cmd_c_:7): offset(%d;0x%x):before set dbg conpoment=0x%x(l) 0x%x(h)\n",offset,offset,GlobalDebugComponents)); + RT_TRACE(_module_cmd_osdep_c_, _drv_emerg_, ("8: mp_query_drv_var(_module_cmd_osdep_c_:8): offset(%d;0x%x):before set dbg conpoment=0x%x(l) 0x%x(h)\n",offset,offset,GlobalDebugComponents)); + RT_TRACE(_module_rtl871x_io_c_, _drv_emerg_, ("9: mp_query_drv_var(_module_rtl871x_io_c_:9): offset(%d;0x%x):before set dbg conpoment=0x%x(l) 0x%x(h)\n",offset,offset,GlobalDebugComponents)); + RT_TRACE(_module_io_osdep_c_, _drv_emerg_, ("10: mp_query_drv_var(_module_io_osdep_c_:10): offset(%d;0x%x):before set dbg conpoment=0x%x(l) 0x%x(h)\n",offset,offset,GlobalDebugComponents)); + RT_TRACE(_module_os_intfs_c_, _drv_emerg_, ("11: mp_query_drv_var(_module_os_intfs_c_:11): offset(%d;0x%x):before set dbg conpoment=0x%x(l) 0x%x(h)\n",offset,offset,GlobalDebugComponents)); + RT_TRACE(_module_rtl871x_security_c_, _drv_emerg_, ("12: mp_query_drv_var(_module_rtl871x_security_c_:12): offset(%d;0x%x):before set dbg conpoment=0x%x(l) 0x%x(h)\n",offset,offset,GlobalDebugComponents)); + RT_TRACE(_module_rtl871x_eeprom_c_, _drv_emerg_, ("13: mp_query_drv_var(_module_rtl871x_eeprom_c_:13): offset(%d;0x%x):before set dbg conpoment=0x%x(l) 0x%x(h)\n",offset,offset,GlobalDebugComponents)); + RT_TRACE(_module_hal_init_c_, _drv_emerg_, ("14: mp_query_drv_var(_module_hal_init_c_:14): offset(%d;0x%x):before set dbg conpoment=0x%x(l) 0x%x(h)\n",offset,offset,GlobalDebugComponents)); + RT_TRACE(_module_hci_hal_init_c_, _drv_emerg_, ("15: mp_query_drv_var(_module_hci_hal_init_c_:15): offset(%d;0x%x):before set dbg conpoment=0x%x(l) 0x%x(h)\n",offset,offset,GlobalDebugComponents)); + RT_TRACE(_module_rtl871x_ioctl_c_, _drv_emerg_, ("16: mp_query_drv_var(_module_rtl871x_ioctl_c_:16): offset(%d;0x%x):before set dbg conpoment=0x%x(l) 0x%x(h)\n",offset,offset,GlobalDebugComponents)); + RT_TRACE(_module_rtl871x_ioctl_set_c_, _drv_emerg_, ("17: mp_query_drv_var(_module_rtl871x_ioctl_set_c_:17): offset(%d;0x%x):before set dbg conpoment=0x%x(l) 0x%x(h)\n",offset,offset,GlobalDebugComponents)); + RT_TRACE(_module_rtl871x_ioctl_query_c_, _drv_emerg_, ("18: mp_query_drv_var(_module_rtl871x_ioctl_query_c_:18): offset(%d;0x%x):before set dbg conpoment=0x%x(l) 0x%x(h)\n",offset,offset,GlobalDebugComponents)); + RT_TRACE(_module_rtl871x_pwrctrl_c_, _drv_emerg_, ("19: mp_query_drv_var(_module_rtl871x_pwrctrl_c_:19): offset(%d;0x%x):before set dbg conpoment=0x%x(l) 0x%x(h)\n",offset,offset,GlobalDebugComponents)); + RT_TRACE(_module_hci_intfs_c_, _drv_emerg_, ("20: mp_query_drv_var(_module_hci_intfs_c_:20): offset(%d;0x%x):before set dbg conpoment=0x%x(l) 0x%x(h)\n",offset,offset,GlobalDebugComponents)); + RT_TRACE(_module_hci_ops_c_, _drv_emerg_, ("21: mp_query_drv_var(_module_hci_ops_c_:21): offset(%d;0x%x):before set dbg conpoment=0x%x(l) 0x%x(h)\n",offset,offset,GlobalDebugComponents)); + RT_TRACE(_module_osdep_service_c_, _drv_emerg_, ("22: mp_query_drv_var(_module_osdep_service_c_:22): offset(%d;0x%x):before set dbg conpoment=0x%x(l) 0x%x(h)\n",offset,offset,GlobalDebugComponents)); + RT_TRACE(_module_mp_, _drv_emerg_, ("23: mp_query_drv_var(_module_mp_:23): offset(%d;0x%x):before set dbg conpoment=0x%x(l) 0x%x(h)\n",offset,offset,GlobalDebugComponents)); + RT_TRACE(_module_hci_ops_os_c_, _drv_emerg_, ("24: mp_query_drv_var(_module_hci_ops_os_c_:24): offset(%d;0x%x):before set dbg conpoment=0x%x(l) 0x%x(h)\n",offset,offset,GlobalDebugComponents)); + var=(u32)(GlobalDebugComponents); + //GlobalDebugComponents=padapter->registrypriv.dbg_component; + RT_TRACE(0xffffffff, _drv_emerg_, (" ==mp_query_drv_var(_module_mp_): offset(%d;0x%x):before set dbg conpoment=0x%x(l) 0x%x(h)\n",offset,offset,GlobalDebugComponents)); + + } + } + else{ + RT_TRACE(_module_mp_, _drv_emerg_, ("\n mp_query_drv_var: offset(%d) >110\n",offset)); + } +#endif +#endif + + return var; +} +#endif + +NDIS_STATUS oid_rt_pro_query_dr_variable_hdl(struct oid_par_priv *poid_par_priv) +{ +#if 0 + PADAPTER Adapter = (PADAPTER)(poid_par_priv->adapter_context); + +#ifdef PLATFORM_OS_XP + _irqL oldirql; +#endif + NDIS_STATUS status = NDIS_STATUS_SUCCESS; + + DR_VARIABLE_STRUCT *pdrv_var; + + + if (poid_par_priv->type_of_oid != QUERY_OID) + return NDIS_STATUS_NOT_ACCEPTED; + + *poid_par_priv->bytes_needed = sizeof(DR_VARIABLE_STRUCT); + if (poid_par_priv->information_buf_len < *poid_par_priv->bytes_needed) + return NDIS_STATUS_INVALID_LENGTH; + + RT_TRACE(_module_mp_, _drv_notice_, ("+Query Information, OID_RT_PRO_QUERY_DR_VARIABLE\n")); + + pdrv_var = (struct _DR_VARIABLE_STRUCT_ *)poid_par_priv->information_buf; + + _irqlevel_changed_(&oldirql, LOWER); + pdrv_var->variable = mp_query_drv_var(Adapter, pdrv_var->offset, pdrv_var->variable); + _irqlevel_changed_(&oldirql, RAISE); + + *poid_par_priv->bytes_rw = poid_par_priv->information_buf_len; + + RT_TRACE(_module_mp_, _drv_notice_, + ("-oid_rt_pro_query_dr_variable_hdl: offset=0x%x valule=0x%x\n", + pdrv_var->offset, pdrv_var->variable)); + + return status; +#else + return 0; +#endif +} +//------------------------------------------------------------------------------ +NDIS_STATUS oid_rt_pro_rx_packet_type_hdl(struct oid_par_priv *poid_par_priv) +{ +#if 0 + PADAPTER Adapter = (PADAPTER)(poid_par_priv->adapter_context); + + NDIS_STATUS status = NDIS_STATUS_SUCCESS; + + RT_TRACE(_module_mp_, _drv_err_, ("oid_rt_pro_rx_packet_type_hdl...................\n")); + + if (poid_par_priv->information_buf_len < sizeof (UCHAR)) { + status = NDIS_STATUS_INVALID_LENGTH; + *poid_par_priv->bytes_needed = sizeof(UCHAR); + return status; + } + + if (poid_par_priv->type_of_oid == SET_OID) { + Adapter->mppriv.rx_with_status = *(UCHAR *) poid_par_priv->information_buf; + RT_TRACE(_module_rtl871x_ioctl_c_,_drv_err_, ("Query Information, OID_RT_PRO_RX_PACKET_TYPE:%d \n",\ + Adapter->mppriv.rx_with_status)); + + //*(u32 *)&Adapter->eeprompriv.mac_addr[0]=rtw_read32(Adapter, 0x10250050); + //*(u16 *)&Adapter->eeprompriv.mac_addr[4]=rtw_read16(Adapter, 0x10250054); + RT_TRACE(_module_rtl871x_ioctl_c_,_drv_err_,("MAC addr=0x%x:0x%x:0x%x:0x%x:0x%x:0x%x \n", + Adapter->eeprompriv.mac_addr[0],Adapter->eeprompriv.mac_addr[1],Adapter->eeprompriv.mac_addr[2],\ + Adapter->eeprompriv.mac_addr[3],Adapter->eeprompriv.mac_addr[4],Adapter->eeprompriv.mac_addr[5])); + + } + else { + *(UCHAR *) poid_par_priv->information_buf = Adapter->mppriv.rx_with_status; + *poid_par_priv->bytes_rw = poid_par_priv->information_buf_len; + + RT_TRACE(_module_rtl871x_ioctl_c_,_drv_err_, ("Query Information, OID_RT_PRO_RX_PACKET_TYPE:%d \n", \ + Adapter->mppriv.rx_with_status)); + + //*(u32 *)&Adapter->eeprompriv.mac_addr[0]=rtw_read32(Adapter, 0x10250050); + //*(u16 *)&Adapter->eeprompriv.mac_addr[4]=rtw_read16(Adapter, 0x10250054); + RT_TRACE(_module_rtl871x_ioctl_c_,_drv_err_,("MAC addr=0x%x:0x%x:0x%x:0x%x:0x%x:0x%x \n", + Adapter->eeprompriv.mac_addr[0],Adapter->eeprompriv.mac_addr[1],Adapter->eeprompriv.mac_addr[2],\ + Adapter->eeprompriv.mac_addr[3],Adapter->eeprompriv.mac_addr[4],Adapter->eeprompriv.mac_addr[5])); + } +#endif + + return NDIS_STATUS_SUCCESS; +} +//------------------------------------------------------------------------------ +NDIS_STATUS oid_rt_pro_read_efuse_hdl(struct oid_par_priv *poid_par_priv) +{ +#ifdef PLATFORM_OS_XP + _irqL oldirql; +#endif + PEFUSE_ACCESS_STRUCT pefuse; + u8 *data; + u16 addr = 0, cnts = 0, max_available_size = 0; + NDIS_STATUS status = NDIS_STATUS_SUCCESS; + PADAPTER Adapter = (PADAPTER)(poid_par_priv->adapter_context); + +_func_enter_; + + if (poid_par_priv->type_of_oid != QUERY_OID) + return NDIS_STATUS_NOT_ACCEPTED; + + if (poid_par_priv->information_buf_len < sizeof(EFUSE_ACCESS_STRUCT)) + return NDIS_STATUS_INVALID_LENGTH; + + pefuse = (PEFUSE_ACCESS_STRUCT)poid_par_priv->information_buf; + addr = pefuse->start_addr; + cnts = pefuse->cnts; + data = pefuse->data; + + RT_TRACE(_module_mp_, _drv_notice_, + ("+oid_rt_pro_read_efuse_hd: buf_len=%ld addr=%d cnts=%d\n", + poid_par_priv->information_buf_len, addr, cnts)); + + EFUSE_GetEfuseDefinition(Adapter, EFUSE_WIFI, TYPE_AVAILABLE_EFUSE_BYTES_TOTAL, (PVOID)&max_available_size, _FALSE); + + if ((addr + cnts) > max_available_size) { + RT_TRACE(_module_mp_, _drv_err_, ("!oid_rt_pro_read_efuse_hdl: parameter error!\n")); + return NDIS_STATUS_NOT_ACCEPTED; + } + + _irqlevel_changed_(&oldirql, LOWER); + if (rtw_efuse_access(Adapter, _FALSE, addr, cnts, data) == _FAIL) { + RT_TRACE(_module_mp_, _drv_err_, ("!oid_rt_pro_read_efuse_hdl: rtw_efuse_access FAIL!\n")); + status = NDIS_STATUS_FAILURE; + } else + *poid_par_priv->bytes_rw = poid_par_priv->information_buf_len; + _irqlevel_changed_(&oldirql, RAISE); + +_func_exit_; + + return status; +} +//------------------------------------------------------------------------------ +NDIS_STATUS oid_rt_pro_write_efuse_hdl(struct oid_par_priv *poid_par_priv) +{ +#ifdef PLATFORM_OS_XP + _irqL oldirql; +#endif + PEFUSE_ACCESS_STRUCT pefuse; + u8 *data; + u16 addr = 0, cnts = 0, max_available_size = 0; + NDIS_STATUS status = NDIS_STATUS_SUCCESS; + PADAPTER Adapter = (PADAPTER)(poid_par_priv->adapter_context); + + +_func_enter_; + + if (poid_par_priv->type_of_oid != SET_OID) + return NDIS_STATUS_NOT_ACCEPTED; + + pefuse = (PEFUSE_ACCESS_STRUCT)poid_par_priv->information_buf; + addr = pefuse->start_addr; + cnts = pefuse->cnts; + data = pefuse->data; + + RT_TRACE(_module_mp_, _drv_notice_, + ("+oid_rt_pro_write_efuse_hdl: buf_len=%ld addr=0x%04x cnts=%d\n", + poid_par_priv->information_buf_len, addr, cnts)); + + EFUSE_GetEfuseDefinition(Adapter, EFUSE_WIFI, TYPE_AVAILABLE_EFUSE_BYTES_TOTAL, (PVOID)&max_available_size, _FALSE); + + if ((addr + cnts) > max_available_size) { + RT_TRACE(_module_mp_, _drv_err_, ("!oid_rt_pro_write_efuse_hdl: parameter error")); + return NDIS_STATUS_NOT_ACCEPTED; + } + + _irqlevel_changed_(&oldirql, LOWER); + if (rtw_efuse_access(Adapter, _TRUE, addr, cnts, data) == _FAIL) + status = NDIS_STATUS_FAILURE; + _irqlevel_changed_(&oldirql, RAISE); + +_func_exit_; + + return status; +} +//------------------------------------------------------------------------------ +NDIS_STATUS oid_rt_pro_rw_efuse_pgpkt_hdl(struct oid_par_priv *poid_par_priv) +{ +#ifdef PLATFORM_OS_XP + _irqL oldirql; +#endif + PPGPKT_STRUCT ppgpkt; + NDIS_STATUS status = NDIS_STATUS_SUCCESS; + PADAPTER Adapter = (PADAPTER)(poid_par_priv->adapter_context); + +_func_enter_; + +// RT_TRACE(_module_mp_, _drv_info_, ("+oid_rt_pro_rw_efuse_pgpkt_hdl\n")); + + *poid_par_priv->bytes_rw = 0; + + if (poid_par_priv->information_buf_len < sizeof(PGPKT_STRUCT)) + return NDIS_STATUS_INVALID_LENGTH; + + ppgpkt = (PPGPKT_STRUCT)poid_par_priv->information_buf; + + _irqlevel_changed_(&oldirql, LOWER); + + if (poid_par_priv->type_of_oid == QUERY_OID) + { + RT_TRACE(_module_mp_, _drv_notice_, + ("oid_rt_pro_rw_efuse_pgpkt_hdl: Read offset=0x%x\n",\ + ppgpkt->offset)); + + Efuse_PowerSwitch(Adapter, _FALSE, _TRUE); + if (Efuse_PgPacketRead(Adapter, ppgpkt->offset, ppgpkt->data, _FALSE) == _TRUE) + *poid_par_priv->bytes_rw = poid_par_priv->information_buf_len; + else + status = NDIS_STATUS_FAILURE; + Efuse_PowerSwitch(Adapter, _FALSE, _FALSE); + } else { + RT_TRACE(_module_mp_, _drv_notice_, + ("oid_rt_pro_rw_efuse_pgpkt_hdl: Write offset=0x%x word_en=0x%x\n",\ + ppgpkt->offset, ppgpkt->word_en)); + + Efuse_PowerSwitch(Adapter, _TRUE, _TRUE); + if (Efuse_PgPacketWrite(Adapter, ppgpkt->offset, ppgpkt->word_en, ppgpkt->data, _FALSE) == _TRUE) + *poid_par_priv->bytes_rw = poid_par_priv->information_buf_len; + else + status = NDIS_STATUS_FAILURE; + Efuse_PowerSwitch(Adapter, _TRUE, _FALSE); + } + + _irqlevel_changed_(&oldirql, RAISE); + + RT_TRACE(_module_mp_, _drv_info_, + ("-oid_rt_pro_rw_efuse_pgpkt_hdl: status=0x%08X\n", status)); + +_func_exit_; + + return status; +} +//------------------------------------------------------------------------------ +NDIS_STATUS oid_rt_get_efuse_current_size_hdl(struct oid_par_priv *poid_par_priv) +{ +#ifdef PLATFORM_OS_XP + _irqL oldirql; +#endif + u16 size; + u8 ret; + NDIS_STATUS status = NDIS_STATUS_SUCCESS; + PADAPTER Adapter = (PADAPTER)(poid_par_priv->adapter_context); + +_func_enter_; + + if (poid_par_priv->type_of_oid != QUERY_OID) + return NDIS_STATUS_NOT_ACCEPTED; + + if (poid_par_priv->information_buf_len information_buf = size; + *poid_par_priv->bytes_rw = poid_par_priv->information_buf_len; + } else + status = NDIS_STATUS_FAILURE; + +_func_exit_; + + return status; +} +//------------------------------------------------------------------------------ +NDIS_STATUS oid_rt_get_efuse_max_size_hdl(struct oid_par_priv *poid_par_priv) +{ + NDIS_STATUS status = NDIS_STATUS_SUCCESS; + PADAPTER Adapter = (PADAPTER)(poid_par_priv->adapter_context); + +_func_enter_; + + if (poid_par_priv->type_of_oid != QUERY_OID) + return NDIS_STATUS_NOT_ACCEPTED; + + if (poid_par_priv->information_buf_len < sizeof(u32)) + return NDIS_STATUS_INVALID_LENGTH; + + *(u32*)poid_par_priv->information_buf = efuse_GetMaxSize(Adapter); + *poid_par_priv->bytes_rw = poid_par_priv->information_buf_len; + + RT_TRACE(_module_mp_, _drv_info_, + ("-oid_rt_get_efuse_max_size_hdl: size=%d status=0x%08X\n", + *(int*)poid_par_priv->information_buf, status)); + +_func_exit_; + + return status; +} +//------------------------------------------------------------------------------ +NDIS_STATUS oid_rt_pro_efuse_hdl(struct oid_par_priv *poid_par_priv) +{ + NDIS_STATUS status; + +_func_enter_; + + RT_TRACE(_module_mp_, _drv_info_, ("+oid_rt_pro_efuse_hdl\n")); + + if (poid_par_priv->type_of_oid == QUERY_OID) + status = oid_rt_pro_read_efuse_hdl(poid_par_priv); + else + status = oid_rt_pro_write_efuse_hdl(poid_par_priv); + + RT_TRACE(_module_mp_, _drv_info_, ("-oid_rt_pro_efuse_hdl: status=0x%08X\n", status)); + +_func_exit_; + + return status; +} +//------------------------------------------------------------------------------ +NDIS_STATUS oid_rt_pro_efuse_map_hdl(struct oid_par_priv *poid_par_priv) +{ +#ifdef PLATFORM_OS_XP + _irqL oldirql; +#endif + u8 *data; + NDIS_STATUS status = NDIS_STATUS_SUCCESS; + PADAPTER Adapter = (PADAPTER)(poid_par_priv->adapter_context); + u16 mapLen=0; + +_func_enter_; + + RT_TRACE(_module_mp_, _drv_notice_, ("+oid_rt_pro_efuse_map_hdl\n")); + + EFUSE_GetEfuseDefinition(Adapter, EFUSE_WIFI, TYPE_EFUSE_MAP_LEN, (PVOID)&mapLen, _FALSE); + + *poid_par_priv->bytes_rw = 0; + + if (poid_par_priv->information_buf_len < mapLen) + return NDIS_STATUS_INVALID_LENGTH; + + data = (u8*)poid_par_priv->information_buf; + + _irqlevel_changed_(&oldirql, LOWER); + + if (poid_par_priv->type_of_oid == QUERY_OID) + { + RT_TRACE(_module_mp_, _drv_info_, + ("oid_rt_pro_efuse_map_hdl: READ\n")); + + if (rtw_efuse_map_read(Adapter, 0, mapLen, data) == _SUCCESS) + *poid_par_priv->bytes_rw = mapLen; + else { + RT_TRACE(_module_mp_, _drv_err_, + ("oid_rt_pro_efuse_map_hdl: READ fail\n")); + status = NDIS_STATUS_FAILURE; + } + } else { + // SET_OID + RT_TRACE(_module_mp_, _drv_info_, + ("oid_rt_pro_efuse_map_hdl: WRITE\n")); + + if (rtw_efuse_map_write(Adapter, 0, mapLen, data) == _SUCCESS) + *poid_par_priv->bytes_rw = mapLen; + else { + RT_TRACE(_module_mp_, _drv_err_, + ("oid_rt_pro_efuse_map_hdl: WRITE fail\n")); + status = NDIS_STATUS_FAILURE; + } + } + + _irqlevel_changed_(&oldirql, RAISE); + + RT_TRACE(_module_mp_, _drv_info_, + ("-oid_rt_pro_efuse_map_hdl: status=0x%08X\n", status)); + +_func_exit_; + + return status; +} + +NDIS_STATUS oid_rt_set_crystal_cap_hdl(struct oid_par_priv *poid_par_priv) +{ + NDIS_STATUS status = NDIS_STATUS_SUCCESS; +#if 0 + PADAPTER Adapter = (PADAPTER)(poid_par_priv->adapter_context); + +#ifdef PLATFORM_OS_XP + _irqL oldirql; +#endif + + u32 crystal_cap = 0; + +_func_enter_; + + if (poid_par_priv->type_of_oid != SET_OID) + return NDIS_STATUS_NOT_ACCEPTED; + + if (poid_par_priv->information_buf_len information_buf);//4 + if (crystal_cap > 0xf) + return NDIS_STATUS_NOT_ACCEPTED; + + Adapter->mppriv.curr_crystalcap = crystal_cap; + + _irqlevel_changed_(&oldirql,LOWER); + SetCrystalCap(Adapter); + _irqlevel_changed_(&oldirql,RAISE); + +_func_exit_; + +#endif + return status; +} + +NDIS_STATUS oid_rt_set_rx_packet_type_hdl(struct oid_par_priv *poid_par_priv) +{ +#ifdef PLATFORM_OS_XP + _irqL oldirql; +#endif + u8 rx_pkt_type; +// u32 rcr_val32; + NDIS_STATUS status = NDIS_STATUS_SUCCESS; +// PADAPTER padapter = (PADAPTER)(poid_par_priv->adapter_context); + +_func_enter_; + + RT_TRACE(_module_mp_, _drv_notice_, ("+oid_rt_set_rx_packet_type_hdl\n")); + + if (poid_par_priv->type_of_oid != SET_OID) + return NDIS_STATUS_NOT_ACCEPTED; + + if (poid_par_priv->information_buf_len < sizeof(u8)) + return NDIS_STATUS_INVALID_LENGTH; + + rx_pkt_type = *((u8*)poid_par_priv->information_buf);//4 + + RT_TRACE(_module_mp_, _drv_info_, ("rx_pkt_type: %x\n",rx_pkt_type )); +#if 0 + _irqlevel_changed_(&oldirql, LOWER); +#if 0 + rcr_val8 = rtw_read8(Adapter, 0x10250048);//RCR + rcr_val8 &= ~(RCR_AB|RCR_AM|RCR_APM|RCR_AAP); + + if(rx_pkt_type == RX_PKT_BROADCAST){ + rcr_val8 |= (RCR_AB | RCR_ACRC32 ); + } + else if(rx_pkt_type == RX_PKT_DEST_ADDR){ + rcr_val8 |= (RCR_AAP| RCR_AM |RCR_ACRC32); + } + else if(rx_pkt_type == RX_PKT_PHY_MATCH){ + rcr_val8 |= (RCR_APM|RCR_ACRC32); + } + else{ + rcr_val8 &= ~(RCR_AAP|RCR_APM|RCR_AM|RCR_AB|RCR_ACRC32); + } + rtw_write8(padapter, 0x10250048,rcr_val8); +#else + rcr_val32 = rtw_read32(padapter, RCR);//RCR = 0x10250048 + rcr_val32 &= ~(RCR_CBSSID|RCR_AB|RCR_AM|RCR_APM|RCR_AAP); +#if 0 + if(rx_pkt_type == RX_PKT_BROADCAST){ + rcr_val32 |= (RCR_AB|RCR_AM|RCR_APM|RCR_AAP|RCR_ACRC32); + } + else if(rx_pkt_type == RX_PKT_DEST_ADDR){ + //rcr_val32 |= (RCR_CBSSID|RCR_AAP|RCR_AM|RCR_ACRC32); + rcr_val32 |= (RCR_CBSSID|RCR_APM|RCR_ACRC32); + } + else if(rx_pkt_type == RX_PKT_PHY_MATCH){ + rcr_val32 |= (RCR_APM|RCR_ACRC32); + //rcr_val32 |= (RCR_AAP|RCR_ACRC32); + } + else{ + rcr_val32 &= ~(RCR_AAP|RCR_APM|RCR_AM|RCR_AB|RCR_ACRC32); + } +#else + switch (rx_pkt_type) + { + case RX_PKT_BROADCAST : + rcr_val32 |= (RCR_AB|RCR_AM|RCR_APM|RCR_AAP|RCR_ACRC32); + break; + case RX_PKT_DEST_ADDR : + rcr_val32 |= (RCR_AB|RCR_AM|RCR_APM|RCR_AAP|RCR_ACRC32); + break; + case RX_PKT_PHY_MATCH: + rcr_val32 |= (RCR_APM|RCR_ACRC32); + break; + default: + rcr_val32 &= ~(RCR_AAP|RCR_APM|RCR_AM|RCR_AB|RCR_ACRC32); + break; + } + + if (rx_pkt_type == RX_PKT_DEST_ADDR) { + padapter->mppriv.check_mp_pkt = 1; + } else { + padapter->mppriv.check_mp_pkt = 0; + } +#endif + rtw_write32(padapter, RCR, rcr_val32); + +#endif + _irqlevel_changed_(&oldirql, RAISE); +#endif +_func_exit_; + + return status; +} + +NDIS_STATUS oid_rt_pro_set_tx_agc_offset_hdl(struct oid_par_priv *poid_par_priv) +{ +#if 0 + PADAPTER Adapter = (PADAPTER)(poid_par_priv->adapter_context); + +#ifdef PLATFORM_OS_XP + _irqL oldirql; +#endif + NDIS_STATUS status = NDIS_STATUS_SUCCESS; + + u32 txagc; + +_func_enter_; + + if (poid_par_priv->type_of_oid != SET_OID) + return NDIS_STATUS_NOT_ACCEPTED; + + if (poid_par_priv->information_buf_len < sizeof(u32)) + return NDIS_STATUS_INVALID_LENGTH; + + txagc = *(u32*)poid_par_priv->information_buf; + RT_TRACE(_module_mp_, _drv_info_, + ("oid_rt_pro_set_tx_agc_offset_hdl: 0x%08x\n", txagc)); + + _irqlevel_changed_(&oldirql, LOWER); + SetTxAGCOffset(Adapter, txagc); + _irqlevel_changed_(&oldirql, RAISE); + +_func_exit_; + + return status; +#else + return 0; +#endif +} + +NDIS_STATUS oid_rt_pro_set_pkt_test_mode_hdl(struct oid_par_priv *poid_par_priv) +{ +#if 0 + PADAPTER Adapter = (PADAPTER)(poid_par_priv->adapter_context); + + NDIS_STATUS status = NDIS_STATUS_SUCCESS; + + struct mlme_priv *pmlmepriv = &Adapter->mlmepriv; + struct mp_priv *pmppriv = &Adapter->mppriv; + u32 type; + +_func_enter_; + + if (poid_par_priv->type_of_oid != SET_OID) + return NDIS_STATUS_NOT_ACCEPTED; + + if (poid_par_priv->information_buf_len information_buf; + + if (_LOOPBOOK_MODE_ == type) { + pmppriv->mode = type; + set_fwstate(pmlmepriv, WIFI_MP_LPBK_STATE); //append txdesc + RT_TRACE(_module_mp_, _drv_info_, ("test mode change to loopback mode:0x%08x.\n", get_fwstate(pmlmepriv))); + } else if (_2MAC_MODE_ == type){ + pmppriv->mode = type; + _clr_fwstate_(pmlmepriv, WIFI_MP_LPBK_STATE); + RT_TRACE(_module_mp_, _drv_info_, ("test mode change to 2mac mode:0x%08x.\n", get_fwstate(pmlmepriv))); + } else + status = NDIS_STATUS_NOT_ACCEPTED; + +_func_exit_; + + return status; +#else + return 0; +#endif +} + +unsigned int mp_ioctl_xmit_packet_hdl(struct oid_par_priv *poid_par_priv) +{ + PMP_XMIT_PARM pparm; + PADAPTER padapter; + struct mp_priv *pmp_priv; + struct pkt_attrib *pattrib; + + RT_TRACE(_module_mp_, _drv_notice_, ("+%s\n", __func__)); + + pparm = (PMP_XMIT_PARM)poid_par_priv->information_buf; + padapter = (PADAPTER)poid_par_priv->adapter_context; + pmp_priv = &padapter->mppriv; + + if (poid_par_priv->type_of_oid == QUERY_OID) { + pparm->enable = !pmp_priv->tx.stop; + pparm->count = pmp_priv->tx.sended; + } else { + if (pparm->enable == 0) { + pmp_priv->tx.stop = 1; + } else if (pmp_priv->tx.stop == 1) { + pmp_priv->tx.stop = 0; + pmp_priv->tx.count = pparm->count; + pmp_priv->tx.payload = pparm->payload_type; + pattrib = &pmp_priv->tx.attrib; + pattrib->pktlen = pparm->length; + _rtw_memcpy(pattrib->dst, pparm->da, ETH_ALEN); + SetPacketTx(padapter); + } else + return NDIS_STATUS_FAILURE; + } + + return NDIS_STATUS_SUCCESS; +} + +#if 0 +unsigned int mp_ioctl_xmit_packet_hdl(struct oid_par_priv *poid_par_priv) +{ + unsigned char *pframe, *pmp_pkt; + struct ethhdr *pethhdr; + struct pkt_attrib *pattrib; + struct rtw_ieee80211_hdr *pwlanhdr; + unsigned short *fctrl; + int llc_sz, payload_len; + struct mp_xmit_frame *pxframe= NULL; + struct mp_xmit_packet *pmp_xmitpkt = (struct mp_xmit_packet*)param; + u8 addr3[] = {0x02, 0xE0, 0x4C, 0x87, 0x66, 0x55}; + +// DBG_871X("+mp_ioctl_xmit_packet_hdl\n"); + + pxframe = alloc_mp_xmitframe(&padapter->mppriv); + if (pxframe == NULL) + { + DEBUG_ERR(("Can't alloc pmpframe %d:%s\n", __LINE__, __FILE__)); + return -1; + } + + //mp_xmit_pkt + payload_len = pmp_xmitpkt->len - 14; + pmp_pkt = (unsigned char*)pmp_xmitpkt->mem; + pethhdr = (struct ethhdr *)pmp_pkt; + + //DBG_871X("payload_len=%d, pkt_mem=0x%x\n", pmp_xmitpkt->len, (void*)pmp_xmitpkt->mem); + + //DBG_871X("pxframe=0x%x\n", (void*)pxframe); + //DBG_871X("pxframe->mem=0x%x\n", (void*)pxframe->mem); + + //update attribute + pattrib = &pxframe->attrib; + memset((u8 *)(pattrib), 0, sizeof (struct pkt_attrib)); + pattrib->pktlen = pmp_xmitpkt->len; + pattrib->ether_type = ntohs(pethhdr->h_proto); + pattrib->hdrlen = 24; + pattrib->nr_frags = 1; + pattrib->priority = 0; +#ifndef CONFIG_MP_LINUX + if(IS_MCAST(pethhdr->h_dest)) + pattrib->mac_id = 4; + else + pattrib->mac_id = 5; +#else + pattrib->mac_id = 5; +#endif + + // + memset(pxframe->mem, 0 , WLANHDR_OFFSET); + pframe = (u8 *)(pxframe->mem) + WLANHDR_OFFSET; + + pwlanhdr = (struct rtw_ieee80211_hdr *)pframe; + + fctrl = &(pwlanhdr->frame_ctl); + *(fctrl) = 0; + SetFrameSubType(pframe, WIFI_DATA); + + _rtw_memcpy(pwlanhdr->addr1, pethhdr->h_dest, ETH_ALEN); + _rtw_memcpy(pwlanhdr->addr2, pethhdr->h_source, ETH_ALEN); + + _rtw_memcpy(pwlanhdr->addr3, addr3, ETH_ALEN); + + pwlanhdr->seq_ctl = 0; + pframe += pattrib->hdrlen; + + llc_sz= rtw_put_snap(pframe, pattrib->ether_type); + pframe += llc_sz; + + _rtw_memcpy(pframe, (void*)(pmp_pkt+14), payload_len); + + pattrib->last_txcmdsz = pattrib->hdrlen + llc_sz + payload_len; + + DEBUG_INFO(("issuing mp_xmit_frame, tx_len=%d, ether_type=0x%x\n", pattrib->last_txcmdsz, pattrib->ether_type)); + xmit_mp_frame(padapter, pxframe); + + return _SUCCESS; +} +#endif +//------------------------------------------------------------------------------ +NDIS_STATUS oid_rt_set_power_down_hdl(struct oid_par_priv *poid_par_priv) +{ +#ifdef PLATFORM_OS_XP + _irqL oldirql; +#endif + u8 bpwrup; + NDIS_STATUS status = NDIS_STATUS_SUCCESS; +#ifdef PLATFORM_LINUX +#ifdef CONFIG_SDIO_HCI + PADAPTER padapter = (PADAPTER)(poid_par_priv->adapter_context); +#endif +#endif + +_func_enter_; + + if (poid_par_priv->type_of_oid != SET_OID) { + status = NDIS_STATUS_NOT_ACCEPTED; + return status; + } + + RT_TRACE(_module_mp_, _drv_info_, + ("\n ===> Setoid_rt_set_power_down_hdl.\n")); + + _irqlevel_changed_(&oldirql, LOWER); + + bpwrup = *(u8 *)poid_par_priv->information_buf; + //CALL the power_down function +#ifdef PLATFORM_LINUX +#ifdef CONFIG_SDIO_HCI + dev_power_down(padapter,bpwrup); +#endif +#endif + _irqlevel_changed_(&oldirql, RAISE); + + //DEBUG_ERR(("\n <=== Query OID_RT_PRO_READ_REGISTER. + // Add:0x%08x Width:%d Value:0x%08x\n",RegRWStruct->offset,RegRWStruct->width,RegRWStruct->value)); + +_func_exit_; + + return status; +} +//------------------------------------------------------------------------------ +NDIS_STATUS oid_rt_get_power_mode_hdl(struct oid_par_priv *poid_par_priv) +{ +#if 0 + NDIS_STATUS status = NDIS_STATUS_SUCCESS; + PADAPTER Adapter = (PADAPTER)(poid_par_priv->adapter_context); +//#ifdef PLATFORM_OS_XP +// _irqL oldirql; +//#endif + +_func_enter_; + + if (poid_par_priv->type_of_oid != QUERY_OID) { + status = NDIS_STATUS_NOT_ACCEPTED; + return status; + } + if (poid_par_priv->information_buf_len < sizeof(u32)) { + status = NDIS_STATUS_INVALID_LENGTH; + return status; + } + + RT_TRACE(_module_mp_, _drv_info_, + ("\n ===> oid_rt_get_power_mode_hdl.\n")); + +// _irqlevel_changed_(&oldirql, LOWER); + *(int*)poid_par_priv->information_buf = Adapter->registrypriv.low_power ? POWER_LOW : POWER_NORMAL; + *poid_par_priv->bytes_rw = poid_par_priv->information_buf_len; +// _irqlevel_changed_(&oldirql, RAISE); + +_func_exit_; + + return status; +#else + return 0; +#endif +} --- linux-raspi2-4.2.0.orig/drivers/net/wireless/rtl8192cu/core/rtw_p2p.c +++ linux-raspi2-4.2.0/drivers/net/wireless/rtl8192cu/core/rtw_p2p.c @@ -0,0 +1,5293 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved. + * + * 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 + * published by the Free Software Foundation. + * + * 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 Street, Fifth Floor, Boston, MA 02110, USA + * + * + ******************************************************************************/ +#define _RTW_P2P_C_ + +#include +#include +#include + +#ifdef CONFIG_P2P + +int rtw_p2p_is_channel_list_ok( u8 desired_ch, u8* ch_list, u8 ch_cnt ) +{ + int found = 0, i = 0; + + for( i = 0; i < ch_cnt; i++ ) + { + if ( ch_list[ i ] == desired_ch ) + { + found = 1; + break; + } + } + return( found ); +} + +int is_any_client_associated(_adapter *padapter) +{ + return padapter->stapriv.asoc_list_cnt ? _TRUE : _FALSE; +} + +static u32 go_add_group_info_attr(struct wifidirect_info *pwdinfo, u8 *pbuf) +{ + _irqL irqL; + _list *phead, *plist; + u32 len=0; + u16 attr_len = 0; + u8 tmplen, *pdata_attr, *pstart, *pcur; + struct sta_info *psta = NULL; + _adapter *padapter = pwdinfo->padapter; + struct sta_priv *pstapriv = &padapter->stapriv; + + DBG_871X("%s\n", __FUNCTION__); + + pdata_attr = rtw_zmalloc(MAX_P2P_IE_LEN); + + pstart = pdata_attr; + pcur = pdata_attr; + + _enter_critical_bh(&pstapriv->asoc_list_lock, &irqL); + phead = &pstapriv->asoc_list; + plist = get_next(phead); + + //look up sta asoc_queue + while ((rtw_end_of_queue_search(phead, plist)) == _FALSE) + { + psta = LIST_CONTAINOR(plist, struct sta_info, asoc_list); + + plist = get_next(plist); + + + if(psta->is_p2p_device) + { + tmplen = 0; + + pcur++; + + //P2P device address + _rtw_memcpy(pcur, psta->dev_addr, ETH_ALEN); + pcur += ETH_ALEN; + + //P2P interface address + _rtw_memcpy(pcur, psta->hwaddr, ETH_ALEN); + pcur += ETH_ALEN; + + *pcur = psta->dev_cap; + pcur++; + + //*(u16*)(pcur) = cpu_to_be16(psta->config_methods); + RTW_PUT_BE16(pcur, psta->config_methods); + pcur += 2; + + _rtw_memcpy(pcur, psta->primary_dev_type, 8); + pcur += 8; + + *pcur = psta->num_of_secdev_type; + pcur++; + + _rtw_memcpy(pcur, psta->secdev_types_list, psta->num_of_secdev_type*8); + pcur += psta->num_of_secdev_type*8; + + if(psta->dev_name_len>0) + { + //*(u16*)(pcur) = cpu_to_be16( WPS_ATTR_DEVICE_NAME ); + RTW_PUT_BE16(pcur, WPS_ATTR_DEVICE_NAME); + pcur += 2; + + //*(u16*)(pcur) = cpu_to_be16( psta->dev_name_len ); + RTW_PUT_BE16(pcur, psta->dev_name_len); + pcur += 2; + + _rtw_memcpy(pcur, psta->dev_name, psta->dev_name_len); + pcur += psta->dev_name_len; + } + + + tmplen = (u8)(pcur-pstart); + + *pstart = (tmplen-1); + + attr_len += tmplen; + + //pstart += tmplen; + pstart = pcur; + + } + + + } + _exit_critical_bh(&pstapriv->asoc_list_lock, &irqL); + + if(attr_len>0) + { + len = rtw_set_p2p_attr_content(pbuf, P2P_ATTR_GROUP_INFO, attr_len, pdata_attr); + } + + rtw_mfree(pdata_attr, MAX_P2P_IE_LEN); + + return len; + +} + +static void issue_group_disc_req(struct wifidirect_info *pwdinfo, u8 *da) +{ + struct xmit_frame *pmgntframe; + struct pkt_attrib *pattrib; + unsigned char *pframe; + struct rtw_ieee80211_hdr *pwlanhdr; + unsigned short *fctrl; + _adapter *padapter = pwdinfo->padapter; + struct xmit_priv *pxmitpriv = &(padapter->xmitpriv); + struct mlme_ext_priv *pmlmeext = &(padapter->mlmeextpriv); + unsigned char category = RTW_WLAN_CATEGORY_P2P;//P2P action frame + u32 p2poui = cpu_to_be32(P2POUI); + u8 oui_subtype = P2P_GO_DISC_REQUEST; + u8 dialogToken=0; + + DBG_871X("[%s]\n", __FUNCTION__); + + if ((pmgntframe = alloc_mgtxmitframe(pxmitpriv)) == NULL) + { + return; + } + + //update attribute + pattrib = &pmgntframe->attrib; + update_mgntframe_attrib(padapter, pattrib); + + _rtw_memset(pmgntframe->buf_addr, 0, WLANHDR_OFFSET + TXDESC_OFFSET); + + pframe = (u8 *)(pmgntframe->buf_addr) + TXDESC_OFFSET; + pwlanhdr = (struct rtw_ieee80211_hdr *)pframe; + + fctrl = &(pwlanhdr->frame_ctl); + *(fctrl) = 0; + + _rtw_memcpy(pwlanhdr->addr1, da, ETH_ALEN); + _rtw_memcpy(pwlanhdr->addr2, pwdinfo->interface_addr, ETH_ALEN); + _rtw_memcpy(pwlanhdr->addr3, pwdinfo->interface_addr, ETH_ALEN); + + SetSeqNum(pwlanhdr, pmlmeext->mgnt_seq); + pmlmeext->mgnt_seq++; + SetFrameSubType(pframe, WIFI_ACTION); + + pframe += sizeof(struct rtw_ieee80211_hdr_3addr); + pattrib->pktlen = sizeof(struct rtw_ieee80211_hdr_3addr); + + //Build P2P action frame header + pframe = rtw_set_fixed_ie(pframe, 1, &(category), &(pattrib->pktlen)); + pframe = rtw_set_fixed_ie(pframe, 4, (unsigned char *) &(p2poui), &(pattrib->pktlen)); + pframe = rtw_set_fixed_ie(pframe, 1, &(oui_subtype), &(pattrib->pktlen)); + pframe = rtw_set_fixed_ie(pframe, 1, &(dialogToken), &(pattrib->pktlen)); + + //there is no IE in this P2P action frame + + pattrib->last_txcmdsz = pattrib->pktlen; + + dump_mgntframe(padapter, pmgntframe); + +} + +static void issue_p2p_devdisc_resp(struct wifidirect_info *pwdinfo, u8 *da, u8 status, u8 dialogToken) +{ + struct xmit_frame *pmgntframe; + struct pkt_attrib *pattrib; + unsigned char *pframe; + struct rtw_ieee80211_hdr *pwlanhdr; + unsigned short *fctrl; + _adapter *padapter = pwdinfo->padapter; + struct xmit_priv *pxmitpriv = &(padapter->xmitpriv); + struct mlme_ext_priv *pmlmeext = &(padapter->mlmeextpriv); + unsigned char category = RTW_WLAN_CATEGORY_PUBLIC; + u8 action = P2P_PUB_ACTION_ACTION; + u32 p2poui = cpu_to_be32(P2POUI); + u8 oui_subtype = P2P_DEVDISC_RESP; + u8 p2pie[8] = { 0x00 }; + u32 p2pielen = 0; + + DBG_871X("[%s]\n", __FUNCTION__); + + if ((pmgntframe = alloc_mgtxmitframe(pxmitpriv)) == NULL) + { + return; + } + + //update attribute + pattrib = &pmgntframe->attrib; + update_mgntframe_attrib(padapter, pattrib); + + _rtw_memset(pmgntframe->buf_addr, 0, WLANHDR_OFFSET + TXDESC_OFFSET); + + pframe = (u8 *)(pmgntframe->buf_addr) + TXDESC_OFFSET; + pwlanhdr = (struct rtw_ieee80211_hdr *)pframe; + + fctrl = &(pwlanhdr->frame_ctl); + *(fctrl) = 0; + + _rtw_memcpy(pwlanhdr->addr1, da, ETH_ALEN); + _rtw_memcpy(pwlanhdr->addr2, pwdinfo->device_addr, ETH_ALEN); + _rtw_memcpy(pwlanhdr->addr3, pwdinfo->device_addr, ETH_ALEN); + + SetSeqNum(pwlanhdr, pmlmeext->mgnt_seq); + pmlmeext->mgnt_seq++; + SetFrameSubType(pframe, WIFI_ACTION); + + pframe += sizeof(struct rtw_ieee80211_hdr_3addr); + pattrib->pktlen = sizeof(struct rtw_ieee80211_hdr_3addr); + + //Build P2P public action frame header + pframe = rtw_set_fixed_ie(pframe, 1, &(category), &(pattrib->pktlen)); + pframe = rtw_set_fixed_ie(pframe, 1, &(action), &(pattrib->pktlen)); + pframe = rtw_set_fixed_ie(pframe, 4, (unsigned char *) &(p2poui), &(pattrib->pktlen)); + pframe = rtw_set_fixed_ie(pframe, 1, &(oui_subtype), &(pattrib->pktlen)); + pframe = rtw_set_fixed_ie(pframe, 1, &(dialogToken), &(pattrib->pktlen)); + + + //Build P2P IE + // P2P OUI + p2pielen = 0; + p2pie[ p2pielen++ ] = 0x50; + p2pie[ p2pielen++ ] = 0x6F; + p2pie[ p2pielen++ ] = 0x9A; + p2pie[ p2pielen++ ] = 0x09; // WFA P2P v1.0 + + // P2P_ATTR_STATUS + p2pielen += rtw_set_p2p_attr_content(&p2pie[p2pielen], P2P_ATTR_STATUS, 1, &status); + + pframe = rtw_set_ie(pframe, _VENDOR_SPECIFIC_IE_, p2pielen, p2pie, &pattrib->pktlen); + + pattrib->last_txcmdsz = pattrib->pktlen; + + dump_mgntframe(padapter, pmgntframe); + +} + +static void issue_p2p_provision_resp(struct wifidirect_info *pwdinfo, u8* raddr, u8* frame_body, u16 config_method) +{ + _adapter *padapter = pwdinfo->padapter; + unsigned char category = RTW_WLAN_CATEGORY_PUBLIC; + u8 action = P2P_PUB_ACTION_ACTION; + u8 dialogToken = frame_body[7]; // The Dialog Token of provisioning discovery request frame. + u32 p2poui = cpu_to_be32(P2POUI); + u8 oui_subtype = P2P_PROVISION_DISC_RESP; + u8 wpsie[ 100 ] = { 0x00 }; + u8 wpsielen = 0; +#ifdef CONFIG_WFD + u32 wfdielen = 0; +#endif //CONFIG_WFD + + struct xmit_frame *pmgntframe; + struct pkt_attrib *pattrib; + unsigned char *pframe; + struct rtw_ieee80211_hdr *pwlanhdr; + unsigned short *fctrl; + struct xmit_priv *pxmitpriv = &(padapter->xmitpriv); + struct mlme_ext_priv *pmlmeext = &(padapter->mlmeextpriv); + struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info); + + + if ((pmgntframe = alloc_mgtxmitframe(pxmitpriv)) == NULL) + { + return; + } + + //update attribute + pattrib = &pmgntframe->attrib; + update_mgntframe_attrib(padapter, pattrib); + + _rtw_memset(pmgntframe->buf_addr, 0, WLANHDR_OFFSET + TXDESC_OFFSET); + + pframe = (u8 *)(pmgntframe->buf_addr) + TXDESC_OFFSET; + pwlanhdr = (struct rtw_ieee80211_hdr *)pframe; + + fctrl = &(pwlanhdr->frame_ctl); + *(fctrl) = 0; + + _rtw_memcpy(pwlanhdr->addr1, raddr, ETH_ALEN); + _rtw_memcpy(pwlanhdr->addr2, myid(&(padapter->eeprompriv)), ETH_ALEN); + _rtw_memcpy(pwlanhdr->addr3, myid(&(padapter->eeprompriv)), ETH_ALEN); + + SetSeqNum(pwlanhdr, pmlmeext->mgnt_seq); + pmlmeext->mgnt_seq++; + SetFrameSubType(pframe, WIFI_ACTION); + + pframe += sizeof(struct rtw_ieee80211_hdr_3addr); + pattrib->pktlen = sizeof(struct rtw_ieee80211_hdr_3addr); + + pframe = rtw_set_fixed_ie(pframe, 1, &(category), &(pattrib->pktlen)); + pframe = rtw_set_fixed_ie(pframe, 1, &(action), &(pattrib->pktlen)); + pframe = rtw_set_fixed_ie(pframe, 4, (unsigned char *) &(p2poui), &(pattrib->pktlen)); + pframe = rtw_set_fixed_ie(pframe, 1, &(oui_subtype), &(pattrib->pktlen)); + pframe = rtw_set_fixed_ie(pframe, 1, &(dialogToken), &(pattrib->pktlen)); + + wpsielen = 0; + // WPS OUI + //*(u32*) ( wpsie ) = cpu_to_be32( WPSOUI ); + RTW_PUT_BE32(wpsie, WPSOUI); + wpsielen += 4; + +#if 0 + // WPS version + // Type: + *(u16*) ( wpsie + wpsielen ) = cpu_to_be16( WPS_ATTR_VER1 ); + wpsielen += 2; + + // Length: + *(u16*) ( wpsie + wpsielen ) = cpu_to_be16( 0x0001 ); + wpsielen += 2; + + // Value: + wpsie[wpsielen++] = WPS_VERSION_1; // Version 1.0 +#endif + + // Config Method + // Type: + //*(u16*) ( wpsie + wpsielen ) = cpu_to_be16( WPS_ATTR_CONF_METHOD ); + RTW_PUT_BE16(wpsie + wpsielen, WPS_ATTR_CONF_METHOD); + wpsielen += 2; + + // Length: + //*(u16*) ( wpsie + wpsielen ) = cpu_to_be16( 0x0002 ); + RTW_PUT_BE16(wpsie + wpsielen, 0x0002); + wpsielen += 2; + + // Value: + //*(u16*) ( wpsie + wpsielen ) = cpu_to_be16( config_method ); + RTW_PUT_BE16(wpsie + wpsielen, config_method); + wpsielen += 2; + + pframe = rtw_set_ie(pframe, _VENDOR_SPECIFIC_IE_, wpsielen, (unsigned char *) wpsie, &pattrib->pktlen ); + +#ifdef CONFIG_WFD + wfdielen = build_provdisc_resp_wfd_ie(pwdinfo, pframe); + pframe += wfdielen; + pattrib->pktlen += wfdielen; +#endif //CONFIG_WFD + + pattrib->last_txcmdsz = pattrib->pktlen; + + dump_mgntframe(padapter, pmgntframe); + + return; + +} + +static void issue_p2p_presence_resp(struct wifidirect_info *pwdinfo, u8 *da, u8 status, u8 dialogToken) +{ + struct xmit_frame *pmgntframe; + struct pkt_attrib *pattrib; + unsigned char *pframe; + struct rtw_ieee80211_hdr *pwlanhdr; + unsigned short *fctrl; + _adapter *padapter = pwdinfo->padapter; + struct xmit_priv *pxmitpriv = &(padapter->xmitpriv); + struct mlme_ext_priv *pmlmeext = &(padapter->mlmeextpriv); + unsigned char category = RTW_WLAN_CATEGORY_P2P;//P2P action frame + u32 p2poui = cpu_to_be32(P2POUI); + u8 oui_subtype = P2P_PRESENCE_RESPONSE; + u8 p2pie[ MAX_P2P_IE_LEN] = { 0x00 }; + u8 noa_attr_content[32] = { 0x00 }; + u32 p2pielen = 0; + + DBG_871X("[%s]\n", __FUNCTION__); + + if ((pmgntframe = alloc_mgtxmitframe(pxmitpriv)) == NULL) + { + return; + } + + //update attribute + pattrib = &pmgntframe->attrib; + update_mgntframe_attrib(padapter, pattrib); + + _rtw_memset(pmgntframe->buf_addr, 0, WLANHDR_OFFSET + TXDESC_OFFSET); + + pframe = (u8 *)(pmgntframe->buf_addr) + TXDESC_OFFSET; + pwlanhdr = (struct rtw_ieee80211_hdr *)pframe; + + fctrl = &(pwlanhdr->frame_ctl); + *(fctrl) = 0; + + _rtw_memcpy(pwlanhdr->addr1, da, ETH_ALEN); + _rtw_memcpy(pwlanhdr->addr2, pwdinfo->interface_addr, ETH_ALEN); + _rtw_memcpy(pwlanhdr->addr3, pwdinfo->interface_addr, ETH_ALEN); + + SetSeqNum(pwlanhdr, pmlmeext->mgnt_seq); + pmlmeext->mgnt_seq++; + SetFrameSubType(pframe, WIFI_ACTION); + + pframe += sizeof(struct rtw_ieee80211_hdr_3addr); + pattrib->pktlen = sizeof(struct rtw_ieee80211_hdr_3addr); + + //Build P2P action frame header + pframe = rtw_set_fixed_ie(pframe, 1, &(category), &(pattrib->pktlen)); + pframe = rtw_set_fixed_ie(pframe, 4, (unsigned char *) &(p2poui), &(pattrib->pktlen)); + pframe = rtw_set_fixed_ie(pframe, 1, &(oui_subtype), &(pattrib->pktlen)); + pframe = rtw_set_fixed_ie(pframe, 1, &(dialogToken), &(pattrib->pktlen)); + + + //Add P2P IE header + // P2P OUI + p2pielen = 0; + p2pie[ p2pielen++ ] = 0x50; + p2pie[ p2pielen++ ] = 0x6F; + p2pie[ p2pielen++ ] = 0x9A; + p2pie[ p2pielen++ ] = 0x09; // WFA P2P v1.0 + + //Add Status attribute in P2P IE + p2pielen += rtw_set_p2p_attr_content(&p2pie[p2pielen], P2P_ATTR_STATUS, 1, &status); + + //Add NoA attribute in P2P IE + noa_attr_content[0] = 0x1;//index + noa_attr_content[1] = 0x0;//CTWindow and OppPS Parameters + + //todo: Notice of Absence Descriptor(s) + + p2pielen += rtw_set_p2p_attr_content(&p2pie[p2pielen], P2P_ATTR_NOA, 2, noa_attr_content); + + + + pframe = rtw_set_ie(pframe, _VENDOR_SPECIFIC_IE_, p2pielen, p2pie, &(pattrib->pktlen)); + + + pattrib->last_txcmdsz = pattrib->pktlen; + + dump_mgntframe(padapter, pmgntframe); + +} + +u32 build_beacon_p2p_ie(struct wifidirect_info *pwdinfo, u8 *pbuf) +{ + u8 p2pie[ MAX_P2P_IE_LEN] = { 0x00 }; + u16 capability=0; + u32 len=0, p2pielen = 0; + + + // P2P OUI + p2pielen = 0; + p2pie[ p2pielen++ ] = 0x50; + p2pie[ p2pielen++ ] = 0x6F; + p2pie[ p2pielen++ ] = 0x9A; + p2pie[ p2pielen++ ] = 0x09; // WFA P2P v1.0 + + + // According to the P2P Specification, the beacon frame should contain 3 P2P attributes + // 1. P2P Capability + // 2. P2P Device ID + // 3. Notice of Absence ( NOA ) + + // P2P Capability ATTR + // Type: + // Length: + // Value: + // Device Capability Bitmap, 1 byte + // Be able to participate in additional P2P Groups and + // support the P2P Invitation Procedure + // Group Capability Bitmap, 1 byte + capability = P2P_DEVCAP_INVITATION_PROC|P2P_DEVCAP_CLIENT_DISCOVERABILITY; + capability |= ((P2P_GRPCAP_GO | P2P_GRPCAP_INTRABSS) << 8); + if(rtw_p2p_chk_state(pwdinfo, P2P_STATE_PROVISIONING_ING)) + capability |= (P2P_GRPCAP_GROUP_FORMATION<<8); + + capability = cpu_to_le16(capability); + + p2pielen += rtw_set_p2p_attr_content(&p2pie[p2pielen], P2P_ATTR_CAPABILITY, 2, (u8*)&capability); + + + // P2P Device ID ATTR + p2pielen += rtw_set_p2p_attr_content(&p2pie[p2pielen], P2P_ATTR_DEVICE_ID, ETH_ALEN, pwdinfo->device_addr); + + + // Notice of Absence ATTR + // Type: + // Length: + // Value: + + //go_add_noa_attr(pwdinfo); + + + pbuf = rtw_set_ie(pbuf, _VENDOR_SPECIFIC_IE_, p2pielen, (unsigned char *) p2pie, &len); + + + return len; + +} + +#ifdef CONFIG_WFD +u32 build_beacon_wfd_ie(struct wifidirect_info *pwdinfo, u8 *pbuf) +{ + u8 wfdie[ MAX_WFD_IE_LEN] = { 0x00 }; + u32 len=0, wfdielen = 0; + _adapter *padapter = pwdinfo->padapter; + struct mlme_priv *pmlmepriv = &padapter->mlmepriv; + struct wifi_display_info* pwfd_info = padapter->wdinfo.wfd_info; + + // WFD OUI + wfdielen = 0; + wfdie[ wfdielen++ ] = 0x50; + wfdie[ wfdielen++ ] = 0x6F; + wfdie[ wfdielen++ ] = 0x9A; + wfdie[ wfdielen++ ] = 0x0A; // WFA WFD v1.0 + + // Commented by Albert 20110812 + // According to the WFD Specification, the beacon frame should contain 4 WFD attributes + // 1. WFD Device Information + // 2. Associated BSSID + // 3. Coupled Sink Information + + + // WFD Device Information ATTR + // Type: + wfdie[ wfdielen++ ] = WFD_ATTR_DEVICE_INFO; + + // Length: + // Note: In the WFD specification, the size of length field is 2. + RTW_PUT_BE16(wfdie + wfdielen, 0x0006); + wfdielen += 2; + + // Value1: + // WFD device information + + if ( P2P_ROLE_GO == pwdinfo->role ) + { + if ( is_any_client_associated( pwdinfo->padapter ) ) + { + // WFD primary sink + WiFi Direct mode + WSD (WFD Service Discovery) + RTW_PUT_BE16(wfdie + wfdielen, pwfd_info->wfd_device_type | WFD_DEVINFO_WSD ); + } + else + { + // WFD primary sink + available for WFD session + WiFi Direct mode + WSD (WFD Service Discovery) + RTW_PUT_BE16(wfdie + wfdielen, pwfd_info->wfd_device_type | WFD_DEVINFO_SESSION_AVAIL | WFD_DEVINFO_WSD ); + } + + } + else + { + // WFD primary sink + available for WFD session + WiFi Direct mode + WSD ( WFD Service Discovery ) + RTW_PUT_BE16(wfdie + wfdielen, pwfd_info->wfd_device_type | WFD_DEVINFO_SESSION_AVAIL | WFD_DEVINFO_WSD ); + } + + wfdielen += 2; + + // Value2: + // Session Management Control Port + // Default TCP port for RTSP messages is 554 + RTW_PUT_BE16(wfdie + wfdielen, pwfd_info->rtsp_ctrlport ); + wfdielen += 2; + + // Value3: + // WFD Device Maximum Throughput + // 300Mbps is the maximum throughput + RTW_PUT_BE16(wfdie + wfdielen, 300); + wfdielen += 2; + + // Associated BSSID ATTR + // Type: + wfdie[ wfdielen++ ] = WFD_ATTR_ASSOC_BSSID; + + // Length: + // Note: In the WFD specification, the size of length field is 2. + RTW_PUT_BE16(wfdie + wfdielen, 0x0006); + wfdielen += 2; + + // Value: + // Associated BSSID + if ( check_fwstate(pmlmepriv, _FW_LINKED) == _TRUE ) + { + _rtw_memcpy( wfdie + wfdielen, &pmlmepriv->assoc_bssid[ 0 ], ETH_ALEN ); + } + else + { + _rtw_memset( wfdie + wfdielen, 0x00, ETH_ALEN ); + } + + wfdielen += ETH_ALEN; + + // Coupled Sink Information ATTR + // Type: + wfdie[ wfdielen++ ] = WFD_ATTR_COUPLED_SINK_INFO; + + // Length: + // Note: In the WFD specification, the size of length field is 2. + RTW_PUT_BE16(wfdie + wfdielen, 0x0007); + wfdielen += 2; + + // Value: + // Coupled Sink Status bitmap + // Not coupled/available for Coupling + wfdie[ wfdielen++ ] = 0; + // MAC Addr. + wfdie[ wfdielen++ ] = 0; + wfdie[ wfdielen++ ] = 0; + wfdie[ wfdielen++ ] = 0; + wfdie[ wfdielen++ ] = 0; + wfdie[ wfdielen++ ] = 0; + wfdie[ wfdielen++ ] = 0; + + pbuf = rtw_set_ie(pbuf, _VENDOR_SPECIFIC_IE_, wfdielen, (unsigned char *) wfdie, &len); + + return len; + +} + +u32 build_probe_req_wfd_ie(struct wifidirect_info *pwdinfo, u8 *pbuf) +{ + u8 wfdie[ MAX_WFD_IE_LEN] = { 0x00 }; + u32 len=0, wfdielen = 0; + _adapter *padapter = pwdinfo->padapter; + struct mlme_priv *pmlmepriv = &padapter->mlmepriv; + struct wifi_display_info* pwfd_info = padapter->wdinfo.wfd_info; + + // WFD OUI + wfdielen = 0; + wfdie[ wfdielen++ ] = 0x50; + wfdie[ wfdielen++ ] = 0x6F; + wfdie[ wfdielen++ ] = 0x9A; + wfdie[ wfdielen++ ] = 0x0A; // WFA WFD v1.0 + + // Commented by Albert 20110812 + // According to the WFD Specification, the probe request frame should contain 4 WFD attributes + // 1. WFD Device Information + // 2. Associated BSSID + // 3. Coupled Sink Information + + + // WFD Device Information ATTR + // Type: + wfdie[ wfdielen++ ] = WFD_ATTR_DEVICE_INFO; + + // Length: + // Note: In the WFD specification, the size of length field is 2. + RTW_PUT_BE16(wfdie + wfdielen, 0x0006); + wfdielen += 2; + + // Value1: + // WFD device information + + if ( 1 == pwdinfo->wfd_tdls_enable ) + { + // WFD primary sink + available for WFD session + WiFi TDLS mode + WSC ( WFD Service Discovery ) + RTW_PUT_BE16(wfdie + wfdielen, pwfd_info->wfd_device_type | + WFD_DEVINFO_SESSION_AVAIL | + WFD_DEVINFO_WSD | + WFD_DEVINFO_PC_TDLS ); + } + else + { + // WFD primary sink + available for WFD session + WiFi Direct mode + WSC ( WFD Service Discovery ) + RTW_PUT_BE16(wfdie + wfdielen, pwfd_info->wfd_device_type | + WFD_DEVINFO_SESSION_AVAIL | + WFD_DEVINFO_WSD ); + } + + wfdielen += 2; + + // Value2: + // Session Management Control Port + // Default TCP port for RTSP messages is 554 + RTW_PUT_BE16(wfdie + wfdielen, pwfd_info->rtsp_ctrlport ); + wfdielen += 2; + + // Value3: + // WFD Device Maximum Throughput + // 300Mbps is the maximum throughput + RTW_PUT_BE16(wfdie + wfdielen, 300); + wfdielen += 2; + + // Associated BSSID ATTR + // Type: + wfdie[ wfdielen++ ] = WFD_ATTR_ASSOC_BSSID; + + // Length: + // Note: In the WFD specification, the size of length field is 2. + RTW_PUT_BE16(wfdie + wfdielen, 0x0006); + wfdielen += 2; + + // Value: + // Associated BSSID + if ( check_fwstate(pmlmepriv, _FW_LINKED) == _TRUE ) + { + _rtw_memcpy( wfdie + wfdielen, &pmlmepriv->assoc_bssid[ 0 ], ETH_ALEN ); + } + else + { + _rtw_memset( wfdie + wfdielen, 0x00, ETH_ALEN ); + } + + wfdielen += ETH_ALEN; + + // Coupled Sink Information ATTR + // Type: + wfdie[ wfdielen++ ] = WFD_ATTR_COUPLED_SINK_INFO; + + // Length: + // Note: In the WFD specification, the size of length field is 2. + RTW_PUT_BE16(wfdie + wfdielen, 0x0007); + wfdielen += 2; + + // Value: + // Coupled Sink Status bitmap + // Not coupled/available for Coupling + wfdie[ wfdielen++ ] = 0; + // MAC Addr. + wfdie[ wfdielen++ ] = 0; + wfdie[ wfdielen++ ] = 0; + wfdie[ wfdielen++ ] = 0; + wfdie[ wfdielen++ ] = 0; + wfdie[ wfdielen++ ] = 0; + wfdie[ wfdielen++ ] = 0; + + pbuf = rtw_set_ie(pbuf, _VENDOR_SPECIFIC_IE_, wfdielen, (unsigned char *) wfdie, &len); + + return len; + +} + +u32 build_probe_resp_wfd_ie(struct wifidirect_info *pwdinfo, u8 *pbuf, u8 tunneled) +{ + u8 wfdie[ MAX_WFD_IE_LEN] = { 0x00 }; + u32 len=0, wfdielen = 0; + _adapter *padapter = pwdinfo->padapter; + struct mlme_priv *pmlmepriv = &padapter->mlmepriv; + struct wifi_display_info* pwfd_info = padapter->wdinfo.wfd_info; + + // WFD OUI + wfdielen = 0; + wfdie[ wfdielen++ ] = 0x50; + wfdie[ wfdielen++ ] = 0x6F; + wfdie[ wfdielen++ ] = 0x9A; + wfdie[ wfdielen++ ] = 0x0A; // WFA WFD v1.0 + + // Commented by Albert 20110812 + // According to the WFD Specification, the probe response frame should contain 4 WFD attributes + // 1. WFD Device Information + // 2. Associated BSSID + // 3. Coupled Sink Information + // 4. WFD Session Information + + + // WFD Device Information ATTR + // Type: + wfdie[ wfdielen++ ] = WFD_ATTR_DEVICE_INFO; + + // Length: + // Note: In the WFD specification, the size of length field is 2. + RTW_PUT_BE16(wfdie + wfdielen, 0x0006); + wfdielen += 2; + + // Value1: + // WFD device information + // WFD primary sink + available for WFD session + WiFi Direct mode + + if ( _TRUE == pwdinfo->session_available ) + { + if ( P2P_ROLE_GO == pwdinfo->role ) + { + if ( is_any_client_associated( pwdinfo->padapter ) ) + { + if ( pwdinfo->wfd_tdls_enable ) + { + // TDLS mode + WSD ( WFD Service Discovery ) + RTW_PUT_BE16(wfdie + wfdielen, pwfd_info->wfd_device_type | WFD_DEVINFO_WSD | WFD_DEVINFO_PC_TDLS | WFD_DEVINFO_HDCP_SUPPORT); + } + else + { + // WiFi Direct mode + WSD ( WFD Service Discovery ) + RTW_PUT_BE16(wfdie + wfdielen, pwfd_info->wfd_device_type | WFD_DEVINFO_WSD | WFD_DEVINFO_HDCP_SUPPORT); + } + } + else + { + if ( pwdinfo->wfd_tdls_enable ) + { + // available for WFD session + TDLS mode + WSD ( WFD Service Discovery ) + RTW_PUT_BE16(wfdie + wfdielen, pwfd_info->wfd_device_type | WFD_DEVINFO_SESSION_AVAIL | WFD_DEVINFO_WSD | WFD_DEVINFO_PC_TDLS | WFD_DEVINFO_HDCP_SUPPORT); + } + else + { + // available for WFD session + WiFi Direct mode + WSD ( WFD Service Discovery ) + RTW_PUT_BE16(wfdie + wfdielen, pwfd_info->wfd_device_type | WFD_DEVINFO_SESSION_AVAIL | WFD_DEVINFO_WSD | WFD_DEVINFO_HDCP_SUPPORT); + } + } + } + else + { + if ( pwdinfo->wfd_tdls_enable ) + { + // available for WFD session + WiFi Direct mode + WSD ( WFD Service Discovery ) + RTW_PUT_BE16(wfdie + wfdielen, pwfd_info->wfd_device_type | WFD_DEVINFO_SESSION_AVAIL | WFD_DEVINFO_WSD | WFD_DEVINFO_PC_TDLS | WFD_DEVINFO_HDCP_SUPPORT); + } + else + { + + // available for WFD session + WiFi Direct mode + WSD ( WFD Service Discovery ) + RTW_PUT_BE16(wfdie + wfdielen, pwfd_info->wfd_device_type | WFD_DEVINFO_SESSION_AVAIL | WFD_DEVINFO_WSD | WFD_DEVINFO_HDCP_SUPPORT); + } + } + } + else + { + if ( pwdinfo->wfd_tdls_enable ) + { + RTW_PUT_BE16(wfdie + wfdielen, pwfd_info->wfd_device_type | WFD_DEVINFO_WSD |WFD_DEVINFO_PC_TDLS | WFD_DEVINFO_HDCP_SUPPORT); + } + else + { + RTW_PUT_BE16(wfdie + wfdielen, pwfd_info->wfd_device_type | WFD_DEVINFO_WSD | WFD_DEVINFO_HDCP_SUPPORT); + } + + } + + wfdielen += 2; + + // Value2: + // Session Management Control Port + // Default TCP port for RTSP messages is 554 + RTW_PUT_BE16(wfdie + wfdielen, pwfd_info->rtsp_ctrlport ); + wfdielen += 2; + + // Value3: + // WFD Device Maximum Throughput + // 300Mbps is the maximum throughput + RTW_PUT_BE16(wfdie + wfdielen, 300); + wfdielen += 2; + + // Associated BSSID ATTR + // Type: + wfdie[ wfdielen++ ] = WFD_ATTR_ASSOC_BSSID; + + // Length: + // Note: In the WFD specification, the size of length field is 2. + RTW_PUT_BE16(wfdie + wfdielen, 0x0006); + wfdielen += 2; + + // Value: + // Associated BSSID + if ( check_fwstate(pmlmepriv, _FW_LINKED) == _TRUE ) + { + _rtw_memcpy( wfdie + wfdielen, &pmlmepriv->assoc_bssid[ 0 ], ETH_ALEN ); + } + else + { + _rtw_memset( wfdie + wfdielen, 0x00, ETH_ALEN ); + } + + wfdielen += ETH_ALEN; + + // Coupled Sink Information ATTR + // Type: + wfdie[ wfdielen++ ] = WFD_ATTR_COUPLED_SINK_INFO; + + // Length: + // Note: In the WFD specification, the size of length field is 2. + RTW_PUT_BE16(wfdie + wfdielen, 0x0007); + wfdielen += 2; + + // Value: + // Coupled Sink Status bitmap + // Not coupled/available for Coupling + wfdie[ wfdielen++ ] = 0; + // MAC Addr. + wfdie[ wfdielen++ ] = 0; + wfdie[ wfdielen++ ] = 0; + wfdie[ wfdielen++ ] = 0; + wfdie[ wfdielen++ ] = 0; + wfdie[ wfdielen++ ] = 0; + wfdie[ wfdielen++ ] = 0; + + if ( P2P_ROLE_GO == pwdinfo->role ) + { + // WFD Session Information ATTR + // Type: + wfdie[ wfdielen++ ] = WFD_ATTR_SESSION_INFO; + + // Length: + // Note: In the WFD specification, the size of length field is 2. + RTW_PUT_BE16(wfdie + wfdielen, 0x0000); + wfdielen += 2; + + // Todo: to add the list of WFD device info descriptor in WFD group. + + } +#ifdef CONFIG_CONCURRENT_MODE +#ifdef CONFIG_TDLS + if ( ( tunneled == 0 ) && ( padapter->pbuddy_adapter->wdinfo.wfd_tdls_enable == 1 ) ) + { + // Alternative MAC Address ATTR + // Type: + wfdie[ wfdielen++ ] = WFD_ATTR_ALTER_MAC; + + // Length: + // Note: In the WFD specification, the size of length field is 2. + RTW_PUT_BE16(wfdie + wfdielen, ETH_ALEN ); + wfdielen += 2; + + // Value: + // Alternative MAC Address + _rtw_memcpy( wfdie + wfdielen, &padapter->pbuddy_adapter->eeprompriv.mac_addr[ 0 ], ETH_ALEN ); + // This mac address is used to make the WFD session when TDLS is enable. + + wfdielen += ETH_ALEN; + } +#endif // CONFIG_TDLS +#endif // CONFIG_CONCURRENT_MODE + + pbuf = rtw_set_ie(pbuf, _VENDOR_SPECIFIC_IE_, wfdielen, (unsigned char *) wfdie, &len); + + return len; + +} + +u32 build_assoc_req_wfd_ie(struct wifidirect_info *pwdinfo, u8 *pbuf) +{ + u8 wfdie[ MAX_WFD_IE_LEN] = { 0x00 }; + u32 len=0, wfdielen = 0; + _adapter *padapter = NULL; + struct mlme_priv *pmlmepriv = NULL; + struct wifi_display_info *pwfd_info = NULL; + + // WFD OUI + if(rtw_p2p_chk_state(pwdinfo, P2P_STATE_NONE) || rtw_p2p_chk_state(pwdinfo, P2P_STATE_IDLE)) + { + return 0; + } + + padapter = pwdinfo->padapter; + pmlmepriv = &padapter->mlmepriv; + pwfd_info = padapter->wdinfo.wfd_info; + + wfdielen = 0; + wfdie[ wfdielen++ ] = 0x50; + wfdie[ wfdielen++ ] = 0x6F; + wfdie[ wfdielen++ ] = 0x9A; + wfdie[ wfdielen++ ] = 0x0A; // WFA WFD v1.0 + + // Commented by Albert 20110812 + // According to the WFD Specification, the probe request frame should contain 4 WFD attributes + // 1. WFD Device Information + // 2. Associated BSSID + // 3. Coupled Sink Information + + + // WFD Device Information ATTR + // Type: + wfdie[ wfdielen++ ] = WFD_ATTR_DEVICE_INFO; + + // Length: + // Note: In the WFD specification, the size of length field is 2. + RTW_PUT_BE16(wfdie + wfdielen, 0x0006); + wfdielen += 2; + + // Value1: + // WFD device information + // WFD primary sink + available for WFD session + WiFi Direct mode + WSD ( WFD Service Discovery ) + RTW_PUT_BE16(wfdie + wfdielen, pwfd_info->wfd_device_type | WFD_DEVINFO_SESSION_AVAIL | WFD_DEVINFO_WSD ); + wfdielen += 2; + + // Value2: + // Session Management Control Port + // Default TCP port for RTSP messages is 554 + RTW_PUT_BE16(wfdie + wfdielen, pwfd_info->rtsp_ctrlport ); + wfdielen += 2; + + // Value3: + // WFD Device Maximum Throughput + // 300Mbps is the maximum throughput + RTW_PUT_BE16(wfdie + wfdielen, 300); + wfdielen += 2; + + // Associated BSSID ATTR + // Type: + wfdie[ wfdielen++ ] = WFD_ATTR_ASSOC_BSSID; + + // Length: + // Note: In the WFD specification, the size of length field is 2. + RTW_PUT_BE16(wfdie + wfdielen, 0x0006); + wfdielen += 2; + + // Value: + // Associated BSSID + if ( check_fwstate(pmlmepriv, _FW_LINKED) == _TRUE ) + { + _rtw_memcpy( wfdie + wfdielen, &pmlmepriv->assoc_bssid[ 0 ], ETH_ALEN ); + } + else + { + _rtw_memset( wfdie + wfdielen, 0x00, ETH_ALEN ); + } + + wfdielen += ETH_ALEN; + + // Coupled Sink Information ATTR + // Type: + wfdie[ wfdielen++ ] = WFD_ATTR_COUPLED_SINK_INFO; + + // Length: + // Note: In the WFD specification, the size of length field is 2. + RTW_PUT_BE16(wfdie + wfdielen, 0x0007); + wfdielen += 2; + + // Value: + // Coupled Sink Status bitmap + // Not coupled/available for Coupling + wfdie[ wfdielen++ ] = 0; + // MAC Addr. + wfdie[ wfdielen++ ] = 0; + wfdie[ wfdielen++ ] = 0; + wfdie[ wfdielen++ ] = 0; + wfdie[ wfdielen++ ] = 0; + wfdie[ wfdielen++ ] = 0; + wfdie[ wfdielen++ ] = 0; + + pbuf = rtw_set_ie(pbuf, _VENDOR_SPECIFIC_IE_, wfdielen, (unsigned char *) wfdie, &len); + + return len; + +} + +u32 build_assoc_resp_wfd_ie(struct wifidirect_info *pwdinfo, u8 *pbuf) +{ + u8 wfdie[ MAX_WFD_IE_LEN] = { 0x00 }; + u32 len=0, wfdielen = 0; + _adapter *padapter = pwdinfo->padapter; + struct mlme_priv *pmlmepriv = &padapter->mlmepriv; + struct wifi_display_info* pwfd_info = padapter->wdinfo.wfd_info; + + // WFD OUI + wfdielen = 0; + wfdie[ wfdielen++ ] = 0x50; + wfdie[ wfdielen++ ] = 0x6F; + wfdie[ wfdielen++ ] = 0x9A; + wfdie[ wfdielen++ ] = 0x0A; // WFA WFD v1.0 + + // Commented by Albert 20110812 + // According to the WFD Specification, the probe request frame should contain 4 WFD attributes + // 1. WFD Device Information + // 2. Associated BSSID + // 3. Coupled Sink Information + + + // WFD Device Information ATTR + // Type: + wfdie[ wfdielen++ ] = WFD_ATTR_DEVICE_INFO; + + // Length: + // Note: In the WFD specification, the size of length field is 2. + RTW_PUT_BE16(wfdie + wfdielen, 0x0006); + wfdielen += 2; + + // Value1: + // WFD device information + // WFD primary sink + available for WFD session + WiFi Direct mode + WSD ( WFD Service Discovery ) + RTW_PUT_BE16(wfdie + wfdielen, pwfd_info->wfd_device_type | WFD_DEVINFO_SESSION_AVAIL | WFD_DEVINFO_WSD ); + wfdielen += 2; + + // Value2: + // Session Management Control Port + // Default TCP port for RTSP messages is 554 + RTW_PUT_BE16(wfdie + wfdielen, pwfd_info->rtsp_ctrlport ); + wfdielen += 2; + + // Value3: + // WFD Device Maximum Throughput + // 300Mbps is the maximum throughput + RTW_PUT_BE16(wfdie + wfdielen, 300); + wfdielen += 2; + + // Associated BSSID ATTR + // Type: + wfdie[ wfdielen++ ] = WFD_ATTR_ASSOC_BSSID; + + // Length: + // Note: In the WFD specification, the size of length field is 2. + RTW_PUT_BE16(wfdie + wfdielen, 0x0006); + wfdielen += 2; + + // Value: + // Associated BSSID + if ( check_fwstate(pmlmepriv, _FW_LINKED) == _TRUE ) + { + _rtw_memcpy( wfdie + wfdielen, &pmlmepriv->assoc_bssid[ 0 ], ETH_ALEN ); + } + else + { + _rtw_memset( wfdie + wfdielen, 0x00, ETH_ALEN ); + } + + wfdielen += ETH_ALEN; + + // Coupled Sink Information ATTR + // Type: + wfdie[ wfdielen++ ] = WFD_ATTR_COUPLED_SINK_INFO; + + // Length: + // Note: In the WFD specification, the size of length field is 2. + RTW_PUT_BE16(wfdie + wfdielen, 0x0007); + wfdielen += 2; + + // Value: + // Coupled Sink Status bitmap + // Not coupled/available for Coupling + wfdie[ wfdielen++ ] = 0; + // MAC Addr. + wfdie[ wfdielen++ ] = 0; + wfdie[ wfdielen++ ] = 0; + wfdie[ wfdielen++ ] = 0; + wfdie[ wfdielen++ ] = 0; + wfdie[ wfdielen++ ] = 0; + wfdie[ wfdielen++ ] = 0; + + pbuf = rtw_set_ie(pbuf, _VENDOR_SPECIFIC_IE_, wfdielen, (unsigned char *) wfdie, &len); + + return len; + +} + +u32 build_nego_req_wfd_ie(struct wifidirect_info *pwdinfo, u8 *pbuf) +{ + u8 wfdie[ MAX_WFD_IE_LEN] = { 0x00 }; + u32 len=0, wfdielen = 0; + _adapter *padapter = pwdinfo->padapter; + struct mlme_priv *pmlmepriv = &padapter->mlmepriv; + struct wifi_display_info* pwfd_info = padapter->wdinfo.wfd_info; + + // WFD OUI + wfdielen = 0; + wfdie[ wfdielen++ ] = 0x50; + wfdie[ wfdielen++ ] = 0x6F; + wfdie[ wfdielen++ ] = 0x9A; + wfdie[ wfdielen++ ] = 0x0A; // WFA WFD v1.0 + + // Commented by Albert 20110825 + // According to the WFD Specification, the negotiation request frame should contain 3 WFD attributes + // 1. WFD Device Information + // 2. Associated BSSID ( Optional ) + // 3. Local IP Adress ( Optional ) + + + // WFD Device Information ATTR + // Type: + wfdie[ wfdielen++ ] = WFD_ATTR_DEVICE_INFO; + + // Length: + // Note: In the WFD specification, the size of length field is 2. + RTW_PUT_BE16(wfdie + wfdielen, 0x0006); + wfdielen += 2; + + // Value1: + // WFD device information + // WFD primary sink + WiFi Direct mode + WSD ( WFD Service Discovery ) + WFD Session Available + RTW_PUT_BE16(wfdie + wfdielen, pwfd_info->wfd_device_type | WFD_DEVINFO_WSD | WFD_DEVINFO_SESSION_AVAIL); + wfdielen += 2; + + // Value2: + // Session Management Control Port + // Default TCP port for RTSP messages is 554 + RTW_PUT_BE16(wfdie + wfdielen, pwfd_info->rtsp_ctrlport ); + wfdielen += 2; + + // Value3: + // WFD Device Maximum Throughput + // 300Mbps is the maximum throughput + RTW_PUT_BE16(wfdie + wfdielen, 300); + wfdielen += 2; + + // Associated BSSID ATTR + // Type: + wfdie[ wfdielen++ ] = WFD_ATTR_ASSOC_BSSID; + + // Length: + // Note: In the WFD specification, the size of length field is 2. + RTW_PUT_BE16(wfdie + wfdielen, 0x0006); + wfdielen += 2; + + // Value: + // Associated BSSID + if ( check_fwstate(pmlmepriv, _FW_LINKED) == _TRUE ) + { + _rtw_memcpy( wfdie + wfdielen, &pmlmepriv->assoc_bssid[ 0 ], ETH_ALEN ); + } + else + { + _rtw_memset( wfdie + wfdielen, 0x00, ETH_ALEN ); + } + + wfdielen += ETH_ALEN; + + // Coupled Sink Information ATTR + // Type: + wfdie[ wfdielen++ ] = WFD_ATTR_COUPLED_SINK_INFO; + + // Length: + // Note: In the WFD specification, the size of length field is 2. + RTW_PUT_BE16(wfdie + wfdielen, 0x0007); + wfdielen += 2; + + // Value: + // Coupled Sink Status bitmap + // Not coupled/available for Coupling + wfdie[ wfdielen++ ] = 0; + // MAC Addr. + wfdie[ wfdielen++ ] = 0; + wfdie[ wfdielen++ ] = 0; + wfdie[ wfdielen++ ] = 0; + wfdie[ wfdielen++ ] = 0; + wfdie[ wfdielen++ ] = 0; + wfdie[ wfdielen++ ] = 0; + + pbuf = rtw_set_ie(pbuf, _VENDOR_SPECIFIC_IE_, wfdielen, (unsigned char *) wfdie, &len); + + return len; + +} + +u32 build_nego_resp_wfd_ie(struct wifidirect_info *pwdinfo, u8 *pbuf) +{ + u8 wfdie[ MAX_WFD_IE_LEN] = { 0x00 }; + u32 len=0, wfdielen = 0; + _adapter *padapter = pwdinfo->padapter; + struct mlme_priv *pmlmepriv = &padapter->mlmepriv; + struct wifi_display_info* pwfd_info = padapter->wdinfo.wfd_info; + + // WFD OUI + wfdielen = 0; + wfdie[ wfdielen++ ] = 0x50; + wfdie[ wfdielen++ ] = 0x6F; + wfdie[ wfdielen++ ] = 0x9A; + wfdie[ wfdielen++ ] = 0x0A; // WFA WFD v1.0 + + // Commented by Albert 20110825 + // According to the WFD Specification, the negotiation request frame should contain 3 WFD attributes + // 1. WFD Device Information + // 2. Associated BSSID ( Optional ) + // 3. Local IP Adress ( Optional ) + + + // WFD Device Information ATTR + // Type: + wfdie[ wfdielen++ ] = WFD_ATTR_DEVICE_INFO; + + // Length: + // Note: In the WFD specification, the size of length field is 2. + RTW_PUT_BE16(wfdie + wfdielen, 0x0006); + wfdielen += 2; + + // Value1: + // WFD device information + // WFD primary sink + WiFi Direct mode + WSD ( WFD Service Discovery ) + WFD Session Available + RTW_PUT_BE16(wfdie + wfdielen, pwfd_info->wfd_device_type | WFD_DEVINFO_WSD | WFD_DEVINFO_SESSION_AVAIL); + wfdielen += 2; + + // Value2: + // Session Management Control Port + // Default TCP port for RTSP messages is 554 + RTW_PUT_BE16(wfdie + wfdielen, pwfd_info->rtsp_ctrlport ); + wfdielen += 2; + + // Value3: + // WFD Device Maximum Throughput + // 300Mbps is the maximum throughput + RTW_PUT_BE16(wfdie + wfdielen, 300); + wfdielen += 2; + + // Associated BSSID ATTR + // Type: + wfdie[ wfdielen++ ] = WFD_ATTR_ASSOC_BSSID; + + // Length: + // Note: In the WFD specification, the size of length field is 2. + RTW_PUT_BE16(wfdie + wfdielen, 0x0006); + wfdielen += 2; + + // Value: + // Associated BSSID + if ( check_fwstate(pmlmepriv, _FW_LINKED) == _TRUE ) + { + _rtw_memcpy( wfdie + wfdielen, &pmlmepriv->assoc_bssid[ 0 ], ETH_ALEN ); + } + else + { + _rtw_memset( wfdie + wfdielen, 0x00, ETH_ALEN ); + } + + wfdielen += ETH_ALEN; + + // Coupled Sink Information ATTR + // Type: + wfdie[ wfdielen++ ] = WFD_ATTR_COUPLED_SINK_INFO; + + // Length: + // Note: In the WFD specification, the size of length field is 2. + RTW_PUT_BE16(wfdie + wfdielen, 0x0007); + wfdielen += 2; + + // Value: + // Coupled Sink Status bitmap + // Not coupled/available for Coupling + wfdie[ wfdielen++ ] = 0; + // MAC Addr. + wfdie[ wfdielen++ ] = 0; + wfdie[ wfdielen++ ] = 0; + wfdie[ wfdielen++ ] = 0; + wfdie[ wfdielen++ ] = 0; + wfdie[ wfdielen++ ] = 0; + wfdie[ wfdielen++ ] = 0; + + + pbuf = rtw_set_ie(pbuf, _VENDOR_SPECIFIC_IE_, wfdielen, (unsigned char *) wfdie, &len); + + return len; + +} + +u32 build_nego_confirm_wfd_ie(struct wifidirect_info *pwdinfo, u8 *pbuf) +{ + u8 wfdie[ MAX_WFD_IE_LEN] = { 0x00 }; + u32 len=0, wfdielen = 0; + _adapter *padapter = pwdinfo->padapter; + struct mlme_priv *pmlmepriv = &padapter->mlmepriv; + struct wifi_display_info* pwfd_info = padapter->wdinfo.wfd_info; + + // WFD OUI + wfdielen = 0; + wfdie[ wfdielen++ ] = 0x50; + wfdie[ wfdielen++ ] = 0x6F; + wfdie[ wfdielen++ ] = 0x9A; + wfdie[ wfdielen++ ] = 0x0A; // WFA WFD v1.0 + + // Commented by Albert 20110825 + // According to the WFD Specification, the negotiation request frame should contain 3 WFD attributes + // 1. WFD Device Information + // 2. Associated BSSID ( Optional ) + // 3. Local IP Adress ( Optional ) + + + // WFD Device Information ATTR + // Type: + wfdie[ wfdielen++ ] = WFD_ATTR_DEVICE_INFO; + + // Length: + // Note: In the WFD specification, the size of length field is 2. + RTW_PUT_BE16(wfdie + wfdielen, 0x0006); + wfdielen += 2; + + // Value1: + // WFD device information + // WFD primary sink + WiFi Direct mode + WSD ( WFD Service Discovery ) + WFD Session Available + RTW_PUT_BE16(wfdie + wfdielen, pwfd_info->wfd_device_type | WFD_DEVINFO_WSD | WFD_DEVINFO_SESSION_AVAIL); + wfdielen += 2; + + // Value2: + // Session Management Control Port + // Default TCP port for RTSP messages is 554 + RTW_PUT_BE16(wfdie + wfdielen, pwfd_info->rtsp_ctrlport ); + wfdielen += 2; + + // Value3: + // WFD Device Maximum Throughput + // 300Mbps is the maximum throughput + RTW_PUT_BE16(wfdie + wfdielen, 300); + wfdielen += 2; + + // Associated BSSID ATTR + // Type: + wfdie[ wfdielen++ ] = WFD_ATTR_ASSOC_BSSID; + + // Length: + // Note: In the WFD specification, the size of length field is 2. + RTW_PUT_BE16(wfdie + wfdielen, 0x0006); + wfdielen += 2; + + // Value: + // Associated BSSID + if ( check_fwstate(pmlmepriv, _FW_LINKED) == _TRUE ) + { + _rtw_memcpy( wfdie + wfdielen, &pmlmepriv->assoc_bssid[ 0 ], ETH_ALEN ); + } + else + { + _rtw_memset( wfdie + wfdielen, 0x00, ETH_ALEN ); + } + + wfdielen += ETH_ALEN; + + // Coupled Sink Information ATTR + // Type: + wfdie[ wfdielen++ ] = WFD_ATTR_COUPLED_SINK_INFO; + + // Length: + // Note: In the WFD specification, the size of length field is 2. + RTW_PUT_BE16(wfdie + wfdielen, 0x0007); + wfdielen += 2; + + // Value: + // Coupled Sink Status bitmap + // Not coupled/available for Coupling + wfdie[ wfdielen++ ] = 0; + // MAC Addr. + wfdie[ wfdielen++ ] = 0; + wfdie[ wfdielen++ ] = 0; + wfdie[ wfdielen++ ] = 0; + wfdie[ wfdielen++ ] = 0; + wfdie[ wfdielen++ ] = 0; + wfdie[ wfdielen++ ] = 0; + + + pbuf = rtw_set_ie(pbuf, _VENDOR_SPECIFIC_IE_, wfdielen, (unsigned char *) wfdie, &len); + + return len; + +} + +u32 build_invitation_req_wfd_ie(struct wifidirect_info *pwdinfo, u8 *pbuf) +{ + u8 wfdie[ MAX_WFD_IE_LEN] = { 0x00 }; + u32 len=0, wfdielen = 0; + _adapter *padapter = pwdinfo->padapter; + struct mlme_priv *pmlmepriv = &padapter->mlmepriv; + struct wifi_display_info* pwfd_info = padapter->wdinfo.wfd_info; + + // WFD OUI + wfdielen = 0; + wfdie[ wfdielen++ ] = 0x50; + wfdie[ wfdielen++ ] = 0x6F; + wfdie[ wfdielen++ ] = 0x9A; + wfdie[ wfdielen++ ] = 0x0A; // WFA WFD v1.0 + + // Commented by Albert 20110825 + // According to the WFD Specification, the provision discovery request frame should contain 3 WFD attributes + // 1. WFD Device Information + // 2. Associated BSSID ( Optional ) + // 3. Local IP Adress ( Optional ) + + + // WFD Device Information ATTR + // Type: + wfdie[ wfdielen++ ] = WFD_ATTR_DEVICE_INFO; + + // Length: + // Note: In the WFD specification, the size of length field is 2. + RTW_PUT_BE16(wfdie + wfdielen, 0x0006); + wfdielen += 2; + + // Value1: + // WFD device information + // WFD primary sink + available for WFD session + WiFi Direct mode + WSD ( WFD Service Discovery ) + RTW_PUT_BE16(wfdie + wfdielen, pwfd_info->wfd_device_type | WFD_DEVINFO_SESSION_AVAIL | WFD_DEVINFO_WSD ); + wfdielen += 2; + + // Value2: + // Session Management Control Port + // Default TCP port for RTSP messages is 554 + RTW_PUT_BE16(wfdie + wfdielen, pwfd_info->rtsp_ctrlport ); + wfdielen += 2; + + // Value3: + // WFD Device Maximum Throughput + // 300Mbps is the maximum throughput + RTW_PUT_BE16(wfdie + wfdielen, 300); + wfdielen += 2; + + // Associated BSSID ATTR + // Type: + wfdie[ wfdielen++ ] = WFD_ATTR_ASSOC_BSSID; + + // Length: + // Note: In the WFD specification, the size of length field is 2. + RTW_PUT_BE16(wfdie + wfdielen, 0x0006); + wfdielen += 2; + + // Value: + // Associated BSSID + if ( check_fwstate(pmlmepriv, _FW_LINKED) == _TRUE ) + { + _rtw_memcpy( wfdie + wfdielen, &pmlmepriv->assoc_bssid[ 0 ], ETH_ALEN ); + } + else + { + _rtw_memset( wfdie + wfdielen, 0x00, ETH_ALEN ); + } + + wfdielen += ETH_ALEN; + + // Coupled Sink Information ATTR + // Type: + wfdie[ wfdielen++ ] = WFD_ATTR_COUPLED_SINK_INFO; + + // Length: + // Note: In the WFD specification, the size of length field is 2. + RTW_PUT_BE16(wfdie + wfdielen, 0x0007); + wfdielen += 2; + + // Value: + // Coupled Sink Status bitmap + // Not coupled/available for Coupling + wfdie[ wfdielen++ ] = 0; + // MAC Addr. + wfdie[ wfdielen++ ] = 0; + wfdie[ wfdielen++ ] = 0; + wfdie[ wfdielen++ ] = 0; + wfdie[ wfdielen++ ] = 0; + wfdie[ wfdielen++ ] = 0; + wfdie[ wfdielen++ ] = 0; + + if ( P2P_ROLE_GO == pwdinfo->role ) + { + // WFD Session Information ATTR + // Type: + wfdie[ wfdielen++ ] = WFD_ATTR_SESSION_INFO; + + // Length: + // Note: In the WFD specification, the size of length field is 2. + RTW_PUT_BE16(wfdie + wfdielen, 0x0000); + wfdielen += 2; + + // Todo: to add the list of WFD device info descriptor in WFD group. + + } + + pbuf = rtw_set_ie(pbuf, _VENDOR_SPECIFIC_IE_, wfdielen, (unsigned char *) wfdie, &len); + + return len; + +} + +u32 build_invitation_resp_wfd_ie(struct wifidirect_info *pwdinfo, u8 *pbuf) +{ + u8 wfdie[ MAX_WFD_IE_LEN] = { 0x00 }; + u32 len=0, wfdielen = 0; + _adapter *padapter = pwdinfo->padapter; + struct mlme_priv *pmlmepriv = &padapter->mlmepriv; + struct wifi_display_info* pwfd_info = padapter->wdinfo.wfd_info; + + // WFD OUI + wfdielen = 0; + wfdie[ wfdielen++ ] = 0x50; + wfdie[ wfdielen++ ] = 0x6F; + wfdie[ wfdielen++ ] = 0x9A; + wfdie[ wfdielen++ ] = 0x0A; // WFA WFD v1.0 + + // Commented by Albert 20110825 + // According to the WFD Specification, the provision discovery request frame should contain 3 WFD attributes + // 1. WFD Device Information + // 2. Associated BSSID ( Optional ) + // 3. Local IP Adress ( Optional ) + + + // WFD Device Information ATTR + // Type: + wfdie[ wfdielen++ ] = WFD_ATTR_DEVICE_INFO; + + // Length: + // Note: In the WFD specification, the size of length field is 2. + RTW_PUT_BE16(wfdie + wfdielen, 0x0006); + wfdielen += 2; + + // Value1: + // WFD device information + // WFD primary sink + available for WFD session + WiFi Direct mode + WSD ( WFD Service Discovery ) + RTW_PUT_BE16(wfdie + wfdielen, pwfd_info->wfd_device_type | WFD_DEVINFO_SESSION_AVAIL | WFD_DEVINFO_WSD ); + wfdielen += 2; + + // Value2: + // Session Management Control Port + // Default TCP port for RTSP messages is 554 + RTW_PUT_BE16(wfdie + wfdielen, pwfd_info->rtsp_ctrlport ); + wfdielen += 2; + + // Value3: + // WFD Device Maximum Throughput + // 300Mbps is the maximum throughput + RTW_PUT_BE16(wfdie + wfdielen, 300); + wfdielen += 2; + + // Associated BSSID ATTR + // Type: + wfdie[ wfdielen++ ] = WFD_ATTR_ASSOC_BSSID; + + // Length: + // Note: In the WFD specification, the size of length field is 2. + RTW_PUT_BE16(wfdie + wfdielen, 0x0006); + wfdielen += 2; + + // Value: + // Associated BSSID + if ( check_fwstate(pmlmepriv, _FW_LINKED) == _TRUE ) + { + _rtw_memcpy( wfdie + wfdielen, &pmlmepriv->assoc_bssid[ 0 ], ETH_ALEN ); + } + else + { + _rtw_memset( wfdie + wfdielen, 0x00, ETH_ALEN ); + } + + wfdielen += ETH_ALEN; + + // Coupled Sink Information ATTR + // Type: + wfdie[ wfdielen++ ] = WFD_ATTR_COUPLED_SINK_INFO; + + // Length: + // Note: In the WFD specification, the size of length field is 2. + RTW_PUT_BE16(wfdie + wfdielen, 0x0007); + wfdielen += 2; + + // Value: + // Coupled Sink Status bitmap + // Not coupled/available for Coupling + wfdie[ wfdielen++ ] = 0; + // MAC Addr. + wfdie[ wfdielen++ ] = 0; + wfdie[ wfdielen++ ] = 0; + wfdie[ wfdielen++ ] = 0; + wfdie[ wfdielen++ ] = 0; + wfdie[ wfdielen++ ] = 0; + wfdie[ wfdielen++ ] = 0; + + if ( P2P_ROLE_GO == pwdinfo->role ) + { + // WFD Session Information ATTR + // Type: + wfdie[ wfdielen++ ] = WFD_ATTR_SESSION_INFO; + + // Length: + // Note: In the WFD specification, the size of length field is 2. + RTW_PUT_BE16(wfdie + wfdielen, 0x0000); + wfdielen += 2; + + // Todo: to add the list of WFD device info descriptor in WFD group. + + } + + pbuf = rtw_set_ie(pbuf, _VENDOR_SPECIFIC_IE_, wfdielen, (unsigned char *) wfdie, &len); + + return len; + +} + +u32 build_provdisc_req_wfd_ie(struct wifidirect_info *pwdinfo, u8 *pbuf) +{ + u8 wfdie[ MAX_WFD_IE_LEN] = { 0x00 }; + u32 len=0, wfdielen = 0; + _adapter *padapter = pwdinfo->padapter; + struct mlme_priv *pmlmepriv = &padapter->mlmepriv; + struct wifi_display_info* pwfd_info = padapter->wdinfo.wfd_info; + + // WFD OUI + wfdielen = 0; + wfdie[ wfdielen++ ] = 0x50; + wfdie[ wfdielen++ ] = 0x6F; + wfdie[ wfdielen++ ] = 0x9A; + wfdie[ wfdielen++ ] = 0x0A; // WFA WFD v1.0 + + // Commented by Albert 20110825 + // According to the WFD Specification, the provision discovery request frame should contain 3 WFD attributes + // 1. WFD Device Information + // 2. Associated BSSID ( Optional ) + // 3. Local IP Adress ( Optional ) + + + // WFD Device Information ATTR + // Type: + wfdie[ wfdielen++ ] = WFD_ATTR_DEVICE_INFO; + + // Length: + // Note: In the WFD specification, the size of length field is 2. + RTW_PUT_BE16(wfdie + wfdielen, 0x0006); + wfdielen += 2; + + // Value1: + // WFD device information + // WFD primary sink + available for WFD session + WiFi Direct mode + WSD ( WFD Service Discovery ) + RTW_PUT_BE16(wfdie + wfdielen, pwfd_info->wfd_device_type | WFD_DEVINFO_SESSION_AVAIL | WFD_DEVINFO_WSD ); + wfdielen += 2; + + // Value2: + // Session Management Control Port + // Default TCP port for RTSP messages is 554 + RTW_PUT_BE16(wfdie + wfdielen, pwfd_info->rtsp_ctrlport ); + wfdielen += 2; + + // Value3: + // WFD Device Maximum Throughput + // 300Mbps is the maximum throughput + RTW_PUT_BE16(wfdie + wfdielen, 300); + wfdielen += 2; + + // Associated BSSID ATTR + // Type: + wfdie[ wfdielen++ ] = WFD_ATTR_ASSOC_BSSID; + + // Length: + // Note: In the WFD specification, the size of length field is 2. + RTW_PUT_BE16(wfdie + wfdielen, 0x0006); + wfdielen += 2; + + // Value: + // Associated BSSID + if ( check_fwstate(pmlmepriv, _FW_LINKED) == _TRUE ) + { + _rtw_memcpy( wfdie + wfdielen, &pmlmepriv->assoc_bssid[ 0 ], ETH_ALEN ); + } + else + { + _rtw_memset( wfdie + wfdielen, 0x00, ETH_ALEN ); + } + + wfdielen += ETH_ALEN; + + // Coupled Sink Information ATTR + // Type: + wfdie[ wfdielen++ ] = WFD_ATTR_COUPLED_SINK_INFO; + + // Length: + // Note: In the WFD specification, the size of length field is 2. + RTW_PUT_BE16(wfdie + wfdielen, 0x0007); + wfdielen += 2; + + // Value: + // Coupled Sink Status bitmap + // Not coupled/available for Coupling + wfdie[ wfdielen++ ] = 0; + // MAC Addr. + wfdie[ wfdielen++ ] = 0; + wfdie[ wfdielen++ ] = 0; + wfdie[ wfdielen++ ] = 0; + wfdie[ wfdielen++ ] = 0; + wfdie[ wfdielen++ ] = 0; + wfdie[ wfdielen++ ] = 0; + + + pbuf = rtw_set_ie(pbuf, _VENDOR_SPECIFIC_IE_, wfdielen, (unsigned char *) wfdie, &len); + + return len; + +} + +u32 build_provdisc_resp_wfd_ie(struct wifidirect_info *pwdinfo, u8 *pbuf) +{ + u8 wfdie[ MAX_WFD_IE_LEN] = { 0x00 }; + u32 len=0, wfdielen = 0; + _adapter *padapter = pwdinfo->padapter; + struct mlme_priv *pmlmepriv = &padapter->mlmepriv; + struct wifi_display_info* pwfd_info = padapter->wdinfo.wfd_info; + + // WFD OUI + wfdielen = 0; + wfdie[ wfdielen++ ] = 0x50; + wfdie[ wfdielen++ ] = 0x6F; + wfdie[ wfdielen++ ] = 0x9A; + wfdie[ wfdielen++ ] = 0x0A; // WFA WFD v1.0 + + // Commented by Albert 20110825 + // According to the WFD Specification, the provision discovery response frame should contain 3 WFD attributes + // 1. WFD Device Information + // 2. Associated BSSID ( Optional ) + // 3. Local IP Adress ( Optional ) + + + // WFD Device Information ATTR + // Type: + wfdie[ wfdielen++ ] = WFD_ATTR_DEVICE_INFO; + + // Length: + // Note: In the WFD specification, the size of length field is 2. + RTW_PUT_BE16(wfdie + wfdielen, 0x0006); + wfdielen += 2; + + // Value1: + // WFD device information + // WFD primary sink + available for WFD session + WiFi Direct mode + WSD ( WFD Service Discovery ) + RTW_PUT_BE16(wfdie + wfdielen, pwfd_info->wfd_device_type | WFD_DEVINFO_SESSION_AVAIL | WFD_DEVINFO_WSD ); + wfdielen += 2; + + // Value2: + // Session Management Control Port + // Default TCP port for RTSP messages is 554 + RTW_PUT_BE16(wfdie + wfdielen, pwfd_info->rtsp_ctrlport ); + wfdielen += 2; + + // Value3: + // WFD Device Maximum Throughput + // 300Mbps is the maximum throughput + RTW_PUT_BE16(wfdie + wfdielen, 300); + wfdielen += 2; + + // Associated BSSID ATTR + // Type: + wfdie[ wfdielen++ ] = WFD_ATTR_ASSOC_BSSID; + + // Length: + // Note: In the WFD specification, the size of length field is 2. + RTW_PUT_BE16(wfdie + wfdielen, 0x0006); + wfdielen += 2; + + // Value: + // Associated BSSID + if ( check_fwstate(pmlmepriv, _FW_LINKED) == _TRUE ) + { + _rtw_memcpy( wfdie + wfdielen, &pmlmepriv->assoc_bssid[ 0 ], ETH_ALEN ); + } + else + { + _rtw_memset( wfdie + wfdielen, 0x00, ETH_ALEN ); + } + + wfdielen += ETH_ALEN; + + // Coupled Sink Information ATTR + // Type: + wfdie[ wfdielen++ ] = WFD_ATTR_COUPLED_SINK_INFO; + + // Length: + // Note: In the WFD specification, the size of length field is 2. + RTW_PUT_BE16(wfdie + wfdielen, 0x0007); + wfdielen += 2; + + // Value: + // Coupled Sink Status bitmap + // Not coupled/available for Coupling + wfdie[ wfdielen++ ] = 0; + // MAC Addr. + wfdie[ wfdielen++ ] = 0; + wfdie[ wfdielen++ ] = 0; + wfdie[ wfdielen++ ] = 0; + wfdie[ wfdielen++ ] = 0; + wfdie[ wfdielen++ ] = 0; + wfdie[ wfdielen++ ] = 0; + + pbuf = rtw_set_ie(pbuf, _VENDOR_SPECIFIC_IE_, wfdielen, (unsigned char *) wfdie, &len); + + return len; + +} + +#endif //CONFIG_WFD + +u32 build_probe_resp_p2p_ie(struct wifidirect_info *pwdinfo, u8 *pbuf) +{ + u8 p2pie[ MAX_P2P_IE_LEN] = { 0x00 }; + u32 len=0, p2pielen = 0; +#ifdef CONFIG_INTEL_WIDI + struct mlme_priv *pmlmepriv = &(pwdinfo->padapter->mlmepriv); + u8 zero_array_check[L2SDTA_SERVICE_VE_LEN] = { 0x00 }; + u8 widi_version = 0, i = 0; + + if( _rtw_memcmp( pmlmepriv->sa_ext, zero_array_check, L2SDTA_SERVICE_VE_LEN ) == _FALSE ) + { + widi_version = 35; + } + else if( pmlmepriv->num_p2p_sdt != 0 ) + { + widi_version = 40; + } +#endif //CONFIG_INTEL_WIDI + + // P2P OUI + p2pielen = 0; + p2pie[ p2pielen++ ] = 0x50; + p2pie[ p2pielen++ ] = 0x6F; + p2pie[ p2pielen++ ] = 0x9A; + p2pie[ p2pielen++ ] = 0x09; // WFA P2P v1.0 + + // Commented by Albert 20100907 + // According to the P2P Specification, the probe response frame should contain 5 P2P attributes + // 1. P2P Capability + // 2. Extended Listen Timing + // 3. Notice of Absence ( NOA ) ( Only GO needs this ) + // 4. Device Info + // 5. Group Info ( Only GO need this ) + + // P2P Capability ATTR + // Type: + p2pie[ p2pielen++ ] = P2P_ATTR_CAPABILITY; + + // Length: + //*(u16*) ( p2pie + p2pielen ) = cpu_to_le16( 0x0002 ); + RTW_PUT_LE16(p2pie + p2pielen, 0x0002); + p2pielen += 2; + + // Value: + // Device Capability Bitmap, 1 byte + p2pie[ p2pielen++ ] = DMP_P2P_DEVCAP_SUPPORT; + + // Group Capability Bitmap, 1 byte + if(rtw_p2p_chk_role(pwdinfo, P2P_ROLE_GO)) + { + p2pie[ p2pielen ] = (P2P_GRPCAP_GO | P2P_GRPCAP_INTRABSS); + + if(rtw_p2p_chk_state(pwdinfo, P2P_STATE_PROVISIONING_ING)) + p2pie[ p2pielen ] |= P2P_GRPCAP_GROUP_FORMATION; + + p2pielen++; + } + else if ( rtw_p2p_chk_role(pwdinfo, P2P_ROLE_DEVICE) ) + { + // Group Capability Bitmap, 1 byte + if ( pwdinfo->persistent_supported ) + p2pie[ p2pielen++ ] = P2P_GRPCAP_PERSISTENT_GROUP | DMP_P2P_GRPCAP_SUPPORT; + else + p2pie[ p2pielen++ ] = DMP_P2P_GRPCAP_SUPPORT; + + } + + // Extended Listen Timing ATTR + // Type: + p2pie[ p2pielen++ ] = P2P_ATTR_EX_LISTEN_TIMING; + + // Length: + //*(u16*) ( p2pie + p2pielen ) = cpu_to_le16( 0x0004 ); + RTW_PUT_LE16(p2pie + p2pielen, 0x0004); + p2pielen += 2; + + // Value: + // Availability Period + //*(u16*) ( p2pie + p2pielen ) = cpu_to_le16( 0xFFFF ); + RTW_PUT_LE16(p2pie + p2pielen, 0xFFFF); + p2pielen += 2; + + // Availability Interval + //*(u16*) ( p2pie + p2pielen ) = cpu_to_le16( 0xFFFF ); + RTW_PUT_LE16(p2pie + p2pielen, 0xFFFF); + p2pielen += 2; + + + // Notice of Absence ATTR + // Type: + // Length: + // Value: + if(rtw_p2p_chk_role(pwdinfo, P2P_ROLE_GO)) + { + //go_add_noa_attr(pwdinfo); + } + + // Device Info ATTR + // Type: + p2pie[ p2pielen++ ] = P2P_ATTR_DEVICE_INFO; + + // Length: + // 21 -> P2P Device Address (6bytes) + Config Methods (2bytes) + Primary Device Type (8bytes) + // + NumofSecondDevType (1byte) + WPS Device Name ID field (2bytes) + WPS Device Name Len field (2bytes) + //*(u16*) ( p2pie + p2pielen ) = cpu_to_le16( 21 + pwdinfo->device_name_len ); +#ifdef CONFIG_INTEL_WIDI + if( widi_version == 35 ) + { + RTW_PUT_LE16(p2pie + p2pielen, 21 + 8 + pwdinfo->device_name_len); + } + else if( widi_version == 40 ) + { + RTW_PUT_LE16(p2pie + p2pielen, 21 + 8 * pmlmepriv->num_p2p_sdt + pwdinfo->device_name_len); + } + else +#endif //CONFIG_INTEL_WIDI + RTW_PUT_LE16(p2pie + p2pielen, 21 + pwdinfo->device_name_len); + p2pielen += 2; + + // Value: + // P2P Device Address + _rtw_memcpy( p2pie + p2pielen, pwdinfo->device_addr, ETH_ALEN ); + p2pielen += ETH_ALEN; + + // Config Method + // This field should be big endian. Noted by P2P specification. + //*(u16*) ( p2pie + p2pielen ) = cpu_to_be16( pwdinfo->supported_wps_cm ); + RTW_PUT_BE16(p2pie + p2pielen, pwdinfo->supported_wps_cm); + p2pielen += 2; + +#ifdef CONFIG_INTEL_WIDI + if( widi_version == 40 ) + { + // Primary Device Type + // Category ID + //*(u16*) ( p2pie + p2pielen ) = cpu_to_be16( WPS_PDT_CID_MULIT_MEDIA ); + RTW_PUT_BE16(p2pie + p2pielen, pmlmepriv->p2p_pdt_cid ); + p2pielen += 2; + + // OUI + //*(u32*) ( p2pie + p2pielen ) = cpu_to_be32( WPSOUI ); + RTW_PUT_BE32(p2pie + p2pielen, WPSOUI); + p2pielen += 4; + + // Sub Category ID + //*(u16*) ( p2pie + p2pielen ) = cpu_to_be16( WPS_PDT_SCID_MEDIA_SERVER ); + RTW_PUT_BE16(p2pie + p2pielen, pmlmepriv->p2p_pdt_scid); + p2pielen += 2; + } + else +#endif //CONFIG_INTEL_WIDI + { + // Primary Device Type + // Category ID + //*(u16*) ( p2pie + p2pielen ) = cpu_to_be16( WPS_PDT_CID_MULIT_MEDIA ); + RTW_PUT_BE16(p2pie + p2pielen, WPS_PDT_CID_MULIT_MEDIA); + p2pielen += 2; + + // OUI + //*(u32*) ( p2pie + p2pielen ) = cpu_to_be32( WPSOUI ); + RTW_PUT_BE32(p2pie + p2pielen, WPSOUI); + p2pielen += 4; + + // Sub Category ID + //*(u16*) ( p2pie + p2pielen ) = cpu_to_be16( WPS_PDT_SCID_MEDIA_SERVER ); + RTW_PUT_BE16(p2pie + p2pielen, WPS_PDT_SCID_MEDIA_SERVER); + p2pielen += 2; + } + + // Number of Secondary Device Types +#ifdef CONFIG_INTEL_WIDI + if( widi_version == 35 ) + { + p2pie[ p2pielen++ ] = 0x01; + + RTW_PUT_BE16(p2pie + p2pielen, WPS_PDT_CID_DISPLAYS); + p2pielen += 2; + + RTW_PUT_BE32(p2pie + p2pielen, INTEL_DEV_TYPE_OUI); + p2pielen += 4; + + RTW_PUT_BE16(p2pie + p2pielen, P2P_SCID_WIDI_CONSUMER_SINK); + p2pielen += 2; + } + else if( widi_version == 40 ) + { + p2pie[ p2pielen++ ] = pmlmepriv->num_p2p_sdt; + for( ; i < pmlmepriv->num_p2p_sdt; i++ ) + { + RTW_PUT_BE16(p2pie + p2pielen, pmlmepriv->p2p_sdt_cid[i]); + p2pielen += 2; + + RTW_PUT_BE32(p2pie + p2pielen, INTEL_DEV_TYPE_OUI); + p2pielen += 4; + + RTW_PUT_BE16(p2pie + p2pielen, pmlmepriv->p2p_sdt_scid[i]); + p2pielen += 2; + } + } + else +#endif //CONFIG_INTEL_WIDI + p2pie[ p2pielen++ ] = 0x00; // No Secondary Device Type List + + // Device Name + // Type: + //*(u16*) ( p2pie + p2pielen ) = cpu_to_be16( WPS_ATTR_DEVICE_NAME ); + RTW_PUT_BE16(p2pie + p2pielen, WPS_ATTR_DEVICE_NAME); + p2pielen += 2; + + // Length: + //*(u16*) ( p2pie + p2pielen ) = cpu_to_be16( pwdinfo->device_name_len ); + RTW_PUT_BE16(p2pie + p2pielen, pwdinfo->device_name_len); + p2pielen += 2; + + // Value: + _rtw_memcpy( p2pie + p2pielen, pwdinfo->device_name, pwdinfo->device_name_len ); + p2pielen += pwdinfo->device_name_len; + + // Group Info ATTR + // Type: + // Length: + // Value: + if(rtw_p2p_chk_role(pwdinfo, P2P_ROLE_GO)) + { + p2pielen += go_add_group_info_attr(pwdinfo, p2pie + p2pielen); + } + + + pbuf = rtw_set_ie(pbuf, _VENDOR_SPECIFIC_IE_, p2pielen, (unsigned char *) p2pie, &len); + + + return len; + +} + +u32 build_prov_disc_request_p2p_ie(struct wifidirect_info *pwdinfo, u8 *pbuf, u8* pssid, u8 ussidlen, u8* pdev_raddr ) +{ + u8 p2pie[ MAX_P2P_IE_LEN] = { 0x00 }; + u32 len=0, p2pielen = 0; + + // P2P OUI + p2pielen = 0; + p2pie[ p2pielen++ ] = 0x50; + p2pie[ p2pielen++ ] = 0x6F; + p2pie[ p2pielen++ ] = 0x9A; + p2pie[ p2pielen++ ] = 0x09; // WFA P2P v1.0 + + // Commented by Albert 20110301 + // According to the P2P Specification, the provision discovery request frame should contain 3 P2P attributes + // 1. P2P Capability + // 2. Device Info + // 3. Group ID ( When joining an operating P2P Group ) + + // P2P Capability ATTR + // Type: + p2pie[ p2pielen++ ] = P2P_ATTR_CAPABILITY; + + // Length: + //*(u16*) ( p2pie + p2pielen ) = cpu_to_le16( 0x0002 ); + RTW_PUT_LE16(p2pie + p2pielen, 0x0002); + p2pielen += 2; + + // Value: + // Device Capability Bitmap, 1 byte + p2pie[ p2pielen++ ] = DMP_P2P_DEVCAP_SUPPORT; + + // Group Capability Bitmap, 1 byte + if ( pwdinfo->persistent_supported ) + p2pie[ p2pielen++ ] = P2P_GRPCAP_PERSISTENT_GROUP | DMP_P2P_GRPCAP_SUPPORT; + else + p2pie[ p2pielen++ ] = DMP_P2P_GRPCAP_SUPPORT; + + + // Device Info ATTR + // Type: + p2pie[ p2pielen++ ] = P2P_ATTR_DEVICE_INFO; + + // Length: + // 21 -> P2P Device Address (6bytes) + Config Methods (2bytes) + Primary Device Type (8bytes) + // + NumofSecondDevType (1byte) + WPS Device Name ID field (2bytes) + WPS Device Name Len field (2bytes) + //*(u16*) ( p2pie + p2pielen ) = cpu_to_le16( 21 + pwdinfo->device_name_len ); + RTW_PUT_LE16(p2pie + p2pielen, 21 + pwdinfo->device_name_len); + p2pielen += 2; + + // Value: + // P2P Device Address + _rtw_memcpy( p2pie + p2pielen, pwdinfo->device_addr, ETH_ALEN ); + p2pielen += ETH_ALEN; + + // Config Method + // This field should be big endian. Noted by P2P specification. + if ( pwdinfo->ui_got_wps_info == P2P_GOT_WPSINFO_PBC ) + { + //*(u16*) ( p2pie + p2pielen ) = cpu_to_be16( WPS_CONFIG_METHOD_PBC ); + RTW_PUT_BE16(p2pie + p2pielen, WPS_CONFIG_METHOD_PBC); + } + else + { + //*(u16*) ( p2pie + p2pielen ) = cpu_to_be16( WPS_CONFIG_METHOD_DISPLAY ); + RTW_PUT_BE16(p2pie + p2pielen, WPS_CONFIG_METHOD_DISPLAY); + } + + p2pielen += 2; + + // Primary Device Type + // Category ID + //*(u16*) ( p2pie + p2pielen ) = cpu_to_be16( WPS_PDT_CID_MULIT_MEDIA ); + RTW_PUT_BE16(p2pie + p2pielen, WPS_PDT_CID_MULIT_MEDIA); + p2pielen += 2; + + // OUI + //*(u32*) ( p2pie + p2pielen ) = cpu_to_be32( WPSOUI ); + RTW_PUT_BE32(p2pie + p2pielen, WPSOUI); + p2pielen += 4; + + // Sub Category ID + //*(u16*) ( p2pie + p2pielen ) = cpu_to_be16( WPS_PDT_SCID_MEDIA_SERVER ); + RTW_PUT_BE16(p2pie + p2pielen, WPS_PDT_SCID_MEDIA_SERVER); + p2pielen += 2; + + // Number of Secondary Device Types + p2pie[ p2pielen++ ] = 0x00; // No Secondary Device Type List + + // Device Name + // Type: + //*(u16*) ( p2pie + p2pielen ) = cpu_to_be16( WPS_ATTR_DEVICE_NAME ); + RTW_PUT_BE16(p2pie + p2pielen, WPS_ATTR_DEVICE_NAME); + p2pielen += 2; + + // Length: + //*(u16*) ( p2pie + p2pielen ) = cpu_to_be16( pwdinfo->device_name_len ); + RTW_PUT_BE16(p2pie + p2pielen, pwdinfo->device_name_len); + p2pielen += 2; + + // Value: + _rtw_memcpy( p2pie + p2pielen, pwdinfo->device_name, pwdinfo->device_name_len ); + p2pielen += pwdinfo->device_name_len; + + if ( rtw_p2p_chk_role(pwdinfo, P2P_ROLE_CLIENT) ) + { + // Added by Albert 2011/05/19 + // In this case, the pdev_raddr is the device address of the group owner. + + // P2P Group ID ATTR + // Type: + p2pie[ p2pielen++ ] = P2P_ATTR_GROUP_ID; + + // Length: + //*(u16*) ( p2pie + p2pielen ) = cpu_to_le16( ETH_ALEN + ussidlen ); + RTW_PUT_LE16(p2pie + p2pielen, ETH_ALEN + ussidlen); + p2pielen += 2; + + // Value: + _rtw_memcpy( p2pie + p2pielen, pdev_raddr, ETH_ALEN ); + p2pielen += ETH_ALEN; + + _rtw_memcpy( p2pie + p2pielen, pssid, ussidlen ); + p2pielen += ussidlen; + + } + + pbuf = rtw_set_ie(pbuf, _VENDOR_SPECIFIC_IE_, p2pielen, (unsigned char *) p2pie, &len); + + + return len; + +} + + +u32 build_assoc_resp_p2p_ie(struct wifidirect_info *pwdinfo, u8 *pbuf, u8 status_code) +{ + u8 p2pie[ MAX_P2P_IE_LEN] = { 0x00 }; + u32 len=0, p2pielen = 0; + + // P2P OUI + p2pielen = 0; + p2pie[ p2pielen++ ] = 0x50; + p2pie[ p2pielen++ ] = 0x6F; + p2pie[ p2pielen++ ] = 0x9A; + p2pie[ p2pielen++ ] = 0x09; // WFA P2P v1.0 + + // According to the P2P Specification, the Association response frame should contain 2 P2P attributes + // 1. Status + // 2. Extended Listen Timing (optional) + + + // Status ATTR + p2pielen += rtw_set_p2p_attr_content(&p2pie[p2pielen], P2P_ATTR_STATUS, 1, &status_code); + + + // Extended Listen Timing ATTR + // Type: + // Length: + // Value: + + + pbuf = rtw_set_ie(pbuf, _VENDOR_SPECIFIC_IE_, p2pielen, (unsigned char *) p2pie, &len); + + return len; + +} + +u32 build_deauth_p2p_ie(struct wifidirect_info *pwdinfo, u8 *pbuf) +{ + u32 len=0; + + return len; +} + +u32 process_probe_req_p2p_ie(struct wifidirect_info *pwdinfo, u8 *pframe, uint len) +{ + u8 *p; + u32 ret=_FALSE; + u8 *p2pie; + u32 p2pielen = 0; + int ssid_len=0, rate_cnt = 0; + + p = rtw_get_ie(pframe + WLAN_HDR_A3_LEN + _PROBEREQ_IE_OFFSET_, _SUPPORTEDRATES_IE_, (int *)&rate_cnt, + len - WLAN_HDR_A3_LEN - _PROBEREQ_IE_OFFSET_); + + if ( rate_cnt <= 4 ) + { + int i, g_rate =0; + + for( i = 0; i < rate_cnt; i++ ) + { + if ( ( ( *( p + 2 + i ) & 0xff ) != 0x02 ) && + ( ( *( p + 2 + i ) & 0xff ) != 0x04 ) && + ( ( *( p + 2 + i ) & 0xff ) != 0x0B ) && + ( ( *( p + 2 + i ) & 0xff ) != 0x16 ) ) + { + g_rate = 1; + } + } + + if ( g_rate == 0 ) + { + // There is no OFDM rate included in SupportedRates IE of this probe request frame + // The driver should response this probe request. + return ret; + } + } + else + { + // rate_cnt > 4 means the SupportRates IE contains the OFDM rate because the count of CCK rates are 4. + // We should proceed the following check for this probe request. + } + + // Added comments by Albert 20100906 + // There are several items we should check here. + // 1. This probe request frame must contain the P2P IE. (Done) + // 2. This probe request frame must contain the wildcard SSID. (Done) + // 3. Wildcard BSSID. (Todo) + // 4. Destination Address. ( Done in mgt_dispatcher function ) + // 5. Requested Device Type in WSC IE. (Todo) + // 6. Device ID attribute in P2P IE. (Todo) + + p = rtw_get_ie(pframe + WLAN_HDR_A3_LEN + _PROBEREQ_IE_OFFSET_, _SSID_IE_, (int *)&ssid_len, + len - WLAN_HDR_A3_LEN - _PROBEREQ_IE_OFFSET_); + + ssid_len &= 0xff; // Just last 1 byte is valid for ssid len of the probe request + if(rtw_p2p_chk_role(pwdinfo, P2P_ROLE_DEVICE) || rtw_p2p_chk_role(pwdinfo, P2P_ROLE_GO)) + { + if((p2pie=rtw_get_p2p_ie( pframe + WLAN_HDR_A3_LEN + _PROBEREQ_IE_OFFSET_ , len - WLAN_HDR_A3_LEN - _PROBEREQ_IE_OFFSET_ , NULL, &p2pielen))) + { + if ( (p != NULL) && _rtw_memcmp( ( void * ) ( p+2 ), ( void * ) pwdinfo->p2p_wildcard_ssid , 7 )) + { + //todo: + //Check Requested Device Type attributes in WSC IE. + //Check Device ID attribute in P2P IE + + ret = _TRUE; + } + else if ( (p != NULL) && ( ssid_len == 0 ) ) + { + ret = _TRUE; + } + } + else + { + //non -p2p device + } + + } + + + return ret; + +} + +u32 process_assoc_req_p2p_ie(struct wifidirect_info *pwdinfo, u8 *pframe, uint len, struct sta_info *psta) +{ + u8 status_code = P2P_STATUS_SUCCESS; + u8 *pbuf, *pattr_content=NULL; + u32 attr_contentlen = 0; + u16 cap_attr=0; + unsigned short frame_type, ie_offset=0; + u8 * ies; + u32 ies_len; + u8 * p2p_ie; + u32 p2p_ielen = 0; + + if(!rtw_p2p_chk_role(pwdinfo, P2P_ROLE_GO)) + return P2P_STATUS_FAIL_REQUEST_UNABLE; + + frame_type = GetFrameSubType(pframe); + if (frame_type == WIFI_ASSOCREQ) + { + ie_offset = _ASOCREQ_IE_OFFSET_; + } + else // WIFI_REASSOCREQ + { + ie_offset = _REASOCREQ_IE_OFFSET_; + } + + ies = pframe + WLAN_HDR_A3_LEN + ie_offset; + ies_len = len - WLAN_HDR_A3_LEN - ie_offset; + + p2p_ie = rtw_get_p2p_ie(ies , ies_len , NULL, &p2p_ielen); + + if ( !p2p_ie ) + { + DBG_8192C( "[%s] P2P IE not Found!!\n", __FUNCTION__ ); + status_code = P2P_STATUS_FAIL_INVALID_PARAM; + } + else + { + DBG_8192C( "[%s] P2P IE Found!!\n", __FUNCTION__ ); + } + + while ( p2p_ie ) + { + //Check P2P Capability ATTR + if( rtw_get_p2p_attr_content( p2p_ie, p2p_ielen, P2P_ATTR_CAPABILITY, (u8*)&cap_attr, (uint*) &attr_contentlen) ) + { + DBG_8192C( "[%s] Got P2P Capability Attr!!\n", __FUNCTION__ ); + cap_attr = le16_to_cpu(cap_attr); + psta->dev_cap = cap_attr&0xff; + } + + //Check Extended Listen Timing ATTR + + + //Check P2P Device Info ATTR + if(rtw_get_p2p_attr_content(p2p_ie, p2p_ielen, P2P_ATTR_DEVICE_INFO, NULL, (uint*)&attr_contentlen)) + { + DBG_8192C( "[%s] Got P2P DEVICE INFO Attr!!\n", __FUNCTION__ ); + pattr_content = pbuf = rtw_zmalloc(attr_contentlen); + if(pattr_content) + { + u8 num_of_secdev_type; + u16 dev_name_len; + + + rtw_get_p2p_attr_content(p2p_ie, p2p_ielen, P2P_ATTR_DEVICE_INFO , pattr_content, (uint*)&attr_contentlen); + + _rtw_memcpy(psta->dev_addr, pattr_content, ETH_ALEN);//P2P Device Address + + pattr_content += ETH_ALEN; + + _rtw_memcpy(&psta->config_methods, pattr_content, 2);//Config Methods + psta->config_methods = be16_to_cpu(psta->config_methods); + + pattr_content += 2; + + _rtw_memcpy(psta->primary_dev_type, pattr_content, 8); + + pattr_content += 8; + + num_of_secdev_type = *pattr_content; + pattr_content += 1; + + if(num_of_secdev_type==0) + { + psta->num_of_secdev_type = 0; + } + else + { + u32 len; + + psta->num_of_secdev_type = num_of_secdev_type; + + len = (sizeof(psta->secdev_types_list)<(num_of_secdev_type*8)) ? (sizeof(psta->secdev_types_list)) : (num_of_secdev_type*8); + + _rtw_memcpy(psta->secdev_types_list, pattr_content, len); + + pattr_content += (num_of_secdev_type*8); + } + + + //dev_name_len = attr_contentlen - ETH_ALEN - 2 - 8 - 1 - (num_of_secdev_type*8); + psta->dev_name_len=0; + if(WPS_ATTR_DEVICE_NAME == be16_to_cpu(*(u16*)pattr_content)) + { + dev_name_len = be16_to_cpu(*(u16*)(pattr_content+2)); + + psta->dev_name_len = (sizeof(psta->dev_name)dev_name):dev_name_len; + + _rtw_memcpy(psta->dev_name, pattr_content+4, psta->dev_name_len); + } + + rtw_mfree(pbuf, attr_contentlen); + + } + + } + + //Get the next P2P IE + p2p_ie = rtw_get_p2p_ie(p2p_ie+p2p_ielen, ies_len -(p2p_ie -ies + p2p_ielen), NULL, &p2p_ielen); + + } + + return status_code; + +} + +u32 process_p2p_devdisc_req(struct wifidirect_info *pwdinfo, u8 *pframe, uint len) +{ + u8 *frame_body; + u8 status, dialogToken; + struct sta_info *psta = NULL; + _adapter *padapter = pwdinfo->padapter; + struct sta_priv *pstapriv = &padapter->stapriv; + u8 *p2p_ie; + u32 p2p_ielen = 0; + + frame_body = (unsigned char *)(pframe + sizeof(struct rtw_ieee80211_hdr_3addr)); + + dialogToken = frame_body[7]; + status = P2P_STATUS_FAIL_UNKNOWN_P2PGROUP; + + if ( (p2p_ie=rtw_get_p2p_ie( frame_body + _PUBLIC_ACTION_IE_OFFSET_, len - _PUBLIC_ACTION_IE_OFFSET_, NULL, &p2p_ielen)) ) + { + u8 groupid[ 38 ] = { 0x00 }; + u8 dev_addr[ETH_ALEN] = { 0x00 }; + u32 attr_contentlen = 0; + + if(rtw_get_p2p_attr_content(p2p_ie, p2p_ielen, P2P_ATTR_GROUP_ID, groupid, &attr_contentlen)) + { + if(_rtw_memcmp(pwdinfo->device_addr, groupid, ETH_ALEN) && + _rtw_memcmp(pwdinfo->p2p_group_ssid, groupid+ETH_ALEN, pwdinfo->p2p_group_ssid_len)) + { + attr_contentlen=0; + if(rtw_get_p2p_attr_content(p2p_ie, p2p_ielen, P2P_ATTR_DEVICE_ID, dev_addr, &attr_contentlen)) + { + _irqL irqL; + _list *phead, *plist; + + _enter_critical_bh(&pstapriv->asoc_list_lock, &irqL); + phead = &pstapriv->asoc_list; + plist = get_next(phead); + + //look up sta asoc_queue + while ((rtw_end_of_queue_search(phead, plist)) == _FALSE) + { + psta = LIST_CONTAINOR(plist, struct sta_info, asoc_list); + + plist = get_next(plist); + + if(psta->is_p2p_device && (psta->dev_cap&P2P_DEVCAP_CLIENT_DISCOVERABILITY) && + _rtw_memcmp(psta->dev_addr, dev_addr, ETH_ALEN)) + { + + //_exit_critical_bh(&pstapriv->asoc_list_lock, &irqL); + //issue GO Discoverability Request + issue_group_disc_req(pwdinfo, psta->hwaddr); + //_enter_critical_bh(&pstapriv->asoc_list_lock, &irqL); + + status = P2P_STATUS_SUCCESS; + + break; + } + else + { + status = P2P_STATUS_FAIL_INFO_UNAVAILABLE; + } + + } + _exit_critical_bh(&pstapriv->asoc_list_lock, &irqL); + + } + else + { + status = P2P_STATUS_FAIL_INVALID_PARAM; + } + + } + else + { + status = P2P_STATUS_FAIL_INVALID_PARAM; + } + + } + + } + + + //issue Device Discoverability Response + issue_p2p_devdisc_resp(pwdinfo, GetAddr2Ptr(pframe), status, dialogToken); + + + return (status==P2P_STATUS_SUCCESS) ? _TRUE:_FALSE; + +} + +u32 process_p2p_devdisc_resp(struct wifidirect_info *pwdinfo, u8 *pframe, uint len) +{ + return _TRUE; +} + +u8 process_p2p_provdisc_req(struct wifidirect_info *pwdinfo, u8 *pframe, uint len ) +{ + u8 *frame_body; + u8 *wpsie; + uint wps_ielen = 0, attr_contentlen = 0; + u16 uconfig_method = 0; + + + frame_body = (pframe + sizeof(struct rtw_ieee80211_hdr_3addr)); + + if ( (wpsie=rtw_get_wps_ie( frame_body + _PUBLIC_ACTION_IE_OFFSET_, len - _PUBLIC_ACTION_IE_OFFSET_, NULL, &wps_ielen)) ) + { + if ( rtw_get_wps_attr_content( wpsie, wps_ielen, WPS_ATTR_CONF_METHOD , ( u8* ) &uconfig_method, &attr_contentlen) ) + { + uconfig_method = be16_to_cpu( uconfig_method ); + switch( uconfig_method ) + { + case WPS_CM_DISPLYA: + { + _rtw_memcpy( pwdinfo->rx_prov_disc_info.strconfig_method_desc_of_prov_disc_req, "dis", 3 ); + break; + } + case WPS_CM_LABEL: + { + _rtw_memcpy( pwdinfo->rx_prov_disc_info.strconfig_method_desc_of_prov_disc_req, "lab", 3 ); + break; + } + case WPS_CM_PUSH_BUTTON: + { + _rtw_memcpy( pwdinfo->rx_prov_disc_info.strconfig_method_desc_of_prov_disc_req, "pbc", 3 ); + break; + } + case WPS_CM_KEYPAD: + { + _rtw_memcpy( pwdinfo->rx_prov_disc_info.strconfig_method_desc_of_prov_disc_req, "pad", 3 ); + break; + } + } + issue_p2p_provision_resp( pwdinfo, GetAddr2Ptr(pframe), frame_body, uconfig_method); + } + } + DBG_871X( "[%s] config method = %s\n", __FUNCTION__, pwdinfo->rx_prov_disc_info.strconfig_method_desc_of_prov_disc_req ); + return _TRUE; + +} + +u8 process_p2p_provdisc_resp(struct wifidirect_info *pwdinfo, u8 *pframe) +{ + + return _TRUE; +} + +u8 rtw_p2p_get_peer_ch_list(struct wifidirect_info *pwdinfo, u8 *ch_content, u8 ch_cnt, u8 *peer_ch_list) +{ + u8 i = 0, j = 0; + u8 temp = 0; + u8 ch_no = 0; + ch_content += 3; + ch_cnt -= 3; + + while( ch_cnt > 0) + { + ch_content += 1; + ch_cnt -= 1; + temp = *ch_content; + for( i = 0 ; i < temp ; i++, j++ ) + { + peer_ch_list[j] = *( ch_content + 1 + i ); + } + ch_content += (temp + 1); + ch_cnt -= (temp + 1); + ch_no += temp ; + } + + return ch_no; +} + +u8 rtw_p2p_check_peer_oper_ch(struct mlme_ext_priv *pmlmeext, u8 ch) +{ + u8 i = 0; + + for( i = 0; i < pmlmeext->max_chan_nums; i++ ) + { + if ( pmlmeext->channel_set[ i ].ChannelNum == ch ) + { + return _SUCCESS; + } + } + + return _FAIL; +} + +u8 rtw_p2p_ch_inclusion(struct mlme_ext_priv *pmlmeext, u8 *peer_ch_list, u8 peer_ch_num, u8 *ch_list_inclusioned) +{ + int i = 0, j = 0, temp = 0; + u8 ch_no = 0; + + for( i = 0; i < peer_ch_num; i++ ) + { + for( j = temp; j < pmlmeext->max_chan_nums; j++ ) + { + if( *( peer_ch_list + i ) == pmlmeext->channel_set[ j ].ChannelNum ) + { + ch_list_inclusioned[ ch_no++ ] = *( peer_ch_list + i ); + temp = j; + break; + } + } + } + + return ch_no; +} + +u8 process_p2p_group_negotation_req( struct wifidirect_info *pwdinfo, u8 *pframe, uint len ) +{ + _adapter *padapter = pwdinfo->padapter; + u8 result = P2P_STATUS_SUCCESS; + u32 p2p_ielen = 0, wps_ielen = 0; + u8 * ies; + u32 ies_len; + u8 *p2p_ie; + u8 *wpsie; + u16 wps_devicepassword_id = 0x0000; + uint wps_devicepassword_id_len = 0; +#ifdef CONFIG_WFD + u8 wfd_ie[ 128 ] = { 0x00 }; + u32 wfd_ielen = 0; +#ifdef CONFIG_TDLS + struct tdls_info *ptdlsinfo = &padapter->tdlsinfo; +#endif // CONFIG_TDLS +#endif // CONFIG_WFD +#ifdef CONFIG_CONCURRENT_MODE + _adapter *pbuddy_adapter = pwdinfo->padapter->pbuddy_adapter; + struct wifidirect_info *pbuddy_wdinfo = &pbuddy_adapter->wdinfo; + struct mlme_priv *pbuddy_mlmepriv = &pbuddy_adapter->mlmepriv; + struct mlme_ext_priv *pbuddy_mlmeext = &pbuddy_adapter->mlmeextpriv; +#endif + + if ( (wpsie=rtw_get_wps_ie( pframe + _PUBLIC_ACTION_IE_OFFSET_, len - _PUBLIC_ACTION_IE_OFFSET_, NULL, &wps_ielen)) ) + { + // Commented by Kurt 20120113 + // If some device wants to do p2p handshake without sending prov_disc_req + // We have to get peer_req_cm from here. + if(_rtw_memcmp( pwdinfo->rx_prov_disc_info.strconfig_method_desc_of_prov_disc_req, "000", 3) ) + { + rtw_get_wps_attr_content( wpsie, wps_ielen, WPS_ATTR_DEVICE_PWID, (u8*) &wps_devicepassword_id, &wps_devicepassword_id_len); + wps_devicepassword_id = be16_to_cpu( wps_devicepassword_id ); + + if ( wps_devicepassword_id == WPS_DPID_USER_SPEC ) + { + _rtw_memcpy( pwdinfo->rx_prov_disc_info.strconfig_method_desc_of_prov_disc_req, "dis", 3 ); + } + else if ( wps_devicepassword_id == WPS_DPID_REGISTRAR_SPEC ) + { + _rtw_memcpy( pwdinfo->rx_prov_disc_info.strconfig_method_desc_of_prov_disc_req, "pad", 3 ); + } + else + { + _rtw_memcpy( pwdinfo->rx_prov_disc_info.strconfig_method_desc_of_prov_disc_req, "pbc", 3 ); + } + } + } + else + { + DBG_871X( "[%s] WPS IE not Found!!\n", __FUNCTION__ ); + result = P2P_STATUS_FAIL_INCOMPATIBLE_PARAM; + rtw_p2p_set_state(pwdinfo, P2P_STATE_GONEGO_FAIL); + return( result ); + } + + if ( pwdinfo->ui_got_wps_info == P2P_NO_WPSINFO ) + { + result = P2P_STATUS_FAIL_INFO_UNAVAILABLE; + rtw_p2p_set_state(pwdinfo, P2P_STATE_TX_INFOR_NOREADY); + return( result ); + } + + ies = pframe + _PUBLIC_ACTION_IE_OFFSET_; + ies_len = len - _PUBLIC_ACTION_IE_OFFSET_; + + p2p_ie = rtw_get_p2p_ie( ies, ies_len, NULL, &p2p_ielen ); + + if ( !p2p_ie ) + { + DBG_871X( "[%s] P2P IE not Found!!\n", __FUNCTION__ ); + result = P2P_STATUS_FAIL_INCOMPATIBLE_PARAM; + rtw_p2p_set_state(pwdinfo, P2P_STATE_GONEGO_FAIL); + } + + while ( p2p_ie ) + { + u8 attr_content = 0x00; + u32 attr_contentlen = 0; + u8 ch_content[100] = { 0x00 }; + uint ch_cnt = 0; + u8 peer_ch_list[100] = { 0x00 }; + u8 peer_ch_num = 0; + u8 ch_list_inclusioned[100] = { 0x00 }; + u8 ch_num_inclusioned = 0; + u16 cap_attr; + + rtw_p2p_set_state(pwdinfo, P2P_STATE_GONEGO_ING); + + //Check P2P Capability ATTR + if(rtw_get_p2p_attr_content(p2p_ie, p2p_ielen, P2P_ATTR_CAPABILITY, (u8*)&cap_attr, (uint*)&attr_contentlen) ) + { + cap_attr = le16_to_cpu(cap_attr); + +#if defined(CONFIG_WFD) && defined(CONFIG_TDLS) + if(!(cap_attr & P2P_GRPCAP_INTRABSS) ) + ptdlsinfo->ap_prohibited = _TRUE; +#endif //defined(CONFIG_WFD) && defined(CONFIG_TDLS) + } + + if ( rtw_get_p2p_attr_content(p2p_ie, p2p_ielen, P2P_ATTR_GO_INTENT , &attr_content, &attr_contentlen) ) + { + DBG_871X( "[%s] GO Intent = %d, tie = %d\n", __FUNCTION__, attr_content >> 1, attr_content & 0x01 ); + pwdinfo->peer_intent = attr_content; // include both intent and tie breaker values. + + if ( pwdinfo->intent == ( pwdinfo->peer_intent >> 1 ) ) + { + // Try to match the tie breaker value + if ( pwdinfo->intent == P2P_MAX_INTENT ) + { + rtw_p2p_set_role(pwdinfo, P2P_ROLE_DEVICE); + result = P2P_STATUS_FAIL_BOTH_GOINTENT_15; + } + else + { + if ( attr_content & 0x01 ) + { + rtw_p2p_set_role(pwdinfo, P2P_ROLE_CLIENT); + } + else + { + rtw_p2p_set_role(pwdinfo, P2P_ROLE_GO); + } + } + } + else if ( pwdinfo->intent > ( pwdinfo->peer_intent >> 1 ) ) + { + rtw_p2p_set_role(pwdinfo, P2P_ROLE_GO); + } + else + { + rtw_p2p_set_role(pwdinfo, P2P_ROLE_CLIENT); + } + + if(rtw_p2p_chk_role(pwdinfo, P2P_ROLE_GO)) + { + // Store the group id information. + _rtw_memcpy( pwdinfo->groupid_info.go_device_addr, pwdinfo->device_addr, ETH_ALEN ); + _rtw_memcpy( pwdinfo->groupid_info.ssid, pwdinfo->nego_ssid, pwdinfo->nego_ssidlen ); + } + } + + + attr_contentlen = 0; + if ( rtw_get_p2p_attr_content( p2p_ie, p2p_ielen, P2P_ATTR_INTENTED_IF_ADDR, pwdinfo->p2p_peer_interface_addr, &attr_contentlen ) ) + { + if ( attr_contentlen != ETH_ALEN ) + { + _rtw_memset( pwdinfo->p2p_peer_interface_addr, 0x00, ETH_ALEN ); + } + } + + if ( rtw_get_p2p_attr_content(p2p_ie, p2p_ielen, P2P_ATTR_CH_LIST, ch_content, &ch_cnt) ) + { + peer_ch_num = rtw_p2p_get_peer_ch_list(pwdinfo, ch_content, ch_cnt, peer_ch_list); + ch_num_inclusioned = rtw_p2p_ch_inclusion(&padapter->mlmeextpriv, peer_ch_list, peer_ch_num, ch_list_inclusioned); + + if( ch_num_inclusioned == 0) + { + DBG_871X( "[%s] No common channel in channel list!\n", __FUNCTION__ ); + result = P2P_STATUS_FAIL_NO_COMMON_CH; + rtw_p2p_set_state(pwdinfo, P2P_STATE_GONEGO_FAIL); + break; + } + + if(rtw_p2p_chk_role(pwdinfo, P2P_ROLE_GO)) + { + if ( !rtw_p2p_is_channel_list_ok( pwdinfo->operating_channel, + ch_list_inclusioned, ch_num_inclusioned) ) + { +#ifdef CONFIG_CONCURRENT_MODE + if ( check_buddy_fwstate(padapter, _FW_LINKED ) ) + { + DBG_871X( "[%s] desired channel NOT Found!\n", __FUNCTION__ ); + result = P2P_STATUS_FAIL_NO_COMMON_CH; + rtw_p2p_set_state(pwdinfo, P2P_STATE_GONEGO_FAIL); + break; + } + else +#endif //CONFIG_CONCURRENT_MODE + { + u8 operatingch_info[5] = { 0x00 }, peer_operating_ch = 0; + attr_contentlen = 0; + + if ( rtw_get_p2p_attr_content(p2p_ie, p2p_ielen, P2P_ATTR_OPERATING_CH, operatingch_info, &attr_contentlen) ) + { + peer_operating_ch = operatingch_info[4]; + } + + if ( rtw_p2p_is_channel_list_ok( peer_operating_ch, + ch_list_inclusioned, ch_num_inclusioned) ) + { + /** + * Change our operating channel as peer's for compatibility. + */ + pwdinfo->operating_channel = peer_operating_ch; + DBG_871X( "[%s] Change op ch to %02x as peer's\n", __FUNCTION__, pwdinfo->operating_channel); + } + else + { + // Take first channel of ch_list_inclusioned as operating channel + pwdinfo->operating_channel = ch_list_inclusioned[0]; + DBG_871X( "[%s] Change op ch to %02x\n", __FUNCTION__, pwdinfo->operating_channel); + } + } + + } + } + } + + //Get the next P2P IE + p2p_ie = rtw_get_p2p_ie(p2p_ie+p2p_ielen, ies_len -(p2p_ie -ies + p2p_ielen), NULL, &p2p_ielen); + } + +#ifdef CONFIG_WFD + // Added by Albert 20110823 + // Try to get the TCP port information when receiving the negotiation request. + if ( rtw_get_wfd_ie( pframe + _PUBLIC_ACTION_IE_OFFSET_, len - _PUBLIC_ACTION_IE_OFFSET_, wfd_ie, &wfd_ielen ) ) + { + u8 attr_content[ 10 ] = { 0x00 }; + u32 attr_contentlen = 0; + + DBG_871X( "[%s] WFD IE Found!!\n", __FUNCTION__ ); + rtw_get_wfd_attr_content( wfd_ie, wfd_ielen, WFD_ATTR_DEVICE_INFO, attr_content, &attr_contentlen); + if ( attr_contentlen ) + { + pwdinfo->wfd_info->peer_rtsp_ctrlport = RTW_GET_BE16( attr_content + 2 ); + DBG_871X( "[%s] Peer PORT NUM = %d\n", __FUNCTION__, pwdinfo->wfd_info->peer_rtsp_ctrlport ); + } + } +#endif // CONFIG_WFD + + return( result ); +} + +u8 process_p2p_group_negotation_resp( struct wifidirect_info *pwdinfo, u8 *pframe, uint len ) +{ + _adapter *padapter = pwdinfo->padapter; + u8 result = P2P_STATUS_SUCCESS; + u32 p2p_ielen, wps_ielen; + u8 * ies; + u32 ies_len; + u8 * p2p_ie; +#ifdef CONFIG_WFD + u8 wfd_ie[ 128 ] = { 0x00 }; + u32 wfd_ielen = 0; +#ifdef CONFIG_TDLS + struct tdls_info *ptdlsinfo = &padapter->tdlsinfo; +#endif // CONFIG_TDLS +#endif // CONFIG_WFD + + ies = pframe + _PUBLIC_ACTION_IE_OFFSET_; + ies_len = len - _PUBLIC_ACTION_IE_OFFSET_; + + // Be able to know which one is the P2P GO and which one is P2P client. + + if ( rtw_get_wps_ie( ies, ies_len, NULL, &wps_ielen) ) + { + + } + else + { + DBG_871X( "[%s] WPS IE not Found!!\n", __FUNCTION__ ); + result = P2P_STATUS_FAIL_INCOMPATIBLE_PARAM; + rtw_p2p_set_state(pwdinfo, P2P_STATE_GONEGO_FAIL); + } + + p2p_ie = rtw_get_p2p_ie( ies, ies_len, NULL, &p2p_ielen ); + if ( !p2p_ie ) + { + rtw_p2p_set_role(pwdinfo, P2P_ROLE_DEVICE); + rtw_p2p_set_state(pwdinfo, P2P_STATE_GONEGO_FAIL); + result = P2P_STATUS_FAIL_INCOMPATIBLE_PARAM; + } + else + { + + u8 attr_content = 0x00; + u32 attr_contentlen = 0; + u8 operatingch_info[5] = { 0x00 }; + uint ch_cnt = 0; + u8 ch_content[100] = { 0x00 }; + u8 groupid[ 38 ]; + u16 cap_attr; + u8 peer_ch_list[100] = { 0x00 }; + u8 peer_ch_num = 0; + u8 ch_list_inclusioned[100] = { 0x00 }; + u8 ch_num_inclusioned = 0; + + while ( p2p_ie ) // Found the P2P IE. + { + + //Check P2P Capability ATTR + if(rtw_get_p2p_attr_content(p2p_ie, p2p_ielen, P2P_ATTR_CAPABILITY, (u8*)&cap_attr, (uint*)&attr_contentlen) ) + { + cap_attr = le16_to_cpu(cap_attr); +#if defined(CONFIG_WFD) && defined(CONFIG_TDLS) + if(!(cap_attr & P2P_GRPCAP_INTRABSS) ) + ptdlsinfo->ap_prohibited = _TRUE; +#endif //defined(CONFIG_WFD) && defined(CONFIG_TDLS) + } + + rtw_get_p2p_attr_content(p2p_ie, p2p_ielen, P2P_ATTR_STATUS, &attr_content, &attr_contentlen); + if ( attr_contentlen == 1 ) + { + DBG_871X( "[%s] Status = %d\n", __FUNCTION__, attr_content ); + if ( attr_content == P2P_STATUS_SUCCESS ) + { + // Do nothing. + } + else + { + if ( P2P_STATUS_FAIL_INFO_UNAVAILABLE == attr_content ) { + rtw_p2p_set_state(pwdinfo, P2P_STATE_RX_INFOR_NOREADY); + } else { + rtw_p2p_set_state(pwdinfo, P2P_STATE_GONEGO_FAIL); + } + rtw_p2p_set_role(pwdinfo, P2P_ROLE_DEVICE); + result = attr_content; + break; + } + } + + // Try to get the peer's interface address + attr_contentlen = 0; + if ( rtw_get_p2p_attr_content( p2p_ie, p2p_ielen, P2P_ATTR_INTENTED_IF_ADDR, pwdinfo->p2p_peer_interface_addr, &attr_contentlen ) ) + { + if ( attr_contentlen != ETH_ALEN ) + { + _rtw_memset( pwdinfo->p2p_peer_interface_addr, 0x00, ETH_ALEN ); + } + } + + // Try to get the peer's intent and tie breaker value. + attr_content = 0x00; + attr_contentlen = 0; + if ( rtw_get_p2p_attr_content(p2p_ie, p2p_ielen, P2P_ATTR_GO_INTENT , &attr_content, &attr_contentlen) ) + { + DBG_871X( "[%s] GO Intent = %d, tie = %d\n", __FUNCTION__, attr_content >> 1, attr_content & 0x01 ); + pwdinfo->peer_intent = attr_content; // include both intent and tie breaker values. + + if ( pwdinfo->intent == ( pwdinfo->peer_intent >> 1 ) ) + { + // Try to match the tie breaker value + if ( pwdinfo->intent == P2P_MAX_INTENT ) + { + rtw_p2p_set_role(pwdinfo, P2P_ROLE_DEVICE); + result = P2P_STATUS_FAIL_BOTH_GOINTENT_15; + rtw_p2p_set_state(pwdinfo, P2P_STATE_GONEGO_FAIL); + } + else + { + rtw_p2p_set_state(pwdinfo, P2P_STATE_GONEGO_OK); + rtw_p2p_set_pre_state(pwdinfo, P2P_STATE_GONEGO_OK); + if ( attr_content & 0x01 ) + { + rtw_p2p_set_role(pwdinfo, P2P_ROLE_CLIENT); + } + else + { + rtw_p2p_set_role(pwdinfo, P2P_ROLE_GO); + } + } + } + else if ( pwdinfo->intent > ( pwdinfo->peer_intent >> 1 ) ) + { + rtw_p2p_set_state(pwdinfo, P2P_STATE_GONEGO_OK); + rtw_p2p_set_pre_state(pwdinfo, P2P_STATE_GONEGO_OK); + rtw_p2p_set_role(pwdinfo, P2P_ROLE_GO); + } + else + { + rtw_p2p_set_state(pwdinfo, P2P_STATE_GONEGO_OK); + rtw_p2p_set_pre_state(pwdinfo, P2P_STATE_GONEGO_OK); + rtw_p2p_set_role(pwdinfo, P2P_ROLE_CLIENT); + } + + if(rtw_p2p_chk_role(pwdinfo, P2P_ROLE_GO)) + { + // Store the group id information. + _rtw_memcpy( pwdinfo->groupid_info.go_device_addr, pwdinfo->device_addr, ETH_ALEN ); + _rtw_memcpy( pwdinfo->groupid_info.ssid, pwdinfo->nego_ssid, pwdinfo->nego_ssidlen ); + + } + } + + // Try to get the operation channel information + + attr_contentlen = 0; + if ( rtw_get_p2p_attr_content(p2p_ie, p2p_ielen, P2P_ATTR_OPERATING_CH, operatingch_info, &attr_contentlen)) + { + DBG_871X( "[%s] Peer's operating channel = %d\n", __FUNCTION__, operatingch_info[4] ); + pwdinfo->peer_operating_ch = operatingch_info[4]; + } + + // Try to get the channel list information + if ( rtw_get_p2p_attr_content(p2p_ie, p2p_ielen, P2P_ATTR_CH_LIST, pwdinfo->channel_list_attr, &pwdinfo->channel_list_attr_len ) ) + { + DBG_871X( "[%s] channel list attribute found, len = %d\n", __FUNCTION__, pwdinfo->channel_list_attr_len ); + + peer_ch_num = rtw_p2p_get_peer_ch_list(pwdinfo, pwdinfo->channel_list_attr, pwdinfo->channel_list_attr_len, peer_ch_list); + ch_num_inclusioned = rtw_p2p_ch_inclusion(&padapter->mlmeextpriv, peer_ch_list, peer_ch_num, ch_list_inclusioned); + + if( ch_num_inclusioned == 0) + { + DBG_871X( "[%s] No common channel in channel list!\n", __FUNCTION__ ); + result = P2P_STATUS_FAIL_NO_COMMON_CH; + rtw_p2p_set_state(pwdinfo, P2P_STATE_GONEGO_FAIL); + break; + } + + if(rtw_p2p_chk_role(pwdinfo, P2P_ROLE_GO)) + { + if ( !rtw_p2p_is_channel_list_ok( pwdinfo->operating_channel, + ch_list_inclusioned, ch_num_inclusioned) ) + { +#ifdef CONFIG_CONCURRENT_MODE + if ( check_buddy_fwstate(padapter, _FW_LINKED ) ) + { + DBG_871X( "[%s] desired channel NOT Found!\n", __FUNCTION__ ); + result = P2P_STATUS_FAIL_NO_COMMON_CH; + rtw_p2p_set_state(pwdinfo, P2P_STATE_GONEGO_FAIL); + break; + } + else +#endif //CONFIG_CONCURRENT_MODE + { + u8 operatingch_info[5] = { 0x00 }, peer_operating_ch = 0; + attr_contentlen = 0; + + if ( rtw_get_p2p_attr_content(p2p_ie, p2p_ielen, P2P_ATTR_OPERATING_CH, operatingch_info, &attr_contentlen) ) + { + peer_operating_ch = operatingch_info[4]; + } + + if ( rtw_p2p_is_channel_list_ok( peer_operating_ch, + ch_list_inclusioned, ch_num_inclusioned) ) + { + /** + * Change our operating channel as peer's for compatibility. + */ + pwdinfo->operating_channel = peer_operating_ch; + DBG_871X( "[%s] Change op ch to %02x as peer's\n", __FUNCTION__, pwdinfo->operating_channel); + } + else + { + // Take first channel of ch_list_inclusioned as operating channel + pwdinfo->operating_channel = ch_list_inclusioned[0]; + DBG_871X( "[%s] Change op ch to %02x\n", __FUNCTION__, pwdinfo->operating_channel); + } + } + + } + } + + } + else + { + DBG_871X( "[%s] channel list attribute not found!\n", __FUNCTION__); + } + + // Try to get the group id information if peer is GO + attr_contentlen = 0; + _rtw_memset( groupid, 0x00, 38 ); + if ( rtw_get_p2p_attr_content( p2p_ie, p2p_ielen, P2P_ATTR_GROUP_ID, groupid, &attr_contentlen) ) + { + _rtw_memcpy( pwdinfo->groupid_info.go_device_addr, &groupid[0], ETH_ALEN ); + _rtw_memcpy( pwdinfo->groupid_info.ssid, &groupid[6], attr_contentlen - ETH_ALEN ); + } + + //Get the next P2P IE + p2p_ie = rtw_get_p2p_ie(p2p_ie+p2p_ielen, ies_len -(p2p_ie -ies + p2p_ielen), NULL, &p2p_ielen); + } + + } + +#ifdef CONFIG_WFD + // Added by Albert 20111122 + // Try to get the TCP port information when receiving the negotiation response. + if ( rtw_get_wfd_ie( pframe + _PUBLIC_ACTION_IE_OFFSET_, len - _PUBLIC_ACTION_IE_OFFSET_, wfd_ie, &wfd_ielen ) ) + { + u8 attr_content[ 10 ] = { 0x00 }; + u32 attr_contentlen = 0; + + DBG_8192C( "[%s] WFD IE Found!!\n", __FUNCTION__ ); + rtw_get_wfd_attr_content( wfd_ie, wfd_ielen, WFD_ATTR_DEVICE_INFO, attr_content, &attr_contentlen); + if ( attr_contentlen ) + { + pwdinfo->wfd_info->peer_rtsp_ctrlport = RTW_GET_BE16( attr_content + 2 ); + DBG_8192C( "[%s] Peer PORT NUM = %d\n", __FUNCTION__, pwdinfo->wfd_info->peer_rtsp_ctrlport ); + } + } +#endif // CONFIG_WFD + + return( result ); + +} + +u8 process_p2p_group_negotation_confirm( struct wifidirect_info *pwdinfo, u8 *pframe, uint len ) +{ + u8 * ies; + u32 ies_len; + u8 * p2p_ie; + u32 p2p_ielen = 0; + u8 result = P2P_STATUS_SUCCESS; + ies = pframe + _PUBLIC_ACTION_IE_OFFSET_; + ies_len = len - _PUBLIC_ACTION_IE_OFFSET_; + + p2p_ie = rtw_get_p2p_ie( ies, ies_len, NULL, &p2p_ielen ); + while ( p2p_ie ) // Found the P2P IE. + { + u8 attr_content = 0x00, operatingch_info[5] = { 0x00 }; + u8 groupid[ 38 ] = { 0x00 }; + u32 attr_contentlen = 0; + + pwdinfo->negotiation_dialog_token = 1; + rtw_get_p2p_attr_content(p2p_ie, p2p_ielen, P2P_ATTR_STATUS, &attr_content, &attr_contentlen); + if ( attr_contentlen == 1 ) + { + DBG_871X( "[%s] Status = %d\n", __FUNCTION__, attr_content ); + result = attr_content; + + if ( attr_content == P2P_STATUS_SUCCESS ) + { + u8 bcancelled = 0; + + _cancel_timer( &pwdinfo->restore_p2p_state_timer, &bcancelled ); + + // Commented by Albert 20100911 + // Todo: Need to handle the case which both Intents are the same. + rtw_p2p_set_state(pwdinfo, P2P_STATE_GONEGO_OK); + rtw_p2p_set_pre_state(pwdinfo, P2P_STATE_GONEGO_OK); + if ( ( pwdinfo->intent ) > ( pwdinfo->peer_intent >> 1 ) ) + { + rtw_p2p_set_role(pwdinfo, P2P_ROLE_GO); + } + else if ( ( pwdinfo->intent ) < ( pwdinfo->peer_intent >> 1 ) ) + { + rtw_p2p_set_role(pwdinfo, P2P_ROLE_CLIENT); + } + else + { + // Have to compare the Tie Breaker + if ( pwdinfo->peer_intent & 0x01 ) + { + rtw_p2p_set_role(pwdinfo, P2P_ROLE_CLIENT); + } + else + { + rtw_p2p_set_role(pwdinfo, P2P_ROLE_GO); + } + } + +#ifdef CONFIG_CONCURRENT_MODE + if ( check_buddy_fwstate(pwdinfo->padapter , _FW_LINKED ) ) + { + // Switch back to the AP channel soon. + _set_timer( &pwdinfo->ap_p2p_switch_timer, 100 ); + } +#endif + } + else + { + rtw_p2p_set_role(pwdinfo, P2P_ROLE_DEVICE); + rtw_p2p_set_state(pwdinfo, P2P_STATE_GONEGO_FAIL); + break; + } + } + + // Try to get the group id information + attr_contentlen = 0; + _rtw_memset( groupid, 0x00, 38 ); + if ( rtw_get_p2p_attr_content( p2p_ie, p2p_ielen, P2P_ATTR_GROUP_ID, groupid, &attr_contentlen) ) + { + DBG_871X( "[%s] Ssid = %s, ssidlen = %d\n", __FUNCTION__, &groupid[ETH_ALEN], (u32)strlen(&groupid[ETH_ALEN]) ); + _rtw_memcpy( pwdinfo->groupid_info.go_device_addr, &groupid[0], ETH_ALEN ); + _rtw_memcpy( pwdinfo->groupid_info.ssid, &groupid[6], attr_contentlen - ETH_ALEN ); + } + + attr_contentlen = 0; + if ( rtw_get_p2p_attr_content(p2p_ie, p2p_ielen, P2P_ATTR_OPERATING_CH, operatingch_info, &attr_contentlen) ) + { + DBG_871X( "[%s] Peer's operating channel = %d\n", __FUNCTION__, operatingch_info[4] ); + pwdinfo->peer_operating_ch = operatingch_info[4]; + } + + //Get the next P2P IE + p2p_ie = rtw_get_p2p_ie(p2p_ie+p2p_ielen, ies_len -(p2p_ie -ies + p2p_ielen), NULL, &p2p_ielen); + + } + + return( result ); +} + +u8 process_p2p_presence_req(struct wifidirect_info *pwdinfo, u8 *pframe, uint len) +{ + u8 *frame_body; + u8 dialogToken=0; + u8 status = P2P_STATUS_SUCCESS; + + frame_body = (unsigned char *)(pframe + sizeof(struct rtw_ieee80211_hdr_3addr)); + + dialogToken = frame_body[6]; + + //todo: check NoA attribute + + issue_p2p_presence_resp(pwdinfo, GetAddr2Ptr(pframe), status, dialogToken); + + return _TRUE; +} + +void find_phase_handler( _adapter* padapter ) +{ + struct wifidirect_info *pwdinfo = &padapter->wdinfo; + struct mlme_priv *pmlmepriv = &padapter->mlmepriv; + NDIS_802_11_SSID ssid; + _irqL irqL; + u8 _status = 0; + +_func_enter_; + + _rtw_memset((unsigned char*)&ssid, 0, sizeof(NDIS_802_11_SSID)); + _rtw_memcpy(ssid.Ssid, pwdinfo->p2p_wildcard_ssid, P2P_WILDCARD_SSID_LEN ); + ssid.SsidLength = P2P_WILDCARD_SSID_LEN; + + rtw_p2p_set_state(pwdinfo, P2P_STATE_FIND_PHASE_SEARCH); + + _enter_critical_bh(&pmlmepriv->lock, &irqL); + _status = rtw_sitesurvey_cmd(padapter, &ssid, 1, NULL, 0); + _exit_critical_bh(&pmlmepriv->lock, &irqL); + + +_func_exit_; +} + +void p2p_concurrent_handler( _adapter* padapter ); + +void restore_p2p_state_handler( _adapter* padapter ) +{ + struct wifidirect_info *pwdinfo = &padapter->wdinfo; + struct mlme_priv *pmlmepriv = &padapter->mlmepriv; + +_func_enter_; + + if(rtw_p2p_chk_state(pwdinfo, P2P_STATE_GONEGO_ING) || rtw_p2p_chk_state(pwdinfo, P2P_STATE_GONEGO_FAIL)) + { + rtw_p2p_set_role(pwdinfo, P2P_ROLE_DEVICE); + } + +#ifdef CONFIG_CONCURRENT_MODE + if ( check_buddy_fwstate(padapter, _FW_LINKED ) ) + { + _adapter *pbuddy_adapter = padapter->pbuddy_adapter; + struct mlme_priv *pbuddy_mlmepriv = &pbuddy_adapter->mlmepriv; + struct mlme_ext_priv *pbuddy_mlmeext = &pbuddy_adapter->mlmeextpriv; + + if(rtw_p2p_chk_state(pwdinfo, P2P_STATE_TX_PROVISION_DIS_REQ) || rtw_p2p_chk_state(pwdinfo, P2P_STATE_RX_PROVISION_DIS_RSP)) + { + set_channel_bwmode(padapter, pbuddy_mlmeext->cur_channel, pbuddy_mlmeext->cur_ch_offset, pbuddy_mlmeext->cur_bwmode); + + issue_nulldata(pbuddy_adapter, NULL, 0, 3, 500); + } + } +#endif + + rtw_p2p_set_state(pwdinfo, rtw_p2p_pre_state(pwdinfo)); + + if(rtw_p2p_chk_role(pwdinfo, P2P_ROLE_DEVICE)) + { +#ifdef CONFIG_CONCURRENT_MODE + p2p_concurrent_handler( padapter ); +#else + // In the P2P client mode, the driver should not switch back to its listen channel + // because this P2P client should stay at the operating channel of P2P GO. + set_channel_bwmode( padapter, pwdinfo->listen_channel, HAL_PRIME_CHNL_OFFSET_DONT_CARE, HT_CHANNEL_WIDTH_20); +#endif + } +_func_exit_; +} + +void pre_tx_invitereq_handler( _adapter* padapter ) +{ + struct wifidirect_info *pwdinfo = &padapter->wdinfo; + u8 val8 = 1; +_func_enter_; + + set_channel_bwmode(padapter, pwdinfo->invitereq_info.peer_ch, HAL_PRIME_CHNL_OFFSET_DONT_CARE, HT_CHANNEL_WIDTH_20); + rtw_hal_set_hwreg(padapter, HW_VAR_MLME_SITESURVEY, (u8 *)(&val8)); + issue_probereq_p2p(padapter, NULL); + _set_timer( &pwdinfo->pre_tx_scan_timer, P2P_TX_PRESCAN_TIMEOUT ); + +_func_exit_; +} + +void pre_tx_provdisc_handler( _adapter* padapter ) +{ + struct wifidirect_info *pwdinfo = &padapter->wdinfo; + u8 val8 = 1; +_func_enter_; + + set_channel_bwmode(padapter, pwdinfo->tx_prov_disc_info.peer_channel_num[0], HAL_PRIME_CHNL_OFFSET_DONT_CARE, HT_CHANNEL_WIDTH_20); + rtw_hal_set_hwreg(padapter, HW_VAR_MLME_SITESURVEY, (u8 *)(&val8)); + issue_probereq_p2p(padapter, NULL); + _set_timer( &pwdinfo->pre_tx_scan_timer, P2P_TX_PRESCAN_TIMEOUT ); + +_func_exit_; +} + +void pre_tx_negoreq_handler( _adapter* padapter ) +{ + struct wifidirect_info *pwdinfo = &padapter->wdinfo; + u8 val8 = 1; +_func_enter_; + + set_channel_bwmode(padapter, pwdinfo->nego_req_info.peer_channel_num[0], HAL_PRIME_CHNL_OFFSET_DONT_CARE, HT_CHANNEL_WIDTH_20); + rtw_hal_set_hwreg(padapter, HW_VAR_MLME_SITESURVEY, (u8 *)(&val8)); + issue_probereq_p2p(padapter, NULL); + _set_timer( &pwdinfo->pre_tx_scan_timer, P2P_TX_PRESCAN_TIMEOUT ); + +_func_exit_; +} + +#ifdef CONFIG_CONCURRENT_MODE +void p2p_concurrent_handler( _adapter* padapter ) +{ + struct wifidirect_info *pwdinfo = &padapter->wdinfo; + //_adapter *pbuddy_adapter = padapter->pbuddy_adapter; + //struct wifidirect_info *pbuddy_wdinfo = &pbuddy_adapter->wdinfo; + //struct mlme_priv *pbuddy_mlmepriv = &pbuddy_adapter->mlmepriv; + //struct mlme_ext_priv *pbuddy_mlmeext = &pbuddy_adapter->mlmeextpriv; + u8 val8; +_func_enter_; + + if ( check_buddy_fwstate(padapter, _FW_LINKED ) ) + { + PADAPTER pbuddy_adapter = padapter->pbuddy_adapter; + struct mlme_ext_priv *pbuddy_mlmeext = &pbuddy_adapter->mlmeextpriv; + + pwdinfo->operating_channel = pbuddy_mlmeext->cur_channel; + + if( pwdinfo->driver_interface == DRIVER_CFG80211 ) + { + DBG_871X("%s, switch ch back to buddy's cur_channel=%d\n", __func__, pbuddy_mlmeext->cur_channel); + + set_channel_bwmode(padapter, pbuddy_mlmeext->cur_channel, pbuddy_mlmeext->cur_ch_offset, pbuddy_mlmeext->cur_bwmode); + + issue_nulldata(pbuddy_adapter, NULL, 0, 3, 500); + } + else if( pwdinfo->driver_interface == DRIVER_WEXT ) + { + if(rtw_p2p_chk_state(pwdinfo, P2P_STATE_IDLE)) + { + // Now, the driver stays on the AP's channel. + // If the pwdinfo->ext_listen_period = 0, that means the P2P listen state is not available on listen channel. + if ( pwdinfo->ext_listen_period > 0 ) + { + DBG_8192C( "[%s] P2P_STATE_IDLE, ext_listen_period = %d\n", __FUNCTION__, pwdinfo->ext_listen_period ); + + if ( pbuddy_mlmeext->cur_channel != pwdinfo->listen_channel ) + { + // Will switch to listen channel so that need to send the NULL data with PW bit to AP. + issue_nulldata(pbuddy_adapter, NULL, 1, 3, 500); + set_channel_bwmode(padapter, pwdinfo->listen_channel, HAL_PRIME_CHNL_OFFSET_DONT_CARE, HT_CHANNEL_WIDTH_20); + } + + rtw_p2p_set_state(pwdinfo, P2P_STATE_LISTEN); + val8 = 1; + rtw_hal_set_hwreg(padapter, HW_VAR_MLME_SITESURVEY, (u8 *)(&val8)); + + // Todo: To check the value of pwdinfo->ext_listen_period is equal to 0 or not. + _set_timer( &pwdinfo->ap_p2p_switch_timer, pwdinfo->ext_listen_period ); + } + } + else if ( rtw_p2p_chk_state(pwdinfo, P2P_STATE_LISTEN) || + rtw_p2p_chk_state(pwdinfo, P2P_STATE_GONEGO_FAIL) || + ( rtw_p2p_chk_state(pwdinfo, P2P_STATE_GONEGO_ING) && pwdinfo->nego_req_info.benable == _FALSE ) || + rtw_p2p_chk_state(pwdinfo, P2P_STATE_RX_PROVISION_DIS_REQ) ) + { + // Now, the driver is in the listen state of P2P mode. + DBG_8192C( "[%s] P2P_STATE_IDLE, ext_listen_interval = %d\n", __FUNCTION__, pwdinfo->ext_listen_interval ); + + // Commented by Albert 2012/11/01 + // If the AP's channel is the same as the listen channel, we should still be in the listen state + // Other P2P device is still able to find this device out even this device is in the AP's channel. + // So, configure this device to be able to receive the probe request frame and set it to listen state. + if ( pbuddy_mlmeext->cur_channel != pwdinfo->listen_channel ) + { + set_channel_bwmode(padapter, pbuddy_mlmeext->cur_channel, pbuddy_mlmeext->cur_ch_offset, pbuddy_mlmeext->cur_bwmode); + val8 = 0; + padapter->HalFunc.SetHwRegHandler(padapter, HW_VAR_MLME_SITESURVEY, (u8 *)(&val8)); + rtw_p2p_set_state(pwdinfo, P2P_STATE_IDLE); + issue_nulldata(pbuddy_adapter, NULL, 0, 3, 500); + } + + // Todo: To check the value of pwdinfo->ext_listen_interval is equal to 0 or not. + _set_timer( &pwdinfo->ap_p2p_switch_timer, pwdinfo->ext_listen_interval ); + } + else if(rtw_p2p_chk_state(pwdinfo, P2P_STATE_GONEGO_OK)) + { + // The driver had finished the P2P handshake successfully. + val8 = 0; + rtw_hal_set_hwreg(padapter, HW_VAR_MLME_SITESURVEY, (u8 *)(&val8)); + set_channel_bwmode(padapter, pbuddy_mlmeext->cur_channel, pbuddy_mlmeext->cur_ch_offset, pbuddy_mlmeext->cur_bwmode); + issue_nulldata(pbuddy_adapter, NULL, 0, 3, 500); + } + else if(rtw_p2p_chk_state(pwdinfo, P2P_STATE_TX_PROVISION_DIS_REQ)) + { + val8 = 1; + set_channel_bwmode(padapter, pwdinfo->tx_prov_disc_info.peer_channel_num[0], HAL_PRIME_CHNL_OFFSET_DONT_CARE, HT_CHANNEL_WIDTH_20); + rtw_hal_set_hwreg(padapter, HW_VAR_MLME_SITESURVEY, (u8 *)(&val8)); + issue_probereq_p2p(padapter, NULL); + _set_timer( &pwdinfo->pre_tx_scan_timer, P2P_TX_PRESCAN_TIMEOUT ); + } + else if(rtw_p2p_chk_state(pwdinfo, P2P_STATE_GONEGO_ING) && pwdinfo->nego_req_info.benable == _TRUE) + { + val8 = 1; + set_channel_bwmode(padapter, pwdinfo->nego_req_info.peer_channel_num[0], HAL_PRIME_CHNL_OFFSET_DONT_CARE, HT_CHANNEL_WIDTH_20); + rtw_hal_set_hwreg(padapter, HW_VAR_MLME_SITESURVEY, (u8 *)(&val8)); + issue_probereq_p2p(padapter, NULL); + _set_timer( &pwdinfo->pre_tx_scan_timer, P2P_TX_PRESCAN_TIMEOUT ); + } + else if(rtw_p2p_chk_state(pwdinfo, P2P_STATE_TX_INVITE_REQ ) && pwdinfo->invitereq_info.benable == _TRUE) + { + /* + val8 = 1; + set_channel_bwmode(padapter, , HAL_PRIME_CHNL_OFFSET_DONT_CARE, HT_CHANNEL_WIDTH_20); + rtw_hal_set_hwreg(padapter, HW_VAR_MLME_SITESURVEY, (u8 *)(&val8)); + issue_probereq_p2p(padapter, NULL); + _set_timer( &pwdinfo->pre_tx_scan_timer, P2P_TX_PRESCAN_TIMEOUT ); + */ + } + } + } + else + { + set_channel_bwmode( padapter, pwdinfo->listen_channel, HAL_PRIME_CHNL_OFFSET_DONT_CARE, HT_CHANNEL_WIDTH_20); + } + +_func_exit_; +} +#endif + +#ifdef CONFIG_IOCTL_CFG80211 +static void ro_ch_handler(_adapter *padapter) +{ + struct cfg80211_wifidirect_info *pcfg80211_wdinfo = &padapter->cfg80211_wdinfo; + struct wifidirect_info *pwdinfo = &padapter->wdinfo; + struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; + u8 ch, bw, offset; +_func_enter_; + + if (rtw_get_ch_setting_union(padapter, &ch, &bw, &offset) != 0) { + if (0) + DBG_871X(FUNC_ADPT_FMT" back to linked union - ch:%u, bw:%u, offset:%u\n", + FUNC_ADPT_ARG(padapter), ch, bw, offset); + } + else if (wdev_to_priv(padapter->rtw_wdev)->p2p_enabled && pwdinfo->listen_channel) { + ch = pwdinfo->listen_channel; + bw = HT_CHANNEL_WIDTH_20; + offset = HAL_PRIME_CHNL_OFFSET_DONT_CARE; + if (0) + DBG_871X(FUNC_ADPT_FMT" back to listen ch - ch:%u, bw:%u, offset:%u\n", + FUNC_ADPT_ARG(padapter), ch, bw, offset); + } + else { + ch = pcfg80211_wdinfo->restore_channel; + bw = HT_CHANNEL_WIDTH_20; + offset = HAL_PRIME_CHNL_OFFSET_DONT_CARE; + if (0) + DBG_871X(FUNC_ADPT_FMT" back to restore ch - ch:%u, bw:%u, offset:%u\n", + FUNC_ADPT_ARG(padapter), ch, bw, offset); + } + + set_channel_bwmode(padapter, ch, offset, bw); + + rtw_p2p_set_state(pwdinfo, rtw_p2p_pre_state(pwdinfo)); +#ifdef CONFIG_DEBUG_CFG80211 + DBG_871X("%s, role=%d, p2p_state=%d\n", __func__, rtw_p2p_role(pwdinfo), rtw_p2p_state(pwdinfo)); +#endif + + pcfg80211_wdinfo->is_ro_ch = _FALSE; + + DBG_871X("cfg80211_remain_on_channel_expired\n"); + + rtw_cfg80211_remain_on_channel_expired(padapter, + pcfg80211_wdinfo->remain_on_ch_cookie, + &pcfg80211_wdinfo->remain_on_ch_channel, + pcfg80211_wdinfo->remain_on_ch_type, GFP_KERNEL); + +_func_exit_; +} + +static void ro_ch_timer_process (void *FunctionContext) +{ + _adapter *adapter = (_adapter *)FunctionContext; + struct rtw_wdev_priv *pwdev_priv = wdev_to_priv(adapter->rtw_wdev); + + //printk("%s \n", __FUNCTION__); + +#ifdef CONFIG_CONCURRENT_MODE + ATOMIC_SET(&pwdev_priv->ro_ch_to, 1); +#endif + + p2p_protocol_wk_cmd( adapter, P2P_RO_CH_WK); +} + +static void rtw_change_p2pie_op_ch(_adapter *padapter, const u8 *frame_body, u32 len, u8 ch) +{ + u8 *ies, *p2p_ie; + u32 ies_len, p2p_ielen; + PADAPTER pbuddy_adapter = padapter->pbuddy_adapter; + struct mlme_ext_priv *pbuddy_mlmeext = &pbuddy_adapter->mlmeextpriv; + + ies = (u8*)(frame_body + _PUBLIC_ACTION_IE_OFFSET_); + ies_len = len - _PUBLIC_ACTION_IE_OFFSET_; + + p2p_ie = rtw_get_p2p_ie( ies, ies_len, NULL, &p2p_ielen ); + + while ( p2p_ie ) { + u32 attr_contentlen = 0; + u8 *pattr = NULL; + + //Check P2P_ATTR_OPERATING_CH + attr_contentlen = 0; + pattr = NULL; + if((pattr = rtw_get_p2p_attr_content(p2p_ie, p2p_ielen, P2P_ATTR_OPERATING_CH, NULL, (uint*)&attr_contentlen))!=NULL) + { + *(pattr+4) = ch; + } + + //Get the next P2P IE + p2p_ie = rtw_get_p2p_ie(p2p_ie+p2p_ielen, ies_len -(p2p_ie -ies + p2p_ielen), NULL, &p2p_ielen); + } +} + +static void rtw_change_p2pie_ch_list(_adapter *padapter, const u8 *frame_body, u32 len, u8 ch) +{ + u8 *ies, *p2p_ie; + u32 ies_len, p2p_ielen; + PADAPTER pbuddy_adapter = padapter->pbuddy_adapter; + struct mlme_ext_priv *pbuddy_mlmeext = &pbuddy_adapter->mlmeextpriv; + + ies = (u8*)(frame_body + _PUBLIC_ACTION_IE_OFFSET_); + ies_len = len - _PUBLIC_ACTION_IE_OFFSET_; + + p2p_ie = rtw_get_p2p_ie( ies, ies_len, NULL, &p2p_ielen ); + + while (p2p_ie) { + u32 attr_contentlen = 0; + u8 *pattr = NULL; + + //Check P2P_ATTR_CH_LIST + if ((pattr=rtw_get_p2p_attr_content(p2p_ie, p2p_ielen, P2P_ATTR_CH_LIST, NULL, (uint*)&attr_contentlen))!=NULL) { + int i; + u32 num_of_ch; + u8 *pattr_temp = pattr + 3 ; + + attr_contentlen -= 3; + + while (attr_contentlen>0) { + num_of_ch = *(pattr_temp+1); + + for(i=0; ipbuddy_adapter; + struct mlme_ext_priv *pbuddy_mlmeext = &pbuddy_adapter->mlmeextpriv; + u8 buddy_ch = pbuddy_mlmeext->cur_channel; + + ies = (u8*)(frame_body + _PUBLIC_ACTION_IE_OFFSET_); + ies_len = len - _PUBLIC_ACTION_IE_OFFSET_; + + p2p_ie = rtw_get_p2p_ie( ies, ies_len, NULL, &p2p_ielen ); + + while (p2p_ie) { + u32 attr_contentlen = 0; + u8 *pattr = NULL; + + //Check P2P_ATTR_CH_LIST + if ((pattr=rtw_get_p2p_attr_content(p2p_ie, p2p_ielen, P2P_ATTR_CH_LIST, NULL, (uint*)&attr_contentlen))!=NULL) { + int i; + u32 num_of_ch; + u8 *pattr_temp = pattr + 3 ; + + attr_contentlen -= 3; + + while (attr_contentlen>0) { + num_of_ch = *(pattr_temp+1); + + for(i=0; ipbuddy_adapter; + struct mlme_ext_priv *pbuddy_mlmeext = &pbuddy_adapter->mlmeextpriv; + u8 buddy_ch = pbuddy_mlmeext->cur_channel; + + ies = (u8*)(frame_body + _PUBLIC_ACTION_IE_OFFSET_); + ies_len = len - _PUBLIC_ACTION_IE_OFFSET_; + + p2p_ie = rtw_get_p2p_ie( ies, ies_len, NULL, &p2p_ielen ); + + while (p2p_ie) { + u32 attr_contentlen = 0; + u8 *pattr = NULL; + + //Check P2P_ATTR_OPERATING_CH + attr_contentlen = 0; + pattr = NULL; + if((pattr = rtw_get_p2p_attr_content(p2p_ie, p2p_ielen, P2P_ATTR_OPERATING_CH, NULL, (uint*)&attr_contentlen))!=NULL) { + if (*(pattr+4) == buddy_ch) { + DBG_871X(FUNC_ADPT_FMT" op_ch fit buddy_ch:%u\n", FUNC_ADPT_ARG(padapter), buddy_ch); + fit = _TRUE; + break; + } + } + + //Get the next P2P IE + p2p_ie = rtw_get_p2p_ie(p2p_ie+p2p_ielen, ies_len -(p2p_ie -ies + p2p_ielen), NULL, &p2p_ielen); + } +#endif + return fit; +} + +static void rtw_cfg80211_adjust_p2pie_channel(_adapter *padapter, const u8 *frame_body, u32 len) +{ +#ifdef CONFIG_CONCURRENT_MODE + u8 *ies, *p2p_ie; + u32 ies_len, p2p_ielen; + PADAPTER pbuddy_adapter = padapter->pbuddy_adapter; + struct mlme_ext_priv *pbuddy_mlmeext = &pbuddy_adapter->mlmeextpriv; + + ies = (u8*)(frame_body + _PUBLIC_ACTION_IE_OFFSET_); + ies_len = len - _PUBLIC_ACTION_IE_OFFSET_; + + p2p_ie = rtw_get_p2p_ie( ies, ies_len, NULL, &p2p_ielen ); + + while ( p2p_ie ) + { + u32 attr_contentlen = 0; + u8 *pattr = NULL; + + //Check P2P_ATTR_CH_LIST + if((pattr=rtw_get_p2p_attr_content(p2p_ie, p2p_ielen, P2P_ATTR_CH_LIST, NULL, (uint*)&attr_contentlen))!=NULL) + { + int i; + u32 num_of_ch; + u8 *pattr_temp = pattr + 3 ; + + attr_contentlen -= 3; + + while(attr_contentlen>0) + { + num_of_ch = *(pattr_temp+1); + + for(i=0; icur_channel;//forcing to the same channel + + pattr_temp += (2+num_of_ch); + attr_contentlen -= (2+num_of_ch); + } + } + + //Check P2P_ATTR_OPERATING_CH + attr_contentlen = 0; + pattr = NULL; + if((pattr = rtw_get_p2p_attr_content(p2p_ie, p2p_ielen, P2P_ATTR_OPERATING_CH, NULL, (uint*)&attr_contentlen))!=NULL) + { + *(pattr+4) = pbuddy_mlmeext->cur_channel;//forcing to the same channel + } + + //Get the next P2P IE + p2p_ie = rtw_get_p2p_ie(p2p_ie+p2p_ielen, ies_len -(p2p_ie -ies + p2p_ielen), NULL, &p2p_ielen); + + } + +#endif +} + +#ifdef CONFIG_WFD +void rtw_append_wfd_ie(_adapter *padapter, u8 *buf, u32* len) +{ + unsigned char *frame_body; + u8 category, action, OUI_Subtype, dialogToken=0; + u32 wfdielen = 0; + struct rtw_wdev_priv *pwdev_priv = wdev_to_priv(padapter->rtw_wdev); + + frame_body = (unsigned char *)(buf + sizeof(struct rtw_ieee80211_hdr_3addr)); + category = frame_body[0]; + + if(category == RTW_WLAN_CATEGORY_PUBLIC) + { + action = frame_body[1]; + if (action == ACT_PUBLIC_VENDOR + && _rtw_memcmp(frame_body+2, P2P_OUI, 4) == _TRUE + ) + { + OUI_Subtype = frame_body[6]; + dialogToken = frame_body[7]; + switch( OUI_Subtype )//OUI Subtype + { + case P2P_GO_NEGO_REQ: + { + wfdielen = build_nego_req_wfd_ie( &padapter->wdinfo, buf + ( *len ) ); + (*len) += wfdielen; + break; + } + case P2P_GO_NEGO_RESP: + { + wfdielen = build_nego_resp_wfd_ie( &padapter->wdinfo, buf + ( *len ) ); + (*len) += wfdielen; + break; + } + case P2P_GO_NEGO_CONF: + { + wfdielen = build_nego_confirm_wfd_ie( &padapter->wdinfo, buf + ( *len ) ); + (*len) += wfdielen; + break; + } + case P2P_INVIT_REQ: + { + wfdielen = build_invitation_req_wfd_ie( &padapter->wdinfo, buf + ( *len ) ); + (*len) += wfdielen; + break; + } + case P2P_INVIT_RESP: + { + wfdielen = build_invitation_resp_wfd_ie( &padapter->wdinfo, buf + ( *len ) ); + (*len) += wfdielen; + break; + } + case P2P_DEVDISC_REQ: + break; + case P2P_DEVDISC_RESP: + + break; + case P2P_PROVISION_DISC_REQ: + { + wfdielen = build_provdisc_req_wfd_ie( &padapter->wdinfo, buf + ( *len ) ); + (*len) += wfdielen; + break; + } + case P2P_PROVISION_DISC_RESP: + { + wfdielen = build_provdisc_resp_wfd_ie( &padapter->wdinfo, buf + ( *len ) ); + (*len) += wfdielen; + break; + } + default: + + break; + } + + } + + } + else if(category == RTW_WLAN_CATEGORY_P2P) + { + OUI_Subtype = frame_body[5]; + dialogToken = frame_body[6]; + +#ifdef CONFIG_DEBUG_CFG80211 + DBG_871X("ACTION_CATEGORY_P2P: OUI=0x%x, OUI_Subtype=%d, dialogToken=%d\n", + cpu_to_be32( *( ( u32* ) ( frame_body + 1 ) ) ), OUI_Subtype, dialogToken); +#endif + + switch(OUI_Subtype) + { + case P2P_NOTICE_OF_ABSENCE: + + break; + case P2P_PRESENCE_REQUEST: + + break; + case P2P_PRESENCE_RESPONSE: + + break; + case P2P_GO_DISC_REQUEST: + + break; + default: + + break; + } + + } + else + { + DBG_871X("%s, action frame category=%d\n", __func__, category); + //is_p2p_frame = (-1); + } + + return; +} +#endif + +u8 *dump_p2p_attr_ch_list(u8 *p2p_ie, uint p2p_ielen, u8 *buf, u32 buf_len) +{ + uint attr_contentlen = 0; + u8 *pattr = NULL; + int w_sz = 0; + u8 ch_cnt = 0; + u8 ch_list[40]; + bool continuous = _FALSE; + + if ((pattr=rtw_get_p2p_attr_content(p2p_ie, p2p_ielen, P2P_ATTR_CH_LIST, NULL, &attr_contentlen))!=NULL) { + int i, j; + u32 num_of_ch; + u8 *pattr_temp = pattr + 3 ; + + attr_contentlen -= 3; + + _rtw_memset(ch_list, 0, 40); + + while (attr_contentlen>0) { + num_of_ch = *(pattr_temp+1); + + for(i=0; i=ch_cnt) + ch_list[ch_cnt++] = *(pattr_temp+2+i); + + } + + pattr_temp += (2+num_of_ch); + attr_contentlen -= (2+num_of_ch); + } + + for (j=0;j>1 == resp >>1) + return req&0x01 ? _TRUE : _FALSE; + else if (req>>1 > resp>>1) + return _TRUE; + else + return _FALSE; +} + +int rtw_p2p_check_frames(_adapter *padapter, const u8 *buf, u32 len, u8 tx) +{ + int is_p2p_frame = (-1); + unsigned char *frame_body; + u8 category, action, OUI_Subtype, dialogToken=0; + u8 *p2p_ie = NULL; + uint p2p_ielen = 0; + struct rtw_wdev_priv *pwdev_priv = wdev_to_priv(padapter->rtw_wdev); + int status = -1; + u8 ch_list_buf[128] = {'\0'}; + int op_ch = -1; + int listen_ch = -1; + u8 intent = 0; + + frame_body = (unsigned char *)(buf + sizeof(struct rtw_ieee80211_hdr_3addr)); + category = frame_body[0]; + //just for check + if(category == RTW_WLAN_CATEGORY_PUBLIC) + { + action = frame_body[1]; + if (action == ACT_PUBLIC_VENDOR + && _rtw_memcmp(frame_body+2, P2P_OUI, 4) == _TRUE + ) + { + OUI_Subtype = frame_body[6]; + dialogToken = frame_body[7]; + is_p2p_frame = OUI_Subtype; + #ifdef CONFIG_DEBUG_CFG80211 + DBG_871X("ACTION_CATEGORY_PUBLIC: ACT_PUBLIC_VENDOR, OUI=0x%x, OUI_Subtype=%d, dialogToken=%d\n", + cpu_to_be32( *( ( u32* ) ( frame_body + 2 ) ) ), OUI_Subtype, dialogToken); + #endif + + p2p_ie = rtw_get_p2p_ie( + (u8 *)buf+sizeof(struct rtw_ieee80211_hdr_3addr)+_PUBLIC_ACTION_IE_OFFSET_, + len-sizeof(struct rtw_ieee80211_hdr_3addr)-_PUBLIC_ACTION_IE_OFFSET_, + NULL, &p2p_ielen); + + switch( OUI_Subtype )//OUI Subtype + { + u8 *cont; + uint cont_len; + case P2P_GO_NEGO_REQ: + { + struct rtw_wdev_nego_info* nego_info = &pwdev_priv->nego_info; + + if (tx) { + #ifdef CONFIG_DRV_ISSUE_PROV_REQ // IOT FOR S2 + if(pwdev_priv->provdisc_req_issued == _FALSE) { + rtw_cfg80211_issue_p2p_provision_request(padapter, buf, len); + pwdev_priv->provdisc_req_issued = _TRUE; + rtw_msleep_os(200); + } + #endif //CONFIG_DRV_ISSUE_PROV_REQ + + #ifdef CONFIG_CONCURRENT_MODE + if(check_buddy_fwstate(padapter, _FW_LINKED)) + rtw_cfg80211_adjust_p2pie_channel(padapter, frame_body, len-sizeof(struct rtw_ieee80211_hdr_3addr)); + #endif + } + + if ((cont = rtw_get_p2p_attr_content(p2p_ie, p2p_ielen, P2P_ATTR_OPERATING_CH, NULL, &cont_len))) + op_ch = *(cont+4); + if ((cont = rtw_get_p2p_attr_content(p2p_ie, p2p_ielen, P2P_ATTR_LISTEN_CH, NULL, &cont_len))) + listen_ch = *(cont+4); + if ((cont = rtw_get_p2p_attr_content(p2p_ie, p2p_ielen, P2P_ATTR_GO_INTENT, NULL, &cont_len))) + intent = *cont; + + if (nego_info->token != dialogToken) + rtw_wdev_nego_info_init(nego_info); + + _rtw_memcpy(nego_info->peer_mac, tx ? GetAddr1Ptr(buf) : GetAddr2Ptr(buf), ETH_ALEN); + nego_info->active = tx ? 1 : 0; + nego_info->token = dialogToken; + nego_info->req_op_ch = op_ch; + nego_info->req_listen_ch = listen_ch; + nego_info->req_intent = intent; + nego_info->state = 0; + + dump_p2p_attr_ch_list(p2p_ie, p2p_ielen, ch_list_buf, 128); + DBG_871X("RTW_%s:P2P_GO_NEGO_REQ, dialogToken=%d, intent:%u%s, listen_ch:%d, op_ch:%d, ch_list:%s\n", + (tx==_TRUE)?"Tx":"Rx", dialogToken, (intent>>1), intent&0x1 ? "+" : "-", listen_ch, op_ch, ch_list_buf); + + if (!tx) { + #ifdef CONFIG_CONCURRENT_MODE + if(check_buddy_fwstate(padapter, _FW_LINKED) + && rtw_chk_p2pie_ch_list_with_buddy(padapter, frame_body, len-sizeof(struct rtw_ieee80211_hdr_3addr)) == _FALSE) + { + DBG_871X(FUNC_ADPT_FMT" ch_list has no intersect with buddy\n", FUNC_ADPT_ARG(padapter)); + rtw_change_p2pie_ch_list(padapter, frame_body, len-sizeof(struct rtw_ieee80211_hdr_3addr), 0); + } + #endif + } + + break; + } + case P2P_GO_NEGO_RESP: + { + struct rtw_wdev_nego_info* nego_info = &pwdev_priv->nego_info; + + if (tx) { + #ifdef CONFIG_CONCURRENT_MODE + if(check_buddy_fwstate(padapter, _FW_LINKED)) + rtw_cfg80211_adjust_p2pie_channel(padapter, frame_body, len-sizeof(struct rtw_ieee80211_hdr_3addr)); + #endif + } + + if ((cont = rtw_get_p2p_attr_content(p2p_ie, p2p_ielen, P2P_ATTR_OPERATING_CH, NULL, &cont_len))) + op_ch = *(cont+4); + if ((cont = rtw_get_p2p_attr_content(p2p_ie, p2p_ielen, P2P_ATTR_GO_INTENT, NULL, &cont_len))) + intent = *cont; + if ((cont = rtw_get_p2p_attr_content(p2p_ie, p2p_ielen, P2P_ATTR_STATUS, NULL, &cont_len))) + status = *cont; + + if (nego_info->token == dialogToken && nego_info->state == 0 + && _rtw_memcmp(nego_info->peer_mac, tx ? GetAddr1Ptr(buf) : GetAddr2Ptr(buf), ETH_ALEN) == _TRUE + ) { + nego_info->status = (status==-1) ? 0xff : status; + nego_info->rsp_op_ch= op_ch; + nego_info->rsp_intent = intent; + nego_info->state = 1; + if (status != 0) + nego_info->token = 0; /* init */ + } + + dump_p2p_attr_ch_list(p2p_ie, p2p_ielen, ch_list_buf, 128); + DBG_871X("RTW_%s:P2P_GO_NEGO_RESP, dialogToken=%d, intent:%u%s, status:%d, op_ch:%d, ch_list:%s\n", + (tx==_TRUE)?"Tx":"Rx", dialogToken, (intent>>1), intent&0x1 ? "+" : "-", status, op_ch, ch_list_buf); + + if (!tx) { + pwdev_priv->provdisc_req_issued = _FALSE; + #ifdef CONFIG_CONCURRENT_MODE + if(check_buddy_fwstate(padapter, _FW_LINKED) + && rtw_chk_p2pie_ch_list_with_buddy(padapter, frame_body, len-sizeof(struct rtw_ieee80211_hdr_3addr)) == _FALSE) + { + DBG_871X(FUNC_ADPT_FMT" ch_list has no intersect with buddy\n", FUNC_ADPT_ARG(padapter)); + rtw_change_p2pie_ch_list(padapter, frame_body, len-sizeof(struct rtw_ieee80211_hdr_3addr), 0); + } + #endif + } + + break; + } + case P2P_GO_NEGO_CONF: + { + struct rtw_wdev_nego_info* nego_info = &pwdev_priv->nego_info; + bool is_go = _FALSE; + + if (tx) { + #ifdef CONFIG_CONCURRENT_MODE + if(check_buddy_fwstate(padapter, _FW_LINKED)) + rtw_cfg80211_adjust_p2pie_channel(padapter, frame_body, len-sizeof(struct rtw_ieee80211_hdr_3addr)); + #endif + } + + if ((cont = rtw_get_p2p_attr_content(p2p_ie, p2p_ielen, P2P_ATTR_OPERATING_CH, NULL, &cont_len))) + op_ch = *(cont+4); + if ((cont = rtw_get_p2p_attr_content(p2p_ie, p2p_ielen, P2P_ATTR_STATUS, NULL, &cont_len))) + status = *cont; + + if (nego_info->token == dialogToken && nego_info->state == 1 + && _rtw_memcmp(nego_info->peer_mac, tx ? GetAddr1Ptr(buf) : GetAddr2Ptr(buf), ETH_ALEN) == _TRUE + ) { + nego_info->status = (status==-1) ? 0xff : status; + nego_info->conf_op_ch = (op_ch==-1) ? 0 : op_ch; + nego_info->state = 2; + + if (status == 0) { + if (rtw_p2p_nego_intent_compare(nego_info->req_intent, nego_info->rsp_intent) && tx) + is_go = _TRUE; + } + + nego_info->token = 0; /* init */ + } + + dump_p2p_attr_ch_list(p2p_ie, p2p_ielen, ch_list_buf, 128); + DBG_871X("RTW_%s:P2P_GO_NEGO_CONF, dialogToken=%d, status:%d, op_ch:%d, ch_list:%s\n", + (tx==_TRUE)?"Tx":"Rx", dialogToken, status, op_ch, ch_list_buf); + + if (!tx) { + } + + break; + } + case P2P_INVIT_REQ: + { + struct rtw_wdev_invit_info* invit_info = &pwdev_priv->invit_info; + int flags = -1; + + if (tx) { + #ifdef CONFIG_CONCURRENT_MODE + if(check_buddy_fwstate(padapter, _FW_LINKED)) + rtw_cfg80211_adjust_p2pie_channel(padapter, frame_body, len-sizeof(struct rtw_ieee80211_hdr_3addr)); + #endif + } + + if ((cont = rtw_get_p2p_attr_content(p2p_ie, p2p_ielen, P2P_ATTR_INVITATION_FLAGS, NULL, &cont_len))) + flags = *cont; + if ((cont = rtw_get_p2p_attr_content(p2p_ie, p2p_ielen, P2P_ATTR_OPERATING_CH, NULL, &cont_len))) + op_ch = *(cont+4); + + if (invit_info->token != dialogToken) + rtw_wdev_invit_info_init(invit_info); + + _rtw_memcpy(invit_info->peer_mac, tx ? GetAddr1Ptr(buf) : GetAddr2Ptr(buf), ETH_ALEN); + invit_info->active = tx ? 1 : 0; + invit_info->token = dialogToken; + invit_info->flags = (flags==-1) ? 0x0 : flags; + invit_info->req_op_ch= op_ch; + invit_info->state = 0; + + dump_p2p_attr_ch_list(p2p_ie, p2p_ielen, ch_list_buf, 128); + DBG_871X("RTW_%s:P2P_INVIT_REQ, dialogToken=%d, flags:0x%02x, op_ch:%d, ch_list:%s\n", + (tx==_TRUE)?"Tx":"Rx", dialogToken, flags, op_ch, ch_list_buf); + + if (!tx) { + #ifdef CONFIG_CONCURRENT_MODE + if(check_buddy_fwstate(padapter, _FW_LINKED)) { + if (op_ch != -1 && rtw_chk_p2pie_op_ch_with_buddy(padapter, frame_body, len-sizeof(struct rtw_ieee80211_hdr_3addr)) == _FALSE) { + DBG_871X(FUNC_ADPT_FMT" op_ch:%u has no intersect with buddy\n", FUNC_ADPT_ARG(padapter), op_ch); + rtw_change_p2pie_ch_list(padapter, frame_body, len-sizeof(struct rtw_ieee80211_hdr_3addr), 0); + } else if (rtw_chk_p2pie_ch_list_with_buddy(padapter, frame_body, len-sizeof(struct rtw_ieee80211_hdr_3addr)) == _FALSE) { + DBG_871X(FUNC_ADPT_FMT" ch_list has no intersect with buddy\n", FUNC_ADPT_ARG(padapter)); + rtw_change_p2pie_ch_list(padapter, frame_body, len-sizeof(struct rtw_ieee80211_hdr_3addr), 0); + } + } + #endif + } + + break; + } + case P2P_INVIT_RESP: + { + struct rtw_wdev_invit_info* invit_info = &pwdev_priv->invit_info; + + if (tx) { + #ifdef CONFIG_CONCURRENT_MODE + if(check_buddy_fwstate(padapter, _FW_LINKED)) + rtw_cfg80211_adjust_p2pie_channel(padapter, frame_body, len-sizeof(struct rtw_ieee80211_hdr_3addr)); + #endif + } + + if ((cont = rtw_get_p2p_attr_content(p2p_ie, p2p_ielen, P2P_ATTR_STATUS, NULL, &cont_len))) + { +#ifdef CONFIG_P2P_INVITE_IOT + if(tx && *cont==7) + { + DBG_871X("TX_P2P_INVITE_RESP, status is no common channel, change to unknown group\n"); + *cont = 8; //unknow group status + } +#endif //CONFIG_P2P_INVITE_IOT + status = *cont; + } + if ((cont = rtw_get_p2p_attr_content(p2p_ie, p2p_ielen, P2P_ATTR_OPERATING_CH, NULL, &cont_len))) + op_ch = *(cont+4); + + if (invit_info->token == dialogToken && invit_info->state == 0 + && _rtw_memcmp(invit_info->peer_mac, tx ? GetAddr1Ptr(buf) : GetAddr2Ptr(buf), ETH_ALEN) == _TRUE + ) { + invit_info->status = (status==-1) ? 0xff : status; + invit_info->rsp_op_ch= op_ch; + invit_info->state = 1; + invit_info->token = 0; /* init */ + } + + dump_p2p_attr_ch_list(p2p_ie, p2p_ielen, ch_list_buf, 128); + DBG_871X("RTW_%s:P2P_INVIT_RESP, dialogToken=%d, status:%d, op_ch:%d, ch_list:%s\n", + (tx==_TRUE)?"Tx":"Rx", dialogToken, status, op_ch, ch_list_buf); + + if (!tx) { + } + + break; + } + case P2P_DEVDISC_REQ: + DBG_871X("RTW_%s:P2P_DEVDISC_REQ, dialogToken=%d\n", (tx==_TRUE)?"Tx":"Rx", dialogToken); + break; + case P2P_DEVDISC_RESP: + cont = rtw_get_p2p_attr_content(p2p_ie, p2p_ielen, P2P_ATTR_STATUS, NULL, &cont_len); + DBG_871X("RTW_%s:P2P_DEVDISC_RESP, dialogToken=%d, status:%d\n", (tx==_TRUE)?"Tx":"Rx", dialogToken, cont?*cont:-1); + break; + case P2P_PROVISION_DISC_REQ: + { + size_t frame_body_len = len - sizeof(struct rtw_ieee80211_hdr_3addr); + u8 *p2p_ie; + uint p2p_ielen = 0; + uint contentlen = 0; + + DBG_871X("RTW_%s:P2P_PROVISION_DISC_REQ, dialogToken=%d\n", (tx==_TRUE)?"Tx":"Rx", dialogToken); + + //if(tx) + { + pwdev_priv->provdisc_req_issued = _FALSE; + + if( (p2p_ie=rtw_get_p2p_ie( frame_body + _PUBLIC_ACTION_IE_OFFSET_, frame_body_len - _PUBLIC_ACTION_IE_OFFSET_, NULL, &p2p_ielen))) + { + + if(rtw_get_p2p_attr_content( p2p_ie, p2p_ielen, P2P_ATTR_GROUP_ID, NULL, &contentlen)) + { + pwdev_priv->provdisc_req_issued = _FALSE;//case: p2p_client join p2p GO + } + else + { + #ifdef CONFIG_DEBUG_CFG80211 + DBG_871X("provdisc_req_issued is _TRUE\n"); + #endif //CONFIG_DEBUG_CFG80211 + pwdev_priv->provdisc_req_issued = _TRUE;//case: p2p_devices connection before Nego req. + } + + } + } + } + break; + case P2P_PROVISION_DISC_RESP: + DBG_871X("RTW_%s:P2P_PROVISION_DISC_RESP, dialogToken=%d\n", (tx==_TRUE)?"Tx":"Rx", dialogToken); + break; + default: + DBG_871X("RTW_%s:OUI_Subtype=%d, dialogToken=%d\n", (tx==_TRUE)?"Tx":"Rx", OUI_Subtype, dialogToken); + break; + } + + } + + } + else if(category == RTW_WLAN_CATEGORY_P2P) + { + OUI_Subtype = frame_body[5]; + dialogToken = frame_body[6]; + + #ifdef CONFIG_DEBUG_CFG80211 + DBG_871X("ACTION_CATEGORY_P2P: OUI=0x%x, OUI_Subtype=%d, dialogToken=%d\n", + cpu_to_be32( *( ( u32* ) ( frame_body + 1 ) ) ), OUI_Subtype, dialogToken); + #endif + + is_p2p_frame = OUI_Subtype; + + switch(OUI_Subtype) + { + case P2P_NOTICE_OF_ABSENCE: + DBG_871X("RTW_%s:P2P_NOTICE_OF_ABSENCE, dialogToken=%d\n", (tx==_TRUE)?"TX":"RX", dialogToken); + break; + case P2P_PRESENCE_REQUEST: + DBG_871X("RTW_%s:P2P_PRESENCE_REQUEST, dialogToken=%d\n", (tx==_TRUE)?"TX":"RX", dialogToken); + break; + case P2P_PRESENCE_RESPONSE: + DBG_871X("RTW_%s:P2P_PRESENCE_RESPONSE, dialogToken=%d\n", (tx==_TRUE)?"TX":"RX", dialogToken); + break; + case P2P_GO_DISC_REQUEST: + DBG_871X("RTW_%s:P2P_GO_DISC_REQUEST, dialogToken=%d\n", (tx==_TRUE)?"TX":"RX", dialogToken); + break; + default: + DBG_871X("RTW_%s:OUI_Subtype=%d, dialogToken=%d\n", (tx==_TRUE)?"TX":"RX", OUI_Subtype, dialogToken); + break; + } + + } + else + { + DBG_871X("RTW_%s:action frame category=%d\n", (tx==_TRUE)?"TX":"RX", category); + } + + return is_p2p_frame; +} + +void rtw_init_cfg80211_wifidirect_info( _adapter* padapter) +{ + struct cfg80211_wifidirect_info *pcfg80211_wdinfo = &padapter->cfg80211_wdinfo; + + _rtw_memset(pcfg80211_wdinfo, 0x00, sizeof(struct cfg80211_wifidirect_info) ); + + _init_timer( &pcfg80211_wdinfo->remain_on_ch_timer, padapter->pnetdev, ro_ch_timer_process, padapter ); +} +#endif //CONFIG_IOCTL_CFG80211 + +void p2p_protocol_wk_hdl(_adapter *padapter, int intCmdType) +{ + struct wifidirect_info *pwdinfo= &(padapter->wdinfo); + +_func_enter_; + + switch(intCmdType) + { + case P2P_FIND_PHASE_WK: + { + find_phase_handler( padapter ); + break; + } + case P2P_RESTORE_STATE_WK: + { + restore_p2p_state_handler( padapter ); + break; + } + case P2P_PRE_TX_PROVDISC_PROCESS_WK: + { +#ifdef CONFIG_CONCURRENT_MODE + if ( check_buddy_fwstate(padapter, _FW_LINKED ) ) + { + p2p_concurrent_handler( padapter ); + } + else + { + pre_tx_provdisc_handler( padapter ); + } +#else + pre_tx_provdisc_handler( padapter ); +#endif + break; + } + case P2P_PRE_TX_INVITEREQ_PROCESS_WK: + { +#ifdef CONFIG_CONCURRENT_MODE + if ( check_buddy_fwstate(padapter, _FW_LINKED ) ) + { + p2p_concurrent_handler( padapter ); + } + else + { + pre_tx_invitereq_handler( padapter ); + } +#else + pre_tx_invitereq_handler( padapter ); +#endif + break; + } + case P2P_PRE_TX_NEGOREQ_PROCESS_WK: + { +#ifdef CONFIG_CONCURRENT_MODE + if ( check_buddy_fwstate(padapter, _FW_LINKED ) ) + { + p2p_concurrent_handler( padapter ); + } + else + { + pre_tx_negoreq_handler( padapter ); + } +#else + pre_tx_negoreq_handler( padapter ); +#endif + break; + } +#ifdef CONFIG_P2P +#ifdef CONFIG_CONCURRENT_MODE + case P2P_AP_P2P_CH_SWITCH_PROCESS_WK: + { + p2p_concurrent_handler( padapter ); + break; + } +#endif +#endif +#ifdef CONFIG_IOCTL_CFG80211 + case P2P_RO_CH_WK: + { + ro_ch_handler( padapter ); + break; + } +#endif //CONFIG_IOCTL_CFG80211 + + } + +_func_exit_; +} + +#ifdef CONFIG_P2P_PS +void process_p2p_ps_ie(PADAPTER padapter, u8 *IEs, u32 IELength) +{ + u8 * ies; + u32 ies_len; + u8 * p2p_ie; + u32 p2p_ielen = 0; + u8 noa_attr[MAX_P2P_IE_LEN] = { 0x00 };// NoA length should be n*(13) + 2 + u32 attr_contentlen = 0; + + struct wifidirect_info *pwdinfo = &( padapter->wdinfo ); + u8 find_p2p = _FALSE, find_p2p_ps = _FALSE; + u8 noa_offset, noa_num, noa_index; + +_func_enter_; + + if(rtw_p2p_chk_state(pwdinfo, P2P_STATE_NONE)) + { + return; + } + +#ifdef CONFIG_CONCURRENT_MODE + if(padapter->iface_type != IFACE_PORT0) + return; +#endif + if(IELength <= _BEACON_IE_OFFSET_) + return; + + ies = IEs + _BEACON_IE_OFFSET_; + ies_len = IELength - _BEACON_IE_OFFSET_; + + p2p_ie = rtw_get_p2p_ie( ies, ies_len, NULL, &p2p_ielen); + + while(p2p_ie) + { + find_p2p = _TRUE; + // Get Notice of Absence IE. + if(rtw_get_p2p_attr_content( p2p_ie, p2p_ielen, P2P_ATTR_NOA, noa_attr, &attr_contentlen)) + { + find_p2p_ps = _TRUE; + noa_index = noa_attr[0]; + + if( (pwdinfo->p2p_ps_mode == P2P_PS_NONE) || + (noa_index != pwdinfo->noa_index) )// if index change, driver should reconfigure related setting. + { + pwdinfo->noa_index = noa_index; + pwdinfo->opp_ps = noa_attr[1] >> 7; + pwdinfo->ctwindow = noa_attr[1] & 0x7F; + + noa_offset = 2; + noa_num = 0; + // NoA length should be n*(13) + 2 + if(attr_contentlen > 2) + { + while(noa_offset < attr_contentlen) + { + //_rtw_memcpy(&wifidirect_info->noa_count[noa_num], &noa_attr[noa_offset], 1); + pwdinfo->noa_count[noa_num] = noa_attr[noa_offset]; + noa_offset += 1; + + _rtw_memcpy(&pwdinfo->noa_duration[noa_num], &noa_attr[noa_offset], 4); + noa_offset += 4; + + _rtw_memcpy(&pwdinfo->noa_interval[noa_num], &noa_attr[noa_offset], 4); + noa_offset += 4; + + _rtw_memcpy(&pwdinfo->noa_start_time[noa_num], &noa_attr[noa_offset], 4); + noa_offset += 4; + + noa_num++; + } + } + pwdinfo->noa_num = noa_num; + + if( pwdinfo->opp_ps == 1 ) + { + pwdinfo->p2p_ps_mode = P2P_PS_CTWINDOW; + // driver should wait LPS for entering CTWindow + if(padapter->pwrctrlpriv.bFwCurrentInPSMode == _TRUE) + { + p2p_ps_wk_cmd(padapter, P2P_PS_ENABLE, 1); + } + } + else if( pwdinfo->noa_num > 0 ) + { + pwdinfo->p2p_ps_mode = P2P_PS_NOA; + p2p_ps_wk_cmd(padapter, P2P_PS_ENABLE, 1); + } + else if( pwdinfo->p2p_ps_mode > P2P_PS_NONE) + { + p2p_ps_wk_cmd(padapter, P2P_PS_DISABLE, 1); + } + } + + break; // find target, just break. + } + + //Get the next P2P IE + p2p_ie = rtw_get_p2p_ie(p2p_ie+p2p_ielen, ies_len -(p2p_ie -ies + p2p_ielen), NULL, &p2p_ielen); + + } + + if(find_p2p == _TRUE) + { + if( (pwdinfo->p2p_ps_mode > P2P_PS_NONE) && (find_p2p_ps == _FALSE) ) + { + p2p_ps_wk_cmd(padapter, P2P_PS_DISABLE, 1); + } + } + +_func_exit_; +} + +void p2p_ps_wk_hdl(_adapter *padapter, u8 p2p_ps_state) +{ + struct pwrctrl_priv *pwrpriv = &padapter->pwrctrlpriv; + struct wifidirect_info *pwdinfo= &(padapter->wdinfo); + +_func_enter_; + + switch(p2p_ps_state) + { + case P2P_PS_DISABLE: + pwdinfo->p2p_ps_state = p2p_ps_state; + + rtw_hal_set_hwreg(padapter, HW_VAR_H2C_FW_P2P_PS_OFFLOAD, (u8 *)(&p2p_ps_state)); + + pwdinfo->noa_index = 0; + pwdinfo->ctwindow = 0; + pwdinfo->opp_ps = 0; + pwdinfo->noa_num = 0; + pwdinfo->p2p_ps_mode = P2P_PS_NONE; + if(padapter->pwrctrlpriv.bFwCurrentInPSMode == _TRUE) + { + if(pwrpriv->smart_ps == 0) + { + pwrpriv->smart_ps = 2; + rtw_hal_set_hwreg(padapter, HW_VAR_H2C_FW_PWRMODE, (u8 *)(&(padapter->pwrctrlpriv.pwr_mode))); + } + } + break; + case P2P_PS_ENABLE: + if (pwdinfo->p2p_ps_mode > P2P_PS_NONE) { + pwdinfo->p2p_ps_state = p2p_ps_state; + + if( pwdinfo->ctwindow > 0 ) + { + if(pwrpriv->smart_ps != 0) + { + pwrpriv->smart_ps = 0; + DBG_871X("%s(): Enter CTW, change SmartPS\n", __FUNCTION__); + rtw_hal_set_hwreg(padapter, HW_VAR_H2C_FW_PWRMODE, (u8 *)(&(padapter->pwrctrlpriv.pwr_mode))); + } + } + rtw_hal_set_hwreg(padapter, HW_VAR_H2C_FW_P2P_PS_OFFLOAD, (u8 *)(&p2p_ps_state)); + } + break; + case P2P_PS_SCAN: + case P2P_PS_SCAN_DONE: + case P2P_PS_ALLSTASLEEP: + if (pwdinfo->p2p_ps_mode > P2P_PS_NONE) { + pwdinfo->p2p_ps_state = p2p_ps_state; + rtw_hal_set_hwreg(padapter, HW_VAR_H2C_FW_P2P_PS_OFFLOAD, (u8 *)(&p2p_ps_state)); + } + break; + default: + break; + } + +_func_exit_; +} + +u8 p2p_ps_wk_cmd(_adapter*padapter, u8 p2p_ps_state, u8 enqueue) +{ + struct cmd_obj *ph2c; + struct drvextra_cmd_parm *pdrvextra_cmd_parm; + struct wifidirect_info *pwdinfo= &(padapter->wdinfo); + struct cmd_priv *pcmdpriv = &padapter->cmdpriv; + u8 res = _SUCCESS; + +_func_enter_; + + if ( rtw_p2p_chk_state(pwdinfo, P2P_STATE_NONE) +#ifdef CONFIG_CONCURRENT_MODE + || (padapter->iface_type != IFACE_PORT0) +#endif + ) + { + return res; + } + + if(enqueue) + { + ph2c = (struct cmd_obj*)rtw_zmalloc(sizeof(struct cmd_obj)); + if(ph2c==NULL){ + res= _FAIL; + goto exit; + } + + pdrvextra_cmd_parm = (struct drvextra_cmd_parm*)rtw_zmalloc(sizeof(struct drvextra_cmd_parm)); + if(pdrvextra_cmd_parm==NULL){ + rtw_mfree((unsigned char *)ph2c, sizeof(struct cmd_obj)); + res= _FAIL; + goto exit; + } + + pdrvextra_cmd_parm->ec_id = P2P_PS_WK_CID; + pdrvextra_cmd_parm->type_size = p2p_ps_state; + pdrvextra_cmd_parm->pbuf = NULL; + + init_h2fwcmd_w_parm_no_rsp(ph2c, pdrvextra_cmd_parm, GEN_CMD_CODE(_Set_Drv_Extra)); + + res = rtw_enqueue_cmd(pcmdpriv, ph2c); + } + else + { + p2p_ps_wk_hdl(padapter, p2p_ps_state); + } + +exit: + +_func_exit_; + + return res; + +} +#endif // CONFIG_P2P_PS + +static void reset_ch_sitesurvey_timer_process (void *FunctionContext) +{ + _adapter *adapter = (_adapter *)FunctionContext; + struct wifidirect_info *pwdinfo = &adapter->wdinfo; + + if(rtw_p2p_chk_state(pwdinfo, P2P_STATE_NONE)) + return; + + DBG_871X( "[%s] In\n", __FUNCTION__ ); + // Reset the operation channel information + pwdinfo->rx_invitereq_info.operation_ch[0] = 0; +#ifdef P2P_OP_CHECK_SOCIAL_CH + pwdinfo->rx_invitereq_info.operation_ch[1] = 0; + pwdinfo->rx_invitereq_info.operation_ch[2] = 0; + pwdinfo->rx_invitereq_info.operation_ch[3] = 0; +#endif //P2P_OP_CHECK_SOCIAL_CH + pwdinfo->rx_invitereq_info.scan_op_ch_only = 0; +} + +static void reset_ch_sitesurvey_timer_process2 (void *FunctionContext) +{ + _adapter *adapter = (_adapter *)FunctionContext; + struct wifidirect_info *pwdinfo = &adapter->wdinfo; + + if(rtw_p2p_chk_state(pwdinfo, P2P_STATE_NONE)) + return; + + DBG_871X( "[%s] In\n", __FUNCTION__ ); + // Reset the operation channel information + pwdinfo->p2p_info.operation_ch[0] = 0; +#ifdef P2P_OP_CHECK_SOCIAL_CH + pwdinfo->p2p_info.operation_ch[1] = 0; + pwdinfo->p2p_info.operation_ch[2] = 0; + pwdinfo->p2p_info.operation_ch[3] = 0; +#endif //P2P_OP_CHECK_SOCIAL_CH + pwdinfo->p2p_info.scan_op_ch_only = 0; +} + +static void restore_p2p_state_timer_process (void *FunctionContext) +{ + _adapter *adapter = (_adapter *)FunctionContext; + struct wifidirect_info *pwdinfo = &adapter->wdinfo; + + if(rtw_p2p_chk_state(pwdinfo, P2P_STATE_NONE)) + return; + + p2p_protocol_wk_cmd( adapter, P2P_RESTORE_STATE_WK ); +} + +static void pre_tx_scan_timer_process (void *FunctionContext) +{ + _adapter *adapter = (_adapter *) FunctionContext; + struct wifidirect_info *pwdinfo = &adapter->wdinfo; + _irqL irqL; + struct mlme_priv *pmlmepriv = &adapter->mlmepriv; + u8 _status = 0; + + if(rtw_p2p_chk_state(pwdinfo, P2P_STATE_NONE)) + return; + + _enter_critical_bh(&pmlmepriv->lock, &irqL); + + // Commented by Albert 20110805 + // Todo: Use the issuing probe request directly instead of using the rtw_sitesurvey_cmd!! + + if(rtw_p2p_chk_state(pwdinfo, P2P_STATE_TX_PROVISION_DIS_REQ)) + { + if ( _TRUE == pwdinfo->tx_prov_disc_info.benable ) // the provision discovery request frame is trigger to send or not + { + p2p_protocol_wk_cmd( adapter, P2P_PRE_TX_PROVDISC_PROCESS_WK ); + //issue_probereq_p2p(adapter, NULL); + //_set_timer( &pwdinfo->pre_tx_scan_timer, P2P_TX_PRESCAN_TIMEOUT ); + } + } + else if (rtw_p2p_chk_state(pwdinfo, P2P_STATE_GONEGO_ING)) + { + if ( _TRUE == pwdinfo->nego_req_info.benable ) + { + p2p_protocol_wk_cmd( adapter, P2P_PRE_TX_NEGOREQ_PROCESS_WK ); + //issue_probereq_p2p(adapter, NULL); + //_set_timer( &pwdinfo->pre_tx_scan_timer, P2P_TX_PRESCAN_TIMEOUT ); + } + } + else if ( rtw_p2p_chk_state(pwdinfo, P2P_STATE_TX_INVITE_REQ ) ) + { + if ( _TRUE == pwdinfo->invitereq_info.benable ) + { + p2p_protocol_wk_cmd( adapter, P2P_PRE_TX_INVITEREQ_PROCESS_WK ); + } + } + else + { + DBG_8192C( "[%s] p2p_state is %d, ignore!!\n", __FUNCTION__, rtw_p2p_state(pwdinfo) ); + } + + _exit_critical_bh(&pmlmepriv->lock, &irqL); +} + +static void find_phase_timer_process (void *FunctionContext) +{ + _adapter *adapter = (_adapter *)FunctionContext; + struct wifidirect_info *pwdinfo = &adapter->wdinfo; + + if(rtw_p2p_chk_state(pwdinfo, P2P_STATE_NONE)) + return; + + adapter->wdinfo.find_phase_state_exchange_cnt++; + + p2p_protocol_wk_cmd( adapter, P2P_FIND_PHASE_WK ); +} + +#ifdef CONFIG_CONCURRENT_MODE +void ap_p2p_switch_timer_process (void *FunctionContext) +{ + _adapter *adapter = (_adapter *)FunctionContext; + struct wifidirect_info *pwdinfo = &adapter->wdinfo; +#ifdef CONFIG_IOCTL_CFG80211 + struct rtw_wdev_priv *pwdev_priv = wdev_to_priv(adapter->rtw_wdev); +#endif + + if(rtw_p2p_chk_state(pwdinfo, P2P_STATE_NONE)) + return; + +#ifdef CONFIG_IOCTL_CFG80211 + ATOMIC_SET(&pwdev_priv->switch_ch_to, 1); +#endif + + p2p_protocol_wk_cmd( adapter, P2P_AP_P2P_CH_SWITCH_PROCESS_WK ); +} +#endif + +void reset_global_wifidirect_info( _adapter* padapter ) +{ + struct wifidirect_info *pwdinfo; + + pwdinfo = &padapter->wdinfo; + pwdinfo->persistent_supported = 0; + pwdinfo->session_available = _TRUE; + pwdinfo->wfd_tdls_enable = 0; + pwdinfo->wfd_tdls_weaksec = 0; +} + +#ifdef CONFIG_WFD +int rtw_init_wifi_display_info(_adapter* padapter) +{ + int res = _SUCCESS; + struct wifi_display_info *pwfd_info = &padapter->wfd_info; + + // Used in P2P and TDLS + pwfd_info->rtsp_ctrlport = 554; + pwfd_info->peer_rtsp_ctrlport = 0; // Reset to 0 + pwfd_info->wfd_enable = _FALSE; + pwfd_info->wfd_device_type = WFD_DEVINFO_PSINK; + pwfd_info->scan_result_type = SCAN_RESULT_P2P_ONLY; + + // Used in P2P + pwfd_info->peer_session_avail = _TRUE; + pwfd_info->wfd_pc = _FALSE; + + // Used in TDLS + _rtw_memset( pwfd_info->ip_address, 0x00, 4 ); + _rtw_memset( pwfd_info->peer_ip_address, 0x00, 4 ); + return res; + +} +#endif //CONFIG_WFD + +void rtw_init_wifidirect_timers(_adapter* padapter) +{ + struct wifidirect_info *pwdinfo = &padapter->wdinfo; + + _init_timer( &pwdinfo->find_phase_timer, padapter->pnetdev, find_phase_timer_process, padapter ); + _init_timer( &pwdinfo->restore_p2p_state_timer, padapter->pnetdev, restore_p2p_state_timer_process, padapter ); + _init_timer( &pwdinfo->pre_tx_scan_timer, padapter->pnetdev, pre_tx_scan_timer_process, padapter ); + _init_timer( &pwdinfo->reset_ch_sitesurvey, padapter->pnetdev, reset_ch_sitesurvey_timer_process, padapter ); + _init_timer( &pwdinfo->reset_ch_sitesurvey2, padapter->pnetdev, reset_ch_sitesurvey_timer_process2, padapter ); +#ifdef CONFIG_CONCURRENT_MODE + _init_timer( &pwdinfo->ap_p2p_switch_timer, padapter->pnetdev, ap_p2p_switch_timer_process, padapter ); +#endif +} + +void rtw_init_wifidirect_addrs(_adapter* padapter, u8 *dev_addr, u8 *iface_addr) +{ +#ifdef CONFIG_P2P + struct wifidirect_info *pwdinfo = &padapter->wdinfo; + + /*init device&interface address */ + if (dev_addr) { + _rtw_memcpy(pwdinfo->device_addr, dev_addr, ETH_ALEN); + } + if (iface_addr) { + _rtw_memcpy(pwdinfo->interface_addr, iface_addr, ETH_ALEN); + } +#endif +} + +void init_wifidirect_info( _adapter* padapter, enum P2P_ROLE role) +{ + struct wifidirect_info *pwdinfo; +#ifdef CONFIG_WFD + struct wifi_display_info *pwfd_info = &padapter->wfd_info; +#endif +#ifdef CONFIG_CONCURRENT_MODE + _adapter *pbuddy_adapter = padapter->pbuddy_adapter; + struct wifidirect_info *pbuddy_wdinfo; + struct mlme_priv *pbuddy_mlmepriv; + struct mlme_ext_priv *pbuddy_mlmeext; +#endif + + pwdinfo = &padapter->wdinfo; + + pwdinfo->padapter = padapter; + + // 1, 6, 11 are the social channel defined in the WiFi Direct specification. + pwdinfo->social_chan[0] = 1; + pwdinfo->social_chan[1] = 6; + pwdinfo->social_chan[2] = 11; + pwdinfo->social_chan[3] = 0; // channel 0 for scanning ending in site survey function. + +#ifdef CONFIG_CONCURRENT_MODE + if (pbuddy_adapter) { + pbuddy_wdinfo = &pbuddy_adapter->wdinfo; + pbuddy_mlmepriv = &pbuddy_adapter->mlmepriv; + pbuddy_mlmeext = &pbuddy_adapter->mlmeextpriv; + } + + if ( ( check_buddy_fwstate(padapter, _FW_LINKED ) == _TRUE ) && + ( ( pbuddy_mlmeext->cur_channel == 1) || ( pbuddy_mlmeext->cur_channel == 6 ) || ( pbuddy_mlmeext->cur_channel == 11 ) ) + ) + { + // Use the AP's channel as the listen channel + // This will avoid the channel switch between AP's channel and listen channel. + pwdinfo->listen_channel = pbuddy_mlmeext->cur_channel; + } + else +#endif //CONFIG_CONCURRENT_MODE + { + // Use the channel 11 as the listen channel + pwdinfo->listen_channel = 11; + } + + if (role == P2P_ROLE_DEVICE) + { + rtw_p2p_set_role(pwdinfo, P2P_ROLE_DEVICE); + #ifdef CONFIG_CONCURRENT_MODE + if ( check_buddy_fwstate(padapter, _FW_LINKED ) == _TRUE ) + { + rtw_p2p_set_state(pwdinfo, P2P_STATE_IDLE); + } + else + #endif + { + rtw_p2p_set_state(pwdinfo, P2P_STATE_LISTEN); + } + pwdinfo->intent = 1; + rtw_p2p_set_pre_state(pwdinfo, P2P_STATE_LISTEN); + } + else if (role == P2P_ROLE_CLIENT) + { + rtw_p2p_set_role(pwdinfo, P2P_ROLE_CLIENT); + rtw_p2p_set_state(pwdinfo, P2P_STATE_GONEGO_OK); + pwdinfo->intent = 1; + rtw_p2p_set_pre_state(pwdinfo, P2P_STATE_GONEGO_OK); + } + else if (role == P2P_ROLE_GO) + { + rtw_p2p_set_role(pwdinfo, P2P_ROLE_GO); + rtw_p2p_set_state(pwdinfo, P2P_STATE_GONEGO_OK); + pwdinfo->intent = 15; + rtw_p2p_set_pre_state(pwdinfo, P2P_STATE_GONEGO_OK); + } + +// Use the OFDM rate in the P2P probe response frame. ( 6(B), 9(B), 12, 18, 24, 36, 48, 54 ) + pwdinfo->support_rate[0] = 0x8c; // 6(B) + pwdinfo->support_rate[1] = 0x92; // 9(B) + pwdinfo->support_rate[2] = 0x18; // 12 + pwdinfo->support_rate[3] = 0x24; // 18 + pwdinfo->support_rate[4] = 0x30; // 24 + pwdinfo->support_rate[5] = 0x48; // 36 + pwdinfo->support_rate[6] = 0x60; // 48 + pwdinfo->support_rate[7] = 0x6c; // 54 + + _rtw_memcpy( ( void* ) pwdinfo->p2p_wildcard_ssid, "DIRECT-", 7 ); + + _rtw_memset( pwdinfo->device_name, 0x00, WPS_MAX_DEVICE_NAME_LEN ); + pwdinfo->device_name_len = 0; + + _rtw_memset( &pwdinfo->invitereq_info, 0x00, sizeof( struct tx_invite_req_info ) ); + pwdinfo->invitereq_info.token = 3; // Token used for P2P invitation request frame. + + _rtw_memset( &pwdinfo->inviteresp_info, 0x00, sizeof( struct tx_invite_resp_info ) ); + pwdinfo->inviteresp_info.token = 0; + + pwdinfo->profileindex = 0; + _rtw_memset( &pwdinfo->profileinfo[ 0 ], 0x00, sizeof( struct profile_info ) * P2P_MAX_PERSISTENT_GROUP_NUM ); + + rtw_p2p_findphase_ex_set(pwdinfo, P2P_FINDPHASE_EX_NONE); + + pwdinfo->listen_dwell = ( u8 ) (( rtw_get_current_time() % 3 ) + 1); + //DBG_8192C( "[%s] listen_dwell time is %d00ms\n", __FUNCTION__, pwdinfo->listen_dwell ); + + _rtw_memset( &pwdinfo->tx_prov_disc_info, 0x00, sizeof( struct tx_provdisc_req_info ) ); + pwdinfo->tx_prov_disc_info.wps_config_method_request = WPS_CM_NONE; + + _rtw_memset( &pwdinfo->nego_req_info, 0x00, sizeof( struct tx_nego_req_info ) ); + + pwdinfo->device_password_id_for_nego = WPS_DPID_PBC; + pwdinfo->negotiation_dialog_token = 1; + + _rtw_memset( pwdinfo->nego_ssid, 0x00, WLAN_SSID_MAXLEN ); + pwdinfo->nego_ssidlen = 0; + + pwdinfo->ui_got_wps_info = P2P_NO_WPSINFO; +#ifdef CONFIG_WFD + pwdinfo->supported_wps_cm = WPS_CONFIG_METHOD_DISPLAY | WPS_CONFIG_METHOD_PBC; + pwdinfo->wfd_info = pwfd_info; +#else + pwdinfo->supported_wps_cm = WPS_CONFIG_METHOD_DISPLAY | WPS_CONFIG_METHOD_PBC | WPS_CONFIG_METHOD_KEYPAD; +#endif //CONFIG_WFD + pwdinfo->channel_list_attr_len = 0; + _rtw_memset( pwdinfo->channel_list_attr, 0x00, 100 ); + + _rtw_memset( pwdinfo->rx_prov_disc_info.strconfig_method_desc_of_prov_disc_req, 0x00, 4 ); + _rtw_memset( pwdinfo->rx_prov_disc_info.strconfig_method_desc_of_prov_disc_req, '0', 3 ); + _rtw_memset( &pwdinfo->groupid_info, 0x00, sizeof( struct group_id_info ) ); +#ifdef CONFIG_CONCURRENT_MODE +#ifdef CONFIG_IOCTL_CFG80211 + pwdinfo->ext_listen_interval = 1000; //The interval to be available with legacy AP during p2p0-find/scan + pwdinfo->ext_listen_period = 3000; //The time period to be available for P2P during nego +#else //!CONFIG_IOCTL_CFG80211 + //pwdinfo->ext_listen_interval = 3000; + //pwdinfo->ext_listen_period = 400; + pwdinfo->ext_listen_interval = 1000; + pwdinfo->ext_listen_period = 1000; +#endif //!CONFIG_IOCTL_CFG80211 +#endif + +// Commented by Kurt 20130319 +// For WiDi purpose: Use CFG80211 interface but controled WFD/RDS frame by driver itself. +#ifdef CONFIG_IOCTL_CFG80211 + pwdinfo->driver_interface = DRIVER_CFG80211; +#else + pwdinfo->driver_interface = DRIVER_WEXT; +#endif //CONFIG_IOCTL_CFG80211 + + pwdinfo->wfd_tdls_enable = 0; + _rtw_memset( pwdinfo->p2p_peer_interface_addr, 0x00, ETH_ALEN ); + _rtw_memset( pwdinfo->p2p_peer_device_addr, 0x00, ETH_ALEN ); + + pwdinfo->rx_invitereq_info.operation_ch[0] = 0; + pwdinfo->rx_invitereq_info.operation_ch[1] = 0; // Used to indicate the scan end in site survey function +#ifdef P2P_OP_CHECK_SOCIAL_CH + pwdinfo->rx_invitereq_info.operation_ch[2] = 0; + pwdinfo->rx_invitereq_info.operation_ch[3] = 0; + pwdinfo->rx_invitereq_info.operation_ch[4] = 0; +#endif //P2P_OP_CHECK_SOCIAL_CH + pwdinfo->rx_invitereq_info.scan_op_ch_only = 0; + pwdinfo->p2p_info.operation_ch[0] = 0; + pwdinfo->p2p_info.operation_ch[1] = 0; // Used to indicate the scan end in site survey function +#ifdef P2P_OP_CHECK_SOCIAL_CH + pwdinfo->p2p_info.operation_ch[2] = 0; + pwdinfo->p2p_info.operation_ch[3] = 0; + pwdinfo->p2p_info.operation_ch[4] = 0; +#endif //P2P_OP_CHECK_SOCIAL_CH + pwdinfo->p2p_info.scan_op_ch_only = 0; +} + +#ifdef CONFIG_DBG_P2P + +/** + * rtw_p2p_role_txt - Get the p2p role name as a text string + * @role: P2P role + * Returns: The state name as a printable text string + */ +const char * rtw_p2p_role_txt(enum P2P_ROLE role) +{ + switch (role) { + case P2P_ROLE_DISABLE: + return "P2P_ROLE_DISABLE"; + case P2P_ROLE_DEVICE: + return "P2P_ROLE_DEVICE"; + case P2P_ROLE_CLIENT: + return "P2P_ROLE_CLIENT"; + case P2P_ROLE_GO: + return "P2P_ROLE_GO"; + default: + return "UNKNOWN"; + } +} + +/** + * rtw_p2p_state_txt - Get the p2p state name as a text string + * @state: P2P state + * Returns: The state name as a printable text string + */ +const char * rtw_p2p_state_txt(enum P2P_STATE state) +{ + switch (state) { + case P2P_STATE_NONE: + return "P2P_STATE_NONE"; + case P2P_STATE_IDLE: + return "P2P_STATE_IDLE"; + case P2P_STATE_LISTEN: + return "P2P_STATE_LISTEN"; + case P2P_STATE_SCAN: + return "P2P_STATE_SCAN"; + case P2P_STATE_FIND_PHASE_LISTEN: + return "P2P_STATE_FIND_PHASE_LISTEN"; + case P2P_STATE_FIND_PHASE_SEARCH: + return "P2P_STATE_FIND_PHASE_SEARCH"; + case P2P_STATE_TX_PROVISION_DIS_REQ: + return "P2P_STATE_TX_PROVISION_DIS_REQ"; + case P2P_STATE_RX_PROVISION_DIS_RSP: + return "P2P_STATE_RX_PROVISION_DIS_RSP"; + case P2P_STATE_RX_PROVISION_DIS_REQ: + return "P2P_STATE_RX_PROVISION_DIS_REQ"; + case P2P_STATE_GONEGO_ING: + return "P2P_STATE_GONEGO_ING"; + case P2P_STATE_GONEGO_OK: + return "P2P_STATE_GONEGO_OK"; + case P2P_STATE_GONEGO_FAIL: + return "P2P_STATE_GONEGO_FAIL"; + case P2P_STATE_RECV_INVITE_REQ_MATCH: + return "P2P_STATE_RECV_INVITE_REQ_MATCH"; + case P2P_STATE_PROVISIONING_ING: + return "P2P_STATE_PROVISIONING_ING"; + case P2P_STATE_PROVISIONING_DONE: + return "P2P_STATE_PROVISIONING_DONE"; + case P2P_STATE_TX_INVITE_REQ: + return "P2P_STATE_TX_INVITE_REQ"; + case P2P_STATE_RX_INVITE_RESP_OK: + return "P2P_STATE_RX_INVITE_RESP_OK"; + case P2P_STATE_RECV_INVITE_REQ_DISMATCH: + return "P2P_STATE_RECV_INVITE_REQ_DISMATCH"; + case P2P_STATE_RECV_INVITE_REQ_GO: + return "P2P_STATE_RECV_INVITE_REQ_GO"; + case P2P_STATE_RECV_INVITE_REQ_JOIN: + return "P2P_STATE_RECV_INVITE_REQ_JOIN"; + case P2P_STATE_RX_INVITE_RESP_FAIL: + return "P2P_STATE_RX_INVITE_RESP_FAIL"; + case P2P_STATE_RX_INFOR_NOREADY: + return "P2P_STATE_RX_INFOR_NOREADY"; + case P2P_STATE_TX_INFOR_NOREADY: + return "P2P_STATE_TX_INFOR_NOREADY"; + default: + return "UNKNOWN"; + } +} + +void dbg_rtw_p2p_set_state(struct wifidirect_info *wdinfo, enum P2P_STATE state, const char *caller, int line) +{ + if(!_rtw_p2p_chk_state(wdinfo, state)) { + enum P2P_STATE old_state = _rtw_p2p_state(wdinfo); + _rtw_p2p_set_state(wdinfo, state); + DBG_871X("[CONFIG_DBG_P2P]%s:%d set_state from %s to %s\n", caller, line + , rtw_p2p_state_txt(old_state), rtw_p2p_state_txt(_rtw_p2p_state(wdinfo)) + ); + } else { + DBG_871X("[CONFIG_DBG_P2P]%s:%d set_state to same state %s\n", caller, line + , rtw_p2p_state_txt(_rtw_p2p_state(wdinfo)) + ); + } +} +void dbg_rtw_p2p_set_pre_state(struct wifidirect_info *wdinfo, enum P2P_STATE state, const char *caller, int line) +{ + if(_rtw_p2p_pre_state(wdinfo) != state) { + enum P2P_STATE old_state = _rtw_p2p_pre_state(wdinfo); + _rtw_p2p_set_pre_state(wdinfo, state); + DBG_871X("[CONFIG_DBG_P2P]%s:%d set_pre_state from %s to %s\n", caller, line + , rtw_p2p_state_txt(old_state), rtw_p2p_state_txt(_rtw_p2p_pre_state(wdinfo)) + ); + } else { + DBG_871X("[CONFIG_DBG_P2P]%s:%d set_pre_state to same state %s\n", caller, line + , rtw_p2p_state_txt(_rtw_p2p_pre_state(wdinfo)) + ); + } +} +#if 0 +void dbg_rtw_p2p_restore_state(struct wifidirect_info *wdinfo, const char *caller, int line) +{ + if(wdinfo->pre_p2p_state != -1) { + DBG_871X("[CONFIG_DBG_P2P]%s:%d restore from %s to %s\n", caller, line + , p2p_state_str[wdinfo->p2p_state], p2p_state_str[wdinfo->pre_p2p_state] + ); + _rtw_p2p_restore_state(wdinfo); + } else { + DBG_871X("[CONFIG_DBG_P2P]%s:%d restore no pre state, cur state %s\n", caller, line + , p2p_state_str[wdinfo->p2p_state] + ); + } +} +#endif +void dbg_rtw_p2p_set_role(struct wifidirect_info *wdinfo, enum P2P_ROLE role, const char *caller, int line) +{ + if(wdinfo->role != role) { + enum P2P_ROLE old_role = wdinfo->role; + _rtw_p2p_set_role(wdinfo, role); + DBG_871X("[CONFIG_DBG_P2P]%s:%d set_role from %s to %s\n", caller, line + , rtw_p2p_role_txt(old_role), rtw_p2p_role_txt(wdinfo->role) + ); + } else { + DBG_871X("[CONFIG_DBG_P2P]%s:%d set_role to same role %s\n", caller, line + , rtw_p2p_role_txt(wdinfo->role) + ); + } +} +#endif //CONFIG_DBG_P2P + + +int rtw_p2p_enable(_adapter *padapter, enum P2P_ROLE role) +{ + int ret = _SUCCESS; + struct wifidirect_info *pwdinfo= &(padapter->wdinfo); + struct pwrctrl_priv *pwrpriv = &padapter->pwrctrlpriv; + + if (role == P2P_ROLE_DEVICE || role == P2P_ROLE_CLIENT|| role == P2P_ROLE_GO) + { + u8 channel, ch_offset; + u16 bwmode; + +#ifdef CONFIG_CONCURRENT_MODE + _adapter *pbuddy_adapter = padapter->pbuddy_adapter; + struct wifidirect_info *pbuddy_wdinfo = &pbuddy_adapter->wdinfo; + // Commented by Albert 2011/12/30 + // The driver just supports 1 P2P group operation. + // So, this function will do nothing if the buddy adapter had enabled the P2P function. + if(!rtw_p2p_chk_state(pbuddy_wdinfo, P2P_STATE_NONE)) + { + // The buddy adapter had enabled the P2P function. + return ret; + } +#endif //CONFIG_CONCURRENT_MODE + + //leave IPS/Autosuspend + if (_FAIL == rtw_pwr_wakeup(padapter)) { + ret = _FAIL; + goto exit; + } + + + // Added by Albert 2011/03/22 + // In the P2P mode, the driver should not support the b mode. + // So, the Tx packet shouldn't use the CCK rate + update_tx_basic_rate(padapter, WIRELESS_11AGN); + + //Enable P2P function + init_wifidirect_info(padapter, role); + } + else if (role == P2P_ROLE_DISABLE) + { +#ifdef CONFIG_INTEL_WIDI + if( padapter->mlmepriv.p2p_reject_disable == _TRUE ) + return ret; +#endif //CONFIG_INTEL_WIDI + + if (_FAIL == rtw_pwr_wakeup(padapter)) { + ret = _FAIL; + goto exit; + } + + //Disable P2P function + if(!rtw_p2p_chk_state(pwdinfo, P2P_STATE_NONE)) + { + _cancel_timer_ex( &pwdinfo->find_phase_timer ); + _cancel_timer_ex( &pwdinfo->restore_p2p_state_timer ); + _cancel_timer_ex( &pwdinfo->pre_tx_scan_timer); + _cancel_timer_ex( &pwdinfo->reset_ch_sitesurvey); + _cancel_timer_ex( &pwdinfo->reset_ch_sitesurvey2); + reset_ch_sitesurvey_timer_process( padapter ); + reset_ch_sitesurvey_timer_process2( padapter ); + #ifdef CONFIG_CONCURRENT_MODE + _cancel_timer_ex( &pwdinfo->ap_p2p_switch_timer); + #endif + rtw_p2p_set_state(pwdinfo, P2P_STATE_NONE); + rtw_p2p_set_role(pwdinfo, P2P_ROLE_DISABLE); + _rtw_memset(&pwdinfo->rx_prov_disc_info, 0x00, sizeof(struct rx_provdisc_req_info)); + } + + //Restore to initial setting. + update_tx_basic_rate(padapter, padapter->registrypriv.wireless_mode); + +#ifdef CONFIG_INTEL_WIDI + rtw_reset_widi_info(padapter); +#endif //CONFIG_INTEL_WIDI + + //For WiDi purpose. +#ifdef CONFIG_IOCTL_CFG80211 + pwdinfo->driver_interface = DRIVER_CFG80211; +#else + pwdinfo->driver_interface = DRIVER_WEXT; +#endif //CONFIG_IOCTL_CFG80211 + + } + +exit: + return ret; +} + +#endif //CONFIG_P2P --- linux-raspi2-4.2.0.orig/drivers/net/wireless/rtl8192cu/core/rtw_pwrctrl.c +++ linux-raspi2-4.2.0/drivers/net/wireless/rtl8192cu/core/rtw_pwrctrl.c @@ -0,0 +1,1538 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved. + * + * 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 + * published by the Free Software Foundation. + * + * 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 Street, Fifth Floor, Boston, MA 02110, USA + * + * + ******************************************************************************/ +#define _RTW_PWRCTRL_C_ + +#include +#include +#include +#include + + +#ifdef CONFIG_IPS +void _ips_enter(_adapter * padapter) +{ + struct pwrctrl_priv *pwrpriv = &padapter->pwrctrlpriv; + + pwrpriv->bips_processing = _TRUE; + + // syn ips_mode with request + pwrpriv->ips_mode = pwrpriv->ips_mode_req; + + pwrpriv->ips_enter_cnts++; + DBG_871X("==>ips_enter cnts:%d\n",pwrpriv->ips_enter_cnts); + + if(rf_off == pwrpriv->change_rfpwrstate) + { + if(pwrpriv->ips_mode == IPS_LEVEL_2) + pwrpriv->bkeepfwalive = _TRUE; + + rtw_ips_pwr_down(padapter); + pwrpriv->rf_pwrstate = rf_off; + } + pwrpriv->bips_processing = _FALSE; + +} + +void ips_enter(_adapter * padapter) +{ + struct pwrctrl_priv *pwrpriv = &padapter->pwrctrlpriv; + + _enter_pwrlock(&pwrpriv->lock); + _ips_enter(padapter); + _exit_pwrlock(&pwrpriv->lock); +} + +int _ips_leave(_adapter * padapter) +{ + struct pwrctrl_priv *pwrpriv = &padapter->pwrctrlpriv; + int result = _SUCCESS; + + if((pwrpriv->rf_pwrstate == rf_off) &&(!pwrpriv->bips_processing)) + { + pwrpriv->bips_processing = _TRUE; + pwrpriv->change_rfpwrstate = rf_on; + pwrpriv->ips_leave_cnts++; + DBG_871X("==>ips_leave cnts:%d\n",pwrpriv->ips_leave_cnts); + + if ((result = rtw_ips_pwr_up(padapter)) == _SUCCESS) { + pwrpriv->rf_pwrstate = rf_on; + } + + DBG_871X("==> ips_leave.....LED(0x%08x)...\n",rtw_read32(padapter,0x4c)); + pwrpriv->bips_processing = _FALSE; + + pwrpriv->bkeepfwalive = _FALSE; + } + + return result; +} + +int ips_leave(_adapter * padapter) +{ + struct pwrctrl_priv *pwrpriv = &padapter->pwrctrlpriv; + int ret; + + _enter_pwrlock(&pwrpriv->lock); + ret = _ips_leave(padapter); + _exit_pwrlock(&pwrpriv->lock); + + return ret; +} +#endif /* CONFIG_IPS */ + +#ifdef CONFIG_AUTOSUSPEND +extern void autosuspend_enter(_adapter* padapter); +extern int autoresume_enter(_adapter* padapter); +#endif + +#ifdef SUPPORT_HW_RFOFF_DETECTED +int rtw_hw_suspend(_adapter *padapter ); +int rtw_hw_resume(_adapter *padapter); +#endif + +bool rtw_pwr_unassociated_idle(_adapter *adapter) +{ + _adapter *buddy = adapter->pbuddy_adapter; + struct mlme_priv *pmlmepriv = &(adapter->mlmepriv); +#ifdef CONFIG_P2P + struct wifidirect_info *pwdinfo = &(adapter->wdinfo); +#ifdef CONFIG_IOCTL_CFG80211 + struct cfg80211_wifidirect_info *pcfg80211_wdinfo = &adapter->cfg80211_wdinfo; +#endif +#endif + + bool ret = _FALSE; + + if (adapter->pwrctrlpriv.ips_deny_time >= rtw_get_current_time()) { + //DBG_871X("%s ips_deny_time\n", __func__); + goto exit; + } + + if (check_fwstate(pmlmepriv, WIFI_ASOC_STATE|WIFI_SITE_MONITOR) + || check_fwstate(pmlmepriv, WIFI_UNDER_LINKING|WIFI_UNDER_WPS) + || check_fwstate(pmlmepriv, WIFI_AP_STATE) + || check_fwstate(pmlmepriv, WIFI_ADHOC_MASTER_STATE|WIFI_ADHOC_STATE) + #if defined(CONFIG_P2P) && defined(CONFIG_IOCTL_CFG80211) && defined(CONFIG_P2P_IPS) + || pcfg80211_wdinfo->is_ro_ch + #elif defined(CONFIG_P2P) + || !rtw_p2p_chk_state(pwdinfo, P2P_STATE_NONE) + #endif + ) { + goto exit; + } + + /* consider buddy, if exist */ + if (buddy) { + struct mlme_priv *b_pmlmepriv = &(buddy->mlmepriv); + #ifdef CONFIG_P2P + struct wifidirect_info *b_pwdinfo = &(buddy->wdinfo); + #ifdef CONFIG_IOCTL_CFG80211 + struct cfg80211_wifidirect_info *b_pcfg80211_wdinfo = &buddy->cfg80211_wdinfo; + #endif + #endif + + if (check_fwstate(b_pmlmepriv, WIFI_ASOC_STATE|WIFI_SITE_MONITOR) + || check_fwstate(b_pmlmepriv, WIFI_UNDER_LINKING|WIFI_UNDER_WPS) + || check_fwstate(b_pmlmepriv, WIFI_AP_STATE) + || check_fwstate(b_pmlmepriv, WIFI_ADHOC_MASTER_STATE|WIFI_ADHOC_STATE) + #if defined(CONFIG_P2P) && defined(CONFIG_IOCTL_CFG80211) && defined(CONFIG_P2P_IPS) + || b_pcfg80211_wdinfo->is_ro_ch + #elif defined(CONFIG_P2P) + || !rtw_p2p_chk_state(b_pwdinfo, P2P_STATE_NONE) + #endif + ) { + goto exit; + } + } + +#ifdef CONFIG_INTEL_PROXIM + if(adapter->proximity.proxim_on==_TRUE){ + return; + } +#endif + + ret = _TRUE; + +exit: + return ret; +} + +#if defined (PLATFORM_LINUX)||defined (PLATFORM_FREEBSD) +void rtw_ps_processor(_adapter*padapter) +{ +#ifdef CONFIG_P2P + struct wifidirect_info *pwdinfo = &( padapter->wdinfo ); +#endif //CONFIG_P2P + struct pwrctrl_priv *pwrpriv = &padapter->pwrctrlpriv; + struct mlme_priv *pmlmepriv = &(padapter->mlmepriv); +#ifdef SUPPORT_HW_RFOFF_DETECTED + rt_rf_power_state rfpwrstate; +#endif //SUPPORT_HW_RFOFF_DETECTED + + pwrpriv->ps_processing = _TRUE; + +#ifdef SUPPORT_HW_RFOFF_DETECTED + if(pwrpriv->bips_processing == _TRUE) + goto exit; + + //DBG_871X("==> fw report state(0x%x)\n",rtw_read8(padapter,0x1ca)); + if(padapter->pwrctrlpriv.bHWPwrPindetect) + { + #ifdef CONFIG_AUTOSUSPEND + if(padapter->registrypriv.usbss_enable) + { + if(pwrpriv->rf_pwrstate == rf_on) + { + if(padapter->net_closed == _TRUE) + pwrpriv->ps_flag = _TRUE; + + rfpwrstate = RfOnOffDetect(padapter); + DBG_871X("@@@@- #1 %s==> rfstate:%s \n",__FUNCTION__,(rfpwrstate==rf_on)?"rf_on":"rf_off"); + if(rfpwrstate!= pwrpriv->rf_pwrstate) + { + if(rfpwrstate == rf_off) + { + pwrpriv->change_rfpwrstate = rf_off; + + pwrpriv->bkeepfwalive = _TRUE; + pwrpriv->brfoffbyhw = _TRUE; + + autosuspend_enter(padapter); + } + } + } + } + else + #endif //CONFIG_AUTOSUSPEND + { + rfpwrstate = RfOnOffDetect(padapter); + DBG_871X("@@@@- #2 %s==> rfstate:%s \n",__FUNCTION__,(rfpwrstate==rf_on)?"rf_on":"rf_off"); + + if(rfpwrstate!= pwrpriv->rf_pwrstate) + { + if(rfpwrstate == rf_off) + { + pwrpriv->change_rfpwrstate = rf_off; + pwrpriv->brfoffbyhw = _TRUE; + padapter->bCardDisableWOHSM = _TRUE; + rtw_hw_suspend(padapter ); + } + else + { + pwrpriv->change_rfpwrstate = rf_on; + rtw_hw_resume(padapter ); + } + DBG_871X("current rf_pwrstate(%s)\n",(pwrpriv->rf_pwrstate == rf_off)?"rf_off":"rf_on"); + } + } + pwrpriv->pwr_state_check_cnts ++; + } +#endif //SUPPORT_HW_RFOFF_DETECTED + + if (pwrpriv->ips_mode_req == IPS_NONE + #ifdef CONFIG_CONCURRENT_MODE + || padapter->pbuddy_adapter->pwrctrlpriv.ips_mode_req == IPS_NONE + #endif + ) + goto exit; + + if (rtw_pwr_unassociated_idle(padapter) == _FALSE) + goto exit; + + if((pwrpriv->rf_pwrstate == rf_on) && ((pwrpriv->pwr_state_check_cnts%4)==0)) + { + DBG_871X("==>%s .fw_state(%x)\n",__FUNCTION__,get_fwstate(pmlmepriv)); + pwrpriv->change_rfpwrstate = rf_off; + + #ifdef CONFIG_AUTOSUSPEND + if(padapter->registrypriv.usbss_enable) + { + if(pwrpriv->bHWPwrPindetect) + pwrpriv->bkeepfwalive = _TRUE; + + if(padapter->net_closed == _TRUE) + pwrpriv->ps_flag = _TRUE; + + padapter->bCardDisableWOHSM = _TRUE; + autosuspend_enter(padapter); + } + else if(pwrpriv->bHWPwrPindetect) + { + } + else + #endif //CONFIG_AUTOSUSPEND + { + #ifdef CONFIG_IPS + ips_enter(padapter); + #endif + } + } +exit: + rtw_set_pwr_state_check_timer(&padapter->pwrctrlpriv); + pwrpriv->ps_processing = _FALSE; + return; +} + +void pwr_state_check_handler(void *FunctionContext); +void pwr_state_check_handler(void *FunctionContext) +{ + _adapter *padapter = (_adapter *)FunctionContext; + rtw_ps_cmd(padapter); +} +#endif + + +#ifdef CONFIG_LPS +/* + * + * Parameters + * padapter + * pslv power state level, only could be PS_STATE_S0 ~ PS_STATE_S4 + * + */ +void rtw_set_rpwm(PADAPTER padapter, u8 pslv) +{ + u8 rpwm; + struct pwrctrl_priv *pwrpriv = &padapter->pwrctrlpriv; + +_func_enter_; + + pslv = PS_STATE(pslv); + + if (pwrpriv->rpwm == pslv) { + RT_TRACE(_module_rtl871x_pwrctrl_c_,_drv_err_, + ("%s: Already set rpwm[0x%02x]!\n", __FUNCTION__, pslv)); + return; + } + + if ((padapter->bDriverStopped == _TRUE) || + (padapter->bSurpriseRemoved == _TRUE)) { + RT_TRACE(_module_rtl871x_pwrctrl_c_, _drv_err_, + ("%s: bDriverStopped(%d) bSurpriseRemoved(%d)\n", + __FUNCTION__, padapter->bDriverStopped, padapter->bSurpriseRemoved)); + return; + } + + rpwm = pslv | pwrpriv->tog; +#ifdef CONFIG_LPS_LCLK + if ((pwrpriv->cpwm < PS_STATE_S2) && (pslv >= PS_STATE_S2)) + rpwm |= PS_ACK; +#endif + RT_TRACE(_module_rtl871x_pwrctrl_c_, _drv_notice_, + ("rtw_set_rpwm: rpwm=0x%02x cpwm=0x%02x\n", rpwm, pwrpriv->cpwm)); + + pwrpriv->rpwm = pslv; + + rtw_hal_set_hwreg(padapter, HW_VAR_SET_RPWM, (u8 *)(&rpwm)); + + pwrpriv->tog += 0x80; + + if (!(rpwm & PS_ACK)) pwrpriv->cpwm = pslv; + +_func_exit_; +} + +u8 PS_RDY_CHECK(_adapter * padapter); +u8 PS_RDY_CHECK(_adapter * padapter) +{ + u32 curr_time, delta_time; + struct pwrctrl_priv *pwrpriv = &padapter->pwrctrlpriv; + struct mlme_priv *pmlmepriv = &(padapter->mlmepriv); + + curr_time = rtw_get_current_time(); + + delta_time = curr_time -pwrpriv->DelayLPSLastTimeStamp; + + if(delta_time < LPS_DELAY_TIME) + { + return _FALSE; + } + + if ((check_fwstate(pmlmepriv, _FW_LINKED) == _FALSE) || + (check_fwstate(pmlmepriv, _FW_UNDER_SURVEY) == _TRUE) || + (check_fwstate(pmlmepriv, WIFI_UNDER_WPS) == _TRUE) || + (check_fwstate(pmlmepriv, WIFI_AP_STATE) == _TRUE) || + (check_fwstate(pmlmepriv, WIFI_ADHOC_MASTER_STATE) == _TRUE) || + (check_fwstate(pmlmepriv, WIFI_ADHOC_STATE) == _TRUE) ) + return _FALSE; + + if(_TRUE == pwrpriv->bInSuspend ) + return _FALSE; + + if( (padapter->securitypriv.dot11AuthAlgrthm == dot11AuthAlgrthm_8021X) && (padapter->securitypriv.binstallGrpkey == _FALSE) ) + { + DBG_871X("Group handshake still in progress !!!\n"); + return _FALSE; + } + +#ifdef CONFIG_IOCTL_CFG80211 + if (!rtw_cfg80211_pwr_mgmt(padapter)) + return _FALSE; +#endif + + return _TRUE; +} + +void rtw_set_ps_mode(PADAPTER padapter, u8 ps_mode, u8 smart_ps) +{ + struct pwrctrl_priv *pwrpriv = &padapter->pwrctrlpriv; +#ifdef CONFIG_P2P + struct wifidirect_info *pwdinfo = &( padapter->wdinfo ); +#endif //CONFIG_P2P +#ifdef CONFIG_TDLS + struct sta_priv *pstapriv = &padapter->stapriv; + _irqL irqL; + int i, j; + _list *plist, *phead; + struct sta_info *ptdls_sta; +#endif //CONFIG_TDLS + +_func_enter_; + + RT_TRACE(_module_rtl871x_pwrctrl_c_, _drv_notice_, + ("%s: PowerMode=%d Smart_PS=%d\n", + __FUNCTION__, ps_mode, smart_ps)); + + if(ps_mode > PM_Card_Disable) { + RT_TRACE(_module_rtl871x_pwrctrl_c_,_drv_err_,("ps_mode:%d error\n", ps_mode)); + return; + } + + if((pwrpriv->pwr_mode == ps_mode) && + (pwrpriv->smart_ps == smart_ps)){ + return; + } + + //if(pwrpriv->pwr_mode == PS_MODE_ACTIVE) + if(ps_mode == PS_MODE_ACTIVE) + { +#ifdef CONFIG_P2P_PS + if(pwdinfo->opp_ps == 0) +#endif // CONFIG_P2P_PS + { +#ifdef CONFIG_LPS_LCLK + _enter_pwrlock(&pwrpriv->lock); +#endif + DBG_871X("rtw_set_ps_mode(): Busy Traffic , Leave 802.11 power save..\n"); + +#ifdef CONFIG_TDLS + _enter_critical_bh(&pstapriv->sta_hash_lock, &irqL); + + for(i=0; i< NUM_STA; i++) + { + phead = &(pstapriv->sta_hash[i]); + plist = get_next(phead); + + while ((rtw_end_of_queue_search(phead, plist)) == _FALSE) + { + ptdls_sta = LIST_CONTAINOR(plist, struct sta_info, hash_list); + + if( ptdls_sta->tdls_sta_state & TDLS_LINKED_STATE ) + issue_nulldata_to_TDLS_peer_STA(padapter, ptdls_sta, 0); + plist = get_next(plist); + } + } + + _exit_critical_bh(&pstapriv->sta_hash_lock, &irqL); +#endif //CONFIG_TDLS + + pwrpriv->smart_ps = smart_ps; + pwrpriv->pwr_mode = ps_mode; + + rtw_set_rpwm(padapter, PS_STATE_S4); +#ifdef CONFIG_LPS_LCLK +{ + u32 n = 0; + while (pwrpriv->cpwm != PS_STATE_S4) { + n++; + if (n == 10000) break; + if (padapter->bSurpriseRemoved == _TRUE) break; + rtw_msleep_os(1); + } + if (n == 10000) + printk(KERN_ERR "%s: wait CPWM to S4 too long! cpwm=0x%02x\n", __func__, pwrpriv->cpwm); +} +#endif + rtw_hal_set_hwreg(padapter, HW_VAR_H2C_FW_PWRMODE, (u8 *)(&ps_mode)); + pwrpriv->bFwCurrentInPSMode = _FALSE; +#ifdef CONFIG_LPS_LCLK + _exit_pwrlock(&pwrpriv->lock); +#endif + } + } + else + { + if(PS_RDY_CHECK(padapter)) + { +#ifdef CONFIG_LPS_LCLK + _enter_pwrlock(&pwrpriv->lock); +#endif + DBG_871X("rtw_set_ps_mode(): Enter 802.11 power save mode...\n"); + +#ifdef CONFIG_TDLS + _enter_critical_bh(&pstapriv->sta_hash_lock, &irqL); + + for(i=0; i< NUM_STA; i++) + { + phead = &(pstapriv->sta_hash[i]); + plist = get_next(phead); + + while ((rtw_end_of_queue_search(phead, plist)) == _FALSE) + { + ptdls_sta = LIST_CONTAINOR(plist, struct sta_info, hash_list); + + if( ptdls_sta->tdls_sta_state & TDLS_LINKED_STATE ) + issue_nulldata_to_TDLS_peer_STA(padapter, ptdls_sta, 1); + plist = get_next(plist); + } + } + + _exit_critical_bh(&pstapriv->sta_hash_lock, &irqL); +#endif //CONFIG_TDLS + + pwrpriv->smart_ps = smart_ps; + pwrpriv->pwr_mode = ps_mode; + pwrpriv->bFwCurrentInPSMode = _TRUE; + rtw_hal_set_hwreg(padapter, HW_VAR_H2C_FW_PWRMODE, (u8 *)(&ps_mode)); +#ifdef CONFIG_P2P_PS + // Set CTWindow after LPS + if(pwdinfo->opp_ps == 1) + p2p_ps_wk_cmd(padapter, P2P_PS_ENABLE, 0); +#endif // CONFIG_P2P_PS +#ifdef CONFIG_LPS_LCLK + if (pwrpriv->alives == 0) + rtw_set_rpwm(padapter, PS_STATE_S0); +#else + rtw_set_rpwm(padapter, PS_STATE_S2); +#endif +#ifdef CONFIG_LPS_LCLK + _exit_pwrlock(&pwrpriv->lock); +#endif + } + //else + //{ + // pwrpriv->pwr_mode = PS_MODE_ACTIVE; + //} + } + +_func_exit_; +} + + +// +// Description: +// Enter the leisure power save mode. +// +void LPS_Enter(PADAPTER padapter) +{ + struct pwrctrl_priv *pwrpriv = &padapter->pwrctrlpriv; + struct mlme_priv *pmlmepriv = &(padapter->mlmepriv); + _adapter *buddy = padapter->pbuddy_adapter; + +_func_enter_; + +// DBG_871X("+LeisurePSEnter\n"); + +#ifdef CONFIG_CONCURRENT_MODE + if (padapter->iface_type != IFACE_PORT0) + return; /* Skip power saving for concurrent mode port 1*/ + + /* consider buddy, if exist */ + if (buddy) { + struct mlme_priv *b_pmlmepriv = &(buddy->mlmepriv); + #ifdef CONFIG_P2P + struct wifidirect_info *b_pwdinfo = &(buddy->wdinfo); + #ifdef CONFIG_IOCTL_CFG80211 + struct cfg80211_wifidirect_info *b_pcfg80211_wdinfo = &buddy->cfg80211_wdinfo; + #endif + #endif + + if (check_fwstate(b_pmlmepriv, WIFI_ASOC_STATE|WIFI_SITE_MONITOR) + || check_fwstate(b_pmlmepriv, WIFI_UNDER_LINKING|WIFI_UNDER_WPS) + || check_fwstate(b_pmlmepriv, WIFI_AP_STATE) + || check_fwstate(b_pmlmepriv, WIFI_ADHOC_MASTER_STATE|WIFI_ADHOC_STATE) + #if defined(CONFIG_P2P) && defined(CONFIG_IOCTL_CFG80211) && defined(CONFIG_P2P_IPS) + || b_pcfg80211_wdinfo->is_ro_ch + #elif defined(CONFIG_P2P) + || !rtw_p2p_chk_state(b_pwdinfo, P2P_STATE_NONE) + #endif + || rtw_is_scan_deny(buddy) + ) { + return; + } + } +#endif + +#ifdef CONFIG_INTEL_PROXIM + if(padapter->proximity.proxim_on==_TRUE){ + return; + } +#endif + if ( (check_fwstate(pmlmepriv, _FW_LINKED) == _FALSE) || + (check_fwstate(pmlmepriv, _FW_UNDER_SURVEY) == _TRUE) || + (check_fwstate(pmlmepriv, WIFI_AP_STATE) == _TRUE) || + (check_fwstate(pmlmepriv, WIFI_ADHOC_MASTER_STATE) == _TRUE) || + (check_fwstate(pmlmepriv, WIFI_ADHOC_STATE) == _TRUE) ) + return; + + if(_TRUE == pwrpriv->bInSuspend ) + return ; + + if (pwrpriv->bLeisurePs) + { + // Idle for a while if we connect to AP a while ago. + if(pwrpriv->LpsIdleCount >= 2) // 4 Sec + { + if(pwrpriv->pwr_mode == PS_MODE_ACTIVE) + { + rtw_set_ps_mode(padapter, pwrpriv->power_mgnt, 2); + } + } + else + pwrpriv->LpsIdleCount++; + } + +// DBG_871X("-LeisurePSEnter\n"); + +_func_exit_; +} + + +// +// Description: +// Leave the leisure power save mode. +// +void LPS_Leave(PADAPTER padapter) +{ +#define LPS_LEAVE_TIMEOUT_MS 100 + + struct pwrctrl_priv *pwrpriv = &padapter->pwrctrlpriv; + u32 start_time; + BOOLEAN bAwake = _FALSE; + +_func_enter_; + +// DBG_871X("+LeisurePSLeave\n"); + +#ifdef CONFIG_CONCURRENT_MODE + if (padapter->iface_type != IFACE_PORT0) + return; /* Skip power saving for concurrent mode port 1*/ +#endif + + if (pwrpriv->bLeisurePs) + { + if(pwrpriv->pwr_mode != PS_MODE_ACTIVE) + { + rtw_set_ps_mode(padapter, PS_MODE_ACTIVE, 0); + + if(pwrpriv->pwr_mode == PS_MODE_ACTIVE) + { + start_time = rtw_get_current_time(); + while(1) + { + rtw_hal_get_hwreg(padapter, HW_VAR_FWLPS_RF_ON, (u8 *)(&bAwake)); + + if(bAwake || padapter->bSurpriseRemoved) + break; + + if(rtw_get_passing_time_ms(start_time)>LPS_LEAVE_TIMEOUT_MS) + { + DBG_871X("Wait for FW LPS leave more than %u ms!!!\n", LPS_LEAVE_TIMEOUT_MS); + break; + } + rtw_usleep_os(100); + } + } + } + } + + +// DBG_871X("-LeisurePSLeave\n"); + +_func_exit_; +} + +#endif + +// +// Description: Leave all power save mode: LPS, FwLPS, IPS if needed. +// Move code to function by tynli. 2010.03.26. +// +void LeaveAllPowerSaveMode(IN PADAPTER Adapter) +{ + struct mlme_priv *pmlmepriv = &(Adapter->mlmepriv); + +_func_enter_; + + //DBG_871X("%s.....\n",__FUNCTION__); + if (check_fwstate(pmlmepriv, _FW_LINKED) == _TRUE) + { //connect +#ifdef CONFIG_P2P_PS + p2p_ps_wk_cmd(Adapter, P2P_PS_DISABLE, 0); +#endif // CONFIG_P2P_PS +#ifdef CONFIG_LPS + //DBG_871X("==> leave LPS.......\n"); + LPS_Leave(Adapter); +#endif + } + else + { + if(Adapter->pwrctrlpriv.rf_pwrstate== rf_off) + { + #ifdef CONFIG_AUTOSUSPEND + if(Adapter->registrypriv.usbss_enable) + { + #if (LINUX_VERSION_CODE>=KERNEL_VERSION(2,6,35)) + usb_disable_autosuspend(adapter_to_dvobj(Adapter)->pusbdev); + #elif (LINUX_VERSION_CODE>=KERNEL_VERSION(2,6,22) && LINUX_VERSION_CODE<=KERNEL_VERSION(2,6,34)) + adapter_to_dvobj(Adapter)->pusbdev->autosuspend_disabled = Adapter->bDisableAutosuspend;//autosuspend disabled by the user + #endif + } + else + #endif + { + /* + #ifdef CONFIG_IPS + if(_FALSE == ips_leave(Adapter)) + { + DBG_871X("======> ips_leave fail.............\n"); + } + #endif + */ + } + } + } + +_func_exit_; +} + +#ifdef CONFIG_LPS_LCLK +/* + * Caller:ISR handler... + * + * This will be called when CPWM interrupt is up. + * + * using to update cpwn of drv; and drv willl make a decision to up or down pwr level + */ +void cpwm_int_hdl( + PADAPTER padapter, + struct reportpwrstate_parm *preportpwrstate) +{ + struct pwrctrl_priv *pwrpriv; + + +_func_enter_; + + pwrpriv = &padapter->pwrctrlpriv; +#if 0 + if (pwrpriv->cpwm_tog == (preportpwrstate->state & PS_TOGGLE)) { + RT_TRACE(_module_rtl871x_pwrctrl_c_, _drv_err_, + ("cpwm_int_hdl: tog(old)=0x%02x cpwm(new)=0x%02x toggle bit didn't change!?\n", + pwrpriv->cpwm_tog, preportpwrstate->state)); + goto exit; + } +#endif +// _enter_pwrlock(&pwrpriv->lock); + + pwrpriv->cpwm = PS_STATE(preportpwrstate->state); + pwrpriv->cpwm_tog = preportpwrstate->state & PS_TOGGLE; + + if (pwrpriv->cpwm >= PS_STATE_S2) { + if (pwrpriv->alives & CMD_ALIVE) + _rtw_up_sema(&padapter->cmdpriv.cmd_queue_sema); + + if (pwrpriv->alives & XMIT_ALIVE) + _rtw_up_sema(&padapter->xmitpriv.xmit_sema); + } + +// _exit_pwrlock(&pwrpriv->lock); + +exit: + RT_TRACE(_module_rtl871x_pwrctrl_c_, _drv_notice_, + ("cpwm_int_hdl: cpwm=0x%02x\n", pwrpriv->cpwm)); + +_func_exit_; +} + +__inline static void register_task_alive(struct pwrctrl_priv *pwrctrl, u32 tag) +{ + pwrctrl->alives |= tag; +} + +__inline static void unregister_task_alive(struct pwrctrl_priv *pwrctrl, u32 tag) +{ + pwrctrl->alives &= ~tag; +} + +/* + * Caller: rtw_xmit_thread + * + * Check if the fw_pwrstate is okay for xmit. + * If not (cpwm is less than S3), then the sub-routine + * will raise the cpwm to be greater than or equal to S3. + * + * Calling Context: Passive + * + * Return Value: + * _SUCCESS rtw_xmit_thread can write fifo/txcmd afterwards. + * _FAIL rtw_xmit_thread can not do anything. + */ +s32 rtw_register_tx_alive(PADAPTER padapter) +{ + s32 res; + struct pwrctrl_priv *pwrctrl; + +_func_enter_; + + res = _SUCCESS; + pwrctrl = &padapter->pwrctrlpriv; + + _enter_pwrlock(&pwrctrl->lock); + + register_task_alive(pwrctrl, XMIT_ALIVE); + + if (pwrctrl->bFwCurrentInPSMode == _TRUE) + { + RT_TRACE(_module_rtl871x_pwrctrl_c_, _drv_err_, + ("rtw_register_tx_alive: cpwm=0x%02x alives=0x%08x\n", + pwrctrl->cpwm, pwrctrl->alives)); + + if (pwrctrl->cpwm < PS_STATE_S2) { + if (pwrctrl->rpwm < PS_STATE_S2) + rtw_set_rpwm(padapter, PS_STATE_S2); + res = _FAIL; + } + } + + _exit_pwrlock(&pwrctrl->lock); + +_func_exit_; + + return res; +} + +/* + * Caller: rtw_cmd_thread + * + * Check if the fw_pwrstate is okay for issuing cmd. + * If not (cpwm should be is less than S2), then the sub-routine + * will raise the cpwm to be greater than or equal to S2. + * + * Calling Context: Passive + * + * Return Value: + * _SUCCESS rtw_cmd_thread can issue cmds to firmware afterwards. + * _FAIL rtw_cmd_thread can not do anything. + */ +s32 rtw_register_cmd_alive(PADAPTER padapter) +{ + s32 res; + struct pwrctrl_priv *pwrctrl; + +_func_enter_; + + res = _SUCCESS; + pwrctrl = &padapter->pwrctrlpriv; + + _enter_pwrlock(&pwrctrl->lock); + + register_task_alive(pwrctrl, CMD_ALIVE); + + if (pwrctrl->bFwCurrentInPSMode == _TRUE) + { + RT_TRACE(_module_rtl871x_pwrctrl_c_, _drv_notice_, + ("rtw_register_cmd_alive: cpwm=0x%02x alives=0x%08x\n", + pwrctrl->cpwm, pwrctrl->alives)); + + if (pwrctrl->cpwm < PS_STATE_S2) { + if (pwrctrl->rpwm < PS_STATE_S2) + rtw_set_rpwm(padapter, PS_STATE_S2); + res = _FAIL; + } + } + + _exit_pwrlock(&pwrctrl->lock); + +_func_exit_; + + return res; +} + +/* + * Caller: rx_isr + * + * Calling Context: Dispatch/ISR + * + * Return Value: + * _SUCCESS + * _FAIL + */ +s32 rtw_register_rx_alive(PADAPTER padapter) +{ + struct pwrctrl_priv *pwrctrl; + +_func_enter_; + + pwrctrl = &padapter->pwrctrlpriv; + + _enter_pwrlock(&pwrctrl->lock); + + register_task_alive(pwrctrl, RECV_ALIVE); + RT_TRACE(_module_rtl871x_pwrctrl_c_, _drv_notice_, + ("rtw_register_rx_alive: cpwm=0x%02x alives=0x%08x\n", + pwrctrl->cpwm, pwrctrl->alives)); + + _exit_pwrlock(&pwrctrl->lock); + +_func_exit_; + + return _SUCCESS; +} + +/* + * Caller: evt_isr or evt_thread + * + * Calling Context: Dispatch/ISR or Passive + * + * Return Value: + * _SUCCESS + * _FAIL + */ +s32 rtw_register_evt_alive(PADAPTER padapter) +{ + struct pwrctrl_priv *pwrctrl; + +_func_enter_; + + pwrctrl = &padapter->pwrctrlpriv; + + _enter_pwrlock(&pwrctrl->lock); + + register_task_alive(pwrctrl, EVT_ALIVE); + RT_TRACE(_module_rtl871x_pwrctrl_c_, _drv_notice_, + ("rtw_register_evt_alive: cpwm=0x%02x alives=0x%08x\n", + pwrctrl->cpwm, pwrctrl->alives)); + + _exit_pwrlock(&pwrctrl->lock); + +_func_exit_; + + return _SUCCESS; +} + +/* + * Caller: ISR + * + * If ISR's txdone, + * No more pkts for TX, + * Then driver shall call this fun. to power down firmware again. + */ +void rtw_unregister_tx_alive(PADAPTER padapter) +{ + struct pwrctrl_priv *pwrctrl; + +_func_enter_; + + pwrctrl = &padapter->pwrctrlpriv; + + _enter_pwrlock(&pwrctrl->lock); + + unregister_task_alive(pwrctrl, XMIT_ALIVE); + + if ((pwrctrl->pwr_mode != PS_MODE_ACTIVE) && + (pwrctrl->bFwCurrentInPSMode == _TRUE)) + { + if ((pwrctrl->alives == 0) && + (pwrctrl->cpwm > PS_STATE_S0)) + { + rtw_set_rpwm(padapter, PS_STATE_S0); + } + + RT_TRACE(_module_rtl871x_pwrctrl_c_, _drv_notice_, + ("rtw_unregister_tx_alive: cpwm=0x%02x alives=0x%08x\n", + pwrctrl->cpwm, pwrctrl->alives)); + } + + _exit_pwrlock(&pwrctrl->lock); + +_func_exit_; +} + +/* + * Caller: ISR + * + * If all commands have been done, + * and no more command to do, + * then driver shall call this fun. to power down firmware again. + */ +void rtw_unregister_cmd_alive(PADAPTER padapter) +{ + struct pwrctrl_priv *pwrctrl; + +_func_enter_; + + pwrctrl = &padapter->pwrctrlpriv; + + _enter_pwrlock(&pwrctrl->lock); + + unregister_task_alive(pwrctrl, CMD_ALIVE); + + if ((pwrctrl->pwr_mode != PS_MODE_ACTIVE) && + (pwrctrl->bFwCurrentInPSMode == _TRUE)) + { + if ((pwrctrl->alives == 0) && + (pwrctrl->cpwm > PS_STATE_S0)) + { + rtw_set_rpwm(padapter, PS_STATE_S0); + } + + RT_TRACE(_module_rtl871x_pwrctrl_c_, _drv_notice_, + ("rtw_unregister_cmd_alive: cpwm=0x%02x alives=0x%08x\n", + pwrctrl->cpwm, pwrctrl->alives)); + } + + _exit_pwrlock(&pwrctrl->lock); + +_func_exit_; +} + +/* + * Caller: ISR + */ +void rtw_unregister_rx_alive(PADAPTER padapter) +{ + struct pwrctrl_priv *pwrctrl; + +_func_enter_; + + pwrctrl = &padapter->pwrctrlpriv; + + _enter_pwrlock(&pwrctrl->lock); + + unregister_task_alive(pwrctrl, RECV_ALIVE); + + RT_TRACE(_module_rtl871x_pwrctrl_c_, _drv_notice_, + ("rtw_unregister_rx_alive: cpwm=0x%02x alives=0x%08x\n", + pwrctrl->cpwm, pwrctrl->alives)); + + _exit_pwrlock(&pwrctrl->lock); + +_func_exit_; +} + +void rtw_unregister_evt_alive(PADAPTER padapter) +{ + struct pwrctrl_priv *pwrctrl; + +_func_enter_; + + pwrctrl = &padapter->pwrctrlpriv; + + unregister_task_alive(pwrctrl, EVT_ALIVE); + + RT_TRACE(_module_rtl871x_pwrctrl_c_, _drv_notice_, + ("rtw_unregister_evt_alive: cpwm=0x%02x alives=0x%08x\n", + pwrctrl->cpwm, pwrctrl->alives)); + + _exit_pwrlock(&pwrctrl->lock); + +_func_exit_; +} +#endif /* CONFIG_LPS_LCLK */ + +#ifdef CONFIG_RESUME_IN_WORKQUEUE +static void resume_workitem_callback(struct work_struct *work); +#endif //CONFIG_RESUME_IN_WORKQUEUE + +void rtw_init_pwrctrl_priv(PADAPTER padapter) +{ + struct pwrctrl_priv *pwrctrlpriv = &padapter->pwrctrlpriv; + +_func_enter_; + +#ifdef PLATFORM_WINDOWS + pwrctrlpriv->pnp_current_pwr_state=NdisDeviceStateD0; +#endif + + _init_pwrlock(&pwrctrlpriv->lock); + pwrctrlpriv->rf_pwrstate = rf_on; + pwrctrlpriv->ips_enter_cnts=0; + pwrctrlpriv->ips_leave_cnts=0; + + pwrctrlpriv->ips_mode = padapter->registrypriv.ips_mode; + pwrctrlpriv->ips_mode_req = padapter->registrypriv.ips_mode; + + pwrctrlpriv->pwr_state_check_interval = RTW_PWR_STATE_CHK_INTERVAL; + pwrctrlpriv->pwr_state_check_cnts = 0; + pwrctrlpriv->bInternalAutoSuspend = _FALSE; + pwrctrlpriv->bInSuspend = _FALSE; + pwrctrlpriv->bkeepfwalive = _FALSE; + +#ifdef CONFIG_AUTOSUSPEND +#ifdef SUPPORT_HW_RFOFF_DETECTED + pwrctrlpriv->pwr_state_check_interval = (pwrctrlpriv->bHWPwrPindetect) ?1000:2000; +#endif +#endif + + pwrctrlpriv->LpsIdleCount = 0; + //pwrctrlpriv->FWCtrlPSMode =padapter->registrypriv.power_mgnt;// PS_MODE_MIN; + pwrctrlpriv->power_mgnt =padapter->registrypriv.power_mgnt;// PS_MODE_MIN; + pwrctrlpriv->bLeisurePs = (PS_MODE_ACTIVE != pwrctrlpriv->power_mgnt)?_TRUE:_FALSE; + + pwrctrlpriv->bFwCurrentInPSMode = _FALSE; + + pwrctrlpriv->cpwm = PS_STATE_S4; + + pwrctrlpriv->pwr_mode = PS_MODE_ACTIVE; + + + pwrctrlpriv->smart_ps = 0; + + pwrctrlpriv->tog = 0x80; + +#ifdef PLATFORM_LINUX + _init_timer(&(pwrctrlpriv->pwr_state_check_timer), padapter->pnetdev, pwr_state_check_handler, (u8 *)padapter); +#endif + + #ifdef CONFIG_RESUME_IN_WORKQUEUE + _init_workitem(&pwrctrlpriv->resume_work, resume_workitem_callback, NULL); + pwrctrlpriv->rtw_workqueue = create_singlethread_workqueue("rtw_workqueue"); + #endif //CONFIG_RESUME_IN_WORKQUEUE + + #if defined(CONFIG_HAS_EARLYSUSPEND) || defined(CONFIG_ANDROID_POWER) + pwrctrlpriv->early_suspend.suspend = NULL; + rtw_register_early_suspend(pwrctrlpriv); + #endif //CONFIG_HAS_EARLYSUSPEND || CONFIG_ANDROID_POWER + + +_func_exit_; + +} + + +void rtw_free_pwrctrl_priv(PADAPTER adapter) +{ + struct pwrctrl_priv *pwrctrlpriv = &adapter->pwrctrlpriv; + +_func_enter_; + + //_rtw_memset((unsigned char *)pwrctrlpriv, 0, sizeof(struct pwrctrl_priv)); + + + #ifdef CONFIG_RESUME_IN_WORKQUEUE + if (pwrctrlpriv->rtw_workqueue) { + flush_workqueue(pwrctrlpriv->rtw_workqueue); + destroy_workqueue(pwrctrlpriv->rtw_workqueue); + } + #endif + + + #if defined(CONFIG_HAS_EARLYSUSPEND) || defined(CONFIG_ANDROID_POWER) + rtw_unregister_early_suspend(pwrctrlpriv); + #endif //CONFIG_HAS_EARLYSUSPEND || CONFIG_ANDROID_POWER + + _free_pwrlock(&pwrctrlpriv->lock); + +_func_exit_; +} + +#ifdef CONFIG_RESUME_IN_WORKQUEUE +#if defined(CONFIG_USB_HCI) || defined(CONFIG_SDIO_HCI) +extern int rtw_resume_process(_adapter *padapter); +#endif +static void resume_workitem_callback(struct work_struct *work) +{ + struct pwrctrl_priv *pwrpriv = container_of(work, struct pwrctrl_priv, resume_work); + _adapter *adapter = container_of(pwrpriv, _adapter, pwrctrlpriv); + + DBG_871X("%s\n",__FUNCTION__); + + #if defined(CONFIG_USB_HCI) || defined(CONFIG_SDIO_HCI) + rtw_resume_process(adapter); + #endif + +} + +void rtw_resume_in_workqueue(struct pwrctrl_priv *pwrpriv) +{ + // accquire system's suspend lock preventing from falliing asleep while resume in workqueue + rtw_lock_suspend(); + + #if 1 + queue_work(pwrpriv->rtw_workqueue, &pwrpriv->resume_work); + #else + _set_workitem(&pwrpriv->resume_work); + #endif +} +#endif //CONFIG_RESUME_IN_WORKQUEUE + +#if defined(CONFIG_HAS_EARLYSUSPEND) || defined(CONFIG_ANDROID_POWER) +inline bool rtw_is_earlysuspend_registered(struct pwrctrl_priv *pwrpriv) +{ + return (pwrpriv->early_suspend.suspend) ? _TRUE : _FALSE; +} + +inline bool rtw_is_do_late_resume(struct pwrctrl_priv *pwrpriv) +{ + return (pwrpriv->do_late_resume) ? _TRUE : _FALSE; +} + +inline void rtw_set_do_late_resume(struct pwrctrl_priv *pwrpriv, bool enable) +{ + pwrpriv->do_late_resume = enable; +} +#endif + +#ifdef CONFIG_HAS_EARLYSUSPEND +#if defined(CONFIG_USB_HCI) || defined(CONFIG_SDIO_HCI) +extern int rtw_resume_process(_adapter *padapter); +#endif +static void rtw_early_suspend(struct early_suspend *h) +{ + struct pwrctrl_priv *pwrpriv = container_of(h, struct pwrctrl_priv, early_suspend); + DBG_871X("%s\n",__FUNCTION__); + + rtw_set_do_late_resume(pwrpriv, _FALSE); +} + +static void rtw_late_resume(struct early_suspend *h) +{ + struct pwrctrl_priv *pwrpriv = container_of(h, struct pwrctrl_priv, early_suspend); + _adapter *adapter = container_of(pwrpriv, _adapter, pwrctrlpriv); + + DBG_871X("%s\n",__FUNCTION__); + if(pwrpriv->do_late_resume) { + #if defined(CONFIG_USB_HCI) || defined(CONFIG_SDIO_HCI) + rtw_set_do_late_resume(pwrpriv, _FALSE); + rtw_resume_process(adapter); + #endif + } +} + +void rtw_register_early_suspend(struct pwrctrl_priv *pwrpriv) +{ + _adapter *adapter = container_of(pwrpriv, _adapter, pwrctrlpriv); + +#if defined(CONFIG_CONCURRENT_MODE) + if (adapter->adapter_type != PRIMARY_ADAPTER) + return; +#endif + + DBG_871X("%s\n", __FUNCTION__); + + //jeff: set the early suspend level before blank screen, so we wll do late resume after scree is lit + pwrpriv->early_suspend.level = EARLY_SUSPEND_LEVEL_BLANK_SCREEN - 20; + pwrpriv->early_suspend.suspend = rtw_early_suspend; + pwrpriv->early_suspend.resume = rtw_late_resume; + register_early_suspend(&pwrpriv->early_suspend); + + +} + +void rtw_unregister_early_suspend(struct pwrctrl_priv *pwrpriv) +{ + _adapter *adapter = container_of(pwrpriv, _adapter, pwrctrlpriv); + +#if defined(CONFIG_CONCURRENT_MODE) + if (adapter->adapter_type != PRIMARY_ADAPTER) + return; +#endif + + DBG_871X("%s\n", __FUNCTION__); + + rtw_set_do_late_resume(pwrpriv, _FALSE); + + if (pwrpriv->early_suspend.suspend) + unregister_early_suspend(&pwrpriv->early_suspend); + + pwrpriv->early_suspend.suspend = NULL; + pwrpriv->early_suspend.resume = NULL; +} +#endif //CONFIG_HAS_EARLYSUSPEND + +#ifdef CONFIG_ANDROID_POWER +#if defined(CONFIG_USB_HCI) || defined(CONFIG_SDIO_HCI) +extern int rtw_resume_process(PADAPTER padapter); +#endif +static void rtw_early_suspend(android_early_suspend_t *h) +{ + struct pwrctrl_priv *pwrpriv = container_of(h, struct pwrctrl_priv, early_suspend); + DBG_871X("%s\n",__FUNCTION__); + + rtw_set_do_late_resume(pwrpriv, _FALSE); +} + +static void rtw_late_resume(android_early_suspend_t *h) +{ + struct pwrctrl_priv *pwrpriv = container_of(h, struct pwrctrl_priv, early_suspend); + _adapter *adapter = container_of(pwrpriv, _adapter, pwrctrlpriv); + + DBG_871X("%s\n",__FUNCTION__); + if(pwrpriv->do_late_resume) { + #if defined(CONFIG_USB_HCI) || defined(CONFIG_SDIO_HCI) + rtw_set_do_late_resume(pwrpriv, _FALSE); + rtw_resume_process(adapter); + #endif + } +} + +void rtw_register_early_suspend(struct pwrctrl_priv *pwrpriv) +{ + _adapter *adapter = container_of(pwrpriv, _adapter, pwrctrlpriv); + +#if defined(CONFIG_CONCURRENT_MODE) + if (adapter->adapter_type != PRIMARY_ADAPTER) + return; +#endif + + DBG_871X("%s\n", __FUNCTION__); + + //jeff: set the early suspend level before blank screen, so we wll do late resume after scree is lit + pwrpriv->early_suspend.level = ANDROID_EARLY_SUSPEND_LEVEL_BLANK_SCREEN - 20; + pwrpriv->early_suspend.suspend = rtw_early_suspend; + pwrpriv->early_suspend.resume = rtw_late_resume; + android_register_early_suspend(&pwrpriv->early_suspend); +} + +void rtw_unregister_early_suspend(struct pwrctrl_priv *pwrpriv) +{ + _adapter *adapter = container_of(pwrpriv, _adapter, pwrctrlpriv); + +#if defined(CONFIG_CONCURRENT_MODE) + if (adapter->adapter_type != PRIMARY_ADAPTER) + return; +#endif + + DBG_871X("%s\n", __FUNCTION__); + + rtw_set_do_late_resume(pwrpriv, _FALSE); + + if (pwrpriv->early_suspend.suspend) + android_unregister_early_suspend(&pwrpriv->early_suspend); + + pwrpriv->early_suspend.suspend = NULL; + pwrpriv->early_suspend.resume = NULL; +} +#endif //CONFIG_ANDROID_POWER + +u8 rtw_interface_ps_func(_adapter *padapter,HAL_INTF_PS_FUNC efunc_id,u8* val) +{ + u8 bResult = _TRUE; + + rtw_hal_intf_ps_func(padapter,efunc_id,val); + + return bResult; +} + + +inline void rtw_set_ips_deny(_adapter *padapter, u32 ms) +{ + struct pwrctrl_priv *pwrpriv = &padapter->pwrctrlpriv; + pwrpriv->ips_deny_time = rtw_get_current_time() + rtw_ms_to_systime(ms); +} + +/* +* rtw_pwr_wakeup - Wake the NIC up from: 1)IPS. 2)USB autosuspend +* @adapter: pointer to _adapter structure +* @ips_deffer_ms: the ms wiil prevent from falling into IPS after wakeup +* Return _SUCCESS or _FAIL +*/ +int _rtw_pwr_wakeup(_adapter *padapter, u32 ips_deffer_ms, const char *caller) +{ + struct pwrctrl_priv *pwrpriv = &padapter->pwrctrlpriv; + struct mlme_priv *pmlmepriv = &padapter->mlmepriv; + int ret = _SUCCESS; + u32 start = rtw_get_current_time(); + +#ifdef CONFIG_CONCURRENT_MODE + if (padapter->pbuddy_adapter) + LeaveAllPowerSaveMode(padapter->pbuddy_adapter); + + if ((padapter->isprimary == _FALSE) && padapter->pbuddy_adapter){ + padapter = padapter->pbuddy_adapter; + pwrpriv = &padapter->pwrctrlpriv; + pmlmepriv = &padapter->mlmepriv; + } +#endif + + if (pwrpriv->ips_deny_time < rtw_get_current_time() + rtw_ms_to_systime(ips_deffer_ms)) + pwrpriv->ips_deny_time = rtw_get_current_time() + rtw_ms_to_systime(ips_deffer_ms); + + if (pwrpriv->ps_processing) { + DBG_871X("%s wait ps_processing...\n", __func__); + while (pwrpriv->ps_processing && rtw_get_passing_time_ms(start) <= 3000) + rtw_msleep_os(10); + if (pwrpriv->ps_processing) + DBG_871X("%s wait ps_processing timeout\n", __func__); + else + DBG_871X("%s wait ps_processing done\n", __func__); + } + +#ifdef DBG_CONFIG_ERROR_DETECT + if (rtw_hal_sreset_inprogress(padapter)) { + DBG_871X("%s wait sreset_inprogress...\n", __func__); + while (rtw_hal_sreset_inprogress(padapter) && rtw_get_passing_time_ms(start) <= 4000) + rtw_msleep_os(10); + if (rtw_hal_sreset_inprogress(padapter)) + DBG_871X("%s wait sreset_inprogress timeout\n", __func__); + else + DBG_871X("%s wait sreset_inprogress done\n", __func__); + } +#endif + + if (pwrpriv->bInternalAutoSuspend == _FALSE && pwrpriv->bInSuspend) { + DBG_871X("%s wait bInSuspend...\n", __func__); + while (pwrpriv->bInSuspend + && ((rtw_get_passing_time_ms(start) <= 3000 && !rtw_is_do_late_resume(pwrpriv)) + || (rtw_get_passing_time_ms(start) <= 500 && rtw_is_do_late_resume(pwrpriv))) + ) { + rtw_msleep_os(10); + } + if (pwrpriv->bInSuspend) + DBG_871X("%s wait bInSuspend timeout\n", __func__); + else + DBG_871X("%s wait bInSuspend done\n", __func__); + } + + //System suspend is not allowed to wakeup + if((pwrpriv->bInternalAutoSuspend == _FALSE) && (_TRUE == pwrpriv->bInSuspend )){ + ret = _FAIL; + goto exit; + } + + //block??? + if((pwrpriv->bInternalAutoSuspend == _TRUE) && (padapter->net_closed == _TRUE)) { + ret = _FAIL; + goto exit; + } + + //I think this should be check in IPS, LPS, autosuspend functions... + if (check_fwstate(pmlmepriv, _FW_LINKED) == _TRUE) + { + ret = _SUCCESS; + goto exit; + } + + if(rf_off == pwrpriv->rf_pwrstate ) + { +#ifdef CONFIG_USB_HCI +#ifdef CONFIG_AUTOSUSPEND + if(pwrpriv->brfoffbyhw==_TRUE) + { + DBG_8192C("hw still in rf_off state ...........\n"); + ret = _FAIL; + goto exit; + } + else if(padapter->registrypriv.usbss_enable) + { + DBG_8192C("%s call autoresume_enter....\n",__FUNCTION__); + if(_FAIL == autoresume_enter(padapter)) + { + DBG_8192C("======> autoresume fail.............\n"); + ret = _FAIL; + goto exit; + } + } + else +#endif +#endif + { +#ifdef CONFIG_IPS + DBG_8192C("%s call ips_leave....\n",__FUNCTION__); + if(_FAIL == ips_leave(padapter)) + { + DBG_8192C("======> ips_leave fail.............\n"); + ret = _FAIL; + goto exit; + } +#endif + } + } + + //TODO: the following checking need to be merged... + if(padapter->bDriverStopped + || !padapter->bup + || !padapter->hw_init_completed + ){ + DBG_8192C("%s: bDriverStopped=%d, bup=%d, hw_init_completed=%u\n" + , caller + , padapter->bDriverStopped + , padapter->bup + , padapter->hw_init_completed); + ret= _FALSE; + goto exit; + } + +exit: + if (pwrpriv->ips_deny_time < rtw_get_current_time() + rtw_ms_to_systime(ips_deffer_ms)) + pwrpriv->ips_deny_time = rtw_get_current_time() + rtw_ms_to_systime(ips_deffer_ms); + return ret; + +} + +int rtw_pm_set_lps(_adapter *padapter, u8 mode) +{ + int ret = 0; + struct pwrctrl_priv *pwrctrlpriv = &padapter->pwrctrlpriv; + + if ( mode < PS_MODE_NUM ) + { + if(pwrctrlpriv->power_mgnt !=mode) + { + if(PS_MODE_ACTIVE == mode) + { + LeaveAllPowerSaveMode(padapter); + } + else + { + pwrctrlpriv->LpsIdleCount = 2; + } + pwrctrlpriv->power_mgnt = mode; + pwrctrlpriv->bLeisurePs = (PS_MODE_ACTIVE != pwrctrlpriv->power_mgnt)?_TRUE:_FALSE; + } + } + else + { + ret = -EINVAL; + } + + return ret; +} + +int rtw_pm_set_ips(_adapter *padapter, u8 mode) +{ + struct pwrctrl_priv *pwrctrlpriv = &padapter->pwrctrlpriv; + + if( mode == IPS_NORMAL || mode == IPS_LEVEL_2 ) { + rtw_ips_mode_req(pwrctrlpriv, mode); + DBG_871X("%s %s\n", __FUNCTION__, mode == IPS_NORMAL?"IPS_NORMAL":"IPS_LEVEL_2"); + return 0; + } + else if(mode ==IPS_NONE){ + rtw_ips_mode_req(pwrctrlpriv, mode); + DBG_871X("%s %s\n", __FUNCTION__, "IPS_NONE"); + if((padapter->bSurpriseRemoved ==0)&&(_FAIL == rtw_pwr_wakeup(padapter)) ) + return -EFAULT; + } + else { + return -EINVAL; + } + return 0; +} --- linux-raspi2-4.2.0.orig/drivers/net/wireless/rtl8192cu/core/rtw_recv.c +++ linux-raspi2-4.2.0/drivers/net/wireless/rtl8192cu/core/rtw_recv.c @@ -0,0 +1,4286 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved. + * + * 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 + * published by the Free Software Foundation. + * + * 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 Street, Fifth Floor, Boston, MA 02110, USA + * + * + ******************************************************************************/ +#define _RTW_RECV_C_ +#include +#include +#include +#include +#include +#include +#include +#include + +#ifdef CONFIG_USB_HCI +#include +#endif + +#if defined (PLATFORM_LINUX) && defined (PLATFORM_WINDOWS) + +#error "Shall be Linux or Windows, but not both!\n" + +#endif + +#include +#include + +#ifdef CONFIG_NEW_SIGNAL_STAT_PROCESS +void rtw_signal_stat_timer_hdl(RTW_TIMER_HDL_ARGS); +#endif //CONFIG_NEW_SIGNAL_STAT_PROCESS + + +void _rtw_init_sta_recv_priv(struct sta_recv_priv *psta_recvpriv) +{ + + +_func_enter_; + + _rtw_memset((u8 *)psta_recvpriv, 0, sizeof (struct sta_recv_priv)); + + _rtw_spinlock_init(&psta_recvpriv->lock); + + //for(i=0; iblk_strms[i]); + + _rtw_init_queue(&psta_recvpriv->defrag_q); + +_func_exit_; + +} + +sint _rtw_init_recv_priv(struct recv_priv *precvpriv, _adapter *padapter) +{ + sint i; + + union recv_frame *precvframe; + + sint res=_SUCCESS; + +_func_enter_; + + // We don't need to memset padapter->XXX to zero, because adapter is allocated by rtw_zvmalloc(). + //_rtw_memset((unsigned char *)precvpriv, 0, sizeof (struct recv_priv)); + + _rtw_spinlock_init(&precvpriv->lock); + + _rtw_init_queue(&precvpriv->free_recv_queue); + _rtw_init_queue(&precvpriv->recv_pending_queue); + _rtw_init_queue(&precvpriv->uc_swdec_pending_queue); + + precvpriv->adapter = padapter; + + precvpriv->free_recvframe_cnt = NR_RECVFRAME; + + rtw_os_recv_resource_init(precvpriv, padapter); + + precvpriv->pallocated_frame_buf = rtw_zvmalloc(NR_RECVFRAME * sizeof(union recv_frame) + RXFRAME_ALIGN_SZ); + + if(precvpriv->pallocated_frame_buf==NULL){ + res= _FAIL; + goto exit; + } + //_rtw_memset(precvpriv->pallocated_frame_buf, 0, NR_RECVFRAME * sizeof(union recv_frame) + RXFRAME_ALIGN_SZ); + + precvpriv->precv_frame_buf = (u8 *)N_BYTE_ALIGMENT((SIZE_PTR)(precvpriv->pallocated_frame_buf), RXFRAME_ALIGN_SZ); + //precvpriv->precv_frame_buf = precvpriv->pallocated_frame_buf + RXFRAME_ALIGN_SZ - + // ((SIZE_PTR) (precvpriv->pallocated_frame_buf) &(RXFRAME_ALIGN_SZ-1)); + + precvframe = (union recv_frame*) precvpriv->precv_frame_buf; + + + for(i=0; i < NR_RECVFRAME ; i++) + { + _rtw_init_listhead(&(precvframe->u.list)); + + rtw_list_insert_tail(&(precvframe->u.list), &(precvpriv->free_recv_queue.queue)); + + res = rtw_os_recv_resource_alloc(padapter, precvframe); + + precvframe->u.hdr.adapter =padapter; + precvframe++; + + } + +#ifdef CONFIG_USB_HCI + + precvpriv->rx_pending_cnt=1; + + _rtw_init_sema(&precvpriv->allrxreturnevt, 0); + +#endif + + res = rtw_hal_init_recv_priv(padapter); + + precvpriv->recvbuf_skb_alloc_fail_cnt = 0; + precvpriv->recvbuf_null_cnt = 0; + precvpriv->read_port_complete_EINPROGRESS_cnt = 0; + precvpriv->read_port_complete_other_urb_err_cnt = 0; + +#ifdef CONFIG_NEW_SIGNAL_STAT_PROCESS + #ifdef PLATFORM_LINUX + _init_timer(&precvpriv->signal_stat_timer, padapter->pnetdev, RTW_TIMER_HDL_NAME(signal_stat), padapter); + #elif defined(PLATFORM_OS_CE) || defined(PLATFORM_WINDOWS) + _init_timer(&precvpriv->signal_stat_timer, padapter->hndis_adapter, RTW_TIMER_HDL_NAME(signal_stat), padapter); + #endif + + precvpriv->signal_stat_sampling_interval = 1000; //ms + //precvpriv->signal_stat_converging_constant = 5000; //ms + + rtw_set_signal_stat_timer(precvpriv); +#endif //CONFIG_NEW_SIGNAL_STAT_PROCESS + +exit: + +_func_exit_; + + return res; + +} + +void rtw_mfree_recv_priv_lock(struct recv_priv *precvpriv); +void rtw_mfree_recv_priv_lock(struct recv_priv *precvpriv) +{ + _rtw_spinlock_free(&precvpriv->lock); +#ifdef CONFIG_RECV_THREAD_MODE + _rtw_free_sema(&precvpriv->recv_sema); + _rtw_free_sema(&precvpriv->terminate_recvthread_sema); +#endif + + _rtw_spinlock_free(&precvpriv->free_recv_queue.lock); + _rtw_spinlock_free(&precvpriv->recv_pending_queue.lock); + + _rtw_spinlock_free(&precvpriv->free_recv_buf_queue.lock); + +#ifdef CONFIG_USE_USB_BUFFER_ALLOC_RX + _rtw_spinlock_free(&precvpriv->recv_buf_pending_queue.lock); +#endif // CONFIG_USE_USB_BUFFER_ALLOC_RX +} + +void _rtw_free_recv_priv (struct recv_priv *precvpriv) +{ + _adapter *padapter = precvpriv->adapter; + +_func_enter_; + + rtw_free_uc_swdec_pending_queue(padapter); + + rtw_mfree_recv_priv_lock(precvpriv); + + rtw_os_recv_resource_free(precvpriv); + + if(precvpriv->pallocated_frame_buf) { + rtw_vmfree(precvpriv->pallocated_frame_buf, NR_RECVFRAME * sizeof(union recv_frame) + RXFRAME_ALIGN_SZ); + } + + rtw_hal_free_recv_priv(padapter); + +_func_exit_; + +} + +union recv_frame *_rtw_alloc_recvframe (_queue *pfree_recv_queue) +{ + + union recv_frame *precvframe; + _list *plist, *phead; + _adapter *padapter; + struct recv_priv *precvpriv; +_func_enter_; + + if(_rtw_queue_empty(pfree_recv_queue) == _TRUE) + { + precvframe = NULL; + } + else + { + phead = get_list_head(pfree_recv_queue); + + plist = get_next(phead); + + precvframe = LIST_CONTAINOR(plist, union recv_frame, u); + + rtw_list_delete(&precvframe->u.hdr.list); + padapter=precvframe->u.hdr.adapter; + if(padapter !=NULL){ + precvpriv=&padapter->recvpriv; + if(pfree_recv_queue == &precvpriv->free_recv_queue) + precvpriv->free_recvframe_cnt--; + } + } + +_func_exit_; + + return precvframe; + +} + +union recv_frame *rtw_alloc_recvframe (_queue *pfree_recv_queue) +{ + _irqL irqL; + union recv_frame *precvframe; + + _enter_critical_bh(&pfree_recv_queue->lock, &irqL); + + precvframe = _rtw_alloc_recvframe(pfree_recv_queue); + + _exit_critical_bh(&pfree_recv_queue->lock, &irqL); + + return precvframe; +} + +void rtw_init_recvframe(union recv_frame *precvframe, struct recv_priv *precvpriv) +{ + /* Perry: This can be removed */ + _rtw_init_listhead(&precvframe->u.hdr.list); + + precvframe->u.hdr.len=0; +} + +int rtw_free_recvframe(union recv_frame *precvframe, _queue *pfree_recv_queue) +{ + _irqL irqL; + _adapter *padapter=precvframe->u.hdr.adapter; + struct recv_priv *precvpriv = &padapter->recvpriv; + +_func_enter_; + +#ifdef CONFIG_CONCURRENT_MODE + if(padapter->adapter_type > PRIMARY_ADAPTER) + { + padapter = padapter->pbuddy_adapter;//get primary_padapter + precvpriv = &padapter->recvpriv; + pfree_recv_queue = &precvpriv->free_recv_queue; + precvframe->u.hdr.adapter = padapter; + } +#endif + + +#ifdef PLATFORM_WINDOWS + rtw_os_read_port(padapter, precvframe->u.hdr.precvbuf); +#endif + +#if defined(PLATFORM_LINUX) || defined(PLATFORM_FREEBSD) + + if(precvframe->u.hdr.pkt) + { +#ifdef CONFIG_BSD_RX_USE_MBUF + m_freem(precvframe->u.hdr.pkt); +#else // CONFIG_BSD_RX_USE_MBUF + rtw_skb_free(precvframe->u.hdr.pkt);//free skb by driver +#endif // CONFIG_BSD_RX_USE_MBUF + precvframe->u.hdr.pkt = NULL; + } + +#endif //defined(PLATFORM_LINUX) || defined(PLATFORM_FREEBSD) + + _enter_critical_bh(&pfree_recv_queue->lock, &irqL); + + rtw_list_delete(&(precvframe->u.hdr.list)); + + rtw_list_insert_tail(&(precvframe->u.hdr.list), get_list_head(pfree_recv_queue)); + + if(padapter !=NULL){ + if(pfree_recv_queue == &precvpriv->free_recv_queue) + precvpriv->free_recvframe_cnt++; + } + + _exit_critical_bh(&pfree_recv_queue->lock, &irqL); + +_func_exit_; + + return _SUCCESS; + +} + + + + +sint _rtw_enqueue_recvframe(union recv_frame *precvframe, _queue *queue) +{ + + _adapter *padapter=precvframe->u.hdr.adapter; + struct recv_priv *precvpriv = &padapter->recvpriv; + +_func_enter_; + + //_rtw_init_listhead(&(precvframe->u.hdr.list)); + rtw_list_delete(&(precvframe->u.hdr.list)); + + + rtw_list_insert_tail(&(precvframe->u.hdr.list), get_list_head(queue)); + + if (padapter != NULL) { + if (queue == &precvpriv->free_recv_queue) + precvpriv->free_recvframe_cnt++; + } + +_func_exit_; + + return _SUCCESS; +} + +sint rtw_enqueue_recvframe(union recv_frame *precvframe, _queue *queue) +{ + sint ret; + _irqL irqL; + + //_spinlock(&pfree_recv_queue->lock); + _enter_critical_bh(&queue->lock, &irqL); + ret = _rtw_enqueue_recvframe(precvframe, queue); + //_rtw_spinunlock(&pfree_recv_queue->lock); + _exit_critical_bh(&queue->lock, &irqL); + + return ret; +} + +/* +sint rtw_enqueue_recvframe(union recv_frame *precvframe, _queue *queue) +{ + return rtw_free_recvframe(precvframe, queue); +} +*/ + + + + +/* +caller : defrag ; recvframe_chk_defrag in recv_thread (passive) +pframequeue: defrag_queue : will be accessed in recv_thread (passive) + +using spinlock to protect + +*/ + +void rtw_free_recvframe_queue(_queue *pframequeue, _queue *pfree_recv_queue) +{ + union recv_frame *precvframe; + _list *plist, *phead; + +_func_enter_; + _rtw_spinlock(&pframequeue->lock); + + phead = get_list_head(pframequeue); + plist = get_next(phead); + + while(rtw_end_of_queue_search(phead, plist) == _FALSE) + { + precvframe = LIST_CONTAINOR(plist, union recv_frame, u); + + plist = get_next(plist); + + //rtw_list_delete(&precvframe->u.hdr.list); // will do this in rtw_free_recvframe() + + rtw_free_recvframe(precvframe, pfree_recv_queue); + } + + _rtw_spinunlock(&pframequeue->lock); + +_func_exit_; + +} + +u32 rtw_free_uc_swdec_pending_queue(_adapter *adapter) +{ + u32 cnt = 0; + union recv_frame *pending_frame; + while((pending_frame=rtw_alloc_recvframe(&adapter->recvpriv.uc_swdec_pending_queue))) { + rtw_free_recvframe(pending_frame, &adapter->recvpriv.free_recv_queue); + DBG_871X("%s: dequeue uc_swdec_pending_queue\n", __func__); + cnt++; + } + + return cnt; +} + + +sint rtw_enqueue_recvbuf_to_head(struct recv_buf *precvbuf, _queue *queue) +{ + _irqL irqL; + + _enter_critical(&queue->lock, &irqL); + + rtw_list_delete(&precvbuf->list); + rtw_list_insert_head(&precvbuf->list, get_list_head(queue)); + + _exit_critical(&queue->lock, &irqL); + + return _SUCCESS; +} + +sint rtw_enqueue_recvbuf(struct recv_buf *precvbuf, _queue *queue) +{ + _irqL irqL; + + _enter_critical(&queue->lock, &irqL); + + rtw_list_delete(&precvbuf->list); + + rtw_list_insert_tail(&precvbuf->list, get_list_head(queue)); + + _exit_critical(&queue->lock, &irqL); + + + return _SUCCESS; + +} + +struct recv_buf *rtw_dequeue_recvbuf (_queue *queue) +{ + _irqL irqL; + struct recv_buf *precvbuf; + _list *plist, *phead; + + _enter_critical(&queue->lock, &irqL); + + if(_rtw_queue_empty(queue) == _TRUE) + { + precvbuf = NULL; + } + else + { + phead = get_list_head(queue); + + plist = get_next(phead); + + precvbuf = LIST_CONTAINOR(plist, struct recv_buf, list); + + rtw_list_delete(&precvbuf->list); + + } + + _exit_critical(&queue->lock, &irqL); + + + return precvbuf; + +} + +sint recvframe_chkmic(_adapter *adapter, union recv_frame *precvframe); +sint recvframe_chkmic(_adapter *adapter, union recv_frame *precvframe){ + + sint i,res=_SUCCESS; + u32 datalen; + u8 miccode[8]; + u8 bmic_err=_FALSE,brpt_micerror = _TRUE; + u8 *pframe, *payload,*pframemic; + u8 *mickey; + //u8 *iv,rxdata_key_idx=0; + struct sta_info *stainfo; + struct rx_pkt_attrib *prxattrib=&precvframe->u.hdr.attrib; + struct security_priv *psecuritypriv=&adapter->securitypriv; + + struct mlme_ext_priv *pmlmeext = &adapter->mlmeextpriv; + struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info); +_func_enter_; + + stainfo=rtw_get_stainfo(&adapter->stapriv ,&prxattrib->ta[0]); + + if(prxattrib->encrypt ==_TKIP_) + { + RT_TRACE(_module_rtl871x_recv_c_,_drv_info_,("\n recvframe_chkmic:prxattrib->encrypt ==_TKIP_\n")); + RT_TRACE(_module_rtl871x_recv_c_,_drv_info_,("\n recvframe_chkmic:da=0x%02x:0x%02x:0x%02x:0x%02x:0x%02x:0x%02x\n", + prxattrib->ra[0],prxattrib->ra[1],prxattrib->ra[2],prxattrib->ra[3],prxattrib->ra[4],prxattrib->ra[5])); + + //calculate mic code + if(stainfo!= NULL) + { + if(IS_MCAST(prxattrib->ra)) + { + //mickey=&psecuritypriv->dot118021XGrprxmickey.skey[0]; + //iv = precvframe->u.hdr.rx_data+prxattrib->hdrlen; + //rxdata_key_idx =( ((iv[3])>>6)&0x3) ; + mickey=&psecuritypriv->dot118021XGrprxmickey[prxattrib->key_index].skey[0]; + + RT_TRACE(_module_rtl871x_recv_c_,_drv_info_,("\n recvframe_chkmic: bcmc key \n")); + //DBG_871X("\n recvframe_chkmic: bcmc key psecuritypriv->dot118021XGrpKeyid(%d),pmlmeinfo->key_index(%d) ,recv key_id(%d)\n", + // psecuritypriv->dot118021XGrpKeyid,pmlmeinfo->key_index,rxdata_key_idx); + + if(psecuritypriv->binstallGrpkey==_FALSE) + { + res=_FAIL; + RT_TRACE(_module_rtl871x_recv_c_,_drv_err_,("\n recvframe_chkmic:didn't install group key!!!!!!!!!!\n")); + DBG_871X("\n recvframe_chkmic:didn't install group key!!!!!!!!!!\n"); + goto exit; + } + } + else{ + mickey=&stainfo->dot11tkiprxmickey.skey[0]; + RT_TRACE(_module_rtl871x_recv_c_,_drv_err_,("\n recvframe_chkmic: unicast key \n")); + } + + datalen=precvframe->u.hdr.len-prxattrib->hdrlen-prxattrib->iv_len-prxattrib->icv_len-8;//icv_len included the mic code + pframe=precvframe->u.hdr.rx_data; + payload=pframe+prxattrib->hdrlen+prxattrib->iv_len; + + RT_TRACE(_module_rtl871x_recv_c_,_drv_info_,("\n prxattrib->iv_len=%d prxattrib->icv_len=%d\n",prxattrib->iv_len,prxattrib->icv_len)); + + //rtw_seccalctkipmic(&stainfo->dot11tkiprxmickey.skey[0],pframe,payload, datalen ,&miccode[0],(unsigned char)prxattrib->priority); //care the length of the data + + rtw_seccalctkipmic(mickey,pframe,payload, datalen ,&miccode[0],(unsigned char)prxattrib->priority); //care the length of the data + + pframemic=payload+datalen; + + bmic_err=_FALSE; + + for(i=0;i<8;i++){ + if(miccode[i] != *(pframemic+i)){ + RT_TRACE(_module_rtl871x_recv_c_,_drv_err_,("recvframe_chkmic:miccode[%d](%02x) != *(pframemic+%d)(%02x) ",i,miccode[i],i,*(pframemic+i))); + bmic_err=_TRUE; + } + } + + + if(bmic_err==_TRUE){ + + RT_TRACE(_module_rtl871x_recv_c_,_drv_err_,("\n *(pframemic-8)-*(pframemic-1)=0x%02x:0x%02x:0x%02x:0x%02x:0x%02x:0x%02x:0x%02x:0x%02x\n", + *(pframemic-8),*(pframemic-7),*(pframemic-6),*(pframemic-5),*(pframemic-4),*(pframemic-3),*(pframemic-2),*(pframemic-1))); + RT_TRACE(_module_rtl871x_recv_c_,_drv_err_,("\n *(pframemic-16)-*(pframemic-9)=0x%02x:0x%02x:0x%02x:0x%02x:0x%02x:0x%02x:0x%02x:0x%02x\n", + *(pframemic-16),*(pframemic-15),*(pframemic-14),*(pframemic-13),*(pframemic-12),*(pframemic-11),*(pframemic-10),*(pframemic-9))); + + { + uint i; + RT_TRACE(_module_rtl871x_recv_c_,_drv_err_,("\n ======demp packet (len=%d)======\n",precvframe->u.hdr.len)); + for(i=0;iu.hdr.len;i=i+8){ + RT_TRACE(_module_rtl871x_recv_c_,_drv_err_,("0x%02x:0x%02x:0x%02x:0x%02x:0x%02x:0x%02x:0x%02x:0x%02x", + *(precvframe->u.hdr.rx_data+i),*(precvframe->u.hdr.rx_data+i+1), + *(precvframe->u.hdr.rx_data+i+2),*(precvframe->u.hdr.rx_data+i+3), + *(precvframe->u.hdr.rx_data+i+4),*(precvframe->u.hdr.rx_data+i+5), + *(precvframe->u.hdr.rx_data+i+6),*(precvframe->u.hdr.rx_data+i+7))); + } + RT_TRACE(_module_rtl871x_recv_c_,_drv_err_,("\n ======demp packet end [len=%d]======\n",precvframe->u.hdr.len)); + RT_TRACE(_module_rtl871x_recv_c_,_drv_err_,("\n hrdlen=%d, \n",prxattrib->hdrlen)); + } + + RT_TRACE(_module_rtl871x_recv_c_,_drv_err_,("ra=0x%.2x 0x%.2x 0x%.2x 0x%.2x 0x%.2x 0x%.2x psecuritypriv->binstallGrpkey=%d ", + prxattrib->ra[0],prxattrib->ra[1],prxattrib->ra[2], + prxattrib->ra[3],prxattrib->ra[4],prxattrib->ra[5],psecuritypriv->binstallGrpkey)); + + // double check key_index for some timing issue , + // cannot compare with psecuritypriv->dot118021XGrpKeyid also cause timing issue + if((IS_MCAST(prxattrib->ra)==_TRUE) && (prxattrib->key_index != pmlmeinfo->key_index )) + brpt_micerror = _FALSE; + + if(brpt_micerror == _TRUE) + { + rtw_handle_tkip_mic_err(adapter,(u8)IS_MCAST(prxattrib->ra)); + RT_TRACE(_module_rtl871x_recv_c_,_drv_err_,(" mic error :prxattrib->bdecrypted=%d \n", brpt_micerror)); + DBG_871X(" mic error :brpt_micerror=%d\n", brpt_micerror); + } + + res=_FAIL; + + } + else{ + //mic checked ok + if((psecuritypriv->bcheck_grpkey ==_FALSE)&&(IS_MCAST(prxattrib->ra)==_TRUE)){ + psecuritypriv->bcheck_grpkey =_TRUE; + RT_TRACE(_module_rtl871x_recv_c_,_drv_err_,("psecuritypriv->bcheck_grpkey =_TRUE")); + } + } + + } + else + { + RT_TRACE(_module_rtl871x_recv_c_,_drv_err_,("recvframe_chkmic: rtw_get_stainfo==NULL!!!\n")); + } + + recvframe_pull_tail(precvframe, 8); + + } + +exit: + +_func_exit_; + + return res; + +} + +//decrypt and set the ivlen,icvlen of the recv_frame +union recv_frame * decryptor(_adapter *padapter,union recv_frame *precv_frame); +union recv_frame * decryptor(_adapter *padapter,union recv_frame *precv_frame) +{ + + struct rx_pkt_attrib *prxattrib = &precv_frame->u.hdr.attrib; + struct security_priv *psecuritypriv=&padapter->securitypriv; + union recv_frame *return_packet=precv_frame; + u32 res=_SUCCESS; +_func_enter_; + + RT_TRACE(_module_rtl871x_recv_c_,_drv_info_,("prxstat->decrypted=%x prxattrib->encrypt = 0x%03x\n",prxattrib->bdecrypted,prxattrib->encrypt)); + + if(prxattrib->encrypt>0) + { + u8 *iv = precv_frame->u.hdr.rx_data+prxattrib->hdrlen; + prxattrib->key_index = ( ((iv[3])>>6)&0x3) ; + + if(prxattrib->key_index > WEP_KEYS) + { + DBG_871X("prxattrib->key_index(%d) > WEP_KEYS \n", prxattrib->key_index); + + switch(prxattrib->encrypt){ + case _WEP40_: + case _WEP104_: + prxattrib->key_index = psecuritypriv->dot11PrivacyKeyIndex; + break; + case _TKIP_: + case _AES_: + default: + prxattrib->key_index = psecuritypriv->dot118021XGrpKeyid; + break; + } + } + } + + if((prxattrib->encrypt>0) && ((prxattrib->bdecrypted==0) ||(psecuritypriv->sw_decrypt==_TRUE))) + { + +#ifdef CONFIG_CONCURRENT_MODE + if(!IS_MCAST(prxattrib->ra))//bc/mc packets use sw decryption for concurrent mode +#endif + psecuritypriv->hw_decrypted=_FALSE; + + #ifdef DBG_RX_DECRYPTOR + DBG_871X("prxstat->bdecrypted:%d, prxattrib->encrypt:%d, Setting psecuritypriv->hw_decrypted = %d\n" + , prxattrib->bdecrypted ,prxattrib->encrypt, psecuritypriv->hw_decrypted); + #endif + + switch(prxattrib->encrypt){ + case _WEP40_: + case _WEP104_: + rtw_wep_decrypt(padapter, (u8 *)precv_frame); + break; + case _TKIP_: + res = rtw_tkip_decrypt(padapter, (u8 *)precv_frame); + break; + case _AES_: + res = rtw_aes_decrypt(padapter, (u8 * )precv_frame); + break; + default: + break; + } + } + else if(prxattrib->bdecrypted==1 + && prxattrib->encrypt >0 + && (psecuritypriv->busetkipkey==1 || prxattrib->encrypt !=_TKIP_ ) + ) + { +#if 0 + if((prxstat->icv==1)&&(prxattrib->encrypt!=_AES_)) + { + psecuritypriv->hw_decrypted=_FALSE; + + RT_TRACE(_module_rtl871x_recv_c_,_drv_err_,("psecuritypriv->hw_decrypted=_FALSE")); + + rtw_free_recvframe(precv_frame, &padapter->recvpriv.free_recv_queue); + + return_packet=NULL; + + } + else +#endif + { + psecuritypriv->hw_decrypted=_TRUE; + #ifdef DBG_RX_DECRYPTOR + DBG_871X("prxstat->bdecrypted:%d, prxattrib->encrypt:%d, Setting psecuritypriv->hw_decrypted = %d\n" + , prxattrib->bdecrypted ,prxattrib->encrypt, psecuritypriv->hw_decrypted); + #endif + + } + } + else { + #ifdef DBG_RX_DECRYPTOR + DBG_871X("prxstat->bdecrypted:%d, prxattrib->encrypt:%d, psecuritypriv->hw_decrypted:%d\n" + , prxattrib->bdecrypted ,prxattrib->encrypt, psecuritypriv->hw_decrypted); + #endif + } + + if(res == _FAIL) + { + rtw_free_recvframe(return_packet,&padapter->recvpriv.free_recv_queue); + return_packet = NULL; + + } + //recvframe_chkmic(adapter, precv_frame); //move to recvframme_defrag function + +_func_exit_; + + return return_packet; + +} +//###set the security information in the recv_frame +union recv_frame * portctrl(_adapter *adapter,union recv_frame * precv_frame); +union recv_frame * portctrl(_adapter *adapter,union recv_frame * precv_frame) +{ + u8 *psta_addr,*ptr; + uint auth_alg; + struct recv_frame_hdr *pfhdr; + struct sta_info * psta; + struct sta_priv *pstapriv ; + union recv_frame * prtnframe; + u16 ether_type=0; + u16 eapol_type = 0x888e;//for Funia BD's WPA issue + struct rx_pkt_attrib *pattrib = & precv_frame->u.hdr.attrib; + +_func_enter_; + + pstapriv = &adapter->stapriv; + ptr = get_recvframe_data(precv_frame); + pfhdr = &precv_frame->u.hdr; + psta_addr = pfhdr->attrib.ta; + psta = rtw_get_stainfo(pstapriv, psta_addr); + + auth_alg = adapter->securitypriv.dot11AuthAlgrthm; + + RT_TRACE(_module_rtl871x_recv_c_,_drv_info_,("########portctrl:adapter->securitypriv.dot11AuthAlgrthm= 0x%d\n",adapter->securitypriv.dot11AuthAlgrthm)); + + if(auth_alg==2) + { + if ((psta!=NULL) && (psta->ieee8021x_blocked)) + { + //blocked + //only accept EAPOL frame + RT_TRACE(_module_rtl871x_recv_c_,_drv_info_,("########portctrl:psta->ieee8021x_blocked==1\n")); + + prtnframe=precv_frame; + + //get ether_type + ptr=ptr+pfhdr->attrib.hdrlen+pfhdr->attrib.iv_len+LLC_HEADER_SIZE; + _rtw_memcpy(ðer_type,ptr, 2); + ether_type= ntohs((unsigned short )ether_type); + + if (ether_type == eapol_type) { + prtnframe=precv_frame; + } + else { + //free this frame + rtw_free_recvframe(precv_frame, &adapter->recvpriv.free_recv_queue); + prtnframe=NULL; + } + } + else + { + //allowed + //check decryption status, and decrypt the frame if needed + RT_TRACE(_module_rtl871x_recv_c_,_drv_info_,("########portctrl:psta->ieee8021x_blocked==0\n")); + RT_TRACE(_module_rtl871x_recv_c_,_drv_info_,("portctrl:precv_frame->hdr.attrib.privacy=%x\n",precv_frame->u.hdr.attrib.privacy)); + + if(pattrib->bdecrypted==0) + RT_TRACE(_module_rtl871x_recv_c_,_drv_info_,("portctrl:prxstat->decrypted=%x\n", pattrib->bdecrypted)); + + prtnframe=precv_frame; + //check is the EAPOL frame or not (Rekey) + if(ether_type == eapol_type){ + + RT_TRACE(_module_rtl871x_recv_c_,_drv_err_,("########portctrl:ether_type == 0x888e\n")); + //check Rekey + + prtnframe=precv_frame; + } + else{ + RT_TRACE(_module_rtl871x_recv_c_,_drv_err_,("########portctrl:ether_type = 0x%.4x\n",ether_type)); + } + } + } + else + { + prtnframe=precv_frame; + } + +_func_exit_; + + return prtnframe; + +} + +sint recv_decache(union recv_frame *precv_frame, u8 bretry, struct stainfo_rxcache *prxcache); +sint recv_decache(union recv_frame *precv_frame, u8 bretry, struct stainfo_rxcache *prxcache) +{ + sint tid = precv_frame->u.hdr.attrib.priority; + + u16 seq_ctrl = ( (precv_frame->u.hdr.attrib.seq_num&0xffff) << 4) | + (precv_frame->u.hdr.attrib.frag_num & 0xf); + +_func_enter_; + + if(tid>15) + { + RT_TRACE(_module_rtl871x_recv_c_, _drv_notice_, ("recv_decache, (tid>15)! seq_ctrl=0x%x, tid=0x%x\n", seq_ctrl, tid)); + + return _FAIL; + } + + if(1)//if(bretry) + { + if(seq_ctrl == prxcache->tid_rxseq[tid]) + { + RT_TRACE(_module_rtl871x_recv_c_, _drv_notice_, ("recv_decache, seq_ctrl=0x%x, tid=0x%x, tid_rxseq=0x%x\n", seq_ctrl, tid, prxcache->tid_rxseq[tid])); + + return _FAIL; + } + } + + prxcache->tid_rxseq[tid] = seq_ctrl; + +_func_exit_; + + return _SUCCESS; + +} + +void process_pwrbit_data(_adapter *padapter, union recv_frame *precv_frame); +void process_pwrbit_data(_adapter *padapter, union recv_frame *precv_frame) +{ +#ifdef CONFIG_AP_MODE + unsigned char pwrbit; + u8 *ptr = precv_frame->u.hdr.rx_data; + struct rx_pkt_attrib *pattrib = &precv_frame->u.hdr.attrib; + struct sta_priv *pstapriv = &padapter->stapriv; + struct sta_info *psta=NULL; + + psta = rtw_get_stainfo(pstapriv, pattrib->src); + + pwrbit = GetPwrMgt(ptr); + + if(psta) + { + if(pwrbit) + { + if(!(psta->state & WIFI_SLEEP_STATE)) + { + //psta->state |= WIFI_SLEEP_STATE; + //pstapriv->sta_dz_bitmap |= BIT(psta->aid); + + stop_sta_xmit(padapter, psta); + + //DBG_871X("to sleep, sta_dz_bitmap=%x\n", pstapriv->sta_dz_bitmap); + } + } + else + { + if(psta->state & WIFI_SLEEP_STATE) + { + //psta->state ^= WIFI_SLEEP_STATE; + //pstapriv->sta_dz_bitmap &= ~BIT(psta->aid); + + wakeup_sta_to_xmit(padapter, psta); + + //DBG_871X("to wakeup, sta_dz_bitmap=%x\n", pstapriv->sta_dz_bitmap); + } + } + + } + +#endif +} + +void process_wmmps_data(_adapter *padapter, union recv_frame *precv_frame); +void process_wmmps_data(_adapter *padapter, union recv_frame *precv_frame) +{ +#ifdef CONFIG_AP_MODE + struct rx_pkt_attrib *pattrib = &precv_frame->u.hdr.attrib; + struct sta_priv *pstapriv = &padapter->stapriv; + struct sta_info *psta=NULL; + + psta = rtw_get_stainfo(pstapriv, pattrib->src); + + if(!psta) return; + +#ifdef CONFIG_TDLS + if( !(psta->tdls_sta_state & TDLS_LINKED_STATE ) ) + { +#endif //CONFIG_TDLS + + if(!psta->qos_option) + return; + + if(!(psta->qos_info&0xf)) + return; + +#ifdef CONFIG_TDLS + } +#endif //CONFIG_TDLS + + if(psta->state&WIFI_SLEEP_STATE) + { + u8 wmmps_ac=0; + + switch(pattrib->priority) + { + case 1: + case 2: + wmmps_ac = psta->uapsd_bk&BIT(1); + break; + case 4: + case 5: + wmmps_ac = psta->uapsd_vi&BIT(1); + break; + case 6: + case 7: + wmmps_ac = psta->uapsd_vo&BIT(1); + break; + case 0: + case 3: + default: + wmmps_ac = psta->uapsd_be&BIT(1); + break; + } + + if(wmmps_ac) + { + if(psta->sleepq_ac_len>0) + { + //process received triggered frame + xmit_delivery_enabled_frames(padapter, psta); + } + else + { + //issue one qos null frame with More data bit = 0 and the EOSP bit set (=1) + issue_qos_nulldata(padapter, psta->hwaddr, (u16)pattrib->priority, 0, 0); + } + } + + } + + +#endif + +} + +#ifdef CONFIG_TDLS +sint OnTDLS(_adapter *adapter, union recv_frame *precv_frame) +{ + struct rx_pkt_attrib *pattrib = & precv_frame->u.hdr.attrib; + sint ret = _SUCCESS; + u8 *paction = get_recvframe_data(precv_frame); + u8 category_field = 1; +#ifdef CONFIG_WFD + u8 WFA_OUI[3] = { 0x50, 0x6f, 0x9a }; +#endif //CONFIG_WFD + struct tdls_info *ptdlsinfo = &(adapter->tdlsinfo); + + //point to action field + paction+=pattrib->hdrlen + + pattrib->iv_len + + SNAP_SIZE + + ETH_TYPE_LEN + + PAYLOAD_TYPE_LEN + + category_field; + + if(ptdlsinfo->enable == 0) + { + DBG_871X("recv tdls frame, " + "but tdls haven't enabled\n"); + ret = _FAIL; + return ret; + } + + switch(*paction){ + case TDLS_SETUP_REQUEST: + DBG_871X("recv tdls setup request frame\n"); + ret=On_TDLS_Setup_Req(adapter, precv_frame); + break; + case TDLS_SETUP_RESPONSE: + DBG_871X("recv tdls setup response frame\n"); + ret=On_TDLS_Setup_Rsp(adapter, precv_frame); + break; + case TDLS_SETUP_CONFIRM: + DBG_871X("recv tdls setup confirm frame\n"); + ret=On_TDLS_Setup_Cfm(adapter, precv_frame); + break; + case TDLS_TEARDOWN: + DBG_871X("recv tdls teardown, free sta_info\n"); + ret=On_TDLS_Teardown(adapter, precv_frame); + break; + case TDLS_DISCOVERY_REQUEST: + DBG_871X("recv tdls discovery request frame\n"); + ret=On_TDLS_Dis_Req(adapter, precv_frame); + break; + case TDLS_PEER_TRAFFIC_RESPONSE: + DBG_871X("recv tdls peer traffic response frame\n"); + ret=On_TDLS_Peer_Traffic_Rsp(adapter, precv_frame); + break; + case TDLS_CHANNEL_SWITCH_REQUEST: + DBG_871X("recv tdls channel switch request frame\n"); + ret=On_TDLS_Ch_Switch_Req(adapter, precv_frame); + break; + case TDLS_CHANNEL_SWITCH_RESPONSE: + DBG_871X("recv tdls channel switch response frame\n"); + ret=On_TDLS_Ch_Switch_Rsp(adapter, precv_frame); + break; +#ifdef CONFIG_WFD + case 0x50: //First byte of WFA OUI + if( _rtw_memcmp(WFA_OUI, (paction), 3) ) + { + if( *(paction + 3) == 0x04) //Probe request frame + { + //WFDTDLS: for sigma test, do not setup direct link automatically + ptdlsinfo->dev_discovered = 1; + DBG_871X("recv tunneled probe request frame\n"); + issue_tunneled_probe_rsp(adapter, precv_frame); + } + if( *(paction + 3) == 0x05) //Probe response frame + { + //WFDTDLS: for sigma test, do not setup direct link automatically + ptdlsinfo->dev_discovered = 1; + DBG_871X("recv tunneled probe response frame\n"); + } + } + break; +#endif //CONFIG_WFD + default: + DBG_871X("receive TDLS frame but not supported\n"); + ret=_FAIL; + break; + } + +exit: + return ret; + +} +#endif //CONFIG_TDLS + +void count_rx_stats(_adapter *padapter, union recv_frame *prframe, struct sta_info*sta); +void count_rx_stats(_adapter *padapter, union recv_frame *prframe, struct sta_info*sta) +{ + int sz; + struct sta_info *psta = NULL; + struct stainfo_stats *pstats = NULL; + struct rx_pkt_attrib *pattrib = & prframe->u.hdr.attrib; + struct recv_priv *precvpriv = &padapter->recvpriv; + + sz = get_recvframe_len(prframe); + precvpriv->rx_bytes += sz; + + padapter->mlmepriv.LinkDetectInfo.NumRxOkInPeriod++; + + if( (!MacAddr_isBcst(pattrib->dst)) && (!IS_MCAST(pattrib->dst))){ + padapter->mlmepriv.LinkDetectInfo.NumRxUnicastOkInPeriod++; + } + + if(sta) + psta = sta; + else + psta = prframe->u.hdr.psta; + + if(psta) + { + pstats = &psta->sta_stats; + + pstats->rx_data_pkts++; + pstats->rx_bytes += sz; + } + +} + +sint sta2sta_data_frame( + _adapter *adapter, + union recv_frame *precv_frame, + struct sta_info**psta +); +sint sta2sta_data_frame( + _adapter *adapter, + union recv_frame *precv_frame, + struct sta_info**psta +) +{ + u8 *ptr = precv_frame->u.hdr.rx_data; + sint ret = _SUCCESS; + struct rx_pkt_attrib *pattrib = & precv_frame->u.hdr.attrib; + struct sta_priv *pstapriv = &adapter->stapriv; + struct mlme_priv *pmlmepriv = &adapter->mlmepriv; + u8 *mybssid = get_bssid(pmlmepriv); + u8 *myhwaddr = myid(&adapter->eeprompriv); + u8 * sta_addr = NULL; + sint bmcast = IS_MCAST(pattrib->dst); + +#ifdef CONFIG_TDLS + struct tdls_info *ptdlsinfo = &adapter->tdlsinfo; + struct sta_info *ptdls_sta=NULL; + u8 *psnap_type=ptr+pattrib->hdrlen + pattrib->iv_len+SNAP_SIZE; + u8 *pframe_body = psnap_type + ETH_TYPE_LEN + PAYLOAD_TYPE_LEN; +#endif //CONFIG_TDLS + +_func_enter_; + + if ((check_fwstate(pmlmepriv, WIFI_ADHOC_STATE) == _TRUE) || + (check_fwstate(pmlmepriv, WIFI_ADHOC_MASTER_STATE) == _TRUE)) + { + + // filter packets that SA is myself or multicast or broadcast + if (_rtw_memcmp(myhwaddr, pattrib->src, ETH_ALEN)){ + RT_TRACE(_module_rtl871x_recv_c_,_drv_err_,(" SA==myself \n")); + ret= _FAIL; + goto exit; + } + + if( (!_rtw_memcmp(myhwaddr, pattrib->dst, ETH_ALEN)) && (!bmcast) ){ + ret= _FAIL; + goto exit; + } + + if( _rtw_memcmp(pattrib->bssid, "\x0\x0\x0\x0\x0\x0", ETH_ALEN) || + _rtw_memcmp(mybssid, "\x0\x0\x0\x0\x0\x0", ETH_ALEN) || + (!_rtw_memcmp(pattrib->bssid, mybssid, ETH_ALEN)) ) { + ret= _FAIL; + goto exit; + } + + sta_addr = pattrib->src; + + } + else if(check_fwstate(pmlmepriv, WIFI_STATION_STATE) == _TRUE) + { +#ifdef CONFIG_TDLS + //direct link data transfer + if(ptdlsinfo->setup_state == TDLS_LINKED_STATE){ + ptdls_sta = rtw_get_stainfo(pstapriv, pattrib->src); + if(ptdls_sta==NULL) + { + ret=_FAIL; + goto exit; + } + else if(ptdls_sta->tdls_sta_state&TDLS_LINKED_STATE) + { + //drop QoS-SubType Data, including QoS NULL, excluding QoS-Data + if( (GetFrameSubType(ptr) & WIFI_QOS_DATA_TYPE )== WIFI_QOS_DATA_TYPE) + { + if(GetFrameSubType(ptr)&(BIT(4)|BIT(5)|BIT(6))) + { + DBG_871X("drop QoS-Sybtype Data\n"); + ret= _FAIL; + goto exit; + } + } + // filter packets that SA is myself or multicast or broadcast + if (_rtw_memcmp(myhwaddr, pattrib->src, ETH_ALEN)){ + ret= _FAIL; + goto exit; + } + // da should be for me + if((!_rtw_memcmp(myhwaddr, pattrib->dst, ETH_ALEN))&& (!bmcast)) + { + ret= _FAIL; + goto exit; + } + // check BSSID + if( _rtw_memcmp(pattrib->bssid, "\x0\x0\x0\x0\x0\x0", ETH_ALEN) || + _rtw_memcmp(mybssid, "\x0\x0\x0\x0\x0\x0", ETH_ALEN) || + (!_rtw_memcmp(pattrib->bssid, mybssid, ETH_ALEN)) ) + { + ret= _FAIL; + goto exit; + } + + //process UAPSD tdls sta + process_pwrbit_data(adapter, precv_frame); + + // if NULL-frame, check pwrbit + if ((GetFrameSubType(ptr)) == WIFI_DATA_NULL) + { + //NULL-frame with pwrbit=1, buffer_STA should buffer frames for sleep_STA + if(GetPwrMgt(ptr)) + { + DBG_871X("TDLS: recv peer null frame with pwr bit 1\n"); + ptdls_sta->tdls_sta_state|=TDLS_PEER_SLEEP_STATE; + } + // it would be triggered when we are off channel and receiving NULL DATA + // we can confirm that peer STA is at off channel + else if(ptdls_sta->tdls_sta_state&TDLS_CH_SWITCH_ON_STATE) + { + if((ptdls_sta->tdls_sta_state & TDLS_PEER_AT_OFF_STATE) != TDLS_PEER_AT_OFF_STATE) + { + issue_nulldata_to_TDLS_peer_STA(adapter, ptdls_sta, 0); + ptdls_sta->tdls_sta_state |= TDLS_PEER_AT_OFF_STATE; + On_TDLS_Peer_Traffic_Rsp(adapter, precv_frame); + } + } + + ret= _FAIL; + goto exit; + } + //receive some of all TDLS management frames, process it at ON_TDLS + if((_rtw_memcmp(psnap_type, SNAP_ETH_TYPE_TDLS, 2))){ + ret= OnTDLS(adapter, precv_frame); + goto exit; + } + + } + + sta_addr = pattrib->src; + + } + else +#endif //CONFIG_TDLS + { + // For Station mode, sa and bssid should always be BSSID, and DA is my mac-address + if(!_rtw_memcmp(pattrib->bssid, pattrib->src, ETH_ALEN) ) + { + RT_TRACE(_module_rtl871x_recv_c_,_drv_err_,("bssid != TA under STATION_MODE; drop pkt\n")); + ret= _FAIL; + goto exit; + } + + sta_addr = pattrib->bssid; + } + } + else if(check_fwstate(pmlmepriv, WIFI_AP_STATE) == _TRUE) + { + if (bmcast) + { + // For AP mode, if DA == MCAST, then BSSID should be also MCAST + if (!IS_MCAST(pattrib->bssid)){ + ret= _FAIL; + goto exit; + } + } + else // not mc-frame + { + // For AP mode, if DA is non-MCAST, then it must be BSSID, and bssid == BSSID + if(!_rtw_memcmp(pattrib->bssid, pattrib->dst, ETH_ALEN)) { + ret= _FAIL; + goto exit; + } + + sta_addr = pattrib->src; + } + + } + else if(check_fwstate(pmlmepriv, WIFI_MP_STATE) == _TRUE) + { + _rtw_memcpy(pattrib->dst, GetAddr1Ptr(ptr), ETH_ALEN); + _rtw_memcpy(pattrib->src, GetAddr2Ptr(ptr), ETH_ALEN); + _rtw_memcpy(pattrib->bssid, GetAddr3Ptr(ptr), ETH_ALEN); + _rtw_memcpy(pattrib->ra, pattrib->dst, ETH_ALEN); + _rtw_memcpy(pattrib->ta, pattrib->src, ETH_ALEN); + + sta_addr = mybssid; + } + else + { + ret = _FAIL; + } + + + + if(bmcast) + *psta = rtw_get_bcmc_stainfo(adapter); + else + *psta = rtw_get_stainfo(pstapriv, sta_addr); // get ap_info + +#ifdef CONFIG_TDLS + if(ptdls_sta != NULL) + *psta = ptdls_sta; +#endif //CONFIG_TDLS + + + if (*psta == NULL) { + RT_TRACE(_module_rtl871x_recv_c_,_drv_err_,("can't get psta under sta2sta_data_frame ; drop pkt\n")); +#ifdef CONFIG_MP_INCLUDED + if(check_fwstate(pmlmepriv, WIFI_MP_STATE) == _TRUE) + adapter->mppriv.rx_pktloss++; +#endif + ret= _FAIL; + goto exit; + } + +exit: +_func_exit_; + return ret; + +} + +sint ap2sta_data_frame( + _adapter *adapter, + union recv_frame *precv_frame, + struct sta_info**psta ); +sint ap2sta_data_frame( + _adapter *adapter, + union recv_frame *precv_frame, + struct sta_info**psta ) +{ + u8 *ptr = precv_frame->u.hdr.rx_data; + struct rx_pkt_attrib *pattrib = & precv_frame->u.hdr.attrib; + sint ret = _SUCCESS; + struct sta_priv *pstapriv = &adapter->stapriv; + struct mlme_priv *pmlmepriv = &adapter->mlmepriv; + u8 *mybssid = get_bssid(pmlmepriv); + u8 *myhwaddr = myid(&adapter->eeprompriv); + sint bmcast = IS_MCAST(pattrib->dst); + +_func_enter_; + + if ((check_fwstate(pmlmepriv, WIFI_STATION_STATE) == _TRUE) + && (check_fwstate(pmlmepriv, _FW_LINKED) == _TRUE + || check_fwstate(pmlmepriv, _FW_UNDER_LINKING) == _TRUE ) + ) + { + + // filter packets that SA is myself or multicast or broadcast + if (_rtw_memcmp(myhwaddr, pattrib->src, ETH_ALEN)){ + RT_TRACE(_module_rtl871x_recv_c_,_drv_err_,(" SA==myself \n")); + #ifdef DBG_RX_DROP_FRAME + DBG_871X("DBG_RX_DROP_FRAME %s SA=%x:%x:%x:%x:%x:%x, myhwaddr= %x:%x:%x:%x:%x:%x\n", __FUNCTION__, + pattrib->src[0], pattrib->src[1], pattrib->src[2], + pattrib->src[3], pattrib->src[4], pattrib->src[5], + *(myhwaddr), *(myhwaddr+1), *(myhwaddr+2), + *(myhwaddr+3), *(myhwaddr+4), *(myhwaddr+5)); + #endif + ret= _FAIL; + goto exit; + } + + // da should be for me + if((!_rtw_memcmp(myhwaddr, pattrib->dst, ETH_ALEN))&& (!bmcast)) + { + RT_TRACE(_module_rtl871x_recv_c_,_drv_info_, + (" ap2sta_data_frame: compare DA fail; DA="MAC_FMT"\n", MAC_ARG(pattrib->dst))); + #ifdef DBG_RX_DROP_FRAME + DBG_871X("DBG_RX_DROP_FRAME %s DA="MAC_FMT"\n", __func__, MAC_ARG(pattrib->dst)); + #endif + ret= _FAIL; + goto exit; + } + + + // check BSSID + if( _rtw_memcmp(pattrib->bssid, "\x0\x0\x0\x0\x0\x0", ETH_ALEN) || + _rtw_memcmp(mybssid, "\x0\x0\x0\x0\x0\x0", ETH_ALEN) || + (!_rtw_memcmp(pattrib->bssid, mybssid, ETH_ALEN)) ) + { + RT_TRACE(_module_rtl871x_recv_c_,_drv_info_, + (" ap2sta_data_frame: compare BSSID fail ; BSSID="MAC_FMT"\n", MAC_ARG(pattrib->bssid))); + RT_TRACE(_module_rtl871x_recv_c_,_drv_info_,("mybssid="MAC_FMT"\n", MAC_ARG(mybssid))); + #ifdef DBG_RX_DROP_FRAME + DBG_871X("DBG_RX_DROP_FRAME %s BSSID="MAC_FMT", mybssid="MAC_FMT"\n", + __FUNCTION__, MAC_ARG(pattrib->bssid), MAC_ARG(mybssid)); + DBG_871X( "this adapter = %d, buddy adapter = %d\n", adapter->adapter_type, adapter->pbuddy_adapter->adapter_type ); + #endif + + if(!bmcast) + { + DBG_871X("issue_deauth to the nonassociated ap=" MAC_FMT " for the reason(7)\n", MAC_ARG(pattrib->bssid)); + issue_deauth(adapter, pattrib->bssid, WLAN_REASON_CLASS3_FRAME_FROM_NONASSOC_STA); + } + + ret= _FAIL; + goto exit; + } + + if(bmcast) + *psta = rtw_get_bcmc_stainfo(adapter); + else + *psta = rtw_get_stainfo(pstapriv, pattrib->bssid); // get ap_info + + if (*psta == NULL) { + RT_TRACE(_module_rtl871x_recv_c_,_drv_err_,("ap2sta: can't get psta under STATION_MODE ; drop pkt\n")); + #ifdef DBG_RX_DROP_FRAME + DBG_871X("DBG_RX_DROP_FRAME %s can't get psta under STATION_MODE ; drop pkt\n", __FUNCTION__); + #endif + ret= _FAIL; + goto exit; + } + + if ((GetFrameSubType(ptr) & WIFI_QOS_DATA_TYPE) == WIFI_QOS_DATA_TYPE) { + } + + if (GetFrameSubType(ptr) & BIT(6)) { + /* No data, will not indicate to upper layer, temporily count it here */ + count_rx_stats(adapter, precv_frame, *psta); + ret = RTW_RX_HANDLED; + goto exit; + } + + } + else if ((check_fwstate(pmlmepriv, WIFI_MP_STATE) == _TRUE) && + (check_fwstate(pmlmepriv, _FW_LINKED) == _TRUE) ) + { + _rtw_memcpy(pattrib->dst, GetAddr1Ptr(ptr), ETH_ALEN); + _rtw_memcpy(pattrib->src, GetAddr2Ptr(ptr), ETH_ALEN); + _rtw_memcpy(pattrib->bssid, GetAddr3Ptr(ptr), ETH_ALEN); + _rtw_memcpy(pattrib->ra, pattrib->dst, ETH_ALEN); + _rtw_memcpy(pattrib->ta, pattrib->src, ETH_ALEN); + + // + _rtw_memcpy(pattrib->bssid, mybssid, ETH_ALEN); + + + *psta = rtw_get_stainfo(pstapriv, pattrib->bssid); // get sta_info + if (*psta == NULL) { + RT_TRACE(_module_rtl871x_recv_c_,_drv_err_,("can't get psta under MP_MODE ; drop pkt\n")); + #ifdef DBG_RX_DROP_FRAME + DBG_871X("DBG_RX_DROP_FRAME %s can't get psta under WIFI_MP_STATE ; drop pkt\n", __FUNCTION__); + #endif + ret= _FAIL; + goto exit; + } + + + } + else if (check_fwstate(pmlmepriv, WIFI_AP_STATE) == _TRUE) + { + /* Special case */ + ret = RTW_RX_HANDLED; + goto exit; + } + else + { + if(_rtw_memcmp(myhwaddr, pattrib->dst, ETH_ALEN)&& (!bmcast)) + { + *psta = rtw_get_stainfo(pstapriv, pattrib->bssid); // get sta_info + if (*psta == NULL) + { + DBG_871X("issue_deauth to the ap=" MAC_FMT " for the reason(7)\n", MAC_ARG(pattrib->bssid)); + + issue_deauth(adapter, pattrib->bssid, WLAN_REASON_CLASS3_FRAME_FROM_NONASSOC_STA); + } + } + + ret = _FAIL; + #ifdef DBG_RX_DROP_FRAME + DBG_871X("DBG_RX_DROP_FRAME %s fw_state:0x%x\n", __FUNCTION__, get_fwstate(pmlmepriv)); + #endif + } + +exit: + +_func_exit_; + + return ret; + +} + +sint sta2ap_data_frame( + _adapter *adapter, + union recv_frame *precv_frame, + struct sta_info**psta ); +sint sta2ap_data_frame( + _adapter *adapter, + union recv_frame *precv_frame, + struct sta_info**psta ) +{ + u8 *ptr = precv_frame->u.hdr.rx_data; + struct rx_pkt_attrib *pattrib = & precv_frame->u.hdr.attrib; + struct sta_priv *pstapriv = &adapter->stapriv; + struct mlme_priv *pmlmepriv = &adapter->mlmepriv; + unsigned char *mybssid = get_bssid(pmlmepriv); + sint ret=_SUCCESS; + +_func_enter_; + + if (check_fwstate(pmlmepriv, WIFI_AP_STATE) == _TRUE) + { + //For AP mode, RA=BSSID, TX=STA(SRC_ADDR), A3=DST_ADDR + if(!_rtw_memcmp(pattrib->bssid, mybssid, ETH_ALEN)) + { + ret= _FAIL; + goto exit; + } + + *psta = rtw_get_stainfo(pstapriv, pattrib->src); + if (*psta == NULL) + { + RT_TRACE(_module_rtl871x_recv_c_,_drv_err_,("can't get psta under AP_MODE; drop pkt\n")); + DBG_871X("issue_deauth to sta=" MAC_FMT " for the reason(7)\n", MAC_ARG(pattrib->src)); + + issue_deauth(adapter, pattrib->src, WLAN_REASON_CLASS3_FRAME_FROM_NONASSOC_STA); + + ret = RTW_RX_HANDLED; + goto exit; + } + + process_pwrbit_data(adapter, precv_frame); + + if ((GetFrameSubType(ptr) & WIFI_QOS_DATA_TYPE) == WIFI_QOS_DATA_TYPE) { + process_wmmps_data(adapter, precv_frame); + } + + if (GetFrameSubType(ptr) & BIT(6)) { + /* No data, will not indicate to upper layer, temporily count it here */ + count_rx_stats(adapter, precv_frame, *psta); + ret = RTW_RX_HANDLED; + goto exit; + } + } + else { + u8 *myhwaddr = myid(&adapter->eeprompriv); + if (!_rtw_memcmp(pattrib->ra, myhwaddr, ETH_ALEN)) { + ret = RTW_RX_HANDLED; + goto exit; + } + DBG_871X("issue_deauth to sta=" MAC_FMT " for the reason(7)\n", MAC_ARG(pattrib->src)); + issue_deauth(adapter, pattrib->src, WLAN_REASON_CLASS3_FRAME_FROM_NONASSOC_STA); + ret = RTW_RX_HANDLED; + goto exit; + } + +exit: + +_func_exit_; + + return ret; + +} + +sint validate_recv_ctrl_frame(_adapter *padapter, union recv_frame *precv_frame); +sint validate_recv_ctrl_frame(_adapter *padapter, union recv_frame *precv_frame) +{ +#ifdef CONFIG_AP_MODE + struct rx_pkt_attrib *pattrib = &precv_frame->u.hdr.attrib; + struct sta_priv *pstapriv = &padapter->stapriv; + u8 *pframe = precv_frame->u.hdr.rx_data; + //uint len = precv_frame->u.hdr.len; + + //DBG_871X("+validate_recv_ctrl_frame\n"); + + if (GetFrameType(pframe) != WIFI_CTRL_TYPE) + { + return _FAIL; + } + + //receive the frames that ra(a1) is my address + if (!_rtw_memcmp(GetAddr1Ptr(pframe), myid(&padapter->eeprompriv), ETH_ALEN)) + { + return _FAIL; + } + + //only handle ps-poll + if(GetFrameSubType(pframe) == WIFI_PSPOLL) + { + u16 aid; + u8 wmmps_ac=0; + struct sta_info *psta=NULL; + + aid = GetAid(pframe); + psta = rtw_get_stainfo(pstapriv, GetAddr2Ptr(pframe)); + + if((psta==NULL) || (psta->aid!=aid)) + { + return _FAIL; + } + + //for rx pkt statistics + psta->sta_stats.rx_ctrl_pkts++; + + switch(pattrib->priority) + { + case 1: + case 2: + wmmps_ac = psta->uapsd_bk&BIT(0); + break; + case 4: + case 5: + wmmps_ac = psta->uapsd_vi&BIT(0); + break; + case 6: + case 7: + wmmps_ac = psta->uapsd_vo&BIT(0); + break; + case 0: + case 3: + default: + wmmps_ac = psta->uapsd_be&BIT(0); + break; + } + + if(wmmps_ac) + return _FAIL; + + if(psta->state & WIFI_STA_ALIVE_CHK_STATE) + { + DBG_871X("%s alive check-rx ps-poll\n", __func__); + psta->expire_to = pstapriv->expire_to; + psta->state ^= WIFI_STA_ALIVE_CHK_STATE; + } + + if((psta->state&WIFI_SLEEP_STATE) && (pstapriv->sta_dz_bitmap&BIT(psta->aid))) + { + _irqL irqL; + _list *xmitframe_plist, *xmitframe_phead; + struct xmit_frame *pxmitframe=NULL; + struct xmit_priv *pxmitpriv = &padapter->xmitpriv; + + //_enter_critical_bh(&psta->sleep_q.lock, &irqL); + _enter_critical_bh(&pxmitpriv->lock, &irqL); + + xmitframe_phead = get_list_head(&psta->sleep_q); + xmitframe_plist = get_next(xmitframe_phead); + + if ((rtw_end_of_queue_search(xmitframe_phead, xmitframe_plist)) == _FALSE) + { + pxmitframe = LIST_CONTAINOR(xmitframe_plist, struct xmit_frame, list); + + xmitframe_plist = get_next(xmitframe_plist); + + rtw_list_delete(&pxmitframe->list); + + psta->sleepq_len--; + + if(psta->sleepq_len>0) + pxmitframe->attrib.mdata = 1; + else + pxmitframe->attrib.mdata = 0; + + pxmitframe->attrib.triggered = 1; + + //DBG_871X("handling ps-poll, q_len=%d, tim=%x\n", psta->sleepq_len, pstapriv->tim_bitmap); + +#if 0 + _exit_critical_bh(&psta->sleep_q.lock, &irqL); + if(rtw_hal_xmit(padapter, pxmitframe) == _TRUE) + { + rtw_os_xmit_complete(padapter, pxmitframe); + } + _enter_critical_bh(&psta->sleep_q.lock, &irqL); +#endif + rtw_hal_xmitframe_enqueue(padapter, pxmitframe); + + if(psta->sleepq_len==0) + { + pstapriv->tim_bitmap &= ~BIT(psta->aid); + + //DBG_871X("after handling ps-poll, tim=%x\n", pstapriv->tim_bitmap); + + //upate BCN for TIM IE + //update_BCNTIM(padapter); + update_beacon(padapter, _TIM_IE_, NULL, _FALSE); + } + + //_exit_critical_bh(&psta->sleep_q.lock, &irqL); + _exit_critical_bh(&pxmitpriv->lock, &irqL); + + } + else + { + //_exit_critical_bh(&psta->sleep_q.lock, &irqL); + _exit_critical_bh(&pxmitpriv->lock, &irqL); + + //DBG_871X("no buffered packets to xmit\n"); + if(pstapriv->tim_bitmap&BIT(psta->aid)) + { + if(psta->sleepq_len==0) + { + DBG_871X("no buffered packets to xmit\n"); + + //issue nulldata with More data bit = 0 to indicate we have no buffered packets + issue_nulldata(padapter, psta->hwaddr, 0, 0, 0); + } + else + { + DBG_871X("error!psta->sleepq_len=%d\n", psta->sleepq_len); + psta->sleepq_len=0; + } + + pstapriv->tim_bitmap &= ~BIT(psta->aid); + + //upate BCN for TIM IE + //update_BCNTIM(padapter); + update_beacon(padapter, _TIM_IE_, NULL, _FALSE); + } + + } + + } + + } + +#endif + + return _FAIL; + +} + +union recv_frame* recvframe_chk_defrag(PADAPTER padapter, union recv_frame *precv_frame); +sint validate_recv_mgnt_frame(PADAPTER padapter, union recv_frame *precv_frame); +sint validate_recv_mgnt_frame(PADAPTER padapter, union recv_frame *precv_frame) +{ + //struct mlme_priv *pmlmepriv = &adapter->mlmepriv; + + RT_TRACE(_module_rtl871x_recv_c_, _drv_info_, ("+validate_recv_mgnt_frame\n")); + +#if 0 + if(check_fwstate(pmlmepriv, WIFI_AP_STATE) == _TRUE) + { +#ifdef CONFIG_NATIVEAP_MLME + mgt_dispatcher(padapter, precv_frame); +#else + rtw_hostapd_mlme_rx(padapter, precv_frame); +#endif + } + else + { + mgt_dispatcher(padapter, precv_frame); + } +#endif + + precv_frame = recvframe_chk_defrag(padapter, precv_frame); + if (precv_frame == NULL) { + RT_TRACE(_module_rtl871x_recv_c_, _drv_notice_,("%s: fragment packet\n",__FUNCTION__)); + return _SUCCESS; + } + + { + //for rx pkt statistics + struct sta_info *psta = rtw_get_stainfo(&padapter->stapriv, GetAddr2Ptr(precv_frame->u.hdr.rx_data)); + if (psta) { + psta->sta_stats.rx_mgnt_pkts++; + if (GetFrameSubType(precv_frame->u.hdr.rx_data) == WIFI_BEACON) + psta->sta_stats.rx_beacon_pkts++; + else if (GetFrameSubType(precv_frame->u.hdr.rx_data) == WIFI_PROBEREQ) + psta->sta_stats.rx_probereq_pkts++; + else if (GetFrameSubType(precv_frame->u.hdr.rx_data) == WIFI_PROBERSP) { + if (_rtw_memcmp(padapter->eeprompriv.mac_addr, GetAddr1Ptr(precv_frame->u.hdr.rx_data), ETH_ALEN) == _TRUE) + psta->sta_stats.rx_probersp_pkts++; + else if (is_broadcast_mac_addr(GetAddr1Ptr(precv_frame->u.hdr.rx_data)) + || is_multicast_mac_addr(GetAddr1Ptr(precv_frame->u.hdr.rx_data))) + psta->sta_stats.rx_probersp_bm_pkts++; + else + psta->sta_stats.rx_probersp_uo_pkts++; + } + } + } + +#ifdef CONFIG_INTEL_PROXIM + if(padapter->proximity.proxim_on==_TRUE) + { + struct rx_pkt_attrib * pattrib=&precv_frame->u.hdr.attrib; + struct recv_stat* prxstat=( struct recv_stat * ) precv_frame->u.hdr.rx_head ; + u8 * pda,*psa,*pbssid,*ptr; + ptr=precv_frame->u.hdr.rx_data; + pda = get_da(ptr); + psa = get_sa(ptr); + pbssid = get_hdr_bssid(ptr); + + + _rtw_memcpy(pattrib->dst, pda, ETH_ALEN); + _rtw_memcpy(pattrib->src, psa, ETH_ALEN); + + _rtw_memcpy(pattrib->bssid, pbssid, ETH_ALEN); + + switch(pattrib->to_fr_ds) + { + case 0: + _rtw_memcpy(pattrib->ra, pda, ETH_ALEN); + _rtw_memcpy(pattrib->ta, psa, ETH_ALEN); + break; + + case 1: + _rtw_memcpy(pattrib->ra, pda, ETH_ALEN); + _rtw_memcpy(pattrib->ta, pbssid, ETH_ALEN); + break; + + case 2: + _rtw_memcpy(pattrib->ra, pbssid, ETH_ALEN); + _rtw_memcpy(pattrib->ta, psa, ETH_ALEN); + break; + + case 3: + _rtw_memcpy(pattrib->ra, GetAddr1Ptr(ptr), ETH_ALEN); + _rtw_memcpy(pattrib->ta, GetAddr2Ptr(ptr), ETH_ALEN); + RT_TRACE(_module_rtl871x_recv_c_,_drv_err_,(" case 3\n")); + break; + + default: + break; + + } + pattrib->priority=0; + pattrib->hdrlen = pattrib->to_fr_ds==3 ? 30 : 24; + + padapter->proximity.proxim_rx(padapter,precv_frame); + } +#endif + mgt_dispatcher(padapter, precv_frame); + + return _SUCCESS; + +} + +sint validate_recv_data_frame(_adapter *adapter, union recv_frame *precv_frame); +sint validate_recv_data_frame(_adapter *adapter, union recv_frame *precv_frame) +{ + u8 bretry; + u8 *psa, *pda, *pbssid; + struct sta_info *psta = NULL; + u8 *ptr = precv_frame->u.hdr.rx_data; + struct rx_pkt_attrib *pattrib = & precv_frame->u.hdr.attrib; + struct security_priv *psecuritypriv = &adapter->securitypriv; + sint ret = _SUCCESS; +#ifdef CONFIG_TDLS + struct tdls_info *ptdlsinfo = &adapter->tdlsinfo; +#endif //CONFIG_TDLS + +_func_enter_; + + bretry = GetRetry(ptr); + pda = get_da(ptr); + psa = get_sa(ptr); + pbssid = get_hdr_bssid(ptr); + + if(pbssid == NULL){ + ret= _FAIL; + goto exit; + } + + _rtw_memcpy(pattrib->dst, pda, ETH_ALEN); + _rtw_memcpy(pattrib->src, psa, ETH_ALEN); + + _rtw_memcpy(pattrib->bssid, pbssid, ETH_ALEN); + + switch(pattrib->to_fr_ds) + { + case 0: + _rtw_memcpy(pattrib->ra, pda, ETH_ALEN); + _rtw_memcpy(pattrib->ta, psa, ETH_ALEN); + ret = sta2sta_data_frame(adapter, precv_frame, &psta); + break; + + case 1: + _rtw_memcpy(pattrib->ra, pda, ETH_ALEN); + _rtw_memcpy(pattrib->ta, pbssid, ETH_ALEN); + ret = ap2sta_data_frame(adapter, precv_frame, &psta); + break; + + case 2: + _rtw_memcpy(pattrib->ra, pbssid, ETH_ALEN); + _rtw_memcpy(pattrib->ta, psa, ETH_ALEN); + ret = sta2ap_data_frame(adapter, precv_frame, &psta); + break; + + case 3: + _rtw_memcpy(pattrib->ra, GetAddr1Ptr(ptr), ETH_ALEN); + _rtw_memcpy(pattrib->ta, GetAddr2Ptr(ptr), ETH_ALEN); + ret =_FAIL; + RT_TRACE(_module_rtl871x_recv_c_,_drv_err_,(" case 3\n")); + break; + + default: + ret =_FAIL; + break; + + } + + if(ret ==_FAIL){ + #ifdef DBG_RX_DROP_FRAME + DBG_871X("DBG_RX_DROP_FRAME %s case:%d, res:%d\n", __FUNCTION__, pattrib->to_fr_ds, ret); + #endif + goto exit; + } else if (ret == RTW_RX_HANDLED) { + goto exit; + } + + + if(psta==NULL){ + RT_TRACE(_module_rtl871x_recv_c_,_drv_err_,(" after to_fr_ds_chk; psta==NULL \n")); + ret= _FAIL; + goto exit; + } + + //psta->rssi = prxcmd->rssi; + //psta->signal_quality= prxcmd->sq; + precv_frame->u.hdr.psta = psta; + + + pattrib->amsdu=0; + pattrib->ack_policy = 0; + //parsing QC field + if(pattrib->qos == 1) + { + pattrib->priority = GetPriority((ptr + 24)); + pattrib->ack_policy = GetAckpolicy((ptr + 24)); + pattrib->amsdu = GetAMsdu((ptr + 24)); + pattrib->hdrlen = pattrib->to_fr_ds==3 ? 32 : 26; + + if(pattrib->priority!=0 && pattrib->priority!=3) + { + adapter->recvpriv.bIsAnyNonBEPkts = _TRUE; + } + } + else + { + pattrib->priority=0; + pattrib->hdrlen = pattrib->to_fr_ds==3 ? 30 : 24; + } + + + if(pattrib->order)//HT-CTRL 11n + { + pattrib->hdrlen += 4; + } + + precv_frame->u.hdr.preorder_ctrl = &psta->recvreorder_ctrl[pattrib->priority]; + + // decache, drop duplicate recv packets + if(recv_decache(precv_frame, bretry, &psta->sta_recvpriv.rxcache) == _FAIL) + { + RT_TRACE(_module_rtl871x_recv_c_,_drv_err_,("decache : drop pkt\n")); + ret= _FAIL; + goto exit; + } + +#if 0 + if(psta->tdls_sta_state & TDLS_LINKED_STATE ) + { + if(psta->dot118021XPrivacy==_AES_) + pattrib->encrypt=psta->dot118021XPrivacy; + } +#endif //CONFIG_TDLS + + if(pattrib->privacy){ + + RT_TRACE(_module_rtl871x_recv_c_,_drv_info_,("validate_recv_data_frame:pattrib->privacy=%x\n", pattrib->privacy)); + RT_TRACE(_module_rtl871x_recv_c_,_drv_info_,("\n ^^^^^^^^^^^IS_MCAST(pattrib->ra(0x%02x))=%d^^^^^^^^^^^^^^^6\n", pattrib->ra[0],IS_MCAST(pattrib->ra))); + +#ifdef CONFIG_TDLS + if((psta->tdls_sta_state & TDLS_LINKED_STATE) && (psta->dot118021XPrivacy==_AES_)) + { + pattrib->encrypt=psta->dot118021XPrivacy; + } + else +#endif //CONFIG_TDLS + GET_ENCRY_ALGO(psecuritypriv, psta, pattrib->encrypt, IS_MCAST(pattrib->ra)); + + RT_TRACE(_module_rtl871x_recv_c_,_drv_info_,("\n pattrib->encrypt=%d\n",pattrib->encrypt)); + + SET_ICE_IV_LEN(pattrib->iv_len, pattrib->icv_len, pattrib->encrypt); + } + else + { + pattrib->encrypt = 0; + pattrib->iv_len = pattrib->icv_len = 0; + } + +exit: + +_func_exit_; + + return ret; +} + +#ifdef CONFIG_IEEE80211W +static sint validate_80211w_mgmt(_adapter *adapter, union recv_frame *precv_frame) +{ + struct mlme_priv *pmlmepriv = &adapter->mlmepriv; + struct rx_pkt_attrib *pattrib = & precv_frame->u.hdr.attrib; + u8 *ptr = precv_frame->u.hdr.rx_data; + u8 type; + u8 subtype; + + type = GetFrameType(ptr); + subtype = GetFrameSubType(ptr); //bit(7)~bit(2) + + //only support station mode + if(check_fwstate(pmlmepriv, WIFI_STATION_STATE) && check_fwstate(pmlmepriv, _FW_LINKED) + && adapter->securitypriv.binstallBIPkey == _TRUE) + { + //unicast management frame decrypt + if(pattrib->privacy && !(IS_MCAST(GetAddr1Ptr(ptr))) && + (subtype == WIFI_DEAUTH || subtype == WIFI_DISASSOC || subtype == WIFI_ACTION)) + { + u8 *ppp, *mgmt_DATA; + u32 data_len=0; + ppp = GetAddr2Ptr(ptr); + + pattrib->bdecrypted = 0; + pattrib->encrypt = _AES_; + pattrib->hdrlen = sizeof(struct rtw_ieee80211_hdr_3addr); + //set iv and icv length + SET_ICE_IV_LEN(pattrib->iv_len, pattrib->icv_len, pattrib->encrypt); + _rtw_memcpy(pattrib->ra, GetAddr1Ptr(ptr), ETH_ALEN); + _rtw_memcpy(pattrib->ta, GetAddr2Ptr(ptr), ETH_ALEN); + //actual management data frame body + data_len = pattrib->pkt_len - pattrib->hdrlen - pattrib->iv_len - pattrib->icv_len; + mgmt_DATA = rtw_zmalloc(data_len); + if(mgmt_DATA == NULL) + { + DBG_871X("%s mgmt allocate fail !!!!!!!!!\n", __FUNCTION__); + goto validate_80211w_fail; + } + /*//dump the packet content before decrypt + { + int pp; + printk("pattrib->pktlen = %d =>", pattrib->pkt_len); + for(pp=0;pp< pattrib->pkt_len; pp++) + printk(" %02x ", ptr[pp]); + printk("\n"); + }*/ + + precv_frame = decryptor(adapter, precv_frame); + //save actual management data frame body + _rtw_memcpy(mgmt_DATA, ptr+pattrib->hdrlen+pattrib->iv_len, data_len); + //overwrite the iv field + _rtw_memcpy(ptr+pattrib->hdrlen, mgmt_DATA, data_len); + //remove the iv and icv length + pattrib->pkt_len = pattrib->pkt_len - pattrib->iv_len - pattrib->icv_len; + rtw_mfree(mgmt_DATA, data_len); + /*//print packet content after decryption + { + int pp; + printk("after decryption pattrib->pktlen = %d @@=>", pattrib->pkt_len); + for(pp=0;pp< pattrib->pkt_len; pp++) + printk(" %02x ", ptr[pp]); + printk("\n"); + }*/ + if(!precv_frame) + { + DBG_871X("%s mgmt descrypt fail !!!!!!!!!\n", __FUNCTION__); + goto validate_80211w_fail; + } + } + else if(IS_MCAST(GetAddr1Ptr(ptr)) && + (subtype == WIFI_DEAUTH || subtype == WIFI_DISASSOC)) + { + sint BIP_ret = _SUCCESS; + //verify BIP MME IE of broadcast/multicast de-auth/disassoc packet + BIP_ret = rtw_BIP_verify(adapter, (u8 * )precv_frame); + if(BIP_ret == _FAIL) + { + //DBG_871X("802.11w BIP verify fail\n"); + goto validate_80211w_fail; + } + else if(BIP_ret == RTW_RX_HANDLED) + { + //DBG_871X("802.11w recv none protected packet\n"); + //issue sa query request + issue_action_SA_Query(adapter, NULL, 0, 0); + goto validate_80211w_fail; + } + }//802.11w protect + else + { + if(subtype == WIFI_ACTION) + { + //according 802.11-2012 standard, these five types are not robust types + if( ptr[WLAN_HDR_A3_LEN] != RTW_WLAN_CATEGORY_PUBLIC && + ptr[WLAN_HDR_A3_LEN] != RTW_WLAN_CATEGORY_HT && + ptr[WLAN_HDR_A3_LEN] != RTW_WLAN_CATEGORY_UNPROTECTED_WNM && + ptr[WLAN_HDR_A3_LEN] != RTW_WLAN_CATEGORY_SELF_PROTECTED && + ptr[WLAN_HDR_A3_LEN] != RTW_WLAN_CATEGORY_P2P) + { + DBG_871X("action frame category=%d should robust\n", ptr[WLAN_HDR_A3_LEN]); + goto validate_80211w_fail; + } + } + else if(subtype == WIFI_DEAUTH || subtype == WIFI_DISASSOC) + { + DBG_871X("802.11w recv none protected packet\n"); + //issue sa query request + issue_action_SA_Query(adapter, NULL, 0, 0); + goto validate_80211w_fail; + } + } + } + return _SUCCESS; + +validate_80211w_fail: + return _FAIL; + +} +#endif //CONFIG_IEEE80211W + +sint validate_recv_frame(_adapter *adapter, union recv_frame *precv_frame); +sint validate_recv_frame(_adapter *adapter, union recv_frame *precv_frame) +{ + //shall check frame subtype, to / from ds, da, bssid + + //then call check if rx seq/frag. duplicated. + + u8 type; + u8 subtype; + sint retval = _SUCCESS; + + struct rx_pkt_attrib *pattrib = & precv_frame->u.hdr.attrib; + + u8 *ptr = precv_frame->u.hdr.rx_data; + u8 ver =(unsigned char) (*ptr)&0x3 ; +#ifdef CONFIG_FIND_BEST_CHANNEL + struct mlme_ext_priv *pmlmeext = &adapter->mlmeextpriv; +#endif + +#ifdef CONFIG_TDLS + struct tdls_info *ptdlsinfo = &adapter->tdlsinfo; +#endif //CONFIG_TDLS + +_func_enter_; + + +#ifdef CONFIG_FIND_BEST_CHANNEL + if (pmlmeext->sitesurvey_res.state == SCAN_PROCESS) { + int ch_set_idx = rtw_ch_set_search_ch(pmlmeext->channel_set, rtw_get_oper_ch(adapter)); + if (ch_set_idx >= 0) + pmlmeext->channel_set[ch_set_idx].rx_count++; + } +#endif + +#ifdef CONFIG_TDLS + if(ptdlsinfo->ch_sensing==1 && ptdlsinfo->cur_channel !=0){ + ptdlsinfo->collect_pkt_num[ptdlsinfo->cur_channel-1]++; + } +#endif //CONFIG_TDLS + +#ifdef RTK_DMP_PLATFORM + if ( 0 ) + { + DBG_871X("++\n"); + { + int i; + for(i=0; i<64;i=i+8) + DBG_871X("%02X:%02X:%02X:%02X:%02X:%02X:%02X:%02X:", *(ptr+i), + *(ptr+i+1), *(ptr+i+2) ,*(ptr+i+3) ,*(ptr+i+4),*(ptr+i+5), *(ptr+i+6), *(ptr+i+7)); + + } + DBG_871X("--\n"); + } +#endif //RTK_DMP_PLATFORM + + //add version chk + if(ver!=0){ + RT_TRACE(_module_rtl871x_recv_c_,_drv_err_,("validate_recv_data_frame fail! (ver!=0)\n")); + retval= _FAIL; + goto exit; + } + + type = GetFrameType(ptr); + subtype = GetFrameSubType(ptr); //bit(7)~bit(2) + + pattrib->to_fr_ds = get_tofr_ds(ptr); + + pattrib->frag_num = GetFragNum(ptr); + pattrib->seq_num = GetSequence(ptr); + + pattrib->pw_save = GetPwrMgt(ptr); + pattrib->mfrag = GetMFrag(ptr); + pattrib->mdata = GetMData(ptr); + pattrib->privacy = GetPrivacy(ptr); + pattrib->order = GetOrder(ptr); +#if 0 //for debug + +if(pHalData->bDumpRxPkt ==1){ + int i; + DBG_871X("############################# \n"); + + for(i=0; i<64;i=i+8) + DBG_871X("%02X:%02X:%02X:%02X:%02X:%02X:%02X:%02X:\n", *(ptr+i), + *(ptr+i+1), *(ptr+i+2) ,*(ptr+i+3) ,*(ptr+i+4),*(ptr+i+5), *(ptr+i+6), *(ptr+i+7)); + DBG_871X("############################# \n"); +} +else if(pHalData->bDumpRxPkt ==2){ + if(type== WIFI_MGT_TYPE){ + int i; + DBG_871X("############################# \n"); + + for(i=0; i<64;i=i+8) + DBG_871X("%02X:%02X:%02X:%02X:%02X:%02X:%02X:%02X:\n", *(ptr+i), + *(ptr+i+1), *(ptr+i+2) ,*(ptr+i+3) ,*(ptr+i+4),*(ptr+i+5), *(ptr+i+6), *(ptr+i+7)); + DBG_871X("############################# \n"); + } +} +else if(pHalData->bDumpRxPkt ==3){ + if(type== WIFI_DATA_TYPE){ + int i; + DBG_871X("############################# \n"); + + for(i=0; i<64;i=i+8) + DBG_871X("%02X:%02X:%02X:%02X:%02X:%02X:%02X:%02X:\n", *(ptr+i), + *(ptr+i+1), *(ptr+i+2) ,*(ptr+i+3) ,*(ptr+i+4),*(ptr+i+5), *(ptr+i+6), *(ptr+i+7)); + DBG_871X("############################# \n"); + } +} + +#endif + switch (type) + { + case WIFI_MGT_TYPE: //mgnt +#ifdef CONFIG_IEEE80211W + if(validate_80211w_mgmt(adapter, precv_frame) == _FAIL) + { + retval = _FAIL; + break; + } +#endif //CONFIG_IEEE80211W + + retval = validate_recv_mgnt_frame(adapter, precv_frame); + if (retval == _FAIL) + { + RT_TRACE(_module_rtl871x_recv_c_,_drv_err_,("validate_recv_mgnt_frame fail\n")); + } + retval = _FAIL; // only data frame return _SUCCESS + break; + case WIFI_CTRL_TYPE: //ctrl + retval = validate_recv_ctrl_frame(adapter, precv_frame); + if (retval == _FAIL) + { + RT_TRACE(_module_rtl871x_recv_c_,_drv_err_,("validate_recv_ctrl_frame fail\n")); + } + retval = _FAIL; // only data frame return _SUCCESS + break; + case WIFI_DATA_TYPE: //data + rtw_led_control(adapter, LED_CTL_RX); + pattrib->qos = (subtype & BIT(7))? 1:0; + retval = validate_recv_data_frame(adapter, precv_frame); + if (retval == _FAIL) + { + struct recv_priv *precvpriv = &adapter->recvpriv; + RT_TRACE(_module_rtl871x_recv_c_,_drv_err_,("validate_recv_data_frame fail\n")); + precvpriv->rx_drop++; + } + break; + default: + RT_TRACE(_module_rtl871x_recv_c_,_drv_err_,("validate_recv_data_frame fail! type=0x%x\n", type)); + #ifdef DBG_RX_DROP_FRAME + DBG_871X("DBG_RX_DROP_FRAME validate_recv_data_frame fail! type=0x%x\n", type); + #endif + retval = _FAIL; + break; + } + +exit: + +_func_exit_; + + return retval; +} + + +//remove the wlanhdr and add the eth_hdr +#if 1 + +sint wlanhdr_to_ethhdr ( union recv_frame *precvframe); +sint wlanhdr_to_ethhdr ( union recv_frame *precvframe) +{ + sint rmv_len; + u16 eth_type, len; + u8 bsnaphdr; + u8 *psnap_type; + struct ieee80211_snap_hdr *psnap; + + sint ret=_SUCCESS; + _adapter *adapter =precvframe->u.hdr.adapter; + struct mlme_priv *pmlmepriv = &adapter->mlmepriv; + + u8 *ptr = get_recvframe_data(precvframe) ; // point to frame_ctrl field + struct rx_pkt_attrib *pattrib = & precvframe->u.hdr.attrib; + +_func_enter_; + + if(pattrib->encrypt){ + recvframe_pull_tail(precvframe, pattrib->icv_len); + } + + psnap=(struct ieee80211_snap_hdr *)(ptr+pattrib->hdrlen + pattrib->iv_len); + psnap_type=ptr+pattrib->hdrlen + pattrib->iv_len+SNAP_SIZE; + /* convert hdr + possible LLC headers into Ethernet header */ + //eth_type = (psnap_type[0] << 8) | psnap_type[1]; + if((_rtw_memcmp(psnap, rtw_rfc1042_header, SNAP_SIZE) && + (_rtw_memcmp(psnap_type, SNAP_ETH_TYPE_IPX, 2) == _FALSE) && + (_rtw_memcmp(psnap_type, SNAP_ETH_TYPE_APPLETALK_AARP, 2)==_FALSE) )|| + //eth_type != ETH_P_AARP && eth_type != ETH_P_IPX) || + _rtw_memcmp(psnap, rtw_bridge_tunnel_header, SNAP_SIZE)){ + /* remove RFC1042 or Bridge-Tunnel encapsulation and replace EtherType */ + bsnaphdr = _TRUE; + } + else { + /* Leave Ethernet header part of hdr and full payload */ + bsnaphdr = _FALSE; + } + + rmv_len = pattrib->hdrlen + pattrib->iv_len +(bsnaphdr?SNAP_SIZE:0); + len = precvframe->u.hdr.len - rmv_len; + + RT_TRACE(_module_rtl871x_recv_c_,_drv_info_,("\n===pattrib->hdrlen: %x, pattrib->iv_len:%x ===\n\n", pattrib->hdrlen, pattrib->iv_len)); + + _rtw_memcpy(ð_type, ptr+rmv_len, 2); + eth_type= ntohs((unsigned short )eth_type); //pattrib->ether_type + pattrib->eth_type = eth_type; + + if ((check_fwstate(pmlmepriv, WIFI_MP_STATE) == _TRUE)) + { + ptr += rmv_len ; + *ptr = 0x87; + *(ptr+1) = 0x12; + + eth_type = 0x8712; + // append rx status for mp test packets + ptr = recvframe_pull(precvframe, (rmv_len-sizeof(struct ethhdr)+2)-24); + _rtw_memcpy(ptr, get_rxmem(precvframe), 24); + ptr+=24; + } + else { + ptr = recvframe_pull(precvframe, (rmv_len-sizeof(struct ethhdr)+ (bsnaphdr?2:0))); + } + + _rtw_memcpy(ptr, pattrib->dst, ETH_ALEN); + _rtw_memcpy(ptr+ETH_ALEN, pattrib->src, ETH_ALEN); + + if(!bsnaphdr) { + len = htons(len); + _rtw_memcpy(ptr+12, &len, 2); + } + +_func_exit_; + return ret; + +} + +#else + +sint wlanhdr_to_ethhdr ( union recv_frame *precvframe) +{ + sint rmv_len; + u16 eth_type; + u8 bsnaphdr; + u8 *psnap_type; + struct ieee80211_snap_hdr *psnap; + + sint ret=_SUCCESS; + _adapter *adapter =precvframe->u.hdr.adapter; + struct mlme_priv *pmlmepriv = &adapter->mlmepriv; + + u8* ptr = get_recvframe_data(precvframe) ; // point to frame_ctrl field + struct rx_pkt_attrib *pattrib = & precvframe->u.hdr.attrib; + struct _vlan *pvlan = NULL; + +_func_enter_; + + psnap=(struct ieee80211_snap_hdr *)(ptr+pattrib->hdrlen + pattrib->iv_len); + psnap_type=ptr+pattrib->hdrlen + pattrib->iv_len+SNAP_SIZE; + if (psnap->dsap==0xaa && psnap->ssap==0xaa && psnap->ctrl==0x03) + { + if (_rtw_memcmp(psnap->oui, oui_rfc1042, WLAN_IEEE_OUI_LEN)) + bsnaphdr=_TRUE;//wlan_pkt_format = WLAN_PKT_FORMAT_SNAP_RFC1042; + else if (_rtw_memcmp(psnap->oui, SNAP_HDR_APPLETALK_DDP, WLAN_IEEE_OUI_LEN) && + _rtw_memcmp(psnap_type, SNAP_ETH_TYPE_APPLETALK_DDP, 2) ) + bsnaphdr=_TRUE; //wlan_pkt_format = WLAN_PKT_FORMAT_APPLETALK; + else if (_rtw_memcmp( psnap->oui, oui_8021h, WLAN_IEEE_OUI_LEN)) + bsnaphdr=_TRUE; //wlan_pkt_format = WLAN_PKT_FORMAT_SNAP_TUNNEL; + else { + RT_TRACE(_module_rtl871x_recv_c_,_drv_err_,("drop pkt due to invalid frame format!\n")); + ret= _FAIL; + goto exit; + } + + } else + bsnaphdr=_FALSE;//wlan_pkt_format = WLAN_PKT_FORMAT_OTHERS; + + rmv_len = pattrib->hdrlen + pattrib->iv_len +(bsnaphdr?SNAP_SIZE:0); + RT_TRACE(_module_rtl871x_recv_c_,_drv_info_,("===pattrib->hdrlen: %x, pattrib->iv_len:%x ===\n", pattrib->hdrlen, pattrib->iv_len)); + + if (check_fwstate(pmlmepriv, WIFI_MP_STATE) == _TRUE) + { + ptr += rmv_len ; + *ptr = 0x87; + *(ptr+1) = 0x12; + + //back to original pointer + ptr -= rmv_len; + } + + ptr += rmv_len ; + + _rtw_memcpy(ð_type, ptr, 2); + eth_type= ntohs((unsigned short )eth_type); //pattrib->ether_type + ptr +=2; + + if(pattrib->encrypt){ + recvframe_pull_tail(precvframe, pattrib->icv_len); + } + + if(eth_type == 0x8100) //vlan + { + pvlan = (struct _vlan *) ptr; + + //eth_type = get_vlan_encap_proto(pvlan); + //eth_type = pvlan->h_vlan_encapsulated_proto;//? + rmv_len += 4; + ptr+=4; + } + + if(eth_type==0x0800)//ip + { + //struct iphdr* piphdr = (struct iphdr*) ptr; + //__u8 tos = (unsigned char)(pattrib->priority & 0xff); + + //piphdr->tos = tos; + + //if (piphdr->protocol == 0x06) + //{ + // RT_TRACE(_module_rtl871x_recv_c_,_drv_info_,("@@@===recv tcp len:%d @@@===\n", precvframe->u.hdr.len)); + //} + } + else if(eth_type==0x8712)// append rx status for mp test packets + { + //ptr -= 16; + //_rtw_memcpy(ptr, get_rxmem(precvframe), 16); + } + else + { +#ifdef PLATFORM_OS_XP + NDIS_PACKET_8021Q_INFO VlanPriInfo; + UINT32 UserPriority = precvframe->u.hdr.attrib.priority; + UINT32 VlanID = (pvlan!=NULL ? get_vlan_id(pvlan) : 0 ); + + VlanPriInfo.Value = // Get current value. + NDIS_PER_PACKET_INFO_FROM_PACKET(precvframe->u.hdr.pkt, Ieee8021QInfo); + + VlanPriInfo.TagHeader.UserPriority = UserPriority; + VlanPriInfo.TagHeader.VlanId = VlanID ; + + VlanPriInfo.TagHeader.CanonicalFormatId = 0; // Should be zero. + VlanPriInfo.TagHeader.Reserved = 0; // Should be zero. + NDIS_PER_PACKET_INFO_FROM_PACKET(precvframe->u.hdr.pkt, Ieee8021QInfo) = VlanPriInfo.Value; +#endif + } + + if(eth_type==0x8712)// append rx status for mp test packets + { + ptr = recvframe_pull(precvframe, (rmv_len-sizeof(struct ethhdr)+2)-24); + _rtw_memcpy(ptr, get_rxmem(precvframe), 24); + ptr+=24; + } + else + ptr = recvframe_pull(precvframe, (rmv_len-sizeof(struct ethhdr)+2)); + + _rtw_memcpy(ptr, pattrib->dst, ETH_ALEN); + _rtw_memcpy(ptr+ETH_ALEN, pattrib->src, ETH_ALEN); + + eth_type = htons((unsigned short)eth_type) ; + _rtw_memcpy(ptr+12, ð_type, 2); + +exit: + +_func_exit_; + + return ret; +} +#endif + + +#ifdef CONFIG_SDIO_HCI +#ifdef PLATFORM_LINUX +static void recvframe_expand_pkt( + PADAPTER padapter, + union recv_frame *prframe) +{ + struct recv_frame_hdr *pfhdr; + _pkt *ppkt; + u8 shift_sz; + u32 alloc_sz; + + + pfhdr = &prframe->u.hdr; + + // 6 is for IP header 8 bytes alignment in QoS packet case. + if (pfhdr->attrib.qos) + shift_sz = 6; + else + shift_sz = 0; + + // for first fragment packet, need to allocate + // (1536 + RXDESC_SIZE + drvinfo_sz) to reassemble packet + // 8 is for skb->data 8 bytes alignment. +// alloc_sz = _RND(1536 + RXDESC_SIZE + pfhdr->attrib.drvinfosize + shift_sz + 8, 128); + alloc_sz = 1664; // round (1536 + 24 + 32 + shift_sz + 8) to 128 bytes alignment + + //3 1. alloc new skb + // prepare extra space for 4 bytes alignment + ppkt = rtw_skb_alloc(alloc_sz); + + if (!ppkt) return; // no way to expand + + //3 2. Prepare new skb to replace & release old skb + // force ppkt->data at 8-byte alignment address + skb_reserve(ppkt, 8 - ((SIZE_PTR)ppkt->data & 7)); + // force ip_hdr at 8-byte alignment address according to shift_sz + skb_reserve(ppkt, shift_sz); + + // copy data to new pkt + _rtw_memcpy(skb_put(ppkt, pfhdr->len), pfhdr->rx_data, pfhdr->len); + + rtw_skb_free(pfhdr->pkt); + + // attach new pkt to recvframe + pfhdr->pkt = ppkt; + pfhdr->rx_head = ppkt->head; + pfhdr->rx_data = ppkt->data; + pfhdr->rx_tail = skb_tail_pointer(ppkt); + pfhdr->rx_end = skb_end_pointer(ppkt); +} +#else +#warning "recvframe_expand_pkt not implement, defrag may crash system" +#endif +#endif + +//perform defrag +union recv_frame * recvframe_defrag(_adapter *adapter,_queue *defrag_q); +union recv_frame * recvframe_defrag(_adapter *adapter,_queue *defrag_q) +{ + _list *plist, *phead; + u8 *data,wlanhdr_offset; + u8 curfragnum; + struct recv_frame_hdr *pfhdr,*pnfhdr; + union recv_frame* prframe, *pnextrframe; + _queue *pfree_recv_queue; + +_func_enter_; + + curfragnum=0; + pfree_recv_queue=&adapter->recvpriv.free_recv_queue; + + phead = get_list_head(defrag_q); + plist = get_next(phead); + prframe = LIST_CONTAINOR(plist, union recv_frame, u); + pfhdr=&prframe->u.hdr; + rtw_list_delete(&(prframe->u.list)); + + if(curfragnum!=pfhdr->attrib.frag_num) + { + //the first fragment number must be 0 + //free the whole queue + rtw_free_recvframe(prframe, pfree_recv_queue); + rtw_free_recvframe_queue(defrag_q, pfree_recv_queue); + + return NULL; + } + +#ifdef CONFIG_SDIO_HCI + recvframe_expand_pkt(adapter, prframe); +#endif + + curfragnum++; + + plist= get_list_head(defrag_q); + + plist = get_next(plist); + + data=get_recvframe_data(prframe); + + while(rtw_end_of_queue_search(phead, plist) == _FALSE) + { + pnextrframe = LIST_CONTAINOR(plist, union recv_frame , u); + pnfhdr=&pnextrframe->u.hdr; + + + //check the fragment sequence (2nd ~n fragment frame) + + if(curfragnum!=pnfhdr->attrib.frag_num) + { + //the fragment number must be increasing (after decache) + //release the defrag_q & prframe + rtw_free_recvframe(prframe, pfree_recv_queue); + rtw_free_recvframe_queue(defrag_q, pfree_recv_queue); + return NULL; + } + + curfragnum++; + + //copy the 2nd~n fragment frame's payload to the first fragment + //get the 2nd~last fragment frame's payload + + wlanhdr_offset = pnfhdr->attrib.hdrlen + pnfhdr->attrib.iv_len; + + recvframe_pull(pnextrframe, wlanhdr_offset); + + //append to first fragment frame's tail (if privacy frame, pull the ICV) + recvframe_pull_tail(prframe, pfhdr->attrib.icv_len); + + //memcpy + _rtw_memcpy(pfhdr->rx_tail, pnfhdr->rx_data, pnfhdr->len); + + recvframe_put(prframe, pnfhdr->len); + + pfhdr->attrib.icv_len=pnfhdr->attrib.icv_len; + plist = get_next(plist); + + }; + + //free the defrag_q queue and return the prframe + rtw_free_recvframe_queue(defrag_q, pfree_recv_queue); + + RT_TRACE(_module_rtl871x_recv_c_,_drv_info_,("Performance defrag!!!!!\n")); + +_func_exit_; + + return prframe; +} + +//check if need to defrag, if needed queue the frame to defrag_q +union recv_frame* recvframe_chk_defrag(PADAPTER padapter, union recv_frame *precv_frame) +{ + u8 ismfrag; + u8 fragnum; + u8 *psta_addr; + struct recv_frame_hdr *pfhdr; + struct sta_info *psta; + struct sta_priv *pstapriv; + _list *phead; + union recv_frame *prtnframe = NULL; + _queue *pfree_recv_queue, *pdefrag_q; + +_func_enter_; + + pstapriv = &padapter->stapriv; + + pfhdr = &precv_frame->u.hdr; + + pfree_recv_queue = &padapter->recvpriv.free_recv_queue; + + //need to define struct of wlan header frame ctrl + ismfrag = pfhdr->attrib.mfrag; + fragnum = pfhdr->attrib.frag_num; + + psta_addr = pfhdr->attrib.ta; + psta = rtw_get_stainfo(pstapriv, psta_addr); + if (psta == NULL) + { + u8 type = GetFrameType(pfhdr->rx_data); + if (type != WIFI_DATA_TYPE) { + psta = rtw_get_bcmc_stainfo(padapter); + pdefrag_q = &psta->sta_recvpriv.defrag_q; + } else + pdefrag_q = NULL; + } + else + pdefrag_q = &psta->sta_recvpriv.defrag_q; + + if ((ismfrag==0) && (fragnum==0)) + { + prtnframe = precv_frame;//isn't a fragment frame + } + + if (ismfrag==1) + { + //0~(n-1) fragment frame + //enqueue to defraf_g + if(pdefrag_q != NULL) + { + if(fragnum==0) + { + //the first fragment + if(_rtw_queue_empty(pdefrag_q) == _FALSE) + { + //free current defrag_q + rtw_free_recvframe_queue(pdefrag_q, pfree_recv_queue); + } + } + + + //Then enqueue the 0~(n-1) fragment into the defrag_q + + //_rtw_spinlock(&pdefrag_q->lock); + phead = get_list_head(pdefrag_q); + rtw_list_insert_tail(&pfhdr->list, phead); + //_rtw_spinunlock(&pdefrag_q->lock); + + RT_TRACE(_module_rtl871x_recv_c_,_drv_info_,("Enqueuq: ismfrag = %d, fragnum= %d\n", ismfrag,fragnum)); + + prtnframe=NULL; + + } + else + { + //can't find this ta's defrag_queue, so free this recv_frame + rtw_free_recvframe(precv_frame, pfree_recv_queue); + prtnframe=NULL; + RT_TRACE(_module_rtl871x_recv_c_,_drv_err_,("Free because pdefrag_q ==NULL: ismfrag = %d, fragnum= %d\n", ismfrag, fragnum)); + } + + } + + if((ismfrag==0)&&(fragnum!=0)) + { + //the last fragment frame + //enqueue the last fragment + if(pdefrag_q != NULL) + { + //_rtw_spinlock(&pdefrag_q->lock); + phead = get_list_head(pdefrag_q); + rtw_list_insert_tail(&pfhdr->list,phead); + //_rtw_spinunlock(&pdefrag_q->lock); + + //call recvframe_defrag to defrag + RT_TRACE(_module_rtl871x_recv_c_,_drv_info_,("defrag: ismfrag = %d, fragnum= %d\n", ismfrag, fragnum)); + precv_frame = recvframe_defrag(padapter, pdefrag_q); + prtnframe=precv_frame; + + } + else + { + //can't find this ta's defrag_queue, so free this recv_frame + rtw_free_recvframe(precv_frame, pfree_recv_queue); + prtnframe=NULL; + RT_TRACE(_module_rtl871x_recv_c_,_drv_err_,("Free because pdefrag_q ==NULL: ismfrag = %d, fragnum= %d\n", ismfrag,fragnum)); + } + + } + + + if((prtnframe!=NULL)&&(prtnframe->u.hdr.attrib.privacy)) + { + //after defrag we must check tkip mic code + if(recvframe_chkmic(padapter, prtnframe)==_FAIL) + { + RT_TRACE(_module_rtl871x_recv_c_,_drv_err_,("recvframe_chkmic(padapter, prtnframe)==_FAIL\n")); + rtw_free_recvframe(prtnframe,pfree_recv_queue); + prtnframe=NULL; + } + } + +_func_exit_; + + return prtnframe; + +} + +#define ENDIAN_FREE 1 + +int amsdu_to_msdu(_adapter *padapter, union recv_frame *prframe); +int amsdu_to_msdu(_adapter *padapter, union recv_frame *prframe) +{ +#if defined (PLATFORM_LINUX) || defined (PLATFORM_FREEBSD) //for amsdu TP improvement,Creator: Thomas + int a_len, padding_len; + u16 eth_type, nSubframe_Length; + u8 nr_subframes, i; + unsigned char *pdata; + struct rx_pkt_attrib *pattrib; +#ifndef PLATFORM_FREEBSD + unsigned char *data_ptr; + _pkt *sub_skb,*subframes[MAX_SUBFRAME_COUNT]; +#endif //PLATFORM_FREEBSD + struct recv_priv *precvpriv = &padapter->recvpriv; + _queue *pfree_recv_queue = &(precvpriv->free_recv_queue); + int ret = _SUCCESS; +#ifdef PLATFORM_FREEBSD + struct mbuf *sub_m=NULL, *subframes[MAX_SUBFRAME_COUNT]; + u8 *ptr,offset; +#endif //PLATFORM_FREEBSD + nr_subframes = 0; + + pattrib = &prframe->u.hdr.attrib; + + recvframe_pull(prframe, prframe->u.hdr.attrib.hdrlen); + + if(prframe->u.hdr.attrib.iv_len >0) + { + recvframe_pull(prframe, prframe->u.hdr.attrib.iv_len); + } + + a_len = prframe->u.hdr.len; + + pdata = prframe->u.hdr.rx_data; + + while(a_len > ETH_HLEN) { + + /* Offset 12 denote 2 mac address */ +#ifdef ENDIAN_FREE + //nSubframe_Length = ntohs(*((u16*)(pdata + 12))); + nSubframe_Length = RTW_GET_BE16(pdata + 12); +#else // ENDIAN_FREE + nSubframe_Length = *((u16*)(pdata + 12)); + //==m==>change the length order + nSubframe_Length = (nSubframe_Length>>8) + (nSubframe_Length<<8); + //ntohs(nSubframe_Length); +#endif // ENDIAN_FREE + + if( a_len < (ETHERNET_HEADER_SIZE + nSubframe_Length) ) { + DBG_871X("nRemain_Length is %d and nSubframe_Length is : %d\n",a_len,nSubframe_Length); + goto exit; + } + +#ifndef PLATFORM_FREEBSD + /* move the data point to data content */ + pdata += ETH_HLEN; + a_len -= ETH_HLEN; + + /* Allocate new skb for releasing to upper layer */ +#ifdef CONFIG_SKB_COPY + sub_skb = rtw_skb_alloc(nSubframe_Length + 12); + if(sub_skb) + { + skb_reserve(sub_skb, 12); + data_ptr = (u8 *)skb_put(sub_skb, nSubframe_Length); + _rtw_memcpy(data_ptr, pdata, nSubframe_Length); + } + else +#endif // CONFIG_SKB_COPY + { + sub_skb = rtw_skb_clone(prframe->u.hdr.pkt); + if(sub_skb) + { + sub_skb->data = pdata; + sub_skb->len = nSubframe_Length; + skb_set_tail_pointer(sub_skb, nSubframe_Length); + } + else + { + DBG_871X("rtw_skb_clone() Fail!!! , nr_subframes = %d\n",nr_subframes); + break; + } + } + +#else // PLATFORM_FREEBSD + + //PLATFORM_FREEBSD + //Allocate a mbuff, + //sub_m =m_devget(pdata, nSubframe_Length+12, 12, padapter->pifp,NULL); + sub_m =m_devget(pdata, nSubframe_Length+ETH_HLEN, ETHER_ALIGN, padapter->pifp,NULL); + + pdata += ETH_HLEN; + a_len -= ETH_HLEN; +#endif // PLATFORM_FREEBSD + +#ifndef PLATFORM_FREEBSD + //sub_skb->dev = padapter->pnetdev; + subframes[nr_subframes++] = sub_skb; +#else //PLATFORM_FREEBSD + //PLATFORM_FREEBSD + subframes[nr_subframes++] = sub_m; +#endif //PLATFORM_FREEBSD + + if(nr_subframes >= MAX_SUBFRAME_COUNT) { + DBG_871X("ParseSubframe(): Too many Subframes! Packets dropped!\n"); + break; + } + + pdata += nSubframe_Length; + a_len -= nSubframe_Length; + if(a_len != 0) { + padding_len = 4 - ((nSubframe_Length + ETH_HLEN) & (4-1)); + if(padding_len == 4) { + padding_len = 0; + } + + if(a_len < padding_len) { + goto exit; + } + pdata += padding_len; + a_len -= padding_len; + } + } + + for(i=0; idata[6]); + eth_type = RTW_GET_BE16(&sub_skb->data[6]); +#else // ENDIAN_FREE + eth_type = (sub_skb->data[6] << 8) | sub_skb->data[7]; +#endif // ENDIAN_FREE + if (sub_skb->len >= 8 && + ((_rtw_memcmp(sub_skb->data, rtw_rfc1042_header, SNAP_SIZE) && + eth_type != ETH_P_AARP && eth_type != ETH_P_IPX) || + _rtw_memcmp(sub_skb->data, rtw_bridge_tunnel_header, SNAP_SIZE) )) { + /* remove RFC1042 or Bridge-Tunnel encapsulation and replace EtherType */ + skb_pull(sub_skb, SNAP_SIZE); + _rtw_memcpy(skb_push(sub_skb, ETH_ALEN), pattrib->src, ETH_ALEN); + _rtw_memcpy(skb_push(sub_skb, ETH_ALEN), pattrib->dst, ETH_ALEN); + } else { + u16 len; + /* Leave Ethernet header part of hdr and full payload */ + len = htons(sub_skb->len); + _rtw_memcpy(skb_push(sub_skb, 2), &len, 2); + _rtw_memcpy(skb_push(sub_skb, ETH_ALEN), pattrib->src, ETH_ALEN); + _rtw_memcpy(skb_push(sub_skb, ETH_ALEN), pattrib->dst, ETH_ALEN); + } + + /* Indicat the packets to upper layer */ + if (sub_skb) { + //memset(sub_skb->cb, 0, sizeof(sub_skb->cb)); + +#ifdef CONFIG_BR_EXT + // Insert NAT2.5 RX here! + struct mlme_priv *pmlmepriv = &padapter->mlmepriv; + void *br_port = NULL; + +#if (LINUX_VERSION_CODE <= KERNEL_VERSION(2, 6, 35)) + br_port = padapter->pnetdev->br_port; +#else // (LINUX_VERSION_CODE <= KERNEL_VERSION(2, 6, 35)) + rcu_read_lock(); + br_port = rcu_dereference(padapter->pnetdev->rx_handler_data); + rcu_read_unlock(); +#endif // (LINUX_VERSION_CODE <= KERNEL_VERSION(2, 6, 35)) + + + if( br_port && (check_fwstate(pmlmepriv, WIFI_STATION_STATE|WIFI_ADHOC_STATE) == _TRUE) ) + { + int nat25_handle_frame(_adapter *priv, struct sk_buff *skb); + if (nat25_handle_frame(padapter, sub_skb) == -1) { + //priv->ext_stats.rx_data_drops++; + //DEBUG_ERR("RX DROP: nat25_handle_frame fail!\n"); + //return FAIL; + +#if 1 + // bypass this frame to upper layer!! +#else + rtw_skb_free(sub_skb); + continue; +#endif + } + } +#endif // CONFIG_BR_EXT + + sub_skb->protocol = eth_type_trans(sub_skb, padapter->pnetdev); + sub_skb->dev = padapter->pnetdev; + +#ifdef CONFIG_TCP_CSUM_OFFLOAD_RX + if ( (pattrib->tcpchk_valid == 1) && (pattrib->tcp_chkrpt == 1) ) { + sub_skb->ip_summed = CHECKSUM_UNNECESSARY; + } else { + sub_skb->ip_summed = CHECKSUM_NONE; + } +#else /* !CONFIG_TCP_CSUM_OFFLOAD_RX */ + sub_skb->ip_summed = CHECKSUM_NONE; +#endif //CONFIG_TCP_CSUM_OFFLOAD_RX + + rtw_netif_rx(padapter->pnetdev, sub_skb); + } +#else //PLATFORM_FREEBSD + + //PLATFORM_FREEBSD + sub_m = subframes[i]; + ptr=mtod(sub_m, u8 *); + offset=ETH_HLEN; + /* convert hdr + possible LLC headers into Ethernet header */ +#ifdef ENDIAN_FREE + eth_type = ntohs(*(u16*)&ptr[offset+6]); +#else // ENDIAN_FREE + eth_type = ( ptr[offset+6] << 8) | ptr[offset+7]; +#endif // ENDIAN_FREE + if (sub_m->m_pkthdr.len >= ETH_HLEN+8 && + ((_rtw_memcmp(ptr+ETH_HLEN, rtw_rfc1042_header, SNAP_SIZE) && + eth_type != ETH_P_AARP && eth_type != ETH_P_IPX) || + _rtw_memcmp(ptr+ETH_HLEN, rtw_bridge_tunnel_header, SNAP_SIZE) )) { + /* remove RFC1042 or Bridge-Tunnel encapsulation and replace EtherType */ + offset+=SNAP_SIZE; + _rtw_memcpy(&ptr[offset-ETH_ALEN], pattrib->src, ETH_ALEN); + offset-=ETH_ALEN; + _rtw_memcpy(&ptr[offset-ETH_ALEN], pattrib->dst, ETH_ALEN); + offset-=ETH_ALEN; + } else { + u16 len; + /* Leave Ethernet header part of hdr and full payload */ + len = htons(sub_m->m_pkthdr.len-offset); + _rtw_memcpy(&ptr[offset- 2], &len, 2); + offset-=2; + _rtw_memcpy(&ptr[offset-ETH_ALEN], pattrib->src, ETH_ALEN); + offset-=ETH_ALEN; + _rtw_memcpy(&ptr[offset-ETH_ALEN], pattrib->dst, ETH_ALEN); + offset-=ETH_ALEN; + } + + m_adj(sub_m,offset); + + /* Indicat the packets to upper layer */ + if (sub_m) { + +#if 0 +#ifdef CONFIG_TCP_CSUM_OFFLOAD_RX + if ( (pattrib->tcpchk_valid == 1) && (pattrib->tcp_chkrpt == 1) ) { + sub_skb->ip_summed = CHECKSUM_UNNECESSARY; + } else { + sub_skb->ip_summed = CHECKSUM_NONE; + } +#else /* !CONFIG_TCP_CSUM_OFFLOAD_RX */ + sub_skb->ip_summed = CHECKSUM_NONE; +#endif //CONFIG_TCP_CSUM_OFFLOAD_RX +#endif //0 + + if ( ((u32)(mtod(sub_m, caddr_t) + 14) % 4) != 0) + printf("%s()-%d: mtod(sub_m) = %p\n", __FUNCTION__, __LINE__, mtod(sub_m, caddr_t)); +#ifdef CONFIG_RX_INDICATE_QUEUE + IF_ENQUEUE(&precvpriv->rx_indicate_queue, sub_m); + if (_IF_QLEN(&precvpriv->rx_indicate_queue) <= 1) { + taskqueue_enqueue(taskqueue_thread, &precvpriv->rx_indicate_tasklet); + } +#else // CONFIG_RX_INDICATE_QUEUE + (*padapter->pifp->if_input)(padapter->pifp, sub_m); +#endif // CONFIG_RX_INDICATE_QUEUE + } + +#endif //PLATFORM_FREEBSD + } + +exit: + + prframe->u.hdr.len=0; + rtw_free_recvframe(prframe, pfree_recv_queue);//free this recv_frame + + return ret; +#else // || defined (PLATFORM_LINUX) || defined (PLATFORM_FREEBSD) +#ifdef PLATFORM_WINDOWS + _irqL irql; +#endif //PLATFORM_WINDOWS + unsigned char *ptr, *pdata, *pbuf, *psnap_type; + union recv_frame *pnrframe, *pnrframe_new; + int a_len, mv_len, padding_len; + u16 eth_type, type_len; + u8 bsnaphdr; + struct ieee80211_snap_hdr *psnap; + struct _vlan *pvlan; + struct recv_priv *precvpriv = &padapter->recvpriv; + _queue *pfree_recv_queue = &(precvpriv->free_recv_queue); + int ret = _SUCCESS; +#ifdef PLATFORM_WINDOWS + struct recv_buf *precvbuf = prframe->u.hdr.precvbuf; +#endif //PLATFORM_WINDOWS + a_len = prframe->u.hdr.len - prframe->u.hdr.attrib.hdrlen; + + recvframe_pull(prframe, prframe->u.hdr.attrib.hdrlen); + + if(prframe->u.hdr.attrib.iv_len >0) + { + recvframe_pull(prframe, prframe->u.hdr.attrib.iv_len); + } + + pdata = prframe->u.hdr.rx_data; + + prframe->u.hdr.len=0; + + pnrframe = prframe; + + + do{ + + mv_len=0; + pnrframe->u.hdr.rx_data = pnrframe->u.hdr.rx_tail = pdata; + ptr = pdata; + + + _rtw_memcpy(pnrframe->u.hdr.attrib.dst, ptr, ETH_ALEN); + ptr+=ETH_ALEN; + _rtw_memcpy(pnrframe->u.hdr.attrib.src, ptr, ETH_ALEN); + ptr+=ETH_ALEN; + + _rtw_memcpy(&type_len, ptr, 2); + type_len= ntohs((unsigned short )type_len); + ptr +=2; + mv_len += ETH_HLEN; + + recvframe_put(pnrframe, type_len+ETH_HLEN);//update tail; + + if(pnrframe->u.hdr.rx_data >= pnrframe->u.hdr.rx_tail || type_len<8) + { + //panic("pnrframe->u.hdr.rx_data >= pnrframe->u.hdr.rx_tail || type_len<8\n"); + + rtw_free_recvframe(pnrframe, pfree_recv_queue); + + goto exit; + } + + psnap=(struct ieee80211_snap_hdr *)(ptr); + psnap_type=ptr+SNAP_SIZE; + if (psnap->dsap==0xaa && psnap->ssap==0xaa && psnap->ctrl==0x03) + { + if ( _rtw_memcmp(psnap->oui, oui_rfc1042, WLAN_IEEE_OUI_LEN)) + { + bsnaphdr=_TRUE;//wlan_pkt_format = WLAN_PKT_FORMAT_SNAP_RFC1042; + } + else if (_rtw_memcmp(psnap->oui, SNAP_HDR_APPLETALK_DDP, WLAN_IEEE_OUI_LEN) && + _rtw_memcmp(psnap_type, SNAP_ETH_TYPE_APPLETALK_DDP, 2) ) + { + bsnaphdr=_TRUE; //wlan_pkt_format = WLAN_PKT_FORMAT_APPLETALK; + } + else if (_rtw_memcmp( psnap->oui, oui_8021h, WLAN_IEEE_OUI_LEN)) + { + bsnaphdr=_TRUE; //wlan_pkt_format = WLAN_PKT_FORMAT_SNAP_TUNNEL; + } + else + { + RT_TRACE(_module_rtl871x_recv_c_,_drv_err_,("drop pkt due to invalid frame format!\n")); + + //KeBugCheckEx(0x87123333, 0xe0, 0x4c, 0x87, 0xdd); + + //panic("0x87123333, 0xe0, 0x4c, 0x87, 0xdd\n"); + + rtw_free_recvframe(pnrframe, pfree_recv_queue); + + goto exit; + } + + } + else + { + bsnaphdr=_FALSE;//wlan_pkt_format = WLAN_PKT_FORMAT_OTHERS; + } + + ptr += (bsnaphdr?SNAP_SIZE:0); + _rtw_memcpy(ð_type, ptr, 2); + eth_type= ntohs((unsigned short )eth_type); //pattrib->ether_type + + mv_len+= 2+(bsnaphdr?SNAP_SIZE:0); + ptr += 2;//now move to iphdr; + + pvlan = NULL; + if(eth_type == 0x8100) //vlan + { + pvlan = (struct _vlan *)ptr; + ptr+=4; + mv_len+=4; + } + + if(eth_type==0x0800)//ip + { + struct iphdr* piphdr = (struct iphdr*)ptr; + + + if (piphdr->protocol == 0x06) + { + RT_TRACE(_module_rtl871x_recv_c_,_drv_info_,("@@@===recv tcp len:%d @@@===\n", pnrframe->u.hdr.len)); + } + } +#ifdef PLATFORM_OS_XP + else + { + NDIS_PACKET_8021Q_INFO VlanPriInfo; + UINT32 UserPriority = pnrframe->u.hdr.attrib.priority; + UINT32 VlanID = (pvlan!=NULL ? get_vlan_id(pvlan) : 0 ); + + VlanPriInfo.Value = // Get current value. + NDIS_PER_PACKET_INFO_FROM_PACKET(pnrframe->u.hdr.pkt, Ieee8021QInfo); + + VlanPriInfo.TagHeader.UserPriority = UserPriority; + VlanPriInfo.TagHeader.VlanId = VlanID; + + VlanPriInfo.TagHeader.CanonicalFormatId = 0; // Should be zero. + VlanPriInfo.TagHeader.Reserved = 0; // Should be zero. + NDIS_PER_PACKET_INFO_FROM_PACKET(pnrframe->u.hdr.pkt, Ieee8021QInfo) = VlanPriInfo.Value; + + } +#endif //PLATFORM_OS_XP + + pbuf = recvframe_pull(pnrframe, (mv_len-sizeof(struct ethhdr))); + + _rtw_memcpy(pbuf, pnrframe->u.hdr.attrib.dst, ETH_ALEN); + _rtw_memcpy(pbuf+ETH_ALEN, pnrframe->u.hdr.attrib.src, ETH_ALEN); + + eth_type = htons((unsigned short)eth_type) ; + _rtw_memcpy(pbuf+12, ð_type, 2); + + padding_len = (4) - ((type_len + ETH_HLEN)&(4-1)); + + a_len -= (type_len + ETH_HLEN + padding_len) ; + + +#if 0 + + if(a_len > ETH_HLEN) + { + pnrframe_new = rtw_alloc_recvframe(pfree_recv_queue); + if(pnrframe_new) + { + _pkt *pskb_copy; + unsigned int copy_len = pnrframe->u.hdr.len; + + _rtw_init_listhead(&pnrframe_new->u.hdr.list); + + pskb_copy = rtw_skb_alloc(copy_len+64); + + if(pskb_copy==NULL) + { + DBG_871X("amsdu_to_msdu:can not all(ocate memory for skb copy\n"); + } + + pnrframe_new->u.hdr.pkt = pskb_copy; + + _rtw_memcpy(pskb_copy->data, pnrframe->u.hdr.rx_data, copy_len); + + pnrframe_new->u.hdr.rx_data = pnrframe->u.hdr.rx_data; + pnrframe_new->u.hdr.rx_tail = pnrframe->u.hdr.rx_data + copy_len; + + + if ((padapter->bDriverStopped ==_FALSE)&&( padapter->bSurpriseRemoved==_FALSE)) + { + rtw_recv_indicatepkt(padapter, pnrframe_new);//indicate this recv_frame + } + else + { + rtw_free_recvframe(pnrframe_new, pfree_recv_queue);//free this recv_frame + } + + } + else + { + DBG_871X("amsdu_to_msdu:can not allocate memory for pnrframe_new\n"); + } + + } + else + { + if ((padapter->bDriverStopped ==_FALSE)&&( padapter->bSurpriseRemoved==_FALSE)) + { + rtw_recv_indicatepkt(padapter, pnrframe);//indicate this recv_frame + } + else + { + rtw_free_recvframe(pnrframe, pfree_recv_queue);//free this recv_frame + } + + pnrframe = NULL; + + } + +#else // 0 + + //padding_len = (4) - ((type_len + ETH_HLEN)&(4-1)); + + //a_len -= (type_len + ETH_HLEN + padding_len) ; + + pnrframe_new = NULL; + + + if(a_len > ETH_HLEN) + { + pnrframe_new = rtw_alloc_recvframe(pfree_recv_queue); + + if(pnrframe_new) + { + + + //pnrframe_new->u.hdr.precvbuf = precvbuf;//precvbuf is assigned before call rtw_init_recvframe() + //rtw_init_recvframe(pnrframe_new, precvpriv); + { +#ifdef PLATFORM_LINUX + _pkt *pskb = pnrframe->u.hdr.pkt; +#endif //PLATFORM_LINUX + _rtw_init_listhead(&pnrframe_new->u.hdr.list); + + pnrframe_new->u.hdr.len=0; + +#ifdef PLATFORM_LINUX + if(pskb) + { + pnrframe_new->u.hdr.pkt = rtw_skb_clone(pskb); + } +#endif //PLATFORM_LINUX + + } + + pdata += (type_len + ETH_HLEN + padding_len); + pnrframe_new->u.hdr.rx_head = pnrframe_new->u.hdr.rx_data = pnrframe_new->u.hdr.rx_tail = pdata; + pnrframe_new->u.hdr.rx_end = pdata + a_len + padding_len;// + +#ifdef PLATFORM_WINDOWS + pnrframe_new->u.hdr.precvbuf=precvbuf; + _enter_critical_bh(&precvbuf->recvbuf_lock, &irql); + precvbuf->ref_cnt++; + _exit_critical_bh(&precvbuf->recvbuf_lock, &irql); +#endif //PLATFORM_WINDOWS + + } + else + { + //panic("pnrframe_new=%x\n", pnrframe_new); + } + } + + + if ((padapter->bDriverStopped ==_FALSE)&&( padapter->bSurpriseRemoved==_FALSE) ) + { + rtw_recv_indicatepkt(padapter, pnrframe);//indicate this recv_frame + } + else + { + rtw_free_recvframe(pnrframe, pfree_recv_queue);//free this recv_frame + } + + + pnrframe = NULL; + if(pnrframe_new) + { + pnrframe = pnrframe_new; + } + + +#endif // end defined (PLATFORM_LINUX) || defined (PLATFORM_FREEBSD) + + }while(pnrframe); + +exit: + + return ret; +#endif +} + +int check_indicate_seq(struct recv_reorder_ctrl *preorder_ctrl, u16 seq_num); +int check_indicate_seq(struct recv_reorder_ctrl *preorder_ctrl, u16 seq_num) +{ + u8 wsize = preorder_ctrl->wsize_b; + u16 wend = (preorder_ctrl->indicate_seq + wsize -1) & 0xFFF;//% 4096; + + // Rx Reorder initialize condition. + if (preorder_ctrl->indicate_seq == 0xFFFF) + { + preorder_ctrl->indicate_seq = seq_num; + #ifdef DBG_RX_SEQ + DBG_871X("DBG_RX_SEQ %s:%d init IndicateSeq: %d, NewSeq: %d\n", __FUNCTION__, __LINE__, + preorder_ctrl->indicate_seq, seq_num); + #endif + + //DbgPrint("check_indicate_seq, 1st->indicate_seq=%d\n", precvpriv->indicate_seq); + } + + //DbgPrint("enter->check_indicate_seq(): IndicateSeq: %d, NewSeq: %d\n", precvpriv->indicate_seq, seq_num); + + // Drop out the packet which SeqNum is smaller than WinStart + if( SN_LESS(seq_num, preorder_ctrl->indicate_seq) ) + { + //RT_TRACE(COMP_RX_REORDER, DBG_LOUD, ("CheckRxTsIndicateSeq(): Packet Drop! IndicateSeq: %d, NewSeq: %d\n", pTS->RxIndicateSeq, NewSeqNum)); + //DbgPrint("CheckRxTsIndicateSeq(): Packet Drop! IndicateSeq: %d, NewSeq: %d\n", precvpriv->indicate_seq, seq_num); + + #ifdef DBG_RX_DROP_FRAME + DBG_871X("%s IndicateSeq: %d > NewSeq: %d\n", __FUNCTION__, + preorder_ctrl->indicate_seq, seq_num); + #endif + + + return _FALSE; + } + + // + // Sliding window manipulation. Conditions includes: + // 1. Incoming SeqNum is equal to WinStart =>Window shift 1 + // 2. Incoming SeqNum is larger than the WinEnd => Window shift N + // + if( SN_EQUAL(seq_num, preorder_ctrl->indicate_seq) ) + { + preorder_ctrl->indicate_seq = (preorder_ctrl->indicate_seq + 1) & 0xFFF; + #ifdef DBG_RX_SEQ + DBG_871X("DBG_RX_SEQ %s:%d SN_EQUAL IndicateSeq: %d, NewSeq: %d\n", __FUNCTION__, __LINE__, + preorder_ctrl->indicate_seq, seq_num); + #endif + } + else if(SN_LESS(wend, seq_num)) + { + //RT_TRACE(COMP_RX_REORDER, DBG_LOUD, ("CheckRxTsIndicateSeq(): Window Shift! IndicateSeq: %d, NewSeq: %d\n", pTS->RxIndicateSeq, NewSeqNum)); + //DbgPrint("CheckRxTsIndicateSeq(): Window Shift! IndicateSeq: %d, NewSeq: %d\n", precvpriv->indicate_seq, seq_num); + + // boundary situation, when seq_num cross 0xFFF + if(seq_num >= (wsize - 1)) + preorder_ctrl->indicate_seq = seq_num + 1 -wsize; + else + preorder_ctrl->indicate_seq = 0xFFF - (wsize - (seq_num + 1)) + 1; + + #ifdef DBG_RX_SEQ + DBG_871X("DBG_RX_SEQ %s:%d SN_LESS(wend, seq_num) IndicateSeq: %d, NewSeq: %d\n", __FUNCTION__, __LINE__, + preorder_ctrl->indicate_seq, seq_num); + #endif + } + + //DbgPrint("exit->check_indicate_seq(): IndicateSeq: %d, NewSeq: %d\n", precvpriv->indicate_seq, seq_num); + + return _TRUE; +} + +int enqueue_reorder_recvframe(struct recv_reorder_ctrl *preorder_ctrl, union recv_frame *prframe); +int enqueue_reorder_recvframe(struct recv_reorder_ctrl *preorder_ctrl, union recv_frame *prframe) +{ + struct rx_pkt_attrib *pattrib = &prframe->u.hdr.attrib; + _queue *ppending_recvframe_queue = &preorder_ctrl->pending_recvframe_queue; + _list *phead, *plist; + union recv_frame *pnextrframe; + struct rx_pkt_attrib *pnextattrib; + + //DbgPrint("+enqueue_reorder_recvframe()\n"); + + //_enter_critical_ex(&ppending_recvframe_queue->lock, &irql); + //_rtw_spinlock_ex(&ppending_recvframe_queue->lock); + + + phead = get_list_head(ppending_recvframe_queue); + plist = get_next(phead); + + while(rtw_end_of_queue_search(phead, plist) == _FALSE) + { + pnextrframe = LIST_CONTAINOR(plist, union recv_frame, u); + pnextattrib = &pnextrframe->u.hdr.attrib; + + if(SN_LESS(pnextattrib->seq_num, pattrib->seq_num)) + { + plist = get_next(plist); + } + else if( SN_EQUAL(pnextattrib->seq_num, pattrib->seq_num)) + { + //Duplicate entry is found!! Do not insert current entry. + //RT_TRACE(COMP_RX_REORDER, DBG_TRACE, ("InsertRxReorderList(): Duplicate packet is dropped!! IndicateSeq: %d, NewSeq: %d\n", pTS->RxIndicateSeq, SeqNum)); + + //_exit_critical_ex(&ppending_recvframe_queue->lock, &irql); + + return _FALSE; + } + else + { + break; + } + + //DbgPrint("enqueue_reorder_recvframe():while\n"); + + } + + + //_enter_critical_ex(&ppending_recvframe_queue->lock, &irql); + //_rtw_spinlock_ex(&ppending_recvframe_queue->lock); + + rtw_list_delete(&(prframe->u.hdr.list)); + + rtw_list_insert_tail(&(prframe->u.hdr.list), plist); + + //_rtw_spinunlock_ex(&ppending_recvframe_queue->lock); + //_exit_critical_ex(&ppending_recvframe_queue->lock, &irql); + + + //RT_TRACE(COMP_RX_REORDER, DBG_TRACE, ("InsertRxReorderList(): Pkt insert into buffer!! IndicateSeq: %d, NewSeq: %d\n", pTS->RxIndicateSeq, SeqNum)); + return _TRUE; + +} + +int recv_indicatepkts_in_order(_adapter *padapter, struct recv_reorder_ctrl *preorder_ctrl, int bforced); +int recv_indicatepkts_in_order(_adapter *padapter, struct recv_reorder_ctrl *preorder_ctrl, int bforced) +{ + //_irqL irql; + //u8 bcancelled; + _list *phead, *plist; + union recv_frame *prframe; + struct rx_pkt_attrib *pattrib; + //u8 index = 0; + int bPktInBuf = _FALSE; + struct recv_priv *precvpriv = &padapter->recvpriv; + _queue *ppending_recvframe_queue = &preorder_ctrl->pending_recvframe_queue; + + //DbgPrint("+recv_indicatepkts_in_order\n"); + + //_enter_critical_ex(&ppending_recvframe_queue->lock, &irql); + //_rtw_spinlock_ex(&ppending_recvframe_queue->lock); + + phead = get_list_head(ppending_recvframe_queue); + plist = get_next(phead); + +#if 0 + // Check if there is any other indication thread running. + if(pTS->RxIndicateState == RXTS_INDICATE_PROCESSING) + return; +#endif + + // Handling some condition for forced indicate case. + if(bforced==_TRUE) + { + if(rtw_is_list_empty(phead)) + { + // _exit_critical_ex(&ppending_recvframe_queue->lock, &irql); + //_rtw_spinunlock_ex(&ppending_recvframe_queue->lock); + return _TRUE; + } + + prframe = LIST_CONTAINOR(plist, union recv_frame, u); + pattrib = &prframe->u.hdr.attrib; + preorder_ctrl->indicate_seq = pattrib->seq_num; + #ifdef DBG_RX_SEQ + DBG_871X("DBG_RX_SEQ %s:%d IndicateSeq: %d, NewSeq: %d\n", __FUNCTION__, __LINE__, + preorder_ctrl->indicate_seq, pattrib->seq_num); + #endif + } + + // Prepare indication list and indication. + // Check if there is any packet need indicate. + while(!rtw_is_list_empty(phead)) + { + + prframe = LIST_CONTAINOR(plist, union recv_frame, u); + pattrib = &prframe->u.hdr.attrib; + + if(!SN_LESS(preorder_ctrl->indicate_seq, pattrib->seq_num)) + { + RT_TRACE(_module_rtl871x_recv_c_, _drv_notice_, + ("recv_indicatepkts_in_order: indicate=%d seq=%d amsdu=%d\n", + preorder_ctrl->indicate_seq, pattrib->seq_num, pattrib->amsdu)); + +#if 0 + // This protect buffer from overflow. + if(index >= REORDER_WIN_SIZE) + { + RT_ASSERT(FALSE, ("IndicateRxReorderList(): Buffer overflow!! \n")); + bPktInBuf = TRUE; + break; + } +#endif + + plist = get_next(plist); + rtw_list_delete(&(prframe->u.hdr.list)); + + if(SN_EQUAL(preorder_ctrl->indicate_seq, pattrib->seq_num)) + { + preorder_ctrl->indicate_seq = (preorder_ctrl->indicate_seq + 1) & 0xFFF; + #ifdef DBG_RX_SEQ + DBG_871X("DBG_RX_SEQ %s:%d IndicateSeq: %d, NewSeq: %d\n", __FUNCTION__, __LINE__, + preorder_ctrl->indicate_seq, pattrib->seq_num); + #endif + } + +#if 0 + index++; + if(index==1) + { + //Cancel previous pending timer. + //PlatformCancelTimer(Adapter, &pTS->RxPktPendingTimer); + if(bforced!=_TRUE) + { + //DBG_871X("_cancel_timer(&preorder_ctrl->reordering_ctrl_timer, &bcancelled);\n"); + _cancel_timer(&preorder_ctrl->reordering_ctrl_timer, &bcancelled); + } + } +#endif + + //Set this as a lock to make sure that only one thread is indicating packet. + //pTS->RxIndicateState = RXTS_INDICATE_PROCESSING; + + // Indicate packets + //RT_ASSERT((index<=REORDER_WIN_SIZE), ("RxReorderIndicatePacket(): Rx Reorder buffer full!! \n")); + + + //indicate this recv_frame + //DbgPrint("recv_indicatepkts_in_order, indicate_seq=%d, seq_num=%d\n", precvpriv->indicate_seq, pattrib->seq_num); + if(!pattrib->amsdu) + { + //DBG_871X("recv_indicatepkts_in_order, amsdu!=1, indicate_seq=%d, seq_num=%d\n", preorder_ctrl->indicate_seq, pattrib->seq_num); + + if ((padapter->bDriverStopped == _FALSE) && + (padapter->bSurpriseRemoved == _FALSE)) + { + + rtw_recv_indicatepkt(padapter, prframe);//indicate this recv_frame + + } + } + else if(pattrib->amsdu==1) + { + if(amsdu_to_msdu(padapter, prframe)!=_SUCCESS) + { + rtw_free_recvframe(prframe, &precvpriv->free_recv_queue); + } + } + else + { + //error condition; + } + + + //Update local variables. + bPktInBuf = _FALSE; + + } + else + { + bPktInBuf = _TRUE; + break; + } + + //DbgPrint("recv_indicatepkts_in_order():while\n"); + + } + + //_rtw_spinunlock_ex(&ppending_recvframe_queue->lock); + //_exit_critical_ex(&ppending_recvframe_queue->lock, &irql); + +/* + //Release the indication lock and set to new indication step. + if(bPktInBuf) + { + // Set new pending timer. + //pTS->RxIndicateState = RXTS_INDICATE_REORDER; + //PlatformSetTimer(Adapter, &pTS->RxPktPendingTimer, pHTInfo->RxReorderPendingTime); + //DBG_871X("_set_timer(&preorder_ctrl->reordering_ctrl_timer, REORDER_WAIT_TIME)\n"); + _set_timer(&preorder_ctrl->reordering_ctrl_timer, REORDER_WAIT_TIME); + } + else + { + //pTS->RxIndicateState = RXTS_INDICATE_IDLE; + } +*/ + //_exit_critical_ex(&ppending_recvframe_queue->lock, &irql); + + //return _TRUE; + return bPktInBuf; + +} + +int recv_indicatepkt_reorder(_adapter *padapter, union recv_frame *prframe); +int recv_indicatepkt_reorder(_adapter *padapter, union recv_frame *prframe) +{ + _irqL irql; + int retval = _SUCCESS; + struct rx_pkt_attrib *pattrib = &prframe->u.hdr.attrib; + struct recv_reorder_ctrl *preorder_ctrl = prframe->u.hdr.preorder_ctrl; + _queue *ppending_recvframe_queue = &preorder_ctrl->pending_recvframe_queue; + + if(!pattrib->amsdu) + { + //s1. + wlanhdr_to_ethhdr(prframe); + + //if ((pattrib->qos!=1) /*|| pattrib->priority!=0 || IS_MCAST(pattrib->ra)*/ + // || (pattrib->eth_type==0x0806) || (pattrib->ack_policy!=0)) + if (pattrib->qos!=1) + { + if ((padapter->bDriverStopped == _FALSE) && + (padapter->bSurpriseRemoved == _FALSE)) + { + RT_TRACE(_module_rtl871x_recv_c_, _drv_alert_, ("@@@@ recv_indicatepkt_reorder -recv_func recv_indicatepkt\n" )); + + rtw_recv_indicatepkt(padapter, prframe); + return _SUCCESS; + + } + + #ifdef DBG_RX_DROP_FRAME + DBG_871X("DBG_RX_DROP_FRAME %s pattrib->qos !=1\n", __FUNCTION__); + #endif + + return _FAIL; + + } + + if (preorder_ctrl->enable == _FALSE) + { + //indicate this recv_frame + preorder_ctrl->indicate_seq = pattrib->seq_num; + #ifdef DBG_RX_SEQ + DBG_871X("DBG_RX_SEQ %s:%d IndicateSeq: %d, NewSeq: %d\n", __FUNCTION__, __LINE__, + preorder_ctrl->indicate_seq, pattrib->seq_num); + #endif + + rtw_recv_indicatepkt(padapter, prframe); + + preorder_ctrl->indicate_seq = (preorder_ctrl->indicate_seq + 1)%4096; + #ifdef DBG_RX_SEQ + DBG_871X("DBG_RX_SEQ %s:%d IndicateSeq: %d, NewSeq: %d\n", __FUNCTION__, __LINE__, + preorder_ctrl->indicate_seq, pattrib->seq_num); + #endif + + return _SUCCESS; + } + +#ifndef CONFIG_RECV_REORDERING_CTRL + //indicate this recv_frame + rtw_recv_indicatepkt(padapter, prframe); + return _SUCCESS; +#endif + + } + else if(pattrib->amsdu==1) //temp filter -> means didn't support A-MSDUs in a A-MPDU + { + if (preorder_ctrl->enable == _FALSE) + { + preorder_ctrl->indicate_seq = pattrib->seq_num; + #ifdef DBG_RX_SEQ + DBG_871X("DBG_RX_SEQ %s:%d IndicateSeq: %d, NewSeq: %d\n", __FUNCTION__, __LINE__, + preorder_ctrl->indicate_seq, pattrib->seq_num); + #endif + + retval = amsdu_to_msdu(padapter, prframe); + + preorder_ctrl->indicate_seq = (preorder_ctrl->indicate_seq + 1)%4096; + #ifdef DBG_RX_SEQ + DBG_871X("DBG_RX_SEQ %s:%d IndicateSeq: %d, NewSeq: %d\n", __FUNCTION__, __LINE__, + preorder_ctrl->indicate_seq, pattrib->seq_num); + #endif + + if(retval != _SUCCESS){ + #ifdef DBG_RX_DROP_FRAME + DBG_871X("DBG_RX_DROP_FRAME %s amsdu_to_msdu fail\n", __FUNCTION__); + #endif + } + + return retval; + } + } + else + { + + } + + _enter_critical_bh(&ppending_recvframe_queue->lock, &irql); + + RT_TRACE(_module_rtl871x_recv_c_, _drv_notice_, + ("recv_indicatepkt_reorder: indicate=%d seq=%d\n", + preorder_ctrl->indicate_seq, pattrib->seq_num)); + + //s2. check if winstart_b(indicate_seq) needs to been updated + if(!check_indicate_seq(preorder_ctrl, pattrib->seq_num)) + { + //pHTInfo->RxReorderDropCounter++; + //ReturnRFDList(Adapter, pRfd); + //RT_TRACE(COMP_RX_REORDER, DBG_TRACE, ("RxReorderIndicatePacket() ==> Packet Drop!!\n")); + //_exit_critical_ex(&ppending_recvframe_queue->lock, &irql); + //return _FAIL; + + #ifdef DBG_RX_DROP_FRAME + DBG_871X("DBG_RX_DROP_FRAME %s check_indicate_seq fail\n", __FUNCTION__); + #endif +#if 0 + rtw_recv_indicatepkt(padapter, prframe); + + _exit_critical_bh(&ppending_recvframe_queue->lock, &irql); + + goto _success_exit; +#else + goto _err_exit; +#endif + } + + + //s3. Insert all packet into Reorder Queue to maintain its ordering. + if(!enqueue_reorder_recvframe(preorder_ctrl, prframe)) + { + //DbgPrint("recv_indicatepkt_reorder, enqueue_reorder_recvframe fail!\n"); + //_exit_critical_ex(&ppending_recvframe_queue->lock, &irql); + //return _FAIL; + #ifdef DBG_RX_DROP_FRAME + DBG_871X("DBG_RX_DROP_FRAME %s enqueue_reorder_recvframe fail\n", __FUNCTION__); + #endif + goto _err_exit; + } + + + //s4. + // Indication process. + // After Packet dropping and Sliding Window shifting as above, we can now just indicate the packets + // with the SeqNum smaller than latest WinStart and buffer other packets. + // + // For Rx Reorder condition: + // 1. All packets with SeqNum smaller than WinStart => Indicate + // 2. All packets with SeqNum larger than or equal to WinStart => Buffer it. + // + + //recv_indicatepkts_in_order(padapter, preorder_ctrl, _TRUE); + if(recv_indicatepkts_in_order(padapter, preorder_ctrl, _FALSE)==_TRUE) + { + _set_timer(&preorder_ctrl->reordering_ctrl_timer, REORDER_WAIT_TIME); + _exit_critical_bh(&ppending_recvframe_queue->lock, &irql); + } + else + { + _exit_critical_bh(&ppending_recvframe_queue->lock, &irql); + _cancel_timer_ex(&preorder_ctrl->reordering_ctrl_timer); + } + + +_success_exit: + + return _SUCCESS; + +_err_exit: + + _exit_critical_bh(&ppending_recvframe_queue->lock, &irql); + + return _FAIL; +} + + +void rtw_reordering_ctrl_timeout_handler(void *pcontext) +{ + _irqL irql; + struct recv_reorder_ctrl *preorder_ctrl = (struct recv_reorder_ctrl *)pcontext; + _adapter *padapter = preorder_ctrl->padapter; + _queue *ppending_recvframe_queue = &preorder_ctrl->pending_recvframe_queue; + + + if(padapter->bDriverStopped ||padapter->bSurpriseRemoved) + { + return; + } + + //DBG_871X("+rtw_reordering_ctrl_timeout_handler()=>\n"); + + _enter_critical_bh(&ppending_recvframe_queue->lock, &irql); + + if(recv_indicatepkts_in_order(padapter, preorder_ctrl, _TRUE)==_TRUE) + { + _set_timer(&preorder_ctrl->reordering_ctrl_timer, REORDER_WAIT_TIME); + } + + _exit_critical_bh(&ppending_recvframe_queue->lock, &irql); + +} + +int process_recv_indicatepkts(_adapter *padapter, union recv_frame *prframe); +int process_recv_indicatepkts(_adapter *padapter, union recv_frame *prframe) +{ + int retval = _SUCCESS; + //struct recv_priv *precvpriv = &padapter->recvpriv; + //struct rx_pkt_attrib *pattrib = &prframe->u.hdr.attrib; + struct mlme_priv *pmlmepriv = &padapter->mlmepriv; +#ifdef CONFIG_TDLS + struct sta_info *psta = prframe->u.hdr.psta; +#endif //CONFIG_TDLS + +#ifdef CONFIG_80211N_HT + + struct ht_priv *phtpriv = &pmlmepriv->htpriv; + +#ifdef CONFIG_TDLS + if( (phtpriv->ht_option==_TRUE) || + ((psta->tdls_sta_state & TDLS_LINKED_STATE) && + (psta->htpriv.ht_option==_TRUE) && + (psta->htpriv.ampdu_enable==_TRUE))) //B/G/N Mode +#else + if(phtpriv->ht_option==_TRUE) //B/G/N Mode +#endif //CONFIG_TDLS + { + //prframe->u.hdr.preorder_ctrl = &precvpriv->recvreorder_ctrl[pattrib->priority]; + + if(recv_indicatepkt_reorder(padapter, prframe)!=_SUCCESS)// including perform A-MPDU Rx Ordering Buffer Control + { + #ifdef DBG_RX_DROP_FRAME + DBG_871X("DBG_RX_DROP_FRAME %s recv_indicatepkt_reorder error!\n", __FUNCTION__); + #endif + + if ((padapter->bDriverStopped == _FALSE) && + (padapter->bSurpriseRemoved == _FALSE)) + { + retval = _FAIL; + return retval; + } + } + } + else //B/G mode +#endif + { + retval=wlanhdr_to_ethhdr (prframe); + if(retval != _SUCCESS) + { + RT_TRACE(_module_rtl871x_recv_c_,_drv_err_,("wlanhdr_to_ethhdr: drop pkt \n")); + #ifdef DBG_RX_DROP_FRAME + DBG_871X("DBG_RX_DROP_FRAME %s wlanhdr_to_ethhdr error!\n", __FUNCTION__); + #endif + return retval; + } + + if ((padapter->bDriverStopped ==_FALSE)&&( padapter->bSurpriseRemoved==_FALSE)) + { + //indicate this recv_frame + RT_TRACE(_module_rtl871x_recv_c_, _drv_notice_, ("@@@@ process_recv_indicatepkts- recv_func recv_indicatepkt\n" )); + rtw_recv_indicatepkt(padapter, prframe); + + + } + else + { + RT_TRACE(_module_rtl871x_recv_c_, _drv_notice_, ("@@@@ process_recv_indicatepkts- recv_func free_indicatepkt\n" )); + + RT_TRACE(_module_rtl871x_recv_c_, _drv_notice_, ("recv_func:bDriverStopped(%d) OR bSurpriseRemoved(%d)", padapter->bDriverStopped, padapter->bSurpriseRemoved)); + retval = _FAIL; + return retval; + } + + } + + return retval; + +} + +int recv_func_prehandle(_adapter *padapter, union recv_frame *rframe) +{ + int ret = _SUCCESS; + struct rx_pkt_attrib *pattrib = &rframe->u.hdr.attrib; + struct recv_priv *precvpriv = &padapter->recvpriv; + _queue *pfree_recv_queue = &padapter->recvpriv.free_recv_queue; + +#ifdef CONFIG_MP_INCLUDED + struct mlme_priv *pmlmepriv = &padapter->mlmepriv; +#endif //CONFIG_MP_INCLUDED + +#ifdef CONFIG_MP_INCLUDED + if ((check_fwstate(pmlmepriv, WIFI_MP_STATE) == _TRUE))//&&(padapter->mppriv.check_mp_pkt == 0)) + { + if (pattrib->crc_err == 1) + padapter->mppriv.rx_crcerrpktcount++; + else + padapter->mppriv.rx_pktcount++; + + if (check_fwstate(pmlmepriv, WIFI_MP_LPBK_STATE) == _FALSE) { + RT_TRACE(_module_rtl871x_recv_c_, _drv_alert_, ("MP - Not in loopback mode , drop pkt \n")); + ret = _FAIL; + rtw_free_recvframe(rframe, pfree_recv_queue);//free this recv_frame + goto exit; + } + } +#endif + + //check the frame crtl field and decache + ret = validate_recv_frame(padapter, rframe); + if (ret != _SUCCESS) + { + RT_TRACE(_module_rtl871x_recv_c_, _drv_info_, ("recv_func: validate_recv_frame fail! drop pkt\n")); + rtw_free_recvframe(rframe, pfree_recv_queue);//free this recv_frame + goto exit; + } + +exit: + return ret; +} + +int recv_func_posthandle(_adapter *padapter, union recv_frame *prframe) +{ + int ret = _SUCCESS; + union recv_frame *orig_prframe = prframe; + struct rx_pkt_attrib *pattrib = &prframe->u.hdr.attrib; + struct recv_priv *precvpriv = &padapter->recvpriv; + _queue *pfree_recv_queue = &padapter->recvpriv.free_recv_queue; + +#ifdef CONFIG_MP_INCLUDED + struct mlme_priv *pmlmepriv = &padapter->mlmepriv; +#endif //CONFIG_MP_INCLUDED + +#ifdef CONFIG_TDLS + u8 *psnap_type, *pcategory; + struct sta_info *ptdls_sta = NULL; +#endif //CONFIG_TDLS + + + // DATA FRAME + rtw_led_control(padapter, LED_CTL_RX); + + prframe = decryptor(padapter, prframe); + if (prframe == NULL) { + RT_TRACE(_module_rtl871x_recv_c_,_drv_err_,("decryptor: drop pkt\n")); + #ifdef DBG_RX_DROP_FRAME + DBG_871X("DBG_RX_DROP_FRAME %s decryptor: drop pkt\n", __FUNCTION__); + #endif + ret = _FAIL; + goto _recv_data_drop; + } + +#if 0 + if ( padapter->adapter_type == PRIMARY_ADAPTER ) + { + DBG_871X("+++\n"); + { + int i; + u8 *ptr = get_recvframe_data(prframe); + for(i=0; i<140;i=i+8) + DBG_871X("%02X:%02X:%02X:%02X:%02X:%02X:%02X:%02X:", *(ptr+i), + *(ptr+i+1), *(ptr+i+2) ,*(ptr+i+3) ,*(ptr+i+4),*(ptr+i+5), *(ptr+i+6), *(ptr+i+7)); + + } + DBG_871X("---\n"); + } +#endif //RTK_DMP_PLATFORM + +#ifdef CONFIG_TDLS + //check TDLS frame + psnap_type = get_recvframe_data(orig_prframe); + psnap_type+=pattrib->hdrlen + pattrib->iv_len+SNAP_SIZE; + pcategory = psnap_type + ETH_TYPE_LEN + PAYLOAD_TYPE_LEN; + + if((_rtw_memcmp(psnap_type, SNAP_ETH_TYPE_TDLS, ETH_TYPE_LEN)) && + ((*pcategory==RTW_WLAN_CATEGORY_TDLS) || (*pcategory==RTW_WLAN_CATEGORY_P2P))){ + ret = OnTDLS(padapter, prframe); //all of functions will return _FAIL + goto _exit_recv_func; + } +#endif //CONFIG_TDLS + + prframe = recvframe_chk_defrag(padapter, prframe); + if(prframe==NULL) { + RT_TRACE(_module_rtl871x_recv_c_,_drv_err_,("recvframe_chk_defrag: drop pkt\n")); + #ifdef DBG_RX_DROP_FRAME + DBG_871X("DBG_RX_DROP_FRAME %s recvframe_chk_defrag: drop pkt\n", __FUNCTION__); + #endif + goto _recv_data_drop; + } + + prframe=portctrl(padapter, prframe); + if (prframe == NULL) { + RT_TRACE(_module_rtl871x_recv_c_,_drv_err_,("portctrl: drop pkt \n")); + #ifdef DBG_RX_DROP_FRAME + DBG_871X("DBG_RX_DROP_FRAME %s portctrl: drop pkt\n", __FUNCTION__); + #endif + ret = _FAIL; + goto _recv_data_drop; + } + +#ifdef CONFIG_TDLS + if(padapter->tdlsinfo.setup_state == TDLS_LINKED_STATE) + ptdls_sta = rtw_get_stainfo(&padapter->stapriv, pattrib->src); + count_rx_stats(padapter, prframe, ptdls_sta); +#else + count_rx_stats(padapter, prframe, NULL); +#endif //CONFIG_TDLS + +#ifdef CONFIG_80211N_HT + + ret = process_recv_indicatepkts(padapter, prframe); + if (ret != _SUCCESS) + { + RT_TRACE(_module_rtl871x_recv_c_,_drv_err_,("recv_func: process_recv_indicatepkts fail! \n")); + #ifdef DBG_RX_DROP_FRAME + DBG_871X("DBG_RX_DROP_FRAME %s recv_func: process_recv_indicatepkts fail!\n", __FUNCTION__); + #endif + rtw_free_recvframe(orig_prframe, pfree_recv_queue);//free this recv_frame + goto _recv_data_drop; + } + +#else // CONFIG_80211N_HT + + if (!pattrib->amsdu) + { + ret = wlanhdr_to_ethhdr (prframe); + if (ret != _SUCCESS) + { + RT_TRACE(_module_rtl871x_recv_c_,_drv_err_,("wlanhdr_to_ethhdr: drop pkt \n")); + #ifdef DBG_RX_DROP_FRAME + DBG_871X("DBG_RX_DROP_FRAME %s wlanhdr_to_ethhdr: drop pkt\n", __FUNCTION__); + #endif + rtw_free_recvframe(orig_prframe, pfree_recv_queue);//free this recv_frame + goto _recv_data_drop; + } + + if ((padapter->bDriverStopped == _FALSE) && (padapter->bSurpriseRemoved == _FALSE)) + { + RT_TRACE(_module_rtl871x_recv_c_, _drv_alert_, ("@@@@ recv_func: recv_func rtw_recv_indicatepkt\n" )); + //indicate this recv_frame + ret = rtw_recv_indicatepkt(padapter, prframe); + if (ret != _SUCCESS) + { + #ifdef DBG_RX_DROP_FRAME + DBG_871X("DBG_RX_DROP_FRAME %s rtw_recv_indicatepkt fail!\n", __FUNCTION__); + #endif + goto _recv_data_drop; + } + } + else + { + RT_TRACE(_module_rtl871x_recv_c_, _drv_alert_, ("@@@@ recv_func: rtw_free_recvframe\n" )); + RT_TRACE(_module_rtl871x_recv_c_, _drv_debug_, ("recv_func:bDriverStopped(%d) OR bSurpriseRemoved(%d)", padapter->bDriverStopped, padapter->bSurpriseRemoved)); + #ifdef DBG_RX_DROP_FRAME + DBG_871X("DBG_RX_DROP_FRAME %s ecv_func:bDriverStopped(%d) OR bSurpriseRemoved(%d)\n", __FUNCTION__, + padapter->bDriverStopped, padapter->bSurpriseRemoved); + #endif + ret = _FAIL; + rtw_free_recvframe(orig_prframe, pfree_recv_queue); //free this recv_frame + } + + } + else if(pattrib->amsdu==1) + { + + ret = amsdu_to_msdu(padapter, prframe); + if(ret != _SUCCESS) + { + #ifdef DBG_RX_DROP_FRAME + DBG_871X("DBG_RX_DROP_FRAME %s amsdu_to_msdu fail\n", __FUNCTION__); + #endif + rtw_free_recvframe(orig_prframe, pfree_recv_queue); + goto _recv_data_drop; + } + } + else + { + #ifdef DBG_RX_DROP_FRAME + DBG_871X("DBG_RX_DROP_FRAME %s what is this condition??\n", __FUNCTION__); + #endif + goto _recv_data_drop; + } +#endif // CONFIG_80211N_HT + +_exit_recv_func: + return ret; + +_recv_data_drop: + precvpriv->rx_drop++; + return ret; +} + + +int recv_func(_adapter *padapter, union recv_frame *rframe); +int recv_func(_adapter *padapter, union recv_frame *rframe) +{ + int ret; + struct rx_pkt_attrib *prxattrib = &rframe->u.hdr.attrib; + struct recv_priv *recvpriv = &padapter->recvpriv; + struct security_priv *psecuritypriv=&padapter->securitypriv; + struct mlme_priv *mlmepriv = &padapter->mlmepriv; + + /* check if need to handle uc_swdec_pending_queue*/ + if (check_fwstate(mlmepriv, WIFI_STATION_STATE) && psecuritypriv->busetkipkey) + { + union recv_frame *pending_frame; + _irqL irqL; + + while((pending_frame=rtw_alloc_recvframe(&padapter->recvpriv.uc_swdec_pending_queue))) { + if (recv_func_posthandle(padapter, pending_frame) == _SUCCESS) + DBG_871X("%s: dequeue uc_swdec_pending_queue\n", __func__); + } + } + + ret = recv_func_prehandle(padapter, rframe); + + if(ret == _SUCCESS) { + + /* check if need to enqueue into uc_swdec_pending_queue*/ + if (check_fwstate(mlmepriv, WIFI_STATION_STATE) && + !IS_MCAST(prxattrib->ra) && prxattrib->encrypt>0 && + (prxattrib->bdecrypted == 0 ||psecuritypriv->sw_decrypt == _TRUE) && + !is_wep_enc(psecuritypriv->dot11PrivacyAlgrthm) && + !psecuritypriv->busetkipkey) { + rtw_enqueue_recvframe(rframe, &padapter->recvpriv.uc_swdec_pending_queue); + DBG_871X("%s: no key, enqueue uc_swdec_pending_queue\n", __func__); + goto exit; + } + + ret = recv_func_posthandle(padapter, rframe); + } + +exit: + return ret; +} + + +s32 rtw_recv_entry(union recv_frame *precvframe) +{ + _adapter *padapter; + struct recv_priv *precvpriv; + s32 ret=_SUCCESS; + +_func_enter_; + +// RT_TRACE(_module_rtl871x_recv_c_,_drv_info_,("+rtw_recv_entry\n")); + + padapter = precvframe->u.hdr.adapter; + + precvpriv = &padapter->recvpriv; + + + if ((ret = recv_func(padapter, precvframe)) == _FAIL) + { + RT_TRACE(_module_rtl871x_recv_c_,_drv_info_,("rtw_recv_entry: recv_func return fail!!!\n")); + goto _recv_entry_drop; + } + + + precvpriv->rx_pkts++; + +_func_exit_; + + return ret; + +_recv_entry_drop: + +#ifdef CONFIG_MP_INCLUDED + padapter->mppriv.rx_pktloss = precvpriv->rx_drop; +#endif + + //RT_TRACE(_module_rtl871x_recv_c_,_drv_err_,("_recv_entry_drop\n")); + +_func_exit_; + + return ret; +} + +#ifdef CONFIG_NEW_SIGNAL_STAT_PROCESS +void rtw_signal_stat_timer_hdl(RTW_TIMER_HDL_ARGS){ + _adapter *adapter = (_adapter *)FunctionContext; + struct recv_priv *recvpriv = &adapter->recvpriv; + + u32 tmp_s, tmp_q; + u8 avg_signal_strength = 0; + u8 avg_signal_qual = 0; + u32 num_signal_strength = 0; + u32 num_signal_qual = 0; + u8 _alpha = 3; // this value is based on converging_constant = 5000 and sampling_interval = 1000 + + if(adapter->recvpriv.is_signal_dbg) { + //update the user specific value, signal_strength_dbg, to signal_strength, rssi + adapter->recvpriv.signal_strength= adapter->recvpriv.signal_strength_dbg; + adapter->recvpriv.rssi=(s8)translate_percentage_to_dbm((u8)adapter->recvpriv.signal_strength_dbg); + } else { + + if(recvpriv->signal_strength_data.update_req == 0) {// update_req is clear, means we got rx + avg_signal_strength = recvpriv->signal_strength_data.avg_val; + num_signal_strength = recvpriv->signal_strength_data.total_num; + // after avg_vals are accquired, we can re-stat the signal values + recvpriv->signal_strength_data.update_req = 1; + } + + if(recvpriv->signal_qual_data.update_req == 0) {// update_req is clear, means we got rx + avg_signal_qual = recvpriv->signal_qual_data.avg_val; + num_signal_qual = recvpriv->signal_qual_data.total_num; + // after avg_vals are accquired, we can re-stat the signal values + recvpriv->signal_qual_data.update_req = 1; + } + + if (num_signal_strength == 0) { + if (rtw_get_on_cur_ch_time(adapter) == 0 + || rtw_get_passing_time_ms(rtw_get_on_cur_ch_time(adapter)) < 2 * adapter->mlmeextpriv.mlmext_info.bcn_interval + ) { + goto set_timer; + } + } + + if(check_fwstate(&adapter->mlmepriv, _FW_UNDER_SURVEY) == _TRUE + || check_fwstate(&adapter->mlmepriv, _FW_LINKED) == _FALSE + ) { + goto set_timer; + } + + #ifdef CONFIG_CONCURRENT_MODE + if (check_buddy_fwstate(adapter, _FW_UNDER_SURVEY) == _TRUE) + goto set_timer; + #endif + + //update value of signal_strength, rssi, signal_qual + tmp_s = (avg_signal_strength+(_alpha-1)*recvpriv->signal_strength); + if(tmp_s %_alpha) + tmp_s = tmp_s/_alpha + 1; + else + tmp_s = tmp_s/_alpha; + if(tmp_s>100) + tmp_s = 100; + + tmp_q = (avg_signal_qual+(_alpha-1)*recvpriv->signal_qual); + if(tmp_q %_alpha) + tmp_q = tmp_q/_alpha + 1; + else + tmp_q = tmp_q/_alpha; + if(tmp_q>100) + tmp_q = 100; + + recvpriv->signal_strength = tmp_s; + recvpriv->rssi = (s8)translate_percentage_to_dbm(tmp_s); + recvpriv->signal_qual = tmp_q; + + #if defined(DBG_RX_SIGNAL_DISPLAY_PROCESSING) && 1 + DBG_871X(FUNC_ADPT_FMT" signal_strength:%3u, rssi:%3d, signal_qual:%3u" + ", num_signal_strength:%u, num_signal_qual:%u" + ", on_cur_ch_ms:%d" + "\n" + , FUNC_ADPT_ARG(adapter) + , recvpriv->signal_strength + , recvpriv->rssi + , recvpriv->signal_qual + , num_signal_strength, num_signal_qual + , rtw_get_on_cur_ch_time(adapter) ? rtw_get_passing_time_ms(rtw_get_on_cur_ch_time(adapter)) : 0 + ); + #endif + } + +set_timer: + rtw_set_signal_stat_timer(recvpriv); + +} +#endif //CONFIG_NEW_SIGNAL_STAT_PROCESS --- linux-raspi2-4.2.0.orig/drivers/net/wireless/rtl8192cu/core/rtw_rf.c +++ linux-raspi2-4.2.0/drivers/net/wireless/rtl8192cu/core/rtw_rf.c @@ -0,0 +1,94 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved. + * + * 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 + * published by the Free Software Foundation. + * + * 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 Street, Fifth Floor, Boston, MA 02110, USA + * + * + ******************************************************************************/ +#define _RTW_RF_C_ + +#include +#include +#include +#include +#include + + +struct ch_freq { + u32 channel; + u32 frequency; +}; + +struct ch_freq ch_freq_map[] = { + {1, 2412},{2, 2417},{3, 2422},{4, 2427},{5, 2432}, + {6, 2437},{7, 2442},{8, 2447},{9, 2452},{10, 2457}, + {11, 2462},{12, 2467},{13, 2472},{14, 2484}, + /* UNII */ + {36, 5180},{40, 5200},{44, 5220},{48, 5240},{52, 5260}, + {56, 5280},{60, 5300},{64, 5320},{149, 5745},{153, 5765}, + {157, 5785},{161, 5805},{165, 5825},{167, 5835},{169, 5845}, + {171, 5855},{173, 5865}, + /* HiperLAN2 */ + {100, 5500},{104, 5520},{108, 5540},{112, 5560},{116, 5580}, + {120, 5600},{124, 5620},{128, 5640},{132, 5660},{136, 5680}, + {140, 5700}, + /* Japan MMAC */ + {34, 5170},{38, 5190},{42, 5210},{46, 5230}, + /* Japan */ + {184, 4920},{188, 4940},{192, 4960},{196, 4980}, + {208, 5040},/* Japan, means J08 */ + {212, 5060},/* Japan, means J12 */ + {216, 5080},/* Japan, means J16 */ +}; + +int ch_freq_map_num = (sizeof(ch_freq_map) / sizeof(struct ch_freq)); + +u32 rtw_ch2freq(u32 channel) +{ + u8 i; + u32 freq = 0; + + for (i = 0; i < ch_freq_map_num; i++) + { + if (channel == ch_freq_map[i].channel) + { + freq = ch_freq_map[i].frequency; + break; + } + } + if (i == ch_freq_map_num) + freq = 2412; + + return freq; +} + +u32 rtw_freq2ch(u32 freq) +{ + u8 i; + u32 ch = 0; + + for (i = 0; i < ch_freq_map_num; i++) + { + if (freq == ch_freq_map[i].frequency) + { + ch = ch_freq_map[i].channel; + break; + } + } + if (i == ch_freq_map_num) + ch = 1; + + return ch; +} --- linux-raspi2-4.2.0.orig/drivers/net/wireless/rtl8192cu/core/rtw_security.c +++ linux-raspi2-4.2.0/drivers/net/wireless/rtl8192cu/core/rtw_security.c @@ -0,0 +1,3114 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved. + * + * 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 + * published by the Free Software Foundation. + * + * 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 Street, Fifth Floor, Boston, MA 02110, USA + * + * + ******************************************************************************/ +#define _RTW_SECURITY_C_ + +#include +#include +#include +#include +#include + + +//=====WEP related===== + +#define CRC32_POLY 0x04c11db7 + +struct arc4context +{ + u32 x; + u32 y; + u8 state[256]; +}; + + +static void arcfour_init(struct arc4context *parc4ctx, u8 * key,u32 key_len) +{ + u32 t, u; + u32 keyindex; + u32 stateindex; + u8 * state; + u32 counter; +_func_enter_; + state = parc4ctx->state; + parc4ctx->x = 0; + parc4ctx->y = 0; + for (counter = 0; counter < 256; counter++) + state[counter] = (u8)counter; + keyindex = 0; + stateindex = 0; + for (counter = 0; counter < 256; counter++) + { + t = state[counter]; + stateindex = (stateindex + key[keyindex] + t) & 0xff; + u = state[stateindex]; + state[stateindex] = (u8)t; + state[counter] = (u8)u; + if (++keyindex >= key_len) + keyindex = 0; + } +_func_exit_; +} +static u32 arcfour_byte( struct arc4context *parc4ctx) +{ + u32 x; + u32 y; + u32 sx, sy; + u8 * state; +_func_enter_; + state = parc4ctx->state; + x = (parc4ctx->x + 1) & 0xff; + sx = state[x]; + y = (sx + parc4ctx->y) & 0xff; + sy = state[y]; + parc4ctx->x = x; + parc4ctx->y = y; + state[y] = (u8)sx; + state[x] = (u8)sy; +_func_exit_; + return state[(sx + sy) & 0xff]; +} + + +static void arcfour_encrypt( struct arc4context *parc4ctx, + u8 * dest, + u8 * src, + u32 len) +{ + u32 i; +_func_enter_; + for (i = 0; i < len; i++) + dest[i] = src[i] ^ (unsigned char)arcfour_byte(parc4ctx); +_func_exit_; +} + +static sint bcrc32initialized = 0; +static u32 crc32_table[256]; + + +static u8 crc32_reverseBit( u8 data) +{ + return( (u8)((data<<7)&0x80) | ((data<<5)&0x40) | ((data<<3)&0x20) | ((data<<1)&0x10) | ((data>>1)&0x08) | ((data>>3)&0x04) | ((data>>5)&0x02) | ((data>>7)&0x01) ); +} + +static void crc32_init(void) +{ +_func_enter_; + if (bcrc32initialized == 1) + goto exit; + else{ + sint i, j; + u32 c; + u8 *p=(u8 *)&c, *p1; + u8 k; + + c = 0x12340000; + + for (i = 0; i < 256; ++i) + { + k = crc32_reverseBit((u8)i); + for (c = ((u32)k) << 24, j = 8; j > 0; --j){ + c = c & 0x80000000 ? (c << 1) ^ CRC32_POLY : (c << 1); + } + p1 = (u8 *)&crc32_table[i]; + + p1[0] = crc32_reverseBit(p[3]); + p1[1] = crc32_reverseBit(p[2]); + p1[2] = crc32_reverseBit(p[1]); + p1[3] = crc32_reverseBit(p[0]); + } + bcrc32initialized= 1; + } +exit: +_func_exit_; +} + +static u32 getcrc32(u8 *buf, sint len) +{ + u8 *p; + u32 crc; +_func_enter_; + if (bcrc32initialized == 0) crc32_init(); + + crc = 0xffffffff; /* preload shift register, per CRC-32 spec */ + + for (p = buf; len > 0; ++p, --len) + { + crc = crc32_table[ (crc ^ *p) & 0xff] ^ (crc >> 8); + } +_func_exit_; + return ~crc; /* transmit complement, per CRC-32 spec */ +} + + +/* + Need to consider the fragment situation +*/ +void rtw_wep_encrypt(_adapter *padapter, u8 *pxmitframe) +{ // exclude ICV + + unsigned char crc[4]; + struct arc4context mycontext; + + sint curfragnum,length; + u32 keylength; + + u8 *pframe, *payload,*iv; //,*wepkey + u8 wepkey[16]; + struct pkt_attrib *pattrib = &((struct xmit_frame*)pxmitframe)->attrib; + struct security_priv *psecuritypriv=&padapter->securitypriv; + struct xmit_priv *pxmitpriv=&padapter->xmitpriv; + +_func_enter_; + + + if(((struct xmit_frame*)pxmitframe)->buf_addr==NULL) + return; + +#ifdef CONFIG_USB_TX_AGGREGATION + pframe = ((struct xmit_frame*)pxmitframe)->buf_addr + TXDESC_SIZE + + (((struct xmit_frame*)pxmitframe)->pkt_offset * PACKET_OFFSET_SZ); +#else + pframe = ((struct xmit_frame*)pxmitframe)->buf_addr + TXDESC_OFFSET; +#endif + + //start to encrypt each fragment + if((pattrib->encrypt==_WEP40_)||(pattrib->encrypt==_WEP104_)) + { + keylength=psecuritypriv->dot11DefKeylen[psecuritypriv->dot11PrivacyKeyIndex]; + + for(curfragnum=0;curfragnumnr_frags;curfragnum++) + { + iv=pframe+pattrib->hdrlen; + _rtw_memcpy(&wepkey[0], iv, 3); + _rtw_memcpy(&wepkey[3], &psecuritypriv->dot11DefKey[psecuritypriv->dot11PrivacyKeyIndex].skey[0],keylength); + payload=pframe+pattrib->iv_len+pattrib->hdrlen; + + if((curfragnum+1)==pattrib->nr_frags) + { //the last fragment + + length=pattrib->last_txcmdsz-pattrib->hdrlen-pattrib->iv_len- pattrib->icv_len; + + *((u32 *)crc)=cpu_to_le32(getcrc32(payload,length)); + + arcfour_init(&mycontext, wepkey,3+keylength); + arcfour_encrypt(&mycontext, payload, payload, length); + arcfour_encrypt(&mycontext, payload+length, crc, 4); + + } + else + { + length=pxmitpriv->frag_len-pattrib->hdrlen-pattrib->iv_len-pattrib->icv_len ; + *((u32 *)crc)=cpu_to_le32(getcrc32(payload,length)); + arcfour_init(&mycontext, wepkey,3+keylength); + arcfour_encrypt(&mycontext, payload, payload, length); + arcfour_encrypt(&mycontext, payload+length, crc, 4); + + pframe+=pxmitpriv->frag_len; + pframe=(u8 *)RND4((SIZE_PTR)(pframe)); + + } + + } + + } + +_func_exit_; + +} + +void rtw_wep_decrypt(_adapter *padapter, u8 *precvframe) +{ + // exclude ICV + u8 crc[4]; + struct arc4context mycontext; + sint length; + u32 keylength; + u8 *pframe, *payload,*iv,wepkey[16]; + u8 keyindex; + struct rx_pkt_attrib *prxattrib = &(((union recv_frame*)precvframe)->u.hdr.attrib); + struct security_priv *psecuritypriv=&padapter->securitypriv; + +_func_enter_; + + pframe=(unsigned char *)((union recv_frame*)precvframe)->u.hdr.rx_data; + + //start to decrypt recvframe + if((prxattrib->encrypt==_WEP40_)||(prxattrib->encrypt==_WEP104_)) + { + iv=pframe+prxattrib->hdrlen; + //keyindex=(iv[3]&0x3); + keyindex = prxattrib->key_index; + keylength=psecuritypriv->dot11DefKeylen[keyindex]; + _rtw_memcpy(&wepkey[0], iv, 3); + //_rtw_memcpy(&wepkey[3], &psecuritypriv->dot11DefKey[psecuritypriv->dot11PrivacyKeyIndex].skey[0],keylength); + _rtw_memcpy(&wepkey[3], &psecuritypriv->dot11DefKey[keyindex].skey[0],keylength); + length= ((union recv_frame *)precvframe)->u.hdr.len-prxattrib->hdrlen-prxattrib->iv_len; + + payload=pframe+prxattrib->iv_len+prxattrib->hdrlen; + + //decrypt payload include icv + arcfour_init(&mycontext, wepkey,3+keylength); + arcfour_encrypt(&mycontext, payload, payload, length); + + //calculate icv and compare the icv + *((u32 *)crc)=le32_to_cpu(getcrc32(payload,length-4)); + + if(crc[3]!=payload[length-1] || crc[2]!=payload[length-2] || crc[1]!=payload[length-3] || crc[0]!=payload[length-4]) + { + RT_TRACE(_module_rtl871x_security_c_,_drv_err_,("rtw_wep_decrypt:icv error crc[3](%x)!=payload[length-1](%x) || crc[2](%x)!=payload[length-2](%x) || crc[1](%x)!=payload[length-3](%x) || crc[0](%x)!=payload[length-4](%x)\n", + crc[3],payload[length-1],crc[2],payload[length-2],crc[1],payload[length-3],crc[0],payload[length-4])); + } + + } + +_func_exit_; + + return; + +} + +//3 =====TKIP related===== + +static u32 secmicgetuint32( u8 * p ) +// Convert from Byte[] to Us4Byte32 in a portable way +{ + s32 i; + u32 res = 0; +_func_enter_; + for( i=0; i<4; i++ ) + { + res |= ((u32)(*p++)) << (8*i); + } +_func_exit_; + return res; +} + +static void secmicputuint32( u8 * p, u32 val ) +// Convert from Us4Byte32 to Byte[] in a portable way +{ + long i; +_func_enter_; + for( i=0; i<4; i++ ) + { + *p++ = (u8) (val & 0xff); + val >>= 8; + } +_func_exit_; +} + +static void secmicclear(struct mic_data *pmicdata) +{ +// Reset the state to the empty message. +_func_enter_; + pmicdata->L = pmicdata->K0; + pmicdata->R = pmicdata->K1; + pmicdata->nBytesInM = 0; + pmicdata->M = 0; +_func_exit_; +} + +void rtw_secmicsetkey(struct mic_data *pmicdata, u8 * key ) +{ + // Set the key +_func_enter_; + pmicdata->K0 = secmicgetuint32( key ); + pmicdata->K1 = secmicgetuint32( key + 4 ); + // and reset the message + secmicclear(pmicdata); +_func_exit_; +} + +void rtw_secmicappendbyte(struct mic_data *pmicdata, u8 b ) +{ +_func_enter_; + // Append the byte to our word-sized buffer + pmicdata->M |= ((unsigned long)b) << (8*pmicdata->nBytesInM); + pmicdata->nBytesInM++; + // Process the word if it is full. + if( pmicdata->nBytesInM >= 4 ) + { + pmicdata->L ^= pmicdata->M; + pmicdata->R ^= ROL32( pmicdata->L, 17 ); + pmicdata->L += pmicdata->R; + pmicdata->R ^= ((pmicdata->L & 0xff00ff00) >> 8) | ((pmicdata->L & 0x00ff00ff) << 8); + pmicdata->L += pmicdata->R; + pmicdata->R ^= ROL32( pmicdata->L, 3 ); + pmicdata->L += pmicdata->R; + pmicdata->R ^= ROR32( pmicdata->L, 2 ); + pmicdata->L += pmicdata->R; + // Clear the buffer + pmicdata->M = 0; + pmicdata->nBytesInM = 0; + } +_func_exit_; +} + +void rtw_secmicappend(struct mic_data *pmicdata, u8 * src, u32 nbytes ) +{ +_func_enter_; + // This is simple + while( nbytes > 0 ) + { + rtw_secmicappendbyte(pmicdata, *src++ ); + nbytes--; + } +_func_exit_; +} + +void rtw_secgetmic(struct mic_data *pmicdata, u8 * dst ) +{ +_func_enter_; + // Append the minimum padding + rtw_secmicappendbyte(pmicdata, 0x5a ); + rtw_secmicappendbyte(pmicdata, 0 ); + rtw_secmicappendbyte(pmicdata, 0 ); + rtw_secmicappendbyte(pmicdata, 0 ); + rtw_secmicappendbyte(pmicdata, 0 ); + // and then zeroes until the length is a multiple of 4 + while( pmicdata->nBytesInM != 0 ) + { + rtw_secmicappendbyte(pmicdata, 0 ); + } + // The appendByte function has already computed the result. + secmicputuint32( dst, pmicdata->L ); + secmicputuint32( dst+4, pmicdata->R ); + // Reset to the empty message. + secmicclear(pmicdata); +_func_exit_; +} + + +void rtw_seccalctkipmic(u8 * key,u8 *header,u8 *data,u32 data_len,u8 *mic_code, u8 pri) +{ + + struct mic_data micdata; + u8 priority[4]={0x0,0x0,0x0,0x0}; +_func_enter_; + rtw_secmicsetkey(&micdata, key); + priority[0]=pri; + + /* Michael MIC pseudo header: DA, SA, 3 x 0, Priority */ + if(header[1]&1){ //ToDS==1 + rtw_secmicappend(&micdata, &header[16], 6); //DA + if(header[1]&2) //From Ds==1 + rtw_secmicappend(&micdata, &header[24], 6); + else + rtw_secmicappend(&micdata, &header[10], 6); + } + else{ //ToDS==0 + rtw_secmicappend(&micdata, &header[4], 6); //DA + if(header[1]&2) //From Ds==1 + rtw_secmicappend(&micdata, &header[16], 6); + else + rtw_secmicappend(&micdata, &header[10], 6); + + } + rtw_secmicappend(&micdata, &priority[0], 4); + + + rtw_secmicappend(&micdata, data, data_len); + + rtw_secgetmic(&micdata,mic_code); +_func_exit_; +} + + + + +/* macros for extraction/creation of unsigned char/unsigned short values */ +#define RotR1(v16) ((((v16) >> 1) & 0x7FFF) ^ (((v16) & 1) << 15)) +#define Lo8(v16) ((u8)( (v16) & 0x00FF)) +#define Hi8(v16) ((u8)(((v16) >> 8) & 0x00FF)) +#define Lo16(v32) ((u16)( (v32) & 0xFFFF)) +#define Hi16(v32) ((u16)(((v32) >>16) & 0xFFFF)) +#define Mk16(hi,lo) ((lo) ^ (((u16)(hi)) << 8)) + +/* select the Nth 16-bit word of the temporal key unsigned char array TK[] */ +#define TK16(N) Mk16(tk[2*(N)+1],tk[2*(N)]) + +/* S-box lookup: 16 bits --> 16 bits */ +#define _S_(v16) (Sbox1[0][Lo8(v16)] ^ Sbox1[1][Hi8(v16)]) + +/* fixed algorithm "parameters" */ +#define PHASE1_LOOP_CNT 8 /* this needs to be "big enough" */ +#define TA_SIZE 6 /* 48-bit transmitter address */ +#define TK_SIZE 16 /* 128-bit temporal key */ +#define P1K_SIZE 10 /* 80-bit Phase1 key */ +#define RC4_KEY_SIZE 16 /* 128-bit RC4KEY (104 bits unknown) */ + + +/* 2-unsigned char by 2-unsigned char subset of the full AES S-box table */ +static const unsigned short Sbox1[2][256]= /* Sbox for hash (can be in ROM) */ +{ { + 0xC6A5,0xF884,0xEE99,0xF68D,0xFF0D,0xD6BD,0xDEB1,0x9154, + 0x6050,0x0203,0xCEA9,0x567D,0xE719,0xB562,0x4DE6,0xEC9A, + 0x8F45,0x1F9D,0x8940,0xFA87,0xEF15,0xB2EB,0x8EC9,0xFB0B, + 0x41EC,0xB367,0x5FFD,0x45EA,0x23BF,0x53F7,0xE496,0x9B5B, + 0x75C2,0xE11C,0x3DAE,0x4C6A,0x6C5A,0x7E41,0xF502,0x834F, + 0x685C,0x51F4,0xD134,0xF908,0xE293,0xAB73,0x6253,0x2A3F, + 0x080C,0x9552,0x4665,0x9D5E,0x3028,0x37A1,0x0A0F,0x2FB5, + 0x0E09,0x2436,0x1B9B,0xDF3D,0xCD26,0x4E69,0x7FCD,0xEA9F, + 0x121B,0x1D9E,0x5874,0x342E,0x362D,0xDCB2,0xB4EE,0x5BFB, + 0xA4F6,0x764D,0xB761,0x7DCE,0x527B,0xDD3E,0x5E71,0x1397, + 0xA6F5,0xB968,0x0000,0xC12C,0x4060,0xE31F,0x79C8,0xB6ED, + 0xD4BE,0x8D46,0x67D9,0x724B,0x94DE,0x98D4,0xB0E8,0x854A, + 0xBB6B,0xC52A,0x4FE5,0xED16,0x86C5,0x9AD7,0x6655,0x1194, + 0x8ACF,0xE910,0x0406,0xFE81,0xA0F0,0x7844,0x25BA,0x4BE3, + 0xA2F3,0x5DFE,0x80C0,0x058A,0x3FAD,0x21BC,0x7048,0xF104, + 0x63DF,0x77C1,0xAF75,0x4263,0x2030,0xE51A,0xFD0E,0xBF6D, + 0x814C,0x1814,0x2635,0xC32F,0xBEE1,0x35A2,0x88CC,0x2E39, + 0x9357,0x55F2,0xFC82,0x7A47,0xC8AC,0xBAE7,0x322B,0xE695, + 0xC0A0,0x1998,0x9ED1,0xA37F,0x4466,0x547E,0x3BAB,0x0B83, + 0x8CCA,0xC729,0x6BD3,0x283C,0xA779,0xBCE2,0x161D,0xAD76, + 0xDB3B,0x6456,0x744E,0x141E,0x92DB,0x0C0A,0x486C,0xB8E4, + 0x9F5D,0xBD6E,0x43EF,0xC4A6,0x39A8,0x31A4,0xD337,0xF28B, + 0xD532,0x8B43,0x6E59,0xDAB7,0x018C,0xB164,0x9CD2,0x49E0, + 0xD8B4,0xACFA,0xF307,0xCF25,0xCAAF,0xF48E,0x47E9,0x1018, + 0x6FD5,0xF088,0x4A6F,0x5C72,0x3824,0x57F1,0x73C7,0x9751, + 0xCB23,0xA17C,0xE89C,0x3E21,0x96DD,0x61DC,0x0D86,0x0F85, + 0xE090,0x7C42,0x71C4,0xCCAA,0x90D8,0x0605,0xF701,0x1C12, + 0xC2A3,0x6A5F,0xAEF9,0x69D0,0x1791,0x9958,0x3A27,0x27B9, + 0xD938,0xEB13,0x2BB3,0x2233,0xD2BB,0xA970,0x0789,0x33A7, + 0x2DB6,0x3C22,0x1592,0xC920,0x8749,0xAAFF,0x5078,0xA57A, + 0x038F,0x59F8,0x0980,0x1A17,0x65DA,0xD731,0x84C6,0xD0B8, + 0x82C3,0x29B0,0x5A77,0x1E11,0x7BCB,0xA8FC,0x6DD6,0x2C3A, + }, + + + { /* second half of table is unsigned char-reversed version of first! */ + 0xA5C6,0x84F8,0x99EE,0x8DF6,0x0DFF,0xBDD6,0xB1DE,0x5491, + 0x5060,0x0302,0xA9CE,0x7D56,0x19E7,0x62B5,0xE64D,0x9AEC, + 0x458F,0x9D1F,0x4089,0x87FA,0x15EF,0xEBB2,0xC98E,0x0BFB, + 0xEC41,0x67B3,0xFD5F,0xEA45,0xBF23,0xF753,0x96E4,0x5B9B, + 0xC275,0x1CE1,0xAE3D,0x6A4C,0x5A6C,0x417E,0x02F5,0x4F83, + 0x5C68,0xF451,0x34D1,0x08F9,0x93E2,0x73AB,0x5362,0x3F2A, + 0x0C08,0x5295,0x6546,0x5E9D,0x2830,0xA137,0x0F0A,0xB52F, + 0x090E,0x3624,0x9B1B,0x3DDF,0x26CD,0x694E,0xCD7F,0x9FEA, + 0x1B12,0x9E1D,0x7458,0x2E34,0x2D36,0xB2DC,0xEEB4,0xFB5B, + 0xF6A4,0x4D76,0x61B7,0xCE7D,0x7B52,0x3EDD,0x715E,0x9713, + 0xF5A6,0x68B9,0x0000,0x2CC1,0x6040,0x1FE3,0xC879,0xEDB6, + 0xBED4,0x468D,0xD967,0x4B72,0xDE94,0xD498,0xE8B0,0x4A85, + 0x6BBB,0x2AC5,0xE54F,0x16ED,0xC586,0xD79A,0x5566,0x9411, + 0xCF8A,0x10E9,0x0604,0x81FE,0xF0A0,0x4478,0xBA25,0xE34B, + 0xF3A2,0xFE5D,0xC080,0x8A05,0xAD3F,0xBC21,0x4870,0x04F1, + 0xDF63,0xC177,0x75AF,0x6342,0x3020,0x1AE5,0x0EFD,0x6DBF, + 0x4C81,0x1418,0x3526,0x2FC3,0xE1BE,0xA235,0xCC88,0x392E, + 0x5793,0xF255,0x82FC,0x477A,0xACC8,0xE7BA,0x2B32,0x95E6, + 0xA0C0,0x9819,0xD19E,0x7FA3,0x6644,0x7E54,0xAB3B,0x830B, + 0xCA8C,0x29C7,0xD36B,0x3C28,0x79A7,0xE2BC,0x1D16,0x76AD, + 0x3BDB,0x5664,0x4E74,0x1E14,0xDB92,0x0A0C,0x6C48,0xE4B8, + 0x5D9F,0x6EBD,0xEF43,0xA6C4,0xA839,0xA431,0x37D3,0x8BF2, + 0x32D5,0x438B,0x596E,0xB7DA,0x8C01,0x64B1,0xD29C,0xE049, + 0xB4D8,0xFAAC,0x07F3,0x25CF,0xAFCA,0x8EF4,0xE947,0x1810, + 0xD56F,0x88F0,0x6F4A,0x725C,0x2438,0xF157,0xC773,0x5197, + 0x23CB,0x7CA1,0x9CE8,0x213E,0xDD96,0xDC61,0x860D,0x850F, + 0x90E0,0x427C,0xC471,0xAACC,0xD890,0x0506,0x01F7,0x121C, + 0xA3C2,0x5F6A,0xF9AE,0xD069,0x9117,0x5899,0x273A,0xB927, + 0x38D9,0x13EB,0xB32B,0x3322,0xBBD2,0x70A9,0x8907,0xA733, + 0xB62D,0x223C,0x9215,0x20C9,0x4987,0xFFAA,0x7850,0x7AA5, + 0x8F03,0xF859,0x8009,0x171A,0xDA65,0x31D7,0xC684,0xB8D0, + 0xC382,0xB029,0x775A,0x111E,0xCB7B,0xFCA8,0xD66D,0x3A2C, + } +}; + + /* +********************************************************************** +* Routine: Phase 1 -- generate P1K, given TA, TK, IV32 +* +* Inputs: +* tk[] = temporal key [128 bits] +* ta[] = transmitter's MAC address [ 48 bits] +* iv32 = upper 32 bits of IV [ 32 bits] +* Output: +* p1k[] = Phase 1 key [ 80 bits] +* +* Note: +* This function only needs to be called every 2**16 packets, +* although in theory it could be called every packet. +* +********************************************************************** +*/ +static void phase1(u16 *p1k,const u8 *tk,const u8 *ta,u32 iv32) +{ + sint i; +_func_enter_; + /* Initialize the 80 bits of P1K[] from IV32 and TA[0..5] */ + p1k[0] = Lo16(iv32); + p1k[1] = Hi16(iv32); + p1k[2] = Mk16(ta[1],ta[0]); /* use TA[] as little-endian */ + p1k[3] = Mk16(ta[3],ta[2]); + p1k[4] = Mk16(ta[5],ta[4]); + + /* Now compute an unbalanced Feistel cipher with 80-bit block */ + /* size on the 80-bit block P1K[], using the 128-bit key TK[] */ + for (i=0; i < PHASE1_LOOP_CNT ;i++) + { /* Each add operation here is mod 2**16 */ + p1k[0] += _S_(p1k[4] ^ TK16((i&1)+0)); + p1k[1] += _S_(p1k[0] ^ TK16((i&1)+2)); + p1k[2] += _S_(p1k[1] ^ TK16((i&1)+4)); + p1k[3] += _S_(p1k[2] ^ TK16((i&1)+6)); + p1k[4] += _S_(p1k[3] ^ TK16((i&1)+0)); + p1k[4] += (unsigned short)i; /* avoid "slide attacks" */ + } +_func_exit_; +} + + +/* +********************************************************************** +* Routine: Phase 2 -- generate RC4KEY, given TK, P1K, IV16 +* +* Inputs: +* tk[] = Temporal key [128 bits] +* p1k[] = Phase 1 output key [ 80 bits] +* iv16 = low 16 bits of IV counter [ 16 bits] +* Output: +* rc4key[] = the key used to encrypt the packet [128 bits] +* +* Note: +* The value {TA,IV32,IV16} for Phase1/Phase2 must be unique +* across all packets using the same key TK value. Then, for a +* given value of TK[], this TKIP48 construction guarantees that +* the final RC4KEY value is unique across all packets. +* +* Suggested implementation optimization: if PPK[] is "overlaid" +* appropriately on RC4KEY[], there is no need for the final +* for loop below that copies the PPK[] result into RC4KEY[]. +* +********************************************************************** +*/ +static void phase2(u8 *rc4key,const u8 *tk,const u16 *p1k,u16 iv16) +{ + sint i; + u16 PPK[6]; /* temporary key for mixing */ +_func_enter_; + /* Note: all adds in the PPK[] equations below are mod 2**16 */ + for (i=0;i<5;i++) PPK[i]=p1k[i]; /* first, copy P1K to PPK */ + PPK[5] = p1k[4] +iv16; /* next, add in IV16 */ + + /* Bijective non-linear mixing of the 96 bits of PPK[0..5] */ + PPK[0] += _S_(PPK[5] ^ TK16(0)); /* Mix key in each "round" */ + PPK[1] += _S_(PPK[0] ^ TK16(1)); + PPK[2] += _S_(PPK[1] ^ TK16(2)); + PPK[3] += _S_(PPK[2] ^ TK16(3)); + PPK[4] += _S_(PPK[3] ^ TK16(4)); + PPK[5] += _S_(PPK[4] ^ TK16(5)); /* Total # S-box lookups == 6 */ + + /* Final sweep: bijective, "linear". Rotates kill LSB correlations */ + PPK[0] += RotR1(PPK[5] ^ TK16(6)); + PPK[1] += RotR1(PPK[0] ^ TK16(7)); /* Use all of TK[] in Phase2 */ + PPK[2] += RotR1(PPK[1]); + PPK[3] += RotR1(PPK[2]); + PPK[4] += RotR1(PPK[3]); + PPK[5] += RotR1(PPK[4]); + /* Note: At this point, for a given key TK[0..15], the 96-bit output */ + /* value PPK[0..5] is guaranteed to be unique, as a function */ + /* of the 96-bit "input" value {TA,IV32,IV16}. That is, P1K */ + /* is now a keyed permutation of {TA,IV32,IV16}. */ + + /* Set RC4KEY[0..3], which includes "cleartext" portion of RC4 key */ + rc4key[0] = Hi8(iv16); /* RC4KEY[0..2] is the WEP IV */ + rc4key[1] =(Hi8(iv16) | 0x20) & 0x7F; /* Help avoid weak (FMS) keys */ + rc4key[2] = Lo8(iv16); + rc4key[3] = Lo8((PPK[5] ^ TK16(0)) >> 1); + + + /* Copy 96 bits of PPK[0..5] to RC4KEY[4..15] (little-endian) */ + for (i=0;i<6;i++) + { + rc4key[4+2*i] = Lo8(PPK[i]); + rc4key[5+2*i] = Hi8(PPK[i]); + } +_func_exit_; +} + + +//The hlen isn't include the IV +u32 rtw_tkip_encrypt(_adapter *padapter, u8 *pxmitframe) +{ // exclude ICV + u16 pnl; + u32 pnh; + u8 rc4key[16]; + u8 ttkey[16]; + u8 crc[4]; + struct arc4context mycontext; + sint curfragnum,length; + u32 prwskeylen; + + u8 *pframe, *payload,*iv,*prwskey; + union pn48 dot11txpn; + struct sta_info *stainfo; + struct pkt_attrib *pattrib = &((struct xmit_frame *)pxmitframe)->attrib; + struct security_priv *psecuritypriv=&padapter->securitypriv; + struct xmit_priv *pxmitpriv=&padapter->xmitpriv; + u32 res=_SUCCESS; +_func_enter_; + + if(((struct xmit_frame*)pxmitframe)->buf_addr==NULL) + return _FAIL; + +#ifdef CONFIG_USB_TX_AGGREGATION + pframe = ((struct xmit_frame*)pxmitframe)->buf_addr + TXDESC_SIZE + + (((struct xmit_frame*)pxmitframe)->pkt_offset * PACKET_OFFSET_SZ); +#else + pframe = ((struct xmit_frame*)pxmitframe)->buf_addr + TXDESC_OFFSET; +#endif + + //4 start to encrypt each fragment + if(pattrib->encrypt==_TKIP_){ + + if(pattrib->psta) + { + stainfo = pattrib->psta; + } + else + { + DBG_871X("%s, call rtw_get_stainfo()\n", __func__); + stainfo=rtw_get_stainfo(&padapter->stapriv ,&pattrib->ra[0] ); + } + + if (stainfo!=NULL){ + + if(!(stainfo->state &_FW_LINKED)) + { + DBG_871X("%s, psta->state(0x%x) != _FW_LINKED\n", __func__, stainfo->state); + return _FAIL; + } + + RT_TRACE(_module_rtl871x_security_c_,_drv_err_,("rtw_tkip_encrypt: stainfo!=NULL!!!\n")); + + if(IS_MCAST(pattrib->ra)) + { + prwskey=psecuritypriv->dot118021XGrpKey[psecuritypriv->dot118021XGrpKeyid].skey; + } + else + { + prwskey=&stainfo->dot118021x_UncstKey.skey[0]; + } + + prwskeylen=16; + + for(curfragnum=0;curfragnumnr_frags;curfragnum++){ + iv=pframe+pattrib->hdrlen; + payload=pframe+pattrib->iv_len+pattrib->hdrlen; + + GET_TKIP_PN(iv, dot11txpn); + + pnl=(u16)(dot11txpn.val); + pnh=(u32)(dot11txpn.val>>16); + + phase1((u16 *)&ttkey[0],prwskey,&pattrib->ta[0],pnh); + + phase2(&rc4key[0],prwskey,(u16 *)&ttkey[0],pnl); + + if((curfragnum+1)==pattrib->nr_frags){ //4 the last fragment + length=pattrib->last_txcmdsz-pattrib->hdrlen-pattrib->iv_len- pattrib->icv_len; + RT_TRACE(_module_rtl871x_security_c_,_drv_info_,("pattrib->iv_len =%x, pattrib->icv_len =%x\n", pattrib->iv_len,pattrib->icv_len)); + *((u32 *)crc)=cpu_to_le32(getcrc32(payload,length));/* modified by Amy*/ + + arcfour_init(&mycontext, rc4key,16); + arcfour_encrypt(&mycontext, payload, payload, length); + arcfour_encrypt(&mycontext, payload+length, crc, 4); + + } + else{ + length=pxmitpriv->frag_len-pattrib->hdrlen-pattrib->iv_len-pattrib->icv_len ; + *((u32 *)crc)=cpu_to_le32(getcrc32(payload,length));/* modified by Amy*/ + arcfour_init(&mycontext,rc4key,16); + arcfour_encrypt(&mycontext, payload, payload, length); + arcfour_encrypt(&mycontext, payload+length, crc, 4); + + pframe+=pxmitpriv->frag_len; + pframe=(u8 *)RND4((SIZE_PTR)(pframe)); + + } + } + + + } + else{ + RT_TRACE(_module_rtl871x_security_c_,_drv_err_,("rtw_tkip_encrypt: stainfo==NULL!!!\n")); + DBG_871X("%s, psta==NUL\n", __func__); + res=_FAIL; + } + + } +_func_exit_; + return res; + +} + + +//The hlen isn't include the IV +u32 rtw_tkip_decrypt(_adapter *padapter, u8 *precvframe) +{ // exclude ICV + u16 pnl; + u32 pnh; + u8 rc4key[16]; + u8 ttkey[16]; + u8 crc[4]; + struct arc4context mycontext; + sint length; + u32 prwskeylen; + + u8 *pframe, *payload,*iv,*prwskey; + union pn48 dot11txpn; + struct sta_info *stainfo; + struct rx_pkt_attrib *prxattrib = &((union recv_frame *)precvframe)->u.hdr.attrib; + struct security_priv *psecuritypriv=&padapter->securitypriv; +// struct recv_priv *precvpriv=&padapter->recvpriv; + u32 res=_SUCCESS; + +_func_enter_; + + pframe=(unsigned char *)((union recv_frame*)precvframe)->u.hdr.rx_data; + + //4 start to decrypt recvframe + if(prxattrib->encrypt==_TKIP_){ + + stainfo=rtw_get_stainfo(&padapter->stapriv ,&prxattrib->ta[0] ); + if (stainfo!=NULL){ + + if(IS_MCAST(prxattrib->ra)) + { + static u32 start = 0; + static u32 no_gkey_bc_cnt = 0; + static u32 no_gkey_mc_cnt = 0; + + if(psecuritypriv->binstallGrpkey==_FALSE) + { + res=_FAIL; + + if (start == 0) + start = rtw_get_current_time(); + + if (is_broadcast_mac_addr(prxattrib->ra)) + no_gkey_bc_cnt++; + else + no_gkey_mc_cnt++; + + if (rtw_get_passing_time_ms(start) > 1000) { + if (no_gkey_bc_cnt || no_gkey_mc_cnt) { + DBG_871X_LEVEL(_drv_always_, FUNC_ADPT_FMT" no_gkey_bc_cnt:%u, no_gkey_mc_cnt:%u\n", + FUNC_ADPT_ARG(padapter), no_gkey_bc_cnt, no_gkey_mc_cnt); + } + start = rtw_get_current_time(); + no_gkey_bc_cnt = 0; + no_gkey_mc_cnt = 0; + } + goto exit; + } + + if (no_gkey_bc_cnt || no_gkey_mc_cnt) { + DBG_871X_LEVEL(_drv_always_, FUNC_ADPT_FMT" gkey installed. no_gkey_bc_cnt:%u, no_gkey_mc_cnt:%u\n", + FUNC_ADPT_ARG(padapter), no_gkey_bc_cnt, no_gkey_mc_cnt); + } + start = 0; + no_gkey_bc_cnt = 0; + no_gkey_mc_cnt = 0; + + //DBG_871X("rx bc/mc packets, to perform sw rtw_tkip_decrypt\n"); + //prwskey = psecuritypriv->dot118021XGrpKey[psecuritypriv->dot118021XGrpKeyid].skey; + prwskey = psecuritypriv->dot118021XGrpKey[prxattrib->key_index].skey; + prwskeylen=16; + } + else + { + RT_TRACE(_module_rtl871x_security_c_,_drv_err_,("rtw_tkip_decrypt: stainfo!=NULL!!!\n")); + prwskey=&stainfo->dot118021x_UncstKey.skey[0]; + prwskeylen=16; + } + + iv=pframe+prxattrib->hdrlen; + payload=pframe+prxattrib->iv_len+prxattrib->hdrlen; + length= ((union recv_frame *)precvframe)->u.hdr.len-prxattrib->hdrlen-prxattrib->iv_len; + + GET_TKIP_PN(iv, dot11txpn); + + pnl=(u16)(dot11txpn.val); + pnh=(u32)(dot11txpn.val>>16); + + phase1((u16 *)&ttkey[0],prwskey,&prxattrib->ta[0],pnh); + phase2(&rc4key[0],prwskey,(unsigned short *)&ttkey[0],pnl); + + //4 decrypt payload include icv + + arcfour_init(&mycontext, rc4key,16); + arcfour_encrypt(&mycontext, payload, payload, length); + + *((u32 *)crc)=le32_to_cpu(getcrc32(payload,length-4)); + + if(crc[3]!=payload[length-1] || crc[2]!=payload[length-2] || crc[1]!=payload[length-3] || crc[0]!=payload[length-4]) + { + RT_TRACE(_module_rtl871x_security_c_,_drv_err_,("rtw_wep_decrypt:icv error crc[3](%x)!=payload[length-1](%x) || crc[2](%x)!=payload[length-2](%x) || crc[1](%x)!=payload[length-3](%x) || crc[0](%x)!=payload[length-4](%x)\n", + crc[3],payload[length-1],crc[2],payload[length-2],crc[1],payload[length-3],crc[0],payload[length-4])); + res=_FAIL; + } + + + } + else{ + RT_TRACE(_module_rtl871x_security_c_,_drv_err_,("rtw_tkip_decrypt: stainfo==NULL!!!\n")); + res=_FAIL; + } + + } +_func_exit_; +exit: + return res; + +} + + +//3 =====AES related===== + + + +#define MAX_MSG_SIZE 2048 +/*****************************/ +/******** SBOX Table *********/ +/*****************************/ + + static u8 sbox_table[256] = + { + 0x63, 0x7c, 0x77, 0x7b, 0xf2, 0x6b, 0x6f, 0xc5, + 0x30, 0x01, 0x67, 0x2b, 0xfe, 0xd7, 0xab, 0x76, + 0xca, 0x82, 0xc9, 0x7d, 0xfa, 0x59, 0x47, 0xf0, + 0xad, 0xd4, 0xa2, 0xaf, 0x9c, 0xa4, 0x72, 0xc0, + 0xb7, 0xfd, 0x93, 0x26, 0x36, 0x3f, 0xf7, 0xcc, + 0x34, 0xa5, 0xe5, 0xf1, 0x71, 0xd8, 0x31, 0x15, + 0x04, 0xc7, 0x23, 0xc3, 0x18, 0x96, 0x05, 0x9a, + 0x07, 0x12, 0x80, 0xe2, 0xeb, 0x27, 0xb2, 0x75, + 0x09, 0x83, 0x2c, 0x1a, 0x1b, 0x6e, 0x5a, 0xa0, + 0x52, 0x3b, 0xd6, 0xb3, 0x29, 0xe3, 0x2f, 0x84, + 0x53, 0xd1, 0x00, 0xed, 0x20, 0xfc, 0xb1, 0x5b, + 0x6a, 0xcb, 0xbe, 0x39, 0x4a, 0x4c, 0x58, 0xcf, + 0xd0, 0xef, 0xaa, 0xfb, 0x43, 0x4d, 0x33, 0x85, + 0x45, 0xf9, 0x02, 0x7f, 0x50, 0x3c, 0x9f, 0xa8, + 0x51, 0xa3, 0x40, 0x8f, 0x92, 0x9d, 0x38, 0xf5, + 0xbc, 0xb6, 0xda, 0x21, 0x10, 0xff, 0xf3, 0xd2, + 0xcd, 0x0c, 0x13, 0xec, 0x5f, 0x97, 0x44, 0x17, + 0xc4, 0xa7, 0x7e, 0x3d, 0x64, 0x5d, 0x19, 0x73, + 0x60, 0x81, 0x4f, 0xdc, 0x22, 0x2a, 0x90, 0x88, + 0x46, 0xee, 0xb8, 0x14, 0xde, 0x5e, 0x0b, 0xdb, + 0xe0, 0x32, 0x3a, 0x0a, 0x49, 0x06, 0x24, 0x5c, + 0xc2, 0xd3, 0xac, 0x62, 0x91, 0x95, 0xe4, 0x79, + 0xe7, 0xc8, 0x37, 0x6d, 0x8d, 0xd5, 0x4e, 0xa9, + 0x6c, 0x56, 0xf4, 0xea, 0x65, 0x7a, 0xae, 0x08, + 0xba, 0x78, 0x25, 0x2e, 0x1c, 0xa6, 0xb4, 0xc6, + 0xe8, 0xdd, 0x74, 0x1f, 0x4b, 0xbd, 0x8b, 0x8a, + 0x70, 0x3e, 0xb5, 0x66, 0x48, 0x03, 0xf6, 0x0e, + 0x61, 0x35, 0x57, 0xb9, 0x86, 0xc1, 0x1d, 0x9e, + 0xe1, 0xf8, 0x98, 0x11, 0x69, 0xd9, 0x8e, 0x94, + 0x9b, 0x1e, 0x87, 0xe9, 0xce, 0x55, 0x28, 0xdf, + 0x8c, 0xa1, 0x89, 0x0d, 0xbf, 0xe6, 0x42, 0x68, + 0x41, 0x99, 0x2d, 0x0f, 0xb0, 0x54, 0xbb, 0x16 + }; + +/*****************************/ +/**** Function Prototypes ****/ +/*****************************/ + +static void bitwise_xor(u8 *ina, u8 *inb, u8 *out); +static void construct_mic_iv( + u8 *mic_header1, + sint qc_exists, + sint a4_exists, + u8 *mpdu, + uint payload_length, + u8 * pn_vector, + uint frtype);// add for CONFIG_IEEE80211W, none 11w also can use +static void construct_mic_header1( + u8 *mic_header1, + sint header_length, + u8 *mpdu, + uint frtype);// add for CONFIG_IEEE80211W, none 11w also can use +static void construct_mic_header2( + u8 *mic_header2, + u8 *mpdu, + sint a4_exists, + sint qc_exists); +static void construct_ctr_preload( + u8 *ctr_preload, + sint a4_exists, + sint qc_exists, + u8 *mpdu, + u8 *pn_vector, + sint c, + uint frtype);// add for CONFIG_IEEE80211W, none 11w also can use +static void xor_128(u8 *a, u8 *b, u8 *out); +static void xor_32(u8 *a, u8 *b, u8 *out); +static u8 sbox(u8 a); +static void next_key(u8 *key, sint round); +static void byte_sub(u8 *in, u8 *out); +static void shift_row(u8 *in, u8 *out); +static void mix_column(u8 *in, u8 *out); +#ifndef PLATFORM_FREEBSD +static void add_round_key( u8 *shiftrow_in, + u8 *mcol_in, + u8 *block_in, + sint round, + u8 *out); +#endif //PLATFORM_FREEBSD +static void aes128k128d(u8 *key, u8 *data, u8 *ciphertext); + + +/****************************************/ +/* aes128k128d() */ +/* Performs a 128 bit AES encrypt with */ +/* 128 bit data. */ +/****************************************/ +static void xor_128(u8 *a, u8 *b, u8 *out) +{ + sint i; +_func_enter_; + for (i=0;i<16; i++) + { + out[i] = a[i] ^ b[i]; + } +_func_exit_; +} + + +static void xor_32(u8 *a, u8 *b, u8 *out) +{ + sint i; +_func_enter_; + for (i=0;i<4; i++) + { + out[i] = a[i] ^ b[i]; + } +_func_exit_; +} + + +static u8 sbox(u8 a) +{ + return sbox_table[(sint)a]; +} + + +static void next_key(u8 *key, sint round) +{ + u8 rcon; + u8 sbox_key[4]; + u8 rcon_table[12] = + { + 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, + 0x1b, 0x36, 0x36, 0x36 + }; +_func_enter_; + sbox_key[0] = sbox(key[13]); + sbox_key[1] = sbox(key[14]); + sbox_key[2] = sbox(key[15]); + sbox_key[3] = sbox(key[12]); + + rcon = rcon_table[round]; + + xor_32(&key[0], sbox_key, &key[0]); + key[0] = key[0] ^ rcon; + + xor_32(&key[4], &key[0], &key[4]); + xor_32(&key[8], &key[4], &key[8]); + xor_32(&key[12], &key[8], &key[12]); +_func_exit_; +} + + +static void byte_sub(u8 *in, u8 *out) +{ + sint i; +_func_enter_; + for (i=0; i< 16; i++) + { + out[i] = sbox(in[i]); + } +_func_exit_; +} + + +static void shift_row(u8 *in, u8 *out) +{ +_func_enter_; + out[0] = in[0]; + out[1] = in[5]; + out[2] = in[10]; + out[3] = in[15]; + out[4] = in[4]; + out[5] = in[9]; + out[6] = in[14]; + out[7] = in[3]; + out[8] = in[8]; + out[9] = in[13]; + out[10] = in[2]; + out[11] = in[7]; + out[12] = in[12]; + out[13] = in[1]; + out[14] = in[6]; + out[15] = in[11]; +_func_exit_; +} + + +static void mix_column(u8 *in, u8 *out) +{ + sint i; + u8 add1b[4]; + u8 add1bf7[4]; + u8 rotl[4]; + u8 swap_halfs[4]; + u8 andf7[4]; + u8 rotr[4]; + u8 temp[4]; + u8 tempb[4]; +_func_enter_; + for (i=0 ; i<4; i++) + { + if ((in[i] & 0x80)== 0x80) + add1b[i] = 0x1b; + else + add1b[i] = 0x00; + } + + swap_halfs[0] = in[2]; /* Swap halfs */ + swap_halfs[1] = in[3]; + swap_halfs[2] = in[0]; + swap_halfs[3] = in[1]; + + rotl[0] = in[3]; /* Rotate left 8 bits */ + rotl[1] = in[0]; + rotl[2] = in[1]; + rotl[3] = in[2]; + + andf7[0] = in[0] & 0x7f; + andf7[1] = in[1] & 0x7f; + andf7[2] = in[2] & 0x7f; + andf7[3] = in[3] & 0x7f; + + for (i = 3; i>0; i--) /* logical shift left 1 bit */ + { + andf7[i] = andf7[i] << 1; + if ((andf7[i-1] & 0x80) == 0x80) + { + andf7[i] = (andf7[i] | 0x01); + } + } + andf7[0] = andf7[0] << 1; + andf7[0] = andf7[0] & 0xfe; + + xor_32(add1b, andf7, add1bf7); + + xor_32(in, add1bf7, rotr); + + temp[0] = rotr[0]; /* Rotate right 8 bits */ + rotr[0] = rotr[1]; + rotr[1] = rotr[2]; + rotr[2] = rotr[3]; + rotr[3] = temp[0]; + + xor_32(add1bf7, rotr, temp); + xor_32(swap_halfs, rotl,tempb); + xor_32(temp, tempb, out); +_func_exit_; +} + + +static void aes128k128d(u8 *key, u8 *data, u8 *ciphertext) +{ + sint round; + sint i; + u8 intermediatea[16]; + u8 intermediateb[16]; + u8 round_key[16]; +_func_enter_; + for(i=0; i<16; i++) round_key[i] = key[i]; + + for (round = 0; round < 11; round++) + { + if (round == 0) + { + xor_128(round_key, data, ciphertext); + next_key(round_key, round); + } + else if (round == 10) + { + byte_sub(ciphertext, intermediatea); + shift_row(intermediatea, intermediateb); + xor_128(intermediateb, round_key, ciphertext); + } + else /* 1 - 9 */ + { + byte_sub(ciphertext, intermediatea); + shift_row(intermediatea, intermediateb); + mix_column(&intermediateb[0], &intermediatea[0]); + mix_column(&intermediateb[4], &intermediatea[4]); + mix_column(&intermediateb[8], &intermediatea[8]); + mix_column(&intermediateb[12], &intermediatea[12]); + xor_128(intermediatea, round_key, ciphertext); + next_key(round_key, round); + } + } +_func_exit_; +} + + +/************************************************/ +/* construct_mic_iv() */ +/* Builds the MIC IV from header fields and PN */ +/* Baron think the function is construct CCM */ +/* nonce */ +/************************************************/ +static void construct_mic_iv( + u8 *mic_iv, + sint qc_exists, + sint a4_exists, + u8 *mpdu, + uint payload_length, + u8 *pn_vector, + uint frtype// add for CONFIG_IEEE80211W, none 11w also can use + ) +{ + sint i; +_func_enter_; + mic_iv[0] = 0x59; + if (qc_exists && a4_exists) mic_iv[1] = mpdu[30] & 0x0f; /* QoS_TC */ + if (qc_exists && !a4_exists) mic_iv[1] = mpdu[24] & 0x0f; /* mute bits 7-4 */ + if (!qc_exists) mic_iv[1] = 0x00; +#ifdef CONFIG_IEEE80211W + //802.11w management frame should set management bit(4) + if(frtype == WIFI_MGT_TYPE) + mic_iv[1] |= BIT(4); +#endif //CONFIG_IEEE80211W + for (i = 2; i < 8; i++) + mic_iv[i] = mpdu[i + 8]; /* mic_iv[2:7] = A2[0:5] = mpdu[10:15] */ + #ifdef CONSISTENT_PN_ORDER + for (i = 8; i < 14; i++) + mic_iv[i] = pn_vector[i - 8]; /* mic_iv[8:13] = PN[0:5] */ + #else + for (i = 8; i < 14; i++) + mic_iv[i] = pn_vector[13 - i]; /* mic_iv[8:13] = PN[5:0] */ + #endif + mic_iv[14] = (unsigned char) (payload_length / 256); + mic_iv[15] = (unsigned char) (payload_length % 256); +_func_exit_; +} + + +/************************************************/ +/* construct_mic_header1() */ +/* Builds the first MIC header block from */ +/* header fields. */ +/* Build AAD SC,A1,A2 */ +/************************************************/ +static void construct_mic_header1( + u8 *mic_header1, + sint header_length, + u8 *mpdu, + uint frtype// add for CONFIG_IEEE80211W, none 11w also can use + ) +{ +_func_enter_; + mic_header1[0] = (u8)((header_length - 2) / 256); + mic_header1[1] = (u8)((header_length - 2) % 256); +#ifdef CONFIG_IEEE80211W + //802.11w management frame don't AND subtype bits 4,5,6 of frame control field + if(frtype == WIFI_MGT_TYPE) + mic_header1[2] = mpdu[0]; + else +#endif //CONFIG_IEEE80211W + mic_header1[2] = mpdu[0] & 0xcf; /* Mute CF poll & CF ack bits */ + + mic_header1[3] = mpdu[1] & 0xc7; /* Mute retry, more data and pwr mgt bits */ + mic_header1[4] = mpdu[4]; /* A1 */ + mic_header1[5] = mpdu[5]; + mic_header1[6] = mpdu[6]; + mic_header1[7] = mpdu[7]; + mic_header1[8] = mpdu[8]; + mic_header1[9] = mpdu[9]; + mic_header1[10] = mpdu[10]; /* A2 */ + mic_header1[11] = mpdu[11]; + mic_header1[12] = mpdu[12]; + mic_header1[13] = mpdu[13]; + mic_header1[14] = mpdu[14]; + mic_header1[15] = mpdu[15]; +_func_exit_; +} + + +/************************************************/ +/* construct_mic_header2() */ +/* Builds the last MIC header block from */ +/* header fields. */ +/************************************************/ +static void construct_mic_header2( + u8 *mic_header2, + u8 *mpdu, + sint a4_exists, + sint qc_exists + ) +{ + sint i; +_func_enter_; + for (i = 0; i<16; i++) mic_header2[i]=0x00; + + mic_header2[0] = mpdu[16]; /* A3 */ + mic_header2[1] = mpdu[17]; + mic_header2[2] = mpdu[18]; + mic_header2[3] = mpdu[19]; + mic_header2[4] = mpdu[20]; + mic_header2[5] = mpdu[21]; + + //mic_header2[6] = mpdu[22] & 0xf0; /* SC */ + mic_header2[6] = 0x00; + mic_header2[7] = 0x00; /* mpdu[23]; */ + + + if (!qc_exists && a4_exists) + { + for (i=0;i<6;i++) mic_header2[8+i] = mpdu[24+i]; /* A4 */ + + } + + if (qc_exists && !a4_exists) + { + mic_header2[8] = mpdu[24] & 0x0f; /* mute bits 15 - 4 */ + mic_header2[9] = mpdu[25] & 0x00; + } + + if (qc_exists && a4_exists) + { + for (i=0;i<6;i++) mic_header2[8+i] = mpdu[24+i]; /* A4 */ + + mic_header2[14] = mpdu[30] & 0x0f; + mic_header2[15] = mpdu[31] & 0x00; + } + +_func_exit_; +} + + +/************************************************/ +/* construct_mic_header2() */ +/* Builds the last MIC header block from */ +/* header fields. */ +/* Baron think the function is construct CCM */ +/* nonce */ +/************************************************/ +static void construct_ctr_preload( + u8 *ctr_preload, + sint a4_exists, + sint qc_exists, + u8 *mpdu, + u8 *pn_vector, + sint c, + uint frtype // add for CONFIG_IEEE80211W, none 11w also can use + ) +{ + sint i = 0; +_func_enter_; + for (i=0; i<16; i++) ctr_preload[i] = 0x00; + i = 0; + + ctr_preload[0] = 0x01; /* flag */ + if (qc_exists && a4_exists) + ctr_preload[1] = mpdu[30] & 0x0f; /* QoC_Control */ + if (qc_exists && !a4_exists) + ctr_preload[1] = mpdu[24] & 0x0f; +#ifdef CONFIG_IEEE80211W + //802.11w management frame should set management bit(4) + if(frtype == WIFI_MGT_TYPE) + ctr_preload[1] |= BIT(4); +#endif //CONFIG_IEEE80211W + for (i = 2; i < 8; i++) + ctr_preload[i] = mpdu[i + 8]; /* ctr_preload[2:7] = A2[0:5] = mpdu[10:15] */ + #ifdef CONSISTENT_PN_ORDER + for (i = 8; i < 14; i++) + ctr_preload[i] = pn_vector[i - 8]; /* ctr_preload[8:13] = PN[0:5] */ + #else + for (i = 8; i < 14; i++) + ctr_preload[i] = pn_vector[13 - i]; /* ctr_preload[8:13] = PN[5:0] */ + #endif + ctr_preload[14] = (unsigned char) (c / 256); /* Ctr */ + ctr_preload[15] = (unsigned char) (c % 256); +_func_exit_; +} + + +/************************************/ +/* bitwise_xor() */ +/* A 128 bit, bitwise exclusive or */ +/************************************/ +static void bitwise_xor(u8 *ina, u8 *inb, u8 *out) +{ + sint i; +_func_enter_; + for (i=0; i<16; i++) + { + out[i] = ina[i] ^ inb[i]; + } +_func_exit_; +} + + +static sint aes_cipher(u8 *key, uint hdrlen, + u8 *pframe, uint plen) +{ +// /*static*/ unsigned char message[MAX_MSG_SIZE]; + uint qc_exists, a4_exists, i, j, payload_remainder, + num_blocks, payload_index; + + u8 pn_vector[6]; + u8 mic_iv[16]; + u8 mic_header1[16]; + u8 mic_header2[16]; + u8 ctr_preload[16]; + + /* Intermediate Buffers */ + u8 chain_buffer[16]; + u8 aes_out[16]; + u8 padded_buffer[16]; + u8 mic[8]; +// uint offset = 0; + uint frtype = GetFrameType(pframe); + uint frsubtype = GetFrameSubType(pframe); + +_func_enter_; + frsubtype=frsubtype>>4; + + + _rtw_memset((void *)mic_iv, 0, 16); + _rtw_memset((void *)mic_header1, 0, 16); + _rtw_memset((void *)mic_header2, 0, 16); + _rtw_memset((void *)ctr_preload, 0, 16); + _rtw_memset((void *)chain_buffer, 0, 16); + _rtw_memset((void *)aes_out, 0, 16); + _rtw_memset((void *)padded_buffer, 0, 16); + + if ((hdrlen == WLAN_HDR_A3_LEN )||(hdrlen == WLAN_HDR_A3_QOS_LEN)) + a4_exists = 0; + else + a4_exists = 1; + + if ( + ((frtype|frsubtype) == WIFI_DATA_CFACK) || + ((frtype|frsubtype) == WIFI_DATA_CFPOLL)|| + ((frtype|frsubtype) == WIFI_DATA_CFACKPOLL)) + { + qc_exists = 1; + if(hdrlen != WLAN_HDR_A3_QOS_LEN){ + + hdrlen += 2; + } + } + // add for CONFIG_IEEE80211W, none 11w also can use + else if ((frtype == WIFI_DATA) && + ((frsubtype == 0x08) || + (frsubtype == 0x09)|| + (frsubtype == 0x0a)|| + (frsubtype == 0x0b))) + { + if(hdrlen != WLAN_HDR_A3_QOS_LEN){ + + hdrlen += 2; + } + qc_exists = 1; + } + else + qc_exists = 0; + + pn_vector[0]=pframe[hdrlen]; + pn_vector[1]=pframe[hdrlen+1]; + pn_vector[2]=pframe[hdrlen+4]; + pn_vector[3]=pframe[hdrlen+5]; + pn_vector[4]=pframe[hdrlen+6]; + pn_vector[5]=pframe[hdrlen+7]; + + construct_mic_iv( + mic_iv, + qc_exists, + a4_exists, + pframe, //message, + plen, + pn_vector, + frtype // add for CONFIG_IEEE80211W, none 11w also can use + ); + + construct_mic_header1( + mic_header1, + hdrlen, + pframe, //message + frtype // add for CONFIG_IEEE80211W, none 11w also can use + ); + construct_mic_header2( + mic_header2, + pframe, //message, + a4_exists, + qc_exists + ); + + + payload_remainder = plen % 16; + num_blocks = plen / 16; + + /* Find start of payload */ + payload_index = (hdrlen + 8); + + /* Calculate MIC */ + aes128k128d(key, mic_iv, aes_out); + bitwise_xor(aes_out, mic_header1, chain_buffer); + aes128k128d(key, chain_buffer, aes_out); + bitwise_xor(aes_out, mic_header2, chain_buffer); + aes128k128d(key, chain_buffer, aes_out); + + for (i = 0; i < num_blocks; i++) + { + bitwise_xor(aes_out, &pframe[payload_index], chain_buffer);//bitwise_xor(aes_out, &message[payload_index], chain_buffer); + + payload_index += 16; + aes128k128d(key, chain_buffer, aes_out); + } + + /* Add on the final payload block if it needs padding */ + if (payload_remainder > 0) + { + for (j = 0; j < 16; j++) padded_buffer[j] = 0x00; + for (j = 0; j < payload_remainder; j++) + { + padded_buffer[j] = pframe[payload_index++];//padded_buffer[j] = message[payload_index++]; + } + bitwise_xor(aes_out, padded_buffer, chain_buffer); + aes128k128d(key, chain_buffer, aes_out); + + } + + for (j = 0 ; j < 8; j++) mic[j] = aes_out[j]; + + /* Insert MIC into payload */ + for (j = 0; j < 8; j++) + pframe[payload_index+j] = mic[j]; //message[payload_index+j] = mic[j]; + + payload_index = hdrlen + 8; + for (i=0; i< num_blocks; i++) + { + construct_ctr_preload( + ctr_preload, + a4_exists, + qc_exists, + pframe, //message, + pn_vector, + i+1, + frtype); // add for CONFIG_IEEE80211W, none 11w also can use + aes128k128d(key, ctr_preload, aes_out); + bitwise_xor(aes_out, &pframe[payload_index], chain_buffer);//bitwise_xor(aes_out, &message[payload_index], chain_buffer); + for (j=0; j<16;j++) pframe[payload_index++] = chain_buffer[j];//for (j=0; j<16;j++) message[payload_index++] = chain_buffer[j]; + } + + if (payload_remainder > 0) /* If there is a short final block, then pad it,*/ + { /* encrypt it and copy the unpadded part back */ + construct_ctr_preload( + ctr_preload, + a4_exists, + qc_exists, + pframe, //message, + pn_vector, + num_blocks+1, + frtype); // add for CONFIG_IEEE80211W, none 11w also can use + + for (j = 0; j < 16; j++) padded_buffer[j] = 0x00; + for (j = 0; j < payload_remainder; j++) + { + padded_buffer[j] = pframe[payload_index+j];//padded_buffer[j] = message[payload_index+j]; + } + aes128k128d(key, ctr_preload, aes_out); + bitwise_xor(aes_out, padded_buffer, chain_buffer); + for (j=0; jattrib; + struct security_priv *psecuritypriv=&padapter->securitypriv; + struct xmit_priv *pxmitpriv=&padapter->xmitpriv; + +// uint offset = 0; + u32 res=_SUCCESS; +_func_enter_; + + if(((struct xmit_frame*)pxmitframe)->buf_addr==NULL) + return _FAIL; + +#ifdef CONFIG_USB_TX_AGGREGATION + pframe = ((struct xmit_frame*)pxmitframe)->buf_addr + TXDESC_SIZE + + (((struct xmit_frame*)pxmitframe)->pkt_offset * PACKET_OFFSET_SZ); +#else + pframe = ((struct xmit_frame*)pxmitframe)->buf_addr + TXDESC_OFFSET; +#endif + + //4 start to encrypt each fragment + if((pattrib->encrypt==_AES_)){ + + if(pattrib->psta) + { + stainfo = pattrib->psta; + } + else + { + DBG_871X("%s, call rtw_get_stainfo()\n", __func__); + stainfo=rtw_get_stainfo(&padapter->stapriv ,&pattrib->ra[0] ); + } + + if (stainfo!=NULL){ + + if(!(stainfo->state &_FW_LINKED)) + { + DBG_871X("%s, psta->state(0x%x) != _FW_LINKED\n", __func__, stainfo->state); + return _FAIL; + } + + RT_TRACE(_module_rtl871x_security_c_,_drv_err_,("rtw_aes_encrypt: stainfo!=NULL!!!\n")); + + if(IS_MCAST(pattrib->ra)) + { + prwskey=psecuritypriv->dot118021XGrpKey[psecuritypriv->dot118021XGrpKeyid].skey; + } + else + { + prwskey=&stainfo->dot118021x_UncstKey.skey[0]; + } + +#ifdef CONFIG_TDLS //swencryption + { + struct sta_info *ptdls_sta; + ptdls_sta=rtw_get_stainfo(&padapter->stapriv ,&pattrib->dst[0] ); + if((ptdls_sta != NULL) && (ptdls_sta->tdls_sta_state & TDLS_LINKED_STATE) ) + { + DBG_871X("[%s] for tdls link\n", __FUNCTION__); + prwskey=&ptdls_sta->tpk.tk[0]; + } + } +#endif //CONFIG_TDLS + + prwskeylen=16; + + for(curfragnum=0;curfragnumnr_frags;curfragnum++){ + + if((curfragnum+1)==pattrib->nr_frags){ //4 the last fragment + length=pattrib->last_txcmdsz-pattrib->hdrlen-pattrib->iv_len- pattrib->icv_len; + + aes_cipher(prwskey,pattrib->hdrlen,pframe, length); + } + else{ + length=pxmitpriv->frag_len-pattrib->hdrlen-pattrib->iv_len-pattrib->icv_len ; + + aes_cipher(prwskey,pattrib->hdrlen,pframe, length); + pframe+=pxmitpriv->frag_len; + pframe=(u8*)RND4((SIZE_PTR)(pframe)); + + } + } + + + } + else{ + RT_TRACE(_module_rtl871x_security_c_,_drv_err_,("rtw_aes_encrypt: stainfo==NULL!!!\n")); + DBG_871X("%s, psta==NUL\n", __func__); + res=_FAIL; + } + + } + + + +_func_exit_; + return res; +} + +static sint aes_decipher(u8 *key, uint hdrlen, + u8 *pframe, uint plen) +{ + static u8 message[MAX_MSG_SIZE]; + uint qc_exists, a4_exists, i, j, payload_remainder, + num_blocks, payload_index; + sint res = _SUCCESS; + u8 pn_vector[6]; + u8 mic_iv[16]; + u8 mic_header1[16]; + u8 mic_header2[16]; + u8 ctr_preload[16]; + + /* Intermediate Buffers */ + u8 chain_buffer[16]; + u8 aes_out[16]; + u8 padded_buffer[16]; + u8 mic[8]; + + +// uint offset = 0; + uint frtype = GetFrameType(pframe); + uint frsubtype = GetFrameSubType(pframe); +_func_enter_; + frsubtype=frsubtype>>4; + + + _rtw_memset((void *)mic_iv, 0, 16); + _rtw_memset((void *)mic_header1, 0, 16); + _rtw_memset((void *)mic_header2, 0, 16); + _rtw_memset((void *)ctr_preload, 0, 16); + _rtw_memset((void *)chain_buffer, 0, 16); + _rtw_memset((void *)aes_out, 0, 16); + _rtw_memset((void *)padded_buffer, 0, 16); + + //start to decrypt the payload + + num_blocks = (plen-8) / 16; //(plen including LLC, payload_length and mic ) + + payload_remainder = (plen-8) % 16; + + pn_vector[0] = pframe[hdrlen]; + pn_vector[1] = pframe[hdrlen+1]; + pn_vector[2] = pframe[hdrlen+4]; + pn_vector[3] = pframe[hdrlen+5]; + pn_vector[4] = pframe[hdrlen+6]; + pn_vector[5] = pframe[hdrlen+7]; + + if ((hdrlen == WLAN_HDR_A3_LEN )||(hdrlen == WLAN_HDR_A3_QOS_LEN)) + a4_exists = 0; + else + a4_exists = 1; + + if ( + ((frtype|frsubtype) == WIFI_DATA_CFACK) || + ((frtype|frsubtype) == WIFI_DATA_CFPOLL)|| + ((frtype|frsubtype) == WIFI_DATA_CFACKPOLL)) + { + qc_exists = 1; + if(hdrlen != WLAN_HDR_A3_QOS_LEN){ + + hdrlen += 2; + } + }//only for data packet . add for CONFIG_IEEE80211W, none 11w also can use + else if ((frtype == WIFI_DATA) && + ((frsubtype == 0x08) || + (frsubtype == 0x09)|| + (frsubtype == 0x0a)|| + (frsubtype == 0x0b))) + { + if(hdrlen != WLAN_HDR_A3_QOS_LEN){ + + hdrlen += 2; + } + qc_exists = 1; + } + else + qc_exists = 0; + + + // now, decrypt pframe with hdrlen offset and plen long + + payload_index = hdrlen + 8; // 8 is for extiv + + for (i=0; i< num_blocks; i++) + { + construct_ctr_preload( + ctr_preload, + a4_exists, + qc_exists, + pframe, + pn_vector, + i+1, + frtype // add for CONFIG_IEEE80211W, none 11w also can use + ); + + aes128k128d(key, ctr_preload, aes_out); + bitwise_xor(aes_out, &pframe[payload_index], chain_buffer); + + for (j=0; j<16;j++) pframe[payload_index++] = chain_buffer[j]; + } + + if (payload_remainder > 0) /* If there is a short final block, then pad it,*/ + { /* encrypt it and copy the unpadded part back */ + construct_ctr_preload( + ctr_preload, + a4_exists, + qc_exists, + pframe, + pn_vector, + num_blocks+1, + frtype // add for CONFIG_IEEE80211W, none 11w also can use + ); + + for (j = 0; j < 16; j++) padded_buffer[j] = 0x00; + for (j = 0; j < payload_remainder; j++) + { + padded_buffer[j] = pframe[payload_index+j]; + } + aes128k128d(key, ctr_preload, aes_out); + bitwise_xor(aes_out, padded_buffer, chain_buffer); + for (j=0; j 0) + { + for (j = 0; j < 16; j++) padded_buffer[j] = 0x00; + for (j = 0; j < payload_remainder; j++) + { + padded_buffer[j] = message[payload_index++]; + } + bitwise_xor(aes_out, padded_buffer, chain_buffer); + aes128k128d(key, chain_buffer, aes_out); + + } + + for (j = 0 ; j < 8; j++) mic[j] = aes_out[j]; + + /* Insert MIC into payload */ + for (j = 0; j < 8; j++) + message[payload_index+j] = mic[j]; + + payload_index = hdrlen + 8; + for (i=0; i< num_blocks; i++) + { + construct_ctr_preload( + ctr_preload, + a4_exists, + qc_exists, + message, + pn_vector, + i+1, + frtype); // add for CONFIG_IEEE80211W, none 11w also can use + aes128k128d(key, ctr_preload, aes_out); + bitwise_xor(aes_out, &message[payload_index], chain_buffer); + for (j=0; j<16;j++) message[payload_index++] = chain_buffer[j]; + } + + if (payload_remainder > 0) /* If there is a short final block, then pad it,*/ + { /* encrypt it and copy the unpadded part back */ + construct_ctr_preload( + ctr_preload, + a4_exists, + qc_exists, + message, + pn_vector, + num_blocks+1, + frtype); // add for CONFIG_IEEE80211W, none 11w also can use + + for (j = 0; j < 16; j++) padded_buffer[j] = 0x00; + for (j = 0; j < payload_remainder; j++) + { + padded_buffer[j] = message[payload_index+j]; + } + aes128k128d(key, ctr_preload, aes_out); + bitwise_xor(aes_out, padded_buffer, chain_buffer); + for (j=0; ju.hdr.attrib; + struct security_priv *psecuritypriv=&padapter->securitypriv; +// struct recv_priv *precvpriv=&padapter->recvpriv; + u32 res=_SUCCESS; +_func_enter_; + pframe=(unsigned char *)((union recv_frame*)precvframe)->u.hdr.rx_data; + //4 start to encrypt each fragment + if((prxattrib->encrypt==_AES_)){ + + stainfo=rtw_get_stainfo(&padapter->stapriv ,&prxattrib->ta[0] ); + if (stainfo!=NULL){ + RT_TRACE(_module_rtl871x_security_c_,_drv_err_,("rtw_aes_decrypt: stainfo!=NULL!!!\n")); + + if(IS_MCAST(prxattrib->ra)) + { + //in concurrent we should use sw descrypt in group key, so we remove this message + //DBG_871X("rx bc/mc packets, to perform sw rtw_aes_decrypt\n"); + //prwskey = psecuritypriv->dot118021XGrpKey[psecuritypriv->dot118021XGrpKeyid].skey; + if(psecuritypriv->binstallGrpkey==_FALSE) + { + res=_FAIL; + DBG_8192C("%s:rx bc/mc packets,but didn't install group key!!!!!!!!!!\n",__FUNCTION__); + goto exit; + } + prwskey = psecuritypriv->dot118021XGrpKey[prxattrib->key_index].skey; + + if(psecuritypriv->dot118021XGrpKeyid != prxattrib->key_index) + { + DBG_871X("not match packet_index=%d, install_index=%d \n" + , prxattrib->key_index, psecuritypriv->dot118021XGrpKeyid); + res=_FAIL; + goto exit; + } + } + else + { + prwskey=&stainfo->dot118021x_UncstKey.skey[0]; + } + + length= ((union recv_frame *)precvframe)->u.hdr.len-prxattrib->hdrlen-prxattrib->iv_len; + /*// add for CONFIG_IEEE80211W, debug + if(0) + printk("@@@@@@@@@@@@@@@@@@ length=%d, prxattrib->hdrlen=%d, prxattrib->pkt_len=%d \n" + , length, prxattrib->hdrlen, prxattrib->pkt_len); + if(0) + { + int no; + //test print PSK + printk("PSK key below:\n"); + for(no=0;no<16;no++) + printk(" %02x ", prwskey[no]); + printk("\n"); + } + if(0) + { + int no; + //test print PSK + printk("frame:\n"); + for(no=0;nopkt_len;no++) + printk(" %02x ", pframe[no]); + printk("\n"); + }*/ + + res= aes_decipher(prwskey,prxattrib->hdrlen,pframe, length); + } + else{ + RT_TRACE(_module_rtl871x_security_c_,_drv_err_,("rtw_aes_encrypt: stainfo==NULL!!!\n")); + res=_FAIL; + } + + } +_func_exit_; +exit: + return res; +} + +#ifdef CONFIG_IEEE80211W +u32 rtw_BIP_verify(_adapter *padapter, u8 *precvframe) +{ + struct rx_pkt_attrib *pattrib = &((union recv_frame *)precvframe)->u.hdr.attrib; + u8 *pframe; + u8 *BIP_AAD, *p; + u32 res=_FAIL; + uint len, ori_len; + struct rtw_ieee80211_hdr *pwlanhdr; + u8 mic[16]; + struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; + ori_len = pattrib->pkt_len-WLAN_HDR_A3_LEN+BIP_AAD_SIZE; + BIP_AAD = rtw_zmalloc(ori_len); + + if(BIP_AAD == NULL) + { + DBG_871X("BIP AAD allocate fail\n"); + return _FAIL; + } + //PKT start + pframe=(unsigned char *)((union recv_frame*)precvframe)->u.hdr.rx_data; + //mapping to wlan header + pwlanhdr = (struct rtw_ieee80211_hdr *)pframe; + //save the frame body + MME + _rtw_memcpy(BIP_AAD+BIP_AAD_SIZE, pframe+WLAN_HDR_A3_LEN, pattrib->pkt_len-WLAN_HDR_A3_LEN); + //find MME IE pointer + p = rtw_get_ie(BIP_AAD+BIP_AAD_SIZE, _MME_IE_, &len, pattrib->pkt_len-WLAN_HDR_A3_LEN); + //Baron + if(p) + { + u16 keyid=0; + u64 temp_ipn=0; + //save packet number + _rtw_memcpy(&temp_ipn, p+4, 6); + temp_ipn = le64_to_cpu(temp_ipn); + //BIP packet number should bigger than previous BIP packet + if(temp_ipn <= pmlmeext->mgnt_80211w_IPN_rx) + { + DBG_871X("replay BIP packet\n"); + goto BIP_exit; + } + //copy key index + _rtw_memcpy(&keyid, p+2, 2); + keyid = le16_to_cpu(keyid); + if(keyid != padapter->securitypriv.dot11wBIPKeyid) + { + DBG_871X("BIP key index error!\n"); + goto BIP_exit; + } + //clear the MIC field of MME to zero + _rtw_memset(p+2+len-8, 0, 8); + + //conscruct AAD, copy frame control field + _rtw_memcpy(BIP_AAD, &pwlanhdr->frame_ctl, 2); + ClearRetry(BIP_AAD); + ClearPwrMgt(BIP_AAD); + ClearMData(BIP_AAD); + //conscruct AAD, copy address 1 to address 3 + _rtw_memcpy(BIP_AAD+2, pwlanhdr->addr1, 18); + + if(omac1_aes_128(padapter->securitypriv.dot11wBIPKey[padapter->securitypriv.dot11wBIPKeyid].skey + , BIP_AAD, ori_len, mic)) + goto BIP_exit; + + /*//management packet content + { + int pp; + DBG_871X("pkt: "); + for(pp=0;pp< pattrib->pkt_len; pp++) + printk(" %02x ", pframe[pp]); + DBG_871X("\n"); + //BIP AAD + management frame body + MME(MIC is zero) + DBG_871X("AAD+PKT: "); + for(pp=0;pp< ori_len; pp++) + DBG_871X(" %02x ", BIP_AAD[pp]); + DBG_871X("\n"); + //show the MIC result + DBG_871X("mic: "); + for(pp=0;pp<16; pp++) + DBG_871X(" %02x ", mic[pp]); + DBG_871X("\n"); + } + */ + //MIC field should be last 8 bytes of packet (packet without FCS) + if(_rtw_memcmp(mic, pframe+pattrib->pkt_len-8, 8)) + { + pmlmeext->mgnt_80211w_IPN_rx = temp_ipn; + res=_SUCCESS; + } + else + DBG_871X("BIP MIC error!\n"); + + } + else + res = RTW_RX_HANDLED; +BIP_exit: + + rtw_mfree(BIP_AAD, ori_len); + return res; +} +#endif //CONFIG_IEEE80211W + +#ifndef PLATFORM_FREEBSD +/* compress 512-bits */ +static int sha256_compress(struct sha256_state *md, unsigned char *buf) +{ + u32 S[8], W[64], t0, t1; + u32 t; + int i; + + /* copy state into S */ + for (i = 0; i < 8; i++) { + S[i] = md->state[i]; + } + + /* copy the state into 512-bits into W[0..15] */ + for (i = 0; i < 16; i++) + W[i] = WPA_GET_BE32(buf + (4 * i)); + + /* fill W[16..63] */ + for (i = 16; i < 64; i++) { + W[i] = Gamma1(W[i - 2]) + W[i - 7] + Gamma0(W[i - 15]) + + W[i - 16]; + } + + /* Compress */ +#define RND(a,b,c,d,e,f,g,h,i) \ + t0 = h + Sigma1(e) + Ch(e, f, g) + K[i] + W[i]; \ + t1 = Sigma0(a) + Maj(a, b, c); \ + d += t0; \ + h = t0 + t1; + + for (i = 0; i < 64; ++i) { + RND(S[0], S[1], S[2], S[3], S[4], S[5], S[6], S[7], i); + t = S[7]; S[7] = S[6]; S[6] = S[5]; S[5] = S[4]; + S[4] = S[3]; S[3] = S[2]; S[2] = S[1]; S[1] = S[0]; S[0] = t; + } + + /* feedback */ + for (i = 0; i < 8; i++) { + md->state[i] = md->state[i] + S[i]; + } + return 0; +} + +/* Initialize the hash state */ +static void sha256_init(struct sha256_state *md) +{ + md->curlen = 0; + md->length = 0; + md->state[0] = 0x6A09E667UL; + md->state[1] = 0xBB67AE85UL; + md->state[2] = 0x3C6EF372UL; + md->state[3] = 0xA54FF53AUL; + md->state[4] = 0x510E527FUL; + md->state[5] = 0x9B05688CUL; + md->state[6] = 0x1F83D9ABUL; + md->state[7] = 0x5BE0CD19UL; +} + +/** + Process a block of memory though the hash + @param md The hash state + @param in The data to hash + @param inlen The length of the data (octets) + @return CRYPT_OK if successful +*/ +static int sha256_process(struct sha256_state *md, unsigned char *in, + unsigned long inlen) +{ + unsigned long n; +#define block_size 64 + + if (md->curlen > sizeof(md->buf)) + return -1; + + while (inlen > 0) { + if (md->curlen == 0 && inlen >= block_size) { + if (sha256_compress(md, (unsigned char *) in) < 0) + return -1; + md->length += block_size * 8; + in += block_size; + inlen -= block_size; + } else { + n = MIN(inlen, (block_size - md->curlen)); + _rtw_memcpy(md->buf + md->curlen, in, n); + md->curlen += n; + in += n; + inlen -= n; + if (md->curlen == block_size) { + if (sha256_compress(md, md->buf) < 0) + return -1; + md->length += 8 * block_size; + md->curlen = 0; + } + } + } + + return 0; +} + + +/** + Terminate the hash to get the digest + @param md The hash state + @param out [out] The destination of the hash (32 bytes) + @return CRYPT_OK if successful +*/ +static int sha256_done(struct sha256_state *md, unsigned char *out) +{ + int i; + + if (md->curlen >= sizeof(md->buf)) + return -1; + + /* increase the length of the message */ + md->length += md->curlen * 8; + + /* append the '1' bit */ + md->buf[md->curlen++] = (unsigned char) 0x80; + + /* if the length is currently above 56 bytes we append zeros + * then compress. Then we can fall back to padding zeros and length + * encoding like normal. + */ + if (md->curlen > 56) { + while (md->curlen < 64) { + md->buf[md->curlen++] = (unsigned char) 0; + } + sha256_compress(md, md->buf); + md->curlen = 0; + } + + /* pad upto 56 bytes of zeroes */ + while (md->curlen < 56) { + md->buf[md->curlen++] = (unsigned char) 0; + } + + /* store length */ + WPA_PUT_BE64(md->buf + 56, md->length); + sha256_compress(md, md->buf); + + /* copy output */ + for (i = 0; i < 8; i++) + WPA_PUT_BE32(out + (4 * i), md->state[i]); + + return 0; +} + +/** + * sha256_vector - SHA256 hash for data vector + * @num_elem: Number of elements in the data vector + * @addr: Pointers to the data areas + * @len: Lengths of the data blocks + * @mac: Buffer for the hash + * Returns: 0 on success, -1 of failure + */ +static int sha256_vector(size_t num_elem, u8 *addr[], size_t *len, + u8 *mac) +{ + struct sha256_state ctx; + size_t i; + + sha256_init(&ctx); + for (i = 0; i < num_elem; i++) + if (sha256_process(&ctx, addr[i], len[i])) + return -1; + if (sha256_done(&ctx, mac)) + return -1; + return 0; +} + +static u8 os_strlen(const char *s) +{ + const char *p = s; + while (*p) + p++; + return p - s; +} + +static int os_memcmp(void *s1, void *s2, u8 n) +{ + unsigned char *p1 = s1, *p2 = s2; + + if (n == 0) + return 0; + + while (*p1 == *p2) { + p1++; + p2++; + n--; + if (n == 0) + return 0; + } + + return *p1 - *p2; +} + +/** + * hmac_sha256_vector - HMAC-SHA256 over data vector (RFC 2104) + * @key: Key for HMAC operations + * @key_len: Length of the key in bytes + * @num_elem: Number of elements in the data vector + * @addr: Pointers to the data areas + * @len: Lengths of the data blocks + * @mac: Buffer for the hash (32 bytes) + */ +static void hmac_sha256_vector(u8 *key, size_t key_len, size_t num_elem, + u8 *addr[], size_t *len, u8 *mac) +{ + unsigned char k_pad[64]; /* padding - key XORd with ipad/opad */ + unsigned char tk[32]; + u8 *_addr[6]; + size_t _len[6], i; + + if (num_elem > 5) { + /* + * Fixed limit on the number of fragments to avoid having to + * allocate memory (which could fail). + */ + return; + } + + /* if key is longer than 64 bytes reset it to key = SHA256(key) */ + if (key_len > 64) { + sha256_vector(1, &key, &key_len, tk); + key = tk; + key_len = 32; + } + + /* the HMAC_SHA256 transform looks like: + * + * SHA256(K XOR opad, SHA256(K XOR ipad, text)) + * + * where K is an n byte key + * ipad is the byte 0x36 repeated 64 times + * opad is the byte 0x5c repeated 64 times + * and text is the data being protected */ + + /* start out by storing key in ipad */ + _rtw_memset(k_pad, 0, sizeof(k_pad)); + _rtw_memcpy(k_pad, key, key_len); + /* XOR key with ipad values */ + for (i = 0; i < 64; i++) + k_pad[i] ^= 0x36; + + /* perform inner SHA256 */ + _addr[0] = k_pad; + _len[0] = 64; + for (i = 0; i < num_elem; i++) { + _addr[i + 1] = addr[i]; + _len[i + 1] = len[i]; + } + sha256_vector(1 + num_elem, _addr, _len, mac); + + _rtw_memset(k_pad, 0, sizeof(k_pad)); + _rtw_memcpy(k_pad, key, key_len); + /* XOR key with opad values */ + for (i = 0; i < 64; i++) + k_pad[i] ^= 0x5c; + + /* perform outer SHA256 */ + _addr[0] = k_pad; + _len[0] = 64; + _addr[1] = mac; + _len[1] = 32; + sha256_vector(2, _addr, _len, mac); +} +#endif //PLATFORM_FREEBSD +/** + * sha256_prf - SHA256-based Pseudo-Random Function (IEEE 802.11r, 8.5.1.5.2) + * @key: Key for PRF + * @key_len: Length of the key in bytes + * @label: A unique label for each purpose of the PRF + * @data: Extra data to bind into the key + * @data_len: Length of the data + * @buf: Buffer for the generated pseudo-random key + * @buf_len: Number of bytes of key to generate + * + * This function is used to derive new, cryptographically separate keys from a + * given key. + */ +#ifndef PLATFORM_FREEBSD //Baron +static void sha256_prf(u8 *key, size_t key_len, char *label, + u8 *data, size_t data_len, u8 *buf, size_t buf_len) +{ + u16 counter = 1; + size_t pos, plen; + u8 hash[SHA256_MAC_LEN]; + u8 *addr[4]; + size_t len[4]; + u8 counter_le[2], length_le[2]; + + addr[0] = counter_le; + len[0] = 2; + addr[1] = (u8 *) label; + len[1] = os_strlen(label); + addr[2] = data; + len[2] = data_len; + addr[3] = length_le; + len[3] = sizeof(length_le); + + WPA_PUT_LE16(length_le, buf_len * 8); + pos = 0; + while (pos < buf_len) { + plen = buf_len - pos; + WPA_PUT_LE16(counter_le, counter); + if (plen >= SHA256_MAC_LEN) { + hmac_sha256_vector(key, key_len, 4, addr, len, + &buf[pos]); + pos += SHA256_MAC_LEN; + } else { + hmac_sha256_vector(key, key_len, 4, addr, len, hash); + _rtw_memcpy(&buf[pos], hash, plen); + break; + } + counter++; + } +} +#endif //PLATFORM_FREEBSD Baron + +/* AES tables*/ +const u32 Te0[256] = { + 0xc66363a5U, 0xf87c7c84U, 0xee777799U, 0xf67b7b8dU, + 0xfff2f20dU, 0xd66b6bbdU, 0xde6f6fb1U, 0x91c5c554U, + 0x60303050U, 0x02010103U, 0xce6767a9U, 0x562b2b7dU, + 0xe7fefe19U, 0xb5d7d762U, 0x4dababe6U, 0xec76769aU, + 0x8fcaca45U, 0x1f82829dU, 0x89c9c940U, 0xfa7d7d87U, + 0xeffafa15U, 0xb25959ebU, 0x8e4747c9U, 0xfbf0f00bU, + 0x41adadecU, 0xb3d4d467U, 0x5fa2a2fdU, 0x45afafeaU, + 0x239c9cbfU, 0x53a4a4f7U, 0xe4727296U, 0x9bc0c05bU, + 0x75b7b7c2U, 0xe1fdfd1cU, 0x3d9393aeU, 0x4c26266aU, + 0x6c36365aU, 0x7e3f3f41U, 0xf5f7f702U, 0x83cccc4fU, + 0x6834345cU, 0x51a5a5f4U, 0xd1e5e534U, 0xf9f1f108U, + 0xe2717193U, 0xabd8d873U, 0x62313153U, 0x2a15153fU, + 0x0804040cU, 0x95c7c752U, 0x46232365U, 0x9dc3c35eU, + 0x30181828U, 0x379696a1U, 0x0a05050fU, 0x2f9a9ab5U, + 0x0e070709U, 0x24121236U, 0x1b80809bU, 0xdfe2e23dU, + 0xcdebeb26U, 0x4e272769U, 0x7fb2b2cdU, 0xea75759fU, + 0x1209091bU, 0x1d83839eU, 0x582c2c74U, 0x341a1a2eU, + 0x361b1b2dU, 0xdc6e6eb2U, 0xb45a5aeeU, 0x5ba0a0fbU, + 0xa45252f6U, 0x763b3b4dU, 0xb7d6d661U, 0x7db3b3ceU, + 0x5229297bU, 0xdde3e33eU, 0x5e2f2f71U, 0x13848497U, + 0xa65353f5U, 0xb9d1d168U, 0x00000000U, 0xc1eded2cU, + 0x40202060U, 0xe3fcfc1fU, 0x79b1b1c8U, 0xb65b5bedU, + 0xd46a6abeU, 0x8dcbcb46U, 0x67bebed9U, 0x7239394bU, + 0x944a4adeU, 0x984c4cd4U, 0xb05858e8U, 0x85cfcf4aU, + 0xbbd0d06bU, 0xc5efef2aU, 0x4faaaae5U, 0xedfbfb16U, + 0x864343c5U, 0x9a4d4dd7U, 0x66333355U, 0x11858594U, + 0x8a4545cfU, 0xe9f9f910U, 0x04020206U, 0xfe7f7f81U, + 0xa05050f0U, 0x783c3c44U, 0x259f9fbaU, 0x4ba8a8e3U, + 0xa25151f3U, 0x5da3a3feU, 0x804040c0U, 0x058f8f8aU, + 0x3f9292adU, 0x219d9dbcU, 0x70383848U, 0xf1f5f504U, + 0x63bcbcdfU, 0x77b6b6c1U, 0xafdada75U, 0x42212163U, + 0x20101030U, 0xe5ffff1aU, 0xfdf3f30eU, 0xbfd2d26dU, + 0x81cdcd4cU, 0x180c0c14U, 0x26131335U, 0xc3ecec2fU, + 0xbe5f5fe1U, 0x359797a2U, 0x884444ccU, 0x2e171739U, + 0x93c4c457U, 0x55a7a7f2U, 0xfc7e7e82U, 0x7a3d3d47U, + 0xc86464acU, 0xba5d5de7U, 0x3219192bU, 0xe6737395U, + 0xc06060a0U, 0x19818198U, 0x9e4f4fd1U, 0xa3dcdc7fU, + 0x44222266U, 0x542a2a7eU, 0x3b9090abU, 0x0b888883U, + 0x8c4646caU, 0xc7eeee29U, 0x6bb8b8d3U, 0x2814143cU, + 0xa7dede79U, 0xbc5e5ee2U, 0x160b0b1dU, 0xaddbdb76U, + 0xdbe0e03bU, 0x64323256U, 0x743a3a4eU, 0x140a0a1eU, + 0x924949dbU, 0x0c06060aU, 0x4824246cU, 0xb85c5ce4U, + 0x9fc2c25dU, 0xbdd3d36eU, 0x43acacefU, 0xc46262a6U, + 0x399191a8U, 0x319595a4U, 0xd3e4e437U, 0xf279798bU, + 0xd5e7e732U, 0x8bc8c843U, 0x6e373759U, 0xda6d6db7U, + 0x018d8d8cU, 0xb1d5d564U, 0x9c4e4ed2U, 0x49a9a9e0U, + 0xd86c6cb4U, 0xac5656faU, 0xf3f4f407U, 0xcfeaea25U, + 0xca6565afU, 0xf47a7a8eU, 0x47aeaee9U, 0x10080818U, + 0x6fbabad5U, 0xf0787888U, 0x4a25256fU, 0x5c2e2e72U, + 0x381c1c24U, 0x57a6a6f1U, 0x73b4b4c7U, 0x97c6c651U, + 0xcbe8e823U, 0xa1dddd7cU, 0xe874749cU, 0x3e1f1f21U, + 0x964b4bddU, 0x61bdbddcU, 0x0d8b8b86U, 0x0f8a8a85U, + 0xe0707090U, 0x7c3e3e42U, 0x71b5b5c4U, 0xcc6666aaU, + 0x904848d8U, 0x06030305U, 0xf7f6f601U, 0x1c0e0e12U, + 0xc26161a3U, 0x6a35355fU, 0xae5757f9U, 0x69b9b9d0U, + 0x17868691U, 0x99c1c158U, 0x3a1d1d27U, 0x279e9eb9U, + 0xd9e1e138U, 0xebf8f813U, 0x2b9898b3U, 0x22111133U, + 0xd26969bbU, 0xa9d9d970U, 0x078e8e89U, 0x339494a7U, + 0x2d9b9bb6U, 0x3c1e1e22U, 0x15878792U, 0xc9e9e920U, + 0x87cece49U, 0xaa5555ffU, 0x50282878U, 0xa5dfdf7aU, + 0x038c8c8fU, 0x59a1a1f8U, 0x09898980U, 0x1a0d0d17U, + 0x65bfbfdaU, 0xd7e6e631U, 0x844242c6U, 0xd06868b8U, + 0x824141c3U, 0x299999b0U, 0x5a2d2d77U, 0x1e0f0f11U, + 0x7bb0b0cbU, 0xa85454fcU, 0x6dbbbbd6U, 0x2c16163aU, +}; +const u32 Td0[256] = { + 0x51f4a750U, 0x7e416553U, 0x1a17a4c3U, 0x3a275e96U, + 0x3bab6bcbU, 0x1f9d45f1U, 0xacfa58abU, 0x4be30393U, + 0x2030fa55U, 0xad766df6U, 0x88cc7691U, 0xf5024c25U, + 0x4fe5d7fcU, 0xc52acbd7U, 0x26354480U, 0xb562a38fU, + 0xdeb15a49U, 0x25ba1b67U, 0x45ea0e98U, 0x5dfec0e1U, + 0xc32f7502U, 0x814cf012U, 0x8d4697a3U, 0x6bd3f9c6U, + 0x038f5fe7U, 0x15929c95U, 0xbf6d7aebU, 0x955259daU, + 0xd4be832dU, 0x587421d3U, 0x49e06929U, 0x8ec9c844U, + 0x75c2896aU, 0xf48e7978U, 0x99583e6bU, 0x27b971ddU, + 0xbee14fb6U, 0xf088ad17U, 0xc920ac66U, 0x7dce3ab4U, + 0x63df4a18U, 0xe51a3182U, 0x97513360U, 0x62537f45U, + 0xb16477e0U, 0xbb6bae84U, 0xfe81a01cU, 0xf9082b94U, + 0x70486858U, 0x8f45fd19U, 0x94de6c87U, 0x527bf8b7U, + 0xab73d323U, 0x724b02e2U, 0xe31f8f57U, 0x6655ab2aU, + 0xb2eb2807U, 0x2fb5c203U, 0x86c57b9aU, 0xd33708a5U, + 0x302887f2U, 0x23bfa5b2U, 0x02036abaU, 0xed16825cU, + 0x8acf1c2bU, 0xa779b492U, 0xf307f2f0U, 0x4e69e2a1U, + 0x65daf4cdU, 0x0605bed5U, 0xd134621fU, 0xc4a6fe8aU, + 0x342e539dU, 0xa2f355a0U, 0x058ae132U, 0xa4f6eb75U, + 0x0b83ec39U, 0x4060efaaU, 0x5e719f06U, 0xbd6e1051U, + 0x3e218af9U, 0x96dd063dU, 0xdd3e05aeU, 0x4de6bd46U, + 0x91548db5U, 0x71c45d05U, 0x0406d46fU, 0x605015ffU, + 0x1998fb24U, 0xd6bde997U, 0x894043ccU, 0x67d99e77U, + 0xb0e842bdU, 0x07898b88U, 0xe7195b38U, 0x79c8eedbU, + 0xa17c0a47U, 0x7c420fe9U, 0xf8841ec9U, 0x00000000U, + 0x09808683U, 0x322bed48U, 0x1e1170acU, 0x6c5a724eU, + 0xfd0efffbU, 0x0f853856U, 0x3daed51eU, 0x362d3927U, + 0x0a0fd964U, 0x685ca621U, 0x9b5b54d1U, 0x24362e3aU, + 0x0c0a67b1U, 0x9357e70fU, 0xb4ee96d2U, 0x1b9b919eU, + 0x80c0c54fU, 0x61dc20a2U, 0x5a774b69U, 0x1c121a16U, + 0xe293ba0aU, 0xc0a02ae5U, 0x3c22e043U, 0x121b171dU, + 0x0e090d0bU, 0xf28bc7adU, 0x2db6a8b9U, 0x141ea9c8U, + 0x57f11985U, 0xaf75074cU, 0xee99ddbbU, 0xa37f60fdU, + 0xf701269fU, 0x5c72f5bcU, 0x44663bc5U, 0x5bfb7e34U, + 0x8b432976U, 0xcb23c6dcU, 0xb6edfc68U, 0xb8e4f163U, + 0xd731dccaU, 0x42638510U, 0x13972240U, 0x84c61120U, + 0x854a247dU, 0xd2bb3df8U, 0xaef93211U, 0xc729a16dU, + 0x1d9e2f4bU, 0xdcb230f3U, 0x0d8652ecU, 0x77c1e3d0U, + 0x2bb3166cU, 0xa970b999U, 0x119448faU, 0x47e96422U, + 0xa8fc8cc4U, 0xa0f03f1aU, 0x567d2cd8U, 0x223390efU, + 0x87494ec7U, 0xd938d1c1U, 0x8ccaa2feU, 0x98d40b36U, + 0xa6f581cfU, 0xa57ade28U, 0xdab78e26U, 0x3fadbfa4U, + 0x2c3a9de4U, 0x5078920dU, 0x6a5fcc9bU, 0x547e4662U, + 0xf68d13c2U, 0x90d8b8e8U, 0x2e39f75eU, 0x82c3aff5U, + 0x9f5d80beU, 0x69d0937cU, 0x6fd52da9U, 0xcf2512b3U, + 0xc8ac993bU, 0x10187da7U, 0xe89c636eU, 0xdb3bbb7bU, + 0xcd267809U, 0x6e5918f4U, 0xec9ab701U, 0x834f9aa8U, + 0xe6956e65U, 0xaaffe67eU, 0x21bccf08U, 0xef15e8e6U, + 0xbae79bd9U, 0x4a6f36ceU, 0xea9f09d4U, 0x29b07cd6U, + 0x31a4b2afU, 0x2a3f2331U, 0xc6a59430U, 0x35a266c0U, + 0x744ebc37U, 0xfc82caa6U, 0xe090d0b0U, 0x33a7d815U, + 0xf104984aU, 0x41ecdaf7U, 0x7fcd500eU, 0x1791f62fU, + 0x764dd68dU, 0x43efb04dU, 0xccaa4d54U, 0xe49604dfU, + 0x9ed1b5e3U, 0x4c6a881bU, 0xc12c1fb8U, 0x4665517fU, + 0x9d5eea04U, 0x018c355dU, 0xfa877473U, 0xfb0b412eU, + 0xb3671d5aU, 0x92dbd252U, 0xe9105633U, 0x6dd64713U, + 0x9ad7618cU, 0x37a10c7aU, 0x59f8148eU, 0xeb133c89U, + 0xcea927eeU, 0xb761c935U, 0xe11ce5edU, 0x7a47b13cU, + 0x9cd2df59U, 0x55f2733fU, 0x1814ce79U, 0x73c737bfU, + 0x53f7cdeaU, 0x5ffdaa5bU, 0xdf3d6f14U, 0x7844db86U, + 0xcaaff381U, 0xb968c43eU, 0x3824342cU, 0xc2a3405fU, + 0x161dc372U, 0xbce2250cU, 0x283c498bU, 0xff0d9541U, + 0x39a80171U, 0x080cb3deU, 0xd8b4e49cU, 0x6456c190U, + 0x7bcb8461U, 0xd532b670U, 0x486c5c74U, 0xd0b85742U, +}; +const u8 Td4s[256] = { + 0x52U, 0x09U, 0x6aU, 0xd5U, 0x30U, 0x36U, 0xa5U, 0x38U, + 0xbfU, 0x40U, 0xa3U, 0x9eU, 0x81U, 0xf3U, 0xd7U, 0xfbU, + 0x7cU, 0xe3U, 0x39U, 0x82U, 0x9bU, 0x2fU, 0xffU, 0x87U, + 0x34U, 0x8eU, 0x43U, 0x44U, 0xc4U, 0xdeU, 0xe9U, 0xcbU, + 0x54U, 0x7bU, 0x94U, 0x32U, 0xa6U, 0xc2U, 0x23U, 0x3dU, + 0xeeU, 0x4cU, 0x95U, 0x0bU, 0x42U, 0xfaU, 0xc3U, 0x4eU, + 0x08U, 0x2eU, 0xa1U, 0x66U, 0x28U, 0xd9U, 0x24U, 0xb2U, + 0x76U, 0x5bU, 0xa2U, 0x49U, 0x6dU, 0x8bU, 0xd1U, 0x25U, + 0x72U, 0xf8U, 0xf6U, 0x64U, 0x86U, 0x68U, 0x98U, 0x16U, + 0xd4U, 0xa4U, 0x5cU, 0xccU, 0x5dU, 0x65U, 0xb6U, 0x92U, + 0x6cU, 0x70U, 0x48U, 0x50U, 0xfdU, 0xedU, 0xb9U, 0xdaU, + 0x5eU, 0x15U, 0x46U, 0x57U, 0xa7U, 0x8dU, 0x9dU, 0x84U, + 0x90U, 0xd8U, 0xabU, 0x00U, 0x8cU, 0xbcU, 0xd3U, 0x0aU, + 0xf7U, 0xe4U, 0x58U, 0x05U, 0xb8U, 0xb3U, 0x45U, 0x06U, + 0xd0U, 0x2cU, 0x1eU, 0x8fU, 0xcaU, 0x3fU, 0x0fU, 0x02U, + 0xc1U, 0xafU, 0xbdU, 0x03U, 0x01U, 0x13U, 0x8aU, 0x6bU, + 0x3aU, 0x91U, 0x11U, 0x41U, 0x4fU, 0x67U, 0xdcU, 0xeaU, + 0x97U, 0xf2U, 0xcfU, 0xceU, 0xf0U, 0xb4U, 0xe6U, 0x73U, + 0x96U, 0xacU, 0x74U, 0x22U, 0xe7U, 0xadU, 0x35U, 0x85U, + 0xe2U, 0xf9U, 0x37U, 0xe8U, 0x1cU, 0x75U, 0xdfU, 0x6eU, + 0x47U, 0xf1U, 0x1aU, 0x71U, 0x1dU, 0x29U, 0xc5U, 0x89U, + 0x6fU, 0xb7U, 0x62U, 0x0eU, 0xaaU, 0x18U, 0xbeU, 0x1bU, + 0xfcU, 0x56U, 0x3eU, 0x4bU, 0xc6U, 0xd2U, 0x79U, 0x20U, + 0x9aU, 0xdbU, 0xc0U, 0xfeU, 0x78U, 0xcdU, 0x5aU, 0xf4U, + 0x1fU, 0xddU, 0xa8U, 0x33U, 0x88U, 0x07U, 0xc7U, 0x31U, + 0xb1U, 0x12U, 0x10U, 0x59U, 0x27U, 0x80U, 0xecU, 0x5fU, + 0x60U, 0x51U, 0x7fU, 0xa9U, 0x19U, 0xb5U, 0x4aU, 0x0dU, + 0x2dU, 0xe5U, 0x7aU, 0x9fU, 0x93U, 0xc9U, 0x9cU, 0xefU, + 0xa0U, 0xe0U, 0x3bU, 0x4dU, 0xaeU, 0x2aU, 0xf5U, 0xb0U, + 0xc8U, 0xebU, 0xbbU, 0x3cU, 0x83U, 0x53U, 0x99U, 0x61U, + 0x17U, 0x2bU, 0x04U, 0x7eU, 0xbaU, 0x77U, 0xd6U, 0x26U, + 0xe1U, 0x69U, 0x14U, 0x63U, 0x55U, 0x21U, 0x0cU, 0x7dU, +}; +const u8 rcons[] = { + 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1B, 0x36 + /* for 128-bit blocks, Rijndael never uses more than 10 rcon values */ +}; + +/** + * Expand the cipher key into the encryption key schedule. + * + * @return the number of rounds for the given cipher key size. + */ +#ifndef PLATFORM_FREEBSD //Baron +static void rijndaelKeySetupEnc(u32 rk[/*44*/], const u8 cipherKey[]) +{ + int i; + u32 temp; + + rk[0] = GETU32(cipherKey ); + rk[1] = GETU32(cipherKey + 4); + rk[2] = GETU32(cipherKey + 8); + rk[3] = GETU32(cipherKey + 12); + for (i = 0; i < 10; i++) { + temp = rk[3]; + rk[4] = rk[0] ^ + TE421(temp) ^ TE432(temp) ^ TE443(temp) ^ TE414(temp) ^ + RCON(i); + rk[5] = rk[1] ^ rk[4]; + rk[6] = rk[2] ^ rk[5]; + rk[7] = rk[3] ^ rk[6]; + rk += 4; + } +} + +static void rijndaelEncrypt(u32 rk[/*44*/], u8 pt[16], u8 ct[16]) +{ + u32 s0, s1, s2, s3, t0, t1, t2, t3; + int Nr = 10; +#ifndef FULL_UNROLL + int r; +#endif /* ?FULL_UNROLL */ + + /* + * map byte array block to cipher state + * and add initial round key: + */ + s0 = GETU32(pt ) ^ rk[0]; + s1 = GETU32(pt + 4) ^ rk[1]; + s2 = GETU32(pt + 8) ^ rk[2]; + s3 = GETU32(pt + 12) ^ rk[3]; + +#define ROUND(i,d,s) \ +d##0 = TE0(s##0) ^ TE1(s##1) ^ TE2(s##2) ^ TE3(s##3) ^ rk[4 * i]; \ +d##1 = TE0(s##1) ^ TE1(s##2) ^ TE2(s##3) ^ TE3(s##0) ^ rk[4 * i + 1]; \ +d##2 = TE0(s##2) ^ TE1(s##3) ^ TE2(s##0) ^ TE3(s##1) ^ rk[4 * i + 2]; \ +d##3 = TE0(s##3) ^ TE1(s##0) ^ TE2(s##1) ^ TE3(s##2) ^ rk[4 * i + 3] + +#ifdef FULL_UNROLL + + ROUND(1,t,s); + ROUND(2,s,t); + ROUND(3,t,s); + ROUND(4,s,t); + ROUND(5,t,s); + ROUND(6,s,t); + ROUND(7,t,s); + ROUND(8,s,t); + ROUND(9,t,s); + + rk += Nr << 2; + +#else /* !FULL_UNROLL */ + + /* Nr - 1 full rounds: */ + r = Nr >> 1; + for (;;) { + ROUND(1,t,s); + rk += 8; + if (--r == 0) + break; + ROUND(0,s,t); + } + +#endif /* ?FULL_UNROLL */ + +#undef ROUND + + /* + * apply last round and + * map cipher state to byte array block: + */ + s0 = TE41(t0) ^ TE42(t1) ^ TE43(t2) ^ TE44(t3) ^ rk[0]; + PUTU32(ct , s0); + s1 = TE41(t1) ^ TE42(t2) ^ TE43(t3) ^ TE44(t0) ^ rk[1]; + PUTU32(ct + 4, s1); + s2 = TE41(t2) ^ TE42(t3) ^ TE43(t0) ^ TE44(t1) ^ rk[2]; + PUTU32(ct + 8, s2); + s3 = TE41(t3) ^ TE42(t0) ^ TE43(t1) ^ TE44(t2) ^ rk[3]; + PUTU32(ct + 12, s3); +} + +static void * aes_encrypt_init(u8 *key, size_t len) +{ + u32 *rk; + if (len != 16) + return NULL; + rk = (u32*)rtw_malloc(AES_PRIV_SIZE); + if (rk == NULL) + return NULL; + rijndaelKeySetupEnc(rk, key); + return rk; +} + +static void aes_128_encrypt(void *ctx, u8 *plain, u8 *crypt) +{ + rijndaelEncrypt(ctx, plain, crypt); +} + + +static void gf_mulx(u8 *pad) +{ + int i, carry; + + carry = pad[0] & 0x80; + for (i = 0; i < AES_BLOCK_SIZE - 1; i++) + pad[i] = (pad[i] << 1) | (pad[i + 1] >> 7); + pad[AES_BLOCK_SIZE - 1] <<= 1; + if (carry) + pad[AES_BLOCK_SIZE - 1] ^= 0x87; +} + +static void aes_encrypt_deinit(void *ctx) +{ + _rtw_memset(ctx, 0, AES_PRIV_SIZE); + rtw_mfree(ctx, AES_PRIV_SIZE); +} + + +/** + * omac1_aes_128_vector - One-Key CBC MAC (OMAC1) hash with AES-128 + * @key: 128-bit key for the hash operation + * @num_elem: Number of elements in the data vector + * @addr: Pointers to the data areas + * @len: Lengths of the data blocks + * @mac: Buffer for MAC (128 bits, i.e., 16 bytes) + * Returns: 0 on success, -1 on failure + * + * This is a mode for using block cipher (AES in this case) for authentication. + * OMAC1 was standardized with the name CMAC by NIST in a Special Publication + * (SP) 800-38B. + */ +static int omac1_aes_128_vector(u8 *key, size_t num_elem, + u8 *addr[], size_t *len, u8 *mac) +{ + void *ctx; + u8 cbc[AES_BLOCK_SIZE], pad[AES_BLOCK_SIZE]; + u8 *pos, *end; + size_t i, e, left, total_len; + + ctx = aes_encrypt_init(key, 16); + if (ctx == NULL) + return -1; + _rtw_memset(cbc, 0, AES_BLOCK_SIZE); + + total_len = 0; + for (e = 0; e < num_elem; e++) + total_len += len[e]; + left = total_len; + + e = 0; + pos = addr[0]; + end = pos + len[0]; + + while (left >= AES_BLOCK_SIZE) { + for (i = 0; i < AES_BLOCK_SIZE; i++) { + cbc[i] ^= *pos++; + if (pos >= end) { + e++; + pos = addr[e]; + end = pos + len[e]; + } + } + if (left > AES_BLOCK_SIZE) + aes_128_encrypt(ctx, cbc, cbc); + left -= AES_BLOCK_SIZE; + } + + _rtw_memset(pad, 0, AES_BLOCK_SIZE); + aes_128_encrypt(ctx, pad, pad); + gf_mulx(pad); + + if (left || total_len == 0) { + for (i = 0; i < left; i++) { + cbc[i] ^= *pos++; + if (pos >= end) { + e++; + pos = addr[e]; + end = pos + len[e]; + } + } + cbc[left] ^= 0x80; + gf_mulx(pad); + } + + for (i = 0; i < AES_BLOCK_SIZE; i++) + pad[i] ^= cbc[i]; + aes_128_encrypt(ctx, pad, mac); + aes_encrypt_deinit(ctx); + return 0; +} + + +/** + * omac1_aes_128 - One-Key CBC MAC (OMAC1) hash with AES-128 (aka AES-CMAC) + * @key: 128-bit key for the hash operation + * @data: Data buffer for which a MAC is determined + * @data_len: Length of data buffer in bytes + * @mac: Buffer for MAC (128 bits, i.e., 16 bytes) + * Returns: 0 on success, -1 on failure + * + * This is a mode for using block cipher (AES in this case) for authentication. + * OMAC1 was standardized with the name CMAC by NIST in a Special Publication + * (SP) 800-38B. + */ //modify for CONFIG_IEEE80211W +int omac1_aes_128(u8 *key, u8 *data, size_t data_len, u8 *mac) +{ + return omac1_aes_128_vector(key, 1, &data, &data_len, mac); +} +#endif //PLATFORM_FREEBSD Baron + +#ifdef CONFIG_TDLS +void wpa_tdls_generate_tpk(_adapter *padapter, struct sta_info *psta) +{ + struct mlme_priv *pmlmepriv = &padapter->mlmepriv; + u8 *SNonce = psta->SNonce; + u8 *ANonce = psta->ANonce; + + u8 key_input[SHA256_MAC_LEN]; + u8 *nonce[2]; + size_t len[2]; + u8 data[3 * ETH_ALEN]; + + /* IEEE Std 802.11z-2010 8.5.9.1: + * TPK-Key-Input = SHA-256(min(SNonce, ANonce) || max(SNonce, ANonce)) + */ + len[0] = 32; + len[1] = 32; + if (os_memcmp(SNonce, ANonce, 32) < 0) { + nonce[0] = SNonce; + nonce[1] = ANonce; + } else { + nonce[0] = ANonce; + nonce[1] = SNonce; + } + + sha256_vector(2, nonce, len, key_input); + + /* + * TPK-Key-Data = KDF-N_KEY(TPK-Key-Input, "TDLS PMK", + * min(MAC_I, MAC_R) || max(MAC_I, MAC_R) || BSSID || N_KEY) + * TODO: is N_KEY really included in KDF Context and if so, in which + * presentation format (little endian 16-bit?) is it used? It gets + * added by the KDF anyway.. + */ + + if (os_memcmp(myid(&(padapter->eeprompriv)), psta->hwaddr, ETH_ALEN) < 0) { + _rtw_memcpy(data, myid(&(padapter->eeprompriv)), ETH_ALEN); + _rtw_memcpy(data + ETH_ALEN, psta->hwaddr, ETH_ALEN); + } else { + _rtw_memcpy(data, psta->hwaddr, ETH_ALEN); + _rtw_memcpy(data + ETH_ALEN, myid(&(padapter->eeprompriv)), ETH_ALEN); + } + _rtw_memcpy(data + 2 * ETH_ALEN, get_bssid(pmlmepriv), ETH_ALEN); + + sha256_prf(key_input, SHA256_MAC_LEN, "TDLS PMK", data, sizeof(data), (u8 *) &psta->tpk, sizeof(psta->tpk)); + + +} + +/** + * wpa_tdls_ftie_mic - Calculate TDLS FTIE MIC + * @kck: TPK-KCK + * @lnkid: Pointer to the beginning of Link Identifier IE + * @rsnie: Pointer to the beginning of RSN IE used for handshake + * @timeoutie: Pointer to the beginning of Timeout IE used for handshake + * @ftie: Pointer to the beginning of FT IE + * @mic: Pointer for writing MIC + * + * Calculate MIC for TDLS frame. + */ +int wpa_tdls_ftie_mic(u8 *kck, u8 trans_seq, + u8 *lnkid, u8 *rsnie, u8 *timeoutie, u8 *ftie, + u8 *mic) +{ + u8 *buf, *pos; + struct wpa_tdls_ftie *_ftie; + struct wpa_tdls_lnkid *_lnkid; + int ret; + int len = 2 * ETH_ALEN + 1 + 2 + lnkid[1] + 2 + rsnie[1] + + 2 + timeoutie[1] + 2 + ftie[1]; + buf = rtw_zmalloc(len); + if (!buf) { + DBG_871X("TDLS: No memory for MIC calculation\n"); + return -1; + } + + pos = buf; + _lnkid = (struct wpa_tdls_lnkid *) lnkid; + /* 1) TDLS initiator STA MAC address */ + _rtw_memcpy(pos, _lnkid->init_sta, ETH_ALEN); + pos += ETH_ALEN; + /* 2) TDLS responder STA MAC address */ + _rtw_memcpy(pos, _lnkid->resp_sta, ETH_ALEN); + pos += ETH_ALEN; + /* 3) Transaction Sequence number */ + *pos++ = trans_seq; + /* 4) Link Identifier IE */ + _rtw_memcpy(pos, lnkid, 2 + lnkid[1]); + pos += 2 + lnkid[1]; + /* 5) RSN IE */ + _rtw_memcpy(pos, rsnie, 2 + rsnie[1]); + pos += 2 + rsnie[1]; + /* 6) Timeout Interval IE */ + _rtw_memcpy(pos, timeoutie, 2 + timeoutie[1]); + pos += 2 + timeoutie[1]; + /* 7) FTIE, with the MIC field of the FTIE set to 0 */ + _rtw_memcpy(pos, ftie, 2 + ftie[1]); + _ftie = (struct wpa_tdls_ftie *) pos; + _rtw_memset(_ftie->mic, 0, TDLS_MIC_LEN); + pos += 2 + ftie[1]; + + ret = omac1_aes_128(kck, buf, pos - buf, mic); + rtw_mfree(buf, len); + return ret; + +} + +int tdls_verify_mic(u8 *kck, u8 trans_seq, + u8 *lnkid, u8 *rsnie, u8 *timeoutie, u8 *ftie) +{ + u8 *buf, *pos; + int len; + u8 mic[16]; + int ret; + u8 *rx_ftie, *tmp_ftie; + + if (lnkid == NULL || rsnie == NULL || + timeoutie == NULL || ftie == NULL){ + return 0; + } + + len = 2 * ETH_ALEN + 1 + 2 + 18 + 2 + *(rsnie+1) + 2 + *(timeoutie+1) + 2 + *(ftie+1); + + buf = rtw_zmalloc(len); + if (buf == NULL) + return 0; + + pos = buf; + /* 1) TDLS initiator STA MAC address */ + _rtw_memcpy(pos, lnkid + ETH_ALEN + 2, ETH_ALEN); + pos += ETH_ALEN; + /* 2) TDLS responder STA MAC address */ + _rtw_memcpy(pos, lnkid + 2 * ETH_ALEN + 2, ETH_ALEN); + pos += ETH_ALEN; + /* 3) Transaction Sequence number */ + *pos++ = trans_seq; + /* 4) Link Identifier IE */ + _rtw_memcpy(pos, lnkid, 2 + 18); + pos += 2 + 18; + /* 5) RSN IE */ + _rtw_memcpy(pos, rsnie, 2 + *(rsnie+1)); + pos += 2 + *(rsnie+1); + /* 6) Timeout Interval IE */ + _rtw_memcpy(pos, timeoutie, 2 + *(timeoutie+1)); + pos += 2 + *(timeoutie+1); + /* 7) FTIE, with the MIC field of the FTIE set to 0 */ + _rtw_memcpy(pos, ftie, 2 + *(ftie+1)); + pos += 2; + tmp_ftie = (u8 *) (pos+2); + _rtw_memset(tmp_ftie, 0, 16); + pos += *(ftie+1); + + ret = omac1_aes_128(kck, buf, pos - buf, mic); + rtw_mfree(buf, len); + if (ret) + return 0; + rx_ftie = ftie+4; + + if (os_memcmp(mic, rx_ftie, 16) == 0) { + //Valid MIC + return 1; + } + + //Invalid MIC + DBG_871X( "[%s] Invalid MIC\n", __FUNCTION__); + return 0; + +} +#endif //CONFIG_TDLS + +#ifdef PLATFORM_WINDOWS +void rtw_use_tkipkey_handler ( + IN PVOID SystemSpecific1, + IN PVOID FunctionContext, + IN PVOID SystemSpecific2, + IN PVOID SystemSpecific3 + ) +#endif +#ifdef PLATFORM_LINUX +void rtw_use_tkipkey_handler(void *FunctionContext) +#endif +#ifdef PLATFORM_FREEBSD +void rtw_use_tkipkey_handler(void *FunctionContext) +#endif +{ + _adapter *padapter = (_adapter *)FunctionContext; + + +_func_enter_; + + RT_TRACE(_module_rtl871x_security_c_,_drv_err_,("^^^rtw_use_tkipkey_handler ^^^\n")); + +/* + if(padapter->bDriverStopped ||padapter->bSurpriseRemoved){ + RT_TRACE(_module_rtl871x_security_c_,_drv_err_,("^^^rtw_use_tkipkey_handler (padapter->bDriverStopped %d)(padapter->bSurpriseRemoved %d)^^^\n",padapter->bDriverStopped,padapter->bSurpriseRemoved)); + + return; + } + */ + + padapter->securitypriv.busetkipkey=_TRUE; + + RT_TRACE(_module_rtl871x_security_c_,_drv_err_,("^^^rtw_use_tkipkey_handler padapter->securitypriv.busetkipkey=%d^^^\n",padapter->securitypriv.busetkipkey)); + +_func_exit_; + +} + +/* Restore HW wep key setting according to key_mask */ +void rtw_sec_restore_wep_key(_adapter *adapter) +{ + struct security_priv* securitypriv=&(adapter->securitypriv); + sint keyid; + + if((_WEP40_ == securitypriv->dot11PrivacyAlgrthm) ||(_WEP104_ == securitypriv->dot11PrivacyAlgrthm)) { + for(keyid=0;keyid<4;keyid++){ + if(securitypriv->key_mask & BIT(keyid)){ + if(keyid == securitypriv->dot11PrivacyKeyIndex) + rtw_set_key(adapter,securitypriv, keyid, 1); + else + rtw_set_key(adapter,securitypriv, keyid, 0); + } + } + } +} + +u8 rtw_handle_tkip_countermeasure(_adapter* adapter, const char *caller) +{ + struct security_priv* securitypriv=&(adapter->securitypriv); + u8 status = _SUCCESS; + + if (securitypriv->btkip_countermeasure == _TRUE) { + u32 passing_ms = rtw_get_passing_time_ms(securitypriv->btkip_countermeasure_time); + if (passing_ms > 60*1000) { + LOG_LEVEL(_drv_info_, "%s("ADPT_FMT") countermeasure time:%ds > 60s \n", + caller, ADPT_ARG(adapter), passing_ms/1000); + securitypriv->btkip_countermeasure = _FALSE; + securitypriv->btkip_countermeasure_time = 0; + } else { + LOG_LEVEL(_drv_warning_, "%s("ADPT_FMT") countermeasure time:%ds < 60s \n", + caller, ADPT_ARG(adapter), passing_ms/1000); + status = _FAIL; + } + } + + return status; +} --- linux-raspi2-4.2.0.orig/drivers/net/wireless/rtl8192cu/core/rtw_sreset.c +++ linux-raspi2-4.2.0/drivers/net/wireless/rtl8192cu/core/rtw_sreset.c @@ -0,0 +1,351 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2012 Realtek Corporation. All rights reserved. + * + * 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 + * published by the Free Software Foundation. + * + * 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 Street, Fifth Floor, Boston, MA 02110, USA + * + * + ******************************************************************************/ + +#include + +void sreset_init_value(_adapter *padapter) +{ +#if defined(DBG_CONFIG_ERROR_DETECT) + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(padapter); + struct sreset_priv *psrtpriv = &pHalData->srestpriv; + + _rtw_mutex_init(&psrtpriv->silentreset_mutex); + psrtpriv->silent_reset_inprogress = _FALSE; + psrtpriv->Wifi_Error_Status = WIFI_STATUS_SUCCESS; + psrtpriv->last_tx_time =0; + psrtpriv->last_tx_complete_time =0; +#endif +} +void sreset_reset_value(_adapter *padapter) +{ +#if defined(DBG_CONFIG_ERROR_DETECT) + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(padapter); + struct sreset_priv *psrtpriv = &pHalData->srestpriv; + + psrtpriv->silent_reset_inprogress = _FALSE; + psrtpriv->Wifi_Error_Status = WIFI_STATUS_SUCCESS; + psrtpriv->last_tx_time =0; + psrtpriv->last_tx_complete_time =0; +#endif +} + +u8 sreset_get_wifi_status(_adapter *padapter) +{ +#if defined(DBG_CONFIG_ERROR_DETECT) + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(padapter); + struct sreset_priv *psrtpriv = &pHalData->srestpriv; + + u8 status = WIFI_STATUS_SUCCESS; + u32 val32 = 0; + _irqL irqL; + if(psrtpriv->silent_reset_inprogress == _TRUE) + { + return status; + } + val32 =rtw_read32(padapter,REG_TXDMA_STATUS); + if(val32==0xeaeaeaea){ + psrtpriv->Wifi_Error_Status = WIFI_IF_NOT_EXIST; + } + else if(val32!=0){ + DBG_8192C("txdmastatu(%x)\n",val32); + psrtpriv->Wifi_Error_Status = WIFI_MAC_TXDMA_ERROR; + } + + if(WIFI_STATUS_SUCCESS !=psrtpriv->Wifi_Error_Status) + { + DBG_8192C("==>%s error_status(0x%x) \n",__FUNCTION__,psrtpriv->Wifi_Error_Status); + status = (psrtpriv->Wifi_Error_Status &( ~(USB_READ_PORT_FAIL|USB_WRITE_PORT_FAIL))); + } + DBG_8192C("==> %s wifi_status(0x%x)\n",__FUNCTION__,status); + + //status restore + psrtpriv->Wifi_Error_Status = WIFI_STATUS_SUCCESS; + + return status; +#else + return WIFI_STATUS_SUCCESS; +#endif +} + +void sreset_set_wifi_error_status(_adapter *padapter, u32 status) +{ +#if defined(DBG_CONFIG_ERROR_DETECT) + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(padapter); + pHalData->srestpriv.Wifi_Error_Status = status; +#endif +} + +void sreset_set_trigger_point(_adapter *padapter, s32 tgp) +{ +#if defined(DBG_CONFIG_ERROR_DETECT) + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(padapter); + pHalData->srestpriv.dbg_trigger_point = tgp; +#endif +} + +bool sreset_inprogress(_adapter *padapter) +{ +#if defined(DBG_CONFIG_ERROR_RESET) + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(padapter); + return pHalData->srestpriv.silent_reset_inprogress; +#else + return _FALSE; +#endif +} + +void sreset_restore_security_station(_adapter *padapter) +{ + u8 EntryId = 0; + struct mlme_priv *mlmepriv = &padapter->mlmepriv; + struct sta_priv * pstapriv = &padapter->stapriv; + struct sta_info *psta; + struct security_priv* psecuritypriv=&(padapter->securitypriv); + struct mlme_ext_info *pmlmeinfo = &padapter->mlmeextpriv.mlmext_info; + + { + u8 val8; + + if (pmlmeinfo->auth_algo == dot11AuthAlgrthm_8021X) { + val8 = 0xcc; + #ifdef CONFIG_WAPI_SUPPORT + } else if (padapter->wapiInfo.bWapiEnable && pmlmeinfo->auth_algo == dot11AuthAlgrthm_WAPI) { + //Disable TxUseDefaultKey, RxUseDefaultKey, RxBroadcastUseDefaultKey. + val8 = 0x4c; + #endif + } else { + val8 = 0xcf; + } + rtw_hal_set_hwreg(padapter, HW_VAR_SEC_CFG, (u8 *)(&val8)); + } + + #if 0 + if ( ( padapter->securitypriv.dot11PrivacyAlgrthm == _WEP40_ ) || + ( padapter->securitypriv.dot11PrivacyAlgrthm == _WEP104_ )) + { + + for(EntryId=0; EntryId<4; EntryId++) + { + if(EntryId == psecuritypriv->dot11PrivacyKeyIndex) + rtw_set_key(padapter,&padapter->securitypriv, EntryId, 1); + else + rtw_set_key(padapter,&padapter->securitypriv, EntryId, 0); + } + + } + else + #endif + if((padapter->securitypriv.dot11PrivacyAlgrthm == _TKIP_) || + (padapter->securitypriv.dot11PrivacyAlgrthm == _AES_)) + { + psta = rtw_get_stainfo(pstapriv, get_bssid(mlmepriv)); + if (psta == NULL) { + //DEBUG_ERR( ("Set wpa_set_encryption: Obtain Sta_info fail \n")); + } + else + { + //pairwise key + rtw_setstakey_cmd(padapter, (unsigned char *)psta, _TRUE); + //group key + rtw_set_key(padapter,&padapter->securitypriv,padapter->securitypriv.dot118021XGrpKeyid, 0); + } + } +} + +void sreset_restore_network_station(_adapter *padapter) +{ + struct mlme_priv *mlmepriv = &padapter->mlmepriv; + struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; + struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info); + + #if 0 + { + //======================================================= + // reset related register of Beacon control + + //set MSR to nolink + Set_MSR(padapter, _HW_STATE_NOLINK_); + // reject all data frame + rtw_write16(padapter, REG_RXFLTMAP2,0x00); + //reset TSF + rtw_write8(padapter, REG_DUAL_TSF_RST, (BIT(0)|BIT(1))); + + // disable update TSF + SetBcnCtrlReg(padapter, BIT(4), 0); + + //======================================================= + } + #endif + + rtw_setopmode_cmd(padapter, Ndis802_11Infrastructure); + + { + u8 threshold; + #ifdef CONFIG_USB_HCI + // TH=1 => means that invalidate usb rx aggregation + // TH=0 => means that validate usb rx aggregation, use init value. + if(mlmepriv->htpriv.ht_option) { + if(padapter->registrypriv.wifi_spec==1) + threshold = 1; + else + threshold = 0; + rtw_hal_set_hwreg(padapter, HW_VAR_RXDMA_AGG_PG_TH, (u8 *)(&threshold)); + } else { + threshold = 1; + rtw_hal_set_hwreg(padapter, HW_VAR_RXDMA_AGG_PG_TH, (u8 *)(&threshold)); + } + #endif + } + + set_channel_bwmode(padapter, pmlmeext->cur_channel, pmlmeext->cur_ch_offset, pmlmeext->cur_bwmode); + + //disable dynamic functions, such as high power, DIG + //Switch_DM_Func(padapter, DYNAMIC_FUNC_DISABLE, _FALSE); + + rtw_hal_set_hwreg(padapter, HW_VAR_BSSID, pmlmeinfo->network.MacAddress); + + { + u8 join_type = 0; + rtw_hal_set_hwreg(padapter, HW_VAR_MLME_JOIN, (u8 *)(&join_type)); + } + + Set_MSR(padapter, (pmlmeinfo->state & 0x3)); + + mlmeext_joinbss_event_callback(padapter, 1); + //restore Sequence No. + rtw_write8(padapter,0x4dc,padapter->xmitpriv.nqos_ssn); + + sreset_restore_security_station(padapter); +} + +void sreset_restore_network_status(_adapter *padapter) +{ + struct mlme_priv *mlmepriv = &padapter->mlmepriv; + struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; + struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info); + + if (check_fwstate(mlmepriv, WIFI_STATION_STATE)) { + DBG_871X(FUNC_ADPT_FMT" fwstate:0x%08x - WIFI_STATION_STATE\n", FUNC_ADPT_ARG(padapter), get_fwstate(mlmepriv)); + sreset_restore_network_station(padapter); + } else if (check_fwstate(mlmepriv, WIFI_AP_STATE)) { + DBG_871X(FUNC_ADPT_FMT" fwstate:0x%08x - WIFI_AP_STATE\n", FUNC_ADPT_ARG(padapter), get_fwstate(mlmepriv)); + rtw_ap_restore_network(padapter); + } else if (check_fwstate(mlmepriv, WIFI_ADHOC_STATE)) { + DBG_871X(FUNC_ADPT_FMT" fwstate:0x%08x - WIFI_ADHOC_STATE\n", FUNC_ADPT_ARG(padapter), get_fwstate(mlmepriv)); + } else { + DBG_871X(FUNC_ADPT_FMT" fwstate:0x%08x - ???\n", FUNC_ADPT_ARG(padapter), get_fwstate(mlmepriv)); + } +} + +void sreset_stop_adapter(_adapter *padapter) +{ + struct mlme_priv *pmlmepriv = &(padapter->mlmepriv); + struct xmit_priv *pxmitpriv = &padapter->xmitpriv; + + if (padapter == NULL) + return; + + DBG_871X(FUNC_ADPT_FMT"\n", FUNC_ADPT_ARG(padapter)); + + if (!rtw_netif_queue_stopped(padapter->pnetdev)) + rtw_netif_stop_queue(padapter->pnetdev); + + rtw_cancel_all_timer(padapter); + + /* TODO: OS and HCI independent */ + #if defined(PLATFORM_LINUX) && defined(CONFIG_USB_HCI) + tasklet_kill(&pxmitpriv->xmit_tasklet); + #endif + + if (check_fwstate(pmlmepriv, _FW_UNDER_SURVEY)) + rtw_scan_abort(padapter); + + if (check_fwstate(pmlmepriv, _FW_UNDER_LINKING)) + _rtw_join_timeout_handler(padapter); + +} + +void sreset_start_adapter(_adapter *padapter) +{ + struct mlme_priv *pmlmepriv = &(padapter->mlmepriv); + struct xmit_priv *pxmitpriv = &padapter->xmitpriv; + + if (padapter == NULL) + return; + + DBG_871X(FUNC_ADPT_FMT"\n", FUNC_ADPT_ARG(padapter)); + + if (check_fwstate(pmlmepriv, _FW_LINKED)) { + sreset_restore_network_status(padapter); + } + + /* TODO: OS and HCI independent */ + #if defined(PLATFORM_LINUX) && defined(CONFIG_USB_HCI) + tasklet_hi_schedule(&pxmitpriv->xmit_tasklet); + #endif + + _set_timer(&padapter->mlmepriv.dynamic_chk_timer, 2000); + + if (rtw_netif_queue_stopped(padapter->pnetdev)) + rtw_netif_wake_queue(padapter->pnetdev); + +} + +void sreset_reset(_adapter *padapter) +{ +#ifdef DBG_CONFIG_ERROR_RESET + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(padapter); + struct sreset_priv *psrtpriv = &pHalData->srestpriv; + struct pwrctrl_priv *pwrpriv = &padapter->pwrctrlpriv; + struct mlme_priv *pmlmepriv = &(padapter->mlmepriv); + struct xmit_priv *pxmitpriv = &padapter->xmitpriv; + _irqL irqL; + u32 start = rtw_get_current_time(); + + DBG_871X("%s\n", __FUNCTION__); + + psrtpriv->Wifi_Error_Status = WIFI_STATUS_SUCCESS; + + _enter_pwrlock(&pwrpriv->lock); + + psrtpriv->silent_reset_inprogress = _TRUE; + pwrpriv->change_rfpwrstate = rf_off; + + sreset_stop_adapter(padapter); + #ifdef CONFIG_CONCURRENT_MODE + sreset_stop_adapter(padapter->pbuddy_adapter); + #endif + + #ifdef CONFIG_IPS + _ips_enter(padapter); + _ips_leave(padapter); + #endif + + sreset_start_adapter(padapter); + #ifdef CONFIG_CONCURRENT_MODE + sreset_start_adapter(padapter->pbuddy_adapter); + #endif + + psrtpriv->silent_reset_inprogress = _FALSE; + + _exit_pwrlock(&pwrpriv->lock); + + DBG_871X("%s done in %d ms\n", __FUNCTION__, rtw_get_passing_time_ms(start)); +#endif +} --- linux-raspi2-4.2.0.orig/drivers/net/wireless/rtl8192cu/core/rtw_sta_mgt.c +++ linux-raspi2-4.2.0/drivers/net/wireless/rtl8192cu/core/rtw_sta_mgt.c @@ -0,0 +1,847 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved. + * + * 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 + * published by the Free Software Foundation. + * + * 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 Street, Fifth Floor, Boston, MA 02110, USA + * + * + ******************************************************************************/ +#define _RTW_STA_MGT_C_ + +#include +#include +#include +#include +#include +#include + + +#if defined (PLATFORM_LINUX) && defined (PLATFORM_WINDOWS) + +#error "Shall be Linux or Windows, but not both!\n" + +#endif + +#include + +void _rtw_init_stainfo(struct sta_info *psta); +void _rtw_init_stainfo(struct sta_info *psta) +{ + +_func_enter_; + + _rtw_memset((u8 *)psta, 0, sizeof (struct sta_info)); + + _rtw_spinlock_init(&psta->lock); + _rtw_init_listhead(&psta->list); + _rtw_init_listhead(&psta->hash_list); + //_rtw_init_listhead(&psta->asoc_list); + //_rtw_init_listhead(&psta->sleep_list); + //_rtw_init_listhead(&psta->wakeup_list); + + _rtw_init_queue(&psta->sleep_q); + psta->sleepq_len = 0; + + _rtw_init_sta_xmit_priv(&psta->sta_xmitpriv); + _rtw_init_sta_recv_priv(&psta->sta_recvpriv); + +#ifdef CONFIG_AP_MODE + + _rtw_init_listhead(&psta->asoc_list); + + _rtw_init_listhead(&psta->auth_list); + + psta->expire_to = 0; + + psta->flags = 0; + + psta->capability = 0; + + psta->bpairwise_key_installed = _FALSE; + + +#ifdef CONFIG_NATIVEAP_MLME + psta->nonerp_set = 0; + psta->no_short_slot_time_set = 0; + psta->no_short_preamble_set = 0; + psta->no_ht_gf_set = 0; + psta->no_ht_set = 0; + psta->ht_20mhz_set = 0; +#endif + +#ifdef CONFIG_TX_MCAST2UNI + psta->under_exist_checking = 0; +#endif // CONFIG_TX_MCAST2UNI + + psta->keep_alive_trycnt = 0; + +#endif // CONFIG_AP_MODE + +_func_exit_; + +} + +u32 _rtw_init_sta_priv(struct sta_priv *pstapriv) +{ + struct sta_info *psta; + s32 i; + +_func_enter_; + + pstapriv->pallocated_stainfo_buf = rtw_zvmalloc (sizeof(struct sta_info) * NUM_STA+ 4); + + if(!pstapriv->pallocated_stainfo_buf) + return _FAIL; + + pstapriv->pstainfo_buf = pstapriv->pallocated_stainfo_buf + 4 - + ((SIZE_PTR)(pstapriv->pallocated_stainfo_buf ) & 3); + + _rtw_init_queue(&pstapriv->free_sta_queue); + + _rtw_spinlock_init(&pstapriv->sta_hash_lock); + + //_rtw_init_queue(&pstapriv->asoc_q); + pstapriv->asoc_sta_count = 0; + _rtw_init_queue(&pstapriv->sleep_q); + _rtw_init_queue(&pstapriv->wakeup_q); + + psta = (struct sta_info *)(pstapriv->pstainfo_buf); + + + for(i = 0; i < NUM_STA; i++) + { + _rtw_init_stainfo(psta); + + _rtw_init_listhead(&(pstapriv->sta_hash[i])); + + rtw_list_insert_tail(&psta->list, get_list_head(&pstapriv->free_sta_queue)); + + psta++; + } + + + +#ifdef CONFIG_AP_MODE + + pstapriv->sta_dz_bitmap = 0; + pstapriv->tim_bitmap = 0; + + _rtw_init_listhead(&pstapriv->asoc_list); + _rtw_init_listhead(&pstapriv->auth_list); + _rtw_spinlock_init(&pstapriv->asoc_list_lock); + _rtw_spinlock_init(&pstapriv->auth_list_lock); + pstapriv->asoc_list_cnt = 0; + pstapriv->auth_list_cnt = 0; + + pstapriv->auth_to = 3; // 3*2 = 6 sec + pstapriv->assoc_to = 3; + //pstapriv->expire_to = 900;// 900*2 = 1800 sec = 30 min, expire after no any traffic. + //pstapriv->expire_to = 30;// 30*2 = 60 sec = 1 min, expire after no any traffic. +#ifdef CONFIG_ACTIVE_KEEP_ALIVE_CHECK + pstapriv->expire_to = 3; // 3*2 = 6 sec +#else + pstapriv->expire_to = 60;// 60*2 = 120 sec = 2 min, expire after no any traffic. +#endif + pstapriv->max_num_sta = NUM_STA; + +#endif + +_func_exit_; + + return _SUCCESS; + +} + +inline int rtw_stainfo_offset(struct sta_priv *stapriv, struct sta_info *sta) +{ + int offset = (((u8 *)sta) - stapriv->pstainfo_buf)/sizeof(struct sta_info); + + if (!stainfo_offset_valid(offset)) + DBG_871X("%s invalid offset(%d), out of range!!!", __func__, offset); + + return offset; +} + +inline struct sta_info *rtw_get_stainfo_by_offset(struct sta_priv *stapriv, int offset) +{ + if (!stainfo_offset_valid(offset)) + DBG_871X("%s invalid offset(%d), out of range!!!", __func__, offset); + + return (struct sta_info *)(stapriv->pstainfo_buf + offset * sizeof(struct sta_info)); +} + +void _rtw_free_sta_xmit_priv_lock(struct sta_xmit_priv *psta_xmitpriv); +void _rtw_free_sta_xmit_priv_lock(struct sta_xmit_priv *psta_xmitpriv) +{ +_func_enter_; + + _rtw_spinlock_free(&psta_xmitpriv->lock); + + _rtw_spinlock_free(&(psta_xmitpriv->be_q.sta_pending.lock)); + _rtw_spinlock_free(&(psta_xmitpriv->bk_q.sta_pending.lock)); + _rtw_spinlock_free(&(psta_xmitpriv->vi_q.sta_pending.lock)); + _rtw_spinlock_free(&(psta_xmitpriv->vo_q.sta_pending.lock)); +_func_exit_; +} + +static void _rtw_free_sta_recv_priv_lock(struct sta_recv_priv *psta_recvpriv) +{ +_func_enter_; + + _rtw_spinlock_free(&psta_recvpriv->lock); + + _rtw_spinlock_free(&(psta_recvpriv->defrag_q.lock)); + +_func_exit_; + +} + +void rtw_mfree_stainfo(struct sta_info *psta); +void rtw_mfree_stainfo(struct sta_info *psta) +{ +_func_enter_; + + if(&psta->lock != NULL) + _rtw_spinlock_free(&psta->lock); + + _rtw_free_sta_xmit_priv_lock(&psta->sta_xmitpriv); + _rtw_free_sta_recv_priv_lock(&psta->sta_recvpriv); + +_func_exit_; +} + + +// this function is used to free the memory of lock || sema for all stainfos +void rtw_mfree_all_stainfo(struct sta_priv *pstapriv ); +void rtw_mfree_all_stainfo(struct sta_priv *pstapriv ) +{ + _irqL irqL; + _list *plist, *phead; + struct sta_info *psta = NULL; + +_func_enter_; + + _enter_critical_bh(&pstapriv->sta_hash_lock, &irqL); + + phead = get_list_head(&pstapriv->free_sta_queue); + plist = get_next(phead); + + while ((rtw_end_of_queue_search(phead, plist)) == _FALSE) + { + psta = LIST_CONTAINOR(plist, struct sta_info ,list); + plist = get_next(plist); + + rtw_mfree_stainfo(psta); + } + + _exit_critical_bh(&pstapriv->sta_hash_lock, &irqL); + +_func_exit_; + +} + +void rtw_mfree_sta_priv_lock(struct sta_priv *pstapriv); +void rtw_mfree_sta_priv_lock(struct sta_priv *pstapriv) +{ +#ifdef CONFIG_AP_MODE + struct wlan_acl_pool *pacl_list = &pstapriv->acl_list; +#endif + + rtw_mfree_all_stainfo(pstapriv); //be done before free sta_hash_lock + + _rtw_spinlock_free(&pstapriv->free_sta_queue.lock); + + _rtw_spinlock_free(&pstapriv->sta_hash_lock); + _rtw_spinlock_free(&pstapriv->wakeup_q.lock); + _rtw_spinlock_free(&pstapriv->sleep_q.lock); + +#ifdef CONFIG_AP_MODE + _rtw_spinlock_free(&pstapriv->asoc_list_lock); + _rtw_spinlock_free(&pstapriv->auth_list_lock); + _rtw_spinlock_free(&pacl_list->acl_node_q.lock); +#endif + +} + +u32 _rtw_free_sta_priv(struct sta_priv *pstapriv) +{ + _irqL irqL; + _list *phead, *plist; + struct sta_info *psta = NULL; + struct recv_reorder_ctrl *preorder_ctrl; + int index; + +_func_enter_; + if(pstapriv){ + + /* delete all reordering_ctrl_timer */ + _enter_critical_bh(&pstapriv->sta_hash_lock, &irqL); + for(index = 0; index < NUM_STA; index++) + { + phead = &(pstapriv->sta_hash[index]); + plist = get_next(phead); + + while ((rtw_end_of_queue_search(phead, plist)) == _FALSE) + { + int i; + psta = LIST_CONTAINOR(plist, struct sta_info ,hash_list); + plist = get_next(plist); + + for(i=0; i < 16 ; i++) + { + preorder_ctrl = &psta->recvreorder_ctrl[i]; + _cancel_timer_ex(&preorder_ctrl->reordering_ctrl_timer); + } + } + } + _exit_critical_bh(&pstapriv->sta_hash_lock, &irqL); + /*===============================*/ + + rtw_mfree_sta_priv_lock(pstapriv); + + if(pstapriv->pallocated_stainfo_buf) { + rtw_vmfree(pstapriv->pallocated_stainfo_buf, sizeof(struct sta_info)*NUM_STA+4); + } + } + +_func_exit_; + return _SUCCESS; +} + + +//struct sta_info *rtw_alloc_stainfo(_queue *pfree_sta_queue, unsigned char *hwaddr) +struct sta_info *rtw_alloc_stainfo(struct sta_priv *pstapriv, u8 *hwaddr) +{ + _irqL irqL, irqL2; + uint tmp_aid; + s32 index; + _list *phash_list; + struct sta_info *psta; + _queue *pfree_sta_queue; + struct recv_reorder_ctrl *preorder_ctrl; + int i = 0; + u16 wRxSeqInitialValue = 0xffff; + +_func_enter_; + + pfree_sta_queue = &pstapriv->free_sta_queue; + + //_enter_critical_bh(&(pfree_sta_queue->lock), &irqL); + _enter_critical_bh(&(pstapriv->sta_hash_lock), &irqL2); + + if (_rtw_queue_empty(pfree_sta_queue) == _TRUE) + { + //_exit_critical_bh(&(pfree_sta_queue->lock), &irqL); + _exit_critical_bh(&(pstapriv->sta_hash_lock), &irqL2); + psta = NULL; + } + else + { + psta = LIST_CONTAINOR(get_next(&pfree_sta_queue->queue), struct sta_info, list); + + rtw_list_delete(&(psta->list)); + + //_exit_critical_bh(&(pfree_sta_queue->lock), &irqL); + + tmp_aid = psta->aid; + + _rtw_init_stainfo(psta); + + _rtw_memcpy(psta->hwaddr, hwaddr, ETH_ALEN); + + index = wifi_mac_hash(hwaddr); + + RT_TRACE(_module_rtl871x_sta_mgt_c_,_drv_info_,("rtw_alloc_stainfo: index = %x", index)); + + if(index >= NUM_STA){ + RT_TRACE(_module_rtl871x_sta_mgt_c_,_drv_err_,("ERROR=> rtw_alloc_stainfo: index >= NUM_STA")); + psta= NULL; + goto exit; + } + phash_list = &(pstapriv->sta_hash[index]); + + //_enter_critical_bh(&(pstapriv->sta_hash_lock), &irqL2); + + rtw_list_insert_tail(&psta->hash_list, phash_list); + + pstapriv->asoc_sta_count ++ ; + + //_exit_critical_bh(&(pstapriv->sta_hash_lock), &irqL2); + +// Commented by Albert 2009/08/13 +// For the SMC router, the sequence number of first packet of WPS handshake will be 0. +// In this case, this packet will be dropped by recv_decache function if we use the 0x00 as the default value for tid_rxseq variable. +// So, we initialize the tid_rxseq variable as the 0xffff. + + for( i = 0; i < 16; i++ ) + { + _rtw_memcpy( &psta->sta_recvpriv.rxcache.tid_rxseq[ i ], &wRxSeqInitialValue, 2 ); + } + + RT_TRACE(_module_rtl871x_sta_mgt_c_,_drv_info_,("alloc number_%d stainfo with hwaddr = %x %x %x %x %x %x \n", + pstapriv->asoc_sta_count , hwaddr[0], hwaddr[1], hwaddr[2],hwaddr[3],hwaddr[4],hwaddr[5])); + + init_addba_retry_timer(pstapriv->padapter, psta); + +#ifdef CONFIG_TDLS + psta->padapter = pstapriv->padapter; + init_TPK_timer(pstapriv->padapter, psta); + init_ch_switch_timer(pstapriv->padapter, psta); + init_base_ch_timer(pstapriv->padapter, psta); + init_off_ch_timer(pstapriv->padapter, psta); + init_handshake_timer(pstapriv->padapter, psta); + init_tdls_alive_timer(pstapriv->padapter, psta); +#endif //CONFIG_TDLS + + //for A-MPDU Rx reordering buffer control + for(i=0; i < 16 ; i++) + { + preorder_ctrl = &psta->recvreorder_ctrl[i]; + + preorder_ctrl->padapter = pstapriv->padapter; + + preorder_ctrl->enable = _FALSE; + + preorder_ctrl->indicate_seq = 0xffff; + #ifdef DBG_RX_SEQ + DBG_871X("DBG_RX_SEQ %s:%d IndicateSeq: %d\n", __FUNCTION__, __LINE__, + preorder_ctrl->indicate_seq); + #endif + preorder_ctrl->wend_b= 0xffff; + //preorder_ctrl->wsize_b = (NR_RECVBUFF-2); + preorder_ctrl->wsize_b = 64;//64; + + _rtw_init_queue(&preorder_ctrl->pending_recvframe_queue); + + rtw_init_recv_timer(preorder_ctrl); + } + + + //init for DM + psta->rssi_stat.UndecoratedSmoothedPWDB = 0; + psta->rssi_stat.UndecoratedSmoothedCCK = (-1); + + /* init for the sequence number of received management frame */ + psta->RxMgmtFrameSeqNum = 0xffff; + } + +exit: + + _exit_critical_bh(&(pstapriv->sta_hash_lock), &irqL2); + +_func_exit_; + + return psta; + + +} + + +// using pstapriv->sta_hash_lock to protect +u32 rtw_free_stainfo(_adapter *padapter , struct sta_info *psta) +{ + int i; + _irqL irqL0; + _queue *pfree_sta_queue; + struct recv_reorder_ctrl *preorder_ctrl; + struct sta_xmit_priv *pstaxmitpriv; + struct xmit_priv *pxmitpriv= &padapter->xmitpriv; + struct sta_priv *pstapriv = &padapter->stapriv; + struct hw_xmit *phwxmit; + + +_func_enter_; + + if (psta == NULL) + goto exit; + + + _enter_critical_bh(&psta->lock, &irqL0); + psta->state &= ~_FW_LINKED; + _exit_critical_bh(&psta->lock, &irqL0); + + pfree_sta_queue = &pstapriv->free_sta_queue; + + + pstaxmitpriv = &psta->sta_xmitpriv; + + //rtw_list_delete(&psta->sleep_list); + + //rtw_list_delete(&psta->wakeup_list); + + _enter_critical_bh(&pxmitpriv->lock, &irqL0); + + rtw_free_xmitframe_queue(pxmitpriv, &psta->sleep_q); + psta->sleepq_len = 0; + + //vo + //_enter_critical_bh(&(pxmitpriv->vo_pending.lock), &irqL0); + rtw_free_xmitframe_queue( pxmitpriv, &pstaxmitpriv->vo_q.sta_pending); + rtw_list_delete(&(pstaxmitpriv->vo_q.tx_pending)); + phwxmit = pxmitpriv->hwxmits; + phwxmit->accnt -= pstaxmitpriv->vo_q.qcnt; + pstaxmitpriv->vo_q.qcnt = 0; + //_exit_critical_bh(&(pxmitpriv->vo_pending.lock), &irqL0); + + //vi + //_enter_critical_bh(&(pxmitpriv->vi_pending.lock), &irqL0); + rtw_free_xmitframe_queue( pxmitpriv, &pstaxmitpriv->vi_q.sta_pending); + rtw_list_delete(&(pstaxmitpriv->vi_q.tx_pending)); + phwxmit = pxmitpriv->hwxmits+1; + phwxmit->accnt -= pstaxmitpriv->vi_q.qcnt; + pstaxmitpriv->vi_q.qcnt = 0; + //_exit_critical_bh(&(pxmitpriv->vi_pending.lock), &irqL0); + + //be + //_enter_critical_bh(&(pxmitpriv->be_pending.lock), &irqL0); + rtw_free_xmitframe_queue( pxmitpriv, &pstaxmitpriv->be_q.sta_pending); + rtw_list_delete(&(pstaxmitpriv->be_q.tx_pending)); + phwxmit = pxmitpriv->hwxmits+2; + phwxmit->accnt -= pstaxmitpriv->be_q.qcnt; + pstaxmitpriv->be_q.qcnt = 0; + //_exit_critical_bh(&(pxmitpriv->be_pending.lock), &irqL0); + + //bk + //_enter_critical_bh(&(pxmitpriv->bk_pending.lock), &irqL0); + rtw_free_xmitframe_queue( pxmitpriv, &pstaxmitpriv->bk_q.sta_pending); + rtw_list_delete(&(pstaxmitpriv->bk_q.tx_pending)); + phwxmit = pxmitpriv->hwxmits+3; + phwxmit->accnt -= pstaxmitpriv->bk_q.qcnt; + pstaxmitpriv->bk_q.qcnt = 0; + //_exit_critical_bh(&(pxmitpriv->bk_pending.lock), &irqL0); + + _exit_critical_bh(&pxmitpriv->lock, &irqL0); + + rtw_list_delete(&psta->hash_list); + RT_TRACE(_module_rtl871x_sta_mgt_c_,_drv_err_,("\n free number_%d stainfo with hwaddr = 0x%.2x 0x%.2x 0x%.2x 0x%.2x 0x%.2x 0x%.2x \n",pstapriv->asoc_sta_count , psta->hwaddr[0], psta->hwaddr[1], psta->hwaddr[2],psta->hwaddr[3],psta->hwaddr[4],psta->hwaddr[5])); + pstapriv->asoc_sta_count --; + + + // re-init sta_info; 20061114 // will be init in alloc_stainfo + //_rtw_init_sta_xmit_priv(&psta->sta_xmitpriv); + //_rtw_init_sta_recv_priv(&psta->sta_recvpriv); + + _cancel_timer_ex(&psta->addba_retry_timer); + +#ifdef CONFIG_TDLS + _cancel_timer_ex(&psta->TPK_timer); + _cancel_timer_ex(&psta->option_timer); + _cancel_timer_ex(&psta->base_ch_timer); + _cancel_timer_ex(&psta->off_ch_timer); + _cancel_timer_ex(&psta->alive_timer1); + _cancel_timer_ex(&psta->alive_timer2); +#endif //CONFIG_TDLS + + //for A-MPDU Rx reordering buffer control, cancel reordering_ctrl_timer + for(i=0; i < 16 ; i++) + { + _irqL irqL; + _list *phead, *plist; + union recv_frame *prframe; + _queue *ppending_recvframe_queue; + _queue *pfree_recv_queue = &padapter->recvpriv.free_recv_queue; + + preorder_ctrl = &psta->recvreorder_ctrl[i]; + + _cancel_timer_ex(&preorder_ctrl->reordering_ctrl_timer); + + + ppending_recvframe_queue = &preorder_ctrl->pending_recvframe_queue; + + _enter_critical_bh(&ppending_recvframe_queue->lock, &irqL); + + phead = get_list_head(ppending_recvframe_queue); + plist = get_next(phead); + + while(!rtw_is_list_empty(phead)) + { + prframe = LIST_CONTAINOR(plist, union recv_frame, u); + + plist = get_next(plist); + + rtw_list_delete(&(prframe->u.hdr.list)); + + rtw_free_recvframe(prframe, pfree_recv_queue); + } + + _exit_critical_bh(&ppending_recvframe_queue->lock, &irqL); + + } + + +#ifdef CONFIG_AP_MODE + +/* + _enter_critical_bh(&pstapriv->asoc_list_lock, &irqL0); + rtw_list_delete(&psta->asoc_list); + _exit_critical_bh(&pstapriv->asoc_list_lock, &irqL0); +*/ + _enter_critical_bh(&pstapriv->auth_list_lock, &irqL0); + if (!rtw_is_list_empty(&psta->auth_list)) { + rtw_list_delete(&psta->auth_list); + pstapriv->auth_list_cnt--; + } + _exit_critical_bh(&pstapriv->auth_list_lock, &irqL0); + + psta->expire_to = 0; + + psta->sleepq_ac_len = 0; + psta->qos_info = 0; + + psta->max_sp_len = 0; + psta->uapsd_bk = 0; + psta->uapsd_be = 0; + psta->uapsd_vi = 0; + psta->uapsd_vo = 0; + + psta->has_legacy_ac = 0; + +#ifdef CONFIG_NATIVEAP_MLME + + pstapriv->sta_dz_bitmap &=~BIT(psta->aid); + pstapriv->tim_bitmap &=~BIT(psta->aid); + + //rtw_indicate_sta_disassoc_event(padapter, psta); + + if ((psta->aid >0)&&(pstapriv->sta_aid[psta->aid - 1] == psta)) + { + pstapriv->sta_aid[psta->aid - 1] = NULL; + psta->aid = 0; + } + +#endif // CONFIG_NATIVEAP_MLME + +#ifdef CONFIG_TX_MCAST2UNI + psta->under_exist_checking = 0; +#endif // CONFIG_TX_MCAST2UNI + +#endif // CONFIG_AP_MODE + + _rtw_spinlock_free(&psta->lock); + + //_enter_critical_bh(&(pfree_sta_queue->lock), &irqL0); + rtw_list_insert_tail(&psta->list, get_list_head(pfree_sta_queue)); + //_exit_critical_bh(&(pfree_sta_queue->lock), &irqL0); + +exit: + +_func_exit_; + + return _SUCCESS; + +} + +// free all stainfo which in sta_hash[all] +void rtw_free_all_stainfo(_adapter *padapter) +{ + _irqL irqL; + _list *plist, *phead; + s32 index; + struct sta_info *psta = NULL; + struct sta_priv *pstapriv = &padapter->stapriv; + struct sta_info* pbcmc_stainfo =rtw_get_bcmc_stainfo( padapter); + +_func_enter_; + + if(pstapriv->asoc_sta_count==1) + goto exit; + + _enter_critical_bh(&pstapriv->sta_hash_lock, &irqL); + + for(index=0; index< NUM_STA; index++) + { + phead = &(pstapriv->sta_hash[index]); + plist = get_next(phead); + + while ((rtw_end_of_queue_search(phead, plist)) == _FALSE) + { + psta = LIST_CONTAINOR(plist, struct sta_info ,hash_list); + + plist = get_next(plist); + + if(pbcmc_stainfo!=psta) + rtw_free_stainfo(padapter , psta); + + } + } + + _exit_critical_bh(&pstapriv->sta_hash_lock, &irqL); + +exit: + +_func_exit_; + +} + +/* any station allocated can be searched by hash list */ +struct sta_info *rtw_get_stainfo(struct sta_priv *pstapriv, u8 *hwaddr) +{ + + _irqL irqL; + + _list *plist, *phead; + + struct sta_info *psta = NULL; + + u32 index; + + u8 *addr; + + u8 bc_addr[ETH_ALEN] = {0xff,0xff,0xff,0xff,0xff,0xff}; + +_func_enter_; + + if(hwaddr==NULL) + return NULL; + + if(IS_MCAST(hwaddr)) + { + addr = bc_addr; + } + else + { + addr = hwaddr; + } + + index = wifi_mac_hash(addr); + + _enter_critical_bh(&pstapriv->sta_hash_lock, &irqL); + + phead = &(pstapriv->sta_hash[index]); + plist = get_next(phead); + + + while ((rtw_end_of_queue_search(phead, plist)) == _FALSE) + { + + psta = LIST_CONTAINOR(plist, struct sta_info, hash_list); + + if ((_rtw_memcmp(psta->hwaddr, addr, ETH_ALEN))== _TRUE) + { // if found the matched address + break; + } + psta=NULL; + plist = get_next(plist); + } + + _exit_critical_bh(&pstapriv->sta_hash_lock, &irqL); +_func_exit_; + return psta; + +} + +u32 rtw_init_bcmc_stainfo(_adapter* padapter) +{ + + struct sta_info *psta; + struct tx_servq *ptxservq; + u32 res=_SUCCESS; + NDIS_802_11_MAC_ADDRESS bcast_addr= {0xff,0xff,0xff,0xff,0xff,0xff}; + + struct sta_priv *pstapriv = &padapter->stapriv; + //_queue *pstapending = &padapter->xmitpriv.bm_pending; + +_func_enter_; + + psta = rtw_alloc_stainfo(pstapriv, bcast_addr); + + if(psta==NULL){ + res=_FAIL; + RT_TRACE(_module_rtl871x_sta_mgt_c_,_drv_err_,("rtw_alloc_stainfo fail")); + goto exit; + } + + // default broadcast & multicast use macid 1 + psta->mac_id = 1; + + ptxservq= &(psta->sta_xmitpriv.be_q); + +/* + _enter_critical(&pstapending->lock, &irqL0); + + if (rtw_is_list_empty(&ptxservq->tx_pending)) + rtw_list_insert_tail(&ptxservq->tx_pending, get_list_head(pstapending)); + + _exit_critical(&pstapending->lock, &irqL0); +*/ + +exit: +_func_exit_; + return _SUCCESS; + +} + + +struct sta_info* rtw_get_bcmc_stainfo(_adapter* padapter) +{ + struct sta_info *psta; + struct sta_priv *pstapriv = &padapter->stapriv; + u8 bc_addr[ETH_ALEN] = {0xff,0xff,0xff,0xff,0xff,0xff}; +_func_enter_; + psta = rtw_get_stainfo(pstapriv, bc_addr); +_func_exit_; + return psta; + +} + +u8 rtw_access_ctrl(_adapter *padapter, u8 *mac_addr) +{ + u8 res = _TRUE; +#ifdef CONFIG_AP_MODE + _irqL irqL; + _list *plist, *phead; + struct rtw_wlan_acl_node *paclnode; + u8 match = _FALSE; + struct sta_priv *pstapriv = &padapter->stapriv; + struct wlan_acl_pool *pacl_list = &pstapriv->acl_list; + _queue *pacl_node_q =&pacl_list->acl_node_q; + + _enter_critical_bh(&(pacl_node_q->lock), &irqL); + phead = get_list_head(pacl_node_q); + plist = get_next(phead); + while ((rtw_end_of_queue_search(phead, plist)) == _FALSE) + { + paclnode = LIST_CONTAINOR(plist, struct rtw_wlan_acl_node, list); + plist = get_next(plist); + + if(_rtw_memcmp(paclnode->addr, mac_addr, ETH_ALEN)) + { + if(paclnode->valid == _TRUE) + { + match = _TRUE; + break; + } + } + } + _exit_critical_bh(&(pacl_node_q->lock), &irqL); + + + if(pacl_list->mode == 1)//accept unless in deny list + { + res = (match == _TRUE) ? _FALSE:_TRUE; + } + else if(pacl_list->mode == 2)//deny unless in accept list + { + res = (match == _TRUE) ? _TRUE:_FALSE; + } + else + { + res = _TRUE; + } + +#endif + + return res; + +} --- linux-raspi2-4.2.0.orig/drivers/net/wireless/rtl8192cu/core/rtw_tdls.c +++ linux-raspi2-4.2.0/drivers/net/wireless/rtl8192cu/core/rtw_tdls.c @@ -0,0 +1,2940 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved. + * + * 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 + * published by the Free Software Foundation. + * + * 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 Street, Fifth Floor, Boston, MA 02110, USA + * + * + ******************************************************************************/ +#define _RTW_TDLS_C_ + +#include +#include +#include +#include + +#ifdef CONFIG_TDLS +extern unsigned char MCS_rate_2R[16]; +extern unsigned char MCS_rate_1R[16]; +extern void process_wmmps_data(_adapter *padapter, union recv_frame *precv_frame); +extern s32 rtw_dump_xframe(_adapter *padapter, struct xmit_frame *pxmitframe); + +void rtw_reset_tdls_info(_adapter* padapter) +{ + struct tdls_info *ptdlsinfo = &padapter->tdlsinfo; + + ptdlsinfo->ap_prohibited = _FALSE; + ptdlsinfo->setup_state = TDLS_STATE_NONE; + ptdlsinfo->sta_cnt = 0; + ptdlsinfo->sta_maximum = _FALSE; + ptdlsinfo->macid_index= 6; + ptdlsinfo->clear_cam= 0; + ptdlsinfo->ch_sensing = 0; + ptdlsinfo->cur_channel = 0; + ptdlsinfo->candidate_ch = 1; //when inplement channel switching, default candidate channel is 1 + ptdlsinfo->watchdog_count = 0; + ptdlsinfo->dev_discovered = 0; + +#ifdef CONFIG_WFD + ptdlsinfo->wfd_info = &padapter->wfd_info; +#endif //CONFIG_WFD +} + +int rtw_init_tdls_info(_adapter* padapter) +{ + int res = _SUCCESS; + struct tdls_info *ptdlsinfo = &padapter->tdlsinfo; + + ptdlsinfo->enable = 1; + rtw_reset_tdls_info(padapter); + + _rtw_spinlock_init(&ptdlsinfo->cmd_lock); + _rtw_spinlock_init(&ptdlsinfo->hdl_lock); + + return res; + +} + +void rtw_free_tdls_info(struct tdls_info *ptdlsinfo) +{ + _rtw_spinlock_free(&ptdlsinfo->cmd_lock); + _rtw_spinlock_free(&ptdlsinfo->hdl_lock); + + _rtw_memset(ptdlsinfo, 0, sizeof(struct tdls_info) ); + +} + +void issue_nulldata_to_TDLS_peer_STA(_adapter *padapter, struct sta_info *ptdls_sta, unsigned int power_mode) +{ + struct xmit_frame *pmgntframe; + struct pkt_attrib *pattrib; + unsigned char *pframe; + struct rtw_ieee80211_hdr *pwlanhdr; + unsigned short *fctrl; + struct xmit_priv *pxmitpriv = &(padapter->xmitpriv); + struct mlme_ext_priv *pmlmeext = &(padapter->mlmeextpriv); + struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info); + + if ((pmgntframe = alloc_mgtxmitframe(pxmitpriv)) == NULL) + { + return; + } + + //update attribute + pattrib = &pmgntframe->attrib; + update_mgntframe_attrib(padapter, pattrib); + + _rtw_memset(pmgntframe->buf_addr, 0, WLANHDR_OFFSET + TXDESC_OFFSET); + + pframe = (u8 *)(pmgntframe->buf_addr) + TXDESC_OFFSET; + pwlanhdr = (struct rtw_ieee80211_hdr *)pframe; + + fctrl = &(pwlanhdr->frame_ctl); + *(fctrl) = 0; +// SetToDs(fctrl); + if (power_mode) + { + SetPwrMgt(fctrl); + } + + _rtw_memcpy(pwlanhdr->addr1, ptdls_sta->hwaddr, ETH_ALEN); + _rtw_memcpy(pwlanhdr->addr2, myid(&(padapter->eeprompriv)), ETH_ALEN); + _rtw_memcpy(pwlanhdr->addr3, get_my_bssid(&(pmlmeinfo->network)), ETH_ALEN); + + ptdls_sta->sta_xmitpriv.txseq_tid[pattrib->priority]++; + ptdls_sta->sta_xmitpriv.txseq_tid[pattrib->priority] &= 0xFFF; + pattrib->seqnum = ptdls_sta->sta_xmitpriv.txseq_tid[pattrib->priority]; + SetSeqNum(pwlanhdr, pattrib->seqnum); + + SetFrameSubType(pframe, WIFI_DATA_NULL); + + pframe += sizeof(struct rtw_ieee80211_hdr_3addr); + pattrib->pktlen = sizeof(struct rtw_ieee80211_hdr_3addr); + + pattrib->last_txcmdsz = pattrib->pktlen; + dump_mgntframe(padapter, pmgntframe); + + return; +} + +s32 update_tdls_attrib(_adapter *padapter, struct pkt_attrib *pattrib) +{ + + struct sta_info *psta = NULL; + struct sta_priv *pstapriv = &padapter->stapriv; + struct security_priv *psecuritypriv = &padapter->securitypriv; + struct mlme_priv *pmlmepriv = &padapter->mlmepriv; + struct qos_priv *pqospriv= &pmlmepriv->qospriv; + + s32 res=_SUCCESS; + sint bmcast; + + bmcast = IS_MCAST(pattrib->ra); + + psta = rtw_get_stainfo(pstapriv, pattrib->ra); + if (psta == NULL) { + res =_FAIL; + goto exit; + } + + pattrib->mac_id = psta->mac_id; + + pattrib->psta = psta; + + pattrib->ack_policy = 0; + // get ether_hdr_len + pattrib->pkt_hdrlen = ETH_HLEN;//(pattrib->ether_type == 0x8100) ? (14 + 4 ): 14; //vlan tag + + if (pqospriv->qos_option && psta->qos_option) { + pattrib->priority = 1; //tdls management frame should be AC_BK + pattrib->hdrlen = WLAN_HDR_A3_QOS_LEN; + pattrib->subtype = WIFI_QOS_DATA_TYPE; + } else { + pattrib->hdrlen = WLAN_HDR_A3_LEN; + pattrib->subtype = WIFI_DATA_TYPE; + pattrib->priority = 0; + } + + if (psta->ieee8021x_blocked == _TRUE) + { + pattrib->encrypt = 0; + } + else + { + GET_ENCRY_ALGO(psecuritypriv, psta, pattrib->encrypt, bmcast); + + switch(psecuritypriv->dot11AuthAlgrthm) + { + case dot11AuthAlgrthm_Open: + case dot11AuthAlgrthm_Shared: + case dot11AuthAlgrthm_Auto: + pattrib->key_idx = (u8)psecuritypriv->dot11PrivacyKeyIndex; + break; + case dot11AuthAlgrthm_8021X: + pattrib->key_idx = 0; + break; + default: + pattrib->key_idx = 0; + break; + } + } + + switch (pattrib->encrypt) + { + case _WEP40_: + case _WEP104_: + pattrib->iv_len = 4; + pattrib->icv_len = 4; + break; + case _TKIP_: + pattrib->iv_len = 8; + pattrib->icv_len = 4; + if(padapter->securitypriv.busetkipkey==_FAIL) + { + res =_FAIL; + goto exit; + } + break; + case _AES_: + pattrib->iv_len = 8; + pattrib->icv_len = 8; + break; + default: + pattrib->iv_len = 0; + pattrib->icv_len = 0; + break; + } + + if (pattrib->encrypt && + ((padapter->securitypriv.sw_encrypt == _TRUE) || (psecuritypriv->hw_decrypted == _FALSE))) + { + pattrib->bswenc = _TRUE; + } else { + pattrib->bswenc = _FALSE; + } + + //qos_en, ht_en, init rate, ,bw, ch_offset, sgi + pattrib->qos_en = psta->qos_option; + pattrib->ht_en = psta->htpriv.ht_option; + pattrib->raid = psta->raid; + pattrib->bwmode = psta->htpriv.bwmode; + pattrib->ch_offset = psta->htpriv.ch_offset; + pattrib->sgi= psta->htpriv.sgi; + pattrib->ampdu_en = _FALSE; + + //if(pattrib->ht_en && psta->htpriv.ampdu_enable) + //{ + // if(psta->htpriv.agg_enable_bitmap & BIT(pattrib->priority)) + // pattrib->ampdu_en = _TRUE; + //} + +exit: + + return res; +} + +void free_tdls_sta(_adapter *padapter, struct sta_info *ptdls_sta) +{ + struct tdls_info *ptdlsinfo = &padapter->tdlsinfo; + struct sta_priv *pstapriv = &padapter->stapriv; + _irqL irqL; + + //free peer sta_info + _enter_critical_bh(&(pstapriv->sta_hash_lock), &irqL); + if(ptdlsinfo->sta_cnt != 0) + ptdlsinfo->sta_cnt--; + _exit_critical_bh(&(pstapriv->sta_hash_lock), &irqL); + if( ptdlsinfo->sta_cnt < (NUM_STA - 2) ) // -2: AP + BC/MC sta + { + ptdlsinfo->sta_maximum = _FALSE; + _rtw_memset( &ptdlsinfo->ss_record, 0x00, sizeof(struct tdls_ss_record) ); + } + //ready to clear cam + if(ptdls_sta->mac_id!=0){ + ptdlsinfo->clear_cam=ptdls_sta->mac_id; + rtw_setstakey_cmd(padapter, (u8 *)ptdls_sta, _TRUE); + } + + if(ptdlsinfo->sta_cnt==0){ + rtw_tdls_cmd(padapter, myid(&(padapter->eeprompriv)), TDLS_RS_RCR); + ptdlsinfo->setup_state=TDLS_STATE_NONE; + } + else + DBG_871X("Remain tdls sta:%02x\n", ptdlsinfo->sta_cnt); + + rtw_free_stainfo(padapter, ptdls_sta); + +} + +// cam entry will be the same as mac_id +void rtw_tdls_set_mac_id(struct tdls_info *ptdlsinfo, struct sta_info *ptdls_sta) +{ + if(ptdls_sta->mac_id==0) + { + ptdls_sta->mac_id = ptdlsinfo->macid_index; + if( (++ptdlsinfo->macid_index) > (NUM_STA -2) ) + ptdlsinfo->macid_index= TDLS_INI_MACID_ENTRY; + } +} + +//TDLS encryption(if needed) will always be CCMP +void rtw_tdls_set_key(_adapter *adapter, struct rx_pkt_attrib *prx_pkt_attrib, struct sta_info *ptdls_sta) +{ + if(prx_pkt_attrib->encrypt) + { + ptdls_sta->dot118021XPrivacy=_AES_; + rtw_setstakey_cmd(adapter, (u8*)ptdls_sta, _TRUE); + } +} + +void rtw_tdls_process_ht_cap(_adapter *adapter, struct sta_info *ptdls_sta, u8 *data, u8 Length) +{ + /* save HT capabilities in the sta object */ + _rtw_memset(&ptdls_sta->htpriv.ht_cap, 0, sizeof(struct rtw_ieee80211_ht_cap)); + if (data && Length >= sizeof(struct rtw_ieee80211_ht_cap) ) + { + ptdls_sta->flags |= WLAN_STA_HT; + + ptdls_sta->flags |= WLAN_STA_WME; + + _rtw_memcpy(&ptdls_sta->htpriv.ht_cap, data, sizeof(struct rtw_ieee80211_ht_cap)); + + } else + ptdls_sta->flags &= ~WLAN_STA_HT; + + if(ptdls_sta->flags & WLAN_STA_HT) + { + if(adapter->registrypriv.ht_enable == _TRUE) + { + ptdls_sta->htpriv.ht_option = _TRUE; + } + else + { + ptdls_sta->htpriv.ht_option = _FALSE; + ptdls_sta->stat_code = _STATS_FAILURE_; + } + } + + //HT related cap + if(ptdls_sta->htpriv.ht_option) + { + //check if sta supports rx ampdu + if(adapter->registrypriv.ampdu_enable==1) + ptdls_sta->htpriv.ampdu_enable = _TRUE; + + //check if sta support s Short GI + if(ptdls_sta->htpriv.ht_cap.cap_info & cpu_to_le16(IEEE80211_HT_CAP_SGI_20|IEEE80211_HT_CAP_SGI_40)) + { + ptdls_sta->htpriv.sgi = _TRUE; + } + + // bwmode would still followed AP's setting + if(ptdls_sta->htpriv.ht_cap.cap_info & cpu_to_le16(IEEE80211_HT_CAP_SUP_WIDTH)) + { + ptdls_sta->htpriv.bwmode = adapter->mlmeextpriv.cur_bwmode; + ptdls_sta->htpriv.ch_offset = adapter->mlmeextpriv.cur_ch_offset; + } + } +} + +u8 *rtw_tdls_set_ht_cap(_adapter *padapter, u8 *pframe, struct pkt_attrib *pattrib) +{ + struct rtw_ieee80211_ht_cap ht_capie; + u8 rf_type; + + //HT capabilities + _rtw_memset(&ht_capie, 0, sizeof(struct rtw_ieee80211_ht_cap)); + + ht_capie.cap_info = IEEE80211_HT_CAP_SUP_WIDTH |IEEE80211_HT_CAP_SGI_20 |IEEE80211_HT_CAP_SM_PS | + IEEE80211_HT_CAP_SGI_40 | IEEE80211_HT_CAP_TX_STBC |IEEE80211_HT_CAP_DSSSCCK40; + + { + u32 rx_packet_offset, max_recvbuf_sz; + rtw_hal_get_def_var(padapter, HAL_DEF_RX_PACKET_OFFSET, &rx_packet_offset); + rtw_hal_get_def_var(padapter, HAL_DEF_MAX_RECVBUF_SZ, &max_recvbuf_sz); + if(max_recvbuf_sz-rx_packet_offset>(8191-256)) + ht_capie.cap_info = ht_capie.cap_info |IEEE80211_HT_CAP_MAX_AMSDU; + } + + ht_capie.ampdu_params_info = (IEEE80211_HT_CAP_AMPDU_FACTOR&0x03); + + rtw_hal_get_hwreg(padapter, HW_VAR_RF_TYPE, (u8 *)(&rf_type)); + switch(rf_type) + { + case RF_1T1R: + ht_capie.cap_info |= 0x0100;//RX STBC One spatial stream + _rtw_memcpy(ht_capie.supp_mcs_set, MCS_rate_1R, 16); + break; + + case RF_2T2R: + case RF_1T2R: + default: + ht_capie.cap_info|= 0x0200;//RX STBC two spatial stream + _rtw_memcpy(ht_capie.supp_mcs_set, MCS_rate_2R, 16); + break; + } + + return(rtw_set_ie(pframe, _HT_CAPABILITY_IE_, + sizeof(struct rtw_ieee80211_ht_cap), (unsigned char*)&ht_capie, &(pattrib->pktlen))); +} + +u8 *rtw_tdls_set_sup_ch(struct mlme_ext_priv *pmlmeext, u8 *pframe, struct pkt_attrib *pattrib) +{ + u8 sup_ch[ 30 * 2 ] = { 0x00 }, sup_ch_idx = 0, idx_5g = 2; //For supported channel + do{ + if( pmlmeext->channel_set[sup_ch_idx].ChannelNum <= 14 ) + { + sup_ch[0] = 1; //First channel number + sup_ch[1] = pmlmeext->channel_set[sup_ch_idx].ChannelNum; //Number of channel + } + else + { + sup_ch[idx_5g++] = pmlmeext->channel_set[sup_ch_idx].ChannelNum; + sup_ch[idx_5g++] = 1; + } + + sup_ch_idx++; + } + while( pmlmeext->channel_set[sup_ch_idx].ChannelNum != 0 ); + return(rtw_set_ie(pframe, _SUPPORTED_CH_IE_, idx_5g, sup_ch, &(pattrib->pktlen))); +} + +#ifdef CONFIG_WFD +void rtw_tdls_process_wfd_ie(struct tdls_info *ptdlsinfo, u8 *ptr, u8 length) +{ + u8 wfd_ie[ 128 ] = { 0x00 }; + u32 wfd_ielen = 0; + u32 wfd_offset = 0; + // Try to get the TCP port information when receiving the negotiation response. + // + + wfd_offset = 0; + wfd_offset = rtw_get_wfd_ie( ptr + wfd_offset, length - wfd_offset, wfd_ie, &wfd_ielen ); + while( wfd_offset ) + { + u8 attr_content[ 10 ] = { 0x00 }; + u32 attr_contentlen = 0; + int i; + + DBG_871X( "[%s] WFD IE Found!!\n", __FUNCTION__ ); + rtw_get_wfd_attr_content( wfd_ie, wfd_ielen, WFD_ATTR_DEVICE_INFO, attr_content, &attr_contentlen); + if ( attr_contentlen ) + { + ptdlsinfo->wfd_info->peer_rtsp_ctrlport = RTW_GET_BE16( attr_content + 2 ); + DBG_871X( "[%s] Peer PORT NUM = %d\n", __FUNCTION__, ptdlsinfo->wfd_info->peer_rtsp_ctrlport ); + } + + _rtw_memset( attr_content, 0x00, 10); + attr_contentlen = 0; + rtw_get_wfd_attr_content( wfd_ie, wfd_ielen, WFD_ATTR_LOCAL_IP_ADDR, attr_content, &attr_contentlen); + if ( attr_contentlen ) + { + _rtw_memcpy(ptdlsinfo->wfd_info->peer_ip_address, ( attr_content + 1 ), 4); + DBG_871X( "[%s] Peer IP = %02u.%02u.%02u.%02u \n", __FUNCTION__, + ptdlsinfo->wfd_info->peer_ip_address[0], ptdlsinfo->wfd_info->peer_ip_address[1], + ptdlsinfo->wfd_info->peer_ip_address[2], ptdlsinfo->wfd_info->peer_ip_address[3] + ); + } + wfd_offset = rtw_get_wfd_ie( ptr + wfd_offset, length - wfd_offset, wfd_ie, &wfd_ielen ); + } +} + +void issue_tunneled_probe_req(_adapter *padapter) +{ + struct xmit_frame *pmgntframe; + struct pkt_attrib *pattrib; + struct mlme_priv *pmlmepriv = &padapter->mlmepriv; + struct xmit_priv *pxmitpriv = &(padapter->xmitpriv); + u8 baddr[ETH_ALEN] = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff}; + + DBG_871X("[%s]\n", __FUNCTION__); + + if ((pmgntframe = alloc_mgtxmitframe(pxmitpriv)) == NULL) + { + return; + } + + //update attribute + pattrib = &pmgntframe->attrib; + + pmgntframe->frame_tag = DATA_FRAMETAG; + pattrib->ether_type = 0x890d; + pattrib->pctrl =0; + + _rtw_memcpy(pattrib->dst, baddr, ETH_ALEN); + + _rtw_memcpy(pattrib->src, myid(&(padapter->eeprompriv)), ETH_ALEN); + + _rtw_memcpy(pattrib->ra, get_bssid(pmlmepriv), ETH_ALEN); + _rtw_memcpy(pattrib->ta, pattrib->src, ETH_ALEN); + + update_tdls_attrib(padapter, pattrib); + pattrib->qsel=pattrib->priority; + if (rtw_xmit_tdls_coalesce(padapter, pmgntframe, TUNNELED_PROBE_REQ) != _SUCCESS) { + rtw_free_xmitbuf(pxmitpriv, pmgntframe->pxmitbuf); + rtw_free_xmitframe(pxmitpriv, pmgntframe); + goto exit; + } + rtw_dump_xframe(padapter, pmgntframe); + +exit: + + return; +} + +void issue_tunneled_probe_rsp(_adapter *padapter, union recv_frame *precv_frame) +{ + struct xmit_frame *pmgntframe; + struct pkt_attrib *pattrib; + struct mlme_priv *pmlmepriv = &padapter->mlmepriv; + struct xmit_priv *pxmitpriv = &(padapter->xmitpriv); + struct rx_pkt_attrib *rx_pkt_pattrib = &precv_frame->u.hdr.attrib; + + DBG_871X("[%s]\n", __FUNCTION__); + + if ((pmgntframe = alloc_mgtxmitframe(pxmitpriv)) == NULL) + { + return; + } + + //update attribute + pattrib = &pmgntframe->attrib; + + pmgntframe->frame_tag = DATA_FRAMETAG; + pattrib->ether_type = 0x890d; + pattrib->pctrl =0; + + _rtw_memcpy(pattrib->dst, rx_pkt_pattrib->src, ETH_ALEN); + + _rtw_memcpy(pattrib->src, myid(&(padapter->eeprompriv)), ETH_ALEN); + + _rtw_memcpy(pattrib->ra, get_bssid(pmlmepriv), ETH_ALEN); + _rtw_memcpy(pattrib->ta, pattrib->src, ETH_ALEN); + + update_tdls_attrib(padapter, pattrib); + pattrib->qsel=pattrib->priority; + if (rtw_xmit_tdls_coalesce(padapter, pmgntframe, TUNNELED_PROBE_RSP) != _SUCCESS) { + rtw_free_xmitbuf(pxmitpriv, pmgntframe->pxmitbuf); + rtw_free_xmitframe(pxmitpriv, pmgntframe); + goto exit; + } + rtw_dump_xframe(padapter, pmgntframe); + +exit: + + return; +} +#endif //CONFIG_WFD + +void issue_tdls_setup_req(_adapter *padapter, u8 *mac_addr) +{ + struct tdls_info *ptdlsinfo = &padapter->tdlsinfo; + struct xmit_frame *pmgntframe; + struct pkt_attrib *pattrib; + struct mlme_priv *pmlmepriv = &padapter->mlmepriv; + struct xmit_priv *pxmitpriv = &(padapter->xmitpriv); + struct sta_priv *pstapriv = &padapter->stapriv; + struct sta_info *ptdls_sta= NULL; + _irqL irqL; + static u8 dialogtoken = 0; + u32 timeout_interval= TPK_RESEND_COUNT * 1000; //retry timer should set at least 301 sec, using TPK_count counting 301 times. + + if(ptdlsinfo->ap_prohibited == _TRUE) + goto exit; + + if ((pmgntframe = alloc_mgtxmitframe(pxmitpriv)) == NULL) + { + return; + } + + //update attribute + pattrib = &pmgntframe->attrib; + + pmgntframe->frame_tag = DATA_FRAMETAG; + pattrib->ether_type = 0x890d; + pattrib->pctrl =0; + + _rtw_memcpy(pattrib->dst, mac_addr, ETH_ALEN); + _rtw_memcpy(pattrib->src, myid(&(padapter->eeprompriv)), ETH_ALEN); + + _rtw_memcpy(pattrib->ra, get_bssid(pmlmepriv), ETH_ALEN); + _rtw_memcpy(pattrib->ta, pattrib->src, ETH_ALEN); + + update_tdls_attrib(padapter, pattrib); + + //init peer sta_info + ptdls_sta = rtw_get_stainfo(pstapriv, mac_addr); + if(ptdls_sta==NULL) + { + ptdls_sta = rtw_alloc_stainfo(pstapriv, mac_addr); + if(ptdls_sta) + { + _enter_critical_bh(&(pstapriv->sta_hash_lock), &irqL); + if(!(ptdls_sta->tdls_sta_state & TDLS_LINKED_STATE)) + ptdlsinfo->sta_cnt++; + _exit_critical_bh(&(pstapriv->sta_hash_lock), &irqL); + if( ptdlsinfo->sta_cnt == (NUM_STA - 2) ) // -2: AP + BC/MC sta + { + ptdlsinfo->sta_maximum = _TRUE; + } + } + else + { + rtw_free_xmitbuf(pxmitpriv,pmgntframe->pxmitbuf); + rtw_free_xmitframe(pxmitpriv, pmgntframe); + goto exit; + } + } + + if(ptdls_sta){ + ptdls_sta->tdls_sta_state |= TDLS_RESPONDER_STATE; + //for tdls; ptdls_sta->aid is used to fill dialogtoken + ptdls_sta->dialog = dialogtoken; + dialogtoken = (dialogtoken+1)%256; + ptdls_sta->TDLS_PeerKey_Lifetime = timeout_interval; + _set_timer( &ptdls_sta->handshake_timer, TDLS_HANDSHAKE_TIME ); + } + + pattrib->qsel=pattrib->priority; + if(rtw_xmit_tdls_coalesce(padapter, pmgntframe, TDLS_SETUP_REQUEST) !=_SUCCESS ){ + rtw_free_xmitbuf(pxmitpriv,pmgntframe->pxmitbuf); + rtw_free_xmitframe(pxmitpriv, pmgntframe); + goto exit; + } + rtw_dump_xframe(padapter, pmgntframe); + +exit: + + return; +} + +void issue_tdls_teardown(_adapter *padapter, u8 *mac_addr) +{ + struct xmit_frame *pmgntframe; + struct pkt_attrib *pattrib; + struct mlme_priv *pmlmepriv = &padapter->mlmepriv; + struct xmit_priv *pxmitpriv = &(padapter->xmitpriv); + struct sta_priv *pstapriv = &padapter->stapriv; + struct sta_info *ptdls_sta=NULL; + _irqL irqL; + + ptdls_sta = rtw_get_stainfo(pstapriv, mac_addr); + if(ptdls_sta==NULL){ + DBG_871X("issue tdls teardown unsuccessful\n"); + return; + }else{ + ptdls_sta->tdls_sta_state=TDLS_STATE_NONE; + } + + if ((pmgntframe = alloc_mgtxmitframe(pxmitpriv)) == NULL) + { + return; + } + + //update attribute + pattrib = &pmgntframe->attrib; + + pmgntframe->frame_tag = DATA_FRAMETAG; + pattrib->ether_type = 0x890d; + pattrib->pctrl =0; + + _rtw_memcpy(pattrib->dst, mac_addr, ETH_ALEN); + _rtw_memcpy(pattrib->src, myid(&(padapter->eeprompriv)), ETH_ALEN); + + _rtw_memcpy(pattrib->ra, get_bssid(pmlmepriv), ETH_ALEN); + _rtw_memcpy(pattrib->ta, pattrib->src, ETH_ALEN); + + update_tdls_attrib(padapter, pattrib); + pattrib->qsel=pattrib->priority; + if (rtw_xmit_tdls_coalesce(padapter, pmgntframe, TDLS_TEARDOWN) != _SUCCESS) { + rtw_free_xmitbuf(pxmitpriv, pmgntframe->pxmitbuf); + rtw_free_xmitframe(pxmitpriv, pmgntframe); + goto exit; + } + rtw_dump_xframe(padapter, pmgntframe); + + if(ptdls_sta->tdls_sta_state & TDLS_CH_SWITCH_ON_STATE){ + rtw_tdls_cmd(padapter, ptdls_sta->hwaddr, TDLS_CS_OFF); + } + + if( ptdls_sta->timer_flag == 1 ) + { + _enter_critical_bh(&(padapter->tdlsinfo.hdl_lock), &irqL); + ptdls_sta->timer_flag = 2; + _exit_critical_bh(&(padapter->tdlsinfo.hdl_lock), &irqL); + } + else + rtw_tdls_cmd(padapter, mac_addr, TDLS_FREE_STA ); + + +exit: + + return; +} + +void issue_tdls_dis_req(_adapter *padapter, u8 *mac_addr) +{ + struct xmit_frame *pmgntframe; + struct pkt_attrib *pattrib; + struct mlme_priv *pmlmepriv = &padapter->mlmepriv; + struct xmit_priv *pxmitpriv = &(padapter->xmitpriv); + u8 baddr[ETH_ALEN] = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff}; + + if ((pmgntframe = alloc_mgtxmitframe(pxmitpriv)) == NULL) + { + return; + } + + //update attribute + pattrib = &pmgntframe->attrib; + + pmgntframe->frame_tag = DATA_FRAMETAG; + pattrib->ether_type = 0x890d; + pattrib->pctrl =0; + + if(mac_addr == NULL) + _rtw_memcpy(pattrib->dst, baddr, ETH_ALEN); + else + _rtw_memcpy(pattrib->dst, mac_addr, ETH_ALEN); + + _rtw_memcpy(pattrib->src, myid(&(padapter->eeprompriv)), ETH_ALEN); + + _rtw_memcpy(pattrib->ra, get_bssid(pmlmepriv), ETH_ALEN); + _rtw_memcpy(pattrib->ta, pattrib->src, ETH_ALEN); + + update_tdls_attrib(padapter, pattrib); + pattrib->qsel=pattrib->priority; + if (rtw_xmit_tdls_coalesce(padapter, pmgntframe, TDLS_DISCOVERY_REQUEST) != _SUCCESS) { + rtw_free_xmitbuf(pxmitpriv, pmgntframe->pxmitbuf); + rtw_free_xmitframe(pxmitpriv, pmgntframe); + goto exit; + } + rtw_dump_xframe(padapter, pmgntframe); + DBG_871X("issue tdls dis req\n"); + +exit: + + return; +} + +void issue_tdls_setup_rsp(_adapter *padapter, union recv_frame *precv_frame) +{ + struct xmit_frame *pmgntframe; + struct pkt_attrib *pattrib; + struct xmit_priv *pxmitpriv = &(padapter->xmitpriv); + struct mlme_ext_priv *pmlmeext = &(padapter->mlmeextpriv); + struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info); + struct rx_pkt_attrib *rx_pkt_pattrib = &precv_frame->u.hdr.attrib; + _irqL irqL; + + if ((pmgntframe = alloc_mgtxmitframe(pxmitpriv)) == NULL) + { + return; + } + + //update attribute + pattrib = &pmgntframe->attrib; + + pmgntframe->frame_tag = DATA_FRAMETAG; + pattrib->ether_type = 0x890d; + pattrib->pctrl =0; + + _rtw_memcpy(pattrib->dst, rx_pkt_pattrib->src, ETH_ALEN); + _rtw_memcpy(pattrib->src, myid(&(padapter->eeprompriv)), ETH_ALEN); + + _rtw_memcpy(pattrib->ra, rx_pkt_pattrib->bssid, ETH_ALEN); + _rtw_memcpy(pattrib->ta, pattrib->src, ETH_ALEN); + + update_tdls_attrib(padapter, pattrib); + pattrib->qsel=pattrib->priority; + if (rtw_xmit_tdls_coalesce(padapter, pmgntframe, TDLS_SETUP_RESPONSE) != _SUCCESS) { + rtw_free_xmitbuf(pxmitpriv, pmgntframe->pxmitbuf); + rtw_free_xmitframe(pxmitpriv, pmgntframe); + goto exit; + } + rtw_dump_xframe(padapter, pmgntframe); + +exit: + + return; + +} + +void issue_tdls_setup_cfm(_adapter *padapter, union recv_frame *precv_frame) +{ + struct tdls_info *ptdlsinfo = &padapter->tdlsinfo; + struct xmit_frame *pmgntframe; + struct pkt_attrib *pattrib; + struct xmit_priv *pxmitpriv = &(padapter->xmitpriv); + struct sta_info *ptdls_sta=NULL; + _irqL irqL; + + struct rx_pkt_attrib *rx_pkt_pattrib = & precv_frame->u.hdr.attrib; + + if ((pmgntframe = alloc_mgtxmitframe(pxmitpriv)) == NULL) + { + return; + } + + //update attribute + pattrib = &pmgntframe->attrib; + + pmgntframe->frame_tag = DATA_FRAMETAG; + pattrib->ether_type = 0x890d; + pattrib->pctrl =0; + + _rtw_memcpy(pattrib->dst, rx_pkt_pattrib->src, ETH_ALEN); + _rtw_memcpy(pattrib->src, myid(&(padapter->eeprompriv)), ETH_ALEN); + + _rtw_memcpy(pattrib->ra, rx_pkt_pattrib->bssid, ETH_ALEN); + _rtw_memcpy(pattrib->ta, pattrib->src, ETH_ALEN); + + update_tdls_attrib(padapter, pattrib); + pattrib->qsel=pattrib->priority; + if (rtw_xmit_tdls_coalesce(padapter, pmgntframe, TDLS_SETUP_CONFIRM) != _SUCCESS) { + rtw_free_xmitbuf(pxmitpriv, pmgntframe->pxmitbuf); + rtw_free_xmitframe(pxmitpriv, pmgntframe); + goto exit; + } + + rtw_dump_xframe(padapter, pmgntframe); + +exit: + + return; + +} + +//TDLS Discovery Response frame is a management action frame +void issue_tdls_dis_rsp(_adapter *padapter, union recv_frame *precv_frame, u8 dialog) +{ + struct xmit_frame *pmgntframe; + struct pkt_attrib *pattrib; + unsigned char *pframe; + struct rtw_ieee80211_hdr *pwlanhdr; + unsigned short *fctrl; + struct xmit_priv *pxmitpriv = &(padapter->xmitpriv); + struct mlme_ext_priv *pmlmeext = &(padapter->mlmeextpriv); + + struct rx_pkt_attrib *rx_pkt_pattrib = &precv_frame->u.hdr.attrib; + + if ((pmgntframe = alloc_mgtxmitframe(pxmitpriv)) == NULL) + { + return; + } + + //update attribute + pattrib = &pmgntframe->attrib; + update_mgntframe_attrib(padapter, pattrib); + + _rtw_memset(pmgntframe->buf_addr, 0, WLANHDR_OFFSET + TXDESC_OFFSET); + + pframe = (u8 *)(pmgntframe->buf_addr) + TXDESC_OFFSET; + pwlanhdr = (struct rtw_ieee80211_hdr *)pframe; + + fctrl = &(pwlanhdr->frame_ctl); + *(fctrl) = 0; + + // unicast probe request frame + _rtw_memcpy(pwlanhdr->addr1, rx_pkt_pattrib->src, ETH_ALEN); + _rtw_memcpy(pattrib->dst, pwlanhdr->addr1, ETH_ALEN); + + _rtw_memcpy(pwlanhdr->addr2, myid(&(padapter->eeprompriv)), ETH_ALEN); + _rtw_memcpy(pattrib->src, pwlanhdr->addr2, ETH_ALEN); + + _rtw_memcpy(pwlanhdr->addr3, rx_pkt_pattrib->bssid, ETH_ALEN); + _rtw_memcpy(pattrib->ra, pwlanhdr->addr3, ETH_ALEN); + + SetSeqNum(pwlanhdr, pmlmeext->mgnt_seq); + pmlmeext->mgnt_seq++; + SetFrameSubType(pframe, WIFI_ACTION); + + pframe += sizeof (struct rtw_ieee80211_hdr_3addr); + pattrib->pktlen = sizeof (struct rtw_ieee80211_hdr_3addr); + + rtw_build_tdls_dis_rsp_ies(padapter, pmgntframe, pframe, dialog); + + pattrib->nr_frags = 1; + pattrib->last_txcmdsz = pattrib->pktlen; + + dump_mgntframe(padapter, pmgntframe); + + return; +} + +void issue_tdls_peer_traffic_indication(_adapter *padapter, struct sta_info *ptdls_sta) +{ + struct xmit_frame *pmgntframe; + struct pkt_attrib *pattrib; + struct mlme_priv *pmlmepriv = &padapter->mlmepriv; + struct xmit_priv *pxmitpriv = &(padapter->xmitpriv); + + static u8 dialogtoken=0; + + if ((pmgntframe = alloc_mgtxmitframe(pxmitpriv)) == NULL) + { + return; + } + + //update attribute + pattrib = &pmgntframe->attrib; + + pmgntframe->frame_tag = DATA_FRAMETAG; + pattrib->ether_type = 0x890d; + pattrib->pctrl =0; + + _rtw_memcpy(pattrib->dst, ptdls_sta->hwaddr, ETH_ALEN); + _rtw_memcpy(pattrib->src, myid(&(padapter->eeprompriv)), ETH_ALEN); + + _rtw_memcpy(pattrib->ra, get_bssid(pmlmepriv), ETH_ALEN); + _rtw_memcpy(pattrib->ta, pattrib->src, ETH_ALEN); + + //for tdls; pattrib->nr_frags is used to fill dialogtoken + ptdls_sta->dialog = dialogtoken; + dialogtoken = (dialogtoken+1)%256; + //PTI frame's priority should be AC_VO + pattrib->priority = 7; + + update_tdls_attrib(padapter, pattrib); + pattrib->qsel=pattrib->priority; + if (rtw_xmit_tdls_coalesce(padapter, pmgntframe, TDLS_PEER_TRAFFIC_INDICATION) != _SUCCESS) { + rtw_free_xmitbuf(pxmitpriv, pmgntframe->pxmitbuf); + rtw_free_xmitframe(pxmitpriv, pmgntframe); + goto exit; + } + rtw_dump_xframe(padapter, pmgntframe); + +exit: + + return; +} + +void issue_tdls_ch_switch_req(_adapter *padapter, u8 *mac_addr) +{ + struct xmit_frame *pmgntframe; + struct pkt_attrib *pattrib; + struct mlme_priv *pmlmepriv = &padapter->mlmepriv; + struct xmit_priv *pxmitpriv = &(padapter->xmitpriv); + + if ((pmgntframe = alloc_mgtxmitframe(pxmitpriv)) == NULL) + { + return; + } + + //update attribute + pattrib = &pmgntframe->attrib; + + pmgntframe->frame_tag = DATA_FRAMETAG; + pattrib->ether_type = 0x890d; + pattrib->pctrl =0; + + _rtw_memcpy(pattrib->dst, mac_addr, ETH_ALEN); + _rtw_memcpy(pattrib->src, myid(&(padapter->eeprompriv)), ETH_ALEN); + + _rtw_memcpy(pattrib->ra, get_bssid(pmlmepriv), ETH_ALEN); + _rtw_memcpy(pattrib->ta, pattrib->src, ETH_ALEN); + + update_tdls_attrib(padapter, pattrib); + + pattrib->qsel=pattrib->priority; + if(rtw_xmit_tdls_coalesce(padapter, pmgntframe, TDLS_CHANNEL_SWITCH_REQUEST) !=_SUCCESS ){ + rtw_free_xmitbuf(pxmitpriv,pmgntframe->pxmitbuf); + rtw_free_xmitframe(pxmitpriv, pmgntframe); + goto exit; + } + rtw_dump_xframe(padapter, pmgntframe); + +exit: + + return; +} + +void issue_tdls_ch_switch_rsp(_adapter *padapter, u8 *mac_addr) +{ + struct xmit_frame *pmgntframe; + struct pkt_attrib *pattrib; + struct mlme_priv *pmlmepriv = &padapter->mlmepriv; + struct xmit_priv *pxmitpriv = &(padapter->xmitpriv); + + _irqL irqL; + + if ((pmgntframe = alloc_mgtxmitframe(pxmitpriv)) == NULL) + { + return; + } + + //update attribute + pattrib = &pmgntframe->attrib; + + pmgntframe->frame_tag = DATA_FRAMETAG; + pattrib->ether_type = 0x890d; + pattrib->pctrl =0; + + _rtw_memcpy(pattrib->dst, mac_addr, ETH_ALEN); + _rtw_memcpy(pattrib->src, myid(&(padapter->eeprompriv)), ETH_ALEN); + + _rtw_memcpy(pattrib->ra, get_bssid(pmlmepriv), ETH_ALEN); + _rtw_memcpy(pattrib->ta, pattrib->src, ETH_ALEN); + + update_tdls_attrib(padapter, pattrib); + + pattrib->qsel=pattrib->priority; +/* + _enter_critical_bh(&pxmitpriv->lock, &irqL); + if(xmitframe_enqueue_for_tdls_sleeping_sta(padapter, pmgntframe)==_TRUE){ + _exit_critical_bh(&pxmitpriv->lock, &irqL); + return _FALSE; + } +*/ + if(rtw_xmit_tdls_coalesce(padapter, pmgntframe, TDLS_CHANNEL_SWITCH_RESPONSE) !=_SUCCESS ){ + rtw_free_xmitbuf(pxmitpriv,pmgntframe->pxmitbuf); + rtw_free_xmitframe(pxmitpriv, pmgntframe); + goto exit; + } + rtw_dump_xframe(padapter, pmgntframe); + +exit: + + return; +} + +sint On_TDLS_Dis_Rsp(_adapter *adapter, union recv_frame *precv_frame) +{ + struct sta_info *ptdls_sta = NULL, *psta = rtw_get_stainfo(&(adapter->stapriv), get_bssid(&(adapter->mlmepriv))); + struct recv_priv *precvpriv = &(adapter->recvpriv); + u8 *ptr = precv_frame->u.hdr.rx_data, *psa; + struct rx_pkt_attrib *pattrib = &(precv_frame->u.hdr.attrib); + struct tdls_info *ptdlsinfo = &(adapter->tdlsinfo); + u8 empty_addr[ETH_ALEN] = { 0x00 }; + int UndecoratedSmoothedPWDB; + + + //WFDTDLS: for sigma test, not to setup direct link automatically + ptdlsinfo->dev_discovered = 1; + +#ifdef CONFIG_TDLS_AUTOSETUP + psa = get_sa(ptr); + ptdls_sta = rtw_get_stainfo(&(adapter->stapriv), psa); + + if(ptdls_sta != NULL) + { + ptdls_sta->tdls_sta_state |= TDLS_ALIVE_STATE; + + //Record the tdls sta with lowest signal strength + if( (ptdlsinfo->sta_maximum == _TRUE) && (ptdls_sta->alive_count >= 1) ) + { + if( _rtw_memcmp(ptdlsinfo->ss_record.macaddr, empty_addr, ETH_ALEN) ) + { + _rtw_memcpy(ptdlsinfo->ss_record.macaddr, psa, ETH_ALEN); + ptdlsinfo->ss_record.RxPWDBAll = pattrib->RxPWDBAll; + } + else + { + if( ptdlsinfo->ss_record.RxPWDBAll < pattrib->RxPWDBAll ) + { + _rtw_memcpy(ptdlsinfo->ss_record.macaddr, psa, ETH_ALEN); + ptdlsinfo->ss_record.RxPWDBAll = pattrib->RxPWDBAll; + } + } + } + + } + else + { + if( ptdlsinfo->sta_maximum == _TRUE) + { + if( _rtw_memcmp( ptdlsinfo->ss_record.macaddr, empty_addr, ETH_ALEN ) ) + { + //All traffics are busy, do not set up another direct link. + return _FAIL; + } + else + { + if( pattrib->RxPWDBAll > ptdlsinfo->ss_record.RxPWDBAll ) + { + issue_tdls_teardown(adapter, ptdlsinfo->ss_record.macaddr); + } + else + { + return _FAIL; + } + } + } + + rtw_hal_get_def_var(adapter, HAL_DEF_UNDERCORATEDSMOOTHEDPWDB, &UndecoratedSmoothedPWDB); + + if( pattrib->RxPWDBAll + TDLS_SIGNAL_THRESH >= UndecoratedSmoothedPWDB); + { + DBG_871X("pattrib->RxPWDBAll=%d, pdmpriv->UndecoratedSmoothedPWDB=%d\n", pattrib->RxPWDBAll, UndecoratedSmoothedPWDB); + issue_tdls_setup_req(adapter, psa); + } + } +#endif //CONFIG_TDLS_AUTOSETUP + + return _SUCCESS; +} + +sint On_TDLS_Setup_Req(_adapter *adapter, union recv_frame *precv_frame) +{ + struct tdls_info *ptdlsinfo = &adapter->tdlsinfo; + u8 *psa, *pmyid; + struct sta_info *ptdls_sta= NULL; + struct sta_priv *pstapriv = &adapter->stapriv; + u8 *ptr = precv_frame->u.hdr.rx_data; + struct mlme_priv *pmlmepriv = &(adapter->mlmepriv); + struct security_priv *psecuritypriv = &adapter->securitypriv; + _irqL irqL; + struct rx_pkt_attrib *prx_pkt_attrib = &precv_frame->u.hdr.attrib; + u8 *prsnie, *ppairwise_cipher; + u8 i, k, pairwise_count; + u8 ccmp_have=0, rsnie_have=0; + u16 j; + u8 SNonce[32]; + u32 *timeout_interval; + sint parsing_length; //frame body length, without icv_len + PNDIS_802_11_VARIABLE_IEs pIE; + u8 FIXED_IE = 5; + unsigned char supportRate[16]; + int supportRateNum = 0; + + psa = get_sa(ptr); + ptdls_sta = rtw_get_stainfo(pstapriv, psa); + + pmyid=myid(&(adapter->eeprompriv)); + ptr +=prx_pkt_attrib->hdrlen + prx_pkt_attrib->iv_len+LLC_HEADER_SIZE+TYPE_LENGTH_FIELD_SIZE+1; + parsing_length= ((union recv_frame *)precv_frame)->u.hdr.len + -prx_pkt_attrib->hdrlen + -prx_pkt_attrib->iv_len + -prx_pkt_attrib->icv_len + -LLC_HEADER_SIZE + -ETH_TYPE_LEN + -PAYLOAD_TYPE_LEN + -FIXED_IE; + + if(ptdlsinfo->ap_prohibited == _TRUE) + { + goto exit; + } + + if(ptdls_sta==NULL){ + ptdls_sta = rtw_alloc_stainfo(pstapriv, psa); + }else{ + if(ptdls_sta->tdls_sta_state & TDLS_LINKED_STATE){ + //If the direct link is already set up + //Process as re-setup after tear down + DBG_871X("re-setup a direct link\n"); + } + //already receiving TDLS setup request + else if(ptdls_sta->tdls_sta_state & TDLS_INITIATOR_STATE){ + DBG_871X("receive duplicated TDLS setup request frame in handshaking\n"); + goto exit; + } + //When receiving and sending setup_req to the same link at the same time, STA with higher MAC_addr would be initiator + //following is to check out MAC_addr + else if(ptdls_sta->tdls_sta_state & TDLS_RESPONDER_STATE){ + DBG_871X("receive setup_req after sending setup_req\n"); + for (i=0;i<6;i++){ + if(*(pmyid+i)==*(psa+i)){ + } + else if(*(pmyid+i)>*(psa+i)){ + goto exit; + }else if(*(pmyid+i)<*(psa+i)){ + ptdls_sta->tdls_sta_state=TDLS_INITIATOR_STATE; + break; + } + } + } + } + + if(ptdls_sta) + { + ptdls_sta->dialog = *(ptr+2); //copy dialog token + ptdls_sta->stat_code = 0; + + //parsing information element + for(j=FIXED_IE; jElementID) + { + case _SUPPORTEDRATES_IE_: + _rtw_memcpy(supportRate, pIE->data, pIE->Length); + supportRateNum = pIE->Length; + break; + case _COUNTRY_IE_: + break; + case _EXT_SUPPORTEDRATES_IE_: + if(supportRateNum<=sizeof(supportRate)) + { + _rtw_memcpy(supportRate+supportRateNum, pIE->data, pIE->Length); + supportRateNum += pIE->Length; + } + break; + case _SUPPORTED_CH_IE_: + break; + case _RSN_IE_2_: + rsnie_have=1; + if(prx_pkt_attrib->encrypt){ + prsnie=(u8*)pIE; + //check whether initiator STA has CCMP pairwise_cipher. + ppairwise_cipher=prsnie+10; + _rtw_memcpy(&pairwise_count, (u16*)(ppairwise_cipher-2), 1); + for(k=0;kstat_code=72; + } + } + break; + case _EXT_CAP_IE_: + break; + case _VENDOR_SPECIFIC_IE_: + break; + case _FTIE_: + if(prx_pkt_attrib->encrypt) + _rtw_memcpy(SNonce, (ptr+j+52), 32); + break; + case _TIMEOUT_ITVL_IE_: + if(prx_pkt_attrib->encrypt) + timeout_interval = (u32 *)(ptr+j+3); + break; + case _RIC_Descriptor_IE_: + break; + case _HT_CAPABILITY_IE_: + rtw_tdls_process_ht_cap(adapter, ptdls_sta, pIE->data, pIE->Length); + break; + case EID_BSSCoexistence: + break; + case _LINK_ID_IE_: + if(_rtw_memcmp(get_bssid(pmlmepriv), pIE->data, 6) == _FALSE) + { + //not in the same BSS + ptdls_sta->stat_code=7; + } + break; + default: + break; + } + + j += (pIE->Length + 2); + + } + + //update station supportRate + ptdls_sta->bssratelen = supportRateNum; + _rtw_memcpy(ptdls_sta->bssrateset, supportRate, supportRateNum); + + //check status code + //if responder STA has/hasn't security on AP, but request hasn't/has RSNIE, it should reject + if(ptdls_sta->stat_code == 0 ) + { + if(rsnie_have && (prx_pkt_attrib->encrypt==0)){ + //security disabled + ptdls_sta->stat_code = 5; + }else if(rsnie_have==0 && (prx_pkt_attrib->encrypt)){ + //request haven't RSNIE + ptdls_sta->stat_code = 38; + } + +#ifdef CONFIG_WFD + //WFD test plan version 0.18.2 test item 5.1.5 + //SoUT does not use TDLS if AP uses weak security + if ( adapter->wdinfo.wfd_tdls_enable ) + { + if(rsnie_have && (prx_pkt_attrib->encrypt != _AES_)) + { + ptdls_sta->stat_code = 5; + } + } +#endif //CONFIG_WFD + } + + ptdls_sta->tdls_sta_state|= TDLS_INITIATOR_STATE; + if(prx_pkt_attrib->encrypt){ + _rtw_memcpy(ptdls_sta->SNonce, SNonce, 32); + _rtw_memcpy(&(ptdls_sta->TDLS_PeerKey_Lifetime), timeout_interval, 4); + } + _enter_critical_bh(&(pstapriv->sta_hash_lock), &irqL); + if(!(ptdls_sta->tdls_sta_state & TDLS_LINKED_STATE)) + ptdlsinfo->sta_cnt++; + _exit_critical_bh(&(pstapriv->sta_hash_lock), &irqL); + if( ptdlsinfo->sta_cnt == (NUM_STA - 2) ) // -2: AP + BC/MC sta + { + ptdlsinfo->sta_maximum = _TRUE; + } + +#ifdef CONFIG_WFD + rtw_tdls_process_wfd_ie(ptdlsinfo, ptr + FIXED_IE, parsing_length - FIXED_IE); +#endif // CONFIG_WFD + + } + else + { + goto exit; + } + + issue_tdls_setup_rsp(adapter, precv_frame); + + if(ptdls_sta->stat_code==0) + { + _set_timer( &ptdls_sta->handshake_timer, TDLS_HANDSHAKE_TIME); + } + else //status code!=0 ; setup unsuccess + { + free_tdls_sta(adapter, ptdls_sta); + } + +exit: + + return _FAIL; +} + +sint On_TDLS_Setup_Rsp(_adapter *adapter, union recv_frame *precv_frame) +{ + struct tdls_info *ptdlsinfo = &adapter->tdlsinfo; + struct sta_info *ptdls_sta= NULL; + struct sta_priv *pstapriv = &adapter->stapriv; + u8 *ptr = precv_frame->u.hdr.rx_data; + _irqL irqL; + struct rx_pkt_attrib *prx_pkt_attrib = &precv_frame->u.hdr.attrib; + u8 *psa; + u16 stat_code; + sint parsing_length; //frame body length, without icv_len + PNDIS_802_11_VARIABLE_IEs pIE; + u8 FIXED_IE =7; + u8 *pftie, *ptimeout_ie, *plinkid_ie, *prsnie, *pftie_mic, *ppairwise_cipher; + u16 pairwise_count, j, k; + u8 verify_ccmp=0; + unsigned char supportRate[16]; + int supportRateNum = 0; + + psa = get_sa(ptr); + ptdls_sta = rtw_get_stainfo(pstapriv, psa); + + if ( NULL == ptdls_sta ) + { + return _FAIL; + } + + ptr +=prx_pkt_attrib->hdrlen + prx_pkt_attrib->iv_len+LLC_HEADER_SIZE+TYPE_LENGTH_FIELD_SIZE+1; + parsing_length= ((union recv_frame *)precv_frame)->u.hdr.len + -prx_pkt_attrib->hdrlen + -prx_pkt_attrib->iv_len + -prx_pkt_attrib->icv_len + -LLC_HEADER_SIZE + -TYPE_LENGTH_FIELD_SIZE + -1 + -FIXED_IE; + + _rtw_memcpy(&stat_code, ptr+2, 2); + + if(stat_code!=0) + { + DBG_871X( "[%s] status_code = %d, free_tdls_sta\n", __FUNCTION__, stat_code ); + free_tdls_sta(adapter, ptdls_sta); + return _FAIL; + } + + stat_code = 0; + + //parsing information element + for(j=FIXED_IE; jElementID) + { + case _SUPPORTEDRATES_IE_: + _rtw_memcpy(supportRate, pIE->data, pIE->Length); + supportRateNum = pIE->Length; + break; + case _COUNTRY_IE_: + break; + case _EXT_SUPPORTEDRATES_IE_: + if(supportRateNum<=sizeof(supportRate)) + { + _rtw_memcpy(supportRate+supportRateNum, pIE->data, pIE->Length); + supportRateNum += pIE->Length; + } + break; + case _SUPPORTED_CH_IE_: + break; + case _RSN_IE_2_: + prsnie=(u8*)pIE; + //check whether responder STA has CCMP pairwise_cipher. + ppairwise_cipher=prsnie+10; + _rtw_memcpy(&pairwise_count, (u16*)(ppairwise_cipher-2), 2); + for(k=0;kANonce, (ptr+j+20), 32); + break; + case _TIMEOUT_ITVL_IE_: + ptimeout_ie=(u8*)pIE; + break; + case _RIC_Descriptor_IE_: + break; + case _HT_CAPABILITY_IE_: + rtw_tdls_process_ht_cap(adapter, ptdls_sta, pIE->data, pIE->Length); + break; + case EID_BSSCoexistence: + break; + case _LINK_ID_IE_: + plinkid_ie=(u8*)pIE; + break; + default: + break; + } + + j += (pIE->Length + 2); + + } + + //update station supportRate + ptdls_sta->bssratelen = supportRateNum; + _rtw_memcpy(ptdls_sta->bssrateset, supportRate, supportRateNum); + +#ifdef CONFIG_WFD + rtw_tdls_process_wfd_ie(ptdlsinfo, ptr + FIXED_IE, parsing_length - FIXED_IE); +#endif // CONFIG_WFD + + if(stat_code != 0) + { + ptdls_sta->stat_code = stat_code; + } + else + { + if(prx_pkt_attrib->encrypt) + { + if(verify_ccmp==1) + { + wpa_tdls_generate_tpk(adapter, ptdls_sta); + ptdls_sta->stat_code=0; + if(tdls_verify_mic(ptdls_sta->tpk.kck, 2, plinkid_ie, prsnie, ptimeout_ie, pftie)==0) //0: Invalid, 1: valid + { + free_tdls_sta(adapter, ptdls_sta); + return _FAIL; + } + } + else + { + ptdls_sta->stat_code=72; //invalide contents of RSNIE + } + + }else{ + ptdls_sta->stat_code=0; + } + } + + DBG_871X("issue_tdls_setup_cfm\n"); + issue_tdls_setup_cfm(adapter, precv_frame); + + if(ptdls_sta->stat_code==0) + { + ptdlsinfo->setup_state = TDLS_LINKED_STATE; + + if( ptdls_sta->tdls_sta_state & TDLS_RESPONDER_STATE ) + { + ptdls_sta->tdls_sta_state |= TDLS_LINKED_STATE; + _cancel_timer_ex( &ptdls_sta->handshake_timer); +#ifdef CONFIG_TDLS_AUTOCHECKALIVE + _set_timer( &ptdls_sta->alive_timer1, TDLS_ALIVE_TIMER_PH1); +#endif //CONFIG_TDLS_AUTOSETUP + } + + rtw_tdls_set_mac_id(ptdlsinfo, ptdls_sta); + rtw_tdls_set_key(adapter, prx_pkt_attrib, ptdls_sta); + + rtw_tdls_cmd(adapter, ptdls_sta->hwaddr, TDLS_WRCR); + + } + else //status code!=0 ; setup unsuccessful + { + free_tdls_sta(adapter, ptdls_sta); + } + + return _FAIL; + +} + +sint On_TDLS_Setup_Cfm(_adapter *adapter, union recv_frame *precv_frame) +{ + struct tdls_info *ptdlsinfo = &adapter->tdlsinfo; + struct sta_info *ptdls_sta= NULL; + struct sta_priv *pstapriv = &adapter->stapriv; + u8 *ptr = precv_frame->u.hdr.rx_data; + _irqL irqL; + struct rx_pkt_attrib *prx_pkt_attrib = &precv_frame->u.hdr.attrib; + u8 *psa; + u16 stat_code; + sint parsing_length; + PNDIS_802_11_VARIABLE_IEs pIE; + u8 FIXED_IE =5; + u8 *pftie, *ptimeout_ie, *plinkid_ie, *prsnie, *pftie_mic, *ppairwise_cipher; + u16 j, pairwise_count; + + psa = get_sa(ptr); + ptdls_sta = rtw_get_stainfo(pstapriv, psa); + + ptr +=prx_pkt_attrib->hdrlen + prx_pkt_attrib->iv_len+LLC_HEADER_SIZE+TYPE_LENGTH_FIELD_SIZE+1; + parsing_length= ((union recv_frame *)precv_frame)->u.hdr.len + -prx_pkt_attrib->hdrlen + -prx_pkt_attrib->iv_len + -prx_pkt_attrib->icv_len + -LLC_HEADER_SIZE + -ETH_TYPE_LEN + -PAYLOAD_TYPE_LEN + -FIXED_IE; + _rtw_memcpy(&stat_code, ptr+2, 2); + + if(stat_code!=0){ + DBG_871X( "[%s] stat_code = %d\n, free_tdls_sta", __FUNCTION__, stat_code ); + free_tdls_sta(adapter, ptdls_sta); + return _FAIL; + } + + if(prx_pkt_attrib->encrypt){ + //parsing information element + for(j=FIXED_IE; jElementID) + { + case _RSN_IE_2_: + prsnie=(u8*)pIE; + break; + case _VENDOR_SPECIFIC_IE_: + break; + case _FTIE_: + pftie=(u8*)pIE; + break; + case _TIMEOUT_ITVL_IE_: + ptimeout_ie=(u8*)pIE; + break; + case _HT_EXTRA_INFO_IE_: + break; + case _LINK_ID_IE_: + plinkid_ie=(u8*)pIE; + break; + default: + break; + } + + j += (pIE->Length + 2); + + } + + //verify mic in FTIE MIC field + if(tdls_verify_mic(ptdls_sta->tpk.kck, 3, plinkid_ie, prsnie, ptimeout_ie, pftie)==0){ //0: Invalid, 1: Valid + free_tdls_sta(adapter, ptdls_sta); + return _FAIL; + } + + } + + ptdlsinfo->setup_state = TDLS_LINKED_STATE; + if( ptdls_sta->tdls_sta_state & TDLS_INITIATOR_STATE ) + { + ptdls_sta->tdls_sta_state|=TDLS_LINKED_STATE; + _cancel_timer_ex( &ptdls_sta->handshake_timer); +#ifdef CONFIG_TDLS_AUTOCHECKALIVE + _set_timer( &ptdls_sta->alive_timer1, TDLS_ALIVE_TIMER_PH1); +#endif //CONFIG_TDLS_AUTOCHECKALIVE + } + + rtw_tdls_set_mac_id(ptdlsinfo, ptdls_sta); + rtw_tdls_set_key(adapter, prx_pkt_attrib, ptdls_sta); + + rtw_tdls_cmd(adapter, ptdls_sta->hwaddr, TDLS_WRCR); + + return _FAIL; + +} + +sint On_TDLS_Dis_Req(_adapter *adapter, union recv_frame *precv_frame) +{ + struct rx_pkt_attrib *prx_pkt_attrib = &precv_frame->u.hdr.attrib; + struct sta_priv *pstapriv = &adapter->stapriv; + struct sta_info *psta_ap; + u8 *ptr = precv_frame->u.hdr.rx_data; + sint parsing_length; //frame body length, without icv_len + PNDIS_802_11_VARIABLE_IEs pIE; + u8 FIXED_IE = 3, *dst, *pdialog = NULL; + u16 j; + + ptr +=prx_pkt_attrib->hdrlen + prx_pkt_attrib->iv_len + LLC_HEADER_SIZE+TYPE_LENGTH_FIELD_SIZE + 1; + pdialog=ptr+2; + + parsing_length= ((union recv_frame *)precv_frame)->u.hdr.len + -prx_pkt_attrib->hdrlen + -prx_pkt_attrib->iv_len + -prx_pkt_attrib->icv_len + -LLC_HEADER_SIZE + -TYPE_LENGTH_FIELD_SIZE + -1 + -FIXED_IE; + + //parsing information element + for(j=FIXED_IE; jElementID) + { + case _LINK_ID_IE_: + psta_ap = rtw_get_stainfo(pstapriv, pIE->data); + if(psta_ap == NULL) + { + goto exit; + } + dst = pIE->data + 12; + if( (MacAddr_isBcst(dst) == _FALSE) && (_rtw_memcmp(myid(&(adapter->eeprompriv)), dst, 6) == _FALSE) ) + { + goto exit; + } + break; + default: + break; + } + + j += (pIE->Length + 2); + + } + + //check frame contents + + issue_tdls_dis_rsp(adapter, precv_frame, *(pdialog) ); + +exit: + + return _FAIL; + +} + +sint On_TDLS_Teardown(_adapter *adapter, union recv_frame *precv_frame) +{ + u8 *psa; + u8 *ptr = precv_frame->u.hdr.rx_data; + struct rx_pkt_attrib *prx_pkt_attrib = &precv_frame->u.hdr.attrib; + struct mlme_ext_priv *pmlmeext = &(adapter->mlmeextpriv); + struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info); + struct sta_priv *pstapriv = &adapter->stapriv; + struct sta_info *ptdls_sta= NULL; + _irqL irqL; + + psa = get_sa(ptr); + + ptdls_sta = rtw_get_stainfo(pstapriv, psa); + if(ptdls_sta!=NULL){ + if(ptdls_sta->tdls_sta_state & TDLS_CH_SWITCH_ON_STATE){ + rtw_tdls_cmd(adapter, ptdls_sta->hwaddr, TDLS_CS_OFF); + } + free_tdls_sta(adapter, ptdls_sta); + } + + return _FAIL; + +} + +u8 TDLS_check_ch_state(uint state){ + if( (state & TDLS_CH_SWITCH_ON_STATE) && + (state & TDLS_AT_OFF_CH_STATE) && + (state & TDLS_PEER_AT_OFF_STATE) ){ + + if(state & TDLS_PEER_SLEEP_STATE) + return 2; //U-APSD + ch. switch + else + return 1; //ch. switch + }else + return 0; +} + +//we process buffered data for 1. U-APSD, 2. ch. switch, 3. U-APSD + ch. switch here +sint On_TDLS_Peer_Traffic_Rsp(_adapter *adapter, union recv_frame *precv_frame) +{ + struct tdls_info *ptdlsinfo = &adapter->tdlsinfo; + struct mlme_ext_priv *pmlmeext = &adapter->mlmeextpriv; + struct rx_pkt_attrib *pattrib = & precv_frame->u.hdr.attrib; + struct sta_priv *pstapriv = &adapter->stapriv; + //get peer sta infomation + struct sta_info *ptdls_sta = rtw_get_stainfo(pstapriv, pattrib->src); + u8 wmmps_ac=0, state=TDLS_check_ch_state(ptdls_sta->tdls_sta_state); + int i; + + ptdls_sta->sta_stats.rx_data_pkts++; + + //receive peer traffic response frame, sleeping STA wakes up + //ptdls_sta->tdls_sta_state &= ~(TDLS_PEER_SLEEP_STATE); + process_wmmps_data( adapter, precv_frame); + + // if noticed peer STA wakes up by receiving peer traffic response + // and we want to do channel swtiching, then we will transmit channel switch request first + if(ptdls_sta->tdls_sta_state & TDLS_APSD_CHSW_STATE){ + issue_tdls_ch_switch_req(adapter, pattrib->src); + ptdls_sta->tdls_sta_state &= ~(TDLS_APSD_CHSW_STATE); + return _FAIL; + } + + //check 4-AC queue bit + if(ptdls_sta->uapsd_vo || ptdls_sta->uapsd_vi || ptdls_sta->uapsd_be || ptdls_sta->uapsd_bk) + wmmps_ac=1; + + //if it's a direct link and have buffered frame + if(ptdls_sta->tdls_sta_state & TDLS_LINKED_STATE){ + if(wmmps_ac && state) + { + _irqL irqL; + _list *xmitframe_plist, *xmitframe_phead; + struct xmit_frame *pxmitframe=NULL; + + _enter_critical_bh(&ptdls_sta->sleep_q.lock, &irqL); + + xmitframe_phead = get_list_head(&ptdls_sta->sleep_q); + xmitframe_plist = get_next(xmitframe_phead); + + //transmit buffered frames + while ((rtw_end_of_queue_search(xmitframe_phead, xmitframe_plist)) == _FALSE) + { + pxmitframe = LIST_CONTAINOR(xmitframe_plist, struct xmit_frame, list); + xmitframe_plist = get_next(xmitframe_plist); + rtw_list_delete(&pxmitframe->list); + + ptdls_sta->sleepq_len--; + if(ptdls_sta->sleepq_len>0){ + pxmitframe->attrib.mdata = 1; + pxmitframe->attrib.eosp = 0; + }else{ + pxmitframe->attrib.mdata = 0; + pxmitframe->attrib.eosp = 1; + } + //pxmitframe->attrib.triggered = 1; //maybe doesn't need in TDLS + if(rtw_hal_xmit(adapter, pxmitframe) == _TRUE) + { + rtw_os_xmit_complete(adapter, pxmitframe); + } + + } + + if(ptdls_sta->sleepq_len==0) + { + DBG_871X("no buffered packets for tdls to xmit\n"); + //on U-APSD + CH. switch state, when there is no buffered date to xmit, + // we should go back to base channel + if(state==2){ + rtw_tdls_cmd(adapter, ptdls_sta->hwaddr, TDLS_CS_OFF); + }else if(ptdls_sta->tdls_sta_state&TDLS_SW_OFF_STATE){ + ptdls_sta->tdls_sta_state &= ~(TDLS_SW_OFF_STATE); + ptdlsinfo->candidate_ch= pmlmeext->cur_channel; + issue_tdls_ch_switch_req(adapter, pattrib->src); + DBG_871X("issue tdls ch switch req back to base channel\n"); + } + + } + else + { + DBG_871X("error!psta->sleepq_len=%d\n", ptdls_sta->sleepq_len); + ptdls_sta->sleepq_len=0; + } + + _exit_critical_bh(&ptdls_sta->sleep_q.lock, &irqL); + + } + + } + + return _FAIL; +} + +sint On_TDLS_Ch_Switch_Req(_adapter *adapter, union recv_frame *precv_frame) +{ + struct sta_info *ptdls_sta= NULL; + struct sta_priv *pstapriv = &adapter->stapriv; + u8 *ptr = precv_frame->u.hdr.rx_data; + struct rx_pkt_attrib *prx_pkt_attrib = &precv_frame->u.hdr.attrib; + u8 *psa; + sint parsing_length; + PNDIS_802_11_VARIABLE_IEs pIE; + u8 FIXED_IE =3; + u16 j; + struct mlme_ext_priv *pmlmeext = &adapter->mlmeextpriv; + + psa = get_sa(ptr); + ptdls_sta = rtw_get_stainfo(pstapriv, psa); + + ptr +=prx_pkt_attrib->hdrlen + prx_pkt_attrib->iv_len+LLC_HEADER_SIZE+TYPE_LENGTH_FIELD_SIZE+1; + parsing_length= ((union recv_frame *)precv_frame)->u.hdr.len + -prx_pkt_attrib->hdrlen + -prx_pkt_attrib->iv_len + -prx_pkt_attrib->icv_len + -LLC_HEADER_SIZE + -ETH_TYPE_LEN + -PAYLOAD_TYPE_LEN + -FIXED_IE; + + ptdls_sta->off_ch = *(ptr+2); + + //parsing information element + for(j=FIXED_IE; jElementID) + { + case _COUNTRY_IE_: + break; + case _CH_SWTICH_ANNOUNCE_: + break; + case _LINK_ID_IE_: + break; + case _CH_SWITCH_TIMING_: + _rtw_memcpy(&ptdls_sta->ch_switch_time, pIE->data, 2); + _rtw_memcpy(&ptdls_sta->ch_switch_timeout, pIE->data+2, 2); + default: + break; + } + + j += (pIE->Length + 2); + + } + + //todo: check status + ptdls_sta->stat_code=0; + ptdls_sta->tdls_sta_state |= TDLS_CH_SWITCH_ON_STATE; + + issue_nulldata(adapter, NULL, 1, 0, 0); + + issue_tdls_ch_switch_rsp(adapter, psa); + + DBG_871X("issue tdls channel switch response\n"); + + if((ptdls_sta->tdls_sta_state & TDLS_CH_SWITCH_ON_STATE) && ptdls_sta->off_ch==pmlmeext->cur_channel){ + DBG_871X("back to base channel %x\n", pmlmeext->cur_channel); + ptdls_sta->option=7; + rtw_tdls_cmd(adapter, ptdls_sta->hwaddr, TDLS_BASE_CH); + }else{ + ptdls_sta->option=6; + rtw_tdls_cmd(adapter, ptdls_sta->hwaddr, TDLS_OFF_CH); + } + return _FAIL; +} + +sint On_TDLS_Ch_Switch_Rsp(_adapter *adapter, union recv_frame *precv_frame) +{ + struct sta_info *ptdls_sta= NULL; + struct sta_priv *pstapriv = &adapter->stapriv; + u8 *ptr = precv_frame->u.hdr.rx_data; + struct rx_pkt_attrib *prx_pkt_attrib = &precv_frame->u.hdr.attrib; + u8 *psa; + sint parsing_length; + PNDIS_802_11_VARIABLE_IEs pIE; + u8 FIXED_IE =4; + u16 stat_code, j, switch_time, switch_timeout; + struct mlme_ext_priv *pmlmeext = &adapter->mlmeextpriv; + + psa = get_sa(ptr); + ptdls_sta = rtw_get_stainfo(pstapriv, psa); + + //if channel switch is running and receiving Unsolicited TDLS Channel Switch Response, + //it will go back to base channel and terminate this channel switch procedure + if(ptdls_sta->tdls_sta_state & TDLS_CH_SWITCH_ON_STATE ){ + if(pmlmeext->cur_channel==ptdls_sta->off_ch){ + DBG_871X("back to base channel %x\n", pmlmeext->cur_channel); + ptdls_sta->option=7; + rtw_tdls_cmd(adapter, ptdls_sta->hwaddr, TDLS_OFF_CH); + }else{ + DBG_871X("receive unsolicited channel switch response \n"); + rtw_tdls_cmd(adapter, ptdls_sta->hwaddr, TDLS_CS_OFF); + } + return _FAIL; + } + + //avoiding duplicated or unconditional ch. switch. rsp + if((ptdls_sta->tdls_sta_state & TDLS_CH_SW_INITIATOR_STATE) != TDLS_CH_SW_INITIATOR_STATE) + return _FAIL; + + ptr +=prx_pkt_attrib->hdrlen + prx_pkt_attrib->iv_len+LLC_HEADER_SIZE+TYPE_LENGTH_FIELD_SIZE+1; + parsing_length= ((union recv_frame *)precv_frame)->u.hdr.len + -prx_pkt_attrib->hdrlen + -prx_pkt_attrib->iv_len + -prx_pkt_attrib->icv_len + -LLC_HEADER_SIZE + -ETH_TYPE_LEN + -PAYLOAD_TYPE_LEN + -FIXED_IE; + + _rtw_memcpy(&stat_code, ptr+2, 2); + + if(stat_code!=0){ + return _FAIL; + } + + //parsing information element + for(j=FIXED_IE; jElementID) + { + case _LINK_ID_IE_: + break; + case _CH_SWITCH_TIMING_: + _rtw_memcpy(&switch_time, pIE->data, 2); + if(switch_time > ptdls_sta->ch_switch_time) + _rtw_memcpy(&ptdls_sta->ch_switch_time, &switch_time, 2); + + _rtw_memcpy(&switch_timeout, pIE->data+2, 2); + if(switch_timeout > ptdls_sta->ch_switch_timeout) + _rtw_memcpy(&ptdls_sta->ch_switch_timeout, &switch_timeout, 2); + + default: + break; + } + + j += (pIE->Length + 2); + + } + + ptdls_sta->tdls_sta_state &= ~(TDLS_CH_SW_INITIATOR_STATE); + ptdls_sta->tdls_sta_state |=TDLS_CH_SWITCH_ON_STATE; + + //goto set_channel_workitem_callback() + ptdls_sta->option=6; + rtw_tdls_cmd(adapter, ptdls_sta->hwaddr, TDLS_OFF_CH); + + return _FAIL; +} + +#ifdef CONFIG_WFD +void wfd_ie_tdls(_adapter * padapter, u8 *pframe, u32 *pktlen ) +{ + struct mlme_priv *pmlmepriv = &padapter->mlmepriv; + struct wifi_display_info *pwfd_info = padapter->tdlsinfo.wfd_info; + u8 wfdie[ MAX_WFD_IE_LEN] = { 0x00 }; + u32 wfdielen = 0; + + // WFD OUI + wfdielen = 0; + wfdie[ wfdielen++ ] = 0x50; + wfdie[ wfdielen++ ] = 0x6F; + wfdie[ wfdielen++ ] = 0x9A; + wfdie[ wfdielen++ ] = 0x0A; // WFA WFD v1.0 + + // Commented by Albert 20110825 + // According to the WFD Specification, the negotiation request frame should contain 3 WFD attributes + // 1. WFD Device Information + // 2. Associated BSSID ( Optional ) + // 3. Local IP Adress ( Optional ) + + // WFD Device Information ATTR + // Type: + wfdie[ wfdielen++ ] = WFD_ATTR_DEVICE_INFO; + + // Length: + // Note: In the WFD specification, the size of length field is 2. + RTW_PUT_BE16(wfdie + wfdielen, 0x0006); + wfdielen += 2; + + // Value1: + // WFD device information + // available for WFD session + Preferred TDLS + WSD ( WFD Service Discovery ) + RTW_PUT_BE16(wfdie + wfdielen, pwfd_info->wfd_device_type | WFD_DEVINFO_SESSION_AVAIL + | WFD_DEVINFO_PC_TDLS | WFD_DEVINFO_WSD); + wfdielen += 2; + + // Value2: + // Session Management Control Port + // Default TCP port for RTSP messages is 554 + RTW_PUT_BE16(wfdie + wfdielen, pwfd_info->rtsp_ctrlport ); + wfdielen += 2; + + // Value3: + // WFD Device Maximum Throughput + // 300Mbps is the maximum throughput + RTW_PUT_BE16(wfdie + wfdielen, 300); + wfdielen += 2; + + // Associated BSSID ATTR + // Type: + wfdie[ wfdielen++ ] = WFD_ATTR_ASSOC_BSSID; + + // Length: + // Note: In the WFD specification, the size of length field is 2. + RTW_PUT_BE16(wfdie + wfdielen, 0x0006); + wfdielen += 2; + + // Value: + // Associated BSSID + if ( check_fwstate( pmlmepriv, _FW_LINKED) == _TRUE ) + { + _rtw_memcpy( wfdie + wfdielen, &pmlmepriv->assoc_bssid[ 0 ], ETH_ALEN ); + } + else + { + _rtw_memset( wfdie + wfdielen, 0x00, ETH_ALEN ); + } + + // Local IP Address ATTR + wfdie[ wfdielen++ ] = WFD_ATTR_LOCAL_IP_ADDR; + + // Length: + // Note: In the WFD specification, the size of length field is 2. + RTW_PUT_BE16(wfdie + wfdielen, 0x0005); + wfdielen += 2; + + // Version: + // 0x01: Version1;IPv4 + wfdie[ wfdielen++ ] = 0x01; + + // IPv4 Address + _rtw_memcpy( wfdie + wfdielen, pwfd_info->ip_address, 4 ); + wfdielen += 4; + + pframe = rtw_set_ie(pframe, _VENDOR_SPECIFIC_IE_, wfdielen, (unsigned char *) wfdie, pktlen); + +} +#endif //CONFIG_WFD + +void rtw_build_tdls_setup_req_ies(_adapter * padapter, struct xmit_frame * pxmitframe, u8 *pframe) +{ + struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; + struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info; + struct pkt_attrib *pattrib = &pxmitframe->attrib; + struct registry_priv *pregistrypriv = &padapter->registrypriv; + struct sta_info *ptdls_sta=rtw_get_stainfo( (&padapter->stapriv) , pattrib->dst); + + u8 payload_type = 0x02; + u8 category = RTW_WLAN_CATEGORY_TDLS; + u8 action = TDLS_SETUP_REQUEST; + u8 bssrate[NDIS_802_11_LENGTH_RATES_EX]; //Use NDIS_802_11_LENGTH_RATES_EX in order to call func.rtw_set_supported_rate + int bssrate_len = 0, i = 0 ; + u8 more_supportedrates = 0; + unsigned int ie_len; + u8 *p; + struct mlme_priv *pmlmepriv = &padapter->mlmepriv; + u8 link_id_addr[18] = {0}; + u8 iedata=0; + u8 sup_ch[ 30 * 2 ] = {0x00 }, sup_ch_idx = 0, idx_5g = 2; //For supported channel + u8 timeout_itvl[5]; //set timeout interval to maximum value + u32 time; + + //SNonce + if(pattrib->encrypt){ + for(i=0;i<8;i++){ + time=rtw_get_current_time(); + _rtw_memcpy(&ptdls_sta->SNonce[4*i], (u8 *)&time, 4); + } + } + + //payload type + pframe = rtw_set_fixed_ie(pframe, 1, &(payload_type), &(pattrib->pktlen)); + //category, action, dialog token + pframe = rtw_set_fixed_ie(pframe, 1, &(category), &(pattrib->pktlen)); + pframe = rtw_set_fixed_ie(pframe, 1, &(action), &(pattrib->pktlen)); + pframe = rtw_set_fixed_ie(pframe, 1, &(ptdls_sta->dialog), &(pattrib->pktlen)); + + //capability + _rtw_memcpy(pframe, rtw_get_capability_from_ie(pmlmeinfo->network.IEs), 2); + + if(pattrib->encrypt) + *pframe =*pframe | BIT(4); + pframe += 2; + pattrib->pktlen += 2; + + //supported rates + rtw_set_supported_rate(bssrate, WIRELESS_11BG_24N); + bssrate_len = IEEE80211_CCK_RATE_LEN + IEEE80211_NUM_OFDM_RATESLEN; + + if (bssrate_len > 8) + { + pframe = rtw_set_ie(pframe, _SUPPORTEDRATES_IE_ , 8, bssrate, &(pattrib->pktlen)); + more_supportedrates = 1; + } + else + { + pframe = rtw_set_ie(pframe, _SUPPORTEDRATES_IE_ , bssrate_len , bssrate, &(pattrib->pktlen)); + } + + //country(optional) + //extended supported rates + if(more_supportedrates==1){ + pframe = rtw_set_ie(pframe, _EXT_SUPPORTEDRATES_IE_ , (bssrate_len - 8), (bssrate + 8), &(pattrib->pktlen)); + } + + //supported channels + pframe = rtw_tdls_set_sup_ch(pmlmeext, pframe, pattrib); + + // SRC IE + pframe = rtw_set_ie( pframe, _SRC_IE_, 16, TDLS_SRC, &(pattrib->pktlen)); + + //RSNIE + if(pattrib->encrypt) + pframe = rtw_set_ie(pframe, _RSN_IE_2_, 20, TDLS_RSNIE, &(pattrib->pktlen)); + + //extended capabilities + pframe = rtw_set_ie(pframe, _EXT_CAP_IE_ , 5, TDLS_EXT_CAPIE, &(pattrib->pktlen)); + + //QoS capability(WMM_IE) + pframe = rtw_set_ie(pframe, _VENDOR_SPECIFIC_IE_, 7, TDLS_WMMIE, &(pattrib->pktlen)); + + + if(pattrib->encrypt){ + //FTIE + _rtw_memset(pframe, 0, 84); //All fields except SNonce shall be set to 0 + _rtw_memset(pframe, _FTIE_, 1); //version + _rtw_memset((pframe+1), 82, 1); //length + _rtw_memcpy((pframe+52), ptdls_sta->SNonce, 32); + pframe += 84; + pattrib->pktlen += 84; + + //Timeout interval + timeout_itvl[0]=0x02; + _rtw_memcpy(timeout_itvl+1, (u8 *)(&ptdls_sta->TDLS_PeerKey_Lifetime), 4); + pframe = rtw_set_ie(pframe, _TIMEOUT_ITVL_IE_, 5, timeout_itvl, &(pattrib->pktlen)); + } + + //Sup_reg_classes(optional) + //HT capabilities + pframe = rtw_tdls_set_ht_cap(padapter, pframe, pattrib); + + //20/40 BSS coexistence + if(pmlmepriv->num_FortyMHzIntolerant>0) + iedata |= BIT(2);//20 MHz BSS Width Request + pframe = rtw_set_ie(pframe, EID_BSSCoexistence, 1, &iedata, &(pattrib->pktlen)); + + //Link identifier + _rtw_memcpy(link_id_addr, pattrib->ra, 6); + _rtw_memcpy((link_id_addr+6), pattrib->src, 6); + _rtw_memcpy((link_id_addr+12), pattrib->dst, 6); + pframe = rtw_set_ie(pframe, _LINK_ID_IE_, 18, link_id_addr, &(pattrib->pktlen)); + +#ifdef CONFIG_WFD + wfd_ie_tdls( padapter, pframe, &(pattrib->pktlen) ); +#endif //CONFIG_WFD + +} + +void rtw_build_tdls_setup_rsp_ies(_adapter * padapter, struct xmit_frame * pxmitframe, u8 *pframe) +{ + struct mlme_ext_priv *pmlmeext = &(padapter->mlmeextpriv); + struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info); + struct pkt_attrib *pattrib = &pxmitframe->attrib; + struct sta_info *ptdls_sta; + struct registry_priv *pregistrypriv = &padapter->registrypriv; + + u8 payload_type = 0x02; + unsigned char category = RTW_WLAN_CATEGORY_TDLS; + unsigned char action = TDLS_SETUP_RESPONSE; + unsigned char bssrate[NDIS_802_11_LENGTH_RATES_EX]; + int bssrate_len = 0; + u8 more_supportedrates = 0; + unsigned int ie_len; + unsigned char *p; + struct mlme_priv *pmlmepriv = &padapter->mlmepriv; + u8 link_id_addr[18] = {0}; + u8 iedata=0; + u8 timeout_itvl[5]; //setup response timeout interval will copy from request + u8 ANonce[32]; //maybe it can put in ontdls_req + u8 k; //for random ANonce + u8 *pftie, *ptimeout_ie, *plinkid_ie, *prsnie, *pftie_mic; + u32 time; + + ptdls_sta = rtw_get_stainfo( &(padapter->stapriv) , pattrib->dst); + + if(ptdls_sta == NULL ) + { + DBG_871X("[%s] %d\n", __FUNCTION__, __LINE__); + return; + } + + if(pattrib->encrypt){ + for(k=0;k<8;k++){ + time=rtw_get_current_time(); + _rtw_memcpy(&ptdls_sta->ANonce[4*k], (u8*)&time, 4); + } + } + + //payload type + pframe = rtw_set_fixed_ie(pframe, 1, &(payload_type), &(pattrib->pktlen)); + //category, action, status code + pframe = rtw_set_fixed_ie(pframe, 1, &(category), &(pattrib->pktlen)); + pframe = rtw_set_fixed_ie(pframe, 1, &(action), &(pattrib->pktlen)); + pframe = rtw_set_fixed_ie(pframe, 2, (u8 *)&ptdls_sta->stat_code, &(pattrib->pktlen)); + + if(ptdls_sta->stat_code!=0) //invalid setup request + { + DBG_871X("ptdls_sta->stat_code:%04x \n", ptdls_sta->stat_code); + return; + } + + //dialog token + pframe = rtw_set_fixed_ie(pframe, 1, &(ptdls_sta->dialog), &(pattrib->pktlen)); + + //capability + _rtw_memcpy(pframe, rtw_get_capability_from_ie(pmlmeinfo->network.IEs), 2); + + if(pattrib->encrypt ) + *pframe =*pframe | BIT(4); + pframe += 2; + pattrib->pktlen += 2; + + //supported rates + rtw_set_supported_rate(bssrate, WIRELESS_11BG_24N); + bssrate_len = IEEE80211_CCK_RATE_LEN + IEEE80211_NUM_OFDM_RATESLEN; + + if (bssrate_len > 8) + { + pframe = rtw_set_ie(pframe, _SUPPORTEDRATES_IE_ , 8, bssrate, &(pattrib->pktlen)); + more_supportedrates = 1; + } + else + { + pframe = rtw_set_ie(pframe, _SUPPORTEDRATES_IE_ , bssrate_len , bssrate, &(pattrib->pktlen)); + } + + //country(optional) + //extended supported rates + if(more_supportedrates==1){ + pframe = rtw_set_ie(pframe, _EXT_SUPPORTEDRATES_IE_ , (bssrate_len - 8), (bssrate + 8), &(pattrib->pktlen)); + } + + //supported channels + pframe = rtw_tdls_set_sup_ch(pmlmeext, pframe, pattrib); + + // SRC IE + pframe = rtw_set_ie(pframe, _SRC_IE_ , 16, TDLS_SRC, &(pattrib->pktlen)); + + //RSNIE + if(pattrib->encrypt){ + prsnie = pframe; + pframe = rtw_set_ie(pframe, _RSN_IE_2_, 20, TDLS_RSNIE, &(pattrib->pktlen)); + } + + //extended capabilities + pframe = rtw_set_ie(pframe, _EXT_CAP_IE_ , 5, TDLS_EXT_CAPIE, &(pattrib->pktlen)); + + //QoS capability(WMM_IE) + pframe = rtw_set_ie(pframe, _VENDOR_SPECIFIC_IE_, 7, TDLS_WMMIE, &(pattrib->pktlen)); + + if(pattrib->encrypt){ + wpa_tdls_generate_tpk(padapter, ptdls_sta); + + //FTIE + pftie = pframe; + pftie_mic = pframe+4; + _rtw_memset(pframe, 0, 84); //All fields except SNonce shall be set to 0 + _rtw_memset(pframe, _FTIE_, 1); //version + _rtw_memset((pframe+1), 82, 1); //length + _rtw_memcpy((pframe+20), ptdls_sta->ANonce, 32); + _rtw_memcpy((pframe+52), ptdls_sta->SNonce, 32); + pframe += 84; + pattrib->pktlen += 84; + + //Timeout interval + ptimeout_ie = pframe; + timeout_itvl[0]=0x02; + _rtw_memcpy(timeout_itvl+1, (u8 *)(&ptdls_sta->TDLS_PeerKey_Lifetime), 4); + pframe = rtw_set_ie(pframe, _TIMEOUT_ITVL_IE_, 5, timeout_itvl, &(pattrib->pktlen)); + } + + //Sup_reg_classes(optional) + //HT capabilities + pframe = rtw_tdls_set_ht_cap(padapter, pframe, pattrib); + + //20/40 BSS coexistence + if(pmlmepriv->num_FortyMHzIntolerant>0) + iedata |= BIT(2);//20 MHz BSS Width Request + pframe = rtw_set_ie(pframe, EID_BSSCoexistence, 1, &iedata, &(pattrib->pktlen)); + + //Link identifier + plinkid_ie = pframe; + _rtw_memcpy(link_id_addr, pattrib->ra, 6); + _rtw_memcpy((link_id_addr+6), pattrib->dst, 6); + _rtw_memcpy((link_id_addr+12), pattrib->src, 6); + pframe = rtw_set_ie(pframe, _LINK_ID_IE_, 18, link_id_addr, &(pattrib->pktlen)); + + //fill FTIE mic + if(pattrib->encrypt) + wpa_tdls_ftie_mic(ptdls_sta->tpk.kck, 2, plinkid_ie, prsnie, ptimeout_ie, pftie, pftie_mic); + +#ifdef CONFIG_WFD + wfd_ie_tdls( padapter, pframe, &(pattrib->pktlen) ); +#endif //CONFIG_WFD + +} + +void rtw_build_tdls_setup_cfm_ies(_adapter * padapter, struct xmit_frame * pxmitframe, u8 *pframe) +{ + + struct mlme_ext_priv *pmlmeext = &(padapter->mlmeextpriv); + struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info); + struct pkt_attrib *pattrib = &pxmitframe->attrib; + struct sta_info *ptdls_sta=rtw_get_stainfo( (&padapter->stapriv) , pattrib->dst); + + u8 payload_type = 0x02; + unsigned char category = RTW_WLAN_CATEGORY_TDLS; + unsigned char action = TDLS_SETUP_CONFIRM; + u8 more_supportedrates = 0; + unsigned int ie_len; + unsigned char *p; + u8 timeout_itvl[5]; //set timeout interval to maximum value + struct mlme_priv *pmlmepriv = &padapter->mlmepriv; + u8 link_id_addr[18] = {0}; + u8 *pftie, *ptimeout_ie, *plinkid_ie, *prsnie, *pftie_mic; + + //payload type + pframe = rtw_set_fixed_ie(pframe, 1, &(payload_type), &(pattrib->pktlen)); + //category, action, status code, dialog token + pframe = rtw_set_fixed_ie(pframe, 1, &(category), &(pattrib->pktlen)); + pframe = rtw_set_fixed_ie(pframe, 1, &(action), &(pattrib->pktlen)); + pframe = rtw_set_fixed_ie(pframe, 2, (u8 *)&ptdls_sta->stat_code, &(pattrib->pktlen)); + pframe = rtw_set_fixed_ie(pframe, 1, &(ptdls_sta->dialog), &(pattrib->pktlen)); + + if(ptdls_sta->stat_code!=0) //invalid setup request + return; + + //RSNIE + if(pattrib->encrypt){ + prsnie = pframe; + pframe = rtw_set_ie(pframe, _RSN_IE_2_, 20, TDLS_RSNIE, &(pattrib->pktlen)); + } + + //EDCA param set; WMM param ele. + if(pattrib->encrypt){ + //FTIE + pftie = pframe; + pftie_mic = pframe+4; + _rtw_memset(pframe, 0, 84); //All fields except SNonce shall be set to 0 + _rtw_memset(pframe, _FTIE_, 1); //version + _rtw_memset((pframe+1), 82, 1); //length + _rtw_memcpy((pframe+20), ptdls_sta->ANonce, 32); + _rtw_memcpy((pframe+52), ptdls_sta->SNonce, 32); + pframe += 84; + pattrib->pktlen += 84; + + //Timeout interval + ptimeout_ie = pframe; + timeout_itvl[0]=0x02; + _rtw_memcpy(timeout_itvl+1, (u8 *)(&ptdls_sta->TDLS_PeerKey_Lifetime), 4); + ptdls_sta->TPK_count=0; + _set_timer(&ptdls_sta->TPK_timer, ptdls_sta->TDLS_PeerKey_Lifetime/TPK_RESEND_COUNT); + pframe = rtw_set_ie(pframe, _TIMEOUT_ITVL_IE_, 5, timeout_itvl, &(pattrib->pktlen)); + } + + //HT operation; todo + //Link identifier + plinkid_ie = pframe; + _rtw_memcpy(link_id_addr, pattrib->ra, 6); + _rtw_memcpy((link_id_addr+6), pattrib->src, 6); + _rtw_memcpy((link_id_addr+12), pattrib->dst, 6); + pframe = rtw_set_ie(pframe, _LINK_ID_IE_, 18, link_id_addr, &(pattrib->pktlen)); + + //fill FTIE mic + if(pattrib->encrypt) + wpa_tdls_ftie_mic(ptdls_sta->tpk.kck, 3, plinkid_ie, prsnie, ptimeout_ie, pftie, pftie_mic); + +} + +void rtw_build_tdls_teardown_ies(_adapter * padapter, struct xmit_frame * pxmitframe, u8 *pframe) +{ + + struct pkt_attrib *pattrib = &pxmitframe->attrib; + u8 payload_type = 0x02; + unsigned char category = RTW_WLAN_CATEGORY_TDLS; + unsigned char action = TDLS_TEARDOWN; + u8 link_id_addr[18] = {0}; + + struct sta_info *ptdls_sta = rtw_get_stainfo( &(padapter->stapriv) , pattrib->dst); + struct sta_priv *pstapriv = &padapter->stapriv; + + //payload type + pframe = rtw_set_fixed_ie(pframe, 1, &(payload_type), &(pattrib->pktlen)); + //category, action, reason code + pframe = rtw_set_fixed_ie(pframe, 1, &(category), &(pattrib->pktlen)); + pframe = rtw_set_fixed_ie(pframe, 1, &(action), &(pattrib->pktlen)); + pframe = rtw_set_fixed_ie(pframe, 1, (u8 *)&ptdls_sta->stat_code, &(pattrib->pktlen)); + + //Link identifier + if(ptdls_sta->tdls_sta_state & TDLS_INITIATOR_STATE){ + _rtw_memcpy(link_id_addr, pattrib->ra, 6); + _rtw_memcpy((link_id_addr+6), pattrib->src, 6); + _rtw_memcpy((link_id_addr+12), pattrib->dst, 6); + }else if(ptdls_sta->tdls_sta_state & TDLS_RESPONDER_STATE){ + _rtw_memcpy(link_id_addr, pattrib->ra, 6); + _rtw_memcpy((link_id_addr+6), pattrib->dst, 6); + _rtw_memcpy((link_id_addr+12), pattrib->src, 6); + } + pframe = rtw_set_ie(pframe, _LINK_ID_IE_, 18, link_id_addr, &(pattrib->pktlen)); + +} + +void rtw_build_tdls_dis_req_ies(_adapter * padapter, struct xmit_frame * pxmitframe, u8 *pframe) +{ + + struct pkt_attrib *pattrib = &pxmitframe->attrib; + u8 payload_type = 0x02; + u8 category = RTW_WLAN_CATEGORY_TDLS; + u8 action = TDLS_DISCOVERY_REQUEST; + u8 link_id_addr[18] = {0}; + static u8 dialogtoken=0; + + //payload type + pframe = rtw_set_fixed_ie(pframe, 1, &(payload_type), &(pattrib->pktlen)); + //category, action, reason code + pframe = rtw_set_fixed_ie(pframe, 1, &(category), &(pattrib->pktlen)); + pframe = rtw_set_fixed_ie(pframe, 1, &(action), &(pattrib->pktlen)); + pframe = rtw_set_fixed_ie(pframe, 1, &(dialogtoken), &(pattrib->pktlen)); + dialogtoken = (dialogtoken+1)%256; + + //Link identifier + _rtw_memcpy(link_id_addr, pattrib->ra, 6); + _rtw_memcpy((link_id_addr+6), pattrib->src, 6); + _rtw_memcpy((link_id_addr+12), pattrib->dst, 6); + pframe = rtw_set_ie(pframe, _LINK_ID_IE_, 18, link_id_addr, &(pattrib->pktlen)); + +} + +void rtw_build_tdls_dis_rsp_ies(_adapter * padapter, struct xmit_frame * pxmitframe, u8 *pframe, u8 dialog) +{ + struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; + struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info; + struct pkt_attrib *pattrib = &pxmitframe->attrib; + struct registry_priv *pregistrypriv = &padapter->registrypriv; + + u8 category = RTW_WLAN_CATEGORY_PUBLIC; + u8 action = TDLS_DISCOVERY_RESPONSE; + u8 bssrate[NDIS_802_11_LENGTH_RATES_EX]; + int bssrate_len = 0; + u8 more_supportedrates = 0; + u8 *p; + struct mlme_priv *pmlmepriv = &padapter->mlmepriv; + u8 link_id_addr[18] = {0}; + u8 iedata=0; + u8 timeout_itvl[5]; //set timeout interval to maximum value + u32 timeout_interval= TPK_RESEND_COUNT * 1000; + + //category, action, dialog token + pframe = rtw_set_fixed_ie(pframe, 1, &(category), &(pattrib->pktlen)); + pframe = rtw_set_fixed_ie(pframe, 1, &(action), &(pattrib->pktlen)); + pframe = rtw_set_fixed_ie(pframe, 1, &(dialog), &(pattrib->pktlen)); + + //capability + _rtw_memcpy(pframe, rtw_get_capability_from_ie(pmlmeinfo->network.IEs), 2); + + if(pattrib->encrypt) + *pframe =*pframe | BIT(4); + pframe += 2; + pattrib->pktlen += 2; + + //supported rates + rtw_set_supported_rate(bssrate, WIRELESS_11BG_24N); + bssrate_len = IEEE80211_CCK_RATE_LEN + IEEE80211_NUM_OFDM_RATESLEN; + + if (bssrate_len > 8) + { + pframe = rtw_set_ie(pframe, _SUPPORTEDRATES_IE_ , 8, bssrate, &(pattrib->pktlen)); + more_supportedrates = 1; + } + else + { + pframe = rtw_set_ie(pframe, _SUPPORTEDRATES_IE_ , bssrate_len , bssrate, &(pattrib->pktlen)); + } + + //extended supported rates + if(more_supportedrates==1){ + pframe = rtw_set_ie(pframe, _EXT_SUPPORTEDRATES_IE_ , (bssrate_len - 8), (bssrate + 8), &(pattrib->pktlen)); + } + + //supported channels + pframe = rtw_tdls_set_sup_ch(pmlmeext, pframe, pattrib); + + //RSNIE + if(pattrib->encrypt) + pframe = rtw_set_ie(pframe, _RSN_IE_2_, 20, TDLS_RSNIE, &(pattrib->pktlen)); + + //extended capability + pframe = rtw_set_ie(pframe, _EXT_CAP_IE_ , 5, TDLS_EXT_CAPIE, &(pattrib->pktlen)); + + if(pattrib->encrypt){ + //FTIE + _rtw_memset(pframe, 0, 84); //All fields shall be set to 0 + _rtw_memset(pframe, _FTIE_, 1); //version + _rtw_memset((pframe+1), 82, 1); //length + pframe += 84; + pattrib->pktlen += 84; + + //Timeout interval + timeout_itvl[0]=0x02; + _rtw_memcpy(timeout_itvl+1, &timeout_interval, 4); + pframe = rtw_set_ie(pframe, _TIMEOUT_ITVL_IE_, 5, timeout_itvl, &(pattrib->pktlen)); + } + + //Sup_reg_classes(optional) + //HT capabilities + pframe = rtw_tdls_set_ht_cap(padapter, pframe, pattrib); + + //20/40 BSS coexistence + if(pmlmepriv->num_FortyMHzIntolerant>0) + iedata |= BIT(2);//20 MHz BSS Width Request + pframe = rtw_set_ie(pframe, EID_BSSCoexistence, 1, &iedata, &(pattrib->pktlen)); + + //Link identifier + _rtw_memcpy(link_id_addr, pattrib->ra, 6); + _rtw_memcpy((link_id_addr+6), pattrib->dst, 6); + _rtw_memcpy((link_id_addr+12), pattrib->src, 6); + pframe = rtw_set_ie(pframe, _LINK_ID_IE_, 18, link_id_addr, &(pattrib->pktlen)); + +} + +void rtw_build_tdls_peer_traffic_indication_ies(_adapter * padapter, struct xmit_frame * pxmitframe, u8 *pframe) +{ + + struct pkt_attrib *pattrib = &pxmitframe->attrib; + u8 payload_type = 0x02; + unsigned char category = RTW_WLAN_CATEGORY_TDLS; + unsigned char action = TDLS_PEER_TRAFFIC_INDICATION; + + u8 link_id_addr[18] = {0}; + u8 AC_queue=0; + struct sta_priv *pstapriv = &padapter->stapriv; + struct sta_info *ptdls_sta = rtw_get_stainfo(pstapriv, pattrib->dst); + + //payload type + pframe = rtw_set_fixed_ie(pframe, 1, &(payload_type), &(pattrib->pktlen)); + //category, action, reason code + pframe = rtw_set_fixed_ie(pframe, 1, &(category), &(pattrib->pktlen)); + pframe = rtw_set_fixed_ie(pframe, 1, &(action), &(pattrib->pktlen)); + pframe = rtw_set_fixed_ie(pframe, 1, &(ptdls_sta->dialog), &(pattrib->pktlen)); + + //Link identifier + _rtw_memcpy(link_id_addr, pattrib->ra, 6); + _rtw_memcpy((link_id_addr+6), pattrib->src, 6); + _rtw_memcpy((link_id_addr+12), pattrib->dst, 6); + pframe = rtw_set_ie(pframe, _LINK_ID_IE_, 18, link_id_addr, &(pattrib->pktlen)); + + //PTI control + //PU buffer status + if(ptdls_sta->uapsd_bk&BIT(1)) + AC_queue=BIT(0); + if(ptdls_sta->uapsd_be&BIT(1)) + AC_queue=BIT(1); + if(ptdls_sta->uapsd_vi&BIT(1)) + AC_queue=BIT(2); + if(ptdls_sta->uapsd_vo&BIT(1)) + AC_queue=BIT(3); + pframe = rtw_set_ie(pframe, _PTI_BUFFER_STATUS_, 1, &AC_queue, &(pattrib->pktlen)); + +} + +void rtw_build_tdls_ch_switch_req_ies(_adapter * padapter, struct xmit_frame * pxmitframe, u8 *pframe) +{ + + struct pkt_attrib *pattrib = &pxmitframe->attrib; + struct tdls_info *ptdlsinfo = &padapter->tdlsinfo; + u8 payload_type = 0x02; + unsigned char category = RTW_WLAN_CATEGORY_TDLS; + unsigned char action = TDLS_CHANNEL_SWITCH_REQUEST; + u8 link_id_addr[18] = {0}; + struct sta_priv *pstapriv = &padapter->stapriv; + struct sta_info *ptdls_sta = rtw_get_stainfo(pstapriv, pattrib->dst); + u8 ch_switch_timing[4] = {0}; + u16 switch_time= CH_SWITCH_TIME, switch_timeout=CH_SWITCH_TIMEOUT; + + //payload type + pframe = rtw_set_fixed_ie(pframe, 1, &(payload_type), &(pattrib->pktlen)); + //category, action, target_ch + pframe = rtw_set_fixed_ie(pframe, 1, &(category), &(pattrib->pktlen)); + pframe = rtw_set_fixed_ie(pframe, 1, &(action), &(pattrib->pktlen)); + pframe = rtw_set_fixed_ie(pframe, 1, &(ptdlsinfo->candidate_ch), &(pattrib->pktlen)); + + //Link identifier + _rtw_memcpy(link_id_addr, pattrib->ra, 6); + _rtw_memcpy((link_id_addr+6), pattrib->src, 6); + _rtw_memcpy((link_id_addr+12), pattrib->dst, 6); + pframe = rtw_set_ie(pframe, _LINK_ID_IE_, 18, link_id_addr, &(pattrib->pktlen)); + + //ch switch timing + _rtw_memcpy(ch_switch_timing, &switch_time, 2); + _rtw_memcpy(ch_switch_timing+2, &switch_timeout, 2); + pframe = rtw_set_ie(pframe, _CH_SWITCH_TIMING_, 4, ch_switch_timing, &(pattrib->pktlen)); + + //update ch switch attrib to sta_info + ptdls_sta->off_ch=ptdlsinfo->candidate_ch; + ptdls_sta->ch_switch_time=switch_time; + ptdls_sta->ch_switch_timeout=switch_timeout; + +} + +void rtw_build_tdls_ch_switch_rsp_ies(_adapter * padapter, struct xmit_frame * pxmitframe, u8 *pframe) +{ + + struct pkt_attrib *pattrib = &pxmitframe->attrib; + u8 payload_type = 0x02; + unsigned char category = RTW_WLAN_CATEGORY_TDLS; + unsigned char action = TDLS_CHANNEL_SWITCH_RESPONSE; + u8 link_id_addr[18] = {0}; + struct sta_priv *pstapriv = &padapter->stapriv; + struct sta_info *ptdls_sta = rtw_get_stainfo(pstapriv, pattrib->dst); + struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; + struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info; + u8 ch_switch_timing[4] = {0}; + + //payload type + pframe = rtw_set_fixed_ie(pframe, 1, &(payload_type), &(pattrib->pktlen)); + //category, action, status_code + pframe = rtw_set_fixed_ie(pframe, 1, &(category), &(pattrib->pktlen)); + pframe = rtw_set_fixed_ie(pframe, 1, &(action), &(pattrib->pktlen)); + pframe = rtw_set_fixed_ie(pframe, 2, (u8 *)&ptdls_sta->stat_code, &(pattrib->pktlen)); + + //Link identifier + _rtw_memcpy(link_id_addr, pattrib->ra, 6); + _rtw_memcpy((link_id_addr+6), pattrib->src, 6); + _rtw_memcpy((link_id_addr+12), pattrib->dst, 6); + pframe = rtw_set_ie(pframe, _LINK_ID_IE_, 18, link_id_addr, &(pattrib->pktlen)); + + //ch switch timing + _rtw_memcpy(ch_switch_timing, &ptdls_sta->ch_switch_time, 2); + _rtw_memcpy(ch_switch_timing+2, &ptdls_sta->ch_switch_timeout, 2); + pframe = rtw_set_ie(pframe, _CH_SWITCH_TIMING_, 4, ch_switch_timing, &(pattrib->pktlen)); + +} + +#ifdef CONFIG_WFD +void rtw_build_tunneled_probe_req_ies(_adapter * padapter, struct xmit_frame * pxmitframe, u8 *pframe) +{ + + struct pkt_attrib *pattrib = &pxmitframe->attrib; + struct wifidirect_info *pwdinfo = &padapter->wdinfo; + struct wifidirect_info *pbuddy_wdinfo = &padapter->pbuddy_adapter->wdinfo; + u8 payload_type = 0x02; + u8 category = RTW_WLAN_CATEGORY_P2P; + u8 WFA_OUI[3] = { 0x50, 0x6f, 0x9a}; + u8 probe_req = 4; + u8 wfdielen = 0; + + //payload type + pframe = rtw_set_fixed_ie(pframe, 1, &(payload_type), &(pattrib->pktlen)); + //category, OUI, frame_body_type + pframe = rtw_set_fixed_ie(pframe, 1, &(category), &(pattrib->pktlen)); + pframe = rtw_set_fixed_ie(pframe, 3, WFA_OUI, &(pattrib->pktlen)); + pframe = rtw_set_fixed_ie(pframe, 1, &(probe_req), &(pattrib->pktlen)); + + if(!rtw_p2p_chk_state(pwdinfo, P2P_STATE_NONE)) + { + wfdielen = build_probe_req_wfd_ie(pwdinfo, pframe); + pframe += wfdielen; + pattrib->pktlen += wfdielen; + } + else if(!rtw_p2p_chk_state(pbuddy_wdinfo, P2P_STATE_NONE)) + { + wfdielen = build_probe_req_wfd_ie(pbuddy_wdinfo, pframe); + pframe += wfdielen; + pattrib->pktlen += wfdielen; + } + +} + +void rtw_build_tunneled_probe_rsp_ies(_adapter * padapter, struct xmit_frame * pxmitframe, u8 *pframe) +{ + + struct pkt_attrib *pattrib = &pxmitframe->attrib; + struct wifidirect_info *pwdinfo = &padapter->wdinfo; + struct wifidirect_info *pbuddy_wdinfo = &padapter->pbuddy_adapter->wdinfo; + u8 payload_type = 0x02; + u8 category = RTW_WLAN_CATEGORY_P2P; + u8 WFA_OUI[3] = { 0x50, 0x6f, 0x9a}; + u8 probe_rsp = 5; + u8 wfdielen = 0; + + //payload type + pframe = rtw_set_fixed_ie(pframe, 1, &(payload_type), &(pattrib->pktlen)); + //category, OUI, frame_body_type + pframe = rtw_set_fixed_ie(pframe, 1, &(category), &(pattrib->pktlen)); + pframe = rtw_set_fixed_ie(pframe, 3, WFA_OUI, &(pattrib->pktlen)); + pframe = rtw_set_fixed_ie(pframe, 1, &(probe_rsp), &(pattrib->pktlen)); + + if(!rtw_p2p_chk_state(pwdinfo, P2P_STATE_NONE)) + { + wfdielen = build_probe_resp_wfd_ie(pwdinfo, pframe, 1); + pframe += wfdielen; + pattrib->pktlen += wfdielen; + } + else if(!rtw_p2p_chk_state(pbuddy_wdinfo, P2P_STATE_NONE)) + { + wfdielen = build_probe_resp_wfd_ie(pbuddy_wdinfo, pframe, 1); + pframe += wfdielen; + pattrib->pktlen += wfdielen; + } + +} +#endif //CONFIG_WFD + +void _TPK_timer_hdl(void *FunctionContext) +{ + struct sta_info *ptdls_sta = (struct sta_info *)FunctionContext; + + ptdls_sta->TPK_count++; + //TPK_timer set 1000 as default + //retry timer should set at least 301 sec. + if(ptdls_sta->TPK_count==TPK_RESEND_COUNT){ + ptdls_sta->TPK_count=0; + issue_tdls_setup_req(ptdls_sta->padapter, ptdls_sta->hwaddr); + } + + _set_timer(&ptdls_sta->TPK_timer, ptdls_sta->TDLS_PeerKey_Lifetime/TPK_RESEND_COUNT); +} + +void init_TPK_timer(_adapter *padapter, struct sta_info *psta) +{ + psta->padapter=padapter; + + _init_timer(&psta->TPK_timer, padapter->pnetdev, _TPK_timer_hdl, psta); +} + +// TDLS_DONE_CH_SEN: channel sensing and report candidate channel +// TDLS_OFF_CH: first time set channel to off channel +// TDLS_BASE_CH: when go back to the channel linked with AP, send null data to peer STA as an indication +void _ch_switch_timer_hdl(void *FunctionContext) +{ + + struct sta_info *ptdls_sta = (struct sta_info *)FunctionContext; + _adapter *padapter = ptdls_sta->padapter; + + if( ptdls_sta->option == TDLS_DONE_CH_SEN ){ + rtw_tdls_cmd(padapter, ptdls_sta->hwaddr, TDLS_DONE_CH_SEN); + }else if( ptdls_sta->option == TDLS_OFF_CH ){ + issue_nulldata_to_TDLS_peer_STA(ptdls_sta->padapter, ptdls_sta, 0); + _set_timer(&ptdls_sta->base_ch_timer, 500); + }else if( ptdls_sta->option == TDLS_BASE_CH){ + issue_nulldata_to_TDLS_peer_STA(ptdls_sta->padapter, ptdls_sta, 0); + } +} + +void init_ch_switch_timer(_adapter *padapter, struct sta_info *psta) +{ + psta->padapter=padapter; + _init_timer(&psta->option_timer, padapter->pnetdev, _ch_switch_timer_hdl, psta); +} + +void _base_ch_timer_hdl(void *FunctionContext) +{ + struct sta_info *ptdls_sta = (struct sta_info *)FunctionContext; + rtw_tdls_cmd(ptdls_sta->padapter, ptdls_sta->hwaddr, TDLS_P_OFF_CH); +} + +void init_base_ch_timer(_adapter *padapter, struct sta_info *psta) +{ + psta->padapter=padapter; + _init_timer(&psta->base_ch_timer, padapter->pnetdev, _base_ch_timer_hdl, psta); +} + +void _off_ch_timer_hdl(void *FunctionContext) +{ + struct sta_info *ptdls_sta = (struct sta_info *)FunctionContext; + rtw_tdls_cmd(ptdls_sta->padapter, ptdls_sta->hwaddr, TDLS_P_BASE_CH ); +} + +void init_off_ch_timer(_adapter *padapter, struct sta_info *psta) +{ + psta->padapter=padapter; + _init_timer(&psta->off_ch_timer, padapter->pnetdev, _off_ch_timer_hdl, psta); +} + +void _tdls_handshake_timer_hdl(void *FunctionContext) +{ + struct sta_info *ptdls_sta = (struct sta_info *)FunctionContext; + + if(ptdls_sta != NULL) + { + if( !(ptdls_sta->tdls_sta_state & TDLS_LINKED_STATE) ) + { + DBG_871X("tdls handshake time out\n"); + free_tdls_sta(ptdls_sta->padapter, ptdls_sta); + } + } +} + +void init_handshake_timer(_adapter *padapter, struct sta_info *psta) +{ + psta->padapter=padapter; + _init_timer(&psta->handshake_timer, padapter->pnetdev, _tdls_handshake_timer_hdl, psta); +} + +//Check tdls peer sta alive. +void _tdls_alive_timer_phase1_hdl(void *FunctionContext) +{ + _irqL irqL; + struct sta_info *ptdls_sta = (struct sta_info *)FunctionContext; + _adapter *padapter = ptdls_sta->padapter; + struct tdls_info *ptdlsinfo = &padapter->tdlsinfo; + + _enter_critical_bh(&ptdlsinfo->hdl_lock, &irqL); + ptdls_sta->timer_flag = 1; + _exit_critical_bh(&ptdlsinfo->hdl_lock, &irqL); + + ptdls_sta->tdls_sta_state &= (~TDLS_ALIVE_STATE); + + DBG_871X("issue_tdls_dis_req to check alive\n"); + issue_tdls_dis_req( padapter, ptdls_sta->hwaddr); + rtw_tdls_cmd(padapter, ptdls_sta->hwaddr, TDLS_CKALV_PH1); + sta_update_last_rx_pkts(ptdls_sta); + + if ( ptdls_sta->timer_flag == 2 ) + rtw_tdls_cmd(padapter, ptdls_sta->hwaddr, TDLS_FREE_STA); + else + { + _enter_critical_bh(&ptdlsinfo->hdl_lock, &irqL); + ptdls_sta->timer_flag = 0; + _exit_critical_bh(&ptdlsinfo->hdl_lock, &irqL); + } + +} + +void _tdls_alive_timer_phase2_hdl(void *FunctionContext) +{ + _irqL irqL; + struct sta_info *ptdls_sta = (struct sta_info *)FunctionContext; + _adapter *padapter = ptdls_sta->padapter; + struct tdls_info *ptdlsinfo = &padapter->tdlsinfo; + + _enter_critical_bh(&(ptdlsinfo->hdl_lock), &irqL); + ptdls_sta->timer_flag = 1; + _exit_critical_bh(&ptdlsinfo->hdl_lock, &irqL); + + if( (ptdls_sta->tdls_sta_state & TDLS_ALIVE_STATE) && + (sta_last_rx_pkts(ptdls_sta) + 3 <= sta_rx_pkts(ptdls_sta)) ) + { + DBG_871X("TDLS STA ALIVE, ptdls_sta->sta_stats.last_rx_pkts:%llu, ptdls_sta->sta_stats.rx_pkts:%llu\n", + sta_last_rx_pkts(ptdls_sta), sta_rx_pkts(ptdls_sta)); + + ptdls_sta->alive_count = 0; + rtw_tdls_cmd(padapter, ptdls_sta->hwaddr, TDLS_CKALV_PH2); + } + else + { + if( !(ptdls_sta->tdls_sta_state & TDLS_ALIVE_STATE) ) + DBG_871X("TDLS STA TOO FAR\n"); + if( !(sta_last_rx_pkts(ptdls_sta) + 3 <= sta_rx_pkts(ptdls_sta))) + DBG_871X("TDLS LINK WITH LOW TRAFFIC, ptdls_sta->sta_stats.last_rx_pkts:%llu, ptdls_sta->sta_stats.rx_pkts:%llu\n", + sta_last_rx_pkts(ptdls_sta), sta_rx_pkts(ptdls_sta)); + + ptdls_sta->alive_count++; + if( ptdls_sta->alive_count == TDLS_ALIVE_COUNT ) + { + ptdls_sta->stat_code = _RSON_TDLS_TEAR_TOOFAR_; + issue_tdls_teardown(padapter, ptdls_sta->hwaddr); + } + else + { + rtw_tdls_cmd(padapter, ptdls_sta->hwaddr, TDLS_CKALV_PH2); + } + } + + if ( ptdls_sta->timer_flag == 2 ) + rtw_tdls_cmd(padapter, ptdls_sta->hwaddr, TDLS_FREE_STA); + else + { + _enter_critical_bh(&(ptdlsinfo->hdl_lock), &irqL); + ptdls_sta->timer_flag = 0; + _exit_critical_bh(&ptdlsinfo->hdl_lock, &irqL); +} + +} + +void init_tdls_alive_timer(_adapter *padapter, struct sta_info *psta) +{ + psta->padapter=padapter; + _init_timer(&psta->alive_timer1, padapter->pnetdev, _tdls_alive_timer_phase1_hdl, psta); + _init_timer(&psta->alive_timer2, padapter->pnetdev, _tdls_alive_timer_phase2_hdl, psta); +} + +int update_sgi_tdls(_adapter *padapter, struct sta_info *psta) +{ + struct ht_priv *psta_ht = NULL; + psta_ht = &psta->htpriv; + + if(psta_ht->ht_option) + { + return psta_ht->sgi; + } + else + return _FALSE; +} + +u32 update_mask_tdls(_adapter *padapter, struct sta_info *psta) +{ + int i; + u8 rf_type, id; + unsigned char sta_band = 0; + unsigned char limit; + unsigned int tx_ra_bitmap=0; + struct ht_priv *psta_ht = NULL; + struct mlme_priv *pmlmepriv = &(padapter->mlmepriv); + WLAN_BSSID_EX *pcur_network = (WLAN_BSSID_EX *)&pmlmepriv->cur_network.network; + + psta_ht = &psta->htpriv; + //b/g mode ra_bitmap + for (i=0; ibssrateset); i++) + { + if (psta->bssrateset[i]) + tx_ra_bitmap |= rtw_get_bit_value_from_ieee_value(psta->bssrateset[i]&0x7f); + } + + //n mode ra_bitmap + if(psta_ht->ht_option) + { + rtw_hal_get_hwreg(padapter, HW_VAR_RF_TYPE, (u8 *)(&rf_type)); + if(rf_type == RF_2T2R) + limit=16;// 2R + else + limit=8;// 1R + + for (i=0; iht_cap.supp_mcs_set[i/8] & BIT(i%8)) + tx_ra_bitmap |= BIT(i+12); + } + } + + if ( pcur_network->Configuration.DSConfig > 14 ) { + // 5G band + if (tx_ra_bitmap & 0xffff000) + sta_band |= WIRELESS_11_5N | WIRELESS_11A; + else + sta_band |= WIRELESS_11A; + } else { + if (tx_ra_bitmap & 0xffff000) + sta_band |= WIRELESS_11_24N | WIRELESS_11G | WIRELESS_11B; + else if (tx_ra_bitmap & 0xff0) + sta_band |= WIRELESS_11G |WIRELESS_11B; + else + sta_band |= WIRELESS_11B; + } + + id = networktype_to_raid(sta_band); + tx_ra_bitmap |= ((id<<28)&0xf0000000); + return tx_ra_bitmap; +} + +#endif //CONFIG_TDLS --- linux-raspi2-4.2.0.orig/drivers/net/wireless/rtl8192cu/core/rtw_wlan_util.c +++ linux-raspi2-4.2.0/drivers/net/wireless/rtl8192cu/core/rtw_wlan_util.c @@ -0,0 +1,2304 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved. + * + * 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 + * published by the Free Software Foundation. + * + * 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 Street, Fifth Floor, Boston, MA 02110, USA + * + * + ******************************************************************************/ +#define _RTW_WLAN_UTIL_C_ + +#include +#include +#include +#include + + +unsigned char ARTHEROS_OUI1[] = {0x00, 0x03, 0x7f}; +unsigned char ARTHEROS_OUI2[] = {0x00, 0x13, 0x74}; + +unsigned char BROADCOM_OUI1[] = {0x00, 0x10, 0x18}; +unsigned char BROADCOM_OUI2[] = {0x00, 0x0a, 0xf7}; +unsigned char BROADCOM_OUI3[] = {0x00, 0x05, 0xb5}; + +unsigned char CISCO_OUI[] = {0x00, 0x40, 0x96}; +unsigned char MARVELL_OUI[] = {0x00, 0x50, 0x43}; +unsigned char RALINK_OUI[] = {0x00, 0x0c, 0x43}; +unsigned char REALTEK_OUI[] = {0x00, 0xe0, 0x4c}; +unsigned char AIRGOCAP_OUI[] = {0x00, 0x0a, 0xf5}; + +unsigned char REALTEK_96B_IE[] = {0x00, 0xe0, 0x4c, 0x02, 0x01, 0x20}; + +extern unsigned char MCS_rate_2R[16]; +#ifdef CONFIG_DISABLE_MCS13TO15 +extern unsigned char MCS_rate_2R_MCS13TO15_OFF[16]; +#endif //CONFIG_DISABLE_MCS13TO15 +extern unsigned char MCS_rate_1R[16]; +extern unsigned char RTW_WPA_OUI[]; +extern unsigned char WPA_TKIP_CIPHER[4]; +extern unsigned char RSN_TKIP_CIPHER[4]; + +#define R2T_PHY_DELAY (0) + +//#define WAIT_FOR_BCN_TO_MIN (3000) +#define WAIT_FOR_BCN_TO_MIN (6000) +#define WAIT_FOR_BCN_TO_MAX (20000) + +static u8 rtw_basic_rate_cck[4] = { + IEEE80211_CCK_RATE_1MB|IEEE80211_BASIC_RATE_MASK, IEEE80211_CCK_RATE_2MB|IEEE80211_BASIC_RATE_MASK, + IEEE80211_CCK_RATE_5MB|IEEE80211_BASIC_RATE_MASK, IEEE80211_CCK_RATE_11MB|IEEE80211_BASIC_RATE_MASK +}; + +static u8 rtw_basic_rate_ofdm[3] = { + IEEE80211_OFDM_RATE_6MB|IEEE80211_BASIC_RATE_MASK, IEEE80211_OFDM_RATE_12MB|IEEE80211_BASIC_RATE_MASK, + IEEE80211_OFDM_RATE_24MB|IEEE80211_BASIC_RATE_MASK +}; + +static u8 rtw_basic_rate_mix[7] = { + IEEE80211_CCK_RATE_1MB|IEEE80211_BASIC_RATE_MASK, IEEE80211_CCK_RATE_2MB|IEEE80211_BASIC_RATE_MASK, + IEEE80211_CCK_RATE_5MB|IEEE80211_BASIC_RATE_MASK, IEEE80211_CCK_RATE_11MB|IEEE80211_BASIC_RATE_MASK, + IEEE80211_OFDM_RATE_6MB|IEEE80211_BASIC_RATE_MASK, IEEE80211_OFDM_RATE_12MB|IEEE80211_BASIC_RATE_MASK, + IEEE80211_OFDM_RATE_24MB|IEEE80211_BASIC_RATE_MASK +}; + + +int cckrates_included(unsigned char *rate, int ratelen) +{ + int i; + + for(i = 0; i < ratelen; i++) + { + if ( (((rate[i]) & 0x7f) == 2) || (((rate[i]) & 0x7f) == 4) || + (((rate[i]) & 0x7f) == 11) || (((rate[i]) & 0x7f) == 22) ) + return _TRUE; + } + + return _FALSE; + +} + +int cckratesonly_included(unsigned char *rate, int ratelen) +{ + int i; + + for(i = 0; i < ratelen; i++) + { + if ( (((rate[i]) & 0x7f) != 2) && (((rate[i]) & 0x7f) != 4) && + (((rate[i]) & 0x7f) != 11) && (((rate[i]) & 0x7f) != 22) ) + return _FALSE; + } + + return _TRUE; +} + +unsigned char networktype_to_raid(unsigned char network_type) +{ + unsigned char raid; + + switch(network_type) + { + case WIRELESS_11B: + raid = 6; + break; + case WIRELESS_11A: + case WIRELESS_11G: + raid = 5; + break; + case WIRELESS_11BG: + raid = 4; + break; + case WIRELESS_11_24N: + case WIRELESS_11_5N: + raid = 3; + break; + case WIRELESS_11A_5N: + case WIRELESS_11G_24N: + raid = 1; + break; + case WIRELESS_11BG_24N: + raid = 0; + break; + default: + raid = 4; + break; + + } + + return raid; + +} + +int judge_network_type(_adapter *padapter, unsigned char *rate, int ratelen) +{ + int network_type = 0; + struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; + struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info); + + + if(pmlmeext->cur_channel > 14) + { + if (pmlmeinfo->HT_enable) + { + network_type = WIRELESS_11_5N; + } + + network_type |= WIRELESS_11A; + } + else + { + if (pmlmeinfo->HT_enable) + { + network_type = WIRELESS_11_24N; + } + + if ((cckratesonly_included(rate, ratelen)) == _TRUE) + { + network_type |= WIRELESS_11B; + } + else if((cckrates_included(rate, ratelen)) == _TRUE) + { + network_type |= WIRELESS_11BG; + } + else + { + network_type |= WIRELESS_11G; + } + } + + return network_type; +} + +unsigned char ratetbl_val_2wifirate(unsigned char rate); +unsigned char ratetbl_val_2wifirate(unsigned char rate) +{ + unsigned char val = 0; + + switch (rate & 0x7f) + { + case 0: + val = IEEE80211_CCK_RATE_1MB; + break; + + case 1: + val = IEEE80211_CCK_RATE_2MB; + break; + + case 2: + val = IEEE80211_CCK_RATE_5MB; + break; + + case 3: + val = IEEE80211_CCK_RATE_11MB; + break; + + case 4: + val = IEEE80211_OFDM_RATE_6MB; + break; + + case 5: + val = IEEE80211_OFDM_RATE_9MB; + break; + + case 6: + val = IEEE80211_OFDM_RATE_12MB; + break; + + case 7: + val = IEEE80211_OFDM_RATE_18MB; + break; + + case 8: + val = IEEE80211_OFDM_RATE_24MB; + break; + + case 9: + val = IEEE80211_OFDM_RATE_36MB; + break; + + case 10: + val = IEEE80211_OFDM_RATE_48MB; + break; + + case 11: + val = IEEE80211_OFDM_RATE_54MB; + break; + + } + + return val; + +} + +int is_basicrate(_adapter *padapter, unsigned char rate); +int is_basicrate(_adapter *padapter, unsigned char rate) +{ + int i; + unsigned char val; + struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; + + for(i = 0; i < NumRates; i++) + { + val = pmlmeext->basicrate[i]; + + if ((val != 0xff) && (val != 0xfe)) + { + if (rate == ratetbl_val_2wifirate(val)) + { + return _TRUE; + } + } + } + + return _FALSE; +} + +unsigned int ratetbl2rateset(_adapter *padapter, unsigned char *rateset); +unsigned int ratetbl2rateset(_adapter *padapter, unsigned char *rateset) +{ + int i; + unsigned char rate; + unsigned int len = 0; + struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; + + for (i = 0; i < NumRates; i++) + { + rate = pmlmeext->datarate[i]; + + switch (rate) + { + case 0xff: + return len; + + case 0xfe: + continue; + + default: + rate = ratetbl_val_2wifirate(rate); + + if (is_basicrate(padapter, rate) == _TRUE) + { + rate |= IEEE80211_BASIC_RATE_MASK; + } + + rateset[len] = rate; + len++; + break; + } + } + return len; +} + + +void get_rate_set(_adapter *padapter, unsigned char *pbssrate, int *bssrate_len) +{ + unsigned char supportedrates[NumRates]; + + _rtw_memset(supportedrates, 0, NumRates); + *bssrate_len = ratetbl2rateset(padapter, supportedrates); + _rtw_memcpy(pbssrate, supportedrates, *bssrate_len); +} + +void UpdateBrateTbl( + IN PADAPTER Adapter, + IN u8 *mBratesOS +) +{ + u8 i; + u8 rate; + + // 1M, 2M, 5.5M, 11M, 6M, 12M, 24M are mandatory. + for(i=0;ipbuddy_adapter; + if(pbuddy_adapter) + rtw_hal_set_hwreg(pbuddy_adapter, HW_VAR_DM_FUNC_OP, (u8 *)(&bSaveFlag)); +#endif + + rtw_hal_set_hwreg(padapter, HW_VAR_DM_FUNC_OP, (u8 *)(&bSaveFlag)); + +} + +void Restore_DM_Func_Flag(_adapter *padapter) +{ + u8 bSaveFlag = _FALSE; +#ifdef CONFIG_CONCURRENT_MODE + _adapter *pbuddy_adapter = padapter->pbuddy_adapter; + if(pbuddy_adapter) + rtw_hal_set_hwreg(pbuddy_adapter, HW_VAR_DM_FUNC_OP, (u8 *)(&bSaveFlag)); +#endif + rtw_hal_set_hwreg(padapter, HW_VAR_DM_FUNC_OP, (u8 *)(&bSaveFlag)); +} + +void Switch_DM_Func(_adapter *padapter, u8 mode, u8 enable) +{ +#ifdef CONFIG_CONCURRENT_MODE + _adapter *pbuddy_adapter = padapter->pbuddy_adapter; +#endif + + if(enable == _TRUE) + { +#ifdef CONFIG_CONCURRENT_MODE + if(pbuddy_adapter) + rtw_hal_set_hwreg(pbuddy_adapter, HW_VAR_DM_FUNC_SET, (u8 *)(&mode)); +#endif + rtw_hal_set_hwreg(padapter, HW_VAR_DM_FUNC_SET, (u8 *)(&mode)); + } + else + { +#ifdef CONFIG_CONCURRENT_MODE + if(pbuddy_adapter) + rtw_hal_set_hwreg(pbuddy_adapter, HW_VAR_DM_FUNC_CLR, (u8 *)(&mode)); +#endif + rtw_hal_set_hwreg(padapter, HW_VAR_DM_FUNC_CLR, (u8 *)(&mode)); + } + +#if 0 + u8 val8; + + val8 = rtw_read8(padapter, FW_DYNAMIC_FUN_SWITCH); + + if(enable == _TRUE) + { + rtw_write8(padapter, FW_DYNAMIC_FUN_SWITCH, (val8 | mode)); + } + else + { + rtw_write8(padapter, FW_DYNAMIC_FUN_SWITCH, (val8 & mode)); + } +#endif + +} + +static void Set_NETYPE1_MSR(_adapter *padapter, u8 type) +{ + rtw_hal_set_hwreg(padapter, HW_VAR_MEDIA_STATUS1, (u8 *)(&type)); +} + +static void Set_NETYPE0_MSR(_adapter *padapter, u8 type) +{ + rtw_hal_set_hwreg(padapter, HW_VAR_MEDIA_STATUS, (u8 *)(&type)); +} + +void Set_MSR(_adapter *padapter, u8 type) +{ +#ifdef CONFIG_CONCURRENT_MODE + if(padapter->iface_type == IFACE_PORT1) + { + Set_NETYPE1_MSR(padapter, type); + } + else +#endif + { + Set_NETYPE0_MSR(padapter, type); + } +} + +inline u8 rtw_get_oper_ch(_adapter *adapter) +{ + return adapter_to_dvobj(adapter)->oper_channel; +} + +inline void rtw_set_oper_ch(_adapter *adapter, u8 ch) +{ + if (adapter_to_dvobj(adapter)->oper_channel != ch) + adapter_to_dvobj(adapter)->on_oper_ch_time = rtw_get_current_time(); + + adapter_to_dvobj(adapter)->oper_channel = ch; +} + +inline u8 rtw_get_oper_bw(_adapter *adapter) +{ + return adapter_to_dvobj(adapter)->oper_bwmode; +} + +inline void rtw_set_oper_bw(_adapter *adapter, u8 bw) +{ + adapter_to_dvobj(adapter)->oper_bwmode = bw; +} + +inline u8 rtw_get_oper_choffset(_adapter *adapter) +{ + return adapter_to_dvobj(adapter)->oper_ch_offset; +} + +inline void rtw_set_oper_choffset(_adapter *adapter, u8 offset) +{ + adapter_to_dvobj(adapter)->oper_ch_offset = offset; +} + +inline u32 rtw_get_on_oper_ch_time(_adapter *adapter) +{ + return adapter_to_dvobj(adapter)->on_oper_ch_time; +} + +inline u32 rtw_get_on_cur_ch_time(_adapter *adapter) +{ + if (adapter->mlmeextpriv.cur_channel == adapter_to_dvobj(adapter)->oper_channel) + return adapter_to_dvobj(adapter)->on_oper_ch_time; + else + return 0; +} + +void SelectChannel(_adapter *padapter, unsigned char channel) +{ + struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; + +#ifdef CONFIG_DUALMAC_CONCURRENT + //saved channel info + rtw_set_oper_ch(padapter, channel); + dc_SelectChannel(padapter, channel); +#else //CONFIG_DUALMAC_CONCURRENT + + _enter_critical_mutex(&(adapter_to_dvobj(padapter)->setch_mutex), NULL); + + //saved channel info + rtw_set_oper_ch(padapter, channel); + + rtw_hal_set_chan(padapter, channel); + + _exit_critical_mutex(&(adapter_to_dvobj(padapter)->setch_mutex), NULL); + +#endif // CONFIG_DUALMAC_CONCURRENT +} + +void SetBWMode(_adapter *padapter, unsigned short bwmode, unsigned char channel_offset) +{ + struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; + +#ifdef CONFIG_DUALMAC_CONCURRENT + //saved bw info + rtw_set_oper_bw(padapter, bwmode); + rtw_set_oper_choffset(padapter, channel_offset); + dc_SetBWMode(padapter, bwmode, channel_offset); +#else //CONFIG_DUALMAC_CONCURRENT + + _enter_critical_mutex(&(adapter_to_dvobj(padapter)->setbw_mutex), NULL); + + //saved bw info + rtw_set_oper_bw(padapter, bwmode); + rtw_set_oper_choffset(padapter, channel_offset); + + rtw_hal_set_bwmode(padapter, (HT_CHANNEL_WIDTH)bwmode, channel_offset); + + _exit_critical_mutex(&(adapter_to_dvobj(padapter)->setbw_mutex), NULL); + +#endif // CONFIG_DUALMAC_CONCURRENT +} + +void set_channel_bwmode(_adapter *padapter, unsigned char channel, unsigned char channel_offset, unsigned short bwmode) +{ + u8 center_ch; + struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; + + if ( padapter->bNotifyChannelChange ) + { + DBG_871X( "[%s] ch = %d, offset = %d, bwmode = %d\n", __FUNCTION__, channel, channel_offset, bwmode ); + } + + if((bwmode == HT_CHANNEL_WIDTH_20)||(channel_offset == HAL_PRIME_CHNL_OFFSET_DONT_CARE)) + { + //SelectChannel(padapter, channel); + center_ch = channel; + } + else + { + //switch to the proper channel + if (channel_offset == HAL_PRIME_CHNL_OFFSET_LOWER) + { + //SelectChannel(padapter, channel + 2); + center_ch = channel + 2; + } + else + { + //SelectChannel(padapter, channel - 2); + center_ch = channel - 2; + } + } + + //set Channel , must be independant for correct co_ch value/ +#ifdef CONFIG_DUALMAC_CONCURRENT + //saved channel/bw info + rtw_set_oper_ch(padapter, channel); + rtw_set_oper_bw(padapter, bwmode); + rtw_set_oper_choffset(padapter, channel_offset); + dc_SelectChannel(padapter, center_ch);// set center channel +#else //CONFIG_DUALMAC_CONCURRENT + + _enter_critical_mutex(&(adapter_to_dvobj(padapter)->setch_mutex), NULL); + + //saved channel/bw info + rtw_set_oper_ch(padapter, channel); + rtw_set_oper_bw(padapter, bwmode); + rtw_set_oper_choffset(padapter, channel_offset); + + rtw_hal_set_chan(padapter, center_ch); + + _exit_critical_mutex(&(adapter_to_dvobj(padapter)->setch_mutex), NULL); + +#endif // CONFIG_DUALMAC_CONCURRENT + + + //set BandWidth + SetBWMode(padapter, bwmode, channel_offset); + +} + +int get_bsstype(unsigned short capability) +{ + if (capability & BIT(0)) + { + return WIFI_FW_AP_STATE; + } + else if (capability & BIT(1)) + { + return WIFI_FW_ADHOC_STATE; + } + else + { + return 0; + } +} + +__inline u8 *get_my_bssid(WLAN_BSSID_EX *pnetwork) +{ + return (pnetwork->MacAddress); +} + +u16 get_beacon_interval(WLAN_BSSID_EX *bss) +{ + unsigned short val; + _rtw_memcpy((unsigned char *)&val, rtw_get_beacon_interval_from_ie(bss->IEs), 2); + + return le16_to_cpu(val); + +} + +int is_client_associated_to_ap(_adapter *padapter) +{ + struct mlme_ext_priv *pmlmeext; + struct mlme_ext_info *pmlmeinfo; + + if(!padapter) + return _FAIL; + + pmlmeext = &padapter->mlmeextpriv; + pmlmeinfo = &(pmlmeext->mlmext_info); + + if ((pmlmeinfo->state & WIFI_FW_ASSOC_SUCCESS) && ((pmlmeinfo->state&0x03) == WIFI_FW_STATION_STATE)) + { + return _TRUE; + } + else + { + return _FAIL; + } +} + +int is_client_associated_to_ibss(_adapter *padapter) +{ + struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; + struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info); + + if ((pmlmeinfo->state & WIFI_FW_ASSOC_SUCCESS) && ((pmlmeinfo->state&0x03) == WIFI_FW_ADHOC_STATE)) + { + return _TRUE; + } + else + { + return _FAIL; + } +} + +int is_IBSS_empty(_adapter *padapter) +{ + unsigned int i; + struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; + struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info); + + for (i = IBSS_START_MAC_ID; i < NUM_STA; i++) + { + if (pmlmeinfo->FW_sta_info[i].status == 1) + { + return _FAIL; + } + } + + return _TRUE; + +} + +unsigned int decide_wait_for_beacon_timeout(unsigned int bcn_interval) +{ + if ((bcn_interval << 2) < WAIT_FOR_BCN_TO_MIN) + { + return WAIT_FOR_BCN_TO_MIN; + } + else if ((bcn_interval << 2) > WAIT_FOR_BCN_TO_MAX) + { + return WAIT_FOR_BCN_TO_MAX; + } + else + { + return ((bcn_interval << 2)); + } +} + +void CAM_empty_entry( + PADAPTER Adapter, + u8 ucIndex +) +{ + rtw_hal_set_hwreg(Adapter, HW_VAR_CAM_EMPTY_ENTRY, (u8 *)(&ucIndex)); +} + +void invalidate_cam_all(_adapter *padapter) +{ + rtw_hal_set_hwreg(padapter, HW_VAR_CAM_INVALID_ALL, 0); +} +#if 0 +static u32 _ReadCAM(_adapter *padapter ,u32 addr) +{ + u32 count = 0, cmd; + cmd = CAM_POLLINIG |addr ; + rtw_write32(padapter, RWCAM, cmd); + + do{ + if(0 == (rtw_read32(padapter,REG_CAMCMD) & CAM_POLLINIG)){ + break; + } + }while(count++ < 100); + + return rtw_read32(padapter,REG_CAMREAD); +} +void read_cam(_adapter *padapter ,u8 entry) +{ + u32 j,count = 0, addr, cmd; + addr = entry << 3; + + printk("********* DUMP CAM Entry_#%02d***************\n",entry); + for (j = 0; j < 6; j++) + { + cmd = _ReadCAM(padapter ,addr+j); + printk("offset:0x%02x => 0x%08x \n",addr+j,cmd); + } + printk("*********************************\n"); +} +#endif + +void write_cam(_adapter *padapter, u8 entry, u16 ctrl, u8 *mac, u8 *key) +{ + unsigned int i, val, addr; + //unsigned int cmd; + int j; + u32 cam_val[2]; + + addr = entry << 3; + + for (j = 5; j >= 0; j--) + { + switch (j) + { + case 0: + val = (ctrl | (mac[0] << 16) | (mac[1] << 24) ); + break; + + case 1: + val = (mac[2] | ( mac[3] << 8) | (mac[4] << 16) | (mac[5] << 24)); + break; + + default: + i = (j - 2) << 2; + val = (key[i] | (key[i+1] << 8) | (key[i+2] << 16) | (key[i+3] << 24)); + break; + + } + + cam_val[0] = val; + cam_val[1] = addr + (unsigned int)j; + + rtw_hal_set_hwreg(padapter, HW_VAR_CAM_WRITE, (u8 *)cam_val); + + //rtw_write32(padapter, WCAMI, val); + + //cmd = CAM_POLLINIG | CAM_WRITE | (addr + j); + //rtw_write32(padapter, RWCAM, cmd); + + //DBG_871X("%s=> cam write: %x, %x\n",__FUNCTION__, cmd, val); + + } + +} + +void clear_cam_entry(_adapter *padapter, u8 entry) +{ +#if 0 + u32 addr, val=0; + u32 cam_val[2]; + + addr = entry << 3; + + + cam_val[0] = val; + cam_val[1] = addr + (unsigned int)0; + + rtw_hal_set_hwreg(padapter, HW_VAR_CAM_WRITE, (u8 *)cam_val); + + + + cam_val[0] = val; + cam_val[1] = addr + (unsigned int)1; + + rtw_hal_set_hwreg(padapter, HW_VAR_CAM_WRITE, (u8 *)cam_val); +#else + + unsigned char null_sta[] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; + + unsigned char null_key[] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,0x00, 0x00, 0x00, 0x00,0x00, 0x00, 0x00, 0x00}; + + write_cam(padapter, entry, 0, null_sta, null_key); + +#endif +} + +int allocate_fw_sta_entry(_adapter *padapter) +{ + unsigned int mac_id; + struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; + struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info); + + for (mac_id = IBSS_START_MAC_ID; mac_id < NUM_STA; mac_id++) + { + if (pmlmeinfo->FW_sta_info[mac_id].status == 0) + { + pmlmeinfo->FW_sta_info[mac_id].status = 1; + pmlmeinfo->FW_sta_info[mac_id].retry = 0; + break; + } + } + + return mac_id; +} + +void flush_all_cam_entry(_adapter *padapter) +{ + struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; + struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info); + +#ifdef CONFIG_CONCURRENT_MODE + + struct mlme_priv *pmlmepriv = &(padapter->mlmepriv); + + //if(check_buddy_mlmeinfo_state(padapter, _HW_STATE_NOLINK_)) + if(check_buddy_fwstate(padapter, _FW_LINKED) == _FALSE) + { + rtw_hal_set_hwreg(padapter, HW_VAR_CAM_INVALID_ALL, 0); + } + else + { + if(check_fwstate(pmlmepriv, WIFI_STATION_STATE)) + { + struct sta_priv *pstapriv = &padapter->stapriv; + struct sta_info *psta; + u8 cam_id;//cam_entry + + psta = rtw_get_stainfo(pstapriv, pmlmeinfo->network.MacAddress); + if(psta) { + if(psta->state & WIFI_AP_STATE) + {} //clear cam when ap free per sta_info + else { + if(psta->mac_id==2) + cam_id = 5; + else + cam_id = 4; + } + //clear_cam_entry(padapter, cam_id); + rtw_clearstakey_cmd(padapter, (u8*)psta, cam_id, _FALSE); + } + } + else if(check_fwstate(pmlmepriv, WIFI_AP_STATE) == _TRUE) + { + //clear cam when ap free per sta_info + } + } +#else //CONFIG_CONCURRENT_MODE + + rtw_hal_set_hwreg(padapter, HW_VAR_CAM_INVALID_ALL, 0); + +#endif //CONFIG_CONCURRENT_MODE + + _rtw_memset((u8 *)(pmlmeinfo->FW_sta_info), 0, sizeof(pmlmeinfo->FW_sta_info)); + +} + +#if defined(CONFIG_P2P) && defined(CONFIG_WFD) +int WFD_info_handler(_adapter *padapter, PNDIS_802_11_VARIABLE_IEs pIE) +{ + struct registry_priv *pregpriv = &padapter->registrypriv; + struct mlme_priv *pmlmepriv = &(padapter->mlmepriv); + struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; + struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info); + struct wifidirect_info *pwdinfo; + u8 wfd_ie[ 128 ] = { 0x00 }; + u32 wfd_ielen = 0; + + + pwdinfo = &padapter->wdinfo; + if ( rtw_get_wfd_ie( ( u8* ) pIE, pIE->Length, wfd_ie, &wfd_ielen ) ) + { + u8 attr_content[ 10 ] = { 0x00 }; + u32 attr_contentlen = 0; + + printk( "[%s] Found WFD IE\n", __FUNCTION__ ); + rtw_get_wfd_attr_content( wfd_ie, wfd_ielen, WFD_ATTR_DEVICE_INFO, attr_content, &attr_contentlen); + if ( attr_contentlen ) + { + pwdinfo->wfd_info->peer_rtsp_ctrlport = RTW_GET_BE16( attr_content + 2 ); + DBG_8192C( "[%s] Peer PORT NUM = %d\n", __FUNCTION__, pwdinfo->wfd_info->peer_rtsp_ctrlport ); + return( _TRUE ); + } + } + else + { + printk( "[%s] NO WFD IE\n", __FUNCTION__ ); + + } + return( _FAIL ); +} +#endif + +int WMM_param_handler(_adapter *padapter, PNDIS_802_11_VARIABLE_IEs pIE) +{ + //struct registry_priv *pregpriv = &padapter->registrypriv; + struct mlme_priv *pmlmepriv = &(padapter->mlmepriv); + struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; + struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info); + + if(pmlmepriv->qospriv.qos_option==0) + { + pmlmeinfo->WMM_enable = 0; + return _FAIL; + } + + pmlmeinfo->WMM_enable = 1; + _rtw_memcpy(&(pmlmeinfo->WMM_param), (pIE->data + 6), sizeof(struct WMM_para_element)); + return _TRUE; + + /*if (pregpriv->wifi_spec == 1) + { + if (pmlmeinfo->WMM_enable == 1) + { + //todo: compare the parameter set count & decide wheher to update or not + return _FAIL; + } + else + { + pmlmeinfo->WMM_enable = 1; + _rtw_rtw_memcpy(&(pmlmeinfo->WMM_param), (pIE->data + 6), sizeof(struct WMM_para_element)); + return _TRUE; + } + } + else + { + pmlmeinfo->WMM_enable = 0; + return _FAIL; + }*/ + +} + +void WMMOnAssocRsp(_adapter *padapter) +{ + u8 ACI, ACM, AIFS, ECWMin, ECWMax, aSifsTime; + u8 acm_mask; + u16 TXOP; + u32 acParm, i; + struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; + struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info); + + if (pmlmeinfo->WMM_enable == 0) + { + padapter->mlmepriv.acm_mask = 0; + return; + } + + acm_mask = 0; + + if( pmlmeext->cur_wireless_mode == WIRELESS_11B) + aSifsTime = 10; + else + aSifsTime = 16; + + for (i = 0; i < 4; i++) + { + ACI = (pmlmeinfo->WMM_param.ac_param[i].ACI_AIFSN >> 5) & 0x03; + ACM = (pmlmeinfo->WMM_param.ac_param[i].ACI_AIFSN >> 4) & 0x01; + + //AIFS = AIFSN * slot time + SIFS - r2t phy delay + AIFS = (pmlmeinfo->WMM_param.ac_param[i].ACI_AIFSN & 0x0f) * pmlmeinfo->slotTime + aSifsTime; + + ECWMin = (pmlmeinfo->WMM_param.ac_param[i].CW & 0x0f); + ECWMax = (pmlmeinfo->WMM_param.ac_param[i].CW & 0xf0) >> 4; + TXOP = le16_to_cpu(pmlmeinfo->WMM_param.ac_param[i].TXOP_limit); + + acParm = AIFS | (ECWMin << 8) | (ECWMax << 12) | (TXOP << 16); + + switch (ACI) + { + case 0x0: + rtw_hal_set_hwreg(padapter, HW_VAR_AC_PARAM_BE, (u8 *)(&acParm)); + acm_mask |= (ACM? BIT(1):0); + break; + + case 0x1: + rtw_hal_set_hwreg(padapter, HW_VAR_AC_PARAM_BK, (u8 *)(&acParm)); + //acm_mask |= (ACM? BIT(0):0); + break; + + case 0x2: + rtw_hal_set_hwreg(padapter, HW_VAR_AC_PARAM_VI, (u8 *)(&acParm)); + acm_mask |= (ACM? BIT(2):0); + break; + + case 0x3: + rtw_hal_set_hwreg(padapter, HW_VAR_AC_PARAM_VO, (u8 *)(&acParm)); + acm_mask |= (ACM? BIT(3):0); + break; + } + + DBG_871X("WMM(%x): %x, %x\n", ACI, ACM, acParm); + } + + if(padapter->registrypriv.acm_method == 1) + rtw_hal_set_hwreg(padapter, HW_VAR_ACM_CTRL, (u8 *)(&acm_mask)); + else + padapter->mlmepriv.acm_mask = acm_mask; + + return; +} + +static void bwmode_update_check(_adapter *padapter, PNDIS_802_11_VARIABLE_IEs pIE) +{ + unsigned char new_bwmode; + unsigned char new_ch_offset; + struct HT_info_element *pHT_info; + struct mlme_priv *pmlmepriv = &(padapter->mlmepriv); + struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; + struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info); + struct registry_priv *pregistrypriv = &padapter->registrypriv; + struct ht_priv *phtpriv = &pmlmepriv->htpriv; + u8 cbw40_enable=0; + + if(!pIE) + return; + + if(phtpriv->ht_option == _FALSE) return; + + if(pIE->Length > sizeof(struct HT_info_element)) + return; + + pHT_info = (struct HT_info_element *)pIE->data; + + if (pmlmeext->cur_channel > 14) { + if (pregistrypriv->cbw40_enable & BIT(1)) + cbw40_enable = 1; + } else { + if (pregistrypriv->cbw40_enable & BIT(0)) + cbw40_enable = 1; + } + + if((pHT_info->infos[0] & BIT(2)) && cbw40_enable ) + { + new_bwmode = HT_CHANNEL_WIDTH_40; + + switch (pHT_info->infos[0] & 0x3) + { + case 1: + new_ch_offset = HAL_PRIME_CHNL_OFFSET_LOWER; + break; + + case 3: + new_ch_offset = HAL_PRIME_CHNL_OFFSET_UPPER; + break; + + default: + new_ch_offset = HAL_PRIME_CHNL_OFFSET_DONT_CARE; + break; + } + } + else + { + new_bwmode = HT_CHANNEL_WIDTH_20; + new_ch_offset = HAL_PRIME_CHNL_OFFSET_DONT_CARE; + } + + + if((new_bwmode!= pmlmeext->cur_bwmode) || (new_ch_offset!=pmlmeext->cur_ch_offset)) + { + pmlmeinfo->bwmode_updated = _TRUE; + + pmlmeext->cur_bwmode = new_bwmode; + pmlmeext->cur_ch_offset = new_ch_offset; + + //update HT info also + HT_info_handler(padapter, pIE); + } + else + { + pmlmeinfo->bwmode_updated = _FALSE; + } + + + if(_TRUE == pmlmeinfo->bwmode_updated) + { + struct sta_info *psta; + WLAN_BSSID_EX *cur_network = &(pmlmeinfo->network); + struct sta_priv *pstapriv = &padapter->stapriv; + + //set_channel_bwmode(padapter, pmlmeext->cur_channel, pmlmeext->cur_ch_offset, pmlmeext->cur_bwmode); + + + //update ap's stainfo + psta = rtw_get_stainfo(pstapriv, cur_network->MacAddress); + if(psta) + { + struct ht_priv *phtpriv_sta = &psta->htpriv; + + if(phtpriv_sta->ht_option) + { + // bwmode + phtpriv_sta->bwmode = pmlmeext->cur_bwmode; + phtpriv_sta->ch_offset = pmlmeext->cur_ch_offset; + } + else + { + phtpriv_sta->bwmode = HT_CHANNEL_WIDTH_20; + phtpriv_sta->ch_offset = HAL_PRIME_CHNL_OFFSET_DONT_CARE; + } + + } + + //pmlmeinfo->bwmode_updated = _FALSE;//bwmode_updated done, reset it! + + } + +} + +void HT_caps_handler(_adapter *padapter, PNDIS_802_11_VARIABLE_IEs pIE) +{ + unsigned int i; + u8 rf_type; + u8 max_AMPDU_len, min_MPDU_spacing; + struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; + struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info); + struct mlme_priv *pmlmepriv = &padapter->mlmepriv; + struct ht_priv *phtpriv = &pmlmepriv->htpriv; + struct registry_priv *pregistrypriv = &padapter->registrypriv; + + if(pIE==NULL) return; + + if(phtpriv->ht_option == _FALSE) return; + + pmlmeinfo->HT_caps_enable = 1; + + for (i = 0; i < (pIE->Length); i++) + { + if (i != 2) + { + // Commented by Albert 2010/07/12 + // Got the endian issue here. + pmlmeinfo->HT_caps.u.HT_cap[i] &= (pIE->data[i]); + } + else + { + //modify from fw by Thomas 2010/11/17 + if ((pmlmeinfo->HT_caps.u.HT_cap_element.AMPDU_para & 0x3) > (pIE->data[i] & 0x3)) + { + max_AMPDU_len = (pIE->data[i] & 0x3); + } + else + { + max_AMPDU_len = (pmlmeinfo->HT_caps.u.HT_cap_element.AMPDU_para & 0x3); + } + + if ((pmlmeinfo->HT_caps.u.HT_cap_element.AMPDU_para & 0x1c) > (pIE->data[i] & 0x1c)) + { + min_MPDU_spacing = (pmlmeinfo->HT_caps.u.HT_cap_element.AMPDU_para & 0x1c); + } + else + { + min_MPDU_spacing = (pIE->data[i] & 0x1c); + } + + pmlmeinfo->HT_caps.u.HT_cap_element.AMPDU_para = max_AMPDU_len | min_MPDU_spacing; + } + } + + // Commented by Albert 2010/07/12 + // Have to handle the endian issue after copying. + // HT_ext_caps didn't be used yet. + pmlmeinfo->HT_caps.u.HT_cap_element.HT_caps_info = le16_to_cpu( pmlmeinfo->HT_caps.u.HT_cap_element.HT_caps_info ); + pmlmeinfo->HT_caps.u.HT_cap_element.HT_ext_caps = le16_to_cpu( pmlmeinfo->HT_caps.u.HT_cap_element.HT_ext_caps ); + + rtw_hal_get_hwreg(padapter, HW_VAR_RF_TYPE, (u8 *)(&rf_type)); + + //update the MCS rates + for (i = 0; i < 16; i++) + { + if((rf_type == RF_1T1R) || (rf_type == RF_1T2R)) + { + pmlmeinfo->HT_caps.u.HT_cap_element.MCS_rate[i] &= MCS_rate_1R[i]; + } + else + { + #ifdef CONFIG_DISABLE_MCS13TO15 + if(pmlmeext->cur_bwmode == HT_CHANNEL_WIDTH_40 && (pregistrypriv->wifi_spec!=1)) + pmlmeinfo->HT_caps.u.HT_cap_element.MCS_rate[i] &= MCS_rate_2R_MCS13TO15_OFF[i]; + else + pmlmeinfo->HT_caps.u.HT_cap_element.MCS_rate[i] &= MCS_rate_2R[i]; + #else + pmlmeinfo->HT_caps.u.HT_cap_element.MCS_rate[i] &= MCS_rate_2R[i]; + #endif //CONFIG_DISABLE_MCS13TO15 + } + #ifdef RTL8192C_RECONFIG_TO_1T1R + { + pmlmeinfo->HT_caps.u.HT_cap_element.MCS_rate[i] &= MCS_rate_1R[i]; + } + #endif + + if(pregistrypriv->special_rf_path) + pmlmeinfo->HT_caps.u.HT_cap_element.MCS_rate[i] &= MCS_rate_1R[i]; + + } + + return; +} + +void HT_info_handler(_adapter *padapter, PNDIS_802_11_VARIABLE_IEs pIE) +{ + struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; + struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info); + struct mlme_priv *pmlmepriv = &padapter->mlmepriv; + struct ht_priv *phtpriv = &pmlmepriv->htpriv; + + if(pIE==NULL) return; + + if(phtpriv->ht_option == _FALSE) return; + + + if(pIE->Length > sizeof(struct HT_info_element)) + return; + + pmlmeinfo->HT_info_enable = 1; + _rtw_memcpy(&(pmlmeinfo->HT_info), pIE->data, pIE->Length); + + return; +} + +void HTOnAssocRsp(_adapter *padapter) +{ + unsigned char max_AMPDU_len; + unsigned char min_MPDU_spacing; + //struct registry_priv *pregpriv = &padapter->registrypriv; + struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; + struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info); + + DBG_871X("%s\n", __FUNCTION__); + + if ((pmlmeinfo->HT_info_enable) && (pmlmeinfo->HT_caps_enable)) + { + pmlmeinfo->HT_enable = 1; + } + else + { + pmlmeinfo->HT_enable = 0; + //set_channel_bwmode(padapter, pmlmeext->cur_channel, pmlmeext->cur_ch_offset, pmlmeext->cur_bwmode); + return; + } + + //handle A-MPDU parameter field + /* + AMPDU_para [1:0]:Max AMPDU Len => 0:8k , 1:16k, 2:32k, 3:64k + AMPDU_para [4:2]:Min MPDU Start Spacing + */ + max_AMPDU_len = pmlmeinfo->HT_caps.u.HT_cap_element.AMPDU_para & 0x03; + + min_MPDU_spacing = (pmlmeinfo->HT_caps.u.HT_cap_element.AMPDU_para & 0x1c) >> 2; + + rtw_hal_set_hwreg(padapter, HW_VAR_AMPDU_MIN_SPACE, (u8 *)(&min_MPDU_spacing)); + + rtw_hal_set_hwreg(padapter, HW_VAR_AMPDU_FACTOR, (u8 *)(&max_AMPDU_len)); + +#if 0 //move to rtw_update_ht_cap() + if ((pregpriv->cbw40_enable) && + (pmlmeinfo->HT_caps.u.HT_cap_element.HT_caps_info & BIT(1)) && + (pmlmeinfo->HT_info.infos[0] & BIT(2))) + { + //switch to the 40M Hz mode accoring to the AP + pmlmeext->cur_bwmode = HT_CHANNEL_WIDTH_40; + switch ((pmlmeinfo->HT_info.infos[0] & 0x3)) + { + case HT_EXTCHNL_OFFSET_UPPER: + pmlmeext->cur_ch_offset = HAL_PRIME_CHNL_OFFSET_LOWER; + break; + + case HT_EXTCHNL_OFFSET_LOWER: + pmlmeext->cur_ch_offset = HAL_PRIME_CHNL_OFFSET_UPPER; + break; + + default: + pmlmeext->cur_ch_offset = HAL_PRIME_CHNL_OFFSET_DONT_CARE; + break; + } + + //SelectChannel(padapter, pmlmeext->cur_channel, pmlmeext->cur_ch_offset); + } +#endif + + //set_channel_bwmode(padapter, pmlmeext->cur_channel, pmlmeext->cur_ch_offset, pmlmeext->cur_bwmode); + +#if 0 //move to rtw_update_ht_cap() + // + // Config SM Power Save setting + // + pmlmeinfo->SM_PS = (pmlmeinfo->HT_caps.u.HT_cap_element.HT_caps_info & 0x0C) >> 2; + if(pmlmeinfo->SM_PS == WLAN_HT_CAP_SM_PS_STATIC) + { + /*u8 i; + //update the MCS rates + for (i = 0; i < 16; i++) + { + pmlmeinfo->HT_caps.HT_cap_element.MCS_rate[i] &= MCS_rate_1R[i]; + }*/ + DBG_871X("%s(): WLAN_HT_CAP_SM_PS_STATIC\n",__FUNCTION__); + } + + // + // Config current HT Protection mode. + // + pmlmeinfo->HT_protection = pmlmeinfo->HT_info.infos[1] & 0x3; +#endif + +} + +void ERP_IE_handler(_adapter *padapter, PNDIS_802_11_VARIABLE_IEs pIE) +{ + struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; + struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info); + + if(pIE->Length>1) + return; + + pmlmeinfo->ERP_enable = 1; + _rtw_memcpy(&(pmlmeinfo->ERP_IE), pIE->data, pIE->Length); +} + +void VCS_update(_adapter *padapter, struct sta_info *psta) +{ + struct registry_priv *pregpriv = &padapter->registrypriv; + struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; + struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info); + + switch (pregpriv->vrtl_carrier_sense)/* 0:off 1:on 2:auto */ + { + case 0: //off + psta->rtsen = 0; + psta->cts2self = 0; + break; + + case 1: //on + if (pregpriv->vcs_type == 1) /* 1:RTS/CTS 2:CTS to self */ + { + psta->rtsen = 1; + psta->cts2self = 0; + } + else + { + psta->rtsen = 0; + psta->cts2self = 1; + } + break; + + case 2: //auto + default: + if ((pmlmeinfo->ERP_enable) && (pmlmeinfo->ERP_IE & BIT(1))) + { + if (pregpriv->vcs_type == 1) + { + psta->rtsen = 1; + psta->cts2self = 0; + } + else + { + psta->rtsen = 0; + psta->cts2self = 1; + } + } + else + { + psta->rtsen = 0; + psta->cts2self = 0; + } + break; + } +} + +#ifdef CONFIG_TDLS +int check_ap_tdls_prohibited(u8 *pframe, u8 pkt_len) +{ + u8 tdls_prohibited_bit = 0x40; //bit(38); TDLS_prohibited + + if(pkt_len < 5) + { + return _FALSE; + } + + pframe += 4; + if( (*pframe) & tdls_prohibited_bit ) + return _TRUE; + + return _FALSE; +} +#endif //CONFIG_TDLS + +void update_beacon_info(_adapter *padapter, u8 *pframe, uint pkt_len, struct sta_info *psta) +{ + unsigned int i; + unsigned int len; + PNDIS_802_11_VARIABLE_IEs pIE; + +#ifdef CONFIG_TDLS + struct tdls_info *ptdlsinfo = &padapter->tdlsinfo; + u8 tdls_prohibited[] = { 0x00, 0x00, 0x00, 0x00, 0x10 }; //bit(38): TDLS_prohibited +#endif //CONFIG_TDLS + + len = pkt_len - (_BEACON_IE_OFFSET_ + WLAN_HDR_A3_LEN); + + for (i = 0; i < len;) + { + pIE = (PNDIS_802_11_VARIABLE_IEs)(pframe + (_BEACON_IE_OFFSET_ + WLAN_HDR_A3_LEN) + i); + + switch (pIE->ElementID) + { +#if 0 + case _VENDOR_SPECIFIC_IE_: + //todo: to update WMM paramter set while receiving beacon + if (_rtw_memcmp(pIE->data, WMM_PARA_OUI, 6)) //WMM + { + (WMM_param_handler(padapter, pIE))? WMMOnAssocRsp(padapter): 0; + } + break; +#endif + + case _HT_EXTRA_INFO_IE_: //HT info + //HT_info_handler(padapter, pIE); + bwmode_update_check(padapter, pIE); + break; + + case _ERPINFO_IE_: + ERP_IE_handler(padapter, pIE); + VCS_update(padapter, psta); + break; + +#ifdef CONFIG_TDLS + case _EXT_CAP_IE_: + if( check_ap_tdls_prohibited(pIE->data, pIE->Length) == _TRUE ) + ptdlsinfo->ap_prohibited = _TRUE; + break; +#endif //CONFIG_TDLS + default: + break; + } + + i += (pIE->Length + 2); + } +} + +#ifdef CONFIG_DFS +void process_csa_ie(_adapter *padapter, u8 *pframe, uint pkt_len) +{ + unsigned int i; + unsigned int len; + PNDIS_802_11_VARIABLE_IEs pIE; + u8 new_ch_no = 0; + + len = pkt_len - (_BEACON_IE_OFFSET_ + WLAN_HDR_A3_LEN); + + for (i = 0; i < len;) + { + pIE = (PNDIS_802_11_VARIABLE_IEs)(pframe + (_BEACON_IE_OFFSET_ + WLAN_HDR_A3_LEN) + i); + + switch (pIE->ElementID) + { + case _CH_SWTICH_ANNOUNCE_: + _rtw_memcpy(&new_ch_no, pIE->data+1, 1); + rtw_set_csa_cmd(padapter, new_ch_no); + break; + + default: + break; + } + + i += (pIE->Length + 2); + } +} +#endif //CONFIG_DFS + +unsigned int is_ap_in_tkip(_adapter *padapter) +{ + u32 i; + PNDIS_802_11_VARIABLE_IEs pIE; + struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; + struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info); + WLAN_BSSID_EX *cur_network = &(pmlmeinfo->network); + + if (rtw_get_capability((WLAN_BSSID_EX *)cur_network) & WLAN_CAPABILITY_PRIVACY) + { + for (i = sizeof(NDIS_802_11_FIXED_IEs); i < pmlmeinfo->network.IELength;) + { + pIE = (PNDIS_802_11_VARIABLE_IEs)(pmlmeinfo->network.IEs + i); + + switch (pIE->ElementID) + { + case _VENDOR_SPECIFIC_IE_: + if ((_rtw_memcmp(pIE->data, RTW_WPA_OUI, 4)) && (_rtw_memcmp((pIE->data + 12), WPA_TKIP_CIPHER, 4))) + { + return _TRUE; + } + break; + + case _RSN_IE_2_: + if (_rtw_memcmp((pIE->data + 8), RSN_TKIP_CIPHER, 4)) + { + return _TRUE; + } + + default: + break; + } + + i += (pIE->Length + 2); + } + + return _FALSE; + } + else + { + return _FALSE; + } + +} + +int wifirate2_ratetbl_inx(unsigned char rate); +int wifirate2_ratetbl_inx(unsigned char rate) +{ + int inx = 0; + rate = rate & 0x7f; + + switch (rate) + { + case 54*2: + inx = 11; + break; + + case 48*2: + inx = 10; + break; + + case 36*2: + inx = 9; + break; + + case 24*2: + inx = 8; + break; + + case 18*2: + inx = 7; + break; + + case 12*2: + inx = 6; + break; + + case 9*2: + inx = 5; + break; + + case 6*2: + inx = 4; + break; + + case 11*2: + inx = 3; + break; + case 11: + inx = 2; + break; + + case 2*2: + inx = 1; + break; + + case 1*2: + inx = 0; + break; + + } + return inx; +} + +unsigned int update_basic_rate(unsigned char *ptn, unsigned int ptn_sz) +{ + unsigned int i, num_of_rate; + unsigned int mask = 0; + + num_of_rate = (ptn_sz > NumRates)? NumRates: ptn_sz; + + for (i = 0; i < num_of_rate; i++) + { + if ((*(ptn + i)) & 0x80) + { + mask |= 0x1 << wifirate2_ratetbl_inx(*(ptn + i)); + } + } + return mask; +} + +unsigned int update_supported_rate(unsigned char *ptn, unsigned int ptn_sz) +{ + unsigned int i, num_of_rate; + unsigned int mask = 0; + + num_of_rate = (ptn_sz > NumRates)? NumRates: ptn_sz; + + for (i = 0; i < num_of_rate; i++) + { + mask |= 0x1 << wifirate2_ratetbl_inx(*(ptn + i)); + } + + return mask; +} + +unsigned int update_MSC_rate(struct HT_caps_element *pHT_caps) +{ + unsigned int mask = 0; + + mask = ((pHT_caps->u.HT_cap_element.MCS_rate[0] << 12) | (pHT_caps->u.HT_cap_element.MCS_rate[1] << 20)); + + return mask; +} + +int support_short_GI(_adapter *padapter, struct HT_caps_element *pHT_caps) +{ + unsigned char bit_offset; + struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; + struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info); + + if (!(pmlmeinfo->HT_enable)) + return _FAIL; + + if ((pmlmeinfo->assoc_AP_vendor == ralinkAP)) + return _FAIL; + + bit_offset = (pmlmeext->cur_bwmode & HT_CHANNEL_WIDTH_40)? 6: 5; + + if (pHT_caps->u.HT_cap_element.HT_caps_info & (0x1 << bit_offset)) + { + return _SUCCESS; + } + else + { + return _FAIL; + } +} + +unsigned char get_highest_rate_idx(u32 mask) +{ + int i; + unsigned char rate_idx=0; + + for(i=27; i>=0; i--) + { + if(mask & BIT(i)) + { + rate_idx = i; + break; + } + } + + return rate_idx; +} + +unsigned char get_highest_mcs_rate(struct HT_caps_element *pHT_caps); +unsigned char get_highest_mcs_rate(struct HT_caps_element *pHT_caps) +{ + int i, mcs_rate; + + mcs_rate = (pHT_caps->u.HT_cap_element.MCS_rate[0] | (pHT_caps->u.HT_cap_element.MCS_rate[1] << 8)); + + for (i = 15; i >= 0; i--) + { + if (mcs_rate & (0x1 << i)) + { + break; + } + } + + return i; +} + +void Update_RA_Entry(_adapter *padapter, u32 mac_id) +{ + rtw_hal_update_ra_mask(padapter, mac_id); +} + +void enable_rate_adaptive(_adapter *padapter, u32 mac_id); +void enable_rate_adaptive(_adapter *padapter, u32 mac_id) +{ + Update_RA_Entry(padapter, mac_id); +} + +void set_sta_rate(_adapter *padapter, struct sta_info *psta) +{ + //rate adaptive + enable_rate_adaptive(padapter, psta->mac_id); +} + +// Update RRSR and Rate for USERATE +void update_tx_basic_rate(_adapter *padapter, u8 wirelessmode) +{ + NDIS_802_11_RATES_EX supported_rates; + struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; +#ifdef CONFIG_P2P + struct wifidirect_info* pwdinfo = &padapter->wdinfo; + + // Added by Albert 2011/03/22 + // In the P2P mode, the driver should not support the b mode. + // So, the Tx packet shouldn't use the CCK rate + if(!rtw_p2p_chk_state(pwdinfo, P2P_STATE_NONE)) + return; +#endif //CONFIG_P2P +#ifdef CONFIG_INTEL_WIDI + if (padapter->mlmepriv.widi_state != INTEL_WIDI_STATE_NONE) + return; +#endif //CONFIG_INTEL_WIDI + + _rtw_memset(supported_rates, 0, NDIS_802_11_LENGTH_RATES_EX); + + //clear B mod if current channel is in 5G band, avoid tx cck rate in 5G band. + if(pmlmeext->cur_channel > 14) + wirelessmode &= ~(WIRELESS_11B); + + if ((wirelessmode & WIRELESS_11B) && (wirelessmode == WIRELESS_11B)) { + _rtw_memcpy(supported_rates, rtw_basic_rate_cck, 4); + } else if (wirelessmode & WIRELESS_11B) { + _rtw_memcpy(supported_rates, rtw_basic_rate_mix, 7); + } else { + _rtw_memcpy(supported_rates, rtw_basic_rate_ofdm, 3); + } + + if (wirelessmode & WIRELESS_11B) + update_mgnt_tx_rate(padapter, IEEE80211_CCK_RATE_1MB); + else + update_mgnt_tx_rate(padapter, IEEE80211_OFDM_RATE_6MB); + + rtw_hal_set_hwreg(padapter, HW_VAR_BASIC_RATE, supported_rates); +} + +unsigned char check_assoc_AP(u8 *pframe, uint len) +{ + unsigned int i; + PNDIS_802_11_VARIABLE_IEs pIE; + + for (i = sizeof(NDIS_802_11_FIXED_IEs); i < len;) + { + pIE = (PNDIS_802_11_VARIABLE_IEs)(pframe + i); + + switch (pIE->ElementID) + { + case _VENDOR_SPECIFIC_IE_: + if ((_rtw_memcmp(pIE->data, ARTHEROS_OUI1, 3)) || (_rtw_memcmp(pIE->data, ARTHEROS_OUI2, 3))) + { + DBG_871X("link to Artheros AP\n"); + return atherosAP; + } + else if ((_rtw_memcmp(pIE->data, BROADCOM_OUI1, 3)) + || (_rtw_memcmp(pIE->data, BROADCOM_OUI2, 3)) + || (_rtw_memcmp(pIE->data, BROADCOM_OUI2, 3))) + { + DBG_871X("link to Broadcom AP\n"); + return broadcomAP; + } + else if (_rtw_memcmp(pIE->data, MARVELL_OUI, 3)) + { + DBG_871X("link to Marvell AP\n"); + return marvellAP; + } + else if (_rtw_memcmp(pIE->data, RALINK_OUI, 3)) + { + DBG_871X("link to Ralink AP\n"); + return ralinkAP; + } + else if (_rtw_memcmp(pIE->data, CISCO_OUI, 3)) + { + DBG_871X("link to Cisco AP\n"); + return ciscoAP; + } + else if (_rtw_memcmp(pIE->data, REALTEK_OUI, 3)) + { + DBG_871X("link to Realtek 96B\n"); + return realtekAP; + } + else if (_rtw_memcmp(pIE->data, AIRGOCAP_OUI,3)) + { + DBG_871X("link to Airgo Cap\n"); + return airgocapAP; + } + else + { + break; + } + + default: + break; + } + + i += (pIE->Length + 2); + } + + DBG_871X("link to new AP\n"); + return unknownAP; +} + +void update_IOT_info(_adapter *padapter) +{ + struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; + struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info); + + switch (pmlmeinfo->assoc_AP_vendor) + { + case marvellAP: + pmlmeinfo->turboMode_cts2self = 1; + pmlmeinfo->turboMode_rtsen = 0; + break; + + case ralinkAP: + pmlmeinfo->turboMode_cts2self = 0; + pmlmeinfo->turboMode_rtsen = 1; + //disable high power + Switch_DM_Func(padapter, (~DYNAMIC_FUNC_HP), _FALSE); + break; + case realtekAP: + //rtw_write16(padapter, 0x4cc, 0xffff); + //rtw_write16(padapter, 0x546, 0x01c0); + //disable high power + Switch_DM_Func(padapter, (~DYNAMIC_FUNC_HP), _FALSE); + break; + default: + pmlmeinfo->turboMode_cts2self = 0; + pmlmeinfo->turboMode_rtsen = 1; + break; + } + +} + +void update_capinfo(PADAPTER Adapter, u16 updateCap) +{ + struct mlme_ext_priv *pmlmeext = &Adapter->mlmeextpriv; + struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info); + BOOLEAN ShortPreamble; + + // Check preamble mode, 2005.01.06, by rcnjko. + // Mark to update preamble value forever, 2008.03.18 by lanhsin + //if( pMgntInfo->RegPreambleMode == PREAMBLE_AUTO ) + { + + if(updateCap & cShortPreamble) + { // Short Preamble + if(pmlmeinfo->preamble_mode != PREAMBLE_SHORT) // PREAMBLE_LONG or PREAMBLE_AUTO + { + ShortPreamble = _TRUE; + pmlmeinfo->preamble_mode = PREAMBLE_SHORT; + rtw_hal_set_hwreg( Adapter, HW_VAR_ACK_PREAMBLE, (u8 *)&ShortPreamble ); + } + } + else + { // Long Preamble + if(pmlmeinfo->preamble_mode != PREAMBLE_LONG) // PREAMBLE_SHORT or PREAMBLE_AUTO + { + ShortPreamble = _FALSE; + pmlmeinfo->preamble_mode = PREAMBLE_LONG; + rtw_hal_set_hwreg( Adapter, HW_VAR_ACK_PREAMBLE, (u8 *)&ShortPreamble ); + } + } + } + + if ( updateCap & cIBSS ) { + //Filen: See 802.11-2007 p.91 + pmlmeinfo->slotTime = NON_SHORT_SLOT_TIME; + } + else + { + //Filen: See 802.11-2007 p.90 + if( pmlmeext->cur_wireless_mode & (WIRELESS_11G | WIRELESS_11_24N)) + { + if( (updateCap & cShortSlotTime) /* && (!(pMgntInfo->pHTInfo->RT2RT_HT_Mode & RT_HT_CAP_USE_LONG_PREAMBLE)) */) + { // Short Slot Time + if(pmlmeinfo->slotTime != SHORT_SLOT_TIME) + { + pmlmeinfo->slotTime = SHORT_SLOT_TIME; + } + } + else + { // Long Slot Time + if(pmlmeinfo->slotTime != NON_SHORT_SLOT_TIME) + { + pmlmeinfo->slotTime = NON_SHORT_SLOT_TIME; + } + } + } + else if( pmlmeext->cur_wireless_mode & (WIRELESS_11A | WIRELESS_11_5N)) + { + pmlmeinfo->slotTime = SHORT_SLOT_TIME; + } + else + { + //B Mode + pmlmeinfo->slotTime = NON_SHORT_SLOT_TIME; + } + } + + rtw_hal_set_hwreg( Adapter, HW_VAR_SLOT_TIME, &pmlmeinfo->slotTime ); + +} + +void update_wireless_mode(_adapter *padapter) +{ + u8 init_rate=0; + int ratelen, network_type = 0; + u32 SIFS_Timer, mask; + struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; + struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info); + WLAN_BSSID_EX *cur_network = &(pmlmeinfo->network); + unsigned char *rate = cur_network->SupportedRates; +#ifdef CONFIG_CONCURRENT_MODE + _adapter *pbuddy_adapter = padapter->pbuddy_adapter; +#endif //CONFIG_CONCURRENT_MODE + + ratelen = rtw_get_rateset_len(cur_network->SupportedRates); + + if ((pmlmeinfo->HT_info_enable) && (pmlmeinfo->HT_caps_enable)) + { + pmlmeinfo->HT_enable = 1; + } + + if(pmlmeext->cur_channel > 14) + { + if (pmlmeinfo->HT_enable) + { + network_type = WIRELESS_11_5N; + } + + network_type |= WIRELESS_11A; + } + else + { + if (pmlmeinfo->HT_enable) + { + network_type = WIRELESS_11_24N; + } + + if ((cckratesonly_included(rate, ratelen)) == _TRUE) + { + network_type |= WIRELESS_11B; + } + else if((cckrates_included(rate, ratelen)) == _TRUE) + { + network_type |= WIRELESS_11BG; + } + else + { + network_type |= WIRELESS_11G; + } + } + + pmlmeext->cur_wireless_mode = network_type & padapter->registrypriv.wireless_mode; + + //For STA mode, driver need to modify initial data rate, or MAC will use wrong tx rate. + //Modified by Thomas 2012-12-3 + mask = update_supported_rate(cur_network->SupportedRates, ratelen); + init_rate = get_highest_rate_idx(mask)&0x3f; + rtw_hal_set_hwreg( padapter, HW_VAR_INIT_DATA_RATE, (u8 *)&init_rate); + +/* + if((pmlmeext->cur_wireless_mode==WIRELESS_11G) || + (pmlmeext->cur_wireless_mode==WIRELESS_11BG))//WIRELESS_MODE_G) + SIFS_Timer = 0x0a0a;//CCK + else + SIFS_Timer = 0x0e0e;//pHalData->SifsTime; //OFDM +*/ + + SIFS_Timer = 0x0a0a0808; //0x0808 -> for CCK, 0x0a0a -> for OFDM + //change this value if having IOT issues. + + rtw_hal_set_hwreg( padapter, HW_VAR_RESP_SIFS, (u8 *)&SIFS_Timer); + + if (pmlmeext->cur_wireless_mode & WIRELESS_11B) + update_mgnt_tx_rate(padapter, IEEE80211_CCK_RATE_1MB); + else + { + update_mgnt_tx_rate(padapter, IEEE80211_OFDM_RATE_6MB); +#ifdef CONFIG_CONCURRENT_MODE + if(pbuddy_adapter && (pmlmeext->cur_wireless_mode & WIRELESS_11A)) + update_mgnt_tx_rate(pbuddy_adapter, IEEE80211_OFDM_RATE_6MB); +#endif //CONFIG_CONCURRENT_MODE + } +} + +void fire_write_MAC_cmd(_adapter *padapter, unsigned int addr, unsigned int value); +void fire_write_MAC_cmd(_adapter *padapter, unsigned int addr, unsigned int value) +{ +#if 0 + struct cmd_obj *ph2c; + struct reg_rw_parm *pwriteMacPara; + struct cmd_priv *pcmdpriv = &(padapter->cmdpriv); + + if ((ph2c = (struct cmd_obj*)rtw_zmalloc(sizeof(struct cmd_obj))) == NULL) + { + return; + } + + if ((pwriteMacPara = (struct reg_rw_parm*)rtw_malloc(sizeof(struct reg_rw_parm))) == NULL) + { + rtw_mfree((unsigned char *)ph2c, sizeof(struct cmd_obj)); + return; + } + + pwriteMacPara->rw = 1; + pwriteMacPara->addr = addr; + pwriteMacPara->value = value; + + init_h2fwcmd_w_parm_no_rsp(ph2c, pwriteMacPara, GEN_CMD_CODE(_Write_MACREG)); + rtw_enqueue_cmd(pcmdpriv, ph2c); +#endif +} + +void update_bmc_sta_support_rate(_adapter *padapter, u32 mac_id) +{ + struct mlme_ext_priv *pmlmeext = &(padapter->mlmeextpriv); + struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info); + + if(pmlmeext->cur_wireless_mode & WIRELESS_11B) + { + // Only B, B/G, and B/G/N AP could use CCK rate + _rtw_memcpy((pmlmeinfo->FW_sta_info[mac_id].SupportedRates), rtw_basic_rate_cck, 4); + } + else + { + _rtw_memcpy((pmlmeinfo->FW_sta_info[mac_id].SupportedRates), rtw_basic_rate_ofdm, 3); + } +} + +int update_sta_support_rate(_adapter *padapter, u8* pvar_ie, uint var_ie_len, int cam_idx) +{ + unsigned int ie_len; + PNDIS_802_11_VARIABLE_IEs pIE; + int supportRateNum = 0; + struct mlme_ext_priv *pmlmeext = &(padapter->mlmeextpriv); + struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info); + + pIE = (PNDIS_802_11_VARIABLE_IEs)rtw_get_ie(pvar_ie, _SUPPORTEDRATES_IE_, &ie_len, var_ie_len); + if (pIE == NULL) + { + return _FAIL; + } + + _rtw_memcpy(pmlmeinfo->FW_sta_info[cam_idx].SupportedRates, pIE->data, ie_len); + supportRateNum = ie_len; + + pIE = (PNDIS_802_11_VARIABLE_IEs)rtw_get_ie(pvar_ie, _EXT_SUPPORTEDRATES_IE_, &ie_len, var_ie_len); + if (pIE) + { + _rtw_memcpy((pmlmeinfo->FW_sta_info[cam_idx].SupportedRates + supportRateNum), pIE->data, ie_len); + } + + return _SUCCESS; + +} + +void process_addba_req(_adapter *padapter, u8 *paddba_req, u8 *addr) +{ + struct sta_info *psta; + u16 tid, start_seq, param; + struct recv_reorder_ctrl *preorder_ctrl; + struct sta_priv *pstapriv = &padapter->stapriv; + struct ADDBA_request *preq = (struct ADDBA_request*)paddba_req; + struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; + struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info); + + psta = rtw_get_stainfo(pstapriv, addr); + + if(psta) + { + start_seq = le16_to_cpu(preq->BA_starting_seqctrl) >> 4; + + param = le16_to_cpu(preq->BA_para_set); + tid = (param>>2)&0x0f; + + preorder_ctrl = &psta->recvreorder_ctrl[tid]; + + #ifdef CONFIG_UPDATE_INDICATE_SEQ_WHILE_PROCESS_ADDBA_REQ + preorder_ctrl->indicate_seq = start_seq; + #ifdef DBG_RX_SEQ + DBG_871X("DBG_RX_SEQ %s:%d IndicateSeq: %d, start_seq: %d\n", __FUNCTION__, __LINE__, + preorder_ctrl->indicate_seq, start_seq); + #endif + #else + preorder_ctrl->indicate_seq = 0xffff; + #endif + + preorder_ctrl->enable =(pmlmeinfo->bAcceptAddbaReq == _TRUE)? _TRUE :_FALSE; + } + +} + +void update_TSF(struct mlme_ext_priv *pmlmeext, u8 *pframe, uint len) +{ + u8* pIE; + u32 *pbuf; + + pIE = pframe + sizeof(struct rtw_ieee80211_hdr_3addr); + pbuf = (u32*)pIE; + + pmlmeext->TSFValue = le32_to_cpu(*(pbuf+1)); + + pmlmeext->TSFValue = pmlmeext->TSFValue << 32; + + pmlmeext->TSFValue |= le32_to_cpu(*pbuf); +} + +void correct_TSF(_adapter *padapter, struct mlme_ext_priv *pmlmeext) +{ + rtw_hal_set_hwreg(padapter, HW_VAR_CORRECT_TSF, 0); +} + +void beacon_timing_control(_adapter *padapter) +{ + rtw_hal_bcn_related_reg_setting(padapter); +} + +#if 0 +unsigned int setup_beacon_frame(_adapter *padapter, unsigned char *beacon_frame) +{ + unsigned short ATIMWindow; + unsigned char *pframe; + struct tx_desc *ptxdesc; + struct rtw_ieee80211_hdr *pwlanhdr; + unsigned short *fctrl; + unsigned int rate_len, len = 0; + struct xmit_priv *pxmitpriv = &(padapter->xmitpriv); + struct mlme_ext_priv *pmlmeext = &(padapter->mlmeextpriv); + struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info); + WLAN_BSSID_EX *cur_network = &(pmlmeinfo->network); + u8 bc_addr[] = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff}; + + _rtw_memset(beacon_frame, 0, 256); + + pframe = beacon_frame + TXDESC_SIZE; + + pwlanhdr = (struct rtw_ieee80211_hdr *)pframe; + + fctrl = &(pwlanhdr->frame_ctl); + *(fctrl) = 0; + + _rtw_memcpy(pwlanhdr->addr1, bc_addr, ETH_ALEN); + _rtw_memcpy(pwlanhdr->addr2, myid(&(padapter->eeprompriv)), ETH_ALEN); + _rtw_memcpy(pwlanhdr->addr3, get_my_bssid(cur_network), ETH_ALEN); + + SetFrameSubType(pframe, WIFI_BEACON); + + pframe += sizeof(struct rtw_ieee80211_hdr_3addr); + len = sizeof(struct rtw_ieee80211_hdr_3addr); + + //timestamp will be inserted by hardware + pframe += 8; + len += 8; + + // beacon interval: 2 bytes + _rtw_memcpy(pframe, (unsigned char *)(rtw_get_beacon_interval_from_ie(cur_network->IEs)), 2); + + pframe += 2; + len += 2; + + // capability info: 2 bytes + _rtw_memcpy(pframe, (unsigned char *)(rtw_get_capability_from_ie(cur_network->IEs)), 2); + + pframe += 2; + len += 2; + + // SSID + pframe = rtw_set_ie(pframe, _SSID_IE_, cur_network->Ssid.SsidLength, cur_network->Ssid.Ssid, &len); + + // supported rates... + rate_len = rtw_get_rateset_len(cur_network->SupportedRates); + pframe = rtw_set_ie(pframe, _SUPPORTEDRATES_IE_, ((rate_len > 8)? 8: rate_len), cur_network->SupportedRates, &len); + + // DS parameter set + pframe = rtw_set_ie(pframe, _DSSET_IE_, 1, (unsigned char *)&(cur_network->Configuration.DSConfig), &len); + + // IBSS Parameter Set... + //ATIMWindow = cur->Configuration.ATIMWindow; + ATIMWindow = 0; + pframe = rtw_set_ie(pframe, _IBSS_PARA_IE_, 2, (unsigned char *)(&ATIMWindow), &len); + + //todo: ERP IE + + // EXTERNDED SUPPORTED RATE + if (rate_len > 8) + { + pframe = rtw_set_ie(pframe, _EXT_SUPPORTEDRATES_IE_, (rate_len - 8), (cur_network->SupportedRates + 8), &len); + } + + if ((len + TXDESC_SIZE) > 256) + { + //DBG_871X("marc: beacon frame too large\n"); + return 0; + } + + //fill the tx descriptor + ptxdesc = (struct tx_desc *)beacon_frame; + + //offset 0 + ptxdesc->txdw0 |= cpu_to_le32(len & 0x0000ffff); + ptxdesc->txdw0 |= cpu_to_le32(((TXDESC_SIZE + OFFSET_SZ) << OFFSET_SHT) & 0x00ff0000); //default = 32 bytes for TX Desc + + //offset 4 + ptxdesc->txdw1 |= cpu_to_le32((0x10 << QSEL_SHT) & 0x00001f00); + + //offset 8 + ptxdesc->txdw2 |= cpu_to_le32(BMC); + ptxdesc->txdw2 |= cpu_to_le32(BK); + + //offset 16 + ptxdesc->txdw4 = 0x80000000; + + //offset 20 + ptxdesc->txdw5 = 0x00000000; //1M + + return (len + TXDESC_SIZE); +} +#endif + +static _adapter *pbuddy_padapter = NULL; + +int rtw_handle_dualmac(_adapter *adapter, bool init) +{ + int status = _SUCCESS; + struct dvobj_priv *dvobj = adapter_to_dvobj(adapter); + + if (!IS_HARDWARE_TYPE_8192D(adapter)) + goto exit; + + if (init) { + rtw_hal_get_def_var(adapter, HAL_DEF_DUAL_MAC_MODE, &dvobj->DualMacMode); + if (dvobj->DualMacMode == _TRUE) { + // temply disable IPS For 92D-VC + adapter->registrypriv.ips_mode = IPS_NONE; + } + + /* For SMSP on 92DU-VC, driver do not probe another Interface. */ + if ((dvobj->DualMacMode != _TRUE) && (dvobj->InterfaceNumber != 0)) { + DBG_871X("%s(): Do not init another Interface because SMSP\n",__FUNCTION__); + status = _FAIL; + goto exit; + } + +#ifndef CONFIG_CONCURRENT_MODE + if (dvobj->DualMacMode == _TRUE) { + if (pbuddy_padapter == NULL) { + pbuddy_padapter = adapter; + DBG_871X("%s(): pbuddy_padapter == NULL, Set pbuddy_padapter\n",__FUNCTION__); + } else { + adapter->pbuddy_adapter = pbuddy_padapter; + pbuddy_padapter->pbuddy_adapter = adapter; + // clear global value + pbuddy_padapter = NULL; + DBG_871X("%s(): pbuddy_padapter exist, Exchange Information\n",__FUNCTION__); + } + } + +#ifdef CONFIG_DUALMAC_CONCURRENT + if (dvobj->InterfaceNumber == 0) { + //set adapter_type/iface type + adapter->isprimary = _TRUE; + adapter->adapter_type = PRIMARY_ADAPTER; + adapter->iface_type = IFACE_PORT0; + DBG_871X("%s(): PRIMARY_ADAPTER\n",__FUNCTION__); + } else { + //set adapter_type/iface type + adapter->isprimary = _FALSE; + adapter->adapter_type = SECONDARY_ADAPTER; + adapter->iface_type = IFACE_PORT1; + DBG_871X("%s(): SECONDARY_ADAPTER\n",__FUNCTION__); + } +#endif +#endif + }else { + pbuddy_padapter = NULL; + } +exit: + return status; +} --- linux-raspi2-4.2.0.orig/drivers/net/wireless/rtl8192cu/core/rtw_xmit.c +++ linux-raspi2-4.2.0/drivers/net/wireless/rtl8192cu/core/rtw_xmit.c @@ -0,0 +1,4155 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved. + * + * 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 + * published by the Free Software Foundation. + * + * 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 Street, Fifth Floor, Boston, MA 02110, USA + * + * + ******************************************************************************/ +#define _RTW_XMIT_C_ + +#include +#include +#include +#include +#include +#include +#include +#include + +#if defined (PLATFORM_LINUX) && defined (PLATFORM_WINDOWS) +#error "Shall be Linux or Windows, but not both!\n" +#endif + +#ifdef PLATFORM_WINDOWS +#include +#endif + +#ifdef CONFIG_USB_HCI +#include +#endif + + +static u8 P802_1H_OUI[P80211_OUI_LEN] = { 0x00, 0x00, 0xf8 }; +static u8 RFC1042_OUI[P80211_OUI_LEN] = { 0x00, 0x00, 0x00 }; + +static void _init_txservq(struct tx_servq *ptxservq) +{ +_func_enter_; + _rtw_init_listhead(&ptxservq->tx_pending); + _rtw_init_queue(&ptxservq->sta_pending); + ptxservq->qcnt = 0; +_func_exit_; +} + + +void _rtw_init_sta_xmit_priv(struct sta_xmit_priv *psta_xmitpriv) +{ + +_func_enter_; + + _rtw_memset((unsigned char *)psta_xmitpriv, 0, sizeof (struct sta_xmit_priv)); + + _rtw_spinlock_init(&psta_xmitpriv->lock); + + //for(i = 0 ; i < MAX_NUMBLKS; i++) + // _init_txservq(&(psta_xmitpriv->blk_q[i])); + + _init_txservq(&psta_xmitpriv->be_q); + _init_txservq(&psta_xmitpriv->bk_q); + _init_txservq(&psta_xmitpriv->vi_q); + _init_txservq(&psta_xmitpriv->vo_q); + _rtw_init_listhead(&psta_xmitpriv->legacy_dz); + _rtw_init_listhead(&psta_xmitpriv->apsd); + +_func_exit_; + +} + +s32 _rtw_init_xmit_priv(struct xmit_priv *pxmitpriv, _adapter *padapter) +{ + int i; + struct xmit_buf *pxmitbuf; + struct xmit_frame *pxframe; + sint res=_SUCCESS; + +_func_enter_; + + // We don't need to memset padapter->XXX to zero, because adapter is allocated by rtw_zvmalloc(). + //_rtw_memset((unsigned char *)pxmitpriv, 0, sizeof(struct xmit_priv)); + + _rtw_spinlock_init(&pxmitpriv->lock); + _rtw_spinlock_init(&pxmitpriv->lock_sctx); + _rtw_init_sema(&pxmitpriv->xmit_sema, 0); + _rtw_init_sema(&pxmitpriv->terminate_xmitthread_sema, 0); + + /* + Please insert all the queue initializaiton using _rtw_init_queue below + */ + + pxmitpriv->adapter = padapter; + + //for(i = 0 ; i < MAX_NUMBLKS; i++) + // _rtw_init_queue(&pxmitpriv->blk_strms[i]); + + _rtw_init_queue(&pxmitpriv->be_pending); + _rtw_init_queue(&pxmitpriv->bk_pending); + _rtw_init_queue(&pxmitpriv->vi_pending); + _rtw_init_queue(&pxmitpriv->vo_pending); + _rtw_init_queue(&pxmitpriv->bm_pending); + + //_rtw_init_queue(&pxmitpriv->legacy_dz_queue); + //_rtw_init_queue(&pxmitpriv->apsd_queue); + + _rtw_init_queue(&pxmitpriv->free_xmit_queue); + + /* + Please allocate memory with the sz = (struct xmit_frame) * NR_XMITFRAME, + and initialize free_xmit_frame below. + Please also apply free_txobj to link_up all the xmit_frames... + */ + + pxmitpriv->pallocated_frame_buf = rtw_zvmalloc(NR_XMITFRAME * sizeof(struct xmit_frame) + 4); + + if (pxmitpriv->pallocated_frame_buf == NULL){ + pxmitpriv->pxmit_frame_buf =NULL; + RT_TRACE(_module_rtl871x_xmit_c_,_drv_err_,("alloc xmit_frame fail!\n")); + res= _FAIL; + goto exit; + } + pxmitpriv->pxmit_frame_buf = (u8 *)N_BYTE_ALIGMENT((SIZE_PTR)(pxmitpriv->pallocated_frame_buf), 4); + //pxmitpriv->pxmit_frame_buf = pxmitpriv->pallocated_frame_buf + 4 - + // ((SIZE_PTR) (pxmitpriv->pallocated_frame_buf) &3); + + pxframe = (struct xmit_frame*) pxmitpriv->pxmit_frame_buf; + + for (i = 0; i < NR_XMITFRAME; i++) + { + _rtw_init_listhead(&(pxframe->list)); + + pxframe->padapter = padapter; + pxframe->frame_tag = NULL_FRAMETAG; + + pxframe->pkt = NULL; + + pxframe->buf_addr = NULL; + pxframe->pxmitbuf = NULL; + + rtw_list_insert_tail(&(pxframe->list), &(pxmitpriv->free_xmit_queue.queue)); + + pxframe++; + } + + pxmitpriv->free_xmitframe_cnt = NR_XMITFRAME; + + pxmitpriv->frag_len = MAX_FRAG_THRESHOLD; + + + //init xmit_buf + _rtw_init_queue(&pxmitpriv->free_xmitbuf_queue); + _rtw_init_queue(&pxmitpriv->pending_xmitbuf_queue); + + pxmitpriv->pallocated_xmitbuf = rtw_zvmalloc(NR_XMITBUFF * sizeof(struct xmit_buf) + 4); + + if (pxmitpriv->pallocated_xmitbuf == NULL){ + RT_TRACE(_module_rtl871x_xmit_c_,_drv_err_,("alloc xmit_buf fail!\n")); + res= _FAIL; + goto exit; + } + + pxmitpriv->pxmitbuf = (u8 *)N_BYTE_ALIGMENT((SIZE_PTR)(pxmitpriv->pallocated_xmitbuf), 4); + //pxmitpriv->pxmitbuf = pxmitpriv->pallocated_xmitbuf + 4 - + // ((SIZE_PTR) (pxmitpriv->pallocated_xmitbuf) &3); + + pxmitbuf = (struct xmit_buf*)pxmitpriv->pxmitbuf; + + for (i = 0; i < NR_XMITBUFF; i++) + { + _rtw_init_listhead(&pxmitbuf->list); + + pxmitbuf->priv_data = NULL; + pxmitbuf->padapter = padapter; + pxmitbuf->ext_tag = _FALSE; + +/* + pxmitbuf->pallocated_buf = rtw_zmalloc(MAX_XMITBUF_SZ + XMITBUF_ALIGN_SZ); + if (pxmitbuf->pallocated_buf == NULL) + { + res = _FAIL; + goto exit; + } + + pxmitbuf->pbuf = (u8 *)N_BYTE_ALIGMENT((SIZE_PTR)(pxmitbuf->pallocated_buf), XMITBUF_ALIGN_SZ); + //pxmitbuf->pbuf = pxmitbuf->pallocated_buf + XMITBUF_ALIGN_SZ -((SIZE_PTR) (pxmitbuf->pallocated_buf) &(XMITBUF_ALIGN_SZ-1)); +*/ + + if((res=rtw_os_xmit_resource_alloc(padapter, pxmitbuf,(MAX_XMITBUF_SZ + XMITBUF_ALIGN_SZ))) == _FAIL) { + res= _FAIL; + goto exit; + } + +#ifdef CONFIG_SDIO_HCI + pxmitbuf->phead = pxmitbuf->pbuf; + pxmitbuf->pend = pxmitbuf->pbuf + MAX_XMITBUF_SZ; + pxmitbuf->len = 0; + pxmitbuf->pdata = pxmitbuf->ptail = pxmitbuf->phead; +#endif + + pxmitbuf->flags = XMIT_VO_QUEUE; + + rtw_list_insert_tail(&pxmitbuf->list, &(pxmitpriv->free_xmitbuf_queue.queue)); + #ifdef DBG_XMIT_BUF + pxmitbuf->no=i; + #endif + + pxmitbuf++; + + } + + pxmitpriv->free_xmitbuf_cnt = NR_XMITBUFF; + + /* init xframe_ext queue, the same count as extbuf */ + _rtw_init_queue(&pxmitpriv->free_xframe_ext_queue); + + pxmitpriv->xframe_ext_alloc_addr = rtw_zvmalloc(NR_XMIT_EXTBUFF * sizeof(struct xmit_frame) + 4); + + if (pxmitpriv->xframe_ext_alloc_addr == NULL){ + pxmitpriv->xframe_ext = NULL; + RT_TRACE(_module_rtl871x_xmit_c_,_drv_err_,("alloc xframe_ext fail!\n")); + res= _FAIL; + goto exit; + } + pxmitpriv->xframe_ext = (u8 *)N_BYTE_ALIGMENT((SIZE_PTR)(pxmitpriv->xframe_ext_alloc_addr), 4); + pxframe = (struct xmit_frame*)pxmitpriv->xframe_ext; + + for (i = 0; i < NR_XMIT_EXTBUFF; i++) { + _rtw_init_listhead(&(pxframe->list)); + + pxframe->padapter = padapter; + pxframe->frame_tag = NULL_FRAMETAG; + + pxframe->pkt = NULL; + + pxframe->buf_addr = NULL; + pxframe->pxmitbuf = NULL; + + pxframe->ext_tag = 1; + + rtw_list_insert_tail(&(pxframe->list), &(pxmitpriv->free_xframe_ext_queue.queue)); + + pxframe++; + } + pxmitpriv->free_xframe_ext_cnt = NR_XMIT_EXTBUFF; + + // Init xmit extension buff + _rtw_init_queue(&pxmitpriv->free_xmit_extbuf_queue); + + pxmitpriv->pallocated_xmit_extbuf = rtw_zvmalloc(NR_XMIT_EXTBUFF * sizeof(struct xmit_buf) + 4); + + if (pxmitpriv->pallocated_xmit_extbuf == NULL){ + RT_TRACE(_module_rtl871x_xmit_c_,_drv_err_,("alloc xmit_extbuf fail!\n")); + res= _FAIL; + goto exit; + } + + pxmitpriv->pxmit_extbuf = (u8 *)N_BYTE_ALIGMENT((SIZE_PTR)(pxmitpriv->pallocated_xmit_extbuf), 4); + + pxmitbuf = (struct xmit_buf*)pxmitpriv->pxmit_extbuf; + + for (i = 0; i < NR_XMIT_EXTBUFF; i++) + { + _rtw_init_listhead(&pxmitbuf->list); + + pxmitbuf->priv_data = NULL; + pxmitbuf->padapter = padapter; + pxmitbuf->ext_tag = _TRUE; + +/* + pxmitbuf->pallocated_buf = rtw_zmalloc(MAX_XMIT_EXTBUF_SZ); + if (pxmitbuf->pallocated_buf == NULL) + { + res = _FAIL; + goto exit; + } + + pxmitbuf->pbuf = (u8 *)N_BYTE_ALIGMENT((SIZE_PTR)(pxmitbuf->pallocated_buf), 4); +*/ + + if((res=rtw_os_xmit_resource_alloc(padapter, pxmitbuf,MAX_XMIT_EXTBUF_SZ + XMITBUF_ALIGN_SZ)) == _FAIL) { + res= _FAIL; + goto exit; + } + +#ifdef CONFIG_SDIO_HCI + pxmitbuf->phead = pxmitbuf->pbuf; + pxmitbuf->pend = pxmitbuf->pbuf + MAX_XMIT_EXTBUF_SZ; + pxmitbuf->len = 0; + pxmitbuf->pdata = pxmitbuf->ptail = pxmitbuf->phead; +#endif + + rtw_list_insert_tail(&pxmitbuf->list, &(pxmitpriv->free_xmit_extbuf_queue.queue)); + #ifdef DBG_XMIT_BUF + pxmitbuf->no=i; + #endif + pxmitbuf++; + + } + + pxmitpriv->free_xmit_extbuf_cnt = NR_XMIT_EXTBUFF; + + rtw_alloc_hwxmits(padapter); + rtw_init_hwxmits(pxmitpriv->hwxmits, pxmitpriv->hwxmit_entry); + +#ifdef CONFIG_USB_HCI + pxmitpriv->txirp_cnt=1; + + _rtw_init_sema(&(pxmitpriv->tx_retevt), 0); + + //per AC pending irp + pxmitpriv->beq_cnt = 0; + pxmitpriv->bkq_cnt = 0; + pxmitpriv->viq_cnt = 0; + pxmitpriv->voq_cnt = 0; +#endif + + +#ifdef CONFIG_XMIT_ACK + pxmitpriv->ack_tx = _FALSE; + _rtw_mutex_init(&pxmitpriv->ack_tx_mutex); + rtw_sctx_init(&pxmitpriv->ack_tx_ops, 0); +#endif + + rtw_hal_init_xmit_priv(padapter); + +exit: + +_func_exit_; + + return res; +} + +void rtw_mfree_xmit_priv_lock (struct xmit_priv *pxmitpriv); +void rtw_mfree_xmit_priv_lock (struct xmit_priv *pxmitpriv) +{ + _rtw_spinlock_free(&pxmitpriv->lock); + _rtw_free_sema(&pxmitpriv->xmit_sema); + _rtw_free_sema(&pxmitpriv->terminate_xmitthread_sema); + + _rtw_spinlock_free(&pxmitpriv->be_pending.lock); + _rtw_spinlock_free(&pxmitpriv->bk_pending.lock); + _rtw_spinlock_free(&pxmitpriv->vi_pending.lock); + _rtw_spinlock_free(&pxmitpriv->vo_pending.lock); + _rtw_spinlock_free(&pxmitpriv->bm_pending.lock); + + //_rtw_spinlock_free(&pxmitpriv->legacy_dz_queue.lock); + //_rtw_spinlock_free(&pxmitpriv->apsd_queue.lock); + + _rtw_spinlock_free(&pxmitpriv->free_xmit_queue.lock); + _rtw_spinlock_free(&pxmitpriv->free_xmitbuf_queue.lock); + _rtw_spinlock_free(&pxmitpriv->pending_xmitbuf_queue.lock); +} + + +void _rtw_free_xmit_priv (struct xmit_priv *pxmitpriv) +{ + int i; + _adapter *padapter = pxmitpriv->adapter; + struct xmit_frame *pxmitframe = (struct xmit_frame*) pxmitpriv->pxmit_frame_buf; + struct xmit_buf *pxmitbuf = (struct xmit_buf *)pxmitpriv->pxmitbuf; + + _func_enter_; + + rtw_hal_free_xmit_priv(padapter); + + rtw_mfree_xmit_priv_lock(pxmitpriv); + + if(pxmitpriv->pxmit_frame_buf==NULL) + goto out; + + for(i=0; ipallocated_buf) + // rtw_mfree(pxmitbuf->pallocated_buf, MAX_XMITBUF_SZ + XMITBUF_ALIGN_SZ); + + pxmitbuf++; + } + + if(pxmitpriv->pallocated_frame_buf) { + rtw_vmfree(pxmitpriv->pallocated_frame_buf, NR_XMITFRAME * sizeof(struct xmit_frame) + 4); + } + + + if(pxmitpriv->pallocated_xmitbuf) { + rtw_vmfree(pxmitpriv->pallocated_xmitbuf, NR_XMITBUFF * sizeof(struct xmit_buf) + 4); + } + + /* free xframe_ext queue, the same count as extbuf */ + if ((pxmitframe = (struct xmit_frame*)pxmitpriv->xframe_ext)) { + for (i=0; ixframe_ext_alloc_addr) + rtw_vmfree(pxmitpriv->xframe_ext_alloc_addr, NR_XMIT_EXTBUFF * sizeof(struct xmit_frame) + 4); + _rtw_spinlock_free(&pxmitpriv->free_xframe_ext_queue.lock); + + // free xmit extension buff + _rtw_spinlock_free(&pxmitpriv->free_xmit_extbuf_queue.lock); + + pxmitbuf = (struct xmit_buf *)pxmitpriv->pxmit_extbuf; + for(i=0; ipallocated_buf) + // rtw_mfree(pxmitbuf->pallocated_buf, MAX_XMIT_EXTBUF_SZ); + + pxmitbuf++; + } + + if(pxmitpriv->pallocated_xmit_extbuf) { + rtw_vmfree(pxmitpriv->pallocated_xmit_extbuf, NR_XMIT_EXTBUFF * sizeof(struct xmit_buf) + 4); + } + + rtw_free_hwxmits(padapter); + +#ifdef CONFIG_XMIT_ACK + _rtw_mutex_free(&pxmitpriv->ack_tx_mutex); +#endif + +out: + +_func_exit_; + +} + +static void update_attrib_vcs_info(_adapter *padapter, struct xmit_frame *pxmitframe) +{ + u32 sz; + struct pkt_attrib *pattrib = &pxmitframe->attrib; + struct sta_info *psta = pattrib->psta; + struct mlme_ext_priv *pmlmeext = &(padapter->mlmeextpriv); + struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info); + + if(pattrib->psta) + { + psta = pattrib->psta; + } + else + { + DBG_871X("%s, call rtw_get_stainfo()\n", __func__); + psta=rtw_get_stainfo(&padapter->stapriv ,&pattrib->ra[0] ); + } + + if(psta==NULL) + { + DBG_871X("%s, psta==NUL\n", __func__); + return; + } + + if(!(psta->state &_FW_LINKED)) + { + DBG_871X("%s, psta->state(0x%x) != _FW_LINKED\n", __func__, psta->state); + return; + } + + if (pattrib->nr_frags != 1) + { + sz = padapter->xmitpriv.frag_len; + } + else //no frag + { + sz = pattrib->last_txcmdsz; + } + + // (1) RTS_Threshold is compared to the MPDU, not MSDU. + // (2) If there are more than one frag in this MSDU, only the first frag uses protection frame. + // Other fragments are protected by previous fragment. + // So we only need to check the length of first fragment. + if(pmlmeext->cur_wireless_mode < WIRELESS_11_24N || padapter->registrypriv.wifi_spec) + { + if(sz > padapter->registrypriv.rts_thresh) + { + pattrib->vcs_mode = RTS_CTS; + } + else + { + if(psta->rtsen) + pattrib->vcs_mode = RTS_CTS; + else if(psta->cts2self) + pattrib->vcs_mode = CTS_TO_SELF; + else + pattrib->vcs_mode = NONE_VCS; + } + } + else + { + while (_TRUE) + { +#if 0 //Todo + //check IOT action + if(pHTInfo->IOTAction & HT_IOT_ACT_FORCED_CTS2SELF) + { + pattrib->vcs_mode = CTS_TO_SELF; + pattrib->rts_rate = MGN_24M; + break; + } + else if(pHTInfo->IOTAction & (HT_IOT_ACT_FORCED_RTS|HT_IOT_ACT_PURE_N_MODE)) + { + pattrib->vcs_mode = RTS_CTS; + pattrib->rts_rate = MGN_24M; + break; + } +#endif + + //IOT action + if((pmlmeinfo->assoc_AP_vendor == atherosAP) && (pattrib->ampdu_en==_TRUE) && + (padapter->securitypriv.dot11PrivacyAlgrthm == _AES_ )) + { + pattrib->vcs_mode = CTS_TO_SELF; + break; + } + + + //check ERP protection + if(psta->rtsen || psta->cts2self) + { + if(psta->rtsen) + pattrib->vcs_mode = RTS_CTS; + else if(psta->cts2self) + pattrib->vcs_mode = CTS_TO_SELF; + + break; + } + + //check HT op mode + if(pattrib->ht_en) + { + u8 HTOpMode = pmlmeinfo->HT_protection; + if((pmlmeext->cur_bwmode && (HTOpMode == 2 || HTOpMode == 3)) || + (!pmlmeext->cur_bwmode && HTOpMode == 3) ) + { + pattrib->vcs_mode = RTS_CTS; + break; + } + } + + //check rts + if(sz > padapter->registrypriv.rts_thresh) + { + pattrib->vcs_mode = RTS_CTS; + break; + } + + //to do list: check MIMO power save condition. + + //check AMPDU aggregation for TXOP + if(pattrib->ampdu_en==_TRUE) + { + pattrib->vcs_mode = RTS_CTS; + break; + } + + pattrib->vcs_mode = NONE_VCS; + break; + } + } +} + +static void update_attrib_phy_info(struct pkt_attrib *pattrib, struct sta_info *psta) +{ + /*if(psta->rtsen) + pattrib->vcs_mode = RTS_CTS; + else if(psta->cts2self) + pattrib->vcs_mode = CTS_TO_SELF; + else + pattrib->vcs_mode = NONE_VCS;*/ + + pattrib->mdata = 0; + pattrib->eosp = 0; + pattrib->triggered=0; + + //qos_en, ht_en, init rate, ,bw, ch_offset, sgi + pattrib->qos_en = psta->qos_option; + pattrib->ht_en = psta->htpriv.ht_option; + pattrib->raid = psta->raid; + pattrib->bwmode = psta->htpriv.bwmode; + pattrib->ch_offset = psta->htpriv.ch_offset; + pattrib->sgi= psta->htpriv.sgi; + pattrib->ampdu_en = _FALSE; + + //if(pattrib->ht_en && psta->htpriv.ampdu_enable) + //{ + // if(psta->htpriv.agg_enable_bitmap & BIT(pattrib->priority)) + // pattrib->ampdu_en = _TRUE; + //} + + + pattrib->retry_ctrl = _FALSE; + +} + +u8 qos_acm(u8 acm_mask, u8 priority) +{ + u8 change_priority = priority; + + switch (priority) + { + case 0: + case 3: + if(acm_mask & BIT(1)) + change_priority = 1; + break; + case 1: + case 2: + break; + case 4: + case 5: + if(acm_mask & BIT(2)) + change_priority = 0; + break; + case 6: + case 7: + if(acm_mask & BIT(3)) + change_priority = 5; + break; + default: + DBG_871X("qos_acm(): invalid pattrib->priority: %d!!!\n", priority); + break; + } + + return change_priority; +} + +static void set_qos(struct pkt_file *ppktfile, struct pkt_attrib *pattrib) +{ + struct ethhdr etherhdr; + struct iphdr ip_hdr; + s32 UserPriority = 0; + + + _rtw_open_pktfile(ppktfile->pkt, ppktfile); + _rtw_pktfile_read(ppktfile, (unsigned char*)ðerhdr, ETH_HLEN); + + // get UserPriority from IP hdr + if (pattrib->ether_type == 0x0800) { + _rtw_pktfile_read(ppktfile, (u8*)&ip_hdr, sizeof(ip_hdr)); +// UserPriority = (ntohs(ip_hdr.tos) >> 5) & 0x3; + UserPriority = ip_hdr.tos >> 5; + } else if (pattrib->ether_type == 0x888e) { + // "When priority processing of data frames is supported, + // a STA's SME should send EAPOL-Key frames at the highest priority." + UserPriority = 7; + } + + pattrib->priority = UserPriority; + pattrib->hdrlen = WLAN_HDR_A3_QOS_LEN; + pattrib->subtype = WIFI_QOS_DATA_TYPE; +} + +static s32 update_attrib(_adapter *padapter, _pkt *pkt, struct pkt_attrib *pattrib) +{ + uint i; + struct pkt_file pktfile; + struct sta_info *psta = NULL; + struct ethhdr etherhdr; + + sint bmcast; + struct sta_priv *pstapriv = &padapter->stapriv; + struct security_priv *psecuritypriv = &padapter->securitypriv; + struct mlme_priv *pmlmepriv = &padapter->mlmepriv; + struct qos_priv *pqospriv= &pmlmepriv->qospriv; + sint res = _SUCCESS; + + _func_enter_; + + _rtw_open_pktfile(pkt, &pktfile); + i = _rtw_pktfile_read(&pktfile, (u8*)ðerhdr, ETH_HLEN); + + pattrib->ether_type = ntohs(etherhdr.h_proto); + + + _rtw_memcpy(pattrib->dst, ðerhdr.h_dest, ETH_ALEN); + _rtw_memcpy(pattrib->src, ðerhdr.h_source, ETH_ALEN); + + pattrib->pctrl = 0; + + if ((check_fwstate(pmlmepriv, WIFI_ADHOC_STATE) == _TRUE) || + (check_fwstate(pmlmepriv, WIFI_ADHOC_MASTER_STATE) == _TRUE)) { + _rtw_memcpy(pattrib->ra, pattrib->dst, ETH_ALEN); + _rtw_memcpy(pattrib->ta, pattrib->src, ETH_ALEN); + } + else if (check_fwstate(pmlmepriv, WIFI_STATION_STATE)) { + _rtw_memcpy(pattrib->ra, get_bssid(pmlmepriv), ETH_ALEN); + _rtw_memcpy(pattrib->ta, pattrib->src, ETH_ALEN); + } + else if (check_fwstate(pmlmepriv, WIFI_AP_STATE)) { + _rtw_memcpy(pattrib->ra, pattrib->dst, ETH_ALEN); + _rtw_memcpy(pattrib->ta, get_bssid(pmlmepriv), ETH_ALEN); + } + + pattrib->pktlen = pktfile.pkt_len; + + if (ETH_P_IP == pattrib->ether_type) + { + // The following is for DHCP and ARP packet, we use cck1M to tx these packets and let LPS awake some time + // to prevent DHCP protocol fail + u8 tmp[24]; + _rtw_pktfile_read(&pktfile, &tmp[0], 24); + pattrib->dhcp_pkt = 0; + if (pktfile.pkt_len > 282) {//MINIMUM_DHCP_PACKET_SIZE) { + if (ETH_P_IP == pattrib->ether_type) {// IP header + if (((tmp[21] == 68) && (tmp[23] == 67)) || + ((tmp[21] == 67) && (tmp[23] == 68))) { + // 68 : UDP BOOTP client + // 67 : UDP BOOTP server + RT_TRACE(_module_rtl871x_xmit_c_,_drv_err_,("======================update_attrib: get DHCP Packet \n")); + // Use low rate to send DHCP packet. + //if(pMgntInfo->IOTAction & HT_IOT_ACT_WA_IOT_Broadcom) + //{ + // tcb_desc->DataRate = MgntQuery_TxRateExcludeCCKRates(ieee);//0xc;//ofdm 6m + // tcb_desc->bTxDisableRateFallBack = false; + //} + //else + // pTcb->DataRate = Adapter->MgntInfo.LowestBasicRate; + //RTPRINT(FDM, WA_IOT, ("DHCP TranslateHeader(), pTcb->DataRate = 0x%x\n", pTcb->DataRate)); + pattrib->dhcp_pkt = 1; + } + } + } + } + + if ( (pattrib->ether_type == 0x888e) || (pattrib->dhcp_pkt == 1) ) + { + rtw_set_scan_deny(padapter, 3000); + } + +#ifdef CONFIG_LPS + // If EAPOL , ARP , OR DHCP packet, driver must be in active mode. + if ( (pattrib->ether_type == 0x0806) || (pattrib->ether_type == 0x888e) || (pattrib->dhcp_pkt == 1) ) + { + rtw_lps_ctrl_wk_cmd(padapter, LPS_CTRL_SPECIAL_PACKET, 1); + } +#endif + + bmcast = IS_MCAST(pattrib->ra); + + // get sta_info + if (bmcast) { + psta = rtw_get_bcmc_stainfo(padapter); + } else { + psta = rtw_get_stainfo(pstapriv, pattrib->ra); + if (psta == NULL) { // if we cannot get psta => drrp the pkt + RT_TRACE(_module_rtl871x_xmit_c_, _drv_alert_, ("\nupdate_attrib => get sta_info fail, ra:" MAC_FMT"\n", MAC_ARG(pattrib->ra))); + #ifdef DBG_TX_DROP_FRAME + DBG_871X("DBG_TX_DROP_FRAME %s get sta_info fail, ra:" MAC_FMT"\n", __FUNCTION__, MAC_ARG(pattrib->ra)); + #endif + res =_FAIL; + goto exit; + } + else if((check_fwstate(pmlmepriv, WIFI_AP_STATE)==_TRUE)&&(!(psta->state & _FW_LINKED))) + { + res =_FAIL; + goto exit; + } + } + + if (psta) + { + pattrib->mac_id = psta->mac_id; + pattrib->psta = psta; + } + else + { + // if we cannot get psta => drop the pkt + RT_TRACE(_module_rtl871x_xmit_c_, _drv_alert_, ("\nupdate_attrib => get sta_info fail, ra:" MAC_FMT "\n", MAC_ARG(pattrib->ra))); + #ifdef DBG_TX_DROP_FRAME + DBG_871X("DBG_TX_DROP_FRAME %s get sta_info fail, ra:" MAC_FMT"\n", __FUNCTION__, MAC_ARG(pattrib->ra)); + #endif + res = _FAIL; + goto exit; + } + + pattrib->ack_policy = 0; + // get ether_hdr_len + pattrib->pkt_hdrlen = ETH_HLEN;//(pattrib->ether_type == 0x8100) ? (14 + 4 ): 14; //vlan tag + + pattrib->hdrlen = WLAN_HDR_A3_LEN; + pattrib->subtype = WIFI_DATA_TYPE; + pattrib->priority = 0; + + if (check_fwstate(pmlmepriv, WIFI_AP_STATE|WIFI_ADHOC_STATE|WIFI_ADHOC_MASTER_STATE)) + { + if(psta->qos_option) + set_qos(&pktfile, pattrib); + } + else + { + if(pqospriv->qos_option) + { + set_qos(&pktfile, pattrib); + + if(pmlmepriv->acm_mask != 0) + { + pattrib->priority = qos_acm(pmlmepriv->acm_mask, pattrib->priority); + } + } + } + + //pattrib->priority = 5; //force to used VI queue, for testing + + if (psta->ieee8021x_blocked == _TRUE) + { + RT_TRACE(_module_rtl871x_xmit_c_,_drv_err_,("\n psta->ieee8021x_blocked == _TRUE \n")); + + pattrib->encrypt = 0; + + if((pattrib->ether_type != 0x888e) && (check_fwstate(pmlmepriv, WIFI_MP_STATE) == _FALSE)) + { + RT_TRACE(_module_rtl871x_xmit_c_,_drv_err_,("\npsta->ieee8021x_blocked == _TRUE, pattrib->ether_type(%.4x) != 0x888e\n",pattrib->ether_type)); + #ifdef DBG_TX_DROP_FRAME + DBG_871X("DBG_TX_DROP_FRAME %s psta->ieee8021x_blocked == _TRUE, pattrib->ether_type(%.4x) != 0x888e\n", __FUNCTION__,pattrib->ether_type); + #endif + res = _FAIL; + goto exit; + } + } + else + { + GET_ENCRY_ALGO(psecuritypriv, psta, pattrib->encrypt, bmcast); + + switch(psecuritypriv->dot11AuthAlgrthm) + { + case dot11AuthAlgrthm_Open: + case dot11AuthAlgrthm_Shared: + case dot11AuthAlgrthm_Auto: + pattrib->key_idx = (u8)psecuritypriv->dot11PrivacyKeyIndex; + break; + case dot11AuthAlgrthm_8021X: + if(bmcast) + pattrib->key_idx = (u8)psecuritypriv->dot118021XGrpKeyid; + else + pattrib->key_idx = 0; + break; + default: + pattrib->key_idx = 0; + break; + } + + + } + + switch (pattrib->encrypt) + { + case _WEP40_: + case _WEP104_: + pattrib->iv_len = 4; + pattrib->icv_len = 4; + break; + + case _TKIP_: + pattrib->iv_len = 8; + pattrib->icv_len = 4; + + if(padapter->securitypriv.busetkipkey==_FAIL) + { + RT_TRACE(_module_rtl871x_xmit_c_,_drv_err_,("\npadapter->securitypriv.busetkipkey(%d)==_FAIL drop packet\n", padapter->securitypriv.busetkipkey)); + #ifdef DBG_TX_DROP_FRAME + DBG_871X("DBG_TX_DROP_FRAME %s padapter->securitypriv.busetkipkey(%d)==_FAIL drop packet\n", __FUNCTION__, padapter->securitypriv.busetkipkey); + #endif + res =_FAIL; + goto exit; + } + + break; + case _AES_: + RT_TRACE(_module_rtl871x_xmit_c_,_drv_err_,("\n pattrib->encrypt=%d (_AES_)\n",pattrib->encrypt)); + pattrib->iv_len = 8; + pattrib->icv_len = 8; + break; + + default: + pattrib->iv_len = 0; + pattrib->icv_len = 0; + break; + } + + RT_TRACE(_module_rtl871x_xmit_c_, _drv_info_, + ("update_attrib: encrypt=%d securitypriv.sw_encrypt=%d\n", + pattrib->encrypt, padapter->securitypriv.sw_encrypt)); + + if (pattrib->encrypt && + ((padapter->securitypriv.sw_encrypt == _TRUE) || (psecuritypriv->hw_decrypted == _FALSE))) + { + pattrib->bswenc = _TRUE; + RT_TRACE(_module_rtl871x_xmit_c_,_drv_err_, + ("update_attrib: encrypt=%d securitypriv.hw_decrypted=%d bswenc=_TRUE\n", + pattrib->encrypt, padapter->securitypriv.sw_encrypt)); + } else { + pattrib->bswenc = _FALSE; + RT_TRACE(_module_rtl871x_xmit_c_,_drv_info_,("update_attrib: bswenc=_FALSE\n")); + } + +#ifdef CONFIG_CONCURRENT_MODE + if((pattrib->encrypt && bmcast) || (pattrib->encrypt ==_WEP40_) || (pattrib->encrypt ==_WEP104_)) + { + pattrib->bswenc = _TRUE;//force using sw enc. + } +#endif + + rtw_set_tx_chksum_offload(pkt, pattrib); + + update_attrib_phy_info(pattrib, psta); + +exit: + +_func_exit_; + + return res; +} + +static s32 xmitframe_addmic(_adapter *padapter, struct xmit_frame *pxmitframe){ + sint curfragnum,length; + u8 *pframe, *payload,mic[8]; + struct mic_data micdata; + struct sta_info *stainfo; + struct qos_priv *pqospriv= &(padapter->mlmepriv.qospriv); + struct pkt_attrib *pattrib = &pxmitframe->attrib; + struct security_priv *psecuritypriv=&padapter->securitypriv; + struct xmit_priv *pxmitpriv=&padapter->xmitpriv; + u8 priority[4]={0x0,0x0,0x0,0x0}; + sint bmcst = IS_MCAST(pattrib->ra); + + if(pattrib->psta) + { + stainfo = pattrib->psta; + } + else + { + DBG_871X("%s, call rtw_get_stainfo()\n", __func__); + stainfo=rtw_get_stainfo(&padapter->stapriv ,&pattrib->ra[0]); + } + + if(stainfo==NULL) + { + DBG_871X("%s, psta==NUL\n", __func__); + return _FAIL; + } + + if(!(stainfo->state &_FW_LINKED)) + { + DBG_871X("%s, psta->state(0x%x) != _FW_LINKED\n", __func__, stainfo->state); + return _FAIL; + } + +_func_enter_; + + if(pattrib->encrypt ==_TKIP_)//if(psecuritypriv->dot11PrivacyAlgrthm==_TKIP_PRIVACY_) + { + //encode mic code + if(stainfo!= NULL){ + u8 null_key[16]={0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}; + +#ifdef CONFIG_USB_TX_AGGREGATION + pframe = pxmitframe->buf_addr + TXDESC_SIZE + (pxmitframe->pkt_offset * PACKET_OFFSET_SZ); +#else + pframe = pxmitframe->buf_addr + TXDESC_OFFSET; +#endif + + if(bmcst) + { + if(_rtw_memcmp(psecuritypriv->dot118021XGrptxmickey[psecuritypriv->dot118021XGrpKeyid].skey, null_key, 16)==_TRUE){ + //DbgPrint("\nxmitframe_addmic:stainfo->dot11tkiptxmickey==0\n"); + //rtw_msleep_os(10); + return _FAIL; + } + //start to calculate the mic code + rtw_secmicsetkey(&micdata, psecuritypriv->dot118021XGrptxmickey[psecuritypriv->dot118021XGrpKeyid].skey); + } + else + { + if(_rtw_memcmp(&stainfo->dot11tkiptxmickey.skey[0],null_key, 16)==_TRUE){ + //DbgPrint("\nxmitframe_addmic:stainfo->dot11tkiptxmickey==0\n"); + //rtw_msleep_os(10); + return _FAIL; + } + //start to calculate the mic code + rtw_secmicsetkey(&micdata, &stainfo->dot11tkiptxmickey.skey[0]); + } + + if(pframe[1]&1){ //ToDS==1 + rtw_secmicappend(&micdata, &pframe[16], 6); //DA + if(pframe[1]&2) //From Ds==1 + rtw_secmicappend(&micdata, &pframe[24], 6); + else + rtw_secmicappend(&micdata, &pframe[10], 6); + } + else{ //ToDS==0 + rtw_secmicappend(&micdata, &pframe[4], 6); //DA + if(pframe[1]&2) //From Ds==1 + rtw_secmicappend(&micdata, &pframe[16], 6); + else + rtw_secmicappend(&micdata, &pframe[10], 6); + + } + + //if(pqospriv->qos_option==1) + if(pattrib->qos_en) + priority[0]=(u8)pxmitframe->attrib.priority; + + + rtw_secmicappend(&micdata, &priority[0], 4); + + payload=pframe; + + for(curfragnum=0;curfragnumnr_frags;curfragnum++){ + payload=(u8 *)RND4((SIZE_PTR)(payload)); + RT_TRACE(_module_rtl871x_xmit_c_,_drv_err_,("===curfragnum=%d, pframe= 0x%.2x, 0x%.2x, 0x%.2x, 0x%.2x, 0x%.2x, 0x%.2x, 0x%.2x, 0x%.2x,!!!\n", + curfragnum,*payload, *(payload+1),*(payload+2),*(payload+3),*(payload+4),*(payload+5),*(payload+6),*(payload+7))); + + payload=payload+pattrib->hdrlen+pattrib->iv_len; + RT_TRACE(_module_rtl871x_xmit_c_,_drv_err_,("curfragnum=%d pattrib->hdrlen=%d pattrib->iv_len=%d",curfragnum,pattrib->hdrlen,pattrib->iv_len)); + if((curfragnum+1)==pattrib->nr_frags){ + length=pattrib->last_txcmdsz-pattrib->hdrlen-pattrib->iv_len-( (pattrib->bswenc) ? pattrib->icv_len : 0); + rtw_secmicappend(&micdata, payload,length); + payload=payload+length; + } + else{ + length=pxmitpriv->frag_len-pattrib->hdrlen-pattrib->iv_len-( (pattrib->bswenc) ? pattrib->icv_len : 0); + rtw_secmicappend(&micdata, payload, length); + payload=payload+length+pattrib->icv_len; + RT_TRACE(_module_rtl871x_xmit_c_,_drv_err_,("curfragnum=%d length=%d pattrib->icv_len=%d",curfragnum,length,pattrib->icv_len)); + } + } + rtw_secgetmic(&micdata,&(mic[0])); + RT_TRACE(_module_rtl871x_xmit_c_,_drv_err_,("xmitframe_addmic: before add mic code!!!\n")); + RT_TRACE(_module_rtl871x_xmit_c_,_drv_err_,("xmitframe_addmic: pattrib->last_txcmdsz=%d!!!\n",pattrib->last_txcmdsz)); + RT_TRACE(_module_rtl871x_xmit_c_,_drv_err_,("xmitframe_addmic: mic[0]=0x%.2x ,mic[1]=0x%.2x ,mic[2]=0x%.2x ,mic[3]=0x%.2x \n\ + mic[4]=0x%.2x ,mic[5]=0x%.2x ,mic[6]=0x%.2x ,mic[7]=0x%.2x !!!!\n", + mic[0],mic[1],mic[2],mic[3],mic[4],mic[5],mic[6],mic[7])); + //add mic code and add the mic code length in last_txcmdsz + + _rtw_memcpy(payload, &(mic[0]),8); + pattrib->last_txcmdsz+=8; + + RT_TRACE(_module_rtl871x_xmit_c_,_drv_info_,("\n ========last pkt========\n")); + payload=payload-pattrib->last_txcmdsz+8; + for(curfragnum=0;curfragnumlast_txcmdsz;curfragnum=curfragnum+8) + RT_TRACE(_module_rtl871x_xmit_c_,_drv_info_,(" %.2x, %.2x, %.2x, %.2x, %.2x, %.2x, %.2x, %.2x ", + *(payload+curfragnum), *(payload+curfragnum+1), *(payload+curfragnum+2),*(payload+curfragnum+3), + *(payload+curfragnum+4),*(payload+curfragnum+5),*(payload+curfragnum+6),*(payload+curfragnum+7))); + } + else{ + RT_TRACE(_module_rtl871x_xmit_c_,_drv_err_,("xmitframe_addmic: rtw_get_stainfo==NULL!!!\n")); + } + } + +_func_exit_; + + return _SUCCESS; +} + +static s32 xmitframe_swencrypt(_adapter *padapter, struct xmit_frame *pxmitframe){ + + struct pkt_attrib *pattrib = &pxmitframe->attrib; + //struct security_priv *psecuritypriv=&padapter->securitypriv; + +_func_enter_; + + //if((psecuritypriv->sw_encrypt)||(pattrib->bswenc)) + if(pattrib->bswenc) + { + //DBG_871X("start xmitframe_swencrypt\n"); + RT_TRACE(_module_rtl871x_xmit_c_,_drv_alert_,("### xmitframe_swencrypt\n")); + switch(pattrib->encrypt){ + case _WEP40_: + case _WEP104_: + rtw_wep_encrypt(padapter, (u8 *)pxmitframe); + break; + case _TKIP_: + rtw_tkip_encrypt(padapter, (u8 *)pxmitframe); + break; + case _AES_: + rtw_aes_encrypt(padapter, (u8 * )pxmitframe); + break; + default: + break; + } + + } else { + RT_TRACE(_module_rtl871x_xmit_c_,_drv_notice_,("### xmitframe_hwencrypt\n")); + } + +_func_exit_; + + return _SUCCESS; +} + +s32 rtw_make_wlanhdr (_adapter *padapter , u8 *hdr, struct pkt_attrib *pattrib) +{ + u16 *qc; + + struct rtw_ieee80211_hdr *pwlanhdr = (struct rtw_ieee80211_hdr *)hdr; + struct mlme_priv *pmlmepriv = &padapter->mlmepriv; + struct qos_priv *pqospriv = &pmlmepriv->qospriv; + u8 qos_option = _FALSE; +#ifdef CONFIG_TDLS + struct tdls_info *ptdlsinfo = &padapter->tdlsinfo; + struct sta_priv *pstapriv = &padapter->stapriv; + struct sta_info *ptdls_sta=NULL, *psta_backup=NULL; + u8 direct_link=0; +#endif //CONFIG_TDLS + + sint res = _SUCCESS; + u16 *fctrl = &pwlanhdr->frame_ctl; + + struct sta_info *psta; + + sint bmcst = IS_MCAST(pattrib->ra); + +_func_enter_; + + if (pattrib->psta) { + psta = pattrib->psta; + } else { + DBG_871X("%s, call rtw_get_stainfo()\n", __func__); + if(bmcst) { + psta = rtw_get_bcmc_stainfo(padapter); + } else { + psta = rtw_get_stainfo(&padapter->stapriv, pattrib->ra); + } + } + + if(psta==NULL) + { + DBG_871X("%s, psta==NUL\n", __func__); + return _FAIL; + } + + if(!(psta->state &_FW_LINKED)) + { + DBG_871X("%s, psta->state(0x%x) != _FW_LINKED\n", __func__, psta->state); + return _FAIL; + } + + _rtw_memset(hdr, 0, WLANHDR_OFFSET); + + SetFrameSubType(fctrl, pattrib->subtype); + + if (pattrib->subtype & WIFI_DATA_TYPE) + { + if ((check_fwstate(pmlmepriv, WIFI_STATION_STATE) == _TRUE)) { + //to_ds = 1, fr_ds = 0; +#ifdef CONFIG_TDLS + if((ptdlsinfo->setup_state == TDLS_LINKED_STATE)){ + ptdls_sta = rtw_get_stainfo(pstapriv, pattrib->dst); + if((ptdls_sta!=NULL)&&(ptdls_sta->tdls_sta_state & TDLS_LINKED_STATE)&&(pattrib->ether_type!=0x0806)){ + //TDLS data transfer, ToDS=0, FrDs=0 + _rtw_memcpy(pwlanhdr->addr1, pattrib->dst, ETH_ALEN); + _rtw_memcpy(pwlanhdr->addr2, pattrib->src, ETH_ALEN); + _rtw_memcpy(pwlanhdr->addr3, get_bssid(pmlmepriv), ETH_ALEN); + direct_link=1; + }else{ + // 1.Data transfer to AP + // 2.Arp pkt will relayed by AP + SetToDs(fctrl); + _rtw_memcpy(pwlanhdr->addr1, get_bssid(pmlmepriv), ETH_ALEN); + _rtw_memcpy(pwlanhdr->addr2, pattrib->src, ETH_ALEN); + _rtw_memcpy(pwlanhdr->addr3, pattrib->dst, ETH_ALEN); + } + }else +#endif //CONFIG_TDLS + { + //Data transfer to AP + SetToDs(fctrl); + _rtw_memcpy(pwlanhdr->addr1, get_bssid(pmlmepriv), ETH_ALEN); + _rtw_memcpy(pwlanhdr->addr2, pattrib->src, ETH_ALEN); + _rtw_memcpy(pwlanhdr->addr3, pattrib->dst, ETH_ALEN); + } + + if (pqospriv->qos_option) + qos_option = _TRUE; + + } + else if ((check_fwstate(pmlmepriv, WIFI_AP_STATE) == _TRUE) ) { + //to_ds = 0, fr_ds = 1; + SetFrDs(fctrl); + _rtw_memcpy(pwlanhdr->addr1, pattrib->dst, ETH_ALEN); + _rtw_memcpy(pwlanhdr->addr2, get_bssid(pmlmepriv), ETH_ALEN); + _rtw_memcpy(pwlanhdr->addr3, pattrib->src, ETH_ALEN); + + if(psta->qos_option) + qos_option = _TRUE; + } + else if ((check_fwstate(pmlmepriv, WIFI_ADHOC_STATE) == _TRUE) || + (check_fwstate(pmlmepriv, WIFI_ADHOC_MASTER_STATE) == _TRUE)) { + _rtw_memcpy(pwlanhdr->addr1, pattrib->dst, ETH_ALEN); + _rtw_memcpy(pwlanhdr->addr2, pattrib->src, ETH_ALEN); + _rtw_memcpy(pwlanhdr->addr3, get_bssid(pmlmepriv), ETH_ALEN); + + if(psta->qos_option) + qos_option = _TRUE; + } + else { + RT_TRACE(_module_rtl871x_xmit_c_,_drv_err_,("fw_state:%x is not allowed to xmit frame\n", get_fwstate(pmlmepriv))); + res = _FAIL; + goto exit; + } + + if(pattrib->mdata) + SetMData(fctrl); + + if (pattrib->encrypt) + SetPrivacy(fctrl); + + if (qos_option) + { + qc = (unsigned short *)(hdr + pattrib->hdrlen - 2); + + if (pattrib->priority) + SetPriority(qc, pattrib->priority); + + SetEOSP(qc, pattrib->eosp); + + SetAckpolicy(qc, pattrib->ack_policy); + } + + //TODO: fill HT Control Field + + //Update Seq Num will be handled by f/w + { + if(psta){ +#ifdef CONFIG_TDLS + if(direct_link==1) + { + psta_backup = psta; + psta = ptdls_sta; + } +#endif //CONFIG_TDLS + + psta->sta_xmitpriv.txseq_tid[pattrib->priority]++; + psta->sta_xmitpriv.txseq_tid[pattrib->priority] &= 0xFFF; + + pattrib->seqnum = psta->sta_xmitpriv.txseq_tid[pattrib->priority]; + + SetSeqNum(hdr, pattrib->seqnum); + + + //check if enable ampdu + if(pattrib->ht_en && psta->htpriv.ampdu_enable) + { + if(psta->htpriv.agg_enable_bitmap & BIT(pattrib->priority)) + pattrib->ampdu_en = _TRUE; + } + + //re-check if enable ampdu by BA_starting_seqctrl + if(pattrib->ampdu_en == _TRUE) + { + u16 tx_seq; + + tx_seq = psta->BA_starting_seqctrl[pattrib->priority & 0x0f]; + + //check BA_starting_seqctrl + if(SN_LESS(pattrib->seqnum, tx_seq)) + { + //DBG_871X("tx ampdu seqnum(%d) < tx_seq(%d)\n", pattrib->seqnum, tx_seq); + pattrib->ampdu_en = _FALSE;//AGG BK + } + else if(SN_EQUAL(pattrib->seqnum, tx_seq)) + { + psta->BA_starting_seqctrl[pattrib->priority & 0x0f] = (tx_seq+1)&0xfff; + + pattrib->ampdu_en = _TRUE;//AGG EN + } + else + { + //DBG_871X("tx ampdu over run\n"); + psta->BA_starting_seqctrl[pattrib->priority & 0x0f] = (pattrib->seqnum+1)&0xfff; + pattrib->ampdu_en = _TRUE;//AGG EN + } + + } + +#ifdef CONFIG_TDLS + if(direct_link==1) + { + if (pattrib->encrypt){ + pattrib->encrypt= _AES_; + pattrib->iv_len=8; + pattrib->icv_len=8; + } + + //qos_en, ht_en, init rate, ,bw, ch_offset, sgi + //pattrib->qos_en = ptdls_sta->qos_option; + pattrib->ht_en = ptdls_sta->htpriv.ht_option; + pattrib->raid = ptdls_sta->raid; + pattrib->bwmode = ptdls_sta->htpriv.bwmode; + pattrib->ch_offset = ptdls_sta->htpriv.ch_offset; + pattrib->sgi= ptdls_sta->htpriv.sgi; + + pattrib->mac_id = ptdls_sta->mac_id; + + psta = psta_backup; + } +#endif //CONFIG_TDLS + + } + } + + } + else + { + + } + +exit: + +_func_exit_; + + return res; +} + +s32 rtw_txframes_pending(_adapter *padapter) +{ + struct xmit_priv *pxmitpriv = &padapter->xmitpriv; + + return ((_rtw_queue_empty(&pxmitpriv->be_pending) == _FALSE) || + (_rtw_queue_empty(&pxmitpriv->bk_pending) == _FALSE) || + (_rtw_queue_empty(&pxmitpriv->vi_pending) == _FALSE) || + (_rtw_queue_empty(&pxmitpriv->vo_pending) == _FALSE)); +} + +s32 rtw_txframes_sta_ac_pending(_adapter *padapter, struct pkt_attrib *pattrib) +{ + struct sta_info *psta; + struct tx_servq *ptxservq; + int priority = pattrib->priority; + + if(pattrib->psta) + { + psta = pattrib->psta; + } + else + { + DBG_871X("%s, call rtw_get_stainfo()\n", __func__); + psta=rtw_get_stainfo(&padapter->stapriv ,&pattrib->ra[0]); + } + + if(psta==NULL) + { + DBG_871X("%s, psta==NUL\n", __func__); + return 0; + } + + if(!(psta->state &_FW_LINKED)) + { + DBG_871X("%s, psta->state(0x%x) != _FW_LINKED\n", __func__, psta->state); + return 0; + } + + switch(priority) + { + case 1: + case 2: + ptxservq = &(psta->sta_xmitpriv.bk_q); + break; + case 4: + case 5: + ptxservq = &(psta->sta_xmitpriv.vi_q); + break; + case 6: + case 7: + ptxservq = &(psta->sta_xmitpriv.vo_q); + break; + case 0: + case 3: + default: + ptxservq = &(psta->sta_xmitpriv.be_q); + break; + + } + + return ptxservq->qcnt; +} + +#ifdef CONFIG_TDLS + +int rtw_build_tdls_ies(_adapter * padapter, struct xmit_frame * pxmitframe, u8 *pframe, u8 action) +{ + int res=_SUCCESS; + + switch(action){ + case TDLS_SETUP_REQUEST: + rtw_build_tdls_setup_req_ies(padapter, pxmitframe, pframe); + break; + case TDLS_SETUP_RESPONSE: + rtw_build_tdls_setup_rsp_ies(padapter, pxmitframe, pframe); + break; + case TDLS_SETUP_CONFIRM: + rtw_build_tdls_setup_cfm_ies(padapter, pxmitframe, pframe); + break; + case TDLS_TEARDOWN: + rtw_build_tdls_teardown_ies(padapter, pxmitframe, pframe); + break; + case TDLS_DISCOVERY_REQUEST: + rtw_build_tdls_dis_req_ies(padapter, pxmitframe, pframe); + break; + case TDLS_PEER_TRAFFIC_INDICATION: + rtw_build_tdls_peer_traffic_indication_ies(padapter, pxmitframe, pframe); + break; + case TDLS_CHANNEL_SWITCH_REQUEST: + rtw_build_tdls_ch_switch_req_ies(padapter, pxmitframe, pframe); + break; + case TDLS_CHANNEL_SWITCH_RESPONSE: + rtw_build_tdls_ch_switch_rsp_ies(padapter, pxmitframe, pframe); + break; +#ifdef CONFIG_WFD + case TUNNELED_PROBE_REQ: + rtw_build_tunneled_probe_req_ies(padapter, pxmitframe, pframe); + break; + case TUNNELED_PROBE_RSP: + rtw_build_tunneled_probe_rsp_ies(padapter, pxmitframe, pframe); + break; +#endif //CONFIG_WFD + default: + res=_FAIL; + break; + } + + return res; +} + +s32 rtw_make_tdls_wlanhdr (_adapter *padapter , u8 *hdr, struct pkt_attrib *pattrib, u8 action) +{ + u16 *qc; + struct rtw_ieee80211_hdr *pwlanhdr = (struct rtw_ieee80211_hdr *)hdr; + struct mlme_priv *pmlmepriv = &padapter->mlmepriv; + struct qos_priv *pqospriv = &pmlmepriv->qospriv; + struct sta_priv *pstapriv = &padapter->stapriv; + struct sta_info *psta=NULL, *ptdls_sta=NULL; + u8 tdls_seq=0, baddr[ETH_ALEN] = { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff }; + + sint res = _SUCCESS; + u16 *fctrl = &pwlanhdr->frame_ctl; + +_func_enter_; + + _rtw_memset(hdr, 0, WLANHDR_OFFSET); + + SetFrameSubType(fctrl, pattrib->subtype); + + switch(action){ + case TDLS_SETUP_REQUEST: + case TDLS_SETUP_RESPONSE: + case TDLS_SETUP_CONFIRM: + case TDLS_TEARDOWN: //directly to peer STA or via AP + case TDLS_PEER_TRAFFIC_INDICATION: + case TDLS_PEER_PSM_REQUEST: //directly to peer STA or via AP + case TUNNELED_PROBE_REQ: + case TUNNELED_PROBE_RSP: + SetToDs(fctrl); + _rtw_memcpy(pwlanhdr->addr1, get_bssid(pmlmepriv), ETH_ALEN); + _rtw_memcpy(pwlanhdr->addr2, pattrib->src, ETH_ALEN); + _rtw_memcpy(pwlanhdr->addr3, pattrib->dst, ETH_ALEN); + break; + case TDLS_CHANNEL_SWITCH_REQUEST: + case TDLS_CHANNEL_SWITCH_RESPONSE: + case TDLS_PEER_PSM_RESPONSE: + case TDLS_PEER_TRAFFIC_RESPONSE: + _rtw_memcpy(pwlanhdr->addr1, pattrib->dst, ETH_ALEN); + _rtw_memcpy(pwlanhdr->addr2, pattrib->src, ETH_ALEN); + _rtw_memcpy(pwlanhdr->addr3, get_bssid(pmlmepriv), ETH_ALEN); + tdls_seq=1; + break; + case TDLS_DISCOVERY_REQUEST: //unicast: directly to peer sta, Bcast: via AP + if(_rtw_memcmp(pattrib->dst, baddr, ETH_ALEN) ) + { + SetToDs(fctrl); + _rtw_memcpy(pwlanhdr->addr1, get_bssid(pmlmepriv), ETH_ALEN); + _rtw_memcpy(pwlanhdr->addr2, pattrib->src, ETH_ALEN); + _rtw_memcpy(pwlanhdr->addr3, pattrib->dst, ETH_ALEN); + } + else + { + _rtw_memcpy(pwlanhdr->addr1, pattrib->dst, ETH_ALEN); + _rtw_memcpy(pwlanhdr->addr2, pattrib->src, ETH_ALEN); + _rtw_memcpy(pwlanhdr->addr3, get_bssid(pmlmepriv), ETH_ALEN); + tdls_seq=1; + } + break; + } + + if (pattrib->encrypt) + SetPrivacy(fctrl); + + if (pqospriv->qos_option) + { + qc = (unsigned short *)(hdr + pattrib->hdrlen - 2); + if (pattrib->priority) + SetPriority(qc, pattrib->priority); + SetAckpolicy(qc, pattrib->ack_policy); + } + + psta = pattrib->psta; + + // 1. update seq_num per link by sta_info + // 2. rewrite encrypt to _AES_, also rewrite iv_len, icv_len + if(tdls_seq==1){ + ptdls_sta=rtw_get_stainfo(pstapriv, pattrib->dst); + if(ptdls_sta){ + ptdls_sta->sta_xmitpriv.txseq_tid[pattrib->priority]++; + ptdls_sta->sta_xmitpriv.txseq_tid[pattrib->priority] &= 0xFFF; + pattrib->seqnum = ptdls_sta->sta_xmitpriv.txseq_tid[pattrib->priority]; + SetSeqNum(hdr, pattrib->seqnum); + + if (pattrib->encrypt){ + pattrib->encrypt= _AES_; + pattrib->iv_len=8; + pattrib->icv_len=8; + } + }else{ + res=_FAIL; + goto exit; + } + }else if(psta){ + psta->sta_xmitpriv.txseq_tid[pattrib->priority]++; + psta->sta_xmitpriv.txseq_tid[pattrib->priority] &= 0xFFF; + pattrib->seqnum = psta->sta_xmitpriv.txseq_tid[pattrib->priority]; + SetSeqNum(hdr, pattrib->seqnum); + } + + +exit: + +_func_exit_; + + return res; +} + +s32 rtw_xmit_tdls_coalesce(_adapter * padapter, struct xmit_frame * pxmitframe, u8 action) +{ + s32 llc_sz; + + u8 *pframe, *mem_start; + + struct sta_info *psta; + struct sta_priv *pstapriv = &padapter->stapriv; + struct mlme_priv *pmlmepriv = &padapter->mlmepriv; + struct pkt_attrib *pattrib = &pxmitframe->attrib; + u8 *pbuf_start; + s32 bmcst = IS_MCAST(pattrib->ra); + s32 res = _SUCCESS; + +_func_enter_; + + if (pattrib->psta) { + psta = pattrib->psta; + } else { + if(bmcst) { + psta = rtw_get_bcmc_stainfo(padapter); + } else { + psta = rtw_get_stainfo(&padapter->stapriv, pattrib->ra); + } + } + + if(psta==NULL) + return _FAIL; + + if (pxmitframe->buf_addr == NULL) + return _FAIL; + + pbuf_start = pxmitframe->buf_addr; + mem_start = pbuf_start + TXDESC_OFFSET; + + if (rtw_make_tdls_wlanhdr(padapter, mem_start, pattrib, action) == _FAIL) { + res = _FAIL; + goto exit; + } + + pframe = mem_start; + pframe += pattrib->hdrlen; + + //adding icv, if necessary... + if (pattrib->iv_len) + { + if (psta != NULL) + { + switch(pattrib->encrypt) + { + case _WEP40_: + case _WEP104_: + WEP_IV(pattrib->iv, psta->dot11txpn, pattrib->key_idx); + break; + case _TKIP_: + if(bmcst) + TKIP_IV(pattrib->iv, psta->dot11txpn, pattrib->key_idx); + else + TKIP_IV(pattrib->iv, psta->dot11txpn, 0); + break; + case _AES_: + if(bmcst) + AES_IV(pattrib->iv, psta->dot11txpn, pattrib->key_idx); + else + AES_IV(pattrib->iv, psta->dot11txpn, 0); + break; + } + } + + _rtw_memcpy(pframe, pattrib->iv, pattrib->iv_len); + pframe += pattrib->iv_len; + + } + + llc_sz = rtw_put_snap(pframe, pattrib->ether_type); + pframe += llc_sz; + + //pattrib->pktlen will be counted in rtw_build_tdls_ies + pattrib->pktlen = 0; + + rtw_build_tdls_ies(padapter, pxmitframe, pframe, action); + + if ((pattrib->icv_len >0 )&& (pattrib->bswenc)) { + pframe += pattrib->pktlen; + _rtw_memcpy(pframe, pattrib->icv, pattrib->icv_len); + pframe += pattrib->icv_len; + } + + pattrib->nr_frags = 1; + pattrib->last_txcmdsz = pattrib->hdrlen + pattrib->iv_len + llc_sz + + ((pattrib->bswenc) ? pattrib->icv_len : 0) + pattrib->pktlen; + + if (xmitframe_addmic(padapter, pxmitframe) == _FAIL) + { + goto exit; + } + + xmitframe_swencrypt(padapter, pxmitframe); + + update_attrib_vcs_info(padapter, pxmitframe); + +exit: + +_func_exit_; + + return res; +} +#endif //CONFIG_TDLS + +/* + * Calculate wlan 802.11 packet MAX size from pkt_attrib + * This function doesn't consider fragment case + */ +u32 rtw_calculate_wlan_pkt_size_by_attribue(struct pkt_attrib *pattrib) +{ + u32 len = 0; + + len = pattrib->hdrlen + pattrib->iv_len; // WLAN Header and IV + len += SNAP_SIZE + sizeof(u16); // LLC + len += pattrib->pktlen; + if (pattrib->encrypt == _TKIP_) len += 8; // MIC + len += pattrib->icv_len; // ICV + + return len; +} + +/* + +This sub-routine will perform all the following: + +1. remove 802.3 header. +2. create wlan_header, based on the info in pxmitframe +3. append sta's iv/ext-iv +4. append LLC +5. move frag chunk from pframe to pxmitframe->mem +6. apply sw-encrypt, if necessary. + +*/ +s32 rtw_xmitframe_coalesce(_adapter *padapter, _pkt *pkt, struct xmit_frame *pxmitframe) +{ + struct pkt_file pktfile; + + s32 frg_inx, frg_len, mpdu_len, llc_sz, mem_sz; + + SIZE_PTR addr; + + u8 *pframe, *mem_start; + + struct sta_info *psta; + //struct sta_priv *pstapriv = &padapter->stapriv; + //struct mlme_priv *pmlmepriv = &padapter->mlmepriv; + struct xmit_priv *pxmitpriv = &padapter->xmitpriv; + + struct pkt_attrib *pattrib = &pxmitframe->attrib; + + u8 *pbuf_start; + + s32 bmcst = IS_MCAST(pattrib->ra); + s32 res = _SUCCESS; + +_func_enter_; + + if (pattrib->psta) + { + psta = pattrib->psta; + } else + { + DBG_871X("%s, call rtw_get_stainfo()\n", __func__); + psta = rtw_get_stainfo(&padapter->stapriv, pattrib->ra); + } + + if(psta==NULL) + { + + DBG_871X("%s, psta==NUL\n", __func__); + return _FAIL; + } + + + if(!(psta->state &_FW_LINKED)) + { + DBG_871X("%s, psta->state(0x%x) != _FW_LINKED\n", __func__, psta->state); + return _FAIL; + } + + if (pxmitframe->buf_addr == NULL){ + DBG_8192C("==> %s buf_addr==NULL \n",__FUNCTION__); + return _FAIL; + } + + pbuf_start = pxmitframe->buf_addr; + +#ifdef CONFIG_USB_TX_AGGREGATION + mem_start = pbuf_start + TXDESC_SIZE + (pxmitframe->pkt_offset * PACKET_OFFSET_SZ); +#else + mem_start = pbuf_start + TXDESC_OFFSET; +#endif + + if (rtw_make_wlanhdr(padapter, mem_start, pattrib) == _FAIL) { + RT_TRACE(_module_rtl871x_xmit_c_, _drv_err_, ("rtw_xmitframe_coalesce: rtw_make_wlanhdr fail; drop pkt\n")); + res = _FAIL; + goto exit; + } + + _rtw_open_pktfile(pkt, &pktfile); + _rtw_pktfile_read(&pktfile, NULL, pattrib->pkt_hdrlen); + + frg_inx = 0; + frg_len = pxmitpriv->frag_len - 4;//2346-4 = 2342 + + while (1) + { + llc_sz = 0; + + mpdu_len = frg_len; + + pframe = mem_start; + + SetMFrag(mem_start); + + pframe += pattrib->hdrlen; + mpdu_len -= pattrib->hdrlen; + + //adding icv, if necessary... + if (pattrib->iv_len) + { + //if (check_fwstate(pmlmepriv, WIFI_MP_STATE)) + // psta = rtw_get_stainfo(pstapriv, get_bssid(pmlmepriv)); + //else + // psta = rtw_get_stainfo(pstapriv, pattrib->ra); + + if (psta != NULL) + { + switch(pattrib->encrypt) + { + case _WEP40_: + case _WEP104_: + WEP_IV(pattrib->iv, psta->dot11txpn, pattrib->key_idx); + break; + case _TKIP_: + if(bmcst) + TKIP_IV(pattrib->iv, psta->dot11txpn, pattrib->key_idx); + else + TKIP_IV(pattrib->iv, psta->dot11txpn, 0); + break; + case _AES_: + if(bmcst) + AES_IV(pattrib->iv, psta->dot11txpn, pattrib->key_idx); + else + AES_IV(pattrib->iv, psta->dot11txpn, 0); + break; + } + } + + _rtw_memcpy(pframe, pattrib->iv, pattrib->iv_len); + + RT_TRACE(_module_rtl871x_xmit_c_, _drv_notice_, + ("rtw_xmitframe_coalesce: keyid=%d pattrib->iv[3]=%.2x pframe=%.2x %.2x %.2x %.2x\n", + padapter->securitypriv.dot11PrivacyKeyIndex, pattrib->iv[3], *pframe, *(pframe+1), *(pframe+2), *(pframe+3))); + + pframe += pattrib->iv_len; + + mpdu_len -= pattrib->iv_len; + } + + if (frg_inx == 0) { + llc_sz = rtw_put_snap(pframe, pattrib->ether_type); + pframe += llc_sz; + mpdu_len -= llc_sz; + } + + if ((pattrib->icv_len >0) && (pattrib->bswenc)) { + mpdu_len -= pattrib->icv_len; + } + + + if (bmcst) { + // don't do fragment to broadcat/multicast packets + mem_sz = _rtw_pktfile_read(&pktfile, pframe, pattrib->pktlen); + } else { + mem_sz = _rtw_pktfile_read(&pktfile, pframe, mpdu_len); + } + + pframe += mem_sz; + + if ((pattrib->icv_len >0 )&& (pattrib->bswenc)) { + _rtw_memcpy(pframe, pattrib->icv, pattrib->icv_len); + pframe += pattrib->icv_len; + } + + frg_inx++; + + if (bmcst || (rtw_endofpktfile(&pktfile) == _TRUE)) + { + pattrib->nr_frags = frg_inx; + + pattrib->last_txcmdsz = pattrib->hdrlen + pattrib->iv_len + ((pattrib->nr_frags==1)? llc_sz:0) + + ((pattrib->bswenc) ? pattrib->icv_len : 0) + mem_sz; + + ClearMFrag(mem_start); + + break; + } else { + RT_TRACE(_module_rtl871x_xmit_c_, _drv_err_, ("%s: There're still something in packet!\n", __FUNCTION__)); + } + + addr = (SIZE_PTR)(pframe); + + mem_start = (unsigned char *)RND4(addr) + TXDESC_OFFSET; + _rtw_memcpy(mem_start, pbuf_start + TXDESC_OFFSET, pattrib->hdrlen); + } + + if (xmitframe_addmic(padapter, pxmitframe) == _FAIL) + { + RT_TRACE(_module_rtl871x_xmit_c_, _drv_err_, ("xmitframe_addmic(padapter, pxmitframe)==_FAIL\n")); + res = _FAIL; + goto exit; + } + + xmitframe_swencrypt(padapter, pxmitframe); + + if(bmcst == _FALSE) + update_attrib_vcs_info(padapter, pxmitframe); + else + pattrib->vcs_mode = NONE_VCS; + +exit: + +_func_exit_; + + return res; +} + +#ifdef CONFIG_IEEE80211W +//broadcast or multicast management pkt use BIP, unicast management pkt use CCMP encryption +s32 rtw_mgmt_xmitframe_coalesce(_adapter *padapter, _pkt *pkt, struct xmit_frame *pxmitframe) +{ + struct pkt_file pktfile; + s32 frg_inx, frg_len, mpdu_len, llc_sz, mem_sz; + SIZE_PTR addr; + u8 *pframe, *mem_start = NULL, *tmp_buf=NULL; + u8 hw_hdr_offset, subtype ; + struct sta_info *psta = NULL; + struct xmit_priv *pxmitpriv = &padapter->xmitpriv; + struct pkt_attrib *pattrib = &pxmitframe->attrib; + u8 *pbuf_start; + s32 bmcst = IS_MCAST(pattrib->ra); + s32 res = _FAIL; + u8 *BIP_AAD=NULL; + u8 *MGMT_body=NULL; + + struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; + struct mlme_priv *pmlmepriv = &padapter->mlmepriv; + struct rtw_ieee80211_hdr *pwlanhdr; + u8 MME[_MME_IE_LENGTH_]; + + _irqL irqL; + u32 ori_len; + mem_start = pframe = (u8 *)(pxmitframe->buf_addr) + TXDESC_OFFSET; + pwlanhdr = (struct rtw_ieee80211_hdr *)pframe; + +_func_enter_; + ori_len = BIP_AAD_SIZE+pattrib->pktlen; + tmp_buf = BIP_AAD = rtw_zmalloc(ori_len); + subtype = GetFrameSubType(pframe); //bit(7)~bit(2) + + if(BIP_AAD == NULL) + return _FAIL; + + _enter_critical_bh(&padapter->security_key_mutex, &irqL); + + //only support station mode + if(!check_fwstate(pmlmepriv, WIFI_STATION_STATE) || !check_fwstate(pmlmepriv, _FW_LINKED)) + goto xmitframe_coalesce_success; + + //IGTK key is not install, it may not support 802.11w + if(padapter->securitypriv.binstallBIPkey != _TRUE) + { + DBG_871X("no instll BIP key\n"); + goto xmitframe_coalesce_success; + } + //station mode doesn't need TX BIP, just ready the code + if(bmcst) + { + int frame_body_len; + u8 mic[16]; + + _rtw_memset(MME, 0, 18); + + //other types doesn't need the BIP + if(GetFrameSubType(pframe) != WIFI_DEAUTH && GetFrameSubType(pframe) != WIFI_DISASSOC) + goto xmitframe_coalesce_fail; + + MGMT_body = pframe + sizeof(struct rtw_ieee80211_hdr_3addr); + pframe += pattrib->pktlen; + + //octent 0 and 1 is key index ,BIP keyid is 4 or 5, LSB only need octent 0 + MME[0]=padapter->securitypriv.dot11wBIPKeyid; + //copy packet number + _rtw_memcpy(&MME[2], &pmlmeext->mgnt_80211w_IPN, 6); + //increase the packet number + pmlmeext->mgnt_80211w_IPN++; + + //add MME IE with MIC all zero, MME string doesn't include element id and length + pframe = rtw_set_ie(pframe, _MME_IE_ , 16 , MME, &(pattrib->pktlen)); + pattrib->last_txcmdsz = pattrib->pktlen; + // total frame length - header length + frame_body_len = pattrib->pktlen - sizeof(struct rtw_ieee80211_hdr_3addr); + + //conscruct AAD, copy frame control field + _rtw_memcpy(BIP_AAD, &pwlanhdr->frame_ctl, 2); + ClearRetry(BIP_AAD); + ClearPwrMgt(BIP_AAD); + ClearMData(BIP_AAD); + //conscruct AAD, copy address 1 to address 3 + _rtw_memcpy(BIP_AAD+2, pwlanhdr->addr1, 18); + //copy management fram body + _rtw_memcpy(BIP_AAD+BIP_AAD_SIZE, MGMT_body, frame_body_len); + /*//dump total packet include MME with zero MIC + { + int i; + printk("Total packet: "); + for(i=0; i < BIP_AAD_SIZE+frame_body_len; i++) + printk(" %02x ", BIP_AAD[i]); + printk("\n"); + }*/ + //calculate mic + if(omac1_aes_128(padapter->securitypriv.dot11wBIPKey[padapter->securitypriv.dot11wBIPKeyid].skey + , BIP_AAD, BIP_AAD_SIZE+frame_body_len, mic)) + goto xmitframe_coalesce_fail; + + /*//dump calculated mic result + { + int i; + printk("Calculated mic result: "); + for(i=0; i<16; i++) + printk(" %02x ", mic[i]); + printk("\n"); + }*/ + //copy right BIP mic value, total is 128bits, we use the 0~63 bits + _rtw_memcpy(pframe-8, mic, 8); + /*/dump all packet after mic ok + { + int pp; + printk("pattrib->pktlen = %d \n", pattrib->pktlen); + for(pp=0;pp< pattrib->pktlen; pp++) + printk(" %02x ", mem_start[pp]); + printk("\n"); + }*/ + } + else //unicast mgmt frame TX + { + //start to encrypt mgmt frame + if(subtype == WIFI_DEAUTH || subtype == WIFI_DISASSOC || + subtype == WIFI_REASSOCREQ || subtype == WIFI_ACTION) + { + if (pattrib->psta) + psta = pattrib->psta; + else + { + psta = rtw_get_stainfo(&padapter->stapriv, pattrib->ra); + } + + if(psta==NULL) + { + + DBG_871X("%s, psta==NUL\n", __func__); + goto xmitframe_coalesce_fail; + } + + if(!(psta->state & _FW_LINKED) || pxmitframe->buf_addr==NULL) + { + DBG_871X("%s, not _FW_LINKED or addr null\n", __func__); + goto xmitframe_coalesce_fail; + } + + //DBG_871X("%s, action frame category=%d \n", __func__, pframe[WLAN_HDR_A3_LEN]); + //according 802.11-2012 standard, these five types are not robust types + if(subtype == WIFI_ACTION && + (pframe[WLAN_HDR_A3_LEN] == RTW_WLAN_CATEGORY_PUBLIC || + pframe[WLAN_HDR_A3_LEN] == RTW_WLAN_CATEGORY_HT || + pframe[WLAN_HDR_A3_LEN] == RTW_WLAN_CATEGORY_UNPROTECTED_WNM || + pframe[WLAN_HDR_A3_LEN] == RTW_WLAN_CATEGORY_SELF_PROTECTED || + pframe[WLAN_HDR_A3_LEN] == RTW_WLAN_CATEGORY_P2P)) + goto xmitframe_coalesce_fail; + //before encrypt dump the management packet content + /*{ + int i; + printk("Management pkt: "); + for(i=0; ipktlen; i++) + printk(" %02x ", pframe[i]); + printk("=======\n"); + }*/ + if(pattrib->encrypt>0) + _rtw_memcpy(pattrib->dot118021x_UncstKey.skey, psta->dot118021x_UncstKey.skey, 16); + //bakeup original management packet + _rtw_memcpy(tmp_buf, pframe, pattrib->pktlen); + //move to data portion + pframe += pattrib->hdrlen; + + //802.11w unicast management packet must be _AES_ + pattrib->iv_len = 8; + //it's MIC of AES + pattrib->icv_len = 8; + + switch(pattrib->encrypt) + { + case _AES_: + //set AES IV header + AES_IV(pattrib->iv, psta->dot11wtxpn, 0); + break; + default: + goto xmitframe_coalesce_fail; + } + //insert iv header into management frame + _rtw_memcpy(pframe, pattrib->iv, pattrib->iv_len); + pframe += pattrib->iv_len; + //copy mgmt data portion after CCMP header + _rtw_memcpy(pframe, tmp_buf+pattrib->hdrlen, pattrib->pktlen-pattrib->hdrlen); + //move pframe to end of mgmt pkt + pframe += pattrib->pktlen-pattrib->hdrlen; + //add 8 bytes CCMP IV header to length + pattrib->pktlen += pattrib->iv_len; + /*//dump management packet include AES IV header + { + int i; + printk("Management pkt + IV: "); + //for(i=0; ipktlen; i++) + //printk(" %02x ", mem_start[i]); + printk("@@@@@@@@@@@@@\n"); + }*/ + + if ((pattrib->icv_len >0 )&& (pattrib->bswenc)) { + _rtw_memcpy(pframe, pattrib->icv, pattrib->icv_len); + pframe += pattrib->icv_len; + } + //add 8 bytes MIC + pattrib->pktlen += pattrib->icv_len; + //set final tx command size + pattrib->last_txcmdsz = pattrib->pktlen; + + //set protected bit must be beofre SW encrypt + SetPrivacy(mem_start); + /*//dump management packet include AES header + { + int i; + printk("prepare to enc Management pkt + IV: "); + for(i=0; ipktlen; i++) + printk(" %02x ", mem_start[i]); + printk("@@@@@@@@@@@@@\n"); + }*/ + //software encrypt + xmitframe_swencrypt(padapter, pxmitframe); + } + } + +xmitframe_coalesce_success: + _exit_critical_bh(&padapter->security_key_mutex, &irqL); + rtw_mfree(BIP_AAD, ori_len); +_func_exit_; + return _SUCCESS; + +xmitframe_coalesce_fail: + _exit_critical_bh(&padapter->security_key_mutex, &irqL); + rtw_mfree(BIP_AAD, ori_len); +_func_exit_; + + return _FAIL; +} +#endif //CONFIG_IEEE80211W + +/* Logical Link Control(LLC) SubNetwork Attachment Point(SNAP) header + * IEEE LLC/SNAP header contains 8 octets + * First 3 octets comprise the LLC portion + * SNAP portion, 5 octets, is divided into two fields: + * Organizationally Unique Identifier(OUI), 3 octets, + * type, defined by that organization, 2 octets. + */ +s32 rtw_put_snap(u8 *data, u16 h_proto) +{ + struct ieee80211_snap_hdr *snap; + u8 *oui; + +_func_enter_; + + snap = (struct ieee80211_snap_hdr *)data; + snap->dsap = 0xaa; + snap->ssap = 0xaa; + snap->ctrl = 0x03; + + if (h_proto == 0x8137 || h_proto == 0x80f3) + oui = P802_1H_OUI; + else + oui = RFC1042_OUI; + + snap->oui[0] = oui[0]; + snap->oui[1] = oui[1]; + snap->oui[2] = oui[2]; + + *(u16 *)(data + SNAP_SIZE) = htons(h_proto); + +_func_exit_; + + return SNAP_SIZE + sizeof(u16); +} + +void rtw_update_protection(_adapter *padapter, u8 *ie, uint ie_len) +{ + + uint protection; + u8 *perp; + sint erp_len; + struct xmit_priv *pxmitpriv = &padapter->xmitpriv; + struct registry_priv *pregistrypriv = &padapter->registrypriv; + +_func_enter_; + + switch(pxmitpriv->vcs_setting) + { + case DISABLE_VCS: + pxmitpriv->vcs = NONE_VCS; + break; + + case ENABLE_VCS: + break; + + case AUTO_VCS: + default: + perp = rtw_get_ie(ie, _ERPINFO_IE_, &erp_len, ie_len); + if(perp == NULL) + { + pxmitpriv->vcs = NONE_VCS; + } + else + { + protection = (*(perp + 2)) & BIT(1); + if (protection) + { + if(pregistrypriv->vcs_type == RTS_CTS) + pxmitpriv->vcs = RTS_CTS; + else + pxmitpriv->vcs = CTS_TO_SELF; + } + else + pxmitpriv->vcs = NONE_VCS; + } + + break; + + } + +_func_exit_; + +} + +void rtw_count_tx_stats(_adapter *padapter, struct xmit_frame *pxmitframe, int sz) +{ + struct sta_info *psta = NULL; + struct stainfo_stats *pstats = NULL; + struct xmit_priv *pxmitpriv = &padapter->xmitpriv; + struct mlme_priv *pmlmepriv = &(padapter->mlmepriv); + + if((pxmitframe->frame_tag&0x0f) == DATA_FRAMETAG) + { + pxmitpriv->tx_bytes += sz; +#ifdef CONFIG_USB_TX_AGGREGATION + pmlmepriv->LinkDetectInfo.NumTxOkInPeriod += pxmitframe->agg_num; +#else + pmlmepriv->LinkDetectInfo.NumTxOkInPeriod++; +#endif + + psta = pxmitframe->attrib.psta; + + if(psta) + { + pstats = &psta->sta_stats; +#ifdef CONFIG_USB_TX_AGGREGATION + pstats->tx_pkts += pxmitframe->agg_num; +#else + pstats->tx_pkts++; +#endif + pstats->tx_bytes += sz; + } + } + +} + +struct xmit_buf *rtw_alloc_xmitbuf_ext(struct xmit_priv *pxmitpriv) +{ + _irqL irqL; + struct xmit_buf *pxmitbuf = NULL; + _list *plist, *phead; + _queue *pfree_queue = &pxmitpriv->free_xmit_extbuf_queue; + +_func_enter_; + + _enter_critical(&pfree_queue->lock, &irqL); + + if(_rtw_queue_empty(pfree_queue) == _TRUE) { + pxmitbuf = NULL; + } else { + + phead = get_list_head(pfree_queue); + + plist = get_next(phead); + + pxmitbuf = LIST_CONTAINOR(plist, struct xmit_buf, list); + + rtw_list_delete(&(pxmitbuf->list)); + } + + if (pxmitbuf != NULL) + { + pxmitpriv->free_xmit_extbuf_cnt--; + #ifdef DBG_XMIT_BUF + DBG_871X("DBG_XMIT_BUF ALLOC no=%d, free_xmit_extbuf_cnt=%d\n",pxmitbuf->no, pxmitpriv->free_xmit_extbuf_cnt); + #endif + + + pxmitbuf->priv_data = NULL; + +#ifdef CONFIG_SDIO_HCI + pxmitbuf->len = 0; + pxmitbuf->pdata = pxmitbuf->ptail = pxmitbuf->phead; +#endif +#ifdef CONFIG_PCI_HCI + pxmitbuf->len = 0; +#endif + + if (pxmitbuf->sctx) { + DBG_871X("%s pxmitbuf->sctx is not NULL\n", __func__); + rtw_sctx_done_err(&pxmitbuf->sctx, RTW_SCTX_DONE_BUF_ALLOC); + } + + } + + _exit_critical(&pfree_queue->lock, &irqL); + +_func_exit_; + + return pxmitbuf; +} + +s32 rtw_free_xmitbuf_ext(struct xmit_priv *pxmitpriv, struct xmit_buf *pxmitbuf) +{ + _irqL irqL; + _queue *pfree_queue = &pxmitpriv->free_xmit_extbuf_queue; + +_func_enter_; + + if(pxmitbuf==NULL) + { + return _FAIL; + } + + _enter_critical(&pfree_queue->lock, &irqL); + + rtw_list_delete(&pxmitbuf->list); + + rtw_list_insert_tail(&(pxmitbuf->list), get_list_head(pfree_queue)); + pxmitpriv->free_xmit_extbuf_cnt++; + #ifdef DBG_XMIT_BUF + DBG_871X("DBG_XMIT_BUF FREE no=%d, free_xmit_extbuf_cnt=%d\n",pxmitbuf->no ,pxmitpriv->free_xmit_extbuf_cnt); + #endif + + _exit_critical(&pfree_queue->lock, &irqL); + +_func_exit_; + + return _SUCCESS; +} + +struct xmit_buf *rtw_alloc_xmitbuf(struct xmit_priv *pxmitpriv) +{ + _irqL irqL; + struct xmit_buf *pxmitbuf = NULL; + _list *plist, *phead; + _queue *pfree_xmitbuf_queue = &pxmitpriv->free_xmitbuf_queue; + +_func_enter_; + + //DBG_871X("+rtw_alloc_xmitbuf\n"); + + _enter_critical(&pfree_xmitbuf_queue->lock, &irqL); + + if(_rtw_queue_empty(pfree_xmitbuf_queue) == _TRUE) { + pxmitbuf = NULL; + } else { + + phead = get_list_head(pfree_xmitbuf_queue); + + plist = get_next(phead); + + pxmitbuf = LIST_CONTAINOR(plist, struct xmit_buf, list); + + rtw_list_delete(&(pxmitbuf->list)); + } + + if (pxmitbuf != NULL) + { + pxmitpriv->free_xmitbuf_cnt--; + #ifdef DBG_XMIT_BUF + DBG_871X("DBG_XMIT_BUF ALLOC no=%d, free_xmitbuf_cnt=%d\n",pxmitbuf->no, pxmitpriv->free_xmitbuf_cnt); + #endif + //DBG_871X("alloc, free_xmitbuf_cnt=%d\n", pxmitpriv->free_xmitbuf_cnt); + + pxmitbuf->priv_data = NULL; + +#ifdef CONFIG_SDIO_HCI + pxmitbuf->len = 0; + pxmitbuf->pdata = pxmitbuf->ptail = pxmitbuf->phead; +#endif +#ifdef CONFIG_PCI_HCI + pxmitbuf->len = 0; +#endif + + if (pxmitbuf->sctx) { + DBG_871X("%s pxmitbuf->sctx is not NULL\n", __func__); + rtw_sctx_done_err(&pxmitbuf->sctx, RTW_SCTX_DONE_BUF_ALLOC); + } + } + #ifdef DBG_XMIT_BUF + else + { + DBG_871X("DBG_XMIT_BUF rtw_alloc_xmitbuf return NULL\n"); + } + #endif + + _exit_critical(&pfree_xmitbuf_queue->lock, &irqL); + +_func_exit_; + + return pxmitbuf; +} + +s32 rtw_free_xmitbuf(struct xmit_priv *pxmitpriv, struct xmit_buf *pxmitbuf) +{ + _irqL irqL; + _queue *pfree_xmitbuf_queue = &pxmitpriv->free_xmitbuf_queue; + +_func_enter_; + + //DBG_871X("+rtw_free_xmitbuf\n"); + + if(pxmitbuf==NULL) + { + return _FAIL; + } + + if (pxmitbuf->sctx) { + DBG_871X("%s pxmitbuf->sctx is not NULL\n", __func__); + rtw_sctx_done_err(&pxmitbuf->sctx, RTW_SCTX_DONE_BUF_FREE); + } + + if(pxmitbuf->ext_tag) + { + rtw_free_xmitbuf_ext(pxmitpriv, pxmitbuf); + } + else + { + _enter_critical(&pfree_xmitbuf_queue->lock, &irqL); + + rtw_list_delete(&pxmitbuf->list); + + rtw_list_insert_tail(&(pxmitbuf->list), get_list_head(pfree_xmitbuf_queue)); + + pxmitpriv->free_xmitbuf_cnt++; + //DBG_871X("FREE, free_xmitbuf_cnt=%d\n", pxmitpriv->free_xmitbuf_cnt); + #ifdef DBG_XMIT_BUF + DBG_871X("DBG_XMIT_BUF FREE no=%d, free_xmitbuf_cnt=%d\n",pxmitbuf->no ,pxmitpriv->free_xmitbuf_cnt); + #endif + _exit_critical(&pfree_xmitbuf_queue->lock, &irqL); + } + +_func_exit_; + + return _SUCCESS; +} + +void rtw_init_xmitframe(struct xmit_frame *pxframe) +{ + if (pxframe != NULL)//default value setting + { + pxframe->buf_addr = NULL; + pxframe->pxmitbuf = NULL; + + _rtw_memset(&pxframe->attrib, 0, sizeof(struct pkt_attrib)); + //pxframe->attrib.psta = NULL; + + pxframe->frame_tag = DATA_FRAMETAG; + +#ifdef CONFIG_USB_HCI + pxframe->pkt = NULL; + pxframe->pkt_offset = 1;//default use pkt_offset to fill tx desc + +#ifdef CONFIG_USB_TX_AGGREGATION + pxframe->agg_num = 1; +#endif + +#endif //#ifdef CONFIG_USB_HCI + +#if defined(CONFIG_SDIO_HCI) || defined(CONFIG_GSPI_HCI) + pxframe->pg_num = 1; + pxframe->agg_num = 1; +#endif + +#ifdef CONFIG_XMIT_ACK + pxframe->ack_report = 0; +#endif + + } +} + +/* +Calling context: +1. OS_TXENTRY +2. RXENTRY (rx_thread or RX_ISR/RX_CallBack) + +If we turn on USE_RXTHREAD, then, no need for critical section. +Otherwise, we must use _enter/_exit critical to protect free_xmit_queue... + +Must be very very cautious... + +*/ +struct xmit_frame *rtw_alloc_xmitframe(struct xmit_priv *pxmitpriv)//(_queue *pfree_xmit_queue) +{ + /* + Please remember to use all the osdep_service api, + and lock/unlock or _enter/_exit critical to protect + pfree_xmit_queue + */ + + _irqL irqL; + struct xmit_frame *pxframe = NULL; + _list *plist, *phead; + _queue *pfree_xmit_queue = &pxmitpriv->free_xmit_queue; +#ifdef PLATFORM_LINUX + _adapter *padapter = pxmitpriv->adapter; +#endif //PLATFORM_LINUX + +_func_enter_; + + _enter_critical_bh(&pfree_xmit_queue->lock, &irqL); + + if (_rtw_queue_empty(pfree_xmit_queue) == _TRUE) { + RT_TRACE(_module_rtl871x_xmit_c_,_drv_info_,("rtw_alloc_xmitframe:%d\n", pxmitpriv->free_xmitframe_cnt)); + pxframe = NULL; + } else { + phead = get_list_head(pfree_xmit_queue); + + plist = get_next(phead); + + pxframe = LIST_CONTAINOR(plist, struct xmit_frame, list); + + rtw_list_delete(&(pxframe->list)); + pxmitpriv->free_xmitframe_cnt--; + RT_TRACE(_module_rtl871x_xmit_c_, _drv_info_, ("rtw_alloc_xmitframe():free_xmitframe_cnt=%d\n", pxmitpriv->free_xmitframe_cnt)); + } + +#ifdef PLATFORM_LINUX +#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,35)) + if(pxmitpriv->free_xmitframe_cnt==1) + { + if (!rtw_netif_queue_stopped(padapter->pnetdev)) + rtw_netif_stop_queue(padapter->pnetdev); + } +#endif +#endif + + _exit_critical_bh(&pfree_xmit_queue->lock, &irqL); + + rtw_init_xmitframe(pxframe); + +_func_exit_; + + return pxframe; +} + +struct xmit_frame *rtw_alloc_xmitframe_ext(struct xmit_priv *pxmitpriv) +{ + _irqL irqL; + struct xmit_frame *pxframe = NULL; + _list *plist, *phead; + _queue *queue = &pxmitpriv->free_xframe_ext_queue; + +_func_enter_; + + _enter_critical_bh(&queue->lock, &irqL); + + if (_rtw_queue_empty(queue) == _TRUE) { + RT_TRACE(_module_rtl871x_xmit_c_,_drv_info_,("rtw_alloc_xmitframe_ext:%d\n", pxmitpriv->free_xframe_ext_cnt)); + pxframe = NULL; + } else { + phead = get_list_head(queue); + plist = get_next(phead); + pxframe = LIST_CONTAINOR(plist, struct xmit_frame, list); + + rtw_list_delete(&(pxframe->list)); + pxmitpriv->free_xframe_ext_cnt--; + RT_TRACE(_module_rtl871x_xmit_c_, _drv_info_, ("rtw_alloc_xmitframe_ext():free_xmitframe_cnt=%d\n", pxmitpriv->free_xframe_ext_cnt)); + } + + _exit_critical_bh(&queue->lock, &irqL); + + rtw_init_xmitframe(pxframe); + +_func_exit_; + + return pxframe; +} + +struct xmit_frame *rtw_alloc_xmitframe_once(struct xmit_priv *pxmitpriv) +{ + struct xmit_frame *pxframe = NULL; + u8 *alloc_addr; + + alloc_addr = rtw_zmalloc(sizeof(struct xmit_frame) + 4); + + if (alloc_addr == NULL) + goto exit; + + pxframe = (struct xmit_frame *)N_BYTE_ALIGMENT((SIZE_PTR)(alloc_addr), 4); + pxframe->alloc_addr = alloc_addr; + + pxframe->padapter = pxmitpriv->adapter; + pxframe->frame_tag = NULL_FRAMETAG; + + pxframe->pkt = NULL; + + pxframe->buf_addr = NULL; + pxframe->pxmitbuf = NULL; + + rtw_init_xmitframe(pxframe); + + DBG_871X("################## %s ##################\n", __func__); + +exit: + return pxframe; +} + +s32 rtw_free_xmitframe(struct xmit_priv *pxmitpriv, struct xmit_frame *pxmitframe) +{ + _irqL irqL; + _queue *queue; + _adapter *padapter = pxmitpriv->adapter; + _pkt *pndis_pkt = NULL; + +_func_enter_; + + if (pxmitframe == NULL) { + RT_TRACE(_module_rtl871x_xmit_c_, _drv_err_, ("======rtw_free_xmitframe():pxmitframe==NULL!!!!!!!!!!\n")); + goto exit; + } + + if (pxmitframe->pkt){ + pndis_pkt = pxmitframe->pkt; + pxmitframe->pkt = NULL; + } + + if (pxmitframe->alloc_addr) { + DBG_871X("################## %s with alloc_addr ##################\n", __func__); + rtw_mfree(pxmitframe->alloc_addr, sizeof(struct xmit_frame) + 4); + goto check_pkt_complete; + } + + if (pxmitframe->ext_tag == 0) + queue = &pxmitpriv->free_xmit_queue; + else if(pxmitframe->ext_tag == 1) + queue = &pxmitpriv->free_xframe_ext_queue; + else + {} + + _enter_critical_bh(&queue->lock, &irqL); + + rtw_list_delete(&pxmitframe->list); + rtw_list_insert_tail(&pxmitframe->list, get_list_head(queue)); + if (pxmitframe->ext_tag == 0) { + pxmitpriv->free_xmitframe_cnt++; + RT_TRACE(_module_rtl871x_xmit_c_, _drv_debug_, ("rtw_free_xmitframe():free_xmitframe_cnt=%d\n", pxmitpriv->free_xmitframe_cnt)); + } else if(pxmitframe->ext_tag == 1) { + pxmitpriv->free_xframe_ext_cnt++; + RT_TRACE(_module_rtl871x_xmit_c_, _drv_debug_, ("rtw_free_xmitframe():free_xframe_ext_cnt=%d\n", pxmitpriv->free_xframe_ext_cnt)); + } else { + } + + _exit_critical_bh(&queue->lock, &irqL); + +check_pkt_complete: + + if(pndis_pkt) + rtw_os_pkt_complete(padapter, pndis_pkt); + +exit: + +_func_exit_; + + return _SUCCESS; +} + +void rtw_free_xmitframe_queue(struct xmit_priv *pxmitpriv, _queue *pframequeue) +{ + _irqL irqL; + _list *plist, *phead; + struct xmit_frame *pxmitframe; + +_func_enter_; + + _enter_critical_bh(&(pframequeue->lock), &irqL); + + phead = get_list_head(pframequeue); + plist = get_next(phead); + + while (rtw_end_of_queue_search(phead, plist) == _FALSE) + { + + pxmitframe = LIST_CONTAINOR(plist, struct xmit_frame, list); + + plist = get_next(plist); + + rtw_free_xmitframe(pxmitpriv,pxmitframe); + + } + _exit_critical_bh(&(pframequeue->lock), &irqL); + +_func_exit_; +} + +s32 rtw_xmitframe_enqueue(_adapter *padapter, struct xmit_frame *pxmitframe) +{ + if (rtw_xmit_classifier(padapter, pxmitframe) == _FAIL) + { + RT_TRACE(_module_rtl871x_xmit_c_, _drv_err_, + ("rtw_xmitframe_enqueue: drop xmit pkt for classifier fail\n")); +// pxmitframe->pkt = NULL; + return _FAIL; + } + + return _SUCCESS; +} + +static struct xmit_frame *dequeue_one_xmitframe(struct xmit_priv *pxmitpriv, struct hw_xmit *phwxmit, struct tx_servq *ptxservq, _queue *pframe_queue) +{ + _list *xmitframe_plist, *xmitframe_phead; + struct xmit_frame *pxmitframe=NULL; + + xmitframe_phead = get_list_head(pframe_queue); + xmitframe_plist = get_next(xmitframe_phead); + + while ((rtw_end_of_queue_search(xmitframe_phead, xmitframe_plist)) == _FALSE) + { + pxmitframe = LIST_CONTAINOR(xmitframe_plist, struct xmit_frame, list); + + xmitframe_plist = get_next(xmitframe_plist); + +/*#ifdef RTK_DMP_PLATFORM +#ifdef CONFIG_USB_TX_AGGREGATION + if((ptxservq->qcnt>0) && (ptxservq->qcnt<=2)) + { + pxmitframe = NULL; + + tasklet_schedule(&pxmitpriv->xmit_tasklet); + + break; + } +#endif +#endif*/ + rtw_list_delete(&pxmitframe->list); + + ptxservq->qcnt--; + + break; + + pxmitframe = NULL; + + } + + return pxmitframe; +} + +struct xmit_frame* rtw_dequeue_xframe(struct xmit_priv *pxmitpriv, struct hw_xmit *phwxmit_i, sint entry) +{ + _irqL irqL0; + _list *sta_plist, *sta_phead; + struct hw_xmit *phwxmit; + struct tx_servq *ptxservq = NULL; + _queue *pframe_queue = NULL; + struct xmit_frame *pxmitframe = NULL; + _adapter *padapter = pxmitpriv->adapter; + struct registry_priv *pregpriv = &padapter->registrypriv; + int i, inx[4]; +#ifdef CONFIG_USB_HCI +// int j, tmp, acirp_cnt[4]; +#endif + +_func_enter_; + + inx[0] = 0; inx[1] = 1; inx[2] = 2; inx[3] = 3; + + if(pregpriv->wifi_spec==1) + { + int j, tmp, acirp_cnt[4]; +#if 0 + if(flagsvo, 1->vi, 2->be, 3->bk. + acirp_cnt[0] = pxmitpriv->voq_cnt; + acirp_cnt[1] = pxmitpriv->viq_cnt; + acirp_cnt[2] = pxmitpriv->beq_cnt; + acirp_cnt[3] = pxmitpriv->bkq_cnt; + + for(i=0; i<4; i++) + { + for(j=i+1; j<4; j++) + { + if(acirp_cnt[j]lock, &irqL0); + + for(i = 0; i < entry; i++) + { + phwxmit = phwxmit_i + inx[i]; + + //_enter_critical_ex(&phwxmit->sta_queue->lock, &irqL0); + + sta_phead = get_list_head(phwxmit->sta_queue); + sta_plist = get_next(sta_phead); + + while ((rtw_end_of_queue_search(sta_phead, sta_plist)) == _FALSE) + { + + ptxservq= LIST_CONTAINOR(sta_plist, struct tx_servq, tx_pending); + + pframe_queue = &ptxservq->sta_pending; + + pxmitframe = dequeue_one_xmitframe(pxmitpriv, phwxmit, ptxservq, pframe_queue); + + if(pxmitframe) + { + phwxmit->accnt--; + + //Remove sta node when there is no pending packets. + if(_rtw_queue_empty(pframe_queue)) //must be done after get_next and before break + rtw_list_delete(&ptxservq->tx_pending); + + //_exit_critical_ex(&phwxmit->sta_queue->lock, &irqL0); + + goto exit; + } + + sta_plist = get_next(sta_plist); + + } + + //_exit_critical_ex(&phwxmit->sta_queue->lock, &irqL0); + + } + +exit: + + _exit_critical_bh(&pxmitpriv->lock, &irqL0); + +_func_exit_; + + return pxmitframe; +} + +#if 1 +struct tx_servq *rtw_get_sta_pending(_adapter *padapter, struct sta_info *psta, sint up, u8 *ac) +{ + struct tx_servq *ptxservq=NULL; + +_func_enter_; + + switch (up) + { + case 1: + case 2: + ptxservq = &(psta->sta_xmitpriv.bk_q); + *(ac) = 3; + RT_TRACE(_module_rtl871x_xmit_c_,_drv_info_,("rtw_get_sta_pending : BK \n")); + break; + + case 4: + case 5: + ptxservq = &(psta->sta_xmitpriv.vi_q); + *(ac) = 1; + RT_TRACE(_module_rtl871x_xmit_c_,_drv_info_,("rtw_get_sta_pending : VI\n")); + break; + + case 6: + case 7: + ptxservq = &(psta->sta_xmitpriv.vo_q); + *(ac) = 0; + RT_TRACE(_module_rtl871x_xmit_c_,_drv_info_,("rtw_get_sta_pending : VO \n")); + break; + + case 0: + case 3: + default: + ptxservq = &(psta->sta_xmitpriv.be_q); + *(ac) = 2; + RT_TRACE(_module_rtl871x_xmit_c_,_drv_info_,("rtw_get_sta_pending : BE \n")); + break; + + } + +_func_exit_; + + return ptxservq; +} +#else +__inline static struct tx_servq *rtw_get_sta_pending + (_adapter *padapter, _queue **ppstapending, struct sta_info *psta, sint up) +{ + struct tx_servq *ptxservq; + struct hw_xmit *phwxmits = padapter->xmitpriv.hwxmits; + +_func_enter_; + +#ifdef CONFIG_RTL8711 + + if(IS_MCAST(psta->hwaddr)) + { + ptxservq = &(psta->sta_xmitpriv.be_q); // we will use be_q to queue bc/mc frames in BCMC_stainfo + *ppstapending = &padapter->xmitpriv.bm_pending; + } + else +#endif + { + switch (up) + { + case 1: + case 2: + ptxservq = &(psta->sta_xmitpriv.bk_q); + *ppstapending = &padapter->xmitpriv.bk_pending; + (phwxmits+3)->accnt++; + RT_TRACE(_module_rtl871x_xmit_c_,_drv_info_,("rtw_get_sta_pending : BK \n")); + break; + + case 4: + case 5: + ptxservq = &(psta->sta_xmitpriv.vi_q); + *ppstapending = &padapter->xmitpriv.vi_pending; + (phwxmits+1)->accnt++; + RT_TRACE(_module_rtl871x_xmit_c_,_drv_info_,("rtw_get_sta_pending : VI\n")); + break; + + case 6: + case 7: + ptxservq = &(psta->sta_xmitpriv.vo_q); + *ppstapending = &padapter->xmitpriv.vo_pending; + (phwxmits+0)->accnt++; + RT_TRACE(_module_rtl871x_xmit_c_,_drv_info_,("rtw_get_sta_pending : VO \n")); + break; + + case 0: + case 3: + default: + ptxservq = &(psta->sta_xmitpriv.be_q); + *ppstapending = &padapter->xmitpriv.be_pending; + (phwxmits+2)->accnt++; + RT_TRACE(_module_rtl871x_xmit_c_,_drv_info_,("rtw_get_sta_pending : BE \n")); + break; + + } + + } + +_func_exit_; + + return ptxservq; +} +#endif + +/* + * Will enqueue pxmitframe to the proper queue, + * and indicate it to xx_pending list..... + */ +s32 rtw_xmit_classifier(_adapter *padapter, struct xmit_frame *pxmitframe) +{ + //_irqL irqL0; + u8 ac_index; + struct sta_info *psta; + struct tx_servq *ptxservq; + struct pkt_attrib *pattrib = &pxmitframe->attrib; + struct sta_priv *pstapriv = &padapter->stapriv; + struct hw_xmit *phwxmits = padapter->xmitpriv.hwxmits; + sint res = _SUCCESS; + +_func_enter_; + + if (pattrib->psta) { + psta = pattrib->psta; + } else { + DBG_871X("%s, call rtw_get_stainfo()\n", __func__); + psta = rtw_get_stainfo(pstapriv, pattrib->ra); + } + + if (psta == NULL) { + res = _FAIL; + DBG_8192C("rtw_xmit_classifier: psta == NULL\n"); + RT_TRACE(_module_rtl871x_xmit_c_,_drv_err_,("rtw_xmit_classifier: psta == NULL\n")); + goto exit; + } + + if(!(psta->state &_FW_LINKED)) + { + DBG_871X("%s, psta->state(0x%x) != _FW_LINKED\n", __func__, psta->state); + return _FAIL; + } + + ptxservq = rtw_get_sta_pending(padapter, psta, pattrib->priority, (u8 *)(&ac_index)); + + //_enter_critical(&pstapending->lock, &irqL0); + + if (rtw_is_list_empty(&ptxservq->tx_pending)) { + rtw_list_insert_tail(&ptxservq->tx_pending, get_list_head(phwxmits[ac_index].sta_queue)); + } + + //_enter_critical(&ptxservq->sta_pending.lock, &irqL1); + + rtw_list_insert_tail(&pxmitframe->list, get_list_head(&ptxservq->sta_pending)); + ptxservq->qcnt++; + phwxmits[ac_index].accnt++; + + //_exit_critical(&ptxservq->sta_pending.lock, &irqL1); + + //_exit_critical(&pstapending->lock, &irqL0); + +exit: + +_func_exit_; + + return res; +} + +void rtw_alloc_hwxmits(_adapter *padapter) +{ + struct hw_xmit *hwxmits; + struct xmit_priv *pxmitpriv = &padapter->xmitpriv; + + pxmitpriv->hwxmit_entry = HWXMIT_ENTRY; + + pxmitpriv->hwxmits = (struct hw_xmit *)rtw_zmalloc(sizeof (struct hw_xmit) * pxmitpriv->hwxmit_entry); + + hwxmits = pxmitpriv->hwxmits; + + if(pxmitpriv->hwxmit_entry == 5) + { + //pxmitpriv->bmc_txqueue.head = 0; + //hwxmits[0] .phwtxqueue = &pxmitpriv->bmc_txqueue; + hwxmits[0] .sta_queue = &pxmitpriv->bm_pending; + + //pxmitpriv->vo_txqueue.head = 0; + //hwxmits[1] .phwtxqueue = &pxmitpriv->vo_txqueue; + hwxmits[1] .sta_queue = &pxmitpriv->vo_pending; + + //pxmitpriv->vi_txqueue.head = 0; + //hwxmits[2] .phwtxqueue = &pxmitpriv->vi_txqueue; + hwxmits[2] .sta_queue = &pxmitpriv->vi_pending; + + //pxmitpriv->bk_txqueue.head = 0; + //hwxmits[3] .phwtxqueue = &pxmitpriv->bk_txqueue; + hwxmits[3] .sta_queue = &pxmitpriv->bk_pending; + + //pxmitpriv->be_txqueue.head = 0; + //hwxmits[4] .phwtxqueue = &pxmitpriv->be_txqueue; + hwxmits[4] .sta_queue = &pxmitpriv->be_pending; + + } + else if(pxmitpriv->hwxmit_entry == 4) + { + + //pxmitpriv->vo_txqueue.head = 0; + //hwxmits[0] .phwtxqueue = &pxmitpriv->vo_txqueue; + hwxmits[0] .sta_queue = &pxmitpriv->vo_pending; + + //pxmitpriv->vi_txqueue.head = 0; + //hwxmits[1] .phwtxqueue = &pxmitpriv->vi_txqueue; + hwxmits[1] .sta_queue = &pxmitpriv->vi_pending; + + //pxmitpriv->be_txqueue.head = 0; + //hwxmits[2] .phwtxqueue = &pxmitpriv->be_txqueue; + hwxmits[2] .sta_queue = &pxmitpriv->be_pending; + + //pxmitpriv->bk_txqueue.head = 0; + //hwxmits[3] .phwtxqueue = &pxmitpriv->bk_txqueue; + hwxmits[3] .sta_queue = &pxmitpriv->bk_pending; + } + else + { + + + } + + +} + +void rtw_free_hwxmits(_adapter *padapter) +{ + struct hw_xmit *hwxmits; + struct xmit_priv *pxmitpriv = &padapter->xmitpriv; + + hwxmits = pxmitpriv->hwxmits; + if(hwxmits) + rtw_mfree((u8 *)hwxmits, (sizeof (struct hw_xmit) * pxmitpriv->hwxmit_entry)); +} + +void rtw_init_hwxmits(struct hw_xmit *phwxmit, sint entry) +{ + sint i; +_func_enter_; + for(i = 0; i < entry; i++, phwxmit++) + { + //_rtw_spinlock_init(&phwxmit->xmit_lock); + //_rtw_init_listhead(&phwxmit->pending); + //phwxmit->txcmdcnt = 0; + phwxmit->accnt = 0; + } +_func_exit_; +} + +#ifdef CONFIG_BR_EXT +int rtw_br_client_tx(_adapter *padapter, struct sk_buff **pskb) +{ + struct sk_buff *skb = *pskb; + struct xmit_priv *pxmitpriv = &padapter->xmitpriv; + _irqL irqL; + //if(check_fwstate(pmlmepriv, WIFI_STATION_STATE|WIFI_ADHOC_STATE) == _TRUE) + { + void dhcp_flag_bcast(_adapter *priv, struct sk_buff *skb); + int res, is_vlan_tag=0, i, do_nat25=1; + unsigned short vlan_hdr=0; + void *br_port = NULL; + + //mac_clone_handle_frame(priv, skb); + +#if (LINUX_VERSION_CODE <= KERNEL_VERSION(2, 6, 35)) + br_port = padapter->pnetdev->br_port; +#else // (LINUX_VERSION_CODE <= KERNEL_VERSION(2, 6, 35)) + rcu_read_lock(); + br_port = rcu_dereference(padapter->pnetdev->rx_handler_data); + rcu_read_unlock(); +#endif // (LINUX_VERSION_CODE <= KERNEL_VERSION(2, 6, 35)) + _enter_critical_bh(&padapter->br_ext_lock, &irqL); + if ( !(skb->data[0] & 1) && + br_port && + memcmp(skb->data+MACADDRLEN, padapter->br_mac, MACADDRLEN) && + *((unsigned short *)(skb->data+MACADDRLEN*2)) != __constant_htons(ETH_P_8021Q) && + *((unsigned short *)(skb->data+MACADDRLEN*2)) == __constant_htons(ETH_P_IP) && + !memcmp(padapter->scdb_mac, skb->data+MACADDRLEN, MACADDRLEN) && padapter->scdb_entry) { + memcpy(skb->data+MACADDRLEN, GET_MY_HWADDR(padapter), MACADDRLEN); + padapter->scdb_entry->ageing_timer = jiffies; + _exit_critical_bh(&padapter->br_ext_lock, &irqL); + } + else + //if (!priv->pmib->ethBrExtInfo.nat25_disable) + { +// if (priv->dev->br_port && +// !memcmp(skb->data+MACADDRLEN, priv->br_mac, MACADDRLEN)) { +#if 1 + if (*((unsigned short *)(skb->data+MACADDRLEN*2)) == __constant_htons(ETH_P_8021Q)) { + is_vlan_tag = 1; + vlan_hdr = *((unsigned short *)(skb->data+MACADDRLEN*2+2)); + for (i=0; i<6; i++) + *((unsigned short *)(skb->data+MACADDRLEN*2+2-i*2)) = *((unsigned short *)(skb->data+MACADDRLEN*2-2-i*2)); + skb_pull(skb, 4); + } + //if SA == br_mac && skb== IP => copy SIP to br_ip ?? why + if (!memcmp(skb->data+MACADDRLEN, padapter->br_mac, MACADDRLEN) && + (*((unsigned short *)(skb->data+MACADDRLEN*2)) == __constant_htons(ETH_P_IP))) + memcpy(padapter->br_ip, skb->data+WLAN_ETHHDR_LEN+12, 4); + + if (*((unsigned short *)(skb->data+MACADDRLEN*2)) == __constant_htons(ETH_P_IP)) { + if (memcmp(padapter->scdb_mac, skb->data+MACADDRLEN, MACADDRLEN)) { + void *scdb_findEntry(_adapter *priv, unsigned char *macAddr, unsigned char *ipAddr); + + if ((padapter->scdb_entry = (struct nat25_network_db_entry *)scdb_findEntry(padapter, + skb->data+MACADDRLEN, skb->data+WLAN_ETHHDR_LEN+12)) != NULL) { + memcpy(padapter->scdb_mac, skb->data+MACADDRLEN, MACADDRLEN); + memcpy(padapter->scdb_ip, skb->data+WLAN_ETHHDR_LEN+12, 4); + padapter->scdb_entry->ageing_timer = jiffies; + do_nat25 = 0; + } + } + else { + if (padapter->scdb_entry) { + padapter->scdb_entry->ageing_timer = jiffies; + do_nat25 = 0; + } + else { + memset(padapter->scdb_mac, 0, MACADDRLEN); + memset(padapter->scdb_ip, 0, 4); + } + } + } + _exit_critical_bh(&padapter->br_ext_lock, &irqL); +#endif // 1 + if (do_nat25) + { + int nat25_db_handle(_adapter *priv, struct sk_buff *skb, int method); + if (nat25_db_handle(padapter, skb, NAT25_CHECK) == 0) { + struct sk_buff *newskb; + + if (is_vlan_tag) { + skb_push(skb, 4); + for (i=0; i<6; i++) + *((unsigned short *)(skb->data+i*2)) = *((unsigned short *)(skb->data+4+i*2)); + *((unsigned short *)(skb->data+MACADDRLEN*2)) = __constant_htons(ETH_P_8021Q); + *((unsigned short *)(skb->data+MACADDRLEN*2+2)) = vlan_hdr; + } + + newskb = rtw_skb_copy(skb); + if (newskb == NULL) { + //priv->ext_stats.tx_drops++; + DEBUG_ERR("TX DROP: rtw_skb_copy fail!\n"); + //goto stop_proc; + return -1; + } + rtw_skb_free(skb); + + *pskb = skb = newskb; + if (is_vlan_tag) { + vlan_hdr = *((unsigned short *)(skb->data+MACADDRLEN*2+2)); + for (i=0; i<6; i++) + *((unsigned short *)(skb->data+MACADDRLEN*2+2-i*2)) = *((unsigned short *)(skb->data+MACADDRLEN*2-2-i*2)); + skb_pull(skb, 4); + } + } + + if (skb_is_nonlinear(skb)) + DEBUG_ERR("%s(): skb_is_nonlinear!!\n", __FUNCTION__); + + +#if (LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 18)) + res = skb_linearize(skb, GFP_ATOMIC); +#else // (LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 18)) + res = skb_linearize(skb); +#endif // (LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 18)) + if (res < 0) { + DEBUG_ERR("TX DROP: skb_linearize fail!\n"); + //goto free_and_stop; + return -1; + } + + res = nat25_db_handle(padapter, skb, NAT25_INSERT); + if (res < 0) { + if (res == -2) { + //priv->ext_stats.tx_drops++; + DEBUG_ERR("TX DROP: nat25_db_handle fail!\n"); + //goto free_and_stop; + return -1; + + } + // we just print warning message and let it go + //DEBUG_WARN("%s()-%d: nat25_db_handle INSERT Warning!\n", __FUNCTION__, __LINE__); + //return -1; // return -1 will cause system crash on 2011/08/30! + return 0; + } + } + + memcpy(skb->data+MACADDRLEN, GET_MY_HWADDR(padapter), MACADDRLEN); + + dhcp_flag_bcast(padapter, skb); + + if (is_vlan_tag) { + skb_push(skb, 4); + for (i=0; i<6; i++) + *((unsigned short *)(skb->data+i*2)) = *((unsigned short *)(skb->data+4+i*2)); + *((unsigned short *)(skb->data+MACADDRLEN*2)) = __constant_htons(ETH_P_8021Q); + *((unsigned short *)(skb->data+MACADDRLEN*2+2)) = vlan_hdr; + } + } +#if 0 + else{ + if (*((unsigned short *)(skb->data+MACADDRLEN*2)) == __constant_htons(ETH_P_8021Q)) { + is_vlan_tag = 1; + } + + if(is_vlan_tag){ + if(ICMPV6_MCAST_MAC(skb->data) && ICMPV6_PROTO1A_VALN(skb->data)){ + memcpy(skb->data+MACADDRLEN, GET_MY_HWADDR(padapter), MACADDRLEN); + } + }else + { + if(ICMPV6_MCAST_MAC(skb->data) && ICMPV6_PROTO1A(skb->data)){ + memcpy(skb->data+MACADDRLEN, GET_MY_HWADDR(padapter), MACADDRLEN); + } + } + } +#endif // 0 + + // check if SA is equal to our MAC + if (memcmp(skb->data+MACADDRLEN, GET_MY_HWADDR(padapter), MACADDRLEN)) { + //priv->ext_stats.tx_drops++; + DEBUG_ERR("TX DROP: untransformed frame SA:%02X%02X%02X%02X%02X%02X!\n", + skb->data[6],skb->data[7],skb->data[8],skb->data[9],skb->data[10],skb->data[11]); + //goto free_and_stop; + return -1; + } + } + return 0; +} +#endif // CONFIG_BR_EXT + +static void do_queue_select(_adapter *padapter, struct pkt_attrib *pattrib) +{ + u8 qsel; + + qsel = pattrib->priority; + RT_TRACE(_module_rtl871x_xmit_c_,_drv_info_,("### do_queue_select priority=%d ,qsel = %d\n",pattrib->priority ,qsel)); + +#ifdef CONFIG_CONCURRENT_MODE +// if (check_fwstate(&padapter->mlmepriv, WIFI_AP_STATE) == _TRUE) +// qsel = 7;// +#endif + + pattrib->qsel = qsel; +} + +/* + * The main transmit(tx) entry + * + * Return + * 1 enqueue + * 0 success, hardware will handle this xmit frame(packet) + * <0 fail + */ +s32 rtw_xmit(_adapter *padapter, _pkt **ppkt) +{ + static u32 start = 0; + static u32 drop_cnt = 0; +#ifdef CONFIG_AP_MODE + _irqL irqL0; +#endif + struct xmit_priv *pxmitpriv = &padapter->xmitpriv; + struct xmit_frame *pxmitframe = NULL; +#ifdef CONFIG_BR_EXT + struct mlme_priv *pmlmepriv = &padapter->mlmepriv; + void *br_port = NULL; +#endif // CONFIG_BR_EXT + + s32 res; + + if (start == 0) + start = rtw_get_current_time(); + + pxmitframe = rtw_alloc_xmitframe(pxmitpriv); + + if (rtw_get_passing_time_ms(start) > 2000) { + if (drop_cnt) + DBG_871X("DBG_TX_DROP_FRAME %s no more pxmitframe, drop_cnt:%u\n", __FUNCTION__, drop_cnt); + start = rtw_get_current_time(); + drop_cnt = 0; + } + + if (pxmitframe == NULL) { + drop_cnt ++; + RT_TRACE(_module_xmit_osdep_c_, _drv_err_, ("rtw_xmit: no more pxmitframe\n")); + return -1; + } + +#ifdef CONFIG_BR_EXT + +#if (LINUX_VERSION_CODE <= KERNEL_VERSION(2, 6, 35)) + br_port = padapter->pnetdev->br_port; +#else // (LINUX_VERSION_CODE <= KERNEL_VERSION(2, 6, 35)) + rcu_read_lock(); + br_port = rcu_dereference(padapter->pnetdev->rx_handler_data); + rcu_read_unlock(); +#endif // (LINUX_VERSION_CODE <= KERNEL_VERSION(2, 6, 35)) + + if( br_port && check_fwstate(pmlmepriv, WIFI_STATION_STATE|WIFI_ADHOC_STATE) == _TRUE) + { + res = rtw_br_client_tx(padapter, ppkt); + if (res == -1) + { + rtw_free_xmitframe(pxmitpriv, pxmitframe); + return -1; + } + } + +#endif // CONFIG_BR_EXT + + res = update_attrib(padapter, *ppkt, &pxmitframe->attrib); + if (res == _FAIL) { + RT_TRACE(_module_xmit_osdep_c_, _drv_err_, ("rtw_xmit: update attrib fail\n")); + #ifdef DBG_TX_DROP_FRAME + DBG_871X("DBG_TX_DROP_FRAME %s update attrib fail\n", __FUNCTION__); + #endif + rtw_free_xmitframe(pxmitpriv, pxmitframe); + return -1; + } + pxmitframe->pkt = *ppkt; + + rtw_led_control(padapter, LED_CTL_TX); + + do_queue_select(padapter, &pxmitframe->attrib); + +#if defined(CONFIG_AP_MODE) || defined(CONFIG_TDLS) + _enter_critical_bh(&pxmitpriv->lock, &irqL0); + if(xmitframe_enqueue_for_sleeping_sta(padapter, pxmitframe) == _TRUE) + { + _exit_critical_bh(&pxmitpriv->lock, &irqL0); + return 1; + } + _exit_critical_bh(&pxmitpriv->lock, &irqL0); +#endif + + if (rtw_hal_xmit(padapter, pxmitframe) == _FALSE) + return 1; + + return 0; +} + +#ifdef CONFIG_TDLS +sint xmitframe_enqueue_for_tdls_sleeping_sta(_adapter *padapter, struct xmit_frame *pxmitframe) +{ + sint ret=_FALSE; + + _irqL irqL; + struct sta_info *ptdls_sta=NULL; + struct sta_priv *pstapriv = &padapter->stapriv; + struct pkt_attrib *pattrib = &pxmitframe->attrib; + struct mlme_ext_priv *pmlmeext = &(padapter->mlmeextpriv); + int i; + + ptdls_sta=rtw_get_stainfo(pstapriv, pattrib->dst); + if(ptdls_sta==NULL){ + return ret; + }else if(ptdls_sta->tdls_sta_state&TDLS_LINKED_STATE){ + + if(pattrib->triggered==1) + { + ret = _TRUE; + return ret; + } + + _enter_critical_bh(&ptdls_sta->sleep_q.lock, &irqL); + + if(ptdls_sta->state&WIFI_SLEEP_STATE) + { + rtw_list_delete(&pxmitframe->list); + + //_enter_critical_bh(&psta->sleep_q.lock, &irqL); + + rtw_list_insert_tail(&pxmitframe->list, get_list_head(&ptdls_sta->sleep_q)); + + ptdls_sta->sleepq_len++; + ptdls_sta->sleepq_ac_len++; + + //indicate 4-AC queue bit in TDLS peer traffic indication + switch(pattrib->priority) + { + case 1: + case 2: + ptdls_sta->uapsd_bk = ptdls_sta->uapsd_bk | BIT(1); + break; + case 4: + case 5: + ptdls_sta->uapsd_vi = ptdls_sta->uapsd_vi | BIT(1); + break; + case 6: + case 7: + ptdls_sta->uapsd_vo = ptdls_sta->uapsd_vo | BIT(1); + break; + case 0: + case 3: + default: + ptdls_sta->uapsd_be = ptdls_sta->uapsd_be | BIT(1); + break; + } + + if(ptdls_sta->sleepq_len==1) + { + //transmit TDLS PTI via AP + rtw_tdls_cmd(padapter, ptdls_sta->hwaddr, TDLS_SD_PTI); + } + ret = _TRUE; + + } + + _exit_critical_bh(&ptdls_sta->sleep_q.lock, &irqL); + } + + return ret; + +} +#endif //CONFIG_TDLS + +#if defined(CONFIG_AP_MODE) || defined(CONFIG_TDLS) + +sint xmitframe_enqueue_for_sleeping_sta(_adapter *padapter, struct xmit_frame *pxmitframe) +{ + _irqL irqL; + sint ret=_FALSE; + struct sta_info *psta=NULL; + struct sta_priv *pstapriv = &padapter->stapriv; + struct pkt_attrib *pattrib = &pxmitframe->attrib; + struct mlme_priv *pmlmepriv = &padapter->mlmepriv; + sint bmcst = IS_MCAST(pattrib->ra); +#ifdef CONFIG_TDLS + struct tdls_info *ptdlsinfo = &padapter->tdlsinfo; + + if( ptdlsinfo->setup_state == TDLS_LINKED_STATE ) + { + ret = xmitframe_enqueue_for_tdls_sleeping_sta(padapter, pxmitframe); + return ret; + } +#endif //CONFIG_TDLS + + if (check_fwstate(pmlmepriv, WIFI_AP_STATE) == _FALSE) + return ret; + + if(pattrib->psta) + { + psta = pattrib->psta; + } + else + { + DBG_871X("%s, call rtw_get_stainfo()\n", __func__); + psta=rtw_get_stainfo(pstapriv, pattrib->ra); + } + + if(psta==NULL) + { + DBG_871X("%s, psta==NUL\n", __func__); + return _FALSE; + } + + if(!(psta->state &_FW_LINKED)) + { + DBG_871X("%s, psta->state(0x%x) != _FW_LINKED\n", __func__, psta->state); + return _FALSE; + } + + if(pattrib->triggered==1) + { + //DBG_871X("directly xmit pspoll_triggered packet\n"); + + //pattrib->triggered=0; + + if(bmcst) + pattrib->qsel = 0x11;//HIQ + + + return ret; + } + + + if(bmcst) + { + _enter_critical_bh(&psta->sleep_q.lock, &irqL); + + if(pstapriv->sta_dz_bitmap)//if anyone sta is in ps mode + { + //pattrib->qsel = 0x11;//HIQ + + rtw_list_delete(&pxmitframe->list); + + //_enter_critical_bh(&psta->sleep_q.lock, &irqL); + + rtw_list_insert_tail(&pxmitframe->list, get_list_head(&psta->sleep_q)); + + psta->sleepq_len++; + + pstapriv->tim_bitmap |= BIT(0);// + pstapriv->sta_dz_bitmap |= BIT(0); + + //DBG_871X("enqueue, sq_len=%d, tim=%x\n", psta->sleepq_len, pstapriv->tim_bitmap); + + update_beacon(padapter, _TIM_IE_, NULL, _FALSE);//tx bc/mc packets after upate bcn + + //_exit_critical_bh(&psta->sleep_q.lock, &irqL); + + ret = _TRUE; + + } + + _exit_critical_bh(&psta->sleep_q.lock, &irqL); + + return ret; + + } + + + _enter_critical_bh(&psta->sleep_q.lock, &irqL); + + if(psta->state&WIFI_SLEEP_STATE) + { + u8 wmmps_ac=0; + + if(pstapriv->sta_dz_bitmap&BIT(psta->aid)) + { + rtw_list_delete(&pxmitframe->list); + + //_enter_critical_bh(&psta->sleep_q.lock, &irqL); + + rtw_list_insert_tail(&pxmitframe->list, get_list_head(&psta->sleep_q)); + + psta->sleepq_len++; + + switch(pattrib->priority) + { + case 1: + case 2: + wmmps_ac = psta->uapsd_bk&BIT(0); + break; + case 4: + case 5: + wmmps_ac = psta->uapsd_vi&BIT(0); + break; + case 6: + case 7: + wmmps_ac = psta->uapsd_vo&BIT(0); + break; + case 0: + case 3: + default: + wmmps_ac = psta->uapsd_be&BIT(0); + break; + } + + if(wmmps_ac) + psta->sleepq_ac_len++; + + if(((psta->has_legacy_ac) && (!wmmps_ac)) ||((!psta->has_legacy_ac)&&(wmmps_ac))) + { + pstapriv->tim_bitmap |= BIT(psta->aid); + + //DBG_871X("enqueue, sq_len=%d, tim=%x\n", psta->sleepq_len, pstapriv->tim_bitmap); + + if(psta->sleepq_len==1) + { + //DBG_871X("sleepq_len==1, update BCNTIM\n"); + //upate BCN for TIM IE + update_beacon(padapter, _TIM_IE_, NULL, _FALSE); + } + } + + //_exit_critical_bh(&psta->sleep_q.lock, &irqL); + + //if(psta->sleepq_len > (NR_XMITFRAME>>3)) + //{ + // wakeup_sta_to_xmit(padapter, psta); + //} + + ret = _TRUE; + + } + + } + + _exit_critical_bh(&psta->sleep_q.lock, &irqL); + + return ret; + +} + +static void dequeue_xmitframes_to_sleeping_queue(_adapter *padapter, struct sta_info *psta, _queue *pframequeue) +{ + sint ret; + _list *plist, *phead; + u8 ac_index; + struct tx_servq *ptxservq; + struct pkt_attrib *pattrib; + struct xmit_frame *pxmitframe; + struct hw_xmit *phwxmits = padapter->xmitpriv.hwxmits; + + phead = get_list_head(pframequeue); + plist = get_next(phead); + + while (rtw_end_of_queue_search(phead, plist) == _FALSE) + { + pxmitframe = LIST_CONTAINOR(plist, struct xmit_frame, list); + + plist = get_next(plist); + + ret = xmitframe_enqueue_for_sleeping_sta(padapter, pxmitframe); + + if(_TRUE == ret) + { + pattrib = &pxmitframe->attrib; + + ptxservq = rtw_get_sta_pending(padapter, psta, pattrib->priority, (u8 *)(&ac_index)); + + ptxservq->qcnt--; + phwxmits[ac_index].accnt--; + } + else + { + //DBG_871X("xmitframe_enqueue_for_sleeping_sta return _FALSE\n"); + } + + } + +} + +void stop_sta_xmit(_adapter *padapter, struct sta_info *psta) +{ + _irqL irqL0; + struct sta_info *psta_bmc; + struct sta_xmit_priv *pstaxmitpriv; + struct sta_priv *pstapriv = &padapter->stapriv; + struct xmit_priv *pxmitpriv = &padapter->xmitpriv; + + pstaxmitpriv = &psta->sta_xmitpriv; + + //for BC/MC Frames + psta_bmc = rtw_get_bcmc_stainfo(padapter); + + + _enter_critical_bh(&pxmitpriv->lock, &irqL0); + + psta->state |= WIFI_SLEEP_STATE; + +#ifdef CONFIG_TDLS + if( !(psta->tdls_sta_state & TDLS_LINKED_STATE) ) +#endif //CONFIG_TDLS + pstapriv->sta_dz_bitmap |= BIT(psta->aid); + + + + dequeue_xmitframes_to_sleeping_queue(padapter, psta, &pstaxmitpriv->vo_q.sta_pending); + rtw_list_delete(&(pstaxmitpriv->vo_q.tx_pending)); + + + dequeue_xmitframes_to_sleeping_queue(padapter, psta, &pstaxmitpriv->vi_q.sta_pending); + rtw_list_delete(&(pstaxmitpriv->vi_q.tx_pending)); + + + dequeue_xmitframes_to_sleeping_queue(padapter, psta, &pstaxmitpriv->be_q.sta_pending); + rtw_list_delete(&(pstaxmitpriv->be_q.tx_pending)); + + + dequeue_xmitframes_to_sleeping_queue(padapter, psta, &pstaxmitpriv->bk_q.sta_pending); + rtw_list_delete(&(pstaxmitpriv->bk_q.tx_pending)); + +#ifdef CONFIG_TDLS + if( !(psta->tdls_sta_state & TDLS_LINKED_STATE) ) + { + if( psta_bmc != NULL ) + { +#endif //CONFIG_TDLS + + + //for BC/MC Frames + pstaxmitpriv = &psta_bmc->sta_xmitpriv; + dequeue_xmitframes_to_sleeping_queue(padapter, psta_bmc, &pstaxmitpriv->be_q.sta_pending); + rtw_list_delete(&(pstaxmitpriv->be_q.tx_pending)); + + +#ifdef CONFIG_TDLS + } + } +#endif //CONFIG_TDLS + _exit_critical_bh(&pxmitpriv->lock, &irqL0); + + +} + +void wakeup_sta_to_xmit(_adapter *padapter, struct sta_info *psta) +{ + _irqL irqL; + u8 update_mask=0, wmmps_ac=0; + struct sta_info *psta_bmc; + _list *xmitframe_plist, *xmitframe_phead; + struct xmit_frame *pxmitframe=NULL; + struct sta_priv *pstapriv = &padapter->stapriv; + struct xmit_priv *pxmitpriv = &padapter->xmitpriv; + + psta_bmc = rtw_get_bcmc_stainfo(padapter); + + + //_enter_critical_bh(&psta->sleep_q.lock, &irqL); + _enter_critical_bh(&pxmitpriv->lock, &irqL); + + xmitframe_phead = get_list_head(&psta->sleep_q); + xmitframe_plist = get_next(xmitframe_phead); + + while ((rtw_end_of_queue_search(xmitframe_phead, xmitframe_plist)) == _FALSE) + { + pxmitframe = LIST_CONTAINOR(xmitframe_plist, struct xmit_frame, list); + + xmitframe_plist = get_next(xmitframe_plist); + + rtw_list_delete(&pxmitframe->list); + + switch(pxmitframe->attrib.priority) + { + case 1: + case 2: + wmmps_ac = psta->uapsd_bk&BIT(1); + break; + case 4: + case 5: + wmmps_ac = psta->uapsd_vi&BIT(1); + break; + case 6: + case 7: + wmmps_ac = psta->uapsd_vo&BIT(1); + break; + case 0: + case 3: + default: + wmmps_ac = psta->uapsd_be&BIT(1); + break; + } + + psta->sleepq_len--; + if(psta->sleepq_len>0) + pxmitframe->attrib.mdata = 1; + else + pxmitframe->attrib.mdata = 0; + + if(wmmps_ac) + { + psta->sleepq_ac_len--; + if(psta->sleepq_ac_len>0) + { + pxmitframe->attrib.mdata = 1; + pxmitframe->attrib.eosp = 0; + } + else + { + pxmitframe->attrib.mdata = 0; + pxmitframe->attrib.eosp = 1; + } + } + + pxmitframe->attrib.triggered = 1; + +/* + _exit_critical_bh(&psta->sleep_q.lock, &irqL); + if(rtw_hal_xmit(padapter, pxmitframe) == _TRUE) + { + rtw_os_xmit_complete(padapter, pxmitframe); + } + _enter_critical_bh(&psta->sleep_q.lock, &irqL); +*/ + rtw_hal_xmitframe_enqueue(padapter, pxmitframe); + + + } + + //for BC/MC Frames + if(!psta_bmc) + goto _exit; + + if((pstapriv->sta_dz_bitmap&0xfffe) == 0x0)//no any sta in ps mode + { + xmitframe_phead = get_list_head(&psta_bmc->sleep_q); + xmitframe_plist = get_next(xmitframe_phead); + + while ((rtw_end_of_queue_search(xmitframe_phead, xmitframe_plist)) == _FALSE) + { + pxmitframe = LIST_CONTAINOR(xmitframe_plist, struct xmit_frame, list); + + xmitframe_plist = get_next(xmitframe_plist); + + rtw_list_delete(&pxmitframe->list); + + psta_bmc->sleepq_len--; + if(psta_bmc->sleepq_len>0) + pxmitframe->attrib.mdata = 1; + else + pxmitframe->attrib.mdata = 0; + + + pxmitframe->attrib.triggered = 1; +/* + _exit_critical_bh(&psta_bmc->sleep_q.lock, &irqL); + if(rtw_hal_xmit(padapter, pxmitframe) == _TRUE) + { + rtw_os_xmit_complete(padapter, pxmitframe); + } + _enter_critical_bh(&psta_bmc->sleep_q.lock, &irqL); + +*/ + rtw_hal_xmitframe_enqueue(padapter, pxmitframe); + + } + + if(psta_bmc->sleepq_len==0) + { + pstapriv->tim_bitmap &= ~BIT(0); + pstapriv->sta_dz_bitmap &= ~BIT(0); + + //DBG_871X("wakeup to xmit, qlen==0, update_BCNTIM, tim=%x\n", pstapriv->tim_bitmap); + //upate BCN for TIM IE + //update_BCNTIM(padapter); + update_mask |= BIT(1); + } + + } + + if(psta->sleepq_len==0) + { +#ifdef CONFIG_TDLS + if( psta->tdls_sta_state & TDLS_LINKED_STATE ) + { + if(psta->state&WIFI_SLEEP_STATE) + psta->state ^= WIFI_SLEEP_STATE; + + goto _exit; + } +#endif //CONFIG_TDLS + pstapriv->tim_bitmap &= ~BIT(psta->aid); + + //DBG_871X("wakeup to xmit, qlen==0, update_BCNTIM, tim=%x\n", pstapriv->tim_bitmap); + //upate BCN for TIM IE + //update_BCNTIM(padapter); + update_mask = BIT(0); + + if(psta->state&WIFI_SLEEP_STATE) + psta->state ^= WIFI_SLEEP_STATE; + + if(psta->state & WIFI_STA_ALIVE_CHK_STATE) + { + psta->expire_to = pstapriv->expire_to; + psta->state ^= WIFI_STA_ALIVE_CHK_STATE; + } + + pstapriv->sta_dz_bitmap &= ~BIT(psta->aid); + } + +_exit: + + //_exit_critical_bh(&psta_bmc->sleep_q.lock, &irqL); + _exit_critical_bh(&pxmitpriv->lock, &irqL); + + if(update_mask) + { + //update_BCNTIM(padapter); + //printk("%s => call update_beacon\n",__FUNCTION__); + update_beacon(padapter, _TIM_IE_, NULL, _FALSE); + } + +} + +void xmit_delivery_enabled_frames(_adapter *padapter, struct sta_info *psta) +{ + _irqL irqL; + u8 wmmps_ac=0; + _list *xmitframe_plist, *xmitframe_phead; + struct xmit_frame *pxmitframe=NULL; + struct sta_priv *pstapriv = &padapter->stapriv; + struct xmit_priv *pxmitpriv = &padapter->xmitpriv; + + + //_enter_critical_bh(&psta->sleep_q.lock, &irqL); + _enter_critical_bh(&pxmitpriv->lock, &irqL); + + xmitframe_phead = get_list_head(&psta->sleep_q); + xmitframe_plist = get_next(xmitframe_phead); + + while ((rtw_end_of_queue_search(xmitframe_phead, xmitframe_plist)) == _FALSE) + { + pxmitframe = LIST_CONTAINOR(xmitframe_plist, struct xmit_frame, list); + + xmitframe_plist = get_next(xmitframe_plist); + + switch(pxmitframe->attrib.priority) + { + case 1: + case 2: + wmmps_ac = psta->uapsd_bk&BIT(1); + break; + case 4: + case 5: + wmmps_ac = psta->uapsd_vi&BIT(1); + break; + case 6: + case 7: + wmmps_ac = psta->uapsd_vo&BIT(1); + break; + case 0: + case 3: + default: + wmmps_ac = psta->uapsd_be&BIT(1); + break; + } + + if(!wmmps_ac) + continue; + + rtw_list_delete(&pxmitframe->list); + + psta->sleepq_len--; + psta->sleepq_ac_len--; + + if(psta->sleepq_ac_len>0) + { + pxmitframe->attrib.mdata = 1; + pxmitframe->attrib.eosp = 0; + } + else + { + pxmitframe->attrib.mdata = 0; + pxmitframe->attrib.eosp = 1; + } + + pxmitframe->attrib.triggered = 1; + +/* + if(rtw_hal_xmit(padapter, pxmitframe) == _TRUE) + { + rtw_os_xmit_complete(padapter, pxmitframe); + } +*/ + rtw_hal_xmitframe_enqueue(padapter, pxmitframe); + + if((psta->sleepq_ac_len==0) && (!psta->has_legacy_ac) && (wmmps_ac)) + { +#ifdef CONFIG_TDLS + if(psta->tdls_sta_state & TDLS_LINKED_STATE ) + { + //_exit_critical_bh(&psta->sleep_q.lock, &irqL); + _exit_critical_bh(&pxmitpriv->lock, &irqL); + return; + } +#endif //CONFIG_TDLS + pstapriv->tim_bitmap &= ~BIT(psta->aid); + + //DBG_871X("wakeup to xmit, qlen==0, update_BCNTIM, tim=%x\n", pstapriv->tim_bitmap); + //upate BCN for TIM IE + //update_BCNTIM(padapter); + update_beacon(padapter, _TIM_IE_, NULL, _FALSE); + //update_mask = BIT(0); + } + + } + + //_exit_critical_bh(&psta->sleep_q.lock, &irqL); + _exit_critical_bh(&pxmitpriv->lock, &irqL); + +} + +#endif + +void rtw_sctx_init(struct submit_ctx *sctx, int timeout_ms) +{ + sctx->timeout_ms = timeout_ms; + sctx->submit_time= rtw_get_current_time(); +#ifdef PLATFORM_LINUX /* TODO: add condition wating interface for other os */ + init_completion(&sctx->done); +#endif + sctx->status = RTW_SCTX_SUBMITTED; +} + +int rtw_sctx_wait(struct submit_ctx *sctx) +{ + int ret = _FAIL; + unsigned long expire; + int status = 0; + +#ifdef PLATFORM_LINUX + expire= sctx->timeout_ms ? msecs_to_jiffies(sctx->timeout_ms) : MAX_SCHEDULE_TIMEOUT; + if (!wait_for_completion_timeout(&sctx->done, expire)) { + /* timeout, do something?? */ + status = RTW_SCTX_DONE_TIMEOUT; + DBG_871X("%s timeout\n", __func__); + } else { + status = sctx->status; + } +#endif + + if (status == RTW_SCTX_DONE_SUCCESS) { + ret = _SUCCESS; + } + + return ret; +} + +bool rtw_sctx_chk_waring_status(int status) +{ + switch(status) { + case RTW_SCTX_DONE_UNKNOWN: + case RTW_SCTX_DONE_BUF_ALLOC: + case RTW_SCTX_DONE_BUF_FREE: + + case RTW_SCTX_DONE_DRV_STOP: + case RTW_SCTX_DONE_DEV_REMOVE: + return _TRUE; + default: + return _FALSE; + } +} + +void rtw_sctx_done_err(struct submit_ctx **sctx, int status) +{ + if (*sctx) { + if (rtw_sctx_chk_waring_status(status)) + DBG_871X("%s status:%d\n", __func__, status); + (*sctx)->status = status; + #ifdef PLATFORM_LINUX + complete(&((*sctx)->done)); + #endif + *sctx = NULL; + } +} + +void rtw_sctx_done(struct submit_ctx **sctx) +{ + rtw_sctx_done_err(sctx, RTW_SCTX_DONE_SUCCESS); +} + +#ifdef CONFIG_XMIT_ACK + +#ifdef CONFIG_XMIT_ACK_POLLING +s32 c2h_evt_hdl(_adapter *adapter, struct c2h_evt_hdr *c2h_evt, c2h_id_filter filter); + +/** + * rtw_ack_tx_polling - + * @pxmitpriv: xmit_priv to address ack_tx_ops + * @timeout_ms: timeout msec + * + * Init ack_tx_ops and then do c2h_evt_hdl() and polling ack_tx_ops repeatedly + * till tx report or timeout + * Returns: _SUCCESS if TX report ok, _FAIL for others + */ +int rtw_ack_tx_polling(struct xmit_priv *pxmitpriv, u32 timeout_ms) +{ + int ret = _FAIL; + struct submit_ctx *pack_tx_ops = &pxmitpriv->ack_tx_ops; + _adapter *adapter = container_of(pxmitpriv, _adapter, xmitpriv); + + pack_tx_ops->submit_time = rtw_get_current_time(); + pack_tx_ops->timeout_ms = timeout_ms; + pack_tx_ops->status = RTW_SCTX_SUBMITTED; + + do { + c2h_evt_hdl(adapter, NULL, rtw_hal_c2h_id_filter_ccx(adapter)); + if (pack_tx_ops->status != RTW_SCTX_SUBMITTED) + break; + + if (adapter->bDriverStopped) { + pack_tx_ops->status = RTW_SCTX_DONE_DRV_STOP; + break; + } + if (adapter->bSurpriseRemoved) { + pack_tx_ops->status = RTW_SCTX_DONE_DEV_REMOVE; + break; + } + + rtw_msleep_os(10); + } while (rtw_get_passing_time_ms(pack_tx_ops->submit_time) < timeout_ms); + + if (pack_tx_ops->status == RTW_SCTX_SUBMITTED) { + pack_tx_ops->status = RTW_SCTX_DONE_TIMEOUT; + DBG_871X("%s timeout\n", __func__); + } + + if (pack_tx_ops->status == RTW_SCTX_DONE_SUCCESS) + ret = _SUCCESS; + + return ret; +} +#endif + +int rtw_ack_tx_wait(struct xmit_priv *pxmitpriv, u32 timeout_ms) +{ +#ifdef CONFIG_XMIT_ACK_POLLING + return rtw_ack_tx_polling(pxmitpriv, timeout_ms); +#else + struct submit_ctx *pack_tx_ops = &pxmitpriv->ack_tx_ops; + + pack_tx_ops->submit_time = rtw_get_current_time(); + pack_tx_ops->timeout_ms = timeout_ms; + pack_tx_ops->status = RTW_SCTX_SUBMITTED; + + return rtw_sctx_wait(pack_tx_ops); +#endif +} + +void rtw_ack_tx_done(struct xmit_priv *pxmitpriv, int status) +{ + struct submit_ctx *pack_tx_ops = &pxmitpriv->ack_tx_ops; + + if (pxmitpriv->ack_tx) { + rtw_sctx_done_err(&pack_tx_ops, status); + } else { + DBG_871X("%s ack_tx not set\n", __func__); + } +} +#endif //CONFIG_XMIT_ACK --- linux-raspi2-4.2.0.orig/drivers/net/wireless/rtl8192cu/hal/HalPwrSeqCmd.c +++ linux-raspi2-4.2.0/drivers/net/wireless/rtl8192cu/hal/HalPwrSeqCmd.c @@ -0,0 +1,175 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved. + * + * 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 + * published by the Free Software Foundation. + * + * 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 Street, Fifth Floor, Boston, MA 02110, USA + * + * + ******************************************************************************/ +/*++ +Copyright (c) Realtek Semiconductor Corp. All rights reserved. + +Module Name: + HalPwrSeqCmd.c + +Abstract: + Implement HW Power sequence configuration CMD handling routine for Realtek devices. + +Major Change History: + When Who What + ---------- --------------- ------------------------------- + 2011-10-26 Lucas Modify to be compatible with SD4-CE driver. + 2011-07-07 Roger Create. + +--*/ +#include +#include + + +// +// Description: +// This routine deal with the Power Configuration CMDs parsing for RTL8723/RTL8188E Series IC. +// +// Assumption: +// We should follow specific format which was released from HW SD. +// +// 2011.07.07, added by Roger. +// +u8 HalPwrSeqCmdParsing( + PADAPTER padapter, + u8 CutVersion, + u8 FabVersion, + u8 InterfaceType, + WLAN_PWR_CFG PwrSeqCmd[]) +{ + WLAN_PWR_CFG PwrCfgCmd = {0}; + u8 bPollingBit = _FALSE; + u32 AryIdx = 0; + u8 value = 0; + u32 offset = 0; + u32 pollingCount = 0; // polling autoload done. + u32 maxPollingCnt = 5000; + + do { + PwrCfgCmd = PwrSeqCmd[AryIdx]; + + RT_TRACE(_module_hal_init_c_ , _drv_info_, + ("HalPwrSeqCmdParsing: offset(%#x) cut_msk(%#x) fab_msk(%#x) interface_msk(%#x) base(%#x) cmd(%#x) msk(%#x) value(%#x)\n", + GET_PWR_CFG_OFFSET(PwrCfgCmd), + GET_PWR_CFG_CUT_MASK(PwrCfgCmd), + GET_PWR_CFG_FAB_MASK(PwrCfgCmd), + GET_PWR_CFG_INTF_MASK(PwrCfgCmd), + GET_PWR_CFG_BASE(PwrCfgCmd), + GET_PWR_CFG_CMD(PwrCfgCmd), + GET_PWR_CFG_MASK(PwrCfgCmd), + GET_PWR_CFG_VALUE(PwrCfgCmd))); + + //2 Only Handle the command whose FAB, CUT, and Interface are matched + if ((GET_PWR_CFG_FAB_MASK(PwrCfgCmd) & FabVersion) && + (GET_PWR_CFG_CUT_MASK(PwrCfgCmd) & CutVersion) && + (GET_PWR_CFG_INTF_MASK(PwrCfgCmd) & InterfaceType)) + { + switch (GET_PWR_CFG_CMD(PwrCfgCmd)) + { + case PWR_CMD_READ: + RT_TRACE(_module_hal_init_c_ , _drv_info_, ("HalPwrSeqCmdParsing: PWR_CMD_READ\n")); + break; + + case PWR_CMD_WRITE: + RT_TRACE(_module_hal_init_c_ , _drv_info_, ("HalPwrSeqCmdParsing: PWR_CMD_WRITE\n")); + offset = GET_PWR_CFG_OFFSET(PwrCfgCmd); + +#ifdef CONFIG_SDIO_HCI + // + // We should deal with interface specific address mapping for some interfaces, e.g., SDIO interface + // 2011.07.07. + // + if (GET_PWR_CFG_BASE(PwrCfgCmd) == PWR_BASEADDR_SDIO) + { + // Read Back SDIO Local value + value = SdioLocalCmd52Read1Byte(padapter, offset); + + value &= ~(GET_PWR_CFG_MASK(PwrCfgCmd)); + value |= (GET_PWR_CFG_VALUE(PwrCfgCmd) & GET_PWR_CFG_MASK(PwrCfgCmd)); + + // Write Back SDIO Local value + SdioLocalCmd52Write1Byte(padapter, offset, value); + } + else +#endif + { + // Read the value from system register + value = rtw_read8(padapter, offset); + + value &= ~(GET_PWR_CFG_MASK(PwrCfgCmd)); + value |= (GET_PWR_CFG_VALUE(PwrCfgCmd) & GET_PWR_CFG_MASK(PwrCfgCmd)); + + // Write the value back to sytem register + rtw_write8(padapter, offset, value); + } + break; + + case PWR_CMD_POLLING: + RT_TRACE(_module_hal_init_c_ , _drv_info_, ("HalPwrSeqCmdParsing: PWR_CMD_POLLING\n")); + + bPollingBit = _FALSE; + offset = GET_PWR_CFG_OFFSET(PwrCfgCmd); + + do { +#ifdef CONFIG_SDIO_HCI + if (GET_PWR_CFG_BASE(PwrCfgCmd) == PWR_BASEADDR_SDIO) + value = SdioLocalCmd52Read1Byte(padapter, offset); + else +#endif + value = rtw_read8(padapter, offset); + + value &= GET_PWR_CFG_MASK(PwrCfgCmd); + if (value == (GET_PWR_CFG_VALUE(PwrCfgCmd) & GET_PWR_CFG_MASK(PwrCfgCmd))) + bPollingBit = _TRUE; + else + rtw_udelay_os(10); + + if (pollingCount++ > maxPollingCnt) { + RT_TRACE(_module_hal_init_c_ , _drv_err_, ("Fail to polling Offset[%#x]\n", offset)); + return _FALSE; + } + } while (!bPollingBit); + + break; + + case PWR_CMD_DELAY: + RT_TRACE(_module_hal_init_c_ , _drv_info_, ("HalPwrSeqCmdParsing: PWR_CMD_DELAY\n")); + if (GET_PWR_CFG_VALUE(PwrCfgCmd) == PWRSEQ_DELAY_US) + rtw_udelay_os(GET_PWR_CFG_OFFSET(PwrCfgCmd)); + else + rtw_udelay_os(GET_PWR_CFG_OFFSET(PwrCfgCmd)*1000); + break; + + case PWR_CMD_END: + // When this command is parsed, end the process + RT_TRACE(_module_hal_init_c_ , _drv_info_, ("HalPwrSeqCmdParsing: PWR_CMD_END\n")); + return _TRUE; + break; + + default: + RT_TRACE(_module_hal_init_c_ , _drv_err_, ("HalPwrSeqCmdParsing: Unknown CMD!!\n")); + break; + } + } + + AryIdx++;//Add Array Index + }while(1); + + return _TRUE; +} --- linux-raspi2-4.2.0.orig/drivers/net/wireless/rtl8192cu/hal/dm.c +++ linux-raspi2-4.2.0/drivers/net/wireless/rtl8192cu/hal/dm.c @@ -0,0 +1,313 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2013 Realtek Corporation. All rights reserved. + * + * 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 + * published by the Free Software Foundation. + * + * 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 Street, Fifth Floor, Boston, MA 02110, USA + * + * + ******************************************************************************/ + +#include +#include +#include + +#ifdef CONFIG_RTL8192C +#include +#endif + +#ifdef CONFIG_RTL8192D +#include +#endif + +bool rtw_adapter_linked(_adapter *adapter) +{ + bool linked = _FALSE; + struct mlme_priv *mlmepriv = &adapter->mlmepriv; + + if( (check_fwstate(mlmepriv, WIFI_AP_STATE) == _TRUE) || + (check_fwstate(mlmepriv, WIFI_ADHOC_STATE|WIFI_ADHOC_MASTER_STATE) == _TRUE)) + { + if(adapter->stapriv.asoc_sta_count > 2) + linked = _TRUE; + } + else{//Station mode + if(check_fwstate(mlmepriv, _FW_LINKED)== _TRUE) + linked = _TRUE; + } + + return linked; +} + +bool dm_linked(_adapter *adapter) +{ + bool linked; + + if ((linked = rtw_adapter_linked(adapter))) + goto exit; + +#ifdef CONFIG_CONCURRENT_MODE + if ((adapter = adapter->pbuddy_adapter) == NULL) + goto exit; + linked = rtw_adapter_linked(adapter); +#endif + +exit: + return linked; +} + +#if 0 +void dm_enable_EDCCA(_adapter *adapter) +{ + // Enable EDCCA. The value is suggested by SD3 Wilson. + + // + // Revised for ASUS 11b/g performance issues, suggested by BB Neil, 2012.04.13. + // + /*if((pDM_Odm->SupportICType == ODM_RTL8723A)&&(IS_WIRELESS_MODE_G(pAdapter))) + { + rtw_write8(adapter,rOFDM0_ECCAThreshold,0x00); + rtw_write8(adapter,rOFDM0_ECCAThreshold+2,0xFD); + + } + else*/ + { + rtw_write8(adapter,rOFDM0_ECCAThreshold,0x03); + rtw_write8(adapter,rOFDM0_ECCAThreshold+2,0x00); + } +} + +void dm_disable_EDCCA(_adapter *adapter) +{ + // Disable EDCCA.. + rtw_write8(adapter, rOFDM0_ECCAThreshold, 0x7f); + rtw_write8(adapter, rOFDM0_ECCAThreshold+2, 0x7f); +} + +// +// Description: According to initial gain value to determine to enable or disable EDCCA. +// +// Suggested by SD3 Wilson. Added by tynli. 2011.11.25. +// +void dm_dynamic_EDCCA(_adapter *pAdapter) +{ + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(pAdapter); + struct dm_priv *dmpriv = &pHalData->dmpriv; + u8 RegC50, RegC58; + + RegC50 = (u8)PHY_QueryBBReg(pAdapter, rOFDM0_XAAGCCore1, bMaskByte0); + RegC58 = (u8)PHY_QueryBBReg(pAdapter, rOFDM0_XBAGCCore1, bMaskByte0); + + + if((RegC50 > 0x28 && RegC58 > 0x28) + /*|| ((pDM_Odm->SupportICType == ODM_RTL8723A && IS_WIRELESS_MODE_G(pAdapter) && RegC50>0x26)) + || (pDM_Odm->SupportICType == ODM_RTL8188E && RegC50 > 0x28)*/ + ) + { + if(!dmpriv->bPreEdccaEnable) + { + dm_enable_EDCCA(pAdapter); + dmpriv->bPreEdccaEnable = _TRUE; + } + + } + else if((RegC50 < 0x25 && RegC58 < 0x25) + /*|| (pDM_Odm->SupportICType == ODM_RTL8188E && RegC50 < 0x25)*/ + ) + { + if(dmpriv->bPreEdccaEnable) + { + dm_disable_EDCCA(pAdapter); + dmpriv->bPreEdccaEnable = _FALSE; + } + } +} +#endif + +#define DM_ADAPTIVITY_VER "ADAPTIVITY_V001" + +int dm_adaptivity_get_parm_str(_adapter *pAdapter, char *buf, int len) +{ +#ifdef CONFIG_DM_ADAPTIVITY + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(pAdapter); + struct dm_priv *dmpriv = &pHalData->dmpriv; + + return snprintf(buf, len, DM_ADAPTIVITY_VER"\n" + "TH_L2H_ini\tTH_EDCCA_HL_diff\tIGI_Base\tForceEDCCA\tAdapEn_RSSI\tIGI_LowerBound\n" + "0x%02x\t%d\t0x%02x\t%d\t%u\t%u\n", + (u8)dmpriv->TH_L2H_ini, + dmpriv->TH_EDCCA_HL_diff, + dmpriv->IGI_Base, + dmpriv->ForceEDCCA, + dmpriv->AdapEn_RSSI, + dmpriv->IGI_LowerBound + ); +#endif /* CONFIG_DM_ADAPTIVITY */ + return 0; +} + +void dm_adaptivity_set_parm(_adapter *pAdapter, s8 TH_L2H_ini, s8 TH_EDCCA_HL_diff, + s8 IGI_Base, bool ForceEDCCA, u8 AdapEn_RSSI, u8 IGI_LowerBound) +{ +#ifdef CONFIG_DM_ADAPTIVITY + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(pAdapter); + struct dm_priv *dmpriv = &pHalData->dmpriv; + + dmpriv->TH_L2H_ini = TH_L2H_ini; + dmpriv->TH_EDCCA_HL_diff = TH_EDCCA_HL_diff; + dmpriv->IGI_Base = IGI_Base; + dmpriv->ForceEDCCA = ForceEDCCA; + dmpriv->AdapEn_RSSI = AdapEn_RSSI; + dmpriv->IGI_LowerBound = IGI_LowerBound; + +#endif /* CONFIG_DM_ADAPTIVITY */ +} + +void dm_adaptivity_init(_adapter *pAdapter) +{ +#ifdef CONFIG_DM_ADAPTIVITY + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(pAdapter); + struct dm_priv *dmpriv = &pHalData->dmpriv; + + /* + if(pDM_Odm->SupportICType == ODM_RTL8723B) + { + pDM_Odm->TH_L2H_ini = 0xf8; // -8 + } + if((pDM_Odm->SupportICType == ODM_RTL8192E)&&(pDM_Odm->SupportInterface == ODM_ITRF_PCIE)) + { + pDM_Odm->TH_L2H_ini = 0xf0; // -16 + } + else */ + { + dmpriv->TH_L2H_ini = 0xf9; // -7 + } + + dmpriv->TH_EDCCA_HL_diff = 7; + dmpriv->IGI_Base = 0x32; + dmpriv->IGI_target = 0x1c; + dmpriv->ForceEDCCA = 0; + dmpriv->AdapEn_RSSI = 20; + dmpriv->IGI_LowerBound = 0; + + //Reg524[11]=0 is easily to transmit packets during adaptivity test + PHY_SetBBReg(pAdapter, 0x524, BIT11, 1); // stop counting if EDCCA is asserted + +#endif /* CONFIG_DM_ADAPTIVITY */ +} + +void dm_adaptivity(_adapter *pAdapter) +{ +#ifdef CONFIG_DM_ADAPTIVITY + s8 TH_L2H_dmc, TH_H2L_dmc; + s8 TH_L2H, TH_H2L, Diff, IGI_target; + u32 value32; + BOOLEAN EDCCA_State; + + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(pAdapter); + struct dm_priv *dmpriv = &pHalData->dmpriv; + DIG_T *pDigTable = &dmpriv->DM_DigTable; + u8 IGI = pDigTable->CurIGValue; + u8 RSSI_Min = pDigTable->Rssi_val_min; + HT_CHANNEL_WIDTH BandWidth = pHalData->CurrentChannelBW; + + if (!(dmpriv->DMFlag & DYNAMIC_FUNC_ADAPTIVITY)) + { + LOG_LEVEL(_drv_info_, "Go to odm_DynamicEDCCA() \n"); + // Add by Neil Chen to enable edcca to MP Platform + // Adjust EDCCA. + /*if(pDM_Odm->SupportICType & ODM_IC_11N_SERIES) + dm_dynamic_EDCCA(pAdapter); + */ + return; + } + LOG_LEVEL(_drv_info_, "odm_Adaptivity() =====> \n"); + + LOG_LEVEL(_drv_info_, "ForceEDCCA=%d, IGI_Base=0x%x, TH_L2H_ini = %d, TH_EDCCA_HL_diff = %d, AdapEn_RSSI = %d\n", + dmpriv->ForceEDCCA, dmpriv->IGI_Base, dmpriv->TH_L2H_ini, dmpriv->TH_EDCCA_HL_diff, dmpriv->AdapEn_RSSI); + + /*if(pDM_Odm->SupportICType & ODM_IC_11AC_SERIES) + PHY_SetBBReg(0x800, BIT10, 0); //ADC_mask enable + */ + + if(!dm_linked(pAdapter) || pHalData->CurrentChannel > 149) /* Band4 doesn't need adaptivity */ + { + /*if(pDM_Odm->SupportICType & ODM_IC_11N_SERIES)*/ + { + PHY_SetBBReg(pAdapter,rOFDM0_ECCAThreshold, bMaskByte0, 0x7f); + PHY_SetBBReg(pAdapter,rOFDM0_ECCAThreshold, bMaskByte2, 0x7f); + } + /*else + { + ODM_SetBBReg(pDM_Odm, rFPGA0_XB_LSSIReadBack, 0xFFFF, (0x7f<<8) | 0x7f); + }*/ + return; + } + + if(!dmpriv->ForceEDCCA) + { + if(RSSI_Min > dmpriv->AdapEn_RSSI) + EDCCA_State = 1; + else if(RSSI_Min < (dmpriv->AdapEn_RSSI - 5)) + EDCCA_State = 0; + } + else + EDCCA_State = 1; + //if((pDM_Odm->SupportICType & ODM_IC_11AC_SERIES) && (*pDM_Odm->pBandType == BAND_ON_5G)) + //IGI_target = pDM_Odm->IGI_Base; + //else + { + + if(BandWidth == HT_CHANNEL_WIDTH_20) //CHANNEL_WIDTH_20 + IGI_target = dmpriv->IGI_Base; + else if(BandWidth == HT_CHANNEL_WIDTH_40) + IGI_target = dmpriv->IGI_Base + 2; + /*else if(*pDM_Odm->pBandWidth == ODM_BW80M) + IGI_target = pDM_Odm->IGI_Base + 6;*/ + else + IGI_target = dmpriv->IGI_Base; + } + + dmpriv->IGI_target = (u8)IGI_target; + + LOG_LEVEL(_drv_info_, "BandWidth=%s, IGI_target=0x%x, EDCCA_State=%d\n", + (BandWidth==HT_CHANNEL_WIDTH_40)?"40M":"20M", IGI_target, EDCCA_State); + + if(EDCCA_State == 1) + { + Diff = IGI_target -(s8)IGI; + TH_L2H_dmc = dmpriv->TH_L2H_ini + Diff; + if(TH_L2H_dmc > 10) TH_L2H_dmc = 10; + TH_H2L_dmc = TH_L2H_dmc - dmpriv->TH_EDCCA_HL_diff; + } + else + { + TH_L2H_dmc = 0x7f; + TH_H2L_dmc = 0x7f; + } + + LOG_LEVEL(_drv_info_, "IGI=0x%x, TH_L2H_dmc = %d, TH_H2L_dmc = %d\n", + IGI, TH_L2H_dmc, TH_H2L_dmc); + + /*if(pDM_Odm->SupportICType & ODM_IC_11N_SERIES)*/ + { + PHY_SetBBReg(pAdapter,rOFDM0_ECCAThreshold, bMaskByte0, (u8)TH_L2H_dmc); + PHY_SetBBReg(pAdapter,rOFDM0_ECCAThreshold, bMaskByte2, (u8)TH_H2L_dmc); + } + /*else + PHY_SetBBReg(pAdapter, rFPGA0_XB_LSSIReadBack, 0xFFFF, ((u8)TH_H2L_dmc<<8) | (u8)TH_L2H_dmc);*/ + +skip_dm: + return; +#endif /* CONFIG_DM_ADAPTIVITY */ +} --- linux-raspi2-4.2.0.orig/drivers/net/wireless/rtl8192cu/hal/dm.h +++ linux-raspi2-4.2.0/drivers/net/wireless/rtl8192cu/hal/dm.h @@ -0,0 +1,30 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2013 Realtek Corporation. All rights reserved. + * + * 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 + * published by the Free Software Foundation. + * + * 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 Street, Fifth Floor, Boston, MA 02110, USA + * + * + ******************************************************************************/ + + #ifndef __DM_H__ +#define __DM_H__ + +int dm_adaptivity_get_parm_str(_adapter *pAdapter, char *buf, int len); +void dm_adaptivity_set_parm(_adapter *pAdapter, s8 TH_L2H_ini, s8 TH_EDCCA_HL_diff, + s8 IGI_Base, bool ForceEDCCA, u8 AdapEn_RSSI, u8 IGI_LowerBound); +void dm_adaptivity_init(_adapter *pAdapter); +void dm_adaptivity(_adapter *pAdapter); + +#endif /* __DM_H__ */ --- linux-raspi2-4.2.0.orig/drivers/net/wireless/rtl8192cu/hal/hal_com.c +++ linux-raspi2-4.2.0/drivers/net/wireless/rtl8192cu/hal/hal_com.c @@ -0,0 +1,370 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved. + * + * 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 + * published by the Free Software Foundation. + * + * 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 Street, Fifth Floor, Boston, MA 02110, USA + * + * + ******************************************************************************/ +#include +#include +#include +#include + +#include +#include + +#ifdef CONFIG_RTL8192C +#include +#endif +#ifdef CONFIG_RTL8192D +#include +#endif + +#define _HAL_COM_C_ + +//============================================================ +// Global var +//============================================================ +u32 OFDMSwingTable[OFDM_TABLE_SIZE_92D] = { + 0x7f8001fe, // 0, +6.0dB + 0x788001e2, // 1, +5.5dB + 0x71c001c7, // 2, +5.0dB + 0x6b8001ae, // 3, +4.5dB + 0x65400195, // 4, +4.0dB + 0x5fc0017f, // 5, +3.5dB + 0x5a400169, // 6, +3.0dB + 0x55400155, // 7, +2.5dB + 0x50800142, // 8, +2.0dB + 0x4c000130, // 9, +1.5dB + 0x47c0011f, // 10, +1.0dB + 0x43c0010f, // 11, +0.5dB + 0x40000100, // 12, +0dB + 0x3c8000f2, // 13, -0.5dB + 0x390000e4, // 14, -1.0dB + 0x35c000d7, // 15, -1.5dB + 0x32c000cb, // 16, -2.0dB + 0x300000c0, // 17, -2.5dB + 0x2d4000b5, // 18, -3.0dB + 0x2ac000ab, // 19, -3.5dB + 0x288000a2, // 20, -4.0dB + 0x26000098, // 21, -4.5dB + 0x24000090, // 22, -5.0dB + 0x22000088, // 23, -5.5dB + 0x20000080, // 24, -6.0dB + 0x1e400079, // 25, -6.5dB + 0x1c800072, // 26, -7.0dB + 0x1b00006c, // 27. -7.5dB + 0x19800066, // 28, -8.0dB + 0x18000060, // 29, -8.5dB + 0x16c0005b, // 30, -9.0dB + 0x15800056, // 31, -9.5dB + 0x14400051, // 32, -10.0dB + 0x1300004c, // 33, -10.5dB + 0x12000048, // 34, -11.0dB + 0x11000044, // 35, -11.5dB + 0x10000040, // 36, -12.0dB + 0x0f00003c,// 37, -12.5dB + 0x0e400039,// 38, -13.0dB + 0x0d800036,// 39, -13.5dB + 0x0cc00033,// 40, -14.0dB + 0x0c000030,// 41, -14.5dB + 0x0b40002d,// 42, -15.0dB +}; + + +u8 CCKSwingTable_Ch1_Ch13[CCK_TABLE_SIZE][8] = { + {0x36, 0x35, 0x2e, 0x25, 0x1c, 0x12, 0x09, 0x04}, // 0, +0dB + {0x33, 0x32, 0x2b, 0x23, 0x1a, 0x11, 0x08, 0x04}, // 1, -0.5dB + {0x30, 0x2f, 0x29, 0x21, 0x19, 0x10, 0x08, 0x03}, // 2, -1.0dB + {0x2d, 0x2d, 0x27, 0x1f, 0x18, 0x0f, 0x08, 0x03}, // 3, -1.5dB + {0x2b, 0x2a, 0x25, 0x1e, 0x16, 0x0e, 0x07, 0x03}, // 4, -2.0dB + {0x28, 0x28, 0x22, 0x1c, 0x15, 0x0d, 0x07, 0x03}, // 5, -2.5dB + {0x26, 0x25, 0x21, 0x1b, 0x14, 0x0d, 0x06, 0x03}, // 6, -3.0dB + {0x24, 0x23, 0x1f, 0x19, 0x13, 0x0c, 0x06, 0x03}, // 7, -3.5dB + {0x22, 0x21, 0x1d, 0x18, 0x11, 0x0b, 0x06, 0x02}, // 8, -4.0dB + {0x20, 0x20, 0x1b, 0x16, 0x11, 0x08, 0x05, 0x02}, // 9, -4.5dB + {0x1f, 0x1e, 0x1a, 0x15, 0x10, 0x0a, 0x05, 0x02}, // 10, -5.0dB + {0x1d, 0x1c, 0x18, 0x14, 0x0f, 0x0a, 0x05, 0x02}, // 11, -5.5dB + {0x1b, 0x1a, 0x17, 0x13, 0x0e, 0x09, 0x04, 0x02}, // 12, -6.0dB + {0x1a, 0x19, 0x16, 0x12, 0x0d, 0x09, 0x04, 0x02}, // 13, -6.5dB + {0x18, 0x17, 0x15, 0x11, 0x0c, 0x08, 0x04, 0x02}, // 14, -7.0dB + {0x17, 0x16, 0x13, 0x10, 0x0c, 0x08, 0x04, 0x02}, // 15, -7.5dB + {0x16, 0x15, 0x12, 0x0f, 0x0b, 0x07, 0x04, 0x01}, // 16, -8.0dB + {0x14, 0x14, 0x11, 0x0e, 0x0b, 0x07, 0x03, 0x02}, // 17, -8.5dB + {0x13, 0x13, 0x10, 0x0d, 0x0a, 0x06, 0x03, 0x01}, // 18, -9.0dB + {0x12, 0x12, 0x0f, 0x0c, 0x09, 0x06, 0x03, 0x01}, // 19, -9.5dB + {0x11, 0x11, 0x0f, 0x0c, 0x09, 0x06, 0x03, 0x01}, // 20, -10.0dB + {0x10, 0x10, 0x0e, 0x0b, 0x08, 0x05, 0x03, 0x01}, // 21, -10.5dB + {0x0f, 0x0f, 0x0d, 0x0b, 0x08, 0x05, 0x03, 0x01}, // 22, -11.0dB + {0x0e, 0x0e, 0x0c, 0x0a, 0x08, 0x05, 0x02, 0x01}, // 23, -11.5dB + {0x0d, 0x0d, 0x0c, 0x0a, 0x07, 0x05, 0x02, 0x01}, // 24, -12.0dB + {0x0d, 0x0c, 0x0b, 0x09, 0x07, 0x04, 0x02, 0x01}, // 25, -12.5dB + {0x0c, 0x0c, 0x0a, 0x09, 0x06, 0x04, 0x02, 0x01}, // 26, -13.0dB + {0x0b, 0x0b, 0x0a, 0x08, 0x06, 0x04, 0x02, 0x01}, // 27, -13.5dB + {0x0b, 0x0a, 0x09, 0x08, 0x06, 0x04, 0x02, 0x01}, // 28, -14.0dB + {0x0a, 0x0a, 0x09, 0x07, 0x05, 0x03, 0x02, 0x01}, // 29, -14.5dB + {0x0a, 0x09, 0x08, 0x07, 0x05, 0x03, 0x02, 0x01}, // 30, -15.0dB + {0x09, 0x09, 0x08, 0x06, 0x05, 0x03, 0x01, 0x01}, // 31, -15.5dB + {0x09, 0x08, 0x07, 0x06, 0x04, 0x03, 0x01, 0x01} // 32, -16.0dB +}; + + +u8 CCKSwingTable_Ch14 [CCK_TABLE_SIZE][8]= { + {0x36, 0x35, 0x2e, 0x1b, 0x00, 0x00, 0x00, 0x00}, // 0, +0dB + {0x33, 0x32, 0x2b, 0x19, 0x00, 0x00, 0x00, 0x00}, // 1, -0.5dB + {0x30, 0x2f, 0x29, 0x18, 0x00, 0x00, 0x00, 0x00}, // 2, -1.0dB + {0x2d, 0x2d, 0x17, 0x17, 0x00, 0x00, 0x00, 0x00}, // 3, -1.5dB + {0x2b, 0x2a, 0x25, 0x15, 0x00, 0x00, 0x00, 0x00}, // 4, -2.0dB + {0x28, 0x28, 0x24, 0x14, 0x00, 0x00, 0x00, 0x00}, // 5, -2.5dB + {0x26, 0x25, 0x21, 0x13, 0x00, 0x00, 0x00, 0x00}, // 6, -3.0dB + {0x24, 0x23, 0x1f, 0x12, 0x00, 0x00, 0x00, 0x00}, // 7, -3.5dB + {0x22, 0x21, 0x1d, 0x11, 0x00, 0x00, 0x00, 0x00}, // 8, -4.0dB + {0x20, 0x20, 0x1b, 0x10, 0x00, 0x00, 0x00, 0x00}, // 9, -4.5dB + {0x1f, 0x1e, 0x1a, 0x0f, 0x00, 0x00, 0x00, 0x00}, // 10, -5.0dB + {0x1d, 0x1c, 0x18, 0x0e, 0x00, 0x00, 0x00, 0x00}, // 11, -5.5dB + {0x1b, 0x1a, 0x17, 0x0e, 0x00, 0x00, 0x00, 0x00}, // 12, -6.0dB + {0x1a, 0x19, 0x16, 0x0d, 0x00, 0x00, 0x00, 0x00}, // 13, -6.5dB + {0x18, 0x17, 0x15, 0x0c, 0x00, 0x00, 0x00, 0x00}, // 14, -7.0dB + {0x17, 0x16, 0x13, 0x0b, 0x00, 0x00, 0x00, 0x00}, // 15, -7.5dB + {0x16, 0x15, 0x12, 0x0b, 0x00, 0x00, 0x00, 0x00}, // 16, -8.0dB + {0x14, 0x14, 0x11, 0x0a, 0x00, 0x00, 0x00, 0x00}, // 17, -8.5dB + {0x13, 0x13, 0x10, 0x0a, 0x00, 0x00, 0x00, 0x00}, // 18, -9.0dB + {0x12, 0x12, 0x0f, 0x09, 0x00, 0x00, 0x00, 0x00}, // 19, -9.5dB + {0x11, 0x11, 0x0f, 0x09, 0x00, 0x00, 0x00, 0x00}, // 20, -10.0dB + {0x10, 0x10, 0x0e, 0x08, 0x00, 0x00, 0x00, 0x00}, // 21, -10.5dB + {0x0f, 0x0f, 0x0d, 0x08, 0x00, 0x00, 0x00, 0x00}, // 22, -11.0dB + {0x0e, 0x0e, 0x0c, 0x07, 0x00, 0x00, 0x00, 0x00}, // 23, -11.5dB + {0x0d, 0x0d, 0x0c, 0x07, 0x00, 0x00, 0x00, 0x00}, // 24, -12.0dB + {0x0d, 0x0c, 0x0b, 0x06, 0x00, 0x00, 0x00, 0x00}, // 25, -12.5dB + {0x0c, 0x0c, 0x0a, 0x06, 0x00, 0x00, 0x00, 0x00}, // 26, -13.0dB + {0x0b, 0x0b, 0x0a, 0x06, 0x00, 0x00, 0x00, 0x00}, // 27, -13.5dB + {0x0b, 0x0a, 0x09, 0x05, 0x00, 0x00, 0x00, 0x00}, // 28, -14.0dB + {0x0a, 0x0a, 0x09, 0x05, 0x00, 0x00, 0x00, 0x00}, // 29, -14.5dB + {0x0a, 0x09, 0x08, 0x05, 0x00, 0x00, 0x00, 0x00}, // 30, -15.0dB + {0x09, 0x09, 0x08, 0x05, 0x00, 0x00, 0x00, 0x00}, // 31, -15.5dB + {0x09, 0x08, 0x07, 0x04, 0x00, 0x00, 0x00, 0x00} // 32, -16.0dB +}; + + +#ifdef CONFIG_CHIP_VER_INTEGRATION +void dump_chip_info(HAL_VERSION ChipVersion) +{ + if(IS_81XXC(ChipVersion)){ + DBG_871X("Chip Version Info: %s_",IS_92C_SERIAL(ChipVersion)?"CHIP_8192C":"CHIP_8188C"); + } + else if(IS_92D(ChipVersion)){ + DBG_871X("Chip Version Info: CHIP_8192D_"); + } + else if(IS_8723_SERIES(ChipVersion)){ + DBG_871X("Chip Version Info: CHIP_8723A_"); + } + else if(IS_8188E(ChipVersion)){ + DBG_871X("Chip Version Info: CHIP_8188E_"); + } + + DBG_871X("%s_",IS_NORMAL_CHIP(ChipVersion)?"Normal_Chip":"Test_Chip"); + DBG_871X("%s_",IS_CHIP_VENDOR_TSMC(ChipVersion)?"TSMC":"UMC"); + if(IS_A_CUT(ChipVersion)) DBG_871X("A_CUT_"); + else if(IS_B_CUT(ChipVersion)) DBG_871X("B_CUT_"); + else if(IS_C_CUT(ChipVersion)) DBG_871X("C_CUT_"); + else if(IS_D_CUT(ChipVersion)) DBG_871X("D_CUT_"); + else if(IS_E_CUT(ChipVersion)) DBG_871X("E_CUT_"); + else DBG_871X("UNKNOWN_CUT(%d)_",ChipVersion.CUTVersion); + + if(IS_1T1R(ChipVersion)) DBG_871X("1T1R_"); + else if(IS_1T2R(ChipVersion)) DBG_871X("1T2R_"); + else if(IS_2T2R(ChipVersion)) DBG_871X("2T2R_"); + else DBG_871X("UNKNOWN_RFTYPE(%d)_",ChipVersion.RFType); + + + DBG_871X("RomVer(%d)\n",ChipVersion.ROMVer); +} + +#endif + +#define EEPROM_CHANNEL_PLAN_BY_HW_MASK 0x80 + +u8 //return the final channel plan decision +hal_com_get_channel_plan( + IN PADAPTER padapter, + IN u8 hw_channel_plan, //channel plan from HW (efuse/eeprom) + IN u8 sw_channel_plan, //channel plan from SW (registry/module param) + IN u8 def_channel_plan, //channel plan used when the former two is invalid + IN BOOLEAN AutoLoadFail + ) +{ + u8 swConfig; + u8 chnlPlan; + + swConfig = _TRUE; + if (!AutoLoadFail) + { + if (!rtw_is_channel_plan_valid(sw_channel_plan)) + swConfig = _FALSE; + if (hw_channel_plan & EEPROM_CHANNEL_PLAN_BY_HW_MASK) + swConfig = _FALSE; + } + + if (swConfig == _TRUE) + chnlPlan = sw_channel_plan; + else + chnlPlan = hw_channel_plan & (~EEPROM_CHANNEL_PLAN_BY_HW_MASK); + + if (!rtw_is_channel_plan_valid(chnlPlan)) + chnlPlan = def_channel_plan; + + return chnlPlan; +} + +u8 MRateToHwRate(u8 rate) +{ + u8 ret = DESC_RATE1M; + + switch(rate) + { + // CCK and OFDM non-HT rates + case IEEE80211_CCK_RATE_1MB: ret = DESC_RATE1M; break; + case IEEE80211_CCK_RATE_2MB: ret = DESC_RATE2M; break; + case IEEE80211_CCK_RATE_5MB: ret = DESC_RATE5_5M; break; + case IEEE80211_CCK_RATE_11MB: ret = DESC_RATE11M; break; + case IEEE80211_OFDM_RATE_6MB: ret = DESC_RATE6M; break; + case IEEE80211_OFDM_RATE_9MB: ret = DESC_RATE9M; break; + case IEEE80211_OFDM_RATE_12MB: ret = DESC_RATE12M; break; + case IEEE80211_OFDM_RATE_18MB: ret = DESC_RATE18M; break; + case IEEE80211_OFDM_RATE_24MB: ret = DESC_RATE24M; break; + case IEEE80211_OFDM_RATE_36MB: ret = DESC_RATE36M; break; + case IEEE80211_OFDM_RATE_48MB: ret = DESC_RATE48M; break; + case IEEE80211_OFDM_RATE_54MB: ret = DESC_RATE54M; break; + + // HT rates since here + //case MGN_MCS0: ret = DESC_RATEMCS0; break; + //case MGN_MCS1: ret = DESC_RATEMCS1; break; + //case MGN_MCS2: ret = DESC_RATEMCS2; break; + //case MGN_MCS3: ret = DESC_RATEMCS3; break; + //case MGN_MCS4: ret = DESC_RATEMCS4; break; + //case MGN_MCS5: ret = DESC_RATEMCS5; break; + //case MGN_MCS6: ret = DESC_RATEMCS6; break; + //case MGN_MCS7: ret = DESC_RATEMCS7; break; + + default: break; + } + + return ret; +} + +void HalSetBrateCfg( + IN PADAPTER Adapter, + IN u8 *mBratesOS, + OUT u16 *pBrateCfg) +{ + u8 i, is_brate, brate; + + for(i=0;ieeprompriv.mac_addr); +#ifdef CONFIG_CONCURRENT_MODE + if (adapter->pbuddy_adapter) + rtw_hal_set_hwreg(adapter->pbuddy_adapter, HW_VAR_MAC_ADDR, adapter->pbuddy_adapter->eeprompriv.mac_addr); +#endif +} + +/* +* C2H event format: +* Field TRIGGER CONTENT CMD_SEQ CMD_LEN CMD_ID +* BITS [127:120] [119:16] [15:8] [7:4] [3:0] +*/ + +void c2h_evt_clear(_adapter *adapter) +{ + rtw_write8(adapter, REG_C2HEVT_CLEAR, C2H_EVT_HOST_CLOSE); +} + +s32 c2h_evt_read(_adapter *adapter, u8 *buf) +{ + s32 ret = _FAIL; + struct c2h_evt_hdr *c2h_evt; + int i; + u8 trigger; + + if (buf == NULL) + goto exit; + + trigger = rtw_read8(adapter, REG_C2HEVT_CLEAR); + + if (trigger == C2H_EVT_HOST_CLOSE) { + goto exit; /* Not ready */ + } else if (trigger != C2H_EVT_FW_CLOSE) { + goto clear_evt; /* Not a valid value */ + } + + c2h_evt = (struct c2h_evt_hdr *)buf; + + _rtw_memset(c2h_evt, 0, 16); + + *buf = rtw_read8(adapter, REG_C2HEVT_MSG_NORMAL); + *(buf+1) = rtw_read8(adapter, REG_C2HEVT_MSG_NORMAL + 1); + + RT_PRINT_DATA(_module_hal_init_c_, _drv_info_, "c2h_evt_read(): ", + &c2h_evt , sizeof(c2h_evt)); + + if (0) { + DBG_871X("%s id:%u, len:%u, seq:%u, trigger:0x%02x\n", __func__ + , c2h_evt->id, c2h_evt->plen, c2h_evt->seq, trigger); + } + + /* Read the content */ + for (i = 0; i < c2h_evt->plen; i++) + c2h_evt->payload[i] = rtw_read8(adapter, REG_C2HEVT_MSG_NORMAL + sizeof(*c2h_evt) + i); + + RT_PRINT_DATA(_module_hal_init_c_, _drv_info_, "c2h_evt_read(): Command Content:\n", + c2h_evt->payload, c2h_evt->plen); + + ret = _SUCCESS; + +clear_evt: + /* + * Clear event to notify FW we have read the command. + * If this field isn't clear, the FW won't update the next command message. + */ + c2h_evt_clear(adapter); +exit: + return ret; +} --- linux-raspi2-4.2.0.orig/drivers/net/wireless/rtl8192cu/hal/hal_intf.c +++ linux-raspi2-4.2.0/drivers/net/wireless/rtl8192cu/hal/hal_intf.c @@ -0,0 +1,545 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2012 Realtek Corporation. All rights reserved. + * + * 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 + * published by the Free Software Foundation. + * + * 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 Street, Fifth Floor, Boston, MA 02110, USA + * + * + ******************************************************************************/ + +#define _HAL_INTF_C_ +#include +#include +#include +#include + +#include + +#ifdef CONFIG_SDIO_HCI + #include +#elif defined(CONFIG_USB_HCI) + #include +#elif defined(CONFIG_GSPI_HCI) + #include +#endif + +void rtw_hal_chip_configure(_adapter *padapter) +{ + if(padapter->HalFunc.intf_chip_configure) + padapter->HalFunc.intf_chip_configure(padapter); +} + +void rtw_hal_read_chip_info(_adapter *padapter) +{ + if(padapter->HalFunc.read_adapter_info) + padapter->HalFunc.read_adapter_info(padapter); +} + +void rtw_hal_read_chip_version(_adapter *padapter) +{ + if(padapter->HalFunc.read_chip_version) + padapter->HalFunc.read_chip_version(padapter); +} + +void rtw_hal_def_value_init(_adapter *padapter) +{ + if(padapter->HalFunc.init_default_value) + padapter->HalFunc.init_default_value(padapter); +} + +void rtw_hal_free_data(_adapter *padapter) +{ + if(padapter->HalFunc.free_hal_data) + padapter->HalFunc.free_hal_data(padapter); +} + +void rtw_hal_dm_init(_adapter *padapter) +{ + if(padapter->HalFunc.dm_init) + padapter->HalFunc.dm_init(padapter); +} + +void rtw_hal_dm_deinit(_adapter *padapter) +{ + // cancel dm timer + if(padapter->HalFunc.dm_deinit) + padapter->HalFunc.dm_deinit(padapter); +} + +void rtw_hal_sw_led_init(_adapter *padapter) +{ + if(padapter->HalFunc.InitSwLeds) + padapter->HalFunc.InitSwLeds(padapter); +} + +void rtw_hal_sw_led_deinit(_adapter *padapter) +{ + if(padapter->HalFunc.DeInitSwLeds) + padapter->HalFunc.DeInitSwLeds(padapter); +} + +uint rtw_hal_init(_adapter *padapter) +{ + uint status = _SUCCESS; + + if(padapter->hw_init_completed == _TRUE) + { + DBG_871X("rtw_hal_init: hw_init_completed == _TRUE\n"); + goto success; + } +#ifdef CONFIG_DEINIT_BEFORE_INIT + status = padapter->HalFunc.hal_deinit(padapter); + if(status != _SUCCESS){ + DBG_871X("rtw_hal_init: hal_deinit before hal_init FAIL !!\n"); + goto fail; + } +#endif + +#ifdef CONFIG_DUALMAC_CONCURRENT + // before init mac0, driver must init mac1 first to avoid usb rx error. + if((padapter->pbuddy_adapter != NULL) && (padapter->DualMacConcurrent == _TRUE) + && (padapter->adapter_type == PRIMARY_ADAPTER)) + { + if(padapter->pbuddy_adapter->hw_init_completed == _TRUE) + { + DBG_871X("rtw_hal_init: pbuddy_adapter hw_init_completed == _TRUE\n"); + } + else + { +#ifdef CONFIG_DEINIT_BEFORE_INIT + status = padapter->HalFunc.hal_deinit(padapter->pbuddy_adapter); + if(status != _SUCCESS){ + DBG_871X("rtw_hal_init: hal_deinit before hal_init FAIL !!(pbuddy_adapter)\n"); + goto fail; + } +#endif + status = padapter->HalFunc.hal_init(padapter->pbuddy_adapter); + if(status == _SUCCESS){ + padapter->pbuddy_adapter->hw_init_completed = _TRUE; + } + else{ + padapter->pbuddy_adapter->hw_init_completed = _FALSE; + RT_TRACE(_module_hal_init_c_,_drv_err_,("rtw_hal_init: hal__init fail(pbuddy_adapter)\n")); + goto fail; + } + } + } +#else + if(adapter_to_dvobj(padapter)->DualMacMode == _TRUE) + { + if(padapter->pbuddy_adapter != NULL) { + if(padapter->pbuddy_adapter->hw_init_completed == _FALSE) + { +#ifdef CONFIG_DEINIT_BEFORE_INIT + status = padapter->HalFunc.hal_deinit(padapter->pbuddy_adapter); + if(status != _SUCCESS){ + DBG_871X("rtw_hal_init: hal_deinit before hal_init FAIL !!(pbuddy_adapter)\n"); + goto fail; + } +#endif + status = padapter->HalFunc.hal_init(padapter->pbuddy_adapter); + if(status == _SUCCESS){ + padapter->pbuddy_adapter->hw_init_completed = _TRUE; + } + else{ + padapter->pbuddy_adapter->hw_init_completed = _FALSE; + RT_TRACE(_module_hal_init_c_,_drv_err_,("rtw_hal_init: hal__init fail for another interface\n")); + } + } + } + } +#endif + + padapter->hw_init_completed=_FALSE; + + status = padapter->HalFunc.hal_init(padapter); + + if(status == _SUCCESS){ + padapter->hw_init_completed = _TRUE; + } + else{ + padapter->hw_init_completed = _FALSE; + RT_TRACE(_module_hal_init_c_,_drv_err_,("rtw_hal_init: hal__init fail\n")); + goto fail; + } + +success: + + if (padapter->registrypriv.notch_filter == 1) + rtw_hal_notch_filter(padapter, 1); + + rtw_hal_reset_security_engine(padapter); + + rtw_sec_restore_wep_key(padapter); + + init_hw_mlme_ext(padapter); + +fail: + + RT_TRACE(_module_hal_init_c_,_drv_err_,("-rtl871x_hal_init:status=0x%x\n",status)); + + return status; +} + +uint rtw_hal_deinit(_adapter *padapter) +{ + uint status = _SUCCESS; + +_func_enter_; + + status = padapter->HalFunc.hal_deinit(padapter); + + if(status == _SUCCESS){ + padapter->hw_init_completed = _FALSE; + } + else + { + RT_TRACE(_module_hal_init_c_,_drv_err_,("\n rtw_hal_deinit: hal_init fail\n")); + } + +_func_exit_; + + return status; +} + +void rtw_hal_set_hwreg(_adapter *padapter, u8 variable, u8 *val) +{ + if (padapter->HalFunc.SetHwRegHandler) + padapter->HalFunc.SetHwRegHandler(padapter, variable, val); +} + +void rtw_hal_get_hwreg(_adapter *padapter, u8 variable, u8 *val) +{ + if (padapter->HalFunc.GetHwRegHandler) + padapter->HalFunc.GetHwRegHandler(padapter, variable, val); +} + +u8 rtw_hal_set_def_var(_adapter *padapter, HAL_DEF_VARIABLE eVariable, PVOID pValue) +{ + if(padapter->HalFunc.SetHalDefVarHandler) + return padapter->HalFunc.SetHalDefVarHandler(padapter,eVariable,pValue); + return _FAIL; +} + +u8 rtw_hal_get_def_var(_adapter *padapter, HAL_DEF_VARIABLE eVariable, PVOID pValue) +{ + if(padapter->HalFunc.GetHalDefVarHandler) + return padapter->HalFunc.GetHalDefVarHandler(padapter,eVariable,pValue); + return _FAIL; +} + +void rtw_hal_enable_interrupt(_adapter *padapter) +{ + if (padapter->HalFunc.enable_interrupt) + padapter->HalFunc.enable_interrupt(padapter); + else + DBG_871X("%s: HalFunc.enable_interrupt is NULL!\n", __FUNCTION__); + +} +void rtw_hal_disable_interrupt(_adapter *padapter) +{ + if (padapter->HalFunc.disable_interrupt) + padapter->HalFunc.disable_interrupt(padapter); + else + DBG_871X("%s: HalFunc.disable_interrupt is NULL!\n", __FUNCTION__); + +} + +u32 rtw_hal_inirp_init(_adapter *padapter) +{ + u32 rst = _FAIL; + if(padapter->HalFunc.inirp_init) + rst = padapter->HalFunc.inirp_init(padapter); + else + DBG_871X(" %s HalFunc.inirp_init is NULL!!!\n",__FUNCTION__); + return rst; +} + +u32 rtw_hal_inirp_deinit(_adapter *padapter) +{ + + if(padapter->HalFunc.inirp_deinit) + return padapter->HalFunc.inirp_deinit(padapter); + + return _FAIL; + +} + +u8 rtw_hal_intf_ps_func(_adapter *padapter,HAL_INTF_PS_FUNC efunc_id, u8* val) +{ + if(padapter->HalFunc.interface_ps_func) + return padapter->HalFunc.interface_ps_func(padapter,efunc_id,val); + return _FAIL; +} + +s32 rtw_hal_xmitframe_enqueue(_adapter *padapter, struct xmit_frame *pxmitframe) +{ + if(padapter->HalFunc.hal_xmitframe_enqueue) + return padapter->HalFunc.hal_xmitframe_enqueue(padapter, pxmitframe); + + return _FALSE; +} + +s32 rtw_hal_xmit(_adapter *padapter, struct xmit_frame *pxmitframe) +{ + if(padapter->HalFunc.hal_xmit) + return padapter->HalFunc.hal_xmit(padapter, pxmitframe); + + return _FALSE; +} + +s32 rtw_hal_mgnt_xmit(_adapter *padapter, struct xmit_frame *pmgntframe) +{ + s32 ret = _FAIL; + unsigned char *pframe; + struct rtw_ieee80211_hdr *pwlanhdr; + + pframe = (u8 *)(pmgntframe->buf_addr) + TXDESC_OFFSET; + pwlanhdr = (struct rtw_ieee80211_hdr *)pframe; + _rtw_memcpy(pmgntframe->attrib.ra, pwlanhdr->addr1, ETH_ALEN); + +#ifdef CONFIG_IEEE80211W + if(padapter->securitypriv.binstallBIPkey == _TRUE) + { + if(IS_MCAST(pmgntframe->attrib.ra)) + { + pmgntframe->attrib.encrypt = _BIP_; + //pmgntframe->attrib.bswenc = _TRUE; + } + else + { + pmgntframe->attrib.encrypt = _AES_; + pmgntframe->attrib.bswenc = _TRUE; + } + rtw_mgmt_xmitframe_coalesce(padapter, pmgntframe->pkt, pmgntframe); + } +#endif //CONFIG_IEEE80211W + + if(padapter->HalFunc.mgnt_xmit) + ret = padapter->HalFunc.mgnt_xmit(padapter, pmgntframe); + return ret; +} + +s32 rtw_hal_init_xmit_priv(_adapter *padapter) +{ + if(padapter->HalFunc.init_xmit_priv != NULL) + return padapter->HalFunc.init_xmit_priv(padapter); + return _FAIL; +} + +void rtw_hal_free_xmit_priv(_adapter *padapter) +{ + if(padapter->HalFunc.free_xmit_priv != NULL) + padapter->HalFunc.free_xmit_priv(padapter); +} + +s32 rtw_hal_init_recv_priv(_adapter *padapter) +{ + if(padapter->HalFunc.init_recv_priv) + return padapter->HalFunc.init_recv_priv(padapter); + + return _FAIL; +} + +void rtw_hal_free_recv_priv(_adapter *padapter) +{ + if(padapter->HalFunc.free_recv_priv) + padapter->HalFunc.free_recv_priv(padapter); +} + +void rtw_hal_update_ra_mask(_adapter *padapter, u32 mac_id) +{ + if(padapter->HalFunc.UpdateRAMaskHandler) + padapter->HalFunc.UpdateRAMaskHandler(padapter,mac_id); +} + +void rtw_hal_add_ra_tid(_adapter *padapter, u32 bitmap, u8 arg) +{ + if(padapter->HalFunc.Add_RateATid) + padapter->HalFunc.Add_RateATid(padapter, bitmap, arg); +} + +u32 rtw_hal_read_bbreg(_adapter *padapter, u32 RegAddr, u32 BitMask) +{ + u32 data = 0; + if (padapter->HalFunc.read_bbreg) + data = padapter->HalFunc.read_bbreg(padapter, RegAddr, BitMask); + return data; +} + +void rtw_hal_write_bbreg(_adapter *padapter, u32 RegAddr, u32 BitMask, u32 Data) +{ + if (padapter->HalFunc.write_bbreg) + padapter->HalFunc.write_bbreg(padapter, RegAddr, BitMask, Data); +} + +u32 rtw_hal_read_rfreg(_adapter *padapter, u32 eRFPath, u32 RegAddr, u32 BitMask) +{ + u32 data = 0; + if (padapter->HalFunc.read_rfreg) + data = padapter->HalFunc.read_rfreg(padapter, eRFPath, RegAddr, BitMask); + return data; +} + +void rtw_hal_write_rfreg(_adapter *padapter, u32 eRFPath, u32 RegAddr, u32 BitMask, u32 Data) +{ + if (padapter->HalFunc.write_rfreg) + padapter->HalFunc.write_rfreg(padapter, eRFPath, RegAddr, BitMask, Data); +} + +s32 rtw_hal_interrupt_handler(_adapter *padapter) +{ + if(padapter->HalFunc.interrupt_handler) + return padapter->HalFunc.interrupt_handler(padapter); + return _FAIL; +} + +void rtw_hal_set_bwmode(_adapter *padapter, HT_CHANNEL_WIDTH Bandwidth, u8 Offset) +{ + if(padapter->HalFunc.set_bwmode_handler) + padapter->HalFunc.set_bwmode_handler(padapter, Bandwidth, Offset); +} + +void rtw_hal_set_chan(_adapter *padapter, u8 channel) +{ + if(padapter->HalFunc.set_channel_handler) + padapter->HalFunc.set_channel_handler(padapter, channel); +} + +void rtw_hal_dm_watchdog(_adapter *padapter) +{ + if(padapter->HalFunc.hal_dm_watchdog) + padapter->HalFunc.hal_dm_watchdog(padapter); +} + +void rtw_hal_bcn_related_reg_setting(_adapter *padapter) +{ + if(padapter->HalFunc.SetBeaconRelatedRegistersHandler) + padapter->HalFunc.SetBeaconRelatedRegistersHandler(padapter); +} + +#ifdef CONFIG_ANTENNA_DIVERSITY +u8 rtw_hal_antdiv_before_linked(_adapter *padapter) +{ + if (padapter->HalFunc.AntDivBeforeLinkHandler) + return padapter->HalFunc.AntDivBeforeLinkHandler(padapter); + return _FALSE; +} + +void rtw_hal_antdiv_rssi_compared(_adapter *padapter, WLAN_BSSID_EX *dst, WLAN_BSSID_EX *src) +{ + if (padapter->HalFunc.AntDivCompareHandler) + padapter->HalFunc.AntDivCompareHandler(padapter, dst, src); +} +#endif + +#ifdef CONFIG_HOSTAPD_MLME +s32 rtw_hal_hostap_mgnt_xmit_entry(_adapter *padapter, _pkt *pkt) +{ + if (padapter->HalFunc.hostap_mgnt_xmit_entry) + return padapter->HalFunc.hostap_mgnt_xmit_entry(padapter, pkt); + return _FAIL; +} +#endif //CONFIG_HOSTAPD_MLME + +#ifdef DBG_CONFIG_ERROR_DETECT +void rtw_hal_sreset_init(_adapter *padapter) +{ + if(padapter->HalFunc.sreset_init_value) + padapter->HalFunc.sreset_init_value(padapter); +} + +void rtw_hal_sreset_reset(_adapter *padapter) +{ + padapter = GET_PRIMARY_ADAPTER(padapter); + + if(padapter->HalFunc.silentreset) + padapter->HalFunc.silentreset(padapter); +} + +void rtw_hal_sreset_reset_value(_adapter *padapter) +{ + if(padapter->HalFunc.sreset_reset_value) + padapter->HalFunc.sreset_reset_value(padapter); +} + +void rtw_hal_sreset_xmit_status_check(_adapter *padapter) +{ +#ifdef CONFIG_CONCURRENT_MODE + if (padapter->adapter_type != PRIMARY_ADAPTER) + return; +#endif + if(padapter->HalFunc.sreset_xmit_status_check) + padapter->HalFunc.sreset_xmit_status_check(padapter); +} + +void rtw_hal_sreset_linked_status_check(_adapter *padapter) +{ + if(padapter->HalFunc.sreset_linked_status_check) + padapter->HalFunc.sreset_linked_status_check(padapter); +} + +u8 rtw_hal_sreset_get_wifi_status(_adapter *padapter) +{ + u8 status = 0; + if(padapter->HalFunc.sreset_get_wifi_status) + status = padapter->HalFunc.sreset_get_wifi_status(padapter); + return status; +} + +bool rtw_hal_sreset_inprogress(_adapter *padapter) +{ + bool inprogress = _FALSE; + + padapter = GET_PRIMARY_ADAPTER(padapter); + + if(padapter->HalFunc.sreset_inprogress) + inprogress = padapter->HalFunc.sreset_inprogress(padapter); + return inprogress; +} +#endif //DBG_CONFIG_ERROR_DETECT + +#ifdef CONFIG_IOL +int rtw_hal_iol_cmd(ADAPTER *adapter, struct xmit_frame *xmit_frame, u32 max_wating_ms) +{ + if (adapter->HalFunc.IOL_exec_cmds_sync) + return adapter->HalFunc.IOL_exec_cmds_sync(adapter, xmit_frame, max_wating_ms); + return _FAIL; +} +#endif + +void rtw_hal_notch_filter(_adapter *adapter, bool enable) +{ + if(adapter->HalFunc.hal_notch_filter) + adapter->HalFunc.hal_notch_filter(adapter,enable); +} + +void rtw_hal_reset_security_engine(_adapter * adapter) +{ + if(adapter->HalFunc.hal_reset_security_engine) + adapter->HalFunc.hal_reset_security_engine(adapter); +} + +s32 rtw_hal_c2h_handler(_adapter *adapter, struct c2h_evt_hdr *c2h_evt) +{ + s32 ret = _FAIL; + if (adapter->HalFunc.c2h_handler) + ret = adapter->HalFunc.c2h_handler(adapter, c2h_evt); + return ret; +} + +c2h_id_filter rtw_hal_c2h_id_filter_ccx(_adapter *adapter) +{ + return adapter->HalFunc.c2h_id_filter_ccx; +} --- linux-raspi2-4.2.0.orig/drivers/net/wireless/rtl8192cu/hal/rtl8192c/rtl8192c_cmd.c +++ linux-raspi2-4.2.0/drivers/net/wireless/rtl8192cu/hal/rtl8192c/rtl8192c_cmd.c @@ -0,0 +1,1154 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved. + * + * 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 + * published by the Free Software Foundation. + * + * 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 Street, Fifth Floor, Boston, MA 02110, USA + * + * + ******************************************************************************/ +#define _RTL8192C_CMD_C_ + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include + + +#define RTL92C_MAX_H2C_BOX_NUMS 4 +#define RTL92C_MAX_CMD_LEN 5 +#define MESSAGE_BOX_SIZE 4 +#define EX_MESSAGE_BOX_SIZE 2 + +static u8 _is_fw_read_cmd_down(_adapter* padapter, u8 msgbox_num) +{ + u8 read_down = _FALSE; + int retry_cnts = 100; + + u8 valid; + +// DBG_8192C(" _is_fw_read_cmd_down ,isnormal_chip(%x),reg_1cc(%x),msg_box(%d)...\n",isvern,rtw_read8(padapter,REG_HMETFR),msgbox_num); + + do{ + valid = rtw_read8(padapter,REG_HMETFR) & BIT(msgbox_num); + if(0 == valid ){ + read_down = _TRUE; + } + }while( (!read_down) && (retry_cnts--)); + + return read_down; + +} + + +/***************************************** +* H2C Msg format : +*| 31 - 8 |7 | 6 - 0 | +*| h2c_msg |Ext_bit |CMD_ID | +* +******************************************/ +int rtl8192c_FillH2CCmd(_adapter* padapter, u8 ElementID, u32 CmdLen, u8* pCmdBuffer) +{ + u8 bcmd_down = _FALSE; + int retry_cnts = 100; + u8 h2c_box_num; + u32 msgbox_addr; + u32 msgbox_ex_addr; + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(padapter); + u32 h2c_cmd = 0; + u16 h2c_cmd_ex = 0; + int ret = _FAIL; + +_func_enter_; + + padapter = GET_PRIMARY_ADAPTER(padapter); + pHalData = GET_HAL_DATA(padapter); + + if(padapter->bFWReady == _FALSE) + { + DBG_8192C("FillH2CCmd(): return H2C cmd because fw is not ready\n"); + return ret; + } + + _enter_critical_mutex(&(adapter_to_dvobj(padapter)->h2c_fwcmd_mutex), NULL); + + if(!pCmdBuffer){ + goto exit; + } + if(CmdLen > RTL92C_MAX_CMD_LEN){ + goto exit; + } + //pay attention to if race condition happened in H2C cmd setting. + do{ + h2c_box_num = pHalData->LastHMEBoxNum; + + if(!_is_fw_read_cmd_down(padapter, h2c_box_num)){ + DBG_8192C(" fw read cmd failed...\n"); + goto exit; + } + + if(CmdLen<=3) + { + _rtw_memcpy((u8*)(&h2c_cmd)+1, pCmdBuffer, CmdLen ); + } + else{ + _rtw_memcpy((u8*)(&h2c_cmd_ex), pCmdBuffer, EX_MESSAGE_BOX_SIZE); + _rtw_memcpy((u8*)(&h2c_cmd)+1, pCmdBuffer+2,( CmdLen-EX_MESSAGE_BOX_SIZE)); + *(u8*)(&h2c_cmd) |= BIT(7); + } + + *(u8*)(&h2c_cmd) |= ElementID; + + if(h2c_cmd & BIT(7)){ + msgbox_ex_addr = REG_HMEBOX_EXT_0 + (h2c_box_num *EX_MESSAGE_BOX_SIZE); + h2c_cmd_ex = cpu_to_le16( h2c_cmd_ex ); + rtw_write16(padapter, msgbox_ex_addr, h2c_cmd_ex); + } + msgbox_addr =REG_HMEBOX_0 + (h2c_box_num *MESSAGE_BOX_SIZE); + h2c_cmd = cpu_to_le32( h2c_cmd ); + rtw_write32(padapter,msgbox_addr, h2c_cmd); + + bcmd_down = _TRUE; + + // DBG_8192C("MSG_BOX:%d,CmdLen(%d), reg:0x%x =>h2c_cmd:0x%x, reg:0x%x =>h2c_cmd_ex:0x%x ..\n" + // ,pHalData->LastHMEBoxNum ,CmdLen,msgbox_addr,h2c_cmd,msgbox_ex_addr,h2c_cmd_ex); + + pHalData->LastHMEBoxNum = (h2c_box_num+1) % RTL92C_MAX_H2C_BOX_NUMS ; + + }while((!bcmd_down) && (retry_cnts--)); +/* + if(bcmd_down) + DBG_8192C("H2C Cmd exe down. \n" ); + else + DBG_8192C("H2C Cmd exe failed. \n" ); +*/ + ret = _SUCCESS; + +exit: + + _exit_critical_mutex(&(adapter_to_dvobj(padapter)->h2c_fwcmd_mutex), NULL); + +_func_exit_; + + return ret; + +} + +u8 rtl8192c_h2c_msg_hdl(_adapter *padapter, unsigned char *pbuf) +{ + u8 ElementID, CmdLen; + u8 *pCmdBuffer; + struct cmd_msg_parm *pcmdmsg; + + if(!pbuf) + return H2C_PARAMETERS_ERROR; + + pcmdmsg = (struct cmd_msg_parm*)pbuf; + ElementID = pcmdmsg->eid; + CmdLen = pcmdmsg->sz; + pCmdBuffer = pcmdmsg->buf; + + rtl8192c_FillH2CCmd(padapter, ElementID, CmdLen, pCmdBuffer); + + return H2C_SUCCESS; +} + +#if defined(CONFIG_AUTOSUSPEND) && defined(SUPPORT_HW_RFOFF_DETECTED) +u8 rtl8192c_set_FwSelectSuspend_cmd(_adapter *padapter ,u8 bfwpoll, u16 period) +{ + u8 res=_SUCCESS; + struct H2C_SS_RFOFF_PARAM param; + DBG_8192C("==>%s bfwpoll(%x)\n",__FUNCTION__,bfwpoll); + param.gpio_period = period;//Polling GPIO_11 period time + param.ROFOn = (_TRUE == bfwpoll)?1:0; + rtl8192c_FillH2CCmd(padapter, SELECTIVE_SUSPEND_ROF_CMD, sizeof(param), (u8*)(¶m)); + return res; +} +#endif //CONFIG_AUTOSUSPEND && SUPPORT_HW_RFOFF_DETECTED + +u8 rtl8192c_set_rssi_cmd(_adapter*padapter, u8 *param) +{ + u8 res=_SUCCESS; + +_func_enter_; + + *((u32*) param ) = cpu_to_le32( *((u32*) param ) ); + + rtl8192c_FillH2CCmd(padapter, RSSI_SETTING_EID, 3, param); + +_func_exit_; + + return res; +} + +u8 rtl8192c_set_raid_cmd(_adapter*padapter, u32 mask, u8 arg) +{ + u8 buf[5]; + u8 res=_SUCCESS; + +_func_enter_; + + _rtw_memset(buf, 0, 5); + mask = cpu_to_le32( mask ); + _rtw_memcpy(buf, &mask, 4); + buf[4] = arg; + + rtl8192c_FillH2CCmd(padapter, MACID_CONFIG_EID, 5, buf); + +_func_exit_; + + return res; + +} + +//bitmap[0:27] = tx_rate_bitmap +//bitmap[28:31]= Rate Adaptive id +//arg[0:4] = macid +//arg[5] = Short GI +void rtl8192c_Add_RateATid(PADAPTER pAdapter, u32 bitmap, u8 arg) +{ + + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(pAdapter); + + if(pHalData->fw_ractrl == _TRUE) + { + rtl8192c_set_raid_cmd(pAdapter, bitmap, arg); + } + else + { + u8 macid, init_rate, shortGIrate=_FALSE; + + init_rate = get_highest_rate_idx(bitmap&0x0fffffff)&0x3f; + + macid = arg&0x1f; + + shortGIrate = (arg&BIT(5)) ? _TRUE:_FALSE; + + if (shortGIrate==_TRUE) + init_rate |= BIT(6); + + rtw_write8(pAdapter, (REG_INIDATA_RATE_SEL+macid), (u8)init_rate); + } + +} + +void rtl8192c_set_FwPwrMode_cmd(_adapter*padapter, u8 Mode) +{ + SETPWRMODE_PARM H2CSetPwrMode; + struct pwrctrl_priv *pwrpriv = &padapter->pwrctrlpriv; + +_func_enter_; + + DBG_871X("%s(): Mode = %d, SmartPS = %d\n", __FUNCTION__,Mode,pwrpriv->smart_ps); + + H2CSetPwrMode.Mode = Mode; + + H2CSetPwrMode.SmartPS = pwrpriv->smart_ps; + + H2CSetPwrMode.BcnPassTime = 1;//pPSC->RegMaxLPSAwakeIntvl; + + rtl8192c_FillH2CCmd(padapter, SET_PWRMODE_EID, sizeof(H2CSetPwrMode), (u8 *)&H2CSetPwrMode); + +_func_exit_; +} + +void ConstructBeacon(_adapter *padapter, u8 *pframe, u32 *pLength) +{ + struct rtw_ieee80211_hdr *pwlanhdr; + u16 *fctrl; + u32 rate_len, pktlen; + struct mlme_ext_priv *pmlmeext = &(padapter->mlmeextpriv); + struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info); + WLAN_BSSID_EX *cur_network = &(pmlmeinfo->network); + u8 bc_addr[] = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff}; + + + //DBG_871X("%s\n", __FUNCTION__); + + pwlanhdr = (struct rtw_ieee80211_hdr *)pframe; + + fctrl = &(pwlanhdr->frame_ctl); + *(fctrl) = 0; + + _rtw_memcpy(pwlanhdr->addr1, bc_addr, ETH_ALEN); + _rtw_memcpy(pwlanhdr->addr2, myid(&(padapter->eeprompriv)), ETH_ALEN); + _rtw_memcpy(pwlanhdr->addr3, get_my_bssid(cur_network), ETH_ALEN); + + SetSeqNum(pwlanhdr, 0/*pmlmeext->mgnt_seq*/); + //pmlmeext->mgnt_seq++; + SetFrameSubType(pframe, WIFI_BEACON); + + pframe += sizeof(struct rtw_ieee80211_hdr_3addr); + pktlen = sizeof (struct rtw_ieee80211_hdr_3addr); + + //timestamp will be inserted by hardware + pframe += 8; + pktlen += 8; + + // beacon interval: 2 bytes + _rtw_memcpy(pframe, (unsigned char *)(rtw_get_beacon_interval_from_ie(cur_network->IEs)), 2); + + pframe += 2; + pktlen += 2; + + // capability info: 2 bytes + _rtw_memcpy(pframe, (unsigned char *)(rtw_get_capability_from_ie(cur_network->IEs)), 2); + + pframe += 2; + pktlen += 2; + + if( (pmlmeinfo->state&0x03) == WIFI_FW_AP_STATE) + { + //DBG_871X("ie len=%d\n", cur_network->IELength); + pktlen += cur_network->IELength - sizeof(NDIS_802_11_FIXED_IEs); + _rtw_memcpy(pframe, cur_network->IEs+sizeof(NDIS_802_11_FIXED_IEs), pktlen); + + goto _ConstructBeacon; + } + + //below for ad-hoc mode + + // SSID + pframe = rtw_set_ie(pframe, _SSID_IE_, cur_network->Ssid.SsidLength, cur_network->Ssid.Ssid, &pktlen); + + // supported rates... + rate_len = rtw_get_rateset_len(cur_network->SupportedRates); + pframe = rtw_set_ie(pframe, _SUPPORTEDRATES_IE_, ((rate_len > 8)? 8: rate_len), cur_network->SupportedRates, &pktlen); + + // DS parameter set + pframe = rtw_set_ie(pframe, _DSSET_IE_, 1, (unsigned char *)&(cur_network->Configuration.DSConfig), &pktlen); + + if( (pmlmeinfo->state&0x03) == WIFI_FW_ADHOC_STATE) + { + u32 ATIMWindow; + // IBSS Parameter Set... + //ATIMWindow = cur->Configuration.ATIMWindow; + ATIMWindow = 0; + pframe = rtw_set_ie(pframe, _IBSS_PARA_IE_, 2, (unsigned char *)(&ATIMWindow), &pktlen); + } + + + //todo: ERP IE + + + // EXTERNDED SUPPORTED RATE + if (rate_len > 8) + { + pframe = rtw_set_ie(pframe, _EXT_SUPPORTEDRATES_IE_, (rate_len - 8), (cur_network->SupportedRates + 8), &pktlen); + } + + + //todo:HT for adhoc + +_ConstructBeacon: + + if ((pktlen + TXDESC_SIZE) > 512) + { + DBG_871X("beacon frame too large\n"); + return; + } + + *pLength = pktlen; + + //DBG_871X("%s bcn_sz=%d\n", __FUNCTION__, pktlen); + +} + +void ConstructPSPoll(_adapter *padapter, u8 *pframe, u32 *pLength) +{ + struct rtw_ieee80211_hdr *pwlanhdr; + u16 *fctrl; + u32 pktlen; + struct mlme_ext_priv *pmlmeext = &(padapter->mlmeextpriv); + struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info); + + //DBG_871X("%s\n", __FUNCTION__); + + pwlanhdr = (struct rtw_ieee80211_hdr *)pframe; + + // Frame control. + fctrl = &(pwlanhdr->frame_ctl); + *(fctrl) = 0; + SetPwrMgt(fctrl); + SetFrameSubType(pframe, WIFI_PSPOLL); + + // AID. + SetDuration(pframe, (pmlmeinfo->aid | 0xc000)); + + // BSSID. + _rtw_memcpy(pwlanhdr->addr1, get_my_bssid(&(pmlmeinfo->network)), ETH_ALEN); + + // TA. + _rtw_memcpy(pwlanhdr->addr2, myid(&(padapter->eeprompriv)), ETH_ALEN); + + *pLength = 16; +} + +void ConstructNullFunctionData(_adapter *padapter, u8 *pframe, u32 *pLength, u8 *StaAddr, BOOLEAN bForcePowerSave) +{ + struct rtw_ieee80211_hdr *pwlanhdr; + u16 *fctrl; + u32 pktlen; + struct mlme_priv *pmlmepriv = &padapter->mlmepriv; + struct wlan_network *cur_network = &pmlmepriv->cur_network; + struct mlme_ext_priv *pmlmeext = &(padapter->mlmeextpriv); + struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info); + + //DBG_871X("%s:%d\n", __FUNCTION__, bForcePowerSave); + + pwlanhdr = (struct rtw_ieee80211_hdr *)pframe; + + fctrl = &(pwlanhdr->frame_ctl); + *(fctrl) = 0; + if (bForcePowerSave) + { + SetPwrMgt(fctrl); + } + + switch(cur_network->network.InfrastructureMode) + { + case Ndis802_11Infrastructure: + SetToDs(fctrl); + _rtw_memcpy(pwlanhdr->addr1, get_my_bssid(&(pmlmeinfo->network)), ETH_ALEN); + _rtw_memcpy(pwlanhdr->addr2, myid(&(padapter->eeprompriv)), ETH_ALEN); + _rtw_memcpy(pwlanhdr->addr3, StaAddr, ETH_ALEN); + break; + case Ndis802_11APMode: + SetFrDs(fctrl); + _rtw_memcpy(pwlanhdr->addr1, StaAddr, ETH_ALEN); + _rtw_memcpy(pwlanhdr->addr2, get_my_bssid(&(pmlmeinfo->network)), ETH_ALEN); + _rtw_memcpy(pwlanhdr->addr3, myid(&(padapter->eeprompriv)), ETH_ALEN); + break; + case Ndis802_11IBSS: + default: + _rtw_memcpy(pwlanhdr->addr1, StaAddr, ETH_ALEN); + _rtw_memcpy(pwlanhdr->addr2, myid(&(padapter->eeprompriv)), ETH_ALEN); + _rtw_memcpy(pwlanhdr->addr3, get_my_bssid(&(pmlmeinfo->network)), ETH_ALEN); + break; + } + + SetSeqNum(pwlanhdr, 0); + + SetFrameSubType(pframe, WIFI_DATA_NULL); + + pframe += sizeof(struct rtw_ieee80211_hdr_3addr); + pktlen = sizeof(struct rtw_ieee80211_hdr_3addr); + + *pLength = pktlen; +} + +void ConstructProbeRsp(_adapter *padapter, u8 *pframe, u32 *pLength, u8 *StaAddr, BOOLEAN bHideSSID) +{ + struct rtw_ieee80211_hdr *pwlanhdr; + u16 *fctrl; + u8 *mac, *bssid; + u32 pktlen; + struct mlme_ext_priv *pmlmeext = &(padapter->mlmeextpriv); + struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info); + WLAN_BSSID_EX *cur_network = &(pmlmeinfo->network); + + + //DBG_871X("%s\n", __FUNCTION__); + + pwlanhdr = (struct rtw_ieee80211_hdr *)pframe; + + mac = myid(&(padapter->eeprompriv)); + bssid = cur_network->MacAddress; + + fctrl = &(pwlanhdr->frame_ctl); + *(fctrl) = 0; + _rtw_memcpy(pwlanhdr->addr1, StaAddr, ETH_ALEN); + _rtw_memcpy(pwlanhdr->addr2, mac, ETH_ALEN); + _rtw_memcpy(pwlanhdr->addr3, bssid, ETH_ALEN); + + SetSeqNum(pwlanhdr, 0); + SetFrameSubType(fctrl, WIFI_PROBERSP); + + pktlen = sizeof(struct rtw_ieee80211_hdr_3addr); + pframe += pktlen; + + if(cur_network->IELength>MAX_IE_SZ) + return; + + _rtw_memcpy(pframe, cur_network->IEs, cur_network->IELength); + pframe += cur_network->IELength; + pktlen += cur_network->IELength; + + *pLength = pktlen; +} + +// +// Description: In normal chip, we should send some packet to Hw which will be used by Fw +// in FW LPS mode. The function is to fill the Tx descriptor of this packets, then +// Fw can tell Hw to send these packet derectly. +// Added by tynli. 2009.10.15. +// +static VOID +FillFakeTxDescriptor92C( + IN PADAPTER Adapter, + IN u8* pDesc, + IN u32 BufferLen, + IN BOOLEAN IsPsPoll +) +{ + struct tx_desc *ptxdesc = (struct tx_desc *)pDesc; + + // Clear all status + _rtw_memset(pDesc, 0, 32); + + //offset 0 + ptxdesc->txdw0 |= cpu_to_le32( OWN | FSG | LSG); //own, bFirstSeg, bLastSeg; + + ptxdesc->txdw0 |= cpu_to_le32(((TXDESC_SIZE+OFFSET_SZ)<txdw0 |= cpu_to_le32(BufferLen&0x0000ffff); // Buffer size + command header + + //offset 4 + ptxdesc->txdw1 |= cpu_to_le32((QSLT_MGNT<txdw1 |= cpu_to_le32(NAVUSEHDR); + } + else + { + ptxdesc->txdw4 |= cpu_to_le32(BIT(7)); // Hw set sequence number + ptxdesc->txdw3 |= cpu_to_le32((8 <<28)); //set bit3 to 1. Suugested by TimChen. 2009.12.29. + } + + //offset 16 + ptxdesc->txdw4 |= cpu_to_le32(BIT(8));//driver uses rate + +#ifdef CONFIG_USB_HCI + // USB interface drop packet if the checksum of descriptor isn't correct. + // Using this checksum can let hardware recovery from packet bulk out error (e.g. Cancel URC, Bulk out error.). + rtl8192cu_cal_txdesc_chksum(ptxdesc); +#endif + + //RT_PRINT_DATA(COMP_CMD, DBG_TRACE, "TxFillCmdDesc8192C(): H2C Tx Cmd Content ----->\n", pDesc, TX_DESC_SIZE); +} + +// To check if reserved page content is destroyed by beacon beacuse beacon is too large. +// 2010.06.23. Added by tynli. +VOID +CheckFwRsvdPageContent( + IN PADAPTER Adapter +) +{ + HAL_DATA_TYPE* pHalData = GET_HAL_DATA(Adapter); + u32 MaxBcnPageNum; + + if(pHalData->FwRsvdPageStartOffset != 0) + { + /*MaxBcnPageNum = PageNum_128(pMgntInfo->MaxBeaconSize); + RT_ASSERT((MaxBcnPageNum <= pHalData->FwRsvdPageStartOffset), + ("CheckFwRsvdPageContent(): The reserved page content has been"\ + "destroyed by beacon!!! MaxBcnPageNum(%d) FwRsvdPageStartOffset(%d)\n!", + MaxBcnPageNum, pHalData->FwRsvdPageStartOffset));*/ + } +} + +// +// Description: Fill the reserved packets that FW will use to RSVD page. +// Now we just send 4 types packet to rsvd page. +// (1)Beacon, (2)Ps-poll, (3)Null data, (4)ProbeRsp. +// Input: +// bDLFinished - FALSE: At the first time we will send all the packets as a large packet to Hw, +// so we need to set the packet length to total lengh. +// TRUE: At the second time, we should send the first packet (default:beacon) +// to Hw again and set the lengh in descriptor to the real beacon lengh. +// 2009.10.15 by tynli. +static void SetFwRsvdPagePkt(PADAPTER Adapter, BOOLEAN bDLFinished) +{ + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); + struct xmit_frame *pmgntframe; + struct pkt_attrib *pattrib; + struct xmit_priv *pxmitpriv = &(Adapter->xmitpriv); + struct mlme_ext_priv *pmlmeext = &(Adapter->mlmeextpriv); + struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info); + u32 BeaconLength, ProbeRspLength, PSPollLength, NullFunctionDataLength; + u8 *ReservedPagePacket; + u8 PageNum=0, U1bTmp, TxDescLen=0, TxDescOffset=0; + u16 BufIndex=0; + u32 TotalPacketLen; + RSVDPAGE_LOC RsvdPageLoc; + BOOLEAN bDLOK = _FALSE; + + DBG_871X("%s\n", __FUNCTION__); + + ReservedPagePacket = (u8*)rtw_malloc(1000); + if(ReservedPagePacket == NULL){ + DBG_871X("%s(): alloc ReservedPagePacket fail !!!\n", __FUNCTION__); + return; + } + + _rtw_memset(ReservedPagePacket, 0, 1000); + + TxDescLen = 32;//TX_DESC_SIZE; + +#ifdef CONFIG_USB_HCI + BufIndex = TXDESC_OFFSET; + TxDescOffset = TxDescLen+8; //Shift index for 8 bytes because the dummy bytes in the first descipstor. +#else + BufIndex = 0; + TxDescOffset = 0; +#endif + + //(1) beacon + ConstructBeacon(Adapter,&ReservedPagePacket[BufIndex],&BeaconLength); + + //DBG_8192C("SetFwRsvdPagePkt(): HW_VAR_SET_TX_CMD: BCN\n", &ReservedPagePacket[BufIndex], (BeaconLength+BufIndex)); + +//-------------------------------------------------------------------- + + // When we count the first page size, we need to reserve description size for the RSVD + // packet, it will be filled in front of the packet in TXPKTBUF. + U1bTmp = (u8)PageNum_128(BeaconLength+TxDescLen); + PageNum += U1bTmp; + // To reserved 2 pages for beacon buffer. 2010.06.24. + if(PageNum == 1) + PageNum+=1; + pHalData->FwRsvdPageStartOffset = PageNum; + + BufIndex = (PageNum*128) + TxDescOffset; + + //(2) ps-poll + ConstructPSPoll(Adapter, &ReservedPagePacket[BufIndex],&PSPollLength); + + FillFakeTxDescriptor92C(Adapter, &ReservedPagePacket[BufIndex-TxDescLen], PSPollLength, _TRUE); + + //DBG_8192C("SetFwRsvdPagePkt(): HW_VAR_SET_TX_CMD: PS-POLL\n", &ReservedPagePacket[BufIndex-TxDescLen], (PSPollLength+TxDescLen)); + + RsvdPageLoc.LocPsPoll = PageNum; + +//------------------------------------------------------------------ + + U1bTmp = (u8)PageNum_128(PSPollLength+TxDescLen); + PageNum += U1bTmp; + + BufIndex = (PageNum*128) + TxDescOffset; + + //(3) null data + ConstructNullFunctionData( + Adapter, + &ReservedPagePacket[BufIndex], + &NullFunctionDataLength, + get_my_bssid(&(pmlmeinfo->network)), + _FALSE); + + FillFakeTxDescriptor92C(Adapter, &ReservedPagePacket[BufIndex-TxDescLen], NullFunctionDataLength, _FALSE); + + RsvdPageLoc.LocNullData = PageNum; + + //DBG_8192C("SetFwRsvdPagePkt(): HW_VAR_SET_TX_CMD: NULL DATA \n", &ReservedPagePacket[BufIndex-TxDescLen], (NullFunctionDataLength+TxDescLen)); +//------------------------------------------------------------------ + + U1bTmp = (u8)PageNum_128(NullFunctionDataLength+TxDescLen); + PageNum += U1bTmp; + + BufIndex = (PageNum*128) + TxDescOffset; + + //(4) probe response + ConstructProbeRsp( + Adapter, + &ReservedPagePacket[BufIndex], + &ProbeRspLength, + get_my_bssid(&(pmlmeinfo->network)), + _FALSE); + + FillFakeTxDescriptor92C(Adapter, &ReservedPagePacket[BufIndex-TxDescLen], ProbeRspLength, _FALSE); + + RsvdPageLoc.LocProbeRsp = PageNum; + + //DBG_8192C("SetFwRsvdPagePkt(): HW_VAR_SET_TX_CMD: PROBE RSP \n", &ReservedPagePacket[BufIndex-TxDescLen], (ProbeRspLength-TxDescLen)); + +//------------------------------------------------------------------ + + U1bTmp = (u8)PageNum_128(ProbeRspLength+TxDescLen); + + PageNum += U1bTmp; + + TotalPacketLen = (PageNum*128); + + if ((pmgntframe = alloc_mgtxmitframe(pxmitpriv)) == NULL) + { + return; + } + + //update attribute + pattrib = &pmgntframe->attrib; + update_mgntframe_attrib(Adapter, pattrib); + pattrib->qsel = 0x10; + pattrib->pktlen = pattrib->last_txcmdsz = TotalPacketLen - TxDescLen; + _rtw_memcpy(pmgntframe->buf_addr, ReservedPagePacket, TotalPacketLen); + + rtw_hal_mgnt_xmit(Adapter, pmgntframe); + + bDLOK = _TRUE; + + if(bDLOK) + { + DBG_871X("Set RSVD page location to Fw.\n"); + rtl8192c_FillH2CCmd(Adapter, RSVD_PAGE_EID, sizeof(RsvdPageLoc), (u8 *)&RsvdPageLoc); + } + + rtw_mfree(ReservedPagePacket,1000); + +} + +void rtl8192c_set_FwJoinBssReport_cmd(_adapter* padapter, u8 mstatus) +{ + JOINBSSRPT_PARM JoinBssRptParm; + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(padapter); + struct mlme_ext_priv *pmlmeext = &(padapter->mlmeextpriv); + struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info); + +_func_enter_; + + DBG_871X("%s mstatus(%x)\n", __FUNCTION__,mstatus); + + if(mstatus == 1) + { + BOOLEAN bRecover = _FALSE; + + // We should set AID, correct TSF, HW seq enable before set JoinBssReport to Fw in 88/92C. + // Suggested by filen. Added by tynli. + rtw_write16(padapter, REG_BCN_PSR_RPT, (0xC000|pmlmeinfo->aid)); + // Do not set TSF again here or vWiFi beacon DMA INT will not work. + //correct_TSF(padapter, pmlmeext); + // Hw sequende enable by dedault. 2010.06.23. by tynli. + //rtw_write16(padapter, REG_NQOS_SEQ, ((pmlmeext->mgnt_seq+100)&0xFFF)); + //rtw_write8(padapter, REG_HWSEQ_CTRL, 0xFF); + + //set REG_CR bit 8 + //U1bTmp = rtw_read8(padapter, REG_CR+1); + rtw_write8(padapter, REG_CR+1, 0x03); + + // Disable Hw protection for a time which revserd for Hw sending beacon. + // Fix download reserved page packet fail that access collision with the protection time. + // 2010.05.11. Added by tynli. + //SetBcnCtrlReg(padapter, 0, BIT3); + //SetBcnCtrlReg(padapter, BIT4, 0); + rtw_write8(padapter, REG_BCN_CTRL, rtw_read8(padapter, REG_BCN_CTRL)&(~BIT(3))); + rtw_write8(padapter, REG_BCN_CTRL, rtw_read8(padapter, REG_BCN_CTRL)|BIT(4)); + + // Set FWHW_TXQ_CTRL 0x422[6]=0 to tell Hw the packet is not a real beacon frame. + if(pHalData->RegFwHwTxQCtrl&BIT6) + bRecover = _TRUE; + + // To tell Hw the packet is not a real beacon frame. + //U1bTmp = rtw_read8(padapter, REG_FWHW_TXQ_CTRL+2); + rtw_write8(padapter, REG_FWHW_TXQ_CTRL+2, (pHalData->RegFwHwTxQCtrl&(~BIT6))); + pHalData->RegFwHwTxQCtrl &= (~BIT6); + SetFwRsvdPagePkt(padapter, 0); + + // 2010.05.11. Added by tynli. + //SetBcnCtrlReg(padapter, BIT3, 0); + //SetBcnCtrlReg(padapter, 0, BIT4); + rtw_write8(padapter, REG_BCN_CTRL, rtw_read8(padapter, REG_BCN_CTRL)|BIT(3)); + rtw_write8(padapter, REG_BCN_CTRL, rtw_read8(padapter, REG_BCN_CTRL)&(~BIT(4))); + + // To make sure that if there exists an adapter which would like to send beacon. + // If exists, the origianl value of 0x422[6] will be 1, we should check this to + // prevent from setting 0x422[6] to 0 after download reserved page, or it will cause + // the beacon cannot be sent by HW. + // 2010.06.23. Added by tynli. + if(bRecover) + { + rtw_write8(padapter, REG_FWHW_TXQ_CTRL+2, (pHalData->RegFwHwTxQCtrl|BIT6)); + pHalData->RegFwHwTxQCtrl |= BIT6; + } + + // Clear CR[8] or beacon packet will not be send to TxBuf anymore. + rtw_write8(padapter, REG_CR+1, 0x02); + } + + JoinBssRptParm.OpMode = mstatus; + + rtl8192c_FillH2CCmd(padapter, JOINBSS_RPT_EID, sizeof(JoinBssRptParm), (u8 *)&JoinBssRptParm); + +_func_exit_; +} + +#ifdef CONFIG_P2P_PS +void rtl8192c_set_p2p_ctw_period_cmd(_adapter* padapter, u8 ctwindow) +{ + struct P2P_PS_CTWPeriod_t p2p_ps_ctw; + + p2p_ps_ctw.CTWPeriod = ctwindow; + + rtl8192c_FillH2CCmd(padapter, P2P_PS_CTW_CMD_EID, 1, (u8 *)(&p2p_ps_ctw)); + +} + +void rtl8192c_set_p2p_ps_offload_cmd(_adapter* padapter, u8 p2p_ps_state) +{ + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(padapter); + struct pwrctrl_priv *pwrpriv = &padapter->pwrctrlpriv; + struct wifidirect_info *pwdinfo = &( padapter->wdinfo ); + struct P2P_PS_Offload_t *p2p_ps_offload = &pHalData->p2p_ps_offload; + u8 i; + u16 ctwindow; + u32 start_time, tsf_low; + +_func_enter_; + + switch(p2p_ps_state) + { + case P2P_PS_DISABLE: + DBG_8192C("P2P_PS_DISABLE \n"); + _rtw_memset(p2p_ps_offload, 0 ,1); + break; + case P2P_PS_ENABLE: + DBG_8192C("P2P_PS_ENABLE \n"); + // update CTWindow value. + if( pwdinfo->ctwindow > 0 ) + { + p2p_ps_offload->CTWindow_En = 1; + ctwindow = pwdinfo->ctwindow; + if(IS_HARDWARE_TYPE_8723A(padapter)) + { + //rtw_write16(padapter, REG_ATIMWND, ctwindow); + } + else + { + rtl8192c_set_p2p_ctw_period_cmd(padapter, ctwindow); + } + } + + // hw only support 2 set of NoA + for( i=0 ; inoa_num ; i++) + { + // To control the register setting for which NOA + rtw_write8(padapter, 0x5CF, (i << 4)); + if(i == 0) + p2p_ps_offload->NoA0_En = 1; + else + p2p_ps_offload->NoA1_En = 1; + + // config P2P NoA Descriptor Register + rtw_write32(padapter, 0x5E0, pwdinfo->noa_duration[i]); + + rtw_write32(padapter, 0x5E4, pwdinfo->noa_interval[i]); + + //Get Current TSF value + tsf_low = rtw_read32(padapter, REG_TSFTR); + + start_time = pwdinfo->noa_start_time[i]; + if(pwdinfo->noa_count[i] != 1) + { + while( start_time <= (tsf_low+(50*1024) ) ) + { + start_time += pwdinfo->noa_interval[i]; + if(pwdinfo->noa_count[i] != 255) + pwdinfo->noa_count[i]--; + } + } + //DBG_8192C("%s(): start_time = %x\n",__FUNCTION__,start_time); + rtw_write32(padapter, 0x5E8, start_time); + + rtw_write8(padapter, 0x5EC, pwdinfo->noa_count[i]); + } + + if( (pwdinfo->opp_ps == 1) || (pwdinfo->noa_num > 0) ) + { + // rst p2p circuit + rtw_write8(padapter, REG_DUAL_TSF_RST, BIT(4)); + + p2p_ps_offload->Offload_En = 1; + + if(rtw_p2p_chk_role(pwdinfo, P2P_ROLE_GO)) + { + p2p_ps_offload->role= 1; + p2p_ps_offload->AllStaSleep = 0; + } + else + { + p2p_ps_offload->role= 0; + } + + p2p_ps_offload->discovery = 0; + } + break; + case P2P_PS_SCAN: + DBG_8192C("P2P_PS_SCAN \n"); + p2p_ps_offload->discovery = 1; + break; + case P2P_PS_SCAN_DONE: + DBG_8192C("P2P_PS_SCAN_DONE \n"); + p2p_ps_offload->discovery = 0; + pwdinfo->p2p_ps_state = P2P_PS_ENABLE; + break; + default: + break; + } + + rtl8192c_FillH2CCmd(padapter, P2P_PS_OFFLOAD_EID, 1, (u8 *)p2p_ps_offload); + +_func_exit_; + +} +#endif // CONFIG_P2P_PS + +#ifdef CONFIG_IOL +#include +int rtl8192c_IOL_exec_cmds_sync(ADAPTER *adapter, struct xmit_frame *xmit_frame, u32 max_wating_ms) +{ + IO_OFFLOAD_LOC IoOffloadLoc; + u32 start_time = rtw_get_current_time(); + u32 passing_time_ms; + u8 polling_ret; + int ret = _FAIL; + + if (rtw_IOL_append_END_cmd(xmit_frame) != _SUCCESS) + goto exit; + + dump_mgntframe_and_wait(adapter, xmit_frame, max_wating_ms); + + IoOffloadLoc.LocCmd = 0; + if(_SUCCESS != rtl8192c_FillH2CCmd(adapter, H2C_92C_IO_OFFLOAD, sizeof(IO_OFFLOAD_LOC), (u8 *)&IoOffloadLoc)) + goto exit; + + //polling if the IO offloading is done + while( (passing_time_ms=rtw_get_passing_time_ms(start_time)) <= max_wating_ms) { + #if 0 //C2H + if(0xff == rtw_read8(adapter, REG_C2HEVT_CLEAR)) + break; + #else// 0x1c3 + if(0x00 != (polling_ret=rtw_read8(adapter, 0x1c3))) + break; + #endif + rtw_msleep_os(5); + } + #if 0 //debug + DBG_871X("IOL %s, polling_ret:0x%02x, 0x1c0=0x%08x, 0x1c4=0x%08x, 0x1cc=0x%08x, 0x1e8=0x%08x, 0x130=0x%08x, 0x134=0x%08x\n" + , polling_ret==0xff?"success":"error" + , polling_ret + , rtw_read32(adapter, 0x1c0) + , rtw_read32(adapter, 0x1c4) + , rtw_read32(adapter, 0x1cc) + , rtw_read32(adapter, 0x1e8) + , rtw_read32(adapter, 0x130) + , rtw_read32(adapter, 0x134) + ); + rtw_write32(adapter, 0x1c0, 0x0); + #endif + + if(polling_ret == 0xff) + ret =_SUCCESS; + else { + DBG_871X("IOL %s, polling_ret:0x%02x\n" + //", 0x1c0=0x%08x, 0x1c4=0x%08x, 0x1cc=0x%08x, 0x1e8=0x%08x, 0x130=0x%08x, 0x134=0x%08x\n" + , polling_ret==0xff?"success":"error" + , polling_ret + //, rtw_read32(adapter, 0x1c0) + //, rtw_read32(adapter, 0x1c4) + //, rtw_read32(adapter, 0x1cc) + //, rtw_read32(adapter, 0x1e8) + //, rtw_read32(adapter, 0x130) + //, rtw_read32(adapter, 0x134) + ); + #if 0 //debug + rtw_write16(adapter, 0x1c4, 0x0000); + rtw_msleep_os(10); + DBG_871X("after reset, 0x1c4=0x%08x\n", rtw_read32(adapter, 0x1c4)); + #endif + + } + + { + #if 0 //C2H + u32 c2h_evt; + int i; + c2h_evt = rtw_read32(adapter, REG_C2HEVT_MSG_NORMAL); + DBG_871X("%s io-offloading complete, in %ums: 0x%08x\n", __FUNCTION__, passing_time_ms, c2h_evt); + rtw_write8(adapter, REG_C2HEVT_CLEAR, 0x0); + #else// 0x1c3 + DBG_871X("IOL %s complete in %ums\n", __FUNCTION__, passing_time_ms); + rtw_write8(adapter, 0x1c3, 0x0); + #endif + } + +exit: + return ret; + +} +#endif //CONFIG_IOL + + +#ifdef CONFIG_BEACON_DISABLE_OFFLOAD +/* + rtl8192c_dis_beacon_fun_cmd() + This function shall only be called by PORT1. + PORT0's beacon function can't be disabled, because it's used by RA function in FW/HW. + + // Still has the REG_BCN_CTRL_1 modified by unknowned party issue in case of Primary Interface + PORT1 combination. +*/ +u8 rtl8192c_dis_beacon_fun_cmd(_adapter* padapter) +{ + u8 buf[2]; + u8 res=_SUCCESS; + +_func_enter_; + + _rtw_memset(buf, 0, sizeof(buf)); + + if (padapter->iface_type == IFACE_PORT0) { + //buf[0] = 0x1; + DBG_871X("%s(): ERROR! padapter->iface_type = %d\n", __FUNCTION__, padapter->iface_type); + return _FAIL; + } else + buf[1] = 0x1; + + rtl8192c_FillH2CCmd(padapter, H2C_92C_DISABLE_BCN_FUNC, 2, buf); + +_func_exit_; + + return res; + +} +#endif // CONFIG_BEACON_DISABLE_OFFLOAD + + +#ifdef CONFIG_TSF_RESET_OFFLOAD +/* + ask FW to Reset sync register at Beacon early interrupt +*/ +u8 rtl8192c_reset_tsf(_adapter *padapter, u8 reset_port ) +{ + u8 buf[2]; + u8 res=_SUCCESS; + +_func_enter_; + if (IFACE_PORT0==reset_port) { + buf[0] = 0x1; buf[1] = 0; + + } else{ + buf[0] = 0x0; buf[1] = 0x1; + } + rtl8192c_FillH2CCmd(padapter, H2C_92C_RESET_TSF, 2, buf); +_func_exit_; + + return res; +} + +int reset_tsf(PADAPTER Adapter, u8 reset_port ) +{ + u8 reset_cnt_before = 0, reset_cnt_after = 0, loop_cnt = 0; + u32 reg_reset_tsf_cnt = (IFACE_PORT0==reset_port) ? + REG_FW_RESET_TSF_CNT_0:REG_FW_RESET_TSF_CNT_1; + + rtw_scan_abort(Adapter->pbuddy_adapter); /* site survey will cause reset_tsf fail */ + reset_cnt_after = reset_cnt_before = rtw_read8(Adapter,reg_reset_tsf_cnt); + rtl8192c_reset_tsf(Adapter, reset_port); + + while ((reset_cnt_after == reset_cnt_before ) && (loop_cnt < 10)) { + rtw_msleep_os(100); + loop_cnt++; + reset_cnt_after = rtw_read8(Adapter, reg_reset_tsf_cnt); + } + + return(loop_cnt >= 10) ? _FAIL : _TRUE; +} + + +#endif // CONFIG_TSF_RESET_OFFLOAD + +#ifdef CONFIG_WOWLAN + +void rtl8192c_set_wowlan_cmd(_adapter* padapter) +{ + u8 res=_SUCCESS; + SETWOWLAN_PARM pwowlan_parm; + struct pwrctrl_priv *pwrpriv=&padapter->pwrctrlpriv; + +_func_enter_; + + pwowlan_parm.mode =0; + pwowlan_parm.gpio_index=0; + pwowlan_parm.gpio_duration=0; + pwowlan_parm.second_mode =0; + pwowlan_parm.reserve=0; + + if(pwrpriv->wowlan_mode ==_TRUE){ + pwowlan_parm.mode |=FW_WOWLAN_FUN_EN; + //printk("\n %s 1.pwowlan_parm.mode=0x%x \n",__FUNCTION__,pwowlan_parm.mode ); + if(pwrpriv->wowlan_pattern ==_TRUE){ + pwowlan_parm.mode |= FW_WOWLAN_PATTERN_MATCH; + //printk("\n %s 2.pwowlan_parm.mode=0x%x \n",__FUNCTION__,pwowlan_parm.mode ); + } + if(pwrpriv->wowlan_magic ==_TRUE){ + pwowlan_parm.mode |=FW_WOWLAN_MAGIC_PKT; + //printk("\n %s 3.pwowlan_parm.mode=0x%x \n",__FUNCTION__,pwowlan_parm.mode ); + } + if(pwrpriv->wowlan_unicast ==_TRUE){ + pwowlan_parm.mode |=FW_WOWLAN_UNICAST; + //printk("\n %s 4.pwowlan_parm.mode=0x%x \n",__FUNCTION__,pwowlan_parm.mode ); + } + //WOWLAN_GPIO_ACTIVE means GPIO high active + //pwowlan_parm.mode |=FW_WOWLAN_GPIO_ACTIVE; + pwowlan_parm.mode |=FW_WOWLAN_REKEY_WAKEUP; + pwowlan_parm.mode |=FW_WOWLAN_DEAUTH_WAKEUP; + + rtl8192c_set_FwJoinBssReport_cmd( padapter, 1); + + //GPIO3 + pwowlan_parm.gpio_index=3; + + //duration unit is 64us + pwowlan_parm.gpio_duration=0xff; + // + pwowlan_parm.second_mode|=FW_WOWLAN_GPIO_WAKEUP_EN; + //printk("\n %s 5.pwowlan_parm.mode=0x%x \n",__FUNCTION__,pwowlan_parm.mode ); + { u8 *ptr=(u8 *)&pwowlan_parm; + printk("\n %s H2C_WO_WLAN=%x %02x:%02x:%02x:%02x:%02x \n",__FUNCTION__,H2C_WO_WLAN_CMD,ptr[0],ptr[1],ptr[2],ptr[3],ptr[4] ); + } + rtl8192c_FillH2CCmd(padapter, H2C_WO_WLAN_CMD, 4, (u8 *)&pwowlan_parm); + + //keep alive period = 3 * 10 BCN interval + pwowlan_parm.mode =3; + pwowlan_parm.gpio_index=3; + rtl8192c_FillH2CCmd(padapter, KEEP_ALIVE_CONTROL_CMD, 2, (u8 *)&pwowlan_parm); + printk("%s after KEEP_ALIVE_CONTROL_CMD register 0x81=%x \n",__FUNCTION__,rtw_read8(padapter, 0x81)); + + pwowlan_parm.mode =1; + pwowlan_parm.gpio_index=0; + pwowlan_parm.gpio_duration=0; + rtl8192c_FillH2CCmd(padapter, DISCONNECT_DECISION_CTRL_CMD, 3, (u8 *)&pwowlan_parm); + printk("%s after DISCONNECT_DECISION_CTRL_CMD register 0x81=%x \n",__FUNCTION__,rtw_read8(padapter, 0x81)); + + //enable GPIO wakeup + pwowlan_parm.mode =1; + pwowlan_parm.gpio_index=0; + pwowlan_parm.gpio_duration=0; + rtl8192c_FillH2CCmd(padapter, REMOTE_WAKE_CTRL_CMD, 3, (u8 *)&pwowlan_parm); + } + else + rtl8192c_FillH2CCmd(padapter, H2C_WO_WLAN_CMD, 3, (u8 *)&pwowlan_parm); + + +_func_exit_; + + return ; + +} + +#endif //CONFIG_WOWLAN --- linux-raspi2-4.2.0.orig/drivers/net/wireless/rtl8192cu/hal/rtl8192c/rtl8192c_dm.c +++ linux-raspi2-4.2.0/drivers/net/wireless/rtl8192cu/hal/rtl8192c/rtl8192c_dm.c @@ -0,0 +1,5055 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved. + * + * 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 + * published by the Free Software Foundation. + * + * 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 Street, Fifth Floor, Boston, MA 02110, USA + * + * + ******************************************************************************/ +//============================================================ +// Description: +// +// This file is for 92CE/92CU dynamic mechanism only +// +// +//============================================================ + +//============================================================ +// include files +//============================================================ +#include +#include +#include +#include + +#include +#include "../dm.h" +#ifdef CONFIG_INTEL_PROXIM +#include "../proxim/intel_proxim.h" +#endif +//============================================================ +// Global var +//============================================================ +static u32 EDCAParam[maxAP][3] = +{ // UL DL + {0x5ea322, 0x00a630, 0x00a44f}, //atheros AP + {0x5ea32b, 0x5ea42b, 0x5e4322}, //broadcom AP + {0x3ea430, 0x00a630, 0x3ea44f}, //cisco AP + {0x5ea44f, 0x00a44f, 0x5ea42b}, //marvell AP + {0x5ea422, 0x00a44f, 0x00a44f}, //ralink AP + //{0x5ea44f, 0x5ea44f, 0x5ea44f}, //realtek AP + {0xa44f, 0x5ea44f, 0x5e431c}, //realtek AP + {0x5ea42b, 0xa630, 0x5e431c}, //airgocap AP + {0x5ea42b, 0x5ea42b, 0x5ea42b}, //unknown AP +// {0x5e4322, 0x00a44f, 0x5ea44f}, //unknown AP +}; + + +/*----------------------------------------------------------------------------- + * Function: dm_DIGInit() + * + * Overview: Set DIG scheme init value. + * + * Input: NONE + * + * Output: NONE + * + * Return: NONE + * + * Revised History: + * When Who Remark + * + *---------------------------------------------------------------------------*/ +static void dm_DIGInit( + IN PADAPTER pAdapter +) +{ + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(pAdapter); + struct dm_priv *pdmpriv = &pHalData->dmpriv; + DIG_T *pDigTable = &pdmpriv->DM_DigTable; + + + pDigTable->Dig_Enable_Flag = _TRUE; + pDigTable->Dig_Ext_Port_Stage = DIG_EXT_PORT_STAGE_MAX; + + pDigTable->CurIGValue = 0x20; + pDigTable->PreIGValue = 0x0; + + pDigTable->CurSTAConnectState = pDigTable->PreSTAConnectState = DIG_STA_DISCONNECT; + pDigTable->CurMultiSTAConnectState = DIG_MultiSTA_DISCONNECT; + + pDigTable->RssiLowThresh = DM_DIG_THRESH_LOW; + pDigTable->RssiHighThresh = DM_DIG_THRESH_HIGH; + + pDigTable->FALowThresh = DM_FALSEALARM_THRESH_LOW; + pDigTable->FAHighThresh = DM_FALSEALARM_THRESH_HIGH; + + + pDigTable->rx_gain_range_max = DM_DIG_MAX; + pDigTable->rx_gain_range_min = DM_DIG_MIN; + pDigTable->rx_gain_range_min_nolink = 0; + + pDigTable->BackoffVal = DM_DIG_BACKOFF_DEFAULT; + pDigTable->BackoffVal_range_max = DM_DIG_BACKOFF_MAX; + pDigTable->BackoffVal_range_min = DM_DIG_BACKOFF_MIN; + + pDigTable->PreCCKPDState = CCK_PD_STAGE_MAX; + pDigTable->CurCCKPDState = CCK_PD_STAGE_LowRssi; + + pDigTable->ForbiddenIGI = DM_DIG_MIN; + pDigTable->LargeFAHit = 0; + pDigTable->Recover_cnt = 0; + pdmpriv->DIG_Dynamic_MIN = 0x25; //for FUNAI_TV +} + + +static u8 dm_initial_gain_MinPWDB( + IN PADAPTER pAdapter + ) +{ + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(pAdapter); + struct dm_priv *pdmpriv = &pHalData->dmpriv; + DIG_T *pDigTable = &pdmpriv->DM_DigTable; + int Rssi_val_min = 0; + + if((pDigTable->CurMultiSTAConnectState == DIG_MultiSTA_CONNECT) && + (pDigTable->CurSTAConnectState == DIG_STA_CONNECT) ) + { + if(pdmpriv->EntryMinUndecoratedSmoothedPWDB != 0) +#ifdef CONFIG_CONCURRENT_MODE + Rssi_val_min = (pdmpriv->UndecoratedSmoothedPWDB+pdmpriv->EntryMinUndecoratedSmoothedPWDB)/2; +#else + Rssi_val_min = (pdmpriv->EntryMinUndecoratedSmoothedPWDB > pdmpriv->UndecoratedSmoothedPWDB)? + pdmpriv->UndecoratedSmoothedPWDB:pdmpriv->EntryMinUndecoratedSmoothedPWDB; +#endif //CONFIG_CONCURRENT_MODE + else + Rssi_val_min = pdmpriv->UndecoratedSmoothedPWDB; + } + else if(pDigTable->CurSTAConnectState == DIG_STA_CONNECT || + pDigTable->CurSTAConnectState == DIG_STA_BEFORE_CONNECT) + Rssi_val_min = pdmpriv->UndecoratedSmoothedPWDB; + else if(pDigTable->CurMultiSTAConnectState == DIG_MultiSTA_CONNECT) + Rssi_val_min = pdmpriv->EntryMinUndecoratedSmoothedPWDB; + + //printk("%s CurMultiSTAConnectState(0x%02x) UndecoratedSmoothedPWDB(%d),EntryMinUndecoratedSmoothedPWDB(%d)\n" + //,__FUNCTION__,pDigTable->CurSTAConnectState, + //pdmpriv->UndecoratedSmoothedPWDB,pdmpriv->EntryMinUndecoratedSmoothedPWDB); + + return (u8)Rssi_val_min; +} + + +static VOID +dm_FalseAlarmCounterStatistics( + IN PADAPTER Adapter + ) +{ + u32 ret_value; + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); + struct dm_priv *pdmpriv = &pHalData->dmpriv; + PFALSE_ALARM_STATISTICS FalseAlmCnt = &(pdmpriv->FalseAlmCnt); +#ifdef CONFIG_CONCURRENT_MODE + PADAPTER pbuddy_adapter = Adapter->pbuddy_adapter; +#endif //CONFIG_CONCURRENT_MODE + + ret_value = PHY_QueryBBReg(Adapter, rOFDM_PHYCounter1, bMaskDWord); + FalseAlmCnt->Cnt_Parity_Fail = ((ret_value&0xffff0000)>>16); + + ret_value = PHY_QueryBBReg(Adapter, rOFDM_PHYCounter2, bMaskDWord); + FalseAlmCnt->Cnt_Rate_Illegal = (ret_value&0xffff); + FalseAlmCnt->Cnt_Crc8_fail = ((ret_value&0xffff0000)>>16); + ret_value = PHY_QueryBBReg(Adapter, rOFDM_PHYCounter3, bMaskDWord); + FalseAlmCnt->Cnt_Mcs_fail = (ret_value&0xffff); + ret_value = PHY_QueryBBReg(Adapter, rOFDM0_FrameSync, bMaskDWord); + FalseAlmCnt->Cnt_Fast_Fsync = (ret_value&0xffff); + FalseAlmCnt->Cnt_SB_Search_fail = ((ret_value&0xffff0000)>>16); + + FalseAlmCnt->Cnt_Ofdm_fail = FalseAlmCnt->Cnt_Parity_Fail + FalseAlmCnt->Cnt_Rate_Illegal + + FalseAlmCnt->Cnt_Crc8_fail + FalseAlmCnt->Cnt_Mcs_fail+ + FalseAlmCnt->Cnt_Fast_Fsync + FalseAlmCnt->Cnt_SB_Search_fail; + + + //hold cck counter + PHY_SetBBReg(Adapter, rCCK0_FalseAlarmReport, BIT(14), 1); + + ret_value = PHY_QueryBBReg(Adapter, rCCK0_FACounterLower, bMaskByte0); + FalseAlmCnt->Cnt_Cck_fail = ret_value; + + ret_value = PHY_QueryBBReg(Adapter, rCCK0_FACounterUpper, bMaskByte3); + FalseAlmCnt->Cnt_Cck_fail += (ret_value& 0xff)<<8; + + FalseAlmCnt->Cnt_all = ( FalseAlmCnt->Cnt_Parity_Fail + + FalseAlmCnt->Cnt_Rate_Illegal + + FalseAlmCnt->Cnt_Crc8_fail + + FalseAlmCnt->Cnt_Mcs_fail + + FalseAlmCnt->Cnt_Cck_fail); + + Adapter->recvpriv.FalseAlmCnt_all = FalseAlmCnt->Cnt_all; +#ifdef CONFIG_CONCURRENT_MODE + if(pbuddy_adapter) + pbuddy_adapter->recvpriv.FalseAlmCnt_all = FalseAlmCnt->Cnt_all; +#endif //CONFIG_CONCURRENT_MODE + + //reset false alarm counter registers + PHY_SetBBReg(Adapter, rOFDM1_LSTF, 0x08000000, 1); + PHY_SetBBReg(Adapter, rOFDM1_LSTF, 0x08000000, 0); + //reset cck counter + PHY_SetBBReg(Adapter, rCCK0_FalseAlarmReport, 0x0000c000, 0); + //enable cck counter + PHY_SetBBReg(Adapter, rCCK0_FalseAlarmReport, 0x0000c000, 2); + + //RT_TRACE( COMP_DIG, DBG_LOUD, ("Cnt_Parity_Fail = %ld, Cnt_Rate_Illegal = %ld, Cnt_Crc8_fail = %ld, Cnt_Mcs_fail = %ld\n", + // FalseAlmCnt->Cnt_Parity_Fail, FalseAlmCnt->Cnt_Rate_Illegal, FalseAlmCnt->Cnt_Crc8_fail, FalseAlmCnt->Cnt_Mcs_fail) ); + //RT_TRACE( COMP_DIG, DBG_LOUD, ("Cnt_Ofdm_fail = %ld, Cnt_Cck_fail = %ld, Cnt_all = %ld\n", + // FalseAlmCnt->Cnt_Ofdm_fail, FalseAlmCnt->Cnt_Cck_fail, FalseAlmCnt->Cnt_all) ); + //RT_TRACE( COMP_DIG, DBG_LOUD, ("Cnt_Ofdm_fail = %ld, Cnt_Cck_fail = %ld, Cnt_all = %ld\n", + // FalseAlmCnt->Cnt_Ofdm_fail, FalseAlmCnt->Cnt_Cck_fail, FalseAlmCnt->Cnt_all) ); +} + + +static VOID +DM_Write_DIG( + IN PADAPTER pAdapter + ) +{ + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(pAdapter); + struct dm_priv *pdmpriv = &pHalData->dmpriv; + DIG_T *pDigTable = &pdmpriv->DM_DigTable; + +#ifdef CONFIG_CONCURRENT_MODE + if(rtw_buddy_adapter_up(pAdapter)) + { + PADAPTER pbuddy_adapter = pAdapter->pbuddy_adapter; + PHAL_DATA_TYPE pbuddy_HalData = GET_HAL_DATA(pbuddy_adapter); + struct dm_priv *pbuddy_dmpriv = &pbuddy_HalData->dmpriv; + DIG_T *pbuddy_DigTable = &pbuddy_dmpriv->DM_DigTable; + + //sync IGValue + pbuddy_DigTable->PreIGValue = pDigTable->PreIGValue; + pbuddy_DigTable->CurIGValue = pDigTable->CurIGValue; + } +#endif //CONFIG_CONCURRENT_MODE + + + //RT_TRACE( COMP_DIG, DBG_LOUD, ("CurIGValue = 0x%lx, PreIGValue = 0x%lx, BackoffVal = %d\n", + // DM_DigTable.CurIGValue, DM_DigTable.PreIGValue, DM_DigTable.BackoffVal)); + + if (pDigTable->Dig_Enable_Flag == _FALSE) + { + //RT_TRACE( COMP_DIG, DBG_LOUD, ("DIG is disabled\n")); + pDigTable->PreIGValue = 0x17; + return; + } + + if( (pDigTable->PreIGValue != pDigTable->CurIGValue) || ( pAdapter->bForceWriteInitGain ) ) + { + // Set initial gain. + //PHY_SetBBReg(pAdapter, rOFDM0_XAAGCCore1, bMaskByte0, pDigTable->CurIGValue); + //PHY_SetBBReg(pAdapter, rOFDM0_XBAGCCore1, bMaskByte0, pDigTable->CurIGValue); + //printk("%s DIG(0x%02x)\n",__FUNCTION__,pDigTable->CurIGValue); + +#if defined CONFIG_WIDI_DIG_3E && defined CONFIG_INTEL_WIDI + if( pAdapter->mlmepriv.widi_enable == _TRUE ) + { + PHY_SetBBReg(pAdapter, rOFDM0_XAAGCCore1, 0x7f, 0x3e); + PHY_SetBBReg(pAdapter, rOFDM0_XBAGCCore1, 0x7f, 0x3e); + } + else +#endif //defined CONFIG_WIDI_DIG_3E && defined CONFIG_INTEL_WIDI + { + PHY_SetBBReg(pAdapter, rOFDM0_XAAGCCore1, 0x7f, pDigTable->CurIGValue); + PHY_SetBBReg(pAdapter, rOFDM0_XBAGCCore1, 0x7f, pDigTable->CurIGValue); + } + pDigTable->PreIGValue = pDigTable->CurIGValue; + } +} + + +static VOID +dm_CtrlInitGainByFA( + IN PADAPTER pAdapter +) +{ + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(pAdapter); + struct dm_priv *pdmpriv = &pHalData->dmpriv; + DIG_T *pDigTable = &pdmpriv->DM_DigTable; + PFALSE_ALARM_STATISTICS FalseAlmCnt = &(pdmpriv->FalseAlmCnt); + + u8 value_IGI = pDigTable->CurIGValue; + + if(FalseAlmCnt->Cnt_all < DM_DIG_FA_TH0) + value_IGI --; + else if(FalseAlmCnt->Cnt_all < DM_DIG_FA_TH1) + value_IGI += 0; + else if(FalseAlmCnt->Cnt_all < DM_DIG_FA_TH2) + value_IGI ++; + else if(FalseAlmCnt->Cnt_all >= DM_DIG_FA_TH2) + value_IGI +=2; + + if(value_IGI > DM_DIG_FA_UPPER) + value_IGI = DM_DIG_FA_UPPER; + if(value_IGI < DM_DIG_FA_LOWER) + value_IGI = DM_DIG_FA_LOWER; + + if(FalseAlmCnt->Cnt_all > 10000) + value_IGI = DM_DIG_FA_UPPER; + + pDigTable->CurIGValue = value_IGI; + + DM_Write_DIG(pAdapter); + +} + +#ifdef CONFIG_SPECIAL_SETTING_FOR_FUNAI_TV +VOID dm_CtrlInitGainByRssi( IN PADAPTER pAdapter) +{ + + u32 isBT; + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(pAdapter); + struct dm_priv *pdmpriv = &pHalData->dmpriv; + DIG_T *pDigTable = &pdmpriv->DM_DigTable; + PFALSE_ALARM_STATISTICS FalseAlmCnt = &(pdmpriv->FalseAlmCnt); +#ifdef CONFIG_DM_ADAPTIVITY + u8 Adap_IGI_Upper = pdmpriv->IGI_target + 30 + (u8) pdmpriv->TH_L2H_ini -(u8) pdmpriv->TH_EDCCA_HL_diff; +#endif + + //modify DIG upper bound + if((pDigTable->Rssi_val_min + 20) > DM_DIG_MAX ) + pDigTable->rx_gain_range_max = DM_DIG_MAX; + else + pDigTable->rx_gain_range_max = pDigTable->Rssi_val_min + 20; + + //modify DIG lower bound + if((FalseAlmCnt->Cnt_all > 500)&&(pdmpriv->DIG_Dynamic_MIN < 0x25)) + pdmpriv->DIG_Dynamic_MIN++; + if((FalseAlmCnt->Cnt_all < 500)&&(pdmpriv->DIG_Dynamic_MIN > DM_DIG_MIN)) + pdmpriv->DIG_Dynamic_MIN--; + if((pDigTable->Rssi_val_min < 8) && (pdmpriv->DIG_Dynamic_MIN > DM_DIG_MIN)) + pdmpriv->DIG_Dynamic_MIN--; + + //modify DIG lower bound, deal with abnorally large false alarm + if(FalseAlmCnt->Cnt_all > 10000) + { + //RT_TRACE(COMP_DIG, DBG_LOUD, ("dm_DIG(): Abnornally false alarm case. \n")); + pDigTable->LargeFAHit++; + if(pDigTable->ForbiddenIGI < pDigTable->CurIGValue) + { + pDigTable->ForbiddenIGI = pDigTable->CurIGValue; + pDigTable->LargeFAHit = 1; + } + if(pDigTable->LargeFAHit >= 3) + { + if((pDigTable->ForbiddenIGI+1) >pDigTable->rx_gain_range_max) + pDigTable->rx_gain_range_min = pDigTable->rx_gain_range_max; + else + pDigTable->rx_gain_range_min = (pDigTable->ForbiddenIGI + 1); + pDigTable->Recover_cnt = 3600; //3600=2hr + } + } + else + { + //Recovery mechanism for IGI lower bound + if(pDigTable->Recover_cnt != 0){ + pDigTable->Recover_cnt --; + } + else + { + if(pDigTable->LargeFAHit == 0 ) + { + if((pDigTable->ForbiddenIGI -1) < pdmpriv->DIG_Dynamic_MIN) //DM_DIG_MIN) + { + pDigTable->ForbiddenIGI = pdmpriv->DIG_Dynamic_MIN; //DM_DIG_MIN; + pDigTable->rx_gain_range_min = pdmpriv->DIG_Dynamic_MIN; //DM_DIG_MIN; + } + else + { + pDigTable->ForbiddenIGI --; + pDigTable->rx_gain_range_min = (pDigTable->ForbiddenIGI + 1); + } + } + else if(pDigTable->LargeFAHit == 3 ) + { + pDigTable->LargeFAHit = 0; + } + } + } + #ifdef CONFIG_USB_HCI + if(FalseAlmCnt->Cnt_all < 250) + { +#endif + //DBG_8192C("===> dm_CtrlInitGainByRssi, Enter DIG by SS mode\n"); + + isBT = rtw_read8(pAdapter, 0x4fd) & 0x01; + + if(!isBT){ + + if(FalseAlmCnt->Cnt_all > pDigTable->FAHighThresh) + { + if((pDigTable->BackoffVal -2) < pDigTable->BackoffVal_range_min) + pDigTable->BackoffVal = pDigTable->BackoffVal_range_min; + else + pDigTable->BackoffVal -= 2; + } + else if(FalseAlmCnt->Cnt_all < pDigTable->FALowThresh) + { + if((pDigTable->BackoffVal+2) > pDigTable->BackoffVal_range_max) + pDigTable->BackoffVal = pDigTable->BackoffVal_range_max; + else + pDigTable->BackoffVal +=2; + } + } + else + pDigTable->BackoffVal = DM_DIG_BACKOFF_DEFAULT; + + pDigTable->CurIGValue = pDigTable->Rssi_val_min+10-pDigTable->BackoffVal; + + //DBG_8192C("Rssi_val_min = %x BackoffVal %x\n",pDigTable->Rssi_val_min, pDigTable->BackoffVal); +#ifdef CONFIG_USB_HCI + } + else + { + //DBG_8192C("===> dm_CtrlInitGainByRssi, Enter DIG by FA mode\n"); + //DBG_8192C("RSSI = 0x%x", pDigTable->Rssi_val_min); + + //Adjust initial gain by false alarm + if(FalseAlmCnt->Cnt_all > 1000) + pDigTable->CurIGValue = pDigTable ->PreIGValue+2; + else if (FalseAlmCnt->Cnt_all > 750) + pDigTable->CurIGValue = pDigTable->PreIGValue+1; + else if(FalseAlmCnt->Cnt_all < 500) + pDigTable->CurIGValue = pDigTable->PreIGValue-1; + } +#endif + + //Check initial gain by upper/lower bound + if(pDigTable->CurIGValue >pDigTable->rx_gain_range_max) + pDigTable->CurIGValue = pDigTable->rx_gain_range_max; + + if(pDigTable->CurIGValue < pDigTable->rx_gain_range_min) + pDigTable->CurIGValue = pDigTable->rx_gain_range_min; + +#ifdef CONFIG_DM_ADAPTIVITY + if(pdmpriv->DMFlag & DYNAMIC_FUNC_ADAPTIVITY) + { + if(pDigTable->CurIGValue > Adap_IGI_Upper) + pDigTable->CurIGValue = Adap_IGI_Upper; + + if(pdmpriv->IGI_LowerBound != 0) + { + if(pDigTable->CurIGValue < pdmpriv->IGI_LowerBound) + pDigTable->CurIGValue = pdmpriv->IGI_LowerBound; + } + LOG_LEVEL(_drv_info_, FUNC_ADPT_FMT": pdmpriv->IGI_LowerBound = %d\n", + FUNC_ADPT_ARG(pAdapter), pdmpriv->IGI_LowerBound); + } +#endif /* CONFIG_DM_ADAPTIVITY */ + + //printk("%s => rx_gain_range_max(0x%02x) rx_gain_range_min(0x%02x)\n",__FUNCTION__, + // pDigTable->rx_gain_range_max,pDigTable->rx_gain_range_min); + //printk("%s CurIGValue(0x%02x) <====\n",__FUNCTION__,pDigTable->CurIGValue ); + + DM_Write_DIG(pAdapter); + +} +#else +static VOID dm_CtrlInitGainByRssi(IN PADAPTER pAdapter) +{ + u32 isBT; + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(pAdapter); + struct dm_priv *pdmpriv = &pHalData->dmpriv; + DIG_T *pDigTable = &pdmpriv->DM_DigTable; + PFALSE_ALARM_STATISTICS FalseAlmCnt = &(pdmpriv->FalseAlmCnt); + u8 RSSI_tmp = dm_initial_gain_MinPWDB(pAdapter); +#ifdef CONFIG_DM_ADAPTIVITY + u8 Adap_IGI_Upper = pdmpriv->IGI_target + 30 + (u8) pdmpriv->TH_L2H_ini -(u8) pdmpriv->TH_EDCCA_HL_diff; +#endif + + //modify DIG upper bound + if((pDigTable->Rssi_val_min + 20) > DM_DIG_MAX ) + pDigTable->rx_gain_range_max = DM_DIG_MAX; + else + pDigTable->rx_gain_range_max = pDigTable->Rssi_val_min + 20; + //printk("%s Rssi_val_min(0x%02x),rx_gain_range_max(0x%02x)\n",__FUNCTION__,pDigTable->Rssi_val_min,pDigTable->rx_gain_range_max); + //modify DIG lower bound, deal with abnorally large false alarm + if(FalseAlmCnt->Cnt_all > 10000) + { + //RT_TRACE(COMP_DIG, DBG_LOUD, ("dm_DIG(): Abnornally false alarm case. \n")); + + pDigTable->LargeFAHit++; + if(pDigTable->ForbiddenIGI < pDigTable->CurIGValue) + { + pDigTable->ForbiddenIGI = pDigTable->CurIGValue; + pDigTable->LargeFAHit = 1; + } + + if(pDigTable->LargeFAHit >= 3) + { + if((pDigTable->ForbiddenIGI+1) > pDigTable->rx_gain_range_max) + pDigTable->rx_gain_range_min = pDigTable->rx_gain_range_max; + else + pDigTable->rx_gain_range_min = (pDigTable->ForbiddenIGI + 1); + pDigTable->Recover_cnt = 3600; //3600=2hr + } + } + else + { + //Recovery mechanism for IGI lower bound + if(pDigTable->Recover_cnt != 0) + pDigTable->Recover_cnt --; + else + { + if(pDigTable->LargeFAHit == 0 ) + { + if((pDigTable->ForbiddenIGI -1) < DM_DIG_MIN) + { + pDigTable->ForbiddenIGI = DM_DIG_MIN; + pDigTable->rx_gain_range_min = DM_DIG_MIN; + } + else + { + pDigTable->ForbiddenIGI --; + pDigTable->rx_gain_range_min = (pDigTable->ForbiddenIGI + 1); + } + } + else if(pDigTable->LargeFAHit == 3 ) + { + pDigTable->LargeFAHit = 0; + } + } + } + + //RT_TRACE(COMP_DIG, DBG_LOUD, ("DM_DigTable.ForbiddenIGI = 0x%x, DM_DigTable.LargeFAHit = 0x%x\n",pDigTable->ForbiddenIGI, pDigTable->LargeFAHit)); + //RT_TRACE(COMP_DIG, DBG_LOUD, ("DM_DigTable.rx_gain_range_max = 0x%x, DM_DigTable.rx_gain_range_min = 0x%x\n",pDigTable->rx_gain_range_max, pDigTable->rx_gain_range_min)); + +#ifdef CONFIG_USB_HCI + if(FalseAlmCnt->Cnt_all < 250) + { +#endif + //DBG_8192C("===> dm_CtrlInitGainByRssi, Enter DIG by SS mode\n"); + + isBT = rtw_read8(pAdapter, 0x4fd) & 0x01; + + if(!isBT){ + + if(FalseAlmCnt->Cnt_all > pDigTable->FAHighThresh) + { + if((pDigTable->BackoffVal -2) < pDigTable->BackoffVal_range_min) + pDigTable->BackoffVal = pDigTable->BackoffVal_range_min; + else + pDigTable->BackoffVal -= 2; + } + else if(FalseAlmCnt->Cnt_all < pDigTable->FALowThresh) + { + if((pDigTable->BackoffVal+2) > pDigTable->BackoffVal_range_max) + pDigTable->BackoffVal = pDigTable->BackoffVal_range_max; + else + pDigTable->BackoffVal +=2; + } + } + else + pDigTable->BackoffVal = DM_DIG_BACKOFF_DEFAULT; + + pDigTable->CurIGValue = pDigTable->Rssi_val_min+10-pDigTable->BackoffVal; + + //DBG_8192C("Rssi_val_min = %x BackoffVal %x\n",pDigTable->Rssi_val_min, pDigTable->BackoffVal); +#ifdef CONFIG_USB_HCI + } + else + { + //DBG_8192C("===> dm_CtrlInitGainByRssi, Enter DIG by FA mode\n"); + //DBG_8192C("RSSI = 0x%x", pDigTable->Rssi_val_min); + + //Adjust initial gain by false alarm + if(FalseAlmCnt->Cnt_all > 1000) + pDigTable->CurIGValue = pDigTable ->PreIGValue+2; + else if (FalseAlmCnt->Cnt_all > 750) + pDigTable->CurIGValue = pDigTable->PreIGValue+1; + else if(FalseAlmCnt->Cnt_all < 500) + pDigTable->CurIGValue = pDigTable->PreIGValue-1; + } +#endif + + if(RSSI_tmp <= DM_DIG_MIN) + pDigTable->rx_gain_range_min = DM_DIG_MIN; + else if(RSSI_tmp >= DM_DIG_MAX) + pDigTable->rx_gain_range_min = DM_DIG_MAX; + else + pDigTable->rx_gain_range_min = RSSI_tmp; + + + //Check initial gain by upper/lower bound + if(pDigTable->CurIGValue >pDigTable->rx_gain_range_max) + pDigTable->CurIGValue = pDigTable->rx_gain_range_max; + + if(pDigTable->CurIGValue < pDigTable->rx_gain_range_min) + pDigTable->CurIGValue = pDigTable->rx_gain_range_min; + +#ifdef CONFIG_DM_ADAPTIVITY + if(pdmpriv->DMFlag & DYNAMIC_FUNC_ADAPTIVITY) + { + if(pDigTable->CurIGValue > Adap_IGI_Upper) + pDigTable->CurIGValue = Adap_IGI_Upper; + + if(pdmpriv->IGI_LowerBound != 0) + { + if(pDigTable->CurIGValue < pdmpriv->IGI_LowerBound) + pDigTable->CurIGValue = pdmpriv->IGI_LowerBound; + } + LOG_LEVEL(_drv_info_, FUNC_ADPT_FMT": pdmpriv->IGI_LowerBound = %d\n", + FUNC_ADPT_ARG(pAdapter), pdmpriv->IGI_LowerBound); + } +#endif /* CONFIG_DM_ADAPTIVITY */ + + //printk("%s => rx_gain_range_max(0x%02x) rx_gain_range_min(0x%02x)\n",__FUNCTION__, + // pDigTable->rx_gain_range_max,pDigTable->rx_gain_range_min); + //printk("%s CurIGValue(0x%02x) <====\n",__FUNCTION__,pDigTable->CurIGValue ); + + DM_Write_DIG(pAdapter); + +} +#endif + +static VOID +dm_initial_gain_Multi_STA( + IN PADAPTER pAdapter) +{ + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(pAdapter); + struct dm_priv *pdmpriv = &pHalData->dmpriv; + struct mlme_priv *pmlmepriv = &(pAdapter->mlmepriv); + DIG_T *pDigTable = &pdmpriv->DM_DigTable; + int rssi_strength = pdmpriv->EntryMinUndecoratedSmoothedPWDB; + BOOLEAN bMulti_STA = _FALSE; + +#ifdef CONFIG_CONCURRENT_MODE + //AP Mode + if(check_buddy_fwstate(pAdapter, WIFI_AP_STATE) == _TRUE && (rssi_strength !=0)) + { + bMulti_STA = _TRUE; + } + else if(pDigTable->CurMultiSTAConnectState == DIG_MultiSTA_CONNECT && rssi_strength==0) //STA+STA MODE + { + bMulti_STA = _TRUE; + rssi_strength = pdmpriv->UndecoratedSmoothedPWDB; + } +#endif //CONFIG_CONCURRENT_MODE + + + //ADHOC and AP Mode + if(check_fwstate(pmlmepriv, WIFI_AP_STATE|WIFI_ADHOC_STATE|WIFI_ADHOC_MASTER_STATE) == _TRUE) + { + bMulti_STA = _TRUE; + } + + + if((bMulti_STA == _FALSE) + || (pDigTable->CurSTAConnectState == DIG_STA_DISCONNECT)) + { + pdmpriv->binitialized = _FALSE; + pDigTable->Dig_Ext_Port_Stage = DIG_EXT_PORT_STAGE_MAX; + return; + } + else if(pdmpriv->binitialized == _FALSE) + { + pdmpriv->binitialized = _TRUE; + pDigTable->Dig_Ext_Port_Stage = DIG_EXT_PORT_STAGE_0; + pDigTable->CurIGValue = 0x20; + DM_Write_DIG(pAdapter); + } + + // Initial gain control by ap mode + if(pDigTable->CurMultiSTAConnectState == DIG_MultiSTA_CONNECT) + { + if ( (rssi_strength < pDigTable->RssiLowThresh) && + (pDigTable->Dig_Ext_Port_Stage != DIG_EXT_PORT_STAGE_1)) + { + // Set to dig value to 0x20 for Luke's opinion after disable dig + if(pDigTable->Dig_Ext_Port_Stage == DIG_EXT_PORT_STAGE_2) + { + pDigTable->CurIGValue = 0x20; + DM_Write_DIG(pAdapter); + } + pDigTable->Dig_Ext_Port_Stage = DIG_EXT_PORT_STAGE_1; + } + else if (rssi_strength > pDigTable->RssiHighThresh) + { + pDigTable->Dig_Ext_Port_Stage = DIG_EXT_PORT_STAGE_2; + dm_CtrlInitGainByFA(pAdapter); + } + } + else if(pDigTable->Dig_Ext_Port_Stage != DIG_EXT_PORT_STAGE_0) + { + pDigTable->Dig_Ext_Port_Stage = DIG_EXT_PORT_STAGE_0; + pDigTable->CurIGValue = 0x20; + DM_Write_DIG(pAdapter); + } + + //RT_TRACE( COMP_DIG, DBG_LOUD, ("CurMultiSTAConnectState = %x Dig_Ext_Port_Stage %x\n", + // DM_DigTable.CurMultiSTAConnectState, DM_DigTable.Dig_Ext_Port_Stage)); +} + +static VOID +dm_initial_gain_STA_beforelinked( + IN PADAPTER pAdapter) +{ + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(pAdapter); + struct dm_priv *pdmpriv = &pHalData->dmpriv; + DIG_T *pDigTable = &pdmpriv->DM_DigTable; + PFALSE_ALARM_STATISTICS pFalseAlmCnt = &(pdmpriv->FalseAlmCnt); + + //CurrentIGI = pDM_DigTable->rx_gain_range_min;//pDM_DigTable->CurIGValue = pDM_DigTable->rx_gain_range_min + //ODM_RT_TRACE(pDM_Odm, ODM_COMP_DIG, ODM_DBG_LOUD, ("odm_DIG(): DIG BeforeLink\n")); + //2012.03.30 LukeLee: enable DIG before link but with very high thresholds + // Updated by Albert 2012/09/27 + // Copy the same rule from 8192du code. + if( pFalseAlmCnt->Cnt_all > 2000 ) + pDigTable->CurIGValue += 2; + else if ( ( pFalseAlmCnt->Cnt_all > 1000 ) && ( pFalseAlmCnt->Cnt_all <= 1000 ) ) + pDigTable->CurIGValue += 1; + else if(pFalseAlmCnt->Cnt_all < 500) + pDigTable->CurIGValue -= 1; + + //Check initial gain by upper/lower bound + if(pDigTable->CurIGValue >pDigTable->rx_gain_range_max) + pDigTable->CurIGValue = pDigTable->rx_gain_range_max; + + if(pDigTable->CurIGValue < pDigTable->rx_gain_range_min) + pDigTable->CurIGValue = pDigTable->rx_gain_range_min; + + printk("%s ==> FalseAlmCnt->Cnt_all:%d CurIGValue:0x%02x \n",__FUNCTION__,pFalseAlmCnt->Cnt_all ,pDigTable->CurIGValue); +} + +static VOID +dm_initial_gain_STA( + IN PADAPTER pAdapter) +{ + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(pAdapter); + struct dm_priv *pdmpriv = &pHalData->dmpriv; + DIG_T *pDigTable = &pdmpriv->DM_DigTable; + + //RT_TRACE( COMP_DIG, DBG_LOUD, ("PreSTAConnectState = %x, CurSTAConnectState = %x\n", + // DM_DigTable.PreSTAConnectState, DM_DigTable.CurSTAConnectState)); + + + if(pDigTable->PreSTAConnectState == pDigTable->CurSTAConnectState|| + pDigTable->CurSTAConnectState == DIG_STA_BEFORE_CONNECT || + pDigTable->CurSTAConnectState == DIG_STA_CONNECT) + { + // beforeconnect -> beforeconnect or connect -> connect + // (dis)connect -> beforeconnect + // disconnect -> connecct or beforeconnect -> connect + if(pDigTable->CurSTAConnectState != DIG_STA_DISCONNECT) + { + pDigTable->Rssi_val_min = dm_initial_gain_MinPWDB(pAdapter); + dm_CtrlInitGainByRssi(pAdapter); + } +#if 0 + else if((wdev_to_priv(pAdapter->rtw_wdev))->p2p_enabled == _TRUE + && pAdapter->wdinfo.driver_interface == DRIVER_CFG80211) + { + //pDigTable->CurIGValue = 0x30; + DM_Write_DIG(pAdapter); + } +#endif + else{ // pDigTable->CurSTAConnectState == DIG_STA_DISCONNECT + #ifdef CONFIG_BEFORE_LINKED_DIG + //printk("%s==> ##1 CurIGI(0x%02x),PreIGValue(0x%02x) \n",__FUNCTION__,pDigTable->CurIGValue,pDigTable->PreIGValue ); + dm_initial_gain_STA_beforelinked(pAdapter); + DM_Write_DIG(pAdapter); + #endif //CONFIG_BEFORE_LINKED_DIG + } + } + else + { + // connect -> disconnect or beforeconnect -> disconnect + pDigTable->Rssi_val_min = 0; + pDigTable->Dig_Ext_Port_Stage = DIG_EXT_PORT_STAGE_MAX; + pDigTable->BackoffVal = DM_DIG_BACKOFF_DEFAULT; + pDigTable->CurIGValue = 0x20; + pDigTable->PreIGValue = 0; + #ifdef CONFIG_BEFORE_LINKED_DIG + //printk("%s==> ##2 CurIGI(0x%02x),PreIGValue(0x%02x) \n",__FUNCTION__,pDigTable->CurIGValue,pDigTable->PreIGValue ); + dm_initial_gain_STA_beforelinked(pAdapter); + #endif //CONFIG_BEFORE_LINKED_DIG + + + DM_Write_DIG(pAdapter); + } + +} + + +static void dm_CCK_PacketDetectionThresh( + IN PADAPTER pAdapter) +{ + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(pAdapter); + struct dm_priv *pdmpriv = &pHalData->dmpriv; + PFALSE_ALARM_STATISTICS FalseAlmCnt = &(pdmpriv->FalseAlmCnt); + DIG_T *pDigTable = &pdmpriv->DM_DigTable; + + if(pDigTable->CurSTAConnectState == DIG_STA_CONNECT) + { + pDigTable->Rssi_val_min = dm_initial_gain_MinPWDB(pAdapter); + if(pDigTable->PreCCKPDState == CCK_PD_STAGE_LowRssi) + { + if(pDigTable->Rssi_val_min <= 25) + pDigTable->CurCCKPDState = CCK_PD_STAGE_LowRssi; + else + pDigTable->CurCCKPDState = CCK_PD_STAGE_HighRssi; + } + else{ + if(pDigTable->Rssi_val_min <= 20) + pDigTable->CurCCKPDState = CCK_PD_STAGE_LowRssi; + else + pDigTable->CurCCKPDState = CCK_PD_STAGE_HighRssi; + } + } + else + pDigTable->CurCCKPDState=CCK_PD_STAGE_MAX; + + if(pDigTable->PreCCKPDState != pDigTable->CurCCKPDState) + { + if((pDigTable->CurCCKPDState == CCK_PD_STAGE_LowRssi)|| + (pDigTable->CurCCKPDState == CCK_PD_STAGE_MAX)) + { + PHY_SetBBReg(pAdapter, rCCK0_CCA, bMaskByte2, 0x83); + + //PHY_SetBBReg(pAdapter, rCCK0_System, bMaskByte1, 0x40); + //if(IS_92C_SERIAL(pHalData->VersionID)) + //PHY_SetBBReg(pAdapter, rCCK0_FalseAlarmReport , bMaskByte2, 0xd7); + } + else + { + PHY_SetBBReg(pAdapter, rCCK0_CCA, bMaskByte2, 0xcd); + //PHY_SetBBReg(pAdapter,rCCK0_System, bMaskByte1, 0x47); + //if(IS_92C_SERIAL(pHalData->VersionID)) + //PHY_SetBBReg(pAdapter, rCCK0_FalseAlarmReport , bMaskByte2, 0xd3); + } + + pDigTable->PreCCKPDState = pDigTable->CurCCKPDState; + } + + //RT_TRACE( COMP_DIG, DBG_LOUD, ("CCKPDStage=%x\n",pDigTable->CurCCKPDState)); + //RT_TRACE( COMP_DIG, DBG_LOUD, ("is92C=%x\n",IS_92C_SERIAL(pHalData->VersionID))); + +} + + +static void +dm_CtrlInitGainByTwoPort( + IN PADAPTER pAdapter) +{ + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(pAdapter); + struct dm_priv *pdmpriv = &pHalData->dmpriv; + struct mlme_priv *pmlmepriv = &(pAdapter->mlmepriv); + DIG_T *pDigTable = &pdmpriv->DM_DigTable; + + if (check_fwstate(pmlmepriv, _FW_UNDER_SURVEY) == _TRUE) + { +#ifdef CONFIG_IOCTL_CFG80211 + if((wdev_to_priv(pAdapter->rtw_wdev))->p2p_enabled == _TRUE) + { + } + else +#endif + return; + } + + // Decide the current status and if modify initial gain or not + if (check_fwstate(pmlmepriv, _FW_UNDER_LINKING) == _TRUE) + { + pDigTable->CurSTAConnectState = DIG_STA_BEFORE_CONNECT; + } + else if(check_fwstate(pmlmepriv, _FW_LINKED) == _TRUE) + { + pDigTable->CurSTAConnectState = DIG_STA_CONNECT; + } + else + { + pDigTable->CurSTAConnectState = DIG_STA_DISCONNECT; + } + + + pDigTable->CurMultiSTAConnectState = DIG_MultiSTA_DISCONNECT; + if(check_fwstate(pmlmepriv, WIFI_ADHOC_STATE|WIFI_ADHOC_MASTER_STATE) == _TRUE) + { + if((is_IBSS_empty(pAdapter)==_FAIL) && (pAdapter->stapriv.asoc_sta_count > 2)) + pDigTable->CurMultiSTAConnectState = DIG_MultiSTA_CONNECT; + } + + if(check_fwstate(pmlmepriv, WIFI_AP_STATE) == _TRUE) + { + if(pAdapter->stapriv.asoc_sta_count > 2) + pDigTable->CurMultiSTAConnectState = DIG_MultiSTA_CONNECT; + } + +#ifdef CONFIG_CONCURRENT_MODE + if(check_buddy_fwstate(pAdapter, WIFI_AP_STATE) == _TRUE) + { + PADAPTER pbuddy_adapter = pAdapter->pbuddy_adapter; + + if(pbuddy_adapter->stapriv.asoc_sta_count > 2) + { + pDigTable->CurSTAConnectState = DIG_STA_CONNECT; + pDigTable->CurMultiSTAConnectState = DIG_MultiSTA_CONNECT; + } + } + else if(check_buddy_fwstate(pAdapter, WIFI_STATION_STATE) == _TRUE && + check_buddy_fwstate(pAdapter, _FW_LINKED) == _TRUE) + { + pDigTable->CurSTAConnectState = DIG_STA_CONNECT; + + } +#endif //CONFIG_CONCURRENT_MODE + + + dm_initial_gain_STA(pAdapter); + dm_initial_gain_Multi_STA(pAdapter); + //Baron temp DIG solution for DMP + //dm_CtrlInitGainByFA(pAdapter); + + dm_CCK_PacketDetectionThresh(pAdapter); + + pDigTable->PreSTAConnectState = pDigTable->CurSTAConnectState; + +} + + +static void dm_DIG( + IN PADAPTER pAdapter) +{ + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(pAdapter); + struct dm_priv *pdmpriv = &pHalData->dmpriv; + DIG_T *pDigTable = &pdmpriv->DM_DigTable; + + //Read 0x0c50; Initial gain + pDigTable->PreIGValue = (u8)PHY_QueryBBReg(pAdapter, rOFDM0_XAAGCCore1, bMaskByte0); + + //RTPRINT(FDM, DM_Monitor, ("dm_DIG() ==>\n")); + + if(pdmpriv->bDMInitialGainEnable == _FALSE) + return; + + //if(pDigTable->Dig_Enable_Flag == _FALSE) + // return; + + if(!(pdmpriv->DMFlag & DYNAMIC_FUNC_DIG)) + return; + + //RTPRINT(FDM, DM_Monitor, ("dm_DIG() progress \n")); + + dm_CtrlInitGainByTwoPort(pAdapter); + + //RTPRINT(FDM, DM_Monitor, ("dm_DIG() <==\n")); +} + +static void dm_SavePowerIndex(IN PADAPTER Adapter) +{ + u8 index; + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); + struct dm_priv *pdmpriv = &pHalData->dmpriv; + u32 Power_Index_REG[6] = {0xc90, 0xc91, 0xc92, 0xc98, 0xc99, 0xc9a}; + + for(index = 0; index< 6; index++) + pdmpriv->PowerIndex_backup[index] = rtw_read8(Adapter, Power_Index_REG[index]); +} + +static void dm_RestorePowerIndex(IN PADAPTER Adapter) +{ + u8 index; + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); + struct dm_priv *pdmpriv = &pHalData->dmpriv; + u32 Power_Index_REG[6] = {0xc90, 0xc91, 0xc92, 0xc98, 0xc99, 0xc9a}; + + for(index = 0; index< 6; index++) + rtw_write8(Adapter, Power_Index_REG[index], pdmpriv->PowerIndex_backup[index]); +} + +static void dm_WritePowerIndex( + IN PADAPTER Adapter, + IN u8 Value) +{ + u8 index; + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); + u32 Power_Index_REG[6] = {0xc90, 0xc91, 0xc92, 0xc98, 0xc99, 0xc9a}; + + for(index = 0; index< 6; index++) + rtw_write8(Adapter, Power_Index_REG[index], Value); +} + +static void dm_InitDynamicTxPower(IN PADAPTER Adapter) +{ + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); + struct dm_priv *pdmpriv = &pHalData->dmpriv; + +#ifdef CONFIG_USB_HCI +#ifdef CONFIG_INTEL_PROXIM + if((pHalData->BoardType == BOARD_USB_High_PA)||(Adapter->proximity.proxim_support==_TRUE)) +#else + if(pHalData->BoardType == BOARD_USB_High_PA) +#endif + { + dm_SavePowerIndex(Adapter); + pdmpriv->bDynamicTxPowerEnable = _TRUE; + } + else +#else + pdmpriv->bDynamicTxPowerEnable = _FALSE; +#endif + + pdmpriv->LastDTPLvl = TxHighPwrLevel_Normal; + pdmpriv->DynamicTxHighPowerLvl = TxHighPwrLevel_Normal; +} + + +static void dm_DynamicTxPower(IN PADAPTER Adapter) +{ + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); + struct dm_priv *pdmpriv = &pHalData->dmpriv; + struct mlme_priv *pmlmepriv = &(Adapter->mlmepriv); + struct mlme_ext_priv *pmlmeext = &Adapter->mlmeextpriv; + int UndecoratedSmoothedPWDB; + + if(!pdmpriv->bDynamicTxPowerEnable) + return; + + // If dynamic high power is disabled. + if(!(pdmpriv->DMFlag & DYNAMIC_FUNC_HP) ) + { + pdmpriv->DynamicTxHighPowerLvl = TxHighPwrLevel_Normal; + return; + } + + // STA not connected and AP not connected + if((check_fwstate(pmlmepriv, _FW_LINKED) != _TRUE) && + (pdmpriv->EntryMinUndecoratedSmoothedPWDB == 0)) + { + //RT_TRACE(COMP_HIPWR, DBG_LOUD, ("Not connected to any \n")); + pdmpriv->DynamicTxHighPowerLvl = TxHighPwrLevel_Normal; + + //the LastDTPlvl should reset when disconnect, + //otherwise the tx power level wouldn't change when disconnect and connect again. + // Maddest 20091220. + pdmpriv->LastDTPLvl=TxHighPwrLevel_Normal; + return; + } +#ifdef CONFIG_INTEL_PROXIM + if(Adapter->proximity.proxim_on== _TRUE){ + struct proximity_priv *prox_priv=Adapter->proximity.proximity_priv; + // Intel set fixed tx power + printk("\n %s Adapter->proximity.proxim_on=%d prox_priv->proxim_modeinfo->power_output=%d \n",__FUNCTION__,Adapter->proximity.proxim_on,prox_priv->proxim_modeinfo->power_output); + if(prox_priv!=NULL){ + if(prox_priv->proxim_modeinfo->power_output> 0) + + { + switch(prox_priv->proxim_modeinfo->power_output){ + case 1: + pdmpriv->DynamicTxHighPowerLvl = TxHighPwrLevel_100; + printk("TxHighPwrLevel_100\n"); + break; + case 2: + pdmpriv->DynamicTxHighPowerLvl = TxHighPwrLevel_70; + printk("TxHighPwrLevel_70\n"); + break; + case 3: + pdmpriv->DynamicTxHighPowerLvl = TxHighPwrLevel_50; + printk("TxHighPwrLevel_50\n"); + break; + case 4: + pdmpriv->DynamicTxHighPowerLvl = TxHighPwrLevel_35; + printk("TxHighPwrLevel_35\n"); + break; + case 5: + pdmpriv->DynamicTxHighPowerLvl = TxHighPwrLevel_15; + printk("TxHighPwrLevel_15\n"); + break; + default: + pdmpriv->DynamicTxHighPowerLvl = TxHighPwrLevel_100; + printk("TxHighPwrLevel_100\n"); + break; + } + } + } + } + else +#endif +{ + if(check_fwstate(pmlmepriv, _FW_LINKED) == _TRUE) // Default port + { + //todo: AP Mode + if ((check_fwstate(pmlmepriv, WIFI_ADHOC_MASTER_STATE) == _TRUE) || + (check_fwstate(pmlmepriv, WIFI_ADHOC_STATE) == _TRUE)) + { + UndecoratedSmoothedPWDB = pdmpriv->EntryMinUndecoratedSmoothedPWDB; + //RT_TRACE(COMP_HIPWR, DBG_LOUD, ("AP Client PWDB = 0x%x \n", UndecoratedSmoothedPWDB)); + } + else + { + UndecoratedSmoothedPWDB = pdmpriv->UndecoratedSmoothedPWDB; + //RT_TRACE(COMP_HIPWR, DBG_LOUD, ("STA Default Port PWDB = 0x%x \n", UndecoratedSmoothedPWDB)); + } + } + else // associated entry pwdb + { + UndecoratedSmoothedPWDB = pdmpriv->EntryMinUndecoratedSmoothedPWDB; + //RT_TRACE(COMP_HIPWR, DBG_LOUD, ("AP Ext Port PWDB = 0x%x \n", UndecoratedSmoothedPWDB)); + } + + if(UndecoratedSmoothedPWDB >= TX_POWER_NEAR_FIELD_THRESH_LVL2) + { + pdmpriv->DynamicTxHighPowerLvl = TxHighPwrLevel_Level2; + //RT_TRACE(COMP_HIPWR, DBG_LOUD, ("TxHighPwrLevel_Level1 (TxPwr=0x0)\n")); + } + else if((UndecoratedSmoothedPWDB < (TX_POWER_NEAR_FIELD_THRESH_LVL2-3)) && + (UndecoratedSmoothedPWDB >= TX_POWER_NEAR_FIELD_THRESH_LVL1) ) + { + pdmpriv->DynamicTxHighPowerLvl = TxHighPwrLevel_Level1; + //RT_TRACE(COMP_HIPWR, DBG_LOUD, ("TxHighPwrLevel_Level1 (TxPwr=0x10)\n")); + } + else if(UndecoratedSmoothedPWDB < (TX_POWER_NEAR_FIELD_THRESH_LVL1-5)) + { + pdmpriv->DynamicTxHighPowerLvl = TxHighPwrLevel_Normal; + //RT_TRACE(COMP_HIPWR, DBG_LOUD, ("TxHighPwrLevel_Normal\n")); + } +} + if( (pdmpriv->DynamicTxHighPowerLvl != pdmpriv->LastDTPLvl) ) + { + PHY_SetTxPowerLevel8192C(Adapter, pHalData->CurrentChannel); + if(pdmpriv->DynamicTxHighPowerLvl == TxHighPwrLevel_Normal) // HP1 -> Normal or HP2 -> Normal + dm_RestorePowerIndex(Adapter); + else if(pdmpriv->DynamicTxHighPowerLvl == TxHighPwrLevel_Level1) + dm_WritePowerIndex(Adapter, 0x14); + else if(pdmpriv->DynamicTxHighPowerLvl == TxHighPwrLevel_Level2) + dm_WritePowerIndex(Adapter, 0x10); + } + pdmpriv->LastDTPLvl = pdmpriv->DynamicTxHighPowerLvl; + +} + + +static VOID +DM_ChangeDynamicInitGainThresh( + IN PADAPTER pAdapter, + IN u32 DM_Type, + IN u32 DM_Value) +{ + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(pAdapter); + struct dm_priv *pdmpriv = &pHalData->dmpriv; + DIG_T *pDigTable = &pdmpriv->DM_DigTable; + + if (DM_Type == DIG_TYPE_THRESH_HIGH) + { + pDigTable->RssiHighThresh = DM_Value; + } + else if (DM_Type == DIG_TYPE_THRESH_LOW) + { + pDigTable->RssiLowThresh = DM_Value; + } + else if (DM_Type == DIG_TYPE_ENABLE) + { + pDigTable->Dig_Enable_Flag = _TRUE; + } + else if (DM_Type == DIG_TYPE_DISABLE) + { + pDigTable->Dig_Enable_Flag = _FALSE; + } + else if (DM_Type == DIG_TYPE_BACKOFF) + { + if(DM_Value > 30) + DM_Value = 30; + pDigTable->BackoffVal = (u8)DM_Value; + } + else if(DM_Type == DIG_TYPE_RX_GAIN_MIN) + { + if(DM_Value == 0) + DM_Value = 0x1; + pDigTable->rx_gain_range_min = (u8)DM_Value; + } + else if(DM_Type == DIG_TYPE_RX_GAIN_MAX) + { + if(DM_Value > 0x50) + DM_Value = 0x50; + pDigTable->rx_gain_range_max = (u8)DM_Value; + } +} /* DM_ChangeDynamicInitGainThresh */ + + +static VOID PWDB_Monitor( + IN PADAPTER Adapter + ) +{ + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); + struct dm_priv *pdmpriv = &pHalData->dmpriv; + int i; + int tmpEntryMaxPWDB=0, tmpEntryMinPWDB=0xff; + u8 sta_cnt=0; + u32 PWDB_rssi[NUM_STA]={0};//[0~15]:MACID, [16~31]:PWDB_rssi + + if(check_fwstate(&Adapter->mlmepriv, _FW_LINKED) != _TRUE) + return; + + + if(check_fwstate(&Adapter->mlmepriv, WIFI_AP_STATE|WIFI_ADHOC_STATE|WIFI_ADHOC_MASTER_STATE) == _TRUE) + { + _irqL irqL; + _list *plist, *phead; + struct sta_info *psta; + struct sta_priv *pstapriv = &Adapter->stapriv; + u8 bcast_addr[ETH_ALEN]= {0xff,0xff,0xff,0xff,0xff,0xff}; + + _enter_critical_bh(&pstapriv->sta_hash_lock, &irqL); + + for(i=0; i< NUM_STA; i++) + { + phead = &(pstapriv->sta_hash[i]); + plist = get_next(phead); + + while ((rtw_end_of_queue_search(phead, plist)) == _FALSE) + { + psta = LIST_CONTAINOR(plist, struct sta_info, hash_list); + + plist = get_next(plist); + + if(_rtw_memcmp(psta ->hwaddr, bcast_addr, ETH_ALEN) || + _rtw_memcmp(psta->hwaddr, myid(&Adapter->eeprompriv), ETH_ALEN)) + continue; + + if(psta->state & WIFI_ASOC_STATE) + { + + if(psta->rssi_stat.UndecoratedSmoothedPWDB < tmpEntryMinPWDB) + tmpEntryMinPWDB = psta->rssi_stat.UndecoratedSmoothedPWDB; + + if(psta->rssi_stat.UndecoratedSmoothedPWDB > tmpEntryMaxPWDB) + tmpEntryMaxPWDB = psta->rssi_stat.UndecoratedSmoothedPWDB; + + PWDB_rssi[sta_cnt++] = (psta->mac_id | (psta->rssi_stat.UndecoratedSmoothedPWDB<<16)); + } + + } + + } + + _exit_critical_bh(&pstapriv->sta_hash_lock, &irqL); + + + + if(pHalData->fw_ractrl == _TRUE) + { + // Report every sta's RSSI to FW + for(i=0; i< sta_cnt; i++) + { + rtl8192c_set_rssi_cmd(Adapter, (u8*)&PWDB_rssi[i]); + } + } + + } + + + + if(tmpEntryMaxPWDB != 0) // If associated entry is found + { + pdmpriv->EntryMaxUndecoratedSmoothedPWDB = tmpEntryMaxPWDB; + } + else + { + pdmpriv->EntryMaxUndecoratedSmoothedPWDB = 0; + } + + if(tmpEntryMinPWDB != 0xff) // If associated entry is found + { + pdmpriv->EntryMinUndecoratedSmoothedPWDB = tmpEntryMinPWDB; + } + else + { + pdmpriv->EntryMinUndecoratedSmoothedPWDB = 0; + } + + + if(check_fwstate(&Adapter->mlmepriv, WIFI_STATION_STATE) == _TRUE) + { + + if(pHalData->fw_ractrl == _TRUE) + { + u32 param = (u32)(pdmpriv->UndecoratedSmoothedPWDB<<16); + + param |= 0;//macid=0 for sta mode; + + rtl8192c_set_rssi_cmd(Adapter, (u8*)¶m); + } + } + +} + + +static void +DM_InitEdcaTurbo( + IN PADAPTER Adapter + ) +{ + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); + + pHalData->bCurrentTurboEDCA = _FALSE; + Adapter->recvpriv.bIsAnyNonBEPkts = _FALSE; + +} + + +static void +dm_CheckEdcaTurbo( + IN PADAPTER Adapter + ) +{ + u32 trafficIndex; + u32 edca_param; + u64 cur_tx_bytes = 0; + u64 cur_rx_bytes = 0; + u8 bbtchange = _FALSE; + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); + struct dm_priv *pdmpriv = &pHalData->dmpriv; + struct xmit_priv *pxmitpriv = &(Adapter->xmitpriv); + struct recv_priv *precvpriv = &(Adapter->recvpriv); + struct registry_priv *pregpriv = &Adapter->registrypriv; + struct mlme_ext_priv *pmlmeext = &(Adapter->mlmeextpriv); + struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info); +#ifdef CONFIG_BT_COEXIST + struct btcoexist_priv *pbtpriv = &(pHalData->bt_coexist); +#endif + + + if ((pregpriv->wifi_spec == 1) || (pmlmeinfo->HT_enable == 0)) + { + goto dm_CheckEdcaTurbo_EXIT; + } + + if (pmlmeinfo->assoc_AP_vendor >= maxAP) + { + goto dm_CheckEdcaTurbo_EXIT; + } + +#ifdef CONFIG_BT_COEXIST + if(pbtpriv->BT_Coexist) + { + if( (pbtpriv->BT_EDCA[UP_LINK]!=0) || (pbtpriv->BT_EDCA[DOWN_LINK]!=0)) + { + bbtchange = _TRUE; + } + } +#endif + + // Check if the status needs to be changed. + if((bbtchange) || (!precvpriv->bIsAnyNonBEPkts) ) + { + cur_tx_bytes = pxmitpriv->tx_bytes - pxmitpriv->last_tx_bytes; + cur_rx_bytes = precvpriv->rx_bytes - precvpriv->last_rx_bytes; + + //traffic, TX or RX + if((pmlmeinfo->assoc_AP_vendor == ralinkAP)||(pmlmeinfo->assoc_AP_vendor == atherosAP)) + { + if (cur_tx_bytes > (cur_rx_bytes << 2)) + { // Uplink TP is present. + trafficIndex = UP_LINK; + } + else + { // Balance TP is present. + trafficIndex = DOWN_LINK; + } + } + else + { + if (cur_rx_bytes > (cur_tx_bytes << 2)) + { // Downlink TP is present. + trafficIndex = DOWN_LINK; + } + else + { // Balance TP is present. + trafficIndex = UP_LINK; + } + } + + if ((pdmpriv->prv_traffic_idx != trafficIndex) || (!pHalData->bCurrentTurboEDCA)) + { +#ifdef CONFIG_BT_COEXIST + if(_TRUE == bbtchange) + { + edca_param = pbtpriv->BT_EDCA[trafficIndex]; + } + else +#endif + { +#if 0 + //adjust EDCA parameter for BE queue + edca_param = EDCAParam[pmlmeinfo->assoc_AP_vendor][trafficIndex]; +#else + + if((pmlmeinfo->assoc_AP_vendor == ciscoAP) && (pmlmeext->cur_wireless_mode & WIRELESS_11_24N)) + { + edca_param = EDCAParam[pmlmeinfo->assoc_AP_vendor][trafficIndex]; + } + else + { + edca_param = EDCAParam[unknownAP][trafficIndex]; + } +#endif + } + +#ifdef CONFIG_PCI_HCI + if(IS_92C_SERIAL(pHalData->VersionID)) + { + edca_param = 0x60a42b; + } + else + { + edca_param = 0x6ea42b; + } +#endif + rtw_write32(Adapter, REG_EDCA_BE_PARAM, edca_param); + + pdmpriv->prv_traffic_idx = trafficIndex; + } + + pHalData->bCurrentTurboEDCA = _TRUE; + } + else + { + // + // Turn Off EDCA turbo here. + // Restore original EDCA according to the declaration of AP. + // + if(pHalData->bCurrentTurboEDCA) + { + rtw_write32(Adapter, REG_EDCA_BE_PARAM, pHalData->AcParam_BE); + pHalData->bCurrentTurboEDCA = _FALSE; + } + } + +dm_CheckEdcaTurbo_EXIT: + // Set variables for next time. + precvpriv->bIsAnyNonBEPkts = _FALSE; + pxmitpriv->last_tx_bytes = pxmitpriv->tx_bytes; + precvpriv->last_rx_bytes = precvpriv->rx_bytes; + +} + +#define DPK_DELTA_MAPPING_NUM 13 +#define index_mapping_HP_NUM 15 + +static VOID +dm_TXPowerTrackingCallback_ThermalMeter_92C( + IN PADAPTER Adapter) +{ + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); + struct dm_priv *pdmpriv = &pHalData->dmpriv; + u8 ThermalValue = 0, delta, delta_LCK, delta_IQK, delta_HP, TimeOut = 100; + int ele_A, ele_D, TempCCk, X, value32; + int Y, ele_C; + s8 OFDM_index[2], CCK_index = 0, OFDM_index_old[2], CCK_index_old = 0; + int i = 0; + BOOLEAN is2T = IS_92C_SERIAL(pHalData->VersionID); + +#if MP_DRIVER == 1 + PMPT_CONTEXT pMptCtx = &(Adapter->mppriv.MptCtx); + u8 *TxPwrLevel = pMptCtx->TxPwrLevel; +#endif + u8 OFDM_min_index = 6, rf; //OFDM BB Swing should be less than +3.0dB, which is required by Arthur +#if 0 + u32 DPK_delta_mapping[2][DPK_DELTA_MAPPING_NUM] = { + {0x1c, 0x1c, 0x1d, 0x1d, 0x1e, + 0x1f, 0x00, 0x00, 0x01, 0x01, + 0x02, 0x02, 0x03}, + {0x1c, 0x1d, 0x1e, 0x1e, 0x1e, + 0x1f, 0x00, 0x00, 0x01, 0x02, + 0x02, 0x03, 0x03}}; +#endif +#ifdef CONFIG_USB_HCI + u8 ThermalValue_HP_count = 0; + u32 ThermalValue_HP = 0; + s32 index_mapping_HP[index_mapping_HP_NUM] = { + 0, 1, 3, 4, 6, + 7, 9, 10, 12, 13, + 15, 16, 18, 19, 21 + }; + + s8 index_HP; +#endif + + pdmpriv->TXPowerTrackingCallbackCnt++; //cosa add for debug + pdmpriv->bTXPowerTrackingInit = _TRUE; + + if(pHalData->CurrentChannel == 14 && !pdmpriv->bCCKinCH14) + pdmpriv->bCCKinCH14 = _TRUE; + else if(pHalData->CurrentChannel != 14 && pdmpriv->bCCKinCH14) + pdmpriv->bCCKinCH14 = _FALSE; + + //DBG_8192C("===>dm_TXPowerTrackingCallback_ThermalMeter_92C\n"); + + ThermalValue = (u8)PHY_QueryRFReg(Adapter, RF_PATH_A, RF_T_METER, 0x1f); // 0x24: RF Reg[4:0] + + //DBG_8192C("\n\nReadback Thermal Meter = 0x%x pre thermal meter 0x%x EEPROMthermalmeter 0x%x\n",ThermalValue,pdmpriv->ThermalValue, pHalData->EEPROMThermalMeter); + + rtl8192c_PHY_APCalibrate(Adapter, (ThermalValue - pHalData->EEPROMThermalMeter)); + + if(is2T) + rf = 2; + else + rf = 1; + + if(ThermalValue) + { +// if(!pHalData->ThermalValue) + { + //Query OFDM path A default setting + ele_D = PHY_QueryBBReg(Adapter, rOFDM0_XATxIQImbalance, bMaskDWord)&bMaskOFDM_D; + for(i=0; ibCCKinCH14) + { + if(_rtw_memcmp((void*)&TempCCk, (void*)&CCKSwingTable_Ch14[i][2], 4)==_TRUE) + { + CCK_index_old =(u8)i; + //DBG_8192C("Initial reg0x%x = 0x%x, CCK_index=0x%x, ch 14 %d\n", rCCK0_TxFilter2, TempCCk, CCK_index_old, pdmpriv->bCCKinCH14); + break; + } + } + else + { + if(_rtw_memcmp((void*)&TempCCk, (void*)&CCKSwingTable_Ch1_Ch13[i][2], 4)==_TRUE) + { + CCK_index_old =(u8)i; + //DBG_8192C("Initial reg0x%x = 0x%x, CCK_index=0x%x, ch14 %d\n", rCCK0_TxFilter2, TempCCk, CCK_index_old, pdmpriv->bCCKinCH14); + break; + } + } + } + + if(!pdmpriv->ThermalValue) + { + pdmpriv->ThermalValue = pHalData->EEPROMThermalMeter; + pdmpriv->ThermalValue_LCK = ThermalValue; + pdmpriv->ThermalValue_IQK = ThermalValue; + pdmpriv->ThermalValue_DPK = pHalData->EEPROMThermalMeter; + +#ifdef CONFIG_USB_HCI + for(i = 0; i < rf; i++) + pdmpriv->OFDM_index_HP[i] = pdmpriv->OFDM_index[i] = OFDM_index_old[i]; + pdmpriv->CCK_index_HP = pdmpriv->CCK_index = CCK_index_old; +#else + for(i = 0; i < rf; i++) + pdmpriv->OFDM_index[i] = OFDM_index_old[i]; + pdmpriv->CCK_index = CCK_index_old; +#endif + } + +#ifdef CONFIG_USB_HCI + if(pHalData->BoardType == BOARD_USB_High_PA) + { + pdmpriv->ThermalValue_HP[pdmpriv->ThermalValue_HP_index] = ThermalValue; + pdmpriv->ThermalValue_HP_index++; + if(pdmpriv->ThermalValue_HP_index == HP_THERMAL_NUM) + pdmpriv->ThermalValue_HP_index = 0; + + for(i = 0; i < HP_THERMAL_NUM; i++) + { + if(pdmpriv->ThermalValue_HP[i]) + { + ThermalValue_HP += pdmpriv->ThermalValue_HP[i]; + ThermalValue_HP_count++; + } + } + + if(ThermalValue_HP_count) + ThermalValue = (u8)(ThermalValue_HP / ThermalValue_HP_count); + } +#endif + } + + delta = (ThermalValue > pdmpriv->ThermalValue)?(ThermalValue - pdmpriv->ThermalValue):(pdmpriv->ThermalValue - ThermalValue); +#ifdef CONFIG_USB_HCI + if(pHalData->BoardType == BOARD_USB_High_PA) + { + if(pdmpriv->bDoneTxpower) + delta_HP = (ThermalValue > pdmpriv->ThermalValue)?(ThermalValue - pdmpriv->ThermalValue):(pdmpriv->ThermalValue - ThermalValue); + else + delta_HP = ThermalValue > pHalData->EEPROMThermalMeter?(ThermalValue - pHalData->EEPROMThermalMeter):(pHalData->EEPROMThermalMeter - ThermalValue); + } + else +#endif + { + delta_HP = 0; + } + delta_LCK = (ThermalValue > pdmpriv->ThermalValue_LCK)?(ThermalValue - pdmpriv->ThermalValue_LCK):(pdmpriv->ThermalValue_LCK - ThermalValue); + delta_IQK = (ThermalValue > pdmpriv->ThermalValue_IQK)?(ThermalValue - pdmpriv->ThermalValue_IQK):(pdmpriv->ThermalValue_IQK - ThermalValue); + + //DBG_8192C("Readback Thermal Meter = 0x%lx pre thermal meter 0x%lx EEPROMthermalmeter 0x%lx delta 0x%lx delta_LCK 0x%lx delta_IQK 0x%lx\n", ThermalValue, pHalData->ThermalValue, pHalData->EEPROMThermalMeter, delta, delta_LCK, delta_IQK); + + if(delta_LCK > 1) + { + pdmpriv->ThermalValue_LCK = ThermalValue; + rtl8192c_PHY_LCCalibrate(Adapter); + } + + if((delta > 0 || delta_HP > 0) && pdmpriv->TxPowerTrackControl) + { +#ifdef CONFIG_USB_HCI + if(pHalData->BoardType == BOARD_USB_High_PA) + { + pdmpriv->bDoneTxpower = _TRUE; + delta_HP = ThermalValue > pHalData->EEPROMThermalMeter?(ThermalValue - pHalData->EEPROMThermalMeter):(pHalData->EEPROMThermalMeter - ThermalValue); + + if(delta_HP > index_mapping_HP_NUM-1) + index_HP = index_mapping_HP[index_mapping_HP_NUM-1]; + else + index_HP = index_mapping_HP[delta_HP]; + + if(ThermalValue > pHalData->EEPROMThermalMeter) //set larger Tx power + { + for(i = 0; i < rf; i++) + OFDM_index[i] = pdmpriv->OFDM_index_HP[i] - index_HP; + CCK_index = pdmpriv->CCK_index_HP -index_HP; + } + else + { + for(i = 0; i < rf; i++) + OFDM_index[i] = pdmpriv->OFDM_index_HP[i] + index_HP; + CCK_index = pdmpriv->CCK_index_HP + index_HP; + } + + delta_HP = (ThermalValue > pdmpriv->ThermalValue)?(ThermalValue - pdmpriv->ThermalValue):(pdmpriv->ThermalValue - ThermalValue); + + } + else +#endif + { + if(ThermalValue > pdmpriv->ThermalValue) + { + for(i = 0; i < rf; i++) + pdmpriv->OFDM_index[i] -= delta; + pdmpriv->CCK_index -= delta; + } + else + { + for(i = 0; i < rf; i++) + pdmpriv->OFDM_index[i] += delta; + pdmpriv->CCK_index += delta; + } + } + + /*if(is2T) + { + DBG_8192C("temp OFDM_A_index=0x%x, OFDM_B_index=0x%x, CCK_index=0x%x\n", + pdmpriv->OFDM_index[0], pdmpriv->OFDM_index[1], pdmpriv->CCK_index); + } + else + { + DBG_8192C("temp OFDM_A_index=0x%x, CCK_index=0x%x\n", + pdmpriv->OFDM_index[0], pdmpriv->CCK_index); + }*/ + + //no adjust +#ifdef CONFIG_USB_HCI + if(pHalData->BoardType != BOARD_USB_High_PA) +#endif + { + if(ThermalValue > pHalData->EEPROMThermalMeter) + { + for(i = 0; i < rf; i++) + OFDM_index[i] = pdmpriv->OFDM_index[i]+1; + CCK_index = pdmpriv->CCK_index+1; + } + else + { + for(i = 0; i < rf; i++) + OFDM_index[i] = pdmpriv->OFDM_index[i]; + CCK_index = pdmpriv->CCK_index; + } + +#if MP_DRIVER == 1 + for(i = 0; i < rf; i++) + { + if(TxPwrLevel[i] >=0 && TxPwrLevel[i] <=26) + { + if(ThermalValue > pHalData->EEPROMThermalMeter) + { + if (delta < 5) + OFDM_index[i] -= 1; + else + OFDM_index[i] -= 2; + } + else if(delta > 5 && ThermalValue < pHalData->EEPROMThermalMeter) + { + OFDM_index[i] += 1; + } + } + else if (TxPwrLevel[i] >= 27 && TxPwrLevel[i] <= 32 && ThermalValue > pHalData->EEPROMThermalMeter) + { + if (delta < 5) + OFDM_index[i] -= 1; + else + OFDM_index[i] -= 2; + } + else if (TxPwrLevel[i] >= 32 && TxPwrLevel[i] <= 38 && ThermalValue > pHalData->EEPROMThermalMeter && delta > 5) + { + OFDM_index[i] -= 1; + } + } + + { + if(TxPwrLevel[i] >=0 && TxPwrLevel[i] <=26) + { + if(ThermalValue > pHalData->EEPROMThermalMeter) + { + if (delta < 5) + CCK_index -= 1; + else + CCK_index -= 2; + } + else if(delta > 5 && ThermalValue < pHalData->EEPROMThermalMeter) + { + CCK_index += 1; + } + } + else if (TxPwrLevel[i] >= 27 && TxPwrLevel[i] <= 32 && ThermalValue > pHalData->EEPROMThermalMeter) + { + if (delta < 5) + CCK_index -= 1; + else + CCK_index -= 2; + } + else if (TxPwrLevel[i] >= 32 && TxPwrLevel[i] <= 38 && ThermalValue > pHalData->EEPROMThermalMeter && delta > 5) + { + CCK_index -= 1; + } + } +#endif + } + + for(i = 0; i < rf; i++) + { + if(OFDM_index[i] > (OFDM_TABLE_SIZE_92C-1)) + OFDM_index[i] = (OFDM_TABLE_SIZE_92C-1); + else if (OFDM_index[i] < OFDM_min_index) + OFDM_index[i] = OFDM_min_index; + } + + if(CCK_index > (CCK_TABLE_SIZE-1)) + CCK_index = (CCK_TABLE_SIZE-1); + else if (CCK_index < 0) + CCK_index = 0; + + /*if(is2T) + { + DBG_8192C("new OFDM_A_index=0x%x, OFDM_B_index=0x%x, CCK_index=0x%x\n", + OFDM_index[0], OFDM_index[1], CCK_index); + } + else + { + DBG_8192C("new OFDM_A_index=0x%x, CCK_index=0x%x\n", + OFDM_index[0], CCK_index); + }*/ + } + + if(pdmpriv->TxPowerTrackControl && (delta != 0 || delta_HP != 0)) + { + //Adujst OFDM Ant_A according to IQK result + ele_D = (OFDMSwingTable[OFDM_index[0]] & 0xFFC00000)>>22; + X = pdmpriv->RegE94; + Y = pdmpriv->RegE9C; + + if(X != 0) + { + if ((X & 0x00000200) != 0) + X = X | 0xFFFFFC00; + ele_A = ((X * ele_D)>>8)&0x000003FF; + + //new element C = element D x Y + if ((Y & 0x00000200) != 0) + Y = Y | 0xFFFFFC00; + ele_C = ((Y * ele_D)>>8)&0x000003FF; + + //wirte new elements A, C, D to regC80 and regC94, element B is always 0 + value32 = (ele_D<<22)|((ele_C&0x3F)<<16)|ele_A; + PHY_SetBBReg(Adapter, rOFDM0_XATxIQImbalance, bMaskDWord, value32); + + value32 = (ele_C&0x000003C0)>>6; + PHY_SetBBReg(Adapter, rOFDM0_XCTxAFE, bMaskH4Bits, value32); + + value32 = ((X * ele_D)>>7)&0x01; + PHY_SetBBReg(Adapter, rOFDM0_ECCAThreshold, BIT31, value32); + + value32 = ((Y * ele_D)>>7)&0x01; + PHY_SetBBReg(Adapter, rOFDM0_ECCAThreshold, BIT29, value32); + + } + else + { + PHY_SetBBReg(Adapter, rOFDM0_XATxIQImbalance, bMaskDWord, OFDMSwingTable[OFDM_index[0]]); + PHY_SetBBReg(Adapter, rOFDM0_XCTxAFE, bMaskH4Bits, 0x00); + PHY_SetBBReg(Adapter, rOFDM0_ECCAThreshold, BIT31|BIT29, 0x00); + } + + //RTPRINT(FINIT, INIT_IQK, ("TxPwrTracking path A: X = 0x%x, Y = 0x%x ele_A = 0x%x ele_C = 0x%x ele_D = 0x%x\n", X, Y, ele_A, ele_C, ele_D)); + + //Adjust CCK according to IQK result + if(!pdmpriv->bCCKinCH14){ + rtw_write8(Adapter, 0xa22, CCKSwingTable_Ch1_Ch13[CCK_index][0]); + rtw_write8(Adapter, 0xa23, CCKSwingTable_Ch1_Ch13[CCK_index][1]); + rtw_write8(Adapter, 0xa24, CCKSwingTable_Ch1_Ch13[CCK_index][2]); + rtw_write8(Adapter, 0xa25, CCKSwingTable_Ch1_Ch13[CCK_index][3]); + rtw_write8(Adapter, 0xa26, CCKSwingTable_Ch1_Ch13[CCK_index][4]); + rtw_write8(Adapter, 0xa27, CCKSwingTable_Ch1_Ch13[CCK_index][5]); + rtw_write8(Adapter, 0xa28, CCKSwingTable_Ch1_Ch13[CCK_index][6]); + rtw_write8(Adapter, 0xa29, CCKSwingTable_Ch1_Ch13[CCK_index][7]); + } + else{ + rtw_write8(Adapter, 0xa22, CCKSwingTable_Ch14[CCK_index][0]); + rtw_write8(Adapter, 0xa23, CCKSwingTable_Ch14[CCK_index][1]); + rtw_write8(Adapter, 0xa24, CCKSwingTable_Ch14[CCK_index][2]); + rtw_write8(Adapter, 0xa25, CCKSwingTable_Ch14[CCK_index][3]); + rtw_write8(Adapter, 0xa26, CCKSwingTable_Ch14[CCK_index][4]); + rtw_write8(Adapter, 0xa27, CCKSwingTable_Ch14[CCK_index][5]); + rtw_write8(Adapter, 0xa28, CCKSwingTable_Ch14[CCK_index][6]); + rtw_write8(Adapter, 0xa29, CCKSwingTable_Ch14[CCK_index][7]); + } + + if(is2T) + { + ele_D = (OFDMSwingTable[(u8)OFDM_index[1]] & 0xFFC00000)>>22; + + //new element A = element D x X + X = pdmpriv->RegEB4; + Y = pdmpriv->RegEBC; + + if(X != 0){ + if ((X & 0x00000200) != 0) //consider minus + X = X | 0xFFFFFC00; + ele_A = ((X * ele_D)>>8)&0x000003FF; + + //new element C = element D x Y + if ((Y & 0x00000200) != 0) + Y = Y | 0xFFFFFC00; + ele_C = ((Y * ele_D)>>8)&0x00003FF; + + //wirte new elements A, C, D to regC88 and regC9C, element B is always 0 + value32=(ele_D<<22)|((ele_C&0x3F)<<16) |ele_A; + PHY_SetBBReg(Adapter, rOFDM0_XBTxIQImbalance, bMaskDWord, value32); + + value32 = (ele_C&0x000003C0)>>6; + PHY_SetBBReg(Adapter, rOFDM0_XDTxAFE, bMaskH4Bits, value32); + + value32 = ((X * ele_D)>>7)&0x01; + PHY_SetBBReg(Adapter, rOFDM0_ECCAThreshold, BIT27, value32); + + value32 = ((Y * ele_D)>>7)&0x01; + PHY_SetBBReg(Adapter, rOFDM0_ECCAThreshold, BIT25, value32); + + } + else{ + PHY_SetBBReg(Adapter, rOFDM0_XBTxIQImbalance, bMaskDWord, OFDMSwingTable[OFDM_index[1]]); + PHY_SetBBReg(Adapter, rOFDM0_XDTxAFE, bMaskH4Bits, 0x00); + PHY_SetBBReg(Adapter, rOFDM0_ECCAThreshold, BIT27|BIT25, 0x00); + } + + //DBG_8192C("TxPwrTracking path B: X = 0x%x, Y = 0x%x ele_A = 0x%x ele_C = 0x%x ele_D = 0x%x\n", X, Y, ele_A, ele_C, ele_D); + } + + /* + DBG_8192C("TxPwrTracking 0xc80 = 0x%x, 0xc94 = 0x%x RF 0x24 = 0x%x\n", \ + PHY_QueryBBReg(Adapter, 0xc80, bMaskDWord),\ + PHY_QueryBBReg(Adapter, 0xc94, bMaskDWord), \ + PHY_QueryRFReg(Adapter, RF_PATH_A, 0x24, bMaskDWord)); + */ + } + +#if MP_DRIVER == 1 + if(delta_IQK > 1) +#else + if(delta_IQK > 3) +#endif + { + pdmpriv->ThermalValue_IQK = ThermalValue; + rtl8192c_PHY_IQCalibrate(Adapter,_FALSE); + } + + //update thermal meter value + if(pdmpriv->TxPowerTrackControl) + pdmpriv->ThermalValue = ThermalValue; + + } + + //DBG_8192C("<===dm_TXPowerTrackingCallback_ThermalMeter_92C\n"); + + pdmpriv->TXPowercount = 0; + +} + + +static VOID +dm_InitializeTXPowerTracking_ThermalMeter( + IN PADAPTER Adapter) +{ + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); + struct dm_priv *pdmpriv = &pHalData->dmpriv; + + //pMgntInfo->bTXPowerTracking = _TRUE; + pdmpriv->TXPowercount = 0; + pdmpriv->bTXPowerTrackingInit = _FALSE; + pdmpriv->ThermalValue = 0; + +#if (MP_DRIVER != 1) //for mp driver, turn off txpwrtracking as default + pdmpriv->TxPowerTrackControl = _TRUE; +#endif + + MSG_8192C("pdmpriv->TxPowerTrackControl = %d\n", pdmpriv->TxPowerTrackControl); +} + + +static VOID +DM_InitializeTXPowerTracking( + IN PADAPTER Adapter) +{ + dm_InitializeTXPowerTracking_ThermalMeter(Adapter); +} + +// +// Description: +// - Dispatch TxPower Tracking direct call ONLY for 92s. +// - We shall NOT schedule Workitem within PASSIVE LEVEL, which will cause system resource +// leakage under some platform. +// +// Assumption: +// PASSIVE_LEVEL when this routine is called. +// +// Added by Roger, 2009.06.18. +// +static VOID +DM_TXPowerTracking92CDirectCall( + IN PADAPTER Adapter) +{ + dm_TXPowerTrackingCallback_ThermalMeter_92C(Adapter); +} + +static VOID +dm_CheckTXPowerTracking_ThermalMeter( + IN PADAPTER Adapter) +{ + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); + struct dm_priv *pdmpriv = &pHalData->dmpriv; + //u1Byte TxPowerCheckCnt = 5; //10 sec + + //if(!pMgntInfo->bTXPowerTracking /*|| (!pdmpriv->TxPowerTrackControl && pdmpriv->bAPKdone)*/) + if(!(pdmpriv->DMFlag & DYNAMIC_FUNC_SS)) + { + return; + } + + if(!pdmpriv->TM_Trigger) //at least delay 1 sec + { + //pHalData->TxPowerCheckCnt++; //cosa add for debug + PHY_SetRFReg(Adapter, RF_PATH_A, RF_T_METER, bRFRegOffsetMask, 0x60); + //DBG_8192C("Trigger 92C Thermal Meter!!\n"); + + pdmpriv->TM_Trigger = 1; + return; + + } + else + { + //DBG_8192C("Schedule TxPowerTracking direct call!!\n"); + DM_TXPowerTracking92CDirectCall(Adapter); //Using direct call is instead, added by Roger, 2009.06.18. + pdmpriv->TM_Trigger = 0; + } + +} + + +VOID +rtl8192c_dm_CheckTXPowerTracking( + IN PADAPTER Adapter) +{ + dm_CheckTXPowerTracking_ThermalMeter(Adapter); +} + +#ifdef CONFIG_BT_COEXIST +static BOOLEAN BT_BTStateChange(PADAPTER Adapter) +{ + PHAL_DATA_TYPE pHalData = GET_HAL_DATA(Adapter); + struct btcoexist_priv *pbtpriv = &(pHalData->bt_coexist); + struct registry_priv *registry_par = &Adapter->registrypriv; + + struct mlme_priv *pmlmepriv = &(Adapter->mlmepriv); + + u32 Polling, Ratio_Tx, Ratio_PRI; + u32 BT_Tx, BT_PRI; + u8 BT_State; + static u8 ServiceTypeCnt = 0; + u8 CurServiceType; + static u8 LastServiceType = BT_Idle; + + if(check_fwstate(pmlmepriv, _FW_LINKED) == _FALSE) + return _FALSE; + + BT_State = rtw_read8(Adapter, 0x4fd); +/* + temp = PlatformEFIORead4Byte(Adapter, 0x488); + BT_Tx = (u2Byte)(((temp<<8)&0xff00)+((temp>>8)&0xff)); + BT_PRI = (u2Byte)(((temp>>8)&0xff00)+((temp>>24)&0xff)); + + temp = PlatformEFIORead4Byte(Adapter, 0x48c); + Polling = ((temp<<8)&0xff000000) + ((temp>>8)&0x00ff0000) + + ((temp<<8)&0x0000ff00) + ((temp>>8)&0x000000ff); + +*/ + BT_Tx = rtw_read32(Adapter, 0x488); + + DBG_8192C("Ratio 0x488 =%x\n", BT_Tx); + BT_Tx =BT_Tx & 0x00ffffff; + //RTPRINT(FBT, BT_TRACE, ("Ratio BT_Tx =%x\n", BT_Tx)); + + BT_PRI = rtw_read32(Adapter, 0x48c); + + DBG_8192C("Ratio 0x48c =%x\n", BT_PRI); + BT_PRI =BT_PRI & 0x00ffffff; + //RTPRINT(FBT, BT_TRACE, ("Ratio BT_PRI =%x\n", BT_PRI)); + + + Polling = rtw_read32(Adapter, 0x490); + //RTPRINT(FBT, BT_TRACE, ("Ratio 0x490 =%x\n", Polling)); + + + if(BT_Tx==0xffffffff && BT_PRI==0xffffffff && Polling==0xffffffff && BT_State==0xff) + return _FALSE; + + BT_State &= BIT0; + + if(BT_State != pbtpriv->BT_CUR_State) + { + pbtpriv->BT_CUR_State = BT_State; + + if(registry_par->bt_sco == 3) + { + ServiceTypeCnt = 0; + + pbtpriv->BT_Service = BT_Idle; + + DBG_8192C("BT_%s\n", BT_State?"ON":"OFF"); + + BT_State = BT_State | + ((pbtpriv->BT_Ant_isolation==1)?0:BIT1) |BIT2; + + rtw_write8(Adapter, 0x4fd, BT_State); + DBG_8192C("BT set 0x4fd to %x\n", BT_State); + } + + return _TRUE; + } + DBG_8192C("bRegBT_Sco = %d\n",registry_par->bt_sco); + + Ratio_Tx = BT_Tx*1000/Polling; + Ratio_PRI = BT_PRI*1000/Polling; + + pbtpriv->Ratio_Tx=Ratio_Tx; + pbtpriv->Ratio_PRI=Ratio_PRI; + + DBG_8192C("Ratio_Tx=%d\n", Ratio_Tx); + DBG_8192C("Ratio_PRI=%d\n", Ratio_PRI); + + + if(BT_State && registry_par->bt_sco==3) + { + DBG_8192C("bt_sco ==3 Follow Counter\n"); +// if(BT_Tx==0xffff && BT_PRI==0xffff && Polling==0xffffffff) +// { +// ServiceTypeCnt = 0; +// return FALSE; +// } +// else + { + /* + Ratio_Tx = BT_Tx*1000/Polling; + Ratio_PRI = BT_PRI*1000/Polling; + + pHalData->bt_coexist.Ratio_Tx=Ratio_Tx; + pHalData->bt_coexist.Ratio_PRI=Ratio_PRI; + + RTPRINT(FBT, BT_TRACE, ("Ratio_Tx=%d\n", Ratio_Tx)); + RTPRINT(FBT, BT_TRACE, ("Ratio_PRI=%d\n", Ratio_PRI)); + + */ + if((Ratio_Tx < 30) && (Ratio_PRI < 30)) + CurServiceType = BT_Idle; + else if((Ratio_PRI > 110) && (Ratio_PRI < 250)) + CurServiceType = BT_SCO; + else if((Ratio_Tx >= 200)&&(Ratio_PRI >= 200)) + CurServiceType = BT_Busy; + else if((Ratio_Tx >=350) && (Ratio_Tx < 500)) + CurServiceType = BT_OtherBusy; + else if(Ratio_Tx >=500) + CurServiceType = BT_PAN; + else + CurServiceType=BT_OtherAction; + } + +/* if(pHalData->bt_coexist.bStopCount) + { + ServiceTypeCnt=0; + pHalData->bt_coexist.bStopCount=FALSE; + } +*/ +// if(CurServiceType == BT_OtherBusy) + { + ServiceTypeCnt=2; + LastServiceType=CurServiceType; + } +#if 0 + else if(CurServiceType == LastServiceType) + { + if(ServiceTypeCnt<3) + ServiceTypeCnt++; + } + else + { + ServiceTypeCnt = 0; + LastServiceType = CurServiceType; + } +#endif + + if(ServiceTypeCnt==2) + { + pbtpriv->BT_Service = LastServiceType; + BT_State = BT_State | + ((pbtpriv->BT_Ant_isolation==1)?0:BIT1) | + //((pbtpriv->BT_Service==BT_SCO)?0:BIT2); + ((pbtpriv->BT_Service!=BT_Idle)?0:BIT2); + + //if(pbtpriv->BT_Service==BT_Busy) + // BT_State&= ~(BIT2); + + if(pbtpriv->BT_Service==BT_SCO) + { + DBG_8192C("BT TYPE Set to ==> BT_SCO\n"); + } + else if(pbtpriv->BT_Service==BT_Idle) + { + DBG_8192C("BT TYPE Set to ==> BT_Idle\n"); + } + else if(pbtpriv->BT_Service==BT_OtherAction) + { + DBG_8192C("BT TYPE Set to ==> BT_OtherAction\n"); + } + else if(pbtpriv->BT_Service==BT_Busy) + { + DBG_8192C("BT TYPE Set to ==> BT_Busy\n"); + } + else if(pbtpriv->BT_Service==BT_PAN) + { + DBG_8192C("BT TYPE Set to ==> BT_PAN\n"); + } + else + { + DBG_8192C("BT TYPE Set to ==> BT_OtherBusy\n"); + } + + //Add interrupt migration when bt is not in idel state (no traffic). + //suggestion by Victor. + if(pbtpriv->BT_Service!=BT_Idle)//EDCA_VI_PARAM modify + { + + rtw_write16(Adapter, 0x504, 0x0ccc); + rtw_write8(Adapter, 0x506, 0x54); + rtw_write8(Adapter, 0x507, 0x54); + + } + else + { + rtw_write8(Adapter, 0x506, 0x00); + rtw_write8(Adapter, 0x507, 0x00); + } + + rtw_write8(Adapter, 0x4fd, BT_State); + DBG_8192C("BT_SCO set 0x4fd to %x\n", BT_State); + return _TRUE; + } + } + + return _FALSE; + +} + +static BOOLEAN +BT_WifiConnectChange( + IN PADAPTER Adapter + ) +{ + struct mlme_priv *pmlmepriv = &(Adapter->mlmepriv); +// PMGNT_INFO pMgntInfo = &Adapter->MgntInfo; + static BOOLEAN bMediaConnect = _FALSE; + + //if(!pMgntInfo->bMediaConnect || MgntRoamingInProgress(pMgntInfo)) + if(check_fwstate(pmlmepriv, _FW_LINKED) == _FALSE) + { + bMediaConnect = _FALSE; + } + else + { + if(!bMediaConnect) + { + bMediaConnect = _TRUE; + return _TRUE; + } + bMediaConnect = _TRUE; + } + + return _FALSE; +} + +#define BT_RSSI_STATE_NORMAL_POWER BIT0 +#define BT_RSSI_STATE_AMDPU_OFF BIT1 +#define BT_RSSI_STATE_SPECIAL_LOW BIT2 +#define BT_RSSI_STATE_BG_EDCA_LOW BIT3 + +static s32 GET_UNDECORATED_AVERAGE_RSSI(PADAPTER Adapter) +{ + PHAL_DATA_TYPE pHalData = GET_HAL_DATA(Adapter); + struct mlme_priv *pmlmepriv = &(Adapter->mlmepriv); + struct dm_priv *pdmpriv = &pHalData->dmpriv; + s32 average_rssi; + + if(check_fwstate(pmlmepriv, WIFI_ADHOC_STATE|WIFI_ADHOC_MASTER_STATE|WIFI_AP_STATE)) + { + average_rssi = pdmpriv->EntryMinUndecoratedSmoothedPWDB; + } + else + { + average_rssi = pdmpriv->UndecoratedSmoothedPWDB; + } + return average_rssi; +} + +static u8 BT_RssiStateChange( + IN PADAPTER Adapter + ) +{ + PHAL_DATA_TYPE pHalData = GET_HAL_DATA(Adapter); + struct mlme_priv *pmlmepriv = &(Adapter->mlmepriv); + struct btcoexist_priv *pbtpriv = &(pHalData->bt_coexist); + struct dm_priv *pdmpriv = &pHalData->dmpriv; + //PMGNT_INFO pMgntInfo = &Adapter->MgntInfo; + s32 UndecoratedSmoothedPWDB; + u8 CurrBtRssiState = 0x00; + + + + + //if(pMgntInfo->bMediaConnect) // Default port + if(check_fwstate(pmlmepriv, _FW_LINKED) == _TRUE) + { + UndecoratedSmoothedPWDB = GET_UNDECORATED_AVERAGE_RSSI(Adapter); + } + else // associated entry pwdb + { + if(pdmpriv->EntryMinUndecoratedSmoothedPWDB == 0) + UndecoratedSmoothedPWDB = 100; // No any RSSI information. Assume to be MAX. + else + UndecoratedSmoothedPWDB = pdmpriv->EntryMinUndecoratedSmoothedPWDB; + } + + // Check RSSI to determine HighPower/NormalPower state for BT coexistence. + if(UndecoratedSmoothedPWDB >= 67) + CurrBtRssiState &= (~BT_RSSI_STATE_NORMAL_POWER); + else if(UndecoratedSmoothedPWDB < 62) + CurrBtRssiState |= BT_RSSI_STATE_NORMAL_POWER; + + // Check RSSI to determine AMPDU setting for BT coexistence. + if(UndecoratedSmoothedPWDB >= 40) + CurrBtRssiState &= (~BT_RSSI_STATE_AMDPU_OFF); + else if(UndecoratedSmoothedPWDB <= 32) + CurrBtRssiState |= BT_RSSI_STATE_AMDPU_OFF; + + // Marked RSSI state. It will be used to determine BT coexistence setting later. + if(UndecoratedSmoothedPWDB < 35) + CurrBtRssiState |= BT_RSSI_STATE_SPECIAL_LOW; + else + CurrBtRssiState &= (~BT_RSSI_STATE_SPECIAL_LOW); + + // Check BT state related to BT_Idle in B/G mode. + if(UndecoratedSmoothedPWDB < 15) + CurrBtRssiState |= BT_RSSI_STATE_BG_EDCA_LOW; + else + CurrBtRssiState &= (~BT_RSSI_STATE_BG_EDCA_LOW); + + if(CurrBtRssiState != pbtpriv->BtRssiState) + { + pbtpriv->BtRssiState = CurrBtRssiState; + return _TRUE; + } + else + { + return _FALSE; + } +} + +static void dm_BTCoexist(PADAPTER Adapter ) +{ + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); + struct dm_priv *pdmpriv = &pHalData->dmpriv; + struct mlme_priv *pmlmepriv = &(Adapter->mlmepriv); + struct mlme_ext_info *pmlmeinfo = &Adapter->mlmeextpriv.mlmext_info; + struct mlme_ext_priv *pmlmeext = &Adapter->mlmeextpriv; + + struct btcoexist_priv *pbtpriv = &(pHalData->bt_coexist); + //PMGNT_INFO pMgntInfo = &Adapter->MgntInfo; + //PRT_HIGH_THROUGHPUT pHTInfo = GET_HT_INFO(pMgntInfo); + + //PRX_TS_RECORD pRxTs = NULL; + u8 BT_gpio_mux; + + BOOLEAN bWifiConnectChange, bBtStateChange,bRssiStateChange; + + if(pbtpriv->bCOBT == _FALSE) return; + + if(!( pdmpriv->DMFlag & DYNAMIC_FUNC_BT)) return; + + if( (pbtpriv->BT_Coexist) &&(pbtpriv->BT_CoexistType == BT_CSR_BC4) && (check_fwstate(pmlmepriv, WIFI_AP_STATE) == _FALSE) ) + { + bWifiConnectChange = BT_WifiConnectChange(Adapter); + bBtStateChange = BT_BTStateChange(Adapter); + bRssiStateChange = BT_RssiStateChange(Adapter); + + DBG_8192C("bWifiConnectChange %d, bBtStateChange %d,bRssiStateChange %d\n", + bWifiConnectChange,bBtStateChange,bRssiStateChange); + + // add by hpfan for debug message + BT_gpio_mux = rtw_read8(Adapter, REG_GPIO_MUXCFG); + DBG_8192C("BTCoexit Reg_0x40 (%2x)\n", BT_gpio_mux); + + if( bWifiConnectChange ||bBtStateChange ||bRssiStateChange ) + { + if(pbtpriv->BT_CUR_State) + { + + // Do not allow receiving A-MPDU aggregation. + if(pbtpriv->BT_Ampdu)// 0:Disable BT control A-MPDU, 1:Enable BT control A-MPDU. + { + + if(pmlmeinfo->assoc_AP_vendor == ciscoAP) + { + if(pbtpriv->BT_Service!=BT_Idle) + { + if(pmlmeinfo->bAcceptAddbaReq) + { + DBG_8192C("BT_Disallow AMPDU \n"); + pmlmeinfo->bAcceptAddbaReq = _FALSE; + send_delba(Adapter,0, get_my_bssid(&(pmlmeinfo->network))); + } + } + else + { + if(!pmlmeinfo->bAcceptAddbaReq) + { + DBG_8192C("BT_Allow AMPDU RSSI >=40\n"); + pmlmeinfo->bAcceptAddbaReq = _TRUE; + } + } + } + else + { + if(!pmlmeinfo->bAcceptAddbaReq) + { + DBG_8192C("BT_Allow AMPDU BT Idle\n"); + pmlmeinfo->bAcceptAddbaReq = _TRUE; + } + } + } + +#if 0 + else if((pHalData->bt_coexist.BT_Service==BT_SCO) || (pHalData->bt_coexist.BT_Service==BT_Busy)) + { + if(pHalData->bt_coexist.BtRssiState & BT_RSSI_STATE_AMDPU_OFF) + { + if(pMgntInfo->bBT_Ampdu && pHTInfo->bAcceptAddbaReq) + { + RTPRINT(FBT, BT_TRACE, ("BT_Disallow AMPDU RSSI <=32\n")); + pHTInfo->bAcceptAddbaReq = FALSE; + if(GetTs(Adapter, (PTS_COMMON_INFO*)(&pRxTs), pMgntInfo->Bssid, 0, RX_DIR, FALSE)) + TsInitDelBA(Adapter, (PTS_COMMON_INFO)pRxTs, RX_DIR); + } + } + else + { + if(pMgntInfo->bBT_Ampdu && !pHTInfo->bAcceptAddbaReq) + { + RTPRINT(FBT, BT_TRACE, ("BT_Allow AMPDU RSSI >=40\n")); + pHTInfo->bAcceptAddbaReq = TRUE; + } + } + } + else + { + if(pMgntInfo->bBT_Ampdu && !pHTInfo->bAcceptAddbaReq) + { + RTPRINT(FBT, BT_TRACE, ("BT_Allow AMPDU BT not in SCO or BUSY\n")); + pHTInfo->bAcceptAddbaReq = TRUE; + } + } +#endif + + if(pbtpriv->BT_Ant_isolation) + { + DBG_8192C("BT_IsolationLow\n"); + +// 20100427 Joseph: Do not adjust Rate adaptive for BT coexist suggested by SD3. +#if 0 + RTPRINT(FBT, BT_TRACE, ("BT_Update Rate table\n")); + if(pMgntInfo->bUseRAMask) + { + // 20100407 Joseph: Fix rate adaptive modification for BT coexist. + // This fix is not complete yet. It shall also consider VWifi and Adhoc case, + // which connect with multiple STAs. + Adapter->HalFunc.UpdateHalRAMaskHandler( + Adapter, + FALSE, + 0, + NULL, + NULL, + pMgntInfo->RateAdaptive.RATRState, + RAMask_Normal); + } + else + { + Adapter->HalFunc.UpdateHalRATRTableHandler( + Adapter, + &pMgntInfo->dot11OperationalRateSet, + pMgntInfo->dot11HTOperationalRateSet,NULL); + } +#endif + + // 20100415 Joseph: Modify BT coexist mechanism suggested by Yaying. + // Now we only enable HW BT coexist when BT in "Busy" state. + if(1)//pMgntInfo->LinkDetectInfo.NumRecvDataInPeriod >= 20) + { + if((pmlmeinfo->assoc_AP_vendor == ciscoAP) && + pbtpriv->BT_Service==BT_OtherAction) + { + DBG_8192C("BT_Turn ON Coexist\n"); + rtw_write8(Adapter, REG_GPIO_MUXCFG, 0xa0); + } + else + { + if((pbtpriv->BT_Service==BT_Busy) && + (pbtpriv->BtRssiState & BT_RSSI_STATE_NORMAL_POWER)) + { + DBG_8192C("BT_Turn ON Coexist\n"); + rtw_write8(Adapter, REG_GPIO_MUXCFG, 0xa0); + } + else if((pbtpriv->BT_Service==BT_OtherAction) && + (pbtpriv->BtRssiState & BT_RSSI_STATE_SPECIAL_LOW)) + { + DBG_8192C("BT_Turn ON Coexist\n"); + rtw_write8(Adapter, REG_GPIO_MUXCFG, 0xa0); + } + else if(pbtpriv->BT_Service==BT_PAN) + { + DBG_8192C("BT_Turn ON Coexist\n"); + rtw_write8(Adapter, REG_GPIO_MUXCFG, 0x00); + } + else + { + DBG_8192C("BT_Turn OFF Coexist\n"); + rtw_write8(Adapter, REG_GPIO_MUXCFG, 0x00); + } + } + } + else + { + DBG_8192C("BT: There is no Wifi traffic!! Turn off Coexist\n"); + rtw_write8(Adapter, REG_GPIO_MUXCFG, 0x00); + } + + if(1)//pMgntInfo->LinkDetectInfo.NumRecvDataInPeriod >= 20) + { + if(pbtpriv->BT_Service==BT_PAN) + { + DBG_8192C("BT_Turn ON Coexist(Reg0x44 = 0x10100)\n"); + rtw_write32(Adapter, REG_GPIO_PIN_CTRL, 0x10100); + } + else + { + DBG_8192C("BT_Turn OFF Coexist(Reg0x44 = 0x0)\n"); + rtw_write32(Adapter, REG_GPIO_PIN_CTRL, 0x0); + } + } + else + { + DBG_8192C("BT: There is no Wifi traffic!! Turn off Coexist(Reg0x44 = 0x0)\n"); + rtw_write32(Adapter, REG_GPIO_PIN_CTRL, 0x0); + } + + // 20100430 Joseph: Integrate the BT coexistence EDCA tuning here. + if(pbtpriv->BtRssiState & BT_RSSI_STATE_NORMAL_POWER) + { + if(pbtpriv->BT_Service==BT_OtherBusy) + { + //pbtpriv->BtEdcaUL = 0x5ea72b; + //pbtpriv->BtEdcaDL = 0x5ea72b; + pbtpriv->BT_EDCA[UP_LINK] = 0x5ea72b; + pbtpriv->BT_EDCA[DOWN_LINK] = 0x5ea72b; + + DBG_8192C("BT in BT_OtherBusy state Tx (%d) >350 parameter(0x%x) = 0x%x\n", pbtpriv->Ratio_Tx ,REG_EDCA_BE_PARAM, 0x5ea72b); + } + else if(pbtpriv->BT_Service==BT_Busy) + { + //pbtpriv->BtEdcaUL = 0x5eb82f; + //pbtpriv->BtEdcaDL = 0x5eb82f; + + pbtpriv->BT_EDCA[UP_LINK] = 0x5eb82f; + pbtpriv->BT_EDCA[DOWN_LINK] = 0x5eb82f; + + DBG_8192C("BT in BT_Busy state parameter(0x%x) = 0x%x\n", REG_EDCA_BE_PARAM, 0x5eb82f); + } + else if(pbtpriv->BT_Service==BT_SCO) + { + if(pbtpriv->Ratio_Tx>160) + { + //pbtpriv->BtEdcaUL = 0x5ea72f; + //pbtpriv->BtEdcaDL = 0x5ea72f; + pbtpriv->BT_EDCA[UP_LINK] = 0x5ea72f; + pbtpriv->BT_EDCA[DOWN_LINK] = 0x5ea72f; + DBG_8192C("BT in BT_SCO state Tx (%d) >160 parameter(0x%x) = 0x%x\n",pbtpriv->Ratio_Tx, REG_EDCA_BE_PARAM, 0x5ea72f); + } + else + { + //pbtpriv->BtEdcaUL = 0x5ea32b; + //pbtpriv->BtEdcaDL = 0x5ea42b; + + pbtpriv->BT_EDCA[UP_LINK] = 0x5ea32b; + pbtpriv->BT_EDCA[DOWN_LINK] = 0x5ea42b; + + DBG_8192C("BT in BT_SCO state Tx (%d) <160 parameter(0x%x) = 0x%x\n", pbtpriv->Ratio_Tx,REG_EDCA_BE_PARAM, 0x5ea32f); + } + } + else + { + // BT coexistence mechanism does not control EDCA parameter. + //pbtpriv->BtEdcaUL = 0; + //pbtpriv->BtEdcaDL = 0; + + pbtpriv->BT_EDCA[UP_LINK] = 0; + pbtpriv->BT_EDCA[DOWN_LINK] = 0; + DBG_8192C("BT in State %d and parameter(0x%x) use original setting.\n",pbtpriv->BT_Service, REG_EDCA_BE_PARAM); + } + + if((pbtpriv->BT_Service!=BT_Idle) && + (pmlmeext->cur_wireless_mode == WIRELESS_MODE_G) && + (pbtpriv->BtRssiState & BT_RSSI_STATE_BG_EDCA_LOW)) + { + //pbtpriv->BtEdcaUL = 0x5eb82b; + //pbtpriv->BtEdcaDL = 0x5eb82b; + + pbtpriv->BT_EDCA[UP_LINK] = 0x5eb82b; + pbtpriv->BT_EDCA[DOWN_LINK] = 0x5eb82b; + + DBG_8192C("BT set parameter(0x%x) = 0x%x\n", REG_EDCA_BE_PARAM, 0x5eb82b); + } + } + else + { + // BT coexistence mechanism does not control EDCA parameter. + //pbtpriv->BtEdcaUL = 0; + //pbtpriv->BtEdcaDL = 0; + + pbtpriv->BT_EDCA[UP_LINK] = 0; + pbtpriv->BT_EDCA[DOWN_LINK] = 0; + } + + // 20100415 Joseph: Set RF register 0x1E and 0x1F for BT coexist suggested by Yaying. + if(pbtpriv->BT_Service!=BT_Idle) + { + DBG_8192C("BT Set RfReg0x1E[7:4] = 0x%x \n", 0xf); + PHY_SetRFReg(Adapter, PathA, 0x1e, 0xf0, 0xf); + //RTPRINT(FBT, BT_TRACE, ("BT Set RfReg0x1E[7:4] = 0x%x \n", 0xf)); + //PHY_SetRFReg(Adapter, PathA, 0x1f, 0xf0, 0xf); + } + else + { + DBG_8192C("BT Set RfReg0x1E[7:4] = 0x%x \n",pbtpriv->BtRfRegOrigin1E); + PHY_SetRFReg(Adapter, PathA, 0x1e, 0xf0, pbtpriv->BtRfRegOrigin1E); + //RTPRINT(FBT, BT_TRACE, ("BT Set RfReg0x1F[7:4] = 0x%x \n", pHalData->bt_coexist.BtRfRegOrigin1F)); + //PHY_SetRFReg(Adapter, PathA, 0x1f, 0xf0, pHalData->bt_coexist.BtRfRegOrigin1F); + } + } + else + { + DBG_8192C("BT_IsolationHigh\n"); + // Do nothing. + } + } + else + { + + if(pbtpriv->BT_Ampdu && !pmlmeinfo->bAcceptAddbaReq) + { + DBG_8192C("BT_Allow AMPDU bt is off\n"); + pmlmeinfo->bAcceptAddbaReq = _TRUE; + } + + DBG_8192C("BT_Turn OFF Coexist bt is off \n"); + rtw_write8(Adapter, REG_GPIO_MUXCFG, 0x00); + + DBG_8192C("BT Set RfReg0x1E[7:4] = 0x%x \n", pbtpriv->BtRfRegOrigin1E); + PHY_SetRFReg(Adapter, PathA, 0x1e, 0xf0, pbtpriv->BtRfRegOrigin1E); + //RTPRINT(FBT, BT_TRACE, ("BT Set RfReg0x1F[7:4] = 0x%x \n", pHalData->bt_coexist.BtRfRegOrigin1F)); + //PHY_SetRFReg(Adapter, PathA, 0x1f, 0xf0, pHalData->bt_coexist.BtRfRegOrigin1F); + + // BT coexistence mechanism does not control EDCA parameter since BT is disabled. + //pbtpriv->BtEdcaUL = 0; + //pbtpriv->BtEdcaDL = 0; + pbtpriv->BT_EDCA[UP_LINK] = 0; + pbtpriv->BT_EDCA[DOWN_LINK] = 0; + + +// 20100427 Joseph: Do not adjust Rate adaptive for BT coexist suggested by SD3. +#if 0 + RTPRINT(FBT, BT_TRACE, ("BT_Update Rate table\n")); + if(pMgntInfo->bUseRAMask) + { + // 20100407 Joseph: Fix rate adaptive modification for BT coexist. + // This fix is not complete yet. It shall also consider VWifi and Adhoc case, + // which connect with multiple STAs. + Adapter->HalFunc.UpdateHalRAMaskHandler( + Adapter, + FALSE, + 0, + NULL, + NULL, + pMgntInfo->RateAdaptive.RATRState, + RAMask_Normal); + } + else + { + Adapter->HalFunc.UpdateHalRATRTableHandler( + Adapter, + &pMgntInfo->dot11OperationalRateSet, + pMgntInfo->dot11HTOperationalRateSet,NULL); + } +#endif + } + } + } +} + +static void dm_InitBtCoexistDM( PADAPTER Adapter) +{ + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); + struct btcoexist_priv *pbtpriv = &(pHalData->bt_coexist); + + if( !pbtpriv->BT_Coexist ) return; + + pbtpriv->BtRfRegOrigin1E = (u8)PHY_QueryRFReg(Adapter, PathA, 0x1e, 0xf0); + pbtpriv->BtRfRegOrigin1F = (u8)PHY_QueryRFReg(Adapter, PathA, 0x1f, 0xf0); +} + +void rtl8192c_set_dm_bt_coexist(_adapter *padapter, u8 bStart) +{ + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(padapter); + struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; + struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info); + struct btcoexist_priv *pbtpriv = &(pHalData->bt_coexist); + + pbtpriv->bCOBT = bStart; + send_delba(padapter,0, get_my_bssid(&(pmlmeinfo->network))); + send_delba(padapter,1, get_my_bssid(&(pmlmeinfo->network))); + +} + +void rtl8192c_issue_delete_ba(_adapter *padapter, u8 dir) +{ + struct mlme_ext_info *pmlmeinfo = &padapter->mlmeextpriv.mlmext_info; + DBG_8192C("issue_delete_ba : %s...\n",(dir==0)?"RX_DIR":"TX_DIR"); + send_delba(padapter,dir, get_my_bssid(&(pmlmeinfo->network))); +} + +#endif + +#if 0//def CONFIG_PCI_HCI + +BOOLEAN +BT_BTStateChange( + IN PADAPTER Adapter + ) +{ + PHAL_DATA_TYPE pHalData = GET_HAL_DATA(Adapter); + PMGNT_INFO pMgntInfo = &Adapter->MgntInfo; + + u4Byte temp, Polling, Ratio_Tx, Ratio_PRI; + u4Byte BT_Tx, BT_PRI; + u1Byte BT_State; + static u1Byte ServiceTypeCnt = 0; + u1Byte CurServiceType; + static u1Byte LastServiceType = BT_Idle; + + if(!pMgntInfo->bMediaConnect) + return FALSE; + + BT_State = PlatformEFIORead1Byte(Adapter, 0x4fd); +/* + temp = PlatformEFIORead4Byte(Adapter, 0x488); + BT_Tx = (u2Byte)(((temp<<8)&0xff00)+((temp>>8)&0xff)); + BT_PRI = (u2Byte)(((temp>>8)&0xff00)+((temp>>24)&0xff)); + + temp = PlatformEFIORead4Byte(Adapter, 0x48c); + Polling = ((temp<<8)&0xff000000) + ((temp>>8)&0x00ff0000) + + ((temp<<8)&0x0000ff00) + ((temp>>8)&0x000000ff); + +*/ + BT_Tx = PlatformEFIORead4Byte(Adapter, 0x488); + + RTPRINT(FBT, BT_TRACE, ("Ratio 0x488 =%x\n", BT_Tx)); + BT_Tx =BT_Tx & 0x00ffffff; + //RTPRINT(FBT, BT_TRACE, ("Ratio BT_Tx =%x\n", BT_Tx)); + + BT_PRI = PlatformEFIORead4Byte(Adapter, 0x48c); + + RTPRINT(FBT, BT_TRACE, ("Ratio Ratio 0x48c =%x\n", BT_PRI)); + BT_PRI =BT_PRI & 0x00ffffff; + //RTPRINT(FBT, BT_TRACE, ("Ratio BT_PRI =%x\n", BT_PRI)); + + + Polling = PlatformEFIORead4Byte(Adapter, 0x490); + //RTPRINT(FBT, BT_TRACE, ("Ratio 0x490 =%x\n", Polling)); + + + if(BT_Tx==0xffffffff && BT_PRI==0xffffffff && Polling==0xffffffffff && BT_State==0xff) + return FALSE; + + BT_State &= BIT0; + + if(BT_State != pHalData->bt_coexist.BT_CUR_State) + { + pHalData->bt_coexist.BT_CUR_State = BT_State; + + if(pMgntInfo->bRegBT_Sco == 3) + { + ServiceTypeCnt = 0; + + pHalData->bt_coexist.BT_Service = BT_Idle; + + RTPRINT(FBT, BT_TRACE, ("BT_%s\n", BT_State?"ON":"OFF")); + + BT_State = BT_State | + ((pHalData->bt_coexist.BT_Ant_isolation==1)?0:BIT1) |BIT2; + + PlatformEFIOWrite1Byte(Adapter, 0x4fd, BT_State); + RTPRINT(FBT, BT_TRACE, ("BT set 0x4fd to %x\n", BT_State)); + } + + return TRUE; + } + RTPRINT(FBT, BT_TRACE, ("bRegBT_Sco %d\n", pMgntInfo->bRegBT_Sco)); + + Ratio_Tx = BT_Tx*1000/Polling; + Ratio_PRI = BT_PRI*1000/Polling; + + pHalData->bt_coexist.Ratio_Tx=Ratio_Tx; + pHalData->bt_coexist.Ratio_PRI=Ratio_PRI; + + RTPRINT(FBT, BT_TRACE, ("Ratio_Tx=%d\n", Ratio_Tx)); + RTPRINT(FBT, BT_TRACE, ("Ratio_PRI=%d\n", Ratio_PRI)); + + + if(BT_State && pMgntInfo->bRegBT_Sco==3) + { + RTPRINT(FBT, BT_TRACE, ("bRegBT_Sco ==3 Follow Counter\n")); +// if(BT_Tx==0xffff && BT_PRI==0xffff && Polling==0xffffffff) +// { +// ServiceTypeCnt = 0; +// return FALSE; +// } +// else + { + /* + Ratio_Tx = BT_Tx*1000/Polling; + Ratio_PRI = BT_PRI*1000/Polling; + + pHalData->bt_coexist.Ratio_Tx=Ratio_Tx; + pHalData->bt_coexist.Ratio_PRI=Ratio_PRI; + + RTPRINT(FBT, BT_TRACE, ("Ratio_Tx=%d\n", Ratio_Tx)); + RTPRINT(FBT, BT_TRACE, ("Ratio_PRI=%d\n", Ratio_PRI)); + + */ + if((Ratio_Tx <= 50) && (Ratio_PRI <= 50)) + CurServiceType = BT_Idle; + else if((Ratio_PRI > 150) && (Ratio_PRI < 200)) + CurServiceType = BT_SCO; + else if((Ratio_Tx >= 200)&&(Ratio_PRI >= 200)) + CurServiceType = BT_Busy; + else if(Ratio_Tx >= 350) + CurServiceType = BT_OtherBusy; + else + CurServiceType=BT_OtherAction; + + } +/* if(pHalData->bt_coexist.bStopCount) + { + ServiceTypeCnt=0; + pHalData->bt_coexist.bStopCount=FALSE; + } +*/ + if(CurServiceType == BT_OtherBusy) + { + ServiceTypeCnt=2; + LastServiceType=CurServiceType; + } + else if(CurServiceType == LastServiceType) + { + if(ServiceTypeCnt<3) + ServiceTypeCnt++; + } + else + { + ServiceTypeCnt = 0; + LastServiceType = CurServiceType; + } + + if(ServiceTypeCnt==2) + { + pHalData->bt_coexist.BT_Service = LastServiceType; + BT_State = BT_State | + ((pHalData->bt_coexist.BT_Ant_isolation==1)?0:BIT1) | + ((pHalData->bt_coexist.BT_Service==BT_SCO)?0:BIT2); + + if(pHalData->bt_coexist.BT_Service==BT_Busy) + BT_State&= ~(BIT2); + + if(pHalData->bt_coexist.BT_Service==BT_SCO) + { + RTPRINT(FBT, BT_TRACE, ("BT TYPE Set to ==> BT_SCO\n")); + } + else if(pHalData->bt_coexist.BT_Service==BT_Idle) + { + RTPRINT(FBT, BT_TRACE, ("BT TYPE Set to ==> BT_Idle\n")); + } + else if(pHalData->bt_coexist.BT_Service==BT_OtherAction) + { + RTPRINT(FBT, BT_TRACE, ("BT TYPE Set to ==> BT_OtherAction\n")); + } + else if(pHalData->bt_coexist.BT_Service==BT_Busy) + { + RTPRINT(FBT, BT_TRACE, ("BT TYPE Set to ==> BT_Busy\n")); + } + else + { + RTPRINT(FBT, BT_TRACE, ("BT TYPE Set to ==> BT_OtherBusy\n")); + } + + //Add interrupt migration when bt is not in idel state (no traffic). + //suggestion by Victor. + if(pHalData->bt_coexist.BT_Service!=BT_Idle) + { + + PlatformEFIOWrite2Byte(Adapter, 0x504, 0x0ccc); + PlatformEFIOWrite1Byte(Adapter, 0x506, 0x54); + PlatformEFIOWrite1Byte(Adapter, 0x507, 0x54); + + } + else + { + PlatformEFIOWrite1Byte(Adapter, 0x506, 0x00); + PlatformEFIOWrite1Byte(Adapter, 0x507, 0x00); + } + + PlatformEFIOWrite1Byte(Adapter, 0x4fd, BT_State); + RTPRINT(FBT, BT_TRACE, ("BT_SCO set 0x4fd to %x\n", BT_State)); + return TRUE; + } + } + + return FALSE; + +} + +BOOLEAN +BT_WifiConnectChange( + IN PADAPTER Adapter + ) +{ + PMGNT_INFO pMgntInfo = &Adapter->MgntInfo; + static BOOLEAN bMediaConnect = FALSE; + + if(!pMgntInfo->bMediaConnect || MgntRoamingInProgress(pMgntInfo)) + { + bMediaConnect = FALSE; + } + else + { + if(!bMediaConnect) + { + bMediaConnect = TRUE; + return TRUE; + } + bMediaConnect = TRUE; + } + + return FALSE; +} + +BOOLEAN +BT_RSSIChangeWithAMPDU( + IN PADAPTER Adapter + ) +{ + PMGNT_INFO pMgntInfo = &Adapter->MgntInfo; + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); + + if(!Adapter->pNdisCommon->bRegBT_Ampdu || !Adapter->pNdisCommon->bRegAcceptAddbaReq) + return FALSE; + + RTPRINT(FBT, BT_TRACE, ("RSSI is %d\n",pHalData->UndecoratedSmoothedPWDB)); + + if((pHalData->UndecoratedSmoothedPWDB<=32) && pMgntInfo->pHTInfo->bAcceptAddbaReq) + { + RTPRINT(FBT, BT_TRACE, ("BT_Disallow AMPDU RSSI <=32 Need change\n")); + return TRUE; + + } + else if((pHalData->UndecoratedSmoothedPWDB>=40) && !pMgntInfo->pHTInfo->bAcceptAddbaReq ) + { + RTPRINT(FBT, BT_TRACE, ("BT_Allow AMPDU RSSI >=40, Need change\n")); + return TRUE; + } + else + return FALSE; + +} + + +VOID +dm_BTCoexist( + IN PADAPTER Adapter + ) +{ + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); + PMGNT_INFO pMgntInfo = &Adapter->MgntInfo; + static u1Byte LastTxPowerLvl = 0xff; + PRX_TS_RECORD pRxTs = NULL; + + BOOLEAN bWifiConnectChange, bBtStateChange,bRSSIChangeWithAMPDU; + + if( (pHalData->bt_coexist.BluetoothCoexist) && + (pHalData->bt_coexist.BT_CoexistType == BT_CSR_BC4) && + (!ACTING_AS_AP(Adapter)) ) + { + bWifiConnectChange = BT_WifiConnectChange(Adapter); + bBtStateChange = BT_BTStateChange(Adapter); + bRSSIChangeWithAMPDU = BT_RSSIChangeWithAMPDU(Adapter); + RTPRINT(FBT, BT_TRACE, ("bWifiConnectChange %d, bBtStateChange %d,LastTxPowerLvl %x, DynamicTxHighPowerLvl %x\n", + bWifiConnectChange,bBtStateChange,LastTxPowerLvl,pHalData->DynamicTxHighPowerLvl)); + if( bWifiConnectChange ||bBtStateChange || + (LastTxPowerLvl != pHalData->DynamicTxHighPowerLvl) ||bRSSIChangeWithAMPDU) + { + LastTxPowerLvl = pHalData->DynamicTxHighPowerLvl; + + if(pHalData->bt_coexist.BT_CUR_State) + { + // Do not allow receiving A-MPDU aggregation. + if((pHalData->bt_coexist.BT_Service==BT_SCO) || (pHalData->bt_coexist.BT_Service==BT_Busy)) + { + if(pHalData->UndecoratedSmoothedPWDB<=32) + { + if(Adapter->pNdisCommon->bRegBT_Ampdu && Adapter->pNdisCommon->bRegAcceptAddbaReq) + { + RTPRINT(FBT, BT_TRACE, ("BT_Disallow AMPDU RSSI <=32\n")); + pMgntInfo->pHTInfo->bAcceptAddbaReq = FALSE; + if(GetTs(Adapter, (PTS_COMMON_INFO*)(&pRxTs), pMgntInfo->Bssid, 0, RX_DIR, FALSE)) + TsInitDelBA(Adapter, (PTS_COMMON_INFO)pRxTs, RX_DIR); + } + } + else if(pHalData->UndecoratedSmoothedPWDB>=40) + { + if(Adapter->pNdisCommon->bRegBT_Ampdu && Adapter->pNdisCommon->bRegAcceptAddbaReq) + { + RTPRINT(FBT, BT_TRACE, ("BT_Allow AMPDU RSSI >=40\n")); + pMgntInfo->pHTInfo->bAcceptAddbaReq = TRUE; + } + } + } + else + { + if(Adapter->pNdisCommon->bRegBT_Ampdu && Adapter->pNdisCommon->bRegAcceptAddbaReq) + { + RTPRINT(FBT, BT_TRACE, ("BT_Allow AMPDU BT not in SCO or BUSY\n")); + pMgntInfo->pHTInfo->bAcceptAddbaReq = TRUE; + } + } + + if(pHalData->bt_coexist.BT_Ant_isolation) + { + RTPRINT(FBT, BT_TRACE, ("BT_IsolationLow\n")); + RTPRINT(FBT, BT_TRACE, ("BT_Update Rate table\n")); + Adapter->HalFunc.UpdateHalRATRTableHandler( + Adapter, + &pMgntInfo->dot11OperationalRateSet, + pMgntInfo->dot11HTOperationalRateSet,NULL); + + if(pHalData->bt_coexist.BT_Service==BT_SCO) + { + + RTPRINT(FBT, BT_TRACE, ("BT_Turn OFF Coexist with SCO \n")); + PlatformEFIOWrite1Byte(Adapter, REG_GPIO_MUXCFG, 0x14); + } + else if(pHalData->DynamicTxHighPowerLvl == TxHighPwrLevel_Normal) + { + RTPRINT(FBT, BT_TRACE, ("BT_Turn ON Coexist\n")); + PlatformEFIOWrite1Byte(Adapter, REG_GPIO_MUXCFG, 0xb4); + } + else + { + RTPRINT(FBT, BT_TRACE, ("BT_Turn OFF Coexist\n")); + PlatformEFIOWrite1Byte(Adapter, REG_GPIO_MUXCFG, 0x14); + } + } + else + { + RTPRINT(FBT, BT_TRACE, ("BT_IsolationHigh\n")); + // Do nothing. + } + } + else + { + if(Adapter->pNdisCommon->bRegBT_Ampdu && Adapter->pNdisCommon->bRegAcceptAddbaReq) + { + RTPRINT(FBT, BT_TRACE, ("BT_Allow AMPDU bt is off\n")); + pMgntInfo->pHTInfo->bAcceptAddbaReq = TRUE; + } + + RTPRINT(FBT, BT_TRACE, ("BT_Turn OFF Coexist bt is off \n")); + PlatformEFIOWrite1Byte(Adapter, REG_GPIO_MUXCFG, 0x14); + + RTPRINT(FBT, BT_TRACE, ("BT_Update Rate table\n")); + Adapter->HalFunc.UpdateHalRATRTableHandler( + Adapter, + &pMgntInfo->dot11OperationalRateSet, + pMgntInfo->dot11HTOperationalRateSet,NULL); + } + } + } +} +#endif + + +/*----------------------------------------------------------------------------- + * Function: dm_CheckRfCtrlGPIO() + * + * Overview: Copy 8187B template for 9xseries. + * + * Input: NONE + * + * Output: NONE + * + * Return: NONE + * + * Revised History: + * When Who Remark + * 01/10/2008 MHC Create Version 0. + * + *---------------------------------------------------------------------------*/ +static VOID +dm_CheckRfCtrlGPIO( + IN PADAPTER Adapter + ) +{ +#if 0 + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); +#if defined (CONFIG_USB_HCI) || defined (CONFIG_SDIO_HCI) + #ifdef CONFIG_USB_HCI + // 2010/08/12 MH Add for CU selective suspend. + PRT_USB_DEVICE pDevice = GET_RT_USB_DEVICE(Adapter); + #else + PRT_SDIO_DEVICE pDevice = GET_RT_SDIO_DEVICE(Adapter); + #endif +#endif + + if(!Adapter->MgntInfo.PowerSaveControl.bGpioRfSw) + return; + + RTPRINT(FPWR, PWRHW, ("dm_CheckRfCtrlGPIO \n")); + +#if defined (CONFIG_USB_HCI) || defined (CONFIG_SDIO_HCI) + // Walk around for DTM test, we will not enable HW - radio on/off because r/w + // page 1 register before Lextra bus is enabled cause system fails when resuming + // from S4. 20080218, Emily + if(Adapter->bInHctTest) + return; + +//#if ((HAL_CODE_BASE == RTL8192_S) ) + //Adapter->HalFunc.GPIOChangeRFHandler(Adapter, GPIORF_POLLING); +//#else + // 2010/07/27 MH Only Minicard and support selective suspend, we can not turn off all MAC power to + // stop 8051. For dongle and minicard, we both support selective suspend mode. + //if(pDevice->RegUsbSS && Adapter->HalFunc.GetInterfaceSelectionHandler(Adapter) == INTF_SEL2_MINICARD) + + // + // 2010/08/12 MH We support severl power consumption combination as below. + // + // Power consumption combination + // SS Enable: (LPS disable + IPS + SW/HW radio off) + // 1. Dongle + PDN (support HW radio off) + // 2. Dongle + Normal (No HW radio off) + // 3. MiniCard + PDN (support HW radio off) + // 4. MiniCard + Normal (support HW radio off) + // + // SS Disable: (LPS + IPS + SW/HW radio off) + // 1. Dongle + PDN (support HW radio off) + // 2. Dongle + Normal (No HW radio off) + // 3. MiniCard + PDN (support HW radio off) + // 4. MiniCard + Normal (support HW radio off) + // + // For Power down module detection. We need to read power register no matter + // dongle or minicard, we will add the item is the detection method. + // + // + //vivi add du case + if ((IS_HARDWARE_TYPE_8192CU(Adapter)||IS_HARDWARE_TYPE_8192DU(Adapter)) + && pDevice->RegUsbSS) + { + RT_TRACE(COMP_RF, DBG_LOUD, ("USB SS Enabled\n")); + if (SUPPORT_HW_RADIO_DETECT(Adapter)) + { // Support HW radio detection + RT_TRACE(COMP_RF, DBG_LOUD, ("USB Card Type 2/3/4 support GPIO Detect\n")); + GpioDetectTimerStart(Adapter); + } + else + { // Dongle does not support HW radio detection.?? In the fufure?? + RT_TRACE(COMP_RF, DBG_LOUD, ("USB DONGLE Non-GPIO-Detect\n")); + } + } + else if (IS_HARDWARE_TYPE_8192CU(Adapter) || + IS_HARDWARE_TYPE_8723AU(Adapter)|| + IS_HARDWARE_TYPE_8192DU(Adapter) || + IS_HARDWARE_TYPE_8723AS(Adapter)) + { // Not support Selective suspend + RT_TRACE(COMP_RF, DBG_LOUD, ("USB SS Disable\n")); + if (SUPPORT_HW_RADIO_DETECT(Adapter)) + { + RT_TRACE(COMP_RF, DBG_LOUD, ("USB Card Type 2/3/4 support GPIO Detect\n")); + PlatformScheduleWorkItem( &(pHalData->GPIOChangeRFWorkItem) ); + } + else + { + RT_TRACE(COMP_RF, DBG_LOUD, ("USB DONGLE Non-GPIO-Detect\n")); + } + } + else + { // CE only support noemal HW radio detection now. Support timers GPIO detection in SE/CU. + PlatformScheduleWorkItem( &(pHalData->GPIOChangeRFWorkItem) ); + } +//#endif +#else if defined CONFIG_PCI_HCI + if(Adapter->bInHctTest) + return; + + // CE only support noemal HW radio detection now. We support timers GPIO detection in SE. + PlatformScheduleWorkItem( &(pHalData->GPIOChangeRFWorkItem) ); +#endif +#endif +} /* dm_CheckRfCtrlGPIO */ + +static VOID +dm_InitRateAdaptiveMask( + IN PADAPTER Adapter + ) +{ + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); + struct dm_priv *pdmpriv = &pHalData->dmpriv; + PRATE_ADAPTIVE pRA = (PRATE_ADAPTIVE)&pdmpriv->RateAdaptive; + + pRA->RATRState = DM_RATR_STA_INIT; + pRA->PreRATRState = DM_RATR_STA_INIT; + + if (pdmpriv->DM_Type == DM_Type_ByDriver) + pdmpriv->bUseRAMask = _TRUE; + else + pdmpriv->bUseRAMask = _FALSE; +} + +/*----------------------------------------------------------------------------- + * Function: dm_RefreshRateAdaptiveMask() + * + * Overview: Update rate table mask according to rssi + * + * Input: NONE + * + * Output: NONE + * + * Return: NONE + * + * Revised History: + * When Who Remark + * 05/27/2009 hpfan Create Version 0. + * + *---------------------------------------------------------------------------*/ +static VOID +dm_RefreshRateAdaptiveMask( IN PADAPTER pAdapter) +{ +#if 0 + PADAPTER pTargetAdapter; + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(pAdapter); + PMGNT_INFO pMgntInfo = &(ADJUST_TO_ADAPTIVE_ADAPTER(pAdapter, TRUE)->MgntInfo); + PRATE_ADAPTIVE pRA = (PRATE_ADAPTIVE)&pMgntInfo->RateAdaptive; + u4Byte LowRSSIThreshForRA = 0, HighRSSIThreshForRA = 0; + + if(pAdapter->bDriverStopped) + { + RT_TRACE(COMP_RATR, DBG_TRACE, ("<---- dm_RefreshRateAdaptiveMask(): driver is going to unload\n")); + return; + } + + if(!pMgntInfo->bUseRAMask) + { + RT_TRACE(COMP_RATR, DBG_LOUD, ("<---- dm_RefreshRateAdaptiveMask(): driver does not control rate adaptive mask\n")); + return; + } + + // if default port is connected, update RA table for default port (infrastructure mode only) + if(pAdapter->MgntInfo.mAssoc && (!ACTING_AS_AP(pAdapter))) + { + + // decide rastate according to rssi + switch (pRA->PreRATRState) + { + case DM_RATR_STA_HIGH: + HighRSSIThreshForRA = 50; + LowRSSIThreshForRA = 20; + break; + + case DM_RATR_STA_MIDDLE: + HighRSSIThreshForRA = 55; + LowRSSIThreshForRA = 20; + break; + + case DM_RATR_STA_LOW: + HighRSSIThreshForRA = 50; + LowRSSIThreshForRA = 25; + break; + + default: + HighRSSIThreshForRA = 50; + LowRSSIThreshForRA = 20; + break; + } + + if(pHalData->UndecoratedSmoothedPWDB > (s4Byte)HighRSSIThreshForRA) + pRA->RATRState = DM_RATR_STA_HIGH; + else if(pHalData->UndecoratedSmoothedPWDB > (s4Byte)LowRSSIThreshForRA) + pRA->RATRState = DM_RATR_STA_MIDDLE; + else + pRA->RATRState = DM_RATR_STA_LOW; + + if(pRA->PreRATRState != pRA->RATRState) + { + RT_PRINT_ADDR(COMP_RATR, DBG_LOUD, ("Target AP addr : "), pMgntInfo->Bssid); + RT_TRACE(COMP_RATR, DBG_LOUD, ("RSSI = %d\n", pHalData->UndecoratedSmoothedPWDB)); + RT_TRACE(COMP_RATR, DBG_LOUD, ("RSSI_LEVEL = %d\n", pRA->RATRState)); + RT_TRACE(COMP_RATR, DBG_LOUD, ("PreState = %d, CurState = %d\n", pRA->PreRATRState, pRA->RATRState)); + pAdapter->HalFunc.UpdateHalRAMaskHandler( + pAdapter, + FALSE, + 0, + NULL, + NULL, + pRA->RATRState); + pRA->PreRATRState = pRA->RATRState; + } + } + + // + // The following part configure AP/VWifi/IBSS rate adaptive mask. + // + if(ACTING_AS_AP(pAdapter) || ACTING_AS_IBSS(pAdapter)) + { + pTargetAdapter = pAdapter; + } + else + { + pTargetAdapter = ADJUST_TO_ADAPTIVE_ADAPTER(pAdapter, FALSE); + if(!ACTING_AS_AP(pTargetAdapter)) + pTargetAdapter = NULL; + } + + // if extension port (softap) is started, updaet RA table for more than one clients associate + if(pTargetAdapter != NULL) + { + int i; + PRT_WLAN_STA pEntry; + PRATE_ADAPTIVE pEntryRA; + + for(i = 0; i < ASSOCIATE_ENTRY_NUM; i++) + { + if( pTargetAdapter->MgntInfo.AsocEntry[i].bUsed && pTargetAdapter->MgntInfo.AsocEntry[i].bAssociated) + { + pEntry = pTargetAdapter->MgntInfo.AsocEntry+i; + pEntryRA = &pEntry->RateAdaptive; + + switch (pEntryRA->PreRATRState) + { + case DM_RATR_STA_HIGH: + { + HighRSSIThreshForRA = 50; + LowRSSIThreshForRA = 20; + } + break; + + case DM_RATR_STA_MIDDLE: + { + HighRSSIThreshForRA = 55; + LowRSSIThreshForRA = 20; + } + break; + + case DM_RATR_STA_LOW: + { + HighRSSIThreshForRA = 50; + LowRSSIThreshForRA = 25; + } + break; + + default: + { + HighRSSIThreshForRA = 50; + LowRSSIThreshForRA = 20; + } + } + + if(pEntry->rssi_stat.UndecoratedSmoothedPWDB > (s4Byte)HighRSSIThreshForRA) + pEntryRA->RATRState = DM_RATR_STA_HIGH; + else if(pEntry->rssi_stat.UndecoratedSmoothedPWDB > (s4Byte)LowRSSIThreshForRA) + pEntryRA->RATRState = DM_RATR_STA_MIDDLE; + else + pEntryRA->RATRState = DM_RATR_STA_LOW; + + if(pEntryRA->PreRATRState != pEntryRA->RATRState) + { + RT_PRINT_ADDR(COMP_RATR, DBG_LOUD, ("AsocEntry addr : "), pEntry->MacAddr); + RT_TRACE(COMP_RATR, DBG_LOUD, ("RSSI = %d\n", pEntry->rssi_stat.UndecoratedSmoothedPWDB)); + RT_TRACE(COMP_RATR, DBG_LOUD, ("RSSI_LEVEL = %d\n", pEntryRA->RATRState)); + RT_TRACE(COMP_RATR, DBG_LOUD, ("PreState = %d, CurState = %d\n", pEntryRA->PreRATRState, pEntryRA->RATRState)); + pAdapter->HalFunc.UpdateHalRAMaskHandler( + pTargetAdapter, + FALSE, + pEntry->AID+1, + pEntry->MacAddr, + pEntry, + pEntryRA->RATRState); + pEntryRA->PreRATRState = pEntryRA->RATRState; + } + + } + } + } +#endif +} + +static VOID +dm_CheckProtection( + IN PADAPTER Adapter + ) +{ +#if 0 + PMGNT_INFO pMgntInfo = &(Adapter->MgntInfo); + u1Byte CurRate, RateThreshold; + + if(pMgntInfo->pHTInfo->bCurBW40MHz) + RateThreshold = MGN_MCS1; + else + RateThreshold = MGN_MCS3; + + if(Adapter->TxStats.CurrentInitTxRate <= RateThreshold) + { + pMgntInfo->bDmDisableProtect = TRUE; + DbgPrint("Forced disable protect: %x\n", Adapter->TxStats.CurrentInitTxRate); + } + else + { + pMgntInfo->bDmDisableProtect = FALSE; + DbgPrint("Enable protect: %x\n", Adapter->TxStats.CurrentInitTxRate); + } +#endif +} + +static VOID +dm_CheckStatistics( + IN PADAPTER Adapter + ) +{ +#if 0 + if(!Adapter->MgntInfo.bMediaConnect) + return; + + //2008.12.10 tynli Add for getting Current_Tx_Rate_Reg flexibly. + rtw_hal_get_hwreg( Adapter, HW_VAR_INIT_TX_RATE, (pu1Byte)(&Adapter->TxStats.CurrentInitTxRate) ); + + // Calculate current Tx Rate(Successful transmited!!) + + // Calculate current Rx Rate(Successful received!!) + + //for tx tx retry count + rtw_hal_get_hwreg( Adapter, HW_VAR_RETRY_COUNT, (pu1Byte)(&Adapter->TxStats.NumTxRetryCount) ); +#endif +} + +static void dm_CheckPbcGPIO(_adapter *padapter) +{ + u8 tmp1byte; + u8 bPbcPressed = _FALSE; + int i=0; + + if(!padapter->registrypriv.hw_wps_pbc) + return; + + do + { + i++; +#ifdef CONFIG_USB_HCI + tmp1byte = rtw_read8(padapter, GPIO_IO_SEL); + tmp1byte |= (HAL_8192C_HW_GPIO_WPS_BIT); + rtw_write8(padapter, GPIO_IO_SEL, tmp1byte); //enable GPIO[2] as output mode + + tmp1byte &= ~(HAL_8192C_HW_GPIO_WPS_BIT); + rtw_write8(padapter, GPIO_IN, tmp1byte); //reset the floating voltage level + + tmp1byte = rtw_read8(padapter, GPIO_IO_SEL); + tmp1byte &= ~(HAL_8192C_HW_GPIO_WPS_BIT); + rtw_write8(padapter, GPIO_IO_SEL, tmp1byte); //enable GPIO[2] as input mode + + tmp1byte =rtw_read8(padapter, GPIO_IN); + + if (tmp1byte == 0xff) + { + bPbcPressed = _FALSE; + break ; + } + + if (tmp1byte&HAL_8192C_HW_GPIO_WPS_BIT) + { + bPbcPressed = _TRUE; + + if(i<=3) + rtw_msleep_os(50); + } +#else + tmp1byte = rtw_read8(padapter, GPIO_IN); + //RT_TRACE(COMP_IO, DBG_TRACE, ("dm_CheckPbcGPIO - %x\n", tmp1byte)); + + if (tmp1byte == 0xff || padapter->init_adpt_in_progress) + { + bPbcPressed = _FALSE; + break ; + } + + if((tmp1byte&HAL_8192C_HW_GPIO_WPS_BIT)==0) + { + bPbcPressed = _TRUE; + + if(i<=3) + rtw_msleep_os(50); + } +#endif + + }while(i<=3 && bPbcPressed == _TRUE); + + if( _TRUE == bPbcPressed) + { + // Here we only set bPbcPressed to true + // After trigger PBC, the variable will be set to false + DBG_8192C("CheckPbcGPIO - PBC is pressed, try_cnt=%d\n", i-1); + +#ifdef RTK_DMP_PLATFORM +#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,12)) + kobject_uevent(&padapter->pnetdev->dev.kobj, KOBJ_NET_PBC); +#else + kobject_hotplug(&padapter->pnetdev->class_dev.kobj, KOBJ_NET_PBC); +#endif +#else + + if ( padapter->pid[0] == 0 ) + { // 0 is the default value and it means the application monitors the HW PBC doesn't privde its pid to driver. + return; + } + +#ifdef PLATFORM_LINUX + rtw_signal_process(padapter->pid[0], SIGUSR1); +#endif +#endif + } +} + +#ifdef CONFIG_PCI_HCI +// +// Description: +// Perform interrupt migration dynamically to reduce CPU utilization. +// +// Assumption: +// 1. Do not enable migration under WIFI test. +// +// Created by Roger, 2010.03.05. +// +VOID +dm_InterruptMigration( + IN PADAPTER Adapter + ) +{ + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); + struct mlme_priv *pmlmepriv = &(Adapter->mlmepriv); + BOOLEAN bCurrentIntMt, bCurrentACIntDisable; + BOOLEAN IntMtToSet = _FALSE; + BOOLEAN ACIntToSet = _FALSE; + + + // Retrieve current interrupt migration and Tx four ACs IMR settings first. + bCurrentIntMt = pHalData->bInterruptMigration; + bCurrentACIntDisable = pHalData->bDisableTxInt; + + // + // Currently we use busy traffic for reference instead of RxIntOK counts to prevent non-linear Rx statistics + // when interrupt migration is set before. 2010.03.05. + // + if(!Adapter->registrypriv.wifi_spec && + (check_fwstate(pmlmepriv, _FW_LINKED)== _TRUE) && + pmlmepriv->LinkDetectInfo.bHigherBusyTraffic) + { + IntMtToSet = _TRUE; + + // To check whether we should disable Tx interrupt or not. + if(pmlmepriv->LinkDetectInfo.bHigherBusyRxTraffic ) + ACIntToSet = _TRUE; + } + + //Update current settings. + if( bCurrentIntMt != IntMtToSet ){ + DBG_8192C("%s(): Update interrrupt migration(%d)\n",__FUNCTION__,IntMtToSet); + if(IntMtToSet) + { + // + // Set interrrupt migration timer and corresponging Tx/Rx counter. + // timer 25ns*0xfa0=100us for 0xf packets. + // 2010.03.05. + // + rtw_write32(Adapter, REG_INT_MIG, 0xff000fa0);// 0x306:Rx, 0x307:Tx + pHalData->bInterruptMigration = IntMtToSet; + } + else + { + // Reset all interrupt migration settings. + rtw_write32(Adapter, REG_INT_MIG, 0); + pHalData->bInterruptMigration = IntMtToSet; + } + } + + /*if( bCurrentACIntDisable != ACIntToSet ){ + DBG_8192C("%s(): Update AC interrrupt(%d)\n",__FUNCTION__,ACIntToSet); + if(ACIntToSet) // Disable four ACs interrupts. + { + // + // Disable VO, VI, BE and BK four AC interrupts to gain more efficient CPU utilization. + // When extremely highly Rx OK occurs, we will disable Tx interrupts. + // 2010.03.05. + // + UpdateInterruptMask8192CE( Adapter, 0, RT_AC_INT_MASKS ); + pHalData->bDisableTxInt = ACIntToSet; + } + else// Enable four ACs interrupts. + { + UpdateInterruptMask8192CE( Adapter, RT_AC_INT_MASKS, 0 ); + pHalData->bDisableTxInt = ACIntToSet; + } + }*/ + +} + +#endif + +// +// Initialize GPIO setting registers +// +static void +dm_InitGPIOSetting( + IN PADAPTER Adapter + ) +{ + PHAL_DATA_TYPE pHalData = GET_HAL_DATA(Adapter); + + u8 tmp1byte; + + tmp1byte = rtw_read8(Adapter, REG_GPIO_MUXCFG); + tmp1byte &= (GPIOSEL_GPIO | ~GPIOSEL_ENBT); + +#ifdef CONFIG_BT_COEXIST + // UMB-B cut bug. We need to support the modification. + if (IS_81xxC_VENDOR_UMC_B_CUT(pHalData->VersionID) && + pHalData->bt_coexist.BT_Coexist) + { + tmp1byte |= (BIT5); + } +#endif + rtw_write8(Adapter, REG_GPIO_MUXCFG, tmp1byte); + +} + +static void update_EDCA_param(_adapter *padapter) +{ + u32 trafficIndex; + u32 edca_param; + u64 cur_tx_bytes = 0; + u64 cur_rx_bytes = 0; + PHAL_DATA_TYPE pHalData = GET_HAL_DATA(padapter); + struct dm_priv *pdmpriv = &pHalData->dmpriv; + struct xmit_priv *pxmitpriv = &(padapter->xmitpriv); + struct recv_priv *precvpriv = &(padapter->recvpriv); + struct registry_priv *pregpriv = &padapter->registrypriv; + struct mlme_ext_priv *pmlmeext = &(padapter->mlmeextpriv); + struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info); + +#ifdef CONFIG_BT_COEXIST + struct btcoexist_priv *pbtpriv = &(pHalData->bt_coexist); + u8 bbtchange = _FALSE; +#endif + + + //DBG_871X("%s\n", __FUNCTION__); + + //associated AP + if ((pregpriv->wifi_spec == 1) || (pmlmeinfo->HT_enable == 0)) + { + return; + } + + if (pmlmeinfo->assoc_AP_vendor >= maxAP) + { + return; + } + + cur_tx_bytes = pxmitpriv->tx_bytes - pxmitpriv->last_tx_bytes; + cur_rx_bytes = precvpriv->rx_bytes - precvpriv->last_rx_bytes; + + //traffic, TX or RX + if((pmlmeinfo->assoc_AP_vendor == ralinkAP)||(pmlmeinfo->assoc_AP_vendor == atherosAP)) + { + if (cur_tx_bytes > (cur_rx_bytes << 2)) + { // Uplink TP is present. + trafficIndex = UP_LINK; + } + else + { // Balance TP is present. + trafficIndex = DOWN_LINK; + } + } + else + { + if (cur_rx_bytes > (cur_tx_bytes << 2)) + { // Downlink TP is present. + trafficIndex = DOWN_LINK; + } + else + { // Balance TP is present. + trafficIndex = UP_LINK; + } + } + +#ifdef CONFIG_BT_COEXIST + if(pbtpriv->BT_Coexist) + { + if( (pbtpriv->BT_EDCA[UP_LINK]!=0) || (pbtpriv->BT_EDCA[DOWN_LINK]!=0)) + { + bbtchange = _TRUE; + } + } +#endif + + if (pdmpriv->prv_traffic_idx != trafficIndex) + { +#if 0 +#ifdef CONFIG_BT_COEXIST + if(_TRUE == bbtchange) + rtw_write32(padapter, REG_EDCA_BE_PARAM, pbtpriv->BT_EDCA[trafficIndex]); + else +#endif + //adjust EDCA parameter for BE queue + //fire_write_MAC_cmd(padapter, EDCA_BE_PARAM, EDCAParam[pmlmeinfo->assoc_AP_vendor][trafficIndex]); + rtw_write32(padapter, REG_EDCA_BE_PARAM, EDCAParam[pmlmeinfo->assoc_AP_vendor][trafficIndex]); + +#else + if((pmlmeinfo->assoc_AP_vendor == ciscoAP) && (pmlmeext->cur_wireless_mode & WIRELESS_11_24N)) + { + edca_param = EDCAParam[pmlmeinfo->assoc_AP_vendor][trafficIndex]; + } + else if((pmlmeinfo->assoc_AP_vendor == airgocapAP) && + ((pmlmeext->cur_wireless_mode == WIRELESS_11G) ||(pmlmeext->cur_wireless_mode == WIRELESS_11BG))) + { + edca_param = EDCAParam[pmlmeinfo->assoc_AP_vendor][trafficIndex]; + } + else + { + edca_param = EDCAParam[unknownAP][trafficIndex]; + } + +#ifdef CONFIG_BT_COEXIST + if(_TRUE == bbtchange) + edca_param = pbtpriv->BT_EDCA[trafficIndex]; +#endif + + rtw_write32(padapter, REG_EDCA_BE_PARAM, edca_param); +#endif + pdmpriv->prv_traffic_idx = trafficIndex; + } + +//exit_update_EDCA_param: + + pxmitpriv->last_tx_bytes = pxmitpriv->tx_bytes; + precvpriv->last_rx_bytes = precvpriv->rx_bytes; + + return; +} + +static void dm_InitDynamicBBPowerSaving( + IN PADAPTER Adapter + ) +{ + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); + struct dm_priv *pdmpriv = &pHalData->dmpriv; + PS_T *pPSTable = &pdmpriv->DM_PSTable; + + pPSTable->PreCCAState = CCA_MAX; + pPSTable->CurCCAState = CCA_MAX; + pPSTable->PreRFState = RF_MAX; + pPSTable->CurRFState = RF_MAX; + pPSTable->Rssi_val_min = 0; +} + +static void dm_1R_CCA( + IN PADAPTER pAdapter) +{ + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(pAdapter); + struct dm_priv *pdmpriv = &pHalData->dmpriv; + PS_T *pPSTable = &pdmpriv->DM_PSTable; + + if(pPSTable->Rssi_val_min != 0) + { + if(pPSTable->PreCCAState == CCA_2R) + { + if(pPSTable->Rssi_val_min >= 35) + pPSTable->CurCCAState = CCA_1R; + else + pPSTable->CurCCAState = CCA_2R; + } + else{ + if(pPSTable->Rssi_val_min <= 30) + pPSTable->CurCCAState = CCA_2R; + else + pPSTable->CurCCAState = CCA_1R; + } + } + else + pPSTable->CurCCAState=CCA_MAX; + + if(pPSTable->PreCCAState != pPSTable->CurCCAState) + { + if(pPSTable->CurCCAState == CCA_1R) + { + if(pHalData->rf_type == RF_2T2R) + { + PHY_SetBBReg(pAdapter, rOFDM0_TRxPathEnable , bMaskByte0, 0x13); + PHY_SetBBReg(pAdapter, 0xe70, bMaskByte3, 0x20); + } + else + { + PHY_SetBBReg(pAdapter, rOFDM0_TRxPathEnable , bMaskByte0, 0x23); + PHY_SetBBReg(pAdapter, 0xe70, 0x7fc00000, 0x10c); // Set RegE70[30:22] = 9b'100001100 + } + } + else + { + PHY_SetBBReg(pAdapter, rOFDM0_TRxPathEnable, bMaskByte0, 0x33); + PHY_SetBBReg(pAdapter,0xe70, bMaskByte3, 0x63); + } + pPSTable->PreCCAState = pPSTable->CurCCAState; + } + //DBG_8192C("dm_1R_CCA(): CCAStage=%x\n", pPSTable->CurCCAState); +} + +void +rtl8192c_dm_RF_Saving( + IN PADAPTER pAdapter, + IN u8 bForceInNormal + ) +{ + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(pAdapter); + struct dm_priv *pdmpriv = &pHalData->dmpriv; + PS_T *pPSTable = &pdmpriv->DM_PSTable; + + if(pdmpriv->initialize == 0){ + pdmpriv->rf_saving_Reg874 = (PHY_QueryBBReg(pAdapter, rFPGA0_XCD_RFInterfaceSW, bMaskDWord)&0x1CC000)>>14; + pdmpriv->rf_saving_RegC70 = (PHY_QueryBBReg(pAdapter, rOFDM0_AGCParameter1, bMaskDWord)&BIT3)>>3; + pdmpriv->rf_saving_Reg85C = (PHY_QueryBBReg(pAdapter, rFPGA0_XCD_SwitchControl, bMaskDWord)&0xFF000000)>>24; + pdmpriv->rf_saving_RegA74 = (PHY_QueryBBReg(pAdapter, 0xa74, bMaskDWord)&0xF000)>>12; + //Reg818 = PHY_QueryBBReg(pAdapter, 0x818, bMaskDWord); + pdmpriv->initialize = 1; + } + + if(!bForceInNormal) + { + if(pPSTable->Rssi_val_min != 0) + { + + if(pPSTable->PreRFState == RF_Normal) + { + #ifdef CONFIG_SPECIAL_SETTING_FOR_FUNAI_TV + if(pPSTable->Rssi_val_min >= 50) + #else + if(pPSTable->Rssi_val_min >= 30) + #endif + pPSTable->CurRFState = RF_Save; + else + pPSTable->CurRFState = RF_Normal; + } + else{ + #ifdef CONFIG_SPECIAL_SETTING_FOR_FUNAI_TV + if(pPSTable->Rssi_val_min <= 45) + #else + if(pPSTable->Rssi_val_min <= 25) + #endif + pPSTable->CurRFState = RF_Normal; + else + pPSTable->CurRFState = RF_Save; + } + } + else + pPSTable->CurRFState=RF_MAX; + } + else + { + pPSTable->CurRFState = RF_Normal; + } + + if(pPSTable->PreRFState != pPSTable->CurRFState) + { + if(pPSTable->CurRFState == RF_Save) + { + PHY_SetBBReg(pAdapter, rFPGA0_XCD_RFInterfaceSW , 0x1C0000, 0x2); //Reg874[20:18]=3'b010 + PHY_SetBBReg(pAdapter, rOFDM0_AGCParameter1, BIT3, 0); //RegC70[3]=1'b0 + PHY_SetBBReg(pAdapter, rFPGA0_XCD_SwitchControl, 0xFF000000, 0x63); //Reg85C[31:24]=0x63 + PHY_SetBBReg(pAdapter, rFPGA0_XCD_RFInterfaceSW, 0xC000, 0x2); //Reg874[15:14]=2'b10 + PHY_SetBBReg(pAdapter, 0xa74, 0xF000, 0x3); //RegA75[7:4]=0x3 + PHY_SetBBReg(pAdapter, 0x818, BIT28, 0x0); //Reg818[28]=1'b0 + PHY_SetBBReg(pAdapter, 0x818, BIT28, 0x1); //Reg818[28]=1'b1 + DBG_8192C("%s(): RF_Save\n", __FUNCTION__); + } + else + { + PHY_SetBBReg(pAdapter, rFPGA0_XCD_RFInterfaceSW , 0x1CC000, pdmpriv->rf_saving_Reg874); + PHY_SetBBReg(pAdapter, rOFDM0_AGCParameter1, BIT3, pdmpriv->rf_saving_RegC70); + PHY_SetBBReg(pAdapter, rFPGA0_XCD_SwitchControl, 0xFF000000, pdmpriv->rf_saving_Reg85C); + PHY_SetBBReg(pAdapter, 0xa74, 0xF000, pdmpriv->rf_saving_RegA74); + PHY_SetBBReg(pAdapter, 0x818, BIT28, 0x0); + DBG_8192C("%s(): RF_Normal\n", __FUNCTION__); + } + pPSTable->PreRFState = pPSTable->CurRFState; + } +} + +static void +dm_DynamicBBPowerSaving( +IN PADAPTER pAdapter + ) +{ + + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(pAdapter); + struct mlme_priv *pmlmepriv = &pAdapter->mlmepriv; + struct dm_priv *pdmpriv = &pHalData->dmpriv; + PS_T *pPSTable = &pdmpriv->DM_PSTable; + + //1 1.Determine the minimum RSSI + if((check_fwstate(pmlmepriv, _FW_LINKED) != _TRUE) && + (pdmpriv->EntryMinUndecoratedSmoothedPWDB == 0)) + { + pPSTable->Rssi_val_min = 0; + //RT_TRACE(COMP_BB_POWERSAVING, DBG_LOUD, ("Not connected to any \n")); + } + if(check_fwstate(pmlmepriv, _FW_LINKED) == _TRUE) // Default port + { + //if(ACTING_AS_AP(pAdapter) || pMgntInfo->mIbss) + if ((check_fwstate(pmlmepriv, WIFI_ADHOC_MASTER_STATE) == _TRUE) || + (check_fwstate(pmlmepriv, WIFI_ADHOC_STATE) == _TRUE)) //todo: AP Mode + { + pPSTable->Rssi_val_min = pdmpriv->EntryMinUndecoratedSmoothedPWDB; + //RT_TRACE(COMP_BB_POWERSAVING, DBG_LOUD, ("AP Client PWDB = 0x%lx \n", pPSTable->Rssi_val_min)); + } + else + { + pPSTable->Rssi_val_min = pdmpriv->UndecoratedSmoothedPWDB; + //RT_TRACE(COMP_BB_POWERSAVING, DBG_LOUD, ("STA Default Port PWDB = 0x%lx \n", pPSTable->Rssi_val_min)); + } + } + else // associated entry pwdb + { + pPSTable->Rssi_val_min = pdmpriv->EntryMinUndecoratedSmoothedPWDB; + //RT_TRACE(COMP_BB_POWERSAVING, DBG_LOUD, ("AP Ext Port PWDB = 0x%lx \n", pPSTable->Rssi_val_min)); + } + + //1 2.Power Saving for 92C + if(IS_92C_SERIAL(pHalData->VersionID)) + { + //dm_1R_CCA(pAdapter); + } + + // 20100628 Joseph: Turn off BB power save for 88CE because it makesthroughput unstable. + // 20100831 Joseph: Turn ON BB power save again after modifying AGC delay from 900ns to 600ns. + //1 3.Power Saving for 88C + else + { + rtl8192c_dm_RF_Saving(pAdapter, _FALSE); + } +} + + +#ifdef CONFIG_ANTENNA_DIVERSITY +// Add new function to reset the state of antenna diversity before link. +// +void SwAntDivResetBeforeLink8192C(IN PADAPTER Adapter) +{ + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); + struct dm_priv *pdmpriv = &pHalData->dmpriv; + SWAT_T *pDM_SWAT_Table = &pdmpriv->DM_SWAT_Table; + + pDM_SWAT_Table->SWAS_NoLink_State = 0; +} + +// Compare RSSI for deciding antenna +void SwAntDivCompare8192C(PADAPTER Adapter, WLAN_BSSID_EX *dst, WLAN_BSSID_EX *src) +{ + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); + + if((0 != pHalData->AntDivCfg) && (!IS_92C_SERIAL(pHalData->VersionID)) ) + { + //DBG_8192C("update_network=> orgRSSI(%d)(%d),newRSSI(%d)(%d)\n",dst->Rssi,query_rx_pwr_percentage(dst->Rssi), + // src->Rssi,query_rx_pwr_percentage(src->Rssi)); + //select optimum_antenna for before linked =>For antenna diversity + if(dst->Rssi >= src->Rssi )//keep org parameter + { + src->Rssi = dst->Rssi; + src->PhyInfo.Optimum_antenna = dst->PhyInfo.Optimum_antenna; + } + } +} + +// Add new function to reset the state of antenna diversity before link. +u8 SwAntDivBeforeLink8192C(IN PADAPTER Adapter) +{ + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); + struct dm_priv *pdmpriv = &pHalData->dmpriv; + SWAT_T *pDM_SWAT_Table = &pdmpriv->DM_SWAT_Table; + struct mlme_priv *pmlmepriv = &(Adapter->mlmepriv); + + // Condition that does not need to use antenna diversity. + if(IS_92C_SERIAL(pHalData->VersionID) ||(pHalData->AntDivCfg==0)) + { + //DBG_8192C("SwAntDivBeforeLink8192C(): No AntDiv Mechanism.\n"); + return _FALSE; + } + + if(check_fwstate(pmlmepriv, _FW_LINKED) == _TRUE) + { + pDM_SWAT_Table->SWAS_NoLink_State = 0; + return _FALSE; + } + // Since driver is going to set BB register, it shall check if there is another thread controlling BB/RF. +/* + if(pHalData->eRFPowerState!=eRfOn || pMgntInfo->RFChangeInProgress || pMgntInfo->bMediaConnect) + { + + + RT_TRACE(COMP_SWAS, DBG_LOUD, + ("SwAntDivCheckBeforeLink8192C(): RFChangeInProgress(%x), eRFPowerState(%x)\n", + pMgntInfo->RFChangeInProgress, + pHalData->eRFPowerState)); + + pDM_SWAT_Table->SWAS_NoLink_State = 0; + + return FALSE; + } +*/ + + if(pDM_SWAT_Table->SWAS_NoLink_State == 0){ + //switch channel + pDM_SWAT_Table->SWAS_NoLink_State = 1; + pDM_SWAT_Table->CurAntenna = (pDM_SWAT_Table->CurAntenna==Antenna_A)?Antenna_B:Antenna_A; + + //PHY_SetBBReg(Adapter, rFPGA0_XA_RFInterfaceOE, 0x300, pDM_SWAT_Table->CurAntenna); + rtw_antenna_select_cmd(Adapter, pDM_SWAT_Table->CurAntenna, _FALSE); + //DBG_8192C("%s change antenna to ANT_( %s ).....\n",__FUNCTION__, (pDM_SWAT_Table->CurAntenna==Antenna_A)?"A":"B"); + return _TRUE; + } + else + { + pDM_SWAT_Table->SWAS_NoLink_State = 0; + return _FALSE; + } + + + +} +#endif +#ifdef CONFIG_SW_ANTENNA_DIVERSITY +// +// 20100514 Luke/Joseph: +// Add new function to reset antenna diversity state after link. +// +void +SwAntDivRestAfterLink8192C( + IN PADAPTER Adapter + ) +{ + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); + struct dm_priv *pdmpriv = &pHalData->dmpriv; + SWAT_T *pDM_SWAT_Table = &pdmpriv->DM_SWAT_Table; + + if(IS_92C_SERIAL(pHalData->VersionID) ||(pHalData->AntDivCfg==0)) + return; + + //DBG_8192C("======> SwAntDivRestAfterLink <========== \n"); + pHalData->RSSI_cnt_A= 0; + pHalData->RSSI_cnt_B= 0; + pHalData->RSSI_test = _FALSE; + + pDM_SWAT_Table->try_flag = 0xff; + pDM_SWAT_Table->RSSI_Trying = 0; + pDM_SWAT_Table->SelectAntennaMap=0xAA; + pDM_SWAT_Table->CurAntenna = pHalData->CurAntenna; + pDM_SWAT_Table->PreAntenna = pHalData->CurAntenna; + + pdmpriv->lastTxOkCnt=0; + pdmpriv->lastRxOkCnt=0; + + pdmpriv->TXByteCnt_A=0; + pdmpriv->TXByteCnt_B=0; + pdmpriv->RXByteCnt_A=0; + pdmpriv->RXByteCnt_B=0; + pdmpriv->DoubleComfirm=0; + pdmpriv->TrafficLoad = TRAFFIC_LOW; + +} + + +// +// 20100514 Luke/Joseph: +// Add new function for antenna diversity after link. +// This is the main function of antenna diversity after link. +// This function is called in HalDmWatchDog() and dm_SW_AntennaSwitchCallback(). +// HalDmWatchDog() calls this function with SWAW_STEP_PEAK to initialize the antenna test. +// In SWAW_STEP_PEAK, another antenna and a 500ms timer will be set for testing. +// After 500ms, dm_SW_AntennaSwitchCallback() calls this function to compare the signal just +// listened on the air with the RSSI of original antenna. +// It chooses the antenna with better RSSI. +// There is also a aged policy for error trying. Each error trying will cost more 5 seconds waiting +// penalty to get next try. +// +static VOID +dm_SW_AntennaSwitch( + PADAPTER Adapter, + u8 Step +) +{ + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); + struct dm_priv *pdmpriv = &pHalData->dmpriv; + SWAT_T *pDM_SWAT_Table = &pdmpriv->DM_SWAT_Table; + s32 curRSSI=100, RSSI_A, RSSI_B; + u64 curTxOkCnt, curRxOkCnt; + u64 CurByteCnt = 0, PreByteCnt = 0; + u8 nextAntenna = 0; + u8 Score_A=0, Score_B=0; + u8 i; + + // Condition that does not need to use antenna diversity. + if(IS_92C_SERIAL(pHalData->VersionID) ||(pHalData->AntDivCfg==0)) + { + //RT_TRACE(COMP_SWAS, DBG_LOUD, ("dm_SW_AntennaSwitch(): No AntDiv Mechanism.\n")); + return; + } + // If dynamic ant_div is disabled. + if(!(pdmpriv->DMFlag & DYNAMIC_FUNC_ANT_DIV) ) + { + return; + } + + if (check_fwstate(&Adapter->mlmepriv, _FW_LINKED) ==_FALSE) + return; +#if 0 //to do + // Radio off: Status reset to default and return. + if(pHalData->eRFPowerState==eRfOff) + { + SwAntDivRestAfterLink(Adapter); + return; + } +#endif + //DBG_8192C("\n............................ %s.........................\n",__FUNCTION__); + // Handling step mismatch condition. + // Peak step is not finished at last time. Recover the variable and check again. + if( Step != pDM_SWAT_Table->try_flag ) + { + SwAntDivRestAfterLink8192C(Adapter); + } + + + if(pDM_SWAT_Table->try_flag == 0xff) + { +#if 0 + // Select RSSI checking target + if(pMgntInfo->mAssoc && !ACTING_AS_AP(Adapter)) + { + // Target: Infrastructure mode AP. + pHalData->RSSI_target = NULL; + RT_TRACE(COMP_SWAS, DBG_LOUD, ("dm_SW_AntennaSwitch(): RSSI_target is DEF AP!\n")); + } + else + { + u8 index = 0; + PRT_WLAN_STA pEntry = NULL; + PADAPTER pTargetAdapter = NULL; + + if( pMgntInfo->mIbss || ACTING_AS_AP(Adapter) ) + { + // Target: AP/IBSS peer. + pTargetAdapter = Adapter; + } + else if(ACTING_AS_AP(ADJUST_TO_ADAPTIVE_ADAPTER(Adapter, FALSE))) + { + // Target: VWIFI peer. + pTargetAdapter = ADJUST_TO_ADAPTIVE_ADAPTER(Adapter, FALSE); + } + + if(pTargetAdapter != NULL) + { + for(index=0; indexbAssociated) + break; + } + } + } + + if(pEntry == NULL) + { + SwAntDivRestAfterLink(Adapter); + RT_TRACE(COMP_SWAS, DBG_LOUD, ("dm_SW_AntennaSwitch(): No Link.\n")); + return; + } + else + { + pHalData->RSSI_target = pEntry; + RT_TRACE(COMP_SWAS, DBG_LOUD, ("dm_SW_AntennaSwitch(): RSSI_target is PEER STA\n")); + } + } + + +#endif + + pHalData->RSSI_cnt_A= 0; + pHalData->RSSI_cnt_B= 0; + pDM_SWAT_Table->try_flag = 0; + // DBG_8192C("dm_SW_AntennaSwitch(): Set try_flag to 0 prepare for peak!\n"); + return; + } + else + { + curTxOkCnt = Adapter->xmitpriv.tx_bytes - pdmpriv->lastTxOkCnt; + curRxOkCnt = Adapter->recvpriv.rx_bytes - pdmpriv->lastRxOkCnt; + + pdmpriv->lastTxOkCnt = Adapter->xmitpriv.tx_bytes ; + pdmpriv->lastRxOkCnt = Adapter->recvpriv.rx_bytes ; + + if(pDM_SWAT_Table->try_flag == 1) + { + if(pDM_SWAT_Table->CurAntenna == Antenna_A) + { + pdmpriv->TXByteCnt_A += curTxOkCnt; + pdmpriv->RXByteCnt_A += curRxOkCnt; + //DBG_8192C("##### TXByteCnt_A(%lld) , RXByteCnt_A(%lld) ####\n",pdmpriv->TXByteCnt_A,pdmpriv->RXByteCnt_A); + } + else + { + pdmpriv->TXByteCnt_B += curTxOkCnt; + pdmpriv->RXByteCnt_B += curRxOkCnt; + //DBG_8192C("##### TXByteCnt_B(%lld) , RXByteCnt_B(%lld) ####\n",pdmpriv->TXByteCnt_B,pdmpriv->RXByteCnt_B); + } + + nextAntenna = (pDM_SWAT_Table->CurAntenna == Antenna_A)? Antenna_B : Antenna_A; + pDM_SWAT_Table->RSSI_Trying--; + //DBG_8192C("RSSI_Trying = %d\n",pDM_SWAT_Table->RSSI_Trying); + + if(pDM_SWAT_Table->RSSI_Trying == 0) + { + CurByteCnt = (pDM_SWAT_Table->CurAntenna == Antenna_A)? (pdmpriv->TXByteCnt_A+pdmpriv->RXByteCnt_A) : (pdmpriv->TXByteCnt_B+pdmpriv->RXByteCnt_B); + PreByteCnt = (pDM_SWAT_Table->CurAntenna == Antenna_A)? (pdmpriv->TXByteCnt_B+pdmpriv->RXByteCnt_B) : (pdmpriv->TXByteCnt_A+pdmpriv->RXByteCnt_A); + + //DBG_8192C("CurByteCnt = %lld\n", CurByteCnt); + //DBG_8192C("PreByteCnt = %lld\n",PreByteCnt); + + if(pdmpriv->TrafficLoad == TRAFFIC_HIGH) + { + PreByteCnt = PreByteCnt*9; //normalize:Cur=90ms:Pre=10ms + } + else if(pdmpriv->TrafficLoad == TRAFFIC_LOW) + { + //CurByteCnt = CurByteCnt/2; + CurByteCnt = CurByteCnt>>1;//normalize:100ms:50ms + } + + + //DBG_8192C("After DIV=>CurByteCnt = %lld\n", CurByteCnt); + //DBG_8192C("PreByteCnt = %lld\n",PreByteCnt); + + if(pHalData->RSSI_cnt_A > 0) + RSSI_A = pHalData->RSSI_sum_A/pHalData->RSSI_cnt_A; + else + RSSI_A = 0; + if(pHalData->RSSI_cnt_B > 0) + RSSI_B = pHalData->RSSI_sum_B/pHalData->RSSI_cnt_B; + else + RSSI_B = 0; + + curRSSI = (pDM_SWAT_Table->CurAntenna == Antenna_A)? RSSI_A : RSSI_B; + pDM_SWAT_Table->PreRSSI = (pDM_SWAT_Table->CurAntenna == Antenna_A)? RSSI_B : RSSI_A; + //DBG_8192C("Luke:PreRSSI = %d, CurRSSI = %d\n",pDM_SWAT_Table->PreRSSI, curRSSI); + //DBG_8192C("SWAS: preAntenna= %s, curAntenna= %s \n", + //(pDM_SWAT_Table->PreAntenna == Antenna_A?"A":"B"), (pDM_SWAT_Table->CurAntenna == Antenna_A?"A":"B")); + //DBG_8192C("Luke:RSSI_A= %d, RSSI_cnt_A = %d, RSSI_B= %d, RSSI_cnt_B = %d\n", + //RSSI_A, pHalData->RSSI_cnt_A, RSSI_B, pHalData->RSSI_cnt_B); + } + + } + else + { + + if(pHalData->RSSI_cnt_A > 0) + RSSI_A = pHalData->RSSI_sum_A/pHalData->RSSI_cnt_A; + else + RSSI_A = 0; + if(pHalData->RSSI_cnt_B > 0) + RSSI_B = pHalData->RSSI_sum_B/pHalData->RSSI_cnt_B; + else + RSSI_B = 0; + curRSSI = (pDM_SWAT_Table->CurAntenna == Antenna_A)? RSSI_A : RSSI_B; + pDM_SWAT_Table->PreRSSI = (pDM_SWAT_Table->PreAntenna == Antenna_A)? RSSI_A : RSSI_B; + //DBG_8192C("Ekul:PreRSSI = %d, CurRSSI = %d\n", pDM_SWAT_Table->PreRSSI, curRSSI); + //DBG_8192C("SWAS: preAntenna= %s, curAntenna= %s \n", + //(pDM_SWAT_Table->PreAntenna == Antenna_A?"A":"B"), (pDM_SWAT_Table->CurAntenna == Antenna_A?"A":"B")); + + //DBG_8192C("Ekul:RSSI_A= %d, RSSI_cnt_A = %d, RSSI_B= %d, RSSI_cnt_B = %d\n", + // RSSI_A, pHalData->RSSI_cnt_A, RSSI_B, pHalData->RSSI_cnt_B); + //RT_TRACE(COMP_SWAS, DBG_LOUD, ("Ekul:curTxOkCnt = %d\n", curTxOkCnt)); + //RT_TRACE(COMP_SWAS, DBG_LOUD, ("Ekul:curRxOkCnt = %d\n", curRxOkCnt)); + } + + //1 Trying State + if((pDM_SWAT_Table->try_flag == 1)&&(pDM_SWAT_Table->RSSI_Trying == 0)) + { + + if(pDM_SWAT_Table->TestMode == TP_MODE) + { + //DBG_8192C("SWAS: TestMode = TP_MODE\n"); + //DBG_8192C("TRY:CurByteCnt = %lld\n", CurByteCnt); + //DBG_8192C("TRY:PreByteCnt = %lld\n",PreByteCnt); + if(CurByteCnt < PreByteCnt) + { + if(pDM_SWAT_Table->CurAntenna == Antenna_A) + pDM_SWAT_Table->SelectAntennaMap=pDM_SWAT_Table->SelectAntennaMap<<1; + else + pDM_SWAT_Table->SelectAntennaMap=(pDM_SWAT_Table->SelectAntennaMap<<1)+1; + } + else + { + if(pDM_SWAT_Table->CurAntenna == Antenna_A) + pDM_SWAT_Table->SelectAntennaMap=(pDM_SWAT_Table->SelectAntennaMap<<1)+1; + else + pDM_SWAT_Table->SelectAntennaMap=pDM_SWAT_Table->SelectAntennaMap<<1; + } + for (i= 0; i<8; i++) + { + if(((pDM_SWAT_Table->SelectAntennaMap>>i)&BIT0) == 1) + Score_A++; + else + Score_B++; + } + //DBG_8192C("SelectAntennaMap=%x\n ",pDM_SWAT_Table->SelectAntennaMap); + //DBG_8192C("Score_A=%d, Score_B=%d\n", Score_A, Score_B); + + if(pDM_SWAT_Table->CurAntenna == Antenna_A) + { + nextAntenna = (Score_A > Score_B)?Antenna_A:Antenna_B; + } + else + { + nextAntenna = (Score_B > Score_A)?Antenna_B:Antenna_A; + } + //RT_TRACE(COMP_SWAS, DBG_LOUD, ("nextAntenna=%s\n",(nextAntenna==Antenna_A)?"A":"B")); + //RT_TRACE(COMP_SWAS, DBG_LOUD, ("preAntenna= %s, curAntenna= %s \n", + //(DM_SWAT_Table.PreAntenna == Antenna_A?"A":"B"), (DM_SWAT_Table.CurAntenna == Antenna_A?"A":"B"))); + + if(nextAntenna != pDM_SWAT_Table->CurAntenna) + { + //DBG_8192C("SWAS: Switch back to another antenna\n"); + } + else + { + //DBG_8192C("SWAS: current anntena is good\n"); + } + } + + if(pDM_SWAT_Table->TestMode == RSSI_MODE) + { + //DBG_8192C("SWAS: TestMode = RSSI_MODE\n"); + pDM_SWAT_Table->SelectAntennaMap=0xAA; + if(curRSSI < pDM_SWAT_Table->PreRSSI) //Current antenna is worse than previous antenna + { + //DBG_8192C("SWAS: Switch back to another antenna\n"); + nextAntenna = (pDM_SWAT_Table->CurAntenna == Antenna_A)? Antenna_B : Antenna_A; + } + else // current anntena is good + { + nextAntenna = pDM_SWAT_Table->CurAntenna; + //DBG_8192C("SWAS: current anntena is good\n"); + } + } + pDM_SWAT_Table->try_flag = 0; + pHalData->RSSI_test = _FALSE; + pHalData->RSSI_sum_A = 0; + pHalData->RSSI_cnt_A = 0; + pHalData->RSSI_sum_B = 0; + pHalData->RSSI_cnt_B = 0; + pdmpriv->TXByteCnt_A = 0; + pdmpriv->TXByteCnt_B = 0; + pdmpriv->RXByteCnt_A = 0; + pdmpriv->RXByteCnt_B = 0; + + } + + //1 Normal State + else if(pDM_SWAT_Table->try_flag == 0) + { + if(pdmpriv->TrafficLoad == TRAFFIC_HIGH) + { + if(((curTxOkCnt+curRxOkCnt)>>1) > 1875000) + pdmpriv->TrafficLoad = TRAFFIC_HIGH; + else + pdmpriv->TrafficLoad = TRAFFIC_LOW; + } + else if(pdmpriv->TrafficLoad == TRAFFIC_LOW) + { + if(((curTxOkCnt+curRxOkCnt)>>1) > 1875000) + pdmpriv->TrafficLoad = TRAFFIC_HIGH; + else + pdmpriv->TrafficLoad = TRAFFIC_LOW; + } + if(pdmpriv->TrafficLoad == TRAFFIC_HIGH) + pDM_SWAT_Table->bTriggerAntennaSwitch = 0; + //DBG_8192C("Normal:TrafficLoad = %lld\n", curTxOkCnt+curRxOkCnt); + + //Prepare To Try Antenna + nextAntenna = (pDM_SWAT_Table->CurAntenna == Antenna_A)? Antenna_B : Antenna_A; + pDM_SWAT_Table->try_flag = 1; + pHalData->RSSI_test = _TRUE; + if((curRxOkCnt+curTxOkCnt) > 1000) + { + pDM_SWAT_Table->RSSI_Trying = 4; + pDM_SWAT_Table->TestMode = TP_MODE; + } + else + { + pDM_SWAT_Table->RSSI_Trying = 2; + pDM_SWAT_Table->TestMode = RSSI_MODE; + + } + //DBG_8192C("SWAS: Normal State -> Begin Trying! TestMode=%s\n",(pDM_SWAT_Table->TestMode == TP_MODE)?"TP":"RSSI"); + + + pHalData->RSSI_sum_A = 0; + pHalData->RSSI_cnt_A = 0; + pHalData->RSSI_sum_B = 0; + pHalData->RSSI_cnt_B = 0; + } + } + + //1 4.Change TRX antenna + if(nextAntenna != pDM_SWAT_Table->CurAntenna) + { + //DBG_8192C("@@@@@@@@ SWAS: Change TX Antenna!\n "); + rtw_antenna_select_cmd(Adapter, nextAntenna, 1); + } + + //1 5.Reset Statistics + pDM_SWAT_Table->PreAntenna = pDM_SWAT_Table->CurAntenna; + pDM_SWAT_Table->CurAntenna = nextAntenna; + pDM_SWAT_Table->PreRSSI = curRSSI; + + + //1 6.Set next timer + + if(pDM_SWAT_Table->RSSI_Trying == 0) + return; + + if(pDM_SWAT_Table->RSSI_Trying%2 == 0) + { + if(pDM_SWAT_Table->TestMode == TP_MODE) + { + if(pdmpriv->TrafficLoad == TRAFFIC_HIGH) + { + _set_timer(&pdmpriv->SwAntennaSwitchTimer,10 ); //ms + //DBG_8192C("dm_SW_AntennaSwitch(): Test another antenna for 10 ms\n"); + } + else if(pdmpriv->TrafficLoad == TRAFFIC_LOW) + { + _set_timer(&pdmpriv->SwAntennaSwitchTimer, 50 ); //ms + //DBG_8192C("dm_SW_AntennaSwitch(): Test another antenna for 50 ms\n"); + } + } + else + { + _set_timer(&pdmpriv->SwAntennaSwitchTimer, 500 ); //ms + //DBG_8192C("dm_SW_AntennaSwitch(): Test another antenna for 500 ms\n"); + } + } + else + { + if(pDM_SWAT_Table->TestMode == TP_MODE) + { + if(pdmpriv->TrafficLoad == TRAFFIC_HIGH) + _set_timer(&pdmpriv->SwAntennaSwitchTimer,90 ); //ms + else if(pdmpriv->TrafficLoad == TRAFFIC_LOW) + _set_timer(&pdmpriv->SwAntennaSwitchTimer,100 ); //ms + } + else + { + _set_timer(&pdmpriv->SwAntennaSwitchTimer,500 ); //ms + //DBG_8192C("dm_SW_AntennaSwitch(): Test another antenna for 500 ms\n"); + } + } + +// RT_TRACE(COMP_SWAS, DBG_LOUD, ("SWAS: -----The End-----\n ")); + +} + +// +// 20100514 Luke/Joseph: +// Callback function for 500ms antenna test trying. +// +static void dm_SW_AntennaSwitchCallback(void *FunctionContext) +{ + _adapter *padapter = (_adapter *)FunctionContext; + + if(padapter->net_closed == _TRUE) + return; + // Only + dm_SW_AntennaSwitch(padapter, SWAW_STEP_DETERMINE); +} + + +// +// 20100722 +// This function is used to gather the RSSI information for antenna testing. +// It selects the RSSI of the peer STA that we want to know. +// +void SwAntDivRSSICheck8192C(_adapter *padapter ,u32 RxPWDBAll) +{ + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(padapter); + struct mlme_priv *pmlmepriv = &padapter->mlmepriv; + struct dm_priv *pdmpriv = &pHalData->dmpriv; + + SWAT_T *pDM_SWAT_Table = &pdmpriv->DM_SWAT_Table; + + if(IS_92C_SERIAL(pHalData->VersionID) ||pHalData->AntDivCfg==0) + return; + + if(check_fwstate(pmlmepriv, _FW_LINKED) == _TRUE) + { + if(pDM_SWAT_Table->CurAntenna == Antenna_A) + { + pHalData->RSSI_sum_A += RxPWDBAll; + pHalData->RSSI_cnt_A++; + } + else + { + pHalData->RSSI_sum_B+= RxPWDBAll; + pHalData->RSSI_cnt_B++; + + } + //DBG_8192C("%s Ant_(%s),RSSI_sum(%d),RSSI_cnt(%d)\n",__FUNCTION__,(2==pHalData->CurAntenna)?"A":"B",pHalData->RSSI_sum,pHalData->RSSI_cnt); + } + +} + + + +static VOID +dm_SW_AntennaSwitchInit( + IN PADAPTER Adapter + ) +{ + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); + struct dm_priv *pdmpriv = &pHalData->dmpriv; + SWAT_T *pDM_SWAT_Table = &pdmpriv->DM_SWAT_Table; + + pHalData->RSSI_sum_A = 0; + pHalData->RSSI_sum_B = 0; + pHalData->RSSI_cnt_A = 0; + pHalData->RSSI_cnt_B = 0; + + pDM_SWAT_Table->CurAntenna = pHalData->CurAntenna; + pDM_SWAT_Table->PreAntenna = pHalData->CurAntenna; + pDM_SWAT_Table->try_flag = 0xff; + pDM_SWAT_Table->PreRSSI = 0; + pDM_SWAT_Table->bTriggerAntennaSwitch = 0; + pDM_SWAT_Table->SelectAntennaMap=0xAA; + + // Move the timer initialization to InitializeVariables function. + //PlatformInitializeTimer(Adapter, &pMgntInfo->SwAntennaSwitchTimer, (RT_TIMER_CALL_BACK)dm_SW_AntennaSwitchCallback, NULL, "SwAntennaSwitchTimer"); +} + +#endif + +//#define RSSI_CCK 0 +//#define RSSI_OFDM 1 +static void dm_RSSIMonitorInit( + IN PADAPTER Adapter +) +{ + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); + struct dm_priv *pdmpriv = &pHalData->dmpriv; + pdmpriv->OFDM_Pkt_Cnt = 0; + pdmpriv->RSSI_Select = RSSI_DEFAULT; +} + +static void dm_RSSIMonitorCheck( + IN PADAPTER Adapter +) +{ + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); + struct dm_priv *pdmpriv = &pHalData->dmpriv; + struct mlme_priv *pmlmepriv = &Adapter->mlmepriv; + + if(check_fwstate(pmlmepriv, _FW_LINKED) == _FALSE) + return; + + if(check_fwstate(pmlmepriv, WIFI_AP_STATE |WIFI_ADHOC_STATE) == _TRUE ) + { + if(Adapter->stapriv.asoc_sta_count < 2) + return; + } + + if(pdmpriv->OFDM_Pkt_Cnt == 0) + pdmpriv->RSSI_Select = RSSI_CCK; + else + pdmpriv->RSSI_Select = RSSI_OFDM; + + pdmpriv->OFDM_Pkt_Cnt = 0; + //DBG_8192C("RSSI_Select=%s OFDM_Pkt_Cnt(%d)\n", + //(pdmpriv->RSSI_Select == RSSI_OFDM)?"RSSI_OFDM":"RSSI_CCK", + //pdmpriv->OFDM_Pkt_Cnt); +} + +//============================================================ +// functions +//============================================================ +void rtl8192c_init_dm_priv(IN PADAPTER Adapter) +{ + PHAL_DATA_TYPE pHalData = GET_HAL_DATA(Adapter); + struct dm_priv *pdmpriv = &pHalData->dmpriv; + + //_rtw_memset(pdmpriv, 0, sizeof(struct dm_priv)); + +#ifdef CONFIG_SW_ANTENNA_DIVERSITY + _init_timer(&(pdmpriv->SwAntennaSwitchTimer), Adapter->pnetdev , dm_SW_AntennaSwitchCallback, Adapter); +#endif +} + +void rtl8192c_deinit_dm_priv(IN PADAPTER Adapter) +{ + PHAL_DATA_TYPE pHalData = GET_HAL_DATA(Adapter); + struct dm_priv *pdmpriv = &pHalData->dmpriv; + +#ifdef CONFIG_SW_ANTENNA_DIVERSITY + _cancel_timer_ex(&pdmpriv->SwAntennaSwitchTimer); +#endif +} +#ifdef CONFIG_HW_ANTENNA_DIVERSITY +void dm_InitHybridAntDiv(IN PADAPTER Adapter) +{ + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); + + if(IS_92C_SERIAL(pHalData->VersionID) ||pHalData->AntDivCfg==0) + return; + + //Set OFDM HW RX Antenna Diversity + PHY_SetBBReg(Adapter,0xc50, BIT7, 1); //Enable Hardware antenna switch + PHY_SetBBReg(Adapter,0x870, BIT9|BIT8, 0); //Enable hardware control of "ANT_SEL" & "ANT_SELB" + PHY_SetBBReg(Adapter,0xCA4, BIT11, 0); //Switch to another antenna by checking pwdb threshold + PHY_SetBBReg(Adapter,0xCA4, 0x7FF, 0x080); //Pwdb threshold=8dB + PHY_SetBBReg(Adapter,0xC54, BIT23, 1); //Decide final antenna by comparing 2 antennas' pwdb + PHY_SetBBReg(Adapter,0x874, BIT23, 0); //No update ANTSEL during GNT_BT=1 + PHY_SetBBReg(Adapter,0x80C, BIT21, 1); //TX atenna selection from tx_info + //Set CCK HW RX Antenna Diversity + PHY_SetBBReg(Adapter,0xA00, BIT15, 1);//Enable antenna diversity + PHY_SetBBReg(Adapter,0xA0C, BIT4, 0); //Antenna diversity decision period = 32 sample + PHY_SetBBReg(Adapter,0xA0C, 0xf, 0xf); //Threshold for antenna diversity. Check another antenna power if input power < ANT_lim*4 + PHY_SetBBReg(Adapter,0xA10, BIT13, 1); //polarity ana_A=1 and ana_B=0 + PHY_SetBBReg(Adapter,0xA14, 0x1f, 0x8); //default antenna power = inpwr*(0.5 + r_ant_step/16) + + pHalData->CCK_Ant1_Cnt = 0; + pHalData->CCK_Ant2_Cnt = 0; + pHalData->OFDM_Ant1_Cnt = 0; + pHalData->OFDM_Ant2_Cnt = 0; +} + + +#define RxDefaultAnt1 0x65a9 +#define RxDefaultAnt2 0x569a + +void dm_SelectRXDefault(IN PADAPTER Adapter) +{ + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); + + if(IS_92C_SERIAL(pHalData->VersionID) ||pHalData->AntDivCfg==0) + return; + + //DbgPrint(" Ant1_Cnt=%d, Ant2_Cnt=%d\n", pHalData->Ant1_Cnt, pHalData->Ant2_Cnt); + //DBG_8192C(" CCK_Ant1_Cnt = %d, CCK_Ant2_Cnt = %d\n", pHalData->CCK_Ant1_Cnt, pHalData->CCK_Ant2_Cnt); + //DBG_8192C(" OFDM_Ant1_Cnt = %d, OFDM_Ant2_Cnt = %d\n", pHalData->OFDM_Ant1_Cnt, pHalData->OFDM_Ant2_Cnt); + if((pHalData->OFDM_Ant1_Cnt == 0) && (pHalData->OFDM_Ant2_Cnt == 0)) + { + if((pHalData->CCK_Ant1_Cnt + pHalData->CCK_Ant2_Cnt) >=10 ) + { + if(pHalData->CCK_Ant1_Cnt > (5*pHalData->CCK_Ant2_Cnt)) + { + DBG_8192C(" RX Default = Ant1\n"); + PHY_SetBBReg(Adapter, 0x858, 0xFFFF, RxDefaultAnt1); + } + else if(pHalData->CCK_Ant2_Cnt > (5*pHalData->CCK_Ant1_Cnt)) + { + DBG_8192C(" RX Default = Ant2\n"); + PHY_SetBBReg(Adapter, 0x858, 0xFFFF, RxDefaultAnt2); + } + else if(pHalData->CCK_Ant1_Cnt > pHalData->CCK_Ant2_Cnt) + { + DBG_8192C(" RX Default = Ant2\n"); + PHY_SetBBReg(Adapter, 0x858, 0xFFFF, RxDefaultAnt2); + } + else + { + DBG_8192C(" RX Default = Ant1\n"); + PHY_SetBBReg(Adapter, 0x858, 0xFFFF, RxDefaultAnt1); + } + pHalData->CCK_Ant1_Cnt = 0; + pHalData->CCK_Ant2_Cnt = 0; + pHalData->OFDM_Ant1_Cnt = 0; + pHalData->OFDM_Ant2_Cnt = 0; + } + } + else + { + if(pHalData->OFDM_Ant1_Cnt > pHalData->OFDM_Ant2_Cnt) + { + DBG_8192C(" RX Default = Ant1\n"); + PHY_SetBBReg(Adapter, 0x858, 0xFFFF, RxDefaultAnt1); + } + else + { + DBG_8192C(" RX Default = Ant2\n"); + PHY_SetBBReg(Adapter, 0x858, 0xFFFF, RxDefaultAnt2); + } + pHalData->CCK_Ant1_Cnt = 0; + pHalData->CCK_Ant2_Cnt = 0; + pHalData->OFDM_Ant1_Cnt = 0; + pHalData->OFDM_Ant2_Cnt = 0; + } + + +} + +#endif + +void +rtl8192c_InitHalDm( + IN PADAPTER Adapter + ) +{ + PHAL_DATA_TYPE pHalData = GET_HAL_DATA(Adapter); + struct dm_priv *pdmpriv = &pHalData->dmpriv; + u8 i; + +#ifdef CONFIG_USB_HCI + dm_InitGPIOSetting(Adapter); +#endif + + pdmpriv->DM_Type = DM_Type_ByDriver; + pdmpriv->DMFlag = DYNAMIC_FUNC_DISABLE; + pdmpriv->UndecoratedSmoothedPWDB = (-1); + pdmpriv->UndecoratedSmoothedCCK = (-1); + + + //.1 DIG INIT + pdmpriv->bDMInitialGainEnable = _TRUE; + pdmpriv->DMFlag |= DYNAMIC_FUNC_DIG; + dm_DIGInit(Adapter); + + //.2 DynamicTxPower INIT + pdmpriv->DMFlag |= DYNAMIC_FUNC_HP; + dm_InitDynamicTxPower(Adapter); + + //.3 + DM_InitEdcaTurbo(Adapter); + + //.4 RateAdaptive INIT + dm_InitRateAdaptiveMask(Adapter); + + //.5 Tx Power Tracking Init. + pdmpriv->DMFlag |= DYNAMIC_FUNC_SS; + DM_InitializeTXPowerTracking(Adapter); + +#ifdef CONFIG_BT_COEXIST + pdmpriv->DMFlag |= DYNAMIC_FUNC_BT; + dm_InitBtCoexistDM(Adapter); +#endif + + dm_InitDynamicBBPowerSaving(Adapter); + +#ifdef CONFIG_SW_ANTENNA_DIVERSITY + pdmpriv->DMFlag |= DYNAMIC_FUNC_ANT_DIV; + dm_SW_AntennaSwitchInit(Adapter); +#endif + +#ifdef CONFIG_HW_ANTENNA_DIVERSITY + pdmpriv->DMFlag |= DYNAMIC_FUNC_ANT_DIV; + dm_InitHybridAntDiv(Adapter); +#endif + + dm_RSSIMonitorInit(Adapter); + + pdmpriv->DMFlag_tmp = pdmpriv->DMFlag; + + // Save REG_INIDATA_RATE_SEL value for TXDESC. + for(i = 0 ; i<32 ; i++) + { + pdmpriv->INIDATA_RATE[i] = rtw_read8(Adapter, REG_INIDATA_RATE_SEL+i) & 0x3f; + } + +#ifdef CONFIG_DM_ADAPTIVITY + pdmpriv->DMFlag |= DYNAMIC_FUNC_ADAPTIVITY; + dm_adaptivity_init(Adapter); +#endif + +} + +#ifdef CONFIG_CONCURRENT_MODE +static void FindMinimumRSSI(PADAPTER Adapter) +{ + PHAL_DATA_TYPE pbuddy_HalData; + struct dm_priv *pbuddy_dmpriv; + PHAL_DATA_TYPE pHalData = GET_HAL_DATA(Adapter); + struct dm_priv *pdmpriv = &pHalData->dmpriv; + PADAPTER pbuddy_adapter = Adapter->pbuddy_adapter; + struct mlme_priv *pmlmepriv = &Adapter->mlmepriv; + + if(!rtw_buddy_adapter_up(Adapter)) + return; + + pbuddy_HalData = GET_HAL_DATA(pbuddy_adapter); + pbuddy_dmpriv = &pbuddy_HalData->dmpriv; + + //get min. [PWDB] when both interfaces are connected + if((check_fwstate(pmlmepriv, WIFI_AP_STATE) == _TRUE + && Adapter->stapriv.asoc_sta_count > 2 + && check_buddy_fwstate(Adapter, _FW_LINKED)) || + (check_buddy_fwstate(Adapter, WIFI_AP_STATE) == _TRUE + && pbuddy_adapter->stapriv.asoc_sta_count > 2 + && check_fwstate(pmlmepriv, _FW_LINKED) == _TRUE) || + (check_fwstate(pmlmepriv, WIFI_STATION_STATE) + && check_fwstate(pmlmepriv, _FW_LINKED) + && check_buddy_fwstate(Adapter,WIFI_STATION_STATE) + && check_buddy_fwstate(Adapter,_FW_LINKED))) + { + if(pdmpriv->UndecoratedSmoothedPWDB > pbuddy_dmpriv->UndecoratedSmoothedPWDB) + pdmpriv->UndecoratedSmoothedPWDB = pbuddy_dmpriv->UndecoratedSmoothedPWDB; + }//primary interface is not connected + else if((check_buddy_fwstate(Adapter, WIFI_AP_STATE) == _TRUE + && pbuddy_adapter->stapriv.asoc_sta_count > 2) || + (check_buddy_fwstate(Adapter,WIFI_STATION_STATE) + && check_buddy_fwstate(Adapter,_FW_LINKED))) + { + pdmpriv->UndecoratedSmoothedPWDB = pbuddy_dmpriv->UndecoratedSmoothedPWDB; + } + //secondary is not connected + else if((check_fwstate(pmlmepriv, WIFI_AP_STATE) == _TRUE + && Adapter->stapriv.asoc_sta_count > 2) || + (check_fwstate(pmlmepriv, WIFI_STATION_STATE) + && check_fwstate(pmlmepriv, _FW_LINKED))) + { + pbuddy_dmpriv->UndecoratedSmoothedPWDB = 0; + } + //both interfaces are not connected + else + { + pdmpriv->UndecoratedSmoothedPWDB = 0; + pbuddy_dmpriv->UndecoratedSmoothedPWDB = 0; + } + + //primary interface is ap mode + if(check_fwstate(pmlmepriv, WIFI_AP_STATE) == _TRUE && Adapter->stapriv.asoc_sta_count > 2) + { + pbuddy_dmpriv->EntryMinUndecoratedSmoothedPWDB = 0; + }//secondary interface is ap mode + else if(check_buddy_fwstate(Adapter, WIFI_AP_STATE) == _TRUE && pbuddy_adapter->stapriv.asoc_sta_count > 2) + { + pdmpriv->EntryMinUndecoratedSmoothedPWDB = pbuddy_dmpriv->EntryMinUndecoratedSmoothedPWDB; + } + else //both interfaces are not ap mode + { + pdmpriv->EntryMinUndecoratedSmoothedPWDB = pbuddy_dmpriv->EntryMinUndecoratedSmoothedPWDB = 0; + } + +} + +#endif //CONFIG_CONCURRENT_MODE + +VOID +rtl8192c_HalDmWatchDog( + IN PADAPTER Adapter + ) +{ + BOOLEAN bFwCurrentInPSMode = _FALSE; + BOOLEAN bFwPSAwake = _TRUE; + u8 hw_init_completed = _FALSE; + PHAL_DATA_TYPE pHalData = GET_HAL_DATA(Adapter); + struct dm_priv *pdmpriv = &pHalData->dmpriv; + struct mlme_priv *pmlmepriv = &Adapter->mlmepriv; +#ifdef CONFIG_CONCURRENT_MODE + PADAPTER pbuddy_adapter = Adapter->pbuddy_adapter; +#endif //CONFIG_CONCURRENT_MODE + + #if defined(CONFIG_CONCURRENT_MODE) + if (Adapter->isprimary == _FALSE && pbuddy_adapter) { + hw_init_completed = pbuddy_adapter->hw_init_completed; + } else + #endif + { + hw_init_completed = Adapter->hw_init_completed; + } + + if (hw_init_completed == _FALSE) + goto skip_dm; + +#ifdef CONFIG_LPS + #if defined(CONFIG_CONCURRENT_MODE) + if (Adapter->iface_type != IFACE_PORT0 && pbuddy_adapter) { + bFwCurrentInPSMode = pbuddy_adapter->pwrctrlpriv.bFwCurrentInPSMode; + rtw_hal_get_hwreg(pbuddy_adapter, HW_VAR_FWLPS_RF_ON, (u8 *)(&bFwPSAwake)); + } else + #endif + { + bFwCurrentInPSMode = Adapter->pwrctrlpriv.bFwCurrentInPSMode; + rtw_hal_get_hwreg(Adapter, HW_VAR_FWLPS_RF_ON, (u8 *)(&bFwPSAwake)); + } +#endif + +#ifdef CONFIG_P2P_PS + // Fw is under p2p powersaving mode, driver should stop dynamic mechanism. + // modifed by thomas. 2011.06.11. + if(Adapter->wdinfo.p2p_ps_mode) + bFwPSAwake = _FALSE; +#endif // CONFIG_P2P_PS + + // Stop dynamic mechanism when: + // 1. RF is OFF. (No need to do DM.) + // 2. Fw is under power saving mode for FwLPS. (Prevent from SW/FW I/O racing.) + // 3. IPS workitem is scheduled. (Prevent from IPS sequence to be swapped with DM. + // Sometimes DM execution time is longer than 100ms such that the assertion + // in MgntActSet_RF_State() called by InactivePsWorkItem will be triggered by + // wating to long for RFChangeInProgress.) + // 4. RFChangeInProgress is TRUE. (Prevent from broken by IPS/HW/SW Rf off.) + // Noted by tynli. 2010.06.01. + //if(rfState == eRfOn) + if( (hw_init_completed == _TRUE) + && ((!bFwCurrentInPSMode) && bFwPSAwake)) + { + // + // Calculate Tx/Rx statistics. + // + dm_CheckStatistics(Adapter); + + // + // For PWDB monitor and record some value for later use. + // + PWDB_Monitor(Adapter); + + dm_RSSIMonitorCheck(Adapter); + +#ifdef CONFIG_CONCURRENT_MODE + if(Adapter->adapter_type > PRIMARY_ADAPTER) + goto _record_initrate; + + FindMinimumRSSI(Adapter); +#endif + + // + // Dynamic Initial Gain mechanism. + // + dm_FalseAlarmCounterStatistics(Adapter); + dm_DIG(Adapter); + dm_adaptivity(Adapter); + + // + //Dynamic BB Power Saving Mechanism + // + dm_DynamicBBPowerSaving(Adapter); + + // + // Dynamic Tx Power mechanism. + // + dm_DynamicTxPower(Adapter); + + // + // Tx Power Tracking. + // +#if MP_DRIVER == 0 +#ifdef CONFIG_BUSY_TRAFFIC_SKIP_PWR_TRACK + if(pmlmepriv->LinkDetectInfo.bBusyTraffic == _FALSE) +#endif //CONFIG_BUSY_TRAFFIC_SKIP_PWR_TRACK +#endif + rtl8192c_dm_CheckTXPowerTracking(Adapter); + + // + // Rate Adaptive by Rx Signal Strength mechanism. + // + dm_RefreshRateAdaptiveMask(Adapter); + +#ifdef CONFIG_BT_COEXIST + //BT-Coexist + dm_BTCoexist(Adapter); +#endif + + // EDCA turbo + //update the EDCA paramter according to the Tx/RX mode + //update_EDCA_param(Adapter); + dm_CheckEdcaTurbo(Adapter); + + // + // Dynamically switch RTS/CTS protection. + // + //dm_CheckProtection(Adapter); + +#ifdef CONFIG_SW_ANTENNA_DIVERSITY + // + // Software Antenna diversity + // + dm_SW_AntennaSwitch(Adapter, SWAW_STEP_PEAK); +#endif + +#ifdef CONFIG_HW_ANTENNA_DIVERSITY + //Hybrid Antenna Diversity + dm_SelectRXDefault(Adapter); +#endif + +#ifdef CONFIG_PCI_HCI + // 20100630 Joseph: Disable Interrupt Migration mechanism temporarily because it degrades Rx throughput. + // Tx Migration settings. + //dm_InterruptMigration(Adapter); + + //if(Adapter->HalFunc.TxCheckStuckHandler(Adapter)) + // PlatformScheduleWorkItem(&(GET_HAL_DATA(Adapter)->HalResetWorkItem)); +#endif + + +_record_initrate: + + // Read REG_INIDATA_RATE_SEL value for TXDESC. + if(check_fwstate(&Adapter->mlmepriv, WIFI_STATION_STATE) == _TRUE) + { + pdmpriv->INIDATA_RATE[0] = rtw_read8(Adapter, REG_INIDATA_RATE_SEL) & 0x3f; + +#ifdef CONFIG_TDLS + if(Adapter->tdlsinfo.setup_state == TDLS_LINKED_STATE) + { + u8 i=1; + for(; i < (Adapter->tdlsinfo.macid_index) ; i++) + { + pdmpriv->INIDATA_RATE[i] = rtw_read8(Adapter, (REG_INIDATA_RATE_SEL+i)) & 0x3f; + } + } +#endif //CONFIG_TDLS + + } + else + { + u8 i; + for(i=1 ; i < (Adapter->stapriv.asoc_sta_count + 1); i++) + { + pdmpriv->INIDATA_RATE[i] = rtw_read8(Adapter, (REG_INIDATA_RATE_SEL+i)) & 0x3f; + } + } + } + +skip_dm: + + // Check GPIO to determine current RF on/off and Pbc status. + // Check Hardware Radio ON/OFF or not + //if(Adapter->MgntInfo.PowerSaveControl.bGpioRfSw) + //{ + //RTPRINT(FPWR, PWRHW, ("dm_CheckRfCtrlGPIO \n")); + // dm_CheckRfCtrlGPIO(Adapter); + //} + +#ifdef CONFIG_PCI_HCI + if(pHalData->bGpioHwWpsPbc) +#endif + { + dm_CheckPbcGPIO(Adapter); // Add by hpfan 2008-03-11 + } + +} --- linux-raspi2-4.2.0.orig/drivers/net/wireless/rtl8192cu/hal/rtl8192c/rtl8192c_hal_init.c +++ linux-raspi2-4.2.0/drivers/net/wireless/rtl8192cu/hal/rtl8192c/rtl8192c_hal_init.c @@ -0,0 +1,3627 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved. + * + * 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 + * published by the Free Software Foundation. + * + * 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 Street, Fifth Floor, Boston, MA 02110, USA + * + * + ******************************************************************************/ + +#define _RTL8192C_HAL_INIT_C_ +#include +#include +#include +#include +#include + +#include + +#ifdef CONFIG_USB_HCI +#include +#endif + +#ifdef CONFIG_PCI_HCI +#include +#endif + +static BOOLEAN +hal_EfusePgPacketWrite2ByteHeader( + IN PADAPTER pAdapter, + IN u8 efuseType, + IN u16 *pAddr, + IN PPGPKT_STRUCT pTargetPkt, + IN BOOLEAN bPseudoTest); +static BOOLEAN +hal_EfusePgPacketWrite1ByteHeader( + IN PADAPTER pAdapter, + IN u8 efuseType, + IN u16 *pAddr, + IN PPGPKT_STRUCT pTargetPkt, + IN BOOLEAN bPseudoTest); +static BOOLEAN +hal_EfusePgPacketWriteData( + IN PADAPTER pAdapter, + IN u8 efuseType, + IN u16 *pAddr, + IN PPGPKT_STRUCT pTargetPkt, + IN BOOLEAN bPseudoTest); +static BOOLEAN +hal_EfusePgPacketWrite_BT( + IN PADAPTER pAdapter, + IN u8 offset, + IN u8 word_en, + IN u8 *pData, + IN BOOLEAN bPseudoTest); + +static VOID +_FWDownloadEnable( + IN PADAPTER Adapter, + IN BOOLEAN enable + ) +{ + u8 tmp; + + if(enable) + { + #ifdef DBG_SHOW_MCUFWDL_BEFORE_51_ENABLE + { + u8 val; + if( (val=rtw_read8(Adapter, REG_MCUFWDL))) + DBG_871X("DBG_SHOW_MCUFWDL_BEFORE_51_ENABLE %s:%d REG_MCUFWDL:0x%02x\n", __FUNCTION__, __LINE__, val); + } + #endif + + // 8051 enable + tmp = rtw_read8(Adapter, REG_SYS_FUNC_EN+1); + rtw_write8(Adapter, REG_SYS_FUNC_EN+1, tmp|0x04); + + // MCU firmware download enable. + tmp = rtw_read8(Adapter, REG_MCUFWDL); + rtw_write8(Adapter, REG_MCUFWDL, tmp|0x01); + + // 8051 reset + tmp = rtw_read8(Adapter, REG_MCUFWDL+2); + rtw_write8(Adapter, REG_MCUFWDL+2, tmp&0xf7); + } + else + { + // MCU firmware download enable. + tmp = rtw_read8(Adapter, REG_MCUFWDL); + rtw_write8(Adapter, REG_MCUFWDL, tmp&0xfe); + + // Reserved for fw extension. + rtw_write8(Adapter, REG_MCUFWDL+1, 0x00); + } +} + + +#define MAX_REG_BOLCK_SIZE 196 +#define MIN_REG_BOLCK_SIZE 8 + +static int +_BlockWrite( + IN PADAPTER Adapter, + IN PVOID buffer, + IN u32 size + ) +{ + int ret = _SUCCESS; + +#ifdef CONFIG_PCI_HCI + u32 blockSize = sizeof(u32); // Use 4-byte write to download FW + u8 *bufferPtr = (u8 *)buffer; + u32 *pu4BytePtr = (u32 *)buffer; + u32 i, offset, blockCount, remainSize; + u8 remainFW[4] = {0, 0, 0, 0}; + u8 *p = NULL; + + blockCount = size / blockSize; + remainSize = size % blockSize; + + for(i = 0 ; i < blockCount ; i++){ + offset = i * blockSize; + rtw_write32(Adapter, (FW_8192C_START_ADDRESS + offset), cpu_to_le32(*(pu4BytePtr + i))); + } + + p = (u8*)((u32*)(bufferPtr + blockCount * blockSize)); + if(remainSize){ + switch (remainSize) { + case 0: + break; + case 3: + remainFW[2]=*(p+2); + case 2: + remainFW[1]=*(p+1); + case 1: + remainFW[0]=*(p); + ret = rtw_write32(Adapter, (FW_8192C_START_ADDRESS + blockCount * blockSize), + le32_to_cpu(*(u32*)remainFW)); + } + return ret; + } +#else + +#ifdef SUPPORTED_BLOCK_IO + u32 blockSize = MAX_REG_BOLCK_SIZE; // Use 196-byte write to download FW + u32 blockSize2 = MIN_REG_BOLCK_SIZE; +#else + u32 blockSize = sizeof(u32); // Use 4-byte write to download FW + u32* pu4BytePtr = (u32*)buffer; + u32 blockSize2 = sizeof(u8); +#endif + u8* bufferPtr = (u8*)buffer; + u32 i, offset = 0, offset2, blockCount, remainSize, remainSize2; + + blockCount = size / blockSize; + remainSize = size % blockSize; + + for(i = 0 ; i < blockCount ; i++){ + offset = i * blockSize; + #ifdef SUPPORTED_BLOCK_IO + ret = rtw_writeN(Adapter, (FW_8192C_START_ADDRESS + offset), blockSize, (bufferPtr + offset)); + #else + ret = rtw_write32(Adapter, (FW_8192C_START_ADDRESS + offset), le32_to_cpu(*(pu4BytePtr + i))); + #endif + + if(ret == _FAIL) + goto exit; + } + + if(remainSize){ + #if defined(SUPPORTED_BLOCK_IO) && defined(DBG_BLOCK_WRITE_ISSUE) //Can this be enabled? + offset = blockCount * blockSize; + ret = rtw_writeN(Adapter, (FW_8192C_START_ADDRESS + offset), remainSize, (bufferPtr + offset)); + goto exit; + #endif + offset2 = blockCount * blockSize; + blockCount = remainSize / blockSize2; + remainSize2 = remainSize % blockSize2; + + for(i = 0 ; i < blockCount ; i++){ + offset = offset2 + i * blockSize2; + #ifdef SUPPORTED_BLOCK_IO + ret = rtw_writeN(Adapter, (FW_8192C_START_ADDRESS + offset), blockSize2, (bufferPtr + offset)); + #else + ret = rtw_write8(Adapter, (FW_8192C_START_ADDRESS + offset ), *(bufferPtr + offset)); + #endif + + if(ret == _FAIL) + goto exit; + } + + if(remainSize2) + { + offset += blockSize2; + bufferPtr += offset; + + for(i = 0 ; i < remainSize2 ; i++){ + ret = rtw_write8(Adapter, (FW_8192C_START_ADDRESS + offset + i), *(bufferPtr + i)); + + if(ret == _FAIL) + goto exit; + } + } + } +#endif + +exit: + return ret; +} + +static int +_PageWrite( + IN PADAPTER Adapter, + IN u32 page, + IN PVOID buffer, + IN u32 size + ) +{ + u8 value8; + u8 u8Page = (u8) (page & 0x07) ; + + value8 = (rtw_read8(Adapter, REG_MCUFWDL+2)& 0xF8 ) | u8Page ; + rtw_write8(Adapter, REG_MCUFWDL+2,value8); + return _BlockWrite(Adapter,buffer,size); +} + +static VOID +_FillDummy( + u8* pFwBuf, + u32* pFwLen + ) +{ + u32 FwLen = *pFwLen; + u8 remain = (u8)(FwLen%4); + remain = (remain==0)?0:(4-remain); + + while(remain>0) + { + pFwBuf[FwLen] = 0; + FwLen++; + remain--; + } + + *pFwLen = FwLen; +} + +static int +_WriteFW( + IN PADAPTER Adapter, + IN PVOID buffer, + IN u32 size + ) +{ + // Since we need dynamic decide method of dwonload fw, so we call this function to get chip version. + // We can remove _ReadChipVersion from ReadAdapterInfo8192C later. + + int ret = _SUCCESS; + u32 pageNums,remainSize ; + u32 page,offset; + u8* bufferPtr = (u8*)buffer; + +#ifdef CONFIG_PCI_HCI + // 20100120 Joseph: Add for 88CE normal chip. + // Fill in zero to make firmware image to dword alignment. +// _FillDummy(bufferPtr, &size); +#endif + + pageNums = size / MAX_PAGE_SIZE ; + //RT_ASSERT((pageNums <= 4), ("Page numbers should not greater then 4 \n")); + remainSize = size % MAX_PAGE_SIZE; + + for(page = 0; page < pageNums; page++){ + offset = page *MAX_PAGE_SIZE; + ret = _PageWrite(Adapter,page, (bufferPtr+offset),MAX_PAGE_SIZE); + + if(ret == _FAIL) + goto exit; + } + if(remainSize){ + offset = pageNums *MAX_PAGE_SIZE; + page = pageNums; + ret = _PageWrite(Adapter,page, (bufferPtr+offset),remainSize); + + if(ret == _FAIL) + goto exit; + } + //RT_TRACE(COMP_INIT, DBG_LOUD, ("_WriteFW Done- for Normal chip.\n")); + +exit: + return ret; +} + +static int _FWFreeToGo( + IN PADAPTER Adapter + ) +{ + u32 counter = 0; + u32 value32; + u32 restarted = _FALSE; + + // polling CheckSum report + do{ + value32 = rtw_read32(Adapter, REG_MCUFWDL); + }while((counter ++ < POLLING_READY_TIMEOUT_COUNT) && (!(value32 & FWDL_ChkSum_rpt))); + + if(counter >= POLLING_READY_TIMEOUT_COUNT){ + DBG_8192C("chksum report faill ! REG_MCUFWDL:0x%08x\n",value32); + return _FAIL; + } else { + //DBG_8192C("chksum report success ! REG_MCUFWDL:0x%08x, counter:%u\n",value32, counter); + } + //RT_TRACE(COMP_INIT, DBG_LOUD, ("Checksum report OK ! REG_MCUFWDL:0x%08x .\n",value32)); + + + value32 = rtw_read32(Adapter, REG_MCUFWDL); + value32 |= MCUFWDL_RDY; + value32 &= ~WINTINI_RDY; + rtw_write32(Adapter, REG_MCUFWDL, value32); + + +POLLING_FW_READY: + // polling for FW ready + counter = 0; + do + { + if(rtw_read32(Adapter, REG_MCUFWDL) & WINTINI_RDY){ + //RT_TRACE(COMP_INIT, DBG_SERIOUS, ("Polling FW ready success!! REG_MCUFWDL:0x%08x .\n",PlatformIORead4Byte(Adapter, REG_MCUFWDL)) ); + return _SUCCESS; + } + rtw_udelay_os(5); + }while(counter++ < POLLING_READY_TIMEOUT_COUNT); + + DBG_8192C("Polling FW ready fail!! REG_MCUFWDL:0x%08x .\n", rtw_read32(Adapter, REG_MCUFWDL)); + + if(restarted == _FALSE) { + u8 tmp = rtw_read8(Adapter, REG_SYS_FUNC_EN+1); + DBG_8192C("Reset 51 write8 REG_SYS_FUNC_EN:0x%04x\n", tmp & ~BIT2); + rtw_write8(Adapter, REG_SYS_FUNC_EN+1, tmp & ~BIT2); + DBG_8192C("Reset 51 write8 REG_SYS_FUNC_EN:0x%04x\n", tmp|BIT2); + rtw_write8(Adapter, REG_SYS_FUNC_EN+1, tmp|BIT2); + restarted = _TRUE; + goto POLLING_FW_READY; + } + + + return _FAIL; + +} + + +VOID +rtl8192c_FirmwareSelfReset( + IN PADAPTER Adapter +) +{ + u8 u1bTmp; + u8 Delay = 100; + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); + + if((pHalData->FirmwareVersion > 0x21) || + (pHalData->FirmwareVersion == 0x21 && + pHalData->FirmwareSubVersion >= 0x01)) // after 88C Fw v33.1 + { + //0x1cf=0x20. Inform 8051 to reset. 2009.12.25. tynli_test + rtw_write8(Adapter, REG_HMETFR+3, 0x20); + + u1bTmp = rtw_read8(Adapter, REG_SYS_FUNC_EN+1); + while(u1bTmp&BIT2) + { + Delay--; + if(Delay == 0) + break; + rtw_udelay_os(50); + u1bTmp = rtw_read8(Adapter, REG_SYS_FUNC_EN+1); + } + + if((u1bTmp&BIT2) && (Delay == 0)) + { + DBG_8192C("FirmwareDownload92C():fw reset by itself Fail!!!!!! 0x03 = %x\n", u1bTmp); + //RT_ASSERT(FALSE, ("PowerOffAdapter8192CE(): 0x03 = %x\n", u1bTmp)); + #ifdef DBG_SHOW_MCUFWDL_BEFORE_51_ENABLE + { + u8 val; + if( (val=rtw_read8(Adapter, REG_MCUFWDL))) + DBG_871X("DBG_SHOW_MCUFWDL_BEFORE_51_ENABLE %s:%d REG_MCUFWDL:0x%02x\n", __FUNCTION__, __LINE__, val); + } + #endif + rtw_write8(Adapter,REG_SYS_FUNC_EN+1,(rtw_read8(Adapter, REG_SYS_FUNC_EN+1)&~BIT2)); + } + + DBG_8192C("%s =====> 8051 reset success (%d) .\n", __FUNCTION__ ,Delay); + } +} + +#ifdef CONFIG_FILE_FWIMG +extern char *rtw_fw_file_path; +u8 FwBuffer8192C[FW_8192C_SIZE]; +#endif //CONFIG_FILE_FWIMG +// +// Description: +// Download 8192C firmware code. +// +// +int FirmwareDownload92C( + IN PADAPTER Adapter, + IN BOOLEAN bUsedWoWLANFw +) +{ + int rtStatus = _SUCCESS; + u8 writeFW_retry = 0; + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); + s8 R92CFwImageFileName_TSMC[] ={RTL8192C_FW_TSMC_IMG}; + s8 R92CFwImageFileName_UMC[] ={RTL8192C_FW_UMC_IMG}; + s8 R92CFwImageFileName_UMC_B[] ={RTL8192C_FW_UMC_B_IMG}; +#ifdef CONFIG_WOWLAN + s8 R92CFwImageFileName_TSMC_WW[] ={RTL8192C_FW_TSMC_WW_IMG}; + s8 R92CFwImageFileName_UMC_WW[] ={RTL8192C_FW_UMC_WW_IMG}; + s8 R92CFwImageFileName_UMC_B_WW[] ={RTL8192C_FW_UMC_B_WW_IMG}; +#endif //CONFIG_WOWLAN + + //s8 R8723FwImageFileName_UMC[] ={RTL8723_FW_UMC_IMG}; + u8* FwImage = NULL; + u32 FwImageLen = 0; + char* pFwImageFileName; +#ifdef CONFIG_WOWLAN + u8* FwImageWoWLAN; + u32 FwImageWoWLANLen; + char* pFwImageFileName_WoWLAN; +#endif //CONFIG_WOWLAN + u8* pucMappedFile = NULL; + //vivi, merge 92c and 92s into one driver, 20090817 + //vivi modify this temply, consider it later!!!!!!!! + //PRT_FIRMWARE pFirmware = GET_FIRMWARE_819X(Adapter); + //PRT_FIRMWARE_92C pFirmware = GET_FIRMWARE_8192C(Adapter); + PRT_FIRMWARE_92C pFirmware = NULL; + PRT_8192C_FIRMWARE_HDR pFwHdr = NULL; + u8 *pFirmwareBuf; + u32 FirmwareLen; + + pFirmware = (PRT_FIRMWARE_92C)rtw_zvmalloc(sizeof(RT_FIRMWARE_92C)); + + if(!pFirmware) + { + rtStatus = _FAIL; + goto Exit; + } + + if(IS_VENDOR_UMC_A_CUT(pHalData->VersionID) && !IS_92C_SERIAL(pHalData->VersionID)) + { + pFwImageFileName = R92CFwImageFileName_UMC; + FwImage = Rtl819XFwUMCACutImageArray; + FwImageLen = UMCACutImgArrayLength; +#ifdef CONFIG_WOWLAN + pFwImageFileName_WoWLAN = R92CFwImageFileName_UMC_WW; + FwImageWoWLAN= Rtl8192C_FwUMCWWImageArray; + FwImageWoWLANLen =UMCACutWWImgArrayLength ; +#endif //CONFIG_WOWLAN + DBG_8192C(" ===> FirmwareDownload91C() fw:Rtl819XFwImageArray_UMC\n"); + } + else if(IS_81xxC_VENDOR_UMC_B_CUT(pHalData->VersionID)) + { + // The ROM code of UMC B-cut Fw is the same as TSMC. by tynli. 2011.01.14. + pFwImageFileName = R92CFwImageFileName_UMC_B; + FwImage = Rtl819XFwUMCBCutImageArray; + FwImageLen = UMCBCutImgArrayLength; +#ifdef CONFIG_WOWLAN + pFwImageFileName_WoWLAN = R92CFwImageFileName_UMC_B_WW; + FwImageWoWLAN= Rtl8192C_FwUMCBCutWWImageArray; + FwImageWoWLANLen =UMCBCutWWImgArrayLength ; +#endif //CONFIG_WOWLAN + + DBG_8192C(" ===> FirmwareDownload91C() fw:Rtl819XFwImageArray_UMC_B\n"); + } + else + { + pFwImageFileName = R92CFwImageFileName_TSMC; + FwImage = Rtl819XFwTSMCImageArray; + FwImageLen = TSMCImgArrayLength; +#ifdef CONFIG_WOWLAN + pFwImageFileName_WoWLAN = R92CFwImageFileName_TSMC_WW; + FwImageWoWLAN= Rtl8192C_FwTSMCWWImageArray; + FwImageWoWLANLen =TSMCWWImgArrayLength ; +#endif //CONFIG_WOWLAN + DBG_8192C(" ===> FirmwareDownload91C() fw:Rtl819XFwImageArray_TSMC\n"); + } + + //RT_TRACE(COMP_INIT, DBG_LOUD, (" ===> FirmwareDownload91C() fw:%s\n", pFwImageFileName)); + + #ifdef CONFIG_FILE_FWIMG + if(rtw_is_file_readable(rtw_fw_file_path) == _TRUE) + { + DBG_871X("%s accquire FW from file:%s\n", __FUNCTION__, rtw_fw_file_path); + pFirmware->eFWSource = FW_SOURCE_IMG_FILE; // We should decided by Reg. + } + else + #endif //CONFIG_FILE_FWIMG + { + DBG_871X("%s accquire FW from embedded image\n", __FUNCTION__); + pFirmware->eFWSource = FW_SOURCE_HEADER_FILE; + } + + + switch(pFirmware->eFWSource) + { + case FW_SOURCE_IMG_FILE: + + #ifdef CONFIG_FILE_FWIMG + rtStatus = rtw_retrive_from_file(rtw_fw_file_path, FwBuffer8192C, FW_8192C_SIZE); + pFirmware->ulFwLength = rtStatus>=0?rtStatus:0; + pFirmware->szFwBuffer = FwBuffer8192C; + #endif //CONFIG_FILE_FWIMG + + if(pFirmware->ulFwLength <= 0) + { + rtStatus = _FAIL; + goto Exit; + } + break; + case FW_SOURCE_HEADER_FILE: + if(FwImageLen > FW_8192C_SIZE){ + rtStatus = _FAIL; + //RT_TRACE(COMP_INIT, DBG_SERIOUS, ("Firmware size exceed 0x%X. Check it.\n", FW_8192C_SIZE) ); + DBG_871X("Firmware size exceed 0x%X. Check it.\n", FW_8192C_SIZE); + goto Exit; + } + + pFirmware->szFwBuffer = FwImage; + pFirmware->ulFwLength = FwImageLen; +#ifdef CONFIG_WOWLAN + { + pFirmware->szWoWLANFwBuffer=FwImageWoWLAN; + pFirmware->ulWoWLANFwLength = FwImageWoWLANLen; + } +#endif //CONFIG_WOWLAN + + break; + } + +#ifdef CONFIG_WOWLAN + if(bUsedWoWLANFw) { + pFirmwareBuf = pFirmware->szWoWLANFwBuffer; + FirmwareLen = pFirmware->ulWoWLANFwLength; + pFwHdr = (PRT_8192C_FIRMWARE_HDR)pFirmware->szWoWLANFwBuffer; + } + else +#endif //CONFIG_WOWLAN + { + #ifdef DBG_FW_STORE_FILE_PATH //used to store firmware to file... + if(pFirmware->ulFwLength > 0) + { + rtw_store_to_file(DBG_FW_STORE_FILE_PATH, pFirmware->szFwBuffer, pFirmware->ulFwLength); + } + #endif + + pFirmwareBuf = pFirmware->szFwBuffer; + FirmwareLen = pFirmware->ulFwLength; + + // To Check Fw header. Added by tynli. 2009.12.04. + pFwHdr = (PRT_8192C_FIRMWARE_HDR)pFirmware->szFwBuffer; + } + pHalData->FirmwareVersion = le16_to_cpu(pFwHdr->Version); + pHalData->FirmwareSubVersion = le16_to_cpu(pFwHdr->Subversion); + + //RT_TRACE(COMP_INIT, DBG_LOUD, (" FirmwareVersion(%#x), Signature(%#x)\n", + // Adapter->MgntInfo.FirmwareVersion, pFwHdr->Signature)); + + DBG_8192C("fw_ver=v%d, fw_subver=%d, sig=0x%x\n", + pHalData->FirmwareVersion, pHalData->FirmwareSubVersion, le16_to_cpu(pFwHdr->Signature)&0xFFF0); + + if(IS_FW_HEADER_EXIST(pFwHdr)) + { + //RT_TRACE(COMP_INIT, DBG_LOUD,("Shift 32 bytes for FW header!!\n")); + pFirmwareBuf = pFirmwareBuf + 32; + FirmwareLen = FirmwareLen -32; + } + + // Suggested by Filen. If 8051 is running in RAM code, driver should inform Fw to reset by itself, + // or it will cause download Fw fail. 2010.02.01. by tynli. + if(rtw_read8(Adapter, REG_MCUFWDL)&BIT7) //8051 RAM code + { + rtl8192c_FirmwareSelfReset(Adapter); + rtw_write8(Adapter, REG_MCUFWDL, 0x00); + } + + + _FWDownloadEnable(Adapter, _TRUE); + while(1) { + u8 tmp8; + tmp8 = rtw_read8(Adapter, REG_MCUFWDL); + + //reset the FWDL chksum + rtw_write8(Adapter, REG_MCUFWDL, tmp8|FWDL_ChkSum_rpt); + + //tmp8 = rtw_read8(Adapter, REG_MCUFWDL); + //DBG_8192C("Before _WriteFW, REG_MCUFWDL:0x%02x, writeFW_retry:%u\n", tmp8, writeFW_retry); + + rtStatus = _WriteFW(Adapter, pFirmwareBuf, FirmwareLen); + + //tmp8 = rtw_read8(Adapter, REG_MCUFWDL); + //DBG_8192C("After _WriteFW, REG_MCUFWDL:0x%02x, rtStatus:%d\n", tmp8, rtStatus); + + if(rtStatus == _SUCCESS || ++writeFW_retry>3) + break; + } + _FWDownloadEnable(Adapter, _FALSE); + + if(_SUCCESS != rtStatus){ + DBG_8192C("DL Firmware failed!\n"); + goto Exit; + } + + rtStatus = _FWFreeToGo(Adapter); + if(_SUCCESS != rtStatus){ + DBG_8192C("DL Firmware failed!\n"); + goto Exit; + } + //RT_TRACE(COMP_INIT, DBG_LOUD, (" Firmware is ready to run!\n")); + +Exit: + + if(pFirmware) { + rtw_vmfree((u8*)pFirmware, sizeof(RT_FIRMWARE_92C)); + } + + //RT_TRACE(COMP_INIT, DBG_LOUD, (" <=== FirmwareDownload91C()\n")); + return rtStatus; + +} + +VOID +InitializeFirmwareVars92C( + IN PADAPTER Adapter +) +{ + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); + + // Init Fw LPS related. + Adapter->pwrctrlpriv.bFwCurrentInPSMode = _FALSE; + + //Init H2C counter. by tynli. 2009.12.09. + pHalData->LastHMEBoxNum = 0; +} + +#ifdef CONFIG_WOWLAN +//=========================================== + +// +// Description: Prepare some information to Fw for WoWLAN. +// (1) Download wowlan Fw. +// (2) Download RSVD page packets. +// (3) Enable AP offload if needed. +// +// 2011.04.12 by tynli. +// +VOID +SetFwRelatedForWoWLAN8192CU( + IN PADAPTER padapter, + IN u8 bHostIsGoingtoSleep +) +{ + int status=_FAIL; + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(padapter); + u8 bRecover = _FALSE; + + if(bHostIsGoingtoSleep) + { + // + // 1. Before WoWLAN we need to re-download WoWLAN Fw. + // + status = FirmwareDownload92C(padapter, bHostIsGoingtoSleep); + if(status != _SUCCESS) + { + DBG_8192C("ConfigFwRelatedForWoWLAN8192CU(): Re-Download Firmware failed!!\n"); + return; + } + else + { + DBG_8192C("ConfigFwRelatedForWoWLAN8192CU(): Re-Download Firmware Success !!\n"); + } + + // + // 2. Re-Init the variables about Fw related setting. + // + InitializeFirmwareVars92C(padapter); + + + } +} +#endif // CONFIG_WOWLAN + +#ifdef CONFIG_BT_COEXIST +static void _update_bt_param(_adapter *padapter) +{ + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(padapter); + struct btcoexist_priv *pbtpriv = &(pHalData->bt_coexist); + struct registry_priv *registry_par = &padapter->registrypriv; + + if(2 != registry_par->bt_iso) + pbtpriv->BT_Ant_isolation = registry_par->bt_iso;// 0:Low, 1:High, 2:From Efuse + + if(registry_par->bt_sco == 1) // 0:Idle, 1:None-SCO, 2:SCO, 3:From Counter, 4.Busy, 5.OtherBusy + pbtpriv->BT_Service = BT_OtherAction; + else if(registry_par->bt_sco==2) + pbtpriv->BT_Service = BT_SCO; + else if(registry_par->bt_sco==4) + pbtpriv->BT_Service = BT_Busy; + else if(registry_par->bt_sco==5) + pbtpriv->BT_Service = BT_OtherBusy; + else + pbtpriv->BT_Service = BT_Idle; + + pbtpriv->BT_Ampdu = registry_par->bt_ampdu; + pbtpriv->bCOBT = _TRUE; +#if 1 + DBG_8192C("BT Coexistance = %s\n", (pbtpriv->BT_Coexist==_TRUE)?"enable":"disable"); + if(pbtpriv->BT_Coexist) + { + if(pbtpriv->BT_Ant_Num == Ant_x2) + { + DBG_8192C("BlueTooth BT_Ant_Num = Antx2\n"); + } + else if(pbtpriv->BT_Ant_Num == Ant_x1) + { + DBG_8192C("BlueTooth BT_Ant_Num = Antx1\n"); + } + switch(pbtpriv->BT_CoexistType) + { + case BT_2Wire: + DBG_8192C("BlueTooth BT_CoexistType = BT_2Wire\n"); + break; + case BT_ISSC_3Wire: + DBG_8192C("BlueTooth BT_CoexistType = BT_ISSC_3Wire\n"); + break; + case BT_Accel: + DBG_8192C("BlueTooth BT_CoexistType = BT_Accel\n"); + break; + case BT_CSR_BC4: + DBG_8192C("BlueTooth BT_CoexistType = BT_CSR_BC4\n"); + break; + case BT_RTL8756: + DBG_8192C("BlueTooth BT_CoexistType = BT_RTL8756\n"); + break; + default: + DBG_8192C("BlueTooth BT_CoexistType = Unknown\n"); + break; + } + DBG_8192C("BlueTooth BT_Ant_isolation = %d\n", pbtpriv->BT_Ant_isolation); + + + switch(pbtpriv->BT_Service) + { + case BT_OtherAction: + DBG_8192C("BlueTooth BT_Service = BT_OtherAction\n"); + break; + case BT_SCO: + DBG_8192C("BlueTooth BT_Service = BT_SCO\n"); + break; + case BT_Busy: + DBG_8192C("BlueTooth BT_Service = BT_Busy\n"); + break; + case BT_OtherBusy: + DBG_8192C("BlueTooth BT_Service = BT_OtherBusy\n"); + break; + default: + DBG_8192C("BlueTooth BT_Service = BT_Idle\n"); + break; + } + + DBG_8192C("BT_RadioSharedType = 0x%x\n", pbtpriv->BT_RadioSharedType); + } +#endif + +} + + +#define GET_BT_COEXIST(priv) (&priv->bt_coexist) + +void rtl8192c_ReadBluetoothCoexistInfo( + IN PADAPTER Adapter, + IN u8* PROMContent, + IN BOOLEAN AutoloadFail + ) +{ + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); + struct btcoexist_priv *pbtpriv = &(pHalData->bt_coexist); + u8 rf_opt4; + + if(AutoloadFail){ + pbtpriv->BT_Coexist = _FALSE; + pbtpriv->BT_CoexistType= BT_2Wire; + pbtpriv->BT_Ant_Num = Ant_x2; + pbtpriv->BT_Ant_isolation= 0; + pbtpriv->BT_RadioSharedType = BT_Radio_Shared; + return; + } + + pbtpriv->BT_Coexist = (((PROMContent[EEPROM_RF_OPT1]&BOARD_TYPE_NORMAL_MASK)>>5) == BOARD_USB_COMBO)?_TRUE:_FALSE; // bit [7:5] + rf_opt4 = PROMContent[EEPROM_RF_OPT4]; + pbtpriv->BT_CoexistType = ((rf_opt4&0xe)>>1); // bit [3:1] + pbtpriv->BT_Ant_Num = (rf_opt4&0x1); // bit [0] + pbtpriv->BT_Ant_isolation = ((rf_opt4&0x10)>>4); // bit [4] + pbtpriv->BT_RadioSharedType = ((rf_opt4&0x20)>>5); // bit [5] + + _update_bt_param(Adapter); + +} +#endif + +VERSION_8192C +rtl8192c_ReadChipVersion( + IN PADAPTER Adapter + ) +{ + u32 value32; + //VERSION_8192C version; + u32 ChipVersion=0; + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); + + value32 = rtw_read32(Adapter, REG_SYS_CFG); + + if (value32 & TRP_VAUX_EN) + { +#if 0 + // Test chip. + if(IS_HARDWARE_TYPE_8723A(Adapter)) { + ChipVersion |= ((value32 & VENDOR_ID) ? CHIP_VENDOR_UMC : 0); + ChipVersion |= ((value32 & BT_FUNC) ? CHIP_8723: 0); // RTL8723 with BT function. + } + else { + version = (value32 & TYPE_ID) ?VERSION_TEST_CHIP_92C :VERSION_TEST_CHIP_88C; + } +#else + // tynli_test. 2011.01.10. + if(IS_HARDWARE_TYPE_8192C(Adapter)) + { + ChipVersion = (value32 & TYPE_ID) ? VERSION_TEST_CHIP_92C : VERSION_TEST_CHIP_88C; + } + else + { + ChipVersion |= ((value32 & VENDOR_ID) ? CHIP_VENDOR_UMC : 0); + ChipVersion |= ((value32 & BT_FUNC) ? CHIP_8723: 0); // RTL8723 with BT function. + } +#endif + } + else + { +#if 0 + // Normal mass production chip. + ChipVersion = NORMAL_CHIP; +#if !RTL8723_FPGA_TRUE_PHY_VERIFICATION + ChipVersion |= ((value32 & TYPE_ID) ? CHIP_92C : 0); +#endif + ChipVersion |= ((value32 & VENDOR_ID) ? CHIP_VENDOR_UMC : 0); + ChipVersion |= ((value32 & BT_FUNC) ? CHIP_8723: 0); // RTL8723 with BT function. + if(IS_8723_SERIES(ChipVersion)) + { + if(IS_VENDOR_UMC(ChipVersion)) + ChipVersion |= ((value32 & CHIP_VER_RTL_MASK) ? CHIP_VENDOR_UMC_B_CUT : 0); + } + else + { + // Mark out by tynli. UMC B-cut IC will not set the SYS_CFG[19] to UMC + // because we do not want the custmor to know. 2011.01.11. + //if(IS_VENDOR_UMC(ChipVersion)) + { + // To check the value of B-cut. by tynli. 2011.01.11. + u1bTmp = (u1Byte)((value32 & CHIP_VER_RTL_MASK)>>12); + if(u1bTmp == 1) + { // B-cut + ChipVersion |= CHIP_VENDOR_UMC_B_CUT; + } + } + } +#else + // Normal mass production chip. + ChipVersion = NORMAL_CHIP; +//#if !RTL8723_FPGA_TRUE_PHY_VERIFICATION + ChipVersion |= ((value32 & TYPE_ID) ? RF_TYPE_2T2R : 0); //92c +//#endif + ChipVersion |= ((value32 & VENDOR_ID) ? CHIP_VENDOR_UMC : 0); + ChipVersion |= ((value32 & BT_FUNC) ? CHIP_8723: 0); // RTL8723 with BT function. + if(IS_HARDWARE_TYPE_8192C(Adapter)) + { + // 88/92C UMC B-cut IC will not set the SYS_CFG[19] to UMC + // because we do not want the custmor to know. by tynli. 2011.01.17. + //MSG_8192C("mask result = 0x%x is_UMC %d chipversion 0x%x\n", (value32 & CHIP_VER_RTL_MASK), IS_CHIP_VENDOR_UMC(ChipVersion), ChipVersion); + if((!IS_CHIP_VENDOR_UMC(ChipVersion) )&& (value32 & CHIP_VER_RTL_MASK)) + { + //MSG_8192C("chip mask result = 0x%x\n", ((value32 & CHIP_VER_RTL_MASK) | CHIP_VENDOR_UMC)); + ChipVersion |= ((value32 & CHIP_VER_RTL_MASK) | CHIP_VENDOR_UMC); // IC version (CUT) + //MSG_8192C("chip version = 0x%x\n", ChipVersion); + } + } + else + { + if(IS_CHIP_VENDOR_UMC(ChipVersion)) + ChipVersion |= ((value32 & CHIP_VER_RTL_MASK)); // IC version (CUT) + } + + if(IS_92C_SERIAL(ChipVersion)) + { + value32 = rtw_read32(Adapter, REG_HPON_FSM); + ChipVersion |= ((CHIP_BONDING_IDENTIFIER(value32) == CHIP_BONDING_92C_1T2R) ? RF_TYPE_1T2R : 0); + } + else if(IS_8723_SERIES(ChipVersion)) + { + //RT_ASSERT(IS_HARDWARE_TYPE_8723A(Adapter), ("Incorrect chip version!!\n")); + value32 = rtw_read32(Adapter, REG_GPIO_OUTSTS); + ChipVersion |= ((value32 & RF_RL_ID)>>20); //ROM code version. + } +#endif + + } + + //version = (VERSION_8192C)ChipVersion; + + // For multi-function consideration. Added by Roger, 2010.10.06. + if(IS_8723_SERIES(ChipVersion)) + { + pHalData->MultiFunc = RT_MULTI_FUNC_NONE; + value32 = rtw_read32(Adapter, REG_MULTI_FUNC_CTRL); + pHalData->MultiFunc =(RT_MULTI_FUNC) (pHalData->MultiFunc| ((value32 & WL_FUNC_EN) ? RT_MULTI_FUNC_WIFI : 0) ); + pHalData->MultiFunc =(RT_MULTI_FUNC) (pHalData->MultiFunc| ((value32 & BT_FUNC_EN) ? RT_MULTI_FUNC_BT : 0) ); + pHalData->MultiFunc =(RT_MULTI_FUNC) (pHalData->MultiFunc| ((value32 & GPS_FUNC_EN) ? RT_MULTI_FUNC_GPS : 0) ); + pHalData->PolarityCtl = ((value32 & WL_HWPDN_SL) ? RT_POLARITY_HIGH_ACT : RT_POLARITY_LOW_ACT); + //MSG_8192C("ReadChipVersion(): MultiFunc(%x), PolarityCtl(%x) \n", pHalData->MultiFunc, pHalData->PolarityCtl); + + //For regulator mode. by tynli. 2011.01.14 + pHalData->RegulatorMode = ((value32 & TRP_BT_EN) ? RT_LDO_REGULATOR : RT_SWITCHING_REGULATOR); + //MSG_8192C("ReadChipVersion(): RegulatorMode(%x) \n", pHalData->RegulatorMode); + } + +//#if DBG +#if 1 + switch(ChipVersion) + { + case VERSION_NORMAL_TSMC_CHIP_92C_1T2R: + MSG_8192C("Chip Version ID: VERSION_NORMAL_TSMC_CHIP_92C_1T2R.\n"); + break; + case VERSION_NORMAL_TSMC_CHIP_92C: + MSG_8192C("Chip Version ID: VERSION_NORMAL_TSMC_CHIP_92C.\n"); + break; + case VERSION_NORMAL_TSMC_CHIP_88C: + MSG_8192C("Chip Version ID: VERSION_NORMAL_TSMC_CHIP_88C.\n"); + break; + case VERSION_NORMAL_UMC_CHIP_92C_1T2R_A_CUT: + MSG_8192C("Chip Version ID: VERSION_NORMAL_UMC_CHIP_92C_1T2R_A_CUT.\n"); + break; + case VERSION_NORMAL_UMC_CHIP_92C_A_CUT: + MSG_8192C("Chip Version ID: VERSION_NORMAL_UMC_CHIP_92C_A_CUT.\n"); + break; + case VERSION_NORMAL_UMC_CHIP_88C_A_CUT: + MSG_8192C("Chip Version ID: VERSION_NORMAL_UMC_CHIP_88C_A_CUT.\n"); + break; + case VERSION_NORMAL_UMC_CHIP_92C_1T2R_B_CUT: + MSG_8192C("Chip Version ID: VERSION_NORMAL_UMC_CHIP_92C_1T2R_B_CUT.\n"); + break; + case VERSION_NORMAL_UMC_CHIP_92C_B_CUT: + MSG_8192C("Chip Version ID: VERSION_NORMAL_UMC_CHIP_92C_B_CUT.\n"); + break; + case VERSION_NORMAL_UMC_CHIP_88C_B_CUT: + MSG_8192C("Chip Version ID: VERSION_NORMAL_UMC_CHIP_88C_B_CUT.\n"); + break; + case VERSION_TEST_CHIP_92C: + MSG_8192C("Chip Version ID: VERSION_TEST_CHIP_92C.\n"); + break; + case VERSION_TEST_CHIP_88C: + MSG_8192C("Chip Version ID: VERSION_TEST_CHIP_88C.\n"); + break; + case VERSION_TEST_UMC_CHIP_8723: + MSG_8192C("Chip Version ID: VERSION_TEST_UMC_CHIP_8723.\n"); + break; + case VERSION_NORMAL_UMC_CHIP_8723_1T1R_A_CUT: + MSG_8192C("Chip Version ID: VERSION_NORMA_UMC_CHIP_8723_1T1R_A_CUT.\n"); + break; + case VERSION_NORMAL_UMC_CHIP_8723_1T1R_B_CUT: + MSG_8192C("Chip Version ID: VERSION_NORMA_UMC_CHIP_8723_1T1R_B_CUT.\n"); + break; + default: + MSG_8192C("Chip Version ID: ???????????????.\n"); + break; + } +#endif + + pHalData->VersionID = ChipVersion; + + if(IS_1T2R(ChipVersion)) + pHalData->rf_type = RF_1T2R; + else if(IS_2T2R(ChipVersion)) + pHalData->rf_type = RF_2T2R; + else if(IS_8723_SERIES(ChipVersion)) + pHalData->rf_type = RF_1T1R; + else + pHalData->rf_type = RF_1T1R; + + MSG_8192C("RF_Type is %x!!\n", pHalData->rf_type); + + return ChipVersion; +} + +void +rtl8192c_EfuseParseChnlPlan( + IN PADAPTER padapter, + IN u8* hwinfo, + IN BOOLEAN AutoLoadFail + ) +{ + padapter->mlmepriv.ChannelPlan = hal_com_get_channel_plan( + padapter + , hwinfo?hwinfo[EEPROM_CHANNEL_PLAN]:0xFF + , padapter->registrypriv.channel_plan + , RT_CHANNEL_DOMAIN_WORLD_WIDE_13 + , AutoLoadFail + ); + + DBG_871X("mlmepriv.ChannelPlan = 0x%02x\n", padapter->mlmepriv.ChannelPlan); +} + +u8 GetEEPROMSize8192C(PADAPTER Adapter) +{ + u8 size = 0; + u32 curRCR; + + curRCR = rtw_read16(Adapter, REG_9346CR); + size = (curRCR & BOOT_FROM_EEPROM) ? 6 : 4; // 6: EEPROM used is 93C46, 4: boot from E-Fuse. + + MSG_8192C("EEPROM type is %s\n", size==4 ? "E-FUSE" : "93C46"); + + return size; +} + +void rtl8192c_free_hal_data(_adapter * padapter) +{ +_func_enter_; + + DBG_8192C("=====> rtl8192c_free_hal_data =====\n"); + + if(padapter->HalData) + rtw_mfree(padapter->HalData, sizeof(HAL_DATA_TYPE)); + DBG_8192C("<===== rtl8192c_free_hal_data =====\n"); + +_func_exit_; +} + +//=========================================================== +// Efuse related code +//=========================================================== +enum{ + VOLTAGE_V25 = 0x03, + LDOE25_SHIFT = 28 , + }; + +static VOID +hal_EfusePowerSwitch_RTL8192C( + IN PADAPTER pAdapter, + IN u8 bWrite, + IN u8 PwrState) +{ + u8 tempval; + u16 tmpV16; + + if (PwrState == _TRUE) + { + // 1.2V Power: From VDDON with Power Cut(0x0000h[15]), defualt valid + tmpV16 = rtw_read16(pAdapter,REG_SYS_ISO_CTRL); + if( ! (tmpV16 & PWC_EV12V ) ){ + tmpV16 |= PWC_EV12V ; + rtw_write16(pAdapter,REG_SYS_ISO_CTRL,tmpV16); + } + // Reset: 0x0000h[28], default valid + tmpV16 = rtw_read16(pAdapter,REG_SYS_FUNC_EN); + if( !(tmpV16 & FEN_ELDR) ){ + tmpV16 |= FEN_ELDR ; + rtw_write16(pAdapter,REG_SYS_FUNC_EN,tmpV16); + } + + // Clock: Gated(0x0008h[5]) 8M(0x0008h[1]) clock from ANA, default valid + tmpV16 = rtw_read16(pAdapter,REG_SYS_CLKR); + if( (!(tmpV16 & LOADER_CLK_EN) ) ||(!(tmpV16 & ANA8M) ) ){ + tmpV16 |= (LOADER_CLK_EN |ANA8M ) ; + rtw_write16(pAdapter,REG_SYS_CLKR,tmpV16); + } + + if(bWrite == _TRUE) + { + // Enable LDO 2.5V before read/write action + tempval = rtw_read8(pAdapter, EFUSE_TEST+3); + tempval &= 0x0F; + tempval |= (VOLTAGE_V25 << 4); + rtw_write8(pAdapter, EFUSE_TEST+3, (tempval | 0x80)); + } + } + else + { + if(bWrite == _TRUE){ + // Disable LDO 2.5V after read/write action + tempval = rtw_read8(pAdapter, EFUSE_TEST+3); + rtw_write8(pAdapter, EFUSE_TEST+3, (tempval & 0x7F)); + } + } +} + +static VOID +hal_EfusePowerSwitch_RTL8723( + IN PADAPTER pAdapter, + IN u8 bWrite, + IN u8 PwrState) +{ + u8 tempval; + u16 tmpV16; + + if (PwrState == _TRUE) + { + rtw_write8(pAdapter, REG_EFUSE_ACCESS, EFUSE_ACCESS_ON); + + // 1.2V Power: From VDDON with Power Cut(0x0000h[15]), defualt valid + tmpV16 = rtw_read16(pAdapter,REG_SYS_ISO_CTRL); + if( ! (tmpV16 & PWC_EV12V ) ){ + tmpV16 |= PWC_EV12V ; + rtw_write16(pAdapter,REG_SYS_ISO_CTRL,tmpV16); + } + // Reset: 0x0000h[28], default valid + tmpV16 = rtw_read16(pAdapter,REG_SYS_FUNC_EN); + if( !(tmpV16 & FEN_ELDR) ){ + tmpV16 |= FEN_ELDR ; + rtw_write16(pAdapter,REG_SYS_FUNC_EN,tmpV16); + } + + // Clock: Gated(0x0008h[5]) 8M(0x0008h[1]) clock from ANA, default valid + tmpV16 = rtw_read16(pAdapter,REG_SYS_CLKR); + if( (!(tmpV16 & LOADER_CLK_EN) ) ||(!(tmpV16 & ANA8M) ) ){ + tmpV16 |= (LOADER_CLK_EN |ANA8M ) ; + rtw_write16(pAdapter,REG_SYS_CLKR,tmpV16); + } + + if(bWrite == _TRUE) + { + // Enable LDO 2.5V before read/write action + tempval = rtw_read8(pAdapter, EFUSE_TEST+3); + tempval &= 0x0F; + tempval |= (VOLTAGE_V25 << 4); + rtw_write8(pAdapter, EFUSE_TEST+3, (tempval | 0x80)); + } + } + else + { + rtw_write8(pAdapter, REG_EFUSE_ACCESS, EFUSE_ACCESS_OFF); + + if(bWrite == _TRUE){ + // Disable LDO 2.5V after read/write action + tempval = rtw_read8(pAdapter, EFUSE_TEST+3); + rtw_write8(pAdapter, EFUSE_TEST+3, (tempval & 0x7F)); + } + } +} + +static VOID +rtl8192c_EfusePowerSwitch( + IN PADAPTER pAdapter, + IN u8 bWrite, + IN u8 PwrState) +{ + if(IS_HARDWARE_TYPE_8192C(pAdapter)) + { + hal_EfusePowerSwitch_RTL8192C(pAdapter, bWrite, PwrState); + } + else if(IS_HARDWARE_TYPE_8723A(pAdapter)) + { + hal_EfusePowerSwitch_RTL8723(pAdapter, bWrite, PwrState); + } +} + +static VOID +ReadEFuse_RTL8192C( + PADAPTER Adapter, + u16 _offset, + u16 _size_byte, + u8 *pbuf, + IN BOOLEAN bPseudoTest + ) +{ + u8 efuseTbl[EFUSE_MAP_LEN]; + u8 rtemp8[1]; + u16 eFuse_Addr = 0; + u8 offset, wren; + u16 i, j; + u16 eFuseWord[EFUSE_MAX_SECTION][EFUSE_MAX_WORD_UNIT]; + u16 efuse_utilized = 0; + u8 efuse_usage = 0; + + // + // Do NOT excess total size of EFuse table. Added by Roger, 2008.11.10. + // + if((_offset + _size_byte)>EFUSE_MAP_LEN) + {// total E-Fuse table is 128bytes + //DBG_8192C("ReadEFuse_RTL8192C(): Invalid offset(%#x) with read bytes(%#x)!!\n",_offset, _size_byte); + return; + } + + // 0. Refresh efuse init map as all oxFF. + for (i = 0; i < EFUSE_MAX_SECTION; i++) + for (j = 0; j < EFUSE_MAX_WORD_UNIT; j++) + eFuseWord[i][j] = 0xFFFF; + + + // + // 1. Read the first byte to check if efuse is empty!!! + // + // + ReadEFuseByte(Adapter, eFuse_Addr, rtemp8, bPseudoTest); + if(*rtemp8 != 0xFF) + { + efuse_utilized++; + //RTPRINT(FEEPROM, EFUSE_READ_ALL, ("Addr=%d\n", eFuse_Addr)); + eFuse_Addr++; + } + + // + // 2. Read real efuse content. Filter PG header and every section data. + // + while((*rtemp8 != 0xFF) && (eFuse_Addr < EFUSE_REAL_CONTENT_LEN)) + { + // Check PG header for section num. + offset = ((*rtemp8 >> 4) & 0x0f); + + if(offset < EFUSE_MAX_SECTION) + { + // Get word enable value from PG header + wren = (*rtemp8 & 0x0f); + //RTPRINT(FEEPROM, EFUSE_READ_ALL, ("Offset-%d Worden=%x\n", offset, wren)); + + for(i=0; i= EFUSE_REAL_CONTENT_LEN) + break; + + //RTPRINT(FEEPROM, EFUSE_READ_ALL, ("Addr=%d\n", eFuse_Addr)); + ReadEFuseByte(Adapter, eFuse_Addr, rtemp8, bPseudoTest); eFuse_Addr++; + efuse_utilized++; + eFuseWord[offset][i] |= (((u16)*rtemp8 << 8) & 0xff00); + + if(eFuse_Addr >= EFUSE_REAL_CONTENT_LEN) + break; + } + + wren >>= 1; + + } + } + + //RTPRINT(FEEPROM, EFUSE_READ_ALL, ("Addr=%d\n", eFuse_Addr)); + // Read next PG header + ReadEFuseByte(Adapter, eFuse_Addr, rtemp8, bPseudoTest); + if(*rtemp8 != 0xFF && (eFuse_Addr < 512)) + { + efuse_utilized++; + eFuse_Addr++; + } + } + + // + // 3. Collect 16 sections and 4 word unit into Efuse map. + // + for(i=0; i> 8) & 0xff); + } + } + + // + // 4. Copy from Efuse map to output pointer memory!!! + // + for(i=0; i<_size_byte; i++) + { + pbuf[i] = efuseTbl[_offset+i]; + } + + // + // 5. Calculate Efuse utilization. + // + efuse_usage = (u8)((efuse_utilized*100)/EFUSE_REAL_CONTENT_LEN); + rtw_hal_set_hwreg(Adapter, HW_VAR_EFUSE_BYTES, (u8 *)&efuse_utilized); + //rtw_hal_set_hwreg(Adapter, HW_VAR_EFUSE_USAGE, (pu1Byte)&efuse_usage); +} + +static VOID +ReadEFuse_RTL8723( + PADAPTER Adapter, + u16 _offset, + u16 _size_byte, + u8 *pbuf, + IN BOOLEAN bPseudoTest + ) +{ + u8 efuseTbl[EFUSE_MAP_LEN_8723]; + u16 eFuse_Addr = 0; + u8 offset = 0, wden = 0; + u16 i, j; + u16 eFuseWord[EFUSE_MAX_SECTION_8723][EFUSE_MAX_WORD_UNIT]; + u16 efuse_utilized = 0; + u8 efuse_usage = 0; + u8 offset_2_0=0; + u8 efuseHeader=0, efuseExtHdr=0, efuseData=0; + // + // Do NOT excess total size of EFuse table. Added by Roger, 2008.11.10. + // + if((_offset + _size_byte)>EFUSE_MAP_LEN_8723) + { + //RT_TRACE(COMP_EFUSE, DBG_LOUD, ("ReadEFuse_RTL8723(): Invalid offset(%#x) with read bytes(%#x)!!\n",_offset, _size_byte)); + return; + } + + // 0. Refresh efuse init map as all oxFF. + for (i = 0; i < EFUSE_MAX_SECTION_8723; i++) + for (j = 0; j < EFUSE_MAX_WORD_UNIT; j++) + eFuseWord[i][j] = 0xFFFF; + + // + // 1. Read the first byte to check if efuse is empty!!! + // + // + ReadEFuseByte(Adapter, eFuse_Addr++, &efuseHeader, bPseudoTest); + + if(efuseHeader != 0xFF) + { + efuse_utilized++; + } + else + { + //RTPRINT(FEEPROM, EFUSE_READ_ALL, ("EFUSE is empty\n")); + return; + } + + + // + // 2. Read real efuse content. Filter PG header and every section data. + // + while((efuseHeader != 0xFF) && AVAILABLE_EFUSE_ADDR(eFuse_Addr)) + { + //RTPRINT(FEEPROM, EFUSE_READ_ALL, ("efuse[%d]=%x\n", eFuse_Addr-1, efuseHeader)); + + // Check PG header for section num. + if(EXT_HEADER(efuseHeader)) //extended header + { + offset_2_0 = GET_HDR_OFFSET_2_0(efuseHeader); + //RTPRINT(FEEPROM, EFUSE_READ_ALL, ("extended header offset_2_0=%x\n", offset_2_0)); + + ReadEFuseByte(Adapter, eFuse_Addr++, &efuseExtHdr, bPseudoTest); + + //RTPRINT(FEEPROM, EFUSE_READ_ALL, ("efuse[%d]=%x\n", eFuse_Addr-1, efuseExtHdr)); + + if(efuseExtHdr != 0xff) + { + efuse_utilized++; + if(ALL_WORDS_DISABLED(efuseExtHdr)) + { + ReadEFuseByte(Adapter, eFuse_Addr++, &efuseHeader, bPseudoTest); + if(efuseHeader != 0xff) + { + efuse_utilized++; + } + continue; + } + else + { + offset = ((efuseExtHdr & 0xF0) >> 1) | offset_2_0; + wden = (efuseExtHdr & 0x0F); + } + } + else + { + //RTPRINT(FEEPROM, EFUSE_READ_ALL, ("Error condition, extended = 0xff\n")); + // We should handle this condition. + } + } + else + { + offset = ((efuseHeader >> 4) & 0x0f); + wden = (efuseHeader & 0x0f); + } + + if(offset < EFUSE_MAX_SECTION_8723) + { + // Get word enable value from PG header + //RTPRINT(FEEPROM, EFUSE_READ_ALL, ("Offset-%d Worden=%x\n", offset, wden)); + + for(i=0; i> 8) & 0xff); + } + } + + // + // 4. Copy from Efuse map to output pointer memory!!! + // + for(i=0; i<_size_byte; i++) + { + pbuf[i] = efuseTbl[_offset+i]; + } + + // + // 5. Calculate Efuse utilization. + // + efuse_usage = (u8)((efuse_utilized*100)/EFUSE_REAL_CONTENT_LEN); + rtw_hal_set_hwreg(Adapter, HW_VAR_EFUSE_BYTES, (u8 *)&efuse_utilized); + //rtw_hal_set_hwreg(Adapter, HW_VAR_EFUSE_USAGE, (pu1Byte)&efuse_usage); +} + +static BOOLEAN +Hal_EfuseSwitchToBank( + IN PADAPTER pAdapter, + IN u8 bank, + IN BOOLEAN bPseudoTest + ) +{ + BOOLEAN bRet = _FALSE; + u32 value32=0; + + //RTPRINT(FEEPROM, EFUSE_PG, ("Efuse switch bank to %d\n", bank)); + if(bPseudoTest) + { + fakeEfuseBank = bank; + bRet = _TRUE; + } + else + { + if(IS_HARDWARE_TYPE_8723A(pAdapter) && + INCLUDE_MULTI_FUNC_BT(pAdapter)) + { + value32 = rtw_read32(pAdapter, EFUSE_TEST); + bRet = _TRUE; + switch(bank) + { + case 0: + value32 = (value32 & ~EFUSE_SEL_MASK) | EFUSE_SEL(EFUSE_WIFI_SEL_0); + break; + case 1: + value32 = (value32 & ~EFUSE_SEL_MASK) | EFUSE_SEL(EFUSE_BT_SEL_0); + break; + case 2: + value32 = (value32 & ~EFUSE_SEL_MASK) | EFUSE_SEL(EFUSE_BT_SEL_1); + break; + case 3: + value32 = (value32 & ~EFUSE_SEL_MASK) | EFUSE_SEL(EFUSE_BT_SEL_2); + break; + default: + value32 = (value32 & ~EFUSE_SEL_MASK) | EFUSE_SEL(EFUSE_WIFI_SEL_0); + bRet = _FALSE; + break; + } + rtw_write32(pAdapter, EFUSE_TEST, value32); + } + else + bRet = _TRUE; + } + return bRet; +} + +static VOID +ReadEFuse_BT( + PADAPTER Adapter, + u16 _offset, + u16 _size_byte, + u8 *pbuf, + IN BOOLEAN bPseudoTest + ) +{ + u8 *efuseTbl; + u16 eFuse_Addr = 0; + u8 offset = 0, wden = 0; + u16 i, j; + u16 **eFuseWord; + u16 efuse_utilized = 0; + u8 efuse_usage = 0; + u8 offset_2_0=0; + u8 efuseHeader=0, efuseExtHdr=0, efuseData=0; + u8 bank=0; + BOOLEAN bCheckNextBank=_FALSE; + + efuseTbl = rtw_malloc(EFUSE_BT_MAP_LEN); + if(efuseTbl == NULL){ + DBG_8192C("efuseTbl malloc fail !\n"); + return; + } + + eFuseWord = (u16 **)rtw_zmalloc(sizeof(u16 *)*EFUSE_BT_MAX_SECTION); + if(eFuseWord == NULL){ + DBG_8192C("eFuseWord malloc fail !\n"); + return; + } + else{ + for(i=0;iEFUSE_BT_MAP_LEN) + { + //RT_TRACE(COMP_EFUSE, DBG_LOUD, ("ReadEFuse_BT(): Invalid offset(%#x) with read bytes(%#x)!!\n",_offset, _size_byte)); + return; + } + + // 0. Refresh efuse init map as all oxFF. + for (i = 0; i < EFUSE_BT_MAX_SECTION; i++) + for (j = 0; j < EFUSE_MAX_WORD_UNIT; j++) + eFuseWord[i][j] = 0xFFFF; + + for(bank=1; bank> 1) | offset_2_0; + wden = (efuseExtHdr & 0x0F); + } + } + else + { + //RTPRINT(FEEPROM, EFUSE_READ_ALL, ("Error condition, extended = 0xff\n")); + // We should handle this condition. + } + } + else + { + offset = ((efuseHeader >> 4) & 0x0f); + wden = (efuseHeader & 0x0f); + } + + if(offset < EFUSE_BT_MAX_SECTION) + { + // Get word enable value from PG header + //RTPRINT(FEEPROM, EFUSE_READ_ALL, ("Offset-%d Worden=%x\n", offset, wden)); + + for(i=0; i= EFUSE_REAL_CONTENT_LEN) + bCheckNextBank = _TRUE; + else + bCheckNextBank = _FALSE; + } + } + if(!bCheckNextBank) + { + //RTPRINT(FEEPROM, EFUSE_READ_ALL, ("Stop to check next bank\n")); + break; + } + } + + // switch bank back to bank 0 for later BT and wifi use. + Hal_EfuseSwitchToBank(Adapter, 0, bPseudoTest); + + // + // 3. Collect 16 sections and 4 word unit into Efuse map. + // + for(i=0; i> 8) & 0xff); + } + } + + // + // 4. Copy from Efuse map to output pointer memory!!! + // + for(i=0; i<_size_byte; i++) + { + pbuf[i] = efuseTbl[_offset+i]; + } + + // + // 5. Calculate Efuse utilization. + // + efuse_usage = (u8)((efuse_utilized*100)/EFUSE_BT_REAL_CONTENT_LEN); + if(bPseudoTest) + { + fakeBTEfuseUsedBytes = (EFUSE_REAL_CONTENT_LEN*(bank-1))+eFuse_Addr-1; + } + else + { + BTEfuseUsedBytes = (EFUSE_REAL_CONTENT_LEN*(bank-1))+eFuse_Addr-1; + } + + for(i=0;i>4) & 0x0F; + hworden = efuse_data & 0x0F; + word_cnts = Efuse_CalculateWordCnts(hworden); + //read next header + efuse_addr = efuse_addr + (word_cnts*2)+1; + } + else + { + bContinual = _FALSE ; + } + } + + return efuse_addr; +} + +static u16 +Hal_EfuseGetCurrentSize_BT(IN PADAPTER pAdapter, + IN BOOLEAN bPseudoTest) +{ + int bContinual = _TRUE; + u16 efuse_addr = 0; + u8 hoffset=0,hworden=0; + u8 efuse_data,word_cnts=0; + u8 bank=0, startBank=0; + u16 retU2=0; + u32 total_efuse_used=0; + + if(bPseudoTest) + { + efuse_addr = (u16)((fakeBTEfuseUsedBytes%EFUSE_REAL_CONTENT_LEN)); + startBank = (u8)(1+(fakeBTEfuseUsedBytes/EFUSE_REAL_CONTENT_LEN)); + } + else + { + efuse_addr = (u16)((BTEfuseUsedBytes%EFUSE_REAL_CONTENT_LEN)); + startBank = (u8)(1+(BTEfuseUsedBytes/EFUSE_REAL_CONTENT_LEN)); + } + + if((startBank < 1) || (startBank >= EFUSE_MAX_BANK)) + DBG_8192C("Error, bank error, bank=%d\n", bank); + + //RTPRINT(FEEPROM, EFUSE_PG, ("Hal_EfuseGetCurrentSize_BT(), start bank=%d, start_efuse_addr = %d\n", startBank, efuse_addr)); + + for(bank=startBank; bank> 5) | ((efuse_data & 0xF0) >> 1); + hworden = efuse_data & 0x0F; + } + } + else + { + hoffset = (efuse_data>>4) & 0x0F; + hworden = efuse_data & 0x0F; + } + word_cnts = Efuse_CalculateWordCnts(hworden); + //read next header + efuse_addr = efuse_addr + (word_cnts*2)+1; + } + else + { + bContinual = _FALSE ; + } + } + + // Check if we need to check next bank efuse + if(efuse_addr < (EFUSE_REAL_CONTENT_LEN-EFUSE_PROTECT_BYTES_BANK)) + { + break;// don't need to check next bank. + } + } + + retU2 = ((bank-1)*EFUSE_REAL_CONTENT_LEN)+efuse_addr; + if(bPseudoTest) + { + fakeBTEfuseUsedBytes = retU2; + //RTPRINT(FEEPROM, EFUSE_PG, ("Hal_EfuseGetCurrentSize_BT(), return %d\n", fakeBTEfuseUsedBytes)); + } + else + { + BTEfuseUsedBytes = retU2; + //RTPRINT(FEEPROM, EFUSE_PG, ("Hal_EfuseGetCurrentSize_BT(), return %d\n", BTEfuseUsedBytes)); + } + + return retU2; +} + + +static u16 +hal_EfuseGetCurrentSize_8723(IN PADAPTER pAdapter, + IN BOOLEAN bPseudoTest) +{ + int bContinual = _TRUE; + + u16 efuse_addr = 0; + u8 hoffset=0,hworden=0; + u8 efuse_data,word_cnts=0; + + if(bPseudoTest) + { + efuse_addr = (u16)(fakeEfuseUsedBytes); + } + else + { + rtw_hal_get_hwreg(pAdapter, HW_VAR_EFUSE_BYTES, (u8 *)&efuse_addr); + } + //RTPRINT(FEEPROM, EFUSE_PG, ("hal_EfuseGetCurrentSize_8723(), start_efuse_addr = %d\n", efuse_addr)); + + while ( bContinual && + efuse_OneByteRead(pAdapter, efuse_addr ,&efuse_data, bPseudoTest) && + AVAILABLE_EFUSE_ADDR(efuse_addr)) + { + if(efuse_data!=0xFF) + { + if((efuse_data&0x1F) == 0x0F) //extended header + { + hoffset = efuse_data; + efuse_addr++; + efuse_OneByteRead(pAdapter, efuse_addr ,&efuse_data, bPseudoTest); + if((efuse_data & 0x0F) == 0x0F) + { + efuse_addr++; + continue; + } + else + { + hoffset = ((hoffset & 0xE0) >> 5) | ((efuse_data & 0xF0) >> 1); + hworden = efuse_data & 0x0F; + } + } + else + { + hoffset = (efuse_data>>4) & 0x0F; + hworden = efuse_data & 0x0F; + } + word_cnts = Efuse_CalculateWordCnts(hworden); + //read next header + efuse_addr = efuse_addr + (word_cnts*2)+1; + } + else + { + bContinual = _FALSE ; + } + } + + if(bPseudoTest) + { + fakeEfuseUsedBytes = efuse_addr; + //RTPRINT(FEEPROM, EFUSE_PG, ("hal_EfuseGetCurrentSize_8723(), return %d\n", fakeEfuseUsedBytes)); + } + else + { + rtw_hal_set_hwreg(pAdapter, HW_VAR_EFUSE_BYTES, (u8 *)&efuse_addr); + //RTPRINT(FEEPROM, EFUSE_PG, ("hal_EfuseGetCurrentSize_8723(), return %d\n", efuse_addr)); + } + + return efuse_addr; +} + +static u16 +Hal_EfuseGetCurrentSize_Pseudo(IN PADAPTER pAdapter, + IN BOOLEAN bPseudoTest) +{ + u16 ret=0; + + ret = hal_EfuseGetCurrentSize_8723(pAdapter, bPseudoTest); + + return ret; +} + +static u16 +rtl8192c_EfuseGetCurrentSize( + IN PADAPTER pAdapter, + IN u8 efuseType, + IN BOOLEAN bPseudoTest) +{ + u16 ret=0; + + if(efuseType == EFUSE_WIFI) + { + if(bPseudoTest) + { + ret = Hal_EfuseGetCurrentSize_Pseudo(pAdapter, bPseudoTest); + } + else + { + if(IS_HARDWARE_TYPE_8192C(pAdapter)) + { + ret = hal_EfuseGetCurrentSize_8192C(pAdapter, bPseudoTest); + } + else if(IS_HARDWARE_TYPE_8723A(pAdapter)) + { + ret = hal_EfuseGetCurrentSize_8723(pAdapter, bPseudoTest); + } + } + } + else + { + ret = Hal_EfuseGetCurrentSize_BT(pAdapter, bPseudoTest); + } + + return ret; +} + +static int +hal_EfusePgPacketRead_8192C( IN PADAPTER pAdapter, + IN u8 offset, + IN u8 *data, + IN BOOLEAN bPseudoTest) +{ + u8 ReadState = PG_STATE_HEADER; + + int bContinual = _TRUE; + int bDataEmpty = _TRUE ; + + u8 efuse_data,word_cnts=0; + u16 efuse_addr = 0; + u8 hoffset=0,hworden=0; + u8 tmpidx=0; + u8 tmpdata[8]; + + if(data==NULL) return _FALSE; + if(offset>15) return _FALSE; + + + _rtw_memset((PVOID)data, 0xff, sizeof(u8)*PGPKT_DATA_SIZE); + _rtw_memset((PVOID)tmpdata, 0xff, sizeof(u8)*PGPKT_DATA_SIZE); + + // + // Efuse has been pre-programmed dummy 5Bytes at the end of Efuse by CP. + // Skip dummy parts to prevent unexpected data read from Efuse. + // By pass right now. 2009.02.19. + // + while(bContinual && (efuse_addr < EFUSE_REAL_CONTENT_LEN) ) + { + //------- Header Read ------------- + if(ReadState & PG_STATE_HEADER) + { + if(efuse_OneByteRead(pAdapter, efuse_addr ,&efuse_data, bPseudoTest)&&(efuse_data!=0xFF)){ + hoffset = (efuse_data>>4) & 0x0F; + hworden = efuse_data & 0x0F; + word_cnts = Efuse_CalculateWordCnts(hworden); + bDataEmpty = _TRUE ; + + if(hoffset==offset){ + for(tmpidx = 0;tmpidx< word_cnts*2 ;tmpidx++){ + if(efuse_OneByteRead(pAdapter, efuse_addr+1+tmpidx ,&efuse_data, bPseudoTest) ){ + tmpdata[tmpidx] = efuse_data; + if(efuse_data!=0xff){ + bDataEmpty = _FALSE; + } + } + } + if(bDataEmpty==_FALSE){ + ReadState = PG_STATE_DATA; + }else{//read next header + efuse_addr = efuse_addr + (word_cnts*2)+1; + ReadState = PG_STATE_HEADER; + } + } + else{//read next header + efuse_addr = efuse_addr + (word_cnts*2)+1; + ReadState = PG_STATE_HEADER; + } + + } + else{ + bContinual = _FALSE ; + } + } + //------- Data section Read ------------- + else if(ReadState & PG_STATE_DATA) + { + efuse_WordEnableDataRead(hworden,tmpdata,data); + efuse_addr = efuse_addr + (word_cnts*2)+1; + ReadState = PG_STATE_HEADER; + } + + } + + if( (data[0]==0xff) &&(data[1]==0xff) && (data[2]==0xff) && (data[3]==0xff) && + (data[4]==0xff) &&(data[5]==0xff) && (data[6]==0xff) && (data[7]==0xff)) + return _FALSE; + else + return _TRUE; + +} + +static int +hal_EfusePgPacketRead_8723( IN PADAPTER pAdapter, + IN u8 offset, + IN u8 *data, + IN BOOLEAN bPseudoTest) +{ + u8 ReadState = PG_STATE_HEADER; + + int bContinual = _TRUE; + int bDataEmpty = _TRUE ; + + u8 efuse_data,word_cnts=0; + u16 efuse_addr = 0; + u8 hoffset=0,hworden=0; + u8 tmpidx=0; + u8 tmpdata[8]; + u8 max_section=0; + u8 tmp_header = 0; + + EFUSE_GetEfuseDefinition(pAdapter, EFUSE_WIFI, TYPE_EFUSE_MAX_SECTION, (PVOID)&max_section, bPseudoTest); + + if(data==NULL) + return _FALSE; + if(offset>max_section) + return _FALSE; + + _rtw_memset((PVOID)data, 0xff, sizeof(u8)*PGPKT_DATA_SIZE); + _rtw_memset((PVOID)tmpdata, 0xff, sizeof(u8)*PGPKT_DATA_SIZE); + + + // + // Efuse has been pre-programmed dummy 5Bytes at the end of Efuse by CP. + // Skip dummy parts to prevent unexpected data read from Efuse. + // By pass right now. 2009.02.19. + // + while(bContinual && AVAILABLE_EFUSE_ADDR(efuse_addr) ) + { + //------- Header Read ------------- + if(ReadState & PG_STATE_HEADER) + { + if(efuse_OneByteRead(pAdapter, efuse_addr ,&efuse_data, bPseudoTest)&&(efuse_data!=0xFF)) + { + if(EXT_HEADER(efuse_data)) + { + tmp_header = efuse_data; + efuse_addr++; + efuse_OneByteRead(pAdapter, efuse_addr ,&efuse_data, bPseudoTest); + if(!ALL_WORDS_DISABLED(efuse_data)) + { + hoffset = ((tmp_header & 0xE0) >> 5) | ((efuse_data & 0xF0) >> 1); + hworden = efuse_data & 0x0F; + } + else + { + DBG_8192C("Error, All words disabled\n"); + efuse_addr++; + continue; + } + } + else + { + hoffset = (efuse_data>>4) & 0x0F; + hworden = efuse_data & 0x0F; + } + word_cnts = Efuse_CalculateWordCnts(hworden); + bDataEmpty = _TRUE ; + + if(hoffset==offset) + { + for(tmpidx = 0;tmpidx< word_cnts*2 ;tmpidx++) + { + if(efuse_OneByteRead(pAdapter, efuse_addr+1+tmpidx ,&efuse_data, bPseudoTest) ) + { + tmpdata[tmpidx] = efuse_data; + if(efuse_data!=0xff) + { + bDataEmpty = _FALSE; + } + } + } + if(bDataEmpty==_FALSE){ + ReadState = PG_STATE_DATA; + }else{//read next header + efuse_addr = efuse_addr + (word_cnts*2)+1; + ReadState = PG_STATE_HEADER; + } + } + else{//read next header + efuse_addr = efuse_addr + (word_cnts*2)+1; + ReadState = PG_STATE_HEADER; + } + + } + else{ + bContinual = _FALSE ; + } + } + //------- Data section Read ------------- + else if(ReadState & PG_STATE_DATA) + { + efuse_WordEnableDataRead(hworden,tmpdata,data); + efuse_addr = efuse_addr + (word_cnts*2)+1; + ReadState = PG_STATE_HEADER; + } + + } + + if( (data[0]==0xff) &&(data[1]==0xff) && (data[2]==0xff) && (data[3]==0xff) && + (data[4]==0xff) &&(data[5]==0xff) && (data[6]==0xff) && (data[7]==0xff)) + return _FALSE; + else + return _TRUE; + +} + +static int +Hal_EfusePgPacketRead( IN PADAPTER pAdapter, + IN u8 offset, + IN u8 *data, + IN BOOLEAN bPseudoTest) +{ + int ret=0; + + if(IS_HARDWARE_TYPE_8192C(pAdapter)) + { + ret = hal_EfusePgPacketRead_8192C(pAdapter, offset, data, bPseudoTest); + } + else if(IS_HARDWARE_TYPE_8723A(pAdapter)) + { + ret = hal_EfusePgPacketRead_8723(pAdapter, offset, data, bPseudoTest); + } + + return ret; +} + +static int +Hal_EfusePgPacketRead_Pseudo( IN PADAPTER pAdapter, + IN u8 offset, + IN u8 *data, + IN BOOLEAN bPseudoTest) +{ + int ret=0; + + ret = hal_EfusePgPacketRead_8723(pAdapter, offset, data, bPseudoTest); + + return ret; +} + +static int +rtl8192c_Efuse_PgPacketRead( IN PADAPTER pAdapter, + IN u8 offset, + IN u8 *data, + IN BOOLEAN bPseudoTest) +{ + int ret=0; + + if(bPseudoTest) + { + ret = Hal_EfusePgPacketRead_Pseudo(pAdapter, offset, data, bPseudoTest); + } + else + { + ret = Hal_EfusePgPacketRead(pAdapter, offset, data, bPseudoTest); + } + + return ret; +} + +static BOOLEAN +hal_EfuseFixHeaderProcess( + IN PADAPTER pAdapter, + IN u8 efuseType, + IN PPGPKT_STRUCT pFixPkt, + IN u16 *pAddr, + IN BOOLEAN bPseudoTest +) +{ + u8 originaldata[8], badworden=0; + u16 efuse_addr=*pAddr; + u32 PgWriteSuccess=0; + + _rtw_memset((PVOID)originaldata, 0xff, 8); + + if(Efuse_PgPacketRead(pAdapter, pFixPkt->offset, originaldata, bPseudoTest)) + { //check if data exist + badworden = Efuse_WordEnableDataWrite(pAdapter, efuse_addr+1, pFixPkt->word_en, originaldata, bPseudoTest); + + if(badworden != 0xf) // write fail + { + if(efuseType == EFUSE_WIFI) + PgWriteSuccess = Efuse_PgPacketWrite(pAdapter, pFixPkt->offset, badworden, originaldata, bPseudoTest); + else + PgWriteSuccess = hal_EfusePgPacketWrite_BT(pAdapter, pFixPkt->offset, badworden, originaldata, bPseudoTest); + if(!PgWriteSuccess) + return _FALSE; + else + efuse_addr = Efuse_GetCurrentSize(pAdapter, efuseType, bPseudoTest); + } + else + { + efuse_addr = efuse_addr + (pFixPkt->word_cnts*2) +1; + } + } + else + { + efuse_addr = efuse_addr + (pFixPkt->word_cnts*2) +1; + } + *pAddr = efuse_addr; + return _TRUE; +} + +static BOOLEAN +hal_EfusePgPacketWrite2ByteHeader( + IN PADAPTER pAdapter, + IN u8 efuseType, + IN u16 *pAddr, + IN PPGPKT_STRUCT pTargetPkt, + IN BOOLEAN bPseudoTest) +{ + BOOLEAN bRet=_FALSE, bContinual=_TRUE; + u16 efuse_addr=*pAddr, efuse_max_available_len=0; + u8 pg_header=0, tmp_header=0, pg_header_temp=0; + u8 repeatcnt=0; + + //RTPRINT(FEEPROM, EFUSE_PG, ("Wirte 2byte header\n")); + EFUSE_GetEfuseDefinition(pAdapter, efuseType, TYPE_AVAILABLE_EFUSE_BYTES_BANK, (PVOID)&efuse_max_available_len, bPseudoTest); + + while(efuse_addr < efuse_max_available_len) + { + pg_header = ((pTargetPkt->offset & 0x07) << 5) | 0x0F; + //RTPRINT(FEEPROM, EFUSE_PG, ("pg_header = 0x%x\n", pg_header)); + efuse_OneByteWrite(pAdapter, efuse_addr, pg_header, bPseudoTest); + efuse_OneByteRead(pAdapter, efuse_addr, &tmp_header, bPseudoTest); + + while(tmp_header == 0xFF) + { + if(repeatcnt++ > EFUSE_REPEAT_THRESHOLD_) + { + //RTPRINT(FEEPROM, EFUSE_PG, ("Repeat over limit for pg_header!!\n")); + return _FALSE; + } + + efuse_OneByteWrite(pAdapter, efuse_addr, pg_header, bPseudoTest); + efuse_OneByteRead(pAdapter, efuse_addr, &tmp_header, bPseudoTest); + } + + //to write ext_header + if(tmp_header == pg_header) + { + efuse_addr++; + pg_header_temp = pg_header; + pg_header = ((pTargetPkt->offset & 0x78) << 1) | pTargetPkt->word_en; + + efuse_OneByteWrite(pAdapter, efuse_addr, pg_header, bPseudoTest); + efuse_OneByteRead(pAdapter, efuse_addr, &tmp_header, bPseudoTest); + + while(tmp_header == 0xFF) + { + if(repeatcnt++ > EFUSE_REPEAT_THRESHOLD_) + { + //RTPRINT(FEEPROM, EFUSE_PG, ("Repeat over limit for ext_header!!\n")); + return _FALSE; + } + + efuse_OneByteWrite(pAdapter, efuse_addr, pg_header, bPseudoTest); + efuse_OneByteRead(pAdapter, efuse_addr, &tmp_header, bPseudoTest); + } + + if((tmp_header & 0x0F) == 0x0F) //word_en PG fail + { + if(repeatcnt++ > EFUSE_REPEAT_THRESHOLD_) + { + //RTPRINT(FEEPROM, EFUSE_PG, ("Repeat over limit for word_en!!\n")); + return _FALSE; + } + else + { + efuse_addr++; + continue; + } + } + else if(pg_header != tmp_header) //offset PG fail + { + PGPKT_STRUCT fixPkt; + //RTPRINT(FEEPROM, EFUSE_PG, ("Error condition for offset PG fail, need to cover the existed data\n")); + fixPkt.offset = ((pg_header_temp & 0xE0) >> 5) | ((tmp_header & 0xF0) >> 1); + fixPkt.word_en = tmp_header & 0x0F; + fixPkt.word_cnts = Efuse_CalculateWordCnts(fixPkt.word_en); + if(!hal_EfuseFixHeaderProcess(pAdapter, efuseType, &fixPkt, &efuse_addr, bPseudoTest)) + return _FALSE; + } + else + { + bRet = _TRUE; + break; + } + } + else if ((tmp_header & 0x1F) == 0x0F) //wrong extended header + { + efuse_addr+=2; + continue; + } + } + + *pAddr = efuse_addr; + return bRet; +} + +static BOOLEAN +hal_EfusePgPacketWrite1ByteHeader( + IN PADAPTER pAdapter, + IN u8 efuseType, + IN u16 *pAddr, + IN PPGPKT_STRUCT pTargetPkt, + IN BOOLEAN bPseudoTest) +{ + BOOLEAN bRet=_FALSE; + u8 pg_header=0, tmp_header=0; + u16 efuse_addr=*pAddr; + u8 repeatcnt=0; + + //RTPRINT(FEEPROM, EFUSE_PG, ("Wirte 1byte header\n")); + pg_header = ((pTargetPkt->offset << 4) & 0xf0) |pTargetPkt->word_en; + + efuse_OneByteWrite(pAdapter, efuse_addr, pg_header, bPseudoTest); + efuse_OneByteRead(pAdapter, efuse_addr, &tmp_header, bPseudoTest); + + while(tmp_header == 0xFF) + { + if(repeatcnt++ > EFUSE_REPEAT_THRESHOLD_) + { + return _FALSE; + } + efuse_OneByteWrite(pAdapter,efuse_addr, pg_header, bPseudoTest); + efuse_OneByteRead(pAdapter,efuse_addr, &tmp_header, bPseudoTest); + } + + if(pg_header == tmp_header) + { + bRet = _TRUE; + } + else + { + PGPKT_STRUCT fixPkt; + //RTPRINT(FEEPROM, EFUSE_PG, ("Error condition for fixed PG packet, need to cover the existed data\n")); + fixPkt.offset = (tmp_header>>4) & 0x0F; + fixPkt.word_en = tmp_header & 0x0F; + fixPkt.word_cnts = Efuse_CalculateWordCnts(fixPkt.word_en); + if(!hal_EfuseFixHeaderProcess(pAdapter, efuseType, &fixPkt, &efuse_addr, bPseudoTest)) + return _FALSE; + } + + *pAddr = efuse_addr; + return bRet; +} + +static BOOLEAN +hal_EfusePgPacketWriteData( + IN PADAPTER pAdapter, + IN u8 efuseType, + IN u16 *pAddr, + IN PPGPKT_STRUCT pTargetPkt, + IN BOOLEAN bPseudoTest) +{ + BOOLEAN bRet=_FALSE; + u16 efuse_addr=*pAddr; + u8 badworden=0; + u32 PgWriteSuccess=0; + + badworden = 0x0f; + badworden = Efuse_WordEnableDataWrite(pAdapter, efuse_addr+1, pTargetPkt->word_en, pTargetPkt->data, bPseudoTest); + if(badworden == 0x0F) + { + // write ok + //RTPRINT(FEEPROM, EFUSE_PG, ("hal_EfusePgPacketWriteData ok!!\n")); + return _TRUE; + } + else + { + //RTPRINT(FEEPROM, EFUSE_PG, ("hal_EfusePgPacketWriteData Fail!!\n")); + //reorganize other pg packet + if(efuseType == EFUSE_WIFI) + PgWriteSuccess = Efuse_PgPacketWrite(pAdapter, pTargetPkt->offset, badworden, pTargetPkt->data, bPseudoTest); + else + PgWriteSuccess = hal_EfusePgPacketWrite_BT(pAdapter, pTargetPkt->offset, badworden, pTargetPkt->data, bPseudoTest); + if(!PgWriteSuccess) + return _FALSE; + else + return _TRUE; + } + + return bRet; +} + +static BOOLEAN +hal_EfusePgPacketWriteHeader( + IN PADAPTER pAdapter, + IN u8 efuseType, + IN u16 *pAddr, + IN PPGPKT_STRUCT pTargetPkt, + IN BOOLEAN bPseudoTest) +{ + BOOLEAN bRet=_FALSE; + + if(pTargetPkt->offset >= EFUSE_MAX_SECTION_BASE) + { + bRet = hal_EfusePgPacketWrite2ByteHeader(pAdapter, efuseType, pAddr, pTargetPkt, bPseudoTest); + } + else + { + bRet = hal_EfusePgPacketWrite1ByteHeader(pAdapter, efuseType, pAddr, pTargetPkt, bPseudoTest); + } + + return bRet; +} + +static BOOLEAN +hal_EfusePgCheckAvailableAddr( + IN PADAPTER pAdapter, + IN u8 efuseType, + IN BOOLEAN bPseudoTest + ) +{ + u16 efuse_max_available_len=0; + + EFUSE_GetEfuseDefinition(pAdapter, efuseType, TYPE_AVAILABLE_EFUSE_BYTES_TOTAL, (PVOID)&efuse_max_available_len, bPseudoTest); + //RTPRINT(FEEPROM, EFUSE_PG, ("efuse_max_available_len = %d\n", efuse_max_available_len)); + + if(Efuse_GetCurrentSize(pAdapter, efuseType, bPseudoTest) >= efuse_max_available_len) + { + //RTPRINT(FEEPROM, EFUSE_PG, ("hal_EfusePgCheckAvailableAddr error!!\n")); + return _FALSE; + } + return _TRUE; +} + +static VOID +hal_EfuseConstructPGPkt( + IN u8 offset, + IN u8 word_en, + IN u8 *pData, + IN PPGPKT_STRUCT pTargetPkt + +) +{ + _rtw_memset((PVOID)pTargetPkt->data, 0xFF, sizeof(u8)*8); + pTargetPkt->offset = offset; + pTargetPkt->word_en= word_en; + efuse_WordEnableDataRead(word_en, pData, pTargetPkt->data); + pTargetPkt->word_cnts = Efuse_CalculateWordCnts(pTargetPkt->word_en); + + //RTPRINT(FEEPROM, EFUSE_PG, ("hal_EfuseConstructPGPkt(), targetPkt, offset=%d, word_en=0x%x, word_cnts=%d\n", pTargetPkt->offset, pTargetPkt->word_en, pTargetPkt->word_cnts)); +} + +static BOOLEAN +hal_EfuseCheckIfDatafollowed( + IN PADAPTER pAdapter, + IN u8 word_cnts, + IN u16 startAddr, + IN BOOLEAN bPseudoTest + ) +{ + BOOLEAN bRet=_FALSE; + u8 i, efuse_data; + + for(i=0; i<(word_cnts*2) ; i++) + { + if(efuse_OneByteRead(pAdapter, (startAddr+i) ,&efuse_data, bPseudoTest)&&(efuse_data != 0xFF)) + bRet = _TRUE; + } + + return bRet; +} + +static BOOLEAN +wordEnMatched( + IN PPGPKT_STRUCT pTargetPkt, + IN PPGPKT_STRUCT pCurPkt, + IN u8 *pWden +) +{ + u8 match_word_en = 0x0F; // default all words are disabled + u8 i; + + // check if the same words are enabled both target and current PG packet + if( ((pTargetPkt->word_en & BIT0) == 0) && + ((pCurPkt->word_en & BIT0) == 0) ) + { + match_word_en &= ~BIT0; // enable word 0 + } + if( ((pTargetPkt->word_en & BIT1) == 0) && + ((pCurPkt->word_en & BIT1) == 0) ) + { + match_word_en &= ~BIT1; // enable word 1 + } + if( ((pTargetPkt->word_en & BIT2) == 0) && + ((pCurPkt->word_en & BIT2) == 0) ) + { + match_word_en &= ~BIT2; // enable word 2 + } + if( ((pTargetPkt->word_en & BIT3) == 0) && + ((pCurPkt->word_en & BIT3) == 0) ) + { + match_word_en &= ~BIT3; // enable word 3 + } + + *pWden = match_word_en; + + if(match_word_en != 0xf) + return _TRUE; + else + return _FALSE; +} + +static BOOLEAN +hal_EfusePartialWriteCheck( + IN PADAPTER pAdapter, + IN u8 efuseType, + IN u16 *pAddr, + IN PPGPKT_STRUCT pTargetPkt, + IN BOOLEAN bPseudoTest + ) +{ + BOOLEAN bRet=_FALSE; + u8 i, efuse_data=0, cur_header=0; + u8 new_wden=0, matched_wden=0, badworden=0; + u16 startAddr=0, efuse_max_available_len=0, efuse_max=0; + PGPKT_STRUCT curPkt; + + EFUSE_GetEfuseDefinition(pAdapter, efuseType, TYPE_AVAILABLE_EFUSE_BYTES_BANK, (PVOID)&efuse_max_available_len, bPseudoTest); + EFUSE_GetEfuseDefinition(pAdapter, efuseType, TYPE_EFUSE_REAL_CONTENT_LEN, (PVOID)&efuse_max, bPseudoTest); + + if(efuseType == EFUSE_WIFI) + { + if(bPseudoTest) + { + startAddr = (u16)(fakeEfuseUsedBytes%EFUSE_REAL_CONTENT_LEN); + } + else + { + rtw_hal_get_hwreg(pAdapter, HW_VAR_EFUSE_BYTES, (u8 *)&startAddr); + startAddr%=EFUSE_REAL_CONTENT_LEN; + } + } + else + { + if(bPseudoTest) + { + startAddr = (u16)(fakeBTEfuseUsedBytes%EFUSE_REAL_CONTENT_LEN); + } + else + { + startAddr = (u16)(BTEfuseUsedBytes%EFUSE_REAL_CONTENT_LEN); + } + } + //RTPRINT(FEEPROM, EFUSE_PG, ("hal_EfusePartialWriteCheck(), startAddr=%d\n", startAddr)); + + while(1) + { + if(startAddr >= efuse_max_available_len) + { + bRet = _FALSE; + break; + } + + if(efuse_OneByteRead(pAdapter, startAddr, &efuse_data, bPseudoTest) && (efuse_data!=0xFF)) + { + if(EXT_HEADER(efuse_data)) + { + cur_header = efuse_data; + startAddr++; + efuse_OneByteRead(pAdapter, startAddr, &efuse_data, bPseudoTest); + if(ALL_WORDS_DISABLED(efuse_data)) + { + //RTPRINT(FEEPROM, EFUSE_PG, ("Error condition, all words disabled")); + bRet = _FALSE; + break; + } + else + { + curPkt.offset = ((cur_header & 0xE0) >> 5) | ((efuse_data & 0xF0) >> 1); + curPkt.word_en = efuse_data & 0x0F; + } + } + else + { + cur_header = efuse_data; + curPkt.offset = (cur_header>>4) & 0x0F; + curPkt.word_en = cur_header & 0x0F; + } + + curPkt.word_cnts = Efuse_CalculateWordCnts(curPkt.word_en); + // if same header is found but no data followed + // write some part of data followed by the header. + if( (curPkt.offset == pTargetPkt->offset) && + (!hal_EfuseCheckIfDatafollowed(pAdapter, curPkt.word_cnts, startAddr+1, bPseudoTest)) && + wordEnMatched(pTargetPkt, &curPkt, &matched_wden) ) + { + //RTPRINT(FEEPROM, EFUSE_PG, ("Need to partial write data by the previous wrote header\n")); + // Here to write partial data + badworden = Efuse_WordEnableDataWrite(pAdapter, startAddr+1, matched_wden, pTargetPkt->data, bPseudoTest); + if(badworden != 0x0F) + { + u32 PgWriteSuccess=0; + // if write fail on some words, write these bad words again + if(efuseType == EFUSE_WIFI) + PgWriteSuccess = Efuse_PgPacketWrite(pAdapter, pTargetPkt->offset, badworden, pTargetPkt->data, bPseudoTest); + else + PgWriteSuccess = hal_EfusePgPacketWrite_BT(pAdapter, pTargetPkt->offset, badworden, pTargetPkt->data, bPseudoTest); + + if(!PgWriteSuccess) + { + bRet = _FALSE; // write fail, return + break; + } + } + // partial write ok, update the target packet for later use + for(i=0; i<4; i++) + { + if((matched_wden & (0x1<word_en |= (0x1<word_cnts = Efuse_CalculateWordCnts(pTargetPkt->word_en); + } + // read from next header + startAddr = startAddr + (curPkt.word_cnts*2) +1; + } + else + { + // not used header, 0xff + *pAddr = startAddr; + //RTPRINT(FEEPROM, EFUSE_PG, ("Started from unused header offset=%d\n", startAddr)); + bRet = _TRUE; + break; + } + } + return bRet; +} + +static BOOLEAN +hal_EfusePgPacketWrite_BT( + IN PADAPTER pAdapter, + IN u8 offset, + IN u8 word_en, + IN u8 *pData, + IN BOOLEAN bPseudoTest + ) +{ + PGPKT_STRUCT targetPkt; + u16 startAddr=0; + u8 efuseType=EFUSE_BT; + + if(!hal_EfusePgCheckAvailableAddr(pAdapter, efuseType, bPseudoTest)) + return _FALSE; + + hal_EfuseConstructPGPkt(offset, word_en, pData, &targetPkt); + + if(!hal_EfusePartialWriteCheck(pAdapter, efuseType, &startAddr, &targetPkt, bPseudoTest)) + return _FALSE; + + if(!hal_EfusePgPacketWriteHeader(pAdapter, efuseType, &startAddr, &targetPkt, bPseudoTest)) + return _FALSE; + + if(!hal_EfusePgPacketWriteData(pAdapter, efuseType, &startAddr, &targetPkt, bPseudoTest)) + return _FALSE; + + return _TRUE; +} + +static BOOLEAN +hal_EfusePgPacketWrite_8723( + IN PADAPTER pAdapter, + IN u8 offset, + IN u8 word_en, + IN u8 *pData, + IN BOOLEAN bPseudoTest + ) +{ + PGPKT_STRUCT targetPkt; + u16 startAddr=0; + u8 efuseType=EFUSE_WIFI; + + if(!hal_EfusePgCheckAvailableAddr(pAdapter, efuseType, bPseudoTest)) + return _FALSE; + + hal_EfuseConstructPGPkt(offset, word_en, pData, &targetPkt); + + if(!hal_EfusePartialWriteCheck(pAdapter, efuseType, &startAddr, &targetPkt, bPseudoTest)) + return _FALSE; + + if(!hal_EfusePgPacketWriteHeader(pAdapter, efuseType, &startAddr, &targetPkt, bPseudoTest)) + return _FALSE; + + if(!hal_EfusePgPacketWriteData(pAdapter, efuseType, &startAddr, &targetPkt, bPseudoTest)) + return _FALSE; + + return _TRUE; +} + +static int +hal_EfusePgPacketWrite_8192C(IN PADAPTER pAdapter, + IN u8 offset, + IN u8 word_en, + IN u8 *data, + IN BOOLEAN bPseudoTest) +{ + u8 WriteState = PG_STATE_HEADER; + + int bContinual = _TRUE,bDataEmpty=_TRUE, bResult = _TRUE; + u16 efuse_addr = 0; + u8 efuse_data; + + u8 pg_header = 0; + + u8 tmp_word_cnts=0,target_word_cnts=0; + u8 tmp_header,match_word_en,tmp_word_en; + + PGPKT_STRUCT target_pkt; + PGPKT_STRUCT tmp_pkt; + + u8 originaldata[sizeof(u8)*8]; + u8 tmpindex = 0,badworden = 0x0F; + + static int repeat_times = 0; + u8 efuseType=EFUSE_WIFI; + + // + // Efuse has been pre-programmed dummy 5Bytes at the end of Efuse by CP. + // So we have to prevent unexpected data string connection, which will cause + // incorrect data auto-load from HW. The total size is equal or smaller than 498bytes + // (i.e., offset 0~497, and dummy 1bytes) expected after CP test. + // 2009.02.19. + // + if( Efuse_GetCurrentSize(pAdapter, efuseType, bPseudoTest) >= (EFUSE_REAL_CONTENT_LEN-EFUSE_OOB_PROTECT_BYTES)) + { + //RTPRINT(FEEPROM, EFUSE_PG, ("hal_EfusePgPacketWrite_8192C(), over size\n")); + return _FALSE; + } + + // Init the 8 bytes content as 0xff + target_pkt.offset = offset; + target_pkt.word_en= word_en; + + _rtw_memset((PVOID)target_pkt.data, 0xFF, sizeof(u8)*8); + + efuse_WordEnableDataRead(word_en,data,target_pkt.data); + target_word_cnts = Efuse_CalculateWordCnts(target_pkt.word_en); + + //efuse_reg_ctrl(pAdapter,_TRUE);//power on + //RTPRINT(FEEPROM, EFUSE_PG, ("EFUSE Power ON\n")); + + // + // Efuse has been pre-programmed dummy 5Bytes at the end of Efuse by CP. + // So we have to prevent unexpected data string connection, which will cause + // incorrect data auto-load from HW. Dummy 1bytes is additional. + // 2009.02.19. + // + while( bContinual && (efuse_addr < (EFUSE_REAL_CONTENT_LEN-EFUSE_OOB_PROTECT_BYTES)) ) + { + + if(WriteState==PG_STATE_HEADER) + { + bDataEmpty=_TRUE; + badworden = 0x0F; + //************ so ******************* + //RTPRINT(FEEPROM, EFUSE_PG, ("EFUSE PG_STATE_HEADER\n")); + if ( efuse_OneByteRead(pAdapter, efuse_addr ,&efuse_data, bPseudoTest) && + (efuse_data!=0xFF)) + { + tmp_header = efuse_data; + + tmp_pkt.offset = (tmp_header>>4) & 0x0F; + tmp_pkt.word_en = tmp_header & 0x0F; + tmp_word_cnts = Efuse_CalculateWordCnts(tmp_pkt.word_en); + + //************ so-1 ******************* + if(tmp_pkt.offset != target_pkt.offset) + { + efuse_addr = efuse_addr + (tmp_word_cnts*2) +1; //Next pg_packet + #if (EFUSE_ERROE_HANDLE == 1) + WriteState = PG_STATE_HEADER; + #endif + } + else + { + //************ so-2 ******************* + for(tmpindex=0 ; tmpindex<(tmp_word_cnts*2) ; tmpindex++) + { + if(efuse_OneByteRead(pAdapter, (efuse_addr+1+tmpindex) ,&efuse_data, bPseudoTest)&&(efuse_data != 0xFF)){ + bDataEmpty = _FALSE; + } + } + //************ so-2-1 ******************* + if(bDataEmpty == _FALSE) + { + efuse_addr = efuse_addr + (tmp_word_cnts*2) +1; //Next pg_packet + #if (EFUSE_ERROE_HANDLE == 1) + WriteState=PG_STATE_HEADER; + #endif + } + else + {//************ so-2-2 ******************* + match_word_en = 0x0F; + if( !( (target_pkt.word_en&BIT0)|(tmp_pkt.word_en&BIT0) )) + { + match_word_en &= (~BIT0); + } + if( !( (target_pkt.word_en&BIT1)|(tmp_pkt.word_en&BIT1) )) + { + match_word_en &= (~BIT1); + } + if( !( (target_pkt.word_en&BIT2)|(tmp_pkt.word_en&BIT2) )) + { + match_word_en &= (~BIT2); + } + if( !( (target_pkt.word_en&BIT3)|(tmp_pkt.word_en&BIT3) )) + { + match_word_en &= (~BIT3); + } + + //************ so-2-2-A ******************* + if((match_word_en&0x0F)!=0x0F) + { + badworden = Efuse_WordEnableDataWrite(pAdapter,efuse_addr+1, tmp_pkt.word_en ,target_pkt.data, bPseudoTest); + + //************ so-2-2-A-1 ******************* + //############################ + if(0x0F != (badworden&0x0F)) + { + u8 reorg_offset = offset; + u8 reorg_worden=badworden; + Efuse_PgPacketWrite(pAdapter,reorg_offset,reorg_worden,originaldata, bPseudoTest); + } + //############################ + + tmp_word_en = 0x0F; + if( (target_pkt.word_en&BIT0)^(match_word_en&BIT0) ) + { + tmp_word_en &= (~BIT0); + } + if( (target_pkt.word_en&BIT1)^(match_word_en&BIT1) ) + { + tmp_word_en &= (~BIT1); + } + if( (target_pkt.word_en&BIT2)^(match_word_en&BIT2) ) + { + tmp_word_en &= (~BIT2); + } + if( (target_pkt.word_en&BIT3)^(match_word_en&BIT3) ) + { + tmp_word_en &=(~BIT3); + } + + //************ so-2-2-A-2 ******************* + if((tmp_word_en&0x0F)!=0x0F){ + //reorganize other pg packet + //efuse_addr = efuse_addr + (2*tmp_word_cnts) +1;//next pg packet addr + efuse_addr = Efuse_GetCurrentSize(pAdapter, efuseType, bPseudoTest); + //=========================== + target_pkt.offset = offset; + target_pkt.word_en= tmp_word_en; + //=========================== + }else{ + bContinual = _FALSE; + } + #if (EFUSE_ERROE_HANDLE == 1) + WriteState=PG_STATE_HEADER; + repeat_times++; + if(repeat_times>EFUSE_REPEAT_THRESHOLD_){ + bContinual = _FALSE; + bResult = _FALSE; + } + #endif + } + else{//************ so-2-2-B ******************* + //reorganize other pg packet + efuse_addr = efuse_addr + (2*tmp_word_cnts) +1;//next pg packet addr + //=========================== + target_pkt.offset = offset; + target_pkt.word_en= target_pkt.word_en; + //=========================== + #if (EFUSE_ERROE_HANDLE == 1) + WriteState=PG_STATE_HEADER; + #endif + } + } + } + //RTPRINT(FEEPROM, EFUSE_PG, ("EFUSE PG_STATE_HEADER-1\n")); + } + else //************ s1: header == oxff ******************* + { + pg_header = ((target_pkt.offset << 4)&0xf0) |target_pkt.word_en; + + efuse_OneByteWrite(pAdapter,efuse_addr, pg_header, bPseudoTest); + efuse_OneByteRead(pAdapter,efuse_addr, &tmp_header, bPseudoTest); + + if(tmp_header == pg_header) + { //************ s1-1******************* + WriteState = PG_STATE_DATA; + } + #if (EFUSE_ERROE_HANDLE == 1) + else if(tmp_header == 0xFF){//************ s1-3: if Write or read func doesn't work ******************* + //efuse_addr doesn't change + WriteState = PG_STATE_HEADER; + repeat_times++; + if(repeat_times>EFUSE_REPEAT_THRESHOLD_){ + bContinual = _FALSE; + bResult = _FALSE; + } + } + #endif + else + {//************ s1-2 : fixed the header procedure ******************* + tmp_pkt.offset = (tmp_header>>4) & 0x0F; + tmp_pkt.word_en= tmp_header & 0x0F; + tmp_word_cnts = Efuse_CalculateWordCnts(tmp_pkt.word_en); + + //************ s1-2-A :cover the exist data ******************* + //memset(originaldata,0xff,sizeof(UINT8)*8); + _rtw_memset((PVOID)originaldata, 0xff, sizeof(u8)*8); + + if(Efuse_PgPacketRead( pAdapter, tmp_pkt.offset,originaldata, bPseudoTest)) + { //check if data exist + //efuse_reg_ctrl(pAdapter,_TRUE);//power on + badworden = Efuse_WordEnableDataWrite(pAdapter,efuse_addr+1,tmp_pkt.word_en,originaldata, bPseudoTest); + //############################ + if(0x0F != (badworden&0x0F)) + { + u8 reorg_offset = tmp_pkt.offset; + u8 reorg_worden=badworden; + Efuse_PgPacketWrite(pAdapter,reorg_offset,reorg_worden,originaldata, bPseudoTest); + efuse_addr = Efuse_GetCurrentSize(pAdapter, efuseType, bPseudoTest); + } + //############################ + else{ + efuse_addr = efuse_addr + (tmp_word_cnts*2) +1; //Next pg_packet + } + } + //************ s1-2-B: wrong address******************* + else + { + efuse_addr = efuse_addr + (tmp_word_cnts*2) +1; //Next pg_packet + } + + #if (EFUSE_ERROE_HANDLE == 1) + WriteState=PG_STATE_HEADER; + repeat_times++; + if(repeat_times>EFUSE_REPEAT_THRESHOLD_){ + bContinual = _FALSE; + bResult = _FALSE; + } + #endif + + //RTPRINT(FEEPROM, EFUSE_PG, ("EFUSE PG_STATE_HEADER-2\n")); + } + + } + + } + //write data state + else if(WriteState==PG_STATE_DATA) + { //************ s1-1 ******************* + //RTPRINT(FEEPROM, EFUSE_PG, ("EFUSE PG_STATE_DATA\n")); + badworden = 0x0f; + badworden = Efuse_WordEnableDataWrite(pAdapter,efuse_addr+1,target_pkt.word_en,target_pkt.data, bPseudoTest); + if((badworden&0x0F)==0x0F) + { //************ s1-1-A ******************* + bContinual = _FALSE; + } + else + {//reorganize other pg packet //************ s1-1-B ******************* + efuse_addr = efuse_addr + (2*target_word_cnts) +1;//next pg packet addr + + //=========================== + target_pkt.offset = offset; + target_pkt.word_en= badworden; + target_word_cnts = Efuse_CalculateWordCnts(target_pkt.word_en); + //=========================== + #if (EFUSE_ERROE_HANDLE == 1) + WriteState=PG_STATE_HEADER; + repeat_times++; + if(repeat_times>EFUSE_REPEAT_THRESHOLD_){ + bContinual = _FALSE; + bResult = _FALSE; + } + #endif + //RTPRINT(FEEPROM, EFUSE_PG, ("EFUSE PG_STATE_HEADER-3\n")); + } + } + } + + if(efuse_addr >= (EFUSE_REAL_CONTENT_LEN-EFUSE_OOB_PROTECT_BYTES)) + { + //RT_TRACE(COMP_EFUSE, DBG_LOUD, ("hal_EfusePgPacketWrite_8192C(): efuse_addr(%#x) Out of size!!\n", efuse_addr)); + } + //efuse_reg_ctrl(pAdapter,_FALSE);//power off + + return _TRUE; +} + +static int +Hal_EfusePgPacketWrite_Pseudo(IN PADAPTER pAdapter, + IN u8 offset, + IN u8 word_en, + IN u8 *data, + IN BOOLEAN bPseudoTest) +{ + int ret; + + ret = hal_EfusePgPacketWrite_8723(pAdapter, offset, word_en, data, bPseudoTest); + + return ret; +} + +static int +Hal_EfusePgPacketWrite(IN PADAPTER pAdapter, + IN u8 offset, + IN u8 word_en, + IN u8 *data, + IN BOOLEAN bPseudoTest) +{ + int ret=0; + + if(IS_HARDWARE_TYPE_8192C(pAdapter)) + { + ret = hal_EfusePgPacketWrite_8192C(pAdapter, offset, word_en, data, bPseudoTest); + } + else if(IS_HARDWARE_TYPE_8723A(pAdapter)) + { + ret = hal_EfusePgPacketWrite_8723(pAdapter, offset, word_en, data, bPseudoTest); + } + + return ret; +} + +static int +rtl8192c_Efuse_PgPacketWrite(IN PADAPTER pAdapter, + IN u8 offset, + IN u8 word_en, + IN u8 *data, + IN BOOLEAN bPseudoTest) +{ + int ret; + + if(bPseudoTest) + { + ret = Hal_EfusePgPacketWrite_Pseudo(pAdapter, offset, word_en, data, bPseudoTest); + } + else + { + ret = Hal_EfusePgPacketWrite(pAdapter, offset, word_en, data, bPseudoTest); + } + return ret; +} + +VOID +rtl8192c_EfuseParseIDCode( + IN PADAPTER pAdapter, + IN u8 *hwinfo + ) +{ + EEPROM_EFUSE_PRIV *pEEPROM = GET_EEPROM_EFUSE_PRIV(pAdapter); + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(pAdapter); + u16 i,EEPROMId; + + // Checl 0x8129 again for making sure autoload status!! + EEPROMId = *((u16 *)&hwinfo[0]); + if( le16_to_cpu(EEPROMId) != RTL_EEPROM_ID) + { + DBG_8192C("EEPROM ID(%#x) is invalid!!\n", EEPROMId); + pEEPROM->bautoload_fail_flag = _TRUE; + } + else + { + pEEPROM->bautoload_fail_flag = _FALSE; + } + + //RT_TRACE(COMP_INIT, DBG_LOUD, ("EEPROM ID = 0x%4x\n", EEPROMId)); +} + +void rtl8192c_read_chip_version(PADAPTER pAdapter) +{ + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(pAdapter); + pHalData->VersionID = rtl8192c_ReadChipVersion(pAdapter); +} + +void hal_notch_filter_8192c(_adapter *adapter, bool enable) +{ + if (enable) { + DBG_871X("Enable notch filter\n"); + rtw_write8(adapter, rOFDM0_RxDSP+1, rtw_read8(adapter, rOFDM0_RxDSP+1) | BIT1); + } else { + DBG_871X("Disable notch filter\n"); + rtw_write8(adapter, rOFDM0_RxDSP+1, rtw_read8(adapter, rOFDM0_RxDSP+1) & ~BIT1); + } +} + +void hal_reset_security_engine_8192c(_adapter * adapter) +{ + rtw_write8(adapter, 0x522, 0xFF); + rtw_write8(adapter, 0x21, 0x35); + rtw_usleep_os(300); + rtw_write8(adapter, 0x101, rtw_read8(adapter,0x101)&~0x02); + rtw_write8(adapter, 0x101, rtw_read8(adapter,0x101)|0x02); + rtw_write8(adapter, 0x21, 0x55); + rtw_write8(adapter, 0x522, 0x00); +} + +s32 c2h_id_filter_ccx_8192c(u8 id) +{ + s32 ret = _FALSE; + if (id == C2H_CCX_TX_RPT) + ret = _TRUE; + + return ret; +} + +static s32 c2h_handler_8192c(_adapter *padapter, struct c2h_evt_hdr *c2h_evt) +{ + s32 ret = _SUCCESS; + u8 i = 0; + + if (c2h_evt == NULL) { + DBG_8192C("%s c2h_evt is NULL\n",__FUNCTION__); + ret = _FAIL; + goto exit; + } + + switch (c2h_evt->id) { + case C2H_CCX_TX_RPT: + handle_txrpt_ccx_8192c(padapter, c2h_evt->payload); + break; + default: + ret = _FAIL; + break; + } + +exit: + return ret; +} + +void rtl8192c_set_hal_ops(struct hal_ops *pHalFunc) +{ + pHalFunc->free_hal_data = &rtl8192c_free_hal_data; + + pHalFunc->dm_init = &rtl8192c_init_dm_priv; + pHalFunc->dm_deinit = &rtl8192c_deinit_dm_priv; + pHalFunc->read_chip_version = &rtl8192c_read_chip_version; + + pHalFunc->set_bwmode_handler = &PHY_SetBWMode8192C; + pHalFunc->set_channel_handler = &PHY_SwChnl8192C; + + pHalFunc->hal_dm_watchdog = &rtl8192c_HalDmWatchDog; + + pHalFunc->Add_RateATid = &rtl8192c_Add_RateATid; + +#ifdef CONFIG_ANTENNA_DIVERSITY + pHalFunc->AntDivBeforeLinkHandler = &SwAntDivBeforeLink8192C; + pHalFunc->AntDivCompareHandler = &SwAntDivCompare8192C; +#endif + + pHalFunc->read_bbreg = &rtl8192c_PHY_QueryBBReg; + pHalFunc->write_bbreg = &rtl8192c_PHY_SetBBReg; + pHalFunc->read_rfreg = &rtl8192c_PHY_QueryRFReg; + pHalFunc->write_rfreg = &rtl8192c_PHY_SetRFReg; + + //Efuse related function + pHalFunc->EfusePowerSwitch = &rtl8192c_EfusePowerSwitch; + pHalFunc->ReadEFuse = &rtl8192c_ReadEFuse; + pHalFunc->EFUSEGetEfuseDefinition = &rtl8192c_EFUSE_GetEfuseDefinition; + pHalFunc->EfuseGetCurrentSize = &rtl8192c_EfuseGetCurrentSize; + pHalFunc->Efuse_PgPacketRead = &rtl8192c_Efuse_PgPacketRead; + pHalFunc->Efuse_PgPacketWrite = &rtl8192c_Efuse_PgPacketWrite; + pHalFunc->Efuse_WordEnableDataWrite = &rtl8192c_Efuse_WordEnableDataWrite; + +#ifdef DBG_CONFIG_ERROR_DETECT + pHalFunc->sreset_init_value = &sreset_init_value; + pHalFunc->sreset_reset_value = &sreset_reset_value; + pHalFunc->silentreset = &sreset_reset; + pHalFunc->sreset_xmit_status_check = &rtl8192c_sreset_xmit_status_check; + pHalFunc->sreset_linked_status_check = &rtl8192c_sreset_linked_status_check; + pHalFunc->sreset_get_wifi_status = &sreset_get_wifi_status; + pHalFunc->sreset_inprogress= &sreset_inprogress; +#endif + +#ifdef CONFIG_IOL + pHalFunc->IOL_exec_cmds_sync = &rtl8192c_IOL_exec_cmds_sync; +#endif + pHalFunc->hal_notch_filter = &hal_notch_filter_8192c; + pHalFunc->hal_reset_security_engine = hal_reset_security_engine_8192c; + + pHalFunc->c2h_handler = c2h_handler_8192c; + pHalFunc->c2h_id_filter_ccx = c2h_id_filter_ccx_8192c; +} --- linux-raspi2-4.2.0.orig/drivers/net/wireless/rtl8192cu/hal/rtl8192c/rtl8192c_mp.c +++ linux-raspi2-4.2.0/drivers/net/wireless/rtl8192cu/hal/rtl8192c/rtl8192c_mp.c @@ -0,0 +1,1207 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved. + * + * 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 + * published by the Free Software Foundation. + * + * 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 Street, Fifth Floor, Boston, MA 02110, USA + * + * + ******************************************************************************/ +#define _RTL8192C_MP_C_ +#ifdef CONFIG_MP_INCLUDED + +#include +#include + +#ifdef CONFIG_RTL8192C +#include +#endif + + + +s32 Hal_SetPowerTracking(PADAPTER padapter, u8 enable) +{ + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(padapter); + struct dm_priv *pdmpriv = &pHalData->dmpriv; + + + if (!netif_running(padapter->pnetdev)) { + RT_TRACE(_module_mp_, _drv_warning_, ("SetPowerTracking! Fail: interface not opened!\n")); + return _FAIL; + } + + if (check_fwstate(&padapter->mlmepriv, WIFI_MP_STATE) == _FALSE) { + RT_TRACE(_module_mp_, _drv_warning_, ("SetPowerTracking! Fail: not in MP mode!\n")); + return _FAIL; + } + + if (enable) + pdmpriv->TxPowerTrackControl = _TRUE; + else + pdmpriv->TxPowerTrackControl = _FALSE; + + return _SUCCESS; +} + +void Hal_GetPowerTracking(PADAPTER padapter, u8 *enable) +{ + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(padapter); + struct dm_priv *pdmpriv = &pHalData->dmpriv; + + + *enable = pdmpriv->TxPowerTrackControl; +} + +static void Hal_disable_dm(PADAPTER padapter) +{ + u8 v8; + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(padapter); + struct dm_priv *pdmpriv = &pHalData->dmpriv; + + + //3 1. disable firmware dynamic mechanism + // disable Power Training, Rate Adaptive + v8 = rtw_read8(padapter, REG_BCN_CTRL); + v8 &= ~EN_BCN_FUNCTION; + rtw_write8(padapter, REG_BCN_CTRL, v8); + + //3 2. disable driver dynamic mechanism + // disable Dynamic Initial Gain + // disable High Power + // disable Power Tracking + Switch_DM_Func(padapter, DYNAMIC_FUNC_DISABLE, _FALSE); + + // enable APK, LCK and IQK but disable power tracking + pdmpriv->TxPowerTrackControl = _FALSE; + Switch_DM_Func(padapter, DYNAMIC_FUNC_SS, _TRUE); +} + +/*----------------------------------------------------------------------------- + * Function: mpt_SwitchRfSetting + * + * Overview: Change RF Setting when we siwthc channel/rate/BW for MP. + * + * Input: IN PADAPTER pAdapter + * + * Output: NONE + * + * Return: NONE + * + * Revised History: + * When Who Remark + * 01/08/2009 MHC Suggestion from SD3 Willis for 92S series. + * 01/09/2009 MHC Add CCK modification for 40MHZ. Suggestion from SD3. + * + *---------------------------------------------------------------------------*/ +void Hal_mpt_SwitchRfSetting(PADAPTER pAdapter) +{ + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(pAdapter); + struct mp_priv *pmp = &pAdapter->mppriv; + u8 ChannelToSw = pmp->channel, eRFPath = RF_PATH_A; + u8 ulRateIdx = pmp->rateidx; + u8 ulbandwidth = pmp->bandwidth; + PMPT_CONTEXT pMptCtx = &(pAdapter->mppriv.MptCtx); + BOOLEAN bInteralPA = _FALSE; + u32 value = 0; + +#ifdef CONFIG_USB_HCI + if (IS_92C_SERIAL(pHalData->VersionID)) + { + //92CE-VAU (92cu mCard) + if( BOARD_MINICARD == pHalData->BoardType) + { + if (ulRateIdx < MPT_RATE_6M) // CCK rate + { + write_rfreg(pAdapter, 0, RF_SYN_G2, 0x0F400); + } + else //OFDM~MCS rate + { + write_rfreg(pAdapter, 0, RF_SYN_G2, 0x4F000); + } + } + else //92CU dongle + { + if (ulRateIdx < MPT_RATE_6M) // CCK rate + { + write_rfreg(pAdapter, 0, RF_SYN_G2, 0x0F400); + } + else if (ChannelToSw & BIT0) // OFDM rate, odd number channel + { + write_rfreg(pAdapter, 0, RF_SYN_G2, 0x4F200); + } + else if (ChannelToSw == 4) // OFDM rate, even number channel + { + write_rfreg(pAdapter, 0, RF_SYN_G2, 0x28200); + write_rfreg(pAdapter, 0, RF_SYN_G6, 0xe0004); + write_rfreg(pAdapter, 0, RF_SYN_G7, 0x709); + rtw_msleep_os(1); + write_rfreg(pAdapter, 0, RF_SYN_G7, 0x4B333); + } + else if(ChannelToSw == 10) // OFDM rate, even number channel + { + write_rfreg(pAdapter, 0, RF_SYN_G2, 0x28000); + write_rfreg(pAdapter, 0, RF_SYN_G6, 0xe000A); + write_rfreg(pAdapter, 0, RF_SYN_G7, 0x709); + rtw_msleep_os(1); + write_rfreg(pAdapter, 0, RF_SYN_G7, 0x7B333); + } + else if(ChannelToSw == 12) // OFDM rate, even number channel + { + write_rfreg(pAdapter, 0, RF_SYN_G2, 0x28200); + write_rfreg(pAdapter, 0, RF_SYN_G6, 0xe000C); + write_rfreg(pAdapter, 0, RF_SYN_G7, 0x50B); + rtw_msleep_os(1); + write_rfreg(pAdapter, 0, RF_SYN_G7, 0x4B333); + } + else + { + write_rfreg(pAdapter, 0, RF_SYN_G2, 0x4F200); + } + } + } + else //88cu + { + + //mcard interface + + if( BOARD_MINICARD == pHalData->BoardType) + { + if (ulRateIdx < MPT_RATE_6M) // CCK rate + { + write_rfreg(pAdapter, 0, RF_SYN_G2, 0x0F400); + } + else //OFDM~MCS rate + { + write_rfreg(pAdapter, 0, RF_SYN_G2, 0x4F200); + } + + if(ChannelToSw == 6 || ChannelToSw == 8) + { + write_bbreg(pAdapter, rOFDM0_XAAGCCore1, bMaskByte0, 0x22); + write_bbreg(pAdapter, rOFDM0_XBAGCCore1, bMaskByte0, 0x22); + write_bbreg(pAdapter, rOFDM0_RxDetector1, bMaskByte0, 0x4F); + } + else + { + write_bbreg(pAdapter, rOFDM0_XAAGCCore1, bMaskByte0, 0x20); + write_bbreg(pAdapter, rOFDM0_XBAGCCore1, bMaskByte0, 0x20); + write_bbreg(pAdapter, rOFDM0_RxDetector1, bMaskByte0, pMptCtx->backup0xc30); + } + } + else + { + if (ulRateIdx < MPT_RATE_6M) // CCK rate + { + write_rfreg(pAdapter, 0, RF_SYN_G2, 0x0F400); + } + else if (ChannelToSw & BIT0) // OFDM rate, odd number channel + { + write_rfreg(pAdapter, 0, RF_SYN_G2, 0x4F200); + } + else + { + write_rfreg(pAdapter, 0, RF_SYN_G2, 0x4F000); + } + } + } + +#else //PCI_INTERFACE + + if (ulRateIdx < MPT_RATE_6M) // CCK rate + { + write_rfreg(pAdapter, 0, RF_SYN_G2, 0x0F400); + } + else //OFDM~MCS rate + { + write_rfreg(pAdapter, 0, RF_SYN_G2, 0x4F000); + } + //88CE + if(!IS_92C_SERIAL(pHalData->VersionID)) + { + if(ChannelToSw == 6 || ChannelToSw == 8) + { + write_bbreg(pAdapter, rOFDM0_XAAGCCore1, bMaskByte0, 0x22); + write_bbreg(pAdapter, rOFDM0_XBAGCCore1, bMaskByte0, 0x22); + write_bbreg(pAdapter, rOFDM0_RxDetector1, bMaskByte0, 0x4F); + } + else + { + write_bbreg(pAdapter, rOFDM0_XAAGCCore1, bMaskByte0, pMptCtx->backup0xc50); + write_bbreg(pAdapter, rOFDM0_XBAGCCore1, bMaskByte0, pMptCtx->backup0xc58); + write_bbreg(pAdapter, rOFDM0_RxDetector1, bMaskByte0, pMptCtx->backup0xc30); + } + } + +#endif //CONFIG_USB_HCI + + +} +/*---------------------------hal\rtl8192c\MPT_Phy.c---------------------------*/ + +/*---------------------------hal\rtl8192c\MPT_HelperFunc.c---------------------------*/ +void Hal_MPT_CCKTxPowerAdjust(PADAPTER Adapter, BOOLEAN bInCH14) +{ + u32 TempVal = 0, TempVal2 = 0, TempVal3 = 0; + u32 CurrCCKSwingVal = 0, CCKSwingIndex = 12; + u8 i; + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); + + + // get current cck swing value and check 0xa22 & 0xa23 later to match the table. + CurrCCKSwingVal = read_bbreg(Adapter, rCCK0_TxFilter1, bMaskHWord); + + if (!bInCH14) + { + // Readback the current bb cck swing value and compare with the table to + // get the current swing index + for (i = 0; i < CCK_TABLE_SIZE; i++) + { + if (((CurrCCKSwingVal&0xff) == (u32)CCKSwingTable_Ch1_Ch13[i][0]) && + (((CurrCCKSwingVal&0xff00)>>8) == (u32)CCKSwingTable_Ch1_Ch13[i][1])) + { + CCKSwingIndex = i; +// RT_TRACE(COMP_INIT, DBG_LOUD,("Ch1~13, Current reg0x%x = 0x%lx, CCKSwingIndex=0x%x\n", +// (rCCK0_TxFilter1+2), CurrCCKSwingVal, CCKSwingIndex)); + break; + } + } + + //Write 0xa22 0xa23 + TempVal = CCKSwingTable_Ch1_Ch13[CCKSwingIndex][0] + + (CCKSwingTable_Ch1_Ch13[CCKSwingIndex][1]<<8) ; + + + //Write 0xa24 ~ 0xa27 + TempVal2 = 0; + TempVal2 = CCKSwingTable_Ch1_Ch13[CCKSwingIndex][2] + + (CCKSwingTable_Ch1_Ch13[CCKSwingIndex][3]<<8) + + (CCKSwingTable_Ch1_Ch13[CCKSwingIndex][4]<<16 )+ + (CCKSwingTable_Ch1_Ch13[CCKSwingIndex][5]<<24); + + //Write 0xa28 0xa29 + TempVal3 = 0; + TempVal3 = CCKSwingTable_Ch1_Ch13[CCKSwingIndex][6] + + (CCKSwingTable_Ch1_Ch13[CCKSwingIndex][7]<<8) ; + } + else + { + for (i = 0; i < CCK_TABLE_SIZE; i++) + { + if (((CurrCCKSwingVal&0xff) == (u32)CCKSwingTable_Ch14[i][0]) && + (((CurrCCKSwingVal&0xff00)>>8) == (u32)CCKSwingTable_Ch14[i][1])) + { + CCKSwingIndex = i; +// RT_TRACE(COMP_INIT, DBG_LOUD,("Ch14, Current reg0x%x = 0x%lx, CCKSwingIndex=0x%x\n", +// (rCCK0_TxFilter1+2), CurrCCKSwingVal, CCKSwingIndex)); + break; + } + } + + //Write 0xa22 0xa23 + TempVal = CCKSwingTable_Ch14[CCKSwingIndex][0] + + (CCKSwingTable_Ch14[CCKSwingIndex][1]<<8) ; + + //Write 0xa24 ~ 0xa27 + TempVal2 = 0; + TempVal2 = CCKSwingTable_Ch14[CCKSwingIndex][2] + + (CCKSwingTable_Ch14[CCKSwingIndex][3]<<8) + + (CCKSwingTable_Ch14[CCKSwingIndex][4]<<16 )+ + (CCKSwingTable_Ch14[CCKSwingIndex][5]<<24); + + //Write 0xa28 0xa29 + TempVal3 = 0; + TempVal3 = CCKSwingTable_Ch14[CCKSwingIndex][6] + + (CCKSwingTable_Ch14[CCKSwingIndex][7]<<8) ; + } + + write_bbreg(Adapter, rCCK0_TxFilter1, bMaskHWord, TempVal); + write_bbreg(Adapter, rCCK0_TxFilter2, bMaskDWord, TempVal2); + write_bbreg(Adapter, rCCK0_DebugPort, bMaskLWord, TempVal3); +} + +void Hal_MPT_CCKTxPowerAdjustbyIndex(PADAPTER pAdapter, BOOLEAN beven) +{ + s32 TempCCk; + u8 CCK_index, CCK_index_old; + u8 Action = 0; //0: no action, 1: even->odd, 2:odd->even + u8 TimeOut = 100; + s32 i = 0; + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(pAdapter); + PMPT_CONTEXT pMptCtx = &pAdapter->mppriv.MptCtx; + + + if (!IS_92C_SERIAL(pHalData->VersionID)) + return; +#if 0 + while(PlatformAtomicExchange(&Adapter->IntrCCKRefCount, TRUE) == TRUE) + { + PlatformSleepUs(100); + TimeOut--; + if(TimeOut <= 0) + { + RTPRINT(FINIT, INIT_TxPower, + ("!!!MPT_CCKTxPowerAdjustbyIndex Wait for check CCK gain index too long!!!\n" )); + break; + } + } +#endif + if (beven && !pMptCtx->bMptIndexEven) //odd->even + { + Action = 2; + pMptCtx->bMptIndexEven = _TRUE; + } + else if (!beven && pMptCtx->bMptIndexEven) //even->odd + { + Action = 1; + pMptCtx->bMptIndexEven = _FALSE; + } + + if (Action != 0) + { + //Query CCK default setting From 0xa24 + TempCCk = read_bbreg(pAdapter, rCCK0_TxFilter2, bMaskDWord) & bMaskCCK; + for (i = 0; i < CCK_TABLE_SIZE; i++) + { + if (pHalData->dmpriv.bCCKinCH14) + { + if (_rtw_memcmp((void*)&TempCCk, (void*)&CCKSwingTable_Ch14[i][2], 4) == _TRUE) + { + CCK_index_old = (u8) i; +// RTPRINT(FINIT, INIT_TxPower,("MPT_CCKTxPowerAdjustbyIndex: Initial reg0x%x = 0x%lx, CCK_index=0x%x, ch 14 %d\n", +// rCCK0_TxFilter2, TempCCk, CCK_index_old, pHalData->bCCKinCH14)); + break; + } + } + else + { + if (_rtw_memcmp((void*)&TempCCk, (void*)&CCKSwingTable_Ch1_Ch13[i][2], 4) == _TRUE) + { + CCK_index_old = (u8) i; +// RTPRINT(FINIT, INIT_TxPower,("MPT_CCKTxPowerAdjustbyIndex: Initial reg0x%x = 0x%lx, CCK_index=0x%x, ch14 %d\n", +// rCCK0_TxFilter2, TempCCk, CCK_index_old, pHalData->bCCKinCH14)); + break; + } + } + } + + if (Action == 1) + CCK_index = CCK_index_old - 1; + else + CCK_index = CCK_index_old + 1; + +// RTPRINT(FINIT, INIT_TxPower,("MPT_CCKTxPowerAdjustbyIndex: new CCK_index=0x%x\n", +// CCK_index)); + + //Adjust CCK according to gain index + if (!pHalData->dmpriv.bCCKinCH14) { + rtw_write8(pAdapter, 0xa22, CCKSwingTable_Ch1_Ch13[CCK_index][0]); + rtw_write8(pAdapter, 0xa23, CCKSwingTable_Ch1_Ch13[CCK_index][1]); + rtw_write8(pAdapter, 0xa24, CCKSwingTable_Ch1_Ch13[CCK_index][2]); + rtw_write8(pAdapter, 0xa25, CCKSwingTable_Ch1_Ch13[CCK_index][3]); + rtw_write8(pAdapter, 0xa26, CCKSwingTable_Ch1_Ch13[CCK_index][4]); + rtw_write8(pAdapter, 0xa27, CCKSwingTable_Ch1_Ch13[CCK_index][5]); + rtw_write8(pAdapter, 0xa28, CCKSwingTable_Ch1_Ch13[CCK_index][6]); + rtw_write8(pAdapter, 0xa29, CCKSwingTable_Ch1_Ch13[CCK_index][7]); + } else { + rtw_write8(pAdapter, 0xa22, CCKSwingTable_Ch14[CCK_index][0]); + rtw_write8(pAdapter, 0xa23, CCKSwingTable_Ch14[CCK_index][1]); + rtw_write8(pAdapter, 0xa24, CCKSwingTable_Ch14[CCK_index][2]); + rtw_write8(pAdapter, 0xa25, CCKSwingTable_Ch14[CCK_index][3]); + rtw_write8(pAdapter, 0xa26, CCKSwingTable_Ch14[CCK_index][4]); + rtw_write8(pAdapter, 0xa27, CCKSwingTable_Ch14[CCK_index][5]); + rtw_write8(pAdapter, 0xa28, CCKSwingTable_Ch14[CCK_index][6]); + rtw_write8(pAdapter, 0xa29, CCKSwingTable_Ch14[CCK_index][7]); + } + } +#if 0 + RTPRINT(FINIT, INIT_TxPower, + ("MPT_CCKTxPowerAdjustbyIndex 0xa20=%x\n", PlatformEFIORead4Byte(Adapter, 0xa20))); + + PlatformAtomicExchange(&Adapter->IntrCCKRefCount, FALSE); +#endif +} +/*---------------------------hal\rtl8192c\MPT_HelperFunc.c---------------------------*/ + +/* + * SetChannel + * Description + * Use H2C command to change channel, + * not only modify rf register, but also other setting need to be done. + */ +void Hal_SetChannel(PADAPTER pAdapter) +{ +#if 0 + struct mp_priv *pmp = &pAdapter->mppriv; + +// SelectChannel(pAdapter, pmp->channel); + set_channel_bwmode(pAdapter, pmp->channel, pmp->channel_offset, pmp->bandwidth); +#else + u8 eRFPath; + + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(pAdapter); + struct mp_priv *pmp = &pAdapter->mppriv; + u8 channel = pmp->channel; + u8 bandwidth = pmp->bandwidth; + u8 rate = pmp->rateidx; + + + // set RF channel register + for (eRFPath = 0; eRFPath < pHalData->NumTotalRFPath; eRFPath++) + { + if(IS_HARDWARE_TYPE_8192D(pAdapter)) + _write_rfreg(pAdapter, (RF_RADIO_PATH_E)eRFPath, rRfChannel, 0xFF, channel); + else + _write_rfreg(pAdapter, eRFPath, rRfChannel, 0x3FF, channel); + } + Hal_mpt_SwitchRfSetting(pAdapter); + + SelectChannel(pAdapter, channel); + + if (pHalData->CurrentChannel == 14 && !pHalData->dmpriv.bCCKinCH14) { + pHalData->dmpriv.bCCKinCH14 = _TRUE; + Hal_MPT_CCKTxPowerAdjust(pAdapter, pHalData->dmpriv.bCCKinCH14); + } + else if (pHalData->CurrentChannel != 14 && pHalData->dmpriv.bCCKinCH14) { + pHalData->dmpriv.bCCKinCH14 = _FALSE; + Hal_MPT_CCKTxPowerAdjust(pAdapter, pHalData->dmpriv.bCCKinCH14); + } + +#endif +} + +/* + * Notice + * Switch bandwitdth may change center frequency(channel) + */ +void Hal_SetBandwidth(PADAPTER pAdapter) +{ + struct mp_priv *pmp = &pAdapter->mppriv; + + + SetBWMode(pAdapter, pmp->bandwidth, pmp->prime_channel_offset); + Hal_mpt_SwitchRfSetting(pAdapter); +} + +void Hal_SetCCKTxPower(PADAPTER pAdapter, u8 *TxPower) +{ + u32 tmpval = 0; + + + // rf-A cck tx power + write_bbreg(pAdapter, rTxAGC_A_CCK1_Mcs32, bMaskByte1, TxPower[RF_PATH_A]); + tmpval = (TxPower[RF_PATH_A]<<16) | (TxPower[RF_PATH_A]<<8) | TxPower[RF_PATH_A]; + write_bbreg(pAdapter, rTxAGC_B_CCK11_A_CCK2_11, 0xffffff00, tmpval); + + // rf-B cck tx power + write_bbreg(pAdapter, rTxAGC_B_CCK11_A_CCK2_11, bMaskByte0, TxPower[RF_PATH_B]); + tmpval = (TxPower[RF_PATH_B]<<16) | (TxPower[RF_PATH_B]<<8) | TxPower[RF_PATH_B]; + write_bbreg(pAdapter, rTxAGC_B_CCK1_55_Mcs32, 0xffffff00, tmpval); + + RT_TRACE(_module_mp_, _drv_notice_, + ("-SetCCKTxPower: A[0x%02x] B[0x%02x]\n", + TxPower[RF_PATH_A], TxPower[RF_PATH_B])); +} + +void Hal_SetOFDMTxPower(PADAPTER pAdapter, u8 *TxPower) +{ + u32 TxAGC = 0; + u8 tmpval = 0; + PMPT_CONTEXT pMptCtx = &pAdapter->mppriv.MptCtx; + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(pAdapter); + + + // HT Tx-rf(A) + tmpval = TxPower[RF_PATH_A]; + TxAGC = (tmpval<<24) | (tmpval<<16) | (tmpval<<8) | tmpval; + + write_bbreg(pAdapter, rTxAGC_A_Rate18_06, bMaskDWord, TxAGC); + write_bbreg(pAdapter, rTxAGC_A_Rate54_24, bMaskDWord, TxAGC); + write_bbreg(pAdapter, rTxAGC_A_Mcs03_Mcs00, bMaskDWord, TxAGC); + write_bbreg(pAdapter, rTxAGC_A_Mcs07_Mcs04, bMaskDWord, TxAGC); + write_bbreg(pAdapter, rTxAGC_A_Mcs11_Mcs08, bMaskDWord, TxAGC); + write_bbreg(pAdapter, rTxAGC_A_Mcs15_Mcs12, bMaskDWord, TxAGC); + + // HT Tx-rf(B) + tmpval = TxPower[RF_PATH_B]; + TxAGC = (tmpval<<24) | (tmpval<<16) | (tmpval<<8) | tmpval; + + write_bbreg(pAdapter, rTxAGC_B_Rate18_06, bMaskDWord, TxAGC); + write_bbreg(pAdapter, rTxAGC_B_Rate54_24, bMaskDWord, TxAGC); + write_bbreg(pAdapter, rTxAGC_B_Mcs03_Mcs00, bMaskDWord, TxAGC); + write_bbreg(pAdapter, rTxAGC_B_Mcs07_Mcs04, bMaskDWord, TxAGC); + write_bbreg(pAdapter, rTxAGC_B_Mcs11_Mcs08, bMaskDWord, TxAGC); + write_bbreg(pAdapter, rTxAGC_B_Mcs15_Mcs12, bMaskDWord, TxAGC); + + RT_TRACE(_module_mp_, _drv_notice_, + ("-SetOFDMTxPower: A[0x%02x] B[0x%02x]\n", + TxPower[RF_PATH_A], TxPower[RF_PATH_B])); +} + +void Hal_SetAntennaPathPower(PADAPTER pAdapter) +{ + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(pAdapter); + u8 TxPowerLevel[MAX_RF_PATH_NUMS]; + u8 rfPath; + + TxPowerLevel[RF_PATH_A] = pAdapter->mppriv.txpoweridx; + TxPowerLevel[RF_PATH_B] = pAdapter->mppriv.txpoweridx_b; + + switch (pAdapter->mppriv.antenna_tx) + { + case ANTENNA_A: + default: + rfPath = RF_PATH_A; + break; + case ANTENNA_B: + rfPath = RF_PATH_B; + break; + case ANTENNA_C: + rfPath = RF_PATH_C; + break; + } + + switch (pHalData->rf_chip) + { + case RF_8225: + case RF_8256: + case RF_6052: + Hal_SetCCKTxPower(pAdapter, TxPowerLevel); + if (pAdapter->mppriv.rateidx < MPT_RATE_6M) // CCK rate + Hal_MPT_CCKTxPowerAdjustbyIndex(pAdapter, TxPowerLevel[rfPath]%2 == 0); + Hal_SetOFDMTxPower(pAdapter, TxPowerLevel); + break; + + default: + break; + } +} + +void Hal_SetTxPower(PADAPTER pAdapter) +{ + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(pAdapter); + u8 TxPower = pAdapter->mppriv.txpoweridx; + u8 TxPowerLevel[MAX_RF_PATH_NUMS]; + u8 rf, rfPath; + + for (rf = 0; rf < MAX_RF_PATH_NUMS; rf++) { + TxPowerLevel[rf] = TxPower; + } + + switch (pAdapter->mppriv.antenna_tx) + { + case ANTENNA_A: + default: + rfPath = RF_PATH_A; + break; + case ANTENNA_B: + rfPath = RF_PATH_B; + break; + case ANTENNA_C: + rfPath = RF_PATH_C; + break; + } + + switch (pHalData->rf_chip) + { + // 2008/09/12 MH Test only !! We enable the TX power tracking for MP!!!!! + // We should call normal driver API later!! + case RF_8225: + case RF_8256: + case RF_6052: + Hal_SetCCKTxPower(pAdapter, TxPowerLevel); + if (pAdapter->mppriv.rateidx < MPT_RATE_6M) // CCK rate + Hal_MPT_CCKTxPowerAdjustbyIndex(pAdapter, TxPowerLevel[rfPath]%2 == 0); + Hal_SetOFDMTxPower(pAdapter, TxPowerLevel); + break; + + default: + break; + } + +// SetCCKTxPower(pAdapter, TxPower); +// SetOFDMTxPower(pAdapter, TxPower); +} + +void Hal_SetTxAGCOffset(PADAPTER pAdapter, u32 ulTxAGCOffset) +{ + u32 TxAGCOffset_B, TxAGCOffset_C, TxAGCOffset_D,tmpAGC; + + TxAGCOffset_B = (ulTxAGCOffset&0x000000ff); + TxAGCOffset_C = ((ulTxAGCOffset&0x0000ff00)>>8); + TxAGCOffset_D = ((ulTxAGCOffset&0x00ff0000)>>16); + + tmpAGC = (TxAGCOffset_D<<8 | TxAGCOffset_C<<4 | TxAGCOffset_B); + write_bbreg(pAdapter, rFPGA0_TxGainStage, + (bXBTxAGC|bXCTxAGC|bXDTxAGC), tmpAGC); +} + +void Hal_SetDataRate(PADAPTER pAdapter) +{ + Hal_mpt_SwitchRfSetting(pAdapter); +} + +#if !defined (CONFIG_RTL8192C) && !defined (CONFIG_RTL8192D) +/*------------------------------Define structure----------------------------*/ +typedef struct _R_ANTENNA_SELECT_OFDM { + u32 r_tx_antenna:4; + u32 r_ant_l:4; + u32 r_ant_non_ht:4; + u32 r_ant_ht1:4; + u32 r_ant_ht2:4; + u32 r_ant_ht_s1:4; + u32 r_ant_non_ht_s1:4; + u32 OFDM_TXSC:2; + u32 Reserved:2; +}R_ANTENNA_SELECT_OFDM; + +typedef struct _R_ANTENNA_SELECT_CCK { + u8 r_cckrx_enable_2:2; + u8 r_cckrx_enable:2; + u8 r_ccktx_enable:4; +}R_ANTENNA_SELECT_CCK; +#endif + +void Hal_SetAntenna(PADAPTER pAdapter) +{ + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(pAdapter); + + R_ANTENNA_SELECT_OFDM *p_ofdm_tx; /* OFDM Tx register */ + R_ANTENNA_SELECT_CCK *p_cck_txrx; + + u8 r_rx_antenna_ofdm = 0, r_ant_select_cck_val = 0; + u8 chgTx = 0, chgRx = 0; + u32 r_ant_sel_cck_val = 0, r_ant_select_ofdm_val = 0, r_ofdm_tx_en_val = 0; + + + p_ofdm_tx = (R_ANTENNA_SELECT_OFDM *)&r_ant_select_ofdm_val; + p_cck_txrx = (R_ANTENNA_SELECT_CCK *)&r_ant_select_cck_val; + + p_ofdm_tx->r_ant_ht1 = 0x1; + p_ofdm_tx->r_ant_ht2 = 0x2; // Second TX RF path is A + p_ofdm_tx->r_ant_non_ht = 0x3; // 0x1+0x2=0x3 + + switch (pAdapter->mppriv.antenna_tx) + { + case ANTENNA_A: + p_ofdm_tx->r_tx_antenna = 0x1; + r_ofdm_tx_en_val = 0x1; + p_ofdm_tx->r_ant_l = 0x1; + p_ofdm_tx->r_ant_ht_s1 = 0x1; + p_ofdm_tx->r_ant_non_ht_s1 = 0x1; + p_cck_txrx->r_ccktx_enable = 0x8; + chgTx = 1; + + // From SD3 Willis suggestion !!! Set RF A=TX and B as standby +// if (IS_HARDWARE_TYPE_8192S(pAdapter)) + { + write_bbreg(pAdapter, rFPGA0_XA_HSSIParameter2, 0xe, 2); + write_bbreg(pAdapter, rFPGA0_XB_HSSIParameter2, 0xe, 1); + r_ofdm_tx_en_val = 0x3; + + // Power save + //cosa r_ant_select_ofdm_val = 0x11111111; + + // We need to close RFB by SW control + if (pHalData->rf_type == RF_2T2R) + { + PHY_SetBBReg(pAdapter, rFPGA0_XAB_RFInterfaceSW, BIT10, 0); + PHY_SetBBReg(pAdapter, rFPGA0_XAB_RFInterfaceSW, BIT26, 1); + PHY_SetBBReg(pAdapter, rFPGA0_XB_RFInterfaceOE, BIT10, 0); + PHY_SetBBReg(pAdapter, rFPGA0_XAB_RFParameter, BIT1, 1); + PHY_SetBBReg(pAdapter, rFPGA0_XAB_RFParameter, BIT17, 0); + } + } + break; + + case ANTENNA_B: + p_ofdm_tx->r_tx_antenna = 0x2; + r_ofdm_tx_en_val = 0x2; + p_ofdm_tx->r_ant_l = 0x2; + p_ofdm_tx->r_ant_ht_s1 = 0x2; + p_ofdm_tx->r_ant_non_ht_s1 = 0x2; + p_cck_txrx->r_ccktx_enable = 0x4; + chgTx = 1; + + // From SD3 Willis suggestion !!! Set RF A as standby + //if (IS_HARDWARE_TYPE_8192S(pAdapter)) + { + PHY_SetBBReg(pAdapter, rFPGA0_XA_HSSIParameter2, 0xe, 1); + PHY_SetBBReg(pAdapter, rFPGA0_XB_HSSIParameter2, 0xe, 2); +// r_ofdm_tx_en_val = 0x3; + + // Power save + //cosa r_ant_select_ofdm_val = 0x22222222; + + // 2008/10/31 MH From SD3 Willi's suggestion. We must read RF 1T table. + // 2009/01/08 MH From Sd3 Willis. We need to close RFA by SW control + if (pHalData->rf_type == RF_2T2R || pHalData->rf_type == RF_1T2R) + { + PHY_SetBBReg(pAdapter, rFPGA0_XAB_RFInterfaceSW, BIT10, 1); + PHY_SetBBReg(pAdapter, rFPGA0_XA_RFInterfaceOE, BIT10, 0); + PHY_SetBBReg(pAdapter, rFPGA0_XAB_RFInterfaceSW, BIT26, 0); +// PHY_SetBBReg(pAdapter, rFPGA0_XB_RFInterfaceOE, BIT10, 0); + PHY_SetBBReg(pAdapter, rFPGA0_XAB_RFParameter, BIT1, 0); + PHY_SetBBReg(pAdapter, rFPGA0_XAB_RFParameter, BIT17, 1); + } + } + break; + + case ANTENNA_AB: // For 8192S + p_ofdm_tx->r_tx_antenna = 0x3; + r_ofdm_tx_en_val = 0x3; + p_ofdm_tx->r_ant_l = 0x3; + p_ofdm_tx->r_ant_ht_s1 = 0x3; + p_ofdm_tx->r_ant_non_ht_s1 = 0x3; + p_cck_txrx->r_ccktx_enable = 0xC; + chgTx = 1; + + // From SD3 Willis suggestion !!! Set RF B as standby + //if (IS_HARDWARE_TYPE_8192S(pAdapter)) + { + PHY_SetBBReg(pAdapter, rFPGA0_XA_HSSIParameter2, 0xe, 2); + PHY_SetBBReg(pAdapter, rFPGA0_XB_HSSIParameter2, 0xe, 2); + + // Disable Power save + //cosa r_ant_select_ofdm_val = 0x3321333; +#if 0 + // 2008/10/31 MH From SD3 Willi's suggestion. We must read RFA 2T table. + if ((pHalData->VersionID == VERSION_8192S_ACUT)) // For RTL8192SU A-Cut only, by Roger, 2008.11.07. + { + mpt_RFConfigFromPreParaArrary(pAdapter, 1, RF_PATH_A); + } +#endif + // 2009/01/08 MH From Sd3 Willis. We need to enable RFA/B by SW control + if (pHalData->rf_type == RF_2T2R) + { + PHY_SetBBReg(pAdapter, rFPGA0_XAB_RFInterfaceSW, BIT10, 0); + PHY_SetBBReg(pAdapter, rFPGA0_XAB_RFInterfaceSW, BIT26, 0); +// PHY_SetBBReg(pAdapter, rFPGA0_XB_RFInterfaceOE, BIT10, 0); + PHY_SetBBReg(pAdapter, rFPGA0_XAB_RFParameter, BIT1, 1); + PHY_SetBBReg(pAdapter, rFPGA0_XAB_RFParameter, BIT17, 1); + } + } + break; + + default: + break; + } + + // + // r_rx_antenna_ofdm, bit0=A, bit1=B, bit2=C, bit3=D + // r_cckrx_enable : CCK default, 0=A, 1=B, 2=C, 3=D + // r_cckrx_enable_2 : CCK option, 0=A, 1=B, 2=C, 3=D + // + switch (pAdapter->mppriv.antenna_rx) + { + case ANTENNA_A: + r_rx_antenna_ofdm = 0x1; // A + p_cck_txrx->r_cckrx_enable = 0x0; // default: A + p_cck_txrx->r_cckrx_enable_2 = 0x0; // option: A + chgRx = 1; + break; + + case ANTENNA_B: + r_rx_antenna_ofdm = 0x2; // B + p_cck_txrx->r_cckrx_enable = 0x1; // default: B + p_cck_txrx->r_cckrx_enable_2 = 0x1; // option: B + chgRx = 1; + break; + + case ANTENNA_AB: + r_rx_antenna_ofdm = 0x3; // AB + p_cck_txrx->r_cckrx_enable = 0x0; // default:A + p_cck_txrx->r_cckrx_enable_2 = 0x1; // option:B + chgRx = 1; + break; + + default: + break; + } + + if (chgTx && chgRx) + { + switch(pHalData->rf_chip) + { + case RF_8225: + case RF_8256: + case RF_6052: + //r_ant_sel_cck_val = r_ant_select_cck_val; + PHY_SetBBReg(pAdapter, rFPGA1_TxInfo, 0x7fffffff, r_ant_select_ofdm_val); //OFDM Tx + PHY_SetBBReg(pAdapter, rFPGA0_TxInfo, 0x0000000f, r_ofdm_tx_en_val); //OFDM Tx + PHY_SetBBReg(pAdapter, rOFDM0_TRxPathEnable, 0x0000000f, r_rx_antenna_ofdm); //OFDM Rx + PHY_SetBBReg(pAdapter, rOFDM1_TRxPathEnable, 0x0000000f, r_rx_antenna_ofdm); //OFDM Rx + PHY_SetBBReg(pAdapter, rCCK0_AFESetting, bMaskByte3, r_ant_select_cck_val);//r_ant_sel_cck_val); //CCK TxRx + + break; + + default: + break; + } + } + + RT_TRACE(_module_mp_, _drv_notice_, ("-SwitchAntenna: finished\n")); +} + +s32 Hal_SetThermalMeter(PADAPTER pAdapter, u8 target_ther) +{ + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(pAdapter); + + + if (!netif_running(pAdapter->pnetdev)) { + RT_TRACE(_module_mp_, _drv_warning_, ("SetThermalMeter! Fail: interface not opened!\n")); + return _FAIL; + } + + if (check_fwstate(&pAdapter->mlmepriv, WIFI_MP_STATE) == _FALSE) { + RT_TRACE(_module_mp_, _drv_warning_, ("SetThermalMeter: Fail! not in MP mode!\n")); + return _FAIL; + } + + target_ther &= 0xff; + if (target_ther < 0x07) + target_ther = 0x07; + else if (target_ther > 0x1d) + target_ther = 0x1d; + + pHalData->EEPROMThermalMeter = target_ther; + + return _SUCCESS; +} + +void Hal_TriggerRFThermalMeter(PADAPTER pAdapter) +{ + + write_rfreg(pAdapter, RF_PATH_A, RF_T_METER, 0x60); // 0x24: RF Reg[6:5] + +// RT_TRACE(_module_mp_,_drv_alert_, ("TriggerRFThermalMeter() finished.\n" )); +} + +u8 Hal_ReadRFThermalMeter(PADAPTER pAdapter) +{ + u32 ThermalValue = 0; + + ThermalValue = _read_rfreg(pAdapter, RF_PATH_A, RF_T_METER, 0x1F); // 0x24: RF Reg[4:0] +// RT_TRACE(_module_mp_, _drv_alert_, ("ThermalValue = 0x%x\n", ThermalValue)); + return (u8)ThermalValue; +} + +void Hal_GetThermalMeter(PADAPTER pAdapter, u8 *value) +{ +#if 0 + fw_cmd(pAdapter, IOCMD_GET_THERMAL_METER); + rtw_msleep_os(1000); + fw_cmd_data(pAdapter, value, 1); + *value &= 0xFF; +#else + + Hal_TriggerRFThermalMeter(pAdapter); + rtw_msleep_os(1000); + *value = Hal_ReadRFThermalMeter(pAdapter); +#endif +} + +void Hal_SetSingleCarrierTx(PADAPTER pAdapter, u8 bStart) +{ + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(pAdapter); + pAdapter->mppriv.MptCtx.bSingleCarrier = bStart; + if (bStart)// Start Single Carrier. + { + RT_TRACE(_module_mp_,_drv_alert_, ("SetSingleCarrierTx: test start\n")); + // 1. if OFDM block on? + if(!read_bbreg(pAdapter, rFPGA0_RFMOD, bOFDMEn)) + write_bbreg(pAdapter, rFPGA0_RFMOD, bOFDMEn, bEnable);//set OFDM block on + + { + // 2. set CCK test mode off, set to CCK normal mode + write_bbreg(pAdapter, rCCK0_System, bCCKBBMode, bDisable); + // 3. turn on scramble setting + write_bbreg(pAdapter, rCCK0_System, bCCKScramble, bEnable); + } + // 4. Turn On Single Carrier Tx and turn off the other test modes. + write_bbreg(pAdapter, rOFDM1_LSTF, bOFDMContinueTx, bDisable); + write_bbreg(pAdapter, rOFDM1_LSTF, bOFDMSingleCarrier, bEnable); + write_bbreg(pAdapter, rOFDM1_LSTF, bOFDMSingleTone, bDisable); +#ifdef CONFIG_RTL8192C + // 5. Disable TX power saving at STF & LLTF + write_bbreg(pAdapter, rOFDM1_LSTF, BIT22, 1); +#endif + } + else// Stop Single Carrier. + { + RT_TRACE(_module_mp_,_drv_alert_, ("SetSingleCarrierTx: test stop\n")); + + // Turn off all test modes. + write_bbreg(pAdapter, rOFDM1_LSTF, bOFDMContinueTx, bDisable); + write_bbreg(pAdapter, rOFDM1_LSTF, bOFDMSingleCarrier, bDisable); + write_bbreg(pAdapter, rOFDM1_LSTF, bOFDMSingleTone, bDisable); +#ifdef CONFIG_RTL8192C + // Cancel disable TX power saving at STF&LLTF + write_bbreg(pAdapter, rOFDM1_LSTF, BIT22, 0); +#endif + //Delay 10 ms //delay_ms(10); + rtw_msleep_os(10); + + //BB Reset + write_bbreg(pAdapter, rPMAC_Reset, bBBResetB, 0x0); + write_bbreg(pAdapter, rPMAC_Reset, bBBResetB, 0x1); + } +} + + +void Hal_SetSingleToneTx(PADAPTER pAdapter, u8 bStart) +{ + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(pAdapter); + BOOLEAN is92C = IS_92C_SERIAL(pHalData->VersionID); + + u8 rfPath; + + switch (pAdapter->mppriv.antenna_tx) + { + case ANTENNA_A: + default: + rfPath = RF_PATH_A; + break; + case ANTENNA_B: + rfPath = RF_PATH_B; + break; + case ANTENNA_C: + rfPath = RF_PATH_C; + break; + } + + pAdapter->mppriv.MptCtx.bSingleTone = bStart; + if (bStart)// Start Single Tone. + { + RT_TRACE(_module_mp_,_drv_alert_, ("SetSingleToneTx: test start\n")); + write_bbreg(pAdapter, rFPGA0_RFMOD, bCCKEn, 0x0); + write_bbreg(pAdapter, rFPGA0_RFMOD, bOFDMEn, 0x0); + + if (is92C) + { + _write_rfreg(pAdapter, RF_PATH_A, 0x21, BIT19, 0x01); + rtw_usleep_os(100); + if (rfPath == RF_PATH_A) + write_rfreg(pAdapter, RF_PATH_B, 0x00, 0x10000); // PAD all on. + else if (rfPath == RF_PATH_B) + write_rfreg(pAdapter, RF_PATH_A, 0x00, 0x10000); // PAD all on. + } else { + write_rfreg(pAdapter, rfPath, 0x21, 0xd4000); + rtw_usleep_os(100); + } + + write_rfreg(pAdapter, rfPath, 0x00, 0x2001f); // PAD all on. + rtw_usleep_os(100); + } + else// Stop Single Tone. + { + RT_TRACE(_module_mp_,_drv_alert_, ("SetSingleToneTx: test stop\n")); + write_bbreg(pAdapter, rFPGA0_RFMOD, bCCKEn, 0x1); + write_bbreg(pAdapter, rFPGA0_RFMOD, bOFDMEn, 0x1); + + if (is92C) { + _write_rfreg(pAdapter, RF_PATH_A, 0x21, BIT19, 0x00); + rtw_usleep_os(100); + write_rfreg(pAdapter, RF_PATH_A, 0x00, 0x32d75); // PAD all on. + write_rfreg(pAdapter, RF_PATH_B, 0x00, 0x32d75); // PAD all on. + rtw_usleep_os(100); + } else { + write_rfreg(pAdapter, rfPath, 0x21, 0x54000); + rtw_usleep_os(100); + + write_rfreg(pAdapter, rfPath, 0x00, 0x30000); // PAD all on. + rtw_usleep_os(100); + } + } + +} + + +void Hal_SetCarrierSuppressionTx(PADAPTER pAdapter, u8 bStart) +{ + pAdapter->mppriv.MptCtx.bCarrierSuppression = bStart; + if (bStart) // Start Carrier Suppression. + { + RT_TRACE(_module_mp_,_drv_alert_, ("SetCarrierSuppressionTx: test start\n")); + //if(pMgntInfo->dot11CurrentWirelessMode == WIRELESS_MODE_B) + if (pAdapter->mppriv.rateidx <= MPT_RATE_11M) + { + // 1. if CCK block on? + if(!read_bbreg(pAdapter, rFPGA0_RFMOD, bCCKEn)) + write_bbreg(pAdapter, rFPGA0_RFMOD, bCCKEn, bEnable);//set CCK block on + + //Turn Off All Test Mode + write_bbreg(pAdapter, rOFDM1_LSTF, bOFDMContinueTx, bDisable); + write_bbreg(pAdapter, rOFDM1_LSTF, bOFDMSingleCarrier, bDisable); + write_bbreg(pAdapter, rOFDM1_LSTF, bOFDMSingleTone, bDisable); + + write_bbreg(pAdapter, rCCK0_System, bCCKBBMode, 0x2); //transmit mode + write_bbreg(pAdapter, rCCK0_System, bCCKScramble, 0x0); //turn off scramble setting + + //Set CCK Tx Test Rate + //PHY_SetBBReg(pAdapter, rCCK0_System, bCCKTxRate, pMgntInfo->ForcedDataRate); + write_bbreg(pAdapter, rCCK0_System, bCCKTxRate, 0x0); //Set FTxRate to 1Mbps + } + } + else// Stop Carrier Suppression. + { + RT_TRACE(_module_mp_,_drv_alert_, ("SetCarrierSuppressionTx: test stop\n")); + //if(pMgntInfo->dot11CurrentWirelessMode == WIRELESS_MODE_B) + if (pAdapter->mppriv.rateidx <= MPT_RATE_11M ) { + write_bbreg(pAdapter, rCCK0_System, bCCKBBMode, 0x0); //normal mode + write_bbreg(pAdapter, rCCK0_System, bCCKScramble, 0x1); //turn on scramble setting + + //BB Reset + write_bbreg(pAdapter, rPMAC_Reset, bBBResetB, 0x0); + write_bbreg(pAdapter, rPMAC_Reset, bBBResetB, 0x1); + } + } + //DbgPrint("\n MPT_ProSetCarrierSupp() is finished. \n"); +} + +void Hal_SetCCKContinuousTx(PADAPTER pAdapter, u8 bStart) +{ + u32 cckrate; + + if (bStart) + { + RT_TRACE(_module_mp_, _drv_alert_, + ("SetCCKContinuousTx: test start\n")); + + // 1. if CCK block on? + if(!read_bbreg(pAdapter, rFPGA0_RFMOD, bCCKEn)) + write_bbreg(pAdapter, rFPGA0_RFMOD, bCCKEn, bEnable);//set CCK block on + + //Turn Off All Test Mode + write_bbreg(pAdapter, rOFDM1_LSTF, bOFDMContinueTx, bDisable); + write_bbreg(pAdapter, rOFDM1_LSTF, bOFDMSingleCarrier, bDisable); + write_bbreg(pAdapter, rOFDM1_LSTF, bOFDMSingleTone, bDisable); + //Set CCK Tx Test Rate + #if 0 + switch(pAdapter->mppriv.rateidx) + { + case 2: + cckrate = 0; + break; + case 4: + cckrate = 1; + break; + case 11: + cckrate = 2; + break; + case 22: + cckrate = 3; + break; + default: + cckrate = 0; + break; + } + #else + cckrate = pAdapter->mppriv.rateidx; + #endif + write_bbreg(pAdapter, rCCK0_System, bCCKTxRate, cckrate); + write_bbreg(pAdapter, rCCK0_System, bCCKBBMode, 0x2); //transmit mode + write_bbreg(pAdapter, rCCK0_System, bCCKScramble, bEnable); //turn on scramble setting + +#ifdef CONFIG_RTL8192C + // Patch for CCK 11M waveform + if (cckrate == MPT_RATE_1M) + write_bbreg(pAdapter, 0xA71, BIT(6), bDisable); + else + write_bbreg(pAdapter, 0xA71, BIT(6), bEnable); +#endif + + } + else { + RT_TRACE(_module_mp_, _drv_info_, + ("SetCCKContinuousTx: test stop\n")); + + write_bbreg(pAdapter, rCCK0_System, bCCKBBMode, 0x0); //normal mode + write_bbreg(pAdapter, rCCK0_System, bCCKScramble, bEnable); //turn on scramble setting + + //BB Reset + write_bbreg(pAdapter, rPMAC_Reset, bBBResetB, 0x0); + write_bbreg(pAdapter, rPMAC_Reset, bBBResetB, 0x1); + } + + pAdapter->mppriv.MptCtx.bCckContTx = bStart; + pAdapter->mppriv.MptCtx.bOfdmContTx = _FALSE; +}/* mpt_StartCckContTx */ + +void Hal_SetOFDMContinuousTx(PADAPTER pAdapter, u8 bStart) +{ + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(pAdapter); + + if (bStart) { + RT_TRACE(_module_mp_, _drv_info_, ("SetOFDMContinuousTx: test start\n")); + // 1. if OFDM block on? + if(!read_bbreg(pAdapter, rFPGA0_RFMOD, bOFDMEn)) + write_bbreg(pAdapter, rFPGA0_RFMOD, bOFDMEn, bEnable);//set OFDM block on + { + + // 2. set CCK test mode off, set to CCK normal mode + write_bbreg(pAdapter, rCCK0_System, bCCKBBMode, bDisable); + + // 3. turn on scramble setting + write_bbreg(pAdapter, rCCK0_System, bCCKScramble, bEnable); + } + // 4. Turn On Continue Tx and turn off the other test modes. + write_bbreg(pAdapter, rOFDM1_LSTF, bOFDMContinueTx, bEnable); + write_bbreg(pAdapter, rOFDM1_LSTF, bOFDMSingleCarrier, bDisable); + write_bbreg(pAdapter, rOFDM1_LSTF, bOFDMSingleTone, bDisable); + } else { + RT_TRACE(_module_mp_,_drv_info_, ("SetOFDMContinuousTx: test stop\n")); + write_bbreg(pAdapter, rOFDM1_LSTF, bOFDMContinueTx, bDisable); + write_bbreg(pAdapter, rOFDM1_LSTF, bOFDMSingleCarrier, bDisable); + write_bbreg(pAdapter, rOFDM1_LSTF, bOFDMSingleTone, bDisable); + //Delay 10 ms + rtw_msleep_os(10); + //BB Reset + write_bbreg(pAdapter, rPMAC_Reset, bBBResetB, 0x0); + write_bbreg(pAdapter, rPMAC_Reset, bBBResetB, 0x1); + } + + pAdapter->mppriv.MptCtx.bCckContTx = _FALSE; + pAdapter->mppriv.MptCtx.bOfdmContTx = bStart; +}/* mpt_StartOfdmContTx */ + +void Hal_SetContinuousTx(PADAPTER pAdapter, u8 bStart) +{ +#if 0 + // ADC turn off [bit24-21] adc port0 ~ port1 + if (bStart) { + write_bbreg(pAdapter, rRx_Wait_CCCA, read_bbreg(pAdapter, rRx_Wait_CCCA) & 0xFE1FFFFF); + rtw_usleep_os(100); + } +#endif + RT_TRACE(_module_mp_, _drv_info_, + ("SetContinuousTx: rate:%d\n", pAdapter->mppriv.rateidx)); + + pAdapter->mppriv.MptCtx.bStartContTx = bStart; + if (pAdapter->mppriv.rateidx <= MPT_RATE_11M) + { + Hal_SetCCKContinuousTx(pAdapter, bStart); + } + else if ((pAdapter->mppriv.rateidx >= MPT_RATE_6M) && + (pAdapter->mppriv.rateidx <= MPT_RATE_MCS15)) + { + Hal_SetOFDMContinuousTx(pAdapter, bStart); + } +#if 0 + // ADC turn on [bit24-21] adc port0 ~ port1 + if (!bStart) { + write_bbreg(pAdapter, rRx_Wait_CCCA, read_bbreg(pAdapter, rRx_Wait_CCCA) | 0x01E00000); + } +#endif +} + +#endif // CONFIG_MP_INCLUDE --- linux-raspi2-4.2.0.orig/drivers/net/wireless/rtl8192cu/hal/rtl8192c/rtl8192c_phycfg.c +++ linux-raspi2-4.2.0/drivers/net/wireless/rtl8192cu/hal/rtl8192c/rtl8192c_phycfg.c @@ -0,0 +1,4840 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved. + * + * 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 + * published by the Free Software Foundation. + * + * 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 Street, Fifth Floor, Boston, MA 02110, USA + * + * + ******************************************************************************/ +/****************************************************************************** + + Module: rtl8192c_phycfg.c + + Note: Merge 92SE/SU PHY config as below + 1. BB register R/W API + 2. RF register R/W API + 3. Initial BB/RF/MAC config by reading BB/MAC/RF txt. + 3. Power setting API + 4. Channel switch API + 5. Initial gain switch API. + 6. Other BB/MAC/RF API. + + Function: PHY: Extern function, phy: local function + + Export: PHY_FunctionName + + Abbrev: NONE + + History: + Data Who Remark + 08/08/2008 MHC 1. Port from 9x series phycfg.c + 2. Reorganize code arch and ad description. + 3. Collect similar function. + 4. Seperate extern/local API. + 08/12/2008 MHC We must merge or move USB PHY relative function later. + 10/07/2008 MHC Add IQ calibration for PHY.(Only 1T2R mode now!!!) + 11/06/2008 MHC Add TX Power index PG file to config in 0xExx register + area to map with EEPROM/EFUSE tx pwr index. + +******************************************************************************/ +#define _HAL_8192C_PHYCFG_C_ + +#include +#include +#include +#include + +#ifdef CONFIG_IOL +#include +#endif + +#include + + +/*---------------------------Define Local Constant---------------------------*/ +/* Channel switch:The size of command tables for switch channel*/ +#define MAX_PRECMD_CNT 16 +#define MAX_RFDEPENDCMD_CNT 16 +#define MAX_POSTCMD_CNT 16 + +#define MAX_DOZE_WAITING_TIMES_9x 64 + +/*---------------------------Define Local Constant---------------------------*/ + + +/*------------------------Define global variable-----------------------------*/ + +/*------------------------Define local variable------------------------------*/ + + +/*--------------------Define export function prototype-----------------------*/ +// Please refer to header file +/*--------------------Define export function prototype-----------------------*/ + +/*----------------------------Function Body----------------------------------*/ +// +// 1. BB register R/W API +// + +/** +* Function: phy_CalculateBitShift +* +* OverView: Get shifted position of the BitMask +* +* Input: +* u4Byte BitMask, +* +* Output: none +* Return: u4Byte Return the shift bit bit position of the mask +*/ +static u32 +phy_CalculateBitShift( + u32 BitMask + ) +{ + u32 i; + + for(i=0; i<=31; i++) + { + if ( ((BitMask>>i) & 0x1 ) == 1) + break; + } + + return (i); +} + + +/** +* Function: PHY_QueryBBReg +* +* OverView: Read "sepcific bits" from BB register +* +* Input: +* PADAPTER Adapter, +* u4Byte RegAddr, //The target address to be readback +* u4Byte BitMask //The target bit position in the target address +* //to be readback +* Output: None +* Return: u4Byte Data //The readback register value +* Note: This function is equal to "GetRegSetting" in PHY programming guide +*/ +u32 +rtl8192c_PHY_QueryBBReg( + IN PADAPTER Adapter, + IN u32 RegAddr, + IN u32 BitMask + ) +{ + u32 ReturnValue = 0, OriginalValue, BitShift; + u16 BBWaitCounter = 0; + +#if (DISABLE_BB_RF == 1) + return 0; +#endif + + //RT_TRACE(COMP_RF, DBG_TRACE, ("--->PHY_QueryBBReg(): RegAddr(%#lx), BitMask(%#lx)\n", RegAddr, BitMask)); + + OriginalValue = rtw_read32(Adapter, RegAddr); + BitShift = phy_CalculateBitShift(BitMask); + ReturnValue = (OriginalValue & BitMask) >> BitShift; + + //RTPRINT(FPHY, PHY_BBR, ("BBR MASK=0x%lx Addr[0x%lx]=0x%lx\n", BitMask, RegAddr, OriginalValue)); + //RT_TRACE(COMP_RF, DBG_TRACE, ("<---PHY_QueryBBReg(): RegAddr(%#lx), BitMask(%#lx), OriginalValue(%#lx)\n", RegAddr, BitMask, OriginalValue)); + + return (ReturnValue); + +} + + +/** +* Function: PHY_SetBBReg +* +* OverView: Write "Specific bits" to BB register (page 8~) +* +* Input: +* PADAPTER Adapter, +* u4Byte RegAddr, //The target address to be modified +* u4Byte BitMask //The target bit position in the target address +* //to be modified +* u4Byte Data //The new register value in the target bit position +* //of the target address +* +* Output: None +* Return: None +* Note: This function is equal to "PutRegSetting" in PHY programming guide +*/ + +VOID +rtl8192c_PHY_SetBBReg( + IN PADAPTER Adapter, + IN u32 RegAddr, + IN u32 BitMask, + IN u32 Data + ) +{ + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); + //u16 BBWaitCounter = 0; + u32 OriginalValue, BitShift; + +#if (DISABLE_BB_RF == 1) + return; +#endif + + //RT_TRACE(COMP_RF, DBG_TRACE, ("--->PHY_SetBBReg(): RegAddr(%#lx), BitMask(%#lx), Data(%#lx)\n", RegAddr, BitMask, Data)); + + if(BitMask!= bMaskDWord){//if not "double word" write + OriginalValue = rtw_read32(Adapter, RegAddr); + BitShift = phy_CalculateBitShift(BitMask); + Data = ((OriginalValue & (~BitMask)) | ((Data << BitShift) & BitMask)); + } + + rtw_write32(Adapter, RegAddr, Data); + + //RTPRINT(FPHY, PHY_BBW, ("BBW MASK=0x%lx Addr[0x%lx]=0x%lx\n", BitMask, RegAddr, Data)); + //RT_TRACE(COMP_RF, DBG_TRACE, ("<---PHY_SetBBReg(): RegAddr(%#lx), BitMask(%#lx), Data(%#lx)\n", RegAddr, BitMask, Data)); + +} + + +// +// 2. RF register R/W API +// + +/*----------------------------------------------------------------------------- + * Function: phy_FwRFSerialRead() + * + * Overview: We support firmware to execute RF-R/W. + * + * Input: NONE + * + * Output: NONE + * + * Return: NONE + * + * Revised History: + * When Who Remark + * 01/21/2008 MHC Create Version 0. + * + *---------------------------------------------------------------------------*/ +static u32 +phy_FwRFSerialRead( + IN PADAPTER Adapter, + IN RF_RADIO_PATH_E eRFPath, + IN u32 Offset ) +{ + u32 retValue = 0; + //RT_ASSERT(FALSE,("deprecate!\n")); + return (retValue); + +} /* phy_FwRFSerialRead */ + + +/*----------------------------------------------------------------------------- + * Function: phy_FwRFSerialWrite() + * + * Overview: We support firmware to execute RF-R/W. + * + * Input: NONE + * + * Output: NONE + * + * Return: NONE + * + * Revised History: + * When Who Remark + * 01/21/2008 MHC Create Version 0. + * + *---------------------------------------------------------------------------*/ +static VOID +phy_FwRFSerialWrite( + IN PADAPTER Adapter, + IN RF_RADIO_PATH_E eRFPath, + IN u32 Offset, + IN u32 Data ) +{ + //RT_ASSERT(FALSE,("deprecate!\n")); +} + + +/** +* Function: phy_RFSerialRead +* +* OverView: Read regster from RF chips +* +* Input: +* PADAPTER Adapter, +* RF_RADIO_PATH_E eRFPath, //Radio path of A/B/C/D +* u4Byte Offset, //The target address to be read +* +* Output: None +* Return: u4Byte reback value +* Note: Threre are three types of serial operations: +* 1. Software serial write +* 2. Hardware LSSI-Low Speed Serial Interface +* 3. Hardware HSSI-High speed +* serial write. Driver need to implement (1) and (2). +* This function is equal to the combination of RF_ReadReg() and RFLSSIRead() +*/ +static u32 +phy_RFSerialRead( + IN PADAPTER Adapter, + IN RF_RADIO_PATH_E eRFPath, + IN u32 Offset + ) +{ + u32 retValue = 0; + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); + BB_REGISTER_DEFINITION_T *pPhyReg = &pHalData->PHYRegDef[eRFPath]; + u32 NewOffset; + u32 tmplong,tmplong2; + u8 RfPiEnable=0; +#if 0 + if(pHalData->RFChipID == RF_8225 && Offset > 0x24) //36 valid regs + return retValue; + if(pHalData->RFChipID == RF_8256 && Offset > 0x2D) //45 valid regs + return retValue; +#endif + // + // Make sure RF register offset is correct + // + Offset &= 0x3f; + + // + // Switch page for 8256 RF IC + // + NewOffset = Offset; + + // 2009/06/17 MH We can not execute IO for power save or other accident mode. + //if(RT_CANNOT_IO(Adapter)) + //{ + // RTPRINT(FPHY, PHY_RFR, ("phy_RFSerialRead return all one\n")); + // return 0xFFFFFFFF; + //} + + // For 92S LSSI Read RFLSSIRead + // For RF A/B write 0x824/82c(does not work in the future) + // We must use 0x824 for RF A and B to execute read trigger + tmplong = PHY_QueryBBReg(Adapter, rFPGA0_XA_HSSIParameter2, bMaskDWord); + if(eRFPath == RF_PATH_A) + tmplong2 = tmplong; + else + tmplong2 = PHY_QueryBBReg(Adapter, pPhyReg->rfHSSIPara2, bMaskDWord); + + tmplong2 = (tmplong2 & (~bLSSIReadAddress)) | (NewOffset<<23) | bLSSIReadEdge; //T65 RF + + PHY_SetBBReg(Adapter, rFPGA0_XA_HSSIParameter2, bMaskDWord, tmplong&(~bLSSIReadEdge)); + rtw_udelay_os(10);// PlatformStallExecution(10); + + PHY_SetBBReg(Adapter, pPhyReg->rfHSSIPara2, bMaskDWord, tmplong2); + rtw_udelay_os(100);//PlatformStallExecution(100); + + PHY_SetBBReg(Adapter, rFPGA0_XA_HSSIParameter2, bMaskDWord, tmplong|bLSSIReadEdge); + rtw_udelay_os(10);//PlatformStallExecution(10); + + if(eRFPath == RF_PATH_A) + RfPiEnable = (u8)PHY_QueryBBReg(Adapter, rFPGA0_XA_HSSIParameter1, BIT8); + else if(eRFPath == RF_PATH_B) + RfPiEnable = (u8)PHY_QueryBBReg(Adapter, rFPGA0_XB_HSSIParameter1, BIT8); + + if(RfPiEnable) + { // Read from BBreg8b8, 12 bits for 8190, 20bits for T65 RF + retValue = PHY_QueryBBReg(Adapter, pPhyReg->rfLSSIReadBackPi, bLSSIReadBackData); + //DBG_8192C("Readback from RF-PI : 0x%x\n", retValue); + } + else + { //Read from BBreg8a0, 12 bits for 8190, 20 bits for T65 RF + retValue = PHY_QueryBBReg(Adapter, pPhyReg->rfLSSIReadBack, bLSSIReadBackData); + //DBG_8192C("Readback from RF-SI : 0x%x\n", retValue); + } + //DBG_8192C("RFR-%d Addr[0x%x]=0x%x\n", eRFPath, pPhyReg->rfLSSIReadBack, retValue); + + return retValue; + +} + + + +/** +* Function: phy_RFSerialWrite +* +* OverView: Write data to RF register (page 8~) +* +* Input: +* PADAPTER Adapter, +* RF_RADIO_PATH_E eRFPath, //Radio path of A/B/C/D +* u4Byte Offset, //The target address to be read +* u4Byte Data //The new register Data in the target bit position +* //of the target to be read +* +* Output: None +* Return: None +* Note: Threre are three types of serial operations: +* 1. Software serial write +* 2. Hardware LSSI-Low Speed Serial Interface +* 3. Hardware HSSI-High speed +* serial write. Driver need to implement (1) and (2). +* This function is equal to the combination of RF_ReadReg() and RFLSSIRead() + * + * Note: For RF8256 only + * The total count of RTL8256(Zebra4) register is around 36 bit it only employs + * 4-bit RF address. RTL8256 uses "register mode control bit" (Reg00[12], Reg00[10]) + * to access register address bigger than 0xf. See "Appendix-4 in PHY Configuration + * programming guide" for more details. + * Thus, we define a sub-finction for RTL8526 register address conversion + * =========================================================== + * Register Mode RegCTL[1] RegCTL[0] Note + * (Reg00[12]) (Reg00[10]) + * =========================================================== + * Reg_Mode0 0 x Reg 0 ~15(0x0 ~ 0xf) + * ------------------------------------------------------------------ + * Reg_Mode1 1 0 Reg 16 ~30(0x1 ~ 0xf) + * ------------------------------------------------------------------ + * Reg_Mode2 1 1 Reg 31 ~ 45(0x1 ~ 0xf) + * ------------------------------------------------------------------ + * + * 2008/09/02 MH Add 92S RF definition + * + * + * +*/ +static VOID +phy_RFSerialWrite( + IN PADAPTER Adapter, + IN RF_RADIO_PATH_E eRFPath, + IN u32 Offset, + IN u32 Data + ) +{ + u32 DataAndAddr = 0; + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); + BB_REGISTER_DEFINITION_T *pPhyReg = &pHalData->PHYRegDef[eRFPath]; + u32 NewOffset; + +#if 0 + // We should check valid regs for RF_6052 case. + if(pHalData->RFChipID == RF_8225 && Offset > 0x24) //36 valid regs + return; + if(pHalData->RFChipID == RF_8256 && Offset > 0x2D) //45 valid regs + return; +#endif + + // 2009/06/17 MH We can not execute IO for power save or other accident mode. + //if(RT_CANNOT_IO(Adapter)) + //{ + // RTPRINT(FPHY, PHY_RFW, ("phy_RFSerialWrite stop\n")); + // return; + //} + + Offset &= 0x3f; + + // + // Shadow Update + // + //PHY_RFShadowWrite(Adapter, eRFPath, Offset, Data); + + // + // Switch page for 8256 RF IC + // + NewOffset = Offset; + + // + // Put write addr in [5:0] and write data in [31:16] + // + //DataAndAddr = (Data<<16) | (NewOffset&0x3f); + DataAndAddr = ((NewOffset<<20) | (Data&0x000fffff)) & 0x0fffffff; // T65 RF + + // + // Write Operation + // + PHY_SetBBReg(Adapter, pPhyReg->rf3wireOffset, bMaskDWord, DataAndAddr); + //RTPRINT(FPHY, PHY_RFW, ("RFW-%d Addr[0x%lx]=0x%lx\n", eRFPath, pPhyReg->rf3wireOffset, DataAndAddr)); + +} + + +/** +* Function: PHY_QueryRFReg +* +* OverView: Query "Specific bits" to RF register (page 8~) +* +* Input: +* PADAPTER Adapter, +* RF_RADIO_PATH_E eRFPath, //Radio path of A/B/C/D +* u4Byte RegAddr, //The target address to be read +* u4Byte BitMask //The target bit position in the target address +* //to be read +* +* Output: None +* Return: u4Byte Readback value +* Note: This function is equal to "GetRFRegSetting" in PHY programming guide +*/ +u32 +rtl8192c_PHY_QueryRFReg( + IN PADAPTER Adapter, + IN RF_RADIO_PATH_E eRFPath, + IN u32 RegAddr, + IN u32 BitMask + ) +{ + u32 Original_Value, Readback_Value, BitShift; + //HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); + //u8 RFWaitCounter = 0; + //_irqL irqL; + +#if (DISABLE_BB_RF == 1) + return 0; +#endif + + //RT_TRACE(COMP_RF, DBG_TRACE, ("--->PHY_QueryRFReg(): RegAddr(%#lx), eRFPath(%#x), BitMask(%#lx)\n", RegAddr, eRFPath,BitMask)); + +#ifdef CONFIG_USB_HCI + //PlatformAcquireMutex(&pHalData->mxRFOperate); +#else + //_enter_critical(&pHalData->rf_lock, &irqL); +#endif + + + Original_Value = phy_RFSerialRead(Adapter, eRFPath, RegAddr); + + BitShift = phy_CalculateBitShift(BitMask); + Readback_Value = (Original_Value & BitMask) >> BitShift; + +#ifdef CONFIG_USB_HCI + //PlatformReleaseMutex(&pHalData->mxRFOperate); +#else + //_exit_critical(&pHalData->rf_lock, &irqL); +#endif + + + //RTPRINT(FPHY, PHY_RFR, ("RFR-%d MASK=0x%lx Addr[0x%lx]=0x%lx\n", eRFPath, BitMask, RegAddr, Original_Value));//BitMask(%#lx),BitMask, + //RT_TRACE(COMP_RF, DBG_TRACE, ("<---PHY_QueryRFReg(): RegAddr(%#lx), eRFPath(%#x), Original_Value(%#lx)\n", + // RegAddr, eRFPath, Original_Value)); + + return (Readback_Value); +} + +/** +* Function: PHY_SetRFReg +* +* OverView: Write "Specific bits" to RF register (page 8~) +* +* Input: +* PADAPTER Adapter, +* RF_RADIO_PATH_E eRFPath, //Radio path of A/B/C/D +* u4Byte RegAddr, //The target address to be modified +* u4Byte BitMask //The target bit position in the target address +* //to be modified +* u4Byte Data //The new register Data in the target bit position +* //of the target address +* +* Output: None +* Return: None +* Note: This function is equal to "PutRFRegSetting" in PHY programming guide +*/ +VOID +rtl8192c_PHY_SetRFReg( + IN PADAPTER Adapter, + IN RF_RADIO_PATH_E eRFPath, + IN u32 RegAddr, + IN u32 BitMask, + IN u32 Data + ) +{ + + //HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); + //u1Byte RFWaitCounter = 0; + u32 Original_Value, BitShift; + //_irqL irqL; + +#if (DISABLE_BB_RF == 1) + return; +#endif + + //RT_TRACE(COMP_RF, DBG_TRACE, ("--->PHY_SetRFReg(): RegAddr(%#lx), BitMask(%#lx), Data(%#lx), eRFPath(%#x)\n", + // RegAddr, BitMask, Data, eRFPath)); + //RTPRINT(FINIT, INIT_RF, ("PHY_SetRFReg(): RegAddr(%#lx), BitMask(%#lx), Data(%#lx), eRFPath(%#x)\n", + // RegAddr, BitMask, Data, eRFPath)); + + +#ifdef CONFIG_USB_HCI + //PlatformAcquireMutex(&pHalData->mxRFOperate); +#else + //_enter_critical(&pHalData->rf_lock, &irqL); +#endif + + + // RF data is 12 bits only + if (BitMask != bRFRegOffsetMask) + { + Original_Value = phy_RFSerialRead(Adapter, eRFPath, RegAddr); + BitShift = phy_CalculateBitShift(BitMask); + Data = ((Original_Value & (~BitMask)) | (Data<< BitShift)); + } + + phy_RFSerialWrite(Adapter, eRFPath, RegAddr, Data); + + + +#ifdef CONFIG_USB_HCI + //PlatformReleaseMutex(&pHalData->mxRFOperate); +#else + //_exit_critical(&pHalData->rf_lock, &irqL); +#endif + + //PHY_QueryRFReg(Adapter,eRFPath,RegAddr,BitMask); + //RT_TRACE(COMP_RF, DBG_TRACE, ("<---PHY_SetRFReg(): RegAddr(%#lx), BitMask(%#lx), Data(%#lx), eRFPath(%#x)\n", + // RegAddr, BitMask, Data, eRFPath)); + +} + + +// +// 3. Initial MAC/BB/RF config by reading MAC/BB/RF txt. +// + +/*----------------------------------------------------------------------------- + * Function: phy_ConfigMACWithParaFile() + * + * Overview: This function read BB parameters from general file format, and do register + * Read/Write + * + * Input: PADAPTER Adapter + * ps1Byte pFileName + * + * Output: NONE + * + * Return: RT_STATUS_SUCCESS: configuration file exist + * + * Note: The format of MACPHY_REG.txt is different from PHY and RF. + * [Register][Mask][Value] + *---------------------------------------------------------------------------*/ +static int +phy_ConfigMACWithParaFile( + IN PADAPTER Adapter, + IN u8* pFileName +) +{ + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); + + int rtStatus = _SUCCESS; + + return rtStatus; +} + +/*----------------------------------------------------------------------------- + * Function: phy_ConfigMACWithHeaderFile() + * + * Overview: This function read BB parameters from Header file we gen, and do register + * Read/Write + * + * Input: PADAPTER Adapter + * ps1Byte pFileName + * + * Output: NONE + * + * Return: RT_STATUS_SUCCESS: configuration file exist + * + * Note: The format of MACPHY_REG.txt is different from PHY and RF. + * [Register][Mask][Value] + *---------------------------------------------------------------------------*/ +static int +phy_ConfigMACWithHeaderFile( + IN PADAPTER Adapter +) +{ + u32 i = 0; + u32 ArrayLength = 0; + u32* ptrArray; + //HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); + + //2008.11.06 Modified by tynli. + //RT_TRACE(COMP_INIT, DBG_LOUD, ("Read Rtl819XMACPHY_Array\n")); + ArrayLength = MAC_2T_ArrayLength; + ptrArray = Rtl819XMAC_Array; + +#ifdef CONFIG_IOL_MAC + if(rtw_IOL_applied(Adapter)) + { + struct xmit_frame *xmit_frame; + if((xmit_frame=rtw_IOL_accquire_xmit_frame(Adapter)) == NULL) + return _FAIL; + + for(i = 0 ;i < ArrayLength;i=i+2){ // Add by tynli for 2 column + rtw_IOL_append_WB_cmd(xmit_frame, ptrArray[i], (u8)ptrArray[i+1]); + } + + return rtw_IOL_exec_cmds_sync(Adapter, xmit_frame, 1000); + } + else +#endif + { + for(i = 0 ;i < ArrayLength;i=i+2){ // Add by tynli for 2 column + rtw_write8(Adapter, ptrArray[i], (u8)ptrArray[i+1]); + } + } + + return _SUCCESS; + +} + + +/*----------------------------------------------------------------------------- + * Function: PHY_MACConfig8192C + * + * Overview: Condig MAC by header file or parameter file. + * + * Input: NONE + * + * Output: NONE + * + * Return: NONE + * + * Revised History: + * When Who Remark + * 08/12/2008 MHC Create Version 0. + * + *---------------------------------------------------------------------------*/ +int +PHY_MACConfig8192C( + IN PADAPTER Adapter + ) +{ + int rtStatus = _SUCCESS; + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); + s8 *pszMACRegFile; + s8 sz88CMACRegFile[] = RTL8188C_PHY_MACREG; + s8 sz92CMACRegFile[] = RTL8192C_PHY_MACREG; + BOOLEAN is92C = IS_92C_SERIAL(pHalData->VersionID); + + if(is92C) + pszMACRegFile = sz92CMACRegFile; + else + pszMACRegFile = sz88CMACRegFile; + + // + // Config MAC + // +#ifdef CONFIG_EMBEDDED_FWIMG + rtStatus = phy_ConfigMACWithHeaderFile(Adapter); +#else + + // Not make sure EEPROM, add later + //RT_TRACE(COMP_INIT, DBG_LOUD, ("Read MACREG.txt\n")); + rtStatus = phy_ConfigMACWithParaFile(Adapter, pszMACRegFile); +#endif + +#ifdef CONFIG_PCI_HCI + //this switching setting cause some 8192cu hw have redownload fw fail issue + //improve 2-stream TX EVM by Jenyu + if(is92C) + rtw_write8(Adapter, REG_SPS0_CTRL+3,0x71); +#endif + + + // 2010.07.13 AMPDU aggregation number 9 + //rtw_write16(Adapter, REG_MAX_AGGR_NUM, MAX_AGGR_NUM); + rtw_write8(Adapter, REG_MAX_AGGR_NUM, 0x0A); //By tynli. 2010.11.18. +#ifdef CONFIG_USB_HCI + if(is92C && (BOARD_USB_DONGLE == pHalData->BoardType)) + rtw_write8(Adapter, 0x40,0x04); +#endif + + return rtStatus; + +} + + +/** +* Function: phy_InitBBRFRegisterDefinition +* +* OverView: Initialize Register definition offset for Radio Path A/B/C/D +* +* Input: +* PADAPTER Adapter, +* +* Output: None +* Return: None +* Note: The initialization value is constant and it should never be changes +*/ +static VOID +phy_InitBBRFRegisterDefinition( + IN PADAPTER Adapter +) +{ + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); + + // RF Interface Sowrtware Control + pHalData->PHYRegDef[RF_PATH_A].rfintfs = rFPGA0_XAB_RFInterfaceSW; // 16 LSBs if read 32-bit from 0x870 + pHalData->PHYRegDef[RF_PATH_B].rfintfs = rFPGA0_XAB_RFInterfaceSW; // 16 MSBs if read 32-bit from 0x870 (16-bit for 0x872) + pHalData->PHYRegDef[RF_PATH_C].rfintfs = rFPGA0_XCD_RFInterfaceSW;// 16 LSBs if read 32-bit from 0x874 + pHalData->PHYRegDef[RF_PATH_D].rfintfs = rFPGA0_XCD_RFInterfaceSW;// 16 MSBs if read 32-bit from 0x874 (16-bit for 0x876) + + // RF Interface Readback Value + pHalData->PHYRegDef[RF_PATH_A].rfintfi = rFPGA0_XAB_RFInterfaceRB; // 16 LSBs if read 32-bit from 0x8E0 + pHalData->PHYRegDef[RF_PATH_B].rfintfi = rFPGA0_XAB_RFInterfaceRB;// 16 MSBs if read 32-bit from 0x8E0 (16-bit for 0x8E2) + pHalData->PHYRegDef[RF_PATH_C].rfintfi = rFPGA0_XCD_RFInterfaceRB;// 16 LSBs if read 32-bit from 0x8E4 + pHalData->PHYRegDef[RF_PATH_D].rfintfi = rFPGA0_XCD_RFInterfaceRB;// 16 MSBs if read 32-bit from 0x8E4 (16-bit for 0x8E6) + + // RF Interface Output (and Enable) + pHalData->PHYRegDef[RF_PATH_A].rfintfo = rFPGA0_XA_RFInterfaceOE; // 16 LSBs if read 32-bit from 0x860 + pHalData->PHYRegDef[RF_PATH_B].rfintfo = rFPGA0_XB_RFInterfaceOE; // 16 LSBs if read 32-bit from 0x864 + + // RF Interface (Output and) Enable + pHalData->PHYRegDef[RF_PATH_A].rfintfe = rFPGA0_XA_RFInterfaceOE; // 16 MSBs if read 32-bit from 0x860 (16-bit for 0x862) + pHalData->PHYRegDef[RF_PATH_B].rfintfe = rFPGA0_XB_RFInterfaceOE; // 16 MSBs if read 32-bit from 0x864 (16-bit for 0x866) + + //Addr of LSSI. Wirte RF register by driver + pHalData->PHYRegDef[RF_PATH_A].rf3wireOffset = rFPGA0_XA_LSSIParameter; //LSSI Parameter + pHalData->PHYRegDef[RF_PATH_B].rf3wireOffset = rFPGA0_XB_LSSIParameter; + + // RF parameter + pHalData->PHYRegDef[RF_PATH_A].rfLSSI_Select = rFPGA0_XAB_RFParameter; //BB Band Select + pHalData->PHYRegDef[RF_PATH_B].rfLSSI_Select = rFPGA0_XAB_RFParameter; + pHalData->PHYRegDef[RF_PATH_C].rfLSSI_Select = rFPGA0_XCD_RFParameter; + pHalData->PHYRegDef[RF_PATH_D].rfLSSI_Select = rFPGA0_XCD_RFParameter; + + // Tx AGC Gain Stage (same for all path. Should we remove this?) + pHalData->PHYRegDef[RF_PATH_A].rfTxGainStage = rFPGA0_TxGainStage; //Tx gain stage + pHalData->PHYRegDef[RF_PATH_B].rfTxGainStage = rFPGA0_TxGainStage; //Tx gain stage + pHalData->PHYRegDef[RF_PATH_C].rfTxGainStage = rFPGA0_TxGainStage; //Tx gain stage + pHalData->PHYRegDef[RF_PATH_D].rfTxGainStage = rFPGA0_TxGainStage; //Tx gain stage + + // Tranceiver A~D HSSI Parameter-1 + pHalData->PHYRegDef[RF_PATH_A].rfHSSIPara1 = rFPGA0_XA_HSSIParameter1; //wire control parameter1 + pHalData->PHYRegDef[RF_PATH_B].rfHSSIPara1 = rFPGA0_XB_HSSIParameter1; //wire control parameter1 + + // Tranceiver A~D HSSI Parameter-2 + pHalData->PHYRegDef[RF_PATH_A].rfHSSIPara2 = rFPGA0_XA_HSSIParameter2; //wire control parameter2 + pHalData->PHYRegDef[RF_PATH_B].rfHSSIPara2 = rFPGA0_XB_HSSIParameter2; //wire control parameter2 + + // RF switch Control + pHalData->PHYRegDef[RF_PATH_A].rfSwitchControl = rFPGA0_XAB_SwitchControl; //TR/Ant switch control + pHalData->PHYRegDef[RF_PATH_B].rfSwitchControl = rFPGA0_XAB_SwitchControl; + pHalData->PHYRegDef[RF_PATH_C].rfSwitchControl = rFPGA0_XCD_SwitchControl; + pHalData->PHYRegDef[RF_PATH_D].rfSwitchControl = rFPGA0_XCD_SwitchControl; + + // AGC control 1 + pHalData->PHYRegDef[RF_PATH_A].rfAGCControl1 = rOFDM0_XAAGCCore1; + pHalData->PHYRegDef[RF_PATH_B].rfAGCControl1 = rOFDM0_XBAGCCore1; + pHalData->PHYRegDef[RF_PATH_C].rfAGCControl1 = rOFDM0_XCAGCCore1; + pHalData->PHYRegDef[RF_PATH_D].rfAGCControl1 = rOFDM0_XDAGCCore1; + + // AGC control 2 + pHalData->PHYRegDef[RF_PATH_A].rfAGCControl2 = rOFDM0_XAAGCCore2; + pHalData->PHYRegDef[RF_PATH_B].rfAGCControl2 = rOFDM0_XBAGCCore2; + pHalData->PHYRegDef[RF_PATH_C].rfAGCControl2 = rOFDM0_XCAGCCore2; + pHalData->PHYRegDef[RF_PATH_D].rfAGCControl2 = rOFDM0_XDAGCCore2; + + // RX AFE control 1 + pHalData->PHYRegDef[RF_PATH_A].rfRxIQImbalance = rOFDM0_XARxIQImbalance; + pHalData->PHYRegDef[RF_PATH_B].rfRxIQImbalance = rOFDM0_XBRxIQImbalance; + pHalData->PHYRegDef[RF_PATH_C].rfRxIQImbalance = rOFDM0_XCRxIQImbalance; + pHalData->PHYRegDef[RF_PATH_D].rfRxIQImbalance = rOFDM0_XDRxIQImbalance; + + // RX AFE control 1 + pHalData->PHYRegDef[RF_PATH_A].rfRxAFE = rOFDM0_XARxAFE; + pHalData->PHYRegDef[RF_PATH_B].rfRxAFE = rOFDM0_XBRxAFE; + pHalData->PHYRegDef[RF_PATH_C].rfRxAFE = rOFDM0_XCRxAFE; + pHalData->PHYRegDef[RF_PATH_D].rfRxAFE = rOFDM0_XDRxAFE; + + // Tx AFE control 1 + pHalData->PHYRegDef[RF_PATH_A].rfTxIQImbalance = rOFDM0_XATxIQImbalance; + pHalData->PHYRegDef[RF_PATH_B].rfTxIQImbalance = rOFDM0_XBTxIQImbalance; + pHalData->PHYRegDef[RF_PATH_C].rfTxIQImbalance = rOFDM0_XCTxIQImbalance; + pHalData->PHYRegDef[RF_PATH_D].rfTxIQImbalance = rOFDM0_XDTxIQImbalance; + + // Tx AFE control 2 + pHalData->PHYRegDef[RF_PATH_A].rfTxAFE = rOFDM0_XATxAFE; + pHalData->PHYRegDef[RF_PATH_B].rfTxAFE = rOFDM0_XBTxAFE; + pHalData->PHYRegDef[RF_PATH_C].rfTxAFE = rOFDM0_XCTxAFE; + pHalData->PHYRegDef[RF_PATH_D].rfTxAFE = rOFDM0_XDTxAFE; + + // Tranceiver LSSI Readback SI mode + pHalData->PHYRegDef[RF_PATH_A].rfLSSIReadBack = rFPGA0_XA_LSSIReadBack; + pHalData->PHYRegDef[RF_PATH_B].rfLSSIReadBack = rFPGA0_XB_LSSIReadBack; + pHalData->PHYRegDef[RF_PATH_C].rfLSSIReadBack = rFPGA0_XC_LSSIReadBack; + pHalData->PHYRegDef[RF_PATH_D].rfLSSIReadBack = rFPGA0_XD_LSSIReadBack; + + // Tranceiver LSSI Readback PI mode + pHalData->PHYRegDef[RF_PATH_A].rfLSSIReadBackPi = TransceiverA_HSPI_Readback; + pHalData->PHYRegDef[RF_PATH_B].rfLSSIReadBackPi = TransceiverB_HSPI_Readback; + //pHalData->PHYRegDef[RF_PATH_C].rfLSSIReadBackPi = rFPGA0_XC_LSSIReadBack; + //pHalData->PHYRegDef[RF_PATH_D].rfLSSIReadBackPi = rFPGA0_XD_LSSIReadBack; + +} + + +/*----------------------------------------------------------------------------- + * Function: phy_ConfigBBWithParaFile() + * + * Overview: This function read BB parameters from general file format, and do register + * Read/Write + * + * Input: PADAPTER Adapter + * ps1Byte pFileName + * + * Output: NONE + * + * Return: RT_STATUS_SUCCESS: configuration file exist + * 2008/11/06 MH For 92S we do not support silent reset now. Disable + * parameter file compare!!!!!!?? + * + *---------------------------------------------------------------------------*/ +static int +phy_ConfigBBWithParaFile( + IN PADAPTER Adapter, + IN u8* pFileName +) +{ + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); + + int rtStatus = _SUCCESS; + + return rtStatus; +} + + + +//**************************************** +// The following is for High Power PA +//**************************************** +VOID +phy_ConfigBBExternalPA( + IN PADAPTER Adapter +) +{ +#ifdef CONFIG_USB_HCI + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); + u16 i=0; + u32 temp=0; + + if(!pHalData->ExternalPA) + { + return; + } + + // 2010/10/19 MH According to Jenyu/EEChou 's opinion, we need not to execute the + // same code as SU. It is already updated in PHY_REG_1T_HP.txt. +#if 0 + PHY_SetBBReg(Adapter, 0xee8, BIT28, 1); + temp = PHY_QueryBBReg(Adapter, 0x860, bMaskDWord); + temp |= (BIT26|BIT21|BIT10|BIT5); + PHY_SetBBReg(Adapter, 0x860, bMaskDWord, temp); + PHY_SetBBReg(Adapter, 0x870, BIT10, 0); + PHY_SetBBReg(Adapter, 0xc80, bMaskDWord, 0x20000080); + PHY_SetBBReg(Adapter, 0xc88, bMaskDWord, 0x40000100); +#endif + +#endif +} + +/*----------------------------------------------------------------------------- + * Function: phy_ConfigBBWithHeaderFile() + * + * Overview: This function read BB parameters from general file format, and do register + * Read/Write + * + * Input: PADAPTER Adapter + * u1Byte ConfigType 0 => PHY_CONFIG + * 1 =>AGC_TAB + * + * Output: NONE + * + * Return: RT_STATUS_SUCCESS: configuration file exist + * + *---------------------------------------------------------------------------*/ +static int +phy_ConfigBBWithHeaderFile( + IN PADAPTER Adapter, + IN u8 ConfigType +) +{ + int i; + u32* Rtl819XPHY_REGArray_Table; + u32* Rtl819XAGCTAB_Array_Table; + u16 PHY_REGArrayLen, AGCTAB_ArrayLen; + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); + int ret = _SUCCESS; + + // + // 2009.11.24. Modified by tynli. + // + if(IS_92C_SERIAL(pHalData->VersionID)) + { + AGCTAB_ArrayLen = AGCTAB_2TArrayLength; + Rtl819XAGCTAB_Array_Table = Rtl819XAGCTAB_2TArray; + PHY_REGArrayLen = PHY_REG_2TArrayLength; + Rtl819XPHY_REGArray_Table = Rtl819XPHY_REG_2TArray; +#ifdef CONFIG_USB_HCI + if(pHalData->BoardType == BOARD_MINICARD ) + { + PHY_REGArrayLen = PHY_REG_2T_mCardArrayLength; + Rtl819XPHY_REGArray_Table = Rtl819XPHY_REG_2T_mCardArray; + } +#endif + } + else + { + AGCTAB_ArrayLen = AGCTAB_1TArrayLength; + Rtl819XAGCTAB_Array_Table = Rtl819XAGCTAB_1TArray; + PHY_REGArrayLen = PHY_REG_1TArrayLength; + Rtl819XPHY_REGArray_Table = Rtl819XPHY_REG_1TArray; +#ifdef CONFIG_USB_HCI + if(pHalData->BoardType == BOARD_MINICARD ) + { + PHY_REGArrayLen = PHY_REG_1T_mCardArrayLength; + Rtl819XPHY_REGArray_Table = Rtl819XPHY_REG_1T_mCardArray; + } + else if(pHalData->BoardType == BOARD_USB_High_PA) + { + AGCTAB_ArrayLen = AGCTAB_1T_HPArrayLength; + Rtl819XAGCTAB_Array_Table = Rtl819XAGCTAB_1T_HPArray; + PHY_REGArrayLen = PHY_REG_1T_HPArrayLength; + Rtl819XPHY_REGArray_Table = Rtl819XPHY_REG_1T_HPArray; + } +#endif + } + + if(ConfigType == BaseBand_Config_PHY_REG) + { + #ifdef CONFIG_IOL_BB_PHY_REG + if(rtw_IOL_applied(Adapter)) + { + struct xmit_frame *xmit_frame; + u32 tmp_value; + + if((xmit_frame=rtw_IOL_accquire_xmit_frame(Adapter)) == NULL) { + ret = _FAIL; + goto exit; + } + + for(i=0;iMCSTxPowerLevelOriginalOffset[pHalData->pwrGroupCnt][0] = Data; + //RT_TRACE(COMP_INIT, DBG_TRACE, ("MCSTxPowerLevelOriginalOffset[%d][0] = 0x%lx\n", pHalData->pwrGroupCnt, + // pHalData->MCSTxPowerLevelOriginalOffset[pHalData->pwrGroupCnt][0])); + } + if(RegAddr == rTxAGC_A_Rate54_24) + { + pHalData->MCSTxPowerLevelOriginalOffset[pHalData->pwrGroupCnt][1] = Data; + //RT_TRACE(COMP_INIT, DBG_TRACE, ("MCSTxPowerLevelOriginalOffset[%d][1] = 0x%lx\n", pHalData->pwrGroupCnt, + // pHalData->MCSTxPowerLevelOriginalOffset[pHalData->pwrGroupCnt][1])); + } + if(RegAddr == rTxAGC_A_CCK1_Mcs32) + { + pHalData->MCSTxPowerLevelOriginalOffset[pHalData->pwrGroupCnt][6] = Data; + //RT_TRACE(COMP_INIT, DBG_TRACE, ("MCSTxPowerLevelOriginalOffset[%d][6] = 0x%lx\n", pHalData->pwrGroupCnt, + // pHalData->MCSTxPowerLevelOriginalOffset[pHalData->pwrGroupCnt][6])); + } + if(RegAddr == rTxAGC_B_CCK11_A_CCK2_11 && BitMask == 0xffffff00) + { + pHalData->MCSTxPowerLevelOriginalOffset[pHalData->pwrGroupCnt][7] = Data; + //RT_TRACE(COMP_INIT, DBG_TRACE, ("MCSTxPowerLevelOriginalOffset[%d][7] = 0x%lx\n", pHalData->pwrGroupCnt, + // pHalData->MCSTxPowerLevelOriginalOffset[pHalData->pwrGroupCnt][7])); + } + if(RegAddr == rTxAGC_A_Mcs03_Mcs00) + { + pHalData->MCSTxPowerLevelOriginalOffset[pHalData->pwrGroupCnt][2] = Data; + //RT_TRACE(COMP_INIT, DBG_TRACE, ("MCSTxPowerLevelOriginalOffset[%d][2] = 0x%lx\n", pHalData->pwrGroupCnt, + // pHalData->MCSTxPowerLevelOriginalOffset[pHalData->pwrGroupCnt][2])); + } + if(RegAddr == rTxAGC_A_Mcs07_Mcs04) + { + pHalData->MCSTxPowerLevelOriginalOffset[pHalData->pwrGroupCnt][3] = Data; + //RT_TRACE(COMP_INIT, DBG_TRACE, ("MCSTxPowerLevelOriginalOffset[%d][3] = 0x%lx\n", pHalData->pwrGroupCnt, + // pHalData->MCSTxPowerLevelOriginalOffset[pHalData->pwrGroupCnt][3])); + } + if(RegAddr == rTxAGC_A_Mcs11_Mcs08) + { + pHalData->MCSTxPowerLevelOriginalOffset[pHalData->pwrGroupCnt][4] = Data; + //RT_TRACE(COMP_INIT, DBG_TRACE, ("MCSTxPowerLevelOriginalOffset[%d][4] = 0x%lx\n", pHalData->pwrGroupCnt, + // pHalData->MCSTxPowerLevelOriginalOffset[pHalData->pwrGroupCnt][4])); + } + if(RegAddr == rTxAGC_A_Mcs15_Mcs12) + { + pHalData->MCSTxPowerLevelOriginalOffset[pHalData->pwrGroupCnt][5] = Data; + //RT_TRACE(COMP_INIT, DBG_TRACE, ("MCSTxPowerLevelOriginalOffset[%d][5] = 0x%lx\n", pHalData->pwrGroupCnt, + // pHalData->MCSTxPowerLevelOriginalOffset[pHalData->pwrGroupCnt][5])); + } + if(RegAddr == rTxAGC_B_Rate18_06) + { + pHalData->MCSTxPowerLevelOriginalOffset[pHalData->pwrGroupCnt][8] = Data; + //RT_TRACE(COMP_INIT, DBG_TRACE, ("MCSTxPowerLevelOriginalOffset[%d][8] = 0x%lx\n", pHalData->pwrGroupCnt, + // pHalData->MCSTxPowerLevelOriginalOffset[pHalData->pwrGroupCnt][8])); + } + if(RegAddr == rTxAGC_B_Rate54_24) + { + pHalData->MCSTxPowerLevelOriginalOffset[pHalData->pwrGroupCnt][9] = Data; + //RT_TRACE(COMP_INIT, DBG_TRACE, ("MCSTxPowerLevelOriginalOffset[%d][9] = 0x%lx\n", pHalData->pwrGroupCnt, + // pHalData->MCSTxPowerLevelOriginalOffset[pHalData->pwrGroupCnt][9])); + } + if(RegAddr == rTxAGC_B_CCK1_55_Mcs32) + { + pHalData->MCSTxPowerLevelOriginalOffset[pHalData->pwrGroupCnt][14] = Data; + //RT_TRACE(COMP_INIT, DBG_TRACE, ("MCSTxPowerLevelOriginalOffset[%d][14] = 0x%lx\n", pHalData->pwrGroupCnt, + // pHalData->MCSTxPowerLevelOriginalOffset[pHalData->pwrGroupCnt][14])); + } + if(RegAddr == rTxAGC_B_CCK11_A_CCK2_11 && BitMask == 0x000000ff) + { + pHalData->MCSTxPowerLevelOriginalOffset[pHalData->pwrGroupCnt][15] = Data; + //RT_TRACE(COMP_INIT, DBG_TRACE, ("MCSTxPowerLevelOriginalOffset[%d][15] = 0x%lx\n", pHalData->pwrGroupCnt, + // pHalData->MCSTxPowerLevelOriginalOffset[pHalData->pwrGroupCnt][15])); + } + if(RegAddr == rTxAGC_B_Mcs03_Mcs00) + { + pHalData->MCSTxPowerLevelOriginalOffset[pHalData->pwrGroupCnt][10] = Data; + //RT_TRACE(COMP_INIT, DBG_TRACE, ("MCSTxPowerLevelOriginalOffset[%d][10] = 0x%lx\n", pHalData->pwrGroupCnt, + // pHalData->MCSTxPowerLevelOriginalOffset[pHalData->pwrGroupCnt][10])); + } + if(RegAddr == rTxAGC_B_Mcs07_Mcs04) + { + pHalData->MCSTxPowerLevelOriginalOffset[pHalData->pwrGroupCnt][11] = Data; + //RT_TRACE(COMP_INIT, DBG_TRACE, ("MCSTxPowerLevelOriginalOffset[%d][11] = 0x%lx\n", pHalData->pwrGroupCnt, + // pHalData->MCSTxPowerLevelOriginalOffset[pHalData->pwrGroupCnt][11])); + } + if(RegAddr == rTxAGC_B_Mcs11_Mcs08) + { + pHalData->MCSTxPowerLevelOriginalOffset[pHalData->pwrGroupCnt][12] = Data; + //RT_TRACE(COMP_INIT, DBG_TRACE, ("MCSTxPowerLevelOriginalOffset[%d][12] = 0x%lx\n", pHalData->pwrGroupCnt, + // pHalData->MCSTxPowerLevelOriginalOffset[pHalData->pwrGroupCnt][12])); + } + if(RegAddr == rTxAGC_B_Mcs15_Mcs12) + { + pHalData->MCSTxPowerLevelOriginalOffset[pHalData->pwrGroupCnt][13] = Data; + //RT_TRACE(COMP_INIT, DBG_TRACE, ("MCSTxPowerLevelOriginalOffset[%d][13] = 0x%lx\n", pHalData->pwrGroupCnt, + // pHalData->MCSTxPowerLevelOriginalOffset[pHalData->pwrGroupCnt][13])); + pHalData->pwrGroupCnt++; + } +} +/*----------------------------------------------------------------------------- + * Function: phy_ConfigBBWithPgParaFile + * + * Overview: + * + * Input: NONE + * + * Output: NONE + * + * Return: NONE + * + * Revised History: + * When Who Remark + * 11/06/2008 MHC Create Version 0. + * 2009/07/29 tynli (porting from 92SE branch)2009/03/11 Add copy parameter file to buffer for silent reset + *---------------------------------------------------------------------------*/ +static int +phy_ConfigBBWithPgParaFile( + IN PADAPTER Adapter, + IN u8* pFileName) +{ + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); + + int rtStatus = _SUCCESS; + + + return rtStatus; + +} /* phy_ConfigBBWithPgParaFile */ + + +/*----------------------------------------------------------------------------- + * Function: phy_ConfigBBWithPgHeaderFile + * + * Overview: Config PHY_REG_PG array + * + * Input: NONE + * + * Output: NONE + * + * Return: NONE + * + * Revised History: + * When Who Remark + * 11/06/2008 MHC Add later!!!!!!.. Please modify for new files!!!! + * 11/10/2008 tynli Modify to mew files. + *---------------------------------------------------------------------------*/ +static int +phy_ConfigBBWithPgHeaderFile( + IN PADAPTER Adapter, + IN u8 ConfigType) +{ + int i; + u32* Rtl819XPHY_REGArray_Table_PG; + u16 PHY_REGArrayPGLen; + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); + + // Default: pHalData->RF_Type = RF_2T2R. + PHY_REGArrayPGLen = PHY_REG_Array_PGLength; + Rtl819XPHY_REGArray_Table_PG = Rtl819XPHY_REG_Array_PG; + +#ifdef CONFIG_USB_HCI +// 2010/10/19 Chiyoko According to Alex/Willson opinion, VAU/dongle can share the same PHY_REG_PG.txt +/* + if(pHalData->BoardType == BOARD_MINICARD ) + { + PHY_REGArrayPGLen = PHY_REG_Array_PG_mCardLength; + Rtl819XPHY_REGArray_Table_PG = Rtl819XPHY_REG_Array_PG_mCard; + } + else */if(pHalData->BoardType ==BOARD_USB_High_PA ) + { + PHY_REGArrayPGLen = PHY_REG_Array_PG_HPLength; + Rtl819XPHY_REGArray_Table_PG = Rtl819XPHY_REG_Array_PG_HP; + } +#endif + + if(ConfigType == BaseBand_Config_PHY_REG) + { + for(i=0;iBufOfLines), + MAX_LINES_HWCONFIG_TXT, + MAX_BYTES_LINE_HWCONFIG_TXT, + &nLinesRead + ); + if(rtStatus == RT_STATUS_SUCCESS) + { + PlatformMoveMemory(pHalData->BufOfLines6, pHalData->BufOfLines, nLinesRead*MAX_BYTES_LINE_HWCONFIG_TXT); + pHalData->nLinesRead6 = nLinesRead; + } + else + { + // Temporarily skip PHY_REG_MP.txt if file does not exist. + pHalData->nLinesRead6 = 0; + RT_TRACE(COMP_INIT, DBG_LOUD, ("No matched file \r\n")); + return RT_STATUS_SUCCESS; + } + } + else + { + PlatformMoveMemory(pHalData->BufOfLines, pHalData->BufOfLines6, MAX_LINES_HWCONFIG_TXT*MAX_BYTES_LINE_HWCONFIG_TXT); + nLinesRead = pHalData->nLinesRead6; + rtStatus = RT_STATUS_SUCCESS; + } + + + if(rtStatus == RT_STATUS_SUCCESS) + { + RT_TRACE(COMP_INIT, DBG_LOUD, ("phy_ConfigBBWithMpParaFile(): read %s ok\n", pFileName)); + + for(ithLine = 0; ithLine < nLinesRead; ithLine++) + { + szLine = pHalData->BufOfLines[ithLine]; + + if(!IsCommentString(szLine)) + { + // Get 1st hex value as register offset. + if(GetHexValueFromString(szLine, &u4bRegOffset, &u4bMove)) + { + if(u4bRegOffset == 0xff) + { // Ending. + break; + } + else if (u4bRegOffset == 0xfe) + delay_ms(50); + else if (u4bRegOffset == 0xfd) + delay_ms(5); + else if (u4bRegOffset == 0xfc) + delay_ms(1); + else if (u4bRegOffset == 0xfb) + PlatformStallExecution(50); + else if (u4bRegOffset == 0xfa) + PlatformStallExecution(5); + else if (u4bRegOffset == 0xf9) + PlatformStallExecution(1); + + // Get 2nd hex value as register value. + szLine += u4bMove; + if(GetHexValueFromString(szLine, &u4bRegValue, &u4bMove)) + { + RT_TRACE(COMP_FPGA, DBG_TRACE, ("[ADDR]%03lX=%08lX\n", u4bRegOffset, u4bRegValue)); + PHY_SetBBReg(Adapter, u4bRegOffset, bMaskDWord, u4bRegValue); + + // Add 1us delay between BB/RF register setting. + PlatformStallExecution(1); + } + } + } + } + } + else + { + RT_TRACE(COMP_INIT, DBG_LOUD, ("phy_ConfigBBWithMpParaFile(): Failed%s\n", pFileName)); + } +#endif + + return rtStatus; +} + +/*----------------------------------------------------------------------------- + * Function: phy_ConfigBBWithMpHeaderFile + * + * Overview: Config PHY_REG_MP array + * + * Input: NONE + * + * Output: NONE + * + * Return: NONE + * + * Revised History: + * When Who Remark + * 02/04/2010 chiyokolin Modify to new files. + *---------------------------------------------------------------------------*/ +static int +phy_ConfigBBWithMpHeaderFile( + IN PADAPTER Adapter, + IN u1Byte ConfigType) +{ + int i; + u32* Rtl8192CPHY_REGArray_Table_MP; + u16 PHY_REGArrayMPLen; + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); + + PHY_REGArrayMPLen = PHY_REG_Array_MPLength; + Rtl8192CPHY_REGArray_Table_MP = Rtl819XPHY_REG_Array_MP; + + if(ConfigType == BaseBand_Config_PHY_REG) + { + for(i=0;iphy_BB8192S_Config_ParaFile\n")); + + if(IS_92C_SERIAL(pHalData->VersionID)){ + pszBBRegFile=(u8*)&sz92CBBRegFile ; + pszAGCTableFile =(u8*)&sz92CAGCTableFile; + } + else{ + pszBBRegFile=(u8*)&sz88CBBRegFile ; + pszAGCTableFile =(u8*)&sz88CAGCTableFile; + } + + // + // 1. Read PHY_REG.TXT BB INIT!! + // We will seperate as 88C / 92C according to chip version + // +#ifdef CONFIG_EMBEDDED_FWIMG + rtStatus = phy_ConfigBBWithHeaderFile(Adapter, BaseBand_Config_PHY_REG); +#else + // No matter what kind of CHIP we always read PHY_REG.txt. We must copy different + // type of parameter files to phy_reg.txt at first. + rtStatus = phy_ConfigBBWithParaFile(Adapter,pszBBRegFile); +#endif + + if(rtStatus != _SUCCESS){ + //RT_TRACE(COMP_INIT, DBG_SERIOUS, ("phy_BB8192S_Config_ParaFile():Write BB Reg Fail!!")); + goto phy_BB8190_Config_ParaFile_Fail; + } + +#if MP_DRIVER == 1 + // + // 1.1 Read PHY_REG_MP.TXT BB INIT!! + // We will seperate as 88C / 92C according to chip version + // +#ifdef CONFIG_EMBEDDED_FWIMG + rtStatus = phy_ConfigBBWithMpHeaderFile(Adapter, BaseBand_Config_PHY_REG); +#else + // No matter what kind of CHIP we always read PHY_REG.txt. We must copy different + // type of parameter files to phy_reg.txt at first. + rtStatus = phy_ConfigBBWithMpParaFile(Adapter, pszBBRegMpFile); +#endif + + if(rtStatus != _SUCCESS){ +// RT_TRACE(COMP_INIT, DBG_SERIOUS, ("phy_BB8192S_Config_ParaFile():Write BB Reg MP Fail!!")); + goto phy_BB8190_Config_ParaFile_Fail; + } +#endif // #if (MP_DRIVER == 1) + + // + // 20100318 Joseph: Config 2T2R to 1T2R if necessary. + // + if(pHalData->rf_type == RF_1T2R) + { + phy_BB8192C_Config_1T(Adapter); + DBG_8192C("phy_BB8192C_Config_ParaFile():Config to 1T!!\n"); + } + + // + // 2. If EEPROM or EFUSE autoload OK, We must config by PHY_REG_PG.txt + // + if (pEEPROM->bautoload_fail_flag == _FALSE) + { + pHalData->pwrGroupCnt = 0; + +#ifdef CONFIG_EMBEDDED_FWIMG + rtStatus = phy_ConfigBBWithPgHeaderFile(Adapter, BaseBand_Config_PHY_REG); +#else + rtStatus = phy_ConfigBBWithPgParaFile(Adapter, (u8*)&szBBRegPgFile); +#endif + } + + if(rtStatus != _SUCCESS){ + //RT_TRACE(COMP_INIT, DBG_SERIOUS, ("phy_BB8192S_Config_ParaFile():BB_PG Reg Fail!!")); + goto phy_BB8190_Config_ParaFile_Fail; + } + + // + // 3. BB AGC table Initialization + // +#ifdef CONFIG_EMBEDDED_FWIMG + rtStatus = phy_ConfigBBWithHeaderFile(Adapter, BaseBand_Config_AGC_TAB); +#else + //RT_TRACE(COMP_INIT, DBG_LOUD, ("phy_BB8192S_Config_ParaFile AGC_TAB.txt\n")); + rtStatus = phy_ConfigBBWithParaFile(Adapter, pszAGCTableFile); +#endif + + if(rtStatus != _SUCCESS){ + //RT_TRACE(COMP_FPGA, DBG_SERIOUS, ("phy_BB8192S_Config_ParaFile():AGC Table Fail\n")); + goto phy_BB8190_Config_ParaFile_Fail; + } + + // Check if the CCK HighPower is turned ON. + // This is used to calculate PWDB. + pHalData->bCckHighPower = (BOOLEAN)(PHY_QueryBBReg(Adapter, rFPGA0_XA_HSSIParameter2, 0x200)); + +phy_BB8190_Config_ParaFile_Fail: + + return rtStatus; +} + + +int +PHY_BBConfig8192C( + IN PADAPTER Adapter + ) +{ + int rtStatus = _SUCCESS; + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); + u32 RegVal; + u8 TmpU1B=0; + u8 value8; + + phy_InitBBRFRegisterDefinition(Adapter); + + if(IS_HARDWARE_TYPE_8723A(Adapter)) + { + // Suggested by Scott. tynli_test. 2010.12.30. + //1. 0x28[1] = 1 + TmpU1B = rtw_read8(Adapter, REG_AFE_PLL_CTRL); + rtw_udelay_os(2); + rtw_write8(Adapter, REG_AFE_PLL_CTRL, (TmpU1B|BIT1)); + rtw_udelay_os(2); + + //2. 0x29[7:0] = 0xFF + rtw_write8(Adapter, REG_AFE_PLL_CTRL+1, 0xff); + rtw_udelay_os(2); + + //3. 0x02[1:0] = 2b'11 + TmpU1B = rtw_read8(Adapter, REG_SYS_FUNC_EN); + rtw_write8(Adapter, REG_SYS_FUNC_EN, (TmpU1B|FEN_BB_GLB_RSTn|FEN_BBRSTB)); + + //undo clock gated + rtw_write32(Adapter, rFPGA0_XCD_RFParameter, rtw_read32(Adapter, rFPGA0_XCD_RFParameter)&(~BIT31)); + + //4. 0x25[6] = 0 + TmpU1B = rtw_read8(Adapter, REG_AFE_XTAL_CTRL+1); + rtw_write8(Adapter, REG_AFE_XTAL_CTRL+1, (TmpU1B&(~BIT6))); + + //5. 0x24[20] = 0 //Advised by SD3 Alex Wang. 2011.02.09. + TmpU1B = rtw_read8(Adapter, REG_AFE_XTAL_CTRL+2); + rtw_write8(Adapter, REG_AFE_XTAL_CTRL+2, (TmpU1B&(~BIT4))); + + //6. 0x1f[7:0] = 0x07 + rtw_write8(Adapter, REG_RF_CTRL, 0x07); + } + else + { + // Enable BB and RF + RegVal = rtw_read16(Adapter, REG_SYS_FUNC_EN); + rtw_write16(Adapter, REG_SYS_FUNC_EN, (u16)(RegVal|BIT13|BIT0|BIT1)); + + // 20090923 Joseph: Advised by Steven and Jenyu. Power sequence before init RF. + rtw_write8(Adapter, REG_AFE_PLL_CTRL, 0x83); + rtw_write8(Adapter, REG_AFE_PLL_CTRL+1, 0xdb); + + rtw_write8(Adapter, REG_RF_CTRL, RF_EN|RF_RSTB|RF_SDMRSTB); + +#ifdef CONFIG_USB_HCI + rtw_write8(Adapter, REG_SYS_FUNC_EN, FEN_USBA | FEN_USBD | FEN_BB_GLB_RSTn | FEN_BBRSTB); +#else + rtw_write8(Adapter, REG_SYS_FUNC_EN, FEN_PPLL|FEN_PCIEA|FEN_DIO_PCIE|FEN_BB_GLB_RSTn|FEN_BBRSTB); +#endif + + //undo clock gated + rtw_write32(Adapter, rFPGA0_XCD_RFParameter, rtw_read32(Adapter, rFPGA0_XCD_RFParameter)&(~BIT31)); + + // 2009/10/21 by SD1 Jong. Modified by tynli. Not in Documented in V8.1. +#ifdef CONFIG_USB_HCI + //To Fix MAC loopback mode fail. Suggested by SD4 Johnny. 2010.03.23. + rtw_write8(Adapter, REG_LDOHCI12_CTRL, 0x0f); + rtw_write8(Adapter, 0x15, 0xe9); +#endif + + rtw_write8(Adapter, REG_AFE_XTAL_CTRL+1, 0x80); + +#ifdef CONFIG_PCI_HCI + // Force use left antenna by default for 88C. + // if(!IS_92C_SERIAL(pHalData->VersionID) || IS_92C_1T2R(pHalData->VersionID)) + if(Adapter->ledpriv.LedStrategy != SW_LED_MODE10) + { + RegVal = rtw_read32(Adapter, REG_LEDCFG0); + rtw_write32(Adapter, REG_LEDCFG0, RegVal|BIT23); + } +#endif + } + + // + // Config BB and AGC + // + rtStatus = phy_BB8192C_Config_ParaFile(Adapter); +#if 0 + switch(Adapter->MgntInfo.bRegHwParaFile) + { + case 0: + phy_BB8190_Config_HardCode(Adapter); + break; + + case 1: + rtStatus = phy_BB8192C_Config_ParaFile(Adapter); + break; + + case 2: + // Partial Modify. + phy_BB8190_Config_HardCode(Adapter); + phy_BB8192C_Config_ParaFile(Adapter); + break; + + default: + phy_BB8190_Config_HardCode(Adapter); + break; + } +#endif +#ifdef CONFIG_USB_HCI + if(IS_HARDWARE_TYPE_8192CU(Adapter)&&IS_81xxC_VENDOR_UMC_B_CUT(pHalData->VersionID) + &&(pHalData->BoardType == BOARD_USB_High_PA)) + rtw_write8(Adapter, 0xc72, 0x50); +#endif + + return rtStatus; +} + + +int +PHY_RFConfig8192C( + IN PADAPTER Adapter + ) +{ + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); + int rtStatus = _SUCCESS; + + // + // RF config + // + rtStatus = PHY_RF6052_Config8192C(Adapter); +#if 0 + switch(pHalData->rf_chip) + { + case RF_6052: + rtStatus = PHY_RF6052_Config(Adapter); + break; + case RF_8225: + rtStatus = PHY_RF8225_Config(Adapter); + break; + case RF_8256: + rtStatus = PHY_RF8256_Config(Adapter); + break; + case RF_8258: + break; + case RF_PSEUDO_11N: + rtStatus = PHY_RF8225_Config(Adapter); + break; + default: //for MacOs Warning: "RF_TYPE_MIN" not handled in switch + break; + } +#endif + return rtStatus; +} + + +/*----------------------------------------------------------------------------- + * Function: PHY_ConfigRFWithParaFile() + * + * Overview: This function read RF parameters from general file format, and do RF 3-wire + * + * Input: PADAPTER Adapter + * ps1Byte pFileName + * RF_RADIO_PATH_E eRFPath + * + * Output: NONE + * + * Return: RT_STATUS_SUCCESS: configuration file exist + * + * Note: Delay may be required for RF configuration + *---------------------------------------------------------------------------*/ +int +rtl8192c_PHY_ConfigRFWithParaFile( + IN PADAPTER Adapter, + IN u8* pFileName, + RF_RADIO_PATH_E eRFPath +) +{ + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); + + int rtStatus = _SUCCESS; + + + return rtStatus; + +} + +//**************************************** +// The following is for High Power PA +//**************************************** +#define HighPowerRadioAArrayLen 22 +//This is for High power PA +u32 Rtl8192S_HighPower_RadioA_Array[HighPowerRadioAArrayLen] = { +0x013,0x00029ea4, +0x013,0x00025e74, +0x013,0x00020ea4, +0x013,0x0001ced0, +0x013,0x00019f40, +0x013,0x00014e70, +0x013,0x000106a0, +0x013,0x0000c670, +0x013,0x000082a0, +0x013,0x00004270, +0x013,0x00000240, +}; + +int +PHY_ConfigRFExternalPA( + IN PADAPTER Adapter, + RF_RADIO_PATH_E eRFPath +) +{ + int rtStatus = _SUCCESS; +#ifdef CONFIG_USB_HCI + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); + u16 i=0; + + if(!pHalData->ExternalPA) + { + return rtStatus; + } + + // 2010/10/19 MH According to Jenyu/EEChou 's opinion, we need not to execute the + // same code as SU. It is already updated in radio_a_1T_HP.txt. +#if 0 + //add for SU High Power PA + for(i = 0;iVersionID)) + { + RadioA_ArrayLen = RadioA_2TArrayLength; + Rtl819XRadioA_Array_Table = Rtl819XRadioA_2TArray; + RadioB_ArrayLen = RadioB_2TArrayLength; + Rtl819XRadioB_Array_Table = Rtl819XRadioB_2TArray; + } + else + { + RadioA_ArrayLen = RadioA_1TArrayLength; + Rtl819XRadioA_Array_Table = Rtl819XRadioA_1TArray; + RadioB_ArrayLen = RadioB_1TArrayLength; + Rtl819XRadioB_Array_Table = Rtl819XRadioB_1TArray; +#ifdef CONFIG_USB_HCI + if( BOARD_MINICARD == pHalData->BoardType ) + { + RadioA_ArrayLen = RadioA_1T_mCardArrayLength; + Rtl819XRadioA_Array_Table = Rtl819XRadioA_1T_mCardArray; + RadioB_ArrayLen = RadioB_1T_mCardArrayLength; + Rtl819XRadioB_Array_Table = Rtl819XRadioB_1T_mCardArray; + } + else if( BOARD_USB_High_PA == pHalData->BoardType ) + { + RadioA_ArrayLen = RadioA_1T_HPArrayLength; + Rtl819XRadioA_Array_Table = Rtl819XRadioA_1T_HPArray; + } +#endif + } + + switch(eRFPath){ + case RF_PATH_A: + #ifdef CONFIG_IOL_RF_RF90_PATH_A + if(rtw_IOL_applied(Adapter)) + { + struct xmit_frame *xmit_frame; + if((xmit_frame=rtw_IOL_accquire_xmit_frame(Adapter)) == NULL) { + rtStatus = _FAIL; + goto exit; + } + + for(i = 0;iPHYRegDef[eRFPath]; + u32 NewOffset = 0; + u32 DataAndAddr = 0; + + NewOffset = Rtl819XRadioA_Array_Table[i] & 0x3f; + DataAndAddr = ((NewOffset<<20) | (Rtl819XRadioA_Array_Table[i+1]&0x000fffff)) & 0x0fffffff; // T65 RF + rtw_IOL_append_WD_cmd(xmit_frame, pPhyReg->rf3wireOffset, DataAndAddr); + } + } + rtStatus = rtw_IOL_exec_cmds_sync(Adapter, xmit_frame, 1000); + } + else + #endif + { + for(i = 0;iPHYRegDef[eRFPath]; + u32 NewOffset = 0; + u32 DataAndAddr = 0; + + NewOffset = Rtl819XRadioB_Array_Table[i] & 0x3f; + DataAndAddr = ((NewOffset<<20) | (Rtl819XRadioB_Array_Table[i+1]&0x000fffff)) & 0x0fffffff; // T65 RF + rtw_IOL_append_WD_cmd(xmit_frame, pPhyReg->rf3wireOffset, DataAndAddr); + } + } + rtStatus = rtw_IOL_exec_cmds_sync(Adapter, xmit_frame, 1000); + } + else + #endif + { + for(i = 0;i actually we call PlatformStallExecution()) to do NdisStallExecution() + // [busy wait] instead of NdisMSleep(). So we acquire RT_INITIAL_SPINLOCK + // to run at Dispatch level to achive it. + //cosa PlatformAcquireSpinLock(Adapter, RT_INITIAL_SPINLOCK); + WriteData[i] &= 0xfff; + PHY_SetRFReg(Adapter, eRFPath, WriteAddr[HW90_BLOCK_RF], bRFRegOffsetMask, WriteData[i]); + // TODO: we should not delay for such a long time. Ask SD3 + rtw_mdelay_os(10); + ulRegRead = PHY_QueryRFReg(Adapter, eRFPath, WriteAddr[HW90_BLOCK_RF], bMaskDWord); + rtw_mdelay_os(10); + //cosa PlatformReleaseSpinLock(Adapter, RT_INITIAL_SPINLOCK); + break; + + default: + rtStatus = _FAIL; + break; + } + + + // + // Check whether readback data is correct + // + if(ulRegRead != WriteData[i]) + { + //RT_TRACE(COMP_FPGA, DBG_LOUD, ("ulRegRead: %lx, WriteData: %lx \n", ulRegRead, WriteData[i])); + rtStatus = _FAIL; + break; + } + } + + return rtStatus; +} + + +VOID +rtl8192c_PHY_GetHWRegOriginalValue( + IN PADAPTER Adapter + ) +{ + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); + + // read rx initial gain + pHalData->DefaultInitialGain[0] = (u8)PHY_QueryBBReg(Adapter, rOFDM0_XAAGCCore1, bMaskByte0); + pHalData->DefaultInitialGain[1] = (u8)PHY_QueryBBReg(Adapter, rOFDM0_XBAGCCore1, bMaskByte0); + pHalData->DefaultInitialGain[2] = (u8)PHY_QueryBBReg(Adapter, rOFDM0_XCAGCCore1, bMaskByte0); + pHalData->DefaultInitialGain[3] = (u8)PHY_QueryBBReg(Adapter, rOFDM0_XDAGCCore1, bMaskByte0); + //RT_TRACE(COMP_INIT, DBG_LOUD, + //("Default initial gain (c50=0x%x, c58=0x%x, c60=0x%x, c68=0x%x) \n", + //pHalData->DefaultInitialGain[0], pHalData->DefaultInitialGain[1], + //pHalData->DefaultInitialGain[2], pHalData->DefaultInitialGain[3])); + + // read framesync + pHalData->framesync = (u8)PHY_QueryBBReg(Adapter, rOFDM0_RxDetector3, bMaskByte0); + pHalData->framesyncC34 = PHY_QueryBBReg(Adapter, rOFDM0_RxDetector2, bMaskDWord); + //RT_TRACE(COMP_INIT, DBG_LOUD, ("Default framesync (0x%x) = 0x%x \n", + // rOFDM0_RxDetector3, pHalData->framesync)); +} + + +// +// Description: +// Map dBm into Tx power index according to +// current HW model, for example, RF and PA, and +// current wireless mode. +// By Bruce, 2008-01-29. +// +static u8 +phy_DbmToTxPwrIdx( + IN PADAPTER Adapter, + IN WIRELESS_MODE WirelessMode, + IN int PowerInDbm + ) +{ + u8 TxPwrIdx = 0; + int Offset = 0; + + + // + // Tested by MP, we found that CCK Index 0 equals to 8dbm, OFDM legacy equals to + // 3dbm, and OFDM HT equals to 0dbm repectively. + // Note: + // The mapping may be different by different NICs. Do not use this formula for what needs accurate result. + // By Bruce, 2008-01-29. + // + switch(WirelessMode) + { + case WIRELESS_MODE_B: + Offset = -7; + break; + + case WIRELESS_MODE_G: + case WIRELESS_MODE_N_24G: + Offset = -8; + break; + default: + Offset = -8; + break; + } + + if((PowerInDbm - Offset) > 0) + { + TxPwrIdx = (u8)((PowerInDbm - Offset) * 2); + } + else + { + TxPwrIdx = 0; + } + + // Tx Power Index is too large. + if(TxPwrIdx > MAX_TXPWR_IDX_NMODE_92S) + TxPwrIdx = MAX_TXPWR_IDX_NMODE_92S; + + return TxPwrIdx; +} + +// +// Description: +// Map Tx power index into dBm according to +// current HW model, for example, RF and PA, and +// current wireless mode. +// By Bruce, 2008-01-29. +// +int +phy_TxPwrIdxToDbm( + IN PADAPTER Adapter, + IN WIRELESS_MODE WirelessMode, + IN u8 TxPwrIdx + ) +{ + int Offset = 0; + int PwrOutDbm = 0; + + // + // Tested by MP, we found that CCK Index 0 equals to -7dbm, OFDM legacy equals to -8dbm. + // Note: + // The mapping may be different by different NICs. Do not use this formula for what needs accurate result. + // By Bruce, 2008-01-29. + // + switch(WirelessMode) + { + case WIRELESS_MODE_B: + Offset = -7; + break; + + case WIRELESS_MODE_G: + case WIRELESS_MODE_N_24G: + Offset = -8; + default: + Offset = -8; + break; + } + + PwrOutDbm = TxPwrIdx / 2 + Offset; // Discard the decimal part. + + return PwrOutDbm; +} + + +/*----------------------------------------------------------------------------- + * Function: GetTxPowerLevel8190() + * + * Overview: This function is export to "common" moudule + * + * Input: PADAPTER Adapter + * psByte Power Level + * + * Output: NONE + * + * Return: NONE + * + *---------------------------------------------------------------------------*/ +VOID +PHY_GetTxPowerLevel8192C( + IN PADAPTER Adapter, + OUT u32* powerlevel + ) +{ + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); + u8 TxPwrLevel = 0; + int TxPwrDbm; + + // + // Because the Tx power indexes are different, we report the maximum of them to + // meet the CCX TPC request. By Bruce, 2008-01-31. + // + + // CCK + TxPwrLevel = pHalData->CurrentCckTxPwrIdx; + TxPwrDbm = phy_TxPwrIdxToDbm(Adapter, WIRELESS_MODE_B, TxPwrLevel); + + // Legacy OFDM + TxPwrLevel = pHalData->CurrentOfdm24GTxPwrIdx + pHalData->LegacyHTTxPowerDiff; + + // Compare with Legacy OFDM Tx power. + if(phy_TxPwrIdxToDbm(Adapter, WIRELESS_MODE_G, TxPwrLevel) > TxPwrDbm) + TxPwrDbm = phy_TxPwrIdxToDbm(Adapter, WIRELESS_MODE_G, TxPwrLevel); + + // HT OFDM + TxPwrLevel = pHalData->CurrentOfdm24GTxPwrIdx; + + // Compare with HT OFDM Tx power. + if(phy_TxPwrIdxToDbm(Adapter, WIRELESS_MODE_N_24G, TxPwrLevel) > TxPwrDbm) + TxPwrDbm = phy_TxPwrIdxToDbm(Adapter, WIRELESS_MODE_N_24G, TxPwrLevel); + + *powerlevel = TxPwrDbm; +} + + +static void getTxPowerIndex( + IN PADAPTER Adapter, + IN u8 channel, + IN OUT u8* cckPowerLevel, + IN OUT u8* ofdmPowerLevel + ) +{ + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); + u8 index = (channel -1); + // 1. CCK + cckPowerLevel[RF_PATH_A] = pHalData->TxPwrLevelCck[RF_PATH_A][index]; //RF-A + cckPowerLevel[RF_PATH_B] = pHalData->TxPwrLevelCck[RF_PATH_B][index]; //RF-B + + // 2. OFDM for 1S or 2S + if (GET_RF_TYPE(Adapter) == RF_1T2R || GET_RF_TYPE(Adapter) == RF_1T1R) + { + // Read HT 40 OFDM TX power + ofdmPowerLevel[RF_PATH_A] = pHalData->TxPwrLevelHT40_1S[RF_PATH_A][index]; + ofdmPowerLevel[RF_PATH_B] = pHalData->TxPwrLevelHT40_1S[RF_PATH_B][index]; + } + else if (GET_RF_TYPE(Adapter) == RF_2T2R) + { + // Read HT 40 OFDM TX power + ofdmPowerLevel[RF_PATH_A] = pHalData->TxPwrLevelHT40_2S[RF_PATH_A][index]; + ofdmPowerLevel[RF_PATH_B] = pHalData->TxPwrLevelHT40_2S[RF_PATH_B][index]; + } + //RTPRINT(FPHY, PHY_TXPWR, ("Channel-%d, set tx power index !!\n", channel)); +} + +static void ccxPowerIndexCheck( + IN PADAPTER Adapter, + IN u8 channel, + IN OUT u8* cckPowerLevel, + IN OUT u8* ofdmPowerLevel + ) +{ +#if 0 + PMGNT_INFO pMgntInfo = &(Adapter->MgntInfo); + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); + PRT_CCX_INFO pCcxInfo = GET_CCX_INFO(pMgntInfo); + + // + // CCX 2 S31, AP control of client transmit power: + // 1. We shall not exceed Cell Power Limit as possible as we can. + // 2. Tolerance is +/- 5dB. + // 3. 802.11h Power Contraint takes higher precedence over CCX Cell Power Limit. + // + // TODO: + // 1. 802.11h power contraint + // + // 071011, by rcnjko. + // + if( pMgntInfo->OpMode == RT_OP_MODE_INFRASTRUCTURE && + pMgntInfo->mAssoc && + pCcxInfo->bUpdateCcxPwr && + pCcxInfo->bWithCcxCellPwr && + channel == pMgntInfo->dot11CurrentChannelNumber) + { + u1Byte CckCellPwrIdx = phy_DbmToTxPwrIdx(Adapter, WIRELESS_MODE_B, pCcxInfo->CcxCellPwr); + u1Byte LegacyOfdmCellPwrIdx = phy_DbmToTxPwrIdx(Adapter, WIRELESS_MODE_G, pCcxInfo->CcxCellPwr); + u1Byte OfdmCellPwrIdx = phy_DbmToTxPwrIdx(Adapter, WIRELESS_MODE_N_24G, pCcxInfo->CcxCellPwr); + + RT_TRACE(COMP_TXAGC, DBG_LOUD, + ("CCX Cell Limit: %d dbm => CCK Tx power index : %d, Legacy OFDM Tx power index : %d, OFDM Tx power index: %d\n", + pCcxInfo->CcxCellPwr, CckCellPwrIdx, LegacyOfdmCellPwrIdx, OfdmCellPwrIdx)); + RT_TRACE(COMP_TXAGC, DBG_LOUD, + ("EEPROM channel(%d) => CCK Tx power index: %d, Legacy OFDM Tx power index : %d, OFDM Tx power index: %d\n", + channel, cckPowerLevel[0], ofdmPowerLevel[0] + pHalData->LegacyHTTxPowerDiff, ofdmPowerLevel[0])); + + // CCK + if(cckPowerLevel[0] > CckCellPwrIdx) + cckPowerLevel[0] = CckCellPwrIdx; + // Legacy OFDM, HT OFDM + if(ofdmPowerLevel[0] + pHalData->LegacyHTTxPowerDiff > LegacyOfdmCellPwrIdx) + { + if((OfdmCellPwrIdx - pHalData->LegacyHTTxPowerDiff) > 0) + { + ofdmPowerLevel[0] = OfdmCellPwrIdx - pHalData->LegacyHTTxPowerDiff; + } + else + { + ofdmPowerLevel[0] = 0; + } + } + + RT_TRACE(COMP_TXAGC, DBG_LOUD, + ("Altered CCK Tx power index : %d, Legacy OFDM Tx power index: %d, OFDM Tx power index: %d\n", + cckPowerLevel[0], ofdmPowerLevel[0] + pHalData->LegacyHTTxPowerDiff, ofdmPowerLevel[0])); + } + + pHalData->CurrentCckTxPwrIdx = cckPowerLevel[0]; + pHalData->CurrentOfdm24GTxPwrIdx = ofdmPowerLevel[0]; + + RT_TRACE(COMP_TXAGC, DBG_LOUD, + ("PHY_SetTxPowerLevel8192S(): CCK Tx power index : %d, Legacy OFDM Tx power index: %d, OFDM Tx power index: %d\n", + cckPowerLevel[0], ofdmPowerLevel[0] + pHalData->LegacyHTTxPowerDiff, ofdmPowerLevel[0])); +#endif +} +/*----------------------------------------------------------------------------- + * Function: SetTxPowerLevel8190() + * + * Overview: This function is export to "HalCommon" moudule + * We must consider RF path later!!!!!!! + * + * Input: PADAPTER Adapter + * u1Byte channel + * + * Output: NONE + * + * Return: NONE + * 2008/11/04 MHC We remove EEPROM_93C56. + * We need to move CCX relative code to independet file. + * 2009/01/21 MHC Support new EEPROM format from SD3 requirement. + * + *---------------------------------------------------------------------------*/ +VOID +PHY_SetTxPowerLevel8192C( + IN PADAPTER Adapter, + IN u8 channel + ) +{ + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); + u8 cckPowerLevel[2], ofdmPowerLevel[2]; // [0]:RF-A, [1]:RF-B + +#if(MP_DRIVER == 1) + return; +#endif + + if(pHalData->bTXPowerDataReadFromEEPORM == _FALSE) + return; + + getTxPowerIndex(Adapter, channel, &cckPowerLevel[0], &ofdmPowerLevel[0]); + //RTPRINT(FPHY, PHY_TXPWR, ("Channel-%d, cckPowerLevel (A / B) = 0x%x / 0x%x, ofdmPowerLevel (A / B) = 0x%x / 0x%x\n", + // channel, cckPowerLevel[0], cckPowerLevel[1], ofdmPowerLevel[0], ofdmPowerLevel[1])); + + ccxPowerIndexCheck(Adapter, channel, &cckPowerLevel[0], &ofdmPowerLevel[0]); + + rtl8192c_PHY_RF6052SetCckTxPower(Adapter, &cckPowerLevel[0]); + rtl8192c_PHY_RF6052SetOFDMTxPower(Adapter, &ofdmPowerLevel[0], channel); + +#if 0 + switch(pHalData->rf_chip) + { + case RF_8225: + PHY_SetRF8225CckTxPower(Adapter, cckPowerLevel[0]); + PHY_SetRF8225OfdmTxPower(Adapter, ofdmPowerLevel[0]); + break; + + case RF_8256: + PHY_SetRF8256CCKTxPower(Adapter, cckPowerLevel[0]); + PHY_SetRF8256OFDMTxPower(Adapter, ofdmPowerLevel[0]); + break; + + case RF_6052: + PHY_RF6052SetCckTxPower(Adapter, &cckPowerLevel[0]); + PHY_RF6052SetOFDMTxPower(Adapter, &ofdmPowerLevel[0], channel); + break; + + case RF_8258: + break; + } +#endif + +} + + +// +// Description: +// Update transmit power level of all channel supported. +// +// TODO: +// A mode. +// By Bruce, 2008-02-04. +// +BOOLEAN +PHY_UpdateTxPowerDbm8192C( + IN PADAPTER Adapter, + IN int powerInDbm + ) +{ + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); + u8 idx; + u8 rf_path; + + // TODO: A mode Tx power. + u8 CckTxPwrIdx = phy_DbmToTxPwrIdx(Adapter, WIRELESS_MODE_B, powerInDbm); + u8 OfdmTxPwrIdx = phy_DbmToTxPwrIdx(Adapter, WIRELESS_MODE_N_24G, powerInDbm); + + if(OfdmTxPwrIdx - pHalData->LegacyHTTxPowerDiff > 0) + OfdmTxPwrIdx -= pHalData->LegacyHTTxPowerDiff; + else + OfdmTxPwrIdx = 0; + + //RT_TRACE(COMP_TXAGC, DBG_LOUD, ("PHY_UpdateTxPowerDbm8192S(): %ld dBm , CckTxPwrIdx = %d, OfdmTxPwrIdx = %d\n", powerInDbm, CckTxPwrIdx, OfdmTxPwrIdx)); + + for(idx = 0; idx < 14; idx++) + { + for (rf_path = 0; rf_path < 2; rf_path++) + { + pHalData->TxPwrLevelCck[rf_path][idx] = CckTxPwrIdx; + pHalData->TxPwrLevelHT40_1S[rf_path][idx] = + pHalData->TxPwrLevelHT40_2S[rf_path][idx] = OfdmTxPwrIdx; + } + } + + //Adapter->HalFunc.SetTxPowerLevelHandler(Adapter, pHalData->CurrentChannel);//gtest:todo + + return _TRUE; +} + + +/* + Description: + When beacon interval is changed, the values of the + hw registers should be modified. + By tynli, 2008.10.24. + +*/ + + +void +rtl8192c_PHY_SetBeaconHwReg( + IN PADAPTER Adapter, + IN u16 BeaconInterval + ) +{ + +} + + +VOID +PHY_ScanOperationBackup8192C( + IN PADAPTER Adapter, + IN u8 Operation + ) +{ +#if 0 + IO_TYPE IoType; + + if(!Adapter->bDriverStopped) + { + switch(Operation) + { + case SCAN_OPT_BACKUP: + IoType = IO_CMD_PAUSE_DM_BY_SCAN; + rtw_hal_set_hwreg(Adapter,HW_VAR_IO_CMD, (pu1Byte)&IoType); + + break; + + case SCAN_OPT_RESTORE: + IoType = IO_CMD_RESUME_DM_BY_SCAN; + rtw_hal_set_hwreg(Adapter,HW_VAR_IO_CMD, (pu1Byte)&IoType); + break; + + default: + RT_TRACE(COMP_SCAN, DBG_LOUD, ("Unknown Scan Backup Operation. \n")); + break; + } + } +#endif +} + +/*----------------------------------------------------------------------------- + * Function: PHY_SetBWModeCallback8192C() + * + * Overview: Timer callback function for SetSetBWMode + * + * Input: PRT_TIMER pTimer + * + * Output: NONE + * + * Return: NONE + * + * Note: (1) We do not take j mode into consideration now + * (2) Will two workitem of "switch channel" and "switch channel bandwidth" run + * concurrently? + *---------------------------------------------------------------------------*/ +static VOID +_PHY_SetBWMode92C( + IN PADAPTER Adapter +) +{ +// PADAPTER Adapter = (PADAPTER)pTimer->Adapter; + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); + u8 regBwOpMode; + u8 regRRSR_RSC; + + //return; + + // Added it for 20/40 mhz switch time evaluation by guangan 070531 + //u4Byte NowL, NowH; + //u8Byte BeginTime, EndTime; + + /*RT_TRACE(COMP_SCAN, DBG_LOUD, ("==>PHY_SetBWModeCallback8192C() Switch to %s bandwidth\n", \ + pHalData->CurrentChannelBW == HT_CHANNEL_WIDTH_20?"20MHz":"40MHz"))*/ + + if(pHalData->rf_chip == RF_PSEUDO_11N) + { + //pHalData->SetBWModeInProgress= _FALSE; + return; + } + + // There is no 40MHz mode in RF_8225. + if(pHalData->rf_chip==RF_8225) + return; + + if(Adapter->bDriverStopped) + return; + + // Added it for 20/40 mhz switch time evaluation by guangan 070531 + //NowL = PlatformEFIORead4Byte(Adapter, TSFR); + //NowH = PlatformEFIORead4Byte(Adapter, TSFR+4); + //BeginTime = ((u8Byte)NowH << 32) + NowL; + + //3// + //3//<1>Set MAC register + //3// + //Adapter->HalFunc.SetBWModeHandler(); + + regBwOpMode = rtw_read8(Adapter, REG_BWOPMODE); + regRRSR_RSC = rtw_read8(Adapter, REG_RRSR+2); + //regBwOpMode = rtw_hal_get_hwreg(Adapter,HW_VAR_BWMODE,(pu1Byte)®BwOpMode); + + switch(pHalData->CurrentChannelBW) + { + case HT_CHANNEL_WIDTH_20: + regBwOpMode |= BW_OPMODE_20MHZ; + // 2007/02/07 Mark by Emily becasue we have not verify whether this register works + rtw_write8(Adapter, REG_BWOPMODE, regBwOpMode); + break; + + case HT_CHANNEL_WIDTH_40: + regBwOpMode &= ~BW_OPMODE_20MHZ; + // 2007/02/07 Mark by Emily becasue we have not verify whether this register works + rtw_write8(Adapter, REG_BWOPMODE, regBwOpMode); + + regRRSR_RSC = (regRRSR_RSC&0x90) |(pHalData->nCur40MhzPrimeSC<<5); + rtw_write8(Adapter, REG_RRSR+2, regRRSR_RSC); + break; + + default: + /*RT_TRACE(COMP_DBG, DBG_LOUD, ("PHY_SetBWModeCallback8192C(): + unknown Bandwidth: %#X\n",pHalData->CurrentChannelBW));*/ + break; + } + + //3// + //3//<2>Set PHY related register + //3// + switch(pHalData->CurrentChannelBW) + { + /* 20 MHz channel*/ + case HT_CHANNEL_WIDTH_20: + PHY_SetBBReg(Adapter, rFPGA0_RFMOD, bRFMOD, 0x0); + PHY_SetBBReg(Adapter, rFPGA1_RFMOD, bRFMOD, 0x0); + PHY_SetBBReg(Adapter, rFPGA0_AnalogParameter2, BIT10, 1); + + break; + + + /* 40 MHz channel*/ + case HT_CHANNEL_WIDTH_40: + PHY_SetBBReg(Adapter, rFPGA0_RFMOD, bRFMOD, 0x1); + PHY_SetBBReg(Adapter, rFPGA1_RFMOD, bRFMOD, 0x1); + + // Set Control channel to upper or lower. These settings are required only for 40MHz + PHY_SetBBReg(Adapter, rCCK0_System, bCCKSideBand, (pHalData->nCur40MhzPrimeSC>>1)); + PHY_SetBBReg(Adapter, rOFDM1_LSTF, 0xC00, pHalData->nCur40MhzPrimeSC); + PHY_SetBBReg(Adapter, rFPGA0_AnalogParameter2, BIT10, 0); + + PHY_SetBBReg(Adapter, 0x818, (BIT26|BIT27), (pHalData->nCur40MhzPrimeSC==HAL_PRIME_CHNL_OFFSET_LOWER)?2:1); + + break; + + + + default: + /*RT_TRACE(COMP_DBG, DBG_LOUD, ("PHY_SetBWModeCallback8192C(): unknown Bandwidth: %#X\n"\ + ,pHalData->CurrentChannelBW));*/ + break; + + } + //Skip over setting of J-mode in BB register here. Default value is "None J mode". Emily 20070315 + + // Added it for 20/40 mhz switch time evaluation by guangan 070531 + //NowL = PlatformEFIORead4Byte(Adapter, TSFR); + //NowH = PlatformEFIORead4Byte(Adapter, TSFR+4); + //EndTime = ((u8Byte)NowH << 32) + NowL; + //RT_TRACE(COMP_SCAN, DBG_LOUD, ("SetBWModeCallback8190Pci: time of SetBWMode = %I64d us!\n", (EndTime - BeginTime))); + + //3<3>Set RF related register + switch(pHalData->rf_chip) + { + case RF_8225: + //PHY_SetRF8225Bandwidth(Adapter, pHalData->CurrentChannelBW); + break; + + case RF_8256: + // Please implement this function in Hal8190PciPhy8256.c + //PHY_SetRF8256Bandwidth(Adapter, pHalData->CurrentChannelBW); + break; + + case RF_8258: + // Please implement this function in Hal8190PciPhy8258.c + // PHY_SetRF8258Bandwidth(); + break; + + case RF_PSEUDO_11N: + // Do Nothing + break; + + case RF_6052: + rtl8192c_PHY_RF6052SetBandwidth(Adapter, pHalData->CurrentChannelBW); + break; + + default: + //RT_ASSERT(FALSE, ("Unknown RFChipID: %d\n", pHalData->RFChipID)); + break; + } + + //pHalData->SetBWModeInProgress= FALSE; + + //RT_TRACE(COMP_SCAN, DBG_LOUD, ("<==PHY_SetBWModeCallback8192C() \n" )); +} + + + /*----------------------------------------------------------------------------- + * Function: SetBWMode8190Pci() + * + * Overview: This function is export to "HalCommon" moudule + * + * Input: PADAPTER Adapter + * HT_CHANNEL_WIDTH Bandwidth //20M or 40M + * + * Output: NONE + * + * Return: NONE + * + * Note: We do not take j mode into consideration now + *---------------------------------------------------------------------------*/ +VOID +PHY_SetBWMode8192C( + IN PADAPTER Adapter, + IN HT_CHANNEL_WIDTH Bandwidth, // 20M or 40M + IN unsigned char Offset // Upper, Lower, or Don't care +) +{ + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); + HT_CHANNEL_WIDTH tmpBW= pHalData->CurrentChannelBW; + // Modified it for 20/40 mhz switch by guangan 070531 + //PMGNT_INFO pMgntInfo=&Adapter->MgntInfo; + + //return; + + //if(pHalData->SwChnlInProgress) +// if(pMgntInfo->bScanInProgress) +// { +// RT_TRACE(COMP_SCAN, DBG_LOUD, ("PHY_SetBWMode8192C() %s Exit because bScanInProgress!\n", +// Bandwidth == HT_CHANNEL_WIDTH_20?"20MHz":"40MHz")); +// return; +// } + +// if(pHalData->SetBWModeInProgress) +// { +// // Modified it for 20/40 mhz switch by guangan 070531 +// RT_TRACE(COMP_SCAN, DBG_LOUD, ("PHY_SetBWMode8192C() %s cancel last timer because SetBWModeInProgress!\n", +// Bandwidth == HT_CHANNEL_WIDTH_20?"20MHz":"40MHz")); +// PlatformCancelTimer(Adapter, &pHalData->SetBWModeTimer); +// //return; +// } + + //if(pHalData->SetBWModeInProgress) + // return; + + //pHalData->SetBWModeInProgress= TRUE; + + pHalData->CurrentChannelBW = Bandwidth; + +#if 0 + if(Offset==HT_EXTCHNL_OFFSET_LOWER) + pHalData->nCur40MhzPrimeSC = HAL_PRIME_CHNL_OFFSET_UPPER; + else if(Offset==HT_EXTCHNL_OFFSET_UPPER) + pHalData->nCur40MhzPrimeSC = HAL_PRIME_CHNL_OFFSET_LOWER; + else + pHalData->nCur40MhzPrimeSC = HAL_PRIME_CHNL_OFFSET_DONT_CARE; +#else + pHalData->nCur40MhzPrimeSC = Offset; +#endif + + if((!Adapter->bDriverStopped) && (!Adapter->bSurpriseRemoved)) + { +#ifdef USE_WORKITEM + //PlatformScheduleWorkItem(&(pHalData->SetBWModeWorkItem)); +#else + #if 0 + //PlatformSetTimer(Adapter, &(pHalData->SetBWModeTimer), 0); + #else + _PHY_SetBWMode92C(Adapter); + #endif +#endif + } + else + { + //RT_TRACE(COMP_SCAN, DBG_LOUD, ("PHY_SetBWMode8192C() SetBWModeInProgress FALSE driver sleep or unload\n")); + //pHalData->SetBWModeInProgress= FALSE; + pHalData->CurrentChannelBW = tmpBW; + } + +} + + +static void _PHY_SwChnl8192C(PADAPTER Adapter, u8 channel) +{ + u8 eRFPath; + u32 param1, param2; + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); + + if ( Adapter->bNotifyChannelChange ) + { + DBG_871X( "[%s] ch = %d\n", __FUNCTION__, channel ); + } + + //s1. pre common command - CmdID_SetTxPowerLevel + PHY_SetTxPowerLevel8192C(Adapter, channel); + + //s2. RF dependent command - CmdID_RF_WriteReg, param1=RF_CHNLBW, param2=channel + param1 = RF_CHNLBW; + param2 = channel; + for(eRFPath = 0; eRFPath NumTotalRFPath; eRFPath++) + { + pHalData->RfRegChnlVal[eRFPath] = ((pHalData->RfRegChnlVal[eRFPath] & 0xfffffc00) | param2); + PHY_SetRFReg(Adapter, (RF_RADIO_PATH_E)eRFPath, param1, bRFRegOffsetMask, pHalData->RfRegChnlVal[eRFPath]); + } + + + //s3. post common command - CmdID_End, None + +} + +VOID +PHY_SwChnl8192C( // Call after initialization + IN PADAPTER Adapter, + IN u8 channel + ) +{ + //PADAPTER Adapter = ADJUST_TO_ADAPTIVE_ADAPTER(pAdapter, _TRUE); + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); + u8 tmpchannel = pHalData->CurrentChannel; + BOOLEAN bResult = _TRUE; + + if(pHalData->rf_chip == RF_PSEUDO_11N) + { + //pHalData->SwChnlInProgress=FALSE; + return; //return immediately if it is peudo-phy + } + + //if(pHalData->SwChnlInProgress) + // return; + + //if(pHalData->SetBWModeInProgress) + // return; + + //-------------------------------------------- + switch(pHalData->CurrentWirelessMode) + { + case WIRELESS_MODE_A: + case WIRELESS_MODE_N_5G: + //RT_ASSERT((channel>14), ("WIRELESS_MODE_A but channel<=14")); + break; + + case WIRELESS_MODE_B: + //RT_ASSERT((channel<=14), ("WIRELESS_MODE_B but channel>14")); + break; + + case WIRELESS_MODE_G: + case WIRELESS_MODE_N_24G: + //RT_ASSERT((channel<=14), ("WIRELESS_MODE_G but channel>14")); + break; + + default: + //RT_ASSERT(FALSE, ("Invalid WirelessMode(%#x)!!\n", pHalData->CurrentWirelessMode)); + break; + } + //-------------------------------------------- + + //pHalData->SwChnlInProgress = TRUE; + if(channel == 0) + channel = 1; + + pHalData->CurrentChannel=channel; + + //pHalData->SwChnlStage=0; + //pHalData->SwChnlStep=0; + + if((!Adapter->bDriverStopped) && (!Adapter->bSurpriseRemoved)) + { +#ifdef USE_WORKITEM + //bResult = PlatformScheduleWorkItem(&(pHalData->SwChnlWorkItem)); +#else + #if 0 + //PlatformSetTimer(Adapter, &(pHalData->SwChnlTimer), 0); + #else + _PHY_SwChnl8192C(Adapter, channel); + #endif +#endif + if(bResult) + { + //RT_TRACE(COMP_SCAN, DBG_LOUD, ("PHY_SwChnl8192C SwChnlInProgress TRUE schdule workitem done\n")); + } + else + { + //RT_TRACE(COMP_SCAN, DBG_LOUD, ("PHY_SwChnl8192C SwChnlInProgress FALSE schdule workitem error\n")); + //if(IS_HARDWARE_TYPE_8192SU(Adapter)) + //{ + // pHalData->SwChnlInProgress = FALSE; + pHalData->CurrentChannel = tmpchannel; + //} + } + + } + else + { + //RT_TRACE(COMP_SCAN, DBG_LOUD, ("PHY_SwChnl8192C SwChnlInProgress FALSE driver sleep or unload\n")); + //if(IS_HARDWARE_TYPE_8192SU(Adapter)) + //{ + // pHalData->SwChnlInProgress = FALSE; + pHalData->CurrentChannel = tmpchannel; + //} + } +} + + +static BOOLEAN +phy_SwChnlStepByStep( + IN PADAPTER Adapter, + IN u8 channel, + IN u8 *stage, + IN u8 *step, + OUT u32 *delay + ) +{ +#if 0 + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); + PCHANNEL_ACCESS_SETTING pChnlAccessSetting; + SwChnlCmd PreCommonCmd[MAX_PRECMD_CNT]; + u4Byte PreCommonCmdCnt; + SwChnlCmd PostCommonCmd[MAX_POSTCMD_CNT]; + u4Byte PostCommonCmdCnt; + SwChnlCmd RfDependCmd[MAX_RFDEPENDCMD_CNT]; + u4Byte RfDependCmdCnt; + SwChnlCmd *CurrentCmd; + u1Byte eRFPath; + u4Byte RfTXPowerCtrl; + BOOLEAN bAdjRfTXPowerCtrl = _FALSE; + + + RT_ASSERT((Adapter != NULL), ("Adapter should not be NULL\n")); +#if(MP_DRIVER != 1) + RT_ASSERT(IsLegalChannel(Adapter, channel), ("illegal channel: %d\n", channel)); +#endif + RT_ASSERT((pHalData != NULL), ("pHalData should not be NULL\n")); + + pChnlAccessSetting = &Adapter->MgntInfo.Info8185.ChannelAccessSetting; + RT_ASSERT((pChnlAccessSetting != NULL), ("pChnlAccessSetting should not be NULL\n")); + + //for(eRFPath = RF_PATH_A; eRFPath NumTotalRFPath; eRFPath++) + //for(eRFPath = 0; eRFPath NumTotalRFPath; eRFPath++) + //{ + // <1> Fill up pre common command. + PreCommonCmdCnt = 0; + phy_SetSwChnlCmdArray(PreCommonCmd, PreCommonCmdCnt++, MAX_PRECMD_CNT, + CmdID_SetTxPowerLevel, 0, 0, 0); + phy_SetSwChnlCmdArray(PreCommonCmd, PreCommonCmdCnt++, MAX_PRECMD_CNT, + CmdID_End, 0, 0, 0); + + // <2> Fill up post common command. + PostCommonCmdCnt = 0; + + phy_SetSwChnlCmdArray(PostCommonCmd, PostCommonCmdCnt++, MAX_POSTCMD_CNT, + CmdID_End, 0, 0, 0); + + // <3> Fill up RF dependent command. + RfDependCmdCnt = 0; + switch( pHalData->RFChipID ) + { + case RF_8225: + RT_ASSERT((channel >= 1 && channel <= 14), ("illegal channel for Zebra: %d\n", channel)); + // 2008/09/04 MH Change channel. + if(channel==14) channel++; + phy_SetSwChnlCmdArray(RfDependCmd, RfDependCmdCnt++, MAX_RFDEPENDCMD_CNT, + CmdID_RF_WriteReg, rZebra1_Channel, (0x10+channel-1), 10); + phy_SetSwChnlCmdArray(RfDependCmd, RfDependCmdCnt++, MAX_RFDEPENDCMD_CNT, + CmdID_End, 0, 0, 0); + break; + + case RF_8256: + // TEST!! This is not the table for 8256!! + RT_ASSERT((channel >= 1 && channel <= 14), ("illegal channel for Zebra: %d\n", channel)); + phy_SetSwChnlCmdArray(RfDependCmd, RfDependCmdCnt++, MAX_RFDEPENDCMD_CNT, + CmdID_RF_WriteReg, rRfChannel, channel, 10); + phy_SetSwChnlCmdArray(RfDependCmd, RfDependCmdCnt++, MAX_RFDEPENDCMD_CNT, + CmdID_End, 0, 0, 0); + break; + + case RF_6052: + RT_ASSERT((channel >= 1 && channel <= 14), ("illegal channel for Zebra: %d\n", channel)); + phy_SetSwChnlCmdArray(RfDependCmd, RfDependCmdCnt++, MAX_RFDEPENDCMD_CNT, + CmdID_RF_WriteReg, RF_CHNLBW, channel, 10); + phy_SetSwChnlCmdArray(RfDependCmd, RfDependCmdCnt++, MAX_RFDEPENDCMD_CNT, + CmdID_End, 0, 0, 0); + + break; + + case RF_8258: + break; + + // For FPGA two MAC verification + case RF_PSEUDO_11N: + return TRUE; + default: + RT_ASSERT(FALSE, ("Unknown RFChipID: %d\n", pHalData->RFChipID)); + return FALSE; + break; + } + + + do{ + switch(*stage) + { + case 0: + CurrentCmd=&PreCommonCmd[*step]; + break; + case 1: + CurrentCmd=&RfDependCmd[*step]; + break; + case 2: + CurrentCmd=&PostCommonCmd[*step]; + break; + } + + if(CurrentCmd->CmdID==CmdID_End) + { + if((*stage)==2) + { + return TRUE; + } + else + { + (*stage)++; + (*step)=0; + continue; + } + } + + switch(CurrentCmd->CmdID) + { + case CmdID_SetTxPowerLevel: + PHY_SetTxPowerLevel8192C(Adapter,channel); + break; + case CmdID_WritePortUlong: + PlatformEFIOWrite4Byte(Adapter, CurrentCmd->Para1, CurrentCmd->Para2); + break; + case CmdID_WritePortUshort: + PlatformEFIOWrite2Byte(Adapter, CurrentCmd->Para1, (u2Byte)CurrentCmd->Para2); + break; + case CmdID_WritePortUchar: + PlatformEFIOWrite1Byte(Adapter, CurrentCmd->Para1, (u1Byte)CurrentCmd->Para2); + break; + case CmdID_RF_WriteReg: // Only modify channel for the register now !!!!! + for(eRFPath = 0; eRFPath NumTotalRFPath; eRFPath++) + { +#if 1 + pHalData->RfRegChnlVal[eRFPath] = ((pHalData->RfRegChnlVal[eRFPath] & 0xfffffc00) | CurrentCmd->Para2); + PHY_SetRFReg(Adapter, (RF_RADIO_PATH_E)eRFPath, CurrentCmd->Para1, bRFRegOffsetMask, pHalData->RfRegChnlVal[eRFPath]); +#else + PHY_SetRFReg(Adapter, (RF_RADIO_PATH_E)eRFPath, CurrentCmd->Para1, bRFRegOffsetMask, (CurrentCmd->Para2)); +#endif + } + break; + } + + break; + }while(TRUE); + //cosa }/*for(Number of RF paths)*/ + + (*delay)=CurrentCmd->msDelay; + (*step)++; + return FALSE; +#endif + return _TRUE; +} + + +static BOOLEAN +phy_SetSwChnlCmdArray( + SwChnlCmd* CmdTable, + u32 CmdTableIdx, + u32 CmdTableSz, + SwChnlCmdID CmdID, + u32 Para1, + u32 Para2, + u32 msDelay + ) +{ + SwChnlCmd* pCmd; + + if(CmdTable == NULL) + { + //RT_ASSERT(FALSE, ("phy_SetSwChnlCmdArray(): CmdTable cannot be NULL.\n")); + return _FALSE; + } + if(CmdTableIdx >= CmdTableSz) + { + //RT_ASSERT(FALSE, + // ("phy_SetSwChnlCmdArray(): Access invalid index, please check size of the table, CmdTableIdx:%ld, CmdTableSz:%ld\n", + // CmdTableIdx, CmdTableSz)); + return _FALSE; + } + + pCmd = CmdTable + CmdTableIdx; + pCmd->CmdID = CmdID; + pCmd->Para1 = Para1; + pCmd->Para2 = Para2; + pCmd->msDelay = msDelay; + + return _TRUE; +} + + +static void +phy_FinishSwChnlNow( // We should not call this function directly + IN PADAPTER Adapter, + IN u8 channel + ) +{ +#if 0 + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); + u32 delay; + + while(!phy_SwChnlStepByStep(Adapter,channel,&pHalData->SwChnlStage,&pHalData->SwChnlStep,&delay)) + { + if(delay>0) + rtw_mdelay_os(delay); + } +#endif +} + + + +// +// Description: +// Switch channel synchronously. Called by SwChnlByDelayHandler. +// +// Implemented by Bruce, 2008-02-14. +// The following procedure is operted according to SwChanlCallback8190Pci(). +// However, this procedure is performed synchronously which should be running under +// passive level. +// +VOID +PHY_SwChnlPhy8192C( // Only called during initialize + IN PADAPTER Adapter, + IN u8 channel + ) +{ + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); + + //RT_TRACE(COMP_SCAN | COMP_RM, DBG_LOUD, ("==>PHY_SwChnlPhy8192S(), switch from channel %d to channel %d.\n", pHalData->CurrentChannel, channel)); + + // Cannot IO. + //if(RT_CANNOT_IO(Adapter)) + // return; + + // Channel Switching is in progress. + //if(pHalData->SwChnlInProgress) + // return; + + //return immediately if it is peudo-phy + if(pHalData->rf_chip == RF_PSEUDO_11N) + { + //pHalData->SwChnlInProgress=FALSE; + return; + } + + //pHalData->SwChnlInProgress = TRUE; + if( channel == 0) + channel = 1; + + pHalData->CurrentChannel=channel; + + //pHalData->SwChnlStage = 0; + //pHalData->SwChnlStep = 0; + + phy_FinishSwChnlNow(Adapter,channel); + + //pHalData->SwChnlInProgress = FALSE; +} + + +// +// Description: +// Configure H/W functionality to enable/disable Monitor mode. +// Note, because we possibly need to configure BB and RF in this function, +// so caller should in PASSIVE_LEVEL. 080118, by rcnjko. +// +VOID +PHY_SetMonitorMode8192C( + IN PADAPTER pAdapter, + IN BOOLEAN bEnableMonitorMode + ) +{ +#if 0 + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(pAdapter); + BOOLEAN bFilterOutNonAssociatedBSSID = FALSE; + + //2 Note: we may need to stop antenna diversity. + if(bEnableMonitorMode) + { + bFilterOutNonAssociatedBSSID = FALSE; + RT_TRACE(COMP_RM, DBG_LOUD, ("PHY_SetMonitorMode8192S(): enable monitor mode\n")); + + pHalData->bInMonitorMode = TRUE; + pAdapter->HalFunc.AllowAllDestAddrHandler(pAdapter, TRUE, TRUE); + rtw_hal_set_hwreg(pAdapter, HW_VAR_CHECK_BSSID, (pu1Byte)&bFilterOutNonAssociatedBSSID); + } + else + { + bFilterOutNonAssociatedBSSID = TRUE; + RT_TRACE(COMP_RM, DBG_LOUD, ("PHY_SetMonitorMode8192S(): disable monitor mode\n")); + + pAdapter->HalFunc.AllowAllDestAddrHandler(pAdapter, FALSE, TRUE); + pHalData->bInMonitorMode = FALSE; + rtw_hal_set_hwreg(pAdapter, HW_VAR_CHECK_BSSID, (pu1Byte)&bFilterOutNonAssociatedBSSID); + } +#endif +} + + +/*----------------------------------------------------------------------------- + * Function: PHYCheckIsLegalRfPath8190Pci() + * + * Overview: Check different RF type to execute legal judgement. If RF Path is illegal + * We will return false. + * + * Input: NONE + * + * Output: NONE + * + * Return: NONE + * + * Revised History: + * When Who Remark + * 11/15/2007 MHC Create Version 0. + * + *---------------------------------------------------------------------------*/ +BOOLEAN +PHY_CheckIsLegalRfPath8192C( + IN PADAPTER pAdapter, + IN u32 eRFPath) +{ +// HAL_DATA_TYPE *pHalData = GET_HAL_DATA(pAdapter); + BOOLEAN rtValue = _TRUE; + + // NOt check RF Path now.! +#if 0 + if (pHalData->RF_Type == RF_1T2R && eRFPath != RF_PATH_A) + { + rtValue = FALSE; + } + if (pHalData->RF_Type == RF_1T2R && eRFPath != RF_PATH_A) + { + + } +#endif + return rtValue; + +} /* PHY_CheckIsLegalRfPath8192C */ + +//------------------------------------------------------------------------- +// +// IQK +// +//------------------------------------------------------------------------- +#define MAX_TOLERANCE 5 +#define IQK_DELAY_TIME 1 //ms + +static u8 //bit0 = 1 => Tx OK, bit1 = 1 => Rx OK +_PHY_PathA_IQK( + IN PADAPTER pAdapter, + IN BOOLEAN configPathB + ) +{ + u32 regEAC, regE94, regE9C, regEA4; + u8 result = 0x00; + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(pAdapter); + + //RTPRINT(FINIT, INIT_IQK, ("Path A IQK!\n")); + + //path-A IQK setting + //RTPRINT(FINIT, INIT_IQK, ("Path-A IQK setting!\n")); + PHY_SetBBReg(pAdapter, rTx_IQK_Tone_A, bMaskDWord, 0x10008c1f); + PHY_SetBBReg(pAdapter, rRx_IQK_Tone_A, bMaskDWord, 0x10008c1f); + PHY_SetBBReg(pAdapter, rTx_IQK_PI_A, bMaskDWord, 0x82140102); + + PHY_SetBBReg(pAdapter, rRx_IQK_PI_A, bMaskDWord, configPathB ? 0x28160202 : + IS_81xxC_VENDOR_UMC_B_CUT(pHalData->VersionID)?0x28160202:0x28160502); + + //path-B IQK setting + if(configPathB) + { + PHY_SetBBReg(pAdapter, rTx_IQK_Tone_B, bMaskDWord, 0x10008c22); + PHY_SetBBReg(pAdapter, rRx_IQK_Tone_B, bMaskDWord, 0x10008c22); + PHY_SetBBReg(pAdapter, rTx_IQK_PI_B, bMaskDWord, 0x82140102); + PHY_SetBBReg(pAdapter, rRx_IQK_PI_B, bMaskDWord, 0x28160202); + } + + //LO calibration setting + //RTPRINT(FINIT, INIT_IQK, ("LO calibration setting!\n")); + PHY_SetBBReg(pAdapter, rIQK_AGC_Rsp, bMaskDWord, 0x001028d1); + + //One shot, path A LOK & IQK + //RTPRINT(FINIT, INIT_IQK, ("One shot, path A LOK & IQK!\n")); + PHY_SetBBReg(pAdapter, rIQK_AGC_Pts, bMaskDWord, 0xf9000000); + PHY_SetBBReg(pAdapter, rIQK_AGC_Pts, bMaskDWord, 0xf8000000); + + // delay x ms + //RTPRINT(FINIT, INIT_IQK, ("Delay %d ms for One shot, path A LOK & IQK.\n", IQK_DELAY_TIME)); + rtw_udelay_os(IQK_DELAY_TIME*1000);//PlatformStallExecution(IQK_DELAY_TIME*1000); + + // Check failed + regEAC = PHY_QueryBBReg(pAdapter, rRx_Power_After_IQK_A_2, bMaskDWord); + //RTPRINT(FINIT, INIT_IQK, ("0xeac = 0x%x\n", regEAC)); + regE94 = PHY_QueryBBReg(pAdapter, rTx_Power_Before_IQK_A, bMaskDWord); + //RTPRINT(FINIT, INIT_IQK, ("0xe94 = 0x%x\n", regE94)); + regE9C= PHY_QueryBBReg(pAdapter, rTx_Power_After_IQK_A, bMaskDWord); + //RTPRINT(FINIT, INIT_IQK, ("0xe9c = 0x%x\n", regE9C)); + regEA4= PHY_QueryBBReg(pAdapter, rRx_Power_Before_IQK_A_2, bMaskDWord); + //RTPRINT(FINIT, INIT_IQK, ("0xea4 = 0x%x\n", regEA4)); + + if(!(regEAC & BIT28) && + (((regE94 & 0x03FF0000)>>16) != 0x142) && + (((regE9C & 0x03FF0000)>>16) != 0x42) ) + result |= 0x01; + else //if Tx not OK, ignore Rx + return result; + + if(!(regEAC & BIT27) && //if Tx is OK, check whether Rx is OK + (((regEA4 & 0x03FF0000)>>16) != 0x132) && + (((regEAC & 0x03FF0000)>>16) != 0x36)) + result |= 0x02; + else + DBG_8192C("Path A Rx IQK fail!!\n"); + + return result; + + +} + +static u8 //bit0 = 1 => Tx OK, bit1 = 1 => Rx OK +_PHY_PathB_IQK( + IN PADAPTER pAdapter + ) +{ + u32 regEAC, regEB4, regEBC, regEC4, regECC; + u8 result = 0x00; + //RTPRINT(FINIT, INIT_IQK, ("Path B IQK!\n")); + + //One shot, path B LOK & IQK + //RTPRINT(FINIT, INIT_IQK, ("One shot, path A LOK & IQK!\n")); + PHY_SetBBReg(pAdapter, rIQK_AGC_Cont, bMaskDWord, 0x00000002); + PHY_SetBBReg(pAdapter, rIQK_AGC_Cont, bMaskDWord, 0x00000000); + + // delay x ms + //RTPRINT(FINIT, INIT_IQK, ("Delay %d ms for One shot, path B LOK & IQK.\n", IQK_DELAY_TIME)); + rtw_udelay_os(IQK_DELAY_TIME*1000);//PlatformStallExecution(IQK_DELAY_TIME*1000); + + // Check failed + regEAC = PHY_QueryBBReg(pAdapter, rRx_Power_After_IQK_A_2, bMaskDWord); + //RTPRINT(FINIT, INIT_IQK, ("0xeac = 0x%x\n", regEAC)); + regEB4 = PHY_QueryBBReg(pAdapter, rTx_Power_Before_IQK_B, bMaskDWord); + //RTPRINT(FINIT, INIT_IQK, ("0xeb4 = 0x%x\n", regEB4)); + regEBC= PHY_QueryBBReg(pAdapter, rTx_Power_After_IQK_B, bMaskDWord); + //RTPRINT(FINIT, INIT_IQK, ("0xebc = 0x%x\n", regEBC)); + regEC4= PHY_QueryBBReg(pAdapter, rRx_Power_Before_IQK_B_2, bMaskDWord); + //RTPRINT(FINIT, INIT_IQK, ("0xec4 = 0x%x\n", regEC4)); + regECC= PHY_QueryBBReg(pAdapter, rRx_Power_After_IQK_B_2, bMaskDWord); + //RTPRINT(FINIT, INIT_IQK, ("0xecc = 0x%x\n", regECC)); + + if(!(regEAC & BIT31) && + (((regEB4 & 0x03FF0000)>>16) != 0x142) && + (((regEBC & 0x03FF0000)>>16) != 0x42)) + result |= 0x01; + else + return result; + + if(!(regEAC & BIT30) && + (((regEC4 & 0x03FF0000)>>16) != 0x132) && + (((regECC & 0x03FF0000)>>16) != 0x36)) + result |= 0x02; + else + DBG_8192C("Path B Rx IQK fail!!\n"); + + + return result; + +} + +static VOID +_PHY_PathAFillIQKMatrix( + IN PADAPTER pAdapter, + IN BOOLEAN bIQKOK, + IN int result[][8], + IN u8 final_candidate, + IN BOOLEAN bTxOnly + ) +{ + u32 Oldval_0, X, TX0_A, reg; + s32 Y, TX0_C; + + DBG_8192C("Path A IQ Calibration %s !\n",(bIQKOK)?"Success":"Failed"); + + if(final_candidate == 0xFF) + return; + else if(bIQKOK) + { + Oldval_0 = (PHY_QueryBBReg(pAdapter, rOFDM0_XATxIQImbalance, bMaskDWord) >> 22) & 0x3FF; + + X = result[final_candidate][0]; + if ((X & 0x00000200) != 0) + X = X | 0xFFFFFC00; + TX0_A = (X * Oldval_0) >> 8; + //RTPRINT(FINIT, INIT_IQK, ("X = 0x%lx, TX0_A = 0x%lx, Oldval_0 0x%lx\n", X, TX0_A, Oldval_0)); + PHY_SetBBReg(pAdapter, rOFDM0_XATxIQImbalance, 0x3FF, TX0_A); + PHY_SetBBReg(pAdapter, rOFDM0_ECCAThreshold, BIT(31), ((X* Oldval_0>>7) & 0x1)); + + Y = result[final_candidate][1]; + if ((Y & 0x00000200) != 0) + Y = Y | 0xFFFFFC00; + TX0_C = (Y * Oldval_0) >> 8; + //RTPRINT(FINIT, INIT_IQK, ("Y = 0x%lx, TX = 0x%lx\n", Y, TX0_C)); + PHY_SetBBReg(pAdapter, rOFDM0_XCTxAFE, 0xF0000000, ((TX0_C&0x3C0)>>6)); + PHY_SetBBReg(pAdapter, rOFDM0_XATxIQImbalance, 0x003F0000, (TX0_C&0x3F)); + PHY_SetBBReg(pAdapter, rOFDM0_ECCAThreshold, BIT(29), ((Y* Oldval_0>>7) & 0x1)); + + if(bTxOnly) + { + DBG_8192C("_PHY_PathAFillIQKMatrix only Tx OK\n"); + return; + } + + reg = result[final_candidate][2]; + PHY_SetBBReg(pAdapter, rOFDM0_XARxIQImbalance, 0x3FF, reg); + + reg = result[final_candidate][3] & 0x3F; + PHY_SetBBReg(pAdapter, rOFDM0_XARxIQImbalance, 0xFC00, reg); + + reg = (result[final_candidate][3] >> 6) & 0xF; + PHY_SetBBReg(pAdapter, rOFDM0_RxIQExtAnta, 0xF0000000, reg); + } +} + +static VOID +_PHY_PathBFillIQKMatrix( + IN PADAPTER pAdapter, + IN BOOLEAN bIQKOK, + IN int result[][8], + IN u8 final_candidate, + IN BOOLEAN bTxOnly //do Tx only + ) +{ + u32 Oldval_1, X, TX1_A, reg; + s32 Y, TX1_C; + + DBG_8192C("Path B IQ Calibration %s !\n",(bIQKOK)?"Success":"Failed"); + + if(final_candidate == 0xFF) + return; + else if(bIQKOK) + { + Oldval_1 = (PHY_QueryBBReg(pAdapter, rOFDM0_XBTxIQImbalance, bMaskDWord) >> 22) & 0x3FF; + + X = result[final_candidate][4]; + if ((X & 0x00000200) != 0) + X = X | 0xFFFFFC00; + TX1_A = (X * Oldval_1) >> 8; + //RTPRINT(FINIT, INIT_IQK, ("X = 0x%lx, TX1_A = 0x%lx\n", X, TX1_A)); + PHY_SetBBReg(pAdapter, rOFDM0_XBTxIQImbalance, 0x3FF, TX1_A); + PHY_SetBBReg(pAdapter, rOFDM0_ECCAThreshold, BIT(27), ((X* Oldval_1>>7) & 0x1)); + + Y = result[final_candidate][5]; + if ((Y & 0x00000200) != 0) + Y = Y | 0xFFFFFC00; + TX1_C = (Y * Oldval_1) >> 8; + //RTPRINT(FINIT, INIT_IQK, ("Y = 0x%lx, TX1_C = 0x%lx\n", Y, TX1_C)); + PHY_SetBBReg(pAdapter, rOFDM0_XDTxAFE, 0xF0000000, ((TX1_C&0x3C0)>>6)); + PHY_SetBBReg(pAdapter, rOFDM0_XBTxIQImbalance, 0x003F0000, (TX1_C&0x3F)); + PHY_SetBBReg(pAdapter, rOFDM0_ECCAThreshold, BIT(25), ((Y* Oldval_1>>7) & 0x1)); + + if(bTxOnly) + return; + + reg = result[final_candidate][6]; + PHY_SetBBReg(pAdapter, rOFDM0_XBRxIQImbalance, 0x3FF, reg); + + reg = result[final_candidate][7] & 0x3F; + PHY_SetBBReg(pAdapter, rOFDM0_XBRxIQImbalance, 0xFC00, reg); + + reg = (result[final_candidate][7] >> 6) & 0xF; + PHY_SetBBReg(pAdapter, rOFDM0_AGCRSSITable, 0x0000F000, reg); + } +} + +static VOID +_PHY_SaveADDARegisters( + IN PADAPTER pAdapter, + IN u32* ADDAReg, + IN u32* ADDABackup, + IN u32 RegisterNum + ) +{ + u32 i; + + //RTPRINT(FINIT, INIT_IQK, ("Save ADDA parameters.\n")); + for( i = 0 ; i < RegisterNum ; i++){ + ADDABackup[i] = PHY_QueryBBReg(pAdapter, ADDAReg[i], bMaskDWord); + } +} + +static VOID +_PHY_SaveMACRegisters( + IN PADAPTER pAdapter, + IN u32* MACReg, + IN u32* MACBackup + ) +{ + u32 i; + + //RTPRINT(FINIT, INIT_IQK, ("Save MAC parameters.\n")); + for( i = 0 ; i < (IQK_MAC_REG_NUM - 1); i++){ + MACBackup[i] =rtw_read8(pAdapter, MACReg[i]); + } + MACBackup[i] = rtw_read32(pAdapter, MACReg[i]); + +} + +static VOID +_PHY_ReloadADDARegisters( + IN PADAPTER pAdapter, + IN u32* ADDAReg, + IN u32* ADDABackup, + IN u32 RegiesterNum + ) +{ + u32 i; + + //RTPRINT(FINIT, INIT_IQK, ("Reload ADDA power saving parameters !\n")); + for(i = 0 ; i < RegiesterNum ; i++){ + PHY_SetBBReg(pAdapter, ADDAReg[i], bMaskDWord, ADDABackup[i]); + } +} + +static VOID +_PHY_ReloadMACRegisters( + IN PADAPTER pAdapter, + IN u32* MACReg, + IN u32* MACBackup + ) +{ + u32 i; + + //RTPRINT(FINIT, INIT_IQK, ("Reload MAC parameters !\n")); + for(i = 0 ; i < (IQK_MAC_REG_NUM - 1); i++){ + rtw_write8(pAdapter, MACReg[i], (u8)MACBackup[i]); + } + rtw_write32(pAdapter, MACReg[i], MACBackup[i]); +} + +static VOID +_PHY_PathADDAOn( + IN PADAPTER pAdapter, + IN u32* ADDAReg, + IN BOOLEAN isPathAOn, + IN BOOLEAN is2T + ) +{ + u32 pathOn; + u32 i; + + //RTPRINT(FINIT, INIT_IQK, ("ADDA ON.\n")); + + pathOn = isPathAOn ? 0x04db25a4 : 0x0b1b25a4; + if(_FALSE == is2T){ + pathOn = 0x0bdb25a0; + PHY_SetBBReg(pAdapter, ADDAReg[0], bMaskDWord, 0x0b1b25a0); + } + else{ + PHY_SetBBReg(pAdapter, ADDAReg[0], bMaskDWord, pathOn); + } + + for( i = 1 ; i < IQK_ADDA_REG_NUM ; i++){ + PHY_SetBBReg(pAdapter, ADDAReg[i], bMaskDWord, pathOn); + } + +} + +static VOID +_PHY_MACSettingCalibration( + IN PADAPTER pAdapter, + IN u32* MACReg, + IN u32* MACBackup + ) +{ + u32 i = 0; + + //RTPRINT(FINIT, INIT_IQK, ("MAC settings for Calibration.\n")); + + rtw_write8(pAdapter, MACReg[i], 0x3F); + + for(i = 1 ; i < (IQK_MAC_REG_NUM - 1); i++){ + rtw_write8(pAdapter, MACReg[i], (u8)(MACBackup[i]&(~BIT3))); + } + rtw_write8(pAdapter, MACReg[i], (u8)(MACBackup[i]&(~BIT5))); + +} + +static VOID +_PHY_PathAStandBy( + IN PADAPTER pAdapter + ) +{ + //RTPRINT(FINIT, INIT_IQK, ("Path-A standby mode!\n")); + + PHY_SetBBReg(pAdapter, rFPGA0_IQK, bMaskDWord, 0x0); + PHY_SetBBReg(pAdapter, 0x840, bMaskDWord, 0x00010000); + PHY_SetBBReg(pAdapter, rFPGA0_IQK, bMaskDWord, 0x80800000); +} + +static VOID +_PHY_PIModeSwitch( + IN PADAPTER pAdapter, + IN BOOLEAN PIMode + ) +{ + u32 mode; + + //RTPRINT(FINIT, INIT_IQK, ("BB Switch to %s mode!\n", (PIMode ? "PI" : "SI"))); + + mode = PIMode ? 0x01000100 : 0x01000000; + PHY_SetBBReg(pAdapter, 0x820, bMaskDWord, mode); + PHY_SetBBReg(pAdapter, 0x828, bMaskDWord, mode); +} + +/* +return _FALSE => do IQK again +*/ +static BOOLEAN +_PHY_SimularityCompare( + IN PADAPTER pAdapter, + IN int result[][8], + IN u8 c1, + IN u8 c2 + ) +{ + u32 i, j, diff, SimularityBitMap, bound = 0; + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(pAdapter); + u8 final_candidate[2] = {0xFF, 0xFF}; //for path A and path B + BOOLEAN bResult = _TRUE, is2T = IS_92C_SERIAL( pHalData->VersionID); + + if(is2T) + bound = 8; + else + bound = 4; + + SimularityBitMap = 0; + + for( i = 0; i < bound; i++ ) + { + diff = (result[c1][i] > result[c2][i]) ? (result[c1][i] - result[c2][i]) : (result[c2][i] - result[c1][i]); + if (diff > MAX_TOLERANCE) + { + if((i == 2 || i == 6) && !SimularityBitMap) + { + if(result[c1][i]+result[c1][i+1] == 0) + final_candidate[(i/4)] = c2; + else if (result[c2][i]+result[c2][i+1] == 0) + final_candidate[(i/4)] = c1; + else + SimularityBitMap = SimularityBitMap|(1<dmpriv; + u32 i; + u8 PathAOK, PathBOK; + u32 ADDA_REG[IQK_ADDA_REG_NUM] = { + rFPGA0_XCD_SwitchControl, rBlue_Tooth, + rRx_Wait_CCA, rTx_CCK_RFON, + rTx_CCK_BBON, rTx_OFDM_RFON, + rTx_OFDM_BBON, rTx_To_Rx, + rTx_To_Tx, rRx_CCK, + rRx_OFDM, rRx_Wait_RIFS, + rRx_TO_Rx, rStandby, + rSleep, rPMPD_ANAEN }; + + u32 IQK_MAC_REG[IQK_MAC_REG_NUM] = { + REG_TXPAUSE, REG_BCN_CTRL, + REG_BCN_CTRL_1, REG_GPIO_MUXCFG}; + + u32 IQK_BB_REG_92C[IQK_BB_REG_NUM] = { + rOFDM0_TRxPathEnable, rOFDM0_TRMuxPar, + rFPGA0_XCD_RFInterfaceSW, rConfig_AntA, rConfig_AntB, + rFPGA0_XAB_RFInterfaceSW, rFPGA0_XA_RFInterfaceOE, + rFPGA0_XB_RFInterfaceOE, rFPGA0_RFMOD + }; + +#if MP_DRIVER + const u32 retryCount = 9; +#else + const u32 retryCount = 2; +#endif + + // Note: IQ calibration must be performed after loading + // PHY_REG.txt , and radio_a, radio_b.txt + + u32 bbvalue; + + if(t==0) + { + bbvalue = PHY_QueryBBReg(pAdapter, rFPGA0_RFMOD, bMaskDWord); + //RTPRINT(FINIT, INIT_IQK, ("PHY_IQCalibrate()==>0x%08lx\n",bbvalue)); + + //RTPRINT(FINIT, INIT_IQK, ("IQ Calibration for %s\n", (is2T ? "2T2R" : "1T1R"))); + + // Save ADDA parameters, turn Path A ADDA on + _PHY_SaveADDARegisters(pAdapter, ADDA_REG, pdmpriv->ADDA_backup,IQK_ADDA_REG_NUM); + _PHY_SaveMACRegisters(pAdapter, IQK_MAC_REG, pdmpriv->IQK_MAC_backup); + _PHY_SaveADDARegisters(pAdapter, IQK_BB_REG_92C, pdmpriv->IQK_BB_backup, IQK_BB_REG_NUM); + } + _PHY_PathADDAOn(pAdapter, ADDA_REG, _TRUE, is2T); + + if(t==0) + { + pdmpriv->bRfPiEnable = (u8)PHY_QueryBBReg(pAdapter, rFPGA0_XA_HSSIParameter1, BIT(8)); + } + + if(!pdmpriv->bRfPiEnable){ + // Switch BB to PI mode to do IQ Calibration. + _PHY_PIModeSwitch(pAdapter, _TRUE); + } + + PHY_SetBBReg(pAdapter, rFPGA0_RFMOD, BIT24, 0x00); + PHY_SetBBReg(pAdapter, rOFDM0_TRxPathEnable, bMaskDWord, 0x03a05600); + PHY_SetBBReg(pAdapter, rOFDM0_TRMuxPar, bMaskDWord, 0x000800e4); + PHY_SetBBReg(pAdapter, rFPGA0_XCD_RFInterfaceSW, bMaskDWord, 0x22204000); + PHY_SetBBReg(pAdapter, rFPGA0_XAB_RFInterfaceSW, BIT10, 0x01); + PHY_SetBBReg(pAdapter, rFPGA0_XAB_RFInterfaceSW, BIT26, 0x01); + PHY_SetBBReg(pAdapter, rFPGA0_XA_RFInterfaceOE, BIT10, 0x00); + PHY_SetBBReg(pAdapter, rFPGA0_XB_RFInterfaceOE, BIT10, 0x00); + + if(is2T) + { + PHY_SetBBReg(pAdapter, rFPGA0_XA_LSSIParameter, bMaskDWord, 0x00010000); + PHY_SetBBReg(pAdapter, rFPGA0_XB_LSSIParameter, bMaskDWord, 0x00010000); + } + + //MAC settings + _PHY_MACSettingCalibration(pAdapter, IQK_MAC_REG, pdmpriv->IQK_MAC_backup); + + //Page B init + PHY_SetBBReg(pAdapter, rConfig_AntA, bMaskDWord, 0x00080000); + + if(is2T) + { + PHY_SetBBReg(pAdapter, rConfig_AntB, bMaskDWord, 0x00080000); + } + + // IQ calibration setting + //RTPRINT(FINIT, INIT_IQK, ("IQK setting!\n")); + PHY_SetBBReg(pAdapter, rFPGA0_IQK, bMaskDWord, 0x80800000); + PHY_SetBBReg(pAdapter, rTx_IQK, bMaskDWord, 0x01007c00); + PHY_SetBBReg(pAdapter, rRx_IQK, bMaskDWord, 0x01004800); + + for(i = 0 ; i < retryCount ; i++){ + PathAOK = _PHY_PathA_IQK(pAdapter, is2T); + if(PathAOK == 0x03){ + DBG_8192C("Path A IQK Success!!\n"); + result[t][0] = (PHY_QueryBBReg(pAdapter, rTx_Power_Before_IQK_A, bMaskDWord)&0x3FF0000)>>16; + result[t][1] = (PHY_QueryBBReg(pAdapter, rTx_Power_After_IQK_A, bMaskDWord)&0x3FF0000)>>16; + result[t][2] = (PHY_QueryBBReg(pAdapter, rRx_Power_Before_IQK_A_2, bMaskDWord)&0x3FF0000)>>16; + result[t][3] = (PHY_QueryBBReg(pAdapter, rRx_Power_After_IQK_A_2, bMaskDWord)&0x3FF0000)>>16; + break; + } + else if (i == (retryCount-1) && PathAOK == 0x01) //Tx IQK OK + { + DBG_8192C("Path A IQK Only Tx Success!!\n"); + + result[t][0] = (PHY_QueryBBReg(pAdapter, rTx_Power_Before_IQK_A, bMaskDWord)&0x3FF0000)>>16; + result[t][1] = (PHY_QueryBBReg(pAdapter, rTx_Power_After_IQK_A, bMaskDWord)&0x3FF0000)>>16; + } + } + + if(0x00 == PathAOK){ + DBG_8192C("Path A IQK failed!!\n"); + } + + if(is2T){ + _PHY_PathAStandBy(pAdapter); + + // Turn Path B ADDA on + _PHY_PathADDAOn(pAdapter, ADDA_REG, _FALSE, is2T); + + for(i = 0 ; i < retryCount ; i++){ + PathBOK = _PHY_PathB_IQK(pAdapter); + if(PathBOK == 0x03){ + DBG_8192C("Path B IQK Success!!\n"); + result[t][4] = (PHY_QueryBBReg(pAdapter, rTx_Power_Before_IQK_B, bMaskDWord)&0x3FF0000)>>16; + result[t][5] = (PHY_QueryBBReg(pAdapter, rTx_Power_After_IQK_B, bMaskDWord)&0x3FF0000)>>16; + result[t][6] = (PHY_QueryBBReg(pAdapter, rRx_Power_Before_IQK_B_2, bMaskDWord)&0x3FF0000)>>16; + result[t][7] = (PHY_QueryBBReg(pAdapter, rRx_Power_After_IQK_B_2, bMaskDWord)&0x3FF0000)>>16; + break; + } + else if (i == (retryCount - 1) && PathBOK == 0x01) //Tx IQK OK + { + DBG_8192C("Path B Only Tx IQK Success!!\n"); + result[t][4] = (PHY_QueryBBReg(pAdapter, rTx_Power_Before_IQK_B, bMaskDWord)&0x3FF0000)>>16; + result[t][5] = (PHY_QueryBBReg(pAdapter, rTx_Power_After_IQK_B, bMaskDWord)&0x3FF0000)>>16; + } + } + + if(0x00 == PathBOK){ + DBG_8192C("Path B IQK failed!!\n"); + } + } + + //Back to BB mode, load original value + //RTPRINT(FINIT, INIT_IQK, ("IQK:Back to BB mode, load original value!\n")); + PHY_SetBBReg(pAdapter, rFPGA0_IQK, bMaskDWord, 0); + + if(t!=0) + { + if(!pdmpriv->bRfPiEnable){ + // Switch back BB to SI mode after finish IQ Calibration. + _PHY_PIModeSwitch(pAdapter, _FALSE); + } + + // Reload ADDA power saving parameters + _PHY_ReloadADDARegisters(pAdapter, ADDA_REG, pdmpriv->ADDA_backup, IQK_ADDA_REG_NUM); + + // Reload MAC parameters + _PHY_ReloadMACRegisters(pAdapter, IQK_MAC_REG, pdmpriv->IQK_MAC_backup); + + // Reload BB parameters + _PHY_ReloadADDARegisters(pAdapter, IQK_BB_REG_92C, pdmpriv->IQK_BB_backup, IQK_BB_REG_NUM); + + // Restore RX initial gain + PHY_SetBBReg(pAdapter, rFPGA0_XA_LSSIParameter, bMaskDWord, 0x00032ed3); + if(is2T){ + PHY_SetBBReg(pAdapter, rFPGA0_XB_LSSIParameter, bMaskDWord, 0x00032ed3); + } + + //load 0xe30 IQC default value + PHY_SetBBReg(pAdapter, rTx_IQK_Tone_A, bMaskDWord, 0x01008c00); + PHY_SetBBReg(pAdapter, rRx_IQK_Tone_A, bMaskDWord, 0x01008c00); + + } + //RTPRINT(FINIT, INIT_IQK, ("_PHY_IQCalibrate() <==\n")); + +} + + +static VOID +_PHY_LCCalibrate( + IN PADAPTER pAdapter, + IN BOOLEAN is2T + ) +{ + u8 tmpReg; + u32 RF_Amode = 0, RF_Bmode = 0, LC_Cal; + + //Check continuous TX and Packet TX + tmpReg = rtw_read8(pAdapter, 0xd03); + + if((tmpReg&0x70) != 0) //Deal with contisuous TX case + rtw_write8(pAdapter, 0xd03, tmpReg&0x8F); //disable all continuous TX + else // Deal with Packet TX case + rtw_write8(pAdapter, REG_TXPAUSE, 0xFF); // block all queues + + if((tmpReg&0x70) != 0) + { + //1. Read original RF mode + //Path-A + RF_Amode = PHY_QueryRFReg(pAdapter, RF_PATH_A, RF_AC, bMask12Bits); + + //Path-B + if(is2T) + RF_Bmode = PHY_QueryRFReg(pAdapter, RF_PATH_B, RF_AC, bMask12Bits); + + //2. Set RF mode = standby mode + //Path-A + PHY_SetRFReg(pAdapter, RF_PATH_A, RF_AC, bMask12Bits, (RF_Amode&0x8FFFF)|0x10000); + + //Path-B + if(is2T) + PHY_SetRFReg(pAdapter, RF_PATH_B, RF_AC, bMask12Bits, (RF_Bmode&0x8FFFF)|0x10000); + } + + //3. Read RF reg18 + LC_Cal = PHY_QueryRFReg(pAdapter, RF_PATH_A, RF_CHNLBW, bMask12Bits); + + //4. Set LC calibration begin + PHY_SetRFReg(pAdapter, RF_PATH_A, RF_CHNLBW, bMask12Bits, LC_Cal|0x08000); + + #ifdef CONFIG_LONG_DELAY_ISSUE + rtw_msleep_os(100); + #else + rtw_mdelay_os(100); + #endif + + //Restore original situation + if((tmpReg&0x70) != 0) //Deal with contisuous TX case + { + //Path-A + rtw_write8(pAdapter, 0xd03, tmpReg); + PHY_SetRFReg(pAdapter, RF_PATH_A, RF_AC, bMask12Bits, RF_Amode); + + //Path-B + if(is2T) + PHY_SetRFReg(pAdapter, RF_PATH_B, RF_AC, bMask12Bits, RF_Bmode); + } + else // Deal with Packet TX case + { + rtw_write8(pAdapter, REG_TXPAUSE, 0x00); + } + +} + + +//Analog Pre-distortion calibration +#define APK_BB_REG_NUM 8 +#define APK_CURVE_REG_NUM 4 +#define PATH_NUM 2 + +static VOID +_PHY_APCalibrate( + IN PADAPTER pAdapter, + IN char delta, + IN BOOLEAN is2T + ) +{ + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(pAdapter); + struct dm_priv *pdmpriv = &pHalData->dmpriv; + + u32 regD[PATH_NUM]; + u32 tmpReg, index, offset, i, apkbound; + u8 path, pathbound = PATH_NUM; + u32 BB_backup[APK_BB_REG_NUM]; + u32 BB_REG[APK_BB_REG_NUM] = { + rFPGA1_TxBlock, rOFDM0_TRxPathEnable, + rFPGA0_RFMOD, rOFDM0_TRMuxPar, + rFPGA0_XCD_RFInterfaceSW, rFPGA0_XAB_RFInterfaceSW, + rFPGA0_XA_RFInterfaceOE, rFPGA0_XB_RFInterfaceOE }; + u32 BB_AP_MODE[APK_BB_REG_NUM] = { + 0x00000020, 0x00a05430, 0x02040000, + 0x000800e4, 0x00204000 }; + u32 BB_normal_AP_MODE[APK_BB_REG_NUM] = { + 0x00000020, 0x00a05430, 0x02040000, + 0x000800e4, 0x22204000 }; + + u32 AFE_backup[IQK_ADDA_REG_NUM]; + u32 AFE_REG[IQK_ADDA_REG_NUM] = { + rFPGA0_XCD_SwitchControl, rBlue_Tooth, + rRx_Wait_CCA, rTx_CCK_RFON, + rTx_CCK_BBON, rTx_OFDM_RFON, + rTx_OFDM_BBON, rTx_To_Rx, + rTx_To_Tx, rRx_CCK, + rRx_OFDM, rRx_Wait_RIFS, + rRx_TO_Rx, rStandby, + rSleep, rPMPD_ANAEN }; + + u32 MAC_backup[IQK_MAC_REG_NUM]; + u32 MAC_REG[IQK_MAC_REG_NUM] = { + REG_TXPAUSE, REG_BCN_CTRL, + REG_BCN_CTRL_1, REG_GPIO_MUXCFG}; + + u32 APK_RF_init_value[PATH_NUM][APK_BB_REG_NUM] = { + {0x0852c, 0x1852c, 0x5852c, 0x1852c, 0x5852c}, + {0x2852e, 0x0852e, 0x3852e, 0x0852e, 0x0852e} + }; + + u32 APK_normal_RF_init_value[PATH_NUM][APK_BB_REG_NUM] = { + {0x0852c, 0x0a52c, 0x3a52c, 0x5a52c, 0x5a52c}, //path settings equal to path b settings + {0x0852c, 0x0a52c, 0x5a52c, 0x5a52c, 0x5a52c} + }; + + u32 APK_RF_value_0[PATH_NUM][APK_BB_REG_NUM] = { + {0x52019, 0x52014, 0x52013, 0x5200f, 0x5208d}, + {0x5201a, 0x52019, 0x52016, 0x52033, 0x52050} + }; + + u32 APK_normal_RF_value_0[PATH_NUM][APK_BB_REG_NUM] = { + {0x52019, 0x52017, 0x52010, 0x5200d, 0x5206a}, //path settings equal to path b settings + {0x52019, 0x52017, 0x52010, 0x5200d, 0x5206a} + }; +#if 0 + u32 APK_RF_value_A[PATH_NUM][APK_BB_REG_NUM] = { + {0x1adb0, 0x1adb0, 0x1ada0, 0x1ad90, 0x1ad80}, + {0x00fb0, 0x00fb0, 0x00fa0, 0x00f90, 0x00f80} + }; +#endif + u32 AFE_on_off[PATH_NUM] = { + 0x04db25a4, 0x0b1b25a4}; //path A on path B off / path A off path B on + + u32 APK_offset[PATH_NUM] = { + rConfig_AntA, rConfig_AntB}; + + u32 APK_normal_offset[PATH_NUM] = { + rConfig_Pmpd_AntA, rConfig_Pmpd_AntB}; + + u32 APK_value[PATH_NUM] = { + 0x92fc0000, 0x12fc0000}; + + u32 APK_normal_value[PATH_NUM] = { + 0x92680000, 0x12680000}; + + char APK_delta_mapping[APK_BB_REG_NUM][13] = { + {-4, -3, -2, -2, -1, -1, 0, 1, 2, 3, 4, 5, 6}, + {-4, -3, -2, -2, -1, -1, 0, 1, 2, 3, 4, 5, 6}, + {-6, -4, -2, -2, -1, -1, 0, 1, 2, 3, 4, 5, 6}, + {-1, -1, -1, -1, -1, -1, 0, 1, 2, 3, 4, 5, 6}, + {-11, -9, -7, -5, -3, -1, 0, 0, 0, 0, 0, 0, 0} + }; + + u32 APK_normal_setting_value_1[13] = { + 0x01017018, 0xf7ed8f84, 0x1b1a1816, 0x2522201e, 0x322e2b28, + 0x433f3a36, 0x5b544e49, 0x7b726a62, 0xa69a8f84, 0xdfcfc0b3, + 0x12680000, 0x00880000, 0x00880000 + }; + + u32 APK_normal_setting_value_2[16] = { + 0x01c7021d, 0x01670183, 0x01000123, 0x00bf00e2, 0x008d00a3, + 0x0068007b, 0x004d0059, 0x003a0042, 0x002b0031, 0x001f0025, + 0x0017001b, 0x00110014, 0x000c000f, 0x0009000b, 0x00070008, + 0x00050006 + }; + + u32 APK_result[PATH_NUM][APK_BB_REG_NUM]; //val_1_1a, val_1_2a, val_2a, val_3a, val_4a + //u32 AP_curve[PATH_NUM][APK_CURVE_REG_NUM]; + + int BB_offset, delta_V, delta_offset; + +#if (MP_DRIVER == 1) + PMPT_CONTEXT pMptCtx = &pAdapter->mppriv.MptCtx; + + pMptCtx->APK_bound[0] = 45; + pMptCtx->APK_bound[1] = 52; +#endif + + //RTPRINT(FINIT, INIT_IQK, ("==>PHY_APCalibrate() delta %d\n", delta)); + + //RTPRINT(FINIT, INIT_IQK, ("AP Calibration for %s %s\n", (is2T ? "2T2R" : "1T1R"), (isNormal ? "Normal chip" : "Test chip"))); + + if(!is2T) + pathbound = 1; + + //2 FOR NORMAL CHIP SETTINGS + +// Temporarily do not allow normal driver to do the following settings because these offset +// and value will cause RF internal PA to be unpredictably disabled by HW, such that RF Tx signal +// will disappear after disable/enable card many times on 88CU. RF SD and DD have not find the +// root cause, so we remove these actions temporarily. Added by tynli and SD3 Allen. 2010.05.31. +#if (MP_DRIVER != 1) + return; +#endif + + //settings adjust for normal chip + for(index = 0; index < PATH_NUM; index ++) + { + APK_offset[index] = APK_normal_offset[index]; + APK_value[index] = APK_normal_value[index]; + AFE_on_off[index] = 0x6fdb25a4; + } + + for(index = 0; index < APK_BB_REG_NUM; index ++) + { + for(path = 0; path < pathbound; path++) + { + APK_RF_init_value[path][index] = APK_normal_RF_init_value[path][index]; + APK_RF_value_0[path][index] = APK_normal_RF_value_0[path][index]; + } + BB_AP_MODE[index] = BB_normal_AP_MODE[index]; + } + + apkbound = 6; + + //save BB default value + for(index = 0; index < APK_BB_REG_NUM ; index++) + { + if(index == 0) //skip + continue; + BB_backup[index] = PHY_QueryBBReg(pAdapter, BB_REG[index], bMaskDWord); + } + + //save MAC default value + _PHY_SaveMACRegisters(pAdapter, MAC_REG, MAC_backup); + + //save AFE default value + _PHY_SaveADDARegisters(pAdapter, AFE_REG, AFE_backup, IQK_ADDA_REG_NUM); + + for(path = 0; path < pathbound; path++) + { + if(path == RF_PATH_A) + { + //path A APK + //load APK setting + //path-A + offset = rPdp_AntA; + for(index = 0; index < 11; index ++) + { + PHY_SetBBReg(pAdapter, offset, bMaskDWord, APK_normal_setting_value_1[index]); + //RTPRINT(FINIT, INIT_IQK, ("PHY_APCalibrate() offset 0x%x value 0x%x\n", offset, PHY_QueryBBReg(pAdapter, offset, bMaskDWord))); + + offset += 0x04; + } + + PHY_SetBBReg(pAdapter, rConfig_Pmpd_AntB, bMaskDWord, 0x12680000); + + offset = rConfig_AntA; + for(; index < 13; index ++) + { + PHY_SetBBReg(pAdapter, offset, bMaskDWord, APK_normal_setting_value_1[index]); + //RTPRINT(FINIT, INIT_IQK, ("PHY_APCalibrate() offset 0x%x value 0x%x\n", offset, PHY_QueryBBReg(pAdapter, offset, bMaskDWord))); + + offset += 0x04; + } + + //page-B1 + PHY_SetBBReg(pAdapter, rFPGA0_IQK, bMaskDWord, 0x40000000); + + //path A + offset = rPdp_AntA; + for(index = 0; index < 16; index++) + { + PHY_SetBBReg(pAdapter, offset, bMaskDWord, APK_normal_setting_value_2[index]); + //RTPRINT(FINIT, INIT_IQK, ("PHY_APCalibrate() offset 0x%x value 0x%x\n", offset, PHY_QueryBBReg(pAdapter, offset, bMaskDWord))); + + offset += 0x04; + } + PHY_SetBBReg(pAdapter, rFPGA0_IQK, bMaskDWord, 0x00000000); + } + else if(path == RF_PATH_B) + { + //path B APK + //load APK setting + //path-B + offset = rPdp_AntB; + for(index = 0; index < 10; index ++) + { + PHY_SetBBReg(pAdapter, offset, bMaskDWord, APK_normal_setting_value_1[index]); + //RTPRINT(FINIT, INIT_IQK, ("PHY_APCalibrate() offset 0x%x value 0x%x\n", offset, PHY_QueryBBReg(pAdapter, offset, bMaskDWord))); + + offset += 0x04; + } + PHY_SetBBReg(pAdapter, rConfig_Pmpd_AntA, bMaskDWord, 0x12680000); + + PHY_SetBBReg(pAdapter, rConfig_Pmpd_AntB, bMaskDWord, 0x12680000); + + offset = rConfig_AntA; + index = 11; + for(; index < 13; index ++) //offset 0xb68, 0xb6c + { + PHY_SetBBReg(pAdapter, offset, bMaskDWord, APK_normal_setting_value_1[index]); + //RTPRINT(FINIT, INIT_IQK, ("PHY_APCalibrate() offset 0x%x value 0x%x\n", offset, PHY_QueryBBReg(pAdapter, offset, bMaskDWord))); + + offset += 0x04; + } + + //page-B1 + PHY_SetBBReg(pAdapter, rFPGA0_IQK, bMaskDWord, 0x40000000); + + //path B + offset = 0xb60; + for(index = 0; index < 16; index++) + { + PHY_SetBBReg(pAdapter, offset, bMaskDWord, APK_normal_setting_value_2[index]); + //RTPRINT(FINIT, INIT_IQK, ("PHY_APCalibrate() offset 0x%x value 0x%x\n", offset, PHY_QueryBBReg(pAdapter, offset, bMaskDWord))); + + offset += 0x04; + } + PHY_SetBBReg(pAdapter, rFPGA0_IQK, bMaskDWord, 0x00000000); + } + + //save RF default value + regD[path] = PHY_QueryRFReg(pAdapter, (RF_RADIO_PATH_E)path, RF_TXBIAS_A, bRFRegOffsetMask); + + //Path A AFE all on, path B AFE All off or vise versa + for(index = 0; index < IQK_ADDA_REG_NUM ; index++) + PHY_SetBBReg(pAdapter, AFE_REG[index], bMaskDWord, AFE_on_off[path]); + //RTPRINT(FINIT, INIT_IQK, ("PHY_APCalibrate() offset 0xe70 %x\n", PHY_QueryBBReg(pAdapter, 0xe70, bMaskDWord))); + + //BB to AP mode + if(path == 0) + { + for(index = 0; index < APK_BB_REG_NUM ; index++) + { + if(index == 0) //skip + continue; + else if (index < 5) + PHY_SetBBReg(pAdapter, BB_REG[index], bMaskDWord, BB_AP_MODE[index]); + else if (BB_REG[index] == 0x870) + PHY_SetBBReg(pAdapter, BB_REG[index], bMaskDWord, BB_backup[index]|BIT10|BIT26); + else + PHY_SetBBReg(pAdapter, BB_REG[index], BIT10, 0x0); + } + PHY_SetBBReg(pAdapter, rTx_IQK_Tone_A, bMaskDWord, 0x01008c00); + PHY_SetBBReg(pAdapter, rRx_IQK_Tone_A, bMaskDWord, 0x01008c00); + } + else //path B + { + PHY_SetBBReg(pAdapter, rTx_IQK_Tone_B, bMaskDWord, 0x01008c00); + PHY_SetBBReg(pAdapter, rRx_IQK_Tone_B, bMaskDWord, 0x01008c00); + } + + //RTPRINT(FINIT, INIT_IQK, ("PHY_APCalibrate() offset 0x800 %x\n", PHY_QueryBBReg(pAdapter, 0x800, bMaskDWord))); + + //MAC settings + _PHY_MACSettingCalibration(pAdapter, MAC_REG, MAC_backup); + + if(path == RF_PATH_A) //Path B to standby mode + { + PHY_SetRFReg(pAdapter, RF_PATH_B, RF_AC, bRFRegOffsetMask, 0x10000); + } + else //Path A to standby mode + { + PHY_SetRFReg(pAdapter, RF_PATH_A, RF_AC, bRFRegOffsetMask, 0x10000); + PHY_SetRFReg(pAdapter, RF_PATH_A, RF_MODE1, bRFRegOffsetMask, 0x1000f); + PHY_SetRFReg(pAdapter, RF_PATH_A, RF_MODE2, bRFRegOffsetMask, 0x20103); + } + + delta_offset = ((delta+14)/2); + if(delta_offset < 0) + delta_offset = 0; + else if (delta_offset > 12) + delta_offset = 12; + + //AP calibration + for(index = 0; index < APK_BB_REG_NUM; index++) + { + if(index != 1) //only DO PA11+PAD01001, AP RF setting + continue; + + tmpReg = APK_RF_init_value[path][index]; +#if 1 + if(!pdmpriv->bAPKThermalMeterIgnore) + { + BB_offset = (tmpReg & 0xF0000) >> 16; + + if(!(tmpReg & BIT15)) //sign bit 0 + { + BB_offset = -BB_offset; + } + + delta_V = APK_delta_mapping[index][delta_offset]; + + BB_offset += delta_V; + + //RTPRINT(FINIT, INIT_IQK, ("PHY_APCalibrate() APK num %d delta_V %d delta_offset %d\n", index, delta_V, delta_offset)); + + if(BB_offset < 0) + { + tmpReg = tmpReg & (~BIT15); + BB_offset = -BB_offset; + } + else + { + tmpReg = tmpReg | BIT15; + } + tmpReg = (tmpReg & 0xFFF0FFFF) | (BB_offset << 16); + } +#endif + +#ifdef CONFIG_PCI_HCI + if(IS_81xxC_VENDOR_UMC_B_CUT(pHalData->VersionID)) + PHY_SetRFReg(pAdapter, (RF_RADIO_PATH_E)path, RF_IPA_A, bRFRegOffsetMask, 0x894ae); + else +#endif + PHY_SetRFReg(pAdapter, (RF_RADIO_PATH_E)path, RF_IPA_A, bRFRegOffsetMask, 0x8992e); + //RTPRINT(FINIT, INIT_IQK, ("PHY_APCalibrate() offset 0xc %x\n", PHY_QueryRFReg(pAdapter, (RF_RADIO_PATH_E)path, 0xc, bMaskDWord))); + PHY_SetRFReg(pAdapter, (RF_RADIO_PATH_E)path, RF_AC, bRFRegOffsetMask, APK_RF_value_0[path][index]); + //RTPRINT(FINIT, INIT_IQK, ("PHY_APCalibrate() offset 0x0 %x\n", PHY_QueryRFReg(pAdapter, (RF_RADIO_PATH_E)path, 0x0, bMaskDWord))); + PHY_SetRFReg(pAdapter, (RF_RADIO_PATH_E)path, RF_TXBIAS_A, bRFRegOffsetMask, tmpReg); + //RTPRINT(FINIT, INIT_IQK, ("PHY_APCalibrate() offset 0xd %x\n", PHY_QueryRFReg(pAdapter, (RF_RADIO_PATH_E)path, 0xd, bMaskDWord))); + + // PA11+PAD01111, one shot + i = 0; + do + { + PHY_SetBBReg(pAdapter, rFPGA0_IQK, bMaskDWord, 0x80000000); + { + PHY_SetBBReg(pAdapter, APK_offset[path], bMaskDWord, APK_value[0]); + //RTPRINT(FINIT, INIT_IQK, ("PHY_APCalibrate() offset 0x%x value 0x%x\n", APK_offset[path], PHY_QueryBBReg(pAdapter, APK_offset[path], bMaskDWord))); + rtw_mdelay_os(3); + PHY_SetBBReg(pAdapter, APK_offset[path], bMaskDWord, APK_value[1]); + //RTPRINT(FINIT, INIT_IQK, ("PHY_APCalibrate() offset 0x%x value 0x%x\n", APK_offset[path], PHY_QueryBBReg(pAdapter, APK_offset[path], bMaskDWord))); + #ifdef CONFIG_LONG_DELAY_ISSUE + rtw_msleep_os(20); + #else + rtw_mdelay_os(20); + #endif + } + PHY_SetBBReg(pAdapter, rFPGA0_IQK, bMaskDWord, 0x00000000); + + if(path == RF_PATH_A) + tmpReg = PHY_QueryBBReg(pAdapter, rAPK, 0x03E00000); + else + tmpReg = PHY_QueryBBReg(pAdapter, rAPK, 0xF8000000); + //RTPRINT(FINIT, INIT_IQK, ("PHY_APCalibrate() offset 0xbd8[25:21] %x\n", tmpReg)); + + i++; + } + while(tmpReg > apkbound && i < 4); + + APK_result[path][index] = tmpReg; + } + } + + //reload MAC default value + _PHY_ReloadMACRegisters(pAdapter, MAC_REG, MAC_backup); + + //reload BB default value + for(index = 0; index < APK_BB_REG_NUM ; index++) + { + if(index == 0) //skip + continue; + PHY_SetBBReg(pAdapter, BB_REG[index], bMaskDWord, BB_backup[index]); + } + + //reload AFE default value + _PHY_ReloadADDARegisters(pAdapter, AFE_REG, AFE_backup, IQK_ADDA_REG_NUM); + + //reload RF path default value + for(path = 0; path < pathbound; path++) + { + PHY_SetRFReg(pAdapter, (RF_RADIO_PATH_E)path, RF_TXBIAS_A, bRFRegOffsetMask, regD[path]); + if(path == RF_PATH_B) + { + PHY_SetRFReg(pAdapter, RF_PATH_A, RF_MODE1, bRFRegOffsetMask, 0x1000f); + PHY_SetRFReg(pAdapter, RF_PATH_A, RF_MODE2, bRFRegOffsetMask, 0x20101); + } + + //note no index == 0 + if (APK_result[path][1] > 6) + APK_result[path][1] = 6; + //RTPRINT(FINIT, INIT_IQK, ("apk path %d result %d 0x%x \t", path, 1, APK_result[path][1])); + } + + //RTPRINT(FINIT, INIT_IQK, ("\n")); + + + for(path = 0; path < pathbound; path++) + { + PHY_SetRFReg(pAdapter, (RF_RADIO_PATH_E)path, RF_BS_PA_APSET_G1_G4, bRFRegOffsetMask, + ((APK_result[path][1] << 15) | (APK_result[path][1] << 10) | (APK_result[path][1] << 5) | APK_result[path][1])); + if(path == RF_PATH_A) + PHY_SetRFReg(pAdapter, (RF_RADIO_PATH_E)path, RF_BS_PA_APSET_G5_G8, bRFRegOffsetMask, + ((APK_result[path][1] << 15) | (APK_result[path][1] << 10) | (0x00 << 5) | 0x05)); + else + PHY_SetRFReg(pAdapter, (RF_RADIO_PATH_E)path, RF_BS_PA_APSET_G5_G8, bRFRegOffsetMask, + ((APK_result[path][1] << 15) | (APK_result[path][1] << 10) | (0x02 << 5) | 0x05)); + PHY_SetRFReg(pAdapter, (RF_RADIO_PATH_E)path, RF_BS_PA_APSET_G9_G11, bRFRegOffsetMask, + ((0x08 << 15) | (0x08 << 10) | (0x08 << 5) | 0x08)); + } + + pdmpriv->bAPKdone = _TRUE; + + //RTPRINT(FINIT, INIT_IQK, ("<==PHY_APCalibrate()\n")); +} + +static VOID _PHY_SetRFPathSwitch( + IN PADAPTER pAdapter, + IN BOOLEAN bMain, + IN BOOLEAN is2T + ) +{ + u8 u1bTmp; + + if(!pAdapter->hw_init_completed) + { + u1bTmp = rtw_read8(pAdapter, REG_LEDCFG2) | BIT7; + rtw_write8(pAdapter, REG_LEDCFG2, u1bTmp); + //PHY_SetBBReg(pAdapter, REG_LEDCFG0, BIT23, 0x01); + PHY_SetBBReg(pAdapter, rFPGA0_XAB_RFParameter, BIT13, 0x01); + } + + if(is2T) + { + if(bMain) + PHY_SetBBReg(pAdapter, rFPGA0_XB_RFInterfaceOE, BIT5|BIT6, 0x1); //92C_Path_A + else + PHY_SetBBReg(pAdapter, rFPGA0_XB_RFInterfaceOE, BIT5|BIT6, 0x2); //BT + } + else + { + + if(bMain) + PHY_SetBBReg(pAdapter, rFPGA0_XA_RFInterfaceOE, 0x300, 0x2); //Main + else + PHY_SetBBReg(pAdapter, rFPGA0_XA_RFInterfaceOE, 0x300, 0x1); //Aux + } + +} + +//return value TRUE => Main; FALSE => Aux + +static BOOLEAN _PHY_QueryRFPathSwitch( + IN PADAPTER pAdapter, + IN BOOLEAN is2T + ) +{ +// if(is2T) +// return _TRUE; + + if(!pAdapter->hw_init_completed) + { + PHY_SetBBReg(pAdapter, REG_LEDCFG0, BIT23, 0x01); + PHY_SetBBReg(pAdapter, rFPGA0_XAB_RFParameter, BIT13, 0x01); + } + + if(is2T) + { + if(PHY_QueryBBReg(pAdapter, rFPGA0_XB_RFInterfaceOE, BIT5|BIT6) == 0x01) + return _TRUE; + else + return _FALSE; + } + else + { + if(PHY_QueryBBReg(pAdapter, rFPGA0_XA_RFInterfaceOE, 0x300) == 0x02) + return _TRUE; + else + return _FALSE; + } +} + +VOID +rtl8192c_PHY_IQCalibrate( + IN PADAPTER pAdapter, + IN BOOLEAN bReCovery + ) +{ + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(pAdapter); + struct dm_priv *pdmpriv = &pHalData->dmpriv; + s32 result[4][8]; //last is final result + u8 i, final_candidate; + BOOLEAN bPathAOK, bPathBOK; + s32 RegE94, RegE9C, RegEA4, RegEAC, RegEB4, RegEBC, RegEC4, RegECC, RegTmp = 0; + BOOLEAN is12simular, is13simular, is23simular; + BOOLEAN bStartContTx = _FALSE, bSingleTone = _FALSE, bCarrierSuppression = _FALSE; + u32 IQK_BB_REG_92C[IQK_BB_REG_NUM] = { + rOFDM0_XARxIQImbalance, rOFDM0_XBRxIQImbalance, + rOFDM0_ECCAThreshold, rOFDM0_AGCRSSITable, + rOFDM0_XATxIQImbalance, rOFDM0_XBTxIQImbalance, + rOFDM0_XCTxAFE, rOFDM0_XDTxAFE, + rOFDM0_RxIQExtAnta}; + + +#if MP_DRIVER == 1 + bStartContTx = pAdapter->mppriv.MptCtx.bStartContTx; + bSingleTone = pAdapter->mppriv.MptCtx.bSingleTone; + bCarrierSuppression = pAdapter->mppriv.MptCtx.bCarrierSuppression; +#endif + + //ignore IQK when continuous Tx + if(bStartContTx || bSingleTone || bCarrierSuppression) + return; + +#if DISABLE_BB_RF + return; +#endif + + if(bReCovery) + { + _PHY_ReloadADDARegisters(pAdapter, IQK_BB_REG_92C, pdmpriv->IQK_BB_backup_recover, 9); + return; + } + DBG_8192C("IQK:Start!!!\n"); + + for(i = 0; i < 8; i++) + { + result[0][i] = 0; + result[1][i] = 0; + result[2][i] = 0; + result[3][i] = 0; + } + final_candidate = 0xff; + bPathAOK = _FALSE; + bPathBOK = _FALSE; + is12simular = _FALSE; + is23simular = _FALSE; + is13simular = _FALSE; + + for (i=0; i<3; i++) + { + if(IS_92C_SERIAL( pHalData->VersionID)){ + _PHY_IQCalibrate(pAdapter, result, i, _TRUE); + } + else{ + // For 88C 1T1R + _PHY_IQCalibrate(pAdapter, result, i, _FALSE); + } + + if(i == 1) + { + is12simular = _PHY_SimularityCompare(pAdapter, result, 0, 1); + if(is12simular) + { + final_candidate = 0; + break; + } + } + + if(i == 2) + { + is13simular = _PHY_SimularityCompare(pAdapter, result, 0, 2); + if(is13simular) + { + final_candidate = 0; + break; + } + + is23simular = _PHY_SimularityCompare(pAdapter, result, 1, 2); + if(is23simular) + final_candidate = 1; + else + { + for(i = 0; i < 8; i++) + RegTmp += result[3][i]; + + if(RegTmp != 0) + final_candidate = 3; + else + final_candidate = 0xFF; + } + } + } + + for (i=0; i<4; i++) + { + RegE94 = result[i][0]; + RegE9C = result[i][1]; + RegEA4 = result[i][2]; + RegEAC = result[i][3]; + RegEB4 = result[i][4]; + RegEBC = result[i][5]; + RegEC4 = result[i][6]; + RegECC = result[i][7]; + //RTPRINT(FINIT, INIT_IQK, ("IQK: RegE94=%lx RegE9C=%lx RegEA4=%lx RegEAC=%lx RegEB4=%lx RegEBC=%lx RegEC4=%lx RegECC=%lx\n ", RegE94, RegE9C, RegEA4, RegEAC, RegEB4, RegEBC, RegEC4, RegECC)); + } + + if(final_candidate != 0xff) + { + pdmpriv->RegE94 = RegE94 = result[final_candidate][0]; + pdmpriv->RegE9C = RegE9C = result[final_candidate][1]; + RegEA4 = result[final_candidate][2]; + RegEAC = result[final_candidate][3]; + pdmpriv->RegEB4 = RegEB4 = result[final_candidate][4]; + pdmpriv->RegEBC = RegEBC = result[final_candidate][5]; + RegEC4 = result[final_candidate][6]; + RegECC = result[final_candidate][7]; + DBG_8192C("IQK: final_candidate is %x\n", final_candidate); + DBG_8192C("IQK: RegE94=%x RegE9C=%x RegEA4=%x RegEAC=%x RegEB4=%x RegEBC=%x RegEC4=%x RegECC=%x\n ", RegE94, RegE9C, RegEA4, RegEAC, RegEB4, RegEBC, RegEC4, RegECC); + bPathAOK = bPathBOK = _TRUE; + } + else + { + RegE94 = RegEB4 = pdmpriv->RegE94 = pdmpriv->RegEB4 = 0x100; //X default value + RegE9C = RegEBC = pdmpriv->RegE9C = pdmpriv->RegEBC = 0x0; //Y default value + } + + if((RegE94 != 0)/*&&(RegEA4 != 0)*/) + _PHY_PathAFillIQKMatrix(pAdapter, bPathAOK, result, final_candidate, (RegEA4 == 0)); + + if(IS_92C_SERIAL( pHalData->VersionID)){ + if((RegEB4 != 0)/*&&(RegEC4 != 0)*/) + _PHY_PathBFillIQKMatrix(pAdapter, bPathBOK, result, final_candidate, (RegEC4 == 0)); + } + + _PHY_SaveADDARegisters(pAdapter, IQK_BB_REG_92C, pdmpriv->IQK_BB_backup_recover, 9); + +} + + +VOID +rtl8192c_PHY_LCCalibrate( + IN PADAPTER pAdapter + ) +{ + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(pAdapter); + struct mlme_ext_priv *pmlmeext = &pAdapter->mlmeextpriv; + BOOLEAN bStartContTx = _FALSE, bSingleTone = _FALSE, bCarrierSuppression = _FALSE; + +#if MP_DRIVER == 1 + bStartContTx = pAdapter->mppriv.MptCtx.bStartContTx; + bSingleTone = pAdapter->mppriv.MptCtx.bSingleTone; + bCarrierSuppression = pAdapter->mppriv.MptCtx.bCarrierSuppression; +#endif + +#if DISABLE_BB_RF + return; +#endif + + //ignore IQK when continuous Tx + if(bStartContTx || bSingleTone || bCarrierSuppression) + return; + + if(pmlmeext->sitesurvey_res.state == SCAN_PROCESS) + return; + + if(IS_92C_SERIAL( pHalData->VersionID)){ + _PHY_LCCalibrate(pAdapter, _TRUE); + } + else{ + // For 88C 1T1R + _PHY_LCCalibrate(pAdapter, _FALSE); + } +} + +VOID +rtl8192c_PHY_APCalibrate( + IN PADAPTER pAdapter, + IN char delta + ) +{ + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(pAdapter); + struct dm_priv *pdmpriv = &pHalData->dmpriv; + + //default disable APK, because Tx NG issue, suggest by Jenyu, 2011.11.25 + return; + +#if DISABLE_BB_RF + return; +#endif + + if(pdmpriv->bAPKdone) + return; + + if(IS_92C_SERIAL( pHalData->VersionID)){ + _PHY_APCalibrate(pAdapter, delta, _TRUE); + } + else{ + // For 88C 1T1R + _PHY_APCalibrate(pAdapter, delta, _FALSE); + } +} + +VOID rtl8192c_PHY_SetRFPathSwitch( + IN PADAPTER pAdapter, + IN BOOLEAN bMain + ) +{ + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(pAdapter); + +#if DISABLE_BB_RF + return; +#endif + + if(IS_92C_SERIAL( pHalData->VersionID)){ + _PHY_SetRFPathSwitch(pAdapter, bMain, _TRUE); + } + else{ + // For 88C 1T1R + _PHY_SetRFPathSwitch(pAdapter, bMain, _FALSE); + } +} --- linux-raspi2-4.2.0.orig/drivers/net/wireless/rtl8192cu/hal/rtl8192c/rtl8192c_rf6052.c +++ linux-raspi2-4.2.0/drivers/net/wireless/rtl8192cu/hal/rtl8192c/rtl8192c_rf6052.c @@ -0,0 +1,1030 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved. + * + * 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 + * published by the Free Software Foundation. + * + * 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 Street, Fifth Floor, Boston, MA 02110, USA + * + * + ******************************************************************************/ +/****************************************************************************** + * + * + * Module: rtl8192c_rf6052.c ( Source C File) + * + * Note: Provide RF 6052 series relative API. + * + * Function: + * + * Export: + * + * Abbrev: + * + * History: + * Data Who Remark + * + * 09/25/2008 MHC Create initial version. + * 11/05/2008 MHC Add API for tw power setting. + * + * +******************************************************************************/ + +#define _RTL8192C_RF6052_C_ + +#include +#include +#include +#include + +#include + +/*---------------------------Define Local Constant---------------------------*/ +// Define local structure for debug!!!!! +typedef struct RF_Shadow_Compare_Map { + // Shadow register value + u32 Value; + // Compare or not flag + u8 Compare; + // Record If it had ever modified unpredicted + u8 ErrorOrNot; + // Recorver Flag + u8 Recorver; + // + u8 Driver_Write; +}RF_SHADOW_T; +/*---------------------------Define Local Constant---------------------------*/ + + +/*------------------------Define global variable-----------------------------*/ +/*------------------------Define global variable-----------------------------*/ + + +/*------------------------Define local variable------------------------------*/ +// 2008/11/20 MH For Debug only, RF +//static RF_SHADOW_T RF_Shadow[RF6052_MAX_PATH][RF6052_MAX_REG] = {0}; +static RF_SHADOW_T RF_Shadow[RF6052_MAX_PATH][RF6052_MAX_REG]; +/*------------------------Define local variable------------------------------*/ + + +/*----------------------------------------------------------------------------- + * Function: RF_ChangeTxPath + * + * Overview: For RL6052, we must change some RF settign for 1T or 2T. + * + * Input: u2Byte DataRate // 0x80-8f, 0x90-9f + * + * Output: NONE + * + * Return: NONE + * + * Revised History: + * When Who Remark + * 09/25/2008 MHC Create Version 0. + * Firmwaer support the utility later. + * + *---------------------------------------------------------------------------*/ +void rtl8192c_RF_ChangeTxPath( IN PADAPTER Adapter, + IN u16 DataRate) +{ +// We do not support gain table change inACUT now !!!! Delete later !!! +#if 0//(RTL92SE_FPGA_VERIFY == 0) + static u1Byte RF_Path_Type = 2; // 1 = 1T 2= 2T + static u4Byte tx_gain_tbl1[6] + = {0x17f50, 0x11f40, 0x0cf30, 0x08720, 0x04310, 0x00100}; + static u4Byte tx_gain_tbl2[6] + = {0x15ea0, 0x10e90, 0x0c680, 0x08250, 0x04040, 0x00030}; + u1Byte i; + + if (RF_Path_Type == 2 && (DataRate&0xF) <= 0x7) + { + // Set TX SYNC power G2G3 loop filter + PHY_SetRFReg(Adapter, (RF_RADIO_PATH_E)RF_PATH_A, + RF_TXPA_G2, bRFRegOffsetMask, 0x0f000); + PHY_SetRFReg(Adapter, (RF_RADIO_PATH_E)RF_PATH_A, + RF_TXPA_G3, bRFRegOffsetMask, 0xeacf1); + + // Change TX AGC gain table + for (i = 0; i < 6; i++) + PHY_SetRFReg(Adapter, (RF_RADIO_PATH_E)RF_PATH_A, + RF_TX_AGC, bRFRegOffsetMask, tx_gain_tbl1[i]); + + // Set PA to high value + PHY_SetRFReg(Adapter, (RF_RADIO_PATH_E)RF_PATH_A, + RF_TXPA_G2, bRFRegOffsetMask, 0x01e39); + } + else if (RF_Path_Type == 1 && (DataRate&0xF) >= 0x8) + { + // Set TX SYNC power G2G3 loop filter + PHY_SetRFReg(Adapter, (RF_RADIO_PATH_E)RF_PATH_A, + RF_TXPA_G2, bRFRegOffsetMask, 0x04440); + PHY_SetRFReg(Adapter, (RF_RADIO_PATH_E)RF_PATH_A, + RF_TXPA_G3, bRFRegOffsetMask, 0xea4f1); + + // Change TX AGC gain table + for (i = 0; i < 6; i++) + PHY_SetRFReg(Adapter, (RF_RADIO_PATH_E)RF_PATH_A, + RF_TX_AGC, bRFRegOffsetMask, tx_gain_tbl2[i]); + + // Set PA low gain + PHY_SetRFReg(Adapter, (RF_RADIO_PATH_E)RF_PATH_A, + RF_TXPA_G2, bRFRegOffsetMask, 0x01e19); + } +#endif + +} /* RF_ChangeTxPath */ + + +/*----------------------------------------------------------------------------- + * Function: PHY_RF6052SetBandwidth() + * + * Overview: This function is called by SetBWModeCallback8190Pci() only + * + * Input: PADAPTER Adapter + * WIRELESS_BANDWIDTH_E Bandwidth //20M or 40M + * + * Output: NONE + * + * Return: NONE + * + * Note: For RF type 0222D + *---------------------------------------------------------------------------*/ +VOID +rtl8192c_PHY_RF6052SetBandwidth( + IN PADAPTER Adapter, + IN HT_CHANNEL_WIDTH Bandwidth) //20M or 40M +{ + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); + + switch(Bandwidth) + { + case HT_CHANNEL_WIDTH_20: + pHalData->RfRegChnlVal[0] = ((pHalData->RfRegChnlVal[0] & 0xfffff3ff) | 0x0400); + PHY_SetRFReg(Adapter, RF_PATH_A, RF_CHNLBW, bRFRegOffsetMask, pHalData->RfRegChnlVal[0]); + break; + + case HT_CHANNEL_WIDTH_40: + pHalData->RfRegChnlVal[0] = ((pHalData->RfRegChnlVal[0] & 0xfffff3ff)); + PHY_SetRFReg(Adapter, RF_PATH_A, RF_CHNLBW, bRFRegOffsetMask, pHalData->RfRegChnlVal[0]); + break; + + default: + //RT_TRACE(COMP_DBG, DBG_LOUD, ("PHY_SetRF8225Bandwidth(): unknown Bandwidth: %#X\n",Bandwidth )); + break; + } + +} + + +/*----------------------------------------------------------------------------- + * Function: PHY_RF6052SetCckTxPower + * + * Overview: + * + * Input: NONE + * + * Output: NONE + * + * Return: NONE + * + * Revised History: + * When Who Remark + * 11/05/2008 MHC Simulate 8192series.. + * + *---------------------------------------------------------------------------*/ + +VOID +rtl8192c_PHY_RF6052SetCckTxPower( + IN PADAPTER Adapter, + IN u8* pPowerlevel) +{ + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); + struct mlme_priv *pmlmepriv = &Adapter->mlmepriv; + struct dm_priv *pdmpriv = &pHalData->dmpriv; + struct mlme_ext_priv *pmlmeext = &Adapter->mlmeextpriv; + //PMGNT_INFO pMgntInfo=&Adapter->MgntInfo; + u32 TxAGC[2]={0, 0}, tmpval=0; + BOOLEAN TurboScanOff = _FALSE; + u8 idx1, idx2; + u8* ptr; + + // 2010/10/18 MH Accorsing to SD3 eechou's suggestion, we need to disable turbo scan for RU. + // Otherwise, external PA will be broken if power index > 0x20. +#ifdef CONFIG_USB_HCI + if (pHalData->EEPROMRegulatory != 0 || pHalData->ExternalPA) +#else + if (pHalData->EEPROMRegulatory != 0) +#endif + { + //DbgPrint("TurboScanOff=1 EEPROMRegulatory=%d ExternalPA=%d\n", pHalData->EEPROMRegulatory, pHalData->ExternalPA); + TurboScanOff = _TRUE; + } + + if(pmlmeext->sitesurvey_res.state == SCAN_PROCESS) + { + TxAGC[RF_PATH_A] = 0x3f3f3f3f; + TxAGC[RF_PATH_B] = 0x3f3f3f3f; + + TurboScanOff = _TRUE;//disable turbo scan + + if(TurboScanOff) + { + for(idx1=RF_PATH_A; idx1<=RF_PATH_B; idx1++) + { + TxAGC[idx1] = + pPowerlevel[idx1] | (pPowerlevel[idx1]<<8) | + (pPowerlevel[idx1]<<16) | (pPowerlevel[idx1]<<24); +#ifdef CONFIG_USB_HCI + // 2010/10/18 MH For external PA module. We need to limit power index to be less than 0x20. + if (TxAGC[idx1] > 0x20 && pHalData->ExternalPA) + TxAGC[idx1] = 0x20; +#endif + } + } + } + else + { +// 20100427 Joseph: Driver dynamic Tx power shall not affect Tx power. It shall be determined by power training mechanism. +// Currently, we cannot fully disable driver dynamic tx power mechanism because it is referenced by BT coexist mechanism. +// In the future, two mechanism shall be separated from each other and maintained independantly. Thanks for Lanhsin's reminder. + if(pdmpriv->DynamicTxHighPowerLvl == TxHighPwrLevel_Level1) + { + TxAGC[RF_PATH_A] = 0x10101010; + TxAGC[RF_PATH_B] = 0x10101010; + } + else if(pdmpriv->DynamicTxHighPowerLvl == TxHighPwrLevel_Level2) + { + TxAGC[RF_PATH_A] = 0x00000000; + TxAGC[RF_PATH_B] = 0x00000000; + } + else + { + for(idx1=RF_PATH_A; idx1<=RF_PATH_B; idx1++) + { + TxAGC[idx1] = + pPowerlevel[idx1] | (pPowerlevel[idx1]<<8) | + (pPowerlevel[idx1]<<16) | (pPowerlevel[idx1]<<24); + } + + if(pHalData->EEPROMRegulatory==0) + { + tmpval = (pHalData->MCSTxPowerLevelOriginalOffset[0][6]) + + (pHalData->MCSTxPowerLevelOriginalOffset[0][7]<<8); + TxAGC[RF_PATH_A] += tmpval; + + tmpval = (pHalData->MCSTxPowerLevelOriginalOffset[0][14]) + + (pHalData->MCSTxPowerLevelOriginalOffset[0][15]<<24); + TxAGC[RF_PATH_B] += tmpval; + } + } + } + + for(idx1=RF_PATH_A; idx1<=RF_PATH_B; idx1++) + { + ptr = (u8*)(&(TxAGC[idx1])); + for(idx2=0; idx2<4; idx2++) + { + if(*ptr > RF6052_MAX_TX_PWR) + *ptr = RF6052_MAX_TX_PWR; + ptr++; + } + } + + // rf-A cck tx power + tmpval = TxAGC[RF_PATH_A]&0xff; + PHY_SetBBReg(Adapter, rTxAGC_A_CCK1_Mcs32, bMaskByte1, tmpval); + //RTPRINT(FPHY, PHY_TXPWR, ("CCK PWR 1M (rf-A) = 0x%x (reg 0x%x)\n", tmpval, rTxAGC_A_CCK1_Mcs32)); + tmpval = TxAGC[RF_PATH_A]>>8; + PHY_SetBBReg(Adapter, rTxAGC_B_CCK11_A_CCK2_11, 0xffffff00, tmpval); + //RTPRINT(FPHY, PHY_TXPWR, ("CCK PWR 2~11M (rf-A) = 0x%x (reg 0x%x)\n", tmpval, rTxAGC_B_CCK11_A_CCK2_11)); + + // rf-B cck tx power + tmpval = TxAGC[RF_PATH_B]>>24; + PHY_SetBBReg(Adapter, rTxAGC_B_CCK11_A_CCK2_11, bMaskByte0, tmpval); + //RTPRINT(FPHY, PHY_TXPWR, ("CCK PWR 11M (rf-B) = 0x%x (reg 0x%x)\n", tmpval, rTxAGC_B_CCK11_A_CCK2_11)); + tmpval = TxAGC[RF_PATH_B]&0x00ffffff; + PHY_SetBBReg(Adapter, rTxAGC_B_CCK1_55_Mcs32, 0xffffff00, tmpval); + //RTPRINT(FPHY, PHY_TXPWR, ("CCK PWR 1~5.5M (rf-B) = 0x%x (reg 0x%x)\n", + // tmpval, rTxAGC_B_CCK1_55_Mcs32)); + +} /* PHY_RF6052SetCckTxPower */ + +// +// powerbase0 for OFDM rates +// powerbase1 for HT MCS rates +// +static void getPowerBase( + IN PADAPTER Adapter, + IN u8* pPowerLevel, + IN u8 Channel, + IN OUT u32* OfdmBase, + IN OUT u32* MCSBase + ) +{ + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); + u32 powerBase0, powerBase1; + u8 Legacy_pwrdiff=0; + s8 HT20_pwrdiff=0; + u8 i, powerlevel[2]; + + for(i=0; i<2; i++) + { + powerlevel[i] = pPowerLevel[i]; + Legacy_pwrdiff = pHalData->TxPwrLegacyHtDiff[i][Channel-1]; + powerBase0 = powerlevel[i] + Legacy_pwrdiff; + + powerBase0 = (powerBase0<<24) | (powerBase0<<16) |(powerBase0<<8) |powerBase0; + *(OfdmBase+i) = powerBase0; + //RTPRINT(FPHY, PHY_TXPWR, (" [OFDM power base index rf(%c) = 0x%x]\n", ((i==0)?'A':'B'), *(OfdmBase+i))); + } + + for(i=0; i<2; i++) + { + //Check HT20 to HT40 diff + if(pHalData->CurrentChannelBW == HT_CHANNEL_WIDTH_20) + { + HT20_pwrdiff = pHalData->TxPwrHt20Diff[i][Channel-1]; + powerlevel[i] += HT20_pwrdiff; + } + powerBase1 = powerlevel[i]; + powerBase1 = (powerBase1<<24) | (powerBase1<<16) |(powerBase1<<8) |powerBase1; + *(MCSBase+i) = powerBase1; + //RTPRINT(FPHY, PHY_TXPWR, (" [MCS power base index rf(%c) = 0x%x]\n", ((i==0)?'A':'B'), *(MCSBase+i))); + } +} + +static void getTxPowerWriteValByRegulatory( + IN PADAPTER Adapter, + IN u8 Channel, + IN u8 index, + IN u32* powerBase0, + IN u32* powerBase1, + OUT u32* pOutWriteVal + ) +{ + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); + struct dm_priv *pdmpriv = &pHalData->dmpriv; + u8 i, chnlGroup, pwr_diff_limit[4]; + u32 writeVal, customer_limit, rf; + + // + // Index 0 & 1= legacy OFDM, 2-5=HT_MCS rate + // + for(rf=0; rf<2; rf++) + { + switch(pHalData->EEPROMRegulatory) + { + case 0: // Realtek better performance + // increase power diff defined by Realtek for large power + chnlGroup = 0; + //RTPRINT(FPHY, PHY_TXPWR, ("MCSTxPowerLevelOriginalOffset[%d][%d] = 0x%x\n", + // chnlGroup, index, pHalData->MCSTxPowerLevelOriginalOffset[chnlGroup][index+(rf?8:0)])); + writeVal = pHalData->MCSTxPowerLevelOriginalOffset[chnlGroup][index+(rf?8:0)] + + ((index<2)?powerBase0[rf]:powerBase1[rf]); + //RTPRINT(FPHY, PHY_TXPWR, ("RTK better performance, writeVal(%c) = 0x%x\n", ((rf==0)?'A':'B'), writeVal)); + break; + case 1: // Realtek regulatory + // increase power diff defined by Realtek for regulatory + { + if(pHalData->pwrGroupCnt == 1) + chnlGroup = 0; + if(pHalData->pwrGroupCnt >= 3) + { + if(Channel <= 3) + chnlGroup = 0; + else if(Channel >= 4 && Channel <= 9) + chnlGroup = 1; + else if(Channel > 9) + chnlGroup = 2; + + if(pHalData->CurrentChannelBW == HT_CHANNEL_WIDTH_20) + chnlGroup++; + else + chnlGroup+=4; + } + //RTPRINT(FPHY, PHY_TXPWR, ("MCSTxPowerLevelOriginalOffset[%d][%d] = 0x%x\n", + //chnlGroup, index, pHalData->MCSTxPowerLevelOriginalOffset[chnlGroup][index+(rf?8:0)])); + writeVal = pHalData->MCSTxPowerLevelOriginalOffset[chnlGroup][index+(rf?8:0)] + + ((index<2)?powerBase0[rf]:powerBase1[rf]); + //RTPRINT(FPHY, PHY_TXPWR, ("Realtek regulatory, 20MHz, writeVal(%c) = 0x%x\n", ((rf==0)?'A':'B'), writeVal)); + } + break; + case 2: // Better regulatory + // don't increase any power diff + writeVal = ((index<2)?powerBase0[rf]:powerBase1[rf]); + //RTPRINT(FPHY, PHY_TXPWR, ("Better regulatory, writeVal(%c) = 0x%x\n", ((rf==0)?'A':'B'), writeVal)); + break; + case 3: // Customer defined power diff. + // increase power diff defined by customer. + chnlGroup = 0; + //RTPRINT(FPHY, PHY_TXPWR, ("MCSTxPowerLevelOriginalOffset[%d][%d] = 0x%x\n", + // chnlGroup, index, pHalData->MCSTxPowerLevelOriginalOffset[chnlGroup][index+(rf?8:0)])); + + if (pHalData->CurrentChannelBW == HT_CHANNEL_WIDTH_40) + { + //RTPRINT(FPHY, PHY_TXPWR, ("customer's limit, 40MHz rf(%c) = 0x%x\n", + // ((rf==0)?'A':'B'), pHalData->PwrGroupHT40[rf][Channel-1])); + } + else + { + //RTPRINT(FPHY, PHY_TXPWR, ("customer's limit, 20MHz rf(%c) = 0x%x\n", + // ((rf==0)?'A':'B'), pHalData->PwrGroupHT20[rf][Channel-1])); + } + for (i=0; i<4; i++) + { + pwr_diff_limit[i] = (u8)((pHalData->MCSTxPowerLevelOriginalOffset[chnlGroup][index+(rf?8:0)]&(0x7f<<(i*8)))>>(i*8)); + if (pHalData->CurrentChannelBW == HT_CHANNEL_WIDTH_40) + { + if(pwr_diff_limit[i] > pHalData->PwrGroupHT40[rf][Channel-1]) + pwr_diff_limit[i] = pHalData->PwrGroupHT40[rf][Channel-1]; + } + else + { + if(pwr_diff_limit[i] > pHalData->PwrGroupHT20[rf][Channel-1]) + pwr_diff_limit[i] = pHalData->PwrGroupHT20[rf][Channel-1]; + } + } + customer_limit = (pwr_diff_limit[3]<<24) | (pwr_diff_limit[2]<<16) | + (pwr_diff_limit[1]<<8) | (pwr_diff_limit[0]); + //RTPRINT(FPHY, PHY_TXPWR, ("Customer's limit rf(%c) = 0x%x\n", ((rf==0)?'A':'B'), customer_limit)); + + writeVal = customer_limit + ((index<2)?powerBase0[rf]:powerBase1[rf]); + //RTPRINT(FPHY, PHY_TXPWR, ("Customer, writeVal rf(%c)= 0x%x\n", ((rf==0)?'A':'B'), writeVal)); + break; + default: + chnlGroup = 0; + writeVal = pHalData->MCSTxPowerLevelOriginalOffset[chnlGroup][index+(rf?8:0)] + + ((index<2)?powerBase0[rf]:powerBase1[rf]); + //RTPRINT(FPHY, PHY_TXPWR, ("RTK better performance, writeVal rf(%c) = 0x%x\n", ((rf==0)?'A':'B'), writeVal)); + break; + } + +// 20100427 Joseph: Driver dynamic Tx power shall not affect Tx power. It shall be determined by power training mechanism. +// Currently, we cannot fully disable driver dynamic tx power mechanism because it is referenced by BT coexist mechanism. +// In the future, two mechanism shall be separated from each other and maintained independantly. Thanks for Lanhsin's reminder. + + if(pdmpriv->DynamicTxHighPowerLvl == TxHighPwrLevel_Level1) + writeVal = 0x14141414; + else if(pdmpriv->DynamicTxHighPowerLvl == TxHighPwrLevel_Level2) + writeVal = 0x00000000; + + + // 20100628 Joseph: High power mode for BT-Coexist mechanism. + // This mechanism is only applied when Driver-Highpower-Mechanism is OFF. + if(pdmpriv->DynamicTxHighPowerLvl == TxHighPwrLevel_BT1) + { + //RTPRINT(FBT, BT_TRACE, ("Tx Power (-6)\n")); + writeVal = writeVal - 0x06060606; + } + else if(pdmpriv->DynamicTxHighPowerLvl == TxHighPwrLevel_BT2) + { + //RTPRINT(FBT, BT_TRACE, ("Tx Power (-0)\n")); + writeVal = writeVal; + } + *(pOutWriteVal+rf) = writeVal; + } +} + +static void writeOFDMPowerReg( + IN PADAPTER Adapter, + IN u8 index, + IN u32* pValue + ) +{ + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); + u16 RegOffset_A[6] = { rTxAGC_A_Rate18_06, rTxAGC_A_Rate54_24, + rTxAGC_A_Mcs03_Mcs00, rTxAGC_A_Mcs07_Mcs04, + rTxAGC_A_Mcs11_Mcs08, rTxAGC_A_Mcs15_Mcs12}; + u16 RegOffset_B[6] = { rTxAGC_B_Rate18_06, rTxAGC_B_Rate54_24, + rTxAGC_B_Mcs03_Mcs00, rTxAGC_B_Mcs07_Mcs04, + rTxAGC_B_Mcs11_Mcs08, rTxAGC_B_Mcs15_Mcs12}; + u8 i, rf, pwr_val[4]; + u32 writeVal; + u16 RegOffset; + + for(rf=0; rf<2; rf++) + { + writeVal = pValue[rf]; + for(i=0; i<4; i++) + { + pwr_val[i] = (u8)((writeVal & (0x7f<<(i*8)))>>(i*8)); + if (pwr_val[i] > RF6052_MAX_TX_PWR) + pwr_val[i] = RF6052_MAX_TX_PWR; + } + writeVal = (pwr_val[3]<<24) | (pwr_val[2]<<16) |(pwr_val[1]<<8) |pwr_val[0]; + + if(rf == 0) + RegOffset = RegOffset_A[index]; + else + RegOffset = RegOffset_B[index]; + + PHY_SetBBReg(Adapter, RegOffset, bMaskDWord, writeVal); + //RTPRINT(FPHY, PHY_TXPWR, ("Set 0x%x = %08x\n", RegOffset, writeVal)); + + // 201005115 Joseph: Set Tx Power diff for Tx power training mechanism. + if(((pHalData->rf_type == RF_2T2R) && + (RegOffset == rTxAGC_A_Mcs15_Mcs12 || RegOffset == rTxAGC_B_Mcs15_Mcs12))|| + ((pHalData->rf_type != RF_2T2R) && + (RegOffset == rTxAGC_A_Mcs07_Mcs04 || RegOffset == rTxAGC_B_Mcs07_Mcs04)) ) + { + writeVal = pwr_val[3]; + if(RegOffset == rTxAGC_A_Mcs15_Mcs12 || RegOffset == rTxAGC_A_Mcs07_Mcs04) + RegOffset = 0xc90; + if(RegOffset == rTxAGC_B_Mcs15_Mcs12 || RegOffset == rTxAGC_B_Mcs07_Mcs04) + RegOffset = 0xc98; + for(i=0; i<3; i++) + { + if(i!=2) + writeVal = (writeVal>8)?(writeVal-8):0; + else + writeVal = (writeVal>6)?(writeVal-6):0; + rtw_write8(Adapter, (u32)(RegOffset+i), (u8)writeVal); + } + } + } +} +/*----------------------------------------------------------------------------- + * Function: PHY_RF6052SetOFDMTxPower + * + * Overview: For legacy and HY OFDM, we must read EEPROM TX power index for + * different channel and read original value in TX power register area from + * 0xe00. We increase offset and original value to be correct tx pwr. + * + * Input: NONE + * + * Output: NONE + * + * Return: NONE + * + * Revised History: + * When Who Remark + * 11/05/2008 MHC Simulate 8192 series method. + * 01/06/2009 MHC 1. Prevent Path B tx power overflow or underflow dure to + * A/B pwr difference or legacy/HT pwr diff. + * 2. We concern with path B legacy/HT OFDM difference. + * 01/22/2009 MHC Support new EPRO format from SD3. + * + *---------------------------------------------------------------------------*/ +VOID +rtl8192c_PHY_RF6052SetOFDMTxPower( + IN PADAPTER Adapter, + IN u8* pPowerLevel, + IN u8 Channel) +{ + //HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); + u32 writeVal[2], powerBase0[2], powerBase1[2]; + u8 index = 0; + + getPowerBase(Adapter, pPowerLevel, Channel, &powerBase0[0], &powerBase1[0]); + + for(index=0; index<6; index++) + { + getTxPowerWriteValByRegulatory(Adapter, Channel, index, + &powerBase0[0], &powerBase1[0], &writeVal[0]); + + writeOFDMPowerReg(Adapter, index, &writeVal[0]); + } + +} + + +static VOID +phy_RF6052_Config_HardCode( + IN PADAPTER Adapter + ) +{ + + // Set Default Bandwidth to 20M + //Adapter->HalFunc .SetBWModeHandler(Adapter, HT_CHANNEL_WIDTH_20); + + // TODO: Set Default Channel to channel one for RTL8225 + +} + +static int +phy_RF6052_Config_ParaFile( + IN PADAPTER Adapter + ) +{ + u32 u4RegValue; + u8 eRFPath; + BB_REGISTER_DEFINITION_T *pPhyReg; + + int rtStatus = _SUCCESS; + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); + static char sz88CRadioAFile[] = RTL8188C_PHY_RADIO_A; + static char sz88CRadioBFile[] = RTL8188C_PHY_RADIO_B; +#ifdef CONFIG_USB_HCI + static char sz88CRadioAFile_mCard[] = RTL8188C_PHY_RADIO_A_mCard; + static char sz88CRadioBFile_mCard[] = RTL8188C_PHY_RADIO_B_mCard; + static char sz88CRadioAFile_HP[] = RTL8188C_PHY_RADIO_A_HP; +#endif + static char sz92CRadioAFile[] = RTL8192C_PHY_RADIO_A; + static char sz92CRadioBFile[] = RTL8192C_PHY_RADIO_B; + static char sz8723RadioAFile[] = RTL8723_PHY_RADIO_A; + static char sz8723RadioBFile[] = RTL8723_PHY_RADIO_B; + char *pszRadioAFile, *pszRadioBFile; + + + if(IS_HARDWARE_TYPE_8192C(Adapter)) + { + if(IS_92C_SERIAL( pHalData->VersionID))// 88c's IPA is different from 92c's + { + pszRadioAFile = sz92CRadioAFile; + pszRadioBFile = sz92CRadioBFile; + } + else + { + pszRadioAFile = sz88CRadioAFile; + pszRadioBFile = sz88CRadioBFile; +#ifdef CONFIG_USB_HCI + if( BOARD_MINICARD == pHalData->BoardType) + { + pszRadioAFile = sz88CRadioAFile_mCard; + pszRadioBFile = sz88CRadioBFile_mCard; + } + else if( BOARD_USB_High_PA == pHalData->BoardType) + { + pszRadioAFile = sz88CRadioAFile_HP; + } +#endif + } + } + else if(IS_HARDWARE_TYPE_8723A(Adapter)) + { + pszRadioAFile = sz8723RadioAFile; + pszRadioBFile = sz8723RadioBFile; + } + + //3//----------------------------------------------------------------- + //3// <2> Initialize RF + //3//----------------------------------------------------------------- + //for(eRFPath = RF_PATH_A; eRFPath NumTotalRFPath; eRFPath++) + for(eRFPath = 0; eRFPath NumTotalRFPath; eRFPath++) + { + + pPhyReg = &pHalData->PHYRegDef[eRFPath]; + + /*----Store original RFENV control type----*/ + switch(eRFPath) + { + case RF_PATH_A: + case RF_PATH_C: + u4RegValue = PHY_QueryBBReg(Adapter, pPhyReg->rfintfs, bRFSI_RFENV); + break; + case RF_PATH_B : + case RF_PATH_D: + u4RegValue = PHY_QueryBBReg(Adapter, pPhyReg->rfintfs, bRFSI_RFENV<<16); + break; + } + + /*----Set RF_ENV enable----*/ + PHY_SetBBReg(Adapter, pPhyReg->rfintfe, bRFSI_RFENV<<16, 0x1); + rtw_udelay_os(1);//PlatformStallExecution(1); + + /*----Set RF_ENV output high----*/ + PHY_SetBBReg(Adapter, pPhyReg->rfintfo, bRFSI_RFENV, 0x1); + rtw_udelay_os(1);//PlatformStallExecution(1); + + /* Set bit number of Address and Data for RF register */ + PHY_SetBBReg(Adapter, pPhyReg->rfHSSIPara2, b3WireAddressLength, 0x0); // Set 1 to 4 bits for 8255 + rtw_udelay_os(1);//PlatformStallExecution(1); + + PHY_SetBBReg(Adapter, pPhyReg->rfHSSIPara2, b3WireDataLength, 0x0); // Set 0 to 12 bits for 8255 + rtw_udelay_os(1);//PlatformStallExecution(1); + + /*----Initialize RF fom connfiguration file----*/ + switch(eRFPath) + { + case RF_PATH_A: +#ifdef CONFIG_EMBEDDED_FWIMG + rtStatus= rtl8192c_PHY_ConfigRFWithHeaderFile(Adapter,(RF_RADIO_PATH_E)eRFPath); +#else + rtStatus = rtl8192c_PHY_ConfigRFWithParaFile(Adapter, pszRadioAFile, (RF_RADIO_PATH_E)eRFPath); +#endif + break; + case RF_PATH_B: +#ifdef CONFIG_EMBEDDED_FWIMG + rtStatus = rtl8192c_PHY_ConfigRFWithHeaderFile(Adapter,(RF_RADIO_PATH_E)eRFPath); +#else + rtStatus = rtl8192c_PHY_ConfigRFWithParaFile(Adapter, pszRadioBFile, (RF_RADIO_PATH_E)eRFPath); +#endif + break; + case RF_PATH_C: + break; + case RF_PATH_D: + break; + } + + /*----Restore RFENV control type----*/; + switch(eRFPath) + { + case RF_PATH_A: + case RF_PATH_C: + PHY_SetBBReg(Adapter, pPhyReg->rfintfs, bRFSI_RFENV, u4RegValue); + break; + case RF_PATH_B : + case RF_PATH_D: + PHY_SetBBReg(Adapter, pPhyReg->rfintfs, bRFSI_RFENV<<16, u4RegValue); + break; + } + + if(rtStatus != _SUCCESS){ + //RT_TRACE(COMP_FPGA, DBG_LOUD, ("phy_RF6052_Config_ParaFile():Radio[%d] Fail!!", eRFPath)); + goto phy_RF6052_Config_ParaFile_Fail; + } + + } + + //RT_TRACE(COMP_INIT, DBG_LOUD, ("<---phy_RF6052_Config_ParaFile()\n")); + return rtStatus; + +phy_RF6052_Config_ParaFile_Fail: + return rtStatus; +} + + +int +PHY_RF6052_Config8192C( + IN PADAPTER Adapter) +{ + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); + int rtStatus = _SUCCESS; + + // + // Initialize general global value + // + // TODO: Extend RF_PATH_C and RF_PATH_D in the future + if(pHalData->rf_type == RF_1T1R) + pHalData->NumTotalRFPath = 1; + else + pHalData->NumTotalRFPath = 2; + + // + // Config BB and RF + // + rtStatus = phy_RF6052_Config_ParaFile(Adapter); +#if 0 + switch( Adapter->MgntInfo.bRegHwParaFile ) + { + case 0: + phy_RF6052_Config_HardCode(Adapter); + break; + + case 1: + rtStatus = phy_RF6052_Config_ParaFile(Adapter); + break; + + case 2: + // Partial Modify. + phy_RF6052_Config_HardCode(Adapter); + phy_RF6052_Config_ParaFile(Adapter); + break; + + default: + phy_RF6052_Config_HardCode(Adapter); + break; + } +#endif + return rtStatus; + +} + + +// +// ==> RF shadow Operation API Code Section!!! +// +/*----------------------------------------------------------------------------- + * Function: PHY_RFShadowRead + * PHY_RFShadowWrite + * PHY_RFShadowCompare + * PHY_RFShadowRecorver + * PHY_RFShadowCompareAll + * PHY_RFShadowRecorverAll + * PHY_RFShadowCompareFlagSet + * PHY_RFShadowRecorverFlagSet + * + * Overview: When we set RF register, we must write shadow at first. + * When we are running, we must compare shadow abd locate error addr. + * Decide to recorver or not. + * + * Input: NONE + * + * Output: NONE + * + * Return: NONE + * + * Revised History: + * When Who Remark + * 11/20/2008 MHC Create Version 0. + * + *---------------------------------------------------------------------------*/ +u32 +PHY_RFShadowRead( + IN PADAPTER Adapter, + IN RF_RADIO_PATH_E eRFPath, + IN u32 Offset) +{ + return RF_Shadow[eRFPath][Offset].Value; + +} /* PHY_RFShadowRead */ + + +VOID +PHY_RFShadowWrite( + IN PADAPTER Adapter, + IN RF_RADIO_PATH_E eRFPath, + IN u32 Offset, + IN u32 Data) +{ + RF_Shadow[eRFPath][Offset].Value = (Data & bRFRegOffsetMask); + RF_Shadow[eRFPath][Offset].Driver_Write = _TRUE; + +} /* PHY_RFShadowWrite */ + + +BOOLEAN +PHY_RFShadowCompare( + IN PADAPTER Adapter, + IN RF_RADIO_PATH_E eRFPath, + IN u32 Offset) +{ + u32 reg; + // Check if we need to check the register + if (RF_Shadow[eRFPath][Offset].Compare == _TRUE) + { + reg = PHY_QueryRFReg(Adapter, eRFPath, Offset, bRFRegOffsetMask); + // Compare shadow and real rf register for 20bits!! + if (RF_Shadow[eRFPath][Offset].Value != reg) + { + // Locate error position. + RF_Shadow[eRFPath][Offset].ErrorOrNot = _TRUE; + //RT_TRACE(COMP_INIT, DBG_LOUD, + //("PHY_RFShadowCompare RF-%d Addr%02lx Err = %05lx\n", + //eRFPath, Offset, reg)); + } + return RF_Shadow[eRFPath][Offset].ErrorOrNot ; + } + return _FALSE; +} /* PHY_RFShadowCompare */ + + +VOID +PHY_RFShadowRecorver( + IN PADAPTER Adapter, + IN RF_RADIO_PATH_E eRFPath, + IN u32 Offset) +{ + // Check if the address is error + if (RF_Shadow[eRFPath][Offset].ErrorOrNot == _TRUE) + { + // Check if we need to recorver the register. + if (RF_Shadow[eRFPath][Offset].Recorver == _TRUE) + { + PHY_SetRFReg(Adapter, eRFPath, Offset, bRFRegOffsetMask, + RF_Shadow[eRFPath][Offset].Value); + //RT_TRACE(COMP_INIT, DBG_LOUD, + //("PHY_RFShadowRecorver RF-%d Addr%02lx=%05lx", + //eRFPath, Offset, RF_Shadow[eRFPath][Offset].Value)); + } + } + +} /* PHY_RFShadowRecorver */ + + +VOID +PHY_RFShadowCompareAll( + IN PADAPTER Adapter) +{ + u32 eRFPath; + u32 Offset; + + for (eRFPath = 0; eRFPath < RF6052_MAX_PATH; eRFPath++) + { + for (Offset = 0; Offset <= RF6052_MAX_REG; Offset++) + { + PHY_RFShadowCompare(Adapter, (RF_RADIO_PATH_E)eRFPath, Offset); + } + } + +} /* PHY_RFShadowCompareAll */ + + +VOID +PHY_RFShadowRecorverAll( + IN PADAPTER Adapter) +{ + u32 eRFPath; + u32 Offset; + + for (eRFPath = 0; eRFPath < RF6052_MAX_PATH; eRFPath++) + { + for (Offset = 0; Offset <= RF6052_MAX_REG; Offset++) + { + PHY_RFShadowRecorver(Adapter, (RF_RADIO_PATH_E)eRFPath, Offset); + } + } + +} /* PHY_RFShadowRecorverAll */ + + +VOID +PHY_RFShadowCompareFlagSet( + IN PADAPTER Adapter, + IN RF_RADIO_PATH_E eRFPath, + IN u32 Offset, + IN u8 Type) +{ + // Set True or False!!! + RF_Shadow[eRFPath][Offset].Compare = Type; + +} /* PHY_RFShadowCompareFlagSet */ + + +VOID +PHY_RFShadowRecorverFlagSet( + IN PADAPTER Adapter, + IN RF_RADIO_PATH_E eRFPath, + IN u32 Offset, + IN u8 Type) +{ + // Set True or False!!! + RF_Shadow[eRFPath][Offset].Recorver= Type; + +} /* PHY_RFShadowRecorverFlagSet */ + + +VOID +PHY_RFShadowCompareFlagSetAll( + IN PADAPTER Adapter) +{ + u32 eRFPath; + u32 Offset; + + for (eRFPath = 0; eRFPath < RF6052_MAX_PATH; eRFPath++) + { + for (Offset = 0; Offset <= RF6052_MAX_REG; Offset++) + { + // 2008/11/20 MH For S3S4 test, we only check reg 26/27 now!!!! + if (Offset != 0x26 && Offset != 0x27) + PHY_RFShadowCompareFlagSet(Adapter, (RF_RADIO_PATH_E)eRFPath, Offset, _FALSE); + else + PHY_RFShadowCompareFlagSet(Adapter, (RF_RADIO_PATH_E)eRFPath, Offset, _TRUE); + } + } + +} /* PHY_RFShadowCompareFlagSetAll */ + + +VOID +PHY_RFShadowRecorverFlagSetAll( + IN PADAPTER Adapter) +{ + u32 eRFPath; + u32 Offset; + + for (eRFPath = 0; eRFPath < RF6052_MAX_PATH; eRFPath++) + { + for (Offset = 0; Offset <= RF6052_MAX_REG; Offset++) + { + // 2008/11/20 MH For S3S4 test, we only check reg 26/27 now!!!! + if (Offset != 0x26 && Offset != 0x27) + PHY_RFShadowRecorverFlagSet(Adapter, (RF_RADIO_PATH_E)eRFPath, Offset, _FALSE); + else + PHY_RFShadowRecorverFlagSet(Adapter, (RF_RADIO_PATH_E)eRFPath, Offset, _TRUE); + } + } + +} /* PHY_RFShadowCompareFlagSetAll */ + +VOID +PHY_RFShadowRefresh( + IN PADAPTER Adapter) +{ + u32 eRFPath; + u32 Offset; + + for (eRFPath = 0; eRFPath < RF6052_MAX_PATH; eRFPath++) + { + for (Offset = 0; Offset <= RF6052_MAX_REG; Offset++) + { + RF_Shadow[eRFPath][Offset].Value = 0; + RF_Shadow[eRFPath][Offset].Compare = _FALSE; + RF_Shadow[eRFPath][Offset].Recorver = _FALSE; + RF_Shadow[eRFPath][Offset].ErrorOrNot = _FALSE; + RF_Shadow[eRFPath][Offset].Driver_Write = _FALSE; + } + } + +} /* PHY_RFShadowRead */ + +/* End of HalRf6052.c */ --- linux-raspi2-4.2.0.orig/drivers/net/wireless/rtl8192cu/hal/rtl8192c/rtl8192c_rxdesc.c +++ linux-raspi2-4.2.0/drivers/net/wireless/rtl8192cu/hal/rtl8192c/rtl8192c_rxdesc.c @@ -0,0 +1,874 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved. + * + * 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 + * published by the Free Software Foundation. + * + * 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 Street, Fifth Floor, Boston, MA 02110, USA + * + * + ******************************************************************************/ +#define _RTL8192C_REDESC_C_ +#include +#include +#include +#include + +static u8 evm_db2percentage(s8 value) +{ + // + // -33dB~0dB to 0%~99% + // + s8 ret_val; + + ret_val = value; + //ret_val /= 2; + + RT_TRACE(_module_rtl871x_recv_c_,_drv_info_,("EVMdbToPercentage92S Value=%d / %x \n", ret_val, ret_val)); + + if(ret_val >= 0) + ret_val = 0; + if(ret_val <= -33) + ret_val = -33; + + ret_val = 0 - ret_val; + ret_val*=3; + + if(ret_val == 99) + ret_val = 100; + + return(ret_val); +} + + +static s32 signal_scale_mapping(_adapter *padapter, s32 cur_sig ) +{ + s32 ret_sig; + +#ifdef CONFIG_USB_HCI + if(cur_sig >= 51 && cur_sig <= 100) + { + ret_sig = 100; + } + else if(cur_sig >= 41 && cur_sig <= 50) + { + ret_sig = 80 + ((cur_sig - 40)*2); + } + else if(cur_sig >= 31 && cur_sig <= 40) + { + ret_sig = 66 + (cur_sig - 30); + } + else if(cur_sig >= 21 && cur_sig <= 30) + { + ret_sig = 54 + (cur_sig - 20); + } + else if(cur_sig >= 10 && cur_sig <= 20) + { + ret_sig = 42 + (((cur_sig - 10) * 2) / 3); + } + else if(cur_sig >= 5 && cur_sig <= 9) + { + ret_sig = 22 + (((cur_sig - 5) * 3) / 2); + } + else if(cur_sig >= 1 && cur_sig <= 4) + { + ret_sig = 6 + (((cur_sig - 1) * 3) / 2); + } + else + { + ret_sig = cur_sig; + } +#else + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(padapter); + + if(pHalData->CustomerID == RT_CID_819x_Lenovo) + { + // Step 1. Scale mapping. + // 20100611 Joseph: Re-tunning RSSI presentation for Lenovo. + // 20100426 Joseph: Modify Signal strength mapping. + // This modification makes the RSSI indication similar to Intel solution. + // 20100414 Joseph: Tunning RSSI for Lenovo according to RTL8191SE. + if(cur_sig >= 54 && cur_sig <= 100) + { + ret_sig = 100; + } + else if(cur_sig>=42 && cur_sig <= 53 ) + { + ret_sig = 95; + } + else if(cur_sig>=36 && cur_sig <= 41 ) + { + ret_sig = 74 + ((cur_sig - 36) *20)/6; + } + else if(cur_sig>=33 && cur_sig <= 35 ) + { + ret_sig = 65 + ((cur_sig - 33) *8)/2; + } + else if(cur_sig>=18 && cur_sig <= 32 ) + { + ret_sig = 62 + ((cur_sig - 18) *2)/15; + } + else if(cur_sig>=15 && cur_sig <= 17 ) + { + ret_sig = 33 + ((cur_sig - 15) *28)/2; + } + else if(cur_sig>=10 && cur_sig <= 14 ) + { + ret_sig = 39; + } + else if(cur_sig>=8 && cur_sig <= 9 ) + { + ret_sig = 33; + } + else if(cur_sig <= 8 ) + { + ret_sig = 19; + } + } + else + { + // Step 1. Scale mapping. + if(cur_sig >= 61 && cur_sig <= 100) + { + ret_sig = 90 + ((cur_sig - 60) / 4); + } + else if(cur_sig >= 41 && cur_sig <= 60) + { + ret_sig = 78 + ((cur_sig - 40) / 2); + } + else if(cur_sig >= 31 && cur_sig <= 40) + { + ret_sig = 66 + (cur_sig - 30); + } + else if(cur_sig >= 21 && cur_sig <= 30) + { + ret_sig = 54 + (cur_sig - 20); + } + else if(cur_sig >= 5 && cur_sig <= 20) + { + ret_sig = 42 + (((cur_sig - 5) * 2) / 3); + } + else if(cur_sig == 4) + { + ret_sig = 36; + } + else if(cur_sig == 3) + { + ret_sig = 27; + } + else if(cur_sig == 2) + { + ret_sig = 18; + } + else if(cur_sig == 1) + { + ret_sig = 9; + } + else + { + ret_sig = cur_sig; + } + } +#endif + + return ret_sig; +} + + +static s32 translate2dbm(u8 signal_strength_idx) +{ + s32 signal_power; // in dBm. + + + // Translate to dBm (x=0.5y-95). + signal_power = (s32)((signal_strength_idx + 1) >> 1); + signal_power -= 95; + + return signal_power; +} + +static void query_rx_phy_status(union recv_frame *prframe, struct phy_stat *pphy_stat) +{ + PHY_STS_OFDM_8192CD_T *pOfdm_buf; + PHY_STS_CCK_8192CD_T *pCck_buf; + u8 i, max_spatial_stream, evm; + s8 rx_pwr[4], rx_pwr_all = 0; + u8 pwdb_all; + u32 rssi,total_rssi=0; + u8 bcck_rate=0, rf_rx_num = 0, cck_highpwr = 0; + _adapter *padapter = prframe->u.hdr.adapter; + struct rx_pkt_attrib *pattrib = &prframe->u.hdr.attrib; + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(padapter); + struct dm_priv *pdmpriv = &pHalData->dmpriv; + u8 tmp_rxsnr; + s8 rx_snrX; + +#ifdef CONFIG_HW_ANTENNA_DIVERSITY + PHY_RX_DRIVER_INFO_8192CD *pDrvInfo = ((PHY_RX_DRIVER_INFO_8192CD *)pphy_stat); + u8 bant1_sel = (pDrvInfo->ANTSEL == 1)?_TRUE:_FALSE; +#endif + + // Record it for next packet processing + bcck_rate=(pattrib->mcs_rate<=3? 1:0); + + if(bcck_rate) //CCK + { + u8 report; +#ifdef CONFIG_HW_ANTENNA_DIVERSITY + if(bant1_sel == _TRUE) + pHalData->CCK_Ant1_Cnt++; + else + pHalData->CCK_Ant2_Cnt++; +#endif + + // CCK Driver info Structure is not the same as OFDM packet. + pCck_buf = (PHY_STS_CCK_8192CD_T *)pphy_stat; + //Adapter->RxStats.NumQryPhyStatusCCK++; + + // + // (1)Hardware does not provide RSSI for CCK + // (2)PWDB, Average PWDB cacluated by hardware (for rate adaptive) + // + + if(padapter->pwrctrlpriv.rf_pwrstate == rf_on) + cck_highpwr = (u8)pHalData->bCckHighPower; + else + cck_highpwr = _FALSE; + + if(!cck_highpwr) + { + report = pCck_buf->cck_agc_rpt&0xc0; + report = report>>6; + switch(report) + { + // 03312009 modified by cosa + // Modify the RF RNA gain value to -40, -20, -2, 14 by Jenyu's suggestion + // Note: different RF with the different RNA gain. + case 0x3: + rx_pwr_all = (-46) - (pCck_buf->cck_agc_rpt & 0x3e); + break; + case 0x2: + rx_pwr_all = (-26) - (pCck_buf->cck_agc_rpt & 0x3e); + break; + case 0x1: + rx_pwr_all = (-12) - (pCck_buf->cck_agc_rpt & 0x3e); + break; + case 0x0: + rx_pwr_all = (16) - (pCck_buf->cck_agc_rpt & 0x3e); + break; + } + } + else + { + report = pCck_buf->cck_agc_rpt & 0x60; + report = report>>5; + switch(report) + { + case 0x3: + rx_pwr_all = (-46) - ((pCck_buf->cck_agc_rpt & 0x1f)<<1) ; + break; + case 0x2: + rx_pwr_all = (-26)- ((pCck_buf->cck_agc_rpt & 0x1f)<<1); + break; + case 0x1: + rx_pwr_all = (-12) - ((pCck_buf->cck_agc_rpt & 0x1f)<<1) ; + break; + case 0x0: + rx_pwr_all = (16) - ((pCck_buf->cck_agc_rpt & 0x1f)<<1) ; + break; + } + } + + pwdb_all= query_rx_pwr_percentage(rx_pwr_all); + if(pHalData->CustomerID == RT_CID_819x_Lenovo) + { + // CCK gain is smaller than OFDM/MCS gain, + // so we add gain diff by experiences, the val is 6 + pwdb_all+=6; + if(pwdb_all > 100) + pwdb_all = 100; + // modify the offset to make the same gain index with OFDM. + if(pwdb_all > 34 && pwdb_all <= 42) + pwdb_all -= 2; + else if(pwdb_all > 26 && pwdb_all <= 34) + pwdb_all -= 6; + else if(pwdb_all > 14 && pwdb_all <= 26) + pwdb_all -= 8; + else if(pwdb_all > 4 && pwdb_all <= 14) + pwdb_all -= 4; + } + + pattrib->RxPWDBAll = pwdb_all; //for DIG/rate adaptive + pattrib->RecvSignalPower = rx_pwr_all; //dBM + padapter->recvpriv.rxpwdb = rx_pwr_all; + // + // (3) Get Signal Quality (EVM) + // + //if(bPacketMatchBSSID) + { + u8 sq; + + if(pHalData->CustomerID == RT_CID_819x_Lenovo) + { + // mapping to 5 bars for vista signal strength + // signal quality in driver will be displayed to signal strength + // in vista. + if(pwdb_all >= 50) + sq = 100; + else if(pwdb_all >= 35 && pwdb_all < 50) + sq = 80; + else if(pwdb_all >= 22 && pwdb_all < 35) + sq = 60; + else if(pwdb_all >= 18 && pwdb_all < 22) + sq = 40; + else + sq = 20; + } + else + { + if(pwdb_all> 40) + { + sq = 100; + } + else + { + sq = pCck_buf->SQ_rpt; + + if(pCck_buf->SQ_rpt > 64) + sq = 0; + else if (pCck_buf->SQ_rpt < 20) + sq= 100; + else + sq = ((64-sq) * 100) / 44; + + } + } + + pattrib->signal_qual=sq; + pattrib->rx_mimo_signal_qual[0]=sq; + pattrib->rx_mimo_signal_qual[1]=(-1); + } + + } + else //OFDM/HT + { +#ifdef CONFIG_HW_ANTENNA_DIVERSITY + if(bant1_sel == _TRUE) + pHalData->OFDM_Ant1_Cnt++; + else + pHalData->OFDM_Ant2_Cnt++; +#endif + pdmpriv->OFDM_Pkt_Cnt++; + + pOfdm_buf = (PHY_STS_OFDM_8192CD_T *)pphy_stat; + + // + // (1)Get RSSI per-path + // + for(i=0; iNumTotalRFPath; i++) + { + // 2008/01/30 MH we will judge RF RX path now. + if (pHalData->bRFPathRxEnable[i]) + rf_rx_num++; + //else + //continue; + + rx_pwr[i] = ((pOfdm_buf->trsw_gain_X[i]&0x3F)*2) - 110; + padapter->recvpriv.RxRssi[i] = rx_pwr[i]; + /* Translate DBM to percentage. */ + pattrib->rx_rssi[i] = rssi = query_rx_pwr_percentage(rx_pwr[i]); + total_rssi += rssi; + + RT_TRACE(_module_rtl871x_recv_c_, _drv_err_, ("RF-%d RXPWR=%x RSSI=%d\n", i, rx_pwr[i], rssi)); + + //Get Rx snr value in DB + tmp_rxsnr = pOfdm_buf->rxsnr_X[i]; + rx_snrX = (s8)(tmp_rxsnr); + rx_snrX >>= 1; + padapter->recvpriv.RxSNRdB[i] = (int)rx_snrX; + pattrib->rx_snr[i]=pOfdm_buf->rxsnr_X[i]; + /* Record Signal Strength for next packet */ + //if(bPacketMatchBSSID) + { + //pRfd->Status.RxMIMOSignalStrength[i] =(u1Byte) RSSI; + + //The following is for lenovo signal strength in vista + if(pHalData->CustomerID == RT_CID_819x_Lenovo) + { + u8 sq; + + if(i == 0) + { + // mapping to 5 bars for vista signal strength + // signal quality in driver will be displayed to signal strength + // in vista. + if(rssi >= 50) + sq = 100; + else if(rssi >= 35 && rssi < 50) + sq = 80; + else if(rssi >= 22 && rssi < 35) + sq = 60; + else if(rssi >= 18 && rssi < 22) + sq = 40; + else + sq = 20; + //DbgPrint("ofdm/mcs RSSI=%d\n", RSSI); + //pRfd->Status.SignalQuality = SQ; + //DbgPrint("ofdm/mcs SQ = %d\n", pRfd->Status.SignalQuality); + } + } + } + } + + + // + // (2)PWDB, Average PWDB cacluated by hardware (for rate adaptive),average + // + rx_pwr_all = (((pOfdm_buf->pwdb_all ) >> 1 )& 0x7f) -110;//for OFDM Average RSSI + pwdb_all = query_rx_pwr_percentage(rx_pwr_all); + + RT_TRACE(_module_rtl871x_recv_c_, _drv_err_, ("PWDB_ALL=%d\n", pwdb_all)); + + pattrib->RxPWDBAll = pwdb_all; //for DIG/rate adaptive + pattrib->RecvSignalPower = rx_pwr_all;//dBM + padapter->recvpriv.rxpwdb = rx_pwr_all; + // + // (3)EVM of HT rate + // + if(pHalData->CustomerID != RT_CID_819x_Lenovo) + { + if(pattrib->rxht && pattrib->mcs_rate >=20 && pattrib->mcs_rate<=27) + max_spatial_stream = 2; //both spatial stream make sense + else + max_spatial_stream = 1; //only spatial stream 1 makes sense + + for(i=0; i>= 1" because the compilor of free build environment + // fill most significant bit to "zero" when doing shifting operation which may change a negative + // value to positive one, then the dbm value (which is supposed to be negative) is not correct anymore. + evm = evm_db2percentage( (pOfdm_buf->rxevm_X[i]/*/ 2*/));//dbm + + RT_TRACE(_module_rtl871x_recv_c_, _drv_err_, ("RXRATE=%x RXEVM=%x EVM=%s%d\n", + pattrib->mcs_rate, pOfdm_buf->rxevm_X[i], "%",evm)); + + //if(bPacketMatchBSSID) + { + if(i==0) // Fill value in RFD, Get the first spatial stream only + { + pattrib->signal_qual = (u8)(evm & 0xff); + } + pattrib->rx_mimo_signal_qual[i] = (u8)(evm & 0xff); + } + } + + } + + // + // 4. Record rx statistics for debug + // + + } + + + //UI BSS List signal strength(in percentage), make it good looking, from 0~100. + //It is assigned to the BSS List in GetValueFromBeaconOrProbeRsp(). + if(bcck_rate) + { + pattrib->signal_strength=(u8)signal_scale_mapping(padapter, pwdb_all); + } + else + { + if (rf_rx_num != 0) + { + pattrib->signal_strength= (u8)(signal_scale_mapping(padapter, total_rssi/=rf_rx_num)); + } + } + //DBG_8192C("%s,rx_pwr_all(%d),RxPWDBAll(%d)\n",__FUNCTION__,rx_pwr_all,pattrib->RxPWDBAll); + +} + + +static void process_rssi(_adapter *padapter,union recv_frame *prframe) +{ + u32 last_rssi, tmp_val; + struct rx_pkt_attrib *pattrib = &prframe->u.hdr.attrib; +#ifdef CONFIG_NEW_SIGNAL_STAT_PROCESS + struct signal_stat * signal_stat = &padapter->recvpriv.signal_strength_data; +#endif //CONFIG_NEW_SIGNAL_STAT_PROCESS + + //DBG_8192C("process_rssi=> pattrib->rssil(%d) signal_strength(%d)\n ",pattrib->RecvSignalPower,pattrib->signal_strength); + //if(pRfd->Status.bPacketToSelf || pRfd->Status.bPacketBeacon) + { + + #ifdef CONFIG_NEW_SIGNAL_STAT_PROCESS + if(signal_stat->update_req) { + signal_stat->total_num = 0; + signal_stat->total_val = 0; + signal_stat->update_req = 0; + } + + signal_stat->total_num++; + signal_stat->total_val += pattrib->signal_strength; + signal_stat->avg_val = signal_stat->total_val / signal_stat->total_num; + #else //CONFIG_NEW_SIGNAL_STAT_PROCESS + + //Adapter->RxStats.RssiCalculateCnt++; //For antenna Test + if(padapter->recvpriv.signal_strength_data.total_num++ >= PHY_RSSI_SLID_WIN_MAX) + { + padapter->recvpriv.signal_strength_data.total_num = PHY_RSSI_SLID_WIN_MAX; + last_rssi = padapter->recvpriv.signal_strength_data.elements[padapter->recvpriv.signal_strength_data.index]; + padapter->recvpriv.signal_strength_data.total_val -= last_rssi; + } + padapter->recvpriv.signal_strength_data.total_val +=pattrib->signal_strength; + + padapter->recvpriv.signal_strength_data.elements[padapter->recvpriv.signal_strength_data.index++] = pattrib->signal_strength; + if(padapter->recvpriv.signal_strength_data.index >= PHY_RSSI_SLID_WIN_MAX) + padapter->recvpriv.signal_strength_data.index = 0; + + + tmp_val = padapter->recvpriv.signal_strength_data.total_val/padapter->recvpriv.signal_strength_data.total_num; + + if(padapter->recvpriv.is_signal_dbg) { + padapter->recvpriv.signal_strength= padapter->recvpriv.signal_strength_dbg; + padapter->recvpriv.rssi=(s8)translate2dbm((u8)padapter->recvpriv.signal_strength_dbg); + } else { + padapter->recvpriv.signal_strength= tmp_val; + padapter->recvpriv.rssi=(s8)translate2dbm((u8)tmp_val); + } + + RT_TRACE(_module_rtl871x_recv_c_,_drv_info_,("UI RSSI = %d, ui_rssi.TotalVal = %d, ui_rssi.TotalNum = %d\n", tmp_val, padapter->recvpriv.signal_strength_data.total_val,padapter->recvpriv.signal_strength_data.total_num)); + #endif //CONFIG_NEW_SIGNAL_STAT_PROCESS + } + +}// Process_UI_RSSI_8192C + + +static void process_PWDB(_adapter *padapter, union recv_frame *prframe) +{ + int UndecoratedSmoothedPWDB; + int UndecoratedSmoothedCCK; + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(padapter); + struct dm_priv *pdmpriv = &pHalData->dmpriv; + struct rx_pkt_attrib *pattrib= &prframe->u.hdr.attrib; + struct sta_info *psta = prframe->u.hdr.psta; + u8 isCCKrate=(pattrib->mcs_rate<=3? 1:0); + + + if(psta) + { + UndecoratedSmoothedPWDB = psta->rssi_stat.UndecoratedSmoothedPWDB; + UndecoratedSmoothedCCK = psta->rssi_stat.UndecoratedSmoothedCCK; + } + else + { + UndecoratedSmoothedPWDB = pdmpriv->UndecoratedSmoothedPWDB; + UndecoratedSmoothedCCK = pdmpriv->UndecoratedSmoothedCCK; + } + + //if(pRfd->Status.bPacketToSelf || pRfd->Status.bPacketBeacon) + + if(!isCCKrate) + { + // Process OFDM RSSI + if(UndecoratedSmoothedPWDB < 0) // initialize + { + UndecoratedSmoothedPWDB = pattrib->RxPWDBAll; + } + + if(pattrib->RxPWDBAll > (u32)UndecoratedSmoothedPWDB) + { + UndecoratedSmoothedPWDB = + ( ((UndecoratedSmoothedPWDB)*(Rx_Smooth_Factor-1)) + + (pattrib->RxPWDBAll)) /(Rx_Smooth_Factor); + + UndecoratedSmoothedPWDB = UndecoratedSmoothedPWDB + 1; + } + else + { + UndecoratedSmoothedPWDB = + ( ((UndecoratedSmoothedPWDB)*(Rx_Smooth_Factor-1)) + + (pattrib->RxPWDBAll)) /(Rx_Smooth_Factor); + } + } + else + { + // Process CCK RSSI + if(UndecoratedSmoothedCCK < 0) // initialize + { + UndecoratedSmoothedCCK = pattrib->RxPWDBAll; + } + + if(pattrib->RxPWDBAll > (u32)UndecoratedSmoothedCCK) + { + UndecoratedSmoothedCCK = + ( ((UndecoratedSmoothedCCK)*(Rx_Smooth_Factor-1)) + + (pattrib->RxPWDBAll)) /(Rx_Smooth_Factor); + + UndecoratedSmoothedCCK = UndecoratedSmoothedCCK + 1; + } + else + { + UndecoratedSmoothedCCK = + ( ((UndecoratedSmoothedCCK)*(Rx_Smooth_Factor-1)) + + (pattrib->RxPWDBAll)) /(Rx_Smooth_Factor); + } + } + + + if(psta) + { + //psta->UndecoratedSmoothedPWDB = UndecoratedSmoothedPWDB;//todo: + pdmpriv->UndecoratedSmoothedPWDB = UndecoratedSmoothedPWDB; + + if(pdmpriv->RSSI_Select == RSSI_OFDM){ + psta->rssi_stat.UndecoratedSmoothedPWDB = UndecoratedSmoothedPWDB; + } + else if(pdmpriv->RSSI_Select == RSSI_CCK){ + psta->rssi_stat.UndecoratedSmoothedPWDB = UndecoratedSmoothedCCK; + } + else{ + if(UndecoratedSmoothedPWDB <0 ) + pdmpriv->UndecoratedSmoothedPWDB = UndecoratedSmoothedCCK; + else + pdmpriv->UndecoratedSmoothedPWDB = UndecoratedSmoothedPWDB; + } + psta->rssi_stat.UndecoratedSmoothedCCK = UndecoratedSmoothedCCK; + } + else + { + //pdmpriv->UndecoratedSmoothedPWDB = UndecoratedSmoothedPWDB; + + if(pdmpriv->RSSI_Select == RSSI_OFDM){ + pdmpriv->UndecoratedSmoothedPWDB = UndecoratedSmoothedPWDB; + } + else if(pdmpriv->RSSI_Select == RSSI_CCK){ + pdmpriv->UndecoratedSmoothedPWDB = UndecoratedSmoothedCCK; + } + else { + if(UndecoratedSmoothedPWDB <0 ) + pdmpriv->UndecoratedSmoothedPWDB = UndecoratedSmoothedCCK; + else + pdmpriv->UndecoratedSmoothedPWDB = UndecoratedSmoothedPWDB; + + } + pdmpriv->UndecoratedSmoothedCCK = UndecoratedSmoothedCCK; + } + + //UpdateRxSignalStatistics8192C(padapter, prframe); + +} + + +static void process_link_qual(_adapter *padapter,union recv_frame *prframe) +{ + u32 last_evm=0, tmpVal; + struct rx_pkt_attrib *pattrib; +#ifdef CONFIG_NEW_SIGNAL_STAT_PROCESS + struct signal_stat * signal_stat; +#endif //CONFIG_NEW_SIGNAL_STAT_PROCESS + + if(prframe == NULL || padapter==NULL){ + return; + } + + pattrib = &prframe->u.hdr.attrib; +#ifdef CONFIG_NEW_SIGNAL_STAT_PROCESS + signal_stat = &padapter->recvpriv.signal_qual_data; +#endif //CONFIG_NEW_SIGNAL_STAT_PROCESS + + //DBG_8192C("process_link_qual=> pattrib->signal_qual(%d)\n ",pattrib->signal_qual); + +#ifdef CONFIG_NEW_SIGNAL_STAT_PROCESS + if(signal_stat->update_req) { + signal_stat->total_num = 0; + signal_stat->total_val = 0; + signal_stat->update_req = 0; + } + + signal_stat->total_num++; + signal_stat->total_val += pattrib->signal_qual; + signal_stat->avg_val = signal_stat->total_val / signal_stat->total_num; + +#else //CONFIG_NEW_SIGNAL_STAT_PROCESS + if(pattrib->signal_qual != 0) + { + // + // 1. Record the general EVM to the sliding window. + // + if(padapter->recvpriv.signal_qual_data.total_num++ >= PHY_LINKQUALITY_SLID_WIN_MAX) + { + padapter->recvpriv.signal_qual_data.total_num = PHY_LINKQUALITY_SLID_WIN_MAX; + last_evm = padapter->recvpriv.signal_qual_data.elements[padapter->recvpriv.signal_qual_data.index]; + padapter->recvpriv.signal_qual_data.total_val -= last_evm; + } + padapter->recvpriv.signal_qual_data.total_val += pattrib->signal_qual; + + padapter->recvpriv.signal_qual_data.elements[padapter->recvpriv.signal_qual_data.index++] = pattrib->signal_qual; + if(padapter->recvpriv.signal_qual_data.index >= PHY_LINKQUALITY_SLID_WIN_MAX) + padapter->recvpriv.signal_qual_data.index = 0; + + RT_TRACE(_module_rtl871x_recv_c_,_drv_info_,("Total SQ=%d pattrib->signal_qual= %d\n", padapter->recvpriv.signal_qual_data.total_val, pattrib->signal_qual)); + + // <1> Showed on UI for user, in percentage. + tmpVal = padapter->recvpriv.signal_qual_data.total_val/padapter->recvpriv.signal_qual_data.total_num; + padapter->recvpriv.signal_qual=(u8)tmpVal; + + } + else + { + RT_TRACE(_module_rtl871x_recv_c_,_drv_err_,(" pattrib->signal_qual =%d\n", pattrib->signal_qual)); + } +#endif //CONFIG_NEW_SIGNAL_STAT_PROCESS + +}// Process_UiLinkQuality8192S + + +static void process_phy_info(_adapter *padapter, union recv_frame *prframe) +{ + union recv_frame *precvframe = (union recv_frame *)prframe; + +#ifdef CONFIG_SW_ANTENNA_DIVERSITY + // If we switch to the antenna for testing, the signal strength + // of the packets in this time shall not be counted into total receiving power. + // This prevents error counting Rx signal strength and affecting other dynamic mechanism. + + // Select the packets to do RSSI checking for antenna switching. + SwAntDivRSSICheck8192C(padapter, precvframe->u.hdr.attrib.RxPWDBAll); + + if(GET_HAL_DATA(padapter)->RSSI_test == _TRUE) + return; +#endif + // + // Check RSSI + // + process_rssi(padapter, precvframe); + // + // Check PWDB. + // + process_PWDB(padapter, precvframe); + // + // Check EVM + // + process_link_qual(padapter, precvframe); + +} + + +void rtl8192c_translate_rx_signal_stuff(union recv_frame *precvframe, struct phy_stat *pphy_info) +{ + struct rx_pkt_attrib *pattrib = &precvframe->u.hdr.attrib; + _adapter *padapter = precvframe->u.hdr.adapter; + u8 bPacketMatchBSSID =_FALSE; + u8 bPacketToSelf = _FALSE; + u8 bPacketBeacon = _FALSE; + + if((pattrib->physt) && (pphy_info != NULL)) + { + bPacketMatchBSSID = ((!IsFrameTypeCtrl(precvframe->u.hdr.rx_data)) && !(pattrib->icv_err) && !(pattrib->crc_err) && + _rtw_memcmp(get_hdr_bssid(precvframe->u.hdr.rx_data), get_my_bssid(&padapter->mlmeextpriv.mlmext_info.network), ETH_ALEN)); + + + bPacketToSelf = bPacketMatchBSSID && (_rtw_memcmp(get_da(precvframe->u.hdr.rx_data), myid(&padapter->eeprompriv), ETH_ALEN)); + + bPacketBeacon =bPacketMatchBSSID && (GetFrameSubType(precvframe->u.hdr.rx_data) == WIFI_BEACON); + + query_rx_phy_status(precvframe, pphy_info); + + precvframe->u.hdr.psta = NULL; + if(bPacketMatchBSSID && check_fwstate(&padapter->mlmepriv, WIFI_AP_STATE) == _TRUE) + { + u8 *sa; + struct sta_info *psta=NULL; + struct sta_priv *pstapriv = &padapter->stapriv; + + sa = get_sa(precvframe->u.hdr.rx_data); + + psta = rtw_get_stainfo(pstapriv, sa); + if(psta) + { + precvframe->u.hdr.psta = psta; + process_phy_info(padapter, precvframe); + } + } + else if(bPacketToSelf || bPacketBeacon) + { + if(check_fwstate(&padapter->mlmepriv, WIFI_ADHOC_STATE|WIFI_ADHOC_MASTER_STATE) == _TRUE) + { + u8 *sa; + struct sta_info *psta=NULL; + struct sta_priv *pstapriv = &padapter->stapriv; + + sa = get_sa(precvframe->u.hdr.rx_data); + + psta = rtw_get_stainfo(pstapriv, sa); + if(psta) + { + precvframe->u.hdr.psta = psta; + } + } + + process_phy_info(padapter, precvframe); + } + } +} + +void rtl8192c_query_rx_desc_status(union recv_frame *precvframe, struct recv_stat *pdesc) +{ + struct rx_pkt_attrib *pattrib = &precvframe->u.hdr.attrib; + + //Offset 0 + pattrib->physt = (u8)((le32_to_cpu(pdesc->rxdw0) >> 26) & 0x1); + pattrib->pkt_len = (u16)(le32_to_cpu(pdesc->rxdw0)&0x00003fff); + pattrib->drvinfo_sz = (u8)((le32_to_cpu(pdesc->rxdw0) >> 16) & 0xf) * 8;//uint 2^3 = 8 bytes + + pattrib->shift_sz = (u8)((le32_to_cpu(pdesc->rxdw0) >> 24) & 0x3); + + pattrib->crc_err = (u8)((le32_to_cpu(pdesc->rxdw0) >> 14) & 0x1); + pattrib->icv_err = (u8)((le32_to_cpu(pdesc->rxdw0) >> 15) & 0x1); + pattrib->qos = (u8)(( le32_to_cpu( pdesc->rxdw0 ) >> 23) & 0x1);// Qos data, wireless lan header length is 26 + pattrib->bdecrypted = (le32_to_cpu(pdesc->rxdw0) & BIT(27))? 0:1; + + //Offset 4 + pattrib->mfrag = (u8)((le32_to_cpu(pdesc->rxdw1) >> 27) & 0x1);//more fragment bit + + //Offset 8 + pattrib->frag_num = (u8)((le32_to_cpu(pdesc->rxdw2) >> 12) & 0xf);//fragmentation number + + //Offset 12 +#ifdef CONFIG_TCP_CSUM_OFFLOAD_RX + if ( le32_to_cpu(pdesc->rxdw3) & BIT(13)){ + pattrib->tcpchk_valid = 1; // valid + if ( le32_to_cpu(pdesc->rxdw3) & BIT(11) ) { + pattrib->tcp_chkrpt = 1; // correct + //DBG_8192C("tcp csum ok\n"); + } + else + pattrib->tcp_chkrpt = 0; // incorrect + + if ( le32_to_cpu(pdesc->rxdw3) & BIT(12) ) + pattrib->ip_chkrpt = 1; // correct + else + pattrib->ip_chkrpt = 0; // incorrect + } + else { + pattrib->tcpchk_valid = 0; // invalid + } +#endif + + pattrib->mcs_rate=(u8)((le32_to_cpu(pdesc->rxdw3))&0x3f); + pattrib->rxht=(u8)((le32_to_cpu(pdesc->rxdw3) >>6)&0x1); + pattrib->sgi=(u8)((le32_to_cpu(pdesc->rxdw3) >>8)&0x1); + //Offset 16 + //Offset 20 + +} --- linux-raspi2-4.2.0.orig/drivers/net/wireless/rtl8192cu/hal/rtl8192c/rtl8192c_sreset.c +++ linux-raspi2-4.2.0/drivers/net/wireless/rtl8192cu/hal/rtl8192c/rtl8192c_sreset.c @@ -0,0 +1,93 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved. + * + * 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 + * published by the Free Software Foundation. + * + * 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 Street, Fifth Floor, Boston, MA 02110, USA + * + * + ******************************************************************************/ +#include +#include +#ifdef DBG_CONFIG_ERROR_DETECT +void rtl8192c_sreset_xmit_status_check(_adapter *padapter) +{ + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(padapter); + struct sreset_priv *psrtpriv = &pHalData->srestpriv; + + unsigned long current_time; + struct xmit_priv *pxmitpriv = &padapter->xmitpriv; + unsigned int diff_time; + u32 txdma_status; + if( (txdma_status=rtw_read32(padapter, REG_TXDMA_STATUS)) !=0x00){ + DBG_871X("%s REG_TXDMA_STATUS:0x%08x\n", __FUNCTION__, txdma_status); + rtw_hal_sreset_reset(padapter); + } + + //total xmit irp = 4 + //DBG_8192C("==>%s free_xmitbuf_cnt(%d),txirp_cnt(%d)\n",__FUNCTION__,pxmitpriv->free_xmitbuf_cnt,pxmitpriv->txirp_cnt); + //if(pxmitpriv->txirp_cnt == NR_XMITBUFF+1) + current_time = rtw_get_current_time(); + + if(0 == pxmitpriv->free_xmitbuf_cnt || 0 == pxmitpriv->free_xmit_extbuf_cnt) { + + diff_time = rtw_get_passing_time_ms(psrtpriv->last_tx_time); + + if (diff_time > 2000) { + if (psrtpriv->last_tx_complete_time == 0) { + psrtpriv->last_tx_complete_time = current_time; + } + else{ + diff_time = rtw_get_passing_time_ms(psrtpriv->last_tx_complete_time); + if (diff_time > 4000) { + //padapter->Wifi_Error_Status = WIFI_TX_HANG; + DBG_871X("%s tx hang\n", __FUNCTION__); + rtw_hal_sreset_reset(padapter); + } + } + } + } + + if (psrtpriv->dbg_trigger_point == SRESET_TGP_XMIT_STATUS) { + psrtpriv->dbg_trigger_point = SRESET_TGP_NULL; + rtw_hal_sreset_reset(padapter); + return; + } +} +void rtl8192c_sreset_linked_status_check(_adapter *padapter) +{ + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(padapter); + struct sreset_priv *psrtpriv = &pHalData->srestpriv; + + u32 regc50,regc58,reg824,reg800; + regc50 = rtw_read32(padapter,0xc50); + regc58 = rtw_read32(padapter,0xc58); + reg824 = rtw_read32(padapter,0x824); + reg800 = rtw_read32(padapter,0x800); + if( ((regc50&0xFFFFFF00)!= 0x69543400)|| + ((regc58&0xFFFFFF00)!= 0x69543400)|| + (((reg824&0xFFFFFF00)!= 0x00390000)&&(((reg824&0xFFFFFF00)!= 0x80390000)))|| + ( ((reg800&0xFFFFFF00)!= 0x03040000)&&((reg800&0xFFFFFF00)!= 0x83040000))) + { + DBG_8192C("%s regc50:0x%08x, regc58:0x%08x, reg824:0x%08x, reg800:0x%08x,\n", __FUNCTION__, + regc50, regc58, reg824, reg800); + rtw_hal_sreset_reset(padapter); + } + + if (psrtpriv->dbg_trigger_point == SRESET_TGP_LINK_STATUS) { + psrtpriv->dbg_trigger_point = SRESET_TGP_NULL; + rtw_hal_sreset_reset(padapter); + return; + } +} +#endif --- linux-raspi2-4.2.0.orig/drivers/net/wireless/rtl8192cu/hal/rtl8192c/rtl8192c_xmit.c +++ linux-raspi2-4.2.0/drivers/net/wireless/rtl8192cu/hal/rtl8192c/rtl8192c_xmit.c @@ -0,0 +1,62 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2012 Realtek Corporation. All rights reserved. + * + * 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 + * published by the Free Software Foundation. + * + * 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 Street, Fifth Floor, Boston, MA 02110, USA + * + * + ******************************************************************************/ +#define _RTL8192C_XMIT_C_ + +#include +#include +#include +#include + +#ifdef CONFIG_XMIT_ACK +void dump_txrpt_ccx_8192c(void *buf) +{ + struct txrpt_ccx_8192c *txrpt_ccx = buf; + + DBG_871X("%s:\n" + "retry_cnt:%u, rsvd_0:%u, rts_retry_cnt:%u, rsvd_1:%u\n" + "ccx_qtime:%u, missed_pkt_num:%u, rsvd_4:%u\n" + "mac_id:%u, des1_fragssn:%u\n" + "rpt_pkt_num:%u, pkt_drop:%u, lifetime_over:%u, retry_over:%u\n" + "edca_tx_queue:%u, rsvd_7:%u, bmc:%u, pkt_ok:%u, init_ccx:%u\n" + , __func__ + , txrpt_ccx->retry_cnt, txrpt_ccx->rsvd_0, txrpt_ccx->rts_retry_cnt, txrpt_ccx->rsvd_1 + , txrpt_ccx_qtime_8192c(txrpt_ccx), txrpt_ccx->missed_pkt_num, txrpt_ccx->rsvd_4 + , txrpt_ccx->mac_id, txrpt_ccx->des1_fragssn + , txrpt_ccx->rpt_pkt_num, txrpt_ccx->pkt_drop, txrpt_ccx->lifetime_over, txrpt_ccx->retry_over + , txrpt_ccx->edca_tx_queue, txrpt_ccx->rsvd_7, txrpt_ccx->bmc, txrpt_ccx->pkt_ok, txrpt_ccx->int_ccx + ); +} + +void handle_txrpt_ccx_8192c(_adapter *adapter, void *buf) +{ + struct txrpt_ccx_8192c *txrpt_ccx = buf; + + #ifdef DBG_CCX + dump_txrpt_ccx_8192c(buf); + #endif + + if (txrpt_ccx->int_ccx) { + if (txrpt_ccx->pkt_ok) + rtw_ack_tx_done(&adapter->xmitpriv, RTW_SCTX_DONE_SUCCESS); + else + rtw_ack_tx_done(&adapter->xmitpriv, RTW_SCTX_DONE_CCX_PKT_FAIL); + } +} +#endif //CONFIG_XMIT_ACK --- linux-raspi2-4.2.0.orig/drivers/net/wireless/rtl8192cu/hal/rtl8192c/usb/Hal8192CUHWImg.c +++ linux-raspi2-4.2.0/drivers/net/wireless/rtl8192cu/hal/rtl8192c/usb/Hal8192CUHWImg.c @@ -0,0 +1,8757 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved. + * + * 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 + * published by the Free Software Foundation. + * + * 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 Street, Fifth Floor, Boston, MA 02110, USA + * + * + ******************************************************************************/ + +/*Created on 2011/ 6/15, 5:45*/ + +#include +#include "Hal8192CUHWImg.h" + +#ifdef CONFIG_BT_COEXISTENCE +// =================== v84 TSMC COMMON 2012-04-13 ======================= +u8 Rtl8192CUFwTSMCImgArray[TSMCImgArrayLength] = { +0xc1,0x88,0x02,0x00,0x54,0x00,0x01,0x00,0x04,0x13,0x11,0x07,0x3a,0x3d,0x00,0x00, +0x58,0x97,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x02,0x43,0xba,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x02,0x50,0xa1,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x02,0x57,0x91,0x00,0x00,0x00,0x00,0x00,0xa1,0xe8,0x00,0x00,0x00, +0x05,0x04,0x03,0x02,0x00,0x03,0x06,0x05,0x04,0x03,0x00,0x04,0x06,0x05,0x04,0x02, +0x00,0x04,0x08,0x07,0x06,0x04,0x00,0x06,0x0a,0x09,0x08,0x06,0x00,0x08,0x0a,0x09, +0x08,0x04,0x00,0x08,0x0a,0x09,0x08,0x02,0x00,0x08,0x0a,0x09,0x08,0x00,0x00,0x08, +0x12,0x11,0x10,0x08,0x00,0x10,0x1a,0x19,0x18,0x10,0x00,0x18,0x22,0x21,0x20,0x18, +0x00,0x20,0x22,0x21,0x20,0x10,0x00,0x20,0x22,0x21,0x20,0x08,0x00,0x20,0x22,0x21, +0x1c,0x08,0x00,0x20,0x22,0x21,0x14,0x08,0x00,0x20,0x22,0x20,0x18,0x08,0x00,0x20, +0x31,0x30,0x20,0x10,0x00,0x30,0x31,0x30,0x18,0x00,0x00,0x30,0x31,0x2f,0x10,0x10, +0x00,0x30,0x31,0x2c,0x10,0x10,0x00,0x30,0x31,0x28,0x10,0x00,0x00,0x30,0x31,0x20, +0x10,0x00,0x00,0x30,0x31,0x10,0x10,0x00,0x00,0x30,0x04,0x04,0x04,0x05,0x04,0x04, +0x04,0x05,0x05,0x05,0x06,0x06,0x04,0x04,0x04,0x05,0x05,0x05,0x06,0x06,0x04,0x04, +0x05,0x05,0x05,0x05,0x06,0x06,0x04,0x04,0x05,0x05,0x05,0x05,0x06,0x07,0x0a,0x0b, +0x0d,0x10,0x04,0x05,0x05,0x06,0x06,0x09,0x0c,0x11,0x08,0x08,0x09,0x09,0x0a,0x0c, +0x10,0x11,0x04,0x04,0x04,0x05,0x04,0x04,0x05,0x07,0x07,0x07,0x08,0x0a,0x04,0x04, +0x04,0x04,0x06,0x0a,0x0b,0x0d,0x05,0x05,0x07,0x07,0x08,0x0b,0x0d,0x0f,0x04,0x04, +0x04,0x05,0x07,0x07,0x09,0x09,0x0c,0x0e,0x10,0x12,0x04,0x04,0x05,0x05,0x06,0x0a, +0x11,0x13,0x09,0x09,0x09,0x09,0x0c,0x0e,0x11,0x13,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x24,0x26,0x2a,0x18,0x1a,0x1d,0x1f,0x21,0x27,0x29,0x2a,0x00,0x00, +0x00,0x1f,0x23,0x28,0x2a,0x2c,0x00,0x04,0x00,0x04,0x00,0x08,0x00,0x10,0x00,0x18, +0x00,0x24,0x00,0x30,0x00,0x48,0x00,0x60,0x00,0x90,0x00,0xc0,0x00,0xd8,0x00,0x50, +0x00,0x78,0x00,0xa0,0x00,0xc8,0x01,0x40,0x01,0x90,0x01,0xe0,0x02,0x30,0x01,0x2c, +0x01,0x40,0x01,0xe0,0x02,0xd0,0x03,0xe8,0x04,0xb0,0x06,0x40,0x07,0xd0,0x00,0x02, +0x00,0x02,0x00,0x04,0x00,0x08,0x00,0x0c,0x00,0x12,0x00,0x18,0x00,0x24,0x00,0x30, +0x00,0x48,0x00,0x60,0x00,0x6c,0x00,0x28,0x00,0x3c,0x00,0x50,0x00,0x64,0x00,0xa0, +0x00,0xc8,0x00,0xf0,0x01,0x18,0x00,0x64,0x00,0xa0,0x00,0xf0,0x01,0x68,0x01,0xf4, +0x02,0x58,0x03,0x20,0x03,0xe8,0x02,0x02,0x02,0x02,0x02,0x02,0x03,0x03,0x04,0x04, +0x05,0x07,0x04,0x04,0x07,0x0a,0x0a,0x0c,0x0c,0x12,0x05,0x07,0x07,0x08,0x0b,0x12, +0x24,0x3c,0x01,0x01,0x01,0x01,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x01,0x02, +0x03,0x04,0x05,0x06,0x07,0x08,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0c,0x20,0x1e, +0x1c,0x18,0x10,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0xbb,0x01,0x0c,0xe5,0x82,0x29,0xf5,0x82,0xe5,0x83,0x3a,0xf5,0x83,0xe0,0x22,0x50, +0x06,0xe9,0x25,0x82,0xf8,0xe6,0x22,0xbb,0xfe,0x06,0xe9,0x25,0x82,0xf8,0xe2,0x22, +0xe5,0x82,0x29,0xf5,0x82,0xe5,0x83,0x3a,0xf5,0x83,0xe4,0x93,0x22,0xbb,0x01,0x06, +0x89,0x82,0x8a,0x83,0xf0,0x22,0x50,0x02,0xf7,0x22,0xbb,0xfe,0x01,0xf3,0x22,0xf8, +0xbb,0x01,0x0d,0xe5,0x82,0x29,0xf5,0x82,0xe5,0x83,0x3a,0xf5,0x83,0xe8,0xf0,0x22, +0x50,0x06,0xe9,0x25,0x82,0xc8,0xf6,0x22,0xbb,0xfe,0x05,0xe9,0x25,0x82,0xc8,0xf2, +0x22,0xc5,0xf0,0xf8,0xa3,0xe0,0x28,0xf0,0xc5,0xf0,0xf8,0xe5,0x82,0x15,0x82,0x70, +0x02,0x15,0x83,0xe0,0x38,0xf0,0x22,0xbb,0x01,0x0a,0x89,0x82,0x8a,0x83,0xe0,0xf5, +0xf0,0xa3,0xe0,0x22,0x50,0x06,0x87,0xf0,0x09,0xe7,0x19,0x22,0xbb,0xfe,0x07,0xe3, +0xf5,0xf0,0x09,0xe3,0x19,0x22,0x89,0x82,0x8a,0x83,0xe4,0x93,0xf5,0xf0,0x74,0x01, +0x93,0x22,0xbb,0x01,0x10,0xe5,0x82,0x29,0xf5,0x82,0xe5,0x83,0x3a,0xf5,0x83,0xe0, +0xf5,0xf0,0xa3,0xe0,0x22,0x50,0x09,0xe9,0x25,0x82,0xf8,0x86,0xf0,0x08,0xe6,0x22, +0xbb,0xfe,0x0a,0xe9,0x25,0x82,0xf8,0xe2,0xf5,0xf0,0x08,0xe2,0x22,0xe5,0x83,0x2a, +0xf5,0x83,0xe9,0x93,0xf5,0xf0,0xa3,0xe9,0x93,0x22,0xbb,0x01,0x0a,0x89,0x82,0x8a, +0x83,0xf0,0xe5,0xf0,0xa3,0xf0,0x22,0x50,0x06,0xf7,0x09,0xa7,0xf0,0x19,0x22,0xbb, +0xfe,0x06,0xf3,0xe5,0xf0,0x09,0xf3,0x19,0x22,0xf8,0xbb,0x01,0x11,0xe5,0x82,0x29, +0xf5,0x82,0xe5,0x83,0x3a,0xf5,0x83,0xe8,0xf0,0xe5,0xf0,0xa3,0xf0,0x22,0x50,0x09, +0xe9,0x25,0x82,0xc8,0xf6,0x08,0xa6,0xf0,0x22,0xbb,0xfe,0x09,0xe9,0x25,0x82,0xc8, +0xf2,0xe5,0xf0,0x08,0xf2,0x22,0xef,0x4b,0xff,0xee,0x4a,0xfe,0xed,0x49,0xfd,0xec, +0x48,0xfc,0x22,0xe0,0xfc,0xa3,0xe0,0xfd,0xa3,0xe0,0xfe,0xa3,0xe0,0xff,0x22,0xa4, +0x25,0x82,0xf5,0x82,0xe5,0xf0,0x35,0x83,0xf5,0x83,0x22,0xe0,0xfb,0xa3,0xe0,0xfa, +0xa3,0xe0,0xf9,0x22,0xf8,0xe0,0xfb,0xa3,0xa3,0xe0,0xf9,0x25,0xf0,0xf0,0xe5,0x82, +0x15,0x82,0x70,0x02,0x15,0x83,0xe0,0xfa,0x38,0xf0,0x22,0xeb,0xf0,0xa3,0xea,0xf0, +0xa3,0xe9,0xf0,0x22,0xd0,0x83,0xd0,0x82,0xf8,0xe4,0x93,0x70,0x12,0x74,0x01,0x93, +0x70,0x0d,0xa3,0xa3,0x93,0xf8,0x74,0x01,0x93,0xf5,0x82,0x88,0x83,0xe4,0x73,0x74, +0x02,0x93,0x68,0x60,0xef,0xa3,0xa3,0xa3,0x80,0xdf,0x02,0x43,0xf8,0x02,0x48,0x29, +0xe4,0x93,0xa3,0xf8,0xe4,0x93,0xa3,0x40,0x03,0xf6,0x80,0x01,0xf2,0x08,0xdf,0xf4, +0x80,0x29,0xe4,0x93,0xa3,0xf8,0x54,0x07,0x24,0x0c,0xc8,0xc3,0x33,0xc4,0x54,0x0f, +0x44,0x20,0xc8,0x83,0x40,0x04,0xf4,0x56,0x80,0x01,0x46,0xf6,0xdf,0xe4,0x80,0x0b, +0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80,0x90,0x44,0x3d,0xe4,0x7e,0x01,0x93,0x60, +0xbc,0xa3,0xff,0x54,0x3f,0x30,0xe5,0x09,0x54,0x1f,0xfe,0xe4,0x93,0xa3,0x60,0x01, +0x0e,0xcf,0x54,0xc0,0x25,0xe0,0x60,0xa8,0x40,0xb8,0xe4,0x93,0xa3,0xfa,0xe4,0x93, +0xa3,0xf8,0xe4,0x93,0xa3,0xc8,0xc5,0x82,0xc8,0xca,0xc5,0x83,0xca,0xf0,0xa3,0xc8, +0xc5,0x82,0xc8,0xca,0xc5,0x83,0xca,0xdf,0xe9,0xde,0xe7,0x80,0xbe,0x41,0x9e,0x77, +0x00,0x41,0x9e,0xae,0x00,0x41,0x9e,0x54,0x80,0x41,0x9e,0xb0,0x00,0x00,0xf0,0x90, +0x9e,0x5d,0xe0,0x90,0x9e,0x86,0xf0,0xe4,0xfb,0xfd,0x7f,0x54,0x7e,0x01,0xd3,0x10, +0xaf,0x01,0xc3,0xc0,0xd0,0x90,0x9e,0x85,0xe0,0xfb,0xa3,0xe0,0xf5,0x44,0xe4,0xf5, +0x45,0x12,0x35,0xab,0xd0,0xd0,0x92,0xaf,0x22,0x90,0x01,0x5f,0xe4,0xf0,0x90,0x01, +0x3c,0x74,0x08,0xf0,0xe4,0x90,0x9e,0x85,0xf0,0x90,0x9e,0x5b,0xe0,0x90,0x9e,0x86, +0xf0,0xe4,0xfb,0xfd,0x7f,0x5c,0x7e,0x01,0x91,0x5e,0x90,0x01,0x5f,0x74,0x05,0xf0, +0x90,0x06,0x92,0x74,0x02,0xf0,0x90,0x9e,0x63,0x14,0xf0,0xe5,0x61,0x54,0x0f,0xc3, +0x94,0x0c,0x50,0x03,0x12,0x54,0xe3,0x22,0x8f,0x82,0x8e,0x83,0xa3,0xa3,0xa3,0xe4, +0xf0,0x22,0xe4,0xf5,0x65,0x7f,0x60,0x7e,0x01,0x80,0xed,0x7d,0x01,0xaf,0x62,0x02, +0x54,0xe7,0xb1,0xb0,0xbf,0x01,0x12,0x90,0x9e,0x79,0xe0,0xff,0xe4,0xfd,0xf1,0x79, +0x12,0x5f,0xf7,0x90,0x04,0x1f,0x74,0x20,0xf0,0x22,0xb1,0xb0,0xbf,0x01,0x0f,0x90, +0x02,0x09,0xe0,0xff,0x7d,0x01,0xf1,0x79,0x90,0x04,0x1f,0x74,0x20,0xf0,0x22,0x22, +0x22,0x22,0x00,0x02,0x45,0x03,0x02,0x45,0x06,0xd3,0x10,0xaf,0x01,0xc3,0xc0,0xd0, +0x8b,0x20,0x8a,0x21,0x89,0x22,0x90,0x9e,0x87,0x71,0x8b,0xab,0x23,0xaa,0x24,0xa9, +0x25,0x90,0x9e,0x8a,0x71,0x8b,0xaf,0x26,0x15,0x26,0xef,0x60,0x1b,0x90,0x9e,0x8a, +0xe4,0x75,0xf0,0x01,0x71,0x74,0x12,0x29,0xd9,0xff,0x90,0x9e,0x87,0xe4,0x75,0xf0, +0x01,0x71,0x74,0xef,0x51,0x4d,0x80,0xde,0xab,0x20,0xaa,0x21,0xa9,0x22,0xd0,0xd0, +0x92,0xaf,0x22,0x90,0x9e,0x11,0x12,0x2a,0x8b,0x00,0x00,0x00,0x00,0x90,0x06,0xa9, +0xe0,0x90,0x9e,0x10,0xf0,0xe0,0x54,0xc0,0x70,0x08,0x53,0x64,0xfe,0x53,0x64,0xfd, +0x91,0xcb,0x90,0x9e,0x10,0xe0,0x30,0xe6,0x13,0x43,0x64,0x01,0x90,0x9e,0x66,0xe0, +0x64,0x02,0x60,0x04,0x91,0xd2,0x80,0x07,0x91,0x79,0x80,0x03,0x53,0x64,0xfe,0x90, +0x9e,0x10,0xe0,0x30,0xe7,0x16,0x43,0x64,0x02,0xe4,0x90,0x9e,0x85,0x91,0x4e,0x90, +0x01,0x57,0x74,0x05,0xf0,0x90,0x9e,0x67,0x74,0x01,0xf0,0x22,0x53,0x64,0xfd,0x22, +0xd3,0x10,0xaf,0x01,0xc3,0xc0,0xd0,0x90,0x01,0xc4,0x74,0xb0,0xf0,0x74,0x45,0xa3, +0xf0,0x90,0x04,0x1d,0xe0,0x60,0x1a,0x90,0x05,0x22,0xe0,0x54,0x90,0x60,0x07,0x90, +0x01,0xc6,0xe0,0x44,0x40,0xf0,0x90,0x01,0xc7,0xe0,0x30,0xe1,0xe4,0x7f,0x00,0x80, +0x02,0x7f,0x01,0xd0,0xd0,0x92,0xaf,0x22,0xc0,0xe0,0xc0,0xf0,0xc0,0x83,0xc0,0x82, +0xc0,0xd0,0x75,0xd0,0x00,0xc0,0x00,0xc0,0x01,0xc0,0x02,0xc0,0x03,0xc0,0x04,0xc0, +0x05,0xc0,0x06,0xc0,0x07,0x75,0x13,0x00,0x90,0x01,0xc4,0x74,0xe8,0xf0,0x74,0x45, +0xa3,0xf0,0x53,0x91,0xdf,0x90,0x01,0x3c,0xe0,0x55,0x30,0xf5,0x34,0xa3,0xe0,0x55, +0x31,0xf5,0x35,0xa3,0xe0,0x55,0x32,0xf5,0x36,0xa3,0xe0,0x55,0x33,0xf5,0x37,0xe5, +0x34,0x30,0xe0,0x06,0x90,0x01,0x3c,0x74,0x01,0xf0,0xe5,0x34,0x30,0xe1,0x09,0x90, +0x01,0x3c,0x74,0x02,0xf0,0x12,0x61,0xc9,0xe5,0x34,0x30,0xe2,0x38,0x90,0x01,0x3c, +0x74,0x04,0xf0,0x90,0x06,0x92,0xe0,0x30,0xe0,0x24,0x90,0x9e,0x85,0xe4,0xf0,0x90, +0x9e,0x5b,0xe0,0x90,0x9e,0x86,0xf0,0xe4,0xfb,0xfd,0x7f,0x58,0x7e,0x01,0x91,0x5e, +0x90,0x01,0x5b,0x74,0x05,0xf0,0x90,0x06,0x92,0x74,0x01,0xf0,0x80,0x07,0x90,0x9e, +0x64,0xe4,0xf0,0x91,0xcb,0xe5,0x34,0x30,0xe3,0x38,0x90,0x01,0x3c,0x74,0x08,0xf0, +0x90,0x06,0x92,0xe0,0x30,0xe1,0x24,0x90,0x9e,0x85,0xe4,0xf0,0x90,0x9e,0x5b,0xe0, +0x90,0x9e,0x86,0xf0,0xe4,0xfb,0xfd,0x7f,0x5c,0x7e,0x01,0x91,0x5e,0x90,0x01,0x5f, +0x74,0x05,0xf0,0x90,0x06,0x92,0x74,0x02,0xf0,0x80,0x07,0x90,0x9e,0x63,0xe4,0xf0, +0x91,0xcb,0xe5,0x34,0x30,0xe4,0x09,0x90,0x01,0x3c,0x74,0x10,0xf0,0x12,0x4b,0xfb, +0xe5,0x34,0x30,0xe5,0x09,0x90,0x01,0x3c,0x74,0x20,0xf0,0x12,0x4c,0x3d,0xe5,0x35, +0x30,0xe0,0x44,0x90,0x01,0x3d,0x74,0x01,0xf0,0x90,0x01,0x2f,0xe0,0x44,0x7f,0xf0, +0x90,0x00,0x83,0xe0,0x54,0x0f,0xf5,0x13,0xb4,0x01,0x02,0x80,0x1c,0xe5,0x13,0xb4, +0x02,0x05,0x90,0x00,0x83,0x80,0x12,0xe5,0x13,0xb4,0x04,0x05,0x90,0x00,0x83,0x80, +0x08,0xe5,0x13,0xb4,0x0c,0x06,0x90,0x00,0x83,0xe0,0xf5,0x62,0x90,0x01,0xbb,0xe5, +0x62,0xf0,0x12,0x60,0xc0,0x91,0xcb,0xe5,0x35,0x30,0xe2,0x06,0x90,0x01,0x3d,0x74, +0x04,0xf0,0xe5,0x35,0x30,0xe4,0x06,0x90,0x01,0x3d,0x74,0x10,0xf0,0xe5,0x36,0x30, +0xe0,0x06,0x90,0x01,0x3e,0x74,0x01,0xf0,0xe5,0x36,0x30,0xe1,0x06,0x90,0x01,0x3e, +0x74,0x02,0xf0,0x74,0xe8,0x04,0x90,0x01,0xc4,0xf0,0x74,0x45,0xa3,0xf0,0xd0,0x07, +0xd0,0x06,0xd0,0x05,0xd0,0x04,0xd0,0x03,0xd0,0x02,0xd0,0x01,0xd0,0x00,0xd0,0xd0, +0xd0,0x82,0xd0,0x83,0xd0,0xf0,0xd0,0xe0,0x32,0x90,0x9e,0x98,0xef,0xf0,0xa3,0xed, +0xf0,0xe4,0xa3,0xf0,0xa3,0xf0,0xe5,0x63,0x60,0x05,0xe4,0xff,0x12,0x54,0x97,0x90, +0x9e,0x98,0xe0,0x30,0xe0,0x09,0x90,0x9e,0x9a,0xe4,0xf0,0xa3,0x74,0x80,0xf0,0x90, +0x9e,0x98,0xe0,0xff,0xc3,0x13,0x90,0xfd,0x10,0xf0,0x90,0x04,0x25,0xef,0xf0,0x90, +0x9e,0x99,0xe0,0x60,0x1f,0xa3,0xa3,0xe0,0xff,0x24,0x0f,0xf5,0x82,0xe4,0x34,0xfc, +0xf5,0x83,0xe0,0x44,0x80,0xf0,0x74,0x10,0x2f,0xf5,0x82,0xe4,0x34,0xfc,0xf5,0x83, +0xe0,0x44,0x80,0xf0,0x90,0x9e,0x9a,0xa3,0xe0,0xff,0xfd,0x24,0x08,0xf5,0x82,0xe4, +0x34,0xfc,0xf5,0x83,0xe4,0xf0,0x74,0x09,0x2d,0xf5,0x82,0xe4,0x34,0xfc,0xf5,0x83, +0xe0,0x54,0xf0,0xf0,0x74,0x21,0x2f,0xf5,0x82,0xe4,0x34,0xfc,0xf5,0x83,0xe0,0x54, +0xf7,0xf0,0x90,0x9e,0x9a,0xe0,0xfe,0xa3,0xe0,0xff,0x22,0x75,0x28,0x33,0xe4,0xf5, +0x29,0x75,0x2a,0x07,0xf5,0x2b,0x90,0x01,0x30,0xe5,0x28,0xf0,0xa3,0xe5,0x29,0xf0, +0xa3,0xe5,0x2a,0xf0,0xa3,0xe5,0x2b,0xf0,0x22,0xe4,0x90,0x9e,0x16,0xf0,0xa3,0xf0, +0x75,0x8e,0x02,0xf1,0xa1,0xf1,0xe9,0x90,0x9e,0x7e,0xef,0xf0,0xf1,0xdd,0x90,0x9e, +0x80,0xef,0xf0,0xf1,0xf6,0x90,0x9e,0x75,0xee,0xf0,0xa3,0xef,0xf0,0xe4,0xf5,0x57, +0x12,0x6e,0x77,0xf1,0xd4,0x12,0x60,0x4b,0x12,0x32,0x3d,0xf1,0xc9,0x11,0x0b,0x12, +0x50,0x0e,0xf1,0xcd,0xf1,0xb1,0x12,0x44,0xff,0xf1,0x45,0x90,0x9e,0x18,0xe5,0xd9, +0xf0,0x11,0xd0,0xc2,0xaf,0x90,0x00,0x80,0xe0,0x44,0x40,0xf0,0xb1,0x45,0x75,0xe8, +0x03,0x43,0xa8,0x85,0xd2,0xaf,0x90,0x9e,0x16,0xe0,0x64,0x01,0xf0,0x24,0x29,0x90, +0x01,0xc4,0xf0,0x74,0x48,0xa3,0xf0,0xe5,0x57,0x30,0xe4,0x0a,0xc2,0xaf,0x53,0x57, +0xef,0xd2,0xaf,0x12,0x58,0x74,0xe5,0x57,0x30,0xe6,0x17,0xc2,0xaf,0x53,0x57,0xbf, +0xd2,0xaf,0x12,0x67,0xa1,0x90,0x9e,0x43,0xe0,0xff,0x60,0x03,0xb4,0x01,0x03,0x12, +0x7b,0x5c,0x90,0x9e,0x43,0xe0,0x70,0x03,0x12,0x7c,0x5f,0x12,0x73,0x85,0x80,0xb6, +0x90,0x01,0x3c,0x74,0xff,0xf0,0xa3,0xf0,0xa3,0xf0,0x90,0x01,0x34,0xf0,0xa3,0xf0, +0xa3,0xf0,0xa3,0xf0,0xfd,0x7f,0x54,0x31,0x05,0x7d,0xff,0x7f,0x55,0x31,0x05,0x7d, +0xff,0x7f,0x56,0x31,0x05,0x7d,0xff,0x7f,0x57,0x80,0x0a,0xf0,0x90,0x00,0x45,0xe0, +0x54,0xfe,0xfd,0x7f,0x45,0xd3,0x10,0xaf,0x01,0xc3,0xc0,0xd0,0x8f,0x82,0x75,0x83, +0x00,0xed,0xf0,0xb1,0x45,0xd0,0xd0,0x92,0xaf,0x22,0xef,0x14,0x60,0x30,0x14,0x60, +0x66,0x24,0x02,0x60,0x02,0x21,0xc1,0x90,0x9e,0x3f,0x74,0x02,0xf0,0x90,0x00,0x48, +0xe0,0x44,0x0c,0xfd,0x7f,0x48,0x31,0x05,0x90,0x00,0x47,0xe0,0x44,0x08,0xfd,0x7f, +0x47,0x31,0x05,0x90,0x00,0x45,0xe0,0x44,0x10,0xfd,0x7f,0x45,0x80,0x71,0xe4,0x90, +0x9e,0x3f,0xf0,0x90,0x9e,0x3b,0x12,0x43,0x53,0x90,0x80,0x85,0x12,0x2a,0x7f,0x7f, +0x80,0x7e,0x08,0x12,0x2f,0xd9,0x90,0x00,0x45,0xe0,0x44,0xef,0xfd,0x7f,0x45,0x31, +0x05,0x90,0x00,0x45,0xe0,0x54,0xef,0xfd,0x7f,0x45,0x31,0x05,0x90,0x00,0x46,0xe0, +0x44,0x10,0xfd,0x7f,0x46,0x80,0x38,0x90,0x9e,0x3f,0x74,0x01,0xf0,0x90,0x9e,0x45, +0x12,0x43,0x53,0x90,0x80,0x85,0x12,0x2a,0x7f,0x7f,0x80,0x7e,0x08,0x12,0x2f,0xd9, +0x90,0x00,0x45,0xe0,0x44,0x20,0xfd,0x7f,0x45,0x31,0x05,0x90,0x00,0x45,0xe0,0x44, +0x10,0xfd,0x7f,0x45,0x31,0x05,0x90,0x00,0x46,0xe0,0x44,0x10,0xfd,0x7f,0x46,0x31, +0x05,0x22,0x90,0x00,0x02,0x12,0x42,0x20,0x90,0x9e,0x41,0xf0,0x90,0x00,0x01,0x12, +0x42,0x20,0x25,0xe0,0x25,0xe0,0x90,0x9e,0x40,0xf0,0x12,0x29,0xd9,0x25,0xe0,0x25, +0xe0,0x90,0x9e,0x44,0xf0,0x90,0x05,0x60,0xe0,0x90,0x9e,0x4f,0xf0,0x90,0x05,0x61, +0xe0,0x90,0x9e,0x50,0xf0,0x90,0x05,0x62,0xe0,0x90,0x9e,0x51,0xf0,0x90,0x05,0x63, +0xe0,0x90,0x9e,0x52,0xf0,0xa2,0xaf,0xe4,0x33,0x90,0x9e,0x24,0xf0,0xc2,0xaf,0x90, +0x9e,0x40,0xe0,0xff,0x91,0xf0,0x90,0x9e,0x24,0xe0,0x24,0xff,0x92,0xaf,0x90,0x9e, +0x41,0xe0,0x70,0x02,0x41,0xc8,0x90,0x9e,0x40,0xe0,0x70,0x02,0x41,0xc8,0x90,0x9e, +0x44,0xe0,0x70,0x02,0x41,0xc8,0xa2,0xaf,0xe4,0x33,0x90,0x9e,0x24,0xf0,0xc2,0xaf, +0x90,0x9e,0x53,0x74,0x01,0xf0,0x90,0x9e,0x24,0xe0,0x24,0xff,0x92,0xaf,0x11,0xfc, +0x90,0x00,0x46,0xe0,0x44,0x01,0xfd,0x7f,0x46,0x31,0x05,0x90,0x9e,0x39,0xe0,0x60, +0x15,0x90,0x9e,0x45,0x12,0x43,0x53,0x90,0x80,0x85,0x12,0x2a,0x7f,0x7f,0x80,0x7e, +0x08,0x12,0x2f,0xd9,0x80,0x06,0x90,0x05,0x22,0x74,0x7f,0xf0,0x90,0x00,0x45,0xe0, +0x54,0xef,0xfd,0x7f,0x45,0x31,0x05,0x90,0x05,0x87,0xe0,0x64,0x80,0xf0,0x90,0x9e, +0x4f,0xe0,0x90,0x05,0x84,0xf0,0x90,0x9e,0x50,0xe0,0x90,0x05,0x85,0xf0,0x90,0x9e, +0x51,0xe0,0x90,0x05,0x86,0xf0,0x90,0x9e,0x52,0xe0,0x90,0x05,0x87,0xf0,0xa2,0xaf, +0xe4,0x33,0x90,0x9e,0x24,0xf0,0xc2,0xaf,0x90,0x01,0x3c,0xe0,0x44,0x20,0xf0,0x7d, +0x20,0xe4,0xff,0x12,0x37,0x00,0x80,0x2b,0x90,0x9e,0x41,0xe0,0x70,0x2d,0x90,0x9e, +0x53,0x11,0xfb,0x90,0x00,0x46,0xe0,0x54,0xfe,0xfd,0x7f,0x46,0x31,0x05,0x90,0x05, +0x22,0xe4,0xf0,0xa2,0xaf,0x33,0x90,0x9e,0x24,0xf0,0xc2,0xaf,0x7d,0x20,0xe4,0xff, +0x12,0x36,0x92,0x90,0x9e,0x24,0xe0,0x24,0xff,0x92,0xaf,0x22,0x8b,0x14,0x8a,0x15, +0x89,0x16,0x90,0x00,0x02,0x12,0x42,0x20,0x90,0x9e,0x42,0xf0,0xe0,0x30,0xe0,0x4b, +0x90,0x9e,0x39,0x74,0x01,0xf0,0x7f,0x80,0x7e,0x08,0x12,0x27,0xde,0x90,0x9e,0x3b, +0x12,0x2a,0x7f,0xab,0x14,0xaa,0x15,0xa9,0x16,0x90,0x00,0x01,0x12,0x42,0x20,0xff, +0xe4,0xfc,0xfd,0xfe,0x78,0x1a,0x12,0x2a,0x6c,0xa8,0x04,0xa9,0x05,0xaa,0x06,0xab, +0x07,0x90,0x9e,0x3b,0x12,0x43,0x53,0xec,0x54,0x03,0xfc,0x12,0x43,0x46,0x90,0x9e, +0x45,0x12,0x2a,0x7f,0x90,0x05,0x22,0xe4,0xf0,0x80,0x2d,0xe4,0x90,0x9e,0x39,0xf0, +0x7f,0x80,0x7e,0x08,0x12,0x27,0xde,0xec,0x54,0x03,0xfc,0xec,0x44,0xc0,0xfc,0x90, +0x9e,0x3b,0x12,0x2a,0x7f,0x90,0x9e,0x3b,0x12,0x43,0x53,0x90,0x80,0x85,0x12,0x2a, +0x7f,0x7f,0x80,0x7e,0x08,0x12,0x2f,0xd9,0x90,0x9e,0x42,0xe0,0x30,0xe1,0x19,0x7d, +0x0c,0x7f,0x47,0x31,0x05,0x90,0x00,0x48,0xe0,0x44,0x0c,0xfd,0x7f,0x48,0x31,0x05, +0x90,0x00,0x46,0xe0,0x44,0x10,0x80,0x1c,0x90,0x00,0x47,0xe0,0x54,0xf3,0xfd,0x7f, +0x47,0x31,0x05,0x90,0x00,0x48,0xe0,0x54,0xf3,0xfd,0x7f,0x48,0x31,0x05,0x90,0x00, +0x46,0xe0,0x54,0xef,0xfd,0x7f,0x46,0x31,0x05,0xe4,0x90,0x9e,0x3f,0xf0,0x22,0x90, +0x01,0x30,0xe4,0xf0,0xa3,0xf0,0xa3,0xf0,0xa3,0xf0,0x90,0x01,0x38,0xf0,0xa3,0xf0, +0xa3,0xf0,0xa3,0xf0,0xfd,0x7f,0x50,0x31,0x05,0xe4,0xfd,0x7f,0x51,0x31,0x05,0xe4, +0xfd,0x7f,0x52,0x31,0x05,0xe4,0xfd,0x7f,0x53,0x21,0x05,0xe5,0x65,0x64,0x01,0x70, +0x3b,0xd1,0x85,0xbf,0x01,0x04,0x7f,0x01,0xd1,0x79,0x90,0x00,0x46,0xe0,0x44,0x04, +0xfd,0x7f,0x46,0x31,0x05,0x90,0x00,0x44,0xe0,0x54,0xfb,0xfd,0x7f,0x44,0x31,0x05, +0x90,0x00,0x46,0xe0,0x54,0xfb,0xfd,0x7f,0x46,0x31,0x05,0x7f,0x02,0xd1,0xa1,0x8f, +0x69,0x90,0x01,0xc9,0xe5,0x69,0xf0,0xb4,0x01,0x02,0xd1,0x19,0x22,0x90,0x9e,0x41, +0xe0,0x64,0x01,0x60,0x02,0x81,0xef,0x90,0x00,0x46,0xe0,0x44,0x01,0xfd,0x7f,0x46, +0x31,0x05,0x90,0x9e,0x53,0xe0,0x70,0x31,0x90,0x9e,0x39,0xe0,0x60,0x15,0x90,0x9e, +0x45,0x12,0x43,0x53,0x90,0x80,0x85,0x12,0x2a,0x7f,0x7f,0x80,0x7e,0x08,0x12,0x2f, +0xd9,0x80,0x06,0x90,0x05,0x22,0x74,0x7f,0xf0,0x90,0x9e,0x40,0xe0,0xff,0x91,0xf0, +0x90,0x9e,0x53,0x74,0x01,0x11,0xfb,0x80,0x3f,0x90,0x9e,0x53,0xe0,0x64,0x01,0x70, +0x37,0x90,0x9e,0x44,0xe0,0xff,0x91,0xf0,0xe4,0x90,0x9e,0x53,0xf0,0x90,0x00,0x45, +0xe0,0x44,0x01,0xfd,0x7f,0x45,0x31,0x05,0x90,0x9e,0x39,0xe0,0x60,0x15,0x90,0x9e, +0x3b,0x12,0x43,0x53,0x90,0x80,0x85,0x12,0x2a,0x7f,0x7f,0x80,0x7e,0x08,0x12,0x2f, +0xd9,0x80,0x05,0x90,0x05,0x22,0xe4,0xf0,0x90,0x05,0x87,0xe0,0x64,0x80,0xf0,0x90, +0x9e,0x4f,0xe0,0x90,0x05,0x84,0xf0,0x90,0x9e,0x50,0xe0,0x90,0x05,0x85,0xf0,0x90, +0x9e,0x51,0xe0,0x90,0x05,0x86,0xf0,0x90,0x9e,0x52,0xe0,0x90,0x05,0x87,0xf0,0x22, +0x90,0x05,0x60,0xe0,0x90,0x9e,0x4f,0xf0,0x90,0x05,0x61,0xe0,0x90,0x9e,0x50,0xf0, +0x90,0x05,0x62,0xe0,0x90,0x9e,0x51,0xf0,0x90,0x05,0x63,0xe0,0x90,0x9e,0x52,0xf0, +0xc3,0x74,0xff,0x9f,0xfe,0x90,0x9e,0x50,0xe0,0xd3,0x9e,0x40,0x1e,0xe0,0x2f,0xf0, +0xa3,0xe0,0xb4,0xff,0x0f,0xe4,0xf0,0xa3,0xe0,0xb4,0xff,0x03,0xe4,0xf0,0x22,0x90, +0x9e,0x52,0x80,0x03,0x90,0x9e,0x51,0xe0,0x04,0xf0,0x22,0x90,0x9e,0x50,0xe0,0x2f, +0xf0,0x22,0xe0,0x5f,0xf0,0xd3,0x10,0xaf,0x01,0xc3,0xc0,0xd0,0x7f,0x10,0xdf,0xfe, +0xd0,0xd0,0x92,0xaf,0x22,0xd3,0x10,0xaf,0x01,0xc3,0xc0,0xd0,0x90,0x9e,0x2a,0xed, +0xf0,0x90,0x9e,0x29,0xef,0xf0,0xd3,0x94,0x07,0x50,0x4e,0xa3,0xe0,0x70,0x1a,0x90, +0x9e,0x29,0xe0,0xff,0x74,0x01,0xa8,0x07,0x08,0x80,0x02,0xc3,0x33,0xd8,0xfc,0xf4, +0xff,0x90,0x00,0x47,0xe0,0x5f,0xf0,0x80,0x17,0x90,0x9e,0x29,0xe0,0xff,0x74,0x01, +0xa8,0x07,0x08,0x80,0x02,0xc3,0x33,0xd8,0xfc,0xff,0x90,0x00,0x47,0xe0,0x4f,0xf0, +0xb1,0x45,0x90,0x9e,0x29,0xe0,0xff,0x74,0x01,0xa8,0x07,0x08,0x80,0x02,0xc3,0x33, +0xd8,0xfc,0xf4,0xff,0x90,0x00,0x46,0x80,0x59,0x90,0x9e,0x29,0xe0,0x24,0xf8,0xf0, +0xa3,0xe0,0x70,0x1d,0x90,0x9e,0x29,0xe0,0xff,0x74,0x01,0xa8,0x07,0x08,0x80,0x02, +0xc3,0x33,0xd8,0xfc,0xc4,0x54,0xf0,0xf4,0xff,0x90,0x00,0x43,0xe0,0x5f,0xf0,0x80, +0x1a,0x90,0x9e,0x29,0xe0,0xff,0x74,0x01,0xa8,0x07,0x08,0x80,0x02,0xc3,0x33,0xd8, +0xfc,0xc4,0x54,0xf0,0xff,0x90,0x00,0x43,0xe0,0x4f,0xf0,0xb1,0x45,0x90,0x9e,0x29, +0xe0,0xff,0x74,0x01,0xa8,0x07,0x08,0x80,0x02,0xc3,0x33,0xd8,0xfc,0xf4,0xff,0x90, +0x00,0x43,0xb1,0x42,0xd0,0xd0,0x92,0xaf,0x22,0x90,0x00,0x49,0xe0,0x90,0x9e,0xb1, +0xf0,0xe0,0x54,0x0f,0xf0,0x44,0xf0,0xfd,0x7f,0x49,0x31,0x05,0x90,0x9e,0xb1,0xe0, +0x44,0xb0,0xfd,0x7f,0x49,0x21,0x05,0x90,0x9e,0x27,0xee,0xf0,0xa3,0xef,0xf0,0x75, +0x65,0x01,0x8e,0x66,0xf5,0x67,0xe4,0xfd,0x7f,0x0b,0xb1,0x55,0xe4,0xfd,0x7f,0x02, +0xb1,0x55,0xd1,0x85,0xe4,0xff,0xd1,0x79,0xe4,0xf5,0x69,0x90,0x01,0xc9,0xe5,0x69, +0xf0,0x90,0x9e,0x27,0xe0,0xfc,0xa3,0xe0,0xfd,0xec,0xfb,0x8d,0x44,0xe4,0xf5,0x45, +0x7d,0x01,0x7f,0x60,0x7e,0x01,0x02,0x35,0xab,0x90,0x01,0xca,0xe5,0x68,0xf0,0xef, +0x60,0x02,0xd1,0x19,0x22,0x7f,0x0b,0xd1,0xa1,0xef,0x65,0x68,0x60,0x10,0xe5,0x68, +0xb4,0x01,0x05,0xe4,0xf5,0x68,0x80,0x03,0x75,0x68,0x01,0x7f,0x01,0x22,0x7f,0x00, +0x22,0xd3,0x10,0xaf,0x01,0xc3,0xc0,0xd0,0x90,0x9e,0xb2,0xef,0xf0,0xd3,0x94,0x07, +0x50,0x43,0xe0,0xff,0x74,0x01,0xa8,0x07,0x08,0x80,0x02,0xc3,0x33,0xd8,0xfc,0xf4, +0xff,0x90,0x00,0x46,0xb1,0x42,0x90,0x9e,0xb2,0xe0,0xfd,0x74,0x01,0x7e,0x00,0xa8, +0x05,0x08,0x80,0x05,0xc3,0x33,0xce,0x33,0xce,0xd8,0xf9,0xff,0x90,0x00,0x44,0xe0, +0xfb,0xe4,0xfe,0xef,0x5b,0xa8,0x05,0x08,0x80,0x06,0xce,0xa2,0xe7,0x13,0xce,0x13, +0xd8,0xf8,0xff,0x80,0x4b,0x90,0x9e,0xb2,0xe0,0x24,0xf8,0xf0,0xe0,0xff,0x74,0x01, +0xa8,0x07,0x08,0x80,0x02,0xc3,0x33,0xd8,0xfc,0xf4,0xff,0x90,0x00,0x43,0xe0,0x5f, +0xf0,0xb1,0x45,0x90,0x9e,0xb2,0xe0,0xfd,0x74,0x01,0x7e,0x00,0xa8,0x05,0x08,0x80, +0x05,0xc3,0x33,0xce,0x33,0xce,0xd8,0xf9,0xff,0x90,0x00,0x42,0xe0,0xfb,0xe4,0xfe, +0xef,0x5b,0xa8,0x05,0x08,0x80,0x06,0xce,0xa2,0xe7,0x13,0xce,0x13,0xd8,0xf8,0xff, +0xd0,0xd0,0x92,0xaf,0x22,0xe4,0xfd,0x7f,0x45,0x31,0x05,0x90,0x04,0xfd,0xe4,0xf0, +0xa3,0xf0,0x90,0x9e,0x43,0xf0,0x90,0x9e,0x49,0xf0,0x90,0x9e,0x4c,0xf0,0x90,0x9e, +0x4a,0xf0,0x90,0x9e,0x4d,0xf0,0x90,0x9e,0x4b,0xf0,0x90,0x9e,0x4e,0xf0,0x90,0x9e, +0x35,0x04,0xf0,0xe4,0xa3,0xf0,0xa3,0xf0,0xa3,0xf0,0x90,0x9e,0x3a,0xf0,0x90,0x9e, +0x3f,0xf0,0x90,0x9e,0x41,0xf0,0x90,0x9e,0x53,0xf0,0x90,0x9e,0x44,0xf0,0x90,0x9e, +0x40,0xf0,0x90,0x9e,0x39,0xf0,0x90,0x00,0x51,0xe0,0x44,0xc0,0xfd,0x7f,0x51,0x21, +0x05,0xe4,0x90,0x9e,0x7d,0xf0,0x90,0x00,0x80,0xe0,0x44,0x80,0xfd,0x7f,0x80,0x21, +0x05,0x75,0x30,0x1f,0x75,0x31,0x01,0xe4,0xf5,0x32,0x90,0x01,0x38,0xe5,0x30,0xf0, +0xa3,0xe5,0x31,0xf0,0xa3,0xe5,0x32,0xf0,0x22,0xe4,0xf5,0x68,0x22,0x90,0x01,0x64, +0x74,0xa0,0xf0,0x22,0x90,0x9e,0x80,0xe0,0x90,0x9e,0x0f,0xf0,0x22,0x90,0x00,0xf3, +0xe0,0x7f,0x00,0x30,0xe3,0x02,0x7f,0x01,0x22,0x90,0x00,0x02,0xe0,0x54,0xe0,0x7f, +0x01,0x60,0x02,0x7f,0x00,0x22,0x90,0x9e,0x80,0xe0,0xb4,0x01,0x0c,0x90,0x00,0xf2, +0xe0,0x30,0xe7,0x05,0x7e,0xfd,0x7f,0x33,0x22,0x7e,0xfd,0x7f,0x2f,0x22,0x90,0x00, +0xf3,0xe0,0x30,0xe2,0x0d,0x90,0x05,0x41,0x74,0x10,0xf0,0x90,0x05,0x5a,0xf0,0xa3, +0xe4,0xf0,0x22,0x90,0x01,0x02,0xe0,0x54,0x03,0xff,0xe0,0x54,0x0c,0x13,0x13,0x54, +0x3f,0xfe,0xef,0x64,0x01,0x60,0x04,0xef,0xb4,0x03,0x10,0x90,0x9e,0x10,0x74,0x01, +0xf0,0xa3,0x74,0x37,0xf0,0xa3,0x74,0x01,0xf0,0x80,0x1a,0xee,0x64,0x01,0x60,0x07, +0xaf,0x06,0xee,0x64,0x03,0x70,0x49,0x90,0x9e,0x10,0x74,0x01,0xf0,0xa3,0x74,0x3d, +0xf0,0xa3,0x74,0x40,0xf0,0x90,0x9e,0x10,0xe0,0xfe,0xa3,0xe0,0xff,0xf5,0x82,0x8e, +0x83,0xe0,0xfd,0x90,0x9e,0x12,0xe0,0xfc,0xed,0x5c,0x60,0x0c,0x8f,0x82,0x8e,0x83, +0xec,0xf0,0xe4,0x90,0x9e,0x77,0xf0,0x22,0x90,0x9e,0x77,0xe0,0x04,0xf0,0xe0,0xc3, +0x94,0x0a,0x40,0x0c,0xe4,0xf0,0x90,0x04,0x19,0xe0,0x30,0xe0,0x03,0x12,0x44,0xea, +0x22,0xc0,0xe0,0xc0,0xf0,0xc0,0x83,0xc0,0x82,0xc0,0xd0,0x75,0xd0,0x00,0xc0,0x00, +0xc0,0x01,0xc0,0x02,0xc0,0x03,0xc0,0x04,0xc0,0x05,0xc0,0x06,0xc0,0x07,0x90,0x01, +0xc4,0x74,0xa1,0xf0,0x74,0x50,0xa3,0xf0,0x90,0x01,0x34,0xe0,0x55,0x28,0xf5,0x2c, +0xa3,0xe0,0x55,0x29,0xf5,0x2d,0xa3,0xe0,0x55,0x2a,0xf5,0x2e,0xa3,0xe0,0x55,0x2b, +0xf5,0x2f,0xe5,0x2c,0x20,0xe0,0x02,0x41,0x46,0x90,0x01,0x34,0x74,0x01,0xf0,0x85, +0xd1,0x4d,0x85,0xd2,0x4e,0x85,0xd3,0x4f,0x85,0xd4,0x50,0x85,0xd5,0x51,0x85,0xd6, +0x52,0x85,0xd7,0x53,0x85,0xd9,0x54,0xe5,0x54,0x54,0x40,0xc3,0x13,0xff,0xe5,0x53, +0x54,0x20,0x6f,0x70,0x02,0x21,0xf5,0xe5,0x54,0x30,0xe5,0x02,0x21,0xf5,0xe5,0x52, +0x54,0x3f,0xf5,0x08,0xe5,0x4d,0x54,0x3f,0xf5,0x09,0xe5,0x51,0x54,0x1f,0xff,0xe5, +0x08,0x25,0xe0,0x24,0xc4,0xf5,0x82,0xe4,0x34,0x99,0xf5,0x83,0xe4,0x8f,0xf0,0x12, +0x42,0x81,0xe5,0x53,0x54,0x1f,0xff,0xe5,0x08,0x25,0xe0,0x24,0x80,0xf5,0x82,0xe4, +0x34,0x93,0xf5,0x83,0xe4,0x8f,0xf0,0x12,0x42,0x81,0xe5,0x09,0xd3,0x94,0x04,0x40, +0x03,0x75,0x09,0x04,0x75,0xf0,0x0a,0xe5,0x08,0x90,0x90,0x00,0x12,0x43,0x5f,0x75, +0xf0,0x02,0xe5,0x09,0x12,0x43,0x5f,0xe0,0xfe,0xa3,0xe0,0xff,0xe5,0x53,0x54,0x1f, +0x2f,0xff,0xe4,0x3e,0xfe,0x75,0xf0,0x0a,0xe5,0x08,0x90,0x90,0x00,0x12,0x43,0x5f, +0x75,0xf0,0x02,0xe5,0x09,0x12,0x43,0x5f,0xee,0xf0,0xa3,0xef,0xf0,0xe5,0x54,0x20, +0xe6,0x24,0xe5,0x53,0x54,0x1f,0xff,0xe5,0x08,0x25,0xe0,0x24,0xc4,0xf5,0x82,0xe4, +0x34,0x98,0xf5,0x83,0xe4,0x8f,0xf0,0x12,0x42,0x81,0xe5,0x4f,0x30,0xe7,0x36,0xaf, +0x08,0x12,0x63,0x51,0x80,0x2f,0xe5,0x53,0x54,0x1f,0xff,0xe5,0x08,0x25,0xe0,0x24, +0x44,0xf5,0x82,0xe4,0x34,0x99,0xf5,0x83,0xe4,0x8f,0xf0,0x12,0x42,0x81,0xe5,0x4f, +0x30,0xe7,0x12,0xe5,0x4f,0x54,0x7f,0xfd,0xe5,0x53,0x54,0x1f,0xf5,0x0d,0xab,0x09, +0xaf,0x08,0x12,0x62,0xee,0xe5,0x63,0x14,0x24,0xfd,0x50,0x02,0x80,0x48,0x90,0x9e, +0x66,0xe0,0x60,0x3a,0x90,0x01,0x5b,0xe4,0xf0,0x90,0x01,0x3c,0x74,0x04,0xf0,0x71, +0xc3,0xef,0x64,0x01,0x70,0x30,0x90,0x9e,0x85,0xf0,0x90,0x9e,0x5b,0xe0,0x90,0x9e, +0x86,0xf0,0xe4,0xfb,0xfd,0x7f,0x58,0x7e,0x01,0x12,0x44,0x5e,0x90,0x01,0x5b,0x74, +0x05,0xf0,0x90,0x06,0x92,0x74,0x01,0xf0,0x90,0x9e,0x64,0xf0,0x80,0x08,0x71,0xc3, +0xbf,0x01,0x03,0x12,0x44,0xcb,0xe5,0x2c,0x30,0xe1,0x20,0x90,0x01,0x34,0x74,0x02, +0xf0,0x85,0xd1,0x58,0x85,0xd2,0x59,0x85,0xd3,0x5a,0x85,0xd4,0x5b,0x85,0xd5,0x5c, +0x85,0xd6,0x5d,0x85,0xd7,0x5e,0x85,0xd9,0x5f,0x71,0xd2,0xe5,0x2c,0x30,0xe3,0x06, +0x90,0x01,0x34,0x74,0x08,0xf0,0xe5,0x2c,0x30,0xe4,0x09,0x90,0x01,0x34,0x74,0x10, +0xf0,0x43,0x57,0x10,0xe5,0x2c,0x30,0xe5,0x26,0x90,0x01,0xcf,0xe0,0x30,0xe5,0x1f, +0xe0,0x54,0xdf,0xf0,0x90,0x01,0x34,0x74,0x20,0xf0,0x75,0xa8,0x00,0x75,0xe8,0x00, +0x12,0x4b,0xcf,0x90,0x00,0x03,0xe0,0x54,0xfb,0xf0,0x12,0x4d,0x45,0x80,0xfe,0xe5, +0x2c,0x30,0xe6,0x06,0x90,0x01,0x34,0x74,0x40,0xf0,0xe5,0x2e,0x30,0xe0,0x12,0x90, +0x9e,0x7f,0x74,0x01,0xf0,0x90,0x01,0x36,0xf0,0x12,0x61,0x4e,0x90,0x9e,0x7f,0xe4, +0xf0,0xe5,0x2e,0x30,0xe1,0x0b,0x90,0x01,0x36,0x74,0x02,0xf0,0x43,0x57,0x40,0x11, +0x23,0xe5,0x2e,0x30,0xe2,0x09,0x90,0x01,0x36,0x74,0x04,0xf0,0x12,0x60,0xdf,0xe5, +0x2e,0x30,0xe3,0x28,0x90,0x01,0x36,0x74,0x08,0xf0,0xe5,0x60,0x64,0x01,0x70,0x1c, +0xe5,0x63,0x60,0x18,0x90,0x01,0x57,0xe4,0xf0,0x90,0x01,0x3c,0x74,0x02,0xf0,0x90, +0x9e,0x85,0xe4,0x12,0x44,0x4e,0x90,0x01,0x57,0x74,0x05,0xf0,0xe5,0x2e,0x30,0xe4, +0x2b,0x90,0x01,0x36,0x74,0x10,0xf0,0xe5,0x60,0xb4,0x01,0x20,0xe5,0x63,0x60,0x1c, +0x90,0x01,0x57,0xe4,0xf0,0x90,0x01,0x3c,0x74,0x02,0xf0,0x90,0x9e,0x67,0xe4,0xf0, +0x53,0x64,0xfd,0xe5,0x64,0x54,0x07,0x70,0x03,0x12,0x44,0xcb,0xe5,0x2e,0x30,0xe5, +0x1f,0x90,0x01,0x36,0x74,0x20,0xf0,0xe5,0x60,0xb4,0x01,0x14,0xe5,0x63,0x60,0x10, +0x90,0x9e,0x66,0xe0,0x64,0x02,0x60,0x05,0x12,0x44,0xd2,0x80,0x03,0x12,0x44,0x79, +0xe5,0x2e,0x30,0xe6,0x1b,0x90,0x01,0x36,0x74,0x40,0xf0,0xe5,0x60,0xb4,0x01,0x10, +0xe5,0x63,0x60,0x0c,0x53,0x64,0xfe,0xe5,0x64,0x54,0x07,0x70,0x03,0x12,0x44,0xcb, +0xe5,0x2f,0x30,0xe1,0x08,0x90,0x01,0x37,0x74,0x02,0xf0,0x91,0x64,0x74,0xa1,0x04, +0x90,0x01,0xc4,0xf0,0x74,0x50,0xa3,0xf0,0xd0,0x07,0xd0,0x06,0xd0,0x05,0xd0,0x04, +0xd0,0x03,0xd0,0x02,0xd0,0x01,0xd0,0x00,0xd0,0xd0,0xd0,0x82,0xd0,0x83,0xd0,0xf0, +0xd0,0xe0,0x32,0x90,0x04,0x1b,0xe0,0x54,0x7f,0x64,0x7f,0x7f,0x01,0x60,0x02,0x7f, +0x00,0x22,0x90,0x9e,0x10,0xe0,0x54,0xf0,0x44,0x03,0xf0,0x54,0x0f,0x44,0x80,0xf0, +0x7b,0x00,0x7a,0x00,0x79,0x58,0x90,0x9e,0x90,0x12,0x43,0x8b,0x0b,0x7a,0x9e,0x79, +0x10,0xd3,0x10,0xaf,0x01,0xc3,0xc0,0xd0,0x90,0x9e,0x8d,0x12,0x43,0x8b,0x90,0x9e, +0xb0,0xe0,0xff,0x04,0xf0,0x90,0x00,0x01,0xef,0x12,0x42,0x5f,0x7f,0xaf,0x7e,0x01, +0x12,0x71,0x7a,0xef,0x60,0x49,0x90,0x9e,0x8d,0x12,0x43,0x6b,0x8b,0x23,0x8a,0x24, +0x89,0x25,0x75,0x26,0x02,0x7b,0x01,0x7a,0x01,0x79,0xa0,0x12,0x45,0x09,0x90,0x9e, +0x90,0x12,0x43,0x6b,0x8b,0x23,0x8a,0x24,0x89,0x25,0x90,0x9e,0x8d,0x12,0x43,0x6b, +0x12,0x29,0xd9,0xff,0xc4,0x54,0x0f,0xf5,0x26,0x7b,0x01,0x7a,0x01,0x79,0xa2,0x12, +0x45,0x09,0x90,0x01,0xaf,0x74,0xff,0xf0,0x90,0x01,0xcb,0xe0,0x64,0x80,0xf0,0xd0, +0xd0,0x92,0xaf,0x22,0x90,0x9e,0xa0,0x12,0x2a,0x8b,0x00,0x00,0x00,0x00,0xe5,0x63, +0x14,0x24,0xfd,0x50,0x02,0x80,0x1f,0x90,0x9e,0x66,0xe0,0x60,0x06,0x7d,0x01,0x7f, +0x0c,0x80,0x0d,0xe5,0x61,0x54,0x0f,0xc3,0x94,0x04,0x50,0x06,0x7d,0x01,0x7f,0x04, +0x91,0xe7,0xe4,0xff,0x91,0x97,0x22,0xef,0x60,0x0b,0x90,0x9e,0x80,0xe0,0xb4,0x01, +0x10,0xe4,0xff,0x80,0x09,0x90,0x9e,0x80,0xe0,0xb4,0x01,0x05,0x7f,0x01,0x12,0x75, +0xa5,0x22,0x90,0x01,0x37,0x74,0x02,0xf0,0x90,0x05,0x22,0x74,0xff,0xf0,0x12,0x74, +0x12,0xef,0x70,0x06,0x90,0x01,0xc8,0x74,0xfd,0xf0,0x7d,0x02,0x7f,0x03,0x12,0x36, +0xe6,0xe5,0x63,0x60,0x04,0x7f,0x01,0x91,0x97,0x12,0x74,0xd2,0x53,0x61,0xf0,0x43, +0x61,0x02,0x22,0x7d,0x01,0x7f,0x0c,0x8f,0x6a,0x8d,0x6b,0xe5,0x6a,0x54,0x0f,0xff, +0xe5,0x61,0x54,0x0f,0x6f,0x60,0x65,0xe5,0x6a,0x30,0xe2,0x28,0xe5,0x61,0x20,0xe2, +0x04,0x7f,0x01,0xd1,0xc2,0xe5,0x61,0x30,0xe3,0x0c,0xe5,0x6a,0x20,0xe3,0x07,0xb1, +0x5d,0xef,0x60,0x48,0xa1,0xa5,0xe5,0x61,0x20,0xe3,0x41,0xe5,0x6a,0x30,0xe3,0x3c, +0xaf,0x6b,0xc1,0xdc,0xe5,0x61,0x54,0x0f,0xff,0xbf,0x0c,0x0c,0xe5,0x6a,0x20,0xe3, +0x07,0xb1,0x5d,0xef,0x60,0x26,0xb1,0xa5,0xe5,0x61,0x54,0x0f,0xff,0xbf,0x04,0x0c, +0xe5,0x6a,0x20,0xe2,0x07,0xf1,0x21,0xef,0x60,0x12,0x91,0xb2,0xe5,0x61,0x54,0x0f, +0xff,0xbf,0x02,0x08,0x12,0x60,0xbd,0xef,0x60,0x02,0xd1,0xaf,0x22,0x71,0xc3,0xef, +0x64,0x01,0x60,0x08,0x90,0x01,0xb9,0x74,0x01,0xf0,0x80,0x30,0x90,0x9e,0x64,0xe0, +0x60,0x08,0x90,0x01,0xb9,0x74,0x02,0xf0,0x80,0x22,0x90,0x9e,0x63,0xe0,0x60,0x08, +0x90,0x01,0xb9,0x74,0x04,0xf0,0x80,0x14,0xe5,0x62,0x54,0x0f,0xd3,0x94,0x04,0x40, +0x08,0x90,0x01,0xb9,0x74,0x08,0xf0,0x80,0x03,0x7f,0x01,0x22,0x90,0x01,0xb8,0x74, +0x08,0xf0,0x7f,0x00,0x22,0x90,0x06,0x04,0xe0,0x44,0x40,0xf0,0xe5,0x60,0xb4,0x01, +0x04,0x7f,0x01,0xd1,0xf6,0x53,0x61,0xf0,0x43,0x61,0x04,0x22,0xef,0x64,0x01,0x70, +0x2e,0x7d,0x78,0x7f,0x02,0x12,0x36,0x75,0x7d,0x02,0x7f,0x03,0x12,0x36,0x75,0x90, +0x01,0x57,0xe4,0xf0,0x90,0x01,0x3c,0x74,0x02,0xf0,0x91,0xe3,0xe4,0xff,0x91,0x97, +0x90,0x06,0x04,0xe0,0x54,0x7f,0xf0,0x90,0x06,0x0a,0xe0,0x54,0xf8,0xf0,0x22,0x90, +0x01,0x36,0x74,0x7b,0xf0,0xa3,0x74,0x02,0xf0,0x7d,0x7b,0xff,0x12,0x36,0xe6,0x7d, +0x02,0x7f,0x03,0x12,0x36,0xe6,0x90,0x06,0x04,0xe0,0x44,0x80,0xf0,0x90,0x06,0x0a, +0xe0,0x44,0x07,0xf0,0x12,0x62,0x4c,0xe5,0x60,0x20,0xe0,0x05,0xe4,0x90,0x9e,0x58, +0xf0,0x22,0x8b,0x14,0x8a,0x15,0x89,0x16,0x12,0x60,0xb1,0xab,0x14,0xaa,0x15,0xa9, +0x16,0x12,0x29,0xd9,0xf5,0x63,0x14,0x60,0x0e,0x14,0x60,0x1e,0x14,0x60,0x2f,0x24, +0x03,0x70,0x40,0x7f,0x01,0x80,0x3a,0xab,0x14,0xaa,0x15,0xa9,0x16,0x90,0x00,0x02, +0x12,0x42,0x20,0xfd,0xe4,0xff,0xd1,0x84,0x80,0x27,0xab,0x14,0xaa,0x15,0xa9,0x16, +0x90,0x00,0x02,0x12,0x42,0x20,0xfd,0x7f,0x01,0xd1,0x84,0x1f,0x80,0x13,0xab,0x14, +0xaa,0x15,0xa9,0x16,0x90,0x00,0x02,0x12,0x42,0x20,0xfd,0x7f,0x02,0xd1,0x84,0xe4, +0xff,0xb1,0xbc,0x22,0xef,0x24,0xfe,0x60,0x0b,0x04,0x70,0x22,0x90,0x9e,0x65,0x74, +0x01,0xf0,0x80,0x16,0xed,0x70,0x0a,0x90,0x9e,0x62,0xe0,0x90,0x9e,0x65,0xf0,0x80, +0x05,0x90,0x9e,0x65,0xed,0xf0,0x90,0x9e,0x65,0xe0,0x90,0x9e,0x56,0xf0,0x22,0x53, +0x61,0xf0,0x43,0x61,0x01,0x12,0x45,0x00,0x12,0x45,0x01,0x53,0x61,0xf0,0x43,0x61, +0x02,0x22,0x90,0x9e,0xaf,0xef,0xf0,0x12,0x74,0x53,0x90,0x9e,0xaf,0xe0,0x60,0x05, +0x90,0x05,0x22,0xe4,0xf0,0x53,0x61,0xf0,0x43,0x61,0x04,0x22,0x90,0x06,0x04,0xe0, +0x54,0xbf,0xf0,0xef,0x60,0x09,0xe5,0x60,0xb4,0x01,0x04,0xe4,0xff,0xd1,0xf6,0x53, +0x61,0xf0,0x43,0x61,0x0c,0x22,0x8f,0x27,0x12,0x45,0xb0,0xbf,0x01,0x22,0x90,0x9e, +0x7a,0xe0,0xff,0x7d,0x01,0x12,0x47,0x79,0xab,0x07,0xaa,0x06,0xad,0x03,0xac,0x02, +0xaf,0x27,0x12,0x60,0x2a,0xaf,0x03,0x12,0x5f,0xf7,0x90,0x04,0x1f,0x74,0x20,0xf0, +0x22,0x71,0xc3,0xef,0x64,0x01,0x60,0x08,0x90,0x01,0xb9,0x74,0x01,0xf0,0x80,0x58, +0xe5,0x64,0x54,0x03,0x60,0x08,0x90,0x01,0xb9,0x74,0x02,0xf0,0x80,0x4a,0xe5,0x62, +0x54,0x0f,0xd3,0x94,0x02,0x40,0x08,0x90,0x01,0xb9,0x74,0x04,0xf0,0x80,0x39,0xe5, +0x64,0x30,0xe2,0x08,0x90,0x01,0xb9,0x74,0x08,0xf0,0x80,0x2c,0xe5,0x64,0x30,0xe4, +0x08,0x90,0x01,0xb9,0x74,0x10,0xf0,0x80,0x1f,0x90,0x9e,0x58,0xe0,0x60,0x08,0x90, +0x01,0xb9,0x74,0x20,0xf0,0x80,0x11,0x90,0x9e,0x5e,0xe0,0x60,0x08,0x90,0x01,0xb9, +0x74,0x80,0xf0,0x80,0x03,0x7f,0x01,0x22,0x90,0x01,0xb8,0x74,0x04,0xf0,0x7f,0x00, +0x22,0xc0,0xe0,0xc0,0xf0,0xc0,0x83,0xc0,0x82,0xc0,0xd0,0x75,0xd0,0x00,0xc0,0x00, +0xc0,0x01,0xc0,0x02,0xc0,0x03,0xc0,0x04,0xc0,0x05,0xc0,0x06,0xc0,0x07,0x90,0x01, +0xc4,0x74,0x91,0xf0,0x74,0x57,0xa3,0xf0,0x53,0x91,0xef,0x90,0x00,0x51,0xe0,0xff, +0x90,0x00,0x55,0xe0,0x5f,0xf5,0x3d,0x90,0x00,0x52,0xe0,0xff,0x90,0x00,0x56,0xe0, +0x5f,0xf5,0x3e,0xe5,0x3d,0x30,0xe4,0x06,0x90,0x00,0x55,0x74,0x10,0xf0,0xe5,0x3d, +0x30,0xe5,0x06,0x90,0x00,0x55,0x74,0x20,0xf0,0xe5,0x3d,0x30,0xe6,0x1b,0x90,0x00, +0x55,0x74,0x40,0xf0,0x90,0x9e,0x42,0xe0,0x54,0x03,0xff,0xbf,0x03,0x0b,0x90,0x9e, +0x3f,0xe0,0x60,0x05,0x7f,0x01,0x12,0x49,0x1a,0xe5,0x3d,0x30,0xe7,0x15,0x90,0x00, +0x55,0x74,0x80,0xf0,0x90,0x9e,0x42,0xe0,0x54,0x03,0xff,0xbf,0x03,0x05,0x7f,0x02, +0x12,0x49,0x1a,0xe5,0x3e,0x30,0xe0,0x06,0x90,0x00,0x56,0x74,0x01,0xf0,0xe5,0x3e, +0x30,0xe1,0x06,0x90,0x00,0x56,0x74,0x02,0xf0,0xe5,0x3e,0x30,0xe2,0x06,0x90,0x00, +0x56,0x74,0x04,0xf0,0xe5,0x3e,0x30,0xe3,0x06,0x90,0x00,0x56,0x74,0x08,0xf0,0x90, +0x01,0xc4,0x74,0x91,0xf0,0x74,0x57,0xa3,0xf0,0xd0,0x07,0xd0,0x06,0xd0,0x05,0xd0, +0x04,0xd0,0x03,0xd0,0x02,0xd0,0x01,0xd0,0x00,0xd0,0xd0,0xd0,0x82,0xd0,0x83,0xd0, +0xf0,0xd0,0xe0,0x32,0x90,0x01,0xcc,0xe0,0x54,0x0f,0x90,0x9e,0x19,0xf0,0x90,0x9e, +0x19,0xe0,0xfd,0x70,0x02,0x21,0xb5,0x90,0x9e,0xae,0xe0,0xff,0x74,0x01,0x7e,0x00, +0xa8,0x07,0x08,0x80,0x05,0xc3,0x33,0xce,0x33,0xce,0xd8,0xf9,0xff,0xef,0x5d,0x70, +0x02,0x21,0xae,0x90,0x9e,0xae,0xe0,0x75,0xf0,0x04,0x90,0x01,0xd0,0x12,0x43,0x5f, +0xe0,0x90,0x9e,0x1a,0xf0,0x75,0x23,0x01,0x75,0x24,0x9e,0x75,0x25,0x1a,0x75,0x26, +0x01,0x7b,0x01,0x7a,0x9e,0x79,0x1b,0x12,0x45,0x09,0x90,0x9e,0x1b,0xe0,0xff,0xc4, +0x13,0x13,0x13,0x54,0x01,0x90,0x9e,0xae,0x30,0xe0,0x59,0xe0,0x75,0xf0,0x02,0x90, +0x00,0x88,0x12,0x43,0x5f,0xe0,0x90,0x9e,0x1c,0xf0,0x90,0x9e,0xae,0xe0,0x75,0xf0, +0x02,0x90,0x00,0x89,0x12,0x43,0x5f,0xe0,0x90,0x9e,0x1d,0xf0,0x90,0x9e,0xae,0xe0, +0x75,0xf0,0x04,0x90,0x01,0xd1,0x12,0x43,0x5f,0xe0,0x90,0x9e,0x1e,0xf0,0x90,0x9e, +0xae,0xe0,0x75,0xf0,0x04,0x90,0x01,0xd2,0x12,0x43,0x5f,0xe0,0x90,0x9e,0x1f,0xf0, +0x90,0x9e,0xae,0xe0,0x75,0xf0,0x04,0x90,0x01,0xd3,0x12,0x43,0x5f,0xe0,0x90,0x9e, +0x20,0xf0,0x80,0x33,0xe0,0x75,0xf0,0x04,0x90,0x01,0xd1,0x12,0x43,0x5f,0xe0,0x90, +0x9e,0x1c,0xf0,0x90,0x9e,0xae,0xe0,0x75,0xf0,0x04,0x90,0x01,0xd2,0x12,0x43,0x5f, +0xe0,0x90,0x9e,0x1d,0xf0,0x90,0x9e,0xae,0xe0,0x75,0xf0,0x04,0x90,0x01,0xd3,0x12, +0x43,0x5f,0xe0,0x90,0x9e,0x1e,0xf0,0xef,0x54,0x7f,0xff,0x7b,0x01,0x7a,0x9e,0x79, +0x1c,0x31,0xb6,0x90,0x9e,0x19,0xe0,0xff,0x90,0x9e,0xae,0xe0,0xfe,0x74,0x01,0xa8, +0x06,0x08,0x80,0x02,0xc3,0x33,0xd8,0xfc,0xf4,0x5f,0x90,0x9e,0x19,0xf0,0x90,0x9e, +0xae,0xe0,0xff,0x74,0x01,0xa8,0x07,0x08,0x80,0x02,0xc3,0x33,0xd8,0xfc,0x90,0x01, +0xcc,0xf0,0x90,0x9e,0xae,0xe0,0x04,0xf0,0xe0,0x54,0x03,0xf0,0x01,0x7e,0x90,0x01, +0xc6,0xe0,0x44,0x02,0xf0,0x22,0x90,0x9e,0x21,0x12,0x43,0x8b,0xef,0x12,0x43,0x94, +0x59,0xfc,0x01,0x59,0xf4,0x02,0x5a,0x20,0x03,0x5a,0x29,0x05,0x5a,0x32,0x06,0x5a, +0x7e,0x07,0x5a,0x3a,0x09,0x5a,0x43,0x0b,0x5a,0x4c,0x0c,0x5a,0x55,0x0d,0x5a,0x5e, +0x0e,0x5a,0x67,0x1b,0x5a,0x6f,0x1c,0x5a,0x05,0x2d,0x5a,0x0e,0x2e,0x5a,0x17,0x3b, +0x00,0x00,0x5a,0x77,0x90,0x9e,0x21,0x12,0x43,0x6b,0xe1,0xe9,0x90,0x9e,0x21,0x12, +0x43,0x6b,0x02,0x71,0xd0,0x90,0x9e,0x21,0x12,0x43,0x6b,0x02,0x72,0x0b,0x90,0x9e, +0x21,0x12,0x43,0x6b,0x02,0x72,0x53,0x90,0x9e,0x21,0x12,0x43,0x6b,0x02,0x72,0x8c, +0x90,0x9e,0x21,0x12,0x43,0x6b,0x02,0x72,0xb6,0x90,0x9e,0x21,0x12,0x43,0x6b,0x02, +0x70,0x4a,0x90,0x9e,0x21,0x12,0x43,0x6b,0x80,0x45,0x90,0x9e,0x21,0x12,0x43,0x6b, +0x02,0x72,0xfe,0x90,0x9e,0x21,0x12,0x43,0x6b,0x02,0x70,0xa2,0x90,0x9e,0x21,0x12, +0x43,0x6b,0x02,0x49,0xc2,0x90,0x9e,0x21,0x12,0x43,0x6b,0x02,0x7b,0x29,0x90,0x9e, +0x21,0x12,0x43,0x6b,0x02,0x4a,0xfc,0x90,0x9e,0x21,0x12,0x43,0x6b,0xe1,0xef,0x90, +0x9e,0x21,0x12,0x43,0x6b,0xe1,0xd1,0x90,0x01,0xc6,0xe0,0x44,0x01,0xf0,0x22,0x90, +0x00,0x04,0x12,0x42,0x20,0xff,0x54,0x1f,0xfe,0xef,0x54,0x20,0xc4,0x13,0x54,0x07, +0xfd,0xaf,0x06,0x90,0x9e,0x24,0xef,0xf0,0xa3,0xed,0xf0,0xa3,0x12,0x43,0x8b,0x90, +0x9e,0x26,0x12,0x43,0x6b,0x90,0x00,0x03,0x12,0x42,0x20,0x54,0xf0,0xc4,0x54,0x0f, +0x90,0x9e,0x29,0xf0,0x90,0x00,0x04,0x12,0x42,0x20,0x54,0x40,0xc4,0x13,0x13,0x54, +0x03,0x90,0x9e,0x2a,0xf0,0x90,0x9e,0x24,0xe0,0xff,0x75,0xf0,0x09,0x90,0x96,0x46, +0x12,0x43,0x5f,0xad,0x82,0xac,0x83,0x90,0x9e,0x2b,0xec,0xf0,0xa3,0xed,0xf0,0xef, +0x75,0xf0,0x09,0xa4,0x24,0x44,0xf9,0x74,0x96,0x35,0xf0,0xfa,0x7b,0x01,0xa3,0x12, +0x43,0x8b,0x90,0x9e,0x26,0x12,0x43,0x6b,0x90,0x00,0x03,0x12,0x42,0x20,0x54,0x0f, +0xff,0x90,0x9e,0x2d,0x12,0x43,0x6b,0xef,0x12,0x42,0x4d,0x90,0x9e,0x26,0x12,0x43, +0x6b,0x90,0x00,0x02,0x12,0x42,0x20,0xff,0x90,0x9e,0x2d,0x12,0x43,0x6b,0x90,0x00, +0x01,0xef,0x12,0x42,0x5f,0x90,0x9e,0x26,0x12,0x43,0x6b,0x90,0x00,0x01,0x12,0x42, +0x20,0xff,0x90,0x9e,0x2b,0xe0,0xfc,0xa3,0xe0,0xfd,0xf5,0x82,0x8c,0x83,0xef,0xf0, +0x12,0x29,0xd9,0x8d,0x82,0x8c,0x83,0xa3,0xf0,0x90,0x9e,0x29,0xe0,0xfe,0x90,0x9e, +0x24,0xe0,0xff,0x24,0x82,0xf5,0x82,0xe4,0x34,0x95,0xf5,0x83,0xee,0xf0,0x90,0x9e, +0x25,0xe0,0xfe,0x75,0xf0,0x09,0xef,0x90,0x96,0x4a,0x12,0x43,0x5f,0xee,0xf0,0x75, +0xf0,0x09,0xef,0x90,0x96,0x4b,0x12,0x43,0x5f,0x74,0x01,0xf0,0x90,0x9e,0x2a,0xe0, +0xfe,0x75,0xf0,0x09,0xef,0x90,0x96,0x4c,0x12,0x43,0x5f,0xee,0xf0,0x8f,0x14,0xef, +0x25,0xe0,0x24,0xc6,0xf5,0x82,0xe4,0x34,0x9b,0xaf,0x82,0xf5,0x16,0x8f,0x17,0xe5, +0x14,0x75,0xf0,0x02,0xa4,0x24,0x02,0xf9,0x74,0x95,0x35,0xf0,0x75,0x18,0x01,0xf5, +0x19,0x89,0x1a,0x75,0xf0,0x09,0xe5,0x14,0x90,0x96,0x46,0x12,0x43,0x5f,0xaf,0x82, +0x85,0x83,0x1b,0x8f,0x1c,0xe5,0x14,0x75,0xf0,0x09,0xa4,0x24,0x44,0xf9,0x74,0x96, +0x35,0xf0,0x75,0x1d,0x01,0xf5,0x1e,0x89,0x1f,0x74,0x82,0x25,0x14,0xf5,0x82,0xe4, +0x34,0x95,0xf5,0x83,0xe0,0x12,0x43,0x94,0x5c,0x0d,0x00,0x5c,0x22,0x01,0x5c,0x37, +0x02,0x5c,0x4c,0x03,0x5c,0x75,0x04,0x5c,0x8a,0x05,0x5c,0x9f,0x06,0x5c,0xc5,0x0c, +0x5c,0xf2,0x0d,0x5d,0x1f,0x0e,0x5d,0x4c,0x0f,0x00,0x00,0x5d,0x80,0xe5,0x14,0x25, +0xe0,0x24,0xc6,0xf5,0x82,0xe4,0x34,0x9b,0xf5,0x83,0x74,0xf0,0xf0,0xa3,0x74,0x15, +0x80,0x3c,0xe5,0x14,0x25,0xe0,0x24,0xc6,0xf5,0x82,0xe4,0x34,0x9b,0xf5,0x83,0x74, +0xf0,0xf0,0xa3,0x74,0x10,0x80,0x27,0xe5,0x14,0x25,0xe0,0x24,0xc6,0xf5,0x82,0xe4, +0x34,0x9b,0xf5,0x83,0x74,0xf0,0xf0,0xa3,0x74,0x05,0x80,0x12,0xe5,0x14,0x25,0xe0, +0x24,0xc6,0xf5,0x82,0xe4,0x34,0x9b,0xf5,0x83,0x74,0xf0,0xf0,0xa3,0xe4,0xf0,0xe5, +0x14,0x25,0xe0,0x24,0x02,0xf5,0x82,0xe4,0x34,0x95,0xf5,0x83,0x74,0x0f,0xf0,0xa3, +0x74,0x8f,0xf0,0xa1,0x80,0xe5,0x14,0x25,0xe0,0x24,0xc6,0xf5,0x82,0xe4,0x34,0x9b, +0xf5,0x83,0x74,0x0f,0xf0,0xa3,0x74,0xf5,0x80,0x27,0xe5,0x14,0x25,0xe0,0x24,0xc6, +0xf5,0x82,0xe4,0x34,0x9b,0xf5,0x83,0x74,0x0f,0xf0,0xa3,0x74,0xf0,0x80,0x12,0xe5, +0x14,0x25,0xe0,0x24,0xc6,0xf5,0x82,0xe4,0x34,0x9b,0xf5,0x83,0xe4,0xf0,0xa3,0x74, +0x0d,0xf0,0xe5,0x14,0x25,0xe0,0x24,0x02,0xf5,0x82,0xe4,0x34,0x95,0xf5,0x83,0xe4, +0xf0,0xa3,0xf0,0xa1,0x80,0x90,0x04,0x47,0xe0,0xab,0x18,0xaa,0x19,0xa9,0x1a,0x12, +0x42,0x4d,0x90,0x04,0x46,0xe0,0xab,0x18,0xaa,0x19,0xa9,0x1a,0x90,0x00,0x01,0x12, +0x42,0x5f,0x90,0x04,0x45,0xe0,0x85,0x17,0x82,0x85,0x16,0x83,0xf0,0x90,0x04,0x44, +0xa1,0x77,0x90,0x04,0x4b,0xe0,0xab,0x18,0xaa,0x19,0xa9,0x1a,0x12,0x42,0x4d,0x90, +0x04,0x4a,0xe0,0xab,0x18,0xaa,0x19,0xa9,0x1a,0x90,0x00,0x01,0x12,0x42,0x5f,0x90, +0x04,0x49,0xe0,0x85,0x17,0x82,0x85,0x16,0x83,0xf0,0x90,0x04,0x48,0x80,0x58,0x90, +0x04,0x4f,0xe0,0xab,0x18,0xaa,0x19,0xa9,0x1a,0x12,0x42,0x4d,0x90,0x04,0x4e,0xe0, +0xab,0x18,0xaa,0x19,0xa9,0x1a,0x90,0x00,0x01,0x12,0x42,0x5f,0x90,0x04,0x4d,0xe0, +0x85,0x17,0x82,0x85,0x16,0x83,0xf0,0x90,0x04,0x4c,0x80,0x2b,0x90,0x04,0x53,0xe0, +0xab,0x18,0xaa,0x19,0xa9,0x1a,0x12,0x42,0x4d,0x90,0x04,0x52,0xe0,0xab,0x18,0xaa, +0x19,0xa9,0x1a,0x90,0x00,0x01,0x12,0x42,0x5f,0x90,0x04,0x51,0xe0,0x85,0x17,0x82, +0x85,0x16,0x83,0xf0,0x90,0x04,0x50,0xe0,0x85,0x17,0x82,0x85,0x16,0x83,0xa3,0xf0, +0xab,0x18,0xaa,0x19,0xa9,0x1a,0xc0,0x03,0xc0,0x02,0xc0,0x01,0x12,0x29,0xd9,0xff, +0xab,0x1d,0xaa,0x1e,0xa9,0x1f,0x12,0x29,0xd9,0x5f,0xd0,0x01,0xd0,0x02,0xd0,0x03, +0x12,0x42,0x4d,0xab,0x18,0xe5,0x1a,0x24,0x01,0xf9,0xe4,0x35,0x19,0xfa,0xc0,0x03, +0xc0,0x02,0xc0,0x01,0x12,0x29,0xd9,0xff,0xab,0x1d,0xaa,0x1e,0xa9,0x1f,0x90,0x00, +0x01,0x12,0x42,0x20,0x5f,0xd0,0x01,0xd0,0x02,0xd0,0x03,0x12,0x42,0x4d,0x85,0x17, +0x82,0x85,0x16,0x83,0xc0,0x83,0xc0,0x82,0xe0,0xff,0x85,0x1c,0x82,0x85,0x1b,0x83, +0xe0,0xfe,0xef,0x5e,0xd0,0x82,0xd0,0x83,0xf0,0x85,0x17,0x82,0x85,0x16,0x83,0xa3, +0xc0,0x83,0xc0,0x82,0xe0,0xff,0x85,0x1c,0x82,0x85,0x1b,0x83,0xa3,0xe0,0xfe,0xef, +0x5e,0xd0,0x82,0xd0,0x83,0xf0,0xe5,0x14,0x25,0xe0,0x24,0x02,0xf5,0x82,0xe4,0x34, +0x95,0xf5,0x83,0xe0,0xfe,0xa3,0xe0,0x4e,0x60,0x3b,0x75,0x15,0x0b,0x74,0x01,0x7e, +0x00,0xa8,0x15,0x08,0x80,0x05,0xc3,0x33,0xce,0x33,0xce,0xd8,0xf9,0xff,0xe5,0x14, +0x25,0xe0,0x24,0x02,0xf5,0x82,0xe4,0x34,0x95,0xf5,0x83,0xe0,0x5e,0xfe,0xa3,0xe0, +0x5f,0x4e,0x60,0x06,0xe5,0x15,0x24,0x10,0x80,0x5d,0x15,0x15,0xe5,0x15,0xc3,0x94, +0x00,0x50,0xca,0x80,0x56,0xe5,0x14,0x25,0xe0,0x24,0xc6,0xf5,0x82,0xe4,0x34,0x9b, +0xf5,0x83,0xe0,0xfe,0xa3,0xe0,0x4e,0x60,0x3d,0x75,0x15,0x0f,0x74,0x01,0x7e,0x00, +0xa8,0x15,0x08,0x80,0x05,0xc3,0x33,0xce,0x33,0xce,0xd8,0xf9,0xff,0xe5,0x14,0x25, +0xe0,0x24,0xc6,0xf5,0x82,0xe4,0x34,0x9b,0xf5,0x83,0xe0,0x5e,0xfe,0xa3,0xe0,0x5f, +0x4e,0x60,0x08,0x90,0x9e,0x30,0xe5,0x15,0xf0,0x80,0x10,0x15,0x15,0xe5,0x15,0xc3, +0x94,0x00,0x50,0xc8,0x80,0x05,0xe4,0x90,0x9e,0x30,0xf0,0xe5,0x14,0x25,0xe0,0x24, +0xc6,0xf5,0x82,0xe4,0x34,0x9b,0xf5,0x83,0xe0,0xfe,0xa3,0xe0,0x4e,0x60,0x3b,0xe4, +0xf5,0x15,0x74,0x01,0x7e,0x00,0xa8,0x15,0x08,0x80,0x05,0xc3,0x33,0xce,0x33,0xce, +0xd8,0xf9,0xff,0xe5,0x14,0x25,0xe0,0x24,0xc6,0xf5,0x82,0xe4,0x34,0x9b,0xf5,0x83, +0xe0,0x5e,0xfe,0xa3,0xe0,0x5f,0x4e,0x60,0x08,0x90,0x9e,0x31,0xe5,0x15,0xf0,0x80, +0x5b,0x05,0x15,0xe5,0x15,0xb4,0x10,0xca,0x80,0x52,0xe5,0x14,0x25,0xe0,0x24,0x02, +0xf5,0x82,0xe4,0x34,0x95,0xf5,0x83,0xe0,0xfe,0xa3,0xe0,0x4e,0x60,0x39,0xe4,0xf5, +0x15,0x74,0x01,0x7e,0x00,0xa8,0x15,0x08,0x80,0x05,0xc3,0x33,0xce,0x33,0xce,0xd8, +0xf9,0xff,0xe5,0x14,0x25,0xe0,0x24,0x02,0xf5,0x82,0xe4,0x34,0x95,0xf5,0x83,0xe0, +0x5e,0xfe,0xa3,0xe0,0x5f,0x4e,0x60,0x06,0xe5,0x15,0x24,0x10,0x80,0x0a,0x05,0x15, +0xe5,0x15,0xb4,0x0c,0xcc,0x80,0x05,0xe4,0x90,0x9e,0x31,0xf0,0x90,0x9e,0x30,0xe0, +0xff,0x75,0xf0,0x09,0xe5,0x14,0x90,0x96,0x48,0x12,0x43,0x5f,0xef,0xf0,0x90,0x9e, +0x31,0xe0,0xfe,0x75,0xf0,0x09,0xe5,0x14,0x90,0x96,0x49,0x12,0x43,0x5f,0xee,0xf0, +0x74,0x84,0x25,0x14,0xf5,0x82,0xe4,0x34,0x04,0xf5,0x83,0xe0,0xd3,0x9f,0x40,0x06, +0x90,0x9e,0x30,0x12,0x62,0x94,0x74,0x84,0x25,0x14,0xf5,0x82,0xe4,0x34,0x04,0xf5, +0x83,0xe0,0xff,0x90,0x9e,0x31,0xe0,0xfe,0xef,0xc3,0x9e,0x50,0x03,0x12,0x62,0x94, +0x90,0x9e,0x30,0xe0,0xff,0xd3,0x94,0x13,0x40,0x07,0x90,0x96,0x43,0x74,0x03,0xf0, +0x22,0xef,0xd3,0x94,0x0b,0x40,0x07,0x90,0x96,0x43,0x74,0x02,0xf0,0x22,0xef,0xd3, +0x94,0x03,0x40,0x07,0x90,0x96,0x43,0x74,0x01,0xf0,0x22,0xe4,0x90,0x96,0x43,0xf0, +0x22,0x90,0x00,0x04,0x12,0x42,0x20,0xff,0x54,0x3f,0xfe,0xef,0x54,0x80,0xc4,0x13, +0x13,0x13,0x54,0x01,0xfd,0xaf,0x06,0x41,0x93,0x12,0x29,0xd9,0xf5,0x60,0x22,0x12, +0x29,0xd9,0x90,0x95,0x01,0xf0,0x22,0xad,0x07,0x74,0x11,0x2d,0xf5,0x82,0xe4,0x34, +0xfc,0xf5,0x83,0xe0,0x44,0x01,0xf0,0x90,0x04,0x80,0xe0,0x54,0x0f,0xfc,0x74,0x14, +0x2d,0xf5,0x82,0xe4,0x34,0xfc,0xf5,0x83,0xe0,0x54,0xc0,0x4c,0xfd,0x74,0x14,0x2f, +0xf5,0x82,0xe4,0x34,0xfc,0xf5,0x83,0xed,0xf0,0x22,0xef,0x60,0x0f,0x74,0x21,0x2d, +0xf5,0x82,0xe4,0x34,0xfc,0xf5,0x83,0xe0,0x44,0x10,0xf0,0x22,0x74,0x21,0x2d,0xf5, +0x82,0xe4,0x34,0xfc,0xf5,0x83,0xe0,0x54,0xef,0xf0,0x22,0xe4,0xf5,0x60,0xf5,0x64, +0xf5,0x63,0x75,0x62,0x0c,0x75,0x61,0x0c,0x90,0x9e,0x66,0xf0,0x90,0x9e,0x64,0xf0, +0x90,0x9e,0x63,0xf0,0x90,0x9e,0x65,0x04,0xf0,0x90,0x9e,0x56,0xf0,0xe4,0x90,0x9e, +0x67,0xf0,0x90,0x9e,0x58,0xf0,0x90,0x9e,0x61,0x74,0x07,0xf0,0xe4,0x90,0x9e,0x57, +0xf0,0x90,0x9e,0x5f,0xf0,0xa3,0x74,0x03,0xf0,0x90,0x9e,0x5c,0x74,0x0a,0xf0,0xa3, +0x74,0x05,0xf0,0x90,0x9e,0x5b,0x74,0x14,0xf0,0x90,0x9e,0x62,0x74,0x05,0xf0,0xe4, +0x90,0x9e,0x5a,0xf0,0x90,0x9e,0x55,0xf0,0x90,0x9e,0x7f,0xf0,0x90,0x9e,0x5e,0xf0, +0x22,0xe4,0x90,0x9e,0x67,0xf0,0x90,0x9e,0x57,0xf0,0xf5,0x64,0x22,0x7f,0x00,0x22, +0xe5,0x62,0x30,0xe6,0x19,0xe5,0x62,0x54,0x0f,0xff,0x90,0x9e,0x54,0xe0,0xfe,0x4f, +0x90,0x01,0x2f,0xf0,0xee,0x64,0x80,0x90,0x9e,0x54,0xf0,0x53,0x62,0xbf,0x22,0xe5, +0x60,0x64,0x01,0x70,0x68,0xe5,0x63,0x60,0x64,0xe5,0x63,0x64,0x02,0x60,0x06,0xe5, +0x63,0x64,0x05,0x70,0x27,0x90,0x06,0xab,0xe0,0x90,0x9e,0x56,0xf0,0x90,0x06,0xaa, +0xe0,0x90,0x9e,0x65,0xf0,0x90,0x9e,0x56,0xe0,0x70,0x07,0x90,0x9e,0x65,0xe0,0xff, +0x80,0x05,0x90,0x9e,0x56,0xe0,0xff,0x90,0x9e,0x56,0xef,0xf0,0x90,0x9e,0x58,0xe0, +0x60,0x03,0xe0,0x14,0xf0,0xe4,0x90,0x9e,0x57,0xf0,0x90,0x05,0x58,0x74,0x03,0xf0, +0x90,0x01,0x57,0xe4,0xf0,0x90,0x01,0x3c,0x74,0x02,0xf0,0x53,0x64,0xfd,0x53,0x64, +0xef,0xe5,0x63,0x14,0x24,0xfd,0x50,0x02,0x80,0x03,0x12,0x45,0x53,0x22,0xe4,0xfb, +0x90,0x9e,0x9c,0x12,0x2a,0x8b,0x00,0x00,0x00,0x00,0xe5,0x63,0x60,0x6a,0xe5,0x60, +0x64,0x01,0x70,0x64,0xe5,0x63,0x14,0x60,0x2b,0x24,0xfd,0x60,0x27,0x24,0x02,0x24, +0xfb,0x50,0x02,0x80,0x21,0x90,0x9e,0x56,0xe0,0x14,0xf0,0xe0,0x60,0x04,0xa3,0xe0, +0x60,0x14,0x90,0x9e,0x56,0xe0,0x70,0x08,0x90,0x9e,0x65,0xe0,0x90,0x9e,0x56,0xf0, +0x7b,0x01,0x80,0x02,0x7b,0x01,0xeb,0x60,0x2f,0x43,0x64,0x10,0xe4,0x90,0x9e,0x85, +0xf0,0x90,0x9e,0x57,0xe0,0x75,0xf0,0x03,0xa4,0xff,0x90,0x9e,0x61,0xe0,0x2f,0x12, +0x44,0x53,0x90,0x01,0x57,0x74,0x05,0xf0,0xe5,0x61,0x54,0x0f,0xc3,0x94,0x04,0x50, +0x07,0x7d,0x01,0x7f,0x04,0x12,0x54,0xe7,0x22,0xe4,0x90,0x9e,0x15,0xf0,0xe5,0x63, +0x60,0x79,0x90,0x9e,0x67,0xe0,0x60,0x0d,0xe4,0xf0,0x53,0x64,0xfd,0xe5,0x64,0x54, +0x07,0x70,0x68,0x80,0x63,0x90,0x9e,0x57,0xe0,0x04,0xf0,0x53,0x64,0xef,0x90,0x9e, +0x15,0xe0,0xf9,0xff,0x7e,0x00,0x24,0x01,0xfd,0xee,0x33,0xfc,0x90,0x9e,0x57,0xe0, +0xb5,0x05,0x06,0xe4,0xb5,0x04,0x02,0x80,0x12,0xef,0x24,0x02,0xff,0xe4,0x3e,0xfe, +0x90,0x9e,0x57,0xe0,0xb5,0x07,0x0a,0xe4,0xb5,0x06,0x06,0x90,0x05,0x58,0xe0,0x04, +0xf0,0xe9,0xff,0x90,0x9e,0x5c,0xe0,0x2f,0xff,0xe4,0x33,0xfe,0x90,0x9e,0x57,0xe0, +0xd3,0x9f,0xee,0x64,0x80,0xf8,0x74,0x80,0x98,0x40,0x0d,0xe5,0x60,0xb4,0x01,0x0b, +0xa3,0xe0,0x70,0x07,0xe0,0x04,0xf0,0x22,0x12,0x44,0xcb,0x22,0x90,0x9e,0x5f,0xe0, +0xa3,0xe0,0x90,0x05,0x58,0xf0,0x22,0xd3,0x10,0xaf,0x01,0xc3,0xc0,0xd0,0x90,0x9e, +0x93,0x12,0x43,0x8b,0x90,0x9e,0x96,0xe0,0x54,0xf0,0x44,0x06,0xff,0xf0,0xed,0x54, +0x0f,0xc4,0x54,0xf0,0xfe,0xef,0x54,0x0f,0x4e,0xf0,0x90,0x9e,0x93,0x12,0x43,0x6b, +0x90,0x9e,0x90,0x12,0x43,0x8b,0x7b,0x01,0x7a,0x9e,0x79,0x96,0x12,0x53,0xf1,0xd0, +0xd0,0x92,0xaf,0x22,0xe0,0xfd,0x74,0x26,0x25,0x14,0xf5,0x82,0xe4,0x34,0x9d,0xf5, +0x83,0xed,0xf0,0xaf,0x14,0xd3,0x10,0xaf,0x01,0xc3,0xc0,0xd0,0xef,0xc3,0x94,0x20, +0x50,0x0e,0x74,0x84,0x2f,0xf5,0x82,0xe4,0x34,0x04,0xf5,0x83,0xed,0xf0,0x80,0x29, +0x74,0xa6,0x2f,0xf5,0x82,0xe4,0x34,0x9c,0xf5,0x83,0xed,0xf0,0x90,0x9e,0x68,0xef, +0xf0,0x24,0xa6,0xf5,0x82,0xe4,0x34,0x9c,0xf5,0x83,0xe0,0x90,0x9e,0x69,0xf0,0x7b, +0x01,0x7a,0x9e,0x79,0x68,0x7d,0x02,0x51,0x57,0xd0,0xd0,0x92,0xaf,0x22,0x8f,0x0a, +0x8d,0x0b,0xe5,0x0b,0x54,0x1f,0xf5,0x10,0x74,0x01,0x2f,0xf5,0x82,0xe4,0x34,0x94, +0xf5,0x83,0xe0,0xf5,0x0e,0x90,0x04,0xfd,0xe0,0xb4,0x01,0x05,0x75,0x11,0x03,0x80, +0x03,0x75,0x11,0x01,0xeb,0xc3,0x95,0x11,0x40,0x04,0xaf,0x0a,0x80,0x33,0xe5,0x0e, +0x25,0x0d,0xf5,0x0f,0xe5,0x10,0x90,0x41,0xd6,0x93,0xff,0xe5,0x0f,0xd3,0x9f,0x74, +0x01,0x40,0x11,0x25,0x0a,0xf5,0x82,0xe4,0x34,0x94,0xf5,0x83,0xe4,0xf0,0xad,0x0b, +0xaf,0x0a,0x41,0xa5,0x25,0x0a,0xf5,0x82,0xe4,0x34,0x94,0xf5,0x83,0xe5,0x0f,0xf0, +0x22,0xad,0x07,0x75,0xf0,0x09,0xed,0x90,0x96,0x48,0x12,0x43,0x5f,0xe0,0xff,0x74, +0x67,0x2d,0xf5,0x82,0xe4,0x34,0x9d,0xf5,0x83,0xe0,0x54,0x1f,0xf5,0x12,0xd3,0x9f, +0x40,0x02,0x8f,0x12,0xe5,0x12,0x25,0xe0,0x24,0x9e,0xf5,0x82,0xe4,0x34,0x41,0xf5, +0x83,0xe4,0x93,0xfe,0x74,0x01,0x93,0xff,0xe5,0x12,0x25,0xe0,0x24,0x66,0xf5,0x82, +0xe4,0x34,0x41,0xf5,0x83,0x74,0x01,0x93,0x2f,0xff,0xe4,0x93,0x3e,0xc3,0x13,0xfe, +0xef,0x13,0xff,0xed,0x25,0xe0,0x24,0xc2,0xf5,0x82,0xe4,0x34,0x95,0xf5,0x83,0xee, +0xf0,0xa3,0xef,0xf0,0xaf,0x05,0xad,0x12,0x51,0xa5,0xaf,0x12,0x22,0xac,0x07,0xec, +0xc3,0x94,0x20,0x50,0x0d,0x74,0x84,0x2c,0xf5,0x82,0xe4,0x34,0x04,0xf5,0x83,0xe0, +0x80,0x0b,0x74,0xa6,0x2c,0xf5,0x82,0xe4,0x34,0x9c,0xf5,0x83,0xe0,0x54,0x7f,0xf5, +0x1f,0xe5,0x1f,0x54,0x1f,0xff,0x90,0x9e,0x25,0xf0,0x75,0xf0,0x09,0xec,0x90,0x96, +0x49,0x12,0x43,0x5f,0xe0,0x90,0x9e,0x27,0xf0,0x75,0xf0,0x09,0xec,0x90,0x96,0x48, +0x12,0x43,0x5f,0xe0,0xfe,0x90,0x9e,0x28,0xf0,0xec,0x25,0xe0,0x24,0xc6,0xf5,0x82, +0xe4,0x34,0x9b,0xf5,0x83,0xe0,0xfb,0xa3,0xe0,0x90,0x9e,0x29,0xcb,0xf0,0xa3,0xeb, +0xf0,0xec,0x25,0xe0,0x24,0x02,0xf5,0x82,0xe4,0x34,0x95,0xf5,0x83,0xe0,0xfb,0xa3, +0xe0,0x90,0x9e,0x2b,0xcb,0xf0,0xa3,0xeb,0xf0,0xef,0xd3,0x9e,0x40,0x0a,0x90,0x9e, +0x28,0xe0,0x90,0x9e,0x25,0xf0,0xf5,0x1f,0xed,0x70,0x02,0xa1,0x13,0x90,0x9e,0x26, +0xed,0xf0,0xe5,0x1f,0x30,0xe6,0x0a,0x90,0x9e,0x25,0xe0,0xf5,0x1f,0xa3,0xe0,0x14, +0xf0,0x90,0x9e,0x26,0xe0,0x70,0x02,0xa1,0x13,0x90,0x9e,0x25,0xe0,0xff,0xd3,0x94, +0x00,0x50,0x02,0xa1,0x13,0xe4,0x90,0x9e,0x24,0xf0,0xef,0x14,0x90,0x9e,0x23,0xf0, +0x90,0x9e,0x27,0xe0,0xfd,0x90,0x9e,0x23,0xe0,0xff,0xd3,0x9d,0x40,0x6b,0xef,0x94, +0x10,0x40,0x21,0xef,0x24,0xf0,0xff,0x74,0x01,0x7e,0x00,0xa8,0x07,0x08,0x80,0x05, +0xc3,0x33,0xce,0x33,0xce,0xd8,0xf9,0xff,0x90,0x9e,0x2b,0xe0,0x5e,0xfe,0xa3,0xe0, +0x5f,0x4e,0x70,0x27,0x90,0x9e,0x23,0xe0,0xff,0xc3,0x94,0x10,0x50,0x33,0x74,0x01, +0x7e,0x00,0xa8,0x07,0x08,0x80,0x05,0xc3,0x33,0xce,0x33,0xce,0xd8,0xf9,0xff,0x90, +0x9e,0x29,0xe0,0x5e,0xfe,0xa3,0xe0,0x5f,0x4e,0x60,0x16,0x90,0x9e,0x23,0xe0,0xf5, +0x1f,0xa3,0xe0,0x04,0xf0,0x90,0x9e,0x26,0xe0,0xff,0x90,0x9e,0x24,0xe0,0x6f,0x60, +0x08,0x90,0x9e,0x23,0xe0,0x14,0xf0,0x80,0x87,0x90,0x9e,0x26,0xe0,0xff,0x90,0x9e, +0x24,0xe0,0xc3,0x9f,0x50,0x0d,0x90,0x9e,0x23,0xe0,0xb5,0x05,0x06,0x90,0x9e,0x27, +0xe0,0xf5,0x1f,0xe5,0x1f,0x25,0xe0,0x24,0x9e,0xf5,0x82,0xe4,0x34,0x41,0xf5,0x83, +0xe4,0x93,0xfe,0x74,0x01,0x93,0xff,0xe5,0x1f,0x25,0xe0,0x24,0x66,0xf5,0x82,0xe4, +0x34,0x41,0xf5,0x83,0x74,0x01,0x93,0x2f,0xff,0xe4,0x93,0x3e,0xc3,0x13,0xfe,0xef, +0x13,0xff,0xec,0x25,0xe0,0x24,0xc2,0xf5,0x82,0xe4,0x34,0x95,0xf5,0x83,0xee,0xf0, +0xa3,0xef,0xf0,0xaf,0x04,0xad,0x1f,0x51,0xa5,0xaf,0x1f,0x22,0xad,0x07,0xed,0xc3, +0x94,0x20,0x50,0x0d,0x74,0x84,0x2d,0xf5,0x82,0xe4,0x34,0x04,0xf5,0x83,0xe0,0x80, +0x0b,0x74,0xa6,0x2d,0xf5,0x82,0xe4,0x34,0x9c,0xf5,0x83,0xe0,0x54,0x7f,0xf5,0x1f, +0xe5,0x1f,0x54,0x1f,0xfc,0x75,0xf0,0x09,0xed,0x90,0x96,0x48,0x12,0x43,0x5f,0xe0, +0xff,0x90,0x9e,0x23,0xf0,0xed,0x25,0xe0,0x24,0x02,0xf5,0x82,0xe4,0x34,0x95,0xf5, +0x83,0xe0,0xfb,0xa3,0xe0,0x90,0x9e,0x24,0xcb,0xf0,0xa3,0xeb,0xf0,0xed,0x25,0xe0, +0x24,0xc6,0xf5,0x82,0xe4,0x34,0x9b,0xf5,0x83,0xe0,0xfb,0xa3,0xe0,0x90,0x9e,0x26, +0xcb,0xf0,0xa3,0xeb,0xf0,0xec,0x25,0xe0,0x24,0x66,0xf5,0x82,0xe4,0x34,0x41,0xf5, +0x83,0xe4,0x93,0xfa,0x74,0x01,0x93,0xfb,0xed,0x25,0xe0,0x24,0xc2,0xf5,0x82,0xe4, +0x34,0x95,0xf5,0x83,0xea,0xf0,0xa3,0xeb,0xf0,0xec,0xc3,0x9f,0x40,0x02,0xc1,0x7a, +0x74,0x67,0x2d,0xf5,0x82,0xe4,0x34,0x9d,0xf5,0x83,0xec,0xf0,0x04,0xfb,0x90,0x9e, +0x23,0xe0,0xff,0xeb,0xd3,0x9f,0x40,0x02,0xc1,0xab,0xeb,0xc3,0x94,0x10,0x40,0x21, +0xeb,0x24,0xf0,0xff,0x74,0x01,0x7e,0x00,0xa8,0x07,0x08,0x80,0x05,0xc3,0x33,0xce, +0x33,0xce,0xd8,0xf9,0xff,0x90,0x9e,0x24,0xe0,0x5e,0xfe,0xa3,0xe0,0x5f,0x4e,0x70, +0x23,0xeb,0xc3,0x94,0x10,0x50,0x40,0x74,0x01,0x7e,0x00,0xa8,0x03,0x08,0x80,0x05, +0xc3,0x33,0xce,0x33,0xce,0xd8,0xf9,0xff,0x90,0x9e,0x26,0xe0,0x5e,0xfe,0xa3,0xe0, +0x5f,0x4e,0x60,0x23,0xbb,0x11,0x09,0x90,0x9e,0x25,0xe0,0x30,0xe7,0x02,0x7b,0x17, +0xeb,0x64,0x13,0x60,0x03,0xbb,0x12,0x09,0x90,0x9e,0x24,0xe0,0x30,0xe0,0x02,0x7b, +0x18,0xac,0x03,0x8c,0x1f,0x80,0x34,0x0b,0x80,0x84,0x90,0x9e,0x23,0xe0,0xfb,0x6c, +0x70,0x69,0x74,0x67,0x2d,0xf5,0x82,0xe4,0x34,0x9d,0xf5,0x83,0xec,0xf0,0x75,0xf0, +0x09,0xed,0x90,0x96,0x4a,0x12,0x43,0x5f,0xe0,0xb4,0x01,0x0c,0xe5,0x1f,0x20,0xe6, +0x07,0xec,0x44,0x40,0xf5,0x1f,0x80,0x03,0xaf,0x1f,0x22,0xec,0x25,0xe0,0x24,0x9e, +0xf5,0x82,0xe4,0x34,0x41,0xf5,0x83,0xe4,0x93,0xfe,0x74,0x01,0x93,0xff,0xec,0x25, +0xe0,0x24,0x66,0xf5,0x82,0xe4,0x34,0x41,0xf5,0x83,0x74,0x01,0x93,0x2f,0xff,0xe4, +0x93,0x3e,0xc3,0x13,0xfe,0xef,0x13,0xff,0xed,0x25,0xe0,0x24,0xc2,0xf5,0x82,0xe4, +0x34,0x95,0xf5,0x83,0xee,0xf0,0xa3,0xef,0xf0,0x80,0x5b,0xec,0xd3,0x9b,0x40,0x56, +0x90,0x9e,0x23,0xe0,0xff,0x74,0x67,0x2d,0xf5,0x82,0xe4,0x34,0x9d,0xf5,0x83,0xef, +0xf0,0xac,0x07,0x8f,0x1f,0xec,0x25,0xe0,0x24,0x9e,0xf5,0x82,0xe4,0x34,0x41,0xf5, +0x83,0xe4,0x93,0xfe,0x74,0x01,0x93,0xff,0xec,0x25,0xe0,0x24,0x66,0xf5,0x82,0xe4, +0x34,0x41,0xf5,0x83,0x74,0x01,0x93,0x2f,0xff,0xe4,0x93,0x3e,0xc3,0x13,0xfe,0xef, +0x13,0xff,0xed,0x25,0xe0,0x24,0xc2,0xf5,0x82,0xe4,0x34,0x95,0xf5,0x83,0xee,0xf0, +0xa3,0xef,0xf0,0xaf,0x1f,0x22,0x74,0x01,0x2d,0xf5,0x82,0xe4,0x34,0x94,0xf5,0x83, +0xe4,0xf0,0xaf,0x05,0xe5,0x1f,0x44,0x80,0xfd,0x51,0xa5,0xe5,0x1f,0x44,0x80,0xff, +0x22,0xef,0xc3,0x94,0x20,0x50,0x39,0xef,0x30,0xe0,0x17,0xed,0xc4,0x54,0xf0,0xfd, +0xef,0xc3,0x13,0xfe,0x24,0xa4,0xf5,0x82,0xe4,0x34,0x04,0xf5,0x83,0xe0,0x54,0x0f, +0x80,0x10,0xef,0xc3,0x13,0xfe,0x24,0xa4,0xf5,0x82,0xe4,0x34,0x04,0xf5,0x83,0xe0, +0x54,0xf0,0xf0,0x74,0xa4,0x2e,0xf5,0x82,0xe4,0x34,0x04,0xf5,0x83,0xe0,0x4d,0xf0, +0x22,0xe4,0xf5,0x14,0xe5,0x14,0xb4,0x20,0x14,0x90,0x9a,0xc5,0xe0,0x04,0xf0,0x90, +0x95,0x01,0xe0,0xff,0x90,0x9a,0xc5,0xe0,0xb5,0x07,0x02,0xe4,0xf0,0x75,0xf0,0x09, +0xe5,0x14,0x90,0x96,0x4b,0x12,0x43,0x5f,0xe0,0x64,0x01,0x60,0x03,0x02,0x6e,0x6a, +0xe5,0x14,0x25,0xe0,0x24,0x80,0xf5,0x82,0xe4,0x34,0x93,0xf5,0x83,0xe0,0xfe,0xa3, +0xe0,0xd3,0x94,0x00,0xee,0x94,0x00,0x50,0x03,0x02,0x6e,0x6a,0xe5,0x14,0x94,0x20, +0x40,0x09,0x90,0x9a,0xc5,0xe0,0x60,0x03,0x02,0x6e,0x76,0xe5,0x14,0x75,0xf0,0x0a, +0xa4,0x24,0x00,0xf9,0x74,0x90,0x35,0xf0,0x75,0x18,0x01,0xf5,0x19,0x89,0x1a,0xe5, +0x14,0x25,0xe0,0x24,0x80,0xf5,0x82,0xe4,0x34,0x93,0xf5,0x83,0xe0,0xff,0xa3,0xe0, +0x90,0x9e,0x1b,0xcf,0xf0,0xa3,0xef,0xf0,0xe5,0x14,0x25,0xe0,0x24,0xc4,0xf5,0x82, +0xe4,0x34,0x98,0xf5,0x83,0xe0,0xff,0xa3,0xe0,0x90,0x9e,0x1d,0xcf,0xf0,0xa3,0xef, +0xf0,0xe5,0x14,0xc3,0x94,0x20,0x50,0x14,0x74,0x84,0x25,0x14,0xf5,0x82,0xe4,0x34, +0x04,0xf5,0x83,0xe0,0x54,0x3f,0x90,0x9e,0x19,0xf0,0x80,0x12,0x74,0xa6,0x25,0x14, +0xf5,0x82,0xe4,0x34,0x9c,0xf5,0x83,0xe0,0x54,0x3f,0x90,0x9e,0x19,0xf0,0x90,0x9e, +0x19,0xe0,0xfe,0x54,0x1f,0xa3,0xf0,0x75,0xf0,0x09,0xe5,0x14,0x90,0x96,0x48,0x12, +0x43,0x5f,0xe0,0x90,0x9e,0x20,0xf0,0x74,0xe6,0x25,0x14,0xf5,0x82,0xe4,0x34,0x9c, +0xf5,0x83,0xe0,0xc3,0x94,0x05,0x40,0x02,0x41,0x9f,0x90,0x9e,0x20,0xe0,0xff,0x90, +0x9e,0x1a,0xe0,0x9f,0x40,0x13,0x90,0x9e,0x20,0xe0,0x90,0x9e,0x1a,0xf0,0xee,0x54, +0x40,0xfe,0x90,0x9e,0x19,0xf0,0xef,0x4e,0xf0,0x90,0x04,0xfd,0xe0,0x54,0x05,0x64, +0x01,0x70,0x29,0x90,0x9e,0x1a,0xe0,0xff,0x90,0x41,0x4a,0x93,0xfe,0x74,0x44,0x25, +0x14,0xf5,0x82,0xe4,0x34,0x9a,0xf5,0x83,0xe0,0xc3,0x9e,0x40,0x06,0xef,0x90,0x40, +0xda,0x80,0x30,0x90,0x9e,0x1a,0xe0,0x90,0x40,0xf6,0x80,0x27,0x90,0x9e,0x1a,0xe0, +0xff,0x90,0x41,0x4a,0x93,0xfe,0x74,0x44,0x25,0x14,0xf5,0x82,0xe4,0x34,0x9a,0xf5, +0x83,0xe0,0xc3,0x9e,0x40,0x06,0xef,0x90,0x41,0x12,0x80,0x07,0x90,0x9e,0x1a,0xe0, +0x90,0x41,0x2e,0x93,0x90,0x9e,0x1f,0xf0,0x90,0x9e,0x1f,0xe0,0x75,0xf0,0x06,0xa4, +0x24,0x50,0xf9,0x74,0x40,0x35,0xf0,0xfa,0x7b,0xff,0x8b,0x15,0xf5,0x16,0x89,0x17, +0xe5,0x14,0x25,0xe0,0x24,0xc2,0xf5,0x82,0xe4,0x34,0x95,0xf5,0x83,0xe0,0xf5,0x1b, +0xa3,0xe0,0xf5,0x1c,0x12,0x29,0xd9,0xff,0x7e,0x00,0xab,0x18,0xaa,0x19,0xa9,0x1a, +0x12,0x42,0x97,0xfd,0xac,0xf0,0x12,0x29,0xf2,0xef,0x25,0x1c,0xf5,0x1c,0xee,0x35, +0x1b,0xf5,0x1b,0xab,0x15,0xaa,0x16,0xa9,0x17,0x90,0x00,0x01,0x12,0x42,0x20,0xff, +0x7e,0x00,0xab,0x18,0xaa,0x19,0xa9,0x1a,0x90,0x00,0x02,0x12,0x42,0xc2,0xfd,0xac, +0xf0,0x12,0x29,0xf2,0xef,0x25,0x1c,0xf5,0x1c,0xee,0x35,0x1b,0xf5,0x1b,0xab,0x15, +0xaa,0x16,0xa9,0x17,0x90,0x00,0x02,0x12,0x42,0x20,0xff,0x7e,0x00,0xab,0x18,0xaa, +0x19,0xa9,0x1a,0x90,0x00,0x04,0x12,0x42,0xc2,0xfd,0xac,0xf0,0x12,0x29,0xf2,0xef, +0x25,0x1c,0xf5,0x1c,0xee,0x35,0x1b,0xf5,0x1b,0xab,0x15,0xaa,0x16,0xa9,0x17,0x90, +0x00,0x03,0x12,0x42,0x20,0xff,0x7e,0x00,0xab,0x18,0xaa,0x19,0xa9,0x1a,0x90,0x00, +0x06,0x12,0x42,0xc2,0xfd,0xac,0xf0,0x12,0x29,0xf2,0xef,0x25,0x1c,0xf5,0x1c,0xee, +0x35,0x1b,0xf5,0x1b,0xab,0x15,0xaa,0x16,0xa9,0x17,0x90,0x00,0x04,0x12,0x42,0x20, +0xff,0x7e,0x00,0xab,0x18,0xaa,0x19,0xa9,0x1a,0x90,0x00,0x08,0x12,0x42,0xc2,0xfd, +0xac,0xf0,0x12,0x29,0xf2,0xef,0x25,0x1c,0xf5,0x1c,0xee,0x35,0x1b,0xf5,0x1b,0xab, +0x15,0xaa,0x16,0xa9,0x17,0x90,0x00,0x05,0x12,0x42,0x20,0xff,0x7e,0x00,0x90,0x9e, +0x1b,0xe0,0xfc,0xa3,0xe0,0xfd,0x12,0x29,0xf2,0xd3,0xe5,0x1c,0x9f,0xe5,0x1b,0x9e, +0x40,0x0c,0xe5,0x1c,0x9f,0xf5,0x1c,0xe5,0x1b,0x9e,0xf5,0x1b,0x80,0x05,0xe4,0xf5, +0x1b,0xf5,0x1c,0xe5,0x14,0x25,0xe0,0x24,0xc2,0xf5,0x82,0xe4,0x34,0x95,0xf5,0x83, +0xe5,0x1b,0xf0,0xa3,0xe5,0x1c,0xf0,0x90,0x9e,0x19,0xe0,0x25,0xe0,0x24,0x66,0xf5, +0x82,0xe4,0x34,0x41,0xf5,0x83,0xc3,0x74,0x01,0x93,0x95,0x1c,0xe4,0x93,0x95,0x1b, +0x50,0x07,0xaf,0x14,0x12,0x65,0x5c,0xa1,0x31,0x90,0x9e,0x19,0xe0,0x25,0xe0,0x24, +0x9e,0xf5,0x82,0xe4,0x34,0x41,0xf5,0x83,0xd3,0x74,0x01,0x93,0x95,0x1c,0xe4,0x93, +0x95,0x1b,0x50,0x02,0xa1,0x31,0x7d,0x01,0xaf,0x14,0x12,0x63,0xbd,0xa1,0x31,0x74, +0xe6,0x25,0x14,0xf5,0x82,0xe4,0x34,0x9c,0xf5,0x83,0xe0,0xfc,0x64,0x05,0x60,0x02, +0x81,0x3a,0x90,0x96,0x43,0xe0,0xff,0xb4,0x03,0x0b,0x90,0x9e,0x1a,0xe0,0xc3,0x94, +0x19,0x40,0x3d,0x80,0x2e,0xef,0xb4,0x02,0x0b,0x90,0x9e,0x1a,0xe0,0xc3,0x94,0x11, +0x40,0x2e,0x80,0x1f,0x90,0x96,0x43,0xe0,0xff,0xb4,0x01,0x0b,0x90,0x9e,0x1a,0xe0, +0xc3,0x94,0x0a,0x40,0x1b,0x80,0x0c,0xef,0x70,0x11,0x90,0x9e,0x1a,0xe0,0xc3,0x94, +0x03,0x40,0x0d,0x90,0x9a,0x84,0x74,0x01,0xf0,0x80,0x05,0xe4,0x90,0x9a,0x84,0xf0, +0x74,0x84,0x25,0x14,0xf5,0x82,0xe4,0x34,0x98,0xf5,0x83,0xe0,0xf5,0x1e,0x74,0x44, +0x25,0x14,0xf5,0x82,0xe4,0x34,0x9a,0xf5,0x83,0xe0,0xff,0xc3,0x94,0x30,0x50,0x02, +0x61,0xe7,0x90,0x9a,0x84,0xe0,0x64,0x01,0x60,0x02,0x61,0xe7,0x74,0x85,0x25,0x14, +0xf5,0x82,0xe4,0x34,0x9a,0xf5,0x83,0xe0,0x64,0x0a,0x60,0x51,0xef,0x24,0x05,0xff, +0xe4,0x33,0xfe,0x74,0x41,0x25,0x14,0xf5,0x82,0xe4,0x34,0x94,0xf5,0x83,0xe0,0xfd, +0xd3,0x9f,0xee,0x64,0x80,0xf8,0x74,0x80,0x98,0x50,0x32,0xed,0x24,0x05,0xff,0xe4, +0x33,0xfe,0x74,0x44,0x25,0x14,0xf5,0x82,0xe4,0x34,0x9a,0xf5,0x83,0xe0,0xd3,0x9f, +0xee,0x64,0x80,0xf8,0x74,0x80,0x98,0x50,0x14,0x74,0x26,0x25,0x14,0xf5,0x82,0xe4, +0x34,0x9d,0xf5,0x83,0xe0,0xff,0x90,0x9e,0x1a,0xe0,0x6f,0x60,0x3d,0x74,0x44,0x25, +0x14,0xf5,0x82,0xe4,0x34,0x9a,0xf5,0x83,0xe0,0xff,0xd3,0x94,0x42,0x40,0x05,0x75, +0x1e,0x05,0x80,0x0e,0xef,0xd3,0x94,0x39,0x40,0x05,0x75,0x1e,0x03,0x80,0x03,0x75, +0x1e,0x01,0x74,0x41,0x25,0x14,0xf5,0x82,0xe4,0x34,0x94,0xf5,0x83,0xef,0xf0,0x74, +0x85,0x25,0x14,0xf5,0x82,0xe4,0x34,0x9a,0x80,0x29,0x74,0xe6,0x25,0x14,0xf5,0x82, +0xe4,0x34,0x9c,0xf5,0x83,0xe4,0xf0,0x74,0x85,0x25,0x14,0xf5,0x82,0xe4,0x34,0x9a, +0xf5,0x83,0xe0,0x04,0xf0,0x80,0x10,0xe4,0xf5,0x1e,0x74,0xe6,0x25,0x14,0xf5,0x82, +0xe4,0x34,0x9c,0xf5,0x83,0xe4,0xf0,0x90,0x9e,0x1a,0xe0,0xff,0x74,0x26,0x25,0x14, +0xf5,0x82,0xe4,0x34,0x9d,0xf5,0x83,0xef,0xf0,0x74,0x84,0x25,0x14,0xf5,0x82,0xe4, +0x34,0x98,0xf5,0x83,0xe5,0x1e,0xf0,0x75,0xf0,0x09,0xe5,0x14,0x90,0x96,0x4c,0x12, +0x43,0x5f,0xe0,0xb4,0x01,0x10,0xe4,0xf5,0x1e,0x74,0xe6,0x25,0x14,0xf5,0x82,0xe4, +0x34,0x9c,0xf5,0x83,0xe4,0xf0,0xad,0x1e,0xa1,0x2c,0xec,0x64,0x06,0x60,0x02,0xa1, +0x31,0xf5,0x1b,0xf5,0x1c,0x90,0x42,0x13,0x93,0xff,0x7e,0x00,0x90,0x9e,0x1b,0xe0, +0xfc,0xa3,0xe0,0xfd,0x12,0x29,0xf2,0x90,0x9e,0x21,0xee,0xf0,0xa3,0xef,0xf0,0x74, +0x84,0x25,0x14,0xf5,0x82,0xe4,0x34,0x98,0xf5,0x83,0xe0,0xf5,0x1e,0xe4,0xf5,0x1d, +0xab,0x18,0xaa,0x19,0xa9,0x1a,0x75,0xf0,0x02,0xe5,0x1d,0xa4,0xf5,0x82,0x85,0xf0, +0x83,0x12,0x42,0xc2,0xfd,0xac,0xf0,0xe5,0x1d,0x90,0x42,0x0e,0x93,0xff,0x7e,0x00, +0x12,0x29,0xf2,0xef,0x25,0x1c,0xf5,0x1c,0xee,0x35,0x1b,0xf5,0x1b,0xc3,0x90,0x9e, +0x22,0xe0,0x95,0x1c,0x90,0x9e,0x21,0xe0,0x95,0x1b,0x40,0x07,0x05,0x1d,0xe5,0x1d, +0xb4,0x05,0xbd,0xe5,0x1d,0xc3,0x13,0xf5,0x1d,0xe5,0x1e,0xb4,0x01,0x06,0xe5,0x1d, +0x70,0x46,0x80,0x13,0xe5,0x1e,0xb4,0x03,0x15,0xe5,0x1d,0x70,0x05,0x75,0x1e,0x03, +0x80,0x39,0xe5,0x1d,0xb4,0x01,0x05,0x75,0x1e,0x01,0x80,0x2f,0x80,0x2a,0xe5,0x1e, +0xb4,0x05,0x28,0xe5,0x1d,0x70,0x05,0x75,0x1e,0x05,0x80,0x0d,0xe5,0x1d,0xb4,0x01, +0x05,0x75,0x1e,0x03,0x80,0x03,0x75,0x1e,0x01,0xd3,0x90,0x9e,0x1e,0xe0,0x94,0x03, +0x90,0x9e,0x1d,0xe0,0x94,0x00,0x40,0x03,0xe4,0xf5,0x1e,0xd3,0x90,0x9e,0x1e,0xe0, +0x94,0x03,0x90,0x9e,0x1d,0xe0,0x94,0x00,0x40,0x03,0xe4,0xf5,0x1e,0x74,0x84,0x25, +0x14,0xf5,0x82,0xe4,0x34,0x98,0xf5,0x83,0xe5,0x1e,0xf0,0xfd,0xaf,0x14,0x12,0x67, +0x61,0x74,0xe6,0x25,0x14,0xf5,0x82,0xe4,0x34,0x9c,0xf5,0x83,0xe0,0xd3,0x94,0x05, +0x74,0xe6,0x50,0x0e,0x25,0x14,0xf5,0x82,0xe4,0x34,0x9c,0xf5,0x83,0xe0,0x04,0xf0, +0x80,0x0b,0x25,0x14,0xf5,0x82,0xe4,0x34,0x9c,0xf5,0x83,0xe4,0xf0,0x90,0x9e,0x1d, +0xe0,0xfe,0xa3,0xe0,0xff,0xc3,0x74,0xff,0x9f,0xfd,0x74,0xff,0x9e,0xfc,0xe5,0x14, +0x25,0xe0,0x24,0xc6,0xf5,0x82,0xe4,0x34,0x9a,0xf5,0x83,0xe0,0xfa,0xa3,0xe0,0xd3, +0x9d,0xea,0x9c,0xe5,0x14,0x50,0x13,0x25,0xe0,0x24,0xc6,0xf5,0x82,0xe4,0x34,0x9a, +0xf5,0x83,0xee,0x8f,0xf0,0x12,0x42,0x81,0x80,0x10,0x25,0xe0,0x24,0xc6,0xf5,0x82, +0xe4,0x34,0x9a,0xf5,0x83,0x74,0xff,0xf0,0xa3,0xf0,0xe5,0x14,0x25,0xe0,0x24,0x44, +0xf5,0x82,0xe4,0x34,0x99,0xf5,0x83,0xe0,0xfe,0xa3,0xe0,0xff,0xc3,0x74,0xff,0x9f, +0xfd,0x74,0xff,0x9e,0xfc,0xe5,0x14,0x25,0xe0,0x24,0x46,0xf5,0x82,0xe4,0x34,0x9b, +0xf5,0x83,0xe0,0xfa,0xa3,0xe0,0xd3,0x9d,0xea,0x9c,0xe5,0x14,0x50,0x13,0x25,0xe0, +0x24,0x46,0xf5,0x82,0xe4,0x34,0x9b,0xf5,0x83,0xee,0x8f,0xf0,0x12,0x42,0x81,0x80, +0x10,0x25,0xe0,0x24,0x46,0xf5,0x82,0xe4,0x34,0x9b,0xf5,0x83,0x74,0xff,0xf0,0xa3, +0xf0,0xab,0x18,0xaa,0x19,0xa9,0x1a,0xe4,0xf5,0xf0,0x12,0x42,0xfa,0xab,0x18,0xaa, +0x19,0xa9,0x1a,0x90,0x00,0x02,0xe4,0xf5,0xf0,0x12,0x43,0x19,0x90,0x00,0x04,0xe4, +0xf5,0xf0,0x12,0x43,0x19,0x90,0x00,0x06,0xe4,0xf5,0xf0,0x12,0x43,0x19,0x90,0x00, +0x08,0xe4,0xf5,0xf0,0x12,0x43,0x19,0xe5,0x14,0x25,0xe0,0x24,0x80,0xf5,0x82,0xe4, +0x34,0x93,0xf5,0x83,0xe4,0xf0,0xa3,0xf0,0xe5,0x14,0x25,0xe0,0x24,0xc4,0xf5,0x82, +0xe4,0x34,0x98,0xf5,0x83,0xe4,0xf0,0xa3,0xf0,0xe5,0x14,0x25,0xe0,0x24,0x44,0xf5, +0x82,0xe4,0x34,0x99,0xf5,0x83,0xe4,0xf0,0xa3,0xf0,0x05,0x14,0xe5,0x14,0xc3,0x94, +0x40,0x50,0x03,0x02,0x67,0xa4,0x22,0x90,0x04,0x44,0x74,0x11,0xf0,0xa3,0x74,0xf0, +0xf0,0xa3,0x74,0x0f,0xf0,0xa3,0xe4,0xf0,0xfd,0x74,0xa4,0x2d,0xf5,0x82,0xe4,0x34, +0x04,0xf5,0x83,0xe4,0xf0,0x0d,0xbd,0x10,0xf0,0xe4,0x90,0x9a,0xc5,0xf0,0x90,0x95, +0x01,0x04,0xf0,0xe4,0xfd,0x75,0xf0,0x0a,0xed,0x90,0x90,0x00,0x12,0x43,0x5f,0xe4, +0xf0,0xa3,0xf0,0x75,0xf0,0x0a,0xed,0x90,0x90,0x02,0x12,0x43,0x5f,0xe4,0xf0,0xa3, +0xf0,0x75,0xf0,0x0a,0xed,0x90,0x90,0x04,0x12,0x43,0x5f,0xe4,0xf0,0xa3,0xf0,0x75, +0xf0,0x0a,0xed,0x90,0x90,0x06,0x12,0x43,0x5f,0xe4,0xf0,0xa3,0xf0,0x75,0xf0,0x0a, +0xed,0x90,0x90,0x08,0x12,0x43,0x5f,0xe4,0xf0,0xa3,0xf0,0x74,0x26,0x2d,0xf5,0x82, +0xe4,0x34,0x9d,0xf5,0x83,0x74,0x13,0xf0,0x74,0x85,0x2d,0xf5,0x82,0xe4,0x34,0x9a, +0xf5,0x83,0xe4,0xf0,0x74,0x84,0x2d,0xf5,0x82,0xe4,0x34,0x98,0xf5,0x83,0xe4,0xf0, +0xed,0x25,0xe0,0x24,0x80,0xf5,0x82,0xe4,0x34,0x93,0xf5,0x83,0xe4,0xf0,0xa3,0xf0, +0xed,0x25,0xe0,0x24,0xc4,0xf5,0x82,0xe4,0x34,0x98,0xf5,0x83,0xe4,0xf0,0xa3,0xf0, +0xed,0x25,0xe0,0x24,0xc4,0xf5,0x82,0xe4,0x34,0x99,0xf5,0x83,0xe4,0xf0,0xa3,0xf0, +0xed,0x25,0xe0,0x24,0x44,0xf5,0x82,0xe4,0x34,0x99,0xf5,0x83,0xe4,0xf0,0xa3,0xf0, +0xed,0x25,0xe0,0x24,0xc6,0xf5,0x82,0xe4,0x34,0x9a,0xf5,0x83,0xe4,0xf0,0xa3,0xf0, +0xed,0x25,0xe0,0x24,0x46,0xf5,0x82,0xe4,0x34,0x9b,0xf5,0x83,0xe4,0xf0,0xa3,0xf0, +0x74,0x86,0x2d,0xf5,0x82,0xe4,0x34,0x9c,0xf5,0x83,0xe4,0xf0,0x74,0x46,0x2d,0xf5, +0x82,0xe4,0x34,0x9c,0xf5,0x83,0xe4,0xf0,0x74,0xe6,0x2d,0xf5,0x82,0xe4,0x34,0x9c, +0xf5,0x83,0xe4,0xf0,0x90,0x41,0xc4,0x93,0xfe,0x74,0x01,0x93,0xff,0x90,0x41,0x8c, +0x74,0x01,0x93,0x2f,0xff,0xe4,0x93,0x3e,0xc3,0x13,0xfe,0xef,0x13,0xff,0xed,0x25, +0xe0,0x24,0xc2,0xf5,0x82,0xe4,0x34,0x95,0xf5,0x83,0xee,0xf0,0xa3,0xef,0xf0,0x75, +0xf0,0x09,0xed,0x90,0x96,0x4b,0x12,0x43,0x5f,0x74,0x01,0xf0,0x75,0xf0,0x09,0xed, +0x90,0x96,0x4a,0x12,0x43,0x5f,0x74,0x01,0xf0,0x74,0x82,0x2d,0xf5,0x82,0xe4,0x34, +0x95,0xf5,0x83,0x74,0x0c,0xf0,0x75,0xf0,0x09,0xed,0x90,0x96,0x46,0x12,0x43,0x5f, +0x74,0xff,0xf0,0xa3,0xf0,0x75,0xf0,0x09,0xed,0x90,0x96,0x44,0x12,0x43,0x5f,0xe4, +0xf0,0xa3,0x74,0x0f,0xf0,0x75,0xf0,0x09,0xed,0x90,0x96,0x48,0x12,0x43,0x5f,0x74, +0x13,0xf0,0x75,0xf0,0x09,0xed,0x90,0x96,0x49,0x12,0x43,0x5f,0xe4,0xf0,0xed,0xc3, +0x94,0x20,0x50,0x0f,0x74,0x84,0x2d,0xf5,0x82,0xe4,0x34,0x04,0xf5,0x83,0x74,0x13, +0xf0,0x80,0x0d,0x74,0xa6,0x2d,0xf5,0x82,0xe4,0x34,0x9c,0xf5,0x83,0x74,0x13,0xf0, +0x0d,0xed,0x64,0x40,0x60,0x03,0x02,0x6e,0xa5,0x22,0x12,0x29,0xd9,0xf5,0x14,0xc3, +0x94,0x40,0x50,0x15,0x90,0x00,0x02,0x12,0x42,0x20,0xff,0x74,0x44,0x25,0x14,0xf5, +0x82,0xe4,0x34,0x9a,0xf5,0x83,0xef,0xf0,0x22,0xe5,0x14,0xb4,0x40,0x0a,0x90,0x00, +0x02,0x12,0x42,0x20,0x90,0x96,0x42,0xf0,0x22,0x90,0x9e,0x30,0x12,0x43,0x8b,0x90, +0x9e,0x33,0xe0,0x54,0xf0,0x44,0x02,0xf0,0x54,0x0f,0x44,0xc0,0xf0,0x90,0x9e,0x30, +0x12,0x43,0x6b,0x90,0x9e,0x90,0x12,0x43,0x8b,0x7b,0x01,0x7a,0x9e,0x79,0x33,0x02, +0x53,0xf1,0x90,0x00,0x02,0x12,0x42,0x20,0xfd,0x90,0x00,0x01,0x12,0x42,0x20,0xfc, +0xed,0xc3,0x94,0x40,0x40,0x02,0xe4,0xfd,0xec,0xc3,0x94,0x40,0x40,0x02,0xe4,0xfc, +0xed,0x25,0xe0,0x24,0xc6,0xf5,0x82,0xe4,0x34,0x9a,0xf5,0x83,0xe0,0xfa,0xa3,0xe0, +0xfb,0xea,0x90,0x9e,0x24,0xf0,0xeb,0xa3,0xf0,0xed,0x25,0xe0,0x24,0x46,0xf5,0x82, +0xe4,0x34,0x9b,0xf5,0x83,0xe0,0xfa,0xa3,0xe0,0xfb,0xea,0x90,0x9e,0x26,0xf0,0xeb, +0xa3,0xf0,0xa3,0xed,0xf0,0xa3,0x74,0xff,0xf0,0xec,0x25,0xe0,0x24,0xc6,0xf5,0x82, +0xe4,0x34,0x9a,0xf5,0x83,0xe0,0xfa,0xa3,0xe0,0xfb,0xea,0x90,0x9e,0x2a,0xf0,0xeb, +0xa3,0xf0,0xec,0x25,0xe0,0x24,0x46,0xf5,0x82,0xe4,0x34,0x9b,0xf5,0x83,0xe0,0xfa, +0xa3,0xe0,0xfb,0xea,0x90,0x9e,0x2c,0xf0,0xeb,0xa3,0xf0,0xa3,0xec,0xf0,0xa3,0x74, +0xff,0xf0,0xed,0x25,0xe0,0x24,0xc6,0xf5,0x82,0xe4,0x34,0x9a,0xf5,0x83,0xe4,0xf0, +0xa3,0xf0,0xed,0x25,0xe0,0x24,0x46,0xf5,0x82,0xe4,0x34,0x9b,0xf5,0x83,0xe4,0xf0, +0xa3,0xf0,0xec,0x25,0xe0,0x24,0xc6,0xf5,0x82,0xe4,0x34,0x9a,0xf5,0x83,0xe4,0xf0, +0xa3,0xf0,0xec,0x25,0xe0,0x24,0x46,0xf5,0x82,0xe4,0x34,0x9b,0xf5,0x83,0xe4,0xf0, +0xa3,0xf0,0x7b,0x01,0x7a,0x9e,0x79,0x24,0x01,0x79,0xd3,0x10,0xaf,0x01,0xc3,0xc0, +0xd0,0x90,0x9e,0xa4,0xee,0xf0,0xa3,0xef,0xf0,0xe4,0xa3,0xf0,0xa3,0xf0,0x90,0x9e, +0xa4,0xe0,0xfe,0xa3,0xe0,0xf5,0x82,0x8e,0x83,0xe0,0x60,0x2d,0xc3,0x90,0x9e,0xa7, +0xe0,0x94,0xe8,0x90,0x9e,0xa6,0xe0,0x94,0x03,0x40,0x0b,0x90,0x01,0xc6,0xe0,0x44, +0x10,0xf0,0x7f,0x00,0x80,0x15,0x90,0x9e,0xa6,0xe4,0x75,0xf0,0x01,0x12,0x42,0x81, +0x7f,0x0a,0x7e,0x00,0x12,0x37,0x54,0x80,0xc5,0x7f,0x01,0xd0,0xd0,0x92,0xaf,0x22, +0xd3,0x10,0xaf,0x01,0xc3,0xc0,0xd0,0x90,0x9e,0x24,0x12,0x2a,0x8b,0x00,0x00,0x00, +0x00,0x90,0x00,0x01,0x12,0x42,0x20,0x90,0x9e,0x66,0xf0,0x90,0x00,0x03,0x12,0x42, +0x20,0x90,0x9e,0x55,0xf0,0x12,0x56,0x22,0x90,0x01,0xe5,0xe5,0x63,0xf0,0x90,0x9e, +0x66,0xe0,0x90,0x01,0xe6,0xf0,0xd0,0xd0,0x92,0xaf,0x22,0x90,0x00,0x02,0x12,0x42, +0x20,0xff,0x30,0xe0,0x25,0x12,0x29,0xd9,0x90,0x9e,0x5c,0xf0,0x90,0x00,0x01,0x12, +0x42,0x20,0x90,0x9e,0x5d,0xf0,0xef,0xc3,0x13,0x54,0x7f,0x90,0x9e,0x5b,0xf0,0x90, +0x00,0x03,0x12,0x42,0x20,0x90,0x9e,0x62,0xf0,0x22,0x90,0x9e,0x5c,0x74,0x0a,0xf0, +0x90,0x9e,0x5d,0x74,0x05,0xf0,0x90,0x9e,0x5b,0x74,0x14,0xf0,0x90,0x9e,0x62,0x74, +0x05,0xf0,0x22,0x12,0x29,0xd9,0x30,0xe0,0x19,0xc3,0x13,0x54,0x7f,0x90,0x9e,0x61, +0xf0,0x90,0x00,0x01,0x12,0x42,0x20,0xff,0x90,0x9e,0x5f,0xe4,0xf0,0xa3,0xef,0xf0, +0x80,0x0f,0x90,0x9e,0x61,0x74,0x07,0xf0,0x90,0x9e,0x5f,0xe4,0xf0,0xa3,0x74,0x03, +0xf0,0x90,0x9e,0x5f,0xe0,0xa3,0xe0,0x90,0x05,0x58,0xf0,0x22,0x90,0x9e,0x24,0x12, +0x2a,0x8b,0x00,0x00,0x00,0x00,0x12,0x29,0xd9,0x60,0x0d,0x90,0x9e,0x5e,0xf0,0xe4, +0xfd,0x7f,0x04,0x12,0x54,0xe7,0x80,0x05,0xe4,0x90,0x9e,0x5e,0xf0,0x90,0x9e,0x5e, +0xe0,0x90,0x01,0xe7,0xf0,0x22,0x90,0x02,0x09,0xe0,0xfd,0x12,0x29,0xd9,0xfe,0xaf, +0x05,0xed,0x2e,0x90,0x9e,0x78,0xf0,0x90,0x00,0x01,0x12,0x42,0x20,0xff,0xed,0x2f, +0x90,0x9e,0x79,0xf0,0x90,0x00,0x02,0x12,0x42,0x20,0xff,0xed,0x2f,0x90,0x9e,0x7a, +0xf0,0x90,0x00,0x03,0x12,0x42,0x20,0xff,0xed,0x2f,0x90,0x9e,0x7b,0xf0,0x90,0x00, +0x04,0x12,0x42,0x20,0xff,0xae,0x05,0xed,0x2f,0x90,0x9e,0x7c,0xf0,0x22,0xd3,0x10, +0xaf,0x01,0xc3,0xc0,0xd0,0x90,0x9e,0x24,0x12,0x43,0x8b,0x90,0x9e,0x24,0x12,0x43, +0x6b,0x90,0x00,0x01,0x12,0x42,0xc2,0xfa,0xe5,0xf0,0x24,0x00,0xff,0xe4,0x3a,0xfe, +0x90,0x9e,0x24,0x12,0x43,0x6b,0x90,0x00,0x01,0xee,0x8f,0xf0,0x12,0x43,0x19,0x12, +0x29,0xd9,0xff,0x60,0x2d,0xb5,0x65,0x16,0x90,0x9e,0x24,0x12,0x43,0x6b,0x90,0x00, +0x01,0x12,0x42,0xc2,0x65,0x67,0x70,0x04,0xe5,0x66,0x65,0xf0,0x60,0x24,0x90,0x9e, +0x24,0x12,0x43,0x6b,0x90,0x00,0x01,0x12,0x42,0xc2,0xff,0xae,0xf0,0x12,0x4e,0x37, +0x80,0x10,0x90,0x9e,0x24,0x12,0x43,0x6b,0x12,0x29,0xd9,0x65,0x65,0x60,0x03,0x12, +0x44,0xc2,0xd0,0xd0,0x92,0xaf,0x22,0x90,0x06,0x34,0x74,0xff,0xf0,0xe4,0xa3,0xf0, +0xa3,0xf0,0xa3,0xf0,0x22,0x90,0x06,0x34,0xe0,0x60,0x24,0x14,0x70,0x1a,0x7b,0x01, +0x7a,0x06,0x79,0x35,0x7f,0xf9,0x7e,0x01,0x71,0xb0,0xbf,0x01,0x09,0x90,0x06,0x35, +0xe0,0x54,0x0f,0xf0,0x80,0x04,0x80,0x00,0x80,0xcd,0xe4,0x90,0x06,0x34,0xf0,0x22, +0x8e,0x14,0x8f,0x15,0x8b,0x16,0x8a,0x17,0x89,0x18,0xe4,0x90,0x9e,0x19,0xf0,0xef, +0x90,0x00,0x31,0xf0,0x12,0x4d,0x45,0xe5,0x14,0x54,0x03,0xff,0x90,0x00,0x32,0xe0, +0x54,0xfc,0x4f,0xf0,0x12,0x4d,0x45,0x90,0x00,0x33,0xe0,0x54,0x7f,0xf0,0x12,0x4d, +0x45,0x90,0x00,0x33,0xe0,0x20,0xe7,0x0e,0x90,0x9e,0x19,0xe0,0xc3,0x94,0x64,0x50, +0x05,0xe0,0x04,0xf0,0x80,0xeb,0x90,0x9e,0x19,0xe0,0xc3,0x94,0x64,0x50,0x10,0x90, +0x00,0x30,0xe0,0xab,0x16,0xaa,0x17,0xa9,0x18,0x12,0x42,0x4d,0x7f,0x01,0x22,0x7f, +0x00,0x22,0xe4,0x90,0x9e,0xac,0xf0,0xa3,0xf0,0x90,0x05,0xf8,0xe0,0x70,0x0f,0xa3, +0xe0,0x70,0x0b,0xa3,0xe0,0x70,0x07,0xa3,0xe0,0x70,0x03,0x7f,0x01,0x22,0xd3,0x90, +0x9e,0xad,0xe0,0x94,0xe8,0x90,0x9e,0xac,0xe0,0x94,0x03,0x40,0x03,0x7f,0x00,0x22, +0x7f,0x32,0x7e,0x00,0x12,0x37,0x54,0x90,0x9e,0xac,0xe4,0x75,0xf0,0x01,0x12,0x42, +0x81,0x80,0xc6,0x90,0x00,0x11,0xe0,0x44,0x09,0xf0,0x12,0x4d,0x45,0x90,0x9d,0xff, +0x12,0x43,0x53,0x90,0x80,0x85,0x12,0x2a,0x7f,0x7f,0x78,0x7e,0x08,0x12,0x2f,0xd9, +0x90,0x9e,0x03,0x12,0x43,0x53,0x90,0x80,0x85,0x12,0x2a,0x7f,0x7f,0x04,0x7e,0x0c, +0x12,0x2f,0xd9,0x90,0x9e,0x07,0x12,0x43,0x53,0x90,0x80,0x85,0x12,0x2a,0x7f,0x7f, +0x00,0x7e,0x08,0x12,0x2f,0xd9,0x90,0x9e,0x0b,0x12,0x43,0x53,0x90,0x80,0x85,0x12, +0x2a,0x7f,0x7f,0x70,0x7e,0x0e,0x12,0x2f,0xd9,0x90,0x80,0x59,0x12,0x2a,0x8b,0x00, +0x03,0x2d,0x95,0xe4,0xfd,0xff,0x12,0x34,0x81,0x90,0x9e,0x80,0xe0,0xb4,0x01,0x11, +0x90,0x80,0x59,0x12,0x2a,0x8b,0x00,0x03,0x2d,0x95,0xe4,0xfd,0x7f,0x01,0x12,0x34, +0x81,0x22,0x7f,0x78,0x7e,0x08,0x12,0x27,0xde,0x90,0x9d,0xff,0x12,0x2a,0x7f,0x7f, +0x04,0x7e,0x0c,0x12,0x27,0xde,0x90,0x9e,0x03,0x12,0x2a,0x7f,0x7f,0x00,0x7e,0x08, +0x12,0x27,0xde,0x90,0x9e,0x07,0x12,0x2a,0x7f,0x90,0x9e,0x80,0xe0,0x90,0x9d,0xff, +0xb4,0x01,0x0d,0x12,0x43,0x53,0xef,0x54,0xc7,0xff,0xed,0x54,0xc7,0xfd,0x80,0x07, +0x12,0x43,0x53,0xef,0x54,0xc7,0xff,0xec,0x90,0x80,0x85,0x12,0x2a,0x7f,0x7f,0x78, +0x7e,0x08,0x12,0x2f,0xd9,0x90,0x9e,0x03,0x12,0x43,0x53,0xef,0x54,0x0f,0xff,0xec, +0x90,0x80,0x85,0x12,0x2a,0x7f,0x7f,0x04,0x7e,0x0c,0x12,0x2f,0xd9,0x90,0x9e,0x07, +0x12,0x43,0x53,0xef,0x44,0x02,0xff,0xec,0x90,0x80,0x85,0x12,0x2a,0x7f,0x7f,0x00, +0x7e,0x08,0x12,0x2f,0xd9,0x7f,0x70,0x7e,0x0e,0x12,0x27,0xde,0x90,0x9e,0x0b,0x12, +0x2a,0x7f,0x90,0x80,0x85,0x12,0x2a,0x8b,0x00,0x1b,0x25,0xa0,0x7f,0x70,0x7e,0x0e, +0x12,0x2f,0xd9,0x90,0x80,0x59,0x12,0x2a,0x8b,0x00,0x00,0x00,0x00,0xe4,0xfd,0xff, +0x12,0x34,0x81,0x90,0x9e,0x80,0xe0,0xb4,0x01,0x11,0x90,0x80,0x59,0x12,0x2a,0x8b, +0x00,0x00,0x00,0x00,0xe4,0xfd,0x7f,0x01,0x12,0x34,0x81,0x90,0x00,0x11,0xe0,0x54, +0xf6,0xf0,0x02,0x4d,0x45,0xef,0x70,0x02,0xe1,0x5c,0x90,0x9e,0x0f,0xe0,0x60,0x03, +0x02,0x7b,0x28,0x90,0x9d,0xfb,0x12,0x43,0x53,0x90,0x80,0x85,0x12,0x2a,0x7f,0x7f, +0x8c,0x7e,0x08,0x12,0x2f,0xd9,0x90,0x9d,0xa7,0x12,0x43,0x53,0x90,0x80,0x85,0x12, +0x2a,0x7f,0x7f,0x44,0x7e,0x08,0x12,0x2f,0xd9,0x90,0x9d,0xab,0x12,0x43,0x53,0x90, +0x80,0x85,0x12,0x2a,0x7f,0x7f,0x5c,0x7e,0x08,0x12,0x2f,0xd9,0x90,0x9d,0xaf,0x12, +0x43,0x53,0x90,0x80,0x85,0x12,0x2a,0x7f,0x7f,0x6c,0x7e,0x0e,0x12,0x2f,0xd9,0x90, +0x9d,0xb3,0x12,0x43,0x53,0x90,0x80,0x85,0x12,0x2a,0x7f,0x7f,0x70,0x7e,0x0e,0x12, +0x2f,0xd9,0x90,0x9d,0xb7,0x12,0x43,0x53,0x90,0x80,0x85,0x12,0x2a,0x7f,0x7f,0x74, +0x7e,0x0e,0x12,0x2f,0xd9,0x90,0x9d,0xbb,0x12,0x43,0x53,0x90,0x80,0x85,0x12,0x2a, +0x7f,0x7f,0x78,0x7e,0x0e,0x12,0x2f,0xd9,0x90,0x9d,0xbf,0x12,0x43,0x53,0x90,0x80, +0x85,0x12,0x2a,0x7f,0x7f,0x7c,0x7e,0x0e,0x12,0x2f,0xd9,0x90,0x9d,0xc3,0x12,0x43, +0x53,0x90,0x80,0x85,0x12,0x2a,0x7f,0x7f,0x80,0x7e,0x0e,0x12,0x2f,0xd9,0x90,0x9d, +0xc7,0x12,0x43,0x53,0x90,0x80,0x85,0x12,0x2a,0x7f,0x7f,0x84,0x7e,0x0e,0x12,0x2f, +0xd9,0x90,0x9d,0xcb,0x12,0x43,0x53,0x90,0x80,0x85,0x12,0x2a,0x7f,0x7f,0x88,0x7e, +0x0e,0x12,0x2f,0xd9,0x90,0x9d,0xcf,0x12,0x43,0x53,0x90,0x80,0x85,0x12,0x2a,0x7f, +0x7f,0x8c,0x7e,0x0e,0x12,0x2f,0xd9,0x90,0x9d,0xd3,0x12,0x43,0x53,0x90,0x80,0x85, +0x12,0x2a,0x7f,0x7f,0xd0,0x7e,0x0e,0x12,0x2f,0xd9,0x90,0x9d,0xd7,0x12,0x43,0x53, +0x90,0x80,0x85,0x12,0x2a,0x7f,0x7f,0xd4,0x7e,0x0e,0x12,0x2f,0xd9,0x90,0x9d,0xdb, +0x12,0x43,0x53,0x90,0x80,0x85,0x12,0x2a,0x7f,0x7f,0xd8,0x7e,0x0e,0x12,0x2f,0xd9, +0x90,0x9d,0xdf,0x12,0x43,0x53,0x90,0x80,0x85,0x12,0x2a,0x7f,0x7f,0xdc,0x7e,0x0e, +0x12,0x2f,0xd9,0x90,0x9d,0xe3,0x12,0x43,0x53,0x90,0x80,0x85,0x12,0x2a,0x7f,0x7f, +0xe0,0x7e,0x0e,0x12,0x2f,0xd9,0x90,0x9d,0xe7,0x12,0x43,0x53,0x90,0x80,0x85,0x12, +0x2a,0x7f,0x7f,0xec,0x7e,0x0e,0x12,0x2f,0xd9,0x90,0x9d,0xeb,0x12,0x43,0x53,0x90, +0x80,0x85,0x12,0x2a,0x7f,0x7f,0x04,0x7e,0x0c,0x12,0x2f,0xd9,0x90,0x9d,0xef,0x12, +0x43,0x53,0x90,0x80,0x85,0x12,0x2a,0x7f,0x7f,0x04,0x7e,0x0d,0x12,0x2f,0xd9,0x90, +0x9d,0xf3,0x12,0x43,0x53,0x90,0x80,0x85,0x12,0x2a,0x7f,0x7f,0x0c,0x7e,0x09,0x12, +0x2f,0xd9,0x90,0x9d,0xf7,0x12,0x43,0x53,0x90,0x80,0x85,0x12,0x2a,0x7f,0x7f,0x04, +0x7e,0x08,0x12,0x2f,0xd9,0x90,0x9e,0x0f,0x74,0x01,0xf0,0x22,0x90,0x9e,0x0f,0xe0, +0x64,0x01,0x60,0x03,0x02,0x7b,0x28,0x7f,0x8c,0x7e,0x08,0x12,0x27,0xde,0x90,0x9d, +0xfb,0x12,0x2a,0x7f,0x7f,0x44,0x7e,0x08,0x12,0x27,0xde,0x90,0x9d,0xa7,0x12,0x2a, +0x7f,0x7f,0x5c,0x7e,0x08,0x12,0x27,0xde,0x90,0x9d,0xab,0x12,0x2a,0x7f,0x7f,0x6c, +0x7e,0x0e,0x12,0x27,0xde,0x90,0x9d,0xaf,0x12,0x2a,0x7f,0x7f,0x70,0x7e,0x0e,0x12, +0x27,0xde,0x90,0x9d,0xb3,0x12,0x2a,0x7f,0x7f,0x74,0x7e,0x0e,0x12,0x27,0xde,0x90, +0x9d,0xb7,0x12,0x2a,0x7f,0x7f,0x78,0x7e,0x0e,0x12,0x27,0xde,0x90,0x9d,0xbb,0x12, +0x2a,0x7f,0x7f,0x7c,0x7e,0x0e,0x12,0x27,0xde,0x90,0x9d,0xbf,0x12,0x2a,0x7f,0x7f, +0x80,0x7e,0x0e,0x12,0x27,0xde,0x90,0x9d,0xc3,0x12,0x2a,0x7f,0x7f,0x84,0x7e,0x0e, +0x12,0x27,0xde,0x90,0x9d,0xc7,0x12,0x2a,0x7f,0x7f,0x88,0x7e,0x0e,0x12,0x27,0xde, +0x90,0x9d,0xcb,0x12,0x2a,0x7f,0x7f,0x8c,0x7e,0x0e,0x12,0x27,0xde,0x90,0x9d,0xcf, +0x12,0x2a,0x7f,0x7f,0xd0,0x7e,0x0e,0x12,0x27,0xde,0x90,0x9d,0xd3,0x12,0x2a,0x7f, +0x7f,0xd4,0x7e,0x0e,0x12,0x27,0xde,0x90,0x9d,0xd7,0x12,0x2a,0x7f,0x7f,0xd8,0x7e, +0x0e,0x12,0x27,0xde,0x90,0x9d,0xdb,0x12,0x2a,0x7f,0x7f,0xdc,0x7e,0x0e,0x12,0x27, +0xde,0x90,0x9d,0xdf,0x12,0x2a,0x7f,0x7f,0xe0,0x7e,0x0e,0x12,0x27,0xde,0x90,0x9d, +0xe3,0x12,0x2a,0x7f,0x7f,0xec,0x7e,0x0e,0x12,0x27,0xde,0x90,0x9d,0xe7,0x12,0x2a, +0x7f,0x7f,0x04,0x7e,0x0c,0x12,0x27,0xde,0x90,0x9d,0xeb,0x12,0x2a,0x7f,0x7f,0x04, +0x7e,0x0d,0x12,0x27,0xde,0x90,0x9d,0xef,0x12,0x2a,0x7f,0x7f,0x0c,0x7e,0x09,0x12, +0x27,0xde,0x90,0x9d,0xf3,0x12,0x2a,0x7f,0x7f,0x04,0x7e,0x08,0x12,0x27,0xde,0x90, +0x9d,0xf7,0x12,0x2a,0x7f,0x7f,0x8c,0x7e,0x08,0x12,0x27,0xde,0x90,0x9e,0xa8,0x12, +0x2a,0x7f,0x90,0x9e,0xa8,0x12,0x43,0x53,0xed,0x44,0xc0,0xfd,0xec,0x90,0x9e,0xa8, +0x12,0x2a,0x7f,0x90,0x9e,0xa8,0x12,0x43,0x53,0x90,0x80,0x85,0x12,0x2a,0x7f,0x7f, +0x8c,0x7e,0x08,0x12,0x2f,0xd9,0x90,0x80,0x85,0x12,0x2a,0x8b,0x00,0x01,0x00,0x00, +0x7f,0x44,0x7e,0x08,0x12,0x2f,0xd9,0x90,0x80,0x85,0x12,0x2a,0x8b,0x00,0xdb,0x25, +0xa4,0x7f,0x5c,0x7e,0x08,0x12,0x2f,0xd9,0x90,0x80,0x85,0x12,0x2a,0x8b,0x20,0xdb, +0x25,0xa4,0x7f,0x6c,0x7e,0x0e,0x12,0x2f,0xd9,0x90,0x80,0x85,0x12,0x2a,0x8b,0x20, +0xdb,0x25,0xa4,0x7f,0x70,0x7e,0x0e,0x12,0x2f,0xd9,0x90,0x80,0x85,0x12,0x2a,0x8b, +0x04,0x1b,0x25,0xa4,0x7f,0x74,0x7e,0x0e,0x12,0x2f,0xd9,0x90,0x80,0x85,0x12,0x2a, +0x8b,0x04,0x1b,0x25,0xa4,0x7f,0x78,0x7e,0x0e,0x12,0x2f,0xd9,0x90,0x80,0x85,0x12, +0x2a,0x8b,0x04,0x1b,0x25,0xa4,0x7f,0x7c,0x7e,0x0e,0x12,0x2f,0xd9,0x90,0x80,0x85, +0x12,0x2a,0x8b,0x04,0x1b,0x25,0xa4,0x7f,0x80,0x7e,0x0e,0x12,0x2f,0xd9,0x90,0x80, +0x85,0x12,0x2a,0x8b,0x63,0xdb,0x25,0xa4,0x7f,0x84,0x7e,0x0e,0x12,0x2f,0xd9,0x90, +0x80,0x85,0x12,0x2a,0x8b,0x04,0x1b,0x25,0xa4,0x7f,0x88,0x7e,0x0e,0x12,0x2f,0xd9, +0x90,0x80,0x85,0x12,0x2a,0x8b,0x20,0xdb,0x25,0xa4,0x7f,0x8c,0x7e,0x0e,0x12,0x2f, +0xd9,0x90,0x80,0x85,0x12,0x2a,0x8b,0x20,0xdb,0x25,0xa4,0x7f,0xd0,0x7e,0x0e,0x12, +0x2f,0xd9,0x90,0x80,0x85,0x12,0x2a,0x8b,0x20,0xdb,0x25,0xa4,0x7f,0xd4,0x7e,0x0e, +0x12,0x2f,0xd9,0x90,0x80,0x85,0x12,0x2a,0x8b,0x20,0xdb,0x25,0xa4,0x7f,0xd8,0x7e, +0x0e,0x12,0x2f,0xd9,0x90,0x80,0x85,0x12,0x2a,0x8b,0x00,0x1b,0x25,0xa4,0x7f,0xdc, +0x7e,0x0e,0x12,0x2f,0xd9,0x90,0x80,0x85,0x12,0x2a,0x8b,0x00,0x1b,0x25,0xa4,0x7f, +0xe0,0x7e,0x0e,0x12,0x2f,0xd9,0x90,0x80,0x85,0x12,0x2a,0x8b,0x24,0xdb,0x25,0xa4, +0x7f,0xec,0x7e,0x0e,0x12,0x2f,0xd9,0x7f,0x04,0x7e,0x0c,0x12,0x27,0xde,0x90,0x9e, +0xa8,0x12,0x2a,0x7f,0x90,0x9e,0xa8,0x12,0x43,0x53,0xe4,0xff,0xec,0x90,0x9e,0xa8, +0x12,0x2a,0x7f,0x90,0x9e,0xa8,0x12,0x43,0x53,0xef,0x44,0x11,0xff,0xec,0x90,0x9e, +0xa8,0x12,0x2a,0x7f,0x90,0x9e,0xa8,0x12,0x43,0x53,0x90,0x80,0x85,0x12,0x2a,0x7f, +0x7f,0x04,0x7e,0x0c,0x12,0x2f,0xd9,0x7f,0x04,0x7e,0x0d,0x12,0x27,0xde,0x90,0x9e, +0xa8,0x12,0x2a,0x7f,0x90,0x9e,0xa8,0x12,0x43,0x53,0xef,0x54,0xf0,0xff,0xec,0x90, +0x9e,0xa8,0x12,0x2a,0x7f,0x90,0x9e,0xa8,0x12,0x43,0x53,0xef,0x44,0x01,0xff,0xec, +0x90,0x9e,0xa8,0x12,0x2a,0x7f,0x90,0x9e,0xa8,0x12,0x43,0x53,0x90,0x80,0x85,0x12, +0x2a,0x7f,0x7f,0x04,0x7e,0x0d,0x12,0x2f,0xd9,0x7f,0x0c,0x7e,0x09,0x12,0x27,0xde, +0x90,0x9e,0xa8,0x12,0x2a,0x7f,0x90,0x9e,0xa8,0x12,0x43,0x53,0xe4,0xff,0xec,0x90, +0x9e,0xa8,0x12,0x2a,0x7f,0x90,0x9e,0xa8,0x12,0x43,0x53,0xef,0x44,0x11,0xff,0xec, +0x90,0x9e,0xa8,0x12,0x2a,0x7f,0x90,0x9e,0xa8,0x12,0x43,0x53,0x90,0x80,0x85,0x12, +0x2a,0x7f,0x7f,0x0c,0x7e,0x09,0x12,0x2f,0xd9,0x7f,0x0c,0x7e,0x09,0x12,0x27,0xde, +0x90,0x9e,0xa8,0x12,0x2a,0x7f,0x90,0x9e,0xa8,0x12,0x43,0x53,0xed,0x54,0x0f,0xfd, +0xec,0x54,0xf0,0xfc,0x90,0x9e,0xa8,0x12,0x2a,0x7f,0x90,0x9e,0xa8,0x12,0x43,0x53, +0xed,0x44,0x10,0xfd,0xec,0x44,0x01,0xfc,0x90,0x9e,0xa8,0x12,0x2a,0x7f,0x90,0x9e, +0xa8,0x12,0x43,0x53,0x90,0x80,0x85,0x12,0x2a,0x7f,0x7f,0x0c,0x7e,0x09,0x12,0x2f, +0xd9,0x7f,0x04,0x7e,0x08,0x12,0x27,0xde,0x90,0x9e,0xa8,0x12,0x2a,0x7f,0x90,0x9e, +0xa8,0x12,0x43,0x53,0xef,0x54,0xf0,0xff,0xec,0x90,0x9e,0xa8,0x12,0x2a,0x7f,0x90, +0x9e,0xa8,0x12,0x43,0x53,0xef,0x44,0x01,0xff,0xec,0x90,0x9e,0xa8,0x12,0x2a,0x7f, +0x90,0x9e,0xa8,0x12,0x43,0x53,0x90,0x80,0x85,0x12,0x2a,0x7f,0x7f,0x04,0x7e,0x08, +0x12,0x2f,0xd9,0xe4,0x90,0x9e,0x0f,0xf0,0x22,0x90,0x00,0x02,0x12,0x42,0x20,0x90, +0x9e,0x43,0xf0,0xe0,0x60,0x04,0xe0,0xf4,0x70,0x21,0xa2,0xaf,0xe4,0x33,0xf5,0x14, +0xc2,0xaf,0x90,0x00,0x47,0xe0,0x54,0xfb,0xfd,0x7f,0x47,0x12,0x49,0x05,0x7d,0x40, +0x7f,0x01,0x12,0x36,0xaf,0xe5,0x14,0x24,0xff,0x92,0xaf,0x22,0x90,0x9e,0x3a,0xe0, +0xc3,0x94,0x14,0x50,0x05,0xe0,0x04,0xf0,0x81,0x14,0x90,0x9e,0x3a,0xe0,0x64,0x14, +0x60,0x02,0x81,0x14,0x90,0x9e,0x49,0xe0,0x70,0x25,0x90,0x9e,0x4c,0xe0,0x70,0x1f, +0x90,0x9e,0x4a,0xe0,0x70,0x19,0x90,0x9e,0x4d,0xe0,0x70,0x13,0x90,0x9e,0x4b,0xe0, +0x70,0x0d,0x90,0x9e,0x4e,0xe0,0x70,0x07,0x90,0x04,0xfd,0xe0,0x54,0xfe,0xf0,0x90, +0x9e,0x49,0xe0,0x90,0x04,0x44,0xf0,0x90,0x9e,0x4a,0xe0,0x90,0x04,0x45,0xf0,0x90, +0x9e,0x4b,0xe0,0x90,0x04,0x46,0xf0,0xa3,0xe4,0xf0,0x90,0x9e,0x4c,0xe0,0x90,0x04, +0x48,0xf0,0x90,0x9e,0x4d,0xe0,0x90,0x04,0x49,0xf0,0x90,0x9e,0x4e,0xe0,0x90,0x04, +0x4a,0xf0,0xa3,0xe4,0xf0,0x90,0x9e,0x35,0xe0,0x90,0x04,0x4c,0xf0,0x90,0x9e,0x36, +0xe0,0x90,0x04,0x4d,0xf0,0x90,0x9e,0x37,0xe0,0x90,0x04,0x4e,0xf0,0x90,0x9e,0x38, +0xe0,0x90,0x04,0x4f,0xf0,0xe4,0x90,0x9e,0x3a,0xf0,0x90,0x9e,0x35,0x04,0xf0,0xe4, +0xa3,0xf0,0xa3,0xf0,0xa3,0xf0,0x90,0x9e,0x49,0xf0,0xa3,0xf0,0xa3,0xf0,0xa3,0xf0, +0xa3,0xf0,0xa3,0xf0,0x90,0x05,0x60,0xe0,0x90,0x9e,0x19,0xf0,0x90,0x05,0x61,0xe0, +0x90,0x9e,0x1a,0xf0,0x90,0x05,0x62,0xe0,0x90,0x9e,0x1b,0xf0,0x90,0x05,0x63,0xe0, +0x90,0x9e,0x1c,0xf0,0x90,0x9e,0x52,0xe0,0xff,0x90,0x9e,0x1c,0xe0,0xfe,0xd3,0x9f, +0x50,0x0b,0x90,0x9e,0x52,0xe0,0xc3,0x9e,0xd3,0x94,0x01,0x40,0x11,0x90,0x9e,0x40, +0xe0,0xb4,0x01,0x02,0x80,0x03,0x90,0x9e,0x44,0xe0,0xff,0x12,0x4c,0xf0,0x22,0x90, +0x9e,0x53,0xe0,0x64,0x01,0x60,0x08,0x90,0x9e,0x41,0xe0,0x60,0x02,0xa1,0x36,0x90, +0x9e,0x35,0xe0,0xc3,0x94,0xff,0x50,0x05,0xe0,0x04,0xf0,0x80,0x3b,0x90,0x9e,0x36, +0xe0,0xc3,0x94,0xff,0x50,0x06,0xe0,0x04,0xf0,0xe4,0x80,0x28,0x90,0x9e,0x37,0xe0, +0xc3,0x94,0xff,0x50,0x0a,0xe0,0x04,0xf0,0xe4,0x90,0x9e,0x36,0xf0,0x80,0x15,0x90, +0x9e,0x38,0xe0,0xc3,0x94,0xff,0x50,0x10,0xe0,0x04,0xf0,0xe4,0x90,0x9e,0x37,0xf0, +0x90,0x9e,0x36,0xf0,0x90,0x9e,0x35,0xf0,0x90,0x00,0x44,0xe0,0x54,0x0c,0x60,0x76, +0xe0,0x30,0xe2,0x32,0x90,0x9e,0x49,0xe0,0xc3,0x94,0xff,0x50,0x05,0xe0,0x04,0xf0, +0x80,0x24,0x90,0x9e,0x4a,0xe0,0xc3,0x94,0xff,0x50,0x06,0xe0,0x04,0xf0,0xe4,0x80, +0x11,0x90,0x9e,0x4b,0xe0,0xc3,0x94,0xff,0x50,0x0c,0xe0,0x04,0xf0,0xe4,0x90,0x9e, +0x4a,0xf0,0x90,0x9e,0x49,0xf0,0x90,0x00,0x44,0xe0,0x30,0xe3,0x32,0x90,0x9e,0x4c, +0xe0,0xc3,0x94,0xff,0x50,0x05,0xe0,0x04,0xf0,0x80,0x24,0x90,0x9e,0x4d,0xe0,0xc3, +0x94,0xff,0x50,0x06,0xe0,0x04,0xf0,0xe4,0x80,0x11,0x90,0x9e,0x4e,0xe0,0xc3,0x94, +0xff,0x50,0x0c,0xe0,0x04,0xf0,0xe4,0x90,0x9e,0x4d,0xf0,0x90,0x9e,0x4c,0xf0,0x90, +0x04,0xfd,0xe0,0x44,0x01,0xf0,0x22,0x00,0x37,0xda,}; + +// =================== v79 UMC A Cut COMMON 2011-10-06 ===================== +u8 Rtl8192CUFwUMCACutImgArray[UMCACutImgArrayLength] = { +0xc1,0x88,0x02,0x00,0x4f,0x00,0x00,0x00,0x0a,0x06,0x18,0x09,0x58,0x3f,0x01,0x00, +0x61,0x80,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x02,0x43,0xba,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x02,0x5a,0x45,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x02,0x5f,0xfb,0x00,0x00,0x00,0x00,0x00,0xa1,0xdf,0x00,0x00,0x00, +0x05,0x04,0x03,0x02,0x00,0x03,0x06,0x05,0x04,0x03,0x00,0x04,0x06,0x05,0x04,0x02, +0x00,0x04,0x08,0x07,0x06,0x04,0x00,0x06,0x0a,0x09,0x08,0x06,0x00,0x08,0x0a,0x09, +0x08,0x04,0x00,0x08,0x0a,0x09,0x08,0x02,0x00,0x08,0x0a,0x09,0x08,0x00,0x00,0x08, +0x12,0x11,0x10,0x08,0x00,0x10,0x1a,0x19,0x18,0x10,0x00,0x18,0x22,0x21,0x20,0x18, +0x00,0x20,0x22,0x21,0x20,0x10,0x00,0x20,0x22,0x21,0x20,0x08,0x00,0x20,0x22,0x21, +0x1c,0x08,0x00,0x20,0x22,0x21,0x14,0x08,0x00,0x20,0x22,0x20,0x18,0x08,0x00,0x20, +0x31,0x30,0x20,0x10,0x00,0x30,0x31,0x30,0x18,0x00,0x00,0x30,0x31,0x2f,0x10,0x10, +0x00,0x30,0x31,0x2c,0x10,0x10,0x00,0x30,0x31,0x28,0x10,0x00,0x00,0x30,0x31,0x20, +0x10,0x00,0x00,0x30,0x31,0x10,0x10,0x00,0x00,0x30,0x04,0x04,0x04,0x05,0x04,0x04, +0x04,0x05,0x05,0x05,0x06,0x06,0x04,0x04,0x04,0x05,0x05,0x05,0x06,0x06,0x04,0x04, +0x05,0x05,0x05,0x05,0x06,0x06,0x04,0x04,0x05,0x05,0x05,0x05,0x06,0x07,0x0a,0x0b, +0x0d,0x10,0x04,0x05,0x05,0x06,0x06,0x09,0x0c,0x11,0x08,0x08,0x09,0x09,0x0a,0x0c, +0x10,0x11,0x04,0x04,0x04,0x05,0x04,0x04,0x05,0x07,0x07,0x07,0x08,0x0a,0x04,0x04, +0x04,0x04,0x06,0x0a,0x0b,0x0d,0x05,0x05,0x07,0x07,0x08,0x0b,0x0d,0x0f,0x04,0x04, +0x04,0x05,0x07,0x07,0x09,0x09,0x0c,0x0e,0x10,0x12,0x04,0x04,0x05,0x05,0x06,0x0a, +0x11,0x13,0x09,0x09,0x09,0x09,0x0c,0x0e,0x11,0x13,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x24,0x26,0x2a,0x18,0x1a,0x1d,0x1f,0x21,0x27,0x29,0x2a,0x00,0x00, +0x00,0x1f,0x23,0x28,0x2a,0x2c,0x00,0x04,0x00,0x04,0x00,0x08,0x00,0x10,0x00,0x18, +0x00,0x24,0x00,0x30,0x00,0x48,0x00,0x60,0x00,0x90,0x00,0xc0,0x00,0xd8,0x00,0x50, +0x00,0x78,0x00,0xa0,0x00,0xc8,0x01,0x40,0x01,0x90,0x01,0xe0,0x02,0x30,0x01,0x2c, +0x01,0x40,0x01,0xe0,0x02,0xd0,0x03,0xe8,0x04,0xb0,0x06,0x40,0x07,0xd0,0x00,0x02, +0x00,0x02,0x00,0x04,0x00,0x08,0x00,0x0c,0x00,0x12,0x00,0x18,0x00,0x24,0x00,0x30, +0x00,0x48,0x00,0x60,0x00,0x6c,0x00,0x28,0x00,0x3c,0x00,0x50,0x00,0x64,0x00,0xa0, +0x00,0xc8,0x00,0xf0,0x01,0x18,0x00,0x64,0x00,0xa0,0x00,0xf0,0x01,0x68,0x01,0xf4, +0x02,0x58,0x03,0x20,0x03,0xe8,0x02,0x02,0x02,0x02,0x02,0x02,0x03,0x03,0x04,0x04, +0x05,0x07,0x04,0x04,0x07,0x0a,0x0a,0x0c,0x0c,0x12,0x05,0x07,0x07,0x08,0x0b,0x12, +0x24,0x3c,0x01,0x01,0x01,0x01,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x01,0x02, +0x03,0x04,0x05,0x06,0x07,0x08,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0c,0x20,0x1e, +0x1c,0x18,0x10,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0xbb,0x01,0x0c,0xe5,0x82,0x29,0xf5,0x82,0xe5,0x83,0x3a,0xf5,0x83,0xe0,0x22,0x50, +0x06,0xe9,0x25,0x82,0xf8,0xe6,0x22,0xbb,0xfe,0x06,0xe9,0x25,0x82,0xf8,0xe2,0x22, +0xe5,0x82,0x29,0xf5,0x82,0xe5,0x83,0x3a,0xf5,0x83,0xe4,0x93,0x22,0xbb,0x01,0x06, +0x89,0x82,0x8a,0x83,0xf0,0x22,0x50,0x02,0xf7,0x22,0xbb,0xfe,0x01,0xf3,0x22,0xf8, +0xbb,0x01,0x0d,0xe5,0x82,0x29,0xf5,0x82,0xe5,0x83,0x3a,0xf5,0x83,0xe8,0xf0,0x22, +0x50,0x06,0xe9,0x25,0x82,0xc8,0xf6,0x22,0xbb,0xfe,0x05,0xe9,0x25,0x82,0xc8,0xf2, +0x22,0xc5,0xf0,0xf8,0xa3,0xe0,0x28,0xf0,0xc5,0xf0,0xf8,0xe5,0x82,0x15,0x82,0x70, +0x02,0x15,0x83,0xe0,0x38,0xf0,0x22,0xbb,0x01,0x0a,0x89,0x82,0x8a,0x83,0xe0,0xf5, +0xf0,0xa3,0xe0,0x22,0x50,0x06,0x87,0xf0,0x09,0xe7,0x19,0x22,0xbb,0xfe,0x07,0xe3, +0xf5,0xf0,0x09,0xe3,0x19,0x22,0x89,0x82,0x8a,0x83,0xe4,0x93,0xf5,0xf0,0x74,0x01, +0x93,0x22,0xbb,0x01,0x10,0xe5,0x82,0x29,0xf5,0x82,0xe5,0x83,0x3a,0xf5,0x83,0xe0, +0xf5,0xf0,0xa3,0xe0,0x22,0x50,0x09,0xe9,0x25,0x82,0xf8,0x86,0xf0,0x08,0xe6,0x22, +0xbb,0xfe,0x0a,0xe9,0x25,0x82,0xf8,0xe2,0xf5,0xf0,0x08,0xe2,0x22,0xe5,0x83,0x2a, +0xf5,0x83,0xe9,0x93,0xf5,0xf0,0xa3,0xe9,0x93,0x22,0xbb,0x01,0x0a,0x89,0x82,0x8a, +0x83,0xf0,0xe5,0xf0,0xa3,0xf0,0x22,0x50,0x06,0xf7,0x09,0xa7,0xf0,0x19,0x22,0xbb, +0xfe,0x06,0xf3,0xe5,0xf0,0x09,0xf3,0x19,0x22,0xf8,0xbb,0x01,0x11,0xe5,0x82,0x29, +0xf5,0x82,0xe5,0x83,0x3a,0xf5,0x83,0xe8,0xf0,0xe5,0xf0,0xa3,0xf0,0x22,0x50,0x09, +0xe9,0x25,0x82,0xc8,0xf6,0x08,0xa6,0xf0,0x22,0xbb,0xfe,0x09,0xe9,0x25,0x82,0xc8, +0xf2,0xe5,0xf0,0x08,0xf2,0x22,0xef,0x4b,0xff,0xee,0x4a,0xfe,0xed,0x49,0xfd,0xec, +0x48,0xfc,0x22,0xe0,0xfc,0xa3,0xe0,0xfd,0xa3,0xe0,0xfe,0xa3,0xe0,0xff,0x22,0xa4, +0x25,0x82,0xf5,0x82,0xe5,0xf0,0x35,0x83,0xf5,0x83,0x22,0xe0,0xfb,0xa3,0xe0,0xfa, +0xa3,0xe0,0xf9,0x22,0xf8,0xe0,0xfb,0xa3,0xa3,0xe0,0xf9,0x25,0xf0,0xf0,0xe5,0x82, +0x15,0x82,0x70,0x02,0x15,0x83,0xe0,0xfa,0x38,0xf0,0x22,0xeb,0xf0,0xa3,0xea,0xf0, +0xa3,0xe9,0xf0,0x22,0xd0,0x83,0xd0,0x82,0xf8,0xe4,0x93,0x70,0x12,0x74,0x01,0x93, +0x70,0x0d,0xa3,0xa3,0x93,0xf8,0x74,0x01,0x93,0xf5,0x82,0x88,0x83,0xe4,0x73,0x74, +0x02,0x93,0x68,0x60,0xef,0xa3,0xa3,0xa3,0x80,0xdf,0x02,0x43,0xf8,0x02,0x50,0xa9, +0xe4,0x93,0xa3,0xf8,0xe4,0x93,0xa3,0x40,0x03,0xf6,0x80,0x01,0xf2,0x08,0xdf,0xf4, +0x80,0x29,0xe4,0x93,0xa3,0xf8,0x54,0x07,0x24,0x0c,0xc8,0xc3,0x33,0xc4,0x54,0x0f, +0x44,0x20,0xc8,0x83,0x40,0x04,0xf4,0x56,0x80,0x01,0x46,0xf6,0xdf,0xe4,0x80,0x0b, +0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80,0x90,0x44,0x3d,0xe4,0x7e,0x01,0x93,0x60, +0xbc,0xa3,0xff,0x54,0x3f,0x30,0xe5,0x09,0x54,0x1f,0xfe,0xe4,0x93,0xa3,0x60,0x01, +0x0e,0xcf,0x54,0xc0,0x25,0xe0,0x60,0xa8,0x40,0xb8,0xe4,0x93,0xa3,0xfa,0xe4,0x93, +0xa3,0xf8,0xe4,0x93,0xa3,0xc8,0xc5,0x82,0xc8,0xca,0xc5,0x83,0xca,0xf0,0xa3,0xc8, +0xc5,0x82,0xc8,0xca,0xc5,0x83,0xca,0xdf,0xe9,0xde,0xe7,0x80,0xbe,0x41,0x9e,0x66, +0x00,0x41,0x9e,0xae,0x00,0x41,0x9e,0x4d,0x80,0x41,0x9e,0x4e,0x80,0x41,0x9e,0xb0, +0x00,0x00,0xf0,0x90,0x9e,0x57,0xe0,0x90,0x9e,0x8a,0xf0,0xe4,0xfb,0xfd,0x7f,0x54, +0x7e,0x01,0xd3,0x10,0xaf,0x01,0xc3,0xc0,0xd0,0x90,0x9e,0x88,0xeb,0xf0,0xa3,0xe0, +0xfb,0xa3,0xe0,0xf5,0x44,0xe4,0xf5,0x45,0x12,0x30,0x62,0xd0,0xd0,0x92,0xaf,0x22, +0x90,0x01,0x5f,0xe4,0xf0,0x90,0x01,0x3c,0x74,0x08,0xf0,0xe4,0x90,0x9e,0x89,0xf0, +0x90,0x9e,0x55,0xe0,0x90,0x9e,0x8a,0xf0,0xe4,0xfb,0xfd,0x7f,0x5c,0x7e,0x01,0x91, +0x62,0x90,0x01,0x5f,0x74,0x05,0xf0,0x90,0x06,0x92,0x74,0x02,0xf0,0x90,0x9e,0x5c, +0x14,0xf0,0x90,0x9e,0x5e,0xe0,0x54,0x0f,0xc3,0x94,0x0c,0x50,0x02,0xf1,0x16,0x22, +0x8f,0x82,0x8e,0x83,0xa3,0xa3,0xa3,0xe4,0xf0,0x22,0xe4,0xf5,0x22,0x7f,0x60,0x7e, +0x01,0x80,0xed,0x90,0x9e,0x60,0xe0,0xff,0x7d,0x01,0xe1,0x1a,0xb1,0xb1,0xbf,0x01, +0x0f,0x90,0x9e,0x68,0xe0,0xff,0xe4,0xfd,0xf1,0xfe,0x90,0x04,0x1f,0x74,0x20,0xf0, +0x22,0x90,0x01,0xca,0xe5,0x25,0xf0,0xef,0x60,0x03,0x12,0x4f,0x2a,0x22,0x22,0x22, +0x22,0x22,0x00,0x02,0x60,0x8d,0x02,0x60,0x94,0xd3,0x10,0xaf,0x01,0xc3,0xc0,0xd0, +0x8b,0x1b,0x8a,0x1c,0x89,0x1d,0x90,0x9e,0x8b,0x71,0x8b,0xab,0x1e,0xaa,0x1f,0xa9, +0x20,0x90,0x9e,0x8e,0x71,0x8b,0xaf,0x21,0x15,0x21,0xef,0x60,0x1b,0x90,0x9e,0x8e, +0xe4,0x75,0xf0,0x01,0x71,0x74,0x12,0x24,0x62,0xff,0x90,0x9e,0x8b,0xe4,0x75,0xf0, +0x01,0x71,0x74,0xef,0x51,0x4d,0x80,0xde,0xab,0x1b,0xaa,0x1c,0xa9,0x1d,0xd0,0xd0, +0x92,0xaf,0x22,0x90,0x06,0xa9,0xe0,0xf5,0x50,0x54,0xc0,0x70,0x0d,0x90,0x9e,0x63, +0xe0,0x54,0xfe,0xf0,0xe0,0x54,0xfd,0xf0,0x91,0xd3,0xe5,0x50,0x30,0xe6,0x17,0x90, +0x9e,0x63,0xe0,0x44,0x01,0xf0,0x90,0x9e,0x61,0xe0,0x64,0x02,0x60,0x04,0x91,0xdc, +0x80,0x0b,0x91,0x80,0x80,0x07,0x90,0x9e,0x63,0xe0,0x54,0xfe,0xf0,0xe5,0x50,0x90, +0x9e,0x63,0x30,0xe7,0x17,0xe0,0x44,0x02,0xf0,0xe4,0x90,0x9e,0x89,0x91,0x52,0x90, +0x01,0x57,0x74,0x05,0xf0,0x90,0x9e,0x62,0x74,0x01,0xf0,0x22,0xe0,0x54,0xfd,0xf0, +0x22,0xd3,0x10,0xaf,0x01,0xc3,0xc0,0xd0,0x90,0x04,0x1d,0xe0,0x60,0x1a,0x90,0x05, +0x22,0xe0,0x54,0x90,0x60,0x07,0x90,0x01,0xc6,0xe0,0x44,0x40,0xf0,0x90,0x01,0xc7, +0xe0,0x30,0xe1,0xe4,0x7f,0x00,0x80,0x02,0x7f,0x01,0xd0,0xd0,0x92,0xaf,0x22,0xc0, +0xe0,0xc0,0xf0,0xc0,0x83,0xc0,0x82,0xc0,0xd0,0x75,0xd0,0x00,0xc0,0x00,0xc0,0x01, +0xc0,0x02,0xc0,0x03,0xc0,0x04,0xc0,0x05,0xc0,0x06,0xc0,0x07,0x90,0x01,0xc4,0x74, +0xdf,0xf0,0x74,0x45,0xa3,0xf0,0x53,0x91,0xdf,0x90,0x01,0x3c,0xe0,0x55,0x30,0xf5, +0x34,0xa3,0xe0,0x55,0x31,0xf5,0x35,0xa3,0xe0,0x55,0x32,0xf5,0x36,0xa3,0xe0,0x55, +0x33,0xf5,0x37,0xe5,0x34,0x30,0xe0,0x06,0x90,0x01,0x3c,0x74,0x01,0xf0,0xe5,0x34, +0x30,0xe1,0x08,0x90,0x01,0x3c,0x74,0x02,0xf0,0xf1,0xbc,0xe5,0x34,0x30,0xe2,0x38, +0x90,0x01,0x3c,0x74,0x04,0xf0,0x90,0x06,0x92,0xe0,0x30,0xe0,0x24,0x90,0x9e,0x89, +0xe4,0xf0,0x90,0x9e,0x55,0xe0,0x90,0x9e,0x8a,0xf0,0xe4,0xfb,0xfd,0x7f,0x58,0x7e, +0x01,0x91,0x62,0x90,0x01,0x5b,0x74,0x05,0xf0,0x90,0x06,0x92,0x74,0x01,0xf0,0x80, +0x07,0x90,0x9e,0x5d,0xe4,0xf0,0x91,0xd3,0xe5,0x34,0x30,0xe3,0x38,0x90,0x01,0x3c, +0x74,0x08,0xf0,0x90,0x06,0x92,0xe0,0x30,0xe1,0x24,0x90,0x9e,0x89,0xe4,0xf0,0x90, +0x9e,0x55,0xe0,0x90,0x9e,0x8a,0xf0,0xe4,0xfb,0xfd,0x7f,0x5c,0x7e,0x01,0x91,0x62, +0x90,0x01,0x5f,0x74,0x05,0xf0,0x90,0x06,0x92,0x74,0x02,0xf0,0x80,0x07,0x90,0x9e, +0x5c,0xe4,0xf0,0x91,0xd3,0xe5,0x34,0x30,0xe4,0x09,0x90,0x01,0x3c,0x74,0x10,0xf0, +0x12,0x4d,0xe2,0xe5,0x34,0x30,0xe5,0x09,0x90,0x01,0x3c,0x74,0x20,0xf0,0x12,0x4e, +0x25,0xe5,0x35,0x30,0xe0,0x1a,0x90,0x01,0x3d,0x74,0x01,0xf0,0x90,0x01,0x2f,0xe0, +0x44,0x7f,0xf0,0x90,0x00,0x83,0xe0,0x90,0x9e,0x60,0xf0,0x12,0x64,0xa1,0x91,0xd3, +0x74,0xdf,0x04,0x90,0x01,0xc4,0xf0,0x74,0x45,0xa3,0xf0,0xd0,0x07,0xd0,0x06,0xd0, +0x05,0xd0,0x04,0xd0,0x03,0xd0,0x02,0xd0,0x01,0xd0,0x00,0xd0,0xd0,0xd0,0x82,0xd0, +0x83,0xd0,0xf0,0xd0,0xe0,0x32,0x7d,0x01,0x7f,0x0c,0x8f,0x71,0x8d,0x72,0xe5,0x71, +0x54,0x0f,0xff,0x90,0x9e,0x5e,0xe0,0x54,0x0f,0x6f,0x60,0x72,0xe5,0x71,0x30,0xe2, +0x2b,0x90,0x9e,0x5e,0xe0,0x20,0xe2,0x05,0x7f,0x01,0x12,0x63,0x92,0x90,0x9e,0x5e, +0xe0,0x30,0xe3,0x07,0xe5,0x71,0x20,0xe3,0x02,0x80,0x54,0x90,0x9e,0x5e,0xe0,0x20, +0xe3,0x4c,0xe5,0x71,0x30,0xe3,0x47,0xaf,0x72,0x02,0x63,0x2e,0x90,0x9e,0x5e,0xe0, +0x54,0x0f,0xff,0xbf,0x0c,0x0d,0xe5,0x71,0x20,0xe3,0x08,0x12,0x5e,0xf1,0xef,0x60, +0x2d,0xf1,0x9f,0x90,0x9e,0x5e,0xe0,0x54,0x0f,0xff,0xbf,0x04,0x0e,0xe5,0x71,0x20, +0xe2,0x09,0x12,0x62,0x50,0xef,0x60,0x16,0x12,0x48,0xaa,0x90,0x9e,0x5e,0xe0,0x54, +0x0f,0xff,0xbf,0x02,0x09,0x12,0x62,0xbb,0xef,0x60,0x03,0x12,0x64,0x87,0x22,0x90, +0x06,0x04,0xe0,0x44,0x40,0xf0,0xe5,0x73,0xb4,0x01,0x05,0x7f,0x01,0x12,0x63,0x4d, +0x90,0x9e,0x5e,0xe0,0x54,0xf0,0xf0,0xe0,0x44,0x04,0xf0,0x22,0x90,0x9e,0x62,0xe0, +0x60,0x0e,0xe4,0xf0,0xa3,0xe0,0x54,0xfd,0xf0,0xe0,0x54,0x07,0x70,0x2b,0x80,0x27, +0x90,0x9e,0x51,0xe0,0x04,0xf0,0x90,0x9e,0x63,0xe0,0x54,0xef,0xf0,0x90,0x9e,0x56, +0xe0,0xff,0x90,0x9e,0x51,0xe0,0xd3,0x9f,0x40,0x0d,0xe5,0x73,0xb4,0x01,0x0a,0xa3, +0xe0,0x70,0x06,0xe0,0x04,0xf0,0x22,0x91,0xd3,0x22,0xe0,0xff,0x7d,0x01,0x90,0x9e, +0x9c,0xef,0xf0,0xa3,0xed,0xf0,0xe4,0xa3,0xf0,0xa3,0xf0,0xe5,0x74,0x60,0x04,0xe4, +0xff,0x11,0x8f,0x90,0x9e,0x9c,0xe0,0x30,0xe0,0x09,0x90,0x9e,0x9e,0xe4,0xf0,0xa3, +0x74,0x80,0xf0,0x90,0x9e,0x9c,0xe0,0xff,0xc3,0x13,0x90,0xfd,0x10,0xf0,0x90,0x04, +0x25,0xef,0xf0,0x90,0x9e,0x9d,0xe0,0x60,0x1f,0xa3,0xa3,0xe0,0xff,0x24,0x0f,0xf5, +0x82,0xe4,0x34,0xfc,0xf5,0x83,0xe0,0x44,0x80,0xf0,0x74,0x10,0x2f,0xf5,0x82,0xe4, +0x34,0xfc,0xf5,0x83,0xe0,0x44,0x80,0xf0,0x90,0x9e,0x9e,0xa3,0xe0,0xff,0xfd,0x24, +0x08,0xf5,0x82,0xe4,0x34,0xfc,0xf5,0x83,0xe4,0xf0,0x74,0x09,0x2d,0xf5,0x82,0xe4, +0x34,0xfc,0xf5,0x83,0xe0,0x54,0xf0,0xf0,0x74,0x21,0x2f,0xf5,0x82,0xe4,0x34,0xfc, +0xf5,0x83,0xe0,0x54,0xf7,0xf0,0x90,0x9e,0x9e,0xe0,0xfe,0xa3,0xe0,0xff,0x22,0xef, +0x60,0x0b,0x90,0x9e,0x77,0xe0,0xb4,0x01,0x10,0xe4,0xff,0x80,0x09,0x90,0x9e,0x77, +0xe0,0xb4,0x01,0x05,0x7f,0x01,0x12,0x77,0x66,0x22,0x90,0x01,0x37,0x74,0x02,0xf0, +0x90,0x05,0x22,0x74,0xff,0xf0,0x12,0x77,0x1c,0xef,0x70,0x06,0x90,0x01,0xc8,0x74, +0xfd,0xf0,0x7d,0x02,0x7f,0x03,0x12,0x31,0x9d,0xe5,0x74,0x60,0x04,0x7f,0x01,0x11, +0x8f,0x11,0xdf,0x90,0x9e,0x5e,0xe0,0x54,0xf0,0xf0,0xe0,0x44,0x02,0xf0,0x22,0x7f, +0x78,0x7e,0x08,0x12,0x22,0x65,0x90,0x9d,0xff,0x12,0x25,0x08,0x7f,0x04,0x7e,0x0c, +0x12,0x22,0x65,0x90,0x9e,0x03,0x12,0x25,0x08,0x7f,0x00,0x7e,0x08,0x12,0x22,0x65, +0x90,0x9e,0x07,0x12,0x25,0x08,0x90,0x9e,0x77,0xe0,0x90,0x9d,0xff,0xb4,0x01,0x0d, +0x12,0x43,0x53,0xef,0x54,0xc7,0xff,0xed,0x54,0xc7,0xfd,0x80,0x07,0x12,0x43,0x53, +0xef,0x54,0xc7,0xff,0xec,0x90,0x80,0x96,0x12,0x25,0x08,0x7f,0x78,0x7e,0x08,0x12, +0x2b,0x08,0x90,0x9e,0x03,0x12,0x43,0x53,0xef,0x54,0x0f,0xff,0xec,0x90,0x80,0x96, +0x12,0x25,0x08,0x7f,0x04,0x7e,0x0c,0x12,0x2b,0x08,0x90,0x9e,0x07,0x12,0x43,0x53, +0xef,0x44,0x02,0xff,0xec,0x90,0x80,0x96,0x12,0x25,0x08,0x7f,0x00,0x7e,0x08,0x12, +0x2b,0x08,0x7f,0x70,0x7e,0x0e,0x12,0x22,0x65,0x90,0x9e,0x0b,0x12,0x25,0x08,0x90, +0x80,0x96,0x12,0x25,0x14,0x00,0x1b,0x25,0xa0,0x7f,0x70,0x7e,0x0e,0x12,0x2b,0x08, +0x90,0x80,0x68,0x12,0x25,0x14,0x00,0x00,0x00,0x00,0xe4,0xfd,0xff,0x12,0x30,0x2c, +0x90,0x9e,0x77,0xe0,0xb4,0x01,0x11,0x90,0x80,0x68,0x12,0x25,0x14,0x00,0x00,0x00, +0x00,0xe4,0xfd,0x7f,0x01,0x12,0x30,0x2c,0x90,0x00,0x11,0xe0,0x54,0xf6,0xf0,0x80, +0x08,0xf4,0xff,0x90,0x00,0x43,0xe0,0x5f,0xf0,0xd3,0x10,0xaf,0x01,0xc3,0xc0,0xd0, +0x7f,0x10,0xdf,0xfe,0xd0,0xd0,0x92,0xaf,0x22,0xd3,0x10,0xaf,0x01,0xc3,0xc0,0xd0, +0x90,0x9e,0xad,0xed,0xf0,0x90,0x9e,0xac,0xef,0xf0,0xd3,0x94,0x07,0x50,0x63,0xe0, +0xff,0x74,0x01,0xa8,0x07,0x08,0x80,0x02,0xc3,0x33,0xd8,0xfc,0xf4,0xff,0x90,0x00, +0x47,0xe0,0x5f,0xf0,0x31,0xb9,0x90,0x9e,0xac,0xe0,0xff,0x74,0x01,0xa8,0x07,0x08, +0x80,0x02,0xc3,0x33,0xd8,0xfc,0xff,0x90,0x00,0x46,0xe0,0x4f,0xf0,0x31,0xb9,0x90, +0x9e,0xad,0xe0,0x60,0x16,0x90,0x9e,0xac,0xe0,0xff,0x74,0x01,0xa8,0x07,0x08,0x80, +0x02,0xc3,0x33,0xd8,0xfc,0xff,0x90,0x00,0x45,0x80,0x66,0x90,0x9e,0xac,0xe0,0xff, +0x74,0x01,0xa8,0x07,0x08,0x80,0x02,0xc3,0x33,0xd8,0xfc,0xf4,0xff,0x90,0x00,0x45, +0x80,0x6b,0x90,0x9e,0xac,0xe0,0x24,0xf8,0xf0,0xe0,0xff,0x74,0x01,0xa8,0x07,0x08, +0x80,0x02,0xc3,0x33,0xd8,0xfc,0xc4,0x54,0xf0,0x31,0xb1,0x90,0x9e,0xac,0xe0,0xff, +0x74,0x01,0xa8,0x07,0x08,0x80,0x02,0xc3,0x33,0xd8,0xfc,0xff,0x90,0x00,0x43,0xe0, +0x4f,0xf0,0x31,0xb9,0x90,0x9e,0xad,0xe0,0x60,0x1b,0x90,0x9e,0xac,0xe0,0xff,0x74, +0x01,0xa8,0x07,0x08,0x80,0x02,0xc3,0x33,0xd8,0xfc,0xc4,0x54,0xf0,0xff,0x90,0x00, +0x42,0xe0,0x4f,0x80,0x1a,0x90,0x9e,0xac,0xe0,0xff,0x74,0x01,0xa8,0x07,0x08,0x80, +0x02,0xc3,0x33,0xd8,0xfc,0xc4,0x54,0xf0,0xf4,0xff,0x90,0x00,0x42,0xe0,0x5f,0xf0, +0x31,0xb9,0xd0,0xd0,0x92,0xaf,0x22,0xf0,0x90,0x00,0x45,0xe0,0x54,0xfe,0xfd,0x7f, +0x45,0xd3,0x10,0xaf,0x01,0xc3,0xc0,0xd0,0x8f,0x82,0x75,0x83,0x00,0xed,0xf0,0x31, +0xb9,0xd0,0xd0,0x92,0xaf,0x22,0xef,0x14,0x60,0x30,0x14,0x60,0x66,0x24,0x02,0x60, +0x02,0x61,0x7d,0x90,0x9e,0x1a,0x74,0x02,0xf0,0x90,0x00,0x48,0xe0,0x44,0x0c,0xfd, +0x7f,0x48,0x51,0xc1,0x90,0x00,0x47,0xe0,0x44,0x08,0xfd,0x7f,0x47,0x51,0xc1,0x90, +0x00,0x45,0xe0,0x44,0x10,0xfd,0x7f,0x45,0x80,0x71,0xe4,0x90,0x9e,0x1a,0xf0,0x90, +0x9e,0x16,0x12,0x43,0x53,0x90,0x80,0x96,0x12,0x25,0x08,0x7f,0x80,0x7e,0x08,0x12, +0x2b,0x08,0x90,0x00,0x45,0xe0,0x44,0xef,0xfd,0x7f,0x45,0x51,0xc1,0x90,0x00,0x45, +0xe0,0x54,0xef,0xfd,0x7f,0x45,0x51,0xc1,0x90,0x00,0x46,0xe0,0x44,0x10,0xfd,0x7f, +0x46,0x80,0x38,0x90,0x9e,0x1a,0x74,0x01,0xf0,0x90,0x9e,0x20,0x12,0x43,0x53,0x90, +0x80,0x96,0x12,0x25,0x08,0x7f,0x80,0x7e,0x08,0x12,0x2b,0x08,0x90,0x00,0x45,0xe0, +0x44,0x20,0xfd,0x7f,0x45,0x51,0xc1,0x90,0x00,0x45,0xe0,0x44,0x10,0xfd,0x7f,0x45, +0x51,0xc1,0x90,0x00,0x46,0xe0,0x44,0x10,0xfd,0x7f,0x46,0x51,0xc1,0x22,0x90,0x00, +0x02,0x12,0x42,0x20,0x90,0x9e,0x1c,0xf0,0x90,0x00,0x01,0x12,0x42,0x20,0x25,0xe0, +0x25,0xe0,0x90,0x9e,0x1b,0xf0,0x12,0x24,0x62,0x25,0xe0,0x25,0xe0,0x90,0x9e,0x1f, +0xf0,0x90,0x05,0x60,0xe0,0x90,0x9e,0x2a,0xf0,0x90,0x05,0x61,0xe0,0x90,0x9e,0x2b, +0xf0,0x90,0x05,0x62,0xe0,0x90,0x9e,0x2c,0xf0,0x90,0x05,0x63,0xe0,0x90,0x9e,0x2d, +0xf0,0xa2,0xaf,0xe4,0x33,0x90,0x9e,0x3f,0xf0,0xc2,0xaf,0x90,0x9e,0x1b,0xe0,0xff, +0xd1,0xd8,0x90,0x9e,0x3f,0xe0,0x24,0xff,0x92,0xaf,0x90,0x9e,0x1c,0xe0,0x70,0x02, +0x81,0x84,0x90,0x9e,0x1b,0xe0,0x70,0x02,0x81,0x84,0x90,0x9e,0x1f,0xe0,0x70,0x02, +0x81,0x84,0xa2,0xaf,0xe4,0x33,0x90,0x9e,0x3f,0xf0,0xc2,0xaf,0x90,0x9e,0x2e,0x74, +0x01,0xf0,0x90,0x9e,0x3f,0xe0,0x24,0xff,0x92,0xaf,0x51,0xb8,0x90,0x00,0x46,0xe0, +0x44,0x01,0xfd,0x7f,0x46,0x51,0xc1,0x90,0x9e,0x14,0xe0,0x60,0x15,0x90,0x9e,0x20, +0x12,0x43,0x53,0x90,0x80,0x96,0x12,0x25,0x08,0x7f,0x80,0x7e,0x08,0x12,0x2b,0x08, +0x80,0x06,0x90,0x05,0x22,0x74,0x7f,0xf0,0x90,0x00,0x45,0xe0,0x54,0xef,0xfd,0x7f, +0x45,0x51,0xc1,0x90,0x05,0x87,0xe0,0x64,0x80,0xf0,0x90,0x9e,0x2a,0xe0,0x90,0x05, +0x84,0xf0,0x90,0x9e,0x2b,0xe0,0x90,0x05,0x85,0xf0,0x90,0x9e,0x2c,0xe0,0x90,0x05, +0x86,0xf0,0x90,0x9e,0x2d,0xe0,0x90,0x05,0x87,0xf0,0xa2,0xaf,0xe4,0x33,0x90,0x9e, +0x3f,0xf0,0xc2,0xaf,0x90,0x01,0x3c,0xe0,0x44,0x20,0xf0,0x7d,0x20,0xe4,0xff,0x12, +0x31,0xb7,0x80,0x2b,0x90,0x9e,0x1c,0xe0,0x70,0x2d,0x90,0x9e,0x2e,0x51,0xb7,0x90, +0x00,0x46,0xe0,0x54,0xfe,0xfd,0x7f,0x46,0x51,0xc1,0x90,0x05,0x22,0xe4,0xf0,0xa2, +0xaf,0x33,0x90,0x9e,0x3f,0xf0,0xc2,0xaf,0x7d,0x20,0xe4,0xff,0x12,0x31,0x49,0x90, +0x9e,0x3f,0xe0,0x24,0xff,0x92,0xaf,0x22,0x8b,0x59,0x8a,0x5a,0x89,0x5b,0x90,0x00, +0x02,0x12,0x42,0x20,0x90,0x9e,0x1d,0xf0,0xe0,0x30,0xe0,0x4b,0x90,0x9e,0x14,0x74, +0x01,0xf0,0x7f,0x80,0x7e,0x08,0x12,0x22,0x65,0x90,0x9e,0x16,0x12,0x25,0x08,0xab, +0x59,0xaa,0x5a,0xa9,0x5b,0x90,0x00,0x01,0x12,0x42,0x20,0xff,0xe4,0xfc,0xfd,0xfe, +0x78,0x1a,0x12,0x24,0xf5,0xa8,0x04,0xa9,0x05,0xaa,0x06,0xab,0x07,0x90,0x9e,0x16, +0x12,0x43,0x53,0xec,0x54,0x03,0xfc,0x12,0x43,0x46,0x90,0x9e,0x20,0x12,0x25,0x08, +0x90,0x05,0x22,0xe4,0xf0,0x80,0x2d,0xe4,0x90,0x9e,0x14,0xf0,0x7f,0x80,0x7e,0x08, +0x12,0x22,0x65,0xec,0x54,0x03,0xfc,0xec,0x44,0xc0,0xfc,0x90,0x9e,0x16,0x12,0x25, +0x08,0x90,0x9e,0x16,0x12,0x43,0x53,0x90,0x80,0x96,0x12,0x25,0x08,0x7f,0x80,0x7e, +0x08,0x12,0x2b,0x08,0x90,0x9e,0x1d,0xe0,0x30,0xe1,0x19,0x7d,0x0c,0x7f,0x47,0x51, +0xc1,0x90,0x00,0x48,0xe0,0x44,0x0c,0xfd,0x7f,0x48,0x51,0xc1,0x90,0x00,0x46,0xe0, +0x44,0x10,0x80,0x1c,0x90,0x00,0x47,0xe0,0x54,0xf3,0xfd,0x7f,0x47,0x51,0xc1,0x90, +0x00,0x48,0xe0,0x54,0xf3,0xfd,0x7f,0x48,0x51,0xc1,0x90,0x00,0x46,0xe0,0x54,0xef, +0xfd,0x7f,0x46,0x51,0xc1,0xe4,0x90,0x9e,0x1a,0xf0,0x22,0x90,0x01,0x3c,0x74,0xff, +0xf0,0xa3,0xf0,0xa3,0xf0,0x90,0x01,0x34,0xf0,0xa3,0xf0,0xa3,0xf0,0xa3,0xf0,0xfd, +0x7f,0x54,0x51,0xc1,0x7d,0xff,0x7f,0x55,0x51,0xc1,0x7d,0xff,0x7f,0x56,0x51,0xc1, +0x7d,0xff,0x7f,0x57,0x41,0xc1,0x90,0x01,0x30,0xe4,0xf0,0xa3,0xf0,0xa3,0xf0,0xa3, +0xf0,0x90,0x01,0x38,0xf0,0xa3,0xf0,0xa3,0xf0,0xa3,0xf0,0xfd,0x7f,0x50,0x51,0xc1, +0xe4,0xfd,0x7f,0x51,0x51,0xc1,0xe4,0xfd,0x7f,0x52,0x51,0xc1,0xe4,0xfd,0x7f,0x53, +0x41,0xc1,0xe5,0x22,0x64,0x01,0x70,0x3c,0xf1,0xbe,0xbf,0x01,0x05,0x7f,0x01,0x12, +0x44,0xf1,0x90,0x00,0x46,0xe0,0x44,0x04,0xfd,0x7f,0x46,0x51,0xc1,0x90,0x00,0x44, +0xe0,0x54,0xfb,0xfd,0x7f,0x44,0x51,0xc1,0x90,0x00,0x46,0xe0,0x54,0xfb,0xfd,0x7f, +0x46,0x51,0xc1,0x7f,0x02,0xf1,0xea,0x8f,0x26,0x90,0x01,0xc9,0xe5,0x26,0xf0,0xb4, +0x01,0x02,0xf1,0x2a,0x22,0x90,0x9e,0x1c,0xe0,0x64,0x01,0x60,0x02,0xc1,0xd7,0x90, +0x00,0x46,0xe0,0x44,0x01,0xfd,0x7f,0x46,0x51,0xc1,0x90,0x9e,0x2e,0xe0,0x70,0x31, +0x90,0x9e,0x14,0xe0,0x60,0x15,0x90,0x9e,0x20,0x12,0x43,0x53,0x90,0x80,0x96,0x12, +0x25,0x08,0x7f,0x80,0x7e,0x08,0x12,0x2b,0x08,0x80,0x06,0x90,0x05,0x22,0x74,0x7f, +0xf0,0x90,0x9e,0x1b,0xe0,0xff,0xd1,0xd8,0x90,0x9e,0x2e,0x74,0x01,0x51,0xb7,0x80, +0x3f,0x90,0x9e,0x2e,0xe0,0x64,0x01,0x70,0x37,0x90,0x9e,0x1f,0xe0,0xff,0xd1,0xd8, +0xe4,0x90,0x9e,0x2e,0xf0,0x90,0x00,0x45,0xe0,0x44,0x01,0xfd,0x7f,0x45,0x51,0xc1, +0x90,0x9e,0x14,0xe0,0x60,0x15,0x90,0x9e,0x16,0x12,0x43,0x53,0x90,0x80,0x96,0x12, +0x25,0x08,0x7f,0x80,0x7e,0x08,0x12,0x2b,0x08,0x80,0x05,0x90,0x05,0x22,0xe4,0xf0, +0x90,0x05,0x87,0xe0,0x64,0x80,0xf0,0x90,0x9e,0x2a,0xe0,0x90,0x05,0x84,0xf0,0x90, +0x9e,0x2b,0xe0,0x90,0x05,0x85,0xf0,0x90,0x9e,0x2c,0xe0,0x90,0x05,0x86,0xf0,0x90, +0x9e,0x2d,0xe0,0x90,0x05,0x87,0xf0,0x22,0x90,0x05,0x60,0xe0,0x90,0x9e,0x2a,0xf0, +0x90,0x05,0x61,0xe0,0x90,0x9e,0x2b,0xf0,0x90,0x05,0x62,0xe0,0x90,0x9e,0x2c,0xf0, +0x90,0x05,0x63,0xe0,0x90,0x9e,0x2d,0xf0,0xc3,0x74,0xff,0x9f,0xfe,0x90,0x9e,0x2b, +0xe0,0xd3,0x9e,0x40,0x1e,0xe0,0x2f,0xf0,0xa3,0xe0,0xb4,0xff,0x0f,0xe4,0xf0,0xa3, +0xe0,0xb4,0xff,0x03,0xe4,0xf0,0x22,0x90,0x9e,0x2d,0x80,0x03,0x90,0x9e,0x2c,0xe0, +0x04,0xf0,0x22,0x90,0x9e,0x2b,0xe0,0x2f,0xf0,0x22,0x90,0x00,0x49,0xe0,0x90,0x9e, +0xb1,0xf0,0xe0,0x54,0x0f,0xf0,0x44,0xf0,0xfd,0x7f,0x49,0x51,0xc1,0x90,0x9e,0xb1, +0xe0,0x44,0xb0,0xfd,0x7f,0x49,0x41,0xc1,0x8e,0x59,0x8f,0x5a,0x8b,0x5b,0x8a,0x5c, +0x89,0x5d,0xe4,0x90,0x9e,0x34,0xf0,0xef,0x90,0x00,0x31,0xf0,0x31,0xb9,0xe5,0x59, +0x54,0x03,0xff,0x90,0x00,0x32,0xe0,0x54,0xfc,0x4f,0xf0,0x31,0xb9,0x90,0x00,0x33, +0xe0,0x54,0x7f,0xf0,0x31,0xb9,0x90,0x00,0x33,0xe0,0x20,0xe7,0x0e,0x90,0x9e,0x34, +0xe0,0xc3,0x94,0x64,0x50,0x05,0xe0,0x04,0xf0,0x80,0xeb,0x90,0x9e,0x34,0xe0,0xc3, +0x94,0x64,0x50,0x10,0x90,0x00,0x30,0xe0,0xab,0x5b,0xaa,0x5c,0xa9,0x5d,0x12,0x42, +0x4d,0x7f,0x01,0x22,0x7f,0x00,0x22,0x12,0x45,0xb1,0xbf,0x01,0x10,0x90,0x02,0x09, +0xe0,0xff,0x7d,0x01,0x12,0x47,0xfe,0x90,0x04,0x1f,0x74,0x20,0xf0,0x22,0x7f,0x0b, +0xf1,0xea,0xef,0x65,0x25,0x60,0x10,0xe5,0x25,0xb4,0x01,0x05,0xe4,0xf5,0x25,0x80, +0x03,0x75,0x25,0x01,0x7f,0x01,0x22,0x7f,0x00,0x22,0xe4,0x90,0x9e,0x74,0xf0,0x90, +0x00,0x80,0xe0,0x44,0x80,0xfd,0x7f,0x80,0x41,0xc1,0xd3,0x10,0xaf,0x01,0xc3,0xc0, +0xd0,0x90,0x9e,0xb2,0xef,0xf0,0xd3,0x94,0x07,0x50,0x47,0xe0,0xff,0x74,0x01,0xa8, +0x07,0x08,0x80,0x02,0xc3,0x33,0xd8,0xfc,0xf4,0xff,0x90,0x00,0x46,0xe0,0x5f,0xf0, +0x12,0x49,0xb9,0x90,0x9e,0xb2,0xe0,0xfd,0x74,0x01,0x7e,0x00,0xa8,0x05,0x08,0x80, +0x05,0xc3,0x33,0xce,0x33,0xce,0xd8,0xf9,0xff,0x90,0x00,0x44,0xe0,0xfb,0xe4,0xfe, +0xef,0x5b,0xa8,0x05,0x08,0x80,0x06,0xce,0xa2,0xe7,0x13,0xce,0x13,0xd8,0xf8,0xff, +0x80,0x44,0x90,0x9e,0xb2,0xe0,0x24,0xf8,0xf0,0xe0,0xff,0x74,0x01,0xa8,0x07,0x08, +0x80,0x02,0xc3,0x33,0xd8,0xfc,0x12,0x49,0xb1,0x90,0x9e,0xb2,0xe0,0xfd,0x74,0x01, +0x7e,0x00,0xa8,0x05,0x08,0x80,0x05,0xc3,0x33,0xce,0x33,0xce,0xd8,0xf9,0xff,0x90, +0x00,0x42,0xe0,0xfb,0xe4,0xfe,0xef,0x5b,0xa8,0x05,0x08,0x80,0x06,0xce,0xa2,0xe7, +0x13,0xce,0x13,0xd8,0xf8,0xff,0xd0,0xd0,0x92,0xaf,0x22,0x75,0x28,0x33,0xe4,0xf5, +0x29,0x75,0x2a,0x03,0xf5,0x2b,0x90,0x01,0x30,0xe5,0x28,0xf0,0xa3,0xe5,0x29,0xf0, +0xa3,0xe5,0x2a,0xf0,0xa3,0xe5,0x2b,0xf0,0x22,0xe4,0x90,0x9e,0x31,0xf0,0xa3,0xf0, +0x75,0x8e,0x02,0x12,0x4f,0xda,0x12,0x5f,0xa9,0x12,0x5f,0xbc,0xe4,0xf5,0x12,0x12, +0x6f,0xa1,0x12,0x77,0x5d,0x12,0x60,0x9b,0x12,0x2e,0x01,0x12,0x77,0x18,0x11,0x8b, +0x90,0x00,0xf3,0xe0,0x30,0xe2,0x0d,0x90,0x05,0x41,0x74,0x10,0xf0,0x90,0x05,0x5a, +0xf0,0xa3,0xe4,0xf0,0x12,0x5f,0xf4,0x12,0x5f,0x91,0x12,0x44,0xfe,0x12,0x7d,0x1d, +0x90,0x9e,0x33,0xe5,0xd9,0xf0,0x12,0x4d,0x8b,0xc2,0xaf,0x90,0x00,0x80,0xe0,0x44, +0x40,0xf0,0x12,0x49,0xb9,0x75,0xe8,0x03,0x43,0xa8,0x85,0xd2,0xaf,0x90,0x01,0xbe, +0xe0,0x04,0xf0,0x90,0x01,0xc0,0xe0,0x04,0xf0,0x90,0x9e,0x31,0xe0,0x64,0x01,0xf0, +0x24,0xa9,0x90,0x01,0xc4,0xf0,0x74,0x50,0xa3,0xf0,0xe5,0x12,0x30,0xe4,0x09,0xc2, +0xaf,0x53,0x12,0xef,0xd2,0xaf,0x31,0x8e,0xe5,0x12,0x30,0xe6,0x17,0xc2,0xaf,0x53, +0x12,0xbf,0xd2,0xaf,0x12,0x69,0x51,0x90,0x9e,0x1e,0xe0,0xff,0x60,0x03,0xb4,0x01, +0x03,0x12,0x7d,0x7b,0x90,0x9e,0x1e,0xe0,0x70,0x03,0x12,0x7e,0x7e,0x31,0x61,0x80, +0xb8,0x90,0x06,0x34,0xe0,0x60,0x26,0x14,0x70,0x1b,0x7b,0x01,0x7a,0x06,0x79,0x35, +0x7f,0xf9,0x7e,0x01,0x12,0x4f,0x48,0xbf,0x01,0x09,0x90,0x06,0x35,0xe0,0x54,0x0f, +0xf0,0x80,0x05,0x80,0x00,0x02,0x77,0x0a,0xe4,0x90,0x06,0x34,0xf0,0x22,0x90,0x01, +0xcc,0xe0,0x54,0x0f,0x90,0x9e,0x34,0xf0,0x90,0x9e,0x34,0xe0,0xfd,0x70,0x02,0x41, +0xcf,0x90,0x9e,0xae,0xe0,0xff,0x74,0x01,0x7e,0x00,0xa8,0x07,0x08,0x80,0x05,0xc3, +0x33,0xce,0x33,0xce,0xd8,0xf9,0xff,0xef,0x5d,0x70,0x02,0x41,0xc8,0x90,0x9e,0xae, +0xe0,0x75,0xf0,0x04,0x90,0x01,0xd0,0x12,0x43,0x5f,0xe0,0x90,0x9e,0x35,0xf0,0x75, +0x1e,0x01,0x75,0x1f,0x9e,0x75,0x20,0x35,0x75,0x21,0x01,0x7b,0x01,0x7a,0x9e,0x79, +0x36,0x12,0x45,0x09,0x90,0x9e,0x36,0xe0,0xff,0xc4,0x13,0x13,0x13,0x54,0x01,0x90, +0x9e,0xae,0x30,0xe0,0x59,0xe0,0x75,0xf0,0x02,0x90,0x00,0x88,0x12,0x43,0x5f,0xe0, +0x90,0x9e,0x37,0xf0,0x90,0x9e,0xae,0xe0,0x75,0xf0,0x02,0x90,0x00,0x89,0x12,0x43, +0x5f,0xe0,0x90,0x9e,0x38,0xf0,0x90,0x9e,0xae,0xe0,0x75,0xf0,0x04,0x90,0x01,0xd1, +0x12,0x43,0x5f,0xe0,0x90,0x9e,0x39,0xf0,0x90,0x9e,0xae,0xe0,0x75,0xf0,0x04,0x90, +0x01,0xd2,0x12,0x43,0x5f,0xe0,0x90,0x9e,0x3a,0xf0,0x90,0x9e,0xae,0xe0,0x75,0xf0, +0x04,0x90,0x01,0xd3,0x12,0x43,0x5f,0xe0,0x90,0x9e,0x3b,0xf0,0x80,0x33,0xe0,0x75, +0xf0,0x04,0x90,0x01,0xd1,0x12,0x43,0x5f,0xe0,0x90,0x9e,0x37,0xf0,0x90,0x9e,0xae, +0xe0,0x75,0xf0,0x04,0x90,0x01,0xd2,0x12,0x43,0x5f,0xe0,0x90,0x9e,0x38,0xf0,0x90, +0x9e,0xae,0xe0,0x75,0xf0,0x04,0x90,0x01,0xd3,0x12,0x43,0x5f,0xe0,0x90,0x9e,0x39, +0xf0,0xef,0x54,0x7f,0xff,0x7b,0x01,0x7a,0x9e,0x79,0x37,0x51,0xd0,0x90,0x9e,0x34, +0xe0,0xff,0x90,0x9e,0xae,0xe0,0xfe,0x74,0x01,0xa8,0x06,0x08,0x80,0x02,0xc3,0x33, +0xd8,0xfc,0xf4,0x5f,0x90,0x9e,0x34,0xf0,0x90,0x9e,0xae,0xe0,0xff,0x74,0x01,0xa8, +0x07,0x08,0x80,0x02,0xc3,0x33,0xd8,0xfc,0x90,0x01,0xcc,0xf0,0x90,0x9e,0xae,0xe0, +0x04,0xf0,0xe0,0x54,0x03,0xf0,0x21,0x98,0x90,0x01,0xc6,0xe0,0x44,0x02,0xf0,0x22, +0x90,0x9e,0x3c,0x12,0x43,0x8b,0xef,0x12,0x43,0x94,0x53,0x0b,0x01,0x53,0x14,0x02, +0x53,0x2f,0x03,0x53,0x38,0x05,0x53,0x41,0x06,0x53,0x8f,0x07,0x53,0x49,0x09,0x53, +0x52,0x0c,0x53,0x5b,0x0d,0x53,0x64,0x0e,0x53,0x6d,0x1b,0x53,0x76,0x1c,0x53,0x7f, +0x2c,0x53,0x1d,0x2d,0x53,0x26,0x2e,0x00,0x00,0x53,0x88,0x90,0x9e,0x3c,0x12,0x43, +0x6b,0x02,0x61,0x9d,0x90,0x9e,0x3c,0x12,0x43,0x6b,0x02,0x71,0xc4,0x90,0x9e,0x3c, +0x12,0x43,0x6b,0x02,0x71,0xca,0x90,0x9e,0x3c,0x12,0x43,0x6b,0x02,0x72,0x12,0x90, +0x9e,0x3c,0x12,0x43,0x6b,0x02,0x72,0x40,0x90,0x9e,0x3c,0x12,0x43,0x6b,0x02,0x71, +0x74,0x90,0x9e,0x3c,0x12,0x43,0x6b,0x80,0x47,0x90,0x9e,0x3c,0x12,0x43,0x6b,0x02, +0x72,0x88,0x90,0x9e,0x3c,0x12,0x43,0x6b,0x02,0x4b,0x7e,0x90,0x9e,0x3c,0x12,0x43, +0x6b,0x02,0x7c,0xea,0x90,0x9e,0x3c,0x12,0x43,0x6b,0x02,0x4c,0xb8,0x90,0x9e,0x3c, +0x12,0x43,0x6b,0x02,0x71,0xbc,0x90,0x9e,0x3c,0x12,0x43,0x6b,0x02,0x71,0xa3,0x90, +0x9e,0x3c,0x12,0x43,0x6b,0x02,0x75,0xea,0x90,0x01,0xc6,0xe0,0x44,0x01,0xf0,0x22, +0x90,0x00,0x04,0x12,0x42,0x20,0xff,0x54,0x1f,0xfe,0xef,0x54,0x20,0xc4,0x13,0x54, +0x07,0xfd,0xaf,0x06,0x90,0x9e,0x3f,0xef,0xf0,0xa3,0xed,0xf0,0xa3,0x12,0x43,0x8b, +0x90,0x9e,0x41,0x12,0x43,0x6b,0x90,0x00,0x03,0x12,0x42,0x20,0x54,0xf0,0xc4,0x54, +0x0f,0x90,0x9e,0x44,0xf0,0x90,0x00,0x04,0x12,0x42,0x20,0x54,0x40,0xc4,0x13,0x13, +0x54,0x03,0x90,0x9e,0x45,0xf0,0x90,0x9e,0x3f,0xe0,0xff,0x75,0xf0,0x09,0x90,0x96, +0x46,0x12,0x43,0x5f,0xad,0x82,0xac,0x83,0x90,0x9e,0x46,0xec,0xf0,0xa3,0xed,0xf0, +0xef,0x75,0xf0,0x09,0xa4,0x24,0x44,0xf9,0x74,0x96,0x35,0xf0,0xfa,0x7b,0x01,0xa3, +0x12,0x43,0x8b,0x90,0x9e,0x41,0x12,0x43,0x6b,0x90,0x00,0x03,0x12,0x42,0x20,0x54, +0x0f,0xff,0x90,0x9e,0x48,0x12,0x43,0x6b,0xef,0x12,0x42,0x4d,0x90,0x9e,0x41,0x12, +0x43,0x6b,0x90,0x00,0x02,0x12,0x42,0x20,0xff,0x90,0x9e,0x48,0x12,0x43,0x6b,0x90, +0x00,0x01,0xef,0x12,0x42,0x5f,0x90,0x9e,0x41,0x12,0x43,0x6b,0x90,0x00,0x01,0x12, +0x42,0x20,0xff,0x90,0x9e,0x46,0xe0,0xfc,0xa3,0xe0,0xfd,0xf5,0x82,0x8c,0x83,0xef, +0xf0,0x12,0x24,0x62,0x8d,0x82,0x8c,0x83,0xa3,0xf0,0x90,0x9e,0x44,0xe0,0xfe,0x90, +0x9e,0x3f,0xe0,0xff,0x24,0x82,0xf5,0x82,0xe4,0x34,0x95,0xf5,0x83,0xee,0xf0,0x90, +0x9e,0x40,0xe0,0xfe,0x75,0xf0,0x09,0xef,0x90,0x96,0x4a,0x12,0x43,0x5f,0xee,0xf0, +0x75,0xf0,0x09,0xef,0x90,0x96,0x4b,0x12,0x43,0x5f,0x74,0x01,0xf0,0x90,0x9e,0x45, +0xe0,0xfe,0x75,0xf0,0x09,0xef,0x90,0x96,0x4c,0x12,0x43,0x5f,0xee,0xf0,0x8f,0x59, +0xef,0x25,0xe0,0x24,0xc6,0xf5,0x82,0xe4,0x34,0x9b,0xaf,0x82,0xf5,0x5b,0x8f,0x5c, +0xe5,0x59,0x75,0xf0,0x02,0xa4,0x24,0x02,0xf9,0x74,0x95,0x35,0xf0,0x75,0x5d,0x01, +0xf5,0x5e,0x89,0x5f,0x75,0xf0,0x09,0xe5,0x59,0x90,0x96,0x46,0x12,0x43,0x5f,0xaf, +0x82,0x85,0x83,0x60,0x8f,0x61,0xe5,0x59,0x75,0xf0,0x09,0xa4,0x24,0x44,0xf9,0x74, +0x96,0x35,0xf0,0x75,0x62,0x01,0xf5,0x63,0x89,0x64,0x74,0x82,0x25,0x59,0xf5,0x82, +0xe4,0x34,0x95,0xf5,0x83,0xe0,0x12,0x43,0x94,0x55,0x1e,0x00,0x55,0x33,0x01,0x55, +0x48,0x02,0x55,0x5d,0x03,0x55,0x86,0x04,0x55,0x9b,0x05,0x55,0xb0,0x06,0x55,0xd6, +0x0c,0x56,0x03,0x0d,0x56,0x30,0x0e,0x56,0x5d,0x0f,0x00,0x00,0x56,0x91,0xe5,0x59, +0x25,0xe0,0x24,0xc6,0xf5,0x82,0xe4,0x34,0x9b,0xf5,0x83,0x74,0xf0,0xf0,0xa3,0x74, +0x15,0x80,0x3c,0xe5,0x59,0x25,0xe0,0x24,0xc6,0xf5,0x82,0xe4,0x34,0x9b,0xf5,0x83, +0x74,0xf0,0xf0,0xa3,0x74,0x10,0x80,0x27,0xe5,0x59,0x25,0xe0,0x24,0xc6,0xf5,0x82, +0xe4,0x34,0x9b,0xf5,0x83,0x74,0xf0,0xf0,0xa3,0x74,0x05,0x80,0x12,0xe5,0x59,0x25, +0xe0,0x24,0xc6,0xf5,0x82,0xe4,0x34,0x9b,0xf5,0x83,0x74,0xf0,0xf0,0xa3,0xe4,0xf0, +0xe5,0x59,0x25,0xe0,0x24,0x02,0xf5,0x82,0xe4,0x34,0x95,0xf5,0x83,0x74,0x0f,0xf0, +0xa3,0x74,0x8f,0xf0,0xc1,0x91,0xe5,0x59,0x25,0xe0,0x24,0xc6,0xf5,0x82,0xe4,0x34, +0x9b,0xf5,0x83,0x74,0x0f,0xf0,0xa3,0x74,0xf5,0x80,0x27,0xe5,0x59,0x25,0xe0,0x24, +0xc6,0xf5,0x82,0xe4,0x34,0x9b,0xf5,0x83,0x74,0x0f,0xf0,0xa3,0x74,0xf0,0x80,0x12, +0xe5,0x59,0x25,0xe0,0x24,0xc6,0xf5,0x82,0xe4,0x34,0x9b,0xf5,0x83,0xe4,0xf0,0xa3, +0x74,0x0d,0xf0,0xe5,0x59,0x25,0xe0,0x24,0x02,0xf5,0x82,0xe4,0x34,0x95,0xf5,0x83, +0xe4,0xf0,0xa3,0xf0,0xc1,0x91,0x90,0x04,0x47,0xe0,0xab,0x5d,0xaa,0x5e,0xa9,0x5f, +0x12,0x42,0x4d,0x90,0x04,0x46,0xe0,0xab,0x5d,0xaa,0x5e,0xa9,0x5f,0x90,0x00,0x01, +0x12,0x42,0x5f,0x90,0x04,0x45,0xe0,0x85,0x5c,0x82,0x85,0x5b,0x83,0xf0,0x90,0x04, +0x44,0xc1,0x88,0x90,0x04,0x4b,0xe0,0xab,0x5d,0xaa,0x5e,0xa9,0x5f,0x12,0x42,0x4d, +0x90,0x04,0x4a,0xe0,0xab,0x5d,0xaa,0x5e,0xa9,0x5f,0x90,0x00,0x01,0x12,0x42,0x5f, +0x90,0x04,0x49,0xe0,0x85,0x5c,0x82,0x85,0x5b,0x83,0xf0,0x90,0x04,0x48,0x80,0x58, +0x90,0x04,0x4f,0xe0,0xab,0x5d,0xaa,0x5e,0xa9,0x5f,0x12,0x42,0x4d,0x90,0x04,0x4e, +0xe0,0xab,0x5d,0xaa,0x5e,0xa9,0x5f,0x90,0x00,0x01,0x12,0x42,0x5f,0x90,0x04,0x4d, +0xe0,0x85,0x5c,0x82,0x85,0x5b,0x83,0xf0,0x90,0x04,0x4c,0x80,0x2b,0x90,0x04,0x53, +0xe0,0xab,0x5d,0xaa,0x5e,0xa9,0x5f,0x12,0x42,0x4d,0x90,0x04,0x52,0xe0,0xab,0x5d, +0xaa,0x5e,0xa9,0x5f,0x90,0x00,0x01,0x12,0x42,0x5f,0x90,0x04,0x51,0xe0,0x85,0x5c, +0x82,0x85,0x5b,0x83,0xf0,0x90,0x04,0x50,0xe0,0x85,0x5c,0x82,0x85,0x5b,0x83,0xa3, +0xf0,0xab,0x5d,0xaa,0x5e,0xa9,0x5f,0xc0,0x03,0xc0,0x02,0xc0,0x01,0x12,0x24,0x62, +0xff,0xab,0x62,0xaa,0x63,0xa9,0x64,0x12,0x24,0x62,0x5f,0xd0,0x01,0xd0,0x02,0xd0, +0x03,0x12,0x42,0x4d,0xab,0x5d,0xe5,0x5f,0x24,0x01,0xf9,0xe4,0x35,0x5e,0xfa,0xc0, +0x03,0xc0,0x02,0xc0,0x01,0x12,0x24,0x62,0xff,0xab,0x62,0xaa,0x63,0xa9,0x64,0x90, +0x00,0x01,0x12,0x42,0x20,0x5f,0xd0,0x01,0xd0,0x02,0xd0,0x03,0x12,0x42,0x4d,0x85, +0x5c,0x82,0x85,0x5b,0x83,0xc0,0x83,0xc0,0x82,0xe0,0xff,0x85,0x61,0x82,0x85,0x60, +0x83,0xe0,0xfe,0xef,0x5e,0xd0,0x82,0xd0,0x83,0xf0,0x85,0x5c,0x82,0x85,0x5b,0x83, +0xa3,0xc0,0x83,0xc0,0x82,0xe0,0xff,0x85,0x61,0x82,0x85,0x60,0x83,0xa3,0xe0,0xfe, +0xef,0x5e,0xd0,0x82,0xd0,0x83,0xf0,0xe5,0x59,0x25,0xe0,0x24,0x02,0xf5,0x82,0xe4, +0x34,0x95,0xf5,0x83,0xe0,0xfe,0xa3,0xe0,0x4e,0x60,0x3b,0x75,0x5a,0x0b,0x74,0x01, +0x7e,0x00,0xa8,0x5a,0x08,0x80,0x05,0xc3,0x33,0xce,0x33,0xce,0xd8,0xf9,0xff,0xe5, +0x59,0x25,0xe0,0x24,0x02,0xf5,0x82,0xe4,0x34,0x95,0xf5,0x83,0xe0,0x5e,0xfe,0xa3, +0xe0,0x5f,0x4e,0x60,0x06,0xe5,0x5a,0x24,0x10,0x80,0x5d,0x15,0x5a,0xe5,0x5a,0xc3, +0x94,0x00,0x50,0xca,0x80,0x56,0xe5,0x59,0x25,0xe0,0x24,0xc6,0xf5,0x82,0xe4,0x34, +0x9b,0xf5,0x83,0xe0,0xfe,0xa3,0xe0,0x4e,0x60,0x3d,0x75,0x5a,0x0f,0x74,0x01,0x7e, +0x00,0xa8,0x5a,0x08,0x80,0x05,0xc3,0x33,0xce,0x33,0xce,0xd8,0xf9,0xff,0xe5,0x59, +0x25,0xe0,0x24,0xc6,0xf5,0x82,0xe4,0x34,0x9b,0xf5,0x83,0xe0,0x5e,0xfe,0xa3,0xe0, +0x5f,0x4e,0x60,0x08,0x90,0x9e,0x4b,0xe5,0x5a,0xf0,0x80,0x10,0x15,0x5a,0xe5,0x5a, +0xc3,0x94,0x00,0x50,0xc8,0x80,0x05,0xe4,0x90,0x9e,0x4b,0xf0,0xe5,0x59,0x25,0xe0, +0x24,0xc6,0xf5,0x82,0xe4,0x34,0x9b,0xf5,0x83,0xe0,0xfe,0xa3,0xe0,0x4e,0x60,0x3b, +0xe4,0xf5,0x5a,0x74,0x01,0x7e,0x00,0xa8,0x5a,0x08,0x80,0x05,0xc3,0x33,0xce,0x33, +0xce,0xd8,0xf9,0xff,0xe5,0x59,0x25,0xe0,0x24,0xc6,0xf5,0x82,0xe4,0x34,0x9b,0xf5, +0x83,0xe0,0x5e,0xfe,0xa3,0xe0,0x5f,0x4e,0x60,0x08,0x90,0x9e,0x4c,0xe5,0x5a,0xf0, +0x80,0x5b,0x05,0x5a,0xe5,0x5a,0xb4,0x10,0xca,0x80,0x52,0xe5,0x59,0x25,0xe0,0x24, +0x02,0xf5,0x82,0xe4,0x34,0x95,0xf5,0x83,0xe0,0xfe,0xa3,0xe0,0x4e,0x60,0x39,0xe4, +0xf5,0x5a,0x74,0x01,0x7e,0x00,0xa8,0x5a,0x08,0x80,0x05,0xc3,0x33,0xce,0x33,0xce, +0xd8,0xf9,0xff,0xe5,0x59,0x25,0xe0,0x24,0x02,0xf5,0x82,0xe4,0x34,0x95,0xf5,0x83, +0xe0,0x5e,0xfe,0xa3,0xe0,0x5f,0x4e,0x60,0x06,0xe5,0x5a,0x24,0x10,0x80,0x0a,0x05, +0x5a,0xe5,0x5a,0xb4,0x0c,0xcc,0x80,0x05,0xe4,0x90,0x9e,0x4c,0xf0,0x90,0x9e,0x4b, +0xe0,0xff,0x75,0xf0,0x09,0xe5,0x59,0x90,0x96,0x48,0x12,0x43,0x5f,0xef,0xf0,0x90, +0x9e,0x4c,0xe0,0xfe,0x75,0xf0,0x09,0xe5,0x59,0x90,0x96,0x49,0x12,0x43,0x5f,0xee, +0xf0,0x74,0x84,0x25,0x59,0xf5,0x82,0xe4,0x34,0x04,0xf5,0x83,0xe0,0xd3,0x9f,0x40, +0x05,0x90,0x9e,0x4b,0x11,0xe0,0x74,0x84,0x25,0x59,0xf5,0x82,0xe4,0x34,0x04,0xf5, +0x83,0xe0,0xff,0x90,0x9e,0x4c,0xe0,0xfe,0xef,0xc3,0x9e,0x50,0x02,0x11,0xe0,0x90, +0x9e,0x4b,0xe0,0xff,0xd3,0x94,0x13,0x40,0x07,0x90,0x96,0x43,0x74,0x03,0xf0,0x22, +0xef,0xd3,0x94,0x0b,0x40,0x07,0x90,0x96,0x43,0x74,0x02,0xf0,0x22,0xef,0xd3,0x94, +0x03,0x40,0x07,0x90,0x96,0x43,0x74,0x01,0xf0,0x22,0xe4,0x90,0x96,0x43,0xf0,0x22, +0xe0,0xfd,0x74,0x26,0x25,0x59,0xf5,0x82,0xe4,0x34,0x9d,0xf5,0x83,0xed,0xf0,0xaf, +0x59,0xd3,0x10,0xaf,0x01,0xc3,0xc0,0xd0,0xef,0xc3,0x94,0x20,0x50,0x0e,0x74,0x84, +0x2f,0xf5,0x82,0xe4,0x34,0x04,0xf5,0x83,0xed,0xf0,0x80,0x29,0x74,0xa6,0x2f,0xf5, +0x82,0xe4,0x34,0x9c,0xf5,0x83,0xed,0xf0,0x90,0x9e,0x78,0xef,0xf0,0x24,0xa6,0xf5, +0x82,0xe4,0x34,0x9c,0xf5,0x83,0xe0,0x90,0x9e,0x79,0xf0,0x7b,0x01,0x7a,0x9e,0x79, +0x78,0x7d,0x02,0x31,0x3a,0xd0,0xd0,0x92,0xaf,0x22,0xd3,0x10,0xaf,0x01,0xc3,0xc0, +0xd0,0x90,0x9e,0x97,0x12,0x43,0x8b,0x90,0x9e,0x9a,0xe0,0x54,0xf0,0x44,0x06,0xff, +0xf0,0xed,0x54,0x0f,0xc4,0x54,0xf0,0xfe,0xef,0x54,0x0f,0x4e,0xf0,0x90,0x9e,0x97, +0x12,0x43,0x6b,0x90,0x9e,0x94,0x12,0x43,0x8b,0x7b,0x01,0x7a,0x9e,0x79,0x9a,0xd1, +0x14,0xd0,0xd0,0x92,0xaf,0x22,0x8f,0x50,0x8d,0x51,0xe5,0x51,0x54,0x1f,0xf5,0x56, +0x74,0x01,0x2f,0xf5,0x82,0xe4,0x34,0x94,0xf5,0x83,0xe0,0xf5,0x54,0x90,0x04,0xfd, +0xe0,0xb4,0x01,0x05,0x75,0x57,0x03,0x80,0x03,0x75,0x57,0x01,0xeb,0xc3,0x95,0x57, +0x40,0x04,0xaf,0x50,0x80,0x33,0xe5,0x54,0x25,0x53,0xf5,0x55,0xe5,0x56,0x90,0x41, +0xd6,0x93,0xff,0xe5,0x55,0xd3,0x9f,0x74,0x01,0x40,0x11,0x25,0x50,0xf5,0x82,0xe4, +0x34,0x94,0xf5,0x83,0xe4,0xf0,0xad,0x51,0xaf,0x50,0x01,0xf1,0x25,0x50,0xf5,0x82, +0xe4,0x34,0x94,0xf5,0x83,0xe5,0x55,0xf0,0x22,0xad,0x07,0x75,0xf0,0x09,0xed,0x90, +0x96,0x48,0x12,0x43,0x5f,0xe0,0xff,0x74,0x67,0x2d,0xf5,0x82,0xe4,0x34,0x9d,0xf5, +0x83,0xe0,0x54,0x1f,0xf5,0x58,0xd3,0x9f,0x40,0x02,0x8f,0x58,0xe5,0x58,0x25,0xe0, +0x24,0x9e,0xf5,0x82,0xe4,0x34,0x41,0xf5,0x83,0xe4,0x93,0xfe,0x74,0x01,0x93,0xff, +0xe5,0x58,0x25,0xe0,0x24,0x66,0xf5,0x82,0xe4,0x34,0x41,0xf5,0x83,0x74,0x01,0x93, +0x2f,0xff,0xe4,0x93,0x3e,0xc3,0x13,0xfe,0xef,0x13,0xff,0xed,0x25,0xe0,0x24,0xc2, +0xf5,0x82,0xe4,0x34,0x95,0xf5,0x83,0xee,0xf0,0xa3,0xef,0xf0,0xaf,0x05,0xad,0x58, +0x11,0xf1,0xaf,0x58,0x22,0xc0,0xe0,0xc0,0xf0,0xc0,0x83,0xc0,0x82,0xc0,0xd0,0x75, +0xd0,0x00,0xc0,0x00,0xc0,0x01,0xc0,0x02,0xc0,0x03,0xc0,0x04,0xc0,0x05,0xc0,0x06, +0xc0,0x07,0x90,0x01,0xc4,0x74,0x45,0xf0,0x74,0x5a,0xa3,0xf0,0x90,0x01,0x34,0xe0, +0x55,0x28,0xf5,0x2c,0x90,0x01,0x36,0xe0,0x55,0x2a,0xf5,0x2e,0xa3,0xe0,0x55,0x2b, +0xf5,0x2f,0xe5,0x2c,0x20,0xe0,0x02,0x61,0xe1,0x90,0x01,0x34,0x74,0x01,0xf0,0x85, +0xd1,0x08,0x85,0xd2,0x09,0x85,0xd3,0x0a,0x85,0xd4,0x0b,0x85,0xd5,0x0c,0x85,0xd6, +0x0d,0x85,0xd7,0x0e,0x85,0xd9,0x0f,0xe5,0x0f,0x54,0x40,0xc3,0x13,0xff,0xe5,0x0e, +0x54,0x20,0x6f,0x70,0x02,0x61,0x93,0xe5,0x0f,0x30,0xe5,0x02,0x61,0x93,0xe5,0x0d, +0x54,0x3f,0xf5,0x4d,0xe5,0x08,0x54,0x3f,0xf5,0x4e,0xe5,0x0c,0x54,0x1f,0xff,0xe5, +0x4d,0x25,0xe0,0x24,0xc4,0xf5,0x82,0xe4,0x34,0x99,0xf5,0x83,0xe4,0x8f,0xf0,0x12, +0x42,0x81,0xe5,0x0e,0x54,0x1f,0xff,0xe5,0x4d,0x25,0xe0,0x24,0x80,0xf5,0x82,0xe4, +0x34,0x93,0xf5,0x83,0xe4,0x8f,0xf0,0x12,0x42,0x81,0xe5,0x4e,0xd3,0x94,0x04,0x40, +0x03,0x75,0x4e,0x04,0x75,0xf0,0x0a,0xe5,0x4d,0x90,0x90,0x00,0x12,0x43,0x5f,0x75, +0xf0,0x02,0xe5,0x4e,0x12,0x43,0x5f,0xe0,0xfe,0xa3,0xe0,0xff,0xe5,0x0e,0x54,0x1f, +0x2f,0xff,0xe4,0x3e,0xfe,0x75,0xf0,0x0a,0xe5,0x4d,0x90,0x90,0x00,0x12,0x43,0x5f, +0x75,0xf0,0x02,0xe5,0x4e,0x12,0x43,0x5f,0xee,0xf0,0xa3,0xef,0xf0,0xe5,0x0f,0x20, +0xe6,0x23,0xe5,0x0e,0x54,0x1f,0xff,0xe5,0x4d,0x25,0xe0,0x24,0xc4,0xf5,0x82,0xe4, +0x34,0x98,0xf5,0x83,0xe4,0x8f,0xf0,0x12,0x42,0x81,0xe5,0x0a,0x30,0xe7,0x34,0xaf, +0x4d,0x31,0xd9,0x80,0x2e,0xe5,0x0e,0x54,0x1f,0xff,0xe5,0x4d,0x25,0xe0,0x24,0x44, +0xf5,0x82,0xe4,0x34,0x99,0xf5,0x83,0xe4,0x8f,0xf0,0x12,0x42,0x81,0xe5,0x0a,0x30, +0xe7,0x11,0xe5,0x0a,0x54,0x7f,0xfd,0xe5,0x0e,0x54,0x1f,0xf5,0x53,0xab,0x4e,0xaf, +0x4d,0x31,0x76,0xe5,0x74,0x14,0x24,0xfd,0x50,0x02,0x80,0x45,0x90,0x9e,0x61,0xe0, +0x60,0x37,0x90,0x01,0x5b,0xe4,0xf0,0x90,0x01,0x3c,0x74,0x04,0xf0,0xd1,0x05,0xef, +0x64,0x01,0x70,0x2d,0x90,0x9e,0x55,0xe0,0xf5,0x44,0x75,0x45,0x00,0xe4,0xfb,0xfd, +0x7f,0x58,0x7e,0x01,0x12,0x30,0x62,0x90,0x01,0x5b,0x74,0x05,0xf0,0x90,0x06,0x92, +0x74,0x01,0xf0,0x90,0x9e,0x5d,0xf0,0x80,0x08,0xd1,0x05,0xbf,0x01,0x03,0x12,0x44, +0xd3,0xe5,0x2c,0x30,0xe1,0x20,0x90,0x01,0x34,0x74,0x02,0xf0,0x85,0xd1,0x13,0x85, +0xd2,0x14,0x85,0xd3,0x15,0x85,0xd4,0x16,0x85,0xd5,0x17,0x85,0xd6,0x18,0x85,0xd7, +0x19,0x85,0xd9,0x1a,0xd1,0x9c,0xe5,0x2c,0x30,0xe3,0x06,0x90,0x01,0x34,0x74,0x08, +0xf0,0xe5,0x2c,0x30,0xe4,0x09,0x90,0x01,0x34,0x74,0x10,0xf0,0x43,0x12,0x10,0xe5, +0x2c,0x30,0xe5,0x26,0x90,0x01,0xcf,0xe0,0x30,0xe5,0x1f,0xe0,0x54,0xdf,0xf0,0x90, +0x01,0x34,0x74,0x20,0xf0,0x75,0xa8,0x00,0x75,0xe8,0x00,0x12,0x4d,0xb6,0x90,0x00, +0x03,0xe0,0x54,0xfb,0xf0,0x12,0x49,0xb9,0x80,0xfe,0xe5,0x2c,0x30,0xe6,0x06,0x90, +0x01,0x34,0x74,0x40,0xf0,0xe5,0x2e,0x30,0xe1,0x3c,0x90,0x01,0x36,0x74,0x02,0xf0, +0x43,0x12,0x40,0x90,0x01,0x02,0xe0,0x54,0x03,0x64,0x01,0x70,0x29,0x90,0x01,0x37, +0xe0,0x30,0xe0,0x0a,0x74,0x01,0xf0,0x90,0x9e,0x66,0xe4,0xf0,0x80,0x18,0x90,0x9e, +0x66,0xe0,0x04,0xf0,0xe0,0xc3,0x94,0x0a,0x40,0x0c,0xe4,0xf0,0x90,0x04,0x19,0xe0, +0x30,0xe0,0x03,0x12,0x4f,0xa7,0xe5,0x2e,0x30,0xe0,0x12,0x90,0x9e,0x76,0x74,0x01, +0xf0,0x90,0x01,0x36,0xf0,0x12,0x64,0xfe,0x90,0x9e,0x76,0xe4,0xf0,0xe5,0x2e,0x30, +0xe2,0x78,0x90,0x01,0x36,0x74,0x04,0xf0,0x90,0x01,0xbd,0xe0,0x04,0xf0,0xe5,0x73, +0x64,0x01,0x70,0x66,0xe5,0x74,0x60,0x62,0xe5,0x74,0x64,0x02,0x60,0x06,0xe5,0x74, +0x64,0x05,0x70,0x27,0x90,0x06,0xab,0xe0,0x90,0x9e,0x50,0xf0,0x90,0x06,0xaa,0xe0, +0x90,0x9e,0x5f,0xf0,0x90,0x9e,0x50,0xe0,0x70,0x07,0x90,0x9e,0x5f,0xe0,0xff,0x80, +0x05,0x90,0x9e,0x50,0xe0,0xff,0x90,0x9e,0x50,0xef,0xf0,0x90,0x9e,0x52,0xe0,0x60, +0x03,0xe0,0x14,0xf0,0x90,0x9e,0x51,0xe4,0xf0,0x90,0x01,0x57,0xf0,0x90,0x01,0x3c, +0x74,0x02,0xf0,0x90,0x9e,0x63,0xe0,0x54,0xfd,0xf0,0xe0,0x54,0xef,0xf0,0xe5,0x74, +0x14,0x24,0xfd,0x50,0x02,0x80,0x03,0x12,0x45,0x53,0xe5,0x2e,0x30,0xe3,0x28,0x90, +0x01,0x36,0x74,0x08,0xf0,0xe5,0x73,0x64,0x01,0x70,0x1c,0xe5,0x74,0x60,0x18,0x90, +0x01,0x57,0xe4,0xf0,0x90,0x01,0x3c,0x74,0x02,0xf0,0x90,0x9e,0x89,0xe4,0x12,0x44, +0x52,0x90,0x01,0x57,0x74,0x05,0xf0,0xe5,0x2e,0x30,0xe4,0x2f,0x90,0x01,0x36,0x74, +0x10,0xf0,0xe5,0x73,0x64,0x01,0x70,0x23,0xe5,0x74,0x60,0x1f,0x90,0x01,0x57,0xe4, +0xf0,0x90,0x01,0x3c,0x74,0x02,0xf0,0x90,0x9e,0x62,0xe4,0xf0,0x90,0x9e,0x63,0xe0, +0x54,0xfd,0xf0,0xe0,0x54,0x07,0x70,0x03,0x12,0x44,0xd3,0xe5,0x2e,0x30,0xe5,0x1f, +0x90,0x01,0x36,0x74,0x20,0xf0,0xe5,0x73,0xb4,0x01,0x14,0xe5,0x74,0x60,0x10,0x90, +0x9e,0x61,0xe0,0x64,0x02,0x60,0x05,0x12,0x44,0xdc,0x80,0x03,0x12,0x44,0x80,0xe5, +0x2e,0x30,0xe6,0x1e,0x90,0x01,0x36,0x74,0x40,0xf0,0xe5,0x73,0xb4,0x01,0x13,0xe5, +0x74,0x60,0x0f,0x90,0x9e,0x63,0xe0,0x54,0xfe,0xf0,0xe0,0x54,0x07,0x70,0x03,0x12, +0x44,0xd3,0xe5,0x2f,0x30,0xe1,0x08,0x90,0x01,0x37,0x74,0x02,0xf0,0xd1,0xbd,0x74, +0x45,0x04,0x90,0x01,0xc4,0xf0,0x74,0x5a,0xa3,0xf0,0xd0,0x07,0xd0,0x06,0xd0,0x05, +0xd0,0x04,0xd0,0x03,0xd0,0x02,0xd0,0x01,0xd0,0x00,0xd0,0xd0,0xd0,0x82,0xd0,0x83, +0xd0,0xf0,0xd0,0xe0,0x32,0x90,0x04,0x1b,0xe0,0x54,0x7f,0x64,0x7f,0x7f,0x01,0x60, +0x02,0x7f,0x00,0x22,0xd3,0x10,0xaf,0x01,0xc3,0xc0,0xd0,0x90,0x9e,0x91,0x12,0x43, +0x8b,0x90,0x9e,0x75,0xe0,0x64,0x02,0x60,0x6e,0x90,0x9e,0x75,0xe0,0x64,0x01,0x70, +0x66,0x90,0x9e,0xb0,0xe0,0xff,0x04,0xf0,0x90,0x9e,0x91,0x12,0x43,0x6b,0x90,0x00, +0x01,0xef,0x12,0x42,0x5f,0x7f,0xaf,0x7e,0x01,0xf1,0x3b,0xef,0x60,0x49,0x90,0x9e, +0x91,0x12,0x43,0x6b,0x8b,0x1e,0x8a,0x1f,0x89,0x20,0x75,0x21,0x02,0x7b,0x01,0x7a, +0x01,0x79,0xa0,0x12,0x45,0x09,0x90,0x9e,0x94,0x12,0x43,0x6b,0x8b,0x1e,0x8a,0x1f, +0x89,0x20,0x90,0x9e,0x91,0x12,0x43,0x6b,0x12,0x24,0x62,0xff,0xc4,0x54,0x0f,0xf5, +0x21,0x7b,0x01,0x7a,0x01,0x79,0xa2,0x12,0x45,0x09,0x90,0x01,0xaf,0x74,0xff,0xf0, +0x90,0x01,0xcb,0xe0,0x64,0x80,0xf0,0xd0,0xd0,0x92,0xaf,0x22,0x90,0x9e,0x2f,0xe0, +0x54,0xf0,0x44,0x03,0xf0,0x54,0x0f,0x44,0x80,0xf0,0x7b,0x00,0x7a,0x00,0x79,0x13, +0x90,0x9e,0x94,0x12,0x43,0x8b,0x0b,0x7a,0x9e,0x79,0x2f,0xc1,0x14,0x7d,0x02,0x7f, +0x03,0x12,0x31,0x2c,0xe5,0x74,0x14,0x24,0xfd,0x50,0x02,0x80,0x23,0x90,0x9e,0x61, +0xe0,0x60,0x06,0x7d,0x01,0x7f,0x0c,0x80,0x0f,0x90,0x9e,0x5e,0xe0,0x54,0x0f,0xc3, +0x94,0x04,0x50,0x07,0x7d,0x01,0x7f,0x04,0x12,0x47,0x1a,0xe4,0xff,0x12,0x48,0x8f, +0x22,0xd1,0x05,0xef,0x64,0x01,0x60,0x08,0x90,0x01,0xb9,0x74,0x01,0xf0,0x80,0x32, +0x90,0x9e,0x5d,0xe0,0x60,0x08,0x90,0x01,0xb9,0x74,0x02,0xf0,0x80,0x24,0x90,0x9e, +0x5c,0xe0,0x60,0x08,0x90,0x01,0xb9,0x74,0x04,0xf0,0x80,0x16,0x90,0x9e,0x60,0xe0, +0x54,0x0f,0xd3,0x94,0x04,0x40,0x08,0x90,0x01,0xb9,0x74,0x08,0xf0,0x80,0x03,0x7f, +0x01,0x22,0x90,0x01,0xb8,0x74,0x08,0xf0,0x7f,0x00,0x22,0xd3,0x10,0xaf,0x01,0xc3, +0xc0,0xd0,0x90,0x9e,0xa0,0xee,0xf0,0xa3,0xef,0xf0,0xe4,0xa3,0xf0,0xa3,0xf0,0x90, +0x9e,0xa0,0xe0,0xfe,0xa3,0xe0,0xf5,0x82,0x8e,0x83,0xe0,0x60,0x2d,0xc3,0x90,0x9e, +0xa3,0xe0,0x94,0xe8,0x90,0x9e,0xa2,0xe0,0x94,0x03,0x40,0x0b,0x90,0x01,0xc6,0xe0, +0x44,0x10,0xf0,0x7f,0x00,0x80,0x15,0x90,0x9e,0xa2,0xe4,0x75,0xf0,0x01,0x12,0x42, +0x81,0x7f,0x0a,0x7e,0x00,0x12,0x32,0x15,0x80,0xc5,0x7f,0x01,0xd0,0xd0,0x92,0xaf, +0x22,0x75,0x30,0x1f,0x75,0x31,0x01,0xe4,0xf5,0x32,0x90,0x01,0x38,0xe5,0x30,0xf0, +0xa3,0xe5,0x31,0xf0,0xa3,0xe5,0x32,0xf0,0x22,0x90,0x00,0x02,0xe0,0x54,0xe0,0x90, +0x9e,0x75,0x60,0x04,0x74,0x01,0xf0,0x22,0x74,0x02,0xf0,0x22,0x90,0x00,0xf3,0xe0, +0x30,0xe3,0x08,0x90,0x9e,0x77,0x74,0x01,0xf0,0x80,0x05,0xe4,0x90,0x9e,0x77,0xf0, +0x90,0x9e,0x77,0xe0,0xb4,0x01,0x12,0x90,0x00,0xf2,0xe0,0x30,0xe7,0x0b,0x90,0x9e, +0x64,0x74,0xfd,0xf0,0xa3,0x74,0x33,0xf0,0x22,0x90,0x9e,0x64,0x74,0xfd,0xf0,0xa3, +0x74,0x2f,0xf0,0x22,0x90,0x01,0x64,0x74,0xa0,0xf0,0x22,0xc0,0xe0,0xc0,0xf0,0xc0, +0x83,0xc0,0x82,0xc0,0xd0,0x75,0xd0,0x00,0xc0,0x00,0xc0,0x01,0xc0,0x02,0xc0,0x03, +0xc0,0x04,0xc0,0x05,0xc0,0x06,0xc0,0x07,0x90,0x01,0xc4,0x74,0xfb,0xf0,0x74,0x5f, +0xa3,0xf0,0x53,0x91,0xef,0x90,0x00,0x51,0xe0,0xff,0x90,0x00,0x55,0xe0,0x5f,0xf5, +0x3d,0xe5,0x3d,0x30,0xe6,0x18,0x74,0x40,0xf0,0x90,0x9e,0x1d,0xe0,0x54,0x03,0xff, +0xbf,0x03,0x0b,0x90,0x9e,0x1a,0xe0,0x60,0x05,0x7f,0x01,0x12,0x4a,0xd6,0xe5,0x3d, +0x30,0xe7,0x15,0x90,0x00,0x55,0x74,0x80,0xf0,0x90,0x9e,0x1d,0xe0,0x54,0x03,0xff, +0xbf,0x03,0x05,0x7f,0x02,0x12,0x4a,0xd6,0x90,0x01,0xc4,0x74,0xfb,0xf0,0x74,0x5f, +0xa3,0xf0,0xd0,0x07,0xd0,0x06,0xd0,0x05,0xd0,0x04,0xd0,0x03,0xd0,0x02,0xd0,0x01, +0xd0,0x00,0xd0,0xd0,0xd0,0x82,0xd0,0x83,0xd0,0xf0,0xd0,0xe0,0x32,0x8f,0x6b,0x8c, +0x6c,0x8d,0x6d,0x22,0x8f,0x6e,0x8c,0x6f,0x8d,0x70,0x22,0xe4,0xf5,0x73,0x90,0x9e, +0x63,0xf0,0xf5,0x74,0x90,0x9e,0x60,0x74,0x0c,0xf0,0x90,0x9e,0x5e,0xf0,0xe4,0x90, +0x9e,0x61,0xf0,0x90,0x9e,0x5d,0xf0,0x90,0x9e,0x5c,0xf0,0x90,0x9e,0x5f,0x04,0xf0, +0x90,0x9e,0x50,0xf0,0xe4,0x90,0x9e,0x62,0xf0,0x90,0x9e,0x52,0xf0,0x90,0x9e,0x5a, +0x74,0x07,0xf0,0xe4,0x90,0x9e,0x51,0xf0,0x90,0x9e,0x58,0xf0,0xa3,0x74,0x02,0xf0, +0x90,0x9e,0x56,0x14,0xf0,0xa3,0x74,0x03,0xf0,0x90,0x9e,0x55,0x74,0x14,0xf0,0x90, +0x9e,0x5b,0x74,0x05,0xf0,0xe4,0x90,0x9e,0x54,0xf0,0x90,0x9e,0x4f,0xf0,0x90,0x9e, +0x76,0xf0,0x22,0xe4,0x90,0x9e,0x62,0xf0,0x90,0x9e,0x51,0xf0,0x90,0x9e,0x63,0xf0, +0x22,0x8b,0x59,0x8a,0x5a,0x89,0x5b,0x31,0x03,0xab,0x59,0xaa,0x5a,0xa9,0x5b,0x12, +0x24,0x62,0xf5,0x74,0x14,0x60,0x0e,0x14,0x60,0x1e,0x14,0x60,0x2f,0x24,0x03,0x70, +0x40,0x7f,0x01,0x80,0x3a,0xab,0x59,0xaa,0x5a,0xa9,0x5b,0x90,0x00,0x02,0x12,0x42, +0x20,0xfd,0xe4,0xff,0x31,0x72,0x80,0x27,0xab,0x59,0xaa,0x5a,0xa9,0x5b,0x90,0x00, +0x02,0x12,0x42,0x20,0xfd,0x7f,0x01,0x31,0x72,0x1f,0x80,0x13,0xab,0x59,0xaa,0x5a, +0xa9,0x5b,0x90,0x00,0x02,0x12,0x42,0x20,0xfd,0x7f,0x02,0x31,0x72,0xe4,0xff,0x31, +0xc6,0x22,0xef,0x24,0xfe,0x60,0x0b,0x04,0x70,0x22,0x90,0x9e,0x5f,0x74,0x01,0xf0, +0x80,0x16,0xed,0x70,0x0a,0x90,0x9e,0x5b,0xe0,0x90,0x9e,0x5f,0xf0,0x80,0x05,0x90, +0x9e,0x5f,0xed,0xf0,0x90,0x9e,0x5f,0xe0,0x90,0x9e,0x50,0xf0,0x22,0xd3,0x10,0xaf, +0x01,0xc3,0xc0,0xd0,0x90,0x00,0x01,0x12,0x42,0x20,0x90,0x9e,0x61,0xf0,0x90,0x00, +0x03,0x12,0x42,0x20,0x90,0x9e,0x4f,0xf0,0x12,0x24,0x62,0x65,0x74,0x60,0x02,0x31, +0x11,0xd0,0xd0,0x92,0xaf,0x22,0xef,0x64,0x01,0x70,0x30,0x7d,0x7c,0x7f,0x02,0x12, +0x31,0x2c,0x7d,0x02,0x7f,0x03,0x12,0x31,0x2c,0x90,0x01,0x57,0xe4,0xf0,0x90,0x01, +0x3c,0x74,0x02,0xf0,0x12,0x47,0x16,0xe4,0xff,0x12,0x48,0x8f,0x90,0x06,0x04,0xe0, +0x54,0x7f,0xf0,0x90,0x06,0x0a,0xe0,0x54,0xf8,0xf0,0x22,0x90,0x01,0x36,0x74,0x7c, +0xf0,0xa3,0x74,0x02,0xf0,0x7d,0x7c,0xff,0x12,0x31,0x9d,0x7d,0x02,0x7f,0x03,0x12, +0x31,0x9d,0x90,0x06,0x04,0xe0,0x44,0x80,0xf0,0x90,0x06,0x0a,0xe0,0x44,0x07,0xf0, +0x90,0x9e,0x58,0xe0,0xa3,0xe0,0x90,0x05,0x58,0xf0,0xe5,0x73,0x30,0xe0,0x1b,0x90, +0x9e,0x52,0xe0,0x70,0x1a,0xe0,0x04,0xf0,0x90,0x9e,0x5e,0xe0,0x54,0x0f,0xc3,0x94, +0x04,0x50,0x0c,0x7d,0x01,0x7f,0x04,0x02,0x47,0x1a,0xe4,0x90,0x9e,0x52,0xf0,0x22, +0x12,0x5e,0x05,0xef,0x64,0x01,0x60,0x08,0x90,0x01,0xb9,0x74,0x01,0xf0,0x80,0x52, +0x90,0x9e,0x63,0xe0,0x54,0x03,0x60,0x08,0x90,0x01,0xb9,0x74,0x02,0xf0,0x80,0x42, +0x90,0x9e,0x60,0xe0,0x54,0x0f,0xd3,0x94,0x02,0x40,0x08,0x90,0x01,0xb9,0x74,0x04, +0xf0,0x80,0x2f,0x90,0x9e,0x63,0xe0,0x30,0xe2,0x08,0x90,0x01,0xb9,0x74,0x08,0xf0, +0x80,0x20,0x90,0x9e,0x63,0xe0,0x30,0xe4,0x08,0x90,0x01,0xb9,0x74,0x10,0xf0,0x80, +0x11,0x90,0x9e,0x52,0xe0,0x60,0x08,0x90,0x01,0xb9,0x74,0x20,0xf0,0x80,0x03,0x7f, +0x01,0x22,0x90,0x01,0xb8,0x74,0x04,0xf0,0x7f,0x00,0x22,0xe5,0x12,0x60,0x08,0x90, +0x01,0xb9,0x74,0x01,0xf0,0x80,0x5e,0x90,0x9e,0x60,0xe0,0x54,0x0f,0xd3,0x94,0x01, +0x40,0x08,0x90,0x01,0xb9,0x74,0x02,0xf0,0x80,0x4b,0x90,0x02,0x87,0xe0,0x60,0x08, +0x90,0x01,0xb9,0x74,0x04,0xf0,0x80,0x3d,0x90,0x9e,0x75,0xe0,0xb4,0x02,0x10,0x90, +0x9e,0x64,0xe0,0xfe,0xa3,0xe0,0xf5,0x82,0x8e,0x83,0xe0,0x60,0x17,0x80,0x26,0x90, +0x9e,0x75,0xe0,0xb4,0x01,0x0e,0x90,0x01,0xaf,0xe0,0x60,0x08,0x90,0x01,0xb9,0x74, +0x08,0xf0,0x80,0x11,0x90,0x9e,0x54,0xe0,0x70,0x08,0x90,0x01,0xb9,0x74,0x10,0xf0, +0x80,0x03,0x7f,0x01,0x22,0x90,0x01,0xb8,0x74,0x02,0xf0,0x7f,0x00,0x22,0x90,0x06, +0x04,0xe0,0x54,0xbf,0xf0,0xef,0x60,0x09,0xe5,0x73,0xb4,0x01,0x04,0xe4,0xff,0x71, +0x4d,0x90,0x9e,0x5e,0xe0,0x54,0xf0,0xf0,0xe0,0x44,0x0c,0xf0,0x22,0x8f,0x76,0x90, +0x9e,0x5e,0xe0,0x90,0x01,0xc1,0xf0,0xa3,0xe5,0x12,0xf0,0x12,0x45,0xb1,0xef,0x64, +0x01,0x70,0x2e,0x90,0x9e,0x69,0x12,0x47,0xfa,0xe5,0x76,0x60,0x10,0x74,0x21,0x2f, +0xf5,0x82,0xe4,0x34,0xfc,0xf5,0x83,0xe0,0x44,0x10,0xf0,0x80,0x0e,0x74,0x21,0x2f, +0xf5,0x82,0xe4,0x34,0xfc,0xf5,0x83,0xe0,0x54,0xef,0xf0,0x90,0x04,0x1f,0x74,0x20, +0xf0,0x22,0x90,0x9e,0xaf,0xef,0xf0,0x71,0xb0,0x90,0x9e,0xaf,0xe0,0x60,0x05,0x90, +0x05,0x22,0xe4,0xf0,0x90,0x9e,0x5e,0xe0,0x54,0xf0,0xf0,0xe0,0x44,0x04,0xf0,0x22, +0x90,0x00,0x11,0xe0,0x44,0x09,0xf0,0x12,0x49,0xb9,0x90,0x9d,0xff,0x12,0x43,0x53, +0x90,0x80,0x96,0x12,0x25,0x08,0x7f,0x78,0x7e,0x08,0x12,0x2b,0x08,0x90,0x9e,0x03, +0x12,0x43,0x53,0x90,0x80,0x96,0x12,0x25,0x08,0x7f,0x04,0x7e,0x0c,0x12,0x2b,0x08, +0x90,0x9e,0x07,0x12,0x43,0x53,0x90,0x80,0x96,0x12,0x25,0x08,0x7f,0x00,0x7e,0x08, +0x12,0x2b,0x08,0x90,0x9e,0x0b,0x12,0x43,0x53,0x90,0x80,0x96,0x12,0x25,0x08,0x7f, +0x70,0x7e,0x0e,0x12,0x2b,0x08,0x90,0x80,0x68,0x12,0x25,0x14,0x00,0x03,0x2d,0x95, +0xe4,0xfd,0xff,0x12,0x30,0x2c,0x90,0x9e,0x77,0xe0,0xb4,0x01,0x11,0x90,0x80,0x68, +0x12,0x25,0x14,0x00,0x03,0x2d,0x95,0xe4,0xfd,0x7f,0x01,0x12,0x30,0x2c,0x22,0x8f, +0x27,0xe4,0x90,0x9e,0xa8,0xf0,0xa3,0xf0,0x90,0x01,0x09,0xe0,0x7f,0x00,0x30,0xe7, +0x02,0x7f,0x01,0xef,0x65,0x27,0x60,0x3e,0xc3,0x90,0x9e,0xa9,0xe0,0x94,0x88,0x90, +0x9e,0xa8,0xe0,0x94,0x13,0x40,0x08,0x90,0x01,0xc6,0xe0,0x44,0x80,0xf0,0x22,0x90, +0x9e,0xa8,0xe4,0x75,0xf0,0x01,0x12,0x42,0x81,0x7f,0x14,0x7e,0x00,0x12,0x32,0x15, +0xd3,0x90,0x9e,0xa9,0xe0,0x94,0x32,0x90,0x9e,0xa8,0xe0,0x94,0x00,0x40,0xb9,0x90, +0x01,0xc7,0xe0,0x30,0xe0,0xb2,0x22,0x90,0x9e,0x5e,0xe0,0x54,0xf0,0xf0,0xe0,0x44, +0x01,0xf0,0x12,0x44,0xff,0x12,0x45,0x00,0xe0,0x54,0xf0,0xf0,0xe0,0x44,0x02,0xf0, +0x22,0x90,0x9e,0x60,0xe0,0x30,0xe6,0x1c,0xe0,0x54,0x0f,0xff,0x90,0x9e,0x4e,0xe0, +0xfe,0x4f,0x90,0x01,0x2f,0xf0,0xee,0x64,0x80,0x90,0x9e,0x4e,0xf0,0x90,0x9e,0x60, +0xe0,0x54,0xbf,0xf0,0x22,0x8f,0x75,0x12,0x45,0xb1,0xef,0x64,0x01,0x70,0x2e,0x90, +0x9e,0x6a,0x12,0x47,0xfa,0xe5,0x75,0x60,0x10,0x74,0x21,0x2f,0xf5,0x82,0xe4,0x34, +0xfc,0xf5,0x83,0xe0,0x44,0x10,0xf0,0x80,0x0e,0x74,0x21,0x2f,0xf5,0x82,0xe4,0x34, +0xfc,0xf5,0x83,0xe0,0x54,0xef,0xf0,0x90,0x04,0x1f,0x74,0x20,0xf0,0x22,0xe4,0x90, +0x9e,0x2f,0xf0,0xe5,0x74,0x60,0x6a,0xe5,0x73,0x64,0x01,0x70,0x64,0xe5,0x74,0x14, +0x60,0x29,0x24,0xfd,0x60,0x25,0x24,0x02,0x24,0xfb,0x50,0x02,0x80,0x23,0x90,0x9e, +0x50,0xe0,0x14,0xf0,0xe0,0x60,0x04,0xa3,0xe0,0x60,0x16,0x90,0x9e,0x50,0xe0,0x70, +0x0a,0x90,0x9e,0x5f,0xe0,0x90,0x9e,0x50,0xf0,0x80,0x00,0x90,0x9e,0x2f,0x74,0x01, +0xf0,0x90,0x9e,0x2f,0xe0,0x60,0x2a,0x90,0x9e,0x63,0xe0,0x44,0x10,0xf0,0xe4,0x90, +0x9e,0x89,0xf0,0x90,0x9e,0x5a,0x12,0x44,0x56,0x90,0x01,0x57,0x74,0x05,0xf0,0x90, +0x9e,0x5e,0xe0,0x54,0x0f,0xc3,0x94,0x04,0x50,0x07,0x7d,0x01,0x7f,0x04,0x12,0x47, +0x1a,0x22,0xef,0xc3,0x94,0x20,0x50,0x39,0xef,0x30,0xe0,0x17,0xed,0xc4,0x54,0xf0, +0xfd,0xef,0xc3,0x13,0xfe,0x24,0xa4,0xf5,0x82,0xe4,0x34,0x04,0xf5,0x83,0xe0,0x54, +0x0f,0x80,0x10,0xef,0xc3,0x13,0xfe,0x24,0xa4,0xf5,0x82,0xe4,0x34,0x04,0xf5,0x83, +0xe0,0x54,0xf0,0xf0,0x74,0xa4,0x2e,0xf5,0x82,0xe4,0x34,0x04,0xf5,0x83,0xe0,0x4d, +0xf0,0x22,0xad,0x07,0xed,0xc3,0x94,0x20,0x50,0x0d,0x74,0x84,0x2d,0xf5,0x82,0xe4, +0x34,0x04,0xf5,0x83,0xe0,0x80,0x0b,0x74,0xa6,0x2d,0xf5,0x82,0xe4,0x34,0x9c,0xf5, +0x83,0xe0,0x54,0x7f,0xf5,0x64,0xe5,0x64,0x54,0x1f,0xfc,0x75,0xf0,0x09,0xed,0x90, +0x96,0x48,0x12,0x43,0x5f,0xe0,0xff,0x90,0x9e,0x3e,0xf0,0xed,0x25,0xe0,0x24,0x02, +0xf5,0x82,0xe4,0x34,0x95,0xf5,0x83,0xe0,0xfb,0xa3,0xe0,0x90,0x9e,0x3f,0xcb,0xf0, +0xa3,0xeb,0xf0,0xed,0x25,0xe0,0x24,0xc6,0xf5,0x82,0xe4,0x34,0x9b,0xf5,0x83,0xe0, +0xfb,0xa3,0xe0,0x90,0x9e,0x41,0xcb,0xf0,0xa3,0xeb,0xf0,0xec,0x25,0xe0,0x24,0x66, +0xf5,0x82,0xe4,0x34,0x41,0xf5,0x83,0xe4,0x93,0xfa,0x74,0x01,0x93,0xfb,0xed,0x25, +0xe0,0x24,0xc2,0xf5,0x82,0xe4,0x34,0x95,0xf5,0x83,0xea,0xf0,0xa3,0xeb,0xf0,0xec, +0xc3,0x9f,0x40,0x02,0xc1,0xc9,0x74,0x67,0x2d,0xf5,0x82,0xe4,0x34,0x9d,0xf5,0x83, +0xec,0xf0,0x04,0xfb,0x90,0x9e,0x3e,0xe0,0xff,0xeb,0xd3,0x9f,0x40,0x02,0xc1,0xfa, +0xeb,0xc3,0x94,0x10,0x40,0x21,0xeb,0x24,0xf0,0xff,0x74,0x01,0x7e,0x00,0xa8,0x07, +0x08,0x80,0x05,0xc3,0x33,0xce,0x33,0xce,0xd8,0xf9,0xff,0x90,0x9e,0x3f,0xe0,0x5e, +0xfe,0xa3,0xe0,0x5f,0x4e,0x70,0x23,0xeb,0xc3,0x94,0x10,0x50,0x39,0x74,0x01,0x7e, +0x00,0xa8,0x03,0x08,0x80,0x05,0xc3,0x33,0xce,0x33,0xce,0xd8,0xf9,0xff,0x90,0x9e, +0x41,0xe0,0x5e,0xfe,0xa3,0xe0,0x5f,0x4e,0x60,0x1c,0xeb,0x64,0x13,0x60,0x08,0xeb, +0x64,0x12,0x60,0x03,0xbb,0x11,0x09,0x90,0x9e,0x3f,0xe0,0x30,0xe0,0x02,0x7b,0x18, +0xac,0x03,0x8c,0x64,0x80,0x34,0x0b,0x80,0x8b,0x90,0x9e,0x3e,0xe0,0xfb,0x6c,0x70, +0x69,0x74,0x67,0x2d,0xf5,0x82,0xe4,0x34,0x9d,0xf5,0x83,0xec,0xf0,0x75,0xf0,0x09, +0xed,0x90,0x96,0x4a,0x12,0x43,0x5f,0xe0,0xb4,0x01,0x0c,0xe5,0x64,0x20,0xe6,0x07, +0xec,0x44,0x40,0xf5,0x64,0x80,0x03,0xaf,0x64,0x22,0xec,0x25,0xe0,0x24,0x9e,0xf5, +0x82,0xe4,0x34,0x41,0xf5,0x83,0xe4,0x93,0xfe,0x74,0x01,0x93,0xff,0xec,0x25,0xe0, +0x24,0x66,0xf5,0x82,0xe4,0x34,0x41,0xf5,0x83,0x74,0x01,0x93,0x2f,0xff,0xe4,0x93, +0x3e,0xc3,0x13,0xfe,0xef,0x13,0xff,0xed,0x25,0xe0,0x24,0xc2,0xf5,0x82,0xe4,0x34, +0x95,0xf5,0x83,0xee,0xf0,0xa3,0xef,0xf0,0x80,0x5b,0xec,0xd3,0x9b,0x40,0x56,0x90, +0x9e,0x3e,0xe0,0xff,0x74,0x67,0x2d,0xf5,0x82,0xe4,0x34,0x9d,0xf5,0x83,0xef,0xf0, +0xac,0x07,0x8f,0x64,0xec,0x25,0xe0,0x24,0x9e,0xf5,0x82,0xe4,0x34,0x41,0xf5,0x83, +0xe4,0x93,0xfe,0x74,0x01,0x93,0xff,0xec,0x25,0xe0,0x24,0x66,0xf5,0x82,0xe4,0x34, +0x41,0xf5,0x83,0x74,0x01,0x93,0x2f,0xff,0xe4,0x93,0x3e,0xc3,0x13,0xfe,0xef,0x13, +0xff,0xed,0x25,0xe0,0x24,0xc2,0xf5,0x82,0xe4,0x34,0x95,0xf5,0x83,0xee,0xf0,0xa3, +0xef,0xf0,0xaf,0x64,0x22,0x74,0x01,0x2d,0xf5,0x82,0xe4,0x34,0x94,0xf5,0x83,0xe4, +0xf0,0xaf,0x05,0xe5,0x64,0x44,0x80,0xfd,0x12,0x58,0xf1,0xe5,0x64,0x44,0x80,0xff, +0x22,0xac,0x07,0xec,0xc3,0x94,0x20,0x50,0x0d,0x74,0x84,0x2c,0xf5,0x82,0xe4,0x34, +0x04,0xf5,0x83,0xe0,0x80,0x0b,0x74,0xa6,0x2c,0xf5,0x82,0xe4,0x34,0x9c,0xf5,0x83, +0xe0,0x54,0x7f,0xf5,0x64,0xe5,0x64,0x54,0x1f,0xff,0x90,0x9e,0x40,0xf0,0x75,0xf0, +0x09,0xec,0x90,0x96,0x49,0x12,0x43,0x5f,0xe0,0x90,0x9e,0x42,0xf0,0x75,0xf0,0x09, +0xec,0x90,0x96,0x48,0x12,0x43,0x5f,0xe0,0xfe,0x90,0x9e,0x43,0xf0,0xec,0x25,0xe0, +0x24,0xc6,0xf5,0x82,0xe4,0x34,0x9b,0xf5,0x83,0xe0,0xfb,0xa3,0xe0,0x90,0x9e,0x44, +0xcb,0xf0,0xa3,0xeb,0xf0,0xec,0x25,0xe0,0x24,0x02,0xf5,0x82,0xe4,0x34,0x95,0xf5, +0x83,0xe0,0xfb,0xa3,0xe0,0x90,0x9e,0x46,0xcb,0xf0,0xa3,0xeb,0xf0,0xef,0xd3,0x9e, +0x40,0x0a,0x90,0x9e,0x43,0xe0,0x90,0x9e,0x40,0xf0,0xf5,0x64,0xed,0x70,0x02,0x21, +0x07,0x90,0x9e,0x41,0xed,0xf0,0xe5,0x64,0x30,0xe6,0x0a,0x90,0x9e,0x40,0xe0,0xf5, +0x64,0xa3,0xe0,0x14,0xf0,0x90,0x9e,0x41,0xe0,0x70,0x02,0x21,0x07,0x90,0x9e,0x40, +0xe0,0xff,0xd3,0x94,0x00,0x50,0x02,0x21,0x07,0xe4,0x90,0x9e,0x3f,0xf0,0xef,0x14, +0x90,0x9e,0x3e,0xf0,0x90,0x9e,0x42,0xe0,0xfd,0x90,0x9e,0x3e,0xe0,0xff,0xd3,0x9d, +0x40,0x6b,0xef,0x94,0x10,0x40,0x21,0xef,0x24,0xf0,0xff,0x74,0x01,0x7e,0x00,0xa8, +0x07,0x08,0x80,0x05,0xc3,0x33,0xce,0x33,0xce,0xd8,0xf9,0xff,0x90,0x9e,0x46,0xe0, +0x5e,0xfe,0xa3,0xe0,0x5f,0x4e,0x70,0x27,0x90,0x9e,0x3e,0xe0,0xff,0xc3,0x94,0x10, +0x50,0x33,0x74,0x01,0x7e,0x00,0xa8,0x07,0x08,0x80,0x05,0xc3,0x33,0xce,0x33,0xce, +0xd8,0xf9,0xff,0x90,0x9e,0x44,0xe0,0x5e,0xfe,0xa3,0xe0,0x5f,0x4e,0x60,0x16,0x90, +0x9e,0x3e,0xe0,0xf5,0x64,0xa3,0xe0,0x04,0xf0,0x90,0x9e,0x41,0xe0,0xff,0x90,0x9e, +0x3f,0xe0,0x6f,0x60,0x08,0x90,0x9e,0x3e,0xe0,0x14,0xf0,0x80,0x87,0x90,0x9e,0x41, +0xe0,0xff,0x90,0x9e,0x3f,0xe0,0xc3,0x9f,0x50,0x0d,0x90,0x9e,0x3e,0xe0,0xb5,0x05, +0x06,0x90,0x9e,0x42,0xe0,0xf5,0x64,0xe5,0x64,0x25,0xe0,0x24,0x9e,0xf5,0x82,0xe4, +0x34,0x41,0xf5,0x83,0xe4,0x93,0xfe,0x74,0x01,0x93,0xff,0xe5,0x64,0x25,0xe0,0x24, +0x66,0xf5,0x82,0xe4,0x34,0x41,0xf5,0x83,0x74,0x01,0x93,0x2f,0xff,0xe4,0x93,0x3e, +0xc3,0x13,0xfe,0xef,0x13,0xff,0xec,0x25,0xe0,0x24,0xc2,0xf5,0x82,0xe4,0x34,0x95, +0xf5,0x83,0xee,0xf0,0xa3,0xef,0xf0,0xaf,0x04,0xad,0x64,0x12,0x58,0xf1,0xaf,0x64, +0x22,0xe4,0xf5,0x59,0xe5,0x59,0xb4,0x20,0x14,0x90,0x9a,0xc5,0xe0,0x04,0xf0,0x90, +0x95,0x01,0xe0,0xff,0x90,0x9a,0xc5,0xe0,0xb5,0x07,0x02,0xe4,0xf0,0x75,0xf0,0x09, +0xe5,0x59,0x90,0x96,0x4b,0x12,0x43,0x5f,0xe0,0x64,0x01,0x60,0x02,0xe1,0x95,0xe5, +0x59,0x25,0xe0,0x24,0x80,0xf5,0x82,0xe4,0x34,0x93,0xf5,0x83,0xe0,0xfe,0xa3,0xe0, +0xd3,0x94,0x00,0xee,0x94,0x00,0x50,0x02,0xe1,0x95,0xe5,0x59,0x94,0x20,0x40,0x08, +0x90,0x9a,0xc5,0xe0,0x60,0x02,0xe1,0xa0,0xe5,0x59,0x75,0xf0,0x0a,0xa4,0x24,0x00, +0xf9,0x74,0x90,0x35,0xf0,0x75,0x5e,0x01,0xf5,0x5f,0x89,0x60,0xe5,0x59,0x25,0xe0, +0x24,0x80,0xf5,0x82,0xe4,0x34,0x93,0xf5,0x83,0xe0,0xff,0xa3,0xe0,0x90,0x9e,0x38, +0xcf,0xf0,0xa3,0xef,0xf0,0xe5,0x59,0x25,0xe0,0x24,0xc4,0xf5,0x82,0xe4,0x34,0x98, +0xf5,0x83,0xe0,0xff,0xa3,0xe0,0x90,0x9e,0x3a,0xcf,0xf0,0xa3,0xef,0xf0,0xe5,0x59, +0xc3,0x94,0x20,0x50,0x14,0x74,0x84,0x25,0x59,0xf5,0x82,0xe4,0x34,0x04,0xf5,0x83, +0xe0,0x54,0x3f,0x90,0x9e,0x34,0xf0,0x80,0x12,0x74,0xa6,0x25,0x59,0xf5,0x82,0xe4, +0x34,0x9c,0xf5,0x83,0xe0,0x54,0x3f,0x90,0x9e,0x34,0xf0,0x90,0x9e,0x34,0xe0,0xfe, +0x54,0x1f,0xa3,0xf0,0x75,0xf0,0x09,0xe5,0x59,0x90,0x96,0x48,0x12,0x43,0x5f,0xe0, +0x90,0x9e,0x3d,0xf0,0x74,0xe6,0x25,0x59,0xf5,0x82,0xe4,0x34,0x9c,0xf5,0x83,0xe0, +0xc3,0x94,0x05,0x40,0x02,0x81,0x6e,0x90,0x9e,0x3d,0xe0,0xff,0x90,0x9e,0x35,0xe0, +0x9f,0x40,0x13,0x90,0x9e,0x3d,0xe0,0x90,0x9e,0x35,0xf0,0xee,0x54,0x40,0xfe,0x90, +0x9e,0x34,0xf0,0xef,0x4e,0xf0,0x90,0x04,0xfd,0xe0,0x64,0x01,0x70,0x29,0x90,0x9e, +0x35,0xe0,0xff,0x90,0x41,0x4a,0x93,0xfe,0x74,0x44,0x25,0x59,0xf5,0x82,0xe4,0x34, +0x9a,0xf5,0x83,0xe0,0xc3,0x9e,0x40,0x06,0xef,0x90,0x40,0xda,0x80,0x30,0x90,0x9e, +0x35,0xe0,0x90,0x40,0xf6,0x80,0x27,0x90,0x9e,0x35,0xe0,0xff,0x90,0x41,0x4a,0x93, +0xfe,0x74,0x44,0x25,0x59,0xf5,0x82,0xe4,0x34,0x9a,0xf5,0x83,0xe0,0xc3,0x9e,0x40, +0x06,0xef,0x90,0x41,0x12,0x80,0x07,0x90,0x9e,0x35,0xe0,0x90,0x41,0x2e,0x93,0x90, +0x9e,0x3c,0xf0,0x90,0x9e,0x3c,0xe0,0x75,0xf0,0x06,0xa4,0x24,0x50,0xf9,0x74,0x40, +0x35,0xf0,0x75,0x5b,0xff,0xf5,0x5c,0x89,0x5d,0x90,0x9e,0x34,0xe0,0x90,0x41,0xf2, +0x93,0xff,0xd3,0x90,0x9e,0x3b,0xe0,0x9f,0x90,0x9e,0x3a,0xe0,0x94,0x00,0x40,0x09, +0xe4,0xfd,0xaf,0x59,0x12,0x67,0xb1,0xe1,0x2c,0xe5,0x59,0x25,0xe0,0x24,0xc2,0xf5, +0x82,0xe4,0x34,0x95,0xf5,0x83,0xe0,0xf5,0x61,0xa3,0xe0,0xf5,0x62,0xab,0x5b,0xaa, +0x5c,0xa9,0x5d,0x12,0x24,0x62,0xff,0x7e,0x00,0xab,0x5e,0xaa,0x5f,0xa9,0x60,0x12, +0x42,0x97,0xfd,0xac,0xf0,0x12,0x24,0x7b,0xef,0x25,0x62,0xf5,0x62,0xee,0x35,0x61, +0xf5,0x61,0xab,0x5b,0xaa,0x5c,0xa9,0x5d,0x90,0x00,0x01,0x12,0x42,0x20,0xff,0x7e, +0x00,0xab,0x5e,0xaa,0x5f,0xa9,0x60,0x90,0x00,0x02,0x12,0x42,0xc2,0xfd,0xac,0xf0, +0x12,0x24,0x7b,0xef,0x25,0x62,0xf5,0x62,0xee,0x35,0x61,0xf5,0x61,0xab,0x5b,0xaa, +0x5c,0xa9,0x5d,0x90,0x00,0x02,0x12,0x42,0x20,0xff,0x7e,0x00,0xab,0x5e,0xaa,0x5f, +0xa9,0x60,0x90,0x00,0x04,0x12,0x42,0xc2,0xfd,0xac,0xf0,0x12,0x24,0x7b,0xef,0x25, +0x62,0xf5,0x62,0xee,0x35,0x61,0xf5,0x61,0xab,0x5b,0xaa,0x5c,0xa9,0x5d,0x90,0x00, +0x03,0x12,0x42,0x20,0xff,0x7e,0x00,0xab,0x5e,0xaa,0x5f,0xa9,0x60,0x90,0x00,0x06, +0x12,0x42,0xc2,0xfd,0xac,0xf0,0x12,0x24,0x7b,0xef,0x25,0x62,0xf5,0x62,0xee,0x35, +0x61,0xf5,0x61,0xab,0x5b,0xaa,0x5c,0xa9,0x5d,0x90,0x00,0x04,0x12,0x42,0x20,0xff, +0x7e,0x00,0xab,0x5e,0xaa,0x5f,0xa9,0x60,0x90,0x00,0x08,0x12,0x42,0xc2,0xfd,0xac, +0xf0,0x12,0x24,0x7b,0xef,0x25,0x62,0xf5,0x62,0xee,0x35,0x61,0xf5,0x61,0xab,0x5b, +0xaa,0x5c,0xa9,0x5d,0x90,0x00,0x05,0x12,0x42,0x20,0xff,0x7e,0x00,0x90,0x9e,0x38, +0xe0,0xfc,0xa3,0xe0,0xfd,0x12,0x24,0x7b,0xd3,0xe5,0x62,0x9f,0xe5,0x61,0x9e,0x40, +0x0c,0xe5,0x62,0x9f,0xf5,0x62,0xe5,0x61,0x9e,0xf5,0x61,0x80,0x05,0xe4,0xf5,0x61, +0xf5,0x62,0xe5,0x59,0x25,0xe0,0x24,0xc2,0xf5,0x82,0xe4,0x34,0x95,0xf5,0x83,0xe5, +0x61,0xf0,0xa3,0xe5,0x62,0xf0,0x90,0x9e,0x34,0xe0,0x25,0xe0,0x24,0x66,0xf5,0x82, +0xe4,0x34,0x41,0xf5,0x83,0xc3,0x74,0x01,0x93,0x95,0x62,0xe4,0x93,0x95,0x61,0x50, +0x07,0xaf,0x59,0x12,0x65,0xb2,0xe1,0x00,0x90,0x9e,0x34,0xe0,0x25,0xe0,0x24,0x9e, +0xf5,0x82,0xe4,0x34,0x41,0xf5,0x83,0xd3,0x74,0x01,0x93,0x95,0x62,0xe4,0x93,0x95, +0x61,0x50,0x02,0xe1,0x00,0x7d,0x01,0xaf,0x59,0x12,0x67,0xb1,0xe1,0x00,0x74,0xe6, +0x25,0x59,0xf5,0x82,0xe4,0x34,0x9c,0xf5,0x83,0xe0,0xfc,0x64,0x05,0x60,0x02,0xc1, +0x09,0x90,0x96,0x43,0xe0,0xff,0xb4,0x03,0x0b,0x90,0x9e,0x35,0xe0,0xc3,0x94,0x19, +0x40,0x3d,0x80,0x2e,0xef,0xb4,0x02,0x0b,0x90,0x9e,0x35,0xe0,0xc3,0x94,0x11,0x40, +0x2e,0x80,0x1f,0x90,0x96,0x43,0xe0,0xff,0xb4,0x01,0x0b,0x90,0x9e,0x35,0xe0,0xc3, +0x94,0x0a,0x40,0x1b,0x80,0x0c,0xef,0x70,0x11,0x90,0x9e,0x35,0xe0,0xc3,0x94,0x03, +0x40,0x0d,0x90,0x9a,0x84,0x74,0x01,0xf0,0x80,0x05,0xe4,0x90,0x9a,0x84,0xf0,0x74, +0x84,0x25,0x59,0xf5,0x82,0xe4,0x34,0x98,0xf5,0x83,0xe0,0xf5,0x63,0x74,0x44,0x25, +0x59,0xf5,0x82,0xe4,0x34,0x9a,0xf5,0x83,0xe0,0xff,0xc3,0x94,0x30,0x50,0x02,0xa1, +0xb6,0x90,0x9a,0x84,0xe0,0x64,0x01,0x60,0x02,0xa1,0xb6,0x74,0x85,0x25,0x59,0xf5, +0x82,0xe4,0x34,0x9a,0xf5,0x83,0xe0,0x64,0x0a,0x60,0x51,0xef,0x24,0x05,0xff,0xe4, +0x33,0xfe,0x74,0x41,0x25,0x59,0xf5,0x82,0xe4,0x34,0x94,0xf5,0x83,0xe0,0xfd,0xd3, +0x9f,0xee,0x64,0x80,0xf8,0x74,0x80,0x98,0x50,0x32,0xed,0x24,0x05,0xff,0xe4,0x33, +0xfe,0x74,0x44,0x25,0x59,0xf5,0x82,0xe4,0x34,0x9a,0xf5,0x83,0xe0,0xd3,0x9f,0xee, +0x64,0x80,0xf8,0x74,0x80,0x98,0x50,0x14,0x74,0x26,0x25,0x59,0xf5,0x82,0xe4,0x34, +0x9d,0xf5,0x83,0xe0,0xff,0x90,0x9e,0x35,0xe0,0x6f,0x60,0x3d,0x74,0x44,0x25,0x59, +0xf5,0x82,0xe4,0x34,0x9a,0xf5,0x83,0xe0,0xff,0xd3,0x94,0x42,0x40,0x05,0x75,0x63, +0x05,0x80,0x0e,0xef,0xd3,0x94,0x39,0x40,0x05,0x75,0x63,0x03,0x80,0x03,0x75,0x63, +0x01,0x74,0x41,0x25,0x59,0xf5,0x82,0xe4,0x34,0x94,0xf5,0x83,0xef,0xf0,0x74,0x85, +0x25,0x59,0xf5,0x82,0xe4,0x34,0x9a,0x80,0x29,0x74,0xe6,0x25,0x59,0xf5,0x82,0xe4, +0x34,0x9c,0xf5,0x83,0xe4,0xf0,0x74,0x85,0x25,0x59,0xf5,0x82,0xe4,0x34,0x9a,0xf5, +0x83,0xe0,0x04,0xf0,0x80,0x10,0xe4,0xf5,0x63,0x74,0xe6,0x25,0x59,0xf5,0x82,0xe4, +0x34,0x9c,0xf5,0x83,0xe4,0xf0,0x90,0x9e,0x35,0xe0,0xff,0x74,0x26,0x25,0x59,0xf5, +0x82,0xe4,0x34,0x9d,0xf5,0x83,0xef,0xf0,0x74,0x84,0x25,0x59,0xf5,0x82,0xe4,0x34, +0x98,0xf5,0x83,0xe5,0x63,0xf0,0x75,0xf0,0x09,0xe5,0x59,0x90,0x96,0x4c,0x12,0x43, +0x5f,0xe0,0xb4,0x01,0x10,0xe4,0xf5,0x63,0x74,0xe6,0x25,0x59,0xf5,0x82,0xe4,0x34, +0x9c,0xf5,0x83,0xe4,0xf0,0xad,0x63,0xc1,0xfb,0xec,0x64,0x06,0x60,0x02,0xe1,0x00, +0xf5,0x61,0xf5,0x62,0x90,0x42,0x13,0x93,0xff,0x7e,0x00,0x90,0x9e,0x38,0xe0,0xfc, +0xa3,0xe0,0xfd,0x12,0x24,0x7b,0x90,0x9e,0x36,0xee,0xf0,0xa3,0xef,0xf0,0x74,0x84, +0x25,0x59,0xf5,0x82,0xe4,0x34,0x98,0xf5,0x83,0xe0,0xf5,0x63,0xe4,0xf5,0x5a,0xab, +0x5e,0xaa,0x5f,0xa9,0x60,0x75,0xf0,0x02,0xe5,0x5a,0xa4,0xf5,0x82,0x85,0xf0,0x83, +0x12,0x42,0xc2,0xfd,0xac,0xf0,0xe5,0x5a,0x90,0x42,0x0e,0x93,0xff,0x7e,0x00,0x12, +0x24,0x7b,0xef,0x25,0x62,0xf5,0x62,0xee,0x35,0x61,0xf5,0x61,0xc3,0x90,0x9e,0x37, +0xe0,0x95,0x62,0x90,0x9e,0x36,0xe0,0x95,0x61,0x40,0x07,0x05,0x5a,0xe5,0x5a,0xb4, +0x05,0xbd,0xe5,0x5a,0xc3,0x13,0xf5,0x5a,0xe5,0x63,0xb4,0x01,0x06,0xe5,0x5a,0x70, +0x46,0x80,0x13,0xe5,0x63,0xb4,0x03,0x15,0xe5,0x5a,0x70,0x05,0x75,0x63,0x03,0x80, +0x39,0xe5,0x5a,0xb4,0x01,0x05,0x75,0x63,0x01,0x80,0x2f,0x80,0x2a,0xe5,0x63,0xb4, +0x05,0x28,0xe5,0x5a,0x70,0x05,0x75,0x63,0x05,0x80,0x0d,0xe5,0x5a,0xb4,0x01,0x05, +0x75,0x63,0x03,0x80,0x03,0x75,0x63,0x01,0xd3,0x90,0x9e,0x3b,0xe0,0x94,0x03,0x90, +0x9e,0x3a,0xe0,0x94,0x00,0x40,0x03,0xe4,0xf5,0x63,0xd3,0x90,0x9e,0x3b,0xe0,0x94, +0x03,0x90,0x9e,0x3a,0xe0,0x94,0x00,0x40,0x03,0xe4,0xf5,0x63,0x74,0x84,0x25,0x59, +0xf5,0x82,0xe4,0x34,0x98,0xf5,0x83,0xe5,0x63,0xf0,0xfd,0xaf,0x59,0x12,0x65,0x72, +0x74,0xe6,0x25,0x59,0xf5,0x82,0xe4,0x34,0x9c,0xf5,0x83,0xe0,0xd3,0x94,0x05,0x74, +0xe6,0x50,0x0e,0x25,0x59,0xf5,0x82,0xe4,0x34,0x9c,0xf5,0x83,0xe0,0x04,0xf0,0x80, +0x0b,0x25,0x59,0xf5,0x82,0xe4,0x34,0x9c,0xf5,0x83,0xe4,0xf0,0xab,0x5e,0xaa,0x5f, +0xa9,0x60,0xe4,0xf5,0xf0,0x12,0x42,0xfa,0xab,0x5e,0xaa,0x5f,0xa9,0x60,0x90,0x00, +0x02,0xe4,0xf5,0xf0,0x12,0x43,0x19,0x90,0x00,0x04,0xe4,0xf5,0xf0,0x12,0x43,0x19, +0x90,0x00,0x06,0xe4,0xf5,0xf0,0x12,0x43,0x19,0x90,0x00,0x08,0xe4,0xf5,0xf0,0x12, +0x43,0x19,0xe5,0x59,0x25,0xe0,0x24,0x80,0xf5,0x82,0xe4,0x34,0x93,0xf5,0x83,0xe4, +0xf0,0xa3,0xf0,0xe5,0x59,0x25,0xe0,0x24,0xc4,0xf5,0x82,0xe4,0x34,0x98,0xf5,0x83, +0xe4,0xf0,0xa3,0xf0,0xe5,0x59,0x25,0xe0,0x24,0x44,0xf5,0x82,0xe4,0x34,0x99,0xf5, +0x83,0xe4,0xf0,0xa3,0xf0,0x05,0x59,0xe5,0x59,0xc3,0x94,0x40,0x50,0x02,0x21,0x54, +0x22,0x90,0x04,0x44,0x74,0x11,0xf0,0xa3,0x74,0xf0,0xf0,0xa3,0x74,0x0f,0xf0,0xa3, +0xe4,0xf0,0xfd,0x74,0xa4,0x2d,0xf5,0x82,0xe4,0x34,0x04,0xf5,0x83,0xe4,0xf0,0x0d, +0xbd,0x10,0xf0,0xe4,0x90,0x9a,0xc5,0xf0,0x90,0x95,0x01,0x04,0xf0,0xe4,0xfd,0x75, +0xf0,0x0a,0xed,0x90,0x90,0x00,0x12,0x43,0x5f,0xe4,0xf0,0xa3,0xf0,0x75,0xf0,0x0a, +0xed,0x90,0x90,0x02,0x12,0x43,0x5f,0xe4,0xf0,0xa3,0xf0,0x75,0xf0,0x0a,0xed,0x90, +0x90,0x04,0x12,0x43,0x5f,0xe4,0xf0,0xa3,0xf0,0x75,0xf0,0x0a,0xed,0x90,0x90,0x06, +0x12,0x43,0x5f,0xe4,0xf0,0xa3,0xf0,0x75,0xf0,0x0a,0xed,0x90,0x90,0x08,0x12,0x43, +0x5f,0xe4,0xf0,0xa3,0xf0,0x74,0x26,0x2d,0xf5,0x82,0xe4,0x34,0x9d,0xf5,0x83,0x74, +0x13,0xf0,0x74,0x85,0x2d,0xf5,0x82,0xe4,0x34,0x9a,0xf5,0x83,0xe4,0xf0,0x74,0x84, +0x2d,0xf5,0x82,0xe4,0x34,0x98,0xf5,0x83,0xe4,0xf0,0xed,0x25,0xe0,0x24,0x80,0xf5, +0x82,0xe4,0x34,0x93,0xf5,0x83,0xe4,0xf0,0xa3,0xf0,0xed,0x25,0xe0,0x24,0xc4,0xf5, +0x82,0xe4,0x34,0x98,0xf5,0x83,0xe4,0xf0,0xa3,0xf0,0xed,0x25,0xe0,0x24,0xc4,0xf5, +0x82,0xe4,0x34,0x99,0xf5,0x83,0xe4,0xf0,0xa3,0xf0,0xed,0x25,0xe0,0x24,0x44,0xf5, +0x82,0xe4,0x34,0x99,0xf5,0x83,0xe4,0xf0,0xa3,0xf0,0xed,0x25,0xe0,0x24,0xc6,0xf5, +0x82,0xe4,0x34,0x9a,0xf5,0x83,0xe4,0xf0,0xa3,0xf0,0xed,0x25,0xe0,0x24,0x46,0xf5, +0x82,0xe4,0x34,0x9b,0xf5,0x83,0xe4,0xf0,0xa3,0xf0,0x74,0x86,0x2d,0xf5,0x82,0xe4, +0x34,0x9c,0xf5,0x83,0xe4,0xf0,0x74,0x46,0x2d,0xf5,0x82,0xe4,0x34,0x9c,0xf5,0x83, +0xe4,0xf0,0x74,0xe6,0x2d,0xf5,0x82,0xe4,0x34,0x9c,0xf5,0x83,0xe4,0xf0,0x90,0x41, +0xc4,0x93,0xfe,0x74,0x01,0x93,0xff,0x90,0x41,0x8c,0x74,0x01,0x93,0x2f,0xff,0xe4, +0x93,0x3e,0xc3,0x13,0xfe,0xef,0x13,0xff,0xed,0x25,0xe0,0x24,0xc2,0xf5,0x82,0xe4, +0x34,0x95,0xf5,0x83,0xee,0xf0,0xa3,0xef,0xf0,0x75,0xf0,0x09,0xed,0x90,0x96,0x4b, +0x12,0x43,0x5f,0x74,0x01,0xf0,0x75,0xf0,0x09,0xed,0x90,0x96,0x4a,0x12,0x43,0x5f, +0x74,0x01,0xf0,0x74,0x82,0x2d,0xf5,0x82,0xe4,0x34,0x95,0xf5,0x83,0x74,0x0c,0xf0, +0x75,0xf0,0x09,0xed,0x90,0x96,0x46,0x12,0x43,0x5f,0x74,0xff,0xf0,0xa3,0xf0,0x75, +0xf0,0x09,0xed,0x90,0x96,0x44,0x12,0x43,0x5f,0xe4,0xf0,0xa3,0x74,0x0f,0xf0,0x75, +0xf0,0x09,0xed,0x90,0x96,0x48,0x12,0x43,0x5f,0x74,0x13,0xf0,0x75,0xf0,0x09,0xed, +0x90,0x96,0x49,0x12,0x43,0x5f,0xe4,0xf0,0xed,0xc3,0x94,0x20,0x50,0x0f,0x74,0x84, +0x2d,0xf5,0x82,0xe4,0x34,0x04,0xf5,0x83,0x74,0x13,0xf0,0x80,0x0d,0x74,0xa6,0x2d, +0xf5,0x82,0xe4,0x34,0x9c,0xf5,0x83,0x74,0x13,0xf0,0x0d,0xed,0x64,0x40,0x60,0x03, +0x02,0x6f,0xcf,0x22,0x12,0x24,0x62,0xf5,0x59,0xc3,0x94,0x40,0x50,0x15,0x90,0x00, +0x02,0x12,0x42,0x20,0xff,0x74,0x44,0x25,0x59,0xf5,0x82,0xe4,0x34,0x9a,0xf5,0x83, +0xef,0xf0,0x22,0xe5,0x59,0xb4,0x40,0x0a,0x90,0x00,0x02,0x12,0x42,0x20,0x90,0x96, +0x42,0xf0,0x22,0x90,0x00,0x04,0x12,0x42,0x20,0xff,0x54,0x3f,0xfe,0xef,0x54,0x80, +0xc4,0x13,0x13,0x13,0x54,0x01,0xfd,0xaf,0x06,0x02,0x53,0xa4,0x12,0x24,0x62,0x90, +0x95,0x01,0xf0,0x22,0x12,0x24,0x62,0xf5,0x73,0x22,0x90,0x00,0x02,0x12,0x42,0x20, +0xff,0x30,0xe0,0x25,0x12,0x24,0x62,0x90,0x9e,0x56,0xf0,0x90,0x00,0x01,0x12,0x42, +0x20,0x90,0x9e,0x57,0xf0,0xef,0xc3,0x13,0x54,0x7f,0x90,0x9e,0x55,0xf0,0x90,0x00, +0x03,0x12,0x42,0x20,0x90,0x9e,0x5b,0xf0,0x22,0x90,0x9e,0x56,0x74,0x01,0xf0,0x90, +0x9e,0x57,0x74,0x03,0xf0,0x90,0x9e,0x55,0x74,0x14,0xf0,0x90,0x9e,0x5b,0x74,0x05, +0xf0,0x22,0x12,0x24,0x62,0x30,0xe0,0x18,0xc3,0x13,0x54,0x7f,0x90,0x9e,0x5a,0xf0, +0x90,0x00,0x01,0x12,0x42,0x20,0xff,0x90,0x9e,0x58,0xe4,0xf0,0xa3,0xef,0xf0,0x22, +0x90,0x9e,0x5a,0x74,0x07,0xf0,0x90,0x9e,0x58,0xe4,0xf0,0xa3,0x74,0x02,0xf0,0x22, +0x90,0x02,0x09,0xe0,0xfd,0x12,0x24,0x62,0xfe,0xaf,0x05,0xed,0x2e,0x90,0x9e,0x67, +0xf0,0x90,0x00,0x01,0x12,0x42,0x20,0xff,0xed,0x2f,0x90,0x9e,0x68,0xf0,0x90,0x00, +0x02,0x12,0x42,0x20,0xff,0xed,0x2f,0x90,0x9e,0x69,0xf0,0x90,0x00,0x03,0x12,0x42, +0x20,0xff,0xed,0x2f,0x90,0x9e,0x6a,0xf0,0x90,0x00,0x04,0x12,0x42,0x20,0xff,0xae, +0x05,0xed,0x2f,0x90,0x9e,0x6b,0xf0,0x22,0xd3,0x10,0xaf,0x01,0xc3,0xc0,0xd0,0x90, +0x9e,0x3f,0x12,0x43,0x8b,0x90,0x9e,0x3f,0x12,0x43,0x6b,0x90,0x00,0x01,0x12,0x42, +0xc2,0xfa,0xe5,0xf0,0x24,0x00,0xff,0xe4,0x3a,0xfe,0x90,0x9e,0x3f,0x12,0x43,0x6b, +0x90,0x00,0x01,0xee,0x8f,0xf0,0x12,0x43,0x19,0x12,0x24,0x62,0xff,0x60,0x2c,0xb5, +0x22,0x16,0x90,0x9e,0x3f,0x12,0x43,0x6b,0x90,0x00,0x01,0x12,0x42,0xc2,0x65,0x24, +0x70,0x04,0xe5,0x23,0x65,0xf0,0x60,0x23,0x90,0x9e,0x3f,0x12,0x43,0x6b,0x90,0x00, +0x01,0x12,0x42,0xc2,0xff,0xae,0xf0,0x71,0x00,0x80,0x10,0x90,0x9e,0x3f,0x12,0x43, +0x6b,0x12,0x24,0x62,0x65,0x22,0x60,0x03,0x12,0x44,0xca,0xd0,0xd0,0x92,0xaf,0x22, +0x90,0x9e,0x42,0xee,0xf0,0xa3,0xef,0xf0,0x75,0x22,0x01,0x8e,0x23,0xf5,0x24,0xe4, +0xfd,0x7f,0x0b,0x71,0x44,0xe4,0xfd,0x7f,0x02,0x71,0x44,0x12,0x4f,0xbe,0xe4,0xff, +0x12,0x44,0xf1,0xe4,0xf5,0x26,0x90,0x01,0xc9,0xe5,0x26,0xf0,0x90,0x9e,0x42,0xe0, +0xfc,0xa3,0xe0,0xfd,0xec,0xfb,0x8d,0x44,0xe4,0xf5,0x45,0x7d,0x01,0x7f,0x60,0x7e, +0x01,0x02,0x30,0x62,0xd3,0x10,0xaf,0x01,0xc3,0xc0,0xd0,0x90,0x9e,0x45,0xed,0xf0, +0x90,0x9e,0x44,0xef,0xf0,0xd3,0x94,0x07,0x50,0x4f,0xa3,0xe0,0x70,0x1a,0x90,0x9e, +0x44,0xe0,0xff,0x74,0x01,0xa8,0x07,0x08,0x80,0x02,0xc3,0x33,0xd8,0xfc,0xf4,0xff, +0x90,0x00,0x47,0xe0,0x5f,0xf0,0x80,0x17,0x90,0x9e,0x44,0xe0,0xff,0x74,0x01,0xa8, +0x07,0x08,0x80,0x02,0xc3,0x33,0xd8,0xfc,0xff,0x90,0x00,0x47,0xe0,0x4f,0xf0,0x12, +0x49,0xb9,0x90,0x9e,0x44,0xe0,0xff,0x74,0x01,0xa8,0x07,0x08,0x80,0x02,0xc3,0x33, +0xd8,0xfc,0xf4,0xff,0x90,0x00,0x46,0x80,0x5a,0x90,0x9e,0x44,0xe0,0x24,0xf8,0xf0, +0xa3,0xe0,0x70,0x1d,0x90,0x9e,0x44,0xe0,0xff,0x74,0x01,0xa8,0x07,0x08,0x80,0x02, +0xc3,0x33,0xd8,0xfc,0xc4,0x54,0xf0,0xf4,0xff,0x90,0x00,0x43,0xe0,0x5f,0xf0,0x80, +0x1a,0x90,0x9e,0x44,0xe0,0xff,0x74,0x01,0xa8,0x07,0x08,0x80,0x02,0xc3,0x33,0xd8, +0xfc,0xc4,0x54,0xf0,0xff,0x90,0x00,0x43,0xe0,0x4f,0xf0,0x12,0x49,0xb9,0x90,0x9e, +0x44,0xe0,0xff,0x74,0x01,0xa8,0x07,0x08,0x80,0x02,0xc3,0x33,0xd8,0xfc,0xf4,0xff, +0x90,0x00,0x43,0xe0,0x5f,0xf0,0x12,0x49,0xb9,0xd0,0xd0,0x92,0xaf,0x22,0xd3,0x10, +0xaf,0x01,0xc3,0xc0,0xd0,0x90,0x9e,0x6d,0xe0,0x90,0x9e,0x40,0xf0,0x90,0x9e,0x6e, +0xe0,0xf5,0x64,0xa3,0xe0,0xf5,0x65,0xe4,0xf5,0x61,0x74,0x70,0x25,0x61,0xf5,0x82, +0xe4,0x34,0x9e,0xf5,0x83,0xe0,0xff,0x74,0x66,0x25,0x61,0xf8,0xa6,0x07,0x05,0x61, +0xe5,0x61,0xb4,0x04,0xe5,0x90,0x9e,0x40,0xe0,0x12,0x43,0x94,0x74,0x6b,0x00,0x75, +0x93,0x01,0x74,0x71,0x02,0x74,0x71,0x03,0x74,0x71,0x04,0x75,0x93,0x05,0x75,0x63, +0x80,0x75,0x79,0x81,0x75,0x93,0x82,0x00,0x00,0x75,0x8f,0xaf,0x69,0xb1,0x9a,0xa1, +0x93,0x90,0x9e,0x40,0xe0,0xff,0xb4,0x02,0x08,0x90,0x9e,0x3f,0x74,0x01,0xf0,0x80, +0x0f,0xef,0x90,0x9e,0x3f,0xb4,0x03,0x05,0x74,0x02,0xf0,0x80,0x03,0x74,0x04,0xf0, +0xc3,0xe5,0x64,0x94,0x08,0x50,0x49,0xe4,0xf5,0x61,0x90,0x9e,0x3f,0xe0,0xff,0xe5, +0x61,0xc3,0x9f,0x40,0x02,0xa1,0x93,0xc3,0xe5,0x64,0x94,0x01,0x50,0x14,0xe5,0x61, +0x25,0x65,0xff,0xc3,0x74,0x03,0x95,0x61,0x24,0x66,0xf8,0xe6,0xfd,0x12,0x4a,0xc1, +0x80,0x1a,0xc3,0x74,0x03,0x95,0x61,0x24,0x66,0xf8,0xe6,0xff,0xe5,0x61,0x7c,0x00, +0x25,0x65,0xfd,0xec,0x35,0x64,0x8d,0x82,0xf5,0x83,0xef,0xf0,0x05,0x61,0x80,0xba, +0xc3,0xe5,0x64,0x94,0x10,0x40,0x02,0xa1,0x93,0x90,0x9e,0x40,0xe0,0x64,0x04,0x60, +0x02,0xa1,0x93,0xaf,0x67,0xfc,0xfd,0xfe,0x78,0x10,0x12,0x24,0xf5,0xc0,0x04,0xc0, +0x05,0xc0,0x06,0xc0,0x07,0xaf,0x66,0xe4,0xfc,0xfd,0xfe,0x78,0x18,0x12,0x24,0xf5, +0xd0,0x03,0xd0,0x02,0xd0,0x01,0xd0,0x00,0x12,0x43,0x46,0xc0,0x04,0xc0,0x05,0xc0, +0x06,0xc0,0x07,0xaf,0x68,0xe4,0xfc,0xfd,0xfe,0x78,0x08,0x12,0x24,0xf5,0xd0,0x03, +0xd0,0x02,0xd0,0x01,0xd0,0x00,0x12,0x43,0x46,0xa8,0x04,0xa9,0x05,0xaa,0x06,0xab, +0x07,0xaf,0x69,0xe4,0xfc,0xfd,0xfe,0x12,0x43,0x46,0xa3,0x12,0x25,0x08,0x90,0x9e, +0x41,0x12,0x43,0x53,0x90,0x80,0x96,0x12,0x25,0x08,0xaf,0x65,0xae,0x64,0x12,0x2b, +0x08,0x80,0x30,0xe5,0x68,0x7f,0x00,0xfe,0xef,0x25,0x69,0xf5,0x63,0xe4,0x3e,0xf5, +0x62,0xaf,0x63,0xfe,0x12,0x32,0x15,0x80,0x1a,0xe5,0x68,0x7f,0x00,0xfe,0xef,0x25, +0x69,0xf5,0x63,0xe4,0x3e,0xf5,0x62,0xaf,0x63,0xfe,0x12,0x31,0x82,0x80,0x04,0x7f, +0x00,0x80,0x02,0x7f,0x01,0xd0,0xd0,0x92,0xaf,0x22,0x8f,0x6a,0xe4,0x90,0x9e,0x45, +0xf0,0xe5,0x6a,0x14,0xfe,0x90,0x9e,0x45,0xe0,0xff,0xc3,0x9e,0x50,0x0e,0xef,0x04, +0xfd,0x12,0x2d,0x4d,0x90,0x9e,0x45,0xe0,0x04,0xf0,0x80,0xe5,0xe5,0x6a,0x14,0xff, +0x7d,0xff,0x12,0x2d,0x4d,0x90,0x9e,0x45,0xe5,0x6a,0xf0,0x90,0x9e,0x45,0xe0,0xc3, +0x94,0xff,0x50,0x0f,0xe0,0xff,0x04,0xfd,0x12,0x2d,0x4d,0x90,0x9e,0x45,0xe0,0x04, +0xf0,0x80,0xe8,0xad,0x6a,0x7f,0xff,0x02,0x2d,0x4d,0xd3,0x10,0xaf,0x01,0xc3,0xc0, +0xd0,0xe4,0xf5,0x5b,0x75,0x5c,0x04,0xf5,0x5d,0xf5,0x5f,0xf5,0x60,0x90,0x02,0x09, +0xe0,0xff,0x12,0x24,0x62,0xfe,0xef,0x2e,0xf5,0x5e,0x30,0xe0,0x08,0x75,0x59,0x00, +0x75,0x5a,0x80,0x80,0x05,0xe4,0xf5,0x59,0xf5,0x5a,0xe5,0x5e,0xc3,0x13,0x90,0xfd, +0x10,0xf0,0x74,0x20,0x25,0x5b,0xf5,0x5b,0xad,0x5a,0xe5,0x5b,0x2d,0xff,0x24,0x01, +0xf5,0x82,0xe4,0x34,0xfc,0xf5,0x83,0xe0,0x90,0x9e,0x6d,0xf0,0x74,0x02,0x2f,0xf5, +0x82,0xe4,0x34,0xfc,0xf5,0x83,0xe0,0xfe,0xe5,0x5b,0x2d,0x24,0x03,0xf5,0x82,0xe4, +0x34,0xfc,0xf5,0x83,0xe0,0x24,0x00,0xff,0xe4,0x3e,0x90,0x9e,0x6e,0xf0,0xa3,0xef, +0xf0,0x7f,0x04,0xe5,0x5b,0x25,0x5a,0x2f,0x24,0x00,0xf5,0x82,0xe4,0x34,0xfc,0xf5, +0x83,0xe0,0xfe,0x74,0x6c,0x2f,0xf5,0x82,0xe4,0x34,0x9e,0xf5,0x83,0xee,0xf0,0x0f, +0xbf,0x08,0xe0,0x91,0x0e,0xef,0x70,0x3f,0x90,0x01,0xc3,0xe0,0x60,0x25,0xc3,0xe5, +0x60,0x94,0xe8,0xe5,0x5f,0x94,0x03,0x40,0x09,0x90,0x01,0xc6,0xe0,0x44,0x10,0xf0, +0x80,0x63,0x05,0x60,0xe5,0x60,0x70,0x02,0x05,0x5f,0x7f,0x0a,0x7e,0x00,0x12,0x32, +0x15,0x80,0xd5,0x90,0x01,0xc6,0xe0,0x90,0x01,0xc3,0x30,0xe2,0x05,0x74,0xfe,0xf0, +0x80,0x43,0x74,0xff,0xf0,0x80,0x3e,0xe5,0x5b,0xb4,0x78,0x23,0xe4,0xf5,0x5b,0x05, +0x5e,0xe5,0x5a,0x64,0x80,0x45,0x59,0x70,0x06,0xf5,0x59,0xf5,0x5a,0x80,0x06,0x75, +0x59,0x00,0x75,0x5a,0x80,0xe5,0x5e,0xc3,0x13,0x90,0xfd,0x10,0xf0,0x80,0x06,0x74, +0x08,0x25,0x5b,0xf5,0x5b,0xe5,0x5d,0x15,0x5d,0x70,0x02,0x15,0x5c,0xe5,0x5d,0x45, +0x5c,0x60,0x02,0xc1,0x28,0xd0,0xd0,0x92,0xaf,0x22,0x90,0x06,0x34,0x74,0xff,0xf0, +0xe4,0xa3,0xf0,0xa3,0xf0,0xa3,0xf0,0x22,0xe4,0xf5,0x25,0x22,0xe4,0x90,0x9e,0xaa, +0xf0,0xa3,0xf0,0x90,0x05,0xf8,0xe0,0x70,0x0f,0xa3,0xe0,0x70,0x0b,0xa3,0xe0,0x70, +0x07,0xa3,0xe0,0x70,0x03,0x7f,0x01,0x22,0xd3,0x90,0x9e,0xab,0xe0,0x94,0xe8,0x90, +0x9e,0xaa,0xe0,0x94,0x03,0x40,0x03,0x7f,0x00,0x22,0x7f,0x32,0x7e,0x00,0x12,0x32, +0x15,0x90,0x9e,0xaa,0xe4,0x75,0xf0,0x01,0x12,0x42,0x81,0x80,0xc6,0x90,0x9e,0x77, +0xe0,0x90,0x9e,0x0f,0xf0,0x22,0xef,0x70,0x03,0x02,0x79,0x1e,0x90,0x9e,0x0f,0xe0, +0x60,0x03,0x02,0x7c,0xe9,0x90,0x9d,0xfb,0x12,0x43,0x53,0x90,0x80,0x96,0x12,0x25, +0x08,0x7f,0x8c,0x7e,0x08,0x12,0x2b,0x08,0x90,0x9d,0xa7,0x12,0x43,0x53,0x90,0x80, +0x96,0x12,0x25,0x08,0x7f,0x44,0x7e,0x08,0x12,0x2b,0x08,0x90,0x9d,0xab,0x12,0x43, +0x53,0x90,0x80,0x96,0x12,0x25,0x08,0x7f,0x5c,0x7e,0x08,0x12,0x2b,0x08,0x90,0x9d, +0xaf,0x12,0x43,0x53,0x90,0x80,0x96,0x12,0x25,0x08,0x7f,0x6c,0x7e,0x0e,0x12,0x2b, +0x08,0x90,0x9d,0xb3,0x12,0x43,0x53,0x90,0x80,0x96,0x12,0x25,0x08,0x7f,0x70,0x7e, +0x0e,0x12,0x2b,0x08,0x90,0x9d,0xb7,0x12,0x43,0x53,0x90,0x80,0x96,0x12,0x25,0x08, +0x7f,0x74,0x7e,0x0e,0x12,0x2b,0x08,0x90,0x9d,0xbb,0x12,0x43,0x53,0x90,0x80,0x96, +0x12,0x25,0x08,0x7f,0x78,0x7e,0x0e,0x12,0x2b,0x08,0x90,0x9d,0xbf,0x12,0x43,0x53, +0x90,0x80,0x96,0x12,0x25,0x08,0x7f,0x7c,0x7e,0x0e,0x12,0x2b,0x08,0x90,0x9d,0xc3, +0x12,0x43,0x53,0x90,0x80,0x96,0x12,0x25,0x08,0x7f,0x80,0x7e,0x0e,0x12,0x2b,0x08, +0x90,0x9d,0xc7,0x12,0x43,0x53,0x90,0x80,0x96,0x12,0x25,0x08,0x7f,0x84,0x7e,0x0e, +0x12,0x2b,0x08,0x90,0x9d,0xcb,0x12,0x43,0x53,0x90,0x80,0x96,0x12,0x25,0x08,0x7f, +0x88,0x7e,0x0e,0x12,0x2b,0x08,0x90,0x9d,0xcf,0x12,0x43,0x53,0x90,0x80,0x96,0x12, +0x25,0x08,0x7f,0x8c,0x7e,0x0e,0x12,0x2b,0x08,0x90,0x9d,0xd3,0x12,0x43,0x53,0x90, +0x80,0x96,0x12,0x25,0x08,0x7f,0xd0,0x7e,0x0e,0x12,0x2b,0x08,0x90,0x9d,0xd7,0x12, +0x43,0x53,0x90,0x80,0x96,0x12,0x25,0x08,0x7f,0xd4,0x7e,0x0e,0x12,0x2b,0x08,0x90, +0x9d,0xdb,0x12,0x43,0x53,0x90,0x80,0x96,0x12,0x25,0x08,0x7f,0xd8,0x7e,0x0e,0x12, +0x2b,0x08,0x90,0x9d,0xdf,0x12,0x43,0x53,0x90,0x80,0x96,0x12,0x25,0x08,0x7f,0xdc, +0x7e,0x0e,0x12,0x2b,0x08,0x90,0x9d,0xe3,0x12,0x43,0x53,0x90,0x80,0x96,0x12,0x25, +0x08,0x7f,0xe0,0x7e,0x0e,0x12,0x2b,0x08,0x90,0x9d,0xe7,0x12,0x43,0x53,0x90,0x80, +0x96,0x12,0x25,0x08,0x7f,0xec,0x7e,0x0e,0x12,0x2b,0x08,0x90,0x9d,0xeb,0x12,0x43, +0x53,0x90,0x80,0x96,0x12,0x25,0x08,0x7f,0x04,0x7e,0x0c,0x12,0x2b,0x08,0x90,0x9d, +0xef,0x12,0x43,0x53,0x90,0x80,0x96,0x12,0x25,0x08,0x7f,0x04,0x7e,0x0d,0x12,0x2b, +0x08,0x90,0x9d,0xf3,0x12,0x43,0x53,0x90,0x80,0x96,0x12,0x25,0x08,0x7f,0x0c,0x7e, +0x09,0x12,0x2b,0x08,0x90,0x9d,0xf7,0x12,0x43,0x53,0x90,0x80,0x96,0x12,0x25,0x08, +0x7f,0x04,0x7e,0x08,0x12,0x2b,0x08,0x90,0x9e,0x0f,0x74,0x01,0xf0,0x22,0x90,0x9e, +0x0f,0xe0,0x64,0x01,0x60,0x02,0x81,0xe9,0x7f,0x8c,0x7e,0x08,0x12,0x22,0x65,0x90, +0x9d,0xfb,0x12,0x25,0x08,0x7f,0x44,0x7e,0x08,0x12,0x22,0x65,0x90,0x9d,0xa7,0x12, +0x25,0x08,0x7f,0x5c,0x7e,0x08,0x12,0x22,0x65,0x90,0x9d,0xab,0x12,0x25,0x08,0x7f, +0x6c,0x7e,0x0e,0x12,0x22,0x65,0x90,0x9d,0xaf,0x12,0x25,0x08,0x7f,0x70,0x7e,0x0e, +0x12,0x22,0x65,0x90,0x9d,0xb3,0x12,0x25,0x08,0x7f,0x74,0x7e,0x0e,0x12,0x22,0x65, +0x90,0x9d,0xb7,0x12,0x25,0x08,0x7f,0x78,0x7e,0x0e,0x12,0x22,0x65,0x90,0x9d,0xbb, +0x12,0x25,0x08,0x7f,0x7c,0x7e,0x0e,0x12,0x22,0x65,0x90,0x9d,0xbf,0x12,0x25,0x08, +0x7f,0x80,0x7e,0x0e,0x12,0x22,0x65,0x90,0x9d,0xc3,0x12,0x25,0x08,0x7f,0x84,0x7e, +0x0e,0x12,0x22,0x65,0x90,0x9d,0xc7,0x12,0x25,0x08,0x7f,0x88,0x7e,0x0e,0x12,0x22, +0x65,0x90,0x9d,0xcb,0x12,0x25,0x08,0x7f,0x8c,0x7e,0x0e,0x12,0x22,0x65,0x90,0x9d, +0xcf,0x12,0x25,0x08,0x7f,0xd0,0x7e,0x0e,0x12,0x22,0x65,0x90,0x9d,0xd3,0x12,0x25, +0x08,0x7f,0xd4,0x7e,0x0e,0x12,0x22,0x65,0x90,0x9d,0xd7,0x12,0x25,0x08,0x7f,0xd8, +0x7e,0x0e,0x12,0x22,0x65,0x90,0x9d,0xdb,0x12,0x25,0x08,0x7f,0xdc,0x7e,0x0e,0x12, +0x22,0x65,0x90,0x9d,0xdf,0x12,0x25,0x08,0x7f,0xe0,0x7e,0x0e,0x12,0x22,0x65,0x90, +0x9d,0xe3,0x12,0x25,0x08,0x7f,0xec,0x7e,0x0e,0x12,0x22,0x65,0x90,0x9d,0xe7,0x12, +0x25,0x08,0x7f,0x04,0x7e,0x0c,0x12,0x22,0x65,0x90,0x9d,0xeb,0x12,0x25,0x08,0x7f, +0x04,0x7e,0x0d,0x12,0x22,0x65,0x90,0x9d,0xef,0x12,0x25,0x08,0x7f,0x0c,0x7e,0x09, +0x12,0x22,0x65,0x90,0x9d,0xf3,0x12,0x25,0x08,0x7f,0x04,0x7e,0x08,0x12,0x22,0x65, +0x90,0x9d,0xf7,0x12,0x25,0x08,0x7f,0x8c,0x7e,0x08,0x12,0x22,0x65,0x90,0x9e,0xa4, +0x12,0x25,0x08,0x90,0x9e,0xa4,0x12,0x43,0x53,0xed,0x44,0xc0,0xfd,0xec,0x90,0x9e, +0xa4,0x12,0x25,0x08,0x90,0x9e,0xa4,0x12,0x43,0x53,0x90,0x80,0x96,0x12,0x25,0x08, +0x7f,0x8c,0x7e,0x08,0x12,0x2b,0x08,0x90,0x80,0x96,0x12,0x25,0x14,0x00,0x01,0x00, +0x00,0x7f,0x44,0x7e,0x08,0x12,0x2b,0x08,0x90,0x80,0x96,0x12,0x25,0x14,0x00,0xdb, +0x25,0xa4,0x7f,0x5c,0x7e,0x08,0x12,0x2b,0x08,0x90,0x80,0x96,0x12,0x25,0x14,0x20, +0xdb,0x25,0xa4,0x7f,0x6c,0x7e,0x0e,0x12,0x2b,0x08,0x90,0x80,0x96,0x12,0x25,0x14, +0x20,0xdb,0x25,0xa4,0x7f,0x70,0x7e,0x0e,0x12,0x2b,0x08,0x90,0x80,0x96,0x12,0x25, +0x14,0x04,0x1b,0x25,0xa4,0x7f,0x74,0x7e,0x0e,0x12,0x2b,0x08,0x90,0x80,0x96,0x12, +0x25,0x14,0x04,0x1b,0x25,0xa4,0x7f,0x78,0x7e,0x0e,0x12,0x2b,0x08,0x90,0x80,0x96, +0x12,0x25,0x14,0x04,0x1b,0x25,0xa4,0x7f,0x7c,0x7e,0x0e,0x12,0x2b,0x08,0x90,0x80, +0x96,0x12,0x25,0x14,0x04,0x1b,0x25,0xa4,0x7f,0x80,0x7e,0x0e,0x12,0x2b,0x08,0x90, +0x80,0x96,0x12,0x25,0x14,0x63,0xdb,0x25,0xa4,0x7f,0x84,0x7e,0x0e,0x12,0x2b,0x08, +0x90,0x80,0x96,0x12,0x25,0x14,0x04,0x1b,0x25,0xa4,0x7f,0x88,0x7e,0x0e,0x12,0x2b, +0x08,0x90,0x80,0x96,0x12,0x25,0x14,0x20,0xdb,0x25,0xa4,0x7f,0x8c,0x7e,0x0e,0x12, +0x2b,0x08,0x90,0x80,0x96,0x12,0x25,0x14,0x20,0xdb,0x25,0xa4,0x7f,0xd0,0x7e,0x0e, +0x12,0x2b,0x08,0x90,0x80,0x96,0x12,0x25,0x14,0x20,0xdb,0x25,0xa4,0x7f,0xd4,0x7e, +0x0e,0x12,0x2b,0x08,0x90,0x80,0x96,0x12,0x25,0x14,0x20,0xdb,0x25,0xa4,0x7f,0xd8, +0x7e,0x0e,0x12,0x2b,0x08,0x90,0x80,0x96,0x12,0x25,0x14,0x00,0x1b,0x25,0xa4,0x7f, +0xdc,0x7e,0x0e,0x12,0x2b,0x08,0x90,0x80,0x96,0x12,0x25,0x14,0x00,0x1b,0x25,0xa4, +0x7f,0xe0,0x7e,0x0e,0x12,0x2b,0x08,0x90,0x80,0x96,0x12,0x25,0x14,0x24,0xdb,0x25, +0xa4,0x7f,0xec,0x7e,0x0e,0x12,0x2b,0x08,0x7f,0x04,0x7e,0x0c,0x12,0x22,0x65,0x90, +0x9e,0xa4,0x12,0x25,0x08,0x90,0x9e,0xa4,0x12,0x43,0x53,0xe4,0xff,0xec,0x90,0x9e, +0xa4,0x12,0x25,0x08,0x90,0x9e,0xa4,0x12,0x43,0x53,0xef,0x44,0x11,0xff,0xec,0x90, +0x9e,0xa4,0x12,0x25,0x08,0x90,0x9e,0xa4,0x12,0x43,0x53,0x90,0x80,0x96,0x12,0x25, +0x08,0x7f,0x04,0x7e,0x0c,0x12,0x2b,0x08,0x7f,0x04,0x7e,0x0d,0x12,0x22,0x65,0x90, +0x9e,0xa4,0x12,0x25,0x08,0x90,0x9e,0xa4,0x12,0x43,0x53,0xef,0x54,0xf0,0xff,0xec, +0x90,0x9e,0xa4,0x12,0x25,0x08,0x90,0x9e,0xa4,0x12,0x43,0x53,0xef,0x44,0x01,0xff, +0xec,0x90,0x9e,0xa4,0x12,0x25,0x08,0x90,0x9e,0xa4,0x12,0x43,0x53,0x90,0x80,0x96, +0x12,0x25,0x08,0x7f,0x04,0x7e,0x0d,0x12,0x2b,0x08,0x7f,0x0c,0x7e,0x09,0x12,0x22, +0x65,0x90,0x9e,0xa4,0x12,0x25,0x08,0x90,0x9e,0xa4,0x12,0x43,0x53,0xe4,0xff,0xec, +0x90,0x9e,0xa4,0x12,0x25,0x08,0x90,0x9e,0xa4,0x12,0x43,0x53,0xef,0x44,0x11,0xff, +0xec,0x90,0x9e,0xa4,0x12,0x25,0x08,0x90,0x9e,0xa4,0x12,0x43,0x53,0x90,0x80,0x96, +0x12,0x25,0x08,0x7f,0x0c,0x7e,0x09,0x12,0x2b,0x08,0x7f,0x0c,0x7e,0x09,0x12,0x22, +0x65,0x90,0x9e,0xa4,0x12,0x25,0x08,0x90,0x9e,0xa4,0x12,0x43,0x53,0xed,0x54,0x0f, +0xfd,0xec,0x54,0xf0,0xfc,0x90,0x9e,0xa4,0x12,0x25,0x08,0x90,0x9e,0xa4,0x12,0x43, +0x53,0xed,0x44,0x10,0xfd,0xec,0x44,0x01,0xfc,0x90,0x9e,0xa4,0x12,0x25,0x08,0x90, +0x9e,0xa4,0x12,0x43,0x53,0x90,0x80,0x96,0x12,0x25,0x08,0x7f,0x0c,0x7e,0x09,0x12, +0x2b,0x08,0x7f,0x04,0x7e,0x08,0x12,0x22,0x65,0x90,0x9e,0xa4,0x12,0x25,0x08,0x90, +0x9e,0xa4,0x12,0x43,0x53,0xef,0x54,0xf0,0xff,0xec,0x90,0x9e,0xa4,0x12,0x25,0x08, +0x90,0x9e,0xa4,0x12,0x43,0x53,0xef,0x44,0x01,0xff,0xec,0x90,0x9e,0xa4,0x12,0x25, +0x08,0x90,0x9e,0xa4,0x12,0x43,0x53,0x90,0x80,0x96,0x12,0x25,0x08,0x7f,0x04,0x7e, +0x08,0x12,0x2b,0x08,0xe4,0x90,0x9e,0x0f,0xf0,0x22,0x90,0x00,0x02,0x12,0x42,0x20, +0x90,0x9e,0x1e,0xf0,0xe0,0x60,0x04,0xe0,0xf4,0x70,0x21,0xa2,0xaf,0xe4,0x33,0xf5, +0x59,0xc2,0xaf,0x90,0x00,0x47,0xe0,0x54,0xfb,0xfd,0x7f,0x47,0x12,0x4a,0xc1,0x7d, +0x40,0x7f,0x01,0x12,0x31,0x66,0xe5,0x59,0x24,0xff,0x92,0xaf,0x22,0xe4,0xfd,0x7f, +0x45,0x12,0x4a,0xc1,0x90,0x04,0xfd,0xe4,0xf0,0xa3,0xf0,0x90,0x9e,0x1e,0xf0,0x90, +0x9e,0x24,0xf0,0x90,0x9e,0x27,0xf0,0x90,0x9e,0x25,0xf0,0x90,0x9e,0x28,0xf0,0x90, +0x9e,0x26,0xf0,0x90,0x9e,0x29,0xf0,0x90,0x9e,0x10,0x04,0xf0,0xe4,0xa3,0xf0,0xa3, +0xf0,0xa3,0xf0,0x90,0x9e,0x15,0xf0,0x90,0x9e,0x1a,0xf0,0x90,0x9e,0x1c,0xf0,0x90, +0x9e,0x2e,0xf0,0x90,0x9e,0x1f,0xf0,0x90,0x9e,0x1b,0xf0,0x90,0x9e,0x14,0xf0,0x90, +0x00,0x51,0xe0,0x44,0xc0,0xfd,0x7f,0x51,0x02,0x4a,0xc1,0x90,0x9e,0x15,0xe0,0xc3, +0x94,0x14,0x50,0x05,0xe0,0x04,0xf0,0xc1,0x33,0x90,0x9e,0x15,0xe0,0x64,0x14,0x60, +0x02,0xc1,0x33,0x90,0x9e,0x24,0xe0,0x70,0x25,0x90,0x9e,0x27,0xe0,0x70,0x1f,0x90, +0x9e,0x25,0xe0,0x70,0x19,0x90,0x9e,0x28,0xe0,0x70,0x13,0x90,0x9e,0x26,0xe0,0x70, +0x0d,0x90,0x9e,0x29,0xe0,0x70,0x07,0x90,0x04,0xfd,0xe0,0x54,0xfe,0xf0,0x90,0x9e, +0x24,0xe0,0x90,0x04,0x44,0xf0,0x90,0x9e,0x25,0xe0,0x90,0x04,0x45,0xf0,0x90,0x9e, +0x26,0xe0,0x90,0x04,0x46,0xf0,0xa3,0xe4,0xf0,0x90,0x9e,0x27,0xe0,0x90,0x04,0x48, +0xf0,0x90,0x9e,0x28,0xe0,0x90,0x04,0x49,0xf0,0x90,0x9e,0x29,0xe0,0x90,0x04,0x4a, +0xf0,0xa3,0xe4,0xf0,0x90,0x9e,0x10,0xe0,0x90,0x04,0x4c,0xf0,0x90,0x9e,0x11,0xe0, +0x90,0x04,0x4d,0xf0,0x90,0x9e,0x12,0xe0,0x90,0x04,0x4e,0xf0,0x90,0x9e,0x13,0xe0, +0x90,0x04,0x4f,0xf0,0xe4,0x90,0x9e,0x15,0xf0,0x90,0x9e,0x10,0x04,0xf0,0xe4,0xa3, +0xf0,0xa3,0xf0,0xa3,0xf0,0x90,0x9e,0x24,0xf0,0xa3,0xf0,0xa3,0xf0,0xa3,0xf0,0xa3, +0xf0,0xa3,0xf0,0x90,0x05,0x60,0xe0,0x90,0x9e,0x34,0xf0,0x90,0x05,0x61,0xe0,0x90, +0x9e,0x35,0xf0,0x90,0x05,0x62,0xe0,0x90,0x9e,0x36,0xf0,0x90,0x05,0x63,0xe0,0x90, +0x9e,0x37,0xf0,0x90,0x9e,0x2d,0xe0,0xff,0x90,0x9e,0x37,0xe0,0xfe,0xd3,0x9f,0x50, +0x0b,0x90,0x9e,0x2d,0xe0,0xc3,0x9e,0xd3,0x94,0x01,0x40,0x11,0x90,0x9e,0x1b,0xe0, +0xb4,0x01,0x02,0x80,0x03,0x90,0x9e,0x1f,0xe0,0xff,0x12,0x4e,0xd8,0x22,0x90,0x9e, +0x2e,0xe0,0x64,0x01,0x60,0x08,0x90,0x9e,0x1c,0xe0,0x60,0x02,0xe1,0x55,0x90,0x9e, +0x10,0xe0,0xc3,0x94,0xff,0x50,0x05,0xe0,0x04,0xf0,0x80,0x3b,0x90,0x9e,0x11,0xe0, +0xc3,0x94,0xff,0x50,0x06,0xe0,0x04,0xf0,0xe4,0x80,0x28,0x90,0x9e,0x12,0xe0,0xc3, +0x94,0xff,0x50,0x0a,0xe0,0x04,0xf0,0xe4,0x90,0x9e,0x11,0xf0,0x80,0x15,0x90,0x9e, +0x13,0xe0,0xc3,0x94,0xff,0x50,0x10,0xe0,0x04,0xf0,0xe4,0x90,0x9e,0x12,0xf0,0x90, +0x9e,0x11,0xf0,0x90,0x9e,0x10,0xf0,0x90,0x00,0x44,0xe0,0x54,0x0c,0x60,0x76,0xe0, +0x30,0xe2,0x32,0x90,0x9e,0x24,0xe0,0xc3,0x94,0xff,0x50,0x05,0xe0,0x04,0xf0,0x80, +0x24,0x90,0x9e,0x25,0xe0,0xc3,0x94,0xff,0x50,0x06,0xe0,0x04,0xf0,0xe4,0x80,0x11, +0x90,0x9e,0x26,0xe0,0xc3,0x94,0xff,0x50,0x0c,0xe0,0x04,0xf0,0xe4,0x90,0x9e,0x25, +0xf0,0x90,0x9e,0x24,0xf0,0x90,0x00,0x44,0xe0,0x30,0xe3,0x32,0x90,0x9e,0x27,0xe0, +0xc3,0x94,0xff,0x50,0x05,0xe0,0x04,0xf0,0x80,0x24,0x90,0x9e,0x28,0xe0,0xc3,0x94, +0xff,0x50,0x06,0xe0,0x04,0xf0,0xe4,0x80,0x11,0x90,0x9e,0x29,0xe0,0xc3,0x94,0xff, +0x50,0x0c,0xe0,0x04,0xf0,0xe4,0x90,0x9e,0x28,0xf0,0x90,0x9e,0x27,0xf0,0x90,0x04, +0xfd,0xe0,0x44,0x01,0xf0,0x22,0xf5,0x67,}; + +// =================== v84 UMC B Cut COMMON 2012-04-13 ===================== +u8 Rtl8192CUFwUMCBCutImgArray[UMCBCutImgArrayLength] = { +0xc2,0x88,0x02,0x00,0x54,0x00,0x01,0x00,0x04,0x13,0x11,0x08,0x26,0x3d,0x01,0x00, +0x58,0x97,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x02,0x43,0xba,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x02,0x50,0xa1,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x02,0x57,0x91,0x00,0x00,0x00,0x00,0x00,0xa1,0xe8,0x00,0x00,0x00, +0x05,0x04,0x03,0x02,0x00,0x03,0x06,0x05,0x04,0x03,0x00,0x04,0x06,0x05,0x04,0x02, +0x00,0x04,0x08,0x07,0x06,0x04,0x00,0x06,0x0a,0x09,0x08,0x06,0x00,0x08,0x0a,0x09, +0x08,0x04,0x00,0x08,0x0a,0x09,0x08,0x02,0x00,0x08,0x0a,0x09,0x08,0x00,0x00,0x08, +0x12,0x11,0x10,0x08,0x00,0x10,0x1a,0x19,0x18,0x10,0x00,0x18,0x22,0x21,0x20,0x18, +0x00,0x20,0x22,0x21,0x20,0x10,0x00,0x20,0x22,0x21,0x20,0x08,0x00,0x20,0x22,0x21, +0x1c,0x08,0x00,0x20,0x22,0x21,0x14,0x08,0x00,0x20,0x22,0x20,0x18,0x08,0x00,0x20, +0x31,0x30,0x20,0x10,0x00,0x30,0x31,0x30,0x18,0x00,0x00,0x30,0x31,0x2f,0x10,0x10, +0x00,0x30,0x31,0x2c,0x10,0x10,0x00,0x30,0x31,0x28,0x10,0x00,0x00,0x30,0x31,0x20, +0x10,0x00,0x00,0x30,0x31,0x10,0x10,0x00,0x00,0x30,0x04,0x04,0x04,0x05,0x04,0x04, +0x04,0x05,0x05,0x05,0x06,0x06,0x04,0x04,0x04,0x05,0x05,0x05,0x06,0x06,0x04,0x04, +0x05,0x05,0x05,0x05,0x06,0x06,0x04,0x04,0x05,0x05,0x05,0x05,0x06,0x07,0x0a,0x0b, +0x0d,0x10,0x04,0x05,0x05,0x06,0x06,0x09,0x0c,0x11,0x08,0x08,0x09,0x09,0x0a,0x0c, +0x10,0x11,0x04,0x04,0x04,0x05,0x04,0x04,0x05,0x07,0x07,0x07,0x08,0x0a,0x04,0x04, +0x04,0x04,0x06,0x0a,0x0b,0x0d,0x05,0x05,0x07,0x07,0x08,0x0b,0x0d,0x0f,0x04,0x04, +0x04,0x05,0x07,0x07,0x09,0x09,0x0c,0x0e,0x10,0x12,0x04,0x04,0x05,0x05,0x06,0x0a, +0x11,0x13,0x09,0x09,0x09,0x09,0x0c,0x0e,0x11,0x13,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x24,0x26,0x2a,0x18,0x1a,0x1d,0x1f,0x21,0x27,0x29,0x2a,0x00,0x00, +0x00,0x1f,0x23,0x28,0x2a,0x2c,0x00,0x04,0x00,0x04,0x00,0x08,0x00,0x10,0x00,0x18, +0x00,0x24,0x00,0x30,0x00,0x48,0x00,0x60,0x00,0x90,0x00,0xc0,0x00,0xd8,0x00,0x50, +0x00,0x78,0x00,0xa0,0x00,0xc8,0x01,0x40,0x01,0x90,0x01,0xe0,0x02,0x30,0x01,0x2c, +0x01,0x40,0x01,0xe0,0x02,0xd0,0x03,0xe8,0x04,0xb0,0x06,0x40,0x07,0xd0,0x00,0x02, +0x00,0x02,0x00,0x04,0x00,0x08,0x00,0x0c,0x00,0x12,0x00,0x18,0x00,0x24,0x00,0x30, +0x00,0x48,0x00,0x60,0x00,0x6c,0x00,0x28,0x00,0x3c,0x00,0x50,0x00,0x64,0x00,0xa0, +0x00,0xc8,0x00,0xf0,0x01,0x18,0x00,0x64,0x00,0xa0,0x00,0xf0,0x01,0x68,0x01,0xf4, +0x02,0x58,0x03,0x20,0x03,0xe8,0x02,0x02,0x02,0x02,0x02,0x02,0x03,0x03,0x04,0x04, +0x05,0x07,0x04,0x04,0x07,0x0a,0x0a,0x0c,0x0c,0x12,0x05,0x07,0x07,0x08,0x0b,0x12, +0x24,0x3c,0x01,0x01,0x01,0x01,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x01,0x02, +0x03,0x04,0x05,0x06,0x07,0x08,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0c,0x20,0x1e, +0x1c,0x18,0x10,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0xbb,0x01,0x0c,0xe5,0x82,0x29,0xf5,0x82,0xe5,0x83,0x3a,0xf5,0x83,0xe0,0x22,0x50, +0x06,0xe9,0x25,0x82,0xf8,0xe6,0x22,0xbb,0xfe,0x06,0xe9,0x25,0x82,0xf8,0xe2,0x22, +0xe5,0x82,0x29,0xf5,0x82,0xe5,0x83,0x3a,0xf5,0x83,0xe4,0x93,0x22,0xbb,0x01,0x06, +0x89,0x82,0x8a,0x83,0xf0,0x22,0x50,0x02,0xf7,0x22,0xbb,0xfe,0x01,0xf3,0x22,0xf8, +0xbb,0x01,0x0d,0xe5,0x82,0x29,0xf5,0x82,0xe5,0x83,0x3a,0xf5,0x83,0xe8,0xf0,0x22, +0x50,0x06,0xe9,0x25,0x82,0xc8,0xf6,0x22,0xbb,0xfe,0x05,0xe9,0x25,0x82,0xc8,0xf2, +0x22,0xc5,0xf0,0xf8,0xa3,0xe0,0x28,0xf0,0xc5,0xf0,0xf8,0xe5,0x82,0x15,0x82,0x70, +0x02,0x15,0x83,0xe0,0x38,0xf0,0x22,0xbb,0x01,0x0a,0x89,0x82,0x8a,0x83,0xe0,0xf5, +0xf0,0xa3,0xe0,0x22,0x50,0x06,0x87,0xf0,0x09,0xe7,0x19,0x22,0xbb,0xfe,0x07,0xe3, +0xf5,0xf0,0x09,0xe3,0x19,0x22,0x89,0x82,0x8a,0x83,0xe4,0x93,0xf5,0xf0,0x74,0x01, +0x93,0x22,0xbb,0x01,0x10,0xe5,0x82,0x29,0xf5,0x82,0xe5,0x83,0x3a,0xf5,0x83,0xe0, +0xf5,0xf0,0xa3,0xe0,0x22,0x50,0x09,0xe9,0x25,0x82,0xf8,0x86,0xf0,0x08,0xe6,0x22, +0xbb,0xfe,0x0a,0xe9,0x25,0x82,0xf8,0xe2,0xf5,0xf0,0x08,0xe2,0x22,0xe5,0x83,0x2a, +0xf5,0x83,0xe9,0x93,0xf5,0xf0,0xa3,0xe9,0x93,0x22,0xbb,0x01,0x0a,0x89,0x82,0x8a, +0x83,0xf0,0xe5,0xf0,0xa3,0xf0,0x22,0x50,0x06,0xf7,0x09,0xa7,0xf0,0x19,0x22,0xbb, +0xfe,0x06,0xf3,0xe5,0xf0,0x09,0xf3,0x19,0x22,0xf8,0xbb,0x01,0x11,0xe5,0x82,0x29, +0xf5,0x82,0xe5,0x83,0x3a,0xf5,0x83,0xe8,0xf0,0xe5,0xf0,0xa3,0xf0,0x22,0x50,0x09, +0xe9,0x25,0x82,0xc8,0xf6,0x08,0xa6,0xf0,0x22,0xbb,0xfe,0x09,0xe9,0x25,0x82,0xc8, +0xf2,0xe5,0xf0,0x08,0xf2,0x22,0xef,0x4b,0xff,0xee,0x4a,0xfe,0xed,0x49,0xfd,0xec, +0x48,0xfc,0x22,0xe0,0xfc,0xa3,0xe0,0xfd,0xa3,0xe0,0xfe,0xa3,0xe0,0xff,0x22,0xa4, +0x25,0x82,0xf5,0x82,0xe5,0xf0,0x35,0x83,0xf5,0x83,0x22,0xe0,0xfb,0xa3,0xe0,0xfa, +0xa3,0xe0,0xf9,0x22,0xf8,0xe0,0xfb,0xa3,0xa3,0xe0,0xf9,0x25,0xf0,0xf0,0xe5,0x82, +0x15,0x82,0x70,0x02,0x15,0x83,0xe0,0xfa,0x38,0xf0,0x22,0xeb,0xf0,0xa3,0xea,0xf0, +0xa3,0xe9,0xf0,0x22,0xd0,0x83,0xd0,0x82,0xf8,0xe4,0x93,0x70,0x12,0x74,0x01,0x93, +0x70,0x0d,0xa3,0xa3,0x93,0xf8,0x74,0x01,0x93,0xf5,0x82,0x88,0x83,0xe4,0x73,0x74, +0x02,0x93,0x68,0x60,0xef,0xa3,0xa3,0xa3,0x80,0xdf,0x02,0x43,0xf8,0x02,0x48,0x29, +0xe4,0x93,0xa3,0xf8,0xe4,0x93,0xa3,0x40,0x03,0xf6,0x80,0x01,0xf2,0x08,0xdf,0xf4, +0x80,0x29,0xe4,0x93,0xa3,0xf8,0x54,0x07,0x24,0x0c,0xc8,0xc3,0x33,0xc4,0x54,0x0f, +0x44,0x20,0xc8,0x83,0x40,0x04,0xf4,0x56,0x80,0x01,0x46,0xf6,0xdf,0xe4,0x80,0x0b, +0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80,0x90,0x44,0x3d,0xe4,0x7e,0x01,0x93,0x60, +0xbc,0xa3,0xff,0x54,0x3f,0x30,0xe5,0x09,0x54,0x1f,0xfe,0xe4,0x93,0xa3,0x60,0x01, +0x0e,0xcf,0x54,0xc0,0x25,0xe0,0x60,0xa8,0x40,0xb8,0xe4,0x93,0xa3,0xfa,0xe4,0x93, +0xa3,0xf8,0xe4,0x93,0xa3,0xc8,0xc5,0x82,0xc8,0xca,0xc5,0x83,0xca,0xf0,0xa3,0xc8, +0xc5,0x82,0xc8,0xca,0xc5,0x83,0xca,0xdf,0xe9,0xde,0xe7,0x80,0xbe,0x41,0x9e,0x77, +0x00,0x41,0x9e,0xae,0x00,0x41,0x9e,0x54,0x80,0x41,0x9e,0xb0,0x00,0x00,0xf0,0x90, +0x9e,0x5d,0xe0,0x90,0x9e,0x86,0xf0,0xe4,0xfb,0xfd,0x7f,0x54,0x7e,0x01,0xd3,0x10, +0xaf,0x01,0xc3,0xc0,0xd0,0x90,0x9e,0x85,0xe0,0xfb,0xa3,0xe0,0xf5,0x44,0xe4,0xf5, +0x45,0x12,0x35,0xab,0xd0,0xd0,0x92,0xaf,0x22,0x90,0x01,0x5f,0xe4,0xf0,0x90,0x01, +0x3c,0x74,0x08,0xf0,0xe4,0x90,0x9e,0x85,0xf0,0x90,0x9e,0x5b,0xe0,0x90,0x9e,0x86, +0xf0,0xe4,0xfb,0xfd,0x7f,0x5c,0x7e,0x01,0x91,0x5e,0x90,0x01,0x5f,0x74,0x05,0xf0, +0x90,0x06,0x92,0x74,0x02,0xf0,0x90,0x9e,0x63,0x14,0xf0,0xe5,0x61,0x54,0x0f,0xc3, +0x94,0x0c,0x50,0x03,0x12,0x54,0xe3,0x22,0x8f,0x82,0x8e,0x83,0xa3,0xa3,0xa3,0xe4, +0xf0,0x22,0xe4,0xf5,0x65,0x7f,0x60,0x7e,0x01,0x80,0xed,0x7d,0x01,0xaf,0x62,0x02, +0x54,0xe7,0xb1,0xb0,0xbf,0x01,0x12,0x90,0x9e,0x79,0xe0,0xff,0xe4,0xfd,0xf1,0x79, +0x12,0x5f,0xf7,0x90,0x04,0x1f,0x74,0x20,0xf0,0x22,0xb1,0xb0,0xbf,0x01,0x0f,0x90, +0x02,0x09,0xe0,0xff,0x7d,0x01,0xf1,0x79,0x90,0x04,0x1f,0x74,0x20,0xf0,0x22,0x22, +0x22,0x22,0x00,0x02,0x45,0x03,0x02,0x45,0x06,0xd3,0x10,0xaf,0x01,0xc3,0xc0,0xd0, +0x8b,0x20,0x8a,0x21,0x89,0x22,0x90,0x9e,0x87,0x71,0x8b,0xab,0x23,0xaa,0x24,0xa9, +0x25,0x90,0x9e,0x8a,0x71,0x8b,0xaf,0x26,0x15,0x26,0xef,0x60,0x1b,0x90,0x9e,0x8a, +0xe4,0x75,0xf0,0x01,0x71,0x74,0x12,0x29,0xd9,0xff,0x90,0x9e,0x87,0xe4,0x75,0xf0, +0x01,0x71,0x74,0xef,0x51,0x4d,0x80,0xde,0xab,0x20,0xaa,0x21,0xa9,0x22,0xd0,0xd0, +0x92,0xaf,0x22,0x90,0x9e,0x11,0x12,0x2a,0x8b,0x00,0x00,0x00,0x00,0x90,0x06,0xa9, +0xe0,0x90,0x9e,0x10,0xf0,0xe0,0x54,0xc0,0x70,0x08,0x53,0x64,0xfe,0x53,0x64,0xfd, +0x91,0xcb,0x90,0x9e,0x10,0xe0,0x30,0xe6,0x13,0x43,0x64,0x01,0x90,0x9e,0x66,0xe0, +0x64,0x02,0x60,0x04,0x91,0xd2,0x80,0x07,0x91,0x79,0x80,0x03,0x53,0x64,0xfe,0x90, +0x9e,0x10,0xe0,0x30,0xe7,0x16,0x43,0x64,0x02,0xe4,0x90,0x9e,0x85,0x91,0x4e,0x90, +0x01,0x57,0x74,0x05,0xf0,0x90,0x9e,0x67,0x74,0x01,0xf0,0x22,0x53,0x64,0xfd,0x22, +0xd3,0x10,0xaf,0x01,0xc3,0xc0,0xd0,0x90,0x01,0xc4,0x74,0xb0,0xf0,0x74,0x45,0xa3, +0xf0,0x90,0x04,0x1d,0xe0,0x60,0x1a,0x90,0x05,0x22,0xe0,0x54,0x90,0x60,0x07,0x90, +0x01,0xc6,0xe0,0x44,0x40,0xf0,0x90,0x01,0xc7,0xe0,0x30,0xe1,0xe4,0x7f,0x00,0x80, +0x02,0x7f,0x01,0xd0,0xd0,0x92,0xaf,0x22,0xc0,0xe0,0xc0,0xf0,0xc0,0x83,0xc0,0x82, +0xc0,0xd0,0x75,0xd0,0x00,0xc0,0x00,0xc0,0x01,0xc0,0x02,0xc0,0x03,0xc0,0x04,0xc0, +0x05,0xc0,0x06,0xc0,0x07,0x75,0x13,0x00,0x90,0x01,0xc4,0x74,0xe8,0xf0,0x74,0x45, +0xa3,0xf0,0x53,0x91,0xdf,0x90,0x01,0x3c,0xe0,0x55,0x30,0xf5,0x34,0xa3,0xe0,0x55, +0x31,0xf5,0x35,0xa3,0xe0,0x55,0x32,0xf5,0x36,0xa3,0xe0,0x55,0x33,0xf5,0x37,0xe5, +0x34,0x30,0xe0,0x06,0x90,0x01,0x3c,0x74,0x01,0xf0,0xe5,0x34,0x30,0xe1,0x09,0x90, +0x01,0x3c,0x74,0x02,0xf0,0x12,0x61,0xc9,0xe5,0x34,0x30,0xe2,0x38,0x90,0x01,0x3c, +0x74,0x04,0xf0,0x90,0x06,0x92,0xe0,0x30,0xe0,0x24,0x90,0x9e,0x85,0xe4,0xf0,0x90, +0x9e,0x5b,0xe0,0x90,0x9e,0x86,0xf0,0xe4,0xfb,0xfd,0x7f,0x58,0x7e,0x01,0x91,0x5e, +0x90,0x01,0x5b,0x74,0x05,0xf0,0x90,0x06,0x92,0x74,0x01,0xf0,0x80,0x07,0x90,0x9e, +0x64,0xe4,0xf0,0x91,0xcb,0xe5,0x34,0x30,0xe3,0x38,0x90,0x01,0x3c,0x74,0x08,0xf0, +0x90,0x06,0x92,0xe0,0x30,0xe1,0x24,0x90,0x9e,0x85,0xe4,0xf0,0x90,0x9e,0x5b,0xe0, +0x90,0x9e,0x86,0xf0,0xe4,0xfb,0xfd,0x7f,0x5c,0x7e,0x01,0x91,0x5e,0x90,0x01,0x5f, +0x74,0x05,0xf0,0x90,0x06,0x92,0x74,0x02,0xf0,0x80,0x07,0x90,0x9e,0x63,0xe4,0xf0, +0x91,0xcb,0xe5,0x34,0x30,0xe4,0x09,0x90,0x01,0x3c,0x74,0x10,0xf0,0x12,0x4b,0xfb, +0xe5,0x34,0x30,0xe5,0x09,0x90,0x01,0x3c,0x74,0x20,0xf0,0x12,0x4c,0x3d,0xe5,0x35, +0x30,0xe0,0x44,0x90,0x01,0x3d,0x74,0x01,0xf0,0x90,0x01,0x2f,0xe0,0x44,0x7f,0xf0, +0x90,0x00,0x83,0xe0,0x54,0x0f,0xf5,0x13,0xb4,0x01,0x02,0x80,0x1c,0xe5,0x13,0xb4, +0x02,0x05,0x90,0x00,0x83,0x80,0x12,0xe5,0x13,0xb4,0x04,0x05,0x90,0x00,0x83,0x80, +0x08,0xe5,0x13,0xb4,0x0c,0x06,0x90,0x00,0x83,0xe0,0xf5,0x62,0x90,0x01,0xbb,0xe5, +0x62,0xf0,0x12,0x60,0xc0,0x91,0xcb,0xe5,0x35,0x30,0xe2,0x06,0x90,0x01,0x3d,0x74, +0x04,0xf0,0xe5,0x35,0x30,0xe4,0x06,0x90,0x01,0x3d,0x74,0x10,0xf0,0xe5,0x36,0x30, +0xe0,0x06,0x90,0x01,0x3e,0x74,0x01,0xf0,0xe5,0x36,0x30,0xe1,0x06,0x90,0x01,0x3e, +0x74,0x02,0xf0,0x74,0xe8,0x04,0x90,0x01,0xc4,0xf0,0x74,0x45,0xa3,0xf0,0xd0,0x07, +0xd0,0x06,0xd0,0x05,0xd0,0x04,0xd0,0x03,0xd0,0x02,0xd0,0x01,0xd0,0x00,0xd0,0xd0, +0xd0,0x82,0xd0,0x83,0xd0,0xf0,0xd0,0xe0,0x32,0x90,0x9e,0x98,0xef,0xf0,0xa3,0xed, +0xf0,0xe4,0xa3,0xf0,0xa3,0xf0,0xe5,0x63,0x60,0x05,0xe4,0xff,0x12,0x54,0x97,0x90, +0x9e,0x98,0xe0,0x30,0xe0,0x09,0x90,0x9e,0x9a,0xe4,0xf0,0xa3,0x74,0x80,0xf0,0x90, +0x9e,0x98,0xe0,0xff,0xc3,0x13,0x90,0xfd,0x10,0xf0,0x90,0x04,0x25,0xef,0xf0,0x90, +0x9e,0x99,0xe0,0x60,0x1f,0xa3,0xa3,0xe0,0xff,0x24,0x0f,0xf5,0x82,0xe4,0x34,0xfc, +0xf5,0x83,0xe0,0x44,0x80,0xf0,0x74,0x10,0x2f,0xf5,0x82,0xe4,0x34,0xfc,0xf5,0x83, +0xe0,0x44,0x80,0xf0,0x90,0x9e,0x9a,0xa3,0xe0,0xff,0xfd,0x24,0x08,0xf5,0x82,0xe4, +0x34,0xfc,0xf5,0x83,0xe4,0xf0,0x74,0x09,0x2d,0xf5,0x82,0xe4,0x34,0xfc,0xf5,0x83, +0xe0,0x54,0xf0,0xf0,0x74,0x21,0x2f,0xf5,0x82,0xe4,0x34,0xfc,0xf5,0x83,0xe0,0x54, +0xf7,0xf0,0x90,0x9e,0x9a,0xe0,0xfe,0xa3,0xe0,0xff,0x22,0x75,0x28,0x33,0xe4,0xf5, +0x29,0x75,0x2a,0x07,0xf5,0x2b,0x90,0x01,0x30,0xe5,0x28,0xf0,0xa3,0xe5,0x29,0xf0, +0xa3,0xe5,0x2a,0xf0,0xa3,0xe5,0x2b,0xf0,0x22,0xe4,0x90,0x9e,0x16,0xf0,0xa3,0xf0, +0x75,0x8e,0x02,0xf1,0xa1,0xf1,0xe9,0x90,0x9e,0x7e,0xef,0xf0,0xf1,0xdd,0x90,0x9e, +0x80,0xef,0xf0,0xf1,0xf6,0x90,0x9e,0x75,0xee,0xf0,0xa3,0xef,0xf0,0xe4,0xf5,0x57, +0x12,0x6e,0x77,0xf1,0xd4,0x12,0x60,0x4b,0x12,0x32,0x3d,0xf1,0xc9,0x11,0x0b,0x12, +0x50,0x0e,0xf1,0xcd,0xf1,0xb1,0x12,0x44,0xff,0xf1,0x45,0x90,0x9e,0x18,0xe5,0xd9, +0xf0,0x11,0xd0,0xc2,0xaf,0x90,0x00,0x80,0xe0,0x44,0x40,0xf0,0xb1,0x45,0x75,0xe8, +0x03,0x43,0xa8,0x85,0xd2,0xaf,0x90,0x9e,0x16,0xe0,0x64,0x01,0xf0,0x24,0x29,0x90, +0x01,0xc4,0xf0,0x74,0x48,0xa3,0xf0,0xe5,0x57,0x30,0xe4,0x0a,0xc2,0xaf,0x53,0x57, +0xef,0xd2,0xaf,0x12,0x58,0x74,0xe5,0x57,0x30,0xe6,0x17,0xc2,0xaf,0x53,0x57,0xbf, +0xd2,0xaf,0x12,0x67,0xa1,0x90,0x9e,0x43,0xe0,0xff,0x60,0x03,0xb4,0x01,0x03,0x12, +0x7b,0x49,0x90,0x9e,0x43,0xe0,0x70,0x03,0x12,0x7c,0x4c,0x12,0x73,0x85,0x80,0xb6, +0x90,0x01,0x3c,0x74,0xff,0xf0,0xa3,0xf0,0xa3,0xf0,0x90,0x01,0x34,0xf0,0xa3,0xf0, +0xa3,0xf0,0xa3,0xf0,0xfd,0x7f,0x54,0x31,0x05,0x7d,0xff,0x7f,0x55,0x31,0x05,0x7d, +0xff,0x7f,0x56,0x31,0x05,0x7d,0xff,0x7f,0x57,0x80,0x0a,0xf0,0x90,0x00,0x45,0xe0, +0x54,0xfe,0xfd,0x7f,0x45,0xd3,0x10,0xaf,0x01,0xc3,0xc0,0xd0,0x8f,0x82,0x75,0x83, +0x00,0xed,0xf0,0xb1,0x45,0xd0,0xd0,0x92,0xaf,0x22,0xef,0x14,0x60,0x30,0x14,0x60, +0x66,0x24,0x02,0x60,0x02,0x21,0xc1,0x90,0x9e,0x3f,0x74,0x02,0xf0,0x90,0x00,0x48, +0xe0,0x44,0x0c,0xfd,0x7f,0x48,0x31,0x05,0x90,0x00,0x47,0xe0,0x44,0x08,0xfd,0x7f, +0x47,0x31,0x05,0x90,0x00,0x45,0xe0,0x44,0x10,0xfd,0x7f,0x45,0x80,0x71,0xe4,0x90, +0x9e,0x3f,0xf0,0x90,0x9e,0x3b,0x12,0x43,0x53,0x90,0x80,0x85,0x12,0x2a,0x7f,0x7f, +0x80,0x7e,0x08,0x12,0x2f,0xd9,0x90,0x00,0x45,0xe0,0x44,0xef,0xfd,0x7f,0x45,0x31, +0x05,0x90,0x00,0x45,0xe0,0x54,0xef,0xfd,0x7f,0x45,0x31,0x05,0x90,0x00,0x46,0xe0, +0x44,0x10,0xfd,0x7f,0x46,0x80,0x38,0x90,0x9e,0x3f,0x74,0x01,0xf0,0x90,0x9e,0x45, +0x12,0x43,0x53,0x90,0x80,0x85,0x12,0x2a,0x7f,0x7f,0x80,0x7e,0x08,0x12,0x2f,0xd9, +0x90,0x00,0x45,0xe0,0x44,0x20,0xfd,0x7f,0x45,0x31,0x05,0x90,0x00,0x45,0xe0,0x44, +0x10,0xfd,0x7f,0x45,0x31,0x05,0x90,0x00,0x46,0xe0,0x44,0x10,0xfd,0x7f,0x46,0x31, +0x05,0x22,0x90,0x00,0x02,0x12,0x42,0x20,0x90,0x9e,0x41,0xf0,0x90,0x00,0x01,0x12, +0x42,0x20,0x25,0xe0,0x25,0xe0,0x90,0x9e,0x40,0xf0,0x12,0x29,0xd9,0x25,0xe0,0x25, +0xe0,0x90,0x9e,0x44,0xf0,0x90,0x05,0x60,0xe0,0x90,0x9e,0x4f,0xf0,0x90,0x05,0x61, +0xe0,0x90,0x9e,0x50,0xf0,0x90,0x05,0x62,0xe0,0x90,0x9e,0x51,0xf0,0x90,0x05,0x63, +0xe0,0x90,0x9e,0x52,0xf0,0xa2,0xaf,0xe4,0x33,0x90,0x9e,0x24,0xf0,0xc2,0xaf,0x90, +0x9e,0x40,0xe0,0xff,0x91,0xf0,0x90,0x9e,0x24,0xe0,0x24,0xff,0x92,0xaf,0x90,0x9e, +0x41,0xe0,0x70,0x02,0x41,0xc8,0x90,0x9e,0x40,0xe0,0x70,0x02,0x41,0xc8,0x90,0x9e, +0x44,0xe0,0x70,0x02,0x41,0xc8,0xa2,0xaf,0xe4,0x33,0x90,0x9e,0x24,0xf0,0xc2,0xaf, +0x90,0x9e,0x53,0x74,0x01,0xf0,0x90,0x9e,0x24,0xe0,0x24,0xff,0x92,0xaf,0x11,0xfc, +0x90,0x00,0x46,0xe0,0x44,0x01,0xfd,0x7f,0x46,0x31,0x05,0x90,0x9e,0x39,0xe0,0x60, +0x15,0x90,0x9e,0x45,0x12,0x43,0x53,0x90,0x80,0x85,0x12,0x2a,0x7f,0x7f,0x80,0x7e, +0x08,0x12,0x2f,0xd9,0x80,0x06,0x90,0x05,0x22,0x74,0x7f,0xf0,0x90,0x00,0x45,0xe0, +0x54,0xef,0xfd,0x7f,0x45,0x31,0x05,0x90,0x05,0x87,0xe0,0x64,0x80,0xf0,0x90,0x9e, +0x4f,0xe0,0x90,0x05,0x84,0xf0,0x90,0x9e,0x50,0xe0,0x90,0x05,0x85,0xf0,0x90,0x9e, +0x51,0xe0,0x90,0x05,0x86,0xf0,0x90,0x9e,0x52,0xe0,0x90,0x05,0x87,0xf0,0xa2,0xaf, +0xe4,0x33,0x90,0x9e,0x24,0xf0,0xc2,0xaf,0x90,0x01,0x3c,0xe0,0x44,0x20,0xf0,0x7d, +0x20,0xe4,0xff,0x12,0x37,0x00,0x80,0x2b,0x90,0x9e,0x41,0xe0,0x70,0x2d,0x90,0x9e, +0x53,0x11,0xfb,0x90,0x00,0x46,0xe0,0x54,0xfe,0xfd,0x7f,0x46,0x31,0x05,0x90,0x05, +0x22,0xe4,0xf0,0xa2,0xaf,0x33,0x90,0x9e,0x24,0xf0,0xc2,0xaf,0x7d,0x20,0xe4,0xff, +0x12,0x36,0x92,0x90,0x9e,0x24,0xe0,0x24,0xff,0x92,0xaf,0x22,0x8b,0x14,0x8a,0x15, +0x89,0x16,0x90,0x00,0x02,0x12,0x42,0x20,0x90,0x9e,0x42,0xf0,0xe0,0x30,0xe0,0x4b, +0x90,0x9e,0x39,0x74,0x01,0xf0,0x7f,0x80,0x7e,0x08,0x12,0x27,0xde,0x90,0x9e,0x3b, +0x12,0x2a,0x7f,0xab,0x14,0xaa,0x15,0xa9,0x16,0x90,0x00,0x01,0x12,0x42,0x20,0xff, +0xe4,0xfc,0xfd,0xfe,0x78,0x1a,0x12,0x2a,0x6c,0xa8,0x04,0xa9,0x05,0xaa,0x06,0xab, +0x07,0x90,0x9e,0x3b,0x12,0x43,0x53,0xec,0x54,0x03,0xfc,0x12,0x43,0x46,0x90,0x9e, +0x45,0x12,0x2a,0x7f,0x90,0x05,0x22,0xe4,0xf0,0x80,0x2d,0xe4,0x90,0x9e,0x39,0xf0, +0x7f,0x80,0x7e,0x08,0x12,0x27,0xde,0xec,0x54,0x03,0xfc,0xec,0x44,0xc0,0xfc,0x90, +0x9e,0x3b,0x12,0x2a,0x7f,0x90,0x9e,0x3b,0x12,0x43,0x53,0x90,0x80,0x85,0x12,0x2a, +0x7f,0x7f,0x80,0x7e,0x08,0x12,0x2f,0xd9,0x90,0x9e,0x42,0xe0,0x30,0xe1,0x19,0x7d, +0x0c,0x7f,0x47,0x31,0x05,0x90,0x00,0x48,0xe0,0x44,0x0c,0xfd,0x7f,0x48,0x31,0x05, +0x90,0x00,0x46,0xe0,0x44,0x10,0x80,0x1c,0x90,0x00,0x47,0xe0,0x54,0xf3,0xfd,0x7f, +0x47,0x31,0x05,0x90,0x00,0x48,0xe0,0x54,0xf3,0xfd,0x7f,0x48,0x31,0x05,0x90,0x00, +0x46,0xe0,0x54,0xef,0xfd,0x7f,0x46,0x31,0x05,0xe4,0x90,0x9e,0x3f,0xf0,0x22,0x90, +0x01,0x30,0xe4,0xf0,0xa3,0xf0,0xa3,0xf0,0xa3,0xf0,0x90,0x01,0x38,0xf0,0xa3,0xf0, +0xa3,0xf0,0xa3,0xf0,0xfd,0x7f,0x50,0x31,0x05,0xe4,0xfd,0x7f,0x51,0x31,0x05,0xe4, +0xfd,0x7f,0x52,0x31,0x05,0xe4,0xfd,0x7f,0x53,0x21,0x05,0xe5,0x65,0x64,0x01,0x70, +0x3b,0xd1,0x85,0xbf,0x01,0x04,0x7f,0x01,0xd1,0x79,0x90,0x00,0x46,0xe0,0x44,0x04, +0xfd,0x7f,0x46,0x31,0x05,0x90,0x00,0x44,0xe0,0x54,0xfb,0xfd,0x7f,0x44,0x31,0x05, +0x90,0x00,0x46,0xe0,0x54,0xfb,0xfd,0x7f,0x46,0x31,0x05,0x7f,0x02,0xd1,0xa1,0x8f, +0x69,0x90,0x01,0xc9,0xe5,0x69,0xf0,0xb4,0x01,0x02,0xd1,0x19,0x22,0x90,0x9e,0x41, +0xe0,0x64,0x01,0x60,0x02,0x81,0xef,0x90,0x00,0x46,0xe0,0x44,0x01,0xfd,0x7f,0x46, +0x31,0x05,0x90,0x9e,0x53,0xe0,0x70,0x31,0x90,0x9e,0x39,0xe0,0x60,0x15,0x90,0x9e, +0x45,0x12,0x43,0x53,0x90,0x80,0x85,0x12,0x2a,0x7f,0x7f,0x80,0x7e,0x08,0x12,0x2f, +0xd9,0x80,0x06,0x90,0x05,0x22,0x74,0x7f,0xf0,0x90,0x9e,0x40,0xe0,0xff,0x91,0xf0, +0x90,0x9e,0x53,0x74,0x01,0x11,0xfb,0x80,0x3f,0x90,0x9e,0x53,0xe0,0x64,0x01,0x70, +0x37,0x90,0x9e,0x44,0xe0,0xff,0x91,0xf0,0xe4,0x90,0x9e,0x53,0xf0,0x90,0x00,0x45, +0xe0,0x44,0x01,0xfd,0x7f,0x45,0x31,0x05,0x90,0x9e,0x39,0xe0,0x60,0x15,0x90,0x9e, +0x3b,0x12,0x43,0x53,0x90,0x80,0x85,0x12,0x2a,0x7f,0x7f,0x80,0x7e,0x08,0x12,0x2f, +0xd9,0x80,0x05,0x90,0x05,0x22,0xe4,0xf0,0x90,0x05,0x87,0xe0,0x64,0x80,0xf0,0x90, +0x9e,0x4f,0xe0,0x90,0x05,0x84,0xf0,0x90,0x9e,0x50,0xe0,0x90,0x05,0x85,0xf0,0x90, +0x9e,0x51,0xe0,0x90,0x05,0x86,0xf0,0x90,0x9e,0x52,0xe0,0x90,0x05,0x87,0xf0,0x22, +0x90,0x05,0x60,0xe0,0x90,0x9e,0x4f,0xf0,0x90,0x05,0x61,0xe0,0x90,0x9e,0x50,0xf0, +0x90,0x05,0x62,0xe0,0x90,0x9e,0x51,0xf0,0x90,0x05,0x63,0xe0,0x90,0x9e,0x52,0xf0, +0xc3,0x74,0xff,0x9f,0xfe,0x90,0x9e,0x50,0xe0,0xd3,0x9e,0x40,0x1e,0xe0,0x2f,0xf0, +0xa3,0xe0,0xb4,0xff,0x0f,0xe4,0xf0,0xa3,0xe0,0xb4,0xff,0x03,0xe4,0xf0,0x22,0x90, +0x9e,0x52,0x80,0x03,0x90,0x9e,0x51,0xe0,0x04,0xf0,0x22,0x90,0x9e,0x50,0xe0,0x2f, +0xf0,0x22,0xe0,0x5f,0xf0,0xd3,0x10,0xaf,0x01,0xc3,0xc0,0xd0,0x7f,0x10,0xdf,0xfe, +0xd0,0xd0,0x92,0xaf,0x22,0xd3,0x10,0xaf,0x01,0xc3,0xc0,0xd0,0x90,0x9e,0x2a,0xed, +0xf0,0x90,0x9e,0x29,0xef,0xf0,0xd3,0x94,0x07,0x50,0x4e,0xa3,0xe0,0x70,0x1a,0x90, +0x9e,0x29,0xe0,0xff,0x74,0x01,0xa8,0x07,0x08,0x80,0x02,0xc3,0x33,0xd8,0xfc,0xf4, +0xff,0x90,0x00,0x47,0xe0,0x5f,0xf0,0x80,0x17,0x90,0x9e,0x29,0xe0,0xff,0x74,0x01, +0xa8,0x07,0x08,0x80,0x02,0xc3,0x33,0xd8,0xfc,0xff,0x90,0x00,0x47,0xe0,0x4f,0xf0, +0xb1,0x45,0x90,0x9e,0x29,0xe0,0xff,0x74,0x01,0xa8,0x07,0x08,0x80,0x02,0xc3,0x33, +0xd8,0xfc,0xf4,0xff,0x90,0x00,0x46,0x80,0x59,0x90,0x9e,0x29,0xe0,0x24,0xf8,0xf0, +0xa3,0xe0,0x70,0x1d,0x90,0x9e,0x29,0xe0,0xff,0x74,0x01,0xa8,0x07,0x08,0x80,0x02, +0xc3,0x33,0xd8,0xfc,0xc4,0x54,0xf0,0xf4,0xff,0x90,0x00,0x43,0xe0,0x5f,0xf0,0x80, +0x1a,0x90,0x9e,0x29,0xe0,0xff,0x74,0x01,0xa8,0x07,0x08,0x80,0x02,0xc3,0x33,0xd8, +0xfc,0xc4,0x54,0xf0,0xff,0x90,0x00,0x43,0xe0,0x4f,0xf0,0xb1,0x45,0x90,0x9e,0x29, +0xe0,0xff,0x74,0x01,0xa8,0x07,0x08,0x80,0x02,0xc3,0x33,0xd8,0xfc,0xf4,0xff,0x90, +0x00,0x43,0xb1,0x42,0xd0,0xd0,0x92,0xaf,0x22,0x90,0x00,0x49,0xe0,0x90,0x9e,0xb1, +0xf0,0xe0,0x54,0x0f,0xf0,0x44,0xf0,0xfd,0x7f,0x49,0x31,0x05,0x90,0x9e,0xb1,0xe0, +0x44,0xb0,0xfd,0x7f,0x49,0x21,0x05,0x90,0x9e,0x27,0xee,0xf0,0xa3,0xef,0xf0,0x75, +0x65,0x01,0x8e,0x66,0xf5,0x67,0xe4,0xfd,0x7f,0x0b,0xb1,0x55,0xe4,0xfd,0x7f,0x02, +0xb1,0x55,0xd1,0x85,0xe4,0xff,0xd1,0x79,0xe4,0xf5,0x69,0x90,0x01,0xc9,0xe5,0x69, +0xf0,0x90,0x9e,0x27,0xe0,0xfc,0xa3,0xe0,0xfd,0xec,0xfb,0x8d,0x44,0xe4,0xf5,0x45, +0x7d,0x01,0x7f,0x60,0x7e,0x01,0x02,0x35,0xab,0x90,0x01,0xca,0xe5,0x68,0xf0,0xef, +0x60,0x02,0xd1,0x19,0x22,0x7f,0x0b,0xd1,0xa1,0xef,0x65,0x68,0x60,0x10,0xe5,0x68, +0xb4,0x01,0x05,0xe4,0xf5,0x68,0x80,0x03,0x75,0x68,0x01,0x7f,0x01,0x22,0x7f,0x00, +0x22,0xd3,0x10,0xaf,0x01,0xc3,0xc0,0xd0,0x90,0x9e,0xb2,0xef,0xf0,0xd3,0x94,0x07, +0x50,0x43,0xe0,0xff,0x74,0x01,0xa8,0x07,0x08,0x80,0x02,0xc3,0x33,0xd8,0xfc,0xf4, +0xff,0x90,0x00,0x46,0xb1,0x42,0x90,0x9e,0xb2,0xe0,0xfd,0x74,0x01,0x7e,0x00,0xa8, +0x05,0x08,0x80,0x05,0xc3,0x33,0xce,0x33,0xce,0xd8,0xf9,0xff,0x90,0x00,0x44,0xe0, +0xfb,0xe4,0xfe,0xef,0x5b,0xa8,0x05,0x08,0x80,0x06,0xce,0xa2,0xe7,0x13,0xce,0x13, +0xd8,0xf8,0xff,0x80,0x4b,0x90,0x9e,0xb2,0xe0,0x24,0xf8,0xf0,0xe0,0xff,0x74,0x01, +0xa8,0x07,0x08,0x80,0x02,0xc3,0x33,0xd8,0xfc,0xf4,0xff,0x90,0x00,0x43,0xe0,0x5f, +0xf0,0xb1,0x45,0x90,0x9e,0xb2,0xe0,0xfd,0x74,0x01,0x7e,0x00,0xa8,0x05,0x08,0x80, +0x05,0xc3,0x33,0xce,0x33,0xce,0xd8,0xf9,0xff,0x90,0x00,0x42,0xe0,0xfb,0xe4,0xfe, +0xef,0x5b,0xa8,0x05,0x08,0x80,0x06,0xce,0xa2,0xe7,0x13,0xce,0x13,0xd8,0xf8,0xff, +0xd0,0xd0,0x92,0xaf,0x22,0xe4,0xfd,0x7f,0x45,0x31,0x05,0x90,0x04,0xfd,0xe4,0xf0, +0xa3,0xf0,0x90,0x9e,0x43,0xf0,0x90,0x9e,0x49,0xf0,0x90,0x9e,0x4c,0xf0,0x90,0x9e, +0x4a,0xf0,0x90,0x9e,0x4d,0xf0,0x90,0x9e,0x4b,0xf0,0x90,0x9e,0x4e,0xf0,0x90,0x9e, +0x35,0x04,0xf0,0xe4,0xa3,0xf0,0xa3,0xf0,0xa3,0xf0,0x90,0x9e,0x3a,0xf0,0x90,0x9e, +0x3f,0xf0,0x90,0x9e,0x41,0xf0,0x90,0x9e,0x53,0xf0,0x90,0x9e,0x44,0xf0,0x90,0x9e, +0x40,0xf0,0x90,0x9e,0x39,0xf0,0x90,0x00,0x51,0xe0,0x44,0xc0,0xfd,0x7f,0x51,0x21, +0x05,0xe4,0x90,0x9e,0x7d,0xf0,0x90,0x00,0x80,0xe0,0x44,0x80,0xfd,0x7f,0x80,0x21, +0x05,0x75,0x30,0x1f,0x75,0x31,0x01,0xe4,0xf5,0x32,0x90,0x01,0x38,0xe5,0x30,0xf0, +0xa3,0xe5,0x31,0xf0,0xa3,0xe5,0x32,0xf0,0x22,0xe4,0xf5,0x68,0x22,0x90,0x01,0x64, +0x74,0xa0,0xf0,0x22,0x90,0x9e,0x80,0xe0,0x90,0x9e,0x0f,0xf0,0x22,0x90,0x00,0xf3, +0xe0,0x7f,0x00,0x30,0xe3,0x02,0x7f,0x01,0x22,0x90,0x00,0x02,0xe0,0x54,0xe0,0x7f, +0x01,0x60,0x02,0x7f,0x00,0x22,0x90,0x9e,0x80,0xe0,0xb4,0x01,0x0c,0x90,0x00,0xf2, +0xe0,0x30,0xe7,0x05,0x7e,0xfd,0x7f,0x33,0x22,0x7e,0xfd,0x7f,0x2f,0x22,0x90,0x00, +0xf3,0xe0,0x30,0xe2,0x0d,0x90,0x05,0x41,0x74,0x10,0xf0,0x90,0x05,0x5a,0xf0,0xa3, +0xe4,0xf0,0x22,0x90,0x01,0x02,0xe0,0x54,0x03,0xff,0xe0,0x54,0x0c,0x13,0x13,0x54, +0x3f,0xfe,0xef,0x64,0x01,0x60,0x04,0xef,0xb4,0x03,0x10,0x90,0x9e,0x10,0x74,0x01, +0xf0,0xa3,0x74,0x37,0xf0,0xa3,0x74,0x01,0xf0,0x80,0x1a,0xee,0x64,0x01,0x60,0x07, +0xaf,0x06,0xee,0x64,0x03,0x70,0x49,0x90,0x9e,0x10,0x74,0x01,0xf0,0xa3,0x74,0x3d, +0xf0,0xa3,0x74,0x40,0xf0,0x90,0x9e,0x10,0xe0,0xfe,0xa3,0xe0,0xff,0xf5,0x82,0x8e, +0x83,0xe0,0xfd,0x90,0x9e,0x12,0xe0,0xfc,0xed,0x5c,0x60,0x0c,0x8f,0x82,0x8e,0x83, +0xec,0xf0,0xe4,0x90,0x9e,0x77,0xf0,0x22,0x90,0x9e,0x77,0xe0,0x04,0xf0,0xe0,0xc3, +0x94,0x0a,0x40,0x0c,0xe4,0xf0,0x90,0x04,0x19,0xe0,0x30,0xe0,0x03,0x12,0x44,0xea, +0x22,0xc0,0xe0,0xc0,0xf0,0xc0,0x83,0xc0,0x82,0xc0,0xd0,0x75,0xd0,0x00,0xc0,0x00, +0xc0,0x01,0xc0,0x02,0xc0,0x03,0xc0,0x04,0xc0,0x05,0xc0,0x06,0xc0,0x07,0x90,0x01, +0xc4,0x74,0xa1,0xf0,0x74,0x50,0xa3,0xf0,0x90,0x01,0x34,0xe0,0x55,0x28,0xf5,0x2c, +0xa3,0xe0,0x55,0x29,0xf5,0x2d,0xa3,0xe0,0x55,0x2a,0xf5,0x2e,0xa3,0xe0,0x55,0x2b, +0xf5,0x2f,0xe5,0x2c,0x20,0xe0,0x02,0x41,0x46,0x90,0x01,0x34,0x74,0x01,0xf0,0x85, +0xd1,0x4d,0x85,0xd2,0x4e,0x85,0xd3,0x4f,0x85,0xd4,0x50,0x85,0xd5,0x51,0x85,0xd6, +0x52,0x85,0xd7,0x53,0x85,0xd9,0x54,0xe5,0x54,0x54,0x40,0xc3,0x13,0xff,0xe5,0x53, +0x54,0x20,0x6f,0x70,0x02,0x21,0xf5,0xe5,0x54,0x30,0xe5,0x02,0x21,0xf5,0xe5,0x52, +0x54,0x3f,0xf5,0x08,0xe5,0x4d,0x54,0x3f,0xf5,0x09,0xe5,0x51,0x54,0x1f,0xff,0xe5, +0x08,0x25,0xe0,0x24,0xc4,0xf5,0x82,0xe4,0x34,0x99,0xf5,0x83,0xe4,0x8f,0xf0,0x12, +0x42,0x81,0xe5,0x53,0x54,0x1f,0xff,0xe5,0x08,0x25,0xe0,0x24,0x80,0xf5,0x82,0xe4, +0x34,0x93,0xf5,0x83,0xe4,0x8f,0xf0,0x12,0x42,0x81,0xe5,0x09,0xd3,0x94,0x04,0x40, +0x03,0x75,0x09,0x04,0x75,0xf0,0x0a,0xe5,0x08,0x90,0x90,0x00,0x12,0x43,0x5f,0x75, +0xf0,0x02,0xe5,0x09,0x12,0x43,0x5f,0xe0,0xfe,0xa3,0xe0,0xff,0xe5,0x53,0x54,0x1f, +0x2f,0xff,0xe4,0x3e,0xfe,0x75,0xf0,0x0a,0xe5,0x08,0x90,0x90,0x00,0x12,0x43,0x5f, +0x75,0xf0,0x02,0xe5,0x09,0x12,0x43,0x5f,0xee,0xf0,0xa3,0xef,0xf0,0xe5,0x54,0x20, +0xe6,0x24,0xe5,0x53,0x54,0x1f,0xff,0xe5,0x08,0x25,0xe0,0x24,0xc4,0xf5,0x82,0xe4, +0x34,0x98,0xf5,0x83,0xe4,0x8f,0xf0,0x12,0x42,0x81,0xe5,0x4f,0x30,0xe7,0x36,0xaf, +0x08,0x12,0x63,0x51,0x80,0x2f,0xe5,0x53,0x54,0x1f,0xff,0xe5,0x08,0x25,0xe0,0x24, +0x44,0xf5,0x82,0xe4,0x34,0x99,0xf5,0x83,0xe4,0x8f,0xf0,0x12,0x42,0x81,0xe5,0x4f, +0x30,0xe7,0x12,0xe5,0x4f,0x54,0x7f,0xfd,0xe5,0x53,0x54,0x1f,0xf5,0x0d,0xab,0x09, +0xaf,0x08,0x12,0x62,0xee,0xe5,0x63,0x14,0x24,0xfd,0x50,0x02,0x80,0x48,0x90,0x9e, +0x66,0xe0,0x60,0x3a,0x90,0x01,0x5b,0xe4,0xf0,0x90,0x01,0x3c,0x74,0x04,0xf0,0x71, +0xc3,0xef,0x64,0x01,0x70,0x30,0x90,0x9e,0x85,0xf0,0x90,0x9e,0x5b,0xe0,0x90,0x9e, +0x86,0xf0,0xe4,0xfb,0xfd,0x7f,0x58,0x7e,0x01,0x12,0x44,0x5e,0x90,0x01,0x5b,0x74, +0x05,0xf0,0x90,0x06,0x92,0x74,0x01,0xf0,0x90,0x9e,0x64,0xf0,0x80,0x08,0x71,0xc3, +0xbf,0x01,0x03,0x12,0x44,0xcb,0xe5,0x2c,0x30,0xe1,0x20,0x90,0x01,0x34,0x74,0x02, +0xf0,0x85,0xd1,0x58,0x85,0xd2,0x59,0x85,0xd3,0x5a,0x85,0xd4,0x5b,0x85,0xd5,0x5c, +0x85,0xd6,0x5d,0x85,0xd7,0x5e,0x85,0xd9,0x5f,0x71,0xd2,0xe5,0x2c,0x30,0xe3,0x06, +0x90,0x01,0x34,0x74,0x08,0xf0,0xe5,0x2c,0x30,0xe4,0x09,0x90,0x01,0x34,0x74,0x10, +0xf0,0x43,0x57,0x10,0xe5,0x2c,0x30,0xe5,0x26,0x90,0x01,0xcf,0xe0,0x30,0xe5,0x1f, +0xe0,0x54,0xdf,0xf0,0x90,0x01,0x34,0x74,0x20,0xf0,0x75,0xa8,0x00,0x75,0xe8,0x00, +0x12,0x4b,0xcf,0x90,0x00,0x03,0xe0,0x54,0xfb,0xf0,0x12,0x4d,0x45,0x80,0xfe,0xe5, +0x2c,0x30,0xe6,0x06,0x90,0x01,0x34,0x74,0x40,0xf0,0xe5,0x2e,0x30,0xe0,0x12,0x90, +0x9e,0x7f,0x74,0x01,0xf0,0x90,0x01,0x36,0xf0,0x12,0x61,0x4e,0x90,0x9e,0x7f,0xe4, +0xf0,0xe5,0x2e,0x30,0xe1,0x0b,0x90,0x01,0x36,0x74,0x02,0xf0,0x43,0x57,0x40,0x11, +0x23,0xe5,0x2e,0x30,0xe2,0x09,0x90,0x01,0x36,0x74,0x04,0xf0,0x12,0x60,0xdf,0xe5, +0x2e,0x30,0xe3,0x28,0x90,0x01,0x36,0x74,0x08,0xf0,0xe5,0x60,0x64,0x01,0x70,0x1c, +0xe5,0x63,0x60,0x18,0x90,0x01,0x57,0xe4,0xf0,0x90,0x01,0x3c,0x74,0x02,0xf0,0x90, +0x9e,0x85,0xe4,0x12,0x44,0x4e,0x90,0x01,0x57,0x74,0x05,0xf0,0xe5,0x2e,0x30,0xe4, +0x2b,0x90,0x01,0x36,0x74,0x10,0xf0,0xe5,0x60,0xb4,0x01,0x20,0xe5,0x63,0x60,0x1c, +0x90,0x01,0x57,0xe4,0xf0,0x90,0x01,0x3c,0x74,0x02,0xf0,0x90,0x9e,0x67,0xe4,0xf0, +0x53,0x64,0xfd,0xe5,0x64,0x54,0x07,0x70,0x03,0x12,0x44,0xcb,0xe5,0x2e,0x30,0xe5, +0x1f,0x90,0x01,0x36,0x74,0x20,0xf0,0xe5,0x60,0xb4,0x01,0x14,0xe5,0x63,0x60,0x10, +0x90,0x9e,0x66,0xe0,0x64,0x02,0x60,0x05,0x12,0x44,0xd2,0x80,0x03,0x12,0x44,0x79, +0xe5,0x2e,0x30,0xe6,0x1b,0x90,0x01,0x36,0x74,0x40,0xf0,0xe5,0x60,0xb4,0x01,0x10, +0xe5,0x63,0x60,0x0c,0x53,0x64,0xfe,0xe5,0x64,0x54,0x07,0x70,0x03,0x12,0x44,0xcb, +0xe5,0x2f,0x30,0xe1,0x08,0x90,0x01,0x37,0x74,0x02,0xf0,0x91,0x64,0x74,0xa1,0x04, +0x90,0x01,0xc4,0xf0,0x74,0x50,0xa3,0xf0,0xd0,0x07,0xd0,0x06,0xd0,0x05,0xd0,0x04, +0xd0,0x03,0xd0,0x02,0xd0,0x01,0xd0,0x00,0xd0,0xd0,0xd0,0x82,0xd0,0x83,0xd0,0xf0, +0xd0,0xe0,0x32,0x90,0x04,0x1b,0xe0,0x54,0x7f,0x64,0x7f,0x7f,0x01,0x60,0x02,0x7f, +0x00,0x22,0x90,0x9e,0x10,0xe0,0x54,0xf0,0x44,0x03,0xf0,0x54,0x0f,0x44,0x80,0xf0, +0x7b,0x00,0x7a,0x00,0x79,0x58,0x90,0x9e,0x90,0x12,0x43,0x8b,0x0b,0x7a,0x9e,0x79, +0x10,0xd3,0x10,0xaf,0x01,0xc3,0xc0,0xd0,0x90,0x9e,0x8d,0x12,0x43,0x8b,0x90,0x9e, +0xb0,0xe0,0xff,0x04,0xf0,0x90,0x00,0x01,0xef,0x12,0x42,0x5f,0x7f,0xaf,0x7e,0x01, +0x12,0x71,0x7a,0xef,0x60,0x49,0x90,0x9e,0x8d,0x12,0x43,0x6b,0x8b,0x23,0x8a,0x24, +0x89,0x25,0x75,0x26,0x02,0x7b,0x01,0x7a,0x01,0x79,0xa0,0x12,0x45,0x09,0x90,0x9e, +0x90,0x12,0x43,0x6b,0x8b,0x23,0x8a,0x24,0x89,0x25,0x90,0x9e,0x8d,0x12,0x43,0x6b, +0x12,0x29,0xd9,0xff,0xc4,0x54,0x0f,0xf5,0x26,0x7b,0x01,0x7a,0x01,0x79,0xa2,0x12, +0x45,0x09,0x90,0x01,0xaf,0x74,0xff,0xf0,0x90,0x01,0xcb,0xe0,0x64,0x80,0xf0,0xd0, +0xd0,0x92,0xaf,0x22,0x90,0x9e,0xa0,0x12,0x2a,0x8b,0x00,0x00,0x00,0x00,0xe5,0x63, +0x14,0x24,0xfd,0x50,0x02,0x80,0x1f,0x90,0x9e,0x66,0xe0,0x60,0x06,0x7d,0x01,0x7f, +0x0c,0x80,0x0d,0xe5,0x61,0x54,0x0f,0xc3,0x94,0x04,0x50,0x06,0x7d,0x01,0x7f,0x04, +0x91,0xe7,0xe4,0xff,0x91,0x97,0x22,0xef,0x60,0x0b,0x90,0x9e,0x80,0xe0,0xb4,0x01, +0x10,0xe4,0xff,0x80,0x09,0x90,0x9e,0x80,0xe0,0xb4,0x01,0x05,0x7f,0x01,0x12,0x75, +0x92,0x22,0x90,0x01,0x37,0x74,0x02,0xf0,0x90,0x05,0x22,0x74,0xff,0xf0,0x12,0x74, +0x12,0xef,0x70,0x06,0x90,0x01,0xc8,0x74,0xfd,0xf0,0x7d,0x02,0x7f,0x03,0x12,0x36, +0xe6,0xe5,0x63,0x60,0x04,0x7f,0x01,0x91,0x97,0x12,0x74,0xc8,0x53,0x61,0xf0,0x43, +0x61,0x02,0x22,0x7d,0x01,0x7f,0x0c,0x8f,0x6a,0x8d,0x6b,0xe5,0x6a,0x54,0x0f,0xff, +0xe5,0x61,0x54,0x0f,0x6f,0x60,0x65,0xe5,0x6a,0x30,0xe2,0x28,0xe5,0x61,0x20,0xe2, +0x04,0x7f,0x01,0xd1,0xc2,0xe5,0x61,0x30,0xe3,0x0c,0xe5,0x6a,0x20,0xe3,0x07,0xb1, +0x5d,0xef,0x60,0x48,0xa1,0xa5,0xe5,0x61,0x20,0xe3,0x41,0xe5,0x6a,0x30,0xe3,0x3c, +0xaf,0x6b,0xc1,0xdc,0xe5,0x61,0x54,0x0f,0xff,0xbf,0x0c,0x0c,0xe5,0x6a,0x20,0xe3, +0x07,0xb1,0x5d,0xef,0x60,0x26,0xb1,0xa5,0xe5,0x61,0x54,0x0f,0xff,0xbf,0x04,0x0c, +0xe5,0x6a,0x20,0xe2,0x07,0xf1,0x21,0xef,0x60,0x12,0x91,0xb2,0xe5,0x61,0x54,0x0f, +0xff,0xbf,0x02,0x08,0x12,0x60,0xbd,0xef,0x60,0x02,0xd1,0xaf,0x22,0x71,0xc3,0xef, +0x64,0x01,0x60,0x08,0x90,0x01,0xb9,0x74,0x01,0xf0,0x80,0x30,0x90,0x9e,0x64,0xe0, +0x60,0x08,0x90,0x01,0xb9,0x74,0x02,0xf0,0x80,0x22,0x90,0x9e,0x63,0xe0,0x60,0x08, +0x90,0x01,0xb9,0x74,0x04,0xf0,0x80,0x14,0xe5,0x62,0x54,0x0f,0xd3,0x94,0x04,0x40, +0x08,0x90,0x01,0xb9,0x74,0x08,0xf0,0x80,0x03,0x7f,0x01,0x22,0x90,0x01,0xb8,0x74, +0x08,0xf0,0x7f,0x00,0x22,0x90,0x06,0x04,0xe0,0x44,0x40,0xf0,0xe5,0x60,0xb4,0x01, +0x04,0x7f,0x01,0xd1,0xf6,0x53,0x61,0xf0,0x43,0x61,0x04,0x22,0xef,0x64,0x01,0x70, +0x2e,0x7d,0x78,0x7f,0x02,0x12,0x36,0x75,0x7d,0x02,0x7f,0x03,0x12,0x36,0x75,0x90, +0x01,0x57,0xe4,0xf0,0x90,0x01,0x3c,0x74,0x02,0xf0,0x91,0xe3,0xe4,0xff,0x91,0x97, +0x90,0x06,0x04,0xe0,0x54,0x7f,0xf0,0x90,0x06,0x0a,0xe0,0x54,0xf8,0xf0,0x22,0x90, +0x01,0x36,0x74,0x7b,0xf0,0xa3,0x74,0x02,0xf0,0x7d,0x7b,0xff,0x12,0x36,0xe6,0x7d, +0x02,0x7f,0x03,0x12,0x36,0xe6,0x90,0x06,0x04,0xe0,0x44,0x80,0xf0,0x90,0x06,0x0a, +0xe0,0x44,0x07,0xf0,0x12,0x62,0x4c,0xe5,0x60,0x20,0xe0,0x05,0xe4,0x90,0x9e,0x58, +0xf0,0x22,0x8b,0x14,0x8a,0x15,0x89,0x16,0x12,0x60,0xb1,0xab,0x14,0xaa,0x15,0xa9, +0x16,0x12,0x29,0xd9,0xf5,0x63,0x14,0x60,0x0e,0x14,0x60,0x1e,0x14,0x60,0x2f,0x24, +0x03,0x70,0x40,0x7f,0x01,0x80,0x3a,0xab,0x14,0xaa,0x15,0xa9,0x16,0x90,0x00,0x02, +0x12,0x42,0x20,0xfd,0xe4,0xff,0xd1,0x84,0x80,0x27,0xab,0x14,0xaa,0x15,0xa9,0x16, +0x90,0x00,0x02,0x12,0x42,0x20,0xfd,0x7f,0x01,0xd1,0x84,0x1f,0x80,0x13,0xab,0x14, +0xaa,0x15,0xa9,0x16,0x90,0x00,0x02,0x12,0x42,0x20,0xfd,0x7f,0x02,0xd1,0x84,0xe4, +0xff,0xb1,0xbc,0x22,0xef,0x24,0xfe,0x60,0x0b,0x04,0x70,0x22,0x90,0x9e,0x65,0x74, +0x01,0xf0,0x80,0x16,0xed,0x70,0x0a,0x90,0x9e,0x62,0xe0,0x90,0x9e,0x65,0xf0,0x80, +0x05,0x90,0x9e,0x65,0xed,0xf0,0x90,0x9e,0x65,0xe0,0x90,0x9e,0x56,0xf0,0x22,0x53, +0x61,0xf0,0x43,0x61,0x01,0x12,0x45,0x00,0x12,0x45,0x01,0x53,0x61,0xf0,0x43,0x61, +0x02,0x22,0x90,0x9e,0xaf,0xef,0xf0,0x12,0x74,0x53,0x90,0x9e,0xaf,0xe0,0x60,0x05, +0x90,0x05,0x22,0xe4,0xf0,0x53,0x61,0xf0,0x43,0x61,0x04,0x22,0x90,0x06,0x04,0xe0, +0x54,0xbf,0xf0,0xef,0x60,0x09,0xe5,0x60,0xb4,0x01,0x04,0xe4,0xff,0xd1,0xf6,0x53, +0x61,0xf0,0x43,0x61,0x0c,0x22,0x8f,0x27,0x12,0x45,0xb0,0xbf,0x01,0x22,0x90,0x9e, +0x7a,0xe0,0xff,0x7d,0x01,0x12,0x47,0x79,0xab,0x07,0xaa,0x06,0xad,0x03,0xac,0x02, +0xaf,0x27,0x12,0x60,0x2a,0xaf,0x03,0x12,0x5f,0xf7,0x90,0x04,0x1f,0x74,0x20,0xf0, +0x22,0x71,0xc3,0xef,0x64,0x01,0x60,0x08,0x90,0x01,0xb9,0x74,0x01,0xf0,0x80,0x58, +0xe5,0x64,0x54,0x03,0x60,0x08,0x90,0x01,0xb9,0x74,0x02,0xf0,0x80,0x4a,0xe5,0x62, +0x54,0x0f,0xd3,0x94,0x02,0x40,0x08,0x90,0x01,0xb9,0x74,0x04,0xf0,0x80,0x39,0xe5, +0x64,0x30,0xe2,0x08,0x90,0x01,0xb9,0x74,0x08,0xf0,0x80,0x2c,0xe5,0x64,0x30,0xe4, +0x08,0x90,0x01,0xb9,0x74,0x10,0xf0,0x80,0x1f,0x90,0x9e,0x58,0xe0,0x60,0x08,0x90, +0x01,0xb9,0x74,0x20,0xf0,0x80,0x11,0x90,0x9e,0x5e,0xe0,0x60,0x08,0x90,0x01,0xb9, +0x74,0x80,0xf0,0x80,0x03,0x7f,0x01,0x22,0x90,0x01,0xb8,0x74,0x04,0xf0,0x7f,0x00, +0x22,0xc0,0xe0,0xc0,0xf0,0xc0,0x83,0xc0,0x82,0xc0,0xd0,0x75,0xd0,0x00,0xc0,0x00, +0xc0,0x01,0xc0,0x02,0xc0,0x03,0xc0,0x04,0xc0,0x05,0xc0,0x06,0xc0,0x07,0x90,0x01, +0xc4,0x74,0x91,0xf0,0x74,0x57,0xa3,0xf0,0x53,0x91,0xef,0x90,0x00,0x51,0xe0,0xff, +0x90,0x00,0x55,0xe0,0x5f,0xf5,0x3d,0x90,0x00,0x52,0xe0,0xff,0x90,0x00,0x56,0xe0, +0x5f,0xf5,0x3e,0xe5,0x3d,0x30,0xe4,0x06,0x90,0x00,0x55,0x74,0x10,0xf0,0xe5,0x3d, +0x30,0xe5,0x06,0x90,0x00,0x55,0x74,0x20,0xf0,0xe5,0x3d,0x30,0xe6,0x1b,0x90,0x00, +0x55,0x74,0x40,0xf0,0x90,0x9e,0x42,0xe0,0x54,0x03,0xff,0xbf,0x03,0x0b,0x90,0x9e, +0x3f,0xe0,0x60,0x05,0x7f,0x01,0x12,0x49,0x1a,0xe5,0x3d,0x30,0xe7,0x15,0x90,0x00, +0x55,0x74,0x80,0xf0,0x90,0x9e,0x42,0xe0,0x54,0x03,0xff,0xbf,0x03,0x05,0x7f,0x02, +0x12,0x49,0x1a,0xe5,0x3e,0x30,0xe0,0x06,0x90,0x00,0x56,0x74,0x01,0xf0,0xe5,0x3e, +0x30,0xe1,0x06,0x90,0x00,0x56,0x74,0x02,0xf0,0xe5,0x3e,0x30,0xe2,0x06,0x90,0x00, +0x56,0x74,0x04,0xf0,0xe5,0x3e,0x30,0xe3,0x06,0x90,0x00,0x56,0x74,0x08,0xf0,0x90, +0x01,0xc4,0x74,0x91,0xf0,0x74,0x57,0xa3,0xf0,0xd0,0x07,0xd0,0x06,0xd0,0x05,0xd0, +0x04,0xd0,0x03,0xd0,0x02,0xd0,0x01,0xd0,0x00,0xd0,0xd0,0xd0,0x82,0xd0,0x83,0xd0, +0xf0,0xd0,0xe0,0x32,0x90,0x01,0xcc,0xe0,0x54,0x0f,0x90,0x9e,0x19,0xf0,0x90,0x9e, +0x19,0xe0,0xfd,0x70,0x02,0x21,0xb5,0x90,0x9e,0xae,0xe0,0xff,0x74,0x01,0x7e,0x00, +0xa8,0x07,0x08,0x80,0x05,0xc3,0x33,0xce,0x33,0xce,0xd8,0xf9,0xff,0xef,0x5d,0x70, +0x02,0x21,0xae,0x90,0x9e,0xae,0xe0,0x75,0xf0,0x04,0x90,0x01,0xd0,0x12,0x43,0x5f, +0xe0,0x90,0x9e,0x1a,0xf0,0x75,0x23,0x01,0x75,0x24,0x9e,0x75,0x25,0x1a,0x75,0x26, +0x01,0x7b,0x01,0x7a,0x9e,0x79,0x1b,0x12,0x45,0x09,0x90,0x9e,0x1b,0xe0,0xff,0xc4, +0x13,0x13,0x13,0x54,0x01,0x90,0x9e,0xae,0x30,0xe0,0x59,0xe0,0x75,0xf0,0x02,0x90, +0x00,0x88,0x12,0x43,0x5f,0xe0,0x90,0x9e,0x1c,0xf0,0x90,0x9e,0xae,0xe0,0x75,0xf0, +0x02,0x90,0x00,0x89,0x12,0x43,0x5f,0xe0,0x90,0x9e,0x1d,0xf0,0x90,0x9e,0xae,0xe0, +0x75,0xf0,0x04,0x90,0x01,0xd1,0x12,0x43,0x5f,0xe0,0x90,0x9e,0x1e,0xf0,0x90,0x9e, +0xae,0xe0,0x75,0xf0,0x04,0x90,0x01,0xd2,0x12,0x43,0x5f,0xe0,0x90,0x9e,0x1f,0xf0, +0x90,0x9e,0xae,0xe0,0x75,0xf0,0x04,0x90,0x01,0xd3,0x12,0x43,0x5f,0xe0,0x90,0x9e, +0x20,0xf0,0x80,0x33,0xe0,0x75,0xf0,0x04,0x90,0x01,0xd1,0x12,0x43,0x5f,0xe0,0x90, +0x9e,0x1c,0xf0,0x90,0x9e,0xae,0xe0,0x75,0xf0,0x04,0x90,0x01,0xd2,0x12,0x43,0x5f, +0xe0,0x90,0x9e,0x1d,0xf0,0x90,0x9e,0xae,0xe0,0x75,0xf0,0x04,0x90,0x01,0xd3,0x12, +0x43,0x5f,0xe0,0x90,0x9e,0x1e,0xf0,0xef,0x54,0x7f,0xff,0x7b,0x01,0x7a,0x9e,0x79, +0x1c,0x31,0xb6,0x90,0x9e,0x19,0xe0,0xff,0x90,0x9e,0xae,0xe0,0xfe,0x74,0x01,0xa8, +0x06,0x08,0x80,0x02,0xc3,0x33,0xd8,0xfc,0xf4,0x5f,0x90,0x9e,0x19,0xf0,0x90,0x9e, +0xae,0xe0,0xff,0x74,0x01,0xa8,0x07,0x08,0x80,0x02,0xc3,0x33,0xd8,0xfc,0x90,0x01, +0xcc,0xf0,0x90,0x9e,0xae,0xe0,0x04,0xf0,0xe0,0x54,0x03,0xf0,0x01,0x7e,0x90,0x01, +0xc6,0xe0,0x44,0x02,0xf0,0x22,0x90,0x9e,0x21,0x12,0x43,0x8b,0xef,0x12,0x43,0x94, +0x59,0xfc,0x01,0x59,0xf4,0x02,0x5a,0x20,0x03,0x5a,0x29,0x05,0x5a,0x32,0x06,0x5a, +0x7e,0x07,0x5a,0x3a,0x09,0x5a,0x43,0x0b,0x5a,0x4c,0x0c,0x5a,0x55,0x0d,0x5a,0x5e, +0x0e,0x5a,0x67,0x1b,0x5a,0x6f,0x1c,0x5a,0x05,0x2d,0x5a,0x0e,0x2e,0x5a,0x17,0x3b, +0x00,0x00,0x5a,0x77,0x90,0x9e,0x21,0x12,0x43,0x6b,0xe1,0xe9,0x90,0x9e,0x21,0x12, +0x43,0x6b,0x02,0x71,0xd0,0x90,0x9e,0x21,0x12,0x43,0x6b,0x02,0x72,0x0b,0x90,0x9e, +0x21,0x12,0x43,0x6b,0x02,0x72,0x53,0x90,0x9e,0x21,0x12,0x43,0x6b,0x02,0x72,0x8c, +0x90,0x9e,0x21,0x12,0x43,0x6b,0x02,0x72,0xb6,0x90,0x9e,0x21,0x12,0x43,0x6b,0x02, +0x70,0x4a,0x90,0x9e,0x21,0x12,0x43,0x6b,0x80,0x45,0x90,0x9e,0x21,0x12,0x43,0x6b, +0x02,0x72,0xfe,0x90,0x9e,0x21,0x12,0x43,0x6b,0x02,0x70,0xa2,0x90,0x9e,0x21,0x12, +0x43,0x6b,0x02,0x49,0xc2,0x90,0x9e,0x21,0x12,0x43,0x6b,0x02,0x7b,0x16,0x90,0x9e, +0x21,0x12,0x43,0x6b,0x02,0x4a,0xfc,0x90,0x9e,0x21,0x12,0x43,0x6b,0xe1,0xef,0x90, +0x9e,0x21,0x12,0x43,0x6b,0xe1,0xd1,0x90,0x01,0xc6,0xe0,0x44,0x01,0xf0,0x22,0x90, +0x00,0x04,0x12,0x42,0x20,0xff,0x54,0x1f,0xfe,0xef,0x54,0x20,0xc4,0x13,0x54,0x07, +0xfd,0xaf,0x06,0x90,0x9e,0x24,0xef,0xf0,0xa3,0xed,0xf0,0xa3,0x12,0x43,0x8b,0x90, +0x9e,0x26,0x12,0x43,0x6b,0x90,0x00,0x03,0x12,0x42,0x20,0x54,0xf0,0xc4,0x54,0x0f, +0x90,0x9e,0x29,0xf0,0x90,0x00,0x04,0x12,0x42,0x20,0x54,0x40,0xc4,0x13,0x13,0x54, +0x03,0x90,0x9e,0x2a,0xf0,0x90,0x9e,0x24,0xe0,0xff,0x75,0xf0,0x09,0x90,0x96,0x46, +0x12,0x43,0x5f,0xad,0x82,0xac,0x83,0x90,0x9e,0x2b,0xec,0xf0,0xa3,0xed,0xf0,0xef, +0x75,0xf0,0x09,0xa4,0x24,0x44,0xf9,0x74,0x96,0x35,0xf0,0xfa,0x7b,0x01,0xa3,0x12, +0x43,0x8b,0x90,0x9e,0x26,0x12,0x43,0x6b,0x90,0x00,0x03,0x12,0x42,0x20,0x54,0x0f, +0xff,0x90,0x9e,0x2d,0x12,0x43,0x6b,0xef,0x12,0x42,0x4d,0x90,0x9e,0x26,0x12,0x43, +0x6b,0x90,0x00,0x02,0x12,0x42,0x20,0xff,0x90,0x9e,0x2d,0x12,0x43,0x6b,0x90,0x00, +0x01,0xef,0x12,0x42,0x5f,0x90,0x9e,0x26,0x12,0x43,0x6b,0x90,0x00,0x01,0x12,0x42, +0x20,0xff,0x90,0x9e,0x2b,0xe0,0xfc,0xa3,0xe0,0xfd,0xf5,0x82,0x8c,0x83,0xef,0xf0, +0x12,0x29,0xd9,0x8d,0x82,0x8c,0x83,0xa3,0xf0,0x90,0x9e,0x29,0xe0,0xfe,0x90,0x9e, +0x24,0xe0,0xff,0x24,0x82,0xf5,0x82,0xe4,0x34,0x95,0xf5,0x83,0xee,0xf0,0x90,0x9e, +0x25,0xe0,0xfe,0x75,0xf0,0x09,0xef,0x90,0x96,0x4a,0x12,0x43,0x5f,0xee,0xf0,0x75, +0xf0,0x09,0xef,0x90,0x96,0x4b,0x12,0x43,0x5f,0x74,0x01,0xf0,0x90,0x9e,0x2a,0xe0, +0xfe,0x75,0xf0,0x09,0xef,0x90,0x96,0x4c,0x12,0x43,0x5f,0xee,0xf0,0x8f,0x14,0xef, +0x25,0xe0,0x24,0xc6,0xf5,0x82,0xe4,0x34,0x9b,0xaf,0x82,0xf5,0x16,0x8f,0x17,0xe5, +0x14,0x75,0xf0,0x02,0xa4,0x24,0x02,0xf9,0x74,0x95,0x35,0xf0,0x75,0x18,0x01,0xf5, +0x19,0x89,0x1a,0x75,0xf0,0x09,0xe5,0x14,0x90,0x96,0x46,0x12,0x43,0x5f,0xaf,0x82, +0x85,0x83,0x1b,0x8f,0x1c,0xe5,0x14,0x75,0xf0,0x09,0xa4,0x24,0x44,0xf9,0x74,0x96, +0x35,0xf0,0x75,0x1d,0x01,0xf5,0x1e,0x89,0x1f,0x74,0x82,0x25,0x14,0xf5,0x82,0xe4, +0x34,0x95,0xf5,0x83,0xe0,0x12,0x43,0x94,0x5c,0x0d,0x00,0x5c,0x22,0x01,0x5c,0x37, +0x02,0x5c,0x4c,0x03,0x5c,0x75,0x04,0x5c,0x8a,0x05,0x5c,0x9f,0x06,0x5c,0xc5,0x0c, +0x5c,0xf2,0x0d,0x5d,0x1f,0x0e,0x5d,0x4c,0x0f,0x00,0x00,0x5d,0x80,0xe5,0x14,0x25, +0xe0,0x24,0xc6,0xf5,0x82,0xe4,0x34,0x9b,0xf5,0x83,0x74,0xf0,0xf0,0xa3,0x74,0x15, +0x80,0x3c,0xe5,0x14,0x25,0xe0,0x24,0xc6,0xf5,0x82,0xe4,0x34,0x9b,0xf5,0x83,0x74, +0xf0,0xf0,0xa3,0x74,0x10,0x80,0x27,0xe5,0x14,0x25,0xe0,0x24,0xc6,0xf5,0x82,0xe4, +0x34,0x9b,0xf5,0x83,0x74,0xf0,0xf0,0xa3,0x74,0x05,0x80,0x12,0xe5,0x14,0x25,0xe0, +0x24,0xc6,0xf5,0x82,0xe4,0x34,0x9b,0xf5,0x83,0x74,0xf0,0xf0,0xa3,0xe4,0xf0,0xe5, +0x14,0x25,0xe0,0x24,0x02,0xf5,0x82,0xe4,0x34,0x95,0xf5,0x83,0x74,0x0f,0xf0,0xa3, +0x74,0x8f,0xf0,0xa1,0x80,0xe5,0x14,0x25,0xe0,0x24,0xc6,0xf5,0x82,0xe4,0x34,0x9b, +0xf5,0x83,0x74,0x0f,0xf0,0xa3,0x74,0xf5,0x80,0x27,0xe5,0x14,0x25,0xe0,0x24,0xc6, +0xf5,0x82,0xe4,0x34,0x9b,0xf5,0x83,0x74,0x0f,0xf0,0xa3,0x74,0xf0,0x80,0x12,0xe5, +0x14,0x25,0xe0,0x24,0xc6,0xf5,0x82,0xe4,0x34,0x9b,0xf5,0x83,0xe4,0xf0,0xa3,0x74, +0x0d,0xf0,0xe5,0x14,0x25,0xe0,0x24,0x02,0xf5,0x82,0xe4,0x34,0x95,0xf5,0x83,0xe4, +0xf0,0xa3,0xf0,0xa1,0x80,0x90,0x04,0x47,0xe0,0xab,0x18,0xaa,0x19,0xa9,0x1a,0x12, +0x42,0x4d,0x90,0x04,0x46,0xe0,0xab,0x18,0xaa,0x19,0xa9,0x1a,0x90,0x00,0x01,0x12, +0x42,0x5f,0x90,0x04,0x45,0xe0,0x85,0x17,0x82,0x85,0x16,0x83,0xf0,0x90,0x04,0x44, +0xa1,0x77,0x90,0x04,0x4b,0xe0,0xab,0x18,0xaa,0x19,0xa9,0x1a,0x12,0x42,0x4d,0x90, +0x04,0x4a,0xe0,0xab,0x18,0xaa,0x19,0xa9,0x1a,0x90,0x00,0x01,0x12,0x42,0x5f,0x90, +0x04,0x49,0xe0,0x85,0x17,0x82,0x85,0x16,0x83,0xf0,0x90,0x04,0x48,0x80,0x58,0x90, +0x04,0x4f,0xe0,0xab,0x18,0xaa,0x19,0xa9,0x1a,0x12,0x42,0x4d,0x90,0x04,0x4e,0xe0, +0xab,0x18,0xaa,0x19,0xa9,0x1a,0x90,0x00,0x01,0x12,0x42,0x5f,0x90,0x04,0x4d,0xe0, +0x85,0x17,0x82,0x85,0x16,0x83,0xf0,0x90,0x04,0x4c,0x80,0x2b,0x90,0x04,0x53,0xe0, +0xab,0x18,0xaa,0x19,0xa9,0x1a,0x12,0x42,0x4d,0x90,0x04,0x52,0xe0,0xab,0x18,0xaa, +0x19,0xa9,0x1a,0x90,0x00,0x01,0x12,0x42,0x5f,0x90,0x04,0x51,0xe0,0x85,0x17,0x82, +0x85,0x16,0x83,0xf0,0x90,0x04,0x50,0xe0,0x85,0x17,0x82,0x85,0x16,0x83,0xa3,0xf0, +0xab,0x18,0xaa,0x19,0xa9,0x1a,0xc0,0x03,0xc0,0x02,0xc0,0x01,0x12,0x29,0xd9,0xff, +0xab,0x1d,0xaa,0x1e,0xa9,0x1f,0x12,0x29,0xd9,0x5f,0xd0,0x01,0xd0,0x02,0xd0,0x03, +0x12,0x42,0x4d,0xab,0x18,0xe5,0x1a,0x24,0x01,0xf9,0xe4,0x35,0x19,0xfa,0xc0,0x03, +0xc0,0x02,0xc0,0x01,0x12,0x29,0xd9,0xff,0xab,0x1d,0xaa,0x1e,0xa9,0x1f,0x90,0x00, +0x01,0x12,0x42,0x20,0x5f,0xd0,0x01,0xd0,0x02,0xd0,0x03,0x12,0x42,0x4d,0x85,0x17, +0x82,0x85,0x16,0x83,0xc0,0x83,0xc0,0x82,0xe0,0xff,0x85,0x1c,0x82,0x85,0x1b,0x83, +0xe0,0xfe,0xef,0x5e,0xd0,0x82,0xd0,0x83,0xf0,0x85,0x17,0x82,0x85,0x16,0x83,0xa3, +0xc0,0x83,0xc0,0x82,0xe0,0xff,0x85,0x1c,0x82,0x85,0x1b,0x83,0xa3,0xe0,0xfe,0xef, +0x5e,0xd0,0x82,0xd0,0x83,0xf0,0xe5,0x14,0x25,0xe0,0x24,0x02,0xf5,0x82,0xe4,0x34, +0x95,0xf5,0x83,0xe0,0xfe,0xa3,0xe0,0x4e,0x60,0x3b,0x75,0x15,0x0b,0x74,0x01,0x7e, +0x00,0xa8,0x15,0x08,0x80,0x05,0xc3,0x33,0xce,0x33,0xce,0xd8,0xf9,0xff,0xe5,0x14, +0x25,0xe0,0x24,0x02,0xf5,0x82,0xe4,0x34,0x95,0xf5,0x83,0xe0,0x5e,0xfe,0xa3,0xe0, +0x5f,0x4e,0x60,0x06,0xe5,0x15,0x24,0x10,0x80,0x5d,0x15,0x15,0xe5,0x15,0xc3,0x94, +0x00,0x50,0xca,0x80,0x56,0xe5,0x14,0x25,0xe0,0x24,0xc6,0xf5,0x82,0xe4,0x34,0x9b, +0xf5,0x83,0xe0,0xfe,0xa3,0xe0,0x4e,0x60,0x3d,0x75,0x15,0x0f,0x74,0x01,0x7e,0x00, +0xa8,0x15,0x08,0x80,0x05,0xc3,0x33,0xce,0x33,0xce,0xd8,0xf9,0xff,0xe5,0x14,0x25, +0xe0,0x24,0xc6,0xf5,0x82,0xe4,0x34,0x9b,0xf5,0x83,0xe0,0x5e,0xfe,0xa3,0xe0,0x5f, +0x4e,0x60,0x08,0x90,0x9e,0x30,0xe5,0x15,0xf0,0x80,0x10,0x15,0x15,0xe5,0x15,0xc3, +0x94,0x00,0x50,0xc8,0x80,0x05,0xe4,0x90,0x9e,0x30,0xf0,0xe5,0x14,0x25,0xe0,0x24, +0xc6,0xf5,0x82,0xe4,0x34,0x9b,0xf5,0x83,0xe0,0xfe,0xa3,0xe0,0x4e,0x60,0x3b,0xe4, +0xf5,0x15,0x74,0x01,0x7e,0x00,0xa8,0x15,0x08,0x80,0x05,0xc3,0x33,0xce,0x33,0xce, +0xd8,0xf9,0xff,0xe5,0x14,0x25,0xe0,0x24,0xc6,0xf5,0x82,0xe4,0x34,0x9b,0xf5,0x83, +0xe0,0x5e,0xfe,0xa3,0xe0,0x5f,0x4e,0x60,0x08,0x90,0x9e,0x31,0xe5,0x15,0xf0,0x80, +0x5b,0x05,0x15,0xe5,0x15,0xb4,0x10,0xca,0x80,0x52,0xe5,0x14,0x25,0xe0,0x24,0x02, +0xf5,0x82,0xe4,0x34,0x95,0xf5,0x83,0xe0,0xfe,0xa3,0xe0,0x4e,0x60,0x39,0xe4,0xf5, +0x15,0x74,0x01,0x7e,0x00,0xa8,0x15,0x08,0x80,0x05,0xc3,0x33,0xce,0x33,0xce,0xd8, +0xf9,0xff,0xe5,0x14,0x25,0xe0,0x24,0x02,0xf5,0x82,0xe4,0x34,0x95,0xf5,0x83,0xe0, +0x5e,0xfe,0xa3,0xe0,0x5f,0x4e,0x60,0x06,0xe5,0x15,0x24,0x10,0x80,0x0a,0x05,0x15, +0xe5,0x15,0xb4,0x0c,0xcc,0x80,0x05,0xe4,0x90,0x9e,0x31,0xf0,0x90,0x9e,0x30,0xe0, +0xff,0x75,0xf0,0x09,0xe5,0x14,0x90,0x96,0x48,0x12,0x43,0x5f,0xef,0xf0,0x90,0x9e, +0x31,0xe0,0xfe,0x75,0xf0,0x09,0xe5,0x14,0x90,0x96,0x49,0x12,0x43,0x5f,0xee,0xf0, +0x74,0x84,0x25,0x14,0xf5,0x82,0xe4,0x34,0x04,0xf5,0x83,0xe0,0xd3,0x9f,0x40,0x06, +0x90,0x9e,0x30,0x12,0x62,0x94,0x74,0x84,0x25,0x14,0xf5,0x82,0xe4,0x34,0x04,0xf5, +0x83,0xe0,0xff,0x90,0x9e,0x31,0xe0,0xfe,0xef,0xc3,0x9e,0x50,0x03,0x12,0x62,0x94, +0x90,0x9e,0x30,0xe0,0xff,0xd3,0x94,0x13,0x40,0x07,0x90,0x96,0x43,0x74,0x03,0xf0, +0x22,0xef,0xd3,0x94,0x0b,0x40,0x07,0x90,0x96,0x43,0x74,0x02,0xf0,0x22,0xef,0xd3, +0x94,0x03,0x40,0x07,0x90,0x96,0x43,0x74,0x01,0xf0,0x22,0xe4,0x90,0x96,0x43,0xf0, +0x22,0x90,0x00,0x04,0x12,0x42,0x20,0xff,0x54,0x3f,0xfe,0xef,0x54,0x80,0xc4,0x13, +0x13,0x13,0x54,0x01,0xfd,0xaf,0x06,0x41,0x93,0x12,0x29,0xd9,0xf5,0x60,0x22,0x12, +0x29,0xd9,0x90,0x95,0x01,0xf0,0x22,0xad,0x07,0x74,0x11,0x2d,0xf5,0x82,0xe4,0x34, +0xfc,0xf5,0x83,0xe0,0x44,0x01,0xf0,0x90,0x04,0x80,0xe0,0x54,0x0f,0xfc,0x74,0x14, +0x2d,0xf5,0x82,0xe4,0x34,0xfc,0xf5,0x83,0xe0,0x54,0xc0,0x4c,0xfd,0x74,0x14,0x2f, +0xf5,0x82,0xe4,0x34,0xfc,0xf5,0x83,0xed,0xf0,0x22,0xef,0x60,0x0f,0x74,0x21,0x2d, +0xf5,0x82,0xe4,0x34,0xfc,0xf5,0x83,0xe0,0x44,0x10,0xf0,0x22,0x74,0x21,0x2d,0xf5, +0x82,0xe4,0x34,0xfc,0xf5,0x83,0xe0,0x54,0xef,0xf0,0x22,0xe4,0xf5,0x60,0xf5,0x64, +0xf5,0x63,0x75,0x62,0x0c,0x75,0x61,0x0c,0x90,0x9e,0x66,0xf0,0x90,0x9e,0x64,0xf0, +0x90,0x9e,0x63,0xf0,0x90,0x9e,0x65,0x04,0xf0,0x90,0x9e,0x56,0xf0,0xe4,0x90,0x9e, +0x67,0xf0,0x90,0x9e,0x58,0xf0,0x90,0x9e,0x61,0x74,0x07,0xf0,0xe4,0x90,0x9e,0x57, +0xf0,0x90,0x9e,0x5f,0xf0,0xa3,0x74,0x03,0xf0,0x90,0x9e,0x5c,0x74,0x0a,0xf0,0xa3, +0x74,0x05,0xf0,0x90,0x9e,0x5b,0x74,0x14,0xf0,0x90,0x9e,0x62,0x74,0x05,0xf0,0xe4, +0x90,0x9e,0x5a,0xf0,0x90,0x9e,0x55,0xf0,0x90,0x9e,0x7f,0xf0,0x90,0x9e,0x5e,0xf0, +0x22,0xe4,0x90,0x9e,0x67,0xf0,0x90,0x9e,0x57,0xf0,0xf5,0x64,0x22,0x7f,0x00,0x22, +0xe5,0x62,0x30,0xe6,0x19,0xe5,0x62,0x54,0x0f,0xff,0x90,0x9e,0x54,0xe0,0xfe,0x4f, +0x90,0x01,0x2f,0xf0,0xee,0x64,0x80,0x90,0x9e,0x54,0xf0,0x53,0x62,0xbf,0x22,0xe5, +0x60,0x64,0x01,0x70,0x68,0xe5,0x63,0x60,0x64,0xe5,0x63,0x64,0x02,0x60,0x06,0xe5, +0x63,0x64,0x05,0x70,0x27,0x90,0x06,0xab,0xe0,0x90,0x9e,0x56,0xf0,0x90,0x06,0xaa, +0xe0,0x90,0x9e,0x65,0xf0,0x90,0x9e,0x56,0xe0,0x70,0x07,0x90,0x9e,0x65,0xe0,0xff, +0x80,0x05,0x90,0x9e,0x56,0xe0,0xff,0x90,0x9e,0x56,0xef,0xf0,0x90,0x9e,0x58,0xe0, +0x60,0x03,0xe0,0x14,0xf0,0xe4,0x90,0x9e,0x57,0xf0,0x90,0x05,0x58,0x74,0x03,0xf0, +0x90,0x01,0x57,0xe4,0xf0,0x90,0x01,0x3c,0x74,0x02,0xf0,0x53,0x64,0xfd,0x53,0x64, +0xef,0xe5,0x63,0x14,0x24,0xfd,0x50,0x02,0x80,0x03,0x12,0x45,0x53,0x22,0xe4,0xfb, +0x90,0x9e,0x9c,0x12,0x2a,0x8b,0x00,0x00,0x00,0x00,0xe5,0x63,0x60,0x6a,0xe5,0x60, +0x64,0x01,0x70,0x64,0xe5,0x63,0x14,0x60,0x2b,0x24,0xfd,0x60,0x27,0x24,0x02,0x24, +0xfb,0x50,0x02,0x80,0x21,0x90,0x9e,0x56,0xe0,0x14,0xf0,0xe0,0x60,0x04,0xa3,0xe0, +0x60,0x14,0x90,0x9e,0x56,0xe0,0x70,0x08,0x90,0x9e,0x65,0xe0,0x90,0x9e,0x56,0xf0, +0x7b,0x01,0x80,0x02,0x7b,0x01,0xeb,0x60,0x2f,0x43,0x64,0x10,0xe4,0x90,0x9e,0x85, +0xf0,0x90,0x9e,0x57,0xe0,0x75,0xf0,0x03,0xa4,0xff,0x90,0x9e,0x61,0xe0,0x2f,0x12, +0x44,0x53,0x90,0x01,0x57,0x74,0x05,0xf0,0xe5,0x61,0x54,0x0f,0xc3,0x94,0x04,0x50, +0x07,0x7d,0x01,0x7f,0x04,0x12,0x54,0xe7,0x22,0xe4,0x90,0x9e,0x15,0xf0,0xe5,0x63, +0x60,0x79,0x90,0x9e,0x67,0xe0,0x60,0x0d,0xe4,0xf0,0x53,0x64,0xfd,0xe5,0x64,0x54, +0x07,0x70,0x68,0x80,0x63,0x90,0x9e,0x57,0xe0,0x04,0xf0,0x53,0x64,0xef,0x90,0x9e, +0x15,0xe0,0xf9,0xff,0x7e,0x00,0x24,0x01,0xfd,0xee,0x33,0xfc,0x90,0x9e,0x57,0xe0, +0xb5,0x05,0x06,0xe4,0xb5,0x04,0x02,0x80,0x12,0xef,0x24,0x02,0xff,0xe4,0x3e,0xfe, +0x90,0x9e,0x57,0xe0,0xb5,0x07,0x0a,0xe4,0xb5,0x06,0x06,0x90,0x05,0x58,0xe0,0x04, +0xf0,0xe9,0xff,0x90,0x9e,0x5c,0xe0,0x2f,0xff,0xe4,0x33,0xfe,0x90,0x9e,0x57,0xe0, +0xd3,0x9f,0xee,0x64,0x80,0xf8,0x74,0x80,0x98,0x40,0x0d,0xe5,0x60,0xb4,0x01,0x0b, +0xa3,0xe0,0x70,0x07,0xe0,0x04,0xf0,0x22,0x12,0x44,0xcb,0x22,0x90,0x9e,0x5f,0xe0, +0xa3,0xe0,0x90,0x05,0x58,0xf0,0x22,0xd3,0x10,0xaf,0x01,0xc3,0xc0,0xd0,0x90,0x9e, +0x93,0x12,0x43,0x8b,0x90,0x9e,0x96,0xe0,0x54,0xf0,0x44,0x06,0xff,0xf0,0xed,0x54, +0x0f,0xc4,0x54,0xf0,0xfe,0xef,0x54,0x0f,0x4e,0xf0,0x90,0x9e,0x93,0x12,0x43,0x6b, +0x90,0x9e,0x90,0x12,0x43,0x8b,0x7b,0x01,0x7a,0x9e,0x79,0x96,0x12,0x53,0xf1,0xd0, +0xd0,0x92,0xaf,0x22,0xe0,0xfd,0x74,0x26,0x25,0x14,0xf5,0x82,0xe4,0x34,0x9d,0xf5, +0x83,0xed,0xf0,0xaf,0x14,0xd3,0x10,0xaf,0x01,0xc3,0xc0,0xd0,0xef,0xc3,0x94,0x20, +0x50,0x0e,0x74,0x84,0x2f,0xf5,0x82,0xe4,0x34,0x04,0xf5,0x83,0xed,0xf0,0x80,0x29, +0x74,0xa6,0x2f,0xf5,0x82,0xe4,0x34,0x9c,0xf5,0x83,0xed,0xf0,0x90,0x9e,0x68,0xef, +0xf0,0x24,0xa6,0xf5,0x82,0xe4,0x34,0x9c,0xf5,0x83,0xe0,0x90,0x9e,0x69,0xf0,0x7b, +0x01,0x7a,0x9e,0x79,0x68,0x7d,0x02,0x51,0x57,0xd0,0xd0,0x92,0xaf,0x22,0x8f,0x0a, +0x8d,0x0b,0xe5,0x0b,0x54,0x1f,0xf5,0x10,0x74,0x01,0x2f,0xf5,0x82,0xe4,0x34,0x94, +0xf5,0x83,0xe0,0xf5,0x0e,0x90,0x04,0xfd,0xe0,0xb4,0x01,0x05,0x75,0x11,0x03,0x80, +0x03,0x75,0x11,0x01,0xeb,0xc3,0x95,0x11,0x40,0x04,0xaf,0x0a,0x80,0x33,0xe5,0x0e, +0x25,0x0d,0xf5,0x0f,0xe5,0x10,0x90,0x41,0xd6,0x93,0xff,0xe5,0x0f,0xd3,0x9f,0x74, +0x01,0x40,0x11,0x25,0x0a,0xf5,0x82,0xe4,0x34,0x94,0xf5,0x83,0xe4,0xf0,0xad,0x0b, +0xaf,0x0a,0x41,0xa5,0x25,0x0a,0xf5,0x82,0xe4,0x34,0x94,0xf5,0x83,0xe5,0x0f,0xf0, +0x22,0xad,0x07,0x75,0xf0,0x09,0xed,0x90,0x96,0x48,0x12,0x43,0x5f,0xe0,0xff,0x74, +0x67,0x2d,0xf5,0x82,0xe4,0x34,0x9d,0xf5,0x83,0xe0,0x54,0x1f,0xf5,0x12,0xd3,0x9f, +0x40,0x02,0x8f,0x12,0xe5,0x12,0x25,0xe0,0x24,0x9e,0xf5,0x82,0xe4,0x34,0x41,0xf5, +0x83,0xe4,0x93,0xfe,0x74,0x01,0x93,0xff,0xe5,0x12,0x25,0xe0,0x24,0x66,0xf5,0x82, +0xe4,0x34,0x41,0xf5,0x83,0x74,0x01,0x93,0x2f,0xff,0xe4,0x93,0x3e,0xc3,0x13,0xfe, +0xef,0x13,0xff,0xed,0x25,0xe0,0x24,0xc2,0xf5,0x82,0xe4,0x34,0x95,0xf5,0x83,0xee, +0xf0,0xa3,0xef,0xf0,0xaf,0x05,0xad,0x12,0x51,0xa5,0xaf,0x12,0x22,0xac,0x07,0xec, +0xc3,0x94,0x20,0x50,0x0d,0x74,0x84,0x2c,0xf5,0x82,0xe4,0x34,0x04,0xf5,0x83,0xe0, +0x80,0x0b,0x74,0xa6,0x2c,0xf5,0x82,0xe4,0x34,0x9c,0xf5,0x83,0xe0,0x54,0x7f,0xf5, +0x1f,0xe5,0x1f,0x54,0x1f,0xff,0x90,0x9e,0x25,0xf0,0x75,0xf0,0x09,0xec,0x90,0x96, +0x49,0x12,0x43,0x5f,0xe0,0x90,0x9e,0x27,0xf0,0x75,0xf0,0x09,0xec,0x90,0x96,0x48, +0x12,0x43,0x5f,0xe0,0xfe,0x90,0x9e,0x28,0xf0,0xec,0x25,0xe0,0x24,0xc6,0xf5,0x82, +0xe4,0x34,0x9b,0xf5,0x83,0xe0,0xfb,0xa3,0xe0,0x90,0x9e,0x29,0xcb,0xf0,0xa3,0xeb, +0xf0,0xec,0x25,0xe0,0x24,0x02,0xf5,0x82,0xe4,0x34,0x95,0xf5,0x83,0xe0,0xfb,0xa3, +0xe0,0x90,0x9e,0x2b,0xcb,0xf0,0xa3,0xeb,0xf0,0xef,0xd3,0x9e,0x40,0x0a,0x90,0x9e, +0x28,0xe0,0x90,0x9e,0x25,0xf0,0xf5,0x1f,0xed,0x70,0x02,0xa1,0x13,0x90,0x9e,0x26, +0xed,0xf0,0xe5,0x1f,0x30,0xe6,0x0a,0x90,0x9e,0x25,0xe0,0xf5,0x1f,0xa3,0xe0,0x14, +0xf0,0x90,0x9e,0x26,0xe0,0x70,0x02,0xa1,0x13,0x90,0x9e,0x25,0xe0,0xff,0xd3,0x94, +0x00,0x50,0x02,0xa1,0x13,0xe4,0x90,0x9e,0x24,0xf0,0xef,0x14,0x90,0x9e,0x23,0xf0, +0x90,0x9e,0x27,0xe0,0xfd,0x90,0x9e,0x23,0xe0,0xff,0xd3,0x9d,0x40,0x6b,0xef,0x94, +0x10,0x40,0x21,0xef,0x24,0xf0,0xff,0x74,0x01,0x7e,0x00,0xa8,0x07,0x08,0x80,0x05, +0xc3,0x33,0xce,0x33,0xce,0xd8,0xf9,0xff,0x90,0x9e,0x2b,0xe0,0x5e,0xfe,0xa3,0xe0, +0x5f,0x4e,0x70,0x27,0x90,0x9e,0x23,0xe0,0xff,0xc3,0x94,0x10,0x50,0x33,0x74,0x01, +0x7e,0x00,0xa8,0x07,0x08,0x80,0x05,0xc3,0x33,0xce,0x33,0xce,0xd8,0xf9,0xff,0x90, +0x9e,0x29,0xe0,0x5e,0xfe,0xa3,0xe0,0x5f,0x4e,0x60,0x16,0x90,0x9e,0x23,0xe0,0xf5, +0x1f,0xa3,0xe0,0x04,0xf0,0x90,0x9e,0x26,0xe0,0xff,0x90,0x9e,0x24,0xe0,0x6f,0x60, +0x08,0x90,0x9e,0x23,0xe0,0x14,0xf0,0x80,0x87,0x90,0x9e,0x26,0xe0,0xff,0x90,0x9e, +0x24,0xe0,0xc3,0x9f,0x50,0x0d,0x90,0x9e,0x23,0xe0,0xb5,0x05,0x06,0x90,0x9e,0x27, +0xe0,0xf5,0x1f,0xe5,0x1f,0x25,0xe0,0x24,0x9e,0xf5,0x82,0xe4,0x34,0x41,0xf5,0x83, +0xe4,0x93,0xfe,0x74,0x01,0x93,0xff,0xe5,0x1f,0x25,0xe0,0x24,0x66,0xf5,0x82,0xe4, +0x34,0x41,0xf5,0x83,0x74,0x01,0x93,0x2f,0xff,0xe4,0x93,0x3e,0xc3,0x13,0xfe,0xef, +0x13,0xff,0xec,0x25,0xe0,0x24,0xc2,0xf5,0x82,0xe4,0x34,0x95,0xf5,0x83,0xee,0xf0, +0xa3,0xef,0xf0,0xaf,0x04,0xad,0x1f,0x51,0xa5,0xaf,0x1f,0x22,0xad,0x07,0xed,0xc3, +0x94,0x20,0x50,0x0d,0x74,0x84,0x2d,0xf5,0x82,0xe4,0x34,0x04,0xf5,0x83,0xe0,0x80, +0x0b,0x74,0xa6,0x2d,0xf5,0x82,0xe4,0x34,0x9c,0xf5,0x83,0xe0,0x54,0x7f,0xf5,0x1f, +0xe5,0x1f,0x54,0x1f,0xfc,0x75,0xf0,0x09,0xed,0x90,0x96,0x48,0x12,0x43,0x5f,0xe0, +0xff,0x90,0x9e,0x23,0xf0,0xed,0x25,0xe0,0x24,0x02,0xf5,0x82,0xe4,0x34,0x95,0xf5, +0x83,0xe0,0xfb,0xa3,0xe0,0x90,0x9e,0x24,0xcb,0xf0,0xa3,0xeb,0xf0,0xed,0x25,0xe0, +0x24,0xc6,0xf5,0x82,0xe4,0x34,0x9b,0xf5,0x83,0xe0,0xfb,0xa3,0xe0,0x90,0x9e,0x26, +0xcb,0xf0,0xa3,0xeb,0xf0,0xec,0x25,0xe0,0x24,0x66,0xf5,0x82,0xe4,0x34,0x41,0xf5, +0x83,0xe4,0x93,0xfa,0x74,0x01,0x93,0xfb,0xed,0x25,0xe0,0x24,0xc2,0xf5,0x82,0xe4, +0x34,0x95,0xf5,0x83,0xea,0xf0,0xa3,0xeb,0xf0,0xec,0xc3,0x9f,0x40,0x02,0xc1,0x7a, +0x74,0x67,0x2d,0xf5,0x82,0xe4,0x34,0x9d,0xf5,0x83,0xec,0xf0,0x04,0xfb,0x90,0x9e, +0x23,0xe0,0xff,0xeb,0xd3,0x9f,0x40,0x02,0xc1,0xab,0xeb,0xc3,0x94,0x10,0x40,0x21, +0xeb,0x24,0xf0,0xff,0x74,0x01,0x7e,0x00,0xa8,0x07,0x08,0x80,0x05,0xc3,0x33,0xce, +0x33,0xce,0xd8,0xf9,0xff,0x90,0x9e,0x24,0xe0,0x5e,0xfe,0xa3,0xe0,0x5f,0x4e,0x70, +0x23,0xeb,0xc3,0x94,0x10,0x50,0x40,0x74,0x01,0x7e,0x00,0xa8,0x03,0x08,0x80,0x05, +0xc3,0x33,0xce,0x33,0xce,0xd8,0xf9,0xff,0x90,0x9e,0x26,0xe0,0x5e,0xfe,0xa3,0xe0, +0x5f,0x4e,0x60,0x23,0xbb,0x11,0x09,0x90,0x9e,0x25,0xe0,0x30,0xe7,0x02,0x7b,0x17, +0xeb,0x64,0x13,0x60,0x03,0xbb,0x12,0x09,0x90,0x9e,0x24,0xe0,0x30,0xe0,0x02,0x7b, +0x18,0xac,0x03,0x8c,0x1f,0x80,0x34,0x0b,0x80,0x84,0x90,0x9e,0x23,0xe0,0xfb,0x6c, +0x70,0x69,0x74,0x67,0x2d,0xf5,0x82,0xe4,0x34,0x9d,0xf5,0x83,0xec,0xf0,0x75,0xf0, +0x09,0xed,0x90,0x96,0x4a,0x12,0x43,0x5f,0xe0,0xb4,0x01,0x0c,0xe5,0x1f,0x20,0xe6, +0x07,0xec,0x44,0x40,0xf5,0x1f,0x80,0x03,0xaf,0x1f,0x22,0xec,0x25,0xe0,0x24,0x9e, +0xf5,0x82,0xe4,0x34,0x41,0xf5,0x83,0xe4,0x93,0xfe,0x74,0x01,0x93,0xff,0xec,0x25, +0xe0,0x24,0x66,0xf5,0x82,0xe4,0x34,0x41,0xf5,0x83,0x74,0x01,0x93,0x2f,0xff,0xe4, +0x93,0x3e,0xc3,0x13,0xfe,0xef,0x13,0xff,0xed,0x25,0xe0,0x24,0xc2,0xf5,0x82,0xe4, +0x34,0x95,0xf5,0x83,0xee,0xf0,0xa3,0xef,0xf0,0x80,0x5b,0xec,0xd3,0x9b,0x40,0x56, +0x90,0x9e,0x23,0xe0,0xff,0x74,0x67,0x2d,0xf5,0x82,0xe4,0x34,0x9d,0xf5,0x83,0xef, +0xf0,0xac,0x07,0x8f,0x1f,0xec,0x25,0xe0,0x24,0x9e,0xf5,0x82,0xe4,0x34,0x41,0xf5, +0x83,0xe4,0x93,0xfe,0x74,0x01,0x93,0xff,0xec,0x25,0xe0,0x24,0x66,0xf5,0x82,0xe4, +0x34,0x41,0xf5,0x83,0x74,0x01,0x93,0x2f,0xff,0xe4,0x93,0x3e,0xc3,0x13,0xfe,0xef, +0x13,0xff,0xed,0x25,0xe0,0x24,0xc2,0xf5,0x82,0xe4,0x34,0x95,0xf5,0x83,0xee,0xf0, +0xa3,0xef,0xf0,0xaf,0x1f,0x22,0x74,0x01,0x2d,0xf5,0x82,0xe4,0x34,0x94,0xf5,0x83, +0xe4,0xf0,0xaf,0x05,0xe5,0x1f,0x44,0x80,0xfd,0x51,0xa5,0xe5,0x1f,0x44,0x80,0xff, +0x22,0xef,0xc3,0x94,0x20,0x50,0x39,0xef,0x30,0xe0,0x17,0xed,0xc4,0x54,0xf0,0xfd, +0xef,0xc3,0x13,0xfe,0x24,0xa4,0xf5,0x82,0xe4,0x34,0x04,0xf5,0x83,0xe0,0x54,0x0f, +0x80,0x10,0xef,0xc3,0x13,0xfe,0x24,0xa4,0xf5,0x82,0xe4,0x34,0x04,0xf5,0x83,0xe0, +0x54,0xf0,0xf0,0x74,0xa4,0x2e,0xf5,0x82,0xe4,0x34,0x04,0xf5,0x83,0xe0,0x4d,0xf0, +0x22,0xe4,0xf5,0x14,0xe5,0x14,0xb4,0x20,0x14,0x90,0x9a,0xc5,0xe0,0x04,0xf0,0x90, +0x95,0x01,0xe0,0xff,0x90,0x9a,0xc5,0xe0,0xb5,0x07,0x02,0xe4,0xf0,0x75,0xf0,0x09, +0xe5,0x14,0x90,0x96,0x4b,0x12,0x43,0x5f,0xe0,0x64,0x01,0x60,0x03,0x02,0x6e,0x6a, +0xe5,0x14,0x25,0xe0,0x24,0x80,0xf5,0x82,0xe4,0x34,0x93,0xf5,0x83,0xe0,0xfe,0xa3, +0xe0,0xd3,0x94,0x00,0xee,0x94,0x00,0x50,0x03,0x02,0x6e,0x6a,0xe5,0x14,0x94,0x20, +0x40,0x09,0x90,0x9a,0xc5,0xe0,0x60,0x03,0x02,0x6e,0x76,0xe5,0x14,0x75,0xf0,0x0a, +0xa4,0x24,0x00,0xf9,0x74,0x90,0x35,0xf0,0x75,0x18,0x01,0xf5,0x19,0x89,0x1a,0xe5, +0x14,0x25,0xe0,0x24,0x80,0xf5,0x82,0xe4,0x34,0x93,0xf5,0x83,0xe0,0xff,0xa3,0xe0, +0x90,0x9e,0x1b,0xcf,0xf0,0xa3,0xef,0xf0,0xe5,0x14,0x25,0xe0,0x24,0xc4,0xf5,0x82, +0xe4,0x34,0x98,0xf5,0x83,0xe0,0xff,0xa3,0xe0,0x90,0x9e,0x1d,0xcf,0xf0,0xa3,0xef, +0xf0,0xe5,0x14,0xc3,0x94,0x20,0x50,0x14,0x74,0x84,0x25,0x14,0xf5,0x82,0xe4,0x34, +0x04,0xf5,0x83,0xe0,0x54,0x3f,0x90,0x9e,0x19,0xf0,0x80,0x12,0x74,0xa6,0x25,0x14, +0xf5,0x82,0xe4,0x34,0x9c,0xf5,0x83,0xe0,0x54,0x3f,0x90,0x9e,0x19,0xf0,0x90,0x9e, +0x19,0xe0,0xfe,0x54,0x1f,0xa3,0xf0,0x75,0xf0,0x09,0xe5,0x14,0x90,0x96,0x48,0x12, +0x43,0x5f,0xe0,0x90,0x9e,0x20,0xf0,0x74,0xe6,0x25,0x14,0xf5,0x82,0xe4,0x34,0x9c, +0xf5,0x83,0xe0,0xc3,0x94,0x05,0x40,0x02,0x41,0x9f,0x90,0x9e,0x20,0xe0,0xff,0x90, +0x9e,0x1a,0xe0,0x9f,0x40,0x13,0x90,0x9e,0x20,0xe0,0x90,0x9e,0x1a,0xf0,0xee,0x54, +0x40,0xfe,0x90,0x9e,0x19,0xf0,0xef,0x4e,0xf0,0x90,0x04,0xfd,0xe0,0x54,0x05,0x64, +0x01,0x70,0x29,0x90,0x9e,0x1a,0xe0,0xff,0x90,0x41,0x4a,0x93,0xfe,0x74,0x44,0x25, +0x14,0xf5,0x82,0xe4,0x34,0x9a,0xf5,0x83,0xe0,0xc3,0x9e,0x40,0x06,0xef,0x90,0x40, +0xda,0x80,0x30,0x90,0x9e,0x1a,0xe0,0x90,0x40,0xf6,0x80,0x27,0x90,0x9e,0x1a,0xe0, +0xff,0x90,0x41,0x4a,0x93,0xfe,0x74,0x44,0x25,0x14,0xf5,0x82,0xe4,0x34,0x9a,0xf5, +0x83,0xe0,0xc3,0x9e,0x40,0x06,0xef,0x90,0x41,0x12,0x80,0x07,0x90,0x9e,0x1a,0xe0, +0x90,0x41,0x2e,0x93,0x90,0x9e,0x1f,0xf0,0x90,0x9e,0x1f,0xe0,0x75,0xf0,0x06,0xa4, +0x24,0x50,0xf9,0x74,0x40,0x35,0xf0,0xfa,0x7b,0xff,0x8b,0x15,0xf5,0x16,0x89,0x17, +0xe5,0x14,0x25,0xe0,0x24,0xc2,0xf5,0x82,0xe4,0x34,0x95,0xf5,0x83,0xe0,0xf5,0x1b, +0xa3,0xe0,0xf5,0x1c,0x12,0x29,0xd9,0xff,0x7e,0x00,0xab,0x18,0xaa,0x19,0xa9,0x1a, +0x12,0x42,0x97,0xfd,0xac,0xf0,0x12,0x29,0xf2,0xef,0x25,0x1c,0xf5,0x1c,0xee,0x35, +0x1b,0xf5,0x1b,0xab,0x15,0xaa,0x16,0xa9,0x17,0x90,0x00,0x01,0x12,0x42,0x20,0xff, +0x7e,0x00,0xab,0x18,0xaa,0x19,0xa9,0x1a,0x90,0x00,0x02,0x12,0x42,0xc2,0xfd,0xac, +0xf0,0x12,0x29,0xf2,0xef,0x25,0x1c,0xf5,0x1c,0xee,0x35,0x1b,0xf5,0x1b,0xab,0x15, +0xaa,0x16,0xa9,0x17,0x90,0x00,0x02,0x12,0x42,0x20,0xff,0x7e,0x00,0xab,0x18,0xaa, +0x19,0xa9,0x1a,0x90,0x00,0x04,0x12,0x42,0xc2,0xfd,0xac,0xf0,0x12,0x29,0xf2,0xef, +0x25,0x1c,0xf5,0x1c,0xee,0x35,0x1b,0xf5,0x1b,0xab,0x15,0xaa,0x16,0xa9,0x17,0x90, +0x00,0x03,0x12,0x42,0x20,0xff,0x7e,0x00,0xab,0x18,0xaa,0x19,0xa9,0x1a,0x90,0x00, +0x06,0x12,0x42,0xc2,0xfd,0xac,0xf0,0x12,0x29,0xf2,0xef,0x25,0x1c,0xf5,0x1c,0xee, +0x35,0x1b,0xf5,0x1b,0xab,0x15,0xaa,0x16,0xa9,0x17,0x90,0x00,0x04,0x12,0x42,0x20, +0xff,0x7e,0x00,0xab,0x18,0xaa,0x19,0xa9,0x1a,0x90,0x00,0x08,0x12,0x42,0xc2,0xfd, +0xac,0xf0,0x12,0x29,0xf2,0xef,0x25,0x1c,0xf5,0x1c,0xee,0x35,0x1b,0xf5,0x1b,0xab, +0x15,0xaa,0x16,0xa9,0x17,0x90,0x00,0x05,0x12,0x42,0x20,0xff,0x7e,0x00,0x90,0x9e, +0x1b,0xe0,0xfc,0xa3,0xe0,0xfd,0x12,0x29,0xf2,0xd3,0xe5,0x1c,0x9f,0xe5,0x1b,0x9e, +0x40,0x0c,0xe5,0x1c,0x9f,0xf5,0x1c,0xe5,0x1b,0x9e,0xf5,0x1b,0x80,0x05,0xe4,0xf5, +0x1b,0xf5,0x1c,0xe5,0x14,0x25,0xe0,0x24,0xc2,0xf5,0x82,0xe4,0x34,0x95,0xf5,0x83, +0xe5,0x1b,0xf0,0xa3,0xe5,0x1c,0xf0,0x90,0x9e,0x19,0xe0,0x25,0xe0,0x24,0x66,0xf5, +0x82,0xe4,0x34,0x41,0xf5,0x83,0xc3,0x74,0x01,0x93,0x95,0x1c,0xe4,0x93,0x95,0x1b, +0x50,0x07,0xaf,0x14,0x12,0x65,0x5c,0xa1,0x31,0x90,0x9e,0x19,0xe0,0x25,0xe0,0x24, +0x9e,0xf5,0x82,0xe4,0x34,0x41,0xf5,0x83,0xd3,0x74,0x01,0x93,0x95,0x1c,0xe4,0x93, +0x95,0x1b,0x50,0x02,0xa1,0x31,0x7d,0x01,0xaf,0x14,0x12,0x63,0xbd,0xa1,0x31,0x74, +0xe6,0x25,0x14,0xf5,0x82,0xe4,0x34,0x9c,0xf5,0x83,0xe0,0xfc,0x64,0x05,0x60,0x02, +0x81,0x3a,0x90,0x96,0x43,0xe0,0xff,0xb4,0x03,0x0b,0x90,0x9e,0x1a,0xe0,0xc3,0x94, +0x19,0x40,0x3d,0x80,0x2e,0xef,0xb4,0x02,0x0b,0x90,0x9e,0x1a,0xe0,0xc3,0x94,0x11, +0x40,0x2e,0x80,0x1f,0x90,0x96,0x43,0xe0,0xff,0xb4,0x01,0x0b,0x90,0x9e,0x1a,0xe0, +0xc3,0x94,0x0a,0x40,0x1b,0x80,0x0c,0xef,0x70,0x11,0x90,0x9e,0x1a,0xe0,0xc3,0x94, +0x03,0x40,0x0d,0x90,0x9a,0x84,0x74,0x01,0xf0,0x80,0x05,0xe4,0x90,0x9a,0x84,0xf0, +0x74,0x84,0x25,0x14,0xf5,0x82,0xe4,0x34,0x98,0xf5,0x83,0xe0,0xf5,0x1e,0x74,0x44, +0x25,0x14,0xf5,0x82,0xe4,0x34,0x9a,0xf5,0x83,0xe0,0xff,0xc3,0x94,0x30,0x50,0x02, +0x61,0xe7,0x90,0x9a,0x84,0xe0,0x64,0x01,0x60,0x02,0x61,0xe7,0x74,0x85,0x25,0x14, +0xf5,0x82,0xe4,0x34,0x9a,0xf5,0x83,0xe0,0x64,0x0a,0x60,0x51,0xef,0x24,0x05,0xff, +0xe4,0x33,0xfe,0x74,0x41,0x25,0x14,0xf5,0x82,0xe4,0x34,0x94,0xf5,0x83,0xe0,0xfd, +0xd3,0x9f,0xee,0x64,0x80,0xf8,0x74,0x80,0x98,0x50,0x32,0xed,0x24,0x05,0xff,0xe4, +0x33,0xfe,0x74,0x44,0x25,0x14,0xf5,0x82,0xe4,0x34,0x9a,0xf5,0x83,0xe0,0xd3,0x9f, +0xee,0x64,0x80,0xf8,0x74,0x80,0x98,0x50,0x14,0x74,0x26,0x25,0x14,0xf5,0x82,0xe4, +0x34,0x9d,0xf5,0x83,0xe0,0xff,0x90,0x9e,0x1a,0xe0,0x6f,0x60,0x3d,0x74,0x44,0x25, +0x14,0xf5,0x82,0xe4,0x34,0x9a,0xf5,0x83,0xe0,0xff,0xd3,0x94,0x42,0x40,0x05,0x75, +0x1e,0x05,0x80,0x0e,0xef,0xd3,0x94,0x39,0x40,0x05,0x75,0x1e,0x03,0x80,0x03,0x75, +0x1e,0x01,0x74,0x41,0x25,0x14,0xf5,0x82,0xe4,0x34,0x94,0xf5,0x83,0xef,0xf0,0x74, +0x85,0x25,0x14,0xf5,0x82,0xe4,0x34,0x9a,0x80,0x29,0x74,0xe6,0x25,0x14,0xf5,0x82, +0xe4,0x34,0x9c,0xf5,0x83,0xe4,0xf0,0x74,0x85,0x25,0x14,0xf5,0x82,0xe4,0x34,0x9a, +0xf5,0x83,0xe0,0x04,0xf0,0x80,0x10,0xe4,0xf5,0x1e,0x74,0xe6,0x25,0x14,0xf5,0x82, +0xe4,0x34,0x9c,0xf5,0x83,0xe4,0xf0,0x90,0x9e,0x1a,0xe0,0xff,0x74,0x26,0x25,0x14, +0xf5,0x82,0xe4,0x34,0x9d,0xf5,0x83,0xef,0xf0,0x74,0x84,0x25,0x14,0xf5,0x82,0xe4, +0x34,0x98,0xf5,0x83,0xe5,0x1e,0xf0,0x75,0xf0,0x09,0xe5,0x14,0x90,0x96,0x4c,0x12, +0x43,0x5f,0xe0,0xb4,0x01,0x10,0xe4,0xf5,0x1e,0x74,0xe6,0x25,0x14,0xf5,0x82,0xe4, +0x34,0x9c,0xf5,0x83,0xe4,0xf0,0xad,0x1e,0xa1,0x2c,0xec,0x64,0x06,0x60,0x02,0xa1, +0x31,0xf5,0x1b,0xf5,0x1c,0x90,0x42,0x13,0x93,0xff,0x7e,0x00,0x90,0x9e,0x1b,0xe0, +0xfc,0xa3,0xe0,0xfd,0x12,0x29,0xf2,0x90,0x9e,0x21,0xee,0xf0,0xa3,0xef,0xf0,0x74, +0x84,0x25,0x14,0xf5,0x82,0xe4,0x34,0x98,0xf5,0x83,0xe0,0xf5,0x1e,0xe4,0xf5,0x1d, +0xab,0x18,0xaa,0x19,0xa9,0x1a,0x75,0xf0,0x02,0xe5,0x1d,0xa4,0xf5,0x82,0x85,0xf0, +0x83,0x12,0x42,0xc2,0xfd,0xac,0xf0,0xe5,0x1d,0x90,0x42,0x0e,0x93,0xff,0x7e,0x00, +0x12,0x29,0xf2,0xef,0x25,0x1c,0xf5,0x1c,0xee,0x35,0x1b,0xf5,0x1b,0xc3,0x90,0x9e, +0x22,0xe0,0x95,0x1c,0x90,0x9e,0x21,0xe0,0x95,0x1b,0x40,0x07,0x05,0x1d,0xe5,0x1d, +0xb4,0x05,0xbd,0xe5,0x1d,0xc3,0x13,0xf5,0x1d,0xe5,0x1e,0xb4,0x01,0x06,0xe5,0x1d, +0x70,0x46,0x80,0x13,0xe5,0x1e,0xb4,0x03,0x15,0xe5,0x1d,0x70,0x05,0x75,0x1e,0x03, +0x80,0x39,0xe5,0x1d,0xb4,0x01,0x05,0x75,0x1e,0x01,0x80,0x2f,0x80,0x2a,0xe5,0x1e, +0xb4,0x05,0x28,0xe5,0x1d,0x70,0x05,0x75,0x1e,0x05,0x80,0x0d,0xe5,0x1d,0xb4,0x01, +0x05,0x75,0x1e,0x03,0x80,0x03,0x75,0x1e,0x01,0xd3,0x90,0x9e,0x1e,0xe0,0x94,0x03, +0x90,0x9e,0x1d,0xe0,0x94,0x00,0x40,0x03,0xe4,0xf5,0x1e,0xd3,0x90,0x9e,0x1e,0xe0, +0x94,0x03,0x90,0x9e,0x1d,0xe0,0x94,0x00,0x40,0x03,0xe4,0xf5,0x1e,0x74,0x84,0x25, +0x14,0xf5,0x82,0xe4,0x34,0x98,0xf5,0x83,0xe5,0x1e,0xf0,0xfd,0xaf,0x14,0x12,0x67, +0x61,0x74,0xe6,0x25,0x14,0xf5,0x82,0xe4,0x34,0x9c,0xf5,0x83,0xe0,0xd3,0x94,0x05, +0x74,0xe6,0x50,0x0e,0x25,0x14,0xf5,0x82,0xe4,0x34,0x9c,0xf5,0x83,0xe0,0x04,0xf0, +0x80,0x0b,0x25,0x14,0xf5,0x82,0xe4,0x34,0x9c,0xf5,0x83,0xe4,0xf0,0x90,0x9e,0x1d, +0xe0,0xfe,0xa3,0xe0,0xff,0xc3,0x74,0xff,0x9f,0xfd,0x74,0xff,0x9e,0xfc,0xe5,0x14, +0x25,0xe0,0x24,0xc6,0xf5,0x82,0xe4,0x34,0x9a,0xf5,0x83,0xe0,0xfa,0xa3,0xe0,0xd3, +0x9d,0xea,0x9c,0xe5,0x14,0x50,0x13,0x25,0xe0,0x24,0xc6,0xf5,0x82,0xe4,0x34,0x9a, +0xf5,0x83,0xee,0x8f,0xf0,0x12,0x42,0x81,0x80,0x10,0x25,0xe0,0x24,0xc6,0xf5,0x82, +0xe4,0x34,0x9a,0xf5,0x83,0x74,0xff,0xf0,0xa3,0xf0,0xe5,0x14,0x25,0xe0,0x24,0x44, +0xf5,0x82,0xe4,0x34,0x99,0xf5,0x83,0xe0,0xfe,0xa3,0xe0,0xff,0xc3,0x74,0xff,0x9f, +0xfd,0x74,0xff,0x9e,0xfc,0xe5,0x14,0x25,0xe0,0x24,0x46,0xf5,0x82,0xe4,0x34,0x9b, +0xf5,0x83,0xe0,0xfa,0xa3,0xe0,0xd3,0x9d,0xea,0x9c,0xe5,0x14,0x50,0x13,0x25,0xe0, +0x24,0x46,0xf5,0x82,0xe4,0x34,0x9b,0xf5,0x83,0xee,0x8f,0xf0,0x12,0x42,0x81,0x80, +0x10,0x25,0xe0,0x24,0x46,0xf5,0x82,0xe4,0x34,0x9b,0xf5,0x83,0x74,0xff,0xf0,0xa3, +0xf0,0xab,0x18,0xaa,0x19,0xa9,0x1a,0xe4,0xf5,0xf0,0x12,0x42,0xfa,0xab,0x18,0xaa, +0x19,0xa9,0x1a,0x90,0x00,0x02,0xe4,0xf5,0xf0,0x12,0x43,0x19,0x90,0x00,0x04,0xe4, +0xf5,0xf0,0x12,0x43,0x19,0x90,0x00,0x06,0xe4,0xf5,0xf0,0x12,0x43,0x19,0x90,0x00, +0x08,0xe4,0xf5,0xf0,0x12,0x43,0x19,0xe5,0x14,0x25,0xe0,0x24,0x80,0xf5,0x82,0xe4, +0x34,0x93,0xf5,0x83,0xe4,0xf0,0xa3,0xf0,0xe5,0x14,0x25,0xe0,0x24,0xc4,0xf5,0x82, +0xe4,0x34,0x98,0xf5,0x83,0xe4,0xf0,0xa3,0xf0,0xe5,0x14,0x25,0xe0,0x24,0x44,0xf5, +0x82,0xe4,0x34,0x99,0xf5,0x83,0xe4,0xf0,0xa3,0xf0,0x05,0x14,0xe5,0x14,0xc3,0x94, +0x40,0x50,0x03,0x02,0x67,0xa4,0x22,0x90,0x04,0x44,0x74,0x11,0xf0,0xa3,0x74,0xf0, +0xf0,0xa3,0x74,0x0f,0xf0,0xa3,0xe4,0xf0,0xfd,0x74,0xa4,0x2d,0xf5,0x82,0xe4,0x34, +0x04,0xf5,0x83,0xe4,0xf0,0x0d,0xbd,0x10,0xf0,0xe4,0x90,0x9a,0xc5,0xf0,0x90,0x95, +0x01,0x04,0xf0,0xe4,0xfd,0x75,0xf0,0x0a,0xed,0x90,0x90,0x00,0x12,0x43,0x5f,0xe4, +0xf0,0xa3,0xf0,0x75,0xf0,0x0a,0xed,0x90,0x90,0x02,0x12,0x43,0x5f,0xe4,0xf0,0xa3, +0xf0,0x75,0xf0,0x0a,0xed,0x90,0x90,0x04,0x12,0x43,0x5f,0xe4,0xf0,0xa3,0xf0,0x75, +0xf0,0x0a,0xed,0x90,0x90,0x06,0x12,0x43,0x5f,0xe4,0xf0,0xa3,0xf0,0x75,0xf0,0x0a, +0xed,0x90,0x90,0x08,0x12,0x43,0x5f,0xe4,0xf0,0xa3,0xf0,0x74,0x26,0x2d,0xf5,0x82, +0xe4,0x34,0x9d,0xf5,0x83,0x74,0x13,0xf0,0x74,0x85,0x2d,0xf5,0x82,0xe4,0x34,0x9a, +0xf5,0x83,0xe4,0xf0,0x74,0x84,0x2d,0xf5,0x82,0xe4,0x34,0x98,0xf5,0x83,0xe4,0xf0, +0xed,0x25,0xe0,0x24,0x80,0xf5,0x82,0xe4,0x34,0x93,0xf5,0x83,0xe4,0xf0,0xa3,0xf0, +0xed,0x25,0xe0,0x24,0xc4,0xf5,0x82,0xe4,0x34,0x98,0xf5,0x83,0xe4,0xf0,0xa3,0xf0, +0xed,0x25,0xe0,0x24,0xc4,0xf5,0x82,0xe4,0x34,0x99,0xf5,0x83,0xe4,0xf0,0xa3,0xf0, +0xed,0x25,0xe0,0x24,0x44,0xf5,0x82,0xe4,0x34,0x99,0xf5,0x83,0xe4,0xf0,0xa3,0xf0, +0xed,0x25,0xe0,0x24,0xc6,0xf5,0x82,0xe4,0x34,0x9a,0xf5,0x83,0xe4,0xf0,0xa3,0xf0, +0xed,0x25,0xe0,0x24,0x46,0xf5,0x82,0xe4,0x34,0x9b,0xf5,0x83,0xe4,0xf0,0xa3,0xf0, +0x74,0x86,0x2d,0xf5,0x82,0xe4,0x34,0x9c,0xf5,0x83,0xe4,0xf0,0x74,0x46,0x2d,0xf5, +0x82,0xe4,0x34,0x9c,0xf5,0x83,0xe4,0xf0,0x74,0xe6,0x2d,0xf5,0x82,0xe4,0x34,0x9c, +0xf5,0x83,0xe4,0xf0,0x90,0x41,0xc4,0x93,0xfe,0x74,0x01,0x93,0xff,0x90,0x41,0x8c, +0x74,0x01,0x93,0x2f,0xff,0xe4,0x93,0x3e,0xc3,0x13,0xfe,0xef,0x13,0xff,0xed,0x25, +0xe0,0x24,0xc2,0xf5,0x82,0xe4,0x34,0x95,0xf5,0x83,0xee,0xf0,0xa3,0xef,0xf0,0x75, +0xf0,0x09,0xed,0x90,0x96,0x4b,0x12,0x43,0x5f,0x74,0x01,0xf0,0x75,0xf0,0x09,0xed, +0x90,0x96,0x4a,0x12,0x43,0x5f,0x74,0x01,0xf0,0x74,0x82,0x2d,0xf5,0x82,0xe4,0x34, +0x95,0xf5,0x83,0x74,0x0c,0xf0,0x75,0xf0,0x09,0xed,0x90,0x96,0x46,0x12,0x43,0x5f, +0x74,0xff,0xf0,0xa3,0xf0,0x75,0xf0,0x09,0xed,0x90,0x96,0x44,0x12,0x43,0x5f,0xe4, +0xf0,0xa3,0x74,0x0f,0xf0,0x75,0xf0,0x09,0xed,0x90,0x96,0x48,0x12,0x43,0x5f,0x74, +0x13,0xf0,0x75,0xf0,0x09,0xed,0x90,0x96,0x49,0x12,0x43,0x5f,0xe4,0xf0,0xed,0xc3, +0x94,0x20,0x50,0x0f,0x74,0x84,0x2d,0xf5,0x82,0xe4,0x34,0x04,0xf5,0x83,0x74,0x13, +0xf0,0x80,0x0d,0x74,0xa6,0x2d,0xf5,0x82,0xe4,0x34,0x9c,0xf5,0x83,0x74,0x13,0xf0, +0x0d,0xed,0x64,0x40,0x60,0x03,0x02,0x6e,0xa5,0x22,0x12,0x29,0xd9,0xf5,0x14,0xc3, +0x94,0x40,0x50,0x15,0x90,0x00,0x02,0x12,0x42,0x20,0xff,0x74,0x44,0x25,0x14,0xf5, +0x82,0xe4,0x34,0x9a,0xf5,0x83,0xef,0xf0,0x22,0xe5,0x14,0xb4,0x40,0x0a,0x90,0x00, +0x02,0x12,0x42,0x20,0x90,0x96,0x42,0xf0,0x22,0x90,0x9e,0x30,0x12,0x43,0x8b,0x90, +0x9e,0x33,0xe0,0x54,0xf0,0x44,0x02,0xf0,0x54,0x0f,0x44,0xc0,0xf0,0x90,0x9e,0x30, +0x12,0x43,0x6b,0x90,0x9e,0x90,0x12,0x43,0x8b,0x7b,0x01,0x7a,0x9e,0x79,0x33,0x02, +0x53,0xf1,0x90,0x00,0x02,0x12,0x42,0x20,0xfd,0x90,0x00,0x01,0x12,0x42,0x20,0xfc, +0xed,0xc3,0x94,0x40,0x40,0x02,0xe4,0xfd,0xec,0xc3,0x94,0x40,0x40,0x02,0xe4,0xfc, +0xed,0x25,0xe0,0x24,0xc6,0xf5,0x82,0xe4,0x34,0x9a,0xf5,0x83,0xe0,0xfa,0xa3,0xe0, +0xfb,0xea,0x90,0x9e,0x24,0xf0,0xeb,0xa3,0xf0,0xed,0x25,0xe0,0x24,0x46,0xf5,0x82, +0xe4,0x34,0x9b,0xf5,0x83,0xe0,0xfa,0xa3,0xe0,0xfb,0xea,0x90,0x9e,0x26,0xf0,0xeb, +0xa3,0xf0,0xa3,0xed,0xf0,0xa3,0x74,0xff,0xf0,0xec,0x25,0xe0,0x24,0xc6,0xf5,0x82, +0xe4,0x34,0x9a,0xf5,0x83,0xe0,0xfa,0xa3,0xe0,0xfb,0xea,0x90,0x9e,0x2a,0xf0,0xeb, +0xa3,0xf0,0xec,0x25,0xe0,0x24,0x46,0xf5,0x82,0xe4,0x34,0x9b,0xf5,0x83,0xe0,0xfa, +0xa3,0xe0,0xfb,0xea,0x90,0x9e,0x2c,0xf0,0xeb,0xa3,0xf0,0xa3,0xec,0xf0,0xa3,0x74, +0xff,0xf0,0xed,0x25,0xe0,0x24,0xc6,0xf5,0x82,0xe4,0x34,0x9a,0xf5,0x83,0xe4,0xf0, +0xa3,0xf0,0xed,0x25,0xe0,0x24,0x46,0xf5,0x82,0xe4,0x34,0x9b,0xf5,0x83,0xe4,0xf0, +0xa3,0xf0,0xec,0x25,0xe0,0x24,0xc6,0xf5,0x82,0xe4,0x34,0x9a,0xf5,0x83,0xe4,0xf0, +0xa3,0xf0,0xec,0x25,0xe0,0x24,0x46,0xf5,0x82,0xe4,0x34,0x9b,0xf5,0x83,0xe4,0xf0, +0xa3,0xf0,0x7b,0x01,0x7a,0x9e,0x79,0x24,0x01,0x79,0xd3,0x10,0xaf,0x01,0xc3,0xc0, +0xd0,0x90,0x9e,0xa4,0xee,0xf0,0xa3,0xef,0xf0,0xe4,0xa3,0xf0,0xa3,0xf0,0x90,0x9e, +0xa4,0xe0,0xfe,0xa3,0xe0,0xf5,0x82,0x8e,0x83,0xe0,0x60,0x2d,0xc3,0x90,0x9e,0xa7, +0xe0,0x94,0xe8,0x90,0x9e,0xa6,0xe0,0x94,0x03,0x40,0x0b,0x90,0x01,0xc6,0xe0,0x44, +0x10,0xf0,0x7f,0x00,0x80,0x15,0x90,0x9e,0xa6,0xe4,0x75,0xf0,0x01,0x12,0x42,0x81, +0x7f,0x0a,0x7e,0x00,0x12,0x37,0x54,0x80,0xc5,0x7f,0x01,0xd0,0xd0,0x92,0xaf,0x22, +0xd3,0x10,0xaf,0x01,0xc3,0xc0,0xd0,0x90,0x9e,0x24,0x12,0x2a,0x8b,0x00,0x00,0x00, +0x00,0x90,0x00,0x01,0x12,0x42,0x20,0x90,0x9e,0x66,0xf0,0x90,0x00,0x03,0x12,0x42, +0x20,0x90,0x9e,0x55,0xf0,0x12,0x56,0x22,0x90,0x01,0xe5,0xe5,0x63,0xf0,0x90,0x9e, +0x66,0xe0,0x90,0x01,0xe6,0xf0,0xd0,0xd0,0x92,0xaf,0x22,0x90,0x00,0x02,0x12,0x42, +0x20,0xff,0x30,0xe0,0x25,0x12,0x29,0xd9,0x90,0x9e,0x5c,0xf0,0x90,0x00,0x01,0x12, +0x42,0x20,0x90,0x9e,0x5d,0xf0,0xef,0xc3,0x13,0x54,0x7f,0x90,0x9e,0x5b,0xf0,0x90, +0x00,0x03,0x12,0x42,0x20,0x90,0x9e,0x62,0xf0,0x22,0x90,0x9e,0x5c,0x74,0x0a,0xf0, +0x90,0x9e,0x5d,0x74,0x05,0xf0,0x90,0x9e,0x5b,0x74,0x14,0xf0,0x90,0x9e,0x62,0x74, +0x05,0xf0,0x22,0x12,0x29,0xd9,0x30,0xe0,0x19,0xc3,0x13,0x54,0x7f,0x90,0x9e,0x61, +0xf0,0x90,0x00,0x01,0x12,0x42,0x20,0xff,0x90,0x9e,0x5f,0xe4,0xf0,0xa3,0xef,0xf0, +0x80,0x0f,0x90,0x9e,0x61,0x74,0x07,0xf0,0x90,0x9e,0x5f,0xe4,0xf0,0xa3,0x74,0x03, +0xf0,0x90,0x9e,0x5f,0xe0,0xa3,0xe0,0x90,0x05,0x58,0xf0,0x22,0x90,0x9e,0x24,0x12, +0x2a,0x8b,0x00,0x00,0x00,0x00,0x12,0x29,0xd9,0x60,0x0d,0x90,0x9e,0x5e,0xf0,0xe4, +0xfd,0x7f,0x04,0x12,0x54,0xe7,0x80,0x05,0xe4,0x90,0x9e,0x5e,0xf0,0x90,0x9e,0x5e, +0xe0,0x90,0x01,0xe7,0xf0,0x22,0x90,0x02,0x09,0xe0,0xfd,0x12,0x29,0xd9,0xfe,0xaf, +0x05,0xed,0x2e,0x90,0x9e,0x78,0xf0,0x90,0x00,0x01,0x12,0x42,0x20,0xff,0xed,0x2f, +0x90,0x9e,0x79,0xf0,0x90,0x00,0x02,0x12,0x42,0x20,0xff,0xed,0x2f,0x90,0x9e,0x7a, +0xf0,0x90,0x00,0x03,0x12,0x42,0x20,0xff,0xed,0x2f,0x90,0x9e,0x7b,0xf0,0x90,0x00, +0x04,0x12,0x42,0x20,0xff,0xae,0x05,0xed,0x2f,0x90,0x9e,0x7c,0xf0,0x22,0xd3,0x10, +0xaf,0x01,0xc3,0xc0,0xd0,0x90,0x9e,0x24,0x12,0x43,0x8b,0x90,0x9e,0x24,0x12,0x43, +0x6b,0x90,0x00,0x01,0x12,0x42,0xc2,0xfa,0xe5,0xf0,0x24,0x00,0xff,0xe4,0x3a,0xfe, +0x90,0x9e,0x24,0x12,0x43,0x6b,0x90,0x00,0x01,0xee,0x8f,0xf0,0x12,0x43,0x19,0x12, +0x29,0xd9,0xff,0x60,0x2d,0xb5,0x65,0x16,0x90,0x9e,0x24,0x12,0x43,0x6b,0x90,0x00, +0x01,0x12,0x42,0xc2,0x65,0x67,0x70,0x04,0xe5,0x66,0x65,0xf0,0x60,0x24,0x90,0x9e, +0x24,0x12,0x43,0x6b,0x90,0x00,0x01,0x12,0x42,0xc2,0xff,0xae,0xf0,0x12,0x4e,0x37, +0x80,0x10,0x90,0x9e,0x24,0x12,0x43,0x6b,0x12,0x29,0xd9,0x65,0x65,0x60,0x03,0x12, +0x44,0xc2,0xd0,0xd0,0x92,0xaf,0x22,0x90,0x06,0x34,0x74,0xff,0xf0,0xe4,0xa3,0xf0, +0xa3,0xf0,0xa3,0xf0,0x22,0x90,0x06,0x34,0xe0,0x60,0x24,0x14,0x70,0x1a,0x7b,0x01, +0x7a,0x06,0x79,0x35,0x7f,0xf9,0x7e,0x01,0x71,0xb0,0xbf,0x01,0x09,0x90,0x06,0x35, +0xe0,0x54,0x0f,0xf0,0x80,0x04,0x80,0x00,0x80,0xcd,0xe4,0x90,0x06,0x34,0xf0,0x22, +0x8e,0x14,0x8f,0x15,0x8b,0x16,0x8a,0x17,0x89,0x18,0xe4,0x90,0x9e,0x19,0xf0,0xef, +0x90,0x00,0x31,0xf0,0x12,0x4d,0x45,0xe5,0x14,0x54,0x03,0xff,0x90,0x00,0x32,0xe0, +0x54,0xfc,0x4f,0xf0,0x12,0x4d,0x45,0x90,0x00,0x33,0xe0,0x54,0x7f,0xf0,0x12,0x4d, +0x45,0x90,0x00,0x33,0xe0,0x20,0xe7,0x0e,0x90,0x9e,0x19,0xe0,0xc3,0x94,0x64,0x50, +0x05,0xe0,0x04,0xf0,0x80,0xeb,0x90,0x9e,0x19,0xe0,0xc3,0x94,0x64,0x50,0x10,0x90, +0x00,0x30,0xe0,0xab,0x16,0xaa,0x17,0xa9,0x18,0x12,0x42,0x4d,0x7f,0x01,0x22,0x7f, +0x00,0x22,0xe4,0x90,0x9e,0xac,0xf0,0xa3,0xf0,0x90,0x05,0xf8,0xe0,0x70,0x0f,0xa3, +0xe0,0x70,0x0b,0xa3,0xe0,0x70,0x07,0xa3,0xe0,0x70,0x03,0x7f,0x01,0x22,0xd3,0x90, +0x9e,0xad,0xe0,0x94,0xe8,0x90,0x9e,0xac,0xe0,0x94,0x03,0x40,0x03,0x7f,0x00,0x22, +0x7f,0x32,0x7e,0x00,0x12,0x37,0x54,0x90,0x9e,0xac,0xe4,0x75,0xf0,0x01,0x12,0x42, +0x81,0x80,0xc6,0x90,0x9d,0xff,0x12,0x43,0x53,0x90,0x80,0x85,0x12,0x2a,0x7f,0x7f, +0x78,0x7e,0x08,0x12,0x2f,0xd9,0x90,0x9e,0x03,0x12,0x43,0x53,0x90,0x80,0x85,0x12, +0x2a,0x7f,0x7f,0x04,0x7e,0x0c,0x12,0x2f,0xd9,0x90,0x9e,0x07,0x12,0x43,0x53,0x90, +0x80,0x85,0x12,0x2a,0x7f,0x7f,0x00,0x7e,0x08,0x12,0x2f,0xd9,0x90,0x9e,0x0b,0x12, +0x43,0x53,0x90,0x80,0x85,0x12,0x2a,0x7f,0x7f,0x70,0x7e,0x0e,0x12,0x2f,0xd9,0x90, +0x80,0x59,0x12,0x2a,0x8b,0x00,0x03,0x2d,0x95,0xe4,0xfd,0xff,0x12,0x34,0x81,0x90, +0x9e,0x80,0xe0,0xb4,0x01,0x11,0x90,0x80,0x59,0x12,0x2a,0x8b,0x00,0x03,0x2d,0x95, +0xe4,0xfd,0x7f,0x01,0x12,0x34,0x81,0x22,0x7f,0x78,0x7e,0x08,0x12,0x27,0xde,0x90, +0x9d,0xff,0x12,0x2a,0x7f,0x7f,0x04,0x7e,0x0c,0x12,0x27,0xde,0x90,0x9e,0x03,0x12, +0x2a,0x7f,0x7f,0x00,0x7e,0x08,0x12,0x27,0xde,0x90,0x9e,0x07,0x12,0x2a,0x7f,0x90, +0x9e,0x80,0xe0,0x90,0x9d,0xff,0xb4,0x01,0x0d,0x12,0x43,0x53,0xef,0x54,0xc7,0xff, +0xed,0x54,0xc7,0xfd,0x80,0x07,0x12,0x43,0x53,0xef,0x54,0xc7,0xff,0xec,0x90,0x80, +0x85,0x12,0x2a,0x7f,0x7f,0x78,0x7e,0x08,0x12,0x2f,0xd9,0x90,0x9e,0x03,0x12,0x43, +0x53,0xef,0x54,0x0f,0xff,0xec,0x90,0x80,0x85,0x12,0x2a,0x7f,0x7f,0x04,0x7e,0x0c, +0x12,0x2f,0xd9,0x90,0x9e,0x07,0x12,0x43,0x53,0xef,0x44,0x02,0xff,0xec,0x90,0x80, +0x85,0x12,0x2a,0x7f,0x7f,0x00,0x7e,0x08,0x12,0x2f,0xd9,0x7f,0x70,0x7e,0x0e,0x12, +0x27,0xde,0x90,0x9e,0x0b,0x12,0x2a,0x7f,0x90,0x80,0x85,0x12,0x2a,0x8b,0x00,0x1b, +0x25,0xa0,0x7f,0x70,0x7e,0x0e,0x12,0x2f,0xd9,0x90,0x80,0x59,0x12,0x2a,0x8b,0x00, +0x00,0x00,0x00,0xe4,0xfd,0xff,0x12,0x34,0x81,0x90,0x9e,0x80,0xe0,0xb4,0x01,0x11, +0x90,0x80,0x59,0x12,0x2a,0x8b,0x00,0x00,0x00,0x00,0xe4,0xfd,0x7f,0x01,0x12,0x34, +0x81,0x22,0xef,0x70,0x02,0xe1,0x49,0x90,0x9e,0x0f,0xe0,0x60,0x03,0x02,0x7b,0x15, +0x90,0x9d,0xfb,0x12,0x43,0x53,0x90,0x80,0x85,0x12,0x2a,0x7f,0x7f,0x8c,0x7e,0x08, +0x12,0x2f,0xd9,0x90,0x9d,0xa7,0x12,0x43,0x53,0x90,0x80,0x85,0x12,0x2a,0x7f,0x7f, +0x44,0x7e,0x08,0x12,0x2f,0xd9,0x90,0x9d,0xab,0x12,0x43,0x53,0x90,0x80,0x85,0x12, +0x2a,0x7f,0x7f,0x5c,0x7e,0x08,0x12,0x2f,0xd9,0x90,0x9d,0xaf,0x12,0x43,0x53,0x90, +0x80,0x85,0x12,0x2a,0x7f,0x7f,0x6c,0x7e,0x0e,0x12,0x2f,0xd9,0x90,0x9d,0xb3,0x12, +0x43,0x53,0x90,0x80,0x85,0x12,0x2a,0x7f,0x7f,0x70,0x7e,0x0e,0x12,0x2f,0xd9,0x90, +0x9d,0xb7,0x12,0x43,0x53,0x90,0x80,0x85,0x12,0x2a,0x7f,0x7f,0x74,0x7e,0x0e,0x12, +0x2f,0xd9,0x90,0x9d,0xbb,0x12,0x43,0x53,0x90,0x80,0x85,0x12,0x2a,0x7f,0x7f,0x78, +0x7e,0x0e,0x12,0x2f,0xd9,0x90,0x9d,0xbf,0x12,0x43,0x53,0x90,0x80,0x85,0x12,0x2a, +0x7f,0x7f,0x7c,0x7e,0x0e,0x12,0x2f,0xd9,0x90,0x9d,0xc3,0x12,0x43,0x53,0x90,0x80, +0x85,0x12,0x2a,0x7f,0x7f,0x80,0x7e,0x0e,0x12,0x2f,0xd9,0x90,0x9d,0xc7,0x12,0x43, +0x53,0x90,0x80,0x85,0x12,0x2a,0x7f,0x7f,0x84,0x7e,0x0e,0x12,0x2f,0xd9,0x90,0x9d, +0xcb,0x12,0x43,0x53,0x90,0x80,0x85,0x12,0x2a,0x7f,0x7f,0x88,0x7e,0x0e,0x12,0x2f, +0xd9,0x90,0x9d,0xcf,0x12,0x43,0x53,0x90,0x80,0x85,0x12,0x2a,0x7f,0x7f,0x8c,0x7e, +0x0e,0x12,0x2f,0xd9,0x90,0x9d,0xd3,0x12,0x43,0x53,0x90,0x80,0x85,0x12,0x2a,0x7f, +0x7f,0xd0,0x7e,0x0e,0x12,0x2f,0xd9,0x90,0x9d,0xd7,0x12,0x43,0x53,0x90,0x80,0x85, +0x12,0x2a,0x7f,0x7f,0xd4,0x7e,0x0e,0x12,0x2f,0xd9,0x90,0x9d,0xdb,0x12,0x43,0x53, +0x90,0x80,0x85,0x12,0x2a,0x7f,0x7f,0xd8,0x7e,0x0e,0x12,0x2f,0xd9,0x90,0x9d,0xdf, +0x12,0x43,0x53,0x90,0x80,0x85,0x12,0x2a,0x7f,0x7f,0xdc,0x7e,0x0e,0x12,0x2f,0xd9, +0x90,0x9d,0xe3,0x12,0x43,0x53,0x90,0x80,0x85,0x12,0x2a,0x7f,0x7f,0xe0,0x7e,0x0e, +0x12,0x2f,0xd9,0x90,0x9d,0xe7,0x12,0x43,0x53,0x90,0x80,0x85,0x12,0x2a,0x7f,0x7f, +0xec,0x7e,0x0e,0x12,0x2f,0xd9,0x90,0x9d,0xeb,0x12,0x43,0x53,0x90,0x80,0x85,0x12, +0x2a,0x7f,0x7f,0x04,0x7e,0x0c,0x12,0x2f,0xd9,0x90,0x9d,0xef,0x12,0x43,0x53,0x90, +0x80,0x85,0x12,0x2a,0x7f,0x7f,0x04,0x7e,0x0d,0x12,0x2f,0xd9,0x90,0x9d,0xf3,0x12, +0x43,0x53,0x90,0x80,0x85,0x12,0x2a,0x7f,0x7f,0x0c,0x7e,0x09,0x12,0x2f,0xd9,0x90, +0x9d,0xf7,0x12,0x43,0x53,0x90,0x80,0x85,0x12,0x2a,0x7f,0x7f,0x04,0x7e,0x08,0x12, +0x2f,0xd9,0x90,0x9e,0x0f,0x74,0x01,0xf0,0x22,0x90,0x9e,0x0f,0xe0,0x64,0x01,0x60, +0x03,0x02,0x7b,0x15,0x7f,0x8c,0x7e,0x08,0x12,0x27,0xde,0x90,0x9d,0xfb,0x12,0x2a, +0x7f,0x7f,0x44,0x7e,0x08,0x12,0x27,0xde,0x90,0x9d,0xa7,0x12,0x2a,0x7f,0x7f,0x5c, +0x7e,0x08,0x12,0x27,0xde,0x90,0x9d,0xab,0x12,0x2a,0x7f,0x7f,0x6c,0x7e,0x0e,0x12, +0x27,0xde,0x90,0x9d,0xaf,0x12,0x2a,0x7f,0x7f,0x70,0x7e,0x0e,0x12,0x27,0xde,0x90, +0x9d,0xb3,0x12,0x2a,0x7f,0x7f,0x74,0x7e,0x0e,0x12,0x27,0xde,0x90,0x9d,0xb7,0x12, +0x2a,0x7f,0x7f,0x78,0x7e,0x0e,0x12,0x27,0xde,0x90,0x9d,0xbb,0x12,0x2a,0x7f,0x7f, +0x7c,0x7e,0x0e,0x12,0x27,0xde,0x90,0x9d,0xbf,0x12,0x2a,0x7f,0x7f,0x80,0x7e,0x0e, +0x12,0x27,0xde,0x90,0x9d,0xc3,0x12,0x2a,0x7f,0x7f,0x84,0x7e,0x0e,0x12,0x27,0xde, +0x90,0x9d,0xc7,0x12,0x2a,0x7f,0x7f,0x88,0x7e,0x0e,0x12,0x27,0xde,0x90,0x9d,0xcb, +0x12,0x2a,0x7f,0x7f,0x8c,0x7e,0x0e,0x12,0x27,0xde,0x90,0x9d,0xcf,0x12,0x2a,0x7f, +0x7f,0xd0,0x7e,0x0e,0x12,0x27,0xde,0x90,0x9d,0xd3,0x12,0x2a,0x7f,0x7f,0xd4,0x7e, +0x0e,0x12,0x27,0xde,0x90,0x9d,0xd7,0x12,0x2a,0x7f,0x7f,0xd8,0x7e,0x0e,0x12,0x27, +0xde,0x90,0x9d,0xdb,0x12,0x2a,0x7f,0x7f,0xdc,0x7e,0x0e,0x12,0x27,0xde,0x90,0x9d, +0xdf,0x12,0x2a,0x7f,0x7f,0xe0,0x7e,0x0e,0x12,0x27,0xde,0x90,0x9d,0xe3,0x12,0x2a, +0x7f,0x7f,0xec,0x7e,0x0e,0x12,0x27,0xde,0x90,0x9d,0xe7,0x12,0x2a,0x7f,0x7f,0x04, +0x7e,0x0c,0x12,0x27,0xde,0x90,0x9d,0xeb,0x12,0x2a,0x7f,0x7f,0x04,0x7e,0x0d,0x12, +0x27,0xde,0x90,0x9d,0xef,0x12,0x2a,0x7f,0x7f,0x0c,0x7e,0x09,0x12,0x27,0xde,0x90, +0x9d,0xf3,0x12,0x2a,0x7f,0x7f,0x04,0x7e,0x08,0x12,0x27,0xde,0x90,0x9d,0xf7,0x12, +0x2a,0x7f,0x7f,0x8c,0x7e,0x08,0x12,0x27,0xde,0x90,0x9e,0xa8,0x12,0x2a,0x7f,0x90, +0x9e,0xa8,0x12,0x43,0x53,0xed,0x44,0xc0,0xfd,0xec,0x90,0x9e,0xa8,0x12,0x2a,0x7f, +0x90,0x9e,0xa8,0x12,0x43,0x53,0x90,0x80,0x85,0x12,0x2a,0x7f,0x7f,0x8c,0x7e,0x08, +0x12,0x2f,0xd9,0x90,0x80,0x85,0x12,0x2a,0x8b,0x00,0x01,0x00,0x00,0x7f,0x44,0x7e, +0x08,0x12,0x2f,0xd9,0x90,0x80,0x85,0x12,0x2a,0x8b,0x00,0xdb,0x25,0xa4,0x7f,0x5c, +0x7e,0x08,0x12,0x2f,0xd9,0x90,0x80,0x85,0x12,0x2a,0x8b,0x20,0xdb,0x25,0xa4,0x7f, +0x6c,0x7e,0x0e,0x12,0x2f,0xd9,0x90,0x80,0x85,0x12,0x2a,0x8b,0x20,0xdb,0x25,0xa4, +0x7f,0x70,0x7e,0x0e,0x12,0x2f,0xd9,0x90,0x80,0x85,0x12,0x2a,0x8b,0x04,0x1b,0x25, +0xa4,0x7f,0x74,0x7e,0x0e,0x12,0x2f,0xd9,0x90,0x80,0x85,0x12,0x2a,0x8b,0x04,0x1b, +0x25,0xa4,0x7f,0x78,0x7e,0x0e,0x12,0x2f,0xd9,0x90,0x80,0x85,0x12,0x2a,0x8b,0x04, +0x1b,0x25,0xa4,0x7f,0x7c,0x7e,0x0e,0x12,0x2f,0xd9,0x90,0x80,0x85,0x12,0x2a,0x8b, +0x04,0x1b,0x25,0xa4,0x7f,0x80,0x7e,0x0e,0x12,0x2f,0xd9,0x90,0x80,0x85,0x12,0x2a, +0x8b,0x63,0xdb,0x25,0xa4,0x7f,0x84,0x7e,0x0e,0x12,0x2f,0xd9,0x90,0x80,0x85,0x12, +0x2a,0x8b,0x04,0x1b,0x25,0xa4,0x7f,0x88,0x7e,0x0e,0x12,0x2f,0xd9,0x90,0x80,0x85, +0x12,0x2a,0x8b,0x20,0xdb,0x25,0xa4,0x7f,0x8c,0x7e,0x0e,0x12,0x2f,0xd9,0x90,0x80, +0x85,0x12,0x2a,0x8b,0x20,0xdb,0x25,0xa4,0x7f,0xd0,0x7e,0x0e,0x12,0x2f,0xd9,0x90, +0x80,0x85,0x12,0x2a,0x8b,0x20,0xdb,0x25,0xa4,0x7f,0xd4,0x7e,0x0e,0x12,0x2f,0xd9, +0x90,0x80,0x85,0x12,0x2a,0x8b,0x20,0xdb,0x25,0xa4,0x7f,0xd8,0x7e,0x0e,0x12,0x2f, +0xd9,0x90,0x80,0x85,0x12,0x2a,0x8b,0x00,0x1b,0x25,0xa4,0x7f,0xdc,0x7e,0x0e,0x12, +0x2f,0xd9,0x90,0x80,0x85,0x12,0x2a,0x8b,0x00,0x1b,0x25,0xa4,0x7f,0xe0,0x7e,0x0e, +0x12,0x2f,0xd9,0x90,0x80,0x85,0x12,0x2a,0x8b,0x24,0xdb,0x25,0xa4,0x7f,0xec,0x7e, +0x0e,0x12,0x2f,0xd9,0x7f,0x04,0x7e,0x0c,0x12,0x27,0xde,0x90,0x9e,0xa8,0x12,0x2a, +0x7f,0x90,0x9e,0xa8,0x12,0x43,0x53,0xe4,0xff,0xec,0x90,0x9e,0xa8,0x12,0x2a,0x7f, +0x90,0x9e,0xa8,0x12,0x43,0x53,0xef,0x44,0x11,0xff,0xec,0x90,0x9e,0xa8,0x12,0x2a, +0x7f,0x90,0x9e,0xa8,0x12,0x43,0x53,0x90,0x80,0x85,0x12,0x2a,0x7f,0x7f,0x04,0x7e, +0x0c,0x12,0x2f,0xd9,0x7f,0x04,0x7e,0x0d,0x12,0x27,0xde,0x90,0x9e,0xa8,0x12,0x2a, +0x7f,0x90,0x9e,0xa8,0x12,0x43,0x53,0xef,0x54,0xf0,0xff,0xec,0x90,0x9e,0xa8,0x12, +0x2a,0x7f,0x90,0x9e,0xa8,0x12,0x43,0x53,0xef,0x44,0x01,0xff,0xec,0x90,0x9e,0xa8, +0x12,0x2a,0x7f,0x90,0x9e,0xa8,0x12,0x43,0x53,0x90,0x80,0x85,0x12,0x2a,0x7f,0x7f, +0x04,0x7e,0x0d,0x12,0x2f,0xd9,0x7f,0x0c,0x7e,0x09,0x12,0x27,0xde,0x90,0x9e,0xa8, +0x12,0x2a,0x7f,0x90,0x9e,0xa8,0x12,0x43,0x53,0xe4,0xff,0xec,0x90,0x9e,0xa8,0x12, +0x2a,0x7f,0x90,0x9e,0xa8,0x12,0x43,0x53,0xef,0x44,0x11,0xff,0xec,0x90,0x9e,0xa8, +0x12,0x2a,0x7f,0x90,0x9e,0xa8,0x12,0x43,0x53,0x90,0x80,0x85,0x12,0x2a,0x7f,0x7f, +0x0c,0x7e,0x09,0x12,0x2f,0xd9,0x7f,0x0c,0x7e,0x09,0x12,0x27,0xde,0x90,0x9e,0xa8, +0x12,0x2a,0x7f,0x90,0x9e,0xa8,0x12,0x43,0x53,0xed,0x54,0x0f,0xfd,0xec,0x54,0xf0, +0xfc,0x90,0x9e,0xa8,0x12,0x2a,0x7f,0x90,0x9e,0xa8,0x12,0x43,0x53,0xed,0x44,0x10, +0xfd,0xec,0x44,0x01,0xfc,0x90,0x9e,0xa8,0x12,0x2a,0x7f,0x90,0x9e,0xa8,0x12,0x43, +0x53,0x90,0x80,0x85,0x12,0x2a,0x7f,0x7f,0x0c,0x7e,0x09,0x12,0x2f,0xd9,0x7f,0x04, +0x7e,0x08,0x12,0x27,0xde,0x90,0x9e,0xa8,0x12,0x2a,0x7f,0x90,0x9e,0xa8,0x12,0x43, +0x53,0xef,0x54,0xf0,0xff,0xec,0x90,0x9e,0xa8,0x12,0x2a,0x7f,0x90,0x9e,0xa8,0x12, +0x43,0x53,0xef,0x44,0x01,0xff,0xec,0x90,0x9e,0xa8,0x12,0x2a,0x7f,0x90,0x9e,0xa8, +0x12,0x43,0x53,0x90,0x80,0x85,0x12,0x2a,0x7f,0x7f,0x04,0x7e,0x08,0x12,0x2f,0xd9, +0xe4,0x90,0x9e,0x0f,0xf0,0x22,0x90,0x00,0x02,0x12,0x42,0x20,0x90,0x9e,0x43,0xf0, +0xe0,0x60,0x04,0xe0,0xf4,0x70,0x21,0xa2,0xaf,0xe4,0x33,0xf5,0x14,0xc2,0xaf,0x90, +0x00,0x47,0xe0,0x54,0xfb,0xfd,0x7f,0x47,0x12,0x49,0x05,0x7d,0x40,0x7f,0x01,0x12, +0x36,0xaf,0xe5,0x14,0x24,0xff,0x92,0xaf,0x22,0x90,0x9e,0x3a,0xe0,0xc3,0x94,0x14, +0x50,0x05,0xe0,0x04,0xf0,0x81,0x01,0x90,0x9e,0x3a,0xe0,0x64,0x14,0x60,0x02,0x81, +0x01,0x90,0x9e,0x49,0xe0,0x70,0x25,0x90,0x9e,0x4c,0xe0,0x70,0x1f,0x90,0x9e,0x4a, +0xe0,0x70,0x19,0x90,0x9e,0x4d,0xe0,0x70,0x13,0x90,0x9e,0x4b,0xe0,0x70,0x0d,0x90, +0x9e,0x4e,0xe0,0x70,0x07,0x90,0x04,0xfd,0xe0,0x54,0xfe,0xf0,0x90,0x9e,0x49,0xe0, +0x90,0x04,0x44,0xf0,0x90,0x9e,0x4a,0xe0,0x90,0x04,0x45,0xf0,0x90,0x9e,0x4b,0xe0, +0x90,0x04,0x46,0xf0,0xa3,0xe4,0xf0,0x90,0x9e,0x4c,0xe0,0x90,0x04,0x48,0xf0,0x90, +0x9e,0x4d,0xe0,0x90,0x04,0x49,0xf0,0x90,0x9e,0x4e,0xe0,0x90,0x04,0x4a,0xf0,0xa3, +0xe4,0xf0,0x90,0x9e,0x35,0xe0,0x90,0x04,0x4c,0xf0,0x90,0x9e,0x36,0xe0,0x90,0x04, +0x4d,0xf0,0x90,0x9e,0x37,0xe0,0x90,0x04,0x4e,0xf0,0x90,0x9e,0x38,0xe0,0x90,0x04, +0x4f,0xf0,0xe4,0x90,0x9e,0x3a,0xf0,0x90,0x9e,0x35,0x04,0xf0,0xe4,0xa3,0xf0,0xa3, +0xf0,0xa3,0xf0,0x90,0x9e,0x49,0xf0,0xa3,0xf0,0xa3,0xf0,0xa3,0xf0,0xa3,0xf0,0xa3, +0xf0,0x90,0x05,0x60,0xe0,0x90,0x9e,0x19,0xf0,0x90,0x05,0x61,0xe0,0x90,0x9e,0x1a, +0xf0,0x90,0x05,0x62,0xe0,0x90,0x9e,0x1b,0xf0,0x90,0x05,0x63,0xe0,0x90,0x9e,0x1c, +0xf0,0x90,0x9e,0x52,0xe0,0xff,0x90,0x9e,0x1c,0xe0,0xfe,0xd3,0x9f,0x50,0x0b,0x90, +0x9e,0x52,0xe0,0xc3,0x9e,0xd3,0x94,0x01,0x40,0x11,0x90,0x9e,0x40,0xe0,0xb4,0x01, +0x02,0x80,0x03,0x90,0x9e,0x44,0xe0,0xff,0x12,0x4c,0xf0,0x22,0x90,0x9e,0x53,0xe0, +0x64,0x01,0x60,0x08,0x90,0x9e,0x41,0xe0,0x60,0x02,0xa1,0x23,0x90,0x9e,0x35,0xe0, +0xc3,0x94,0xff,0x50,0x05,0xe0,0x04,0xf0,0x80,0x3b,0x90,0x9e,0x36,0xe0,0xc3,0x94, +0xff,0x50,0x06,0xe0,0x04,0xf0,0xe4,0x80,0x28,0x90,0x9e,0x37,0xe0,0xc3,0x94,0xff, +0x50,0x0a,0xe0,0x04,0xf0,0xe4,0x90,0x9e,0x36,0xf0,0x80,0x15,0x90,0x9e,0x38,0xe0, +0xc3,0x94,0xff,0x50,0x10,0xe0,0x04,0xf0,0xe4,0x90,0x9e,0x37,0xf0,0x90,0x9e,0x36, +0xf0,0x90,0x9e,0x35,0xf0,0x90,0x00,0x44,0xe0,0x54,0x0c,0x60,0x76,0xe0,0x30,0xe2, +0x32,0x90,0x9e,0x49,0xe0,0xc3,0x94,0xff,0x50,0x05,0xe0,0x04,0xf0,0x80,0x24,0x90, +0x9e,0x4a,0xe0,0xc3,0x94,0xff,0x50,0x06,0xe0,0x04,0xf0,0xe4,0x80,0x11,0x90,0x9e, +0x4b,0xe0,0xc3,0x94,0xff,0x50,0x0c,0xe0,0x04,0xf0,0xe4,0x90,0x9e,0x4a,0xf0,0x90, +0x9e,0x49,0xf0,0x90,0x00,0x44,0xe0,0x30,0xe3,0x32,0x90,0x9e,0x4c,0xe0,0xc3,0x94, +0xff,0x50,0x05,0xe0,0x04,0xf0,0x80,0x24,0x90,0x9e,0x4d,0xe0,0xc3,0x94,0xff,0x50, +0x06,0xe0,0x04,0xf0,0xe4,0x80,0x11,0x90,0x9e,0x4e,0xe0,0xc3,0x94,0xff,0x50,0x0c, +0xe0,0x04,0xf0,0xe4,0x90,0x9e,0x4d,0xf0,0x90,0x9e,0x4c,0xf0,0x90,0x04,0xfd,0xe0, +0x44,0x01,0xf0,0x22,0x68,0x4c,}; +#else +// =================== v88 TSMC P2PPS with CCX report C2H 2012-12-05 ======================= +u8 Rtl8192CUFwTSMCImgArray[TSMCImgArrayLength] = { +0xC1, 0x88, 0x02, 0x05, 0x58, 0x00, 0x02, 0x00, 0x12, 0x05, 0x17, 0x12, 0xDE, 0x3E, 0x00, 0x00, +0x94, 0x18, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x02, 0x46, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x02, 0x60, 0xF2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x02, 0x68, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x4B, 0x87, 0x00, 0x00, +0x05, 0x04, 0x03, 0x02, 0x00, 0x03, 0x06, 0x05, 0x04, 0x03, 0x00, 0x04, 0x06, 0x05, 0x04, 0x02, +0x00, 0x04, 0x08, 0x07, 0x06, 0x04, 0x00, 0x06, 0x0A, 0x09, 0x08, 0x06, 0x00, 0x08, 0x0A, 0x09, +0x08, 0x04, 0x00, 0x08, 0x0A, 0x09, 0x08, 0x02, 0x00, 0x08, 0x0A, 0x09, 0x08, 0x00, 0x00, 0x08, +0x12, 0x11, 0x10, 0x08, 0x00, 0x10, 0x1A, 0x19, 0x18, 0x10, 0x00, 0x18, 0x22, 0x21, 0x20, 0x18, +0x00, 0x20, 0x22, 0x21, 0x20, 0x10, 0x00, 0x20, 0x22, 0x21, 0x20, 0x08, 0x00, 0x20, 0x22, 0x21, +0x1C, 0x08, 0x00, 0x20, 0x22, 0x21, 0x14, 0x08, 0x00, 0x20, 0x22, 0x20, 0x18, 0x08, 0x00, 0x20, +0x31, 0x30, 0x20, 0x10, 0x00, 0x30, 0x31, 0x30, 0x18, 0x00, 0x00, 0x30, 0x31, 0x2F, 0x10, 0x10, +0x00, 0x30, 0x31, 0x2C, 0x10, 0x10, 0x00, 0x30, 0x31, 0x28, 0x10, 0x00, 0x00, 0x30, 0x31, 0x20, +0x10, 0x00, 0x00, 0x30, 0x31, 0x10, 0x10, 0x00, 0x00, 0x30, 0x04, 0x04, 0x04, 0x05, 0x04, 0x04, +0x05, 0x07, 0x07, 0x07, 0x08, 0x0A, 0x04, 0x04, 0x04, 0x04, 0x06, 0x0A, 0x0B, 0x0D, 0x05, 0x05, +0x07, 0x07, 0x08, 0x0B, 0x0D, 0x0F, 0x04, 0x04, 0x04, 0x05, 0x07, 0x07, 0x09, 0x09, 0x0C, 0x0E, +0x10, 0x12, 0x06, 0x07, 0x09, 0x0A, 0x0C, 0x0E, 0x11, 0x13, 0x09, 0x09, 0x09, 0x09, 0x0C, 0x0E, +0x11, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x26, 0x2A, 0x18, 0x1A, +0x1D, 0x1F, 0x21, 0x27, 0x29, 0x2A, 0x00, 0x00, 0x00, 0x1F, 0x23, 0x28, 0x2A, 0x2C, 0x00, 0x04, +0x00, 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, 0x18, 0x00, 0x24, 0x00, 0x30, 0x00, 0x48, 0x00, 0x60, +0x00, 0x90, 0x00, 0xC0, 0x00, 0xD8, 0x00, 0x50, 0x00, 0x78, 0x00, 0xA0, 0x00, 0xC8, 0x01, 0x40, +0x01, 0x90, 0x01, 0xE0, 0x02, 0x30, 0x01, 0x2C, 0x01, 0x40, 0x01, 0xE0, 0x02, 0xD0, 0x03, 0xE8, +0x04, 0xB0, 0x06, 0x40, 0x07, 0xD0, 0x00, 0x02, 0x00, 0x02, 0x00, 0x04, 0x00, 0x08, 0x00, 0x0C, +0x00, 0x12, 0x00, 0x18, 0x00, 0x24, 0x00, 0x30, 0x00, 0x48, 0x00, 0x60, 0x00, 0x6C, 0x00, 0x28, +0x00, 0x3C, 0x00, 0x50, 0x00, 0x64, 0x00, 0xA0, 0x00, 0xC8, 0x00, 0xF0, 0x01, 0x18, 0x00, 0x64, +0x00, 0xA0, 0x00, 0xF0, 0x01, 0x68, 0x01, 0xF4, 0x02, 0x58, 0x03, 0x20, 0x03, 0xE8, 0x02, 0x02, +0x02, 0x02, 0x02, 0x02, 0x03, 0x03, 0x04, 0x04, 0x05, 0x07, 0x02, 0x03, 0x04, 0x0A, 0x0C, 0x0E, +0x10, 0x12, 0x05, 0x07, 0x07, 0x08, 0x0B, 0x12, 0x24, 0x3C, 0x01, 0x01, 0x01, 0x01, 0x01, 0x02, +0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x05, 0x06, +0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x20, 0x1E, 0x1C, 0x18, 0x10, 0x18, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xBB, 0x01, 0x0C, 0xE5, 0x82, 0x29, 0xF5, 0x82, 0xE5, 0x83, 0x3A, 0xF5, 0x83, 0xE0, 0x22, 0x50, +0x06, 0xE9, 0x25, 0x82, 0xF8, 0xE6, 0x22, 0xBB, 0xFE, 0x06, 0xE9, 0x25, 0x82, 0xF8, 0xE2, 0x22, +0xE5, 0x82, 0x29, 0xF5, 0x82, 0xE5, 0x83, 0x3A, 0xF5, 0x83, 0xE4, 0x93, 0x22, 0xBB, 0x01, 0x06, +0x89, 0x82, 0x8A, 0x83, 0xF0, 0x22, 0x50, 0x02, 0xF7, 0x22, 0xBB, 0xFE, 0x01, 0xF3, 0x22, 0xF8, +0xBB, 0x01, 0x0D, 0xE5, 0x82, 0x29, 0xF5, 0x82, 0xE5, 0x83, 0x3A, 0xF5, 0x83, 0xE8, 0xF0, 0x22, +0x50, 0x06, 0xE9, 0x25, 0x82, 0xC8, 0xF6, 0x22, 0xBB, 0xFE, 0x05, 0xE9, 0x25, 0x82, 0xC8, 0xF2, +0x22, 0xC5, 0xF0, 0xF8, 0xA3, 0xE0, 0x28, 0xF0, 0xC5, 0xF0, 0xF8, 0xE5, 0x82, 0x15, 0x82, 0x70, +0x02, 0x15, 0x83, 0xE0, 0x38, 0xF0, 0x22, 0xBB, 0x01, 0x0A, 0x89, 0x82, 0x8A, 0x83, 0xE0, 0xF5, +0xF0, 0xA3, 0xE0, 0x22, 0x50, 0x06, 0x87, 0xF0, 0x09, 0xE7, 0x19, 0x22, 0xBB, 0xFE, 0x07, 0xE3, +0xF5, 0xF0, 0x09, 0xE3, 0x19, 0x22, 0x89, 0x82, 0x8A, 0x83, 0xE4, 0x93, 0xF5, 0xF0, 0x74, 0x01, +0x93, 0x22, 0xBB, 0x01, 0x10, 0xE5, 0x82, 0x29, 0xF5, 0x82, 0xE5, 0x83, 0x3A, 0xF5, 0x83, 0xE0, +0xF5, 0xF0, 0xA3, 0xE0, 0x22, 0x50, 0x09, 0xE9, 0x25, 0x82, 0xF8, 0x86, 0xF0, 0x08, 0xE6, 0x22, +0xBB, 0xFE, 0x0A, 0xE9, 0x25, 0x82, 0xF8, 0xE2, 0xF5, 0xF0, 0x08, 0xE2, 0x22, 0xE5, 0x83, 0x2A, +0xF5, 0x83, 0xE9, 0x93, 0xF5, 0xF0, 0xA3, 0xE9, 0x93, 0x22, 0xBB, 0x01, 0x0A, 0x89, 0x82, 0x8A, +0x83, 0xF0, 0xE5, 0xF0, 0xA3, 0xF0, 0x22, 0x50, 0x06, 0xF7, 0x09, 0xA7, 0xF0, 0x19, 0x22, 0xBB, +0xFE, 0x06, 0xF3, 0xE5, 0xF0, 0x09, 0xF3, 0x19, 0x22, 0xF8, 0xBB, 0x01, 0x11, 0xE5, 0x82, 0x29, +0xF5, 0x82, 0xE5, 0x83, 0x3A, 0xF5, 0x83, 0xE8, 0xF0, 0xE5, 0xF0, 0xA3, 0xF0, 0x22, 0x50, 0x09, +0xE9, 0x25, 0x82, 0xC8, 0xF6, 0x08, 0xA6, 0xF0, 0x22, 0xBB, 0xFE, 0x09, 0xE9, 0x25, 0x82, 0xC8, +0xF2, 0xE5, 0xF0, 0x08, 0xF2, 0x22, 0xEF, 0x4B, 0xFF, 0xEE, 0x4A, 0xFE, 0xED, 0x49, 0xFD, 0xEC, +0x48, 0xFC, 0x22, 0xE0, 0xFC, 0xA3, 0xE0, 0xFD, 0xA3, 0xE0, 0xFE, 0xA3, 0xE0, 0xFF, 0x22, 0xA4, +0x25, 0x82, 0xF5, 0x82, 0xE5, 0xF0, 0x35, 0x83, 0xF5, 0x83, 0x22, 0xE0, 0xFB, 0xA3, 0xE0, 0xFA, +0xA3, 0xE0, 0xF9, 0x22, 0xF8, 0xE0, 0xFB, 0xA3, 0xA3, 0xE0, 0xF9, 0x25, 0xF0, 0xF0, 0xE5, 0x82, +0x15, 0x82, 0x70, 0x02, 0x15, 0x83, 0xE0, 0xFA, 0x38, 0xF0, 0x22, 0xEB, 0xF0, 0xA3, 0xEA, 0xF0, +0xA3, 0xE9, 0xF0, 0x22, 0xD0, 0x83, 0xD0, 0x82, 0xF8, 0xE4, 0x93, 0x70, 0x12, 0x74, 0x01, 0x93, +0x70, 0x0D, 0xA3, 0xA3, 0x93, 0xF8, 0x74, 0x01, 0x93, 0xF5, 0x82, 0x88, 0x83, 0xE4, 0x73, 0x74, +0x02, 0x93, 0x68, 0x60, 0xEF, 0xA3, 0xA3, 0xA3, 0x80, 0xDF, 0xD0, 0x83, 0xD0, 0x82, 0xF8, 0xE4, +0x93, 0x70, 0x12, 0x74, 0x01, 0x93, 0x70, 0x0D, 0xA3, 0xA3, 0x93, 0xF8, 0x74, 0x01, 0x93, 0xF5, +0x82, 0x88, 0x83, 0xE4, 0x73, 0x74, 0x02, 0x93, 0xB5, 0xF0, 0x06, 0x74, 0x03, 0x93, 0x68, 0x60, +0xE9, 0xA3, 0xA3, 0xA3, 0xA3, 0x80, 0xD8, 0xE4, 0x90, 0x8A, 0xC5, 0xF0, 0xE5, 0x24, 0x70, 0x03, +0x02, 0x44, 0x9D, 0xE5, 0x21, 0x64, 0x01, 0x60, 0x03, 0x02, 0x44, 0x9D, 0xE5, 0x24, 0x14, 0x60, +0x29, 0x24, 0xFD, 0x60, 0x25, 0x24, 0x02, 0x24, 0xFB, 0x50, 0x02, 0x80, 0x23, 0x90, 0x8B, 0x0B, +0xE0, 0x14, 0xF0, 0xE0, 0x60, 0x04, 0xA3, 0xE0, 0x60, 0x16, 0x90, 0x8B, 0x0B, 0xE0, 0x70, 0x0A, +0x90, 0x8B, 0x19, 0xE0, 0x90, 0x8B, 0x0B, 0xF0, 0x80, 0x00, 0x90, 0x8A, 0xC5, 0x74, 0x01, 0xF0, +0x90, 0x8B, 0x2C, 0xE0, 0x30, 0xE0, 0x16, 0xA3, 0xE0, 0xB4, 0x06, 0x05, 0xE4, 0x90, 0x8A, 0xC5, +0xF0, 0xE4, 0xFF, 0x12, 0x4D, 0xE0, 0xEF, 0x70, 0x04, 0x90, 0x8A, 0xC5, 0xF0, 0x90, 0x8A, 0xC5, +0xE0, 0x60, 0x4A, 0x43, 0x25, 0x10, 0xE4, 0x90, 0x8B, 0x3D, 0xF0, 0x90, 0x8B, 0x0C, 0xE0, 0x75, +0xF0, 0x03, 0xA4, 0xFF, 0x90, 0x8B, 0x15, 0xE0, 0x2F, 0x90, 0x8B, 0x3E, 0xF0, 0xE4, 0xFB, 0xFD, +0x7F, 0x54, 0x7E, 0x01, 0x12, 0x4B, 0x6C, 0x90, 0x01, 0x57, 0x74, 0x05, 0xF0, 0xE5, 0x22, 0x54, +0x0F, 0xC3, 0x94, 0x04, 0x50, 0x07, 0x7D, 0x01, 0x7F, 0x04, 0x12, 0x45, 0xA2, 0x90, 0x8B, 0x2C, +0xE0, 0x30, 0xE0, 0x09, 0x12, 0x7D, 0xC1, 0x90, 0x05, 0x22, 0x74, 0xFF, 0xF0, 0x22, 0xE4, 0xF5, +0x25, 0xF5, 0x24, 0x75, 0x23, 0x0C, 0x75, 0x22, 0x0C, 0x90, 0x8B, 0x1A, 0xF0, 0x90, 0x8B, 0x18, +0xF0, 0x90, 0x8B, 0x17, 0xF0, 0x90, 0x8B, 0x19, 0x04, 0xF0, 0x90, 0x8B, 0x0B, 0xF0, 0xE4, 0x90, +0x8B, 0x1B, 0xF0, 0x90, 0x8B, 0x0D, 0xF0, 0x90, 0x8B, 0x15, 0x74, 0x05, 0xF0, 0xE4, 0x90, 0x8B, +0x0C, 0xF0, 0x90, 0x8B, 0x13, 0xF0, 0xA3, 0x74, 0x03, 0xF0, 0x90, 0x8B, 0x10, 0xF0, 0xA3, 0x74, +0x05, 0xF0, 0x90, 0x8B, 0x0F, 0x74, 0x14, 0xF0, 0x90, 0x8B, 0x16, 0x74, 0x05, 0xF0, 0xE4, 0x90, +0x8B, 0x0E, 0xF0, 0x90, 0x8B, 0x0A, 0xF0, 0x90, 0x8B, 0x08, 0xF0, 0x90, 0x8B, 0x12, 0xF0, 0x22, +0x7F, 0x00, 0x22, 0x02, 0x45, 0x03, 0x02, 0x45, 0x06, 0x8E, 0x64, 0x8F, 0x65, 0xAD, 0x65, 0xAC, +0x64, 0xAF, 0x63, 0x12, 0x4A, 0x5B, 0xAF, 0x65, 0xAE, 0x64, 0x90, 0x04, 0x80, 0xE0, 0x54, 0x0F, +0xFD, 0xAC, 0x07, 0x74, 0x11, 0x2C, 0xF5, 0x82, 0xE4, 0x34, 0xFC, 0xF5, 0x83, 0xE0, 0x44, 0x01, +0xF0, 0x74, 0x11, 0x2C, 0xF5, 0x82, 0xE4, 0x34, 0xFC, 0xF5, 0x83, 0xE0, 0x54, 0xFB, 0xF0, 0xAC, +0x07, 0x74, 0x16, 0x2C, 0xF5, 0x82, 0xE4, 0x34, 0xFC, 0xF5, 0x83, 0xE0, 0x44, 0xFA, 0xF0, 0x74, +0x15, 0x2C, 0xF5, 0x82, 0xE4, 0x34, 0xFC, 0xF5, 0x83, 0xE0, 0x44, 0x1F, 0xF0, 0xAC, 0x07, 0x74, +0x06, 0x2C, 0xF5, 0x82, 0xE4, 0x34, 0xFC, 0xF5, 0x83, 0xE0, 0x44, 0x0F, 0xF0, 0x90, 0x04, 0x53, +0xE4, 0xF0, 0x90, 0x04, 0x52, 0xF0, 0x90, 0x04, 0x51, 0x74, 0xFF, 0xF0, 0x90, 0x04, 0x50, 0x74, +0xFD, 0xF0, 0x74, 0x14, 0x2C, 0xF5, 0x82, 0xE4, 0x34, 0xFC, 0xF5, 0x83, 0xE0, 0x54, 0xC0, 0x4D, +0xFD, 0x74, 0x14, 0x2F, 0xF5, 0x82, 0xE4, 0x34, 0xFC, 0xF5, 0x83, 0xED, 0xF0, 0x22, 0x7D, 0x01, +0x7F, 0x0C, 0xD3, 0x10, 0xAF, 0x01, 0xC3, 0xC0, 0xD0, 0x8F, 0x67, 0x8D, 0x68, 0xE5, 0x67, 0x54, +0x0F, 0xFF, 0xE5, 0x22, 0x54, 0x0F, 0x6F, 0x60, 0x72, 0xE5, 0x67, 0x30, 0xE2, 0x30, 0xE5, 0x22, +0x20, 0xE2, 0x05, 0x7F, 0x01, 0x12, 0x4A, 0xB2, 0xE5, 0x22, 0x30, 0xE3, 0x10, 0xE5, 0x67, 0x20, +0xE3, 0x0B, 0x12, 0x49, 0xD5, 0xEF, 0x60, 0x53, 0x12, 0x4A, 0xCC, 0x80, 0x4E, 0xE5, 0x22, 0x20, +0xE3, 0x49, 0xE5, 0x67, 0x30, 0xE3, 0x44, 0xAF, 0x68, 0x12, 0x4A, 0x7C, 0x80, 0x3D, 0xE5, 0x22, +0x54, 0x0F, 0xFF, 0xBF, 0x0C, 0x0E, 0xE5, 0x67, 0x20, 0xE3, 0x09, 0x12, 0x49, 0xD5, 0xEF, 0x60, +0x2A, 0x12, 0x4A, 0xCC, 0xE5, 0x22, 0x54, 0x0F, 0xFF, 0xBF, 0x04, 0x0E, 0xE5, 0x67, 0x20, 0xE2, +0x09, 0x12, 0x49, 0x93, 0xEF, 0x60, 0x14, 0x12, 0x4A, 0x32, 0xE5, 0x22, 0x54, 0x0F, 0xFF, 0xBF, +0x02, 0x09, 0x12, 0x45, 0x00, 0xEF, 0x60, 0x03, 0x12, 0x4B, 0x10, 0xD0, 0xD0, 0x92, 0xAF, 0x22, +0x02, 0x46, 0x6E, 0x02, 0x50, 0xC6, 0xE4, 0x93, 0xA3, 0xF8, 0xE4, 0x93, 0xA3, 0x40, 0x03, 0xF6, +0x80, 0x01, 0xF2, 0x08, 0xDF, 0xF4, 0x80, 0x29, 0xE4, 0x93, 0xA3, 0xF8, 0x54, 0x07, 0x24, 0x0C, +0xC8, 0xC3, 0x33, 0xC4, 0x54, 0x0F, 0x44, 0x20, 0xC8, 0x83, 0x40, 0x04, 0xF4, 0x56, 0x80, 0x01, +0x46, 0xF6, 0xDF, 0xE4, 0x80, 0x0B, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x90, 0x4B, +0x23, 0xE4, 0x7E, 0x01, 0x93, 0x60, 0xBC, 0xA3, 0xFF, 0x54, 0x3F, 0x30, 0xE5, 0x09, 0x54, 0x1F, +0xFE, 0xE4, 0x93, 0xA3, 0x60, 0x01, 0x0E, 0xCF, 0x54, 0xC0, 0x25, 0xE0, 0x60, 0xA8, 0x40, 0xB8, +0xE4, 0x93, 0xA3, 0xFA, 0xE4, 0x93, 0xA3, 0xF8, 0xE4, 0x93, 0xA3, 0xC8, 0xC5, 0x82, 0xC8, 0xCA, +0xC5, 0x83, 0xCA, 0xF0, 0xA3, 0xC8, 0xC5, 0x82, 0xC8, 0xCA, 0xC5, 0x83, 0xCA, 0xDF, 0xE9, 0xDE, +0xE7, 0x80, 0xBE, 0xE5, 0x21, 0x64, 0x01, 0x70, 0x67, 0xE5, 0x24, 0x60, 0x63, 0xE5, 0x24, 0x64, +0x02, 0x60, 0x06, 0xE5, 0x24, 0x64, 0x05, 0x70, 0x27, 0x90, 0x06, 0xAB, 0xE0, 0x90, 0x8B, 0x0B, +0xF0, 0x90, 0x06, 0xAA, 0xE0, 0x90, 0x8B, 0x19, 0xF0, 0x90, 0x8B, 0x0B, 0xE0, 0x70, 0x07, 0x90, +0x8B, 0x19, 0xE0, 0xFF, 0x80, 0x05, 0x90, 0x8B, 0x0B, 0xE0, 0xFF, 0x90, 0x8B, 0x0B, 0xEF, 0xF0, +0x90, 0x8B, 0x0D, 0xE0, 0x60, 0x02, 0xE4, 0xF0, 0xE4, 0x90, 0x8B, 0x0C, 0xF0, 0x90, 0x05, 0x58, +0x74, 0x03, 0xF0, 0x90, 0x01, 0x57, 0xE4, 0xF0, 0x90, 0x01, 0x3C, 0x74, 0x02, 0xF0, 0x53, 0x25, +0xFD, 0x53, 0x25, 0xEF, 0xE5, 0x24, 0x14, 0x24, 0xFD, 0x50, 0x02, 0x80, 0x03, 0x12, 0x47, 0x8E, +0x22, 0xEF, 0x64, 0x01, 0x70, 0x35, 0x7D, 0x78, 0x7F, 0x02, 0x12, 0x36, 0x75, 0x7D, 0x02, 0x7F, +0x03, 0x12, 0x36, 0x75, 0x90, 0x01, 0x57, 0xE4, 0xF0, 0x90, 0x01, 0x3C, 0x74, 0x02, 0xF0, 0x12, +0x45, 0x9E, 0x90, 0x8B, 0x2C, 0xE0, 0x30, 0xE0, 0x03, 0x12, 0x7D, 0xC1, 0x90, 0x06, 0x04, 0xE0, +0x54, 0x7F, 0xF0, 0x90, 0x06, 0x0A, 0xE0, 0x54, 0xF8, 0xF0, 0x22, 0x90, 0x01, 0x36, 0x74, 0x7B, +0xF0, 0xA3, 0x74, 0x02, 0xF0, 0x7D, 0x7B, 0xFF, 0x12, 0x36, 0xE6, 0x7D, 0x02, 0x7F, 0x03, 0x12, +0x36, 0xE6, 0x90, 0x06, 0x04, 0xE0, 0x44, 0x80, 0xF0, 0x90, 0x06, 0x0A, 0xE0, 0x44, 0x07, 0xF0, +0x12, 0x4B, 0x4F, 0xE5, 0x21, 0x20, 0xE0, 0x05, 0xE4, 0x90, 0x8B, 0x0D, 0xF0, 0x22, 0xE4, 0x90, +0x8A, 0xC5, 0xF0, 0x90, 0x06, 0xA9, 0xE0, 0x90, 0x8A, 0xC5, 0xF0, 0xE0, 0x54, 0xC0, 0x70, 0x09, +0x53, 0x25, 0xFE, 0x53, 0x25, 0xFD, 0x12, 0x4A, 0xFC, 0x90, 0x8A, 0xC5, 0xE0, 0x30, 0xE6, 0x15, +0x43, 0x25, 0x01, 0x90, 0x8B, 0x1A, 0xE0, 0x64, 0x02, 0x60, 0x05, 0x12, 0x4A, 0x97, 0x80, 0x08, +0x12, 0x49, 0x49, 0x80, 0x03, 0x53, 0x25, 0xFE, 0x90, 0x8A, 0xC5, 0xE0, 0x30, 0xE7, 0x27, 0x43, +0x25, 0x02, 0xE4, 0x90, 0x8B, 0x3D, 0xF0, 0x90, 0x8B, 0x11, 0xE0, 0x90, 0x8B, 0x3E, 0xF0, 0xE4, +0xFB, 0xFD, 0x7F, 0x54, 0x7E, 0x01, 0x12, 0x4B, 0x6C, 0x90, 0x01, 0x57, 0x74, 0x05, 0xF0, 0x90, +0x8B, 0x1B, 0x74, 0x01, 0xF0, 0x22, 0x53, 0x25, 0xFD, 0x22, 0x90, 0x8A, 0xDE, 0x12, 0x43, 0x8B, +0x12, 0x4B, 0x43, 0x90, 0x8A, 0xDE, 0x12, 0x43, 0x6B, 0x12, 0x29, 0xD9, 0xF5, 0x24, 0x14, 0x60, +0x0E, 0x14, 0x60, 0x1F, 0x14, 0x60, 0x31, 0x24, 0x03, 0x70, 0x44, 0x7F, 0x01, 0x80, 0x3D, 0x90, +0x8A, 0xDE, 0x12, 0x43, 0x6B, 0x90, 0x00, 0x02, 0x12, 0x42, 0x20, 0xFD, 0xE4, 0xFF, 0x12, 0x4A, +0x07, 0x80, 0x29, 0x90, 0x8A, 0xDE, 0x12, 0x43, 0x6B, 0x90, 0x00, 0x02, 0x12, 0x42, 0x20, 0xFD, +0x7F, 0x01, 0x12, 0x4A, 0x07, 0x1F, 0x80, 0x14, 0x90, 0x8A, 0xDE, 0x12, 0x43, 0x6B, 0x90, 0x00, +0x02, 0x12, 0x42, 0x20, 0xFD, 0x7F, 0x02, 0x12, 0x4A, 0x07, 0xE4, 0xFF, 0x12, 0x47, 0x21, 0x22, +0xE4, 0x90, 0x8A, 0xCB, 0xF0, 0xE5, 0x24, 0x60, 0x49, 0x90, 0x8B, 0x1B, 0xE0, 0x60, 0x0D, 0xE4, +0xF0, 0x53, 0x25, 0xFD, 0xE5, 0x25, 0x54, 0x07, 0x70, 0x38, 0x80, 0x33, 0x90, 0x8B, 0x0C, 0xE0, +0x04, 0xF0, 0x53, 0x25, 0xEF, 0x90, 0x8A, 0xCB, 0xE0, 0xFF, 0x90, 0x8B, 0x10, 0xE0, 0x2F, 0xFF, +0xE4, 0x33, 0xFE, 0x90, 0x8B, 0x0C, 0xE0, 0xD3, 0x9F, 0xEE, 0x64, 0x80, 0xF8, 0x74, 0x80, 0x98, +0x40, 0x0D, 0xE5, 0x21, 0xB4, 0x01, 0x0B, 0xA3, 0xE0, 0x70, 0x07, 0xE0, 0x04, 0xF0, 0x22, 0x12, +0x4A, 0xFC, 0x22, 0xD3, 0x10, 0xAF, 0x01, 0xC3, 0xC0, 0xD0, 0x8F, 0x63, 0x90, 0x04, 0x1D, 0xE0, +0x60, 0x24, 0x90, 0x05, 0x22, 0xE0, 0xF5, 0x66, 0x74, 0xFF, 0xF0, 0x12, 0x7E, 0x9A, 0xBF, 0x01, +0x0D, 0x90, 0x8A, 0xF9, 0xE0, 0xFF, 0x7D, 0x01, 0x12, 0x5F, 0xFD, 0x12, 0x45, 0x09, 0x90, 0x05, +0x22, 0xE5, 0x66, 0xF0, 0x80, 0x0D, 0x90, 0x8A, 0xF9, 0xE0, 0xFF, 0x7D, 0x01, 0x12, 0x5F, 0xFD, +0x12, 0x45, 0x09, 0x90, 0x04, 0x1F, 0x74, 0x20, 0xF0, 0xD0, 0xD0, 0x92, 0xAF, 0x22, 0xE5, 0x24, +0x14, 0x24, 0xFD, 0x50, 0x02, 0x80, 0x41, 0x90, 0x8B, 0x1A, 0xE0, 0x60, 0x2B, 0x12, 0x45, 0x9E, +0xE4, 0x90, 0x8B, 0x3D, 0xF0, 0x90, 0x8B, 0x0F, 0xE0, 0x90, 0x8B, 0x3E, 0xF0, 0xE4, 0xFB, 0xFD, +0x7F, 0x58, 0x7E, 0x01, 0x12, 0x4B, 0x6C, 0x90, 0x01, 0x5B, 0x74, 0x05, 0xF0, 0x90, 0x06, 0x92, +0x74, 0x01, 0xF0, 0x90, 0x8B, 0x18, 0xF0, 0x22, 0xE5, 0x22, 0x54, 0x0F, 0xC3, 0x94, 0x04, 0x50, +0x07, 0x7D, 0x01, 0x7F, 0x04, 0x12, 0x45, 0xA2, 0x22, 0x90, 0x01, 0x5F, 0xE4, 0xF0, 0x90, 0x01, +0x3C, 0x74, 0x08, 0xF0, 0xE4, 0x90, 0x8B, 0x3D, 0xF0, 0x90, 0x8B, 0x0F, 0xE0, 0x90, 0x8B, 0x3E, +0xF0, 0xE4, 0xFB, 0xFD, 0x7F, 0x5C, 0x7E, 0x01, 0x12, 0x4B, 0x6C, 0x90, 0x01, 0x5F, 0x74, 0x05, +0xF0, 0x90, 0x06, 0x92, 0x74, 0x02, 0xF0, 0x90, 0x8B, 0x17, 0x14, 0xF0, 0xE5, 0x22, 0x54, 0x0F, +0xC3, 0x94, 0x0C, 0x50, 0x0D, 0x12, 0x45, 0x9E, 0x90, 0x8B, 0x2C, 0xE0, 0x30, 0xE0, 0x03, 0x12, +0x7D, 0xC1, 0x22, 0x12, 0x4B, 0x34, 0xEF, 0x64, 0x01, 0x70, 0x37, 0xE5, 0x25, 0x54, 0x03, 0x70, +0x31, 0xE5, 0x23, 0x54, 0x0F, 0xD3, 0x94, 0x02, 0x50, 0x28, 0xE5, 0x25, 0x20, 0xE2, 0x23, 0xE5, +0x25, 0x20, 0xE4, 0x1E, 0x90, 0x8B, 0x0D, 0xE0, 0x70, 0x18, 0x90, 0x8B, 0x12, 0xE0, 0x70, 0x12, +0xE5, 0x26, 0x70, 0x0E, 0x90, 0x01, 0xB9, 0xE4, 0xF0, 0x90, 0x01, 0xB8, 0x74, 0x04, 0xF0, 0x7F, +0x01, 0x22, 0x7F, 0x00, 0x22, 0x12, 0x4B, 0x34, 0xEF, 0x64, 0x01, 0x70, 0x27, 0x90, 0x8B, 0x18, +0xE0, 0x70, 0x21, 0x90, 0x8B, 0x17, 0xE0, 0x70, 0x1B, 0xE5, 0x23, 0x54, 0x0F, 0xD3, 0x94, 0x04, +0x50, 0x12, 0xE5, 0x26, 0x70, 0x0E, 0x90, 0x01, 0xB9, 0xE4, 0xF0, 0x90, 0x01, 0xB8, 0x74, 0x08, +0xF0, 0x7F, 0x01, 0x22, 0x7F, 0x00, 0x22, 0xEF, 0x24, 0xFE, 0x60, 0x0B, 0x04, 0x70, 0x22, 0x90, +0x8B, 0x19, 0x74, 0x01, 0xF0, 0x80, 0x16, 0xED, 0x70, 0x0A, 0x90, 0x8B, 0x16, 0xE0, 0x90, 0x8B, +0x19, 0xF0, 0x80, 0x05, 0x90, 0x8B, 0x19, 0xED, 0xF0, 0x90, 0x8B, 0x19, 0xE0, 0x90, 0x8B, 0x0B, +0xF0, 0x22, 0x90, 0x01, 0x37, 0x74, 0x02, 0xF0, 0x90, 0x05, 0x22, 0x74, 0xFF, 0xF0, 0x12, 0x7E, +0x9A, 0xEF, 0x70, 0x06, 0x90, 0x01, 0xC8, 0x74, 0xFD, 0xF0, 0x7D, 0x02, 0x7F, 0x03, 0x12, 0x36, +0xE6, 0x12, 0x7C, 0x50, 0x53, 0x22, 0xF0, 0x43, 0x22, 0x02, 0x22, 0xEF, 0x60, 0x0F, 0x74, 0x21, +0x2D, 0xF5, 0x82, 0xE4, 0x34, 0xFC, 0xF5, 0x83, 0xE0, 0x44, 0x10, 0xF0, 0x22, 0x74, 0x21, 0x2D, +0xF5, 0x82, 0xE4, 0x34, 0xFC, 0xF5, 0x83, 0xE0, 0x54, 0xEF, 0xF0, 0x22, 0x90, 0x06, 0x04, 0xE0, +0x54, 0xBF, 0xF0, 0xEF, 0x60, 0x0A, 0xE5, 0x21, 0xB4, 0x01, 0x05, 0xE4, 0xFF, 0x12, 0x48, 0xB3, +0x53, 0x22, 0xF0, 0x43, 0x22, 0x0C, 0x22, 0x90, 0x04, 0x1D, 0xE0, 0x70, 0x14, 0x90, 0x8A, 0xF8, +0xE0, 0xFF, 0xE4, 0xFD, 0x12, 0x5F, 0xFD, 0x8E, 0x69, 0x8F, 0x6A, 0x90, 0x04, 0x1F, 0x74, 0x20, +0xF0, 0x22, 0x90, 0x8B, 0x52, 0xEF, 0xF0, 0x12, 0x7D, 0x42, 0x90, 0x8B, 0x52, 0xE0, 0x60, 0x05, +0x90, 0x05, 0x22, 0xE4, 0xF0, 0x53, 0x22, 0xF0, 0x43, 0x22, 0x04, 0x22, 0x90, 0x06, 0x04, 0xE0, +0x44, 0x40, 0xF0, 0xE5, 0x21, 0xB4, 0x01, 0x05, 0x7F, 0x01, 0x12, 0x48, 0xB3, 0x53, 0x22, 0xF0, +0x43, 0x22, 0x04, 0x22, 0xE5, 0x23, 0x30, 0xE6, 0x12, 0xE5, 0x23, 0x54, 0x0F, 0xFF, 0x90, 0x01, +0x2F, 0xE0, 0x54, 0x80, 0x4F, 0x64, 0x80, 0xF0, 0x53, 0x23, 0xBF, 0x22, 0x90, 0x8B, 0x2C, 0xE0, +0x30, 0xE0, 0x05, 0xAF, 0x23, 0x02, 0x7E, 0x06, 0x7D, 0x01, 0xAF, 0x23, 0x12, 0x45, 0xA2, 0x22, +0x53, 0x22, 0xF0, 0x43, 0x22, 0x01, 0x12, 0x4B, 0x5A, 0x12, 0x4B, 0x5B, 0x53, 0x22, 0xF0, 0x43, +0x22, 0x02, 0x22, 0x41, 0x8A, 0xF6, 0x00, 0x41, 0x8B, 0x05, 0x00, 0x41, 0x8B, 0x51, 0x00, 0x41, +0x8B, 0x53, 0x00, 0x00, 0x90, 0x04, 0x1B, 0xE0, 0x54, 0x7F, 0x64, 0x7F, 0x7F, 0x01, 0x60, 0x02, +0x7F, 0x00, 0x22, 0xE4, 0x90, 0x8B, 0x1B, 0xF0, 0x90, 0x8B, 0x0C, 0xF0, 0xF5, 0x25, 0x22, 0x90, +0x8B, 0x13, 0xE0, 0xA3, 0xE0, 0x90, 0x05, 0x58, 0xF0, 0x22, 0x22, 0x22, 0xF0, 0x90, 0x8B, 0x0F, +0xE0, 0x90, 0x8B, 0x3E, 0xF0, 0xE4, 0xFB, 0xFD, 0x7F, 0x58, 0x7E, 0x01, 0xD3, 0x10, 0xAF, 0x01, +0xC3, 0xC0, 0xD0, 0x90, 0x8B, 0x3D, 0xE0, 0xFB, 0xA3, 0xE0, 0xF5, 0x44, 0xE4, 0xF5, 0x45, 0x12, +0x35, 0xAB, 0xD0, 0xD0, 0x92, 0xAF, 0x22, 0xC0, 0xE0, 0xC0, 0xF0, 0xC0, 0x83, 0xC0, 0x82, 0xC0, +0xD0, 0x75, 0xD0, 0x00, 0xC0, 0x00, 0xC0, 0x01, 0xC0, 0x02, 0xC0, 0x03, 0xC0, 0x04, 0xC0, 0x05, +0xC0, 0x06, 0xC0, 0x07, 0x75, 0x0E, 0x00, 0x90, 0x01, 0xC4, 0x74, 0x87, 0xF0, 0x74, 0x4B, 0xA3, +0xF0, 0x53, 0x91, 0xDF, 0x90, 0x01, 0x3C, 0xE0, 0x55, 0x30, 0xF5, 0x34, 0xA3, 0xE0, 0x55, 0x31, +0xF5, 0x35, 0xA3, 0xE0, 0x55, 0x32, 0xF5, 0x36, 0xA3, 0xE0, 0x55, 0x33, 0xF5, 0x37, 0xE5, 0x34, +0x30, 0xE0, 0x51, 0x90, 0x01, 0x3C, 0x74, 0x01, 0xF0, 0x90, 0x8B, 0x32, 0xE0, 0x30, 0xE0, 0x1F, +0x13, 0x13, 0x54, 0x3F, 0x30, 0xE0, 0x18, 0x90, 0x8B, 0x34, 0xE4, 0xF0, 0x90, 0x8B, 0x33, 0xE0, +0x64, 0x03, 0x60, 0x0B, 0x7F, 0x01, 0xB1, 0xE0, 0xEF, 0x70, 0x04, 0x7F, 0x02, 0xD1, 0x89, 0x90, +0x8B, 0x2C, 0xE0, 0xFF, 0x30, 0xE0, 0x1D, 0x13, 0x13, 0x54, 0x3F, 0x30, 0xE0, 0x16, 0x90, 0x8B, +0x2E, 0xE4, 0xF0, 0x90, 0x8B, 0x2D, 0xE0, 0x64, 0x06, 0x60, 0x09, 0xE4, 0xFF, 0xB1, 0xE0, 0xEF, +0x70, 0x02, 0xD1, 0x56, 0xE5, 0x34, 0x30, 0xE1, 0x08, 0x90, 0x01, 0x3C, 0x74, 0x02, 0xF0, 0x11, +0x60, 0xE5, 0x34, 0x30, 0xE2, 0x28, 0x90, 0x01, 0x3C, 0x74, 0x04, 0xF0, 0x90, 0x06, 0x92, 0xE0, +0x30, 0xE0, 0x14, 0x90, 0x8B, 0x3D, 0xE4, 0x71, 0x5C, 0x90, 0x01, 0x5B, 0x74, 0x05, 0xF0, 0x90, +0x06, 0x92, 0x74, 0x01, 0xF0, 0x80, 0x07, 0x90, 0x8B, 0x18, 0xE4, 0xF0, 0x51, 0xFC, 0xE5, 0x34, +0x30, 0xE3, 0x38, 0x90, 0x01, 0x3C, 0x74, 0x08, 0xF0, 0x90, 0x06, 0x92, 0xE0, 0x30, 0xE1, 0x24, +0x90, 0x8B, 0x3D, 0xE4, 0xF0, 0x90, 0x8B, 0x0F, 0xE0, 0x90, 0x8B, 0x3E, 0xF0, 0xE4, 0xFB, 0xFD, +0x7F, 0x5C, 0x7E, 0x01, 0x71, 0x6C, 0x90, 0x01, 0x5F, 0x74, 0x05, 0xF0, 0x90, 0x06, 0x92, 0x74, +0x02, 0xF0, 0x80, 0x07, 0x90, 0x8B, 0x17, 0xE4, 0xF0, 0x51, 0xFC, 0xE5, 0x34, 0x30, 0xE4, 0x09, +0x90, 0x01, 0x3C, 0x74, 0x10, 0xF0, 0x12, 0x51, 0xC9, 0xE5, 0x34, 0x30, 0xE5, 0x06, 0x90, 0x01, +0x3C, 0x74, 0x20, 0xF0, 0xE5, 0x35, 0x30, 0xE0, 0x10, 0x90, 0x01, 0x3D, 0x74, 0x01, 0xF0, 0x90, +0x00, 0x83, 0xE0, 0xF5, 0x23, 0x51, 0xE4, 0x51, 0xFC, 0xE5, 0x35, 0x30, 0xE2, 0x06, 0x90, 0x01, +0x3D, 0x74, 0x04, 0xF0, 0xE5, 0x35, 0x30, 0xE4, 0x1B, 0x90, 0x01, 0x3D, 0x74, 0x10, 0xF0, 0x90, +0x8B, 0x05, 0xE0, 0x60, 0x0F, 0xE4, 0xF0, 0x90, 0x05, 0x53, 0xE0, 0x44, 0x01, 0xF0, 0x90, 0x05, +0xFD, 0xE0, 0x04, 0xF0, 0xE5, 0x36, 0x30, 0xE0, 0x75, 0x90, 0x01, 0x3E, 0x74, 0x01, 0xF0, 0x90, +0x8B, 0x32, 0xE0, 0x30, 0xE0, 0x18, 0x90, 0x8B, 0x36, 0xE4, 0xF0, 0x90, 0x8B, 0x33, 0xE0, 0x64, +0x03, 0x60, 0x0B, 0x7F, 0x01, 0xB1, 0xE0, 0xEF, 0x60, 0x04, 0x7F, 0x01, 0xD1, 0x89, 0x90, 0x8B, +0x2C, 0xE0, 0x30, 0xE0, 0x49, 0x90, 0x8B, 0x30, 0xE4, 0xF0, 0xFF, 0xB1, 0xE0, 0xEF, 0x60, 0x3E, +0x12, 0x65, 0x5F, 0x90, 0x8B, 0x2D, 0xE0, 0xFF, 0x64, 0x06, 0x60, 0x32, 0xEF, 0xB4, 0x04, 0x02, +0x80, 0x07, 0x90, 0x8B, 0x2D, 0xE0, 0xB4, 0x05, 0x04, 0xE4, 0xFF, 0x80, 0x14, 0x90, 0x8B, 0x2D, +0xE0, 0xB4, 0x03, 0x04, 0x7F, 0x01, 0x80, 0x09, 0x90, 0x8B, 0x2D, 0xE0, 0xB4, 0x02, 0x05, 0x7F, +0x01, 0x12, 0x65, 0x82, 0x7D, 0x01, 0xAF, 0x23, 0x12, 0x45, 0xA2, 0x12, 0x7D, 0xC1, 0xE5, 0x36, +0x30, 0xE1, 0x47, 0x90, 0x01, 0x3E, 0x74, 0x02, 0xF0, 0x90, 0x8B, 0x32, 0xE0, 0x30, 0xE0, 0x19, +0x90, 0x8B, 0x36, 0x74, 0x01, 0xF0, 0x90, 0x8B, 0x33, 0xE0, 0x64, 0x03, 0x60, 0x0B, 0x7F, 0x01, +0xB1, 0xE0, 0xEF, 0x70, 0x04, 0x7F, 0x02, 0xD1, 0x89, 0x90, 0x8B, 0x2C, 0xE0, 0x30, 0xE0, 0x1A, +0x90, 0x8B, 0x30, 0x74, 0x01, 0xF0, 0x12, 0x7E, 0x2B, 0x90, 0x8B, 0x2D, 0xE0, 0x64, 0x06, 0x60, +0x09, 0xE4, 0xFF, 0xB1, 0xE0, 0xEF, 0x70, 0x02, 0xD1, 0x56, 0x74, 0x87, 0x04, 0x90, 0x01, 0xC4, +0xF0, 0x74, 0x4B, 0xA3, 0xF0, 0xD0, 0x07, 0xD0, 0x06, 0xD0, 0x05, 0xD0, 0x04, 0xD0, 0x03, 0xD0, +0x02, 0xD0, 0x01, 0xD0, 0x00, 0xD0, 0xD0, 0xD0, 0x82, 0xD0, 0x83, 0xD0, 0xF0, 0xD0, 0xE0, 0x32, +0xEF, 0x64, 0x01, 0x70, 0x3D, 0x90, 0x8B, 0x35, 0xE0, 0x60, 0x03, 0x7F, 0x00, 0x22, 0x90, 0x8B, +0x08, 0xE0, 0x60, 0x03, 0x7F, 0x01, 0x22, 0x90, 0x8B, 0x34, 0xE0, 0x60, 0x03, 0x7F, 0x01, 0x22, +0x90, 0x8B, 0x32, 0xE0, 0xFF, 0x13, 0x13, 0x54, 0x3F, 0x30, 0xE0, 0x0B, 0xEF, 0xC4, 0x13, 0x54, +0x07, 0x30, 0xE0, 0x03, 0x7F, 0x00, 0x22, 0x90, 0x8B, 0x36, 0xE0, 0x7F, 0x01, 0x60, 0x36, 0x7F, +0x00, 0x22, 0x90, 0x8B, 0x2F, 0xE0, 0x60, 0x03, 0x7F, 0x00, 0x22, 0x90, 0x8B, 0x08, 0xE0, 0x60, +0x03, 0x7F, 0x01, 0x22, 0x90, 0x8B, 0x2E, 0xE0, 0x60, 0x03, 0x7F, 0x01, 0x22, 0x90, 0x8B, 0x2C, +0xE0, 0x13, 0x13, 0x54, 0x3F, 0x30, 0xE0, 0x03, 0x7F, 0x00, 0x22, 0x90, 0x8B, 0x30, 0xE0, 0x7F, +0x01, 0x60, 0x02, 0x7F, 0x00, 0x22, 0x90, 0x8B, 0x0D, 0xE0, 0x60, 0x16, 0x90, 0x8B, 0x2D, 0xE0, +0x70, 0x04, 0x7F, 0x05, 0x80, 0x1F, 0x90, 0x8B, 0x2D, 0xE0, 0x64, 0x01, 0x70, 0x1A, 0x7F, 0x02, +0x80, 0x13, 0x90, 0x8B, 0x2D, 0xE0, 0xB4, 0x01, 0x04, 0x7F, 0x03, 0x80, 0x08, 0x90, 0x8B, 0x2D, +0xE0, 0x70, 0x05, 0x7F, 0x04, 0x12, 0x65, 0x82, 0x22, 0xD3, 0x10, 0xAF, 0x01, 0xC3, 0xC0, 0xD0, +0x90, 0x8B, 0x33, 0xE0, 0x90, 0x8B, 0x55, 0xF0, 0x6F, 0x70, 0x02, 0xE1, 0x55, 0xEF, 0x14, 0x60, +0x3B, 0x14, 0x60, 0x5F, 0x14, 0x70, 0x02, 0xE1, 0x30, 0x24, 0x03, 0x60, 0x02, 0xE1, 0x55, 0x90, +0x8B, 0x55, 0xE0, 0xB4, 0x03, 0x04, 0xF1, 0xC2, 0xE1, 0x55, 0x90, 0x8B, 0x55, 0xE0, 0xB4, 0x02, +0x04, 0xF1, 0xAF, 0xE1, 0x55, 0x90, 0x8B, 0x55, 0xE0, 0xB4, 0x04, 0x04, 0xF1, 0xC6, 0xE1, 0x55, +0x90, 0x8B, 0x55, 0xE0, 0x64, 0x01, 0x70, 0x7D, 0xF1, 0xB1, 0x80, 0x79, 0x90, 0x8B, 0x55, 0xE0, +0xFF, 0xB4, 0x03, 0x04, 0xF1, 0xCA, 0x80, 0x6D, 0xEF, 0xB4, 0x02, 0x04, 0xF1, 0xA1, 0x80, 0x65, +0x90, 0x8B, 0x55, 0xE0, 0xFF, 0xB4, 0x04, 0x04, 0xF1, 0xD5, 0x80, 0x59, 0xEF, 0x70, 0x56, 0xF1, +0x8E, 0x80, 0x52, 0x90, 0x8B, 0x55, 0xE0, 0xB4, 0x03, 0x05, 0x12, 0x7C, 0x41, 0x80, 0x46, 0x90, +0x8B, 0x55, 0xE0, 0xB4, 0x01, 0x04, 0xF1, 0x72, 0x80, 0x3B, 0x90, 0x8B, 0x55, 0xE0, 0xB4, 0x04, +0x05, 0x12, 0x7D, 0x23, 0x80, 0x2F, 0x90, 0x8B, 0x55, 0xE0, 0x70, 0x29, 0xF1, 0x70, 0x80, 0x25, +0x90, 0x8B, 0x55, 0xE0, 0xFF, 0xB4, 0x01, 0x04, 0xF1, 0x5A, 0x80, 0x19, 0xEF, 0xB4, 0x02, 0x04, +0xF1, 0x6B, 0x80, 0x11, 0x90, 0x8B, 0x55, 0xE0, 0xFF, 0xB4, 0x04, 0x04, 0xF1, 0x5A, 0x80, 0x05, +0xEF, 0x70, 0x02, 0xF1, 0x67, 0xD0, 0xD0, 0x92, 0xAF, 0x22, 0x90, 0x05, 0x22, 0x74, 0x6F, 0xF0, +0x90, 0x8B, 0x33, 0x74, 0x03, 0xF0, 0x22, 0xF1, 0x8E, 0x80, 0xEF, 0x12, 0x7D, 0x42, 0x80, 0xEA, +0xF1, 0x8E, 0x90, 0x05, 0x22, 0x74, 0xFF, 0xF0, 0x12, 0x7E, 0x9A, 0xEF, 0x70, 0x06, 0x90, 0x01, +0xC8, 0x74, 0xFD, 0xF0, 0x12, 0x7C, 0x50, 0x90, 0x8B, 0x33, 0x74, 0x02, 0xF0, 0x22, 0x90, 0x01, +0x3E, 0x74, 0x03, 0xF0, 0xFD, 0x7F, 0x02, 0x12, 0x37, 0x00, 0x90, 0x8B, 0x33, 0x74, 0x01, 0xF0, +0x22, 0x12, 0x7D, 0x42, 0x90, 0x05, 0x22, 0xE4, 0xF0, 0x90, 0x8B, 0x33, 0x04, 0xF0, 0x22, 0xF1, +0xA1, 0x7D, 0x03, 0x7F, 0x02, 0x12, 0x36, 0x92, 0x90, 0x05, 0x27, 0xE4, 0xF0, 0x90, 0x8B, 0x33, +0xF0, 0x22, 0xF1, 0xCA, 0x80, 0xEB, 0xF1, 0xD5, 0x80, 0xE7, 0x90, 0x05, 0x22, 0xE4, 0xF0, 0x90, +0x8B, 0x33, 0x04, 0xF0, 0x22, 0x90, 0x05, 0x22, 0xE4, 0xF0, 0x90, 0x8B, 0x33, 0x04, 0xF0, 0x22, +0xF1, 0x8E, 0x90, 0x05, 0x22, 0x74, 0xFF, 0xF0, 0x90, 0x8B, 0x33, 0x74, 0x04, 0xF0, 0x22, 0x90, +0x02, 0x84, 0xEF, 0xF0, 0xA3, 0xEE, 0xF0, 0xA3, 0x74, 0x05, 0xF0, 0x22, 0xEF, 0x8E, 0xF0, 0x12, +0x43, 0xBA, 0x50, 0x1A, 0x00, 0x40, 0x50, 0x42, 0x00, 0x80, 0x50, 0x6D, 0x01, 0x00, 0x50, 0x81, +0x02, 0x00, 0x50, 0x99, 0x04, 0x00, 0x00, 0x00, 0x50, 0xB6, 0xED, 0x54, 0x3F, 0x70, 0x04, 0xFE, +0xFF, 0x80, 0x04, 0x7E, 0x00, 0x7F, 0x40, 0xEF, 0x2D, 0xFF, 0xEE, 0x3C, 0xFE, 0xEF, 0x78, 0x06, +0xCE, 0xC3, 0x13, 0xCE, 0x13, 0xD8, 0xF9, 0x78, 0x06, 0xC3, 0x33, 0xCE, 0x33, 0xCE, 0xD8, 0xF9, +0x80, 0x26, 0xED, 0x54, 0x7F, 0x70, 0x04, 0xFE, 0xFF, 0x80, 0x04, 0x7E, 0x00, 0x7F, 0x80, 0xEF, +0x2D, 0xFF, 0xEE, 0x3C, 0xFE, 0xEF, 0x78, 0x07, 0xCE, 0xC3, 0x13, 0xCE, 0x13, 0xD8, 0xF9, 0x78, +0x07, 0xC3, 0x33, 0xCE, 0x33, 0xCE, 0xD8, 0xF9, 0xFD, 0xAC, 0x06, 0x80, 0x49, 0xED, 0x70, 0x04, +0xFE, 0xFF, 0x80, 0x04, 0x7E, 0x01, 0x7F, 0x00, 0xEF, 0x2D, 0xEE, 0x3C, 0x7D, 0x00, 0xFC, 0x80, +0x35, 0xEC, 0x54, 0x01, 0x4D, 0x70, 0x04, 0xFE, 0xFF, 0x80, 0x04, 0x7E, 0x02, 0x7F, 0x00, 0xEF, +0x2D, 0xEE, 0x3C, 0xC3, 0x13, 0x7D, 0x00, 0x80, 0x1A, 0xEC, 0x54, 0x03, 0x4D, 0x70, 0x04, 0xFE, +0xFF, 0x80, 0x04, 0x7E, 0x04, 0x7F, 0x00, 0xEF, 0x2D, 0xEE, 0x3C, 0x13, 0x13, 0x54, 0x3F, 0x7D, +0x00, 0x25, 0xE0, 0x25, 0xE0, 0xFC, 0xAE, 0x04, 0xAF, 0x05, 0x22, 0x90, 0x01, 0xE4, 0x74, 0x58, +0xF0, 0xA3, 0x74, 0x02, 0xF0, 0x22, 0xE4, 0x90, 0x8A, 0xCC, 0xF0, 0xA3, 0xF0, 0x75, 0x8E, 0x02, +0x91, 0x0E, 0x12, 0x68, 0x44, 0x90, 0x8B, 0x07, 0xEF, 0xF0, 0x12, 0x68, 0x51, 0x90, 0x8B, 0x09, +0xEF, 0xF0, 0x12, 0x68, 0x5D, 0x90, 0x8A, 0xF4, 0xEE, 0xF0, 0xA3, 0xEF, 0xF0, 0xE4, 0xF5, 0x55, +0xF5, 0x21, 0x12, 0x72, 0x55, 0x12, 0x44, 0x9E, 0x12, 0x32, 0x3D, 0x7F, 0x03, 0x12, 0x78, 0x42, +0x12, 0x7C, 0x3D, 0x12, 0x68, 0x0A, 0x12, 0x68, 0x75, 0x12, 0x68, 0x8A, 0x12, 0x68, 0x28, 0x12, +0x68, 0x43, 0x90, 0x8A, 0xCE, 0xE5, 0xD9, 0xF0, 0x31, 0x5F, 0xC2, 0xAF, 0x90, 0x00, 0x80, 0xE0, +0x44, 0x40, 0xF0, 0x51, 0x0E, 0x75, 0xE8, 0x03, 0x43, 0xA8, 0x85, 0xD2, 0xAF, 0x11, 0xBB, 0x90, +0x8A, 0xCC, 0xE0, 0x64, 0x01, 0xF0, 0x24, 0xC6, 0x90, 0x01, 0xC4, 0xF0, 0x74, 0x50, 0xA3, 0xF0, +0xE5, 0x55, 0x30, 0xE4, 0x09, 0xC2, 0xAF, 0x53, 0x55, 0xEF, 0xD2, 0xAF, 0xB1, 0x59, 0xE5, 0x55, +0x30, 0xE6, 0xDC, 0xC2, 0xAF, 0x53, 0x55, 0xBF, 0xD2, 0xAF, 0x12, 0x6B, 0xBD, 0x80, 0xD0, 0x90, +0x01, 0x3C, 0x74, 0xFF, 0xF0, 0xA3, 0xF0, 0xA3, 0xF0, 0x90, 0x01, 0x34, 0xF0, 0xA3, 0xF0, 0xA3, +0xF0, 0xA3, 0xF0, 0xFD, 0x7F, 0x54, 0x31, 0x88, 0x7D, 0xFF, 0x7F, 0x55, 0x31, 0x88, 0x7D, 0xFF, +0x7F, 0x56, 0x31, 0x88, 0x7D, 0xFF, 0x7F, 0x57, 0xD3, 0x10, 0xAF, 0x01, 0xC3, 0xC0, 0xD0, 0x8F, +0x82, 0x75, 0x83, 0x00, 0xED, 0xF0, 0x51, 0x0E, 0xD0, 0xD0, 0x92, 0xAF, 0x22, 0x90, 0x01, 0x30, +0xE4, 0xF0, 0xA3, 0xF0, 0xA3, 0xF0, 0xA3, 0xF0, 0x90, 0x01, 0x38, 0xF0, 0xA3, 0xF0, 0xA3, 0xF0, +0xA3, 0xF0, 0xFD, 0x7F, 0x50, 0x31, 0x88, 0xE4, 0xFD, 0x7F, 0x51, 0x31, 0x88, 0xE4, 0xFD, 0x7F, +0x52, 0x31, 0x88, 0xE4, 0xFD, 0x7F, 0x53, 0x80, 0xBF, 0xE5, 0x5E, 0x64, 0x01, 0x70, 0x3B, 0x71, +0x4E, 0xBF, 0x01, 0x04, 0x7F, 0x01, 0x71, 0x42, 0x90, 0x00, 0x46, 0xE0, 0x44, 0x04, 0xFD, 0x7F, +0x46, 0x31, 0x88, 0x90, 0x00, 0x44, 0xE0, 0x54, 0xFB, 0xFD, 0x7F, 0x44, 0x31, 0x88, 0x90, 0x00, +0x46, 0xE0, 0x54, 0xFB, 0xFD, 0x7F, 0x46, 0x31, 0x88, 0x7F, 0x02, 0x71, 0x6A, 0x8F, 0x62, 0x90, +0x01, 0xC9, 0xE5, 0x62, 0xF0, 0xB4, 0x01, 0x02, 0x51, 0xE2, 0x22, 0xE0, 0x5F, 0xF0, 0xD3, 0x10, +0xAF, 0x01, 0xC3, 0xC0, 0xD0, 0x7F, 0x10, 0xDF, 0xFE, 0xD0, 0xD0, 0x92, 0xAF, 0x22, 0xD3, 0x10, +0xAF, 0x01, 0xC3, 0xC0, 0xD0, 0x90, 0x8A, 0xE0, 0xED, 0xF0, 0x90, 0x8A, 0xDF, 0xEF, 0xF0, 0xD3, +0x94, 0x07, 0x50, 0x4E, 0xA3, 0xE0, 0x70, 0x1A, 0x90, 0x8A, 0xDF, 0xE0, 0xFF, 0x74, 0x01, 0xA8, +0x07, 0x08, 0x80, 0x02, 0xC3, 0x33, 0xD8, 0xFC, 0xF4, 0xFF, 0x90, 0x00, 0x47, 0xE0, 0x5F, 0xF0, +0x80, 0x17, 0x90, 0x8A, 0xDF, 0xE0, 0xFF, 0x74, 0x01, 0xA8, 0x07, 0x08, 0x80, 0x02, 0xC3, 0x33, +0xD8, 0xFC, 0xFF, 0x90, 0x00, 0x47, 0xE0, 0x4F, 0xF0, 0x51, 0x0E, 0x90, 0x8A, 0xDF, 0xE0, 0xFF, +0x74, 0x01, 0xA8, 0x07, 0x08, 0x80, 0x02, 0xC3, 0x33, 0xD8, 0xFC, 0xF4, 0xFF, 0x90, 0x00, 0x46, +0x80, 0x59, 0x90, 0x8A, 0xDF, 0xE0, 0x24, 0xF8, 0xF0, 0xA3, 0xE0, 0x70, 0x1D, 0x90, 0x8A, 0xDF, +0xE0, 0xFF, 0x74, 0x01, 0xA8, 0x07, 0x08, 0x80, 0x02, 0xC3, 0x33, 0xD8, 0xFC, 0xC4, 0x54, 0xF0, +0xF4, 0xFF, 0x90, 0x00, 0x43, 0xE0, 0x5F, 0xF0, 0x80, 0x1A, 0x90, 0x8A, 0xDF, 0xE0, 0xFF, 0x74, +0x01, 0xA8, 0x07, 0x08, 0x80, 0x02, 0xC3, 0x33, 0xD8, 0xFC, 0xC4, 0x54, 0xF0, 0xFF, 0x90, 0x00, +0x43, 0xE0, 0x4F, 0xF0, 0x51, 0x0E, 0x90, 0x8A, 0xDF, 0xE0, 0xFF, 0x74, 0x01, 0xA8, 0x07, 0x08, +0x80, 0x02, 0xC3, 0x33, 0xD8, 0xFC, 0xF4, 0xFF, 0x90, 0x00, 0x43, 0x51, 0x0B, 0xD0, 0xD0, 0x92, +0xAF, 0x22, 0x90, 0x00, 0x49, 0xE0, 0x90, 0x8B, 0x54, 0xF0, 0xE0, 0x54, 0x0F, 0xF0, 0x44, 0xF0, +0xFD, 0x7F, 0x49, 0x31, 0x88, 0x90, 0x8B, 0x54, 0xE0, 0x44, 0xB0, 0xFD, 0x7F, 0x49, 0x21, 0x88, +0x90, 0x8A, 0xDD, 0xEE, 0xF0, 0xA3, 0xEF, 0xF0, 0x75, 0x5E, 0x01, 0x8E, 0x5F, 0xF5, 0x60, 0xE4, +0xFD, 0x7F, 0x0B, 0x51, 0x1E, 0xE4, 0xFD, 0x7F, 0x02, 0x51, 0x1E, 0x71, 0x4E, 0xE4, 0xFF, 0x71, +0x42, 0xE4, 0xF5, 0x62, 0x90, 0x01, 0xC9, 0xE5, 0x62, 0xF0, 0x90, 0x8A, 0xDD, 0xE0, 0xFC, 0xA3, +0xE0, 0xFD, 0xEC, 0xFB, 0x8D, 0x44, 0xE4, 0xF5, 0x45, 0x7D, 0x01, 0x7F, 0x60, 0x7E, 0x01, 0x02, +0x35, 0xAB, 0x90, 0x01, 0xCA, 0xE5, 0x61, 0xF0, 0xEF, 0x60, 0x02, 0x51, 0xE2, 0x22, 0x7F, 0x0B, +0x71, 0x6A, 0xEF, 0x65, 0x61, 0x60, 0x10, 0xE5, 0x61, 0xB4, 0x01, 0x05, 0xE4, 0xF5, 0x61, 0x80, +0x03, 0x75, 0x61, 0x01, 0x7F, 0x01, 0x22, 0x7F, 0x00, 0x22, 0xD3, 0x10, 0xAF, 0x01, 0xC3, 0xC0, +0xD0, 0x90, 0x8B, 0x57, 0xEF, 0xF0, 0xD3, 0x94, 0x07, 0x50, 0x43, 0xE0, 0xFF, 0x74, 0x01, 0xA8, +0x07, 0x08, 0x80, 0x02, 0xC3, 0x33, 0xD8, 0xFC, 0xF4, 0xFF, 0x90, 0x00, 0x46, 0x51, 0x0B, 0x90, +0x8B, 0x57, 0xE0, 0xFD, 0x74, 0x01, 0x7E, 0x00, 0xA8, 0x05, 0x08, 0x80, 0x05, 0xC3, 0x33, 0xCE, +0x33, 0xCE, 0xD8, 0xF9, 0xFF, 0x90, 0x00, 0x44, 0xE0, 0xFB, 0xE4, 0xFE, 0xEF, 0x5B, 0xA8, 0x05, +0x08, 0x80, 0x06, 0xCE, 0xA2, 0xE7, 0x13, 0xCE, 0x13, 0xD8, 0xF8, 0xFF, 0x80, 0x4B, 0x90, 0x8B, +0x57, 0xE0, 0x24, 0xF8, 0xF0, 0xE0, 0xFF, 0x74, 0x01, 0xA8, 0x07, 0x08, 0x80, 0x02, 0xC3, 0x33, +0xD8, 0xFC, 0xF4, 0xFF, 0x90, 0x00, 0x43, 0xE0, 0x5F, 0xF0, 0x51, 0x0E, 0x90, 0x8B, 0x57, 0xE0, +0xFD, 0x74, 0x01, 0x7E, 0x00, 0xA8, 0x05, 0x08, 0x80, 0x05, 0xC3, 0x33, 0xCE, 0x33, 0xCE, 0xD8, +0xF9, 0xFF, 0x90, 0x00, 0x42, 0xE0, 0xFB, 0xE4, 0xFE, 0xEF, 0x5B, 0xA8, 0x05, 0x08, 0x80, 0x06, +0xCE, 0xA2, 0xE7, 0x13, 0xCE, 0x13, 0xD8, 0xF8, 0xFF, 0xD0, 0xD0, 0x92, 0xAF, 0x22, 0xE4, 0x90, +0x8B, 0x04, 0xF0, 0x90, 0x00, 0x80, 0xE0, 0x44, 0x80, 0xFD, 0x7F, 0x80, 0x21, 0x88, 0xD3, 0x10, +0xAF, 0x01, 0xC3, 0xC0, 0xD0, 0x90, 0x8A, 0xDA, 0x12, 0x43, 0x8B, 0x90, 0x8A, 0xDA, 0x12, 0x43, +0x6B, 0x90, 0x00, 0x01, 0x12, 0x42, 0xC2, 0xFA, 0xE5, 0xF0, 0x24, 0x00, 0xFF, 0xE4, 0x3A, 0xFE, +0x90, 0x8A, 0xDA, 0x12, 0x43, 0x6B, 0x90, 0x00, 0x01, 0xEE, 0x8F, 0xF0, 0x12, 0x43, 0x19, 0x12, +0x29, 0xD9, 0xFF, 0x60, 0x2C, 0xB5, 0x5E, 0x16, 0x90, 0x8A, 0xDA, 0x12, 0x43, 0x6B, 0x90, 0x00, +0x01, 0x12, 0x42, 0xC2, 0x65, 0x60, 0x70, 0x04, 0xE5, 0x5F, 0x65, 0xF0, 0x60, 0x22, 0x90, 0x8A, +0xDA, 0x12, 0x43, 0x6B, 0x90, 0x00, 0x01, 0x12, 0x42, 0xC2, 0xFF, 0xAE, 0xF0, 0x71, 0x00, 0x80, +0x0F, 0x90, 0x8A, 0xDA, 0x12, 0x43, 0x6B, 0x12, 0x29, 0xD9, 0x65, 0x5E, 0x60, 0x02, 0x91, 0x95, +0xD0, 0xD0, 0x92, 0xAF, 0x22, 0xE4, 0xF5, 0x5E, 0x7F, 0x60, 0x7E, 0x01, 0x8F, 0x82, 0x8E, 0x83, +0xA3, 0xA3, 0xA3, 0xE4, 0xF0, 0x22, 0x90, 0x8A, 0xD7, 0x12, 0x43, 0x8B, 0xEF, 0x12, 0x43, 0x94, +0x54, 0xE7, 0x01, 0x54, 0xDE, 0x02, 0x55, 0x0B, 0x03, 0x55, 0x14, 0x05, 0x55, 0x1D, 0x06, 0x55, +0x58, 0x07, 0x55, 0x25, 0x08, 0x55, 0x2E, 0x09, 0x55, 0x36, 0x20, 0x55, 0x3F, 0x2C, 0x54, 0xF0, +0x2D, 0x54, 0xF9, 0x2E, 0x55, 0x02, 0x3B, 0x55, 0x48, 0x4B, 0x00, 0x00, 0x55, 0x51, 0x90, 0x8A, +0xD7, 0x12, 0x43, 0x6B, 0x02, 0x74, 0x85, 0x90, 0x8A, 0xD7, 0x12, 0x43, 0x6B, 0x02, 0x74, 0x8B, +0x90, 0x8A, 0xD7, 0x12, 0x43, 0x6B, 0x02, 0x74, 0xB8, 0x90, 0x8A, 0xD7, 0x12, 0x43, 0x6B, 0x02, +0x75, 0x00, 0x90, 0x8A, 0xD7, 0x12, 0x43, 0x6B, 0x02, 0x75, 0x39, 0x90, 0x8A, 0xD7, 0x12, 0x43, +0x6B, 0x02, 0x75, 0x52, 0x90, 0x8A, 0xD7, 0x12, 0x43, 0x6B, 0x02, 0x74, 0x0F, 0x90, 0x8A, 0xD7, +0x12, 0x43, 0x6B, 0xC1, 0xA6, 0x90, 0x8A, 0xD7, 0x12, 0x43, 0x6B, 0x02, 0x75, 0x9A, 0x90, 0x8A, +0xD7, 0x12, 0x43, 0x6B, 0x81, 0x1E, 0x90, 0x8A, 0xD7, 0x12, 0x43, 0x6B, 0x02, 0x78, 0x81, 0x90, +0x8A, 0xD7, 0x12, 0x43, 0x6B, 0x02, 0x7A, 0xC2, 0x90, 0x8A, 0xD7, 0x12, 0x43, 0x6B, 0x02, 0x7C, +0x2B, 0x90, 0x01, 0xC6, 0xE0, 0x44, 0x01, 0xF0, 0x22, 0xD3, 0x10, 0xAF, 0x01, 0xC3, 0xC0, 0xD0, +0x90, 0x01, 0xCC, 0xE0, 0x54, 0x0F, 0x90, 0x8A, 0xCF, 0xF0, 0x90, 0x8A, 0xCF, 0xE0, 0xFD, 0x70, +0x02, 0xC1, 0xA1, 0x90, 0x8B, 0x51, 0xE0, 0xFF, 0x74, 0x01, 0x7E, 0x00, 0xA8, 0x07, 0x08, 0x80, +0x05, 0xC3, 0x33, 0xCE, 0x33, 0xCE, 0xD8, 0xF9, 0xFF, 0xEF, 0x5D, 0x70, 0x02, 0xC1, 0x9A, 0x90, +0x8B, 0x51, 0xE0, 0x75, 0xF0, 0x04, 0x90, 0x01, 0xD0, 0x12, 0x43, 0x5F, 0xE0, 0x90, 0x8A, 0xD0, +0xF0, 0x75, 0x1D, 0x01, 0x75, 0x1E, 0x8A, 0x75, 0x1F, 0xD0, 0x75, 0x20, 0x01, 0x7B, 0x01, 0x7A, +0x8A, 0x79, 0xD1, 0x12, 0x5E, 0xE4, 0x90, 0x8A, 0xD1, 0xE0, 0xFF, 0xC4, 0x13, 0x13, 0x13, 0x54, +0x01, 0x90, 0x8B, 0x51, 0x30, 0xE0, 0x59, 0xE0, 0x75, 0xF0, 0x02, 0x90, 0x00, 0x88, 0x12, 0x43, +0x5F, 0xE0, 0x90, 0x8A, 0xD2, 0xF0, 0x90, 0x8B, 0x51, 0xE0, 0x75, 0xF0, 0x02, 0x90, 0x00, 0x89, +0x12, 0x43, 0x5F, 0xE0, 0x90, 0x8A, 0xD3, 0xF0, 0x90, 0x8B, 0x51, 0xE0, 0x75, 0xF0, 0x04, 0x90, +0x01, 0xD1, 0x12, 0x43, 0x5F, 0xE0, 0x90, 0x8A, 0xD4, 0xF0, 0x90, 0x8B, 0x51, 0xE0, 0x75, 0xF0, +0x04, 0x90, 0x01, 0xD2, 0x12, 0x43, 0x5F, 0xE0, 0x90, 0x8A, 0xD5, 0xF0, 0x90, 0x8B, 0x51, 0xE0, +0x75, 0xF0, 0x04, 0x90, 0x01, 0xD3, 0x12, 0x43, 0x5F, 0xE0, 0x90, 0x8A, 0xD6, 0xF0, 0x80, 0x33, +0xE0, 0x75, 0xF0, 0x04, 0x90, 0x01, 0xD1, 0x12, 0x43, 0x5F, 0xE0, 0x90, 0x8A, 0xD2, 0xF0, 0x90, +0x8B, 0x51, 0xE0, 0x75, 0xF0, 0x04, 0x90, 0x01, 0xD2, 0x12, 0x43, 0x5F, 0xE0, 0x90, 0x8A, 0xD3, +0xF0, 0x90, 0x8B, 0x51, 0xE0, 0x75, 0xF0, 0x04, 0x90, 0x01, 0xD3, 0x12, 0x43, 0x5F, 0xE0, 0x90, +0x8A, 0xD4, 0xF0, 0xEF, 0x54, 0x7F, 0xFF, 0x7B, 0x01, 0x7A, 0x8A, 0x79, 0xD2, 0x91, 0xA6, 0x90, +0x8A, 0xCF, 0xE0, 0xFF, 0x90, 0x8B, 0x51, 0xE0, 0xFE, 0x74, 0x01, 0xA8, 0x06, 0x08, 0x80, 0x02, +0xC3, 0x33, 0xD8, 0xFC, 0xF4, 0x5F, 0x90, 0x8A, 0xCF, 0xF0, 0x90, 0x8B, 0x51, 0xE0, 0xFF, 0x74, +0x01, 0xA8, 0x07, 0x08, 0x80, 0x02, 0xC3, 0x33, 0xD8, 0xFC, 0x90, 0x01, 0xCC, 0xF0, 0x90, 0x8B, +0x51, 0xE0, 0x04, 0xF0, 0xE0, 0x54, 0x03, 0xF0, 0xA1, 0x6A, 0x90, 0x01, 0xC6, 0xE0, 0x44, 0x02, +0xF0, 0xD0, 0xD0, 0x92, 0xAF, 0x22, 0x90, 0x00, 0x04, 0x12, 0x42, 0x20, 0xFF, 0x54, 0x1F, 0xFE, +0xEF, 0x54, 0x20, 0xC4, 0x13, 0x54, 0x07, 0xFD, 0xAF, 0x06, 0x90, 0x8A, 0xDA, 0xEF, 0xF0, 0xA3, +0xED, 0xF0, 0xA3, 0x12, 0x43, 0x8B, 0x90, 0x8A, 0xDC, 0x12, 0x43, 0x6B, 0x90, 0x00, 0x03, 0x12, +0x42, 0x20, 0x54, 0xF0, 0xC4, 0x54, 0x0F, 0x90, 0x8A, 0xDF, 0xF0, 0x90, 0x00, 0x04, 0x12, 0x42, +0x20, 0x54, 0x40, 0xC4, 0x13, 0x13, 0x54, 0x03, 0x90, 0x8A, 0xE0, 0xF0, 0x90, 0x8A, 0xDA, 0xE0, +0xFF, 0x75, 0xF0, 0x09, 0x90, 0x87, 0x25, 0x12, 0x43, 0x5F, 0xAD, 0x82, 0xAC, 0x83, 0x90, 0x8A, +0xE1, 0xEC, 0xF0, 0xA3, 0xED, 0xF0, 0xEF, 0x75, 0xF0, 0x09, 0xA4, 0x24, 0x23, 0xF9, 0x74, 0x87, +0x35, 0xF0, 0xFA, 0x7B, 0x01, 0xA3, 0x12, 0x43, 0x8B, 0x90, 0x8A, 0xDC, 0x12, 0x43, 0x6B, 0x90, +0x00, 0x03, 0x12, 0x42, 0x20, 0x54, 0x0F, 0xFF, 0x90, 0x8A, 0xE3, 0x12, 0x43, 0x6B, 0xEF, 0x12, +0x42, 0x4D, 0x90, 0x8A, 0xDC, 0x12, 0x43, 0x6B, 0x90, 0x00, 0x02, 0x12, 0x42, 0x20, 0xFF, 0x90, +0x8A, 0xE3, 0x12, 0x43, 0x6B, 0x90, 0x00, 0x01, 0xEF, 0x12, 0x42, 0x5F, 0x90, 0x8A, 0xDC, 0x12, +0x43, 0x6B, 0x90, 0x00, 0x01, 0x12, 0x42, 0x20, 0xFF, 0x90, 0x8A, 0xE1, 0xE0, 0xFC, 0xA3, 0xE0, +0xFD, 0xF5, 0x82, 0x8C, 0x83, 0xEF, 0xF0, 0x12, 0x29, 0xD9, 0x8D, 0x82, 0x8C, 0x83, 0xA3, 0xF0, +0x90, 0x8A, 0xDF, 0xE0, 0xFE, 0x90, 0x8A, 0xDA, 0xE0, 0xFF, 0x24, 0xC1, 0xF5, 0x82, 0xE4, 0x34, +0x86, 0xF5, 0x83, 0xEE, 0xF0, 0x90, 0x8A, 0xDB, 0xE0, 0xFE, 0x75, 0xF0, 0x09, 0xEF, 0x90, 0x87, +0x29, 0x12, 0x43, 0x5F, 0xEE, 0xF0, 0x75, 0xF0, 0x09, 0xEF, 0x90, 0x87, 0x2A, 0x12, 0x43, 0x5F, +0x74, 0x01, 0xF0, 0x90, 0x8A, 0xE0, 0xE0, 0xFE, 0x75, 0xF0, 0x09, 0xEF, 0x90, 0x87, 0x2B, 0x12, +0x43, 0x5F, 0xEE, 0xF0, 0x8F, 0x0F, 0xEF, 0x25, 0xE0, 0x24, 0xE4, 0xF5, 0x82, 0xE4, 0x34, 0x89, +0xAF, 0x82, 0xF5, 0x10, 0x8F, 0x11, 0xE5, 0x0F, 0x75, 0xF0, 0x02, 0xA4, 0x24, 0x81, 0xF9, 0x74, +0x86, 0x35, 0xF0, 0x75, 0x12, 0x01, 0xF5, 0x13, 0x89, 0x14, 0x75, 0xF0, 0x09, 0xE5, 0x0F, 0x90, +0x87, 0x25, 0x12, 0x43, 0x5F, 0xAF, 0x82, 0x85, 0x83, 0x15, 0x8F, 0x16, 0xE5, 0x0F, 0x75, 0xF0, +0x09, 0xA4, 0x24, 0x23, 0xF9, 0x74, 0x87, 0x35, 0xF0, 0x75, 0x17, 0x01, 0xF5, 0x18, 0x89, 0x19, +0x74, 0xC1, 0x25, 0x0F, 0xF5, 0x82, 0xE4, 0x34, 0x86, 0xF5, 0x83, 0xE0, 0x12, 0x43, 0x94, 0x58, +0x34, 0x00, 0x58, 0x49, 0x01, 0x58, 0x5E, 0x02, 0x58, 0x73, 0x03, 0x58, 0x9C, 0x04, 0x58, 0xB1, +0x05, 0x58, 0xC6, 0x06, 0x58, 0xEC, 0x0C, 0x59, 0x19, 0x0D, 0x59, 0x46, 0x0E, 0x59, 0x73, 0x0F, +0x00, 0x00, 0x59, 0xA7, 0xE5, 0x0F, 0x25, 0xE0, 0x24, 0xE4, 0xF5, 0x82, 0xE4, 0x34, 0x89, 0xF5, +0x83, 0x74, 0xF0, 0xF0, 0xA3, 0x74, 0x15, 0x80, 0x3C, 0xE5, 0x0F, 0x25, 0xE0, 0x24, 0xE4, 0xF5, +0x82, 0xE4, 0x34, 0x89, 0xF5, 0x83, 0x74, 0xF0, 0xF0, 0xA3, 0x74, 0x10, 0x80, 0x27, 0xE5, 0x0F, +0x25, 0xE0, 0x24, 0xE4, 0xF5, 0x82, 0xE4, 0x34, 0x89, 0xF5, 0x83, 0x74, 0xF0, 0xF0, 0xA3, 0x74, +0x05, 0x80, 0x12, 0xE5, 0x0F, 0x25, 0xE0, 0x24, 0xE4, 0xF5, 0x82, 0xE4, 0x34, 0x89, 0xF5, 0x83, +0x74, 0xF0, 0xF0, 0xA3, 0xE4, 0xF0, 0xE5, 0x0F, 0x25, 0xE0, 0x24, 0x81, 0xF5, 0x82, 0xE4, 0x34, +0x86, 0xF5, 0x83, 0x74, 0x0F, 0xF0, 0xA3, 0x74, 0x8F, 0xF0, 0x21, 0xA7, 0xE5, 0x0F, 0x25, 0xE0, +0x24, 0xE4, 0xF5, 0x82, 0xE4, 0x34, 0x89, 0xF5, 0x83, 0x74, 0x0F, 0xF0, 0xA3, 0x74, 0xF5, 0x80, +0x27, 0xE5, 0x0F, 0x25, 0xE0, 0x24, 0xE4, 0xF5, 0x82, 0xE4, 0x34, 0x89, 0xF5, 0x83, 0x74, 0x0F, +0xF0, 0xA3, 0x74, 0xF0, 0x80, 0x12, 0xE5, 0x0F, 0x25, 0xE0, 0x24, 0xE4, 0xF5, 0x82, 0xE4, 0x34, +0x89, 0xF5, 0x83, 0xE4, 0xF0, 0xA3, 0x74, 0x0D, 0xF0, 0xE5, 0x0F, 0x25, 0xE0, 0x24, 0x81, 0xF5, +0x82, 0xE4, 0x34, 0x86, 0xF5, 0x83, 0xE4, 0xF0, 0xA3, 0xF0, 0x21, 0xA7, 0x90, 0x04, 0x47, 0xE0, +0xAB, 0x12, 0xAA, 0x13, 0xA9, 0x14, 0x12, 0x42, 0x4D, 0x90, 0x04, 0x46, 0xE0, 0xAB, 0x12, 0xAA, +0x13, 0xA9, 0x14, 0x90, 0x00, 0x01, 0x12, 0x42, 0x5F, 0x90, 0x04, 0x45, 0xE0, 0x85, 0x11, 0x82, +0x85, 0x10, 0x83, 0xF0, 0x90, 0x04, 0x44, 0x21, 0x9E, 0x90, 0x04, 0x4B, 0xE0, 0xAB, 0x12, 0xAA, +0x13, 0xA9, 0x14, 0x12, 0x42, 0x4D, 0x90, 0x04, 0x4A, 0xE0, 0xAB, 0x12, 0xAA, 0x13, 0xA9, 0x14, +0x90, 0x00, 0x01, 0x12, 0x42, 0x5F, 0x90, 0x04, 0x49, 0xE0, 0x85, 0x11, 0x82, 0x85, 0x10, 0x83, +0xF0, 0x90, 0x04, 0x48, 0x80, 0x58, 0x90, 0x04, 0x4F, 0xE0, 0xAB, 0x12, 0xAA, 0x13, 0xA9, 0x14, +0x12, 0x42, 0x4D, 0x90, 0x04, 0x4E, 0xE0, 0xAB, 0x12, 0xAA, 0x13, 0xA9, 0x14, 0x90, 0x00, 0x01, +0x12, 0x42, 0x5F, 0x90, 0x04, 0x4D, 0xE0, 0x85, 0x11, 0x82, 0x85, 0x10, 0x83, 0xF0, 0x90, 0x04, +0x4C, 0x80, 0x2B, 0x90, 0x04, 0x53, 0xE0, 0xAB, 0x12, 0xAA, 0x13, 0xA9, 0x14, 0x12, 0x42, 0x4D, +0x90, 0x04, 0x52, 0xE0, 0xAB, 0x12, 0xAA, 0x13, 0xA9, 0x14, 0x90, 0x00, 0x01, 0x12, 0x42, 0x5F, +0x90, 0x04, 0x51, 0xE0, 0x85, 0x11, 0x82, 0x85, 0x10, 0x83, 0xF0, 0x90, 0x04, 0x50, 0xE0, 0x85, +0x11, 0x82, 0x85, 0x10, 0x83, 0xA3, 0xF0, 0xAB, 0x12, 0xAA, 0x13, 0xA9, 0x14, 0xC0, 0x03, 0xC0, +0x02, 0xC0, 0x01, 0x12, 0x29, 0xD9, 0xFF, 0xAB, 0x17, 0xAA, 0x18, 0xA9, 0x19, 0x12, 0x29, 0xD9, +0x5F, 0xD0, 0x01, 0xD0, 0x02, 0xD0, 0x03, 0x12, 0x42, 0x4D, 0xAB, 0x12, 0xE5, 0x14, 0x24, 0x01, +0xF9, 0xE4, 0x35, 0x13, 0xFA, 0xC0, 0x03, 0xC0, 0x02, 0xC0, 0x01, 0x12, 0x29, 0xD9, 0xFF, 0xAB, +0x17, 0xAA, 0x18, 0xA9, 0x19, 0x90, 0x00, 0x01, 0x12, 0x42, 0x20, 0x5F, 0xD0, 0x01, 0xD0, 0x02, +0xD0, 0x03, 0x12, 0x42, 0x4D, 0x85, 0x11, 0x82, 0x85, 0x10, 0x83, 0xC0, 0x83, 0xC0, 0x82, 0xE0, +0xFF, 0x85, 0x16, 0x82, 0x85, 0x15, 0x83, 0xE0, 0xFE, 0xEF, 0x5E, 0xD0, 0x82, 0xD0, 0x83, 0xF0, +0x85, 0x11, 0x82, 0x85, 0x10, 0x83, 0xA3, 0xC0, 0x83, 0xC0, 0x82, 0xE0, 0xFF, 0x85, 0x16, 0x82, +0x85, 0x15, 0x83, 0xA3, 0xE0, 0xFE, 0xEF, 0x5E, 0xD0, 0x82, 0xD0, 0x83, 0xF0, 0xE5, 0x0F, 0x25, +0xE0, 0x24, 0x81, 0xF5, 0x82, 0xE4, 0x34, 0x86, 0xF5, 0x83, 0xE0, 0xFE, 0xA3, 0xE0, 0x4E, 0x60, +0x4B, 0x90, 0x8A, 0xE6, 0x74, 0x0B, 0xF0, 0x90, 0x8A, 0xE6, 0xE0, 0xFF, 0xC3, 0x94, 0x00, 0x50, +0x02, 0x41, 0xEC, 0x74, 0x01, 0x7E, 0x00, 0xA8, 0x07, 0x08, 0x80, 0x05, 0xC3, 0x33, 0xCE, 0x33, +0xCE, 0xD8, 0xF9, 0xFF, 0xE5, 0x0F, 0x25, 0xE0, 0x24, 0x81, 0xF5, 0x82, 0xE4, 0x34, 0x86, 0xF5, +0x83, 0xE0, 0x5E, 0xFE, 0xA3, 0xE0, 0x5F, 0x4E, 0x60, 0x0A, 0x90, 0x8A, 0xE6, 0xE0, 0x24, 0x10, +0xA3, 0xF0, 0x80, 0x68, 0x90, 0x8A, 0xE6, 0xE0, 0x14, 0xF0, 0x80, 0xBB, 0xE5, 0x0F, 0x25, 0xE0, +0x24, 0xE4, 0xF5, 0x82, 0xE4, 0x34, 0x89, 0xF5, 0x83, 0xE0, 0xFE, 0xA3, 0xE0, 0x4E, 0x60, 0x47, +0x90, 0x8A, 0xE6, 0x74, 0x0F, 0xF0, 0x90, 0x8A, 0xE6, 0xE0, 0xFF, 0xC3, 0x94, 0x00, 0x40, 0x3C, +0x74, 0x01, 0x7E, 0x00, 0xA8, 0x07, 0x08, 0x80, 0x05, 0xC3, 0x33, 0xCE, 0x33, 0xCE, 0xD8, 0xF9, +0xFF, 0xE5, 0x0F, 0x25, 0xE0, 0x24, 0xE4, 0xF5, 0x82, 0xE4, 0x34, 0x89, 0xF5, 0x83, 0xE0, 0x5E, +0xFE, 0xA3, 0xE0, 0x5F, 0x4E, 0x60, 0x08, 0x90, 0x8A, 0xE6, 0xE0, 0xA3, 0xF0, 0x80, 0x0D, 0x90, +0x8A, 0xE6, 0xE0, 0x14, 0xF0, 0x80, 0xBF, 0xE4, 0x90, 0x8A, 0xE7, 0xF0, 0xE5, 0x0F, 0x25, 0xE0, +0x24, 0xE4, 0xF5, 0x82, 0xE4, 0x34, 0x89, 0xF5, 0x83, 0xE0, 0xFE, 0xA3, 0xE0, 0x4E, 0x60, 0x46, +0xE4, 0x90, 0x8A, 0xE6, 0xF0, 0x90, 0x8A, 0xE6, 0xE0, 0xFF, 0xC3, 0x94, 0x10, 0x40, 0x02, 0x61, +0xA5, 0x74, 0x01, 0x7E, 0x00, 0xA8, 0x07, 0x08, 0x80, 0x05, 0xC3, 0x33, 0xCE, 0x33, 0xCE, 0xD8, +0xF9, 0xFF, 0xE5, 0x0F, 0x25, 0xE0, 0x24, 0xE4, 0xF5, 0x82, 0xE4, 0x34, 0x89, 0xF5, 0x83, 0xE0, +0x5E, 0xFE, 0xA3, 0xE0, 0x5F, 0x4E, 0x60, 0x06, 0x90, 0x8A, 0xE6, 0xE0, 0x80, 0x63, 0x90, 0x8A, +0xE6, 0xE0, 0x04, 0xF0, 0x80, 0xBF, 0xE5, 0x0F, 0x25, 0xE0, 0x24, 0x81, 0xF5, 0x82, 0xE4, 0x34, +0x86, 0xF5, 0x83, 0xE0, 0xFE, 0xA3, 0xE0, 0x4E, 0x60, 0x46, 0xE4, 0x90, 0x8A, 0xE6, 0xF0, 0x90, +0x8A, 0xE6, 0xE0, 0xFF, 0xC3, 0x94, 0x0C, 0x50, 0x3C, 0x74, 0x01, 0x7E, 0x00, 0xA8, 0x07, 0x08, +0x80, 0x05, 0xC3, 0x33, 0xCE, 0x33, 0xCE, 0xD8, 0xF9, 0xFF, 0xE5, 0x0F, 0x25, 0xE0, 0x24, 0x81, +0xF5, 0x82, 0xE4, 0x34, 0x86, 0xF5, 0x83, 0xE0, 0x5E, 0xFE, 0xA3, 0xE0, 0x5F, 0x4E, 0x60, 0x08, +0x90, 0x8A, 0xE6, 0xE0, 0x24, 0x10, 0x80, 0x09, 0x90, 0x8A, 0xE6, 0xE0, 0x04, 0xF0, 0x80, 0xBF, +0xE4, 0x90, 0x8A, 0xE8, 0xF0, 0x90, 0x8A, 0xE7, 0xE0, 0xFF, 0x75, 0xF0, 0x09, 0xE5, 0x0F, 0x90, +0x87, 0x27, 0x12, 0x43, 0x5F, 0xEF, 0xF0, 0x90, 0x8A, 0xE8, 0xE0, 0xFE, 0x75, 0xF0, 0x09, 0xE5, +0x0F, 0x90, 0x87, 0x28, 0x12, 0x43, 0x5F, 0xEE, 0xF0, 0xE5, 0x0F, 0xC3, 0x94, 0x20, 0x50, 0x32, +0x74, 0x84, 0x25, 0x0F, 0xF5, 0x82, 0xE4, 0x34, 0x04, 0xF5, 0x83, 0xE0, 0xD3, 0x9F, 0x40, 0x02, +0x80, 0x18, 0x74, 0x84, 0x25, 0x0F, 0xF5, 0x82, 0xE4, 0x34, 0x04, 0xF5, 0x83, 0xE0, 0xC3, 0x9E, +0x50, 0x08, 0x90, 0x8A, 0xE8, 0xE0, 0xA3, 0xF0, 0x80, 0x08, 0x90, 0x8A, 0xE7, 0xE0, 0x90, 0x8A, +0xE9, 0xF0, 0x90, 0x8A, 0xE9, 0xE0, 0xFD, 0xAF, 0x0F, 0x91, 0x4E, 0x90, 0x8A, 0xE9, 0xE0, 0xFF, +0x74, 0x84, 0x25, 0x0F, 0xF5, 0x82, 0xE4, 0x34, 0x8A, 0xF5, 0x83, 0xEF, 0xF0, 0x90, 0x8A, 0xE7, +0xE0, 0xFF, 0xD3, 0x94, 0x13, 0x40, 0x07, 0x90, 0x87, 0x22, 0x74, 0x03, 0xF0, 0x22, 0xEF, 0xD3, +0x94, 0x0B, 0x40, 0x07, 0x90, 0x87, 0x22, 0x74, 0x02, 0xF0, 0x22, 0xEF, 0xD3, 0x94, 0x03, 0x40, +0x07, 0x90, 0x87, 0x22, 0x74, 0x01, 0xF0, 0x22, 0xE4, 0x90, 0x87, 0x22, 0xF0, 0x22, 0xD3, 0x10, +0xAF, 0x01, 0xC3, 0xC0, 0xD0, 0x74, 0x84, 0x2F, 0xF5, 0x82, 0xE4, 0x34, 0x04, 0xF5, 0x83, 0xED, +0xF0, 0xD0, 0xD0, 0x92, 0xAF, 0x22, 0xAC, 0x07, 0xED, 0x54, 0x1F, 0x90, 0x8A, 0xC7, 0xF0, 0x74, +0x01, 0x2C, 0xF5, 0x82, 0xE4, 0x34, 0x86, 0xF5, 0x83, 0xE0, 0x90, 0x8A, 0xC5, 0xF0, 0x90, 0x8A, +0xC8, 0x74, 0x01, 0xF0, 0xEB, 0xC3, 0x94, 0x01, 0x40, 0x02, 0x80, 0x37, 0x90, 0x8A, 0xC5, 0xE0, +0x25, 0x0D, 0xFF, 0xA3, 0xF0, 0xA3, 0xE0, 0x90, 0x41, 0x9E, 0x93, 0xFE, 0xEF, 0xD3, 0x9E, 0x40, +0x10, 0x74, 0x01, 0x2C, 0xF5, 0x82, 0xE4, 0x34, 0x86, 0xF5, 0x83, 0xE4, 0xF0, 0xAF, 0x04, 0x80, +0x9D, 0x90, 0x8A, 0xC6, 0xE0, 0xFF, 0x74, 0x01, 0x2C, 0xF5, 0x82, 0xE4, 0x34, 0x86, 0xF5, 0x83, +0xEF, 0xF0, 0x22, 0xAD, 0x07, 0x75, 0xF0, 0x09, 0xED, 0x90, 0x87, 0x27, 0x12, 0x43, 0x5F, 0xE0, +0xFF, 0x90, 0x8A, 0xCA, 0xF0, 0x74, 0xA5, 0x2D, 0xF5, 0x82, 0xE4, 0x34, 0x8A, 0xF5, 0x83, 0xE0, +0x54, 0x1F, 0x90, 0x8A, 0xC9, 0xF0, 0xD3, 0x9F, 0x40, 0x06, 0xA3, 0xE0, 0x90, 0x8A, 0xC9, 0xF0, +0x90, 0x8A, 0xC9, 0xE0, 0xFF, 0x25, 0xE0, 0x24, 0x66, 0xF5, 0x82, 0xE4, 0x34, 0x41, 0xF5, 0x83, +0xE4, 0x93, 0xFA, 0x74, 0x01, 0x93, 0xFB, 0xEF, 0x25, 0xE0, 0x24, 0x2E, 0xF5, 0x82, 0xE4, 0x34, +0x41, 0xF5, 0x83, 0x74, 0x01, 0x93, 0x2B, 0xFF, 0xE4, 0x93, 0x3A, 0xC3, 0x13, 0xFE, 0xEF, 0x13, +0xFF, 0xED, 0x25, 0xE0, 0x24, 0xE1, 0xF5, 0x82, 0xE4, 0x34, 0x86, 0xF5, 0x83, 0xEE, 0xF0, 0xA3, +0xEF, 0xF0, 0xAF, 0x05, 0x90, 0x8A, 0xC9, 0xE0, 0xFD, 0x91, 0x4E, 0x90, 0x8A, 0xC9, 0xE0, 0xFF, +0x22, 0xAC, 0x07, 0x74, 0x84, 0x2C, 0xF5, 0x82, 0xE4, 0x34, 0x04, 0xF5, 0x83, 0xE0, 0x54, 0x7F, +0x90, 0x8A, 0xDE, 0xF0, 0xE0, 0x54, 0x1F, 0xFF, 0x90, 0x8A, 0xE1, 0xF0, 0x75, 0xF0, 0x09, 0xEC, +0x90, 0x87, 0x28, 0x12, 0x43, 0x5F, 0xE0, 0x90, 0x8A, 0xE3, 0xF0, 0x75, 0xF0, 0x09, 0xEC, 0x90, +0x87, 0x27, 0x12, 0x43, 0x5F, 0xE0, 0xFE, 0x90, 0x8A, 0xE4, 0xF0, 0xEC, 0x25, 0xE0, 0x24, 0xE4, +0xF5, 0x82, 0xE4, 0x34, 0x89, 0xF5, 0x83, 0xE0, 0xFB, 0xA3, 0xE0, 0x90, 0x8A, 0xE5, 0xCB, 0xF0, +0xA3, 0xEB, 0xF0, 0xEC, 0x25, 0xE0, 0x24, 0x81, 0xF5, 0x82, 0xE4, 0x34, 0x86, 0xF5, 0x83, 0xE0, +0xFB, 0xA3, 0xE0, 0x90, 0x8A, 0xE7, 0xCB, 0xF0, 0xA3, 0xEB, 0xF0, 0xEF, 0xD3, 0x9E, 0x40, 0x0C, +0x90, 0x8A, 0xE4, 0xE0, 0x90, 0x8A, 0xE1, 0xF0, 0x90, 0x8A, 0xDE, 0xF0, 0xED, 0x70, 0x02, 0xC1, +0x93, 0x90, 0x8A, 0xE2, 0xED, 0xF0, 0x90, 0x8A, 0xDE, 0xE0, 0x30, 0xE6, 0x0E, 0x90, 0x8A, 0xE1, +0xE0, 0x90, 0x8A, 0xDE, 0xF0, 0x90, 0x8A, 0xE2, 0xE0, 0x14, 0xF0, 0x90, 0x8A, 0xE2, 0xE0, 0x70, +0x02, 0xC1, 0x93, 0x90, 0x8A, 0xE1, 0xE0, 0xFF, 0xD3, 0x94, 0x00, 0x50, 0x02, 0xC1, 0x93, 0xE4, +0x90, 0x8A, 0xE0, 0xF0, 0xEF, 0x14, 0x90, 0x8A, 0xDF, 0xF0, 0x90, 0x8A, 0xE3, 0xE0, 0xFD, 0x90, +0x8A, 0xDF, 0xE0, 0xFF, 0xD3, 0x9D, 0x40, 0x6F, 0xEF, 0x94, 0x10, 0x40, 0x21, 0xEF, 0x24, 0xF0, +0xFF, 0x74, 0x01, 0x7E, 0x00, 0xA8, 0x07, 0x08, 0x80, 0x05, 0xC3, 0x33, 0xCE, 0x33, 0xCE, 0xD8, +0xF9, 0xFF, 0x90, 0x8A, 0xE7, 0xE0, 0x5E, 0xFE, 0xA3, 0xE0, 0x5F, 0x4E, 0x70, 0x27, 0x90, 0x8A, +0xDF, 0xE0, 0xFF, 0xC3, 0x94, 0x10, 0x50, 0x37, 0x74, 0x01, 0x7E, 0x00, 0xA8, 0x07, 0x08, 0x80, +0x05, 0xC3, 0x33, 0xCE, 0x33, 0xCE, 0xD8, 0xF9, 0xFF, 0x90, 0x8A, 0xE5, 0xE0, 0x5E, 0xFE, 0xA3, +0xE0, 0x5F, 0x4E, 0x60, 0x1A, 0x90, 0x8A, 0xDF, 0xE0, 0x90, 0x8A, 0xDE, 0xF0, 0x90, 0x8A, 0xE0, +0xE0, 0x04, 0xF0, 0x90, 0x8A, 0xE2, 0xE0, 0xFF, 0x90, 0x8A, 0xE0, 0xE0, 0x6F, 0x60, 0x08, 0x90, +0x8A, 0xDF, 0xE0, 0x14, 0xF0, 0x80, 0x83, 0x90, 0x8A, 0xE2, 0xE0, 0xFF, 0x90, 0x8A, 0xE0, 0xE0, +0xC3, 0x9F, 0x50, 0x0F, 0x90, 0x8A, 0xDF, 0xE0, 0xB5, 0x05, 0x08, 0x90, 0x8A, 0xE3, 0xE0, 0x90, +0x8A, 0xDE, 0xF0, 0x90, 0x8A, 0xDE, 0xE0, 0xFF, 0x25, 0xE0, 0x24, 0x66, 0xF5, 0x82, 0xE4, 0x34, +0x41, 0xF5, 0x83, 0xE4, 0x93, 0xFA, 0x74, 0x01, 0x93, 0xFB, 0xEF, 0x25, 0xE0, 0x24, 0x2E, 0xF5, +0x82, 0xE4, 0x34, 0x41, 0xF5, 0x83, 0x74, 0x01, 0x93, 0x2B, 0xFF, 0xE4, 0x93, 0x3A, 0xC3, 0x13, +0xFE, 0xEF, 0x13, 0xFF, 0xEC, 0x25, 0xE0, 0x24, 0xE1, 0xF5, 0x82, 0xE4, 0x34, 0x86, 0xF5, 0x83, +0xEE, 0xF0, 0xA3, 0xEF, 0xF0, 0xAF, 0x04, 0x90, 0x8A, 0xDE, 0xE0, 0xFD, 0x91, 0x4E, 0x90, 0x8A, +0xDE, 0xE0, 0xFF, 0x22, 0xD3, 0x10, 0xAF, 0x01, 0xC3, 0xC0, 0xD0, 0x8B, 0x1A, 0x8A, 0x1B, 0x89, +0x1C, 0x90, 0x8B, 0x3F, 0x12, 0x43, 0x8B, 0xAB, 0x1D, 0xAA, 0x1E, 0xA9, 0x1F, 0x90, 0x8B, 0x42, +0x12, 0x43, 0x8B, 0xAF, 0x20, 0x15, 0x20, 0xEF, 0x60, 0x1E, 0x90, 0x8B, 0x42, 0xE4, 0x75, 0xF0, +0x01, 0x12, 0x43, 0x74, 0x12, 0x29, 0xD9, 0xFF, 0x90, 0x8B, 0x3F, 0xE4, 0x75, 0xF0, 0x01, 0x12, +0x43, 0x74, 0xEF, 0x12, 0x42, 0x4D, 0x80, 0xDB, 0xAB, 0x1A, 0xAA, 0x1B, 0xA9, 0x1C, 0xD0, 0xD0, +0x92, 0xAF, 0x22, 0xD3, 0x10, 0xAF, 0x01, 0xC3, 0xC0, 0xD0, 0x90, 0x8B, 0x45, 0x12, 0x43, 0x8B, +0x90, 0x8B, 0x53, 0xE0, 0xFF, 0x04, 0xF0, 0x90, 0x00, 0x01, 0xEF, 0x12, 0x42, 0x5F, 0x7F, 0xAF, +0x7E, 0x01, 0x12, 0x74, 0x3B, 0xEF, 0x60, 0x47, 0x90, 0x8B, 0x45, 0x12, 0x43, 0x6B, 0x8B, 0x1D, +0x8A, 0x1E, 0x89, 0x1F, 0x75, 0x20, 0x02, 0x7B, 0x01, 0x7A, 0x01, 0x79, 0xA0, 0xD1, 0xE4, 0x90, +0x8B, 0x48, 0x12, 0x43, 0x6B, 0x8B, 0x1D, 0x8A, 0x1E, 0x89, 0x1F, 0x90, 0x8B, 0x45, 0x12, 0x43, +0x6B, 0x12, 0x29, 0xD9, 0xFF, 0xC4, 0x54, 0x0F, 0xF5, 0x20, 0x7B, 0x01, 0x7A, 0x01, 0x79, 0xA2, +0xD1, 0xE4, 0x90, 0x01, 0xAF, 0x74, 0xFF, 0xF0, 0x90, 0x01, 0xCB, 0xE0, 0x64, 0x80, 0xF0, 0xD0, +0xD0, 0x92, 0xAF, 0x22, 0x90, 0x8A, 0xC5, 0xE0, 0x54, 0xF0, 0x44, 0x03, 0xF0, 0x54, 0x0F, 0x44, +0x80, 0xF0, 0x7B, 0x00, 0x7A, 0x00, 0x79, 0x56, 0x90, 0x8B, 0x48, 0x12, 0x43, 0x8B, 0x0B, 0x7A, +0x8A, 0x79, 0xC5, 0xE1, 0x33, 0xD3, 0x10, 0xAF, 0x01, 0xC3, 0xC0, 0xD0, 0x90, 0x01, 0xC4, 0x74, +0xC5, 0xF0, 0x74, 0x5F, 0xA3, 0xF0, 0x90, 0x04, 0x1D, 0xE0, 0x60, 0x1A, 0x90, 0x05, 0x22, 0xE0, +0x54, 0x90, 0x60, 0x07, 0x90, 0x01, 0xC6, 0xE0, 0x44, 0x40, 0xF0, 0x90, 0x01, 0xC7, 0xE0, 0x30, +0xE1, 0xE4, 0x7F, 0x00, 0x80, 0x02, 0x7F, 0x01, 0xD0, 0xD0, 0x92, 0xAF, 0x22, 0xD3, 0x10, 0xAF, +0x01, 0xC3, 0xC0, 0xD0, 0xE4, 0xFB, 0xFA, 0xEF, 0x30, 0xE0, 0x02, 0x7B, 0x80, 0xEF, 0xC3, 0x13, +0x90, 0xFD, 0x10, 0xF0, 0x90, 0x04, 0x25, 0xEF, 0xF0, 0xED, 0x60, 0x1E, 0xAF, 0x03, 0x74, 0x0F, +0x2F, 0xF5, 0x82, 0xE4, 0x34, 0xFC, 0xF5, 0x83, 0xE0, 0x44, 0x80, 0xF0, 0x74, 0x10, 0x2F, 0xF5, +0x82, 0xE4, 0x34, 0xFC, 0xF5, 0x83, 0xE0, 0x44, 0x80, 0xF0, 0xAF, 0x03, 0x74, 0x08, 0x2F, 0xF5, +0x82, 0xE4, 0x34, 0xFC, 0xF5, 0x83, 0xE4, 0xF0, 0x74, 0x09, 0x2F, 0xF5, 0x82, 0xE4, 0x34, 0xFC, +0xF5, 0x83, 0xE0, 0x54, 0xF0, 0xF0, 0x74, 0x21, 0x2B, 0xF5, 0x82, 0xE4, 0x34, 0xFC, 0xF5, 0x83, +0xE0, 0x54, 0xF7, 0xF0, 0xAE, 0x02, 0xAF, 0x03, 0xD0, 0xD0, 0x92, 0xAF, 0x22, 0x12, 0x5F, 0xC5, +0xBF, 0x01, 0x10, 0x90, 0x02, 0x09, 0xE0, 0xFF, 0x7D, 0x01, 0x12, 0x5F, 0xFD, 0x90, 0x04, 0x1F, +0x74, 0x20, 0xF0, 0x22, 0x90, 0x01, 0x02, 0xE0, 0x54, 0x03, 0xFF, 0xE0, 0x54, 0x0C, 0x13, 0x13, +0x54, 0x3F, 0xFE, 0xEF, 0x64, 0x01, 0x60, 0x04, 0xEF, 0xB4, 0x03, 0x0E, 0x90, 0x8A, 0xC5, 0x74, +0x01, 0xF0, 0xA3, 0x74, 0x37, 0xF0, 0x79, 0x01, 0x80, 0x18, 0xEE, 0x64, 0x01, 0x60, 0x07, 0xAF, +0x06, 0xEE, 0x64, 0x03, 0x70, 0x3B, 0x90, 0x8A, 0xC5, 0x74, 0x01, 0xF0, 0xA3, 0x74, 0x3D, 0xF0, +0x79, 0x40, 0x90, 0x8A, 0xC5, 0xE0, 0xFE, 0xA3, 0xE0, 0xFF, 0xF5, 0x82, 0x8E, 0x83, 0xE0, 0x59, +0x60, 0x08, 0xE9, 0xF0, 0xE4, 0x90, 0x8A, 0xF6, 0xF0, 0x22, 0x90, 0x8A, 0xF6, 0xE0, 0x04, 0xF0, +0xE0, 0xC3, 0x94, 0x0A, 0x40, 0x0B, 0xE4, 0xF0, 0x90, 0x04, 0x19, 0xE0, 0x30, 0xE0, 0x02, 0x11, +0x6D, 0x22, 0xC0, 0xE0, 0xC0, 0xF0, 0xC0, 0x83, 0xC0, 0x82, 0xC0, 0xD0, 0x75, 0xD0, 0x00, 0xC0, +0x00, 0xC0, 0x01, 0xC0, 0x02, 0xC0, 0x03, 0xC0, 0x04, 0xC0, 0x05, 0xC0, 0x06, 0xC0, 0x07, 0x90, +0x01, 0xC4, 0x74, 0xF2, 0xF0, 0x74, 0x60, 0xA3, 0xF0, 0x90, 0x01, 0x34, 0xE0, 0x55, 0x28, 0xF5, +0x2C, 0xA3, 0xE0, 0x55, 0x29, 0xF5, 0x2D, 0xA3, 0xE0, 0x55, 0x2A, 0xF5, 0x2E, 0xA3, 0xE0, 0x55, +0x2B, 0xF5, 0x2F, 0xE5, 0x2C, 0x20, 0xE0, 0x02, 0x41, 0x89, 0x90, 0x01, 0x34, 0x74, 0x01, 0xF0, +0x85, 0xD1, 0x4D, 0x85, 0xD2, 0x4E, 0x85, 0xD3, 0x4F, 0x85, 0xD4, 0x50, 0x85, 0xD5, 0x51, 0x85, +0xD6, 0x52, 0x85, 0xD7, 0x53, 0x85, 0xD9, 0x54, 0xE5, 0x54, 0x54, 0x40, 0xC3, 0x13, 0xFF, 0xE5, +0x53, 0x54, 0x20, 0x6F, 0x70, 0x02, 0x41, 0x46, 0xE5, 0x54, 0x30, 0xE5, 0x02, 0x41, 0x46, 0xE5, +0x52, 0x54, 0x1F, 0xF5, 0x08, 0xE5, 0x4D, 0x54, 0x3F, 0xF5, 0x09, 0xE5, 0x51, 0x54, 0x1F, 0xFF, +0xE5, 0x08, 0x25, 0xE0, 0x24, 0xE3, 0xF5, 0x82, 0xE4, 0x34, 0x88, 0xF5, 0x83, 0xE4, 0x8F, 0xF0, +0x12, 0x42, 0x81, 0xE5, 0x53, 0x54, 0x1F, 0xFF, 0xE5, 0x08, 0x25, 0xE0, 0x24, 0xC0, 0xF5, 0x82, +0xE4, 0x34, 0x85, 0xF5, 0x83, 0xE4, 0x8F, 0xF0, 0x12, 0x42, 0x81, 0xE5, 0x09, 0xD3, 0x94, 0x04, +0x40, 0x03, 0x75, 0x09, 0x04, 0x75, 0xF0, 0x0A, 0xE5, 0x08, 0x90, 0x84, 0x00, 0x12, 0x43, 0x5F, +0x75, 0xF0, 0x02, 0xE5, 0x09, 0x12, 0x43, 0x5F, 0xE0, 0xFE, 0xA3, 0xE0, 0xFF, 0xE5, 0x53, 0x54, +0x1F, 0x2F, 0xFF, 0xE4, 0x3E, 0xFE, 0x75, 0xF0, 0x0A, 0xE5, 0x08, 0x90, 0x84, 0x00, 0x12, 0x43, +0x5F, 0x75, 0xF0, 0x02, 0xE5, 0x09, 0x12, 0x43, 0x5F, 0xEE, 0xF0, 0xA3, 0xEF, 0xF0, 0xE5, 0x54, +0x20, 0xE6, 0x24, 0xE5, 0x53, 0x54, 0x1F, 0xFF, 0xE5, 0x08, 0x25, 0xE0, 0x24, 0x63, 0xF5, 0x82, +0xE4, 0x34, 0x88, 0xF5, 0x83, 0xE4, 0x8F, 0xF0, 0x12, 0x42, 0x81, 0xE5, 0x4F, 0x30, 0xE7, 0x36, +0xAF, 0x08, 0x12, 0x5C, 0xC3, 0x80, 0x2F, 0xE5, 0x53, 0x54, 0x1F, 0xFF, 0xE5, 0x08, 0x25, 0xE0, +0x24, 0xA3, 0xF5, 0x82, 0xE4, 0x34, 0x88, 0xF5, 0x83, 0xE4, 0x8F, 0xF0, 0x12, 0x42, 0x81, 0xE5, +0x4F, 0x30, 0xE7, 0x12, 0xE5, 0x4F, 0x54, 0x7F, 0xFD, 0xE5, 0x53, 0x54, 0x1F, 0xF5, 0x0D, 0xAB, +0x09, 0xAF, 0x08, 0x12, 0x5C, 0x66, 0xE5, 0x24, 0x14, 0x24, 0xFD, 0x50, 0x02, 0x80, 0x3A, 0x90, +0x8B, 0x1A, 0xE0, 0x60, 0x2B, 0x90, 0x01, 0x5B, 0xE4, 0xF0, 0x90, 0x01, 0x3C, 0x74, 0x04, 0xF0, +0x12, 0x4B, 0x34, 0xEF, 0x64, 0x01, 0x70, 0x21, 0x90, 0x8B, 0x3D, 0x12, 0x4B, 0x5C, 0x90, 0x01, +0x5B, 0x74, 0x05, 0xF0, 0x90, 0x06, 0x92, 0x74, 0x01, 0xF0, 0x90, 0x8B, 0x18, 0xF0, 0x80, 0x09, +0x12, 0x4B, 0x34, 0xBF, 0x01, 0x03, 0x12, 0x4A, 0xFC, 0xE5, 0x2C, 0x30, 0xE1, 0x21, 0x90, 0x01, +0x34, 0x74, 0x02, 0xF0, 0x85, 0xD1, 0x56, 0x85, 0xD2, 0x57, 0x85, 0xD3, 0x58, 0x85, 0xD4, 0x59, +0x85, 0xD5, 0x5A, 0x85, 0xD6, 0x5B, 0x85, 0xD7, 0x5C, 0x85, 0xD9, 0x5D, 0x12, 0x5F, 0xA4, 0xE5, +0x2C, 0x30, 0xE3, 0x06, 0x90, 0x01, 0x34, 0x74, 0x08, 0xF0, 0xE5, 0x2C, 0x30, 0xE4, 0x09, 0x90, +0x01, 0x34, 0x74, 0x10, 0xF0, 0x43, 0x55, 0x10, 0xE5, 0x2C, 0x30, 0xE5, 0x26, 0x90, 0x01, 0xCF, +0xE0, 0x30, 0xE5, 0x1F, 0xE0, 0x54, 0xDF, 0xF0, 0x90, 0x01, 0x34, 0x74, 0x20, 0xF0, 0x75, 0xA8, +0x00, 0x75, 0xE8, 0x00, 0x12, 0x51, 0x9D, 0x90, 0x00, 0x03, 0xE0, 0x54, 0xFB, 0xF0, 0x12, 0x52, +0x0E, 0x80, 0xFE, 0xE5, 0x2C, 0x30, 0xE6, 0x2D, 0x90, 0x01, 0x34, 0x74, 0x40, 0xF0, 0x90, 0x8B, +0x32, 0xE0, 0x30, 0xE0, 0x0C, 0x13, 0x13, 0x54, 0x3F, 0x30, 0xE0, 0x05, 0x90, 0x8B, 0x34, 0xE4, +0xF0, 0x90, 0x8B, 0x2C, 0xE0, 0xFF, 0x30, 0xE0, 0x0C, 0x13, 0x13, 0x54, 0x3F, 0x30, 0xE0, 0x05, +0x90, 0x8B, 0x2E, 0xE4, 0xF0, 0xE5, 0x2E, 0x20, 0xE0, 0x02, 0x61, 0xE6, 0x90, 0x8B, 0x08, 0x74, +0x01, 0xF0, 0x90, 0x01, 0x36, 0xF0, 0x90, 0x8B, 0x06, 0xE0, 0x60, 0x0F, 0xE4, 0xF0, 0x90, 0x05, +0x53, 0xE0, 0x44, 0x02, 0xF0, 0x90, 0x05, 0xFC, 0xE0, 0x04, 0xF0, 0x90, 0x8B, 0x32, 0xE0, 0x30, +0xE0, 0x2F, 0x90, 0x8B, 0x37, 0x74, 0x01, 0xF0, 0x90, 0x8B, 0x32, 0xE0, 0xFF, 0x13, 0x13, 0x54, +0x3F, 0x30, 0xE0, 0x1D, 0x90, 0x8B, 0x34, 0x74, 0x01, 0xF0, 0xB1, 0x39, 0x90, 0x8B, 0x33, 0xE0, +0x64, 0x03, 0x60, 0x0D, 0x7F, 0x01, 0x12, 0x4D, 0xE0, 0xEF, 0x60, 0x05, 0x7F, 0x04, 0x12, 0x4E, +0x89, 0x90, 0x8B, 0x2C, 0xE0, 0xFF, 0x30, 0xE0, 0x55, 0x13, 0x13, 0x54, 0x3F, 0x30, 0xE0, 0x4E, +0x90, 0x8B, 0x2E, 0x74, 0x01, 0xF0, 0xB1, 0x39, 0xE4, 0xFF, 0x12, 0x4D, 0xE0, 0xEF, 0x60, 0x3E, +0xB1, 0x5F, 0x90, 0x05, 0x22, 0x74, 0xFF, 0xF0, 0x90, 0x8B, 0x2D, 0xE0, 0xFF, 0x64, 0x06, 0x60, +0x2D, 0xEF, 0xB4, 0x04, 0x02, 0x80, 0x07, 0x90, 0x8B, 0x2D, 0xE0, 0xB4, 0x05, 0x04, 0xE4, 0xFF, +0x80, 0x14, 0x90, 0x8B, 0x2D, 0xE0, 0xB4, 0x03, 0x04, 0x7F, 0x01, 0x80, 0x09, 0x90, 0x8B, 0x2D, +0xE0, 0xB4, 0x02, 0x04, 0x7F, 0x01, 0xB1, 0x82, 0x90, 0x05, 0x22, 0x74, 0xFF, 0xF0, 0x12, 0x43, +0xE7, 0x90, 0x8B, 0x08, 0xE4, 0xF0, 0xE5, 0x2E, 0x30, 0xE1, 0x2F, 0x90, 0x01, 0x36, 0x74, 0x02, +0xF0, 0x43, 0x55, 0x40, 0x11, 0x84, 0x90, 0x8B, 0x37, 0xE0, 0xB4, 0x01, 0x09, 0x90, 0x05, 0x22, +0xE4, 0xF0, 0x90, 0x8B, 0x37, 0xF0, 0x90, 0x8B, 0x2C, 0xE0, 0x30, 0xE0, 0x0D, 0xE4, 0xFF, 0x12, +0x4D, 0xE0, 0xEF, 0x60, 0x05, 0x90, 0x05, 0x22, 0xE4, 0xF0, 0xE5, 0x2E, 0x30, 0xE2, 0x16, 0x90, +0x01, 0x36, 0x74, 0x04, 0xF0, 0x90, 0x8B, 0x2C, 0xE0, 0x30, 0xE0, 0x06, 0xA3, 0xE0, 0x64, 0x06, +0x60, 0x03, 0x12, 0x46, 0xB3, 0xE5, 0x2E, 0x30, 0xE3, 0x38, 0x90, 0x01, 0x36, 0x74, 0x08, 0xF0, +0xE5, 0x21, 0x64, 0x01, 0x70, 0x2C, 0xE5, 0x24, 0x60, 0x28, 0x90, 0x01, 0x57, 0xE4, 0xF0, 0x90, +0x01, 0x3C, 0x74, 0x02, 0xF0, 0x90, 0x8B, 0x3D, 0xE4, 0xF0, 0x90, 0x8B, 0x11, 0xE0, 0x90, 0x8B, +0x3E, 0xF0, 0xE4, 0xFB, 0xFD, 0x7F, 0x54, 0x7E, 0x01, 0x12, 0x4B, 0x6C, 0x90, 0x01, 0x57, 0x74, +0x05, 0xF0, 0xE5, 0x2E, 0x30, 0xE4, 0x2B, 0x90, 0x01, 0x36, 0x74, 0x10, 0xF0, 0xE5, 0x21, 0xB4, +0x01, 0x20, 0xE5, 0x24, 0x60, 0x1C, 0x90, 0x01, 0x57, 0xE4, 0xF0, 0x90, 0x01, 0x3C, 0x74, 0x02, +0xF0, 0x90, 0x8B, 0x1B, 0xE4, 0xF0, 0x53, 0x25, 0xFD, 0xE5, 0x25, 0x54, 0x07, 0x70, 0x03, 0x12, +0x4A, 0xFC, 0xE5, 0x2E, 0x30, 0xE5, 0x1F, 0x90, 0x01, 0x36, 0x74, 0x20, 0xF0, 0xE5, 0x21, 0xB4, +0x01, 0x14, 0xE5, 0x24, 0x60, 0x10, 0x90, 0x8B, 0x1A, 0xE0, 0x64, 0x02, 0x60, 0x05, 0x12, 0x4A, +0x97, 0x80, 0x03, 0x12, 0x49, 0x49, 0xE5, 0x2E, 0x30, 0xE6, 0x1B, 0x90, 0x01, 0x36, 0x74, 0x40, +0xF0, 0xE5, 0x21, 0xB4, 0x01, 0x10, 0xE5, 0x24, 0x60, 0x0C, 0x53, 0x25, 0xFE, 0xE5, 0x25, 0x54, +0x07, 0x70, 0x03, 0x12, 0x4A, 0xFC, 0xE5, 0x2F, 0x30, 0xE1, 0x28, 0x90, 0x01, 0x37, 0x74, 0x02, +0xF0, 0x90, 0x8B, 0x2C, 0xE0, 0x30, 0xE0, 0x18, 0xE4, 0xFF, 0x12, 0x4D, 0xE0, 0xEF, 0x60, 0x08, +0x12, 0x48, 0xFE, 0x12, 0x7D, 0xC1, 0x80, 0x0B, 0x90, 0x8B, 0x31, 0x74, 0x01, 0xF0, 0x80, 0x03, +0x12, 0x48, 0xFE, 0x74, 0xF2, 0x04, 0x90, 0x01, 0xC4, 0xF0, 0x74, 0x60, 0xA3, 0xF0, 0xD0, 0x07, +0xD0, 0x06, 0xD0, 0x05, 0xD0, 0x04, 0xD0, 0x03, 0xD0, 0x02, 0xD0, 0x01, 0xD0, 0x00, 0xD0, 0xD0, +0xD0, 0x82, 0xD0, 0x83, 0xD0, 0xF0, 0xD0, 0xE0, 0x32, 0xE4, 0x90, 0x8B, 0x3D, 0xF0, 0x90, 0x05, +0x58, 0xE0, 0xFF, 0x90, 0x8B, 0x38, 0xE0, 0x2F, 0x24, 0xFE, 0x90, 0x8B, 0x3E, 0xF0, 0xE4, 0xFB, +0xFD, 0x7F, 0x50, 0x7E, 0x01, 0x12, 0x4B, 0x6C, 0x90, 0x01, 0x53, 0x74, 0x05, 0xF0, 0x22, 0x90, +0x8B, 0x2C, 0xE0, 0xFF, 0xC4, 0x13, 0x13, 0x54, 0x03, 0x30, 0xE0, 0x0A, 0xA3, 0xE0, 0x64, 0x06, +0x60, 0x04, 0x7F, 0x06, 0xB1, 0x82, 0x90, 0x8B, 0x2D, 0xE0, 0x64, 0x06, 0x60, 0x03, 0x12, 0x78, +0x35, 0x22, 0xD3, 0x10, 0xAF, 0x01, 0xC3, 0xC0, 0xD0, 0x90, 0x8B, 0x2D, 0xE0, 0xFE, 0x6F, 0x70, +0x02, 0xE1, 0x4E, 0xEF, 0x12, 0x43, 0x94, 0x65, 0xB0, 0x00, 0x65, 0xEA, 0x01, 0x66, 0x30, 0x02, +0x66, 0x6A, 0x03, 0x66, 0xA2, 0x04, 0x66, 0xDB, 0x05, 0x67, 0x16, 0x06, 0x00, 0x00, 0x67, 0x4E, +0xEE, 0xB4, 0x04, 0x06, 0x7F, 0x01, 0xF1, 0x81, 0xE1, 0x4E, 0x90, 0x8B, 0x2D, 0xE0, 0xFF, 0xB4, +0x05, 0x04, 0xF1, 0x5D, 0xE1, 0x4E, 0xEF, 0xB4, 0x06, 0x06, 0x7F, 0x01, 0xF1, 0x72, 0x80, 0x16, +0x90, 0x8B, 0x2D, 0xE0, 0xB4, 0x03, 0x06, 0x7F, 0x01, 0xF1, 0x53, 0x80, 0x09, 0x90, 0x8B, 0x2D, +0xE0, 0xB4, 0x02, 0x02, 0xF1, 0x67, 0xF1, 0xA4, 0xE1, 0x4E, 0x90, 0x8B, 0x2D, 0xE0, 0xB4, 0x04, +0x06, 0x7F, 0x01, 0xF1, 0x81, 0x80, 0x09, 0x90, 0x8B, 0x2D, 0xE0, 0xB4, 0x05, 0x02, 0xF1, 0x5D, +0x90, 0x8B, 0x2D, 0xE0, 0x70, 0x04, 0xF1, 0x9A, 0xE1, 0x4E, 0x90, 0x8B, 0x2D, 0xE0, 0xFE, 0xB4, +0x06, 0x06, 0x7F, 0x01, 0xF1, 0x72, 0xE1, 0x4E, 0xEE, 0xB4, 0x03, 0x06, 0x7F, 0x01, 0xF1, 0x53, +0xE1, 0x4E, 0x90, 0x8B, 0x2D, 0xE0, 0x64, 0x02, 0x60, 0x02, 0xE1, 0x4E, 0xF1, 0x67, 0xE1, 0x4E, +0x90, 0x8B, 0x2D, 0xE0, 0xB4, 0x04, 0x06, 0x7F, 0x01, 0xF1, 0x81, 0x80, 0x09, 0x90, 0x8B, 0x2D, +0xE0, 0xB4, 0x05, 0x02, 0xF1, 0x5D, 0x90, 0x8B, 0x2D, 0xE0, 0x70, 0x04, 0xF1, 0x9A, 0x80, 0x16, +0x90, 0x8B, 0x2D, 0xE0, 0xFE, 0xB4, 0x06, 0x06, 0x7F, 0x01, 0xF1, 0x72, 0x80, 0x08, 0xEE, 0xB4, +0x03, 0x04, 0x7F, 0x01, 0xF1, 0x53, 0xF1, 0xD0, 0xE1, 0x4E, 0x90, 0x8B, 0x2D, 0xE0, 0xB4, 0x04, +0x06, 0x7F, 0x01, 0xF1, 0x81, 0x80, 0x09, 0x90, 0x8B, 0x2D, 0xE0, 0xB4, 0x05, 0x02, 0xF1, 0x5D, +0x90, 0x8B, 0x2D, 0xE0, 0x70, 0x04, 0xF1, 0x9A, 0x80, 0x14, 0x90, 0x8B, 0x2D, 0xE0, 0xFE, 0xB4, +0x06, 0x06, 0xE4, 0xFF, 0xF1, 0x72, 0x80, 0x06, 0xEE, 0xB4, 0x02, 0x02, 0xF1, 0x67, 0xF1, 0xB9, +0xE1, 0x4E, 0x90, 0x8B, 0x2D, 0xE0, 0xFE, 0xB4, 0x06, 0x06, 0xE4, 0xFF, 0xF1, 0x72, 0x80, 0x13, +0xEE, 0xB4, 0x03, 0x06, 0x7F, 0x01, 0xF1, 0x53, 0x80, 0x09, 0x90, 0x8B, 0x2D, 0xE0, 0xB4, 0x02, +0x02, 0xF1, 0x67, 0x90, 0x8B, 0x2D, 0xE0, 0xB4, 0x01, 0x04, 0xF1, 0xA4, 0x80, 0x09, 0x90, 0x8B, +0x2D, 0xE0, 0xB4, 0x05, 0x02, 0xF1, 0x5D, 0xF1, 0xAF, 0x80, 0x73, 0x90, 0x8B, 0x2D, 0xE0, 0xFE, +0xB4, 0x06, 0x06, 0xE4, 0xFF, 0xF1, 0x72, 0x80, 0x13, 0xEE, 0xB4, 0x03, 0x06, 0x7F, 0x01, 0xF1, +0x53, 0x80, 0x09, 0x90, 0x8B, 0x2D, 0xE0, 0xB4, 0x02, 0x02, 0xF1, 0x67, 0x90, 0x8B, 0x2D, 0xE0, +0xB4, 0x01, 0x04, 0xF1, 0xA4, 0x80, 0x0B, 0x90, 0x8B, 0x2D, 0xE0, 0xB4, 0x04, 0x04, 0x7F, 0x01, +0xF1, 0x81, 0xF1, 0xC3, 0x80, 0x38, 0x90, 0x8B, 0x2D, 0xE0, 0xB4, 0x04, 0x06, 0x7F, 0x01, 0xF1, +0x81, 0x80, 0x09, 0x90, 0x8B, 0x2D, 0xE0, 0xB4, 0x05, 0x02, 0xF1, 0x5D, 0x90, 0x8B, 0x2D, 0xE0, +0x70, 0x04, 0xF1, 0x9A, 0x80, 0x16, 0x90, 0x8B, 0x2D, 0xE0, 0xB4, 0x03, 0x06, 0xE4, 0xFF, 0xF1, +0x53, 0x80, 0x09, 0x90, 0x8B, 0x2D, 0xE0, 0xB4, 0x02, 0x02, 0xF1, 0x67, 0xF1, 0xDD, 0xD0, 0xD0, +0x92, 0xAF, 0x22, 0x12, 0x4A, 0xB2, 0x90, 0x8B, 0x2D, 0x74, 0x01, 0xF0, 0x22, 0x90, 0x05, 0x22, +0xE4, 0xF0, 0x90, 0x8B, 0x2D, 0xF0, 0x22, 0x90, 0x05, 0x22, 0xE4, 0xF0, 0x90, 0x8B, 0x2D, 0x04, +0xF0, 0x22, 0xEF, 0x60, 0x05, 0x90, 0x05, 0x22, 0xE4, 0xF0, 0x90, 0x8B, 0x2D, 0x74, 0x01, 0xF0, +0x22, 0x90, 0x8B, 0x56, 0xEF, 0xF0, 0x12, 0x7D, 0x42, 0x90, 0x8B, 0x56, 0xE0, 0x60, 0x05, 0x90, +0x05, 0x22, 0xE4, 0xF0, 0xE4, 0x90, 0x8B, 0x2D, 0xF0, 0x22, 0x12, 0x4A, 0xCC, 0x90, 0x8B, 0x2D, +0x74, 0x01, 0xF0, 0x22, 0x7F, 0x01, 0x12, 0x4A, 0x7C, 0xE4, 0x90, 0x8B, 0x2D, 0xF0, 0x22, 0x12, +0x7C, 0x4A, 0x90, 0x8B, 0x2D, 0x74, 0x04, 0xF0, 0x22, 0x12, 0x4A, 0x32, 0x90, 0x8B, 0x2D, 0x74, +0x03, 0xF0, 0x22, 0x90, 0x05, 0x22, 0x74, 0xFF, 0xF0, 0x90, 0x8B, 0x2D, 0x74, 0x05, 0xF0, 0x22, +0x90, 0x05, 0x22, 0x74, 0xFF, 0xF0, 0x90, 0x8B, 0x2D, 0x74, 0x02, 0xF0, 0x22, 0x90, 0x05, 0x22, +0x74, 0x6F, 0xF0, 0x90, 0x8B, 0x2D, 0x74, 0x06, 0xF0, 0x22, 0xD3, 0x10, 0xAF, 0x01, 0xC3, 0xC0, +0xD0, 0xE4, 0xFD, 0xFC, 0xEF, 0x30, 0xE0, 0x02, 0x7D, 0x80, 0xEF, 0xC3, 0x13, 0x90, 0xFD, 0x10, +0xF0, 0xAE, 0x04, 0xAF, 0x05, 0xD0, 0xD0, 0x92, 0xAF, 0x22, 0x75, 0x28, 0x33, 0xE4, 0xF5, 0x29, +0x75, 0x2A, 0x07, 0xF5, 0x2B, 0x90, 0x01, 0x30, 0xE5, 0x28, 0xF0, 0xA3, 0xE5, 0x29, 0xF0, 0xA3, +0xE5, 0x2A, 0xF0, 0xA3, 0xE5, 0x2B, 0xF0, 0x22, 0x75, 0x30, 0x1F, 0x75, 0x31, 0x01, 0x43, 0x31, +0x10, 0xE4, 0xF5, 0x32, 0x90, 0x01, 0x38, 0xE5, 0x30, 0xF0, 0xA3, 0xE5, 0x31, 0xF0, 0xA3, 0xE5, +0x32, 0xF0, 0x22, 0x22, 0x90, 0x00, 0x02, 0xE0, 0x54, 0xE0, 0x7F, 0x01, 0x60, 0x02, 0x7F, 0x00, +0x22, 0x90, 0x00, 0xF3, 0xE0, 0x7F, 0x00, 0x30, 0xE3, 0x02, 0x7F, 0x01, 0x22, 0x90, 0x8B, 0x09, +0xE0, 0xB4, 0x01, 0x0C, 0x90, 0x00, 0xF2, 0xE0, 0x30, 0xE7, 0x05, 0x7E, 0xFD, 0x7F, 0x33, 0x22, +0x7E, 0xFD, 0x7F, 0x2F, 0x22, 0x90, 0x00, 0xF3, 0xE0, 0x30, 0xE2, 0x0D, 0x90, 0x05, 0x41, 0x74, +0x10, 0xF0, 0x90, 0x05, 0x5A, 0xF0, 0xA3, 0xE4, 0xF0, 0x22, 0x90, 0x01, 0x64, 0x74, 0xA0, 0xF0, +0x22, 0xC0, 0xE0, 0xC0, 0x83, 0xC0, 0x82, 0xC0, 0xD0, 0x75, 0xD0, 0x00, 0xC0, 0x05, 0xC0, 0x06, +0xC0, 0x07, 0x7D, 0x91, 0x90, 0x01, 0xC4, 0xED, 0xF0, 0x74, 0x68, 0xFF, 0xA3, 0xF0, 0x53, 0x91, +0xEF, 0x90, 0x00, 0x51, 0xE0, 0xFE, 0x90, 0x00, 0x55, 0xE0, 0x5E, 0xF5, 0x3D, 0x90, 0x00, 0x52, +0xE0, 0xFE, 0x90, 0x00, 0x56, 0xE0, 0x5E, 0xF5, 0x3E, 0xE5, 0x3D, 0x30, 0xE4, 0x06, 0x90, 0x00, +0x55, 0x74, 0x10, 0xF0, 0xE5, 0x3D, 0x30, 0xE5, 0x06, 0x90, 0x00, 0x55, 0x74, 0x20, 0xF0, 0xE5, +0x3D, 0x30, 0xE6, 0x06, 0x90, 0x00, 0x55, 0x74, 0x40, 0xF0, 0xE5, 0x3D, 0x30, 0xE7, 0x06, 0x90, +0x00, 0x55, 0x74, 0x80, 0xF0, 0xE5, 0x3E, 0x30, 0xE0, 0x06, 0x90, 0x00, 0x56, 0x74, 0x01, 0xF0, +0xE5, 0x3E, 0x30, 0xE1, 0x06, 0x90, 0x00, 0x56, 0x74, 0x02, 0xF0, 0xE5, 0x3E, 0x30, 0xE2, 0x06, +0x90, 0x00, 0x56, 0x74, 0x04, 0xF0, 0xE5, 0x3E, 0x30, 0xE3, 0x06, 0x90, 0x00, 0x56, 0x74, 0x08, +0xF0, 0x90, 0x01, 0xC4, 0xED, 0xF0, 0xA3, 0xEF, 0xF0, 0xD0, 0x07, 0xD0, 0x06, 0xD0, 0x05, 0xD0, +0xD0, 0xD0, 0x82, 0xD0, 0x83, 0xD0, 0xE0, 0x32, 0xEF, 0xC3, 0x94, 0x20, 0x50, 0x39, 0xEF, 0x30, +0xE0, 0x17, 0xED, 0xC4, 0x54, 0xF0, 0xFD, 0xEF, 0xC3, 0x13, 0xFE, 0x24, 0xA4, 0xF5, 0x82, 0xE4, +0x34, 0x04, 0xF5, 0x83, 0xE0, 0x54, 0x0F, 0x80, 0x10, 0xEF, 0xC3, 0x13, 0xFE, 0x24, 0xA4, 0xF5, +0x82, 0xE4, 0x34, 0x04, 0xF5, 0x83, 0xE0, 0x54, 0xF0, 0xF0, 0x74, 0xA4, 0x2E, 0xF5, 0x82, 0xE4, +0x34, 0x04, 0xF5, 0x83, 0xE0, 0x4D, 0xF0, 0x22, 0xAD, 0x07, 0x74, 0x84, 0x2D, 0xF5, 0x82, 0xE4, +0x34, 0x04, 0xF5, 0x83, 0xE0, 0x54, 0x7F, 0x90, 0x8A, 0xDE, 0xF0, 0xE0, 0xF9, 0x54, 0x1F, 0xA3, +0xF0, 0x75, 0xF0, 0x09, 0xED, 0x90, 0x87, 0x27, 0x12, 0x43, 0x5F, 0xE0, 0xFF, 0x90, 0x8A, 0xE1, +0xF0, 0xED, 0x25, 0xE0, 0x24, 0x81, 0xF5, 0x82, 0xE4, 0x34, 0x86, 0xF5, 0x83, 0xE0, 0xFB, 0xA3, +0xE0, 0x90, 0x8A, 0xE2, 0xCB, 0xF0, 0xA3, 0xEB, 0xF0, 0xED, 0x25, 0xE0, 0x24, 0xE4, 0xF5, 0x82, +0xE4, 0x34, 0x89, 0xF5, 0x83, 0xE0, 0xFB, 0xA3, 0xE0, 0x90, 0x8A, 0xE4, 0xCB, 0xF0, 0xA3, 0xEB, +0xF0, 0x90, 0x8A, 0xDF, 0xE0, 0xFE, 0x25, 0xE0, 0x24, 0x2E, 0xF5, 0x82, 0xE4, 0x34, 0x41, 0xF5, +0x83, 0xE4, 0x93, 0xFA, 0x74, 0x01, 0x93, 0xFB, 0xED, 0x25, 0xE0, 0x24, 0xE1, 0xF5, 0x82, 0xE4, +0x34, 0x86, 0xF5, 0x83, 0xEA, 0xF0, 0xA3, 0xEB, 0xF0, 0xEE, 0xC3, 0x9F, 0x40, 0x02, 0x41, 0xB9, +0x90, 0x8A, 0xDF, 0xE0, 0xFF, 0x74, 0xA5, 0x2D, 0xF5, 0x82, 0xE4, 0x34, 0x8A, 0xF5, 0x83, 0xEF, +0xF0, 0xEF, 0x04, 0x90, 0x8A, 0xE0, 0xF0, 0x90, 0x8A, 0xE1, 0xE0, 0xFF, 0x90, 0x8A, 0xE0, 0xE0, +0xFE, 0xD3, 0x9F, 0x40, 0x02, 0x41, 0xF3, 0xEE, 0xC3, 0x94, 0x10, 0x40, 0x21, 0xEE, 0x24, 0xF0, +0xFF, 0x74, 0x01, 0x7E, 0x00, 0xA8, 0x07, 0x08, 0x80, 0x05, 0xC3, 0x33, 0xCE, 0x33, 0xCE, 0xD8, +0xF9, 0xFF, 0x90, 0x8A, 0xE2, 0xE0, 0x5E, 0xFE, 0xA3, 0xE0, 0x5F, 0x4E, 0x70, 0x27, 0x90, 0x8A, +0xE0, 0xE0, 0xFF, 0xC3, 0x94, 0x10, 0x50, 0x59, 0x74, 0x01, 0x7E, 0x00, 0xA8, 0x07, 0x08, 0x80, +0x05, 0xC3, 0x33, 0xCE, 0x33, 0xCE, 0xD8, 0xF9, 0xFF, 0x90, 0x8A, 0xE4, 0xE0, 0x5E, 0xFE, 0xA3, +0xE0, 0x5F, 0x4E, 0x60, 0x3C, 0x90, 0x8A, 0xE0, 0xE0, 0xB4, 0x11, 0x0D, 0x90, 0x8A, 0xE3, 0xE0, +0x30, 0xE7, 0x06, 0x90, 0x8A, 0xE0, 0x74, 0x17, 0xF0, 0x90, 0x8A, 0xE0, 0xE0, 0xFF, 0x64, 0x13, +0x60, 0x04, 0xEF, 0xB4, 0x12, 0x0D, 0x90, 0x8A, 0xE2, 0xE0, 0x30, 0xE0, 0x06, 0x90, 0x8A, 0xE0, +0x74, 0x18, 0xF0, 0x90, 0x8A, 0xE0, 0xE0, 0x90, 0x8A, 0xDF, 0xF0, 0x90, 0x8A, 0xDE, 0xF0, 0x80, +0x42, 0x90, 0x8A, 0xE0, 0xE0, 0x04, 0xF0, 0x41, 0x17, 0x90, 0x8A, 0xE1, 0xE0, 0xFC, 0x90, 0x8A, +0xDF, 0xE0, 0xFF, 0x6C, 0x70, 0x71, 0x74, 0xA5, 0x2D, 0xF5, 0x82, 0xE4, 0x34, 0x8A, 0xF5, 0x83, +0xEF, 0xF0, 0x75, 0xF0, 0x09, 0xED, 0x90, 0x87, 0x29, 0x12, 0x43, 0x5F, 0xE0, 0xB4, 0x01, 0x10, +0xE9, 0x20, 0xE6, 0x0C, 0x90, 0x8A, 0xDF, 0xE0, 0x44, 0x40, 0x90, 0x8A, 0xDE, 0xF0, 0x80, 0x03, +0xAF, 0x01, 0x22, 0x90, 0x8A, 0xDF, 0xE0, 0xFF, 0x25, 0xE0, 0x24, 0x66, 0xF5, 0x82, 0xE4, 0x34, +0x41, 0xF5, 0x83, 0xE4, 0x93, 0xFA, 0x74, 0x01, 0x93, 0xFB, 0xEF, 0x25, 0xE0, 0x24, 0x2E, 0xF5, +0x82, 0xE4, 0x34, 0x41, 0xF5, 0x83, 0x74, 0x01, 0x93, 0x2B, 0xFF, 0xE4, 0x93, 0x3A, 0xC3, 0x13, +0xFE, 0xEF, 0x13, 0xFF, 0xED, 0x25, 0xE0, 0x24, 0xE1, 0xF5, 0x82, 0xE4, 0x34, 0x86, 0xF5, 0x83, +0xEE, 0xF0, 0xA3, 0xEF, 0xF0, 0x80, 0x66, 0x90, 0x8A, 0xDF, 0xE0, 0xD3, 0x9C, 0x40, 0x5E, 0x90, +0x8A, 0xE1, 0xE0, 0xFF, 0x74, 0xA5, 0x2D, 0xF5, 0x82, 0xE4, 0x34, 0x8A, 0xF5, 0x83, 0xEF, 0xF0, +0x90, 0x8A, 0xDF, 0xEF, 0xF0, 0x90, 0x8A, 0xDE, 0xF0, 0xFC, 0xA3, 0xE0, 0xFF, 0x25, 0xE0, 0x24, +0x66, 0xF5, 0x82, 0xE4, 0x34, 0x41, 0xF5, 0x83, 0xE4, 0x93, 0xFA, 0x74, 0x01, 0x93, 0xFB, 0xEF, +0x25, 0xE0, 0x24, 0x2E, 0xF5, 0x82, 0xE4, 0x34, 0x41, 0xF5, 0x83, 0x74, 0x01, 0x93, 0x2B, 0xFF, +0xE4, 0x93, 0x3A, 0xC3, 0x13, 0xFE, 0xEF, 0x13, 0xFF, 0xED, 0x25, 0xE0, 0x24, 0xE1, 0xF5, 0x82, +0xE4, 0x34, 0x86, 0xF5, 0x83, 0xEE, 0xF0, 0xA3, 0xEF, 0xF0, 0xAF, 0x04, 0x22, 0x74, 0x01, 0x2D, +0xF5, 0x82, 0xE4, 0x34, 0x86, 0xF5, 0x83, 0xE4, 0xF0, 0xAF, 0x05, 0x90, 0x8A, 0xDE, 0xE0, 0x44, +0x80, 0xFD, 0x12, 0x5C, 0x4E, 0x90, 0x8A, 0xDE, 0xE0, 0x44, 0x80, 0xFF, 0x22, 0xE4, 0x90, 0x8A, +0xCF, 0xF0, 0x90, 0x8A, 0xCF, 0xE0, 0xFF, 0xC3, 0x94, 0x20, 0x40, 0x03, 0x02, 0x72, 0x54, 0x75, +0xF0, 0x09, 0xEF, 0x90, 0x87, 0x2A, 0x12, 0x43, 0x5F, 0xE0, 0x64, 0x01, 0x60, 0x03, 0x02, 0x72, +0x4B, 0x90, 0x8A, 0xCF, 0xE0, 0x25, 0xE0, 0x24, 0xC0, 0xF5, 0x82, 0xE4, 0x34, 0x85, 0xF5, 0x83, +0xE0, 0xFC, 0xA3, 0xE0, 0xD3, 0x94, 0x00, 0xEC, 0x94, 0x00, 0x50, 0x03, 0x02, 0x72, 0x4B, 0xEF, +0x75, 0xF0, 0x0A, 0xA4, 0x24, 0x00, 0xF9, 0x74, 0x84, 0x35, 0xF0, 0x75, 0x12, 0x01, 0xF5, 0x13, +0x89, 0x14, 0x90, 0x8A, 0xCF, 0xE0, 0x25, 0xE0, 0x24, 0xC0, 0xF5, 0x82, 0xE4, 0x34, 0x85, 0xF5, +0x83, 0xE0, 0xFD, 0xA3, 0xE0, 0x90, 0x8A, 0xD4, 0xCD, 0xF0, 0xA3, 0xED, 0xF0, 0xEF, 0x25, 0xE0, +0x24, 0x63, 0xF5, 0x82, 0xE4, 0x34, 0x88, 0xF5, 0x83, 0xE0, 0xFF, 0xA3, 0xE0, 0x90, 0x8A, 0xD6, +0xCF, 0xF0, 0xA3, 0xEF, 0xF0, 0x90, 0x8A, 0xCF, 0xE0, 0xFE, 0x24, 0x84, 0xF5, 0x82, 0xE4, 0x34, +0x04, 0xF5, 0x83, 0xE0, 0x54, 0x3F, 0x90, 0x8A, 0xD0, 0xF0, 0xE0, 0xFD, 0x54, 0x1F, 0xA3, 0xF0, +0x75, 0xF0, 0x09, 0xEE, 0x90, 0x87, 0x27, 0x12, 0x43, 0x5F, 0xE0, 0x90, 0x8A, 0xD9, 0xF0, 0x90, +0x8A, 0xCF, 0xE0, 0xFB, 0x24, 0x64, 0xF5, 0x82, 0xE4, 0x34, 0x8A, 0xF5, 0x83, 0xE0, 0xC3, 0x94, +0x05, 0x40, 0x02, 0xC1, 0x9C, 0x90, 0x8A, 0xD9, 0xE0, 0xFE, 0x90, 0x8A, 0xD1, 0xE0, 0x9E, 0x40, +0x13, 0x90, 0x8A, 0xD9, 0xE0, 0x90, 0x8A, 0xD1, 0xF0, 0xED, 0x54, 0x40, 0xFD, 0x90, 0x8A, 0xD0, +0xF0, 0xEE, 0x4D, 0xF0, 0x90, 0x8A, 0xD1, 0xE0, 0xFF, 0x90, 0x41, 0x12, 0x93, 0xFE, 0x74, 0x23, +0x2B, 0xF5, 0x82, 0xE4, 0x34, 0x89, 0xF5, 0x83, 0xE0, 0xC3, 0x9E, 0x40, 0x06, 0xEF, 0x90, 0x40, +0xDA, 0x80, 0x07, 0x90, 0x8A, 0xD1, 0xE0, 0x90, 0x40, 0xF6, 0x93, 0x90, 0x8A, 0xD8, 0xF0, 0x90, +0x8A, 0xD8, 0xE0, 0x75, 0xF0, 0x06, 0xA4, 0x24, 0x50, 0xF9, 0x74, 0x40, 0x35, 0xF0, 0x75, 0x0F, +0xFF, 0xF5, 0x10, 0x89, 0x11, 0x90, 0x8A, 0xD0, 0xE0, 0x90, 0x41, 0xBA, 0x93, 0xFF, 0xD3, 0x90, +0x8A, 0xD7, 0xE0, 0x9F, 0x90, 0x8A, 0xD6, 0xE0, 0x94, 0x00, 0x40, 0x0D, 0x90, 0x8A, 0xCF, 0xE0, +0xFF, 0xE4, 0xFD, 0x12, 0x5D, 0x41, 0x02, 0x71, 0xE1, 0x90, 0x8A, 0xCF, 0xE0, 0x25, 0xE0, 0x24, +0xE1, 0xF5, 0x82, 0xE4, 0x34, 0x86, 0xF5, 0x83, 0xE0, 0xFF, 0xA3, 0xE0, 0x90, 0x8A, 0xD2, 0xCF, +0xF0, 0xA3, 0xEF, 0xF0, 0xAB, 0x0F, 0xAA, 0x10, 0xA9, 0x11, 0x12, 0x29, 0xD9, 0xFF, 0x7E, 0x00, +0xAB, 0x12, 0xAA, 0x13, 0xA9, 0x14, 0x12, 0x42, 0x97, 0xFD, 0xAC, 0xF0, 0x12, 0x29, 0xF2, 0x90, +0x8A, 0xD2, 0xEE, 0x8F, 0xF0, 0x12, 0x42, 0x81, 0xAB, 0x0F, 0xAA, 0x10, 0xA9, 0x11, 0x90, 0x00, +0x01, 0x12, 0x42, 0x20, 0xFF, 0x7E, 0x00, 0xAB, 0x12, 0xAA, 0x13, 0xA9, 0x14, 0x90, 0x00, 0x02, +0x12, 0x42, 0xC2, 0xFD, 0xAC, 0xF0, 0x12, 0x29, 0xF2, 0x90, 0x8A, 0xD2, 0xEE, 0x8F, 0xF0, 0x12, +0x42, 0x81, 0xAB, 0x0F, 0xAA, 0x10, 0xA9, 0x11, 0x90, 0x00, 0x02, 0x12, 0x42, 0x20, 0xFF, 0x7E, +0x00, 0xAB, 0x12, 0xAA, 0x13, 0xA9, 0x14, 0x90, 0x00, 0x04, 0x12, 0x42, 0xC2, 0xFD, 0xAC, 0xF0, +0x12, 0x29, 0xF2, 0x90, 0x8A, 0xD2, 0xEE, 0x8F, 0xF0, 0x12, 0x42, 0x81, 0xAB, 0x0F, 0xAA, 0x10, +0xA9, 0x11, 0x90, 0x00, 0x03, 0x12, 0x42, 0x20, 0xFF, 0x7E, 0x00, 0xAB, 0x12, 0xAA, 0x13, 0xA9, +0x14, 0x90, 0x00, 0x06, 0x12, 0x42, 0xC2, 0xFD, 0xAC, 0xF0, 0x12, 0x29, 0xF2, 0x90, 0x8A, 0xD2, +0xEE, 0x8F, 0xF0, 0x12, 0x42, 0x81, 0xAB, 0x0F, 0xAA, 0x10, 0xA9, 0x11, 0x90, 0x00, 0x04, 0x12, +0x42, 0x20, 0xFF, 0x7E, 0x00, 0xAB, 0x12, 0xAA, 0x13, 0xA9, 0x14, 0x90, 0x00, 0x08, 0x12, 0x42, +0xC2, 0xFD, 0xAC, 0xF0, 0x12, 0x29, 0xF2, 0x90, 0x8A, 0xD2, 0xEE, 0x8F, 0xF0, 0x12, 0x42, 0x81, +0xAB, 0x0F, 0xAA, 0x10, 0xA9, 0x11, 0x90, 0x00, 0x05, 0x12, 0x42, 0x20, 0xFF, 0x7E, 0x00, 0x90, +0x8A, 0xD4, 0xE0, 0xFC, 0xA3, 0xE0, 0xFD, 0x12, 0x29, 0xF2, 0xD3, 0x90, 0x8A, 0xD3, 0xE0, 0x9F, +0x90, 0x8A, 0xD2, 0xE0, 0x9E, 0x40, 0x0C, 0xA3, 0xE0, 0x9F, 0xF0, 0x90, 0x8A, 0xD2, 0xE0, 0x9E, +0xF0, 0x80, 0x07, 0xE4, 0x90, 0x8A, 0xD2, 0xF0, 0xA3, 0xF0, 0x90, 0x8A, 0xD2, 0xE0, 0xFC, 0xA3, +0xE0, 0xFD, 0x90, 0x8A, 0xCF, 0xE0, 0xFF, 0x25, 0xE0, 0x24, 0xE1, 0xF5, 0x82, 0xE4, 0x34, 0x86, +0xF5, 0x83, 0xEC, 0xF0, 0xA3, 0xED, 0xF0, 0x90, 0x8A, 0xD0, 0xE0, 0x25, 0xE0, 0x24, 0x2E, 0xF5, +0x82, 0xE4, 0x34, 0x41, 0xF5, 0x83, 0xE4, 0x93, 0xFA, 0x74, 0x01, 0x93, 0xFB, 0xD3, 0xED, 0x9B, +0xEC, 0x9A, 0x40, 0x05, 0x31, 0x78, 0x02, 0x71, 0xAF, 0x90, 0x8A, 0xD0, 0xE0, 0x25, 0xE0, 0x24, +0x66, 0xF5, 0x82, 0xE4, 0x34, 0x41, 0xF5, 0x83, 0xE4, 0x93, 0xFE, 0x74, 0x01, 0x93, 0xFF, 0xC3, +0x90, 0x8A, 0xD3, 0xE0, 0x9F, 0x90, 0x8A, 0xD2, 0xE0, 0x9E, 0x40, 0x03, 0x02, 0x71, 0xAF, 0x90, +0x8A, 0xCF, 0xE0, 0xFF, 0x7D, 0x01, 0x12, 0x5D, 0x41, 0x02, 0x71, 0xAF, 0x90, 0x8A, 0xCF, 0xE0, +0xFF, 0x24, 0x64, 0xF5, 0x82, 0xE4, 0x34, 0x8A, 0xF5, 0x83, 0xE0, 0xFC, 0x64, 0x05, 0x60, 0x03, +0x02, 0x70, 0x7D, 0x90, 0x87, 0x22, 0xE0, 0xFE, 0xB4, 0x03, 0x0B, 0x90, 0x8A, 0xD1, 0xE0, 0xC3, +0x94, 0x19, 0x40, 0x3D, 0x80, 0x2E, 0xEE, 0xB4, 0x02, 0x0B, 0x90, 0x8A, 0xD1, 0xE0, 0xC3, 0x94, +0x11, 0x40, 0x2E, 0x80, 0x1F, 0x90, 0x87, 0x22, 0xE0, 0xFE, 0xB4, 0x01, 0x0B, 0x90, 0x8A, 0xD1, +0xE0, 0xC3, 0x94, 0x0A, 0x40, 0x1B, 0x80, 0x0C, 0xEE, 0x70, 0x11, 0x90, 0x8A, 0xD1, 0xE0, 0xC3, +0x94, 0x03, 0x40, 0x0D, 0x90, 0x89, 0x43, 0x74, 0x01, 0xF0, 0x80, 0x05, 0xE4, 0x90, 0x89, 0x43, +0xF0, 0x90, 0x8A, 0xCF, 0xE0, 0xFE, 0x24, 0x43, 0xF5, 0x82, 0xE4, 0x34, 0x88, 0xF5, 0x83, 0xE0, +0x90, 0x8A, 0xDD, 0xF0, 0x74, 0x23, 0x2E, 0xF5, 0x82, 0xE4, 0x34, 0x89, 0xF5, 0x83, 0xE0, 0xFE, +0xC3, 0x94, 0x30, 0x50, 0x0B, 0xE4, 0x90, 0x8A, 0xDD, 0xF0, 0x74, 0x64, 0x2F, 0x02, 0x70, 0x28, +0x90, 0x89, 0x43, 0xE0, 0x64, 0x01, 0x60, 0x03, 0x02, 0x70, 0x1D, 0x90, 0x8A, 0xCF, 0xE0, 0x24, +0x44, 0xF5, 0x82, 0xE4, 0x34, 0x89, 0xF5, 0x83, 0xE0, 0x64, 0x0A, 0x60, 0x5B, 0x90, 0x8A, 0xCF, +0xE0, 0xFF, 0xEE, 0x24, 0x05, 0xFB, 0xE4, 0x33, 0xFA, 0x74, 0x21, 0x2F, 0xF5, 0x82, 0xE4, 0x34, +0x86, 0xF5, 0x83, 0xE0, 0xFF, 0xD3, 0x9B, 0xEA, 0x64, 0x80, 0xF8, 0x74, 0x80, 0x98, 0x50, 0x38, +0x90, 0x8A, 0xCF, 0xE0, 0xFE, 0xEF, 0x24, 0x05, 0xFB, 0xE4, 0x33, 0xFA, 0x74, 0x23, 0x2E, 0xF5, +0x82, 0xE4, 0x34, 0x89, 0xF5, 0x83, 0xE0, 0xD3, 0x9B, 0xEA, 0x64, 0x80, 0xF8, 0x74, 0x80, 0x98, +0x50, 0x16, 0x90, 0x8A, 0xCF, 0xE0, 0x24, 0x84, 0xF5, 0x82, 0xE4, 0x34, 0x8A, 0xF5, 0x83, 0xE0, +0xFF, 0x90, 0x8A, 0xD1, 0xE0, 0x6F, 0x60, 0x56, 0x90, 0x8A, 0xCF, 0xE0, 0x24, 0x23, 0xF5, 0x82, +0xE4, 0x34, 0x89, 0xF5, 0x83, 0xE0, 0xFF, 0xD3, 0x94, 0x42, 0x40, 0x08, 0x90, 0x8A, 0xDD, 0x74, +0x05, 0xF0, 0x80, 0x11, 0xEF, 0xD3, 0x94, 0x39, 0x90, 0x8A, 0xDD, 0x40, 0x05, 0x74, 0x03, 0xF0, +0x80, 0x03, 0x74, 0x01, 0xF0, 0x90, 0x8A, 0xCF, 0xE0, 0xFF, 0x24, 0x23, 0xF5, 0x82, 0xE4, 0x34, +0x89, 0xF5, 0x83, 0xE0, 0xFE, 0x74, 0x21, 0x2F, 0xF5, 0x82, 0xE4, 0x34, 0x86, 0xF5, 0x83, 0xEE, +0xF0, 0x90, 0x8A, 0xCF, 0xE0, 0x24, 0x44, 0xF5, 0x82, 0xE4, 0x34, 0x89, 0x80, 0x2F, 0x90, 0x8A, +0xCF, 0xE0, 0xFF, 0x24, 0x64, 0xF5, 0x82, 0xE4, 0x34, 0x8A, 0xF5, 0x83, 0xE4, 0xF0, 0x74, 0x44, +0x2F, 0xF5, 0x82, 0xE4, 0x34, 0x89, 0xF5, 0x83, 0xE0, 0x04, 0xF0, 0x80, 0x14, 0xE4, 0x90, 0x8A, +0xDD, 0xF0, 0x90, 0x8A, 0xCF, 0xE0, 0x24, 0x64, 0xF5, 0x82, 0xE4, 0x34, 0x8A, 0xF5, 0x83, 0xE4, +0xF0, 0x90, 0x8A, 0xD1, 0xE0, 0xFE, 0x90, 0x8A, 0xCF, 0xE0, 0xFF, 0x24, 0x84, 0xF5, 0x82, 0xE4, +0x34, 0x8A, 0xF5, 0x83, 0xEE, 0xF0, 0x90, 0x8A, 0xDD, 0xE0, 0xFE, 0x74, 0x43, 0x2F, 0xF5, 0x82, +0xE4, 0x34, 0x88, 0xF5, 0x83, 0xEE, 0xF0, 0x75, 0xF0, 0x09, 0xEF, 0x90, 0x87, 0x2B, 0x12, 0x43, +0x5F, 0xE0, 0xB4, 0x01, 0x11, 0xE4, 0x90, 0x8A, 0xDD, 0xF0, 0x74, 0x64, 0x2F, 0xF5, 0x82, 0xE4, +0x34, 0x8A, 0xF5, 0x83, 0xE4, 0xF0, 0x90, 0x8A, 0xDD, 0xE0, 0xFD, 0x21, 0xAC, 0xEC, 0x64, 0x06, +0x60, 0x02, 0x21, 0xAF, 0x90, 0x8A, 0xD2, 0xF0, 0xA3, 0xF0, 0x90, 0x41, 0xDB, 0x93, 0xFF, 0x7E, +0x00, 0x90, 0x8A, 0xD4, 0xE0, 0xFC, 0xA3, 0xE0, 0xFD, 0x12, 0x29, 0xF2, 0x90, 0x8A, 0xDB, 0xEE, +0xF0, 0xA3, 0xEF, 0xF0, 0x90, 0x8A, 0xCF, 0xE0, 0x24, 0x43, 0xF5, 0x82, 0xE4, 0x34, 0x88, 0xF5, +0x83, 0xE0, 0x90, 0x8A, 0xDD, 0xF0, 0xE4, 0x90, 0x8A, 0xDA, 0xF0, 0x90, 0x8A, 0xDA, 0xE0, 0xFF, +0xD3, 0x94, 0x04, 0x50, 0x47, 0xAB, 0x12, 0xAA, 0x13, 0xA9, 0x14, 0x75, 0xF0, 0x02, 0xEF, 0xA4, +0xF5, 0x82, 0x85, 0xF0, 0x83, 0x12, 0x42, 0xC2, 0xFD, 0xAC, 0xF0, 0xEF, 0x90, 0x41, 0xD6, 0x93, +0xFF, 0x7E, 0x00, 0x12, 0x29, 0xF2, 0x90, 0x8A, 0xD2, 0xEE, 0x8F, 0xF0, 0x12, 0x42, 0x81, 0x90, +0x8A, 0xDB, 0xE0, 0xFE, 0xA3, 0xE0, 0xFF, 0xD3, 0x90, 0x8A, 0xD3, 0xE0, 0x9F, 0x90, 0x8A, 0xD2, +0xE0, 0x9E, 0x50, 0x08, 0x90, 0x8A, 0xDA, 0xE0, 0x04, 0xF0, 0x80, 0xAF, 0x90, 0x8A, 0xDA, 0xE0, +0xC3, 0x13, 0xF0, 0x90, 0x8A, 0xDD, 0xE0, 0xFF, 0xB4, 0x01, 0x0D, 0x90, 0x8A, 0xDA, 0xE0, 0x70, +0x5D, 0x90, 0x8A, 0xDD, 0x04, 0xF0, 0x80, 0x5B, 0xEF, 0xB4, 0x03, 0x1D, 0x90, 0x8A, 0xDA, 0xE0, +0xFF, 0x70, 0x08, 0x90, 0x8A, 0xDD, 0x74, 0x03, 0xF0, 0x80, 0x48, 0xEF, 0xB4, 0x01, 0x08, 0x90, +0x8A, 0xDD, 0x74, 0x01, 0xF0, 0x80, 0x3C, 0x80, 0x35, 0x90, 0x8A, 0xDD, 0xE0, 0x64, 0x05, 0x70, +0x32, 0x90, 0x8A, 0xDA, 0xE0, 0xFF, 0x70, 0x08, 0x90, 0x8A, 0xDD, 0x74, 0x05, 0xF0, 0x80, 0x0F, +0xEF, 0x90, 0x8A, 0xDD, 0xB4, 0x01, 0x05, 0x74, 0x03, 0xF0, 0x80, 0x03, 0x74, 0x01, 0xF0, 0xD3, +0x90, 0x8A, 0xD7, 0xE0, 0x94, 0x03, 0x90, 0x8A, 0xD6, 0xE0, 0x94, 0x00, 0x40, 0x05, 0xE4, 0x90, +0x8A, 0xDD, 0xF0, 0xD3, 0x90, 0x8A, 0xD7, 0xE0, 0x94, 0x03, 0x90, 0x8A, 0xD6, 0xE0, 0x94, 0x00, +0x40, 0x05, 0xE4, 0x90, 0x8A, 0xDD, 0xF0, 0x90, 0x8A, 0xDD, 0xE0, 0xFD, 0x90, 0x8A, 0xCF, 0xE0, +0xFF, 0x24, 0x43, 0xF5, 0x82, 0xE4, 0x34, 0x88, 0xF5, 0x83, 0xED, 0xF0, 0x12, 0x69, 0x38, 0x90, +0x8A, 0xCF, 0xE0, 0xFF, 0x24, 0x64, 0xF5, 0x82, 0xE4, 0x34, 0x8A, 0xF5, 0x83, 0xE0, 0xD3, 0x94, +0x05, 0x50, 0x0F, 0x74, 0x64, 0x2F, 0xF5, 0x82, 0xE4, 0x34, 0x8A, 0xF5, 0x83, 0xE0, 0x04, 0xF0, +0x80, 0x0F, 0x90, 0x8A, 0xCF, 0xE0, 0x24, 0x64, 0xF5, 0x82, 0xE4, 0x34, 0x8A, 0xF5, 0x83, 0xE4, +0xF0, 0xAB, 0x12, 0xAA, 0x13, 0xA9, 0x14, 0xE4, 0xF5, 0xF0, 0x12, 0x42, 0xFA, 0xAB, 0x12, 0xAA, +0x13, 0xA9, 0x14, 0x90, 0x00, 0x02, 0xE4, 0xF5, 0xF0, 0x12, 0x43, 0x19, 0x90, 0x00, 0x04, 0xE4, +0xF5, 0xF0, 0x12, 0x43, 0x19, 0x90, 0x00, 0x06, 0xE4, 0xF5, 0xF0, 0x12, 0x43, 0x19, 0x90, 0x00, +0x08, 0xE4, 0xF5, 0xF0, 0x12, 0x43, 0x19, 0x90, 0x8A, 0xCF, 0xE0, 0xFF, 0x25, 0xE0, 0x24, 0xC0, +0xF5, 0x82, 0xE4, 0x34, 0x85, 0xF5, 0x83, 0xE4, 0xF0, 0xA3, 0xF0, 0xEF, 0x25, 0xE0, 0x24, 0x63, +0xF5, 0x82, 0xE4, 0x34, 0x88, 0xF5, 0x83, 0xE4, 0xF0, 0xA3, 0xF0, 0xEF, 0x25, 0xE0, 0x24, 0xA3, +0xF5, 0x82, 0xE4, 0x34, 0x88, 0xF5, 0x83, 0xE4, 0xF0, 0xA3, 0xF0, 0x90, 0x8A, 0xCF, 0xE0, 0x04, +0xF0, 0x02, 0x6B, 0xC2, 0x22, 0xE4, 0x90, 0x8A, 0xCF, 0xF0, 0x90, 0x8A, 0xCF, 0xE0, 0xFF, 0xC3, +0x94, 0x10, 0x50, 0x14, 0x74, 0xA4, 0x2F, 0xF5, 0x82, 0xE4, 0x34, 0x04, 0xF5, 0x83, 0xE4, 0xF0, +0x90, 0x8A, 0xCF, 0xE0, 0x04, 0xF0, 0x80, 0xE2, 0xE4, 0x90, 0x8A, 0xCF, 0xF0, 0x90, 0x8A, 0xCF, +0xE0, 0xFF, 0xC3, 0x94, 0x20, 0x40, 0x02, 0x81, 0x0E, 0x75, 0xF0, 0x0A, 0xEF, 0x90, 0x84, 0x00, +0x12, 0x43, 0x5F, 0xE4, 0xF0, 0xA3, 0xF0, 0x75, 0xF0, 0x0A, 0xEF, 0x90, 0x84, 0x02, 0x12, 0x43, +0x5F, 0xE4, 0xF0, 0xA3, 0xF0, 0x75, 0xF0, 0x0A, 0xEF, 0x90, 0x84, 0x04, 0x12, 0x43, 0x5F, 0xE4, +0xF0, 0xA3, 0xF0, 0x75, 0xF0, 0x0A, 0xEF, 0x90, 0x84, 0x06, 0x12, 0x43, 0x5F, 0xE4, 0xF0, 0xA3, +0xF0, 0x75, 0xF0, 0x0A, 0xEF, 0x90, 0x84, 0x08, 0x12, 0x43, 0x5F, 0xE4, 0xF0, 0xA3, 0xF0, 0x74, +0x84, 0x2F, 0xF5, 0x82, 0xE4, 0x34, 0x8A, 0xF5, 0x83, 0x74, 0x13, 0xF0, 0x74, 0x44, 0x2F, 0xF5, +0x82, 0xE4, 0x34, 0x89, 0xF5, 0x83, 0xE4, 0xF0, 0x74, 0x43, 0x2F, 0xF5, 0x82, 0xE4, 0x34, 0x88, +0xF5, 0x83, 0xE4, 0xF0, 0xEF, 0x25, 0xE0, 0x24, 0xC0, 0xF5, 0x82, 0xE4, 0x34, 0x85, 0xF5, 0x83, +0xE4, 0xF0, 0xA3, 0xF0, 0xEF, 0x25, 0xE0, 0x24, 0x63, 0xF5, 0x82, 0xE4, 0x34, 0x88, 0xF5, 0x83, +0xE4, 0xF0, 0xA3, 0xF0, 0xEF, 0x25, 0xE0, 0x24, 0xE3, 0xF5, 0x82, 0xE4, 0x34, 0x88, 0xF5, 0x83, +0xE4, 0xF0, 0xA3, 0xF0, 0xEF, 0x25, 0xE0, 0x24, 0xA3, 0xF5, 0x82, 0xE4, 0x34, 0x88, 0xF5, 0x83, +0xE4, 0xF0, 0xA3, 0xF0, 0xEF, 0x25, 0xE0, 0x24, 0x64, 0xF5, 0x82, 0xE4, 0x34, 0x89, 0xF5, 0x83, +0xE4, 0xF0, 0xA3, 0xF0, 0xEF, 0x25, 0xE0, 0x24, 0xA4, 0xF5, 0x82, 0xE4, 0x34, 0x89, 0xF5, 0x83, +0xE4, 0xF0, 0xA3, 0xF0, 0x74, 0x44, 0x2F, 0xF5, 0x82, 0xE4, 0x34, 0x8A, 0xF5, 0x83, 0xE4, 0xF0, +0x74, 0x24, 0x2F, 0xF5, 0x82, 0xE4, 0x34, 0x8A, 0xF5, 0x83, 0xE4, 0xF0, 0x74, 0x64, 0x2F, 0xF5, +0x82, 0xE4, 0x34, 0x8A, 0xF5, 0x83, 0xE4, 0xF0, 0x90, 0x41, 0x8C, 0x93, 0xFE, 0x74, 0x01, 0x93, +0xFF, 0x90, 0x41, 0x54, 0x74, 0x01, 0x93, 0x2F, 0xFF, 0xE4, 0x93, 0x3E, 0xC3, 0x13, 0xFE, 0xEF, +0x13, 0xFF, 0x90, 0x8A, 0xCF, 0xE0, 0xFD, 0x25, 0xE0, 0x24, 0xE1, 0xF5, 0x82, 0xE4, 0x34, 0x86, +0xF5, 0x83, 0xEE, 0xF0, 0xA3, 0xEF, 0xF0, 0x75, 0xF0, 0x09, 0xED, 0x90, 0x87, 0x29, 0x12, 0x43, +0x5F, 0x74, 0x01, 0xF0, 0x74, 0xC1, 0x2D, 0xF5, 0x82, 0xE4, 0x34, 0x86, 0xF5, 0x83, 0x74, 0x0C, +0xF0, 0x75, 0xF0, 0x09, 0xED, 0x90, 0x87, 0x25, 0x12, 0x43, 0x5F, 0x74, 0xFF, 0xF0, 0xA3, 0xF0, +0x75, 0xF0, 0x09, 0xED, 0x90, 0x87, 0x23, 0x12, 0x43, 0x5F, 0xE4, 0xF0, 0xA3, 0x74, 0x0F, 0xF0, +0x75, 0xF0, 0x09, 0xED, 0x90, 0x87, 0x27, 0x12, 0x43, 0x5F, 0x74, 0x13, 0xF0, 0x75, 0xF0, 0x09, +0xED, 0x90, 0x87, 0x28, 0x12, 0x43, 0x5F, 0xE4, 0xF0, 0x74, 0x84, 0x2D, 0xF5, 0x82, 0xE4, 0x34, +0x04, 0xF5, 0x83, 0x74, 0x13, 0xF0, 0x90, 0x8A, 0xCF, 0xE0, 0x04, 0xF0, 0x41, 0x7D, 0x22, 0x12, +0x29, 0xD9, 0xFF, 0xC3, 0x94, 0x20, 0x50, 0x14, 0x90, 0x00, 0x02, 0x12, 0x42, 0x20, 0xFE, 0x74, +0x23, 0x2F, 0xF5, 0x82, 0xE4, 0x34, 0x89, 0xF5, 0x83, 0xEE, 0xF0, 0x22, 0xEF, 0xB4, 0x20, 0x0A, +0x90, 0x00, 0x02, 0x12, 0x42, 0x20, 0x90, 0x87, 0x21, 0xF0, 0x22, 0x90, 0x8B, 0x4B, 0xEE, 0xF0, +0xA3, 0xEF, 0xF0, 0xE4, 0xA3, 0xF0, 0xA3, 0xF0, 0x90, 0x8B, 0x4B, 0xE0, 0xFE, 0xA3, 0xE0, 0xF5, +0x82, 0x8E, 0x83, 0xE0, 0x60, 0x2C, 0xC3, 0x90, 0x8B, 0x4E, 0xE0, 0x94, 0xE8, 0x90, 0x8B, 0x4D, +0xE0, 0x94, 0x03, 0x40, 0x0A, 0x90, 0x01, 0xC6, 0xE0, 0x44, 0x10, 0xF0, 0x7F, 0x00, 0x22, 0x90, +0x8B, 0x4D, 0xE4, 0x75, 0xF0, 0x01, 0x12, 0x42, 0x81, 0x7F, 0x0A, 0x7E, 0x00, 0x12, 0x37, 0x54, +0x80, 0xC6, 0x7F, 0x01, 0x22, 0x12, 0x29, 0xD9, 0xF5, 0x21, 0x22, 0xD3, 0x10, 0xAF, 0x01, 0xC3, +0xC0, 0xD0, 0x90, 0x8A, 0xDA, 0x12, 0x2A, 0x8B, 0x00, 0x00, 0x00, 0x00, 0x90, 0x00, 0x01, 0x12, +0x42, 0x20, 0x90, 0x8B, 0x1A, 0xF0, 0x90, 0x00, 0x03, 0x12, 0x42, 0x20, 0x90, 0x8B, 0x0A, 0xF0, +0x12, 0x47, 0xFA, 0xD0, 0xD0, 0x92, 0xAF, 0x22, 0x90, 0x00, 0x02, 0x12, 0x42, 0x20, 0xFF, 0x30, +0xE0, 0x25, 0x12, 0x29, 0xD9, 0x90, 0x8B, 0x10, 0xF0, 0x90, 0x00, 0x01, 0x12, 0x42, 0x20, 0x90, +0x8B, 0x11, 0xF0, 0xEF, 0xC3, 0x13, 0x54, 0x7F, 0x90, 0x8B, 0x0F, 0xF0, 0x90, 0x00, 0x03, 0x12, +0x42, 0x20, 0x90, 0x8B, 0x16, 0xF0, 0x22, 0x90, 0x8B, 0x10, 0x74, 0x03, 0xF0, 0x90, 0x8B, 0x11, +0x74, 0x05, 0xF0, 0x90, 0x8B, 0x0F, 0x74, 0x14, 0xF0, 0x90, 0x8B, 0x16, 0x74, 0x05, 0xF0, 0x22, +0x12, 0x29, 0xD9, 0x30, 0xE0, 0x19, 0xC3, 0x13, 0x54, 0x7F, 0x90, 0x8B, 0x15, 0xF0, 0x90, 0x00, +0x01, 0x12, 0x42, 0x20, 0xFF, 0x90, 0x8B, 0x13, 0xE4, 0xF0, 0xA3, 0xEF, 0xF0, 0x80, 0x0F, 0x90, +0x8B, 0x15, 0x74, 0x05, 0xF0, 0x90, 0x8B, 0x13, 0xE4, 0xF0, 0xA3, 0x74, 0x03, 0xF0, 0x90, 0x8B, +0x13, 0xE0, 0xA3, 0xE0, 0x90, 0x05, 0x58, 0xF0, 0x22, 0x12, 0x29, 0xD9, 0x90, 0x8B, 0x12, 0xF0, +0x60, 0x07, 0xE4, 0xFD, 0x7F, 0x04, 0x12, 0x45, 0xA2, 0x90, 0x8B, 0x12, 0xE0, 0x90, 0x01, 0xE7, +0xF0, 0x22, 0x90, 0x02, 0x09, 0xE0, 0xFD, 0x12, 0x29, 0xD9, 0xFE, 0xAF, 0x05, 0xED, 0x2E, 0x90, +0x8A, 0xF7, 0xF0, 0x90, 0x00, 0x01, 0x12, 0x42, 0x20, 0xFF, 0xED, 0x2F, 0x90, 0x8A, 0xF8, 0xF0, +0x90, 0x00, 0x02, 0x12, 0x42, 0x20, 0xFF, 0xED, 0x2F, 0x90, 0x8A, 0xF9, 0xF0, 0x90, 0x00, 0x03, +0x12, 0x42, 0x20, 0xFF, 0xED, 0x2F, 0x90, 0x8A, 0xFA, 0xF0, 0x90, 0x00, 0x04, 0x12, 0x42, 0x20, +0xFF, 0xAE, 0x05, 0xED, 0x2F, 0x90, 0x8A, 0xFB, 0xF0, 0x22, 0xD3, 0x10, 0xAF, 0x01, 0xC3, 0xC0, +0xD0, 0x90, 0x8A, 0xDA, 0x12, 0x43, 0x8B, 0xE4, 0x90, 0x8A, 0xDD, 0xF0, 0x12, 0x29, 0xD9, 0xC3, +0x13, 0x20, 0xE0, 0x02, 0xC1, 0xED, 0x90, 0x8A, 0xDA, 0x12, 0x43, 0x6B, 0x12, 0x29, 0xD9, 0xFF, +0x54, 0x02, 0xFE, 0x90, 0x8B, 0x32, 0xE0, 0x54, 0xFD, 0x4E, 0xFE, 0xF0, 0xEF, 0x54, 0x01, 0xFF, +0xEE, 0x54, 0xFE, 0x4F, 0xFF, 0xF0, 0x12, 0x29, 0xD9, 0xFE, 0x54, 0x08, 0xFD, 0xEF, 0x54, 0xF7, +0x4D, 0xFF, 0x90, 0x8B, 0x32, 0xF0, 0xEE, 0x54, 0x10, 0xFE, 0xEF, 0x54, 0xEF, 0x4E, 0xFF, 0xF0, +0x12, 0x29, 0xD9, 0xFE, 0x54, 0x20, 0xFD, 0xEF, 0x54, 0xDF, 0x4D, 0xFF, 0x90, 0x8B, 0x32, 0xF0, +0xEE, 0x54, 0x40, 0xFE, 0xEF, 0x54, 0xBF, 0x4E, 0xF0, 0x20, 0xE0, 0x02, 0xC1, 0xD9, 0x90, 0x8A, +0xDD, 0x74, 0x21, 0xF0, 0x90, 0x8A, 0xDA, 0x12, 0x43, 0x6B, 0x12, 0x29, 0xD9, 0xFF, 0x13, 0x13, +0x54, 0x01, 0xFE, 0x90, 0x8B, 0x32, 0xE0, 0xFD, 0x13, 0x13, 0x54, 0x01, 0x6E, 0x60, 0x2A, 0xEF, +0x54, 0x04, 0xFF, 0xED, 0x54, 0xFB, 0x4F, 0xF0, 0xE0, 0x13, 0x13, 0x54, 0x3F, 0x30, 0xE0, 0x0E, +0x90, 0x01, 0x34, 0x74, 0x40, 0xF0, 0xFD, 0xE4, 0xFF, 0x12, 0x36, 0xE6, 0x80, 0x0B, 0xE4, 0x90, +0x8B, 0x34, 0xF0, 0x7D, 0x40, 0xFF, 0x12, 0x36, 0x75, 0x90, 0x8B, 0x32, 0xE0, 0xFD, 0x13, 0x13, +0x13, 0x54, 0x1F, 0x30, 0xE0, 0x07, 0x90, 0x8A, 0xDD, 0xE0, 0x44, 0x12, 0xF0, 0xED, 0xC4, 0x54, +0x0F, 0x30, 0xE0, 0x07, 0x90, 0x8A, 0xDD, 0xE0, 0x44, 0x14, 0xF0, 0x90, 0x8B, 0x32, 0xE0, 0xC4, +0x13, 0x54, 0x07, 0x30, 0xE0, 0x07, 0x90, 0x8A, 0xDD, 0xE0, 0x44, 0x80, 0xF0, 0x90, 0x8B, 0x32, +0xE0, 0xC4, 0x13, 0x13, 0x54, 0x03, 0x20, 0xE0, 0x07, 0x90, 0x8A, 0xDD, 0xE0, 0x44, 0x40, 0xF0, +0x90, 0x8A, 0xDD, 0xE0, 0x90, 0x05, 0x27, 0xF0, 0x90, 0x8B, 0x33, 0xE0, 0x70, 0x05, 0x7F, 0x01, +0x12, 0x4E, 0x89, 0x90, 0x8B, 0x32, 0xE0, 0xC4, 0x13, 0x13, 0x54, 0x03, 0x30, 0xE0, 0x04, 0x7F, +0x03, 0x80, 0x0E, 0x7F, 0x01, 0x12, 0x4D, 0xE0, 0xEF, 0x60, 0x04, 0x7F, 0x01, 0x80, 0x02, 0x7F, +0x02, 0x12, 0x4E, 0x89, 0x7F, 0x02, 0x02, 0x78, 0x2E, 0x90, 0x8A, 0xDD, 0x74, 0x01, 0xF0, 0x90, +0x05, 0x27, 0xF0, 0xE4, 0xFF, 0x12, 0x4E, 0x89, 0x7F, 0x03, 0x02, 0x78, 0x2E, 0x90, 0x8A, 0xDA, +0x12, 0x43, 0x6B, 0x12, 0x29, 0xD9, 0xFF, 0x54, 0x02, 0xFE, 0x90, 0x8B, 0x2C, 0xE0, 0x54, 0xFD, +0x4E, 0xFE, 0xF0, 0xEF, 0x54, 0x01, 0xFF, 0xEE, 0x54, 0xFE, 0x4F, 0xFF, 0xF0, 0x12, 0x29, 0xD9, +0xFE, 0x54, 0x08, 0xFD, 0xEF, 0x54, 0xF7, 0x4D, 0xFF, 0x90, 0x8B, 0x2C, 0xF0, 0xEE, 0x54, 0x10, +0xFE, 0xEF, 0x54, 0xEF, 0x4E, 0xFF, 0xF0, 0x12, 0x29, 0xD9, 0xFE, 0x54, 0x40, 0xFD, 0xEF, 0x54, +0xBF, 0x4D, 0xFF, 0x90, 0x8B, 0x2C, 0xF0, 0xEE, 0x54, 0x04, 0xFE, 0xEF, 0x54, 0xFB, 0x4E, 0xF0, +0x20, 0xE0, 0x02, 0xE1, 0xE2, 0x90, 0x8A, 0xDD, 0x74, 0x31, 0xF0, 0x90, 0x8B, 0x2C, 0xE0, 0x13, +0x13, 0x54, 0x3F, 0x20, 0xE0, 0x0B, 0xE4, 0x90, 0x8B, 0x2E, 0xF0, 0x7D, 0x40, 0xFF, 0x12, 0x36, +0x75, 0x90, 0x8B, 0x2C, 0xE0, 0xFD, 0x13, 0x13, 0x13, 0x54, 0x1F, 0x30, 0xE0, 0x07, 0x90, 0x8A, +0xDD, 0xE0, 0x44, 0x02, 0xF0, 0xED, 0xC4, 0x54, 0x0F, 0x30, 0xE0, 0x07, 0x90, 0x8A, 0xDD, 0xE0, +0x44, 0x04, 0xF0, 0x90, 0x8A, 0xDD, 0xE0, 0x54, 0x06, 0x60, 0x0C, 0x90, 0x01, 0x3E, 0x74, 0x03, +0xF0, 0xFD, 0x7F, 0x02, 0x12, 0x37, 0x00, 0x90, 0x8A, 0xDD, 0xE0, 0x90, 0x05, 0x27, 0xF0, 0x90, +0x8B, 0x2C, 0xE0, 0xFF, 0xC4, 0x13, 0x13, 0x54, 0x03, 0x30, 0xE0, 0x0D, 0xA3, 0xE0, 0x64, 0x06, +0x60, 0x2C, 0x7F, 0x06, 0x12, 0x65, 0x82, 0x80, 0x25, 0x90, 0x8B, 0x2D, 0xE0, 0xB4, 0x06, 0x1B, +0x7F, 0x01, 0x12, 0x65, 0x82, 0xE4, 0xFF, 0x12, 0x4D, 0xE0, 0xEF, 0x60, 0x09, 0x7D, 0x01, 0xAF, +0x23, 0x12, 0x45, 0xA2, 0x80, 0x05, 0x12, 0x4E, 0x56, 0x80, 0x03, 0x12, 0x7D, 0xC1, 0x7F, 0x01, +0x80, 0x4C, 0x90, 0x8A, 0xDD, 0x74, 0x01, 0xF0, 0x90, 0x05, 0x27, 0xF0, 0x7D, 0x03, 0x7F, 0x02, +0x12, 0x36, 0x92, 0x90, 0x8B, 0x2D, 0xE0, 0xB4, 0x06, 0x02, 0x80, 0x1B, 0x90, 0x8B, 0x2D, 0xE0, +0xB4, 0x04, 0x02, 0x80, 0x07, 0x90, 0x8B, 0x2D, 0xE0, 0xB4, 0x05, 0x04, 0xE4, 0xFF, 0x80, 0x14, +0x90, 0x8B, 0x2D, 0xE0, 0xB4, 0x03, 0x04, 0x7F, 0x01, 0x80, 0x09, 0x90, 0x8B, 0x2D, 0xE0, 0xB4, +0x02, 0x05, 0x7F, 0x01, 0x12, 0x65, 0x82, 0x11, 0x35, 0x12, 0x4A, 0xFC, 0x7F, 0x03, 0x11, 0x42, +0xD0, 0xD0, 0x92, 0xAF, 0x22, 0x90, 0x8B, 0x31, 0xE0, 0xB4, 0x01, 0x05, 0xE4, 0xF0, 0x12, 0x48, +0xFE, 0x22, 0xAD, 0x07, 0xEF, 0x64, 0x01, 0x60, 0x04, 0xEF, 0xB4, 0x03, 0x15, 0x90, 0x8B, 0x32, +0xE0, 0x54, 0xFE, 0xF0, 0x54, 0xFB, 0xF0, 0xE4, 0xA3, 0xF0, 0xA3, 0xF0, 0xA3, 0xF0, 0xA3, 0xF0, +0xA3, 0xF0, 0xED, 0x64, 0x02, 0x60, 0x04, 0xED, 0xB4, 0x03, 0x15, 0x90, 0x8B, 0x2C, 0xE0, 0x54, +0xFE, 0xF0, 0x54, 0xFB, 0xF0, 0xE4, 0xA3, 0xF0, 0xA3, 0xF0, 0xA3, 0xF0, 0xA3, 0xF0, 0xA3, 0xF0, +0x22, 0x12, 0x29, 0xD9, 0x90, 0x8B, 0x38, 0xF0, 0x22, 0xD3, 0x10, 0xAF, 0x01, 0xC3, 0xC0, 0xD0, +0x90, 0x8A, 0xFD, 0xE0, 0x90, 0x8A, 0xE8, 0xF0, 0x90, 0x8A, 0xFE, 0xE0, 0xFF, 0xA3, 0xE0, 0x90, +0x8A, 0xE9, 0xCF, 0xF0, 0xA3, 0xEF, 0xF0, 0xE4, 0x90, 0x8A, 0xE4, 0xF0, 0x90, 0x8A, 0xE4, 0xE0, +0xFF, 0x24, 0x00, 0xF5, 0x82, 0xE4, 0x34, 0x8B, 0xF5, 0x83, 0xE0, 0xFE, 0x74, 0xEB, 0x2F, 0xF5, +0x82, 0xE4, 0x34, 0x8A, 0xF5, 0x83, 0xEE, 0xF0, 0x90, 0x8A, 0xE4, 0xE0, 0x04, 0xF0, 0xE0, 0xB4, +0x04, 0xDA, 0x90, 0x8A, 0xE8, 0xE0, 0x12, 0x43, 0x94, 0x78, 0xF8, 0x00, 0x7A, 0x6B, 0x01, 0x79, +0x01, 0x02, 0x79, 0x01, 0x03, 0x79, 0x01, 0x04, 0x7A, 0x6B, 0x05, 0x7A, 0x35, 0x80, 0x7A, 0x4E, +0x81, 0x7A, 0x6B, 0x82, 0x00, 0x00, 0x7A, 0x67, 0x90, 0x8A, 0xEE, 0xE0, 0xFF, 0x51, 0x72, 0x41, +0x6B, 0x90, 0x8A, 0xE8, 0xE0, 0xFF, 0xB4, 0x02, 0x08, 0x90, 0x8A, 0xE5, 0x74, 0x01, 0xF0, 0x80, +0x0F, 0xEF, 0x90, 0x8A, 0xE5, 0xB4, 0x03, 0x05, 0x74, 0x02, 0xF0, 0x80, 0x03, 0x74, 0x04, 0xF0, +0xC3, 0x90, 0x8A, 0xE9, 0xE0, 0x94, 0x08, 0x50, 0x78, 0xE4, 0x90, 0x8A, 0xE4, 0xF0, 0x90, 0x8A, +0xE5, 0xE0, 0xFF, 0x90, 0x8A, 0xE4, 0xE0, 0xC3, 0x9F, 0x40, 0x02, 0x41, 0x6B, 0x90, 0x8A, 0xE9, +0xE0, 0xFE, 0xA3, 0xE0, 0xFF, 0xC3, 0xEE, 0x94, 0x01, 0x90, 0x8A, 0xE4, 0xE0, 0x50, 0x1F, 0xFE, +0x2F, 0xFF, 0xEE, 0xFD, 0xC3, 0x74, 0x03, 0x9D, 0xFD, 0xE4, 0x94, 0x00, 0xFC, 0x74, 0xEB, 0x2D, +0xF5, 0x82, 0x74, 0x8A, 0x3C, 0xF5, 0x83, 0xE0, 0xFD, 0x12, 0x51, 0x88, 0x80, 0x2B, 0xFF, 0xFD, +0xC3, 0x74, 0x03, 0x9D, 0xFD, 0xE4, 0x94, 0x00, 0xFC, 0x74, 0xEB, 0x2D, 0xF5, 0x82, 0x74, 0x8A, +0x3C, 0xF5, 0x83, 0xE0, 0xFE, 0xEF, 0xFD, 0x90, 0x8A, 0xEA, 0xE0, 0x2D, 0xFD, 0x90, 0x8A, 0xE9, +0xE0, 0x34, 0x00, 0x8D, 0x82, 0xF5, 0x83, 0xEE, 0xF0, 0x90, 0x8A, 0xE4, 0xE0, 0x04, 0xF0, 0x80, +0x8D, 0xC3, 0x90, 0x8A, 0xE9, 0xE0, 0x94, 0x10, 0x40, 0x02, 0x41, 0x6B, 0x90, 0x8A, 0xE8, 0xE0, +0x64, 0x04, 0x60, 0x02, 0x41, 0x6B, 0x90, 0x8A, 0xEC, 0xE0, 0xFF, 0xE4, 0xFC, 0xFD, 0xFE, 0x78, +0x10, 0x12, 0x2A, 0x6C, 0xC0, 0x04, 0xC0, 0x05, 0xC0, 0x06, 0xC0, 0x07, 0x90, 0x8A, 0xEB, 0xE0, +0xFF, 0xE4, 0xFC, 0xFD, 0xFE, 0x78, 0x18, 0x12, 0x2A, 0x6C, 0xD0, 0x03, 0xD0, 0x02, 0xD0, 0x01, +0xD0, 0x00, 0x12, 0x43, 0x46, 0xC0, 0x04, 0xC0, 0x05, 0xC0, 0x06, 0xC0, 0x07, 0x90, 0x8A, 0xED, +0xE0, 0xFF, 0xE4, 0xFC, 0xFD, 0xFE, 0x78, 0x08, 0x12, 0x2A, 0x6C, 0xD0, 0x03, 0xD0, 0x02, 0xD0, +0x01, 0xD0, 0x00, 0x12, 0x43, 0x46, 0xA8, 0x04, 0xA9, 0x05, 0xAA, 0x06, 0xAB, 0x07, 0xA3, 0xE0, +0xFF, 0xE4, 0xFC, 0xFD, 0xFE, 0x12, 0x43, 0x46, 0xA3, 0x12, 0x2A, 0x7F, 0x90, 0x8A, 0xEF, 0x12, +0x43, 0x53, 0x90, 0x80, 0x85, 0x12, 0x2A, 0x7F, 0x90, 0x8A, 0xE9, 0xE0, 0xFE, 0xA3, 0xE0, 0xFF, +0x12, 0x2F, 0xD9, 0x80, 0x36, 0x90, 0x8A, 0xED, 0xE0, 0xFE, 0xA3, 0xE0, 0x24, 0x00, 0xFF, 0xE4, +0x3E, 0xFE, 0x90, 0x8A, 0xE6, 0xF0, 0xA3, 0xEF, 0xF0, 0x12, 0x37, 0x54, 0x80, 0x1D, 0x90, 0x8A, +0xED, 0xE0, 0xFE, 0xA3, 0xE0, 0x24, 0x00, 0xFF, 0xE4, 0x3E, 0xFE, 0x90, 0x8A, 0xE6, 0xF0, 0xA3, +0xEF, 0xF0, 0x12, 0x36, 0xCB, 0x80, 0x04, 0x7F, 0x00, 0x80, 0x02, 0x7F, 0x01, 0xD0, 0xD0, 0x92, +0xAF, 0x22, 0x8F, 0x0F, 0xE4, 0x90, 0x8A, 0xF3, 0xF0, 0xE5, 0x0F, 0x14, 0xFE, 0x90, 0x8A, 0xF3, +0xE0, 0xFF, 0xC3, 0x9E, 0x50, 0x0E, 0xEF, 0x04, 0xFD, 0x12, 0x34, 0xB7, 0x90, 0x8A, 0xF3, 0xE0, +0x04, 0xF0, 0x80, 0xE5, 0xE5, 0x0F, 0x14, 0xFF, 0x7D, 0xFF, 0x12, 0x34, 0xB7, 0x90, 0x8A, 0xF3, +0xE5, 0x0F, 0xF0, 0x90, 0x8A, 0xF3, 0xE0, 0xC3, 0x94, 0xFF, 0x50, 0x0F, 0xE0, 0xFF, 0x04, 0xFD, +0x12, 0x34, 0xB7, 0x90, 0x8A, 0xF3, 0xE0, 0x04, 0xF0, 0x80, 0xE8, 0xAD, 0x0F, 0x7F, 0xFF, 0x02, +0x34, 0xB7, 0xD3, 0x10, 0xAF, 0x01, 0xC3, 0xC0, 0xD0, 0xE4, 0x90, 0x8A, 0xDD, 0xF0, 0xA3, 0x74, +0x04, 0xF0, 0xA3, 0xE4, 0xF0, 0x90, 0x8A, 0xE2, 0xF0, 0xA3, 0xF0, 0x90, 0x02, 0x09, 0xE0, 0x90, +0x8A, 0xE1, 0xF0, 0x12, 0x29, 0xD9, 0xFF, 0x90, 0x8A, 0xE1, 0xE0, 0x2F, 0x90, 0x8A, 0xE0, 0xF0, +0x30, 0xE0, 0x0B, 0x90, 0x8A, 0xDB, 0xE4, 0xF0, 0xA3, 0x74, 0x80, 0xF0, 0x80, 0x07, 0xE4, 0x90, +0x8A, 0xDB, 0xF0, 0xA3, 0xF0, 0x90, 0x8A, 0xE0, 0xE0, 0xC3, 0x13, 0x90, 0xFD, 0x10, 0xF0, 0x90, +0x8A, 0xDD, 0xE0, 0x24, 0x20, 0xF0, 0x90, 0x8A, 0xDB, 0xA3, 0xE0, 0xFD, 0xA3, 0xE0, 0xFC, 0x2D, +0xFF, 0x24, 0x01, 0xF5, 0x82, 0xE4, 0x34, 0xFC, 0xF5, 0x83, 0xE0, 0x90, 0x8A, 0xFD, 0xF0, 0x74, +0x02, 0x2F, 0xF5, 0x82, 0xE4, 0x34, 0xFC, 0xF5, 0x83, 0xE0, 0xFE, 0xEC, 0x2D, 0x24, 0x03, 0xF5, +0x82, 0xE4, 0x34, 0xFC, 0xF5, 0x83, 0xE0, 0x24, 0x00, 0xFF, 0xE4, 0x3E, 0x90, 0x8A, 0xFE, 0xF0, +0xA3, 0xEF, 0xF0, 0x90, 0x8A, 0xDA, 0x74, 0x04, 0xF0, 0x90, 0x8A, 0xDB, 0xA3, 0xE0, 0xFF, 0xA3, +0xE0, 0x2F, 0xFF, 0x90, 0x8A, 0xDA, 0xE0, 0xFE, 0x2F, 0x24, 0x00, 0xF5, 0x82, 0xE4, 0x34, 0xFC, +0xF5, 0x83, 0xE0, 0xFF, 0x74, 0xFC, 0x2E, 0xF5, 0x82, 0xE4, 0x34, 0x8A, 0xF5, 0x83, 0xEF, 0xF0, +0x90, 0x8A, 0xDA, 0xE0, 0x04, 0xF0, 0xE0, 0xB4, 0x08, 0xCF, 0x11, 0x89, 0xEF, 0x70, 0x45, 0x90, +0x01, 0xC3, 0xE0, 0x60, 0x2B, 0xC3, 0x90, 0x8A, 0xE3, 0xE0, 0x94, 0xE8, 0x90, 0x8A, 0xE2, 0xE0, +0x94, 0x03, 0x40, 0x09, 0x90, 0x01, 0xC6, 0xE0, 0x44, 0x10, 0xF0, 0x80, 0x79, 0x90, 0x8A, 0xE2, +0xE4, 0x75, 0xF0, 0x01, 0x12, 0x42, 0x81, 0x7F, 0x0A, 0x7E, 0x00, 0x12, 0x37, 0x54, 0x80, 0xCF, +0x90, 0x01, 0xC6, 0xE0, 0x90, 0x01, 0xC3, 0x30, 0xE2, 0x05, 0x74, 0xFE, 0xF0, 0x80, 0x57, 0x74, +0xFF, 0xF0, 0x80, 0x52, 0x90, 0x8A, 0xDD, 0xE0, 0xB4, 0x78, 0x2E, 0xE4, 0xF0, 0x90, 0x8A, 0xE0, +0xE0, 0x04, 0xF0, 0x90, 0x8A, 0xDB, 0xE0, 0x70, 0x04, 0xA3, 0xE0, 0x64, 0x80, 0x90, 0x8A, 0xDB, +0x70, 0x05, 0xF0, 0xA3, 0xF0, 0x80, 0x06, 0xE4, 0xF0, 0xA3, 0x74, 0x80, 0xF0, 0x90, 0x8A, 0xE0, +0xE0, 0xC3, 0x13, 0x90, 0xFD, 0x10, 0xF0, 0x80, 0x07, 0x90, 0x8A, 0xDD, 0xE0, 0x24, 0x08, 0xF0, +0x90, 0x8A, 0xDE, 0x74, 0xFF, 0xF5, 0xF0, 0x12, 0x42, 0x81, 0x90, 0x8A, 0xDE, 0xE0, 0x70, 0x02, +0xA3, 0xE0, 0x60, 0x02, 0x61, 0x16, 0xD0, 0xD0, 0x92, 0xAF, 0x22, 0x12, 0x29, 0xD9, 0x90, 0x8B, +0x05, 0xF0, 0x90, 0x00, 0x01, 0x12, 0x42, 0x20, 0x90, 0x8B, 0x06, 0xF0, 0x22, 0xE4, 0xF5, 0x61, +0x22, 0x91, 0x4A, 0x90, 0x8B, 0x33, 0x74, 0x02, 0xF0, 0x22, 0x90, 0x05, 0x22, 0x74, 0xFF, 0xF0, +0x7F, 0x78, 0x7E, 0x08, 0x12, 0x27, 0xDE, 0x90, 0x8B, 0x1C, 0x12, 0x2A, 0x7F, 0x7F, 0x04, 0x7E, +0x0C, 0x12, 0x27, 0xDE, 0x90, 0x8B, 0x20, 0x12, 0x2A, 0x7F, 0x7F, 0x00, 0x7E, 0x08, 0x12, 0x27, +0xDE, 0x90, 0x8B, 0x24, 0x12, 0x2A, 0x7F, 0x90, 0x8B, 0x09, 0xE0, 0x90, 0x8B, 0x1C, 0xB4, 0x01, +0x0D, 0x12, 0x43, 0x53, 0xEF, 0x54, 0xC7, 0xFF, 0xED, 0x54, 0xC7, 0xFD, 0x80, 0x07, 0x12, 0x43, +0x53, 0xEF, 0x54, 0xC7, 0xFF, 0xEC, 0x90, 0x80, 0x85, 0x12, 0x2A, 0x7F, 0x7F, 0x78, 0x7E, 0x08, +0x12, 0x2F, 0xD9, 0x90, 0x8B, 0x20, 0x12, 0x43, 0x53, 0xEF, 0x54, 0x0F, 0xFF, 0xEC, 0x90, 0x80, +0x85, 0x12, 0x2A, 0x7F, 0x7F, 0x04, 0x7E, 0x0C, 0x12, 0x2F, 0xD9, 0x90, 0x8B, 0x24, 0x12, 0x43, +0x53, 0xEF, 0x44, 0x02, 0xFF, 0xEC, 0x90, 0x80, 0x85, 0x12, 0x2A, 0x7F, 0x7F, 0x00, 0x7E, 0x08, +0x12, 0x2F, 0xD9, 0x7F, 0x70, 0x7E, 0x0E, 0x12, 0x27, 0xDE, 0x90, 0x8B, 0x28, 0x12, 0x2A, 0x7F, +0x90, 0x80, 0x85, 0x12, 0x2A, 0x8B, 0x00, 0x1B, 0x25, 0xA0, 0x7F, 0x70, 0x7E, 0x0E, 0x12, 0x2F, +0xD9, 0x90, 0x80, 0x59, 0x12, 0x2A, 0x8B, 0x00, 0x00, 0x00, 0x00, 0xE4, 0xFD, 0xFF, 0x12, 0x34, +0x81, 0x90, 0x8B, 0x09, 0xE0, 0xB4, 0x01, 0x11, 0x90, 0x80, 0x59, 0x12, 0x2A, 0x8B, 0x00, 0x00, +0x00, 0x00, 0xE4, 0xFD, 0x7F, 0x01, 0x12, 0x34, 0x81, 0x90, 0x00, 0x11, 0xE0, 0x54, 0xF6, 0xF0, +0x02, 0x52, 0x0E, 0x91, 0x50, 0x90, 0x8B, 0x33, 0x74, 0x02, 0xF0, 0x22, 0x90, 0x05, 0x22, 0x74, +0xFF, 0xF0, 0x90, 0x8B, 0x33, 0x74, 0x04, 0xF0, 0x22, 0xB1, 0x42, 0x90, 0x8B, 0x33, 0x74, 0x04, +0xF0, 0x22, 0x90, 0x00, 0x11, 0xE0, 0x44, 0x09, 0xF0, 0x12, 0x52, 0x0E, 0x90, 0x8B, 0x1C, 0x12, +0x43, 0x53, 0x90, 0x80, 0x85, 0x12, 0x2A, 0x7F, 0x7F, 0x78, 0x7E, 0x08, 0x12, 0x2F, 0xD9, 0x90, +0x8B, 0x20, 0x12, 0x43, 0x53, 0x90, 0x80, 0x85, 0x12, 0x2A, 0x7F, 0x7F, 0x04, 0x7E, 0x0C, 0x12, +0x2F, 0xD9, 0x90, 0x8B, 0x24, 0x12, 0x43, 0x53, 0x90, 0x80, 0x85, 0x12, 0x2A, 0x7F, 0x7F, 0x00, +0x7E, 0x08, 0x12, 0x2F, 0xD9, 0x90, 0x8B, 0x28, 0x12, 0x43, 0x53, 0x90, 0x80, 0x85, 0x12, 0x2A, +0x7F, 0x7F, 0x70, 0x7E, 0x0E, 0x12, 0x2F, 0xD9, 0x90, 0x80, 0x59, 0x12, 0x2A, 0x8B, 0x00, 0x03, +0x2D, 0x95, 0xE4, 0xFD, 0xFF, 0x12, 0x34, 0x81, 0x90, 0x8B, 0x09, 0xE0, 0xB4, 0x01, 0x11, 0x90, +0x80, 0x59, 0x12, 0x2A, 0x8B, 0x00, 0x03, 0x2D, 0x95, 0xE4, 0xFD, 0x7F, 0x01, 0x12, 0x34, 0x81, +0x22, 0x90, 0x8B, 0x2D, 0xE0, 0x64, 0x06, 0x60, 0x3C, 0xE5, 0x22, 0x54, 0x0F, 0x14, 0x60, 0x2E, +0x14, 0x60, 0x1E, 0x24, 0xFE, 0x60, 0x0E, 0x24, 0xF8, 0x70, 0x2A, 0xE4, 0x90, 0x8B, 0x2D, 0xF0, +0x90, 0x05, 0x22, 0xF0, 0x22, 0x90, 0x8B, 0x2D, 0x74, 0x01, 0xF0, 0x90, 0x05, 0x22, 0xE4, 0xF0, +0x22, 0x90, 0x8B, 0x2D, 0x74, 0x03, 0xF0, 0x90, 0x05, 0x22, 0x74, 0xFF, 0xF0, 0x22, 0x90, 0x01, +0xC6, 0xE0, 0x44, 0x08, 0xF0, 0x22, 0xAE, 0x07, 0xE4, 0xFF, 0x12, 0x4D, 0xE0, 0xEF, 0x60, 0x18, +0x90, 0x8B, 0x2C, 0xE0, 0xC4, 0x13, 0x13, 0x54, 0x03, 0x20, 0xE0, 0x0C, 0xAF, 0x06, 0x7D, 0x01, +0x12, 0x45, 0xA2, 0xB1, 0xC1, 0x7F, 0x01, 0x22, 0x7F, 0x00, 0x22, 0x90, 0x01, 0x57, 0xE0, 0x60, +0x3C, 0x90, 0x01, 0x57, 0xE4, 0xF0, 0x90, 0x01, 0x3C, 0x74, 0x02, 0xF0, 0x90, 0x8B, 0x1B, 0xE0, +0x60, 0x07, 0xE4, 0xF0, 0x53, 0x25, 0xFD, 0x80, 0x24, 0x90, 0x8B, 0x0C, 0xE0, 0x04, 0xF0, 0x53, +0x25, 0xEF, 0x90, 0x8B, 0x10, 0xE0, 0xFF, 0x90, 0x8B, 0x0C, 0xE0, 0xD3, 0x9F, 0x40, 0x0E, 0xE5, +0x21, 0xB4, 0x01, 0x09, 0x90, 0x8B, 0x0D, 0xE0, 0x70, 0x03, 0xE0, 0x04, 0xF0, 0x90, 0x01, 0x5B, +0xE0, 0x60, 0x10, 0x90, 0x01, 0x5B, 0xE4, 0xF0, 0x90, 0x01, 0x3C, 0x74, 0x04, 0xF0, 0xE4, 0x90, +0x8B, 0x18, 0xF0, 0x90, 0x01, 0x5F, 0xE0, 0x60, 0x10, 0x90, 0x01, 0x5F, 0xE4, 0xF0, 0x90, 0x01, +0x3C, 0x74, 0x08, 0xF0, 0xE4, 0x90, 0x8B, 0x17, 0xF0, 0x22, 0xE4, 0x90, 0x8B, 0x4F, 0xF0, 0xA3, +0xF0, 0x90, 0x05, 0xF8, 0xE0, 0x70, 0x0F, 0xA3, 0xE0, 0x70, 0x0B, 0xA3, 0xE0, 0x70, 0x07, 0xA3, +0xE0, 0x70, 0x03, 0x7F, 0x01, 0x22, 0xD3, 0x90, 0x8B, 0x50, 0xE0, 0x94, 0xE8, 0x90, 0x8B, 0x4F, +0xE0, 0x94, 0x03, 0x40, 0x03, 0x7F, 0x00, 0x22, 0x7F, 0x32, 0x7E, 0x00, 0x12, 0x37, 0x54, 0x90, +0x8B, 0x4F, 0xE4, 0x75, 0xF0, 0x01, 0x12, 0x42, 0x81, 0x80, 0xC6, 0x00, 0x92, 0x00}; + +// =================== v88 UMC A Cut P2PPS with CCX report C2H 2012-12-05 ===================== +u8 Rtl8192CUFwUMCACutImgArray[UMCACutImgArrayLength] = { +0xC1, 0x88, 0x02, 0x05, 0x58, 0x00, 0x02, 0x00, 0x12, 0x05, 0x17, 0x11, 0xDE, 0x3E, 0x01, 0x00, +0x94, 0x18, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x02, 0x46, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x02, 0x60, 0xF2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x02, 0x68, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x4B, 0x87, 0x00, 0x00, +0x05, 0x04, 0x03, 0x02, 0x00, 0x03, 0x06, 0x05, 0x04, 0x03, 0x00, 0x04, 0x06, 0x05, 0x04, 0x02, +0x00, 0x04, 0x08, 0x07, 0x06, 0x04, 0x00, 0x06, 0x0A, 0x09, 0x08, 0x06, 0x00, 0x08, 0x0A, 0x09, +0x08, 0x04, 0x00, 0x08, 0x0A, 0x09, 0x08, 0x02, 0x00, 0x08, 0x0A, 0x09, 0x08, 0x00, 0x00, 0x08, +0x12, 0x11, 0x10, 0x08, 0x00, 0x10, 0x1A, 0x19, 0x18, 0x10, 0x00, 0x18, 0x22, 0x21, 0x20, 0x18, +0x00, 0x20, 0x22, 0x21, 0x20, 0x10, 0x00, 0x20, 0x22, 0x21, 0x20, 0x08, 0x00, 0x20, 0x22, 0x21, +0x1C, 0x08, 0x00, 0x20, 0x22, 0x21, 0x14, 0x08, 0x00, 0x20, 0x22, 0x20, 0x18, 0x08, 0x00, 0x20, +0x31, 0x30, 0x20, 0x10, 0x00, 0x30, 0x31, 0x30, 0x18, 0x00, 0x00, 0x30, 0x31, 0x2F, 0x10, 0x10, +0x00, 0x30, 0x31, 0x2C, 0x10, 0x10, 0x00, 0x30, 0x31, 0x28, 0x10, 0x00, 0x00, 0x30, 0x31, 0x20, +0x10, 0x00, 0x00, 0x30, 0x31, 0x10, 0x10, 0x00, 0x00, 0x30, 0x04, 0x04, 0x04, 0x05, 0x04, 0x04, +0x05, 0x07, 0x07, 0x07, 0x08, 0x0A, 0x04, 0x04, 0x04, 0x04, 0x06, 0x0A, 0x0B, 0x0D, 0x05, 0x05, +0x07, 0x07, 0x08, 0x0B, 0x0D, 0x0F, 0x04, 0x04, 0x04, 0x05, 0x07, 0x07, 0x09, 0x09, 0x0C, 0x0E, +0x10, 0x12, 0x06, 0x07, 0x09, 0x0A, 0x0C, 0x0E, 0x11, 0x13, 0x09, 0x09, 0x09, 0x09, 0x0C, 0x0E, +0x11, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x26, 0x2A, 0x18, 0x1A, +0x1D, 0x1F, 0x21, 0x27, 0x29, 0x2A, 0x00, 0x00, 0x00, 0x1F, 0x23, 0x28, 0x2A, 0x2C, 0x00, 0x04, +0x00, 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, 0x18, 0x00, 0x24, 0x00, 0x30, 0x00, 0x48, 0x00, 0x60, +0x00, 0x90, 0x00, 0xC0, 0x00, 0xD8, 0x00, 0x50, 0x00, 0x78, 0x00, 0xA0, 0x00, 0xC8, 0x01, 0x40, +0x01, 0x90, 0x01, 0xE0, 0x02, 0x30, 0x01, 0x2C, 0x01, 0x40, 0x01, 0xE0, 0x02, 0xD0, 0x03, 0xE8, +0x04, 0xB0, 0x06, 0x40, 0x07, 0xD0, 0x00, 0x02, 0x00, 0x02, 0x00, 0x04, 0x00, 0x08, 0x00, 0x0C, +0x00, 0x12, 0x00, 0x18, 0x00, 0x24, 0x00, 0x30, 0x00, 0x48, 0x00, 0x60, 0x00, 0x6C, 0x00, 0x28, +0x00, 0x3C, 0x00, 0x50, 0x00, 0x64, 0x00, 0xA0, 0x00, 0xC8, 0x00, 0xF0, 0x01, 0x18, 0x00, 0x64, +0x00, 0xA0, 0x00, 0xF0, 0x01, 0x68, 0x01, 0xF4, 0x02, 0x58, 0x03, 0x20, 0x03, 0xE8, 0x02, 0x02, +0x02, 0x02, 0x02, 0x02, 0x03, 0x03, 0x04, 0x04, 0x05, 0x07, 0x02, 0x03, 0x04, 0x0A, 0x0C, 0x0E, +0x10, 0x12, 0x05, 0x07, 0x07, 0x08, 0x0B, 0x12, 0x24, 0x3C, 0x01, 0x01, 0x01, 0x01, 0x01, 0x02, +0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x05, 0x06, +0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x20, 0x1E, 0x1C, 0x18, 0x10, 0x18, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xBB, 0x01, 0x0C, 0xE5, 0x82, 0x29, 0xF5, 0x82, 0xE5, 0x83, 0x3A, 0xF5, 0x83, 0xE0, 0x22, 0x50, +0x06, 0xE9, 0x25, 0x82, 0xF8, 0xE6, 0x22, 0xBB, 0xFE, 0x06, 0xE9, 0x25, 0x82, 0xF8, 0xE2, 0x22, +0xE5, 0x82, 0x29, 0xF5, 0x82, 0xE5, 0x83, 0x3A, 0xF5, 0x83, 0xE4, 0x93, 0x22, 0xBB, 0x01, 0x06, +0x89, 0x82, 0x8A, 0x83, 0xF0, 0x22, 0x50, 0x02, 0xF7, 0x22, 0xBB, 0xFE, 0x01, 0xF3, 0x22, 0xF8, +0xBB, 0x01, 0x0D, 0xE5, 0x82, 0x29, 0xF5, 0x82, 0xE5, 0x83, 0x3A, 0xF5, 0x83, 0xE8, 0xF0, 0x22, +0x50, 0x06, 0xE9, 0x25, 0x82, 0xC8, 0xF6, 0x22, 0xBB, 0xFE, 0x05, 0xE9, 0x25, 0x82, 0xC8, 0xF2, +0x22, 0xC5, 0xF0, 0xF8, 0xA3, 0xE0, 0x28, 0xF0, 0xC5, 0xF0, 0xF8, 0xE5, 0x82, 0x15, 0x82, 0x70, +0x02, 0x15, 0x83, 0xE0, 0x38, 0xF0, 0x22, 0xBB, 0x01, 0x0A, 0x89, 0x82, 0x8A, 0x83, 0xE0, 0xF5, +0xF0, 0xA3, 0xE0, 0x22, 0x50, 0x06, 0x87, 0xF0, 0x09, 0xE7, 0x19, 0x22, 0xBB, 0xFE, 0x07, 0xE3, +0xF5, 0xF0, 0x09, 0xE3, 0x19, 0x22, 0x89, 0x82, 0x8A, 0x83, 0xE4, 0x93, 0xF5, 0xF0, 0x74, 0x01, +0x93, 0x22, 0xBB, 0x01, 0x10, 0xE5, 0x82, 0x29, 0xF5, 0x82, 0xE5, 0x83, 0x3A, 0xF5, 0x83, 0xE0, +0xF5, 0xF0, 0xA3, 0xE0, 0x22, 0x50, 0x09, 0xE9, 0x25, 0x82, 0xF8, 0x86, 0xF0, 0x08, 0xE6, 0x22, +0xBB, 0xFE, 0x0A, 0xE9, 0x25, 0x82, 0xF8, 0xE2, 0xF5, 0xF0, 0x08, 0xE2, 0x22, 0xE5, 0x83, 0x2A, +0xF5, 0x83, 0xE9, 0x93, 0xF5, 0xF0, 0xA3, 0xE9, 0x93, 0x22, 0xBB, 0x01, 0x0A, 0x89, 0x82, 0x8A, +0x83, 0xF0, 0xE5, 0xF0, 0xA3, 0xF0, 0x22, 0x50, 0x06, 0xF7, 0x09, 0xA7, 0xF0, 0x19, 0x22, 0xBB, +0xFE, 0x06, 0xF3, 0xE5, 0xF0, 0x09, 0xF3, 0x19, 0x22, 0xF8, 0xBB, 0x01, 0x11, 0xE5, 0x82, 0x29, +0xF5, 0x82, 0xE5, 0x83, 0x3A, 0xF5, 0x83, 0xE8, 0xF0, 0xE5, 0xF0, 0xA3, 0xF0, 0x22, 0x50, 0x09, +0xE9, 0x25, 0x82, 0xC8, 0xF6, 0x08, 0xA6, 0xF0, 0x22, 0xBB, 0xFE, 0x09, 0xE9, 0x25, 0x82, 0xC8, +0xF2, 0xE5, 0xF0, 0x08, 0xF2, 0x22, 0xEF, 0x4B, 0xFF, 0xEE, 0x4A, 0xFE, 0xED, 0x49, 0xFD, 0xEC, +0x48, 0xFC, 0x22, 0xE0, 0xFC, 0xA3, 0xE0, 0xFD, 0xA3, 0xE0, 0xFE, 0xA3, 0xE0, 0xFF, 0x22, 0xA4, +0x25, 0x82, 0xF5, 0x82, 0xE5, 0xF0, 0x35, 0x83, 0xF5, 0x83, 0x22, 0xE0, 0xFB, 0xA3, 0xE0, 0xFA, +0xA3, 0xE0, 0xF9, 0x22, 0xF8, 0xE0, 0xFB, 0xA3, 0xA3, 0xE0, 0xF9, 0x25, 0xF0, 0xF0, 0xE5, 0x82, +0x15, 0x82, 0x70, 0x02, 0x15, 0x83, 0xE0, 0xFA, 0x38, 0xF0, 0x22, 0xEB, 0xF0, 0xA3, 0xEA, 0xF0, +0xA3, 0xE9, 0xF0, 0x22, 0xD0, 0x83, 0xD0, 0x82, 0xF8, 0xE4, 0x93, 0x70, 0x12, 0x74, 0x01, 0x93, +0x70, 0x0D, 0xA3, 0xA3, 0x93, 0xF8, 0x74, 0x01, 0x93, 0xF5, 0x82, 0x88, 0x83, 0xE4, 0x73, 0x74, +0x02, 0x93, 0x68, 0x60, 0xEF, 0xA3, 0xA3, 0xA3, 0x80, 0xDF, 0xD0, 0x83, 0xD0, 0x82, 0xF8, 0xE4, +0x93, 0x70, 0x12, 0x74, 0x01, 0x93, 0x70, 0x0D, 0xA3, 0xA3, 0x93, 0xF8, 0x74, 0x01, 0x93, 0xF5, +0x82, 0x88, 0x83, 0xE4, 0x73, 0x74, 0x02, 0x93, 0xB5, 0xF0, 0x06, 0x74, 0x03, 0x93, 0x68, 0x60, +0xE9, 0xA3, 0xA3, 0xA3, 0xA3, 0x80, 0xD8, 0xE4, 0x90, 0x8A, 0xC5, 0xF0, 0xE5, 0x24, 0x70, 0x03, +0x02, 0x44, 0x9D, 0xE5, 0x21, 0x64, 0x01, 0x60, 0x03, 0x02, 0x44, 0x9D, 0xE5, 0x24, 0x14, 0x60, +0x29, 0x24, 0xFD, 0x60, 0x25, 0x24, 0x02, 0x24, 0xFB, 0x50, 0x02, 0x80, 0x23, 0x90, 0x8B, 0x0B, +0xE0, 0x14, 0xF0, 0xE0, 0x60, 0x04, 0xA3, 0xE0, 0x60, 0x16, 0x90, 0x8B, 0x0B, 0xE0, 0x70, 0x0A, +0x90, 0x8B, 0x19, 0xE0, 0x90, 0x8B, 0x0B, 0xF0, 0x80, 0x00, 0x90, 0x8A, 0xC5, 0x74, 0x01, 0xF0, +0x90, 0x8B, 0x2C, 0xE0, 0x30, 0xE0, 0x16, 0xA3, 0xE0, 0xB4, 0x06, 0x05, 0xE4, 0x90, 0x8A, 0xC5, +0xF0, 0xE4, 0xFF, 0x12, 0x4D, 0xE0, 0xEF, 0x70, 0x04, 0x90, 0x8A, 0xC5, 0xF0, 0x90, 0x8A, 0xC5, +0xE0, 0x60, 0x4A, 0x43, 0x25, 0x10, 0xE4, 0x90, 0x8B, 0x3D, 0xF0, 0x90, 0x8B, 0x0C, 0xE0, 0x75, +0xF0, 0x03, 0xA4, 0xFF, 0x90, 0x8B, 0x15, 0xE0, 0x2F, 0x90, 0x8B, 0x3E, 0xF0, 0xE4, 0xFB, 0xFD, +0x7F, 0x54, 0x7E, 0x01, 0x12, 0x4B, 0x6C, 0x90, 0x01, 0x57, 0x74, 0x05, 0xF0, 0xE5, 0x22, 0x54, +0x0F, 0xC3, 0x94, 0x04, 0x50, 0x07, 0x7D, 0x01, 0x7F, 0x04, 0x12, 0x45, 0xA2, 0x90, 0x8B, 0x2C, +0xE0, 0x30, 0xE0, 0x09, 0x12, 0x7D, 0xC1, 0x90, 0x05, 0x22, 0x74, 0xFF, 0xF0, 0x22, 0xE4, 0xF5, +0x25, 0xF5, 0x24, 0x75, 0x23, 0x0C, 0x75, 0x22, 0x0C, 0x90, 0x8B, 0x1A, 0xF0, 0x90, 0x8B, 0x18, +0xF0, 0x90, 0x8B, 0x17, 0xF0, 0x90, 0x8B, 0x19, 0x04, 0xF0, 0x90, 0x8B, 0x0B, 0xF0, 0xE4, 0x90, +0x8B, 0x1B, 0xF0, 0x90, 0x8B, 0x0D, 0xF0, 0x90, 0x8B, 0x15, 0x74, 0x05, 0xF0, 0xE4, 0x90, 0x8B, +0x0C, 0xF0, 0x90, 0x8B, 0x13, 0xF0, 0xA3, 0x74, 0x03, 0xF0, 0x90, 0x8B, 0x10, 0xF0, 0xA3, 0x74, +0x05, 0xF0, 0x90, 0x8B, 0x0F, 0x74, 0x14, 0xF0, 0x90, 0x8B, 0x16, 0x74, 0x05, 0xF0, 0xE4, 0x90, +0x8B, 0x0E, 0xF0, 0x90, 0x8B, 0x0A, 0xF0, 0x90, 0x8B, 0x08, 0xF0, 0x90, 0x8B, 0x12, 0xF0, 0x22, +0x7F, 0x00, 0x22, 0x02, 0x45, 0x03, 0x02, 0x45, 0x06, 0x8E, 0x64, 0x8F, 0x65, 0xAD, 0x65, 0xAC, +0x64, 0xAF, 0x63, 0x12, 0x4A, 0x5B, 0xAF, 0x65, 0xAE, 0x64, 0x90, 0x04, 0x80, 0xE0, 0x54, 0x0F, +0xFD, 0xAC, 0x07, 0x74, 0x11, 0x2C, 0xF5, 0x82, 0xE4, 0x34, 0xFC, 0xF5, 0x83, 0xE0, 0x44, 0x01, +0xF0, 0x74, 0x11, 0x2C, 0xF5, 0x82, 0xE4, 0x34, 0xFC, 0xF5, 0x83, 0xE0, 0x54, 0xFB, 0xF0, 0xAC, +0x07, 0x74, 0x16, 0x2C, 0xF5, 0x82, 0xE4, 0x34, 0xFC, 0xF5, 0x83, 0xE0, 0x44, 0xFA, 0xF0, 0x74, +0x15, 0x2C, 0xF5, 0x82, 0xE4, 0x34, 0xFC, 0xF5, 0x83, 0xE0, 0x44, 0x1F, 0xF0, 0xAC, 0x07, 0x74, +0x06, 0x2C, 0xF5, 0x82, 0xE4, 0x34, 0xFC, 0xF5, 0x83, 0xE0, 0x44, 0x0F, 0xF0, 0x90, 0x04, 0x53, +0xE4, 0xF0, 0x90, 0x04, 0x52, 0xF0, 0x90, 0x04, 0x51, 0x74, 0xFF, 0xF0, 0x90, 0x04, 0x50, 0x74, +0xFD, 0xF0, 0x74, 0x14, 0x2C, 0xF5, 0x82, 0xE4, 0x34, 0xFC, 0xF5, 0x83, 0xE0, 0x54, 0xC0, 0x4D, +0xFD, 0x74, 0x14, 0x2F, 0xF5, 0x82, 0xE4, 0x34, 0xFC, 0xF5, 0x83, 0xED, 0xF0, 0x22, 0x7D, 0x01, +0x7F, 0x0C, 0xD3, 0x10, 0xAF, 0x01, 0xC3, 0xC0, 0xD0, 0x8F, 0x67, 0x8D, 0x68, 0xE5, 0x67, 0x54, +0x0F, 0xFF, 0xE5, 0x22, 0x54, 0x0F, 0x6F, 0x60, 0x72, 0xE5, 0x67, 0x30, 0xE2, 0x30, 0xE5, 0x22, +0x20, 0xE2, 0x05, 0x7F, 0x01, 0x12, 0x4A, 0xB2, 0xE5, 0x22, 0x30, 0xE3, 0x10, 0xE5, 0x67, 0x20, +0xE3, 0x0B, 0x12, 0x49, 0xD5, 0xEF, 0x60, 0x53, 0x12, 0x4A, 0xCC, 0x80, 0x4E, 0xE5, 0x22, 0x20, +0xE3, 0x49, 0xE5, 0x67, 0x30, 0xE3, 0x44, 0xAF, 0x68, 0x12, 0x4A, 0x7C, 0x80, 0x3D, 0xE5, 0x22, +0x54, 0x0F, 0xFF, 0xBF, 0x0C, 0x0E, 0xE5, 0x67, 0x20, 0xE3, 0x09, 0x12, 0x49, 0xD5, 0xEF, 0x60, +0x2A, 0x12, 0x4A, 0xCC, 0xE5, 0x22, 0x54, 0x0F, 0xFF, 0xBF, 0x04, 0x0E, 0xE5, 0x67, 0x20, 0xE2, +0x09, 0x12, 0x49, 0x93, 0xEF, 0x60, 0x14, 0x12, 0x4A, 0x32, 0xE5, 0x22, 0x54, 0x0F, 0xFF, 0xBF, +0x02, 0x09, 0x12, 0x45, 0x00, 0xEF, 0x60, 0x03, 0x12, 0x4B, 0x10, 0xD0, 0xD0, 0x92, 0xAF, 0x22, +0x02, 0x46, 0x6E, 0x02, 0x50, 0xC6, 0xE4, 0x93, 0xA3, 0xF8, 0xE4, 0x93, 0xA3, 0x40, 0x03, 0xF6, +0x80, 0x01, 0xF2, 0x08, 0xDF, 0xF4, 0x80, 0x29, 0xE4, 0x93, 0xA3, 0xF8, 0x54, 0x07, 0x24, 0x0C, +0xC8, 0xC3, 0x33, 0xC4, 0x54, 0x0F, 0x44, 0x20, 0xC8, 0x83, 0x40, 0x04, 0xF4, 0x56, 0x80, 0x01, +0x46, 0xF6, 0xDF, 0xE4, 0x80, 0x0B, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x90, 0x4B, +0x23, 0xE4, 0x7E, 0x01, 0x93, 0x60, 0xBC, 0xA3, 0xFF, 0x54, 0x3F, 0x30, 0xE5, 0x09, 0x54, 0x1F, +0xFE, 0xE4, 0x93, 0xA3, 0x60, 0x01, 0x0E, 0xCF, 0x54, 0xC0, 0x25, 0xE0, 0x60, 0xA8, 0x40, 0xB8, +0xE4, 0x93, 0xA3, 0xFA, 0xE4, 0x93, 0xA3, 0xF8, 0xE4, 0x93, 0xA3, 0xC8, 0xC5, 0x82, 0xC8, 0xCA, +0xC5, 0x83, 0xCA, 0xF0, 0xA3, 0xC8, 0xC5, 0x82, 0xC8, 0xCA, 0xC5, 0x83, 0xCA, 0xDF, 0xE9, 0xDE, +0xE7, 0x80, 0xBE, 0xE5, 0x21, 0x64, 0x01, 0x70, 0x67, 0xE5, 0x24, 0x60, 0x63, 0xE5, 0x24, 0x64, +0x02, 0x60, 0x06, 0xE5, 0x24, 0x64, 0x05, 0x70, 0x27, 0x90, 0x06, 0xAB, 0xE0, 0x90, 0x8B, 0x0B, +0xF0, 0x90, 0x06, 0xAA, 0xE0, 0x90, 0x8B, 0x19, 0xF0, 0x90, 0x8B, 0x0B, 0xE0, 0x70, 0x07, 0x90, +0x8B, 0x19, 0xE0, 0xFF, 0x80, 0x05, 0x90, 0x8B, 0x0B, 0xE0, 0xFF, 0x90, 0x8B, 0x0B, 0xEF, 0xF0, +0x90, 0x8B, 0x0D, 0xE0, 0x60, 0x02, 0xE4, 0xF0, 0xE4, 0x90, 0x8B, 0x0C, 0xF0, 0x90, 0x05, 0x58, +0x74, 0x03, 0xF0, 0x90, 0x01, 0x57, 0xE4, 0xF0, 0x90, 0x01, 0x3C, 0x74, 0x02, 0xF0, 0x53, 0x25, +0xFD, 0x53, 0x25, 0xEF, 0xE5, 0x24, 0x14, 0x24, 0xFD, 0x50, 0x02, 0x80, 0x03, 0x12, 0x47, 0x8E, +0x22, 0xEF, 0x64, 0x01, 0x70, 0x35, 0x7D, 0x78, 0x7F, 0x02, 0x12, 0x31, 0x2C, 0x7D, 0x02, 0x7F, +0x03, 0x12, 0x31, 0x2C, 0x90, 0x01, 0x57, 0xE4, 0xF0, 0x90, 0x01, 0x3C, 0x74, 0x02, 0xF0, 0x12, +0x45, 0x9E, 0x90, 0x8B, 0x2C, 0xE0, 0x30, 0xE0, 0x03, 0x12, 0x7D, 0xC1, 0x90, 0x06, 0x04, 0xE0, +0x54, 0x7F, 0xF0, 0x90, 0x06, 0x0A, 0xE0, 0x54, 0xF8, 0xF0, 0x22, 0x90, 0x01, 0x36, 0x74, 0x7B, +0xF0, 0xA3, 0x74, 0x02, 0xF0, 0x7D, 0x7B, 0xFF, 0x12, 0x31, 0x9D, 0x7D, 0x02, 0x7F, 0x03, 0x12, +0x31, 0x9D, 0x90, 0x06, 0x04, 0xE0, 0x44, 0x80, 0xF0, 0x90, 0x06, 0x0A, 0xE0, 0x44, 0x07, 0xF0, +0x12, 0x4B, 0x4F, 0xE5, 0x21, 0x20, 0xE0, 0x05, 0xE4, 0x90, 0x8B, 0x0D, 0xF0, 0x22, 0xE4, 0x90, +0x8A, 0xC5, 0xF0, 0x90, 0x06, 0xA9, 0xE0, 0x90, 0x8A, 0xC5, 0xF0, 0xE0, 0x54, 0xC0, 0x70, 0x09, +0x53, 0x25, 0xFE, 0x53, 0x25, 0xFD, 0x12, 0x4A, 0xFC, 0x90, 0x8A, 0xC5, 0xE0, 0x30, 0xE6, 0x15, +0x43, 0x25, 0x01, 0x90, 0x8B, 0x1A, 0xE0, 0x64, 0x02, 0x60, 0x05, 0x12, 0x4A, 0x97, 0x80, 0x08, +0x12, 0x49, 0x49, 0x80, 0x03, 0x53, 0x25, 0xFE, 0x90, 0x8A, 0xC5, 0xE0, 0x30, 0xE7, 0x27, 0x43, +0x25, 0x02, 0xE4, 0x90, 0x8B, 0x3D, 0xF0, 0x90, 0x8B, 0x11, 0xE0, 0x90, 0x8B, 0x3E, 0xF0, 0xE4, +0xFB, 0xFD, 0x7F, 0x54, 0x7E, 0x01, 0x12, 0x4B, 0x6C, 0x90, 0x01, 0x57, 0x74, 0x05, 0xF0, 0x90, +0x8B, 0x1B, 0x74, 0x01, 0xF0, 0x22, 0x53, 0x25, 0xFD, 0x22, 0x90, 0x8A, 0xDE, 0x12, 0x43, 0x8B, +0x12, 0x4B, 0x43, 0x90, 0x8A, 0xDE, 0x12, 0x43, 0x6B, 0x12, 0x24, 0x62, 0xF5, 0x24, 0x14, 0x60, +0x0E, 0x14, 0x60, 0x1F, 0x14, 0x60, 0x31, 0x24, 0x03, 0x70, 0x44, 0x7F, 0x01, 0x80, 0x3D, 0x90, +0x8A, 0xDE, 0x12, 0x43, 0x6B, 0x90, 0x00, 0x02, 0x12, 0x42, 0x20, 0xFD, 0xE4, 0xFF, 0x12, 0x4A, +0x07, 0x80, 0x29, 0x90, 0x8A, 0xDE, 0x12, 0x43, 0x6B, 0x90, 0x00, 0x02, 0x12, 0x42, 0x20, 0xFD, +0x7F, 0x01, 0x12, 0x4A, 0x07, 0x1F, 0x80, 0x14, 0x90, 0x8A, 0xDE, 0x12, 0x43, 0x6B, 0x90, 0x00, +0x02, 0x12, 0x42, 0x20, 0xFD, 0x7F, 0x02, 0x12, 0x4A, 0x07, 0xE4, 0xFF, 0x12, 0x47, 0x21, 0x22, +0xE4, 0x90, 0x8A, 0xCB, 0xF0, 0xE5, 0x24, 0x60, 0x49, 0x90, 0x8B, 0x1B, 0xE0, 0x60, 0x0D, 0xE4, +0xF0, 0x53, 0x25, 0xFD, 0xE5, 0x25, 0x54, 0x07, 0x70, 0x38, 0x80, 0x33, 0x90, 0x8B, 0x0C, 0xE0, +0x04, 0xF0, 0x53, 0x25, 0xEF, 0x90, 0x8A, 0xCB, 0xE0, 0xFF, 0x90, 0x8B, 0x10, 0xE0, 0x2F, 0xFF, +0xE4, 0x33, 0xFE, 0x90, 0x8B, 0x0C, 0xE0, 0xD3, 0x9F, 0xEE, 0x64, 0x80, 0xF8, 0x74, 0x80, 0x98, +0x40, 0x0D, 0xE5, 0x21, 0xB4, 0x01, 0x0B, 0xA3, 0xE0, 0x70, 0x07, 0xE0, 0x04, 0xF0, 0x22, 0x12, +0x4A, 0xFC, 0x22, 0xD3, 0x10, 0xAF, 0x01, 0xC3, 0xC0, 0xD0, 0x8F, 0x63, 0x90, 0x04, 0x1D, 0xE0, +0x60, 0x24, 0x90, 0x05, 0x22, 0xE0, 0xF5, 0x66, 0x74, 0xFF, 0xF0, 0x12, 0x7E, 0x9A, 0xBF, 0x01, +0x0D, 0x90, 0x8A, 0xF9, 0xE0, 0xFF, 0x7D, 0x01, 0x12, 0x5F, 0xFD, 0x12, 0x45, 0x09, 0x90, 0x05, +0x22, 0xE5, 0x66, 0xF0, 0x80, 0x0D, 0x90, 0x8A, 0xF9, 0xE0, 0xFF, 0x7D, 0x01, 0x12, 0x5F, 0xFD, +0x12, 0x45, 0x09, 0x90, 0x04, 0x1F, 0x74, 0x20, 0xF0, 0xD0, 0xD0, 0x92, 0xAF, 0x22, 0xE5, 0x24, +0x14, 0x24, 0xFD, 0x50, 0x02, 0x80, 0x41, 0x90, 0x8B, 0x1A, 0xE0, 0x60, 0x2B, 0x12, 0x45, 0x9E, +0xE4, 0x90, 0x8B, 0x3D, 0xF0, 0x90, 0x8B, 0x0F, 0xE0, 0x90, 0x8B, 0x3E, 0xF0, 0xE4, 0xFB, 0xFD, +0x7F, 0x58, 0x7E, 0x01, 0x12, 0x4B, 0x6C, 0x90, 0x01, 0x5B, 0x74, 0x05, 0xF0, 0x90, 0x06, 0x92, +0x74, 0x01, 0xF0, 0x90, 0x8B, 0x18, 0xF0, 0x22, 0xE5, 0x22, 0x54, 0x0F, 0xC3, 0x94, 0x04, 0x50, +0x07, 0x7D, 0x01, 0x7F, 0x04, 0x12, 0x45, 0xA2, 0x22, 0x90, 0x01, 0x5F, 0xE4, 0xF0, 0x90, 0x01, +0x3C, 0x74, 0x08, 0xF0, 0xE4, 0x90, 0x8B, 0x3D, 0xF0, 0x90, 0x8B, 0x0F, 0xE0, 0x90, 0x8B, 0x3E, +0xF0, 0xE4, 0xFB, 0xFD, 0x7F, 0x5C, 0x7E, 0x01, 0x12, 0x4B, 0x6C, 0x90, 0x01, 0x5F, 0x74, 0x05, +0xF0, 0x90, 0x06, 0x92, 0x74, 0x02, 0xF0, 0x90, 0x8B, 0x17, 0x14, 0xF0, 0xE5, 0x22, 0x54, 0x0F, +0xC3, 0x94, 0x0C, 0x50, 0x0D, 0x12, 0x45, 0x9E, 0x90, 0x8B, 0x2C, 0xE0, 0x30, 0xE0, 0x03, 0x12, +0x7D, 0xC1, 0x22, 0x12, 0x4B, 0x34, 0xEF, 0x64, 0x01, 0x70, 0x37, 0xE5, 0x25, 0x54, 0x03, 0x70, +0x31, 0xE5, 0x23, 0x54, 0x0F, 0xD3, 0x94, 0x02, 0x50, 0x28, 0xE5, 0x25, 0x20, 0xE2, 0x23, 0xE5, +0x25, 0x20, 0xE4, 0x1E, 0x90, 0x8B, 0x0D, 0xE0, 0x70, 0x18, 0x90, 0x8B, 0x12, 0xE0, 0x70, 0x12, +0xE5, 0x26, 0x70, 0x0E, 0x90, 0x01, 0xB9, 0xE4, 0xF0, 0x90, 0x01, 0xB8, 0x74, 0x04, 0xF0, 0x7F, +0x01, 0x22, 0x7F, 0x00, 0x22, 0x12, 0x4B, 0x34, 0xEF, 0x64, 0x01, 0x70, 0x27, 0x90, 0x8B, 0x18, +0xE0, 0x70, 0x21, 0x90, 0x8B, 0x17, 0xE0, 0x70, 0x1B, 0xE5, 0x23, 0x54, 0x0F, 0xD3, 0x94, 0x04, +0x50, 0x12, 0xE5, 0x26, 0x70, 0x0E, 0x90, 0x01, 0xB9, 0xE4, 0xF0, 0x90, 0x01, 0xB8, 0x74, 0x08, +0xF0, 0x7F, 0x01, 0x22, 0x7F, 0x00, 0x22, 0xEF, 0x24, 0xFE, 0x60, 0x0B, 0x04, 0x70, 0x22, 0x90, +0x8B, 0x19, 0x74, 0x01, 0xF0, 0x80, 0x16, 0xED, 0x70, 0x0A, 0x90, 0x8B, 0x16, 0xE0, 0x90, 0x8B, +0x19, 0xF0, 0x80, 0x05, 0x90, 0x8B, 0x19, 0xED, 0xF0, 0x90, 0x8B, 0x19, 0xE0, 0x90, 0x8B, 0x0B, +0xF0, 0x22, 0x90, 0x01, 0x37, 0x74, 0x02, 0xF0, 0x90, 0x05, 0x22, 0x74, 0xFF, 0xF0, 0x12, 0x7E, +0x9A, 0xEF, 0x70, 0x06, 0x90, 0x01, 0xC8, 0x74, 0xFD, 0xF0, 0x7D, 0x02, 0x7F, 0x03, 0x12, 0x31, +0x9D, 0x12, 0x7C, 0x50, 0x53, 0x22, 0xF0, 0x43, 0x22, 0x02, 0x22, 0xEF, 0x60, 0x0F, 0x74, 0x21, +0x2D, 0xF5, 0x82, 0xE4, 0x34, 0xFC, 0xF5, 0x83, 0xE0, 0x44, 0x10, 0xF0, 0x22, 0x74, 0x21, 0x2D, +0xF5, 0x82, 0xE4, 0x34, 0xFC, 0xF5, 0x83, 0xE0, 0x54, 0xEF, 0xF0, 0x22, 0x90, 0x06, 0x04, 0xE0, +0x54, 0xBF, 0xF0, 0xEF, 0x60, 0x0A, 0xE5, 0x21, 0xB4, 0x01, 0x05, 0xE4, 0xFF, 0x12, 0x48, 0xB3, +0x53, 0x22, 0xF0, 0x43, 0x22, 0x0C, 0x22, 0x90, 0x04, 0x1D, 0xE0, 0x70, 0x14, 0x90, 0x8A, 0xF8, +0xE0, 0xFF, 0xE4, 0xFD, 0x12, 0x5F, 0xFD, 0x8E, 0x69, 0x8F, 0x6A, 0x90, 0x04, 0x1F, 0x74, 0x20, +0xF0, 0x22, 0x90, 0x8B, 0x52, 0xEF, 0xF0, 0x12, 0x7D, 0x42, 0x90, 0x8B, 0x52, 0xE0, 0x60, 0x05, +0x90, 0x05, 0x22, 0xE4, 0xF0, 0x53, 0x22, 0xF0, 0x43, 0x22, 0x04, 0x22, 0x90, 0x06, 0x04, 0xE0, +0x44, 0x40, 0xF0, 0xE5, 0x21, 0xB4, 0x01, 0x05, 0x7F, 0x01, 0x12, 0x48, 0xB3, 0x53, 0x22, 0xF0, +0x43, 0x22, 0x04, 0x22, 0xE5, 0x23, 0x30, 0xE6, 0x12, 0xE5, 0x23, 0x54, 0x0F, 0xFF, 0x90, 0x01, +0x2F, 0xE0, 0x54, 0x80, 0x4F, 0x64, 0x80, 0xF0, 0x53, 0x23, 0xBF, 0x22, 0x90, 0x8B, 0x2C, 0xE0, +0x30, 0xE0, 0x05, 0xAF, 0x23, 0x02, 0x7E, 0x06, 0x7D, 0x01, 0xAF, 0x23, 0x12, 0x45, 0xA2, 0x22, +0x53, 0x22, 0xF0, 0x43, 0x22, 0x01, 0x12, 0x4B, 0x5A, 0x12, 0x4B, 0x5B, 0x53, 0x22, 0xF0, 0x43, +0x22, 0x02, 0x22, 0x41, 0x8A, 0xF6, 0x00, 0x41, 0x8B, 0x05, 0x00, 0x41, 0x8B, 0x51, 0x00, 0x41, +0x8B, 0x53, 0x00, 0x00, 0x90, 0x04, 0x1B, 0xE0, 0x54, 0x7F, 0x64, 0x7F, 0x7F, 0x01, 0x60, 0x02, +0x7F, 0x00, 0x22, 0xE4, 0x90, 0x8B, 0x1B, 0xF0, 0x90, 0x8B, 0x0C, 0xF0, 0xF5, 0x25, 0x22, 0x90, +0x8B, 0x13, 0xE0, 0xA3, 0xE0, 0x90, 0x05, 0x58, 0xF0, 0x22, 0x22, 0x22, 0xF0, 0x90, 0x8B, 0x0F, +0xE0, 0x90, 0x8B, 0x3E, 0xF0, 0xE4, 0xFB, 0xFD, 0x7F, 0x58, 0x7E, 0x01, 0xD3, 0x10, 0xAF, 0x01, +0xC3, 0xC0, 0xD0, 0x90, 0x8B, 0x3D, 0xE0, 0xFB, 0xA3, 0xE0, 0xF5, 0x44, 0xE4, 0xF5, 0x45, 0x12, +0x30, 0x62, 0xD0, 0xD0, 0x92, 0xAF, 0x22, 0xC0, 0xE0, 0xC0, 0xF0, 0xC0, 0x83, 0xC0, 0x82, 0xC0, +0xD0, 0x75, 0xD0, 0x00, 0xC0, 0x00, 0xC0, 0x01, 0xC0, 0x02, 0xC0, 0x03, 0xC0, 0x04, 0xC0, 0x05, +0xC0, 0x06, 0xC0, 0x07, 0x75, 0x0E, 0x00, 0x90, 0x01, 0xC4, 0x74, 0x87, 0xF0, 0x74, 0x4B, 0xA3, +0xF0, 0x53, 0x91, 0xDF, 0x90, 0x01, 0x3C, 0xE0, 0x55, 0x30, 0xF5, 0x34, 0xA3, 0xE0, 0x55, 0x31, +0xF5, 0x35, 0xA3, 0xE0, 0x55, 0x32, 0xF5, 0x36, 0xA3, 0xE0, 0x55, 0x33, 0xF5, 0x37, 0xE5, 0x34, +0x30, 0xE0, 0x51, 0x90, 0x01, 0x3C, 0x74, 0x01, 0xF0, 0x90, 0x8B, 0x32, 0xE0, 0x30, 0xE0, 0x1F, +0x13, 0x13, 0x54, 0x3F, 0x30, 0xE0, 0x18, 0x90, 0x8B, 0x34, 0xE4, 0xF0, 0x90, 0x8B, 0x33, 0xE0, +0x64, 0x03, 0x60, 0x0B, 0x7F, 0x01, 0xB1, 0xE0, 0xEF, 0x70, 0x04, 0x7F, 0x02, 0xD1, 0x89, 0x90, +0x8B, 0x2C, 0xE0, 0xFF, 0x30, 0xE0, 0x1D, 0x13, 0x13, 0x54, 0x3F, 0x30, 0xE0, 0x16, 0x90, 0x8B, +0x2E, 0xE4, 0xF0, 0x90, 0x8B, 0x2D, 0xE0, 0x64, 0x06, 0x60, 0x09, 0xE4, 0xFF, 0xB1, 0xE0, 0xEF, +0x70, 0x02, 0xD1, 0x56, 0xE5, 0x34, 0x30, 0xE1, 0x08, 0x90, 0x01, 0x3C, 0x74, 0x02, 0xF0, 0x11, +0x60, 0xE5, 0x34, 0x30, 0xE2, 0x28, 0x90, 0x01, 0x3C, 0x74, 0x04, 0xF0, 0x90, 0x06, 0x92, 0xE0, +0x30, 0xE0, 0x14, 0x90, 0x8B, 0x3D, 0xE4, 0x71, 0x5C, 0x90, 0x01, 0x5B, 0x74, 0x05, 0xF0, 0x90, +0x06, 0x92, 0x74, 0x01, 0xF0, 0x80, 0x07, 0x90, 0x8B, 0x18, 0xE4, 0xF0, 0x51, 0xFC, 0xE5, 0x34, +0x30, 0xE3, 0x38, 0x90, 0x01, 0x3C, 0x74, 0x08, 0xF0, 0x90, 0x06, 0x92, 0xE0, 0x30, 0xE1, 0x24, +0x90, 0x8B, 0x3D, 0xE4, 0xF0, 0x90, 0x8B, 0x0F, 0xE0, 0x90, 0x8B, 0x3E, 0xF0, 0xE4, 0xFB, 0xFD, +0x7F, 0x5C, 0x7E, 0x01, 0x71, 0x6C, 0x90, 0x01, 0x5F, 0x74, 0x05, 0xF0, 0x90, 0x06, 0x92, 0x74, +0x02, 0xF0, 0x80, 0x07, 0x90, 0x8B, 0x17, 0xE4, 0xF0, 0x51, 0xFC, 0xE5, 0x34, 0x30, 0xE4, 0x09, +0x90, 0x01, 0x3C, 0x74, 0x10, 0xF0, 0x12, 0x51, 0xC9, 0xE5, 0x34, 0x30, 0xE5, 0x06, 0x90, 0x01, +0x3C, 0x74, 0x20, 0xF0, 0xE5, 0x35, 0x30, 0xE0, 0x10, 0x90, 0x01, 0x3D, 0x74, 0x01, 0xF0, 0x90, +0x00, 0x83, 0xE0, 0xF5, 0x23, 0x51, 0xE4, 0x51, 0xFC, 0xE5, 0x35, 0x30, 0xE2, 0x06, 0x90, 0x01, +0x3D, 0x74, 0x04, 0xF0, 0xE5, 0x35, 0x30, 0xE4, 0x1B, 0x90, 0x01, 0x3D, 0x74, 0x10, 0xF0, 0x90, +0x8B, 0x05, 0xE0, 0x60, 0x0F, 0xE4, 0xF0, 0x90, 0x05, 0x53, 0xE0, 0x44, 0x01, 0xF0, 0x90, 0x05, +0xFD, 0xE0, 0x04, 0xF0, 0xE5, 0x36, 0x30, 0xE0, 0x75, 0x90, 0x01, 0x3E, 0x74, 0x01, 0xF0, 0x90, +0x8B, 0x32, 0xE0, 0x30, 0xE0, 0x18, 0x90, 0x8B, 0x36, 0xE4, 0xF0, 0x90, 0x8B, 0x33, 0xE0, 0x64, +0x03, 0x60, 0x0B, 0x7F, 0x01, 0xB1, 0xE0, 0xEF, 0x60, 0x04, 0x7F, 0x01, 0xD1, 0x89, 0x90, 0x8B, +0x2C, 0xE0, 0x30, 0xE0, 0x49, 0x90, 0x8B, 0x30, 0xE4, 0xF0, 0xFF, 0xB1, 0xE0, 0xEF, 0x60, 0x3E, +0x12, 0x65, 0x5F, 0x90, 0x8B, 0x2D, 0xE0, 0xFF, 0x64, 0x06, 0x60, 0x32, 0xEF, 0xB4, 0x04, 0x02, +0x80, 0x07, 0x90, 0x8B, 0x2D, 0xE0, 0xB4, 0x05, 0x04, 0xE4, 0xFF, 0x80, 0x14, 0x90, 0x8B, 0x2D, +0xE0, 0xB4, 0x03, 0x04, 0x7F, 0x01, 0x80, 0x09, 0x90, 0x8B, 0x2D, 0xE0, 0xB4, 0x02, 0x05, 0x7F, +0x01, 0x12, 0x65, 0x82, 0x7D, 0x01, 0xAF, 0x23, 0x12, 0x45, 0xA2, 0x12, 0x7D, 0xC1, 0xE5, 0x36, +0x30, 0xE1, 0x47, 0x90, 0x01, 0x3E, 0x74, 0x02, 0xF0, 0x90, 0x8B, 0x32, 0xE0, 0x30, 0xE0, 0x19, +0x90, 0x8B, 0x36, 0x74, 0x01, 0xF0, 0x90, 0x8B, 0x33, 0xE0, 0x64, 0x03, 0x60, 0x0B, 0x7F, 0x01, +0xB1, 0xE0, 0xEF, 0x70, 0x04, 0x7F, 0x02, 0xD1, 0x89, 0x90, 0x8B, 0x2C, 0xE0, 0x30, 0xE0, 0x1A, +0x90, 0x8B, 0x30, 0x74, 0x01, 0xF0, 0x12, 0x7E, 0x2B, 0x90, 0x8B, 0x2D, 0xE0, 0x64, 0x06, 0x60, +0x09, 0xE4, 0xFF, 0xB1, 0xE0, 0xEF, 0x70, 0x02, 0xD1, 0x56, 0x74, 0x87, 0x04, 0x90, 0x01, 0xC4, +0xF0, 0x74, 0x4B, 0xA3, 0xF0, 0xD0, 0x07, 0xD0, 0x06, 0xD0, 0x05, 0xD0, 0x04, 0xD0, 0x03, 0xD0, +0x02, 0xD0, 0x01, 0xD0, 0x00, 0xD0, 0xD0, 0xD0, 0x82, 0xD0, 0x83, 0xD0, 0xF0, 0xD0, 0xE0, 0x32, +0xEF, 0x64, 0x01, 0x70, 0x3D, 0x90, 0x8B, 0x35, 0xE0, 0x60, 0x03, 0x7F, 0x00, 0x22, 0x90, 0x8B, +0x08, 0xE0, 0x60, 0x03, 0x7F, 0x01, 0x22, 0x90, 0x8B, 0x34, 0xE0, 0x60, 0x03, 0x7F, 0x01, 0x22, +0x90, 0x8B, 0x32, 0xE0, 0xFF, 0x13, 0x13, 0x54, 0x3F, 0x30, 0xE0, 0x0B, 0xEF, 0xC4, 0x13, 0x54, +0x07, 0x30, 0xE0, 0x03, 0x7F, 0x00, 0x22, 0x90, 0x8B, 0x36, 0xE0, 0x7F, 0x01, 0x60, 0x36, 0x7F, +0x00, 0x22, 0x90, 0x8B, 0x2F, 0xE0, 0x60, 0x03, 0x7F, 0x00, 0x22, 0x90, 0x8B, 0x08, 0xE0, 0x60, +0x03, 0x7F, 0x01, 0x22, 0x90, 0x8B, 0x2E, 0xE0, 0x60, 0x03, 0x7F, 0x01, 0x22, 0x90, 0x8B, 0x2C, +0xE0, 0x13, 0x13, 0x54, 0x3F, 0x30, 0xE0, 0x03, 0x7F, 0x00, 0x22, 0x90, 0x8B, 0x30, 0xE0, 0x7F, +0x01, 0x60, 0x02, 0x7F, 0x00, 0x22, 0x90, 0x8B, 0x0D, 0xE0, 0x60, 0x16, 0x90, 0x8B, 0x2D, 0xE0, +0x70, 0x04, 0x7F, 0x05, 0x80, 0x1F, 0x90, 0x8B, 0x2D, 0xE0, 0x64, 0x01, 0x70, 0x1A, 0x7F, 0x02, +0x80, 0x13, 0x90, 0x8B, 0x2D, 0xE0, 0xB4, 0x01, 0x04, 0x7F, 0x03, 0x80, 0x08, 0x90, 0x8B, 0x2D, +0xE0, 0x70, 0x05, 0x7F, 0x04, 0x12, 0x65, 0x82, 0x22, 0xD3, 0x10, 0xAF, 0x01, 0xC3, 0xC0, 0xD0, +0x90, 0x8B, 0x33, 0xE0, 0x90, 0x8B, 0x55, 0xF0, 0x6F, 0x70, 0x02, 0xE1, 0x55, 0xEF, 0x14, 0x60, +0x3B, 0x14, 0x60, 0x5F, 0x14, 0x70, 0x02, 0xE1, 0x30, 0x24, 0x03, 0x60, 0x02, 0xE1, 0x55, 0x90, +0x8B, 0x55, 0xE0, 0xB4, 0x03, 0x04, 0xF1, 0xC2, 0xE1, 0x55, 0x90, 0x8B, 0x55, 0xE0, 0xB4, 0x02, +0x04, 0xF1, 0xAF, 0xE1, 0x55, 0x90, 0x8B, 0x55, 0xE0, 0xB4, 0x04, 0x04, 0xF1, 0xC6, 0xE1, 0x55, +0x90, 0x8B, 0x55, 0xE0, 0x64, 0x01, 0x70, 0x7D, 0xF1, 0xB1, 0x80, 0x79, 0x90, 0x8B, 0x55, 0xE0, +0xFF, 0xB4, 0x03, 0x04, 0xF1, 0xCA, 0x80, 0x6D, 0xEF, 0xB4, 0x02, 0x04, 0xF1, 0xA1, 0x80, 0x65, +0x90, 0x8B, 0x55, 0xE0, 0xFF, 0xB4, 0x04, 0x04, 0xF1, 0xD5, 0x80, 0x59, 0xEF, 0x70, 0x56, 0xF1, +0x8E, 0x80, 0x52, 0x90, 0x8B, 0x55, 0xE0, 0xB4, 0x03, 0x05, 0x12, 0x7C, 0x41, 0x80, 0x46, 0x90, +0x8B, 0x55, 0xE0, 0xB4, 0x01, 0x04, 0xF1, 0x72, 0x80, 0x3B, 0x90, 0x8B, 0x55, 0xE0, 0xB4, 0x04, +0x05, 0x12, 0x7D, 0x23, 0x80, 0x2F, 0x90, 0x8B, 0x55, 0xE0, 0x70, 0x29, 0xF1, 0x70, 0x80, 0x25, +0x90, 0x8B, 0x55, 0xE0, 0xFF, 0xB4, 0x01, 0x04, 0xF1, 0x5A, 0x80, 0x19, 0xEF, 0xB4, 0x02, 0x04, +0xF1, 0x6B, 0x80, 0x11, 0x90, 0x8B, 0x55, 0xE0, 0xFF, 0xB4, 0x04, 0x04, 0xF1, 0x5A, 0x80, 0x05, +0xEF, 0x70, 0x02, 0xF1, 0x67, 0xD0, 0xD0, 0x92, 0xAF, 0x22, 0x90, 0x05, 0x22, 0x74, 0x6F, 0xF0, +0x90, 0x8B, 0x33, 0x74, 0x03, 0xF0, 0x22, 0xF1, 0x8E, 0x80, 0xEF, 0x12, 0x7D, 0x42, 0x80, 0xEA, +0xF1, 0x8E, 0x90, 0x05, 0x22, 0x74, 0xFF, 0xF0, 0x12, 0x7E, 0x9A, 0xEF, 0x70, 0x06, 0x90, 0x01, +0xC8, 0x74, 0xFD, 0xF0, 0x12, 0x7C, 0x50, 0x90, 0x8B, 0x33, 0x74, 0x02, 0xF0, 0x22, 0x90, 0x01, +0x3E, 0x74, 0x03, 0xF0, 0xFD, 0x7F, 0x02, 0x12, 0x31, 0xB7, 0x90, 0x8B, 0x33, 0x74, 0x01, 0xF0, +0x22, 0x12, 0x7D, 0x42, 0x90, 0x05, 0x22, 0xE4, 0xF0, 0x90, 0x8B, 0x33, 0x04, 0xF0, 0x22, 0xF1, +0xA1, 0x7D, 0x03, 0x7F, 0x02, 0x12, 0x31, 0x49, 0x90, 0x05, 0x27, 0xE4, 0xF0, 0x90, 0x8B, 0x33, +0xF0, 0x22, 0xF1, 0xCA, 0x80, 0xEB, 0xF1, 0xD5, 0x80, 0xE7, 0x90, 0x05, 0x22, 0xE4, 0xF0, 0x90, +0x8B, 0x33, 0x04, 0xF0, 0x22, 0x90, 0x05, 0x22, 0xE4, 0xF0, 0x90, 0x8B, 0x33, 0x04, 0xF0, 0x22, +0xF1, 0x8E, 0x90, 0x05, 0x22, 0x74, 0xFF, 0xF0, 0x90, 0x8B, 0x33, 0x74, 0x04, 0xF0, 0x22, 0x90, +0x02, 0x84, 0xEF, 0xF0, 0xA3, 0xEE, 0xF0, 0xA3, 0x74, 0x05, 0xF0, 0x22, 0xEF, 0x8E, 0xF0, 0x12, +0x43, 0xBA, 0x50, 0x1A, 0x00, 0x40, 0x50, 0x42, 0x00, 0x80, 0x50, 0x6D, 0x01, 0x00, 0x50, 0x81, +0x02, 0x00, 0x50, 0x99, 0x04, 0x00, 0x00, 0x00, 0x50, 0xB6, 0xED, 0x54, 0x3F, 0x70, 0x04, 0xFE, +0xFF, 0x80, 0x04, 0x7E, 0x00, 0x7F, 0x40, 0xEF, 0x2D, 0xFF, 0xEE, 0x3C, 0xFE, 0xEF, 0x78, 0x06, +0xCE, 0xC3, 0x13, 0xCE, 0x13, 0xD8, 0xF9, 0x78, 0x06, 0xC3, 0x33, 0xCE, 0x33, 0xCE, 0xD8, 0xF9, +0x80, 0x26, 0xED, 0x54, 0x7F, 0x70, 0x04, 0xFE, 0xFF, 0x80, 0x04, 0x7E, 0x00, 0x7F, 0x80, 0xEF, +0x2D, 0xFF, 0xEE, 0x3C, 0xFE, 0xEF, 0x78, 0x07, 0xCE, 0xC3, 0x13, 0xCE, 0x13, 0xD8, 0xF9, 0x78, +0x07, 0xC3, 0x33, 0xCE, 0x33, 0xCE, 0xD8, 0xF9, 0xFD, 0xAC, 0x06, 0x80, 0x49, 0xED, 0x70, 0x04, +0xFE, 0xFF, 0x80, 0x04, 0x7E, 0x01, 0x7F, 0x00, 0xEF, 0x2D, 0xEE, 0x3C, 0x7D, 0x00, 0xFC, 0x80, +0x35, 0xEC, 0x54, 0x01, 0x4D, 0x70, 0x04, 0xFE, 0xFF, 0x80, 0x04, 0x7E, 0x02, 0x7F, 0x00, 0xEF, +0x2D, 0xEE, 0x3C, 0xC3, 0x13, 0x7D, 0x00, 0x80, 0x1A, 0xEC, 0x54, 0x03, 0x4D, 0x70, 0x04, 0xFE, +0xFF, 0x80, 0x04, 0x7E, 0x04, 0x7F, 0x00, 0xEF, 0x2D, 0xEE, 0x3C, 0x13, 0x13, 0x54, 0x3F, 0x7D, +0x00, 0x25, 0xE0, 0x25, 0xE0, 0xFC, 0xAE, 0x04, 0xAF, 0x05, 0x22, 0x90, 0x01, 0xE4, 0x74, 0x58, +0xF0, 0xA3, 0x74, 0x02, 0xF0, 0x22, 0xE4, 0x90, 0x8A, 0xCC, 0xF0, 0xA3, 0xF0, 0x75, 0x8E, 0x02, +0x91, 0x0E, 0x12, 0x68, 0x44, 0x90, 0x8B, 0x07, 0xEF, 0xF0, 0x12, 0x68, 0x51, 0x90, 0x8B, 0x09, +0xEF, 0xF0, 0x12, 0x68, 0x5D, 0x90, 0x8A, 0xF4, 0xEE, 0xF0, 0xA3, 0xEF, 0xF0, 0xE4, 0xF5, 0x55, +0xF5, 0x21, 0x12, 0x72, 0x55, 0x12, 0x44, 0x9E, 0x12, 0x2E, 0x01, 0x7F, 0x03, 0x12, 0x78, 0x42, +0x12, 0x7C, 0x3D, 0x12, 0x68, 0x0A, 0x12, 0x68, 0x75, 0x12, 0x68, 0x8A, 0x12, 0x68, 0x28, 0x12, +0x68, 0x43, 0x90, 0x8A, 0xCE, 0xE5, 0xD9, 0xF0, 0x31, 0x5F, 0xC2, 0xAF, 0x90, 0x00, 0x80, 0xE0, +0x44, 0x40, 0xF0, 0x51, 0x0E, 0x75, 0xE8, 0x03, 0x43, 0xA8, 0x85, 0xD2, 0xAF, 0x11, 0xBB, 0x90, +0x8A, 0xCC, 0xE0, 0x64, 0x01, 0xF0, 0x24, 0xC6, 0x90, 0x01, 0xC4, 0xF0, 0x74, 0x50, 0xA3, 0xF0, +0xE5, 0x55, 0x30, 0xE4, 0x09, 0xC2, 0xAF, 0x53, 0x55, 0xEF, 0xD2, 0xAF, 0xB1, 0x59, 0xE5, 0x55, +0x30, 0xE6, 0xDC, 0xC2, 0xAF, 0x53, 0x55, 0xBF, 0xD2, 0xAF, 0x12, 0x6B, 0xBD, 0x80, 0xD0, 0x90, +0x01, 0x3C, 0x74, 0xFF, 0xF0, 0xA3, 0xF0, 0xA3, 0xF0, 0x90, 0x01, 0x34, 0xF0, 0xA3, 0xF0, 0xA3, +0xF0, 0xA3, 0xF0, 0xFD, 0x7F, 0x54, 0x31, 0x88, 0x7D, 0xFF, 0x7F, 0x55, 0x31, 0x88, 0x7D, 0xFF, +0x7F, 0x56, 0x31, 0x88, 0x7D, 0xFF, 0x7F, 0x57, 0xD3, 0x10, 0xAF, 0x01, 0xC3, 0xC0, 0xD0, 0x8F, +0x82, 0x75, 0x83, 0x00, 0xED, 0xF0, 0x51, 0x0E, 0xD0, 0xD0, 0x92, 0xAF, 0x22, 0x90, 0x01, 0x30, +0xE4, 0xF0, 0xA3, 0xF0, 0xA3, 0xF0, 0xA3, 0xF0, 0x90, 0x01, 0x38, 0xF0, 0xA3, 0xF0, 0xA3, 0xF0, +0xA3, 0xF0, 0xFD, 0x7F, 0x50, 0x31, 0x88, 0xE4, 0xFD, 0x7F, 0x51, 0x31, 0x88, 0xE4, 0xFD, 0x7F, +0x52, 0x31, 0x88, 0xE4, 0xFD, 0x7F, 0x53, 0x80, 0xBF, 0xE5, 0x5E, 0x64, 0x01, 0x70, 0x3B, 0x71, +0x4E, 0xBF, 0x01, 0x04, 0x7F, 0x01, 0x71, 0x42, 0x90, 0x00, 0x46, 0xE0, 0x44, 0x04, 0xFD, 0x7F, +0x46, 0x31, 0x88, 0x90, 0x00, 0x44, 0xE0, 0x54, 0xFB, 0xFD, 0x7F, 0x44, 0x31, 0x88, 0x90, 0x00, +0x46, 0xE0, 0x54, 0xFB, 0xFD, 0x7F, 0x46, 0x31, 0x88, 0x7F, 0x02, 0x71, 0x6A, 0x8F, 0x62, 0x90, +0x01, 0xC9, 0xE5, 0x62, 0xF0, 0xB4, 0x01, 0x02, 0x51, 0xE2, 0x22, 0xE0, 0x5F, 0xF0, 0xD3, 0x10, +0xAF, 0x01, 0xC3, 0xC0, 0xD0, 0x7F, 0x10, 0xDF, 0xFE, 0xD0, 0xD0, 0x92, 0xAF, 0x22, 0xD3, 0x10, +0xAF, 0x01, 0xC3, 0xC0, 0xD0, 0x90, 0x8A, 0xE0, 0xED, 0xF0, 0x90, 0x8A, 0xDF, 0xEF, 0xF0, 0xD3, +0x94, 0x07, 0x50, 0x4E, 0xA3, 0xE0, 0x70, 0x1A, 0x90, 0x8A, 0xDF, 0xE0, 0xFF, 0x74, 0x01, 0xA8, +0x07, 0x08, 0x80, 0x02, 0xC3, 0x33, 0xD8, 0xFC, 0xF4, 0xFF, 0x90, 0x00, 0x47, 0xE0, 0x5F, 0xF0, +0x80, 0x17, 0x90, 0x8A, 0xDF, 0xE0, 0xFF, 0x74, 0x01, 0xA8, 0x07, 0x08, 0x80, 0x02, 0xC3, 0x33, +0xD8, 0xFC, 0xFF, 0x90, 0x00, 0x47, 0xE0, 0x4F, 0xF0, 0x51, 0x0E, 0x90, 0x8A, 0xDF, 0xE0, 0xFF, +0x74, 0x01, 0xA8, 0x07, 0x08, 0x80, 0x02, 0xC3, 0x33, 0xD8, 0xFC, 0xF4, 0xFF, 0x90, 0x00, 0x46, +0x80, 0x59, 0x90, 0x8A, 0xDF, 0xE0, 0x24, 0xF8, 0xF0, 0xA3, 0xE0, 0x70, 0x1D, 0x90, 0x8A, 0xDF, +0xE0, 0xFF, 0x74, 0x01, 0xA8, 0x07, 0x08, 0x80, 0x02, 0xC3, 0x33, 0xD8, 0xFC, 0xC4, 0x54, 0xF0, +0xF4, 0xFF, 0x90, 0x00, 0x43, 0xE0, 0x5F, 0xF0, 0x80, 0x1A, 0x90, 0x8A, 0xDF, 0xE0, 0xFF, 0x74, +0x01, 0xA8, 0x07, 0x08, 0x80, 0x02, 0xC3, 0x33, 0xD8, 0xFC, 0xC4, 0x54, 0xF0, 0xFF, 0x90, 0x00, +0x43, 0xE0, 0x4F, 0xF0, 0x51, 0x0E, 0x90, 0x8A, 0xDF, 0xE0, 0xFF, 0x74, 0x01, 0xA8, 0x07, 0x08, +0x80, 0x02, 0xC3, 0x33, 0xD8, 0xFC, 0xF4, 0xFF, 0x90, 0x00, 0x43, 0x51, 0x0B, 0xD0, 0xD0, 0x92, +0xAF, 0x22, 0x90, 0x00, 0x49, 0xE0, 0x90, 0x8B, 0x54, 0xF0, 0xE0, 0x54, 0x0F, 0xF0, 0x44, 0xF0, +0xFD, 0x7F, 0x49, 0x31, 0x88, 0x90, 0x8B, 0x54, 0xE0, 0x44, 0xB0, 0xFD, 0x7F, 0x49, 0x21, 0x88, +0x90, 0x8A, 0xDD, 0xEE, 0xF0, 0xA3, 0xEF, 0xF0, 0x75, 0x5E, 0x01, 0x8E, 0x5F, 0xF5, 0x60, 0xE4, +0xFD, 0x7F, 0x0B, 0x51, 0x1E, 0xE4, 0xFD, 0x7F, 0x02, 0x51, 0x1E, 0x71, 0x4E, 0xE4, 0xFF, 0x71, +0x42, 0xE4, 0xF5, 0x62, 0x90, 0x01, 0xC9, 0xE5, 0x62, 0xF0, 0x90, 0x8A, 0xDD, 0xE0, 0xFC, 0xA3, +0xE0, 0xFD, 0xEC, 0xFB, 0x8D, 0x44, 0xE4, 0xF5, 0x45, 0x7D, 0x01, 0x7F, 0x60, 0x7E, 0x01, 0x02, +0x30, 0x62, 0x90, 0x01, 0xCA, 0xE5, 0x61, 0xF0, 0xEF, 0x60, 0x02, 0x51, 0xE2, 0x22, 0x7F, 0x0B, +0x71, 0x6A, 0xEF, 0x65, 0x61, 0x60, 0x10, 0xE5, 0x61, 0xB4, 0x01, 0x05, 0xE4, 0xF5, 0x61, 0x80, +0x03, 0x75, 0x61, 0x01, 0x7F, 0x01, 0x22, 0x7F, 0x00, 0x22, 0xD3, 0x10, 0xAF, 0x01, 0xC3, 0xC0, +0xD0, 0x90, 0x8B, 0x57, 0xEF, 0xF0, 0xD3, 0x94, 0x07, 0x50, 0x43, 0xE0, 0xFF, 0x74, 0x01, 0xA8, +0x07, 0x08, 0x80, 0x02, 0xC3, 0x33, 0xD8, 0xFC, 0xF4, 0xFF, 0x90, 0x00, 0x46, 0x51, 0x0B, 0x90, +0x8B, 0x57, 0xE0, 0xFD, 0x74, 0x01, 0x7E, 0x00, 0xA8, 0x05, 0x08, 0x80, 0x05, 0xC3, 0x33, 0xCE, +0x33, 0xCE, 0xD8, 0xF9, 0xFF, 0x90, 0x00, 0x44, 0xE0, 0xFB, 0xE4, 0xFE, 0xEF, 0x5B, 0xA8, 0x05, +0x08, 0x80, 0x06, 0xCE, 0xA2, 0xE7, 0x13, 0xCE, 0x13, 0xD8, 0xF8, 0xFF, 0x80, 0x4B, 0x90, 0x8B, +0x57, 0xE0, 0x24, 0xF8, 0xF0, 0xE0, 0xFF, 0x74, 0x01, 0xA8, 0x07, 0x08, 0x80, 0x02, 0xC3, 0x33, +0xD8, 0xFC, 0xF4, 0xFF, 0x90, 0x00, 0x43, 0xE0, 0x5F, 0xF0, 0x51, 0x0E, 0x90, 0x8B, 0x57, 0xE0, +0xFD, 0x74, 0x01, 0x7E, 0x00, 0xA8, 0x05, 0x08, 0x80, 0x05, 0xC3, 0x33, 0xCE, 0x33, 0xCE, 0xD8, +0xF9, 0xFF, 0x90, 0x00, 0x42, 0xE0, 0xFB, 0xE4, 0xFE, 0xEF, 0x5B, 0xA8, 0x05, 0x08, 0x80, 0x06, +0xCE, 0xA2, 0xE7, 0x13, 0xCE, 0x13, 0xD8, 0xF8, 0xFF, 0xD0, 0xD0, 0x92, 0xAF, 0x22, 0xE4, 0x90, +0x8B, 0x04, 0xF0, 0x90, 0x00, 0x80, 0xE0, 0x44, 0x80, 0xFD, 0x7F, 0x80, 0x21, 0x88, 0xD3, 0x10, +0xAF, 0x01, 0xC3, 0xC0, 0xD0, 0x90, 0x8A, 0xDA, 0x12, 0x43, 0x8B, 0x90, 0x8A, 0xDA, 0x12, 0x43, +0x6B, 0x90, 0x00, 0x01, 0x12, 0x42, 0xC2, 0xFA, 0xE5, 0xF0, 0x24, 0x00, 0xFF, 0xE4, 0x3A, 0xFE, +0x90, 0x8A, 0xDA, 0x12, 0x43, 0x6B, 0x90, 0x00, 0x01, 0xEE, 0x8F, 0xF0, 0x12, 0x43, 0x19, 0x12, +0x24, 0x62, 0xFF, 0x60, 0x2C, 0xB5, 0x5E, 0x16, 0x90, 0x8A, 0xDA, 0x12, 0x43, 0x6B, 0x90, 0x00, +0x01, 0x12, 0x42, 0xC2, 0x65, 0x60, 0x70, 0x04, 0xE5, 0x5F, 0x65, 0xF0, 0x60, 0x22, 0x90, 0x8A, +0xDA, 0x12, 0x43, 0x6B, 0x90, 0x00, 0x01, 0x12, 0x42, 0xC2, 0xFF, 0xAE, 0xF0, 0x71, 0x00, 0x80, +0x0F, 0x90, 0x8A, 0xDA, 0x12, 0x43, 0x6B, 0x12, 0x24, 0x62, 0x65, 0x5E, 0x60, 0x02, 0x91, 0x95, +0xD0, 0xD0, 0x92, 0xAF, 0x22, 0xE4, 0xF5, 0x5E, 0x7F, 0x60, 0x7E, 0x01, 0x8F, 0x82, 0x8E, 0x83, +0xA3, 0xA3, 0xA3, 0xE4, 0xF0, 0x22, 0x90, 0x8A, 0xD7, 0x12, 0x43, 0x8B, 0xEF, 0x12, 0x43, 0x94, +0x54, 0xE7, 0x01, 0x54, 0xDE, 0x02, 0x55, 0x0B, 0x03, 0x55, 0x14, 0x05, 0x55, 0x1D, 0x06, 0x55, +0x58, 0x07, 0x55, 0x25, 0x08, 0x55, 0x2E, 0x09, 0x55, 0x36, 0x20, 0x55, 0x3F, 0x2C, 0x54, 0xF0, +0x2D, 0x54, 0xF9, 0x2E, 0x55, 0x02, 0x3B, 0x55, 0x48, 0x4B, 0x00, 0x00, 0x55, 0x51, 0x90, 0x8A, +0xD7, 0x12, 0x43, 0x6B, 0x02, 0x74, 0x85, 0x90, 0x8A, 0xD7, 0x12, 0x43, 0x6B, 0x02, 0x74, 0x8B, +0x90, 0x8A, 0xD7, 0x12, 0x43, 0x6B, 0x02, 0x74, 0xB8, 0x90, 0x8A, 0xD7, 0x12, 0x43, 0x6B, 0x02, +0x75, 0x00, 0x90, 0x8A, 0xD7, 0x12, 0x43, 0x6B, 0x02, 0x75, 0x39, 0x90, 0x8A, 0xD7, 0x12, 0x43, +0x6B, 0x02, 0x75, 0x52, 0x90, 0x8A, 0xD7, 0x12, 0x43, 0x6B, 0x02, 0x74, 0x0F, 0x90, 0x8A, 0xD7, +0x12, 0x43, 0x6B, 0xC1, 0xA6, 0x90, 0x8A, 0xD7, 0x12, 0x43, 0x6B, 0x02, 0x75, 0x9A, 0x90, 0x8A, +0xD7, 0x12, 0x43, 0x6B, 0x81, 0x1E, 0x90, 0x8A, 0xD7, 0x12, 0x43, 0x6B, 0x02, 0x78, 0x81, 0x90, +0x8A, 0xD7, 0x12, 0x43, 0x6B, 0x02, 0x7A, 0xC2, 0x90, 0x8A, 0xD7, 0x12, 0x43, 0x6B, 0x02, 0x7C, +0x2B, 0x90, 0x01, 0xC6, 0xE0, 0x44, 0x01, 0xF0, 0x22, 0xD3, 0x10, 0xAF, 0x01, 0xC3, 0xC0, 0xD0, +0x90, 0x01, 0xCC, 0xE0, 0x54, 0x0F, 0x90, 0x8A, 0xCF, 0xF0, 0x90, 0x8A, 0xCF, 0xE0, 0xFD, 0x70, +0x02, 0xC1, 0xA1, 0x90, 0x8B, 0x51, 0xE0, 0xFF, 0x74, 0x01, 0x7E, 0x00, 0xA8, 0x07, 0x08, 0x80, +0x05, 0xC3, 0x33, 0xCE, 0x33, 0xCE, 0xD8, 0xF9, 0xFF, 0xEF, 0x5D, 0x70, 0x02, 0xC1, 0x9A, 0x90, +0x8B, 0x51, 0xE0, 0x75, 0xF0, 0x04, 0x90, 0x01, 0xD0, 0x12, 0x43, 0x5F, 0xE0, 0x90, 0x8A, 0xD0, +0xF0, 0x75, 0x1D, 0x01, 0x75, 0x1E, 0x8A, 0x75, 0x1F, 0xD0, 0x75, 0x20, 0x01, 0x7B, 0x01, 0x7A, +0x8A, 0x79, 0xD1, 0x12, 0x5E, 0xE4, 0x90, 0x8A, 0xD1, 0xE0, 0xFF, 0xC4, 0x13, 0x13, 0x13, 0x54, +0x01, 0x90, 0x8B, 0x51, 0x30, 0xE0, 0x59, 0xE0, 0x75, 0xF0, 0x02, 0x90, 0x00, 0x88, 0x12, 0x43, +0x5F, 0xE0, 0x90, 0x8A, 0xD2, 0xF0, 0x90, 0x8B, 0x51, 0xE0, 0x75, 0xF0, 0x02, 0x90, 0x00, 0x89, +0x12, 0x43, 0x5F, 0xE0, 0x90, 0x8A, 0xD3, 0xF0, 0x90, 0x8B, 0x51, 0xE0, 0x75, 0xF0, 0x04, 0x90, +0x01, 0xD1, 0x12, 0x43, 0x5F, 0xE0, 0x90, 0x8A, 0xD4, 0xF0, 0x90, 0x8B, 0x51, 0xE0, 0x75, 0xF0, +0x04, 0x90, 0x01, 0xD2, 0x12, 0x43, 0x5F, 0xE0, 0x90, 0x8A, 0xD5, 0xF0, 0x90, 0x8B, 0x51, 0xE0, +0x75, 0xF0, 0x04, 0x90, 0x01, 0xD3, 0x12, 0x43, 0x5F, 0xE0, 0x90, 0x8A, 0xD6, 0xF0, 0x80, 0x33, +0xE0, 0x75, 0xF0, 0x04, 0x90, 0x01, 0xD1, 0x12, 0x43, 0x5F, 0xE0, 0x90, 0x8A, 0xD2, 0xF0, 0x90, +0x8B, 0x51, 0xE0, 0x75, 0xF0, 0x04, 0x90, 0x01, 0xD2, 0x12, 0x43, 0x5F, 0xE0, 0x90, 0x8A, 0xD3, +0xF0, 0x90, 0x8B, 0x51, 0xE0, 0x75, 0xF0, 0x04, 0x90, 0x01, 0xD3, 0x12, 0x43, 0x5F, 0xE0, 0x90, +0x8A, 0xD4, 0xF0, 0xEF, 0x54, 0x7F, 0xFF, 0x7B, 0x01, 0x7A, 0x8A, 0x79, 0xD2, 0x91, 0xA6, 0x90, +0x8A, 0xCF, 0xE0, 0xFF, 0x90, 0x8B, 0x51, 0xE0, 0xFE, 0x74, 0x01, 0xA8, 0x06, 0x08, 0x80, 0x02, +0xC3, 0x33, 0xD8, 0xFC, 0xF4, 0x5F, 0x90, 0x8A, 0xCF, 0xF0, 0x90, 0x8B, 0x51, 0xE0, 0xFF, 0x74, +0x01, 0xA8, 0x07, 0x08, 0x80, 0x02, 0xC3, 0x33, 0xD8, 0xFC, 0x90, 0x01, 0xCC, 0xF0, 0x90, 0x8B, +0x51, 0xE0, 0x04, 0xF0, 0xE0, 0x54, 0x03, 0xF0, 0xA1, 0x6A, 0x90, 0x01, 0xC6, 0xE0, 0x44, 0x02, +0xF0, 0xD0, 0xD0, 0x92, 0xAF, 0x22, 0x90, 0x00, 0x04, 0x12, 0x42, 0x20, 0xFF, 0x54, 0x1F, 0xFE, +0xEF, 0x54, 0x20, 0xC4, 0x13, 0x54, 0x07, 0xFD, 0xAF, 0x06, 0x90, 0x8A, 0xDA, 0xEF, 0xF0, 0xA3, +0xED, 0xF0, 0xA3, 0x12, 0x43, 0x8B, 0x90, 0x8A, 0xDC, 0x12, 0x43, 0x6B, 0x90, 0x00, 0x03, 0x12, +0x42, 0x20, 0x54, 0xF0, 0xC4, 0x54, 0x0F, 0x90, 0x8A, 0xDF, 0xF0, 0x90, 0x00, 0x04, 0x12, 0x42, +0x20, 0x54, 0x40, 0xC4, 0x13, 0x13, 0x54, 0x03, 0x90, 0x8A, 0xE0, 0xF0, 0x90, 0x8A, 0xDA, 0xE0, +0xFF, 0x75, 0xF0, 0x09, 0x90, 0x87, 0x25, 0x12, 0x43, 0x5F, 0xAD, 0x82, 0xAC, 0x83, 0x90, 0x8A, +0xE1, 0xEC, 0xF0, 0xA3, 0xED, 0xF0, 0xEF, 0x75, 0xF0, 0x09, 0xA4, 0x24, 0x23, 0xF9, 0x74, 0x87, +0x35, 0xF0, 0xFA, 0x7B, 0x01, 0xA3, 0x12, 0x43, 0x8B, 0x90, 0x8A, 0xDC, 0x12, 0x43, 0x6B, 0x90, +0x00, 0x03, 0x12, 0x42, 0x20, 0x54, 0x0F, 0xFF, 0x90, 0x8A, 0xE3, 0x12, 0x43, 0x6B, 0xEF, 0x12, +0x42, 0x4D, 0x90, 0x8A, 0xDC, 0x12, 0x43, 0x6B, 0x90, 0x00, 0x02, 0x12, 0x42, 0x20, 0xFF, 0x90, +0x8A, 0xE3, 0x12, 0x43, 0x6B, 0x90, 0x00, 0x01, 0xEF, 0x12, 0x42, 0x5F, 0x90, 0x8A, 0xDC, 0x12, +0x43, 0x6B, 0x90, 0x00, 0x01, 0x12, 0x42, 0x20, 0xFF, 0x90, 0x8A, 0xE1, 0xE0, 0xFC, 0xA3, 0xE0, +0xFD, 0xF5, 0x82, 0x8C, 0x83, 0xEF, 0xF0, 0x12, 0x24, 0x62, 0x8D, 0x82, 0x8C, 0x83, 0xA3, 0xF0, +0x90, 0x8A, 0xDF, 0xE0, 0xFE, 0x90, 0x8A, 0xDA, 0xE0, 0xFF, 0x24, 0xC1, 0xF5, 0x82, 0xE4, 0x34, +0x86, 0xF5, 0x83, 0xEE, 0xF0, 0x90, 0x8A, 0xDB, 0xE0, 0xFE, 0x75, 0xF0, 0x09, 0xEF, 0x90, 0x87, +0x29, 0x12, 0x43, 0x5F, 0xEE, 0xF0, 0x75, 0xF0, 0x09, 0xEF, 0x90, 0x87, 0x2A, 0x12, 0x43, 0x5F, +0x74, 0x01, 0xF0, 0x90, 0x8A, 0xE0, 0xE0, 0xFE, 0x75, 0xF0, 0x09, 0xEF, 0x90, 0x87, 0x2B, 0x12, +0x43, 0x5F, 0xEE, 0xF0, 0x8F, 0x0F, 0xEF, 0x25, 0xE0, 0x24, 0xE4, 0xF5, 0x82, 0xE4, 0x34, 0x89, +0xAF, 0x82, 0xF5, 0x10, 0x8F, 0x11, 0xE5, 0x0F, 0x75, 0xF0, 0x02, 0xA4, 0x24, 0x81, 0xF9, 0x74, +0x86, 0x35, 0xF0, 0x75, 0x12, 0x01, 0xF5, 0x13, 0x89, 0x14, 0x75, 0xF0, 0x09, 0xE5, 0x0F, 0x90, +0x87, 0x25, 0x12, 0x43, 0x5F, 0xAF, 0x82, 0x85, 0x83, 0x15, 0x8F, 0x16, 0xE5, 0x0F, 0x75, 0xF0, +0x09, 0xA4, 0x24, 0x23, 0xF9, 0x74, 0x87, 0x35, 0xF0, 0x75, 0x17, 0x01, 0xF5, 0x18, 0x89, 0x19, +0x74, 0xC1, 0x25, 0x0F, 0xF5, 0x82, 0xE4, 0x34, 0x86, 0xF5, 0x83, 0xE0, 0x12, 0x43, 0x94, 0x58, +0x34, 0x00, 0x58, 0x49, 0x01, 0x58, 0x5E, 0x02, 0x58, 0x73, 0x03, 0x58, 0x9C, 0x04, 0x58, 0xB1, +0x05, 0x58, 0xC6, 0x06, 0x58, 0xEC, 0x0C, 0x59, 0x19, 0x0D, 0x59, 0x46, 0x0E, 0x59, 0x73, 0x0F, +0x00, 0x00, 0x59, 0xA7, 0xE5, 0x0F, 0x25, 0xE0, 0x24, 0xE4, 0xF5, 0x82, 0xE4, 0x34, 0x89, 0xF5, +0x83, 0x74, 0xF0, 0xF0, 0xA3, 0x74, 0x15, 0x80, 0x3C, 0xE5, 0x0F, 0x25, 0xE0, 0x24, 0xE4, 0xF5, +0x82, 0xE4, 0x34, 0x89, 0xF5, 0x83, 0x74, 0xF0, 0xF0, 0xA3, 0x74, 0x10, 0x80, 0x27, 0xE5, 0x0F, +0x25, 0xE0, 0x24, 0xE4, 0xF5, 0x82, 0xE4, 0x34, 0x89, 0xF5, 0x83, 0x74, 0xF0, 0xF0, 0xA3, 0x74, +0x05, 0x80, 0x12, 0xE5, 0x0F, 0x25, 0xE0, 0x24, 0xE4, 0xF5, 0x82, 0xE4, 0x34, 0x89, 0xF5, 0x83, +0x74, 0xF0, 0xF0, 0xA3, 0xE4, 0xF0, 0xE5, 0x0F, 0x25, 0xE0, 0x24, 0x81, 0xF5, 0x82, 0xE4, 0x34, +0x86, 0xF5, 0x83, 0x74, 0x0F, 0xF0, 0xA3, 0x74, 0x8F, 0xF0, 0x21, 0xA7, 0xE5, 0x0F, 0x25, 0xE0, +0x24, 0xE4, 0xF5, 0x82, 0xE4, 0x34, 0x89, 0xF5, 0x83, 0x74, 0x0F, 0xF0, 0xA3, 0x74, 0xF5, 0x80, +0x27, 0xE5, 0x0F, 0x25, 0xE0, 0x24, 0xE4, 0xF5, 0x82, 0xE4, 0x34, 0x89, 0xF5, 0x83, 0x74, 0x0F, +0xF0, 0xA3, 0x74, 0xF0, 0x80, 0x12, 0xE5, 0x0F, 0x25, 0xE0, 0x24, 0xE4, 0xF5, 0x82, 0xE4, 0x34, +0x89, 0xF5, 0x83, 0xE4, 0xF0, 0xA3, 0x74, 0x0D, 0xF0, 0xE5, 0x0F, 0x25, 0xE0, 0x24, 0x81, 0xF5, +0x82, 0xE4, 0x34, 0x86, 0xF5, 0x83, 0xE4, 0xF0, 0xA3, 0xF0, 0x21, 0xA7, 0x90, 0x04, 0x47, 0xE0, +0xAB, 0x12, 0xAA, 0x13, 0xA9, 0x14, 0x12, 0x42, 0x4D, 0x90, 0x04, 0x46, 0xE0, 0xAB, 0x12, 0xAA, +0x13, 0xA9, 0x14, 0x90, 0x00, 0x01, 0x12, 0x42, 0x5F, 0x90, 0x04, 0x45, 0xE0, 0x85, 0x11, 0x82, +0x85, 0x10, 0x83, 0xF0, 0x90, 0x04, 0x44, 0x21, 0x9E, 0x90, 0x04, 0x4B, 0xE0, 0xAB, 0x12, 0xAA, +0x13, 0xA9, 0x14, 0x12, 0x42, 0x4D, 0x90, 0x04, 0x4A, 0xE0, 0xAB, 0x12, 0xAA, 0x13, 0xA9, 0x14, +0x90, 0x00, 0x01, 0x12, 0x42, 0x5F, 0x90, 0x04, 0x49, 0xE0, 0x85, 0x11, 0x82, 0x85, 0x10, 0x83, +0xF0, 0x90, 0x04, 0x48, 0x80, 0x58, 0x90, 0x04, 0x4F, 0xE0, 0xAB, 0x12, 0xAA, 0x13, 0xA9, 0x14, +0x12, 0x42, 0x4D, 0x90, 0x04, 0x4E, 0xE0, 0xAB, 0x12, 0xAA, 0x13, 0xA9, 0x14, 0x90, 0x00, 0x01, +0x12, 0x42, 0x5F, 0x90, 0x04, 0x4D, 0xE0, 0x85, 0x11, 0x82, 0x85, 0x10, 0x83, 0xF0, 0x90, 0x04, +0x4C, 0x80, 0x2B, 0x90, 0x04, 0x53, 0xE0, 0xAB, 0x12, 0xAA, 0x13, 0xA9, 0x14, 0x12, 0x42, 0x4D, +0x90, 0x04, 0x52, 0xE0, 0xAB, 0x12, 0xAA, 0x13, 0xA9, 0x14, 0x90, 0x00, 0x01, 0x12, 0x42, 0x5F, +0x90, 0x04, 0x51, 0xE0, 0x85, 0x11, 0x82, 0x85, 0x10, 0x83, 0xF0, 0x90, 0x04, 0x50, 0xE0, 0x85, +0x11, 0x82, 0x85, 0x10, 0x83, 0xA3, 0xF0, 0xAB, 0x12, 0xAA, 0x13, 0xA9, 0x14, 0xC0, 0x03, 0xC0, +0x02, 0xC0, 0x01, 0x12, 0x24, 0x62, 0xFF, 0xAB, 0x17, 0xAA, 0x18, 0xA9, 0x19, 0x12, 0x24, 0x62, +0x5F, 0xD0, 0x01, 0xD0, 0x02, 0xD0, 0x03, 0x12, 0x42, 0x4D, 0xAB, 0x12, 0xE5, 0x14, 0x24, 0x01, +0xF9, 0xE4, 0x35, 0x13, 0xFA, 0xC0, 0x03, 0xC0, 0x02, 0xC0, 0x01, 0x12, 0x24, 0x62, 0xFF, 0xAB, +0x17, 0xAA, 0x18, 0xA9, 0x19, 0x90, 0x00, 0x01, 0x12, 0x42, 0x20, 0x5F, 0xD0, 0x01, 0xD0, 0x02, +0xD0, 0x03, 0x12, 0x42, 0x4D, 0x85, 0x11, 0x82, 0x85, 0x10, 0x83, 0xC0, 0x83, 0xC0, 0x82, 0xE0, +0xFF, 0x85, 0x16, 0x82, 0x85, 0x15, 0x83, 0xE0, 0xFE, 0xEF, 0x5E, 0xD0, 0x82, 0xD0, 0x83, 0xF0, +0x85, 0x11, 0x82, 0x85, 0x10, 0x83, 0xA3, 0xC0, 0x83, 0xC0, 0x82, 0xE0, 0xFF, 0x85, 0x16, 0x82, +0x85, 0x15, 0x83, 0xA3, 0xE0, 0xFE, 0xEF, 0x5E, 0xD0, 0x82, 0xD0, 0x83, 0xF0, 0xE5, 0x0F, 0x25, +0xE0, 0x24, 0x81, 0xF5, 0x82, 0xE4, 0x34, 0x86, 0xF5, 0x83, 0xE0, 0xFE, 0xA3, 0xE0, 0x4E, 0x60, +0x4B, 0x90, 0x8A, 0xE6, 0x74, 0x0B, 0xF0, 0x90, 0x8A, 0xE6, 0xE0, 0xFF, 0xC3, 0x94, 0x00, 0x50, +0x02, 0x41, 0xEC, 0x74, 0x01, 0x7E, 0x00, 0xA8, 0x07, 0x08, 0x80, 0x05, 0xC3, 0x33, 0xCE, 0x33, +0xCE, 0xD8, 0xF9, 0xFF, 0xE5, 0x0F, 0x25, 0xE0, 0x24, 0x81, 0xF5, 0x82, 0xE4, 0x34, 0x86, 0xF5, +0x83, 0xE0, 0x5E, 0xFE, 0xA3, 0xE0, 0x5F, 0x4E, 0x60, 0x0A, 0x90, 0x8A, 0xE6, 0xE0, 0x24, 0x10, +0xA3, 0xF0, 0x80, 0x68, 0x90, 0x8A, 0xE6, 0xE0, 0x14, 0xF0, 0x80, 0xBB, 0xE5, 0x0F, 0x25, 0xE0, +0x24, 0xE4, 0xF5, 0x82, 0xE4, 0x34, 0x89, 0xF5, 0x83, 0xE0, 0xFE, 0xA3, 0xE0, 0x4E, 0x60, 0x47, +0x90, 0x8A, 0xE6, 0x74, 0x0F, 0xF0, 0x90, 0x8A, 0xE6, 0xE0, 0xFF, 0xC3, 0x94, 0x00, 0x40, 0x3C, +0x74, 0x01, 0x7E, 0x00, 0xA8, 0x07, 0x08, 0x80, 0x05, 0xC3, 0x33, 0xCE, 0x33, 0xCE, 0xD8, 0xF9, +0xFF, 0xE5, 0x0F, 0x25, 0xE0, 0x24, 0xE4, 0xF5, 0x82, 0xE4, 0x34, 0x89, 0xF5, 0x83, 0xE0, 0x5E, +0xFE, 0xA3, 0xE0, 0x5F, 0x4E, 0x60, 0x08, 0x90, 0x8A, 0xE6, 0xE0, 0xA3, 0xF0, 0x80, 0x0D, 0x90, +0x8A, 0xE6, 0xE0, 0x14, 0xF0, 0x80, 0xBF, 0xE4, 0x90, 0x8A, 0xE7, 0xF0, 0xE5, 0x0F, 0x25, 0xE0, +0x24, 0xE4, 0xF5, 0x82, 0xE4, 0x34, 0x89, 0xF5, 0x83, 0xE0, 0xFE, 0xA3, 0xE0, 0x4E, 0x60, 0x46, +0xE4, 0x90, 0x8A, 0xE6, 0xF0, 0x90, 0x8A, 0xE6, 0xE0, 0xFF, 0xC3, 0x94, 0x10, 0x40, 0x02, 0x61, +0xA5, 0x74, 0x01, 0x7E, 0x00, 0xA8, 0x07, 0x08, 0x80, 0x05, 0xC3, 0x33, 0xCE, 0x33, 0xCE, 0xD8, +0xF9, 0xFF, 0xE5, 0x0F, 0x25, 0xE0, 0x24, 0xE4, 0xF5, 0x82, 0xE4, 0x34, 0x89, 0xF5, 0x83, 0xE0, +0x5E, 0xFE, 0xA3, 0xE0, 0x5F, 0x4E, 0x60, 0x06, 0x90, 0x8A, 0xE6, 0xE0, 0x80, 0x63, 0x90, 0x8A, +0xE6, 0xE0, 0x04, 0xF0, 0x80, 0xBF, 0xE5, 0x0F, 0x25, 0xE0, 0x24, 0x81, 0xF5, 0x82, 0xE4, 0x34, +0x86, 0xF5, 0x83, 0xE0, 0xFE, 0xA3, 0xE0, 0x4E, 0x60, 0x46, 0xE4, 0x90, 0x8A, 0xE6, 0xF0, 0x90, +0x8A, 0xE6, 0xE0, 0xFF, 0xC3, 0x94, 0x0C, 0x50, 0x3C, 0x74, 0x01, 0x7E, 0x00, 0xA8, 0x07, 0x08, +0x80, 0x05, 0xC3, 0x33, 0xCE, 0x33, 0xCE, 0xD8, 0xF9, 0xFF, 0xE5, 0x0F, 0x25, 0xE0, 0x24, 0x81, +0xF5, 0x82, 0xE4, 0x34, 0x86, 0xF5, 0x83, 0xE0, 0x5E, 0xFE, 0xA3, 0xE0, 0x5F, 0x4E, 0x60, 0x08, +0x90, 0x8A, 0xE6, 0xE0, 0x24, 0x10, 0x80, 0x09, 0x90, 0x8A, 0xE6, 0xE0, 0x04, 0xF0, 0x80, 0xBF, +0xE4, 0x90, 0x8A, 0xE8, 0xF0, 0x90, 0x8A, 0xE7, 0xE0, 0xFF, 0x75, 0xF0, 0x09, 0xE5, 0x0F, 0x90, +0x87, 0x27, 0x12, 0x43, 0x5F, 0xEF, 0xF0, 0x90, 0x8A, 0xE8, 0xE0, 0xFE, 0x75, 0xF0, 0x09, 0xE5, +0x0F, 0x90, 0x87, 0x28, 0x12, 0x43, 0x5F, 0xEE, 0xF0, 0xE5, 0x0F, 0xC3, 0x94, 0x20, 0x50, 0x32, +0x74, 0x84, 0x25, 0x0F, 0xF5, 0x82, 0xE4, 0x34, 0x04, 0xF5, 0x83, 0xE0, 0xD3, 0x9F, 0x40, 0x02, +0x80, 0x18, 0x74, 0x84, 0x25, 0x0F, 0xF5, 0x82, 0xE4, 0x34, 0x04, 0xF5, 0x83, 0xE0, 0xC3, 0x9E, +0x50, 0x08, 0x90, 0x8A, 0xE8, 0xE0, 0xA3, 0xF0, 0x80, 0x08, 0x90, 0x8A, 0xE7, 0xE0, 0x90, 0x8A, +0xE9, 0xF0, 0x90, 0x8A, 0xE9, 0xE0, 0xFD, 0xAF, 0x0F, 0x91, 0x4E, 0x90, 0x8A, 0xE9, 0xE0, 0xFF, +0x74, 0x84, 0x25, 0x0F, 0xF5, 0x82, 0xE4, 0x34, 0x8A, 0xF5, 0x83, 0xEF, 0xF0, 0x90, 0x8A, 0xE7, +0xE0, 0xFF, 0xD3, 0x94, 0x13, 0x40, 0x07, 0x90, 0x87, 0x22, 0x74, 0x03, 0xF0, 0x22, 0xEF, 0xD3, +0x94, 0x0B, 0x40, 0x07, 0x90, 0x87, 0x22, 0x74, 0x02, 0xF0, 0x22, 0xEF, 0xD3, 0x94, 0x03, 0x40, +0x07, 0x90, 0x87, 0x22, 0x74, 0x01, 0xF0, 0x22, 0xE4, 0x90, 0x87, 0x22, 0xF0, 0x22, 0xD3, 0x10, +0xAF, 0x01, 0xC3, 0xC0, 0xD0, 0x74, 0x84, 0x2F, 0xF5, 0x82, 0xE4, 0x34, 0x04, 0xF5, 0x83, 0xED, +0xF0, 0xD0, 0xD0, 0x92, 0xAF, 0x22, 0xAC, 0x07, 0xED, 0x54, 0x1F, 0x90, 0x8A, 0xC7, 0xF0, 0x74, +0x01, 0x2C, 0xF5, 0x82, 0xE4, 0x34, 0x86, 0xF5, 0x83, 0xE0, 0x90, 0x8A, 0xC5, 0xF0, 0x90, 0x8A, +0xC8, 0x74, 0x01, 0xF0, 0xEB, 0xC3, 0x94, 0x01, 0x40, 0x02, 0x80, 0x37, 0x90, 0x8A, 0xC5, 0xE0, +0x25, 0x0D, 0xFF, 0xA3, 0xF0, 0xA3, 0xE0, 0x90, 0x41, 0x9E, 0x93, 0xFE, 0xEF, 0xD3, 0x9E, 0x40, +0x10, 0x74, 0x01, 0x2C, 0xF5, 0x82, 0xE4, 0x34, 0x86, 0xF5, 0x83, 0xE4, 0xF0, 0xAF, 0x04, 0x80, +0x9D, 0x90, 0x8A, 0xC6, 0xE0, 0xFF, 0x74, 0x01, 0x2C, 0xF5, 0x82, 0xE4, 0x34, 0x86, 0xF5, 0x83, +0xEF, 0xF0, 0x22, 0xAD, 0x07, 0x75, 0xF0, 0x09, 0xED, 0x90, 0x87, 0x27, 0x12, 0x43, 0x5F, 0xE0, +0xFF, 0x90, 0x8A, 0xCA, 0xF0, 0x74, 0xA5, 0x2D, 0xF5, 0x82, 0xE4, 0x34, 0x8A, 0xF5, 0x83, 0xE0, +0x54, 0x1F, 0x90, 0x8A, 0xC9, 0xF0, 0xD3, 0x9F, 0x40, 0x06, 0xA3, 0xE0, 0x90, 0x8A, 0xC9, 0xF0, +0x90, 0x8A, 0xC9, 0xE0, 0xFF, 0x25, 0xE0, 0x24, 0x66, 0xF5, 0x82, 0xE4, 0x34, 0x41, 0xF5, 0x83, +0xE4, 0x93, 0xFA, 0x74, 0x01, 0x93, 0xFB, 0xEF, 0x25, 0xE0, 0x24, 0x2E, 0xF5, 0x82, 0xE4, 0x34, +0x41, 0xF5, 0x83, 0x74, 0x01, 0x93, 0x2B, 0xFF, 0xE4, 0x93, 0x3A, 0xC3, 0x13, 0xFE, 0xEF, 0x13, +0xFF, 0xED, 0x25, 0xE0, 0x24, 0xE1, 0xF5, 0x82, 0xE4, 0x34, 0x86, 0xF5, 0x83, 0xEE, 0xF0, 0xA3, +0xEF, 0xF0, 0xAF, 0x05, 0x90, 0x8A, 0xC9, 0xE0, 0xFD, 0x91, 0x4E, 0x90, 0x8A, 0xC9, 0xE0, 0xFF, +0x22, 0xAC, 0x07, 0x74, 0x84, 0x2C, 0xF5, 0x82, 0xE4, 0x34, 0x04, 0xF5, 0x83, 0xE0, 0x54, 0x7F, +0x90, 0x8A, 0xDE, 0xF0, 0xE0, 0x54, 0x1F, 0xFF, 0x90, 0x8A, 0xE1, 0xF0, 0x75, 0xF0, 0x09, 0xEC, +0x90, 0x87, 0x28, 0x12, 0x43, 0x5F, 0xE0, 0x90, 0x8A, 0xE3, 0xF0, 0x75, 0xF0, 0x09, 0xEC, 0x90, +0x87, 0x27, 0x12, 0x43, 0x5F, 0xE0, 0xFE, 0x90, 0x8A, 0xE4, 0xF0, 0xEC, 0x25, 0xE0, 0x24, 0xE4, +0xF5, 0x82, 0xE4, 0x34, 0x89, 0xF5, 0x83, 0xE0, 0xFB, 0xA3, 0xE0, 0x90, 0x8A, 0xE5, 0xCB, 0xF0, +0xA3, 0xEB, 0xF0, 0xEC, 0x25, 0xE0, 0x24, 0x81, 0xF5, 0x82, 0xE4, 0x34, 0x86, 0xF5, 0x83, 0xE0, +0xFB, 0xA3, 0xE0, 0x90, 0x8A, 0xE7, 0xCB, 0xF0, 0xA3, 0xEB, 0xF0, 0xEF, 0xD3, 0x9E, 0x40, 0x0C, +0x90, 0x8A, 0xE4, 0xE0, 0x90, 0x8A, 0xE1, 0xF0, 0x90, 0x8A, 0xDE, 0xF0, 0xED, 0x70, 0x02, 0xC1, +0x93, 0x90, 0x8A, 0xE2, 0xED, 0xF0, 0x90, 0x8A, 0xDE, 0xE0, 0x30, 0xE6, 0x0E, 0x90, 0x8A, 0xE1, +0xE0, 0x90, 0x8A, 0xDE, 0xF0, 0x90, 0x8A, 0xE2, 0xE0, 0x14, 0xF0, 0x90, 0x8A, 0xE2, 0xE0, 0x70, +0x02, 0xC1, 0x93, 0x90, 0x8A, 0xE1, 0xE0, 0xFF, 0xD3, 0x94, 0x00, 0x50, 0x02, 0xC1, 0x93, 0xE4, +0x90, 0x8A, 0xE0, 0xF0, 0xEF, 0x14, 0x90, 0x8A, 0xDF, 0xF0, 0x90, 0x8A, 0xE3, 0xE0, 0xFD, 0x90, +0x8A, 0xDF, 0xE0, 0xFF, 0xD3, 0x9D, 0x40, 0x6F, 0xEF, 0x94, 0x10, 0x40, 0x21, 0xEF, 0x24, 0xF0, +0xFF, 0x74, 0x01, 0x7E, 0x00, 0xA8, 0x07, 0x08, 0x80, 0x05, 0xC3, 0x33, 0xCE, 0x33, 0xCE, 0xD8, +0xF9, 0xFF, 0x90, 0x8A, 0xE7, 0xE0, 0x5E, 0xFE, 0xA3, 0xE0, 0x5F, 0x4E, 0x70, 0x27, 0x90, 0x8A, +0xDF, 0xE0, 0xFF, 0xC3, 0x94, 0x10, 0x50, 0x37, 0x74, 0x01, 0x7E, 0x00, 0xA8, 0x07, 0x08, 0x80, +0x05, 0xC3, 0x33, 0xCE, 0x33, 0xCE, 0xD8, 0xF9, 0xFF, 0x90, 0x8A, 0xE5, 0xE0, 0x5E, 0xFE, 0xA3, +0xE0, 0x5F, 0x4E, 0x60, 0x1A, 0x90, 0x8A, 0xDF, 0xE0, 0x90, 0x8A, 0xDE, 0xF0, 0x90, 0x8A, 0xE0, +0xE0, 0x04, 0xF0, 0x90, 0x8A, 0xE2, 0xE0, 0xFF, 0x90, 0x8A, 0xE0, 0xE0, 0x6F, 0x60, 0x08, 0x90, +0x8A, 0xDF, 0xE0, 0x14, 0xF0, 0x80, 0x83, 0x90, 0x8A, 0xE2, 0xE0, 0xFF, 0x90, 0x8A, 0xE0, 0xE0, +0xC3, 0x9F, 0x50, 0x0F, 0x90, 0x8A, 0xDF, 0xE0, 0xB5, 0x05, 0x08, 0x90, 0x8A, 0xE3, 0xE0, 0x90, +0x8A, 0xDE, 0xF0, 0x90, 0x8A, 0xDE, 0xE0, 0xFF, 0x25, 0xE0, 0x24, 0x66, 0xF5, 0x82, 0xE4, 0x34, +0x41, 0xF5, 0x83, 0xE4, 0x93, 0xFA, 0x74, 0x01, 0x93, 0xFB, 0xEF, 0x25, 0xE0, 0x24, 0x2E, 0xF5, +0x82, 0xE4, 0x34, 0x41, 0xF5, 0x83, 0x74, 0x01, 0x93, 0x2B, 0xFF, 0xE4, 0x93, 0x3A, 0xC3, 0x13, +0xFE, 0xEF, 0x13, 0xFF, 0xEC, 0x25, 0xE0, 0x24, 0xE1, 0xF5, 0x82, 0xE4, 0x34, 0x86, 0xF5, 0x83, +0xEE, 0xF0, 0xA3, 0xEF, 0xF0, 0xAF, 0x04, 0x90, 0x8A, 0xDE, 0xE0, 0xFD, 0x91, 0x4E, 0x90, 0x8A, +0xDE, 0xE0, 0xFF, 0x22, 0xD3, 0x10, 0xAF, 0x01, 0xC3, 0xC0, 0xD0, 0x8B, 0x1A, 0x8A, 0x1B, 0x89, +0x1C, 0x90, 0x8B, 0x3F, 0x12, 0x43, 0x8B, 0xAB, 0x1D, 0xAA, 0x1E, 0xA9, 0x1F, 0x90, 0x8B, 0x42, +0x12, 0x43, 0x8B, 0xAF, 0x20, 0x15, 0x20, 0xEF, 0x60, 0x1E, 0x90, 0x8B, 0x42, 0xE4, 0x75, 0xF0, +0x01, 0x12, 0x43, 0x74, 0x12, 0x24, 0x62, 0xFF, 0x90, 0x8B, 0x3F, 0xE4, 0x75, 0xF0, 0x01, 0x12, +0x43, 0x74, 0xEF, 0x12, 0x42, 0x4D, 0x80, 0xDB, 0xAB, 0x1A, 0xAA, 0x1B, 0xA9, 0x1C, 0xD0, 0xD0, +0x92, 0xAF, 0x22, 0xD3, 0x10, 0xAF, 0x01, 0xC3, 0xC0, 0xD0, 0x90, 0x8B, 0x45, 0x12, 0x43, 0x8B, +0x90, 0x8B, 0x53, 0xE0, 0xFF, 0x04, 0xF0, 0x90, 0x00, 0x01, 0xEF, 0x12, 0x42, 0x5F, 0x7F, 0xAF, +0x7E, 0x01, 0x12, 0x74, 0x3B, 0xEF, 0x60, 0x47, 0x90, 0x8B, 0x45, 0x12, 0x43, 0x6B, 0x8B, 0x1D, +0x8A, 0x1E, 0x89, 0x1F, 0x75, 0x20, 0x02, 0x7B, 0x01, 0x7A, 0x01, 0x79, 0xA0, 0xD1, 0xE4, 0x90, +0x8B, 0x48, 0x12, 0x43, 0x6B, 0x8B, 0x1D, 0x8A, 0x1E, 0x89, 0x1F, 0x90, 0x8B, 0x45, 0x12, 0x43, +0x6B, 0x12, 0x24, 0x62, 0xFF, 0xC4, 0x54, 0x0F, 0xF5, 0x20, 0x7B, 0x01, 0x7A, 0x01, 0x79, 0xA2, +0xD1, 0xE4, 0x90, 0x01, 0xAF, 0x74, 0xFF, 0xF0, 0x90, 0x01, 0xCB, 0xE0, 0x64, 0x80, 0xF0, 0xD0, +0xD0, 0x92, 0xAF, 0x22, 0x90, 0x8A, 0xC5, 0xE0, 0x54, 0xF0, 0x44, 0x03, 0xF0, 0x54, 0x0F, 0x44, +0x80, 0xF0, 0x7B, 0x00, 0x7A, 0x00, 0x79, 0x56, 0x90, 0x8B, 0x48, 0x12, 0x43, 0x8B, 0x0B, 0x7A, +0x8A, 0x79, 0xC5, 0xE1, 0x33, 0xD3, 0x10, 0xAF, 0x01, 0xC3, 0xC0, 0xD0, 0x90, 0x01, 0xC4, 0x74, +0xC5, 0xF0, 0x74, 0x5F, 0xA3, 0xF0, 0x90, 0x04, 0x1D, 0xE0, 0x60, 0x1A, 0x90, 0x05, 0x22, 0xE0, +0x54, 0x90, 0x60, 0x07, 0x90, 0x01, 0xC6, 0xE0, 0x44, 0x40, 0xF0, 0x90, 0x01, 0xC7, 0xE0, 0x30, +0xE1, 0xE4, 0x7F, 0x00, 0x80, 0x02, 0x7F, 0x01, 0xD0, 0xD0, 0x92, 0xAF, 0x22, 0xD3, 0x10, 0xAF, +0x01, 0xC3, 0xC0, 0xD0, 0xE4, 0xFB, 0xFA, 0xEF, 0x30, 0xE0, 0x02, 0x7B, 0x80, 0xEF, 0xC3, 0x13, +0x90, 0xFD, 0x10, 0xF0, 0x90, 0x04, 0x25, 0xEF, 0xF0, 0xED, 0x60, 0x1E, 0xAF, 0x03, 0x74, 0x0F, +0x2F, 0xF5, 0x82, 0xE4, 0x34, 0xFC, 0xF5, 0x83, 0xE0, 0x44, 0x80, 0xF0, 0x74, 0x10, 0x2F, 0xF5, +0x82, 0xE4, 0x34, 0xFC, 0xF5, 0x83, 0xE0, 0x44, 0x80, 0xF0, 0xAF, 0x03, 0x74, 0x08, 0x2F, 0xF5, +0x82, 0xE4, 0x34, 0xFC, 0xF5, 0x83, 0xE4, 0xF0, 0x74, 0x09, 0x2F, 0xF5, 0x82, 0xE4, 0x34, 0xFC, +0xF5, 0x83, 0xE0, 0x54, 0xF0, 0xF0, 0x74, 0x21, 0x2B, 0xF5, 0x82, 0xE4, 0x34, 0xFC, 0xF5, 0x83, +0xE0, 0x54, 0xF7, 0xF0, 0xAE, 0x02, 0xAF, 0x03, 0xD0, 0xD0, 0x92, 0xAF, 0x22, 0x12, 0x5F, 0xC5, +0xBF, 0x01, 0x10, 0x90, 0x02, 0x09, 0xE0, 0xFF, 0x7D, 0x01, 0x12, 0x5F, 0xFD, 0x90, 0x04, 0x1F, +0x74, 0x20, 0xF0, 0x22, 0x90, 0x01, 0x02, 0xE0, 0x54, 0x03, 0xFF, 0xE0, 0x54, 0x0C, 0x13, 0x13, +0x54, 0x3F, 0xFE, 0xEF, 0x64, 0x01, 0x60, 0x04, 0xEF, 0xB4, 0x03, 0x0E, 0x90, 0x8A, 0xC5, 0x74, +0x01, 0xF0, 0xA3, 0x74, 0x37, 0xF0, 0x79, 0x01, 0x80, 0x18, 0xEE, 0x64, 0x01, 0x60, 0x07, 0xAF, +0x06, 0xEE, 0x64, 0x03, 0x70, 0x3B, 0x90, 0x8A, 0xC5, 0x74, 0x01, 0xF0, 0xA3, 0x74, 0x3D, 0xF0, +0x79, 0x40, 0x90, 0x8A, 0xC5, 0xE0, 0xFE, 0xA3, 0xE0, 0xFF, 0xF5, 0x82, 0x8E, 0x83, 0xE0, 0x59, +0x60, 0x08, 0xE9, 0xF0, 0xE4, 0x90, 0x8A, 0xF6, 0xF0, 0x22, 0x90, 0x8A, 0xF6, 0xE0, 0x04, 0xF0, +0xE0, 0xC3, 0x94, 0x0A, 0x40, 0x0B, 0xE4, 0xF0, 0x90, 0x04, 0x19, 0xE0, 0x30, 0xE0, 0x02, 0x11, +0x6D, 0x22, 0xC0, 0xE0, 0xC0, 0xF0, 0xC0, 0x83, 0xC0, 0x82, 0xC0, 0xD0, 0x75, 0xD0, 0x00, 0xC0, +0x00, 0xC0, 0x01, 0xC0, 0x02, 0xC0, 0x03, 0xC0, 0x04, 0xC0, 0x05, 0xC0, 0x06, 0xC0, 0x07, 0x90, +0x01, 0xC4, 0x74, 0xF2, 0xF0, 0x74, 0x60, 0xA3, 0xF0, 0x90, 0x01, 0x34, 0xE0, 0x55, 0x28, 0xF5, +0x2C, 0xA3, 0xE0, 0x55, 0x29, 0xF5, 0x2D, 0xA3, 0xE0, 0x55, 0x2A, 0xF5, 0x2E, 0xA3, 0xE0, 0x55, +0x2B, 0xF5, 0x2F, 0xE5, 0x2C, 0x20, 0xE0, 0x02, 0x41, 0x89, 0x90, 0x01, 0x34, 0x74, 0x01, 0xF0, +0x85, 0xD1, 0x4D, 0x85, 0xD2, 0x4E, 0x85, 0xD3, 0x4F, 0x85, 0xD4, 0x50, 0x85, 0xD5, 0x51, 0x85, +0xD6, 0x52, 0x85, 0xD7, 0x53, 0x85, 0xD9, 0x54, 0xE5, 0x54, 0x54, 0x40, 0xC3, 0x13, 0xFF, 0xE5, +0x53, 0x54, 0x20, 0x6F, 0x70, 0x02, 0x41, 0x46, 0xE5, 0x54, 0x30, 0xE5, 0x02, 0x41, 0x46, 0xE5, +0x52, 0x54, 0x1F, 0xF5, 0x08, 0xE5, 0x4D, 0x54, 0x3F, 0xF5, 0x09, 0xE5, 0x51, 0x54, 0x1F, 0xFF, +0xE5, 0x08, 0x25, 0xE0, 0x24, 0xE3, 0xF5, 0x82, 0xE4, 0x34, 0x88, 0xF5, 0x83, 0xE4, 0x8F, 0xF0, +0x12, 0x42, 0x81, 0xE5, 0x53, 0x54, 0x1F, 0xFF, 0xE5, 0x08, 0x25, 0xE0, 0x24, 0xC0, 0xF5, 0x82, +0xE4, 0x34, 0x85, 0xF5, 0x83, 0xE4, 0x8F, 0xF0, 0x12, 0x42, 0x81, 0xE5, 0x09, 0xD3, 0x94, 0x04, +0x40, 0x03, 0x75, 0x09, 0x04, 0x75, 0xF0, 0x0A, 0xE5, 0x08, 0x90, 0x84, 0x00, 0x12, 0x43, 0x5F, +0x75, 0xF0, 0x02, 0xE5, 0x09, 0x12, 0x43, 0x5F, 0xE0, 0xFE, 0xA3, 0xE0, 0xFF, 0xE5, 0x53, 0x54, +0x1F, 0x2F, 0xFF, 0xE4, 0x3E, 0xFE, 0x75, 0xF0, 0x0A, 0xE5, 0x08, 0x90, 0x84, 0x00, 0x12, 0x43, +0x5F, 0x75, 0xF0, 0x02, 0xE5, 0x09, 0x12, 0x43, 0x5F, 0xEE, 0xF0, 0xA3, 0xEF, 0xF0, 0xE5, 0x54, +0x20, 0xE6, 0x24, 0xE5, 0x53, 0x54, 0x1F, 0xFF, 0xE5, 0x08, 0x25, 0xE0, 0x24, 0x63, 0xF5, 0x82, +0xE4, 0x34, 0x88, 0xF5, 0x83, 0xE4, 0x8F, 0xF0, 0x12, 0x42, 0x81, 0xE5, 0x4F, 0x30, 0xE7, 0x36, +0xAF, 0x08, 0x12, 0x5C, 0xC3, 0x80, 0x2F, 0xE5, 0x53, 0x54, 0x1F, 0xFF, 0xE5, 0x08, 0x25, 0xE0, +0x24, 0xA3, 0xF5, 0x82, 0xE4, 0x34, 0x88, 0xF5, 0x83, 0xE4, 0x8F, 0xF0, 0x12, 0x42, 0x81, 0xE5, +0x4F, 0x30, 0xE7, 0x12, 0xE5, 0x4F, 0x54, 0x7F, 0xFD, 0xE5, 0x53, 0x54, 0x1F, 0xF5, 0x0D, 0xAB, +0x09, 0xAF, 0x08, 0x12, 0x5C, 0x66, 0xE5, 0x24, 0x14, 0x24, 0xFD, 0x50, 0x02, 0x80, 0x3A, 0x90, +0x8B, 0x1A, 0xE0, 0x60, 0x2B, 0x90, 0x01, 0x5B, 0xE4, 0xF0, 0x90, 0x01, 0x3C, 0x74, 0x04, 0xF0, +0x12, 0x4B, 0x34, 0xEF, 0x64, 0x01, 0x70, 0x21, 0x90, 0x8B, 0x3D, 0x12, 0x4B, 0x5C, 0x90, 0x01, +0x5B, 0x74, 0x05, 0xF0, 0x90, 0x06, 0x92, 0x74, 0x01, 0xF0, 0x90, 0x8B, 0x18, 0xF0, 0x80, 0x09, +0x12, 0x4B, 0x34, 0xBF, 0x01, 0x03, 0x12, 0x4A, 0xFC, 0xE5, 0x2C, 0x30, 0xE1, 0x21, 0x90, 0x01, +0x34, 0x74, 0x02, 0xF0, 0x85, 0xD1, 0x56, 0x85, 0xD2, 0x57, 0x85, 0xD3, 0x58, 0x85, 0xD4, 0x59, +0x85, 0xD5, 0x5A, 0x85, 0xD6, 0x5B, 0x85, 0xD7, 0x5C, 0x85, 0xD9, 0x5D, 0x12, 0x5F, 0xA4, 0xE5, +0x2C, 0x30, 0xE3, 0x06, 0x90, 0x01, 0x34, 0x74, 0x08, 0xF0, 0xE5, 0x2C, 0x30, 0xE4, 0x09, 0x90, +0x01, 0x34, 0x74, 0x10, 0xF0, 0x43, 0x55, 0x10, 0xE5, 0x2C, 0x30, 0xE5, 0x26, 0x90, 0x01, 0xCF, +0xE0, 0x30, 0xE5, 0x1F, 0xE0, 0x54, 0xDF, 0xF0, 0x90, 0x01, 0x34, 0x74, 0x20, 0xF0, 0x75, 0xA8, +0x00, 0x75, 0xE8, 0x00, 0x12, 0x51, 0x9D, 0x90, 0x00, 0x03, 0xE0, 0x54, 0xFB, 0xF0, 0x12, 0x52, +0x0E, 0x80, 0xFE, 0xE5, 0x2C, 0x30, 0xE6, 0x2D, 0x90, 0x01, 0x34, 0x74, 0x40, 0xF0, 0x90, 0x8B, +0x32, 0xE0, 0x30, 0xE0, 0x0C, 0x13, 0x13, 0x54, 0x3F, 0x30, 0xE0, 0x05, 0x90, 0x8B, 0x34, 0xE4, +0xF0, 0x90, 0x8B, 0x2C, 0xE0, 0xFF, 0x30, 0xE0, 0x0C, 0x13, 0x13, 0x54, 0x3F, 0x30, 0xE0, 0x05, +0x90, 0x8B, 0x2E, 0xE4, 0xF0, 0xE5, 0x2E, 0x20, 0xE0, 0x02, 0x61, 0xE6, 0x90, 0x8B, 0x08, 0x74, +0x01, 0xF0, 0x90, 0x01, 0x36, 0xF0, 0x90, 0x8B, 0x06, 0xE0, 0x60, 0x0F, 0xE4, 0xF0, 0x90, 0x05, +0x53, 0xE0, 0x44, 0x02, 0xF0, 0x90, 0x05, 0xFC, 0xE0, 0x04, 0xF0, 0x90, 0x8B, 0x32, 0xE0, 0x30, +0xE0, 0x2F, 0x90, 0x8B, 0x37, 0x74, 0x01, 0xF0, 0x90, 0x8B, 0x32, 0xE0, 0xFF, 0x13, 0x13, 0x54, +0x3F, 0x30, 0xE0, 0x1D, 0x90, 0x8B, 0x34, 0x74, 0x01, 0xF0, 0xB1, 0x39, 0x90, 0x8B, 0x33, 0xE0, +0x64, 0x03, 0x60, 0x0D, 0x7F, 0x01, 0x12, 0x4D, 0xE0, 0xEF, 0x60, 0x05, 0x7F, 0x04, 0x12, 0x4E, +0x89, 0x90, 0x8B, 0x2C, 0xE0, 0xFF, 0x30, 0xE0, 0x55, 0x13, 0x13, 0x54, 0x3F, 0x30, 0xE0, 0x4E, +0x90, 0x8B, 0x2E, 0x74, 0x01, 0xF0, 0xB1, 0x39, 0xE4, 0xFF, 0x12, 0x4D, 0xE0, 0xEF, 0x60, 0x3E, +0xB1, 0x5F, 0x90, 0x05, 0x22, 0x74, 0xFF, 0xF0, 0x90, 0x8B, 0x2D, 0xE0, 0xFF, 0x64, 0x06, 0x60, +0x2D, 0xEF, 0xB4, 0x04, 0x02, 0x80, 0x07, 0x90, 0x8B, 0x2D, 0xE0, 0xB4, 0x05, 0x04, 0xE4, 0xFF, +0x80, 0x14, 0x90, 0x8B, 0x2D, 0xE0, 0xB4, 0x03, 0x04, 0x7F, 0x01, 0x80, 0x09, 0x90, 0x8B, 0x2D, +0xE0, 0xB4, 0x02, 0x04, 0x7F, 0x01, 0xB1, 0x82, 0x90, 0x05, 0x22, 0x74, 0xFF, 0xF0, 0x12, 0x43, +0xE7, 0x90, 0x8B, 0x08, 0xE4, 0xF0, 0xE5, 0x2E, 0x30, 0xE1, 0x2F, 0x90, 0x01, 0x36, 0x74, 0x02, +0xF0, 0x43, 0x55, 0x40, 0x11, 0x84, 0x90, 0x8B, 0x37, 0xE0, 0xB4, 0x01, 0x09, 0x90, 0x05, 0x22, +0xE4, 0xF0, 0x90, 0x8B, 0x37, 0xF0, 0x90, 0x8B, 0x2C, 0xE0, 0x30, 0xE0, 0x0D, 0xE4, 0xFF, 0x12, +0x4D, 0xE0, 0xEF, 0x60, 0x05, 0x90, 0x05, 0x22, 0xE4, 0xF0, 0xE5, 0x2E, 0x30, 0xE2, 0x16, 0x90, +0x01, 0x36, 0x74, 0x04, 0xF0, 0x90, 0x8B, 0x2C, 0xE0, 0x30, 0xE0, 0x06, 0xA3, 0xE0, 0x64, 0x06, +0x60, 0x03, 0x12, 0x46, 0xB3, 0xE5, 0x2E, 0x30, 0xE3, 0x38, 0x90, 0x01, 0x36, 0x74, 0x08, 0xF0, +0xE5, 0x21, 0x64, 0x01, 0x70, 0x2C, 0xE5, 0x24, 0x60, 0x28, 0x90, 0x01, 0x57, 0xE4, 0xF0, 0x90, +0x01, 0x3C, 0x74, 0x02, 0xF0, 0x90, 0x8B, 0x3D, 0xE4, 0xF0, 0x90, 0x8B, 0x11, 0xE0, 0x90, 0x8B, +0x3E, 0xF0, 0xE4, 0xFB, 0xFD, 0x7F, 0x54, 0x7E, 0x01, 0x12, 0x4B, 0x6C, 0x90, 0x01, 0x57, 0x74, +0x05, 0xF0, 0xE5, 0x2E, 0x30, 0xE4, 0x2B, 0x90, 0x01, 0x36, 0x74, 0x10, 0xF0, 0xE5, 0x21, 0xB4, +0x01, 0x20, 0xE5, 0x24, 0x60, 0x1C, 0x90, 0x01, 0x57, 0xE4, 0xF0, 0x90, 0x01, 0x3C, 0x74, 0x02, +0xF0, 0x90, 0x8B, 0x1B, 0xE4, 0xF0, 0x53, 0x25, 0xFD, 0xE5, 0x25, 0x54, 0x07, 0x70, 0x03, 0x12, +0x4A, 0xFC, 0xE5, 0x2E, 0x30, 0xE5, 0x1F, 0x90, 0x01, 0x36, 0x74, 0x20, 0xF0, 0xE5, 0x21, 0xB4, +0x01, 0x14, 0xE5, 0x24, 0x60, 0x10, 0x90, 0x8B, 0x1A, 0xE0, 0x64, 0x02, 0x60, 0x05, 0x12, 0x4A, +0x97, 0x80, 0x03, 0x12, 0x49, 0x49, 0xE5, 0x2E, 0x30, 0xE6, 0x1B, 0x90, 0x01, 0x36, 0x74, 0x40, +0xF0, 0xE5, 0x21, 0xB4, 0x01, 0x10, 0xE5, 0x24, 0x60, 0x0C, 0x53, 0x25, 0xFE, 0xE5, 0x25, 0x54, +0x07, 0x70, 0x03, 0x12, 0x4A, 0xFC, 0xE5, 0x2F, 0x30, 0xE1, 0x28, 0x90, 0x01, 0x37, 0x74, 0x02, +0xF0, 0x90, 0x8B, 0x2C, 0xE0, 0x30, 0xE0, 0x18, 0xE4, 0xFF, 0x12, 0x4D, 0xE0, 0xEF, 0x60, 0x08, +0x12, 0x48, 0xFE, 0x12, 0x7D, 0xC1, 0x80, 0x0B, 0x90, 0x8B, 0x31, 0x74, 0x01, 0xF0, 0x80, 0x03, +0x12, 0x48, 0xFE, 0x74, 0xF2, 0x04, 0x90, 0x01, 0xC4, 0xF0, 0x74, 0x60, 0xA3, 0xF0, 0xD0, 0x07, +0xD0, 0x06, 0xD0, 0x05, 0xD0, 0x04, 0xD0, 0x03, 0xD0, 0x02, 0xD0, 0x01, 0xD0, 0x00, 0xD0, 0xD0, +0xD0, 0x82, 0xD0, 0x83, 0xD0, 0xF0, 0xD0, 0xE0, 0x32, 0xE4, 0x90, 0x8B, 0x3D, 0xF0, 0x90, 0x05, +0x58, 0xE0, 0xFF, 0x90, 0x8B, 0x38, 0xE0, 0x2F, 0x24, 0xFE, 0x90, 0x8B, 0x3E, 0xF0, 0xE4, 0xFB, +0xFD, 0x7F, 0x50, 0x7E, 0x01, 0x12, 0x4B, 0x6C, 0x90, 0x01, 0x53, 0x74, 0x05, 0xF0, 0x22, 0x90, +0x8B, 0x2C, 0xE0, 0xFF, 0xC4, 0x13, 0x13, 0x54, 0x03, 0x30, 0xE0, 0x0A, 0xA3, 0xE0, 0x64, 0x06, +0x60, 0x04, 0x7F, 0x06, 0xB1, 0x82, 0x90, 0x8B, 0x2D, 0xE0, 0x64, 0x06, 0x60, 0x03, 0x12, 0x78, +0x35, 0x22, 0xD3, 0x10, 0xAF, 0x01, 0xC3, 0xC0, 0xD0, 0x90, 0x8B, 0x2D, 0xE0, 0xFE, 0x6F, 0x70, +0x02, 0xE1, 0x4E, 0xEF, 0x12, 0x43, 0x94, 0x65, 0xB0, 0x00, 0x65, 0xEA, 0x01, 0x66, 0x30, 0x02, +0x66, 0x6A, 0x03, 0x66, 0xA2, 0x04, 0x66, 0xDB, 0x05, 0x67, 0x16, 0x06, 0x00, 0x00, 0x67, 0x4E, +0xEE, 0xB4, 0x04, 0x06, 0x7F, 0x01, 0xF1, 0x81, 0xE1, 0x4E, 0x90, 0x8B, 0x2D, 0xE0, 0xFF, 0xB4, +0x05, 0x04, 0xF1, 0x5D, 0xE1, 0x4E, 0xEF, 0xB4, 0x06, 0x06, 0x7F, 0x01, 0xF1, 0x72, 0x80, 0x16, +0x90, 0x8B, 0x2D, 0xE0, 0xB4, 0x03, 0x06, 0x7F, 0x01, 0xF1, 0x53, 0x80, 0x09, 0x90, 0x8B, 0x2D, +0xE0, 0xB4, 0x02, 0x02, 0xF1, 0x67, 0xF1, 0xA4, 0xE1, 0x4E, 0x90, 0x8B, 0x2D, 0xE0, 0xB4, 0x04, +0x06, 0x7F, 0x01, 0xF1, 0x81, 0x80, 0x09, 0x90, 0x8B, 0x2D, 0xE0, 0xB4, 0x05, 0x02, 0xF1, 0x5D, +0x90, 0x8B, 0x2D, 0xE0, 0x70, 0x04, 0xF1, 0x9A, 0xE1, 0x4E, 0x90, 0x8B, 0x2D, 0xE0, 0xFE, 0xB4, +0x06, 0x06, 0x7F, 0x01, 0xF1, 0x72, 0xE1, 0x4E, 0xEE, 0xB4, 0x03, 0x06, 0x7F, 0x01, 0xF1, 0x53, +0xE1, 0x4E, 0x90, 0x8B, 0x2D, 0xE0, 0x64, 0x02, 0x60, 0x02, 0xE1, 0x4E, 0xF1, 0x67, 0xE1, 0x4E, +0x90, 0x8B, 0x2D, 0xE0, 0xB4, 0x04, 0x06, 0x7F, 0x01, 0xF1, 0x81, 0x80, 0x09, 0x90, 0x8B, 0x2D, +0xE0, 0xB4, 0x05, 0x02, 0xF1, 0x5D, 0x90, 0x8B, 0x2D, 0xE0, 0x70, 0x04, 0xF1, 0x9A, 0x80, 0x16, +0x90, 0x8B, 0x2D, 0xE0, 0xFE, 0xB4, 0x06, 0x06, 0x7F, 0x01, 0xF1, 0x72, 0x80, 0x08, 0xEE, 0xB4, +0x03, 0x04, 0x7F, 0x01, 0xF1, 0x53, 0xF1, 0xD0, 0xE1, 0x4E, 0x90, 0x8B, 0x2D, 0xE0, 0xB4, 0x04, +0x06, 0x7F, 0x01, 0xF1, 0x81, 0x80, 0x09, 0x90, 0x8B, 0x2D, 0xE0, 0xB4, 0x05, 0x02, 0xF1, 0x5D, +0x90, 0x8B, 0x2D, 0xE0, 0x70, 0x04, 0xF1, 0x9A, 0x80, 0x14, 0x90, 0x8B, 0x2D, 0xE0, 0xFE, 0xB4, +0x06, 0x06, 0xE4, 0xFF, 0xF1, 0x72, 0x80, 0x06, 0xEE, 0xB4, 0x02, 0x02, 0xF1, 0x67, 0xF1, 0xB9, +0xE1, 0x4E, 0x90, 0x8B, 0x2D, 0xE0, 0xFE, 0xB4, 0x06, 0x06, 0xE4, 0xFF, 0xF1, 0x72, 0x80, 0x13, +0xEE, 0xB4, 0x03, 0x06, 0x7F, 0x01, 0xF1, 0x53, 0x80, 0x09, 0x90, 0x8B, 0x2D, 0xE0, 0xB4, 0x02, +0x02, 0xF1, 0x67, 0x90, 0x8B, 0x2D, 0xE0, 0xB4, 0x01, 0x04, 0xF1, 0xA4, 0x80, 0x09, 0x90, 0x8B, +0x2D, 0xE0, 0xB4, 0x05, 0x02, 0xF1, 0x5D, 0xF1, 0xAF, 0x80, 0x73, 0x90, 0x8B, 0x2D, 0xE0, 0xFE, +0xB4, 0x06, 0x06, 0xE4, 0xFF, 0xF1, 0x72, 0x80, 0x13, 0xEE, 0xB4, 0x03, 0x06, 0x7F, 0x01, 0xF1, +0x53, 0x80, 0x09, 0x90, 0x8B, 0x2D, 0xE0, 0xB4, 0x02, 0x02, 0xF1, 0x67, 0x90, 0x8B, 0x2D, 0xE0, +0xB4, 0x01, 0x04, 0xF1, 0xA4, 0x80, 0x0B, 0x90, 0x8B, 0x2D, 0xE0, 0xB4, 0x04, 0x04, 0x7F, 0x01, +0xF1, 0x81, 0xF1, 0xC3, 0x80, 0x38, 0x90, 0x8B, 0x2D, 0xE0, 0xB4, 0x04, 0x06, 0x7F, 0x01, 0xF1, +0x81, 0x80, 0x09, 0x90, 0x8B, 0x2D, 0xE0, 0xB4, 0x05, 0x02, 0xF1, 0x5D, 0x90, 0x8B, 0x2D, 0xE0, +0x70, 0x04, 0xF1, 0x9A, 0x80, 0x16, 0x90, 0x8B, 0x2D, 0xE0, 0xB4, 0x03, 0x06, 0xE4, 0xFF, 0xF1, +0x53, 0x80, 0x09, 0x90, 0x8B, 0x2D, 0xE0, 0xB4, 0x02, 0x02, 0xF1, 0x67, 0xF1, 0xDD, 0xD0, 0xD0, +0x92, 0xAF, 0x22, 0x12, 0x4A, 0xB2, 0x90, 0x8B, 0x2D, 0x74, 0x01, 0xF0, 0x22, 0x90, 0x05, 0x22, +0xE4, 0xF0, 0x90, 0x8B, 0x2D, 0xF0, 0x22, 0x90, 0x05, 0x22, 0xE4, 0xF0, 0x90, 0x8B, 0x2D, 0x04, +0xF0, 0x22, 0xEF, 0x60, 0x05, 0x90, 0x05, 0x22, 0xE4, 0xF0, 0x90, 0x8B, 0x2D, 0x74, 0x01, 0xF0, +0x22, 0x90, 0x8B, 0x56, 0xEF, 0xF0, 0x12, 0x7D, 0x42, 0x90, 0x8B, 0x56, 0xE0, 0x60, 0x05, 0x90, +0x05, 0x22, 0xE4, 0xF0, 0xE4, 0x90, 0x8B, 0x2D, 0xF0, 0x22, 0x12, 0x4A, 0xCC, 0x90, 0x8B, 0x2D, +0x74, 0x01, 0xF0, 0x22, 0x7F, 0x01, 0x12, 0x4A, 0x7C, 0xE4, 0x90, 0x8B, 0x2D, 0xF0, 0x22, 0x12, +0x7C, 0x4A, 0x90, 0x8B, 0x2D, 0x74, 0x04, 0xF0, 0x22, 0x12, 0x4A, 0x32, 0x90, 0x8B, 0x2D, 0x74, +0x03, 0xF0, 0x22, 0x90, 0x05, 0x22, 0x74, 0xFF, 0xF0, 0x90, 0x8B, 0x2D, 0x74, 0x05, 0xF0, 0x22, +0x90, 0x05, 0x22, 0x74, 0xFF, 0xF0, 0x90, 0x8B, 0x2D, 0x74, 0x02, 0xF0, 0x22, 0x90, 0x05, 0x22, +0x74, 0x6F, 0xF0, 0x90, 0x8B, 0x2D, 0x74, 0x06, 0xF0, 0x22, 0xD3, 0x10, 0xAF, 0x01, 0xC3, 0xC0, +0xD0, 0xE4, 0xFD, 0xFC, 0xEF, 0x30, 0xE0, 0x02, 0x7D, 0x80, 0xEF, 0xC3, 0x13, 0x90, 0xFD, 0x10, +0xF0, 0xAE, 0x04, 0xAF, 0x05, 0xD0, 0xD0, 0x92, 0xAF, 0x22, 0x75, 0x28, 0x33, 0xE4, 0xF5, 0x29, +0x75, 0x2A, 0x07, 0xF5, 0x2B, 0x90, 0x01, 0x30, 0xE5, 0x28, 0xF0, 0xA3, 0xE5, 0x29, 0xF0, 0xA3, +0xE5, 0x2A, 0xF0, 0xA3, 0xE5, 0x2B, 0xF0, 0x22, 0x75, 0x30, 0x1F, 0x75, 0x31, 0x01, 0x43, 0x31, +0x10, 0xE4, 0xF5, 0x32, 0x90, 0x01, 0x38, 0xE5, 0x30, 0xF0, 0xA3, 0xE5, 0x31, 0xF0, 0xA3, 0xE5, +0x32, 0xF0, 0x22, 0x22, 0x90, 0x00, 0x02, 0xE0, 0x54, 0xE0, 0x7F, 0x01, 0x60, 0x02, 0x7F, 0x00, +0x22, 0x90, 0x00, 0xF3, 0xE0, 0x7F, 0x00, 0x30, 0xE3, 0x02, 0x7F, 0x01, 0x22, 0x90, 0x8B, 0x09, +0xE0, 0xB4, 0x01, 0x0C, 0x90, 0x00, 0xF2, 0xE0, 0x30, 0xE7, 0x05, 0x7E, 0xFD, 0x7F, 0x33, 0x22, +0x7E, 0xFD, 0x7F, 0x2F, 0x22, 0x90, 0x00, 0xF3, 0xE0, 0x30, 0xE2, 0x0D, 0x90, 0x05, 0x41, 0x74, +0x10, 0xF0, 0x90, 0x05, 0x5A, 0xF0, 0xA3, 0xE4, 0xF0, 0x22, 0x90, 0x01, 0x64, 0x74, 0xA0, 0xF0, +0x22, 0xC0, 0xE0, 0xC0, 0x83, 0xC0, 0x82, 0xC0, 0xD0, 0x75, 0xD0, 0x00, 0xC0, 0x05, 0xC0, 0x06, +0xC0, 0x07, 0x7D, 0x91, 0x90, 0x01, 0xC4, 0xED, 0xF0, 0x74, 0x68, 0xFF, 0xA3, 0xF0, 0x53, 0x91, +0xEF, 0x90, 0x00, 0x51, 0xE0, 0xFE, 0x90, 0x00, 0x55, 0xE0, 0x5E, 0xF5, 0x3D, 0x90, 0x00, 0x52, +0xE0, 0xFE, 0x90, 0x00, 0x56, 0xE0, 0x5E, 0xF5, 0x3E, 0xE5, 0x3D, 0x30, 0xE4, 0x06, 0x90, 0x00, +0x55, 0x74, 0x10, 0xF0, 0xE5, 0x3D, 0x30, 0xE5, 0x06, 0x90, 0x00, 0x55, 0x74, 0x20, 0xF0, 0xE5, +0x3D, 0x30, 0xE6, 0x06, 0x90, 0x00, 0x55, 0x74, 0x40, 0xF0, 0xE5, 0x3D, 0x30, 0xE7, 0x06, 0x90, +0x00, 0x55, 0x74, 0x80, 0xF0, 0xE5, 0x3E, 0x30, 0xE0, 0x06, 0x90, 0x00, 0x56, 0x74, 0x01, 0xF0, +0xE5, 0x3E, 0x30, 0xE1, 0x06, 0x90, 0x00, 0x56, 0x74, 0x02, 0xF0, 0xE5, 0x3E, 0x30, 0xE2, 0x06, +0x90, 0x00, 0x56, 0x74, 0x04, 0xF0, 0xE5, 0x3E, 0x30, 0xE3, 0x06, 0x90, 0x00, 0x56, 0x74, 0x08, +0xF0, 0x90, 0x01, 0xC4, 0xED, 0xF0, 0xA3, 0xEF, 0xF0, 0xD0, 0x07, 0xD0, 0x06, 0xD0, 0x05, 0xD0, +0xD0, 0xD0, 0x82, 0xD0, 0x83, 0xD0, 0xE0, 0x32, 0xEF, 0xC3, 0x94, 0x20, 0x50, 0x39, 0xEF, 0x30, +0xE0, 0x17, 0xED, 0xC4, 0x54, 0xF0, 0xFD, 0xEF, 0xC3, 0x13, 0xFE, 0x24, 0xA4, 0xF5, 0x82, 0xE4, +0x34, 0x04, 0xF5, 0x83, 0xE0, 0x54, 0x0F, 0x80, 0x10, 0xEF, 0xC3, 0x13, 0xFE, 0x24, 0xA4, 0xF5, +0x82, 0xE4, 0x34, 0x04, 0xF5, 0x83, 0xE0, 0x54, 0xF0, 0xF0, 0x74, 0xA4, 0x2E, 0xF5, 0x82, 0xE4, +0x34, 0x04, 0xF5, 0x83, 0xE0, 0x4D, 0xF0, 0x22, 0xAD, 0x07, 0x74, 0x84, 0x2D, 0xF5, 0x82, 0xE4, +0x34, 0x04, 0xF5, 0x83, 0xE0, 0x54, 0x7F, 0x90, 0x8A, 0xDE, 0xF0, 0xE0, 0xF9, 0x54, 0x1F, 0xA3, +0xF0, 0x75, 0xF0, 0x09, 0xED, 0x90, 0x87, 0x27, 0x12, 0x43, 0x5F, 0xE0, 0xFF, 0x90, 0x8A, 0xE1, +0xF0, 0xED, 0x25, 0xE0, 0x24, 0x81, 0xF5, 0x82, 0xE4, 0x34, 0x86, 0xF5, 0x83, 0xE0, 0xFB, 0xA3, +0xE0, 0x90, 0x8A, 0xE2, 0xCB, 0xF0, 0xA3, 0xEB, 0xF0, 0xED, 0x25, 0xE0, 0x24, 0xE4, 0xF5, 0x82, +0xE4, 0x34, 0x89, 0xF5, 0x83, 0xE0, 0xFB, 0xA3, 0xE0, 0x90, 0x8A, 0xE4, 0xCB, 0xF0, 0xA3, 0xEB, +0xF0, 0x90, 0x8A, 0xDF, 0xE0, 0xFE, 0x25, 0xE0, 0x24, 0x2E, 0xF5, 0x82, 0xE4, 0x34, 0x41, 0xF5, +0x83, 0xE4, 0x93, 0xFA, 0x74, 0x01, 0x93, 0xFB, 0xED, 0x25, 0xE0, 0x24, 0xE1, 0xF5, 0x82, 0xE4, +0x34, 0x86, 0xF5, 0x83, 0xEA, 0xF0, 0xA3, 0xEB, 0xF0, 0xEE, 0xC3, 0x9F, 0x40, 0x02, 0x41, 0xB9, +0x90, 0x8A, 0xDF, 0xE0, 0xFF, 0x74, 0xA5, 0x2D, 0xF5, 0x82, 0xE4, 0x34, 0x8A, 0xF5, 0x83, 0xEF, +0xF0, 0xEF, 0x04, 0x90, 0x8A, 0xE0, 0xF0, 0x90, 0x8A, 0xE1, 0xE0, 0xFF, 0x90, 0x8A, 0xE0, 0xE0, +0xFE, 0xD3, 0x9F, 0x40, 0x02, 0x41, 0xF3, 0xEE, 0xC3, 0x94, 0x10, 0x40, 0x21, 0xEE, 0x24, 0xF0, +0xFF, 0x74, 0x01, 0x7E, 0x00, 0xA8, 0x07, 0x08, 0x80, 0x05, 0xC3, 0x33, 0xCE, 0x33, 0xCE, 0xD8, +0xF9, 0xFF, 0x90, 0x8A, 0xE2, 0xE0, 0x5E, 0xFE, 0xA3, 0xE0, 0x5F, 0x4E, 0x70, 0x27, 0x90, 0x8A, +0xE0, 0xE0, 0xFF, 0xC3, 0x94, 0x10, 0x50, 0x59, 0x74, 0x01, 0x7E, 0x00, 0xA8, 0x07, 0x08, 0x80, +0x05, 0xC3, 0x33, 0xCE, 0x33, 0xCE, 0xD8, 0xF9, 0xFF, 0x90, 0x8A, 0xE4, 0xE0, 0x5E, 0xFE, 0xA3, +0xE0, 0x5F, 0x4E, 0x60, 0x3C, 0x90, 0x8A, 0xE0, 0xE0, 0xB4, 0x11, 0x0D, 0x90, 0x8A, 0xE3, 0xE0, +0x30, 0xE7, 0x06, 0x90, 0x8A, 0xE0, 0x74, 0x17, 0xF0, 0x90, 0x8A, 0xE0, 0xE0, 0xFF, 0x64, 0x13, +0x60, 0x04, 0xEF, 0xB4, 0x12, 0x0D, 0x90, 0x8A, 0xE2, 0xE0, 0x30, 0xE0, 0x06, 0x90, 0x8A, 0xE0, +0x74, 0x18, 0xF0, 0x90, 0x8A, 0xE0, 0xE0, 0x90, 0x8A, 0xDF, 0xF0, 0x90, 0x8A, 0xDE, 0xF0, 0x80, +0x42, 0x90, 0x8A, 0xE0, 0xE0, 0x04, 0xF0, 0x41, 0x17, 0x90, 0x8A, 0xE1, 0xE0, 0xFC, 0x90, 0x8A, +0xDF, 0xE0, 0xFF, 0x6C, 0x70, 0x71, 0x74, 0xA5, 0x2D, 0xF5, 0x82, 0xE4, 0x34, 0x8A, 0xF5, 0x83, +0xEF, 0xF0, 0x75, 0xF0, 0x09, 0xED, 0x90, 0x87, 0x29, 0x12, 0x43, 0x5F, 0xE0, 0xB4, 0x01, 0x10, +0xE9, 0x20, 0xE6, 0x0C, 0x90, 0x8A, 0xDF, 0xE0, 0x44, 0x40, 0x90, 0x8A, 0xDE, 0xF0, 0x80, 0x03, +0xAF, 0x01, 0x22, 0x90, 0x8A, 0xDF, 0xE0, 0xFF, 0x25, 0xE0, 0x24, 0x66, 0xF5, 0x82, 0xE4, 0x34, +0x41, 0xF5, 0x83, 0xE4, 0x93, 0xFA, 0x74, 0x01, 0x93, 0xFB, 0xEF, 0x25, 0xE0, 0x24, 0x2E, 0xF5, +0x82, 0xE4, 0x34, 0x41, 0xF5, 0x83, 0x74, 0x01, 0x93, 0x2B, 0xFF, 0xE4, 0x93, 0x3A, 0xC3, 0x13, +0xFE, 0xEF, 0x13, 0xFF, 0xED, 0x25, 0xE0, 0x24, 0xE1, 0xF5, 0x82, 0xE4, 0x34, 0x86, 0xF5, 0x83, +0xEE, 0xF0, 0xA3, 0xEF, 0xF0, 0x80, 0x66, 0x90, 0x8A, 0xDF, 0xE0, 0xD3, 0x9C, 0x40, 0x5E, 0x90, +0x8A, 0xE1, 0xE0, 0xFF, 0x74, 0xA5, 0x2D, 0xF5, 0x82, 0xE4, 0x34, 0x8A, 0xF5, 0x83, 0xEF, 0xF0, +0x90, 0x8A, 0xDF, 0xEF, 0xF0, 0x90, 0x8A, 0xDE, 0xF0, 0xFC, 0xA3, 0xE0, 0xFF, 0x25, 0xE0, 0x24, +0x66, 0xF5, 0x82, 0xE4, 0x34, 0x41, 0xF5, 0x83, 0xE4, 0x93, 0xFA, 0x74, 0x01, 0x93, 0xFB, 0xEF, +0x25, 0xE0, 0x24, 0x2E, 0xF5, 0x82, 0xE4, 0x34, 0x41, 0xF5, 0x83, 0x74, 0x01, 0x93, 0x2B, 0xFF, +0xE4, 0x93, 0x3A, 0xC3, 0x13, 0xFE, 0xEF, 0x13, 0xFF, 0xED, 0x25, 0xE0, 0x24, 0xE1, 0xF5, 0x82, +0xE4, 0x34, 0x86, 0xF5, 0x83, 0xEE, 0xF0, 0xA3, 0xEF, 0xF0, 0xAF, 0x04, 0x22, 0x74, 0x01, 0x2D, +0xF5, 0x82, 0xE4, 0x34, 0x86, 0xF5, 0x83, 0xE4, 0xF0, 0xAF, 0x05, 0x90, 0x8A, 0xDE, 0xE0, 0x44, +0x80, 0xFD, 0x12, 0x5C, 0x4E, 0x90, 0x8A, 0xDE, 0xE0, 0x44, 0x80, 0xFF, 0x22, 0xE4, 0x90, 0x8A, +0xCF, 0xF0, 0x90, 0x8A, 0xCF, 0xE0, 0xFF, 0xC3, 0x94, 0x20, 0x40, 0x03, 0x02, 0x72, 0x54, 0x75, +0xF0, 0x09, 0xEF, 0x90, 0x87, 0x2A, 0x12, 0x43, 0x5F, 0xE0, 0x64, 0x01, 0x60, 0x03, 0x02, 0x72, +0x4B, 0x90, 0x8A, 0xCF, 0xE0, 0x25, 0xE0, 0x24, 0xC0, 0xF5, 0x82, 0xE4, 0x34, 0x85, 0xF5, 0x83, +0xE0, 0xFC, 0xA3, 0xE0, 0xD3, 0x94, 0x00, 0xEC, 0x94, 0x00, 0x50, 0x03, 0x02, 0x72, 0x4B, 0xEF, +0x75, 0xF0, 0x0A, 0xA4, 0x24, 0x00, 0xF9, 0x74, 0x84, 0x35, 0xF0, 0x75, 0x12, 0x01, 0xF5, 0x13, +0x89, 0x14, 0x90, 0x8A, 0xCF, 0xE0, 0x25, 0xE0, 0x24, 0xC0, 0xF5, 0x82, 0xE4, 0x34, 0x85, 0xF5, +0x83, 0xE0, 0xFD, 0xA3, 0xE0, 0x90, 0x8A, 0xD4, 0xCD, 0xF0, 0xA3, 0xED, 0xF0, 0xEF, 0x25, 0xE0, +0x24, 0x63, 0xF5, 0x82, 0xE4, 0x34, 0x88, 0xF5, 0x83, 0xE0, 0xFF, 0xA3, 0xE0, 0x90, 0x8A, 0xD6, +0xCF, 0xF0, 0xA3, 0xEF, 0xF0, 0x90, 0x8A, 0xCF, 0xE0, 0xFE, 0x24, 0x84, 0xF5, 0x82, 0xE4, 0x34, +0x04, 0xF5, 0x83, 0xE0, 0x54, 0x3F, 0x90, 0x8A, 0xD0, 0xF0, 0xE0, 0xFD, 0x54, 0x1F, 0xA3, 0xF0, +0x75, 0xF0, 0x09, 0xEE, 0x90, 0x87, 0x27, 0x12, 0x43, 0x5F, 0xE0, 0x90, 0x8A, 0xD9, 0xF0, 0x90, +0x8A, 0xCF, 0xE0, 0xFB, 0x24, 0x64, 0xF5, 0x82, 0xE4, 0x34, 0x8A, 0xF5, 0x83, 0xE0, 0xC3, 0x94, +0x05, 0x40, 0x02, 0xC1, 0x9C, 0x90, 0x8A, 0xD9, 0xE0, 0xFE, 0x90, 0x8A, 0xD1, 0xE0, 0x9E, 0x40, +0x13, 0x90, 0x8A, 0xD9, 0xE0, 0x90, 0x8A, 0xD1, 0xF0, 0xED, 0x54, 0x40, 0xFD, 0x90, 0x8A, 0xD0, +0xF0, 0xEE, 0x4D, 0xF0, 0x90, 0x8A, 0xD1, 0xE0, 0xFF, 0x90, 0x41, 0x12, 0x93, 0xFE, 0x74, 0x23, +0x2B, 0xF5, 0x82, 0xE4, 0x34, 0x89, 0xF5, 0x83, 0xE0, 0xC3, 0x9E, 0x40, 0x06, 0xEF, 0x90, 0x40, +0xDA, 0x80, 0x07, 0x90, 0x8A, 0xD1, 0xE0, 0x90, 0x40, 0xF6, 0x93, 0x90, 0x8A, 0xD8, 0xF0, 0x90, +0x8A, 0xD8, 0xE0, 0x75, 0xF0, 0x06, 0xA4, 0x24, 0x50, 0xF9, 0x74, 0x40, 0x35, 0xF0, 0x75, 0x0F, +0xFF, 0xF5, 0x10, 0x89, 0x11, 0x90, 0x8A, 0xD0, 0xE0, 0x90, 0x41, 0xBA, 0x93, 0xFF, 0xD3, 0x90, +0x8A, 0xD7, 0xE0, 0x9F, 0x90, 0x8A, 0xD6, 0xE0, 0x94, 0x00, 0x40, 0x0D, 0x90, 0x8A, 0xCF, 0xE0, +0xFF, 0xE4, 0xFD, 0x12, 0x5D, 0x41, 0x02, 0x71, 0xE1, 0x90, 0x8A, 0xCF, 0xE0, 0x25, 0xE0, 0x24, +0xE1, 0xF5, 0x82, 0xE4, 0x34, 0x86, 0xF5, 0x83, 0xE0, 0xFF, 0xA3, 0xE0, 0x90, 0x8A, 0xD2, 0xCF, +0xF0, 0xA3, 0xEF, 0xF0, 0xAB, 0x0F, 0xAA, 0x10, 0xA9, 0x11, 0x12, 0x24, 0x62, 0xFF, 0x7E, 0x00, +0xAB, 0x12, 0xAA, 0x13, 0xA9, 0x14, 0x12, 0x42, 0x97, 0xFD, 0xAC, 0xF0, 0x12, 0x24, 0x7B, 0x90, +0x8A, 0xD2, 0xEE, 0x8F, 0xF0, 0x12, 0x42, 0x81, 0xAB, 0x0F, 0xAA, 0x10, 0xA9, 0x11, 0x90, 0x00, +0x01, 0x12, 0x42, 0x20, 0xFF, 0x7E, 0x00, 0xAB, 0x12, 0xAA, 0x13, 0xA9, 0x14, 0x90, 0x00, 0x02, +0x12, 0x42, 0xC2, 0xFD, 0xAC, 0xF0, 0x12, 0x24, 0x7B, 0x90, 0x8A, 0xD2, 0xEE, 0x8F, 0xF0, 0x12, +0x42, 0x81, 0xAB, 0x0F, 0xAA, 0x10, 0xA9, 0x11, 0x90, 0x00, 0x02, 0x12, 0x42, 0x20, 0xFF, 0x7E, +0x00, 0xAB, 0x12, 0xAA, 0x13, 0xA9, 0x14, 0x90, 0x00, 0x04, 0x12, 0x42, 0xC2, 0xFD, 0xAC, 0xF0, +0x12, 0x24, 0x7B, 0x90, 0x8A, 0xD2, 0xEE, 0x8F, 0xF0, 0x12, 0x42, 0x81, 0xAB, 0x0F, 0xAA, 0x10, +0xA9, 0x11, 0x90, 0x00, 0x03, 0x12, 0x42, 0x20, 0xFF, 0x7E, 0x00, 0xAB, 0x12, 0xAA, 0x13, 0xA9, +0x14, 0x90, 0x00, 0x06, 0x12, 0x42, 0xC2, 0xFD, 0xAC, 0xF0, 0x12, 0x24, 0x7B, 0x90, 0x8A, 0xD2, +0xEE, 0x8F, 0xF0, 0x12, 0x42, 0x81, 0xAB, 0x0F, 0xAA, 0x10, 0xA9, 0x11, 0x90, 0x00, 0x04, 0x12, +0x42, 0x20, 0xFF, 0x7E, 0x00, 0xAB, 0x12, 0xAA, 0x13, 0xA9, 0x14, 0x90, 0x00, 0x08, 0x12, 0x42, +0xC2, 0xFD, 0xAC, 0xF0, 0x12, 0x24, 0x7B, 0x90, 0x8A, 0xD2, 0xEE, 0x8F, 0xF0, 0x12, 0x42, 0x81, +0xAB, 0x0F, 0xAA, 0x10, 0xA9, 0x11, 0x90, 0x00, 0x05, 0x12, 0x42, 0x20, 0xFF, 0x7E, 0x00, 0x90, +0x8A, 0xD4, 0xE0, 0xFC, 0xA3, 0xE0, 0xFD, 0x12, 0x24, 0x7B, 0xD3, 0x90, 0x8A, 0xD3, 0xE0, 0x9F, +0x90, 0x8A, 0xD2, 0xE0, 0x9E, 0x40, 0x0C, 0xA3, 0xE0, 0x9F, 0xF0, 0x90, 0x8A, 0xD2, 0xE0, 0x9E, +0xF0, 0x80, 0x07, 0xE4, 0x90, 0x8A, 0xD2, 0xF0, 0xA3, 0xF0, 0x90, 0x8A, 0xD2, 0xE0, 0xFC, 0xA3, +0xE0, 0xFD, 0x90, 0x8A, 0xCF, 0xE0, 0xFF, 0x25, 0xE0, 0x24, 0xE1, 0xF5, 0x82, 0xE4, 0x34, 0x86, +0xF5, 0x83, 0xEC, 0xF0, 0xA3, 0xED, 0xF0, 0x90, 0x8A, 0xD0, 0xE0, 0x25, 0xE0, 0x24, 0x2E, 0xF5, +0x82, 0xE4, 0x34, 0x41, 0xF5, 0x83, 0xE4, 0x93, 0xFA, 0x74, 0x01, 0x93, 0xFB, 0xD3, 0xED, 0x9B, +0xEC, 0x9A, 0x40, 0x05, 0x31, 0x78, 0x02, 0x71, 0xAF, 0x90, 0x8A, 0xD0, 0xE0, 0x25, 0xE0, 0x24, +0x66, 0xF5, 0x82, 0xE4, 0x34, 0x41, 0xF5, 0x83, 0xE4, 0x93, 0xFE, 0x74, 0x01, 0x93, 0xFF, 0xC3, +0x90, 0x8A, 0xD3, 0xE0, 0x9F, 0x90, 0x8A, 0xD2, 0xE0, 0x9E, 0x40, 0x03, 0x02, 0x71, 0xAF, 0x90, +0x8A, 0xCF, 0xE0, 0xFF, 0x7D, 0x01, 0x12, 0x5D, 0x41, 0x02, 0x71, 0xAF, 0x90, 0x8A, 0xCF, 0xE0, +0xFF, 0x24, 0x64, 0xF5, 0x82, 0xE4, 0x34, 0x8A, 0xF5, 0x83, 0xE0, 0xFC, 0x64, 0x05, 0x60, 0x03, +0x02, 0x70, 0x7D, 0x90, 0x87, 0x22, 0xE0, 0xFE, 0xB4, 0x03, 0x0B, 0x90, 0x8A, 0xD1, 0xE0, 0xC3, +0x94, 0x19, 0x40, 0x3D, 0x80, 0x2E, 0xEE, 0xB4, 0x02, 0x0B, 0x90, 0x8A, 0xD1, 0xE0, 0xC3, 0x94, +0x11, 0x40, 0x2E, 0x80, 0x1F, 0x90, 0x87, 0x22, 0xE0, 0xFE, 0xB4, 0x01, 0x0B, 0x90, 0x8A, 0xD1, +0xE0, 0xC3, 0x94, 0x0A, 0x40, 0x1B, 0x80, 0x0C, 0xEE, 0x70, 0x11, 0x90, 0x8A, 0xD1, 0xE0, 0xC3, +0x94, 0x03, 0x40, 0x0D, 0x90, 0x89, 0x43, 0x74, 0x01, 0xF0, 0x80, 0x05, 0xE4, 0x90, 0x89, 0x43, +0xF0, 0x90, 0x8A, 0xCF, 0xE0, 0xFE, 0x24, 0x43, 0xF5, 0x82, 0xE4, 0x34, 0x88, 0xF5, 0x83, 0xE0, +0x90, 0x8A, 0xDD, 0xF0, 0x74, 0x23, 0x2E, 0xF5, 0x82, 0xE4, 0x34, 0x89, 0xF5, 0x83, 0xE0, 0xFE, +0xC3, 0x94, 0x30, 0x50, 0x0B, 0xE4, 0x90, 0x8A, 0xDD, 0xF0, 0x74, 0x64, 0x2F, 0x02, 0x70, 0x28, +0x90, 0x89, 0x43, 0xE0, 0x64, 0x01, 0x60, 0x03, 0x02, 0x70, 0x1D, 0x90, 0x8A, 0xCF, 0xE0, 0x24, +0x44, 0xF5, 0x82, 0xE4, 0x34, 0x89, 0xF5, 0x83, 0xE0, 0x64, 0x0A, 0x60, 0x5B, 0x90, 0x8A, 0xCF, +0xE0, 0xFF, 0xEE, 0x24, 0x05, 0xFB, 0xE4, 0x33, 0xFA, 0x74, 0x21, 0x2F, 0xF5, 0x82, 0xE4, 0x34, +0x86, 0xF5, 0x83, 0xE0, 0xFF, 0xD3, 0x9B, 0xEA, 0x64, 0x80, 0xF8, 0x74, 0x80, 0x98, 0x50, 0x38, +0x90, 0x8A, 0xCF, 0xE0, 0xFE, 0xEF, 0x24, 0x05, 0xFB, 0xE4, 0x33, 0xFA, 0x74, 0x23, 0x2E, 0xF5, +0x82, 0xE4, 0x34, 0x89, 0xF5, 0x83, 0xE0, 0xD3, 0x9B, 0xEA, 0x64, 0x80, 0xF8, 0x74, 0x80, 0x98, +0x50, 0x16, 0x90, 0x8A, 0xCF, 0xE0, 0x24, 0x84, 0xF5, 0x82, 0xE4, 0x34, 0x8A, 0xF5, 0x83, 0xE0, +0xFF, 0x90, 0x8A, 0xD1, 0xE0, 0x6F, 0x60, 0x56, 0x90, 0x8A, 0xCF, 0xE0, 0x24, 0x23, 0xF5, 0x82, +0xE4, 0x34, 0x89, 0xF5, 0x83, 0xE0, 0xFF, 0xD3, 0x94, 0x42, 0x40, 0x08, 0x90, 0x8A, 0xDD, 0x74, +0x05, 0xF0, 0x80, 0x11, 0xEF, 0xD3, 0x94, 0x39, 0x90, 0x8A, 0xDD, 0x40, 0x05, 0x74, 0x03, 0xF0, +0x80, 0x03, 0x74, 0x01, 0xF0, 0x90, 0x8A, 0xCF, 0xE0, 0xFF, 0x24, 0x23, 0xF5, 0x82, 0xE4, 0x34, +0x89, 0xF5, 0x83, 0xE0, 0xFE, 0x74, 0x21, 0x2F, 0xF5, 0x82, 0xE4, 0x34, 0x86, 0xF5, 0x83, 0xEE, +0xF0, 0x90, 0x8A, 0xCF, 0xE0, 0x24, 0x44, 0xF5, 0x82, 0xE4, 0x34, 0x89, 0x80, 0x2F, 0x90, 0x8A, +0xCF, 0xE0, 0xFF, 0x24, 0x64, 0xF5, 0x82, 0xE4, 0x34, 0x8A, 0xF5, 0x83, 0xE4, 0xF0, 0x74, 0x44, +0x2F, 0xF5, 0x82, 0xE4, 0x34, 0x89, 0xF5, 0x83, 0xE0, 0x04, 0xF0, 0x80, 0x14, 0xE4, 0x90, 0x8A, +0xDD, 0xF0, 0x90, 0x8A, 0xCF, 0xE0, 0x24, 0x64, 0xF5, 0x82, 0xE4, 0x34, 0x8A, 0xF5, 0x83, 0xE4, +0xF0, 0x90, 0x8A, 0xD1, 0xE0, 0xFE, 0x90, 0x8A, 0xCF, 0xE0, 0xFF, 0x24, 0x84, 0xF5, 0x82, 0xE4, +0x34, 0x8A, 0xF5, 0x83, 0xEE, 0xF0, 0x90, 0x8A, 0xDD, 0xE0, 0xFE, 0x74, 0x43, 0x2F, 0xF5, 0x82, +0xE4, 0x34, 0x88, 0xF5, 0x83, 0xEE, 0xF0, 0x75, 0xF0, 0x09, 0xEF, 0x90, 0x87, 0x2B, 0x12, 0x43, +0x5F, 0xE0, 0xB4, 0x01, 0x11, 0xE4, 0x90, 0x8A, 0xDD, 0xF0, 0x74, 0x64, 0x2F, 0xF5, 0x82, 0xE4, +0x34, 0x8A, 0xF5, 0x83, 0xE4, 0xF0, 0x90, 0x8A, 0xDD, 0xE0, 0xFD, 0x21, 0xAC, 0xEC, 0x64, 0x06, +0x60, 0x02, 0x21, 0xAF, 0x90, 0x8A, 0xD2, 0xF0, 0xA3, 0xF0, 0x90, 0x41, 0xDB, 0x93, 0xFF, 0x7E, +0x00, 0x90, 0x8A, 0xD4, 0xE0, 0xFC, 0xA3, 0xE0, 0xFD, 0x12, 0x24, 0x7B, 0x90, 0x8A, 0xDB, 0xEE, +0xF0, 0xA3, 0xEF, 0xF0, 0x90, 0x8A, 0xCF, 0xE0, 0x24, 0x43, 0xF5, 0x82, 0xE4, 0x34, 0x88, 0xF5, +0x83, 0xE0, 0x90, 0x8A, 0xDD, 0xF0, 0xE4, 0x90, 0x8A, 0xDA, 0xF0, 0x90, 0x8A, 0xDA, 0xE0, 0xFF, +0xD3, 0x94, 0x04, 0x50, 0x47, 0xAB, 0x12, 0xAA, 0x13, 0xA9, 0x14, 0x75, 0xF0, 0x02, 0xEF, 0xA4, +0xF5, 0x82, 0x85, 0xF0, 0x83, 0x12, 0x42, 0xC2, 0xFD, 0xAC, 0xF0, 0xEF, 0x90, 0x41, 0xD6, 0x93, +0xFF, 0x7E, 0x00, 0x12, 0x24, 0x7B, 0x90, 0x8A, 0xD2, 0xEE, 0x8F, 0xF0, 0x12, 0x42, 0x81, 0x90, +0x8A, 0xDB, 0xE0, 0xFE, 0xA3, 0xE0, 0xFF, 0xD3, 0x90, 0x8A, 0xD3, 0xE0, 0x9F, 0x90, 0x8A, 0xD2, +0xE0, 0x9E, 0x50, 0x08, 0x90, 0x8A, 0xDA, 0xE0, 0x04, 0xF0, 0x80, 0xAF, 0x90, 0x8A, 0xDA, 0xE0, +0xC3, 0x13, 0xF0, 0x90, 0x8A, 0xDD, 0xE0, 0xFF, 0xB4, 0x01, 0x0D, 0x90, 0x8A, 0xDA, 0xE0, 0x70, +0x5D, 0x90, 0x8A, 0xDD, 0x04, 0xF0, 0x80, 0x5B, 0xEF, 0xB4, 0x03, 0x1D, 0x90, 0x8A, 0xDA, 0xE0, +0xFF, 0x70, 0x08, 0x90, 0x8A, 0xDD, 0x74, 0x03, 0xF0, 0x80, 0x48, 0xEF, 0xB4, 0x01, 0x08, 0x90, +0x8A, 0xDD, 0x74, 0x01, 0xF0, 0x80, 0x3C, 0x80, 0x35, 0x90, 0x8A, 0xDD, 0xE0, 0x64, 0x05, 0x70, +0x32, 0x90, 0x8A, 0xDA, 0xE0, 0xFF, 0x70, 0x08, 0x90, 0x8A, 0xDD, 0x74, 0x05, 0xF0, 0x80, 0x0F, +0xEF, 0x90, 0x8A, 0xDD, 0xB4, 0x01, 0x05, 0x74, 0x03, 0xF0, 0x80, 0x03, 0x74, 0x01, 0xF0, 0xD3, +0x90, 0x8A, 0xD7, 0xE0, 0x94, 0x03, 0x90, 0x8A, 0xD6, 0xE0, 0x94, 0x00, 0x40, 0x05, 0xE4, 0x90, +0x8A, 0xDD, 0xF0, 0xD3, 0x90, 0x8A, 0xD7, 0xE0, 0x94, 0x03, 0x90, 0x8A, 0xD6, 0xE0, 0x94, 0x00, +0x40, 0x05, 0xE4, 0x90, 0x8A, 0xDD, 0xF0, 0x90, 0x8A, 0xDD, 0xE0, 0xFD, 0x90, 0x8A, 0xCF, 0xE0, +0xFF, 0x24, 0x43, 0xF5, 0x82, 0xE4, 0x34, 0x88, 0xF5, 0x83, 0xED, 0xF0, 0x12, 0x69, 0x38, 0x90, +0x8A, 0xCF, 0xE0, 0xFF, 0x24, 0x64, 0xF5, 0x82, 0xE4, 0x34, 0x8A, 0xF5, 0x83, 0xE0, 0xD3, 0x94, +0x05, 0x50, 0x0F, 0x74, 0x64, 0x2F, 0xF5, 0x82, 0xE4, 0x34, 0x8A, 0xF5, 0x83, 0xE0, 0x04, 0xF0, +0x80, 0x0F, 0x90, 0x8A, 0xCF, 0xE0, 0x24, 0x64, 0xF5, 0x82, 0xE4, 0x34, 0x8A, 0xF5, 0x83, 0xE4, +0xF0, 0xAB, 0x12, 0xAA, 0x13, 0xA9, 0x14, 0xE4, 0xF5, 0xF0, 0x12, 0x42, 0xFA, 0xAB, 0x12, 0xAA, +0x13, 0xA9, 0x14, 0x90, 0x00, 0x02, 0xE4, 0xF5, 0xF0, 0x12, 0x43, 0x19, 0x90, 0x00, 0x04, 0xE4, +0xF5, 0xF0, 0x12, 0x43, 0x19, 0x90, 0x00, 0x06, 0xE4, 0xF5, 0xF0, 0x12, 0x43, 0x19, 0x90, 0x00, +0x08, 0xE4, 0xF5, 0xF0, 0x12, 0x43, 0x19, 0x90, 0x8A, 0xCF, 0xE0, 0xFF, 0x25, 0xE0, 0x24, 0xC0, +0xF5, 0x82, 0xE4, 0x34, 0x85, 0xF5, 0x83, 0xE4, 0xF0, 0xA3, 0xF0, 0xEF, 0x25, 0xE0, 0x24, 0x63, +0xF5, 0x82, 0xE4, 0x34, 0x88, 0xF5, 0x83, 0xE4, 0xF0, 0xA3, 0xF0, 0xEF, 0x25, 0xE0, 0x24, 0xA3, +0xF5, 0x82, 0xE4, 0x34, 0x88, 0xF5, 0x83, 0xE4, 0xF0, 0xA3, 0xF0, 0x90, 0x8A, 0xCF, 0xE0, 0x04, +0xF0, 0x02, 0x6B, 0xC2, 0x22, 0xE4, 0x90, 0x8A, 0xCF, 0xF0, 0x90, 0x8A, 0xCF, 0xE0, 0xFF, 0xC3, +0x94, 0x10, 0x50, 0x14, 0x74, 0xA4, 0x2F, 0xF5, 0x82, 0xE4, 0x34, 0x04, 0xF5, 0x83, 0xE4, 0xF0, +0x90, 0x8A, 0xCF, 0xE0, 0x04, 0xF0, 0x80, 0xE2, 0xE4, 0x90, 0x8A, 0xCF, 0xF0, 0x90, 0x8A, 0xCF, +0xE0, 0xFF, 0xC3, 0x94, 0x20, 0x40, 0x02, 0x81, 0x0E, 0x75, 0xF0, 0x0A, 0xEF, 0x90, 0x84, 0x00, +0x12, 0x43, 0x5F, 0xE4, 0xF0, 0xA3, 0xF0, 0x75, 0xF0, 0x0A, 0xEF, 0x90, 0x84, 0x02, 0x12, 0x43, +0x5F, 0xE4, 0xF0, 0xA3, 0xF0, 0x75, 0xF0, 0x0A, 0xEF, 0x90, 0x84, 0x04, 0x12, 0x43, 0x5F, 0xE4, +0xF0, 0xA3, 0xF0, 0x75, 0xF0, 0x0A, 0xEF, 0x90, 0x84, 0x06, 0x12, 0x43, 0x5F, 0xE4, 0xF0, 0xA3, +0xF0, 0x75, 0xF0, 0x0A, 0xEF, 0x90, 0x84, 0x08, 0x12, 0x43, 0x5F, 0xE4, 0xF0, 0xA3, 0xF0, 0x74, +0x84, 0x2F, 0xF5, 0x82, 0xE4, 0x34, 0x8A, 0xF5, 0x83, 0x74, 0x13, 0xF0, 0x74, 0x44, 0x2F, 0xF5, +0x82, 0xE4, 0x34, 0x89, 0xF5, 0x83, 0xE4, 0xF0, 0x74, 0x43, 0x2F, 0xF5, 0x82, 0xE4, 0x34, 0x88, +0xF5, 0x83, 0xE4, 0xF0, 0xEF, 0x25, 0xE0, 0x24, 0xC0, 0xF5, 0x82, 0xE4, 0x34, 0x85, 0xF5, 0x83, +0xE4, 0xF0, 0xA3, 0xF0, 0xEF, 0x25, 0xE0, 0x24, 0x63, 0xF5, 0x82, 0xE4, 0x34, 0x88, 0xF5, 0x83, +0xE4, 0xF0, 0xA3, 0xF0, 0xEF, 0x25, 0xE0, 0x24, 0xE3, 0xF5, 0x82, 0xE4, 0x34, 0x88, 0xF5, 0x83, +0xE4, 0xF0, 0xA3, 0xF0, 0xEF, 0x25, 0xE0, 0x24, 0xA3, 0xF5, 0x82, 0xE4, 0x34, 0x88, 0xF5, 0x83, +0xE4, 0xF0, 0xA3, 0xF0, 0xEF, 0x25, 0xE0, 0x24, 0x64, 0xF5, 0x82, 0xE4, 0x34, 0x89, 0xF5, 0x83, +0xE4, 0xF0, 0xA3, 0xF0, 0xEF, 0x25, 0xE0, 0x24, 0xA4, 0xF5, 0x82, 0xE4, 0x34, 0x89, 0xF5, 0x83, +0xE4, 0xF0, 0xA3, 0xF0, 0x74, 0x44, 0x2F, 0xF5, 0x82, 0xE4, 0x34, 0x8A, 0xF5, 0x83, 0xE4, 0xF0, +0x74, 0x24, 0x2F, 0xF5, 0x82, 0xE4, 0x34, 0x8A, 0xF5, 0x83, 0xE4, 0xF0, 0x74, 0x64, 0x2F, 0xF5, +0x82, 0xE4, 0x34, 0x8A, 0xF5, 0x83, 0xE4, 0xF0, 0x90, 0x41, 0x8C, 0x93, 0xFE, 0x74, 0x01, 0x93, +0xFF, 0x90, 0x41, 0x54, 0x74, 0x01, 0x93, 0x2F, 0xFF, 0xE4, 0x93, 0x3E, 0xC3, 0x13, 0xFE, 0xEF, +0x13, 0xFF, 0x90, 0x8A, 0xCF, 0xE0, 0xFD, 0x25, 0xE0, 0x24, 0xE1, 0xF5, 0x82, 0xE4, 0x34, 0x86, +0xF5, 0x83, 0xEE, 0xF0, 0xA3, 0xEF, 0xF0, 0x75, 0xF0, 0x09, 0xED, 0x90, 0x87, 0x29, 0x12, 0x43, +0x5F, 0x74, 0x01, 0xF0, 0x74, 0xC1, 0x2D, 0xF5, 0x82, 0xE4, 0x34, 0x86, 0xF5, 0x83, 0x74, 0x0C, +0xF0, 0x75, 0xF0, 0x09, 0xED, 0x90, 0x87, 0x25, 0x12, 0x43, 0x5F, 0x74, 0xFF, 0xF0, 0xA3, 0xF0, +0x75, 0xF0, 0x09, 0xED, 0x90, 0x87, 0x23, 0x12, 0x43, 0x5F, 0xE4, 0xF0, 0xA3, 0x74, 0x0F, 0xF0, +0x75, 0xF0, 0x09, 0xED, 0x90, 0x87, 0x27, 0x12, 0x43, 0x5F, 0x74, 0x13, 0xF0, 0x75, 0xF0, 0x09, +0xED, 0x90, 0x87, 0x28, 0x12, 0x43, 0x5F, 0xE4, 0xF0, 0x74, 0x84, 0x2D, 0xF5, 0x82, 0xE4, 0x34, +0x04, 0xF5, 0x83, 0x74, 0x13, 0xF0, 0x90, 0x8A, 0xCF, 0xE0, 0x04, 0xF0, 0x41, 0x7D, 0x22, 0x12, +0x24, 0x62, 0xFF, 0xC3, 0x94, 0x20, 0x50, 0x14, 0x90, 0x00, 0x02, 0x12, 0x42, 0x20, 0xFE, 0x74, +0x23, 0x2F, 0xF5, 0x82, 0xE4, 0x34, 0x89, 0xF5, 0x83, 0xEE, 0xF0, 0x22, 0xEF, 0xB4, 0x20, 0x0A, +0x90, 0x00, 0x02, 0x12, 0x42, 0x20, 0x90, 0x87, 0x21, 0xF0, 0x22, 0x90, 0x8B, 0x4B, 0xEE, 0xF0, +0xA3, 0xEF, 0xF0, 0xE4, 0xA3, 0xF0, 0xA3, 0xF0, 0x90, 0x8B, 0x4B, 0xE0, 0xFE, 0xA3, 0xE0, 0xF5, +0x82, 0x8E, 0x83, 0xE0, 0x60, 0x2C, 0xC3, 0x90, 0x8B, 0x4E, 0xE0, 0x94, 0xE8, 0x90, 0x8B, 0x4D, +0xE0, 0x94, 0x03, 0x40, 0x0A, 0x90, 0x01, 0xC6, 0xE0, 0x44, 0x10, 0xF0, 0x7F, 0x00, 0x22, 0x90, +0x8B, 0x4D, 0xE4, 0x75, 0xF0, 0x01, 0x12, 0x42, 0x81, 0x7F, 0x0A, 0x7E, 0x00, 0x12, 0x32, 0x15, +0x80, 0xC6, 0x7F, 0x01, 0x22, 0x12, 0x24, 0x62, 0xF5, 0x21, 0x22, 0xD3, 0x10, 0xAF, 0x01, 0xC3, +0xC0, 0xD0, 0x90, 0x8A, 0xDA, 0x12, 0x25, 0x14, 0x00, 0x00, 0x00, 0x00, 0x90, 0x00, 0x01, 0x12, +0x42, 0x20, 0x90, 0x8B, 0x1A, 0xF0, 0x90, 0x00, 0x03, 0x12, 0x42, 0x20, 0x90, 0x8B, 0x0A, 0xF0, +0x12, 0x47, 0xFA, 0xD0, 0xD0, 0x92, 0xAF, 0x22, 0x90, 0x00, 0x02, 0x12, 0x42, 0x20, 0xFF, 0x30, +0xE0, 0x25, 0x12, 0x24, 0x62, 0x90, 0x8B, 0x10, 0xF0, 0x90, 0x00, 0x01, 0x12, 0x42, 0x20, 0x90, +0x8B, 0x11, 0xF0, 0xEF, 0xC3, 0x13, 0x54, 0x7F, 0x90, 0x8B, 0x0F, 0xF0, 0x90, 0x00, 0x03, 0x12, +0x42, 0x20, 0x90, 0x8B, 0x16, 0xF0, 0x22, 0x90, 0x8B, 0x10, 0x74, 0x03, 0xF0, 0x90, 0x8B, 0x11, +0x74, 0x05, 0xF0, 0x90, 0x8B, 0x0F, 0x74, 0x14, 0xF0, 0x90, 0x8B, 0x16, 0x74, 0x05, 0xF0, 0x22, +0x12, 0x24, 0x62, 0x30, 0xE0, 0x19, 0xC3, 0x13, 0x54, 0x7F, 0x90, 0x8B, 0x15, 0xF0, 0x90, 0x00, +0x01, 0x12, 0x42, 0x20, 0xFF, 0x90, 0x8B, 0x13, 0xE4, 0xF0, 0xA3, 0xEF, 0xF0, 0x80, 0x0F, 0x90, +0x8B, 0x15, 0x74, 0x05, 0xF0, 0x90, 0x8B, 0x13, 0xE4, 0xF0, 0xA3, 0x74, 0x03, 0xF0, 0x90, 0x8B, +0x13, 0xE0, 0xA3, 0xE0, 0x90, 0x05, 0x58, 0xF0, 0x22, 0x12, 0x24, 0x62, 0x90, 0x8B, 0x12, 0xF0, +0x60, 0x07, 0xE4, 0xFD, 0x7F, 0x04, 0x12, 0x45, 0xA2, 0x90, 0x8B, 0x12, 0xE0, 0x90, 0x01, 0xE7, +0xF0, 0x22, 0x90, 0x02, 0x09, 0xE0, 0xFD, 0x12, 0x24, 0x62, 0xFE, 0xAF, 0x05, 0xED, 0x2E, 0x90, +0x8A, 0xF7, 0xF0, 0x90, 0x00, 0x01, 0x12, 0x42, 0x20, 0xFF, 0xED, 0x2F, 0x90, 0x8A, 0xF8, 0xF0, +0x90, 0x00, 0x02, 0x12, 0x42, 0x20, 0xFF, 0xED, 0x2F, 0x90, 0x8A, 0xF9, 0xF0, 0x90, 0x00, 0x03, +0x12, 0x42, 0x20, 0xFF, 0xED, 0x2F, 0x90, 0x8A, 0xFA, 0xF0, 0x90, 0x00, 0x04, 0x12, 0x42, 0x20, +0xFF, 0xAE, 0x05, 0xED, 0x2F, 0x90, 0x8A, 0xFB, 0xF0, 0x22, 0xD3, 0x10, 0xAF, 0x01, 0xC3, 0xC0, +0xD0, 0x90, 0x8A, 0xDA, 0x12, 0x43, 0x8B, 0xE4, 0x90, 0x8A, 0xDD, 0xF0, 0x12, 0x24, 0x62, 0xC3, +0x13, 0x20, 0xE0, 0x02, 0xC1, 0xED, 0x90, 0x8A, 0xDA, 0x12, 0x43, 0x6B, 0x12, 0x24, 0x62, 0xFF, +0x54, 0x02, 0xFE, 0x90, 0x8B, 0x32, 0xE0, 0x54, 0xFD, 0x4E, 0xFE, 0xF0, 0xEF, 0x54, 0x01, 0xFF, +0xEE, 0x54, 0xFE, 0x4F, 0xFF, 0xF0, 0x12, 0x24, 0x62, 0xFE, 0x54, 0x08, 0xFD, 0xEF, 0x54, 0xF7, +0x4D, 0xFF, 0x90, 0x8B, 0x32, 0xF0, 0xEE, 0x54, 0x10, 0xFE, 0xEF, 0x54, 0xEF, 0x4E, 0xFF, 0xF0, +0x12, 0x24, 0x62, 0xFE, 0x54, 0x20, 0xFD, 0xEF, 0x54, 0xDF, 0x4D, 0xFF, 0x90, 0x8B, 0x32, 0xF0, +0xEE, 0x54, 0x40, 0xFE, 0xEF, 0x54, 0xBF, 0x4E, 0xF0, 0x20, 0xE0, 0x02, 0xC1, 0xD9, 0x90, 0x8A, +0xDD, 0x74, 0x21, 0xF0, 0x90, 0x8A, 0xDA, 0x12, 0x43, 0x6B, 0x12, 0x24, 0x62, 0xFF, 0x13, 0x13, +0x54, 0x01, 0xFE, 0x90, 0x8B, 0x32, 0xE0, 0xFD, 0x13, 0x13, 0x54, 0x01, 0x6E, 0x60, 0x2A, 0xEF, +0x54, 0x04, 0xFF, 0xED, 0x54, 0xFB, 0x4F, 0xF0, 0xE0, 0x13, 0x13, 0x54, 0x3F, 0x30, 0xE0, 0x0E, +0x90, 0x01, 0x34, 0x74, 0x40, 0xF0, 0xFD, 0xE4, 0xFF, 0x12, 0x31, 0x9D, 0x80, 0x0B, 0xE4, 0x90, +0x8B, 0x34, 0xF0, 0x7D, 0x40, 0xFF, 0x12, 0x31, 0x2C, 0x90, 0x8B, 0x32, 0xE0, 0xFD, 0x13, 0x13, +0x13, 0x54, 0x1F, 0x30, 0xE0, 0x07, 0x90, 0x8A, 0xDD, 0xE0, 0x44, 0x12, 0xF0, 0xED, 0xC4, 0x54, +0x0F, 0x30, 0xE0, 0x07, 0x90, 0x8A, 0xDD, 0xE0, 0x44, 0x14, 0xF0, 0x90, 0x8B, 0x32, 0xE0, 0xC4, +0x13, 0x54, 0x07, 0x30, 0xE0, 0x07, 0x90, 0x8A, 0xDD, 0xE0, 0x44, 0x80, 0xF0, 0x90, 0x8B, 0x32, +0xE0, 0xC4, 0x13, 0x13, 0x54, 0x03, 0x20, 0xE0, 0x07, 0x90, 0x8A, 0xDD, 0xE0, 0x44, 0x40, 0xF0, +0x90, 0x8A, 0xDD, 0xE0, 0x90, 0x05, 0x27, 0xF0, 0x90, 0x8B, 0x33, 0xE0, 0x70, 0x05, 0x7F, 0x01, +0x12, 0x4E, 0x89, 0x90, 0x8B, 0x32, 0xE0, 0xC4, 0x13, 0x13, 0x54, 0x03, 0x30, 0xE0, 0x04, 0x7F, +0x03, 0x80, 0x0E, 0x7F, 0x01, 0x12, 0x4D, 0xE0, 0xEF, 0x60, 0x04, 0x7F, 0x01, 0x80, 0x02, 0x7F, +0x02, 0x12, 0x4E, 0x89, 0x7F, 0x02, 0x02, 0x78, 0x2E, 0x90, 0x8A, 0xDD, 0x74, 0x01, 0xF0, 0x90, +0x05, 0x27, 0xF0, 0xE4, 0xFF, 0x12, 0x4E, 0x89, 0x7F, 0x03, 0x02, 0x78, 0x2E, 0x90, 0x8A, 0xDA, +0x12, 0x43, 0x6B, 0x12, 0x24, 0x62, 0xFF, 0x54, 0x02, 0xFE, 0x90, 0x8B, 0x2C, 0xE0, 0x54, 0xFD, +0x4E, 0xFE, 0xF0, 0xEF, 0x54, 0x01, 0xFF, 0xEE, 0x54, 0xFE, 0x4F, 0xFF, 0xF0, 0x12, 0x24, 0x62, +0xFE, 0x54, 0x08, 0xFD, 0xEF, 0x54, 0xF7, 0x4D, 0xFF, 0x90, 0x8B, 0x2C, 0xF0, 0xEE, 0x54, 0x10, +0xFE, 0xEF, 0x54, 0xEF, 0x4E, 0xFF, 0xF0, 0x12, 0x24, 0x62, 0xFE, 0x54, 0x40, 0xFD, 0xEF, 0x54, +0xBF, 0x4D, 0xFF, 0x90, 0x8B, 0x2C, 0xF0, 0xEE, 0x54, 0x04, 0xFE, 0xEF, 0x54, 0xFB, 0x4E, 0xF0, +0x20, 0xE0, 0x02, 0xE1, 0xE2, 0x90, 0x8A, 0xDD, 0x74, 0x31, 0xF0, 0x90, 0x8B, 0x2C, 0xE0, 0x13, +0x13, 0x54, 0x3F, 0x20, 0xE0, 0x0B, 0xE4, 0x90, 0x8B, 0x2E, 0xF0, 0x7D, 0x40, 0xFF, 0x12, 0x31, +0x2C, 0x90, 0x8B, 0x2C, 0xE0, 0xFD, 0x13, 0x13, 0x13, 0x54, 0x1F, 0x30, 0xE0, 0x07, 0x90, 0x8A, +0xDD, 0xE0, 0x44, 0x02, 0xF0, 0xED, 0xC4, 0x54, 0x0F, 0x30, 0xE0, 0x07, 0x90, 0x8A, 0xDD, 0xE0, +0x44, 0x04, 0xF0, 0x90, 0x8A, 0xDD, 0xE0, 0x54, 0x06, 0x60, 0x0C, 0x90, 0x01, 0x3E, 0x74, 0x03, +0xF0, 0xFD, 0x7F, 0x02, 0x12, 0x31, 0xB7, 0x90, 0x8A, 0xDD, 0xE0, 0x90, 0x05, 0x27, 0xF0, 0x90, +0x8B, 0x2C, 0xE0, 0xFF, 0xC4, 0x13, 0x13, 0x54, 0x03, 0x30, 0xE0, 0x0D, 0xA3, 0xE0, 0x64, 0x06, +0x60, 0x2C, 0x7F, 0x06, 0x12, 0x65, 0x82, 0x80, 0x25, 0x90, 0x8B, 0x2D, 0xE0, 0xB4, 0x06, 0x1B, +0x7F, 0x01, 0x12, 0x65, 0x82, 0xE4, 0xFF, 0x12, 0x4D, 0xE0, 0xEF, 0x60, 0x09, 0x7D, 0x01, 0xAF, +0x23, 0x12, 0x45, 0xA2, 0x80, 0x05, 0x12, 0x4E, 0x56, 0x80, 0x03, 0x12, 0x7D, 0xC1, 0x7F, 0x01, +0x80, 0x4C, 0x90, 0x8A, 0xDD, 0x74, 0x01, 0xF0, 0x90, 0x05, 0x27, 0xF0, 0x7D, 0x03, 0x7F, 0x02, +0x12, 0x31, 0x49, 0x90, 0x8B, 0x2D, 0xE0, 0xB4, 0x06, 0x02, 0x80, 0x1B, 0x90, 0x8B, 0x2D, 0xE0, +0xB4, 0x04, 0x02, 0x80, 0x07, 0x90, 0x8B, 0x2D, 0xE0, 0xB4, 0x05, 0x04, 0xE4, 0xFF, 0x80, 0x14, +0x90, 0x8B, 0x2D, 0xE0, 0xB4, 0x03, 0x04, 0x7F, 0x01, 0x80, 0x09, 0x90, 0x8B, 0x2D, 0xE0, 0xB4, +0x02, 0x05, 0x7F, 0x01, 0x12, 0x65, 0x82, 0x11, 0x35, 0x12, 0x4A, 0xFC, 0x7F, 0x03, 0x11, 0x42, +0xD0, 0xD0, 0x92, 0xAF, 0x22, 0x90, 0x8B, 0x31, 0xE0, 0xB4, 0x01, 0x05, 0xE4, 0xF0, 0x12, 0x48, +0xFE, 0x22, 0xAD, 0x07, 0xEF, 0x64, 0x01, 0x60, 0x04, 0xEF, 0xB4, 0x03, 0x15, 0x90, 0x8B, 0x32, +0xE0, 0x54, 0xFE, 0xF0, 0x54, 0xFB, 0xF0, 0xE4, 0xA3, 0xF0, 0xA3, 0xF0, 0xA3, 0xF0, 0xA3, 0xF0, +0xA3, 0xF0, 0xED, 0x64, 0x02, 0x60, 0x04, 0xED, 0xB4, 0x03, 0x15, 0x90, 0x8B, 0x2C, 0xE0, 0x54, +0xFE, 0xF0, 0x54, 0xFB, 0xF0, 0xE4, 0xA3, 0xF0, 0xA3, 0xF0, 0xA3, 0xF0, 0xA3, 0xF0, 0xA3, 0xF0, +0x22, 0x12, 0x24, 0x62, 0x90, 0x8B, 0x38, 0xF0, 0x22, 0xD3, 0x10, 0xAF, 0x01, 0xC3, 0xC0, 0xD0, +0x90, 0x8A, 0xFD, 0xE0, 0x90, 0x8A, 0xE8, 0xF0, 0x90, 0x8A, 0xFE, 0xE0, 0xFF, 0xA3, 0xE0, 0x90, +0x8A, 0xE9, 0xCF, 0xF0, 0xA3, 0xEF, 0xF0, 0xE4, 0x90, 0x8A, 0xE4, 0xF0, 0x90, 0x8A, 0xE4, 0xE0, +0xFF, 0x24, 0x00, 0xF5, 0x82, 0xE4, 0x34, 0x8B, 0xF5, 0x83, 0xE0, 0xFE, 0x74, 0xEB, 0x2F, 0xF5, +0x82, 0xE4, 0x34, 0x8A, 0xF5, 0x83, 0xEE, 0xF0, 0x90, 0x8A, 0xE4, 0xE0, 0x04, 0xF0, 0xE0, 0xB4, +0x04, 0xDA, 0x90, 0x8A, 0xE8, 0xE0, 0x12, 0x43, 0x94, 0x78, 0xF8, 0x00, 0x7A, 0x6B, 0x01, 0x79, +0x01, 0x02, 0x79, 0x01, 0x03, 0x79, 0x01, 0x04, 0x7A, 0x6B, 0x05, 0x7A, 0x35, 0x80, 0x7A, 0x4E, +0x81, 0x7A, 0x6B, 0x82, 0x00, 0x00, 0x7A, 0x67, 0x90, 0x8A, 0xEE, 0xE0, 0xFF, 0x51, 0x72, 0x41, +0x6B, 0x90, 0x8A, 0xE8, 0xE0, 0xFF, 0xB4, 0x02, 0x08, 0x90, 0x8A, 0xE5, 0x74, 0x01, 0xF0, 0x80, +0x0F, 0xEF, 0x90, 0x8A, 0xE5, 0xB4, 0x03, 0x05, 0x74, 0x02, 0xF0, 0x80, 0x03, 0x74, 0x04, 0xF0, +0xC3, 0x90, 0x8A, 0xE9, 0xE0, 0x94, 0x08, 0x50, 0x78, 0xE4, 0x90, 0x8A, 0xE4, 0xF0, 0x90, 0x8A, +0xE5, 0xE0, 0xFF, 0x90, 0x8A, 0xE4, 0xE0, 0xC3, 0x9F, 0x40, 0x02, 0x41, 0x6B, 0x90, 0x8A, 0xE9, +0xE0, 0xFE, 0xA3, 0xE0, 0xFF, 0xC3, 0xEE, 0x94, 0x01, 0x90, 0x8A, 0xE4, 0xE0, 0x50, 0x1F, 0xFE, +0x2F, 0xFF, 0xEE, 0xFD, 0xC3, 0x74, 0x03, 0x9D, 0xFD, 0xE4, 0x94, 0x00, 0xFC, 0x74, 0xEB, 0x2D, +0xF5, 0x82, 0x74, 0x8A, 0x3C, 0xF5, 0x83, 0xE0, 0xFD, 0x12, 0x51, 0x88, 0x80, 0x2B, 0xFF, 0xFD, +0xC3, 0x74, 0x03, 0x9D, 0xFD, 0xE4, 0x94, 0x00, 0xFC, 0x74, 0xEB, 0x2D, 0xF5, 0x82, 0x74, 0x8A, +0x3C, 0xF5, 0x83, 0xE0, 0xFE, 0xEF, 0xFD, 0x90, 0x8A, 0xEA, 0xE0, 0x2D, 0xFD, 0x90, 0x8A, 0xE9, +0xE0, 0x34, 0x00, 0x8D, 0x82, 0xF5, 0x83, 0xEE, 0xF0, 0x90, 0x8A, 0xE4, 0xE0, 0x04, 0xF0, 0x80, +0x8D, 0xC3, 0x90, 0x8A, 0xE9, 0xE0, 0x94, 0x10, 0x40, 0x02, 0x41, 0x6B, 0x90, 0x8A, 0xE8, 0xE0, +0x64, 0x04, 0x60, 0x02, 0x41, 0x6B, 0x90, 0x8A, 0xEC, 0xE0, 0xFF, 0xE4, 0xFC, 0xFD, 0xFE, 0x78, +0x10, 0x12, 0x24, 0xF5, 0xC0, 0x04, 0xC0, 0x05, 0xC0, 0x06, 0xC0, 0x07, 0x90, 0x8A, 0xEB, 0xE0, +0xFF, 0xE4, 0xFC, 0xFD, 0xFE, 0x78, 0x18, 0x12, 0x24, 0xF5, 0xD0, 0x03, 0xD0, 0x02, 0xD0, 0x01, +0xD0, 0x00, 0x12, 0x43, 0x46, 0xC0, 0x04, 0xC0, 0x05, 0xC0, 0x06, 0xC0, 0x07, 0x90, 0x8A, 0xED, +0xE0, 0xFF, 0xE4, 0xFC, 0xFD, 0xFE, 0x78, 0x08, 0x12, 0x24, 0xF5, 0xD0, 0x03, 0xD0, 0x02, 0xD0, +0x01, 0xD0, 0x00, 0x12, 0x43, 0x46, 0xA8, 0x04, 0xA9, 0x05, 0xAA, 0x06, 0xAB, 0x07, 0xA3, 0xE0, +0xFF, 0xE4, 0xFC, 0xFD, 0xFE, 0x12, 0x43, 0x46, 0xA3, 0x12, 0x25, 0x08, 0x90, 0x8A, 0xEF, 0x12, +0x43, 0x53, 0x90, 0x80, 0x96, 0x12, 0x25, 0x08, 0x90, 0x8A, 0xE9, 0xE0, 0xFE, 0xA3, 0xE0, 0xFF, +0x12, 0x2B, 0x08, 0x80, 0x36, 0x90, 0x8A, 0xED, 0xE0, 0xFE, 0xA3, 0xE0, 0x24, 0x00, 0xFF, 0xE4, +0x3E, 0xFE, 0x90, 0x8A, 0xE6, 0xF0, 0xA3, 0xEF, 0xF0, 0x12, 0x32, 0x15, 0x80, 0x1D, 0x90, 0x8A, +0xED, 0xE0, 0xFE, 0xA3, 0xE0, 0x24, 0x00, 0xFF, 0xE4, 0x3E, 0xFE, 0x90, 0x8A, 0xE6, 0xF0, 0xA3, +0xEF, 0xF0, 0x12, 0x31, 0x82, 0x80, 0x04, 0x7F, 0x00, 0x80, 0x02, 0x7F, 0x01, 0xD0, 0xD0, 0x92, +0xAF, 0x22, 0x8F, 0x0F, 0xE4, 0x90, 0x8A, 0xF3, 0xF0, 0xE5, 0x0F, 0x14, 0xFE, 0x90, 0x8A, 0xF3, +0xE0, 0xFF, 0xC3, 0x9E, 0x50, 0x0E, 0xEF, 0x04, 0xFD, 0x12, 0x2D, 0x4D, 0x90, 0x8A, 0xF3, 0xE0, +0x04, 0xF0, 0x80, 0xE5, 0xE5, 0x0F, 0x14, 0xFF, 0x7D, 0xFF, 0x12, 0x2D, 0x4D, 0x90, 0x8A, 0xF3, +0xE5, 0x0F, 0xF0, 0x90, 0x8A, 0xF3, 0xE0, 0xC3, 0x94, 0xFF, 0x50, 0x0F, 0xE0, 0xFF, 0x04, 0xFD, +0x12, 0x2D, 0x4D, 0x90, 0x8A, 0xF3, 0xE0, 0x04, 0xF0, 0x80, 0xE8, 0xAD, 0x0F, 0x7F, 0xFF, 0x02, +0x2D, 0x4D, 0xD3, 0x10, 0xAF, 0x01, 0xC3, 0xC0, 0xD0, 0xE4, 0x90, 0x8A, 0xDD, 0xF0, 0xA3, 0x74, +0x04, 0xF0, 0xA3, 0xE4, 0xF0, 0x90, 0x8A, 0xE2, 0xF0, 0xA3, 0xF0, 0x90, 0x02, 0x09, 0xE0, 0x90, +0x8A, 0xE1, 0xF0, 0x12, 0x24, 0x62, 0xFF, 0x90, 0x8A, 0xE1, 0xE0, 0x2F, 0x90, 0x8A, 0xE0, 0xF0, +0x30, 0xE0, 0x0B, 0x90, 0x8A, 0xDB, 0xE4, 0xF0, 0xA3, 0x74, 0x80, 0xF0, 0x80, 0x07, 0xE4, 0x90, +0x8A, 0xDB, 0xF0, 0xA3, 0xF0, 0x90, 0x8A, 0xE0, 0xE0, 0xC3, 0x13, 0x90, 0xFD, 0x10, 0xF0, 0x90, +0x8A, 0xDD, 0xE0, 0x24, 0x20, 0xF0, 0x90, 0x8A, 0xDB, 0xA3, 0xE0, 0xFD, 0xA3, 0xE0, 0xFC, 0x2D, +0xFF, 0x24, 0x01, 0xF5, 0x82, 0xE4, 0x34, 0xFC, 0xF5, 0x83, 0xE0, 0x90, 0x8A, 0xFD, 0xF0, 0x74, +0x02, 0x2F, 0xF5, 0x82, 0xE4, 0x34, 0xFC, 0xF5, 0x83, 0xE0, 0xFE, 0xEC, 0x2D, 0x24, 0x03, 0xF5, +0x82, 0xE4, 0x34, 0xFC, 0xF5, 0x83, 0xE0, 0x24, 0x00, 0xFF, 0xE4, 0x3E, 0x90, 0x8A, 0xFE, 0xF0, +0xA3, 0xEF, 0xF0, 0x90, 0x8A, 0xDA, 0x74, 0x04, 0xF0, 0x90, 0x8A, 0xDB, 0xA3, 0xE0, 0xFF, 0xA3, +0xE0, 0x2F, 0xFF, 0x90, 0x8A, 0xDA, 0xE0, 0xFE, 0x2F, 0x24, 0x00, 0xF5, 0x82, 0xE4, 0x34, 0xFC, +0xF5, 0x83, 0xE0, 0xFF, 0x74, 0xFC, 0x2E, 0xF5, 0x82, 0xE4, 0x34, 0x8A, 0xF5, 0x83, 0xEF, 0xF0, +0x90, 0x8A, 0xDA, 0xE0, 0x04, 0xF0, 0xE0, 0xB4, 0x08, 0xCF, 0x11, 0x89, 0xEF, 0x70, 0x45, 0x90, +0x01, 0xC3, 0xE0, 0x60, 0x2B, 0xC3, 0x90, 0x8A, 0xE3, 0xE0, 0x94, 0xE8, 0x90, 0x8A, 0xE2, 0xE0, +0x94, 0x03, 0x40, 0x09, 0x90, 0x01, 0xC6, 0xE0, 0x44, 0x10, 0xF0, 0x80, 0x79, 0x90, 0x8A, 0xE2, +0xE4, 0x75, 0xF0, 0x01, 0x12, 0x42, 0x81, 0x7F, 0x0A, 0x7E, 0x00, 0x12, 0x32, 0x15, 0x80, 0xCF, +0x90, 0x01, 0xC6, 0xE0, 0x90, 0x01, 0xC3, 0x30, 0xE2, 0x05, 0x74, 0xFE, 0xF0, 0x80, 0x57, 0x74, +0xFF, 0xF0, 0x80, 0x52, 0x90, 0x8A, 0xDD, 0xE0, 0xB4, 0x78, 0x2E, 0xE4, 0xF0, 0x90, 0x8A, 0xE0, +0xE0, 0x04, 0xF0, 0x90, 0x8A, 0xDB, 0xE0, 0x70, 0x04, 0xA3, 0xE0, 0x64, 0x80, 0x90, 0x8A, 0xDB, +0x70, 0x05, 0xF0, 0xA3, 0xF0, 0x80, 0x06, 0xE4, 0xF0, 0xA3, 0x74, 0x80, 0xF0, 0x90, 0x8A, 0xE0, +0xE0, 0xC3, 0x13, 0x90, 0xFD, 0x10, 0xF0, 0x80, 0x07, 0x90, 0x8A, 0xDD, 0xE0, 0x24, 0x08, 0xF0, +0x90, 0x8A, 0xDE, 0x74, 0xFF, 0xF5, 0xF0, 0x12, 0x42, 0x81, 0x90, 0x8A, 0xDE, 0xE0, 0x70, 0x02, +0xA3, 0xE0, 0x60, 0x02, 0x61, 0x16, 0xD0, 0xD0, 0x92, 0xAF, 0x22, 0x12, 0x24, 0x62, 0x90, 0x8B, +0x05, 0xF0, 0x90, 0x00, 0x01, 0x12, 0x42, 0x20, 0x90, 0x8B, 0x06, 0xF0, 0x22, 0xE4, 0xF5, 0x61, +0x22, 0x91, 0x4A, 0x90, 0x8B, 0x33, 0x74, 0x02, 0xF0, 0x22, 0x90, 0x05, 0x22, 0x74, 0xFF, 0xF0, +0x7F, 0x78, 0x7E, 0x08, 0x12, 0x22, 0x65, 0x90, 0x8B, 0x1C, 0x12, 0x25, 0x08, 0x7F, 0x04, 0x7E, +0x0C, 0x12, 0x22, 0x65, 0x90, 0x8B, 0x20, 0x12, 0x25, 0x08, 0x7F, 0x00, 0x7E, 0x08, 0x12, 0x22, +0x65, 0x90, 0x8B, 0x24, 0x12, 0x25, 0x08, 0x90, 0x8B, 0x09, 0xE0, 0x90, 0x8B, 0x1C, 0xB4, 0x01, +0x0D, 0x12, 0x43, 0x53, 0xEF, 0x54, 0xC7, 0xFF, 0xED, 0x54, 0xC7, 0xFD, 0x80, 0x07, 0x12, 0x43, +0x53, 0xEF, 0x54, 0xC7, 0xFF, 0xEC, 0x90, 0x80, 0x96, 0x12, 0x25, 0x08, 0x7F, 0x78, 0x7E, 0x08, +0x12, 0x2B, 0x08, 0x90, 0x8B, 0x20, 0x12, 0x43, 0x53, 0xEF, 0x54, 0x0F, 0xFF, 0xEC, 0x90, 0x80, +0x96, 0x12, 0x25, 0x08, 0x7F, 0x04, 0x7E, 0x0C, 0x12, 0x2B, 0x08, 0x90, 0x8B, 0x24, 0x12, 0x43, +0x53, 0xEF, 0x44, 0x02, 0xFF, 0xEC, 0x90, 0x80, 0x96, 0x12, 0x25, 0x08, 0x7F, 0x00, 0x7E, 0x08, +0x12, 0x2B, 0x08, 0x7F, 0x70, 0x7E, 0x0E, 0x12, 0x22, 0x65, 0x90, 0x8B, 0x28, 0x12, 0x25, 0x08, +0x90, 0x80, 0x96, 0x12, 0x25, 0x14, 0x00, 0x1B, 0x25, 0xA0, 0x7F, 0x70, 0x7E, 0x0E, 0x12, 0x2B, +0x08, 0x90, 0x80, 0x68, 0x12, 0x25, 0x14, 0x00, 0x00, 0x00, 0x00, 0xE4, 0xFD, 0xFF, 0x12, 0x30, +0x2C, 0x90, 0x8B, 0x09, 0xE0, 0xB4, 0x01, 0x11, 0x90, 0x80, 0x68, 0x12, 0x25, 0x14, 0x00, 0x00, +0x00, 0x00, 0xE4, 0xFD, 0x7F, 0x01, 0x12, 0x30, 0x2C, 0x90, 0x00, 0x11, 0xE0, 0x54, 0xF6, 0xF0, +0x02, 0x52, 0x0E, 0x91, 0x50, 0x90, 0x8B, 0x33, 0x74, 0x02, 0xF0, 0x22, 0x90, 0x05, 0x22, 0x74, +0xFF, 0xF0, 0x90, 0x8B, 0x33, 0x74, 0x04, 0xF0, 0x22, 0xB1, 0x42, 0x90, 0x8B, 0x33, 0x74, 0x04, +0xF0, 0x22, 0x90, 0x00, 0x11, 0xE0, 0x44, 0x09, 0xF0, 0x12, 0x52, 0x0E, 0x90, 0x8B, 0x1C, 0x12, +0x43, 0x53, 0x90, 0x80, 0x96, 0x12, 0x25, 0x08, 0x7F, 0x78, 0x7E, 0x08, 0x12, 0x2B, 0x08, 0x90, +0x8B, 0x20, 0x12, 0x43, 0x53, 0x90, 0x80, 0x96, 0x12, 0x25, 0x08, 0x7F, 0x04, 0x7E, 0x0C, 0x12, +0x2B, 0x08, 0x90, 0x8B, 0x24, 0x12, 0x43, 0x53, 0x90, 0x80, 0x96, 0x12, 0x25, 0x08, 0x7F, 0x00, +0x7E, 0x08, 0x12, 0x2B, 0x08, 0x90, 0x8B, 0x28, 0x12, 0x43, 0x53, 0x90, 0x80, 0x96, 0x12, 0x25, +0x08, 0x7F, 0x70, 0x7E, 0x0E, 0x12, 0x2B, 0x08, 0x90, 0x80, 0x68, 0x12, 0x25, 0x14, 0x00, 0x03, +0x2D, 0x95, 0xE4, 0xFD, 0xFF, 0x12, 0x30, 0x2C, 0x90, 0x8B, 0x09, 0xE0, 0xB4, 0x01, 0x11, 0x90, +0x80, 0x68, 0x12, 0x25, 0x14, 0x00, 0x03, 0x2D, 0x95, 0xE4, 0xFD, 0x7F, 0x01, 0x12, 0x30, 0x2C, +0x22, 0x90, 0x8B, 0x2D, 0xE0, 0x64, 0x06, 0x60, 0x3C, 0xE5, 0x22, 0x54, 0x0F, 0x14, 0x60, 0x2E, +0x14, 0x60, 0x1E, 0x24, 0xFE, 0x60, 0x0E, 0x24, 0xF8, 0x70, 0x2A, 0xE4, 0x90, 0x8B, 0x2D, 0xF0, +0x90, 0x05, 0x22, 0xF0, 0x22, 0x90, 0x8B, 0x2D, 0x74, 0x01, 0xF0, 0x90, 0x05, 0x22, 0xE4, 0xF0, +0x22, 0x90, 0x8B, 0x2D, 0x74, 0x03, 0xF0, 0x90, 0x05, 0x22, 0x74, 0xFF, 0xF0, 0x22, 0x90, 0x01, +0xC6, 0xE0, 0x44, 0x08, 0xF0, 0x22, 0xAE, 0x07, 0xE4, 0xFF, 0x12, 0x4D, 0xE0, 0xEF, 0x60, 0x18, +0x90, 0x8B, 0x2C, 0xE0, 0xC4, 0x13, 0x13, 0x54, 0x03, 0x20, 0xE0, 0x0C, 0xAF, 0x06, 0x7D, 0x01, +0x12, 0x45, 0xA2, 0xB1, 0xC1, 0x7F, 0x01, 0x22, 0x7F, 0x00, 0x22, 0x90, 0x01, 0x57, 0xE0, 0x60, +0x3C, 0x90, 0x01, 0x57, 0xE4, 0xF0, 0x90, 0x01, 0x3C, 0x74, 0x02, 0xF0, 0x90, 0x8B, 0x1B, 0xE0, +0x60, 0x07, 0xE4, 0xF0, 0x53, 0x25, 0xFD, 0x80, 0x24, 0x90, 0x8B, 0x0C, 0xE0, 0x04, 0xF0, 0x53, +0x25, 0xEF, 0x90, 0x8B, 0x10, 0xE0, 0xFF, 0x90, 0x8B, 0x0C, 0xE0, 0xD3, 0x9F, 0x40, 0x0E, 0xE5, +0x21, 0xB4, 0x01, 0x09, 0x90, 0x8B, 0x0D, 0xE0, 0x70, 0x03, 0xE0, 0x04, 0xF0, 0x90, 0x01, 0x5B, +0xE0, 0x60, 0x10, 0x90, 0x01, 0x5B, 0xE4, 0xF0, 0x90, 0x01, 0x3C, 0x74, 0x04, 0xF0, 0xE4, 0x90, +0x8B, 0x18, 0xF0, 0x90, 0x01, 0x5F, 0xE0, 0x60, 0x10, 0x90, 0x01, 0x5F, 0xE4, 0xF0, 0x90, 0x01, +0x3C, 0x74, 0x08, 0xF0, 0xE4, 0x90, 0x8B, 0x17, 0xF0, 0x22, 0xE4, 0x90, 0x8B, 0x4F, 0xF0, 0xA3, +0xF0, 0x90, 0x05, 0xF8, 0xE0, 0x70, 0x0F, 0xA3, 0xE0, 0x70, 0x0B, 0xA3, 0xE0, 0x70, 0x07, 0xA3, +0xE0, 0x70, 0x03, 0x7F, 0x01, 0x22, 0xD3, 0x90, 0x8B, 0x50, 0xE0, 0x94, 0xE8, 0x90, 0x8B, 0x4F, +0xE0, 0x94, 0x03, 0x40, 0x03, 0x7F, 0x00, 0x22, 0x7F, 0x32, 0x7E, 0x00, 0x12, 0x32, 0x15, 0x90, +0x8B, 0x4F, 0xE4, 0x75, 0xF0, 0x01, 0x12, 0x42, 0x81, 0x80, 0xC6, 0x00, 0xFB, 0x98}; + +// =================== v88 UMC B Cut P2PPS with CCX report C2H 2012-12-05 ===================== +u8 Rtl8192CUFwUMCBCutImgArray[UMCBCutImgArrayLength] = { +0xC2, 0x88, 0x02, 0x05, 0x58, 0x00, 0x02, 0x00, 0x12, 0x05, 0x17, 0x10, 0xC0, 0x3E, 0x01, 0x00, +0x94, 0x18, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x02, 0x46, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x02, 0x60, 0xF3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x02, 0x67, 0x5B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x4B, 0x87, 0x00, 0x00, +0x05, 0x04, 0x03, 0x02, 0x00, 0x03, 0x06, 0x05, 0x04, 0x03, 0x00, 0x04, 0x06, 0x05, 0x04, 0x02, +0x00, 0x04, 0x08, 0x07, 0x06, 0x04, 0x00, 0x06, 0x0A, 0x09, 0x08, 0x06, 0x00, 0x08, 0x0A, 0x09, +0x08, 0x04, 0x00, 0x08, 0x0A, 0x09, 0x08, 0x02, 0x00, 0x08, 0x0A, 0x09, 0x08, 0x00, 0x00, 0x08, +0x12, 0x11, 0x10, 0x08, 0x00, 0x10, 0x1A, 0x19, 0x18, 0x10, 0x00, 0x18, 0x22, 0x21, 0x20, 0x18, +0x00, 0x20, 0x22, 0x21, 0x20, 0x10, 0x00, 0x20, 0x22, 0x21, 0x20, 0x08, 0x00, 0x20, 0x22, 0x21, +0x1C, 0x08, 0x00, 0x20, 0x22, 0x21, 0x14, 0x08, 0x00, 0x20, 0x22, 0x20, 0x18, 0x08, 0x00, 0x20, +0x31, 0x30, 0x20, 0x10, 0x00, 0x30, 0x31, 0x30, 0x18, 0x00, 0x00, 0x30, 0x31, 0x2F, 0x10, 0x10, +0x00, 0x30, 0x31, 0x2C, 0x10, 0x10, 0x00, 0x30, 0x31, 0x28, 0x10, 0x00, 0x00, 0x30, 0x31, 0x20, +0x10, 0x00, 0x00, 0x30, 0x31, 0x10, 0x10, 0x00, 0x00, 0x30, 0x04, 0x04, 0x04, 0x05, 0x04, 0x04, +0x05, 0x07, 0x07, 0x07, 0x08, 0x0A, 0x04, 0x04, 0x04, 0x04, 0x06, 0x0A, 0x0B, 0x0D, 0x05, 0x05, +0x07, 0x07, 0x08, 0x0B, 0x0D, 0x0F, 0x04, 0x04, 0x04, 0x05, 0x07, 0x07, 0x09, 0x09, 0x0C, 0x0E, +0x10, 0x12, 0x06, 0x07, 0x09, 0x0A, 0x0C, 0x0E, 0x11, 0x13, 0x09, 0x09, 0x09, 0x09, 0x0C, 0x0E, +0x11, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x26, 0x2A, 0x18, 0x1A, +0x1D, 0x1F, 0x21, 0x27, 0x29, 0x2A, 0x00, 0x00, 0x00, 0x1F, 0x23, 0x28, 0x2A, 0x2C, 0x00, 0x04, +0x00, 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, 0x18, 0x00, 0x24, 0x00, 0x30, 0x00, 0x48, 0x00, 0x60, +0x00, 0x90, 0x00, 0xC0, 0x00, 0xD8, 0x00, 0x50, 0x00, 0x78, 0x00, 0xA0, 0x00, 0xC8, 0x01, 0x40, +0x01, 0x90, 0x01, 0xE0, 0x02, 0x30, 0x01, 0x2C, 0x01, 0x40, 0x01, 0xE0, 0x02, 0xD0, 0x03, 0xE8, +0x04, 0xB0, 0x06, 0x40, 0x07, 0xD0, 0x00, 0x02, 0x00, 0x02, 0x00, 0x04, 0x00, 0x08, 0x00, 0x0C, +0x00, 0x12, 0x00, 0x18, 0x00, 0x24, 0x00, 0x30, 0x00, 0x48, 0x00, 0x60, 0x00, 0x6C, 0x00, 0x28, +0x00, 0x3C, 0x00, 0x50, 0x00, 0x64, 0x00, 0xA0, 0x00, 0xC8, 0x00, 0xF0, 0x01, 0x18, 0x00, 0x64, +0x00, 0xA0, 0x00, 0xF0, 0x01, 0x68, 0x01, 0xF4, 0x02, 0x58, 0x03, 0x20, 0x03, 0xE8, 0x02, 0x02, +0x02, 0x02, 0x02, 0x02, 0x03, 0x03, 0x04, 0x04, 0x05, 0x07, 0x02, 0x03, 0x04, 0x0A, 0x0C, 0x0E, +0x10, 0x12, 0x05, 0x07, 0x07, 0x08, 0x0B, 0x12, 0x24, 0x3C, 0x01, 0x01, 0x01, 0x01, 0x01, 0x02, +0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x05, 0x06, +0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x20, 0x1E, 0x1C, 0x18, 0x10, 0x18, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xBB, 0x01, 0x0C, 0xE5, 0x82, 0x29, 0xF5, 0x82, 0xE5, 0x83, 0x3A, 0xF5, 0x83, 0xE0, 0x22, 0x50, +0x06, 0xE9, 0x25, 0x82, 0xF8, 0xE6, 0x22, 0xBB, 0xFE, 0x06, 0xE9, 0x25, 0x82, 0xF8, 0xE2, 0x22, +0xE5, 0x82, 0x29, 0xF5, 0x82, 0xE5, 0x83, 0x3A, 0xF5, 0x83, 0xE4, 0x93, 0x22, 0xBB, 0x01, 0x06, +0x89, 0x82, 0x8A, 0x83, 0xF0, 0x22, 0x50, 0x02, 0xF7, 0x22, 0xBB, 0xFE, 0x01, 0xF3, 0x22, 0xF8, +0xBB, 0x01, 0x0D, 0xE5, 0x82, 0x29, 0xF5, 0x82, 0xE5, 0x83, 0x3A, 0xF5, 0x83, 0xE8, 0xF0, 0x22, +0x50, 0x06, 0xE9, 0x25, 0x82, 0xC8, 0xF6, 0x22, 0xBB, 0xFE, 0x05, 0xE9, 0x25, 0x82, 0xC8, 0xF2, +0x22, 0xC5, 0xF0, 0xF8, 0xA3, 0xE0, 0x28, 0xF0, 0xC5, 0xF0, 0xF8, 0xE5, 0x82, 0x15, 0x82, 0x70, +0x02, 0x15, 0x83, 0xE0, 0x38, 0xF0, 0x22, 0xBB, 0x01, 0x0A, 0x89, 0x82, 0x8A, 0x83, 0xE0, 0xF5, +0xF0, 0xA3, 0xE0, 0x22, 0x50, 0x06, 0x87, 0xF0, 0x09, 0xE7, 0x19, 0x22, 0xBB, 0xFE, 0x07, 0xE3, +0xF5, 0xF0, 0x09, 0xE3, 0x19, 0x22, 0x89, 0x82, 0x8A, 0x83, 0xE4, 0x93, 0xF5, 0xF0, 0x74, 0x01, +0x93, 0x22, 0xBB, 0x01, 0x10, 0xE5, 0x82, 0x29, 0xF5, 0x82, 0xE5, 0x83, 0x3A, 0xF5, 0x83, 0xE0, +0xF5, 0xF0, 0xA3, 0xE0, 0x22, 0x50, 0x09, 0xE9, 0x25, 0x82, 0xF8, 0x86, 0xF0, 0x08, 0xE6, 0x22, +0xBB, 0xFE, 0x0A, 0xE9, 0x25, 0x82, 0xF8, 0xE2, 0xF5, 0xF0, 0x08, 0xE2, 0x22, 0xE5, 0x83, 0x2A, +0xF5, 0x83, 0xE9, 0x93, 0xF5, 0xF0, 0xA3, 0xE9, 0x93, 0x22, 0xBB, 0x01, 0x0A, 0x89, 0x82, 0x8A, +0x83, 0xF0, 0xE5, 0xF0, 0xA3, 0xF0, 0x22, 0x50, 0x06, 0xF7, 0x09, 0xA7, 0xF0, 0x19, 0x22, 0xBB, +0xFE, 0x06, 0xF3, 0xE5, 0xF0, 0x09, 0xF3, 0x19, 0x22, 0xF8, 0xBB, 0x01, 0x11, 0xE5, 0x82, 0x29, +0xF5, 0x82, 0xE5, 0x83, 0x3A, 0xF5, 0x83, 0xE8, 0xF0, 0xE5, 0xF0, 0xA3, 0xF0, 0x22, 0x50, 0x09, +0xE9, 0x25, 0x82, 0xC8, 0xF6, 0x08, 0xA6, 0xF0, 0x22, 0xBB, 0xFE, 0x09, 0xE9, 0x25, 0x82, 0xC8, +0xF2, 0xE5, 0xF0, 0x08, 0xF2, 0x22, 0xEF, 0x4B, 0xFF, 0xEE, 0x4A, 0xFE, 0xED, 0x49, 0xFD, 0xEC, +0x48, 0xFC, 0x22, 0xE0, 0xFC, 0xA3, 0xE0, 0xFD, 0xA3, 0xE0, 0xFE, 0xA3, 0xE0, 0xFF, 0x22, 0xA4, +0x25, 0x82, 0xF5, 0x82, 0xE5, 0xF0, 0x35, 0x83, 0xF5, 0x83, 0x22, 0xE0, 0xFB, 0xA3, 0xE0, 0xFA, +0xA3, 0xE0, 0xF9, 0x22, 0xF8, 0xE0, 0xFB, 0xA3, 0xA3, 0xE0, 0xF9, 0x25, 0xF0, 0xF0, 0xE5, 0x82, +0x15, 0x82, 0x70, 0x02, 0x15, 0x83, 0xE0, 0xFA, 0x38, 0xF0, 0x22, 0xEB, 0xF0, 0xA3, 0xEA, 0xF0, +0xA3, 0xE9, 0xF0, 0x22, 0xD0, 0x83, 0xD0, 0x82, 0xF8, 0xE4, 0x93, 0x70, 0x12, 0x74, 0x01, 0x93, +0x70, 0x0D, 0xA3, 0xA3, 0x93, 0xF8, 0x74, 0x01, 0x93, 0xF5, 0x82, 0x88, 0x83, 0xE4, 0x73, 0x74, +0x02, 0x93, 0x68, 0x60, 0xEF, 0xA3, 0xA3, 0xA3, 0x80, 0xDF, 0xD0, 0x83, 0xD0, 0x82, 0xF8, 0xE4, +0x93, 0x70, 0x12, 0x74, 0x01, 0x93, 0x70, 0x0D, 0xA3, 0xA3, 0x93, 0xF8, 0x74, 0x01, 0x93, 0xF5, +0x82, 0x88, 0x83, 0xE4, 0x73, 0x74, 0x02, 0x93, 0xB5, 0xF0, 0x06, 0x74, 0x03, 0x93, 0x68, 0x60, +0xE9, 0xA3, 0xA3, 0xA3, 0xA3, 0x80, 0xD8, 0xE4, 0x90, 0x8A, 0xC5, 0xF0, 0xE5, 0x24, 0x70, 0x03, +0x02, 0x44, 0x9D, 0xE5, 0x21, 0x64, 0x01, 0x60, 0x03, 0x02, 0x44, 0x9D, 0xE5, 0x24, 0x14, 0x60, +0x29, 0x24, 0xFD, 0x60, 0x25, 0x24, 0x02, 0x24, 0xFB, 0x50, 0x02, 0x80, 0x23, 0x90, 0x8B, 0x0B, +0xE0, 0x14, 0xF0, 0xE0, 0x60, 0x04, 0xA3, 0xE0, 0x60, 0x16, 0x90, 0x8B, 0x0B, 0xE0, 0x70, 0x0A, +0x90, 0x8B, 0x19, 0xE0, 0x90, 0x8B, 0x0B, 0xF0, 0x80, 0x00, 0x90, 0x8A, 0xC5, 0x74, 0x01, 0xF0, +0x90, 0x8B, 0x2C, 0xE0, 0x30, 0xE0, 0x16, 0xA3, 0xE0, 0xB4, 0x06, 0x05, 0xE4, 0x90, 0x8A, 0xC5, +0xF0, 0xE4, 0xFF, 0x12, 0x4D, 0xE0, 0xEF, 0x70, 0x04, 0x90, 0x8A, 0xC5, 0xF0, 0x90, 0x8A, 0xC5, +0xE0, 0x60, 0x4A, 0x43, 0x25, 0x10, 0xE4, 0x90, 0x8B, 0x3D, 0xF0, 0x90, 0x8B, 0x0C, 0xE0, 0x75, +0xF0, 0x03, 0xA4, 0xFF, 0x90, 0x8B, 0x15, 0xE0, 0x2F, 0x90, 0x8B, 0x3E, 0xF0, 0xE4, 0xFB, 0xFD, +0x7F, 0x54, 0x7E, 0x01, 0x12, 0x4B, 0x6C, 0x90, 0x01, 0x57, 0x74, 0x05, 0xF0, 0xE5, 0x22, 0x54, +0x0F, 0xC3, 0x94, 0x04, 0x50, 0x07, 0x7D, 0x01, 0x7F, 0x04, 0x12, 0x45, 0xA2, 0x90, 0x8B, 0x2C, +0xE0, 0x30, 0xE0, 0x09, 0x12, 0x66, 0x20, 0x90, 0x05, 0x22, 0x74, 0xFF, 0xF0, 0x22, 0xE4, 0xF5, +0x25, 0xF5, 0x24, 0x75, 0x23, 0x0C, 0x75, 0x22, 0x0C, 0x90, 0x8B, 0x1A, 0xF0, 0x90, 0x8B, 0x18, +0xF0, 0x90, 0x8B, 0x17, 0xF0, 0x90, 0x8B, 0x19, 0x04, 0xF0, 0x90, 0x8B, 0x0B, 0xF0, 0xE4, 0x90, +0x8B, 0x1B, 0xF0, 0x90, 0x8B, 0x0D, 0xF0, 0x90, 0x8B, 0x15, 0x74, 0x05, 0xF0, 0xE4, 0x90, 0x8B, +0x0C, 0xF0, 0x90, 0x8B, 0x13, 0xF0, 0xA3, 0x74, 0x03, 0xF0, 0x90, 0x8B, 0x10, 0xF0, 0xA3, 0x74, +0x05, 0xF0, 0x90, 0x8B, 0x0F, 0x74, 0x14, 0xF0, 0x90, 0x8B, 0x16, 0x74, 0x05, 0xF0, 0xE4, 0x90, +0x8B, 0x0E, 0xF0, 0x90, 0x8B, 0x0A, 0xF0, 0x90, 0x8B, 0x08, 0xF0, 0x90, 0x8B, 0x12, 0xF0, 0x22, +0x7F, 0x00, 0x22, 0x02, 0x45, 0x03, 0x02, 0x45, 0x06, 0x8E, 0x64, 0x8F, 0x65, 0xAD, 0x65, 0xAC, +0x64, 0xAF, 0x63, 0x12, 0x4A, 0x5B, 0xAF, 0x65, 0xAE, 0x64, 0x90, 0x04, 0x80, 0xE0, 0x54, 0x0F, +0xFD, 0xAC, 0x07, 0x74, 0x11, 0x2C, 0xF5, 0x82, 0xE4, 0x34, 0xFC, 0xF5, 0x83, 0xE0, 0x44, 0x01, +0xF0, 0x74, 0x11, 0x2C, 0xF5, 0x82, 0xE4, 0x34, 0xFC, 0xF5, 0x83, 0xE0, 0x54, 0xFB, 0xF0, 0xAC, +0x07, 0x74, 0x16, 0x2C, 0xF5, 0x82, 0xE4, 0x34, 0xFC, 0xF5, 0x83, 0xE0, 0x44, 0xFA, 0xF0, 0x74, +0x15, 0x2C, 0xF5, 0x82, 0xE4, 0x34, 0xFC, 0xF5, 0x83, 0xE0, 0x44, 0x1F, 0xF0, 0xAC, 0x07, 0x74, +0x06, 0x2C, 0xF5, 0x82, 0xE4, 0x34, 0xFC, 0xF5, 0x83, 0xE0, 0x44, 0x0F, 0xF0, 0x90, 0x04, 0x53, +0xE4, 0xF0, 0x90, 0x04, 0x52, 0xF0, 0x90, 0x04, 0x51, 0x74, 0xFF, 0xF0, 0x90, 0x04, 0x50, 0x74, +0xFD, 0xF0, 0x74, 0x14, 0x2C, 0xF5, 0x82, 0xE4, 0x34, 0xFC, 0xF5, 0x83, 0xE0, 0x54, 0xC0, 0x4D, +0xFD, 0x74, 0x14, 0x2F, 0xF5, 0x82, 0xE4, 0x34, 0xFC, 0xF5, 0x83, 0xED, 0xF0, 0x22, 0x7D, 0x01, +0x7F, 0x0C, 0xD3, 0x10, 0xAF, 0x01, 0xC3, 0xC0, 0xD0, 0x8F, 0x67, 0x8D, 0x68, 0xE5, 0x67, 0x54, +0x0F, 0xFF, 0xE5, 0x22, 0x54, 0x0F, 0x6F, 0x60, 0x72, 0xE5, 0x67, 0x30, 0xE2, 0x30, 0xE5, 0x22, +0x20, 0xE2, 0x05, 0x7F, 0x01, 0x12, 0x4A, 0xB2, 0xE5, 0x22, 0x30, 0xE3, 0x10, 0xE5, 0x67, 0x20, +0xE3, 0x0B, 0x12, 0x49, 0xD5, 0xEF, 0x60, 0x53, 0x12, 0x4A, 0xCC, 0x80, 0x4E, 0xE5, 0x22, 0x20, +0xE3, 0x49, 0xE5, 0x67, 0x30, 0xE3, 0x44, 0xAF, 0x68, 0x12, 0x4A, 0x7C, 0x80, 0x3D, 0xE5, 0x22, +0x54, 0x0F, 0xFF, 0xBF, 0x0C, 0x0E, 0xE5, 0x67, 0x20, 0xE3, 0x09, 0x12, 0x49, 0xD5, 0xEF, 0x60, +0x2A, 0x12, 0x4A, 0xCC, 0xE5, 0x22, 0x54, 0x0F, 0xFF, 0xBF, 0x04, 0x0E, 0xE5, 0x67, 0x20, 0xE2, +0x09, 0x12, 0x49, 0x93, 0xEF, 0x60, 0x14, 0x12, 0x4A, 0x32, 0xE5, 0x22, 0x54, 0x0F, 0xFF, 0xBF, +0x02, 0x09, 0x12, 0x45, 0x00, 0xEF, 0x60, 0x03, 0x12, 0x4B, 0x10, 0xD0, 0xD0, 0x92, 0xAF, 0x22, +0x02, 0x46, 0x6E, 0x02, 0x51, 0x39, 0xE4, 0x93, 0xA3, 0xF8, 0xE4, 0x93, 0xA3, 0x40, 0x03, 0xF6, +0x80, 0x01, 0xF2, 0x08, 0xDF, 0xF4, 0x80, 0x29, 0xE4, 0x93, 0xA3, 0xF8, 0x54, 0x07, 0x24, 0x0C, +0xC8, 0xC3, 0x33, 0xC4, 0x54, 0x0F, 0x44, 0x20, 0xC8, 0x83, 0x40, 0x04, 0xF4, 0x56, 0x80, 0x01, +0x46, 0xF6, 0xDF, 0xE4, 0x80, 0x0B, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x90, 0x4B, +0x23, 0xE4, 0x7E, 0x01, 0x93, 0x60, 0xBC, 0xA3, 0xFF, 0x54, 0x3F, 0x30, 0xE5, 0x09, 0x54, 0x1F, +0xFE, 0xE4, 0x93, 0xA3, 0x60, 0x01, 0x0E, 0xCF, 0x54, 0xC0, 0x25, 0xE0, 0x60, 0xA8, 0x40, 0xB8, +0xE4, 0x93, 0xA3, 0xFA, 0xE4, 0x93, 0xA3, 0xF8, 0xE4, 0x93, 0xA3, 0xC8, 0xC5, 0x82, 0xC8, 0xCA, +0xC5, 0x83, 0xCA, 0xF0, 0xA3, 0xC8, 0xC5, 0x82, 0xC8, 0xCA, 0xC5, 0x83, 0xCA, 0xDF, 0xE9, 0xDE, +0xE7, 0x80, 0xBE, 0xE5, 0x21, 0x64, 0x01, 0x70, 0x67, 0xE5, 0x24, 0x60, 0x63, 0xE5, 0x24, 0x64, +0x02, 0x60, 0x06, 0xE5, 0x24, 0x64, 0x05, 0x70, 0x27, 0x90, 0x06, 0xAB, 0xE0, 0x90, 0x8B, 0x0B, +0xF0, 0x90, 0x06, 0xAA, 0xE0, 0x90, 0x8B, 0x19, 0xF0, 0x90, 0x8B, 0x0B, 0xE0, 0x70, 0x07, 0x90, +0x8B, 0x19, 0xE0, 0xFF, 0x80, 0x05, 0x90, 0x8B, 0x0B, 0xE0, 0xFF, 0x90, 0x8B, 0x0B, 0xEF, 0xF0, +0x90, 0x8B, 0x0D, 0xE0, 0x60, 0x02, 0xE4, 0xF0, 0xE4, 0x90, 0x8B, 0x0C, 0xF0, 0x90, 0x05, 0x58, +0x74, 0x03, 0xF0, 0x90, 0x01, 0x57, 0xE4, 0xF0, 0x90, 0x01, 0x3C, 0x74, 0x02, 0xF0, 0x53, 0x25, +0xFD, 0x53, 0x25, 0xEF, 0xE5, 0x24, 0x14, 0x24, 0xFD, 0x50, 0x02, 0x80, 0x03, 0x12, 0x47, 0x8E, +0x22, 0xEF, 0x64, 0x01, 0x70, 0x35, 0x7D, 0x78, 0x7F, 0x02, 0x12, 0x36, 0x75, 0x7D, 0x02, 0x7F, +0x03, 0x12, 0x36, 0x75, 0x90, 0x01, 0x57, 0xE4, 0xF0, 0x90, 0x01, 0x3C, 0x74, 0x02, 0xF0, 0x12, +0x45, 0x9E, 0x90, 0x8B, 0x2C, 0xE0, 0x30, 0xE0, 0x03, 0x12, 0x66, 0x20, 0x90, 0x06, 0x04, 0xE0, +0x54, 0x7F, 0xF0, 0x90, 0x06, 0x0A, 0xE0, 0x54, 0xF8, 0xF0, 0x22, 0x90, 0x01, 0x36, 0x74, 0x7B, +0xF0, 0xA3, 0x74, 0x02, 0xF0, 0x7D, 0x7B, 0xFF, 0x12, 0x36, 0xE6, 0x7D, 0x02, 0x7F, 0x03, 0x12, +0x36, 0xE6, 0x90, 0x06, 0x04, 0xE0, 0x44, 0x80, 0xF0, 0x90, 0x06, 0x0A, 0xE0, 0x44, 0x07, 0xF0, +0x12, 0x4B, 0x4F, 0xE5, 0x21, 0x20, 0xE0, 0x05, 0xE4, 0x90, 0x8B, 0x0D, 0xF0, 0x22, 0xE4, 0x90, +0x8A, 0xC5, 0xF0, 0x90, 0x06, 0xA9, 0xE0, 0x90, 0x8A, 0xC5, 0xF0, 0xE0, 0x54, 0xC0, 0x70, 0x09, +0x53, 0x25, 0xFE, 0x53, 0x25, 0xFD, 0x12, 0x4A, 0xFC, 0x90, 0x8A, 0xC5, 0xE0, 0x30, 0xE6, 0x15, +0x43, 0x25, 0x01, 0x90, 0x8B, 0x1A, 0xE0, 0x64, 0x02, 0x60, 0x05, 0x12, 0x4A, 0x97, 0x80, 0x08, +0x12, 0x49, 0x49, 0x80, 0x03, 0x53, 0x25, 0xFE, 0x90, 0x8A, 0xC5, 0xE0, 0x30, 0xE7, 0x27, 0x43, +0x25, 0x02, 0xE4, 0x90, 0x8B, 0x3D, 0xF0, 0x90, 0x8B, 0x11, 0xE0, 0x90, 0x8B, 0x3E, 0xF0, 0xE4, +0xFB, 0xFD, 0x7F, 0x54, 0x7E, 0x01, 0x12, 0x4B, 0x6C, 0x90, 0x01, 0x57, 0x74, 0x05, 0xF0, 0x90, +0x8B, 0x1B, 0x74, 0x01, 0xF0, 0x22, 0x53, 0x25, 0xFD, 0x22, 0x90, 0x8A, 0xDE, 0x12, 0x43, 0x8B, +0x12, 0x4B, 0x43, 0x90, 0x8A, 0xDE, 0x12, 0x43, 0x6B, 0x12, 0x29, 0xD9, 0xF5, 0x24, 0x14, 0x60, +0x0E, 0x14, 0x60, 0x1F, 0x14, 0x60, 0x31, 0x24, 0x03, 0x70, 0x44, 0x7F, 0x01, 0x80, 0x3D, 0x90, +0x8A, 0xDE, 0x12, 0x43, 0x6B, 0x90, 0x00, 0x02, 0x12, 0x42, 0x20, 0xFD, 0xE4, 0xFF, 0x12, 0x4A, +0x07, 0x80, 0x29, 0x90, 0x8A, 0xDE, 0x12, 0x43, 0x6B, 0x90, 0x00, 0x02, 0x12, 0x42, 0x20, 0xFD, +0x7F, 0x01, 0x12, 0x4A, 0x07, 0x1F, 0x80, 0x14, 0x90, 0x8A, 0xDE, 0x12, 0x43, 0x6B, 0x90, 0x00, +0x02, 0x12, 0x42, 0x20, 0xFD, 0x7F, 0x02, 0x12, 0x4A, 0x07, 0xE4, 0xFF, 0x12, 0x47, 0x21, 0x22, +0xE4, 0x90, 0x8A, 0xCB, 0xF0, 0xE5, 0x24, 0x60, 0x49, 0x90, 0x8B, 0x1B, 0xE0, 0x60, 0x0D, 0xE4, +0xF0, 0x53, 0x25, 0xFD, 0xE5, 0x25, 0x54, 0x07, 0x70, 0x38, 0x80, 0x33, 0x90, 0x8B, 0x0C, 0xE0, +0x04, 0xF0, 0x53, 0x25, 0xEF, 0x90, 0x8A, 0xCB, 0xE0, 0xFF, 0x90, 0x8B, 0x10, 0xE0, 0x2F, 0xFF, +0xE4, 0x33, 0xFE, 0x90, 0x8B, 0x0C, 0xE0, 0xD3, 0x9F, 0xEE, 0x64, 0x80, 0xF8, 0x74, 0x80, 0x98, +0x40, 0x0D, 0xE5, 0x21, 0xB4, 0x01, 0x0B, 0xA3, 0xE0, 0x70, 0x07, 0xE0, 0x04, 0xF0, 0x22, 0x12, +0x4A, 0xFC, 0x22, 0xD3, 0x10, 0xAF, 0x01, 0xC3, 0xC0, 0xD0, 0x8F, 0x63, 0x90, 0x04, 0x1D, 0xE0, +0x60, 0x24, 0x90, 0x05, 0x22, 0xE0, 0xF5, 0x66, 0x74, 0xFF, 0xF0, 0x12, 0x7E, 0x2D, 0xBF, 0x01, +0x0D, 0x90, 0x8A, 0xF9, 0xE0, 0xFF, 0x7D, 0x01, 0x12, 0x5F, 0xDE, 0x12, 0x45, 0x09, 0x90, 0x05, +0x22, 0xE5, 0x66, 0xF0, 0x80, 0x0D, 0x90, 0x8A, 0xF9, 0xE0, 0xFF, 0x7D, 0x01, 0x12, 0x5F, 0xDE, +0x12, 0x45, 0x09, 0x90, 0x04, 0x1F, 0x74, 0x20, 0xF0, 0xD0, 0xD0, 0x92, 0xAF, 0x22, 0xE5, 0x24, +0x14, 0x24, 0xFD, 0x50, 0x02, 0x80, 0x41, 0x90, 0x8B, 0x1A, 0xE0, 0x60, 0x2B, 0x12, 0x45, 0x9E, +0xE4, 0x90, 0x8B, 0x3D, 0xF0, 0x90, 0x8B, 0x0F, 0xE0, 0x90, 0x8B, 0x3E, 0xF0, 0xE4, 0xFB, 0xFD, +0x7F, 0x58, 0x7E, 0x01, 0x12, 0x4B, 0x6C, 0x90, 0x01, 0x5B, 0x74, 0x05, 0xF0, 0x90, 0x06, 0x92, +0x74, 0x01, 0xF0, 0x90, 0x8B, 0x18, 0xF0, 0x22, 0xE5, 0x22, 0x54, 0x0F, 0xC3, 0x94, 0x04, 0x50, +0x07, 0x7D, 0x01, 0x7F, 0x04, 0x12, 0x45, 0xA2, 0x22, 0x90, 0x01, 0x5F, 0xE4, 0xF0, 0x90, 0x01, +0x3C, 0x74, 0x08, 0xF0, 0xE4, 0x90, 0x8B, 0x3D, 0xF0, 0x90, 0x8B, 0x0F, 0xE0, 0x90, 0x8B, 0x3E, +0xF0, 0xE4, 0xFB, 0xFD, 0x7F, 0x5C, 0x7E, 0x01, 0x12, 0x4B, 0x6C, 0x90, 0x01, 0x5F, 0x74, 0x05, +0xF0, 0x90, 0x06, 0x92, 0x74, 0x02, 0xF0, 0x90, 0x8B, 0x17, 0x14, 0xF0, 0xE5, 0x22, 0x54, 0x0F, +0xC3, 0x94, 0x0C, 0x50, 0x0D, 0x12, 0x45, 0x9E, 0x90, 0x8B, 0x2C, 0xE0, 0x30, 0xE0, 0x03, 0x12, +0x66, 0x20, 0x22, 0x12, 0x4B, 0x34, 0xEF, 0x64, 0x01, 0x70, 0x37, 0xE5, 0x25, 0x54, 0x03, 0x70, +0x31, 0xE5, 0x23, 0x54, 0x0F, 0xD3, 0x94, 0x02, 0x50, 0x28, 0xE5, 0x25, 0x20, 0xE2, 0x23, 0xE5, +0x25, 0x20, 0xE4, 0x1E, 0x90, 0x8B, 0x0D, 0xE0, 0x70, 0x18, 0x90, 0x8B, 0x12, 0xE0, 0x70, 0x12, +0xE5, 0x26, 0x70, 0x0E, 0x90, 0x01, 0xB9, 0xE4, 0xF0, 0x90, 0x01, 0xB8, 0x74, 0x04, 0xF0, 0x7F, +0x01, 0x22, 0x7F, 0x00, 0x22, 0x12, 0x4B, 0x34, 0xEF, 0x64, 0x01, 0x70, 0x27, 0x90, 0x8B, 0x18, +0xE0, 0x70, 0x21, 0x90, 0x8B, 0x17, 0xE0, 0x70, 0x1B, 0xE5, 0x23, 0x54, 0x0F, 0xD3, 0x94, 0x04, +0x50, 0x12, 0xE5, 0x26, 0x70, 0x0E, 0x90, 0x01, 0xB9, 0xE4, 0xF0, 0x90, 0x01, 0xB8, 0x74, 0x08, +0xF0, 0x7F, 0x01, 0x22, 0x7F, 0x00, 0x22, 0xEF, 0x24, 0xFE, 0x60, 0x0B, 0x04, 0x70, 0x22, 0x90, +0x8B, 0x19, 0x74, 0x01, 0xF0, 0x80, 0x16, 0xED, 0x70, 0x0A, 0x90, 0x8B, 0x16, 0xE0, 0x90, 0x8B, +0x19, 0xF0, 0x80, 0x05, 0x90, 0x8B, 0x19, 0xED, 0xF0, 0x90, 0x8B, 0x19, 0xE0, 0x90, 0x8B, 0x0B, +0xF0, 0x22, 0x90, 0x01, 0x37, 0x74, 0x02, 0xF0, 0x90, 0x05, 0x22, 0x74, 0xFF, 0xF0, 0x12, 0x7E, +0x2D, 0xEF, 0x70, 0x06, 0x90, 0x01, 0xC8, 0x74, 0xFD, 0xF0, 0x7D, 0x02, 0x7F, 0x03, 0x12, 0x36, +0xE6, 0x12, 0x7A, 0x6D, 0x53, 0x22, 0xF0, 0x43, 0x22, 0x02, 0x22, 0xEF, 0x60, 0x0F, 0x74, 0x21, +0x2D, 0xF5, 0x82, 0xE4, 0x34, 0xFC, 0xF5, 0x83, 0xE0, 0x44, 0x10, 0xF0, 0x22, 0x74, 0x21, 0x2D, +0xF5, 0x82, 0xE4, 0x34, 0xFC, 0xF5, 0x83, 0xE0, 0x54, 0xEF, 0xF0, 0x22, 0x90, 0x06, 0x04, 0xE0, +0x54, 0xBF, 0xF0, 0xEF, 0x60, 0x0A, 0xE5, 0x21, 0xB4, 0x01, 0x05, 0xE4, 0xFF, 0x12, 0x48, 0xB3, +0x53, 0x22, 0xF0, 0x43, 0x22, 0x0C, 0x22, 0x90, 0x04, 0x1D, 0xE0, 0x70, 0x14, 0x90, 0x8A, 0xF8, +0xE0, 0xFF, 0xE4, 0xFD, 0x12, 0x5F, 0xDE, 0x8E, 0x69, 0x8F, 0x6A, 0x90, 0x04, 0x1F, 0x74, 0x20, +0xF0, 0x22, 0x90, 0x8B, 0x52, 0xEF, 0xF0, 0x12, 0x4F, 0xED, 0x90, 0x8B, 0x52, 0xE0, 0x60, 0x05, +0x90, 0x05, 0x22, 0xE4, 0xF0, 0x53, 0x22, 0xF0, 0x43, 0x22, 0x04, 0x22, 0x90, 0x06, 0x04, 0xE0, +0x44, 0x40, 0xF0, 0xE5, 0x21, 0xB4, 0x01, 0x05, 0x7F, 0x01, 0x12, 0x48, 0xB3, 0x53, 0x22, 0xF0, +0x43, 0x22, 0x04, 0x22, 0xE5, 0x23, 0x30, 0xE6, 0x12, 0xE5, 0x23, 0x54, 0x0F, 0xFF, 0x90, 0x01, +0x2F, 0xE0, 0x54, 0x80, 0x4F, 0x64, 0x80, 0xF0, 0x53, 0x23, 0xBF, 0x22, 0x90, 0x8B, 0x2C, 0xE0, +0x30, 0xE0, 0x05, 0xAF, 0x23, 0x02, 0x66, 0x65, 0x7D, 0x01, 0xAF, 0x23, 0x12, 0x45, 0xA2, 0x22, +0x53, 0x22, 0xF0, 0x43, 0x22, 0x01, 0x12, 0x4B, 0x5A, 0x12, 0x4B, 0x5B, 0x53, 0x22, 0xF0, 0x43, +0x22, 0x02, 0x22, 0x41, 0x8A, 0xF6, 0x00, 0x41, 0x8B, 0x05, 0x00, 0x41, 0x8B, 0x51, 0x00, 0x41, +0x8B, 0x53, 0x00, 0x00, 0x90, 0x04, 0x1B, 0xE0, 0x54, 0x7F, 0x64, 0x7F, 0x7F, 0x01, 0x60, 0x02, +0x7F, 0x00, 0x22, 0xE4, 0x90, 0x8B, 0x1B, 0xF0, 0x90, 0x8B, 0x0C, 0xF0, 0xF5, 0x25, 0x22, 0x90, +0x8B, 0x13, 0xE0, 0xA3, 0xE0, 0x90, 0x05, 0x58, 0xF0, 0x22, 0x22, 0x22, 0xF0, 0x90, 0x8B, 0x0F, +0xE0, 0x90, 0x8B, 0x3E, 0xF0, 0xE4, 0xFB, 0xFD, 0x7F, 0x58, 0x7E, 0x01, 0xD3, 0x10, 0xAF, 0x01, +0xC3, 0xC0, 0xD0, 0x90, 0x8B, 0x3D, 0xE0, 0xFB, 0xA3, 0xE0, 0xF5, 0x44, 0xE4, 0xF5, 0x45, 0x12, +0x35, 0xAB, 0xD0, 0xD0, 0x92, 0xAF, 0x22, 0xC0, 0xE0, 0xC0, 0xF0, 0xC0, 0x83, 0xC0, 0x82, 0xC0, +0xD0, 0x75, 0xD0, 0x00, 0xC0, 0x00, 0xC0, 0x01, 0xC0, 0x02, 0xC0, 0x03, 0xC0, 0x04, 0xC0, 0x05, +0xC0, 0x06, 0xC0, 0x07, 0x75, 0x0E, 0x00, 0x90, 0x01, 0xC4, 0x74, 0x87, 0xF0, 0x74, 0x4B, 0xA3, +0xF0, 0x53, 0x91, 0xDF, 0x90, 0x01, 0x3C, 0xE0, 0x55, 0x30, 0xF5, 0x34, 0xA3, 0xE0, 0x55, 0x31, +0xF5, 0x35, 0xA3, 0xE0, 0x55, 0x32, 0xF5, 0x36, 0xA3, 0xE0, 0x55, 0x33, 0xF5, 0x37, 0xE5, 0x34, +0x30, 0xE0, 0x51, 0x90, 0x01, 0x3C, 0x74, 0x01, 0xF0, 0x90, 0x8B, 0x32, 0xE0, 0x30, 0xE0, 0x1F, +0x13, 0x13, 0x54, 0x3F, 0x30, 0xE0, 0x18, 0x90, 0x8B, 0x34, 0xE4, 0xF0, 0x90, 0x8B, 0x33, 0xE0, +0x64, 0x03, 0x60, 0x0B, 0x7F, 0x01, 0xB1, 0xE0, 0xEF, 0x70, 0x04, 0x7F, 0x02, 0xD1, 0x89, 0x90, +0x8B, 0x2C, 0xE0, 0xFF, 0x30, 0xE0, 0x1D, 0x13, 0x13, 0x54, 0x3F, 0x30, 0xE0, 0x16, 0x90, 0x8B, +0x2E, 0xE4, 0xF0, 0x90, 0x8B, 0x2D, 0xE0, 0x64, 0x06, 0x60, 0x09, 0xE4, 0xFF, 0xB1, 0xE0, 0xEF, +0x70, 0x02, 0xD1, 0x56, 0xE5, 0x34, 0x30, 0xE1, 0x08, 0x90, 0x01, 0x3C, 0x74, 0x02, 0xF0, 0x11, +0x60, 0xE5, 0x34, 0x30, 0xE2, 0x28, 0x90, 0x01, 0x3C, 0x74, 0x04, 0xF0, 0x90, 0x06, 0x92, 0xE0, +0x30, 0xE0, 0x14, 0x90, 0x8B, 0x3D, 0xE4, 0x71, 0x5C, 0x90, 0x01, 0x5B, 0x74, 0x05, 0xF0, 0x90, +0x06, 0x92, 0x74, 0x01, 0xF0, 0x80, 0x07, 0x90, 0x8B, 0x18, 0xE4, 0xF0, 0x51, 0xFC, 0xE5, 0x34, +0x30, 0xE3, 0x38, 0x90, 0x01, 0x3C, 0x74, 0x08, 0xF0, 0x90, 0x06, 0x92, 0xE0, 0x30, 0xE1, 0x24, +0x90, 0x8B, 0x3D, 0xE4, 0xF0, 0x90, 0x8B, 0x0F, 0xE0, 0x90, 0x8B, 0x3E, 0xF0, 0xE4, 0xFB, 0xFD, +0x7F, 0x5C, 0x7E, 0x01, 0x71, 0x6C, 0x90, 0x01, 0x5F, 0x74, 0x05, 0xF0, 0x90, 0x06, 0x92, 0x74, +0x02, 0xF0, 0x80, 0x07, 0x90, 0x8B, 0x17, 0xE4, 0xF0, 0x51, 0xFC, 0xE5, 0x34, 0x30, 0xE4, 0x09, +0x90, 0x01, 0x3C, 0x74, 0x10, 0xF0, 0x12, 0x52, 0x3C, 0xE5, 0x34, 0x30, 0xE5, 0x06, 0x90, 0x01, +0x3C, 0x74, 0x20, 0xF0, 0xE5, 0x35, 0x30, 0xE0, 0x10, 0x90, 0x01, 0x3D, 0x74, 0x01, 0xF0, 0x90, +0x00, 0x83, 0xE0, 0xF5, 0x23, 0x51, 0xE4, 0x51, 0xFC, 0xE5, 0x35, 0x30, 0xE2, 0x06, 0x90, 0x01, +0x3D, 0x74, 0x04, 0xF0, 0xE5, 0x35, 0x30, 0xE4, 0x1B, 0x90, 0x01, 0x3D, 0x74, 0x10, 0xF0, 0x90, +0x8B, 0x05, 0xE0, 0x60, 0x0F, 0xE4, 0xF0, 0x90, 0x05, 0x53, 0xE0, 0x44, 0x01, 0xF0, 0x90, 0x05, +0xFD, 0xE0, 0x04, 0xF0, 0xE5, 0x36, 0x30, 0xE0, 0x75, 0x90, 0x01, 0x3E, 0x74, 0x01, 0xF0, 0x90, +0x8B, 0x32, 0xE0, 0x30, 0xE0, 0x18, 0x90, 0x8B, 0x36, 0xE4, 0xF0, 0x90, 0x8B, 0x33, 0xE0, 0x64, +0x03, 0x60, 0x0B, 0x7F, 0x01, 0xB1, 0xE0, 0xEF, 0x60, 0x04, 0x7F, 0x01, 0xD1, 0x89, 0x90, 0x8B, +0x2C, 0xE0, 0x30, 0xE0, 0x49, 0x90, 0x8B, 0x30, 0xE4, 0xF0, 0xFF, 0xB1, 0xE0, 0xEF, 0x60, 0x3E, +0x12, 0x65, 0xF0, 0x90, 0x8B, 0x2D, 0xE0, 0xFF, 0x64, 0x06, 0x60, 0x32, 0xEF, 0xB4, 0x04, 0x02, +0x80, 0x07, 0x90, 0x8B, 0x2D, 0xE0, 0xB4, 0x05, 0x04, 0xE4, 0xFF, 0x80, 0x14, 0x90, 0x8B, 0x2D, +0xE0, 0xB4, 0x03, 0x04, 0x7F, 0x01, 0x80, 0x09, 0x90, 0x8B, 0x2D, 0xE0, 0xB4, 0x02, 0x05, 0x7F, +0x01, 0x12, 0x7B, 0x49, 0x7D, 0x01, 0xAF, 0x23, 0x12, 0x45, 0xA2, 0x12, 0x66, 0x20, 0xE5, 0x36, +0x30, 0xE1, 0x47, 0x90, 0x01, 0x3E, 0x74, 0x02, 0xF0, 0x90, 0x8B, 0x32, 0xE0, 0x30, 0xE0, 0x19, +0x90, 0x8B, 0x36, 0x74, 0x01, 0xF0, 0x90, 0x8B, 0x33, 0xE0, 0x64, 0x03, 0x60, 0x0B, 0x7F, 0x01, +0xB1, 0xE0, 0xEF, 0x70, 0x04, 0x7F, 0x02, 0xD1, 0x89, 0x90, 0x8B, 0x2C, 0xE0, 0x30, 0xE0, 0x1A, +0x90, 0x8B, 0x30, 0x74, 0x01, 0xF0, 0x12, 0x7D, 0xBE, 0x90, 0x8B, 0x2D, 0xE0, 0x64, 0x06, 0x60, +0x09, 0xE4, 0xFF, 0xB1, 0xE0, 0xEF, 0x70, 0x02, 0xD1, 0x56, 0x74, 0x87, 0x04, 0x90, 0x01, 0xC4, +0xF0, 0x74, 0x4B, 0xA3, 0xF0, 0xD0, 0x07, 0xD0, 0x06, 0xD0, 0x05, 0xD0, 0x04, 0xD0, 0x03, 0xD0, +0x02, 0xD0, 0x01, 0xD0, 0x00, 0xD0, 0xD0, 0xD0, 0x82, 0xD0, 0x83, 0xD0, 0xF0, 0xD0, 0xE0, 0x32, +0xEF, 0x64, 0x01, 0x70, 0x3D, 0x90, 0x8B, 0x35, 0xE0, 0x60, 0x03, 0x7F, 0x00, 0x22, 0x90, 0x8B, +0x08, 0xE0, 0x60, 0x03, 0x7F, 0x01, 0x22, 0x90, 0x8B, 0x34, 0xE0, 0x60, 0x03, 0x7F, 0x01, 0x22, +0x90, 0x8B, 0x32, 0xE0, 0xFF, 0x13, 0x13, 0x54, 0x3F, 0x30, 0xE0, 0x0B, 0xEF, 0xC4, 0x13, 0x54, +0x07, 0x30, 0xE0, 0x03, 0x7F, 0x00, 0x22, 0x90, 0x8B, 0x36, 0xE0, 0x7F, 0x01, 0x60, 0x36, 0x7F, +0x00, 0x22, 0x90, 0x8B, 0x2F, 0xE0, 0x60, 0x03, 0x7F, 0x00, 0x22, 0x90, 0x8B, 0x08, 0xE0, 0x60, +0x03, 0x7F, 0x01, 0x22, 0x90, 0x8B, 0x2E, 0xE0, 0x60, 0x03, 0x7F, 0x01, 0x22, 0x90, 0x8B, 0x2C, +0xE0, 0x13, 0x13, 0x54, 0x3F, 0x30, 0xE0, 0x03, 0x7F, 0x00, 0x22, 0x90, 0x8B, 0x30, 0xE0, 0x7F, +0x01, 0x60, 0x02, 0x7F, 0x00, 0x22, 0x90, 0x8B, 0x0D, 0xE0, 0x60, 0x16, 0x90, 0x8B, 0x2D, 0xE0, +0x70, 0x04, 0x7F, 0x05, 0x80, 0x1F, 0x90, 0x8B, 0x2D, 0xE0, 0x64, 0x01, 0x70, 0x1A, 0x7F, 0x02, +0x80, 0x13, 0x90, 0x8B, 0x2D, 0xE0, 0xB4, 0x01, 0x04, 0x7F, 0x03, 0x80, 0x08, 0x90, 0x8B, 0x2D, +0xE0, 0x70, 0x05, 0x7F, 0x04, 0x12, 0x7B, 0x49, 0x22, 0xD3, 0x10, 0xAF, 0x01, 0xC3, 0xC0, 0xD0, +0x90, 0x8B, 0x33, 0xE0, 0x90, 0x8B, 0x55, 0xF0, 0x6F, 0x70, 0x02, 0xE1, 0x55, 0xEF, 0x14, 0x60, +0x3B, 0x14, 0x60, 0x5F, 0x14, 0x70, 0x02, 0xE1, 0x30, 0x24, 0x03, 0x60, 0x02, 0xE1, 0x55, 0x90, +0x8B, 0x55, 0xE0, 0xB4, 0x03, 0x04, 0xF1, 0xC0, 0xE1, 0x55, 0x90, 0x8B, 0x55, 0xE0, 0xB4, 0x02, +0x04, 0xF1, 0xAD, 0xE1, 0x55, 0x90, 0x8B, 0x55, 0xE0, 0xB4, 0x04, 0x04, 0xF1, 0xC4, 0xE1, 0x55, +0x90, 0x8B, 0x55, 0xE0, 0x64, 0x01, 0x70, 0x7D, 0xF1, 0xAF, 0x80, 0x79, 0x90, 0x8B, 0x55, 0xE0, +0xFF, 0xB4, 0x03, 0x04, 0xF1, 0xC8, 0x80, 0x6D, 0xEF, 0xB4, 0x02, 0x04, 0xF1, 0xA0, 0x80, 0x65, +0x90, 0x8B, 0x55, 0xE0, 0xFF, 0xB4, 0x04, 0x04, 0xF1, 0xD3, 0x80, 0x59, 0xEF, 0x70, 0x56, 0xF1, +0x8D, 0x80, 0x52, 0x90, 0x8B, 0x55, 0xE0, 0xB4, 0x03, 0x05, 0x12, 0x7A, 0x5E, 0x80, 0x46, 0x90, +0x8B, 0x55, 0xE0, 0xB4, 0x01, 0x04, 0xF1, 0x71, 0x80, 0x3B, 0x90, 0x8B, 0x55, 0xE0, 0xB4, 0x04, +0x05, 0x12, 0x7B, 0x37, 0x80, 0x2F, 0x90, 0x8B, 0x55, 0xE0, 0x70, 0x29, 0xF1, 0x6F, 0x80, 0x25, +0x90, 0x8B, 0x55, 0xE0, 0xFF, 0xB4, 0x01, 0x04, 0xF1, 0x5A, 0x80, 0x19, 0xEF, 0xB4, 0x02, 0x04, +0xF1, 0x6B, 0x80, 0x11, 0x90, 0x8B, 0x55, 0xE0, 0xFF, 0xB4, 0x04, 0x04, 0xF1, 0x5A, 0x80, 0x05, +0xEF, 0x70, 0x02, 0xF1, 0x67, 0xD0, 0xD0, 0x92, 0xAF, 0x22, 0x90, 0x05, 0x22, 0x74, 0x6F, 0xF0, +0x90, 0x8B, 0x33, 0x74, 0x03, 0xF0, 0x22, 0xF1, 0x8D, 0x80, 0xEF, 0xF1, 0xED, 0x80, 0xEB, 0xF1, +0x8D, 0x90, 0x05, 0x22, 0x74, 0xFF, 0xF0, 0x12, 0x7E, 0x2D, 0xEF, 0x70, 0x06, 0x90, 0x01, 0xC8, +0x74, 0xFD, 0xF0, 0x12, 0x7A, 0x6D, 0x90, 0x8B, 0x33, 0x74, 0x02, 0xF0, 0x22, 0x90, 0x01, 0x3E, +0x74, 0x03, 0xF0, 0xFD, 0x7F, 0x02, 0x12, 0x37, 0x00, 0x90, 0x8B, 0x33, 0x74, 0x01, 0xF0, 0x22, +0xF1, 0xED, 0x90, 0x05, 0x22, 0xE4, 0xF0, 0x90, 0x8B, 0x33, 0x04, 0xF0, 0x22, 0xF1, 0xA0, 0x7D, +0x03, 0x7F, 0x02, 0x12, 0x36, 0x92, 0x90, 0x05, 0x27, 0xE4, 0xF0, 0x90, 0x8B, 0x33, 0xF0, 0x22, +0xF1, 0xC8, 0x80, 0xEB, 0xF1, 0xD3, 0x80, 0xE7, 0x90, 0x05, 0x22, 0xE4, 0xF0, 0x90, 0x8B, 0x33, +0x04, 0xF0, 0x22, 0x90, 0x05, 0x22, 0xE4, 0xF0, 0x90, 0x8B, 0x33, 0x04, 0xF0, 0x22, 0xF1, 0x8D, +0x90, 0x05, 0x22, 0x74, 0xFF, 0xF0, 0x90, 0x8B, 0x33, 0x74, 0x04, 0xF0, 0x22, 0x90, 0x8B, 0x1C, +0x12, 0x43, 0x53, 0x90, 0x80, 0x85, 0x12, 0x2A, 0x7F, 0x7F, 0x78, 0x7E, 0x08, 0x12, 0x2F, 0xD9, +0x90, 0x8B, 0x20, 0x12, 0x43, 0x53, 0x90, 0x80, 0x85, 0x12, 0x2A, 0x7F, 0x7F, 0x04, 0x7E, 0x0C, +0x12, 0x2F, 0xD9, 0x90, 0x8B, 0x24, 0x12, 0x43, 0x53, 0x90, 0x80, 0x85, 0x12, 0x2A, 0x7F, 0x7F, +0x00, 0x7E, 0x08, 0x12, 0x2F, 0xD9, 0x90, 0x8B, 0x28, 0x12, 0x43, 0x53, 0x90, 0x80, 0x85, 0x12, +0x2A, 0x7F, 0x7F, 0x70, 0x7E, 0x0E, 0x12, 0x2F, 0xD9, 0x90, 0x80, 0x59, 0x12, 0x2A, 0x8B, 0x00, +0x03, 0x2D, 0x95, 0xE4, 0xFD, 0xFF, 0x12, 0x34, 0x81, 0x90, 0x8B, 0x09, 0xE0, 0xB4, 0x01, 0x11, +0x90, 0x80, 0x59, 0x12, 0x2A, 0x8B, 0x00, 0x03, 0x2D, 0x95, 0xE4, 0xFD, 0x7F, 0x01, 0x12, 0x34, +0x81, 0x22, 0x90, 0x02, 0x84, 0xEF, 0xF0, 0xA3, 0xEE, 0xF0, 0xA3, 0x74, 0x05, 0xF0, 0x22, 0xEF, +0x8E, 0xF0, 0x12, 0x43, 0xBA, 0x50, 0x8D, 0x00, 0x40, 0x50, 0xB5, 0x00, 0x80, 0x50, 0xE0, 0x01, +0x00, 0x50, 0xF4, 0x02, 0x00, 0x51, 0x0C, 0x04, 0x00, 0x00, 0x00, 0x51, 0x29, 0xED, 0x54, 0x3F, +0x70, 0x04, 0xFE, 0xFF, 0x80, 0x04, 0x7E, 0x00, 0x7F, 0x40, 0xEF, 0x2D, 0xFF, 0xEE, 0x3C, 0xFE, +0xEF, 0x78, 0x06, 0xCE, 0xC3, 0x13, 0xCE, 0x13, 0xD8, 0xF9, 0x78, 0x06, 0xC3, 0x33, 0xCE, 0x33, +0xCE, 0xD8, 0xF9, 0x80, 0x26, 0xED, 0x54, 0x7F, 0x70, 0x04, 0xFE, 0xFF, 0x80, 0x04, 0x7E, 0x00, +0x7F, 0x80, 0xEF, 0x2D, 0xFF, 0xEE, 0x3C, 0xFE, 0xEF, 0x78, 0x07, 0xCE, 0xC3, 0x13, 0xCE, 0x13, +0xD8, 0xF9, 0x78, 0x07, 0xC3, 0x33, 0xCE, 0x33, 0xCE, 0xD8, 0xF9, 0xFD, 0xAC, 0x06, 0x80, 0x49, +0xED, 0x70, 0x04, 0xFE, 0xFF, 0x80, 0x04, 0x7E, 0x01, 0x7F, 0x00, 0xEF, 0x2D, 0xEE, 0x3C, 0x7D, +0x00, 0xFC, 0x80, 0x35, 0xEC, 0x54, 0x01, 0x4D, 0x70, 0x04, 0xFE, 0xFF, 0x80, 0x04, 0x7E, 0x02, +0x7F, 0x00, 0xEF, 0x2D, 0xEE, 0x3C, 0xC3, 0x13, 0x7D, 0x00, 0x80, 0x1A, 0xEC, 0x54, 0x03, 0x4D, +0x70, 0x04, 0xFE, 0xFF, 0x80, 0x04, 0x7E, 0x04, 0x7F, 0x00, 0xEF, 0x2D, 0xEE, 0x3C, 0x13, 0x13, +0x54, 0x3F, 0x7D, 0x00, 0x25, 0xE0, 0x25, 0xE0, 0xFC, 0xAE, 0x04, 0xAF, 0x05, 0x22, 0x90, 0x01, +0xE4, 0x74, 0x58, 0xF0, 0xA3, 0x74, 0x02, 0xF0, 0x22, 0xE4, 0x90, 0x8A, 0xCC, 0xF0, 0xA3, 0xF0, +0x75, 0x8E, 0x02, 0x91, 0x81, 0x12, 0x67, 0x0E, 0x90, 0x8B, 0x07, 0xEF, 0xF0, 0x12, 0x67, 0x1B, +0x90, 0x8B, 0x09, 0xEF, 0xF0, 0x12, 0x67, 0x27, 0x90, 0x8A, 0xF4, 0xEE, 0xF0, 0xA3, 0xEF, 0xF0, +0xE4, 0xF5, 0x55, 0xF5, 0x21, 0x12, 0x71, 0x16, 0x12, 0x44, 0x9E, 0x12, 0x32, 0x3D, 0x7F, 0x03, +0x12, 0x76, 0xAB, 0x12, 0x7A, 0x5A, 0x12, 0x66, 0xD4, 0x12, 0x67, 0x3F, 0x12, 0x67, 0x54, 0x12, +0x66, 0xF2, 0x12, 0x67, 0x0D, 0x90, 0x8A, 0xCE, 0xE5, 0xD9, 0xF0, 0x31, 0xD2, 0xC2, 0xAF, 0x90, +0x00, 0x80, 0xE0, 0x44, 0x40, 0xF0, 0x51, 0x81, 0x75, 0xE8, 0x03, 0x43, 0xA8, 0x85, 0xD2, 0xAF, +0x31, 0x2E, 0x90, 0x8A, 0xCC, 0xE0, 0x64, 0x01, 0xF0, 0x24, 0x39, 0x90, 0x01, 0xC4, 0xF0, 0x74, +0x51, 0xA3, 0xF0, 0xE5, 0x55, 0x30, 0xE4, 0x09, 0xC2, 0xAF, 0x53, 0x55, 0xEF, 0xD2, 0xAF, 0xB1, +0xCC, 0xE5, 0x55, 0x30, 0xE6, 0xDC, 0xC2, 0xAF, 0x53, 0x55, 0xBF, 0xD2, 0xAF, 0x12, 0x68, 0x42, +0x80, 0xD0, 0x90, 0x01, 0x3C, 0x74, 0xFF, 0xF0, 0xA3, 0xF0, 0xA3, 0xF0, 0x90, 0x01, 0x34, 0xF0, +0xA3, 0xF0, 0xA3, 0xF0, 0xA3, 0xF0, 0xFD, 0x7F, 0x54, 0x31, 0xFB, 0x7D, 0xFF, 0x7F, 0x55, 0x31, +0xFB, 0x7D, 0xFF, 0x7F, 0x56, 0x31, 0xFB, 0x7D, 0xFF, 0x7F, 0x57, 0xD3, 0x10, 0xAF, 0x01, 0xC3, +0xC0, 0xD0, 0x8F, 0x82, 0x75, 0x83, 0x00, 0xED, 0xF0, 0x51, 0x81, 0xD0, 0xD0, 0x92, 0xAF, 0x22, +0x90, 0x01, 0x30, 0xE4, 0xF0, 0xA3, 0xF0, 0xA3, 0xF0, 0xA3, 0xF0, 0x90, 0x01, 0x38, 0xF0, 0xA3, +0xF0, 0xA3, 0xF0, 0xA3, 0xF0, 0xFD, 0x7F, 0x50, 0x31, 0xFB, 0xE4, 0xFD, 0x7F, 0x51, 0x31, 0xFB, +0xE4, 0xFD, 0x7F, 0x52, 0x31, 0xFB, 0xE4, 0xFD, 0x7F, 0x53, 0x80, 0xBF, 0xE5, 0x5E, 0x64, 0x01, +0x70, 0x3B, 0x71, 0xC1, 0xBF, 0x01, 0x04, 0x7F, 0x01, 0x71, 0xB5, 0x90, 0x00, 0x46, 0xE0, 0x44, +0x04, 0xFD, 0x7F, 0x46, 0x31, 0xFB, 0x90, 0x00, 0x44, 0xE0, 0x54, 0xFB, 0xFD, 0x7F, 0x44, 0x31, +0xFB, 0x90, 0x00, 0x46, 0xE0, 0x54, 0xFB, 0xFD, 0x7F, 0x46, 0x31, 0xFB, 0x7F, 0x02, 0x71, 0xDD, +0x8F, 0x62, 0x90, 0x01, 0xC9, 0xE5, 0x62, 0xF0, 0xB4, 0x01, 0x02, 0x71, 0x55, 0x22, 0xE0, 0x5F, +0xF0, 0xD3, 0x10, 0xAF, 0x01, 0xC3, 0xC0, 0xD0, 0x7F, 0x10, 0xDF, 0xFE, 0xD0, 0xD0, 0x92, 0xAF, +0x22, 0xD3, 0x10, 0xAF, 0x01, 0xC3, 0xC0, 0xD0, 0x90, 0x8A, 0xE0, 0xED, 0xF0, 0x90, 0x8A, 0xDF, +0xEF, 0xF0, 0xD3, 0x94, 0x07, 0x50, 0x4E, 0xA3, 0xE0, 0x70, 0x1A, 0x90, 0x8A, 0xDF, 0xE0, 0xFF, +0x74, 0x01, 0xA8, 0x07, 0x08, 0x80, 0x02, 0xC3, 0x33, 0xD8, 0xFC, 0xF4, 0xFF, 0x90, 0x00, 0x47, +0xE0, 0x5F, 0xF0, 0x80, 0x17, 0x90, 0x8A, 0xDF, 0xE0, 0xFF, 0x74, 0x01, 0xA8, 0x07, 0x08, 0x80, +0x02, 0xC3, 0x33, 0xD8, 0xFC, 0xFF, 0x90, 0x00, 0x47, 0xE0, 0x4F, 0xF0, 0x51, 0x81, 0x90, 0x8A, +0xDF, 0xE0, 0xFF, 0x74, 0x01, 0xA8, 0x07, 0x08, 0x80, 0x02, 0xC3, 0x33, 0xD8, 0xFC, 0xF4, 0xFF, +0x90, 0x00, 0x46, 0x80, 0x59, 0x90, 0x8A, 0xDF, 0xE0, 0x24, 0xF8, 0xF0, 0xA3, 0xE0, 0x70, 0x1D, +0x90, 0x8A, 0xDF, 0xE0, 0xFF, 0x74, 0x01, 0xA8, 0x07, 0x08, 0x80, 0x02, 0xC3, 0x33, 0xD8, 0xFC, +0xC4, 0x54, 0xF0, 0xF4, 0xFF, 0x90, 0x00, 0x43, 0xE0, 0x5F, 0xF0, 0x80, 0x1A, 0x90, 0x8A, 0xDF, +0xE0, 0xFF, 0x74, 0x01, 0xA8, 0x07, 0x08, 0x80, 0x02, 0xC3, 0x33, 0xD8, 0xFC, 0xC4, 0x54, 0xF0, +0xFF, 0x90, 0x00, 0x43, 0xE0, 0x4F, 0xF0, 0x51, 0x81, 0x90, 0x8A, 0xDF, 0xE0, 0xFF, 0x74, 0x01, +0xA8, 0x07, 0x08, 0x80, 0x02, 0xC3, 0x33, 0xD8, 0xFC, 0xF4, 0xFF, 0x90, 0x00, 0x43, 0x51, 0x7E, +0xD0, 0xD0, 0x92, 0xAF, 0x22, 0x90, 0x00, 0x49, 0xE0, 0x90, 0x8B, 0x54, 0xF0, 0xE0, 0x54, 0x0F, +0xF0, 0x44, 0xF0, 0xFD, 0x7F, 0x49, 0x31, 0xFB, 0x90, 0x8B, 0x54, 0xE0, 0x44, 0xB0, 0xFD, 0x7F, +0x49, 0x21, 0xFB, 0x90, 0x8A, 0xDD, 0xEE, 0xF0, 0xA3, 0xEF, 0xF0, 0x75, 0x5E, 0x01, 0x8E, 0x5F, +0xF5, 0x60, 0xE4, 0xFD, 0x7F, 0x0B, 0x51, 0x91, 0xE4, 0xFD, 0x7F, 0x02, 0x51, 0x91, 0x71, 0xC1, +0xE4, 0xFF, 0x71, 0xB5, 0xE4, 0xF5, 0x62, 0x90, 0x01, 0xC9, 0xE5, 0x62, 0xF0, 0x90, 0x8A, 0xDD, +0xE0, 0xFC, 0xA3, 0xE0, 0xFD, 0xEC, 0xFB, 0x8D, 0x44, 0xE4, 0xF5, 0x45, 0x7D, 0x01, 0x7F, 0x60, +0x7E, 0x01, 0x02, 0x35, 0xAB, 0x90, 0x01, 0xCA, 0xE5, 0x61, 0xF0, 0xEF, 0x60, 0x02, 0x71, 0x55, +0x22, 0x7F, 0x0B, 0x71, 0xDD, 0xEF, 0x65, 0x61, 0x60, 0x10, 0xE5, 0x61, 0xB4, 0x01, 0x05, 0xE4, +0xF5, 0x61, 0x80, 0x03, 0x75, 0x61, 0x01, 0x7F, 0x01, 0x22, 0x7F, 0x00, 0x22, 0xD3, 0x10, 0xAF, +0x01, 0xC3, 0xC0, 0xD0, 0x90, 0x8B, 0x57, 0xEF, 0xF0, 0xD3, 0x94, 0x07, 0x50, 0x43, 0xE0, 0xFF, +0x74, 0x01, 0xA8, 0x07, 0x08, 0x80, 0x02, 0xC3, 0x33, 0xD8, 0xFC, 0xF4, 0xFF, 0x90, 0x00, 0x46, +0x51, 0x7E, 0x90, 0x8B, 0x57, 0xE0, 0xFD, 0x74, 0x01, 0x7E, 0x00, 0xA8, 0x05, 0x08, 0x80, 0x05, +0xC3, 0x33, 0xCE, 0x33, 0xCE, 0xD8, 0xF9, 0xFF, 0x90, 0x00, 0x44, 0xE0, 0xFB, 0xE4, 0xFE, 0xEF, +0x5B, 0xA8, 0x05, 0x08, 0x80, 0x06, 0xCE, 0xA2, 0xE7, 0x13, 0xCE, 0x13, 0xD8, 0xF8, 0xFF, 0x80, +0x4B, 0x90, 0x8B, 0x57, 0xE0, 0x24, 0xF8, 0xF0, 0xE0, 0xFF, 0x74, 0x01, 0xA8, 0x07, 0x08, 0x80, +0x02, 0xC3, 0x33, 0xD8, 0xFC, 0xF4, 0xFF, 0x90, 0x00, 0x43, 0xE0, 0x5F, 0xF0, 0x51, 0x81, 0x90, +0x8B, 0x57, 0xE0, 0xFD, 0x74, 0x01, 0x7E, 0x00, 0xA8, 0x05, 0x08, 0x80, 0x05, 0xC3, 0x33, 0xCE, +0x33, 0xCE, 0xD8, 0xF9, 0xFF, 0x90, 0x00, 0x42, 0xE0, 0xFB, 0xE4, 0xFE, 0xEF, 0x5B, 0xA8, 0x05, +0x08, 0x80, 0x06, 0xCE, 0xA2, 0xE7, 0x13, 0xCE, 0x13, 0xD8, 0xF8, 0xFF, 0xD0, 0xD0, 0x92, 0xAF, +0x22, 0xE4, 0x90, 0x8B, 0x04, 0xF0, 0x90, 0x00, 0x80, 0xE0, 0x44, 0x80, 0xFD, 0x7F, 0x80, 0x21, +0xFB, 0xD3, 0x10, 0xAF, 0x01, 0xC3, 0xC0, 0xD0, 0x90, 0x8A, 0xDA, 0x12, 0x43, 0x8B, 0x90, 0x8A, +0xDA, 0x12, 0x43, 0x6B, 0x90, 0x00, 0x01, 0x12, 0x42, 0xC2, 0xFA, 0xE5, 0xF0, 0x24, 0x00, 0xFF, +0xE4, 0x3A, 0xFE, 0x90, 0x8A, 0xDA, 0x12, 0x43, 0x6B, 0x90, 0x00, 0x01, 0xEE, 0x8F, 0xF0, 0x12, +0x43, 0x19, 0x12, 0x29, 0xD9, 0xFF, 0x60, 0x2C, 0xB5, 0x5E, 0x16, 0x90, 0x8A, 0xDA, 0x12, 0x43, +0x6B, 0x90, 0x00, 0x01, 0x12, 0x42, 0xC2, 0x65, 0x60, 0x70, 0x04, 0xE5, 0x5F, 0x65, 0xF0, 0x60, +0x22, 0x90, 0x8A, 0xDA, 0x12, 0x43, 0x6B, 0x90, 0x00, 0x01, 0x12, 0x42, 0xC2, 0xFF, 0xAE, 0xF0, +0x71, 0x73, 0x80, 0x0F, 0x90, 0x8A, 0xDA, 0x12, 0x43, 0x6B, 0x12, 0x29, 0xD9, 0x65, 0x5E, 0x60, +0x02, 0xB1, 0x08, 0xD0, 0xD0, 0x92, 0xAF, 0x22, 0xE4, 0xF5, 0x5E, 0x7F, 0x60, 0x7E, 0x01, 0x8F, +0x82, 0x8E, 0x83, 0xA3, 0xA3, 0xA3, 0xE4, 0xF0, 0x22, 0x90, 0x8A, 0xD7, 0x12, 0x43, 0x8B, 0xEF, +0x12, 0x43, 0x94, 0x55, 0x5A, 0x01, 0x55, 0x51, 0x02, 0x55, 0x7E, 0x03, 0x55, 0x87, 0x05, 0x55, +0x90, 0x06, 0x55, 0xCB, 0x07, 0x55, 0x98, 0x08, 0x55, 0xA1, 0x09, 0x55, 0xA9, 0x20, 0x55, 0xB2, +0x2C, 0x55, 0x63, 0x2D, 0x55, 0x6C, 0x2E, 0x55, 0x75, 0x3B, 0x55, 0xBB, 0x4B, 0x00, 0x00, 0x55, +0xC4, 0x90, 0x8A, 0xD7, 0x12, 0x43, 0x6B, 0x02, 0x72, 0xFC, 0x90, 0x8A, 0xD7, 0x12, 0x43, 0x6B, +0x02, 0x73, 0x02, 0x90, 0x8A, 0xD7, 0x12, 0x43, 0x6B, 0x02, 0x73, 0x2F, 0x90, 0x8A, 0xD7, 0x12, +0x43, 0x6B, 0x02, 0x73, 0x77, 0x90, 0x8A, 0xD7, 0x12, 0x43, 0x6B, 0x02, 0x73, 0xB0, 0x90, 0x8A, +0xD7, 0x12, 0x43, 0x6B, 0x02, 0x73, 0xC9, 0x90, 0x8A, 0xD7, 0x12, 0x43, 0x6B, 0x02, 0x72, 0xD0, +0x90, 0x8A, 0xD7, 0x12, 0x43, 0x6B, 0xE1, 0x19, 0x90, 0x8A, 0xD7, 0x12, 0x43, 0x6B, 0x02, 0x74, +0x11, 0x90, 0x8A, 0xD7, 0x12, 0x43, 0x6B, 0x81, 0x91, 0x90, 0x8A, 0xD7, 0x12, 0x43, 0x6B, 0x02, +0x76, 0xEA, 0x90, 0x8A, 0xD7, 0x12, 0x43, 0x6B, 0x02, 0x78, 0xDE, 0x90, 0x8A, 0xD7, 0x12, 0x43, +0x6B, 0x02, 0x7A, 0x48, 0x90, 0x01, 0xC6, 0xE0, 0x44, 0x01, 0xF0, 0x22, 0xD3, 0x10, 0xAF, 0x01, +0xC3, 0xC0, 0xD0, 0x90, 0x01, 0xCC, 0xE0, 0x54, 0x0F, 0x90, 0x8A, 0xCF, 0xF0, 0x90, 0x8A, 0xCF, +0xE0, 0xFD, 0x70, 0x02, 0xE1, 0x14, 0x90, 0x8B, 0x51, 0xE0, 0xFF, 0x74, 0x01, 0x7E, 0x00, 0xA8, +0x07, 0x08, 0x80, 0x05, 0xC3, 0x33, 0xCE, 0x33, 0xCE, 0xD8, 0xF9, 0xFF, 0xEF, 0x5D, 0x70, 0x02, +0xE1, 0x0D, 0x90, 0x8B, 0x51, 0xE0, 0x75, 0xF0, 0x04, 0x90, 0x01, 0xD0, 0x12, 0x43, 0x5F, 0xE0, +0x90, 0x8A, 0xD0, 0xF0, 0x75, 0x1D, 0x01, 0x75, 0x1E, 0x8A, 0x75, 0x1F, 0xD0, 0x75, 0x20, 0x01, +0x7B, 0x01, 0x7A, 0x8A, 0x79, 0xD1, 0x12, 0x5F, 0x57, 0x90, 0x8A, 0xD1, 0xE0, 0xFF, 0xC4, 0x13, +0x13, 0x13, 0x54, 0x01, 0x90, 0x8B, 0x51, 0x30, 0xE0, 0x59, 0xE0, 0x75, 0xF0, 0x02, 0x90, 0x00, +0x88, 0x12, 0x43, 0x5F, 0xE0, 0x90, 0x8A, 0xD2, 0xF0, 0x90, 0x8B, 0x51, 0xE0, 0x75, 0xF0, 0x02, +0x90, 0x00, 0x89, 0x12, 0x43, 0x5F, 0xE0, 0x90, 0x8A, 0xD3, 0xF0, 0x90, 0x8B, 0x51, 0xE0, 0x75, +0xF0, 0x04, 0x90, 0x01, 0xD1, 0x12, 0x43, 0x5F, 0xE0, 0x90, 0x8A, 0xD4, 0xF0, 0x90, 0x8B, 0x51, +0xE0, 0x75, 0xF0, 0x04, 0x90, 0x01, 0xD2, 0x12, 0x43, 0x5F, 0xE0, 0x90, 0x8A, 0xD5, 0xF0, 0x90, +0x8B, 0x51, 0xE0, 0x75, 0xF0, 0x04, 0x90, 0x01, 0xD3, 0x12, 0x43, 0x5F, 0xE0, 0x90, 0x8A, 0xD6, +0xF0, 0x80, 0x33, 0xE0, 0x75, 0xF0, 0x04, 0x90, 0x01, 0xD1, 0x12, 0x43, 0x5F, 0xE0, 0x90, 0x8A, +0xD2, 0xF0, 0x90, 0x8B, 0x51, 0xE0, 0x75, 0xF0, 0x04, 0x90, 0x01, 0xD2, 0x12, 0x43, 0x5F, 0xE0, +0x90, 0x8A, 0xD3, 0xF0, 0x90, 0x8B, 0x51, 0xE0, 0x75, 0xF0, 0x04, 0x90, 0x01, 0xD3, 0x12, 0x43, +0x5F, 0xE0, 0x90, 0x8A, 0xD4, 0xF0, 0xEF, 0x54, 0x7F, 0xFF, 0x7B, 0x01, 0x7A, 0x8A, 0x79, 0xD2, +0xB1, 0x19, 0x90, 0x8A, 0xCF, 0xE0, 0xFF, 0x90, 0x8B, 0x51, 0xE0, 0xFE, 0x74, 0x01, 0xA8, 0x06, +0x08, 0x80, 0x02, 0xC3, 0x33, 0xD8, 0xFC, 0xF4, 0x5F, 0x90, 0x8A, 0xCF, 0xF0, 0x90, 0x8B, 0x51, +0xE0, 0xFF, 0x74, 0x01, 0xA8, 0x07, 0x08, 0x80, 0x02, 0xC3, 0x33, 0xD8, 0xFC, 0x90, 0x01, 0xCC, +0xF0, 0x90, 0x8B, 0x51, 0xE0, 0x04, 0xF0, 0xE0, 0x54, 0x03, 0xF0, 0xA1, 0xDD, 0x90, 0x01, 0xC6, +0xE0, 0x44, 0x02, 0xF0, 0xD0, 0xD0, 0x92, 0xAF, 0x22, 0x90, 0x00, 0x04, 0x12, 0x42, 0x20, 0xFF, +0x54, 0x1F, 0xFE, 0xEF, 0x54, 0x20, 0xC4, 0x13, 0x54, 0x07, 0xFD, 0xAF, 0x06, 0x90, 0x8A, 0xDA, +0xEF, 0xF0, 0xA3, 0xED, 0xF0, 0xA3, 0x12, 0x43, 0x8B, 0x90, 0x8A, 0xDC, 0x12, 0x43, 0x6B, 0x90, +0x00, 0x03, 0x12, 0x42, 0x20, 0x54, 0xF0, 0xC4, 0x54, 0x0F, 0x90, 0x8A, 0xDF, 0xF0, 0x90, 0x00, +0x04, 0x12, 0x42, 0x20, 0x54, 0x40, 0xC4, 0x13, 0x13, 0x54, 0x03, 0x90, 0x8A, 0xE0, 0xF0, 0x90, +0x8A, 0xDA, 0xE0, 0xFF, 0x75, 0xF0, 0x09, 0x90, 0x87, 0x25, 0x12, 0x43, 0x5F, 0xAD, 0x82, 0xAC, +0x83, 0x90, 0x8A, 0xE1, 0xEC, 0xF0, 0xA3, 0xED, 0xF0, 0xEF, 0x75, 0xF0, 0x09, 0xA4, 0x24, 0x23, +0xF9, 0x74, 0x87, 0x35, 0xF0, 0xFA, 0x7B, 0x01, 0xA3, 0x12, 0x43, 0x8B, 0x90, 0x8A, 0xDC, 0x12, +0x43, 0x6B, 0x90, 0x00, 0x03, 0x12, 0x42, 0x20, 0x54, 0x0F, 0xFF, 0x90, 0x8A, 0xE3, 0x12, 0x43, +0x6B, 0xEF, 0x12, 0x42, 0x4D, 0x90, 0x8A, 0xDC, 0x12, 0x43, 0x6B, 0x90, 0x00, 0x02, 0x12, 0x42, +0x20, 0xFF, 0x90, 0x8A, 0xE3, 0x12, 0x43, 0x6B, 0x90, 0x00, 0x01, 0xEF, 0x12, 0x42, 0x5F, 0x90, +0x8A, 0xDC, 0x12, 0x43, 0x6B, 0x90, 0x00, 0x01, 0x12, 0x42, 0x20, 0xFF, 0x90, 0x8A, 0xE1, 0xE0, +0xFC, 0xA3, 0xE0, 0xFD, 0xF5, 0x82, 0x8C, 0x83, 0xEF, 0xF0, 0x12, 0x29, 0xD9, 0x8D, 0x82, 0x8C, +0x83, 0xA3, 0xF0, 0x90, 0x8A, 0xDF, 0xE0, 0xFE, 0x90, 0x8A, 0xDA, 0xE0, 0xFF, 0x24, 0xC1, 0xF5, +0x82, 0xE4, 0x34, 0x86, 0xF5, 0x83, 0xEE, 0xF0, 0x90, 0x8A, 0xDB, 0xE0, 0xFE, 0x75, 0xF0, 0x09, +0xEF, 0x90, 0x87, 0x29, 0x12, 0x43, 0x5F, 0xEE, 0xF0, 0x75, 0xF0, 0x09, 0xEF, 0x90, 0x87, 0x2A, +0x12, 0x43, 0x5F, 0x74, 0x01, 0xF0, 0x90, 0x8A, 0xE0, 0xE0, 0xFE, 0x75, 0xF0, 0x09, 0xEF, 0x90, +0x87, 0x2B, 0x12, 0x43, 0x5F, 0xEE, 0xF0, 0x8F, 0x0F, 0xEF, 0x25, 0xE0, 0x24, 0xE4, 0xF5, 0x82, +0xE4, 0x34, 0x89, 0xAF, 0x82, 0xF5, 0x10, 0x8F, 0x11, 0xE5, 0x0F, 0x75, 0xF0, 0x02, 0xA4, 0x24, +0x81, 0xF9, 0x74, 0x86, 0x35, 0xF0, 0x75, 0x12, 0x01, 0xF5, 0x13, 0x89, 0x14, 0x75, 0xF0, 0x09, +0xE5, 0x0F, 0x90, 0x87, 0x25, 0x12, 0x43, 0x5F, 0xAF, 0x82, 0x85, 0x83, 0x15, 0x8F, 0x16, 0xE5, +0x0F, 0x75, 0xF0, 0x09, 0xA4, 0x24, 0x23, 0xF9, 0x74, 0x87, 0x35, 0xF0, 0x75, 0x17, 0x01, 0xF5, +0x18, 0x89, 0x19, 0x74, 0xC1, 0x25, 0x0F, 0xF5, 0x82, 0xE4, 0x34, 0x86, 0xF5, 0x83, 0xE0, 0x12, +0x43, 0x94, 0x58, 0xA7, 0x00, 0x58, 0xBC, 0x01, 0x58, 0xD1, 0x02, 0x58, 0xE6, 0x03, 0x59, 0x0F, +0x04, 0x59, 0x24, 0x05, 0x59, 0x39, 0x06, 0x59, 0x5F, 0x0C, 0x59, 0x8C, 0x0D, 0x59, 0xB9, 0x0E, +0x59, 0xE6, 0x0F, 0x00, 0x00, 0x5A, 0x1A, 0xE5, 0x0F, 0x25, 0xE0, 0x24, 0xE4, 0xF5, 0x82, 0xE4, +0x34, 0x89, 0xF5, 0x83, 0x74, 0xF0, 0xF0, 0xA3, 0x74, 0x15, 0x80, 0x3C, 0xE5, 0x0F, 0x25, 0xE0, +0x24, 0xE4, 0xF5, 0x82, 0xE4, 0x34, 0x89, 0xF5, 0x83, 0x74, 0xF0, 0xF0, 0xA3, 0x74, 0x10, 0x80, +0x27, 0xE5, 0x0F, 0x25, 0xE0, 0x24, 0xE4, 0xF5, 0x82, 0xE4, 0x34, 0x89, 0xF5, 0x83, 0x74, 0xF0, +0xF0, 0xA3, 0x74, 0x05, 0x80, 0x12, 0xE5, 0x0F, 0x25, 0xE0, 0x24, 0xE4, 0xF5, 0x82, 0xE4, 0x34, +0x89, 0xF5, 0x83, 0x74, 0xF0, 0xF0, 0xA3, 0xE4, 0xF0, 0xE5, 0x0F, 0x25, 0xE0, 0x24, 0x81, 0xF5, +0x82, 0xE4, 0x34, 0x86, 0xF5, 0x83, 0x74, 0x0F, 0xF0, 0xA3, 0x74, 0x8F, 0xF0, 0x41, 0x1A, 0xE5, +0x0F, 0x25, 0xE0, 0x24, 0xE4, 0xF5, 0x82, 0xE4, 0x34, 0x89, 0xF5, 0x83, 0x74, 0x0F, 0xF0, 0xA3, +0x74, 0xF5, 0x80, 0x27, 0xE5, 0x0F, 0x25, 0xE0, 0x24, 0xE4, 0xF5, 0x82, 0xE4, 0x34, 0x89, 0xF5, +0x83, 0x74, 0x0F, 0xF0, 0xA3, 0x74, 0xF0, 0x80, 0x12, 0xE5, 0x0F, 0x25, 0xE0, 0x24, 0xE4, 0xF5, +0x82, 0xE4, 0x34, 0x89, 0xF5, 0x83, 0xE4, 0xF0, 0xA3, 0x74, 0x0D, 0xF0, 0xE5, 0x0F, 0x25, 0xE0, +0x24, 0x81, 0xF5, 0x82, 0xE4, 0x34, 0x86, 0xF5, 0x83, 0xE4, 0xF0, 0xA3, 0xF0, 0x41, 0x1A, 0x90, +0x04, 0x47, 0xE0, 0xAB, 0x12, 0xAA, 0x13, 0xA9, 0x14, 0x12, 0x42, 0x4D, 0x90, 0x04, 0x46, 0xE0, +0xAB, 0x12, 0xAA, 0x13, 0xA9, 0x14, 0x90, 0x00, 0x01, 0x12, 0x42, 0x5F, 0x90, 0x04, 0x45, 0xE0, +0x85, 0x11, 0x82, 0x85, 0x10, 0x83, 0xF0, 0x90, 0x04, 0x44, 0x41, 0x11, 0x90, 0x04, 0x4B, 0xE0, +0xAB, 0x12, 0xAA, 0x13, 0xA9, 0x14, 0x12, 0x42, 0x4D, 0x90, 0x04, 0x4A, 0xE0, 0xAB, 0x12, 0xAA, +0x13, 0xA9, 0x14, 0x90, 0x00, 0x01, 0x12, 0x42, 0x5F, 0x90, 0x04, 0x49, 0xE0, 0x85, 0x11, 0x82, +0x85, 0x10, 0x83, 0xF0, 0x90, 0x04, 0x48, 0x80, 0x58, 0x90, 0x04, 0x4F, 0xE0, 0xAB, 0x12, 0xAA, +0x13, 0xA9, 0x14, 0x12, 0x42, 0x4D, 0x90, 0x04, 0x4E, 0xE0, 0xAB, 0x12, 0xAA, 0x13, 0xA9, 0x14, +0x90, 0x00, 0x01, 0x12, 0x42, 0x5F, 0x90, 0x04, 0x4D, 0xE0, 0x85, 0x11, 0x82, 0x85, 0x10, 0x83, +0xF0, 0x90, 0x04, 0x4C, 0x80, 0x2B, 0x90, 0x04, 0x53, 0xE0, 0xAB, 0x12, 0xAA, 0x13, 0xA9, 0x14, +0x12, 0x42, 0x4D, 0x90, 0x04, 0x52, 0xE0, 0xAB, 0x12, 0xAA, 0x13, 0xA9, 0x14, 0x90, 0x00, 0x01, +0x12, 0x42, 0x5F, 0x90, 0x04, 0x51, 0xE0, 0x85, 0x11, 0x82, 0x85, 0x10, 0x83, 0xF0, 0x90, 0x04, +0x50, 0xE0, 0x85, 0x11, 0x82, 0x85, 0x10, 0x83, 0xA3, 0xF0, 0xAB, 0x12, 0xAA, 0x13, 0xA9, 0x14, +0xC0, 0x03, 0xC0, 0x02, 0xC0, 0x01, 0x12, 0x29, 0xD9, 0xFF, 0xAB, 0x17, 0xAA, 0x18, 0xA9, 0x19, +0x12, 0x29, 0xD9, 0x5F, 0xD0, 0x01, 0xD0, 0x02, 0xD0, 0x03, 0x12, 0x42, 0x4D, 0xAB, 0x12, 0xE5, +0x14, 0x24, 0x01, 0xF9, 0xE4, 0x35, 0x13, 0xFA, 0xC0, 0x03, 0xC0, 0x02, 0xC0, 0x01, 0x12, 0x29, +0xD9, 0xFF, 0xAB, 0x17, 0xAA, 0x18, 0xA9, 0x19, 0x90, 0x00, 0x01, 0x12, 0x42, 0x20, 0x5F, 0xD0, +0x01, 0xD0, 0x02, 0xD0, 0x03, 0x12, 0x42, 0x4D, 0x85, 0x11, 0x82, 0x85, 0x10, 0x83, 0xC0, 0x83, +0xC0, 0x82, 0xE0, 0xFF, 0x85, 0x16, 0x82, 0x85, 0x15, 0x83, 0xE0, 0xFE, 0xEF, 0x5E, 0xD0, 0x82, +0xD0, 0x83, 0xF0, 0x85, 0x11, 0x82, 0x85, 0x10, 0x83, 0xA3, 0xC0, 0x83, 0xC0, 0x82, 0xE0, 0xFF, +0x85, 0x16, 0x82, 0x85, 0x15, 0x83, 0xA3, 0xE0, 0xFE, 0xEF, 0x5E, 0xD0, 0x82, 0xD0, 0x83, 0xF0, +0xE5, 0x0F, 0x25, 0xE0, 0x24, 0x81, 0xF5, 0x82, 0xE4, 0x34, 0x86, 0xF5, 0x83, 0xE0, 0xFE, 0xA3, +0xE0, 0x4E, 0x60, 0x4B, 0x90, 0x8A, 0xE6, 0x74, 0x0B, 0xF0, 0x90, 0x8A, 0xE6, 0xE0, 0xFF, 0xC3, +0x94, 0x00, 0x50, 0x02, 0x61, 0x5F, 0x74, 0x01, 0x7E, 0x00, 0xA8, 0x07, 0x08, 0x80, 0x05, 0xC3, +0x33, 0xCE, 0x33, 0xCE, 0xD8, 0xF9, 0xFF, 0xE5, 0x0F, 0x25, 0xE0, 0x24, 0x81, 0xF5, 0x82, 0xE4, +0x34, 0x86, 0xF5, 0x83, 0xE0, 0x5E, 0xFE, 0xA3, 0xE0, 0x5F, 0x4E, 0x60, 0x0A, 0x90, 0x8A, 0xE6, +0xE0, 0x24, 0x10, 0xA3, 0xF0, 0x80, 0x68, 0x90, 0x8A, 0xE6, 0xE0, 0x14, 0xF0, 0x80, 0xBB, 0xE5, +0x0F, 0x25, 0xE0, 0x24, 0xE4, 0xF5, 0x82, 0xE4, 0x34, 0x89, 0xF5, 0x83, 0xE0, 0xFE, 0xA3, 0xE0, +0x4E, 0x60, 0x47, 0x90, 0x8A, 0xE6, 0x74, 0x0F, 0xF0, 0x90, 0x8A, 0xE6, 0xE0, 0xFF, 0xC3, 0x94, +0x00, 0x40, 0x3C, 0x74, 0x01, 0x7E, 0x00, 0xA8, 0x07, 0x08, 0x80, 0x05, 0xC3, 0x33, 0xCE, 0x33, +0xCE, 0xD8, 0xF9, 0xFF, 0xE5, 0x0F, 0x25, 0xE0, 0x24, 0xE4, 0xF5, 0x82, 0xE4, 0x34, 0x89, 0xF5, +0x83, 0xE0, 0x5E, 0xFE, 0xA3, 0xE0, 0x5F, 0x4E, 0x60, 0x08, 0x90, 0x8A, 0xE6, 0xE0, 0xA3, 0xF0, +0x80, 0x0D, 0x90, 0x8A, 0xE6, 0xE0, 0x14, 0xF0, 0x80, 0xBF, 0xE4, 0x90, 0x8A, 0xE7, 0xF0, 0xE5, +0x0F, 0x25, 0xE0, 0x24, 0xE4, 0xF5, 0x82, 0xE4, 0x34, 0x89, 0xF5, 0x83, 0xE0, 0xFE, 0xA3, 0xE0, +0x4E, 0x60, 0x46, 0xE4, 0x90, 0x8A, 0xE6, 0xF0, 0x90, 0x8A, 0xE6, 0xE0, 0xFF, 0xC3, 0x94, 0x10, +0x40, 0x02, 0x81, 0x18, 0x74, 0x01, 0x7E, 0x00, 0xA8, 0x07, 0x08, 0x80, 0x05, 0xC3, 0x33, 0xCE, +0x33, 0xCE, 0xD8, 0xF9, 0xFF, 0xE5, 0x0F, 0x25, 0xE0, 0x24, 0xE4, 0xF5, 0x82, 0xE4, 0x34, 0x89, +0xF5, 0x83, 0xE0, 0x5E, 0xFE, 0xA3, 0xE0, 0x5F, 0x4E, 0x60, 0x06, 0x90, 0x8A, 0xE6, 0xE0, 0x80, +0x63, 0x90, 0x8A, 0xE6, 0xE0, 0x04, 0xF0, 0x80, 0xBF, 0xE5, 0x0F, 0x25, 0xE0, 0x24, 0x81, 0xF5, +0x82, 0xE4, 0x34, 0x86, 0xF5, 0x83, 0xE0, 0xFE, 0xA3, 0xE0, 0x4E, 0x60, 0x46, 0xE4, 0x90, 0x8A, +0xE6, 0xF0, 0x90, 0x8A, 0xE6, 0xE0, 0xFF, 0xC3, 0x94, 0x0C, 0x50, 0x3C, 0x74, 0x01, 0x7E, 0x00, +0xA8, 0x07, 0x08, 0x80, 0x05, 0xC3, 0x33, 0xCE, 0x33, 0xCE, 0xD8, 0xF9, 0xFF, 0xE5, 0x0F, 0x25, +0xE0, 0x24, 0x81, 0xF5, 0x82, 0xE4, 0x34, 0x86, 0xF5, 0x83, 0xE0, 0x5E, 0xFE, 0xA3, 0xE0, 0x5F, +0x4E, 0x60, 0x08, 0x90, 0x8A, 0xE6, 0xE0, 0x24, 0x10, 0x80, 0x09, 0x90, 0x8A, 0xE6, 0xE0, 0x04, +0xF0, 0x80, 0xBF, 0xE4, 0x90, 0x8A, 0xE8, 0xF0, 0x90, 0x8A, 0xE7, 0xE0, 0xFF, 0x75, 0xF0, 0x09, +0xE5, 0x0F, 0x90, 0x87, 0x27, 0x12, 0x43, 0x5F, 0xEF, 0xF0, 0x90, 0x8A, 0xE8, 0xE0, 0xFE, 0x75, +0xF0, 0x09, 0xE5, 0x0F, 0x90, 0x87, 0x28, 0x12, 0x43, 0x5F, 0xEE, 0xF0, 0xE5, 0x0F, 0xC3, 0x94, +0x20, 0x50, 0x32, 0x74, 0x84, 0x25, 0x0F, 0xF5, 0x82, 0xE4, 0x34, 0x04, 0xF5, 0x83, 0xE0, 0xD3, +0x9F, 0x40, 0x02, 0x80, 0x18, 0x74, 0x84, 0x25, 0x0F, 0xF5, 0x82, 0xE4, 0x34, 0x04, 0xF5, 0x83, +0xE0, 0xC3, 0x9E, 0x50, 0x08, 0x90, 0x8A, 0xE8, 0xE0, 0xA3, 0xF0, 0x80, 0x08, 0x90, 0x8A, 0xE7, +0xE0, 0x90, 0x8A, 0xE9, 0xF0, 0x90, 0x8A, 0xE9, 0xE0, 0xFD, 0xAF, 0x0F, 0x91, 0xC1, 0x90, 0x8A, +0xE9, 0xE0, 0xFF, 0x74, 0x84, 0x25, 0x0F, 0xF5, 0x82, 0xE4, 0x34, 0x8A, 0xF5, 0x83, 0xEF, 0xF0, +0x90, 0x8A, 0xE7, 0xE0, 0xFF, 0xD3, 0x94, 0x13, 0x40, 0x07, 0x90, 0x87, 0x22, 0x74, 0x03, 0xF0, +0x22, 0xEF, 0xD3, 0x94, 0x0B, 0x40, 0x07, 0x90, 0x87, 0x22, 0x74, 0x02, 0xF0, 0x22, 0xEF, 0xD3, +0x94, 0x03, 0x40, 0x07, 0x90, 0x87, 0x22, 0x74, 0x01, 0xF0, 0x22, 0xE4, 0x90, 0x87, 0x22, 0xF0, +0x22, 0xD3, 0x10, 0xAF, 0x01, 0xC3, 0xC0, 0xD0, 0x74, 0x84, 0x2F, 0xF5, 0x82, 0xE4, 0x34, 0x04, +0xF5, 0x83, 0xED, 0xF0, 0xD0, 0xD0, 0x92, 0xAF, 0x22, 0xAC, 0x07, 0xED, 0x54, 0x1F, 0x90, 0x8A, +0xC7, 0xF0, 0x74, 0x01, 0x2C, 0xF5, 0x82, 0xE4, 0x34, 0x86, 0xF5, 0x83, 0xE0, 0x90, 0x8A, 0xC5, +0xF0, 0x90, 0x8A, 0xC8, 0x74, 0x01, 0xF0, 0xEB, 0xC3, 0x94, 0x01, 0x40, 0x02, 0x80, 0x37, 0x90, +0x8A, 0xC5, 0xE0, 0x25, 0x0D, 0xFF, 0xA3, 0xF0, 0xA3, 0xE0, 0x90, 0x41, 0x9E, 0x93, 0xFE, 0xEF, +0xD3, 0x9E, 0x40, 0x10, 0x74, 0x01, 0x2C, 0xF5, 0x82, 0xE4, 0x34, 0x86, 0xF5, 0x83, 0xE4, 0xF0, +0xAF, 0x04, 0x80, 0x9D, 0x90, 0x8A, 0xC6, 0xE0, 0xFF, 0x74, 0x01, 0x2C, 0xF5, 0x82, 0xE4, 0x34, +0x86, 0xF5, 0x83, 0xEF, 0xF0, 0x22, 0xAD, 0x07, 0x75, 0xF0, 0x09, 0xED, 0x90, 0x87, 0x27, 0x12, +0x43, 0x5F, 0xE0, 0xFF, 0x90, 0x8A, 0xCA, 0xF0, 0x74, 0xA5, 0x2D, 0xF5, 0x82, 0xE4, 0x34, 0x8A, +0xF5, 0x83, 0xE0, 0x54, 0x1F, 0x90, 0x8A, 0xC9, 0xF0, 0xD3, 0x9F, 0x40, 0x06, 0xA3, 0xE0, 0x90, +0x8A, 0xC9, 0xF0, 0x90, 0x8A, 0xC9, 0xE0, 0xFF, 0x25, 0xE0, 0x24, 0x66, 0xF5, 0x82, 0xE4, 0x34, +0x41, 0xF5, 0x83, 0xE4, 0x93, 0xFA, 0x74, 0x01, 0x93, 0xFB, 0xEF, 0x25, 0xE0, 0x24, 0x2E, 0xF5, +0x82, 0xE4, 0x34, 0x41, 0xF5, 0x83, 0x74, 0x01, 0x93, 0x2B, 0xFF, 0xE4, 0x93, 0x3A, 0xC3, 0x13, +0xFE, 0xEF, 0x13, 0xFF, 0xED, 0x25, 0xE0, 0x24, 0xE1, 0xF5, 0x82, 0xE4, 0x34, 0x86, 0xF5, 0x83, +0xEE, 0xF0, 0xA3, 0xEF, 0xF0, 0xAF, 0x05, 0x90, 0x8A, 0xC9, 0xE0, 0xFD, 0x91, 0xC1, 0x90, 0x8A, +0xC9, 0xE0, 0xFF, 0x22, 0xAC, 0x07, 0x74, 0x84, 0x2C, 0xF5, 0x82, 0xE4, 0x34, 0x04, 0xF5, 0x83, +0xE0, 0x54, 0x7F, 0x90, 0x8A, 0xDE, 0xF0, 0xE0, 0x54, 0x1F, 0xFF, 0x90, 0x8A, 0xE1, 0xF0, 0x75, +0xF0, 0x09, 0xEC, 0x90, 0x87, 0x28, 0x12, 0x43, 0x5F, 0xE0, 0x90, 0x8A, 0xE3, 0xF0, 0x75, 0xF0, +0x09, 0xEC, 0x90, 0x87, 0x27, 0x12, 0x43, 0x5F, 0xE0, 0xFE, 0x90, 0x8A, 0xE4, 0xF0, 0xEC, 0x25, +0xE0, 0x24, 0xE4, 0xF5, 0x82, 0xE4, 0x34, 0x89, 0xF5, 0x83, 0xE0, 0xFB, 0xA3, 0xE0, 0x90, 0x8A, +0xE5, 0xCB, 0xF0, 0xA3, 0xEB, 0xF0, 0xEC, 0x25, 0xE0, 0x24, 0x81, 0xF5, 0x82, 0xE4, 0x34, 0x86, +0xF5, 0x83, 0xE0, 0xFB, 0xA3, 0xE0, 0x90, 0x8A, 0xE7, 0xCB, 0xF0, 0xA3, 0xEB, 0xF0, 0xEF, 0xD3, +0x9E, 0x40, 0x0C, 0x90, 0x8A, 0xE4, 0xE0, 0x90, 0x8A, 0xE1, 0xF0, 0x90, 0x8A, 0xDE, 0xF0, 0xED, +0x70, 0x02, 0xE1, 0x06, 0x90, 0x8A, 0xE2, 0xED, 0xF0, 0x90, 0x8A, 0xDE, 0xE0, 0x30, 0xE6, 0x0E, +0x90, 0x8A, 0xE1, 0xE0, 0x90, 0x8A, 0xDE, 0xF0, 0x90, 0x8A, 0xE2, 0xE0, 0x14, 0xF0, 0x90, 0x8A, +0xE2, 0xE0, 0x70, 0x02, 0xE1, 0x06, 0x90, 0x8A, 0xE1, 0xE0, 0xFF, 0xD3, 0x94, 0x00, 0x50, 0x02, +0xE1, 0x06, 0xE4, 0x90, 0x8A, 0xE0, 0xF0, 0xEF, 0x14, 0x90, 0x8A, 0xDF, 0xF0, 0x90, 0x8A, 0xE3, +0xE0, 0xFD, 0x90, 0x8A, 0xDF, 0xE0, 0xFF, 0xD3, 0x9D, 0x40, 0x6F, 0xEF, 0x94, 0x10, 0x40, 0x21, +0xEF, 0x24, 0xF0, 0xFF, 0x74, 0x01, 0x7E, 0x00, 0xA8, 0x07, 0x08, 0x80, 0x05, 0xC3, 0x33, 0xCE, +0x33, 0xCE, 0xD8, 0xF9, 0xFF, 0x90, 0x8A, 0xE7, 0xE0, 0x5E, 0xFE, 0xA3, 0xE0, 0x5F, 0x4E, 0x70, +0x27, 0x90, 0x8A, 0xDF, 0xE0, 0xFF, 0xC3, 0x94, 0x10, 0x50, 0x37, 0x74, 0x01, 0x7E, 0x00, 0xA8, +0x07, 0x08, 0x80, 0x05, 0xC3, 0x33, 0xCE, 0x33, 0xCE, 0xD8, 0xF9, 0xFF, 0x90, 0x8A, 0xE5, 0xE0, +0x5E, 0xFE, 0xA3, 0xE0, 0x5F, 0x4E, 0x60, 0x1A, 0x90, 0x8A, 0xDF, 0xE0, 0x90, 0x8A, 0xDE, 0xF0, +0x90, 0x8A, 0xE0, 0xE0, 0x04, 0xF0, 0x90, 0x8A, 0xE2, 0xE0, 0xFF, 0x90, 0x8A, 0xE0, 0xE0, 0x6F, +0x60, 0x08, 0x90, 0x8A, 0xDF, 0xE0, 0x14, 0xF0, 0x80, 0x83, 0x90, 0x8A, 0xE2, 0xE0, 0xFF, 0x90, +0x8A, 0xE0, 0xE0, 0xC3, 0x9F, 0x50, 0x0F, 0x90, 0x8A, 0xDF, 0xE0, 0xB5, 0x05, 0x08, 0x90, 0x8A, +0xE3, 0xE0, 0x90, 0x8A, 0xDE, 0xF0, 0x90, 0x8A, 0xDE, 0xE0, 0xFF, 0x25, 0xE0, 0x24, 0x66, 0xF5, +0x82, 0xE4, 0x34, 0x41, 0xF5, 0x83, 0xE4, 0x93, 0xFA, 0x74, 0x01, 0x93, 0xFB, 0xEF, 0x25, 0xE0, +0x24, 0x2E, 0xF5, 0x82, 0xE4, 0x34, 0x41, 0xF5, 0x83, 0x74, 0x01, 0x93, 0x2B, 0xFF, 0xE4, 0x93, +0x3A, 0xC3, 0x13, 0xFE, 0xEF, 0x13, 0xFF, 0xEC, 0x25, 0xE0, 0x24, 0xE1, 0xF5, 0x82, 0xE4, 0x34, +0x86, 0xF5, 0x83, 0xEE, 0xF0, 0xA3, 0xEF, 0xF0, 0xAF, 0x04, 0x90, 0x8A, 0xDE, 0xE0, 0xFD, 0x91, +0xC1, 0x90, 0x8A, 0xDE, 0xE0, 0xFF, 0x22, 0xD3, 0x10, 0xAF, 0x01, 0xC3, 0xC0, 0xD0, 0x8B, 0x1A, +0x8A, 0x1B, 0x89, 0x1C, 0x90, 0x8B, 0x3F, 0x12, 0x43, 0x8B, 0xAB, 0x1D, 0xAA, 0x1E, 0xA9, 0x1F, +0x90, 0x8B, 0x42, 0x12, 0x43, 0x8B, 0xAF, 0x20, 0x15, 0x20, 0xEF, 0x60, 0x1E, 0x90, 0x8B, 0x42, +0xE4, 0x75, 0xF0, 0x01, 0x12, 0x43, 0x74, 0x12, 0x29, 0xD9, 0xFF, 0x90, 0x8B, 0x3F, 0xE4, 0x75, +0xF0, 0x01, 0x12, 0x43, 0x74, 0xEF, 0x12, 0x42, 0x4D, 0x80, 0xDB, 0xAB, 0x1A, 0xAA, 0x1B, 0xA9, +0x1C, 0xD0, 0xD0, 0x92, 0xAF, 0x22, 0xD3, 0x10, 0xAF, 0x01, 0xC3, 0xC0, 0xD0, 0x90, 0x01, 0xC4, +0x74, 0xA6, 0xF0, 0x74, 0x5F, 0xA3, 0xF0, 0x90, 0x04, 0x1D, 0xE0, 0x60, 0x1A, 0x90, 0x05, 0x22, +0xE0, 0x54, 0x90, 0x60, 0x07, 0x90, 0x01, 0xC6, 0xE0, 0x44, 0x40, 0xF0, 0x90, 0x01, 0xC7, 0xE0, +0x30, 0xE1, 0xE4, 0x7F, 0x00, 0x80, 0x02, 0x7F, 0x01, 0xD0, 0xD0, 0x92, 0xAF, 0x22, 0xD3, 0x10, +0xAF, 0x01, 0xC3, 0xC0, 0xD0, 0xE4, 0xFB, 0xFA, 0xEF, 0x30, 0xE0, 0x02, 0x7B, 0x80, 0xEF, 0xC3, +0x13, 0x90, 0xFD, 0x10, 0xF0, 0x90, 0x04, 0x25, 0xEF, 0xF0, 0xED, 0x60, 0x1E, 0xAF, 0x03, 0x74, +0x0F, 0x2F, 0xF5, 0x82, 0xE4, 0x34, 0xFC, 0xF5, 0x83, 0xE0, 0x44, 0x80, 0xF0, 0x74, 0x10, 0x2F, +0xF5, 0x82, 0xE4, 0x34, 0xFC, 0xF5, 0x83, 0xE0, 0x44, 0x80, 0xF0, 0xAF, 0x03, 0x74, 0x08, 0x2F, +0xF5, 0x82, 0xE4, 0x34, 0xFC, 0xF5, 0x83, 0xE4, 0xF0, 0x74, 0x09, 0x2F, 0xF5, 0x82, 0xE4, 0x34, +0xFC, 0xF5, 0x83, 0xE0, 0x54, 0xF0, 0xF0, 0x74, 0x21, 0x2B, 0xF5, 0x82, 0xE4, 0x34, 0xFC, 0xF5, +0x83, 0xE0, 0x54, 0xF7, 0xF0, 0xAE, 0x02, 0xAF, 0x03, 0xD0, 0xD0, 0x92, 0xAF, 0x22, 0xD3, 0x10, +0xAF, 0x01, 0xC3, 0xC0, 0xD0, 0xE4, 0xFD, 0xFC, 0xEF, 0x30, 0xE0, 0x02, 0x7D, 0x80, 0xEF, 0xC3, +0x13, 0x90, 0xFD, 0x10, 0xF0, 0xAE, 0x04, 0xAF, 0x05, 0xD0, 0xD0, 0x92, 0xAF, 0x22, 0x12, 0x5F, +0xA6, 0xBF, 0x01, 0x10, 0x90, 0x02, 0x09, 0xE0, 0xFF, 0x7D, 0x01, 0x12, 0x5F, 0xDE, 0x90, 0x04, +0x1F, 0x74, 0x20, 0xF0, 0x22, 0x90, 0x01, 0x02, 0xE0, 0x54, 0x03, 0xFF, 0xE0, 0x54, 0x0C, 0x13, +0x13, 0x54, 0x3F, 0xFE, 0xEF, 0x64, 0x01, 0x60, 0x04, 0xEF, 0xB4, 0x03, 0x0E, 0x90, 0x8A, 0xC5, +0x74, 0x01, 0xF0, 0xA3, 0x74, 0x37, 0xF0, 0x79, 0x01, 0x80, 0x18, 0xEE, 0x64, 0x01, 0x60, 0x07, +0xAF, 0x06, 0xEE, 0x64, 0x03, 0x70, 0x3B, 0x90, 0x8A, 0xC5, 0x74, 0x01, 0xF0, 0xA3, 0x74, 0x3D, +0xF0, 0x79, 0x40, 0x90, 0x8A, 0xC5, 0xE0, 0xFE, 0xA3, 0xE0, 0xFF, 0xF5, 0x82, 0x8E, 0x83, 0xE0, +0x59, 0x60, 0x08, 0xE9, 0xF0, 0xE4, 0x90, 0x8A, 0xF6, 0xF0, 0x22, 0x90, 0x8A, 0xF6, 0xE0, 0x04, +0xF0, 0xE0, 0xC3, 0x94, 0x0A, 0x40, 0x0B, 0xE4, 0xF0, 0x90, 0x04, 0x19, 0xE0, 0x30, 0xE0, 0x02, +0x11, 0x6E, 0x22, 0xC0, 0xE0, 0xC0, 0xF0, 0xC0, 0x83, 0xC0, 0x82, 0xC0, 0xD0, 0x75, 0xD0, 0x00, +0xC0, 0x00, 0xC0, 0x01, 0xC0, 0x02, 0xC0, 0x03, 0xC0, 0x04, 0xC0, 0x05, 0xC0, 0x06, 0xC0, 0x07, +0x90, 0x01, 0xC4, 0x74, 0xF3, 0xF0, 0x74, 0x60, 0xA3, 0xF0, 0x90, 0x01, 0x34, 0xE0, 0x55, 0x28, +0xF5, 0x2C, 0xA3, 0xE0, 0x55, 0x29, 0xF5, 0x2D, 0xA3, 0xE0, 0x55, 0x2A, 0xF5, 0x2E, 0xA3, 0xE0, +0x55, 0x2B, 0xF5, 0x2F, 0xE5, 0x2C, 0x20, 0xE0, 0x02, 0x41, 0x8A, 0x90, 0x01, 0x34, 0x74, 0x01, +0xF0, 0x85, 0xD1, 0x4D, 0x85, 0xD2, 0x4E, 0x85, 0xD3, 0x4F, 0x85, 0xD4, 0x50, 0x85, 0xD5, 0x51, +0x85, 0xD6, 0x52, 0x85, 0xD7, 0x53, 0x85, 0xD9, 0x54, 0xE5, 0x54, 0x54, 0x40, 0xC3, 0x13, 0xFF, +0xE5, 0x53, 0x54, 0x20, 0x6F, 0x70, 0x02, 0x41, 0x47, 0xE5, 0x54, 0x30, 0xE5, 0x02, 0x41, 0x47, +0xE5, 0x52, 0x54, 0x1F, 0xF5, 0x08, 0xE5, 0x4D, 0x54, 0x3F, 0xF5, 0x09, 0xE5, 0x51, 0x54, 0x1F, +0xFF, 0xE5, 0x08, 0x25, 0xE0, 0x24, 0xE3, 0xF5, 0x82, 0xE4, 0x34, 0x88, 0xF5, 0x83, 0xE4, 0x8F, +0xF0, 0x12, 0x42, 0x81, 0xE5, 0x53, 0x54, 0x1F, 0xFF, 0xE5, 0x08, 0x25, 0xE0, 0x24, 0xC0, 0xF5, +0x82, 0xE4, 0x34, 0x85, 0xF5, 0x83, 0xE4, 0x8F, 0xF0, 0x12, 0x42, 0x81, 0xE5, 0x09, 0xD3, 0x94, +0x04, 0x40, 0x03, 0x75, 0x09, 0x04, 0x75, 0xF0, 0x0A, 0xE5, 0x08, 0x90, 0x84, 0x00, 0x12, 0x43, +0x5F, 0x75, 0xF0, 0x02, 0xE5, 0x09, 0x12, 0x43, 0x5F, 0xE0, 0xFE, 0xA3, 0xE0, 0xFF, 0xE5, 0x53, +0x54, 0x1F, 0x2F, 0xFF, 0xE4, 0x3E, 0xFE, 0x75, 0xF0, 0x0A, 0xE5, 0x08, 0x90, 0x84, 0x00, 0x12, +0x43, 0x5F, 0x75, 0xF0, 0x02, 0xE5, 0x09, 0x12, 0x43, 0x5F, 0xEE, 0xF0, 0xA3, 0xEF, 0xF0, 0xE5, +0x54, 0x20, 0xE6, 0x24, 0xE5, 0x53, 0x54, 0x1F, 0xFF, 0xE5, 0x08, 0x25, 0xE0, 0x24, 0x63, 0xF5, +0x82, 0xE4, 0x34, 0x88, 0xF5, 0x83, 0xE4, 0x8F, 0xF0, 0x12, 0x42, 0x81, 0xE5, 0x4F, 0x30, 0xE7, +0x36, 0xAF, 0x08, 0x12, 0x5D, 0x36, 0x80, 0x2F, 0xE5, 0x53, 0x54, 0x1F, 0xFF, 0xE5, 0x08, 0x25, +0xE0, 0x24, 0xA3, 0xF5, 0x82, 0xE4, 0x34, 0x88, 0xF5, 0x83, 0xE4, 0x8F, 0xF0, 0x12, 0x42, 0x81, +0xE5, 0x4F, 0x30, 0xE7, 0x12, 0xE5, 0x4F, 0x54, 0x7F, 0xFD, 0xE5, 0x53, 0x54, 0x1F, 0xF5, 0x0D, +0xAB, 0x09, 0xAF, 0x08, 0x12, 0x5C, 0xD9, 0xE5, 0x24, 0x14, 0x24, 0xFD, 0x50, 0x02, 0x80, 0x3A, +0x90, 0x8B, 0x1A, 0xE0, 0x60, 0x2B, 0x90, 0x01, 0x5B, 0xE4, 0xF0, 0x90, 0x01, 0x3C, 0x74, 0x04, +0xF0, 0x12, 0x4B, 0x34, 0xEF, 0x64, 0x01, 0x70, 0x21, 0x90, 0x8B, 0x3D, 0x12, 0x4B, 0x5C, 0x90, +0x01, 0x5B, 0x74, 0x05, 0xF0, 0x90, 0x06, 0x92, 0x74, 0x01, 0xF0, 0x90, 0x8B, 0x18, 0xF0, 0x80, +0x09, 0x12, 0x4B, 0x34, 0xBF, 0x01, 0x03, 0x12, 0x4A, 0xFC, 0xE5, 0x2C, 0x30, 0xE1, 0x20, 0x90, +0x01, 0x34, 0x74, 0x02, 0xF0, 0x85, 0xD1, 0x56, 0x85, 0xD2, 0x57, 0x85, 0xD3, 0x58, 0x85, 0xD4, +0x59, 0x85, 0xD5, 0x5A, 0x85, 0xD6, 0x5B, 0x85, 0xD7, 0x5C, 0x85, 0xD9, 0x5D, 0xB1, 0x5F, 0xE5, +0x2C, 0x30, 0xE3, 0x06, 0x90, 0x01, 0x34, 0x74, 0x08, 0xF0, 0xE5, 0x2C, 0x30, 0xE4, 0x09, 0x90, +0x01, 0x34, 0x74, 0x10, 0xF0, 0x43, 0x55, 0x10, 0xE5, 0x2C, 0x30, 0xE5, 0x26, 0x90, 0x01, 0xCF, +0xE0, 0x30, 0xE5, 0x1F, 0xE0, 0x54, 0xDF, 0xF0, 0x90, 0x01, 0x34, 0x74, 0x20, 0xF0, 0x75, 0xA8, +0x00, 0x75, 0xE8, 0x00, 0x12, 0x52, 0x10, 0x90, 0x00, 0x03, 0xE0, 0x54, 0xFB, 0xF0, 0x12, 0x52, +0x81, 0x80, 0xFE, 0xE5, 0x2C, 0x30, 0xE6, 0x2D, 0x90, 0x01, 0x34, 0x74, 0x40, 0xF0, 0x90, 0x8B, +0x32, 0xE0, 0x30, 0xE0, 0x0C, 0x13, 0x13, 0x54, 0x3F, 0x30, 0xE0, 0x05, 0x90, 0x8B, 0x34, 0xE4, +0xF0, 0x90, 0x8B, 0x2C, 0xE0, 0xFF, 0x30, 0xE0, 0x0C, 0x13, 0x13, 0x54, 0x3F, 0x30, 0xE0, 0x05, +0x90, 0x8B, 0x2E, 0xE4, 0xF0, 0xE5, 0x2E, 0x20, 0xE0, 0x02, 0x61, 0xE7, 0x90, 0x8B, 0x08, 0x74, +0x01, 0xF0, 0x90, 0x01, 0x36, 0xF0, 0x90, 0x8B, 0x06, 0xE0, 0x60, 0x0F, 0xE4, 0xF0, 0x90, 0x05, +0x53, 0xE0, 0x44, 0x02, 0xF0, 0x90, 0x05, 0xFC, 0xE0, 0x04, 0xF0, 0x90, 0x8B, 0x32, 0xE0, 0x30, +0xE0, 0x2F, 0x90, 0x8B, 0x37, 0x74, 0x01, 0xF0, 0x90, 0x8B, 0x32, 0xE0, 0xFF, 0x13, 0x13, 0x54, +0x3F, 0x30, 0xE0, 0x1D, 0x90, 0x8B, 0x34, 0x74, 0x01, 0xF0, 0xB1, 0x39, 0x90, 0x8B, 0x33, 0xE0, +0x64, 0x03, 0x60, 0x0D, 0x7F, 0x01, 0x12, 0x4D, 0xE0, 0xEF, 0x60, 0x05, 0x7F, 0x04, 0x12, 0x4E, +0x89, 0x90, 0x8B, 0x2C, 0xE0, 0xFF, 0x30, 0xE0, 0x56, 0x13, 0x13, 0x54, 0x3F, 0x30, 0xE0, 0x4F, +0x90, 0x8B, 0x2E, 0x74, 0x01, 0xF0, 0xB1, 0x39, 0xE4, 0xFF, 0x12, 0x4D, 0xE0, 0xEF, 0x60, 0x3F, +0xB1, 0xF0, 0x90, 0x05, 0x22, 0x74, 0xFF, 0xF0, 0x90, 0x8B, 0x2D, 0xE0, 0xFF, 0x64, 0x06, 0x60, +0x2E, 0xEF, 0xB4, 0x04, 0x02, 0x80, 0x07, 0x90, 0x8B, 0x2D, 0xE0, 0xB4, 0x05, 0x04, 0xE4, 0xFF, +0x80, 0x14, 0x90, 0x8B, 0x2D, 0xE0, 0xB4, 0x03, 0x04, 0x7F, 0x01, 0x80, 0x09, 0x90, 0x8B, 0x2D, +0xE0, 0xB4, 0x02, 0x05, 0x7F, 0x01, 0x12, 0x7B, 0x49, 0x90, 0x05, 0x22, 0x74, 0xFF, 0xF0, 0x12, +0x43, 0xE7, 0x90, 0x8B, 0x08, 0xE4, 0xF0, 0xE5, 0x2E, 0x30, 0xE1, 0x2F, 0x90, 0x01, 0x36, 0x74, +0x02, 0xF0, 0x43, 0x55, 0x40, 0x11, 0x85, 0x90, 0x8B, 0x37, 0xE0, 0xB4, 0x01, 0x09, 0x90, 0x05, +0x22, 0xE4, 0xF0, 0x90, 0x8B, 0x37, 0xF0, 0x90, 0x8B, 0x2C, 0xE0, 0x30, 0xE0, 0x0D, 0xE4, 0xFF, +0x12, 0x4D, 0xE0, 0xEF, 0x60, 0x05, 0x90, 0x05, 0x22, 0xE4, 0xF0, 0xE5, 0x2E, 0x30, 0xE2, 0x16, +0x90, 0x01, 0x36, 0x74, 0x04, 0xF0, 0x90, 0x8B, 0x2C, 0xE0, 0x30, 0xE0, 0x06, 0xA3, 0xE0, 0x64, +0x06, 0x60, 0x03, 0x12, 0x46, 0xB3, 0xE5, 0x2E, 0x30, 0xE3, 0x38, 0x90, 0x01, 0x36, 0x74, 0x08, +0xF0, 0xE5, 0x21, 0x64, 0x01, 0x70, 0x2C, 0xE5, 0x24, 0x60, 0x28, 0x90, 0x01, 0x57, 0xE4, 0xF0, +0x90, 0x01, 0x3C, 0x74, 0x02, 0xF0, 0x90, 0x8B, 0x3D, 0xE4, 0xF0, 0x90, 0x8B, 0x11, 0xE0, 0x90, +0x8B, 0x3E, 0xF0, 0xE4, 0xFB, 0xFD, 0x7F, 0x54, 0x7E, 0x01, 0x12, 0x4B, 0x6C, 0x90, 0x01, 0x57, +0x74, 0x05, 0xF0, 0xE5, 0x2E, 0x30, 0xE4, 0x2B, 0x90, 0x01, 0x36, 0x74, 0x10, 0xF0, 0xE5, 0x21, +0xB4, 0x01, 0x20, 0xE5, 0x24, 0x60, 0x1C, 0x90, 0x01, 0x57, 0xE4, 0xF0, 0x90, 0x01, 0x3C, 0x74, +0x02, 0xF0, 0x90, 0x8B, 0x1B, 0xE4, 0xF0, 0x53, 0x25, 0xFD, 0xE5, 0x25, 0x54, 0x07, 0x70, 0x03, +0x12, 0x4A, 0xFC, 0xE5, 0x2E, 0x30, 0xE5, 0x1F, 0x90, 0x01, 0x36, 0x74, 0x20, 0xF0, 0xE5, 0x21, +0xB4, 0x01, 0x14, 0xE5, 0x24, 0x60, 0x10, 0x90, 0x8B, 0x1A, 0xE0, 0x64, 0x02, 0x60, 0x05, 0x12, +0x4A, 0x97, 0x80, 0x03, 0x12, 0x49, 0x49, 0xE5, 0x2E, 0x30, 0xE6, 0x1B, 0x90, 0x01, 0x36, 0x74, +0x40, 0xF0, 0xE5, 0x21, 0xB4, 0x01, 0x10, 0xE5, 0x24, 0x60, 0x0C, 0x53, 0x25, 0xFE, 0xE5, 0x25, +0x54, 0x07, 0x70, 0x03, 0x12, 0x4A, 0xFC, 0xE5, 0x2F, 0x30, 0xE1, 0x27, 0x90, 0x01, 0x37, 0x74, +0x02, 0xF0, 0x90, 0x8B, 0x2C, 0xE0, 0x30, 0xE0, 0x17, 0xE4, 0xFF, 0x12, 0x4D, 0xE0, 0xEF, 0x60, +0x07, 0x12, 0x48, 0xFE, 0xD1, 0x20, 0x80, 0x0B, 0x90, 0x8B, 0x31, 0x74, 0x01, 0xF0, 0x80, 0x03, +0x12, 0x48, 0xFE, 0x74, 0xF3, 0x04, 0x90, 0x01, 0xC4, 0xF0, 0x74, 0x60, 0xA3, 0xF0, 0xD0, 0x07, +0xD0, 0x06, 0xD0, 0x05, 0xD0, 0x04, 0xD0, 0x03, 0xD0, 0x02, 0xD0, 0x01, 0xD0, 0x00, 0xD0, 0xD0, +0xD0, 0x82, 0xD0, 0x83, 0xD0, 0xF0, 0xD0, 0xE0, 0x32, 0xE4, 0x90, 0x8B, 0x3D, 0xF0, 0x90, 0x05, +0x58, 0xE0, 0xFF, 0x90, 0x8B, 0x38, 0xE0, 0x2F, 0x24, 0xFE, 0x90, 0x8B, 0x3E, 0xF0, 0xE4, 0xFB, +0xFD, 0x7F, 0x50, 0x7E, 0x01, 0x12, 0x4B, 0x6C, 0x90, 0x01, 0x53, 0x74, 0x05, 0xF0, 0x22, 0x90, +0x8A, 0xC5, 0xE0, 0x54, 0xF0, 0x44, 0x03, 0xF0, 0x54, 0x0F, 0x44, 0x80, 0xF0, 0x7B, 0x00, 0x7A, +0x00, 0x79, 0x56, 0x90, 0x8B, 0x48, 0x12, 0x43, 0x8B, 0x0B, 0x7A, 0x8A, 0x79, 0xC5, 0xD3, 0x10, +0xAF, 0x01, 0xC3, 0xC0, 0xD0, 0x90, 0x8B, 0x45, 0x12, 0x43, 0x8B, 0x90, 0x8B, 0x53, 0xE0, 0xFF, +0x04, 0xF0, 0x90, 0x00, 0x01, 0xEF, 0x12, 0x42, 0x5F, 0x7F, 0xAF, 0x7E, 0x01, 0xD1, 0x8A, 0xEF, +0x60, 0x49, 0x90, 0x8B, 0x45, 0x12, 0x43, 0x6B, 0x8B, 0x1D, 0x8A, 0x1E, 0x89, 0x1F, 0x75, 0x20, +0x02, 0x7B, 0x01, 0x7A, 0x01, 0x79, 0xA0, 0x12, 0x5F, 0x57, 0x90, 0x8B, 0x48, 0x12, 0x43, 0x6B, +0x8B, 0x1D, 0x8A, 0x1E, 0x89, 0x1F, 0x90, 0x8B, 0x45, 0x12, 0x43, 0x6B, 0x12, 0x29, 0xD9, 0xFF, +0xC4, 0x54, 0x0F, 0xF5, 0x20, 0x7B, 0x01, 0x7A, 0x01, 0x79, 0xA2, 0x12, 0x5F, 0x57, 0x90, 0x01, +0xAF, 0x74, 0xFF, 0xF0, 0x90, 0x01, 0xCB, 0xE0, 0x64, 0x80, 0xF0, 0xD0, 0xD0, 0x92, 0xAF, 0x22, +0x90, 0x8B, 0x2C, 0xE0, 0xFF, 0xC4, 0x13, 0x13, 0x54, 0x03, 0x30, 0xE0, 0x0B, 0xA3, 0xE0, 0x64, +0x06, 0x60, 0x05, 0x7F, 0x06, 0x12, 0x7B, 0x49, 0x90, 0x8B, 0x2D, 0xE0, 0x64, 0x06, 0x60, 0x02, +0xD1, 0x13, 0x22, 0x90, 0x8B, 0x31, 0xE0, 0xB4, 0x01, 0x05, 0xE4, 0xF0, 0x12, 0x48, 0xFE, 0x22, +0x90, 0x8B, 0x2D, 0xE0, 0x64, 0x06, 0x60, 0x3C, 0xE5, 0x22, 0x54, 0x0F, 0x14, 0x60, 0x2E, 0x14, +0x60, 0x1E, 0x24, 0xFE, 0x60, 0x0E, 0x24, 0xF8, 0x70, 0x2A, 0xE4, 0x90, 0x8B, 0x2D, 0xF0, 0x90, +0x05, 0x22, 0xF0, 0x22, 0x90, 0x8B, 0x2D, 0x74, 0x01, 0xF0, 0x90, 0x05, 0x22, 0xE4, 0xF0, 0x22, +0x90, 0x8B, 0x2D, 0x74, 0x03, 0xF0, 0x90, 0x05, 0x22, 0x74, 0xFF, 0xF0, 0x22, 0x90, 0x01, 0xC6, +0xE0, 0x44, 0x08, 0xF0, 0x22, 0xAE, 0x07, 0xE4, 0xFF, 0x12, 0x4D, 0xE0, 0xEF, 0x60, 0x18, 0x90, +0x8B, 0x2C, 0xE0, 0xC4, 0x13, 0x13, 0x54, 0x03, 0x20, 0xE0, 0x0C, 0xAF, 0x06, 0x7D, 0x01, 0x12, +0x45, 0xA2, 0xD1, 0x20, 0x7F, 0x01, 0x22, 0x7F, 0x00, 0x22, 0x90, 0x8B, 0x4B, 0xEE, 0xF0, 0xA3, +0xEF, 0xF0, 0xE4, 0xA3, 0xF0, 0xA3, 0xF0, 0x90, 0x8B, 0x4B, 0xE0, 0xFE, 0xA3, 0xE0, 0xF5, 0x82, +0x8E, 0x83, 0xE0, 0x60, 0x2C, 0xC3, 0x90, 0x8B, 0x4E, 0xE0, 0x94, 0xE8, 0x90, 0x8B, 0x4D, 0xE0, +0x94, 0x03, 0x40, 0x0A, 0x90, 0x01, 0xC6, 0xE0, 0x44, 0x10, 0xF0, 0x7F, 0x00, 0x22, 0x90, 0x8B, +0x4D, 0xE4, 0x75, 0xF0, 0x01, 0x12, 0x42, 0x81, 0x7F, 0x0A, 0x7E, 0x00, 0x12, 0x37, 0x54, 0x80, +0xC6, 0x7F, 0x01, 0x22, 0x75, 0x28, 0x33, 0xE4, 0xF5, 0x29, 0x75, 0x2A, 0x07, 0xF5, 0x2B, 0x90, +0x01, 0x30, 0xE5, 0x28, 0xF0, 0xA3, 0xE5, 0x29, 0xF0, 0xA3, 0xE5, 0x2A, 0xF0, 0xA3, 0xE5, 0x2B, +0xF0, 0x22, 0x75, 0x30, 0x1F, 0x75, 0x31, 0x01, 0x43, 0x31, 0x10, 0xE4, 0xF5, 0x32, 0x90, 0x01, +0x38, 0xE5, 0x30, 0xF0, 0xA3, 0xE5, 0x31, 0xF0, 0xA3, 0xE5, 0x32, 0xF0, 0x22, 0x22, 0x90, 0x00, +0x02, 0xE0, 0x54, 0xE0, 0x7F, 0x01, 0x60, 0x02, 0x7F, 0x00, 0x22, 0x90, 0x00, 0xF3, 0xE0, 0x7F, +0x00, 0x30, 0xE3, 0x02, 0x7F, 0x01, 0x22, 0x90, 0x8B, 0x09, 0xE0, 0xB4, 0x01, 0x0C, 0x90, 0x00, +0xF2, 0xE0, 0x30, 0xE7, 0x05, 0x7E, 0xFD, 0x7F, 0x33, 0x22, 0x7E, 0xFD, 0x7F, 0x2F, 0x22, 0x90, +0x00, 0xF3, 0xE0, 0x30, 0xE2, 0x0D, 0x90, 0x05, 0x41, 0x74, 0x10, 0xF0, 0x90, 0x05, 0x5A, 0xF0, +0xA3, 0xE4, 0xF0, 0x22, 0x90, 0x01, 0x64, 0x74, 0xA0, 0xF0, 0x22, 0xC0, 0xE0, 0xC0, 0x83, 0xC0, +0x82, 0xC0, 0xD0, 0x75, 0xD0, 0x00, 0xC0, 0x05, 0xC0, 0x06, 0xC0, 0x07, 0x7D, 0x5B, 0x90, 0x01, +0xC4, 0xED, 0xF0, 0x74, 0x67, 0xFF, 0xA3, 0xF0, 0x53, 0x91, 0xEF, 0x90, 0x00, 0x51, 0xE0, 0xFE, +0x90, 0x00, 0x55, 0xE0, 0x5E, 0xF5, 0x3D, 0x90, 0x00, 0x52, 0xE0, 0xFE, 0x90, 0x00, 0x56, 0xE0, +0x5E, 0xF5, 0x3E, 0xE5, 0x3D, 0x30, 0xE4, 0x06, 0x90, 0x00, 0x55, 0x74, 0x10, 0xF0, 0xE5, 0x3D, +0x30, 0xE5, 0x06, 0x90, 0x00, 0x55, 0x74, 0x20, 0xF0, 0xE5, 0x3D, 0x30, 0xE6, 0x06, 0x90, 0x00, +0x55, 0x74, 0x40, 0xF0, 0xE5, 0x3D, 0x30, 0xE7, 0x06, 0x90, 0x00, 0x55, 0x74, 0x80, 0xF0, 0xE5, +0x3E, 0x30, 0xE0, 0x06, 0x90, 0x00, 0x56, 0x74, 0x01, 0xF0, 0xE5, 0x3E, 0x30, 0xE1, 0x06, 0x90, +0x00, 0x56, 0x74, 0x02, 0xF0, 0xE5, 0x3E, 0x30, 0xE2, 0x06, 0x90, 0x00, 0x56, 0x74, 0x04, 0xF0, +0xE5, 0x3E, 0x30, 0xE3, 0x06, 0x90, 0x00, 0x56, 0x74, 0x08, 0xF0, 0x90, 0x01, 0xC4, 0xED, 0xF0, +0xA3, 0xEF, 0xF0, 0xD0, 0x07, 0xD0, 0x06, 0xD0, 0x05, 0xD0, 0xD0, 0xD0, 0x82, 0xD0, 0x83, 0xD0, +0xE0, 0x32, 0xEF, 0xC3, 0x94, 0x20, 0x50, 0x39, 0xEF, 0x30, 0xE0, 0x17, 0xED, 0xC4, 0x54, 0xF0, +0xFD, 0xEF, 0xC3, 0x13, 0xFE, 0x24, 0xA4, 0xF5, 0x82, 0xE4, 0x34, 0x04, 0xF5, 0x83, 0xE0, 0x54, +0x0F, 0x80, 0x10, 0xEF, 0xC3, 0x13, 0xFE, 0x24, 0xA4, 0xF5, 0x82, 0xE4, 0x34, 0x04, 0xF5, 0x83, +0xE0, 0x54, 0xF0, 0xF0, 0x74, 0xA4, 0x2E, 0xF5, 0x82, 0xE4, 0x34, 0x04, 0xF5, 0x83, 0xE0, 0x4D, +0xF0, 0x22, 0xE4, 0x90, 0x8A, 0xCF, 0xF0, 0x90, 0x8A, 0xCF, 0xE0, 0xFF, 0xC3, 0x94, 0x20, 0x40, +0x02, 0xC1, 0xCD, 0x75, 0xF0, 0x09, 0xEF, 0x90, 0x87, 0x2A, 0x12, 0x43, 0x5F, 0xE0, 0x64, 0x01, +0x60, 0x02, 0xC1, 0xC5, 0x90, 0x8A, 0xCF, 0xE0, 0x25, 0xE0, 0x24, 0xC0, 0xF5, 0x82, 0xE4, 0x34, +0x85, 0xF5, 0x83, 0xE0, 0xFC, 0xA3, 0xE0, 0xD3, 0x94, 0x00, 0xEC, 0x94, 0x00, 0x50, 0x02, 0xC1, +0xC5, 0xEF, 0x75, 0xF0, 0x0A, 0xA4, 0x24, 0x00, 0xF9, 0x74, 0x84, 0x35, 0xF0, 0x75, 0x12, 0x01, +0xF5, 0x13, 0x89, 0x14, 0x90, 0x8A, 0xCF, 0xE0, 0x25, 0xE0, 0x24, 0xC0, 0xF5, 0x82, 0xE4, 0x34, +0x85, 0xF5, 0x83, 0xE0, 0xFD, 0xA3, 0xE0, 0x90, 0x8A, 0xD4, 0xCD, 0xF0, 0xA3, 0xED, 0xF0, 0xEF, +0x25, 0xE0, 0x24, 0x63, 0xF5, 0x82, 0xE4, 0x34, 0x88, 0xF5, 0x83, 0xE0, 0xFF, 0xA3, 0xE0, 0x90, +0x8A, 0xD6, 0xCF, 0xF0, 0xA3, 0xEF, 0xF0, 0x90, 0x8A, 0xCF, 0xE0, 0xFE, 0x24, 0x84, 0xF5, 0x82, +0xE4, 0x34, 0x04, 0xF5, 0x83, 0xE0, 0x54, 0x3F, 0x90, 0x8A, 0xD0, 0xF0, 0xE0, 0xFD, 0x54, 0x1F, +0xA3, 0xF0, 0x75, 0xF0, 0x09, 0xEE, 0x90, 0x87, 0x27, 0x12, 0x43, 0x5F, 0xE0, 0x90, 0x8A, 0xD9, +0xF0, 0x90, 0x8A, 0xCF, 0xE0, 0xFB, 0x24, 0x64, 0xF5, 0x82, 0xE4, 0x34, 0x8A, 0xF5, 0x83, 0xE0, +0xC3, 0x94, 0x05, 0x40, 0x02, 0x61, 0x1A, 0x90, 0x8A, 0xD9, 0xE0, 0xFE, 0x90, 0x8A, 0xD1, 0xE0, +0x9E, 0x40, 0x13, 0x90, 0x8A, 0xD9, 0xE0, 0x90, 0x8A, 0xD1, 0xF0, 0xED, 0x54, 0x40, 0xFD, 0x90, +0x8A, 0xD0, 0xF0, 0xEE, 0x4D, 0xF0, 0x90, 0x8A, 0xD1, 0xE0, 0xFF, 0x90, 0x41, 0x12, 0x93, 0xFE, +0x74, 0x23, 0x2B, 0xF5, 0x82, 0xE4, 0x34, 0x89, 0xF5, 0x83, 0xE0, 0xC3, 0x9E, 0x40, 0x06, 0xEF, +0x90, 0x40, 0xDA, 0x80, 0x07, 0x90, 0x8A, 0xD1, 0xE0, 0x90, 0x40, 0xF6, 0x93, 0x90, 0x8A, 0xD8, +0xF0, 0x90, 0x8A, 0xD8, 0xE0, 0x75, 0xF0, 0x06, 0xA4, 0x24, 0x50, 0xF9, 0x74, 0x40, 0x35, 0xF0, +0x75, 0x0F, 0xFF, 0xF5, 0x10, 0x89, 0x11, 0x90, 0x8A, 0xD0, 0xE0, 0x90, 0x41, 0xBA, 0x93, 0xFF, +0xD3, 0x90, 0x8A, 0xD7, 0xE0, 0x9F, 0x90, 0x8A, 0xD6, 0xE0, 0x94, 0x00, 0x40, 0x0C, 0x90, 0x8A, +0xCF, 0xE0, 0xFF, 0xE4, 0xFD, 0x12, 0x5D, 0xB4, 0xC1, 0x5B, 0x90, 0x8A, 0xCF, 0xE0, 0x25, 0xE0, +0x24, 0xE1, 0xF5, 0x82, 0xE4, 0x34, 0x86, 0xF5, 0x83, 0xE0, 0xFF, 0xA3, 0xE0, 0x90, 0x8A, 0xD2, +0xCF, 0xF0, 0xA3, 0xEF, 0xF0, 0xAB, 0x0F, 0xAA, 0x10, 0xA9, 0x11, 0x12, 0x29, 0xD9, 0xFF, 0x7E, +0x00, 0xAB, 0x12, 0xAA, 0x13, 0xA9, 0x14, 0x12, 0x42, 0x97, 0xFD, 0xAC, 0xF0, 0x12, 0x29, 0xF2, +0x90, 0x8A, 0xD2, 0xEE, 0x8F, 0xF0, 0x12, 0x42, 0x81, 0xAB, 0x0F, 0xAA, 0x10, 0xA9, 0x11, 0x90, +0x00, 0x01, 0x12, 0x42, 0x20, 0xFF, 0x7E, 0x00, 0xAB, 0x12, 0xAA, 0x13, 0xA9, 0x14, 0x90, 0x00, +0x02, 0x12, 0x42, 0xC2, 0xFD, 0xAC, 0xF0, 0x12, 0x29, 0xF2, 0x90, 0x8A, 0xD2, 0xEE, 0x8F, 0xF0, +0x12, 0x42, 0x81, 0xAB, 0x0F, 0xAA, 0x10, 0xA9, 0x11, 0x90, 0x00, 0x02, 0x12, 0x42, 0x20, 0xFF, +0x7E, 0x00, 0xAB, 0x12, 0xAA, 0x13, 0xA9, 0x14, 0x90, 0x00, 0x04, 0x12, 0x42, 0xC2, 0xFD, 0xAC, +0xF0, 0x12, 0x29, 0xF2, 0x90, 0x8A, 0xD2, 0xEE, 0x8F, 0xF0, 0x12, 0x42, 0x81, 0xAB, 0x0F, 0xAA, +0x10, 0xA9, 0x11, 0x90, 0x00, 0x03, 0x12, 0x42, 0x20, 0xFF, 0x7E, 0x00, 0xAB, 0x12, 0xAA, 0x13, +0xA9, 0x14, 0x90, 0x00, 0x06, 0x12, 0x42, 0xC2, 0xFD, 0xAC, 0xF0, 0x12, 0x29, 0xF2, 0x90, 0x8A, +0xD2, 0xEE, 0x8F, 0xF0, 0x12, 0x42, 0x81, 0xAB, 0x0F, 0xAA, 0x10, 0xA9, 0x11, 0x90, 0x00, 0x04, +0x12, 0x42, 0x20, 0xFF, 0x7E, 0x00, 0xAB, 0x12, 0xAA, 0x13, 0xA9, 0x14, 0x90, 0x00, 0x08, 0x12, +0x42, 0xC2, 0xFD, 0xAC, 0xF0, 0x12, 0x29, 0xF2, 0x90, 0x8A, 0xD2, 0xEE, 0x8F, 0xF0, 0x12, 0x42, +0x81, 0xAB, 0x0F, 0xAA, 0x10, 0xA9, 0x11, 0x90, 0x00, 0x05, 0x12, 0x42, 0x20, 0xFF, 0x7E, 0x00, +0x90, 0x8A, 0xD4, 0xE0, 0xFC, 0xA3, 0xE0, 0xFD, 0x12, 0x29, 0xF2, 0xD3, 0x90, 0x8A, 0xD3, 0xE0, +0x9F, 0x90, 0x8A, 0xD2, 0xE0, 0x9E, 0x40, 0x0C, 0xA3, 0xE0, 0x9F, 0xF0, 0x90, 0x8A, 0xD2, 0xE0, +0x9E, 0xF0, 0x80, 0x07, 0xE4, 0x90, 0x8A, 0xD2, 0xF0, 0xA3, 0xF0, 0x90, 0x8A, 0xD2, 0xE0, 0xFC, +0xA3, 0xE0, 0xFD, 0x90, 0x8A, 0xCF, 0xE0, 0xFF, 0x25, 0xE0, 0x24, 0xE1, 0xF5, 0x82, 0xE4, 0x34, +0x86, 0xF5, 0x83, 0xEC, 0xF0, 0xA3, 0xED, 0xF0, 0x90, 0x8A, 0xD0, 0xE0, 0x25, 0xE0, 0x24, 0x2E, +0xF5, 0x82, 0xE4, 0x34, 0x41, 0xF5, 0x83, 0xE4, 0x93, 0xFA, 0x74, 0x01, 0x93, 0xFB, 0xD3, 0xED, +0x9B, 0xEC, 0x9A, 0x40, 0x04, 0xD1, 0xCE, 0xC1, 0x29, 0x90, 0x8A, 0xD0, 0xE0, 0x25, 0xE0, 0x24, +0x66, 0xF5, 0x82, 0xE4, 0x34, 0x41, 0xF5, 0x83, 0xE4, 0x93, 0xFE, 0x74, 0x01, 0x93, 0xFF, 0xC3, +0x90, 0x8A, 0xD3, 0xE0, 0x9F, 0x90, 0x8A, 0xD2, 0xE0, 0x9E, 0x40, 0x02, 0xC1, 0x29, 0x90, 0x8A, +0xCF, 0xE0, 0xFF, 0x7D, 0x01, 0x12, 0x5D, 0xB4, 0xC1, 0x29, 0x90, 0x8A, 0xCF, 0xE0, 0xFF, 0x24, +0x64, 0xF5, 0x82, 0xE4, 0x34, 0x8A, 0xF5, 0x83, 0xE0, 0xFC, 0x64, 0x05, 0x60, 0x02, 0x81, 0xF8, +0x90, 0x87, 0x22, 0xE0, 0xFE, 0xB4, 0x03, 0x0B, 0x90, 0x8A, 0xD1, 0xE0, 0xC3, 0x94, 0x19, 0x40, +0x3D, 0x80, 0x2E, 0xEE, 0xB4, 0x02, 0x0B, 0x90, 0x8A, 0xD1, 0xE0, 0xC3, 0x94, 0x11, 0x40, 0x2E, +0x80, 0x1F, 0x90, 0x87, 0x22, 0xE0, 0xFE, 0xB4, 0x01, 0x0B, 0x90, 0x8A, 0xD1, 0xE0, 0xC3, 0x94, +0x0A, 0x40, 0x1B, 0x80, 0x0C, 0xEE, 0x70, 0x11, 0x90, 0x8A, 0xD1, 0xE0, 0xC3, 0x94, 0x03, 0x40, +0x0D, 0x90, 0x89, 0x43, 0x74, 0x01, 0xF0, 0x80, 0x05, 0xE4, 0x90, 0x89, 0x43, 0xF0, 0x90, 0x8A, +0xCF, 0xE0, 0xFE, 0x24, 0x43, 0xF5, 0x82, 0xE4, 0x34, 0x88, 0xF5, 0x83, 0xE0, 0x90, 0x8A, 0xDD, +0xF0, 0x74, 0x23, 0x2E, 0xF5, 0x82, 0xE4, 0x34, 0x89, 0xF5, 0x83, 0xE0, 0xFE, 0xC3, 0x94, 0x30, +0x50, 0x0A, 0xE4, 0x90, 0x8A, 0xDD, 0xF0, 0x74, 0x64, 0x2F, 0x81, 0xA3, 0x90, 0x89, 0x43, 0xE0, +0x64, 0x01, 0x60, 0x02, 0x81, 0x98, 0x90, 0x8A, 0xCF, 0xE0, 0x24, 0x44, 0xF5, 0x82, 0xE4, 0x34, +0x89, 0xF5, 0x83, 0xE0, 0x64, 0x0A, 0x60, 0x5B, 0x90, 0x8A, 0xCF, 0xE0, 0xFF, 0xEE, 0x24, 0x05, +0xFB, 0xE4, 0x33, 0xFA, 0x74, 0x21, 0x2F, 0xF5, 0x82, 0xE4, 0x34, 0x86, 0xF5, 0x83, 0xE0, 0xFF, +0xD3, 0x9B, 0xEA, 0x64, 0x80, 0xF8, 0x74, 0x80, 0x98, 0x50, 0x38, 0x90, 0x8A, 0xCF, 0xE0, 0xFE, +0xEF, 0x24, 0x05, 0xFB, 0xE4, 0x33, 0xFA, 0x74, 0x23, 0x2E, 0xF5, 0x82, 0xE4, 0x34, 0x89, 0xF5, +0x83, 0xE0, 0xD3, 0x9B, 0xEA, 0x64, 0x80, 0xF8, 0x74, 0x80, 0x98, 0x50, 0x16, 0x90, 0x8A, 0xCF, +0xE0, 0x24, 0x84, 0xF5, 0x82, 0xE4, 0x34, 0x8A, 0xF5, 0x83, 0xE0, 0xFF, 0x90, 0x8A, 0xD1, 0xE0, +0x6F, 0x60, 0x56, 0x90, 0x8A, 0xCF, 0xE0, 0x24, 0x23, 0xF5, 0x82, 0xE4, 0x34, 0x89, 0xF5, 0x83, +0xE0, 0xFF, 0xD3, 0x94, 0x42, 0x40, 0x08, 0x90, 0x8A, 0xDD, 0x74, 0x05, 0xF0, 0x80, 0x11, 0xEF, +0xD3, 0x94, 0x39, 0x90, 0x8A, 0xDD, 0x40, 0x05, 0x74, 0x03, 0xF0, 0x80, 0x03, 0x74, 0x01, 0xF0, +0x90, 0x8A, 0xCF, 0xE0, 0xFF, 0x24, 0x23, 0xF5, 0x82, 0xE4, 0x34, 0x89, 0xF5, 0x83, 0xE0, 0xFE, +0x74, 0x21, 0x2F, 0xF5, 0x82, 0xE4, 0x34, 0x86, 0xF5, 0x83, 0xEE, 0xF0, 0x90, 0x8A, 0xCF, 0xE0, +0x24, 0x44, 0xF5, 0x82, 0xE4, 0x34, 0x89, 0x80, 0x2F, 0x90, 0x8A, 0xCF, 0xE0, 0xFF, 0x24, 0x64, +0xF5, 0x82, 0xE4, 0x34, 0x8A, 0xF5, 0x83, 0xE4, 0xF0, 0x74, 0x44, 0x2F, 0xF5, 0x82, 0xE4, 0x34, +0x89, 0xF5, 0x83, 0xE0, 0x04, 0xF0, 0x80, 0x14, 0xE4, 0x90, 0x8A, 0xDD, 0xF0, 0x90, 0x8A, 0xCF, +0xE0, 0x24, 0x64, 0xF5, 0x82, 0xE4, 0x34, 0x8A, 0xF5, 0x83, 0xE4, 0xF0, 0x90, 0x8A, 0xD1, 0xE0, +0xFE, 0x90, 0x8A, 0xCF, 0xE0, 0xFF, 0x24, 0x84, 0xF5, 0x82, 0xE4, 0x34, 0x8A, 0xF5, 0x83, 0xEE, +0xF0, 0x90, 0x8A, 0xDD, 0xE0, 0xFE, 0x74, 0x43, 0x2F, 0xF5, 0x82, 0xE4, 0x34, 0x88, 0xF5, 0x83, +0xEE, 0xF0, 0x75, 0xF0, 0x09, 0xEF, 0x90, 0x87, 0x2B, 0x12, 0x43, 0x5F, 0xE0, 0xB4, 0x01, 0x11, +0xE4, 0x90, 0x8A, 0xDD, 0xF0, 0x74, 0x64, 0x2F, 0xF5, 0x82, 0xE4, 0x34, 0x8A, 0xF5, 0x83, 0xE4, +0xF0, 0x90, 0x8A, 0xDD, 0xE0, 0xFD, 0xC1, 0x27, 0xEC, 0x64, 0x06, 0x60, 0x02, 0xC1, 0x29, 0x90, +0x8A, 0xD2, 0xF0, 0xA3, 0xF0, 0x90, 0x41, 0xDB, 0x93, 0xFF, 0x7E, 0x00, 0x90, 0x8A, 0xD4, 0xE0, +0xFC, 0xA3, 0xE0, 0xFD, 0x12, 0x29, 0xF2, 0x90, 0x8A, 0xDB, 0xEE, 0xF0, 0xA3, 0xEF, 0xF0, 0x90, +0x8A, 0xCF, 0xE0, 0x24, 0x43, 0xF5, 0x82, 0xE4, 0x34, 0x88, 0xF5, 0x83, 0xE0, 0x90, 0x8A, 0xDD, +0xF0, 0xE4, 0x90, 0x8A, 0xDA, 0xF0, 0x90, 0x8A, 0xDA, 0xE0, 0xFF, 0xD3, 0x94, 0x04, 0x50, 0x47, +0xAB, 0x12, 0xAA, 0x13, 0xA9, 0x14, 0x75, 0xF0, 0x02, 0xEF, 0xA4, 0xF5, 0x82, 0x85, 0xF0, 0x83, +0x12, 0x42, 0xC2, 0xFD, 0xAC, 0xF0, 0xEF, 0x90, 0x41, 0xD6, 0x93, 0xFF, 0x7E, 0x00, 0x12, 0x29, +0xF2, 0x90, 0x8A, 0xD2, 0xEE, 0x8F, 0xF0, 0x12, 0x42, 0x81, 0x90, 0x8A, 0xDB, 0xE0, 0xFE, 0xA3, +0xE0, 0xFF, 0xD3, 0x90, 0x8A, 0xD3, 0xE0, 0x9F, 0x90, 0x8A, 0xD2, 0xE0, 0x9E, 0x50, 0x08, 0x90, +0x8A, 0xDA, 0xE0, 0x04, 0xF0, 0x80, 0xAF, 0x90, 0x8A, 0xDA, 0xE0, 0xC3, 0x13, 0xF0, 0x90, 0x8A, +0xDD, 0xE0, 0xFF, 0xB4, 0x01, 0x0D, 0x90, 0x8A, 0xDA, 0xE0, 0x70, 0x5D, 0x90, 0x8A, 0xDD, 0x04, +0xF0, 0x80, 0x5B, 0xEF, 0xB4, 0x03, 0x1D, 0x90, 0x8A, 0xDA, 0xE0, 0xFF, 0x70, 0x08, 0x90, 0x8A, +0xDD, 0x74, 0x03, 0xF0, 0x80, 0x48, 0xEF, 0xB4, 0x01, 0x08, 0x90, 0x8A, 0xDD, 0x74, 0x01, 0xF0, +0x80, 0x3C, 0x80, 0x35, 0x90, 0x8A, 0xDD, 0xE0, 0x64, 0x05, 0x70, 0x32, 0x90, 0x8A, 0xDA, 0xE0, +0xFF, 0x70, 0x08, 0x90, 0x8A, 0xDD, 0x74, 0x05, 0xF0, 0x80, 0x0F, 0xEF, 0x90, 0x8A, 0xDD, 0xB4, +0x01, 0x05, 0x74, 0x03, 0xF0, 0x80, 0x03, 0x74, 0x01, 0xF0, 0xD3, 0x90, 0x8A, 0xD7, 0xE0, 0x94, +0x03, 0x90, 0x8A, 0xD6, 0xE0, 0x94, 0x00, 0x40, 0x05, 0xE4, 0x90, 0x8A, 0xDD, 0xF0, 0xD3, 0x90, +0x8A, 0xD7, 0xE0, 0x94, 0x03, 0x90, 0x8A, 0xD6, 0xE0, 0x94, 0x00, 0x40, 0x05, 0xE4, 0x90, 0x8A, +0xDD, 0xF0, 0x90, 0x8A, 0xDD, 0xE0, 0xFD, 0x90, 0x8A, 0xCF, 0xE0, 0xFF, 0x24, 0x43, 0xF5, 0x82, +0xE4, 0x34, 0x88, 0xF5, 0x83, 0xED, 0xF0, 0x11, 0x02, 0x90, 0x8A, 0xCF, 0xE0, 0xFF, 0x24, 0x64, +0xF5, 0x82, 0xE4, 0x34, 0x8A, 0xF5, 0x83, 0xE0, 0xD3, 0x94, 0x05, 0x50, 0x0F, 0x74, 0x64, 0x2F, +0xF5, 0x82, 0xE4, 0x34, 0x8A, 0xF5, 0x83, 0xE0, 0x04, 0xF0, 0x80, 0x0F, 0x90, 0x8A, 0xCF, 0xE0, +0x24, 0x64, 0xF5, 0x82, 0xE4, 0x34, 0x8A, 0xF5, 0x83, 0xE4, 0xF0, 0xAB, 0x12, 0xAA, 0x13, 0xA9, +0x14, 0xE4, 0xF5, 0xF0, 0x12, 0x42, 0xFA, 0xAB, 0x12, 0xAA, 0x13, 0xA9, 0x14, 0x90, 0x00, 0x02, +0xE4, 0xF5, 0xF0, 0x12, 0x43, 0x19, 0x90, 0x00, 0x04, 0xE4, 0xF5, 0xF0, 0x12, 0x43, 0x19, 0x90, +0x00, 0x06, 0xE4, 0xF5, 0xF0, 0x12, 0x43, 0x19, 0x90, 0x00, 0x08, 0xE4, 0xF5, 0xF0, 0x12, 0x43, +0x19, 0x90, 0x8A, 0xCF, 0xE0, 0xFF, 0x25, 0xE0, 0x24, 0xC0, 0xF5, 0x82, 0xE4, 0x34, 0x85, 0xF5, +0x83, 0xE4, 0xF0, 0xA3, 0xF0, 0xEF, 0x25, 0xE0, 0x24, 0x63, 0xF5, 0x82, 0xE4, 0x34, 0x88, 0xF5, +0x83, 0xE4, 0xF0, 0xA3, 0xF0, 0xEF, 0x25, 0xE0, 0x24, 0xA3, 0xF5, 0x82, 0xE4, 0x34, 0x88, 0xF5, +0x83, 0xE4, 0xF0, 0xA3, 0xF0, 0x90, 0x8A, 0xCF, 0xE0, 0x04, 0xF0, 0x01, 0x47, 0x22, 0xAD, 0x07, +0x74, 0x84, 0x2D, 0xF5, 0x82, 0xE4, 0x34, 0x04, 0xF5, 0x83, 0xE0, 0x54, 0x7F, 0x90, 0x8A, 0xDE, +0xF0, 0xE0, 0xF9, 0x54, 0x1F, 0xA3, 0xF0, 0x75, 0xF0, 0x09, 0xED, 0x90, 0x87, 0x27, 0x12, 0x43, +0x5F, 0xE0, 0xFF, 0x90, 0x8A, 0xE1, 0xF0, 0xED, 0x25, 0xE0, 0x24, 0x81, 0xF5, 0x82, 0xE4, 0x34, +0x86, 0xF5, 0x83, 0xE0, 0xFB, 0xA3, 0xE0, 0x90, 0x8A, 0xE2, 0xCB, 0xF0, 0xA3, 0xEB, 0xF0, 0xED, +0x25, 0xE0, 0x24, 0xE4, 0xF5, 0x82, 0xE4, 0x34, 0x89, 0xF5, 0x83, 0xE0, 0xFB, 0xA3, 0xE0, 0x90, +0x8A, 0xE4, 0xCB, 0xF0, 0xA3, 0xEB, 0xF0, 0x90, 0x8A, 0xDF, 0xE0, 0xFE, 0x25, 0xE0, 0x24, 0x2E, +0xF5, 0x82, 0xE4, 0x34, 0x41, 0xF5, 0x83, 0xE4, 0x93, 0xFA, 0x74, 0x01, 0x93, 0xFB, 0xED, 0x25, +0xE0, 0x24, 0xE1, 0xF5, 0x82, 0xE4, 0x34, 0x86, 0xF5, 0x83, 0xEA, 0xF0, 0xA3, 0xEB, 0xF0, 0xEE, +0xC3, 0x9F, 0x40, 0x03, 0x02, 0x70, 0x12, 0x90, 0x8A, 0xDF, 0xE0, 0xFF, 0x74, 0xA5, 0x2D, 0xF5, +0x82, 0xE4, 0x34, 0x8A, 0xF5, 0x83, 0xEF, 0xF0, 0xEF, 0x04, 0x90, 0x8A, 0xE0, 0xF0, 0x90, 0x8A, +0xE1, 0xE0, 0xFF, 0x90, 0x8A, 0xE0, 0xE0, 0xFE, 0xD3, 0x9F, 0x40, 0x03, 0x02, 0x70, 0x4C, 0xEE, +0xC3, 0x94, 0x10, 0x40, 0x21, 0xEE, 0x24, 0xF0, 0xFF, 0x74, 0x01, 0x7E, 0x00, 0xA8, 0x07, 0x08, +0x80, 0x05, 0xC3, 0x33, 0xCE, 0x33, 0xCE, 0xD8, 0xF9, 0xFF, 0x90, 0x8A, 0xE2, 0xE0, 0x5E, 0xFE, +0xA3, 0xE0, 0x5F, 0x4E, 0x70, 0x27, 0x90, 0x8A, 0xE0, 0xE0, 0xFF, 0xC3, 0x94, 0x10, 0x50, 0x59, +0x74, 0x01, 0x7E, 0x00, 0xA8, 0x07, 0x08, 0x80, 0x05, 0xC3, 0x33, 0xCE, 0x33, 0xCE, 0xD8, 0xF9, +0xFF, 0x90, 0x8A, 0xE4, 0xE0, 0x5E, 0xFE, 0xA3, 0xE0, 0x5F, 0x4E, 0x60, 0x3C, 0x90, 0x8A, 0xE0, +0xE0, 0xB4, 0x11, 0x0D, 0x90, 0x8A, 0xE3, 0xE0, 0x30, 0xE7, 0x06, 0x90, 0x8A, 0xE0, 0x74, 0x17, +0xF0, 0x90, 0x8A, 0xE0, 0xE0, 0xFF, 0x64, 0x13, 0x60, 0x04, 0xEF, 0xB4, 0x12, 0x0D, 0x90, 0x8A, +0xE2, 0xE0, 0x30, 0xE0, 0x06, 0x90, 0x8A, 0xE0, 0x74, 0x18, 0xF0, 0x90, 0x8A, 0xE0, 0xE0, 0x90, +0x8A, 0xDF, 0xF0, 0x90, 0x8A, 0xDE, 0xF0, 0x80, 0x43, 0x90, 0x8A, 0xE0, 0xE0, 0x04, 0xF0, 0x02, +0x6F, 0x6E, 0x90, 0x8A, 0xE1, 0xE0, 0xFC, 0x90, 0x8A, 0xDF, 0xE0, 0xFF, 0x6C, 0x70, 0x71, 0x74, +0xA5, 0x2D, 0xF5, 0x82, 0xE4, 0x34, 0x8A, 0xF5, 0x83, 0xEF, 0xF0, 0x75, 0xF0, 0x09, 0xED, 0x90, +0x87, 0x29, 0x12, 0x43, 0x5F, 0xE0, 0xB4, 0x01, 0x10, 0xE9, 0x20, 0xE6, 0x0C, 0x90, 0x8A, 0xDF, +0xE0, 0x44, 0x40, 0x90, 0x8A, 0xDE, 0xF0, 0x80, 0x03, 0xAF, 0x01, 0x22, 0x90, 0x8A, 0xDF, 0xE0, +0xFF, 0x25, 0xE0, 0x24, 0x66, 0xF5, 0x82, 0xE4, 0x34, 0x41, 0xF5, 0x83, 0xE4, 0x93, 0xFA, 0x74, +0x01, 0x93, 0xFB, 0xEF, 0x25, 0xE0, 0x24, 0x2E, 0xF5, 0x82, 0xE4, 0x34, 0x41, 0xF5, 0x83, 0x74, +0x01, 0x93, 0x2B, 0xFF, 0xE4, 0x93, 0x3A, 0xC3, 0x13, 0xFE, 0xEF, 0x13, 0xFF, 0xED, 0x25, 0xE0, +0x24, 0xE1, 0xF5, 0x82, 0xE4, 0x34, 0x86, 0xF5, 0x83, 0xEE, 0xF0, 0xA3, 0xEF, 0xF0, 0x80, 0x66, +0x90, 0x8A, 0xDF, 0xE0, 0xD3, 0x9C, 0x40, 0x5E, 0x90, 0x8A, 0xE1, 0xE0, 0xFF, 0x74, 0xA5, 0x2D, +0xF5, 0x82, 0xE4, 0x34, 0x8A, 0xF5, 0x83, 0xEF, 0xF0, 0x90, 0x8A, 0xDF, 0xEF, 0xF0, 0x90, 0x8A, +0xDE, 0xF0, 0xFC, 0xA3, 0xE0, 0xFF, 0x25, 0xE0, 0x24, 0x66, 0xF5, 0x82, 0xE4, 0x34, 0x41, 0xF5, +0x83, 0xE4, 0x93, 0xFA, 0x74, 0x01, 0x93, 0xFB, 0xEF, 0x25, 0xE0, 0x24, 0x2E, 0xF5, 0x82, 0xE4, +0x34, 0x41, 0xF5, 0x83, 0x74, 0x01, 0x93, 0x2B, 0xFF, 0xE4, 0x93, 0x3A, 0xC3, 0x13, 0xFE, 0xEF, +0x13, 0xFF, 0xED, 0x25, 0xE0, 0x24, 0xE1, 0xF5, 0x82, 0xE4, 0x34, 0x86, 0xF5, 0x83, 0xEE, 0xF0, +0xA3, 0xEF, 0xF0, 0xAF, 0x04, 0x22, 0x74, 0x01, 0x2D, 0xF5, 0x82, 0xE4, 0x34, 0x86, 0xF5, 0x83, +0xE4, 0xF0, 0xAF, 0x05, 0x90, 0x8A, 0xDE, 0xE0, 0x44, 0x80, 0xFD, 0x12, 0x5C, 0xC1, 0x90, 0x8A, +0xDE, 0xE0, 0x44, 0x80, 0xFF, 0x22, 0xE4, 0x90, 0x8A, 0xCF, 0xF0, 0x90, 0x8A, 0xCF, 0xE0, 0xFF, +0xC3, 0x94, 0x10, 0x50, 0x14, 0x74, 0xA4, 0x2F, 0xF5, 0x82, 0xE4, 0x34, 0x04, 0xF5, 0x83, 0xE4, +0xF0, 0x90, 0x8A, 0xCF, 0xE0, 0x04, 0xF0, 0x80, 0xE2, 0xE4, 0x90, 0x8A, 0xCF, 0xF0, 0x90, 0x8A, +0xCF, 0xE0, 0xFF, 0xC3, 0x94, 0x20, 0x40, 0x02, 0x41, 0xCF, 0x75, 0xF0, 0x0A, 0xEF, 0x90, 0x84, +0x00, 0x12, 0x43, 0x5F, 0xE4, 0xF0, 0xA3, 0xF0, 0x75, 0xF0, 0x0A, 0xEF, 0x90, 0x84, 0x02, 0x12, +0x43, 0x5F, 0xE4, 0xF0, 0xA3, 0xF0, 0x75, 0xF0, 0x0A, 0xEF, 0x90, 0x84, 0x04, 0x12, 0x43, 0x5F, +0xE4, 0xF0, 0xA3, 0xF0, 0x75, 0xF0, 0x0A, 0xEF, 0x90, 0x84, 0x06, 0x12, 0x43, 0x5F, 0xE4, 0xF0, +0xA3, 0xF0, 0x75, 0xF0, 0x0A, 0xEF, 0x90, 0x84, 0x08, 0x12, 0x43, 0x5F, 0xE4, 0xF0, 0xA3, 0xF0, +0x74, 0x84, 0x2F, 0xF5, 0x82, 0xE4, 0x34, 0x8A, 0xF5, 0x83, 0x74, 0x13, 0xF0, 0x74, 0x44, 0x2F, +0xF5, 0x82, 0xE4, 0x34, 0x89, 0xF5, 0x83, 0xE4, 0xF0, 0x74, 0x43, 0x2F, 0xF5, 0x82, 0xE4, 0x34, +0x88, 0xF5, 0x83, 0xE4, 0xF0, 0xEF, 0x25, 0xE0, 0x24, 0xC0, 0xF5, 0x82, 0xE4, 0x34, 0x85, 0xF5, +0x83, 0xE4, 0xF0, 0xA3, 0xF0, 0xEF, 0x25, 0xE0, 0x24, 0x63, 0xF5, 0x82, 0xE4, 0x34, 0x88, 0xF5, +0x83, 0xE4, 0xF0, 0xA3, 0xF0, 0xEF, 0x25, 0xE0, 0x24, 0xE3, 0xF5, 0x82, 0xE4, 0x34, 0x88, 0xF5, +0x83, 0xE4, 0xF0, 0xA3, 0xF0, 0xEF, 0x25, 0xE0, 0x24, 0xA3, 0xF5, 0x82, 0xE4, 0x34, 0x88, 0xF5, +0x83, 0xE4, 0xF0, 0xA3, 0xF0, 0xEF, 0x25, 0xE0, 0x24, 0x64, 0xF5, 0x82, 0xE4, 0x34, 0x89, 0xF5, +0x83, 0xE4, 0xF0, 0xA3, 0xF0, 0xEF, 0x25, 0xE0, 0x24, 0xA4, 0xF5, 0x82, 0xE4, 0x34, 0x89, 0xF5, +0x83, 0xE4, 0xF0, 0xA3, 0xF0, 0x74, 0x44, 0x2F, 0xF5, 0x82, 0xE4, 0x34, 0x8A, 0xF5, 0x83, 0xE4, +0xF0, 0x74, 0x24, 0x2F, 0xF5, 0x82, 0xE4, 0x34, 0x8A, 0xF5, 0x83, 0xE4, 0xF0, 0x74, 0x64, 0x2F, +0xF5, 0x82, 0xE4, 0x34, 0x8A, 0xF5, 0x83, 0xE4, 0xF0, 0x90, 0x41, 0x8C, 0x93, 0xFE, 0x74, 0x01, +0x93, 0xFF, 0x90, 0x41, 0x54, 0x74, 0x01, 0x93, 0x2F, 0xFF, 0xE4, 0x93, 0x3E, 0xC3, 0x13, 0xFE, +0xEF, 0x13, 0xFF, 0x90, 0x8A, 0xCF, 0xE0, 0xFD, 0x25, 0xE0, 0x24, 0xE1, 0xF5, 0x82, 0xE4, 0x34, +0x86, 0xF5, 0x83, 0xEE, 0xF0, 0xA3, 0xEF, 0xF0, 0x75, 0xF0, 0x09, 0xED, 0x90, 0x87, 0x29, 0x12, +0x43, 0x5F, 0x74, 0x01, 0xF0, 0x74, 0xC1, 0x2D, 0xF5, 0x82, 0xE4, 0x34, 0x86, 0xF5, 0x83, 0x74, +0x0C, 0xF0, 0x75, 0xF0, 0x09, 0xED, 0x90, 0x87, 0x25, 0x12, 0x43, 0x5F, 0x74, 0xFF, 0xF0, 0xA3, +0xF0, 0x75, 0xF0, 0x09, 0xED, 0x90, 0x87, 0x23, 0x12, 0x43, 0x5F, 0xE4, 0xF0, 0xA3, 0x74, 0x0F, +0xF0, 0x75, 0xF0, 0x09, 0xED, 0x90, 0x87, 0x27, 0x12, 0x43, 0x5F, 0x74, 0x13, 0xF0, 0x75, 0xF0, +0x09, 0xED, 0x90, 0x87, 0x28, 0x12, 0x43, 0x5F, 0xE4, 0xF0, 0x74, 0x84, 0x2D, 0xF5, 0x82, 0xE4, +0x34, 0x04, 0xF5, 0x83, 0x74, 0x13, 0xF0, 0x90, 0x8A, 0xCF, 0xE0, 0x04, 0xF0, 0x21, 0x3E, 0x22, +0x12, 0x29, 0xD9, 0xFF, 0xC3, 0x94, 0x20, 0x50, 0x14, 0x90, 0x00, 0x02, 0x12, 0x42, 0x20, 0xFE, +0x74, 0x23, 0x2F, 0xF5, 0x82, 0xE4, 0x34, 0x89, 0xF5, 0x83, 0xEE, 0xF0, 0x22, 0xEF, 0xB4, 0x20, +0x0A, 0x90, 0x00, 0x02, 0x12, 0x42, 0x20, 0x90, 0x87, 0x21, 0xF0, 0x22, 0x12, 0x29, 0xD9, 0xF5, +0x21, 0x22, 0xD3, 0x10, 0xAF, 0x01, 0xC3, 0xC0, 0xD0, 0x90, 0x8A, 0xDA, 0x12, 0x2A, 0x8B, 0x00, +0x00, 0x00, 0x00, 0x90, 0x00, 0x01, 0x12, 0x42, 0x20, 0x90, 0x8B, 0x1A, 0xF0, 0x90, 0x00, 0x03, +0x12, 0x42, 0x20, 0x90, 0x8B, 0x0A, 0xF0, 0x12, 0x47, 0xFA, 0xD0, 0xD0, 0x92, 0xAF, 0x22, 0x90, +0x00, 0x02, 0x12, 0x42, 0x20, 0xFF, 0x30, 0xE0, 0x25, 0x12, 0x29, 0xD9, 0x90, 0x8B, 0x10, 0xF0, +0x90, 0x00, 0x01, 0x12, 0x42, 0x20, 0x90, 0x8B, 0x11, 0xF0, 0xEF, 0xC3, 0x13, 0x54, 0x7F, 0x90, +0x8B, 0x0F, 0xF0, 0x90, 0x00, 0x03, 0x12, 0x42, 0x20, 0x90, 0x8B, 0x16, 0xF0, 0x22, 0x90, 0x8B, +0x10, 0x74, 0x03, 0xF0, 0x90, 0x8B, 0x11, 0x74, 0x05, 0xF0, 0x90, 0x8B, 0x0F, 0x74, 0x14, 0xF0, +0x90, 0x8B, 0x16, 0x74, 0x05, 0xF0, 0x22, 0x12, 0x29, 0xD9, 0x30, 0xE0, 0x19, 0xC3, 0x13, 0x54, +0x7F, 0x90, 0x8B, 0x15, 0xF0, 0x90, 0x00, 0x01, 0x12, 0x42, 0x20, 0xFF, 0x90, 0x8B, 0x13, 0xE4, +0xF0, 0xA3, 0xEF, 0xF0, 0x80, 0x0F, 0x90, 0x8B, 0x15, 0x74, 0x05, 0xF0, 0x90, 0x8B, 0x13, 0xE4, +0xF0, 0xA3, 0x74, 0x03, 0xF0, 0x90, 0x8B, 0x13, 0xE0, 0xA3, 0xE0, 0x90, 0x05, 0x58, 0xF0, 0x22, +0x12, 0x29, 0xD9, 0x90, 0x8B, 0x12, 0xF0, 0x60, 0x07, 0xE4, 0xFD, 0x7F, 0x04, 0x12, 0x45, 0xA2, +0x90, 0x8B, 0x12, 0xE0, 0x90, 0x01, 0xE7, 0xF0, 0x22, 0x90, 0x02, 0x09, 0xE0, 0xFD, 0x12, 0x29, +0xD9, 0xFE, 0xAF, 0x05, 0xED, 0x2E, 0x90, 0x8A, 0xF7, 0xF0, 0x90, 0x00, 0x01, 0x12, 0x42, 0x20, +0xFF, 0xED, 0x2F, 0x90, 0x8A, 0xF8, 0xF0, 0x90, 0x00, 0x02, 0x12, 0x42, 0x20, 0xFF, 0xED, 0x2F, +0x90, 0x8A, 0xF9, 0xF0, 0x90, 0x00, 0x03, 0x12, 0x42, 0x20, 0xFF, 0xED, 0x2F, 0x90, 0x8A, 0xFA, +0xF0, 0x90, 0x00, 0x04, 0x12, 0x42, 0x20, 0xFF, 0xAE, 0x05, 0xED, 0x2F, 0x90, 0x8A, 0xFB, 0xF0, +0x22, 0xD3, 0x10, 0xAF, 0x01, 0xC3, 0xC0, 0xD0, 0x90, 0x8A, 0xDA, 0x12, 0x43, 0x8B, 0xE4, 0x90, +0x8A, 0xDD, 0xF0, 0x12, 0x29, 0xD9, 0xC3, 0x13, 0x20, 0xE0, 0x02, 0xA1, 0x62, 0x90, 0x8A, 0xDA, +0x12, 0x43, 0x6B, 0x12, 0x29, 0xD9, 0xFF, 0x54, 0x02, 0xFE, 0x90, 0x8B, 0x32, 0xE0, 0x54, 0xFD, +0x4E, 0xFE, 0xF0, 0xEF, 0x54, 0x01, 0xFF, 0xEE, 0x54, 0xFE, 0x4F, 0xFF, 0xF0, 0x12, 0x29, 0xD9, +0xFE, 0x54, 0x08, 0xFD, 0xEF, 0x54, 0xF7, 0x4D, 0xFF, 0x90, 0x8B, 0x32, 0xF0, 0xEE, 0x54, 0x10, +0xFE, 0xEF, 0x54, 0xEF, 0x4E, 0xFF, 0xF0, 0x12, 0x29, 0xD9, 0xFE, 0x54, 0x20, 0xFD, 0xEF, 0x54, +0xDF, 0x4D, 0xFF, 0x90, 0x8B, 0x32, 0xF0, 0xEE, 0x54, 0x40, 0xFE, 0xEF, 0x54, 0xBF, 0x4E, 0xF0, +0x20, 0xE0, 0x02, 0xA1, 0x4F, 0x90, 0x8A, 0xDD, 0x74, 0x21, 0xF0, 0x90, 0x8A, 0xDA, 0x12, 0x43, +0x6B, 0x12, 0x29, 0xD9, 0xFF, 0x13, 0x13, 0x54, 0x01, 0xFE, 0x90, 0x8B, 0x32, 0xE0, 0xFD, 0x13, +0x13, 0x54, 0x01, 0x6E, 0x60, 0x2A, 0xEF, 0x54, 0x04, 0xFF, 0xED, 0x54, 0xFB, 0x4F, 0xF0, 0xE0, +0x13, 0x13, 0x54, 0x3F, 0x30, 0xE0, 0x0E, 0x90, 0x01, 0x34, 0x74, 0x40, 0xF0, 0xFD, 0xE4, 0xFF, +0x12, 0x36, 0xE6, 0x80, 0x0B, 0xE4, 0x90, 0x8B, 0x34, 0xF0, 0x7D, 0x40, 0xFF, 0x12, 0x36, 0x75, +0x90, 0x8B, 0x32, 0xE0, 0xFD, 0x13, 0x13, 0x13, 0x54, 0x1F, 0x30, 0xE0, 0x07, 0x90, 0x8A, 0xDD, +0xE0, 0x44, 0x12, 0xF0, 0xED, 0xC4, 0x54, 0x0F, 0x30, 0xE0, 0x07, 0x90, 0x8A, 0xDD, 0xE0, 0x44, +0x14, 0xF0, 0x90, 0x8B, 0x32, 0xE0, 0xC4, 0x13, 0x54, 0x07, 0x30, 0xE0, 0x07, 0x90, 0x8A, 0xDD, +0xE0, 0x44, 0x80, 0xF0, 0x90, 0x8B, 0x32, 0xE0, 0xC4, 0x13, 0x13, 0x54, 0x03, 0x20, 0xE0, 0x07, +0x90, 0x8A, 0xDD, 0xE0, 0x44, 0x40, 0xF0, 0x90, 0x8A, 0xDD, 0xE0, 0x90, 0x05, 0x27, 0xF0, 0x90, +0x8B, 0x33, 0xE0, 0x70, 0x05, 0x7F, 0x01, 0x12, 0x4E, 0x89, 0x90, 0x8B, 0x32, 0xE0, 0xC4, 0x13, +0x13, 0x54, 0x03, 0x30, 0xE0, 0x04, 0x7F, 0x03, 0x80, 0x0E, 0x7F, 0x01, 0x12, 0x4D, 0xE0, 0xEF, +0x60, 0x04, 0x7F, 0x01, 0x80, 0x02, 0x7F, 0x02, 0x12, 0x4E, 0x89, 0x7F, 0x02, 0xC1, 0xA4, 0x90, +0x8A, 0xDD, 0x74, 0x01, 0xF0, 0x90, 0x05, 0x27, 0xF0, 0xE4, 0xFF, 0x12, 0x4E, 0x89, 0x7F, 0x03, +0xC1, 0xA4, 0x90, 0x8A, 0xDA, 0x12, 0x43, 0x6B, 0x12, 0x29, 0xD9, 0xFF, 0x54, 0x02, 0xFE, 0x90, +0x8B, 0x2C, 0xE0, 0x54, 0xFD, 0x4E, 0xFE, 0xF0, 0xEF, 0x54, 0x01, 0xFF, 0xEE, 0x54, 0xFE, 0x4F, +0xFF, 0xF0, 0x12, 0x29, 0xD9, 0xFE, 0x54, 0x08, 0xFD, 0xEF, 0x54, 0xF7, 0x4D, 0xFF, 0x90, 0x8B, +0x2C, 0xF0, 0xEE, 0x54, 0x10, 0xFE, 0xEF, 0x54, 0xEF, 0x4E, 0xFF, 0xF0, 0x12, 0x29, 0xD9, 0xFE, +0x54, 0x40, 0xFD, 0xEF, 0x54, 0xBF, 0x4D, 0xFF, 0x90, 0x8B, 0x2C, 0xF0, 0xEE, 0x54, 0x04, 0xFE, +0xEF, 0x54, 0xFB, 0x4E, 0xF0, 0x20, 0xE0, 0x02, 0xC1, 0x57, 0x90, 0x8A, 0xDD, 0x74, 0x31, 0xF0, +0x90, 0x8B, 0x2C, 0xE0, 0x13, 0x13, 0x54, 0x3F, 0x20, 0xE0, 0x0B, 0xE4, 0x90, 0x8B, 0x2E, 0xF0, +0x7D, 0x40, 0xFF, 0x12, 0x36, 0x75, 0x90, 0x8B, 0x2C, 0xE0, 0xFD, 0x13, 0x13, 0x13, 0x54, 0x1F, +0x30, 0xE0, 0x07, 0x90, 0x8A, 0xDD, 0xE0, 0x44, 0x02, 0xF0, 0xED, 0xC4, 0x54, 0x0F, 0x30, 0xE0, +0x07, 0x90, 0x8A, 0xDD, 0xE0, 0x44, 0x04, 0xF0, 0x90, 0x8A, 0xDD, 0xE0, 0x54, 0x06, 0x60, 0x0C, +0x90, 0x01, 0x3E, 0x74, 0x03, 0xF0, 0xFD, 0x7F, 0x02, 0x12, 0x37, 0x00, 0x90, 0x8A, 0xDD, 0xE0, +0x90, 0x05, 0x27, 0xF0, 0x90, 0x8B, 0x2C, 0xE0, 0xFF, 0xC4, 0x13, 0x13, 0x54, 0x03, 0x30, 0xE0, +0x0D, 0xA3, 0xE0, 0x64, 0x06, 0x60, 0x2C, 0x7F, 0x06, 0x12, 0x7B, 0x49, 0x80, 0x25, 0x90, 0x8B, +0x2D, 0xE0, 0xB4, 0x06, 0x1B, 0x7F, 0x01, 0x12, 0x7B, 0x49, 0xE4, 0xFF, 0x12, 0x4D, 0xE0, 0xEF, +0x60, 0x09, 0x7D, 0x01, 0xAF, 0x23, 0x12, 0x45, 0xA2, 0x80, 0x05, 0x12, 0x4E, 0x56, 0x80, 0x03, +0x12, 0x66, 0x20, 0x7F, 0x01, 0x80, 0x4D, 0x90, 0x8A, 0xDD, 0x74, 0x01, 0xF0, 0x90, 0x05, 0x27, +0xF0, 0x7D, 0x03, 0x7F, 0x02, 0x12, 0x36, 0x92, 0x90, 0x8B, 0x2D, 0xE0, 0xB4, 0x06, 0x02, 0x80, +0x1B, 0x90, 0x8B, 0x2D, 0xE0, 0xB4, 0x04, 0x02, 0x80, 0x07, 0x90, 0x8B, 0x2D, 0xE0, 0xB4, 0x05, +0x04, 0xE4, 0xFF, 0x80, 0x14, 0x90, 0x8B, 0x2D, 0xE0, 0xB4, 0x03, 0x04, 0x7F, 0x01, 0x80, 0x09, +0x90, 0x8B, 0x2D, 0xE0, 0xB4, 0x02, 0x05, 0x7F, 0x01, 0x12, 0x7B, 0x49, 0x12, 0x66, 0x13, 0x12, +0x4A, 0xFC, 0x7F, 0x03, 0xD1, 0xAB, 0xD0, 0xD0, 0x92, 0xAF, 0x22, 0xAD, 0x07, 0xEF, 0x64, 0x01, +0x60, 0x04, 0xEF, 0xB4, 0x03, 0x15, 0x90, 0x8B, 0x32, 0xE0, 0x54, 0xFE, 0xF0, 0x54, 0xFB, 0xF0, +0xE4, 0xA3, 0xF0, 0xA3, 0xF0, 0xA3, 0xF0, 0xA3, 0xF0, 0xA3, 0xF0, 0xED, 0x64, 0x02, 0x60, 0x04, +0xED, 0xB4, 0x03, 0x15, 0x90, 0x8B, 0x2C, 0xE0, 0x54, 0xFE, 0xF0, 0x54, 0xFB, 0xF0, 0xE4, 0xA3, +0xF0, 0xA3, 0xF0, 0xA3, 0xF0, 0xA3, 0xF0, 0xA3, 0xF0, 0x22, 0x12, 0x29, 0xD9, 0x90, 0x8B, 0x38, +0xF0, 0x22, 0xD3, 0x10, 0xAF, 0x01, 0xC3, 0xC0, 0xD0, 0x90, 0x8A, 0xFD, 0xE0, 0x90, 0x8A, 0xE8, +0xF0, 0x90, 0x8A, 0xFE, 0xE0, 0xFF, 0xA3, 0xE0, 0x90, 0x8A, 0xE9, 0xCF, 0xF0, 0xA3, 0xEF, 0xF0, +0xE4, 0x90, 0x8A, 0xE4, 0xF0, 0x90, 0x8A, 0xE4, 0xE0, 0xFF, 0x24, 0x00, 0xF5, 0x82, 0xE4, 0x34, +0x8B, 0xF5, 0x83, 0xE0, 0xFE, 0x74, 0xEB, 0x2F, 0xF5, 0x82, 0xE4, 0x34, 0x8A, 0xF5, 0x83, 0xEE, +0xF0, 0x90, 0x8A, 0xE4, 0xE0, 0x04, 0xF0, 0xE0, 0xB4, 0x04, 0xDA, 0x90, 0x8A, 0xE8, 0xE0, 0x12, +0x43, 0x94, 0x77, 0x61, 0x00, 0x78, 0xD7, 0x01, 0x77, 0x6C, 0x02, 0x77, 0x6C, 0x03, 0x77, 0x6C, +0x04, 0x78, 0xD7, 0x05, 0x78, 0xA1, 0x80, 0x78, 0xBA, 0x81, 0x78, 0xD7, 0x82, 0x00, 0x00, 0x78, +0xD3, 0x90, 0x8A, 0xEE, 0xE0, 0xFF, 0x12, 0x7E, 0x6E, 0x02, 0x78, 0xD7, 0x90, 0x8A, 0xE8, 0xE0, +0xFF, 0xB4, 0x02, 0x08, 0x90, 0x8A, 0xE5, 0x74, 0x01, 0xF0, 0x80, 0x0F, 0xEF, 0x90, 0x8A, 0xE5, +0xB4, 0x03, 0x05, 0x74, 0x02, 0xF0, 0x80, 0x03, 0x74, 0x04, 0xF0, 0xC3, 0x90, 0x8A, 0xE9, 0xE0, +0x94, 0x08, 0x50, 0x79, 0xE4, 0x90, 0x8A, 0xE4, 0xF0, 0x90, 0x8A, 0xE5, 0xE0, 0xFF, 0x90, 0x8A, +0xE4, 0xE0, 0xC3, 0x9F, 0x40, 0x03, 0x02, 0x78, 0xD7, 0x90, 0x8A, 0xE9, 0xE0, 0xFE, 0xA3, 0xE0, +0xFF, 0xC3, 0xEE, 0x94, 0x01, 0x90, 0x8A, 0xE4, 0xE0, 0x50, 0x1F, 0xFE, 0x2F, 0xFF, 0xEE, 0xFD, +0xC3, 0x74, 0x03, 0x9D, 0xFD, 0xE4, 0x94, 0x00, 0xFC, 0x74, 0xEB, 0x2D, 0xF5, 0x82, 0x74, 0x8A, +0x3C, 0xF5, 0x83, 0xE0, 0xFD, 0x12, 0x51, 0xFB, 0x80, 0x2B, 0xFF, 0xFD, 0xC3, 0x74, 0x03, 0x9D, +0xFD, 0xE4, 0x94, 0x00, 0xFC, 0x74, 0xEB, 0x2D, 0xF5, 0x82, 0x74, 0x8A, 0x3C, 0xF5, 0x83, 0xE0, +0xFE, 0xEF, 0xFD, 0x90, 0x8A, 0xEA, 0xE0, 0x2D, 0xFD, 0x90, 0x8A, 0xE9, 0xE0, 0x34, 0x00, 0x8D, +0x82, 0xF5, 0x83, 0xEE, 0xF0, 0x90, 0x8A, 0xE4, 0xE0, 0x04, 0xF0, 0x80, 0x8C, 0xC3, 0x90, 0x8A, +0xE9, 0xE0, 0x94, 0x10, 0x40, 0x02, 0x01, 0xD7, 0x90, 0x8A, 0xE8, 0xE0, 0x64, 0x04, 0x60, 0x02, +0x01, 0xD7, 0x90, 0x8A, 0xEC, 0xE0, 0xFF, 0xE4, 0xFC, 0xFD, 0xFE, 0x78, 0x10, 0x12, 0x2A, 0x6C, +0xC0, 0x04, 0xC0, 0x05, 0xC0, 0x06, 0xC0, 0x07, 0x90, 0x8A, 0xEB, 0xE0, 0xFF, 0xE4, 0xFC, 0xFD, +0xFE, 0x78, 0x18, 0x12, 0x2A, 0x6C, 0xD0, 0x03, 0xD0, 0x02, 0xD0, 0x01, 0xD0, 0x00, 0x12, 0x43, +0x46, 0xC0, 0x04, 0xC0, 0x05, 0xC0, 0x06, 0xC0, 0x07, 0x90, 0x8A, 0xED, 0xE0, 0xFF, 0xE4, 0xFC, +0xFD, 0xFE, 0x78, 0x08, 0x12, 0x2A, 0x6C, 0xD0, 0x03, 0xD0, 0x02, 0xD0, 0x01, 0xD0, 0x00, 0x12, +0x43, 0x46, 0xA8, 0x04, 0xA9, 0x05, 0xAA, 0x06, 0xAB, 0x07, 0xA3, 0xE0, 0xFF, 0xE4, 0xFC, 0xFD, +0xFE, 0x12, 0x43, 0x46, 0xA3, 0x12, 0x2A, 0x7F, 0x90, 0x8A, 0xEF, 0x12, 0x43, 0x53, 0x90, 0x80, +0x85, 0x12, 0x2A, 0x7F, 0x90, 0x8A, 0xE9, 0xE0, 0xFE, 0xA3, 0xE0, 0xFF, 0x12, 0x2F, 0xD9, 0x80, +0x36, 0x90, 0x8A, 0xED, 0xE0, 0xFE, 0xA3, 0xE0, 0x24, 0x00, 0xFF, 0xE4, 0x3E, 0xFE, 0x90, 0x8A, +0xE6, 0xF0, 0xA3, 0xEF, 0xF0, 0x12, 0x37, 0x54, 0x80, 0x1D, 0x90, 0x8A, 0xED, 0xE0, 0xFE, 0xA3, +0xE0, 0x24, 0x00, 0xFF, 0xE4, 0x3E, 0xFE, 0x90, 0x8A, 0xE6, 0xF0, 0xA3, 0xEF, 0xF0, 0x12, 0x36, +0xCB, 0x80, 0x04, 0x7F, 0x00, 0x80, 0x02, 0x7F, 0x01, 0xD0, 0xD0, 0x92, 0xAF, 0x22, 0xD3, 0x10, +0xAF, 0x01, 0xC3, 0xC0, 0xD0, 0xE4, 0x90, 0x8A, 0xDD, 0xF0, 0xA3, 0x74, 0x04, 0xF0, 0xA3, 0xE4, +0xF0, 0x90, 0x8A, 0xE2, 0xF0, 0xA3, 0xF0, 0x90, 0x02, 0x09, 0xE0, 0x90, 0x8A, 0xE1, 0xF0, 0x12, +0x29, 0xD9, 0xFF, 0x90, 0x8A, 0xE1, 0xE0, 0x2F, 0x90, 0x8A, 0xE0, 0xF0, 0x30, 0xE0, 0x0B, 0x90, +0x8A, 0xDB, 0xE4, 0xF0, 0xA3, 0x74, 0x80, 0xF0, 0x80, 0x07, 0xE4, 0x90, 0x8A, 0xDB, 0xF0, 0xA3, +0xF0, 0x90, 0x8A, 0xE0, 0xE0, 0xC3, 0x13, 0x90, 0xFD, 0x10, 0xF0, 0x90, 0x8A, 0xDD, 0xE0, 0x24, +0x20, 0xF0, 0x90, 0x8A, 0xDB, 0xA3, 0xE0, 0xFD, 0xA3, 0xE0, 0xFC, 0x2D, 0xFF, 0x24, 0x01, 0xF5, +0x82, 0xE4, 0x34, 0xFC, 0xF5, 0x83, 0xE0, 0x90, 0x8A, 0xFD, 0xF0, 0x74, 0x02, 0x2F, 0xF5, 0x82, +0xE4, 0x34, 0xFC, 0xF5, 0x83, 0xE0, 0xFE, 0xEC, 0x2D, 0x24, 0x03, 0xF5, 0x82, 0xE4, 0x34, 0xFC, +0xF5, 0x83, 0xE0, 0x24, 0x00, 0xFF, 0xE4, 0x3E, 0x90, 0x8A, 0xFE, 0xF0, 0xA3, 0xEF, 0xF0, 0x90, +0x8A, 0xDA, 0x74, 0x04, 0xF0, 0x90, 0x8A, 0xDB, 0xA3, 0xE0, 0xFF, 0xA3, 0xE0, 0x2F, 0xFF, 0x90, +0x8A, 0xDA, 0xE0, 0xFE, 0x2F, 0x24, 0x00, 0xF5, 0x82, 0xE4, 0x34, 0xFC, 0xF5, 0x83, 0xE0, 0xFF, +0x74, 0xFC, 0x2E, 0xF5, 0x82, 0xE4, 0x34, 0x8A, 0xF5, 0x83, 0xEF, 0xF0, 0x90, 0x8A, 0xDA, 0xE0, +0x04, 0xF0, 0xE0, 0xB4, 0x08, 0xCF, 0x12, 0x76, 0xF2, 0xEF, 0x70, 0x45, 0x90, 0x01, 0xC3, 0xE0, +0x60, 0x2B, 0xC3, 0x90, 0x8A, 0xE3, 0xE0, 0x94, 0xE8, 0x90, 0x8A, 0xE2, 0xE0, 0x94, 0x03, 0x40, +0x09, 0x90, 0x01, 0xC6, 0xE0, 0x44, 0x10, 0xF0, 0x80, 0x79, 0x90, 0x8A, 0xE2, 0xE4, 0x75, 0xF0, +0x01, 0x12, 0x42, 0x81, 0x7F, 0x0A, 0x7E, 0x00, 0x12, 0x37, 0x54, 0x80, 0xCF, 0x90, 0x01, 0xC6, +0xE0, 0x90, 0x01, 0xC3, 0x30, 0xE2, 0x05, 0x74, 0xFE, 0xF0, 0x80, 0x57, 0x74, 0xFF, 0xF0, 0x80, +0x52, 0x90, 0x8A, 0xDD, 0xE0, 0xB4, 0x78, 0x2E, 0xE4, 0xF0, 0x90, 0x8A, 0xE0, 0xE0, 0x04, 0xF0, +0x90, 0x8A, 0xDB, 0xE0, 0x70, 0x04, 0xA3, 0xE0, 0x64, 0x80, 0x90, 0x8A, 0xDB, 0x70, 0x05, 0xF0, +0xA3, 0xF0, 0x80, 0x06, 0xE4, 0xF0, 0xA3, 0x74, 0x80, 0xF0, 0x90, 0x8A, 0xE0, 0xE0, 0xC3, 0x13, +0x90, 0xFD, 0x10, 0xF0, 0x80, 0x07, 0x90, 0x8A, 0xDD, 0xE0, 0x24, 0x08, 0xF0, 0x90, 0x8A, 0xDE, +0x74, 0xFF, 0xF5, 0xF0, 0x12, 0x42, 0x81, 0x90, 0x8A, 0xDE, 0xE0, 0x70, 0x02, 0xA3, 0xE0, 0x60, +0x02, 0x21, 0x32, 0xD0, 0xD0, 0x92, 0xAF, 0x22, 0x12, 0x29, 0xD9, 0x90, 0x8B, 0x05, 0xF0, 0x90, +0x00, 0x01, 0x12, 0x42, 0x20, 0x90, 0x8B, 0x06, 0xF0, 0x22, 0xE4, 0xF5, 0x61, 0x22, 0x51, 0x67, +0x90, 0x8B, 0x33, 0x74, 0x02, 0xF0, 0x22, 0x90, 0x05, 0x22, 0x74, 0xFF, 0xF0, 0x7F, 0x78, 0x7E, +0x08, 0x12, 0x27, 0xDE, 0x90, 0x8B, 0x1C, 0x12, 0x2A, 0x7F, 0x7F, 0x04, 0x7E, 0x0C, 0x12, 0x27, +0xDE, 0x90, 0x8B, 0x20, 0x12, 0x2A, 0x7F, 0x7F, 0x00, 0x7E, 0x08, 0x12, 0x27, 0xDE, 0x90, 0x8B, +0x24, 0x12, 0x2A, 0x7F, 0x90, 0x8B, 0x09, 0xE0, 0x90, 0x8B, 0x1C, 0xB4, 0x01, 0x0D, 0x12, 0x43, +0x53, 0xEF, 0x54, 0xC7, 0xFF, 0xED, 0x54, 0xC7, 0xFD, 0x80, 0x07, 0x12, 0x43, 0x53, 0xEF, 0x54, +0xC7, 0xFF, 0xEC, 0x90, 0x80, 0x85, 0x12, 0x2A, 0x7F, 0x7F, 0x78, 0x7E, 0x08, 0x12, 0x2F, 0xD9, +0x90, 0x8B, 0x20, 0x12, 0x43, 0x53, 0xEF, 0x54, 0x0F, 0xFF, 0xEC, 0x90, 0x80, 0x85, 0x12, 0x2A, +0x7F, 0x7F, 0x04, 0x7E, 0x0C, 0x12, 0x2F, 0xD9, 0x90, 0x8B, 0x24, 0x12, 0x43, 0x53, 0xEF, 0x44, +0x02, 0xFF, 0xEC, 0x90, 0x80, 0x85, 0x12, 0x2A, 0x7F, 0x7F, 0x00, 0x7E, 0x08, 0x12, 0x2F, 0xD9, +0x7F, 0x70, 0x7E, 0x0E, 0x12, 0x27, 0xDE, 0x90, 0x8B, 0x28, 0x12, 0x2A, 0x7F, 0x90, 0x80, 0x85, +0x12, 0x2A, 0x8B, 0x00, 0x1B, 0x25, 0xA0, 0x7F, 0x70, 0x7E, 0x0E, 0x12, 0x2F, 0xD9, 0x90, 0x80, +0x59, 0x12, 0x2A, 0x8B, 0x00, 0x00, 0x00, 0x00, 0xE4, 0xFD, 0xFF, 0x12, 0x34, 0x81, 0x90, 0x8B, +0x09, 0xE0, 0xB4, 0x01, 0x11, 0x90, 0x80, 0x59, 0x12, 0x2A, 0x8B, 0x00, 0x00, 0x00, 0x00, 0xE4, +0xFD, 0x7F, 0x01, 0x12, 0x34, 0x81, 0x22, 0x51, 0x6D, 0x90, 0x8B, 0x33, 0x74, 0x02, 0xF0, 0x22, +0x51, 0x67, 0x90, 0x8B, 0x2D, 0x74, 0x04, 0xF0, 0x22, 0xD3, 0x10, 0xAF, 0x01, 0xC3, 0xC0, 0xD0, +0x90, 0x8B, 0x2D, 0xE0, 0xFE, 0x6F, 0x70, 0x02, 0xA1, 0x15, 0xEF, 0x12, 0x43, 0x94, 0x7B, 0x77, +0x00, 0x7B, 0xB1, 0x01, 0x7B, 0xF7, 0x02, 0x7C, 0x31, 0x03, 0x7C, 0x69, 0x04, 0x7C, 0xA2, 0x05, +0x7C, 0xDD, 0x06, 0x00, 0x00, 0x7D, 0x15, 0xEE, 0xB4, 0x04, 0x06, 0x7F, 0x01, 0xB1, 0x48, 0xA1, +0x15, 0x90, 0x8B, 0x2D, 0xE0, 0xFF, 0xB4, 0x05, 0x04, 0xB1, 0x24, 0xA1, 0x15, 0xEF, 0xB4, 0x06, +0x06, 0x7F, 0x01, 0xB1, 0x39, 0x80, 0x16, 0x90, 0x8B, 0x2D, 0xE0, 0xB4, 0x03, 0x06, 0x7F, 0x01, +0xB1, 0x1A, 0x80, 0x09, 0x90, 0x8B, 0x2D, 0xE0, 0xB4, 0x02, 0x02, 0xB1, 0x2E, 0xB1, 0x6B, 0xA1, +0x15, 0x90, 0x8B, 0x2D, 0xE0, 0xB4, 0x04, 0x06, 0x7F, 0x01, 0xB1, 0x48, 0x80, 0x09, 0x90, 0x8B, +0x2D, 0xE0, 0xB4, 0x05, 0x02, 0xB1, 0x24, 0x90, 0x8B, 0x2D, 0xE0, 0x70, 0x04, 0xB1, 0x61, 0xA1, +0x15, 0x90, 0x8B, 0x2D, 0xE0, 0xFE, 0xB4, 0x06, 0x06, 0x7F, 0x01, 0xB1, 0x39, 0xA1, 0x15, 0xEE, +0xB4, 0x03, 0x06, 0x7F, 0x01, 0xB1, 0x1A, 0xA1, 0x15, 0x90, 0x8B, 0x2D, 0xE0, 0x64, 0x02, 0x60, +0x02, 0xA1, 0x15, 0xB1, 0x2E, 0xA1, 0x15, 0x90, 0x8B, 0x2D, 0xE0, 0xB4, 0x04, 0x06, 0x7F, 0x01, +0xB1, 0x48, 0x80, 0x09, 0x90, 0x8B, 0x2D, 0xE0, 0xB4, 0x05, 0x02, 0xB1, 0x24, 0x90, 0x8B, 0x2D, +0xE0, 0x70, 0x04, 0xB1, 0x61, 0x80, 0x16, 0x90, 0x8B, 0x2D, 0xE0, 0xFE, 0xB4, 0x06, 0x06, 0x7F, +0x01, 0xB1, 0x39, 0x80, 0x08, 0xEE, 0xB4, 0x03, 0x04, 0x7F, 0x01, 0xB1, 0x1A, 0xB1, 0x8D, 0xA1, +0x15, 0x90, 0x8B, 0x2D, 0xE0, 0xB4, 0x04, 0x06, 0x7F, 0x01, 0xB1, 0x48, 0x80, 0x09, 0x90, 0x8B, +0x2D, 0xE0, 0xB4, 0x05, 0x02, 0xB1, 0x24, 0x90, 0x8B, 0x2D, 0xE0, 0x70, 0x04, 0xB1, 0x61, 0x80, +0x14, 0x90, 0x8B, 0x2D, 0xE0, 0xFE, 0xB4, 0x06, 0x06, 0xE4, 0xFF, 0xB1, 0x39, 0x80, 0x06, 0xEE, +0xB4, 0x02, 0x02, 0xB1, 0x2E, 0xB1, 0x76, 0xA1, 0x15, 0x90, 0x8B, 0x2D, 0xE0, 0xFE, 0xB4, 0x06, +0x06, 0xE4, 0xFF, 0xB1, 0x39, 0x80, 0x13, 0xEE, 0xB4, 0x03, 0x06, 0x7F, 0x01, 0xB1, 0x1A, 0x80, +0x09, 0x90, 0x8B, 0x2D, 0xE0, 0xB4, 0x02, 0x02, 0xB1, 0x2E, 0x90, 0x8B, 0x2D, 0xE0, 0xB4, 0x01, +0x04, 0xB1, 0x6B, 0x80, 0x09, 0x90, 0x8B, 0x2D, 0xE0, 0xB4, 0x05, 0x02, 0xB1, 0x24, 0x71, 0x40, +0x80, 0x73, 0x90, 0x8B, 0x2D, 0xE0, 0xFE, 0xB4, 0x06, 0x06, 0xE4, 0xFF, 0xB1, 0x39, 0x80, 0x13, +0xEE, 0xB4, 0x03, 0x06, 0x7F, 0x01, 0xB1, 0x1A, 0x80, 0x09, 0x90, 0x8B, 0x2D, 0xE0, 0xB4, 0x02, +0x02, 0xB1, 0x2E, 0x90, 0x8B, 0x2D, 0xE0, 0xB4, 0x01, 0x04, 0xB1, 0x6B, 0x80, 0x0B, 0x90, 0x8B, +0x2D, 0xE0, 0xB4, 0x04, 0x04, 0x7F, 0x01, 0xB1, 0x48, 0xB1, 0x80, 0x80, 0x38, 0x90, 0x8B, 0x2D, +0xE0, 0xB4, 0x04, 0x06, 0x7F, 0x01, 0xB1, 0x48, 0x80, 0x09, 0x90, 0x8B, 0x2D, 0xE0, 0xB4, 0x05, +0x02, 0xB1, 0x24, 0x90, 0x8B, 0x2D, 0xE0, 0x70, 0x04, 0xB1, 0x61, 0x80, 0x16, 0x90, 0x8B, 0x2D, +0xE0, 0xB4, 0x03, 0x06, 0xE4, 0xFF, 0xB1, 0x1A, 0x80, 0x09, 0x90, 0x8B, 0x2D, 0xE0, 0xB4, 0x02, +0x02, 0xB1, 0x2E, 0xB1, 0x9A, 0xD0, 0xD0, 0x92, 0xAF, 0x22, 0x12, 0x4A, 0xB2, 0x90, 0x8B, 0x2D, +0x74, 0x01, 0xF0, 0x22, 0x90, 0x05, 0x22, 0xE4, 0xF0, 0x90, 0x8B, 0x2D, 0xF0, 0x22, 0x90, 0x05, +0x22, 0xE4, 0xF0, 0x90, 0x8B, 0x2D, 0x04, 0xF0, 0x22, 0xEF, 0x60, 0x05, 0x90, 0x05, 0x22, 0xE4, +0xF0, 0x90, 0x8B, 0x2D, 0x74, 0x01, 0xF0, 0x22, 0x90, 0x8B, 0x56, 0xEF, 0xF0, 0x12, 0x4F, 0xED, +0x90, 0x8B, 0x56, 0xE0, 0x60, 0x05, 0x90, 0x05, 0x22, 0xE4, 0xF0, 0xE4, 0x90, 0x8B, 0x2D, 0xF0, +0x22, 0x12, 0x4A, 0xCC, 0x90, 0x8B, 0x2D, 0x74, 0x01, 0xF0, 0x22, 0x7F, 0x01, 0x12, 0x4A, 0x7C, +0xE4, 0x90, 0x8B, 0x2D, 0xF0, 0x22, 0x12, 0x4A, 0x32, 0x90, 0x8B, 0x2D, 0x74, 0x03, 0xF0, 0x22, +0x90, 0x05, 0x22, 0x74, 0xFF, 0xF0, 0x90, 0x8B, 0x2D, 0x74, 0x05, 0xF0, 0x22, 0x90, 0x05, 0x22, +0x74, 0xFF, 0xF0, 0x90, 0x8B, 0x2D, 0x74, 0x02, 0xF0, 0x22, 0x90, 0x05, 0x22, 0x74, 0x6F, 0xF0, +0x90, 0x8B, 0x2D, 0x74, 0x06, 0xF0, 0x22, 0x90, 0x05, 0x22, 0x74, 0xFF, 0xF0, 0x90, 0x8B, 0x33, +0x74, 0x04, 0xF0, 0x22, 0x12, 0x4F, 0xED, 0x90, 0x8B, 0x33, 0x74, 0x04, 0xF0, 0x22, 0x90, 0x01, +0x57, 0xE0, 0x60, 0x3C, 0x90, 0x01, 0x57, 0xE4, 0xF0, 0x90, 0x01, 0x3C, 0x74, 0x02, 0xF0, 0x90, +0x8B, 0x1B, 0xE0, 0x60, 0x07, 0xE4, 0xF0, 0x53, 0x25, 0xFD, 0x80, 0x24, 0x90, 0x8B, 0x0C, 0xE0, +0x04, 0xF0, 0x53, 0x25, 0xEF, 0x90, 0x8B, 0x10, 0xE0, 0xFF, 0x90, 0x8B, 0x0C, 0xE0, 0xD3, 0x9F, +0x40, 0x0E, 0xE5, 0x21, 0xB4, 0x01, 0x09, 0x90, 0x8B, 0x0D, 0xE0, 0x70, 0x03, 0xE0, 0x04, 0xF0, +0x90, 0x01, 0x5B, 0xE0, 0x60, 0x10, 0x90, 0x01, 0x5B, 0xE4, 0xF0, 0x90, 0x01, 0x3C, 0x74, 0x04, +0xF0, 0xE4, 0x90, 0x8B, 0x18, 0xF0, 0x90, 0x01, 0x5F, 0xE0, 0x60, 0x10, 0x90, 0x01, 0x5F, 0xE4, +0xF0, 0x90, 0x01, 0x3C, 0x74, 0x08, 0xF0, 0xE4, 0x90, 0x8B, 0x17, 0xF0, 0x22, 0xE4, 0x90, 0x8B, +0x4F, 0xF0, 0xA3, 0xF0, 0x90, 0x05, 0xF8, 0xE0, 0x70, 0x0F, 0xA3, 0xE0, 0x70, 0x0B, 0xA3, 0xE0, +0x70, 0x07, 0xA3, 0xE0, 0x70, 0x03, 0x7F, 0x01, 0x22, 0xD3, 0x90, 0x8B, 0x50, 0xE0, 0x94, 0xE8, +0x90, 0x8B, 0x4F, 0xE0, 0x94, 0x03, 0x40, 0x03, 0x7F, 0x00, 0x22, 0x7F, 0x32, 0x7E, 0x00, 0x12, +0x37, 0x54, 0x90, 0x8B, 0x4F, 0xE4, 0x75, 0xF0, 0x01, 0x12, 0x42, 0x81, 0x80, 0xC6, 0x8F, 0x0F, +0xE4, 0x90, 0x8A, 0xF3, 0xF0, 0xE5, 0x0F, 0x14, 0xFE, 0x90, 0x8A, 0xF3, 0xE0, 0xFF, 0xC3, 0x9E, +0x50, 0x0E, 0xEF, 0x04, 0xFD, 0x12, 0x34, 0xB7, 0x90, 0x8A, 0xF3, 0xE0, 0x04, 0xF0, 0x80, 0xE5, +0xE5, 0x0F, 0x14, 0xFF, 0x7D, 0xFF, 0x12, 0x34, 0xB7, 0x90, 0x8A, 0xF3, 0xE5, 0x0F, 0xF0, 0x90, +0x8A, 0xF3, 0xE0, 0xC3, 0x94, 0xFF, 0x50, 0x0F, 0xE0, 0xFF, 0x04, 0xFD, 0x12, 0x34, 0xB7, 0x90, +0x8A, 0xF3, 0xE0, 0x04, 0xF0, 0x80, 0xE8, 0xAD, 0x0F, 0x7F, 0xFF, 0x02, 0x34, 0xB7, 0xDC, 0xD3, +}; +#endif + +//8188C_Formal_All_PHYforMP_111117 2011-11-23 +//8192C_Formal_92CU_PHYforMP_110817 2011-11-23 + +u32 Rtl8192CUPHY_REG_2TArray[PHY_REG_2TArrayLength] = { +0x024,0x0011800f, +0x028,0x00ffdb83, +0x800,0x80040002, +0x804,0x00000003, +0x808,0x0000fc00, +0x80c,0x0000000a, +0x810,0x10000330, //for Broadcom AP IOT +0x814,0x020c3d10, +0x818,0x02200385, +0x81c,0x00000000, +0x820,0x01000100, +0x824,0x00390004, +0x828,0x01000100, +0x82c,0x00390004, +0x830,0x27272727, +0x834,0x27272727, +0x838,0x27272727, +0x83c,0x27272727, +0x840,0x00010000, +0x844,0x00010000, +0x848,0x27272727, +0x84c,0x27272727, +0x850,0x00000000, +0x854,0x00000000, +0x858,0x569a569a, +0x85c,0x0c1b25a4, +0x860,0x66e60230, +0x864,0x061f0130, +0x868,0x27272727, +0x86c,0x2b2b2b27, +0x870,0x07000700, +0x874,0x22184000, +0x878,0x08080808, +0x87c,0x00000000, +0x880,0xc0083070, +0x884,0x000004d5, +0x888,0x00000000, +0x88c,0xcc0000c0, +0x890,0x00000800, +0x894,0xfffffffe, +0x898,0x40302010, +0x89c,0x00706050, +0x900,0x00000000, +0x904,0x00000023, +0x908,0x00000000, +0x90c,0x81121313, +0xa00,0x00d047c8, +0xa04,0x80ff000c, +0xa08,0x8c838300, +0xa0c,0x2e68120f, +0xa10,0x9500bb78, +0xa14,0x11144028, +0xa18,0x00881117, +0xa1c,0x89140f00, +0xa20,0x1a1b0000, +0xa24,0x090e1317, +0xa28,0x00000204, +0xa2c,0x00d30000, +0xa70,0x101fbf00, +0xa74,0x00000007, +0xc00,0x48071d40, +0xc04,0x03a05633, +0xc08,0x000000e4, +0xc0c,0x6c6c6c6c, +0xc10,0x08800000, +0xc14,0x40000100, +0xc18,0x08800000, +0xc1c,0x40000100, +0xc20,0x00000000, +0xc24,0x00000000, +0xc28,0x00000000, +0xc2c,0x00000000, +0xc30,0x69e9ac44, +0xc34,0x469652cf, +0xc38,0x49795994, +0xc3c,0x0a97971c, +0xc40,0x1f7c403f, +0xc44,0x000100b7, +0xc48,0xec020107, +0xc4c,0x007f037f, +0xc50,0x69543420, +0xc54,0x43bc0094, +0xc58,0x69543420, +0xc5c,0x433c0094, +0xc60,0x00000000, +0xc64,0x5116848b, +0xc68,0x47c00bff, +0xc6c,0x00000036, +0xc70,0x2c7f000d, +0xc74,0x2186115b, +0xc78,0x0000001f, +0xc7c,0x00b99612, +0xc80,0x40000100, +0xc84,0x20f60000, +0xc88,0x40000100, +0xc8c,0xa0e40000, +0xc90,0x00121820, +0xc94,0x00000000, +0xc98,0x00121820, +0xc9c,0x00007f7f, +0xca0,0x00000000, +0xca4,0x00000080, +0xca8,0x00000000, +0xcac,0x00000000, +0xcb0,0x00000000, +0xcb4,0x00000000, +0xcb8,0x00000000, +0xcbc,0x28000000, +0xcc0,0x00000000, +0xcc4,0x00000000, +0xcc8,0x00000000, +0xccc,0x00000000, +0xcd0,0x00000000, +0xcd4,0x00000000, +0xcd8,0x64b22427, +0xcdc,0x00766932, +0xce0,0x00222222, +0xce4,0x00000000, +0xce8,0x37644302, +0xcec,0x2f97d40c, +0xd00,0x00080740, +0xd04,0x00020403, +0xd08,0x0000907f, +0xd0c,0x20010201, +0xd10,0xa0633333, +0xd14,0x3333bc43, +0xd18,0x7a8f5b6b, +0xd2c,0xcc979975, +0xd30,0x00000000, +0xd34,0x80608000, +0xd38,0x00000000, +0xd3c,0x00027293, +0xd40,0x00000000, +0xd44,0x00000000, +0xd48,0x00000000, +0xd4c,0x00000000, +0xd50,0x6437140a, +0xd54,0x00000000, +0xd58,0x00000000, +0xd5c,0x30032064, +0xd60,0x4653de68, +0xd64,0x04518a3c, +0xd68,0x00002101, +0xd6c,0x2a201c16, +0xd70,0x1812362e, +0xd74,0x322c2220, +0xd78,0x000e3c24, +0xe00,0x2a2a2a2a, +0xe04,0x2a2a2a2a, +0xe08,0x03902a2a, +0xe10,0x2a2a2a2a, +0xe14,0x2a2a2a2a, +0xe18,0x2a2a2a2a, +0xe1c,0x2a2a2a2a, +0xe28,0x00000000, +0xe30,0x1000dc1f, +0xe34,0x10008c1f, +0xe38,0x02140102, +0xe3c,0x681604c2, +0xe40,0x01007c00, +0xe44,0x01004800, +0xe48,0xfb000000, +0xe4c,0x000028d1, +0xe50,0x1000dc1f, +0xe54,0x10008c1f, +0xe58,0x02140102, +0xe5c,0x28160d05, +0xe60,0x00000010, +0xe68,0x001b25a4, +0xe6c,0x63db25a4, +0xe70,0x63db25a4, +0xe74,0x0c1b25a4, +0xe78,0x0c1b25a4, +0xe7c,0x0c1b25a4, +0xe80,0x0c1b25a4, +0xe84,0x63db25a4, +0xe88,0x0c1b25a4, +0xe8c,0x63db25a4, +0xed0,0x63db25a4, +0xed4,0x63db25a4, +0xed8,0x63db25a4, +0xedc,0x001b25a4, +0xee0,0x001b25a4, +0xeec,0x6fdb25a4, +0xf14,0x00000003, +0xf4c,0x00000000, +0xf00,0x00000300, +}; + +u32 Rtl8192CUPHY_REG_1TArray[PHY_REG_1TArrayLength] = { +0x024,0x0011800f, +0x028,0x00ffdb83, +0x800,0x80040000, +0x804,0x00000001, +0x808,0x0000fc00, +0x80c,0x0000000a, +0x810,0x10000330, //for Broadcom AP IOT +0x814,0x020c3d10, +0x818,0x02200385, +0x81c,0x00000000, +0x820,0x01000100, +0x824,0x00390004, +0x828,0x00000000, +0x82c,0x00000000, +0x830,0x00000000, +0x834,0x00000000, +0x838,0x00000000, +0x83c,0x00000000, +0x840,0x00010000, +0x844,0x00000000, +0x848,0x00000000, +0x84c,0x00000000, +0x850,0x00000000, +0x854,0x00000000, +0x858,0x569a569a, +0x85c,0x001b25a4, +0x860,0x66e60230, +0x864,0x061f0130, +0x868,0x00000000, +0x86c,0x32323200, +0x870,0x07000700, +0x874,0x22004000, +0x878,0x00000808, +0x87c,0x00000000, +0x880,0xc0083070, +0x884,0x000004d5, +0x888,0x00000000, +0x88c,0xccc000c0, +0x890,0x00000800, +0x894,0xfffffffe, +0x898,0x40302010, +0x89c,0x00706050, +0x900,0x00000000, +0x904,0x00000023, +0x908,0x00000000, +0x90c,0x81121111, +0xa00,0x00d047c8, +0xa04,0x80ff000c, +0xa08,0x8c838300, +0xa0c,0x2e68120f, +0xa10,0x9500bb78, +0xa14,0x11144028, +0xa18,0x00881117, +0xa1c,0x89140f00, +0xa20,0x1a1b0000, +0xa24,0x090e1317, +0xa28,0x00000204, +0xa2c,0x00d30000, +0xa70,0x101fbf00, +0xa74,0x00000007, +0xc00,0x48071d40, +0xc04,0x03a05611, +0xc08,0x000000e4, +0xc0c,0x6c6c6c6c, +0xc10,0x08800000, +0xc14,0x40000100, +0xc18,0x08800000, +0xc1c,0x40000100, +0xc20,0x00000000, +0xc24,0x00000000, +0xc28,0x00000000, +0xc2c,0x00000000, +0xc30,0x69e9ac44, +0xc34,0x469652cf, +0xc38,0x49795994, +0xc3c,0x0a97971c, +0xc40,0x1f7c403f, +0xc44,0x000100b7, +0xc48,0xec020107, +0xc4c,0x007f037f, +0xc50,0x69543420, +0xc54,0x43bc0094, +0xc58,0x69543420, +0xc5c,0x433c0094, +0xc60,0x00000000, +0xc64,0x5116848b, +0xc68,0x47c00bff, +0xc6c,0x00000036, +0xc70,0x2c7f000d, +0xc74,0x018610db, +0xc78,0x0000001f, +0xc7c,0x00b91612, +0xc80,0x40000100, +0xc84,0x20f60000, +0xc88,0x40000100, +0xc8c,0x20200000, +0xc90,0x00121820, +0xc94,0x00000000, +0xc98,0x00121820, +0xc9c,0x00007f7f, +0xca0,0x00000000, +0xca4,0x00000080, +0xca8,0x00000000, +0xcac,0x00000000, +0xcb0,0x00000000, +0xcb4,0x00000000, +0xcb8,0x00000000, +0xcbc,0x28000000, +0xcc0,0x00000000, +0xcc4,0x00000000, +0xcc8,0x00000000, +0xccc,0x00000000, +0xcd0,0x00000000, +0xcd4,0x00000000, +0xcd8,0x64b22427, +0xcdc,0x00766932, +0xce0,0x00222222, +0xce4,0x00000000, +0xce8,0x37644302, +0xcec,0x2f97d40c, +0xd00,0x00000740, +0xd04,0x00020401, +0xd08,0x0000907f, +0xd0c,0x20010201, +0xd10,0xa0633333, +0xd14,0x3333bc43, +0xd18,0x7a8f5b6b, +0xd2c,0xcc979975, +0xd30,0x00000000, +0xd34,0x80608000, +0xd38,0x00000000, +0xd3c,0x00027293, +0xd40,0x00000000, +0xd44,0x00000000, +0xd48,0x00000000, +0xd4c,0x00000000, +0xd50,0x6437140a, +0xd54,0x00000000, +0xd58,0x00000000, +0xd5c,0x30032064, +0xd60,0x4653de68, +0xd64,0x04518a3c, +0xd68,0x00002101, +0xd6c,0x2a201c16, +0xd70,0x1812362e, +0xd74,0x322c2220, +0xd78,0x000e3c24, +0xe00,0x2a2a2a2a, +0xe04,0x2a2a2a2a, +0xe08,0x03902a2a, +0xe10,0x2a2a2a2a, +0xe14,0x2a2a2a2a, +0xe18,0x2a2a2a2a, +0xe1c,0x2a2a2a2a, +0xe28,0x00000000, +0xe30,0x1000dc1f, +0xe34,0x10008c1f, +0xe38,0x02140102, +0xe3c,0x681604c2, +0xe40,0x01007c00, +0xe44,0x01004800, +0xe48,0xfb000000, +0xe4c,0x000028d1, +0xe50,0x1000dc1f, +0xe54,0x10008c1f, +0xe58,0x02140102, +0xe5c,0x28160d05, +0xe60,0x00000008, +0xe68,0x001b25a4, +0xe6c,0x631b25a0, +0xe70,0x631b25a0, +0xe74,0x081b25a0, +0xe78,0x081b25a0, +0xe7c,0x081b25a0, +0xe80,0x081b25a0, +0xe84,0x631b25a0, +0xe88,0x081b25a0, +0xe8c,0x631b25a0, +0xed0,0x631b25a0, +0xed4,0x631b25a0, +0xed8,0x631b25a0, +0xedc,0x001b25a0, +0xee0,0x001b25a0, +0xeec,0x6b1b25a0, +0xf14,0x00000003, +0xf4c,0x00000000, +0xf00,0x00000300, +}; + +u32 Rtl8192CUPHY_ChangeTo_1T1RArray[PHY_ChangeTo_1T1RArrayLength] = { +0x0, }; + +u32 Rtl8192CUPHY_ChangeTo_1T2RArray[PHY_ChangeTo_1T2RArrayLength] = { +0x0, }; + +u32 Rtl8192CUPHY_ChangeTo_2T2RArray[PHY_ChangeTo_2T2RArrayLength] = { +0x0, }; + +u32 Rtl8192CUPHY_REG_Array_PG[PHY_REG_Array_PGLength] = { +0xe00,0xffffffff,0x07090c0c, +0xe04,0xffffffff,0x01020405, +0xe08,0x0000ff00,0x00000000, +0x86c,0xffffff00,0x00000000, +0xe10,0xffffffff,0x0b0c0c0e, +0xe14,0xffffffff,0x01030506, +0xe18,0xffffffff,0x0b0c0d0e, +0xe1c,0xffffffff,0x01030509, +0x830,0xffffffff,0x07090c0c, +0x834,0xffffffff,0x01020405, +0x838,0xffffff00,0x00000000, +0x86c,0x000000ff,0x00000000, +0x83c,0xffffffff,0x0b0c0d0e, +0x848,0xffffffff,0x01030509, +0x84c,0xffffffff,0x0b0c0d0e, +0x868,0xffffffff,0x01030509, +0xe00,0xffffffff,0x00000000, +0xe04,0xffffffff,0x00000000, +0xe08,0x0000ff00,0x00000000, +0x86c,0xffffff00,0x00000000, +0xe10,0xffffffff,0x00000000, +0xe14,0xffffffff,0x00000000, +0xe18,0xffffffff,0x00000000, +0xe1c,0xffffffff,0x00000000, +0x830,0xffffffff,0x00000000, +0x834,0xffffffff,0x00000000, +0x838,0xffffff00,0x00000000, +0x86c,0x000000ff,0x00000000, +0x83c,0xffffffff,0x00000000, +0x848,0xffffffff,0x00000000, +0x84c,0xffffffff,0x00000000, +0x868,0xffffffff,0x00000000, +0xe00,0xffffffff,0x04040404, +0xe04,0xffffffff,0x00020204, +0xe08,0x0000ff00,0x00000000, +0x86c,0xffffff00,0x00000000, +0xe10,0xffffffff,0x06060606, +0xe14,0xffffffff,0x00020406, +0xe18,0xffffffff,0x00000000, +0xe1c,0xffffffff,0x00000000, +0x830,0xffffffff,0x04040404, +0x834,0xffffffff,0x00020204, +0x838,0xffffff00,0x00000000, +0x86c,0x000000ff,0x00000000, +0x83c,0xffffffff,0x06060606, +0x848,0xffffffff,0x00020406, +0x84c,0xffffffff,0x00000000, +0x868,0xffffffff,0x00000000, +0xe00,0xffffffff,0x00000000, +0xe04,0xffffffff,0x00000000, +0xe08,0x0000ff00,0x00000000, +0x86c,0xffffff00,0x00000000, +0xe10,0xffffffff,0x00000000, +0xe14,0xffffffff,0x00000000, +0xe18,0xffffffff,0x00000000, +0xe1c,0xffffffff,0x00000000, +0x830,0xffffffff,0x00000000, +0x834,0xffffffff,0x00000000, +0x838,0xffffff00,0x00000000, +0x86c,0x000000ff,0x00000000, +0x83c,0xffffffff,0x00000000, +0x848,0xffffffff,0x00000000, +0x84c,0xffffffff,0x00000000, +0x868,0xffffffff,0x00000000, +0xe00,0xffffffff,0x00000000, +0xe04,0xffffffff,0x00000000, +0xe08,0x0000ff00,0x00000000, +0x86c,0xffffff00,0x00000000, +0xe10,0xffffffff,0x00000000, +0xe14,0xffffffff,0x00000000, +0xe18,0xffffffff,0x00000000, +0xe1c,0xffffffff,0x00000000, +0x830,0xffffffff,0x00000000, +0x834,0xffffffff,0x00000000, +0x838,0xffffff00,0x00000000, +0x86c,0x000000ff,0x00000000, +0x83c,0xffffffff,0x00000000, +0x848,0xffffffff,0x00000000, +0x84c,0xffffffff,0x00000000, +0x868,0xffffffff,0x00000000, +0xe00,0xffffffff,0x04040404, +0xe04,0xffffffff,0x00020204, +0xe08,0x0000ff00,0x00000000, +0x86c,0xffffff00,0x00000000, +0xe10,0xffffffff,0x00000000, +0xe14,0xffffffff,0x00000000, +0xe18,0xffffffff,0x00000000, +0xe1c,0xffffffff,0x00000000, +0x830,0xffffffff,0x04040404, +0x834,0xffffffff,0x00020204, +0x838,0xffffff00,0x00000000, +0x86c,0x000000ff,0x00000000, +0x83c,0xffffffff,0x00000000, +0x848,0xffffffff,0x00000000, +0x84c,0xffffffff,0x00000000, +0x868,0xffffffff,0x00000000, +0xe00,0xffffffff,0x00000000, +0xe04,0xffffffff,0x00000000, +0xe08,0x0000ff00,0x00000000, +0x86c,0xffffff00,0x00000000, +0xe10,0xffffffff,0x00000000, +0xe14,0xffffffff,0x00000000, +0xe18,0xffffffff,0x00000000, +0xe1c,0xffffffff,0x00000000, +0x830,0xffffffff,0x00000000, +0x834,0xffffffff,0x00000000, +0x838,0xffffff00,0x00000000, +0x86c,0x000000ff,0x00000000, +0x83c,0xffffffff,0x00000000, +0x848,0xffffffff,0x00000000, +0x84c,0xffffffff,0x00000000, +0x868,0xffffffff,0x00000000, +}; + +u32 Rtl8192CUPHY_REG_Array_PG_mCard[PHY_REG_Array_PG_mCardLength] = { +0xe00,0xffffffff,0x0a0c0c0c, +0xe04,0xffffffff,0x02040608, +0xe08,0x0000ff00,0x00000000, +0x86c,0xffffff00,0x00000000, +0xe10,0xffffffff,0x0a0c0d0e, +0xe14,0xffffffff,0x02040608, +0xe18,0xffffffff,0x0a0c0d0e, +0xe1c,0xffffffff,0x02040608, +0x830,0xffffffff,0x0a0c0c0c, +0x834,0xffffffff,0x02040608, +0x838,0xffffff00,0x00000000, +0x86c,0x000000ff,0x00000000, +0x83c,0xffffffff,0x0a0c0d0e, +0x848,0xffffffff,0x02040608, +0x84c,0xffffffff,0x0a0c0d0e, +0x868,0xffffffff,0x02040608, +0xe00,0xffffffff,0x00000000, +0xe04,0xffffffff,0x00000000, +0xe08,0x0000ff00,0x00000000, +0x86c,0xffffff00,0x00000000, +0xe10,0xffffffff,0x00000000, +0xe14,0xffffffff,0x00000000, +0xe18,0xffffffff,0x00000000, +0xe1c,0xffffffff,0x00000000, +0x830,0xffffffff,0x00000000, +0x834,0xffffffff,0x00000000, +0x838,0xffffff00,0x00000000, +0x86c,0x000000ff,0x00000000, +0x83c,0xffffffff,0x00000000, +0x848,0xffffffff,0x00000000, +0x84c,0xffffffff,0x00000000, +0x868,0xffffffff,0x00000000, +0xe00,0xffffffff,0x04040404, +0xe04,0xffffffff,0x00020204, +0xe08,0x0000ff00,0x00000000, +0x86c,0xffffff00,0x00000000, +0xe10,0xffffffff,0x06060606, +0xe14,0xffffffff,0x00020406, +0xe18,0xffffffff,0x00000000, +0xe1c,0xffffffff,0x00000000, +0x830,0xffffffff,0x04040404, +0x834,0xffffffff,0x00020204, +0x838,0xffffff00,0x00000000, +0x86c,0x000000ff,0x00000000, +0x83c,0xffffffff,0x06060606, +0x848,0xffffffff,0x00020406, +0x84c,0xffffffff,0x00000000, +0x868,0xffffffff,0x00000000, +0xe00,0xffffffff,0x00000000, +0xe04,0xffffffff,0x00000000, +0xe08,0x0000ff00,0x00000000, +0x86c,0xffffff00,0x00000000, +0xe10,0xffffffff,0x00000000, +0xe14,0xffffffff,0x00000000, +0xe18,0xffffffff,0x00000000, +0xe1c,0xffffffff,0x00000000, +0x830,0xffffffff,0x00000000, +0x834,0xffffffff,0x00000000, +0x838,0xffffff00,0x00000000, +0x86c,0x000000ff,0x00000000, +0x83c,0xffffffff,0x00000000, +0x848,0xffffffff,0x00000000, +0x84c,0xffffffff,0x00000000, +0x868,0xffffffff,0x00000000, +0xe00,0xffffffff,0x00000000, +0xe04,0xffffffff,0x00000000, +0xe08,0x0000ff00,0x00000000, +0x86c,0xffffff00,0x00000000, +0xe10,0xffffffff,0x00000000, +0xe14,0xffffffff,0x00000000, +0xe18,0xffffffff,0x00000000, +0xe1c,0xffffffff,0x00000000, +0x830,0xffffffff,0x00000000, +0x834,0xffffffff,0x00000000, +0x838,0xffffff00,0x00000000, +0x86c,0x000000ff,0x00000000, +0x83c,0xffffffff,0x00000000, +0x848,0xffffffff,0x00000000, +0x84c,0xffffffff,0x00000000, +0x868,0xffffffff,0x00000000, +0xe00,0xffffffff,0x04040404, +0xe04,0xffffffff,0x00020204, +0xe08,0x0000ff00,0x00000000, +0x86c,0xffffff00,0x00000000, +0xe10,0xffffffff,0x00000000, +0xe14,0xffffffff,0x00000000, +0xe18,0xffffffff,0x00000000, +0xe1c,0xffffffff,0x00000000, +0x830,0xffffffff,0x04040404, +0x834,0xffffffff,0x00020204, +0x838,0xffffff00,0x00000000, +0x86c,0x000000ff,0x00000000, +0x83c,0xffffffff,0x00000000, +0x848,0xffffffff,0x00000000, +0x84c,0xffffffff,0x00000000, +0x868,0xffffffff,0x00000000, +0xe00,0xffffffff,0x00000000, +0xe04,0xffffffff,0x00000000, +0xe08,0x0000ff00,0x00000000, +0x86c,0xffffff00,0x00000000, +0xe10,0xffffffff,0x00000000, +0xe14,0xffffffff,0x00000000, +0xe18,0xffffffff,0x00000000, +0xe1c,0xffffffff,0x00000000, +0x830,0xffffffff,0x00000000, +0x834,0xffffffff,0x00000000, +0x838,0xffffff00,0x00000000, +0x86c,0x000000ff,0x00000000, +0x83c,0xffffffff,0x00000000, +0x848,0xffffffff,0x00000000, +0x84c,0xffffffff,0x00000000, +0x868,0xffffffff,0x00000000, +}; + +u32 Rtl8192CUPHY_REG_Array_MP[PHY_REG_Array_MPLength] = { +0xc30,0x69e9ac4a, +0xc3c,0x0a979718, +}; + +u32 Rtl8192CUPHY_REG_1T_HPArray[PHY_REG_1T_HPArrayLength] = { +0x024,0x0011800f, +0x028,0x00ffdb83, +0x040,0x000c0004, +0x800,0x80040000, +0x804,0x00000001, +0x808,0x0000fc00, +0x80c,0x0000000a, +0x810,0x10000330, //for Broadcom AP IOT +0x814,0x020c3d10, +0x818,0x02200385, +0x81c,0x00000000, +0x820,0x01000100, +0x824,0x00390204, +0x828,0x00000000, +0x82c,0x00000000, +0x830,0x00000000, +0x834,0x00000000, +0x838,0x00000000, +0x83c,0x00000000, +0x840,0x00010000, +0x844,0x00000000, +0x848,0x00000000, +0x84c,0x00000000, +0x850,0x00000000, +0x854,0x00000000, +0x858,0x569a569a, +0x85c,0x001b25a4, +0x860,0x66e60230, +0x864,0x061f0130, +0x868,0x00000000, +0x86c,0x20202000, +0x870,0x03000300, +0x874,0x22004000, +0x878,0x00000808, +0x87c,0x00ffc3f1, +0x880,0xc0083070, +0x884,0x000004d5, +0x888,0x00000000, +0x88c,0xccc000c0, +0x890,0x00000800, +0x894,0xfffffffe, +0x898,0x40302010, +0x89c,0x00706050, +0x900,0x00000000, +0x904,0x00000023, +0x908,0x00000000, +0x90c,0x81121111, +0xa00,0x00d047c8, +0xa04,0x80ff000c, +0xa08,0x8c838300, +0xa0c,0x2e68120f, +0xa10,0x9500bb78, +0xa14,0x11144028, +0xa18,0x00881117, +0xa1c,0x89140f00, +0xa20,0x15160000, +0xa24,0x070b0f12, +0xa28,0x00000104, +0xa2c,0x00d30000, +0xa70,0x101fbf00, +0xa74,0x00000007, +0xc00,0x48071d40, +0xc04,0x03a05611, +0xc08,0x000000e4, +0xc0c,0x6c6c6c6c, +0xc10,0x08800000, +0xc14,0x40000100, +0xc18,0x08800000, +0xc1c,0x40000100, +0xc20,0x00000000, +0xc24,0x00000000, +0xc28,0x00000000, +0xc2c,0x00000000, +0xc30,0x69e9ac44, +0xc34,0x469652cf, +0xc38,0x49795994, +0xc3c,0x0a97971c, +0xc40,0x1f7c403f, +0xc44,0x000100b7, +0xc48,0xec020107, +0xc4c,0x007f037f, +0xc50,0x6954342e, +0xc54,0x43bc0094, +0xc58,0x6954342f, +0xc5c,0x433c0094, +0xc60,0x00000000, +0xc64,0x5116848b, +0xc68,0x47c00bff, +0xc6c,0x00000036, +0xc70,0x2c46000d, +0xc74,0x018610db, +0xc78,0x0000001f, +0xc7c,0x00b91612, +0xc80,0x24000090, +0xc84,0x20f60000, +0xc88,0x24000090, +0xc8c,0x20200000, +0xc90,0x00121820, +0xc94,0x00000000, +0xc98,0x00121820, +0xc9c,0x00007f7f, +0xca0,0x00000000, +0xca4,0x00000080, +0xca8,0x00000000, +0xcac,0x00000000, +0xcb0,0x00000000, +0xcb4,0x00000000, +0xcb8,0x00000000, +0xcbc,0x28000000, +0xcc0,0x00000000, +0xcc4,0x00000000, +0xcc8,0x00000000, +0xccc,0x00000000, +0xcd0,0x00000000, +0xcd4,0x00000000, +0xcd8,0x64b22427, +0xcdc,0x00766932, +0xce0,0x00222222, +0xce4,0x00000000, +0xce8,0x37644302, +0xcec,0x2f97d40c, +0xd00,0x00000740, +0xd04,0x00020401, +0xd08,0x0000907f, +0xd0c,0x20010201, +0xd10,0xa0633333, +0xd14,0x3333bc43, +0xd18,0x7a8f5b6b, +0xd2c,0xcc979975, +0xd30,0x00000000, +0xd34,0x80608000, +0xd38,0x00000000, +0xd3c,0x00027293, +0xd40,0x00000000, +0xd44,0x00000000, +0xd48,0x00000000, +0xd4c,0x00000000, +0xd50,0x6437140a, +0xd54,0x00000000, +0xd58,0x00000000, +0xd5c,0x30032064, +0xd60,0x4653de68, +0xd64,0x04518a3c, +0xd68,0x00002101, +0xd6c,0x2a201c16, +0xd70,0x1812362e, +0xd74,0x322c2220, +0xd78,0x000e3c24, +0xe00,0x24242424, +0xe04,0x24242424, +0xe08,0x03902024, +0xe10,0x24242424, +0xe14,0x24242424, +0xe18,0x24242424, +0xe1c,0x24242424, +0xe28,0x00000000, +0xe30,0x1000dc1f, +0xe34,0x10008c1f, +0xe38,0x02140102, +0xe3c,0x681604c2, +0xe40,0x01007c00, +0xe44,0x01004800, +0xe48,0xfb000000, +0xe4c,0x000028d1, +0xe50,0x1000dc1f, +0xe54,0x10008c1f, +0xe58,0x02140102, +0xe5c,0x28160d05, +0xe60,0x00000008, +0xe68,0x001b25a4, +0xe6c,0x631b25a0, +0xe70,0x631b25a0, +0xe74,0x081b25a0, +0xe78,0x081b25a0, +0xe7c,0x081b25a0, +0xe80,0x081b25a0, +0xe84,0x631b25a0, +0xe88,0x081b25a0, +0xe8c,0x631b25a0, +0xed0,0x631b25a0, +0xed4,0x631b25a0, +0xed8,0x631b25a0, +0xedc,0x001b25a0, +0xee0,0x001b25a0, +0xeec,0x6b1b25a0, +0xee8,0x31555448, +0xf14,0x00000003, +0xf4c,0x00000000, +0xf00,0x00000300, +}; + +u32 Rtl8192CUPHY_REG_1T_mCardArray[PHY_REG_1T_mCardArrayLength] = { +0x024,0x0011800d, +0x028,0x00ffdb83, +0x800,0x80040000, +0x804,0x00000001, +0x808,0x0000fc00, +0x80c,0x0000000a, +0x810,0x10000330, //for Broadcom AP IOT +0x814,0x020c3d10, +0x818,0x02200385, +0x81c,0x00000000, +0x820,0x01000100, +0x824,0x00390004, +0x828,0x00000000, +0x82c,0x00000000, +0x830,0x00000000, +0x834,0x00000000, +0x838,0x00000000, +0x83c,0x00000000, +0x840,0x00010000, +0x844,0x00000000, +0x848,0x00000000, +0x84c,0x00000000, +0x850,0x00000000, +0x854,0x00000000, +0x858,0x569a569a, +0x85c,0x001b25a4, +0x860,0x66e60230, +0x864,0x061f0130, +0x868,0x00000000, +0x86c,0x32323200, +0x870,0x07000700, +0x874,0x22004000, +0x878,0x00000808, +0x87c,0x00000000, +0x880,0xc0083070, +0x884,0x000004d5, +0x888,0x00000000, +0x88c,0xccc000c0, +0x890,0x00000800, +0x894,0xfffffffe, +0x898,0x40302010, +0x89c,0x00706050, +0x900,0x00000000, +0x904,0x00000023, +0x908,0x00000000, +0x90c,0x81121111, +0xa00,0x00d047c8, +0xa04,0x80ff000c, +0xa08,0x8c838300, +0xa0c,0x2e68120f, +0xa10,0x9500bb78, +0xa14,0x11144028, +0xa18,0x00881117, +0xa1c,0x89140f00, +0xa20,0x1a1b0000, +0xa24,0x090e1317, +0xa28,0x00000204, +0xa2c,0x00d30000, +0xa70,0x101fbf00, +0xa74,0x00000007, +0xc00,0x48071d40, +0xc04,0x03a05611, +0xc08,0x000000e4, +0xc0c,0x6c6c6c6c, +0xc10,0x08800000, +0xc14,0x40000100, +0xc18,0x08800000, +0xc1c,0x40000100, +0xc20,0x00000000, +0xc24,0x00000000, +0xc28,0x00000000, +0xc2c,0x00000000, +0xc30,0x69e9ac44, +0xc34,0x469652cf, +0xc38,0x49795994, +0xc3c,0x0a97971c, +0xc40,0x1f7c403f, +0xc44,0x000100b7, +0xc48,0xec020107, +0xc4c,0x007f037f, +0xc50,0x69543420, +0xc54,0x43bc0094, +0xc58,0x69543420, +0xc5c,0x433c0094, +0xc60,0x00000000, +0xc64,0x5116848b, +0xc68,0x47c00bff, +0xc6c,0x00000036, +0xc70,0x2c7f000d, +0xc74,0x018610db, +0xc78,0x0000001f, +0xc7c,0x00b91612, +0xc80,0x40000100, +0xc84,0x20f60000, +0xc88,0x40000100, +0xc8c,0x20200000, +0xc90,0x00121820, +0xc94,0x00000000, +0xc98,0x00121820, +0xc9c,0x00007f7f, +0xca0,0x00000000, +0xca4,0x00000080, +0xca8,0x00000000, +0xcac,0x00000000, +0xcb0,0x00000000, +0xcb4,0x00000000, +0xcb8,0x00000000, +0xcbc,0x28000000, +0xcc0,0x00000000, +0xcc4,0x00000000, +0xcc8,0x00000000, +0xccc,0x00000000, +0xcd0,0x00000000, +0xcd4,0x00000000, +0xcd8,0x64b22427, +0xcdc,0x00766932, +0xce0,0x00222222, +0xce4,0x00000000, +0xce8,0x37644302, +0xcec,0x2f97d40c, +0xd00,0x00000740, +0xd04,0x00020401, +0xd08,0x0000907f, +0xd0c,0x20010201, +0xd10,0xa0633333, +0xd14,0x3333bc43, +0xd18,0x7a8f5b6b, +0xd2c,0xcc979975, +0xd30,0x00000000, +0xd34,0x80608000, +0xd38,0x00000000, +0xd3c,0x00027293, +0xd40,0x00000000, +0xd44,0x00000000, +0xd48,0x00000000, +0xd4c,0x00000000, +0xd50,0x6437140a, +0xd54,0x00000000, +0xd58,0x00000000, +0xd5c,0x30032064, +0xd60,0x4653de68, +0xd64,0x04518a3c, +0xd68,0x00002101, +0xd6c,0x2a201c16, +0xd70,0x1812362e, +0xd74,0x322c2220, +0xd78,0x000e3c24, +0xe00,0x2a2a2a2a, +0xe04,0x2a2a2a2a, +0xe08,0x03902a2a, +0xe10,0x2a2a2a2a, +0xe14,0x2a2a2a2a, +0xe18,0x2a2a2a2a, +0xe1c,0x2a2a2a2a, +0xe28,0x00000000, +0xe30,0x1000dc1f, +0xe34,0x10008c1f, +0xe38,0x02140102, +0xe3c,0x681604c2, +0xe40,0x01007c00, +0xe44,0x01004800, +0xe48,0xfb000000, +0xe4c,0x000028d1, +0xe50,0x1000dc1f, +0xe54,0x10008c1f, +0xe58,0x02140102, +0xe5c,0x28160d05, +0xe60,0x00000008, +0xe68,0x001b25a4, +0xe6c,0x631b25a0, +0xe70,0x631b25a0, +0xe74,0x081b25a0, +0xe78,0x081b25a0, +0xe7c,0x081b25a0, +0xe80,0x081b25a0, +0xe84,0x631b25a0, +0xe88,0x081b25a0, +0xe8c,0x631b25a0, +0xed0,0x631b25a0, +0xed4,0x631b25a0, +0xed8,0x631b25a0, +0xedc,0x001b25a0, +0xee0,0x001b25a0, +0xeec,0x6b1b25a0, +0xf14,0x00000003, +0xf4c,0x00000000, +0xf00,0x00000300, +}; + +u32 Rtl8192CUPHY_REG_2T_mCardArray[PHY_REG_2T_mCardArrayLength] = { +0x024,0x0011800d, +0x028,0x00ffdb83, +0x800,0x80040002, +0x804,0x00000003, +0x808,0x0000fc00, +0x80c,0x0000000a, +0x810,0x10000330, //for Broadcom AP IOT +0x814,0x020c3d10, +0x818,0x02200385, +0x81c,0x00000000, +0x820,0x01000100, +0x824,0x00390004, +0x828,0x01000100, +0x82c,0x00390004, +0x830,0x27272727, +0x834,0x27272727, +0x838,0x27272727, +0x83c,0x27272727, +0x840,0x00010000, +0x844,0x00010000, +0x848,0x27272727, +0x84c,0x27272727, +0x850,0x00000000, +0x854,0x00000000, +0x858,0x569a569a, +0x85c,0x0c1b25a4, +0x860,0x66e60230, +0x864,0x061f0130, +0x868,0x27272727, +0x86c,0x2b2b2b27, +0x870,0x07000700, +0x874,0x22184000, +0x878,0x08080808, +0x87c,0x00000000, +0x880,0xc0083070, +0x884,0x000004d5, +0x888,0x00000000, +0x88c,0xcc0000c0, +0x890,0x00000800, +0x894,0xfffffffe, +0x898,0x40302010, +0x89c,0x00706050, +0x900,0x00000000, +0x904,0x00000023, +0x908,0x00000000, +0x90c,0x81121313, +0xa00,0x00d047c8, +0xa04,0x80ff000c, +0xa08,0x8c838300, +0xa0c,0x2e68120f, +0xa10,0x9500bb78, +0xa14,0x11144028, +0xa18,0x00881117, +0xa1c,0x89140f00, +0xa20,0x1a1b0000, +0xa24,0x090e1317, +0xa28,0x00000204, +0xa2c,0x00d30000, +0xa70,0x101fbf00, +0xa74,0x00000007, +0xc00,0x48071d40, +0xc04,0x03a05633, +0xc08,0x000000e4, +0xc0c,0x6c6c6c6c, +0xc10,0x08800000, +0xc14,0x40000100, +0xc18,0x08800000, +0xc1c,0x40000100, +0xc20,0x00000000, +0xc24,0x00000000, +0xc28,0x00000000, +0xc2c,0x00000000, +0xc30,0x69e9ac44, +0xc34,0x469652cf, +0xc38,0x49795994, +0xc3c,0x0a97971c, +0xc40,0x1f7c403f, +0xc44,0x000100b7, +0xc48,0xec020107, +0xc4c,0x007f037f, +0xc50,0x69543420, +0xc54,0x43bc0094, +0xc58,0x69543420, +0xc5c,0x433c0094, +0xc60,0x00000000, +0xc64,0x5116848b, +0xc68,0x47c00bff, +0xc6c,0x00000036, +0xc70,0x2c7f000d, +0xc74,0x218610db, +0xc78,0x0000001f, +0xc7c,0x00b91612, +0xc80,0x40000100, +0xc84,0x20f60000, +0xc88,0x40000100, +0xc8c,0xa0e40000, +0xc90,0x00121820, +0xc94,0x00000000, +0xc98,0x00121820, +0xc9c,0x00007f7f, +0xca0,0x00000000, +0xca4,0x00000080, +0xca8,0x00000000, +0xcac,0x00000000, +0xcb0,0x00000000, +0xcb4,0x00000000, +0xcb8,0x00000000, +0xcbc,0x28000000, +0xcc0,0x00000000, +0xcc4,0x00000000, +0xcc8,0x00000000, +0xccc,0x00000000, +0xcd0,0x00000000, +0xcd4,0x00000000, +0xcd8,0x64b22427, +0xcdc,0x00766932, +0xce0,0x00222222, +0xce4,0x00000000, +0xce8,0x37644302, +0xcec,0x2f97d40c, +0xd00,0x00080740, +0xd04,0x00020403, +0xd08,0x0000907f, +0xd0c,0x20010201, +0xd10,0xa0633333, +0xd14,0x3333bc43, +0xd18,0x7a8f5b6b, +0xd2c,0xcc979975, +0xd30,0x00000000, +0xd34,0x80608000, +0xd38,0x00000000, +0xd3c,0x00027293, +0xd40,0x00000000, +0xd44,0x00000000, +0xd48,0x00000000, +0xd4c,0x00000000, +0xd50,0x6437140a, +0xd54,0x00000000, +0xd58,0x00000000, +0xd5c,0x30032064, +0xd60,0x4653de68, +0xd64,0x04518a3c, +0xd68,0x00002101, +0xd6c,0x2a201c16, +0xd70,0x1812362e, +0xd74,0x322c2220, +0xd78,0x000e3c24, +0xe00,0x2a2a2a2a, +0xe04,0x2a2a2a2a, +0xe08,0x03902a2a, +0xe10,0x2a2a2a2a, +0xe14,0x2a2a2a2a, +0xe18,0x2a2a2a2a, +0xe1c,0x2a2a2a2a, +0xe28,0x00000000, +0xe30,0x1000dc1f, +0xe34,0x10008c1f, +0xe38,0x02140102, +0xe3c,0x681604c2, +0xe40,0x01007c00, +0xe44,0x01004800, +0xe48,0xfb000000, +0xe4c,0x000028d1, +0xe50,0x1000dc1f, +0xe54,0x10008c1f, +0xe58,0x02140102, +0xe5c,0x28160d05, +0xe60,0x00000010, +0xe68,0x001b25a4, +0xe6c,0x63db25a4, +0xe70,0x63db25a4, +0xe74,0x0c1b25a4, +0xe78,0x0c1b25a4, +0xe7c,0x0c1b25a4, +0xe80,0x0c1b25a4, +0xe84,0x63db25a4, +0xe88,0x0c1b25a4, +0xe8c,0x63db25a4, +0xed0,0x63db25a4, +0xed4,0x63db25a4, +0xed8,0x63db25a4, +0xedc,0x001b25a4, +0xee0,0x001b25a4, +0xeec,0x6fdb25a4, +0xf14,0x00000003, +0xf4c,0x00000000, +0xf00,0x00000300, +}; + +u32 Rtl8192CUPHY_REG_Array_PG_HP[PHY_REG_Array_PG_HPLength] = { +0xe00,0xffffffff,0x06080808, +0xe04,0xffffffff,0x00040406, +0xe08,0x0000ff00,0x00000000, +0x86c,0xffffff00,0x00000000, +0xe10,0xffffffff,0x04060608, +0xe14,0xffffffff,0x00020204, +0xe18,0xffffffff,0x04060608, +0xe1c,0xffffffff,0x00020204, +0x830,0xffffffff,0x06080808, +0x834,0xffffffff,0x00040406, +0x838,0xffffff00,0x00000000, +0x86c,0x000000ff,0x00000000, +0x83c,0xffffffff,0x04060608, +0x848,0xffffffff,0x00020204, +0x84c,0xffffffff,0x04060608, +0x868,0xffffffff,0x00020204, +0xe00,0xffffffff,0x00000000, +0xe04,0xffffffff,0x00000000, +0xe08,0x0000ff00,0x00000000, +0x86c,0xffffff00,0x00000000, +0xe10,0xffffffff,0x00000000, +0xe14,0xffffffff,0x00000000, +0xe18,0xffffffff,0x00000000, +0xe1c,0xffffffff,0x00000000, +0x830,0xffffffff,0x00000000, +0x834,0xffffffff,0x00000000, +0x838,0xffffff00,0x00000000, +0x86c,0x000000ff,0x00000000, +0x83c,0xffffffff,0x00000000, +0x848,0xffffffff,0x00000000, +0x84c,0xffffffff,0x00000000, +0x868,0xffffffff,0x00000000, +0xe00,0xffffffff,0x00000000, +0xe04,0xffffffff,0x00000000, +0xe08,0x0000ff00,0x00000000, +0x86c,0xffffff00,0x00000000, +0xe10,0xffffffff,0x00000000, +0xe14,0xffffffff,0x00000000, +0xe18,0xffffffff,0x00000000, +0xe1c,0xffffffff,0x00000000, +0x830,0xffffffff,0x00000000, +0x834,0xffffffff,0x00000000, +0x838,0xffffff00,0x00000000, +0x86c,0x000000ff,0x00000000, +0x83c,0xffffffff,0x00000000, +0x848,0xffffffff,0x00000000, +0x84c,0xffffffff,0x00000000, +0x868,0xffffffff,0x00000000, +0xe00,0xffffffff,0x00000000, +0xe04,0xffffffff,0x00000000, +0xe08,0x0000ff00,0x00000000, +0x86c,0xffffff00,0x00000000, +0xe10,0xffffffff,0x00000000, +0xe14,0xffffffff,0x00000000, +0xe18,0xffffffff,0x00000000, +0xe1c,0xffffffff,0x00000000, +0x830,0xffffffff,0x00000000, +0x834,0xffffffff,0x00000000, +0x838,0xffffff00,0x00000000, +0x86c,0x000000ff,0x00000000, +0x83c,0xffffffff,0x00000000, +0x848,0xffffffff,0x00000000, +0x84c,0xffffffff,0x00000000, +0x868,0xffffffff,0x00000000, +0xe00,0xffffffff,0x00000000, +0xe04,0xffffffff,0x00000000, +0xe08,0x0000ff00,0x00000000, +0x86c,0xffffff00,0x00000000, +0xe10,0xffffffff,0x00000000, +0xe14,0xffffffff,0x00000000, +0xe18,0xffffffff,0x00000000, +0xe1c,0xffffffff,0x00000000, +0x830,0xffffffff,0x00000000, +0x834,0xffffffff,0x00000000, +0x838,0xffffff00,0x00000000, +0x86c,0x000000ff,0x00000000, +0x83c,0xffffffff,0x00000000, +0x848,0xffffffff,0x00000000, +0x84c,0xffffffff,0x00000000, +0x868,0xffffffff,0x00000000, +0xe00,0xffffffff,0x00000000, +0xe04,0xffffffff,0x00000000, +0xe08,0x0000ff00,0x00000000, +0x86c,0xffffff00,0x00000000, +0xe10,0xffffffff,0x00000000, +0xe14,0xffffffff,0x00000000, +0xe18,0xffffffff,0x00000000, +0xe1c,0xffffffff,0x00000000, +0x830,0xffffffff,0x00000000, +0x834,0xffffffff,0x00000000, +0x838,0xffffff00,0x00000000, +0x86c,0x000000ff,0x00000000, +0x83c,0xffffffff,0x00000000, +0x848,0xffffffff,0x00000000, +0x84c,0xffffffff,0x00000000, +0x868,0xffffffff,0x00000000, +0xe00,0xffffffff,0x00000000, +0xe04,0xffffffff,0x00000000, +0xe08,0x0000ff00,0x00000000, +0x86c,0xffffff00,0x00000000, +0xe10,0xffffffff,0x00000000, +0xe14,0xffffffff,0x00000000, +0xe18,0xffffffff,0x00000000, +0xe1c,0xffffffff,0x00000000, +0x830,0xffffffff,0x00000000, +0x834,0xffffffff,0x00000000, +0x838,0xffffff00,0x00000000, +0x86c,0x000000ff,0x00000000, +0x83c,0xffffffff,0x00000000, +0x848,0xffffffff,0x00000000, +0x84c,0xffffffff,0x00000000, +0x868,0xffffffff,0x00000000, +}; + +u32 Rtl8192CURadioA_2TArray[RadioA_2TArrayLength] = { +0x000,0x00030159, +0x001,0x00031284, +0x002,0x00098000, +0x003,0x00018c63, +0x004,0x000210e7, +0x009,0x0002044f, +0x00a,0x0001adb1, +0x00b,0x00054867, +0x00c,0x0008992e, +0x00d,0x0000e52c, +0x00e,0x00039ce7, +0x00f,0x00000451, +0x019,0x00000000, +0x01a,0x00010255, +0x01b,0x00060a00, +0x01c,0x000fc378, +0x01d,0x000a1250, +0x01e,0x0004445f, +0x01f,0x00080001, +0x020,0x0000b614, +0x021,0x0006c000, +0x022,0x00000000, +0x023,0x00001558, +0x024,0x00000060, +0x025,0x00000483, +0x026,0x0004f000, +0x027,0x000ec7d9, +0x028,0x000577c0, +0x029,0x00004783, +0x02a,0x00000001, +0x02b,0x00021334, +0x02a,0x00000000, +0x02b,0x00000054, +0x02a,0x00000001, +0x02b,0x00000808, +0x02b,0x00053333, +0x02c,0x0000000c, +0x02a,0x00000002, +0x02b,0x00000808, +0x02b,0x0005b333, +0x02c,0x0000000d, +0x02a,0x00000003, +0x02b,0x00000808, +0x02b,0x00063333, +0x02c,0x0000000d, +0x02a,0x00000004, +0x02b,0x00000808, +0x02b,0x0006b333, +0x02c,0x0000000d, +0x02a,0x00000005, +0x02b,0x00000808, +0x02b,0x00073333, +0x02c,0x0000000d, +0x02a,0x00000006, +0x02b,0x00000709, +0x02b,0x0005b333, +0x02c,0x0000000d, +0x02a,0x00000007, +0x02b,0x00000709, +0x02b,0x00063333, +0x02c,0x0000000d, +0x02a,0x00000008, +0x02b,0x0000060a, +0x02b,0x0004b333, +0x02c,0x0000000d, +0x02a,0x00000009, +0x02b,0x0000060a, +0x02b,0x00053333, +0x02c,0x0000000d, +0x02a,0x0000000a, +0x02b,0x0000060a, +0x02b,0x0005b333, +0x02c,0x0000000d, +0x02a,0x0000000b, +0x02b,0x0000060a, +0x02b,0x00063333, +0x02c,0x0000000d, +0x02a,0x0000000c, +0x02b,0x0000060a, +0x02b,0x0006b333, +0x02c,0x0000000d, +0x02a,0x0000000d, +0x02b,0x0000060a, +0x02b,0x00073333, +0x02c,0x0000000d, +0x02a,0x0000000e, +0x02b,0x0000050b, +0x02b,0x00066666, +0x02c,0x0000001a, +0x02a,0x000e0000, +0x010,0x0004000f, +0x011,0x000e31fc, +0x010,0x0006000f, +0x011,0x000ff9f8, +0x010,0x0002000f, +0x011,0x000203f9, +0x010,0x0003000f, +0x011,0x000ff500, +0x010,0x00000000, +0x011,0x00000000, +0x010,0x0008000f, +0x011,0x0003f100, +0x010,0x0009000f, +0x011,0x00023100, +0x012,0x00032000, +0x012,0x00071000, +0x012,0x000b0000, +0x012,0x000fc000, +0x013,0x000287b3, +0x013,0x000244b7, +0x013,0x000204ab, +0x013,0x0001c49f, +0x013,0x00018493, +0x013,0x0001429b, +0x013,0x00010299, +0x013,0x0000c29c, +0x013,0x000081a0, +0x013,0x000040ac, +0x013,0x00000020, +0x014,0x0001944c, +0x014,0x00059444, +0x014,0x0009944c, +0x014,0x000d9444, +0x015,0x0000f424, +0x015,0x0004f424, +0x015,0x0008f424, +0x015,0x000cf424, +0x016,0x000e0330, +0x016,0x000a0330, +0x016,0x00060330, +0x016,0x00020330, +0x000,0x00010159, +0x018,0x0000f401, +0x0fe,0x00000000, +0x0fe,0x00000000, +0x01f,0x00080003, +0x0fe,0x00000000, +0x0fe,0x00000000, +0x01e,0x00044457, +0x01f,0x00080000, +0x000,0x00030159, +}; + +u32 Rtl8192CURadioB_2TArray[RadioB_2TArrayLength] = { +0x000,0x00030159, +0x001,0x00031284, +0x002,0x00098000, +0x003,0x00018c63, +0x004,0x000210e7, +0x009,0x0002044f, +0x00a,0x0001adb1, +0x00b,0x00054867, +0x00c,0x0008992e, +0x00d,0x0000e52c, +0x00e,0x00039ce7, +0x00f,0x00000451, +0x012,0x00032000, +0x012,0x00071000, +0x012,0x000b0000, +0x012,0x000fc000, +0x013,0x000287af, +0x013,0x000244b7, +0x013,0x000204ab, +0x013,0x0001c49f, +0x013,0x00018493, +0x013,0x00014297, +0x013,0x00010295, +0x013,0x0000c298, +0x013,0x0000819c, +0x013,0x000040a8, +0x013,0x0000001c, +0x014,0x0001944c, +0x014,0x00059444, +0x014,0x0009944c, +0x014,0x000d9444, +0x015,0x0000f424, +0x015,0x0004f424, +0x015,0x0008f424, +0x015,0x000cf424, +0x016,0x000e0330, +0x016,0x000a0330, +0x016,0x00060330, +0x016,0x00020330, +}; + +u32 Rtl8192CURadioA_1TArray[RadioA_1TArrayLength] = { +0x000,0x00030159, +0x001,0x00031284, +0x002,0x00098000, +0x003,0x00018c63, +0x004,0x000210e7, +0x009,0x0002044f, +0x00a,0x0001adb1, +0x00b,0x00054867, +0x00c,0x0008992e, +0x00d,0x0000e52c, +0x00e,0x00039ce7, +0x00f,0x00000451, +0x019,0x00000000, +0x01a,0x00010255, +0x01b,0x00060a00, +0x01c,0x000fc378, +0x01d,0x000a1250, +0x01e,0x0004445f, +0x01f,0x00080001, +0x020,0x0000b614, +0x021,0x0006c000, +0x022,0x00000000, +0x023,0x00001558, +0x024,0x00000060, +0x025,0x00000483, +0x026,0x0004f000, +0x027,0x000ec7d9, +0x028,0x000577c0, +0x029,0x00004783, +0x02a,0x00000001, +0x02b,0x00021334, +0x02a,0x00000000, +0x02b,0x00000054, +0x02a,0x00000001, +0x02b,0x00000808, +0x02b,0x00053333, +0x02c,0x0000000c, +0x02a,0x00000002, +0x02b,0x00000808, +0x02b,0x0005b333, +0x02c,0x0000000d, +0x02a,0x00000003, +0x02b,0x00000808, +0x02b,0x00063333, +0x02c,0x0000000d, +0x02a,0x00000004, +0x02b,0x00000808, +0x02b,0x0006b333, +0x02c,0x0000000d, +0x02a,0x00000005, +0x02b,0x00000808, +0x02b,0x00073333, +0x02c,0x0000000d, +0x02a,0x00000006, +0x02b,0x00000709, +0x02b,0x0005b333, +0x02c,0x0000000d, +0x02a,0x00000007, +0x02b,0x00000709, +0x02b,0x00063333, +0x02c,0x0000000d, +0x02a,0x00000008, +0x02b,0x0000060a, +0x02b,0x0004b333, +0x02c,0x0000000d, +0x02a,0x00000009, +0x02b,0x0000060a, +0x02b,0x00053333, +0x02c,0x0000000d, +0x02a,0x0000000a, +0x02b,0x0000060a, +0x02b,0x0005b333, +0x02c,0x0000000d, +0x02a,0x0000000b, +0x02b,0x0000060a, +0x02b,0x00063333, +0x02c,0x0000000d, +0x02a,0x0000000c, +0x02b,0x0000060a, +0x02b,0x0006b333, +0x02c,0x0000000d, +0x02a,0x0000000d, +0x02b,0x0000060a, +0x02b,0x00073333, +0x02c,0x0000000d, +0x02a,0x0000000e, +0x02b,0x0000050b, +0x02b,0x00066666, +0x02c,0x0000001a, +0x02a,0x000e0000, +0x010,0x0004000f, +0x011,0x000e31fc, +0x010,0x0006000f, +0x011,0x000ff9f8, +0x010,0x0002000f, +0x011,0x000203f9, +0x010,0x0003000f, +0x011,0x000ff500, +0x010,0x00000000, +0x011,0x00000000, +0x010,0x0008000f, +0x011,0x0003f100, +0x010,0x0009000f, +0x011,0x00023100, +0x012,0x00032000, +0x012,0x00071000, +0x012,0x000b0000, +0x012,0x000fc000, +0x013,0x000287b3, +0x013,0x000244b7, +0x013,0x000204ab, +0x013,0x0001c49f, +0x013,0x00018493, +0x013,0x0001429b, +0x013,0x00010299, +0x013,0x0000c29c, +0x013,0x000081a0, +0x013,0x000040ac, +0x013,0x00000020, +0x014,0x0001944c, +0x014,0x00059444, +0x014,0x0009944c, +0x014,0x000d9444, +0x015,0x0000f405, +0x015,0x0004f405, +0x015,0x0008f405, +0x015,0x000cf405, +0x016,0x000e0330, +0x016,0x000a0330, +0x016,0x00060330, +0x016,0x00020330, +0x000,0x00010159, +0x018,0x0000f401, +0x0fe,0x00000000, +0x0fe,0x00000000, +0x01f,0x00080003, +0x0fe,0x00000000, +0x0fe,0x00000000, +0x01e,0x00044457, +0x01f,0x00080000, +0x000,0x00030159, +}; + +u32 Rtl8192CURadioB_1TArray[RadioB_1TArrayLength] = { +0x0, }; + + +u32 Rtl8192CURadioA_2T_mCardArray[RadioA_2T_mCardArrayLength] = { +0x000,0x00030159, +0x001,0x00031284, +0x002,0x00098000, +0x003,0x00018c63, +0x004,0x000210e7, +0x009,0x0002044f, +0x00a,0x0001adb1, +0x00b,0x00054867, +0x00c,0x0008992e, +0x00d,0x0000e52c, +0x00e,0x00039ce7, +0x00f,0x00000451, +0x019,0x00000000, +0x01a,0x00010255, +0x01b,0x00060a00, +0x01c,0x000fc378, +0x01d,0x000a1250, +0x01e,0x0004445f, +0x01f,0x00080001, +0x020,0x0000b614, +0x021,0x0006c000, +0x022,0x00000000, +0x023,0x00001558, +0x024,0x00000060, +0x025,0x00000483, +0x026,0x0004f000, +0x027,0x000ec7d9, +0x028,0x000577c0, +0x029,0x00004783, +0x02a,0x00000001, +0x02b,0x00021334, +0x02a,0x00000000, +0x02b,0x00000054, +0x02a,0x00000001, +0x02b,0x00000808, +0x02b,0x00053333, +0x02c,0x0000000c, +0x02a,0x00000002, +0x02b,0x00000808, +0x02b,0x0005b333, +0x02c,0x0000000d, +0x02a,0x00000003, +0x02b,0x00000808, +0x02b,0x00063333, +0x02c,0x0000000d, +0x02a,0x00000004, +0x02b,0x00000808, +0x02b,0x0006b333, +0x02c,0x0000000d, +0x02a,0x00000005, +0x02b,0x00000808, +0x02b,0x00073333, +0x02c,0x0000000d, +0x02a,0x00000006, +0x02b,0x00000709, +0x02b,0x0005b333, +0x02c,0x0000000d, +0x02a,0x00000007, +0x02b,0x00000709, +0x02b,0x00063333, +0x02c,0x0000000d, +0x02a,0x00000008, +0x02b,0x0000060a, +0x02b,0x0004b333, +0x02c,0x0000000d, +0x02a,0x00000009, +0x02b,0x0000060a, +0x02b,0x00053333, +0x02c,0x0000000d, +0x02a,0x0000000a, +0x02b,0x0000060a, +0x02b,0x0005b333, +0x02c,0x0000000d, +0x02a,0x0000000b, +0x02b,0x0000060a, +0x02b,0x00063333, +0x02c,0x0000000d, +0x02a,0x0000000c, +0x02b,0x0000060a, +0x02b,0x0006b333, +0x02c,0x0000000d, +0x02a,0x0000000d, +0x02b,0x0000060a, +0x02b,0x00073333, +0x02c,0x0000000d, +0x02a,0x0000000e, +0x02b,0x0000050b, +0x02b,0x00066666, +0x02c,0x0000001a, +0x02a,0x000e0000, +0x010,0x0004000f, +0x011,0x000e31fc, +0x010,0x0006000f, +0x011,0x000ff9f8, +0x010,0x0002000f, +0x011,0x000203f9, +0x010,0x0003000f, +0x011,0x000ff500, +0x010,0x00000000, +0x011,0x00000000, +0x010,0x0008000f, +0x011,0x0003f100, +0x010,0x0009000f, +0x011,0x00023100, +0x012,0x00032000, +0x012,0x00071000, +0x012,0x000b0000, +0x012,0x000fc000, +0x013,0x000287b3, +0x013,0x000244b7, +0x013,0x000204ab, +0x013,0x0001c49f, +0x013,0x00018493, +0x013,0x0001429b, +0x013,0x00010299, +0x013,0x0000c29c, +0x013,0x000081a0, +0x013,0x000040ac, +0x013,0x00000020, +0x014,0x0001944c, +0x014,0x00059444, +0x014,0x0009944c, +0x014,0x000d9444, +0x015,0x0000f424, +0x015,0x0004f424, +0x015,0x0008f424, +0x015,0x000cf424, +0x016,0x000e0330, +0x016,0x000a0330, +0x016,0x00060330, +0x016,0x00020330, +0x000,0x00010159, +0x018,0x0000f401, +0x0fe,0x00000000, +0x0fe,0x00000000, +0x01f,0x00080003, +0x0fe,0x00000000, +0x0fe,0x00000000, +0x01e,0x00044457, +0x01f,0x00080000, +0x000,0x00030159, +}; + +u32 Rtl8192CURadioB_2T_mCardArray[RadioB_2T_mCardArrayLength] = { +0x000,0x00030159, +0x001,0x00031284, +0x002,0x00098000, +0x003,0x00018c63, +0x004,0x000210e7, +0x009,0x0002044f, +0x00a,0x0001adb1, +0x00b,0x00054867, +0x00c,0x0008992e, +0x00d,0x0000e52c, +0x00e,0x00039ce7, +0x00f,0x00000451, +0x012,0x00032000, +0x012,0x00071000, +0x012,0x000b0000, +0x012,0x000fc000, +0x013,0x000287af, +0x013,0x000244b7, +0x013,0x000204ab, +0x013,0x0001c49f, +0x013,0x00018493, +0x013,0x00014297, +0x013,0x00010295, +0x013,0x0000c298, +0x013,0x0000819c, +0x013,0x000040a8, +0x013,0x0000001c, +0x014,0x0001944c, +0x014,0x00059444, +0x014,0x0009944c, +0x014,0x000d9444, +0x015,0x0000f424, +0x015,0x0004f424, +0x015,0x0008f424, +0x015,0x000cf424, +0x016,0x000e0330, +0x016,0x000a0330, +0x016,0x00060330, +0x016,0x00020330, +}; + +u32 Rtl8192CURadioA_1T_mCardArray[RadioA_1T_mCardArrayLength] = { +0x000,0x00030159, +0x001,0x00031284, +0x002,0x00098000, +0x003,0x00018c63, +0x004,0x000210e7, +0x009,0x0002044f, +0x00a,0x0001adb1, +0x00b,0x00054867, +0x00c,0x0008992e, +0x00d,0x0000e52c, +0x00e,0x00039ce7, +0x00f,0x00000451, +0x019,0x00000000, +0x01a,0x00010255, +0x01b,0x00060a00, +0x01c,0x000fc378, +0x01d,0x000a1250, +0x01e,0x0004445f, +0x01f,0x00080001, +0x020,0x0000b614, +0x021,0x0006c000, +0x022,0x00000000, +0x023,0x00001558, +0x024,0x00000060, +0x025,0x00000483, +0x026,0x0004f200, +0x027,0x000ec7d9, +0x028,0x000577c0, +0x029,0x00004783, +0x02a,0x00000001, +0x02b,0x00021334, +0x02a,0x00000000, +0x02b,0x00000054, +0x02a,0x00000001, +0x02b,0x00000808, +0x02b,0x00053333, +0x02c,0x0000000c, +0x02a,0x00000002, +0x02b,0x00000808, +0x02b,0x0005b333, +0x02c,0x0000000d, +0x02a,0x00000003, +0x02b,0x00000808, +0x02b,0x00063333, +0x02c,0x0000000d, +0x02a,0x00000004, +0x02b,0x00000808, +0x02b,0x0006b333, +0x02c,0x0000000d, +0x02a,0x00000005, +0x02b,0x00000808, +0x02b,0x00073333, +0x02c,0x0000000d, +0x02a,0x00000006, +0x02b,0x00000709, +0x02b,0x0005b333, +0x02c,0x0000000d, +0x02a,0x00000007, +0x02b,0x00000709, +0x02b,0x00063333, +0x02c,0x0000000d, +0x02a,0x00000008, +0x02b,0x0000060a, +0x02b,0x0004b333, +0x02c,0x0000000d, +0x02a,0x00000009, +0x02b,0x0000060a, +0x02b,0x00053333, +0x02c,0x0000000d, +0x02a,0x0000000a, +0x02b,0x0000060a, +0x02b,0x0005b333, +0x02c,0x0000000d, +0x02a,0x0000000b, +0x02b,0x0000060a, +0x02b,0x00063333, +0x02c,0x0000000d, +0x02a,0x0000000c, +0x02b,0x0000060a, +0x02b,0x0006b333, +0x02c,0x0000000d, +0x02a,0x0000000d, +0x02b,0x0000060a, +0x02b,0x00073333, +0x02c,0x0000000d, +0x02a,0x0000000e, +0x02b,0x0000050b, +0x02b,0x00066666, +0x02c,0x0000001a, +0x02a,0x000e0000, +0x010,0x0004000f, +0x011,0x000e31fc, +0x010,0x0006000f, +0x011,0x000ff9f8, +0x010,0x0002000f, +0x011,0x000203f9, +0x010,0x0003000f, +0x011,0x000ff500, +0x010,0x00000000, +0x011,0x00000000, +0x010,0x0008000f, +0x011,0x0003f100, +0x010,0x0009000f, +0x011,0x00023100, +0x012,0x00032000, +0x012,0x00071000, +0x012,0x000b0000, +0x012,0x000fc000, +0x013,0x000287b3, +0x013,0x000244b7, +0x013,0x000204ab, +0x013,0x0001c49f, +0x013,0x00018493, +0x013,0x0001429b, +0x013,0x00010299, +0x013,0x0000c29c, +0x013,0x000081a0, +0x013,0x000040ac, +0x013,0x00000020, +0x014,0x0001944c, +0x014,0x00059444, +0x014,0x0009944c, +0x014,0x000d9444, +0x015,0x0000f424, +0x015,0x0004f424, +0x015,0x0008f424, +0x015,0x000cf424, +0x016,0x000e0330, +0x016,0x000a0330, +0x016,0x00060330, +0x016,0x00020330, +0x000,0x00010159, +0x018,0x0000f401, +0x0fe,0x00000000, +0x0fe,0x00000000, +0x01f,0x00080003, +0x0fe,0x00000000, +0x0fe,0x00000000, +0x01e,0x00044457, +0x01f,0x00080000, +0x000,0x00030159, +}; + +u32 Rtl8192CURadioB_1T_mCardArray[RadioB_1T_mCardArrayLength] = { +0x0, }; + +u32 Rtl8192CURadioA_1T_HPArray[RadioA_1T_HPArrayLength] = { +0x000,0x00030159, +0x001,0x00031284, +0x002,0x00098000, +0x003,0x00018c63, +0x004,0x000210e7, +0x009,0x0002044f, +0x00a,0x0001adb0, +0x00b,0x00054867, +0x00c,0x0008992e, +0x00d,0x0000e529, +0x00e,0x00039ce7, +0x00f,0x00000451, +0x019,0x00000000, +0x01a,0x00000255, +0x01b,0x00060a00, +0x01c,0x000fc378, +0x01d,0x000a1250, +0x01e,0x0004445f, +0x01f,0x00080001, +0x020,0x0000b614, +0x021,0x0006c000, +0x022,0x0000083c, +0x023,0x00001558, +0x024,0x00000060, +0x025,0x00000483, +0x026,0x0004f000, +0x027,0x000ec7d9, +0x028,0x000977c0, +0x029,0x00004783, +0x02a,0x00000001, +0x02b,0x00021334, +0x02a,0x00000000, +0x02b,0x00000054, +0x02a,0x00000001, +0x02b,0x00000808, +0x02b,0x00053333, +0x02c,0x0000000c, +0x02a,0x00000002, +0x02b,0x00000808, +0x02b,0x0005b333, +0x02c,0x0000000d, +0x02a,0x00000003, +0x02b,0x00000808, +0x02b,0x00063333, +0x02c,0x0000000d, +0x02a,0x00000004, +0x02b,0x00000808, +0x02b,0x0006b333, +0x02c,0x0000000d, +0x02a,0x00000005, +0x02b,0x00000808, +0x02b,0x00073333, +0x02c,0x0000000d, +0x02a,0x00000006, +0x02b,0x00000709, +0x02b,0x0005b333, +0x02c,0x0000000d, +0x02a,0x00000007, +0x02b,0x00000709, +0x02b,0x00063333, +0x02c,0x0000000d, +0x02a,0x00000008, +0x02b,0x0000060a, +0x02b,0x0004b333, +0x02c,0x0000000d, +0x02a,0x00000009, +0x02b,0x0000060a, +0x02b,0x00053333, +0x02c,0x0000000d, +0x02a,0x0000000a, +0x02b,0x0000060a, +0x02b,0x0005b333, +0x02c,0x0000000d, +0x02a,0x0000000b, +0x02b,0x0000060a, +0x02b,0x00063333, +0x02c,0x0000000d, +0x02a,0x0000000c, +0x02b,0x0000060a, +0x02b,0x0006b333, +0x02c,0x0000000d, +0x02a,0x0000000d, +0x02b,0x0000060a, +0x02b,0x00073333, +0x02c,0x0000000d, +0x02a,0x0000000e, +0x02b,0x0000050b, +0x02b,0x00066666, +0x02c,0x0000001a, +0x02a,0x000e0000, +0x010,0x0004000f, +0x011,0x000e31fc, +0x010,0x0006000f, +0x011,0x000ff9f8, +0x010,0x0002000f, +0x011,0x000203f9, +0x010,0x0003000f, +0x011,0x000ff500, +0x010,0x00000000, +0x011,0x00000000, +0x010,0x0008000f, +0x011,0x0003f100, +0x010,0x0009000f, +0x011,0x00023100, +0x012,0x000d8000, +0x012,0x00090000, +0x012,0x00051000, +0x012,0x00012000, +0x013,0x00028fb4, +0x013,0x00024fa8, +0x013,0x000207a4, +0x013,0x0001c3b0, +0x013,0x000183a4, +0x013,0x00014398, +0x013,0x000101a4, +0x013,0x0000c198, +0x013,0x000080a4, +0x013,0x00004098, +0x013,0x00000000, +0x014,0x0001944c, +0x014,0x00059444, +0x014,0x0009944c, +0x014,0x000d9444, +0x015,0x0000f405, +0x015,0x0004f405, +0x015,0x0008f405, +0x015,0x000cf405, +0x016,0x000e0330, +0x016,0x000a0330, +0x016,0x00060330, +0x016,0x00020330, +0x000,0x00010159, +0x018,0x0000f401, +0x0fe,0x00000000, +0x0fe,0x00000000, +0x01f,0x00080003, +0x0fe,0x00000000, +0x0fe,0x00000000, +0x01e,0x00044457, +0x01f,0x00080000, +0x000,0x00030159, +}; + +u32 Rtl8192CURadioB_GM_Array[RadioB_GM_ArrayLength] = { +0x0, }; + +// MAC reg V14 - 2011-11-23 +u32 Rtl8192CUMAC_2T_Array[MAC_2T_ArrayLength] = { +0x420,0x00000080, +0x423,0x00000000, +0x430,0x00000000, +0x431,0x00000000, +0x432,0x00000000, +0x433,0x00000001, +0x434,0x00000004, +0x435,0x00000005, +0x436,0x00000006, +0x437,0x00000007, +0x438,0x00000000, +0x439,0x00000000, +0x43a,0x00000000, +0x43b,0x00000001, +0x43c,0x00000004, +0x43d,0x00000005, +0x43e,0x00000006, +0x43f,0x00000007, +0x440,0x0000005d, +0x441,0x00000001, +0x442,0x00000000, +0x444,0x00000015, +0x445,0x000000f0, +0x446,0x0000000f, +0x447,0x00000000, +0x458,0x00000041, +0x459,0x000000a8, +0x45a,0x00000072, +0x45b,0x000000b9, +0x460,0x00000066, +0x461,0x00000066, +0x462,0x00000008, +0x463,0x00000003, +0x4c8,0x000000ff, +0x4c9,0x00000008, +0x4cc,0x000000ff, +0x4cd,0x000000ff, +0x4ce,0x00000001, +0x500,0x00000026, +0x501,0x000000a2, +0x502,0x0000002f, +0x503,0x00000000, +0x504,0x00000028, +0x505,0x000000a3, +0x506,0x0000005e, +0x507,0x00000000, +0x508,0x0000002b, +0x509,0x000000a4, +0x50a,0x0000005e, +0x50b,0x00000000, +0x50c,0x0000004f, +0x50d,0x000000a4, +0x50e,0x00000000, +0x50f,0x00000000, +0x512,0x0000001c, +0x514,0x0000000a, +0x515,0x00000010, +0x516,0x0000000a, +0x517,0x00000010, +0x51a,0x00000016, +0x524,0x0000000f, +0x525,0x0000004f, +0x546,0x00000040, +0x547,0x00000000, +0x550,0x00000010, +0x551,0x00000010, +0x559,0x00000002, +0x55a,0x00000002, +0x55d,0x000000ff, +0x605,0x00000030, +0x608,0x0000000e, +0x609,0x0000002a, +0x652,0x00000020, +0x652,0x00000020, +0x63c,0x00000008, +0x63d,0x00000008, +0x63e,0x0000000c, +0x63f,0x0000000c, +0x66e,0x00000005, +0x700,0x00000021, +0x701,0x00000043, +0x702,0x00000065, +0x703,0x00000087, +0x708,0x00000021, +0x709,0x00000043, +0x70a,0x00000065, +0x70b,0x00000087, +}; + +u32 Rtl8192CUMACPHY_Array_PG[MACPHY_Array_PGLength] = { +0x0, }; + +u32 Rtl8192CUAGCTAB_2TArray[AGCTAB_2TArrayLength] = { +0xc78,0x7b000001, +0xc78,0x7b010001, +0xc78,0x7b020001, +0xc78,0x7b030001, +0xc78,0x7b040001, +0xc78,0x7b050001, +0xc78,0x7a060001, +0xc78,0x79070001, +0xc78,0x78080001, +0xc78,0x77090001, +0xc78,0x760a0001, +0xc78,0x750b0001, +0xc78,0x740c0001, +0xc78,0x730d0001, +0xc78,0x720e0001, +0xc78,0x710f0001, +0xc78,0x70100001, +0xc78,0x6f110001, +0xc78,0x6e120001, +0xc78,0x6d130001, +0xc78,0x6c140001, +0xc78,0x6b150001, +0xc78,0x6a160001, +0xc78,0x69170001, +0xc78,0x68180001, +0xc78,0x67190001, +0xc78,0x661a0001, +0xc78,0x651b0001, +0xc78,0x641c0001, +0xc78,0x631d0001, +0xc78,0x621e0001, +0xc78,0x611f0001, +0xc78,0x60200001, +0xc78,0x49210001, +0xc78,0x48220001, +0xc78,0x47230001, +0xc78,0x46240001, +0xc78,0x45250001, +0xc78,0x44260001, +0xc78,0x43270001, +0xc78,0x42280001, +0xc78,0x41290001, +0xc78,0x402a0001, +0xc78,0x262b0001, +0xc78,0x252c0001, +0xc78,0x242d0001, +0xc78,0x232e0001, +0xc78,0x222f0001, +0xc78,0x21300001, +0xc78,0x20310001, +0xc78,0x06320001, +0xc78,0x05330001, +0xc78,0x04340001, +0xc78,0x03350001, +0xc78,0x02360001, +0xc78,0x01370001, +0xc78,0x00380001, +0xc78,0x00390001, +0xc78,0x003a0001, +0xc78,0x003b0001, +0xc78,0x003c0001, +0xc78,0x003d0001, +0xc78,0x003e0001, +0xc78,0x003f0001, +0xc78,0x7b400001, +0xc78,0x7b410001, +0xc78,0x7b420001, +0xc78,0x7b430001, +0xc78,0x7b440001, +0xc78,0x7b450001, +0xc78,0x7a460001, +0xc78,0x79470001, +0xc78,0x78480001, +0xc78,0x77490001, +0xc78,0x764a0001, +0xc78,0x754b0001, +0xc78,0x744c0001, +0xc78,0x734d0001, +0xc78,0x724e0001, +0xc78,0x714f0001, +0xc78,0x70500001, +0xc78,0x6f510001, +0xc78,0x6e520001, +0xc78,0x6d530001, +0xc78,0x6c540001, +0xc78,0x6b550001, +0xc78,0x6a560001, +0xc78,0x69570001, +0xc78,0x68580001, +0xc78,0x67590001, +0xc78,0x665a0001, +0xc78,0x655b0001, +0xc78,0x645c0001, +0xc78,0x635d0001, +0xc78,0x625e0001, +0xc78,0x615f0001, +0xc78,0x60600001, +0xc78,0x49610001, +0xc78,0x48620001, +0xc78,0x47630001, +0xc78,0x46640001, +0xc78,0x45650001, +0xc78,0x44660001, +0xc78,0x43670001, +0xc78,0x42680001, +0xc78,0x41690001, +0xc78,0x406a0001, +0xc78,0x266b0001, +0xc78,0x256c0001, +0xc78,0x246d0001, +0xc78,0x236e0001, +0xc78,0x226f0001, +0xc78,0x21700001, +0xc78,0x20710001, +0xc78,0x06720001, +0xc78,0x05730001, +0xc78,0x04740001, +0xc78,0x03750001, +0xc78,0x02760001, +0xc78,0x01770001, +0xc78,0x00780001, +0xc78,0x00790001, +0xc78,0x007a0001, +0xc78,0x007b0001, +0xc78,0x007c0001, +0xc78,0x007d0001, +0xc78,0x007e0001, +0xc78,0x007f0001, +0xc78,0x3800001e, +0xc78,0x3801001e, +0xc78,0x3802001e, +0xc78,0x3803001e, +0xc78,0x3804001e, +0xc78,0x3805001e, +0xc78,0x3806001e, +0xc78,0x3807001e, +0xc78,0x3808001e, +0xc78,0x3c09001e, +0xc78,0x3e0a001e, +0xc78,0x400b001e, +0xc78,0x440c001e, +0xc78,0x480d001e, +0xc78,0x4c0e001e, +0xc78,0x500f001e, +0xc78,0x5210001e, +0xc78,0x5611001e, +0xc78,0x5a12001e, +0xc78,0x5e13001e, +0xc78,0x6014001e, +0xc78,0x6015001e, +0xc78,0x6016001e, +0xc78,0x6217001e, +0xc78,0x6218001e, +0xc78,0x6219001e, +0xc78,0x621a001e, +0xc78,0x621b001e, +0xc78,0x621c001e, +0xc78,0x621d001e, +0xc78,0x621e001e, +0xc78,0x621f001e, +}; + +u32 Rtl8192CUAGCTAB_1TArray[AGCTAB_1TArrayLength] = { +0xc78,0x7b000001, +0xc78,0x7b010001, +0xc78,0x7b020001, +0xc78,0x7b030001, +0xc78,0x7b040001, +0xc78,0x7b050001, +0xc78,0x7a060001, +0xc78,0x79070001, +0xc78,0x78080001, +0xc78,0x77090001, +0xc78,0x760a0001, +0xc78,0x750b0001, +0xc78,0x740c0001, +0xc78,0x730d0001, +0xc78,0x720e0001, +0xc78,0x710f0001, +0xc78,0x70100001, +0xc78,0x6f110001, +0xc78,0x6e120001, +0xc78,0x6d130001, +0xc78,0x6c140001, +0xc78,0x6b150001, +0xc78,0x6a160001, +0xc78,0x69170001, +0xc78,0x68180001, +0xc78,0x67190001, +0xc78,0x661a0001, +0xc78,0x651b0001, +0xc78,0x641c0001, +0xc78,0x631d0001, +0xc78,0x621e0001, +0xc78,0x611f0001, +0xc78,0x60200001, +0xc78,0x49210001, +0xc78,0x48220001, +0xc78,0x47230001, +0xc78,0x46240001, +0xc78,0x45250001, +0xc78,0x44260001, +0xc78,0x43270001, +0xc78,0x42280001, +0xc78,0x41290001, +0xc78,0x402a0001, +0xc78,0x262b0001, +0xc78,0x252c0001, +0xc78,0x242d0001, +0xc78,0x232e0001, +0xc78,0x222f0001, +0xc78,0x21300001, +0xc78,0x20310001, +0xc78,0x06320001, +0xc78,0x05330001, +0xc78,0x04340001, +0xc78,0x03350001, +0xc78,0x02360001, +0xc78,0x01370001, +0xc78,0x00380001, +0xc78,0x00390001, +0xc78,0x003a0001, +0xc78,0x003b0001, +0xc78,0x003c0001, +0xc78,0x003d0001, +0xc78,0x003e0001, +0xc78,0x003f0001, +0xc78,0x7b400001, +0xc78,0x7b410001, +0xc78,0x7b420001, +0xc78,0x7b430001, +0xc78,0x7b440001, +0xc78,0x7b450001, +0xc78,0x7a460001, +0xc78,0x79470001, +0xc78,0x78480001, +0xc78,0x77490001, +0xc78,0x764a0001, +0xc78,0x754b0001, +0xc78,0x744c0001, +0xc78,0x734d0001, +0xc78,0x724e0001, +0xc78,0x714f0001, +0xc78,0x70500001, +0xc78,0x6f510001, +0xc78,0x6e520001, +0xc78,0x6d530001, +0xc78,0x6c540001, +0xc78,0x6b550001, +0xc78,0x6a560001, +0xc78,0x69570001, +0xc78,0x68580001, +0xc78,0x67590001, +0xc78,0x665a0001, +0xc78,0x655b0001, +0xc78,0x645c0001, +0xc78,0x635d0001, +0xc78,0x625e0001, +0xc78,0x615f0001, +0xc78,0x60600001, +0xc78,0x49610001, +0xc78,0x48620001, +0xc78,0x47630001, +0xc78,0x46640001, +0xc78,0x45650001, +0xc78,0x44660001, +0xc78,0x43670001, +0xc78,0x42680001, +0xc78,0x41690001, +0xc78,0x406a0001, +0xc78,0x266b0001, +0xc78,0x256c0001, +0xc78,0x246d0001, +0xc78,0x236e0001, +0xc78,0x226f0001, +0xc78,0x21700001, +0xc78,0x20710001, +0xc78,0x06720001, +0xc78,0x05730001, +0xc78,0x04740001, +0xc78,0x03750001, +0xc78,0x02760001, +0xc78,0x01770001, +0xc78,0x00780001, +0xc78,0x00790001, +0xc78,0x007a0001, +0xc78,0x007b0001, +0xc78,0x007c0001, +0xc78,0x007d0001, +0xc78,0x007e0001, +0xc78,0x007f0001, +0xc78,0x3800001e, +0xc78,0x3801001e, +0xc78,0x3802001e, +0xc78,0x3803001e, +0xc78,0x3804001e, +0xc78,0x3805001e, +0xc78,0x3806001e, +0xc78,0x3807001e, +0xc78,0x3808001e, +0xc78,0x3c09001e, +0xc78,0x3e0a001e, +0xc78,0x400b001e, +0xc78,0x440c001e, +0xc78,0x480d001e, +0xc78,0x4c0e001e, +0xc78,0x500f001e, +0xc78,0x5210001e, +0xc78,0x5611001e, +0xc78,0x5a12001e, +0xc78,0x5e13001e, +0xc78,0x6014001e, +0xc78,0x6015001e, +0xc78,0x6016001e, +0xc78,0x6217001e, +0xc78,0x6218001e, +0xc78,0x6219001e, +0xc78,0x621a001e, +0xc78,0x621b001e, +0xc78,0x621c001e, +0xc78,0x621d001e, +0xc78,0x621e001e, +0xc78,0x621f001e, +}; + +u32 Rtl8192CUAGCTAB_1T_HPArray[AGCTAB_1T_HPArrayLength] = { +0xc78,0x7b000001, +0xc78,0x7b010001, +0xc78,0x7b020001, +0xc78,0x7b030001, +0xc78,0x7b040001, +0xc78,0x7b050001, +0xc78,0x7b060001, +0xc78,0x7b070001, +0xc78,0x7b080001, +0xc78,0x7a090001, +0xc78,0x790a0001, +0xc78,0x780b0001, +0xc78,0x770c0001, +0xc78,0x760d0001, +0xc78,0x750e0001, +0xc78,0x740f0001, +0xc78,0x73100001, +0xc78,0x72110001, +0xc78,0x71120001, +0xc78,0x70130001, +0xc78,0x6f140001, +0xc78,0x6e150001, +0xc78,0x6d160001, +0xc78,0x6c170001, +0xc78,0x6b180001, +0xc78,0x6a190001, +0xc78,0x691a0001, +0xc78,0x681b0001, +0xc78,0x671c0001, +0xc78,0x661d0001, +0xc78,0x651e0001, +0xc78,0x641f0001, +0xc78,0x63200001, +0xc78,0x62210001, +0xc78,0x61220001, +0xc78,0x60230001, +0xc78,0x46240001, +0xc78,0x45250001, +0xc78,0x44260001, +0xc78,0x43270001, +0xc78,0x42280001, +0xc78,0x41290001, +0xc78,0x402a0001, +0xc78,0x262b0001, +0xc78,0x252c0001, +0xc78,0x242d0001, +0xc78,0x232e0001, +0xc78,0x222f0001, +0xc78,0x21300001, +0xc78,0x20310001, +0xc78,0x06320001, +0xc78,0x05330001, +0xc78,0x04340001, +0xc78,0x03350001, +0xc78,0x02360001, +0xc78,0x01370001, +0xc78,0x00380001, +0xc78,0x00390001, +0xc78,0x003a0001, +0xc78,0x003b0001, +0xc78,0x003c0001, +0xc78,0x003d0001, +0xc78,0x003e0001, +0xc78,0x003f0001, +0xc78,0x7b400001, +0xc78,0x7b410001, +0xc78,0x7b420001, +0xc78,0x7b430001, +0xc78,0x7b440001, +0xc78,0x7b450001, +0xc78,0x7b460001, +0xc78,0x7b470001, +0xc78,0x7b480001, +0xc78,0x7a490001, +0xc78,0x794a0001, +0xc78,0x784b0001, +0xc78,0x774c0001, +0xc78,0x764d0001, +0xc78,0x754e0001, +0xc78,0x744f0001, +0xc78,0x73500001, +0xc78,0x72510001, +0xc78,0x71520001, +0xc78,0x70530001, +0xc78,0x6f540001, +0xc78,0x6e550001, +0xc78,0x6d560001, +0xc78,0x6c570001, +0xc78,0x6b580001, +0xc78,0x6a590001, +0xc78,0x695a0001, +0xc78,0x685b0001, +0xc78,0x675c0001, +0xc78,0x665d0001, +0xc78,0x655e0001, +0xc78,0x645f0001, +0xc78,0x63600001, +0xc78,0x62610001, +0xc78,0x61620001, +0xc78,0x60630001, +0xc78,0x46640001, +0xc78,0x45650001, +0xc78,0x44660001, +0xc78,0x43670001, +0xc78,0x42680001, +0xc78,0x41690001, +0xc78,0x406a0001, +0xc78,0x266b0001, +0xc78,0x256c0001, +0xc78,0x246d0001, +0xc78,0x236e0001, +0xc78,0x226f0001, +0xc78,0x21700001, +0xc78,0x20710001, +0xc78,0x06720001, +0xc78,0x05730001, +0xc78,0x04740001, +0xc78,0x03750001, +0xc78,0x02760001, +0xc78,0x01770001, +0xc78,0x00780001, +0xc78,0x00790001, +0xc78,0x007a0001, +0xc78,0x007b0001, +0xc78,0x007c0001, +0xc78,0x007d0001, +0xc78,0x007e0001, +0xc78,0x007f0001, +0xc78,0x3800001e, +0xc78,0x3801001e, +0xc78,0x3802001e, +0xc78,0x3803001e, +0xc78,0x3804001e, +0xc78,0x3805001e, +0xc78,0x3806001e, +0xc78,0x3807001e, +0xc78,0x3808001e, +0xc78,0x3c09001e, +0xc78,0x3e0a001e, +0xc78,0x400b001e, +0xc78,0x440c001e, +0xc78,0x480d001e, +0xc78,0x4c0e001e, +0xc78,0x500f001e, +0xc78,0x5210001e, +0xc78,0x5611001e, +0xc78,0x5a12001e, +0xc78,0x5e13001e, +0xc78,0x6014001e, +0xc78,0x6015001e, +0xc78,0x6016001e, +0xc78,0x6217001e, +0xc78,0x6218001e, +0xc78,0x6219001e, +0xc78,0x621a001e, +0xc78,0x621b001e, +0xc78,0x621c001e, +0xc78,0x621d001e, +0xc78,0x621e001e, +0xc78,0x621f001e, +}; --- linux-raspi2-4.2.0.orig/drivers/net/wireless/rtl8192cu/hal/rtl8192c/usb/Hal8192CUHWImg_wowlan.c +++ linux-raspi2-4.2.0/drivers/net/wireless/rtl8192cu/hal/rtl8192c/usb/Hal8192CUHWImg_wowlan.c @@ -0,0 +1,2557 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved. + * + * 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 + * published by the Free Software Foundation. + * + * 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 Street, Fifth Floor, Boston, MA 02110, USA + * + * + ******************************************************************************/ +/*Created on 2011/11/ 8, 14:15*/ + +#include +#include "Hal8192CUHWImg_wowlan.h" + + +u8 Rtl8192CUFwTSMCWWImgArray[TSMCWWImgArrayLength] = { +0xc1,0x88,0x02,0x00,0x51,0x00,0x00,0x00,0x03,0x23,0x16,0x43,0x72,0x34,0x00,0x00, +0x58,0x92,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x02,0x43,0x9d,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x02,0x57,0xcb,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x02,0x5c,0xb6,0x00,0x00,0x00,0x00,0x00,0x02,0x5d,0x99,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0xbb,0x01,0x0c,0xe5,0x82,0x29,0xf5,0x82,0xe5,0x83,0x3a,0xf5,0x83,0xe0,0x22,0x50, +0x06,0xe9,0x25,0x82,0xf8,0xe6,0x22,0xbb,0xfe,0x06,0xe9,0x25,0x82,0xf8,0xe2,0x22, +0xe5,0x82,0x29,0xf5,0x82,0xe5,0x83,0x3a,0xf5,0x83,0xe4,0x93,0x22,0xbb,0x01,0x06, +0x89,0x82,0x8a,0x83,0xf0,0x22,0x50,0x02,0xf7,0x22,0xbb,0xfe,0x01,0xf3,0x22,0xf8, +0xbb,0x01,0x0d,0xe5,0x82,0x29,0xf5,0x82,0xe5,0x83,0x3a,0xf5,0x83,0xe8,0xf0,0x22, +0x50,0x06,0xe9,0x25,0x82,0xc8,0xf6,0x22,0xbb,0xfe,0x05,0xe9,0x25,0x82,0xc8,0xf2, +0x22,0xc5,0xf0,0xf8,0xa3,0xe0,0x28,0xf0,0xc5,0xf0,0xf8,0xe5,0x82,0x15,0x82,0x70, +0x02,0x15,0x83,0xe0,0x38,0xf0,0x22,0xbb,0x01,0x10,0xe5,0x82,0x29,0xf5,0x82,0xe5, +0x83,0x3a,0xf5,0x83,0xe0,0xf5,0xf0,0xa3,0xe0,0x22,0x50,0x09,0xe9,0x25,0x82,0xf8, +0x86,0xf0,0x08,0xe6,0x22,0xbb,0xfe,0x0a,0xe9,0x25,0x82,0xf8,0xe2,0xf5,0xf0,0x08, +0xe2,0x22,0xe5,0x83,0x2a,0xf5,0x83,0xe9,0x93,0xf5,0xf0,0xa3,0xe9,0x93,0x22,0xf8, +0xbb,0x01,0x11,0xe5,0x82,0x29,0xf5,0x82,0xe5,0x83,0x3a,0xf5,0x83,0xe8,0xf0,0xe5, +0xf0,0xa3,0xf0,0x22,0x50,0x09,0xe9,0x25,0x82,0xc8,0xf6,0x08,0xa6,0xf0,0x22,0xbb, +0xfe,0x09,0xe9,0x25,0x82,0xc8,0xf2,0xe5,0xf0,0x08,0xf2,0x22,0xef,0x4b,0xff,0xee, +0x4a,0xfe,0xed,0x49,0xfd,0xec,0x48,0xfc,0x22,0xe0,0xfc,0xa3,0xe0,0xfd,0xa3,0xe0, +0xfe,0xa3,0xe0,0xff,0x22,0xa4,0x25,0x82,0xf5,0x82,0xe5,0xf0,0x35,0x83,0xf5,0x83, +0x22,0xe0,0xfb,0xa3,0xe0,0xfa,0xa3,0xe0,0xf9,0x22,0xf8,0xe0,0xfb,0xa3,0xa3,0xe0, +0xf9,0x25,0xf0,0xf0,0xe5,0x82,0x15,0x82,0x70,0x02,0x15,0x83,0xe0,0xfa,0x38,0xf0, +0x22,0xeb,0xf0,0xa3,0xea,0xf0,0xa3,0xe9,0xf0,0x22,0xd0,0x83,0xd0,0x82,0xf8,0xe4, +0x93,0x70,0x12,0x74,0x01,0x93,0x70,0x0d,0xa3,0xa3,0x93,0xf8,0x74,0x01,0x93,0xf5, +0x82,0x88,0x83,0xe4,0x73,0x74,0x02,0x93,0x68,0x60,0xef,0xa3,0xa3,0xa3,0x80,0xdf, +0xd0,0x83,0xd0,0x82,0xf8,0xe4,0x93,0x70,0x12,0x74,0x01,0x93,0x70,0x0d,0xa3,0xa3, +0x93,0xf8,0x74,0x01,0x93,0xf5,0x82,0x88,0x83,0xe4,0x73,0x74,0x02,0x93,0xb5,0xf0, +0x06,0x74,0x03,0x93,0x68,0x60,0xe9,0xa3,0xa3,0xa3,0xa3,0x80,0xd8,0x02,0x43,0xdb, +0x02,0x50,0x2a,0xe4,0x93,0xa3,0xf8,0xe4,0x93,0xa3,0x40,0x03,0xf6,0x80,0x01,0xf2, +0x08,0xdf,0xf4,0x80,0x29,0xe4,0x93,0xa3,0xf8,0x54,0x07,0x24,0x0c,0xc8,0xc3,0x33, +0xc4,0x54,0x0f,0x44,0x20,0xc8,0x83,0x40,0x04,0xf4,0x56,0x80,0x01,0x46,0xf6,0xdf, +0xe4,0x80,0x0b,0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80,0x90,0x44,0x20,0xe4,0x7e, +0x01,0x93,0x60,0xbc,0xa3,0xff,0x54,0x3f,0x30,0xe5,0x09,0x54,0x1f,0xfe,0xe4,0x93, +0xa3,0x60,0x01,0x0e,0xcf,0x54,0xc0,0x25,0xe0,0x60,0xa8,0x40,0xb8,0xe4,0x93,0xa3, +0xfa,0xe4,0x93,0xa3,0xf8,0xe4,0x93,0xa3,0xc8,0xc5,0x82,0xc8,0xca,0xc5,0x83,0xca, +0xf0,0xa3,0xc8,0xc5,0x82,0xc8,0xca,0xc5,0x83,0xca,0xdf,0xe9,0xde,0xe7,0x80,0xbe, +0x41,0x91,0x40,0x00,0x41,0x91,0x9c,0x00,0x41,0x91,0x23,0x80,0x41,0x91,0x24,0x80, +0x41,0x91,0x9e,0x00,0x41,0x91,0x52,0x00,0x41,0x91,0x93,0x00,0x41,0x91,0x91,0x00, +0x41,0x91,0x90,0x00,0x41,0x91,0x92,0x00,0x00,0xf0,0x90,0x91,0x30,0xe0,0x90,0x91, +0x67,0xf0,0xe4,0xfb,0xfd,0x7f,0x54,0x7e,0x01,0xd3,0x10,0xaf,0x01,0xc3,0xc0,0xd0, +0x90,0x91,0x65,0xeb,0xf0,0xa3,0xe0,0xfb,0xa3,0xe0,0xf5,0x44,0xe4,0xf5,0x45,0x12, +0x35,0xab,0xd0,0xd0,0x92,0xaf,0x22,0x90,0x01,0x5f,0xe4,0xf0,0x90,0x01,0x3c,0x74, +0x08,0xf0,0xe4,0x90,0x91,0x66,0xf0,0x90,0x91,0x2d,0xe0,0x90,0x91,0x67,0xf0,0xe4, +0xfb,0xfd,0x7f,0x5c,0x7e,0x01,0x91,0x59,0x90,0x01,0x5f,0x74,0x05,0xf0,0x90,0x06, +0x92,0x74,0x02,0xf0,0x90,0x91,0x36,0x14,0xf0,0xe5,0x6e,0x54,0x0f,0xc3,0x94,0x0c, +0x50,0x02,0xf1,0x23,0x22,0x90,0x02,0x84,0xef,0xf0,0xa3,0xee,0xf0,0xa3,0x74,0x05, +0xf0,0x22,0x7d,0x01,0xaf,0x6f,0xe1,0x27,0xf1,0xe6,0xbf,0x01,0x10,0x90,0x91,0x42, +0xe0,0xff,0xe4,0xfd,0x12,0x48,0x22,0x90,0x04,0x1f,0x74,0x20,0xf0,0x22,0x8f,0x82, +0x8e,0x83,0xa3,0xa3,0xa3,0xe4,0xf0,0x22,0xe4,0xf5,0x72,0x7f,0x60,0x7e,0x01,0x80, +0xed,0x7f,0x00,0x22,0x90,0x91,0x53,0xe0,0x54,0xfe,0xf0,0x02,0x50,0xd6,0x22,0xe4, +0xf5,0x75,0x22,0x02,0x5f,0xe2,0x02,0x5f,0xe9,0xef,0x8e,0xf0,0x71,0x70,0x45,0x26, +0x00,0x40,0x45,0x4e,0x00,0x80,0x45,0x79,0x01,0x00,0x45,0x8d,0x02,0x00,0x45,0xa5, +0x04,0x00,0x00,0x00,0x45,0xc2,0xed,0x54,0x3f,0x70,0x04,0xfe,0xff,0x80,0x04,0x7e, +0x00,0x7f,0x40,0xef,0x2d,0xff,0xee,0x3c,0xfe,0xef,0x78,0x06,0xce,0xc3,0x13,0xce, +0x13,0xd8,0xf9,0x78,0x06,0xc3,0x33,0xce,0x33,0xce,0xd8,0xf9,0x80,0x26,0xed,0x54, +0x7f,0x70,0x04,0xfe,0xff,0x80,0x04,0x7e,0x00,0x7f,0x80,0xef,0x2d,0xff,0xee,0x3c, +0xfe,0xef,0x78,0x07,0xce,0xc3,0x13,0xce,0x13,0xd8,0xf9,0x78,0x07,0xc3,0x33,0xce, +0x33,0xce,0xd8,0xf9,0xfd,0xac,0x06,0x80,0x49,0xed,0x70,0x04,0xfe,0xff,0x80,0x04, +0x7e,0x01,0x7f,0x00,0xef,0x2d,0xee,0x3c,0x7d,0x00,0xfc,0x80,0x35,0xec,0x54,0x01, +0x4d,0x70,0x04,0xfe,0xff,0x80,0x04,0x7e,0x02,0x7f,0x00,0xef,0x2d,0xee,0x3c,0xc3, +0x13,0x7d,0x00,0x80,0x1a,0xec,0x54,0x03,0x4d,0x70,0x04,0xfe,0xff,0x80,0x04,0x7e, +0x04,0x7f,0x00,0xef,0x2d,0xee,0x3c,0x13,0x13,0x54,0x3f,0x7d,0x00,0x25,0xe0,0x25, +0xe0,0xfc,0xae,0x04,0xaf,0x05,0x22,0x90,0x91,0x09,0x12,0x2a,0x8b,0x00,0x00,0x00, +0x00,0x90,0x06,0xa9,0xe0,0x90,0x91,0x08,0xf0,0xe0,0x54,0xc0,0x70,0x0a,0x53,0x71, +0xfe,0x53,0x71,0xfd,0x91,0xc2,0x80,0x47,0x90,0x91,0x26,0xe0,0x60,0x41,0x90,0x91, +0x38,0xe0,0x70,0x3b,0x90,0x91,0x38,0x74,0x01,0xf0,0x7f,0x00,0x7e,0x08,0x12,0x27, +0xde,0x90,0x91,0x09,0x12,0x2a,0x7f,0x90,0x91,0x09,0x71,0x09,0xec,0x44,0x02,0xfc, +0x90,0x91,0x09,0x12,0x2a,0x7f,0x90,0x91,0x09,0x71,0x09,0x90,0x80,0x85,0x12,0x2a, +0x7f,0x7f,0x00,0x7e,0x08,0x12,0x2f,0xd9,0x90,0x02,0x86,0xe0,0x54,0xfb,0xf0,0x90, +0x91,0x08,0xe0,0x30,0xe6,0x13,0x43,0x71,0x01,0x90,0x91,0x3b,0xe0,0x64,0x02,0x60, +0x04,0x91,0xc8,0x80,0x07,0x91,0x77,0x80,0x03,0x53,0x71,0xfe,0x90,0x91,0x08,0xe0, +0x30,0xe7,0x16,0x43,0x71,0x02,0xe4,0x90,0x91,0x66,0x91,0x49,0x90,0x01,0x57,0x74, +0x05,0xf0,0x90,0x91,0x3c,0x74,0x01,0xf0,0x22,0x53,0x71,0xfd,0x22,0xd3,0x10,0xaf, +0x01,0xc3,0xc0,0xd0,0x8b,0x60,0x8a,0x61,0x89,0x62,0x90,0x91,0x68,0x71,0x41,0xab, +0x63,0xaa,0x64,0xa9,0x65,0x90,0x91,0x6b,0x71,0x41,0xaf,0x66,0x15,0x66,0xef,0x60, +0x1b,0x90,0x91,0x6b,0xe4,0x75,0xf0,0x01,0x71,0x2a,0x12,0x29,0xd9,0xff,0x90,0x91, +0x68,0xe4,0x75,0xf0,0x01,0x71,0x2a,0xef,0x51,0x4d,0x80,0xde,0xab,0x60,0xaa,0x61, +0xa9,0x62,0xd0,0xd0,0x92,0xaf,0x22,0xd3,0x10,0xaf,0x01,0xc3,0xc0,0xd0,0x90,0x91, +0x6e,0x71,0x41,0x90,0x91,0x9e,0xe0,0xff,0x04,0xf0,0x90,0x00,0x01,0xef,0x51,0x5f, +0x7f,0xaf,0x7e,0x01,0x12,0x64,0x1c,0xef,0x60,0x44,0x90,0x91,0x6e,0x71,0x21,0x8b, +0x63,0x8a,0x64,0x89,0x65,0x75,0x66,0x02,0x7b,0x01,0x7a,0x01,0x79,0xa0,0xd1,0x6d, +0x90,0x91,0x71,0x71,0x21,0x8b,0x63,0x8a,0x64,0x89,0x65,0x90,0x91,0x6e,0x71,0x21, +0x12,0x29,0xd9,0xff,0xc4,0x54,0x0f,0xf5,0x66,0x7b,0x01,0x7a,0x01,0x79,0xa2,0xd1, +0x6d,0x90,0x01,0xaf,0x74,0xff,0xf0,0x90,0x01,0xcb,0xe0,0x64,0x80,0xf0,0xd0,0xd0, +0x92,0xaf,0x22,0x7d,0x01,0x7f,0x0c,0x90,0x91,0x95,0xed,0xf0,0x90,0x91,0x94,0xef, +0xf0,0x54,0x0f,0xff,0xe5,0x6e,0x54,0x0f,0x6f,0x60,0x76,0x90,0x91,0x94,0xe0,0x30, +0xe2,0x30,0xe5,0x6e,0x20,0xe2,0x05,0x7f,0x01,0x12,0x62,0x65,0xe5,0x6e,0x30,0xe3, +0x0f,0x90,0x91,0x94,0xe0,0x20,0xe3,0x08,0x12,0x5a,0x3f,0xef,0x60,0x53,0x80,0x52, +0xe5,0x6e,0x20,0xe3,0x4c,0x90,0x91,0x94,0xe0,0x30,0xe3,0x45,0xa3,0xe0,0xff,0x02, +0x62,0x4a,0xe5,0x6e,0x54,0x0f,0xff,0xbf,0x0c,0x0f,0x90,0x91,0x94,0xe0,0x20,0xe3, +0x08,0x12,0x5a,0x3f,0xef,0x60,0x2a,0xf1,0xb2,0xe5,0x6e,0x54,0x0f,0xff,0xbf,0x04, +0x10,0x90,0x91,0x94,0xe0,0x20,0xe2,0x09,0x12,0x5b,0xb3,0xef,0x60,0x13,0x12,0x48, +0xce,0xe5,0x6e,0x54,0x0f,0xff,0xbf,0x02,0x08,0x91,0xf1,0xef,0x60,0x03,0x12,0x63, +0x56,0x22,0x90,0x06,0x04,0xe0,0x44,0x40,0xf0,0xe5,0x6d,0xb4,0x01,0x04,0x7f,0x01, +0xf1,0xc9,0x53,0x6e,0xf0,0x43,0x6e,0x04,0x22,0x8f,0x67,0xf1,0xe6,0xbf,0x01,0x15, +0x90,0x91,0x43,0x12,0x48,0x1e,0xad,0x07,0xac,0x06,0xaf,0x67,0x12,0x61,0xa3,0x90, +0x04,0x1f,0x74,0x20,0xf0,0x22,0xd3,0x10,0xaf,0x01,0xc3,0xc0,0xd0,0x90,0x01,0xc4, +0x74,0xe6,0xf0,0x74,0x47,0xa3,0xf0,0x90,0x04,0x1d,0xe0,0x60,0x1a,0x90,0x05,0x22, +0xe0,0x54,0x90,0x60,0x07,0x90,0x01,0xc6,0xe0,0x44,0x40,0xf0,0x90,0x01,0xc7,0xe0, +0x30,0xe1,0xe4,0x7f,0x00,0x80,0x02,0x7f,0x01,0xd0,0xd0,0x92,0xaf,0x22,0xe0,0xff, +0x7d,0x01,0x90,0x91,0x74,0xef,0xf0,0xa3,0xed,0xf0,0xe4,0xa3,0xf0,0xa3,0xf0,0xe5, +0x70,0x60,0x04,0xe4,0xff,0x11,0xb3,0x90,0x91,0x74,0xe0,0x30,0xe0,0x09,0x90,0x91, +0x76,0xe4,0xf0,0xa3,0x74,0x80,0xf0,0x90,0x91,0x74,0xe0,0xff,0xc3,0x13,0x90,0xfd, +0x10,0xf0,0x90,0x04,0x25,0xef,0xf0,0x90,0x91,0x75,0xe0,0x60,0x1f,0xa3,0xa3,0xe0, +0xff,0x24,0x0f,0xf5,0x82,0xe4,0x34,0xfc,0xf5,0x83,0xe0,0x44,0x80,0xf0,0x74,0x10, +0x2f,0xf5,0x82,0xe4,0x34,0xfc,0xf5,0x83,0xe0,0x44,0x80,0xf0,0x90,0x91,0x76,0xa3, +0xe0,0xff,0xfd,0x24,0x08,0xf5,0x82,0xe4,0x34,0xfc,0xf5,0x83,0xe4,0xf0,0x74,0x09, +0x2d,0xf5,0x82,0xe4,0x34,0xfc,0xf5,0x83,0xe0,0x54,0xf0,0xf0,0x74,0x21,0x2f,0xf5, +0x82,0xe4,0x34,0xfc,0xf5,0x83,0xe0,0x54,0xf7,0xf0,0x90,0x91,0x76,0xe0,0xfe,0xa3, +0xe0,0xff,0x22,0xef,0x60,0x0b,0x90,0x91,0x51,0xe0,0xb4,0x01,0x10,0xe4,0xff,0x80, +0x09,0x90,0x91,0x51,0xe0,0xb4,0x01,0x05,0x7f,0x01,0x12,0x68,0x87,0x22,0x90,0x01, +0x37,0x74,0x02,0xf0,0x90,0x05,0x22,0x74,0xff,0xf0,0x12,0x68,0x46,0xef,0x70,0x06, +0x90,0x01,0xc8,0x74,0xfd,0xf0,0x7d,0x02,0x7f,0x03,0x12,0x36,0xe6,0xe5,0x70,0x60, +0x04,0x7f,0x01,0x11,0xb3,0x51,0x0c,0x53,0x6e,0xf0,0x43,0x6e,0x02,0x22,0xef,0x64, +0x01,0x70,0x42,0x7d,0x78,0x7f,0x02,0x12,0x36,0x75,0x7d,0x02,0x7f,0x03,0x12,0x36, +0x75,0x90,0x01,0x36,0x74,0x03,0xf0,0xfd,0x7f,0x02,0x12,0x36,0xe6,0x7d,0x10,0x7f, +0x03,0x12,0x36,0x92,0x90,0x01,0x57,0xe4,0xf0,0x90,0x01,0x3c,0x74,0x02,0xf0,0x12, +0x47,0x23,0xe4,0xff,0x11,0xb3,0x90,0x06,0x04,0xe0,0x54,0x7f,0xf0,0x90,0x06,0x0a, +0xe0,0x54,0xf8,0xf0,0x22,0x90,0x01,0x36,0x74,0x7b,0xf0,0xa3,0x74,0x02,0xf0,0x7d, +0x7b,0xff,0x12,0x36,0xe6,0x7d,0x02,0x7f,0x03,0x12,0x36,0xe6,0x7d,0x10,0x7f,0x03, +0x12,0x36,0x92,0x90,0x06,0x04,0xe0,0x44,0x80,0xf0,0x90,0x06,0x0a,0xe0,0x44,0x07, +0xf0,0x12,0x64,0x11,0xe5,0x6d,0x20,0xe0,0x05,0xe4,0x90,0x91,0x29,0xf0,0x22,0x8b, +0x0e,0x8a,0x0f,0x89,0x10,0x12,0x62,0x3e,0xab,0x0e,0xaa,0x0f,0xa9,0x10,0x12,0x29, +0xd9,0xf5,0x70,0x14,0x60,0x0e,0x14,0x60,0x1e,0x14,0x60,0x2f,0x24,0x03,0x70,0x40, +0x7f,0x01,0x80,0x3a,0xab,0x0e,0xaa,0x0f,0xa9,0x10,0x90,0x00,0x02,0x12,0x42,0x20, +0xfd,0xe4,0xff,0x31,0xe1,0x80,0x27,0xab,0x0e,0xaa,0x0f,0xa9,0x10,0x90,0x00,0x02, +0x12,0x42,0x20,0xfd,0x7f,0x01,0x31,0xe1,0x1f,0x80,0x13,0xab,0x0e,0xaa,0x0f,0xa9, +0x10,0x90,0x00,0x02,0x12,0x42,0x20,0xfd,0x7f,0x02,0x31,0xe1,0xe4,0xff,0x11,0xfe, +0x22,0xef,0x24,0xfe,0x60,0x0b,0x04,0x70,0x22,0x90,0x91,0x39,0x74,0x01,0xf0,0x80, +0x16,0xed,0x70,0x0a,0x90,0x91,0x35,0xe0,0x90,0x91,0x39,0xf0,0x80,0x05,0x90,0x91, +0x39,0xed,0xf0,0x90,0x91,0x39,0xe0,0x90,0x91,0x27,0xf0,0x22,0x7f,0x78,0x7e,0x08, +0x12,0x27,0xde,0x90,0x90,0xd8,0x12,0x2a,0x7f,0x7f,0x04,0x7e,0x0c,0x12,0x27,0xde, +0x90,0x90,0xdc,0x12,0x2a,0x7f,0x7f,0x00,0x7e,0x08,0x12,0x27,0xde,0x90,0x90,0xe0, +0x12,0x2a,0x7f,0x90,0x91,0x51,0xe0,0x90,0x90,0xd8,0xb4,0x01,0x0d,0x12,0x43,0x09, +0xef,0x54,0xc7,0xff,0xed,0x54,0xc7,0xfd,0x80,0x07,0x12,0x43,0x09,0xef,0x54,0xc7, +0xff,0xec,0x90,0x80,0x85,0x12,0x2a,0x7f,0x7f,0x78,0x7e,0x08,0x12,0x2f,0xd9,0x90, +0x90,0xdc,0x12,0x43,0x09,0xef,0x54,0x0f,0xff,0xec,0x90,0x80,0x85,0x12,0x2a,0x7f, +0x7f,0x04,0x7e,0x0c,0x12,0x2f,0xd9,0x90,0x90,0xe0,0x12,0x43,0x09,0xef,0x44,0x02, +0xff,0xec,0x90,0x80,0x85,0x12,0x2a,0x7f,0x7f,0x00,0x7e,0x08,0x12,0x2f,0xd9,0x7f, +0x70,0x7e,0x0e,0x12,0x27,0xde,0x90,0x90,0xe4,0x12,0x2a,0x7f,0x90,0x80,0x85,0x12, +0x2a,0x8b,0x00,0x1b,0x25,0xa0,0x7f,0x70,0x7e,0x0e,0x12,0x2f,0xd9,0x90,0x80,0x59, +0x12,0x2a,0x8b,0x00,0x00,0x00,0x00,0xe4,0xfd,0xff,0x12,0x34,0x81,0x90,0x91,0x51, +0xe0,0xb4,0x01,0x11,0x90,0x80,0x59,0x12,0x2a,0x8b,0x00,0x00,0x00,0x00,0xe4,0xfd, +0x7f,0x01,0x12,0x34,0x81,0x90,0x00,0x11,0xe0,0x54,0xf6,0xf0,0x80,0x08,0xf4,0xff, +0x90,0x00,0x43,0xe0,0x5f,0xf0,0xd3,0x10,0xaf,0x01,0xc3,0xc0,0xd0,0x7f,0x10,0xdf, +0xfe,0xd0,0xd0,0x92,0xaf,0x22,0xd3,0x10,0xaf,0x01,0xc3,0xc0,0xd0,0x90,0x91,0x9b, +0xed,0xf0,0x90,0x91,0x9a,0xef,0xf0,0xd3,0x94,0x07,0x50,0x63,0xe0,0xff,0x74,0x01, +0xa8,0x07,0x08,0x80,0x02,0xc3,0x33,0xd8,0xfc,0xf4,0xff,0x90,0x00,0x47,0xe0,0x5f, +0xf0,0x51,0xe6,0x90,0x91,0x9a,0xe0,0xff,0x74,0x01,0xa8,0x07,0x08,0x80,0x02,0xc3, +0x33,0xd8,0xfc,0xff,0x90,0x00,0x46,0xe0,0x4f,0xf0,0x51,0xe6,0x90,0x91,0x9b,0xe0, +0x60,0x16,0x90,0x91,0x9a,0xe0,0xff,0x74,0x01,0xa8,0x07,0x08,0x80,0x02,0xc3,0x33, +0xd8,0xfc,0xff,0x90,0x00,0x45,0x80,0x66,0x90,0x91,0x9a,0xe0,0xff,0x74,0x01,0xa8, +0x07,0x08,0x80,0x02,0xc3,0x33,0xd8,0xfc,0xf4,0xff,0x90,0x00,0x45,0x80,0x6b,0x90, +0x91,0x9a,0xe0,0x24,0xf8,0xf0,0xe0,0xff,0x74,0x01,0xa8,0x07,0x08,0x80,0x02,0xc3, +0x33,0xd8,0xfc,0xc4,0x54,0xf0,0x51,0xde,0x90,0x91,0x9a,0xe0,0xff,0x74,0x01,0xa8, +0x07,0x08,0x80,0x02,0xc3,0x33,0xd8,0xfc,0xff,0x90,0x00,0x43,0xe0,0x4f,0xf0,0x51, +0xe6,0x90,0x91,0x9b,0xe0,0x60,0x1b,0x90,0x91,0x9a,0xe0,0xff,0x74,0x01,0xa8,0x07, +0x08,0x80,0x02,0xc3,0x33,0xd8,0xfc,0xc4,0x54,0xf0,0xff,0x90,0x00,0x42,0xe0,0x4f, +0x80,0x1a,0x90,0x91,0x9a,0xe0,0xff,0x74,0x01,0xa8,0x07,0x08,0x80,0x02,0xc3,0x33, +0xd8,0xfc,0xc4,0x54,0xf0,0xf4,0xff,0x90,0x00,0x42,0xe0,0x5f,0xf0,0x51,0xe6,0xd0, +0xd0,0x92,0xaf,0x22,0xf0,0x90,0x00,0x45,0xe0,0x54,0xfe,0xfd,0x7f,0x45,0xd3,0x10, +0xaf,0x01,0xc3,0xc0,0xd0,0x8f,0x82,0x75,0x83,0x00,0xed,0xf0,0x51,0xe6,0xd0,0xd0, +0x92,0xaf,0x22,0xef,0x14,0x60,0x30,0x14,0x60,0x66,0x24,0x02,0x60,0x02,0x81,0xaa, +0x90,0x90,0xf3,0x74,0x02,0xf0,0x90,0x00,0x48,0xe0,0x44,0x0c,0xfd,0x7f,0x48,0x71, +0xee,0x90,0x00,0x47,0xe0,0x44,0x08,0xfd,0x7f,0x47,0x71,0xee,0x90,0x00,0x45,0xe0, +0x44,0x10,0xfd,0x7f,0x45,0x80,0x71,0xe4,0x90,0x90,0xf3,0xf0,0x90,0x90,0xef,0x12, +0x43,0x09,0x90,0x80,0x85,0x12,0x2a,0x7f,0x7f,0x80,0x7e,0x08,0x12,0x2f,0xd9,0x90, +0x00,0x45,0xe0,0x44,0xef,0xfd,0x7f,0x45,0x71,0xee,0x90,0x00,0x45,0xe0,0x54,0xef, +0xfd,0x7f,0x45,0x71,0xee,0x90,0x00,0x46,0xe0,0x44,0x10,0xfd,0x7f,0x46,0x80,0x38, +0x90,0x90,0xf3,0x74,0x01,0xf0,0x90,0x90,0xf9,0x12,0x43,0x09,0x90,0x80,0x85,0x12, +0x2a,0x7f,0x7f,0x80,0x7e,0x08,0x12,0x2f,0xd9,0x90,0x00,0x45,0xe0,0x44,0x20,0xfd, +0x7f,0x45,0x71,0xee,0x90,0x00,0x45,0xe0,0x44,0x10,0xfd,0x7f,0x45,0x71,0xee,0x90, +0x00,0x46,0xe0,0x44,0x10,0xfd,0x7f,0x46,0x71,0xee,0x22,0x90,0x00,0x02,0x12,0x42, +0x20,0x90,0x90,0xf5,0xf0,0x90,0x00,0x01,0x12,0x42,0x20,0x25,0xe0,0x25,0xe0,0x90, +0x90,0xf4,0xf0,0x12,0x29,0xd9,0x25,0xe0,0x25,0xe0,0x90,0x90,0xf8,0xf0,0x90,0x05, +0x60,0xe0,0x90,0x91,0x03,0xf0,0x90,0x05,0x61,0xe0,0x90,0x91,0x04,0xf0,0x90,0x05, +0x62,0xe0,0x90,0x91,0x05,0xf0,0x90,0x05,0x63,0xe0,0x90,0x91,0x06,0xf0,0xa2,0xaf, +0xe4,0x33,0x90,0x91,0x1c,0xf0,0xc2,0xaf,0x90,0x90,0xf4,0xe0,0xff,0x12,0x6e,0x67, +0x90,0x91,0x1c,0xe0,0x24,0xff,0x92,0xaf,0x90,0x90,0xf5,0xe0,0x70,0x02,0xa1,0xb2, +0x90,0x90,0xf4,0xe0,0x70,0x02,0xa1,0xb2,0x90,0x90,0xf8,0xe0,0x70,0x02,0xa1,0xb2, +0xa2,0xaf,0xe4,0x33,0x90,0x91,0x1c,0xf0,0xc2,0xaf,0x90,0x91,0x07,0x74,0x01,0xf0, +0x90,0x91,0x1c,0xe0,0x24,0xff,0x92,0xaf,0x71,0xe5,0x90,0x00,0x46,0xe0,0x44,0x01, +0xfd,0x7f,0x46,0x71,0xee,0x90,0x90,0xed,0xe0,0x60,0x15,0x90,0x90,0xf9,0x12,0x43, +0x09,0x90,0x80,0x85,0x12,0x2a,0x7f,0x7f,0x80,0x7e,0x08,0x12,0x2f,0xd9,0x80,0x06, +0x90,0x05,0x22,0x74,0x7f,0xf0,0x90,0x00,0x45,0xe0,0x54,0xef,0xfd,0x7f,0x45,0x71, +0xee,0x90,0x05,0x87,0xe0,0x64,0x80,0xf0,0x90,0x91,0x03,0xe0,0x90,0x05,0x84,0xf0, +0x90,0x91,0x04,0xe0,0x90,0x05,0x85,0xf0,0x90,0x91,0x05,0xe0,0x90,0x05,0x86,0xf0, +0x90,0x91,0x06,0xe0,0x90,0x05,0x87,0xf0,0xa2,0xaf,0xe4,0x33,0x90,0x91,0x1c,0xf0, +0xc2,0xaf,0x90,0x01,0x3c,0xe0,0x44,0x20,0xf0,0x7d,0x20,0xe4,0xff,0x12,0x37,0x00, +0x80,0x2b,0x90,0x90,0xf5,0xe0,0x70,0x2d,0x90,0x91,0x07,0x71,0xe4,0x90,0x00,0x46, +0xe0,0x54,0xfe,0xfd,0x7f,0x46,0x71,0xee,0x90,0x05,0x22,0xe4,0xf0,0xa2,0xaf,0x33, +0x90,0x91,0x1c,0xf0,0xc2,0xaf,0x7d,0x20,0xe4,0xff,0x12,0x36,0x92,0x90,0x91,0x1c, +0xe0,0x24,0xff,0x92,0xaf,0x22,0x8b,0x0e,0x8a,0x0f,0x89,0x10,0x90,0x00,0x02,0x12, +0x42,0x20,0x90,0x90,0xf6,0xf0,0xe0,0x30,0xe0,0x4b,0x90,0x90,0xed,0x74,0x01,0xf0, +0x7f,0x80,0x7e,0x08,0x12,0x27,0xde,0x90,0x90,0xef,0x12,0x2a,0x7f,0xab,0x0e,0xaa, +0x0f,0xa9,0x10,0x90,0x00,0x01,0x12,0x42,0x20,0xff,0xe4,0xfc,0xfd,0xfe,0x78,0x1a, +0x12,0x2a,0x6c,0xa8,0x04,0xa9,0x05,0xaa,0x06,0xab,0x07,0x90,0x90,0xef,0x12,0x43, +0x09,0xec,0x54,0x03,0xfc,0x12,0x42,0xfc,0x90,0x90,0xf9,0x12,0x2a,0x7f,0x90,0x05, +0x22,0xe4,0xf0,0x80,0x2d,0xe4,0x90,0x90,0xed,0xf0,0x7f,0x80,0x7e,0x08,0x12,0x27, +0xde,0xec,0x54,0x03,0xfc,0xec,0x44,0xc0,0xfc,0x90,0x90,0xef,0x12,0x2a,0x7f,0x90, +0x90,0xef,0x12,0x43,0x09,0x90,0x80,0x85,0x12,0x2a,0x7f,0x7f,0x80,0x7e,0x08,0x12, +0x2f,0xd9,0x90,0x90,0xf6,0xe0,0x30,0xe1,0x19,0x7d,0x0c,0x7f,0x47,0x71,0xee,0x90, +0x00,0x48,0xe0,0x44,0x0c,0xfd,0x7f,0x48,0x71,0xee,0x90,0x00,0x46,0xe0,0x44,0x10, +0x80,0x1c,0x90,0x00,0x47,0xe0,0x54,0xf3,0xfd,0x7f,0x47,0x71,0xee,0x90,0x00,0x48, +0xe0,0x54,0xf3,0xfd,0x7f,0x48,0x71,0xee,0x90,0x00,0x46,0xe0,0x54,0xef,0xfd,0x7f, +0x46,0x71,0xee,0xe4,0x90,0x90,0xf3,0xf0,0x22,0x90,0x01,0x3c,0x74,0xff,0xf0,0xa3, +0xf0,0xa3,0xf0,0x90,0x01,0x34,0xf0,0xa3,0xf0,0xa3,0xf0,0xa3,0xf0,0xfd,0x7f,0x54, +0x71,0xee,0x7d,0xff,0x7f,0x55,0x71,0xee,0x7d,0xff,0x7f,0x56,0x71,0xee,0x7d,0xff, +0x7f,0x57,0x61,0xee,0x90,0x01,0x30,0xe4,0xf0,0xa3,0xf0,0xa3,0xf0,0xa3,0xf0,0x90, +0x01,0x38,0xf0,0xa3,0xf0,0xa3,0xf0,0xa3,0xf0,0xfd,0x7f,0x50,0x71,0xee,0xe4,0xfd, +0x7f,0x51,0x71,0xee,0xe4,0xfd,0x7f,0x52,0x71,0xee,0xe4,0xfd,0x7f,0x53,0x61,0xee, +0xd3,0x10,0xaf,0x01,0xc3,0xc0,0xd0,0x90,0x91,0x22,0xed,0xf0,0x90,0x91,0x21,0xef, +0xf0,0xd3,0x94,0x07,0x50,0x4e,0xa3,0xe0,0x70,0x1a,0x90,0x91,0x21,0xe0,0xff,0x74, +0x01,0xa8,0x07,0x08,0x80,0x02,0xc3,0x33,0xd8,0xfc,0xf4,0xff,0x90,0x00,0x47,0xe0, +0x5f,0xf0,0x80,0x17,0x90,0x91,0x21,0xe0,0xff,0x74,0x01,0xa8,0x07,0x08,0x80,0x02, +0xc3,0x33,0xd8,0xfc,0xff,0x90,0x00,0x47,0xe0,0x4f,0xf0,0x51,0xe6,0x90,0x91,0x21, +0xe0,0xff,0x74,0x01,0xa8,0x07,0x08,0x80,0x02,0xc3,0x33,0xd8,0xfc,0xf4,0xff,0x90, +0x00,0x46,0x80,0x59,0x90,0x91,0x21,0xe0,0x24,0xf8,0xf0,0xa3,0xe0,0x70,0x1d,0x90, +0x91,0x21,0xe0,0xff,0x74,0x01,0xa8,0x07,0x08,0x80,0x02,0xc3,0x33,0xd8,0xfc,0xc4, +0x54,0xf0,0xf4,0xff,0x90,0x00,0x43,0xe0,0x5f,0xf0,0x80,0x1a,0x90,0x91,0x21,0xe0, +0xff,0x74,0x01,0xa8,0x07,0x08,0x80,0x02,0xc3,0x33,0xd8,0xfc,0xc4,0x54,0xf0,0xff, +0x90,0x00,0x43,0xe0,0x4f,0xf0,0x51,0xe6,0x90,0x91,0x21,0xe0,0xff,0x74,0x01,0xa8, +0x07,0x08,0x80,0x02,0xc3,0x33,0xd8,0xfc,0xf4,0xff,0x90,0x00,0x43,0xe0,0x5f,0xf0, +0x51,0xe6,0xd0,0xd0,0x92,0xaf,0x22,0x90,0x00,0x49,0xe0,0x90,0x91,0x9f,0xf0,0xe0, +0x54,0x0f,0xf0,0x44,0xf0,0xfd,0x7f,0x49,0x71,0xee,0x90,0x91,0x9f,0xe0,0x44,0xb0, +0xfd,0x7f,0x49,0x61,0xee,0x12,0x47,0xe6,0xbf,0x01,0x10,0x90,0x02,0x09,0xe0,0xff, +0x7d,0x01,0x12,0x48,0x22,0x90,0x04,0x1f,0x74,0x20,0xf0,0x22,0x75,0x28,0x33,0xe4, +0xf5,0x29,0x75,0x2a,0x07,0xf5,0x2b,0x90,0x01,0x30,0xe5,0x28,0xf0,0xa3,0xe5,0x29, +0xf0,0xa3,0xe5,0x2a,0xf0,0xa3,0xe5,0x2b,0xf0,0x22,0xe4,0x90,0x91,0x0e,0xf0,0xa3, +0xf0,0x75,0x8e,0x02,0xf1,0x25,0xd1,0xe8,0x90,0x91,0x4f,0xef,0xf0,0xf1,0x0b,0x90, +0x91,0x51,0xef,0xf0,0xf1,0x60,0x90,0x91,0x3d,0xee,0xf0,0xa3,0xef,0xf0,0xe4,0xf5, +0x57,0xf1,0x02,0x12,0x61,0xc4,0x12,0x32,0x3d,0x12,0x44,0xff,0x11,0x0c,0xf1,0x36, +0xd1,0xfb,0xd1,0xd0,0x12,0x44,0xfe,0x31,0x13,0x12,0x44,0xf4,0x12,0x6e,0x09,0x90, +0x91,0x10,0xe5,0xd9,0xf0,0x12,0x4e,0xb9,0xc2,0xaf,0x90,0x00,0x80,0xe0,0x44,0x40, +0xf0,0x12,0x4a,0xe6,0x75,0xe8,0x03,0x43,0xa8,0x85,0xd2,0xaf,0x90,0x91,0x0e,0xe0, +0x64,0x01,0xf0,0x24,0x2a,0x90,0x01,0xc4,0xf0,0x74,0x50,0xa3,0xf0,0xe5,0x57,0x30, +0xe2,0x10,0x12,0x5f,0xf0,0xbf,0x01,0x0a,0xc2,0xaf,0x53,0x57,0xfb,0xd2,0xaf,0x12, +0x71,0x97,0xe5,0x57,0x30,0xe4,0x0a,0xc2,0xaf,0x53,0x57,0xef,0xd2,0xaf,0x12,0x60, +0x2d,0x90,0x90,0xf7,0xe0,0x70,0x03,0x12,0x70,0x74,0x11,0xe7,0x90,0x91,0x3f,0xe0, +0x90,0x01,0xba,0xf0,0x80,0xb6,0xe4,0x90,0x91,0x55,0xf0,0x90,0x91,0x53,0xe0,0x54, +0x7f,0xf0,0xa3,0x74,0x0a,0xf0,0x22,0x90,0x06,0x34,0xe0,0x60,0x25,0x14,0x70,0x1b, +0x7b,0x01,0x7a,0x06,0x79,0x35,0x7f,0xf9,0x7e,0x01,0x12,0x67,0xe4,0xbf,0x01,0x09, +0x90,0x06,0x35,0xe0,0x54,0x0f,0xf0,0x80,0x04,0x80,0x00,0xe1,0x17,0xe4,0x90,0x06, +0x34,0xf0,0x22,0x90,0x91,0x56,0xe0,0x54,0xfe,0xf0,0xe0,0x54,0x7f,0xf0,0x90,0x01, +0x17,0xe0,0xfe,0x90,0x01,0x16,0xe0,0x7c,0x00,0x24,0x00,0xff,0xec,0x3e,0x90,0x91, +0x5c,0xf0,0xa3,0xef,0xf0,0x90,0x01,0x04,0xe0,0x54,0x0f,0x90,0x91,0x1c,0xf0,0xe0, +0xff,0x74,0x40,0x7e,0x00,0xa8,0x07,0x08,0x80,0x05,0xc3,0x33,0xce,0x33,0xce,0xd8, +0xf9,0x90,0x91,0x5b,0xf0,0xee,0x90,0x91,0x5a,0xf0,0x90,0x91,0x5e,0xe0,0x54,0xfe, +0xf0,0xe0,0x54,0xfd,0xf0,0xe0,0x54,0xfb,0xf0,0xe0,0x54,0xf7,0xf0,0xe0,0x54,0xef, +0xf0,0xe0,0x54,0xdf,0xf0,0xe0,0x54,0xbf,0xf0,0xe0,0x54,0x7f,0xf0,0xe4,0xa3,0xf0, +0xa3,0xf0,0xa3,0xe0,0x54,0xfe,0xf0,0xe0,0x54,0xfd,0xf0,0xe0,0x54,0xf7,0xf0,0x22, +0xd3,0x10,0xaf,0x01,0xc3,0xc0,0xd0,0x12,0x29,0xd9,0x54,0x01,0xff,0x90,0x91,0x56, +0xe0,0x54,0xfe,0x4f,0xf0,0x90,0x00,0x01,0x12,0x42,0x20,0x90,0x91,0x57,0xf0,0x90, +0x00,0x02,0x12,0x42,0x20,0x90,0x91,0x58,0xf0,0x90,0x91,0x56,0xe0,0x30,0xe0,0x1a, +0x90,0x06,0x09,0xe0,0x54,0xfe,0xf0,0x90,0x02,0x86,0xe0,0x44,0x04,0xf0,0x43,0x57, +0x04,0x7d,0x08,0xe4,0xff,0x12,0x36,0xe6,0x80,0x12,0x7d,0x08,0xe4,0xff,0x12,0x36, +0x75,0x90,0x02,0x86,0xe0,0x54,0xfb,0xf0,0x31,0xf1,0x31,0x13,0xd0,0xd0,0x92,0xaf, +0x22,0x90,0x06,0x90,0xe4,0xf0,0x21,0x5a,0x90,0x91,0x19,0x12,0x43,0x41,0xef,0x12, +0x43,0x4a,0x52,0x30,0x01,0x52,0x39,0x02,0x52,0x5b,0x03,0x52,0x64,0x09,0x52,0x6c, +0x0c,0x52,0x75,0x0d,0x52,0x7d,0x0e,0x52,0x8e,0x1a,0x52,0x96,0x2c,0x52,0x41,0x2d, +0x52,0x4a,0x2e,0x52,0x9e,0x30,0x52,0x53,0x3b,0x52,0x86,0x3c,0x00,0x00,0x52,0xa6, +0x90,0x91,0x19,0x12,0x43,0x21,0x02,0x64,0x72,0x90,0x91,0x19,0x12,0x43,0x21,0xc1, +0xf5,0x90,0x91,0x19,0x12,0x43,0x21,0x02,0x65,0x8d,0x90,0x91,0x19,0x12,0x43,0x21, +0x02,0x65,0xd5,0x90,0x91,0x19,0x12,0x43,0x21,0xe1,0x4b,0x90,0x91,0x19,0x12,0x43, +0x21,0x02,0x66,0x0e,0x90,0x91,0x19,0x12,0x43,0x21,0x80,0x42,0x90,0x91,0x19,0x12, +0x43,0x21,0x02,0x4c,0xab,0x90,0x91,0x19,0x12,0x43,0x21,0xe1,0x98,0x90,0x91,0x19, +0x12,0x43,0x21,0x02,0x4d,0xe6,0x90,0x91,0x19,0x12,0x43,0x21,0x21,0x90,0x90,0x91, +0x19,0x12,0x43,0x21,0xa1,0x9b,0x90,0x91,0x19,0x12,0x43,0x21,0x81,0x7a,0x90,0x91, +0x19,0x12,0x43,0x21,0xe1,0x78,0x90,0x01,0xc6,0xe0,0x44,0x01,0xf0,0x22,0xd3,0x10, +0xaf,0x01,0xc3,0xc0,0xd0,0x90,0x91,0x1c,0x12,0x43,0x41,0x90,0x91,0x1c,0x12,0x43, +0x21,0x90,0x00,0x01,0x12,0x42,0x97,0xfa,0xe5,0xf0,0x24,0x00,0xff,0xe4,0x3a,0xfe, +0x90,0x91,0x1c,0x12,0x43,0x21,0x90,0x00,0x01,0xee,0x8f,0xf0,0x12,0x42,0xcf,0x12, +0x29,0xd9,0xff,0x60,0x2c,0xb5,0x72,0x16,0x90,0x91,0x1c,0x12,0x43,0x21,0x90,0x00, +0x01,0x12,0x42,0x97,0x65,0x74,0x70,0x04,0xe5,0x73,0x65,0xf0,0x60,0x23,0x90,0x91, +0x1c,0x12,0x43,0x21,0x90,0x00,0x01,0x12,0x42,0x97,0xff,0xae,0xf0,0x71,0x26,0x80, +0x10,0x90,0x91,0x1c,0x12,0x43,0x21,0x12,0x29,0xd9,0x65,0x72,0x60,0x03,0x12,0x44, +0xe8,0xd0,0xd0,0x92,0xaf,0x22,0x90,0x91,0x1f,0xee,0xf0,0xa3,0xef,0xf0,0x75,0x72, +0x01,0x8e,0x73,0xf5,0x74,0xe4,0xfd,0x7f,0x0b,0x12,0x4f,0x10,0xe4,0xfd,0x7f,0x02, +0x12,0x4f,0x10,0x71,0x6a,0xe4,0xff,0x71,0xcc,0xe4,0xf5,0x76,0x90,0x01,0xc9,0xe5, +0x76,0xf0,0x90,0x91,0x1f,0xe0,0xfc,0xa3,0xe0,0xfd,0xec,0xfb,0x8d,0x44,0xe4,0xf5, +0x45,0x7d,0x01,0x7f,0x60,0x7e,0x01,0x02,0x35,0xab,0x7f,0x0b,0x71,0xd9,0xef,0x65, +0x75,0x60,0x10,0xe5,0x75,0xb4,0x01,0x05,0xe4,0xf5,0x75,0x80,0x03,0x75,0x75,0x01, +0x7f,0x01,0x22,0x7f,0x00,0x22,0xe5,0x72,0x64,0x01,0x70,0x3f,0x71,0x6a,0xbf,0x01, +0x04,0x7f,0x01,0x71,0xcc,0x90,0x00,0x46,0xe0,0x44,0x04,0xfd,0x7f,0x46,0x12,0x4b, +0xee,0x90,0x00,0x44,0xe0,0x54,0xfb,0xfd,0x7f,0x44,0x12,0x4b,0xee,0x90,0x00,0x46, +0xe0,0x54,0xfb,0xfd,0x7f,0x46,0x12,0x4b,0xee,0x7f,0x02,0x71,0xd9,0x8f,0x76,0x90, +0x01,0xc9,0xe5,0x76,0xf0,0xb4,0x01,0x03,0x12,0x4f,0xd7,0x22,0x90,0x01,0xca,0xe5, +0x75,0xf0,0xef,0x60,0x03,0x12,0x4f,0xd7,0x22,0xd3,0x10,0xaf,0x01,0xc3,0xc0,0xd0, +0x90,0x91,0xa0,0xef,0xf0,0xd3,0x94,0x07,0x50,0x47,0xe0,0xff,0x74,0x01,0xa8,0x07, +0x08,0x80,0x02,0xc3,0x33,0xd8,0xfc,0xf4,0xff,0x90,0x00,0x46,0xe0,0x5f,0xf0,0x12, +0x4a,0xe6,0x90,0x91,0xa0,0xe0,0xfd,0x74,0x01,0x7e,0x00,0xa8,0x05,0x08,0x80,0x05, +0xc3,0x33,0xce,0x33,0xce,0xd8,0xf9,0xff,0x90,0x00,0x44,0xe0,0xfb,0xe4,0xfe,0xef, +0x5b,0xa8,0x05,0x08,0x80,0x06,0xce,0xa2,0xe7,0x13,0xce,0x13,0xd8,0xf8,0xff,0x80, +0x44,0x90,0x91,0xa0,0xe0,0x24,0xf8,0xf0,0xe0,0xff,0x74,0x01,0xa8,0x07,0x08,0x80, +0x02,0xc3,0x33,0xd8,0xfc,0x12,0x4a,0xde,0x90,0x91,0xa0,0xe0,0xfd,0x74,0x01,0x7e, +0x00,0xa8,0x05,0x08,0x80,0x05,0xc3,0x33,0xce,0x33,0xce,0xd8,0xf9,0xff,0x90,0x00, +0x42,0xe0,0xfb,0xe4,0xfe,0xef,0x5b,0xa8,0x05,0x08,0x80,0x06,0xce,0xa2,0xe7,0x13, +0xce,0x13,0xd8,0xf8,0xff,0xd0,0xd0,0x92,0xaf,0x22,0xd3,0x10,0xaf,0x01,0xc3,0xc0, +0xd0,0xe4,0xf5,0x10,0x75,0x11,0x04,0xf5,0x12,0xf5,0x14,0xf5,0x15,0x90,0x02,0x09, +0xe0,0xff,0x12,0x29,0xd9,0xfe,0xef,0x2e,0xf5,0x13,0x30,0xe0,0x08,0x75,0x0e,0x00, +0x75,0x0f,0x80,0x80,0x05,0xe4,0xf5,0x0e,0xf5,0x0f,0xe5,0x13,0xc3,0x13,0x90,0xfd, +0x10,0xf0,0x74,0x20,0x25,0x10,0xf5,0x10,0xad,0x0f,0xe5,0x10,0x2d,0xff,0x24,0x01, +0xf5,0x82,0xe4,0x34,0xfc,0xf5,0x83,0xe0,0x90,0x91,0x47,0xf0,0x74,0x02,0x2f,0xf5, +0x82,0xe4,0x34,0xfc,0xf5,0x83,0xe0,0xfe,0xe5,0x10,0x2d,0x24,0x03,0xf5,0x82,0xe4, +0x34,0xfc,0xf5,0x83,0xe0,0x24,0x00,0xff,0xe4,0x3e,0x90,0x91,0x48,0xf0,0xa3,0xef, +0xf0,0x7f,0x04,0xe5,0x10,0x25,0x0f,0x2f,0x24,0x00,0xf5,0x82,0xe4,0x34,0xfc,0xf5, +0x83,0xe0,0xfe,0x74,0x46,0x2f,0xf5,0x82,0xe4,0x34,0x91,0xf5,0x83,0xee,0xf0,0x0f, +0xbf,0x08,0xe0,0x12,0x66,0x56,0xef,0x70,0x3f,0x90,0x01,0xc3,0xe0,0x60,0x25,0xc3, +0xe5,0x15,0x94,0xe8,0xe5,0x14,0x94,0x03,0x40,0x09,0x90,0x01,0xc6,0xe0,0x44,0x10, +0xf0,0x80,0x63,0x05,0x15,0xe5,0x15,0x70,0x02,0x05,0x14,0x7f,0x0a,0x7e,0x00,0x12, +0x37,0x54,0x80,0xd5,0x90,0x01,0xc6,0xe0,0x90,0x01,0xc3,0x30,0xe2,0x05,0x74,0xfe, +0xf0,0x80,0x43,0x74,0xff,0xf0,0x80,0x3e,0xe5,0x10,0xb4,0x78,0x23,0xe4,0xf5,0x10, +0x05,0x13,0xe5,0x0f,0x64,0x80,0x45,0x0e,0x70,0x06,0xf5,0x0e,0xf5,0x0f,0x80,0x06, +0x75,0x0e,0x00,0x75,0x0f,0x80,0xe5,0x13,0xc3,0x13,0x90,0xfd,0x10,0xf0,0x80,0x06, +0x74,0x08,0x25,0x10,0xf5,0x10,0xe5,0x12,0x15,0x12,0x70,0x02,0x15,0x11,0xe5,0x12, +0x45,0x11,0x60,0x02,0x81,0xb8,0xd0,0xd0,0x92,0xaf,0x22,0x90,0x91,0x1c,0x12,0x43, +0x41,0x12,0x29,0xd9,0xff,0x54,0x01,0xfe,0x90,0x91,0x5e,0xe0,0x54,0xfe,0x4e,0xf0, +0xef,0x54,0x04,0xff,0xe0,0x54,0xfb,0x4f,0xf0,0x12,0x29,0xd9,0xff,0x54,0x02,0xfe, +0x90,0x91,0x5e,0xe0,0x54,0xfd,0x4e,0xf0,0xef,0x54,0x08,0xff,0xe0,0x54,0xf7,0x4f, +0xf0,0x12,0x29,0xd9,0xff,0x54,0x10,0xfe,0x90,0x91,0x5e,0xe0,0x54,0xef,0x4e,0xf0, +0xef,0x54,0x20,0xff,0xe0,0x54,0xdf,0x4f,0xf0,0x12,0x29,0xd9,0xff,0x54,0x40,0xfe, +0x90,0x91,0x5e,0xe0,0x54,0xbf,0x4e,0xf0,0xef,0x54,0x80,0xff,0xe0,0x54,0x7f,0x4f, +0xf0,0x90,0x00,0x02,0x12,0x42,0x20,0x90,0x91,0x60,0xf0,0x90,0x00,0x01,0x12,0x42, +0x20,0x90,0x91,0x5f,0xf0,0x90,0x00,0x03,0x12,0x42,0x20,0xff,0x54,0x01,0xfe,0x90, +0x91,0x61,0xe0,0x54,0xfe,0x4e,0xf0,0xef,0x54,0x02,0xff,0xe0,0x54,0xfd,0x4f,0xf0, +0x90,0x00,0x03,0x12,0x42,0x20,0x54,0x04,0xff,0x90,0x91,0x61,0xe0,0x54,0xfb,0x4f, +0xf0,0x90,0x91,0x5e,0xe0,0x54,0x01,0x90,0x01,0xb8,0xf0,0x90,0x91,0x5e,0xe0,0xff, +0xc4,0x13,0x54,0x01,0x90,0x01,0xb9,0xf0,0x90,0x91,0x61,0xe0,0x54,0x01,0x90,0x01, +0xba,0xf0,0xa3,0x74,0xff,0xf0,0x12,0x29,0xd9,0x20,0xe0,0x02,0x21,0xf1,0xe4,0xfd, +0x7f,0x81,0x12,0x4b,0xee,0x90,0x91,0x1c,0x12,0x43,0x21,0x12,0x29,0xd9,0xff,0xc3, +0x13,0x30,0xe0,0x07,0x90,0x06,0x90,0xe0,0x44,0x02,0xf0,0xef,0x13,0x13,0x54,0x3f, +0x30,0xe0,0x07,0x90,0x06,0x90,0xe0,0x44,0x04,0xf0,0x12,0x29,0xd9,0x13,0x13,0x13, +0x54,0x1f,0x30,0xe0,0x07,0x90,0x06,0x90,0xe0,0x44,0x08,0xf0,0x90,0x91,0x61,0xe0, +0x30,0xe0,0x1c,0x90,0x91,0x5e,0xe0,0xc4,0x13,0x54,0x07,0x30,0xe0,0x07,0xa3,0xe0, +0xff,0xe4,0xfd,0x80,0x07,0x90,0x91,0x5f,0xe0,0xff,0x7d,0x01,0x12,0x4a,0xf6,0x22, +0x75,0x30,0x1f,0x75,0x31,0x01,0xe4,0xf5,0x32,0x90,0x01,0x38,0xe5,0x30,0xf0,0xa3, +0xe5,0x31,0xf0,0xa3,0xe5,0x32,0xf0,0x22,0x90,0x00,0x02,0xe0,0x54,0xe0,0x7f,0x01, +0x60,0x02,0x7f,0x00,0x22,0x12,0x29,0xd9,0xf5,0x6d,0x22,0x90,0x01,0x64,0x74,0xa0, +0xf0,0x22,0x90,0x91,0x51,0xe0,0x90,0x90,0xe8,0xf0,0x22,0x90,0x00,0xf3,0xe0,0x7f, +0x00,0x30,0xe3,0x02,0x7f,0x01,0x22,0x90,0x06,0x34,0x74,0xff,0xf0,0xe4,0xa3,0xf0, +0xa3,0xf0,0xa3,0xf0,0x22,0xe4,0x90,0x91,0x4e,0xf0,0x90,0x00,0x80,0xe0,0x44,0x80, +0xfd,0x7f,0x80,0x02,0x4b,0xee,0x90,0x00,0xf3,0xe0,0x30,0xe2,0x0d,0x90,0x05,0x41, +0x74,0x10,0xf0,0x90,0x05,0x5a,0xf0,0xa3,0xe4,0xf0,0x22,0x12,0x29,0xd9,0x60,0x02, +0x80,0x01,0xe4,0x90,0x91,0x31,0xf0,0x90,0x91,0x31,0xe0,0x90,0x01,0xe7,0xf0,0x22, +0x90,0x91,0x51,0xe0,0xb4,0x01,0x0c,0x90,0x00,0xf2,0xe0,0x30,0xe7,0x05,0x7e,0xfd, +0x7f,0x33,0x22,0x7e,0xfd,0x7f,0x2f,0x22,0x12,0x29,0xd9,0xff,0x54,0x01,0xfe,0x90, +0x91,0x53,0xe0,0x54,0xfe,0x4e,0xf0,0xef,0xc3,0x13,0x30,0xe0,0x0a,0x90,0x00,0x01, +0x12,0x42,0x20,0x90,0x91,0x54,0xf0,0x22,0x90,0x00,0x02,0x12,0x42,0x20,0x90,0x90, +0xf7,0xf0,0xe0,0x60,0x04,0xe0,0xf4,0x70,0x21,0xa2,0xaf,0xe4,0x33,0xf5,0x0e,0xc2, +0xaf,0x90,0x00,0x47,0xe0,0x54,0xfb,0xfd,0x7f,0x47,0x12,0x4b,0xee,0x7d,0x40,0x7f, +0x01,0x12,0x36,0xaf,0xe5,0x0e,0x24,0xff,0x92,0xaf,0x22,0xc0,0xe0,0xc0,0xf0,0xc0, +0x83,0xc0,0x82,0xc0,0xd0,0x75,0xd0,0x00,0xc0,0x00,0xc0,0x01,0xc0,0x02,0xc0,0x03, +0xc0,0x04,0xc0,0x05,0xc0,0x06,0xc0,0x07,0x90,0x01,0xc4,0x74,0xcb,0xf0,0x74,0x57, +0xa3,0xf0,0x90,0x01,0x34,0xe0,0x55,0x28,0xf5,0x2c,0x90,0x01,0x36,0xe0,0x55,0x2a, +0xf5,0x2e,0xa3,0xe0,0x55,0x2b,0xf5,0x2f,0xe5,0x2c,0x30,0xe0,0x5a,0x90,0x01,0x34, +0x74,0x01,0xf0,0x85,0xd9,0x54,0xe5,0x70,0x14,0x24,0xfd,0x50,0x02,0x80,0x48,0x90, +0x91,0x3b,0xe0,0x60,0x3a,0x90,0x01,0x5b,0xe4,0xf0,0x90,0x01,0x3c,0x74,0x04,0xf0, +0x51,0x30,0xef,0x64,0x01,0x70,0x30,0x90,0x91,0x66,0xf0,0x90,0x91,0x2d,0xe0,0x90, +0x91,0x67,0xf0,0xe4,0xfb,0xfd,0x7f,0x58,0x7e,0x01,0x12,0x44,0x59,0x90,0x01,0x5b, +0x74,0x05,0xf0,0x90,0x06,0x92,0x74,0x01,0xf0,0x90,0x91,0x37,0xf0,0x80,0x08,0x51, +0x30,0xbf,0x01,0x03,0x12,0x44,0xc2,0xe5,0x2c,0x30,0xe1,0x20,0x90,0x01,0x34,0x74, +0x02,0xf0,0x85,0xd1,0x58,0x85,0xd2,0x59,0x85,0xd3,0x5a,0x85,0xd4,0x5b,0x85,0xd5, +0x5c,0x85,0xd6,0x5d,0x85,0xd7,0x5e,0x85,0xd9,0x5f,0x71,0x5c,0xe5,0x2c,0x30,0xe3, +0x10,0x90,0x01,0x34,0x74,0x08,0xf0,0x90,0x91,0x56,0xe0,0x30,0xe0,0x03,0x43,0x57, +0x04,0xe5,0x2c,0x30,0xe4,0x09,0x90,0x01,0x34,0x74,0x10,0xf0,0x43,0x57,0x10,0xe5, +0x2c,0x30,0xe5,0x26,0x90,0x01,0xcf,0xe0,0x30,0xe5,0x1f,0xe0,0x54,0xdf,0xf0,0x90, +0x01,0x34,0x74,0x20,0xf0,0x75,0xa8,0x00,0x75,0xe8,0x00,0x12,0x4e,0xe4,0x90,0x00, +0x03,0xe0,0x54,0xfb,0xf0,0x12,0x4a,0xe6,0x80,0xfe,0xe5,0x2c,0x30,0xe6,0x06,0x90, +0x01,0x34,0x74,0x40,0xf0,0xe5,0x2e,0x30,0xe0,0x13,0x90,0x91,0x50,0x74,0x01,0xf0, +0x90,0x01,0x36,0xf0,0x91,0x23,0x51,0x87,0x90,0x91,0x50,0xe4,0xf0,0xe5,0x2e,0x30, +0xe1,0x3c,0x90,0x01,0x36,0x74,0x02,0xf0,0x43,0x57,0x40,0x90,0x01,0x02,0xe0,0x54, +0x03,0x64,0x01,0x70,0x29,0x90,0x01,0x37,0xe0,0x30,0xe0,0x0a,0x74,0x01,0xf0,0x90, +0x91,0x40,0xe4,0xf0,0x80,0x18,0x90,0x91,0x40,0xe0,0x04,0xf0,0xe0,0xc3,0x94,0x0a, +0x40,0x0c,0xe4,0xf0,0x90,0x04,0x19,0xe0,0x30,0xe0,0x03,0x12,0x4f,0xf5,0xe5,0x2e, +0x30,0xe2,0x19,0x90,0x01,0x36,0x74,0x04,0xf0,0x90,0x91,0x3a,0xe4,0xf0,0x90,0x05, +0x58,0x74,0x03,0xf0,0x51,0xd8,0x90,0x91,0x3f,0xe0,0x04,0xf0,0xe5,0x2e,0x30,0xe3, +0x28,0x90,0x01,0x36,0x74,0x08,0xf0,0xe5,0x6d,0x64,0x01,0x70,0x1c,0xe5,0x70,0x60, +0x18,0x90,0x01,0x57,0xe4,0xf0,0x90,0x01,0x3c,0x74,0x02,0xf0,0x90,0x91,0x66,0xe4, +0x12,0x44,0x49,0x90,0x01,0x57,0x74,0x05,0xf0,0xe5,0x2e,0x30,0xe4,0x2b,0x90,0x01, +0x36,0x74,0x10,0xf0,0xe5,0x6d,0xb4,0x01,0x20,0xe5,0x70,0x60,0x1c,0x90,0x01,0x57, +0xe4,0xf0,0x90,0x01,0x3c,0x74,0x02,0xf0,0x90,0x91,0x3c,0xe4,0xf0,0x53,0x71,0xfd, +0xe5,0x71,0x54,0x07,0x70,0x03,0x12,0x44,0xc2,0xe5,0x2e,0x30,0xe5,0x1f,0x90,0x01, +0x36,0x74,0x20,0xf0,0xe5,0x6d,0xb4,0x01,0x14,0xe5,0x70,0x60,0x10,0x90,0x91,0x3b, +0xe0,0x64,0x02,0x60,0x05,0x12,0x44,0xc8,0x80,0x03,0x12,0x44,0x77,0xe5,0x2e,0x30, +0xe6,0x1b,0x90,0x01,0x36,0x74,0x40,0xf0,0xe5,0x6d,0xb4,0x01,0x10,0xe5,0x70,0x60, +0x0c,0x53,0x71,0xfe,0xe5,0x71,0x54,0x07,0x70,0x03,0x12,0x44,0xc2,0xe5,0x2f,0x30, +0xe1,0x08,0x90,0x01,0x37,0x74,0x02,0xf0,0x71,0x7e,0x74,0xcb,0x04,0x90,0x01,0xc4, +0xf0,0x74,0x57,0xa3,0xf0,0xd0,0x07,0xd0,0x06,0xd0,0x05,0xd0,0x04,0xd0,0x03,0xd0, +0x02,0xd0,0x01,0xd0,0x00,0xd0,0xd0,0xd0,0x82,0xd0,0x83,0xd0,0xf0,0xd0,0xe0,0x32, +0x90,0x04,0x1b,0xe0,0x54,0x7f,0x64,0x7f,0x7f,0x01,0x60,0x02,0x7f,0x00,0x22,0x51, +0x30,0xef,0x64,0x01,0x60,0x08,0x90,0x01,0xb9,0x74,0x01,0xf0,0x80,0x30,0x90,0x91, +0x37,0xe0,0x60,0x08,0x90,0x01,0xb9,0x74,0x02,0xf0,0x80,0x22,0x90,0x91,0x36,0xe0, +0x60,0x08,0x90,0x01,0xb9,0x74,0x04,0xf0,0x80,0x14,0xe5,0x6f,0x54,0x0f,0xd3,0x94, +0x04,0x40,0x08,0x90,0x01,0xb9,0x74,0x08,0xf0,0x80,0x03,0x7f,0x01,0x22,0x90,0x01, +0xb8,0x74,0x08,0xf0,0x7f,0x00,0x22,0x90,0x91,0x53,0xe0,0x30,0xe0,0x49,0xe5,0x6d, +0x64,0x01,0x70,0x43,0x90,0x91,0x52,0xe0,0x04,0xf0,0xe5,0x70,0x64,0x03,0x60,0x05, +0xe5,0x70,0xb4,0x06,0x0d,0x90,0x91,0x52,0xe0,0xff,0x74,0x01,0xd3,0x9f,0x50,0x14, +0x80,0x07,0x90,0x91,0x52,0xe0,0xb4,0x0a,0x0b,0x90,0x91,0x55,0xe0,0x04,0xf0,0xe4, +0x90,0x91,0x52,0xf0,0x90,0x91,0x55,0xe0,0xff,0x90,0x91,0x54,0xe0,0xb5,0x07,0x07, +0x71,0x4e,0xe4,0x90,0x91,0x55,0xf0,0x22,0xe5,0x6d,0x64,0x01,0x70,0x63,0xe5,0x70, +0x60,0x5f,0xe5,0x70,0x64,0x02,0x60,0x06,0xe5,0x70,0x64,0x05,0x70,0x27,0x90,0x06, +0xab,0xe0,0x90,0x91,0x27,0xf0,0x90,0x06,0xaa,0xe0,0x90,0x91,0x39,0xf0,0x90,0x91, +0x27,0xe0,0x70,0x07,0x90,0x91,0x39,0xe0,0xff,0x80,0x05,0x90,0x91,0x27,0xe0,0xff, +0x90,0x91,0x27,0xef,0xf0,0x90,0x91,0x29,0xe0,0x60,0x03,0xe0,0x14,0xf0,0xe4,0x90, +0x91,0x28,0xf0,0x90,0x01,0x57,0xf0,0x90,0x01,0x3c,0x74,0x02,0xf0,0x53,0x71,0xfd, +0x53,0x71,0xef,0xe5,0x70,0x14,0x24,0xfd,0x50,0x02,0x80,0x03,0x12,0x45,0xc7,0x71, +0x42,0x22,0xd3,0x10,0xaf,0x01,0xc3,0xc0,0xd0,0xd0,0xd0,0x92,0xaf,0x22,0xe5,0x6e, +0x30,0xe3,0x04,0xe4,0xff,0x80,0x02,0x7f,0x01,0x02,0x47,0xc9,0x90,0x91,0x08,0xe0, +0x54,0xf0,0x44,0x03,0xf0,0x54,0x0f,0x44,0x80,0xf0,0x7b,0x00,0x7a,0x00,0x79,0x58, +0x90,0x91,0x71,0x12,0x43,0x41,0x0b,0x7a,0x91,0x79,0x08,0x02,0x46,0xb7,0x90,0x91, +0x80,0x12,0x2a,0x8b,0x00,0x00,0x00,0x00,0xe5,0x70,0x14,0x24,0xfd,0x50,0x02,0x80, +0x21,0x90,0x91,0x3b,0xe0,0x60,0x06,0x7d,0x01,0x7f,0x0c,0x80,0x0d,0xe5,0x6e,0x54, +0x0f,0xc3,0x94,0x04,0x50,0x07,0x7d,0x01,0x7f,0x04,0x12,0x47,0x27,0xe4,0xff,0x12, +0x48,0xb3,0x22,0x51,0x30,0xef,0x64,0x01,0x60,0x08,0x90,0x01,0xb9,0x74,0x01,0xf0, +0x80,0x58,0xe5,0x71,0x54,0x03,0x60,0x08,0x90,0x01,0xb9,0x74,0x02,0xf0,0x80,0x4a, +0xe5,0x6f,0x54,0x0f,0xd3,0x94,0x02,0x40,0x08,0x90,0x01,0xb9,0x74,0x04,0xf0,0x80, +0x39,0xe5,0x71,0x30,0xe2,0x08,0x90,0x01,0xb9,0x74,0x08,0xf0,0x80,0x2c,0xe5,0x71, +0x30,0xe4,0x08,0x90,0x01,0xb9,0x74,0x10,0xf0,0x80,0x1f,0x90,0x91,0x29,0xe0,0x60, +0x08,0x90,0x01,0xb9,0x74,0x20,0xf0,0x80,0x11,0x90,0x91,0x31,0xe0,0x60,0x08,0x90, +0x01,0xb9,0x74,0x80,0xf0,0x80,0x03,0x7f,0x01,0x22,0x90,0x01,0xb8,0x74,0x04,0xf0, +0x7f,0x00,0x22,0xe4,0xfb,0x90,0x91,0x78,0x12,0x2a,0x8b,0x00,0x00,0x00,0x00,0xe5, +0x70,0x70,0x02,0x81,0xb5,0xe5,0x6d,0x64,0x01,0x70,0x7a,0xe5,0x70,0x14,0x60,0x2b, +0x24,0xfd,0x60,0x27,0x24,0x02,0x24,0xfb,0x50,0x02,0x80,0x21,0x90,0x91,0x27,0xe0, +0x14,0xf0,0xe0,0x60,0x04,0xa3,0xe0,0x60,0x14,0x90,0x91,0x27,0xe0,0x70,0x08,0x90, +0x91,0x39,0xe0,0x90,0x91,0x27,0xf0,0x7b,0x01,0x80,0x02,0x7b,0x01,0xeb,0x60,0x45, +0x43,0x71,0x10,0xe4,0x90,0x91,0x66,0xf0,0x90,0x91,0x3a,0xe0,0x75,0xf0,0x05,0xa4, +0xff,0x90,0x91,0x34,0xe0,0x2f,0x12,0x44,0x4e,0x90,0x01,0x57,0x74,0x05,0xf0,0xe5, +0x6e,0x54,0x0f,0xc3,0x94,0x04,0x50,0x07,0x7d,0x01,0x7f,0x04,0x12,0x47,0x27,0x90, +0x91,0x2e,0xe0,0x60,0x10,0x90,0x91,0x2c,0xe0,0x90,0x07,0x78,0x60,0x04,0x74,0x0d, +0xf0,0x22,0x74,0x09,0xf0,0x22,0xc0,0xe0,0xc0,0xf0,0xc0,0x83,0xc0,0x82,0xc0,0xd0, +0x75,0xd0,0x00,0xc0,0x00,0xc0,0x01,0xc0,0x02,0xc0,0x03,0xc0,0x04,0xc0,0x05,0xc0, +0x06,0xc0,0x07,0x90,0x01,0xc4,0x74,0xb6,0xf0,0x74,0x5c,0xa3,0xf0,0x53,0x91,0xef, +0x90,0x00,0x51,0xe0,0xff,0x90,0x00,0x55,0xe0,0x5f,0xf5,0x3d,0x90,0x00,0x52,0xe0, +0xff,0x90,0x00,0x56,0xe0,0x5f,0xf5,0x3e,0xe5,0x3d,0x30,0xe4,0x06,0x90,0x00,0x55, +0x74,0x10,0xf0,0xe5,0x3d,0x30,0xe5,0x06,0x90,0x00,0x55,0x74,0x20,0xf0,0xe5,0x3d, +0x30,0xe6,0x1b,0x90,0x00,0x55,0x74,0x40,0xf0,0x90,0x90,0xf6,0xe0,0x54,0x03,0xff, +0xbf,0x03,0x0b,0x90,0x90,0xf3,0xe0,0x60,0x05,0x7f,0x01,0x12,0x4c,0x03,0xe5,0x3d, +0x30,0xe7,0x15,0x90,0x00,0x55,0x74,0x80,0xf0,0x90,0x90,0xf6,0xe0,0x54,0x03,0xff, +0xbf,0x03,0x05,0x7f,0x02,0x12,0x4c,0x03,0xe5,0x3e,0x30,0xe0,0x06,0x90,0x00,0x56, +0x74,0x01,0xf0,0xe5,0x3e,0x30,0xe1,0x06,0x90,0x00,0x56,0x74,0x02,0xf0,0xe5,0x3e, +0x30,0xe2,0x06,0x90,0x00,0x56,0x74,0x04,0xf0,0xe5,0x3e,0x30,0xe3,0x06,0x90,0x00, +0x56,0x74,0x08,0xf0,0x90,0x01,0xc4,0x74,0xb6,0xf0,0x74,0x5c,0xa3,0xf0,0xd0,0x07, +0xd0,0x06,0xd0,0x05,0xd0,0x04,0xd0,0x03,0xd0,0x02,0xd0,0x01,0xd0,0x00,0xd0,0xd0, +0xd0,0x82,0xd0,0x83,0xd0,0xf0,0xd0,0xe0,0x32,0xc0,0xe0,0xc0,0xf0,0xc0,0x83,0xc0, +0x82,0xc0,0xd0,0x75,0xd0,0x00,0xc0,0x00,0xc0,0x01,0xc0,0x02,0xc0,0x03,0xc0,0x04, +0xc0,0x05,0xc0,0x06,0xc0,0x07,0x75,0x0d,0x00,0x90,0x01,0xc4,0x74,0x99,0xf0,0x74, +0x5d,0xa3,0xf0,0x53,0x91,0xdf,0x90,0x01,0x3c,0xe0,0x55,0x30,0xf5,0x34,0xa3,0xe0, +0x55,0x31,0xf5,0x35,0xa3,0xe0,0x55,0x32,0xf5,0x36,0xa3,0xe0,0x55,0x33,0xf5,0x37, +0xe5,0x34,0x30,0xe0,0x06,0x90,0x01,0x3c,0x74,0x01,0xf0,0xe5,0x34,0x30,0xe1,0x08, +0x90,0x01,0x3c,0x74,0x02,0xf0,0xf1,0x57,0xe5,0x34,0x30,0xe2,0x3a,0x90,0x01,0x3c, +0x74,0x04,0xf0,0x90,0x06,0x92,0xe0,0x30,0xe0,0x25,0x90,0x91,0x66,0xe4,0xf0,0x90, +0x91,0x2d,0xe0,0x90,0x91,0x67,0xf0,0xe4,0xfb,0xfd,0x7f,0x58,0x7e,0x01,0x12,0x44, +0x59,0x90,0x01,0x5b,0x74,0x05,0xf0,0x90,0x06,0x92,0x74,0x01,0xf0,0x80,0x08,0x90, +0x91,0x37,0xe4,0xf0,0x12,0x44,0xc2,0xe5,0x34,0x30,0xe3,0x3a,0x90,0x01,0x3c,0x74, +0x08,0xf0,0x90,0x06,0x92,0xe0,0x30,0xe1,0x25,0x90,0x91,0x66,0xe4,0xf0,0x90,0x91, +0x2d,0xe0,0x90,0x91,0x67,0xf0,0xe4,0xfb,0xfd,0x7f,0x5c,0x7e,0x01,0x12,0x44,0x59, +0x90,0x01,0x5f,0x74,0x05,0xf0,0x90,0x06,0x92,0x74,0x02,0xf0,0x80,0x08,0x90,0x91, +0x36,0xe4,0xf0,0x12,0x44,0xc2,0xe5,0x34,0x30,0xe4,0x09,0x90,0x01,0x3c,0x74,0x10, +0xf0,0x12,0x53,0x86,0xe5,0x34,0x30,0xe5,0x09,0x90,0x01,0x3c,0x74,0x20,0xf0,0x12, +0x6e,0xb9,0xe5,0x35,0x30,0xe0,0x5a,0x90,0x01,0x3d,0x74,0x01,0xf0,0x90,0x01,0x2f, +0xe0,0x44,0x7f,0xf0,0x90,0x00,0x83,0xe0,0x54,0x0f,0xf5,0x0d,0xb4,0x01,0x02,0x80, +0x1c,0xe5,0x0d,0xb4,0x02,0x05,0x90,0x00,0x83,0x80,0x12,0xe5,0x0d,0xb4,0x04,0x05, +0x90,0x00,0x83,0x80,0x08,0xe5,0x0d,0xb4,0x0c,0x08,0x90,0x00,0x83,0xe0,0xf5,0x6f, +0x80,0x06,0x90,0x01,0xbe,0xe0,0x04,0xf0,0x90,0x01,0xbb,0xe5,0x6f,0xf0,0xe5,0x6f, +0x30,0xe0,0x03,0xa3,0x80,0x03,0x90,0x01,0xbd,0xe0,0x04,0xf0,0xf1,0x38,0x12,0x44, +0xc2,0xe5,0x35,0x30,0xe2,0x06,0x90,0x01,0x3d,0x74,0x04,0xf0,0xe5,0x36,0x30,0xe0, +0x06,0x90,0x01,0x3e,0x74,0x01,0xf0,0xe5,0x36,0x30,0xe1,0x06,0x90,0x01,0x3e,0x74, +0x02,0xf0,0x74,0x99,0x04,0x90,0x01,0xc4,0xf0,0x74,0x5d,0xa3,0xf0,0xd0,0x07,0xd0, +0x06,0xd0,0x05,0xd0,0x04,0xd0,0x03,0xd0,0x02,0xd0,0x01,0xd0,0x00,0xd0,0xd0,0xd0, +0x82,0xd0,0x83,0xd0,0xf0,0xd0,0xe0,0x32,0xe5,0x6f,0x30,0xe6,0x19,0xe5,0x6f,0x54, +0x0f,0xff,0x90,0x91,0x24,0xe0,0xfe,0x4f,0x90,0x01,0x2f,0xf0,0xee,0x64,0x80,0x90, +0x91,0x24,0xf0,0x53,0x6f,0xbf,0x22,0xe4,0x90,0x91,0x0d,0xf0,0xe5,0x70,0x70,0x02, +0xe1,0xe1,0x90,0x91,0x3c,0xe0,0x60,0x0d,0xe4,0xf0,0x53,0x71,0xfd,0xe5,0x71,0x54, +0x07,0x70,0x6e,0x80,0x69,0x90,0x91,0x28,0xe0,0x04,0xf0,0x53,0x71,0xef,0x90,0x91, +0x3a,0xe0,0x04,0xf0,0x90,0x91,0x0d,0xe0,0xf9,0xff,0x7e,0x00,0x24,0x01,0xfd,0xee, +0x33,0xfc,0x90,0x91,0x3a,0xe0,0xb5,0x05,0x06,0xe4,0xb5,0x04,0x02,0x80,0x12,0xef, +0x24,0x02,0xff,0xe4,0x3e,0xfe,0x90,0x91,0x3a,0xe0,0xb5,0x07,0x0a,0xe4,0xb5,0x06, +0x06,0x90,0x05,0x58,0xe0,0x04,0xf0,0xe9,0xff,0x90,0x91,0x2f,0xe0,0x2f,0xff,0xe4, +0x33,0xfe,0x90,0x91,0x28,0xe0,0xd3,0x9f,0xee,0x64,0x80,0xf8,0x74,0x80,0x98,0x40, +0x0d,0xe5,0x6d,0xb4,0x01,0x0b,0xa3,0xe0,0x70,0x07,0xe0,0x04,0xf0,0x22,0x12,0x44, +0xc2,0x22,0x8f,0x20,0x8c,0x21,0x8d,0x22,0x22,0x8f,0x23,0x8c,0x24,0x8d,0x25,0x22, +0xe4,0x90,0x91,0x11,0xf0,0xa3,0xf0,0x90,0x02,0x86,0xe0,0x20,0xe1,0x2c,0xc3,0x90, +0x91,0x12,0xe0,0x94,0x20,0x90,0x91,0x11,0xe0,0x94,0x03,0x40,0x0a,0x90,0x01,0xc6, +0xe0,0x44,0x20,0xf0,0x7f,0x00,0x22,0x90,0x91,0x11,0xe4,0x75,0xf0,0x01,0x12,0x42, +0x81,0x7f,0x01,0x7e,0x00,0x12,0x37,0x54,0x80,0xcd,0x7f,0x01,0x22,0x90,0x01,0xcc, +0xe0,0x54,0x0f,0x90,0x91,0x11,0xf0,0x90,0x91,0x11,0xe0,0xfd,0x70,0x02,0x21,0x6f, +0x90,0x91,0x9c,0xe0,0xff,0x74,0x01,0x7e,0x00,0xa8,0x07,0x08,0x80,0x05,0xc3,0x33, +0xce,0x33,0xce,0xd8,0xf9,0xff,0xef,0x5d,0x70,0x02,0x21,0x68,0x90,0x91,0x9c,0xe0, +0x75,0xf0,0x04,0x90,0x01,0xd0,0x12,0x43,0x15,0xe0,0x90,0x91,0x12,0xf0,0x75,0x63, +0x01,0x75,0x64,0x91,0x75,0x65,0x12,0x75,0x66,0x01,0x7b,0x01,0x7a,0x91,0x79,0x13, +0x12,0x46,0x6d,0x90,0x91,0x13,0xe0,0xff,0xc4,0x13,0x13,0x13,0x54,0x01,0x90,0x91, +0x9c,0x30,0xe0,0x59,0xe0,0x75,0xf0,0x02,0x90,0x00,0x88,0x12,0x43,0x15,0xe0,0x90, +0x91,0x14,0xf0,0x90,0x91,0x9c,0xe0,0x75,0xf0,0x02,0x90,0x00,0x89,0x12,0x43,0x15, +0xe0,0x90,0x91,0x15,0xf0,0x90,0x91,0x9c,0xe0,0x75,0xf0,0x04,0x90,0x01,0xd1,0x12, +0x43,0x15,0xe0,0x90,0x91,0x16,0xf0,0x90,0x91,0x9c,0xe0,0x75,0xf0,0x04,0x90,0x01, +0xd2,0x12,0x43,0x15,0xe0,0x90,0x91,0x17,0xf0,0x90,0x91,0x9c,0xe0,0x75,0xf0,0x04, +0x90,0x01,0xd3,0x12,0x43,0x15,0xe0,0x90,0x91,0x18,0xf0,0x80,0x33,0xe0,0x75,0xf0, +0x04,0x90,0x01,0xd1,0x12,0x43,0x15,0xe0,0x90,0x91,0x14,0xf0,0x90,0x91,0x9c,0xe0, +0x75,0xf0,0x04,0x90,0x01,0xd2,0x12,0x43,0x15,0xe0,0x90,0x91,0x15,0xf0,0x90,0x91, +0x9c,0xe0,0x75,0xf0,0x04,0x90,0x01,0xd3,0x12,0x43,0x15,0xe0,0x90,0x91,0x16,0xf0, +0xef,0x54,0x7f,0xff,0x7b,0x01,0x7a,0x91,0x79,0x14,0x12,0x51,0xf8,0x90,0x91,0x11, +0xe0,0xff,0x90,0x91,0x9c,0xe0,0xfe,0x74,0x01,0xa8,0x06,0x08,0x80,0x02,0xc3,0x33, +0xd8,0xfc,0xf4,0x5f,0x90,0x91,0x11,0xf0,0x90,0x91,0x9c,0xe0,0xff,0x74,0x01,0xa8, +0x07,0x08,0x80,0x02,0xc3,0x33,0xd8,0xfc,0x90,0x01,0xcc,0xf0,0x90,0x91,0x9c,0xe0, +0x04,0xf0,0xe0,0x54,0x03,0xf0,0x01,0x37,0x90,0x01,0xc6,0xe0,0x44,0x02,0xf0,0x22, +0xad,0x07,0x74,0x11,0x2d,0xf5,0x82,0xe4,0x34,0xfc,0xf5,0x83,0xe0,0x44,0x01,0xf0, +0x90,0x04,0x80,0xe0,0x54,0x0f,0xfc,0x74,0x14,0x2d,0xf5,0x82,0xe4,0x34,0xfc,0xf5, +0x83,0xe0,0x54,0xc0,0x4c,0xfd,0x74,0x14,0x2f,0xf5,0x82,0xe4,0x34,0xfc,0xf5,0x83, +0xed,0xf0,0x22,0xef,0x60,0x0f,0x74,0x21,0x2d,0xf5,0x82,0xe4,0x34,0xfc,0xf5,0x83, +0xe0,0x44,0x10,0xf0,0x22,0x74,0x21,0x2d,0xf5,0x82,0xe4,0x34,0xfc,0xf5,0x83,0xe0, +0x54,0xef,0xf0,0x22,0xe4,0xf5,0x6d,0xf5,0x71,0xf5,0x70,0x75,0x6f,0x0c,0x75,0x6e, +0x0c,0x90,0x91,0x3b,0xf0,0x90,0x91,0x37,0xf0,0x90,0x91,0x36,0xf0,0x90,0x91,0x39, +0x04,0xf0,0x90,0x91,0x27,0xf0,0xe4,0x90,0x91,0x3c,0xf0,0x90,0x91,0x29,0xf0,0x90, +0x91,0x34,0x74,0x07,0xf0,0xe4,0x90,0x91,0x28,0xf0,0x90,0x91,0x32,0xf0,0xa3,0x74, +0x03,0xf0,0x90,0x91,0x2f,0x74,0x0a,0xf0,0xa3,0x74,0x05,0xf0,0x90,0x91,0x2d,0x74, +0x14,0xf0,0x90,0x91,0x35,0x74,0x05,0xf0,0xe4,0x90,0x91,0x2b,0xf0,0x90,0x91,0x25, +0xf0,0x90,0x91,0x50,0xf0,0x90,0x91,0x31,0xf0,0x90,0x91,0x3a,0xf0,0x90,0x91,0x26, +0xf0,0x90,0x91,0x38,0xf0,0x90,0x91,0x2e,0xf0,0x90,0x91,0x2c,0xf0,0x22,0xe4,0x90, +0x91,0x3c,0xf0,0x90,0x91,0x28,0xf0,0xf5,0x71,0x22,0x90,0x06,0x04,0xe0,0x54,0xbf, +0xf0,0xef,0x60,0x0a,0xe5,0x6d,0xb4,0x01,0x05,0xe4,0xff,0x12,0x47,0xc9,0x53,0x6e, +0xf0,0x43,0x6e,0x0c,0x22,0x90,0x91,0x9d,0xef,0xf0,0x51,0x7e,0x90,0x91,0x9d,0xe0, +0x60,0x05,0x90,0x05,0x22,0xe4,0xf0,0x53,0x6e,0xf0,0x43,0x6e,0x04,0x22,0x90,0x00, +0x11,0xe0,0x44,0x09,0xf0,0x12,0x4a,0xe6,0x90,0x90,0xd8,0x12,0x43,0x09,0x90,0x80, +0x85,0x12,0x2a,0x7f,0x7f,0x78,0x7e,0x08,0x12,0x2f,0xd9,0x90,0x90,0xdc,0x12,0x43, +0x09,0x90,0x80,0x85,0x12,0x2a,0x7f,0x7f,0x04,0x7e,0x0c,0x12,0x2f,0xd9,0x90,0x90, +0xe0,0x12,0x43,0x09,0x90,0x80,0x85,0x12,0x2a,0x7f,0x7f,0x00,0x7e,0x08,0x12,0x2f, +0xd9,0x90,0x90,0xe4,0x12,0x43,0x09,0x90,0x80,0x85,0x12,0x2a,0x7f,0x7f,0x70,0x7e, +0x0e,0x12,0x2f,0xd9,0x90,0x80,0x59,0x12,0x2a,0x8b,0x00,0x03,0x2d,0x95,0xe4,0xfd, +0xff,0x12,0x34,0x81,0x90,0x91,0x51,0xe0,0xb4,0x01,0x11,0x90,0x80,0x59,0x12,0x2a, +0x8b,0x00,0x03,0x2d,0x95,0xe4,0xfd,0x7f,0x01,0x12,0x34,0x81,0x22,0x8f,0x77,0xe4, +0x90,0x91,0x96,0xf0,0xa3,0xf0,0x90,0x01,0x09,0xe0,0x7f,0x00,0x30,0xe7,0x02,0x7f, +0x01,0xef,0x65,0x77,0x60,0x3e,0xc3,0x90,0x91,0x97,0xe0,0x94,0x88,0x90,0x91,0x96, +0xe0,0x94,0x13,0x40,0x08,0x90,0x01,0xc6,0xe0,0x44,0x80,0xf0,0x22,0x90,0x91,0x96, +0xe4,0x75,0xf0,0x01,0x12,0x42,0x81,0x7f,0x14,0x7e,0x00,0x12,0x37,0x54,0xd3,0x90, +0x91,0x97,0xe0,0x94,0x32,0x90,0x91,0x96,0xe0,0x94,0x00,0x40,0xb9,0x90,0x01,0xc7, +0xe0,0x30,0xe0,0xb2,0x22,0x22,0x53,0x6e,0xf0,0x43,0x6e,0x01,0x71,0x55,0x71,0x67, +0x53,0x6e,0xf0,0x43,0x6e,0x02,0x22,0x22,0x8f,0x78,0x12,0x47,0xe6,0xef,0x64,0x01, +0x70,0x2e,0x90,0x91,0x44,0x12,0x48,0x1e,0xe5,0x78,0x60,0x10,0x74,0x21,0x2f,0xf5, +0x82,0xe4,0x34,0xfc,0xf5,0x83,0xe0,0x44,0x10,0xf0,0x80,0x0e,0x74,0x21,0x2f,0xf5, +0x82,0xe4,0x34,0xfc,0xf5,0x83,0xe0,0x54,0xef,0xf0,0x90,0x04,0x1f,0x74,0x20,0xf0, +0x22,0xe4,0xfb,0x90,0x91,0x7c,0x12,0x2a,0x8b,0x00,0x00,0x00,0x00,0xe5,0x70,0x60, +0x5f,0xe5,0x6d,0x64,0x01,0x70,0x59,0x0b,0x90,0x91,0x27,0xf0,0x04,0x60,0x51,0x43, +0x71,0x10,0xe4,0x90,0x91,0x66,0xf0,0x90,0x91,0x3a,0xe0,0x75,0xf0,0x05,0xa4,0xff, +0x90,0x91,0x34,0xe0,0x2f,0x90,0x91,0x67,0xf0,0xe4,0x1b,0x12,0x44,0x54,0x90,0x01, +0x57,0x74,0x05,0xf0,0xe5,0x6e,0x54,0x0f,0xc3,0x94,0x04,0x50,0x07,0x7d,0x01,0x7f, +0x04,0x12,0x47,0x27,0x90,0x91,0x2e,0xe0,0x60,0x11,0x90,0x91,0x2c,0xe0,0x90,0x07, +0x78,0x60,0x05,0x74,0x0d,0xf0,0x80,0x03,0x74,0x09,0xf0,0x90,0x05,0x22,0xe4,0xf0, +0x22,0x90,0x91,0x32,0xe0,0xa3,0xe0,0x90,0x05,0x58,0xf0,0x22,0xd3,0x10,0xaf,0x01, +0xc3,0xc0,0xd0,0x90,0x91,0x84,0xee,0xf0,0xa3,0xef,0xf0,0xe4,0xa3,0xf0,0xa3,0xf0, +0x90,0x91,0x84,0xe0,0xfe,0xa3,0xe0,0xf5,0x82,0x8e,0x83,0xe0,0x60,0x2d,0xc3,0x90, +0x91,0x87,0xe0,0x94,0xe8,0x90,0x91,0x86,0xe0,0x94,0x03,0x40,0x0b,0x90,0x01,0xc6, +0xe0,0x44,0x10,0xf0,0x7f,0x00,0x80,0x15,0x90,0x91,0x86,0xe4,0x75,0xf0,0x01,0x12, +0x42,0x81,0x7f,0x0a,0x7e,0x00,0x12,0x37,0x54,0x80,0xc5,0x7f,0x01,0xd0,0xd0,0x92, +0xaf,0x22,0xd3,0x10,0xaf,0x01,0xc3,0xc0,0xd0,0x90,0x91,0x1c,0x12,0x43,0x41,0x90, +0x91,0x1f,0x12,0x2a,0x8b,0x00,0x00,0x00,0x00,0x90,0x91,0x1c,0x12,0x43,0x21,0x90, +0x00,0x01,0x12,0x42,0x20,0x90,0x91,0x3b,0xf0,0x90,0x00,0x03,0x12,0x42,0x20,0x90, +0x91,0x25,0xf0,0x90,0x00,0x04,0x12,0x42,0x20,0xff,0x54,0x01,0x90,0x91,0x26,0xf0, +0xef,0xc3,0x13,0x54,0x01,0x90,0x91,0x2e,0xf0,0x90,0x00,0x04,0x12,0x42,0x20,0xff, +0x13,0x13,0x54,0x01,0x90,0x91,0x2c,0xf0,0x90,0x91,0x2e,0xe0,0x90,0x91,0x1f,0x70, +0x26,0x12,0x2a,0x8b,0x00,0x00,0x02,0x10,0x90,0x91,0x1f,0x12,0x43,0x09,0x90,0x80, +0x85,0x12,0x2a,0x7f,0x7f,0x60,0x7e,0x08,0x12,0x2f,0xd9,0x90,0x91,0x1f,0x12,0x2a, +0x8b,0x00,0x00,0x03,0x10,0x80,0x24,0x12,0x2a,0x8b,0x00,0x00,0x01,0x10,0x90,0x91, +0x1f,0x12,0x43,0x09,0x90,0x80,0x85,0x12,0x2a,0x7f,0x7f,0x60,0x7e,0x08,0x12,0x2f, +0xd9,0x90,0x91,0x1f,0x12,0x2a,0x8b,0x00,0x00,0x03,0x00,0x90,0x91,0x1f,0x12,0x43, +0x09,0x90,0x80,0x85,0x12,0x2a,0x7f,0x7f,0x70,0x7e,0x08,0x12,0x2f,0xd9,0x90,0x91, +0x26,0xe0,0x70,0x3d,0x90,0x91,0x38,0x74,0x01,0xf0,0x7f,0x00,0x7e,0x08,0x12,0x27, +0xde,0x90,0x91,0x1f,0x12,0x2a,0x7f,0x90,0x91,0x1f,0x12,0x43,0x09,0xec,0x44,0x02, +0xfc,0x90,0x91,0x1f,0x12,0x2a,0x7f,0x90,0x91,0x1f,0x12,0x43,0x09,0x90,0x80,0x85, +0x12,0x2a,0x7f,0x7f,0x00,0x7e,0x08,0x12,0x2f,0xd9,0x90,0x02,0x86,0xe0,0x54,0xfb, +0xf0,0x90,0x91,0x1c,0x12,0x43,0x21,0x12,0x49,0x7f,0x90,0x01,0xe5,0xe5,0x70,0xf0, +0x90,0x91,0x3b,0xe0,0x90,0x01,0xe6,0xf0,0xd0,0xd0,0x92,0xaf,0x22,0x90,0x00,0x02, +0x12,0x42,0x20,0xff,0x30,0xe0,0x25,0x12,0x29,0xd9,0x90,0x91,0x2f,0xf0,0x90,0x00, +0x01,0x12,0x42,0x20,0x90,0x91,0x30,0xf0,0xef,0xc3,0x13,0x54,0x7f,0x90,0x91,0x2d, +0xf0,0x90,0x00,0x03,0x12,0x42,0x20,0x90,0x91,0x35,0xf0,0x22,0x90,0x91,0x2f,0x74, +0x0a,0xf0,0x90,0x91,0x30,0x74,0x05,0xf0,0x90,0x91,0x2d,0x74,0x14,0xf0,0x90,0x91, +0x35,0x74,0x05,0xf0,0x22,0x12,0x29,0xd9,0x30,0xe0,0x19,0xc3,0x13,0x54,0x7f,0x90, +0x91,0x34,0xf0,0x90,0x00,0x01,0x12,0x42,0x20,0xff,0x90,0x91,0x32,0xe4,0xf0,0xa3, +0xef,0xf0,0x80,0x0f,0x90,0x91,0x34,0x74,0x07,0xf0,0x90,0x91,0x32,0xe4,0xf0,0xa3, +0x74,0x03,0xf0,0x90,0x91,0x32,0xe0,0xa3,0xe0,0x90,0x05,0x58,0xf0,0x22,0x90,0x02, +0x09,0xe0,0xfd,0x12,0x29,0xd9,0xfe,0xaf,0x05,0xed,0x2e,0x90,0x91,0x41,0xf0,0x90, +0x00,0x01,0x12,0x42,0x20,0xff,0xed,0x2f,0x90,0x91,0x42,0xf0,0x90,0x00,0x02,0x12, +0x42,0x20,0xff,0xed,0x2f,0x90,0x91,0x43,0xf0,0x90,0x00,0x03,0x12,0x42,0x20,0xff, +0xed,0x2f,0x90,0x91,0x44,0xf0,0x90,0x00,0x04,0x12,0x42,0x20,0xff,0xae,0x05,0xed, +0x2f,0x90,0x91,0x45,0xf0,0x22,0xd3,0x10,0xaf,0x01,0xc3,0xc0,0xd0,0x90,0x91,0x47, +0xe0,0x90,0x91,0x1d,0xf0,0x90,0x91,0x48,0xe0,0xf5,0x19,0xa3,0xe0,0xf5,0x1a,0xe4, +0xf5,0x16,0x74,0x4a,0x25,0x16,0xf5,0x82,0xe4,0x34,0x91,0xf5,0x83,0xe0,0xff,0x74, +0x1b,0x25,0x16,0xf8,0xa6,0x07,0x05,0x16,0xe5,0x16,0xb4,0x04,0xe5,0x90,0x91,0x1d, +0xe0,0x12,0x43,0x4a,0x66,0xb3,0x00,0x67,0xdc,0x01,0x66,0xba,0x02,0x66,0xba,0x03, +0x66,0xba,0x04,0x67,0xdc,0x05,0x67,0xac,0x80,0x67,0xc2,0x81,0x67,0xdc,0x82,0x00, +0x00,0x67,0xd8,0xaf,0x1e,0x12,0x73,0xea,0xe1,0xdc,0x90,0x91,0x1d,0xe0,0xff,0xb4, +0x02,0x08,0x90,0x91,0x1c,0x74,0x01,0xf0,0x80,0x0f,0xef,0x90,0x91,0x1c,0xb4,0x03, +0x05,0x74,0x02,0xf0,0x80,0x03,0x74,0x04,0xf0,0xc3,0xe5,0x19,0x94,0x08,0x50,0x49, +0xe4,0xf5,0x16,0x90,0x91,0x1c,0xe0,0xff,0xe5,0x16,0xc3,0x9f,0x40,0x02,0xe1,0xdc, +0xc3,0xe5,0x19,0x94,0x01,0x50,0x14,0xe5,0x16,0x25,0x1a,0xff,0xc3,0x74,0x03,0x95, +0x16,0x24,0x1b,0xf8,0xe6,0xfd,0x12,0x4b,0xee,0x80,0x1a,0xc3,0x74,0x03,0x95,0x16, +0x24,0x1b,0xf8,0xe6,0xff,0xe5,0x16,0x7c,0x00,0x25,0x1a,0xfd,0xec,0x35,0x19,0x8d, +0x82,0xf5,0x83,0xef,0xf0,0x05,0x16,0x80,0xba,0xc3,0xe5,0x19,0x94,0x10,0x40,0x02, +0xe1,0xdc,0x90,0x91,0x1d,0xe0,0x64,0x04,0x60,0x02,0xe1,0xdc,0xaf,0x1c,0xfc,0xfd, +0xfe,0x78,0x10,0x12,0x2a,0x6c,0xc0,0x04,0xc0,0x05,0xc0,0x06,0xc0,0x07,0xaf,0x1b, +0xe4,0xfc,0xfd,0xfe,0x78,0x18,0x12,0x2a,0x6c,0xd0,0x03,0xd0,0x02,0xd0,0x01,0xd0, +0x00,0x12,0x42,0xfc,0xc0,0x04,0xc0,0x05,0xc0,0x06,0xc0,0x07,0xaf,0x1d,0xe4,0xfc, +0xfd,0xfe,0x78,0x08,0x12,0x2a,0x6c,0xd0,0x03,0xd0,0x02,0xd0,0x01,0xd0,0x00,0x12, +0x42,0xfc,0xa8,0x04,0xa9,0x05,0xaa,0x06,0xab,0x07,0xaf,0x1e,0xe4,0xfc,0xfd,0xfe, +0x12,0x42,0xfc,0xa3,0x12,0x2a,0x7f,0x90,0x91,0x1e,0x12,0x43,0x09,0x90,0x80,0x85, +0x12,0x2a,0x7f,0xaf,0x1a,0xae,0x19,0x12,0x2f,0xd9,0x80,0x30,0xe5,0x1d,0x7f,0x00, +0xfe,0xef,0x25,0x1e,0xf5,0x18,0xe4,0x3e,0xf5,0x17,0xaf,0x18,0xfe,0x12,0x37,0x54, +0x80,0x1a,0xe5,0x1d,0x7f,0x00,0xfe,0xef,0x25,0x1e,0xf5,0x18,0xe4,0x3e,0xf5,0x17, +0xaf,0x18,0xfe,0x12,0x36,0xcb,0x80,0x04,0x7f,0x00,0x80,0x02,0x7f,0x01,0xd0,0xd0, +0x92,0xaf,0x22,0x22,0x8e,0x0e,0x8f,0x0f,0x8b,0x10,0x8a,0x11,0x89,0x12,0xe4,0x90, +0x91,0x11,0xf0,0xef,0x90,0x00,0x31,0xf0,0x12,0x4a,0xe6,0xe5,0x0e,0x54,0x03,0xff, +0x90,0x00,0x32,0xe0,0x54,0xfc,0x4f,0xf0,0x12,0x4a,0xe6,0x90,0x00,0x33,0xe0,0x54, +0x7f,0xf0,0x12,0x4a,0xe6,0x90,0x00,0x33,0xe0,0x20,0xe7,0x0e,0x90,0x91,0x11,0xe0, +0xc3,0x94,0x64,0x50,0x05,0xe0,0x04,0xf0,0x80,0xeb,0x90,0x91,0x11,0xe0,0xc3,0x94, +0x64,0x50,0x10,0x90,0x00,0x30,0xe0,0xab,0x10,0xaa,0x11,0xa9,0x12,0x12,0x42,0x4d, +0x7f,0x01,0x22,0x7f,0x00,0x22,0xe4,0x90,0x91,0x98,0xf0,0xa3,0xf0,0x90,0x05,0xf8, +0xe0,0x70,0x0f,0xa3,0xe0,0x70,0x0b,0xa3,0xe0,0x70,0x07,0xa3,0xe0,0x70,0x03,0x7f, +0x01,0x22,0xd3,0x90,0x91,0x99,0xe0,0x94,0xe8,0x90,0x91,0x98,0xe0,0x94,0x03,0x40, +0x03,0x7f,0x00,0x22,0x7f,0x32,0x7e,0x00,0x12,0x37,0x54,0x90,0x91,0x98,0xe4,0x75, +0xf0,0x01,0x12,0x42,0x81,0x80,0xc6,0xef,0x70,0x02,0x41,0x3d,0x90,0x90,0xe8,0xe0, +0x60,0x02,0xc1,0x08,0x90,0x90,0xd4,0x12,0x43,0x09,0x90,0x80,0x85,0x12,0x2a,0x7f, +0x7f,0x8c,0x7e,0x08,0x12,0x2f,0xd9,0x90,0x90,0x80,0x12,0x43,0x09,0x90,0x80,0x85, +0x12,0x2a,0x7f,0x7f,0x44,0x7e,0x08,0x12,0x2f,0xd9,0x90,0x90,0x84,0x12,0x43,0x09, +0x90,0x80,0x85,0x12,0x2a,0x7f,0x7f,0x5c,0x7e,0x08,0x12,0x2f,0xd9,0x90,0x90,0x88, +0x12,0x43,0x09,0x90,0x80,0x85,0x12,0x2a,0x7f,0x7f,0x6c,0x7e,0x0e,0x12,0x2f,0xd9, +0x90,0x90,0x8c,0x12,0x43,0x09,0x90,0x80,0x85,0x12,0x2a,0x7f,0x7f,0x70,0x7e,0x0e, +0x12,0x2f,0xd9,0x90,0x90,0x90,0x12,0x43,0x09,0x90,0x80,0x85,0x12,0x2a,0x7f,0x7f, +0x74,0x7e,0x0e,0x12,0x2f,0xd9,0x90,0x90,0x94,0x12,0x43,0x09,0x90,0x80,0x85,0x12, +0x2a,0x7f,0x7f,0x78,0x7e,0x0e,0x12,0x2f,0xd9,0x90,0x90,0x98,0x12,0x43,0x09,0x90, +0x80,0x85,0x12,0x2a,0x7f,0x7f,0x7c,0x7e,0x0e,0x12,0x2f,0xd9,0x90,0x90,0x9c,0x12, +0x43,0x09,0x90,0x80,0x85,0x12,0x2a,0x7f,0x7f,0x80,0x7e,0x0e,0x12,0x2f,0xd9,0x90, +0x90,0xa0,0x12,0x43,0x09,0x90,0x80,0x85,0x12,0x2a,0x7f,0x7f,0x84,0x7e,0x0e,0x12, +0x2f,0xd9,0x90,0x90,0xa4,0x12,0x43,0x09,0x90,0x80,0x85,0x12,0x2a,0x7f,0x7f,0x88, +0x7e,0x0e,0x12,0x2f,0xd9,0x90,0x90,0xa8,0x12,0x43,0x09,0x90,0x80,0x85,0x12,0x2a, +0x7f,0x7f,0x8c,0x7e,0x0e,0x12,0x2f,0xd9,0x90,0x90,0xac,0x12,0x43,0x09,0x90,0x80, +0x85,0x12,0x2a,0x7f,0x7f,0xd0,0x7e,0x0e,0x12,0x2f,0xd9,0x90,0x90,0xb0,0x12,0x43, +0x09,0x90,0x80,0x85,0x12,0x2a,0x7f,0x7f,0xd4,0x7e,0x0e,0x12,0x2f,0xd9,0x90,0x90, +0xb4,0x12,0x43,0x09,0x90,0x80,0x85,0x12,0x2a,0x7f,0x7f,0xd8,0x7e,0x0e,0x12,0x2f, +0xd9,0x90,0x90,0xb8,0x12,0x43,0x09,0x90,0x80,0x85,0x12,0x2a,0x7f,0x7f,0xdc,0x7e, +0x0e,0x12,0x2f,0xd9,0x90,0x90,0xbc,0x12,0x43,0x09,0x90,0x80,0x85,0x12,0x2a,0x7f, +0x7f,0xe0,0x7e,0x0e,0x12,0x2f,0xd9,0x90,0x90,0xc0,0x12,0x43,0x09,0x90,0x80,0x85, +0x12,0x2a,0x7f,0x7f,0xec,0x7e,0x0e,0x12,0x2f,0xd9,0x90,0x90,0xc4,0x12,0x43,0x09, +0x90,0x80,0x85,0x12,0x2a,0x7f,0x7f,0x04,0x7e,0x0c,0x12,0x2f,0xd9,0x90,0x90,0xc8, +0x12,0x43,0x09,0x90,0x80,0x85,0x12,0x2a,0x7f,0x7f,0x04,0x7e,0x0d,0x12,0x2f,0xd9, +0x90,0x90,0xcc,0x12,0x43,0x09,0x90,0x80,0x85,0x12,0x2a,0x7f,0x7f,0x0c,0x7e,0x09, +0x12,0x2f,0xd9,0x90,0x90,0xd0,0x12,0x43,0x09,0x90,0x80,0x85,0x12,0x2a,0x7f,0x7f, +0x04,0x7e,0x08,0x12,0x2f,0xd9,0x90,0x90,0xe8,0x74,0x01,0xf0,0x22,0x90,0x90,0xe8, +0xe0,0x64,0x01,0x60,0x02,0xc1,0x08,0x7f,0x8c,0x7e,0x08,0x12,0x27,0xde,0x90,0x90, +0xd4,0x12,0x2a,0x7f,0x7f,0x44,0x7e,0x08,0x12,0x27,0xde,0x90,0x90,0x80,0x12,0x2a, +0x7f,0x7f,0x5c,0x7e,0x08,0x12,0x27,0xde,0x90,0x90,0x84,0x12,0x2a,0x7f,0x7f,0x6c, +0x7e,0x0e,0x12,0x27,0xde,0x90,0x90,0x88,0x12,0x2a,0x7f,0x7f,0x70,0x7e,0x0e,0x12, +0x27,0xde,0x90,0x90,0x8c,0x12,0x2a,0x7f,0x7f,0x74,0x7e,0x0e,0x12,0x27,0xde,0x90, +0x90,0x90,0x12,0x2a,0x7f,0x7f,0x78,0x7e,0x0e,0x12,0x27,0xde,0x90,0x90,0x94,0x12, +0x2a,0x7f,0x7f,0x7c,0x7e,0x0e,0x12,0x27,0xde,0x90,0x90,0x98,0x12,0x2a,0x7f,0x7f, +0x80,0x7e,0x0e,0x12,0x27,0xde,0x90,0x90,0x9c,0x12,0x2a,0x7f,0x7f,0x84,0x7e,0x0e, +0x12,0x27,0xde,0x90,0x90,0xa0,0x12,0x2a,0x7f,0x7f,0x88,0x7e,0x0e,0x12,0x27,0xde, +0x90,0x90,0xa4,0x12,0x2a,0x7f,0x7f,0x8c,0x7e,0x0e,0x12,0x27,0xde,0x90,0x90,0xa8, +0x12,0x2a,0x7f,0x7f,0xd0,0x7e,0x0e,0x12,0x27,0xde,0x90,0x90,0xac,0x12,0x2a,0x7f, +0x7f,0xd4,0x7e,0x0e,0x12,0x27,0xde,0x90,0x90,0xb0,0x12,0x2a,0x7f,0x7f,0xd8,0x7e, +0x0e,0x12,0x27,0xde,0x90,0x90,0xb4,0x12,0x2a,0x7f,0x7f,0xdc,0x7e,0x0e,0x12,0x27, +0xde,0x90,0x90,0xb8,0x12,0x2a,0x7f,0x7f,0xe0,0x7e,0x0e,0x12,0x27,0xde,0x90,0x90, +0xbc,0x12,0x2a,0x7f,0x7f,0xec,0x7e,0x0e,0x12,0x27,0xde,0x90,0x90,0xc0,0x12,0x2a, +0x7f,0x7f,0x04,0x7e,0x0c,0x12,0x27,0xde,0x90,0x90,0xc4,0x12,0x2a,0x7f,0x7f,0x04, +0x7e,0x0d,0x12,0x27,0xde,0x90,0x90,0xc8,0x12,0x2a,0x7f,0x7f,0x0c,0x7e,0x09,0x12, +0x27,0xde,0x90,0x90,0xcc,0x12,0x2a,0x7f,0x7f,0x04,0x7e,0x08,0x12,0x27,0xde,0x90, +0x90,0xd0,0x12,0x2a,0x7f,0x7f,0x8c,0x7e,0x08,0x12,0x27,0xde,0x90,0x91,0x88,0x12, +0x2a,0x7f,0x90,0x91,0x88,0x12,0x43,0x09,0xed,0x44,0xc0,0xfd,0xec,0x90,0x91,0x88, +0x12,0x2a,0x7f,0x90,0x91,0x88,0x12,0x43,0x09,0x90,0x80,0x85,0x12,0x2a,0x7f,0x7f, +0x8c,0x7e,0x08,0x12,0x2f,0xd9,0x90,0x80,0x85,0x12,0x2a,0x8b,0x00,0x01,0x00,0x00, +0x7f,0x44,0x7e,0x08,0x12,0x2f,0xd9,0x90,0x80,0x85,0x12,0x2a,0x8b,0x00,0xdb,0x25, +0xa4,0x7f,0x5c,0x7e,0x08,0x12,0x2f,0xd9,0x90,0x80,0x85,0x12,0x2a,0x8b,0x20,0xdb, +0x25,0xa4,0x7f,0x6c,0x7e,0x0e,0x12,0x2f,0xd9,0x90,0x80,0x85,0x12,0x2a,0x8b,0x20, +0xdb,0x25,0xa4,0x7f,0x70,0x7e,0x0e,0x12,0x2f,0xd9,0x90,0x80,0x85,0x12,0x2a,0x8b, +0x04,0x1b,0x25,0xa4,0x7f,0x74,0x7e,0x0e,0x12,0x2f,0xd9,0x90,0x80,0x85,0x12,0x2a, +0x8b,0x04,0x1b,0x25,0xa4,0x7f,0x78,0x7e,0x0e,0x12,0x2f,0xd9,0x90,0x80,0x85,0x12, +0x2a,0x8b,0x04,0x1b,0x25,0xa4,0x7f,0x7c,0x7e,0x0e,0x12,0x2f,0xd9,0x90,0x80,0x85, +0x12,0x2a,0x8b,0x04,0x1b,0x25,0xa4,0x7f,0x80,0x7e,0x0e,0x12,0x2f,0xd9,0x90,0x80, +0x85,0x12,0x2a,0x8b,0x63,0xdb,0x25,0xa4,0x7f,0x84,0x7e,0x0e,0x12,0x2f,0xd9,0x90, +0x80,0x85,0x12,0x2a,0x8b,0x04,0x1b,0x25,0xa4,0x7f,0x88,0x7e,0x0e,0x12,0x2f,0xd9, +0x90,0x80,0x85,0x12,0x2a,0x8b,0x20,0xdb,0x25,0xa4,0x7f,0x8c,0x7e,0x0e,0x12,0x2f, +0xd9,0x90,0x80,0x85,0x12,0x2a,0x8b,0x20,0xdb,0x25,0xa4,0x7f,0xd0,0x7e,0x0e,0x12, +0x2f,0xd9,0x90,0x80,0x85,0x12,0x2a,0x8b,0x20,0xdb,0x25,0xa4,0x7f,0xd4,0x7e,0x0e, +0x12,0x2f,0xd9,0x90,0x80,0x85,0x12,0x2a,0x8b,0x20,0xdb,0x25,0xa4,0x7f,0xd8,0x7e, +0x0e,0x12,0x2f,0xd9,0x90,0x80,0x85,0x12,0x2a,0x8b,0x00,0x1b,0x25,0xa4,0x7f,0xdc, +0x7e,0x0e,0x12,0x2f,0xd9,0x90,0x80,0x85,0x12,0x2a,0x8b,0x00,0x1b,0x25,0xa4,0x7f, +0xe0,0x7e,0x0e,0x12,0x2f,0xd9,0x90,0x80,0x85,0x12,0x2a,0x8b,0x24,0xdb,0x25,0xa4, +0x7f,0xec,0x7e,0x0e,0x12,0x2f,0xd9,0x7f,0x04,0x7e,0x0c,0x12,0x27,0xde,0x90,0x91, +0x88,0x12,0x2a,0x7f,0x90,0x91,0x88,0x12,0x43,0x09,0xe4,0xff,0xec,0x90,0x91,0x88, +0x12,0x2a,0x7f,0x90,0x91,0x88,0x12,0x43,0x09,0xef,0x44,0x11,0xff,0xec,0x90,0x91, +0x88,0x12,0x2a,0x7f,0x90,0x91,0x88,0x12,0x43,0x09,0x90,0x80,0x85,0x12,0x2a,0x7f, +0x7f,0x04,0x7e,0x0c,0x12,0x2f,0xd9,0x7f,0x04,0x7e,0x0d,0x12,0x27,0xde,0x90,0x91, +0x88,0x12,0x2a,0x7f,0x90,0x91,0x88,0x12,0x43,0x09,0xef,0x54,0xf0,0xff,0xec,0x90, +0x91,0x88,0x12,0x2a,0x7f,0x90,0x91,0x88,0x12,0x43,0x09,0xef,0x44,0x01,0xff,0xec, +0x90,0x91,0x88,0x12,0x2a,0x7f,0x90,0x91,0x88,0x12,0x43,0x09,0x90,0x80,0x85,0x12, +0x2a,0x7f,0x7f,0x04,0x7e,0x0d,0x12,0x2f,0xd9,0x7f,0x0c,0x7e,0x09,0x12,0x27,0xde, +0x90,0x91,0x88,0x12,0x2a,0x7f,0x90,0x91,0x88,0x12,0x43,0x09,0xe4,0xff,0xec,0x90, +0x91,0x88,0x12,0x2a,0x7f,0x90,0x91,0x88,0x12,0x43,0x09,0xef,0x44,0x11,0xff,0xec, +0x90,0x91,0x88,0x12,0x2a,0x7f,0x90,0x91,0x88,0x12,0x43,0x09,0x90,0x80,0x85,0x12, +0x2a,0x7f,0x7f,0x0c,0x7e,0x09,0x12,0x2f,0xd9,0x7f,0x0c,0x7e,0x09,0x12,0x27,0xde, +0x90,0x91,0x88,0x12,0x2a,0x7f,0x90,0x91,0x88,0x12,0x43,0x09,0xed,0x54,0x0f,0xfd, +0xec,0x54,0xf0,0xfc,0x90,0x91,0x88,0x12,0x2a,0x7f,0x90,0x91,0x88,0x12,0x43,0x09, +0xed,0x44,0x10,0xfd,0xec,0x44,0x01,0xfc,0x90,0x91,0x88,0x12,0x2a,0x7f,0x90,0x91, +0x88,0x12,0x43,0x09,0x90,0x80,0x85,0x12,0x2a,0x7f,0x7f,0x0c,0x7e,0x09,0x12,0x2f, +0xd9,0x7f,0x04,0x7e,0x08,0x12,0x27,0xde,0x90,0x91,0x88,0x12,0x2a,0x7f,0x90,0x91, +0x88,0x12,0x43,0x09,0xef,0x54,0xf0,0xff,0xec,0x90,0x91,0x88,0x12,0x2a,0x7f,0x90, +0x91,0x88,0x12,0x43,0x09,0xef,0x44,0x01,0xff,0xec,0x90,0x91,0x88,0x12,0x2a,0x7f, +0x90,0x91,0x88,0x12,0x43,0x09,0x90,0x80,0x85,0x12,0x2a,0x7f,0x7f,0x04,0x7e,0x08, +0x12,0x2f,0xd9,0xe4,0x90,0x90,0xe8,0xf0,0x22,0xe4,0xfd,0x7f,0x45,0x12,0x4b,0xee, +0x90,0x04,0xfd,0xe4,0xf0,0xa3,0xf0,0x90,0x90,0xf7,0xf0,0x90,0x90,0xfd,0xf0,0x90, +0x91,0x00,0xf0,0x90,0x90,0xfe,0xf0,0x90,0x91,0x01,0xf0,0x90,0x90,0xff,0xf0,0x90, +0x91,0x02,0xf0,0x90,0x90,0xe9,0x04,0xf0,0xe4,0xa3,0xf0,0xa3,0xf0,0xa3,0xf0,0x90, +0x90,0xee,0xf0,0x90,0x90,0xf3,0xf0,0x90,0x90,0xf5,0xf0,0x90,0x91,0x07,0xf0,0x90, +0x90,0xf8,0xf0,0x90,0x90,0xf4,0xf0,0x90,0x90,0xed,0xf0,0x90,0x00,0x51,0xe0,0x44, +0xc0,0xfd,0x7f,0x51,0x02,0x4b,0xee,0x90,0x05,0x60,0xe0,0x90,0x91,0x03,0xf0,0x90, +0x05,0x61,0xe0,0x90,0x91,0x04,0xf0,0x90,0x05,0x62,0xe0,0x90,0x91,0x05,0xf0,0x90, +0x05,0x63,0xe0,0x90,0x91,0x06,0xf0,0xc3,0x74,0xff,0x9f,0xfe,0x90,0x91,0x04,0xe0, +0xd3,0x9e,0x40,0x1e,0xe0,0x2f,0xf0,0xa3,0xe0,0xb4,0xff,0x0f,0xe4,0xf0,0xa3,0xe0, +0xb4,0xff,0x03,0xe4,0xf0,0x22,0x90,0x91,0x06,0x80,0x03,0x90,0x91,0x05,0xe0,0x04, +0xf0,0x22,0x90,0x91,0x04,0xe0,0x2f,0xf0,0x22,0x90,0x90,0xf5,0xe0,0x64,0x01,0x60, +0x02,0xe1,0x6e,0x90,0x00,0x46,0xe0,0x44,0x01,0xfd,0x7f,0x46,0x12,0x4b,0xee,0x90, +0x91,0x07,0xe0,0x70,0x32,0x90,0x90,0xed,0xe0,0x60,0x15,0x90,0x90,0xf9,0x12,0x43, +0x09,0x90,0x80,0x85,0x12,0x2a,0x7f,0x7f,0x80,0x7e,0x08,0x12,0x2f,0xd9,0x80,0x06, +0x90,0x05,0x22,0x74,0x7f,0xf0,0x90,0x90,0xf4,0xe0,0xff,0xd1,0x67,0x90,0x91,0x07, +0x74,0x01,0x12,0x4b,0xe4,0x80,0x40,0x90,0x91,0x07,0xe0,0x64,0x01,0x70,0x38,0x90, +0x90,0xf8,0xe0,0xff,0xd1,0x67,0xe4,0x90,0x91,0x07,0xf0,0x90,0x00,0x45,0xe0,0x44, +0x01,0xfd,0x7f,0x45,0x12,0x4b,0xee,0x90,0x90,0xed,0xe0,0x60,0x15,0x90,0x90,0xef, +0x12,0x43,0x09,0x90,0x80,0x85,0x12,0x2a,0x7f,0x7f,0x80,0x7e,0x08,0x12,0x2f,0xd9, +0x80,0x05,0x90,0x05,0x22,0xe4,0xf0,0x90,0x05,0x87,0xe0,0x64,0x80,0xf0,0x90,0x91, +0x03,0xe0,0x90,0x05,0x84,0xf0,0x90,0x91,0x04,0xe0,0x90,0x05,0x85,0xf0,0x90,0x91, +0x05,0xe0,0x90,0x05,0x86,0xf0,0x90,0x91,0x06,0xe0,0x90,0x05,0x87,0xf0,0x22,0x90, +0x90,0xee,0xe0,0xc3,0x94,0x14,0x50,0x06,0xe0,0x04,0xf0,0x02,0x70,0x29,0x90,0x90, +0xee,0xe0,0x64,0x14,0x60,0x03,0x02,0x70,0x29,0x90,0x90,0xfd,0xe0,0x70,0x25,0x90, +0x91,0x00,0xe0,0x70,0x1f,0x90,0x90,0xfe,0xe0,0x70,0x19,0x90,0x91,0x01,0xe0,0x70, +0x13,0x90,0x90,0xff,0xe0,0x70,0x0d,0x90,0x91,0x02,0xe0,0x70,0x07,0x90,0x04,0xfd, +0xe0,0x54,0xfe,0xf0,0x90,0x90,0xfd,0xe0,0x90,0x04,0x44,0xf0,0x90,0x90,0xfe,0xe0, +0x90,0x04,0x45,0xf0,0x90,0x90,0xff,0xe0,0x90,0x04,0x46,0xf0,0xa3,0xe4,0xf0,0x90, +0x91,0x00,0xe0,0x90,0x04,0x48,0xf0,0x90,0x91,0x01,0xe0,0x90,0x04,0x49,0xf0,0x90, +0x91,0x02,0xe0,0x90,0x04,0x4a,0xf0,0xa3,0xe4,0xf0,0x90,0x90,0xe9,0xe0,0x90,0x04, +0x4c,0xf0,0x90,0x90,0xea,0xe0,0x90,0x04,0x4d,0xf0,0x90,0x90,0xeb,0xe0,0x90,0x04, +0x4e,0xf0,0x90,0x90,0xec,0xe0,0x90,0x04,0x4f,0xf0,0xe4,0x90,0x90,0xee,0xf0,0x90, +0x90,0xe9,0x04,0xf0,0xe4,0xa3,0xf0,0xa3,0xf0,0xa3,0xf0,0x90,0x90,0xfd,0xf0,0xa3, +0xf0,0xa3,0xf0,0xa3,0xf0,0xa3,0xf0,0xa3,0xf0,0x90,0x05,0x60,0xe0,0x90,0x91,0x8c, +0xf0,0x90,0x05,0x61,0xe0,0x90,0x91,0x8d,0xf0,0x90,0x05,0x62,0xe0,0x90,0x91,0x8e, +0xf0,0x90,0x05,0x63,0xe0,0x90,0x91,0x8f,0xf0,0x90,0x91,0x06,0xe0,0xff,0x90,0x91, +0x8f,0xe0,0xfe,0xd3,0x9f,0x50,0x0b,0x90,0x91,0x06,0xe0,0xc3,0x9e,0xd3,0x94,0x01, +0x40,0x11,0x90,0x90,0xf4,0xe0,0xb4,0x01,0x02,0x80,0x03,0x90,0x90,0xf8,0xe0,0xff, +0x12,0x6e,0x67,0x22,0x90,0x91,0x07,0xe0,0x64,0x01,0x60,0x08,0x90,0x90,0xf5,0xe0, +0x60,0x02,0x21,0x4b,0x90,0x90,0xe9,0xe0,0xc3,0x94,0xff,0x50,0x05,0xe0,0x04,0xf0, +0x80,0x3b,0x90,0x90,0xea,0xe0,0xc3,0x94,0xff,0x50,0x06,0xe0,0x04,0xf0,0xe4,0x80, +0x28,0x90,0x90,0xeb,0xe0,0xc3,0x94,0xff,0x50,0x0a,0xe0,0x04,0xf0,0xe4,0x90,0x90, +0xea,0xf0,0x80,0x15,0x90,0x90,0xec,0xe0,0xc3,0x94,0xff,0x50,0x10,0xe0,0x04,0xf0, +0xe4,0x90,0x90,0xeb,0xf0,0x90,0x90,0xea,0xf0,0x90,0x90,0xe9,0xf0,0x90,0x00,0x44, +0xe0,0x54,0x0c,0x60,0x76,0xe0,0x30,0xe2,0x32,0x90,0x90,0xfd,0xe0,0xc3,0x94,0xff, +0x50,0x05,0xe0,0x04,0xf0,0x80,0x24,0x90,0x90,0xfe,0xe0,0xc3,0x94,0xff,0x50,0x06, +0xe0,0x04,0xf0,0xe4,0x80,0x11,0x90,0x90,0xff,0xe0,0xc3,0x94,0xff,0x50,0x0c,0xe0, +0x04,0xf0,0xe4,0x90,0x90,0xfe,0xf0,0x90,0x90,0xfd,0xf0,0x90,0x00,0x44,0xe0,0x30, +0xe3,0x32,0x90,0x91,0x00,0xe0,0xc3,0x94,0xff,0x50,0x05,0xe0,0x04,0xf0,0x80,0x24, +0x90,0x91,0x01,0xe0,0xc3,0x94,0xff,0x50,0x06,0xe0,0x04,0xf0,0xe4,0x80,0x11,0x90, +0x91,0x02,0xe0,0xc3,0x94,0xff,0x50,0x0c,0xe0,0x04,0xf0,0xe4,0x90,0x91,0x01,0xf0, +0x90,0x91,0x00,0xf0,0x90,0x04,0xfd,0xe0,0x44,0x01,0xf0,0x22,0x90,0x06,0x90,0xe0, +0x44,0x01,0xf0,0x90,0x91,0x61,0xe0,0x30,0xe0,0x3c,0x90,0x91,0x5f,0xe0,0xff,0x90, +0x91,0x5e,0xe0,0xfe,0xc4,0x13,0x54,0x01,0xfd,0x12,0x4a,0xf6,0x90,0x91,0x60,0xe0, +0x75,0xf0,0x20,0xa4,0xff,0xae,0xf0,0x12,0x37,0x54,0x90,0x91,0x5e,0xe0,0xc4,0x13, +0x54,0x07,0x30,0xe0,0x07,0xa3,0xe0,0xff,0xe4,0xfd,0x80,0x07,0x90,0x91,0x5f,0xe0, +0xff,0x7d,0x01,0x12,0x4a,0xf6,0x22,0xd3,0x10,0xaf,0x01,0xc3,0xc0,0xd0,0xe4,0x90, +0x91,0x19,0xf0,0xa3,0x74,0x08,0xf0,0xa3,0xf0,0xe4,0xa3,0xf0,0x90,0x01,0x1f,0xe0, +0xfe,0x90,0x01,0x1e,0xe0,0x7c,0x00,0x24,0x00,0xff,0xec,0x3e,0x90,0x91,0x11,0xf0, +0xa3,0xef,0xf0,0x90,0x02,0x87,0xe0,0x90,0x91,0x18,0xf0,0x90,0x91,0x56,0xe0,0x20, +0xe0,0x02,0x61,0xc4,0xe4,0x90,0x91,0x17,0xf0,0x90,0x91,0x18,0xe0,0xff,0x90,0x91, +0x17,0xe0,0xc3,0x9f,0x40,0x02,0x61,0xc4,0x90,0x91,0x11,0xe0,0xfc,0xa3,0xe0,0xfd, +0xec,0xff,0x90,0xfd,0x11,0xf0,0x90,0x91,0x1c,0xef,0xf0,0x74,0x02,0x2d,0xf5,0x82, +0xe4,0x34,0xfb,0xf5,0x83,0xe0,0x54,0x0f,0xfc,0x33,0x33,0x33,0x54,0xf8,0xff,0xed, +0x24,0x18,0x2f,0x90,0x91,0x15,0xf0,0xe0,0x24,0x00,0xf5,0x82,0xe4,0x34,0xfb,0xf5, +0x83,0xe0,0x54,0xfc,0x90,0x91,0x16,0xf0,0x74,0x01,0x2d,0xf5,0x82,0xe4,0x34,0xfb, +0xf5,0x83,0xe0,0xfe,0x74,0x00,0x2d,0xf5,0x82,0xe4,0x34,0xfb,0xf5,0x83,0xe0,0x7a, +0x00,0x24,0x00,0xff,0xea,0x3e,0x54,0x3f,0xab,0x07,0xfa,0x90,0x91,0x13,0xf0,0xa3, +0xeb,0xf0,0xaf,0x04,0xef,0x75,0xf0,0x08,0xa4,0x24,0x18,0xff,0xe4,0x35,0xf0,0xfe, +0xef,0x2b,0xfb,0xee,0x3a,0xfa,0x90,0x91,0x5a,0xe0,0xfe,0xa3,0xe0,0xff,0xad,0x03, +0xac,0x02,0x12,0x45,0x09,0xaa,0x06,0xab,0x07,0x90,0x91,0x15,0xe0,0x24,0x00,0xf5, +0x82,0xe4,0x34,0xfb,0xf5,0x83,0xe0,0x30,0xe7,0x08,0x90,0x91,0x19,0x74,0x02,0xf0, +0x80,0x05,0xe4,0x90,0x91,0x19,0xf0,0xaf,0x03,0x90,0x91,0x11,0xea,0x8f,0xf0,0x12, +0x42,0x81,0x90,0x91,0x5c,0xe0,0xfe,0xa3,0xe0,0xff,0x90,0x91,0x11,0xe0,0xfc,0xa3, +0xe0,0xfd,0xd3,0x9f,0xec,0x9e,0x40,0x1b,0x90,0x91,0x5d,0xe0,0x24,0x01,0xff,0x90, +0x91,0x5c,0xe0,0x34,0x00,0xfe,0xc3,0xed,0x9f,0xff,0xec,0x9e,0x90,0x91,0x11,0xf0, +0xa3,0xef,0xf0,0x90,0x91,0x16,0xe0,0xff,0x24,0x40,0x60,0x04,0x24,0x20,0x70,0x27, +0x90,0x91,0x5e,0xe0,0xfe,0xc4,0x13,0x13,0x13,0x54,0x01,0x20,0xe0,0x02,0x61,0x9c, +0xef,0x90,0x00,0x81,0xb4,0xa0,0x05,0xe0,0x44,0x04,0x80,0x03,0xe0,0x44,0x08,0xfd, +0x7f,0x81,0x12,0x4b,0xee,0x61,0x95,0x90,0x91,0x5e,0xe0,0xc4,0x13,0x13,0x54,0x03, +0x20,0xe0,0x02,0x61,0x9c,0x90,0x91,0x15,0xe0,0xff,0x24,0x00,0xf5,0x82,0xe4,0x34, +0xfb,0xf5,0x83,0xe0,0x54,0x0c,0x64,0x08,0x70,0x72,0x90,0x91,0x19,0xe0,0xfe,0xef, +0x2e,0xff,0xa3,0xe0,0x2f,0xff,0x24,0x1e,0xf5,0x82,0xe4,0x34,0xfb,0xf5,0x83,0xe0, +0x64,0x88,0x70,0x58,0x74,0x1f,0x2f,0xf5,0x82,0xe4,0x34,0xfb,0xf5,0x83,0xe0,0x64, +0x8e,0x70,0x49,0x90,0x91,0x19,0xe0,0xff,0x90,0x91,0x15,0xe0,0x2f,0xff,0x90,0x91, +0x1a,0xe0,0x2f,0xff,0xa3,0xe0,0x2f,0xff,0x24,0x19,0xf5,0x82,0xe4,0x34,0xfb,0xf5, +0x83,0xe0,0x64,0x03,0x70,0x26,0x74,0x1e,0x2f,0xf5,0x82,0xe4,0x34,0xfb,0xf5,0x83, +0xe0,0x90,0x00,0x81,0x30,0xe3,0x05,0xe0,0x44,0x01,0x80,0x03,0xe0,0x44,0x02,0xfd, +0x7f,0x81,0x12,0x4b,0xee,0x90,0x91,0x56,0xe0,0x44,0x80,0xf0,0x90,0x91,0x56,0xe0, +0xff,0xc4,0x13,0x13,0x13,0x54,0x01,0x30,0xe0,0x02,0x31,0x4c,0x71,0xc9,0xbf,0x01, +0x13,0x90,0x91,0x11,0xe0,0xfe,0xa3,0xe0,0xff,0x12,0x44,0xb5,0x90,0x91,0x17,0xe0, +0x04,0xf0,0x21,0xd9,0xd0,0xd0,0x92,0xaf,0x22,0x90,0x91,0x56,0xe0,0xc4,0x13,0x13, +0x13,0x54,0x01,0x30,0xe0,0x11,0xe0,0x44,0x80,0xf0,0x90,0x91,0x5e,0xe0,0xc4,0x54, +0x0f,0x20,0xe0,0x03,0x7f,0x00,0x22,0x7f,0x01,0x22,0x8f,0x1f,0xe4,0x90,0x91,0x22, +0xf0,0xe5,0x1f,0x14,0xfe,0x90,0x91,0x22,0xe0,0xff,0xc3,0x9e,0x50,0x0e,0xef,0x04, +0xfd,0x12,0x34,0xb7,0x90,0x91,0x22,0xe0,0x04,0xf0,0x80,0xe5,0xe5,0x1f,0x14,0xff, +0x7d,0xff,0x12,0x34,0xb7,0x90,0x91,0x22,0xe5,0x1f,0xf0,0x90,0x91,0x22,0xe0,0xc3, +0x94,0xff,0x50,0x0f,0xe0,0xff,0x04,0xfd,0x12,0x34,0xb7,0x90,0x91,0x22,0xe0,0x04, +0xf0,0x80,0xe8,0xad,0x1f,0x7f,0xff,0x02,0x34,0xb7,0xc3,0xee,0x94,0x01,0x40,0x0a, +0x0d,0xed,0x13,0x90,0xfd,0x10,0xf0,0xe4,0x2f,0xff,0x22,0xc3,0xee,0x94,0x01,0x40, +0x1e,0x90,0xfd,0x11,0xe0,0xb5,0x05,0x14,0x90,0x01,0x17,0xe0,0xb5,0x05,0x07,0x90, +0xfd,0x11,0xe4,0xf0,0x80,0x06,0xed,0x04,0x90,0xfd,0x11,0xf0,0xe4,0x2f,0xff,0x22, +0x0f,0x75,}; + +u8 Rtl8192CUFwUMCACutWWImgArray[UMCACutWWImgArrayLength] = { +0xc1,0x88,0x02,0x00,0x51,0x00,0x00,0x00,0x03,0x23,0x16,0x44,0x72,0x34,0x01,0x00, +0x58,0x92,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x02,0x43,0x9d,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x02,0x57,0xcb,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x02,0x5c,0xb6,0x00,0x00,0x00,0x00,0x00,0x02,0x5d,0x99,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0xbb,0x01,0x0c,0xe5,0x82,0x29,0xf5,0x82,0xe5,0x83,0x3a,0xf5,0x83,0xe0,0x22,0x50, +0x06,0xe9,0x25,0x82,0xf8,0xe6,0x22,0xbb,0xfe,0x06,0xe9,0x25,0x82,0xf8,0xe2,0x22, +0xe5,0x82,0x29,0xf5,0x82,0xe5,0x83,0x3a,0xf5,0x83,0xe4,0x93,0x22,0xbb,0x01,0x06, +0x89,0x82,0x8a,0x83,0xf0,0x22,0x50,0x02,0xf7,0x22,0xbb,0xfe,0x01,0xf3,0x22,0xf8, +0xbb,0x01,0x0d,0xe5,0x82,0x29,0xf5,0x82,0xe5,0x83,0x3a,0xf5,0x83,0xe8,0xf0,0x22, +0x50,0x06,0xe9,0x25,0x82,0xc8,0xf6,0x22,0xbb,0xfe,0x05,0xe9,0x25,0x82,0xc8,0xf2, +0x22,0xc5,0xf0,0xf8,0xa3,0xe0,0x28,0xf0,0xc5,0xf0,0xf8,0xe5,0x82,0x15,0x82,0x70, +0x02,0x15,0x83,0xe0,0x38,0xf0,0x22,0xbb,0x01,0x10,0xe5,0x82,0x29,0xf5,0x82,0xe5, +0x83,0x3a,0xf5,0x83,0xe0,0xf5,0xf0,0xa3,0xe0,0x22,0x50,0x09,0xe9,0x25,0x82,0xf8, +0x86,0xf0,0x08,0xe6,0x22,0xbb,0xfe,0x0a,0xe9,0x25,0x82,0xf8,0xe2,0xf5,0xf0,0x08, +0xe2,0x22,0xe5,0x83,0x2a,0xf5,0x83,0xe9,0x93,0xf5,0xf0,0xa3,0xe9,0x93,0x22,0xf8, +0xbb,0x01,0x11,0xe5,0x82,0x29,0xf5,0x82,0xe5,0x83,0x3a,0xf5,0x83,0xe8,0xf0,0xe5, +0xf0,0xa3,0xf0,0x22,0x50,0x09,0xe9,0x25,0x82,0xc8,0xf6,0x08,0xa6,0xf0,0x22,0xbb, +0xfe,0x09,0xe9,0x25,0x82,0xc8,0xf2,0xe5,0xf0,0x08,0xf2,0x22,0xef,0x4b,0xff,0xee, +0x4a,0xfe,0xed,0x49,0xfd,0xec,0x48,0xfc,0x22,0xe0,0xfc,0xa3,0xe0,0xfd,0xa3,0xe0, +0xfe,0xa3,0xe0,0xff,0x22,0xa4,0x25,0x82,0xf5,0x82,0xe5,0xf0,0x35,0x83,0xf5,0x83, +0x22,0xe0,0xfb,0xa3,0xe0,0xfa,0xa3,0xe0,0xf9,0x22,0xf8,0xe0,0xfb,0xa3,0xa3,0xe0, +0xf9,0x25,0xf0,0xf0,0xe5,0x82,0x15,0x82,0x70,0x02,0x15,0x83,0xe0,0xfa,0x38,0xf0, +0x22,0xeb,0xf0,0xa3,0xea,0xf0,0xa3,0xe9,0xf0,0x22,0xd0,0x83,0xd0,0x82,0xf8,0xe4, +0x93,0x70,0x12,0x74,0x01,0x93,0x70,0x0d,0xa3,0xa3,0x93,0xf8,0x74,0x01,0x93,0xf5, +0x82,0x88,0x83,0xe4,0x73,0x74,0x02,0x93,0x68,0x60,0xef,0xa3,0xa3,0xa3,0x80,0xdf, +0xd0,0x83,0xd0,0x82,0xf8,0xe4,0x93,0x70,0x12,0x74,0x01,0x93,0x70,0x0d,0xa3,0xa3, +0x93,0xf8,0x74,0x01,0x93,0xf5,0x82,0x88,0x83,0xe4,0x73,0x74,0x02,0x93,0xb5,0xf0, +0x06,0x74,0x03,0x93,0x68,0x60,0xe9,0xa3,0xa3,0xa3,0xa3,0x80,0xd8,0x02,0x43,0xdb, +0x02,0x50,0x2a,0xe4,0x93,0xa3,0xf8,0xe4,0x93,0xa3,0x40,0x03,0xf6,0x80,0x01,0xf2, +0x08,0xdf,0xf4,0x80,0x29,0xe4,0x93,0xa3,0xf8,0x54,0x07,0x24,0x0c,0xc8,0xc3,0x33, +0xc4,0x54,0x0f,0x44,0x20,0xc8,0x83,0x40,0x04,0xf4,0x56,0x80,0x01,0x46,0xf6,0xdf, +0xe4,0x80,0x0b,0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80,0x90,0x44,0x20,0xe4,0x7e, +0x01,0x93,0x60,0xbc,0xa3,0xff,0x54,0x3f,0x30,0xe5,0x09,0x54,0x1f,0xfe,0xe4,0x93, +0xa3,0x60,0x01,0x0e,0xcf,0x54,0xc0,0x25,0xe0,0x60,0xa8,0x40,0xb8,0xe4,0x93,0xa3, +0xfa,0xe4,0x93,0xa3,0xf8,0xe4,0x93,0xa3,0xc8,0xc5,0x82,0xc8,0xca,0xc5,0x83,0xca, +0xf0,0xa3,0xc8,0xc5,0x82,0xc8,0xca,0xc5,0x83,0xca,0xdf,0xe9,0xde,0xe7,0x80,0xbe, +0x41,0x91,0x40,0x00,0x41,0x91,0x9c,0x00,0x41,0x91,0x23,0x80,0x41,0x91,0x24,0x80, +0x41,0x91,0x9e,0x00,0x41,0x91,0x52,0x00,0x41,0x91,0x93,0x00,0x41,0x91,0x91,0x00, +0x41,0x91,0x90,0x00,0x41,0x91,0x92,0x00,0x00,0xf0,0x90,0x91,0x30,0xe0,0x90,0x91, +0x67,0xf0,0xe4,0xfb,0xfd,0x7f,0x54,0x7e,0x01,0xd3,0x10,0xaf,0x01,0xc3,0xc0,0xd0, +0x90,0x91,0x65,0xeb,0xf0,0xa3,0xe0,0xfb,0xa3,0xe0,0xf5,0x44,0xe4,0xf5,0x45,0x12, +0x30,0x62,0xd0,0xd0,0x92,0xaf,0x22,0x90,0x01,0x5f,0xe4,0xf0,0x90,0x01,0x3c,0x74, +0x08,0xf0,0xe4,0x90,0x91,0x66,0xf0,0x90,0x91,0x2d,0xe0,0x90,0x91,0x67,0xf0,0xe4, +0xfb,0xfd,0x7f,0x5c,0x7e,0x01,0x91,0x59,0x90,0x01,0x5f,0x74,0x05,0xf0,0x90,0x06, +0x92,0x74,0x02,0xf0,0x90,0x91,0x36,0x14,0xf0,0xe5,0x6e,0x54,0x0f,0xc3,0x94,0x0c, +0x50,0x02,0xf1,0x23,0x22,0x90,0x02,0x84,0xef,0xf0,0xa3,0xee,0xf0,0xa3,0x74,0x05, +0xf0,0x22,0x7d,0x01,0xaf,0x6f,0xe1,0x27,0xf1,0xe6,0xbf,0x01,0x10,0x90,0x91,0x42, +0xe0,0xff,0xe4,0xfd,0x12,0x48,0x22,0x90,0x04,0x1f,0x74,0x20,0xf0,0x22,0x8f,0x82, +0x8e,0x83,0xa3,0xa3,0xa3,0xe4,0xf0,0x22,0xe4,0xf5,0x72,0x7f,0x60,0x7e,0x01,0x80, +0xed,0x7f,0x00,0x22,0x90,0x91,0x53,0xe0,0x54,0xfe,0xf0,0x02,0x50,0xd6,0x22,0xe4, +0xf5,0x75,0x22,0x02,0x5f,0xe2,0x02,0x5f,0xe9,0xef,0x8e,0xf0,0x71,0x70,0x45,0x26, +0x00,0x40,0x45,0x4e,0x00,0x80,0x45,0x79,0x01,0x00,0x45,0x8d,0x02,0x00,0x45,0xa5, +0x04,0x00,0x00,0x00,0x45,0xc2,0xed,0x54,0x3f,0x70,0x04,0xfe,0xff,0x80,0x04,0x7e, +0x00,0x7f,0x40,0xef,0x2d,0xff,0xee,0x3c,0xfe,0xef,0x78,0x06,0xce,0xc3,0x13,0xce, +0x13,0xd8,0xf9,0x78,0x06,0xc3,0x33,0xce,0x33,0xce,0xd8,0xf9,0x80,0x26,0xed,0x54, +0x7f,0x70,0x04,0xfe,0xff,0x80,0x04,0x7e,0x00,0x7f,0x80,0xef,0x2d,0xff,0xee,0x3c, +0xfe,0xef,0x78,0x07,0xce,0xc3,0x13,0xce,0x13,0xd8,0xf9,0x78,0x07,0xc3,0x33,0xce, +0x33,0xce,0xd8,0xf9,0xfd,0xac,0x06,0x80,0x49,0xed,0x70,0x04,0xfe,0xff,0x80,0x04, +0x7e,0x01,0x7f,0x00,0xef,0x2d,0xee,0x3c,0x7d,0x00,0xfc,0x80,0x35,0xec,0x54,0x01, +0x4d,0x70,0x04,0xfe,0xff,0x80,0x04,0x7e,0x02,0x7f,0x00,0xef,0x2d,0xee,0x3c,0xc3, +0x13,0x7d,0x00,0x80,0x1a,0xec,0x54,0x03,0x4d,0x70,0x04,0xfe,0xff,0x80,0x04,0x7e, +0x04,0x7f,0x00,0xef,0x2d,0xee,0x3c,0x13,0x13,0x54,0x3f,0x7d,0x00,0x25,0xe0,0x25, +0xe0,0xfc,0xae,0x04,0xaf,0x05,0x22,0x90,0x91,0x09,0x12,0x25,0x14,0x00,0x00,0x00, +0x00,0x90,0x06,0xa9,0xe0,0x90,0x91,0x08,0xf0,0xe0,0x54,0xc0,0x70,0x0a,0x53,0x71, +0xfe,0x53,0x71,0xfd,0x91,0xc2,0x80,0x47,0x90,0x91,0x26,0xe0,0x60,0x41,0x90,0x91, +0x38,0xe0,0x70,0x3b,0x90,0x91,0x38,0x74,0x01,0xf0,0x7f,0x00,0x7e,0x08,0x12,0x22, +0x65,0x90,0x91,0x09,0x12,0x25,0x08,0x90,0x91,0x09,0x71,0x09,0xec,0x44,0x02,0xfc, +0x90,0x91,0x09,0x12,0x25,0x08,0x90,0x91,0x09,0x71,0x09,0x90,0x80,0x96,0x12,0x25, +0x08,0x7f,0x00,0x7e,0x08,0x12,0x2b,0x08,0x90,0x02,0x86,0xe0,0x54,0xfb,0xf0,0x90, +0x91,0x08,0xe0,0x30,0xe6,0x13,0x43,0x71,0x01,0x90,0x91,0x3b,0xe0,0x64,0x02,0x60, +0x04,0x91,0xc8,0x80,0x07,0x91,0x77,0x80,0x03,0x53,0x71,0xfe,0x90,0x91,0x08,0xe0, +0x30,0xe7,0x16,0x43,0x71,0x02,0xe4,0x90,0x91,0x66,0x91,0x49,0x90,0x01,0x57,0x74, +0x05,0xf0,0x90,0x91,0x3c,0x74,0x01,0xf0,0x22,0x53,0x71,0xfd,0x22,0xd3,0x10,0xaf, +0x01,0xc3,0xc0,0xd0,0x8b,0x60,0x8a,0x61,0x89,0x62,0x90,0x91,0x68,0x71,0x41,0xab, +0x63,0xaa,0x64,0xa9,0x65,0x90,0x91,0x6b,0x71,0x41,0xaf,0x66,0x15,0x66,0xef,0x60, +0x1b,0x90,0x91,0x6b,0xe4,0x75,0xf0,0x01,0x71,0x2a,0x12,0x24,0x62,0xff,0x90,0x91, +0x68,0xe4,0x75,0xf0,0x01,0x71,0x2a,0xef,0x51,0x4d,0x80,0xde,0xab,0x60,0xaa,0x61, +0xa9,0x62,0xd0,0xd0,0x92,0xaf,0x22,0xd3,0x10,0xaf,0x01,0xc3,0xc0,0xd0,0x90,0x91, +0x6e,0x71,0x41,0x90,0x91,0x9e,0xe0,0xff,0x04,0xf0,0x90,0x00,0x01,0xef,0x51,0x5f, +0x7f,0xaf,0x7e,0x01,0x12,0x64,0x1c,0xef,0x60,0x44,0x90,0x91,0x6e,0x71,0x21,0x8b, +0x63,0x8a,0x64,0x89,0x65,0x75,0x66,0x02,0x7b,0x01,0x7a,0x01,0x79,0xa0,0xd1,0x6d, +0x90,0x91,0x71,0x71,0x21,0x8b,0x63,0x8a,0x64,0x89,0x65,0x90,0x91,0x6e,0x71,0x21, +0x12,0x24,0x62,0xff,0xc4,0x54,0x0f,0xf5,0x66,0x7b,0x01,0x7a,0x01,0x79,0xa2,0xd1, +0x6d,0x90,0x01,0xaf,0x74,0xff,0xf0,0x90,0x01,0xcb,0xe0,0x64,0x80,0xf0,0xd0,0xd0, +0x92,0xaf,0x22,0x7d,0x01,0x7f,0x0c,0x90,0x91,0x95,0xed,0xf0,0x90,0x91,0x94,0xef, +0xf0,0x54,0x0f,0xff,0xe5,0x6e,0x54,0x0f,0x6f,0x60,0x76,0x90,0x91,0x94,0xe0,0x30, +0xe2,0x30,0xe5,0x6e,0x20,0xe2,0x05,0x7f,0x01,0x12,0x62,0x65,0xe5,0x6e,0x30,0xe3, +0x0f,0x90,0x91,0x94,0xe0,0x20,0xe3,0x08,0x12,0x5a,0x3f,0xef,0x60,0x53,0x80,0x52, +0xe5,0x6e,0x20,0xe3,0x4c,0x90,0x91,0x94,0xe0,0x30,0xe3,0x45,0xa3,0xe0,0xff,0x02, +0x62,0x4a,0xe5,0x6e,0x54,0x0f,0xff,0xbf,0x0c,0x0f,0x90,0x91,0x94,0xe0,0x20,0xe3, +0x08,0x12,0x5a,0x3f,0xef,0x60,0x2a,0xf1,0xb2,0xe5,0x6e,0x54,0x0f,0xff,0xbf,0x04, +0x10,0x90,0x91,0x94,0xe0,0x20,0xe2,0x09,0x12,0x5b,0xb3,0xef,0x60,0x13,0x12,0x48, +0xce,0xe5,0x6e,0x54,0x0f,0xff,0xbf,0x02,0x08,0x91,0xf1,0xef,0x60,0x03,0x12,0x63, +0x56,0x22,0x90,0x06,0x04,0xe0,0x44,0x40,0xf0,0xe5,0x6d,0xb4,0x01,0x04,0x7f,0x01, +0xf1,0xc9,0x53,0x6e,0xf0,0x43,0x6e,0x04,0x22,0x8f,0x67,0xf1,0xe6,0xbf,0x01,0x15, +0x90,0x91,0x43,0x12,0x48,0x1e,0xad,0x07,0xac,0x06,0xaf,0x67,0x12,0x61,0xa3,0x90, +0x04,0x1f,0x74,0x20,0xf0,0x22,0xd3,0x10,0xaf,0x01,0xc3,0xc0,0xd0,0x90,0x01,0xc4, +0x74,0xe6,0xf0,0x74,0x47,0xa3,0xf0,0x90,0x04,0x1d,0xe0,0x60,0x1a,0x90,0x05,0x22, +0xe0,0x54,0x90,0x60,0x07,0x90,0x01,0xc6,0xe0,0x44,0x40,0xf0,0x90,0x01,0xc7,0xe0, +0x30,0xe1,0xe4,0x7f,0x00,0x80,0x02,0x7f,0x01,0xd0,0xd0,0x92,0xaf,0x22,0xe0,0xff, +0x7d,0x01,0x90,0x91,0x74,0xef,0xf0,0xa3,0xed,0xf0,0xe4,0xa3,0xf0,0xa3,0xf0,0xe5, +0x70,0x60,0x04,0xe4,0xff,0x11,0xb3,0x90,0x91,0x74,0xe0,0x30,0xe0,0x09,0x90,0x91, +0x76,0xe4,0xf0,0xa3,0x74,0x80,0xf0,0x90,0x91,0x74,0xe0,0xff,0xc3,0x13,0x90,0xfd, +0x10,0xf0,0x90,0x04,0x25,0xef,0xf0,0x90,0x91,0x75,0xe0,0x60,0x1f,0xa3,0xa3,0xe0, +0xff,0x24,0x0f,0xf5,0x82,0xe4,0x34,0xfc,0xf5,0x83,0xe0,0x44,0x80,0xf0,0x74,0x10, +0x2f,0xf5,0x82,0xe4,0x34,0xfc,0xf5,0x83,0xe0,0x44,0x80,0xf0,0x90,0x91,0x76,0xa3, +0xe0,0xff,0xfd,0x24,0x08,0xf5,0x82,0xe4,0x34,0xfc,0xf5,0x83,0xe4,0xf0,0x74,0x09, +0x2d,0xf5,0x82,0xe4,0x34,0xfc,0xf5,0x83,0xe0,0x54,0xf0,0xf0,0x74,0x21,0x2f,0xf5, +0x82,0xe4,0x34,0xfc,0xf5,0x83,0xe0,0x54,0xf7,0xf0,0x90,0x91,0x76,0xe0,0xfe,0xa3, +0xe0,0xff,0x22,0xef,0x60,0x0b,0x90,0x91,0x51,0xe0,0xb4,0x01,0x10,0xe4,0xff,0x80, +0x09,0x90,0x91,0x51,0xe0,0xb4,0x01,0x05,0x7f,0x01,0x12,0x68,0x87,0x22,0x90,0x01, +0x37,0x74,0x02,0xf0,0x90,0x05,0x22,0x74,0xff,0xf0,0x12,0x68,0x46,0xef,0x70,0x06, +0x90,0x01,0xc8,0x74,0xfd,0xf0,0x7d,0x02,0x7f,0x03,0x12,0x31,0x9d,0xe5,0x70,0x60, +0x04,0x7f,0x01,0x11,0xb3,0x51,0x0c,0x53,0x6e,0xf0,0x43,0x6e,0x02,0x22,0xef,0x64, +0x01,0x70,0x42,0x7d,0x78,0x7f,0x02,0x12,0x31,0x2c,0x7d,0x02,0x7f,0x03,0x12,0x31, +0x2c,0x90,0x01,0x36,0x74,0x03,0xf0,0xfd,0x7f,0x02,0x12,0x31,0x9d,0x7d,0x10,0x7f, +0x03,0x12,0x31,0x49,0x90,0x01,0x57,0xe4,0xf0,0x90,0x01,0x3c,0x74,0x02,0xf0,0x12, +0x47,0x23,0xe4,0xff,0x11,0xb3,0x90,0x06,0x04,0xe0,0x54,0x7f,0xf0,0x90,0x06,0x0a, +0xe0,0x54,0xf8,0xf0,0x22,0x90,0x01,0x36,0x74,0x7b,0xf0,0xa3,0x74,0x02,0xf0,0x7d, +0x7b,0xff,0x12,0x31,0x9d,0x7d,0x02,0x7f,0x03,0x12,0x31,0x9d,0x7d,0x10,0x7f,0x03, +0x12,0x31,0x49,0x90,0x06,0x04,0xe0,0x44,0x80,0xf0,0x90,0x06,0x0a,0xe0,0x44,0x07, +0xf0,0x12,0x64,0x11,0xe5,0x6d,0x20,0xe0,0x05,0xe4,0x90,0x91,0x29,0xf0,0x22,0x8b, +0x0e,0x8a,0x0f,0x89,0x10,0x12,0x62,0x3e,0xab,0x0e,0xaa,0x0f,0xa9,0x10,0x12,0x24, +0x62,0xf5,0x70,0x14,0x60,0x0e,0x14,0x60,0x1e,0x14,0x60,0x2f,0x24,0x03,0x70,0x40, +0x7f,0x01,0x80,0x3a,0xab,0x0e,0xaa,0x0f,0xa9,0x10,0x90,0x00,0x02,0x12,0x42,0x20, +0xfd,0xe4,0xff,0x31,0xe1,0x80,0x27,0xab,0x0e,0xaa,0x0f,0xa9,0x10,0x90,0x00,0x02, +0x12,0x42,0x20,0xfd,0x7f,0x01,0x31,0xe1,0x1f,0x80,0x13,0xab,0x0e,0xaa,0x0f,0xa9, +0x10,0x90,0x00,0x02,0x12,0x42,0x20,0xfd,0x7f,0x02,0x31,0xe1,0xe4,0xff,0x11,0xfe, +0x22,0xef,0x24,0xfe,0x60,0x0b,0x04,0x70,0x22,0x90,0x91,0x39,0x74,0x01,0xf0,0x80, +0x16,0xed,0x70,0x0a,0x90,0x91,0x35,0xe0,0x90,0x91,0x39,0xf0,0x80,0x05,0x90,0x91, +0x39,0xed,0xf0,0x90,0x91,0x39,0xe0,0x90,0x91,0x27,0xf0,0x22,0x7f,0x78,0x7e,0x08, +0x12,0x22,0x65,0x90,0x90,0xd8,0x12,0x25,0x08,0x7f,0x04,0x7e,0x0c,0x12,0x22,0x65, +0x90,0x90,0xdc,0x12,0x25,0x08,0x7f,0x00,0x7e,0x08,0x12,0x22,0x65,0x90,0x90,0xe0, +0x12,0x25,0x08,0x90,0x91,0x51,0xe0,0x90,0x90,0xd8,0xb4,0x01,0x0d,0x12,0x43,0x09, +0xef,0x54,0xc7,0xff,0xed,0x54,0xc7,0xfd,0x80,0x07,0x12,0x43,0x09,0xef,0x54,0xc7, +0xff,0xec,0x90,0x80,0x96,0x12,0x25,0x08,0x7f,0x78,0x7e,0x08,0x12,0x2b,0x08,0x90, +0x90,0xdc,0x12,0x43,0x09,0xef,0x54,0x0f,0xff,0xec,0x90,0x80,0x96,0x12,0x25,0x08, +0x7f,0x04,0x7e,0x0c,0x12,0x2b,0x08,0x90,0x90,0xe0,0x12,0x43,0x09,0xef,0x44,0x02, +0xff,0xec,0x90,0x80,0x96,0x12,0x25,0x08,0x7f,0x00,0x7e,0x08,0x12,0x2b,0x08,0x7f, +0x70,0x7e,0x0e,0x12,0x22,0x65,0x90,0x90,0xe4,0x12,0x25,0x08,0x90,0x80,0x96,0x12, +0x25,0x14,0x00,0x1b,0x25,0xa0,0x7f,0x70,0x7e,0x0e,0x12,0x2b,0x08,0x90,0x80,0x68, +0x12,0x25,0x14,0x00,0x00,0x00,0x00,0xe4,0xfd,0xff,0x12,0x30,0x2c,0x90,0x91,0x51, +0xe0,0xb4,0x01,0x11,0x90,0x80,0x68,0x12,0x25,0x14,0x00,0x00,0x00,0x00,0xe4,0xfd, +0x7f,0x01,0x12,0x30,0x2c,0x90,0x00,0x11,0xe0,0x54,0xf6,0xf0,0x80,0x08,0xf4,0xff, +0x90,0x00,0x43,0xe0,0x5f,0xf0,0xd3,0x10,0xaf,0x01,0xc3,0xc0,0xd0,0x7f,0x10,0xdf, +0xfe,0xd0,0xd0,0x92,0xaf,0x22,0xd3,0x10,0xaf,0x01,0xc3,0xc0,0xd0,0x90,0x91,0x9b, +0xed,0xf0,0x90,0x91,0x9a,0xef,0xf0,0xd3,0x94,0x07,0x50,0x63,0xe0,0xff,0x74,0x01, +0xa8,0x07,0x08,0x80,0x02,0xc3,0x33,0xd8,0xfc,0xf4,0xff,0x90,0x00,0x47,0xe0,0x5f, +0xf0,0x51,0xe6,0x90,0x91,0x9a,0xe0,0xff,0x74,0x01,0xa8,0x07,0x08,0x80,0x02,0xc3, +0x33,0xd8,0xfc,0xff,0x90,0x00,0x46,0xe0,0x4f,0xf0,0x51,0xe6,0x90,0x91,0x9b,0xe0, +0x60,0x16,0x90,0x91,0x9a,0xe0,0xff,0x74,0x01,0xa8,0x07,0x08,0x80,0x02,0xc3,0x33, +0xd8,0xfc,0xff,0x90,0x00,0x45,0x80,0x66,0x90,0x91,0x9a,0xe0,0xff,0x74,0x01,0xa8, +0x07,0x08,0x80,0x02,0xc3,0x33,0xd8,0xfc,0xf4,0xff,0x90,0x00,0x45,0x80,0x6b,0x90, +0x91,0x9a,0xe0,0x24,0xf8,0xf0,0xe0,0xff,0x74,0x01,0xa8,0x07,0x08,0x80,0x02,0xc3, +0x33,0xd8,0xfc,0xc4,0x54,0xf0,0x51,0xde,0x90,0x91,0x9a,0xe0,0xff,0x74,0x01,0xa8, +0x07,0x08,0x80,0x02,0xc3,0x33,0xd8,0xfc,0xff,0x90,0x00,0x43,0xe0,0x4f,0xf0,0x51, +0xe6,0x90,0x91,0x9b,0xe0,0x60,0x1b,0x90,0x91,0x9a,0xe0,0xff,0x74,0x01,0xa8,0x07, +0x08,0x80,0x02,0xc3,0x33,0xd8,0xfc,0xc4,0x54,0xf0,0xff,0x90,0x00,0x42,0xe0,0x4f, +0x80,0x1a,0x90,0x91,0x9a,0xe0,0xff,0x74,0x01,0xa8,0x07,0x08,0x80,0x02,0xc3,0x33, +0xd8,0xfc,0xc4,0x54,0xf0,0xf4,0xff,0x90,0x00,0x42,0xe0,0x5f,0xf0,0x51,0xe6,0xd0, +0xd0,0x92,0xaf,0x22,0xf0,0x90,0x00,0x45,0xe0,0x54,0xfe,0xfd,0x7f,0x45,0xd3,0x10, +0xaf,0x01,0xc3,0xc0,0xd0,0x8f,0x82,0x75,0x83,0x00,0xed,0xf0,0x51,0xe6,0xd0,0xd0, +0x92,0xaf,0x22,0xef,0x14,0x60,0x30,0x14,0x60,0x66,0x24,0x02,0x60,0x02,0x81,0xaa, +0x90,0x90,0xf3,0x74,0x02,0xf0,0x90,0x00,0x48,0xe0,0x44,0x0c,0xfd,0x7f,0x48,0x71, +0xee,0x90,0x00,0x47,0xe0,0x44,0x08,0xfd,0x7f,0x47,0x71,0xee,0x90,0x00,0x45,0xe0, +0x44,0x10,0xfd,0x7f,0x45,0x80,0x71,0xe4,0x90,0x90,0xf3,0xf0,0x90,0x90,0xef,0x12, +0x43,0x09,0x90,0x80,0x96,0x12,0x25,0x08,0x7f,0x80,0x7e,0x08,0x12,0x2b,0x08,0x90, +0x00,0x45,0xe0,0x44,0xef,0xfd,0x7f,0x45,0x71,0xee,0x90,0x00,0x45,0xe0,0x54,0xef, +0xfd,0x7f,0x45,0x71,0xee,0x90,0x00,0x46,0xe0,0x44,0x10,0xfd,0x7f,0x46,0x80,0x38, +0x90,0x90,0xf3,0x74,0x01,0xf0,0x90,0x90,0xf9,0x12,0x43,0x09,0x90,0x80,0x96,0x12, +0x25,0x08,0x7f,0x80,0x7e,0x08,0x12,0x2b,0x08,0x90,0x00,0x45,0xe0,0x44,0x20,0xfd, +0x7f,0x45,0x71,0xee,0x90,0x00,0x45,0xe0,0x44,0x10,0xfd,0x7f,0x45,0x71,0xee,0x90, +0x00,0x46,0xe0,0x44,0x10,0xfd,0x7f,0x46,0x71,0xee,0x22,0x90,0x00,0x02,0x12,0x42, +0x20,0x90,0x90,0xf5,0xf0,0x90,0x00,0x01,0x12,0x42,0x20,0x25,0xe0,0x25,0xe0,0x90, +0x90,0xf4,0xf0,0x12,0x24,0x62,0x25,0xe0,0x25,0xe0,0x90,0x90,0xf8,0xf0,0x90,0x05, +0x60,0xe0,0x90,0x91,0x03,0xf0,0x90,0x05,0x61,0xe0,0x90,0x91,0x04,0xf0,0x90,0x05, +0x62,0xe0,0x90,0x91,0x05,0xf0,0x90,0x05,0x63,0xe0,0x90,0x91,0x06,0xf0,0xa2,0xaf, +0xe4,0x33,0x90,0x91,0x1c,0xf0,0xc2,0xaf,0x90,0x90,0xf4,0xe0,0xff,0x12,0x6e,0x67, +0x90,0x91,0x1c,0xe0,0x24,0xff,0x92,0xaf,0x90,0x90,0xf5,0xe0,0x70,0x02,0xa1,0xb2, +0x90,0x90,0xf4,0xe0,0x70,0x02,0xa1,0xb2,0x90,0x90,0xf8,0xe0,0x70,0x02,0xa1,0xb2, +0xa2,0xaf,0xe4,0x33,0x90,0x91,0x1c,0xf0,0xc2,0xaf,0x90,0x91,0x07,0x74,0x01,0xf0, +0x90,0x91,0x1c,0xe0,0x24,0xff,0x92,0xaf,0x71,0xe5,0x90,0x00,0x46,0xe0,0x44,0x01, +0xfd,0x7f,0x46,0x71,0xee,0x90,0x90,0xed,0xe0,0x60,0x15,0x90,0x90,0xf9,0x12,0x43, +0x09,0x90,0x80,0x96,0x12,0x25,0x08,0x7f,0x80,0x7e,0x08,0x12,0x2b,0x08,0x80,0x06, +0x90,0x05,0x22,0x74,0x7f,0xf0,0x90,0x00,0x45,0xe0,0x54,0xef,0xfd,0x7f,0x45,0x71, +0xee,0x90,0x05,0x87,0xe0,0x64,0x80,0xf0,0x90,0x91,0x03,0xe0,0x90,0x05,0x84,0xf0, +0x90,0x91,0x04,0xe0,0x90,0x05,0x85,0xf0,0x90,0x91,0x05,0xe0,0x90,0x05,0x86,0xf0, +0x90,0x91,0x06,0xe0,0x90,0x05,0x87,0xf0,0xa2,0xaf,0xe4,0x33,0x90,0x91,0x1c,0xf0, +0xc2,0xaf,0x90,0x01,0x3c,0xe0,0x44,0x20,0xf0,0x7d,0x20,0xe4,0xff,0x12,0x31,0xb7, +0x80,0x2b,0x90,0x90,0xf5,0xe0,0x70,0x2d,0x90,0x91,0x07,0x71,0xe4,0x90,0x00,0x46, +0xe0,0x54,0xfe,0xfd,0x7f,0x46,0x71,0xee,0x90,0x05,0x22,0xe4,0xf0,0xa2,0xaf,0x33, +0x90,0x91,0x1c,0xf0,0xc2,0xaf,0x7d,0x20,0xe4,0xff,0x12,0x31,0x49,0x90,0x91,0x1c, +0xe0,0x24,0xff,0x92,0xaf,0x22,0x8b,0x0e,0x8a,0x0f,0x89,0x10,0x90,0x00,0x02,0x12, +0x42,0x20,0x90,0x90,0xf6,0xf0,0xe0,0x30,0xe0,0x4b,0x90,0x90,0xed,0x74,0x01,0xf0, +0x7f,0x80,0x7e,0x08,0x12,0x22,0x65,0x90,0x90,0xef,0x12,0x25,0x08,0xab,0x0e,0xaa, +0x0f,0xa9,0x10,0x90,0x00,0x01,0x12,0x42,0x20,0xff,0xe4,0xfc,0xfd,0xfe,0x78,0x1a, +0x12,0x24,0xf5,0xa8,0x04,0xa9,0x05,0xaa,0x06,0xab,0x07,0x90,0x90,0xef,0x12,0x43, +0x09,0xec,0x54,0x03,0xfc,0x12,0x42,0xfc,0x90,0x90,0xf9,0x12,0x25,0x08,0x90,0x05, +0x22,0xe4,0xf0,0x80,0x2d,0xe4,0x90,0x90,0xed,0xf0,0x7f,0x80,0x7e,0x08,0x12,0x22, +0x65,0xec,0x54,0x03,0xfc,0xec,0x44,0xc0,0xfc,0x90,0x90,0xef,0x12,0x25,0x08,0x90, +0x90,0xef,0x12,0x43,0x09,0x90,0x80,0x96,0x12,0x25,0x08,0x7f,0x80,0x7e,0x08,0x12, +0x2b,0x08,0x90,0x90,0xf6,0xe0,0x30,0xe1,0x19,0x7d,0x0c,0x7f,0x47,0x71,0xee,0x90, +0x00,0x48,0xe0,0x44,0x0c,0xfd,0x7f,0x48,0x71,0xee,0x90,0x00,0x46,0xe0,0x44,0x10, +0x80,0x1c,0x90,0x00,0x47,0xe0,0x54,0xf3,0xfd,0x7f,0x47,0x71,0xee,0x90,0x00,0x48, +0xe0,0x54,0xf3,0xfd,0x7f,0x48,0x71,0xee,0x90,0x00,0x46,0xe0,0x54,0xef,0xfd,0x7f, +0x46,0x71,0xee,0xe4,0x90,0x90,0xf3,0xf0,0x22,0x90,0x01,0x3c,0x74,0xff,0xf0,0xa3, +0xf0,0xa3,0xf0,0x90,0x01,0x34,0xf0,0xa3,0xf0,0xa3,0xf0,0xa3,0xf0,0xfd,0x7f,0x54, +0x71,0xee,0x7d,0xff,0x7f,0x55,0x71,0xee,0x7d,0xff,0x7f,0x56,0x71,0xee,0x7d,0xff, +0x7f,0x57,0x61,0xee,0x90,0x01,0x30,0xe4,0xf0,0xa3,0xf0,0xa3,0xf0,0xa3,0xf0,0x90, +0x01,0x38,0xf0,0xa3,0xf0,0xa3,0xf0,0xa3,0xf0,0xfd,0x7f,0x50,0x71,0xee,0xe4,0xfd, +0x7f,0x51,0x71,0xee,0xe4,0xfd,0x7f,0x52,0x71,0xee,0xe4,0xfd,0x7f,0x53,0x61,0xee, +0xd3,0x10,0xaf,0x01,0xc3,0xc0,0xd0,0x90,0x91,0x22,0xed,0xf0,0x90,0x91,0x21,0xef, +0xf0,0xd3,0x94,0x07,0x50,0x4e,0xa3,0xe0,0x70,0x1a,0x90,0x91,0x21,0xe0,0xff,0x74, +0x01,0xa8,0x07,0x08,0x80,0x02,0xc3,0x33,0xd8,0xfc,0xf4,0xff,0x90,0x00,0x47,0xe0, +0x5f,0xf0,0x80,0x17,0x90,0x91,0x21,0xe0,0xff,0x74,0x01,0xa8,0x07,0x08,0x80,0x02, +0xc3,0x33,0xd8,0xfc,0xff,0x90,0x00,0x47,0xe0,0x4f,0xf0,0x51,0xe6,0x90,0x91,0x21, +0xe0,0xff,0x74,0x01,0xa8,0x07,0x08,0x80,0x02,0xc3,0x33,0xd8,0xfc,0xf4,0xff,0x90, +0x00,0x46,0x80,0x59,0x90,0x91,0x21,0xe0,0x24,0xf8,0xf0,0xa3,0xe0,0x70,0x1d,0x90, +0x91,0x21,0xe0,0xff,0x74,0x01,0xa8,0x07,0x08,0x80,0x02,0xc3,0x33,0xd8,0xfc,0xc4, +0x54,0xf0,0xf4,0xff,0x90,0x00,0x43,0xe0,0x5f,0xf0,0x80,0x1a,0x90,0x91,0x21,0xe0, +0xff,0x74,0x01,0xa8,0x07,0x08,0x80,0x02,0xc3,0x33,0xd8,0xfc,0xc4,0x54,0xf0,0xff, +0x90,0x00,0x43,0xe0,0x4f,0xf0,0x51,0xe6,0x90,0x91,0x21,0xe0,0xff,0x74,0x01,0xa8, +0x07,0x08,0x80,0x02,0xc3,0x33,0xd8,0xfc,0xf4,0xff,0x90,0x00,0x43,0xe0,0x5f,0xf0, +0x51,0xe6,0xd0,0xd0,0x92,0xaf,0x22,0x90,0x00,0x49,0xe0,0x90,0x91,0x9f,0xf0,0xe0, +0x54,0x0f,0xf0,0x44,0xf0,0xfd,0x7f,0x49,0x71,0xee,0x90,0x91,0x9f,0xe0,0x44,0xb0, +0xfd,0x7f,0x49,0x61,0xee,0x12,0x47,0xe6,0xbf,0x01,0x10,0x90,0x02,0x09,0xe0,0xff, +0x7d,0x01,0x12,0x48,0x22,0x90,0x04,0x1f,0x74,0x20,0xf0,0x22,0x75,0x28,0x33,0xe4, +0xf5,0x29,0x75,0x2a,0x07,0xf5,0x2b,0x90,0x01,0x30,0xe5,0x28,0xf0,0xa3,0xe5,0x29, +0xf0,0xa3,0xe5,0x2a,0xf0,0xa3,0xe5,0x2b,0xf0,0x22,0xe4,0x90,0x91,0x0e,0xf0,0xa3, +0xf0,0x75,0x8e,0x02,0xf1,0x25,0xd1,0xe8,0x90,0x91,0x4f,0xef,0xf0,0xf1,0x0b,0x90, +0x91,0x51,0xef,0xf0,0xf1,0x60,0x90,0x91,0x3d,0xee,0xf0,0xa3,0xef,0xf0,0xe4,0xf5, +0x57,0xf1,0x02,0x12,0x61,0xc4,0x12,0x2e,0x01,0x12,0x44,0xff,0x11,0x0c,0xf1,0x36, +0xd1,0xfb,0xd1,0xd0,0x12,0x44,0xfe,0x31,0x13,0x12,0x44,0xf4,0x12,0x6e,0x09,0x90, +0x91,0x10,0xe5,0xd9,0xf0,0x12,0x4e,0xb9,0xc2,0xaf,0x90,0x00,0x80,0xe0,0x44,0x40, +0xf0,0x12,0x4a,0xe6,0x75,0xe8,0x03,0x43,0xa8,0x85,0xd2,0xaf,0x90,0x91,0x0e,0xe0, +0x64,0x01,0xf0,0x24,0x2a,0x90,0x01,0xc4,0xf0,0x74,0x50,0xa3,0xf0,0xe5,0x57,0x30, +0xe2,0x10,0x12,0x5f,0xf0,0xbf,0x01,0x0a,0xc2,0xaf,0x53,0x57,0xfb,0xd2,0xaf,0x12, +0x71,0x97,0xe5,0x57,0x30,0xe4,0x0a,0xc2,0xaf,0x53,0x57,0xef,0xd2,0xaf,0x12,0x60, +0x2d,0x90,0x90,0xf7,0xe0,0x70,0x03,0x12,0x70,0x74,0x11,0xe7,0x90,0x91,0x3f,0xe0, +0x90,0x01,0xba,0xf0,0x80,0xb6,0xe4,0x90,0x91,0x55,0xf0,0x90,0x91,0x53,0xe0,0x54, +0x7f,0xf0,0xa3,0x74,0x0a,0xf0,0x22,0x90,0x06,0x34,0xe0,0x60,0x25,0x14,0x70,0x1b, +0x7b,0x01,0x7a,0x06,0x79,0x35,0x7f,0xf9,0x7e,0x01,0x12,0x67,0xe4,0xbf,0x01,0x09, +0x90,0x06,0x35,0xe0,0x54,0x0f,0xf0,0x80,0x04,0x80,0x00,0xe1,0x17,0xe4,0x90,0x06, +0x34,0xf0,0x22,0x90,0x91,0x56,0xe0,0x54,0xfe,0xf0,0xe0,0x54,0x7f,0xf0,0x90,0x01, +0x17,0xe0,0xfe,0x90,0x01,0x16,0xe0,0x7c,0x00,0x24,0x00,0xff,0xec,0x3e,0x90,0x91, +0x5c,0xf0,0xa3,0xef,0xf0,0x90,0x01,0x04,0xe0,0x54,0x0f,0x90,0x91,0x1c,0xf0,0xe0, +0xff,0x74,0x40,0x7e,0x00,0xa8,0x07,0x08,0x80,0x05,0xc3,0x33,0xce,0x33,0xce,0xd8, +0xf9,0x90,0x91,0x5b,0xf0,0xee,0x90,0x91,0x5a,0xf0,0x90,0x91,0x5e,0xe0,0x54,0xfe, +0xf0,0xe0,0x54,0xfd,0xf0,0xe0,0x54,0xfb,0xf0,0xe0,0x54,0xf7,0xf0,0xe0,0x54,0xef, +0xf0,0xe0,0x54,0xdf,0xf0,0xe0,0x54,0xbf,0xf0,0xe0,0x54,0x7f,0xf0,0xe4,0xa3,0xf0, +0xa3,0xf0,0xa3,0xe0,0x54,0xfe,0xf0,0xe0,0x54,0xfd,0xf0,0xe0,0x54,0xf7,0xf0,0x22, +0xd3,0x10,0xaf,0x01,0xc3,0xc0,0xd0,0x12,0x24,0x62,0x54,0x01,0xff,0x90,0x91,0x56, +0xe0,0x54,0xfe,0x4f,0xf0,0x90,0x00,0x01,0x12,0x42,0x20,0x90,0x91,0x57,0xf0,0x90, +0x00,0x02,0x12,0x42,0x20,0x90,0x91,0x58,0xf0,0x90,0x91,0x56,0xe0,0x30,0xe0,0x1a, +0x90,0x06,0x09,0xe0,0x54,0xfe,0xf0,0x90,0x02,0x86,0xe0,0x44,0x04,0xf0,0x43,0x57, +0x04,0x7d,0x08,0xe4,0xff,0x12,0x31,0x9d,0x80,0x12,0x7d,0x08,0xe4,0xff,0x12,0x31, +0x2c,0x90,0x02,0x86,0xe0,0x54,0xfb,0xf0,0x31,0xf1,0x31,0x13,0xd0,0xd0,0x92,0xaf, +0x22,0x90,0x06,0x90,0xe4,0xf0,0x21,0x5a,0x90,0x91,0x19,0x12,0x43,0x41,0xef,0x12, +0x43,0x4a,0x52,0x30,0x01,0x52,0x39,0x02,0x52,0x5b,0x03,0x52,0x64,0x09,0x52,0x6c, +0x0c,0x52,0x75,0x0d,0x52,0x7d,0x0e,0x52,0x8e,0x1a,0x52,0x96,0x2c,0x52,0x41,0x2d, +0x52,0x4a,0x2e,0x52,0x9e,0x30,0x52,0x53,0x3b,0x52,0x86,0x3c,0x00,0x00,0x52,0xa6, +0x90,0x91,0x19,0x12,0x43,0x21,0x02,0x64,0x72,0x90,0x91,0x19,0x12,0x43,0x21,0xc1, +0xf5,0x90,0x91,0x19,0x12,0x43,0x21,0x02,0x65,0x8d,0x90,0x91,0x19,0x12,0x43,0x21, +0x02,0x65,0xd5,0x90,0x91,0x19,0x12,0x43,0x21,0xe1,0x4b,0x90,0x91,0x19,0x12,0x43, +0x21,0x02,0x66,0x0e,0x90,0x91,0x19,0x12,0x43,0x21,0x80,0x42,0x90,0x91,0x19,0x12, +0x43,0x21,0x02,0x4c,0xab,0x90,0x91,0x19,0x12,0x43,0x21,0xe1,0x98,0x90,0x91,0x19, +0x12,0x43,0x21,0x02,0x4d,0xe6,0x90,0x91,0x19,0x12,0x43,0x21,0x21,0x90,0x90,0x91, +0x19,0x12,0x43,0x21,0xa1,0x9b,0x90,0x91,0x19,0x12,0x43,0x21,0x81,0x7a,0x90,0x91, +0x19,0x12,0x43,0x21,0xe1,0x78,0x90,0x01,0xc6,0xe0,0x44,0x01,0xf0,0x22,0xd3,0x10, +0xaf,0x01,0xc3,0xc0,0xd0,0x90,0x91,0x1c,0x12,0x43,0x41,0x90,0x91,0x1c,0x12,0x43, +0x21,0x90,0x00,0x01,0x12,0x42,0x97,0xfa,0xe5,0xf0,0x24,0x00,0xff,0xe4,0x3a,0xfe, +0x90,0x91,0x1c,0x12,0x43,0x21,0x90,0x00,0x01,0xee,0x8f,0xf0,0x12,0x42,0xcf,0x12, +0x24,0x62,0xff,0x60,0x2c,0xb5,0x72,0x16,0x90,0x91,0x1c,0x12,0x43,0x21,0x90,0x00, +0x01,0x12,0x42,0x97,0x65,0x74,0x70,0x04,0xe5,0x73,0x65,0xf0,0x60,0x23,0x90,0x91, +0x1c,0x12,0x43,0x21,0x90,0x00,0x01,0x12,0x42,0x97,0xff,0xae,0xf0,0x71,0x26,0x80, +0x10,0x90,0x91,0x1c,0x12,0x43,0x21,0x12,0x24,0x62,0x65,0x72,0x60,0x03,0x12,0x44, +0xe8,0xd0,0xd0,0x92,0xaf,0x22,0x90,0x91,0x1f,0xee,0xf0,0xa3,0xef,0xf0,0x75,0x72, +0x01,0x8e,0x73,0xf5,0x74,0xe4,0xfd,0x7f,0x0b,0x12,0x4f,0x10,0xe4,0xfd,0x7f,0x02, +0x12,0x4f,0x10,0x71,0x6a,0xe4,0xff,0x71,0xcc,0xe4,0xf5,0x76,0x90,0x01,0xc9,0xe5, +0x76,0xf0,0x90,0x91,0x1f,0xe0,0xfc,0xa3,0xe0,0xfd,0xec,0xfb,0x8d,0x44,0xe4,0xf5, +0x45,0x7d,0x01,0x7f,0x60,0x7e,0x01,0x02,0x30,0x62,0x7f,0x0b,0x71,0xd9,0xef,0x65, +0x75,0x60,0x10,0xe5,0x75,0xb4,0x01,0x05,0xe4,0xf5,0x75,0x80,0x03,0x75,0x75,0x01, +0x7f,0x01,0x22,0x7f,0x00,0x22,0xe5,0x72,0x64,0x01,0x70,0x3f,0x71,0x6a,0xbf,0x01, +0x04,0x7f,0x01,0x71,0xcc,0x90,0x00,0x46,0xe0,0x44,0x04,0xfd,0x7f,0x46,0x12,0x4b, +0xee,0x90,0x00,0x44,0xe0,0x54,0xfb,0xfd,0x7f,0x44,0x12,0x4b,0xee,0x90,0x00,0x46, +0xe0,0x54,0xfb,0xfd,0x7f,0x46,0x12,0x4b,0xee,0x7f,0x02,0x71,0xd9,0x8f,0x76,0x90, +0x01,0xc9,0xe5,0x76,0xf0,0xb4,0x01,0x03,0x12,0x4f,0xd7,0x22,0x90,0x01,0xca,0xe5, +0x75,0xf0,0xef,0x60,0x03,0x12,0x4f,0xd7,0x22,0xd3,0x10,0xaf,0x01,0xc3,0xc0,0xd0, +0x90,0x91,0xa0,0xef,0xf0,0xd3,0x94,0x07,0x50,0x47,0xe0,0xff,0x74,0x01,0xa8,0x07, +0x08,0x80,0x02,0xc3,0x33,0xd8,0xfc,0xf4,0xff,0x90,0x00,0x46,0xe0,0x5f,0xf0,0x12, +0x4a,0xe6,0x90,0x91,0xa0,0xe0,0xfd,0x74,0x01,0x7e,0x00,0xa8,0x05,0x08,0x80,0x05, +0xc3,0x33,0xce,0x33,0xce,0xd8,0xf9,0xff,0x90,0x00,0x44,0xe0,0xfb,0xe4,0xfe,0xef, +0x5b,0xa8,0x05,0x08,0x80,0x06,0xce,0xa2,0xe7,0x13,0xce,0x13,0xd8,0xf8,0xff,0x80, +0x44,0x90,0x91,0xa0,0xe0,0x24,0xf8,0xf0,0xe0,0xff,0x74,0x01,0xa8,0x07,0x08,0x80, +0x02,0xc3,0x33,0xd8,0xfc,0x12,0x4a,0xde,0x90,0x91,0xa0,0xe0,0xfd,0x74,0x01,0x7e, +0x00,0xa8,0x05,0x08,0x80,0x05,0xc3,0x33,0xce,0x33,0xce,0xd8,0xf9,0xff,0x90,0x00, +0x42,0xe0,0xfb,0xe4,0xfe,0xef,0x5b,0xa8,0x05,0x08,0x80,0x06,0xce,0xa2,0xe7,0x13, +0xce,0x13,0xd8,0xf8,0xff,0xd0,0xd0,0x92,0xaf,0x22,0xd3,0x10,0xaf,0x01,0xc3,0xc0, +0xd0,0xe4,0xf5,0x10,0x75,0x11,0x04,0xf5,0x12,0xf5,0x14,0xf5,0x15,0x90,0x02,0x09, +0xe0,0xff,0x12,0x24,0x62,0xfe,0xef,0x2e,0xf5,0x13,0x30,0xe0,0x08,0x75,0x0e,0x00, +0x75,0x0f,0x80,0x80,0x05,0xe4,0xf5,0x0e,0xf5,0x0f,0xe5,0x13,0xc3,0x13,0x90,0xfd, +0x10,0xf0,0x74,0x20,0x25,0x10,0xf5,0x10,0xad,0x0f,0xe5,0x10,0x2d,0xff,0x24,0x01, +0xf5,0x82,0xe4,0x34,0xfc,0xf5,0x83,0xe0,0x90,0x91,0x47,0xf0,0x74,0x02,0x2f,0xf5, +0x82,0xe4,0x34,0xfc,0xf5,0x83,0xe0,0xfe,0xe5,0x10,0x2d,0x24,0x03,0xf5,0x82,0xe4, +0x34,0xfc,0xf5,0x83,0xe0,0x24,0x00,0xff,0xe4,0x3e,0x90,0x91,0x48,0xf0,0xa3,0xef, +0xf0,0x7f,0x04,0xe5,0x10,0x25,0x0f,0x2f,0x24,0x00,0xf5,0x82,0xe4,0x34,0xfc,0xf5, +0x83,0xe0,0xfe,0x74,0x46,0x2f,0xf5,0x82,0xe4,0x34,0x91,0xf5,0x83,0xee,0xf0,0x0f, +0xbf,0x08,0xe0,0x12,0x66,0x56,0xef,0x70,0x3f,0x90,0x01,0xc3,0xe0,0x60,0x25,0xc3, +0xe5,0x15,0x94,0xe8,0xe5,0x14,0x94,0x03,0x40,0x09,0x90,0x01,0xc6,0xe0,0x44,0x10, +0xf0,0x80,0x63,0x05,0x15,0xe5,0x15,0x70,0x02,0x05,0x14,0x7f,0x0a,0x7e,0x00,0x12, +0x32,0x15,0x80,0xd5,0x90,0x01,0xc6,0xe0,0x90,0x01,0xc3,0x30,0xe2,0x05,0x74,0xfe, +0xf0,0x80,0x43,0x74,0xff,0xf0,0x80,0x3e,0xe5,0x10,0xb4,0x78,0x23,0xe4,0xf5,0x10, +0x05,0x13,0xe5,0x0f,0x64,0x80,0x45,0x0e,0x70,0x06,0xf5,0x0e,0xf5,0x0f,0x80,0x06, +0x75,0x0e,0x00,0x75,0x0f,0x80,0xe5,0x13,0xc3,0x13,0x90,0xfd,0x10,0xf0,0x80,0x06, +0x74,0x08,0x25,0x10,0xf5,0x10,0xe5,0x12,0x15,0x12,0x70,0x02,0x15,0x11,0xe5,0x12, +0x45,0x11,0x60,0x02,0x81,0xb8,0xd0,0xd0,0x92,0xaf,0x22,0x90,0x91,0x1c,0x12,0x43, +0x41,0x12,0x24,0x62,0xff,0x54,0x01,0xfe,0x90,0x91,0x5e,0xe0,0x54,0xfe,0x4e,0xf0, +0xef,0x54,0x04,0xff,0xe0,0x54,0xfb,0x4f,0xf0,0x12,0x24,0x62,0xff,0x54,0x02,0xfe, +0x90,0x91,0x5e,0xe0,0x54,0xfd,0x4e,0xf0,0xef,0x54,0x08,0xff,0xe0,0x54,0xf7,0x4f, +0xf0,0x12,0x24,0x62,0xff,0x54,0x10,0xfe,0x90,0x91,0x5e,0xe0,0x54,0xef,0x4e,0xf0, +0xef,0x54,0x20,0xff,0xe0,0x54,0xdf,0x4f,0xf0,0x12,0x24,0x62,0xff,0x54,0x40,0xfe, +0x90,0x91,0x5e,0xe0,0x54,0xbf,0x4e,0xf0,0xef,0x54,0x80,0xff,0xe0,0x54,0x7f,0x4f, +0xf0,0x90,0x00,0x02,0x12,0x42,0x20,0x90,0x91,0x60,0xf0,0x90,0x00,0x01,0x12,0x42, +0x20,0x90,0x91,0x5f,0xf0,0x90,0x00,0x03,0x12,0x42,0x20,0xff,0x54,0x01,0xfe,0x90, +0x91,0x61,0xe0,0x54,0xfe,0x4e,0xf0,0xef,0x54,0x02,0xff,0xe0,0x54,0xfd,0x4f,0xf0, +0x90,0x00,0x03,0x12,0x42,0x20,0x54,0x04,0xff,0x90,0x91,0x61,0xe0,0x54,0xfb,0x4f, +0xf0,0x90,0x91,0x5e,0xe0,0x54,0x01,0x90,0x01,0xb8,0xf0,0x90,0x91,0x5e,0xe0,0xff, +0xc4,0x13,0x54,0x01,0x90,0x01,0xb9,0xf0,0x90,0x91,0x61,0xe0,0x54,0x01,0x90,0x01, +0xba,0xf0,0xa3,0x74,0xff,0xf0,0x12,0x24,0x62,0x20,0xe0,0x02,0x21,0xf1,0xe4,0xfd, +0x7f,0x81,0x12,0x4b,0xee,0x90,0x91,0x1c,0x12,0x43,0x21,0x12,0x24,0x62,0xff,0xc3, +0x13,0x30,0xe0,0x07,0x90,0x06,0x90,0xe0,0x44,0x02,0xf0,0xef,0x13,0x13,0x54,0x3f, +0x30,0xe0,0x07,0x90,0x06,0x90,0xe0,0x44,0x04,0xf0,0x12,0x24,0x62,0x13,0x13,0x13, +0x54,0x1f,0x30,0xe0,0x07,0x90,0x06,0x90,0xe0,0x44,0x08,0xf0,0x90,0x91,0x61,0xe0, +0x30,0xe0,0x1c,0x90,0x91,0x5e,0xe0,0xc4,0x13,0x54,0x07,0x30,0xe0,0x07,0xa3,0xe0, +0xff,0xe4,0xfd,0x80,0x07,0x90,0x91,0x5f,0xe0,0xff,0x7d,0x01,0x12,0x4a,0xf6,0x22, +0x75,0x30,0x1f,0x75,0x31,0x01,0xe4,0xf5,0x32,0x90,0x01,0x38,0xe5,0x30,0xf0,0xa3, +0xe5,0x31,0xf0,0xa3,0xe5,0x32,0xf0,0x22,0x90,0x00,0x02,0xe0,0x54,0xe0,0x7f,0x01, +0x60,0x02,0x7f,0x00,0x22,0x12,0x24,0x62,0xf5,0x6d,0x22,0x90,0x01,0x64,0x74,0xa0, +0xf0,0x22,0x90,0x91,0x51,0xe0,0x90,0x90,0xe8,0xf0,0x22,0x90,0x00,0xf3,0xe0,0x7f, +0x00,0x30,0xe3,0x02,0x7f,0x01,0x22,0x90,0x06,0x34,0x74,0xff,0xf0,0xe4,0xa3,0xf0, +0xa3,0xf0,0xa3,0xf0,0x22,0xe4,0x90,0x91,0x4e,0xf0,0x90,0x00,0x80,0xe0,0x44,0x80, +0xfd,0x7f,0x80,0x02,0x4b,0xee,0x90,0x00,0xf3,0xe0,0x30,0xe2,0x0d,0x90,0x05,0x41, +0x74,0x10,0xf0,0x90,0x05,0x5a,0xf0,0xa3,0xe4,0xf0,0x22,0x12,0x24,0x62,0x60,0x02, +0x80,0x01,0xe4,0x90,0x91,0x31,0xf0,0x90,0x91,0x31,0xe0,0x90,0x01,0xe7,0xf0,0x22, +0x90,0x91,0x51,0xe0,0xb4,0x01,0x0c,0x90,0x00,0xf2,0xe0,0x30,0xe7,0x05,0x7e,0xfd, +0x7f,0x33,0x22,0x7e,0xfd,0x7f,0x2f,0x22,0x12,0x24,0x62,0xff,0x54,0x01,0xfe,0x90, +0x91,0x53,0xe0,0x54,0xfe,0x4e,0xf0,0xef,0xc3,0x13,0x30,0xe0,0x0a,0x90,0x00,0x01, +0x12,0x42,0x20,0x90,0x91,0x54,0xf0,0x22,0x90,0x00,0x02,0x12,0x42,0x20,0x90,0x90, +0xf7,0xf0,0xe0,0x60,0x04,0xe0,0xf4,0x70,0x21,0xa2,0xaf,0xe4,0x33,0xf5,0x0e,0xc2, +0xaf,0x90,0x00,0x47,0xe0,0x54,0xfb,0xfd,0x7f,0x47,0x12,0x4b,0xee,0x7d,0x40,0x7f, +0x01,0x12,0x31,0x66,0xe5,0x0e,0x24,0xff,0x92,0xaf,0x22,0xc0,0xe0,0xc0,0xf0,0xc0, +0x83,0xc0,0x82,0xc0,0xd0,0x75,0xd0,0x00,0xc0,0x00,0xc0,0x01,0xc0,0x02,0xc0,0x03, +0xc0,0x04,0xc0,0x05,0xc0,0x06,0xc0,0x07,0x90,0x01,0xc4,0x74,0xcb,0xf0,0x74,0x57, +0xa3,0xf0,0x90,0x01,0x34,0xe0,0x55,0x28,0xf5,0x2c,0x90,0x01,0x36,0xe0,0x55,0x2a, +0xf5,0x2e,0xa3,0xe0,0x55,0x2b,0xf5,0x2f,0xe5,0x2c,0x30,0xe0,0x5a,0x90,0x01,0x34, +0x74,0x01,0xf0,0x85,0xd9,0x54,0xe5,0x70,0x14,0x24,0xfd,0x50,0x02,0x80,0x48,0x90, +0x91,0x3b,0xe0,0x60,0x3a,0x90,0x01,0x5b,0xe4,0xf0,0x90,0x01,0x3c,0x74,0x04,0xf0, +0x51,0x30,0xef,0x64,0x01,0x70,0x30,0x90,0x91,0x66,0xf0,0x90,0x91,0x2d,0xe0,0x90, +0x91,0x67,0xf0,0xe4,0xfb,0xfd,0x7f,0x58,0x7e,0x01,0x12,0x44,0x59,0x90,0x01,0x5b, +0x74,0x05,0xf0,0x90,0x06,0x92,0x74,0x01,0xf0,0x90,0x91,0x37,0xf0,0x80,0x08,0x51, +0x30,0xbf,0x01,0x03,0x12,0x44,0xc2,0xe5,0x2c,0x30,0xe1,0x20,0x90,0x01,0x34,0x74, +0x02,0xf0,0x85,0xd1,0x58,0x85,0xd2,0x59,0x85,0xd3,0x5a,0x85,0xd4,0x5b,0x85,0xd5, +0x5c,0x85,0xd6,0x5d,0x85,0xd7,0x5e,0x85,0xd9,0x5f,0x71,0x5c,0xe5,0x2c,0x30,0xe3, +0x10,0x90,0x01,0x34,0x74,0x08,0xf0,0x90,0x91,0x56,0xe0,0x30,0xe0,0x03,0x43,0x57, +0x04,0xe5,0x2c,0x30,0xe4,0x09,0x90,0x01,0x34,0x74,0x10,0xf0,0x43,0x57,0x10,0xe5, +0x2c,0x30,0xe5,0x26,0x90,0x01,0xcf,0xe0,0x30,0xe5,0x1f,0xe0,0x54,0xdf,0xf0,0x90, +0x01,0x34,0x74,0x20,0xf0,0x75,0xa8,0x00,0x75,0xe8,0x00,0x12,0x4e,0xe4,0x90,0x00, +0x03,0xe0,0x54,0xfb,0xf0,0x12,0x4a,0xe6,0x80,0xfe,0xe5,0x2c,0x30,0xe6,0x06,0x90, +0x01,0x34,0x74,0x40,0xf0,0xe5,0x2e,0x30,0xe0,0x13,0x90,0x91,0x50,0x74,0x01,0xf0, +0x90,0x01,0x36,0xf0,0x91,0x23,0x51,0x87,0x90,0x91,0x50,0xe4,0xf0,0xe5,0x2e,0x30, +0xe1,0x3c,0x90,0x01,0x36,0x74,0x02,0xf0,0x43,0x57,0x40,0x90,0x01,0x02,0xe0,0x54, +0x03,0x64,0x01,0x70,0x29,0x90,0x01,0x37,0xe0,0x30,0xe0,0x0a,0x74,0x01,0xf0,0x90, +0x91,0x40,0xe4,0xf0,0x80,0x18,0x90,0x91,0x40,0xe0,0x04,0xf0,0xe0,0xc3,0x94,0x0a, +0x40,0x0c,0xe4,0xf0,0x90,0x04,0x19,0xe0,0x30,0xe0,0x03,0x12,0x4f,0xf5,0xe5,0x2e, +0x30,0xe2,0x19,0x90,0x01,0x36,0x74,0x04,0xf0,0x90,0x91,0x3a,0xe4,0xf0,0x90,0x05, +0x58,0x74,0x03,0xf0,0x51,0xd8,0x90,0x91,0x3f,0xe0,0x04,0xf0,0xe5,0x2e,0x30,0xe3, +0x28,0x90,0x01,0x36,0x74,0x08,0xf0,0xe5,0x6d,0x64,0x01,0x70,0x1c,0xe5,0x70,0x60, +0x18,0x90,0x01,0x57,0xe4,0xf0,0x90,0x01,0x3c,0x74,0x02,0xf0,0x90,0x91,0x66,0xe4, +0x12,0x44,0x49,0x90,0x01,0x57,0x74,0x05,0xf0,0xe5,0x2e,0x30,0xe4,0x2b,0x90,0x01, +0x36,0x74,0x10,0xf0,0xe5,0x6d,0xb4,0x01,0x20,0xe5,0x70,0x60,0x1c,0x90,0x01,0x57, +0xe4,0xf0,0x90,0x01,0x3c,0x74,0x02,0xf0,0x90,0x91,0x3c,0xe4,0xf0,0x53,0x71,0xfd, +0xe5,0x71,0x54,0x07,0x70,0x03,0x12,0x44,0xc2,0xe5,0x2e,0x30,0xe5,0x1f,0x90,0x01, +0x36,0x74,0x20,0xf0,0xe5,0x6d,0xb4,0x01,0x14,0xe5,0x70,0x60,0x10,0x90,0x91,0x3b, +0xe0,0x64,0x02,0x60,0x05,0x12,0x44,0xc8,0x80,0x03,0x12,0x44,0x77,0xe5,0x2e,0x30, +0xe6,0x1b,0x90,0x01,0x36,0x74,0x40,0xf0,0xe5,0x6d,0xb4,0x01,0x10,0xe5,0x70,0x60, +0x0c,0x53,0x71,0xfe,0xe5,0x71,0x54,0x07,0x70,0x03,0x12,0x44,0xc2,0xe5,0x2f,0x30, +0xe1,0x08,0x90,0x01,0x37,0x74,0x02,0xf0,0x71,0x7e,0x74,0xcb,0x04,0x90,0x01,0xc4, +0xf0,0x74,0x57,0xa3,0xf0,0xd0,0x07,0xd0,0x06,0xd0,0x05,0xd0,0x04,0xd0,0x03,0xd0, +0x02,0xd0,0x01,0xd0,0x00,0xd0,0xd0,0xd0,0x82,0xd0,0x83,0xd0,0xf0,0xd0,0xe0,0x32, +0x90,0x04,0x1b,0xe0,0x54,0x7f,0x64,0x7f,0x7f,0x01,0x60,0x02,0x7f,0x00,0x22,0x51, +0x30,0xef,0x64,0x01,0x60,0x08,0x90,0x01,0xb9,0x74,0x01,0xf0,0x80,0x30,0x90,0x91, +0x37,0xe0,0x60,0x08,0x90,0x01,0xb9,0x74,0x02,0xf0,0x80,0x22,0x90,0x91,0x36,0xe0, +0x60,0x08,0x90,0x01,0xb9,0x74,0x04,0xf0,0x80,0x14,0xe5,0x6f,0x54,0x0f,0xd3,0x94, +0x04,0x40,0x08,0x90,0x01,0xb9,0x74,0x08,0xf0,0x80,0x03,0x7f,0x01,0x22,0x90,0x01, +0xb8,0x74,0x08,0xf0,0x7f,0x00,0x22,0x90,0x91,0x53,0xe0,0x30,0xe0,0x49,0xe5,0x6d, +0x64,0x01,0x70,0x43,0x90,0x91,0x52,0xe0,0x04,0xf0,0xe5,0x70,0x64,0x03,0x60,0x05, +0xe5,0x70,0xb4,0x06,0x0d,0x90,0x91,0x52,0xe0,0xff,0x74,0x01,0xd3,0x9f,0x50,0x14, +0x80,0x07,0x90,0x91,0x52,0xe0,0xb4,0x0a,0x0b,0x90,0x91,0x55,0xe0,0x04,0xf0,0xe4, +0x90,0x91,0x52,0xf0,0x90,0x91,0x55,0xe0,0xff,0x90,0x91,0x54,0xe0,0xb5,0x07,0x07, +0x71,0x4e,0xe4,0x90,0x91,0x55,0xf0,0x22,0xe5,0x6d,0x64,0x01,0x70,0x63,0xe5,0x70, +0x60,0x5f,0xe5,0x70,0x64,0x02,0x60,0x06,0xe5,0x70,0x64,0x05,0x70,0x27,0x90,0x06, +0xab,0xe0,0x90,0x91,0x27,0xf0,0x90,0x06,0xaa,0xe0,0x90,0x91,0x39,0xf0,0x90,0x91, +0x27,0xe0,0x70,0x07,0x90,0x91,0x39,0xe0,0xff,0x80,0x05,0x90,0x91,0x27,0xe0,0xff, +0x90,0x91,0x27,0xef,0xf0,0x90,0x91,0x29,0xe0,0x60,0x03,0xe0,0x14,0xf0,0xe4,0x90, +0x91,0x28,0xf0,0x90,0x01,0x57,0xf0,0x90,0x01,0x3c,0x74,0x02,0xf0,0x53,0x71,0xfd, +0x53,0x71,0xef,0xe5,0x70,0x14,0x24,0xfd,0x50,0x02,0x80,0x03,0x12,0x45,0xc7,0x71, +0x42,0x22,0xd3,0x10,0xaf,0x01,0xc3,0xc0,0xd0,0xd0,0xd0,0x92,0xaf,0x22,0xe5,0x6e, +0x30,0xe3,0x04,0xe4,0xff,0x80,0x02,0x7f,0x01,0x02,0x47,0xc9,0x90,0x91,0x08,0xe0, +0x54,0xf0,0x44,0x03,0xf0,0x54,0x0f,0x44,0x80,0xf0,0x7b,0x00,0x7a,0x00,0x79,0x58, +0x90,0x91,0x71,0x12,0x43,0x41,0x0b,0x7a,0x91,0x79,0x08,0x02,0x46,0xb7,0x90,0x91, +0x80,0x12,0x25,0x14,0x00,0x00,0x00,0x00,0xe5,0x70,0x14,0x24,0xfd,0x50,0x02,0x80, +0x21,0x90,0x91,0x3b,0xe0,0x60,0x06,0x7d,0x01,0x7f,0x0c,0x80,0x0d,0xe5,0x6e,0x54, +0x0f,0xc3,0x94,0x04,0x50,0x07,0x7d,0x01,0x7f,0x04,0x12,0x47,0x27,0xe4,0xff,0x12, +0x48,0xb3,0x22,0x51,0x30,0xef,0x64,0x01,0x60,0x08,0x90,0x01,0xb9,0x74,0x01,0xf0, +0x80,0x58,0xe5,0x71,0x54,0x03,0x60,0x08,0x90,0x01,0xb9,0x74,0x02,0xf0,0x80,0x4a, +0xe5,0x6f,0x54,0x0f,0xd3,0x94,0x02,0x40,0x08,0x90,0x01,0xb9,0x74,0x04,0xf0,0x80, +0x39,0xe5,0x71,0x30,0xe2,0x08,0x90,0x01,0xb9,0x74,0x08,0xf0,0x80,0x2c,0xe5,0x71, +0x30,0xe4,0x08,0x90,0x01,0xb9,0x74,0x10,0xf0,0x80,0x1f,0x90,0x91,0x29,0xe0,0x60, +0x08,0x90,0x01,0xb9,0x74,0x20,0xf0,0x80,0x11,0x90,0x91,0x31,0xe0,0x60,0x08,0x90, +0x01,0xb9,0x74,0x80,0xf0,0x80,0x03,0x7f,0x01,0x22,0x90,0x01,0xb8,0x74,0x04,0xf0, +0x7f,0x00,0x22,0xe4,0xfb,0x90,0x91,0x78,0x12,0x25,0x14,0x00,0x00,0x00,0x00,0xe5, +0x70,0x70,0x02,0x81,0xb5,0xe5,0x6d,0x64,0x01,0x70,0x7a,0xe5,0x70,0x14,0x60,0x2b, +0x24,0xfd,0x60,0x27,0x24,0x02,0x24,0xfb,0x50,0x02,0x80,0x21,0x90,0x91,0x27,0xe0, +0x14,0xf0,0xe0,0x60,0x04,0xa3,0xe0,0x60,0x14,0x90,0x91,0x27,0xe0,0x70,0x08,0x90, +0x91,0x39,0xe0,0x90,0x91,0x27,0xf0,0x7b,0x01,0x80,0x02,0x7b,0x01,0xeb,0x60,0x45, +0x43,0x71,0x10,0xe4,0x90,0x91,0x66,0xf0,0x90,0x91,0x3a,0xe0,0x75,0xf0,0x05,0xa4, +0xff,0x90,0x91,0x34,0xe0,0x2f,0x12,0x44,0x4e,0x90,0x01,0x57,0x74,0x05,0xf0,0xe5, +0x6e,0x54,0x0f,0xc3,0x94,0x04,0x50,0x07,0x7d,0x01,0x7f,0x04,0x12,0x47,0x27,0x90, +0x91,0x2e,0xe0,0x60,0x10,0x90,0x91,0x2c,0xe0,0x90,0x07,0x78,0x60,0x04,0x74,0x0d, +0xf0,0x22,0x74,0x09,0xf0,0x22,0xc0,0xe0,0xc0,0xf0,0xc0,0x83,0xc0,0x82,0xc0,0xd0, +0x75,0xd0,0x00,0xc0,0x00,0xc0,0x01,0xc0,0x02,0xc0,0x03,0xc0,0x04,0xc0,0x05,0xc0, +0x06,0xc0,0x07,0x90,0x01,0xc4,0x74,0xb6,0xf0,0x74,0x5c,0xa3,0xf0,0x53,0x91,0xef, +0x90,0x00,0x51,0xe0,0xff,0x90,0x00,0x55,0xe0,0x5f,0xf5,0x3d,0x90,0x00,0x52,0xe0, +0xff,0x90,0x00,0x56,0xe0,0x5f,0xf5,0x3e,0xe5,0x3d,0x30,0xe4,0x06,0x90,0x00,0x55, +0x74,0x10,0xf0,0xe5,0x3d,0x30,0xe5,0x06,0x90,0x00,0x55,0x74,0x20,0xf0,0xe5,0x3d, +0x30,0xe6,0x1b,0x90,0x00,0x55,0x74,0x40,0xf0,0x90,0x90,0xf6,0xe0,0x54,0x03,0xff, +0xbf,0x03,0x0b,0x90,0x90,0xf3,0xe0,0x60,0x05,0x7f,0x01,0x12,0x4c,0x03,0xe5,0x3d, +0x30,0xe7,0x15,0x90,0x00,0x55,0x74,0x80,0xf0,0x90,0x90,0xf6,0xe0,0x54,0x03,0xff, +0xbf,0x03,0x05,0x7f,0x02,0x12,0x4c,0x03,0xe5,0x3e,0x30,0xe0,0x06,0x90,0x00,0x56, +0x74,0x01,0xf0,0xe5,0x3e,0x30,0xe1,0x06,0x90,0x00,0x56,0x74,0x02,0xf0,0xe5,0x3e, +0x30,0xe2,0x06,0x90,0x00,0x56,0x74,0x04,0xf0,0xe5,0x3e,0x30,0xe3,0x06,0x90,0x00, +0x56,0x74,0x08,0xf0,0x90,0x01,0xc4,0x74,0xb6,0xf0,0x74,0x5c,0xa3,0xf0,0xd0,0x07, +0xd0,0x06,0xd0,0x05,0xd0,0x04,0xd0,0x03,0xd0,0x02,0xd0,0x01,0xd0,0x00,0xd0,0xd0, +0xd0,0x82,0xd0,0x83,0xd0,0xf0,0xd0,0xe0,0x32,0xc0,0xe0,0xc0,0xf0,0xc0,0x83,0xc0, +0x82,0xc0,0xd0,0x75,0xd0,0x00,0xc0,0x00,0xc0,0x01,0xc0,0x02,0xc0,0x03,0xc0,0x04, +0xc0,0x05,0xc0,0x06,0xc0,0x07,0x75,0x0d,0x00,0x90,0x01,0xc4,0x74,0x99,0xf0,0x74, +0x5d,0xa3,0xf0,0x53,0x91,0xdf,0x90,0x01,0x3c,0xe0,0x55,0x30,0xf5,0x34,0xa3,0xe0, +0x55,0x31,0xf5,0x35,0xa3,0xe0,0x55,0x32,0xf5,0x36,0xa3,0xe0,0x55,0x33,0xf5,0x37, +0xe5,0x34,0x30,0xe0,0x06,0x90,0x01,0x3c,0x74,0x01,0xf0,0xe5,0x34,0x30,0xe1,0x08, +0x90,0x01,0x3c,0x74,0x02,0xf0,0xf1,0x57,0xe5,0x34,0x30,0xe2,0x3a,0x90,0x01,0x3c, +0x74,0x04,0xf0,0x90,0x06,0x92,0xe0,0x30,0xe0,0x25,0x90,0x91,0x66,0xe4,0xf0,0x90, +0x91,0x2d,0xe0,0x90,0x91,0x67,0xf0,0xe4,0xfb,0xfd,0x7f,0x58,0x7e,0x01,0x12,0x44, +0x59,0x90,0x01,0x5b,0x74,0x05,0xf0,0x90,0x06,0x92,0x74,0x01,0xf0,0x80,0x08,0x90, +0x91,0x37,0xe4,0xf0,0x12,0x44,0xc2,0xe5,0x34,0x30,0xe3,0x3a,0x90,0x01,0x3c,0x74, +0x08,0xf0,0x90,0x06,0x92,0xe0,0x30,0xe1,0x25,0x90,0x91,0x66,0xe4,0xf0,0x90,0x91, +0x2d,0xe0,0x90,0x91,0x67,0xf0,0xe4,0xfb,0xfd,0x7f,0x5c,0x7e,0x01,0x12,0x44,0x59, +0x90,0x01,0x5f,0x74,0x05,0xf0,0x90,0x06,0x92,0x74,0x02,0xf0,0x80,0x08,0x90,0x91, +0x36,0xe4,0xf0,0x12,0x44,0xc2,0xe5,0x34,0x30,0xe4,0x09,0x90,0x01,0x3c,0x74,0x10, +0xf0,0x12,0x53,0x86,0xe5,0x34,0x30,0xe5,0x09,0x90,0x01,0x3c,0x74,0x20,0xf0,0x12, +0x6e,0xb9,0xe5,0x35,0x30,0xe0,0x5a,0x90,0x01,0x3d,0x74,0x01,0xf0,0x90,0x01,0x2f, +0xe0,0x44,0x7f,0xf0,0x90,0x00,0x83,0xe0,0x54,0x0f,0xf5,0x0d,0xb4,0x01,0x02,0x80, +0x1c,0xe5,0x0d,0xb4,0x02,0x05,0x90,0x00,0x83,0x80,0x12,0xe5,0x0d,0xb4,0x04,0x05, +0x90,0x00,0x83,0x80,0x08,0xe5,0x0d,0xb4,0x0c,0x08,0x90,0x00,0x83,0xe0,0xf5,0x6f, +0x80,0x06,0x90,0x01,0xbe,0xe0,0x04,0xf0,0x90,0x01,0xbb,0xe5,0x6f,0xf0,0xe5,0x6f, +0x30,0xe0,0x03,0xa3,0x80,0x03,0x90,0x01,0xbd,0xe0,0x04,0xf0,0xf1,0x38,0x12,0x44, +0xc2,0xe5,0x35,0x30,0xe2,0x06,0x90,0x01,0x3d,0x74,0x04,0xf0,0xe5,0x36,0x30,0xe0, +0x06,0x90,0x01,0x3e,0x74,0x01,0xf0,0xe5,0x36,0x30,0xe1,0x06,0x90,0x01,0x3e,0x74, +0x02,0xf0,0x74,0x99,0x04,0x90,0x01,0xc4,0xf0,0x74,0x5d,0xa3,0xf0,0xd0,0x07,0xd0, +0x06,0xd0,0x05,0xd0,0x04,0xd0,0x03,0xd0,0x02,0xd0,0x01,0xd0,0x00,0xd0,0xd0,0xd0, +0x82,0xd0,0x83,0xd0,0xf0,0xd0,0xe0,0x32,0xe5,0x6f,0x30,0xe6,0x19,0xe5,0x6f,0x54, +0x0f,0xff,0x90,0x91,0x24,0xe0,0xfe,0x4f,0x90,0x01,0x2f,0xf0,0xee,0x64,0x80,0x90, +0x91,0x24,0xf0,0x53,0x6f,0xbf,0x22,0xe4,0x90,0x91,0x0d,0xf0,0xe5,0x70,0x70,0x02, +0xe1,0xe1,0x90,0x91,0x3c,0xe0,0x60,0x0d,0xe4,0xf0,0x53,0x71,0xfd,0xe5,0x71,0x54, +0x07,0x70,0x6e,0x80,0x69,0x90,0x91,0x28,0xe0,0x04,0xf0,0x53,0x71,0xef,0x90,0x91, +0x3a,0xe0,0x04,0xf0,0x90,0x91,0x0d,0xe0,0xf9,0xff,0x7e,0x00,0x24,0x01,0xfd,0xee, +0x33,0xfc,0x90,0x91,0x3a,0xe0,0xb5,0x05,0x06,0xe4,0xb5,0x04,0x02,0x80,0x12,0xef, +0x24,0x02,0xff,0xe4,0x3e,0xfe,0x90,0x91,0x3a,0xe0,0xb5,0x07,0x0a,0xe4,0xb5,0x06, +0x06,0x90,0x05,0x58,0xe0,0x04,0xf0,0xe9,0xff,0x90,0x91,0x2f,0xe0,0x2f,0xff,0xe4, +0x33,0xfe,0x90,0x91,0x28,0xe0,0xd3,0x9f,0xee,0x64,0x80,0xf8,0x74,0x80,0x98,0x40, +0x0d,0xe5,0x6d,0xb4,0x01,0x0b,0xa3,0xe0,0x70,0x07,0xe0,0x04,0xf0,0x22,0x12,0x44, +0xc2,0x22,0x8f,0x20,0x8c,0x21,0x8d,0x22,0x22,0x8f,0x23,0x8c,0x24,0x8d,0x25,0x22, +0xe4,0x90,0x91,0x11,0xf0,0xa3,0xf0,0x90,0x02,0x86,0xe0,0x20,0xe1,0x2c,0xc3,0x90, +0x91,0x12,0xe0,0x94,0x20,0x90,0x91,0x11,0xe0,0x94,0x03,0x40,0x0a,0x90,0x01,0xc6, +0xe0,0x44,0x20,0xf0,0x7f,0x00,0x22,0x90,0x91,0x11,0xe4,0x75,0xf0,0x01,0x12,0x42, +0x81,0x7f,0x01,0x7e,0x00,0x12,0x32,0x15,0x80,0xcd,0x7f,0x01,0x22,0x90,0x01,0xcc, +0xe0,0x54,0x0f,0x90,0x91,0x11,0xf0,0x90,0x91,0x11,0xe0,0xfd,0x70,0x02,0x21,0x6f, +0x90,0x91,0x9c,0xe0,0xff,0x74,0x01,0x7e,0x00,0xa8,0x07,0x08,0x80,0x05,0xc3,0x33, +0xce,0x33,0xce,0xd8,0xf9,0xff,0xef,0x5d,0x70,0x02,0x21,0x68,0x90,0x91,0x9c,0xe0, +0x75,0xf0,0x04,0x90,0x01,0xd0,0x12,0x43,0x15,0xe0,0x90,0x91,0x12,0xf0,0x75,0x63, +0x01,0x75,0x64,0x91,0x75,0x65,0x12,0x75,0x66,0x01,0x7b,0x01,0x7a,0x91,0x79,0x13, +0x12,0x46,0x6d,0x90,0x91,0x13,0xe0,0xff,0xc4,0x13,0x13,0x13,0x54,0x01,0x90,0x91, +0x9c,0x30,0xe0,0x59,0xe0,0x75,0xf0,0x02,0x90,0x00,0x88,0x12,0x43,0x15,0xe0,0x90, +0x91,0x14,0xf0,0x90,0x91,0x9c,0xe0,0x75,0xf0,0x02,0x90,0x00,0x89,0x12,0x43,0x15, +0xe0,0x90,0x91,0x15,0xf0,0x90,0x91,0x9c,0xe0,0x75,0xf0,0x04,0x90,0x01,0xd1,0x12, +0x43,0x15,0xe0,0x90,0x91,0x16,0xf0,0x90,0x91,0x9c,0xe0,0x75,0xf0,0x04,0x90,0x01, +0xd2,0x12,0x43,0x15,0xe0,0x90,0x91,0x17,0xf0,0x90,0x91,0x9c,0xe0,0x75,0xf0,0x04, +0x90,0x01,0xd3,0x12,0x43,0x15,0xe0,0x90,0x91,0x18,0xf0,0x80,0x33,0xe0,0x75,0xf0, +0x04,0x90,0x01,0xd1,0x12,0x43,0x15,0xe0,0x90,0x91,0x14,0xf0,0x90,0x91,0x9c,0xe0, +0x75,0xf0,0x04,0x90,0x01,0xd2,0x12,0x43,0x15,0xe0,0x90,0x91,0x15,0xf0,0x90,0x91, +0x9c,0xe0,0x75,0xf0,0x04,0x90,0x01,0xd3,0x12,0x43,0x15,0xe0,0x90,0x91,0x16,0xf0, +0xef,0x54,0x7f,0xff,0x7b,0x01,0x7a,0x91,0x79,0x14,0x12,0x51,0xf8,0x90,0x91,0x11, +0xe0,0xff,0x90,0x91,0x9c,0xe0,0xfe,0x74,0x01,0xa8,0x06,0x08,0x80,0x02,0xc3,0x33, +0xd8,0xfc,0xf4,0x5f,0x90,0x91,0x11,0xf0,0x90,0x91,0x9c,0xe0,0xff,0x74,0x01,0xa8, +0x07,0x08,0x80,0x02,0xc3,0x33,0xd8,0xfc,0x90,0x01,0xcc,0xf0,0x90,0x91,0x9c,0xe0, +0x04,0xf0,0xe0,0x54,0x03,0xf0,0x01,0x37,0x90,0x01,0xc6,0xe0,0x44,0x02,0xf0,0x22, +0xad,0x07,0x74,0x11,0x2d,0xf5,0x82,0xe4,0x34,0xfc,0xf5,0x83,0xe0,0x44,0x01,0xf0, +0x90,0x04,0x80,0xe0,0x54,0x0f,0xfc,0x74,0x14,0x2d,0xf5,0x82,0xe4,0x34,0xfc,0xf5, +0x83,0xe0,0x54,0xc0,0x4c,0xfd,0x74,0x14,0x2f,0xf5,0x82,0xe4,0x34,0xfc,0xf5,0x83, +0xed,0xf0,0x22,0xef,0x60,0x0f,0x74,0x21,0x2d,0xf5,0x82,0xe4,0x34,0xfc,0xf5,0x83, +0xe0,0x44,0x10,0xf0,0x22,0x74,0x21,0x2d,0xf5,0x82,0xe4,0x34,0xfc,0xf5,0x83,0xe0, +0x54,0xef,0xf0,0x22,0xe4,0xf5,0x6d,0xf5,0x71,0xf5,0x70,0x75,0x6f,0x0c,0x75,0x6e, +0x0c,0x90,0x91,0x3b,0xf0,0x90,0x91,0x37,0xf0,0x90,0x91,0x36,0xf0,0x90,0x91,0x39, +0x04,0xf0,0x90,0x91,0x27,0xf0,0xe4,0x90,0x91,0x3c,0xf0,0x90,0x91,0x29,0xf0,0x90, +0x91,0x34,0x74,0x07,0xf0,0xe4,0x90,0x91,0x28,0xf0,0x90,0x91,0x32,0xf0,0xa3,0x74, +0x03,0xf0,0x90,0x91,0x2f,0x74,0x0a,0xf0,0xa3,0x74,0x05,0xf0,0x90,0x91,0x2d,0x74, +0x14,0xf0,0x90,0x91,0x35,0x74,0x05,0xf0,0xe4,0x90,0x91,0x2b,0xf0,0x90,0x91,0x25, +0xf0,0x90,0x91,0x50,0xf0,0x90,0x91,0x31,0xf0,0x90,0x91,0x3a,0xf0,0x90,0x91,0x26, +0xf0,0x90,0x91,0x38,0xf0,0x90,0x91,0x2e,0xf0,0x90,0x91,0x2c,0xf0,0x22,0xe4,0x90, +0x91,0x3c,0xf0,0x90,0x91,0x28,0xf0,0xf5,0x71,0x22,0x90,0x06,0x04,0xe0,0x54,0xbf, +0xf0,0xef,0x60,0x0a,0xe5,0x6d,0xb4,0x01,0x05,0xe4,0xff,0x12,0x47,0xc9,0x53,0x6e, +0xf0,0x43,0x6e,0x0c,0x22,0x90,0x91,0x9d,0xef,0xf0,0x51,0x7e,0x90,0x91,0x9d,0xe0, +0x60,0x05,0x90,0x05,0x22,0xe4,0xf0,0x53,0x6e,0xf0,0x43,0x6e,0x04,0x22,0x90,0x00, +0x11,0xe0,0x44,0x09,0xf0,0x12,0x4a,0xe6,0x90,0x90,0xd8,0x12,0x43,0x09,0x90,0x80, +0x96,0x12,0x25,0x08,0x7f,0x78,0x7e,0x08,0x12,0x2b,0x08,0x90,0x90,0xdc,0x12,0x43, +0x09,0x90,0x80,0x96,0x12,0x25,0x08,0x7f,0x04,0x7e,0x0c,0x12,0x2b,0x08,0x90,0x90, +0xe0,0x12,0x43,0x09,0x90,0x80,0x96,0x12,0x25,0x08,0x7f,0x00,0x7e,0x08,0x12,0x2b, +0x08,0x90,0x90,0xe4,0x12,0x43,0x09,0x90,0x80,0x96,0x12,0x25,0x08,0x7f,0x70,0x7e, +0x0e,0x12,0x2b,0x08,0x90,0x80,0x68,0x12,0x25,0x14,0x00,0x03,0x2d,0x95,0xe4,0xfd, +0xff,0x12,0x30,0x2c,0x90,0x91,0x51,0xe0,0xb4,0x01,0x11,0x90,0x80,0x68,0x12,0x25, +0x14,0x00,0x03,0x2d,0x95,0xe4,0xfd,0x7f,0x01,0x12,0x30,0x2c,0x22,0x8f,0x77,0xe4, +0x90,0x91,0x96,0xf0,0xa3,0xf0,0x90,0x01,0x09,0xe0,0x7f,0x00,0x30,0xe7,0x02,0x7f, +0x01,0xef,0x65,0x77,0x60,0x3e,0xc3,0x90,0x91,0x97,0xe0,0x94,0x88,0x90,0x91,0x96, +0xe0,0x94,0x13,0x40,0x08,0x90,0x01,0xc6,0xe0,0x44,0x80,0xf0,0x22,0x90,0x91,0x96, +0xe4,0x75,0xf0,0x01,0x12,0x42,0x81,0x7f,0x14,0x7e,0x00,0x12,0x32,0x15,0xd3,0x90, +0x91,0x97,0xe0,0x94,0x32,0x90,0x91,0x96,0xe0,0x94,0x00,0x40,0xb9,0x90,0x01,0xc7, +0xe0,0x30,0xe0,0xb2,0x22,0x22,0x53,0x6e,0xf0,0x43,0x6e,0x01,0x71,0x55,0x71,0x67, +0x53,0x6e,0xf0,0x43,0x6e,0x02,0x22,0x22,0x8f,0x78,0x12,0x47,0xe6,0xef,0x64,0x01, +0x70,0x2e,0x90,0x91,0x44,0x12,0x48,0x1e,0xe5,0x78,0x60,0x10,0x74,0x21,0x2f,0xf5, +0x82,0xe4,0x34,0xfc,0xf5,0x83,0xe0,0x44,0x10,0xf0,0x80,0x0e,0x74,0x21,0x2f,0xf5, +0x82,0xe4,0x34,0xfc,0xf5,0x83,0xe0,0x54,0xef,0xf0,0x90,0x04,0x1f,0x74,0x20,0xf0, +0x22,0xe4,0xfb,0x90,0x91,0x7c,0x12,0x25,0x14,0x00,0x00,0x00,0x00,0xe5,0x70,0x60, +0x5f,0xe5,0x6d,0x64,0x01,0x70,0x59,0x0b,0x90,0x91,0x27,0xf0,0x04,0x60,0x51,0x43, +0x71,0x10,0xe4,0x90,0x91,0x66,0xf0,0x90,0x91,0x3a,0xe0,0x75,0xf0,0x05,0xa4,0xff, +0x90,0x91,0x34,0xe0,0x2f,0x90,0x91,0x67,0xf0,0xe4,0x1b,0x12,0x44,0x54,0x90,0x01, +0x57,0x74,0x05,0xf0,0xe5,0x6e,0x54,0x0f,0xc3,0x94,0x04,0x50,0x07,0x7d,0x01,0x7f, +0x04,0x12,0x47,0x27,0x90,0x91,0x2e,0xe0,0x60,0x11,0x90,0x91,0x2c,0xe0,0x90,0x07, +0x78,0x60,0x05,0x74,0x0d,0xf0,0x80,0x03,0x74,0x09,0xf0,0x90,0x05,0x22,0xe4,0xf0, +0x22,0x90,0x91,0x32,0xe0,0xa3,0xe0,0x90,0x05,0x58,0xf0,0x22,0xd3,0x10,0xaf,0x01, +0xc3,0xc0,0xd0,0x90,0x91,0x84,0xee,0xf0,0xa3,0xef,0xf0,0xe4,0xa3,0xf0,0xa3,0xf0, +0x90,0x91,0x84,0xe0,0xfe,0xa3,0xe0,0xf5,0x82,0x8e,0x83,0xe0,0x60,0x2d,0xc3,0x90, +0x91,0x87,0xe0,0x94,0xe8,0x90,0x91,0x86,0xe0,0x94,0x03,0x40,0x0b,0x90,0x01,0xc6, +0xe0,0x44,0x10,0xf0,0x7f,0x00,0x80,0x15,0x90,0x91,0x86,0xe4,0x75,0xf0,0x01,0x12, +0x42,0x81,0x7f,0x0a,0x7e,0x00,0x12,0x32,0x15,0x80,0xc5,0x7f,0x01,0xd0,0xd0,0x92, +0xaf,0x22,0xd3,0x10,0xaf,0x01,0xc3,0xc0,0xd0,0x90,0x91,0x1c,0x12,0x43,0x41,0x90, +0x91,0x1f,0x12,0x25,0x14,0x00,0x00,0x00,0x00,0x90,0x91,0x1c,0x12,0x43,0x21,0x90, +0x00,0x01,0x12,0x42,0x20,0x90,0x91,0x3b,0xf0,0x90,0x00,0x03,0x12,0x42,0x20,0x90, +0x91,0x25,0xf0,0x90,0x00,0x04,0x12,0x42,0x20,0xff,0x54,0x01,0x90,0x91,0x26,0xf0, +0xef,0xc3,0x13,0x54,0x01,0x90,0x91,0x2e,0xf0,0x90,0x00,0x04,0x12,0x42,0x20,0xff, +0x13,0x13,0x54,0x01,0x90,0x91,0x2c,0xf0,0x90,0x91,0x2e,0xe0,0x90,0x91,0x1f,0x70, +0x26,0x12,0x25,0x14,0x00,0x00,0x02,0x10,0x90,0x91,0x1f,0x12,0x43,0x09,0x90,0x80, +0x96,0x12,0x25,0x08,0x7f,0x60,0x7e,0x08,0x12,0x2b,0x08,0x90,0x91,0x1f,0x12,0x25, +0x14,0x00,0x00,0x03,0x10,0x80,0x24,0x12,0x25,0x14,0x00,0x00,0x01,0x10,0x90,0x91, +0x1f,0x12,0x43,0x09,0x90,0x80,0x96,0x12,0x25,0x08,0x7f,0x60,0x7e,0x08,0x12,0x2b, +0x08,0x90,0x91,0x1f,0x12,0x25,0x14,0x00,0x00,0x03,0x00,0x90,0x91,0x1f,0x12,0x43, +0x09,0x90,0x80,0x96,0x12,0x25,0x08,0x7f,0x70,0x7e,0x08,0x12,0x2b,0x08,0x90,0x91, +0x26,0xe0,0x70,0x3d,0x90,0x91,0x38,0x74,0x01,0xf0,0x7f,0x00,0x7e,0x08,0x12,0x22, +0x65,0x90,0x91,0x1f,0x12,0x25,0x08,0x90,0x91,0x1f,0x12,0x43,0x09,0xec,0x44,0x02, +0xfc,0x90,0x91,0x1f,0x12,0x25,0x08,0x90,0x91,0x1f,0x12,0x43,0x09,0x90,0x80,0x96, +0x12,0x25,0x08,0x7f,0x00,0x7e,0x08,0x12,0x2b,0x08,0x90,0x02,0x86,0xe0,0x54,0xfb, +0xf0,0x90,0x91,0x1c,0x12,0x43,0x21,0x12,0x49,0x7f,0x90,0x01,0xe5,0xe5,0x70,0xf0, +0x90,0x91,0x3b,0xe0,0x90,0x01,0xe6,0xf0,0xd0,0xd0,0x92,0xaf,0x22,0x90,0x00,0x02, +0x12,0x42,0x20,0xff,0x30,0xe0,0x25,0x12,0x24,0x62,0x90,0x91,0x2f,0xf0,0x90,0x00, +0x01,0x12,0x42,0x20,0x90,0x91,0x30,0xf0,0xef,0xc3,0x13,0x54,0x7f,0x90,0x91,0x2d, +0xf0,0x90,0x00,0x03,0x12,0x42,0x20,0x90,0x91,0x35,0xf0,0x22,0x90,0x91,0x2f,0x74, +0x0a,0xf0,0x90,0x91,0x30,0x74,0x05,0xf0,0x90,0x91,0x2d,0x74,0x14,0xf0,0x90,0x91, +0x35,0x74,0x05,0xf0,0x22,0x12,0x24,0x62,0x30,0xe0,0x19,0xc3,0x13,0x54,0x7f,0x90, +0x91,0x34,0xf0,0x90,0x00,0x01,0x12,0x42,0x20,0xff,0x90,0x91,0x32,0xe4,0xf0,0xa3, +0xef,0xf0,0x80,0x0f,0x90,0x91,0x34,0x74,0x07,0xf0,0x90,0x91,0x32,0xe4,0xf0,0xa3, +0x74,0x03,0xf0,0x90,0x91,0x32,0xe0,0xa3,0xe0,0x90,0x05,0x58,0xf0,0x22,0x90,0x02, +0x09,0xe0,0xfd,0x12,0x24,0x62,0xfe,0xaf,0x05,0xed,0x2e,0x90,0x91,0x41,0xf0,0x90, +0x00,0x01,0x12,0x42,0x20,0xff,0xed,0x2f,0x90,0x91,0x42,0xf0,0x90,0x00,0x02,0x12, +0x42,0x20,0xff,0xed,0x2f,0x90,0x91,0x43,0xf0,0x90,0x00,0x03,0x12,0x42,0x20,0xff, +0xed,0x2f,0x90,0x91,0x44,0xf0,0x90,0x00,0x04,0x12,0x42,0x20,0xff,0xae,0x05,0xed, +0x2f,0x90,0x91,0x45,0xf0,0x22,0xd3,0x10,0xaf,0x01,0xc3,0xc0,0xd0,0x90,0x91,0x47, +0xe0,0x90,0x91,0x1d,0xf0,0x90,0x91,0x48,0xe0,0xf5,0x19,0xa3,0xe0,0xf5,0x1a,0xe4, +0xf5,0x16,0x74,0x4a,0x25,0x16,0xf5,0x82,0xe4,0x34,0x91,0xf5,0x83,0xe0,0xff,0x74, +0x1b,0x25,0x16,0xf8,0xa6,0x07,0x05,0x16,0xe5,0x16,0xb4,0x04,0xe5,0x90,0x91,0x1d, +0xe0,0x12,0x43,0x4a,0x66,0xb3,0x00,0x67,0xdc,0x01,0x66,0xba,0x02,0x66,0xba,0x03, +0x66,0xba,0x04,0x67,0xdc,0x05,0x67,0xac,0x80,0x67,0xc2,0x81,0x67,0xdc,0x82,0x00, +0x00,0x67,0xd8,0xaf,0x1e,0x12,0x73,0xea,0xe1,0xdc,0x90,0x91,0x1d,0xe0,0xff,0xb4, +0x02,0x08,0x90,0x91,0x1c,0x74,0x01,0xf0,0x80,0x0f,0xef,0x90,0x91,0x1c,0xb4,0x03, +0x05,0x74,0x02,0xf0,0x80,0x03,0x74,0x04,0xf0,0xc3,0xe5,0x19,0x94,0x08,0x50,0x49, +0xe4,0xf5,0x16,0x90,0x91,0x1c,0xe0,0xff,0xe5,0x16,0xc3,0x9f,0x40,0x02,0xe1,0xdc, +0xc3,0xe5,0x19,0x94,0x01,0x50,0x14,0xe5,0x16,0x25,0x1a,0xff,0xc3,0x74,0x03,0x95, +0x16,0x24,0x1b,0xf8,0xe6,0xfd,0x12,0x4b,0xee,0x80,0x1a,0xc3,0x74,0x03,0x95,0x16, +0x24,0x1b,0xf8,0xe6,0xff,0xe5,0x16,0x7c,0x00,0x25,0x1a,0xfd,0xec,0x35,0x19,0x8d, +0x82,0xf5,0x83,0xef,0xf0,0x05,0x16,0x80,0xba,0xc3,0xe5,0x19,0x94,0x10,0x40,0x02, +0xe1,0xdc,0x90,0x91,0x1d,0xe0,0x64,0x04,0x60,0x02,0xe1,0xdc,0xaf,0x1c,0xfc,0xfd, +0xfe,0x78,0x10,0x12,0x24,0xf5,0xc0,0x04,0xc0,0x05,0xc0,0x06,0xc0,0x07,0xaf,0x1b, +0xe4,0xfc,0xfd,0xfe,0x78,0x18,0x12,0x24,0xf5,0xd0,0x03,0xd0,0x02,0xd0,0x01,0xd0, +0x00,0x12,0x42,0xfc,0xc0,0x04,0xc0,0x05,0xc0,0x06,0xc0,0x07,0xaf,0x1d,0xe4,0xfc, +0xfd,0xfe,0x78,0x08,0x12,0x24,0xf5,0xd0,0x03,0xd0,0x02,0xd0,0x01,0xd0,0x00,0x12, +0x42,0xfc,0xa8,0x04,0xa9,0x05,0xaa,0x06,0xab,0x07,0xaf,0x1e,0xe4,0xfc,0xfd,0xfe, +0x12,0x42,0xfc,0xa3,0x12,0x25,0x08,0x90,0x91,0x1e,0x12,0x43,0x09,0x90,0x80,0x96, +0x12,0x25,0x08,0xaf,0x1a,0xae,0x19,0x12,0x2b,0x08,0x80,0x30,0xe5,0x1d,0x7f,0x00, +0xfe,0xef,0x25,0x1e,0xf5,0x18,0xe4,0x3e,0xf5,0x17,0xaf,0x18,0xfe,0x12,0x32,0x15, +0x80,0x1a,0xe5,0x1d,0x7f,0x00,0xfe,0xef,0x25,0x1e,0xf5,0x18,0xe4,0x3e,0xf5,0x17, +0xaf,0x18,0xfe,0x12,0x31,0x82,0x80,0x04,0x7f,0x00,0x80,0x02,0x7f,0x01,0xd0,0xd0, +0x92,0xaf,0x22,0x22,0x8e,0x0e,0x8f,0x0f,0x8b,0x10,0x8a,0x11,0x89,0x12,0xe4,0x90, +0x91,0x11,0xf0,0xef,0x90,0x00,0x31,0xf0,0x12,0x4a,0xe6,0xe5,0x0e,0x54,0x03,0xff, +0x90,0x00,0x32,0xe0,0x54,0xfc,0x4f,0xf0,0x12,0x4a,0xe6,0x90,0x00,0x33,0xe0,0x54, +0x7f,0xf0,0x12,0x4a,0xe6,0x90,0x00,0x33,0xe0,0x20,0xe7,0x0e,0x90,0x91,0x11,0xe0, +0xc3,0x94,0x64,0x50,0x05,0xe0,0x04,0xf0,0x80,0xeb,0x90,0x91,0x11,0xe0,0xc3,0x94, +0x64,0x50,0x10,0x90,0x00,0x30,0xe0,0xab,0x10,0xaa,0x11,0xa9,0x12,0x12,0x42,0x4d, +0x7f,0x01,0x22,0x7f,0x00,0x22,0xe4,0x90,0x91,0x98,0xf0,0xa3,0xf0,0x90,0x05,0xf8, +0xe0,0x70,0x0f,0xa3,0xe0,0x70,0x0b,0xa3,0xe0,0x70,0x07,0xa3,0xe0,0x70,0x03,0x7f, +0x01,0x22,0xd3,0x90,0x91,0x99,0xe0,0x94,0xe8,0x90,0x91,0x98,0xe0,0x94,0x03,0x40, +0x03,0x7f,0x00,0x22,0x7f,0x32,0x7e,0x00,0x12,0x32,0x15,0x90,0x91,0x98,0xe4,0x75, +0xf0,0x01,0x12,0x42,0x81,0x80,0xc6,0xef,0x70,0x02,0x41,0x3d,0x90,0x90,0xe8,0xe0, +0x60,0x02,0xc1,0x08,0x90,0x90,0xd4,0x12,0x43,0x09,0x90,0x80,0x96,0x12,0x25,0x08, +0x7f,0x8c,0x7e,0x08,0x12,0x2b,0x08,0x90,0x90,0x80,0x12,0x43,0x09,0x90,0x80,0x96, +0x12,0x25,0x08,0x7f,0x44,0x7e,0x08,0x12,0x2b,0x08,0x90,0x90,0x84,0x12,0x43,0x09, +0x90,0x80,0x96,0x12,0x25,0x08,0x7f,0x5c,0x7e,0x08,0x12,0x2b,0x08,0x90,0x90,0x88, +0x12,0x43,0x09,0x90,0x80,0x96,0x12,0x25,0x08,0x7f,0x6c,0x7e,0x0e,0x12,0x2b,0x08, +0x90,0x90,0x8c,0x12,0x43,0x09,0x90,0x80,0x96,0x12,0x25,0x08,0x7f,0x70,0x7e,0x0e, +0x12,0x2b,0x08,0x90,0x90,0x90,0x12,0x43,0x09,0x90,0x80,0x96,0x12,0x25,0x08,0x7f, +0x74,0x7e,0x0e,0x12,0x2b,0x08,0x90,0x90,0x94,0x12,0x43,0x09,0x90,0x80,0x96,0x12, +0x25,0x08,0x7f,0x78,0x7e,0x0e,0x12,0x2b,0x08,0x90,0x90,0x98,0x12,0x43,0x09,0x90, +0x80,0x96,0x12,0x25,0x08,0x7f,0x7c,0x7e,0x0e,0x12,0x2b,0x08,0x90,0x90,0x9c,0x12, +0x43,0x09,0x90,0x80,0x96,0x12,0x25,0x08,0x7f,0x80,0x7e,0x0e,0x12,0x2b,0x08,0x90, +0x90,0xa0,0x12,0x43,0x09,0x90,0x80,0x96,0x12,0x25,0x08,0x7f,0x84,0x7e,0x0e,0x12, +0x2b,0x08,0x90,0x90,0xa4,0x12,0x43,0x09,0x90,0x80,0x96,0x12,0x25,0x08,0x7f,0x88, +0x7e,0x0e,0x12,0x2b,0x08,0x90,0x90,0xa8,0x12,0x43,0x09,0x90,0x80,0x96,0x12,0x25, +0x08,0x7f,0x8c,0x7e,0x0e,0x12,0x2b,0x08,0x90,0x90,0xac,0x12,0x43,0x09,0x90,0x80, +0x96,0x12,0x25,0x08,0x7f,0xd0,0x7e,0x0e,0x12,0x2b,0x08,0x90,0x90,0xb0,0x12,0x43, +0x09,0x90,0x80,0x96,0x12,0x25,0x08,0x7f,0xd4,0x7e,0x0e,0x12,0x2b,0x08,0x90,0x90, +0xb4,0x12,0x43,0x09,0x90,0x80,0x96,0x12,0x25,0x08,0x7f,0xd8,0x7e,0x0e,0x12,0x2b, +0x08,0x90,0x90,0xb8,0x12,0x43,0x09,0x90,0x80,0x96,0x12,0x25,0x08,0x7f,0xdc,0x7e, +0x0e,0x12,0x2b,0x08,0x90,0x90,0xbc,0x12,0x43,0x09,0x90,0x80,0x96,0x12,0x25,0x08, +0x7f,0xe0,0x7e,0x0e,0x12,0x2b,0x08,0x90,0x90,0xc0,0x12,0x43,0x09,0x90,0x80,0x96, +0x12,0x25,0x08,0x7f,0xec,0x7e,0x0e,0x12,0x2b,0x08,0x90,0x90,0xc4,0x12,0x43,0x09, +0x90,0x80,0x96,0x12,0x25,0x08,0x7f,0x04,0x7e,0x0c,0x12,0x2b,0x08,0x90,0x90,0xc8, +0x12,0x43,0x09,0x90,0x80,0x96,0x12,0x25,0x08,0x7f,0x04,0x7e,0x0d,0x12,0x2b,0x08, +0x90,0x90,0xcc,0x12,0x43,0x09,0x90,0x80,0x96,0x12,0x25,0x08,0x7f,0x0c,0x7e,0x09, +0x12,0x2b,0x08,0x90,0x90,0xd0,0x12,0x43,0x09,0x90,0x80,0x96,0x12,0x25,0x08,0x7f, +0x04,0x7e,0x08,0x12,0x2b,0x08,0x90,0x90,0xe8,0x74,0x01,0xf0,0x22,0x90,0x90,0xe8, +0xe0,0x64,0x01,0x60,0x02,0xc1,0x08,0x7f,0x8c,0x7e,0x08,0x12,0x22,0x65,0x90,0x90, +0xd4,0x12,0x25,0x08,0x7f,0x44,0x7e,0x08,0x12,0x22,0x65,0x90,0x90,0x80,0x12,0x25, +0x08,0x7f,0x5c,0x7e,0x08,0x12,0x22,0x65,0x90,0x90,0x84,0x12,0x25,0x08,0x7f,0x6c, +0x7e,0x0e,0x12,0x22,0x65,0x90,0x90,0x88,0x12,0x25,0x08,0x7f,0x70,0x7e,0x0e,0x12, +0x22,0x65,0x90,0x90,0x8c,0x12,0x25,0x08,0x7f,0x74,0x7e,0x0e,0x12,0x22,0x65,0x90, +0x90,0x90,0x12,0x25,0x08,0x7f,0x78,0x7e,0x0e,0x12,0x22,0x65,0x90,0x90,0x94,0x12, +0x25,0x08,0x7f,0x7c,0x7e,0x0e,0x12,0x22,0x65,0x90,0x90,0x98,0x12,0x25,0x08,0x7f, +0x80,0x7e,0x0e,0x12,0x22,0x65,0x90,0x90,0x9c,0x12,0x25,0x08,0x7f,0x84,0x7e,0x0e, +0x12,0x22,0x65,0x90,0x90,0xa0,0x12,0x25,0x08,0x7f,0x88,0x7e,0x0e,0x12,0x22,0x65, +0x90,0x90,0xa4,0x12,0x25,0x08,0x7f,0x8c,0x7e,0x0e,0x12,0x22,0x65,0x90,0x90,0xa8, +0x12,0x25,0x08,0x7f,0xd0,0x7e,0x0e,0x12,0x22,0x65,0x90,0x90,0xac,0x12,0x25,0x08, +0x7f,0xd4,0x7e,0x0e,0x12,0x22,0x65,0x90,0x90,0xb0,0x12,0x25,0x08,0x7f,0xd8,0x7e, +0x0e,0x12,0x22,0x65,0x90,0x90,0xb4,0x12,0x25,0x08,0x7f,0xdc,0x7e,0x0e,0x12,0x22, +0x65,0x90,0x90,0xb8,0x12,0x25,0x08,0x7f,0xe0,0x7e,0x0e,0x12,0x22,0x65,0x90,0x90, +0xbc,0x12,0x25,0x08,0x7f,0xec,0x7e,0x0e,0x12,0x22,0x65,0x90,0x90,0xc0,0x12,0x25, +0x08,0x7f,0x04,0x7e,0x0c,0x12,0x22,0x65,0x90,0x90,0xc4,0x12,0x25,0x08,0x7f,0x04, +0x7e,0x0d,0x12,0x22,0x65,0x90,0x90,0xc8,0x12,0x25,0x08,0x7f,0x0c,0x7e,0x09,0x12, +0x22,0x65,0x90,0x90,0xcc,0x12,0x25,0x08,0x7f,0x04,0x7e,0x08,0x12,0x22,0x65,0x90, +0x90,0xd0,0x12,0x25,0x08,0x7f,0x8c,0x7e,0x08,0x12,0x22,0x65,0x90,0x91,0x88,0x12, +0x25,0x08,0x90,0x91,0x88,0x12,0x43,0x09,0xed,0x44,0xc0,0xfd,0xec,0x90,0x91,0x88, +0x12,0x25,0x08,0x90,0x91,0x88,0x12,0x43,0x09,0x90,0x80,0x96,0x12,0x25,0x08,0x7f, +0x8c,0x7e,0x08,0x12,0x2b,0x08,0x90,0x80,0x96,0x12,0x25,0x14,0x00,0x01,0x00,0x00, +0x7f,0x44,0x7e,0x08,0x12,0x2b,0x08,0x90,0x80,0x96,0x12,0x25,0x14,0x00,0xdb,0x25, +0xa4,0x7f,0x5c,0x7e,0x08,0x12,0x2b,0x08,0x90,0x80,0x96,0x12,0x25,0x14,0x20,0xdb, +0x25,0xa4,0x7f,0x6c,0x7e,0x0e,0x12,0x2b,0x08,0x90,0x80,0x96,0x12,0x25,0x14,0x20, +0xdb,0x25,0xa4,0x7f,0x70,0x7e,0x0e,0x12,0x2b,0x08,0x90,0x80,0x96,0x12,0x25,0x14, +0x04,0x1b,0x25,0xa4,0x7f,0x74,0x7e,0x0e,0x12,0x2b,0x08,0x90,0x80,0x96,0x12,0x25, +0x14,0x04,0x1b,0x25,0xa4,0x7f,0x78,0x7e,0x0e,0x12,0x2b,0x08,0x90,0x80,0x96,0x12, +0x25,0x14,0x04,0x1b,0x25,0xa4,0x7f,0x7c,0x7e,0x0e,0x12,0x2b,0x08,0x90,0x80,0x96, +0x12,0x25,0x14,0x04,0x1b,0x25,0xa4,0x7f,0x80,0x7e,0x0e,0x12,0x2b,0x08,0x90,0x80, +0x96,0x12,0x25,0x14,0x63,0xdb,0x25,0xa4,0x7f,0x84,0x7e,0x0e,0x12,0x2b,0x08,0x90, +0x80,0x96,0x12,0x25,0x14,0x04,0x1b,0x25,0xa4,0x7f,0x88,0x7e,0x0e,0x12,0x2b,0x08, +0x90,0x80,0x96,0x12,0x25,0x14,0x20,0xdb,0x25,0xa4,0x7f,0x8c,0x7e,0x0e,0x12,0x2b, +0x08,0x90,0x80,0x96,0x12,0x25,0x14,0x20,0xdb,0x25,0xa4,0x7f,0xd0,0x7e,0x0e,0x12, +0x2b,0x08,0x90,0x80,0x96,0x12,0x25,0x14,0x20,0xdb,0x25,0xa4,0x7f,0xd4,0x7e,0x0e, +0x12,0x2b,0x08,0x90,0x80,0x96,0x12,0x25,0x14,0x20,0xdb,0x25,0xa4,0x7f,0xd8,0x7e, +0x0e,0x12,0x2b,0x08,0x90,0x80,0x96,0x12,0x25,0x14,0x00,0x1b,0x25,0xa4,0x7f,0xdc, +0x7e,0x0e,0x12,0x2b,0x08,0x90,0x80,0x96,0x12,0x25,0x14,0x00,0x1b,0x25,0xa4,0x7f, +0xe0,0x7e,0x0e,0x12,0x2b,0x08,0x90,0x80,0x96,0x12,0x25,0x14,0x24,0xdb,0x25,0xa4, +0x7f,0xec,0x7e,0x0e,0x12,0x2b,0x08,0x7f,0x04,0x7e,0x0c,0x12,0x22,0x65,0x90,0x91, +0x88,0x12,0x25,0x08,0x90,0x91,0x88,0x12,0x43,0x09,0xe4,0xff,0xec,0x90,0x91,0x88, +0x12,0x25,0x08,0x90,0x91,0x88,0x12,0x43,0x09,0xef,0x44,0x11,0xff,0xec,0x90,0x91, +0x88,0x12,0x25,0x08,0x90,0x91,0x88,0x12,0x43,0x09,0x90,0x80,0x96,0x12,0x25,0x08, +0x7f,0x04,0x7e,0x0c,0x12,0x2b,0x08,0x7f,0x04,0x7e,0x0d,0x12,0x22,0x65,0x90,0x91, +0x88,0x12,0x25,0x08,0x90,0x91,0x88,0x12,0x43,0x09,0xef,0x54,0xf0,0xff,0xec,0x90, +0x91,0x88,0x12,0x25,0x08,0x90,0x91,0x88,0x12,0x43,0x09,0xef,0x44,0x01,0xff,0xec, +0x90,0x91,0x88,0x12,0x25,0x08,0x90,0x91,0x88,0x12,0x43,0x09,0x90,0x80,0x96,0x12, +0x25,0x08,0x7f,0x04,0x7e,0x0d,0x12,0x2b,0x08,0x7f,0x0c,0x7e,0x09,0x12,0x22,0x65, +0x90,0x91,0x88,0x12,0x25,0x08,0x90,0x91,0x88,0x12,0x43,0x09,0xe4,0xff,0xec,0x90, +0x91,0x88,0x12,0x25,0x08,0x90,0x91,0x88,0x12,0x43,0x09,0xef,0x44,0x11,0xff,0xec, +0x90,0x91,0x88,0x12,0x25,0x08,0x90,0x91,0x88,0x12,0x43,0x09,0x90,0x80,0x96,0x12, +0x25,0x08,0x7f,0x0c,0x7e,0x09,0x12,0x2b,0x08,0x7f,0x0c,0x7e,0x09,0x12,0x22,0x65, +0x90,0x91,0x88,0x12,0x25,0x08,0x90,0x91,0x88,0x12,0x43,0x09,0xed,0x54,0x0f,0xfd, +0xec,0x54,0xf0,0xfc,0x90,0x91,0x88,0x12,0x25,0x08,0x90,0x91,0x88,0x12,0x43,0x09, +0xed,0x44,0x10,0xfd,0xec,0x44,0x01,0xfc,0x90,0x91,0x88,0x12,0x25,0x08,0x90,0x91, +0x88,0x12,0x43,0x09,0x90,0x80,0x96,0x12,0x25,0x08,0x7f,0x0c,0x7e,0x09,0x12,0x2b, +0x08,0x7f,0x04,0x7e,0x08,0x12,0x22,0x65,0x90,0x91,0x88,0x12,0x25,0x08,0x90,0x91, +0x88,0x12,0x43,0x09,0xef,0x54,0xf0,0xff,0xec,0x90,0x91,0x88,0x12,0x25,0x08,0x90, +0x91,0x88,0x12,0x43,0x09,0xef,0x44,0x01,0xff,0xec,0x90,0x91,0x88,0x12,0x25,0x08, +0x90,0x91,0x88,0x12,0x43,0x09,0x90,0x80,0x96,0x12,0x25,0x08,0x7f,0x04,0x7e,0x08, +0x12,0x2b,0x08,0xe4,0x90,0x90,0xe8,0xf0,0x22,0xe4,0xfd,0x7f,0x45,0x12,0x4b,0xee, +0x90,0x04,0xfd,0xe4,0xf0,0xa3,0xf0,0x90,0x90,0xf7,0xf0,0x90,0x90,0xfd,0xf0,0x90, +0x91,0x00,0xf0,0x90,0x90,0xfe,0xf0,0x90,0x91,0x01,0xf0,0x90,0x90,0xff,0xf0,0x90, +0x91,0x02,0xf0,0x90,0x90,0xe9,0x04,0xf0,0xe4,0xa3,0xf0,0xa3,0xf0,0xa3,0xf0,0x90, +0x90,0xee,0xf0,0x90,0x90,0xf3,0xf0,0x90,0x90,0xf5,0xf0,0x90,0x91,0x07,0xf0,0x90, +0x90,0xf8,0xf0,0x90,0x90,0xf4,0xf0,0x90,0x90,0xed,0xf0,0x90,0x00,0x51,0xe0,0x44, +0xc0,0xfd,0x7f,0x51,0x02,0x4b,0xee,0x90,0x05,0x60,0xe0,0x90,0x91,0x03,0xf0,0x90, +0x05,0x61,0xe0,0x90,0x91,0x04,0xf0,0x90,0x05,0x62,0xe0,0x90,0x91,0x05,0xf0,0x90, +0x05,0x63,0xe0,0x90,0x91,0x06,0xf0,0xc3,0x74,0xff,0x9f,0xfe,0x90,0x91,0x04,0xe0, +0xd3,0x9e,0x40,0x1e,0xe0,0x2f,0xf0,0xa3,0xe0,0xb4,0xff,0x0f,0xe4,0xf0,0xa3,0xe0, +0xb4,0xff,0x03,0xe4,0xf0,0x22,0x90,0x91,0x06,0x80,0x03,0x90,0x91,0x05,0xe0,0x04, +0xf0,0x22,0x90,0x91,0x04,0xe0,0x2f,0xf0,0x22,0x90,0x90,0xf5,0xe0,0x64,0x01,0x60, +0x02,0xe1,0x6e,0x90,0x00,0x46,0xe0,0x44,0x01,0xfd,0x7f,0x46,0x12,0x4b,0xee,0x90, +0x91,0x07,0xe0,0x70,0x32,0x90,0x90,0xed,0xe0,0x60,0x15,0x90,0x90,0xf9,0x12,0x43, +0x09,0x90,0x80,0x96,0x12,0x25,0x08,0x7f,0x80,0x7e,0x08,0x12,0x2b,0x08,0x80,0x06, +0x90,0x05,0x22,0x74,0x7f,0xf0,0x90,0x90,0xf4,0xe0,0xff,0xd1,0x67,0x90,0x91,0x07, +0x74,0x01,0x12,0x4b,0xe4,0x80,0x40,0x90,0x91,0x07,0xe0,0x64,0x01,0x70,0x38,0x90, +0x90,0xf8,0xe0,0xff,0xd1,0x67,0xe4,0x90,0x91,0x07,0xf0,0x90,0x00,0x45,0xe0,0x44, +0x01,0xfd,0x7f,0x45,0x12,0x4b,0xee,0x90,0x90,0xed,0xe0,0x60,0x15,0x90,0x90,0xef, +0x12,0x43,0x09,0x90,0x80,0x96,0x12,0x25,0x08,0x7f,0x80,0x7e,0x08,0x12,0x2b,0x08, +0x80,0x05,0x90,0x05,0x22,0xe4,0xf0,0x90,0x05,0x87,0xe0,0x64,0x80,0xf0,0x90,0x91, +0x03,0xe0,0x90,0x05,0x84,0xf0,0x90,0x91,0x04,0xe0,0x90,0x05,0x85,0xf0,0x90,0x91, +0x05,0xe0,0x90,0x05,0x86,0xf0,0x90,0x91,0x06,0xe0,0x90,0x05,0x87,0xf0,0x22,0x90, +0x90,0xee,0xe0,0xc3,0x94,0x14,0x50,0x06,0xe0,0x04,0xf0,0x02,0x70,0x29,0x90,0x90, +0xee,0xe0,0x64,0x14,0x60,0x03,0x02,0x70,0x29,0x90,0x90,0xfd,0xe0,0x70,0x25,0x90, +0x91,0x00,0xe0,0x70,0x1f,0x90,0x90,0xfe,0xe0,0x70,0x19,0x90,0x91,0x01,0xe0,0x70, +0x13,0x90,0x90,0xff,0xe0,0x70,0x0d,0x90,0x91,0x02,0xe0,0x70,0x07,0x90,0x04,0xfd, +0xe0,0x54,0xfe,0xf0,0x90,0x90,0xfd,0xe0,0x90,0x04,0x44,0xf0,0x90,0x90,0xfe,0xe0, +0x90,0x04,0x45,0xf0,0x90,0x90,0xff,0xe0,0x90,0x04,0x46,0xf0,0xa3,0xe4,0xf0,0x90, +0x91,0x00,0xe0,0x90,0x04,0x48,0xf0,0x90,0x91,0x01,0xe0,0x90,0x04,0x49,0xf0,0x90, +0x91,0x02,0xe0,0x90,0x04,0x4a,0xf0,0xa3,0xe4,0xf0,0x90,0x90,0xe9,0xe0,0x90,0x04, +0x4c,0xf0,0x90,0x90,0xea,0xe0,0x90,0x04,0x4d,0xf0,0x90,0x90,0xeb,0xe0,0x90,0x04, +0x4e,0xf0,0x90,0x90,0xec,0xe0,0x90,0x04,0x4f,0xf0,0xe4,0x90,0x90,0xee,0xf0,0x90, +0x90,0xe9,0x04,0xf0,0xe4,0xa3,0xf0,0xa3,0xf0,0xa3,0xf0,0x90,0x90,0xfd,0xf0,0xa3, +0xf0,0xa3,0xf0,0xa3,0xf0,0xa3,0xf0,0xa3,0xf0,0x90,0x05,0x60,0xe0,0x90,0x91,0x8c, +0xf0,0x90,0x05,0x61,0xe0,0x90,0x91,0x8d,0xf0,0x90,0x05,0x62,0xe0,0x90,0x91,0x8e, +0xf0,0x90,0x05,0x63,0xe0,0x90,0x91,0x8f,0xf0,0x90,0x91,0x06,0xe0,0xff,0x90,0x91, +0x8f,0xe0,0xfe,0xd3,0x9f,0x50,0x0b,0x90,0x91,0x06,0xe0,0xc3,0x9e,0xd3,0x94,0x01, +0x40,0x11,0x90,0x90,0xf4,0xe0,0xb4,0x01,0x02,0x80,0x03,0x90,0x90,0xf8,0xe0,0xff, +0x12,0x6e,0x67,0x22,0x90,0x91,0x07,0xe0,0x64,0x01,0x60,0x08,0x90,0x90,0xf5,0xe0, +0x60,0x02,0x21,0x4b,0x90,0x90,0xe9,0xe0,0xc3,0x94,0xff,0x50,0x05,0xe0,0x04,0xf0, +0x80,0x3b,0x90,0x90,0xea,0xe0,0xc3,0x94,0xff,0x50,0x06,0xe0,0x04,0xf0,0xe4,0x80, +0x28,0x90,0x90,0xeb,0xe0,0xc3,0x94,0xff,0x50,0x0a,0xe0,0x04,0xf0,0xe4,0x90,0x90, +0xea,0xf0,0x80,0x15,0x90,0x90,0xec,0xe0,0xc3,0x94,0xff,0x50,0x10,0xe0,0x04,0xf0, +0xe4,0x90,0x90,0xeb,0xf0,0x90,0x90,0xea,0xf0,0x90,0x90,0xe9,0xf0,0x90,0x00,0x44, +0xe0,0x54,0x0c,0x60,0x76,0xe0,0x30,0xe2,0x32,0x90,0x90,0xfd,0xe0,0xc3,0x94,0xff, +0x50,0x05,0xe0,0x04,0xf0,0x80,0x24,0x90,0x90,0xfe,0xe0,0xc3,0x94,0xff,0x50,0x06, +0xe0,0x04,0xf0,0xe4,0x80,0x11,0x90,0x90,0xff,0xe0,0xc3,0x94,0xff,0x50,0x0c,0xe0, +0x04,0xf0,0xe4,0x90,0x90,0xfe,0xf0,0x90,0x90,0xfd,0xf0,0x90,0x00,0x44,0xe0,0x30, +0xe3,0x32,0x90,0x91,0x00,0xe0,0xc3,0x94,0xff,0x50,0x05,0xe0,0x04,0xf0,0x80,0x24, +0x90,0x91,0x01,0xe0,0xc3,0x94,0xff,0x50,0x06,0xe0,0x04,0xf0,0xe4,0x80,0x11,0x90, +0x91,0x02,0xe0,0xc3,0x94,0xff,0x50,0x0c,0xe0,0x04,0xf0,0xe4,0x90,0x91,0x01,0xf0, +0x90,0x91,0x00,0xf0,0x90,0x04,0xfd,0xe0,0x44,0x01,0xf0,0x22,0x90,0x06,0x90,0xe0, +0x44,0x01,0xf0,0x90,0x91,0x61,0xe0,0x30,0xe0,0x3c,0x90,0x91,0x5f,0xe0,0xff,0x90, +0x91,0x5e,0xe0,0xfe,0xc4,0x13,0x54,0x01,0xfd,0x12,0x4a,0xf6,0x90,0x91,0x60,0xe0, +0x75,0xf0,0x20,0xa4,0xff,0xae,0xf0,0x12,0x32,0x15,0x90,0x91,0x5e,0xe0,0xc4,0x13, +0x54,0x07,0x30,0xe0,0x07,0xa3,0xe0,0xff,0xe4,0xfd,0x80,0x07,0x90,0x91,0x5f,0xe0, +0xff,0x7d,0x01,0x12,0x4a,0xf6,0x22,0xd3,0x10,0xaf,0x01,0xc3,0xc0,0xd0,0xe4,0x90, +0x91,0x19,0xf0,0xa3,0x74,0x08,0xf0,0xa3,0xf0,0xe4,0xa3,0xf0,0x90,0x01,0x1f,0xe0, +0xfe,0x90,0x01,0x1e,0xe0,0x7c,0x00,0x24,0x00,0xff,0xec,0x3e,0x90,0x91,0x11,0xf0, +0xa3,0xef,0xf0,0x90,0x02,0x87,0xe0,0x90,0x91,0x18,0xf0,0x90,0x91,0x56,0xe0,0x20, +0xe0,0x02,0x61,0xc4,0xe4,0x90,0x91,0x17,0xf0,0x90,0x91,0x18,0xe0,0xff,0x90,0x91, +0x17,0xe0,0xc3,0x9f,0x40,0x02,0x61,0xc4,0x90,0x91,0x11,0xe0,0xfc,0xa3,0xe0,0xfd, +0xec,0xff,0x90,0xfd,0x11,0xf0,0x90,0x91,0x1c,0xef,0xf0,0x74,0x02,0x2d,0xf5,0x82, +0xe4,0x34,0xfb,0xf5,0x83,0xe0,0x54,0x0f,0xfc,0x33,0x33,0x33,0x54,0xf8,0xff,0xed, +0x24,0x18,0x2f,0x90,0x91,0x15,0xf0,0xe0,0x24,0x00,0xf5,0x82,0xe4,0x34,0xfb,0xf5, +0x83,0xe0,0x54,0xfc,0x90,0x91,0x16,0xf0,0x74,0x01,0x2d,0xf5,0x82,0xe4,0x34,0xfb, +0xf5,0x83,0xe0,0xfe,0x74,0x00,0x2d,0xf5,0x82,0xe4,0x34,0xfb,0xf5,0x83,0xe0,0x7a, +0x00,0x24,0x00,0xff,0xea,0x3e,0x54,0x3f,0xab,0x07,0xfa,0x90,0x91,0x13,0xf0,0xa3, +0xeb,0xf0,0xaf,0x04,0xef,0x75,0xf0,0x08,0xa4,0x24,0x18,0xff,0xe4,0x35,0xf0,0xfe, +0xef,0x2b,0xfb,0xee,0x3a,0xfa,0x90,0x91,0x5a,0xe0,0xfe,0xa3,0xe0,0xff,0xad,0x03, +0xac,0x02,0x12,0x45,0x09,0xaa,0x06,0xab,0x07,0x90,0x91,0x15,0xe0,0x24,0x00,0xf5, +0x82,0xe4,0x34,0xfb,0xf5,0x83,0xe0,0x30,0xe7,0x08,0x90,0x91,0x19,0x74,0x02,0xf0, +0x80,0x05,0xe4,0x90,0x91,0x19,0xf0,0xaf,0x03,0x90,0x91,0x11,0xea,0x8f,0xf0,0x12, +0x42,0x81,0x90,0x91,0x5c,0xe0,0xfe,0xa3,0xe0,0xff,0x90,0x91,0x11,0xe0,0xfc,0xa3, +0xe0,0xfd,0xd3,0x9f,0xec,0x9e,0x40,0x1b,0x90,0x91,0x5d,0xe0,0x24,0x01,0xff,0x90, +0x91,0x5c,0xe0,0x34,0x00,0xfe,0xc3,0xed,0x9f,0xff,0xec,0x9e,0x90,0x91,0x11,0xf0, +0xa3,0xef,0xf0,0x90,0x91,0x16,0xe0,0xff,0x24,0x40,0x60,0x04,0x24,0x20,0x70,0x27, +0x90,0x91,0x5e,0xe0,0xfe,0xc4,0x13,0x13,0x13,0x54,0x01,0x20,0xe0,0x02,0x61,0x9c, +0xef,0x90,0x00,0x81,0xb4,0xa0,0x05,0xe0,0x44,0x04,0x80,0x03,0xe0,0x44,0x08,0xfd, +0x7f,0x81,0x12,0x4b,0xee,0x61,0x95,0x90,0x91,0x5e,0xe0,0xc4,0x13,0x13,0x54,0x03, +0x20,0xe0,0x02,0x61,0x9c,0x90,0x91,0x15,0xe0,0xff,0x24,0x00,0xf5,0x82,0xe4,0x34, +0xfb,0xf5,0x83,0xe0,0x54,0x0c,0x64,0x08,0x70,0x72,0x90,0x91,0x19,0xe0,0xfe,0xef, +0x2e,0xff,0xa3,0xe0,0x2f,0xff,0x24,0x1e,0xf5,0x82,0xe4,0x34,0xfb,0xf5,0x83,0xe0, +0x64,0x88,0x70,0x58,0x74,0x1f,0x2f,0xf5,0x82,0xe4,0x34,0xfb,0xf5,0x83,0xe0,0x64, +0x8e,0x70,0x49,0x90,0x91,0x19,0xe0,0xff,0x90,0x91,0x15,0xe0,0x2f,0xff,0x90,0x91, +0x1a,0xe0,0x2f,0xff,0xa3,0xe0,0x2f,0xff,0x24,0x19,0xf5,0x82,0xe4,0x34,0xfb,0xf5, +0x83,0xe0,0x64,0x03,0x70,0x26,0x74,0x1e,0x2f,0xf5,0x82,0xe4,0x34,0xfb,0xf5,0x83, +0xe0,0x90,0x00,0x81,0x30,0xe3,0x05,0xe0,0x44,0x01,0x80,0x03,0xe0,0x44,0x02,0xfd, +0x7f,0x81,0x12,0x4b,0xee,0x90,0x91,0x56,0xe0,0x44,0x80,0xf0,0x90,0x91,0x56,0xe0, +0xff,0xc4,0x13,0x13,0x13,0x54,0x01,0x30,0xe0,0x02,0x31,0x4c,0x71,0xc9,0xbf,0x01, +0x13,0x90,0x91,0x11,0xe0,0xfe,0xa3,0xe0,0xff,0x12,0x44,0xb5,0x90,0x91,0x17,0xe0, +0x04,0xf0,0x21,0xd9,0xd0,0xd0,0x92,0xaf,0x22,0x90,0x91,0x56,0xe0,0xc4,0x13,0x13, +0x13,0x54,0x01,0x30,0xe0,0x11,0xe0,0x44,0x80,0xf0,0x90,0x91,0x5e,0xe0,0xc4,0x54, +0x0f,0x20,0xe0,0x03,0x7f,0x00,0x22,0x7f,0x01,0x22,0x8f,0x1f,0xe4,0x90,0x91,0x22, +0xf0,0xe5,0x1f,0x14,0xfe,0x90,0x91,0x22,0xe0,0xff,0xc3,0x9e,0x50,0x0e,0xef,0x04, +0xfd,0x12,0x2d,0x4d,0x90,0x91,0x22,0xe0,0x04,0xf0,0x80,0xe5,0xe5,0x1f,0x14,0xff, +0x7d,0xff,0x12,0x2d,0x4d,0x90,0x91,0x22,0xe5,0x1f,0xf0,0x90,0x91,0x22,0xe0,0xc3, +0x94,0xff,0x50,0x0f,0xe0,0xff,0x04,0xfd,0x12,0x2d,0x4d,0x90,0x91,0x22,0xe0,0x04, +0xf0,0x80,0xe8,0xad,0x1f,0x7f,0xff,0x02,0x2d,0x4d,0xc3,0xee,0x94,0x01,0x40,0x0a, +0x0d,0xed,0x13,0x90,0xfd,0x10,0xf0,0xe4,0x2f,0xff,0x22,0xc3,0xee,0x94,0x01,0x40, +0x1e,0x90,0xfd,0x11,0xe0,0xb5,0x05,0x14,0x90,0x01,0x17,0xe0,0xb5,0x05,0x07,0x90, +0xfd,0x11,0xe4,0xf0,0x80,0x06,0xed,0x04,0x90,0xfd,0x11,0xf0,0xe4,0x2f,0xff,0x22, +0x14,0x25,}; + + + +u8 Rtl8192CUFwUMCBCutWWImgArray[UMCBCutWWImgArrayLength] = { +0xc2,0x88,0x02,0x00,0x51,0x00,0x00,0x00,0x03,0x23,0x16,0x45,0x66,0x34,0x01,0x00, +0x58,0x92,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x02,0x43,0x9d,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x02,0x4a,0x22,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x02,0x57,0xe1,0x00,0x00,0x00,0x00,0x00,0x02,0x58,0xc4,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0xbb,0x01,0x0c,0xe5,0x82,0x29,0xf5,0x82,0xe5,0x83,0x3a,0xf5,0x83,0xe0,0x22,0x50, +0x06,0xe9,0x25,0x82,0xf8,0xe6,0x22,0xbb,0xfe,0x06,0xe9,0x25,0x82,0xf8,0xe2,0x22, +0xe5,0x82,0x29,0xf5,0x82,0xe5,0x83,0x3a,0xf5,0x83,0xe4,0x93,0x22,0xbb,0x01,0x06, +0x89,0x82,0x8a,0x83,0xf0,0x22,0x50,0x02,0xf7,0x22,0xbb,0xfe,0x01,0xf3,0x22,0xf8, +0xbb,0x01,0x0d,0xe5,0x82,0x29,0xf5,0x82,0xe5,0x83,0x3a,0xf5,0x83,0xe8,0xf0,0x22, +0x50,0x06,0xe9,0x25,0x82,0xc8,0xf6,0x22,0xbb,0xfe,0x05,0xe9,0x25,0x82,0xc8,0xf2, +0x22,0xc5,0xf0,0xf8,0xa3,0xe0,0x28,0xf0,0xc5,0xf0,0xf8,0xe5,0x82,0x15,0x82,0x70, +0x02,0x15,0x83,0xe0,0x38,0xf0,0x22,0xbb,0x01,0x10,0xe5,0x82,0x29,0xf5,0x82,0xe5, +0x83,0x3a,0xf5,0x83,0xe0,0xf5,0xf0,0xa3,0xe0,0x22,0x50,0x09,0xe9,0x25,0x82,0xf8, +0x86,0xf0,0x08,0xe6,0x22,0xbb,0xfe,0x0a,0xe9,0x25,0x82,0xf8,0xe2,0xf5,0xf0,0x08, +0xe2,0x22,0xe5,0x83,0x2a,0xf5,0x83,0xe9,0x93,0xf5,0xf0,0xa3,0xe9,0x93,0x22,0xf8, +0xbb,0x01,0x11,0xe5,0x82,0x29,0xf5,0x82,0xe5,0x83,0x3a,0xf5,0x83,0xe8,0xf0,0xe5, +0xf0,0xa3,0xf0,0x22,0x50,0x09,0xe9,0x25,0x82,0xc8,0xf6,0x08,0xa6,0xf0,0x22,0xbb, +0xfe,0x09,0xe9,0x25,0x82,0xc8,0xf2,0xe5,0xf0,0x08,0xf2,0x22,0xef,0x4b,0xff,0xee, +0x4a,0xfe,0xed,0x49,0xfd,0xec,0x48,0xfc,0x22,0xe0,0xfc,0xa3,0xe0,0xfd,0xa3,0xe0, +0xfe,0xa3,0xe0,0xff,0x22,0xa4,0x25,0x82,0xf5,0x82,0xe5,0xf0,0x35,0x83,0xf5,0x83, +0x22,0xe0,0xfb,0xa3,0xe0,0xfa,0xa3,0xe0,0xf9,0x22,0xf8,0xe0,0xfb,0xa3,0xa3,0xe0, +0xf9,0x25,0xf0,0xf0,0xe5,0x82,0x15,0x82,0x70,0x02,0x15,0x83,0xe0,0xfa,0x38,0xf0, +0x22,0xeb,0xf0,0xa3,0xea,0xf0,0xa3,0xe9,0xf0,0x22,0xd0,0x83,0xd0,0x82,0xf8,0xe4, +0x93,0x70,0x12,0x74,0x01,0x93,0x70,0x0d,0xa3,0xa3,0x93,0xf8,0x74,0x01,0x93,0xf5, +0x82,0x88,0x83,0xe4,0x73,0x74,0x02,0x93,0x68,0x60,0xef,0xa3,0xa3,0xa3,0x80,0xdf, +0xd0,0x83,0xd0,0x82,0xf8,0xe4,0x93,0x70,0x12,0x74,0x01,0x93,0x70,0x0d,0xa3,0xa3, +0x93,0xf8,0x74,0x01,0x93,0xf5,0x82,0x88,0x83,0xe4,0x73,0x74,0x02,0x93,0xb5,0xf0, +0x06,0x74,0x03,0x93,0x68,0x60,0xe9,0xa3,0xa3,0xa3,0xa3,0x80,0xd8,0x02,0x43,0xdb, +0x02,0x50,0x34,0xe4,0x93,0xa3,0xf8,0xe4,0x93,0xa3,0x40,0x03,0xf6,0x80,0x01,0xf2, +0x08,0xdf,0xf4,0x80,0x29,0xe4,0x93,0xa3,0xf8,0x54,0x07,0x24,0x0c,0xc8,0xc3,0x33, +0xc4,0x54,0x0f,0x44,0x20,0xc8,0x83,0x40,0x04,0xf4,0x56,0x80,0x01,0x46,0xf6,0xdf, +0xe4,0x80,0x0b,0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80,0x90,0x44,0x20,0xe4,0x7e, +0x01,0x93,0x60,0xbc,0xa3,0xff,0x54,0x3f,0x30,0xe5,0x09,0x54,0x1f,0xfe,0xe4,0x93, +0xa3,0x60,0x01,0x0e,0xcf,0x54,0xc0,0x25,0xe0,0x60,0xa8,0x40,0xb8,0xe4,0x93,0xa3, +0xfa,0xe4,0x93,0xa3,0xf8,0xe4,0x93,0xa3,0xc8,0xc5,0x82,0xc8,0xca,0xc5,0x83,0xca, +0xf0,0xa3,0xc8,0xc5,0x82,0xc8,0xca,0xc5,0x83,0xca,0xdf,0xe9,0xde,0xe7,0x80,0xbe, +0x41,0x91,0x40,0x00,0x41,0x91,0x9c,0x00,0x41,0x91,0x23,0x80,0x41,0x91,0x24,0x80, +0x41,0x91,0x9e,0x00,0x41,0x91,0x52,0x00,0x41,0x91,0x93,0x00,0x41,0x91,0x91,0x00, +0x41,0x91,0x90,0x00,0x41,0x91,0x92,0x00,0x00,0xf0,0x90,0x91,0x30,0xe0,0x90,0x91, +0x67,0xf0,0xe4,0xfb,0xfd,0x7f,0x54,0x7e,0x01,0xd3,0x10,0xaf,0x01,0xc3,0xc0,0xd0, +0x90,0x91,0x65,0xeb,0xf0,0xa3,0xe0,0xfb,0xa3,0xe0,0xf5,0x44,0xe4,0xf5,0x45,0x12, +0x35,0xab,0xd0,0xd0,0x92,0xaf,0x22,0x90,0x01,0x5f,0xe4,0xf0,0x90,0x01,0x3c,0x74, +0x08,0xf0,0xe4,0x90,0x91,0x66,0xf0,0x90,0x91,0x2d,0xe0,0x90,0x91,0x67,0xf0,0xe4, +0xfb,0xfd,0x7f,0x5c,0x7e,0x01,0x91,0x59,0x90,0x01,0x5f,0x74,0x05,0xf0,0x90,0x06, +0x92,0x74,0x02,0xf0,0x90,0x91,0x36,0x14,0xf0,0xe5,0x6e,0x54,0x0f,0xc3,0x94,0x0c, +0x50,0x02,0xf1,0x23,0x22,0x90,0x02,0x84,0xef,0xf0,0xa3,0xee,0xf0,0xa3,0x74,0x05, +0xf0,0x22,0x7d,0x01,0xaf,0x6f,0xe1,0x27,0xf1,0xe6,0xbf,0x01,0x10,0x90,0x91,0x42, +0xe0,0xff,0xe4,0xfd,0x12,0x48,0x22,0x90,0x04,0x1f,0x74,0x20,0xf0,0x22,0x8f,0x82, +0x8e,0x83,0xa3,0xa3,0xa3,0xe4,0xf0,0x22,0xe4,0xf5,0x72,0x7f,0x60,0x7e,0x01,0x80, +0xed,0x7f,0x00,0x22,0x90,0x91,0x32,0xe0,0xa3,0xe0,0x90,0x05,0x58,0xf0,0x22,0x22, +0x22,0x22,0x22,0x02,0x5e,0x55,0x02,0x5e,0x5c,0xef,0x8e,0xf0,0x71,0x70,0x45,0x26, +0x00,0x40,0x45,0x4e,0x00,0x80,0x45,0x79,0x01,0x00,0x45,0x8d,0x02,0x00,0x45,0xa5, +0x04,0x00,0x00,0x00,0x45,0xc2,0xed,0x54,0x3f,0x70,0x04,0xfe,0xff,0x80,0x04,0x7e, +0x00,0x7f,0x40,0xef,0x2d,0xff,0xee,0x3c,0xfe,0xef,0x78,0x06,0xce,0xc3,0x13,0xce, +0x13,0xd8,0xf9,0x78,0x06,0xc3,0x33,0xce,0x33,0xce,0xd8,0xf9,0x80,0x26,0xed,0x54, +0x7f,0x70,0x04,0xfe,0xff,0x80,0x04,0x7e,0x00,0x7f,0x80,0xef,0x2d,0xff,0xee,0x3c, +0xfe,0xef,0x78,0x07,0xce,0xc3,0x13,0xce,0x13,0xd8,0xf9,0x78,0x07,0xc3,0x33,0xce, +0x33,0xce,0xd8,0xf9,0xfd,0xac,0x06,0x80,0x49,0xed,0x70,0x04,0xfe,0xff,0x80,0x04, +0x7e,0x01,0x7f,0x00,0xef,0x2d,0xee,0x3c,0x7d,0x00,0xfc,0x80,0x35,0xec,0x54,0x01, +0x4d,0x70,0x04,0xfe,0xff,0x80,0x04,0x7e,0x02,0x7f,0x00,0xef,0x2d,0xee,0x3c,0xc3, +0x13,0x7d,0x00,0x80,0x1a,0xec,0x54,0x03,0x4d,0x70,0x04,0xfe,0xff,0x80,0x04,0x7e, +0x04,0x7f,0x00,0xef,0x2d,0xee,0x3c,0x13,0x13,0x54,0x3f,0x7d,0x00,0x25,0xe0,0x25, +0xe0,0xfc,0xae,0x04,0xaf,0x05,0x22,0x90,0x91,0x09,0x12,0x2a,0x8b,0x00,0x00,0x00, +0x00,0x90,0x06,0xa9,0xe0,0x90,0x91,0x08,0xf0,0xe0,0x54,0xc0,0x70,0x0a,0x53,0x71, +0xfe,0x53,0x71,0xfd,0x91,0xc2,0x80,0x47,0x90,0x91,0x26,0xe0,0x60,0x41,0x90,0x91, +0x38,0xe0,0x70,0x3b,0x90,0x91,0x38,0x74,0x01,0xf0,0x7f,0x00,0x7e,0x08,0x12,0x27, +0xde,0x90,0x91,0x09,0x12,0x2a,0x7f,0x90,0x91,0x09,0x71,0x09,0xec,0x44,0x02,0xfc, +0x90,0x91,0x09,0x12,0x2a,0x7f,0x90,0x91,0x09,0x71,0x09,0x90,0x80,0x85,0x12,0x2a, +0x7f,0x7f,0x00,0x7e,0x08,0x12,0x2f,0xd9,0x90,0x02,0x86,0xe0,0x54,0xfb,0xf0,0x90, +0x91,0x08,0xe0,0x30,0xe6,0x13,0x43,0x71,0x01,0x90,0x91,0x3b,0xe0,0x64,0x02,0x60, +0x04,0x91,0xc8,0x80,0x07,0x91,0x77,0x80,0x03,0x53,0x71,0xfe,0x90,0x91,0x08,0xe0, +0x30,0xe7,0x16,0x43,0x71,0x02,0xe4,0x90,0x91,0x66,0x91,0x49,0x90,0x01,0x57,0x74, +0x05,0xf0,0x90,0x91,0x3c,0x74,0x01,0xf0,0x22,0x53,0x71,0xfd,0x22,0xd3,0x10,0xaf, +0x01,0xc3,0xc0,0xd0,0x8b,0x60,0x8a,0x61,0x89,0x62,0x90,0x91,0x68,0x71,0x41,0xab, +0x63,0xaa,0x64,0xa9,0x65,0x90,0x91,0x6b,0x71,0x41,0xaf,0x66,0x15,0x66,0xef,0x60, +0x1b,0x90,0x91,0x6b,0xe4,0x75,0xf0,0x01,0x71,0x2a,0x12,0x29,0xd9,0xff,0x90,0x91, +0x68,0xe4,0x75,0xf0,0x01,0x71,0x2a,0xef,0x51,0x4d,0x80,0xde,0xab,0x60,0xaa,0x61, +0xa9,0x62,0xd0,0xd0,0x92,0xaf,0x22,0xd3,0x10,0xaf,0x01,0xc3,0xc0,0xd0,0x90,0x91, +0x6e,0x71,0x41,0x90,0x91,0x9e,0xe0,0xff,0x04,0xf0,0x90,0x00,0x01,0xef,0x51,0x5f, +0x7f,0xaf,0x7e,0x01,0x12,0x64,0x88,0xef,0x60,0x44,0x90,0x91,0x6e,0x71,0x21,0x8b, +0x63,0x8a,0x64,0x89,0x65,0x75,0x66,0x02,0x7b,0x01,0x7a,0x01,0x79,0xa0,0xd1,0x6d, +0x90,0x91,0x71,0x71,0x21,0x8b,0x63,0x8a,0x64,0x89,0x65,0x90,0x91,0x6e,0x71,0x21, +0x12,0x29,0xd9,0xff,0xc4,0x54,0x0f,0xf5,0x66,0x7b,0x01,0x7a,0x01,0x79,0xa2,0xd1, +0x6d,0x90,0x01,0xaf,0x74,0xff,0xf0,0x90,0x01,0xcb,0xe0,0x64,0x80,0xf0,0xd0,0xd0, +0x92,0xaf,0x22,0x7d,0x01,0x7f,0x0c,0x90,0x91,0x95,0xed,0xf0,0x90,0x91,0x94,0xef, +0xf0,0x54,0x0f,0xff,0xe5,0x6e,0x54,0x0f,0x6f,0x60,0x76,0x90,0x91,0x94,0xe0,0x30, +0xe2,0x30,0xe5,0x6e,0x20,0xe2,0x05,0x7f,0x01,0x12,0x61,0x86,0xe5,0x6e,0x30,0xe3, +0x0f,0x90,0x91,0x94,0xe0,0x20,0xe3,0x08,0x12,0x60,0xb1,0xef,0x60,0x53,0x80,0x52, +0xe5,0x6e,0x20,0xe3,0x4c,0x90,0x91,0x94,0xe0,0x30,0xe3,0x45,0xa3,0xe0,0xff,0x02, +0x61,0x6b,0xe5,0x6e,0x54,0x0f,0xff,0xbf,0x0c,0x0f,0x90,0x91,0x94,0xe0,0x20,0xe3, +0x08,0x12,0x60,0xb1,0xef,0x60,0x2a,0xf1,0xb2,0xe5,0x6e,0x54,0x0f,0xff,0xbf,0x04, +0x10,0x90,0x91,0x94,0xe0,0x20,0xe2,0x09,0x12,0x60,0xfa,0xef,0x60,0x13,0x12,0x48, +0xce,0xe5,0x6e,0x54,0x0f,0xff,0xbf,0x02,0x08,0x91,0xf1,0xef,0x60,0x03,0x12,0x62, +0x6c,0x22,0x90,0x06,0x04,0xe0,0x44,0x40,0xf0,0xe5,0x6d,0xb4,0x01,0x04,0x7f,0x01, +0xf1,0xc9,0x53,0x6e,0xf0,0x43,0x6e,0x04,0x22,0x8f,0x67,0xf1,0xe6,0xbf,0x01,0x15, +0x90,0x91,0x43,0x12,0x48,0x1e,0xad,0x07,0xac,0x06,0xaf,0x67,0x12,0x60,0x16,0x90, +0x04,0x1f,0x74,0x20,0xf0,0x22,0xd3,0x10,0xaf,0x01,0xc3,0xc0,0xd0,0x90,0x01,0xc4, +0x74,0xe6,0xf0,0x74,0x47,0xa3,0xf0,0x90,0x04,0x1d,0xe0,0x60,0x1a,0x90,0x05,0x22, +0xe0,0x54,0x90,0x60,0x07,0x90,0x01,0xc6,0xe0,0x44,0x40,0xf0,0x90,0x01,0xc7,0xe0, +0x30,0xe1,0xe4,0x7f,0x00,0x80,0x02,0x7f,0x01,0xd0,0xd0,0x92,0xaf,0x22,0xe0,0xff, +0x7d,0x01,0x90,0x91,0x74,0xef,0xf0,0xa3,0xed,0xf0,0xe4,0xa3,0xf0,0xa3,0xf0,0xe5, +0x70,0x60,0x04,0xe4,0xff,0x11,0xb3,0x90,0x91,0x74,0xe0,0x30,0xe0,0x09,0x90,0x91, +0x76,0xe4,0xf0,0xa3,0x74,0x80,0xf0,0x90,0x91,0x74,0xe0,0xff,0xc3,0x13,0x90,0xfd, +0x10,0xf0,0x90,0x04,0x25,0xef,0xf0,0x90,0x91,0x75,0xe0,0x60,0x1f,0xa3,0xa3,0xe0, +0xff,0x24,0x0f,0xf5,0x82,0xe4,0x34,0xfc,0xf5,0x83,0xe0,0x44,0x80,0xf0,0x74,0x10, +0x2f,0xf5,0x82,0xe4,0x34,0xfc,0xf5,0x83,0xe0,0x44,0x80,0xf0,0x90,0x91,0x76,0xa3, +0xe0,0xff,0xfd,0x24,0x08,0xf5,0x82,0xe4,0x34,0xfc,0xf5,0x83,0xe4,0xf0,0x74,0x09, +0x2d,0xf5,0x82,0xe4,0x34,0xfc,0xf5,0x83,0xe0,0x54,0xf0,0xf0,0x74,0x21,0x2f,0xf5, +0x82,0xe4,0x34,0xfc,0xf5,0x83,0xe0,0x54,0xf7,0xf0,0x90,0x91,0x76,0xe0,0xfe,0xa3, +0xe0,0xff,0x22,0xef,0x60,0x0b,0x90,0x91,0x51,0xe0,0xb4,0x01,0x10,0xe4,0xff,0x80, +0x09,0x90,0x91,0x51,0xe0,0xb4,0x01,0x05,0x7f,0x01,0x12,0x69,0x87,0x22,0x90,0x01, +0x37,0x74,0x02,0xf0,0x90,0x05,0x22,0x74,0xff,0xf0,0x12,0x68,0x7c,0xef,0x70,0x06, +0x90,0x01,0xc8,0x74,0xfd,0xf0,0x7d,0x02,0x7f,0x03,0x12,0x36,0xe6,0xe5,0x70,0x60, +0x04,0x7f,0x01,0x11,0xb3,0x12,0x68,0xbd,0x53,0x6e,0xf0,0x43,0x6e,0x02,0x22,0xef, +0x64,0x01,0x70,0x42,0x7d,0x78,0x7f,0x02,0x12,0x36,0x75,0x7d,0x02,0x7f,0x03,0x12, +0x36,0x75,0x90,0x01,0x36,0x74,0x03,0xf0,0xfd,0x7f,0x02,0x12,0x36,0xe6,0x7d,0x10, +0x7f,0x03,0x12,0x36,0x92,0x90,0x01,0x57,0xe4,0xf0,0x90,0x01,0x3c,0x74,0x02,0xf0, +0x12,0x47,0x23,0xe4,0xff,0x11,0xb3,0x90,0x06,0x04,0xe0,0x54,0x7f,0xf0,0x90,0x06, +0x0a,0xe0,0x54,0xf8,0xf0,0x22,0x90,0x01,0x36,0x74,0x7b,0xf0,0xa3,0x74,0x02,0xf0, +0x7d,0x7b,0xff,0x12,0x36,0xe6,0x7d,0x02,0x7f,0x03,0x12,0x36,0xe6,0x7d,0x10,0x7f, +0x03,0x12,0x36,0x92,0x90,0x06,0x04,0xe0,0x44,0x80,0xf0,0x90,0x06,0x0a,0xe0,0x44, +0x07,0xf0,0x12,0x44,0xf4,0xe5,0x6d,0x20,0xe0,0x05,0xe4,0x90,0x91,0x29,0xf0,0x22, +0x8b,0x0e,0x8a,0x0f,0x89,0x10,0xf1,0xf2,0xab,0x0e,0xaa,0x0f,0xa9,0x10,0x12,0x29, +0xd9,0xf5,0x70,0x14,0x60,0x0e,0x14,0x60,0x1e,0x14,0x60,0x2f,0x24,0x03,0x70,0x40, +0x7f,0x01,0x80,0x3a,0xab,0x0e,0xaa,0x0f,0xa9,0x10,0x90,0x00,0x02,0x12,0x42,0x20, +0xfd,0xe4,0xff,0x31,0xe1,0x80,0x27,0xab,0x0e,0xaa,0x0f,0xa9,0x10,0x90,0x00,0x02, +0x12,0x42,0x20,0xfd,0x7f,0x01,0x31,0xe1,0x1f,0x80,0x13,0xab,0x0e,0xaa,0x0f,0xa9, +0x10,0x90,0x00,0x02,0x12,0x42,0x20,0xfd,0x7f,0x02,0x31,0xe1,0xe4,0xff,0x11,0xff, +0x22,0xef,0x24,0xfe,0x60,0x0b,0x04,0x70,0x22,0x90,0x91,0x39,0x74,0x01,0xf0,0x80, +0x16,0xed,0x70,0x0a,0x90,0x91,0x35,0xe0,0x90,0x91,0x39,0xf0,0x80,0x05,0x90,0x91, +0x39,0xed,0xf0,0x90,0x91,0x39,0xe0,0x90,0x91,0x27,0xf0,0x22,0x12,0x47,0xe6,0xbf, +0x01,0x0f,0x90,0x02,0x09,0xe0,0xff,0x7d,0x01,0x11,0x22,0x90,0x04,0x1f,0x74,0x20, +0xf0,0x22,0xc0,0xe0,0xc0,0xf0,0xc0,0x83,0xc0,0x82,0xc0,0xd0,0x75,0xd0,0x00,0xc0, +0x00,0xc0,0x01,0xc0,0x02,0xc0,0x03,0xc0,0x04,0xc0,0x05,0xc0,0x06,0xc0,0x07,0x90, +0x01,0xc4,0x74,0x22,0xf0,0x74,0x4a,0xa3,0xf0,0x90,0x01,0x34,0xe0,0x55,0x28,0xf5, +0x2c,0x90,0x01,0x36,0xe0,0x55,0x2a,0xf5,0x2e,0xa3,0xe0,0x55,0x2b,0xf5,0x2f,0xe5, +0x2c,0x30,0xe0,0x5a,0x90,0x01,0x34,0x74,0x01,0xf0,0x85,0xd9,0x54,0xe5,0x70,0x14, +0x24,0xfd,0x50,0x02,0x80,0x48,0x90,0x91,0x3b,0xe0,0x60,0x3a,0x90,0x01,0x5b,0xe4, +0xf0,0x90,0x01,0x3c,0x74,0x04,0xf0,0x91,0x89,0xef,0x64,0x01,0x70,0x30,0x90,0x91, +0x66,0xf0,0x90,0x91,0x2d,0xe0,0x90,0x91,0x67,0xf0,0xe4,0xfb,0xfd,0x7f,0x58,0x7e, +0x01,0x12,0x44,0x59,0x90,0x01,0x5b,0x74,0x05,0xf0,0x90,0x06,0x92,0x74,0x01,0xf0, +0x90,0x91,0x37,0xf0,0x80,0x08,0x91,0x89,0xbf,0x01,0x03,0x12,0x44,0xc2,0xe5,0x2c, +0x30,0xe1,0x21,0x90,0x01,0x34,0x74,0x02,0xf0,0x85,0xd1,0x58,0x85,0xd2,0x59,0x85, +0xd3,0x5a,0x85,0xd4,0x5b,0x85,0xd5,0x5c,0x85,0xd6,0x5d,0x85,0xd7,0x5e,0x85,0xd9, +0x5f,0x12,0x64,0x66,0xe5,0x2c,0x30,0xe3,0x10,0x90,0x01,0x34,0x74,0x08,0xf0,0x90, +0x91,0x56,0xe0,0x30,0xe0,0x03,0x43,0x57,0x04,0xe5,0x2c,0x30,0xe4,0x09,0x90,0x01, +0x34,0x74,0x10,0xf0,0x43,0x57,0x10,0xe5,0x2c,0x30,0xe5,0x24,0x90,0x01,0xcf,0xe0, +0x30,0xe5,0x1d,0xe0,0x54,0xdf,0xf0,0x90,0x01,0x34,0x74,0x20,0xf0,0x75,0xa8,0x00, +0x75,0xe8,0x00,0xd1,0x65,0x90,0x00,0x03,0xe0,0x54,0xfb,0xf0,0x91,0xa0,0x80,0xfe, +0xe5,0x2c,0x30,0xe6,0x06,0x90,0x01,0x34,0x74,0x40,0xf0,0xe5,0x2e,0x30,0xe0,0x15, +0x90,0x91,0x50,0x74,0x01,0xf0,0x90,0x01,0x36,0xf0,0x12,0x63,0x2e,0x12,0x70,0xee, +0x90,0x91,0x50,0xe4,0xf0,0xe5,0x2e,0x30,0xe1,0x3b,0x90,0x01,0x36,0x74,0x02,0xf0, +0x43,0x57,0x40,0x90,0x01,0x02,0xe0,0x54,0x03,0x64,0x01,0x70,0x28,0x90,0x01,0x37, +0xe0,0x30,0xe0,0x0a,0x74,0x01,0xf0,0x90,0x91,0x40,0xe4,0xf0,0x80,0x17,0x90,0x91, +0x40,0xe0,0x04,0xf0,0xe0,0xc3,0x94,0x0a,0x40,0x0b,0xe4,0xf0,0x90,0x04,0x19,0xe0, +0x30,0xe0,0x02,0x51,0x0c,0xe5,0x2e,0x30,0xe2,0x1a,0x90,0x01,0x36,0x74,0x04,0xf0, +0x90,0x91,0x3a,0xe4,0xf0,0x90,0x05,0x58,0x74,0x03,0xf0,0x12,0x62,0xb8,0x90,0x91, +0x3f,0xe0,0x04,0xf0,0xe5,0x2e,0x30,0xe3,0x28,0x90,0x01,0x36,0x74,0x08,0xf0,0xe5, +0x6d,0x64,0x01,0x70,0x1c,0xe5,0x70,0x60,0x18,0x90,0x01,0x57,0xe4,0xf0,0x90,0x01, +0x3c,0x74,0x02,0xf0,0x90,0x91,0x66,0xe4,0x12,0x44,0x49,0x90,0x01,0x57,0x74,0x05, +0xf0,0xe5,0x2e,0x30,0xe4,0x2b,0x90,0x01,0x36,0x74,0x10,0xf0,0xe5,0x6d,0xb4,0x01, +0x20,0xe5,0x70,0x60,0x1c,0x90,0x01,0x57,0xe4,0xf0,0x90,0x01,0x3c,0x74,0x02,0xf0, +0x90,0x91,0x3c,0xe4,0xf0,0x53,0x71,0xfd,0xe5,0x71,0x54,0x07,0x70,0x03,0x12,0x44, +0xc2,0xe5,0x2e,0x30,0xe5,0x1f,0x90,0x01,0x36,0x74,0x20,0xf0,0xe5,0x6d,0xb4,0x01, +0x14,0xe5,0x70,0x60,0x10,0x90,0x91,0x3b,0xe0,0x64,0x02,0x60,0x05,0x12,0x44,0xc8, +0x80,0x03,0x12,0x44,0x77,0xe5,0x2e,0x30,0xe6,0x1b,0x90,0x01,0x36,0x74,0x40,0xf0, +0xe5,0x6d,0xb4,0x01,0x10,0xe5,0x70,0x60,0x0c,0x53,0x71,0xfe,0xe5,0x71,0x54,0x07, +0x70,0x03,0x12,0x44,0xc2,0xe5,0x2f,0x30,0xe1,0x09,0x90,0x01,0x37,0x74,0x02,0xf0, +0x12,0x64,0x31,0x74,0x22,0x04,0x90,0x01,0xc4,0xf0,0x74,0x4a,0xa3,0xf0,0xd0,0x07, +0xd0,0x06,0xd0,0x05,0xd0,0x04,0xd0,0x03,0xd0,0x02,0xd0,0x01,0xd0,0x00,0xd0,0xd0, +0xd0,0x82,0xd0,0x83,0xd0,0xf0,0xd0,0xe0,0x32,0x90,0x04,0x1b,0xe0,0x54,0x7f,0x64, +0x7f,0x7f,0x01,0x60,0x02,0x7f,0x00,0x22,0xf4,0xff,0x90,0x00,0x43,0xe0,0x5f,0xf0, +0xd3,0x10,0xaf,0x01,0xc3,0xc0,0xd0,0x7f,0x10,0xdf,0xfe,0xd0,0xd0,0x92,0xaf,0x22, +0xd3,0x10,0xaf,0x01,0xc3,0xc0,0xd0,0x90,0x91,0x9b,0xed,0xf0,0x90,0x91,0x9a,0xef, +0xf0,0xd3,0x94,0x07,0x50,0x63,0xe0,0xff,0x74,0x01,0xa8,0x07,0x08,0x80,0x02,0xc3, +0x33,0xd8,0xfc,0xf4,0xff,0x90,0x00,0x47,0xe0,0x5f,0xf0,0x91,0xa0,0x90,0x91,0x9a, +0xe0,0xff,0x74,0x01,0xa8,0x07,0x08,0x80,0x02,0xc3,0x33,0xd8,0xfc,0xff,0x90,0x00, +0x46,0xe0,0x4f,0xf0,0x91,0xa0,0x90,0x91,0x9b,0xe0,0x60,0x16,0x90,0x91,0x9a,0xe0, +0xff,0x74,0x01,0xa8,0x07,0x08,0x80,0x02,0xc3,0x33,0xd8,0xfc,0xff,0x90,0x00,0x45, +0x80,0x66,0x90,0x91,0x9a,0xe0,0xff,0x74,0x01,0xa8,0x07,0x08,0x80,0x02,0xc3,0x33, +0xd8,0xfc,0xf4,0xff,0x90,0x00,0x45,0x80,0x6b,0x90,0x91,0x9a,0xe0,0x24,0xf8,0xf0, +0xe0,0xff,0x74,0x01,0xa8,0x07,0x08,0x80,0x02,0xc3,0x33,0xd8,0xfc,0xc4,0x54,0xf0, +0x91,0x98,0x90,0x91,0x9a,0xe0,0xff,0x74,0x01,0xa8,0x07,0x08,0x80,0x02,0xc3,0x33, +0xd8,0xfc,0xff,0x90,0x00,0x43,0xe0,0x4f,0xf0,0x91,0xa0,0x90,0x91,0x9b,0xe0,0x60, +0x1b,0x90,0x91,0x9a,0xe0,0xff,0x74,0x01,0xa8,0x07,0x08,0x80,0x02,0xc3,0x33,0xd8, +0xfc,0xc4,0x54,0xf0,0xff,0x90,0x00,0x42,0xe0,0x4f,0x80,0x1a,0x90,0x91,0x9a,0xe0, +0xff,0x74,0x01,0xa8,0x07,0x08,0x80,0x02,0xc3,0x33,0xd8,0xfc,0xc4,0x54,0xf0,0xf4, +0xff,0x90,0x00,0x42,0xe0,0x5f,0xf0,0x91,0xa0,0xd0,0xd0,0x92,0xaf,0x22,0xf0,0x90, +0x00,0x45,0xe0,0x54,0xfe,0xfd,0x7f,0x45,0xd3,0x10,0xaf,0x01,0xc3,0xc0,0xd0,0x8f, +0x82,0x75,0x83,0x00,0xed,0xf0,0x91,0xa0,0xd0,0xd0,0x92,0xaf,0x22,0xef,0x14,0x60, +0x30,0x14,0x60,0x66,0x24,0x02,0x60,0x02,0xc1,0x64,0x90,0x90,0xf3,0x74,0x02,0xf0, +0x90,0x00,0x48,0xe0,0x44,0x0c,0xfd,0x7f,0x48,0xb1,0xa8,0x90,0x00,0x47,0xe0,0x44, +0x08,0xfd,0x7f,0x47,0xb1,0xa8,0x90,0x00,0x45,0xe0,0x44,0x10,0xfd,0x7f,0x45,0x80, +0x71,0xe4,0x90,0x90,0xf3,0xf0,0x90,0x90,0xef,0x12,0x43,0x09,0x90,0x80,0x85,0x12, +0x2a,0x7f,0x7f,0x80,0x7e,0x08,0x12,0x2f,0xd9,0x90,0x00,0x45,0xe0,0x44,0xef,0xfd, +0x7f,0x45,0xb1,0xa8,0x90,0x00,0x45,0xe0,0x54,0xef,0xfd,0x7f,0x45,0xb1,0xa8,0x90, +0x00,0x46,0xe0,0x44,0x10,0xfd,0x7f,0x46,0x80,0x38,0x90,0x90,0xf3,0x74,0x01,0xf0, +0x90,0x90,0xf9,0x12,0x43,0x09,0x90,0x80,0x85,0x12,0x2a,0x7f,0x7f,0x80,0x7e,0x08, +0x12,0x2f,0xd9,0x90,0x00,0x45,0xe0,0x44,0x20,0xfd,0x7f,0x45,0xb1,0xa8,0x90,0x00, +0x45,0xe0,0x44,0x10,0xfd,0x7f,0x45,0xb1,0xa8,0x90,0x00,0x46,0xe0,0x44,0x10,0xfd, +0x7f,0x46,0xb1,0xa8,0x22,0x90,0x01,0x30,0xe4,0xf0,0xa3,0xf0,0xa3,0xf0,0xa3,0xf0, +0x90,0x01,0x38,0xf0,0xa3,0xf0,0xa3,0xf0,0xa3,0xf0,0xfd,0x7f,0x50,0xb1,0xa8,0xe4, +0xfd,0x7f,0x51,0xb1,0xa8,0xe4,0xfd,0x7f,0x52,0xb1,0xa8,0xe4,0xfd,0x7f,0x53,0xa1, +0xa8,0x8b,0x0e,0x8a,0x0f,0x89,0x10,0x90,0x00,0x02,0x12,0x42,0x20,0x90,0x90,0xf6, +0xf0,0xe0,0x30,0xe0,0x4b,0x90,0x90,0xed,0x74,0x01,0xf0,0x7f,0x80,0x7e,0x08,0x12, +0x27,0xde,0x90,0x90,0xef,0x12,0x2a,0x7f,0xab,0x0e,0xaa,0x0f,0xa9,0x10,0x90,0x00, +0x01,0x12,0x42,0x20,0xff,0xe4,0xfc,0xfd,0xfe,0x78,0x1a,0x12,0x2a,0x6c,0xa8,0x04, +0xa9,0x05,0xaa,0x06,0xab,0x07,0x90,0x90,0xef,0x12,0x43,0x09,0xec,0x54,0x03,0xfc, +0x12,0x42,0xfc,0x90,0x90,0xf9,0x12,0x2a,0x7f,0x90,0x05,0x22,0xe4,0xf0,0x80,0x2d, +0xe4,0x90,0x90,0xed,0xf0,0x7f,0x80,0x7e,0x08,0x12,0x27,0xde,0xec,0x54,0x03,0xfc, +0xec,0x44,0xc0,0xfc,0x90,0x90,0xef,0x12,0x2a,0x7f,0x90,0x90,0xef,0x12,0x43,0x09, +0x90,0x80,0x85,0x12,0x2a,0x7f,0x7f,0x80,0x7e,0x08,0x12,0x2f,0xd9,0x90,0x90,0xf6, +0xe0,0x30,0xe1,0x19,0x7d,0x0c,0x7f,0x47,0xb1,0xa8,0x90,0x00,0x48,0xe0,0x44,0x0c, +0xfd,0x7f,0x48,0xb1,0xa8,0x90,0x00,0x46,0xe0,0x44,0x10,0x80,0x1c,0x90,0x00,0x47, +0xe0,0x54,0xf3,0xfd,0x7f,0x47,0xb1,0xa8,0x90,0x00,0x48,0xe0,0x54,0xf3,0xfd,0x7f, +0x48,0xb1,0xa8,0x90,0x00,0x46,0xe0,0x54,0xef,0xfd,0x7f,0x46,0xb1,0xa8,0xe4,0x90, +0x90,0xf3,0xf0,0x22,0x90,0x01,0x3c,0x74,0xff,0xf0,0xa3,0xf0,0xa3,0xf0,0x90,0x01, +0x34,0xf0,0xa3,0xf0,0xa3,0xf0,0xa3,0xf0,0xfd,0x7f,0x54,0xb1,0xa8,0x7d,0xff,0x7f, +0x55,0xb1,0xa8,0x7d,0xff,0x7f,0x56,0xb1,0xa8,0x7d,0xff,0x7f,0x57,0xa1,0xa8,0xe5, +0x72,0x64,0x01,0x70,0x3e,0x12,0x54,0x41,0xbf,0x01,0x05,0x7f,0x01,0x12,0x56,0xe7, +0x90,0x00,0x46,0xe0,0x44,0x04,0xfd,0x7f,0x46,0xb1,0xa8,0x90,0x00,0x44,0xe0,0x54, +0xfb,0xfd,0x7f,0x44,0xb1,0xa8,0x90,0x00,0x46,0xe0,0x54,0xfb,0xfd,0x7f,0x46,0xb1, +0xa8,0x7f,0x02,0x12,0x6f,0x09,0x8f,0x76,0x90,0x01,0xc9,0xe5,0x76,0xf0,0xb4,0x01, +0x02,0xf1,0xd4,0x22,0x90,0x00,0x49,0xe0,0x90,0x91,0x9f,0xf0,0xe0,0x54,0x0f,0xf0, +0x44,0xf0,0xfd,0x7f,0x49,0xb1,0xa8,0x90,0x91,0x9f,0xe0,0x44,0xb0,0xfd,0x7f,0x49, +0xa1,0xa8,0xe4,0x90,0x91,0x3c,0xf0,0x90,0x91,0x28,0xf0,0xf5,0x71,0x22,0x75,0x28, +0x33,0xe4,0xf5,0x29,0x75,0x2a,0x07,0xf5,0x2b,0x90,0x01,0x30,0xe5,0x28,0xf0,0xa3, +0xe5,0x29,0xf0,0xa3,0xe5,0x2a,0xf0,0xa3,0xe5,0x2b,0xf0,0x22,0x75,0x30,0x1f,0x75, +0x31,0x01,0xe4,0xf5,0x32,0x90,0x01,0x38,0xe5,0x30,0xf0,0xa3,0xe5,0x31,0xf0,0xa3, +0xe5,0x32,0xf0,0x22,0xe4,0x90,0x91,0x0e,0xf0,0xa3,0xf0,0x75,0x8e,0x02,0xf1,0x02, +0xd1,0xb4,0x90,0x91,0x4f,0xef,0xf0,0xd1,0xdb,0x90,0x91,0x51,0xef,0xf0,0xf1,0x3d, +0x90,0x91,0x3d,0xee,0xf0,0xa3,0xef,0xf0,0xe4,0xf5,0x57,0xd1,0xd2,0x12,0x60,0x37, +0x12,0x32,0x3d,0xd1,0xc1,0x12,0x4f,0xfe,0xf1,0x13,0xd1,0xcb,0x11,0x1c,0x12,0x44, +0xff,0x31,0x23,0x11,0xdf,0x12,0x6f,0xaa,0x90,0x91,0x10,0xe5,0xd9,0xf0,0x12,0x4f, +0x64,0xc2,0xaf,0x90,0x00,0x80,0xe0,0x44,0x40,0xf0,0x12,0x4c,0xa0,0x75,0xe8,0x03, +0x43,0xa8,0x85,0xd2,0xaf,0x90,0x91,0x0e,0xe0,0x64,0x01,0xf0,0x24,0x34,0x90,0x01, +0xc4,0xf0,0x74,0x50,0xa3,0xf0,0xe5,0x57,0x30,0xe2,0x10,0x12,0x5e,0x63,0xbf,0x01, +0x0a,0xc2,0xaf,0x53,0x57,0xfb,0xd2,0xaf,0x12,0x71,0x8a,0xe5,0x57,0x30,0xe4,0x0a, +0xc2,0xaf,0x53,0x57,0xef,0xd2,0xaf,0x12,0x5e,0xa0,0x90,0x90,0xf7,0xe0,0x70,0x03, +0x12,0x70,0x08,0x11,0xf7,0x90,0x91,0x3f,0xe0,0x90,0x01,0xba,0xf0,0x80,0xb6,0x90, +0x91,0x53,0xe0,0x54,0xfe,0xf0,0xe4,0x90,0x91,0x55,0xf0,0x90,0x91,0x53,0xe0,0x54, +0x7f,0xf0,0xa3,0x74,0x0a,0xf0,0x22,0x90,0x06,0x34,0xe0,0x60,0x25,0x14,0x70,0x1b, +0x7b,0x01,0x7a,0x06,0x79,0x35,0x7f,0xf9,0x7e,0x01,0x12,0x68,0x1a,0xbf,0x01,0x09, +0x90,0x06,0x35,0xe0,0x54,0x0f,0xf0,0x80,0x04,0x80,0x00,0xc1,0xf4,0xe4,0x90,0x06, +0x34,0xf0,0x22,0x90,0x91,0x56,0xe0,0x54,0xfe,0xf0,0xe0,0x54,0x7f,0xf0,0x90,0x01, +0x17,0xe0,0xfe,0x90,0x01,0x16,0xe0,0x7c,0x00,0x24,0x00,0xff,0xec,0x3e,0x90,0x91, +0x5c,0xf0,0xa3,0xef,0xf0,0x90,0x01,0x04,0xe0,0x54,0x0f,0x90,0x91,0x1c,0xf0,0xe0, +0xff,0x74,0x40,0x7e,0x00,0xa8,0x07,0x08,0x80,0x05,0xc3,0x33,0xce,0x33,0xce,0xd8, +0xf9,0x90,0x91,0x5b,0xf0,0xee,0x90,0x91,0x5a,0xf0,0x90,0x91,0x5e,0xe0,0x54,0xfe, +0xf0,0xe0,0x54,0xfd,0xf0,0xe0,0x54,0xfb,0xf0,0xe0,0x54,0xf7,0xf0,0xe0,0x54,0xef, +0xf0,0xe0,0x54,0xdf,0xf0,0xe0,0x54,0xbf,0xf0,0xe0,0x54,0x7f,0xf0,0xe4,0xa3,0xf0, +0xa3,0xf0,0xa3,0xe0,0x54,0xfe,0xf0,0xe0,0x54,0xfd,0xf0,0xe0,0x54,0xf7,0xf0,0x22, +0xd3,0x10,0xaf,0x01,0xc3,0xc0,0xd0,0x12,0x29,0xd9,0x54,0x01,0xff,0x90,0x91,0x56, +0xe0,0x54,0xfe,0x4f,0xf0,0x90,0x00,0x01,0x12,0x42,0x20,0x90,0x91,0x57,0xf0,0x90, +0x00,0x02,0x12,0x42,0x20,0x90,0x91,0x58,0xf0,0x90,0x91,0x56,0xe0,0x30,0xe0,0x1a, +0x90,0x06,0x09,0xe0,0x54,0xfe,0xf0,0x90,0x02,0x86,0xe0,0x44,0x04,0xf0,0x43,0x57, +0x04,0x7d,0x08,0xe4,0xff,0x12,0x36,0xe6,0x80,0x12,0x7d,0x08,0xe4,0xff,0x12,0x36, +0x75,0x90,0x02,0x86,0xe0,0x54,0xfb,0xf0,0x51,0x01,0x31,0x23,0xd0,0xd0,0x92,0xaf, +0x22,0x90,0x06,0x90,0xe4,0xf0,0x21,0x6a,0x90,0x91,0x19,0x12,0x43,0x41,0xef,0x12, +0x43,0x4a,0x52,0x40,0x01,0x52,0x49,0x02,0x52,0x6a,0x03,0x52,0x73,0x09,0x52,0x7b, +0x0c,0x52,0x84,0x0d,0x52,0x8c,0x0e,0x52,0x9d,0x1a,0x52,0xa5,0x2c,0x52,0x51,0x2d, +0x52,0x5a,0x2e,0x52,0xad,0x30,0x52,0x62,0x3b,0x52,0x95,0x3c,0x00,0x00,0x52,0xb5, +0x90,0x91,0x19,0x12,0x43,0x21,0x02,0x64,0xde,0x90,0x91,0x19,0x12,0x43,0x21,0xc1, +0xc5,0x90,0x91,0x19,0x12,0x43,0x21,0x02,0x65,0xf9,0x90,0x91,0x19,0x12,0x43,0x21, +0xe1,0xa8,0x90,0x91,0x19,0x12,0x43,0x21,0xe1,0x28,0x90,0x91,0x19,0x12,0x43,0x21, +0x02,0x66,0x41,0x90,0x91,0x19,0x12,0x43,0x21,0x80,0x42,0x90,0x91,0x19,0x12,0x43, +0x21,0x02,0x5d,0x16,0x90,0x91,0x19,0x12,0x43,0x21,0xe1,0x75,0x90,0x91,0x19,0x12, +0x43,0x21,0x02,0x4e,0x91,0x90,0x91,0x19,0x12,0x43,0x21,0x21,0xa0,0x90,0x91,0x19, +0x12,0x43,0x21,0xa1,0x7f,0x90,0x91,0x19,0x12,0x43,0x21,0x81,0x5e,0x90,0x91,0x19, +0x12,0x43,0x21,0xe1,0x55,0x90,0x01,0xc6,0xe0,0x44,0x01,0xf0,0x22,0xd3,0x10,0xaf, +0x01,0xc3,0xc0,0xd0,0x90,0x91,0x1c,0x12,0x43,0x41,0x90,0x91,0x1c,0x12,0x43,0x21, +0x90,0x00,0x01,0x12,0x42,0x97,0xfa,0xe5,0xf0,0x24,0x00,0xff,0xe4,0x3a,0xfe,0x90, +0x91,0x1c,0x12,0x43,0x21,0x90,0x00,0x01,0xee,0x8f,0xf0,0x12,0x42,0xcf,0x12,0x29, +0xd9,0xff,0x60,0x2c,0xb5,0x72,0x16,0x90,0x91,0x1c,0x12,0x43,0x21,0x90,0x00,0x01, +0x12,0x42,0x97,0x65,0x74,0x70,0x04,0xe5,0x73,0x65,0xf0,0x60,0x23,0x90,0x91,0x1c, +0x12,0x43,0x21,0x90,0x00,0x01,0x12,0x42,0x97,0xff,0xae,0xf0,0x71,0x35,0x80,0x10, +0x90,0x91,0x1c,0x12,0x43,0x21,0x12,0x29,0xd9,0x65,0x72,0x60,0x03,0x12,0x44,0xe8, +0xd0,0xd0,0x92,0xaf,0x22,0x90,0x91,0x1f,0xee,0xf0,0xa3,0xef,0xf0,0x75,0x72,0x01, +0x8e,0x73,0xf5,0x74,0xe4,0xfd,0x7f,0x0b,0x71,0x77,0xe4,0xfd,0x7f,0x02,0x71,0x77, +0x91,0x41,0xe4,0xff,0xd1,0xe7,0xe4,0xf5,0x76,0x90,0x01,0xc9,0xe5,0x76,0xf0,0x90, +0x91,0x1f,0xe0,0xfc,0xa3,0xe0,0xfd,0xec,0xfb,0x8d,0x44,0xe4,0xf5,0x45,0x7d,0x01, +0x7f,0x60,0x7e,0x01,0x02,0x35,0xab,0xd3,0x10,0xaf,0x01,0xc3,0xc0,0xd0,0x90,0x91, +0x22,0xed,0xf0,0x90,0x91,0x21,0xef,0xf0,0xd3,0x94,0x07,0x50,0x4f,0xa3,0xe0,0x70, +0x1a,0x90,0x91,0x21,0xe0,0xff,0x74,0x01,0xa8,0x07,0x08,0x80,0x02,0xc3,0x33,0xd8, +0xfc,0xf4,0xff,0x90,0x00,0x47,0xe0,0x5f,0xf0,0x80,0x17,0x90,0x91,0x21,0xe0,0xff, +0x74,0x01,0xa8,0x07,0x08,0x80,0x02,0xc3,0x33,0xd8,0xfc,0xff,0x90,0x00,0x47,0xe0, +0x4f,0xf0,0x12,0x4c,0xa0,0x90,0x91,0x21,0xe0,0xff,0x74,0x01,0xa8,0x07,0x08,0x80, +0x02,0xc3,0x33,0xd8,0xfc,0xf4,0xff,0x90,0x00,0x46,0x80,0x5a,0x90,0x91,0x21,0xe0, +0x24,0xf8,0xf0,0xa3,0xe0,0x70,0x1d,0x90,0x91,0x21,0xe0,0xff,0x74,0x01,0xa8,0x07, +0x08,0x80,0x02,0xc3,0x33,0xd8,0xfc,0xc4,0x54,0xf0,0xf4,0xff,0x90,0x00,0x43,0xe0, +0x5f,0xf0,0x80,0x1a,0x90,0x91,0x21,0xe0,0xff,0x74,0x01,0xa8,0x07,0x08,0x80,0x02, +0xc3,0x33,0xd8,0xfc,0xc4,0x54,0xf0,0xff,0x90,0x00,0x43,0xe0,0x4f,0xf0,0x12,0x4c, +0xa0,0x90,0x91,0x21,0xe0,0xff,0x74,0x01,0xa8,0x07,0x08,0x80,0x02,0xc3,0x33,0xd8, +0xfc,0xf4,0xff,0x90,0x00,0x43,0xe0,0x5f,0xf0,0x12,0x4c,0xa0,0xd0,0xd0,0x92,0xaf, +0x22,0x7f,0x0b,0x12,0x6f,0x09,0xef,0x65,0x75,0x60,0x10,0xe5,0x75,0xb4,0x01,0x05, +0xe4,0xf5,0x75,0x80,0x03,0x75,0x75,0x01,0x7f,0x01,0x22,0x7f,0x00,0x22,0xd3,0x10, +0xaf,0x01,0xc3,0xc0,0xd0,0xe4,0xf5,0x10,0x75,0x11,0x04,0xf5,0x12,0xf5,0x14,0xf5, +0x15,0x90,0x02,0x09,0xe0,0xff,0x12,0x29,0xd9,0xfe,0xef,0x2e,0xf5,0x13,0x30,0xe0, +0x08,0x75,0x0e,0x00,0x75,0x0f,0x80,0x80,0x05,0xe4,0xf5,0x0e,0xf5,0x0f,0xe5,0x13, +0xc3,0x13,0x90,0xfd,0x10,0xf0,0x74,0x20,0x25,0x10,0xf5,0x10,0xad,0x0f,0xe5,0x10, +0x2d,0xff,0x24,0x01,0xf5,0x82,0xe4,0x34,0xfc,0xf5,0x83,0xe0,0x90,0x91,0x47,0xf0, +0x74,0x02,0x2f,0xf5,0x82,0xe4,0x34,0xfc,0xf5,0x83,0xe0,0xfe,0xe5,0x10,0x2d,0x24, +0x03,0xf5,0x82,0xe4,0x34,0xfc,0xf5,0x83,0xe0,0x24,0x00,0xff,0xe4,0x3e,0x90,0x91, +0x48,0xf0,0xa3,0xef,0xf0,0x7f,0x04,0xe5,0x10,0x25,0x0f,0x2f,0x24,0x00,0xf5,0x82, +0xe4,0x34,0xfc,0xf5,0x83,0xe0,0xfe,0x74,0x46,0x2f,0xf5,0x82,0xe4,0x34,0x91,0xf5, +0x83,0xee,0xf0,0x0f,0xbf,0x08,0xe0,0x12,0x66,0x89,0xef,0x70,0x3f,0x90,0x01,0xc3, +0xe0,0x60,0x25,0xc3,0xe5,0x15,0x94,0xe8,0xe5,0x14,0x94,0x03,0x40,0x09,0x90,0x01, +0xc6,0xe0,0x44,0x10,0xf0,0x80,0x63,0x05,0x15,0xe5,0x15,0x70,0x02,0x05,0x14,0x7f, +0x0a,0x7e,0x00,0x12,0x37,0x54,0x80,0xd5,0x90,0x01,0xc6,0xe0,0x90,0x01,0xc3,0x30, +0xe2,0x05,0x74,0xfe,0xf0,0x80,0x43,0x74,0xff,0xf0,0x80,0x3e,0xe5,0x10,0xb4,0x78, +0x23,0xe4,0xf5,0x10,0x05,0x13,0xe5,0x0f,0x64,0x80,0x45,0x0e,0x70,0x06,0xf5,0x0e, +0xf5,0x0f,0x80,0x06,0x75,0x0e,0x00,0x75,0x0f,0x80,0xe5,0x13,0xc3,0x13,0x90,0xfd, +0x10,0xf0,0x80,0x06,0x74,0x08,0x25,0x10,0xf5,0x10,0xe5,0x12,0x15,0x12,0x70,0x02, +0x15,0x11,0xe5,0x12,0x45,0x11,0x60,0x02,0x81,0x9c,0xd0,0xd0,0x92,0xaf,0x22,0x90, +0x91,0x1c,0x12,0x43,0x41,0x12,0x29,0xd9,0xff,0x54,0x01,0xfe,0x90,0x91,0x5e,0xe0, +0x54,0xfe,0x4e,0xf0,0xef,0x54,0x04,0xff,0xe0,0x54,0xfb,0x4f,0xf0,0x12,0x29,0xd9, +0xff,0x54,0x02,0xfe,0x90,0x91,0x5e,0xe0,0x54,0xfd,0x4e,0xf0,0xef,0x54,0x08,0xff, +0xe0,0x54,0xf7,0x4f,0xf0,0x12,0x29,0xd9,0xff,0x54,0x10,0xfe,0x90,0x91,0x5e,0xe0, +0x54,0xef,0x4e,0xf0,0xef,0x54,0x20,0xff,0xe0,0x54,0xdf,0x4f,0xf0,0x12,0x29,0xd9, +0xff,0x54,0x40,0xfe,0x90,0x91,0x5e,0xe0,0x54,0xbf,0x4e,0xf0,0xef,0x54,0x80,0xff, +0xe0,0x54,0x7f,0x4f,0xf0,0x90,0x00,0x02,0x12,0x42,0x20,0x90,0x91,0x60,0xf0,0x90, +0x00,0x01,0x12,0x42,0x20,0x90,0x91,0x5f,0xf0,0x90,0x00,0x03,0x12,0x42,0x20,0xff, +0x54,0x01,0xfe,0x90,0x91,0x61,0xe0,0x54,0xfe,0x4e,0xf0,0xef,0x54,0x02,0xff,0xe0, +0x54,0xfd,0x4f,0xf0,0x90,0x00,0x03,0x12,0x42,0x20,0x54,0x04,0xff,0x90,0x91,0x61, +0xe0,0x54,0xfb,0x4f,0xf0,0x90,0x91,0x5e,0xe0,0x54,0x01,0x90,0x01,0xb8,0xf0,0x90, +0x91,0x5e,0xe0,0xff,0xc4,0x13,0x54,0x01,0x90,0x01,0xb9,0xf0,0x90,0x91,0x61,0xe0, +0x54,0x01,0x90,0x01,0xba,0xf0,0xa3,0x74,0xff,0xf0,0x12,0x29,0xd9,0x20,0xe0,0x02, +0x41,0x01,0xe4,0xfd,0x7f,0x81,0x12,0x4d,0xa8,0x90,0x91,0x1c,0x12,0x43,0x21,0x12, +0x29,0xd9,0xff,0xc3,0x13,0x30,0xe0,0x07,0x90,0x06,0x90,0xe0,0x44,0x02,0xf0,0xef, +0x13,0x13,0x54,0x3f,0x30,0xe0,0x07,0x90,0x06,0x90,0xe0,0x44,0x04,0xf0,0x12,0x29, +0xd9,0x13,0x13,0x13,0x54,0x1f,0x30,0xe0,0x07,0x90,0x06,0x90,0xe0,0x44,0x08,0xf0, +0x90,0x91,0x61,0xe0,0x30,0xe0,0x1c,0x90,0x91,0x5e,0xe0,0xc4,0x13,0x54,0x07,0x30, +0xe0,0x07,0xa3,0xe0,0xff,0xe4,0xfd,0x80,0x07,0x90,0x91,0x5f,0xe0,0xff,0x7d,0x01, +0x12,0x4c,0xb0,0x22,0x90,0x00,0x02,0xe0,0x54,0xe0,0x7f,0x01,0x60,0x02,0x7f,0x00, +0x22,0xe4,0xf5,0x75,0x22,0x12,0x29,0xd9,0xf5,0x6d,0x22,0x90,0x01,0x64,0x74,0xa0, +0xf0,0x22,0x90,0x91,0x51,0xe0,0x90,0x90,0xe8,0xf0,0x22,0x90,0x00,0xf3,0xe0,0x7f, +0x00,0x30,0xe3,0x02,0x7f,0x01,0x22,0x90,0x01,0xca,0xe5,0x75,0xf0,0xef,0x60,0x03, +0x12,0x4f,0xd4,0x22,0x90,0x06,0x34,0x74,0xff,0xf0,0xe4,0xa3,0xf0,0xa3,0xf0,0xa3, +0xf0,0x22,0xe4,0x90,0x91,0x4e,0xf0,0x90,0x00,0x80,0xe0,0x44,0x80,0xfd,0x7f,0x80, +0x02,0x4d,0xa8,0x90,0x00,0xf3,0xe0,0x30,0xe2,0x0d,0x90,0x05,0x41,0x74,0x10,0xf0, +0x90,0x05,0x5a,0xf0,0xa3,0xe4,0xf0,0x22,0x12,0x29,0xd9,0x60,0x02,0x80,0x01,0xe4, +0x90,0x91,0x31,0xf0,0x90,0x91,0x31,0xe0,0x90,0x01,0xe7,0xf0,0x22,0x90,0x91,0x51, +0xe0,0xb4,0x01,0x0c,0x90,0x00,0xf2,0xe0,0x30,0xe7,0x05,0x7e,0xfd,0x7f,0x33,0x22, +0x7e,0xfd,0x7f,0x2f,0x22,0x12,0x29,0xd9,0xff,0x54,0x01,0xfe,0x90,0x91,0x53,0xe0, +0x54,0xfe,0x4e,0xf0,0xef,0xc3,0x13,0x30,0xe0,0x0a,0x90,0x00,0x01,0x12,0x42,0x20, +0x90,0x91,0x54,0xf0,0x22,0x90,0x00,0x02,0x12,0x42,0x20,0x90,0x90,0xf7,0xf0,0xe0, +0x60,0x04,0xe0,0xf4,0x70,0x21,0xa2,0xaf,0xe4,0x33,0xf5,0x0e,0xc2,0xaf,0x90,0x00, +0x47,0xe0,0x54,0xfb,0xfd,0x7f,0x47,0x12,0x4d,0xa8,0x7d,0x40,0x7f,0x01,0x12,0x36, +0xaf,0xe5,0x0e,0x24,0xff,0x92,0xaf,0x22,0x12,0x29,0xd9,0x30,0xe0,0x19,0xc3,0x13, +0x54,0x7f,0x90,0x91,0x34,0xf0,0x90,0x00,0x01,0x12,0x42,0x20,0xff,0x90,0x91,0x32, +0xe4,0xf0,0xa3,0xef,0xf0,0x80,0x0f,0x90,0x91,0x34,0x74,0x07,0xf0,0x90,0x91,0x32, +0xe4,0xf0,0xa3,0x74,0x03,0xf0,0x90,0x91,0x32,0xe0,0xa3,0xe0,0x90,0x05,0x58,0xf0, +0x22,0xc0,0xe0,0xc0,0xf0,0xc0,0x83,0xc0,0x82,0xc0,0xd0,0x75,0xd0,0x00,0xc0,0x00, +0xc0,0x01,0xc0,0x02,0xc0,0x03,0xc0,0x04,0xc0,0x05,0xc0,0x06,0xc0,0x07,0x90,0x01, +0xc4,0x74,0xe1,0xf0,0x74,0x57,0xa3,0xf0,0x53,0x91,0xef,0x90,0x00,0x51,0xe0,0xff, +0x90,0x00,0x55,0xe0,0x5f,0xf5,0x3d,0x90,0x00,0x52,0xe0,0xff,0x90,0x00,0x56,0xe0, +0x5f,0xf5,0x3e,0xe5,0x3d,0x30,0xe4,0x06,0x90,0x00,0x55,0x74,0x10,0xf0,0xe5,0x3d, +0x30,0xe5,0x06,0x90,0x00,0x55,0x74,0x20,0xf0,0xe5,0x3d,0x30,0xe6,0x1b,0x90,0x00, +0x55,0x74,0x40,0xf0,0x90,0x90,0xf6,0xe0,0x54,0x03,0xff,0xbf,0x03,0x0b,0x90,0x90, +0xf3,0xe0,0x60,0x05,0x7f,0x01,0x12,0x4d,0xbd,0xe5,0x3d,0x30,0xe7,0x15,0x90,0x00, +0x55,0x74,0x80,0xf0,0x90,0x90,0xf6,0xe0,0x54,0x03,0xff,0xbf,0x03,0x05,0x7f,0x02, +0x12,0x4d,0xbd,0xe5,0x3e,0x30,0xe0,0x06,0x90,0x00,0x56,0x74,0x01,0xf0,0xe5,0x3e, +0x30,0xe1,0x06,0x90,0x00,0x56,0x74,0x02,0xf0,0xe5,0x3e,0x30,0xe2,0x06,0x90,0x00, +0x56,0x74,0x04,0xf0,0xe5,0x3e,0x30,0xe3,0x06,0x90,0x00,0x56,0x74,0x08,0xf0,0x90, +0x01,0xc4,0x74,0xe1,0xf0,0x74,0x57,0xa3,0xf0,0xd0,0x07,0xd0,0x06,0xd0,0x05,0xd0, +0x04,0xd0,0x03,0xd0,0x02,0xd0,0x01,0xd0,0x00,0xd0,0xd0,0xd0,0x82,0xd0,0x83,0xd0, +0xf0,0xd0,0xe0,0x32,0xc0,0xe0,0xc0,0xf0,0xc0,0x83,0xc0,0x82,0xc0,0xd0,0x75,0xd0, +0x00,0xc0,0x00,0xc0,0x01,0xc0,0x02,0xc0,0x03,0xc0,0x04,0xc0,0x05,0xc0,0x06,0xc0, +0x07,0x75,0x0d,0x00,0x90,0x01,0xc4,0x74,0xc4,0xf0,0x74,0x58,0xa3,0xf0,0x53,0x91, +0xdf,0x90,0x01,0x3c,0xe0,0x55,0x30,0xf5,0x34,0xa3,0xe0,0x55,0x31,0xf5,0x35,0xa3, +0xe0,0x55,0x32,0xf5,0x36,0xa3,0xe0,0x55,0x33,0xf5,0x37,0xe5,0x34,0x30,0xe0,0x06, +0x90,0x01,0x3c,0x74,0x01,0xf0,0xe5,0x34,0x30,0xe1,0x08,0x90,0x01,0x3c,0x74,0x02, +0xf0,0x71,0x89,0xe5,0x34,0x30,0xe2,0x3a,0x90,0x01,0x3c,0x74,0x04,0xf0,0x90,0x06, +0x92,0xe0,0x30,0xe0,0x25,0x90,0x91,0x66,0xe4,0xf0,0x90,0x91,0x2d,0xe0,0x90,0x91, +0x67,0xf0,0xe4,0xfb,0xfd,0x7f,0x58,0x7e,0x01,0x12,0x44,0x59,0x90,0x01,0x5b,0x74, +0x05,0xf0,0x90,0x06,0x92,0x74,0x01,0xf0,0x80,0x08,0x90,0x91,0x37,0xe4,0xf0,0x12, +0x44,0xc2,0xe5,0x34,0x30,0xe3,0x3a,0x90,0x01,0x3c,0x74,0x08,0xf0,0x90,0x06,0x92, +0xe0,0x30,0xe1,0x25,0x90,0x91,0x66,0xe4,0xf0,0x90,0x91,0x2d,0xe0,0x90,0x91,0x67, +0xf0,0xe4,0xfb,0xfd,0x7f,0x5c,0x7e,0x01,0x12,0x44,0x59,0x90,0x01,0x5f,0x74,0x05, +0xf0,0x90,0x06,0x92,0x74,0x02,0xf0,0x80,0x08,0x90,0x91,0x36,0xe4,0xf0,0x12,0x44, +0xc2,0xe5,0x34,0x30,0xe4,0x09,0x90,0x01,0x3c,0x74,0x10,0xf0,0x12,0x4f,0x8f,0xe5, +0x34,0x30,0xe5,0x08,0x90,0x01,0x3c,0x74,0x20,0xf0,0x51,0x62,0xe5,0x35,0x30,0xe0, +0x5a,0x90,0x01,0x3d,0x74,0x01,0xf0,0x90,0x01,0x2f,0xe0,0x44,0x7f,0xf0,0x90,0x00, +0x83,0xe0,0x54,0x0f,0xf5,0x0d,0xb4,0x01,0x02,0x80,0x1c,0xe5,0x0d,0xb4,0x02,0x05, +0x90,0x00,0x83,0x80,0x12,0xe5,0x0d,0xb4,0x04,0x05,0x90,0x00,0x83,0x80,0x08,0xe5, +0x0d,0xb4,0x0c,0x08,0x90,0x00,0x83,0xe0,0xf5,0x6f,0x80,0x06,0x90,0x01,0xbe,0xe0, +0x04,0xf0,0x90,0x01,0xbb,0xe5,0x6f,0xf0,0xe5,0x6f,0x30,0xe0,0x03,0xa3,0x80,0x03, +0x90,0x01,0xbd,0xe0,0x04,0xf0,0x71,0x6a,0x12,0x44,0xc2,0xe5,0x35,0x30,0xe2,0x06, +0x90,0x01,0x3d,0x74,0x04,0xf0,0xe5,0x36,0x30,0xe0,0x06,0x90,0x01,0x3e,0x74,0x01, +0xf0,0xe5,0x36,0x30,0xe1,0x06,0x90,0x01,0x3e,0x74,0x02,0xf0,0x74,0xc4,0x04,0x90, +0x01,0xc4,0xf0,0x74,0x58,0xa3,0xf0,0xd0,0x07,0xd0,0x06,0xd0,0x05,0xd0,0x04,0xd0, +0x03,0xd0,0x02,0xd0,0x01,0xd0,0x00,0xd0,0xd0,0xd0,0x82,0xd0,0x83,0xd0,0xf0,0xd0, +0xe0,0x32,0x90,0x90,0xf5,0xe0,0x64,0x01,0x60,0x02,0x61,0x17,0x90,0x00,0x46,0xe0, +0x44,0x01,0xfd,0x7f,0x46,0x12,0x4d,0xa8,0x90,0x91,0x07,0xe0,0x70,0x32,0x90,0x90, +0xed,0xe0,0x60,0x15,0x90,0x90,0xf9,0x12,0x43,0x09,0x90,0x80,0x85,0x12,0x2a,0x7f, +0x7f,0x80,0x7e,0x08,0x12,0x2f,0xd9,0x80,0x06,0x90,0x05,0x22,0x74,0x7f,0xf0,0x90, +0x90,0xf4,0xe0,0xff,0x71,0x18,0x90,0x91,0x07,0x74,0x01,0x12,0x4d,0x9e,0x80,0x40, +0x90,0x91,0x07,0xe0,0x64,0x01,0x70,0x38,0x90,0x90,0xf8,0xe0,0xff,0x71,0x18,0xe4, +0x90,0x91,0x07,0xf0,0x90,0x00,0x45,0xe0,0x44,0x01,0xfd,0x7f,0x45,0x12,0x4d,0xa8, +0x90,0x90,0xed,0xe0,0x60,0x15,0x90,0x90,0xef,0x12,0x43,0x09,0x90,0x80,0x85,0x12, +0x2a,0x7f,0x7f,0x80,0x7e,0x08,0x12,0x2f,0xd9,0x80,0x05,0x90,0x05,0x22,0xe4,0xf0, +0x90,0x05,0x87,0xe0,0x64,0x80,0xf0,0x90,0x91,0x03,0xe0,0x90,0x05,0x84,0xf0,0x90, +0x91,0x04,0xe0,0x90,0x05,0x85,0xf0,0x90,0x91,0x05,0xe0,0x90,0x05,0x86,0xf0,0x90, +0x91,0x06,0xe0,0x90,0x05,0x87,0xf0,0x22,0x90,0x05,0x60,0xe0,0x90,0x91,0x03,0xf0, +0x90,0x05,0x61,0xe0,0x90,0x91,0x04,0xf0,0x90,0x05,0x62,0xe0,0x90,0x91,0x05,0xf0, +0x90,0x05,0x63,0xe0,0x90,0x91,0x06,0xf0,0xc3,0x74,0xff,0x9f,0xfe,0x90,0x91,0x04, +0xe0,0xd3,0x9e,0x40,0x1e,0xe0,0x2f,0xf0,0xa3,0xe0,0xb4,0xff,0x0f,0xe4,0xf0,0xa3, +0xe0,0xb4,0xff,0x03,0xe4,0xf0,0x22,0x90,0x91,0x06,0x80,0x03,0x90,0x91,0x05,0xe0, +0x04,0xf0,0x22,0x90,0x91,0x04,0xe0,0x2f,0xf0,0x22,0xe5,0x6f,0x30,0xe6,0x19,0xe5, +0x6f,0x54,0x0f,0xff,0x90,0x91,0x24,0xe0,0xfe,0x4f,0x90,0x01,0x2f,0xf0,0xee,0x64, +0x80,0x90,0x91,0x24,0xf0,0x53,0x6f,0xbf,0x22,0xe4,0x90,0x91,0x0d,0xf0,0xe5,0x70, +0x70,0x02,0x81,0x13,0x90,0x91,0x3c,0xe0,0x60,0x0d,0xe4,0xf0,0x53,0x71,0xfd,0xe5, +0x71,0x54,0x07,0x70,0x6e,0x80,0x69,0x90,0x91,0x28,0xe0,0x04,0xf0,0x53,0x71,0xef, +0x90,0x91,0x3a,0xe0,0x04,0xf0,0x90,0x91,0x0d,0xe0,0xf9,0xff,0x7e,0x00,0x24,0x01, +0xfd,0xee,0x33,0xfc,0x90,0x91,0x3a,0xe0,0xb5,0x05,0x06,0xe4,0xb5,0x04,0x02,0x80, +0x12,0xef,0x24,0x02,0xff,0xe4,0x3e,0xfe,0x90,0x91,0x3a,0xe0,0xb5,0x07,0x0a,0xe4, +0xb5,0x06,0x06,0x90,0x05,0x58,0xe0,0x04,0xf0,0xe9,0xff,0x90,0x91,0x2f,0xe0,0x2f, +0xff,0xe4,0x33,0xfe,0x90,0x91,0x28,0xe0,0xd3,0x9f,0xee,0x64,0x80,0xf8,0x74,0x80, +0x98,0x40,0x0d,0xe5,0x6d,0xb4,0x01,0x0b,0xa3,0xe0,0x70,0x07,0xe0,0x04,0xf0,0x22, +0x12,0x44,0xc2,0x22,0x90,0x90,0xee,0xe0,0xc3,0x94,0x14,0x50,0x05,0xe0,0x04,0xf0, +0x81,0xcc,0x90,0x90,0xee,0xe0,0x64,0x14,0x60,0x02,0x81,0xcc,0x90,0x90,0xfd,0xe0, +0x70,0x25,0x90,0x91,0x00,0xe0,0x70,0x1f,0x90,0x90,0xfe,0xe0,0x70,0x19,0x90,0x91, +0x01,0xe0,0x70,0x13,0x90,0x90,0xff,0xe0,0x70,0x0d,0x90,0x91,0x02,0xe0,0x70,0x07, +0x90,0x04,0xfd,0xe0,0x54,0xfe,0xf0,0x90,0x90,0xfd,0xe0,0x90,0x04,0x44,0xf0,0x90, +0x90,0xfe,0xe0,0x90,0x04,0x45,0xf0,0x90,0x90,0xff,0xe0,0x90,0x04,0x46,0xf0,0xa3, +0xe4,0xf0,0x90,0x91,0x00,0xe0,0x90,0x04,0x48,0xf0,0x90,0x91,0x01,0xe0,0x90,0x04, +0x49,0xf0,0x90,0x91,0x02,0xe0,0x90,0x04,0x4a,0xf0,0xa3,0xe4,0xf0,0x90,0x90,0xe9, +0xe0,0x90,0x04,0x4c,0xf0,0x90,0x90,0xea,0xe0,0x90,0x04,0x4d,0xf0,0x90,0x90,0xeb, +0xe0,0x90,0x04,0x4e,0xf0,0x90,0x90,0xec,0xe0,0x90,0x04,0x4f,0xf0,0xe4,0x90,0x90, +0xee,0xf0,0x90,0x90,0xe9,0x04,0xf0,0xe4,0xa3,0xf0,0xa3,0xf0,0xa3,0xf0,0x90,0x90, +0xfd,0xf0,0xa3,0xf0,0xa3,0xf0,0xa3,0xf0,0xa3,0xf0,0xa3,0xf0,0x90,0x05,0x60,0xe0, +0x90,0x91,0x8c,0xf0,0x90,0x05,0x61,0xe0,0x90,0x91,0x8d,0xf0,0x90,0x05,0x62,0xe0, +0x90,0x91,0x8e,0xf0,0x90,0x05,0x63,0xe0,0x90,0x91,0x8f,0xf0,0x90,0x91,0x06,0xe0, +0xff,0x90,0x91,0x8f,0xe0,0xfe,0xd3,0x9f,0x50,0x0b,0x90,0x91,0x06,0xe0,0xc3,0x9e, +0xd3,0x94,0x01,0x40,0x10,0x90,0x90,0xf4,0xe0,0xb4,0x01,0x02,0x80,0x03,0x90,0x90, +0xf8,0xe0,0xff,0x71,0x18,0x22,0x90,0x00,0x02,0x12,0x42,0x20,0x90,0x90,0xf5,0xf0, +0x90,0x00,0x01,0x12,0x42,0x20,0x25,0xe0,0x25,0xe0,0x90,0x90,0xf4,0xf0,0x12,0x29, +0xd9,0x25,0xe0,0x25,0xe0,0x90,0x90,0xf8,0xf0,0x90,0x05,0x60,0xe0,0x90,0x91,0x03, +0xf0,0x90,0x05,0x61,0xe0,0x90,0x91,0x04,0xf0,0x90,0x05,0x62,0xe0,0x90,0x91,0x05, +0xf0,0x90,0x05,0x63,0xe0,0x90,0x91,0x06,0xf0,0xa2,0xaf,0xe4,0x33,0x90,0x91,0x1c, +0xf0,0xc2,0xaf,0x90,0x90,0xf4,0xe0,0xff,0x71,0x18,0x90,0x91,0x1c,0xe0,0x24,0xff, +0x92,0xaf,0x90,0x90,0xf5,0xe0,0x70,0x02,0xc1,0x1f,0x90,0x90,0xf4,0xe0,0x70,0x02, +0xc1,0x1f,0x90,0x90,0xf8,0xe0,0x70,0x02,0xc1,0x1f,0xa2,0xaf,0xe4,0x33,0x90,0x91, +0x1c,0xf0,0xc2,0xaf,0x90,0x91,0x07,0x74,0x01,0xf0,0x90,0x91,0x1c,0xe0,0x24,0xff, +0x92,0xaf,0x12,0x4d,0x9f,0x90,0x00,0x46,0xe0,0x44,0x01,0xfd,0x7f,0x46,0x12,0x4d, +0xa8,0x90,0x90,0xed,0xe0,0x60,0x15,0x90,0x90,0xf9,0x12,0x43,0x09,0x90,0x80,0x85, +0x12,0x2a,0x7f,0x7f,0x80,0x7e,0x08,0x12,0x2f,0xd9,0x80,0x06,0x90,0x05,0x22,0x74, +0x7f,0xf0,0x90,0x00,0x45,0xe0,0x54,0xef,0xfd,0x7f,0x45,0x12,0x4d,0xa8,0x90,0x05, +0x87,0xe0,0x64,0x80,0xf0,0x90,0x91,0x03,0xe0,0x90,0x05,0x84,0xf0,0x90,0x91,0x04, +0xe0,0x90,0x05,0x85,0xf0,0x90,0x91,0x05,0xe0,0x90,0x05,0x86,0xf0,0x90,0x91,0x06, +0xe0,0x90,0x05,0x87,0xf0,0xa2,0xaf,0xe4,0x33,0x90,0x91,0x1c,0xf0,0xc2,0xaf,0x90, +0x01,0x3c,0xe0,0x44,0x20,0xf0,0x7d,0x20,0xe4,0xff,0x12,0x37,0x00,0x80,0x2d,0x90, +0x90,0xf5,0xe0,0x70,0x2f,0x90,0x91,0x07,0x12,0x4d,0x9e,0x90,0x00,0x46,0xe0,0x54, +0xfe,0xfd,0x7f,0x46,0x12,0x4d,0xa8,0x90,0x05,0x22,0xe4,0xf0,0xa2,0xaf,0x33,0x90, +0x91,0x1c,0xf0,0xc2,0xaf,0x7d,0x20,0xe4,0xff,0x12,0x36,0x92,0x90,0x91,0x1c,0xe0, +0x24,0xff,0x92,0xaf,0x22,0x8f,0x20,0x8c,0x21,0x8d,0x22,0x22,0x8f,0x23,0x8c,0x24, +0x8d,0x25,0x22,0xe4,0x90,0x91,0x11,0xf0,0xa3,0xf0,0x90,0x02,0x86,0xe0,0x20,0xe1, +0x2c,0xc3,0x90,0x91,0x12,0xe0,0x94,0x20,0x90,0x91,0x11,0xe0,0x94,0x03,0x40,0x0a, +0x90,0x01,0xc6,0xe0,0x44,0x20,0xf0,0x7f,0x00,0x22,0x90,0x91,0x11,0xe4,0x75,0xf0, +0x01,0x12,0x42,0x81,0x7f,0x01,0x7e,0x00,0x12,0x37,0x54,0x80,0xcd,0x7f,0x01,0x22, +0x90,0x01,0xcc,0xe0,0x54,0x0f,0x90,0x91,0x11,0xf0,0x90,0x91,0x11,0xe0,0xfd,0x70, +0x02,0xe1,0xe2,0x90,0x91,0x9c,0xe0,0xff,0x74,0x01,0x7e,0x00,0xa8,0x07,0x08,0x80, +0x05,0xc3,0x33,0xce,0x33,0xce,0xd8,0xf9,0xff,0xef,0x5d,0x70,0x02,0xe1,0xdb,0x90, +0x91,0x9c,0xe0,0x75,0xf0,0x04,0x90,0x01,0xd0,0x12,0x43,0x15,0xe0,0x90,0x91,0x12, +0xf0,0x75,0x63,0x01,0x75,0x64,0x91,0x75,0x65,0x12,0x75,0x66,0x01,0x7b,0x01,0x7a, +0x91,0x79,0x13,0x12,0x46,0x6d,0x90,0x91,0x13,0xe0,0xff,0xc4,0x13,0x13,0x13,0x54, +0x01,0x90,0x91,0x9c,0x30,0xe0,0x59,0xe0,0x75,0xf0,0x02,0x90,0x00,0x88,0x12,0x43, +0x15,0xe0,0x90,0x91,0x14,0xf0,0x90,0x91,0x9c,0xe0,0x75,0xf0,0x02,0x90,0x00,0x89, +0x12,0x43,0x15,0xe0,0x90,0x91,0x15,0xf0,0x90,0x91,0x9c,0xe0,0x75,0xf0,0x04,0x90, +0x01,0xd1,0x12,0x43,0x15,0xe0,0x90,0x91,0x16,0xf0,0x90,0x91,0x9c,0xe0,0x75,0xf0, +0x04,0x90,0x01,0xd2,0x12,0x43,0x15,0xe0,0x90,0x91,0x17,0xf0,0x90,0x91,0x9c,0xe0, +0x75,0xf0,0x04,0x90,0x01,0xd3,0x12,0x43,0x15,0xe0,0x90,0x91,0x18,0xf0,0x80,0x33, +0xe0,0x75,0xf0,0x04,0x90,0x01,0xd1,0x12,0x43,0x15,0xe0,0x90,0x91,0x14,0xf0,0x90, +0x91,0x9c,0xe0,0x75,0xf0,0x04,0x90,0x01,0xd2,0x12,0x43,0x15,0xe0,0x90,0x91,0x15, +0xf0,0x90,0x91,0x9c,0xe0,0x75,0xf0,0x04,0x90,0x01,0xd3,0x12,0x43,0x15,0xe0,0x90, +0x91,0x16,0xf0,0xef,0x54,0x7f,0xff,0x7b,0x01,0x7a,0x91,0x79,0x14,0x12,0x52,0x08, +0x90,0x91,0x11,0xe0,0xff,0x90,0x91,0x9c,0xe0,0xfe,0x74,0x01,0xa8,0x06,0x08,0x80, +0x02,0xc3,0x33,0xd8,0xfc,0xf4,0x5f,0x90,0x91,0x11,0xf0,0x90,0x91,0x9c,0xe0,0xff, +0x74,0x01,0xa8,0x07,0x08,0x80,0x02,0xc3,0x33,0xd8,0xfc,0x90,0x01,0xcc,0xf0,0x90, +0x91,0x9c,0xe0,0x04,0xf0,0xe0,0x54,0x03,0xf0,0xc1,0xaa,0x90,0x01,0xc6,0xe0,0x44, +0x02,0xf0,0x22,0xad,0x07,0x74,0x11,0x2d,0xf5,0x82,0xe4,0x34,0xfc,0xf5,0x83,0xe0, +0x44,0x01,0xf0,0x90,0x04,0x80,0xe0,0x54,0x0f,0xfc,0x74,0x14,0x2d,0xf5,0x82,0xe4, +0x34,0xfc,0xf5,0x83,0xe0,0x54,0xc0,0x4c,0xfd,0x74,0x14,0x2f,0xf5,0x82,0xe4,0x34, +0xfc,0xf5,0x83,0xed,0xf0,0x22,0xef,0x60,0x0f,0x74,0x21,0x2d,0xf5,0x82,0xe4,0x34, +0xfc,0xf5,0x83,0xe0,0x44,0x10,0xf0,0x22,0x74,0x21,0x2d,0xf5,0x82,0xe4,0x34,0xfc, +0xf5,0x83,0xe0,0x54,0xef,0xf0,0x22,0xe4,0xf5,0x6d,0xf5,0x71,0xf5,0x70,0x75,0x6f, +0x0c,0x75,0x6e,0x0c,0x90,0x91,0x3b,0xf0,0x90,0x91,0x37,0xf0,0x90,0x91,0x36,0xf0, +0x90,0x91,0x39,0x04,0xf0,0x90,0x91,0x27,0xf0,0xe4,0x90,0x91,0x3c,0xf0,0x90,0x91, +0x29,0xf0,0x90,0x91,0x34,0x74,0x07,0xf0,0xe4,0x90,0x91,0x28,0xf0,0x90,0x91,0x32, +0xf0,0xa3,0x74,0x03,0xf0,0x90,0x91,0x2f,0x74,0x0a,0xf0,0xa3,0x74,0x05,0xf0,0x90, +0x91,0x2d,0x74,0x14,0xf0,0x90,0x91,0x35,0x74,0x05,0xf0,0xe4,0x90,0x91,0x2b,0xf0, +0x90,0x91,0x25,0xf0,0x90,0x91,0x50,0xf0,0x90,0x91,0x31,0xf0,0x90,0x91,0x3a,0xf0, +0x90,0x91,0x26,0xf0,0x90,0x91,0x38,0xf0,0x90,0x91,0x2e,0xf0,0x90,0x91,0x2c,0xf0, +0x22,0x12,0x4c,0x89,0xef,0x64,0x01,0x60,0x08,0x90,0x01,0xb9,0x74,0x01,0xf0,0x80, +0x30,0x90,0x91,0x37,0xe0,0x60,0x08,0x90,0x01,0xb9,0x74,0x02,0xf0,0x80,0x22,0x90, +0x91,0x36,0xe0,0x60,0x08,0x90,0x01,0xb9,0x74,0x04,0xf0,0x80,0x14,0xe5,0x6f,0x54, +0x0f,0xd3,0x94,0x04,0x40,0x08,0x90,0x01,0xb9,0x74,0x08,0xf0,0x80,0x03,0x7f,0x01, +0x22,0x90,0x01,0xb8,0x74,0x08,0xf0,0x7f,0x00,0x22,0x12,0x4c,0x89,0xef,0x64,0x01, +0x60,0x08,0x90,0x01,0xb9,0x74,0x01,0xf0,0x80,0x58,0xe5,0x71,0x54,0x03,0x60,0x08, +0x90,0x01,0xb9,0x74,0x02,0xf0,0x80,0x4a,0xe5,0x6f,0x54,0x0f,0xd3,0x94,0x02,0x40, +0x08,0x90,0x01,0xb9,0x74,0x04,0xf0,0x80,0x39,0xe5,0x71,0x30,0xe2,0x08,0x90,0x01, +0xb9,0x74,0x08,0xf0,0x80,0x2c,0xe5,0x71,0x30,0xe4,0x08,0x90,0x01,0xb9,0x74,0x10, +0xf0,0x80,0x1f,0x90,0x91,0x29,0xe0,0x60,0x08,0x90,0x01,0xb9,0x74,0x20,0xf0,0x80, +0x11,0x90,0x91,0x31,0xe0,0x60,0x08,0x90,0x01,0xb9,0x74,0x80,0xf0,0x80,0x03,0x7f, +0x01,0x22,0x90,0x01,0xb8,0x74,0x04,0xf0,0x7f,0x00,0x22,0x90,0x06,0x04,0xe0,0x54, +0xbf,0xf0,0xef,0x60,0x0a,0xe5,0x6d,0xb4,0x01,0x05,0xe4,0xff,0x12,0x47,0xc9,0x53, +0x6e,0xf0,0x43,0x6e,0x0c,0x22,0x90,0x91,0x9d,0xef,0xf0,0x31,0x9f,0x90,0x91,0x9d, +0xe0,0x60,0x05,0x90,0x05,0x22,0xe4,0xf0,0x53,0x6e,0xf0,0x43,0x6e,0x04,0x22,0x90, +0x90,0xd8,0x12,0x43,0x09,0x90,0x80,0x85,0x12,0x2a,0x7f,0x7f,0x78,0x7e,0x08,0x12, +0x2f,0xd9,0x90,0x90,0xdc,0x12,0x43,0x09,0x90,0x80,0x85,0x12,0x2a,0x7f,0x7f,0x04, +0x7e,0x0c,0x12,0x2f,0xd9,0x90,0x90,0xe0,0x12,0x43,0x09,0x90,0x80,0x85,0x12,0x2a, +0x7f,0x7f,0x00,0x7e,0x08,0x12,0x2f,0xd9,0x90,0x90,0xe4,0x12,0x43,0x09,0x90,0x80, +0x85,0x12,0x2a,0x7f,0x7f,0x70,0x7e,0x0e,0x12,0x2f,0xd9,0x90,0x80,0x59,0x12,0x2a, +0x8b,0x00,0x03,0x2d,0x95,0xe4,0xfd,0xff,0x12,0x34,0x81,0x90,0x91,0x51,0xe0,0xb4, +0x01,0x11,0x90,0x80,0x59,0x12,0x2a,0x8b,0x00,0x03,0x2d,0x95,0xe4,0xfd,0x7f,0x01, +0x12,0x34,0x81,0x22,0x8f,0x77,0xe4,0x90,0x91,0x96,0xf0,0xa3,0xf0,0x90,0x01,0x09, +0xe0,0x7f,0x00,0x30,0xe7,0x02,0x7f,0x01,0xef,0x65,0x77,0x60,0x3e,0xc3,0x90,0x91, +0x97,0xe0,0x94,0x88,0x90,0x91,0x96,0xe0,0x94,0x13,0x40,0x08,0x90,0x01,0xc6,0xe0, +0x44,0x80,0xf0,0x22,0x90,0x91,0x96,0xe4,0x75,0xf0,0x01,0x12,0x42,0x81,0x7f,0x14, +0x7e,0x00,0x12,0x37,0x54,0xd3,0x90,0x91,0x97,0xe0,0x94,0x32,0x90,0x91,0x96,0xe0, +0x94,0x00,0x40,0xb9,0x90,0x01,0xc7,0xe0,0x30,0xe0,0xb2,0x22,0x53,0x6e,0xf0,0x43, +0x6e,0x01,0x12,0x45,0x00,0x12,0x45,0x01,0x53,0x6e,0xf0,0x43,0x6e,0x02,0x22,0x8f, +0x78,0x12,0x47,0xe6,0xef,0x64,0x01,0x70,0x2e,0x90,0x91,0x44,0x12,0x48,0x1e,0xe5, +0x78,0x60,0x10,0x74,0x21,0x2f,0xf5,0x82,0xe4,0x34,0xfc,0xf5,0x83,0xe0,0x44,0x10, +0xf0,0x80,0x0e,0x74,0x21,0x2f,0xf5,0x82,0xe4,0x34,0xfc,0xf5,0x83,0xe0,0x54,0xef, +0xf0,0x90,0x04,0x1f,0x74,0x20,0xf0,0x22,0xe5,0x6d,0x64,0x01,0x70,0x63,0xe5,0x70, +0x60,0x5f,0xe5,0x70,0x64,0x02,0x60,0x06,0xe5,0x70,0x64,0x05,0x70,0x27,0x90,0x06, +0xab,0xe0,0x90,0x91,0x27,0xf0,0x90,0x06,0xaa,0xe0,0x90,0x91,0x39,0xf0,0x90,0x91, +0x27,0xe0,0x70,0x07,0x90,0x91,0x39,0xe0,0xff,0x80,0x05,0x90,0x91,0x27,0xe0,0xff, +0x90,0x91,0x27,0xef,0xf0,0x90,0x91,0x29,0xe0,0x60,0x03,0xe0,0x14,0xf0,0xe4,0x90, +0x91,0x28,0xf0,0x90,0x01,0x57,0xf0,0x90,0x01,0x3c,0x74,0x02,0xf0,0x53,0x71,0xfd, +0x53,0x71,0xef,0xe5,0x70,0x14,0x24,0xfd,0x50,0x02,0x80,0x03,0x12,0x45,0xc7,0x71, +0x22,0x22,0xd3,0x10,0xaf,0x01,0xc3,0xc0,0xd0,0xd0,0xd0,0x92,0xaf,0x22,0xe4,0xfb, +0x90,0x91,0x78,0x12,0x2a,0x8b,0x00,0x00,0x00,0x00,0xe5,0x70,0x70,0x02,0x61,0xc0, +0xe5,0x6d,0x64,0x01,0x70,0x7a,0xe5,0x70,0x14,0x60,0x2b,0x24,0xfd,0x60,0x27,0x24, +0x02,0x24,0xfb,0x50,0x02,0x80,0x21,0x90,0x91,0x27,0xe0,0x14,0xf0,0xe0,0x60,0x04, +0xa3,0xe0,0x60,0x14,0x90,0x91,0x27,0xe0,0x70,0x08,0x90,0x91,0x39,0xe0,0x90,0x91, +0x27,0xf0,0x7b,0x01,0x80,0x02,0x7b,0x01,0xeb,0x60,0x45,0x43,0x71,0x10,0xe4,0x90, +0x91,0x66,0xf0,0x90,0x91,0x3a,0xe0,0x75,0xf0,0x05,0xa4,0xff,0x90,0x91,0x34,0xe0, +0x2f,0x12,0x44,0x4e,0x90,0x01,0x57,0x74,0x05,0xf0,0xe5,0x6e,0x54,0x0f,0xc3,0x94, +0x04,0x50,0x07,0x7d,0x01,0x7f,0x04,0x12,0x47,0x27,0x90,0x91,0x2e,0xe0,0x60,0x10, +0x90,0x91,0x2c,0xe0,0x90,0x07,0x78,0x60,0x04,0x74,0x0d,0xf0,0x22,0x74,0x09,0xf0, +0x22,0xe4,0xfb,0x90,0x91,0x7c,0x12,0x2a,0x8b,0x00,0x00,0x00,0x00,0xe5,0x70,0x60, +0x5f,0xe5,0x6d,0x64,0x01,0x70,0x59,0x0b,0x90,0x91,0x27,0xf0,0x04,0x60,0x51,0x43, +0x71,0x10,0xe4,0x90,0x91,0x66,0xf0,0x90,0x91,0x3a,0xe0,0x75,0xf0,0x05,0xa4,0xff, +0x90,0x91,0x34,0xe0,0x2f,0x90,0x91,0x67,0xf0,0xe4,0x1b,0x12,0x44,0x54,0x90,0x01, +0x57,0x74,0x05,0xf0,0xe5,0x6e,0x54,0x0f,0xc3,0x94,0x04,0x50,0x07,0x7d,0x01,0x7f, +0x04,0x12,0x47,0x27,0x90,0x91,0x2e,0xe0,0x60,0x11,0x90,0x91,0x2c,0xe0,0x90,0x07, +0x78,0x60,0x05,0x74,0x0d,0xf0,0x80,0x03,0x74,0x09,0xf0,0x90,0x05,0x22,0xe4,0xf0, +0x22,0x90,0x91,0x80,0x12,0x2a,0x8b,0x00,0x00,0x00,0x00,0xe5,0x70,0x14,0x24,0xfd, +0x50,0x02,0x80,0x21,0x90,0x91,0x3b,0xe0,0x60,0x06,0x7d,0x01,0x7f,0x0c,0x80,0x0d, +0xe5,0x6e,0x54,0x0f,0xc3,0x94,0x04,0x50,0x07,0x7d,0x01,0x7f,0x04,0x12,0x47,0x27, +0xe4,0xff,0x12,0x48,0xb3,0x22,0x90,0x91,0x08,0xe0,0x54,0xf0,0x44,0x03,0xf0,0x54, +0x0f,0x44,0x80,0xf0,0x7b,0x00,0x7a,0x00,0x79,0x58,0x90,0x91,0x71,0x12,0x43,0x41, +0x0b,0x7a,0x91,0x79,0x08,0x02,0x46,0xb7,0xd3,0x10,0xaf,0x01,0xc3,0xc0,0xd0,0x90, +0x91,0x84,0xee,0xf0,0xa3,0xef,0xf0,0xe4,0xa3,0xf0,0xa3,0xf0,0x90,0x91,0x84,0xe0, +0xfe,0xa3,0xe0,0xf5,0x82,0x8e,0x83,0xe0,0x60,0x2d,0xc3,0x90,0x91,0x87,0xe0,0x94, +0xe8,0x90,0x91,0x86,0xe0,0x94,0x03,0x40,0x0b,0x90,0x01,0xc6,0xe0,0x44,0x10,0xf0, +0x7f,0x00,0x80,0x15,0x90,0x91,0x86,0xe4,0x75,0xf0,0x01,0x12,0x42,0x81,0x7f,0x0a, +0x7e,0x00,0x12,0x37,0x54,0x80,0xc5,0x7f,0x01,0xd0,0xd0,0x92,0xaf,0x22,0xd3,0x10, +0xaf,0x01,0xc3,0xc0,0xd0,0x90,0x91,0x1c,0x12,0x43,0x41,0x90,0x91,0x1f,0x12,0x2a, +0x8b,0x00,0x00,0x00,0x00,0x90,0x91,0x1c,0x12,0x43,0x21,0x90,0x00,0x01,0x12,0x42, +0x20,0x90,0x91,0x3b,0xf0,0x90,0x00,0x03,0x12,0x42,0x20,0x90,0x91,0x25,0xf0,0x90, +0x00,0x04,0x12,0x42,0x20,0xff,0x54,0x01,0x90,0x91,0x26,0xf0,0xef,0xc3,0x13,0x54, +0x01,0x90,0x91,0x2e,0xf0,0x90,0x00,0x04,0x12,0x42,0x20,0xff,0x13,0x13,0x54,0x01, +0x90,0x91,0x2c,0xf0,0x90,0x91,0x2e,0xe0,0x90,0x91,0x1f,0x70,0x26,0x12,0x2a,0x8b, +0x00,0x00,0x02,0x10,0x90,0x91,0x1f,0x12,0x43,0x09,0x90,0x80,0x85,0x12,0x2a,0x7f, +0x7f,0x60,0x7e,0x08,0x12,0x2f,0xd9,0x90,0x91,0x1f,0x12,0x2a,0x8b,0x00,0x00,0x03, +0x10,0x80,0x24,0x12,0x2a,0x8b,0x00,0x00,0x01,0x10,0x90,0x91,0x1f,0x12,0x43,0x09, +0x90,0x80,0x85,0x12,0x2a,0x7f,0x7f,0x60,0x7e,0x08,0x12,0x2f,0xd9,0x90,0x91,0x1f, +0x12,0x2a,0x8b,0x00,0x00,0x03,0x00,0x90,0x91,0x1f,0x12,0x43,0x09,0x90,0x80,0x85, +0x12,0x2a,0x7f,0x7f,0x70,0x7e,0x08,0x12,0x2f,0xd9,0x90,0x91,0x26,0xe0,0x70,0x3d, +0x90,0x91,0x38,0x74,0x01,0xf0,0x7f,0x00,0x7e,0x08,0x12,0x27,0xde,0x90,0x91,0x1f, +0x12,0x2a,0x7f,0x90,0x91,0x1f,0x12,0x43,0x09,0xec,0x44,0x02,0xfc,0x90,0x91,0x1f, +0x12,0x2a,0x7f,0x90,0x91,0x1f,0x12,0x43,0x09,0x90,0x80,0x85,0x12,0x2a,0x7f,0x7f, +0x00,0x7e,0x08,0x12,0x2f,0xd9,0x90,0x02,0x86,0xe0,0x54,0xfb,0xf0,0x90,0x91,0x1c, +0x12,0x43,0x21,0x12,0x49,0x80,0x90,0x01,0xe5,0xe5,0x70,0xf0,0x90,0x91,0x3b,0xe0, +0x90,0x01,0xe6,0xf0,0xd0,0xd0,0x92,0xaf,0x22,0x90,0x00,0x02,0x12,0x42,0x20,0xff, +0x30,0xe0,0x25,0x12,0x29,0xd9,0x90,0x91,0x2f,0xf0,0x90,0x00,0x01,0x12,0x42,0x20, +0x90,0x91,0x30,0xf0,0xef,0xc3,0x13,0x54,0x7f,0x90,0x91,0x2d,0xf0,0x90,0x00,0x03, +0x12,0x42,0x20,0x90,0x91,0x35,0xf0,0x22,0x90,0x91,0x2f,0x74,0x0a,0xf0,0x90,0x91, +0x30,0x74,0x05,0xf0,0x90,0x91,0x2d,0x74,0x14,0xf0,0x90,0x91,0x35,0x74,0x05,0xf0, +0x22,0x90,0x02,0x09,0xe0,0xfd,0x12,0x29,0xd9,0xfe,0xaf,0x05,0xed,0x2e,0x90,0x91, +0x41,0xf0,0x90,0x00,0x01,0x12,0x42,0x20,0xff,0xed,0x2f,0x90,0x91,0x42,0xf0,0x90, +0x00,0x02,0x12,0x42,0x20,0xff,0xed,0x2f,0x90,0x91,0x43,0xf0,0x90,0x00,0x03,0x12, +0x42,0x20,0xff,0xed,0x2f,0x90,0x91,0x44,0xf0,0x90,0x00,0x04,0x12,0x42,0x20,0xff, +0xae,0x05,0xed,0x2f,0x90,0x91,0x45,0xf0,0x22,0xd3,0x10,0xaf,0x01,0xc3,0xc0,0xd0, +0x90,0x91,0x47,0xe0,0x90,0x91,0x1d,0xf0,0x90,0x91,0x48,0xe0,0xf5,0x19,0xa3,0xe0, +0xf5,0x1a,0xe4,0xf5,0x16,0x74,0x4a,0x25,0x16,0xf5,0x82,0xe4,0x34,0x91,0xf5,0x83, +0xe0,0xff,0x74,0x1b,0x25,0x16,0xf8,0xa6,0x07,0x05,0x16,0xe5,0x16,0xb4,0x04,0xe5, +0x90,0x91,0x1d,0xe0,0x12,0x43,0x4a,0x66,0xe6,0x00,0x68,0x13,0x01,0x66,0xee,0x02, +0x66,0xee,0x03,0x66,0xee,0x04,0x68,0x13,0x05,0x67,0xe3,0x80,0x67,0xf9,0x81,0x68, +0x13,0x82,0x00,0x00,0x68,0x0f,0xaf,0x1e,0x12,0x73,0xdd,0x02,0x68,0x13,0x90,0x91, +0x1d,0xe0,0xff,0xb4,0x02,0x08,0x90,0x91,0x1c,0x74,0x01,0xf0,0x80,0x0f,0xef,0x90, +0x91,0x1c,0xb4,0x03,0x05,0x74,0x02,0xf0,0x80,0x03,0x74,0x04,0xf0,0xc3,0xe5,0x19, +0x94,0x08,0x50,0x4a,0xe4,0xf5,0x16,0x90,0x91,0x1c,0xe0,0xff,0xe5,0x16,0xc3,0x9f, +0x40,0x03,0x02,0x68,0x13,0xc3,0xe5,0x19,0x94,0x01,0x50,0x14,0xe5,0x16,0x25,0x1a, +0xff,0xc3,0x74,0x03,0x95,0x16,0x24,0x1b,0xf8,0xe6,0xfd,0x12,0x4d,0xa8,0x80,0x1a, +0xc3,0x74,0x03,0x95,0x16,0x24,0x1b,0xf8,0xe6,0xff,0xe5,0x16,0x7c,0x00,0x25,0x1a, +0xfd,0xec,0x35,0x19,0x8d,0x82,0xf5,0x83,0xef,0xf0,0x05,0x16,0x80,0xb9,0xc3,0xe5, +0x19,0x94,0x10,0x40,0x03,0x02,0x68,0x13,0x90,0x91,0x1d,0xe0,0x64,0x04,0x60,0x03, +0x02,0x68,0x13,0xaf,0x1c,0xfc,0xfd,0xfe,0x78,0x10,0x12,0x2a,0x6c,0xc0,0x04,0xc0, +0x05,0xc0,0x06,0xc0,0x07,0xaf,0x1b,0xe4,0xfc,0xfd,0xfe,0x78,0x18,0x12,0x2a,0x6c, +0xd0,0x03,0xd0,0x02,0xd0,0x01,0xd0,0x00,0x12,0x42,0xfc,0xc0,0x04,0xc0,0x05,0xc0, +0x06,0xc0,0x07,0xaf,0x1d,0xe4,0xfc,0xfd,0xfe,0x78,0x08,0x12,0x2a,0x6c,0xd0,0x03, +0xd0,0x02,0xd0,0x01,0xd0,0x00,0x12,0x42,0xfc,0xa8,0x04,0xa9,0x05,0xaa,0x06,0xab, +0x07,0xaf,0x1e,0xe4,0xfc,0xfd,0xfe,0x12,0x42,0xfc,0xa3,0x12,0x2a,0x7f,0x90,0x91, +0x1e,0x12,0x43,0x09,0x90,0x80,0x85,0x12,0x2a,0x7f,0xaf,0x1a,0xae,0x19,0x12,0x2f, +0xd9,0x80,0x30,0xe5,0x1d,0x7f,0x00,0xfe,0xef,0x25,0x1e,0xf5,0x18,0xe4,0x3e,0xf5, +0x17,0xaf,0x18,0xfe,0x12,0x37,0x54,0x80,0x1a,0xe5,0x1d,0x7f,0x00,0xfe,0xef,0x25, +0x1e,0xf5,0x18,0xe4,0x3e,0xf5,0x17,0xaf,0x18,0xfe,0x12,0x36,0xcb,0x80,0x04,0x7f, +0x00,0x80,0x02,0x7f,0x01,0xd0,0xd0,0x92,0xaf,0x22,0x8e,0x0e,0x8f,0x0f,0x8b,0x10, +0x8a,0x11,0x89,0x12,0xe4,0x90,0x91,0x11,0xf0,0xef,0x90,0x00,0x31,0xf0,0x12,0x4c, +0xa0,0xe5,0x0e,0x54,0x03,0xff,0x90,0x00,0x32,0xe0,0x54,0xfc,0x4f,0xf0,0x12,0x4c, +0xa0,0x90,0x00,0x33,0xe0,0x54,0x7f,0xf0,0x12,0x4c,0xa0,0x90,0x00,0x33,0xe0,0x20, +0xe7,0x0e,0x90,0x91,0x11,0xe0,0xc3,0x94,0x64,0x50,0x05,0xe0,0x04,0xf0,0x80,0xeb, +0x90,0x91,0x11,0xe0,0xc3,0x94,0x64,0x50,0x10,0x90,0x00,0x30,0xe0,0xab,0x10,0xaa, +0x11,0xa9,0x12,0x12,0x42,0x4d,0x7f,0x01,0x22,0x7f,0x00,0x22,0xe4,0x90,0x91,0x98, +0xf0,0xa3,0xf0,0x90,0x05,0xf8,0xe0,0x70,0x0f,0xa3,0xe0,0x70,0x0b,0xa3,0xe0,0x70, +0x07,0xa3,0xe0,0x70,0x03,0x7f,0x01,0x22,0xd3,0x90,0x91,0x99,0xe0,0x94,0xe8,0x90, +0x91,0x98,0xe0,0x94,0x03,0x40,0x03,0x7f,0x00,0x22,0x7f,0x32,0x7e,0x00,0x12,0x37, +0x54,0x90,0x91,0x98,0xe4,0x75,0xf0,0x01,0x12,0x42,0x81,0x80,0xc6,0x7f,0x78,0x7e, +0x08,0x12,0x27,0xde,0x90,0x90,0xd8,0x12,0x2a,0x7f,0x7f,0x04,0x7e,0x0c,0x12,0x27, +0xde,0x90,0x90,0xdc,0x12,0x2a,0x7f,0x7f,0x00,0x7e,0x08,0x12,0x27,0xde,0x90,0x90, +0xe0,0x12,0x2a,0x7f,0x90,0x91,0x51,0xe0,0x90,0x90,0xd8,0xb4,0x01,0x0d,0x12,0x43, +0x09,0xef,0x54,0xc7,0xff,0xed,0x54,0xc7,0xfd,0x80,0x07,0x12,0x43,0x09,0xef,0x54, +0xc7,0xff,0xec,0x90,0x80,0x85,0x12,0x2a,0x7f,0x7f,0x78,0x7e,0x08,0x12,0x2f,0xd9, +0x90,0x90,0xdc,0x12,0x43,0x09,0xef,0x54,0x0f,0xff,0xec,0x90,0x80,0x85,0x12,0x2a, +0x7f,0x7f,0x04,0x7e,0x0c,0x12,0x2f,0xd9,0x90,0x90,0xe0,0x12,0x43,0x09,0xef,0x44, +0x02,0xff,0xec,0x90,0x80,0x85,0x12,0x2a,0x7f,0x7f,0x00,0x7e,0x08,0x12,0x2f,0xd9, +0x7f,0x70,0x7e,0x0e,0x12,0x27,0xde,0x90,0x90,0xe4,0x12,0x2a,0x7f,0x90,0x80,0x85, +0x12,0x2a,0x8b,0x00,0x1b,0x25,0xa0,0x7f,0x70,0x7e,0x0e,0x12,0x2f,0xd9,0x90,0x80, +0x59,0x12,0x2a,0x8b,0x00,0x00,0x00,0x00,0xe4,0xfd,0xff,0x12,0x34,0x81,0x90,0x91, +0x51,0xe0,0xb4,0x01,0x11,0x90,0x80,0x59,0x12,0x2a,0x8b,0x00,0x00,0x00,0x00,0xe4, +0xfd,0x7f,0x01,0x12,0x34,0x81,0x22,0xef,0x70,0x02,0x61,0x3d,0x90,0x90,0xe8,0xe0, +0x60,0x02,0xe1,0x08,0x90,0x90,0xd4,0x12,0x43,0x09,0x90,0x80,0x85,0x12,0x2a,0x7f, +0x7f,0x8c,0x7e,0x08,0x12,0x2f,0xd9,0x90,0x90,0x80,0x12,0x43,0x09,0x90,0x80,0x85, +0x12,0x2a,0x7f,0x7f,0x44,0x7e,0x08,0x12,0x2f,0xd9,0x90,0x90,0x84,0x12,0x43,0x09, +0x90,0x80,0x85,0x12,0x2a,0x7f,0x7f,0x5c,0x7e,0x08,0x12,0x2f,0xd9,0x90,0x90,0x88, +0x12,0x43,0x09,0x90,0x80,0x85,0x12,0x2a,0x7f,0x7f,0x6c,0x7e,0x0e,0x12,0x2f,0xd9, +0x90,0x90,0x8c,0x12,0x43,0x09,0x90,0x80,0x85,0x12,0x2a,0x7f,0x7f,0x70,0x7e,0x0e, +0x12,0x2f,0xd9,0x90,0x90,0x90,0x12,0x43,0x09,0x90,0x80,0x85,0x12,0x2a,0x7f,0x7f, +0x74,0x7e,0x0e,0x12,0x2f,0xd9,0x90,0x90,0x94,0x12,0x43,0x09,0x90,0x80,0x85,0x12, +0x2a,0x7f,0x7f,0x78,0x7e,0x0e,0x12,0x2f,0xd9,0x90,0x90,0x98,0x12,0x43,0x09,0x90, +0x80,0x85,0x12,0x2a,0x7f,0x7f,0x7c,0x7e,0x0e,0x12,0x2f,0xd9,0x90,0x90,0x9c,0x12, +0x43,0x09,0x90,0x80,0x85,0x12,0x2a,0x7f,0x7f,0x80,0x7e,0x0e,0x12,0x2f,0xd9,0x90, +0x90,0xa0,0x12,0x43,0x09,0x90,0x80,0x85,0x12,0x2a,0x7f,0x7f,0x84,0x7e,0x0e,0x12, +0x2f,0xd9,0x90,0x90,0xa4,0x12,0x43,0x09,0x90,0x80,0x85,0x12,0x2a,0x7f,0x7f,0x88, +0x7e,0x0e,0x12,0x2f,0xd9,0x90,0x90,0xa8,0x12,0x43,0x09,0x90,0x80,0x85,0x12,0x2a, +0x7f,0x7f,0x8c,0x7e,0x0e,0x12,0x2f,0xd9,0x90,0x90,0xac,0x12,0x43,0x09,0x90,0x80, +0x85,0x12,0x2a,0x7f,0x7f,0xd0,0x7e,0x0e,0x12,0x2f,0xd9,0x90,0x90,0xb0,0x12,0x43, +0x09,0x90,0x80,0x85,0x12,0x2a,0x7f,0x7f,0xd4,0x7e,0x0e,0x12,0x2f,0xd9,0x90,0x90, +0xb4,0x12,0x43,0x09,0x90,0x80,0x85,0x12,0x2a,0x7f,0x7f,0xd8,0x7e,0x0e,0x12,0x2f, +0xd9,0x90,0x90,0xb8,0x12,0x43,0x09,0x90,0x80,0x85,0x12,0x2a,0x7f,0x7f,0xdc,0x7e, +0x0e,0x12,0x2f,0xd9,0x90,0x90,0xbc,0x12,0x43,0x09,0x90,0x80,0x85,0x12,0x2a,0x7f, +0x7f,0xe0,0x7e,0x0e,0x12,0x2f,0xd9,0x90,0x90,0xc0,0x12,0x43,0x09,0x90,0x80,0x85, +0x12,0x2a,0x7f,0x7f,0xec,0x7e,0x0e,0x12,0x2f,0xd9,0x90,0x90,0xc4,0x12,0x43,0x09, +0x90,0x80,0x85,0x12,0x2a,0x7f,0x7f,0x04,0x7e,0x0c,0x12,0x2f,0xd9,0x90,0x90,0xc8, +0x12,0x43,0x09,0x90,0x80,0x85,0x12,0x2a,0x7f,0x7f,0x04,0x7e,0x0d,0x12,0x2f,0xd9, +0x90,0x90,0xcc,0x12,0x43,0x09,0x90,0x80,0x85,0x12,0x2a,0x7f,0x7f,0x0c,0x7e,0x09, +0x12,0x2f,0xd9,0x90,0x90,0xd0,0x12,0x43,0x09,0x90,0x80,0x85,0x12,0x2a,0x7f,0x7f, +0x04,0x7e,0x08,0x12,0x2f,0xd9,0x90,0x90,0xe8,0x74,0x01,0xf0,0x22,0x90,0x90,0xe8, +0xe0,0x64,0x01,0x60,0x02,0xe1,0x08,0x7f,0x8c,0x7e,0x08,0x12,0x27,0xde,0x90,0x90, +0xd4,0x12,0x2a,0x7f,0x7f,0x44,0x7e,0x08,0x12,0x27,0xde,0x90,0x90,0x80,0x12,0x2a, +0x7f,0x7f,0x5c,0x7e,0x08,0x12,0x27,0xde,0x90,0x90,0x84,0x12,0x2a,0x7f,0x7f,0x6c, +0x7e,0x0e,0x12,0x27,0xde,0x90,0x90,0x88,0x12,0x2a,0x7f,0x7f,0x70,0x7e,0x0e,0x12, +0x27,0xde,0x90,0x90,0x8c,0x12,0x2a,0x7f,0x7f,0x74,0x7e,0x0e,0x12,0x27,0xde,0x90, +0x90,0x90,0x12,0x2a,0x7f,0x7f,0x78,0x7e,0x0e,0x12,0x27,0xde,0x90,0x90,0x94,0x12, +0x2a,0x7f,0x7f,0x7c,0x7e,0x0e,0x12,0x27,0xde,0x90,0x90,0x98,0x12,0x2a,0x7f,0x7f, +0x80,0x7e,0x0e,0x12,0x27,0xde,0x90,0x90,0x9c,0x12,0x2a,0x7f,0x7f,0x84,0x7e,0x0e, +0x12,0x27,0xde,0x90,0x90,0xa0,0x12,0x2a,0x7f,0x7f,0x88,0x7e,0x0e,0x12,0x27,0xde, +0x90,0x90,0xa4,0x12,0x2a,0x7f,0x7f,0x8c,0x7e,0x0e,0x12,0x27,0xde,0x90,0x90,0xa8, +0x12,0x2a,0x7f,0x7f,0xd0,0x7e,0x0e,0x12,0x27,0xde,0x90,0x90,0xac,0x12,0x2a,0x7f, +0x7f,0xd4,0x7e,0x0e,0x12,0x27,0xde,0x90,0x90,0xb0,0x12,0x2a,0x7f,0x7f,0xd8,0x7e, +0x0e,0x12,0x27,0xde,0x90,0x90,0xb4,0x12,0x2a,0x7f,0x7f,0xdc,0x7e,0x0e,0x12,0x27, +0xde,0x90,0x90,0xb8,0x12,0x2a,0x7f,0x7f,0xe0,0x7e,0x0e,0x12,0x27,0xde,0x90,0x90, +0xbc,0x12,0x2a,0x7f,0x7f,0xec,0x7e,0x0e,0x12,0x27,0xde,0x90,0x90,0xc0,0x12,0x2a, +0x7f,0x7f,0x04,0x7e,0x0c,0x12,0x27,0xde,0x90,0x90,0xc4,0x12,0x2a,0x7f,0x7f,0x04, +0x7e,0x0d,0x12,0x27,0xde,0x90,0x90,0xc8,0x12,0x2a,0x7f,0x7f,0x0c,0x7e,0x09,0x12, +0x27,0xde,0x90,0x90,0xcc,0x12,0x2a,0x7f,0x7f,0x04,0x7e,0x08,0x12,0x27,0xde,0x90, +0x90,0xd0,0x12,0x2a,0x7f,0x7f,0x8c,0x7e,0x08,0x12,0x27,0xde,0x90,0x91,0x88,0x12, +0x2a,0x7f,0x90,0x91,0x88,0x12,0x43,0x09,0xed,0x44,0xc0,0xfd,0xec,0x90,0x91,0x88, +0x12,0x2a,0x7f,0x90,0x91,0x88,0x12,0x43,0x09,0x90,0x80,0x85,0x12,0x2a,0x7f,0x7f, +0x8c,0x7e,0x08,0x12,0x2f,0xd9,0x90,0x80,0x85,0x12,0x2a,0x8b,0x00,0x01,0x00,0x00, +0x7f,0x44,0x7e,0x08,0x12,0x2f,0xd9,0x90,0x80,0x85,0x12,0x2a,0x8b,0x00,0xdb,0x25, +0xa4,0x7f,0x5c,0x7e,0x08,0x12,0x2f,0xd9,0x90,0x80,0x85,0x12,0x2a,0x8b,0x20,0xdb, +0x25,0xa4,0x7f,0x6c,0x7e,0x0e,0x12,0x2f,0xd9,0x90,0x80,0x85,0x12,0x2a,0x8b,0x20, +0xdb,0x25,0xa4,0x7f,0x70,0x7e,0x0e,0x12,0x2f,0xd9,0x90,0x80,0x85,0x12,0x2a,0x8b, +0x04,0x1b,0x25,0xa4,0x7f,0x74,0x7e,0x0e,0x12,0x2f,0xd9,0x90,0x80,0x85,0x12,0x2a, +0x8b,0x04,0x1b,0x25,0xa4,0x7f,0x78,0x7e,0x0e,0x12,0x2f,0xd9,0x90,0x80,0x85,0x12, +0x2a,0x8b,0x04,0x1b,0x25,0xa4,0x7f,0x7c,0x7e,0x0e,0x12,0x2f,0xd9,0x90,0x80,0x85, +0x12,0x2a,0x8b,0x04,0x1b,0x25,0xa4,0x7f,0x80,0x7e,0x0e,0x12,0x2f,0xd9,0x90,0x80, +0x85,0x12,0x2a,0x8b,0x63,0xdb,0x25,0xa4,0x7f,0x84,0x7e,0x0e,0x12,0x2f,0xd9,0x90, +0x80,0x85,0x12,0x2a,0x8b,0x04,0x1b,0x25,0xa4,0x7f,0x88,0x7e,0x0e,0x12,0x2f,0xd9, +0x90,0x80,0x85,0x12,0x2a,0x8b,0x20,0xdb,0x25,0xa4,0x7f,0x8c,0x7e,0x0e,0x12,0x2f, +0xd9,0x90,0x80,0x85,0x12,0x2a,0x8b,0x20,0xdb,0x25,0xa4,0x7f,0xd0,0x7e,0x0e,0x12, +0x2f,0xd9,0x90,0x80,0x85,0x12,0x2a,0x8b,0x20,0xdb,0x25,0xa4,0x7f,0xd4,0x7e,0x0e, +0x12,0x2f,0xd9,0x90,0x80,0x85,0x12,0x2a,0x8b,0x20,0xdb,0x25,0xa4,0x7f,0xd8,0x7e, +0x0e,0x12,0x2f,0xd9,0x90,0x80,0x85,0x12,0x2a,0x8b,0x00,0x1b,0x25,0xa4,0x7f,0xdc, +0x7e,0x0e,0x12,0x2f,0xd9,0x90,0x80,0x85,0x12,0x2a,0x8b,0x00,0x1b,0x25,0xa4,0x7f, +0xe0,0x7e,0x0e,0x12,0x2f,0xd9,0x90,0x80,0x85,0x12,0x2a,0x8b,0x24,0xdb,0x25,0xa4, +0x7f,0xec,0x7e,0x0e,0x12,0x2f,0xd9,0x7f,0x04,0x7e,0x0c,0x12,0x27,0xde,0x90,0x91, +0x88,0x12,0x2a,0x7f,0x90,0x91,0x88,0x12,0x43,0x09,0xe4,0xff,0xec,0x90,0x91,0x88, +0x12,0x2a,0x7f,0x90,0x91,0x88,0x12,0x43,0x09,0xef,0x44,0x11,0xff,0xec,0x90,0x91, +0x88,0x12,0x2a,0x7f,0x90,0x91,0x88,0x12,0x43,0x09,0x90,0x80,0x85,0x12,0x2a,0x7f, +0x7f,0x04,0x7e,0x0c,0x12,0x2f,0xd9,0x7f,0x04,0x7e,0x0d,0x12,0x27,0xde,0x90,0x91, +0x88,0x12,0x2a,0x7f,0x90,0x91,0x88,0x12,0x43,0x09,0xef,0x54,0xf0,0xff,0xec,0x90, +0x91,0x88,0x12,0x2a,0x7f,0x90,0x91,0x88,0x12,0x43,0x09,0xef,0x44,0x01,0xff,0xec, +0x90,0x91,0x88,0x12,0x2a,0x7f,0x90,0x91,0x88,0x12,0x43,0x09,0x90,0x80,0x85,0x12, +0x2a,0x7f,0x7f,0x04,0x7e,0x0d,0x12,0x2f,0xd9,0x7f,0x0c,0x7e,0x09,0x12,0x27,0xde, +0x90,0x91,0x88,0x12,0x2a,0x7f,0x90,0x91,0x88,0x12,0x43,0x09,0xe4,0xff,0xec,0x90, +0x91,0x88,0x12,0x2a,0x7f,0x90,0x91,0x88,0x12,0x43,0x09,0xef,0x44,0x11,0xff,0xec, +0x90,0x91,0x88,0x12,0x2a,0x7f,0x90,0x91,0x88,0x12,0x43,0x09,0x90,0x80,0x85,0x12, +0x2a,0x7f,0x7f,0x0c,0x7e,0x09,0x12,0x2f,0xd9,0x7f,0x0c,0x7e,0x09,0x12,0x27,0xde, +0x90,0x91,0x88,0x12,0x2a,0x7f,0x90,0x91,0x88,0x12,0x43,0x09,0xed,0x54,0x0f,0xfd, +0xec,0x54,0xf0,0xfc,0x90,0x91,0x88,0x12,0x2a,0x7f,0x90,0x91,0x88,0x12,0x43,0x09, +0xed,0x44,0x10,0xfd,0xec,0x44,0x01,0xfc,0x90,0x91,0x88,0x12,0x2a,0x7f,0x90,0x91, +0x88,0x12,0x43,0x09,0x90,0x80,0x85,0x12,0x2a,0x7f,0x7f,0x0c,0x7e,0x09,0x12,0x2f, +0xd9,0x7f,0x04,0x7e,0x08,0x12,0x27,0xde,0x90,0x91,0x88,0x12,0x2a,0x7f,0x90,0x91, +0x88,0x12,0x43,0x09,0xef,0x54,0xf0,0xff,0xec,0x90,0x91,0x88,0x12,0x2a,0x7f,0x90, +0x91,0x88,0x12,0x43,0x09,0xef,0x44,0x01,0xff,0xec,0x90,0x91,0x88,0x12,0x2a,0x7f, +0x90,0x91,0x88,0x12,0x43,0x09,0x90,0x80,0x85,0x12,0x2a,0x7f,0x7f,0x04,0x7e,0x08, +0x12,0x2f,0xd9,0xe4,0x90,0x90,0xe8,0xf0,0x22,0xd3,0x10,0xaf,0x01,0xc3,0xc0,0xd0, +0x90,0x91,0xa0,0xef,0xf0,0xd3,0x94,0x07,0x50,0x47,0xe0,0xff,0x74,0x01,0xa8,0x07, +0x08,0x80,0x02,0xc3,0x33,0xd8,0xfc,0xf4,0xff,0x90,0x00,0x46,0xe0,0x5f,0xf0,0x12, +0x4c,0xa0,0x90,0x91,0xa0,0xe0,0xfd,0x74,0x01,0x7e,0x00,0xa8,0x05,0x08,0x80,0x05, +0xc3,0x33,0xce,0x33,0xce,0xd8,0xf9,0xff,0x90,0x00,0x44,0xe0,0xfb,0xe4,0xfe,0xef, +0x5b,0xa8,0x05,0x08,0x80,0x06,0xce,0xa2,0xe7,0x13,0xce,0x13,0xd8,0xf8,0xff,0x80, +0x44,0x90,0x91,0xa0,0xe0,0x24,0xf8,0xf0,0xe0,0xff,0x74,0x01,0xa8,0x07,0x08,0x80, +0x02,0xc3,0x33,0xd8,0xfc,0x12,0x4c,0x98,0x90,0x91,0xa0,0xe0,0xfd,0x74,0x01,0x7e, +0x00,0xa8,0x05,0x08,0x80,0x05,0xc3,0x33,0xce,0x33,0xce,0xd8,0xf9,0xff,0x90,0x00, +0x42,0xe0,0xfb,0xe4,0xfe,0xef,0x5b,0xa8,0x05,0x08,0x80,0x06,0xce,0xa2,0xe7,0x13, +0xce,0x13,0xd8,0xf8,0xff,0xd0,0xd0,0x92,0xaf,0x22,0xe4,0xfd,0x7f,0x45,0x12,0x4d, +0xa8,0x90,0x04,0xfd,0xe4,0xf0,0xa3,0xf0,0x90,0x90,0xf7,0xf0,0x90,0x90,0xfd,0xf0, +0x90,0x91,0x00,0xf0,0x90,0x90,0xfe,0xf0,0x90,0x91,0x01,0xf0,0x90,0x90,0xff,0xf0, +0x90,0x91,0x02,0xf0,0x90,0x90,0xe9,0x04,0xf0,0xe4,0xa3,0xf0,0xa3,0xf0,0xa3,0xf0, +0x90,0x90,0xee,0xf0,0x90,0x90,0xf3,0xf0,0x90,0x90,0xf5,0xf0,0x90,0x91,0x07,0xf0, +0x90,0x90,0xf8,0xf0,0x90,0x90,0xf4,0xf0,0x90,0x90,0xed,0xf0,0x90,0x00,0x51,0xe0, +0x44,0xc0,0xfd,0x7f,0x51,0x02,0x4d,0xa8,0x90,0x91,0x07,0xe0,0x64,0x01,0x60,0x08, +0x90,0x90,0xf5,0xe0,0x60,0x02,0x01,0xdf,0x90,0x90,0xe9,0xe0,0xc3,0x94,0xff,0x50, +0x05,0xe0,0x04,0xf0,0x80,0x3b,0x90,0x90,0xea,0xe0,0xc3,0x94,0xff,0x50,0x06,0xe0, +0x04,0xf0,0xe4,0x80,0x28,0x90,0x90,0xeb,0xe0,0xc3,0x94,0xff,0x50,0x0a,0xe0,0x04, +0xf0,0xe4,0x90,0x90,0xea,0xf0,0x80,0x15,0x90,0x90,0xec,0xe0,0xc3,0x94,0xff,0x50, +0x10,0xe0,0x04,0xf0,0xe4,0x90,0x90,0xeb,0xf0,0x90,0x90,0xea,0xf0,0x90,0x90,0xe9, +0xf0,0x90,0x00,0x44,0xe0,0x54,0x0c,0x60,0x76,0xe0,0x30,0xe2,0x32,0x90,0x90,0xfd, +0xe0,0xc3,0x94,0xff,0x50,0x05,0xe0,0x04,0xf0,0x80,0x24,0x90,0x90,0xfe,0xe0,0xc3, +0x94,0xff,0x50,0x06,0xe0,0x04,0xf0,0xe4,0x80,0x11,0x90,0x90,0xff,0xe0,0xc3,0x94, +0xff,0x50,0x0c,0xe0,0x04,0xf0,0xe4,0x90,0x90,0xfe,0xf0,0x90,0x90,0xfd,0xf0,0x90, +0x00,0x44,0xe0,0x30,0xe3,0x32,0x90,0x91,0x00,0xe0,0xc3,0x94,0xff,0x50,0x05,0xe0, +0x04,0xf0,0x80,0x24,0x90,0x91,0x01,0xe0,0xc3,0x94,0xff,0x50,0x06,0xe0,0x04,0xf0, +0xe4,0x80,0x11,0x90,0x91,0x02,0xe0,0xc3,0x94,0xff,0x50,0x0c,0xe0,0x04,0xf0,0xe4, +0x90,0x91,0x01,0xf0,0x90,0x91,0x00,0xf0,0x90,0x04,0xfd,0xe0,0x44,0x01,0xf0,0x22, +0xe5,0x6e,0x30,0xe3,0x04,0xe4,0xff,0x80,0x02,0x7f,0x01,0x02,0x47,0xc9,0x90,0x91, +0x53,0xe0,0x30,0xe0,0x49,0xe5,0x6d,0x64,0x01,0x70,0x43,0x90,0x91,0x52,0xe0,0x04, +0xf0,0xe5,0x70,0x64,0x03,0x60,0x05,0xe5,0x70,0xb4,0x06,0x0d,0x90,0x91,0x52,0xe0, +0xff,0x74,0x01,0xd3,0x9f,0x50,0x14,0x80,0x07,0x90,0x91,0x52,0xe0,0xb4,0x0a,0x0b, +0x90,0x91,0x55,0xe0,0x04,0xf0,0xe4,0x90,0x91,0x52,0xf0,0x90,0x91,0x55,0xe0,0xff, +0x90,0x91,0x54,0xe0,0xb5,0x07,0x07,0x11,0xe0,0xe4,0x90,0x91,0x55,0xf0,0x22,0x90, +0x06,0x90,0xe0,0x44,0x01,0xf0,0x90,0x91,0x61,0xe0,0x30,0xe0,0x3c,0x90,0x91,0x5f, +0xe0,0xff,0x90,0x91,0x5e,0xe0,0xfe,0xc4,0x13,0x54,0x01,0xfd,0x12,0x4c,0xb0,0x90, +0x91,0x60,0xe0,0x75,0xf0,0x20,0xa4,0xff,0xae,0xf0,0x12,0x37,0x54,0x90,0x91,0x5e, +0xe0,0xc4,0x13,0x54,0x07,0x30,0xe0,0x07,0xa3,0xe0,0xff,0xe4,0xfd,0x80,0x07,0x90, +0x91,0x5f,0xe0,0xff,0x7d,0x01,0x12,0x4c,0xb0,0x22,0xd3,0x10,0xaf,0x01,0xc3,0xc0, +0xd0,0xe4,0x90,0x91,0x19,0xf0,0xa3,0x74,0x08,0xf0,0xa3,0xf0,0xe4,0xa3,0xf0,0x90, +0x01,0x1f,0xe0,0xfe,0x90,0x01,0x1e,0xe0,0x7c,0x00,0x24,0x00,0xff,0xec,0x3e,0x90, +0x91,0x11,0xf0,0xa3,0xef,0xf0,0x90,0x02,0x87,0xe0,0x90,0x91,0x18,0xf0,0x90,0x91, +0x56,0xe0,0x20,0xe0,0x02,0x61,0xb7,0xe4,0x90,0x91,0x17,0xf0,0x90,0x91,0x18,0xe0, +0xff,0x90,0x91,0x17,0xe0,0xc3,0x9f,0x40,0x02,0x61,0xb7,0x90,0x91,0x11,0xe0,0xfc, +0xa3,0xe0,0xfd,0xec,0xff,0x90,0xfd,0x11,0xf0,0x90,0x91,0x1c,0xef,0xf0,0x74,0x02, +0x2d,0xf5,0x82,0xe4,0x34,0xfb,0xf5,0x83,0xe0,0x54,0x0f,0xfc,0x33,0x33,0x33,0x54, +0xf8,0xff,0xed,0x24,0x18,0x2f,0x90,0x91,0x15,0xf0,0xe0,0x24,0x00,0xf5,0x82,0xe4, +0x34,0xfb,0xf5,0x83,0xe0,0x54,0xfc,0x90,0x91,0x16,0xf0,0x74,0x01,0x2d,0xf5,0x82, +0xe4,0x34,0xfb,0xf5,0x83,0xe0,0xfe,0x74,0x00,0x2d,0xf5,0x82,0xe4,0x34,0xfb,0xf5, +0x83,0xe0,0x7a,0x00,0x24,0x00,0xff,0xea,0x3e,0x54,0x3f,0xab,0x07,0xfa,0x90,0x91, +0x13,0xf0,0xa3,0xeb,0xf0,0xaf,0x04,0xef,0x75,0xf0,0x08,0xa4,0x24,0x18,0xff,0xe4, +0x35,0xf0,0xfe,0xef,0x2b,0xfb,0xee,0x3a,0xfa,0x90,0x91,0x5a,0xe0,0xfe,0xa3,0xe0, +0xff,0xad,0x03,0xac,0x02,0x12,0x45,0x09,0xaa,0x06,0xab,0x07,0x90,0x91,0x15,0xe0, +0x24,0x00,0xf5,0x82,0xe4,0x34,0xfb,0xf5,0x83,0xe0,0x30,0xe7,0x08,0x90,0x91,0x19, +0x74,0x02,0xf0,0x80,0x05,0xe4,0x90,0x91,0x19,0xf0,0xaf,0x03,0x90,0x91,0x11,0xea, +0x8f,0xf0,0x12,0x42,0x81,0x90,0x91,0x5c,0xe0,0xfe,0xa3,0xe0,0xff,0x90,0x91,0x11, +0xe0,0xfc,0xa3,0xe0,0xfd,0xd3,0x9f,0xec,0x9e,0x40,0x1b,0x90,0x91,0x5d,0xe0,0x24, +0x01,0xff,0x90,0x91,0x5c,0xe0,0x34,0x00,0xfe,0xc3,0xed,0x9f,0xff,0xec,0x9e,0x90, +0x91,0x11,0xf0,0xa3,0xef,0xf0,0x90,0x91,0x16,0xe0,0xff,0x24,0x40,0x60,0x04,0x24, +0x20,0x70,0x27,0x90,0x91,0x5e,0xe0,0xfe,0xc4,0x13,0x13,0x13,0x54,0x01,0x20,0xe0, +0x02,0x61,0x8f,0xef,0x90,0x00,0x81,0xb4,0xa0,0x05,0xe0,0x44,0x04,0x80,0x03,0xe0, +0x44,0x08,0xfd,0x7f,0x81,0x12,0x4d,0xa8,0x61,0x88,0x90,0x91,0x5e,0xe0,0xc4,0x13, +0x13,0x54,0x03,0x20,0xe0,0x02,0x61,0x8f,0x90,0x91,0x15,0xe0,0xff,0x24,0x00,0xf5, +0x82,0xe4,0x34,0xfb,0xf5,0x83,0xe0,0x54,0x0c,0x64,0x08,0x70,0x72,0x90,0x91,0x19, +0xe0,0xfe,0xef,0x2e,0xff,0xa3,0xe0,0x2f,0xff,0x24,0x1e,0xf5,0x82,0xe4,0x34,0xfb, +0xf5,0x83,0xe0,0x64,0x88,0x70,0x58,0x74,0x1f,0x2f,0xf5,0x82,0xe4,0x34,0xfb,0xf5, +0x83,0xe0,0x64,0x8e,0x70,0x49,0x90,0x91,0x19,0xe0,0xff,0x90,0x91,0x15,0xe0,0x2f, +0xff,0x90,0x91,0x1a,0xe0,0x2f,0xff,0xa3,0xe0,0x2f,0xff,0x24,0x19,0xf5,0x82,0xe4, +0x34,0xfb,0xf5,0x83,0xe0,0x64,0x03,0x70,0x26,0x74,0x1e,0x2f,0xf5,0x82,0xe4,0x34, +0xfb,0xf5,0x83,0xe0,0x90,0x00,0x81,0x30,0xe3,0x05,0xe0,0x44,0x01,0x80,0x03,0xe0, +0x44,0x02,0xfd,0x7f,0x81,0x12,0x4d,0xa8,0x90,0x91,0x56,0xe0,0x44,0x80,0xf0,0x90, +0x91,0x56,0xe0,0xff,0xc4,0x13,0x13,0x13,0x54,0x01,0x30,0xe0,0x02,0x31,0x3f,0x71, +0xbc,0xbf,0x01,0x13,0x90,0x91,0x11,0xe0,0xfe,0xa3,0xe0,0xff,0x12,0x44,0xb5,0x90, +0x91,0x17,0xe0,0x04,0xf0,0x21,0xcc,0xd0,0xd0,0x92,0xaf,0x22,0x90,0x91,0x56,0xe0, +0xc4,0x13,0x13,0x13,0x54,0x01,0x30,0xe0,0x11,0xe0,0x44,0x80,0xf0,0x90,0x91,0x5e, +0xe0,0xc4,0x54,0x0f,0x20,0xe0,0x03,0x7f,0x00,0x22,0x7f,0x01,0x22,0x8f,0x1f,0xe4, +0x90,0x91,0x22,0xf0,0xe5,0x1f,0x14,0xfe,0x90,0x91,0x22,0xe0,0xff,0xc3,0x9e,0x50, +0x0e,0xef,0x04,0xfd,0x12,0x34,0xb7,0x90,0x91,0x22,0xe0,0x04,0xf0,0x80,0xe5,0xe5, +0x1f,0x14,0xff,0x7d,0xff,0x12,0x34,0xb7,0x90,0x91,0x22,0xe5,0x1f,0xf0,0x90,0x91, +0x22,0xe0,0xc3,0x94,0xff,0x50,0x0f,0xe0,0xff,0x04,0xfd,0x12,0x34,0xb7,0x90,0x91, +0x22,0xe0,0x04,0xf0,0x80,0xe8,0xad,0x1f,0x7f,0xff,0x02,0x34,0xb7,0xc3,0xee,0x94, +0x01,0x40,0x0a,0x0d,0xed,0x13,0x90,0xfd,0x10,0xf0,0xe4,0x2f,0xff,0x22,0xc3,0xee, +0x94,0x01,0x40,0x1e,0x90,0xfd,0x11,0xe0,0xb5,0x05,0x14,0x90,0x01,0x17,0xe0,0xb5, +0x05,0x07,0x90,0xfd,0x11,0xe4,0xf0,0x80,0x06,0xed,0x04,0x90,0xfd,0x11,0xf0,0xe4, +0x2f,0xff,0x22,0x00,0x18,0x58,}; --- linux-raspi2-4.2.0.orig/drivers/net/wireless/rtl8192cu/hal/rtl8192c/usb/rtl8192cu_led.c +++ linux-raspi2-4.2.0/drivers/net/wireless/rtl8192cu/hal/rtl8192c/usb/rtl8192cu_led.c @@ -0,0 +1,2674 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved. + * + * 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 + * published by the Free Software Foundation. + * + * 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 Street, Fifth Floor, Boston, MA 02110, USA + * + * + ******************************************************************************/ + +#include "drv_types.h" +#include "rtl8192c_hal.h" + +//================================================================================ +// Constant. +//================================================================================ + +// +// Default LED behavior. +// +#define LED_BLINK_NORMAL_INTERVAL 100 +#define LED_BLINK_SLOWLY_INTERVAL 200 +#define LED_BLINK_LONG_INTERVAL 400 + +#define LED_BLINK_NO_LINK_INTERVAL_ALPHA 1000 +#define LED_BLINK_LINK_INTERVAL_ALPHA 500 //500 +#define LED_BLINK_SCAN_INTERVAL_ALPHA 180 //150 +#define LED_BLINK_FASTER_INTERVAL_ALPHA 50 +#define LED_BLINK_WPS_SUCESS_INTERVAL_ALPHA 5000 + +//================================================================================ +// LED object. +//================================================================================ + + +//================================================================================ +// Prototype of protected function. +//================================================================================ + + +static void +BlinkTimerCallback( + unsigned long data + ); + +static void +BlinkWorkItemCallback( + struct work_struct *work + ); + +// +// Description: +// Reset blinking status of LED_871x object. +// +static void +ResetLedStatus(PLED_871x pLed) { + pLed->CurrLedState = RTW_LED_OFF; // Current LED state. + pLed->bLedOn = _FALSE; // true if LED is ON, false if LED is OFF. + + pLed->bLedBlinkInProgress = _FALSE; // true if it is blinking, false o.w.. + pLed->bLedNoLinkBlinkInProgress = _FALSE; + pLed->bLedLinkBlinkInProgress = _FALSE; + pLed->bLedStartToLinkBlinkInProgress = _FALSE; + pLed->bLedScanBlinkInProgress = _FALSE; + pLed->bLedWPSBlinkInProgress = _FALSE; + pLed->BlinkTimes = 0; // Number of times to toggle led state for blinking. + pLed->BlinkingLedState = LED_UNKNOWN; // Next state for blinking, either RTW_LED_ON or RTW_LED_OFF are. +} + +//================================================================================ +// LED_819xUsb routines. +//================================================================================ + +// +// Description: +// Initialize an LED_871x object. +// +static void +InitLed871x( + _adapter *padapter, + PLED_871x pLed, + LED_PIN_871x LedPin + ) +{ + pLed->padapter = padapter; + pLed->LedPin = LedPin; + + ResetLedStatus(pLed); + + _init_timer(&(pLed->BlinkTimer), padapter->pnetdev, BlinkTimerCallback, pLed); + _init_workitem(&(pLed->BlinkWorkItem), BlinkWorkItemCallback, pLed); +} + + +// +// Description: +// DeInitialize an LED_871x object. +// +static void +DeInitLed871x( + PLED_871x pLed + ) +{ + //call _cancel_workitem_sync(&(pLed->BlinkWorkItem)) + //before _cancel_timer_ex(&(pLed->BlinkTimer)) to + //avoid led timer restarting when driver is removed + + _cancel_workitem_sync(&(pLed->BlinkWorkItem)); + + _cancel_timer_ex(&(pLed->BlinkTimer)); + + // We should reset bLedBlinkInProgress if we cancel the LedControlTimer, 2005.03.10, by rcnjko. + ResetLedStatus(pLed); +} + +// +// Description: +// Turn on LED according to LedPin specified. +// +static void +SwLedOn( + _adapter *padapter, + PLED_871x pLed +) +{ + u8 LedCfg; + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(padapter); + + if( (padapter->bSurpriseRemoved == _TRUE) || ( padapter->bDriverStopped == _TRUE)) + { + return; + } + + if( (BOARD_MINICARD == pHalData->BoardType )|| + (BOARD_USB_SOLO == pHalData->BoardType)|| + (BOARD_USB_COMBO == pHalData->BoardType)) + { + LedCfg = rtw_read8(padapter, REG_LEDCFG2); + switch(pLed->LedPin) + { + case LED_PIN_GPIO0: + break; + + case LED_PIN_LED0: + rtw_write8(padapter, REG_LEDCFG2, (LedCfg&0xf0)|BIT5|BIT6); // SW control led0 on. + break; + + case LED_PIN_LED1: + rtw_write8(padapter, REG_LEDCFG2, (LedCfg&0x0f)|BIT5); // SW control led1 on. + break; + + default: + break; + + } + } + else + { + switch(pLed->LedPin) + { + case LED_PIN_GPIO0: + break; + + case LED_PIN_LED0: +#ifdef CONFIG_SW_ANTENNA_DIVERSITY + if(pHalData->AntDivCfg) + { + LedCfg = rtw_read8(padapter, REG_LEDCFG2); + rtw_write8(padapter, REG_LEDCFG2, (LedCfg&0xe0)|BIT7|BIT6|BIT5); // SW control led0 on. + //RT_TRACE(COMP_LED, DBG_LOUD, ("SwLedOn LED0 0x%x\n", PlatformEFIORead4Byte(Adapter, REG_LEDCFG2))); + } + else +#endif + { + LedCfg = rtw_read8(padapter, REG_LEDCFG0); + rtw_write8(padapter,REG_LEDCFG0, LedCfg&0x70); // SW control led0 on. + //RT_TRACE(COMP_LED, DBG_LOUD, ("SwLedOn LED0 0x%lx\n", PlatformEFIORead4Byte(Adapter, REG_LEDCFG0))); + } + break; + + case LED_PIN_LED1: + LedCfg = rtw_read8(padapter,(REG_LEDCFG1)); + rtw_write8(padapter,(REG_LEDCFG1), LedCfg&0x70); // SW control led1 on. + //RT_TRACE(COMP_LED, DBG_LOUD, ("SwLedOn LED1 0x%lx\n", PlatformEFIORead4Byte(Adapter, REG_LEDCFG0))); + + break; + + default: + break; + } + } + pLed->bLedOn = _TRUE; + +} + + +// +// Description: +// Turn off LED according to LedPin specified. +// +static void +SwLedOff( + _adapter *padapter, + PLED_871x pLed +) +{ + u8 LedCfg; + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(padapter); + + if((padapter->bSurpriseRemoved == _TRUE) || ( padapter->bDriverStopped == _TRUE)) + { + goto exit; + } + + if( (BOARD_MINICARD == pHalData->BoardType )|| + (BOARD_USB_SOLO == pHalData->BoardType)|| + (BOARD_USB_COMBO == pHalData->BoardType)) + { + LedCfg = rtw_read8(padapter, REG_LEDCFG2);//0x4E + + switch(pLed->LedPin) + { + + case LED_PIN_GPIO0: + break; + + case LED_PIN_LED0: + if(BOARD_USB_COMBO == pHalData->BoardType) + { + LedCfg &= 0x90; // Set to software control. + rtw_write8(padapter, REG_LEDCFG2, (LedCfg|BIT3)); + LedCfg = rtw_read8(padapter, REG_MAC_PINMUX_CFG); + LedCfg &= 0xFE; + rtw_write8(padapter, REG_MAC_PINMUX_CFG, LedCfg); + } + else + { + LedCfg &= 0xf0; // Set to software control. + if(pHalData->bLedOpenDrain == _TRUE) // Open-drain arrangement for controlling the LED + rtw_write8(padapter, REG_LEDCFG2, (LedCfg|BIT1|BIT5|BIT6)); + else + rtw_write8(padapter, REG_LEDCFG2, (LedCfg|BIT3|BIT5|BIT6)); + } + break; + + case LED_PIN_LED1: + LedCfg &= 0x0f; // Set to software control. + rtw_write8(padapter, REG_LEDCFG2, (LedCfg|BIT3)); + break; + + default: + break; + } + } + else + { + switch(pLed->LedPin) + { + case LED_PIN_GPIO0: + break; + + case LED_PIN_LED0: +#ifdef CONFIG_SW_ANTENNA_DIVERSITY + if(pHalData->AntDivCfg) + { + LedCfg = rtw_read8(padapter, REG_LEDCFG2); + LedCfg &= 0xe0; // Set to software control. + rtw_write8(padapter, REG_LEDCFG2, (LedCfg|BIT3|BIT7|BIT6|BIT5)); + //RT_TRACE(COMP_LED, DBG_LOUD, ("SwLedOff LED0 0x%x\n", PlatformEFIORead4Byte(Adapter, REG_LEDCFG2))); + } + else +#endif + { + LedCfg = rtw_read8(padapter, REG_LEDCFG0); + LedCfg &= 0x70; // Set to software control. + rtw_write8(padapter, REG_LEDCFG0, (LedCfg|BIT3)); + //RT_TRACE(COMP_LED, DBG_LOUD, ("SwLedOff LED0 0x%lx\n", PlatformEFIORead4Byte(Adapter, REG_LEDCFG0))); + } + break; + + case LED_PIN_LED1: + LedCfg = rtw_read8(padapter, (REG_LEDCFG1)); + LedCfg &= 0x70; // Set to software control. + rtw_write8(padapter, (REG_LEDCFG1), (LedCfg|BIT3)); + //RT_TRACE(COMP_LED, DBG_LOUD, ("SwLedOff LED1 0x%lx\n", PlatformEFIORead4Byte(Adapter, REG_LEDCFG0))); + break; + + default: + break; + } + } + +exit: + pLed->bLedOn = _FALSE; + +} + +//================================================================================ +// Interface to manipulate LED objects. +//================================================================================ + + +// +// Description: +// Implementation of LED blinking behavior. +// It toggle off LED and schedule corresponding timer if necessary. +// +static void +SwLedBlink( + PLED_871x pLed + ) +{ + _adapter *padapter = pLed->padapter; + struct mlme_priv *pmlmepriv = &(padapter->mlmepriv); + u8 bStopBlinking = _FALSE; + + // Change LED according to BlinkingLedState specified. + if( pLed->BlinkingLedState == RTW_LED_ON ) + { + SwLedOn(padapter, pLed); + RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("Blinktimes (%d): turn on\n", pLed->BlinkTimes)); + } + else + { + SwLedOff(padapter, pLed); + RT_TRACE(_module_rtl8712_led_c_,_drv_info_,( "Blinktimes (%d): turn off\n", pLed->BlinkTimes)); + } + + // Determine if we shall change LED state again. + pLed->BlinkTimes--; + switch(pLed->CurrLedState) + { + + case LED_BLINK_NORMAL: + if(pLed->BlinkTimes == 0) + { + bStopBlinking = _TRUE; + } + break; + + case LED_BLINK_StartToBlink: + if( check_fwstate(pmlmepriv, _FW_LINKED) && check_fwstate(pmlmepriv, WIFI_STATION_STATE) ) + { + bStopBlinking = _TRUE; + } + if( check_fwstate(pmlmepriv, _FW_LINKED) && + (check_fwstate(pmlmepriv, WIFI_ADHOC_STATE) || check_fwstate(pmlmepriv, WIFI_ADHOC_MASTER_STATE)) ) + { + bStopBlinking = _TRUE; + } + else if(pLed->BlinkTimes == 0) + { + bStopBlinking = _TRUE; + } + break; + + case LED_BLINK_WPS: + if( pLed->BlinkTimes == 0 ) + { + bStopBlinking = _TRUE; + } + break; + + + default: + bStopBlinking = _TRUE; + break; + + } + + if(bStopBlinking) + { + //if( padapter->pwrctrlpriv.cpwm >= PS_STATE_S2) + if(0) + { + SwLedOff(padapter, pLed); + } + else if( (check_fwstate(pmlmepriv, _FW_LINKED)== _TRUE) && (pLed->bLedOn == _FALSE)) + { + SwLedOn(padapter, pLed); + } + else if( (check_fwstate(pmlmepriv, _FW_LINKED)== _TRUE) && pLed->bLedOn == _TRUE) + { + SwLedOff(padapter, pLed); + } + + pLed->BlinkTimes = 0; + pLed->bLedBlinkInProgress = _FALSE; + } + else + { + // Assign LED state to toggle. + if( pLed->BlinkingLedState == RTW_LED_ON ) + pLed->BlinkingLedState = RTW_LED_OFF; + else + pLed->BlinkingLedState = RTW_LED_ON; + + // Schedule a timer to toggle LED state. + switch( pLed->CurrLedState ) + { + case LED_BLINK_NORMAL: + _set_timer(&(pLed->BlinkTimer), LED_BLINK_NORMAL_INTERVAL); + break; + + case LED_BLINK_SLOWLY: + case LED_BLINK_StartToBlink: + _set_timer(&(pLed->BlinkTimer), LED_BLINK_SLOWLY_INTERVAL); + break; + + case LED_BLINK_WPS: + { + if( pLed->BlinkingLedState == RTW_LED_ON ) + _set_timer(&(pLed->BlinkTimer), LED_BLINK_LONG_INTERVAL); + else + _set_timer(&(pLed->BlinkTimer), LED_BLINK_LONG_INTERVAL); + } + break; + + default: + _set_timer(&(pLed->BlinkTimer), LED_BLINK_SLOWLY_INTERVAL); + break; + } + } +} + + +static void +SwLedBlink1( + PLED_871x pLed + ) +{ + _adapter *padapter = pLed->padapter; + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(padapter); + struct led_priv *ledpriv = &(padapter->ledpriv); + struct mlme_priv *pmlmepriv = &(padapter->mlmepriv); + PLED_871x pLed1 = &(ledpriv->SwLed1); + u8 bStopBlinking = _FALSE; + + if(pHalData->EEPROMCustomerID == RT_CID_819x_CAMEO) + pLed = &(ledpriv->SwLed1); + + // Change LED according to BlinkingLedState specified. + if( pLed->BlinkingLedState == RTW_LED_ON ) + { + SwLedOn(padapter, pLed); + RT_TRACE(_module_rtl8712_led_c_,_drv_info_,( "Blinktimes (%d): turn on\n", pLed->BlinkTimes)); + } + else + { + SwLedOff(padapter, pLed); + RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("Blinktimes (%d): turn off\n", pLed->BlinkTimes)); + } + + + if(pHalData->EEPROMCustomerID == RT_CID_DEFAULT) + { + if(check_fwstate(pmlmepriv, _FW_LINKED)== _TRUE) + { + if(!pLed1->bSWLedCtrl) + { + SwLedOn(padapter, pLed1); + pLed1->bSWLedCtrl = _TRUE; + } + else if(!pLed1->bLedOn) + SwLedOn(padapter, pLed1); + RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("Blinktimes (): turn on pLed1\n")); + } + else + { + if(!pLed1->bSWLedCtrl) + { + SwLedOff(padapter, pLed1); + pLed1->bSWLedCtrl = _TRUE; + } + else if(pLed1->bLedOn) + SwLedOff(padapter, pLed1); + RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("Blinktimes (): turn off pLed1\n")); + } + } + + + if( padapter->pwrctrlpriv.rf_pwrstate != rf_on ) + { + SwLedOff(padapter, pLed); + ResetLedStatus(pLed); + return; + } + + + switch(pLed->CurrLedState) + { + case LED_BLINK_SLOWLY: + if( pLed->bLedOn ) + pLed->BlinkingLedState = RTW_LED_OFF; + else + pLed->BlinkingLedState = RTW_LED_ON; + _set_timer(&(pLed->BlinkTimer), LED_BLINK_NO_LINK_INTERVAL_ALPHA); + break; + + case LED_BLINK_NORMAL: + if( pLed->bLedOn ) + pLed->BlinkingLedState = RTW_LED_OFF; + else + pLed->BlinkingLedState = RTW_LED_ON; + _set_timer(&(pLed->BlinkTimer), LED_BLINK_LINK_INTERVAL_ALPHA); + break; + + case LED_SCAN_BLINK: + pLed->BlinkTimes--; + if( pLed->BlinkTimes == 0 ) + { + bStopBlinking = _TRUE; + } + + if(bStopBlinking) + { + if(check_fwstate(pmlmepriv, _FW_LINKED)== _TRUE) + { + pLed->bLedLinkBlinkInProgress = _TRUE; + pLed->CurrLedState = LED_BLINK_NORMAL; + if( pLed->bLedOn ) + pLed->BlinkingLedState = RTW_LED_OFF; + else + pLed->BlinkingLedState = RTW_LED_ON; + _set_timer(&(pLed->BlinkTimer), LED_BLINK_LINK_INTERVAL_ALPHA); + RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("CurrLedState %d\n", pLed->CurrLedState)); + + } + else if(check_fwstate(pmlmepriv, _FW_LINKED)== _FALSE) + { + pLed->bLedNoLinkBlinkInProgress = _TRUE; + pLed->CurrLedState = LED_BLINK_SLOWLY; + if( pLed->bLedOn ) + pLed->BlinkingLedState = RTW_LED_OFF; + else + pLed->BlinkingLedState = RTW_LED_ON; + _set_timer(&(pLed->BlinkTimer), LED_BLINK_NO_LINK_INTERVAL_ALPHA); + RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("CurrLedState %d\n", pLed->CurrLedState)); + } + pLed->bLedScanBlinkInProgress = _FALSE; + } + else + { + if( pLed->bLedOn ) + pLed->BlinkingLedState = RTW_LED_OFF; + else + pLed->BlinkingLedState = RTW_LED_ON; + _set_timer(&(pLed->BlinkTimer), LED_BLINK_SCAN_INTERVAL_ALPHA); + } + break; + + case LED_TXRX_BLINK: + pLed->BlinkTimes--; + if( pLed->BlinkTimes == 0 ) + { + bStopBlinking = _TRUE; + } + if(bStopBlinking) + { + if(check_fwstate(pmlmepriv, _FW_LINKED)== _TRUE) + { + pLed->bLedLinkBlinkInProgress = _TRUE; + pLed->CurrLedState = LED_BLINK_NORMAL; + if( pLed->bLedOn ) + pLed->BlinkingLedState = RTW_LED_OFF; + else + pLed->BlinkingLedState = RTW_LED_ON; + _set_timer(&(pLed->BlinkTimer), LED_BLINK_LINK_INTERVAL_ALPHA); + RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("CurrLedState %d\n", pLed->CurrLedState)); + } + else if(check_fwstate(pmlmepriv, _FW_LINKED)== _FALSE) + { + pLed->bLedNoLinkBlinkInProgress = _TRUE; + pLed->CurrLedState = LED_BLINK_SLOWLY; + if( pLed->bLedOn ) + pLed->BlinkingLedState = RTW_LED_OFF; + else + pLed->BlinkingLedState = RTW_LED_ON; + _set_timer(&(pLed->BlinkTimer), LED_BLINK_NO_LINK_INTERVAL_ALPHA); + RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("CurrLedState %d\n", pLed->CurrLedState)); + } + pLed->BlinkTimes = 0; + pLed->bLedBlinkInProgress = _FALSE; + } + else + { + if( pLed->bLedOn ) + pLed->BlinkingLedState = RTW_LED_OFF; + else + pLed->BlinkingLedState = RTW_LED_ON; + _set_timer(&(pLed->BlinkTimer), LED_BLINK_FASTER_INTERVAL_ALPHA); + } + break; + + case LED_BLINK_WPS: + if( pLed->bLedOn ) + pLed->BlinkingLedState = RTW_LED_OFF; + else + pLed->BlinkingLedState = RTW_LED_ON; + _set_timer(&(pLed->BlinkTimer), LED_BLINK_SCAN_INTERVAL_ALPHA); + break; + + case LED_BLINK_WPS_STOP: //WPS success + if(pLed->BlinkingLedState == RTW_LED_ON) + bStopBlinking = _FALSE; + else + bStopBlinking = _TRUE; + + if(bStopBlinking) + { + pLed->bLedLinkBlinkInProgress = _TRUE; + pLed->CurrLedState = LED_BLINK_NORMAL; + if( pLed->bLedOn ) + pLed->BlinkingLedState = RTW_LED_OFF; + else + pLed->BlinkingLedState = RTW_LED_ON; + _set_timer(&(pLed->BlinkTimer), LED_BLINK_LINK_INTERVAL_ALPHA); + RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("CurrLedState %d\n", pLed->CurrLedState)); + + pLed->bLedWPSBlinkInProgress = _FALSE; + } + else + { + pLed->BlinkingLedState = RTW_LED_OFF; + _set_timer(&(pLed->BlinkTimer), LED_BLINK_WPS_SUCESS_INTERVAL_ALPHA); + } + break; + + default: + break; + } + +} + +static void +SwLedBlink2( + PLED_871x pLed + ) +{ + _adapter *padapter = pLed->padapter; + struct mlme_priv *pmlmepriv = &(padapter->mlmepriv); + u8 bStopBlinking = _FALSE; + + // Change LED according to BlinkingLedState specified. + if( pLed->BlinkingLedState == RTW_LED_ON) + { + SwLedOn(padapter, pLed); + RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("Blinktimes (%d): turn on\n", pLed->BlinkTimes)); + } + else + { + SwLedOff(padapter, pLed); + RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("Blinktimes (%d): turn off\n", pLed->BlinkTimes)); + } + + switch(pLed->CurrLedState) + { + case LED_SCAN_BLINK: + pLed->BlinkTimes--; + if( pLed->BlinkTimes == 0 ) + { + bStopBlinking = _TRUE; + } + + if(bStopBlinking) + { + if( padapter->pwrctrlpriv.rf_pwrstate != rf_on ) + { + SwLedOff(padapter, pLed); + } + else if(check_fwstate(pmlmepriv, _FW_LINKED)== _TRUE) + { + pLed->CurrLedState = RTW_LED_ON; + pLed->BlinkingLedState = RTW_LED_ON; + SwLedOn(padapter, pLed); + RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("stop scan blink CurrLedState %d\n", pLed->CurrLedState)); + + } + else if(check_fwstate(pmlmepriv, _FW_LINKED)== _FALSE) + { + pLed->CurrLedState = RTW_LED_OFF; + pLed->BlinkingLedState = RTW_LED_OFF; + SwLedOff(padapter, pLed); + RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("stop scan blink CurrLedState %d\n", pLed->CurrLedState)); + } + pLed->bLedScanBlinkInProgress = _FALSE; + } + else + { + if( padapter->pwrctrlpriv.rf_pwrstate != rf_on ) + { + SwLedOff(padapter, pLed); + } + else + { + if( pLed->bLedOn ) + pLed->BlinkingLedState = RTW_LED_OFF; + else + pLed->BlinkingLedState = RTW_LED_ON; + _set_timer(&(pLed->BlinkTimer), LED_BLINK_SCAN_INTERVAL_ALPHA); + } + } + break; + + case LED_TXRX_BLINK: + pLed->BlinkTimes--; + if( pLed->BlinkTimes == 0 ) + { + bStopBlinking = _TRUE; + } + if(bStopBlinking) + { + if( padapter->pwrctrlpriv.rf_pwrstate != rf_on ) + { + SwLedOff(padapter, pLed); + } + else if(check_fwstate(pmlmepriv, _FW_LINKED)== _TRUE) + { + pLed->CurrLedState = RTW_LED_ON; + pLed->BlinkingLedState = RTW_LED_ON; + SwLedOn(padapter, pLed); + RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("stop CurrLedState %d\n", pLed->CurrLedState)); + + } + else if(check_fwstate(pmlmepriv, _FW_LINKED)== _FALSE) + { + pLed->CurrLedState = RTW_LED_OFF; + pLed->BlinkingLedState = RTW_LED_OFF; + SwLedOff(padapter, pLed); + RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("stop CurrLedState %d\n", pLed->CurrLedState)); + } + pLed->bLedBlinkInProgress = _FALSE; + } + else + { + if( padapter->pwrctrlpriv.rf_pwrstate != rf_on ) + { + SwLedOff(padapter, pLed); + } + else + { + if( pLed->bLedOn ) + pLed->BlinkingLedState = RTW_LED_OFF; + else + pLed->BlinkingLedState = RTW_LED_ON; + _set_timer(&(pLed->BlinkTimer), LED_BLINK_FASTER_INTERVAL_ALPHA); + } + } + break; + + default: + break; + } + +} + +static void +SwLedBlink3( + PLED_871x pLed + ) +{ + _adapter *padapter = pLed->padapter; + struct mlme_priv *pmlmepriv = &(padapter->mlmepriv); + u8 bStopBlinking = _FALSE; + + // Change LED according to BlinkingLedState specified. + if( pLed->BlinkingLedState == RTW_LED_ON ) + { + SwLedOn(padapter, pLed); + RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("Blinktimes (%d): turn on\n", pLed->BlinkTimes)); + } + else + { + if(pLed->CurrLedState != LED_BLINK_WPS_STOP) + SwLedOff(padapter, pLed); + RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("Blinktimes (%d): turn off\n", pLed->BlinkTimes)); + } + + switch(pLed->CurrLedState) + { + case LED_SCAN_BLINK: + pLed->BlinkTimes--; + if( pLed->BlinkTimes == 0 ) + { + bStopBlinking = _TRUE; + } + + if(bStopBlinking) + { + if( padapter->pwrctrlpriv.rf_pwrstate != rf_on ) + { + SwLedOff(padapter, pLed); + } + else if(check_fwstate(pmlmepriv, _FW_LINKED)== _TRUE) + { + pLed->CurrLedState = RTW_LED_ON; + pLed->BlinkingLedState = RTW_LED_ON; + if( !pLed->bLedOn ) + SwLedOn(padapter, pLed); + + RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("CurrLedState %d\n", pLed->CurrLedState)); + } + else if(check_fwstate(pmlmepriv, _FW_LINKED)== _FALSE) + { + pLed->CurrLedState = RTW_LED_OFF; + pLed->BlinkingLedState = RTW_LED_OFF; + if( pLed->bLedOn ) + SwLedOff(padapter, pLed); + + RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("CurrLedState %d\n", pLed->CurrLedState)); + } + pLed->bLedScanBlinkInProgress = _FALSE; + } + else + { + if( padapter->pwrctrlpriv.rf_pwrstate != rf_on ) + { + SwLedOff(padapter, pLed); + } + else + { + if( pLed->bLedOn ) + pLed->BlinkingLedState = RTW_LED_OFF; + else + pLed->BlinkingLedState = RTW_LED_ON; + _set_timer(&(pLed->BlinkTimer), LED_BLINK_SCAN_INTERVAL_ALPHA); + } + } + break; + + case LED_TXRX_BLINK: + pLed->BlinkTimes--; + if( pLed->BlinkTimes == 0 ) + { + bStopBlinking = _TRUE; + } + if(bStopBlinking) + { + if( padapter->pwrctrlpriv.rf_pwrstate != rf_on ) + { + SwLedOff(padapter, pLed); + } + else if(check_fwstate(pmlmepriv, _FW_LINKED)== _TRUE) + { + pLed->CurrLedState = RTW_LED_ON; + pLed->BlinkingLedState = RTW_LED_ON; + + if( !pLed->bLedOn ) + SwLedOn(padapter, pLed); + + RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("CurrLedState %d\n", pLed->CurrLedState)); + } + else if(check_fwstate(pmlmepriv, _FW_LINKED)== _FALSE) + { + pLed->CurrLedState = RTW_LED_OFF; + pLed->BlinkingLedState = RTW_LED_OFF; + + if( pLed->bLedOn ) + SwLedOff(padapter, pLed); + + + RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("CurrLedState %d\n", pLed->CurrLedState)); + } + pLed->bLedBlinkInProgress = _FALSE; + } + else + { + if( padapter->pwrctrlpriv.rf_pwrstate != rf_on ) + { + SwLedOff(padapter, pLed); + } + else + { + if( pLed->bLedOn ) + pLed->BlinkingLedState = RTW_LED_OFF; + else + pLed->BlinkingLedState = RTW_LED_ON; + _set_timer(&(pLed->BlinkTimer), LED_BLINK_FASTER_INTERVAL_ALPHA); + } + } + break; + + case LED_BLINK_WPS: + if( pLed->bLedOn ) + pLed->BlinkingLedState = RTW_LED_OFF; + else + pLed->BlinkingLedState = RTW_LED_ON; + _set_timer(&(pLed->BlinkTimer), LED_BLINK_SCAN_INTERVAL_ALPHA); + break; + + case LED_BLINK_WPS_STOP: //WPS success + if(pLed->BlinkingLedState == RTW_LED_ON) + { + pLed->BlinkingLedState = RTW_LED_OFF; + _set_timer(&(pLed->BlinkTimer), LED_BLINK_WPS_SUCESS_INTERVAL_ALPHA); + bStopBlinking = _FALSE; + } + else + { + bStopBlinking = _TRUE; + } + + if(bStopBlinking) + { + if( padapter->pwrctrlpriv.rf_pwrstate != rf_on ) + { + SwLedOff(padapter, pLed); + } + else + { + pLed->CurrLedState = RTW_LED_ON; + pLed->BlinkingLedState = RTW_LED_ON; + SwLedOn(padapter, pLed); + RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("CurrLedState %d\n", pLed->CurrLedState)); + } + pLed->bLedWPSBlinkInProgress = _FALSE; + } + break; + + + default: + break; + } + +} + + +static void +SwLedBlink4( + PLED_871x pLed + ) +{ + _adapter *padapter = pLed->padapter; + struct led_priv *ledpriv = &(padapter->ledpriv); + struct mlme_priv *pmlmepriv = &(padapter->mlmepriv); + PLED_871x pLed1 = &(ledpriv->SwLed1); + u8 bStopBlinking = _FALSE; + + // Change LED according to BlinkingLedState specified. + if( pLed->BlinkingLedState == RTW_LED_ON ) + { + SwLedOn(padapter, pLed); + RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("Blinktimes (%d): turn on\n", pLed->BlinkTimes)); + } + else + { + SwLedOff(padapter, pLed); + RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("Blinktimes (%d): turn off\n", pLed->BlinkTimes)); + } + + if(!pLed1->bLedWPSBlinkInProgress && pLed1->BlinkingLedState == LED_UNKNOWN) + { + pLed1->BlinkingLedState = RTW_LED_OFF; + pLed1->CurrLedState = RTW_LED_OFF; + SwLedOff(padapter, pLed1); + } + + switch(pLed->CurrLedState) + { + case LED_BLINK_SLOWLY: + if( pLed->bLedOn ) + pLed->BlinkingLedState = RTW_LED_OFF; + else + pLed->BlinkingLedState = RTW_LED_ON; + _set_timer(&(pLed->BlinkTimer), LED_BLINK_NO_LINK_INTERVAL_ALPHA); + break; + + case LED_BLINK_StartToBlink: + if( pLed->bLedOn ) + { + pLed->BlinkingLedState = RTW_LED_OFF; + _set_timer(&(pLed->BlinkTimer), LED_BLINK_SLOWLY_INTERVAL); + } + else + { + pLed->BlinkingLedState = RTW_LED_ON; + _set_timer(&(pLed->BlinkTimer), LED_BLINK_NORMAL_INTERVAL); + } + break; + + case LED_SCAN_BLINK: + pLed->BlinkTimes--; + if( pLed->BlinkTimes == 0 ) + { + bStopBlinking = _FALSE; + } + + if(bStopBlinking) + { + if( padapter->pwrctrlpriv.rf_pwrstate != rf_on && padapter->pwrctrlpriv.rfoff_reason > RF_CHANGE_BY_PS) + { + SwLedOff(padapter, pLed); + } + else + { + pLed->bLedNoLinkBlinkInProgress = _FALSE; + pLed->CurrLedState = LED_BLINK_SLOWLY; + if( pLed->bLedOn ) + pLed->BlinkingLedState = RTW_LED_OFF; + else + pLed->BlinkingLedState = RTW_LED_ON; + _set_timer(&(pLed->BlinkTimer), LED_BLINK_NO_LINK_INTERVAL_ALPHA); + } + pLed->bLedScanBlinkInProgress = _FALSE; + } + else + { + if( padapter->pwrctrlpriv.rf_pwrstate != rf_on && padapter->pwrctrlpriv.rfoff_reason > RF_CHANGE_BY_PS) + { + SwLedOff(padapter, pLed); + } + else + { + if( pLed->bLedOn ) + pLed->BlinkingLedState = RTW_LED_OFF; + else + pLed->BlinkingLedState = RTW_LED_ON; + _set_timer(&(pLed->BlinkTimer), LED_BLINK_SCAN_INTERVAL_ALPHA); + } + } + break; + + case LED_TXRX_BLINK: + pLed->BlinkTimes--; + if( pLed->BlinkTimes == 0 ) + { + bStopBlinking = _TRUE; + } + if(bStopBlinking) + { + if( padapter->pwrctrlpriv.rf_pwrstate != rf_on && padapter->pwrctrlpriv.rfoff_reason > RF_CHANGE_BY_PS) + { + SwLedOff(padapter, pLed); + } + else + { + pLed->bLedNoLinkBlinkInProgress = _TRUE; + pLed->CurrLedState = LED_BLINK_SLOWLY; + if( pLed->bLedOn ) + pLed->BlinkingLedState = RTW_LED_OFF; + else + pLed->BlinkingLedState = RTW_LED_ON; + _set_timer(&(pLed->BlinkTimer), LED_BLINK_NO_LINK_INTERVAL_ALPHA); + } + pLed->bLedBlinkInProgress = _FALSE; + } + else + { + if( padapter->pwrctrlpriv.rf_pwrstate != rf_on && padapter->pwrctrlpriv.rfoff_reason > RF_CHANGE_BY_PS) + { + SwLedOff(padapter, pLed); + } + else + { + if( pLed->bLedOn ) + pLed->BlinkingLedState = RTW_LED_OFF; + else + pLed->BlinkingLedState = RTW_LED_ON; + _set_timer(&(pLed->BlinkTimer), LED_BLINK_FASTER_INTERVAL_ALPHA); + } + } + break; + + case LED_BLINK_WPS: + if( pLed->bLedOn ) + { + pLed->BlinkingLedState = RTW_LED_OFF; + _set_timer(&(pLed->BlinkTimer), LED_BLINK_SLOWLY_INTERVAL); + } + else + { + pLed->BlinkingLedState = RTW_LED_ON; + _set_timer(&(pLed->BlinkTimer), LED_BLINK_NORMAL_INTERVAL); + } + break; + + case LED_BLINK_WPS_STOP: //WPS authentication fail + if( pLed->bLedOn ) + pLed->BlinkingLedState = RTW_LED_OFF; + else + pLed->BlinkingLedState = RTW_LED_ON; + + _set_timer(&(pLed->BlinkTimer), LED_BLINK_NORMAL_INTERVAL); + break; + + case LED_BLINK_WPS_STOP_OVERLAP: //WPS session overlap + pLed->BlinkTimes--; + if(pLed->BlinkTimes == 0) + { + if(pLed->bLedOn) + { + pLed->BlinkTimes = 1; + } + else + { + bStopBlinking = _TRUE; + } + } + + if(bStopBlinking) + { + pLed->BlinkTimes = 10; + pLed->BlinkingLedState = RTW_LED_ON; + _set_timer(&(pLed->BlinkTimer), LED_BLINK_LINK_INTERVAL_ALPHA); + } + else + { + if( pLed->bLedOn ) + pLed->BlinkingLedState = RTW_LED_OFF; + else + pLed->BlinkingLedState = RTW_LED_ON; + + _set_timer(&(pLed->BlinkTimer), LED_BLINK_NORMAL_INTERVAL); + } + break; + + + default: + break; + } + + RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("SwLedBlink4 CurrLedState %d\n", pLed->CurrLedState)); + + +} + +static void +SwLedBlink5( + PLED_871x pLed + ) +{ + _adapter *padapter = pLed->padapter; + struct mlme_priv *pmlmepriv = &(padapter->mlmepriv); + u8 bStopBlinking = _FALSE; + + // Change LED according to BlinkingLedState specified. + if( pLed->BlinkingLedState == RTW_LED_ON ) + { + SwLedOn(padapter, pLed); + RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("Blinktimes (%d): turn on\n", pLed->BlinkTimes)); + } + else + { + SwLedOff(padapter, pLed); + RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("Blinktimes (%d): turn off\n", pLed->BlinkTimes)); + } + + switch(pLed->CurrLedState) + { + case LED_SCAN_BLINK: + pLed->BlinkTimes--; + if( pLed->BlinkTimes == 0 ) + { + bStopBlinking = _TRUE; + } + + if(bStopBlinking) + { + if( padapter->pwrctrlpriv.rf_pwrstate != rf_on && padapter->pwrctrlpriv.rfoff_reason > RF_CHANGE_BY_PS) + { + pLed->CurrLedState = RTW_LED_OFF; + pLed->BlinkingLedState = RTW_LED_OFF; + if(pLed->bLedOn) + SwLedOff(padapter, pLed); + } + else + { pLed->CurrLedState = RTW_LED_ON; + pLed->BlinkingLedState = RTW_LED_ON; + if(!pLed->bLedOn) + _set_timer(&(pLed->BlinkTimer), LED_BLINK_FASTER_INTERVAL_ALPHA); + } + + pLed->bLedScanBlinkInProgress = _FALSE; + } + else + { + if( padapter->pwrctrlpriv.rf_pwrstate != rf_on && padapter->pwrctrlpriv.rfoff_reason > RF_CHANGE_BY_PS) + { + SwLedOff(padapter, pLed); + } + else + { + if( pLed->bLedOn ) + pLed->BlinkingLedState = RTW_LED_OFF; + else + pLed->BlinkingLedState = RTW_LED_ON; + _set_timer(&(pLed->BlinkTimer), LED_BLINK_SCAN_INTERVAL_ALPHA); + } + } + break; + + + case LED_TXRX_BLINK: + pLed->BlinkTimes--; + if( pLed->BlinkTimes == 0 ) + { + bStopBlinking = _TRUE; + } + + if(bStopBlinking) + { + if( padapter->pwrctrlpriv.rf_pwrstate != rf_on && padapter->pwrctrlpriv.rfoff_reason > RF_CHANGE_BY_PS) + { + pLed->CurrLedState = RTW_LED_OFF; + pLed->BlinkingLedState = RTW_LED_OFF; + if(pLed->bLedOn) + SwLedOff(padapter, pLed); + } + else + { + pLed->CurrLedState = RTW_LED_ON; + pLed->BlinkingLedState = RTW_LED_ON; + if(!pLed->bLedOn) + _set_timer(&(pLed->BlinkTimer), LED_BLINK_FASTER_INTERVAL_ALPHA); + } + + pLed->bLedBlinkInProgress = _FALSE; + } + else + { + if( padapter->pwrctrlpriv.rf_pwrstate != rf_on && padapter->pwrctrlpriv.rfoff_reason > RF_CHANGE_BY_PS) + { + SwLedOff(padapter, pLed); + } + else + { + if( pLed->bLedOn ) + pLed->BlinkingLedState = RTW_LED_OFF; + else + pLed->BlinkingLedState = RTW_LED_ON; + _set_timer(&(pLed->BlinkTimer), LED_BLINK_FASTER_INTERVAL_ALPHA); + } + } + break; + + default: + break; + } + + RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("SwLedBlink5 CurrLedState %d\n", pLed->CurrLedState)); + + +} + +static void +SwLedBlink6( + PLED_871x pLed + ) +{ + _adapter *padapter = pLed->padapter; + struct mlme_priv *pmlmepriv = &(padapter->mlmepriv); + u8 bStopBlinking = _FALSE; + + // Change LED according to BlinkingLedState specified. + if( pLed->BlinkingLedState == RTW_LED_ON ) + { + SwLedOn(padapter, pLed); + RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("Blinktimes (%d): turn on\n", pLed->BlinkTimes)); + } + else + { + SwLedOff(padapter, pLed); + RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("Blinktimes (%d): turn off\n", pLed->BlinkTimes)); + } + + RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("<==== blink6\n")); +} + + +// +// Description: +// Callback function of LED BlinkTimer, +// it just schedules to corresponding BlinkWorkItem. +// +static void +BlinkTimerCallback( + unsigned long data + ) +{ + PLED_871x pLed = (PLED_871x)data; + _adapter *padapter = pLed->padapter; + + //DBG_871X("%s\n", __FUNCTION__); + + if( (padapter->bSurpriseRemoved == _TRUE) || ( padapter->bDriverStopped == _TRUE)) + { + //DBG_871X("%s bSurpriseRemoved:%d, bDriverStopped:%d\n", __FUNCTION__, padapter->bSurpriseRemoved, padapter->bDriverStopped); + return; + } + +#ifdef CONFIG_LED_HANDLED_BY_CMD_THREAD + rtw_led_blink_cmd(padapter, pLed); +#else + _set_workitem(&(pLed->BlinkWorkItem)); +#endif +} + +// +// Description: +// Handler function of LED Blinking. +// We dispatch acture LED blink action according to LedStrategy. +// +void BlinkHandler(PLED_871x pLed) +{ + struct led_priv *ledpriv = &(pLed->padapter->ledpriv); + _adapter *padapter = pLed->padapter; + + //DBG_871X("%s (%s:%d)\n",__FUNCTION__, current->comm, current->pid); + + if( (padapter->bSurpriseRemoved == _TRUE) || ( padapter->bDriverStopped == _TRUE)) + { + //DBG_871X("%s bSurpriseRemoved:%d, bDriverStopped:%d\n", __FUNCTION__, padapter->bSurpriseRemoved, padapter->bDriverStopped); + return; + } + + switch(ledpriv->LedStrategy) + { + case SW_LED_MODE0: + SwLedBlink(pLed); + break; + + case SW_LED_MODE1: + SwLedBlink1(pLed); + break; + + case SW_LED_MODE2: + SwLedBlink2(pLed); + break; + + case SW_LED_MODE3: + SwLedBlink3(pLed); + break; + + case SW_LED_MODE4: + SwLedBlink4(pLed); + break; + + case SW_LED_MODE5: + SwLedBlink5(pLed); + break; + + case SW_LED_MODE6: + SwLedBlink6(pLed); + break; + + default: + //RT_TRACE(COMP_LED, DBG_LOUD, ("BlinkWorkItemCallback 0x%x \n", pHalData->LedStrategy)); + //SwLedBlink(pLed); + break; + } +} + +// +// Description: +// Callback function of LED BlinkWorkItem. +// We dispatch acture LED blink action according to LedStrategy. +// +static void BlinkWorkItemCallback(struct work_struct *work) +{ + PLED_871x pLed = container_of(work, LED_871x, BlinkWorkItem); + BlinkHandler(pLed); +} + + + +//================================================================================ +// Default LED behavior. +//================================================================================ + +// +// Description: +// Implement each led action for SW_LED_MODE0. +// This is default strategy. +// +static void +SwLedControlMode0( + _adapter *padapter, + LED_CTL_MODE LedAction +) +{ + struct led_priv *ledpriv = &(padapter->ledpriv); + PLED_871x pLed = &(ledpriv->SwLed1); + + // Decide led state + switch(LedAction) + { + case LED_CTL_TX: + case LED_CTL_RX: + if( pLed->bLedBlinkInProgress == _FALSE ) + { + pLed->bLedBlinkInProgress = _TRUE; + + pLed->CurrLedState = LED_BLINK_NORMAL; + pLed->BlinkTimes = 2; + + if( pLed->bLedOn ) + pLed->BlinkingLedState = RTW_LED_OFF; + else + pLed->BlinkingLedState = RTW_LED_ON; + _set_timer(&(pLed->BlinkTimer), LED_BLINK_NORMAL_INTERVAL); + } + break; + + case LED_CTL_START_TO_LINK: + if( pLed->bLedBlinkInProgress == _FALSE ) + { + pLed->bLedBlinkInProgress = _TRUE; + + pLed->CurrLedState = LED_BLINK_StartToBlink; + pLed->BlinkTimes = 24; + + if( pLed->bLedOn ) + pLed->BlinkingLedState = RTW_LED_OFF; + else + pLed->BlinkingLedState = RTW_LED_ON; + _set_timer(&(pLed->BlinkTimer), LED_BLINK_SLOWLY_INTERVAL); + } + else + { + pLed->CurrLedState = LED_BLINK_StartToBlink; + } + break; + + case LED_CTL_LINK: + pLed->CurrLedState = RTW_LED_ON; + if( pLed->bLedBlinkInProgress == _FALSE ) + { + SwLedOn(padapter, pLed); + } + break; + + case LED_CTL_NO_LINK: + pLed->CurrLedState = RTW_LED_OFF; + if( pLed->bLedBlinkInProgress == _FALSE ) + { + SwLedOff(padapter, pLed); + } + break; + + case LED_CTL_POWER_OFF: + pLed->CurrLedState = RTW_LED_OFF; + if(pLed->bLedBlinkInProgress) + { + _cancel_timer_ex(&(pLed->BlinkTimer)); + pLed->bLedBlinkInProgress = _FALSE; + } + SwLedOff(padapter, pLed); + break; + + case LED_CTL_START_WPS: + if( pLed->bLedBlinkInProgress == _FALSE || pLed->CurrLedState == RTW_LED_ON) + { + pLed->bLedBlinkInProgress = _TRUE; + + pLed->CurrLedState = LED_BLINK_WPS; + pLed->BlinkTimes = 20; + + if( pLed->bLedOn ) + { + pLed->BlinkingLedState = RTW_LED_OFF; + _set_timer(&(pLed->BlinkTimer), LED_BLINK_LONG_INTERVAL); + } + else + { + pLed->BlinkingLedState = RTW_LED_ON; + _set_timer(&(pLed->BlinkTimer), LED_BLINK_LONG_INTERVAL); + } + } + break; + + case LED_CTL_STOP_WPS: + if(pLed->bLedBlinkInProgress) + { + pLed->CurrLedState = RTW_LED_OFF; + _cancel_timer_ex(&(pLed->BlinkTimer)); + pLed->bLedBlinkInProgress = _FALSE; + } + break; + + + default: + break; + } + + RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("Led %d\n", pLed->CurrLedState)); + +} + + //ALPHA, added by chiyoko, 20090106 +static void +SwLedControlMode1( + _adapter *padapter, + LED_CTL_MODE LedAction +) +{ + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(padapter); + struct led_priv *ledpriv = &(padapter->ledpriv); + PLED_871x pLed = &(ledpriv->SwLed0); + struct mlme_priv *pmlmepriv = &(padapter->mlmepriv); + + if(pHalData->EEPROMCustomerID == RT_CID_819x_CAMEO) + pLed = &(ledpriv->SwLed1); + + switch(LedAction) + { + case LED_CTL_POWER_ON: + case LED_CTL_START_TO_LINK: + case LED_CTL_NO_LINK: + if( pLed->bLedNoLinkBlinkInProgress == _FALSE ) + { + if(pLed->CurrLedState == LED_SCAN_BLINK || IS_LED_WPS_BLINKING(pLed)) + { + return; + } + if( pLed->bLedLinkBlinkInProgress == _TRUE ) + { + _cancel_timer_ex(&(pLed->BlinkTimer)); + pLed->bLedLinkBlinkInProgress = _FALSE; + } + if(pLed->bLedBlinkInProgress ==_TRUE) + { + _cancel_timer_ex(&(pLed->BlinkTimer)); + pLed->bLedBlinkInProgress = _FALSE; + } + + pLed->bLedNoLinkBlinkInProgress = _TRUE; + pLed->CurrLedState = LED_BLINK_SLOWLY; + if( pLed->bLedOn ) + pLed->BlinkingLedState = RTW_LED_OFF; + else + pLed->BlinkingLedState = RTW_LED_ON; + _set_timer(&(pLed->BlinkTimer), LED_BLINK_NO_LINK_INTERVAL_ALPHA); + } + break; + + case LED_CTL_LINK: + if( pLed->bLedLinkBlinkInProgress == _FALSE ) + { + if(pLed->CurrLedState == LED_SCAN_BLINK || IS_LED_WPS_BLINKING(pLed)) + { + return; + } + if(pLed->bLedNoLinkBlinkInProgress == _TRUE) + { + _cancel_timer_ex(&(pLed->BlinkTimer)); + pLed->bLedNoLinkBlinkInProgress = _FALSE; + } + if(pLed->bLedBlinkInProgress ==_TRUE) + { + _cancel_timer_ex(&(pLed->BlinkTimer)); + pLed->bLedBlinkInProgress = _FALSE; + } + pLed->bLedLinkBlinkInProgress = _TRUE; + pLed->CurrLedState = LED_BLINK_NORMAL; + if( pLed->bLedOn ) + pLed->BlinkingLedState = RTW_LED_OFF; + else + pLed->BlinkingLedState = RTW_LED_ON; + _set_timer(&(pLed->BlinkTimer), LED_BLINK_LINK_INTERVAL_ALPHA); + } + break; + + case LED_CTL_SITE_SURVEY: + if((pmlmepriv->LinkDetectInfo.bBusyTraffic) && (check_fwstate(pmlmepriv, _FW_LINKED)== _TRUE)) + ; + else if(pLed->bLedScanBlinkInProgress ==_FALSE) + { + if(IS_LED_WPS_BLINKING(pLed)) + return; + + if(pLed->bLedNoLinkBlinkInProgress == _TRUE) + { + _cancel_timer_ex(&(pLed->BlinkTimer)); + pLed->bLedNoLinkBlinkInProgress = _FALSE; + } + if( pLed->bLedLinkBlinkInProgress == _TRUE ) + { + _cancel_timer_ex(&(pLed->BlinkTimer)); + pLed->bLedLinkBlinkInProgress = _FALSE; + } + if(pLed->bLedBlinkInProgress ==_TRUE) + { + _cancel_timer_ex(&(pLed->BlinkTimer)); + pLed->bLedBlinkInProgress = _FALSE; + } + pLed->bLedScanBlinkInProgress = _TRUE; + pLed->CurrLedState = LED_SCAN_BLINK; + pLed->BlinkTimes = 24; + if( pLed->bLedOn ) + pLed->BlinkingLedState = RTW_LED_OFF; + else + pLed->BlinkingLedState = RTW_LED_ON; + _set_timer(&(pLed->BlinkTimer), LED_BLINK_SCAN_INTERVAL_ALPHA); + } + break; + + case LED_CTL_TX: + case LED_CTL_RX: + if(pLed->bLedBlinkInProgress ==_FALSE) + { + if(pLed->CurrLedState == LED_SCAN_BLINK || IS_LED_WPS_BLINKING(pLed)) + { + return; + } + if(pLed->bLedNoLinkBlinkInProgress == _TRUE) + { + _cancel_timer_ex(&(pLed->BlinkTimer)); + pLed->bLedNoLinkBlinkInProgress = _FALSE; + } + if( pLed->bLedLinkBlinkInProgress == _TRUE ) + { + _cancel_timer_ex(&(pLed->BlinkTimer)); + pLed->bLedLinkBlinkInProgress = _FALSE; + } + pLed->bLedBlinkInProgress = _TRUE; + pLed->CurrLedState = LED_TXRX_BLINK; + pLed->BlinkTimes = 2; + if( pLed->bLedOn ) + pLed->BlinkingLedState = RTW_LED_OFF; + else + pLed->BlinkingLedState = RTW_LED_ON; + _set_timer(&(pLed->BlinkTimer), LED_BLINK_FASTER_INTERVAL_ALPHA); + } + break; + + case LED_CTL_START_WPS: //wait until xinpin finish + case LED_CTL_START_WPS_BOTTON: + if(pLed->bLedWPSBlinkInProgress ==_FALSE) + { + if(pLed->bLedNoLinkBlinkInProgress == _TRUE) + { + _cancel_timer_ex(&(pLed->BlinkTimer)); + pLed->bLedNoLinkBlinkInProgress = _FALSE; + } + if( pLed->bLedLinkBlinkInProgress == _TRUE ) + { + _cancel_timer_ex(&(pLed->BlinkTimer)); + pLed->bLedLinkBlinkInProgress = _FALSE; + } + if(pLed->bLedBlinkInProgress ==_TRUE) + { + _cancel_timer_ex(&(pLed->BlinkTimer)); + pLed->bLedBlinkInProgress = _FALSE; + } + if(pLed->bLedScanBlinkInProgress ==_TRUE) + { + _cancel_timer_ex(&(pLed->BlinkTimer)); + pLed->bLedScanBlinkInProgress = _FALSE; + } + pLed->bLedWPSBlinkInProgress = _TRUE; + pLed->CurrLedState = LED_BLINK_WPS; + if( pLed->bLedOn ) + pLed->BlinkingLedState = RTW_LED_OFF; + else + pLed->BlinkingLedState = RTW_LED_ON; + _set_timer(&(pLed->BlinkTimer), LED_BLINK_SCAN_INTERVAL_ALPHA); + } + break; + + + case LED_CTL_STOP_WPS: + if(pLed->bLedNoLinkBlinkInProgress == _TRUE) + { + _cancel_timer_ex(&(pLed->BlinkTimer)); + pLed->bLedNoLinkBlinkInProgress = _FALSE; + } + if( pLed->bLedLinkBlinkInProgress == _TRUE ) + { + _cancel_timer_ex(&(pLed->BlinkTimer)); + pLed->bLedLinkBlinkInProgress = _FALSE; + } + if(pLed->bLedBlinkInProgress ==_TRUE) + { + _cancel_timer_ex(&(pLed->BlinkTimer)); + pLed->bLedBlinkInProgress = _FALSE; + } + if(pLed->bLedScanBlinkInProgress ==_TRUE) + { + _cancel_timer_ex(&(pLed->BlinkTimer)); + pLed->bLedScanBlinkInProgress = _FALSE; + } + if(pLed->bLedWPSBlinkInProgress) + { + _cancel_timer_ex(&(pLed->BlinkTimer)); + } + else + { + pLed->bLedWPSBlinkInProgress = _TRUE; + } + + pLed->CurrLedState = LED_BLINK_WPS_STOP; + if(pLed->bLedOn) + { + pLed->BlinkingLedState = RTW_LED_OFF; + _set_timer(&(pLed->BlinkTimer), LED_BLINK_WPS_SUCESS_INTERVAL_ALPHA); + } + else + { + pLed->BlinkingLedState = RTW_LED_ON; + _set_timer(&(pLed->BlinkTimer), 0); + } + break; + + case LED_CTL_STOP_WPS_FAIL: + if(pLed->bLedWPSBlinkInProgress) + { + _cancel_timer_ex(&(pLed->BlinkTimer)); + pLed->bLedWPSBlinkInProgress = _FALSE; + } + + pLed->bLedNoLinkBlinkInProgress = _TRUE; + pLed->CurrLedState = LED_BLINK_SLOWLY; + if( pLed->bLedOn ) + pLed->BlinkingLedState = RTW_LED_OFF; + else + pLed->BlinkingLedState = RTW_LED_ON; + _set_timer(&(pLed->BlinkTimer), LED_BLINK_NO_LINK_INTERVAL_ALPHA); + break; + + case LED_CTL_POWER_OFF: + pLed->CurrLedState = RTW_LED_OFF; + pLed->BlinkingLedState = RTW_LED_OFF; + if( pLed->bLedNoLinkBlinkInProgress) + { + _cancel_timer_ex(&(pLed->BlinkTimer)); + pLed->bLedNoLinkBlinkInProgress = _FALSE; + } + if( pLed->bLedLinkBlinkInProgress) + { + _cancel_timer_ex(&(pLed->BlinkTimer)); + pLed->bLedLinkBlinkInProgress = _FALSE; + } + if( pLed->bLedBlinkInProgress) + { + _cancel_timer_ex(&(pLed->BlinkTimer)); + pLed->bLedBlinkInProgress = _FALSE; + } + if( pLed->bLedWPSBlinkInProgress ) + { + _cancel_timer_ex(&(pLed->BlinkTimer)); + pLed->bLedWPSBlinkInProgress = _FALSE; + } + if( pLed->bLedScanBlinkInProgress) + { + _cancel_timer_ex(&(pLed->BlinkTimer)); + pLed->bLedScanBlinkInProgress = _FALSE; + } + + SwLedOff(padapter, pLed); + break; + + default: + break; + + } + + RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("Led %d\n", pLed->CurrLedState)); +} + + //Arcadyan/Sitecom , added by chiyoko, 20090216 +static void +SwLedControlMode2( + _adapter *padapter, + LED_CTL_MODE LedAction +) +{ + struct led_priv *ledpriv = &(padapter->ledpriv); + struct mlme_priv *pmlmepriv = &padapter->mlmepriv; + PLED_871x pLed = &(ledpriv->SwLed0); + + switch(LedAction) + { + case LED_CTL_SITE_SURVEY: + if(pmlmepriv->LinkDetectInfo.bBusyTraffic) + ; + else if(pLed->bLedScanBlinkInProgress ==_FALSE) + { + if(IS_LED_WPS_BLINKING(pLed)) + return; + + if(pLed->bLedBlinkInProgress ==_TRUE) + { + _cancel_timer_ex(&(pLed->BlinkTimer)); + pLed->bLedBlinkInProgress = _FALSE; + } + pLed->bLedScanBlinkInProgress = _TRUE; + pLed->CurrLedState = LED_SCAN_BLINK; + pLed->BlinkTimes = 24; + if( pLed->bLedOn ) + pLed->BlinkingLedState = RTW_LED_OFF; + else + pLed->BlinkingLedState = RTW_LED_ON; + _set_timer(&(pLed->BlinkTimer), LED_BLINK_SCAN_INTERVAL_ALPHA); + } + break; + + case LED_CTL_TX: + case LED_CTL_RX: + if((pLed->bLedBlinkInProgress ==_FALSE) && (check_fwstate(pmlmepriv, _FW_LINKED)== _TRUE)) + { + if(pLed->CurrLedState == LED_SCAN_BLINK || IS_LED_WPS_BLINKING(pLed)) + { + return; + } + + pLed->bLedBlinkInProgress = _TRUE; + pLed->CurrLedState = LED_TXRX_BLINK; + pLed->BlinkTimes = 2; + if( pLed->bLedOn ) + pLed->BlinkingLedState = RTW_LED_OFF; + else + pLed->BlinkingLedState = RTW_LED_ON; + _set_timer(&(pLed->BlinkTimer), LED_BLINK_FASTER_INTERVAL_ALPHA); + } + break; + + case LED_CTL_LINK: + pLed->CurrLedState = RTW_LED_ON; + pLed->BlinkingLedState = RTW_LED_ON; + if( pLed->bLedBlinkInProgress) + { + _cancel_timer_ex(&(pLed->BlinkTimer)); + pLed->bLedBlinkInProgress = _FALSE; + } + if( pLed->bLedScanBlinkInProgress) + { + _cancel_timer_ex(&(pLed->BlinkTimer)); + pLed->bLedScanBlinkInProgress = _FALSE; + } + + _set_timer(&(pLed->BlinkTimer), 0); + break; + + case LED_CTL_START_WPS: //wait until xinpin finish + case LED_CTL_START_WPS_BOTTON: + if(pLed->bLedWPSBlinkInProgress ==_FALSE) + { + if(pLed->bLedBlinkInProgress ==_TRUE) + { + _cancel_timer_ex(&(pLed->BlinkTimer)); + pLed->bLedBlinkInProgress = _FALSE; + } + if(pLed->bLedScanBlinkInProgress ==_TRUE) + { + _cancel_timer_ex(&(pLed->BlinkTimer)); + pLed->bLedScanBlinkInProgress = _FALSE; + } + pLed->bLedWPSBlinkInProgress = _TRUE; + pLed->CurrLedState = RTW_LED_ON; + pLed->BlinkingLedState = RTW_LED_ON; + _set_timer(&(pLed->BlinkTimer), 0); + } + break; + + case LED_CTL_STOP_WPS: + pLed->bLedWPSBlinkInProgress = _FALSE; + if(padapter->pwrctrlpriv.rf_pwrstate != rf_on) + { + SwLedOff(padapter, pLed); + } + else + { + pLed->CurrLedState = RTW_LED_ON; + pLed->BlinkingLedState = RTW_LED_ON; + _set_timer(&(pLed->BlinkTimer), 0); + RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("CurrLedState %d\n", pLed->CurrLedState)); + } + break; + + case LED_CTL_STOP_WPS_FAIL: + pLed->bLedWPSBlinkInProgress = _FALSE; + if(padapter->pwrctrlpriv.rf_pwrstate != rf_on) + { + SwLedOff(padapter, pLed); + } + else + { + pLed->CurrLedState = RTW_LED_OFF; + pLed->BlinkingLedState = RTW_LED_OFF; + _set_timer(&(pLed->BlinkTimer), 0); + RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("CurrLedState %d\n", pLed->CurrLedState)); + } + break; + + case LED_CTL_START_TO_LINK: + case LED_CTL_NO_LINK: + if(!IS_LED_BLINKING(pLed)) + { + pLed->CurrLedState = RTW_LED_OFF; + pLed->BlinkingLedState = RTW_LED_OFF; + _set_timer(&(pLed->BlinkTimer), 0); + } + break; + + case LED_CTL_POWER_OFF: + pLed->CurrLedState = RTW_LED_OFF; + pLed->BlinkingLedState = RTW_LED_OFF; + if( pLed->bLedBlinkInProgress) + { + _cancel_timer_ex(&(pLed->BlinkTimer)); + pLed->bLedBlinkInProgress = _FALSE; + } + if( pLed->bLedScanBlinkInProgress) + { + _cancel_timer_ex(&(pLed->BlinkTimer)); + pLed->bLedScanBlinkInProgress = _FALSE; + } + if( pLed->bLedWPSBlinkInProgress ) + { + _cancel_timer_ex(&(pLed->BlinkTimer)); + pLed->bLedWPSBlinkInProgress = _FALSE; + } + + _set_timer(&(pLed->BlinkTimer), 0); + break; + + default: + break; + + } + + RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("CurrLedState %d\n", pLed->CurrLedState)); +} + + //COREGA, added by chiyoko, 20090316 + static void + SwLedControlMode3( + _adapter *padapter, + LED_CTL_MODE LedAction +) +{ + struct led_priv *ledpriv = &(padapter->ledpriv); + struct mlme_priv *pmlmepriv = &padapter->mlmepriv; + PLED_871x pLed = &(ledpriv->SwLed0); + + switch(LedAction) + { + case LED_CTL_SITE_SURVEY: + if(pmlmepriv->LinkDetectInfo.bBusyTraffic) + ; + else if(pLed->bLedScanBlinkInProgress ==_FALSE) + { + if(IS_LED_WPS_BLINKING(pLed)) + return; + + if(pLed->bLedBlinkInProgress ==_TRUE) + { + _cancel_timer_ex(&(pLed->BlinkTimer)); + pLed->bLedBlinkInProgress = _FALSE; + } + pLed->bLedScanBlinkInProgress = _TRUE; + pLed->CurrLedState = LED_SCAN_BLINK; + pLed->BlinkTimes = 24; + if( pLed->bLedOn ) + pLed->BlinkingLedState = RTW_LED_OFF; + else + pLed->BlinkingLedState = RTW_LED_ON; + _set_timer(&(pLed->BlinkTimer), LED_BLINK_SCAN_INTERVAL_ALPHA); + } + break; + + case LED_CTL_TX: + case LED_CTL_RX: + if((pLed->bLedBlinkInProgress ==_FALSE) && (check_fwstate(pmlmepriv, _FW_LINKED)== _TRUE)) + { + if(pLed->CurrLedState == LED_SCAN_BLINK || IS_LED_WPS_BLINKING(pLed)) + { + return; + } + + pLed->bLedBlinkInProgress = _TRUE; + pLed->CurrLedState = LED_TXRX_BLINK; + pLed->BlinkTimes = 2; + if( pLed->bLedOn ) + pLed->BlinkingLedState = RTW_LED_OFF; + else + pLed->BlinkingLedState = RTW_LED_ON; + _set_timer(&(pLed->BlinkTimer), LED_BLINK_FASTER_INTERVAL_ALPHA); + } + break; + + case LED_CTL_LINK: + if(IS_LED_WPS_BLINKING(pLed)) + return; + + pLed->CurrLedState = RTW_LED_ON; + pLed->BlinkingLedState = RTW_LED_ON; + if( pLed->bLedBlinkInProgress) + { + _cancel_timer_ex(&(pLed->BlinkTimer)); + pLed->bLedBlinkInProgress = _FALSE; + } + if( pLed->bLedScanBlinkInProgress) + { + _cancel_timer_ex(&(pLed->BlinkTimer)); + pLed->bLedScanBlinkInProgress = _FALSE; + } + + _set_timer(&(pLed->BlinkTimer), 0); + break; + + case LED_CTL_START_WPS: //wait until xinpin finish + case LED_CTL_START_WPS_BOTTON: + if(pLed->bLedWPSBlinkInProgress ==_FALSE) + { + if(pLed->bLedBlinkInProgress ==_TRUE) + { + _cancel_timer_ex(&(pLed->BlinkTimer)); + pLed->bLedBlinkInProgress = _FALSE; + } + if(pLed->bLedScanBlinkInProgress ==_TRUE) + { + _cancel_timer_ex(&(pLed->BlinkTimer)); + pLed->bLedScanBlinkInProgress = _FALSE; + } + pLed->bLedWPSBlinkInProgress = _TRUE; + pLed->CurrLedState = LED_BLINK_WPS; + if( pLed->bLedOn ) + pLed->BlinkingLedState = RTW_LED_OFF; + else + pLed->BlinkingLedState = RTW_LED_ON; + _set_timer(&(pLed->BlinkTimer), LED_BLINK_SCAN_INTERVAL_ALPHA); + } + break; + + case LED_CTL_STOP_WPS: + if(pLed->bLedWPSBlinkInProgress) + { + _cancel_timer_ex(&(pLed->BlinkTimer)); + pLed->bLedWPSBlinkInProgress = _FALSE; + } + else + { + pLed->bLedWPSBlinkInProgress = _TRUE; + } + + pLed->CurrLedState = LED_BLINK_WPS_STOP; + if(pLed->bLedOn) + { + pLed->BlinkingLedState = RTW_LED_OFF; + _set_timer(&(pLed->BlinkTimer), LED_BLINK_WPS_SUCESS_INTERVAL_ALPHA); + } + else + { + pLed->BlinkingLedState = RTW_LED_ON; + _set_timer(&(pLed->BlinkTimer), 0); + } + + break; + + case LED_CTL_STOP_WPS_FAIL: + if(pLed->bLedWPSBlinkInProgress) + { + _cancel_timer_ex(&(pLed->BlinkTimer)); + pLed->bLedWPSBlinkInProgress = _FALSE; + } + + pLed->CurrLedState = RTW_LED_OFF; + pLed->BlinkingLedState = RTW_LED_OFF; + _set_timer(&(pLed->BlinkTimer), 0); + break; + + case LED_CTL_START_TO_LINK: + case LED_CTL_NO_LINK: + if(!IS_LED_BLINKING(pLed)) + { + pLed->CurrLedState = RTW_LED_OFF; + pLed->BlinkingLedState = RTW_LED_OFF; + _set_timer(&(pLed->BlinkTimer), 0); + } + break; + + case LED_CTL_POWER_OFF: + pLed->CurrLedState = RTW_LED_OFF; + pLed->BlinkingLedState = RTW_LED_OFF; + if( pLed->bLedBlinkInProgress) + { + _cancel_timer_ex(&(pLed->BlinkTimer)); + pLed->bLedBlinkInProgress = _FALSE; + } + if( pLed->bLedScanBlinkInProgress) + { + _cancel_timer_ex(&(pLed->BlinkTimer)); + pLed->bLedScanBlinkInProgress = _FALSE; + } + if( pLed->bLedWPSBlinkInProgress ) + { + _cancel_timer_ex(&(pLed->BlinkTimer)); + pLed->bLedWPSBlinkInProgress = _FALSE; + } + + _set_timer(&(pLed->BlinkTimer), 0); + break; + + default: + break; + + } + + RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("CurrLedState %d\n", pLed->CurrLedState)); +} + + + //Edimax-Belkin, added by chiyoko, 20090413 +static void +SwLedControlMode4( + _adapter *padapter, + LED_CTL_MODE LedAction +) +{ + struct led_priv *ledpriv = &(padapter->ledpriv); + struct mlme_priv *pmlmepriv = &padapter->mlmepriv; + PLED_871x pLed = &(ledpriv->SwLed0); + PLED_871x pLed1 = &(ledpriv->SwLed1); + + switch(LedAction) + { + case LED_CTL_START_TO_LINK: + if(pLed1->bLedWPSBlinkInProgress) + { + pLed1->bLedWPSBlinkInProgress = _FALSE; + _cancel_timer_ex(&(pLed1->BlinkTimer)); + + pLed1->BlinkingLedState = RTW_LED_OFF; + pLed1->CurrLedState = RTW_LED_OFF; + + if(pLed1->bLedOn) + _set_timer(&(pLed->BlinkTimer), 0); + } + + if( pLed->bLedStartToLinkBlinkInProgress == _FALSE ) + { + if(pLed->CurrLedState == LED_SCAN_BLINK || IS_LED_WPS_BLINKING(pLed)) + { + return; + } + if(pLed->bLedBlinkInProgress ==_TRUE) + { + _cancel_timer_ex(&(pLed->BlinkTimer)); + pLed->bLedBlinkInProgress = _FALSE; + } + if(pLed->bLedNoLinkBlinkInProgress ==_TRUE) + { + _cancel_timer_ex(&(pLed->BlinkTimer)); + pLed->bLedNoLinkBlinkInProgress = _FALSE; + } + + pLed->bLedStartToLinkBlinkInProgress = _TRUE; + pLed->CurrLedState = LED_BLINK_StartToBlink; + if( pLed->bLedOn ) + { + pLed->BlinkingLedState = RTW_LED_OFF; + _set_timer(&(pLed->BlinkTimer), LED_BLINK_SLOWLY_INTERVAL); + } + else + { + pLed->BlinkingLedState = RTW_LED_ON; + _set_timer(&(pLed->BlinkTimer), LED_BLINK_NORMAL_INTERVAL); + } + } + break; + + case LED_CTL_LINK: + case LED_CTL_NO_LINK: + //LED1 settings + if(LedAction == LED_CTL_LINK) + { + if(pLed1->bLedWPSBlinkInProgress) + { + pLed1->bLedWPSBlinkInProgress = _FALSE; + _cancel_timer_ex(&(pLed1->BlinkTimer)); + + pLed1->BlinkingLedState = RTW_LED_OFF; + pLed1->CurrLedState = RTW_LED_OFF; + + if(pLed1->bLedOn) + _set_timer(&(pLed->BlinkTimer), 0); + } + } + + if( pLed->bLedNoLinkBlinkInProgress == _FALSE ) + { + if(pLed->CurrLedState == LED_SCAN_BLINK || IS_LED_WPS_BLINKING(pLed)) + { + return; + } + if(pLed->bLedBlinkInProgress ==_TRUE) + { + _cancel_timer_ex(&(pLed->BlinkTimer)); + pLed->bLedBlinkInProgress = _FALSE; + } + + pLed->bLedNoLinkBlinkInProgress = _TRUE; + pLed->CurrLedState = LED_BLINK_SLOWLY; + if( pLed->bLedOn ) + pLed->BlinkingLedState = RTW_LED_OFF; + else + pLed->BlinkingLedState = RTW_LED_ON; + _set_timer(&(pLed->BlinkTimer), LED_BLINK_NO_LINK_INTERVAL_ALPHA); + } + break; + + case LED_CTL_SITE_SURVEY: + if((pmlmepriv->LinkDetectInfo.bBusyTraffic) && (check_fwstate(pmlmepriv, _FW_LINKED)== _TRUE)) + ; + else if(pLed->bLedScanBlinkInProgress ==_FALSE) + { + if(IS_LED_WPS_BLINKING(pLed)) + return; + + if(pLed->bLedNoLinkBlinkInProgress == _TRUE) + { + _cancel_timer_ex(&(pLed->BlinkTimer)); + pLed->bLedNoLinkBlinkInProgress = _FALSE; + } + if(pLed->bLedBlinkInProgress ==_TRUE) + { + _cancel_timer_ex(&(pLed->BlinkTimer)); + pLed->bLedBlinkInProgress = _FALSE; + } + pLed->bLedScanBlinkInProgress = _TRUE; + pLed->CurrLedState = LED_SCAN_BLINK; + pLed->BlinkTimes = 24; + if( pLed->bLedOn ) + pLed->BlinkingLedState = RTW_LED_OFF; + else + pLed->BlinkingLedState = RTW_LED_ON; + _set_timer(&(pLed->BlinkTimer), LED_BLINK_SCAN_INTERVAL_ALPHA); + } + break; + + case LED_CTL_TX: + case LED_CTL_RX: + if(pLed->bLedBlinkInProgress ==_FALSE) + { + if(pLed->CurrLedState == LED_SCAN_BLINK || IS_LED_WPS_BLINKING(pLed)) + { + return; + } + if(pLed->bLedNoLinkBlinkInProgress == _TRUE) + { + _cancel_timer_ex(&(pLed->BlinkTimer)); + pLed->bLedNoLinkBlinkInProgress = _FALSE; + } + pLed->bLedBlinkInProgress = _TRUE; + pLed->CurrLedState = LED_TXRX_BLINK; + pLed->BlinkTimes = 2; + if( pLed->bLedOn ) + pLed->BlinkingLedState = RTW_LED_OFF; + else + pLed->BlinkingLedState = RTW_LED_ON; + _set_timer(&(pLed->BlinkTimer), LED_BLINK_FASTER_INTERVAL_ALPHA); + } + break; + + case LED_CTL_START_WPS: //wait until xinpin finish + case LED_CTL_START_WPS_BOTTON: + if(pLed1->bLedWPSBlinkInProgress) + { + pLed1->bLedWPSBlinkInProgress = _FALSE; + _cancel_timer_ex(&(pLed1->BlinkTimer)); + + pLed1->BlinkingLedState = RTW_LED_OFF; + pLed1->CurrLedState = RTW_LED_OFF; + + if(pLed1->bLedOn) + _set_timer(&(pLed->BlinkTimer), 0); + } + + if(pLed->bLedWPSBlinkInProgress ==_FALSE) + { + if(pLed->bLedNoLinkBlinkInProgress == _TRUE) + { + _cancel_timer_ex(&(pLed->BlinkTimer)); + pLed->bLedNoLinkBlinkInProgress = _FALSE; + } + if(pLed->bLedBlinkInProgress ==_TRUE) + { + _cancel_timer_ex(&(pLed->BlinkTimer)); + pLed->bLedBlinkInProgress = _FALSE; + } + if(pLed->bLedScanBlinkInProgress ==_TRUE) + { + _cancel_timer_ex(&(pLed->BlinkTimer)); + pLed->bLedScanBlinkInProgress = _FALSE; + } + pLed->bLedWPSBlinkInProgress = _TRUE; + pLed->CurrLedState = LED_BLINK_WPS; + if( pLed->bLedOn ) + { + pLed->BlinkingLedState = RTW_LED_OFF; + _set_timer(&(pLed->BlinkTimer), LED_BLINK_SLOWLY_INTERVAL); + } + else + { + pLed->BlinkingLedState = RTW_LED_ON; + _set_timer(&(pLed->BlinkTimer), LED_BLINK_NORMAL_INTERVAL); + } + } + break; + + case LED_CTL_STOP_WPS: //WPS connect success + if(pLed->bLedWPSBlinkInProgress) + { + _cancel_timer_ex(&(pLed->BlinkTimer)); + pLed->bLedWPSBlinkInProgress = _FALSE; + } + + pLed->bLedNoLinkBlinkInProgress = _TRUE; + pLed->CurrLedState = LED_BLINK_SLOWLY; + if( pLed->bLedOn ) + pLed->BlinkingLedState = RTW_LED_OFF; + else + pLed->BlinkingLedState = RTW_LED_ON; + _set_timer(&(pLed->BlinkTimer), LED_BLINK_NO_LINK_INTERVAL_ALPHA); + + break; + + case LED_CTL_STOP_WPS_FAIL: //WPS authentication fail + if(pLed->bLedWPSBlinkInProgress) + { + _cancel_timer_ex(&(pLed->BlinkTimer)); + pLed->bLedWPSBlinkInProgress = _FALSE; + } + + pLed->bLedNoLinkBlinkInProgress = _TRUE; + pLed->CurrLedState = LED_BLINK_SLOWLY; + if( pLed->bLedOn ) + pLed->BlinkingLedState = RTW_LED_OFF; + else + pLed->BlinkingLedState = RTW_LED_ON; + _set_timer(&(pLed->BlinkTimer), LED_BLINK_NO_LINK_INTERVAL_ALPHA); + + //LED1 settings + if(pLed1->bLedWPSBlinkInProgress) + _cancel_timer_ex(&(pLed1->BlinkTimer)); + else + pLed1->bLedWPSBlinkInProgress = _TRUE; + + pLed1->CurrLedState = LED_BLINK_WPS_STOP; + if( pLed1->bLedOn ) + pLed1->BlinkingLedState = RTW_LED_OFF; + else + pLed1->BlinkingLedState = RTW_LED_ON; + _set_timer(&(pLed->BlinkTimer), LED_BLINK_NORMAL_INTERVAL); + + break; + + case LED_CTL_STOP_WPS_FAIL_OVERLAP: //WPS session overlap + if(pLed->bLedWPSBlinkInProgress) + { + _cancel_timer_ex(&(pLed->BlinkTimer)); + pLed->bLedWPSBlinkInProgress = _FALSE; + } + + pLed->bLedNoLinkBlinkInProgress = _TRUE; + pLed->CurrLedState = LED_BLINK_SLOWLY; + if( pLed->bLedOn ) + pLed->BlinkingLedState = RTW_LED_OFF; + else + pLed->BlinkingLedState = RTW_LED_ON; + _set_timer(&(pLed->BlinkTimer), LED_BLINK_NO_LINK_INTERVAL_ALPHA); + + //LED1 settings + if(pLed1->bLedWPSBlinkInProgress) + _cancel_timer_ex(&(pLed1->BlinkTimer)); + else + pLed1->bLedWPSBlinkInProgress = _TRUE; + + pLed1->CurrLedState = LED_BLINK_WPS_STOP_OVERLAP; + pLed1->BlinkTimes = 10; + if( pLed1->bLedOn ) + pLed1->BlinkingLedState = RTW_LED_OFF; + else + pLed1->BlinkingLedState = RTW_LED_ON; + _set_timer(&(pLed->BlinkTimer), LED_BLINK_NORMAL_INTERVAL); + + break; + + case LED_CTL_POWER_OFF: + pLed->CurrLedState = RTW_LED_OFF; + pLed->BlinkingLedState = RTW_LED_OFF; + + if( pLed->bLedNoLinkBlinkInProgress) + { + _cancel_timer_ex(&(pLed->BlinkTimer)); + pLed->bLedNoLinkBlinkInProgress = _FALSE; + } + if( pLed->bLedLinkBlinkInProgress) + { + _cancel_timer_ex(&(pLed->BlinkTimer)); + pLed->bLedLinkBlinkInProgress = _FALSE; + } + if( pLed->bLedBlinkInProgress) + { + _cancel_timer_ex(&(pLed->BlinkTimer)); + pLed->bLedBlinkInProgress = _FALSE; + } + if( pLed->bLedWPSBlinkInProgress ) + { + _cancel_timer_ex(&(pLed->BlinkTimer)); + pLed->bLedWPSBlinkInProgress = _FALSE; + } + if( pLed->bLedScanBlinkInProgress) + { + _cancel_timer_ex(&(pLed->BlinkTimer)); + pLed->bLedScanBlinkInProgress = _FALSE; + } + if( pLed->bLedStartToLinkBlinkInProgress) + { + _cancel_timer_ex(&(pLed->BlinkTimer)); + pLed->bLedStartToLinkBlinkInProgress = _FALSE; + } + + if( pLed1->bLedWPSBlinkInProgress ) + { + _cancel_timer_ex(&(pLed1->BlinkTimer)); + pLed1->bLedWPSBlinkInProgress = _FALSE; + } + + pLed1->BlinkingLedState = LED_UNKNOWN; + SwLedOff(padapter, pLed); + SwLedOff(padapter, pLed1); + break; + + default: + break; + + } + + RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("Led %d\n", pLed->CurrLedState)); +} + + + + //Sercomm-Belkin, added by chiyoko, 20090415 +static void +SwLedControlMode5( + _adapter *padapter, + LED_CTL_MODE LedAction +) +{ + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(padapter); + struct led_priv *ledpriv = &(padapter->ledpriv); + struct mlme_priv *pmlmepriv = &padapter->mlmepriv; + PLED_871x pLed = &(ledpriv->SwLed0); + + if(pHalData->EEPROMCustomerID == RT_CID_819x_CAMEO) + pLed = &(ledpriv->SwLed1); + + switch(LedAction) + { + case LED_CTL_POWER_ON: + case LED_CTL_NO_LINK: + case LED_CTL_LINK: //solid blue + pLed->CurrLedState = RTW_LED_ON; + pLed->BlinkingLedState = RTW_LED_ON; + + _set_timer(&(pLed->BlinkTimer), 0); + break; + + case LED_CTL_SITE_SURVEY: + if((pmlmepriv->LinkDetectInfo.bBusyTraffic) && (check_fwstate(pmlmepriv, _FW_LINKED)== _TRUE)) + ; + else if(pLed->bLedScanBlinkInProgress ==_FALSE) + { + if(pLed->bLedBlinkInProgress ==_TRUE) + { + _cancel_timer_ex(&(pLed->BlinkTimer)); + pLed->bLedBlinkInProgress = _FALSE; + } + pLed->bLedScanBlinkInProgress = _TRUE; + pLed->CurrLedState = LED_SCAN_BLINK; + pLed->BlinkTimes = 24; + if( pLed->bLedOn ) + pLed->BlinkingLedState = RTW_LED_OFF; + else + pLed->BlinkingLedState = RTW_LED_ON; + _set_timer(&(pLed->BlinkTimer), LED_BLINK_SCAN_INTERVAL_ALPHA); + } + break; + + case LED_CTL_TX: + case LED_CTL_RX: + if(pLed->bLedBlinkInProgress ==_FALSE) + { + if(pLed->CurrLedState == LED_SCAN_BLINK) + { + return; + } + pLed->bLedBlinkInProgress = _TRUE; + pLed->CurrLedState = LED_TXRX_BLINK; + pLed->BlinkTimes = 2; + if( pLed->bLedOn ) + pLed->BlinkingLedState = RTW_LED_OFF; + else + pLed->BlinkingLedState = RTW_LED_ON; + _set_timer(&(pLed->BlinkTimer), LED_BLINK_FASTER_INTERVAL_ALPHA); + } + break; + + case LED_CTL_POWER_OFF: + pLed->CurrLedState = RTW_LED_OFF; + pLed->BlinkingLedState = RTW_LED_OFF; + + if( pLed->bLedBlinkInProgress) + { + _cancel_timer_ex(&(pLed->BlinkTimer)); + pLed->bLedBlinkInProgress = _FALSE; + } + + SwLedOff(padapter, pLed); + break; + + default: + break; + + } + + RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("Led %d\n", pLed->CurrLedState)); +} + + //WNC-Corega, added by chiyoko, 20090902 +static void +SwLedControlMode6( + _adapter *padapter, + LED_CTL_MODE LedAction +) +{ + struct led_priv *ledpriv = &(padapter->ledpriv); + struct mlme_priv *pmlmepriv = &padapter->mlmepriv; + PLED_871x pLed0 = &(ledpriv->SwLed0); + + switch(LedAction) + { + case LED_CTL_POWER_ON: + case LED_CTL_LINK: + case LED_CTL_NO_LINK: + _cancel_timer_ex(&(pLed0->BlinkTimer)); + pLed0->CurrLedState = RTW_LED_ON; + pLed0->BlinkingLedState = RTW_LED_ON; + _set_timer(&(pLed0->BlinkTimer), 0); + break; + + case LED_CTL_POWER_OFF: + SwLedOff(padapter, pLed0); + break; + + default: + break; + } + + RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("ledcontrol 6 Led %d\n", pLed0->CurrLedState)); +} + + +// +// Description: +// Dispatch LED action according to pHalData->LedStrategy. +// +static void +LedControl871x( + _adapter *padapter, + LED_CTL_MODE LedAction + ) +{ + struct led_priv *ledpriv = &(padapter->ledpriv); + + if( (padapter->bSurpriseRemoved == _TRUE) || ( padapter->bDriverStopped == _TRUE) + ||(padapter->hw_init_completed == _FALSE) ) + { + return; + } + + + if( ledpriv->bRegUseLed == _FALSE) + return; + + //if (!priv->up) + // return; + + //if(priv->bInHctTest) + // return; + + if( (padapter->pwrctrlpriv.rf_pwrstate != rf_on && + padapter->pwrctrlpriv.rfoff_reason > RF_CHANGE_BY_PS) && + (LedAction == LED_CTL_TX || LedAction == LED_CTL_RX || + LedAction == LED_CTL_SITE_SURVEY || + LedAction == LED_CTL_LINK || + LedAction == LED_CTL_NO_LINK || + LedAction == LED_CTL_POWER_ON) ) + { + return; + } + + switch(ledpriv->LedStrategy) + { + case SW_LED_MODE0: + //SwLedControlMode0(padapter, LedAction); + break; + + case SW_LED_MODE1: + SwLedControlMode1(padapter, LedAction); + break; + case SW_LED_MODE2: + SwLedControlMode2(padapter, LedAction); + break; + + case SW_LED_MODE3: + SwLedControlMode3(padapter, LedAction); + break; + + case SW_LED_MODE4: + SwLedControlMode4(padapter, LedAction); + break; + + case SW_LED_MODE5: + SwLedControlMode5(padapter, LedAction); + break; + + case SW_LED_MODE6: + SwLedControlMode6(padapter, LedAction); + break; + + default: + break; + } + + RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("LedStrategy:%d, LedAction %d\n", ledpriv->LedStrategy,LedAction)); +} + +// +// Description: +// Initialize all LED_871x objects. +// +void +rtl8192cu_InitSwLeds( + _adapter *padapter + ) +{ + struct led_priv *pledpriv = &(padapter->ledpriv); + + pledpriv->LedControlHandler = LedControl871x; + + InitLed871x(padapter, &(pledpriv->SwLed0), LED_PIN_LED0); + + InitLed871x(padapter,&(pledpriv->SwLed1), LED_PIN_LED1); +} + + +// +// Description: +// DeInitialize all LED_819xUsb objects. +// +void +rtl8192cu_DeInitSwLeds( + _adapter *padapter + ) +{ + struct led_priv *ledpriv = &(padapter->ledpriv); + + DeInitLed871x( &(ledpriv->SwLed0) ); + DeInitLed871x( &(ledpriv->SwLed1) ); +} --- linux-raspi2-4.2.0.orig/drivers/net/wireless/rtl8192cu/hal/rtl8192c/usb/rtl8192cu_recv.c +++ linux-raspi2-4.2.0/drivers/net/wireless/rtl8192cu/hal/rtl8192c/usb/rtl8192cu_recv.c @@ -0,0 +1,227 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved. + * + * 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 + * published by the Free Software Foundation. + * + * 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 Street, Fifth Floor, Boston, MA 02110, USA + * + * + ******************************************************************************/ +#define _RTL8192CU_RECV_C_ +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +#if defined (PLATFORM_LINUX) && defined (PLATFORM_WINDOWS) + +#error "Shall be Linux or Windows, but not both!\n" + +#endif + +#include +#include + +#include + + +void rtl8192cu_init_recvbuf(_adapter *padapter, struct recv_buf *precvbuf) +{ + + precvbuf->transfer_len = 0; + + precvbuf->len = 0; + + precvbuf->ref_cnt = 0; + + if(precvbuf->pbuf) + { + precvbuf->pdata = precvbuf->phead = precvbuf->ptail = precvbuf->pbuf; + precvbuf->pend = precvbuf->pdata + MAX_RECVBUF_SZ; + } + +} + +int rtl8192cu_init_recv_priv(_adapter *padapter) +{ + struct recv_priv *precvpriv = &padapter->recvpriv; + int i, res = _SUCCESS; + struct recv_buf *precvbuf; + +#ifdef CONFIG_RECV_THREAD_MODE + _rtw_init_sema(&precvpriv->recv_sema, 0);//will be removed + _rtw_init_sema(&precvpriv->terminate_recvthread_sema, 0);//will be removed +#endif + +#ifdef PLATFORM_LINUX + tasklet_init(&precvpriv->recv_tasklet, + (void(*)(unsigned long))rtl8192cu_recv_tasklet, + (unsigned long)padapter); +#endif + +#ifdef CONFIG_USB_INTERRUPT_IN_PIPE +#ifdef PLATFORM_LINUX + precvpriv->int_in_urb = usb_alloc_urb(0, GFP_KERNEL); + if(precvpriv->int_in_urb == NULL){ + DBG_8192C("alloc_urb for interrupt in endpoint fail !!!!\n"); + } +#endif + precvpriv->int_in_buf = rtw_zmalloc(sizeof(INTERRUPT_MSG_FORMAT_EX)); + if(precvpriv->int_in_buf == NULL){ + DBG_8192C("alloc_mem for interrupt in endpoint fail !!!!\n"); + } +#endif + + //init recv_buf + _rtw_init_queue(&precvpriv->free_recv_buf_queue); + +#ifdef CONFIG_USE_USB_BUFFER_ALLOC_RX + _rtw_init_queue(&precvpriv->recv_buf_pending_queue); +#endif // CONFIG_USE_USB_BUFFER_ALLOC_RX + + precvpriv->pallocated_recv_buf = rtw_zmalloc(NR_RECVBUFF *sizeof(struct recv_buf) + 4); + if(precvpriv->pallocated_recv_buf==NULL){ + res= _FAIL; + RT_TRACE(_module_rtl871x_recv_c_,_drv_err_,("alloc recv_buf fail!\n")); + goto exit; + } + _rtw_memset(precvpriv->pallocated_recv_buf, 0, NR_RECVBUFF *sizeof(struct recv_buf) + 4); + + precvpriv->precv_buf = (u8 *)N_BYTE_ALIGMENT((SIZE_PTR)(precvpriv->pallocated_recv_buf), 4); + //precvpriv->precv_buf = precvpriv->pallocated_recv_buf + 4 - + // ((uint) (precvpriv->pallocated_recv_buf) &(4-1)); + + + precvbuf = (struct recv_buf*)precvpriv->precv_buf; + + for(i=0; i < NR_RECVBUFF ; i++) + { + _rtw_init_listhead(&precvbuf->list); + + _rtw_spinlock_init(&precvbuf->recvbuf_lock); + + precvbuf->alloc_sz = MAX_RECVBUF_SZ; + + res = rtw_os_recvbuf_resource_alloc(padapter, precvbuf); + if(res==_FAIL) + break; + + precvbuf->ref_cnt = 0; + precvbuf->adapter =padapter; + + + //rtw_list_insert_tail(&precvbuf->list, &(precvpriv->free_recv_buf_queue.queue)); + + precvbuf++; + + } + + precvpriv->free_recv_buf_queue_cnt = NR_RECVBUFF; + +#ifdef PLATFORM_LINUX + + skb_queue_head_init(&precvpriv->rx_skb_queue); + +#ifdef CONFIG_PREALLOC_RECV_SKB + { + int i; + SIZE_PTR tmpaddr=0; + SIZE_PTR alignment=0; + struct sk_buff *pskb=NULL; + + skb_queue_head_init(&precvpriv->free_recv_skb_queue); + + for(i=0; idev = padapter->pnetdev; + + tmpaddr = (SIZE_PTR)pskb->data; + alignment = tmpaddr & (RECVBUFF_ALIGN_SZ-1); + skb_reserve(pskb, (RECVBUFF_ALIGN_SZ - alignment)); + + skb_queue_tail(&precvpriv->free_recv_skb_queue, pskb); + } + + pskb=NULL; + + } + } +#endif + +#endif + +exit: + + return res; + +} + +void rtl8192cu_free_recv_priv (_adapter *padapter) +{ + int i; + struct recv_buf *precvbuf; + struct recv_priv *precvpriv = &padapter->recvpriv; + + precvbuf = (struct recv_buf *)precvpriv->precv_buf; + + for(i=0; i < NR_RECVBUFF ; i++) + { + rtw_os_recvbuf_resource_free(padapter, precvbuf); + precvbuf++; + } + + if(precvpriv->pallocated_recv_buf) + rtw_mfree(precvpriv->pallocated_recv_buf, NR_RECVBUFF *sizeof(struct recv_buf) + 4); + +#ifdef CONFIG_USB_INTERRUPT_IN_PIPE +#ifdef PLATFORM_LINUX + if(precvpriv->int_in_urb) + { + usb_free_urb(precvpriv->int_in_urb); + } +#endif + if(precvpriv->int_in_buf) + rtw_mfree(precvpriv->int_in_buf, sizeof(INTERRUPT_MSG_FORMAT_EX)); +#endif + +#ifdef PLATFORM_LINUX + + if (skb_queue_len(&precvpriv->rx_skb_queue)) { + DBG_8192C(KERN_WARNING "rx_skb_queue not empty\n"); + } + + rtw_skb_queue_purge(&precvpriv->rx_skb_queue); + +#ifdef CONFIG_PREALLOC_RECV_SKB + + if (skb_queue_len(&precvpriv->free_recv_skb_queue)) { + DBG_8192C(KERN_WARNING "free_recv_skb_queue not empty, %d\n", skb_queue_len(&precvpriv->free_recv_skb_queue)); + } + + rtw_skb_queue_purge(&precvpriv->free_recv_skb_queue); + +#endif + +#endif + +} --- linux-raspi2-4.2.0.orig/drivers/net/wireless/rtl8192cu/hal/rtl8192c/usb/rtl8192cu_xmit.c +++ linux-raspi2-4.2.0/drivers/net/wireless/rtl8192cu/hal/rtl8192c/usb/rtl8192cu_xmit.c @@ -0,0 +1,1149 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved. + * + * 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 + * published by the Free Software Foundation. + * + * 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 Street, Fifth Floor, Boston, MA 02110, USA + * + * + ******************************************************************************/ +#define _RTL8192C_XMIT_C_ +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#if defined (PLATFORM_LINUX) && defined (PLATFORM_WINDOWS) +#error "Shall be Linux or Windows, but not both!\n" +#endif + + +s32 rtl8192cu_init_xmit_priv(_adapter *padapter) +{ + struct xmit_priv *pxmitpriv = &padapter->xmitpriv; + +#ifdef PLATFORM_LINUX + tasklet_init(&pxmitpriv->xmit_tasklet, + (void(*)(unsigned long))rtl8192cu_xmit_tasklet, + (unsigned long)padapter); +#endif + return _SUCCESS; +} + +void rtl8192cu_free_xmit_priv(_adapter *padapter) +{ +} + +u32 rtw_get_ff_hwaddr(struct xmit_frame *pxmitframe) +{ + u32 addr; + struct pkt_attrib *pattrib = &pxmitframe->attrib; + + switch(pattrib->qsel) + { + case 0: + case 3: + addr = BE_QUEUE_INX; + break; + case 1: + case 2: + addr = BK_QUEUE_INX; + break; + case 4: + case 5: + addr = VI_QUEUE_INX; + break; + case 6: + case 7: + addr = VO_QUEUE_INX; + break; + case 0x10: + addr = BCN_QUEUE_INX; + break; + case 0x11://BC/MC in PS (HIQ) + addr = HIGH_QUEUE_INX; + break; + case 0x12: + addr = MGT_QUEUE_INX; + break; + default: + addr = BE_QUEUE_INX; + break; + + } + + return addr; + +} + +int urb_zero_packet_chk(_adapter *padapter, int sz) +{ + int blnSetTxDescOffset; + struct dvobj_priv *pdvobj = adapter_to_dvobj(padapter); + + if ( pdvobj->ishighspeed ) + { + if ( ( (sz + TXDESC_SIZE) % 512 ) == 0 ) { + blnSetTxDescOffset = 1; + } else { + blnSetTxDescOffset = 0; + } + } + else + { + if ( ( (sz + TXDESC_SIZE) % 64 ) == 0 ) { + blnSetTxDescOffset = 1; + } else { + blnSetTxDescOffset = 0; + } + } + + return blnSetTxDescOffset; + +} + +void rtl8192cu_cal_txdesc_chksum(struct tx_desc *ptxdesc) +{ + u16 *usPtr = (u16*)ptxdesc; + u32 count = 16; // (32 bytes / 2 bytes per XOR) => 16 times + u32 index; + u16 checksum = 0; + + //Clear first + ptxdesc->txdw7 &= cpu_to_le32(0xffff0000); + + for(index = 0 ; index < count ; index++){ + checksum = checksum ^ le16_to_cpu(*(usPtr + index)); + } + + ptxdesc->txdw7 |= cpu_to_le32(0x0000ffff&checksum); + +} + +void fill_txdesc_sectype(struct pkt_attrib *pattrib, struct tx_desc *ptxdesc) +{ + if ((pattrib->encrypt > 0) && !pattrib->bswenc) + { + switch (pattrib->encrypt) + { + //SEC_TYPE + case _WEP40_: + case _WEP104_: + ptxdesc->txdw1 |= cpu_to_le32((0x01<<22)&0x00c00000); + break; + case _TKIP_: + case _TKIP_WTMIC_: + //ptxdesc->txdw1 |= cpu_to_le32((0x02<<22)&0x00c00000); + ptxdesc->txdw1 |= cpu_to_le32((0x01<<22)&0x00c00000); + break; + case _AES_: + ptxdesc->txdw1 |= cpu_to_le32((0x03<<22)&0x00c00000); + break; + case _NO_PRIVACY_: + default: + break; + + } + + } + +} + +static void fill_txdesc_vcs(struct pkt_attrib *pattrib, u32 *pdw) +{ + //DBG_8192C("cvs_mode=%d\n", pattrib->vcs_mode); + + switch(pattrib->vcs_mode) + { + case RTS_CTS: + *pdw |= cpu_to_le32(BIT(12)); + break; + case CTS_TO_SELF: + *pdw |= cpu_to_le32(BIT(11)); + break; + case NONE_VCS: + default: + break; + } + + if(pattrib->vcs_mode) { + *pdw |= cpu_to_le32(BIT(13)); + + // Set RTS BW + if(pattrib->ht_en) + { + *pdw |= (pattrib->bwmode&HT_CHANNEL_WIDTH_40)? cpu_to_le32(BIT(27)):0; + + if(pattrib->ch_offset == HAL_PRIME_CHNL_OFFSET_LOWER) + *pdw |= cpu_to_le32((0x01<<28)&0x30000000); + else if(pattrib->ch_offset == HAL_PRIME_CHNL_OFFSET_UPPER) + *pdw |= cpu_to_le32((0x02<<28)&0x30000000); + else if(pattrib->ch_offset == HAL_PRIME_CHNL_OFFSET_DONT_CARE) + *pdw |= 0; + else + *pdw |= cpu_to_le32((0x03<<28)&0x30000000); + } + } +} + +static void fill_txdesc_phy(struct pkt_attrib *pattrib, u32 *pdw) +{ + //DBG_8192C("bwmode=%d, ch_off=%d\n", pattrib->bwmode, pattrib->ch_offset); + + if(pattrib->ht_en) + { + *pdw |= (pattrib->bwmode&HT_CHANNEL_WIDTH_40)? cpu_to_le32(BIT(25)):0; + + if(pattrib->ch_offset == HAL_PRIME_CHNL_OFFSET_LOWER) + *pdw |= cpu_to_le32((0x01<<20)&0x00300000); + else if(pattrib->ch_offset == HAL_PRIME_CHNL_OFFSET_UPPER) + *pdw |= cpu_to_le32((0x02<<20)&0x00300000); + else if(pattrib->ch_offset == HAL_PRIME_CHNL_OFFSET_DONT_CARE) + *pdw |= 0; + else + *pdw |= cpu_to_le32((0x03<<20)&0x00300000); + } +} + +static s32 update_txdesc(struct xmit_frame *pxmitframe, u8 *pmem, s32 sz, u8 bagg_pkt) +{ + int pull=0; + uint qsel; + _adapter *padapter = pxmitframe->padapter; + struct mlme_priv *pmlmepriv = &padapter->mlmepriv; + struct pkt_attrib *pattrib = &pxmitframe->attrib; + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(padapter); + struct dm_priv *pdmpriv = &pHalData->dmpriv; + struct tx_desc *ptxdesc = (struct tx_desc *)pmem; + struct ht_priv *phtpriv = &pmlmepriv->htpriv; + struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; + struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info); + sint bmcst = IS_MCAST(pattrib->ra); +#ifdef CONFIG_P2P + struct wifidirect_info* pwdinfo = &padapter->wdinfo; +#endif //CONFIG_P2P + +#ifndef CONFIG_USE_USB_BUFFER_ALLOC_TX + if((_FALSE == bagg_pkt) && (urb_zero_packet_chk(padapter, sz)==0)) + { + ptxdesc = (struct tx_desc *)(pmem+PACKET_OFFSET_SZ); + pull = 1; + pxmitframe->pkt_offset --; + } +#endif // CONFIG_USE_USB_BUFFER_ALLOC_TX + + _rtw_memset(ptxdesc, 0, sizeof(struct tx_desc)); + + if((pxmitframe->frame_tag&0x0f) == DATA_FRAMETAG) + { + //DBG_8192C("pxmitframe->frame_tag == DATA_FRAMETAG\n"); + + //offset 4 + ptxdesc->txdw1 |= cpu_to_le32(pattrib->mac_id&0x1f); + + qsel = (uint)(pattrib->qsel & 0x0000001f); + ptxdesc->txdw1 |= cpu_to_le32((qsel << QSEL_SHT) & 0x00001f00); + + ptxdesc->txdw1 |= cpu_to_le32((pattrib->raid<< 16) & 0x000f0000); + + fill_txdesc_sectype(pattrib, ptxdesc); + + if(pattrib->ampdu_en==_TRUE) + ptxdesc->txdw1 |= cpu_to_le32(BIT(5));//AGG EN + else + ptxdesc->txdw1 |= cpu_to_le32(BIT(6));//AGG BK + + //offset 8 + + + //offset 12 + ptxdesc->txdw3 |= cpu_to_le32((pattrib->seqnum<<16)&0xffff0000); + + + //offset 16 , offset 20 + if (pattrib->qos_en) + ptxdesc->txdw4 |= cpu_to_le32(BIT(6));//QoS + + if ((pattrib->ether_type != 0x888e) && (pattrib->ether_type != 0x0806) && (pattrib->dhcp_pkt != 1)) + { + //Non EAP & ARP & DHCP type data packet + + fill_txdesc_vcs(pattrib, &ptxdesc->txdw4); + fill_txdesc_phy(pattrib, &ptxdesc->txdw4); + + ptxdesc->txdw4 |= cpu_to_le32(0x00000008);//RTS Rate=24M + ptxdesc->txdw5 |= cpu_to_le32(0x0001ff00);// + //ptxdesc->txdw5 |= cpu_to_le32(0x0000000b);//DataRate - 54M + + //use REG_INIDATA_RATE_SEL value + ptxdesc->txdw5 |= cpu_to_le32(pdmpriv->INIDATA_RATE[pattrib->mac_id]); + + if(0)//for driver dbg + { + ptxdesc->txdw4 |= cpu_to_le32(BIT(8));//driver uses rate + + if(pattrib->ht_en) + ptxdesc->txdw5 |= cpu_to_le32(BIT(6));//SGI + + ptxdesc->txdw5 |= cpu_to_le32(0x00000013);//init rate - mcs7 + } + + } + else + { + // EAP data packet and ARP packet. + // Use the 1M data rate to send the EAP/ARP packet. + // This will maybe make the handshake smooth. + + ptxdesc->txdw1 |= cpu_to_le32(BIT(6));//AGG BK + + ptxdesc->txdw4 |= cpu_to_le32(BIT(8));//driver uses rate + + if (pmlmeinfo->preamble_mode == PREAMBLE_SHORT) + ptxdesc->txdw4 |= cpu_to_le32(BIT(24));// DATA_SHORT + + ptxdesc->txdw5 |= cpu_to_le32(MRateToHwRate(pmlmeext->tx_rate)); + } + + //offset 24 +#ifdef CONFIG_TCP_CSUM_OFFLOAD_TX + if ( pattrib->hw_tcp_csum == 1 ) { + // ptxdesc->txdw6 = 0; // clear TCP_CHECKSUM and IP_CHECKSUM. It's zero already!! + u8 ip_hdr_offset = 32 + pattrib->hdrlen + pattrib->iv_len + 8; + ptxdesc->txdw7 = (1 << 31) | (ip_hdr_offset << 16); + DBG_8192C("ptxdesc->txdw7 = %08x\n", ptxdesc->txdw7); + } +#endif + } + else if((pxmitframe->frame_tag&0x0f)== MGNT_FRAMETAG) + { + //DBG_8192C("pxmitframe->frame_tag == MGNT_FRAMETAG\n"); + + //offset 4 + ptxdesc->txdw1 |= cpu_to_le32(pattrib->mac_id&0x1f); + + qsel = (uint)(pattrib->qsel&0x0000001f); + ptxdesc->txdw1 |= cpu_to_le32((qsel<txdw1 |= cpu_to_le32((pattrib->raid<< 16) & 0x000f0000); + + //fill_txdesc_sectype(pattrib, ptxdesc); + + //offset 8 +#ifdef CONFIG_XMIT_ACK + //CCX-TXRPT ack for xmit mgmt frames. + if (pxmitframe->ack_report) { + ptxdesc->txdw2 |= cpu_to_le32(BIT(19)); + #ifdef DBG_CCX + DBG_871X("%s set ccx\n", __func__); + #endif + } +#endif //CONFIG_XMIT_ACK + + //offset 12 + ptxdesc->txdw3 |= cpu_to_le32((pattrib->seqnum<<16)&0xffff0000); + + //offset 16 + ptxdesc->txdw4 |= cpu_to_le32(BIT(8));//driver uses rate + + //offset 20 + ptxdesc->txdw5 |= cpu_to_le32(BIT(17));//retry limit enable + if(pattrib->retry_ctrl == _TRUE) + { +#ifdef CONFIG_P2P + if(!rtw_p2p_chk_state(pwdinfo, P2P_STATE_NONE)) + { +#ifdef CONFIG_INTEL_WIDI + if(padapter->mlmepriv.widi_enable == _TRUE) + ptxdesc->txdw5 |= cpu_to_le32(0x00180000);//retry limit = 6 + else +#endif //CONFIG_INTEL_WIDI + ptxdesc->txdw5 |= cpu_to_le32(0x00080000);//retry limit = 2 + } + else +#endif //CONFIG_P2P + ptxdesc->txdw5 |= cpu_to_le32(0x00180000);//retry limit = 6 + } + else + ptxdesc->txdw5 |= cpu_to_le32(0x00300000);//retry limit = 12 + +#ifdef CONFIG_INTEL_PROXIM + if((padapter->proximity.proxim_on==_TRUE)&&(pattrib->intel_proxim==_TRUE)){ + printk("\n %s pattrib->rate=%d\n",__FUNCTION__,pattrib->rate); + ptxdesc->txdw5 |= cpu_to_le32( pattrib->rate); + } + else +#endif + { + ptxdesc->txdw5 |= cpu_to_le32(MRateToHwRate(pmlmeext->tx_rate)); + } + } + else if((pxmitframe->frame_tag&0x0f) == TXAGG_FRAMETAG) + { + DBG_8192C("pxmitframe->frame_tag == TXAGG_FRAMETAG\n"); + } +#ifdef CONFIG_MP_INCLUDED + else if((pxmitframe->frame_tag&0x0f) == MP_FRAMETAG) + { + fill_txdesc_for_mp(padapter, ptxdesc); + } +#endif + else + { + DBG_8192C("pxmitframe->frame_tag = %d\n", pxmitframe->frame_tag); + + //offset 4 + ptxdesc->txdw1 |= cpu_to_le32((4)&0x1f);//CAM_ID(MAC_ID) + + ptxdesc->txdw1 |= cpu_to_le32((6<< 16) & 0x000f0000);//raid + + //offset 8 + + //offset 12 + ptxdesc->txdw3 |= cpu_to_le32((pattrib->seqnum<<16)&0xffff0000); + + //offset 16 + ptxdesc->txdw4 |= cpu_to_le32(BIT(8));//driver uses rate + + //offset 20 + ptxdesc->txdw5 |= cpu_to_le32(MRateToHwRate(pmlmeext->tx_rate)); + } + + // 2009.11.05. tynli_test. Suggested by SD4 Filen for FW LPS. + // (1) The sequence number of each non-Qos frame / broadcast / multicast / + // mgnt frame should be controled by Hw because Fw will also send null data + // which we cannot control when Fw LPS enable. + // --> default enable non-Qos data sequense number. 2010.06.23. by tynli. + // (2) Enable HW SEQ control for beacon packet, because we use Hw beacon. + // (3) Use HW Qos SEQ to control the seq num of Ext port non-Qos packets. + // 2010.06.23. Added by tynli. + if(!pattrib->qos_en) + { + ptxdesc->txdw4 |= cpu_to_le32(BIT(7)); // Hw set sequence number + ptxdesc->txdw3 |= cpu_to_le32((8 <<28)); //set bit3 to 1. Suugested by TimChen. 2009.12.29. + } + + //offset 0 + ptxdesc->txdw0 |= cpu_to_le32(sz&0x0000ffff); + ptxdesc->txdw0 |= cpu_to_le32(OWN | FSG | LSG); + ptxdesc->txdw0 |= cpu_to_le32(((TXDESC_SIZE+OFFSET_SZ)<txdw0 |= cpu_to_le32(BIT(24)); + } + + RT_TRACE(_module_rtl871x_xmit_c_,_drv_info_,("offset0-txdesc=0x%x\n", ptxdesc->txdw0)); + + //offset 4 + // pkt_offset, unit:8 bytes padding + if (pxmitframe->pkt_offset > 0) + ptxdesc->txdw1 |= cpu_to_le32((pxmitframe->pkt_offset << 26) & 0x7c000000); + +#ifdef CONFIG_USB_TX_AGGREGATION + if (pxmitframe->agg_num > 1) + ptxdesc->txdw5 |= cpu_to_le32((pxmitframe->agg_num << 24) & 0xff000000); +#endif + + rtl8192cu_cal_txdesc_chksum(ptxdesc); + + return pull; + +} + +static s32 rtw_dump_xframe(_adapter *padapter, struct xmit_frame *pxmitframe) +{ + s32 ret = _SUCCESS; + s32 inner_ret = _SUCCESS; + int t, sz, w_sz, pull=0; + u8 *mem_addr; + u32 ff_hwaddr; + struct xmit_buf *pxmitbuf = pxmitframe->pxmitbuf; + struct pkt_attrib *pattrib = &pxmitframe->attrib; + struct xmit_priv *pxmitpriv = &padapter->xmitpriv; + struct security_priv *psecuritypriv = &padapter->securitypriv; + + if ((pxmitframe->frame_tag == DATA_FRAMETAG) && + (pxmitframe->attrib.ether_type != 0x0806) && + (pxmitframe->attrib.ether_type != 0x888e) && + (pxmitframe->attrib.dhcp_pkt != 1)) + { + rtw_issue_addbareq_cmd(padapter, pxmitframe); + } + + mem_addr = pxmitframe->buf_addr; + + RT_TRACE(_module_rtl871x_xmit_c_,_drv_info_,("rtw_dump_xframe()\n")); + + for (t = 0; t < pattrib->nr_frags; t++) + { + if (inner_ret != _SUCCESS && ret == _SUCCESS) + ret = _FAIL; + + if (t != (pattrib->nr_frags - 1)) + { + RT_TRACE(_module_rtl871x_xmit_c_,_drv_err_,("pattrib->nr_frags=%d\n", pattrib->nr_frags)); + + sz = pxmitpriv->frag_len; + sz = sz - 4 - (psecuritypriv->sw_encrypt ? 0 : pattrib->icv_len); + } + else //no frag + { + sz = pattrib->last_txcmdsz; + } + + pull = update_txdesc(pxmitframe, mem_addr, sz, _FALSE); + + if(pull) + { + mem_addr += PACKET_OFFSET_SZ; //pull txdesc head + + //pxmitbuf ->pbuf = mem_addr; + pxmitframe->buf_addr = mem_addr; + + w_sz = sz + TXDESC_SIZE; + } + else + { + w_sz = sz + TXDESC_SIZE + PACKET_OFFSET_SZ; + } + + ff_hwaddr = rtw_get_ff_hwaddr(pxmitframe); + + inner_ret = rtw_write_port(padapter, ff_hwaddr, w_sz, (unsigned char*)pxmitbuf); + + rtw_count_tx_stats(padapter, pxmitframe, sz); + + + RT_TRACE(_module_rtl871x_xmit_c_,_drv_info_,("rtw_write_port, w_sz=%d\n", w_sz)); + //DBG_8192C("rtw_write_port, w_sz=%d, sz=%d, txdesc_sz=%d, tid=%d\n", w_sz, sz, w_sz-sz, pattrib->priority); + + mem_addr += w_sz; + + mem_addr = (u8 *)RND4(((SIZE_PTR)(mem_addr))); + + } + + rtw_free_xmitframe(pxmitpriv, pxmitframe); + + if (ret != _SUCCESS) + rtw_sctx_done_err(&pxmitbuf->sctx, RTW_SCTX_DONE_UNKNOWN); + + return ret; +} + +#ifdef CONFIG_USB_TX_AGGREGATION +static u32 xmitframe_need_length(struct xmit_frame *pxmitframe) +{ + struct pkt_attrib *pattrib = &pxmitframe->attrib; + + u32 len = 0; + + // no consider fragement + len = pattrib->hdrlen + pattrib->iv_len + + SNAP_SIZE + sizeof(u16) + + pattrib->pktlen + + ((pattrib->bswenc) ? pattrib->icv_len : 0); + + if(pattrib->encrypt ==_TKIP_) + len += 8; + + return len; +} + +#define IDEA_CONDITION 1 // check all packets before enqueue +s32 rtl8192cu_xmitframe_complete(_adapter *padapter, struct xmit_priv *pxmitpriv, struct xmit_buf *pxmitbuf) +{ + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(padapter); + struct xmit_frame *pxmitframe = NULL; + struct xmit_frame *pfirstframe = NULL; + + // aggregate variable + struct hw_xmit *phwxmit; + struct sta_info *psta = NULL; + struct tx_servq *ptxservq = NULL; + + _irqL irqL; + _list *xmitframe_plist = NULL, *xmitframe_phead = NULL; + + u32 pbuf; // next pkt address + u32 pbuf_tail; // last pkt tail + u32 len; // packet length, except TXDESC_SIZE and PKT_OFFSET + + u32 bulkSize = pHalData->UsbBulkOutSize; + u8 descCount; + u32 bulkPtr; + + // dump frame variable + u32 ff_hwaddr; + +#ifndef IDEA_CONDITION + int res = _SUCCESS; +#endif + + RT_TRACE(_module_rtl8192c_xmit_c_, _drv_info_, ("+xmitframe_complete\n")); + + + // check xmitbuffer is ok + if (pxmitbuf == NULL) { + pxmitbuf = rtw_alloc_xmitbuf(pxmitpriv); + if (pxmitbuf == NULL) return _FALSE; + } + + + //3 1. pick up first frame + do { + rtw_free_xmitframe(pxmitpriv, pxmitframe); + + pxmitframe = rtw_dequeue_xframe(pxmitpriv, pxmitpriv->hwxmits, pxmitpriv->hwxmit_entry); + if (pxmitframe == NULL) { + // no more xmit frame, release xmit buffer + rtw_free_xmitbuf(pxmitpriv, pxmitbuf); + return _FALSE; + } + + +#ifndef IDEA_CONDITION + if (pxmitframe->frame_tag != DATA_FRAMETAG) { + RT_TRACE(_module_rtl8192c_xmit_c_, _drv_err_, + ("xmitframe_complete: frame tag(%d) is not DATA_FRAMETAG(%d)!\n", + pxmitframe->frame_tag, DATA_FRAMETAG)); +// rtw_free_xmitframe(pxmitpriv, pxmitframe); + continue; + } + + // TID 0~15 + if ((pxmitframe->attrib.priority < 0) || + (pxmitframe->attrib.priority > 15)) { + RT_TRACE(_module_rtl8192c_xmit_c_, _drv_err_, + ("xmitframe_complete: TID(%d) should be 0~15!\n", + pxmitframe->attrib.priority)); +// rtw_free_xmitframe(pxmitpriv, pxmitframe); + continue; + } +#endif + + pxmitframe->pxmitbuf = pxmitbuf; + pxmitframe->buf_addr = pxmitbuf->pbuf; + pxmitbuf->priv_data = pxmitframe; + + //pxmitframe->agg_num = 1; // alloc xmitframe should assign to 1. + pxmitframe->pkt_offset = 1; // first frame of aggregation, reserve offset + + + if (rtw_xmitframe_coalesce(padapter, pxmitframe->pkt, pxmitframe) == _FALSE) { + DBG_871X("%s coalesce 1st xmitframe failed \n",__FUNCTION__); + continue; + } + + + // always return ndis_packet after rtw_xmitframe_coalesce + rtw_os_xmit_complete(padapter, pxmitframe); + + break; + } while (1); + + //3 2. aggregate same priority and same DA(AP or STA) frames + pfirstframe = pxmitframe; + len = xmitframe_need_length(pfirstframe) + TXDESC_OFFSET; + pbuf_tail = len; + pbuf = _RND8(pbuf_tail); + + // check pkt amount in one bluk + descCount = 0; + bulkPtr = bulkSize; + if (pbuf < bulkPtr) + descCount++; + else { + descCount = 0; + bulkPtr = ((pbuf / bulkSize) + 1) * bulkSize; // round to next bulkSize + } + + // dequeue same priority packet from station tx queue + psta = pfirstframe->attrib.psta; + switch (pfirstframe->attrib.priority) { + case 1: + case 2: + ptxservq = &(psta->sta_xmitpriv.bk_q); + phwxmit = pxmitpriv->hwxmits + 3; + break; + + case 4: + case 5: + ptxservq = &(psta->sta_xmitpriv.vi_q); + phwxmit = pxmitpriv->hwxmits + 1; + break; + + case 6: + case 7: + ptxservq = &(psta->sta_xmitpriv.vo_q); + phwxmit = pxmitpriv->hwxmits; + break; + + case 0: + case 3: + default: + ptxservq = &(psta->sta_xmitpriv.be_q); + phwxmit = pxmitpriv->hwxmits + 2; + break; + } + + _enter_critical_bh(&pxmitpriv->lock, &irqL); + + xmitframe_phead = get_list_head(&ptxservq->sta_pending); + xmitframe_plist = get_next(xmitframe_phead); + while (rtw_end_of_queue_search(xmitframe_phead, xmitframe_plist) == _FALSE) + { + pxmitframe = LIST_CONTAINOR(xmitframe_plist, struct xmit_frame, list); + xmitframe_plist = get_next(xmitframe_plist); + + len = xmitframe_need_length(pxmitframe) + TXDESC_SIZE; // no offset + if (pbuf + len > MAX_XMITBUF_SZ) break; + + rtw_list_delete(&pxmitframe->list); + ptxservq->qcnt--; + phwxmit->accnt--; + +#ifndef IDEA_CONDITION + // suppose only data frames would be in queue + if (pxmitframe->frame_tag != DATA_FRAMETAG) { + RT_TRACE(_module_rtl8192c_xmit_c_, _drv_err_, + ("xmitframe_complete: frame tag(%d) is not DATA_FRAMETAG(%d)!\n", + pxmitframe->frame_tag, DATA_FRAMETAG)); + rtw_free_xmitframe(pxmitpriv, pxmitframe); + continue; + } + + // TID 0~15 + if ((pxmitframe->attrib.priority < 0) || + (pxmitframe->attrib.priority > 15)) { + RT_TRACE(_module_rtl8192c_xmit_c_, _drv_err_, + ("xmitframe_complete: TID(%d) should be 0~15!\n", + pxmitframe->attrib.priority)); + rtw_free_xmitframe(pxmitpriv, pxmitframe); + continue; + } +#endif + +// pxmitframe->pxmitbuf = pxmitbuf; + pxmitframe->buf_addr = pxmitbuf->pbuf + pbuf; + + pxmitframe->agg_num = 0; // not first frame of aggregation + pxmitframe->pkt_offset = 0; // not first frame of aggregation, no need to reserve offset + + if (rtw_xmitframe_coalesce(padapter, pxmitframe->pkt, pxmitframe) == _FALSE) { + DBG_871X("%s coalesce failed \n",__FUNCTION__); + rtw_free_xmitframe(pxmitpriv, pxmitframe); + continue; + } + + // always return ndis_packet after rtw_xmitframe_coalesce + rtw_os_xmit_complete(padapter, pxmitframe); + + // (len - TXDESC_SIZE) == pxmitframe->attrib.last_txcmdsz + update_txdesc(pxmitframe, pxmitframe->buf_addr, pxmitframe->attrib.last_txcmdsz, _TRUE); + + // don't need xmitframe any more + rtw_free_xmitframe(pxmitpriv, pxmitframe); + + // handle pointer and stop condition + pbuf_tail = pbuf + len; + pbuf = _RND8(pbuf_tail); + + pfirstframe->agg_num++; + if (MAX_TX_AGG_PACKET_NUMBER == pfirstframe->agg_num) + break; + + if (pbuf < bulkPtr) { + descCount++; + if (descCount == pHalData->UsbTxAggDescNum) + break; + } else { + descCount = 0; + bulkPtr = ((pbuf / bulkSize) + 1) * bulkSize; + } + } + if (_rtw_queue_empty(&ptxservq->sta_pending) == _TRUE) + rtw_list_delete(&ptxservq->tx_pending); + + _exit_critical_bh(&pxmitpriv->lock, &irqL); + + if ((pfirstframe->attrib.ether_type != 0x0806) && + (pfirstframe->attrib.ether_type != 0x888e) && + (pfirstframe->attrib.dhcp_pkt != 1)) + { + rtw_issue_addbareq_cmd(padapter, pfirstframe); + } + +#ifndef CONFIG_USE_USB_BUFFER_ALLOC_TX + //3 3. update first frame txdesc + if ((pbuf_tail % bulkSize) == 0) { + // remove pkt_offset + pbuf_tail -= PACKET_OFFSET_SZ; + pfirstframe->buf_addr += PACKET_OFFSET_SZ; + pfirstframe->pkt_offset = 0; + } +#endif // CONFIG_USE_USB_BUFFER_ALLOC_TX + update_txdesc(pfirstframe, pfirstframe->buf_addr, pfirstframe->attrib.last_txcmdsz, _TRUE); + + //3 4. write xmit buffer to USB FIFO + ff_hwaddr = rtw_get_ff_hwaddr(pfirstframe); + + // xmit address == ((xmit_frame*)pxmitbuf->priv_data)->buf_addr + rtw_write_port(padapter, ff_hwaddr, pbuf_tail, (u8*)pxmitbuf); + + + //3 5. update statisitc + pbuf_tail -= (pfirstframe->agg_num * TXDESC_SIZE); + if (pfirstframe->pkt_offset == 1) pbuf_tail -= PACKET_OFFSET_SZ; + + rtw_count_tx_stats(padapter, pfirstframe, pbuf_tail); + + rtw_free_xmitframe(pxmitpriv, pfirstframe); + + return _TRUE; +} + +#else + +s32 rtl8192cu_xmitframe_complete(_adapter *padapter, struct xmit_priv *pxmitpriv, struct xmit_buf *pxmitbuf) +{ + + struct hw_xmit *phwxmits; + sint hwentry; + struct xmit_frame *pxmitframe=NULL; + int res=_SUCCESS, xcnt = 0; + + phwxmits = pxmitpriv->hwxmits; + hwentry = pxmitpriv->hwxmit_entry; + + RT_TRACE(_module_rtl871x_xmit_c_,_drv_info_,("xmitframe_complete()\n")); + + if(pxmitbuf==NULL) + { + pxmitbuf = rtw_alloc_xmitbuf(pxmitpriv); + if(!pxmitbuf) + { + return _FALSE; + } + } + + + do + { + pxmitframe = rtw_dequeue_xframe(pxmitpriv, phwxmits, hwentry); + + if(pxmitframe) + { + pxmitframe->pxmitbuf = pxmitbuf; + + pxmitframe->buf_addr = pxmitbuf->pbuf; + + pxmitbuf->priv_data = pxmitframe; + + if((pxmitframe->frame_tag&0x0f) == DATA_FRAMETAG) + { + if(pxmitframe->attrib.priority<=15)//TID0~15 + { + res = rtw_xmitframe_coalesce(padapter, pxmitframe->pkt, pxmitframe); + } + + rtw_os_xmit_complete(padapter, pxmitframe);//always return ndis_packet after rtw_xmitframe_coalesce + } + + + RT_TRACE(_module_rtl871x_xmit_c_,_drv_info_,("xmitframe_complete(): rtw_dump_xframe\n")); + + + if(res == _SUCCESS) + { + rtw_dump_xframe(padapter, pxmitframe); + } + else + { + rtw_free_xmitbuf(pxmitpriv, pxmitbuf); + rtw_free_xmitframe(pxmitpriv, pxmitframe); + } + + xcnt++; + + } + else + { + rtw_free_xmitbuf(pxmitpriv, pxmitbuf); + return _FALSE; + } + + break; + + }while(0/*xcnt < (NR_XMITFRAME >> 3)*/); + + return _TRUE; + +} +#endif + + + +static s32 xmitframe_direct(_adapter *padapter, struct xmit_frame *pxmitframe) +{ + s32 res = _SUCCESS; + + + res = rtw_xmitframe_coalesce(padapter, pxmitframe->pkt, pxmitframe); + if (res == _SUCCESS) { + rtw_dump_xframe(padapter, pxmitframe); + } + + return res; +} + +/* + * Return + * _TRUE dump packet directly + * _FALSE enqueue packet + */ +static s32 pre_xmitframe(_adapter *padapter, struct xmit_frame *pxmitframe) +{ + _irqL irqL; + s32 res; + struct xmit_buf *pxmitbuf = NULL; + struct xmit_priv *pxmitpriv = &padapter->xmitpriv; + struct pkt_attrib *pattrib = &pxmitframe->attrib; + struct mlme_priv *pmlmepriv = &padapter->mlmepriv; + + + _enter_critical_bh(&pxmitpriv->lock, &irqL); + + + if (rtw_txframes_sta_ac_pending(padapter, pattrib) > 0) + goto enqueue; + + + if (check_fwstate(pmlmepriv, _FW_UNDER_SURVEY|_FW_UNDER_LINKING) == _TRUE) + goto enqueue; + +#ifdef CONFIG_CONCURRENT_MODE + if (check_buddy_fwstate(padapter, _FW_UNDER_SURVEY|_FW_UNDER_LINKING) == _TRUE) + goto enqueue; +#endif + + pxmitbuf = rtw_alloc_xmitbuf(pxmitpriv); + if (pxmitbuf == NULL) + goto enqueue; + + _exit_critical_bh(&pxmitpriv->lock, &irqL); + + pxmitframe->pxmitbuf = pxmitbuf; + pxmitframe->buf_addr = pxmitbuf->pbuf; + pxmitbuf->priv_data = pxmitframe; + + if (xmitframe_direct(padapter, pxmitframe) != _SUCCESS) { + rtw_free_xmitbuf(pxmitpriv, pxmitbuf); + rtw_free_xmitframe(pxmitpriv, pxmitframe); + } + + return _TRUE; + +enqueue: + res = rtw_xmitframe_enqueue(padapter, pxmitframe); + _exit_critical_bh(&pxmitpriv->lock, &irqL); + + if (res != _SUCCESS) { + RT_TRACE(_module_xmit_osdep_c_, _drv_err_, ("pre_xmitframe: enqueue xmitframe fail\n")); + rtw_free_xmitframe(pxmitpriv, pxmitframe); + + // Trick, make the statistics correct + pxmitpriv->tx_pkts--; + pxmitpriv->tx_drop++; + return _TRUE; + } + + return _FALSE; +} + +s32 rtl8192cu_mgnt_xmit(_adapter *padapter, struct xmit_frame *pmgntframe) +{ + return rtw_dump_xframe(padapter, pmgntframe); +} + +/* + * Return + * _TRUE dump packet directly ok + * _FALSE temporary can't transmit packets to hardware + */ +s32 rtl8192cu_hal_xmit(_adapter *padapter, struct xmit_frame *pxmitframe) +{ + return pre_xmitframe(padapter, pxmitframe); +} + +s32 rtl8192cu_hal_xmitframe_enqueue(_adapter *padapter, struct xmit_frame *pxmitframe) +{ + struct xmit_priv *pxmitpriv = &padapter->xmitpriv; + s32 err; + + if ((err=rtw_xmitframe_enqueue(padapter, pxmitframe)) != _SUCCESS) + { + rtw_free_xmitframe(pxmitpriv, pxmitframe); + + // Trick, make the statistics correct + pxmitpriv->tx_pkts--; + pxmitpriv->tx_drop++; + } + else + { +#ifdef PLATFORM_LINUX + tasklet_hi_schedule(&pxmitpriv->xmit_tasklet); +#endif + } + + return err; + +} + +#ifdef CONFIG_HOSTAPD_MLME + +static void rtl8192cu_hostap_mgnt_xmit_cb(struct urb *urb) +{ +#ifdef PLATFORM_LINUX + struct sk_buff *skb = (struct sk_buff *)urb->context; + + //DBG_8192C("%s\n", __FUNCTION__); + + rtw_skb_free(skb); +#endif +} + +s32 rtl8192cu_hostap_mgnt_xmit_entry(_adapter *padapter, _pkt *pkt) +{ +#ifdef PLATFORM_LINUX + u16 fc; + int rc, len, pipe; + unsigned int bmcst, tid, qsel; + struct sk_buff *skb, *pxmit_skb; + struct urb *urb; + unsigned char *pxmitbuf; + struct tx_desc *ptxdesc; + struct rtw_ieee80211_hdr *tx_hdr; + struct hostapd_priv *phostapdpriv = padapter->phostapdpriv; + struct net_device *pnetdev = padapter->pnetdev; + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(padapter); + struct dvobj_priv *pdvobj = adapter_to_dvobj(padapter); + + + //DBG_8192C("%s\n", __FUNCTION__); + + skb = pkt; + + len = skb->len; + tx_hdr = (struct rtw_ieee80211_hdr *)(skb->data); + fc = le16_to_cpu(tx_hdr->frame_ctl); + bmcst = IS_MCAST(tx_hdr->addr1); + + if ((fc & RTW_IEEE80211_FCTL_FTYPE) != RTW_IEEE80211_FTYPE_MGMT) + goto _exit; + + pxmit_skb = rtw_skb_alloc(len + TXDESC_SIZE); + + if(!pxmit_skb) + goto _exit; + + pxmitbuf = pxmit_skb->data; + + urb = usb_alloc_urb(0, GFP_ATOMIC); + if (!urb) { + goto _exit; + } + + // ----- fill tx desc ----- + ptxdesc = (struct tx_desc *)pxmitbuf; + _rtw_memset(ptxdesc, 0, sizeof(*ptxdesc)); + + //offset 0 + ptxdesc->txdw0 |= cpu_to_le32(len&0x0000ffff); + ptxdesc->txdw0 |= cpu_to_le32(((TXDESC_SIZE+OFFSET_SZ)<txdw0 |= cpu_to_le32(OWN | FSG | LSG); + + if(bmcst) + { + ptxdesc->txdw0 |= cpu_to_le32(BIT(24)); + } + + //offset 4 + ptxdesc->txdw1 |= cpu_to_le32(0x00);//MAC_ID + + ptxdesc->txdw1 |= cpu_to_le32((0x12<txdw1 |= cpu_to_le32((0x06<< 16) & 0x000f0000);//b mode + + //offset 8 + + //offset 12 + ptxdesc->txdw3 |= cpu_to_le32((le16_to_cpu(tx_hdr->seq_ctl)<<16)&0xffff0000); + + //offset 16 + ptxdesc->txdw4 |= cpu_to_le32(BIT(8));//driver uses rate + + //offset 20 + + + //HW append seq + ptxdesc->txdw4 |= cpu_to_le32(BIT(7)); // Hw set sequence number + ptxdesc->txdw3 |= cpu_to_le32((8 <<28)); //set bit3 to 1. Suugested by TimChen. 2009.12.29. + + + rtl8192cu_cal_txdesc_chksum(ptxdesc); + // ----- end of fill tx desc ----- + + // + skb_put(pxmit_skb, len + TXDESC_SIZE); + pxmitbuf = pxmitbuf + TXDESC_SIZE; + _rtw_memcpy(pxmitbuf, skb->data, len); + + //DBG_8192C("mgnt_xmit, len=%x\n", pxmit_skb->len); + + + // ----- prepare urb for submit ----- + + //translate DMA FIFO addr to pipehandle + //pipe = ffaddr2pipehdl(pdvobj, MGT_QUEUE_INX); + pipe = usb_sndbulkpipe(pdvobj->pusbdev, pHalData->Queue2EPNum[(u8)MGT_QUEUE_INX]&0x0f); + + usb_fill_bulk_urb(urb, pdvobj->pusbdev, pipe, + pxmit_skb->data, pxmit_skb->len, rtl8192cu_hostap_mgnt_xmit_cb, pxmit_skb); + + urb->transfer_flags |= URB_ZERO_PACKET; + usb_anchor_urb(urb, &phostapdpriv->anchored); + rc = usb_submit_urb(urb, GFP_ATOMIC); + if (rc < 0) { + usb_unanchor_urb(urb); + kfree_skb(skb); + } + usb_free_urb(urb); + + +_exit: + + rtw_skb_free(skb); + +#endif + + return 0; + +} +#endif --- linux-raspi2-4.2.0.orig/drivers/net/wireless/rtl8192cu/hal/rtl8192c/usb/usb_halinit.c +++ linux-raspi2-4.2.0/drivers/net/wireless/rtl8192cu/hal/rtl8192c/usb/usb_halinit.c @@ -0,0 +1,6260 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved. + * + * 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 + * published by the Free Software Foundation. + * + * 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 Street, Fifth Floor, Boston, MA 02110, USA + * + * + ******************************************************************************/ +#define _HCI_HAL_INIT_C_ + +#include +#include +#include +#include + +#include +#include + +#ifdef DBG_CONFIG_ERROR_DETECT +#include "rtl8192c_sreset.h" +#endif + +#ifdef CONFIG_IOL +#include +#endif + +#if defined (PLATFORM_LINUX) && defined (PLATFORM_WINDOWS) + +#error "Shall be Linux or Windows, but not both!\n" + +#endif + +#ifndef CONFIG_USB_HCI + +#error "CONFIG_USB_HCI shall be on!\n" + +#endif + +#include +#include +#include + +#if DISABLE_BB_RF + #define HAL_MAC_ENABLE 0 + #define HAL_BB_ENABLE 0 + #define HAL_RF_ENABLE 0 +#else + #define HAL_MAC_ENABLE 1 + #define HAL_BB_ENABLE 1 + #define HAL_RF_ENABLE 1 +#endif + +//endpoint number 1,2,3,4,5 +// bult in : 1 +// bult out: 2 (High) +// bult out: 3 (Normal) for 3 out_ep, (Low) for 2 out_ep +// interrupt in: 4 +// bult out: 5 (Low) for 3 out_ep + + +static VOID +_OneOutEpMapping( + IN HAL_DATA_TYPE *pHalData + ) +{ + //only endpoint number 0x02 + + pHalData->Queue2EPNum[0] = pHalData->RtBulkOutPipe[0];//VO + pHalData->Queue2EPNum[1] = pHalData->RtBulkOutPipe[0];//VI + pHalData->Queue2EPNum[2] = pHalData->RtBulkOutPipe[0];//BE + pHalData->Queue2EPNum[3] = pHalData->RtBulkOutPipe[0];//BK + + pHalData->Queue2EPNum[4] = pHalData->RtBulkOutPipe[0];//BCN + pHalData->Queue2EPNum[5] = pHalData->RtBulkOutPipe[0];//MGT + pHalData->Queue2EPNum[6] = pHalData->RtBulkOutPipe[0];//HIGH + pHalData->Queue2EPNum[7] = pHalData->RtBulkOutPipe[0];//TXCMD +} + + +static VOID +_TwoOutEpMapping( + IN HAL_DATA_TYPE *pHalData, + IN BOOLEAN bWIFICfg + ) +{ + +/* +#define VO_QUEUE_INX 0 +#define VI_QUEUE_INX 1 +#define BE_QUEUE_INX 2 +#define BK_QUEUE_INX 3 +#define BCN_QUEUE_INX 4 +#define MGT_QUEUE_INX 5 +#define HIGH_QUEUE_INX 6 +#define TXCMD_QUEUE_INX 7 +*/ + if(bWIFICfg){ // Normal chip && wmm + + // BK, BE, VI, VO, BCN, CMD,MGT,HIGH,HCCA + //{ 0, 1, 0, 1, 0, 0, 0, 0, 0 }; + //0:H(end_number=0x02), 1:L (end_number=0x03) + + pHalData->Queue2EPNum[0] = pHalData->RtBulkOutPipe[1];//VO + pHalData->Queue2EPNum[1] = pHalData->RtBulkOutPipe[0];//VI + pHalData->Queue2EPNum[2] = pHalData->RtBulkOutPipe[1];//BE + pHalData->Queue2EPNum[3] = pHalData->RtBulkOutPipe[0];//BK + + pHalData->Queue2EPNum[4] = pHalData->RtBulkOutPipe[0];//BCN + pHalData->Queue2EPNum[5] = pHalData->RtBulkOutPipe[0];//MGT + pHalData->Queue2EPNum[6] = pHalData->RtBulkOutPipe[0];//HIGH + pHalData->Queue2EPNum[7] = pHalData->RtBulkOutPipe[0];//TXCMD + } + else{//typical setting + + //BK, BE, VI, VO, BCN, CMD,MGT,HIGH,HCCA + //{ 1, 1, 0, 0, 0, 0, 0, 0, 0 }; + //0:H(end_number=0x02), 1:L (end_number=0x03) + + pHalData->Queue2EPNum[0] = pHalData->RtBulkOutPipe[0];//VO + pHalData->Queue2EPNum[1] = pHalData->RtBulkOutPipe[0];//VI + pHalData->Queue2EPNum[2] = pHalData->RtBulkOutPipe[1];//BE + pHalData->Queue2EPNum[3] = pHalData->RtBulkOutPipe[1];//BK + + pHalData->Queue2EPNum[4] = pHalData->RtBulkOutPipe[0];//BCN + pHalData->Queue2EPNum[5] = pHalData->RtBulkOutPipe[0];//MGT + pHalData->Queue2EPNum[6] = pHalData->RtBulkOutPipe[0];//HIGH + pHalData->Queue2EPNum[7] = pHalData->RtBulkOutPipe[0];//TXCMD + } + +} + + +static VOID _ThreeOutEpMapping( + IN HAL_DATA_TYPE *pHalData, + IN BOOLEAN bWIFICfg + ) +{ + if(bWIFICfg){//for WMM + + // BK, BE, VI, VO, BCN, CMD,MGT,HIGH,HCCA + //{ 1, 2, 1, 0, 0, 0, 0, 0, 0 }; + //0:H(end_number=0x02), 1:N(end_number=0x03), 2:L (end_number=0x05) + + pHalData->Queue2EPNum[0] = pHalData->RtBulkOutPipe[0];//VO + pHalData->Queue2EPNum[1] = pHalData->RtBulkOutPipe[1];//VI + pHalData->Queue2EPNum[2] = pHalData->RtBulkOutPipe[2];//BE + pHalData->Queue2EPNum[3] = pHalData->RtBulkOutPipe[1];//BK + + pHalData->Queue2EPNum[4] = pHalData->RtBulkOutPipe[0];//BCN + pHalData->Queue2EPNum[5] = pHalData->RtBulkOutPipe[0];//MGT + pHalData->Queue2EPNum[6] = pHalData->RtBulkOutPipe[0];//HIGH + pHalData->Queue2EPNum[7] = pHalData->RtBulkOutPipe[0];//TXCMD + } + else{//typical setting + + // BK, BE, VI, VO, BCN, CMD,MGT,HIGH,HCCA + //{ 2, 2, 1, 0, 0, 0, 0, 0, 0 }; + //0:H(end_number=0x02), 1:N(end_number=0x03), 2:L (end_number=0x05) + pHalData->Queue2EPNum[0] = pHalData->RtBulkOutPipe[0];//VO + pHalData->Queue2EPNum[1] = pHalData->RtBulkOutPipe[1];//VI + pHalData->Queue2EPNum[2] = pHalData->RtBulkOutPipe[2];//BE + pHalData->Queue2EPNum[3] = pHalData->RtBulkOutPipe[2];//BK + + pHalData->Queue2EPNum[4] = pHalData->RtBulkOutPipe[0];//BCN + pHalData->Queue2EPNum[5] = pHalData->RtBulkOutPipe[0];//MGT + pHalData->Queue2EPNum[6] = pHalData->RtBulkOutPipe[0];//HIGH + pHalData->Queue2EPNum[7] = pHalData->RtBulkOutPipe[0];//TXCMD + } + +} + +static BOOLEAN +_MappingOutEP( + IN PADAPTER pAdapter, + IN u8 NumOutPipe + ) +{ + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(pAdapter); + struct registry_priv *pregistrypriv = &pAdapter->registrypriv; + + BOOLEAN bWIFICfg = (pregistrypriv->wifi_spec) ?_TRUE:_FALSE; + + BOOLEAN result = _TRUE; + + switch(NumOutPipe) + { + case 2: + _TwoOutEpMapping(pHalData, bWIFICfg); + break; + case 3: + _ThreeOutEpMapping(pHalData, bWIFICfg); + break; + case 1: + _OneOutEpMapping(pHalData); + break; + default: + result = _FALSE; + break; + } + + return result; + +} + +static VOID +_ConfigChipOutEP( + IN PADAPTER pAdapter, + IN u8 NumOutPipe + ) +{ + u8 value8; + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(pAdapter); + + pHalData->OutEpQueueSel = 0; + pHalData->OutEpNumber = 0; + + // Normal and High queue + value8 = rtw_read8(pAdapter, (REG_NORMAL_SIE_EP + 1)); + + if(value8 & USB_NORMAL_SIE_EP_MASK){ + pHalData->OutEpQueueSel |= TX_SELE_HQ; + pHalData->OutEpNumber++; + } + +#ifdef CONFIG_USB_ONE_OUT_EP + return; +#endif + + if((value8 >> USB_NORMAL_SIE_EP_SHIFT) & USB_NORMAL_SIE_EP_MASK){ + pHalData->OutEpQueueSel |= TX_SELE_NQ; + pHalData->OutEpNumber++; + } + + // Low queue + value8 = rtw_read8(pAdapter, (REG_NORMAL_SIE_EP + 2)); + if(value8 & USB_NORMAL_SIE_EP_MASK){ + pHalData->OutEpQueueSel |= TX_SELE_LQ; + pHalData->OutEpNumber++; + } + + // TODO: Error recovery for this case + //RT_ASSERT((NumOutPipe == pHalData->OutEpNumber), ("Out EP number isn't match! %d(Descriptor) != %d (SIE reg)\n", (u4Byte)NumOutPipe, (u4Byte)pHalData->OutEpNumber)); + +} + +static BOOLEAN HalUsbSetQueuePipeMapping8192CUsb( + IN PADAPTER pAdapter, + IN u8 NumInPipe, + IN u8 NumOutPipe + ) +{ + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(pAdapter); + BOOLEAN result = _FALSE; + + _ConfigChipOutEP(pAdapter, NumOutPipe); + + #ifndef CONFIG_USB_ONE_OUT_EP + // Normal chip with one IN and one OUT doesn't have interrupt IN EP. + if(1 == pHalData->OutEpNumber){ + if(1 != NumInPipe){ + return result; + } + } + #endif + result = _MappingOutEP(pAdapter, NumOutPipe); + + return result; + +} + +void rtl8192cu_interface_configure(_adapter *padapter) +{ + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(padapter); + struct dvobj_priv *pdvobjpriv = adapter_to_dvobj(padapter); + + if (pdvobjpriv->ishighspeed == _TRUE) + { + pHalData->UsbBulkOutSize = USB_HIGH_SPEED_BULK_SIZE;//512 bytes + } + else + { + pHalData->UsbBulkOutSize = USB_FULL_SPEED_BULK_SIZE;//64 bytes + } + + pHalData->interfaceIndex = pdvobjpriv->InterfaceNumber; + pHalData->RtBulkInPipe = pdvobjpriv->ep_num[0]; + pHalData->RtBulkOutPipe[0] = pdvobjpriv->ep_num[1]; + pHalData->RtBulkOutPipe[1] = pdvobjpriv->ep_num[2]; + pHalData->RtIntInPipe = pdvobjpriv->ep_num[3]; + pHalData->RtBulkOutPipe[2] = pdvobjpriv->ep_num[4]; + +#ifdef CONFIG_USB_TX_AGGREGATION + pHalData->UsbTxAggMode = 1; + pHalData->UsbTxAggDescNum = 0x6; // only 4 bits +#endif + +#ifdef CONFIG_USB_RX_AGGREGATION + pHalData->UsbRxAggMode = USB_RX_AGG_DMA;// USB_RX_AGG_DMA; + pHalData->UsbRxAggBlockCount = 8; //unit : 512b + pHalData->UsbRxAggBlockTimeout = 0x6; + pHalData->UsbRxAggPageCount = 48; //uint :128 b //0x0A; // 10 = MAX_RX_DMA_BUFFER_SIZE/2/pHalData->UsbBulkOutSize + pHalData->UsbRxAggPageTimeout = 0x4; //6, absolute time = 34ms/(2^6) +#endif + + HalUsbSetQueuePipeMapping8192CUsb(padapter, pdvobjpriv->RtNumInPipes, + #ifdef CONFIG_USB_ONE_OUT_EP + 1 + #else + pdvobjpriv->RtNumOutPipes + #endif + ); + +} + +static u8 _InitPowerOn(_adapter *padapter) +{ + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(padapter); + u8 ret = _SUCCESS; + u16 value16=0; + u8 value8 = 0; + u32 value32 = 0; + + // polling autoload done. + u32 pollingCount = 0; + + do + { + if(rtw_read8(padapter, REG_APS_FSMCO) & PFM_ALDN){ + //RT_TRACE(COMP_INIT,DBG_LOUD,("Autoload Done!\n")); + break; + } + + if(pollingCount++ > POLLING_READY_TIMEOUT_COUNT){ + //RT_TRACE(COMP_INIT,DBG_SERIOUS,("Failed to polling REG_APS_FSMCO[PFM_ALDN] done!\n")); + return _FAIL; + } + + }while(_TRUE); + + +// For hardware power on sequence. + + //0. RSV_CTRL 0x1C[7:0] = 0x00 // unlock ISO/CLK/Power control register + rtw_write8(padapter, REG_RSV_CTRL, 0x0); + // Power on when re-enter from IPS/Radio off/card disable + rtw_write8(padapter, REG_SPS0_CTRL, 0x2b);//enable SPS into PWM mode +/* + value16 = PlatformIORead2Byte(Adapter, REG_AFE_XTAL_CTRL);//enable AFE clock + value16 &= (~XTAL_GATE_AFE); + PlatformIOWrite2Byte(Adapter,REG_AFE_XTAL_CTRL, value16 ); +*/ + + rtw_udelay_os(100);//PlatformSleepUs(150);//this is not necessary when initially power on + + value8 = rtw_read8(padapter, REG_LDOV12D_CTRL); + if(0== (value8 & LDV12_EN) ){ + value8 |= LDV12_EN; + rtw_write8(padapter, REG_LDOV12D_CTRL, value8); + //RT_TRACE(COMP_INIT, DBG_LOUD, (" power-on :REG_LDOV12D_CTRL Reg0x21:0x%02x.\n",value8)); + rtw_udelay_os(100);//PlatformSleepUs(100);//this is not necessary when initially power on + value8 = rtw_read8(padapter, REG_SYS_ISO_CTRL); + value8 &= ~ISO_MD2PP; + rtw_write8(padapter, REG_SYS_ISO_CTRL, value8); + } + + // auto enable WLAN + pollingCount = 0; + value16 = rtw_read16(padapter, REG_APS_FSMCO); + value16 |= APFM_ONMAC; + rtw_write16(padapter, REG_APS_FSMCO, value16); + + do + { + if(0 == (rtw_read16(padapter, REG_APS_FSMCO) & APFM_ONMAC)){ + //RT_TRACE(COMP_INIT,DBG_LOUD,("MAC auto ON okay!\n")); + break; + } + + if(pollingCount++ > POLLING_READY_TIMEOUT_COUNT){ + //RT_TRACE(COMP_INIT,DBG_SERIOUS,("Failed to polling REG_APS_FSMCO[APFM_ONMAC] done!\n")); + return _FAIL; + } + + }while(_TRUE); + + //Enable Radio ,GPIO ,and LED function + rtw_write16(padapter,REG_APS_FSMCO,0x0812); + +#ifdef CONFIG_AUTOSUSPEND + //for usb Combo card ,BT + if((BOARD_USB_COMBO == pHalData->BoardType)&&(padapter->registrypriv.usbss_enable)) + { + value32 = rtw_read32(padapter, REG_APS_FSMCO); + value32 |= (SOP_ABG|SOP_AMB|XOP_BTCK); + rtw_write32(padapter, REG_APS_FSMCO, value32); + } +#endif + + // release RF digital isolation + value16 = rtw_read16(padapter, REG_SYS_ISO_CTRL); + value16 &= ~ISO_DIOR; + rtw_write16(padapter, REG_SYS_ISO_CTRL, value16); + + // Enable MAC DMA/WMAC/SCHEDULE/SEC block + value16 = rtw_read16(padapter, REG_CR); + value16 |= (HCI_TXDMA_EN | HCI_RXDMA_EN | TXDMA_EN | RXDMA_EN + | PROTOCOL_EN | SCHEDULE_EN | MACTXEN | MACRXEN | ENSEC); + rtw_write16(padapter, REG_CR, value16); + + //tynli_test for suspend mode. + { + rtw_write8(padapter, 0xfe10, 0x19); + } + + // 2010/11/22 MH For slim combo debug mode check. + if (pHalData->BoardType == BOARD_USB_COMBO) + { + if (pHalData->SlimComboDbg == _TRUE) + { + DBG_8192C("SlimComboDbg == TRUE\n"); + + // 1. SIC?Test Mode ¤¤, Debug Ports ·|¦Û°Ê Enable, ©Ò¥H Driver ¤W¨Ó«á, + // ­nÃö±¼½Ð³]©w 0x 00[7] -> "1", ±N¥¦ Disable. effect if not: power consumption increase + rtw_write8(padapter, REG_SYS_ISO_CTRL, rtw_read8(padapter, REG_SYS_ISO_CTRL)|BIT7); + + // 2. SIC?Test Mode ¤¤, GPIO-8?·| report Power State ©Ò¥H Driver ¤W¨Ó«á, ½Ð³]©w? 0x04[6] -> "1" ±N¥¦ Disable + // effect if not: GPIO-8 could not be GPIO or LED function + rtw_write8(padapter, REG_APS_FSMCO, rtw_read8(padapter, REG_APS_FSMCO)|BIT6); + + // 3. SIC Test Mode ¤¤, EESK, EECS ·| report?Host Clock status, ©Ò¥H Driver ¤W¨Ó«á, ½Ð³]©w? 0x40[4] -> "1" ±N¥¦¤Á¦¨ EEPROM ¨Ï¥Î Pin (autoload still from Efuse) + // effect if not:power consumption increase + value8 = rtw_read8(padapter, REG_GPIO_MUXCFG)|BIT4 ; + #ifdef CONFIG_BT_COEXIST + // 2011/01/26 MH UMB-B cut bug. We need to support the modification. + if (IS_81xxC_VENDOR_UMC_B_CUT(pHalData->VersionID) && + pHalData->bt_coexist.BT_Coexist) + { + value8 |= (BIT5); + } + #endif + rtw_write8(padapter, REG_GPIO_MUXCFG,value8 ); + + + // 4. SIC Test Mode ¤¤,?SIC Debug ports ·|¦Û°Ê Enable , ©Ò¥H Driver ¤W¨Ó«á°¨¤W, ½Ð³]©w? 0x40[15:11] -> ¡§0x00¡¨, ±N¥¦Disable + // 4.1Two Steps setting for safety: 0x40[15,13,12, 11] -> "0", then ?0x40[14] -> "0" + // effect if not: Host could not transfer packets, and GPIO-3,2 will occupied by SIC then Co-exist could not work. + rtw_write16(padapter, REG_GPIO_MUXCFG, (rtw_read16(padapter, REG_GPIO_MUXCFG)&0x07FF)|BIT14); + rtw_write16(padapter, REG_GPIO_MUXCFG, rtw_read16(padapter, REG_GPIO_MUXCFG)&0x07FF); + } + } + + + // 2011/02/18 To Fix RU LNA power leakage problem. We need to execute below below in + // Adapter init and halt sequence. Accordingto EEchou's opinion, we can enable the ability for all + // IC. According to Johnny's opinion, only RU will meet the condition. + if (IS_HARDWARE_TYPE_8192C(padapter) && (pHalData->BoardType == BOARD_USB_High_PA)) + rtw_write32(padapter, rFPGA0_XCD_RFParameter, rtw_read32(padapter, rFPGA0_XCD_RFParameter)&(~BIT1)); + return ret; + +} + + +static void _dbg_dump_macreg(_adapter *padapter) +{ + u32 offset = 0; + u32 val32 = 0; + u32 index =0 ; + for(index=0;index<64;index++) + { + offset = index*4; + val32 = rtw_read32(padapter,offset); + DBG_8192C("offset : 0x%02x ,val:0x%08x\n",offset,val32); + } +} + + +static void _InitPABias(_adapter *padapter) +{ + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(padapter); + u8 pa_setting; + BOOLEAN is92C = IS_92C_SERIAL(pHalData->VersionID); + + //FIXED PA current issue + //efuse_one_byte_read(padapter, 0x1FA, &pa_setting); + pa_setting = EFUSE_Read1Byte(padapter, 0x1FA); + + //RT_TRACE(COMP_INIT, DBG_LOUD, ("_InitPABias 0x1FA 0x%x \n",pa_setting)); + + if(!(pa_setting & BIT0)) + { + PHY_SetRFReg(padapter, RF_PATH_A, 0x15, 0x0FFFFF, 0x0F406); + PHY_SetRFReg(padapter, RF_PATH_A, 0x15, 0x0FFFFF, 0x4F406); + PHY_SetRFReg(padapter, RF_PATH_A, 0x15, 0x0FFFFF, 0x8F406); + PHY_SetRFReg(padapter, RF_PATH_A, 0x15, 0x0FFFFF, 0xCF406); + //RT_TRACE(COMP_INIT, DBG_LOUD, ("PA BIAS path A\n")); + } + + if(!(pa_setting & BIT1) && is92C) + { + PHY_SetRFReg(padapter,RF_PATH_B, 0x15, 0x0FFFFF, 0x0F406); + PHY_SetRFReg(padapter,RF_PATH_B, 0x15, 0x0FFFFF, 0x4F406); + PHY_SetRFReg(padapter,RF_PATH_B, 0x15, 0x0FFFFF, 0x8F406); + PHY_SetRFReg(padapter,RF_PATH_B, 0x15, 0x0FFFFF, 0xCF406); + //RT_TRACE(COMP_INIT, DBG_LOUD, ("PA BIAS path B\n")); + } + + if(!(pa_setting & BIT4)) + { + pa_setting = rtw_read8(padapter, 0x16); + pa_setting &= 0x0F; + rtw_write8(padapter, 0x16, pa_setting | 0x90); + } +} +#ifdef CONFIG_BT_COEXIST +static void _InitBTCoexist(_adapter *padapter) +{ + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(padapter); + struct btcoexist_priv *pbtpriv = &(pHalData->bt_coexist); + u8 u1Tmp; + + if(pbtpriv->BT_Coexist && pbtpriv->BT_CoexistType == BT_CSR_BC4) + { + +#if MP_DRIVER != 1 + if(pbtpriv->BT_Ant_isolation) + { + rtw_write8( padapter,REG_GPIO_MUXCFG, 0xa0); + DBG_8192C("BT write 0x%x = 0x%x\n", REG_GPIO_MUXCFG, 0xa0); + } +#endif + + u1Tmp = rtw_read8(padapter, 0x4fd) & BIT0; + u1Tmp = u1Tmp | + ((pbtpriv->BT_Ant_isolation==1)?0:BIT1) | + ((pbtpriv->BT_Service==BT_SCO)?0:BIT2); + rtw_write8( padapter, 0x4fd, u1Tmp); + DBG_8192C("BT write 0x%x = 0x%x for non-isolation\n", 0x4fd, u1Tmp); + + + rtw_write32(padapter, REG_BT_COEX_TABLE+4, 0xaaaa9aaa); + DBG_8192C("BT write 0x%x = 0x%x\n", REG_BT_COEX_TABLE+4, 0xaaaa9aaa); + + rtw_write32(padapter, REG_BT_COEX_TABLE+8, 0xffbd0040); + DBG_8192C("BT write 0x%x = 0x%x\n", REG_BT_COEX_TABLE+8, 0xffbd0040); + + rtw_write32(padapter, REG_BT_COEX_TABLE+0xc, 0x40000010); + DBG_8192C("BT write 0x%x = 0x%x\n", REG_BT_COEX_TABLE+0xc, 0x40000010); + + //Config to 1T1R + u1Tmp = rtw_read8(padapter,rOFDM0_TRxPathEnable); + u1Tmp &= ~(BIT1); + rtw_write8( padapter, rOFDM0_TRxPathEnable, u1Tmp); + DBG_8192C("BT write 0xC04 = 0x%x\n", u1Tmp); + + u1Tmp = rtw_read8(padapter, rOFDM1_TRxPathEnable); + u1Tmp &= ~(BIT1); + rtw_write8( padapter, rOFDM1_TRxPathEnable, u1Tmp); + DBG_8192C("BT write 0xD04 = 0x%x\n", u1Tmp); + + } +} +#endif + +//------------------------------------------------------------------------- +// +// LLT R/W/Init function +// +//------------------------------------------------------------------------- +static u8 _LLTWrite( + IN PADAPTER Adapter, + IN u32 address, + IN u32 data + ) +{ + u8 status = _SUCCESS; + int count = 0; + u32 value = _LLT_INIT_ADDR(address) | _LLT_INIT_DATA(data) | _LLT_OP(_LLT_WRITE_ACCESS); + + rtw_write32(Adapter, REG_LLT_INIT, value); + + //polling + do{ + + value = rtw_read32(Adapter, REG_LLT_INIT); + if(_LLT_NO_ACTIVE == _LLT_OP_VALUE(value)){ + break; + } + + if(count > POLLING_LLT_THRESHOLD){ + //RT_TRACE(COMP_INIT,DBG_SERIOUS,("Failed to polling write LLT done at address %d!\n", address)); + status = _FAIL; + break; + } + }while(count++); + + return status; + +} + + +static u8 _LLTRead( + IN PADAPTER Adapter, + IN u32 address + ) +{ + int count = 0; + u32 value = _LLT_INIT_ADDR(address) | _LLT_OP(_LLT_READ_ACCESS); + + rtw_write32(Adapter, REG_LLT_INIT, value); + + //polling and get value + do{ + + value = rtw_read32(Adapter, REG_LLT_INIT); + if(_LLT_NO_ACTIVE == _LLT_OP_VALUE(value)){ + return (u8)value; + } + + if(count > POLLING_LLT_THRESHOLD){ + //RT_TRACE(COMP_INIT,DBG_SERIOUS,("Failed to polling read LLT done at address %d!\n", address)); + break; + } + }while(count++); + + return 0xFF; + +} + + +static u8 InitLLTTable( + IN PADAPTER Adapter, + IN u32 boundary + ) +{ + u8 status = _SUCCESS; + u32 i; + +#ifdef CONFIG_IOL_LLT + if(rtw_IOL_applied(Adapter)) + { + struct xmit_frame *xmit_frame; + if((xmit_frame=rtw_IOL_accquire_xmit_frame(Adapter)) == NULL) + return _FAIL; + + rtw_IOL_append_LLT_cmd(xmit_frame, boundary); + status = rtw_IOL_exec_cmds_sync(Adapter, xmit_frame, 1000); + } + else +#endif + { + for(i = 0 ; i < (boundary - 1) ; i++){ + status = _LLTWrite(Adapter, i , i + 1); + if(_SUCCESS != status){ + return status; + } + } + + // end of list + status = _LLTWrite(Adapter, (boundary - 1), 0xFF); + if(_SUCCESS != status){ + return status; + } + + // Make the other pages as ring buffer + // This ring buffer is used as beacon buffer if we config this MAC as two MAC transfer. + // Otherwise used as local loopback buffer. + for(i = boundary ; i < LAST_ENTRY_OF_TX_PKT_BUFFER ; i++){ + status = _LLTWrite(Adapter, i, (i + 1)); + if(_SUCCESS != status){ + return status; + } + } + + // Let last entry point to the start entry of ring buffer + status = _LLTWrite(Adapter, LAST_ENTRY_OF_TX_PKT_BUFFER, boundary); + if(_SUCCESS != status){ + return status; + } + } + + return status; + +} + + +//--------------------------------------------------------------- +// +// MAC init functions +// +//--------------------------------------------------------------- +static VOID +_SetMacID( + IN PADAPTER Adapter, u8* MacID + ) +{ + u32 i; + for(i=0 ; i< MAC_ADDR_LEN ; i++){ +#ifdef CONFIG_CONCURRENT_MODE + if(Adapter->iface_type == IFACE_PORT1) + rtw_write32(Adapter, REG_MACID1+i, MacID[i]); + else +#endif + rtw_write32(Adapter, REG_MACID+i, MacID[i]); + } +} + +static VOID +_SetBSSID( + IN PADAPTER Adapter, u8* BSSID + ) +{ + u32 i; + for(i=0 ; i< MAC_ADDR_LEN ; i++){ +#ifdef CONFIG_CONCURRENT_MODE + if(Adapter->iface_type == IFACE_PORT1) + rtw_write32(Adapter, REG_BSSID1+i, BSSID[i]); + else +#endif + rtw_write32(Adapter, REG_BSSID+i, BSSID[i]); + } +} + + +// Shall USB interface init this? +static VOID +_InitInterrupt( + IN PADAPTER Adapter + ) +{ + u32 value32; + + // HISR - turn all on + value32 = 0xFFFFFFFF; + rtw_write32(Adapter, REG_HISR, value32); + + // HIMR - turn all on + rtw_write32(Adapter, REG_HIMR, value32); +} + + +static VOID +_InitQueueReservedPage( + IN PADAPTER Adapter + ) +{ + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); + struct registry_priv *pregistrypriv = &Adapter->registrypriv; + + u32 outEPNum = (u32)pHalData->OutEpNumber; + u32 numHQ = 0; + u32 numLQ = 0; + u32 numNQ = 0; + u32 numPubQ; + u32 value32; + u8 value8; + BOOLEAN bWiFiConfig = pregistrypriv->wifi_spec; + //u32 txQPageNum, txQPageUnit,txQRemainPage; + + { //for WMM + //RT_ASSERT((outEPNum>=2), ("for WMM ,number of out-ep must more than or equal to 2!\n")); + + if(pHalData->OutEpQueueSel & TX_SELE_HQ){ + numHQ = (bWiFiConfig)?WMM_NORMAL_PAGE_NUM_HPQ:NORMAL_PAGE_NUM_HPQ; + } + + if(pHalData->OutEpQueueSel & TX_SELE_LQ){ + numLQ = (bWiFiConfig)?WMM_NORMAL_PAGE_NUM_LPQ:NORMAL_PAGE_NUM_LPQ; + } + // NOTE: This step shall be proceed before writting REG_RQPN. + if(pHalData->OutEpQueueSel & TX_SELE_NQ){ + numNQ = (bWiFiConfig)?WMM_NORMAL_PAGE_NUM_NPQ:NORMAL_PAGE_NUM_NPQ; + } + value8 = (u8)_NPQ(numNQ); + rtw_write8(Adapter, REG_RQPN_NPQ, value8); + + if (bWiFiConfig) + numPubQ = WMM_NORMAL_TX_TOTAL_PAGE_NUMBER - numHQ - numLQ - numNQ; + else + numPubQ = TX_TOTAL_PAGE_NUMBER - numHQ - numLQ - numNQ; + } + + // TX DMA + value32 = _HPQ(numHQ) | _LPQ(numLQ) | _PUBQ(numPubQ) | LD_RQPN; + rtw_write32(Adapter, REG_RQPN, value32); +} + +static VOID +_InitTxBufferBoundary( + IN PADAPTER Adapter + ) +{ + struct registry_priv *pregistrypriv = &Adapter->registrypriv; + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); + + u8 txpktbuf_bndy; + + if(!pregistrypriv->wifi_spec){ + txpktbuf_bndy = TX_PAGE_BOUNDARY; + } + else{//for WMM + txpktbuf_bndy = WMM_NORMAL_TX_PAGE_BOUNDARY; + } + + rtw_write8(Adapter, REG_TXPKTBUF_BCNQ_BDNY, txpktbuf_bndy); + rtw_write8(Adapter, REG_TXPKTBUF_MGQ_BDNY, txpktbuf_bndy); + rtw_write8(Adapter, REG_TXPKTBUF_WMAC_LBK_BF_HD, txpktbuf_bndy); + rtw_write8(Adapter, REG_TRXFF_BNDY, txpktbuf_bndy); +#if 1 + rtw_write8(Adapter, REG_TDECTRL+1, txpktbuf_bndy); +#else + txdmactrl = PlatformIORead2Byte(Adapter, REG_TDECTRL); + txdmactrl &= ~BCN_HEAD_MASK; + txdmactrl |= BCN_HEAD(txpktbuf_bndy); + PlatformIOWrite2Byte(Adapter, REG_TDECTRL, txdmactrl); +#endif +} + +static VOID +_InitPageBoundary( + IN PADAPTER Adapter + ) +{ + // RX Page Boundary + //srand(static_cast(time(NULL)) ); + u16 rxff_bndy = 0x27FF;//(rand() % 1) ? 0x27FF : 0x23FF; + + rtw_write16(Adapter, (REG_TRXFF_BNDY + 2), rxff_bndy); + + // TODO: ?? shall we set tx boundary? +} + + +static VOID +_InitNormalChipRegPriority( + IN PADAPTER Adapter, + IN u16 beQ, + IN u16 bkQ, + IN u16 viQ, + IN u16 voQ, + IN u16 mgtQ, + IN u16 hiQ + ) +{ + u16 value16 = (rtw_read16(Adapter, REG_TRXDMA_CTRL) & 0x7); + + value16 |= _TXDMA_BEQ_MAP(beQ) | _TXDMA_BKQ_MAP(bkQ) | + _TXDMA_VIQ_MAP(viQ) | _TXDMA_VOQ_MAP(voQ) | + _TXDMA_MGQ_MAP(mgtQ)| _TXDMA_HIQ_MAP(hiQ); + + rtw_write16(Adapter, REG_TRXDMA_CTRL, value16); +} + +static VOID +_InitNormalChipOneOutEpPriority( + IN PADAPTER Adapter + ) +{ + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); + + u16 value = 0; + switch(pHalData->OutEpQueueSel) + { + case TX_SELE_HQ: + value = QUEUE_HIGH; + break; + case TX_SELE_LQ: + value = QUEUE_LOW; + break; + case TX_SELE_NQ: + value = QUEUE_NORMAL; + break; + default: + //RT_ASSERT(FALSE,("Shall not reach here!\n")); + break; + } + + _InitNormalChipRegPriority(Adapter, + value, + value, + value, + value, + value, + value + ); + +} + +static VOID +_InitNormalChipTwoOutEpPriority( + IN PADAPTER Adapter + ) +{ + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); + struct registry_priv *pregistrypriv = &Adapter->registrypriv; + u16 beQ,bkQ,viQ,voQ,mgtQ,hiQ; + + + u16 valueHi = 0; + u16 valueLow = 0; + + switch(pHalData->OutEpQueueSel) + { + case (TX_SELE_HQ | TX_SELE_LQ): + valueHi = QUEUE_HIGH; + valueLow = QUEUE_LOW; + break; + case (TX_SELE_NQ | TX_SELE_LQ): + valueHi = QUEUE_NORMAL; + valueLow = QUEUE_LOW; + break; + case (TX_SELE_HQ | TX_SELE_NQ): + valueHi = QUEUE_HIGH; + valueLow = QUEUE_NORMAL; + break; + default: + //RT_ASSERT(FALSE,("Shall not reach here!\n")); + break; + } + + if(!pregistrypriv->wifi_spec ){ + beQ = valueLow; + bkQ = valueLow; + viQ = valueHi; + voQ = valueHi; + mgtQ = valueHi; + hiQ = valueHi; + } + else{//for WMM ,CONFIG_OUT_EP_WIFI_MODE + beQ = valueLow; + bkQ = valueHi; + viQ = valueHi; + voQ = valueLow; + mgtQ = valueHi; + hiQ = valueHi; + } + + _InitNormalChipRegPriority(Adapter,beQ,bkQ,viQ,voQ,mgtQ,hiQ); + +} + +static VOID +_InitNormalChipThreeOutEpPriority( + IN PADAPTER Adapter + ) +{ + struct registry_priv *pregistrypriv = &Adapter->registrypriv; + u16 beQ,bkQ,viQ,voQ,mgtQ,hiQ; + + if(!pregistrypriv->wifi_spec ){// typical setting + beQ = QUEUE_LOW; + bkQ = QUEUE_LOW; + viQ = QUEUE_NORMAL; + voQ = QUEUE_HIGH; + mgtQ = QUEUE_HIGH; + hiQ = QUEUE_HIGH; + } + else{// for WMM + beQ = QUEUE_LOW; + bkQ = QUEUE_NORMAL; + viQ = QUEUE_NORMAL; + voQ = QUEUE_HIGH; + mgtQ = QUEUE_HIGH; + hiQ = QUEUE_HIGH; + } + _InitNormalChipRegPriority(Adapter,beQ,bkQ,viQ,voQ,mgtQ,hiQ); +} + +static VOID +_InitNormalChipQueuePriority( + IN PADAPTER Adapter + ) +{ + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); + + switch(pHalData->OutEpNumber) + { + case 1: + _InitNormalChipOneOutEpPriority(Adapter); + break; + case 2: + _InitNormalChipTwoOutEpPriority(Adapter); + break; + case 3: + _InitNormalChipThreeOutEpPriority(Adapter); + break; + default: + //RT_ASSERT(FALSE,("Shall not reach here!\n")); + break; + } + + +} + +static VOID +_InitQueuePriority( + IN PADAPTER Adapter + ) +{ + _InitNormalChipQueuePriority(Adapter); +} + +static VOID +_InitHardwareDropIncorrectBulkOut( + IN PADAPTER Adapter + ) +{ + u32 value32 = rtw_read32(Adapter, REG_TXDMA_OFFSET_CHK); + value32 |= DROP_DATA_EN; + rtw_write32(Adapter, REG_TXDMA_OFFSET_CHK, value32); +} + +static VOID +_InitNetworkType( + IN PADAPTER Adapter + ) +{ + u32 value32; + + value32 = rtw_read32(Adapter, REG_CR); + + // TODO: use the other function to set network type +#if RTL8191C_FPGA_NETWORKTYPE_ADHOC + value32 = (value32 & ~MASK_NETTYPE) | _NETTYPE(NT_LINK_AD_HOC); +#else + value32 = (value32 & ~MASK_NETTYPE) | _NETTYPE(NT_LINK_AP); +#endif + rtw_write32(Adapter, REG_CR, value32); +// RASSERT(pIoBase->rtw_read8(REG_CR + 2) == 0x2); +} + +static VOID +_InitTransferPageSize( + IN PADAPTER Adapter + ) +{ + // Tx page size is always 128. + + u8 value8; + value8 = _PSRX(PBP_128) | _PSTX(PBP_128); + rtw_write8(Adapter, REG_PBP, value8); +} + +static VOID +_InitDriverInfoSize( + IN PADAPTER Adapter, + IN u8 drvInfoSize + ) +{ + rtw_write8(Adapter,REG_RX_DRVINFO_SZ, drvInfoSize); +} + +static VOID +_InitWMACSetting( + IN PADAPTER Adapter + ) +{ + //u4Byte value32; + //u16 value16; + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); + + //pHalData->ReceiveConfig = AAP | APM | AM | AB | APP_ICV | ADF | AMF | APP_FCS | HTC_LOC_CTRL | APP_MIC | APP_PHYSTS; + //pHalData->ReceiveConfig = RCR_AAP | RCR_APM | RCR_AM | RCR_AB |RCR_CBSSID_DATA| RCR_CBSSID_BCN| RCR_APP_ICV | RCR_AMF | RCR_HTC_LOC_CTRL | RCR_APP_MIC | RCR_APP_PHYSTS; + // don't turn on AAP, it will allow all packets to driver + pHalData->ReceiveConfig = RCR_APM | RCR_AM | RCR_AB |RCR_CBSSID_DATA| RCR_CBSSID_BCN| RCR_APP_ICV | RCR_AMF | RCR_HTC_LOC_CTRL | RCR_APP_MIC | RCR_APP_PHYSTS; + +#if (0 == RTL8192C_RX_PACKET_NO_INCLUDE_CRC) + pHalData->ReceiveConfig |= ACRC32; +#endif + + // some REG_RCR will be modified later by phy_ConfigMACWithHeaderFile() + rtw_write32(Adapter, REG_RCR, pHalData->ReceiveConfig); + + // Accept all multicast address + rtw_write32(Adapter, REG_MAR, 0xFFFFFFFF); + rtw_write32(Adapter, REG_MAR + 4, 0xFFFFFFFF); + + + // Accept all data frames + //value16 = 0xFFFF; + //rtw_write16(Adapter, REG_RXFLTMAP2, value16); + + // 2010.09.08 hpfan + // Since ADF is removed from RCR, ps-poll will not be indicate to driver, + // RxFilterMap should mask ps-poll to gurantee AP mode can rx ps-poll. + //value16 = 0x400; + //rtw_write16(Adapter, REG_RXFLTMAP1, value16); + + // Accept all management frames + //value16 = 0xFFFF; + //rtw_write16(Adapter, REG_RXFLTMAP0, value16); + + //enable RX_SHIFT bits + //rtw_write8(Adapter, REG_TRXDMA_CTRL, rtw_read8(Adapter, REG_TRXDMA_CTRL)|BIT(1)); + +} + +static VOID +_InitAdaptiveCtrl( + IN PADAPTER Adapter + ) +{ + u16 value16; + u32 value32; + + // Response Rate Set + value32 = rtw_read32(Adapter, REG_RRSR); + value32 &= ~RATE_BITMAP_ALL; + value32 |= RATE_RRSR_CCK_ONLY_1M; + rtw_write32(Adapter, REG_RRSR, value32); + + // CF-END Threshold + //m_spIoBase->rtw_write8(REG_CFEND_TH, 0x1); + + // SIFS (used in NAV) + value16 = _SPEC_SIFS_CCK(0x10) | _SPEC_SIFS_OFDM(0x10); + rtw_write16(Adapter, REG_SPEC_SIFS, value16); + + // Retry Limit + value16 = _LRL(0x30) | _SRL(0x30); + rtw_write16(Adapter, REG_RL, value16); + +} + +static VOID +_InitRateFallback( + IN PADAPTER Adapter + ) +{ + // Set Data Auto Rate Fallback Retry Count register. + rtw_write32(Adapter, REG_DARFRC, 0x00000000); + rtw_write32(Adapter, REG_DARFRC+4, 0x10080404); + rtw_write32(Adapter, REG_RARFRC, 0x04030201); + rtw_write32(Adapter, REG_RARFRC+4, 0x08070605); + +} + + +static VOID +_InitEDCA( + IN PADAPTER Adapter + ) +{ + // Set Spec SIFS (used in NAV) + rtw_write16(Adapter,REG_SPEC_SIFS, 0x100a); + rtw_write16(Adapter,REG_MAC_SPEC_SIFS, 0x100a); + + //REG514:SIFS_CCK_CTX + //REG515:SIFS_OFDM_CTX + //REG516:SIFS_CCK_TRX + //REG517:SIFS_OFDM_TRX + + // Set SIFS for CCK_CTS and OFDM_CTX + rtw_write16(Adapter,REG_SIFS_CTX, 0x100a); + + // Set SIFS for CCK_TRX and OFDM_TRX + rtw_write16(Adapter,REG_SIFS_TRX, 0x100a); + + // TXOP + rtw_write32(Adapter, REG_EDCA_BE_PARAM, 0x005EA42B); + rtw_write32(Adapter, REG_EDCA_BK_PARAM, 0x0000A44F); + rtw_write32(Adapter, REG_EDCA_VI_PARAM, 0x005EA324); + rtw_write32(Adapter, REG_EDCA_VO_PARAM, 0x002FA226); +} + + +static VOID +_InitBeaconMaxError( + IN PADAPTER Adapter, + IN BOOLEAN InfraMode + ) +{ +#ifdef RTL8192CU_ADHOC_WORKAROUND_SETTING + rtw_write8(Adapter, REG_BCN_MAX_ERR, 0xFF); +#else + //rtw_write8(Adapter, REG_BCN_MAX_ERR, (InfraMode ? 0xFF : 0x10)); +#endif +} + + +#ifdef CONFIG_LED +static void _InitHWLed(PADAPTER Adapter) +{ + struct led_priv *pledpriv = &(Adapter->ledpriv); + + if( pledpriv->LedStrategy != HW_LED) + return; + +// HW led control +// to do .... +//must consider cases of antenna diversity/ commbo card/solo card/mini card + +} +#endif //CONFIG_LED + +static VOID +_InitRDGSetting( + IN PADAPTER Adapter + ) +{ + rtw_write8(Adapter,REG_RD_CTRL,0xFF); + rtw_write16(Adapter, REG_RD_NAV_NXT, 0x200); + rtw_write8(Adapter,REG_RD_RESP_PKT_TH,0x05); +} + +static VOID +_InitRxSetting( + IN PADAPTER Adapter + ) +{ + rtw_write32(Adapter, REG_MACID, 0x87654321); + rtw_write32(Adapter, 0x0700, 0x87654321); +} + +static VOID +_InitRetryFunction( + IN PADAPTER Adapter + ) +{ + u8 value8; + + value8 = rtw_read8(Adapter, REG_FWHW_TXQ_CTRL); + value8 |= EN_AMPDU_RTY_NEW; + rtw_write8(Adapter, REG_FWHW_TXQ_CTRL, value8); + + // Set ACK timeout + rtw_write8(Adapter, REG_ACKTO, 0x40); +} + +/*----------------------------------------------------------------------------- + * Function: usb_AggSettingTxUpdate() + * + * Overview: Seperate TX/RX parameters update independent for TP detection and + * dynamic TX/RX aggreagtion parameters update. + * + * Input: PADAPTER + * + * Output/Return: NONE + * + * Revised History: + * When Who Remark + * 12/10/2010 MHC Seperate to smaller function. + * + *---------------------------------------------------------------------------*/ +static VOID +usb_AggSettingTxUpdate( + IN PADAPTER Adapter + ) +{ +#ifdef CONFIG_USB_TX_AGGREGATION + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); + //PMGNT_INFO pMgntInfo = &(Adapter->MgntInfo); + u32 value32; + + if(Adapter->registrypriv.wifi_spec) + pHalData->UsbTxAggMode = _FALSE; + + if(pHalData->UsbTxAggMode){ + value32 = rtw_read32(Adapter, REG_TDECTRL); + value32 = value32 & ~(BLK_DESC_NUM_MASK << BLK_DESC_NUM_SHIFT); + value32 |= ((pHalData->UsbTxAggDescNum & BLK_DESC_NUM_MASK) << BLK_DESC_NUM_SHIFT); + + rtw_write32(Adapter, REG_TDECTRL, value32); + } + +#endif +} // usb_AggSettingTxUpdate + + +/*----------------------------------------------------------------------------- + * Function: usb_AggSettingRxUpdate() + * + * Overview: Seperate TX/RX parameters update independent for TP detection and + * dynamic TX/RX aggreagtion parameters update. + * + * Input: PADAPTER + * + * Output/Return: NONE + * + * Revised History: + * When Who Remark + * 12/10/2010 MHC Seperate to smaller function. + * + *---------------------------------------------------------------------------*/ +static VOID +usb_AggSettingRxUpdate( + IN PADAPTER Adapter + ) +{ +#ifdef CONFIG_USB_RX_AGGREGATION + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); + //PMGNT_INFO pMgntInfo = &(Adapter->MgntInfo); + u8 valueDMA; + u8 valueUSB; + + valueDMA = rtw_read8(Adapter, REG_TRXDMA_CTRL); + valueUSB = rtw_read8(Adapter, REG_USB_SPECIAL_OPTION); + + switch(pHalData->UsbRxAggMode) + { + case USB_RX_AGG_DMA: + valueDMA |= RXDMA_AGG_EN; + valueUSB &= ~USB_AGG_EN; + break; + case USB_RX_AGG_USB: + valueDMA &= ~RXDMA_AGG_EN; + valueUSB |= USB_AGG_EN; + break; + case USB_RX_AGG_MIX: + valueDMA |= RXDMA_AGG_EN; + valueUSB |= USB_AGG_EN; + break; + case USB_RX_AGG_DISABLE: + default: + valueDMA &= ~RXDMA_AGG_EN; + valueUSB &= ~USB_AGG_EN; + break; + } + + rtw_write8(Adapter, REG_TRXDMA_CTRL, valueDMA); + rtw_write8(Adapter, REG_USB_SPECIAL_OPTION, valueUSB); + + switch(pHalData->UsbRxAggMode) + { + case USB_RX_AGG_DMA: + rtw_write8(Adapter, REG_RXDMA_AGG_PG_TH, pHalData->UsbRxAggPageCount); + rtw_write8(Adapter, REG_USB_DMA_AGG_TO, pHalData->UsbRxAggPageTimeout); + break; + case USB_RX_AGG_USB: + rtw_write8(Adapter, REG_USB_AGG_TH, pHalData->UsbRxAggBlockCount); + rtw_write8(Adapter, REG_USB_AGG_TO, pHalData->UsbRxAggBlockTimeout); + break; + case USB_RX_AGG_MIX: + rtw_write8(Adapter, REG_RXDMA_AGG_PG_TH, pHalData->UsbRxAggPageCount); + rtw_write8(Adapter, REG_USB_DMA_AGG_TO, pHalData->UsbRxAggPageTimeout); + rtw_write8(Adapter, REG_USB_AGG_TH, pHalData->UsbRxAggBlockCount); + rtw_write8(Adapter, REG_USB_AGG_TO, pHalData->UsbRxAggBlockTimeout); + break; + case USB_RX_AGG_DISABLE: + default: + // TODO: + break; + } + + switch(PBP_128) + { + case PBP_128: + pHalData->HwRxPageSize = 128; + break; + case PBP_64: + pHalData->HwRxPageSize = 64; + break; + case PBP_256: + pHalData->HwRxPageSize = 256; + break; + case PBP_512: + pHalData->HwRxPageSize = 512; + break; + case PBP_1024: + pHalData->HwRxPageSize = 1024; + break; + default: + //RT_ASSERT(FALSE, ("RX_PAGE_SIZE_REG_VALUE definition is incorrect!\n")); + break; + } +#endif +} // usb_AggSettingRxUpdate + +static VOID +InitUsbAggregationSetting( + IN PADAPTER Adapter + ) +{ + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); + + // Tx aggregation setting + usb_AggSettingTxUpdate(Adapter); + + // Rx aggregation setting + usb_AggSettingRxUpdate(Adapter); + + // 201/12/10 MH Add for USB agg mode dynamic switch. + pHalData->UsbRxHighSpeedMode = _FALSE; +} + +/*----------------------------------------------------------------------------- + * Function: USB_AggModeSwitch() + * + * Overview: When RX traffic is more than 40M, we need to adjust some parameters to increase + * RX speed by increasing batch indication size. This will decrease TCP ACK speed, we + * need to monitor the influence of FTP/network share. + * For TX mode, we are still ubder investigation. + * + * Input: PADAPTER + * + * Output: NONE + * + * Return: NONE + * + * Revised History: + * When Who Remark + * 12/10/2010 MHC Create Version 0. + * + *---------------------------------------------------------------------------*/ +VOID +USB_AggModeSwitch( + IN PADAPTER Adapter + ) +{ +#if 0 + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); + struct mlme_priv *pmlmepriv = &(Adapter->mlmepriv); + + //pHalData->UsbRxHighSpeedMode = FALSE; + // How to measure the RX speed? We assume that when traffic is more than + if (pMgntInfo->bRegAggDMEnable == _FALSE) + { + return; // Inf not support. + } + + + if (pmlmepriv->LinkDetectInfo.bHigherBusyTraffic == _TRUE && + pHalData->UsbRxHighSpeedMode == _FALSE) + { + pHalData->UsbRxHighSpeedMode = _TRUE; + DBG_8192C("UsbAggModeSwitchCheck to HIGH\n"); + } + else if (pmlmepriv->LinkDetectInfo.bHigherBusyTraffic == _FALSE && + pHalData->UsbRxHighSpeedMode == _TRUE) + { + pHalData->UsbRxHighSpeedMode = _FALSE; + DBG_8192C("UsbAggModeSwitchCheck to LOW\n"); + } + else + { + return; + } + + // 2010/12/10 MH Add for USB Aggregation judgement we need to + //if( pMgntInfo->LinkDetectInfo.NumRxOkInPeriod > 4000 || + // pMgntInfo->LinkDetectInfo.NumTxOkInPeriod > 4000 ) + +#ifdef CONFIG_USB_TX_AGGREGATION + //usb_AggSettingTxUpdate(Adapter); +#endif + +#ifdef CONFIG_USB_RX_AGGREGATION + if (pHalData->UsbRxHighSpeedMode == _TRUE) + { + // 2010/12/10 MH The parameter is tested by SD1 engineer and SD3 channel emulator. + // USB mode + pHalData->UsbRxAggBlockCount = 40; + pHalData->UsbRxAggBlockTimeout = 5; + // Mix mode + pHalData->UsbRxAggPageCount = 72; + pHalData->UsbRxAggPageTimeout = 6; + } + else + { + // USB mode + pHalData->UsbRxAggBlockCount = pMgntInfo->RegUsbRxAggBlockCount; + pHalData->UsbRxAggBlockTimeout = pMgntInfo->RegUsbRxAggBlockTimeout; + // Mix mode + pHalData->UsbRxAggPageCount = pMgntInfo->RegUsbRxAggPageCount; + pHalData->UsbRxAggPageTimeout = pMgntInfo->RegUsbRxAggPageTimeout; + } +#endif +#endif +} // USB_AggModeSwitch + +static VOID +_InitOperationMode( + IN PADAPTER Adapter + ) +{ +#if 0//gtest + PHAL_DATA_8192CUSB pHalData = GetHalData8192CUsb(Adapter); + u1Byte regBwOpMode = 0; + u4Byte regRATR = 0, regRRSR = 0; + + + //1 This part need to modified according to the rate set we filtered!! + // + // Set RRSR, RATR, and REG_BWOPMODE registers + // + switch(Adapter->RegWirelessMode) + { + case WIRELESS_MODE_B: + regBwOpMode = BW_OPMODE_20MHZ; + regRATR = RATE_ALL_CCK; + regRRSR = RATE_ALL_CCK; + break; + case WIRELESS_MODE_A: + ASSERT(FALSE); +#if 0 + regBwOpMode = BW_OPMODE_5G |BW_OPMODE_20MHZ; + regRATR = RATE_ALL_OFDM_AG; + regRRSR = RATE_ALL_OFDM_AG; +#endif + break; + case WIRELESS_MODE_G: + regBwOpMode = BW_OPMODE_20MHZ; + regRATR = RATE_ALL_CCK | RATE_ALL_OFDM_AG; + regRRSR = RATE_ALL_CCK | RATE_ALL_OFDM_AG; + break; + case WIRELESS_MODE_AUTO: + if (Adapter->bInHctTest) + { + regBwOpMode = BW_OPMODE_20MHZ; + regRATR = RATE_ALL_CCK | RATE_ALL_OFDM_AG; + regRRSR = RATE_ALL_CCK | RATE_ALL_OFDM_AG; + } + else + { + regBwOpMode = BW_OPMODE_20MHZ; + regRATR = RATE_ALL_CCK | RATE_ALL_OFDM_AG | RATE_ALL_OFDM_1SS | RATE_ALL_OFDM_2SS; + regRRSR = RATE_ALL_CCK | RATE_ALL_OFDM_AG; + } + break; + case WIRELESS_MODE_N_24G: + // It support CCK rate by default. + // CCK rate will be filtered out only when associated AP does not support it. + regBwOpMode = BW_OPMODE_20MHZ; + regRATR = RATE_ALL_CCK | RATE_ALL_OFDM_AG | RATE_ALL_OFDM_1SS | RATE_ALL_OFDM_2SS; + regRRSR = RATE_ALL_CCK | RATE_ALL_OFDM_AG; + break; + case WIRELESS_MODE_N_5G: + ASSERT(FALSE); +#if 0 + regBwOpMode = BW_OPMODE_5G; + regRATR = RATE_ALL_OFDM_AG | RATE_ALL_OFDM_1SS | RATE_ALL_OFDM_2SS; + regRRSR = RATE_ALL_OFDM_AG; +#endif + break; + } + + // Ziv ???????? + //PlatformEFIOWrite4Byte(Adapter, REG_INIRTS_RATE_SEL, regRRSR); + PlatformEFIOWrite1Byte(Adapter, REG_BWOPMODE, regBwOpMode); + + // For Min Spacing configuration. + switch(pHalData->RF_Type) + { + case RF_1T2R: + case RF_1T1R: + RT_TRACE(COMP_INIT, DBG_LOUD, ("Initializeadapter: RF_Type%s\n", (pHalData->RF_Type==RF_1T1R? "(1T1R)":"(1T2R)"))); + Adapter->MgntInfo.MinSpaceCfg = (MAX_MSS_DENSITY_1T<<3); + break; + case RF_2T2R: + case RF_2T2R_GREEN: + RT_TRACE(COMP_INIT, DBG_LOUD, ("Initializeadapter:RF_Type(2T2R)\n")); + Adapter->MgntInfo.MinSpaceCfg = (MAX_MSS_DENSITY_2T<<3); + break; + } + + PlatformEFIOWrite1Byte(Adapter, REG_AMPDU_MIN_SPACE, Adapter->MgntInfo.MinSpaceCfg); +#endif +} + + + static VOID +_InitBeaconParameters( + IN PADAPTER Adapter + ) +{ + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); + + rtw_write16(Adapter, REG_BCN_CTRL, 0x1010); + + // TODO: Remove these magic number + rtw_write16(Adapter, REG_TBTT_PROHIBIT,0x6404);// ms + + rtw_write8(Adapter, REG_DRVERLYINT, DRIVER_EARLY_INT_TIME);// 5ms + rtw_write8(Adapter, REG_BCNDMATIM, BCN_DMA_ATIME_INT_TIME); // 2ms + + // Suggested by designer timchen. Change beacon AIFS to the largest number + // beacause test chip does not contension before sending beacon. by tynli. 2009.11.03 + rtw_write16(Adapter, REG_BCNTCFG, 0x660F); +} + +static VOID +_InitRFType( + IN PADAPTER Adapter + ) +{ + struct registry_priv *pregpriv = &Adapter->registrypriv; + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); + BOOLEAN is92CU = IS_92C_SERIAL(pHalData->VersionID); + +#if DISABLE_BB_RF + pHalData->rf_chip = RF_PSEUDO_11N; + return; +#endif + + pHalData->rf_chip = RF_6052; + + if(_FALSE == is92CU){ + pHalData->rf_type = RF_1T1R; + DBG_8192C("Set RF Chip ID to RF_6052 and RF type to 1T1R.\n"); + return; + } + + // TODO: Consider that EEPROM set 92CU to 1T1R later. + // Force to overwrite setting according to chip version. Ignore EEPROM setting. + //pHalData->RF_Type = is92CU ? RF_2T2R : RF_1T1R; + MSG_8192C("Set RF Chip ID to RF_6052 and RF type to %d.\n", pHalData->rf_type); + +} + +static VOID _InitAdhocWorkaroundParams(IN PADAPTER Adapter) +{ +#if RTL8192CU_ADHOC_WORKAROUND_SETTING + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); + pHalData->RegBcnCtrlVal = rtw_read8(Adapter, REG_BCN_CTRL); + pHalData->RegTxPause = rtw_read8(Adapter, REG_TXPAUSE); + pHalData->RegFwHwTxQCtrl = rtw_read8(Adapter, REG_FWHW_TXQ_CTRL+2); + pHalData->RegReg542 = rtw_read8(Adapter, REG_TBTT_PROHIBIT+2); +#endif +} + +static VOID +_BeaconFunctionEnable( + IN PADAPTER Adapter, + IN BOOLEAN Enable, + IN BOOLEAN Linked + ) +{ + rtw_write8(Adapter, REG_BCN_CTRL, (BIT4 | BIT3 | BIT1)); + //SetBcnCtrlReg(Adapter, (BIT4 | BIT3 | BIT1), 0x00); + //RT_TRACE(COMP_BEACON, DBG_LOUD, ("_BeaconFunctionEnable 0x550 0x%x\n", PlatformEFIORead1Byte(Adapter, 0x550))); + + rtw_write8(Adapter, REG_RD_CTRL+1, 0x6F); +} + + +// Set CCK and OFDM Block "ON" +static VOID _BBTurnOnBlock( + IN PADAPTER Adapter + ) +{ +#if (DISABLE_BB_RF) + return; +#endif + + PHY_SetBBReg(Adapter, rFPGA0_RFMOD, bCCKEn, 0x1); + PHY_SetBBReg(Adapter, rFPGA0_RFMOD, bOFDMEn, 0x1); +} + +static VOID _RfPowerSave( + IN PADAPTER Adapter + ) +{ +#if 0 + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); + PMGNT_INFO pMgntInfo = &(Adapter->MgntInfo); + u1Byte eRFPath; + +#if (DISABLE_BB_RF) + return; +#endif + + if(pMgntInfo->RegRfOff == TRUE){ // User disable RF via registry. + RT_TRACE((COMP_INIT|COMP_RF), DBG_LOUD, ("InitializeAdapter8192CUsb(): Turn off RF for RegRfOff.\n")); + MgntActSet_RF_State(Adapter, eRfOff, RF_CHANGE_BY_SW); + // Those action will be discard in MgntActSet_RF_State because off the same state + for(eRFPath = 0; eRFPath NumTotalRFPath; eRFPath++) + PHY_SetRFReg(Adapter, (RF_RADIO_PATH_E)eRFPath, 0x4, 0xC00, 0x0); + } + else if(pMgntInfo->RfOffReason > RF_CHANGE_BY_PS){ // H/W or S/W RF OFF before sleep. + RT_TRACE((COMP_INIT|COMP_RF), DBG_LOUD, ("InitializeAdapter8192CUsb(): Turn off RF for RfOffReason(%ld).\n", pMgntInfo->RfOffReason)); + MgntActSet_RF_State(Adapter, eRfOff, pMgntInfo->RfOffReason); + } + else{ + pHalData->eRFPowerState = eRfOn; + pMgntInfo->RfOffReason = 0; + if(Adapter->bInSetPower || Adapter->bResetInProgress) + PlatformUsbEnableInPipes(Adapter); + RT_TRACE((COMP_INIT|COMP_RF), DBG_LOUD, ("InitializeAdapter8192CUsb(): RF is on.\n")); + } +#endif +} + +enum { + Antenna_Lfet = 1, + Antenna_Right = 2, +}; + +static VOID +_InitAntenna_Selection(IN PADAPTER Adapter) +{ + + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); + + if(pHalData->AntDivCfg==0) + return; + DBG_8192C("==> %s ....\n",__FUNCTION__); + + if((RF_1T1R == pHalData->rf_type)) + { + rtw_write32(Adapter, REG_LEDCFG0, rtw_read32(Adapter, REG_LEDCFG0)|BIT23); + PHY_SetBBReg(Adapter, rFPGA0_XAB_RFParameter, BIT13, 0x01); + + if(PHY_QueryBBReg(Adapter, rFPGA0_XA_RFInterfaceOE, 0x300) == Antenna_A) + pHalData->CurAntenna = Antenna_A; + else + pHalData->CurAntenna = Antenna_B; + DBG_8192C("%s,Cur_ant:(%x)%s\n",__FUNCTION__,pHalData->CurAntenna,(pHalData->CurAntenna == Antenna_A)?"Antenna_A":"Antenna_B"); + +} + + +} +// +// 2010/08/09 MH Add for power down check. +// +static BOOLEAN +HalDetectPwrDownMode( + IN PADAPTER Adapter + ) +{ + u8 tmpvalue; + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); + struct pwrctrl_priv *pwrctrlpriv = &Adapter->pwrctrlpriv; + + EFUSE_ShadowRead(Adapter, 1, EEPROM_RF_OPT3, (u32 *)&tmpvalue); + + // 2010/08/25 MH INF priority > PDN Efuse value. + if(tmpvalue & BIT4 && pwrctrlpriv->reg_pdnmode) + { + pHalData->pwrdown = _TRUE; + } + else + { + pHalData->pwrdown = _FALSE; + } + + DBG_8192C("HalDetectPwrDownMode(): PDN=%d\n", pHalData->pwrdown); + return pHalData->pwrdown; + +} // HalDetectPwrDownMode + + +// +// 2010/08/26 MH Add for selective suspend mode check. +// If Efuse 0x0e bit1 is not enabled, we can not support selective suspend for Minicard and +// slim card. +// +static VOID +HalDetectSelectiveSuspendMode( + IN PADAPTER Adapter + ) +{ + u8 tmpvalue; + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); + struct dvobj_priv *pdvobjpriv = adapter_to_dvobj(Adapter); + + // If support HW radio detect, we need to enable WOL ability, otherwise, we + // can not use FW to notify host the power state switch. + + EFUSE_ShadowRead(Adapter, 1, EEPROM_USB_OPTIONAL1, (u32 *)&tmpvalue); + + DBG_8192C("HalDetectSelectiveSuspendMode(): SS "); + if(tmpvalue & BIT1) + { + DBG_8192C("Enable\n"); + } + else + { + DBG_8192C("Disable\n"); + pdvobjpriv->RegUsbSS = _FALSE; + } + + // 2010/09/01 MH According to Dongle Selective Suspend INF. We can switch SS mode. + if (pdvobjpriv->RegUsbSS && !SUPPORT_HW_RADIO_DETECT(pHalData)) + { + //PMGNT_INFO pMgntInfo = &(Adapter->MgntInfo); + + //if (!pMgntInfo->bRegDongleSS) + //{ + // RT_TRACE(COMP_INIT, DBG_LOUD, ("Dongle disable SS\n")); + pdvobjpriv->RegUsbSS = _FALSE; + //} + } +} // HalDetectSelectiveSuspendMode +/*----------------------------------------------------------------------------- + * Function: HwSuspendModeEnable92Cu() + * + * Overview: HW suspend mode switch. + * + * Input: NONE + * + * Output: NONE + * + * Return: NONE + * + * Revised History: + * When Who Remark + * 08/23/2010 MHC HW suspend mode switch test.. + *---------------------------------------------------------------------------*/ +static VOID +HwSuspendModeEnable92Cu( + IN PADAPTER pAdapter, + IN u8 Type + ) +{ + //PRT_USB_DEVICE pDevice = GET_RT_USB_DEVICE(pAdapter); + u16 reg = rtw_read16(pAdapter, REG_GPIO_MUXCFG); + + //if (!pDevice->RegUsbSS) + { + return; + } + + // + // 2010/08/23 MH According to Alfred's suggestion, we need to to prevent HW + // to enter suspend mode automatically. Otherwise, it will shut down major power + // domain and 8051 will stop. When we try to enter selective suspend mode, we + // need to prevent HW to enter D2 mode aumotmatically. Another way, Host will + // issue a S10 signal to power domain. Then it will cleat SIC setting(from Yngli). + // We need to enable HW suspend mode when enter S3/S4 or disable. We need + // to disable HW suspend mode for IPS/radio_off. + // + //RT_TRACE(COMP_RF, DBG_LOUD, ("HwSuspendModeEnable92Cu = %d\n", Type)); + if (Type == _FALSE) + { + reg |= BIT14; + //RT_TRACE(COMP_RF, DBG_LOUD, ("REG_GPIO_MUXCFG = %x\n", reg)); + rtw_write16(pAdapter, REG_GPIO_MUXCFG, reg); + reg |= BIT12; + //RT_TRACE(COMP_RF, DBG_LOUD, ("REG_GPIO_MUXCFG = %x\n", reg)); + rtw_write16(pAdapter, REG_GPIO_MUXCFG, reg); + } + else + { + reg &= (~BIT12); + rtw_write16(pAdapter, REG_GPIO_MUXCFG, reg); + reg &= (~BIT14); + rtw_write16(pAdapter, REG_GPIO_MUXCFG, reg); + } + +} // HwSuspendModeEnable92Cu +rt_rf_power_state RfOnOffDetect(IN PADAPTER pAdapter ) +{ + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(pAdapter); + u8 val8; + rt_rf_power_state rfpowerstate = rf_off; + + if(pAdapter->pwrctrlpriv.bHWPowerdown) + { + val8 = rtw_read8(pAdapter, REG_HSISR); + DBG_8192C("pwrdown, 0x5c(BIT7)=%02x\n", val8); + rfpowerstate = (val8 & BIT7) ? rf_off: rf_on; + } + else // rf on/off + { + rtw_write8( pAdapter, REG_MAC_PINMUX_CFG,rtw_read8(pAdapter, REG_MAC_PINMUX_CFG)&~(BIT3)); + val8 = rtw_read8(pAdapter, REG_GPIO_IO_SEL); + DBG_8192C("GPIO_IN=%02x\n", val8); + rfpowerstate = (val8 & BIT3) ? rf_on : rf_off; + } + return rfpowerstate; +} // HalDetectPwrDownMode + +void _ps_open_RF(_adapter *padapter); + + +u32 rtl8192cu_hal_init(PADAPTER Adapter) +{ + u8 val8 = 0; + u32 boundary, status = _SUCCESS; + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); + struct pwrctrl_priv *pwrctrlpriv = &Adapter->pwrctrlpriv; + struct registry_priv *pregistrypriv = &Adapter->registrypriv; + u8 is92C = IS_92C_SERIAL(pHalData->VersionID); + rt_rf_power_state eRfPowerStateToSet; +#ifdef CONFIG_BT_COEXIST + struct btcoexist_priv *pbtpriv = &(pHalData->bt_coexist); +#endif + + u32 init_start_time = rtw_get_current_time(); + + +#ifdef DBG_HAL_INIT_PROFILING + + enum HAL_INIT_STAGES { + HAL_INIT_STAGES_BEGIN = 0, + HAL_INIT_STAGES_INIT_PW_ON, + HAL_INIT_STAGES_MISC01, + HAL_INIT_STAGES_DOWNLOAD_FW, + HAL_INIT_STAGES_INIT_LLTT, + HAL_INIT_STAGES_MAC, + HAL_INIT_STAGES_MISC02, + HAL_INIT_STAGES_BB, + HAL_INIT_STAGES_RF, + HAL_INIT_STAGES_TURN_ON_BLOCK, + HAL_INIT_STAGES_INIT_SECURITY, + HAL_INIT_STAGES_MISC11, + //HAL_INIT_STAGES_RF_PS, + HAL_INIT_STAGES_IQK, + HAL_INIT_STAGES_PW_TRACK, + HAL_INIT_STAGES_LCK, + HAL_INIT_STAGES_MISC21, + HAL_INIT_STAGES_INIT_PABIAS, + HAL_INIT_STAGES_BT_COEXIST, + //HAL_INIT_STAGES_ANTENNA_SEL, + HAL_INIT_STAGES_INIT_HAL_DM, + HAL_INIT_STAGES_MISC31, + HAL_INIT_STAGES_END, + HAL_INIT_STAGES_NUM + }; + + char * hal_init_stages_str[] = { + "HAL_INIT_STAGES_BEGIN", + "HAL_INIT_STAGES_INIT_PW_ON", + "HAL_INIT_STAGES_MISC01", + "HAL_INIT_STAGES_DOWNLOAD_FW", + "HAL_INIT_STAGES_INIT_LLTT", + "HAL_INIT_STAGES_MAC", + "HAL_INIT_STAGES_MISC02", + "HAL_INIT_STAGES_BB", + "HAL_INIT_STAGES_RF", + "HAL_INIT_STAGES_TURN_ON_BLOCK", + "HAL_INIT_STAGES_INIT_SECURITY", + "HAL_INIT_STAGES_MISC11", + //"HAL_INIT_STAGES_RF_PS", + "HAL_INIT_STAGES_IQK", + "HAL_INIT_STAGES_PW_TRACK", + "HAL_INIT_STAGES_LCK", + "HAL_INIT_STAGES_MISC21", + "HAL_INIT_STAGES_INIT_PABIAS", + "HAL_INIT_STAGES_BT_COEXIST", + //"HAL_INIT_STAGES_ANTENNA_SEL", + "HAL_INIT_STAGES_INIT_HAL_DM", + "HAL_INIT_STAGES_MISC31", + "HAL_INIT_STAGES_END", + }; + + int hal_init_profiling_i; + u32 hal_init_stages_timestamp[HAL_INIT_STAGES_NUM]; //used to record the time of each stage's starting point + + for(hal_init_profiling_i=0;hal_init_profiling_ipwrctrlpriv.bkeepfwalive) + { + _ps_open_RF(Adapter); + + if(pHalData->bIQKInitialized ){ + rtl8192c_PHY_IQCalibrate(Adapter,_TRUE); + } + else{ + rtl8192c_PHY_IQCalibrate(Adapter,_FALSE); + pHalData->bIQKInitialized = _TRUE; + } + rtl8192c_dm_CheckTXPowerTracking(Adapter); + rtl8192c_PHY_LCCalibrate(Adapter); + + goto exit; + } + +HAL_INIT_PROFILE_TAG(HAL_INIT_STAGES_INIT_PW_ON); + status = _InitPowerOn(Adapter); + if(status == _FAIL){ + RT_TRACE(_module_hci_hal_init_c_, _drv_err_, ("Failed to init power on!\n")); + goto exit; + } + + +HAL_INIT_PROFILE_TAG(HAL_INIT_STAGES_MISC01); + _InitQueueReservedPage(Adapter); + _InitTxBufferBoundary(Adapter); + _InitQueuePriority(Adapter); + _InitPageBoundary(Adapter); + _InitTransferPageSize(Adapter); + + +#if ENABLE_USB_DROP_INCORRECT_OUT + _InitHardwareDropIncorrectBulkOut(Adapter); +#endif + + if(pHalData->bRDGEnable){ + _InitRDGSetting(Adapter); + } + +HAL_INIT_PROFILE_TAG(HAL_INIT_STAGES_DOWNLOAD_FW); +#if (1 == MP_DRIVER) + _InitRxSetting(Adapter); + // Don't Download Firmware + Adapter->bFWReady = _FALSE; +#elif RTL8192CU_FW_DOWNLOAD_ENABLE + status = FirmwareDownload92C(Adapter,_FALSE); + if(status != _SUCCESS) + { + Adapter->bFWReady = _FALSE; + pHalData->fw_ractrl = _FALSE; + DBG_8192C("fw download fail!\n"); + goto exit; + } + else + { + Adapter->bFWReady = _TRUE; + pHalData->fw_ractrl = _TRUE; + DBG_8192C("fw download ok!\n"); + } +#endif + + InitializeFirmwareVars92C(Adapter); + + if(pwrctrlpriv->reg_rfoff == _TRUE){ + pwrctrlpriv->rf_pwrstate = rf_off; + } + + // 2010/08/09 MH We need to check if we need to turnon or off RF after detecting + // HW GPIO pin. Before PHY_RFConfig8192C. + //HalDetectPwrDownMode(Adapter); + // 2010/08/26 MH If Efuse does not support sective suspend then disable the function. + //HalDetectSelectiveSuspendMode(Adapter); + + // Set RF type for BB/RF configuration + _InitRFType(Adapter);//->_ReadRFType() + + // Save target channel + // Current Channel will be updated again later. + pHalData->CurrentChannel = 6;//default set to 6 + +HAL_INIT_PROFILE_TAG(HAL_INIT_STAGES_INIT_LLTT); + if(!pregistrypriv->wifi_spec){ + boundary = TX_PAGE_BOUNDARY; + } + else{// for WMM + boundary = WMM_NORMAL_TX_PAGE_BOUNDARY; + } + status = InitLLTTable(Adapter, boundary); + if(status == _FAIL){ + RT_TRACE(_module_hci_hal_init_c_, _drv_err_, ("Failed to init LLT table\n")); + goto exit; + } + +HAL_INIT_PROFILE_TAG(HAL_INIT_STAGES_MAC); +#if (HAL_MAC_ENABLE == 1) + status = PHY_MACConfig8192C(Adapter); + if(status == _FAIL) + { + goto exit; + } +#endif + +HAL_INIT_PROFILE_TAG(HAL_INIT_STAGES_MISC02); + // Get Rx PHY status in order to report RSSI and others. + _InitDriverInfoSize(Adapter, DRVINFO_SZ); + + _InitInterrupt(Adapter); + hal_init_macaddr(Adapter);//set mac_address + _InitNetworkType(Adapter);//set msr + _InitWMACSetting(Adapter); + _InitAdaptiveCtrl(Adapter); + _InitEDCA(Adapter); + _InitRateFallback(Adapter); + _InitRetryFunction(Adapter); + InitUsbAggregationSetting(Adapter); + _InitOperationMode(Adapter);//todo + _InitBeaconParameters(Adapter); + _InitBeaconMaxError(Adapter, _TRUE); + +#if defined(CONFIG_CONCURRENT_MODE) || defined(CONFIG_TX_MCAST2UNI) + +#ifdef CONFIG_CHECK_AC_LIFETIME + // Enable lifetime check for the four ACs + rtw_write8(Adapter, REG_LIFETIME_EN, 0x0F); +#endif // CONFIG_CHECK_AC_LIFETIME + +#ifdef CONFIG_TX_MCAST2UNI + rtw_write16(Adapter, REG_PKT_VO_VI_LIFE_TIME, 0x0400); // unit: 256us. 256ms + rtw_write16(Adapter, REG_PKT_BE_BK_LIFE_TIME, 0x0400); // unit: 256us. 256ms +#else // CONFIG_TX_MCAST2UNI + rtw_write16(Adapter, REG_PKT_VO_VI_LIFE_TIME, 0x3000); // unit: 256us. 3s + rtw_write16(Adapter, REG_PKT_BE_BK_LIFE_TIME, 0x3000); // unit: 256us. 3s +#endif // CONFIG_TX_MCAST2UNI +#endif // CONFIG_CONCURRENT_MODE || CONFIG_TX_MCAST2UNI + + +#ifdef CONFIG_LED + _InitHWLed(Adapter); +#endif //CONFIG_LED + + // + //d. Initialize BB related configurations. + // + +HAL_INIT_PROFILE_TAG(HAL_INIT_STAGES_BB); +#if (HAL_BB_ENABLE == 1) + status = PHY_BBConfig8192C(Adapter); + if(status == _FAIL) + { + goto exit; + } +#endif + + // 92CU use 3-wire to r/w RF + //pHalData->Rf_Mode = RF_OP_By_SW_3wire; + +HAL_INIT_PROFILE_TAG(HAL_INIT_STAGES_RF); +#if (HAL_RF_ENABLE == 1) + status = PHY_RFConfig8192C(Adapter); + if(status == _FAIL) + { + goto exit; + } + + if(IS_VENDOR_UMC_A_CUT(pHalData->VersionID) && !IS_92C_SERIAL(pHalData->VersionID)) + { + PHY_SetRFReg(Adapter, RF_PATH_A, RF_RX_G1, bMaskDWord, 0x30255); + PHY_SetRFReg(Adapter, RF_PATH_A, RF_RX_G2, bMaskDWord, 0x50a00); + } +#endif + + // + // Joseph Note: Keep RfRegChnlVal for later use. + // + pHalData->RfRegChnlVal[0] = PHY_QueryRFReg(Adapter, (RF_RADIO_PATH_E)0, RF_CHNLBW, bRFRegOffsetMask); + pHalData->RfRegChnlVal[1] = PHY_QueryRFReg(Adapter, (RF_RADIO_PATH_E)1, RF_CHNLBW, bRFRegOffsetMask); + +HAL_INIT_PROFILE_TAG(HAL_INIT_STAGES_TURN_ON_BLOCK); + _BBTurnOnBlock(Adapter); + //NicIFSetMacAddress(padapter, padapter->PermanentAddress); + +HAL_INIT_PROFILE_TAG(HAL_INIT_STAGES_INIT_SECURITY); + invalidate_cam_all(Adapter); + +HAL_INIT_PROFILE_TAG(HAL_INIT_STAGES_MISC11); + // 2010/12/17 MH We need to set TX power according to EFUSE content at first. + PHY_SetTxPowerLevel8192C(Adapter, pHalData->CurrentChannel); + +// Move by Neo for USB SS to below setp +//_RfPowerSave(Adapter); + + if (!IS_92C_SERIAL( pHalData->VersionID) && (pHalData->AntDivCfg!=0)) + { //for 88CU ,1T1R + _InitAntenna_Selection(Adapter); + } + + + // + // Disable BAR, suggested by Scott + // 2010.04.09 add by hpfan + // + rtw_write32(Adapter, REG_BAR_MODE_CTRL, 0x0201ffff); + + // HW SEQ CTRL + //set 0x0 to 0xFF by tynli. Default enable HW SEQ NUM. + rtw_write8(Adapter,REG_HWSEQ_CTRL, 0xFF); + + if(pregistrypriv->wifi_spec) + rtw_write16(Adapter,REG_FAST_EDCA_CTRL ,0); + + //Nav limit , suggest by scott + rtw_write8(Adapter, 0x652, 0x0); + +#if (MP_DRIVER == 1) + Adapter->mppriv.channel = pHalData->CurrentChannel; + MPT_InitializeAdapter(Adapter, Adapter->mppriv.channel); +#else + // + // 2010/08/11 MH Merge from 8192SE for Minicard init. We need to confirm current radio status + // and then decide to enable RF or not.!!!??? For Selective suspend mode. We may not + // call init_adapter. May cause some problem?? + // + // Fix the bug that Hw/Sw radio off before S3/S4, the RF off action will not be executed + // in MgntActSet_RF_State() after wake up, because the value of pHalData->eRFPowerState + // is the same as eRfOff, we should change it to eRfOn after we config RF parameters. + // Added by tynli. 2010.03.30. + pwrctrlpriv->rf_pwrstate = rf_on; + +#if 0 //to do + RT_CLEAR_PS_LEVEL(pwrctrlpriv, RT_RF_OFF_LEVL_HALT_NIC); +#if 1 //Todo + // 20100326 Joseph: Copy from GPIOChangeRFWorkItemCallBack() function to check HW radio on/off. + // 20100329 Joseph: Revise and integrate the HW/SW radio off code in initialization. + + eRfPowerStateToSet = (rt_rf_power_state) RfOnOffDetect(Adapter); + pwrctrlpriv->rfoff_reason |= eRfPowerStateToSet==rf_on ? RF_CHANGE_BY_INIT : RF_CHANGE_BY_HW; + pwrctrlpriv->rfoff_reason |= (pwrctrlpriv->reg_rfoff) ? RF_CHANGE_BY_SW : 0; + + if(pwrctrlpriv->rfoff_reason&RF_CHANGE_BY_HW) + pwrctrlpriv->b_hw_radio_off = _TRUE; + + DBG_8192C("eRfPowerStateToSet=%d\n", eRfPowerStateToSet); + + if(pwrctrlpriv->reg_rfoff == _TRUE) + { // User disable RF via registry. + DBG_8192C("InitializeAdapter8192CU(): Turn off RF for RegRfOff.\n"); + //MgntActSet_RF_State(Adapter, rf_off, RF_CHANGE_BY_SW, _TRUE); + + // Those action will be discard in MgntActSet_RF_State because off the same state + //for(eRFPath = 0; eRFPath NumTotalRFPath; eRFPath++) + //PHY_SetRFReg(Adapter, (RF_RADIO_PATH_E)eRFPath, 0x4, 0xC00, 0x0); + } + else if(pwrctrlpriv->rfoff_reason > RF_CHANGE_BY_PS) + { // H/W or S/W RF OFF before sleep. + DBG_8192C(" Turn off RF for RfOffReason(%x) ----------\n", pwrctrlpriv->rfoff_reason); + //pwrctrlpriv->rfoff_reason = RF_CHANGE_BY_INIT; + pwrctrlpriv->rf_pwrstate = rf_on; + //MgntActSet_RF_State(Adapter, rf_off, pwrctrlpriv->rfoff_reason, _TRUE); + } + else + { + // Perform GPIO polling to find out current RF state. added by Roger, 2010.04.09. + if(pHalData->BoardType == BOARD_MINICARD /*&& (Adapter->MgntInfo.PowerSaveControl.bGpioRfSw)*/) + { + DBG_8192C("InitializeAdapter8192CU(): RF=%d \n", eRfPowerStateToSet); + if (eRfPowerStateToSet == rf_off) + { + //MgntActSet_RF_State(Adapter, rf_off, RF_CHANGE_BY_HW, _TRUE); + pwrctrlpriv->b_hw_radio_off = _TRUE; + } + else + { + pwrctrlpriv->rf_pwrstate = rf_off; + pwrctrlpriv->rfoff_reason = RF_CHANGE_BY_INIT; + pwrctrlpriv->b_hw_radio_off = _FALSE; + //MgntActSet_RF_State(Adapter, rf_on, pwrctrlpriv->rfoff_reason, _TRUE); + } + } + else + { + pwrctrlpriv->rf_pwrstate = rf_off; + pwrctrlpriv->rfoff_reason = RF_CHANGE_BY_INIT; + //MgntActSet_RF_State(Adapter, rf_on, pwrctrlpriv->rfoff_reason, _TRUE); + } + + pwrctrlpriv->rfoff_reason = 0; + pwrctrlpriv->b_hw_radio_off = _FALSE; + pwrctrlpriv->rf_pwrstate = rf_on; + rtw_led_control(Adapter, LED_CTL_POWER_ON); + + } + + // 2010/-8/09 MH For power down module, we need to enable register block contrl reg at 0x1c. + // Then enable power down control bit of register 0x04 BIT4 and BIT15 as 1. + if(pHalData->pwrdown && eRfPowerStateToSet == rf_off) + { + // Enable register area 0x0-0xc. + rtw_write8(Adapter, REG_RSV_CTRL, 0x0); + + // + // We should configure HW PDn source for WiFi ONLY, and then + // our HW will be set in power-down mode if PDn source from all functions are configured. + // 2010.10.06. + // + //if(IS_HARDWARE_TYPE_8723AU(Adapter)) + //{ + // u1bTmp = rtw_read8(Adapter, REG_MULTI_FUNC_CTRL); + // rtw_write8(Adapter, REG_MULTI_FUNC_CTRL, (u1bTmp|WL_HWPDN_EN)); + //} + //else + //{ + rtw_write16(Adapter, REG_APS_FSMCO, 0x8812); + //} + } + //DrvIFIndicateCurrentPhyStatus(Adapter); // 2010/08/17 MH Disable to prevent BSOD. +#endif +#endif + +HAL_INIT_PROFILE_TAG(HAL_INIT_STAGES_IQK); + // 2010/08/26 MH Merge from 8192CE. + if(pwrctrlpriv->rf_pwrstate == rf_on) + { + if(pHalData->bIQKInitialized ){ + rtl8192c_PHY_IQCalibrate(Adapter,_TRUE); + } + else + { + rtl8192c_PHY_IQCalibrate(Adapter,_FALSE); + pHalData->bIQKInitialized = _TRUE; + } + +HAL_INIT_PROFILE_TAG(HAL_INIT_STAGES_PW_TRACK); + rtl8192c_dm_CheckTXPowerTracking(Adapter); + +HAL_INIT_PROFILE_TAG(HAL_INIT_STAGES_LCK); + rtl8192c_PHY_LCCalibrate(Adapter); + } +#endif /* #if (MP_DRIVER == 1) */ + + +HAL_INIT_PROFILE_TAG(HAL_INIT_STAGES_MISC21); +#if RTL8192CU_ADHOC_WORKAROUND_SETTING + _InitAdhocWorkaroundParams(Adapter); +#endif + + +#ifdef USB_INTERFERENCE_ISSUE + //fixed USB interface interference issue + rtw_write8(Adapter, 0xfe40, 0xe0); + rtw_write8(Adapter, 0xfe41, 0x8d); + rtw_write8(Adapter, 0xfe42, 0x80); + rtw_write32(Adapter,0x20c,0xfd0320); +#if 1 + //2011/01/07 ,suggest by Johnny,for solved the problem that too many protocol error on USB bus + if(!IS_VENDOR_UMC_A_CUT(pHalData->VersionID) )//&& !IS_92C_SERIAL(pHalData->VersionID))// TSMC , 8188 + { + // 0xE6=0x94 + rtw_write8(Adapter, 0xFE40, 0xE6); + rtw_write8(Adapter, 0xFE41, 0x94); + rtw_write8(Adapter, 0xFE42, 0x80); + + // 0xE0=0x19 + rtw_write8(Adapter, 0xFE40, 0xE0); + rtw_write8(Adapter, 0xFE41, 0x19); + rtw_write8(Adapter, 0xFE42, 0x80); + + // 0xE5=0x91 + rtw_write8(Adapter, 0xFE40, 0xE5); + rtw_write8(Adapter, 0xFE41, 0x91); + rtw_write8(Adapter, 0xFE42, 0x80); + + // 0xE2=0x81 + rtw_write8(Adapter, 0xFE40, 0xE2); + rtw_write8(Adapter, 0xFE41, 0x81); + rtw_write8(Adapter, 0xFE42, 0x80); + + } + +#endif +#endif //USB_INTERFERENCE_ISSUE + +HAL_INIT_PROFILE_TAG(HAL_INIT_STAGES_INIT_PABIAS); + _InitPABias(Adapter); + +HAL_INIT_PROFILE_TAG(HAL_INIT_STAGES_BT_COEXIST); +#ifdef CONFIG_BT_COEXIST + _InitBTCoexist(Adapter); +#endif + +HAL_INIT_PROFILE_TAG(HAL_INIT_STAGES_INIT_HAL_DM); + rtl8192c_InitHalDm(Adapter); + + // 2010/08/23 MH According to Alfred's suggestion, we need to to prevent HW enter + // suspend mode automatically. + //HwSuspendModeEnable92Cu(Adapter, _FALSE); + +HAL_INIT_PROFILE_TAG(HAL_INIT_STAGES_MISC31); + rtw_write8(Adapter, 0x15, 0xe9);//suggest by Johnny for lower temperature + + rtw_write8(Adapter, 0xc87, 0x50);//suggest by Jackson for CCA + + //_dbg_dump_macreg(padapter); + + rtw_write16(Adapter, REG_BCN_CTRL, 0x1818); // For 2 PORT TSF SYNC + + + +#ifdef CONFIG_XMIT_ACK + //ack for xmit mgmt frames. + rtw_write32(Adapter, REG_FWHW_TXQ_CTRL, rtw_read32(Adapter, REG_FWHW_TXQ_CTRL)|BIT(12)); +#endif //CONFIG_XMIT_ACK + +exit: +HAL_INIT_PROFILE_TAG(HAL_INIT_STAGES_END); + + DBG_871X("%s in %dms\n", __FUNCTION__, rtw_get_passing_time_ms(init_start_time)); + + #ifdef DBG_HAL_INIT_PROFILING + hal_init_stages_timestamp[HAL_INIT_STAGES_END]=rtw_get_current_time(); + + for(hal_init_profiling_i=0;hal_init_profiling_irf_type == RF_2T2R) + PHY_SetBBReg(Adapter, rFPGA0_XAB_RFParameter, 0x380038, 1); + else + PHY_SetBBReg(Adapter, rFPGA0_XAB_RFParameter, 0x38, 1); + PHY_SetBBReg(Adapter, rOFDM0_TRxPathEnable, 0xf0, 1); + PHY_SetBBReg(Adapter, rFPGA0_RFMOD, BIT1, 0); + + //AFE + //DbgPrint("0x0e70 = %x\n", Adapter->PS_BBRegBackup[PSBBREG_AFE0]); + //PHY_SetBBReg(Adapter, 0x0e70, bMaskDWord ,Adapter->PS_BBRegBackup[PSBBREG_AFE0] ); + //PHY_SetBBReg(Adapter, 0x0e70, bMaskDWord ,0x631B25A0 ); + if (pHalData->rf_type == RF_2T2R) + PHY_SetBBReg(Adapter, rRx_Wait_CCA, bMaskDWord ,0x63DB25A0 ); + else if (pHalData->rf_type == RF_1T1R) + PHY_SetBBReg(Adapter, rRx_Wait_CCA, bMaskDWord ,0x631B25A0 ); + + // 4. issue 3-wire command that RF set to Rx idle mode. This is used to re-write the RX idle mode. + // We can only prvide a usual value instead and then HW will modify the value by itself. + PHY_SetRFReg(Adapter,RF_PATH_A, 0, bRFRegOffsetMask,0x32D95); + if (pHalData->rf_type == RF_2T2R) + { + PHY_SetRFReg(Adapter,RF_PATH_B, 0, bRFRegOffsetMask,0x32D95); + } + } + else // Level 2 or others. + { + //h. AFE_PLL_CTRL 0x28[7:0] = 0x80 //disable AFE PLL + rtw_write8(Adapter, REG_AFE_PLL_CTRL, 0x81); + + // i. AFE_XTAL_CTRL 0x24[15:0] = 0x880F //gated AFE DIG_CLOCK + rtw_write16(Adapter, REG_AFE_XTAL_CTRL, 0x800F); + rtw_mdelay_os(1); + + // 1. Enable MAC Clock. Can not be enabled now. + //WriteXBYTE(REG_SYS_CLKR+1, ReadXBYTE(REG_SYS_CLKR+1) | BIT(3)); + + // 2. Force PWM, Enable SPS18_LDO_Marco_Block + rtw_write8(Adapter, REG_SPS0_CTRL, + rtw_read8(Adapter, REG_SPS0_CTRL) | (BIT0|BIT3)); + + // 3. restore BB, AFE control register. + //RF + if (pHalData->rf_type == RF_2T2R) + PHY_SetBBReg(Adapter, rFPGA0_XAB_RFParameter, 0x380038, 1); + else + PHY_SetBBReg(Adapter, rFPGA0_XAB_RFParameter, 0x38, 1); + PHY_SetBBReg(Adapter, rOFDM0_TRxPathEnable, 0xf0, 1); + PHY_SetBBReg(Adapter, rFPGA0_RFMOD, BIT1, 0); + + //AFE + if (pHalData->rf_type == RF_2T2R) + PHY_SetBBReg(Adapter, rRx_Wait_CCA, bMaskDWord ,0x63DB25A0 ); + else if (pHalData->rf_type == RF_1T1R) + PHY_SetBBReg(Adapter, rRx_Wait_CCA, bMaskDWord ,0x631B25A0 ); + + // 4. issue 3-wire command that RF set to Rx idle mode. This is used to re-write the RX idle mode. + // We can only prvide a usual value instead and then HW will modify the value by itself. + PHY_SetRFReg(Adapter,RF_PATH_A, 0, bRFRegOffsetMask,0x32D95); + if (pHalData->rf_type == RF_2T2R) + { + PHY_SetRFReg(Adapter,RF_PATH_B, 0, bRFRegOffsetMask,0x32D95); + } + + // 5. gated MAC Clock + //WriteXBYTE(REG_SYS_CLKR+1, ReadXBYTE(REG_SYS_CLKR+1) & ~(BIT(3))); + //PlatformEFIOWrite1Byte(Adapter, REG_SYS_CLKR+1, PlatformEFIORead1Byte(Adapter, REG_SYS_CLKR+1)|(BIT3)); + + { + //u8 eRFPath = RF_PATH_A,value8 = 0, retry = 0; + u8 bytetmp; + //PHY_SetRFReg(Adapter, (RF_RADIO_PATH_E)eRFPath, 0x0, bMaskByte0, 0x0); + // 2010/08/12 MH Add for B path under SS test. + //if (pHalData->RF_Type == RF_2T2R) + //PHY_SetRFReg(Adapter, RF_PATH_B, 0x0, bMaskByte0, 0x0); + + bytetmp = rtw_read8(Adapter, REG_APSD_CTRL); + rtw_write8(Adapter, REG_APSD_CTRL, bytetmp & ~BIT6); + + rtw_mdelay_os(10); + + // Set BB reset at first + rtw_write8(Adapter, REG_SYS_FUNC_EN, 0x17 );//0x16 + //undo clock gated + rtw_write32(Adapter, rFPGA0_XCD_RFParameter, rtw_read32(Adapter, rFPGA0_XCD_RFParameter)&(~BIT31)); + // Enable TX + rtw_write8(Adapter, REG_TXPAUSE, 0x0); + } + //Adapter->HalFunc.InitializeAdapterHandler(Adapter, Adapter->MgntInfo.dot11CurrentChannelNumber); + //CardSelectiveSuspendLeave(Adapter); + } + + break; + + case rf_sleep: + case rf_off: + value8 = rtw_read8(Adapter, REG_SPS0_CTRL) ; + if (IS_81xxC_VENDOR_UMC_B_CUT(pHalData->VersionID)) + value8 &= ~(BIT0); + else + value8 &= ~(BIT0|BIT3); + if (bRegSSPwrLvl == 1) + { + //RT_TRACE(COMP_POWER, DBG_LOUD, ("SS LVL1\n")); + // Disable RF and BB only for SelectSuspend. + + // 1. Set BB/RF to shutdown. + // (1) Reg878[5:3]= 0 // RF rx_code for preamble power saving + // (2)Reg878[21:19]= 0 //Turn off RF-B + // (3) RegC04[7:4]= 0 // turn off all paths for packet detection + // (4) Reg800[1] = 1 // enable preamble power saving + Adapter->pwrctrlpriv.PS_BBRegBackup[PSBBREG_RF0] = PHY_QueryBBReg(Adapter, rFPGA0_XAB_RFParameter, bMaskDWord); + Adapter->pwrctrlpriv.PS_BBRegBackup[PSBBREG_RF1] = PHY_QueryBBReg(Adapter, rOFDM0_TRxPathEnable, bMaskDWord); + Adapter->pwrctrlpriv.PS_BBRegBackup[PSBBREG_RF2] = PHY_QueryBBReg(Adapter, rFPGA0_RFMOD, bMaskDWord); + if (pHalData->rf_type == RF_2T2R) + { + PHY_SetBBReg(Adapter, rFPGA0_XAB_RFParameter, 0x380038, 0); + } + else if (pHalData->rf_type == RF_1T1R) + { + PHY_SetBBReg(Adapter, rFPGA0_XAB_RFParameter, 0x38, 0); + } + PHY_SetBBReg(Adapter, rOFDM0_TRxPathEnable, 0xf0, 0); + PHY_SetBBReg(Adapter, rFPGA0_RFMOD, BIT1,1); + + // 2 .AFE control register to power down. bit[30:22] + Adapter->pwrctrlpriv.PS_BBRegBackup[PSBBREG_AFE0] = PHY_QueryBBReg(Adapter, rRx_Wait_CCA, bMaskDWord); + if (pHalData->rf_type == RF_2T2R) + PHY_SetBBReg(Adapter, rRx_Wait_CCA, bMaskDWord ,0x00DB25A0); + else if (pHalData->rf_type == RF_1T1R) + PHY_SetBBReg(Adapter, rRx_Wait_CCA, bMaskDWord ,0x001B25A0); + + // 3. issue 3-wire command that RF set to power down. + PHY_SetRFReg(Adapter,RF_PATH_A, 0, bRFRegOffsetMask,0); + if (pHalData->rf_type == RF_2T2R) + { + PHY_SetRFReg(Adapter,RF_PATH_B, 0, bRFRegOffsetMask,0); + } + + // 4. Force PFM , disable SPS18_LDO_Marco_Block + rtw_write8(Adapter, REG_SPS0_CTRL, value8); + + // 5. gated MAC Clock + //WriteXBYTE(REG_SYS_CLKR+1, ReadXBYTE(REG_SYS_CLKR+1) & ~(BIT(3))); + } + else // Level 2 or others. + { + //RT_TRACE(COMP_POWER, DBG_LOUD, ("SS LVL2\n")); + { + u8 eRFPath = RF_PATH_A,value8 = 0; + rtw_write8(Adapter, REG_TXPAUSE, 0xFF); + PHY_SetRFReg(Adapter, (RF_RADIO_PATH_E)eRFPath, 0x0, bMaskByte0, 0x0); + // 2010/08/12 MH Add for B path under SS test. + //if (pHalData->RF_Type == RF_2T2R) + //PHY_SetRFReg(Adapter, RF_PATH_B, 0x0, bMaskByte0, 0x0); + + value8 |= APSDOFF; + rtw_write8(Adapter, REG_APSD_CTRL, value8);//0x40 + + // After switch APSD, we need to delay for stability + rtw_mdelay_os(10); + //before BB reset should do clock gated + rtw_write32(Adapter, rFPGA0_XCD_RFParameter, rtw_read32(Adapter, rFPGA0_XCD_RFParameter)|(BIT31)); + // Set BB reset at first + value8 = 0 ; + value8 |=( FEN_USBD | FEN_USBA | FEN_BB_GLB_RSTn); + rtw_write8(Adapter, REG_SYS_FUNC_EN,value8 );//0x16 + } + + // Disable RF and BB only for SelectSuspend. + + // 1. Set BB/RF to shutdown. + // (1) Reg878[5:3]= 0 // RF rx_code for preamble power saving + // (2)Reg878[21:19]= 0 //Turn off RF-B + // (3) RegC04[7:4]= 0 // turn off all paths for packet detection + // (4) Reg800[1] = 1 // enable preamble power saving + Adapter->pwrctrlpriv.PS_BBRegBackup[PSBBREG_RF0] = PHY_QueryBBReg(Adapter, rFPGA0_XAB_RFParameter, bMaskDWord); + Adapter->pwrctrlpriv.PS_BBRegBackup[PSBBREG_RF1] = PHY_QueryBBReg(Adapter, rOFDM0_TRxPathEnable, bMaskDWord); + Adapter->pwrctrlpriv.PS_BBRegBackup[PSBBREG_RF2] = PHY_QueryBBReg(Adapter, rFPGA0_RFMOD, bMaskDWord); + if (pHalData->rf_type == RF_2T2R) + { + PHY_SetBBReg(Adapter, rFPGA0_XAB_RFParameter, 0x380038, 0); + } + else if (pHalData->rf_type == RF_1T1R) + { + PHY_SetBBReg(Adapter, rFPGA0_XAB_RFParameter, 0x38, 0); + } + PHY_SetBBReg(Adapter, rOFDM0_TRxPathEnable, 0xf0, 0); + PHY_SetBBReg(Adapter, rFPGA0_RFMOD, BIT1,1); + + // 2 .AFE control register to power down. bit[30:22] + Adapter->pwrctrlpriv.PS_BBRegBackup[PSBBREG_AFE0] = PHY_QueryBBReg(Adapter, rRx_Wait_CCA, bMaskDWord); + if (pHalData->rf_type == RF_2T2R) + PHY_SetBBReg(Adapter, rRx_Wait_CCA, bMaskDWord ,0x00DB25A0); + else if (pHalData->rf_type == RF_1T1R) + PHY_SetBBReg(Adapter, rRx_Wait_CCA, bMaskDWord ,0x001B25A0); + + // 3. issue 3-wire command that RF set to power down. + PHY_SetRFReg(Adapter,RF_PATH_A, 0, bRFRegOffsetMask,0); + if (pHalData->rf_type == RF_2T2R) + { + PHY_SetRFReg(Adapter,RF_PATH_B, 0, bRFRegOffsetMask,0); + } + + // 4. Force PFM , disable SPS18_LDO_Marco_Block + rtw_write8(Adapter, REG_SPS0_CTRL, value8); + + // 2010/10/13 MH/Isaachsu exchange sequence. + //h. AFE_PLL_CTRL 0x28[7:0] = 0x80 //disable AFE PLL + rtw_write8(Adapter, REG_AFE_PLL_CTRL, 0x80); + rtw_mdelay_os(1); + + // i. AFE_XTAL_CTRL 0x24[15:0] = 0x880F //gated AFE DIG_CLOCK + rtw_write16(Adapter, REG_AFE_XTAL_CTRL, 0xA80F); + + // 5. gated MAC Clock + //WriteXBYTE(REG_SYS_CLKR+1, ReadXBYTE(REG_SYS_CLKR+1) & ~(BIT(3))); + //PlatformEFIOWrite1Byte(Adapter, REG_SYS_CLKR+1, PlatformEFIORead1Byte(Adapter, REG_SYS_CLKR+1)& ~(BIT3)) + + //CardSelectiveSuspendEnter(Adapter); + } + + break; + + default: + break; + } + +} // phy_PowerSwitch92CU + +void _ps_open_RF(_adapter *padapter) { + //here call with bRegSSPwrLvl 1, bRegSSPwrLvl 2 needs to be verified + phy_SsPwrSwitch92CU(padapter, rf_on, 1); +} + +void _ps_close_RF(_adapter *padapter){ + //here call with bRegSSPwrLvl 1, bRegSSPwrLvl 2 needs to be verified + phy_SsPwrSwitch92CU(padapter, rf_off, 1); +} +#endif //SYNC_SD7_20110802_phy_SsPwrSwitch92CU + + + +static VOID +_DisableGPIO( + IN PADAPTER Adapter + ) +{ +/*************************************** +j. GPIO_PIN_CTRL 0x44[31:0]=0x000 // +k. Value = GPIO_PIN_CTRL[7:0] +l. GPIO_PIN_CTRL 0x44[31:0] = 0x00FF0000 | (value <<8); //write external PIN level +m. GPIO_MUXCFG 0x42 [15:0] = 0x0780 +n. LEDCFG 0x4C[15:0] = 0x8080 +***************************************/ + u8 value8; + u16 value16; + u32 value32; + + //1. Disable GPIO[7:0] + rtw_write16(Adapter, REG_GPIO_PIN_CTRL+2, 0x0000); + value32 = rtw_read32(Adapter, REG_GPIO_PIN_CTRL) & 0xFFFF00FF; + value8 = (u8) (value32&0x000000FF); + value32 |= ((value8<<8) | 0x00FF0000); + rtw_write32(Adapter, REG_GPIO_PIN_CTRL, value32); + + //2. Disable GPIO[10:8] + rtw_write8(Adapter, REG_GPIO_MUXCFG+3, 0x00); + value16 = rtw_read16(Adapter, REG_GPIO_MUXCFG+2) & 0xFF0F; + value8 = (u8) (value16&0x000F); + value16 |= ((value8<<4) | 0x0780); + rtw_write16(Adapter, REG_GPIO_MUXCFG+2, value16); + + //3. Disable LED0 & 1 + rtw_write16(Adapter, REG_LEDCFG0, 0x8080); + + //RT_TRACE(COMP_INIT, DBG_LOUD, ("======> Disable GPIO and LED.\n")); + +} //end of _DisableGPIO() + +static VOID +_ResetFWDownloadRegister( + IN PADAPTER Adapter + ) +{ + u32 value32; + + value32 = rtw_read32(Adapter, REG_MCUFWDL); + value32 &= ~(MCUFWDL_EN | MCUFWDL_RDY); + rtw_write32(Adapter, REG_MCUFWDL, value32); + //RT_TRACE(COMP_INIT, DBG_LOUD, ("Reset FW download register.\n")); +} + + +static int +_DisableRF_AFE( + IN PADAPTER Adapter + ) +{ + int rtStatus = _SUCCESS; + u32 pollingCount = 0; + u8 value8; + + //disable RF/ AFE AD/DA + value8 = APSDOFF; + rtw_write8(Adapter, REG_APSD_CTRL, value8); + + +#if (RTL8192CU_ASIC_VERIFICATION) + + do + { + if(rtw_read8(Adapter, REG_APSD_CTRL) & APSDOFF_STATUS){ + //RT_TRACE(COMP_INIT, DBG_LOUD, ("Disable RF, AFE, AD, DA Done!\n")); + break; + } + + if(pollingCount++ > POLLING_READY_TIMEOUT_COUNT){ + //RT_TRACE(COMP_INIT, DBG_SERIOUS, ("Failed to polling APSDOFF_STATUS done!\n")); + return _FAIL; + } + + }while(_TRUE); + +#endif + + //RT_TRACE(COMP_INIT, DBG_LOUD, ("Disable RF, AFE,AD, DA.\n")); + return rtStatus; + +} + +static VOID +_ResetBB( + IN PADAPTER Adapter + ) +{ + u16 value16; + + //before BB reset should do clock gated + rtw_write32(Adapter, rFPGA0_XCD_RFParameter, rtw_read32(Adapter, rFPGA0_XCD_RFParameter)|(BIT31)); + //reset BB + value16 = rtw_read16(Adapter, REG_SYS_FUNC_EN); + value16 &= ~(FEN_BBRSTB | FEN_BB_GLB_RSTn); + rtw_write16(Adapter, REG_SYS_FUNC_EN, value16); + //RT_TRACE(COMP_INIT, DBG_LOUD, ("Reset BB.\n")); +} + +static VOID +_ResetMCU( + IN PADAPTER Adapter + ) +{ + u16 value16; + + // reset MCU + value16 = rtw_read16(Adapter, REG_SYS_FUNC_EN); + value16 &= ~FEN_CPUEN; + rtw_write16(Adapter, REG_SYS_FUNC_EN, value16); + //RT_TRACE(COMP_INIT, DBG_LOUD, ("Reset MCU.\n")); +} + +static VOID +_DisableMAC_AFE_PLL( + IN PADAPTER Adapter + ) +{ + u32 value32; + + //disable MAC/ AFE PLL + value32 = rtw_read32(Adapter, REG_APS_FSMCO); + value32 |= APDM_MAC; + rtw_write32(Adapter, REG_APS_FSMCO, value32); + + value32 |= APFM_OFF; + rtw_write32(Adapter, REG_APS_FSMCO, value32); + //RT_TRACE(COMP_INIT, DBG_LOUD, ("Disable MAC, AFE PLL.\n")); +} + +static VOID +_AutoPowerDownToHostOff( + IN PADAPTER Adapter + ) +{ + u32 value32; + rtw_write8(Adapter, REG_SPS0_CTRL, 0x22); + + value32 = rtw_read32(Adapter, REG_APS_FSMCO); + + value32 |= APDM_HOST;//card disable + rtw_write32(Adapter, REG_APS_FSMCO, value32); + //RT_TRACE(COMP_INIT, DBG_LOUD, ("Auto Power Down to Host-off state.\n")); + + // set USB suspend + value32 = rtw_read32(Adapter, REG_APS_FSMCO); + value32 &= ~AFSM_PCIE; + rtw_write32(Adapter, REG_APS_FSMCO, value32); + +} + +static VOID +_SetUsbSuspend( + IN PADAPTER Adapter + ) +{ + u32 value32; + + value32 = rtw_read32(Adapter, REG_APS_FSMCO); + + // set USB suspend + value32 |= AFSM_HSUS; + rtw_write32(Adapter, REG_APS_FSMCO, value32); + + //RT_ASSERT(0 == (rtw_read32(Adapter, REG_APS_FSMCO) & BIT(12)),("")); + //RT_TRACE(COMP_INIT, DBG_LOUD, ("Set USB suspend.\n")); + +} + +static VOID +_DisableRFAFEAndResetBB( + IN PADAPTER Adapter + ) +{ +/************************************** +a. TXPAUSE 0x522[7:0] = 0xFF //Pause MAC TX queue +b. RF path 0 offset 0x00 = 0x00 // disable RF +c. APSD_CTRL 0x600[7:0] = 0x40 +d. SYS_FUNC_EN 0x02[7:0] = 0x16 //reset BB state machine +e. SYS_FUNC_EN 0x02[7:0] = 0x14 //reset BB state machine +***************************************/ + u8 eRFPath = 0,value8 = 0; + rtw_write8(Adapter, REG_TXPAUSE, 0xFF); + PHY_SetRFReg(Adapter, (RF_RADIO_PATH_E)eRFPath, 0x0, bMaskByte0, 0x0); + + value8 |= APSDOFF; + rtw_write8(Adapter, REG_APSD_CTRL, value8);//0x40 + //before BB reset should do clock gated + rtw_write32(Adapter, rFPGA0_XCD_RFParameter, rtw_read32(Adapter, rFPGA0_XCD_RFParameter)|(BIT31)); + value8 = 0 ; + value8 |=( FEN_USBD | FEN_USBA | FEN_BB_GLB_RSTn); + rtw_write8(Adapter, REG_SYS_FUNC_EN,value8 );//0x16 + + value8 &=( ~FEN_BB_GLB_RSTn ); + rtw_write8(Adapter, REG_SYS_FUNC_EN, value8); //0x14 + + //RT_TRACE(COMP_INIT, DBG_LOUD, ("======> RF off and reset BB.\n")); +} + +static VOID +_ResetDigitalProcedure1( + IN PADAPTER Adapter, + IN BOOLEAN bWithoutHWSM + ) +{ + + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); + + if(pHalData->FirmwareVersion <= 0x20){ + #if 0 + /***************************** + f. SYS_FUNC_EN 0x03[7:0]=0x54 // reset MAC register, DCORE + g. MCUFWDL 0x80[7:0]=0 // reset MCU ready status + ******************************/ + u4Byte value32 = 0; + PlatformIOWrite1Byte(Adapter, REG_SYS_FUNC_EN+1, 0x54); + PlatformIOWrite1Byte(Adapter, REG_MCUFWDL, 0); + #else + /***************************** + f. MCUFWDL 0x80[7:0]=0 // reset MCU ready status + g. SYS_FUNC_EN 0x02[10]= 0 // reset MCU register, (8051 reset) + h. SYS_FUNC_EN 0x02[15-12]= 5 // reset MAC register, DCORE + i. SYS_FUNC_EN 0x02[10]= 1 // enable MCU register, (8051 enable) + ******************************/ + u16 valu16 = 0; + rtw_write8(Adapter, REG_MCUFWDL, 0); + + valu16 = rtw_read16(Adapter, REG_SYS_FUNC_EN); + rtw_write16(Adapter, REG_SYS_FUNC_EN, (valu16 & (~FEN_CPUEN)));//reset MCU ,8051 + + valu16 = rtw_read16(Adapter, REG_SYS_FUNC_EN)&0x0FFF; + rtw_write16(Adapter, REG_SYS_FUNC_EN, (valu16 |(FEN_HWPDN|FEN_ELDR)));//reset MAC + + #ifdef DBG_SHOW_MCUFWDL_BEFORE_51_ENABLE + { + u8 val; + if( (val=rtw_read8(Adapter, REG_MCUFWDL))) + DBG_871X("DBG_SHOW_MCUFWDL_BEFORE_51_ENABLE %s:%d REG_MCUFWDL:0x%02x\n", __FUNCTION__, __LINE__, val); + } + #endif + + + valu16 = rtw_read16(Adapter, REG_SYS_FUNC_EN); + rtw_write16(Adapter, REG_SYS_FUNC_EN, (valu16 | FEN_CPUEN));//enable MCU ,8051 + + + #endif + } + else{ + u8 retry_cnts = 0; + + if(rtw_read8(Adapter, REG_MCUFWDL) & BIT1) + { //IF fw in RAM code, do reset + + rtw_write8(Adapter, REG_MCUFWDL, 0); + if(Adapter->bFWReady){ + // 2010/08/25 MH Accordign to RD alfred's suggestion, we need to disable other + // HRCV INT to influence 8051 reset. + rtw_write8(Adapter, REG_FWIMR, 0x20); + + rtw_write8(Adapter, REG_HMETFR+3, 0x20);//8051 reset by self + + while( (retry_cnts++ <100) && (FEN_CPUEN &rtw_read16(Adapter, REG_SYS_FUNC_EN))) + { + rtw_udelay_os(50);//PlatformStallExecution(50);//us + } + + if(retry_cnts >= 100){ + DBG_8192C("%s #####=> 8051 reset failed!.........................\n", __FUNCTION__); + // if 8051 reset fail we trigger GPIO 0 for LA + //PlatformEFIOWrite4Byte( Adapter, + // REG_GPIO_PIN_CTRL, + // 0x00010100); + // 2010/08/31 MH According to Filen's info, if 8051 reset fail, reset MAC directly. + rtw_write8(Adapter, REG_SYS_FUNC_EN+1, 0x50); //Reset MAC and Enable 8051 + rtw_mdelay_os(10); + } + else { + //DBG_871X("%s =====> 8051 reset success (%d) .\n", __FUNCTION__, retry_cnts); + } + } + else { + DBG_871X("%s =====> 8051 in RAM but !Adapter->bFWReady\n", __FUNCTION__); + } + } + else{ + //DBG_871X("%s =====> 8051 in ROM.\n", __FUNCTION__); + } + + #ifdef DBG_SHOW_MCUFWDL_BEFORE_51_ENABLE + { + u8 val; + if( (val=rtw_read8(Adapter, REG_MCUFWDL))) + DBG_871X("DBG_SHOW_MCUFWDL_BEFORE_51_ENABLE %s:%d REG_MCUFWDL:0x%02x\n", __FUNCTION__, __LINE__, val); + } + #endif + + rtw_write8(Adapter, REG_SYS_FUNC_EN+1, 0x54); //Reset MAC and Enable 8051 + } + + // Clear rpwm value for initial toggle bit trigger. + rtw_write8(Adapter, REG_USB_HRPWM, 0x00); + + if(bWithoutHWSM){ + /***************************** + Without HW auto state machine + g. SYS_CLKR 0x08[15:0] = 0x30A3 //disable MAC clock + h. AFE_PLL_CTRL 0x28[7:0] = 0x80 //disable AFE PLL + i. AFE_XTAL_CTRL 0x24[15:0] = 0x880F //gated AFE DIG_CLOCK + j. SYS_ISO_CTRL 0x00[7:0] = 0xF9 // isolated digital to PON + ******************************/ + //rtw_write16(Adapter, REG_SYS_CLKR, 0x30A3); + rtw_write16(Adapter, REG_SYS_CLKR, 0x70A3);//modify to 0x70A3 by Scott. + rtw_write8(Adapter, REG_AFE_PLL_CTRL, 0x80); + rtw_write16(Adapter, REG_AFE_XTAL_CTRL, 0x880F); + rtw_write8(Adapter, REG_SYS_ISO_CTRL, 0xF9); + } + else + { + // Disable all RF/BB power + rtw_write8(Adapter, REG_RF_CTRL, 0x00); + } + //RT_TRACE(COMP_INIT, DBG_LOUD, ("======> Reset Digital.\n")); + +} + +static VOID +_ResetDigitalProcedure2( + IN PADAPTER Adapter +) +{ +/***************************** +k. SYS_FUNC_EN 0x03[7:0] = 0x44 // disable ELDR runction +l. SYS_CLKR 0x08[15:0] = 0x3083 // disable ELDR clock +m. SYS_ISO_CTRL 0x01[7:0] = 0x83 // isolated ELDR to PON +******************************/ + //rtw_write8(Adapter, REG_SYS_FUNC_EN+1, 0x44);//marked by Scott. + //rtw_write16(Adapter, REG_SYS_CLKR, 0x3083); + //rtw_write8(Adapter, REG_SYS_ISO_CTRL+1, 0x83); + + rtw_write16(Adapter, REG_SYS_CLKR, 0x70a3); //modify to 0x70a3 by Scott. + rtw_write8(Adapter, REG_SYS_ISO_CTRL+1, 0x82); //modify to 0x82 by Scott. +} + +static VOID +_DisableAnalog( + IN PADAPTER Adapter, + IN BOOLEAN bWithoutHWSM + ) +{ + u16 value16 = 0; + u8 value8=0; + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); + + if(bWithoutHWSM){ + /***************************** + n. LDOA15_CTRL 0x20[7:0] = 0x04 // disable A15 power + o. LDOV12D_CTRL 0x21[7:0] = 0x54 // disable digital core power + r. When driver call disable, the ASIC will turn off remaining clock automatically + ******************************/ + + rtw_write8(Adapter, REG_LDOA15_CTRL, 0x04); + //PlatformIOWrite1Byte(Adapter, REG_LDOV12D_CTRL, 0x54); + + value8 = rtw_read8(Adapter, REG_LDOV12D_CTRL); + value8 &= (~LDV12_EN); + rtw_write8(Adapter, REG_LDOV12D_CTRL, value8); + //RT_TRACE(COMP_INIT, DBG_LOUD, (" REG_LDOV12D_CTRL Reg0x21:0x%02x.\n",value8)); + } + +/***************************** +h. SPS0_CTRL 0x11[7:0] = 0x23 //enter PFM mode +i. APS_FSMCO 0x04[15:0] = 0x4802 // set USB suspend +******************************/ + + + value8 = 0x23; + if (IS_81xxC_VENDOR_UMC_B_CUT(pHalData->VersionID)) + value8 |= BIT3; + + rtw_write8(Adapter, REG_SPS0_CTRL, value8); + + + if(bWithoutHWSM) + { + //value16 |= (APDM_HOST | /*AFSM_HSUS |*/PFM_ALDN); + // 2010/08/31 According to Filen description, we need to use HW to shut down 8051 automatically. + // Becasue suspend operatione need the asistance of 8051 to wait for 3ms. + value16 |= (APDM_HOST | AFSM_HSUS |PFM_ALDN); + } + else + { + value16 |= (APDM_HOST | AFSM_HSUS |PFM_ALDN); + } + + rtw_write16(Adapter, REG_APS_FSMCO,value16 );//0x4802 + + rtw_write8(Adapter, REG_RSV_CTRL, 0x0e); + + #if 0 + //tynli_test for suspend mode. + if(!bWithoutHWSM){ + rtw_write8(Adapter, 0xfe10, 0x19); + } +#endif + + //RT_TRACE(COMP_INIT, DBG_LOUD, ("======> Disable Analog Reg0x04:0x%04x.\n",value16)); +} + +static int +CardDisableHWSM( // HW Auto state machine + IN PADAPTER Adapter, + IN BOOLEAN resetMCU + ) +{ + int rtStatus = _SUCCESS; + if(Adapter->bSurpriseRemoved){ + return rtStatus; + } +#if 1 + //==== RF Off Sequence ==== + _DisableRFAFEAndResetBB(Adapter); + + // ==== Reset digital sequence ====== + _ResetDigitalProcedure1(Adapter, _FALSE); + + // ==== Pull GPIO PIN to balance level and LED control ====== + _DisableGPIO(Adapter); + + // ==== Disable analog sequence === + _DisableAnalog(Adapter, _FALSE); + + RT_TRACE(_module_hci_hal_init_c_, _drv_info_, ("======> Card disable finished.\n")); +#else + _DisableGPIO(Adapter); + + //reset FW download register + _ResetFWDownloadRegister(Adapter); + + + //disable RF/ AFE AD/DA + rtStatus = _DisableRF_AFE(Adapter); + if(RT_STATUS_SUCCESS != rtStatus){ + RT_TRACE(COMP_INIT, DBG_SERIOUS, ("_DisableRF_AFE failed!\n")); + goto Exit; + } + _ResetBB(Adapter); + + if(resetMCU){ + _ResetMCU(Adapter); + } + + _AutoPowerDownToHostOff(Adapter); + //_DisableMAC_AFE_PLL(Adapter); + + _SetUsbSuspend(Adapter); +Exit: +#endif + return rtStatus; + +} + +static int +CardDisableWithoutHWSM( // without HW Auto state machine + IN PADAPTER Adapter + ) +{ + int rtStatus = _SUCCESS; + + if(Adapter->bSurpriseRemoved){ + return rtStatus; + } + //RT_TRACE(COMP_INIT, DBG_LOUD, ("======> Card Disable Without HWSM .\n")); + //==== RF Off Sequence ==== + _DisableRFAFEAndResetBB(Adapter); + + // ==== Reset digital sequence ====== + _ResetDigitalProcedure1(Adapter, _TRUE); + + // ==== Pull GPIO PIN to balance level and LED control ====== + _DisableGPIO(Adapter); + + // ==== Reset digital sequence ====== + _ResetDigitalProcedure2(Adapter); + + // ==== Disable analog sequence === + _DisableAnalog(Adapter, _TRUE); + //RT_TRACE(COMP_INIT, DBG_LOUD, ("<====== Card Disable Without HWSM .\n")); + return rtStatus; +} + +static void rtl8192cu_hw_power_down(_adapter *padapter) +{ + // 2010/-8/09 MH For power down module, we need to enable register block contrl reg at 0x1c. + // Then enable power down control bit of register 0x04 BIT4 and BIT15 as 1. + + // Enable register area 0x0-0xc. + rtw_write8(padapter,REG_RSV_CTRL, 0x0); + rtw_write16(padapter, REG_APS_FSMCO, 0x8812); +} + +u32 rtl8192cu_hal_deinit(PADAPTER Adapter) + { + + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); + DBG_8192C("==> %s \n",__FUNCTION__); + // 2011/02/18 To Fix RU LNA power leakage problem. We need to execute below below in + // Adapter init and halt sequence. Accordingto EEchou's opinion, we can enable the ability for all + // IC. Accord to johnny's opinion, only RU need the support. + if (IS_HARDWARE_TYPE_8192C(Adapter) && (pHalData->BoardType == BOARD_USB_High_PA)) + rtw_write32(Adapter, rFPGA0_XCD_RFParameter, rtw_read32(Adapter, rFPGA0_XCD_RFParameter)|BIT1); + + #ifdef SUPPORT_HW_RFOFF_DETECTED + DBG_8192C("bkeepfwalive(%x)\n",Adapter->pwrctrlpriv.bkeepfwalive); + if(Adapter->pwrctrlpriv.bkeepfwalive) + { + _ps_close_RF(Adapter); + if((Adapter->pwrctrlpriv.bHWPwrPindetect) && (Adapter->pwrctrlpriv.bHWPowerdown)) + rtl8192cu_hw_power_down(Adapter); + } + else +#endif + { + if( Adapter->bCardDisableWOHSM == _FALSE) + { + DBG_8192C("card disble HWSM...........\n"); + CardDisableHWSM(Adapter, _FALSE); + } + else + { + DBG_8192C("card disble without HWSM...........\n"); + CardDisableWithoutHWSM(Adapter); // without HW Auto state machine + + if((Adapter->pwrctrlpriv.bHWPwrPindetect ) && (Adapter->pwrctrlpriv.bHWPowerdown)) + rtl8192cu_hw_power_down(Adapter); + } + } + + return _SUCCESS; + } + + +unsigned int rtl8192cu_inirp_init(PADAPTER Adapter) +{ + u8 i; + struct recv_buf *precvbuf; + uint status; + struct dvobj_priv *pdev = adapter_to_dvobj(Adapter); + struct intf_hdl * pintfhdl=&Adapter->iopriv.intf; + struct recv_priv *precvpriv = &(Adapter->recvpriv); + u32 (*_read_port)(struct intf_hdl *pintfhdl, u32 addr, u32 cnt, u8 *pmem); +#ifdef CONFIG_USB_INTERRUPT_IN_PIPE + u32 (*_read_interrupt)(struct intf_hdl *pintfhdl, u32 addr); +#endif + +_func_enter_; + + _read_port = pintfhdl->io_ops._read_port; + + status = _SUCCESS; + + RT_TRACE(_module_hci_hal_init_c_,_drv_info_,("===> usb_inirp_init \n")); + + precvpriv->ff_hwaddr = RECV_BULK_IN_ADDR; + + //issue Rx irp to receive data + precvbuf = (struct recv_buf *)precvpriv->precv_buf; + for(i=0; iff_hwaddr, 0, (unsigned char *)precvbuf) == _FALSE ) + { + RT_TRACE(_module_hci_hal_init_c_,_drv_err_,("usb_rx_init: usb_read_port error \n")); + status = _FAIL; + goto exit; + } + + precvbuf++; + precvpriv->free_recv_buf_queue_cnt--; + } + +#ifdef CONFIG_USB_INTERRUPT_IN_PIPE + _read_interrupt = pintfhdl->io_ops._read_interrupt; + if(_read_interrupt(pintfhdl, RECV_INT_IN_ADDR) == _FALSE ) + { + RT_TRACE(_module_hci_hal_init_c_,_drv_err_,("usb_rx_init: usb_read_interrupt error \n")); + status = _FAIL; + } +#endif + +exit: + + RT_TRACE(_module_hci_hal_init_c_,_drv_info_,("<=== usb_inirp_init \n")); + +_func_exit_; + + return status; + +} + +unsigned int rtl8192cu_inirp_deinit(PADAPTER Adapter) +{ + RT_TRACE(_module_hci_hal_init_c_,_drv_info_,("\n ===> usb_rx_deinit \n")); + + rtw_read_port_cancel(Adapter); + + RT_TRACE(_module_hci_hal_init_c_,_drv_info_,("\n <=== usb_rx_deinit \n")); + + return _SUCCESS; +} + + +//------------------------------------------------------------------------- +// +// EEPROM Power index mapping +// +//------------------------------------------------------------------------- + + static VOID +_ReadPowerValueFromPROM( + IN PTxPowerInfo pwrInfo, + IN u8* PROMContent, + IN BOOLEAN AutoLoadFail + ) +{ + u32 rfPath, eeAddr, group; + + _rtw_memset(pwrInfo, 0, sizeof(TxPowerInfo)); + + if(AutoLoadFail){ + for(group = 0 ; group < CHANNEL_GROUP_MAX ; group++){ + for(rfPath = 0 ; rfPath < RF_PATH_MAX ; rfPath++){ + pwrInfo->CCKIndex[rfPath][group] = EEPROM_Default_TxPowerLevel; + pwrInfo->HT40_1SIndex[rfPath][group] = EEPROM_Default_TxPowerLevel; + pwrInfo->HT40_2SIndexDiff[rfPath][group]= EEPROM_Default_HT40_2SDiff; + pwrInfo->HT20IndexDiff[rfPath][group] = EEPROM_Default_HT20_Diff; + pwrInfo->OFDMIndexDiff[rfPath][group] = EEPROM_Default_LegacyHTTxPowerDiff; + pwrInfo->HT40MaxOffset[rfPath][group] = EEPROM_Default_HT40_PwrMaxOffset; + pwrInfo->HT20MaxOffset[rfPath][group] = EEPROM_Default_HT20_PwrMaxOffset; + } + } + + pwrInfo->TSSI_A = EEPROM_Default_TSSI; + pwrInfo->TSSI_B = EEPROM_Default_TSSI; + + return; + } + + for(rfPath = 0 ; rfPath < RF_PATH_MAX ; rfPath++){ + for(group = 0 ; group < CHANNEL_GROUP_MAX ; group++){ + eeAddr = EEPROM_CCK_TX_PWR_INX + (rfPath * 3) + group; + pwrInfo->CCKIndex[rfPath][group] = PROMContent[eeAddr]; + + eeAddr = EEPROM_HT40_1S_TX_PWR_INX + (rfPath * 3) + group; + pwrInfo->HT40_1SIndex[rfPath][group] = PROMContent[eeAddr]; + } + } + + for(group = 0 ; group < CHANNEL_GROUP_MAX ; group++){ + for(rfPath = 0 ; rfPath < RF_PATH_MAX ; rfPath++){ + pwrInfo->HT40_2SIndexDiff[rfPath][group] = + (PROMContent[EEPROM_HT40_2S_TX_PWR_INX_DIFF + group] >> (rfPath * 4)) & 0xF; + +#if 1 + pwrInfo->HT20IndexDiff[rfPath][group] = + (PROMContent[EEPROM_HT20_TX_PWR_INX_DIFF + group] >> (rfPath * 4)) & 0xF; + if(pwrInfo->HT20IndexDiff[rfPath][group] & BIT3) //4bit sign number to 8 bit sign number + pwrInfo->HT20IndexDiff[rfPath][group] |= 0xF0; +#else + pwrInfo->HT20IndexDiff[rfPath][group] = + (PROMContent[EEPROM_HT20_TX_PWR_INX_DIFF + group] >> (rfPath * 4)) & 0xF; +#endif + + pwrInfo->OFDMIndexDiff[rfPath][group] = + (PROMContent[EEPROM_OFDM_TX_PWR_INX_DIFF+ group] >> (rfPath * 4)) & 0xF; + + pwrInfo->HT40MaxOffset[rfPath][group] = + (PROMContent[EEPROM_HT40_MAX_PWR_OFFSET+ group] >> (rfPath * 4)) & 0xF; + + pwrInfo->HT20MaxOffset[rfPath][group] = + (PROMContent[EEPROM_HT20_MAX_PWR_OFFSET+ group] >> (rfPath * 4)) & 0xF; + } + } + + pwrInfo->TSSI_A = PROMContent[EEPROM_TSSI_A]; + pwrInfo->TSSI_B = PROMContent[EEPROM_TSSI_B]; + +} + + +static u32 +_GetChannelGroup( + IN u32 channel + ) +{ + //RT_ASSERT((channel < 14), ("Channel %d no is supported!\n")); + + if(channel < 3){ // Channel 1~3 + return 0; + } + else if(channel < 9){ // Channel 4~9 + return 1; + } + + return 2; // Channel 10~14 +} + + +static VOID +ReadTxPowerInfo( + IN PADAPTER Adapter, + IN u8* PROMContent, + IN BOOLEAN AutoLoadFail + ) +{ + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); + TxPowerInfo pwrInfo; + u32 rfPath, ch, group; + u8 pwr, diff; + + _ReadPowerValueFromPROM(&pwrInfo, PROMContent, AutoLoadFail); + + if(!AutoLoadFail) + pHalData->bTXPowerDataReadFromEEPORM = _TRUE; + + for(rfPath = 0 ; rfPath < RF_PATH_MAX ; rfPath++){ + for(ch = 0 ; ch < CHANNEL_MAX_NUMBER ; ch++){ + group = _GetChannelGroup(ch); + + pHalData->TxPwrLevelCck[rfPath][ch] = pwrInfo.CCKIndex[rfPath][group]; + pHalData->TxPwrLevelHT40_1S[rfPath][ch] = pwrInfo.HT40_1SIndex[rfPath][group]; + + pHalData->TxPwrHt20Diff[rfPath][ch] = pwrInfo.HT20IndexDiff[rfPath][group]; + pHalData->TxPwrLegacyHtDiff[rfPath][ch] = pwrInfo.OFDMIndexDiff[rfPath][group]; + pHalData->PwrGroupHT20[rfPath][ch] = pwrInfo.HT20MaxOffset[rfPath][group]; + pHalData->PwrGroupHT40[rfPath][ch] = pwrInfo.HT40MaxOffset[rfPath][group]; + + pwr = pwrInfo.HT40_1SIndex[rfPath][group]; + diff = pwrInfo.HT40_2SIndexDiff[rfPath][group]; + + pHalData->TxPwrLevelHT40_2S[rfPath][ch] = (pwr > diff) ? (pwr - diff) : 0; + } + } + +#if DBG + + for(rfPath = 0 ; rfPath < RF_PATH_MAX ; rfPath++){ + for(ch = 0 ; ch < CHANNEL_MAX_NUMBER ; ch++){ + RTPRINT(FINIT, INIT_TxPower, + ("RF(%d)-Ch(%d) [CCK / HT40_1S / HT40_2S] = [0x%x / 0x%x / 0x%x]\n", + rfPath, ch, pHalData->TxPwrLevelCck[rfPath][ch], + pHalData->TxPwrLevelHT40_1S[rfPath][ch], + pHalData->TxPwrLevelHT40_2S[rfPath][ch])); + + } + } + + for(ch = 0 ; ch < CHANNEL_MAX_NUMBER ; ch++){ + RTPRINT(FINIT, INIT_TxPower, ("RF-A Ht20 to HT40 Diff[%d] = 0x%x\n", ch, pHalData->TxPwrHt20Diff[RF_PATH_A][ch])); + } + + for(ch = 0 ; ch < CHANNEL_MAX_NUMBER ; ch++){ + RTPRINT(FINIT, INIT_TxPower, ("RF-A Legacy to Ht40 Diff[%d] = 0x%x\n", ch, pHalData->TxPwrLegacyHtDiff[RF_PATH_A][ch])); + } + + for(ch = 0 ; ch < CHANNEL_MAX_NUMBER ; ch++){ + RTPRINT(FINIT, INIT_TxPower, ("RF-B Ht20 to HT40 Diff[%d] = 0x%x\n", ch, pHalData->TxPwrHt20Diff[RF_PATH_B][ch])); + } + + for(ch = 0 ; ch < CHANNEL_MAX_NUMBER ; ch++){ + RTPRINT(FINIT, INIT_TxPower, ("RF-B Legacy to HT40 Diff[%d] = 0x%x\n", ch, pHalData->TxPwrLegacyHtDiff[RF_PATH_B][ch])); + } + +#endif + // 2010/10/19 MH Add Regulator recognize for CU. + if(!AutoLoadFail) + { + pHalData->EEPROMRegulatory = (PROMContent[RF_OPTION1]&0x7); //bit0~2 + } + else + { + pHalData->EEPROMRegulatory = 0; + } + DBG_8192C("EEPROMRegulatory = 0x%x\n", pHalData->EEPROMRegulatory); + +} + + +//------------------------------------------------------------------- +// +// EEPROM/EFUSE Content Parsing +// +//------------------------------------------------------------------- +static void +_ReadIDs( + IN PADAPTER Adapter, + IN u8* PROMContent, + IN BOOLEAN AutoloadFail + ) +{ + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); + + if(_FALSE == AutoloadFail){ + // VID, PID + pHalData->EEPROMVID = le16_to_cpu( *(u16 *)&PROMContent[EEPROM_VID]); + pHalData->EEPROMPID = le16_to_cpu( *(u16 *)&PROMContent[EEPROM_PID]); + + // Customer ID, 0x00 and 0xff are reserved for Realtek. + pHalData->EEPROMCustomerID = *(u8 *)&PROMContent[EEPROM_CUSTOMER_ID]; + pHalData->EEPROMSubCustomerID = *(u8 *)&PROMContent[EEPROM_SUBCUSTOMER_ID]; + + } + else{ + pHalData->EEPROMVID = EEPROM_Default_VID; + pHalData->EEPROMPID = EEPROM_Default_PID; + + // Customer ID, 0x00 and 0xff are reserved for Realtek. + pHalData->EEPROMCustomerID = EEPROM_Default_CustomerID; + pHalData->EEPROMSubCustomerID = EEPROM_Default_SubCustomerID; + + } + + // For customized behavior. + if((pHalData->EEPROMVID == 0x103C) && (pHalData->EEPROMVID == 0x1629))// HP Lite-On for RTL8188CUS Slim Combo. + pHalData->CustomerID = RT_CID_819x_HP; + + // Decide CustomerID according to VID/DID or EEPROM + switch(pHalData->EEPROMCustomerID) + { + case EEPROM_CID_DEFAULT: + if((pHalData->EEPROMVID == 0x2001) && (pHalData->EEPROMPID == 0x3308)) + pHalData->CustomerID = RT_CID_DLINK; + else if((pHalData->EEPROMVID == 0x2001) && (pHalData->EEPROMPID == 0x3309)) + pHalData->CustomerID = RT_CID_DLINK; + else if((pHalData->EEPROMVID == 0x2001) && (pHalData->EEPROMPID == 0x330a)) + pHalData->CustomerID = RT_CID_DLINK; + break; + case EEPROM_CID_WHQL: +/* + Adapter->bInHctTest = TRUE; + + pMgntInfo->bSupportTurboMode = FALSE; + pMgntInfo->bAutoTurboBy8186 = FALSE; + + pMgntInfo->PowerSaveControl.bInactivePs = FALSE; + pMgntInfo->PowerSaveControl.bIPSModeBackup = FALSE; + pMgntInfo->PowerSaveControl.bLeisurePs = FALSE; + + pMgntInfo->keepAliveLevel = 0; + + Adapter->bUnloadDriverwhenS3S4 = FALSE; +*/ + break; + default: + pHalData->CustomerID = RT_CID_DEFAULT; + break; + + } + + MSG_8192C("EEPROMVID = 0x%04x\n", pHalData->EEPROMVID); + MSG_8192C("EEPROMPID = 0x%04x\n", pHalData->EEPROMPID); + MSG_8192C("EEPROMCustomerID : 0x%02x\n", pHalData->EEPROMCustomerID); + MSG_8192C("EEPROMSubCustomerID: 0x%02x\n", pHalData->EEPROMSubCustomerID); + + MSG_8192C("RT_CustomerID: 0x%02x\n", pHalData->CustomerID); + +} + + +static VOID +_ReadMACAddress( + IN PADAPTER Adapter, + IN u8* PROMContent, + IN BOOLEAN AutoloadFail + ) +{ + EEPROM_EFUSE_PRIV *pEEPROM = GET_EEPROM_EFUSE_PRIV(Adapter); + + if(_FALSE == AutoloadFail){ + //Read Permanent MAC address and set value to hardware + _rtw_memcpy(pEEPROM->mac_addr, &PROMContent[EEPROM_MAC_ADDR], ETH_ALEN); + } + else{ + //Random assigh MAC address + u8 sMacAddr[MAC_ADDR_LEN] = {0x00, 0xE0, 0x4C, 0x81, 0x92, 0x00}; + //sMacAddr[5] = (u8)GetRandomNumber(1, 254); + _rtw_memcpy(pEEPROM->mac_addr, sMacAddr, ETH_ALEN); + } + DBG_8192C("%s MAC Address from EFUSE = "MAC_FMT"\n",__FUNCTION__, MAC_ARG(pEEPROM->mac_addr)); + //NicIFSetMacAddress(Adapter, Adapter->PermanentAddress); + //RT_PRINT_ADDR(COMP_INIT|COMP_EFUSE, DBG_LOUD, "MAC Addr: %s", Adapter->PermanentAddress); + +} + +static VOID +_ReadBoardType( + IN PADAPTER Adapter, + IN u8* PROMContent, + IN BOOLEAN AutoloadFail + ) +{ + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); + u32 value32; + u8 boardType = BOARD_USB_DONGLE; + + if(AutoloadFail){ + if(IS_8723_SERIES(pHalData->VersionID)) + pHalData->rf_type = RF_1T1R; + else + pHalData->rf_type = RF_2T2R; + + pHalData->BluetoothCoexist = _FALSE; + pHalData->BoardType = boardType; + return; + } + + boardType = PROMContent[EEPROM_NORMAL_BoardType]; + boardType &= BOARD_TYPE_NORMAL_MASK;//bit[7:5] + boardType >>= 5; + + pHalData->BoardType = boardType; + MSG_8192C("_ReadBoardType(%x)\n",pHalData->BoardType); + + if (boardType == BOARD_USB_High_PA) + pHalData->ExternalPA = 1; +} + + +static VOID +_ReadLEDSetting( + IN PADAPTER Adapter, + IN u8* PROMContent, + IN BOOLEAN AutoloadFail + ) +{ + struct led_priv *pledpriv = &(Adapter->ledpriv); + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); +#ifdef CONFIG_SW_LED + pledpriv->bRegUseLed = _TRUE; + + // + // Led mode + // + switch(pHalData->CustomerID) + { + case RT_CID_DEFAULT: + pledpriv->LedStrategy = SW_LED_MODE1; + pledpriv->bRegUseLed = _TRUE; + break; + + case RT_CID_819x_HP: + pledpriv->LedStrategy = SW_LED_MODE6; + break; + + default: + pledpriv->LedStrategy = SW_LED_MODE1; + break; + } + + if( BOARD_MINICARD == pHalData->BoardType ) + { + pledpriv->LedStrategy = SW_LED_MODE6; + } + pHalData->bLedOpenDrain = _TRUE;// Support Open-drain arrangement for controlling the LED. Added by Roger, 2009.10.16. +#else // HW LED + pledpriv->LedStrategy = HW_LED; +#endif //CONFIG_SW_LED +} + +static VOID +_ReadThermalMeter( + IN PADAPTER Adapter, + IN u8* PROMContent, + IN BOOLEAN AutoloadFail + ) +{ + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); + struct dm_priv *pdmpriv = &pHalData->dmpriv; + u8 tempval; + + // + // ThermalMeter from EEPROM + // + if(!AutoloadFail) + tempval = PROMContent[EEPROM_THERMAL_METER]; + else + tempval = EEPROM_Default_ThermalMeter; + + pHalData->EEPROMThermalMeter = (tempval&0x1f); //[4:0] + + if(pHalData->EEPROMThermalMeter == 0x1f || AutoloadFail) + pdmpriv->bAPKThermalMeterIgnore = _TRUE; + +#if 0 + if(pHalData->EEPROMThermalMeter < 0x06 || pHalData->EEPROMThermalMeter > 0x1c) + pHalData->EEPROMThermalMeter = 0x12; +#endif + + pdmpriv->ThermalMeter[0] = pHalData->EEPROMThermalMeter; + + //RTPRINT(FINIT, INIT_TxPower, ("ThermalMeter = 0x%x\n", pHalData->EEPROMThermalMeter)); + +} + +static VOID +_ReadRFSetting( + IN PADAPTER Adapter, + IN u8* PROMContent, + IN BOOLEAN AutoloadFail + ) +{ +} + +static void +_ReadPROMVersion( + IN PADAPTER Adapter, + IN u8* PROMContent, + IN BOOLEAN AutoloadFail + ) +{ + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); + + if(AutoloadFail){ + pHalData->EEPROMVersion = EEPROM_Default_Version; + } + else{ + pHalData->EEPROMVersion = *(u8 *)&PROMContent[EEPROM_VERSION]; + } +} + +static VOID +readAntennaDiversity( + IN PADAPTER pAdapter, + IN u8 *hwinfo, + IN BOOLEAN AutoLoadFail + ) +{ + + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(pAdapter); + struct registry_priv *registry_par = &pAdapter->registrypriv; + + if(!AutoLoadFail) + { + // Antenna Diversity setting. + if(registry_par->antdiv_cfg == 2) // 2: From Efuse + pHalData->AntDivCfg = (hwinfo[EEPROM_RF_OPT1]&0x18)>>3; + else + pHalData->AntDivCfg = registry_par->antdiv_cfg ; // 0:OFF , 1:ON, + + DBG_8192C("### AntDivCfg(%x)\n",pHalData->AntDivCfg); + + //if(pHalData->EEPROMBluetoothCoexist!=0 && pHalData->EEPROMBluetoothAntNum==Ant_x1) + // pHalData->AntDivCfg = 0; + } + else + { + pHalData->AntDivCfg = 0; + } + +} + +static VOID +hal_InitPGData( + IN PADAPTER pAdapter, + IN OUT u8 *PROMContent + ) +{ + EEPROM_EFUSE_PRIV *pEEPROM = GET_EEPROM_EFUSE_PRIV(pAdapter); + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(pAdapter); + u32 i; + u16 value16; + + if(_FALSE == pEEPROM->bautoload_fail_flag) + { // autoload OK. + if (_TRUE == pEEPROM->EepromOrEfuse) + { + // Read all Content from EEPROM or EFUSE. + for(i = 0; i < HWSET_MAX_SIZE; i += 2) + { + //value16 = EF2Byte(ReadEEprom(pAdapter, (u2Byte) (i>>1))); + //*((u16 *)(&PROMContent[i])) = value16; + } + } + else + { + // Read EFUSE real map to shadow. + EFUSE_ShadowMapUpdate(pAdapter, EFUSE_WIFI, _FALSE); + _rtw_memcpy((void*)PROMContent, (void*)pEEPROM->efuse_eeprom_data, HWSET_MAX_SIZE); + } + } + else + {//autoload fail + //RT_TRACE(COMP_INIT, DBG_LOUD, ("AutoLoad Fail reported from CR9346!!\n")); + pEEPROM->bautoload_fail_flag = _TRUE; + //update to default value 0xFF + if (_FALSE == pEEPROM->EepromOrEfuse) + EFUSE_ShadowMapUpdate(pAdapter, EFUSE_WIFI, _FALSE); + } +} +// Read HW power down mode selection +static void _ReadPSSetting(IN PADAPTER Adapter,IN u8*PROMContent,IN u8 AutoloadFail) +{ + if(AutoloadFail){ + Adapter->pwrctrlpriv.bHWPowerdown = _FALSE; + Adapter->pwrctrlpriv.bSupportRemoteWakeup = _FALSE; + } + else { + //if(SUPPORT_HW_RADIO_DETECT(Adapter)) + Adapter->pwrctrlpriv.bHWPwrPindetect = Adapter->registrypriv.hwpwrp_detect; + //else + //Adapter->pwrctrlpriv.bHWPwrPindetect = _FALSE;//dongle not support new + + + //hw power down mode selection , 0:rf-off / 1:power down + + if(Adapter->registrypriv.hwpdn_mode==2) + Adapter->pwrctrlpriv.bHWPowerdown = (PROMContent[EEPROM_RF_OPT3] & BIT4); + else + Adapter->pwrctrlpriv.bHWPowerdown = Adapter->registrypriv.hwpdn_mode; +#ifdef CONFIG_WOWLAN + // decide hw if support remote wakeup function + // if hw supported, 8051 (SIE) will generate WeakUP signal( D+/D- toggle) when autoresume + Adapter->pwrctrlpriv.bSupportRemoteWakeup = (PROMContent[EEPROM_TEST_USB_OPT] & BIT1)?_TRUE :_FALSE; +#endif //CONFIG_WOWLAN + + //if(SUPPORT_HW_RADIO_DETECT(Adapter)) + //Adapter->registrypriv.usbss_enable = Adapter->pwrctrlpriv.bSupportRemoteWakeup ; + + DBG_8192C("%s...bHWPwrPindetect(%x)-bHWPowerdown(%x) ,bSupportRemoteWakeup(%x)\n",__FUNCTION__, + Adapter->pwrctrlpriv.bHWPwrPindetect,Adapter->pwrctrlpriv.bHWPowerdown ,Adapter->pwrctrlpriv.bSupportRemoteWakeup); + + DBG_8192C("### PS params=> power_mgnt(%x),usbss_enable(%x) ###\n",Adapter->registrypriv.power_mgnt,Adapter->registrypriv.usbss_enable); + + } + +} + +static VOID +readAdapterInfo_8192CU( + IN PADAPTER Adapter + ) +{ + EEPROM_EFUSE_PRIV *pEEPROM = GET_EEPROM_EFUSE_PRIV(Adapter); + PHAL_DATA_TYPE pHalData = GET_HAL_DATA(Adapter); + u8 PROMContent[HWSET_MAX_SIZE]={0}; + + hal_InitPGData(Adapter, PROMContent); + rtl8192c_EfuseParseIDCode(Adapter, PROMContent); + + _ReadPROMVersion(Adapter, PROMContent, pEEPROM->bautoload_fail_flag); + _ReadIDs(Adapter, PROMContent, pEEPROM->bautoload_fail_flag); + _ReadMACAddress(Adapter, PROMContent, pEEPROM->bautoload_fail_flag); + ReadTxPowerInfo(Adapter, PROMContent, pEEPROM->bautoload_fail_flag); + _ReadBoardType(Adapter, PROMContent, pEEPROM->bautoload_fail_flag); + +#ifdef CONFIG_BT_COEXIST + // + // Read Bluetooth co-exist and initialize + // + rtl8192c_ReadBluetoothCoexistInfo(Adapter, PROMContent, pEEPROM->bautoload_fail_flag); +#endif + + rtl8192c_EfuseParseChnlPlan(Adapter, PROMContent, pEEPROM->bautoload_fail_flag); + _ReadThermalMeter(Adapter, PROMContent, pEEPROM->bautoload_fail_flag); + _ReadLEDSetting(Adapter, PROMContent, pEEPROM->bautoload_fail_flag); + _ReadRFSetting(Adapter, PROMContent, pEEPROM->bautoload_fail_flag); + _ReadPSSetting(Adapter, PROMContent, pEEPROM->bautoload_fail_flag); + readAntennaDiversity(Adapter, PROMContent, pEEPROM->bautoload_fail_flag); + + //hal_CustomizedBehavior_8723U(Adapter); + + Adapter->bDongle = (PROMContent[EEPROM_EASY_REPLACEMENT] == 1)? 0: 1; + DBG_8192C("%s(): REPLACEMENT = %x\n",__FUNCTION__,Adapter->bDongle); +#ifdef CONFIG_INTEL_PROXIM + /* for intel proximity */ + if (pHalData->rf_type== RF_1T1R) { + Adapter->proximity.proxim_support = _TRUE; + } else if (pHalData->rf_type== RF_2T2R) { + if ((pHalData->EEPROMPID == 0x8186) && + (pHalData->EEPROMVID== 0x0bda)) + Adapter->proximity.proxim_support = _TRUE; + } else { + Adapter->proximity.proxim_support = _FALSE; + } +#endif //CONFIG_INTEL_PROXIM +} + +static void _ReadPROMContent( + IN PADAPTER Adapter + ) +{ + EEPROM_EFUSE_PRIV *pEEPROM = GET_EEPROM_EFUSE_PRIV(Adapter); + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); + u8 PROMContent[HWSET_MAX_SIZE]={0}; + u8 eeValue; + u32 i; + u16 value16; + + eeValue = rtw_read8(Adapter, REG_9346CR); + // To check system boot selection. + pEEPROM->EepromOrEfuse = (eeValue & BOOT_FROM_EEPROM) ? _TRUE : _FALSE; + pEEPROM->bautoload_fail_flag = (eeValue & EEPROM_EN) ? _FALSE : _TRUE; + + + DBG_8192C("Boot from %s, Autoload %s !\n", (pEEPROM->EepromOrEfuse ? "EEPROM" : "EFUSE"), + (pEEPROM->bautoload_fail_flag ? "Fail" : "OK") ); + + //pHalData->EEType = IS_BOOT_FROM_EEPROM(Adapter) ? EEPROM_93C46 : EEPROM_BOOT_EFUSE; + + //if(IS_HARDWARE_TYPE_8723A(Adapter)) + // readAdapterInfo_8723U(Adapter); + //else + readAdapterInfo_8192CU(Adapter); +} + + +static VOID +_InitOtherVariable( + IN PADAPTER Adapter + ) +{ + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); + + + //if(Adapter->bInHctTest){ + // pMgntInfo->PowerSaveControl.bInactivePs = FALSE; + // pMgntInfo->PowerSaveControl.bIPSModeBackup = FALSE; + // pMgntInfo->PowerSaveControl.bLeisurePs = FALSE; + // pMgntInfo->keepAliveLevel = 0; + //} + + // 2009/06/10 MH For 92S 1*1=1R/ 1*2&2*2 use 2R. We default set 1*1 use radio A + // So if you want to use radio B. Please modify RF path enable bit for correct signal + // strength calculate. + if (pHalData->rf_type == RF_1T1R){ + pHalData->bRFPathRxEnable[0] = _TRUE; + } + else{ + pHalData->bRFPathRxEnable[0] = pHalData->bRFPathRxEnable[1] = _TRUE; + } + +} + +static VOID +_ReadRFType( + IN PADAPTER Adapter + ) +{ + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); + +#if DISABLE_BB_RF + pHalData->rf_chip = RF_PSEUDO_11N; +#else + pHalData->rf_chip = RF_6052; +#endif +} + +void _ReadSilmComboMode(PADAPTER Adapter) +{ + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); + + pHalData->SlimComboDbg = _FALSE; // Default is not debug mode. + + // 2010/11/22 MH We need to enter debug mode for TSMA and UMC A cut + if ((Adapter->chip_type == RTL8188C_8192C) && + (pHalData->BoardType == BOARD_USB_COMBO)) + { + switch (pHalData->VersionID) + { + case VERSION_NORMAL_TSMC_CHIP_88C: + case VERSION_NORMAL_TSMC_CHIP_92C: + case VERSION_NORMAL_TSMC_CHIP_92C_1T2R: + case VERSION_NORMAL_UMC_CHIP_88C_A_CUT: + case VERSION_NORMAL_UMC_CHIP_92C_A_CUT: + case VERSION_NORMAL_UMC_CHIP_92C_1T2R_A_CUT: + if ((rtw_read8(Adapter, REG_SYS_CFG+3) &0xF0) == 0x20) + pHalData->SlimComboDbg = _TRUE; + + break; + + case VERSION_NORMAL_UMC_CHIP_88C_B_CUT: + case VERSION_NORMAL_UMC_CHIP_92C_B_CUT: + case VERSION_NORMAL_UMC_CHIP_92C_1T2R_B_CUT: + // 2011/02/15 MH UNC-B cut ECO fail, we need to support slim combo debug mode. + if ((rtw_read8(Adapter, REG_SYS_CFG+3) &0xF0) == 0x20) + pHalData->SlimComboDbg = _TRUE; + break; + + default: + break; + } + + } + +} +static int _ReadAdapterInfo8192CU(PADAPTER Adapter) +{ + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); + u32 start=rtw_get_current_time(); + + MSG_8192C("====> ReadAdapterInfo8192C\n"); + + //Efuse_InitSomeVar(Adapter); + + //if(IS_HARDWARE_TYPE_8723A(Adapter)) + // _EfuseCellSel(Adapter); + + _ReadRFType(Adapter);//rf_chip -> _InitRFType() + _ReadPROMContent(Adapter); + + // 2010/10/25 MH THe function must be called after borad_type & IC-Version recognize. + _ReadSilmComboMode(Adapter); + + _InitOtherVariable(Adapter); + + //MSG_8192C("%s()(done), rf_chip=0x%x, rf_type=0x%x\n", __FUNCTION__, pHalData->rf_chip, pHalData->rf_type); + + MSG_8192C("<==== ReadAdapterInfo8192C in %d ms\n", rtw_get_passing_time_ms(start)); + + return _SUCCESS; +} + + +static void ReadAdapterInfo8192CU(PADAPTER Adapter) +{ + // Read EEPROM size before call any EEPROM function + //Adapter->EepromAddressSize=Adapter->HalFunc.GetEEPROMSizeHandler(Adapter); + Adapter->EepromAddressSize = GetEEPROMSize8192C(Adapter); + + _ReadAdapterInfo8192CU(Adapter); +} + + +#define GPIO_DEBUG_PORT_NUM 0 +static void rtl8192cu_trigger_gpio_0(_adapter *padapter) +{ + + u32 gpioctrl; + DBG_8192C("==> trigger_gpio_0...\n"); + rtw_write16_async(padapter,REG_GPIO_PIN_CTRL,0); + rtw_write8_async(padapter,REG_GPIO_PIN_CTRL+2,0xFF); + gpioctrl = (BIT(GPIO_DEBUG_PORT_NUM)<<24 )|(BIT(GPIO_DEBUG_PORT_NUM)<<16); + rtw_write32_async(padapter,REG_GPIO_PIN_CTRL,gpioctrl); + gpioctrl |= (BIT(GPIO_DEBUG_PORT_NUM)<<8); + rtw_write32_async(padapter,REG_GPIO_PIN_CTRL,gpioctrl); + DBG_8192C("<=== trigger_gpio_0...\n"); + +} + +static void ResumeTxBeacon(_adapter *padapter) +{ + HAL_DATA_TYPE* pHalData = GET_HAL_DATA(padapter); + + // 2010.03.01. Marked by tynli. No need to call workitem beacause we record the value + // which should be read from register to a global variable. + + rtw_write8(padapter, REG_FWHW_TXQ_CTRL+2, (pHalData->RegFwHwTxQCtrl) | BIT6); + pHalData->RegFwHwTxQCtrl |= BIT6; +} + +static void StopTxBeacon(_adapter *padapter) +{ + HAL_DATA_TYPE* pHalData = GET_HAL_DATA(padapter); + + // 2010.03.01. Marked by tynli. No need to call workitem beacause we record the value + // which should be read from register to a global variable. + + rtw_write8(padapter, REG_FWHW_TXQ_CTRL+2, (pHalData->RegFwHwTxQCtrl) & (~BIT6)); + pHalData->RegFwHwTxQCtrl &= (~BIT6); + + //todo: CheckFwRsvdPageContent(Adapter); // 2010.06.23. Added by tynli. + +} + +u16 CRC16(u8 data,u16 CRC) +{ + unsigned char shift_in,CRC_BIT15,DataBit,CRC_BIT11,CRC_BIT4 ; + int index; + unsigned short CRC_Result; + + for(index=0;index<8;index++) + { + CRC_BIT15=((CRC&BIT15) ? 1:0); + DataBit =(data&(BIT0<iface_type == IFACE_PORT1) + { + // disable Port1 TSF update + rtw_write8(Adapter, REG_BCN_CTRL_1, rtw_read8(Adapter, REG_BCN_CTRL_1)|BIT(4)); + + // set net_type + val8 = rtw_read8(Adapter, MSR)&0x03; + val8 |= (mode<<2); + rtw_write8(Adapter, MSR, val8); + + //reset TSF1 + rtw_write8(Adapter, REG_DUAL_TSF_RST, BIT(1)); + + DBG_871X("%s()-%d mode = %d\n", __FUNCTION__, __LINE__, mode); + + if((mode == _HW_STATE_STATION_) || (mode == _HW_STATE_NOLINK_)) + { + if(!check_buddy_mlmeinfo_state(Adapter, WIFI_FW_AP_STATE)) + { + StopTxBeacon(Adapter); + } + + rtw_write8(Adapter,REG_BCN_CTRL_1, 0x19);//disable atim wnd + //rtw_write8(Adapter,REG_BCN_CTRL_1, 0x18); + } + else if((mode == _HW_STATE_ADHOC_) /*|| (mode == _HW_STATE_AP_)*/) + { + ResumeTxBeacon(Adapter); + rtw_write8(Adapter,REG_BCN_CTRL_1, 0x1a); + } + else if(mode == _HW_STATE_AP_) + { + ResumeTxBeacon(Adapter); + + rtw_write8(Adapter, REG_BCN_CTRL_1, 0x12); + + //Set RCR + //rtw_write32(padapter, REG_RCR, 0x70002a8e);//CBSSID_DATA must set to 0 + rtw_write32(Adapter, REG_RCR, 0x7000228e);//CBSSID_DATA must set to 0 + //enable to rx data frame + rtw_write16(Adapter, REG_RXFLTMAP2, 0xFFFF); + //enable to rx ps-poll + rtw_write16(Adapter, REG_RXFLTMAP1, 0x0400); + + //Beacon Control related register for first time + rtw_write8(Adapter, REG_BCNDMATIM, 0x02); // 2ms + rtw_write8(Adapter, REG_DRVERLYINT, 0x05);// 5ms + //rtw_write8(Adapter, REG_BCN_MAX_ERR, 0xFF); + rtw_write8(Adapter, REG_ATIMWND_1, 0x0a); // 10ms for port1 + rtw_write16(Adapter, REG_BCNTCFG, 0x00); + rtw_write16(Adapter, REG_TBTT_PROHIBIT, 0xff04); + rtw_write16(Adapter, REG_TSFTR_SYN_OFFSET, 0x7fff);// +32767 (~32ms) + + + //enable BCN1 Function for if2 + //don't enable update TSF1 for if2 (due to TSF update when beacon/probe rsp are received) + rtw_write8(Adapter, REG_BCN_CTRL_1, (DIS_TSF_UDT0_NORMAL_CHIP|EN_BCN_FUNCTION | EN_TXBCN_RPT|BIT(1))); + +#ifdef CONFIG_CONCURRENT_MODE + if(check_buddy_fwstate(Adapter, WIFI_FW_NULL_STATE)) + rtw_write8(Adapter, REG_BCN_CTRL, + rtw_read8(Adapter, REG_BCN_CTRL) & ~EN_BCN_FUNCTION); +#endif + + DBG_871X("%s()-%d: REG_BCN_CTRL_1 = %02x\n", __FUNCTION__, __LINE__, rtw_read8(Adapter, REG_BCN_CTRL_1)); + + //BCN1 TSF will sync to BCN0 TSF with offset(0x518) if if1_sta linked + //rtw_write8(Adapter, REG_BCN_CTRL_1, rtw_read8(Adapter, REG_BCN_CTRL_1)|BIT(5)); + //rtw_write8(Adapter, REG_DUAL_TSF_RST, BIT(3)); + + //dis BCN0 ATIM WND if if1 is station + rtw_write8(Adapter, REG_BCN_CTRL, rtw_read8(Adapter, REG_BCN_CTRL)|BIT(0)); +#ifdef CONFIG_TSF_RESET_OFFLOAD + // Reset TSF for STA+AP concurrent mode + if ( check_buddy_fwstate(Adapter, (WIFI_STATION_STATE|WIFI_ASOC_STATE)) ) { + if (reset_tsf(Adapter, IFACE_PORT1) == _FALSE) + DBG_871X("ERROR! %s()-%d: Reset port1 TSF fail\n", + __FUNCTION__, __LINE__); + } +#endif // CONFIG_TSF_RESET_OFFLOAD + } + + } + else // (Adapter->iface_type == IFACE_PORT1) +#endif //CONFIG_CONCURRENT_MODE + { + // disable Port0 TSF update + rtw_write8(Adapter, REG_BCN_CTRL, rtw_read8(Adapter, REG_BCN_CTRL)|BIT(4)); + + // set net_type + val8 = rtw_read8(Adapter, MSR)&0x0c; + val8 |= mode; + rtw_write8(Adapter, MSR, val8); + + //reset TSF0 + rtw_write8(Adapter, REG_DUAL_TSF_RST, BIT(0)); + + DBG_871X("%s()-%d mode = %d\n", __FUNCTION__, __LINE__, mode); + + if((mode == _HW_STATE_STATION_) || (mode == _HW_STATE_NOLINK_)) + { +#ifdef CONFIG_CONCURRENT_MODE + if(!check_buddy_mlmeinfo_state(Adapter, WIFI_FW_AP_STATE)) +#endif //CONFIG_CONCURRENT_MODE + { + StopTxBeacon(Adapter); + } + + rtw_write8(Adapter,REG_BCN_CTRL, 0x19);//disable atim wnd + //rtw_write8(Adapter,REG_BCN_CTRL, 0x18); + } + else if((mode == _HW_STATE_ADHOC_) /*|| (mode == _HW_STATE_AP_)*/) + { + ResumeTxBeacon(Adapter); + rtw_write8(Adapter,REG_BCN_CTRL, 0x1a); + } + else if(mode == _HW_STATE_AP_) + { + ResumeTxBeacon(Adapter); + + rtw_write8(Adapter, REG_BCN_CTRL, 0x12); + + //Set RCR + //write32(padapter, REG_RCR, 0x70002a8e);//CBSSID_DATA must set to 0 + rtw_write32(Adapter, REG_RCR, 0x7000228e);//CBSSID_DATA must set to 0 + //enable to rx data frame + rtw_write16(Adapter, REG_RXFLTMAP2, 0xFFFF); + //enable to rx ps-poll + rtw_write16(Adapter, REG_RXFLTMAP1, 0x0400); + + //Beacon Control related register for first time + + rtw_write8(Adapter, REG_BCNDMATIM, 0x02); // 2ms + rtw_write8(Adapter, REG_DRVERLYINT, 0x05);// 5ms + + //write8(Adapter, REG_BCN_MAX_ERR, 0xFF); + rtw_write8(Adapter, REG_ATIMWND, 0x0a); // 10ms for port0 + rtw_write16(Adapter, REG_BCNTCFG, 0x00); + rtw_write16(Adapter, REG_TBTT_PROHIBIT, 0xff04); + rtw_write16(Adapter, REG_TSFTR_SYN_OFFSET, 0x7fff);// +32767 (~32ms) + + //enable BCN0 Function for if1 + //don't enable update TSF0 for if1 (due to TSF update when beacon/probe rsp are received) + rtw_write8(Adapter, REG_BCN_CTRL, (DIS_TSF_UDT0_NORMAL_CHIP|EN_BCN_FUNCTION | EN_TXBCN_RPT|BIT(1))); + +#ifdef CONFIG_CONCURRENT_MODE + if(check_buddy_fwstate(Adapter, WIFI_FW_NULL_STATE)) + rtw_write8(Adapter, REG_BCN_CTRL_1, + rtw_read8(Adapter, REG_BCN_CTRL_1) & ~EN_BCN_FUNCTION); +#endif + //BCN1 TSF will sync to BCN0 TSF with offset(0x518) if if1_sta linked + //only interface 2 as AP MODE need to sync + //rtw_write8(Adapter, REG_BCN_CTRL_1, rtw_read8(Adapter, REG_BCN_CTRL_1)|BIT(5)); + + + //dis BCN1 ATIM WND if if2 is station + rtw_write8(Adapter, REG_BCN_CTRL_1, rtw_read8(Adapter, REG_BCN_CTRL_1)|BIT(0)); +#ifdef CONFIG_TSF_RESET_OFFLOAD + // Reset TSF for STA+AP concurrent mode + if ( check_buddy_fwstate(Adapter, (WIFI_STATION_STATE|WIFI_ASOC_STATE)) ) { + if (reset_tsf(Adapter, IFACE_PORT0) == _FALSE) + DBG_871X("ERROR! %s()-%d: Reset port0 TSF fail\n", + __FUNCTION__, __LINE__); + } +#endif // CONFIG_TSF_RESET_OFFLOAD + + } + + + } + +} + +static void hw_var_set_macaddr(PADAPTER Adapter, u8 variable, u8* val) +{ + u8 idx = 0; + u32 reg_macid; + +#ifdef CONFIG_CONCURRENT_MODE + if(Adapter->iface_type == IFACE_PORT1) + { + reg_macid = REG_MACID1; + } + else +#endif + { + reg_macid = REG_MACID; + } + + for(idx = 0 ; idx < 6; idx++) + { + rtw_write8(Adapter, (reg_macid+idx), val[idx]); + } + +} + +static void hw_var_set_bssid(PADAPTER Adapter, u8 variable, u8* val) +{ + u8 idx = 0; + u32 reg_bssid; + +#ifdef CONFIG_CONCURRENT_MODE + if(Adapter->iface_type == IFACE_PORT1) + { + reg_bssid = REG_BSSID1; + } + else +#endif + { + reg_bssid = REG_BSSID; + } + + for(idx = 0 ; idx < 6; idx++) + { + rtw_write8(Adapter, (reg_bssid+idx), val[idx]); + } + +} + +static void hw_var_set_bcn_func(PADAPTER Adapter, u8 variable, u8* val) +{ + u32 bcn_ctrl_reg; + +#ifdef CONFIG_CONCURRENT_MODE + if(Adapter->iface_type == IFACE_PORT1) + { + bcn_ctrl_reg = REG_BCN_CTRL_1; + + if(*((u8 *)val)) + { + rtw_write8(Adapter, bcn_ctrl_reg, (EN_BCN_FUNCTION | EN_TXBCN_RPT)); + } + else + { + rtw_write8(Adapter, bcn_ctrl_reg, rtw_read8(Adapter, bcn_ctrl_reg)&(~(EN_BCN_FUNCTION | EN_TXBCN_RPT))); + } + } + else +#endif + { + bcn_ctrl_reg = REG_BCN_CTRL; + if(*((u8 *)val)) + { + rtw_write8(Adapter, bcn_ctrl_reg, (EN_BCN_FUNCTION | EN_TXBCN_RPT)); + } + else + { + //rtw_write8(Adapter, bcn_ctrl_reg, rtw_read8(Adapter, bcn_ctrl_reg)&(~(EN_BCN_FUNCTION | EN_TXBCN_RPT))); + rtw_write8(Adapter, bcn_ctrl_reg, (rtw_read8(Adapter, bcn_ctrl_reg)&(~(EN_TXBCN_RPT))) | DIS_TSF_UDT0_NORMAL_CHIP); + } + } + + +} + +#ifdef CONFIG_WOWLAN +static int rtw_wowlan_set_pattern(_adapter *padapter ,u8* pbuf){ + struct pwrctrl_priv *pwrpriv=&padapter->pwrctrlpriv; + int res=0,crc_idx; + u32 content=0,cmd=0; + u32 *pdata; + u8 config,crc,mc,bc,uc,idx,pattern_len,packet[200],packet_len,valid; + u16 crc_val=0,i; + + config=pbuf[0]; + bc=config & BIT(3)?1:0; + mc=config & BIT(4)?1:0; + uc=config & BIT(5)?1:0; + idx=config & 0x7; + crc=config & BIT(6)?1:0; + valid=config & BIT(7)?1:0; + pattern_len=pbuf[1]; + packet_len=pattern_len*8; + pdata=(u32 *)pbuf; + + // Write to the Wakeup CAM + //offset 0 + if(pattern_len>=4){ + content=pdata[1]; + } + else{ + content=0; + } + DBG_8192C("\nrtw_wowlan_set_pattern offset[0] content 0x%x [cpu_to_le32 0x%x]\n", content,__cpu_to_le32(content)); + //rtw_write32(padapter, REG_WKFMCAM_RWD, __cpu_to_le32(content)); + pwrpriv->wowlan_pattern_context[idx][0]= __cpu_to_le32(content); + //cmd=BIT(31)|BIT(16)|(idx+0); + //rtw_write32(padapter, REG_WKFMCAM_CMD, cmd); + //offset 4 + if(pattern_len>=8){ + content=pdata[2]; + } + else{ + content=0; + } + DBG_8192C("rtw_wowlan_set_pattern offset[4] content 0x%x [cpu_to_le32 0x%x]\n", content,__cpu_to_le32(content)); + //rtw_write32(padapter, REG_WKFMCAM_RWD, __cpu_to_le32(content)); + pwrpriv->wowlan_pattern_context[idx][1]= __cpu_to_le32(content); + + //cmd=BIT(31)|BIT(16)|(idx+1); + //rtw_write32(padapter, REG_WKFMCAM_CMD, cmd); + //offset 8 + if(pattern_len>=12){ + content=pdata[3]; + } + else{ + content=0; + } + DBG_8192C("rtw_wowlan_set_pattern offset[8] content 0x%x [cpu_to_le32 0x%x]\n", content,__cpu_to_le32(content)); + //rtw_write32(padapter, REG_WKFMCAM_RWD, __cpu_to_le32(content)); + pwrpriv->wowlan_pattern_context[idx][2]= __cpu_to_le32(content); + //cmd=BIT(31)|BIT(16)|(idx+2); + //rtw_write32(padapter, REG_WKFMCAM_CMD, cmd); + //offset 12 + if(pattern_len>=16){ + content=pdata[4]; + } + else{ + content=0; + } + DBG_8192C("rtw_wowlan_set_pattern offset[12] content 0x%x [cpu_to_le32 0x%x]\n", content,__cpu_to_le32(content)); + //rtw_write32(padapter, REG_WKFMCAM_RWD, __cpu_to_le32(content)); + pwrpriv->wowlan_pattern_context[idx][3]= __cpu_to_le32(content); + //cmd=BIT(31)|BIT(16)|(idx+3); + //rtw_write32(padapter, REG_WKFMCAM_CMD, cmd); + + if(crc){ + // Have the CRC value + crc_val=*(u16 *)(&pbuf[2]); + DBG_8192C("rtw_wowlan_set_pattern crc_val 0x%x \n", crc_val); + crc_val=__cpu_to_le16(crc_val); + DBG_8192C("rtw_wowlan_set_pattern crc_val after 0x%x \n", crc_val); + } + else{ + DBG_8192C("+rtw_wowlan_set_pattern crc=0[%x] Should calculate the CRC\n", crc); + // calculate the CRC the write to the Wakeup CAM + crc_idx=0; + for(i=0;iwowlan_pattern_context[idx][4]= content; + //cmd=BIT(31)|BIT(16)|(idx+4); + //rtw_write32(padapter, REG_WKFMCAM_CMD, cmd); + pwrpriv->wowlan_pattern_idx|=BIT(idx); + +_rtw_wowlan_set_pattern_exit: + return res; +} + + + +void rtw_wowlan_reload_pattern(_adapter *padapter){ + struct pwrctrl_priv *pwrpriv=&padapter->pwrctrlpriv; + u32 content=0,cmd=0; + u8 idx; + + for (idx=0;idx<8;idx ++){ + if(pwrpriv->wowlan_pattern_idx & BIT(idx)){ + //offset 0 + rtw_write32(padapter, REG_WKFMCAM_RWD, pwrpriv->wowlan_pattern_context[idx][0]); + cmd=BIT(31)|BIT(16)|(idx+0); + rtw_write32(padapter, REG_WKFMCAM_CMD, cmd); + + //offset 4 + rtw_write32(padapter, REG_WKFMCAM_RWD, pwrpriv->wowlan_pattern_context[idx][1]); + cmd=BIT(31)|BIT(16)|(idx+1); + rtw_write32(padapter, REG_WKFMCAM_CMD, cmd); + + //offset 8 + rtw_write32(padapter, REG_WKFMCAM_RWD, pwrpriv->wowlan_pattern_context[idx][2]); + cmd=BIT(31)|BIT(16)|(idx+2); + rtw_write32(padapter, REG_WKFMCAM_CMD, cmd); + + //offset 12 + rtw_write32(padapter, REG_WKFMCAM_RWD, pwrpriv->wowlan_pattern_context[idx][3]); + cmd=BIT(31)|BIT(16)|(idx+3); + rtw_write32(padapter, REG_WKFMCAM_CMD, cmd); + + //offset 16 + rtw_write32(padapter, REG_WKFMCAM_RWD, pwrpriv->wowlan_pattern_context[idx][4]); + cmd=BIT(31)|BIT(16)|(idx+4); + rtw_write32(padapter, REG_WKFMCAM_CMD, cmd); + + } + printk("print WOWCAM idx =%d\n",idx); + cmd=BIT(31)|(idx+0); + rtw_write32(padapter, REG_WKFMCAM_CMD, cmd); + printk("print WOWCAM offset[0] =%x\n",rtw_read32(padapter, REG_WKFMCAM_RWD)); + cmd=BIT(31)|(idx+1); + rtw_write32(padapter, REG_WKFMCAM_CMD, cmd); + printk("print WOWCAM offset[1] =%x\n",rtw_read32(padapter, REG_WKFMCAM_RWD)); + cmd=BIT(31)|(idx+2); + rtw_write32(padapter, REG_WKFMCAM_CMD, cmd); + printk("print WOWCAM offset[2] =%x\n",rtw_read32(padapter, REG_WKFMCAM_RWD)); + cmd=BIT(31)|(idx+3); + rtw_write32(padapter, REG_WKFMCAM_CMD, cmd); + printk("print WOWCAM offset[3] =%x\n",rtw_read32(padapter, REG_WKFMCAM_RWD)); + cmd=BIT(31)|(idx+4); + rtw_write32(padapter, REG_WKFMCAM_CMD, cmd); + printk("print WOWCAM offset[4] =%x\n",rtw_read32(padapter, REG_WKFMCAM_RWD)); + + + } +} +#endif //CONFIG_WOWLAN + +static void hw_var_set_correct_tsf(PADAPTER Adapter, u8 variable, u8* val) +{ +#ifdef CONFIG_CONCURRENT_MODE + u64 tsf; + struct mlme_ext_priv *pmlmeext = &Adapter->mlmeextpriv; + struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info); + + //tsf = pmlmeext->TSFValue - ((u32)pmlmeext->TSFValue % (pmlmeinfo->bcn_interval*1024)) -1024; //us + tsf = pmlmeext->TSFValue - rtw_modular64(pmlmeext->TSFValue, (pmlmeinfo->bcn_interval*1024)) -1024; //us + + if(((pmlmeinfo->state&0x03) == WIFI_FW_ADHOC_STATE) || ((pmlmeinfo->state&0x03) == WIFI_FW_AP_STATE)) + { + //pHalData->RegTxPause |= STOP_BCNQ;BIT(6) + //rtw_write8(Adapter, REG_TXPAUSE, (rtw_read8(Adapter, REG_TXPAUSE)|BIT(6))); + StopTxBeacon(Adapter); + } + + if(Adapter->iface_type == IFACE_PORT1) + { + //disable related TSF function + rtw_write8(Adapter, REG_BCN_CTRL_1, rtw_read8(Adapter, REG_BCN_CTRL_1)&(~BIT(3))); + + rtw_write32(Adapter, REG_TSFTR1, tsf); + rtw_write32(Adapter, REG_TSFTR1+4, tsf>>32); + + //enable related TSF function + rtw_write8(Adapter, REG_BCN_CTRL_1, rtw_read8(Adapter, REG_BCN_CTRL_1)|BIT(3)); + + +#ifdef CONFIG_TSF_RESET_OFFLOAD + // Update buddy port's TSF(TBTT) if it is SoftAP for beacon TX issue! + if ( (pmlmeinfo->state&0x03) == WIFI_FW_STATION_STATE + && check_buddy_fwstate(Adapter, WIFI_AP_STATE) ) { + if (reset_tsf(Adapter, IFACE_PORT0) == _FALSE) + DBG_871X("ERROR! %s()-%d: Reset port0 TSF fail\n", + __FUNCTION__, __LINE__); + } +#endif // CONFIG_TSF_RESET_OFFLOAD + + } + else // Adapter->iface_type == IFACE_PORT1 + { + //disable related TSF function + rtw_write8(Adapter, REG_BCN_CTRL, rtw_read8(Adapter, REG_BCN_CTRL)&(~BIT(3))); + // disable TSF update instead! May induce burst beacon TX + //rtw_write8(Adapter, REG_BCN_CTRL, rtw_read8(Adapter, REG_BCN_CTRL)|BIT(4)); + + rtw_write32(Adapter, REG_TSFTR, tsf); + rtw_write32(Adapter, REG_TSFTR+4, tsf>>32); + + //enable related TSF function + rtw_write8(Adapter, REG_BCN_CTRL, rtw_read8(Adapter, REG_BCN_CTRL)|BIT(3)); + //rtw_write8(Adapter, REG_BCN_CTRL, rtw_read8(Adapter, REG_BCN_CTRL)&(~BIT(4))); + + // Update buddy port's TSF if it is SoftAP for beacon TX issue! + if ( (pmlmeinfo->state&0x03) == WIFI_FW_STATION_STATE + && check_buddy_fwstate(Adapter, WIFI_AP_STATE) + ) { + //disable related TSF function + rtw_write8(Adapter, REG_BCN_CTRL_1, rtw_read8(Adapter, REG_BCN_CTRL_1)&(~BIT(3))); + // disable TSF update instead! + //rtw_write8(Adapter, REG_BCN_CTRL, rtw_read8(Adapter, REG_BCN_CTRL_1)|BIT(4)); + + rtw_write32(Adapter, REG_TSFTR1, tsf); + rtw_write32(Adapter, REG_TSFTR1+4, tsf>>32); + + //enable related TSF function + rtw_write8(Adapter, REG_BCN_CTRL_1, rtw_read8(Adapter, REG_BCN_CTRL_1)|BIT(3)); + //rtw_write8(Adapter, REG_BCN_CTRL, rtw_read8(Adapter, REG_BCN_CTRL_1)&(~BIT(4))); + } +#ifdef CONFIG_TSF_RESET_OFFLOAD + // Update buddy port's TSF if it is SoftAP for beacon TX issue! + if ( (pmlmeinfo->state&0x03) == WIFI_FW_STATION_STATE + && check_buddy_fwstate(Adapter, WIFI_AP_STATE) ) { + if (reset_tsf(Adapter, IFACE_PORT1) == _FALSE) + DBG_871X("ERROR! %s()-%d: Reset port1 TSF fail\n", + __FUNCTION__, __LINE__); + } +#endif // CONFIG_TSF_RESET_OFFLOAD + } + + if(((pmlmeinfo->state&0x03) == WIFI_FW_ADHOC_STATE) || ((pmlmeinfo->state&0x03) == WIFI_FW_AP_STATE)) + { + //pHalData->RegTxPause &= (~STOP_BCNQ); + //rtw_write8(Adapter, REG_TXPAUSE, (rtw_read8(Adapter, REG_TXPAUSE)&(~BIT(6)))); + ResumeTxBeacon(Adapter); + } +#endif // CONFIG_CONCURRENT_MODE +} + +static void hw_var_set_mlme_disconnect(PADAPTER Adapter, u8 variable, u8* val) +{ +#ifdef CONFIG_CONCURRENT_MODE + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); + PADAPTER pbuddy_adapter = Adapter->pbuddy_adapter; + + + if(check_buddy_mlmeinfo_state(Adapter, _HW_STATE_NOLINK_)) + rtw_write16(Adapter, REG_RXFLTMAP2, 0x00); + + + if(Adapter->iface_type == IFACE_PORT1) + { + int i; + u8 reg_bcn_ctrl_1; + + // a.Driver set 0x422 bit 6 =0 + rtw_write8(Adapter, REG_FWHW_TXQ_CTRL+2, (pHalData->RegFwHwTxQCtrl) & (~BIT6)); + pHalData->RegFwHwTxQCtrl &= (~BIT6); + + +#ifdef CONFIG_BEACON_DISABLE_OFFLOAD + u8 reg_bcn_disable_cnt = rtw_read8(Adapter, REG_FW_BCN_DIS_CNT); + DBG_871X("%s()-%d: reg_bcn_disable_cnt=%02x\n", __FUNCTION__, __LINE__, reg_bcn_disable_cnt); + + reg_bcn_ctrl_1 = rtw_read8(Adapter, REG_BCN_CTRL_1); + DBG_871X("%s()-%d: reg_bcn_ctrl_1=%02x\n", __FUNCTION__, __LINE__, reg_bcn_ctrl_1); + + // b. driver set h2c cmd + rtl8192c_dis_beacon_fun_cmd(Adapter); + + /* + // FW Job for port 0 + + c. 8051 set nettype to ap + d. 8051 check dma_int + e. 8051 set nettype to no_link + f.8051 dis_tsf_update 0x550 bit 4 + g.8051 reset beacon function test count 0x553 bit0. + h.8051 disable beacon function 0x550 bit3 + i. 8051 sent ready to driver + + */ + + // The worst case is 100 + 15 ms + rtw_msleep_os(120); + + for (i=0; i< 10; i++) { + reg_bcn_ctrl_1 = rtw_read8(Adapter, REG_BCN_CTRL_1); + if ( (reg_bcn_ctrl_1 & BIT(3)) == 0 ) { + //DBG_871X("%s()-%d: BEACON_DISABLE_OFFLOAD finished! reg=%02x\n", __FUNCTION__, __LINE__, reg); + break; + } + DBG_871X("%s()-%d: BEACON_DISABLE_OFFLOAD not finished! REG_BCN_CTRL_1=%02x\n", __FUNCTION__, __LINE__, reg_bcn_ctrl_1); + DBG_871X("%s()-%d: reg_bcn_disable_cnt=%02x\n", __FUNCTION__, __LINE__, rtw_read8(Adapter, REG_FW_BCN_DIS_CNT)); + DBG_871X("%s()-%d: REG_BCN_CTRL=%02x\n", __FUNCTION__, __LINE__, rtw_read8(Adapter, REG_BCN_CTRL)); + DBG_871X("%s()-%d: FWISR=%08x\n", __FUNCTION__, __LINE__, rtw_read32(Adapter, REG_FWISR)); + rtw_msleep_os(100); + } + DBG_871X("%s()-%d: reg_bcn_disable_cnt=%02x\n", __FUNCTION__, __LINE__, rtw_read8(Adapter, REG_FW_BCN_DIS_CNT)); + DBG_871X("%s()-%d: reg_bcn_ctrl_1=%02x\n", __FUNCTION__, __LINE__, reg_bcn_ctrl_1); + +#else // CONFIG_BEACON_DISABLE_OFFLOAD + + //disable update TSF1 + rtw_write8(Adapter, REG_BCN_CTRL_1, rtw_read8(Adapter, REG_BCN_CTRL_1)|BIT(4)); + + //reset TSF1 + rtw_write8(Adapter, REG_DUAL_TSF_RST, BIT(1)); + + // disable Port1's beacon function + rtw_write8(Adapter, REG_BCN_CTRL_1, rtw_read8(Adapter, REG_BCN_CTRL_1)&(~BIT(3))); + +#endif // CONFIG_BEACON_DISABLE_OFFLOAD + + // j, Driver set 0x422 bit 6 =1 + rtw_write8(Adapter, REG_FWHW_TXQ_CTRL+2, (pHalData->RegFwHwTxQCtrl) | BIT6); + pHalData->RegFwHwTxQCtrl |= BIT6; + + // k. re_download beacon pkt + if(check_buddy_mlmeinfo_state(Adapter, WIFI_FW_AP_STATE)) + set_tx_beacon_cmd(pbuddy_adapter); + + + } + else // (Adapter->iface_type == IFACE_PORT1) + { + //disable update TSF + rtw_write8(Adapter, REG_BCN_CTRL, rtw_read8(Adapter, REG_BCN_CTRL)|BIT(4)); + + //reset TSF + rtw_write8(Adapter, REG_DUAL_TSF_RST, BIT(0)); + + // Can't disable Port0's beacon function due to it is used by RA + } +#endif +} + +static void hw_var_set_mlme_sitesurvey(PADAPTER Adapter, u8 variable, u8* val) +{ + u32 value_rcr, rcr_clear_bit, reg_bcn_ctl; + u16 value_rxfltmap2; + struct mlme_priv *pmlmepriv=&(Adapter->mlmepriv); + + +#ifdef CONFIG_CONCURRENT_MODE + if(Adapter->iface_type == IFACE_PORT1) + reg_bcn_ctl = REG_BCN_CTRL_1; + else +#endif + reg_bcn_ctl = REG_BCN_CTRL; + +#ifdef CONFIG_FIND_BEST_CHANNEL + + if( (check_fwstate(pmlmepriv, WIFI_AP_STATE) == _TRUE) +#ifdef CONFIG_CONCURRENT_MODE + || (check_buddy_fwstate(Adapter, WIFI_AP_STATE) == _TRUE) +#endif +#ifdef CONFIG_TDLS + // TDLS will clear RCR_CBSSID_DATA bit for connection. + || ( Adapter->tdlsinfo.setup_state & TDLS_LINKED_STATE ) +#endif // CONFIG_TDLS + ) + { + rcr_clear_bit = RCR_CBSSID_BCN; + } + else + { + rcr_clear_bit = (RCR_CBSSID_BCN | RCR_CBSSID_DATA); + } + + // Recieve all data frames + value_rxfltmap2 = 0xFFFF; + +#else /* CONFIG_FIND_BEST_CHANNEL */ + + rcr_clear_bit = RCR_CBSSID_BCN; + + //config RCR to receive different BSSID & not to receive data frame + value_rxfltmap2 = 0; + +#endif /* CONFIG_FIND_BEST_CHANNEL */ + + value_rcr = rtw_read32(Adapter, REG_RCR); + + if(*((u8 *)val))//under sitesurvey + { + value_rcr &= ~(rcr_clear_bit); + rtw_write32(Adapter, REG_RCR, value_rcr); + + rtw_write16(Adapter, REG_RXFLTMAP2, value_rxfltmap2); + + if (check_fwstate(pmlmepriv, WIFI_STATION_STATE | WIFI_ADHOC_STATE |WIFI_ADHOC_MASTER_STATE)) { + //disable update TSF + rtw_write8(Adapter, reg_bcn_ctl, rtw_read8(Adapter, reg_bcn_ctl)|BIT(4)); + } + +#ifdef CONFIG_CONCURRENT_MODE + if(check_buddy_mlmeinfo_state(Adapter, WIFI_FW_AP_STATE) && + check_buddy_fwstate(Adapter, _FW_LINKED)) + { + StopTxBeacon(Adapter); + } +#endif + } + else//sitesurvey done + { + if(check_fwstate(pmlmepriv, _FW_LINKED) || check_fwstate(pmlmepriv, WIFI_AP_STATE) +#ifdef CONFIG_CONCURRENT_MODE + || check_buddy_fwstate(Adapter, _FW_LINKED) || check_buddy_fwstate(Adapter, WIFI_AP_STATE) +#endif + ) + { + //enable to rx data frame + rtw_write16(Adapter, REG_RXFLTMAP2,0xFFFF); + } + + if (check_fwstate(pmlmepriv, WIFI_STATION_STATE | WIFI_ADHOC_STATE |WIFI_ADHOC_MASTER_STATE)) { + //enable update TSF + rtw_write8(Adapter, reg_bcn_ctl, rtw_read8(Adapter, reg_bcn_ctl)&(~BIT(4))); + } + + value_rcr |= rcr_clear_bit; + rtw_write32(Adapter, REG_RCR, value_rcr); + +#ifdef CONFIG_CONCURRENT_MODE + if(check_buddy_mlmeinfo_state(Adapter, WIFI_FW_AP_STATE) && + check_buddy_fwstate(Adapter, _FW_LINKED)) + { + ResumeTxBeacon(Adapter); + } +#endif + } +} + +static void hw_var_set_mlme_join(PADAPTER Adapter, u8 variable, u8* val) +{ +#ifdef CONFIG_CONCURRENT_MODE + u8 RetryLimit = 0x30; + u8 type = *((u8 *)val); + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); + struct mlme_priv *pmlmepriv = &Adapter->mlmepriv; + + if(type == 0) // prepare to join + { + if(check_buddy_mlmeinfo_state(Adapter, WIFI_FW_AP_STATE) && + check_buddy_fwstate(Adapter, _FW_LINKED)) + { + StopTxBeacon(Adapter); + } + + //enable to rx data frame.Accept all data frame + //rtw_write32(padapter, REG_RCR, rtw_read32(padapter, REG_RCR)|RCR_ADF); + rtw_write16(Adapter, REG_RXFLTMAP2,0xFFFF); + + if(check_buddy_mlmeinfo_state(Adapter, WIFI_FW_AP_STATE)) + rtw_write32(Adapter, REG_RCR, rtw_read32(Adapter, REG_RCR)|RCR_CBSSID_BCN); + else + rtw_write32(Adapter, REG_RCR, rtw_read32(Adapter, REG_RCR)|RCR_CBSSID_DATA|RCR_CBSSID_BCN); + + if(check_fwstate(pmlmepriv, WIFI_STATION_STATE) == _TRUE) + { + RetryLimit = (pHalData->CustomerID == RT_CID_CCX) ? 7 : 48; + } + else // Ad-hoc Mode + { + RetryLimit = 0x7; + } + } + else if(type == 1) //joinbss_event call back when join res < 0 + { + if(check_buddy_mlmeinfo_state(Adapter, _HW_STATE_NOLINK_)) + rtw_write16(Adapter, REG_RXFLTMAP2,0x00); + + if(check_buddy_mlmeinfo_state(Adapter, WIFI_FW_AP_STATE) && + check_buddy_fwstate(Adapter, _FW_LINKED)) + { + ResumeTxBeacon(Adapter); + + //reset TSF 1/2 after ResumeTxBeacon + //rtw_write8(Adapter, REG_DUAL_TSF_RST, BIT(1)|BIT(0)); + + } + } + else if(type == 2) //sta add event call back + { + + //enable update TSF + if(Adapter->iface_type == IFACE_PORT1) + rtw_write8(Adapter, REG_BCN_CTRL_1, rtw_read8(Adapter, REG_BCN_CTRL_1)&(~BIT(4))); + else + rtw_write8(Adapter, REG_BCN_CTRL, rtw_read8(Adapter, REG_BCN_CTRL)&(~BIT(4))); + + + if(check_fwstate(pmlmepriv, WIFI_ADHOC_STATE|WIFI_ADHOC_MASTER_STATE)) + { + //fixed beacon issue for 8191su........... + rtw_write8(Adapter,0x542 ,0x02); + RetryLimit = 0x7; + } + + + if(check_buddy_mlmeinfo_state(Adapter, WIFI_FW_AP_STATE) && + check_buddy_fwstate(Adapter, _FW_LINKED)) + { + ResumeTxBeacon(Adapter); + + //reset TSF 1/2 after ResumeTxBeacon + //rtw_write8(Adapter, REG_DUAL_TSF_RST, BIT(1)|BIT(0)); + } + + } + + rtw_write16(Adapter, REG_RL, RetryLimit << RETRY_LIMIT_SHORT_SHIFT | RetryLimit << RETRY_LIMIT_LONG_SHIFT); + +#endif +} + +void SetHwReg8192CU(PADAPTER Adapter, u8 variable, u8* val) +{ + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); + struct dm_priv *pdmpriv = &pHalData->dmpriv; + +_func_enter_; + + switch(variable) + { + case HW_VAR_MEDIA_STATUS: + { + u8 val8; + + val8 = rtw_read8(Adapter, MSR)&0x0c; + val8 |= *((u8 *)val); + rtw_write8(Adapter, MSR, val8); + } + break; + case HW_VAR_MEDIA_STATUS1: + { + u8 val8; + + val8 = rtw_read8(Adapter, MSR)&0x03; + val8 |= *((u8 *)val) <<2; + rtw_write8(Adapter, MSR, val8); + } + break; + case HW_VAR_SET_OPMODE: + hw_var_set_opmode(Adapter, variable, val); + break; + case HW_VAR_MAC_ADDR: + hw_var_set_macaddr(Adapter, variable, val); + break; + case HW_VAR_BSSID: + hw_var_set_bssid(Adapter, variable, val); + break; + case HW_VAR_BASIC_RATE: + { + u16 BrateCfg = 0; + u8 RateIndex = 0; + + // 2007.01.16, by Emily + // Select RRSR (in Legacy-OFDM and CCK) + // For 8190, we select only 24M, 12M, 6M, 11M, 5.5M, 2M, and 1M from the Basic rate. + // We do not use other rates. + HalSetBrateCfg( Adapter, val, &BrateCfg ); + + //2011.03.30 add by Luke Lee + //CCK 2M ACK should be disabled for some BCM and Atheros AP IOT + //because CCK 2M has poor TXEVM + //CCK 5.5M & 11M ACK should be enabled for better performance + + pHalData->BasicRateSet = BrateCfg = (BrateCfg |0xd) & 0x15d; + + BrateCfg |= 0x01; // default enable 1M ACK rate + + DBG_8192C("HW_VAR_BASIC_RATE: BrateCfg(%#x)\n", BrateCfg); + + // Set RRSR rate table. + rtw_write8(Adapter, REG_RRSR, BrateCfg&0xff); + rtw_write8(Adapter, REG_RRSR+1, (BrateCfg>>8)&0xff); + rtw_write8(Adapter, REG_RRSR+2, rtw_read8(Adapter, REG_RRSR+2)&0xf0); + + // Set RTS initial rate + while(BrateCfg > 0x1) + { + BrateCfg = (BrateCfg>> 1); + RateIndex++; + } + // Ziv - Check + rtw_write8(Adapter, REG_INIRTS_RATE_SEL, RateIndex); + } + break; + case HW_VAR_TXPAUSE: + rtw_write8(Adapter, REG_TXPAUSE, *((u8 *)val)); + break; + case HW_VAR_BCN_FUNC: + hw_var_set_bcn_func(Adapter, variable, val); + break; + case HW_VAR_CORRECT_TSF: +#ifdef CONFIG_CONCURRENT_MODE + hw_var_set_correct_tsf(Adapter, variable, val); +#else + { + u64 tsf; + struct mlme_ext_priv *pmlmeext = &Adapter->mlmeextpriv; + struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info); + + //tsf = pmlmeext->TSFValue - ((u32)pmlmeext->TSFValue % (pmlmeinfo->bcn_interval*1024)) -1024; //us + tsf = pmlmeext->TSFValue - rtw_modular64(pmlmeext->TSFValue, (pmlmeinfo->bcn_interval*1024)) -1024; //us + + if(((pmlmeinfo->state&0x03) == WIFI_FW_ADHOC_STATE) || ((pmlmeinfo->state&0x03) == WIFI_FW_AP_STATE)) + { + //pHalData->RegTxPause |= STOP_BCNQ;BIT(6) + //rtw_write8(Adapter, REG_TXPAUSE, (rtw_read8(Adapter, REG_TXPAUSE)|BIT(6))); + StopTxBeacon(Adapter); + } + + //disable related TSF function + rtw_write8(Adapter, REG_BCN_CTRL, rtw_read8(Adapter, REG_BCN_CTRL)&(~BIT(3))); + + rtw_write32(Adapter, REG_TSFTR, tsf); + rtw_write32(Adapter, REG_TSFTR+4, tsf>>32); + + //enable related TSF function + rtw_write8(Adapter, REG_BCN_CTRL, rtw_read8(Adapter, REG_BCN_CTRL)|BIT(3)); + + + if(((pmlmeinfo->state&0x03) == WIFI_FW_ADHOC_STATE) || ((pmlmeinfo->state&0x03) == WIFI_FW_AP_STATE)) + { + //pHalData->RegTxPause &= (~STOP_BCNQ); + //rtw_write8(Adapter, REG_TXPAUSE, (rtw_read8(Adapter, REG_TXPAUSE)&(~BIT(6)))); + ResumeTxBeacon(Adapter); + } + } +#endif + break; + case HW_VAR_CHECK_BSSID: + if(*((u8 *)val)) + { + rtw_write32(Adapter, REG_RCR, rtw_read32(Adapter, REG_RCR)|RCR_CBSSID_DATA|RCR_CBSSID_BCN); + } + else + { + u32 val32; + + val32 = rtw_read32(Adapter, REG_RCR); + val32 &= ~(RCR_CBSSID_DATA | RCR_CBSSID_BCN); + rtw_write32(Adapter, REG_RCR, val32); + } + break; + case HW_VAR_MLME_DISCONNECT: +#ifdef CONFIG_CONCURRENT_MODE + hw_var_set_mlme_disconnect(Adapter, variable, val); +#else + { + //Set RCR to not to receive data frame when NO LINK state + //rtw_write32(Adapter, REG_RCR, rtw_read32(padapter, REG_RCR) & ~RCR_ADF); + //reject all data frames + rtw_write16(Adapter, REG_RXFLTMAP2,0x00); + + //reset TSF + rtw_write8(Adapter, REG_DUAL_TSF_RST, (BIT(0)|BIT(1))); + + //disable update TSF + rtw_write8(Adapter, REG_BCN_CTRL, rtw_read8(Adapter, REG_BCN_CTRL)|BIT(4)); + } +#endif + break; + case HW_VAR_MLME_SITESURVEY: + hw_var_set_mlme_sitesurvey(Adapter, variable, val); + break; + case HW_VAR_MLME_JOIN: +#ifdef CONFIG_CONCURRENT_MODE + hw_var_set_mlme_join(Adapter, variable, val); +#else + { + u8 RetryLimit = 0x30; + u8 type = *((u8 *)val); + struct mlme_priv *pmlmepriv = &Adapter->mlmepriv; + + if(type == 0) // prepare to join + { + //enable to rx data frame.Accept all data frame + //rtw_write32(padapter, REG_RCR, rtw_read32(padapter, REG_RCR)|RCR_ADF); + rtw_write16(Adapter, REG_RXFLTMAP2,0xFFFF); + + rtw_write32(Adapter, REG_RCR, rtw_read32(Adapter, REG_RCR)|RCR_CBSSID_DATA|RCR_CBSSID_BCN); + + if(check_fwstate(pmlmepriv, WIFI_STATION_STATE) == _TRUE) + { + RetryLimit = (pHalData->CustomerID == RT_CID_CCX) ? 7 : 48; + } + else // Ad-hoc Mode + { + RetryLimit = 0x7; + } + } + else if(type == 1) //joinbss_event call back when join res < 0 + { + rtw_write16(Adapter, REG_RXFLTMAP2,0x00); + } + else if(type == 2) //sta add event call back + { + //enable update TSF + rtw_write8(Adapter, REG_BCN_CTRL, rtw_read8(Adapter, REG_BCN_CTRL)&(~BIT(4))); + + if(check_fwstate(pmlmepriv, WIFI_ADHOC_STATE|WIFI_ADHOC_MASTER_STATE)) + { + //fixed beacon issue for 8191su........... + rtw_write8(Adapter,0x542 ,0x02); + RetryLimit = 0x7; + } + } + + rtw_write16(Adapter, REG_RL, RetryLimit << RETRY_LIMIT_SHORT_SHIFT | RetryLimit << RETRY_LIMIT_LONG_SHIFT); + } +#endif + break; + + case HW_VAR_ON_RCR_AM: + rtw_write32(Adapter, REG_RCR, rtw_read32(Adapter, REG_RCR)|RCR_AM); + DBG_871X("%s, %d, RCR= %x \n", __FUNCTION__,__LINE__, rtw_read32(Adapter, REG_RCR)); + break; + case HW_VAR_OFF_RCR_AM: + rtw_write32(Adapter, REG_RCR, rtw_read32(Adapter, REG_RCR)& (~RCR_AM)); + DBG_871X("%s, %d, RCR= %x \n", __FUNCTION__,__LINE__, rtw_read32(Adapter, REG_RCR)); + break; + + case HW_VAR_BEACON_INTERVAL: + rtw_write16(Adapter, REG_BCN_INTERVAL, *((u16 *)val)); + break; + case HW_VAR_SLOT_TIME: + { + u8 u1bAIFS, aSifsTime; + struct mlme_ext_priv *pmlmeext = &Adapter->mlmeextpriv; + struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info); + + rtw_write8(Adapter, REG_SLOT, val[0]); + + if(pmlmeinfo->WMM_enable == 0) + { + if( pmlmeext->cur_wireless_mode == WIRELESS_11B) + aSifsTime = 10; + else + aSifsTime = 16; + + u1bAIFS = aSifsTime + (2 * pmlmeinfo->slotTime); + + // Temporary removed, 2008.06.20. + rtw_write8(Adapter, REG_EDCA_VO_PARAM, u1bAIFS); + rtw_write8(Adapter, REG_EDCA_VI_PARAM, u1bAIFS); + rtw_write8(Adapter, REG_EDCA_BE_PARAM, u1bAIFS); + rtw_write8(Adapter, REG_EDCA_BK_PARAM, u1bAIFS); + } + } + break; + case HW_VAR_RESP_SIFS: + { +#if 0 + // SIFS for OFDM Data ACK + rtw_write8(Adapter, REG_SIFS_CTX+1, val[0]); + // SIFS for OFDM consecutive tx like CTS data! + rtw_write8(Adapter, REG_SIFS_TRX+1, val[1]); + + rtw_write8(Adapter,REG_SPEC_SIFS+1, val[0]); + rtw_write8(Adapter,REG_MAC_SPEC_SIFS+1, val[0]); + + // 20100719 Joseph: Revise SIFS setting due to Hardware register definition change. + rtw_write8(Adapter, REG_R2T_SIFS+1, val[0]); //0x08 - CCK + rtw_write8(Adapter, REG_T2T_SIFS+1, val[0]); //0x0e - OFDM +#else + //SIFS_Timer = 0x0a0a0808; + //RESP_SIFS for CCK + rtw_write8(Adapter, REG_R2T_SIFS, val[0]); // SIFS_T2T_CCK (0x08) + rtw_write8(Adapter, REG_R2T_SIFS+1, val[1]); //SIFS_R2T_CCK(0x08) + //RESP_SIFS for OFDM + rtw_write8(Adapter, REG_T2T_SIFS, val[2]); //SIFS_T2T_OFDM (0x0a) + rtw_write8(Adapter, REG_T2T_SIFS+1, val[3]); //SIFS_R2T_OFDM(0x0a) +#endif + } + break; + case HW_VAR_ACK_PREAMBLE: + { + u8 regTmp; + u8 bShortPreamble = *( (PBOOLEAN)val ); + // Joseph marked out for Netgear 3500 TKIP channel 7 issue.(Temporarily) + regTmp = (pHalData->nCur40MhzPrimeSC)<<5; + //regTmp = 0; + if(bShortPreamble) + regTmp |= 0x80; + + rtw_write8(Adapter, REG_RRSR+2, regTmp); + } + break; + case HW_VAR_SEC_CFG: +#ifdef CONFIG_CONCURRENT_MODE + rtw_write8(Adapter, REG_SECCFG, 0x0c|BIT(5));// enable tx enc and rx dec engine, and no key search for MC/BC +#else + rtw_write8(Adapter, REG_SECCFG, *((u8 *)val)); +#endif + break; + case HW_VAR_DM_FLAG: + pdmpriv->DMFlag = *((u8 *)val); + break; + case HW_VAR_DM_FUNC_OP: + if(val[0]) + {// save dm flag + pdmpriv->DMFlag_tmp = pdmpriv->DMFlag; + } + else + {// restore dm flag + pdmpriv->DMFlag = pdmpriv->DMFlag_tmp; + } + break; + case HW_VAR_DM_FUNC_SET: + pdmpriv->DMFlag |= *((u8 *)val); + break; + case HW_VAR_DM_FUNC_CLR: + pdmpriv->DMFlag &= *((u8 *)val); + break; + case HW_VAR_CAM_EMPTY_ENTRY: + { + u8 ucIndex = *((u8 *)val); + u8 i; + u32 ulCommand=0; + u32 ulContent=0; + u32 ulEncAlgo=CAM_AES; + + for(i=0;iAcParam_BE = ((u32 *)(val))[0]; + rtw_write32(Adapter, REG_EDCA_BE_PARAM, ((u32 *)(val))[0]); + break; + case HW_VAR_AC_PARAM_BK: + rtw_write32(Adapter, REG_EDCA_BK_PARAM, ((u32 *)(val))[0]); + break; + case HW_VAR_ACM_CTRL: + { + u8 acm_ctrl = *((u8 *)val); + u8 AcmCtrl = rtw_read8( Adapter, REG_ACMHWCTRL); + + if(acm_ctrl > 1) + AcmCtrl = AcmCtrl | 0x1; + + if(acm_ctrl & BIT(3)) + AcmCtrl |= AcmHw_VoqEn; + else + AcmCtrl &= (~AcmHw_VoqEn); + + if(acm_ctrl & BIT(2)) + AcmCtrl |= AcmHw_ViqEn; + else + AcmCtrl &= (~AcmHw_ViqEn); + + if(acm_ctrl & BIT(1)) + AcmCtrl |= AcmHw_BeqEn; + else + AcmCtrl &= (~AcmHw_BeqEn); + + DBG_871X("[HW_VAR_ACM_CTRL] Write 0x%X\n", AcmCtrl ); + rtw_write8(Adapter, REG_ACMHWCTRL, AcmCtrl ); + } + break; + case HW_VAR_AMPDU_MIN_SPACE: + { + u8 MinSpacingToSet; + u8 SecMinSpace; + + MinSpacingToSet = *((u8 *)val); + if(MinSpacingToSet <= 7) + { + switch(Adapter->securitypriv.dot11PrivacyAlgrthm) + { + case _NO_PRIVACY_: + case _AES_: + SecMinSpace = 0; + break; + + case _WEP40_: + case _WEP104_: + case _TKIP_: + case _TKIP_WTMIC_: + SecMinSpace = 6; + break; + default: + SecMinSpace = 7; + break; + } + + if(MinSpacingToSet < SecMinSpace){ + MinSpacingToSet = SecMinSpace; + } + + //RT_TRACE(COMP_MLME, DBG_LOUD, ("Set HW_VAR_AMPDU_MIN_SPACE: %#x\n", Adapter->MgntInfo.MinSpaceCfg)); + rtw_write8(Adapter, REG_AMPDU_MIN_SPACE, (rtw_read8(Adapter, REG_AMPDU_MIN_SPACE) & 0xf8) | MinSpacingToSet); + } + } + break; + case HW_VAR_AMPDU_FACTOR: + { + u8 RegToSet_Normal[4]={0x41,0xa8,0x72, 0xb9}; + u8 RegToSet_BT[4]={0x31,0x74,0x42, 0x97}; + u8 FactorToSet; + u8 *pRegToSet; + u8 index = 0; + +#ifdef CONFIG_BT_COEXIST + if( (pHalData->bt_coexist.BT_Coexist) && + (pHalData->bt_coexist.BT_CoexistType == BT_CSR_BC4) ) + pRegToSet = RegToSet_BT; // 0x97427431; + else +#endif + pRegToSet = RegToSet_Normal; // 0xb972a841; + + FactorToSet = *((u8 *)val); + if(FactorToSet <= 3) + { + FactorToSet = (1<<(FactorToSet + 2)); + if(FactorToSet>0xf) + FactorToSet = 0xf; + + for(index=0; index<4; index++) + { + if((pRegToSet[index] & 0xf0) > (FactorToSet<<4)) + pRegToSet[index] = (pRegToSet[index] & 0x0f) | (FactorToSet<<4); + + if((pRegToSet[index] & 0x0f) > FactorToSet) + pRegToSet[index] = (pRegToSet[index] & 0xf0) | (FactorToSet); + + rtw_write8(Adapter, (REG_AGGLEN_LMT+index), pRegToSet[index]); + } + + //RT_TRACE(COMP_MLME, DBG_LOUD, ("Set HW_VAR_AMPDU_FACTOR: %#x\n", FactorToSet)); + } + } + break; + case HW_VAR_RXDMA_AGG_PG_TH: + #ifdef CONFIG_USB_RX_AGGREGATION + { + u8 threshold = *((u8 *)val); + if( threshold == 0) + { + threshold = pHalData->UsbRxAggPageCount; + } + rtw_write8(Adapter, REG_RXDMA_AGG_PG_TH, threshold); + } + #endif + break; + case HW_VAR_SET_RPWM: + rtw_write8(Adapter, REG_USB_HRPWM, *((u8 *)val)); + break; + case HW_VAR_H2C_FW_PWRMODE: + { + u8 psmode = (*(u8 *)val); + + // Forece leave RF low power mode for 1T1R to prevent conficting setting in Fw power + // saving sequence. 2010.06.07. Added by tynli. Suggested by SD3 yschang. + if( (psmode != PS_MODE_ACTIVE) && (!IS_92C_SERIAL(pHalData->VersionID))) + { + rtl8192c_dm_RF_Saving(Adapter, _TRUE); + } + rtl8192c_set_FwPwrMode_cmd(Adapter, psmode); + } + break; + case HW_VAR_H2C_FW_JOINBSSRPT: + { + u8 mstatus = (*(u8 *)val); + rtl8192c_set_FwJoinBssReport_cmd(Adapter, mstatus); + } + break; +#ifdef CONFIG_P2P_PS + case HW_VAR_H2C_FW_P2P_PS_OFFLOAD: + { + u8 p2p_ps_state = (*(u8 *)val); + rtl8192c_set_p2p_ps_offload_cmd(Adapter, p2p_ps_state); + } + break; +#endif // CONFIG_P2P_PS +#ifdef CONFIG_TDLS + case HW_VAR_TDLS_WRCR: + rtw_write32(Adapter, REG_RCR, rtw_read32(Adapter, REG_RCR)&(~ BIT(6) )); + break; + case HW_VAR_TDLS_INIT_CH_SEN: + { + rtw_write32(Adapter, REG_RCR, rtw_read32(Adapter, REG_RCR)&(~ BIT(6) )&(~ BIT(7) )); + rtw_write16(Adapter, REG_RXFLTMAP2,0xffff); + + //disable update TSF + rtw_write8(Adapter, REG_BCN_CTRL, rtw_read8(Adapter, REG_BCN_CTRL)|BIT(4)); + } + break; + case HW_VAR_TDLS_DONE_CH_SEN: + { + //enable update TSF + rtw_write8(Adapter, REG_BCN_CTRL, rtw_read8(Adapter, REG_BCN_CTRL)&(~ BIT(4))); + rtw_write32(Adapter, REG_RCR, rtw_read32(Adapter, REG_RCR)|(BIT(7) )); + } + break; + case HW_VAR_TDLS_RS_RCR: + rtw_write32(Adapter, REG_RCR, rtw_read32(Adapter, REG_RCR)|(BIT(6))); + break; +#endif //CONFIG_TDLS + case HW_VAR_INITIAL_GAIN: + { + DIG_T *pDigTable = &pdmpriv->DM_DigTable; + u32 rx_gain = ((u32 *)(val))[0]; + + if(rx_gain == 0xff){//restore rx gain + pDigTable->CurIGValue = pDigTable->BackupIGValue; + PHY_SetBBReg(Adapter, rOFDM0_XAAGCCore1, 0x7f,pDigTable->CurIGValue ); + PHY_SetBBReg(Adapter, rOFDM0_XBAGCCore1, 0x7f,pDigTable->CurIGValue); + } + else{ + pDigTable->BackupIGValue = pDigTable->CurIGValue; + PHY_SetBBReg(Adapter, rOFDM0_XAAGCCore1, 0x7f,rx_gain ); + PHY_SetBBReg(Adapter, rOFDM0_XBAGCCore1, 0x7f,rx_gain); + pDigTable->CurIGValue = (u8)rx_gain; + } + + + } + break; + case HW_VAR_TRIGGER_GPIO_0: + rtl8192cu_trigger_gpio_0(Adapter); + break; +#ifdef CONFIG_BT_COEXIST + case HW_VAR_BT_SET_COEXIST: + { + u8 bStart = (*(u8 *)val); + rtl8192c_set_dm_bt_coexist(Adapter, bStart); + } + break; + case HW_VAR_BT_ISSUE_DELBA: + { + u8 dir = (*(u8 *)val); + rtl8192c_issue_delete_ba(Adapter, dir); + } + break; +#endif +#ifdef CONFIG_SW_ANTENNA_DIVERSITY + + case HW_VAR_ANTENNA_DIVERSITY_LINK: + SwAntDivRestAfterLink8192C(Adapter); + break; + case HW_VAR_ANTENNA_DIVERSITY_SELECT: + { + u8 Optimum_antenna = (*(u8 *)val); + //switch antenna to Optimum_antenna + // DBG_8192C("==> HW_VAR_ANTENNA_DIVERSITY_SELECT , Ant_(%s)\n",(Optimum_antenna==2)?"A":"B"); + if(pHalData->CurAntenna != Optimum_antenna) + { + PHY_SetBBReg(Adapter, rFPGA0_XA_RFInterfaceOE, 0x300, Optimum_antenna); + pHalData->CurAntenna = Optimum_antenna ; + //DBG_8192C("==> HW_VAR_ANTENNA_DIVERSITY_SELECT , Ant_(%s)\n",(Optimum_antenna==2)?"A":"B"); + } + } + break; +#endif + case HW_VAR_EFUSE_BYTES: // To set EFUE total used bytes, added by Roger, 2008.12.22. + pHalData->EfuseUsedBytes = *((u16 *)val); + break; + case HW_VAR_FIFO_CLEARN_UP: + { + #define RW_RELEASE_EN BIT18 + #define RXDMA_IDLE BIT17 + + struct pwrctrl_priv *pwrpriv = &Adapter->pwrctrlpriv; + u8 trycnt = 100; + + //pause tx + rtw_write8(Adapter,REG_TXPAUSE,0xff); + + //keep sn + Adapter->xmitpriv.nqos_ssn = rtw_read16(Adapter,REG_NQOS_SEQ); + + if(pwrpriv->bkeepfwalive != _TRUE) + { + //RX DMA stop + rtw_write32(Adapter,REG_RXPKT_NUM,(rtw_read32(Adapter,REG_RXPKT_NUM)|RW_RELEASE_EN)); + do{ + if(!(rtw_read32(Adapter,REG_RXPKT_NUM)&RXDMA_IDLE)) + break; + }while(trycnt--); + if(trycnt ==0) + DBG_8192C("Stop RX DMA failed...... \n"); + + //RQPN Load 0 + rtw_write16(Adapter,REG_RQPN_NPQ,0x0); + rtw_write32(Adapter,REG_RQPN,0x80000000); + rtw_mdelay_os(10); + } + } + break; + case HW_VAR_WOWLAN: +#ifdef CONFIG_WOWLAN + { + struct wowlan_ioctl_param *poidparam; + + int res; + + poidparam = (struct wowlan_ioctl_param *)val; + switch (poidparam->subcode){ + case WOWLAN_PATTERN_MATCH: + //Turn on the Pattern Match feature + DBG_8192C("\n PATTERN_MATCH poidparam->subcode_value=%d\n",poidparam->subcode_value); + if(poidparam->subcode_value==1){ + //rtw_write8(Adapter, REG_WOW_CTRL, (rtw_read8(Adapter, REG_WOW_CTRL)|BIT(1))); + Adapter->pwrctrlpriv.wowlan_pattern=_TRUE; + DBG_8192C("%s Adapter->pwrctrlpriv.wowlan_pattern=%x\n",__FUNCTION__,Adapter->pwrctrlpriv.wowlan_pattern); + } + else{ + //rtw_write8(Adapter, REG_WOW_CTRL, (rtw_read8(Adapter, REG_WOW_CTRL)&~BIT(1))); + Adapter->pwrctrlpriv.wowlan_pattern=_FALSE; + } + break; + case WOWLAN_MAGIC_PACKET: + //Turn on the Magic Packet feature + DBG_8192C("\n MAGIC_PACKET poidparam->subcode_value=%d\n",poidparam->subcode_value); + if(poidparam->subcode_value==1){ + //rtw_write8(Adapter, REG_WOW_CTRL, (rtw_read8(Adapter, REG_WOW_CTRL)|BIT(2))); + Adapter->pwrctrlpriv.wowlan_magic=_TRUE; + DBG_8192C("%s Adapter->pwrctrlpriv.wowlan_magic=%x\n",__FUNCTION__,Adapter->pwrctrlpriv.wowlan_magic); + } + else{ + //rtw_write8(Adapter, REG_WOW_CTRL, (rtw_read8(Adapter, REG_WOW_CTRL)&~BIT(2))); + Adapter->pwrctrlpriv.wowlan_magic=_FALSE; + } + break; + case WOWLAN_UNICAST: + //Turn on the Unicast wakeup feature + if(poidparam->subcode_value==1){ + //rtw_write8(Adapter, REG_WOW_CTRL, (rtw_read8(Adapter, REG_WOW_CTRL)|BIT(3))); + Adapter->pwrctrlpriv.wowlan_unicast=_TRUE; + } + else{ + //rtw_write8(Adapter, REG_WOW_CTRL, (rtw_read8(Adapter, REG_WOW_CTRL)&~BIT(3))); + Adapter->pwrctrlpriv.wowlan_unicast=_FALSE; + DBG_8192C("%s Adapter->pwrctrlpriv.wowlan_unicast=%x\n",__FUNCTION__,Adapter->pwrctrlpriv.wowlan_unicast); + } + break; + case WOWLAN_SET_PATTERN: + //Setting the Pattern for wowlan + res=rtw_wowlan_set_pattern(Adapter,poidparam->pattern); + if(res) + DBG_8192C("rtw_wowlan_set_pattern retern value=0x%x",res); + break; + case WOWLAN_DUMP_REG: + //dump the WKFMCAM and WOW_CTRL register + /*DBG_8192C("\n\n\n\n rtw_wowlan_ctrl: WOW_CTRL=0x%x \n",rtw_read8(Adapter, REG_WOW_CTRL)); + DBG_8192C("print WKFMCAM index =%d ",poidparam->data[0]); + { int cmd=0,offset=0; + for(offset=0;offset<5;offset++){ + cmd=BIT(31)|(poidparam->data[0]+offset); + rtw_write32(Adapter, REG_WKFMCAM_CMD, cmd); + DBG_8192C("offset[%d]=0x%.8x ",offset,rtw_read32(Adapter, REG_WKFMCAM_RWD)); + DBG_8192C("offset[%d]=MSB 0x%x:0x%x:0x%x:0x%x ",offset,rtw_read8(Adapter, REG_WKFMCAM_RWD+3),rtw_read8(Adapter, REG_WKFMCAM_RWD+2),rtw_read8(Adapter, REG_WKFMCAM_RWD+1),rtw_read8(Adapter, REG_WKFMCAM_RWD)); + } + }*/ + + break; + case WOWLAN_ENABLE: + SetFwRelatedForWoWLAN8192CU(Adapter, _TRUE); + //Set Pattern + if(Adapter->pwrctrlpriv.wowlan_pattern==_TRUE) + rtw_wowlan_reload_pattern(Adapter); + rtl8192c_set_wowlan_cmd(Adapter); + rtw_write8(Adapter, 0x6, rtw_read8(Adapter, 0x6)|BIT(3)); + rtw_msleep_os(10); + //DBG_8192C(" \n REG_WOW_CTRL=0x%x \n",rtw_read8(Adapter, REG_WOW_CTRL)); +// if(rtw_read8(Adapter, REG_WOW_CTRL)==0) +// rtw_write8(Adapter, REG_WOW_CTRL, (rtw_read8(Adapter, REG_WOW_CTRL)|BIT(1)|BIT(2)|BIT(3))); + //DBG_8192C(" \n REG_WOW_CTRL=0x%x \n",rtw_read8(Adapter, REG_WOW_CTRL)); + break; + + case WOWLAN_DISABLE: + Adapter->pwrctrlpriv.wowlan_mode=_FALSE; + rtl8192c_set_wowlan_cmd(Adapter); + rtw_msleep_os(10); + break; + + case WOWLAN_STATUS: + poidparam->wakeup_reason = rtw_read8(Adapter, REG_WOWLAN_REASON); + DBG_8192C("wake on wlan reason 0x%02x\n", poidparam->wakeup_reason); + break; + + default: + break; + } + if (Adapter->pwrctrlpriv.wowlan_unicast||Adapter->pwrctrlpriv.wowlan_magic || Adapter->pwrctrlpriv.wowlan_pattern) + Adapter->pwrctrlpriv.wowlan_mode =_TRUE; + else + Adapter->pwrctrlpriv.wowlan_mode =_FALSE; + } + + break; +#endif //CONFIG_WOWLAN + case HW_VAR_CHECK_TXBUF: +#ifdef CONFIG_CONCURRENT_MODE + { + int i; + u8 RetryLimit = 0x01; + + //rtw_write16(Adapter, REG_RL,0x0101); + rtw_write16(Adapter, REG_RL, RetryLimit << RETRY_LIMIT_SHORT_SHIFT | RetryLimit << RETRY_LIMIT_LONG_SHIFT); + + for(i=0;i<1000;i++) + { + if(rtw_read32(Adapter, 0x200) != rtw_read32(Adapter, 0x204)) + { + //DBG_871X("packet in tx packet buffer - 0x204=%x, 0x200=%x (%d)\n", rtw_read32(Adapter, 0x204), rtw_read32(Adapter, 0x200), i); + rtw_msleep_os(10); + } + else + { + DBG_871X("no packet in tx packet buffer (%d)\n", i); + break; + } + } + + RetryLimit = 0x30; + rtw_write16(Adapter, REG_RL, RetryLimit << RETRY_LIMIT_SHORT_SHIFT | RetryLimit << RETRY_LIMIT_LONG_SHIFT); + + } +#endif + break; + case HW_VAR_BCN_VALID: + //BCN_VALID, BIT16 of REG_TDECTRL = BIT0 of REG_TDECTRL+2, write 1 to clear, Clear by sw + rtw_write8(Adapter, REG_TDECTRL+2, rtw_read8(Adapter, REG_TDECTRL+2) | BIT0); + break; + case HW_VAR_USB_RXAGG_PAGE_TO: + rtw_write8(Adapter, REG_USB_DMA_AGG_TO, *((u8 *)val)); + break; + default: + break; + } + +_func_exit_; +} + +void GetHwReg8192CU(PADAPTER Adapter, u8 variable, u8* val) +{ + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); + +_func_enter_; + + switch(variable) + { + case HW_VAR_BASIC_RATE: + *((u16 *)(val)) = pHalData->BasicRateSet; + case HW_VAR_TXPAUSE: + val[0] = rtw_read8(Adapter, REG_TXPAUSE); + break; + case HW_VAR_BCN_VALID: + //BCN_VALID, BIT16 of REG_TDECTRL = BIT0 of REG_TDECTRL+2 + val[0] = (BIT0 & rtw_read8(Adapter, REG_TDECTRL+2))?_TRUE:_FALSE; + break; + case HW_VAR_DM_FLAG: + val[0] = pHalData->dmpriv.DMFlag; + break; + case HW_VAR_RF_TYPE: + val[0] = pHalData->rf_type; + break; + case HW_VAR_FWLPS_RF_ON: + { + //When we halt NIC, we should check if FW LPS is leave. + u32 valRCR; + + if(Adapter->pwrctrlpriv.rf_pwrstate == rf_off) + { + // If it is in HW/SW Radio OFF or IPS state, we do not check Fw LPS Leave, + // because Fw is unload. + val[0] = _TRUE; + } + else + { + valRCR = rtw_read32(Adapter, REG_RCR); + valRCR &= 0x00070000; + if(valRCR) + val[0] = _FALSE; + else + val[0] = _TRUE; + } + } + break; +#ifdef CONFIG_ANTENNA_DIVERSITY + case HW_VAR_CURRENT_ANTENNA: + val[0] = pHalData->CurAntenna; + break; +#endif + case HW_VAR_EFUSE_BYTES: // To get EFUE total used bytes, added by Roger, 2008.12.22. + *((u16 *)(val)) = pHalData->EfuseUsedBytes; + break; + case HW_VAR_VID: + *((u16 *)(val)) = pHalData->EEPROMVID; + break; + case HW_VAR_PID: + *((u16 *)(val)) = pHalData->EEPROMPID; + break; + default: + break; + } + +_func_exit_; +} + +// +// Description: +// Query setting of specified variable. +// +u8 +GetHalDefVar8192CUsb( + IN PADAPTER Adapter, + IN HAL_DEF_VARIABLE eVariable, + IN PVOID pValue + ) +{ + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); + u8 bResult = _TRUE; + + switch(eVariable) + { + case HAL_DEF_UNDERCORATEDSMOOTHEDPWDB: +#if 0 //trunk + { + struct mlme_priv *pmlmepriv = &Adapter->mlmepriv; + struct sta_priv * pstapriv = &Adapter->stapriv; + struct sta_info * psta; + psta = rtw_get_stainfo(pstapriv, pmlmepriv->cur_network.network.MacAddress); + if(psta) + { + *((int *)pValue) = psta->rssi_stat.UndecoratedSmoothedPWDB; + } + } +#else //v4 branch + //if(check_fwstate(&Adapter->mlmepriv, WIFI_STATION_STATE) == _TRUE){ + *((int *)pValue) = pHalData->dmpriv.UndecoratedSmoothedPWDB; + //} + //else{ + + //} +#endif + break; + case HAL_DEF_IS_SUPPORT_ANT_DIV: + #ifdef CONFIG_ANTENNA_DIVERSITY + *((u8 *)pValue) = (IS_92C_SERIAL(pHalData->VersionID) ||(pHalData->AntDivCfg==0))?_FALSE:_TRUE; + #endif + break; + case HAL_DEF_CURRENT_ANTENNA: + #ifdef CONFIG_ANTENNA_DIVERSITY + *(( u8*)pValue) = pHalData->CurAntenna; + #endif + break; + case HAL_DEF_DRVINFO_SZ: + *(( u32*)pValue) = DRVINFO_SZ; + break; + case HAL_DEF_MAX_RECVBUF_SZ: + *(( u32*)pValue) = MAX_RECVBUF_SZ; + break; + case HAL_DEF_RX_PACKET_OFFSET: + *(( u32*)pValue) = RXDESC_SIZE + DRVINFO_SZ; + break; + case HAL_DEF_DBG_DUMP_RXPKT: + *(( u8*)pValue) = pHalData->bDumpRxPkt; + break; + case HAL_DEF_DBG_DM_FUNC: + *(( u8*)pValue) = pHalData->dmpriv.DMFlag; + break; + default: + //RT_TRACE(COMP_INIT, DBG_WARNING, ("GetHalDefVar8192CUsb(): Unkown variable: %d!\n", eVariable)); + bResult = _FALSE; + break; + } + + return bResult; +} + + + + +// +// Description: +// Change default setting of specified variable. +// +u8 +SetHalDefVar8192CUsb( + IN PADAPTER Adapter, + IN HAL_DEF_VARIABLE eVariable, + IN PVOID pValue + ) +{ + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); + u8 bResult = _TRUE; + + switch(eVariable) + { + case HAL_DEF_DBG_DUMP_RXPKT: + pHalData->bDumpRxPkt = *(( u8*)pValue); + break; + case HAL_DEF_DBG_DM_FUNC: + { + u8 dm_func = *(( u8*)pValue); + struct dm_priv *pdmpriv = &pHalData->dmpriv; + + if(dm_func == 0){ //disable all dynamic func + pdmpriv->DMFlag = DYNAMIC_FUNC_DISABLE; + DBG_8192C("==> Disable all dynamic function...\n"); + } + else if(dm_func == 1){//disable DIG + pdmpriv->DMFlag &= (~DYNAMIC_FUNC_DIG); + DBG_8192C("==> Disable DIG...\n"); + } + else if(dm_func == 2){//disable High power + pdmpriv->DMFlag &= (~DYNAMIC_FUNC_HP); + } + else if(dm_func == 3){//disable tx power tracking + pdmpriv->DMFlag &= (~DYNAMIC_FUNC_SS); + DBG_8192C("==> Disable tx power tracking...\n"); + } + else if(dm_func == 4){//disable BT coexistence + pdmpriv->DMFlag &= (~DYNAMIC_FUNC_BT); + } + else if(dm_func == 5){//disable antenna diversity + pdmpriv->DMFlag &= (~DYNAMIC_FUNC_ANT_DIV); + } + else if(dm_func == 6){//turn on all dynamic func + if(!(pdmpriv->DMFlag & DYNAMIC_FUNC_DIG)) + { + struct dm_priv *pdmpriv = &pHalData->dmpriv; + DIG_T *pDigTable = &pdmpriv->DM_DigTable; + pDigTable->PreIGValue = rtw_read8(Adapter,0xc50); + } + + pdmpriv->DMFlag |= (DYNAMIC_FUNC_DIG|DYNAMIC_FUNC_HP|DYNAMIC_FUNC_SS| + DYNAMIC_FUNC_BT|DYNAMIC_FUNC_ANT_DIV) ; + DBG_8192C("==> Turn on all dynamic function...\n"); + } + } + break; + default: + //RT_TRACE(COMP_INIT, DBG_TRACE, ("SetHalDefVar819xUsb(): Unkown variable: %d!\n", eVariable)); + bResult = _FALSE; + break; + } + + return bResult; +} + +u32 _update_92cu_basic_rate(_adapter *padapter, unsigned int mask) +{ + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(padapter); +#ifdef CONFIG_BT_COEXIST + struct btcoexist_priv *pbtpriv = &(pHalData->bt_coexist); +#endif + unsigned int BrateCfg = 0; + +#ifdef CONFIG_BT_COEXIST + if( (pbtpriv->BT_Coexist) && (pbtpriv->BT_CoexistType == BT_CSR_BC4) ) + { + BrateCfg = mask & 0x151; + //DBG_8192C("BT temp disable cck 2/5.5/11M, (0x%x = 0x%x)\n", REG_RRSR, BrateCfg & 0x151); + } + else +#endif + { + if(pHalData->VersionID != VERSION_TEST_CHIP_88C) + BrateCfg = mask & 0x15F; + else //for 88CU 46PING setting, Disable CCK 2M, 5.5M, Others must tuning + BrateCfg = mask & 0x159; + } + + BrateCfg |= 0x01; // default enable 1M ACK rate + + return BrateCfg; +} + +void _update_response_rate(_adapter *padapter,unsigned int mask) +{ + u8 RateIndex = 0; + // Set RRSR rate table. + rtw_write8(padapter, REG_RRSR, mask&0xff); + rtw_write8(padapter,REG_RRSR+1, (mask>>8)&0xff); + + + // Set RTS initial rate + while(mask > 0x1) + { + mask = (mask>> 1); + RateIndex++; + } + rtw_write8(padapter, REG_INIRTS_RATE_SEL, RateIndex); +} + +void UpdateHalRAMask8192CUsb(PADAPTER padapter, u32 mac_id) +{ + //volatile unsigned int result; + u8 init_rate=0; + u8 networkType, raid; + u32 mask; + u8 shortGIrate = _FALSE; + int supportRateNum = 0; + struct sta_info *psta; + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(padapter); + struct dm_priv *pdmpriv = &pHalData->dmpriv; + struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; + struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info); + WLAN_BSSID_EX *cur_network = &(pmlmeinfo->network); +#ifdef CONFIG_BT_COEXIST + struct btcoexist_priv *pbtpriv = &(pHalData->bt_coexist); +#endif + + if (mac_id >= NUM_STA) //CAM_SIZE + { + return; + } + + psta = pmlmeinfo->FW_sta_info[mac_id].psta; + if(psta == NULL) + { + return; + } + + switch (mac_id) + { + case 0:// for infra mode +#ifdef CONFIG_CONCURRENT_MODE + case 2:// first station uses macid=0, second station uses macid=2 +#endif + supportRateNum = rtw_get_rateset_len(cur_network->SupportedRates); + networkType = judge_network_type(padapter, cur_network->SupportedRates, supportRateNum) & 0xf; + //pmlmeext->cur_wireless_mode = networkType; + raid = networktype_to_raid(networkType); + + mask = update_supported_rate(cur_network->SupportedRates, supportRateNum); + mask |= (pmlmeinfo->HT_enable)? update_MSC_rate(&(pmlmeinfo->HT_caps)): 0; + mask |= ((raid<<28)&0xf0000000); + + if (support_short_GI(padapter, &(pmlmeinfo->HT_caps))) + { + shortGIrate = _TRUE; + } + + break; + + case 1://for broadcast/multicast + supportRateNum = rtw_get_rateset_len(pmlmeinfo->FW_sta_info[mac_id].SupportedRates); + if(pmlmeext->cur_wireless_mode & WIRELESS_11B) + networkType = WIRELESS_11B; + else + networkType = WIRELESS_11G; + raid = networktype_to_raid(networkType); + + mask = update_basic_rate(cur_network->SupportedRates, supportRateNum); + mask |= ((raid<<28)&0xf0000000); + + break; + + default: //for each sta in IBSS +#ifdef CONFIG_TDLS + if(psta->tdls_sta_state & TDLS_LINKED_STATE) + { + shortGIrate = update_sgi_tdls(padapter, psta); + mask = update_mask_tdls(padapter, psta); + raid = mask>>28; + break; + } + else +#endif //CONFIG_TDLS + { + supportRateNum = rtw_get_rateset_len(pmlmeinfo->FW_sta_info[mac_id].SupportedRates); + networkType = judge_network_type(padapter, pmlmeinfo->FW_sta_info[mac_id].SupportedRates, supportRateNum) & 0xf; + //pmlmeext->cur_wireless_mode = networkType; + raid = networktype_to_raid(networkType); + + mask = update_supported_rate(cur_network->SupportedRates, supportRateNum); + mask |= ((raid<<28)&0xf0000000); + + //todo: support HT in IBSS + + break; + } + } + +#ifdef CONFIG_BT_COEXIST + if( (pbtpriv->BT_Coexist) && + (pbtpriv->BT_CoexistType == BT_CSR_BC4) && + (pbtpriv->BT_CUR_State) && + (pbtpriv->BT_Ant_isolation) && + ((pbtpriv->BT_Service==BT_SCO)|| + (pbtpriv->BT_Service==BT_Busy)) ) + mask &= 0xffffcfc0; + else +#endif + mask &=0xffffffff; + + + init_rate = get_highest_rate_idx(mask)&0x3f; + + if(pHalData->fw_ractrl == _TRUE) + { + u8 arg = 0; + + //arg = (cam_idx-4)&0x1f;//MACID + arg = mac_id&0x1f;//MACID + + arg |= BIT(7); + + if (shortGIrate==_TRUE) + arg |= BIT(5); + + DBG_871X("update raid entry, mask=0x%x, arg=0x%x\n", mask, arg); + psta->ra_mask=mask; +#ifdef CONFIG_INTEL_PROXIM + if(padapter->proximity.proxim_on ==_TRUE){ + arg &= ~BIT(6); + } + else { + arg |= BIT(6); + } +#endif //CONFIG_INTEL_PROXIM + rtl8192c_set_raid_cmd(padapter, mask, arg); + + } + else + { + if (shortGIrate==_TRUE) + init_rate |= BIT(6); + + rtw_write8(padapter, (REG_INIDATA_RATE_SEL+mac_id), init_rate); + } + + + //set ra_id + psta->raid = raid; + psta->init_rate = init_rate; + + //set correct initial date rate for each mac_id + pdmpriv->INIDATA_RATE[mac_id] = init_rate; +} + +void SetBeaconRelatedRegisters8192CUsb(PADAPTER padapter) +{ + u32 value32; + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(padapter); + struct mlme_ext_priv *pmlmeext = &(padapter->mlmeextpriv); + struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info); + + //reset TSF, enable update TSF, correcting TSF On Beacon + + //REG_BCN_INTERVAL + //REG_BCNDMATIM + //REG_ATIMWND + //REG_TBTT_PROHIBIT + //REG_DRVERLYINT + //REG_BCN_MAX_ERR + //REG_BCNTCFG //(0x510) + //REG_DUAL_TSF_RST + //REG_BCN_CTRL //(0x550) + + //BCN interval + rtw_write16(padapter, REG_BCN_INTERVAL, pmlmeinfo->bcn_interval); + rtw_write8(padapter, REG_ATIMWND, 0x02);// 2ms + + _InitBeaconParameters(padapter); + + rtw_write8(padapter, REG_SLOT, 0x09); + + value32 =rtw_read32(padapter, REG_TCR); + value32 &= ~TSFRST; + rtw_write32(padapter, REG_TCR, value32); + + value32 |= TSFRST; + rtw_write32(padapter, REG_TCR, value32); + + // NOTE: Fix test chip's bug (about contention windows's randomness) + rtw_write8(padapter, REG_RXTSF_OFFSET_CCK, 0x50); + rtw_write8(padapter, REG_RXTSF_OFFSET_OFDM, 0x50); + + _BeaconFunctionEnable(padapter, _TRUE, _TRUE); + + ResumeTxBeacon(padapter); + + //rtw_write8(padapter, 0x422, rtw_read8(padapter, 0x422)|BIT(6)); + + //rtw_write8(padapter, 0x541, 0xff); + + //rtw_write8(padapter, 0x542, rtw_read8(padapter, 0x541)|BIT(0)); + + rtw_write8(padapter, REG_BCN_CTRL, rtw_read8(padapter, REG_BCN_CTRL)|BIT(1)); + +} + +static void rtl8192cu_init_default_value(_adapter * padapter) +{ + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(padapter); + struct pwrctrl_priv *pwrctrlpriv = &padapter->pwrctrlpriv; + struct dm_priv *pdmpriv = &pHalData->dmpriv; + u8 i; + + //init default value + pHalData->fw_ractrl = _FALSE; + pHalData->bIQKInitialized = _FALSE; + if(!pwrctrlpriv->bkeepfwalive) + pHalData->LastHMEBoxNum = 0; + + pHalData->bIQKInitialized = _FALSE; + //init dm default value + pdmpriv->TM_Trigger = 0; + pdmpriv->binitialized = _FALSE; + pdmpriv->prv_traffic_idx = 3; + pdmpriv->initialize = 0; + + pdmpriv->ThermalValue_HP_index = 0; + for(i = 0; i < HP_THERMAL_NUM; i++) + pdmpriv->ThermalValue_HP[i] = 0; +} + +static u8 rtl8192cu_ps_func(PADAPTER Adapter,HAL_INTF_PS_FUNC efunc_id, u8 *val) +{ + u8 bResult = _TRUE; + switch(efunc_id){ + + #if defined(CONFIG_AUTOSUSPEND) && defined(SUPPORT_HW_RFOFF_DETECTED) + case HAL_USB_SELECT_SUSPEND: + { + u8 bfwpoll = *(( u8*)val); + rtl8192c_set_FwSelectSuspend_cmd(Adapter,bfwpoll ,500);//note fw to support hw power down ping detect + } + break; + #endif //CONFIG_AUTOSUSPEND && SUPPORT_HW_RFOFF_DETECTED + + default: + break; + } + return bResult; +} + +void rtl8192cu_set_hal_ops(_adapter * padapter) +{ + struct hal_ops *pHalFunc = &padapter->HalFunc; + +_func_enter_; + + padapter->HalData = rtw_zmalloc(sizeof(HAL_DATA_TYPE)); + if(padapter->HalData == NULL){ + DBG_8192C("cant not alloc memory for HAL DATA \n"); + } + //_rtw_memset(padapter->HalData, 0, sizeof(HAL_DATA_TYPE)); + padapter->hal_data_sz = sizeof(HAL_DATA_TYPE); + + pHalFunc->hal_init = &rtl8192cu_hal_init; + pHalFunc->hal_deinit = &rtl8192cu_hal_deinit; + + //pHalFunc->free_hal_data = &rtl8192c_free_hal_data; + + pHalFunc->inirp_init = &rtl8192cu_inirp_init; + pHalFunc->inirp_deinit = &rtl8192cu_inirp_deinit; + + pHalFunc->init_xmit_priv = &rtl8192cu_init_xmit_priv; + pHalFunc->free_xmit_priv = &rtl8192cu_free_xmit_priv; + + pHalFunc->init_recv_priv = &rtl8192cu_init_recv_priv; + pHalFunc->free_recv_priv = &rtl8192cu_free_recv_priv; +#ifdef CONFIG_SW_LED + pHalFunc->InitSwLeds = &rtl8192cu_InitSwLeds; + pHalFunc->DeInitSwLeds = &rtl8192cu_DeInitSwLeds; +#else //case of hw led or no led + pHalFunc->InitSwLeds = NULL; + pHalFunc->DeInitSwLeds = NULL; +#endif//CONFIG_SW_LED + + //pHalFunc->dm_init = &rtl8192c_init_dm_priv; + //pHalFunc->dm_deinit = &rtl8192c_deinit_dm_priv; + + pHalFunc->init_default_value = &rtl8192cu_init_default_value; + pHalFunc->intf_chip_configure = &rtl8192cu_interface_configure; + pHalFunc->read_adapter_info = &ReadAdapterInfo8192CU; + + //pHalFunc->set_bwmode_handler = &PHY_SetBWMode8192C; + //pHalFunc->set_channel_handler = &PHY_SwChnl8192C; + + //pHalFunc->hal_dm_watchdog = &rtl8192c_HalDmWatchDog; + + pHalFunc->SetHwRegHandler = &SetHwReg8192CU; + pHalFunc->GetHwRegHandler = &GetHwReg8192CU; + pHalFunc->GetHalDefVarHandler = &GetHalDefVar8192CUsb; + pHalFunc->SetHalDefVarHandler = &SetHalDefVar8192CUsb; + + pHalFunc->UpdateRAMaskHandler = &UpdateHalRAMask8192CUsb; + pHalFunc->SetBeaconRelatedRegistersHandler = &SetBeaconRelatedRegisters8192CUsb; + + //pHalFunc->Add_RateATid = &rtl8192c_Add_RateATid; + +//#ifdef CONFIG_SW_ANTENNA_DIVERSITY + //pHalFunc->AntDivBeforeLinkHandler = &SwAntDivBeforeLink8192C; + //pHalFunc->AntDivCompareHandler = &SwAntDivCompare8192C; +//#endif + + pHalFunc->hal_xmit = &rtl8192cu_hal_xmit; + pHalFunc->mgnt_xmit = &rtl8192cu_mgnt_xmit; + pHalFunc->hal_xmitframe_enqueue = &rtl8192cu_hal_xmitframe_enqueue; + + //pHalFunc->read_bbreg = &rtl8192c_PHY_QueryBBReg; + //pHalFunc->write_bbreg = &rtl8192c_PHY_SetBBReg; + //pHalFunc->read_rfreg = &rtl8192c_PHY_QueryRFReg; + //pHalFunc->write_rfreg = &rtl8192c_PHY_SetRFReg; + +#ifdef CONFIG_HOSTAPD_MLME + pHalFunc->hostap_mgnt_xmit_entry = &rtl8192cu_hostap_mgnt_xmit_entry; +#endif + pHalFunc->interface_ps_func = &rtl8192cu_ps_func; + + rtl8192c_set_hal_ops(pHalFunc); +_func_exit_; + +} --- linux-raspi2-4.2.0.orig/drivers/net/wireless/rtl8192cu/hal/rtl8192c/usb/usb_ops_ce.c +++ linux-raspi2-4.2.0/drivers/net/wireless/rtl8192cu/hal/rtl8192c/usb/usb_ops_ce.c @@ -0,0 +1,1205 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved. + * + * 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 + * published by the Free Software Foundation. + * + * 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 Street, Fifth Floor, Boston, MA 02110, USA + * + * + ******************************************************************************/ +#define _HCI_OPS_OS_C_ + +#include +#include +#include +#include + +#ifndef PLATFORM_OS_CE + #error "PLATFORM_OS_CE shall be set \n" +#endif + +#ifndef CONFIG_USB_HCI + #error "CONFIG_USB_HCI shall be on!\n" +#endif + +#include +#include + +#include + + +struct zero_bulkout_context +{ + void *pbuf; + void *purb; + void *pirp; + void *padapter; +}; + + + +#define PUSB_ERROR LPDWORD +#define USBD_HALTED(Status) ((ULONG)(Status) >> 30 == 3) + + +USB_PIPE ffaddr2pipehdl(struct dvobj_priv *pNdisCEDvice, u32 addr); + + +static NTSTATUS usb_async_interrupt_in_complete( LPVOID Context ); +static NTSTATUS usb_async_interrupt_out_complete( LPVOID Context ); + +DWORD usb_write_port_complete( LPVOID Context ); +DWORD usb_read_port_complete( LPVOID Context ); + +void usb_read_mem(struct intf_hdl *pintfhdl, u32 addr, u32 cnt, u8 *rmem) +{ +_func_enter_; + RT_TRACE( _module_hci_ops_os_c_, _drv_info_, ("%s(%u)\n",__FUNCTION__, __LINE__)); +_func_exit_; +} + + + +BOOL +CloseTransferHandle( + LPCUSB_FUNCS pUsbFuncs, + USB_TRANSFER hTransfer + ) +{ + BOOL bRc = TRUE; + + // This assert may fail on suprise remove, + // but should pass during normal I/O. + // ASSERT( pUsbFuncs->lpIsTransferComplete(hTransfer) ); + + // CloseTransfer aborts any pending transfers + if ( !pUsbFuncs->lpCloseTransfer(hTransfer) ) { + + RT_TRACE( _module_hci_ops_os_c_, _drv_err_, ("*** CloseTransfer ERROR:%d ***\n", GetLastError())); + bRc = FALSE; + } + + return bRc; +} + + +BOOL +GetTransferStatus( + LPCUSB_FUNCS pUsbFuncs, + USB_TRANSFER hTransfer, + LPDWORD pBytesTransferred , // OPTIONAL returns number of bytes transferred + PUSB_ERROR pUsbError // returns USB error code + ) +{ + + BOOL bRc = TRUE; + + if ( pUsbFuncs->lpGetTransferStatus(hTransfer, pBytesTransferred, pUsbError) ) { + if ( USB_NO_ERROR != *pUsbError ) { + RT_TRACE( _module_hci_ops_os_c_, _drv_err_, ("*** CloseTransfer ERROR:%d ***\n", GetLastError())); + RT_TRACE( _module_hci_ops_os_c_, _drv_err_, ("GetTransferStatus (BytesTransferred:%d, UsbError:0x%x)\n", pBytesTransferred?*pBytesTransferred:-1, pUsbError?*pUsbError:-1 )); + } + } else { + RT_TRACE( _module_hci_ops_os_c_, _drv_err_,("*** GetTransferStatus ERROR:%d ***\n", GetLastError())); + *pUsbError = USB_CANCELED_ERROR; + bRc = FALSE; + } + + return bRc; +} + + +// The driver should never read RxCmd register. We have to set +// RCR CMDHAT0 (bit6) to append Rx status before the Rx frame. +// +// |<-------- pBulkUrb->TransferBufferLength ------------>| +// +------------------+-------------------+------------+ +// | Rx status (16 bytes) | Rx frame ..... | CRC(4 bytes) | +// +------------------+-------------------+------------+ +// ^ +// ^pRfd->Buffer.VirtualAddress +// +/*! \brief USB RX IRP Complete Routine. + @param Context pointer of RT_RFD +*/ +u32 usb_read_port(struct intf_hdl *pintfhdl, u32 addr, u32 cnt, u8 *rmem) +{ + struct intf_priv *pintfpriv = pintfhdl->pintfpriv; + struct dvobj_priv *pdvobj_priv = (struct dvobj_priv*)pintfpriv->intf_dev; + _adapter *adapter = (_adapter *)pdvobj_priv->padapter; + + struct recv_priv *precvpriv = &adapter->recvpriv; + + struct recv_buf *precvbuf = (struct recv_buf *)rmem; + DWORD dwErr = ERROR_SUCCESS ; + DWORD dwBytesTransferred = 0 ; + USB_TRANSFER hTransfer = NULL; + USB_PIPE hPipe; + LPCUSB_FUNCS usb_funcs_vp = pdvobj_priv->usb_extension._lpUsbFuncs; + +_func_enter_; + RT_TRACE( _module_hci_ops_os_c_, _drv_info_, ("usb_read_port(%u)\n", __LINE__)); + +#if (CONFIG_PWRCTRL == 1) + if (adapter->pwrctrlpriv.pnp_bstop_trx) + { + return _FALSE; + } +#endif + + if(adapter->bDriverStopped || adapter->bSurpriseRemoved) + { + RT_TRACE(_module_hci_ops_os_c_, _drv_info_,("usb_read_port:( padapter->bDriverStopped ||padapter->bSurpriseRemoved)!!!\n")); + return _FALSE; + } + + if(precvbuf !=NULL) + { + + // get a recv buffer + rtl8192cu_init_recvbuf(adapter, precvbuf); + + + + _rtw_spinlock(&precvpriv->lock); + precvpriv->rx_pending_cnt++; + precvbuf->irp_pending = _TRUE; + _rtw_spinunlock(&precvpriv->lock); + + + //translate DMA FIFO addr to pipehandle + hPipe = ffaddr2pipehdl(pdvobj_priv, addr); + + + RT_TRACE( _module_hci_ops_os_c_, _drv_info_, ("usb_read_port(%u)\n", __LINE__)); + + precvbuf->usb_transfer_read_port = (*usb_funcs_vp->lpIssueBulkTransfer)( + hPipe, + usb_read_port_complete, + precvbuf, + USB_IN_TRANSFER|USB_SHORT_TRANSFER_OK, + MAX_RECVBUF_SZ, + precvbuf->pbuf, + 0); + + + if(precvbuf->usb_transfer_read_port) + { + + // GetTransferStatus(usb_funcs_vp, hTransfer, &dwBytesTransferred,&UsbRc); + + // CloseTransferHandle(usb_funcs_vp, hTransfer); + + } + else + { + + dwErr = GetLastError(); + //RT_TRACE( _module_hci_ops_os_c_, _drv_err_, ("usb_read_port ERROR : %d\n", dwErr)); + + } + +// if ( USB_NO_ERROR != UsbRc && ERROR_SUCCESS == dwErr) { +// dwErr = ERROR_GEN_FAILURE; +// } + + + if ( ERROR_SUCCESS != dwErr ) { + + SetLastError(dwErr); + RT_TRACE( _module_hci_ops_os_c_, _drv_err_, ("usb_read_port ERROR : %d\n", dwErr)); + } + + RT_TRACE( _module_hci_ops_os_c_, _drv_info_, ("-usb_read_port(%u)\n", __LINE__)); + + } + else // if(precvbuf !=NULL) + { + + RT_TRACE(_module_hci_ops_os_c_,_drv_err_,("usb_read_port:precv_frame ==NULL\n")); + } + + return _TRUE; + +} + +DWORD usb_read_port_complete( PVOID context ) +{ + struct recv_buf *precvbuf = (struct recv_buf *)context; + _adapter *adapter = (_adapter *)precvbuf->adapter; + struct recv_priv *precvpriv = &adapter->recvpriv; + + + struct intf_hdl *pintfhdl = &adapter->pio_queue->intf; + struct intf_priv *pintfpriv = pintfhdl->pintfpriv; + struct dvobj_priv *pdvobj_priv = (struct dvobj_priv*)pintfpriv->intf_dev; + + + LPCUSB_FUNCS usb_funcs_vp = pdvobj_priv->usb_extension._lpUsbFuncs; + + DWORD dwBytesTransferred = 0; + DWORD dwErr = USB_CANCELED_ERROR; + + uint isevt, *pbuf; + int fComplete =_FALSE; + + + RT_TRACE( _module_hci_ops_os_c_, _drv_info_, ("usb_read_port_complete(%u)\n", __LINE__)); + +_func_enter_; + + + _rtw_spinlock_ex(&precvpriv->lock); + precvbuf->irp_pending=_FALSE; + precvpriv->rx_pending_cnt --; + _rtw_spinunlock_ex(&precvpriv->lock); + + +#if 1 + + (*usb_funcs_vp->lpGetTransferStatus)(precvbuf->usb_transfer_read_port, &dwBytesTransferred, &dwErr); + fComplete = (*usb_funcs_vp->lpIsTransferComplete)(precvbuf->usb_transfer_read_port); + if(fComplete!=_TRUE) + { + RT_TRACE( _module_hci_ops_os_c_, _drv_err_, ("usb_read_port_complete CloseTransfer before complete\n")); + } + (*usb_funcs_vp->lpCloseTransfer)(precvbuf->usb_transfer_read_port); + + +#endif + + + if(USB_NO_ERROR != dwErr) + RT_TRACE( _module_hci_ops_os_c_, _drv_err_, ("usb_read_port_complete Fail :%d\n",dwErr)); + + { + + if ( dwBytesTransferred > MAX_RECVBUF_SZ || dwBytesTransferred < RXDESC_SIZE ) + { + RT_TRACE(_module_hci_ops_os_c_,_drv_err_, + ("\n usb_read_port_complete: (pbulkurb->TransferBufferLength > MAX_RECVBUF_SZ) || (pbulkurb->TransferBufferLength < RXDESC_SIZE): %d\n",dwBytesTransferred)); + rtw_read_port(adapter, precvpriv->ff_hwaddr, 0, (unsigned char *)precvbuf); + + //usb_read_port(pintfhdl, 0, 0, (unsigned char *)precvframe); + } + else + { + precvbuf->transfer_len = dwBytesTransferred; + + pbuf = (uint*)precvbuf->pbuf; + + if((isevt = *(pbuf+1)&0x1ff) == 0x1ff) + { + RT_TRACE(_module_hci_ops_os_c_,_drv_info_, + ("\n usb_read_port_complete: get a event\n")); + rxcmd_event_hdl(adapter, pbuf);//rx c2h events + + rtw_read_port(adapter, precvpriv->ff_hwaddr, 0, (unsigned char *)precvbuf); + } + else + { + if(recvbuf2recvframe(adapter, precvbuf)==_FAIL)//rx packets + { + //precvbuf->reuse = _TRUE; + rtw_read_port(adapter, precvpriv->ff_hwaddr, 0, (unsigned char *)precvbuf); + } + } + } + } + + RT_TRACE( _module_hci_ops_os_c_, _drv_info_, ("-usb_read_port_complete(%u)\n", __LINE__)); + +_func_exit_; + return ERROR_SUCCESS; +// return STATUS_MORE_PROCESSING_REQUIRED; +} + +void usb_read_port_cancel(_adapter *padapter){ + RT_TRACE( _module_hci_ops_os_c_, _drv_info_, ("usb_read_port_cancel(%u)\n",__FUNCTION__, __LINE__)); +} + +DWORD usb_write_mem_complete( LPVOID Context ) +{ + int fComplete =_FALSE; + DWORD dwBytes = 0; + DWORD dwErr = USB_CANCELED_ERROR; + + _irqL irqL; + _list *head; + _list *plist; + struct io_req *pio_req; + struct io_queue *pio_q = (struct io_queue *) Context; + struct intf_hdl *pintf = &(pio_q->intf); + struct intf_priv *pintfpriv = pintf->pintfpriv; + _adapter *padapter = (_adapter *)pintf->adapter; + NTSTATUS status = STATUS_SUCCESS; + struct xmit_priv * pxmitpriv = &padapter->xmitpriv; + + struct dvobj_priv * pdvobj_priv = (struct dvobj_priv*)pintfpriv->intf_dev; + + USB_HANDLE usbHandle = pdvobj_priv->usb_extension._hDevice; + LPCUSB_FUNCS usb_funcs_vp = pdvobj_priv->usb_extension._lpUsbFuncs; + + // get the head from the processing io_queue + head = &(pio_q->processing); + +_func_enter_; + RT_TRACE( _module_hci_ops_os_c_, _drv_info_, ("+usb_write_mem_complete %p\n", Context)); + +#if 1 + _enter_critical_bh(&(pio_q->lock), &irqL); + + + //free irp in processing list... + while(rtw_is_list_empty(head) != _TRUE) + { + plist = get_next(head); + rtw_list_delete(plist); + pio_req = LIST_CONTAINOR(plist, struct io_req, list); + _rtw_up_sema(&pio_req->sema); + } + + _exit_critical_bh(&(pio_q->lock), &irqL); +#endif + + +#if 1 + + (*usb_funcs_vp->lpGetTransferStatus)(pio_req->usb_transfer_write_mem , &dwBytes, &dwErr); + fComplete = (*usb_funcs_vp->lpIsTransferComplete)(pio_req->usb_transfer_write_mem); + if(fComplete!=_TRUE) + { + RT_TRACE( _module_hci_ops_os_c_, _drv_err_, ("usb_write_mem_complete CloseTransfer before complete\n")); + } + (*usb_funcs_vp->lpCloseTransfer)(pio_req->usb_transfer_write_mem ); + +#endif + + RT_TRACE( _module_hci_ops_os_c_, _drv_info_, ("-usb_write_mem_complete\n")); + +_func_exit_; + + + return STATUS_MORE_PROCESSING_REQUIRED; + +} + + +void usb_write_mem(struct intf_hdl *pintfhdl, u32 addr, u32 cnt, u8 *wmem) +{ + + NTSTATUS NtStatus = STATUS_SUCCESS; + USB_PIPE hPipe; + _irqL irqL; + + int fComplete = _FALSE; + DWORD dwBytes = 0; + DWORD dwErr = USB_CANCELED_ERROR; + + + struct io_req *pio_req; + + _adapter *adapter = (_adapter *)pintfhdl->adapter; + struct intf_priv *pintfpriv = pintfhdl->pintfpriv; + struct dvobj_priv * pdvobj_priv = (struct dvobj_priv*)pintfpriv->intf_dev; + + + struct xmit_priv *pxmitpriv = &adapter->xmitpriv; + struct io_queue *pio_queue = (struct io_queue *)adapter->pio_queue; + + LPCUSB_FUNCS usb_funcs_vp = pdvobj_priv->usb_extension._lpUsbFuncs; + + +_func_enter_; + RT_TRACE( _module_hci_ops_os_c_, _drv_info_, ("usb_write_mem(%u) pintfhdl %p wmem %p\n", __LINE__, pintfhdl, wmem)); + + // fetch a io_request from the io_queue + pio_req = alloc_ioreq(pio_queue); + + if ((pio_req == NULL)||(adapter->bSurpriseRemoved)) + { + RT_TRACE(_module_hci_ops_os_c_,_drv_err_,("async_irp_write32 : pio_req =0x%x adapter->bSurpriseRemoved=0x%x",pio_req,adapter->bSurpriseRemoved )); + goto exit; + } + + _enter_critical_bh(&(pio_queue->lock), &irqL); + + + // insert the io_request into processing io_queue + rtw_list_insert_tail(&(pio_req->list),&(pio_queue->processing)); + + + if((adapter->bDriverStopped) || (adapter->bSurpriseRemoved) ||(adapter->pwrctrlpriv.pnp_bstop_trx)) + { + RT_TRACE(_module_hci_ops_os_c_,_drv_err_,("\npadapter->pwrctrlpriv.pnp_bstop_trx==_TRUE\n")); + goto exit; + } + + //translate DMA FIFO addr to pipehandle + hPipe = ffaddr2pipehdl(pdvobj_priv, addr); + + RT_TRACE( _module_hci_ops_os_c_, _drv_info_,("usb_write_mem(%u)\n",__LINE__)); + + pio_req->usb_transfer_write_mem = (*usb_funcs_vp->lpIssueBulkTransfer)( + hPipe, + usb_write_mem_complete, + pio_queue, + USB_OUT_TRANSFER, + cnt, + wmem, + 0); + +#if 0 + + (*usb_funcs_vp->lpGetTransferStatus)(pio_req->usb_transfer_write_mem , &dwBytes, &dwErr); + + while( fComplete != _TRUE) + { + fComplete = (*usb_funcs_vp->lpIsTransferComplete)(pio_req->usb_transfer_write_mem); + if(fComplete==_TRUE) + { + (*usb_funcs_vp->lpCloseTransfer)(pio_req->usb_transfer_write_mem ); + RT_TRACE( _module_hci_ops_os_c_, _drv_err_, ("usb_write_mem finished\n")); + break; + } + else + { + RT_TRACE( _module_hci_ops_os_c_, _drv_err_, + ("usb_write_mem not yet finished %X\n", + pio_req->usb_transfer_write_mem)); + rtw_msleep_os(10); + } + + } + +#endif + + +// _rtw_down_sema(&pio_req->sema); + + RT_TRACE( _module_hci_ops_os_c_, _drv_info_, ("-usb_write_mem(%X)\n",pio_req->usb_transfer_write_mem)); + + _exit_critical_bh(&(pio_queue->lock), &irqL); + + _rtw_down_sema(&pio_req->sema); + free_ioreq(pio_req, pio_queue); + +exit: +_func_exit_; + return; +} + +u32 usb_write_cnt=0; +u32 usb_complete_cnt=0; + +USB_PIPE ffaddr2pipehdl(struct dvobj_priv *pNdisCEDvice, u32 addr) +{ + USB_PIPE PipeHandle = NULL; + _adapter *padapter = pNdisCEDvice->padapter; + + + if(pNdisCEDvice->nr_endpoint == 11) + { + switch(addr) + { + case RTL8712_DMA_BEQ: + PipeHandle= padapter->halpriv.pipehdls_r8712[3] ; + break; + case RTL8712_DMA_BKQ: + PipeHandle= padapter->halpriv.pipehdls_r8712[4]; + break; + case RTL8712_DMA_VIQ: + PipeHandle= padapter->halpriv.pipehdls_r8712[2]; + break; + case RTL8712_DMA_VOQ: + PipeHandle= padapter->halpriv.pipehdls_r8712[1]; + break; + case RTL8712_DMA_BCNQ: + PipeHandle= padapter->halpriv.pipehdls_r8712[6]; + break; + case RTL8712_DMA_BMCQ: //HI Queue + PipeHandle= padapter->halpriv.pipehdls_r8712[7]; + break; + case RTL8712_DMA_MGTQ: + PipeHandle= padapter->halpriv.pipehdls_r8712[8]; + break; + case RTL8712_DMA_RX0FF: + PipeHandle= padapter->halpriv.pipehdls_r8712[0]; + break; + case RTL8712_DMA_C2HCMD: + PipeHandle= padapter->halpriv.pipehdls_r8712[5]; + break; + case RTL8712_DMA_H2CCMD: + PipeHandle= padapter->halpriv.pipehdls_r8712[9]; + break; + + } + + } + else if(pNdisCEDvice->nr_endpoint == 6) + { + switch(addr) + { + case RTL8712_DMA_BEQ: + PipeHandle= padapter->halpriv.pipehdls_r8712[3]; + break; + case RTL8712_DMA_BKQ: + PipeHandle= padapter->halpriv.pipehdls_r8712[4]; + break; + case RTL8712_DMA_VIQ: + PipeHandle= padapter->halpriv.pipehdls_r8712[2]; + break; + case RTL8712_DMA_VOQ: + PipeHandle= padapter->halpriv.pipehdls_r8712[1]; + break; + case RTL8712_DMA_RX0FF: + case RTL8712_DMA_C2HCMD: + PipeHandle= padapter->halpriv.pipehdls_r8712[0]; + break; + case RTL8712_DMA_H2CCMD: + case RTL8712_DMA_BCNQ: + case RTL8712_DMA_BMCQ: + case RTL8712_DMA_MGTQ: + PipeHandle= padapter->halpriv.pipehdls_r8712[5]; + break; + + } + + } + else if(pNdisCEDvice->nr_endpoint == 4) + { + switch(addr) + { + case RTL8712_DMA_BEQ: + case RTL8712_DMA_BKQ: + PipeHandle= padapter->halpriv.pipehdls_r8712[2]; + break; + case RTL8712_DMA_VIQ: + case RTL8712_DMA_VOQ: + PipeHandle= padapter->halpriv.pipehdls_r8712[1]; + break; + case RTL8712_DMA_RX0FF: + case RTL8712_DMA_C2HCMD: + PipeHandle= padapter->halpriv.pipehdls_r8712[0]; + break; + case RTL8712_DMA_H2CCMD: + case RTL8712_DMA_BCNQ: + case RTL8712_DMA_BMCQ: + case RTL8712_DMA_MGTQ: + PipeHandle= padapter->halpriv.pipehdls_r8712[3]; + break; + } + + } + else + { + RT_TRACE(_module_hci_ops_os_c_,_drv_err_,("ffaddr2pipehdl():nr_endpoint=%d error!\n", pNdisCEDvice->nr_endpoint)); + } + + return PipeHandle; + +} + +DWORD usb_bulkout_zero_complete( LPVOID pZeroContext ) +{ + struct zero_bulkout_context *pcontext = (struct zero_bulkout_context *)pZeroContext; + _adapter * padapter = pcontext->padapter; + struct dvobj_priv * pdvobj_priv = (struct dvobj_priv *)&padapter->dvobjpriv; + LPCUSB_FUNCS usb_funcs_vp = pdvobj_priv->usb_extension._lpUsbFuncs; + struct xmit_priv * pxmitpriv = &padapter->xmitpriv; + + int fComplete =_FALSE; + DWORD dwBytesTransferred = 0; + DWORD dwErr = USB_CANCELED_ERROR; + +_func_enter_; + +#if 1 + + (*usb_funcs_vp->lpGetTransferStatus)(pxmitpriv->usb_transfer_write_port, &dwBytesTransferred, &dwErr); + fComplete = (*usb_funcs_vp->lpIsTransferComplete)(pxmitpriv->usb_transfer_write_port); + if(fComplete!=_TRUE) + { + RT_TRACE( _module_hci_ops_os_c_, _drv_err_, ("usb_bulkout_zero_complete CloseTransfer before complete\n")); + } + (*usb_funcs_vp->lpCloseTransfer)(pxmitpriv->usb_transfer_write_port); + +#endif + + if(pcontext) + { + if(pcontext->pbuf) + { + rtw_mfree(pcontext->pbuf, sizeof(int)); + } + + rtw_mfree((u8*)pcontext, sizeof(struct zero_bulkout_context)); + } + +_func_exit_; + + return ERROR_SUCCESS; + + +} + +u32 usb_bulkout_zero(struct intf_hdl *pintfhdl, u32 addr) +{ + struct zero_bulkout_context *pcontext; + unsigned char *pbuf; + u8 len = 0 ; + _adapter *padapter = (_adapter *)pintfhdl->adapter; + struct dvobj_priv *pdvobj = (struct dvobj_priv *)&padapter->dvobjpriv; + struct xmit_priv * pxmitpriv = &padapter->xmitpriv; + + + LPCUSB_FUNCS usb_funcs_vp = pdvobj->usb_extension._lpUsbFuncs; + + USB_PIPE hPipe; + +_func_enter_; + + if((padapter->bDriverStopped) || (padapter->bSurpriseRemoved) ||(padapter->pwrctrlpriv.pnp_bstop_trx)) + { + return _FAIL; + } + + + pcontext = (struct zero_bulkout_context *)rtw_zmalloc(sizeof(struct zero_bulkout_context)); + + pbuf = (unsigned char *)rtw_zmalloc(sizeof(int)); + + len = 0; + + pcontext->pbuf = pbuf; + pcontext->purb = NULL; + pcontext->pirp = NULL; + pcontext->padapter = padapter; + + +//translate DMA FIFO addr to pipehandle + hPipe = ffaddr2pipehdl(pdvobj, addr); + + + + + pxmitpriv->usb_transfer_write_port = (*usb_funcs_vp->lpIssueBulkTransfer)( + hPipe, usb_bulkout_zero_complete, + pcontext, USB_OUT_TRANSFER, + len, pbuf, 0); + + +_func_exit_; + + return _SUCCESS; + +} + +u32 usb_write_port(struct intf_hdl *pintfhdl, u32 addr, u32 cnt, u8 *wmem) +{ + + u32 i, bwritezero = _FALSE; + u32 ac_tag = addr; + + u8* ptr; + + struct intf_priv * pintfpriv = pintfhdl->pintfpriv; + struct dvobj_priv * pdvobj_priv = (struct dvobj_priv*)pintfpriv->intf_dev; + _adapter * padapter = pdvobj_priv->padapter; + + struct xmit_priv * pxmitpriv = &padapter->xmitpriv; + struct xmit_frame * pxmitframe = (struct xmit_frame *)wmem; + + LPCUSB_FUNCS usb_funcs_vp = pdvobj_priv->usb_extension._lpUsbFuncs; + + USB_PIPE hPipe; + + u32 bResult = _FALSE; + +_func_enter_; + RT_TRACE( _module_hci_ops_os_c_, _drv_info_, ("+usb_write_port\n")); + +#if (CONFIG_PWRCTRL == 1) + if(padapter->pwrctrlpriv.pnp_bstop_trx==_TRUE){ + RT_TRACE( _module_hci_ops_os_c_, _drv_err_, ("\npadapter->pwrctrlpriv.pnp_bstop_trx==_TRUE\n")); + + } +#endif + + if((padapter->bDriverStopped) || (padapter->bSurpriseRemoved) ||(padapter->pwrctrlpriv.pnp_bstop_trx)) + { + RT_TRACE(_module_hci_ops_os_c_,_drv_err_,("usb_write_port:( padapter->bDriverStopped ||padapter->bSurpriseRemoved ||adapter->pwrctrlpriv.pnp_bstop_trx)!!!\n")); + bResult = _FALSE; + goto exit; + } + + RT_TRACE( _module_hci_ops_os_c_, _drv_info_, ("usb_write_port(%u)\n", __LINE__)); + + for(i=0; i<8; i++) + { + if(pxmitframe->bpending[i] == _FALSE) + { + _rtw_spinlock(&pxmitpriv->lock); + pxmitpriv->txirp_cnt++; + pxmitframe->bpending[i] = _TRUE; + _rtw_spinunlock(&pxmitpriv->lock); + + pxmitframe->sz[i] = cnt; + pxmitframe->ac_tag[i] = ac_tag; + + break; + } + } + + + //TODO: + if (pdvobj_priv->ishighspeed) + { + if(cnt> 0 && cnt%512 == 0) + { + RT_TRACE(_module_hci_ops_os_c_,_drv_err_,("ishighspeed, cnt=%d\n", cnt)); + // cnt=cnt+1; + bwritezero = _TRUE; + + } + } + else + { + if(cnt > 0 && cnt%64 == 0) + { + RT_TRACE(_module_hci_ops_os_c_,_drv_info_,("cnt=%d\n", cnt)); + // cnt=cnt+1; + bwritezero = _TRUE; + + } + } + + RT_TRACE( _module_hci_ops_os_c_, _drv_info_, ("usb_write_port: pipe handle convert\n")); + + //translate DMA FIFO addr to pipehandle + hPipe = ffaddr2pipehdl(pdvobj_priv, addr); + + +#if 0 + // for tx fifo, the maximum payload number is 8, + // we workaround this issue here by separate whole fifo into 8 segments. + if (cnt <= 500) + cnt = 500; +#endif + + RT_TRACE( _module_hci_ops_os_c_, _drv_info_, + ("usb_write_port(%u): pxmitframe %X pxmitframe->padapter %X\n",__LINE__, pxmitframe, pxmitframe->padapter)); + + pxmitpriv->usb_transfer_write_port = (*usb_funcs_vp->lpIssueBulkTransfer)( + hPipe, usb_write_port_complete, + pxmitframe, USB_OUT_TRANSFER, + cnt, pxmitframe->mem_addr, 0); + + RT_TRACE( _module_hci_ops_os_c_, _drv_info_, ("%s(%u)\n",__FUNCTION__, __LINE__)); + + ptr=(u8 *)&pxmitframe->mem; + +#if 0 + if (pdvobj_priv->ishighspeed) + { + ptr=ptr+512; + } + else + { + ptr=ptr+64; + + } +#endif + if(bwritezero == _TRUE) + { + usb_bulkout_zero(pintfhdl, addr); + } + +// if (!pxmitframe->usb_transfer_xmit) +// padapter->bSurpriseRemoved=_TRUE; + + RT_TRACE( _module_hci_ops_os_c_, _drv_info_, ("%s(%u)\n",__FUNCTION__, __LINE__)); + bResult = _SUCCESS; + +exit: +_func_exit_; + return bResult; +} + +DWORD usb_write_port_complete( LPVOID Context ) +{ + +// u8 *ptr; + + struct xmit_frame * pxmitframe = (struct xmit_frame *) Context; + _adapter * padapter = pxmitframe->padapter; + struct dvobj_priv * pdvobj_priv = (struct dvobj_priv *)&padapter->dvobjpriv; + struct xmit_priv * pxmitpriv = &padapter->xmitpriv; + struct xmit_buf *pxmitbuf = pxmitframe->pxmitbuf; + LPCUSB_FUNCS usb_funcs_vp = pdvobj_priv->usb_extension._lpUsbFuncs; + + int fComplete =_FALSE; + DWORD dwBytesTransferred = 0; + DWORD dwErr = USB_CANCELED_ERROR; + + RT_TRACE( _module_hci_ops_os_c_, _drv_info_, ("%s(%u), pxmitframe %X\n",__FUNCTION__, __LINE__, Context)); + +_func_enter_; + + RT_TRACE(_module_hci_ops_os_c_,_drv_info_,("+usb_write_port_complete\n")); + + _rtw_spinlock_ex(&pxmitpriv->lock); + pxmitpriv->txirp_cnt--; + _rtw_spinunlock_ex(&pxmitpriv->lock); + + if(pxmitpriv->txirp_cnt==0){ + RT_TRACE(_module_hci_ops_os_c_,_drv_err_,("usb_write_port_complete: txirp_cnt== 0, set allrxreturnevt!\n")); + _rtw_up_sema(&(pxmitpriv->tx_retevt)); + } + + + //not to consider tx fragment + rtw_free_xmitframe(pxmitpriv, pxmitframe); + + +#if 1 + + (*usb_funcs_vp->lpGetTransferStatus)(pxmitpriv->usb_transfer_write_port, &dwBytesTransferred, &dwErr); + fComplete = (*usb_funcs_vp->lpIsTransferComplete)(pxmitpriv->usb_transfer_write_port); + if(fComplete!=_TRUE) + { + RT_TRACE( _module_hci_ops_os_c_, _drv_err_, ("usb_write_port_complete CloseTransfer before complete\n")); + } + (*usb_funcs_vp->lpCloseTransfer)(pxmitpriv->usb_transfer_write_port); + +#else + + if((*usb_funcs_vp->lpIsTransferComplete)(pxmitpriv->usb_transfer_write_port)) + { + (*usb_funcs_vp->lpCloseTransfer)(pxmitpriv->usb_transfer_write_port); + } + +#endif + + RT_TRACE( _module_hci_ops_os_c_, _drv_info_, + ("%s(%u): pxmitpriv %X pxmitpriv->free_xmitframe_cnt %X pxmitframe->padapter %X pxmitframe->padapter %X\n", + __LINE__, pxmitpriv, pxmitpriv->free_xmitframe_cnt, pxmitframe->padapter)); + + rtl8192cu_xmitframe_complete(padapter, pxmitpriv, pxmitbuf); + +_func_exit_; + + return STATUS_SUCCESS; +} + +DWORD usb_write_scsi_complete(LPVOID pTxContext) +{ +#ifndef PLATFORM_OS_CE + struct SCSI_BUFFER_ENTRY *psb_entry = (struct SCSI_BUFFER_ENTRY *)pTxContext; + _adapter *padapter = psb_entry->padapter; + struct SCSI_BUFFER *psb = padapter->pscsi_buf; + struct xmit_priv *pxmitpriv = &(padapter->xmitpriv); + struct dvobj_priv *pdvobj_priv = (struct dvobj_priv *)&padapter->dvobjpriv; + LPCUSB_FUNCS lpUsbFuncs = pdvobj_priv->pUsbExtension->_lpUsbFuncs; + + int fComplete =_FALSE; + DWORD dwBytesTransferred = 0; + DWORD dwErr = USB_CANCELED_ERROR; + +_func_enter_; + RT_TRACE( _module_hci_ops_os_c_, _drv_info_, ("%s(%u): circ_space = %d\n",__FUNCTION__, __LINE__, CIRC_SPACE( psb->head,psb->tail, SCSI_BUFFER_NUMBER))); + +#if 1 + + (*lpUsbFuncs->lpGetTransferStatus)(psb_entry->usb_transfer_scsi_txcmd, &dwBytesTransferred, &dwErr); + fComplete = (*lpUsbFuncs->lpIsTransferComplete)(psb_entry->usb_transfer_scsi_txcmd); + if(fComplete!=_TRUE) + { + RT_TRACE( _module_hci_ops_os_c_, _drv_err_, ("usb_write_scsi_complete CloseTransfer before complete\n")); + } + (*lpUsbFuncs->lpCloseTransfer)(psb_entry->usb_transfer_scsi_txcmd); + +#else + + if((*lpUsbFuncs->lpIsTransferComplete)(psb_entry->usb_transfer_scsi_txcmd)) + (*lpUsbFuncs->lpCloseTransfer)(psb_entry->usb_transfer_scsi_txcmd); +#endif + + memset(psb_entry->entry_memory, 0, 8); + + RT_TRACE( _module_hci_ops_os_c_, _drv_info_, ("%s(%u)\n",__FUNCTION__, __LINE__)); + if((psb->tail+1)==SCSI_BUFFER_NUMBER) + psb->tail=0; + else + psb->tail++; + + RT_TRACE( _module_hci_ops_os_c_, _drv_info_, ("%s(%u)\n",__FUNCTION__, __LINE__)); + if(CIRC_CNT(psb->head,psb->tail,SCSI_BUFFER_NUMBER)==0){ + RT_TRACE( _module_hci_ops_os_c_, _drv_info_, ("write_txcmd_scsififo_callback: up_sema\n")); + _rtw_up_sema(&pxmitpriv->xmit_sema); + } + + RT_TRACE( _module_hci_ops_os_c_, _drv_info_, ("%s(%u)\n",__FUNCTION__, __LINE__)); + if(padapter->bSurpriseRemoved) { + return STATUS_MORE_PROCESSING_REQUIRED; + } + +_func_exit_; +#endif + RT_TRACE( _module_hci_ops_os_c_, _drv_info_, ("%s(%u)\n",__FUNCTION__, __LINE__)); + return STATUS_MORE_PROCESSING_REQUIRED; +} + +uint usb_write_scsi(struct intf_hdl *pintfhdl, u32 cnt, u8 *wmem) +{ + +#ifndef PLATFORM_OS_CE + + _adapter *padapter = (_adapter *)pintfhdl->adapter; + struct dvobj_priv *pdev = (struct dvobj_priv*)&padapter->dvobjpriv; + + struct SCSI_BUFFER *psb =padapter->pscsi_buf; + struct SCSI_BUFFER_ENTRY *psb_entry=LIST_CONTAINOR(wmem,struct SCSI_BUFFER_ENTRY,entry_memory); + +_func_enter_; + if(padapter->bSurpriseRemoved||padapter->bDriverStopped) + return 0; + + RT_TRACE( _module_hci_ops_os_c_, _drv_info_, ("%s(%u)\n",__FUNCTION__, __LINE__)); + psb_entry->usb_transfer_scsi_txcmd=pdev->pUsbExtension->_lpUsbFuncs->lpIssueBulkTransfer( + pdev->scsi_out_pipehandle, + usb_write_scsi_complete, + psb_entry, + USB_OUT_TRANSFER, + cnt, + wmem, + 0); + +_func_exit_; +#endif + + return _SUCCESS; +} + + +/* + */ +uint usb_init_intf_priv(struct intf_priv *pintfpriv) +{ + // get the dvobj_priv object + struct dvobj_priv * pNdisCEDvice = (struct dvobj_priv *) pintfpriv->intf_dev; + + RT_TRACE( _module_hci_ops_os_c_, _drv_info_, ("%s(%u)\n",__FUNCTION__, __LINE__)); + // set init intf_priv init status as _IOREADY + pintfpriv->intf_status = _IOREADY; + + // determine the max io size by dvobj_priv.ishighspeed + if(pNdisCEDvice->ishighspeed) + pintfpriv->max_iosz = 128; + else + pintfpriv->max_iosz = 64; + + // read/write size set as 0 + pintfpriv->io_wsz = 0; + pintfpriv->io_rsz = 0; + + // init io_rwmem buffer + pintfpriv->allocated_io_rwmem = rtw_zmalloc(pintfpriv->max_iosz +4); + if (pintfpriv->allocated_io_rwmem == NULL) + { + rtw_mfree((u8 *)(pintfpriv->allocated_io_rwmem), pintfpriv->max_iosz +4); + return _FAIL; + } + else + { + // word align the io_rwmem + pintfpriv->io_rwmem = pintfpriv->allocated_io_rwmem + 4 - ( (u32)(pintfpriv->allocated_io_rwmem) & 3); + } + +#ifndef PLATFORM_OS_CE + + // init io_r_mem buffer + pintfpriv->allocated_io_r_mem = rtw_zmalloc(pintfpriv->max_iosz +4); + if (pintfpriv->allocated_io_r_mem == NULL) + { + rtw_mfree((u8 *)(pintfpriv->allocated_io_r_mem), pintfpriv->max_iosz +4); + return _FAIL; + } + else + { + // word align the io_rwmem + pintfpriv->io_r_mem = pintfpriv->allocated_io_r_mem + 4 - ( (u32)(pintfpriv->allocated_io_r_mem) & 3); + } +#endif + + return _SUCCESS; +} + +void usb_unload_intf_priv(struct intf_priv *pintfpriv) +{ +#ifndef PLATFORM_OS_CE + + rtw_mfree((u8 *)(pintfpriv->allocated_io_rwmem), pintfpriv->max_iosz+4); + rtw_mfree((u8 *)(pintfpriv->allocated_io_r_mem), pintfpriv->max_iosz+4); +#endif + + RT_TRACE( _module_hci_ops_os_c_, _drv_info_, ("%s(%u)\n",__FUNCTION__, __LINE__)); +} + + + +void usb_write_port_cancel(_adapter *padapter) +{ + + sint i,j; + struct dvobj_priv *pdev = &padapter->dvobjpriv; + struct xmit_priv *pxmitpriv=&padapter->xmitpriv; + struct xmit_frame *pxmitframe; + + _rtw_spinlock(&pxmitpriv->lock); + pxmitpriv->txirp_cnt--; //decrease 1 for Initialize ++ + _rtw_spinunlock(&pxmitpriv->lock); + + if (pxmitpriv->txirp_cnt) + { + // Canceling Pending Recv Irp + pxmitframe= (struct xmit_frame *)pxmitpriv->pxmit_frame_buf; + + for( i = 0; i < NR_XMITFRAME; i++ ) + { + for(j=0;j<8;j++) + { + if (pxmitframe->bpending[j]==_TRUE) + { + + RT_TRACE(_module_hci_ops_os_c_,_drv_err_,(" usb_write_port_cancel() :IoCancelIrp\n")); + + } + } + + pxmitframe++; + } + + _rtw_down_sema(&(pxmitpriv->tx_retevt)); + + } + +} + +DWORD usbctrl_vendorreq_complete(LPVOID lpvNotifyParameter) +{ + struct dvobj_priv *pdvobjpriv = (struct dvobj_priv*)lpvNotifyParameter; + + RT_TRACE(_module_hci_ops_os_c_,_drv_debug_,("+usbctrl_vendorreq_complete\n")); + + return STATUS_SUCCESS; +} + + +int usbctrl_vendorreq(struct intf_priv *pintfpriv, u8 request, u16 value, u16 index, void *pdata, u16 len, u8 requesttype) +{ + u8 ret=_TRUE; +// NTSTATUS ntstatus; +// int fComplete; +// LPCUSB_DEVICE lpDeviceInfo; + + struct dvobj_priv *pdvobjpriv = (struct dvobj_priv *)pintfpriv->intf_dev; + + USB_TRANSFER usbTrans; + USB_DEVICE_REQUEST usb_device_req; + USB_HANDLE usbHandle = pdvobjpriv->usb_extension._hDevice; + LPCUSB_FUNCS usbFuncs = pdvobjpriv->usb_extension._lpUsbFuncs; + + u32 transfer_flags = 0; + + _func_enter_; + + memset( &usb_device_req, 0, sizeof( USB_DEVICE_REQUEST ) ); + + if( 0x01 == requesttype ) + { + usb_device_req.bmRequestType = USB_REQUEST_DEVICE_TO_HOST | USB_REQUEST_VENDOR | USB_REQUEST_FOR_DEVICE; + } + else + { + usb_device_req.bmRequestType = USB_REQUEST_HOST_TO_DEVICE | USB_REQUEST_VENDOR | USB_REQUEST_FOR_DEVICE; + } + + usb_device_req.bRequest = request; + usb_device_req.wValue = value; + usb_device_req.wIndex = index; + usb_device_req.wLength = len; + + if (requesttype == 0x01) + { + transfer_flags = USB_IN_TRANSFER;//read_in + } + else + { + transfer_flags= USB_OUT_TRANSFER;//write_out + } + + RT_TRACE(_module_hci_ops_os_c_,_drv_debug_,("+usbctrl_vendorreq\n",__FUNCTION__,__LINE__)); + +#if 0 + // Remember to add callback for sync + usbTrans = (*usbFuncs->lpIssueVendorTransfer)(usbHandle, + usbctrl_vendorreq_complete, pdvobjpriv, + transfer_flags, &usb_device_req, pdata, 0); +#else + // Remember to add callback for sync + usbTrans = (*usbFuncs->lpIssueVendorTransfer)(usbHandle, + NULL, 0, + transfer_flags, &usb_device_req, pdata, 0); +#endif + +// rtw_usleep_os(10); + + if ( usbTrans ) + { + DWORD dwBytes = 0; + DWORD dwErr = USB_CANCELED_ERROR; + int fComplete; + + (*usbFuncs->lpGetTransferStatus)(usbTrans, &dwBytes, &dwErr); + + fComplete = (*usbFuncs->lpIsTransferComplete)(usbTrans); + + if (fComplete== _TRUE) + { + (*usbFuncs->lpCloseTransfer)(usbTrans); + RT_TRACE(_module_hci_ops_os_c_,_drv_debug_,("usbctrl_vendorreq lpCloseTransfer\n")); + } + + if ( dwErr != USB_NO_ERROR || fComplete != _TRUE) + { + RT_TRACE(_module_hci_ops_os_c_,_drv_err_,("usbctrl_vendorreq lpCloseTransfer without complete\n")); + ret = _FALSE; + goto exit; + } + } + else + { + RT_TRACE(_module_hci_ops_os_c_,_drv_err_,("usbctrl_vendorreq without usbTrans\n")); + ret = _FALSE; + goto exit; + + } + +exit: + RT_TRACE(_module_hci_ops_os_c_,_drv_debug_,("-usbctrl_vendorreq\n")); +_func_exit_; + + return ret; + +} --- linux-raspi2-4.2.0.orig/drivers/net/wireless/rtl8192cu/hal/rtl8192c/usb/usb_ops_linux.c +++ linux-raspi2-4.2.0/drivers/net/wireless/rtl8192cu/hal/rtl8192c/usb/usb_ops_linux.c @@ -0,0 +1,1535 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved. + * + * 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 + * published by the Free Software Foundation. + * + * 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 Street, Fifth Floor, Boston, MA 02110, USA + * + * + ******************************************************************************/ +#define _HCI_OPS_OS_C_ + +#include +#include +#include +#include +#include +#include +#include +#include + +#if defined (PLATFORM_LINUX) && defined (PLATFORM_WINDOWS) + +#error "Shall be Linux or Windows, but not both!\n" + +#endif + +static int usbctrl_vendorreq(struct intf_hdl *pintfhdl, u8 request, u16 value, u16 index, void *pdata, u16 len, u8 requesttype) +{ + _adapter *padapter = pintfhdl->padapter; + struct dvobj_priv *pdvobjpriv = adapter_to_dvobj(padapter); + struct usb_device *udev = pdvobjpriv->pusbdev; + + unsigned int pipe; + int status = 0; + u32 tmp_buflen=0; + u8 reqtype; + u8 *pIo_buf; + int vendorreq_times = 0; + + #ifdef CONFIG_USB_VENDOR_REQ_BUFFER_DYNAMIC_ALLOCATE + u8 *tmp_buf; + #else // use stack memory + u8 tmp_buf[MAX_USB_IO_CTL_SIZE]; + #endif + +#ifdef CONFIG_CONCURRENT_MODE + if(padapter->adapter_type > PRIMARY_ADAPTER) + { + padapter = padapter->pbuddy_adapter; + pdvobjpriv = adapter_to_dvobj(padapter); + udev = pdvobjpriv->pusbdev; + } +#endif + + + //DBG_871X("%s %s:%d\n",__FUNCTION__, current->comm, current->pid); + + if((padapter->bSurpriseRemoved) ||(padapter->pwrctrlpriv.pnp_bstop_trx)){ + RT_TRACE(_module_hci_ops_os_c_,_drv_err_,("usbctrl_vendorreq:(padapter->bSurpriseRemoved ||adapter->pwrctrlpriv.pnp_bstop_trx)!!!\n")); + status = -EPERM; + goto exit; + } + + if(len>MAX_VENDOR_REQ_CMD_SIZE){ + DBG_8192C( "[%s] Buffer len error ,vendor request failed\n", __FUNCTION__ ); + status = -EINVAL; + goto exit; + } + + #ifdef CONFIG_USB_VENDOR_REQ_MUTEX + _enter_critical_mutex(&pdvobjpriv->usb_vendor_req_mutex, NULL); + #endif + + + // Acquire IO memory for vendorreq +#ifdef CONFIG_USB_VENDOR_REQ_BUFFER_PREALLOC + pIo_buf = pdvobjpriv->usb_vendor_req_buf; +#else + #ifdef CONFIG_USB_VENDOR_REQ_BUFFER_DYNAMIC_ALLOCATE + tmp_buf = rtw_malloc( (u32) len + ALIGNMENT_UNIT); + tmp_buflen = (u32)len + ALIGNMENT_UNIT; + #else // use stack memory + tmp_buflen = MAX_USB_IO_CTL_SIZE; + #endif + + // Added by Albert 2010/02/09 + // For mstar platform, mstar suggests the address for USB IO should be 16 bytes alignment. + // Trying to fix it here. + pIo_buf = (tmp_buf==NULL)?NULL:tmp_buf + ALIGNMENT_UNIT -((SIZE_PTR)(tmp_buf) & 0x0f ); +#endif + + if ( pIo_buf== NULL) { + DBG_8192C( "[%s] pIo_buf == NULL \n", __FUNCTION__ ); + status = -ENOMEM; + goto release_mutex; + } + + while(++vendorreq_times<= MAX_USBCTRL_VENDORREQ_TIMES) + { + _rtw_memset(pIo_buf, 0, len); + + if (requesttype == 0x01) + { + pipe = usb_rcvctrlpipe(udev, 0);//read_in + reqtype = REALTEK_USB_VENQT_READ; + } + else + { + pipe = usb_sndctrlpipe(udev, 0);//write_out + reqtype = REALTEK_USB_VENQT_WRITE; + _rtw_memcpy( pIo_buf, pdata, len); + } + + #if 0 + //timeout test for firmware downloading + status = rtw_usb_control_msg(udev, pipe, request, reqtype, value, index, pIo_buf, len + , ((value >= FW_8192C_START_ADDRESS && value <= FW_8192C_END_ADDRESS) ||value!=0x1000) ?RTW_USB_CONTROL_MSG_TIMEOUT : RTW_USB_CONTROL_MSG_TIMEOUT_TEST + ); + #else + status = rtw_usb_control_msg(udev, pipe, request, reqtype, value, index, pIo_buf, len, RTW_USB_CONTROL_MSG_TIMEOUT); + #endif + + if ( status == len) // Success this control transfer. + { + rtw_reset_continual_urb_error(pdvobjpriv); + if ( requesttype == 0x01 ) + { // For Control read transfer, we have to copy the read data from pIo_buf to pdata. + _rtw_memcpy( pdata, pIo_buf, len ); + } + } + else { // error cases + DBG_8192C("reg 0x%x, usb %s %u fail, status:%d value=0x%x, vendorreq_times:%d\n" + , value,(requesttype == 0x01)?"read":"write" , len, status, *(u32*)pdata, vendorreq_times); + + if (status < 0) { + if(status == (-ESHUTDOWN) || status == -ENODEV ) + { + padapter->bSurpriseRemoved = _TRUE; + } else { + #ifdef DBG_CONFIG_ERROR_DETECT + { + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(padapter); + pHalData->srestpriv.Wifi_Error_Status = USB_VEN_REQ_CMD_FAIL; + } + #endif + } + } + else // status != len && status >= 0 + { + if(status > 0) { + if ( requesttype == 0x01 ) + { // For Control read transfer, we have to copy the read data from pIo_buf to pdata. + _rtw_memcpy( pdata, pIo_buf, len ); + } + } + } + + if(rtw_inc_and_chk_continual_urb_error(pdvobjpriv) == _TRUE ){ + padapter->bSurpriseRemoved = _TRUE; + break; + } + + } + + // firmware download is checksumed, don't retry + if( (value >= FW_8192C_START_ADDRESS && value <= FW_8192C_END_ADDRESS) || status == len ) + break; + + } + + // release IO memory used by vendorreq + #ifdef CONFIG_USB_VENDOR_REQ_BUFFER_DYNAMIC_ALLOCATE + rtw_mfree(tmp_buf, tmp_buflen); + #endif + +release_mutex: + #ifdef CONFIG_USB_VENDOR_REQ_MUTEX + _exit_critical_mutex(&pdvobjpriv->usb_vendor_req_mutex, NULL); + #endif +exit: + return status; + +} + +static u8 usb_read8(struct intf_hdl *pintfhdl, u32 addr) +{ + u8 request; + u8 requesttype; + u16 wvalue; + u16 index; + u16 len; + u32 data=0; + + _func_enter_; + + request = 0x05; + requesttype = 0x01;//read_in + index = 0;//n/a + + wvalue = (u16)(addr&0x0000ffff); + len = 1; + + usbctrl_vendorreq(pintfhdl, request, wvalue, index, &data, len, requesttype); + + _func_exit_; + + return (u8)(le32_to_cpu(data)&0x0ff); + +} + +static u16 usb_read16(struct intf_hdl *pintfhdl, u32 addr) +{ + u8 request; + u8 requesttype; + u16 wvalue; + u16 index; + u16 len; + u32 data=0; + + _func_enter_; + + request = 0x05; + requesttype = 0x01;//read_in + index = 0;//n/a + + wvalue = (u16)(addr&0x0000ffff); + len = 2; + + usbctrl_vendorreq(pintfhdl, request, wvalue, index, &data, len, requesttype); + + _func_exit_; + + return (u16)(le32_to_cpu(data)&0xffff); + +} + +static u32 usb_read32(struct intf_hdl *pintfhdl, u32 addr) +{ + u8 request; + u8 requesttype; + u16 wvalue; + u16 index; + u16 len; + u32 data=0; + + _func_enter_; + + request = 0x05; + requesttype = 0x01;//read_in + index = 0;//n/a + + wvalue = (u16)(addr&0x0000ffff); + len = 4; + + usbctrl_vendorreq(pintfhdl, request, wvalue, index, &data, len, requesttype); + + _func_exit_; + + return le32_to_cpu(data); + +} + +static int usb_write8(struct intf_hdl *pintfhdl, u32 addr, u8 val) +{ + u8 request; + u8 requesttype; + u16 wvalue; + u16 index; + u16 len; + u32 data; + int ret; + + _func_enter_; + + request = 0x05; + requesttype = 0x00;//write_out + index = 0;//n/a + + wvalue = (u16)(addr&0x0000ffff); + len = 1; + + data = val; + data = cpu_to_le32(data&0x000000ff); + + ret = usbctrl_vendorreq(pintfhdl, request, wvalue, index, &data, len, requesttype); + + _func_exit_; + + return ret; + +} + +static int usb_write16(struct intf_hdl *pintfhdl, u32 addr, u16 val) +{ + u8 request; + u8 requesttype; + u16 wvalue; + u16 index; + u16 len; + u32 data; + int ret; + + _func_enter_; + + request = 0x05; + requesttype = 0x00;//write_out + index = 0;//n/a + + wvalue = (u16)(addr&0x0000ffff); + len = 2; + + data = val; + data = cpu_to_le32(data&0x0000ffff); + + ret = usbctrl_vendorreq(pintfhdl, request, wvalue, index, &data, len, requesttype); + + _func_exit_; + + return ret; + +} + +static int usb_write32(struct intf_hdl *pintfhdl, u32 addr, u32 val) +{ + u8 request; + u8 requesttype; + u16 wvalue; + u16 index; + u16 len; + u32 data; + int ret; + + _func_enter_; + + request = 0x05; + requesttype = 0x00;//write_out + index = 0;//n/a + + wvalue = (u16)(addr&0x0000ffff); + len = 4; + data = cpu_to_le32(val); + + + ret =usbctrl_vendorreq(pintfhdl, request, wvalue, index, &data, len, requesttype); + + _func_exit_; + + return ret; + +} + +static int usb_writeN(struct intf_hdl *pintfhdl, u32 addr, u32 length, u8 *pdata) +{ + u8 request; + u8 requesttype; + u16 wvalue; + u16 index; + u16 len; + u8 buf[VENDOR_CMD_MAX_DATA_LEN]={0}; + int ret; + + _func_enter_; + + request = 0x05; + requesttype = 0x00;//write_out + index = 0;//n/a + + wvalue = (u16)(addr&0x0000ffff); + len = length; + _rtw_memcpy(buf, pdata, len ); + + ret = usbctrl_vendorreq(pintfhdl, request, wvalue, index, buf, len, requesttype); + + _func_exit_; + + return ret; + +} + +#ifdef CONFIG_USB_INTERRUPT_IN_PIPE +static void usb_read_interrupt_complete(struct urb *purb, struct pt_regs *regs) +{ + int err; + _adapter *padapter = (_adapter *)purb->context; + + if(purb->status==0)//SUCCESS + { + if (purb->actual_length > sizeof(INTERRUPT_MSG_FORMAT_EX)) + { + DBG_8192C("usb_read_interrupt_complete: purb->actual_length > sizeof(INTERRUPT_MSG_FORMAT_EX) \n"); + } + + err = usb_submit_urb(purb, GFP_ATOMIC); + if((err) && (err != (-EPERM))) + { + DBG_8192C("cannot submit interrupt in-token(err = 0x%08x),urb_status = %d\n",err, purb->status); + } + } + else + { + DBG_8192C("###=> usb_read_interrupt_complete => urb status(%d)\n", purb->status); + + switch(purb->status) { + case -EINVAL: + case -EPIPE: + case -ENODEV: + case -ESHUTDOWN: + //padapter->bSurpriseRemoved=_TRUE; + RT_TRACE(_module_hci_ops_os_c_,_drv_err_,("usb_read_port_complete:bSurpriseRemoved=TRUE\n")); + case -ENOENT: + padapter->bDriverStopped=_TRUE; + RT_TRACE(_module_hci_ops_os_c_,_drv_err_,("usb_read_port_complete:bDriverStopped=TRUE\n")); + break; + case -EPROTO: + break; + case -EINPROGRESS: + DBG_8192C("ERROR: URB IS IN PROGRESS!/n"); + break; + default: + break; + } + } + +} + +static u32 usb_read_interrupt(struct intf_hdl *pintfhdl, u32 addr) +{ + int err; + unsigned int pipe; + u32 ret = _SUCCESS; + _adapter *adapter = pintfhdl->padapter; + struct dvobj_priv *pdvobj = adapter_to_dvobj(adapter); + struct recv_priv *precvpriv = &adapter->recvpriv; + struct usb_device *pusbd = pdvobj->pusbdev; + +_func_enter_; + + //translate DMA FIFO addr to pipehandle + pipe = ffaddr2pipehdl(pdvobj, addr); + + usb_fill_int_urb(precvpriv->int_in_urb, pusbd, pipe, + precvpriv->int_in_buf, + sizeof(INTERRUPT_MSG_FORMAT_EX), + usb_read_interrupt_complete, + adapter, + 1); + + err = usb_submit_urb(precvpriv->int_in_urb, GFP_ATOMIC); + if((err) && (err != (-EPERM))) + { + DBG_8192C("cannot submit interrupt in-token(err = 0x%08x),urb_status = %d\n",err, precvpriv->int_in_urb->status); + ret = _FAIL; + } + +_func_exit_; + + return ret; +} +#endif + +static s32 pre_recv_entry(union recv_frame *precvframe, struct recv_stat *prxstat, struct phy_stat *pphy_info) +{ + s32 ret=_SUCCESS; +#ifdef CONFIG_CONCURRENT_MODE + u8 *primary_myid, *secondary_myid, *paddr1; + union recv_frame *precvframe_if2 = NULL; + _adapter *primary_padapter = precvframe->u.hdr.adapter; + _adapter *secondary_padapter = primary_padapter->pbuddy_adapter; + struct recv_priv *precvpriv = &primary_padapter->recvpriv; + _queue *pfree_recv_queue = &precvpriv->free_recv_queue; + u8 *pbuf = precvframe->u.hdr.rx_data; + + if(!secondary_padapter) + return ret; + + paddr1 = GetAddr1Ptr(precvframe->u.hdr.rx_data); + + if(IS_MCAST(paddr1) == _FALSE)//unicast packets + { + //primary_myid = myid(&primary_padapter->eeprompriv); + secondary_myid = myid(&secondary_padapter->eeprompriv); + + if(_rtw_memcmp(paddr1, secondary_myid, ETH_ALEN)) + { + //change to secondary interface + precvframe->u.hdr.adapter = secondary_padapter; + } + + //ret = recv_entry(precvframe); + + } + else // Handle BC/MC Packets + { + + u8 clone = _TRUE; +#if 0 + u8 type, subtype, *paddr2, *paddr3; + + type = GetFrameType(pbuf); + subtype = GetFrameSubType(pbuf); //bit(7)~bit(2) + + switch (type) + { + case WIFI_MGT_TYPE: //Handle BC/MC mgnt Packets + if(subtype == WIFI_BEACON) + { + paddr3 = GetAddr3Ptr(precvframe->u.hdr.rx_data); + + if (check_fwstate(&secondary_padapter->mlmepriv, _FW_LINKED) && + _rtw_memcmp(paddr3, get_bssid(&secondary_padapter->mlmepriv), ETH_ALEN)) + { + //change to secondary interface + precvframe->u.hdr.adapter = secondary_padapter; + clone = _FALSE; + } + + if(check_fwstate(&primary_padapter->mlmepriv, _FW_LINKED) && + _rtw_memcmp(paddr3, get_bssid(&primary_padapter->mlmepriv), ETH_ALEN)) + { + if(clone==_FALSE) + { + clone = _TRUE; + } + else + { + clone = _FALSE; + } + + precvframe->u.hdr.adapter = primary_padapter; + } + + if(check_fwstate(&primary_padapter->mlmepriv, _FW_UNDER_SURVEY|_FW_UNDER_LINKING) || + check_fwstate(&secondary_padapter->mlmepriv, _FW_UNDER_SURVEY|_FW_UNDER_LINKING)) + { + clone = _TRUE; + precvframe->u.hdr.adapter = primary_padapter; + } + + } + else if(subtype == WIFI_PROBEREQ) + { + //probe req frame is only for interface2 + //change to secondary interface + precvframe->u.hdr.adapter = secondary_padapter; + clone = _FALSE; + } + break; + case WIFI_CTRL_TYPE: // Handle BC/MC ctrl Packets + + break; + case WIFI_DATA_TYPE: //Handle BC/MC data Packets + //Notes: AP MODE never rx BC/MC data packets + + paddr2 = GetAddr2Ptr(precvframe->u.hdr.rx_data); + + if(_rtw_memcmp(paddr2, get_bssid(&secondary_padapter->mlmepriv), ETH_ALEN)) + { + //change to secondary interface + precvframe->u.hdr.adapter = secondary_padapter; + clone = _FALSE; + } + + break; + default: + + break; + } +#endif + + if(_TRUE == clone) + { + //clone/copy to if2 + u8 shift_sz = 0; + u32 alloc_sz, skb_len; + _pkt *pkt_copy = NULL; + struct rx_pkt_attrib *pattrib = NULL; + + precvframe_if2 = rtw_alloc_recvframe(pfree_recv_queue); + if(precvframe_if2) + { + precvframe_if2->u.hdr.adapter = secondary_padapter; + + _rtw_init_listhead(&precvframe_if2->u.hdr.list); + precvframe_if2->u.hdr.precvbuf = NULL; //can't access the precvbuf for new arch. + precvframe_if2->u.hdr.len=0; + + _rtw_memcpy(&precvframe_if2->u.hdr.attrib, &precvframe->u.hdr.attrib, sizeof(struct rx_pkt_attrib)); + + pattrib = &precvframe_if2->u.hdr.attrib; + + // Modified by Albert 20101213 + // For 8 bytes IP header alignment. + if (pattrib->qos) // Qos data, wireless lan header length is 26 + { + shift_sz = 6; + } + else + { + shift_sz = 0; + } + + skb_len = pattrib->pkt_len; + + // for first fragment packet, driver need allocate 1536+drvinfo_sz+RXDESC_SIZE to defrag packet. + // modify alloc_sz for recvive crc error packet by thomas 2011-06-02 + if((pattrib->mfrag == 1)&&(pattrib->frag_num == 0)){ + //alloc_sz = 1664; //1664 is 128 alignment. + if(skb_len <= 1650) + alloc_sz = 1664; + else + alloc_sz = skb_len + 14; + } + else { + alloc_sz = skb_len; + // 6 is for IP header 8 bytes alignment in QoS packet case. + // 8 is for skb->data 4 bytes alignment. + alloc_sz += 14; + } + + pkt_copy = rtw_skb_alloc(alloc_sz); + + if(pkt_copy) + { + pkt_copy->dev = secondary_padapter->pnetdev; + precvframe_if2->u.hdr.pkt = pkt_copy; + precvframe_if2->u.hdr.rx_head = pkt_copy->data; + precvframe_if2->u.hdr.rx_end = pkt_copy->data + alloc_sz; + skb_reserve( pkt_copy, 8 - ((SIZE_PTR)( pkt_copy->data ) & 7 ));//force pkt_copy->data at 8-byte alignment address + skb_reserve( pkt_copy, shift_sz );//force ip_hdr at 8-byte alignment address according to shift_sz. + _rtw_memcpy(pkt_copy->data, pbuf, skb_len); + precvframe_if2->u.hdr.rx_data = precvframe_if2->u.hdr.rx_tail = pkt_copy->data; + + + recvframe_put(precvframe_if2, skb_len); + //recvframe_pull(precvframe_if2, drvinfo_sz + RXDESC_SIZE); + + rtl8192c_translate_rx_signal_stuff(precvframe_if2, pphy_info); + + ret = rtw_recv_entry(precvframe_if2); + + } else { + rtw_free_recvframe(precvframe_if2, pfree_recv_queue); + DBG_8192C("%s()-%d: alloc_skb() failed!\n", __FUNCTION__, __LINE__); + } + + } + + } + + } + + rtl8192c_translate_rx_signal_stuff(precvframe, pphy_info); + + ret = rtw_recv_entry(precvframe); + +#endif + + return ret; + +} + +#ifdef CONFIG_USE_USB_BUFFER_ALLOC_RX +static int recvbuf2recvframe(_adapter *padapter, struct recv_buf *precvbuf) +{ + u8 *pbuf; + u8 shift_sz = 0; + u16 pkt_cnt, drvinfo_sz; + u32 pkt_offset, skb_len, alloc_sz; + s32 transfer_len; + struct recv_stat *prxstat; + struct phy_stat *pphy_info = NULL; + _pkt *pkt_copy = NULL; + union recv_frame *precvframe = NULL; + struct rx_pkt_attrib *pattrib = NULL; + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(padapter); + struct recv_priv *precvpriv = &padapter->recvpriv; + _queue *pfree_recv_queue = &precvpriv->free_recv_queue; + + + transfer_len = (s32)precvbuf->transfer_len; + pbuf = precvbuf->pbuf; + + prxstat = (struct recv_stat *)pbuf; + pkt_cnt = (le32_to_cpu(prxstat->rxdw2)>>16) & 0xff; + +#if 0 //temp remove when disable usb rx aggregation + if((pkt_cnt > 10) || (pkt_cnt < 1) || (transfer_lenrxdw0, prxstat->rxdw1, prxstat->rxdw2, prxstat->rxdw4)); + + prxstat = (struct recv_stat *)pbuf; + + precvframe = rtw_alloc_recvframe(pfree_recv_queue); + if(precvframe==NULL) + { + RT_TRACE(_module_rtl871x_recv_c_,_drv_err_,("recvbuf2recvframe: precvframe==NULL\n")); + DBG_8192C("%s()-%d: rtw_alloc_recvframe() failed! RX Drop!\n", __FUNCTION__, __LINE__); + goto _exit_recvbuf2recvframe; + } + + _rtw_init_listhead(&precvframe->u.hdr.list); + precvframe->u.hdr.precvbuf = NULL; //can't access the precvbuf for new arch. + precvframe->u.hdr.len=0; + + rtl8192c_query_rx_desc_status(precvframe, prxstat); + + pattrib = &precvframe->u.hdr.attrib; + if(pattrib->physt) + { + pphy_info = (struct phy_stat *)(pbuf + RXDESC_OFFSET); + } + + pkt_offset = RXDESC_SIZE + pattrib->drvinfo_sz + pattrib->shift_sz + pattrib->pkt_len; + + if((pattrib->pkt_len<=0) || (pkt_offset>transfer_len)) + { + RT_TRACE(_module_rtl871x_recv_c_,_drv_info_,("recvbuf2recvframe: pkt_len<=0\n")); + DBG_8192C("%s()-%d: RX Warning!\n", __FUNCTION__, __LINE__); + rtw_free_recvframe(precvframe, pfree_recv_queue); + goto _exit_recvbuf2recvframe; + } + + // Modified by Albert 20101213 + // For 8 bytes IP header alignment. + if (pattrib->qos) // Qos data, wireless lan header length is 26 + { + shift_sz = 6; + } + else + { + shift_sz = 0; + } + + skb_len = pattrib->pkt_len; + + // for first fragment packet, driver need allocate 1536+drvinfo_sz+RXDESC_SIZE to defrag packet. + // modify alloc_sz for recvive crc error packet by thomas 2011-06-02 + if((pattrib->mfrag == 1)&&(pattrib->frag_num == 0)){ + //alloc_sz = 1664; //1664 is 128 alignment. + if(skb_len <= 1650) + alloc_sz = 1664; + else + alloc_sz = skb_len + 14; + } + else { + alloc_sz = skb_len; + // 6 is for IP header 8 bytes alignment in QoS packet case. + // 8 is for skb->data 4 bytes alignment. + alloc_sz += 14; + } + + pkt_copy = rtw_skb_alloc(alloc_sz); + + if(pkt_copy) + { + pkt_copy->dev = padapter->pnetdev; + precvframe->u.hdr.pkt = pkt_copy; + precvframe->u.hdr.rx_head = pkt_copy->data; + precvframe->u.hdr.rx_end = pkt_copy->data + alloc_sz; + skb_reserve( pkt_copy, 8 - ((SIZE_PTR)( pkt_copy->data ) & 7 ));//force pkt_copy->data at 8-byte alignment address + skb_reserve( pkt_copy, shift_sz );//force ip_hdr at 8-byte alignment address according to shift_sz. + _rtw_memcpy(pkt_copy->data, (pbuf + pattrib->shift_sz + pattrib->drvinfo_sz + RXDESC_SIZE), skb_len); + precvframe->u.hdr.rx_data = precvframe->u.hdr.rx_tail = pkt_copy->data; + } + else + { + DBG_8192C("recvbuf2recvframe:can not allocate memory for skb copy\n"); + //precvframe->u.hdr.pkt = rtw_skb_clone(pskb); + //precvframe->u.hdr.rx_head = precvframe->u.hdr.rx_data = precvframe->u.hdr.rx_tail = pbuf; + //precvframe->u.hdr.rx_end = pbuf + (pkt_offset>1612?pkt_offset:1612); + + precvframe->u.hdr.pkt = NULL; + rtw_free_recvframe(precvframe, pfree_recv_queue); + + goto _exit_recvbuf2recvframe; + } + + recvframe_put(precvframe, skb_len); + //recvframe_pull(precvframe, drvinfo_sz + RXDESC_SIZE); + +#ifdef CONFIG_USB_RX_AGGREGATION + switch(pHalData->UsbRxAggMode) + { + case USB_RX_AGG_DMA: + case USB_RX_AGG_MIX: + pkt_offset = (u16)_RND128(pkt_offset); + break; + case USB_RX_AGG_USB: + pkt_offset = (u16)_RND4(pkt_offset); + break; + case USB_RX_AGG_DISABLE: + default: + break; + } +#endif + +#ifdef CONFIG_CONCURRENT_MODE + if(rtw_buddy_adapter_up(padapter)) + { + if(pre_recv_entry(precvframe, prxstat, pphy_info) != _SUCCESS) + { + RT_TRACE(_module_rtl871x_recv_c_,_drv_err_,("recvbuf2recvframe: recv_entry(precvframe) != _SUCCESS\n")); + } + } + else + { + rtl8192c_translate_rx_signal_stuff(precvframe, pphy_info); + if(rtw_recv_entry(precvframe) != _SUCCESS) + { + RT_TRACE(_module_rtl871x_recv_c_,_drv_err_,("recvbuf2recvframe: rtw_recv_entry(precvframe) != _SUCCESS\n")); + } + } + +#else + rtl8192c_translate_rx_signal_stuff(precvframe, pphy_info); + if(rtw_recv_entry(precvframe) != _SUCCESS) + { + RT_TRACE(_module_rtl871x_recv_c_,_drv_err_,("recvbuf2recvframe: rtw_recv_entry(precvframe) != _SUCCESS\n")); + } +#endif + + pkt_cnt--; + transfer_len -= pkt_offset; + pbuf += pkt_offset; + precvframe = NULL; + pkt_copy = NULL; + + if(transfer_len>0 && pkt_cnt==0) + pkt_cnt = (le32_to_cpu(prxstat->rxdw2)>>16) & 0xff; + + }while((transfer_len>0) && (pkt_cnt>0)); + +_exit_recvbuf2recvframe: + + return _SUCCESS; +} + +void rtl8192cu_recv_tasklet(void *priv) +{ + struct recv_buf *precvbuf = NULL; + _adapter *padapter = (_adapter*)priv; + struct recv_priv *precvpriv = &padapter->recvpriv; + + while (NULL != (precvbuf = rtw_dequeue_recvbuf(&precvpriv->recv_buf_pending_queue))) + { + if ((padapter->bDriverStopped == _TRUE)||(padapter->bSurpriseRemoved== _TRUE)) + { + DBG_8192C("recv_tasklet => bDriverStopped or bSurpriseRemoved \n"); + + break; + } + + + recvbuf2recvframe(padapter, precvbuf); + + rtw_read_port(padapter, precvpriv->ff_hwaddr, 0, (unsigned char *)precvbuf); + } + +} + +static void usb_read_port_complete(struct urb *purb, struct pt_regs *regs) +{ + struct recv_buf *precvbuf = (struct recv_buf *)purb->context; + _adapter *padapter =(_adapter *)precvbuf->adapter; + struct recv_priv *precvpriv = &padapter->recvpriv; + + RT_TRACE(_module_hci_ops_os_c_,_drv_err_,("usb_read_port_complete!!!\n")); + + precvpriv->rx_pending_cnt --; + + if(padapter->bSurpriseRemoved || padapter->bDriverStopped||padapter->bReadPortCancel) + { + RT_TRACE(_module_hci_ops_os_c_,_drv_err_,("usb_read_port_complete:bDriverStopped(%d) OR bSurpriseRemoved(%d)\n", padapter->bDriverStopped, padapter->bSurpriseRemoved)); + + goto exit; + } + + if(purb->status==0)//SUCCESS + { + if ((purb->actual_length > MAX_RECVBUF_SZ) || (purb->actual_length < RXDESC_SIZE)) + { + RT_TRACE(_module_hci_ops_os_c_,_drv_err_,("usb_read_port_complete: (purb->actual_length > MAX_RECVBUF_SZ) || (purb->actual_length < RXDESC_SIZE)\n")); + + rtw_read_port(padapter, precvpriv->ff_hwaddr, 0, (unsigned char *)precvbuf); + } + else + { + rtw_reset_continual_urb_error(adapter_to_dvobj(padapter)); + + precvbuf->transfer_len = purb->actual_length; + + //rtw_enqueue_rx_transfer_buffer(precvpriv, rx_transfer_buf); + rtw_enqueue_recvbuf(precvbuf, &precvpriv->recv_buf_pending_queue); + + tasklet_schedule(&precvpriv->recv_tasklet); + } + } + else + { + RT_TRACE(_module_hci_ops_os_c_,_drv_err_,("usb_read_port_complete : purb->status(%d) != 0 \n", purb->status)); + + DBG_8192C("###=> usb_read_port_complete => urb status(%d)\n", purb->status); + + if(rtw_inc_and_chk_continual_urb_error(adapter_to_dvobj(padapter)) == _TRUE ){ + padapter->bSurpriseRemoved = _TRUE; + } + + switch(purb->status) { + case -EINVAL: + case -EPIPE: + case -ENODEV: + case -ESHUTDOWN: + //padapter->bSurpriseRemoved=_TRUE; + RT_TRACE(_module_hci_ops_os_c_,_drv_err_,("usb_read_port_complete:bSurpriseRemoved=TRUE\n")); + case -ENOENT: + padapter->bDriverStopped=_TRUE; + RT_TRACE(_module_hci_ops_os_c_,_drv_err_,("usb_read_port_complete:bDriverStopped=TRUE\n")); + break; + case -EPROTO: + case -EILSEQ: + case -ETIME: + case -ECOMM: + case -EOVERFLOW: + #ifdef DBG_CONFIG_ERROR_DETECT + { + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(padapter); + pHalData->srestpriv.Wifi_Error_Status = USB_READ_PORT_FAIL; + } + #endif + rtw_read_port(padapter, precvpriv->ff_hwaddr, 0, (unsigned char *)precvbuf); + break; + case -EINPROGRESS: + DBG_8192C("ERROR: URB IS IN PROGRESS!/n"); + break; + default: + break; + } + + } + +exit: + +_func_exit_; + +} + +static u32 usb_read_port(struct intf_hdl *pintfhdl, u32 addr, u32 cnt, u8 *rmem) +{ + int err; + unsigned int pipe; + u32 ret = _SUCCESS; + PURB purb = NULL; + struct recv_buf *precvbuf = (struct recv_buf *)rmem; + _adapter *adapter = pintfhdl->padapter; + struct dvobj_priv *pdvobj = adapter_to_dvobj(adapter); + struct recv_priv *precvpriv = &adapter->recvpriv; + struct usb_device *pusbd = pdvobj->pusbdev; + +_func_enter_; + + if(adapter->bDriverStopped || adapter->bSurpriseRemoved ||adapter->pwrctrlpriv.pnp_bstop_trx) + { + RT_TRACE(_module_hci_ops_os_c_,_drv_err_,("usb_read_port:( padapter->bDriverStopped ||padapter->bSurpriseRemoved ||adapter->pwrctrlpriv.pnp_bstop_trx)!!!\n")); + return _FAIL; + } + + if(precvbuf !=NULL) + { + rtl8192cu_init_recvbuf(adapter, precvbuf); + + if(precvbuf->pbuf) + { + precvpriv->rx_pending_cnt++; + + purb = precvbuf->purb; + + //translate DMA FIFO addr to pipehandle + pipe = ffaddr2pipehdl(pdvobj, addr); + + usb_fill_bulk_urb(purb, pusbd, pipe, + precvbuf->pbuf, + MAX_RECVBUF_SZ, + usb_read_port_complete, + precvbuf);//context is precvbuf + + purb->transfer_dma = precvbuf->dma_transfer_addr; + purb->transfer_flags |= URB_NO_TRANSFER_DMA_MAP; + + err = usb_submit_urb(purb, GFP_ATOMIC); + if((err) && (err != (-EPERM))) + { + RT_TRACE(_module_hci_ops_os_c_,_drv_err_,("cannot submit rx in-token(err=0x%.8x), URB_STATUS =0x%.8x", err, purb->status)); + DBG_8192C("cannot submit rx in-token(err = 0x%08x),urb_status = %d\n",err,purb->status); + ret = _FAIL; + } + + } + + } + else + { + RT_TRACE(_module_hci_ops_os_c_,_drv_err_,("usb_read_port:precvbuf ==NULL\n")); + ret = _FAIL; + } + +_func_exit_; + + return ret; +} +#else // CONFIG_USE_USB_BUFFER_ALLOC_RX +static int recvbuf2recvframe(_adapter *padapter, _pkt *pskb) +{ + u8 *pbuf; + u8 shift_sz = 0; + u16 pkt_cnt; + u32 pkt_offset, skb_len, alloc_sz; + s32 transfer_len; + struct recv_stat *prxstat; + struct phy_stat *pphy_info = NULL; + _pkt *pkt_copy = NULL; + union recv_frame *precvframe = NULL; + struct rx_pkt_attrib *pattrib = NULL; + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(padapter); + struct recv_priv *precvpriv = &padapter->recvpriv; + _queue *pfree_recv_queue = &precvpriv->free_recv_queue; + + + transfer_len = (s32)pskb->len; + pbuf = pskb->data; + + prxstat = (struct recv_stat *)pbuf; + pkt_cnt = (le32_to_cpu(prxstat->rxdw2)>>16) & 0xff; + +#if 0 //temp remove when disable usb rx aggregation + if((pkt_cnt > 10) || (pkt_cnt < 1) || (transfer_lenrxdw0, prxstat->rxdw1, prxstat->rxdw2, prxstat->rxdw4)); + + prxstat = (struct recv_stat *)pbuf; + + precvframe = rtw_alloc_recvframe(pfree_recv_queue); + if(precvframe==NULL) + { + RT_TRACE(_module_rtl871x_recv_c_,_drv_err_,("recvbuf2recvframe: precvframe==NULL\n")); + DBG_8192C("%s()-%d: rtw_alloc_recvframe() failed! RX Drop!\n", __FUNCTION__, __LINE__); + goto _exit_recvbuf2recvframe; + } + + _rtw_init_listhead(&precvframe->u.hdr.list); + precvframe->u.hdr.precvbuf = NULL; //can't access the precvbuf for new arch. + precvframe->u.hdr.len=0; + + rtl8192c_query_rx_desc_status(precvframe, prxstat); + + pattrib = &precvframe->u.hdr.attrib; + if(pattrib->physt) + { + pphy_info = (struct phy_stat *)(pbuf + RXDESC_OFFSET); + } + + pkt_offset = RXDESC_SIZE + pattrib->drvinfo_sz + pattrib->shift_sz + pattrib->pkt_len; + + if((pattrib->pkt_len<=0) || (pkt_offset>transfer_len)) + { + RT_TRACE(_module_rtl871x_recv_c_,_drv_info_,("recvbuf2recvframe: pkt_len<=0\n")); + DBG_8192C("%s()-%d: RX Warning!\n", __FUNCTION__, __LINE__); + rtw_free_recvframe(precvframe, pfree_recv_queue); + goto _exit_recvbuf2recvframe; + } + + // Modified by Albert 20101213 + // For 8 bytes IP header alignment. + if (pattrib->qos) // Qos data, wireless lan header length is 26 + { + shift_sz = 6; + } + else + { + shift_sz = 0; + } + + skb_len = pattrib->pkt_len; + + // for first fragment packet, driver need allocate 1536+drvinfo_sz+RXDESC_SIZE to defrag packet. + // modify alloc_sz for recvive crc error packet by thomas 2011-06-02 + if((pattrib->mfrag == 1)&&(pattrib->frag_num == 0)){ + //alloc_sz = 1664; //1664 is 128 alignment. + if(skb_len <= 1650) + alloc_sz = 1664; + else + alloc_sz = skb_len + 14; + } + else { + alloc_sz = skb_len; + // 6 is for IP header 8 bytes alignment in QoS packet case. + // 8 is for skb->data 4 bytes alignment. + alloc_sz += 14; + } + + pkt_copy = rtw_skb_alloc(alloc_sz); + + if(pkt_copy) + { + pkt_copy->dev = padapter->pnetdev; + precvframe->u.hdr.pkt = pkt_copy; + precvframe->u.hdr.rx_head = pkt_copy->data; + precvframe->u.hdr.rx_end = pkt_copy->data + alloc_sz; + skb_reserve( pkt_copy, 8 - ((SIZE_PTR)( pkt_copy->data ) & 7 ));//force pkt_copy->data at 8-byte alignment address + skb_reserve( pkt_copy, shift_sz );//force ip_hdr at 8-byte alignment address according to shift_sz. + _rtw_memcpy(pkt_copy->data, (pbuf + pattrib->shift_sz + pattrib->drvinfo_sz + RXDESC_SIZE), skb_len); + precvframe->u.hdr.rx_data = precvframe->u.hdr.rx_tail = pkt_copy->data; + + } + else + { + precvframe->u.hdr.pkt = rtw_skb_clone(pskb); + if(pkt_copy) + { + precvframe->u.hdr.rx_head = precvframe->u.hdr.rx_data = precvframe->u.hdr.rx_tail = pbuf; + precvframe->u.hdr.rx_end = pbuf + alloc_sz; + } + else + { + DBG_8192C("recvbuf2recvframe: rtw_skb_clone fail\n"); + rtw_free_recvframe(precvframe, pfree_recv_queue); + goto _exit_recvbuf2recvframe; + } + } + + recvframe_put(precvframe, skb_len); + //recvframe_pull(precvframe, drvinfo_sz + RXDESC_SIZE); + +#ifdef CONFIG_USB_RX_AGGREGATION + switch(pHalData->UsbRxAggMode) + { + case USB_RX_AGG_DMA: + case USB_RX_AGG_MIX: + pkt_offset = (u16)_RND128(pkt_offset); + break; + case USB_RX_AGG_USB: + pkt_offset = (u16)_RND4(pkt_offset); + break; + case USB_RX_AGG_DISABLE: + default: + break; + } +#endif + +#ifdef CONFIG_CONCURRENT_MODE + if(rtw_buddy_adapter_up(padapter)) + { + if(pre_recv_entry(precvframe, prxstat, pphy_info) != _SUCCESS) + { + RT_TRACE(_module_rtl871x_recv_c_,_drv_err_,("recvbuf2recvframe: recv_entry(precvframe) != _SUCCESS\n")); + } + } + else + { + rtl8192c_translate_rx_signal_stuff(precvframe, pphy_info); + if(rtw_recv_entry(precvframe) != _SUCCESS) + { + RT_TRACE(_module_rtl871x_recv_c_,_drv_err_,("recvbuf2recvframe: rtw_recv_entry(precvframe) != _SUCCESS\n")); + } + } + +#else + rtl8192c_translate_rx_signal_stuff(precvframe, pphy_info); + if(rtw_recv_entry(precvframe) != _SUCCESS) + { + RT_TRACE(_module_rtl871x_recv_c_,_drv_err_,("recvbuf2recvframe: rtw_recv_entry(precvframe) != _SUCCESS\n")); + } +#endif + + pkt_cnt--; + transfer_len -= pkt_offset; + pbuf += pkt_offset; + precvframe = NULL; + pkt_copy = NULL; + + if(transfer_len>0 && pkt_cnt==0) + pkt_cnt = (le32_to_cpu(prxstat->rxdw2)>>16) & 0xff; + + }while((transfer_len>0) && (pkt_cnt>0)); + +_exit_recvbuf2recvframe: + + return _SUCCESS; +} + +void rtl8192cu_recv_tasklet(void *priv) +{ + _pkt *pskb; + _adapter *padapter = (_adapter*)priv; + struct recv_priv *precvpriv = &padapter->recvpriv; + + while (NULL != (pskb = skb_dequeue(&precvpriv->rx_skb_queue))) + { + if ((padapter->bDriverStopped == _TRUE)||(padapter->bSurpriseRemoved== _TRUE)) + { + DBG_8192C("recv_tasklet => bDriverStopped or bSurpriseRemoved \n"); + rtw_skb_free(pskb); + break; + } + + recvbuf2recvframe(padapter, pskb); + +#ifdef CONFIG_PREALLOC_RECV_SKB + + skb_reset_tail_pointer(pskb); + + pskb->len = 0; + + skb_queue_tail(&precvpriv->free_recv_skb_queue, pskb); + +#else + rtw_skb_free(pskb); +#endif + + } + +} + + +static void usb_read_port_complete(struct urb *purb, struct pt_regs *regs) +{ + _irqL irqL; + uint isevt, *pbuf; + struct recv_buf *precvbuf = (struct recv_buf *)purb->context; + _adapter *padapter =(_adapter *)precvbuf->adapter; + struct recv_priv *precvpriv = &padapter->recvpriv; + + RT_TRACE(_module_hci_ops_os_c_,_drv_err_,("usb_read_port_complete!!!\n")); + + //_enter_critical(&precvpriv->lock, &irqL); + //precvbuf->irp_pending=_FALSE; + //precvpriv->rx_pending_cnt --; + //_exit_critical(&precvpriv->lock, &irqL); + + precvpriv->rx_pending_cnt --; + + //if(precvpriv->rx_pending_cnt== 0) + //{ + // RT_TRACE(_module_hci_ops_os_c_,_drv_err_,("usb_read_port_complete: rx_pending_cnt== 0, set allrxreturnevt!\n")); + // _rtw_up_sema(&precvpriv->allrxreturnevt); + //} + + if(padapter->bSurpriseRemoved || padapter->bDriverStopped||padapter->bReadPortCancel) + { + RT_TRACE(_module_hci_ops_os_c_,_drv_err_,("usb_read_port_complete:bDriverStopped(%d) OR bSurpriseRemoved(%d)\n", padapter->bDriverStopped, padapter->bSurpriseRemoved)); + + #ifdef CONFIG_PREALLOC_RECV_SKB + precvbuf->reuse = _TRUE; + #else + if(precvbuf->pskb){ + DBG_8192C("==> free skb(%p)\n",precvbuf->pskb); + rtw_skb_free(precvbuf->pskb); + } + #endif + DBG_8192C("%s()-%d: RX Warning! bDriverStopped(%d) OR bSurpriseRemoved(%d) bReadPortCancel(%d)\n", + __FUNCTION__, __LINE__,padapter->bDriverStopped, padapter->bSurpriseRemoved,padapter->bReadPortCancel); + goto exit; + } + + if(purb->status==0)//SUCCESS + { + if ((purb->actual_length > MAX_RECVBUF_SZ) || (purb->actual_length < RXDESC_SIZE)) + { + RT_TRACE(_module_hci_ops_os_c_,_drv_err_,("usb_read_port_complete: (purb->actual_length > MAX_RECVBUF_SZ) || (purb->actual_length < RXDESC_SIZE)\n")); + precvbuf->reuse = _TRUE; + rtw_read_port(padapter, precvpriv->ff_hwaddr, 0, (unsigned char *)precvbuf); + DBG_8192C("%s()-%d: RX Warning!\n", __FUNCTION__, __LINE__); + } + else + { + rtw_reset_continual_urb_error(adapter_to_dvobj(padapter)); + + precvbuf->transfer_len = purb->actual_length; + skb_put(precvbuf->pskb, purb->actual_length); + skb_queue_tail(&precvpriv->rx_skb_queue, precvbuf->pskb); + + if (skb_queue_len(&precvpriv->rx_skb_queue)<=1) + tasklet_schedule(&precvpriv->recv_tasklet); + + precvbuf->pskb = NULL; + precvbuf->reuse = _FALSE; + rtw_read_port(padapter, precvpriv->ff_hwaddr, 0, (unsigned char *)precvbuf); + } + } + else + { + RT_TRACE(_module_hci_ops_os_c_,_drv_err_,("usb_read_port_complete : purb->status(%d) != 0 \n", purb->status)); + + DBG_8192C("###=> usb_read_port_complete => urb status(%d)\n", purb->status); + + if(rtw_inc_and_chk_continual_urb_error(adapter_to_dvobj(padapter)) == _TRUE ){ + padapter->bSurpriseRemoved = _TRUE; + } + + switch(purb->status) { + case -EINVAL: + case -EPIPE: + case -ENODEV: + case -ESHUTDOWN: + //padapter->bSurpriseRemoved=_TRUE; + RT_TRACE(_module_hci_ops_os_c_,_drv_err_,("usb_read_port_complete:bSurpriseRemoved=TRUE\n")); + case -ENOENT: + padapter->bDriverStopped=_TRUE; + RT_TRACE(_module_hci_ops_os_c_,_drv_err_,("usb_read_port_complete:bDriverStopped=TRUE\n")); + break; + case -EPROTO: + case -EILSEQ: + case -ETIME: + case -ECOMM: + case -EOVERFLOW: + #ifdef DBG_CONFIG_ERROR_DETECT + { + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(padapter); + pHalData->srestpriv.Wifi_Error_Status = USB_READ_PORT_FAIL; + } + #endif + precvbuf->reuse = _TRUE; + rtw_read_port(padapter, precvpriv->ff_hwaddr, 0, (unsigned char *)precvbuf); + break; + case -EINPROGRESS: + precvpriv->read_port_complete_EINPROGRESS_cnt++; + DBG_8192C("ERROR: URB IS IN PROGRESS!/n"); + break; + default: + precvpriv->read_port_complete_other_urb_err_cnt++; + break; + } + + } + +exit: + +_func_exit_; + +} + +static u32 usb_read_port(struct intf_hdl *pintfhdl, u32 addr, u32 cnt, u8 *rmem) +{ + _irqL irqL; + int err; + unsigned int pipe; + SIZE_PTR tmpaddr=0; + SIZE_PTR alignment=0; + u32 ret = _SUCCESS; + PURB purb = NULL; + struct recv_buf *precvbuf = (struct recv_buf *)rmem; + _adapter *adapter = pintfhdl->padapter; + struct dvobj_priv *pdvobj = adapter_to_dvobj(adapter); + struct recv_priv *precvpriv = &adapter->recvpriv; + struct usb_device *pusbd = pdvobj->pusbdev; + +_func_enter_; + + if(adapter->bDriverStopped || adapter->bSurpriseRemoved ||adapter->pwrctrlpriv.pnp_bstop_trx) + { + RT_TRACE(_module_hci_ops_os_c_,_drv_err_,("usb_read_port:( padapter->bDriverStopped ||padapter->bSurpriseRemoved ||adapter->pwrctrlpriv.pnp_bstop_trx)!!!\n")); + return _FAIL; + } + +#ifdef CONFIG_PREALLOC_RECV_SKB + if((precvbuf->reuse == _FALSE) || (precvbuf->pskb == NULL)) + { + if (NULL != (precvbuf->pskb = skb_dequeue(&precvpriv->free_recv_skb_queue))) + { + precvbuf->reuse = _TRUE; + } + } +#endif + + + if(precvbuf !=NULL) + { + rtl8192cu_init_recvbuf(adapter, precvbuf); + + //re-assign for linux based on skb + if((precvbuf->reuse == _FALSE) || (precvbuf->pskb == NULL)) + { + precvbuf->pskb = rtw_skb_alloc(MAX_RECVBUF_SZ + RECVBUFF_ALIGN_SZ); + + if(precvbuf->pskb == NULL) + { + RT_TRACE(_module_hci_ops_os_c_,_drv_err_,("init_recvbuf(): alloc_skb fail!\n")); + precvpriv->recvbuf_skb_alloc_fail_cnt++; + return _FAIL; + } + + tmpaddr = (SIZE_PTR)precvbuf->pskb->data; + alignment = tmpaddr & (RECVBUFF_ALIGN_SZ-1); + skb_reserve(precvbuf->pskb, (RECVBUFF_ALIGN_SZ - alignment)); + + precvbuf->phead = precvbuf->pskb->head; + precvbuf->pdata = precvbuf->pskb->data; + precvbuf->ptail = skb_tail_pointer(precvbuf->pskb); + precvbuf->pend = skb_end_pointer(precvbuf->pskb); + precvbuf->pbuf = precvbuf->pskb->data; + } + else//reuse skb + { + precvbuf->phead = precvbuf->pskb->head; + precvbuf->pdata = precvbuf->pskb->data; + precvbuf->ptail = skb_tail_pointer(precvbuf->pskb); + precvbuf->pend = skb_end_pointer(precvbuf->pskb); + precvbuf->pbuf = precvbuf->pskb->data; + + precvbuf->reuse = _FALSE; + } + + //_enter_critical(&precvpriv->lock, &irqL); + //precvpriv->rx_pending_cnt++; + //precvbuf->irp_pending = _TRUE; + //_exit_critical(&precvpriv->lock, &irqL); + + precvpriv->rx_pending_cnt++; + + purb = precvbuf->purb; + + //translate DMA FIFO addr to pipehandle + pipe = ffaddr2pipehdl(pdvobj, addr); + + usb_fill_bulk_urb(purb, pusbd, pipe, + precvbuf->pbuf, + MAX_RECVBUF_SZ, + usb_read_port_complete, + precvbuf);//context is precvbuf + + err = usb_submit_urb(purb, GFP_ATOMIC); + if((err) && (err != (-EPERM))) + { + RT_TRACE(_module_hci_ops_os_c_,_drv_err_,("cannot submit rx in-token(err=0x%.8x), URB_STATUS =0x%.8x", err, purb->status)); + DBG_8192C("cannot submit rx in-token(err = 0x%08x),urb_status = %d\n",err,purb->status); + ret = _FAIL; + } + } + else + { + precvpriv->recvbuf_null_cnt++; + RT_TRACE(_module_hci_ops_os_c_,_drv_err_,("usb_read_port:precvbuf ==NULL\n")); + ret = _FAIL; + } + +_func_exit_; + + return ret; +} +#endif // CONFIG_USE_USB_BUFFER_ALLOC_RX + +void rtl8192cu_xmit_tasklet(void *priv) +{ + int ret = _FALSE; + _adapter *padapter = (_adapter*)priv; + struct xmit_priv *pxmitpriv = &padapter->xmitpriv; + + if(check_fwstate(&padapter->mlmepriv, _FW_UNDER_SURVEY) == _TRUE) + return; + + while(1) + { + if ((padapter->bDriverStopped == _TRUE)||(padapter->bSurpriseRemoved== _TRUE) || (padapter->bWritePortCancel == _TRUE)) + { + DBG_8192C("xmit_tasklet => bDriverStopped or bSurpriseRemoved or bWritePortCancel\n"); + break; + } + + ret = rtl8192cu_xmitframe_complete(padapter, pxmitpriv, NULL); + + if(ret==_FALSE) + break; + + } + +} + +void rtl8192cu_set_intf_ops(struct _io_ops *pops) +{ + _func_enter_; + + _rtw_memset((u8 *)pops, 0, sizeof(struct _io_ops)); + + pops->_read8 = &usb_read8; + pops->_read16 = &usb_read16; + pops->_read32 = &usb_read32; + pops->_read_mem = &usb_read_mem; + pops->_read_port = &usb_read_port; + + pops->_write8 = &usb_write8; + pops->_write16 = &usb_write16; + pops->_write32 = &usb_write32; + pops->_writeN = &usb_writeN; + +#ifdef CONFIG_USB_SUPPORT_ASYNC_VDN_REQ + pops->_write8_async= &usb_async_write8; + pops->_write16_async = &usb_async_write16; + pops->_write32_async = &usb_async_write32; +#endif + pops->_write_mem = &usb_write_mem; + pops->_write_port = &usb_write_port; + + pops->_read_port_cancel = &usb_read_port_cancel; + pops->_write_port_cancel = &usb_write_port_cancel; + +#ifdef CONFIG_USB_INTERRUPT_IN_PIPE + pops->_read_interrupt = &usb_read_interrupt; +#endif + + _func_exit_; + +} --- linux-raspi2-4.2.0.orig/drivers/net/wireless/rtl8192cu/hal/rtl8192c/usb/usb_ops_xp.c +++ linux-raspi2-4.2.0/drivers/net/wireless/rtl8192cu/hal/rtl8192c/usb/usb_ops_xp.c @@ -0,0 +1,1264 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved. + * + * 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 + * published by the Free Software Foundation. + * + * 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 Street, Fifth Floor, Boston, MA 02110, USA + * + * + ******************************************************************************/ +#define _HCI_OPS_OS_C_ + +#include +#include +#include +#include +#include + +#if defined (PLATFORM_LINUX) && defined (PLATFORM_WINDOWS) + #error "Shall be Linux or Windows, but not both!\n" +#endif + +#ifndef CONFIG_USB_HCI + #error "CONFIG_USB_HCI shall be on!\n" +#endif + + +#include +#include +#include + +#include +#include + +#include + + +struct zero_bulkout_context +{ + void *pbuf; + void *purb; + void *pirp; + void *padapter; +}; + +#define usb_write_cmd usb_write_mem +#define usb_read_cmd usb_read_mem +#define usb_write_cmd_complete usb_write_mem_complete +//#define usb_read_cmd_complete usb_read_mem_complete + + + +uint usb_init_intf_priv(struct intf_priv *pintfpriv) +{ + + PURB piorw_urb; + u8 NextDeviceStackSize; + struct dvobj_priv *pdev = (struct dvobj_priv *)pintfpriv->intf_dev; + _adapter * padapter=pdev->padapter; + +_func_enter_; + + RT_TRACE(_module_hci_ops_os_c_,_drv_info_,("\n +usb_init_intf_priv\n")); + + pintfpriv->intf_status = _IOREADY; + + if(pdev->ishighspeed) pintfpriv->max_iosz = 128; + else pintfpriv->max_iosz = 64; + + + _init_timer(&pintfpriv->io_timer, padapter->hndis_adapter, io_irp_timeout_handler, pintfpriv); + + + RT_TRACE(_module_hci_ops_os_c_,_drv_info_,("usb_init_intf_priv:pintfpriv->max_iosz:%d\n",pintfpriv->max_iosz)); + + pintfpriv->io_wsz = 0; + pintfpriv->io_rsz = 0; + + pintfpriv->allocated_io_rwmem = rtw_zmalloc(pintfpriv->max_iosz +4); + + if (pintfpriv->allocated_io_rwmem == NULL){ + RT_TRACE(_module_hci_ops_os_c_,_drv_err_,("\n usb_init_intf_priv:pintfpriv->allocated_io_rwmem == NULL\n")); + goto usb_init_intf_priv_fail; + } + + pintfpriv->io_rwmem = pintfpriv->allocated_io_rwmem + 4 \ + -( (u32)(pintfpriv->allocated_io_rwmem) & 3); + + + + NextDeviceStackSize = (u8)pdev->nextdevstacksz;//pintfpriv->pUsbDevObj->StackSize + 1; + + piorw_urb = (PURB)ExAllocatePool(NonPagedPool, sizeof(URB) ); + if(piorw_urb == NULL) + goto usb_init_intf_priv_fail; + + pintfpriv->piorw_urb = piorw_urb; + + pintfpriv->piorw_irp = IoAllocateIrp(NextDeviceStackSize , FALSE); + + + pintfpriv->io_irp_cnt=1; + pintfpriv->bio_irp_pending=_FALSE; + + _rtw_init_sema(&(pintfpriv->io_retevt), 0);//NdisInitializeEvent(&pintfpriv->io_irp_return_evt); + +_func_exit_; + return _SUCCESS; + +usb_init_intf_priv_fail: + + if (pintfpriv->allocated_io_rwmem) + rtw_mfree((u8 *)(pintfpriv->allocated_io_rwmem), pintfpriv->max_iosz +4); + + if(piorw_urb) + ExFreePool(piorw_urb); + + RT_TRACE(_module_hci_ops_os_c_,_drv_info_,("\n -usb_init_intf_priv(usb_init_intf_priv_fail)\n")); + +_func_exit_; + return _FAIL; + +} + +void usb_unload_intf_priv(struct intf_priv *pintfpriv) +{ + +_func_enter_; + + RT_TRACE(_module_hci_ops_os_c_,_drv_err_,("\n+usb_unload_intf_priv\n")); + + rtw_mfree((u8 *)(pintfpriv->allocated_io_rwmem), pintfpriv->max_iosz+4); + +#ifdef PLATFORM_WINDOWS + if(pintfpriv->piorw_urb) + ExFreePool(pintfpriv->piorw_urb); + + if(pintfpriv->piorw_irp) + IoFreeIrp(pintfpriv->piorw_irp); +#endif + + +#ifdef PLATFORM_LINUX + RT_TRACE(_module_hci_ops_os_c_,_drv_err_,("\npintfpriv->io_irp_cnt=%d\n",pintfpriv->io_irp_cnt)); + pintfpriv->io_irp_cnt--; + if(pintfpriv->io_irp_cnt){ + if(pintfpriv->bio_irp_pending==_TRUE){ + RT_TRACE(_module_hci_ops_os_c_,_drv_err_,("\nkill iorw_urb\n")); + usb_kill_urb(pintfpriv->piorw_urb); + } + RT_TRACE(_module_hci_ops_os_c_,_drv_err_,("\n wait io_retevt\n")); + _rtw_down_sema(&(pintfpriv->io_retevt)); + } + RT_TRACE(_module_hci_ops_os_c_,_drv_err_,("\n cancel io_urb ok\n")); +#endif + + RT_TRACE(_module_hci_ops_os_c_,_drv_err_,("\n-usb_unload_intf_priv\n")); + +_func_exit_; + +} + +void *ffaddr2pipehdl(struct dvobj_priv *pNdisCEDvice, u32 addr) +{ + HANDLE PipeHandle = NULL; + _adapter *padapter = pNdisCEDvice->padapter; + + + if(pNdisCEDvice->nr_endpoint == 11) + { + switch(addr) + { + case RTL8712_DMA_BEQ: + PipeHandle= padapter->halpriv.pipehdls_r8712[3] ; + break; + case RTL8712_DMA_BKQ: + PipeHandle= padapter->halpriv.pipehdls_r8712[4]; + break; + case RTL8712_DMA_VIQ: + PipeHandle= padapter->halpriv.pipehdls_r8712[2]; + break; + case RTL8712_DMA_VOQ: + PipeHandle= padapter->halpriv.pipehdls_r8712[1]; + break; + case RTL8712_DMA_BCNQ: + PipeHandle= padapter->halpriv.pipehdls_r8712[6]; + break; + case RTL8712_DMA_BMCQ: //HI Queue + PipeHandle= padapter->halpriv.pipehdls_r8712[7]; + break; + case RTL8712_DMA_MGTQ: + PipeHandle= padapter->halpriv.pipehdls_r8712[8]; + break; + case RTL8712_DMA_RX0FF: + PipeHandle= padapter->halpriv.pipehdls_r8712[0]; + break; + case RTL8712_DMA_C2HCMD: + PipeHandle= padapter->halpriv.pipehdls_r8712[5]; + break; + case RTL8712_DMA_H2CCMD: + PipeHandle= padapter->halpriv.pipehdls_r8712[9]; + break; + + } + + } + else if(pNdisCEDvice->nr_endpoint == 6) + { + switch(addr) + { + case RTL8712_DMA_BEQ: + PipeHandle= padapter->halpriv.pipehdls_r8712[3]; + break; + case RTL8712_DMA_BKQ: + PipeHandle= padapter->halpriv.pipehdls_r8712[4]; + break; + case RTL8712_DMA_VIQ: + PipeHandle= padapter->halpriv.pipehdls_r8712[2]; + break; + case RTL8712_DMA_VOQ: + PipeHandle= padapter->halpriv.pipehdls_r8712[1]; + break; + case RTL8712_DMA_RX0FF: + case RTL8712_DMA_C2HCMD: + PipeHandle= padapter->halpriv.pipehdls_r8712[0]; + break; + case RTL8712_DMA_H2CCMD: + case RTL8712_DMA_BCNQ: + case RTL8712_DMA_BMCQ: + case RTL8712_DMA_MGTQ: + PipeHandle= padapter->halpriv.pipehdls_r8712[5]; + break; + + } + + } + else if(pNdisCEDvice->nr_endpoint == 4) + { + switch(addr) + { + case RTL8712_DMA_BEQ: + //case RTL8712_DMA_BKQ: + PipeHandle= padapter->halpriv.pipehdls_r8712[2]; + break; + //case RTL8712_DMA_VIQ: + case RTL8712_DMA_VOQ: + PipeHandle= padapter->halpriv.pipehdls_r8712[1]; + break; + case RTL8712_DMA_RX0FF: + case RTL8712_DMA_C2HCMD: + PipeHandle= padapter->halpriv.pipehdls_r8712[0]; + break; + case RTL8712_DMA_H2CCMD: + case RTL8712_DMA_BCNQ: + case RTL8712_DMA_BMCQ: + case RTL8712_DMA_MGTQ: + PipeHandle= padapter->halpriv.pipehdls_r8712[3]; + break; + } + + } + else + { + RT_TRACE(_module_hci_ops_os_c_,_drv_err_,("ffaddr2pipehdl():nr_endpoint=%d error!\n", pNdisCEDvice->nr_endpoint)); + } + + return PipeHandle; + +} + + +NTSTATUS usb_bulkout_zero_complete( + PDEVICE_OBJECT pUsbDevObj, + PIRP pIrp, void* pZeroContext) +{ + struct zero_bulkout_context *pcontext = (struct zero_bulkout_context *)pZeroContext; + +_func_enter_; + + if(pcontext) + { + if(pcontext->pbuf) + { + ExFreePool(pcontext->pbuf); + } + + if(pcontext->purb) + { + ExFreePool(pcontext->purb); + } + + if(pcontext->pirp && (pIrp ==pcontext->pirp)) + { + IoFreeIrp(pIrp); + } + + ExFreePool(pcontext); + } + +_func_exit_; + + return STATUS_MORE_PROCESSING_REQUIRED; + + +} + +u32 usb_bulkout_zero(struct intf_hdl *pintfhdl, u32 addr) +{ + struct zero_bulkout_context *pcontext; + unsigned char *pbuf; + char NextDeviceStackSize, len; + PIO_STACK_LOCATION nextStack; + USBD_STATUS usbdstatus; + HANDLE PipeHandle; + PIRP pirp = NULL; + PURB purb = NULL; + NDIS_STATUS ndisStatus = NDIS_STATUS_SUCCESS; + _adapter *padapter = (_adapter *)pintfhdl->adapter; + struct dvobj_priv *pdvobj = (struct dvobj_priv *)&padapter->dvobjpriv; + + +_func_enter_; + + if((padapter->bDriverStopped) || (padapter->bSurpriseRemoved) ||(padapter->pwrctrlpriv.pnp_bstop_trx)) + { + return _FAIL; + } + + len = 0; + NextDeviceStackSize = (char)pdvobj->nextdevstacksz; + + pcontext = (struct zero_bulkout_context *)ExAllocatePool(NonPagedPool, sizeof(struct zero_bulkout_context)); + pbuf = (unsigned char *)ExAllocatePool(NonPagedPool, sizeof(int)); + purb = (PURB)ExAllocatePool(NonPagedPool, sizeof(URB)); + pirp = IoAllocateIrp(NextDeviceStackSize, FALSE); + + pcontext->pbuf = pbuf; + pcontext->purb = purb; + pcontext->pirp = pirp; + pcontext->padapter = padapter; + + //translate DMA FIFO addr to pipehandle + PipeHandle = ffaddr2pipehdl(pdvobj, addr); + + + // Build our URB for USBD + UsbBuildInterruptOrBulkTransferRequest( + purb, + sizeof(struct _URB_BULK_OR_INTERRUPT_TRANSFER), + PipeHandle, + pbuf, + NULL, + len, + 0, + NULL); + + // + // call the calss driver to perform the operation + // pass the URB to the USB driver stack + // + nextStack = IoGetNextIrpStackLocation(pirp); + nextStack->MajorFunction = IRP_MJ_INTERNAL_DEVICE_CONTROL; + nextStack->Parameters.Others.Argument1 = purb; + nextStack->Parameters.DeviceIoControl.IoControlCode = IOCTL_INTERNAL_USB_SUBMIT_URB; + + //Set Completion Routine + IoSetCompletionRoutine(pirp, // irp to use + usb_bulkout_zero_complete, // callback routine + pcontext, // context + TRUE, // call on success + TRUE, // call on error + TRUE); // call on cancel + + + // Call IoCallDriver to send the irp to the usb bus driver + // + ndisStatus = IoCallDriver(pdvobj->pnextdevobj, pirp); + usbdstatus = URB_STATUS(purb); + + if( USBD_HALTED(usbdstatus) ) + { + padapter->bDriverStopped=_TRUE; + padapter->bSurpriseRemoved=_TRUE; + } + + // + // The usb bus driver should always return STATUS_PENDING when bulk out irp async + // + if ( ndisStatus != STATUS_PENDING ) + { + return _FAIL; + } + +_func_exit_; + + return _SUCCESS; + +} + +void usb_read_mem(struct intf_hdl *pintfhdl, u32 addr, u32 cnt, u8 *rmem) +{ + _func_enter_; + + + + _func_exit_; +} + +NTSTATUS usb_write_mem_complete(PDEVICE_OBJECT pUsbDevObj, PIRP piowrite_irp, PVOID pusb_cnxt) +{ + + _irqL irqL; + _list *head, *plist; + struct io_req *pio_req; + struct io_queue *pio_q = (struct io_queue *) pusb_cnxt; + struct intf_hdl *pintf = &(pio_q->intf); + struct intf_priv *pintfpriv = pintf->pintfpriv; + _adapter *padapter = (_adapter *)pintf->adapter; + NTSTATUS status = STATUS_SUCCESS; + + head = &(pio_q->processing); + + _func_enter_; + + _enter_critical_bh(&(pio_q->lock), &irqL); + + pintfpriv->io_irp_cnt--; + if(pintfpriv->io_irp_cnt ==0){ + _rtw_up_sema(&(pintfpriv->io_retevt)); + } + + pintfpriv->bio_irp_pending=_FALSE; + + switch(piowrite_irp->IoStatus.Status) + { + case STATUS_SUCCESS: + break; + + default: + padapter->bSurpriseRemoved=_TRUE; + RT_TRACE(_module_hci_ops_os_c_,_drv_err_,("\n usbAsynIntOutComplete:pioread_irp->IoStatus.Status !=STATUS_SUCCESS\n")); + break; + } + + //free irp in processing list... + while(rtw_is_list_empty(head) != _TRUE) + { + plist = get_next(head); + rtw_list_delete(plist); + pio_req = LIST_CONTAINOR(plist, struct io_req, list); + _rtw_up_sema(&pio_req->sema); + } + + _exit_critical_bh(&(pio_q->lock), &irqL); + + _func_exit_; + + return STATUS_MORE_PROCESSING_REQUIRED; + +} + +void usb_write_mem(struct intf_hdl *pintfhdl, u32 addr, u32 cnt, u8 *wmem) +{ + u32 bwritezero; + _irqL irqL; + USBD_STATUS usbdstatus; + PIO_STACK_LOCATION nextStack; + HANDLE PipeHandle; + struct io_req *pio_req; + + _adapter *adapter = (_adapter *)pintfhdl->adapter; + struct intf_priv *pintfpriv = pintfhdl->pintfpriv; + struct dvobj_priv *pdev = (struct dvobj_priv *)pintfpriv->intf_dev; + PURB piorw_urb = pintfpriv->piorw_urb; + PIRP piorw_irp = pintfpriv->piorw_irp; + struct io_queue *pio_queue = (struct io_queue *)adapter->pio_queue; + NTSTATUS NtStatus = STATUS_SUCCESS; + + _func_enter_; + + pio_req = alloc_ioreq(pio_queue); + + if ((pio_req == NULL)||(adapter->bSurpriseRemoved)){ + RT_TRACE(_module_hci_ops_os_c_,_drv_err_,("async_irp_write32 : pio_req =0x%x adapter->bSurpriseRemoved=0x%x",pio_req,adapter->bSurpriseRemoved )); + goto exit; + } + + _enter_critical_bh(&(pio_queue->lock), &irqL); + + rtw_list_insert_tail(&(pio_req->list),&(pio_queue->processing)); + + +#ifdef NDIS51_MINIPORT + IoReuseIrp(piorw_irp, STATUS_SUCCESS); +#else + piorw_irp->Cancel = _FALSE; +#endif + + if((adapter->bDriverStopped) || (adapter->bSurpriseRemoved) ||(adapter->pwrctrlpriv.pnp_bstop_trx)) + { + RT_TRACE(_module_hci_ops_os_c_,_drv_err_,("\npadapter->pwrctrlpriv.pnp_bstop_trx==_TRUE\n")); + _func_exit_; + return; + } + + //translate DMA FIFO addr to pipehandle + PipeHandle = ffaddr2pipehdl(pdev, addr); + + + pintfpriv->io_irp_cnt++; + pintfpriv->bio_irp_pending=_TRUE; + // Build our URB for USBD + UsbBuildInterruptOrBulkTransferRequest( + piorw_urb, + sizeof(struct _URB_BULK_OR_INTERRUPT_TRANSFER), + PipeHandle, + (PVOID)wmem, + NULL, + cnt, + 0, + NULL); + + // + // call the calss driver to perform the operation + // pass the URB to the USB driver stack + // + nextStack = IoGetNextIrpStackLocation(piorw_irp); + nextStack->MajorFunction = IRP_MJ_INTERNAL_DEVICE_CONTROL; + nextStack->Parameters.Others.Argument1 = (PURB)piorw_urb; + nextStack->Parameters.DeviceIoControl.IoControlCode = IOCTL_INTERNAL_USB_SUBMIT_URB; + + IoSetCompletionRoutine( + piorw_irp, // irp to use + usb_write_mem_complete, // routine to call when irp is done + pio_queue, // context to pass routine + TRUE, // call on success + TRUE, // call on error + TRUE); // call on cancel + + // + // Call IoCallDriver to send the irp to the usb port + // + NtStatus = IoCallDriver(pdev->pnextdevobj, piorw_irp); + usbdstatus = URB_STATUS(piorw_urb); + + // + // The USB driver should always return STATUS_PENDING when + // it receives a write irp + // + if ((NtStatus != STATUS_PENDING) || USBD_HALTED(usbdstatus) ) { + + if( USBD_HALTED(usbdstatus) ) { + + RT_TRACE(_module_hci_ops_os_c_,_drv_err_,("usb_write_mem():USBD_HALTED(usbdstatus)=%X!\n",USBD_HALTED(usbdstatus)) ); + } + _func_exit_; + return;//STATUS_UNSUCCESSFUL; + } + + _exit_critical_bh(&(pio_queue->lock), &irqL); + + _rtw_down_sema(&pio_req->sema); + free_ioreq(pio_req, pio_queue); + + + bwritezero = _FALSE; + if (pdev->ishighspeed) + { + if(cnt> 0 && cnt%512 == 0) + bwritezero = _TRUE; + + } + else + { + if(cnt > 0 && cnt%64 == 0) + bwritezero = _TRUE; + } + + + if(bwritezero == _TRUE) + { + usb_bulkout_zero(pintfhdl, addr); + } + +exit: + + _func_exit_; + +} + +NTSTATUS usb_read_port_complete(PDEVICE_OBJECT pUsbDevObj, PIRP pIrp, PVOID context) +{ + uint isevt, *pbuf; + struct _URB_BULK_OR_INTERRUPT_TRANSFER *pbulkurb; + USBD_STATUS usbdstatus; + struct recv_buf *precvbuf = (struct recv_buf *)context; + _adapter *adapter =(_adapter *)precvbuf->adapter; + struct recv_priv *precvpriv = &adapter->recvpriv; + struct dvobj_priv *dev = (struct dvobj_priv *)&adapter->dvobjpriv; + PURB purb = precvbuf->purb; + struct intf_hdl *pintfhdl = &adapter->pio_queue->intf; + + //RT_TRACE(_module_hci_ops_os_c_,_drv_err_,("usb_read_port_complete!!!\n")); + + usbdstatus = URB_STATUS(purb); + + _rtw_spinlock_ex(&precvpriv->lock); + precvbuf->irp_pending=_FALSE; + precvpriv->rx_pending_cnt --; + _rtw_spinunlock_ex(&precvpriv->lock); + + if(precvpriv->rx_pending_cnt== 0) { + RT_TRACE(_module_hci_ops_os_c_,_drv_err_,("usb_read_port_complete: rx_pending_cnt== 0, set allrxreturnevt!\n")); + _rtw_up_sema(&precvpriv->allrxreturnevt); + } + + + if( pIrp->Cancel == _TRUE ) { + + RT_TRACE(_module_hci_ops_os_c_,_drv_err_,("usb_read_port_complete: One IRP has been cancelled succesfully\n")); + return STATUS_MORE_PROCESSING_REQUIRED; + } + if(adapter->bSurpriseRemoved) { + + RT_TRACE(_module_hci_ops_os_c_,_drv_err_,("usb_read_port_complete:bDriverStopped(%d) OR bSurpriseRemoved(%d)", adapter->bDriverStopped, adapter->bSurpriseRemoved)); + return STATUS_MORE_PROCESSING_REQUIRED; + } + + switch(pIrp->IoStatus.Status) + { + case STATUS_SUCCESS: + + pbulkurb = &(precvbuf->purb)->UrbBulkOrInterruptTransfer; + if((pbulkurb->TransferBufferLength >(MAX_RECVBUF_SZ)) || (pbulkurb->TransferBufferLength < RXDESC_SIZE) ) + { + RT_TRACE(_module_hci_ops_os_c_,_drv_err_,("\n usb_read_port_complete: (pbulkurb->TransferBufferLength > MAX_RECVBUF_SZ) || (pbulkurb->TransferBufferLength < RXDESC_SIZE)\n")); + rtw_read_port(adapter, precvpriv->ff_hwaddr, 0, (unsigned char *)precvbuf); + } + else + { + precvbuf->transfer_len = pbulkurb->TransferBufferLength; + + pbuf = (uint*)precvbuf->pbuf; + + if((isevt = *(pbuf+1)&0x1ff) == 0x1ff) + { + rxcmd_event_hdl(adapter, pbuf);//rx c2h events + + rtw_read_port(adapter, precvpriv->ff_hwaddr, 0, (unsigned char *)precvbuf); + } + else + { + if(recvbuf2recvframe(adapter, precvbuf)==_FAIL)//rx packets + { + //precvbuf->reuse = _TRUE; + rtw_read_port(adapter, precvpriv->ff_hwaddr, 0, (unsigned char *)precvbuf); + } + } + + } + + break; + + default: + + if( !USBD_HALTED(usbdstatus) ) + { + RT_TRACE(_module_hci_ops_os_c_,_drv_err_,("\n usb_read_port_complete():USBD_HALTED(usbdstatus)=%x (need to handle ) \n",USBD_HALTED(usbdstatus))); + + } + else + { + RT_TRACE(_module_hci_ops_os_c_,_drv_err_,("\n usb_read_port_complete(): USBD_HALTED(usbdstatus)=%x \n\n", USBD_HALTED(usbdstatus)) ); + adapter->bDriverStopped = _TRUE; + adapter->bSurpriseRemoved = _TRUE; + RT_TRACE(_module_hci_ops_os_c_,_drv_err_,("usb_read_port_complete(): USBD_HALTED(usbdstatus)=%x \n\n", USBD_HALTED(usbdstatus))) ; + } + + break; + + } + + return STATUS_MORE_PROCESSING_REQUIRED; + +} + +u32 usb_read_port(struct intf_hdl *pintfhdl, u32 addr, u32 cnt, u8 *rmem) +{ + u8 *pdata; + u16 size; + PURB purb; + PIRP pirp; + PIO_STACK_LOCATION nextStack; + NTSTATUS ntstatus; + USBD_STATUS usbdstatus; + HANDLE PipeHandle; + struct recv_buf *precvbuf = (struct recv_buf *)rmem; + struct intf_priv *pintfpriv = pintfhdl->pintfpriv; + struct dvobj_priv *pdev = (struct dvobj_priv *)pintfpriv->intf_dev; + _adapter *adapter = (_adapter *)pdev->padapter; + struct recv_priv *precvpriv = &adapter->recvpriv; + u32 bResult = _FALSE; + +_func_enter_; + + if(adapter->bDriverStopped || adapter->bSurpriseRemoved ||adapter->pwrctrlpriv.pnp_bstop_trx) { + RT_TRACE(_module_hci_ops_os_c_,_drv_err_,("usb_read_port:( padapter->bDriverStopped ||padapter->bSurpriseRemoved ||adapter->pwrctrlpriv.pnp_bstop_trx)!!!\n")); + return bResult; + } + + if(precvbuf !=NULL) + { + + rtl8192cu_init_recvbuf(adapter, precvbuf); + + _rtw_spinlock(&precvpriv->lock); + precvpriv->rx_pending_cnt++; + precvbuf->irp_pending = _TRUE; + _rtw_spinunlock(&precvpriv->lock); + + pdata = (u8*)precvbuf->pbuf; + + size = sizeof( struct _URB_BULK_OR_INTERRUPT_TRANSFER ); + purb = precvbuf->purb; + + //translate DMA FIFO addr to pipehandle + PipeHandle = ffaddr2pipehdl(pdev, addr); + + UsbBuildInterruptOrBulkTransferRequest( + purb, + (USHORT)size, + PipeHandle, + pdata, + NULL, + MAX_RECVBUF_SZ, + USBD_TRANSFER_DIRECTION_IN | USBD_SHORT_TRANSFER_OK, + NULL + ); + + pirp = precvbuf->pirp; + +#if NDIS51_MINIPORT + IoReuseIrp(pirp, STATUS_SUCCESS); +#else + pirp->Cancel = _FALSE; +#endif + + // call the class driver to perform the operation + // and pass the URB to the USB driver stack + nextStack = IoGetNextIrpStackLocation(pirp); + nextStack->Parameters.Others.Argument1 = purb; + nextStack->Parameters.DeviceIoControl.IoControlCode = IOCTL_INTERNAL_USB_SUBMIT_URB; + nextStack->MajorFunction = IRP_MJ_INTERNAL_DEVICE_CONTROL; + + IoSetCompletionRoutine( + pirp, // irp to use + usb_read_port_complete, // routine to call when irp is done + precvbuf, // context to pass routine + TRUE, // call on success + TRUE, // call on error + TRUE); // call on cancel + + // + // The IoCallDriver routine + // sends an IRP to the driver associated with a specified device object. + // + ntstatus = IoCallDriver(pdev->pnextdevobj, pirp); + usbdstatus = URB_STATUS(purb); + + if( USBD_HALTED(usbdstatus) ) { + RT_TRACE(_module_hci_ops_os_c_,_drv_err_,("\n usb_read_port(): USBD_HALTED(usbdstatus=0x%.8x)=%.8x \n\n", usbdstatus, USBD_HALTED(usbdstatus))); + pdev->padapter->bDriverStopped=_TRUE; + pdev->padapter->bSurpriseRemoved=_TRUE; + } + + if( ntstatus == STATUS_PENDING ) + { + bResult = _TRUE;// The IRP is pended in USBD as we expected. + } + else { + RT_TRACE(_module_hci_ops_os_c_,_drv_err_,("usb_read_port(): IoCallDriver failed!!! IRP STATUS: %X\n", ntstatus)); + RT_TRACE(_module_hci_ops_os_c_,_drv_err_,("usb_read_port(): IoCallDriver failed!!! USB STATUS: %X\n", usbdstatus)); + } + + } + else{ + RT_TRACE(_module_hci_ops_os_c_,_drv_err_,("usb_read_port:precv_frame ==NULL\n")); + } + +_func_exit_; + + return bResult; + +} + +void usb_read_port_cancel(_adapter *padapter) +{ + struct recv_buf *precvbuf; + sint i; + struct dvobj_priv *pdev = &padapter->dvobjpriv; + struct recv_priv *precvpriv=&padapter->recvpriv; + + RT_TRACE(_module_hci_ops_os_c_,_drv_err_,("\n ==>usb_read_port_cancel\n")); + + _rtw_spinlock(&precvpriv->lock); + precvpriv->rx_pending_cnt--; //decrease 1 for Initialize ++ + _rtw_spinunlock(&precvpriv->lock); + + if (precvpriv->rx_pending_cnt) + { + // Canceling Pending Recv Irp + precvbuf = (struct recv_buf *)precvpriv->precv_buf; + + for( i = 0; i < NR_RECVBUFF; i++ ) + { + if (precvbuf->irp_pending == _TRUE) + { + IoCancelIrp(precvbuf->pirp); + RT_TRACE(_module_hci_ops_os_c_,_drv_err_,("usb_read_port_cancel() :IoCancelIrp\n")); + } + + precvbuf++; + } + + _rtw_down_sema(&precvpriv->allrxreturnevt); + + RT_TRACE(_module_hci_ops_os_c_,_drv_err_,("usb_read_port_cancel:down sema\n")); + + } + + RT_TRACE(_module_hci_ops_os_c_,_drv_err_,("<==usb_read_port_cancel\n")); + +} + +NTSTATUS usb_write_port_complete( + PDEVICE_OBJECT pUsbDevObj, + PIRP pIrp, + PVOID pTxContext +) +{ + u32 i, bIrpSuccess, sz; + NTSTATUS status = STATUS_SUCCESS; + u8 *ptr; + struct xmit_frame *pxmitframe = (struct xmit_frame *) pTxContext; + struct xmit_buf *pxmitbuf = pxmitframe->pxmitbuf; + _adapter *padapter = pxmitframe->padapter; + struct dvobj_priv *pdev = (struct dvobj_priv *)&padapter->dvobjpriv; + struct io_queue *pio_queue = (struct io_queue *)padapter->pio_queue; + struct intf_hdl *pintfhdl = &(pio_queue->intf); + struct xmit_priv *pxmitpriv = &padapter->xmitpriv; + +_func_enter_; + + RT_TRACE(_module_hci_ops_os_c_,_drv_err_,("+usb_write_port_complete\n")); + + _rtw_spinlock_ex(&pxmitpriv->lock); + pxmitpriv->txirp_cnt--; + _rtw_spinunlock_ex(&pxmitpriv->lock); + + if(pxmitpriv->txirp_cnt==0){ + RT_TRACE(_module_hci_ops_os_c_,_drv_err_,("usb_write_port_complete: txirp_cnt== 0, set allrxreturnevt!\n")); + _rtw_up_sema(&(pxmitpriv->tx_retevt)); + } + + status = pIrp->IoStatus.Status; + + if( status == STATUS_SUCCESS ) + bIrpSuccess = _TRUE; + else + bIrpSuccess = _FALSE; + + if( pIrp->Cancel == _TRUE ) + { + if(pxmitframe !=NULL) + { + RT_TRACE(_module_hci_ops_os_c_,_drv_err_,("\n usb_write_port_complete:pIrp->Cancel == _TRUE,(pxmitframe !=NULL\n")); + rtw_free_xmitframe(pxmitpriv, pxmitframe); + } + + return STATUS_MORE_PROCESSING_REQUIRED; + } + + if(padapter->bSurpriseRemoved) + { + RT_TRACE(_module_hci_ops_os_c_,_drv_err_,("usb_write_port_complete:bDriverStopped(%d) OR bSurpriseRemoved(%d)", padapter->bDriverStopped, padapter->bSurpriseRemoved)); + return STATUS_MORE_PROCESSING_REQUIRED; + } + + + // + // Send 0-byte here if necessary. + // + // + // 1. We MUST keep at most one IRP pending in each endpoint, otherwise USB host controler driver will hang. + // Besides, even 0-byte IRP shall be count into #IRP sent down, so, we send 0-byte here instead of TxFillDescriptor8187(). + // 2. If we don't count 0-byte IRP into an #IRP sent down, Tx will stuck when we download files via BT and + // play online video on XP SP1 EHCU. + // 2005.12.26, by rcnjko. + // + + + for(i=0; i< 8; i++) + { + if(pIrp == pxmitframe->pxmit_irp[i]) + { + pxmitframe->bpending[i] = _FALSE;// + //ac_tag = pxmitframe->ac_tag[i]; + sz = pxmitframe->sz[i]; + break; + } + } + +#if 0 + pxmitframe->fragcnt--; + if(pxmitframe->fragcnt == 0)// if((pxmitframe->fragcnt == 0) && (pxmitframe->irpcnt == 8)){ + { + //RT_TRACE(_module_hci_ops_os_c_,_drv_err_,("\n usb_write_port_complete:pxmitframe->fragcnt == 0\n")); + rtw_free_xmitframe(pxmitpriv,pxmitframe); + } +#else + + //not to consider tx fragment + rtw_free_xmitframe(pxmitpriv, pxmitframe); + +#endif + + rtl8192cu_xmitframe_complete(padapter, pxmitpriv, pxmitbuf); + +_func_exit_; + + return STATUS_MORE_PROCESSING_REQUIRED; + +} + +u32 usb_write_port(struct intf_hdl *pintfhdl, u32 addr, u32 cnt, u8 *wmem) +{ + u32 i, bwritezero; + u8 *ptr; + PIO_STACK_LOCATION nextStack; + USBD_STATUS usbdstatus; + HANDLE PipeHandle; + PIRP pirp = NULL; + PURB purb = NULL; + NDIS_STATUS ndisStatus = NDIS_STATUS_SUCCESS; + _adapter *padapter = (_adapter *)pintfhdl->adapter; + struct dvobj_priv *pNdisCEDvice = (struct dvobj_priv *)&padapter->dvobjpriv; + struct xmit_priv *pxmitpriv = &padapter->xmitpriv; + struct xmit_frame *pxmitframe = (struct xmit_frame *)wmem; + +_func_enter_; + + if((padapter->bDriverStopped) || (padapter->bSurpriseRemoved) ||(padapter->pwrctrlpriv.pnp_bstop_trx)) + { + RT_TRACE(_module_hci_ops_os_c_,_drv_err_,("usb_write_port:( padapter->bDriverStopped ||padapter->bSurpriseRemoved ||adapter->pwrctrlpriv.pnp_bstop_trx)!!!\n")); + return _FAIL; + } + + + for(i=0; i<8; i++) + { + if(pxmitframe->bpending[i] == _FALSE) + { + _rtw_spinlock(&pxmitpriv->lock); + pxmitpriv->txirp_cnt++; + pxmitframe->bpending[i] = _TRUE; + _rtw_spinunlock(&pxmitpriv->lock); + + pxmitframe->sz[i] = cnt; + purb = pxmitframe->pxmit_urb[i]; + pirp = pxmitframe->pxmit_irp[i]; + + //pxmitframe->ac_tag[i] = ac_tag; + + break; + } + } + + bwritezero = _FALSE; + if (pNdisCEDvice->ishighspeed) + { + if(cnt> 0 && cnt%512 == 0) + { + RT_TRACE(_module_hci_ops_os_c_,_drv_err_,("ishighspeed, cnt=%d\n", cnt)); + //cnt=cnt+1; + bwritezero = _TRUE; + } + } + else + { + if(cnt > 0 && cnt%64 == 0) + { + RT_TRACE(_module_hci_ops_os_c_,_drv_err_,("cnt=%d\n", cnt)); + //cnt=cnt+1; + bwritezero = _TRUE; + } + } + + +#ifdef NDIS51_MINIPORT + IoReuseIrp(pirp, STATUS_SUCCESS); +#else + pirp->Cancel = _FALSE; +#endif + + + //translate DMA FIFO addr to pipehandle + PipeHandle = ffaddr2pipehdl(pNdisCEDvice, addr); + + + // Build our URB for USBD + UsbBuildInterruptOrBulkTransferRequest( + purb, + sizeof(struct _URB_BULK_OR_INTERRUPT_TRANSFER), + PipeHandle, + pxmitframe->mem_addr, + NULL, + cnt, + 0, + NULL); + + // + // call the calss driver to perform the operation + // pass the URB to the USB driver stack + // + nextStack = IoGetNextIrpStackLocation(pirp); + nextStack->MajorFunction = IRP_MJ_INTERNAL_DEVICE_CONTROL; + nextStack->Parameters.Others.Argument1 = purb; + nextStack->Parameters.DeviceIoControl.IoControlCode = IOCTL_INTERNAL_USB_SUBMIT_URB; + + //Set Completion Routine + IoSetCompletionRoutine(pirp, // irp to use + usb_write_port_complete, // callback routine + pxmitframe, // context + TRUE, // call on success + TRUE, // call on error + TRUE); // call on cancel + + + // Call IoCallDriver to send the irp to the usb bus driver + // + ndisStatus = IoCallDriver(pNdisCEDvice->pnextdevobj, pirp); + usbdstatus = URB_STATUS(purb); + + if( USBD_HALTED(usbdstatus) ) + { + RT_TRACE(_module_hci_ops_os_c_,_drv_err_,("\n usb_write_port(): USBD_HALTED(usbdstatus)=%x set bDriverStopped TRUE!\n\n",USBD_HALTED(usbdstatus)) ); + padapter->bDriverStopped=_TRUE; + padapter->bSurpriseRemoved=_TRUE; + } + + // + // The usb bus driver should always return STATUS_PENDING when bulk out irp async + // + if ( ndisStatus != STATUS_PENDING ) + { + RT_TRACE(_module_hci_ops_os_c_,_drv_err_,("\n usb_write_port(): ndisStatus(%x) != STATUS_PENDING!\n\n", ndisStatus)); + + _func_exit_; + + return _FAIL; + } + + if(bwritezero == _TRUE) + { + usb_bulkout_zero(pintfhdl, addr); + } + + +_func_exit_; + + return _SUCCESS; + +} + + +void usb_write_port_cancel(_adapter *padapter) +{ + + sint i,j; + struct dvobj_priv *pdev = &padapter->dvobjpriv; + struct xmit_priv *pxmitpriv=&padapter->xmitpriv; + struct xmit_frame *pxmitframe; + + _rtw_spinlock(&pxmitpriv->lock); + pxmitpriv->txirp_cnt--; //decrease 1 for Initialize ++ + _rtw_spinunlock(&pxmitpriv->lock); + + if (pxmitpriv->txirp_cnt) + { + // Canceling Pending Recv Irp + pxmitframe= (struct xmit_frame *)pxmitpriv->pxmit_frame_buf; + + for( i = 0; i < NR_XMITFRAME; i++ ) + { + for(j=0;j<8;j++) + { + if (pxmitframe->bpending[j]==_TRUE) + { + IoCancelIrp(pxmitframe->pxmit_irp[j]); + RT_TRACE(_module_hci_ops_os_c_,_drv_err_,(" usb_write_port_cancel() :IoCancelIrp\n")); + + } + } + + pxmitframe++; + } + + _rtw_down_sema(&(pxmitpriv->tx_retevt)); + + } + +} + + +/*! \brief Wrap the pUrb to an IRP and send this IRP to Bus Driver. Then wait for this IRP completion. + The Caller shall be at Passive Level. +*/ +NTSTATUS sync_callusbd(struct dvobj_priv *pdvobjpriv, PURB purb) +{ + + KEVENT kevent; + PIRP irp; + IO_STATUS_BLOCK iostatusblock; + PIO_STACK_LOCATION nextstack; + USBD_STATUS usbdstatus; + LARGE_INTEGER waittime; + NTSTATUS ntstatus = STATUS_SUCCESS; + _adapter *padapter = pdvobjpriv->padapter; + + + _func_enter_; + +// if(padapter->bDriverStopped) { +// goto exit; +// } + + KeInitializeEvent(&kevent, NotificationEvent, _FALSE); + irp = IoBuildDeviceIoControlRequest( + IOCTL_INTERNAL_USB_SUBMIT_URB, + pdvobjpriv->pphysdevobj,//CEdevice->pUsbDevObj, + NULL, + 0, + NULL, + 0, + _TRUE, + &kevent, + &iostatusblock); + + if(irp == NULL) { + RT_TRACE(_module_hci_ops_os_c_,_drv_err_,("SyncCallUSBD: memory alloc for irp failed\n")); + ntstatus=STATUS_INSUFFICIENT_RESOURCES; + goto exit; + } + + nextstack = IoGetNextIrpStackLocation(irp); + if(nextstack == NULL) + RT_TRACE(_module_hci_ops_os_c_,_drv_err_,("IoGetNextIrpStackLocation fail\n")); + + nextstack->Parameters.Others.Argument1 = purb; + + // Issue an IRP for Sync IO. + ntstatus = IoCallDriver(pdvobjpriv->pphysdevobj, irp); + usbdstatus = URB_STATUS(purb); + + if(ntstatus == STATUS_PENDING) + { + // Method 1 + waittime.QuadPart = -10000 * 50000; + ntstatus = KeWaitForSingleObject(&kevent, Executive, KernelMode, _FALSE, &waittime); //8150 code + + // Method 2 + //ntStatus = KeWaitForSingleObject(&Kevent, Executive, KernelMode, FALSE, NULL); //DDK sample + + usbdstatus = URB_STATUS(purb); + + if(ntstatus == STATUS_TIMEOUT) + { + //usbdevice->nIoStuckCnt++; + RT_TRACE(_module_hci_ops_os_c_,_drv_err_,("SyncCallUSBD: TIMEOUT....5000ms\n")); + + // Method 2 + IoCancelIrp(irp); + ntstatus = KeWaitForSingleObject(&kevent, Executive, KernelMode, _FALSE, NULL); //DDK sample + usbdstatus = URB_STATUS(purb); + + usbdstatus = USBD_STATUS_SUCCESS; + } + + } + +exit: + + _func_exit_; + + return ntstatus; + +} +int usbctrl_vendorreq(struct intf_priv *pintfpriv, u8 request, u16 value, u16 index, void *pdata, u16 len, u8 requesttype) +{ + PURB purb; + u8 ret; + unsigned long transferflags; + NTSTATUS ntstatus; + + struct dvobj_priv *pdvobjpriv = (struct dvobj_priv *)pintfpriv->intf_dev; + + _func_enter_; + + ret=_TRUE; + purb = (PURB)ExAllocatePool(NonPagedPool, sizeof(struct _URB_CONTROL_VENDOR_OR_CLASS_REQUEST) ); + if(purb == NULL) { + + RT_TRACE(_module_hci_ops_os_c_,_drv_err_,("usbctrl_vendorreq(): Failed to allocate urb !!!\n")); + ret =_FALSE; + goto exit; + } + + if (requesttype == 0x01) { + transferflags = USBD_TRANSFER_DIRECTION_IN;//read_in + } else { + transferflags= 0;//write_out + } + + UsbBuildVendorRequest( + purb, //Pointer to an URB that is to be formatted as a vendor or class request. + URB_FUNCTION_VENDOR_DEVICE, //Indicates the URB is a vendor-defined request for a USB device. + sizeof(struct _URB_CONTROL_VENDOR_OR_CLASS_REQUEST), //Specifies the length, in bytes, of the URB. + transferflags, //TransferFlags + 0, //ReservedBits + request, //Request + value, //Value + index, //Index + pdata, //TransferBuffer + NULL, //TransferBufferMDL + len, //TransferBufferLength + NULL //Link + ); + + ntstatus = sync_callusbd(pdvobjpriv, purb); + if(!NT_SUCCESS(ntstatus)) + { + ExFreePool(purb); + RT_TRACE(_module_hci_ops_os_c_,_drv_err_,(" usbctrl_vendorreq() : SOMETHING WRONG\n") ); + ret = _FALSE; + goto exit; + } + + ExFreePool(purb); + +exit: + _func_exit_; + + return ret; + +} --- linux-raspi2-4.2.0.orig/drivers/net/wireless/rtl8192cu/ifcfg-wlan0 +++ linux-raspi2-4.2.0/drivers/net/wireless/rtl8192cu/ifcfg-wlan0 @@ -0,0 +1,4 @@ +#DHCP client +DEVICE=wlan0 +BOOTPROTO=dhcp +ONBOOT=yes \ No newline at end of file --- linux-raspi2-4.2.0.orig/drivers/net/wireless/rtl8192cu/include/Hal8192CEHWImg.h +++ linux-raspi2-4.2.0/drivers/net/wireless/rtl8192cu/include/Hal8192CEHWImg.h @@ -0,0 +1,85 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved. + * + * 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 + * published by the Free Software Foundation. + * + * 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 Street, Fifth Floor, Boston, MA 02110, USA + * + * + ******************************************************************************/ +#ifndef __INC_HAL8192CE_FW_IMG_H +#define __INC_HAL8192CE_FW_IMG_H + +#include + +/*Created on 2011/ 6/15, 5:45*/ + +#ifdef CONFIG_BT_COEXISTENCE +#define TSMCImgArrayLength 15706 //v84 TSMC COMMON 2012-04-13 +#else //#ifdef CONFIG_P2P +#define TSMCImgArrayLength 16126 //v88 TSMC P2PPS with CCX report C2H 2012-12-05 +#endif +extern u8 Rtl8192CEFwTSMCImgArray[TSMCImgArrayLength]; + +#ifdef CONFIG_BT_COEXISTENCE +#define UMCACutImgArrayLength 16248 //v79 UMC A Cut COMMON 2011-10-06 +#else //#ifdef CONFIG_P2P +#define UMCACutImgArrayLength 16126 //v88 UMC A Cut P2PPS with CCX report C2H 2012-12-05 +#endif +extern u8 Rtl8192CEFwUMCACutImgArray[UMCACutImgArrayLength]; + +#ifdef CONFIG_BT_COEXISTENCE +#define UMCBCutImgArrayLength 15686 //v84 UMC B Cut COMMON 2012-04-13 +#else //#ifdef CONFIG_P2P +#define UMCBCutImgArrayLength 16096 //v88 UMC B Cut P2PPS with CCX report C2H 2012-12-05 +#endif +extern u8 Rtl8192CEFwUMCBCutImgArray[UMCBCutImgArrayLength]; + +//8192C_Formal_92CE_PHYforMP_110804 2011-11-23 +//8188C_Formal_88CE_PHYforMP_111117 2011-11-23 + +#define PHY_REG_2TArrayLength 374 +extern u32 Rtl8192CEPHY_REG_2TArray[PHY_REG_2TArrayLength]; +#define PHY_REG_1TArrayLength 374 +extern u32 Rtl8192CEPHY_REG_1TArray[PHY_REG_1TArrayLength]; +#define PHY_ChangeTo_1T1RArrayLength 1 +extern u32 Rtl8192CEPHY_ChangeTo_1T1RArray[PHY_ChangeTo_1T1RArrayLength]; +#define PHY_ChangeTo_1T2RArrayLength 1 +extern u32 Rtl8192CEPHY_ChangeTo_1T2RArray[PHY_ChangeTo_1T2RArrayLength]; +#define PHY_ChangeTo_2T2RArrayLength 1 +extern u32 Rtl8192CEPHY_ChangeTo_2T2RArray[PHY_ChangeTo_2T2RArrayLength]; +#define PHY_REG_Array_PGLength 336 +extern u32 Rtl8192CEPHY_REG_Array_PG[PHY_REG_Array_PGLength]; +#define PHY_REG_Array_MPLength 4 +extern u32 Rtl8192CEPHY_REG_Array_MP[PHY_REG_Array_MPLength]; +#define RadioA_2TArrayLength 282 +extern u32 Rtl8192CERadioA_2TArray[RadioA_2TArrayLength]; +#define RadioB_2TArrayLength 78 +extern u32 Rtl8192CERadioB_2TArray[RadioB_2TArrayLength]; +#define RadioA_1TArrayLength 282 +extern u32 Rtl8192CERadioA_1TArray[RadioA_1TArrayLength]; +#define RadioB_1TArrayLength 1 +extern u32 Rtl8192CERadioB_1TArray[RadioB_1TArrayLength]; +#define RadioB_GM_ArrayLength 1 +extern u32 Rtl8192CERadioB_GM_Array[RadioB_GM_ArrayLength]; +// MAC reg V14 - 2011-11-23 +#define MAC_2T_ArrayLength 174 +extern u32 Rtl8192CEMAC_2T_Array[MAC_2T_ArrayLength]; +#define MACPHY_Array_PGLength 1 +extern u32 Rtl8192CEMACPHY_Array_PG[MACPHY_Array_PGLength]; +#define AGCTAB_2TArrayLength 320 +extern u32 Rtl8192CEAGCTAB_2TArray[AGCTAB_2TArrayLength]; +#define AGCTAB_1TArrayLength 320 +extern u32 Rtl8192CEAGCTAB_1TArray[AGCTAB_1TArrayLength]; + +#endif //__INC_HAL8192CE_FW_IMG_H --- linux-raspi2-4.2.0.orig/drivers/net/wireless/rtl8192cu/include/Hal8192CPhyCfg.h +++ linux-raspi2-4.2.0/drivers/net/wireless/rtl8192cu/include/Hal8192CPhyCfg.h @@ -0,0 +1,427 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved. + * + * 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 + * published by the Free Software Foundation. + * + * 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 Street, Fifth Floor, Boston, MA 02110, USA + * + * + ******************************************************************************/ +/***************************************************************************** + * Module: __INC_HAL8192CPHYCFG_H + * + * + * Note: + * + * + * Export: Constants, macro, functions(API), global variables(None). + * + * Abbrev: + * + * History: + * Data Who Remark + * 08/07/2007 MHC 1. Porting from 9x series PHYCFG.h. + * 2. Reorganize code architecture. + * + *****************************************************************************/ + /* Check to see if the file has been included already. */ +#ifndef __INC_HAL8192CPHYCFG_H +#define __INC_HAL8192CPHYCFG_H + + +/*--------------------------Define Parameters-------------------------------*/ +#define LOOP_LIMIT 5 +#define MAX_STALL_TIME 50 //us +#define AntennaDiversityValue 0x80 //(Adapter->bSoftwareAntennaDiversity ? 0x00:0x80) +#define MAX_TXPWR_IDX_NMODE_92S 63 +#define Reset_Cnt_Limit 3 + +#define IQK_MAC_REG_NUM 4 +#define IQK_ADDA_REG_NUM 16 +#define IQK_BB_REG_NUM 9 +#define HP_THERMAL_NUM 8 + +#ifdef CONFIG_PCI_HCI +#define MAX_AGGR_NUM 0x0A0A +#else +#define MAX_AGGR_NUM 0x0909 +#endif + +#ifdef CONFIG_PCI_HCI +#define SET_RTL8192SE_RF_SLEEP(_pAdapter) \ +{ \ + u1Byte u1bTmp; \ + u1bTmp = PlatformEFIORead1Byte(_pAdapter, REG_LDOV12D_CTRL); \ + u1bTmp |= BIT0; \ + PlatformEFIOWrite1Byte(_pAdapter, REG_LDOV12D_CTRL, u1bTmp); \ + PlatformEFIOWrite1Byte(_pAdapter, REG_SPS_OCP_CFG, 0x0); \ + PlatformEFIOWrite1Byte(_pAdapter, TXPAUSE, 0xFF); \ + PlatformEFIOWrite2Byte(_pAdapter, CMDR, 0x57FC); \ + delay_us(100); \ + PlatformEFIOWrite2Byte(_pAdapter, CMDR, 0x77FC); \ + PlatformEFIOWrite1Byte(_pAdapter, PHY_CCA, 0x0); \ + delay_us(10); \ + PlatformEFIOWrite2Byte(_pAdapter, CMDR, 0x37FC); \ + delay_us(10); \ + PlatformEFIOWrite2Byte(_pAdapter, CMDR, 0x77FC); \ + delay_us(10); \ + PlatformEFIOWrite2Byte(_pAdapter, CMDR, 0x57FC); \ +} +#endif + + +/*--------------------------Define Parameters-------------------------------*/ + + +/*------------------------------Define structure----------------------------*/ +typedef enum _SwChnlCmdID{ + CmdID_End, + CmdID_SetTxPowerLevel, + CmdID_BBRegWrite10, + CmdID_WritePortUlong, + CmdID_WritePortUshort, + CmdID_WritePortUchar, + CmdID_RF_WriteReg, +}SwChnlCmdID; + + +/* 1. Switch channel related */ +typedef struct _SwChnlCmd{ + SwChnlCmdID CmdID; + u32 Para1; + u32 Para2; + u32 msDelay; +}SwChnlCmd; + +typedef enum _HW90_BLOCK{ + HW90_BLOCK_MAC = 0, + HW90_BLOCK_PHY0 = 1, + HW90_BLOCK_PHY1 = 2, + HW90_BLOCK_RF = 3, + HW90_BLOCK_MAXIMUM = 4, // Never use this +}HW90_BLOCK_E, *PHW90_BLOCK_E; + +#define RF_PATH_MAX 2 + +#define CHANNEL_MAX_NUMBER 14 // 14 is the max channel number +#define CHANNEL_GROUP_MAX 3 // ch1~3, ch4~9, ch10~14 total three groups + +typedef enum _WIRELESS_MODE { + WIRELESS_MODE_UNKNOWN = 0x00, + WIRELESS_MODE_A = 0x01, + WIRELESS_MODE_B = 0x02, + WIRELESS_MODE_G = 0x04, + WIRELESS_MODE_AUTO = 0x08, + WIRELESS_MODE_N_24G = 0x10, + WIRELESS_MODE_N_5G = 0x20 +} WIRELESS_MODE; + +typedef enum _BaseBand_Config_Type{ + BaseBand_Config_PHY_REG = 0, //Radio Path A + BaseBand_Config_AGC_TAB = 1, //Radio Path B +}BaseBand_Config_Type, *PBaseBand_Config_Type; + + +typedef enum _PHY_Rate_Tx_Power_Offset_Area{ + RA_OFFSET_LEGACY_OFDM1, + RA_OFFSET_LEGACY_OFDM2, + RA_OFFSET_HT_OFDM1, + RA_OFFSET_HT_OFDM2, + RA_OFFSET_HT_OFDM3, + RA_OFFSET_HT_OFDM4, + RA_OFFSET_HT_CCK, +}RA_OFFSET_AREA,*PRA_OFFSET_AREA; + + +/* BB/RF related */ +typedef enum _RF_TYPE_8190P{ + RF_TYPE_MIN, // 0 + RF_8225=1, // 1 11b/g RF for verification only + RF_8256=2, // 2 11b/g/n + RF_8258=3, // 3 11a/b/g/n RF + RF_6052=4, // 4 11b/g/n RF + //RF_6052=5, // 4 11b/g/n RF + // TODO: We sholud remove this psudo PHY RF after we get new RF. + RF_PSEUDO_11N=5, // 5, It is a temporality RF. +}RF_TYPE_8190P_E,*PRF_TYPE_8190P_E; + +typedef struct _BB_REGISTER_DEFINITION{ + u32 rfintfs; // set software control: + // 0x870~0x877[8 bytes] + + u32 rfintfi; // readback data: + // 0x8e0~0x8e7[8 bytes] + + u32 rfintfo; // output data: + // 0x860~0x86f [16 bytes] + + u32 rfintfe; // output enable: + // 0x860~0x86f [16 bytes] + + u32 rf3wireOffset; // LSSI data: + // 0x840~0x84f [16 bytes] + + u32 rfLSSI_Select; // BB Band Select: + // 0x878~0x87f [8 bytes] + + u32 rfTxGainStage; // Tx gain stage: + // 0x80c~0x80f [4 bytes] + + u32 rfHSSIPara1; // wire parameter control1 : + // 0x820~0x823,0x828~0x82b, 0x830~0x833, 0x838~0x83b [16 bytes] + + u32 rfHSSIPara2; // wire parameter control2 : + // 0x824~0x827,0x82c~0x82f, 0x834~0x837, 0x83c~0x83f [16 bytes] + + u32 rfSwitchControl; //Tx Rx antenna control : + // 0x858~0x85f [16 bytes] + + u32 rfAGCControl1; //AGC parameter control1 : + // 0xc50~0xc53,0xc58~0xc5b, 0xc60~0xc63, 0xc68~0xc6b [16 bytes] + + u32 rfAGCControl2; //AGC parameter control2 : + // 0xc54~0xc57,0xc5c~0xc5f, 0xc64~0xc67, 0xc6c~0xc6f [16 bytes] + + u32 rfRxIQImbalance; //OFDM Rx IQ imbalance matrix : + // 0xc14~0xc17,0xc1c~0xc1f, 0xc24~0xc27, 0xc2c~0xc2f [16 bytes] + + u32 rfRxAFE; //Rx IQ DC ofset and Rx digital filter, Rx DC notch filter : + // 0xc10~0xc13,0xc18~0xc1b, 0xc20~0xc23, 0xc28~0xc2b [16 bytes] + + u32 rfTxIQImbalance; //OFDM Tx IQ imbalance matrix + // 0xc80~0xc83,0xc88~0xc8b, 0xc90~0xc93, 0xc98~0xc9b [16 bytes] + + u32 rfTxAFE; //Tx IQ DC Offset and Tx DFIR type + // 0xc84~0xc87,0xc8c~0xc8f, 0xc94~0xc97, 0xc9c~0xc9f [16 bytes] + + u32 rfLSSIReadBack; //LSSI RF readback data SI mode + // 0x8a0~0x8af [16 bytes] + + u32 rfLSSIReadBackPi; //LSSI RF readback data PI mode 0x8b8-8bc for Path A and B + +}BB_REGISTER_DEFINITION_T, *PBB_REGISTER_DEFINITION_T; + +#ifdef CONFIG_MP_INCLUDED +typedef enum _ANTENNA_PATH{ + ANTENNA_NONE = 0x00, + ANTENNA_D , + ANTENNA_C , + ANTENNA_CD , + ANTENNA_B , + ANTENNA_BD , + ANTENNA_BC , + ANTENNA_BCD , + ANTENNA_A , + ANTENNA_AD , + ANTENNA_AC , + ANTENNA_ACD , + ANTENNA_AB , + ANTENNA_ABD , + ANTENNA_ABC , + ANTENNA_ABCD +} ANTENNA_PATH; +#endif + +typedef struct _R_ANTENNA_SELECT_OFDM{ + u32 r_tx_antenna:4; + u32 r_ant_l:4; + u32 r_ant_non_ht:4; + u32 r_ant_ht1:4; + u32 r_ant_ht2:4; + u32 r_ant_ht_s1:4; + u32 r_ant_non_ht_s1:4; + u32 OFDM_TXSC:2; + u32 Reserved:2; +}R_ANTENNA_SELECT_OFDM; + +typedef struct _R_ANTENNA_SELECT_CCK{ + u8 r_cckrx_enable_2:2; + u8 r_cckrx_enable:2; + u8 r_ccktx_enable:4; +}R_ANTENNA_SELECT_CCK; + +/*------------------------------Define structure----------------------------*/ + + +/*------------------------Export global variable----------------------------*/ +/*------------------------Export global variable----------------------------*/ + + +/*------------------------Export Marco Definition---------------------------*/ +/*------------------------Export Marco Definition---------------------------*/ + + +/*--------------------------Exported Function prototype---------------------*/ +// +// BB and RF register read/write +// +u32 rtl8192c_PHY_QueryBBReg( IN PADAPTER Adapter, + IN u32 RegAddr, + IN u32 BitMask ); +void rtl8192c_PHY_SetBBReg( IN PADAPTER Adapter, + IN u32 RegAddr, + IN u32 BitMask, + IN u32 Data ); +u32 rtl8192c_PHY_QueryRFReg( IN PADAPTER Adapter, + IN RF_RADIO_PATH_E eRFPath, + IN u32 RegAddr, + IN u32 BitMask ); +void rtl8192c_PHY_SetRFReg( IN PADAPTER Adapter, + IN RF_RADIO_PATH_E eRFPath, + IN u32 RegAddr, + IN u32 BitMask, + IN u32 Data ); + +// +// Initialization related function +// +/* MAC/BB/RF HAL config */ +int PHY_MACConfig8192C( IN PADAPTER Adapter ); +int PHY_BBConfig8192C( IN PADAPTER Adapter ); +int PHY_RFConfig8192C( IN PADAPTER Adapter ); +/* RF config */ +int rtl8192c_PHY_ConfigRFWithParaFile( IN PADAPTER Adapter, + IN u8* pFileName, + IN RF_RADIO_PATH_E eRFPath); +int rtl8192c_PHY_ConfigRFWithHeaderFile( IN PADAPTER Adapter, + IN RF_RADIO_PATH_E eRFPath); + +/* BB/RF readback check for making sure init OK */ +int rtl8192c_PHY_CheckBBAndRFOK( IN PADAPTER Adapter, + IN HW90_BLOCK_E CheckBlock, + IN RF_RADIO_PATH_E eRFPath ); +/* Read initi reg value for tx power setting. */ +void rtl8192c_PHY_GetHWRegOriginalValue( IN PADAPTER Adapter ); + +// +// RF Power setting +// +//extern BOOLEAN PHY_SetRFPowerState(IN PADAPTER Adapter, +// IN RT_RF_POWER_STATE eRFPowerState); + +// +// BB TX Power R/W +// +void PHY_GetTxPowerLevel8192C( IN PADAPTER Adapter, + OUT u32* powerlevel ); +void PHY_SetTxPowerLevel8192C( IN PADAPTER Adapter, + IN u8 channel ); +BOOLEAN PHY_UpdateTxPowerDbm8192C( IN PADAPTER Adapter, + IN int powerInDbm ); + +// +VOID +PHY_ScanOperationBackup8192C(IN PADAPTER Adapter, + IN u8 Operation ); + +// +// Switch bandwidth for 8192S +// +//extern void PHY_SetBWModeCallback8192C( IN PRT_TIMER pTimer ); +void PHY_SetBWMode8192C( IN PADAPTER pAdapter, + IN HT_CHANNEL_WIDTH ChnlWidth, + IN unsigned char Offset ); + +// +// Set FW CMD IO for 8192S. +// +//extern BOOLEAN HalSetIO8192C( IN PADAPTER Adapter, +// IN IO_TYPE IOType); + +// +// Set A2 entry to fw for 8192S +// +extern void FillA2Entry8192C( IN PADAPTER Adapter, + IN u8 index, + IN u8* val); + + +// +// channel switch related funciton +// +//extern void PHY_SwChnlCallback8192C( IN PRT_TIMER pTimer ); +void PHY_SwChnl8192C( IN PADAPTER pAdapter, + IN u8 channel ); + // Call after initialization +void PHY_SwChnlPhy8192C( IN PADAPTER pAdapter, + IN u8 channel ); + +void ChkFwCmdIoDone( IN PADAPTER Adapter); + +#ifdef USE_WORKITEM +//extern void SetIOWorkItemCallback( IN PVOID pContext ); +#else +//extern void SetIOTimerCallback( IN PRT_TIMER pTimer); +#endif + +// +// BB/MAC/RF other monitor API +// +void PHY_SetMonitorMode8192C(IN PADAPTER pAdapter, + IN BOOLEAN bEnableMonitorMode ); + +BOOLEAN PHY_CheckIsLegalRfPath8192C(IN PADAPTER pAdapter, + IN u32 eRFPath ); + +// +// IQ calibrate +// +VOID rtl8192c_PHY_IQCalibrate( IN PADAPTER pAdapter , IN BOOLEAN bReCovery); + +// +// LC calibrate +// +VOID rtl8192c_PHY_LCCalibrate(IN PADAPTER pAdapter); + +// +// AP calibrate +// +VOID rtl8192c_PHY_APCalibrate(IN PADAPTER pAdapter, IN char delta); + +VOID rtl8192c_PHY_SetRFPathSwitch(IN PADAPTER pAdapter, IN BOOLEAN bMain); + +// +// Modify the value of the hw register when beacon interval be changed. +// +void +rtl8192c_PHY_SetBeaconHwReg( IN PADAPTER Adapter, + IN u16 BeaconInterval ); + + +extern VOID +PHY_SwitchEphyParameter( + IN PADAPTER Adapter + ); + +extern VOID +PHY_EnableHostClkReq( + IN PADAPTER Adapter + ); + +BOOLEAN +SetAntennaConfig92C( + IN PADAPTER Adapter, + IN u8 DefaultAnt + ); + + +/*--------------------------Exported Function prototype---------------------*/ + +#define PHY_QueryBBReg(Adapter, RegAddr, BitMask) rtl8192c_PHY_QueryBBReg((Adapter), (RegAddr), (BitMask)) +#define PHY_SetBBReg(Adapter, RegAddr, BitMask, Data) rtl8192c_PHY_SetBBReg((Adapter), (RegAddr), (BitMask), (Data)) +#define PHY_QueryRFReg(Adapter, eRFPath, RegAddr, BitMask) rtl8192c_PHY_QueryRFReg((Adapter), (eRFPath), (RegAddr), (BitMask)) +#define PHY_SetRFReg(Adapter, eRFPath, RegAddr, BitMask, Data) rtl8192c_PHY_SetRFReg((Adapter), (eRFPath), (RegAddr), (BitMask), (Data)) + +#define PHY_SetMacReg PHY_SetBBReg + +#endif // __INC_HAL8192CPHYCFG_H --- linux-raspi2-4.2.0.orig/drivers/net/wireless/rtl8192cu/include/Hal8192CPhyReg.h +++ linux-raspi2-4.2.0/drivers/net/wireless/rtl8192cu/include/Hal8192CPhyReg.h @@ -0,0 +1,1122 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved. + * + * 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 + * published by the Free Software Foundation. + * + * 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 Street, Fifth Floor, Boston, MA 02110, USA + * + * + ******************************************************************************/ +/***************************************************************************** + * + * Module: __INC_HAL8192CPHYREG_H + * + * + * Note: 1. Define PMAC/BB register map + * 2. Define RF register map + * 3. PMAC/BB register bit mask. + * 4. RF reg bit mask. + * 5. Other BB/RF relative definition. + * + * + * Export: Constants, macro, functions(API), global variables(None). + * + * Abbrev: + * + * History: + * Data Who Remark + * 08/07/2007 MHC 1. Porting from 9x series PHYCFG.h. + * 2. Reorganize code architecture. + * 09/25/2008 MH 1. Add RL6052 register definition + * + *****************************************************************************/ +#ifndef __INC_HAL8192CPHYREG_H +#define __INC_HAL8192CPHYREG_H + + +/*--------------------------Define Parameters-------------------------------*/ + +//============================================================ +// 8192S Regsiter offset definition +//============================================================ + +// +// BB-PHY register PMAC 0x100 PHY 0x800 - 0xEFF +// 1. PMAC duplicate register due to connection: RF_Mode, TRxRN, NumOf L-STF +// 2. 0x800/0x900/0xA00/0xC00/0xD00/0xE00 +// 3. RF register 0x00-2E +// 4. Bit Mask for BB/RF register +// 5. Other defintion for BB/RF R/W +// + + +// +// 1. PMAC duplicate register due to connection: RF_Mode, TRxRN, NumOf L-STF +// 1. Page1(0x100) +// +#define rPMAC_Reset 0x100 +#define rPMAC_TxStart 0x104 +#define rPMAC_TxLegacySIG 0x108 +#define rPMAC_TxHTSIG1 0x10c +#define rPMAC_TxHTSIG2 0x110 +#define rPMAC_PHYDebug 0x114 +#define rPMAC_TxPacketNum 0x118 +#define rPMAC_TxIdle 0x11c +#define rPMAC_TxMACHeader0 0x120 +#define rPMAC_TxMACHeader1 0x124 +#define rPMAC_TxMACHeader2 0x128 +#define rPMAC_TxMACHeader3 0x12c +#define rPMAC_TxMACHeader4 0x130 +#define rPMAC_TxMACHeader5 0x134 +#define rPMAC_TxDataType 0x138 +#define rPMAC_TxRandomSeed 0x13c +#define rPMAC_CCKPLCPPreamble 0x140 +#define rPMAC_CCKPLCPHeader 0x144 +#define rPMAC_CCKCRC16 0x148 +#define rPMAC_OFDMRxCRC32OK 0x170 +#define rPMAC_OFDMRxCRC32Er 0x174 +#define rPMAC_OFDMRxParityEr 0x178 +#define rPMAC_OFDMRxCRC8Er 0x17c +#define rPMAC_CCKCRxRC16Er 0x180 +#define rPMAC_CCKCRxRC32Er 0x184 +#define rPMAC_CCKCRxRC32OK 0x188 +#define rPMAC_TxStatus 0x18c + +// +// 2. Page2(0x200) +// +// The following two definition are only used for USB interface. +#define RF_BB_CMD_ADDR 0x02c0 // RF/BB read/write command address. +#define RF_BB_CMD_DATA 0x02c4 // RF/BB read/write command data. + +// +// 3. Page8(0x800) +// +#define rFPGA0_RFMOD 0x800 //RF mode & CCK TxSC // RF BW Setting?? + +#define rFPGA0_TxInfo 0x804 // Status report?? +#define rFPGA0_PSDFunction 0x808 + +#define rFPGA0_TxGainStage 0x80c // Set TX PWR init gain? + +#define rFPGA0_RFTiming1 0x810 // Useless now +#define rFPGA0_RFTiming2 0x814 + +#define rFPGA0_XA_HSSIParameter1 0x820 // RF 3 wire register +#define rFPGA0_XA_HSSIParameter2 0x824 +#define rFPGA0_XB_HSSIParameter1 0x828 +#define rFPGA0_XB_HSSIParameter2 0x82c +#define rTxAGC_B_Rate18_06 0x830 +#define rTxAGC_B_Rate54_24 0x834 +#define rTxAGC_B_CCK1_55_Mcs32 0x838 +#define rTxAGC_B_Mcs03_Mcs00 0x83c + +#define rTxAGC_B_Mcs07_Mcs04 0x848 +#define rTxAGC_B_Mcs11_Mcs08 0x84c + +#define rFPGA0_XA_LSSIParameter 0x840 +#define rFPGA0_XB_LSSIParameter 0x844 + +#define rFPGA0_RFWakeUpParameter 0x850 // Useless now +#define rFPGA0_RFSleepUpParameter 0x854 + +#define rFPGA0_XAB_SwitchControl 0x858 // RF Channel switch +#define rFPGA0_XCD_SwitchControl 0x85c + +#define rFPGA0_XA_RFInterfaceOE 0x860 // RF Channel switch +#define rFPGA0_XB_RFInterfaceOE 0x864 + +#define rTxAGC_B_Mcs15_Mcs12 0x868 +#define rTxAGC_B_CCK11_A_CCK2_11 0x86c + +#define rFPGA0_XAB_RFInterfaceSW 0x870 // RF Interface Software Control +#define rFPGA0_XCD_RFInterfaceSW 0x874 + +#define rFPGA0_XAB_RFParameter 0x878 // RF Parameter +#define rFPGA0_XCD_RFParameter 0x87c + +#define rFPGA0_AnalogParameter1 0x880 // Crystal cap setting RF-R/W protection for parameter4?? +#define rFPGA0_AnalogParameter2 0x884 +#define rFPGA0_AnalogParameter3 0x888 // Useless now +#define rFPGA0_AnalogParameter4 0x88c + +#define rFPGA0_XA_LSSIReadBack 0x8a0 // Tranceiver LSSI Readback +#define rFPGA0_XB_LSSIReadBack 0x8a4 +#define rFPGA0_XC_LSSIReadBack 0x8a8 +#define rFPGA0_XD_LSSIReadBack 0x8ac + +#define rFPGA0_PSDReport 0x8b4 // Useless now +#define TransceiverA_HSPI_Readback 0x8b8 // Transceiver A HSPI Readback +#define TransceiverB_HSPI_Readback 0x8bc // Transceiver B HSPI Readback +#define rFPGA0_XAB_RFInterfaceRB 0x8e0 // Useless now // RF Interface Readback Value +#define rFPGA0_XCD_RFInterfaceRB 0x8e4 // Useless now + +// +// 4. Page9(0x900) +// +#define rFPGA1_RFMOD 0x900 //RF mode & OFDM TxSC // RF BW Setting?? + +#define rFPGA1_TxBlock 0x904 // Useless now +#define rFPGA1_DebugSelect 0x908 // Useless now +#define rFPGA1_TxInfo 0x90c // Useless now // Status report?? + +// +// 5. PageA(0xA00) +// +// Set Control channel to upper or lower. These settings are required only for 40MHz +#define rCCK0_System 0xa00 + +#define rCCK0_AFESetting 0xa04 // Disable init gain now // Select RX path by RSSI +#define rCCK0_CCA 0xa08 // Disable init gain now // Init gain + +#define rCCK0_RxAGC1 0xa0c //AGC default value, saturation level // Antenna Diversity, RX AGC, LNA Threshold, RX LNA Threshold useless now. Not the same as 90 series +#define rCCK0_RxAGC2 0xa10 //AGC & DAGC + +#define rCCK0_RxHP 0xa14 + +#define rCCK0_DSPParameter1 0xa18 //Timing recovery & Channel estimation threshold +#define rCCK0_DSPParameter2 0xa1c //SQ threshold + +#define rCCK0_TxFilter1 0xa20 +#define rCCK0_TxFilter2 0xa24 +#define rCCK0_DebugPort 0xa28 //debug port and Tx filter3 +#define rCCK0_FalseAlarmReport 0xa2c //0xa2d useless now 0xa30-a4f channel report +#define rCCK0_TRSSIReport 0xa50 +#define rCCK0_RxReport 0xa54 //0xa57 +#define rCCK0_FACounterLower 0xa5c //0xa5b +#define rCCK0_FACounterUpper 0xa58 //0xa5c + +// +// PageB(0xB00) +// +#define rPdp_AntA 0xb00 +#define rPdp_AntA_4 0xb04 +#define rConfig_Pmpd_AntA 0xb28 +#define rConfig_AntA 0xb68 +#define rConfig_AntB 0xb6c +#define rPdp_AntB 0xb70 +#define rPdp_AntB_4 0xb74 +#define rConfig_Pmpd_AntB 0xb98 +#define rAPK 0xbd8 + +// +// 6. PageC(0xC00) +// +#define rOFDM0_LSTF 0xc00 + +#define rOFDM0_TRxPathEnable 0xc04 +#define rOFDM0_TRMuxPar 0xc08 +#define rOFDM0_TRSWIsolation 0xc0c + +#define rOFDM0_XARxAFE 0xc10 //RxIQ DC offset, Rx digital filter, DC notch filter +#define rOFDM0_XARxIQImbalance 0xc14 //RxIQ imblance matrix +#define rOFDM0_XBRxAFE 0xc18 +#define rOFDM0_XBRxIQImbalance 0xc1c +#define rOFDM0_XCRxAFE 0xc20 +#define rOFDM0_XCRxIQImbalance 0xc24 +#define rOFDM0_XDRxAFE 0xc28 +#define rOFDM0_XDRxIQImbalance 0xc2c + +#define rOFDM0_RxDetector1 0xc30 //PD,BW & SBD // DM tune init gain +#define rOFDM0_RxDetector2 0xc34 //SBD & Fame Sync. +#define rOFDM0_RxDetector3 0xc38 //Frame Sync. +#define rOFDM0_RxDetector4 0xc3c //PD, SBD, Frame Sync & Short-GI + +#define rOFDM0_RxDSP 0xc40 //Rx Sync Path +#define rOFDM0_CFOandDAGC 0xc44 //CFO & DAGC +#define rOFDM0_CCADropThreshold 0xc48 //CCA Drop threshold +#define rOFDM0_ECCAThreshold 0xc4c // energy CCA + +#define rOFDM0_XAAGCCore1 0xc50 // DIG +#define rOFDM0_XAAGCCore2 0xc54 +#define rOFDM0_XBAGCCore1 0xc58 +#define rOFDM0_XBAGCCore2 0xc5c +#define rOFDM0_XCAGCCore1 0xc60 +#define rOFDM0_XCAGCCore2 0xc64 +#define rOFDM0_XDAGCCore1 0xc68 +#define rOFDM0_XDAGCCore2 0xc6c + +#define rOFDM0_AGCParameter1 0xc70 +#define rOFDM0_AGCParameter2 0xc74 +#define rOFDM0_AGCRSSITable 0xc78 +#define rOFDM0_HTSTFAGC 0xc7c + +#define rOFDM0_XATxIQImbalance 0xc80 // TX PWR TRACK and DIG +#define rOFDM0_XATxAFE 0xc84 +#define rOFDM0_XBTxIQImbalance 0xc88 +#define rOFDM0_XBTxAFE 0xc8c +#define rOFDM0_XCTxIQImbalance 0xc90 +#define rOFDM0_XCTxAFE 0xc94 +#define rOFDM0_XDTxIQImbalance 0xc98 +#define rOFDM0_XDTxAFE 0xc9c + +#define rOFDM0_RxIQExtAnta 0xca0 +#define rOFDM0_TxCoeff1 0xca4 +#define rOFDM0_TxCoeff2 0xca8 +#define rOFDM0_TxCoeff3 0xcac +#define rOFDM0_TxCoeff4 0xcb0 +#define rOFDM0_TxCoeff5 0xcb4 +#define rOFDM0_TxCoeff6 0xcb8 +#define rOFDM0_RxHPParameter 0xce0 +#define rOFDM0_TxPseudoNoiseWgt 0xce4 +#define rOFDM0_FrameSync 0xcf0 +#define rOFDM0_DFSReport 0xcf4 + +// +// 7. PageD(0xD00) +// +#define rOFDM1_LSTF 0xd00 +#define rOFDM1_TRxPathEnable 0xd04 + +#define rOFDM1_CFO 0xd08 // No setting now +#define rOFDM1_CSI1 0xd10 +#define rOFDM1_SBD 0xd14 +#define rOFDM1_CSI2 0xd18 +#define rOFDM1_CFOTracking 0xd2c +#define rOFDM1_TRxMesaure1 0xd34 +#define rOFDM1_IntfDet 0xd3c +#define rOFDM1_PseudoNoiseStateAB 0xd50 +#define rOFDM1_PseudoNoiseStateCD 0xd54 +#define rOFDM1_RxPseudoNoiseWgt 0xd58 + +#define rOFDM_PHYCounter1 0xda0 //cca, parity fail +#define rOFDM_PHYCounter2 0xda4 //rate illegal, crc8 fail +#define rOFDM_PHYCounter3 0xda8 //MCS not support + +#define rOFDM_ShortCFOAB 0xdac // No setting now +#define rOFDM_ShortCFOCD 0xdb0 +#define rOFDM_LongCFOAB 0xdb4 +#define rOFDM_LongCFOCD 0xdb8 +#define rOFDM_TailCFOAB 0xdbc +#define rOFDM_TailCFOCD 0xdc0 +#define rOFDM_PWMeasure1 0xdc4 +#define rOFDM_PWMeasure2 0xdc8 +#define rOFDM_BWReport 0xdcc +#define rOFDM_AGCReport 0xdd0 +#define rOFDM_RxSNR 0xdd4 +#define rOFDM_RxEVMCSI 0xdd8 +#define rOFDM_SIGReport 0xddc + + +// +// 8. PageE(0xE00) +// +#define rTxAGC_A_Rate18_06 0xe00 +#define rTxAGC_A_Rate54_24 0xe04 +#define rTxAGC_A_CCK1_Mcs32 0xe08 +#define rTxAGC_A_Mcs03_Mcs00 0xe10 +#define rTxAGC_A_Mcs07_Mcs04 0xe14 +#define rTxAGC_A_Mcs11_Mcs08 0xe18 +#define rTxAGC_A_Mcs15_Mcs12 0xe1c + +#define rFPGA0_IQK 0xe28 +#define rTx_IQK_Tone_A 0xe30 +#define rRx_IQK_Tone_A 0xe34 +#define rTx_IQK_PI_A 0xe38 +#define rRx_IQK_PI_A 0xe3c + +#define rTx_IQK 0xe40 +#define rRx_IQK 0xe44 +#define rIQK_AGC_Pts 0xe48 +#define rIQK_AGC_Rsp 0xe4c +#define rTx_IQK_Tone_B 0xe50 +#define rRx_IQK_Tone_B 0xe54 +#define rTx_IQK_PI_B 0xe58 +#define rRx_IQK_PI_B 0xe5c +#define rIQK_AGC_Cont 0xe60 + +#define rBlue_Tooth 0xe6c +#define rRx_Wait_CCA 0xe70 +#define rTx_CCK_RFON 0xe74 +#define rTx_CCK_BBON 0xe78 +#define rTx_OFDM_RFON 0xe7c +#define rTx_OFDM_BBON 0xe80 +#define rTx_To_Rx 0xe84 +#define rTx_To_Tx 0xe88 +#define rRx_CCK 0xe8c + +#define rTx_Power_Before_IQK_A 0xe94 +#define rTx_Power_After_IQK_A 0xe9c + +#define rRx_Power_Before_IQK_A 0xea0 +#define rRx_Power_Before_IQK_A_2 0xea4 +#define rRx_Power_After_IQK_A 0xea8 +#define rRx_Power_After_IQK_A_2 0xeac + +#define rTx_Power_Before_IQK_B 0xeb4 +#define rTx_Power_After_IQK_B 0xebc + +#define rRx_Power_Before_IQK_B 0xec0 +#define rRx_Power_Before_IQK_B_2 0xec4 +#define rRx_Power_After_IQK_B 0xec8 +#define rRx_Power_After_IQK_B_2 0xecc + +#define rRx_OFDM 0xed0 +#define rRx_Wait_RIFS 0xed4 +#define rRx_TO_Rx 0xed8 +#define rStandby 0xedc +#define rSleep 0xee0 +#define rPMPD_ANAEN 0xeec + +// +// 7. RF Register 0x00-0x2E (RF 8256) +// RF-0222D 0x00-3F +// +//Zebra1 +#define rZebra1_HSSIEnable 0x0 // Useless now +#define rZebra1_TRxEnable1 0x1 +#define rZebra1_TRxEnable2 0x2 +#define rZebra1_AGC 0x4 +#define rZebra1_ChargePump 0x5 +#define rZebra1_Channel 0x7 // RF channel switch + +//#endif +#define rZebra1_TxGain 0x8 // Useless now +#define rZebra1_TxLPF 0x9 +#define rZebra1_RxLPF 0xb +#define rZebra1_RxHPFCorner 0xc + +//Zebra4 +#define rGlobalCtrl 0 // Useless now +#define rRTL8256_TxLPF 19 +#define rRTL8256_RxLPF 11 + +//RTL8258 +#define rRTL8258_TxLPF 0x11 // Useless now +#define rRTL8258_RxLPF 0x13 +#define rRTL8258_RSSILPF 0xa + +// +// RL6052 Register definition +// +#define RF_AC 0x00 // + +#define RF_IQADJ_G1 0x01 // +#define RF_IQADJ_G2 0x02 // +#define RF_BS_PA_APSET_G1_G4 0x03 +#define RF_BS_PA_APSET_G5_G8 0x04 +#define RF_POW_TRSW 0x05 // + +#define RF_GAIN_RX 0x06 // +#define RF_GAIN_TX 0x07 // + +#define RF_TXM_IDAC 0x08 // +#define RF_IPA_G 0x09 // +#define RF_TXBIAS_G 0x0A +#define RF_TXPA_AG 0x0B +#define RF_IPA_A 0x0C // +#define RF_TXBIAS_A 0x0D +#define RF_BS_PA_APSET_G9_G11 0x0E +#define RF_BS_IQGEN 0x0F // + +#define RF_MODE1 0x10 // +#define RF_MODE2 0x11 // + +#define RF_RX_AGC_HP 0x12 // +#define RF_TX_AGC 0x13 // +#define RF_BIAS 0x14 // +#define RF_IPA 0x15 // +#define RF_POW_ABILITY 0x17 // +#define RF_MODE_AG 0x18 // +#define rRfChannel 0x18 // RF channel and BW switch +#define RF_CHNLBW 0x18 // RF channel and BW switch +#define RF_TOP 0x19 // + +#define RF_RX_G1 0x1A // +#define RF_RX_G2 0x1B // + +#define RF_RX_BB2 0x1C // +#define RF_RX_BB1 0x1D // + +#define RF_RCK1 0x1E // +#define RF_RCK2 0x1F // + +#define RF_TX_G1 0x20 // +#define RF_TX_G2 0x21 // +#define RF_TX_G3 0x22 // + +#define RF_TX_BB1 0x23 // + +#define RF_T_METER 0x24 // + +#define RF_SYN_G1 0x25 // RF TX Power control +#define RF_SYN_G2 0x26 // RF TX Power control +#define RF_SYN_G3 0x27 // RF TX Power control +#define RF_SYN_G4 0x28 // RF TX Power control +#define RF_SYN_G5 0x29 // RF TX Power control +#define RF_SYN_G6 0x2A // RF TX Power control +#define RF_SYN_G7 0x2B // RF TX Power control +#define RF_SYN_G8 0x2C // RF TX Power control + +#define RF_RCK_OS 0x30 // RF TX PA control + +#define RF_TXPA_G1 0x31 // RF TX PA control +#define RF_TXPA_G2 0x32 // RF TX PA control +#define RF_TXPA_G3 0x33 // RF TX PA control + +// +//Bit Mask +// +// 1. Page1(0x100) +#define bBBResetB 0x100 // Useless now? +#define bGlobalResetB 0x200 +#define bOFDMTxStart 0x4 +#define bCCKTxStart 0x8 +#define bCRC32Debug 0x100 +#define bPMACLoopback 0x10 +#define bTxLSIG 0xffffff +#define bOFDMTxRate 0xf +#define bOFDMTxReserved 0x10 +#define bOFDMTxLength 0x1ffe0 +#define bOFDMTxParity 0x20000 +#define bTxHTSIG1 0xffffff +#define bTxHTMCSRate 0x7f +#define bTxHTBW 0x80 +#define bTxHTLength 0xffff00 +#define bTxHTSIG2 0xffffff +#define bTxHTSmoothing 0x1 +#define bTxHTSounding 0x2 +#define bTxHTReserved 0x4 +#define bTxHTAggreation 0x8 +#define bTxHTSTBC 0x30 +#define bTxHTAdvanceCoding 0x40 +#define bTxHTShortGI 0x80 +#define bTxHTNumberHT_LTF 0x300 +#define bTxHTCRC8 0x3fc00 +#define bCounterReset 0x10000 +#define bNumOfOFDMTx 0xffff +#define bNumOfCCKTx 0xffff0000 +#define bTxIdleInterval 0xffff +#define bOFDMService 0xffff0000 +#define bTxMACHeader 0xffffffff +#define bTxDataInit 0xff +#define bTxHTMode 0x100 +#define bTxDataType 0x30000 +#define bTxRandomSeed 0xffffffff +#define bCCKTxPreamble 0x1 +#define bCCKTxSFD 0xffff0000 +#define bCCKTxSIG 0xff +#define bCCKTxService 0xff00 +#define bCCKLengthExt 0x8000 +#define bCCKTxLength 0xffff0000 +#define bCCKTxCRC16 0xffff +#define bCCKTxStatus 0x1 +#define bOFDMTxStatus 0x2 + +#define IS_BB_REG_OFFSET_92S(_Offset) ((_Offset >= 0x800) && (_Offset <= 0xfff)) + +// 2. Page8(0x800) +#define bRFMOD 0x1 // Reg 0x800 rFPGA0_RFMOD +#define bJapanMode 0x2 +#define bCCKTxSC 0x30 +#define bCCKEn 0x1000000 +#define bOFDMEn 0x2000000 + +#define bOFDMRxADCPhase 0x10000 // Useless now +#define bOFDMTxDACPhase 0x40000 +#define bXATxAGC 0x3f + +#define bAntennaSelect 0x0300 + +#define bXBTxAGC 0xf00 // Reg 80c rFPGA0_TxGainStage +#define bXCTxAGC 0xf000 +#define bXDTxAGC 0xf0000 + +#define bPAStart 0xf0000000 // Useless now +#define bTRStart 0x00f00000 +#define bRFStart 0x0000f000 +#define bBBStart 0x000000f0 +#define bBBCCKStart 0x0000000f +#define bPAEnd 0xf //Reg0x814 +#define bTREnd 0x0f000000 +#define bRFEnd 0x000f0000 +#define bCCAMask 0x000000f0 //T2R +#define bR2RCCAMask 0x00000f00 +#define bHSSI_R2TDelay 0xf8000000 +#define bHSSI_T2RDelay 0xf80000 +#define bContTxHSSI 0x400 //chane gain at continue Tx +#define bIGFromCCK 0x200 +#define bAGCAddress 0x3f +#define bRxHPTx 0x7000 +#define bRxHPT2R 0x38000 +#define bRxHPCCKIni 0xc0000 +#define bAGCTxCode 0xc00000 +#define bAGCRxCode 0x300000 + +#define b3WireDataLength 0x800 // Reg 0x820~84f rFPGA0_XA_HSSIParameter1 +#define b3WireAddressLength 0x400 + +#define b3WireRFPowerDown 0x1 // Useless now +//#define bHWSISelect 0x8 +#define b5GPAPEPolarity 0x40000000 +#define b2GPAPEPolarity 0x80000000 +#define bRFSW_TxDefaultAnt 0x3 +#define bRFSW_TxOptionAnt 0x30 +#define bRFSW_RxDefaultAnt 0x300 +#define bRFSW_RxOptionAnt 0x3000 +#define bRFSI_3WireData 0x1 +#define bRFSI_3WireClock 0x2 +#define bRFSI_3WireLoad 0x4 +#define bRFSI_3WireRW 0x8 +#define bRFSI_3Wire 0xf + +#define bRFSI_RFENV 0x10 // Reg 0x870 rFPGA0_XAB_RFInterfaceSW + +#define bRFSI_TRSW 0x20 // Useless now +#define bRFSI_TRSWB 0x40 +#define bRFSI_ANTSW 0x100 +#define bRFSI_ANTSWB 0x200 +#define bRFSI_PAPE 0x400 +#define bRFSI_PAPE5G 0x800 +#define bBandSelect 0x1 +#define bHTSIG2_GI 0x80 +#define bHTSIG2_Smoothing 0x01 +#define bHTSIG2_Sounding 0x02 +#define bHTSIG2_Aggreaton 0x08 +#define bHTSIG2_STBC 0x30 +#define bHTSIG2_AdvCoding 0x40 +#define bHTSIG2_NumOfHTLTF 0x300 +#define bHTSIG2_CRC8 0x3fc +#define bHTSIG1_MCS 0x7f +#define bHTSIG1_BandWidth 0x80 +#define bHTSIG1_HTLength 0xffff +#define bLSIG_Rate 0xf +#define bLSIG_Reserved 0x10 +#define bLSIG_Length 0x1fffe +#define bLSIG_Parity 0x20 +#define bCCKRxPhase 0x4 + +#define bLSSIReadAddress 0x7f800000 // T65 RF + +#define bLSSIReadEdge 0x80000000 //LSSI "Read" edge signal + +#define bLSSIReadBackData 0xfffff // T65 RF + +#define bLSSIReadOKFlag 0x1000 // Useless now +#define bCCKSampleRate 0x8 //0: 44MHz, 1:88MHz +#define bRegulator0Standby 0x1 +#define bRegulatorPLLStandby 0x2 +#define bRegulator1Standby 0x4 +#define bPLLPowerUp 0x8 +#define bDPLLPowerUp 0x10 +#define bDA10PowerUp 0x20 +#define bAD7PowerUp 0x200 +#define bDA6PowerUp 0x2000 +#define bXtalPowerUp 0x4000 +#define b40MDClkPowerUP 0x8000 +#define bDA6DebugMode 0x20000 +#define bDA6Swing 0x380000 + +#define bADClkPhase 0x4000000 // Reg 0x880 rFPGA0_AnalogParameter1 20/40 CCK support switch 40/80 BB MHZ + +#define b80MClkDelay 0x18000000 // Useless +#define bAFEWatchDogEnable 0x20000000 + +#define bXtalCap01 0xc0000000 // Reg 0x884 rFPGA0_AnalogParameter2 Crystal cap +#define bXtalCap23 0x3 +#define bXtalCap92x 0x0f000000 +#define bXtalCap 0x0f000000 + +#define bIntDifClkEnable 0x400 // Useless +#define bExtSigClkEnable 0x800 +#define bBandgapMbiasPowerUp 0x10000 +#define bAD11SHGain 0xc0000 +#define bAD11InputRange 0x700000 +#define bAD11OPCurrent 0x3800000 +#define bIPathLoopback 0x4000000 +#define bQPathLoopback 0x8000000 +#define bAFELoopback 0x10000000 +#define bDA10Swing 0x7e0 +#define bDA10Reverse 0x800 +#define bDAClkSource 0x1000 +#define bAD7InputRange 0x6000 +#define bAD7Gain 0x38000 +#define bAD7OutputCMMode 0x40000 +#define bAD7InputCMMode 0x380000 +#define bAD7Current 0xc00000 +#define bRegulatorAdjust 0x7000000 +#define bAD11PowerUpAtTx 0x1 +#define bDA10PSAtTx 0x10 +#define bAD11PowerUpAtRx 0x100 +#define bDA10PSAtRx 0x1000 +#define bCCKRxAGCFormat 0x200 +#define bPSDFFTSamplepPoint 0xc000 +#define bPSDAverageNum 0x3000 +#define bIQPathControl 0xc00 +#define bPSDFreq 0x3ff +#define bPSDAntennaPath 0x30 +#define bPSDIQSwitch 0x40 +#define bPSDRxTrigger 0x400000 +#define bPSDTxTrigger 0x80000000 +#define bPSDSineToneScale 0x7f000000 +#define bPSDReport 0xffff + +// 3. Page9(0x900) +#define bOFDMTxSC 0x30000000 // Useless +#define bCCKTxOn 0x1 +#define bOFDMTxOn 0x2 +#define bDebugPage 0xfff //reset debug page and also HWord, LWord +#define bDebugItem 0xff //reset debug page and LWord +#define bAntL 0x10 +#define bAntNonHT 0x100 +#define bAntHT1 0x1000 +#define bAntHT2 0x10000 +#define bAntHT1S1 0x100000 +#define bAntNonHTS1 0x1000000 + +// 4. PageA(0xA00) +#define bCCKBBMode 0x3 // Useless +#define bCCKTxPowerSaving 0x80 +#define bCCKRxPowerSaving 0x40 + +#define bCCKSideBand 0x10 // Reg 0xa00 rCCK0_System 20/40 switch + +#define bCCKScramble 0x8 // Useless +#define bCCKAntDiversity 0x8000 +#define bCCKCarrierRecovery 0x4000 +#define bCCKTxRate 0x3000 +#define bCCKDCCancel 0x0800 +#define bCCKISICancel 0x0400 +#define bCCKMatchFilter 0x0200 +#define bCCKEqualizer 0x0100 +#define bCCKPreambleDetect 0x800000 +#define bCCKFastFalseCCA 0x400000 +#define bCCKChEstStart 0x300000 +#define bCCKCCACount 0x080000 +#define bCCKcs_lim 0x070000 +#define bCCKBistMode 0x80000000 +#define bCCKCCAMask 0x40000000 +#define bCCKTxDACPhase 0x4 +#define bCCKRxADCPhase 0x20000000 //r_rx_clk +#define bCCKr_cp_mode0 0x0100 +#define bCCKTxDCOffset 0xf0 +#define bCCKRxDCOffset 0xf +#define bCCKCCAMode 0xc000 +#define bCCKFalseCS_lim 0x3f00 +#define bCCKCS_ratio 0xc00000 +#define bCCKCorgBit_sel 0x300000 +#define bCCKPD_lim 0x0f0000 +#define bCCKNewCCA 0x80000000 +#define bCCKRxHPofIG 0x8000 +#define bCCKRxIG 0x7f00 +#define bCCKLNAPolarity 0x800000 +#define bCCKRx1stGain 0x7f0000 +#define bCCKRFExtend 0x20000000 //CCK Rx Iinital gain polarity +#define bCCKRxAGCSatLevel 0x1f000000 +#define bCCKRxAGCSatCount 0xe0 +#define bCCKRxRFSettle 0x1f //AGCsamp_dly +#define bCCKFixedRxAGC 0x8000 +//#define bCCKRxAGCFormat 0x4000 //remove to HSSI register 0x824 +#define bCCKAntennaPolarity 0x2000 +#define bCCKTxFilterType 0x0c00 +#define bCCKRxAGCReportType 0x0300 +#define bCCKRxDAGCEn 0x80000000 +#define bCCKRxDAGCPeriod 0x20000000 +#define bCCKRxDAGCSatLevel 0x1f000000 +#define bCCKTimingRecovery 0x800000 +#define bCCKTxC0 0x3f0000 +#define bCCKTxC1 0x3f000000 +#define bCCKTxC2 0x3f +#define bCCKTxC3 0x3f00 +#define bCCKTxC4 0x3f0000 +#define bCCKTxC5 0x3f000000 +#define bCCKTxC6 0x3f +#define bCCKTxC7 0x3f00 +#define bCCKDebugPort 0xff0000 +#define bCCKDACDebug 0x0f000000 +#define bCCKFalseAlarmEnable 0x8000 +#define bCCKFalseAlarmRead 0x4000 +#define bCCKTRSSI 0x7f +#define bCCKRxAGCReport 0xfe +#define bCCKRxReport_AntSel 0x80000000 +#define bCCKRxReport_MFOff 0x40000000 +#define bCCKRxRxReport_SQLoss 0x20000000 +#define bCCKRxReport_Pktloss 0x10000000 +#define bCCKRxReport_Lockedbit 0x08000000 +#define bCCKRxReport_RateError 0x04000000 +#define bCCKRxReport_RxRate 0x03000000 +#define bCCKRxFACounterLower 0xff +#define bCCKRxFACounterUpper 0xff000000 +#define bCCKRxHPAGCStart 0xe000 +#define bCCKRxHPAGCFinal 0x1c00 +#define bCCKRxFalseAlarmEnable 0x8000 +#define bCCKFACounterFreeze 0x4000 +#define bCCKTxPathSel 0x10000000 +#define bCCKDefaultRxPath 0xc000000 +#define bCCKOptionRxPath 0x3000000 + +// 5. PageC(0xC00) +#define bNumOfSTF 0x3 // Useless +#define bShift_L 0xc0 +#define bGI_TH 0xc +#define bRxPathA 0x1 +#define bRxPathB 0x2 +#define bRxPathC 0x4 +#define bRxPathD 0x8 +#define bTxPathA 0x1 +#define bTxPathB 0x2 +#define bTxPathC 0x4 +#define bTxPathD 0x8 +#define bTRSSIFreq 0x200 +#define bADCBackoff 0x3000 +#define bDFIRBackoff 0xc000 +#define bTRSSILatchPhase 0x10000 +#define bRxIDCOffset 0xff +#define bRxQDCOffset 0xff00 +#define bRxDFIRMode 0x1800000 +#define bRxDCNFType 0xe000000 +#define bRXIQImb_A 0x3ff +#define bRXIQImb_B 0xfc00 +#define bRXIQImb_C 0x3f0000 +#define bRXIQImb_D 0xffc00000 +#define bDC_dc_Notch 0x60000 +#define bRxNBINotch 0x1f000000 +#define bPD_TH 0xf +#define bPD_TH_Opt2 0xc000 +#define bPWED_TH 0x700 +#define bIfMF_Win_L 0x800 +#define bPD_Option 0x1000 +#define bMF_Win_L 0xe000 +#define bBW_Search_L 0x30000 +#define bwin_enh_L 0xc0000 +#define bBW_TH 0x700000 +#define bED_TH2 0x3800000 +#define bBW_option 0x4000000 +#define bRatio_TH 0x18000000 +#define bWindow_L 0xe0000000 +#define bSBD_Option 0x1 +#define bFrame_TH 0x1c +#define bFS_Option 0x60 +#define bDC_Slope_check 0x80 +#define bFGuard_Counter_DC_L 0xe00 +#define bFrame_Weight_Short 0x7000 +#define bSub_Tune 0xe00000 +#define bFrame_DC_Length 0xe000000 +#define bSBD_start_offset 0x30000000 +#define bFrame_TH_2 0x7 +#define bFrame_GI2_TH 0x38 +#define bGI2_Sync_en 0x40 +#define bSarch_Short_Early 0x300 +#define bSarch_Short_Late 0xc00 +#define bSarch_GI2_Late 0x70000 +#define bCFOAntSum 0x1 +#define bCFOAcc 0x2 +#define bCFOStartOffset 0xc +#define bCFOLookBack 0x70 +#define bCFOSumWeight 0x80 +#define bDAGCEnable 0x10000 +#define bTXIQImb_A 0x3ff +#define bTXIQImb_B 0xfc00 +#define bTXIQImb_C 0x3f0000 +#define bTXIQImb_D 0xffc00000 +#define bTxIDCOffset 0xff +#define bTxQDCOffset 0xff00 +#define bTxDFIRMode 0x10000 +#define bTxPesudoNoiseOn 0x4000000 +#define bTxPesudoNoise_A 0xff +#define bTxPesudoNoise_B 0xff00 +#define bTxPesudoNoise_C 0xff0000 +#define bTxPesudoNoise_D 0xff000000 +#define bCCADropOption 0x20000 +#define bCCADropThres 0xfff00000 +#define bEDCCA_H 0xf +#define bEDCCA_L 0xf0 +#define bLambda_ED 0x300 +#define bRxInitialGain 0x7f +#define bRxAntDivEn 0x80 +#define bRxAGCAddressForLNA 0x7f00 +#define bRxHighPowerFlow 0x8000 +#define bRxAGCFreezeThres 0xc0000 +#define bRxFreezeStep_AGC1 0x300000 +#define bRxFreezeStep_AGC2 0xc00000 +#define bRxFreezeStep_AGC3 0x3000000 +#define bRxFreezeStep_AGC0 0xc000000 +#define bRxRssi_Cmp_En 0x10000000 +#define bRxQuickAGCEn 0x20000000 +#define bRxAGCFreezeThresMode 0x40000000 +#define bRxOverFlowCheckType 0x80000000 +#define bRxAGCShift 0x7f +#define bTRSW_Tri_Only 0x80 +#define bPowerThres 0x300 +#define bRxAGCEn 0x1 +#define bRxAGCTogetherEn 0x2 +#define bRxAGCMin 0x4 +#define bRxHP_Ini 0x7 +#define bRxHP_TRLNA 0x70 +#define bRxHP_RSSI 0x700 +#define bRxHP_BBP1 0x7000 +#define bRxHP_BBP2 0x70000 +#define bRxHP_BBP3 0x700000 +#define bRSSI_H 0x7f0000 //the threshold for high power +#define bRSSI_Gen 0x7f000000 //the threshold for ant diversity +#define bRxSettle_TRSW 0x7 +#define bRxSettle_LNA 0x38 +#define bRxSettle_RSSI 0x1c0 +#define bRxSettle_BBP 0xe00 +#define bRxSettle_RxHP 0x7000 +#define bRxSettle_AntSW_RSSI 0x38000 +#define bRxSettle_AntSW 0xc0000 +#define bRxProcessTime_DAGC 0x300000 +#define bRxSettle_HSSI 0x400000 +#define bRxProcessTime_BBPPW 0x800000 +#define bRxAntennaPowerShift 0x3000000 +#define bRSSITableSelect 0xc000000 +#define bRxHP_Final 0x7000000 +#define bRxHTSettle_BBP 0x7 +#define bRxHTSettle_HSSI 0x8 +#define bRxHTSettle_RxHP 0x70 +#define bRxHTSettle_BBPPW 0x80 +#define bRxHTSettle_Idle 0x300 +#define bRxHTSettle_Reserved 0x1c00 +#define bRxHTRxHPEn 0x8000 +#define bRxHTAGCFreezeThres 0x30000 +#define bRxHTAGCTogetherEn 0x40000 +#define bRxHTAGCMin 0x80000 +#define bRxHTAGCEn 0x100000 +#define bRxHTDAGCEn 0x200000 +#define bRxHTRxHP_BBP 0x1c00000 +#define bRxHTRxHP_Final 0xe0000000 +#define bRxPWRatioTH 0x3 +#define bRxPWRatioEn 0x4 +#define bRxMFHold 0x3800 +#define bRxPD_Delay_TH1 0x38 +#define bRxPD_Delay_TH2 0x1c0 +#define bRxPD_DC_COUNT_MAX 0x600 +//#define bRxMF_Hold 0x3800 +#define bRxPD_Delay_TH 0x8000 +#define bRxProcess_Delay 0xf0000 +#define bRxSearchrange_GI2_Early 0x700000 +#define bRxFrame_Guard_Counter_L 0x3800000 +#define bRxSGI_Guard_L 0xc000000 +#define bRxSGI_Search_L 0x30000000 +#define bRxSGI_TH 0xc0000000 +#define bDFSCnt0 0xff +#define bDFSCnt1 0xff00 +#define bDFSFlag 0xf0000 +#define bMFWeightSum 0x300000 +#define bMinIdxTH 0x7f000000 +#define bDAFormat 0x40000 +#define bTxChEmuEnable 0x01000000 +#define bTRSWIsolation_A 0x7f +#define bTRSWIsolation_B 0x7f00 +#define bTRSWIsolation_C 0x7f0000 +#define bTRSWIsolation_D 0x7f000000 +#define bExtLNAGain 0x7c00 + +// 6. PageE(0xE00) +#define bSTBCEn 0x4 // Useless +#define bAntennaMapping 0x10 +#define bNss 0x20 +#define bCFOAntSumD 0x200 +#define bPHYCounterReset 0x8000000 +#define bCFOReportGet 0x4000000 +#define bOFDMContinueTx 0x10000000 +#define bOFDMSingleCarrier 0x20000000 +#define bOFDMSingleTone 0x40000000 +//#define bRxPath1 0x01 +//#define bRxPath2 0x02 +//#define bRxPath3 0x04 +//#define bRxPath4 0x08 +//#define bTxPath1 0x10 +//#define bTxPath2 0x20 +#define bHTDetect 0x100 +#define bCFOEn 0x10000 +#define bCFOValue 0xfff00000 +#define bSigTone_Re 0x3f +#define bSigTone_Im 0x7f00 +#define bCounter_CCA 0xffff +#define bCounter_ParityFail 0xffff0000 +#define bCounter_RateIllegal 0xffff +#define bCounter_CRC8Fail 0xffff0000 +#define bCounter_MCSNoSupport 0xffff +#define bCounter_FastSync 0xffff +#define bShortCFO 0xfff +#define bShortCFOTLength 12 //total +#define bShortCFOFLength 11 //fraction +#define bLongCFO 0x7ff +#define bLongCFOTLength 11 +#define bLongCFOFLength 11 +#define bTailCFO 0x1fff +#define bTailCFOTLength 13 +#define bTailCFOFLength 12 +#define bmax_en_pwdB 0xffff +#define bCC_power_dB 0xffff0000 +#define bnoise_pwdB 0xffff +#define bPowerMeasTLength 10 +#define bPowerMeasFLength 3 +#define bRx_HT_BW 0x1 +#define bRxSC 0x6 +#define bRx_HT 0x8 +#define bNB_intf_det_on 0x1 +#define bIntf_win_len_cfg 0x30 +#define bNB_Intf_TH_cfg 0x1c0 +#define bRFGain 0x3f +#define bTableSel 0x40 +#define bTRSW 0x80 +#define bRxSNR_A 0xff +#define bRxSNR_B 0xff00 +#define bRxSNR_C 0xff0000 +#define bRxSNR_D 0xff000000 +#define bSNREVMTLength 8 +#define bSNREVMFLength 1 +#define bCSI1st 0xff +#define bCSI2nd 0xff00 +#define bRxEVM1st 0xff0000 +#define bRxEVM2nd 0xff000000 +#define bSIGEVM 0xff +#define bPWDB 0xff00 +#define bSGIEN 0x10000 + +#define bSFactorQAM1 0xf // Useless +#define bSFactorQAM2 0xf0 +#define bSFactorQAM3 0xf00 +#define bSFactorQAM4 0xf000 +#define bSFactorQAM5 0xf0000 +#define bSFactorQAM6 0xf0000 +#define bSFactorQAM7 0xf00000 +#define bSFactorQAM8 0xf000000 +#define bSFactorQAM9 0xf0000000 +#define bCSIScheme 0x100000 + +#define bNoiseLvlTopSet 0x3 // Useless +#define bChSmooth 0x4 +#define bChSmoothCfg1 0x38 +#define bChSmoothCfg2 0x1c0 +#define bChSmoothCfg3 0xe00 +#define bChSmoothCfg4 0x7000 +#define bMRCMode 0x800000 +#define bTHEVMCfg 0x7000000 + +#define bLoopFitType 0x1 // Useless +#define bUpdCFO 0x40 +#define bUpdCFOOffData 0x80 +#define bAdvUpdCFO 0x100 +#define bAdvTimeCtrl 0x800 +#define bUpdClko 0x1000 +#define bFC 0x6000 +#define bTrackingMode 0x8000 +#define bPhCmpEnable 0x10000 +#define bUpdClkoLTF 0x20000 +#define bComChCFO 0x40000 +#define bCSIEstiMode 0x80000 +#define bAdvUpdEqz 0x100000 +#define bUChCfg 0x7000000 +#define bUpdEqz 0x8000000 + +//Rx Pseduo noise +#define bRxPesudoNoiseOn 0x20000000 // Useless +#define bRxPesudoNoise_A 0xff +#define bRxPesudoNoise_B 0xff00 +#define bRxPesudoNoise_C 0xff0000 +#define bRxPesudoNoise_D 0xff000000 +#define bPesudoNoiseState_A 0xffff +#define bPesudoNoiseState_B 0xffff0000 +#define bPesudoNoiseState_C 0xffff +#define bPesudoNoiseState_D 0xffff0000 + +//7. RF Register +//Zebra1 +#define bZebra1_HSSIEnable 0x8 // Useless +#define bZebra1_TRxControl 0xc00 +#define bZebra1_TRxGainSetting 0x07f +#define bZebra1_RxCorner 0xc00 +#define bZebra1_TxChargePump 0x38 +#define bZebra1_RxChargePump 0x7 +#define bZebra1_ChannelNum 0xf80 +#define bZebra1_TxLPFBW 0x400 +#define bZebra1_RxLPFBW 0x600 + +//Zebra4 +#define bRTL8256RegModeCtrl1 0x100 // Useless +#define bRTL8256RegModeCtrl0 0x40 +#define bRTL8256_TxLPFBW 0x18 +#define bRTL8256_RxLPFBW 0x600 + +//RTL8258 +#define bRTL8258_TxLPFBW 0xc // Useless +#define bRTL8258_RxLPFBW 0xc00 +#define bRTL8258_RSSILPFBW 0xc0 + + +// +// Other Definition +// + +//byte endable for sb_write +#define bByte0 0x1 // Useless +#define bByte1 0x2 +#define bByte2 0x4 +#define bByte3 0x8 +#define bWord0 0x3 +#define bWord1 0xc +#define bDWord 0xf + +//for PutRegsetting & GetRegSetting BitMask +#define bMaskByte0 0xff // Reg 0xc50 rOFDM0_XAAGCCore~0xC6f +#define bMaskByte1 0xff00 +#define bMaskByte2 0xff0000 +#define bMaskByte3 0xff000000 +#define bMaskHWord 0xffff0000 +#define bMaskLWord 0x0000ffff +#define bMaskDWord 0xffffffff +#define bMask12Bits 0xfff +#define bMaskH4Bits 0xf0000000 +#define bMaskOFDM_D 0xffc00000 +#define bMaskCCK 0x3f3f3f3f + +//for PutRFRegsetting & GetRFRegSetting BitMask +//#define bMask12Bits 0xfffff // RF Reg mask bits +//#define bMask20Bits 0xfffff // RF Reg mask bits T65 RF +#define bRFRegOffsetMask 0xfffff + +#define bEnable 0x1 // Useless +#define bDisable 0x0 + +#define LeftAntenna 0x0 // Useless +#define RightAntenna 0x1 + +#define tCheckTxStatus 500 //500ms // Useless +#define tUpdateRxCounter 100 //100ms + +#define rateCCK 0 // Useless +#define rateOFDM 1 +#define rateHT 2 + +//define Register-End +#define bPMAC_End 0x1ff // Useless +#define bFPGAPHY0_End 0x8ff +#define bFPGAPHY1_End 0x9ff +#define bCCKPHY0_End 0xaff +#define bOFDMPHY0_End 0xcff +#define bOFDMPHY1_End 0xdff + +//define max debug item in each debug page +//#define bMaxItem_FPGA_PHY0 0x9 +//#define bMaxItem_FPGA_PHY1 0x3 +//#define bMaxItem_PHY_11B 0x16 +//#define bMaxItem_OFDM_PHY0 0x29 +//#define bMaxItem_OFDM_PHY1 0x0 + +#define bPMACControl 0x0 // Useless +#define bWMACControl 0x1 +#define bWNICControl 0x2 + +#define PathA 0x0 // Useless +#define PathB 0x1 +#define PathC 0x2 +#define PathD 0x3 + +/*--------------------------Define Parameters-------------------------------*/ + + +#endif //__INC_HAL8192SPHYREG_H --- linux-raspi2-4.2.0.orig/drivers/net/wireless/rtl8192cu/include/Hal8192CUHWImg.h +++ linux-raspi2-4.2.0/drivers/net/wireless/rtl8192cu/include/Hal8192CUHWImg.h @@ -0,0 +1,105 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved. + * + * 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 + * published by the Free Software Foundation. + * + * 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 Street, Fifth Floor, Boston, MA 02110, USA + * + * + ******************************************************************************/ +#ifndef __INC_HAL8192CU_FW_IMG_H +#define __INC_HAL8192CU_FW_IMG_H + +/*Created on 2011/ 6/15, 5:45*/ + +#ifdef CONFIG_BT_COEXISTENCE +#define TSMCImgArrayLength 15706 //v84 TSMC COMMON 2012-04-13 +#else //#ifdef CONFIG_P2P +#define TSMCImgArrayLength 16126 //v88 TSMC P2PPS with CCX report C2H 2012-12-05 +#endif +extern u8 Rtl8192CUFwTSMCImgArray[TSMCImgArrayLength]; + +#ifdef CONFIG_BT_COEXISTENCE +#define UMCACutImgArrayLength 16248 //v79 UMC A Cut COMMON 2011-10-06 +#else //#ifdef CONFIG_P2P +#define UMCACutImgArrayLength 16126 //v88 UMC A Cut P2PPS with CCX report C2H 2012-12-05 +#endif +extern u8 Rtl8192CUFwUMCACutImgArray[UMCACutImgArrayLength]; + +#ifdef CONFIG_BT_COEXISTENCE +#define UMCBCutImgArrayLength 15686 //v84 UMC B Cut COMMON 2012-04-13 +#else //#ifdef CONFIG_P2P +#define UMCBCutImgArrayLength 16096 //v88 UMC B Cut P2PPS with CCX report C2H 2012-12-05 +#endif +extern u8 Rtl8192CUFwUMCBCutImgArray[UMCBCutImgArrayLength]; + +//8188C_Formal_All_PHYforMP_111117 2011-11-23 +//8192C_Formal_92CU_PHYforMP_110817 2011-11-23 +#define PHY_REG_2TArrayLength 374 +extern u32 Rtl8192CUPHY_REG_2TArray[PHY_REG_2TArrayLength]; +#define PHY_REG_1TArrayLength 374 +extern u32 Rtl8192CUPHY_REG_1TArray[PHY_REG_1TArrayLength]; +#define PHY_ChangeTo_1T1RArrayLength 1 +extern u32 Rtl8192CUPHY_ChangeTo_1T1RArray[PHY_ChangeTo_1T1RArrayLength]; +#define PHY_ChangeTo_1T2RArrayLength 1 +extern u32 Rtl8192CUPHY_ChangeTo_1T2RArray[PHY_ChangeTo_1T2RArrayLength]; +#define PHY_ChangeTo_2T2RArrayLength 1 +extern u32 Rtl8192CUPHY_ChangeTo_2T2RArray[PHY_ChangeTo_2T2RArrayLength]; +#define PHY_REG_Array_PGLength 336 +extern u32 Rtl8192CUPHY_REG_Array_PG[PHY_REG_Array_PGLength]; +#define PHY_REG_Array_PG_mCardLength 336 +extern u32 Rtl8192CUPHY_REG_Array_PG_mCard[PHY_REG_Array_PG_mCardLength]; +#define PHY_REG_Array_MPLength 4 +extern u32 Rtl8192CUPHY_REG_Array_MP[PHY_REG_Array_MPLength]; +#define PHY_REG_1T_HPArrayLength 378 +extern u32 Rtl8192CUPHY_REG_1T_HPArray[PHY_REG_1T_HPArrayLength]; +#define PHY_REG_1T_mCardArrayLength 374 +extern u32 Rtl8192CUPHY_REG_1T_mCardArray[PHY_REG_1T_mCardArrayLength]; +#define PHY_REG_2T_mCardArrayLength 374 +extern u32 Rtl8192CUPHY_REG_2T_mCardArray[PHY_REG_2T_mCardArrayLength]; +#define PHY_REG_Array_PG_HPLength 336 +extern u32 Rtl8192CUPHY_REG_Array_PG_HP[PHY_REG_Array_PG_HPLength]; +#define RadioA_2TArrayLength 282 +extern u32 Rtl8192CURadioA_2TArray[RadioA_2TArrayLength]; +#define RadioB_2TArrayLength 78 +extern u32 Rtl8192CURadioB_2TArray[RadioB_2TArrayLength]; +#define RadioA_1TArrayLength 282 +extern u32 Rtl8192CURadioA_1TArray[RadioA_1TArrayLength]; +#define RadioB_1TArrayLength 1 +extern u32 Rtl8192CURadioB_1TArray[RadioB_1TArrayLength]; +#define RadioA_2T_mCardArrayLength 282 +extern u32 Rtl8192CURadioA_2T_mCardArray[RadioA_2T_mCardArrayLength]; +#define RadioB_2T_mCardArrayLength 78 +extern u32 Rtl8192CURadioB_2T_mCardArray[RadioB_2T_mCardArrayLength]; +#define RadioA_1T_mCardArrayLength 282 +extern u32 Rtl8192CURadioA_1T_mCardArray[RadioA_1T_mCardArrayLength]; +#define RadioB_1T_mCardArrayLength 1 +extern u32 Rtl8192CURadioB_1T_mCardArray[RadioB_1T_mCardArrayLength]; +#define RadioA_1T_HPArrayLength 282 +extern u32 Rtl8192CURadioA_1T_HPArray[RadioA_1T_HPArrayLength]; +#define RadioB_GM_ArrayLength 1 +extern u32 Rtl8192CURadioB_GM_Array[RadioB_GM_ArrayLength]; + +// MAC reg V14 - 2011-11-23 +#define MAC_2T_ArrayLength 174 +extern u32 Rtl8192CUMAC_2T_Array[MAC_2T_ArrayLength]; +#define MACPHY_Array_PGLength 1 +extern u32 Rtl8192CUMACPHY_Array_PG[MACPHY_Array_PGLength]; +#define AGCTAB_2TArrayLength 320 +extern u32 Rtl8192CUAGCTAB_2TArray[AGCTAB_2TArrayLength]; +#define AGCTAB_1TArrayLength 320 +extern u32 Rtl8192CUAGCTAB_1TArray[AGCTAB_1TArrayLength]; +#define AGCTAB_1T_HPArrayLength 320 +extern u32 Rtl8192CUAGCTAB_1T_HPArray[AGCTAB_1T_HPArrayLength]; + +#endif //__INC_HAL8192CU_FW_IMG_H --- linux-raspi2-4.2.0.orig/drivers/net/wireless/rtl8192cu/include/Hal8192CUHWImg_wowlan.h +++ linux-raspi2-4.2.0/drivers/net/wireless/rtl8192cu/include/Hal8192CUHWImg_wowlan.h @@ -0,0 +1,33 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved. + * + * 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 + * published by the Free Software Foundation. + * + * 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 Street, Fifth Floor, Boston, MA 02110, USA + * + * + ******************************************************************************/ +#ifndef __INC_HAL8192CU_FW_IMG_WOWLAN_H +#define __INC_HAL8192CU_FW_IMG_WOWLAN_H + +/*Created on 2011/11/ 8, 14:15*/ + + +#define TSMCWWImgArrayLength 13458 +extern u8 Rtl8192CUFwTSMCWWImgArray[TSMCWWImgArrayLength]; +#define UMCACutWWImgArrayLength 13458 +extern u8 Rtl8192CUFwUMCACutWWImgArray[UMCACutWWImgArrayLength]; +#define UMCBCutWWImgArrayLength 13446 +extern u8 Rtl8192CUFwUMCBCutWWImgArray[UMCBCutWWImgArrayLength]; + +#endif //__INC_HAL8192CU_FW_IMG_WOWLAN_H --- linux-raspi2-4.2.0.orig/drivers/net/wireless/rtl8192cu/include/Hal8192DEHWImg.h +++ linux-raspi2-4.2.0/drivers/net/wireless/rtl8192cu/include/Hal8192DEHWImg.h @@ -0,0 +1,66 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved. + * + * 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 + * published by the Free Software Foundation. + * + * 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 Street, Fifth Floor, Boston, MA 02110, USA + * + * + ******************************************************************************/ +#ifndef __INC_HAL8192DE_FW_IMG_H +#define __INC_HAL8192DE_FW_IMG_H + +#include + +/*Created on 2011/11/11, 8: 8*/ + +#define Rtl8192DEImgArrayLength 32296 +extern const u8 Rtl8192DEFwImgArray[Rtl8192DEImgArrayLength]; +#define Rtl8192DEMainArrayLength 1 +extern const u8 Rtl8192DEFwMainArray[Rtl8192DEMainArrayLength]; +#define Rtl8192DEDataArrayLength 1 +extern const u8 Rtl8192DEFwDataArray[Rtl8192DEDataArrayLength]; +#define Rtl8192DEPHY_REG_2TArrayLength 372 +extern const u32 Rtl8192DEPHY_REG_2TArray[Rtl8192DEPHY_REG_2TArrayLength]; +#define Rtl8192DEPHY_REG_1TArrayLength 1 +extern const u32 Rtl8192DEPHY_REG_1TArray[Rtl8192DEPHY_REG_1TArrayLength]; +#define Rtl8192DEPHY_REG_Array_PGLength 624 +extern const u32 Rtl8192DEPHY_REG_Array_PG[Rtl8192DEPHY_REG_Array_PGLength]; +#define Rtl8192DEPHY_REG_Array_MPLength 12 +extern const u32 Rtl8192DEPHY_REG_Array_MP[Rtl8192DEPHY_REG_Array_MPLength]; +#define Rtl8192DERadioA_2TArrayLength 378 +extern const u32 Rtl8192DERadioA_2TArray[Rtl8192DERadioA_2TArrayLength]; +#define Rtl8192DERadioB_2TArrayLength 384 +extern const u32 Rtl8192DERadioB_2TArray[Rtl8192DERadioB_2TArrayLength]; +#define Rtl8192DERadioA_1TArrayLength 1 +extern const u32 Rtl8192DERadioA_1TArray[Rtl8192DERadioA_1TArrayLength]; +#define Rtl8192DERadioB_1TArrayLength 1 +extern const u32 Rtl8192DERadioB_1TArray[Rtl8192DERadioB_1TArrayLength]; +#define Rtl8192DERadioA_2T_intPAArrayLength 378 +extern const u32 Rtl8192DERadioA_2T_intPAArray[Rtl8192DERadioA_2T_intPAArrayLength]; +#define Rtl8192DERadioB_2T_intPAArrayLength 384 +extern const u32 Rtl8192DERadioB_2T_intPAArray[Rtl8192DERadioB_2T_intPAArrayLength]; +#define Rtl8192DEMAC_2T_ArrayLength 192 +extern const u32 Rtl8192DEMAC_2T_Array[Rtl8192DEMAC_2T_ArrayLength]; +#define Rtl8192DEAGCTAB_ArrayLength 386 +extern const u32 Rtl8192DEAGCTAB_Array[Rtl8192DEAGCTAB_ArrayLength]; +#define Rtl8192DEAGCTAB_5GArrayLength 194 +extern const u32 Rtl8192DEAGCTAB_5GArray[Rtl8192DEAGCTAB_5GArrayLength]; +#define Rtl8192DEAGCTAB_2GArrayLength 194 +extern const u32 Rtl8192DEAGCTAB_2GArray[Rtl8192DEAGCTAB_2GArrayLength]; +#define Rtl8192DEAGCTAB_2TArrayLength 1 +extern const u32 Rtl8192DEAGCTAB_2TArray[Rtl8192DEAGCTAB_2TArrayLength]; +#define Rtl8192DEAGCTAB_1TArrayLength 1 +extern const u32 Rtl8192DEAGCTAB_1TArray[Rtl8192DEAGCTAB_1TArrayLength]; + +#endif //__INC_HAL8192CU_FW_IMG_H --- linux-raspi2-4.2.0.orig/drivers/net/wireless/rtl8192cu/include/Hal8192DPhyCfg.h +++ linux-raspi2-4.2.0/drivers/net/wireless/rtl8192cu/include/Hal8192DPhyCfg.h @@ -0,0 +1,527 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved. + * + * 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 + * published by the Free Software Foundation. + * + * 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 Street, Fifth Floor, Boston, MA 02110, USA + * + * + ******************************************************************************/ +/***************************************************************************** + * + * Module: __INC_HAL8192DPHYCFG_H + * + * + * Note: + * + * + * Export: Constants, macro, functions(API), global variables(None). + * + * Abbrev: + * + * History: + * Data Who Remark + * 08/07/2007 MHC 1. Porting from 9x series PHYCFG.h. + * 2. Reorganize code architecture. + * + *****************************************************************************/ + /* Check to see if the file has been included already. */ +#ifndef __INC_HAL8192DPHYCFG_H +#define __INC_HAL8192DPHYCFG_H + + +/*--------------------------Define Parameters-------------------------------*/ +#define LOOP_LIMIT 5 +#define MAX_STALL_TIME 50 //us +#define AntennaDiversityValue 0x80 //(Adapter->bSoftwareAntennaDiversity ? 0x00:0x80) +#define MAX_TXPWR_IDX_NMODE_92S 63 +#define Reset_Cnt_Limit 3 + + +#define IQK_MAC_REG_NUM 4 +#define IQK_ADDA_REG_NUM 16 +#define IQK_BB_REG_NUM 10 +#define IQK_BB_REG_NUM_92C 9 +#define IQK_BB_REG_NUM_92D 10 +#define IQK_BB_REG_NUM_test 6 +#define index_mapping_NUM 13 +#define Rx_index_mapping_NUM 15 +#define AVG_THERMAL_NUM 8 +#define IQK_Matrix_REG_NUM 8 +#define IQK_Matrix_Settings_NUM 1+24+21 + +#ifdef CONFIG_PCI_HCI +#define SET_RTL8192SE_RF_SLEEP(_pAdapter) \ +{ \ + u1Byte u1bTmp; \ + u1bTmp = PlatformEFIORead1Byte(_pAdapter, REG_LDOV12D_CTRL); \ + u1bTmp |= BIT0; \ + PlatformEFIOWrite1Byte(_pAdapter, REG_LDOV12D_CTRL, u1bTmp); \ + PlatformEFIOWrite1Byte(_pAdapter, REG_SPS_OCP_CFG, 0x0); \ + PlatformEFIOWrite1Byte(_pAdapter, TXPAUSE, 0xFF); \ + PlatformEFIOWrite2Byte(_pAdapter, CMDR, 0x57FC); \ + delay_us(100); \ + PlatformEFIOWrite2Byte(_pAdapter, CMDR, 0x77FC); \ + PlatformEFIOWrite1Byte(_pAdapter, PHY_CCA, 0x0); \ + delay_us(10); \ + PlatformEFIOWrite2Byte(_pAdapter, CMDR, 0x37FC); \ + delay_us(10); \ + PlatformEFIOWrite2Byte(_pAdapter, CMDR, 0x77FC); \ + delay_us(10); \ + PlatformEFIOWrite2Byte(_pAdapter, CMDR, 0x57FC); \ +} +#endif + + +/*--------------------------Define Parameters-------------------------------*/ + + +/*------------------------------Define structure----------------------------*/ +typedef enum _SwChnlCmdID{ + CmdID_End, + CmdID_SetTxPowerLevel, + CmdID_BBRegWrite10, + CmdID_WritePortUlong, + CmdID_WritePortUshort, + CmdID_WritePortUchar, + CmdID_RF_WriteReg, +}SwChnlCmdID; + + +/* 1. Switch channel related */ +typedef struct _SwChnlCmd{ + SwChnlCmdID CmdID; + u32 Para1; + u32 Para2; + u32 msDelay; +}SwChnlCmd; + +typedef enum _HW90_BLOCK{ + HW90_BLOCK_MAC = 0, + HW90_BLOCK_PHY0 = 1, + HW90_BLOCK_PHY1 = 2, + HW90_BLOCK_RF = 3, + HW90_BLOCK_MAXIMUM = 4, // Never use this +}HW90_BLOCK_E, *PHW90_BLOCK_E; + +//vivi added this for read parameter from header, 20100908 +typedef enum _RF_CONTENT{ + radioa_txt = 0x1000, + radiob_txt = 0x1001, + radioc_txt = 0x1002, + radiod_txt = 0x1003 +} RF_CONTENT; + +#define RF_PATH_MAX 2 + +typedef enum _WIRELESS_MODE { + WIRELESS_MODE_UNKNOWN = 0x00, + WIRELESS_MODE_A = 0x01, + WIRELESS_MODE_B = 0x02, + WIRELESS_MODE_G = 0x04, + WIRELESS_MODE_AUTO = 0x08, + WIRELESS_MODE_N_24G = 0x10, + WIRELESS_MODE_N_5G = 0x20 +} WIRELESS_MODE; + + +#define CHANNEL_MAX_NUMBER 14+24+21 // 14 is the max channel number +#define CHANNEL_GROUP_MAX 3+9 // ch1~3, ch4~9, ch10~14 total three groups +#define MAX_PG_GROUP 13 + +#define CHANNEL_GROUP_MAX_2G 3 +#define CHANNEL_GROUP_IDX_5GL 3 +#define CHANNEL_GROUP_IDX_5GM 6 +#define CHANNEL_GROUP_IDX_5GH 9 +#define CHANNEL_GROUP_MAX_5G 9 +#define CHANNEL_MAX_NUMBER_2G 14 + +typedef enum _BaseBand_Config_Type{ + BaseBand_Config_PHY_REG = 0, //Radio Path A + BaseBand_Config_AGC_TAB = 1, //Radio Path B +}BaseBand_Config_Type, *PBaseBand_Config_Type; + +typedef enum _MACPHY_MODE_8192D{ + SINGLEMAC_SINGLEPHY, + DUALMAC_DUALPHY, + DUALMAC_SINGLEPHY, +}MACPHY_MODE_8192D,*PMACPHY_MODE_8192D; + +typedef enum _MACPHY_MODE_CHANGE_ACTION{ + DMDP2DMSP = 0, + DMSP2DMDP = 1, + DMDP2SMSP = 2, + SMSP2DMDP = 3, + DMSP2SMSP = 4, + SMSP2DMSP = 5, + MAXACTION +}MACPHY_MODE_CHANGE_ACTION,*PMACPHY_MODE_CHANGE_ACTION; + +typedef enum _BAND_TYPE{ + BAND_ON_2_4G = 0, + BAND_ON_5G, + BAND_ON_BOTH, + BANDMAX +}BAND_TYPE,*PBAND_TYPE; + +typedef enum _PHY_Rate_Tx_Power_Offset_Area{ + RA_OFFSET_LEGACY_OFDM1, + RA_OFFSET_LEGACY_OFDM2, + RA_OFFSET_HT_OFDM1, + RA_OFFSET_HT_OFDM2, + RA_OFFSET_HT_OFDM3, + RA_OFFSET_HT_OFDM4, + RA_OFFSET_HT_CCK, +}RA_OFFSET_AREA,*PRA_OFFSET_AREA; + + +/* BB/RF related */ +typedef enum _RF_TYPE_8190P{ + RF_TYPE_MIN, // 0 + RF_8225=1, // 1 11b/g RF for verification only + RF_8256=2, // 2 11b/g/n + RF_8258=3, // 3 11a/b/g/n RF + RF_6052=4, // 4 11b/g/n RF + //RF_6052=5, // 4 11b/g/n RF + // TODO: We sholud remove this psudo PHY RF after we get new RF. + RF_PSEUDO_11N=5, // 5, It is a temporality RF. +}RF_TYPE_8190P_E,*PRF_TYPE_8190P_E; + +typedef struct _BB_REGISTER_DEFINITION{ + u32 rfintfs; // set software control: + // 0x870~0x877[8 bytes] + + u32 rfintfi; // readback data: + // 0x8e0~0x8e7[8 bytes] + + u32 rfintfo; // output data: + // 0x860~0x86f [16 bytes] + + u32 rfintfe; // output enable: + // 0x860~0x86f [16 bytes] + + u32 rf3wireOffset; // LSSI data: + // 0x840~0x84f [16 bytes] + + u32 rfLSSI_Select; // BB Band Select: + // 0x878~0x87f [8 bytes] + + u32 rfTxGainStage; // Tx gain stage: + // 0x80c~0x80f [4 bytes] + + u32 rfHSSIPara1; // wire parameter control1 : + // 0x820~0x823,0x828~0x82b, 0x830~0x833, 0x838~0x83b [16 bytes] + + u32 rfHSSIPara2; // wire parameter control2 : + // 0x824~0x827,0x82c~0x82f, 0x834~0x837, 0x83c~0x83f [16 bytes] + + u32 rfSwitchControl; //Tx Rx antenna control : + // 0x858~0x85f [16 bytes] + + u32 rfAGCControl1; //AGC parameter control1 : + // 0xc50~0xc53,0xc58~0xc5b, 0xc60~0xc63, 0xc68~0xc6b [16 bytes] + + u32 rfAGCControl2; //AGC parameter control2 : + // 0xc54~0xc57,0xc5c~0xc5f, 0xc64~0xc67, 0xc6c~0xc6f [16 bytes] + + u32 rfRxIQImbalance; //OFDM Rx IQ imbalance matrix : + // 0xc14~0xc17,0xc1c~0xc1f, 0xc24~0xc27, 0xc2c~0xc2f [16 bytes] + + u32 rfRxAFE; //Rx IQ DC ofset and Rx digital filter, Rx DC notch filter : + // 0xc10~0xc13,0xc18~0xc1b, 0xc20~0xc23, 0xc28~0xc2b [16 bytes] + + u32 rfTxIQImbalance; //OFDM Tx IQ imbalance matrix + // 0xc80~0xc83,0xc88~0xc8b, 0xc90~0xc93, 0xc98~0xc9b [16 bytes] + + u32 rfTxAFE; //Tx IQ DC Offset and Tx DFIR type + // 0xc84~0xc87,0xc8c~0xc8f, 0xc94~0xc97, 0xc9c~0xc9f [16 bytes] + + u32 rfLSSIReadBack; //LSSI RF readback data SI mode + // 0x8a0~0x8af [16 bytes] + + u32 rfLSSIReadBackPi; //LSSI RF readback data PI mode 0x8b8-8bc for Path A and B + +}BB_REGISTER_DEFINITION_T, *PBB_REGISTER_DEFINITION_T; + +#ifdef CONFIG_MP_INCLUDED +typedef enum _ANTENNA_PATH{ + ANTENNA_NONE = 0x00, + ANTENNA_D , + ANTENNA_C , + ANTENNA_CD , + ANTENNA_B , + ANTENNA_BD , + ANTENNA_BC , + ANTENNA_BCD , + ANTENNA_A , + ANTENNA_AD , + ANTENNA_AC , + ANTENNA_ACD , + ANTENNA_AB , + ANTENNA_ABD , + ANTENNA_ABC , + ANTENNA_ABCD +} ANTENNA_PATH; +#endif + +typedef struct _R_ANTENNA_SELECT_OFDM{ + u32 r_tx_antenna:4; + u32 r_ant_l:4; + u32 r_ant_non_ht:4; + u32 r_ant_ht1:4; + u32 r_ant_ht2:4; + u32 r_ant_ht_s1:4; + u32 r_ant_non_ht_s1:4; + u32 OFDM_TXSC:2; + u32 Reserved:2; +}R_ANTENNA_SELECT_OFDM; + +typedef struct _R_ANTENNA_SELECT_CCK{ + u8 r_cckrx_enable_2:2; + u8 r_cckrx_enable:2; + u8 r_ccktx_enable:4; +}R_ANTENNA_SELECT_CCK; + +/*------------------------------Define structure----------------------------*/ + + +/*------------------------Export global variable----------------------------*/ +/*------------------------Export global variable----------------------------*/ + + +/*------------------------Export Marco Definition---------------------------*/ +/*------------------------Export Marco Definition---------------------------*/ + +//Added for TX Power +//u8 GetRightChnlPlace(u8 chnl); +u8 rtl8192d_GetRightChnlPlaceforIQK(u8 chnl); +u8 rtl8192d_getChnlGroupfromArray(u8 chnl); +/*--------------------------Exported Function prototype---------------------*/ +// +// BB and RF register read/write +// +void rtl8192d_PHY_SetBBReg1Byte( IN PADAPTER Adapter, + IN u32 RegAddr, + IN u32 BitMask, + IN u32 Data ); +u32 rtl8192d_PHY_QueryBBReg( IN PADAPTER Adapter, + IN u32 RegAddr, + IN u32 BitMask ); +void rtl8192d_PHY_SetBBReg( IN PADAPTER Adapter, + IN u32 RegAddr, + IN u32 BitMask, + IN u32 Data ); +u32 rtl8192d_PHY_QueryRFReg( IN PADAPTER Adapter, + IN RF_RADIO_PATH_E eRFPath, + IN u32 RegAddr, + IN u32 BitMask ); +void rtl8192d_PHY_SetRFReg( IN PADAPTER Adapter, + IN RF_RADIO_PATH_E eRFPath, + IN u32 RegAddr, + IN u32 BitMask, + IN u32 Data ); + +// +// Initialization related function +// +/* MAC/BB/RF HAL config */ +extern int PHY_MACConfig8192D( IN PADAPTER Adapter ); +extern int PHY_BBConfig8192D( IN PADAPTER Adapter ); +extern int PHY_RFConfig8192D( IN PADAPTER Adapter ); +/* RF config */ +int rtl8192d_PHY_ConfigRFWithParaFile( IN PADAPTER Adapter, + IN u8* pFileName, + IN RF_RADIO_PATH_E eRFPath); +int rtl8192d_PHY_ConfigRFWithHeaderFile( IN PADAPTER Adapter, + IN RF_CONTENT Content, + IN RF_RADIO_PATH_E eRFPath); +/* BB/RF readback check for making sure init OK */ +int rtl8192d_PHY_CheckBBAndRFOK( IN PADAPTER Adapter, + IN HW90_BLOCK_E CheckBlock, + IN RF_RADIO_PATH_E eRFPath ); +/* Read initi reg value for tx power setting. */ +void rtl8192d_PHY_GetHWRegOriginalValue( IN PADAPTER Adapter ); + +// +// RF Power setting +// +//extern BOOLEAN PHY_SetRFPowerState(IN PADAPTER Adapter, +// IN RT_RF_POWER_STATE eRFPowerState); + +// +// BB TX Power R/W +// +void PHY_GetTxPowerLevel8192D( IN PADAPTER Adapter, + OUT u32* powerlevel ); +void PHY_SetTxPowerLevel8192D( IN PADAPTER Adapter, + IN u8 channel ); +BOOLEAN PHY_UpdateTxPowerDbm8192D( IN PADAPTER Adapter, + IN int powerInDbm ); + +// +VOID +PHY_ScanOperationBackup8192D(IN PADAPTER Adapter, + IN u8 Operation ); + +// +// Switch bandwidth for 8192S +// +//void PHY_SetBWModeCallback8192C( IN PRT_TIMER pTimer ); +void PHY_SetBWMode8192D( IN PADAPTER pAdapter, + IN HT_CHANNEL_WIDTH ChnlWidth, + IN unsigned char Offset ); + +// +// Set FW CMD IO for 8192S. +// +//extern BOOLEAN HalSetIO8192C( IN PADAPTER Adapter, +// IN IO_TYPE IOType); + +// +// Set A2 entry to fw for 8192S +// +extern void FillA2Entry8192C( IN PADAPTER Adapter, + IN u8 index, + IN u8* val); + + +// +// channel switch related funciton +// +//extern void PHY_SwChnlCallback8192C( IN PRT_TIMER pTimer ); +void PHY_SwChnl8192D( IN PADAPTER pAdapter, + IN u8 channel ); + // Call after initialization +void PHY_SwChnlPhy8192D( IN PADAPTER pAdapter, + IN u8 channel ); + +extern void ChkFwCmdIoDone( IN PADAPTER Adapter); + +#ifdef USE_WORKITEM +//extern void SetIOWorkItemCallback( IN PVOID pContext ); +#else +//extern void SetIOTimerCallback( IN PRT_TIMER pTimer); +#endif + +// +// BB/MAC/RF other monitor API +// +void PHY_SetMonitorMode8192D(IN PADAPTER pAdapter, + IN BOOLEAN bEnableMonitorMode ); + +BOOLEAN PHY_CheckIsLegalRfPath8192D(IN PADAPTER pAdapter, + IN u32 eRFPath ); + +// +// IQ calibrate +// +void rtl8192d_PHY_IQCalibrate( IN PADAPTER pAdapter); + + +// +// LC calibrate +// +void rtl8192d_PHY_LCCalibrate(IN PADAPTER pAdapter); + +// +// AP calibrate +// +void rtl8192d_PHY_APCalibrate(IN PADAPTER pAdapter, IN char delta); + + +// +// Modify the value of the hw register when beacon interval be changed. +// +void +rtl8192d_PHY_SetBeaconHwReg( IN PADAPTER Adapter, + IN u16 BeaconInterval ); + + +extern VOID +PHY_SwitchEphyParameter( + IN PADAPTER Adapter + ); + +extern VOID +PHY_EnableHostClkReq( + IN PADAPTER Adapter + ); + +BOOLEAN +SetAntennaConfig92C( + IN PADAPTER Adapter, + IN u8 DefaultAnt + ); + +VOID +PHY_StopTRXBeforeChangeBand8192D( + PADAPTER Adapter +); + +VOID +PHY_UpdateBBRFConfiguration8192D( + IN PADAPTER Adapter, + IN BOOLEAN bisBandSwitch +); + +VOID PHY_ReadMacPhyMode92D( + IN PADAPTER Adapter, + IN BOOLEAN AutoloadFail +); + +VOID PHY_ConfigMacPhyMode92D( + IN PADAPTER Adapter +); + +VOID PHY_ConfigMacPhyModeInfo92D( + IN PADAPTER Adapter +); + +VOID PHY_ConfigMacCoexist_RFPage92D( + IN PADAPTER Adapter +); + +VOID +rtl8192d_PHY_InitRxSetting( + IN PADAPTER Adapter +); + +VOID +rtl8192d_PHY_ResetIQKResult( + IN PADAPTER Adapter +); + + +VOID +rtl8192d_PHY_SetRFPathSwitch(IN PADAPTER pAdapter, IN BOOLEAN bMain); + +VOID +HalChangeCCKStatus8192D( + IN PADAPTER Adapter, + IN BOOLEAN bCCKDisable +); + +VOID +PHY_InitPABias92D(IN PADAPTER Adapter); + +/*--------------------------Exported Function prototype---------------------*/ + +#define PHY_SetBBReg1Byte(Adapter, RegAddr, BitMask, Data) rtl8192d_PHY_SetBBReg1Byte((Adapter), (RegAddr), (BitMask), (Data)) +#define PHY_QueryBBReg(Adapter, RegAddr, BitMask) rtl8192d_PHY_QueryBBReg((Adapter), (RegAddr), (BitMask)) +#define PHY_SetBBReg(Adapter, RegAddr, BitMask, Data) rtl8192d_PHY_SetBBReg((Adapter), (RegAddr), (BitMask), (Data)) +#define PHY_QueryRFReg(Adapter, eRFPath, RegAddr, BitMask) rtl8192d_PHY_QueryRFReg((Adapter), (eRFPath), (RegAddr), (BitMask)) +#define PHY_SetRFReg(Adapter, eRFPath, RegAddr, BitMask, Data) rtl8192d_PHY_SetRFReg((Adapter), (eRFPath), (RegAddr), (BitMask), (Data)) + +#define PHY_SetMacReg PHY_SetBBReg + +#endif // __INC_HAL8192SPHYCFG_H --- linux-raspi2-4.2.0.orig/drivers/net/wireless/rtl8192cu/include/Hal8192DPhyReg.h +++ linux-raspi2-4.2.0/drivers/net/wireless/rtl8192cu/include/Hal8192DPhyReg.h @@ -0,0 +1,1170 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved. + * + * 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 + * published by the Free Software Foundation. + * + * 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 Street, Fifth Floor, Boston, MA 02110, USA + * + * + ******************************************************************************/ +/***************************************************************************** + * + * Module: __INC_HAL8192DPHYREG_H + * + * + * Note: 1. Define PMAC/BB register map + * 2. Define RF register map + * 3. PMAC/BB register bit mask. + * 4. RF reg bit mask. + * 5. Other BB/RF relative definition. + * + * + * Export: Constants, macro, functions(API), global variables(None). + * + * Abbrev: + * + * History: + * Data Who Remark + * 08/07/2007 MHC 1. Porting from 9x series PHYCFG.h. + * 2. Reorganize code architecture. + * 09/25/2008 MH 1. Add RL6052 register definition + * + *****************************************************************************/ +#ifndef __INC_HAL8192DPHYREG_H +#define __INC_HAL8192DPHYREG_H + + +/*--------------------------Define Parameters-------------------------------*/ + +//============================================================ +// 8192S Regsiter offset definition +//============================================================ + +// +// BB-PHY register PMAC 0x100 PHY 0x800 - 0xEFF +// 1. PMAC duplicate register due to connection: RF_Mode, TRxRN, NumOf L-STF +// 2. 0x800/0x900/0xA00/0xC00/0xD00/0xE00 +// 3. RF register 0x00-2E +// 4. Bit Mask for BB/RF register +// 5. Other defintion for BB/RF R/W +// + + +// +// 1. PMAC duplicate register due to connection: RF_Mode, TRxRN, NumOf L-STF +// 1. Page1(0x100) +// +#define rPMAC_Reset 0x100 +#define rPMAC_TxStart 0x104 +#define rPMAC_TxLegacySIG 0x108 +#define rPMAC_TxHTSIG1 0x10c +#define rPMAC_TxHTSIG2 0x110 +#define rPMAC_PHYDebug 0x114 +#define rPMAC_TxPacketNum 0x118 +#define rPMAC_TxIdle 0x11c +#define rPMAC_TxMACHeader0 0x120 +#define rPMAC_TxMACHeader1 0x124 +#define rPMAC_TxMACHeader2 0x128 +#define rPMAC_TxMACHeader3 0x12c +#define rPMAC_TxMACHeader4 0x130 +#define rPMAC_TxMACHeader5 0x134 +#define rPMAC_TxDataType 0x138 +#define rPMAC_TxRandomSeed 0x13c +#define rPMAC_CCKPLCPPreamble 0x140 +#define rPMAC_CCKPLCPHeader 0x144 +#define rPMAC_CCKCRC16 0x148 +#define rPMAC_OFDMRxCRC32OK 0x170 +#define rPMAC_OFDMRxCRC32Er 0x174 +#define rPMAC_OFDMRxParityEr 0x178 +#define rPMAC_OFDMRxCRC8Er 0x17c +#define rPMAC_CCKCRxRC16Er 0x180 +#define rPMAC_CCKCRxRC32Er 0x184 +#define rPMAC_CCKCRxRC32OK 0x188 +#define rPMAC_TxStatus 0x18c + +// +// 2. Page2(0x200) +// +// The following two definition are only used for USB interface. +#define RF_BB_CMD_ADDR 0x02c0 // RF/BB read/write command address. +#define RF_BB_CMD_DATA 0x02c4 // RF/BB read/write command data. + +// +// 3. Page8(0x800) +// +#define rFPGA0_RFMOD 0x800 //RF mode & CCK TxSC // RF BW Setting?? + +#define rFPGA0_TxInfo 0x804 // Status report?? +#define rFPGA0_PSDFunction 0x808 + +#define rFPGA0_TxGainStage 0x80c // Set TX PWR init gain? + +#define rFPGA0_RFTiming1 0x810 // Useless now +#define rFPGA0_RFTiming2 0x814 + +#define rFPGA0_XA_HSSIParameter1 0x820 // RF 3 wire register +#define rFPGA0_XA_HSSIParameter2 0x824 +#define rFPGA0_XB_HSSIParameter1 0x828 +#define rFPGA0_XB_HSSIParameter2 0x82c + +#define rFPGA0_XA_LSSIParameter 0x840 +#define rFPGA0_XB_LSSIParameter 0x844 + +#define rFPGA0_RFWakeUpParameter 0x850 // Useless now +#define rFPGA0_RFSleepUpParameter 0x854 + +#define rFPGA0_XAB_SwitchControl 0x858 // RF Channel switch +#define rFPGA0_XCD_SwitchControl 0x85c + +#define rFPGA0_XA_RFInterfaceOE 0x860 // RF Channel switch +#define rFPGA0_XB_RFInterfaceOE 0x864 + +#define rFPGA0_XAB_RFInterfaceSW 0x870 // RF Interface Software Control +#define rFPGA0_XCD_RFInterfaceSW 0x874 + +#define rFPGA0_XAB_RFParameter 0x878 // RF Parameter +#define rFPGA0_XCD_RFParameter 0x87c + +#define rFPGA0_AnalogParameter1 0x880 // Crystal cap setting RF-R/W protection for parameter4?? +#define rFPGA0_AnalogParameter2 0x884 +#define rFPGA0_AnalogParameter3 0x888 +#define rFPGA0_AdDaClockEn 0x888 // enable ad/da clock1 for dual-phy +#define rFPGA0_AnalogParameter4 0x88c + +#define rFPGA0_XA_LSSIReadBack 0x8a0 // Tranceiver LSSI Readback +#define rFPGA0_XB_LSSIReadBack 0x8a4 +#define rFPGA0_XC_LSSIReadBack 0x8a8 +#define rFPGA0_XD_LSSIReadBack 0x8ac + +#define rFPGA0_PSDReport 0x8b4 // Useless now +#define TransceiverA_HSPI_Readback 0x8b8 // Transceiver A HSPI Readback +#define TransceiverB_HSPI_Readback 0x8bc // Transceiver B HSPI Readback +#define rFPGA0_XAB_RFInterfaceRB 0x8e0 // Useless now // RF Interface Readback Value +#define rFPGA0_XCD_RFInterfaceRB 0x8e4 // Useless now + +// +// 4. Page9(0x900) +// +#define rFPGA1_RFMOD 0x900 //RF mode & OFDM TxSC // RF BW Setting?? + +#define rFPGA1_TxBlock 0x904 // Useless now +#define rFPGA1_DebugSelect 0x908 // Useless now +#define rFPGA1_TxInfo 0x90c // Useless now // Status report?? + +// +// 5. PageA(0xA00) +// +// Set Control channel to upper or lower. These settings are required only for 40MHz +#define rCCK0_System 0xa00 + +#define rCCK0_AFESetting 0xa04 // Disable init gain now // Select RX path by RSSI +#define rCCK0_CCA 0xa08 // Disable init gain now // Init gain + +#define rCCK0_RxAGC1 0xa0c //AGC default value, saturation level // Antenna Diversity, RX AGC, LNA Threshold, RX LNA Threshold useless now. Not the same as 90 series +#define rCCK0_RxAGC2 0xa10 //AGC & DAGC + +#define rCCK0_RxHP 0xa14 + +#define rCCK0_DSPParameter1 0xa18 //Timing recovery & Channel estimation threshold +#define rCCK0_DSPParameter2 0xa1c //SQ threshold + +#define rCCK0_TxFilter1 0xa20 +#define rCCK0_TxFilter2 0xa24 +#define rCCK0_DebugPort 0xa28 //debug port and Tx filter3 +#define rCCK0_FalseAlarmReport 0xa2c //0xa2d useless now 0xa30-a4f channel report +#define rCCK0_TRSSIReport 0xa50 +#define rCCK0_RxReport 0xa54 //0xa57 +#define rCCK0_FACounterLower 0xa5c //0xa5b +#define rCCK0_FACounterUpper 0xa58 //0xa5c + +// +// PageB(0xB00) +// +#define rPdp_AntA 0xb00 +#define rPdp_AntA_4 0xb04 +#define rPdp_AntA_8 0xb08 +#define rPdp_AntA_C 0xb0c +#define rPdp_AntA_10 0xb10 +#define rPdp_AntA_14 0xb14 +#define rPdp_AntA_18 0xb18 +#define rPdp_AntA_1C 0xb1c +#define rPdp_AntA_20 0xb20 +#define rPdp_AntA_24 0xb24 + +#define rConfig_Pmpd_AntA 0xb28 +#define rConfig_ram64x16 0xb2c + +#define rBndA 0xb30 +#define rHssiPar 0xb34 + +#define rConfig_AntA 0xb68 +#define rConfig_AntB 0xb6c + +#define rPdp_AntB 0xb70 +#define rPdp_AntB_4 0xb74 +#define rPdp_AntB_8 0xb78 +#define rPdp_AntB_C 0xb7c +#define rPdp_AntB_10 0xb80 +#define rPdp_AntB_14 0xb84 +#define rPdp_AntB_18 0xb88 +#define rPdp_AntB_1C 0xb8c +#define rPdp_AntB_20 0xb90 +#define rPdp_AntB_24 0xb94 + +#define rConfig_Pmpd_AntB 0xb98 + +#define rBndB 0xba0 + +#define rAPK 0xbd8 +#define rPm_Rx0_AntA 0xbdc +#define rPm_Rx1_AntA 0xbe0 +#define rPm_Rx2_AntA 0xbe4 +#define rPm_Rx3_AntA 0xbe8 +#define rPm_Rx0_AntB 0xbec +#define rPm_Rx1_AntB 0xbf0 +#define rPm_Rx2_AntB 0xbf4 +#define rPm_Rx3_AntB 0xbf8 + +// +// 6. PageC(0xC00) +// +#define rOFDM0_LSTF 0xc00 + +#define rOFDM0_TRxPathEnable 0xc04 +#define rOFDM0_TRMuxPar 0xc08 +#define rOFDM0_TRSWIsolation 0xc0c + +#define rOFDM0_XARxAFE 0xc10 //RxIQ DC offset, Rx digital filter, DC notch filter +#define rOFDM0_XARxIQImbalance 0xc14 //RxIQ imblance matrix +#define rOFDM0_XBRxAFE 0xc18 +#define rOFDM0_XBRxIQImbalance 0xc1c +#define rOFDM0_XCRxAFE 0xc20 +#define rOFDM0_XCRxIQImbalance 0xc24 +#define rOFDM0_XDRxAFE 0xc28 +#define rOFDM0_XDRxIQImbalance 0xc2c + +#define rOFDM0_RxDetector1 0xc30 //PD,BW & SBD // DM tune init gain +#define rOFDM0_RxDetector2 0xc34 //SBD & Fame Sync. +#define rOFDM0_RxDetector3 0xc38 //Frame Sync. +#define rOFDM0_RxDetector4 0xc3c //PD, SBD, Frame Sync & Short-GI + +#define rOFDM0_RxDSP 0xc40 //Rx Sync Path +#define rOFDM0_CFOandDAGC 0xc44 //CFO & DAGC +#define rOFDM0_CCADropThreshold 0xc48 //CCA Drop threshold +#define rOFDM0_ECCAThreshold 0xc4c // energy CCA + +#define rOFDM0_XAAGCCore1 0xc50 // DIG +#define rOFDM0_XAAGCCore2 0xc54 +#define rOFDM0_XBAGCCore1 0xc58 +#define rOFDM0_XBAGCCore2 0xc5c +#define rOFDM0_XCAGCCore1 0xc60 +#define rOFDM0_XCAGCCore2 0xc64 +#define rOFDM0_XDAGCCore1 0xc68 +#define rOFDM0_XDAGCCore2 0xc6c + +#define rOFDM0_AGCParameter1 0xc70 +#define rOFDM0_AGCParameter2 0xc74 +#define rOFDM0_AGCRSSITable 0xc78 +#define rOFDM0_HTSTFAGC 0xc7c + +#define rOFDM0_XATxIQImbalance 0xc80 // TX PWR TRACK and DIG +#define rOFDM0_XATxAFE 0xc84 +#define rOFDM0_XBTxIQImbalance 0xc88 +#define rOFDM0_XBTxAFE 0xc8c +#define rOFDM0_XCTxIQImbalance 0xc90 +#define rOFDM0_XCTxAFE 0xc94 +#define rOFDM0_XDTxIQImbalance 0xc98 +#define rOFDM0_XDTxAFE 0xc9c + +#define rOFDM0_RxIQExtAnta 0xca0 +#define rOFDM0_TxCoeff1 0xca4 +#define rOFDM0_TxCoeff2 0xca8 +#define rOFDM0_TxCoeff3 0xcac +#define rOFDM0_TxCoeff4 0xcb0 +#define rOFDM0_TxCoeff5 0xcb4 +#define rOFDM0_TxCoeff6 0xcb8 +#define rOFDM0_RxHPParameter 0xce0 +#define rOFDM0_TxPseudoNoiseWgt 0xce4 +#define rOFDM0_FrameSync 0xcf0 +#define rOFDM0_DFSReport 0xcf4 + +// +// 7. PageD(0xD00) +// +#define rOFDM1_LSTF 0xd00 +#define rOFDM1_TRxPathEnable 0xd04 + +#define rOFDM1_CFO 0xd08 // No setting now +#define rOFDM1_CSI1 0xd10 +#define rOFDM1_SBD 0xd14 +#define rOFDM1_CSI2 0xd18 +#define rOFDM1_CFOTracking 0xd2c +#define rOFDM1_TRxMesaure1 0xd34 +#define rOFDM1_IntfDet 0xd3c +#define rOFDM1_PseudoNoiseStateAB 0xd50 +#define rOFDM1_PseudoNoiseStateCD 0xd54 +#define rOFDM1_RxPseudoNoiseWgt 0xd58 + +#define rOFDM_PHYCounter1 0xda0 //cca, parity fail +#define rOFDM_PHYCounter2 0xda4 //rate illegal, crc8 fail +#define rOFDM_PHYCounter3 0xda8 //MCS not support + +#define rOFDM_ShortCFOAB 0xdac // No setting now +#define rOFDM_ShortCFOCD 0xdb0 +#define rOFDM_LongCFOAB 0xdb4 +#define rOFDM_LongCFOCD 0xdb8 +#define rOFDM_TailCFOAB 0xdbc +#define rOFDM_TailCFOCD 0xdc0 +#define rOFDM_PWMeasure1 0xdc4 +#define rOFDM_PWMeasure2 0xdc8 +#define rOFDM_BWReport 0xdcc +#define rOFDM_AGCReport 0xdd0 +#define rOFDM_RxSNR 0xdd4 +#define rOFDM_RxEVMCSI 0xdd8 +#define rOFDM_SIGReport 0xddc + + +// +// 8. PageE(0xE00) +// +#define rTxAGC_A_Rate18_06 0xe00 +#define rTxAGC_A_Rate54_24 0xe04 +#define rTxAGC_A_CCK1_Mcs32 0xe08 +#define rTxAGC_A_Mcs03_Mcs00 0xe10 +#define rTxAGC_A_Mcs07_Mcs04 0xe14 +#define rTxAGC_A_Mcs11_Mcs08 0xe18 +#define rTxAGC_A_Mcs15_Mcs12 0xe1c + +#define rTxAGC_B_Rate18_06 0x830 +#define rTxAGC_B_Rate54_24 0x834 +#define rTxAGC_B_CCK1_55_Mcs32 0x838 +#define rTxAGC_B_Mcs03_Mcs00 0x83c +#define rTxAGC_B_Mcs07_Mcs04 0x848 +#define rTxAGC_B_Mcs11_Mcs08 0x84c +#define rTxAGC_B_Mcs15_Mcs12 0x868 +#define rTxAGC_B_CCK11_A_CCK2_11 0x86c + +#define rFPGA0_IQK 0xe28 +#define rTx_IQK_Tone_A 0xe30 +#define rRx_IQK_Tone_A 0xe34 +#define rTx_IQK_PI_A 0xe38 +#define rRx_IQK_PI_A 0xe3c + +#define rTx_IQK 0xe40 +#define rRx_IQK 0xe44 +#define rIQK_AGC_Pts 0xe48 +#define rIQK_AGC_Rsp 0xe4c +#define rTx_IQK_Tone_B 0xe50 +#define rRx_IQK_Tone_B 0xe54 +#define rTx_IQK_PI_B 0xe58 +#define rRx_IQK_PI_B 0xe5c +#define rIQK_AGC_Cont 0xe60 + +#define rBlue_Tooth 0xe6c +#define rRx_Wait_CCA 0xe70 +#define rTx_CCK_RFON 0xe74 +#define rTx_CCK_BBON 0xe78 +#define rTx_OFDM_RFON 0xe7c +#define rTx_OFDM_BBON 0xe80 +#define rTx_To_Rx 0xe84 +#define rTx_To_Tx 0xe88 +#define rRx_CCK 0xe8c + +#define rTx_Power_Before_IQK_A 0xe94 +#define rTx_Power_After_IQK_A 0xe9c + +#define rRx_Power_Before_IQK_A 0xea0 +#define rRx_Power_Before_IQK_A_2 0xea4 +#define rRx_Power_After_IQK_A 0xea8 +#define rRx_Power_After_IQK_A_2 0xeac + +#define rTx_Power_Before_IQK_B 0xeb4 +#define rTx_Power_After_IQK_B 0xebc + +#define rRx_Power_Before_IQK_B 0xec0 +#define rRx_Power_Before_IQK_B_2 0xec4 +#define rRx_Power_After_IQK_B 0xec8 +#define rRx_Power_After_IQK_B_2 0xecc + +#define rRx_OFDM 0xed0 +#define rRx_Wait_RIFS 0xed4 +#define rRx_TO_Rx 0xed8 +#define rStandby 0xedc +#define rSleep 0xee0 +#define rPMPD_ANAEN 0xeec + +// +// 7. RF Register 0x00-0x2E (RF 8256) +// RF-0222D 0x00-3F +// +//Zebra1 +#define rZebra1_HSSIEnable 0x0 // Useless now +#define rZebra1_TRxEnable1 0x1 +#define rZebra1_TRxEnable2 0x2 +#define rZebra1_AGC 0x4 +#define rZebra1_ChargePump 0x5 +#define rZebra1_Channel 0x7 // RF channel switch + +//#endif +#define rZebra1_TxGain 0x8 // Useless now +#define rZebra1_TxLPF 0x9 +#define rZebra1_RxLPF 0xb +#define rZebra1_RxHPFCorner 0xc + +//Zebra4 +#define rGlobalCtrl 0 // Useless now +#define rRTL8256_TxLPF 19 +#define rRTL8256_RxLPF 11 + +//RTL8258 +#define rRTL8258_TxLPF 0x11 // Useless now +#define rRTL8258_RxLPF 0x13 +#define rRTL8258_RSSILPF 0xa + +// +// RL6052 Register definition +// +#define RF_AC 0x00 // + +#define RF_IQADJ_G1 0x01 // +#define RF_IQADJ_G2 0x02 // +#define RF_BS_PA_APSET_G1_G4 0x03 +#define RF_BS_PA_APSET_G5_G8 0x04 +#define RF_POW_TRSW 0x05 // + +#define RF_GAIN_RX 0x06 // +#define RF_GAIN_TX 0x07 // + +#define RF_TXM_IDAC 0x08 // +#define RF_IPA_G 0x09 // +#define RF_TXBIAS_G 0x0A +#define RF_TXPA_AG 0x0B +#define RF_IPA_A 0x0C // +#define RF_TXBIAS_A 0x0D +#define RF_BS_PA_APSET_G9_G11 0x0E +#define RF_BS_IQGEN 0x0F // + +#define RF_MODE1 0x10 // +#define RF_MODE2 0x11 // + +#define RF_RX_AGC_HP 0x12 // +#define RF_TX_AGC 0x13 // +#define RF_BIAS 0x14 // +#define RF_IPA 0x15 // +#define RF_POW_ABILITY 0x17 // +#define RF_MODE_AG 0x18 // +#define rRfChannel 0x18 // RF channel and BW switch +#define RF_CHNLBW 0x18 // RF channel and BW switch +#define RF_TOP 0x19 // + +#define RF_RX_G1 0x1A // +#define RF_RX_G2 0x1B // + +#define RF_RX_BB2 0x1C // +#define RF_RX_BB1 0x1D // + +#define RF_RCK1 0x1E // +#define RF_RCK2 0x1F // + +#define RF_TX_G1 0x20 // +#define RF_TX_G2 0x21 // +#define RF_TX_G3 0x22 // + +#define RF_TX_BB1 0x23 // + +#define RF_T_METER 0x42 // + +#define RF_SYN_G1 0x25 // RF TX Power control +#define RF_SYN_G2 0x26 // RF TX Power control +#define RF_SYN_G3 0x27 // RF TX Power control +#define RF_SYN_G4 0x28 // RF TX Power control +#define RF_SYN_G5 0x29 // RF TX Power control +#define RF_SYN_G6 0x2A // RF TX Power control +#define RF_SYN_G7 0x2B // RF TX Power control +#define RF_SYN_G8 0x2C // RF TX Power control + +#define RF_RCK_OS 0x30 // RF TX PA control + +#define RF_TXPA_G1 0x31 // RF TX PA control +#define RF_TXPA_G2 0x32 // RF TX PA control +#define RF_TXPA_G3 0x33 // RF TX PA control +#define RF_LOBF_9 0x38 +#define RF_RXRF_A3 0x3C // +#define RF_TRSW 0x3F + +#define RF_TXRF_A2 0x41 +#define RF_TXPA_G4 0x46 +#define RF_TXPA_A4 0x4B + +// +//Bit Mask +// +// 1. Page1(0x100) +#define bBBResetB 0x100 // Useless now? +#define bGlobalResetB 0x200 +#define bOFDMTxStart 0x4 +#define bCCKTxStart 0x8 +#define bCRC32Debug 0x100 +#define bPMACLoopback 0x10 +#define bTxLSIG 0xffffff +#define bOFDMTxRate 0xf +#define bOFDMTxReserved 0x10 +#define bOFDMTxLength 0x1ffe0 +#define bOFDMTxParity 0x20000 +#define bTxHTSIG1 0xffffff +#define bTxHTMCSRate 0x7f +#define bTxHTBW 0x80 +#define bTxHTLength 0xffff00 +#define bTxHTSIG2 0xffffff +#define bTxHTSmoothing 0x1 +#define bTxHTSounding 0x2 +#define bTxHTReserved 0x4 +#define bTxHTAggreation 0x8 +#define bTxHTSTBC 0x30 +#define bTxHTAdvanceCoding 0x40 +#define bTxHTShortGI 0x80 +#define bTxHTNumberHT_LTF 0x300 +#define bTxHTCRC8 0x3fc00 +#define bCounterReset 0x10000 +#define bNumOfOFDMTx 0xffff +#define bNumOfCCKTx 0xffff0000 +#define bTxIdleInterval 0xffff +#define bOFDMService 0xffff0000 +#define bTxMACHeader 0xffffffff +#define bTxDataInit 0xff +#define bTxHTMode 0x100 +#define bTxDataType 0x30000 +#define bTxRandomSeed 0xffffffff +#define bCCKTxPreamble 0x1 +#define bCCKTxSFD 0xffff0000 +#define bCCKTxSIG 0xff +#define bCCKTxService 0xff00 +#define bCCKLengthExt 0x8000 +#define bCCKTxLength 0xffff0000 +#define bCCKTxCRC16 0xffff +#define bCCKTxStatus 0x1 +#define bOFDMTxStatus 0x2 + +#define IS_BB_REG_OFFSET_92S(_Offset) ((_Offset >= 0x800) && (_Offset <= 0xfff)) + +// 2. Page8(0x800) +#define bRFMOD 0x1 // Reg 0x800 rFPGA0_RFMOD +#define bJapanMode 0x2 +#define bCCKTxSC 0x30 +#define bCCKEn 0x1000000 +#define bOFDMEn 0x2000000 + +#define bOFDMRxADCPhase 0x10000 // Useless now +#define bOFDMTxDACPhase 0x40000 +#define bXATxAGC 0x3f + +#define bAntennaSelect 0x0300 + +#define bXBTxAGC 0xf00 // Reg 80c rFPGA0_TxGainStage +#define bXCTxAGC 0xf000 +#define bXDTxAGC 0xf0000 + +#define bPAStart 0xf0000000 // Useless now +#define bTRStart 0x00f00000 +#define bRFStart 0x0000f000 +#define bBBStart 0x000000f0 +#define bBBCCKStart 0x0000000f +#define bPAEnd 0xf //Reg0x814 +#define bTREnd 0x0f000000 +#define bRFEnd 0x000f0000 +#define bCCAMask 0x000000f0 //T2R +#define bR2RCCAMask 0x00000f00 +#define bHSSI_R2TDelay 0xf8000000 +#define bHSSI_T2RDelay 0xf80000 +#define bContTxHSSI 0x400 //chane gain at continue Tx +#define bIGFromCCK 0x200 +#define bAGCAddress 0x3f +#define bRxHPTx 0x7000 +#define bRxHPT2R 0x38000 +#define bRxHPCCKIni 0xc0000 +#define bAGCTxCode 0xc00000 +#define bAGCRxCode 0x300000 + +#define b3WireDataLength 0x800 // Reg 0x820~84f rFPGA0_XA_HSSIParameter1 +#define b3WireAddressLength 0x400 + +#define b3WireRFPowerDown 0x1 // Useless now +//#define bHWSISelect 0x8 +#define b5GPAPEPolarity 0x40000000 +#define b2GPAPEPolarity 0x80000000 +#define bRFSW_TxDefaultAnt 0x3 +#define bRFSW_TxOptionAnt 0x30 +#define bRFSW_RxDefaultAnt 0x300 +#define bRFSW_RxOptionAnt 0x3000 +#define bRFSI_3WireData 0x1 +#define bRFSI_3WireClock 0x2 +#define bRFSI_3WireLoad 0x4 +#define bRFSI_3WireRW 0x8 +#define bRFSI_3Wire 0xf + +#define bRFSI_RFENV 0x10 // Reg 0x870 rFPGA0_XAB_RFInterfaceSW + +#define bRFSI_TRSW 0x20 // Useless now +#define bRFSI_TRSWB 0x40 +#define bRFSI_ANTSW 0x100 +#define bRFSI_ANTSWB 0x200 +#define bRFSI_PAPE 0x400 +#define bRFSI_PAPE5G 0x800 +#define bBandSelect 0x1 +#define bHTSIG2_GI 0x80 +#define bHTSIG2_Smoothing 0x01 +#define bHTSIG2_Sounding 0x02 +#define bHTSIG2_Aggreaton 0x08 +#define bHTSIG2_STBC 0x30 +#define bHTSIG2_AdvCoding 0x40 +#define bHTSIG2_NumOfHTLTF 0x300 +#define bHTSIG2_CRC8 0x3fc +#define bHTSIG1_MCS 0x7f +#define bHTSIG1_BandWidth 0x80 +#define bHTSIG1_HTLength 0xffff +#define bLSIG_Rate 0xf +#define bLSIG_Reserved 0x10 +#define bLSIG_Length 0x1fffe +#define bLSIG_Parity 0x20 +#define bCCKRxPhase 0x4 + +#define bLSSIReadAddress 0x7f800000 // T65 RF + +#define bLSSIReadEdge 0x80000000 //LSSI "Read" edge signal + +#define bLSSIReadBackData 0xfffff // T65 RF + +#define bLSSIReadOKFlag 0x1000 // Useless now +#define bCCKSampleRate 0x8 //0: 44MHz, 1:88MHz +#define bRegulator0Standby 0x1 +#define bRegulatorPLLStandby 0x2 +#define bRegulator1Standby 0x4 +#define bPLLPowerUp 0x8 +#define bDPLLPowerUp 0x10 +#define bDA10PowerUp 0x20 +#define bAD7PowerUp 0x200 +#define bDA6PowerUp 0x2000 +#define bXtalPowerUp 0x4000 +#define b40MDClkPowerUP 0x8000 +#define bDA6DebugMode 0x20000 +#define bDA6Swing 0x380000 + +#define bADClkPhase 0x4000000 // Reg 0x880 rFPGA0_AnalogParameter1 20/40 CCK support switch 40/80 BB MHZ + +#define b80MClkDelay 0x18000000 // Useless +#define bAFEWatchDogEnable 0x20000000 + +#define bXtalCap01 0xc0000000 // Reg 0x884 rFPGA0_AnalogParameter2 Crystal cap +#define bXtalCap23 0x3 +#define bXtalCap92x 0x0f000000 +#define bXtalCap 0x0f000000 + +#define bIntDifClkEnable 0x400 // Useless +#define bExtSigClkEnable 0x800 +#define bBandgapMbiasPowerUp 0x10000 +#define bAD11SHGain 0xc0000 +#define bAD11InputRange 0x700000 +#define bAD11OPCurrent 0x3800000 +#define bIPathLoopback 0x4000000 +#define bQPathLoopback 0x8000000 +#define bAFELoopback 0x10000000 +#define bDA10Swing 0x7e0 +#define bDA10Reverse 0x800 +#define bDAClkSource 0x1000 +#define bAD7InputRange 0x6000 +#define bAD7Gain 0x38000 +#define bAD7OutputCMMode 0x40000 +#define bAD7InputCMMode 0x380000 +#define bAD7Current 0xc00000 +#define bRegulatorAdjust 0x7000000 +#define bAD11PowerUpAtTx 0x1 +#define bDA10PSAtTx 0x10 +#define bAD11PowerUpAtRx 0x100 +#define bDA10PSAtRx 0x1000 +#define bCCKRxAGCFormat 0x200 +#define bPSDFFTSamplepPoint 0xc000 +#define bPSDAverageNum 0x3000 +#define bIQPathControl 0xc00 +#define bPSDFreq 0x3ff +#define bPSDAntennaPath 0x30 +#define bPSDIQSwitch 0x40 +#define bPSDRxTrigger 0x400000 +#define bPSDTxTrigger 0x80000000 +#define bPSDSineToneScale 0x7f000000 +#define bPSDReport 0xffff + +// 3. Page9(0x900) +#define bOFDMTxSC 0x30000000 // Useless +#define bCCKTxOn 0x1 +#define bOFDMTxOn 0x2 +#define bDebugPage 0xfff //reset debug page and also HWord, LWord +#define bDebugItem 0xff //reset debug page and LWord +#define bAntL 0x10 +#define bAntNonHT 0x100 +#define bAntHT1 0x1000 +#define bAntHT2 0x10000 +#define bAntHT1S1 0x100000 +#define bAntNonHTS1 0x1000000 + +// 4. PageA(0xA00) +#define bCCKBBMode 0x3 // Useless +#define bCCKTxPowerSaving 0x80 +#define bCCKRxPowerSaving 0x40 + +#define bCCKSideBand 0x10 // Reg 0xa00 rCCK0_System 20/40 switch + +#define bCCKScramble 0x8 // Useless +#define bCCKAntDiversity 0x8000 +#define bCCKCarrierRecovery 0x4000 +#define bCCKTxRate 0x3000 +#define bCCKDCCancel 0x0800 +#define bCCKISICancel 0x0400 +#define bCCKMatchFilter 0x0200 +#define bCCKEqualizer 0x0100 +#define bCCKPreambleDetect 0x800000 +#define bCCKFastFalseCCA 0x400000 +#define bCCKChEstStart 0x300000 +#define bCCKCCACount 0x080000 +#define bCCKcs_lim 0x070000 +#define bCCKBistMode 0x80000000 +#define bCCKCCAMask 0x40000000 +#define bCCKTxDACPhase 0x4 +#define bCCKRxADCPhase 0x20000000 //r_rx_clk +#define bCCKr_cp_mode0 0x0100 +#define bCCKTxDCOffset 0xf0 +#define bCCKRxDCOffset 0xf +#define bCCKCCAMode 0xc000 +#define bCCKFalseCS_lim 0x3f00 +#define bCCKCS_ratio 0xc00000 +#define bCCKCorgBit_sel 0x300000 +#define bCCKPD_lim 0x0f0000 +#define bCCKNewCCA 0x80000000 +#define bCCKRxHPofIG 0x8000 +#define bCCKRxIG 0x7f00 +#define bCCKLNAPolarity 0x800000 +#define bCCKRx1stGain 0x7f0000 +#define bCCKRFExtend 0x20000000 //CCK Rx Iinital gain polarity +#define bCCKRxAGCSatLevel 0x1f000000 +#define bCCKRxAGCSatCount 0xe0 +#define bCCKRxRFSettle 0x1f //AGCsamp_dly +#define bCCKFixedRxAGC 0x8000 +//#define bCCKRxAGCFormat 0x4000 //remove to HSSI register 0x824 +#define bCCKAntennaPolarity 0x2000 +#define bCCKTxFilterType 0x0c00 +#define bCCKRxAGCReportType 0x0300 +#define bCCKRxDAGCEn 0x80000000 +#define bCCKRxDAGCPeriod 0x20000000 +#define bCCKRxDAGCSatLevel 0x1f000000 +#define bCCKTimingRecovery 0x800000 +#define bCCKTxC0 0x3f0000 +#define bCCKTxC1 0x3f000000 +#define bCCKTxC2 0x3f +#define bCCKTxC3 0x3f00 +#define bCCKTxC4 0x3f0000 +#define bCCKTxC5 0x3f000000 +#define bCCKTxC6 0x3f +#define bCCKTxC7 0x3f00 +#define bCCKDebugPort 0xff0000 +#define bCCKDACDebug 0x0f000000 +#define bCCKFalseAlarmEnable 0x8000 +#define bCCKFalseAlarmRead 0x4000 +#define bCCKTRSSI 0x7f +#define bCCKRxAGCReport 0xfe +#define bCCKRxReport_AntSel 0x80000000 +#define bCCKRxReport_MFOff 0x40000000 +#define bCCKRxRxReport_SQLoss 0x20000000 +#define bCCKRxReport_Pktloss 0x10000000 +#define bCCKRxReport_Lockedbit 0x08000000 +#define bCCKRxReport_RateError 0x04000000 +#define bCCKRxReport_RxRate 0x03000000 +#define bCCKRxFACounterLower 0xff +#define bCCKRxFACounterUpper 0xff000000 +#define bCCKRxHPAGCStart 0xe000 +#define bCCKRxHPAGCFinal 0x1c00 +#define bCCKRxFalseAlarmEnable 0x8000 +#define bCCKFACounterFreeze 0x4000 +#define bCCKTxPathSel 0x10000000 +#define bCCKDefaultRxPath 0xc000000 +#define bCCKOptionRxPath 0x3000000 + +// 5. PageC(0xC00) +#define bNumOfSTF 0x3 // Useless +#define bShift_L 0xc0 +#define bGI_TH 0xc +#define bRxPathA 0x1 +#define bRxPathB 0x2 +#define bRxPathC 0x4 +#define bRxPathD 0x8 +#define bTxPathA 0x1 +#define bTxPathB 0x2 +#define bTxPathC 0x4 +#define bTxPathD 0x8 +#define bTRSSIFreq 0x200 +#define bADCBackoff 0x3000 +#define bDFIRBackoff 0xc000 +#define bTRSSILatchPhase 0x10000 +#define bRxIDCOffset 0xff +#define bRxQDCOffset 0xff00 +#define bRxDFIRMode 0x1800000 +#define bRxDCNFType 0xe000000 +#define bRXIQImb_A 0x3ff +#define bRXIQImb_B 0xfc00 +#define bRXIQImb_C 0x3f0000 +#define bRXIQImb_D 0xffc00000 +#define bDC_dc_Notch 0x60000 +#define bRxNBINotch 0x1f000000 +#define bPD_TH 0xf +#define bPD_TH_Opt2 0xc000 +#define bPWED_TH 0x700 +#define bIfMF_Win_L 0x800 +#define bPD_Option 0x1000 +#define bMF_Win_L 0xe000 +#define bBW_Search_L 0x30000 +#define bwin_enh_L 0xc0000 +#define bBW_TH 0x700000 +#define bED_TH2 0x3800000 +#define bBW_option 0x4000000 +#define bRatio_TH 0x18000000 +#define bWindow_L 0xe0000000 +#define bSBD_Option 0x1 +#define bFrame_TH 0x1c +#define bFS_Option 0x60 +#define bDC_Slope_check 0x80 +#define bFGuard_Counter_DC_L 0xe00 +#define bFrame_Weight_Short 0x7000 +#define bSub_Tune 0xe00000 +#define bFrame_DC_Length 0xe000000 +#define bSBD_start_offset 0x30000000 +#define bFrame_TH_2 0x7 +#define bFrame_GI2_TH 0x38 +#define bGI2_Sync_en 0x40 +#define bSarch_Short_Early 0x300 +#define bSarch_Short_Late 0xc00 +#define bSarch_GI2_Late 0x70000 +#define bCFOAntSum 0x1 +#define bCFOAcc 0x2 +#define bCFOStartOffset 0xc +#define bCFOLookBack 0x70 +#define bCFOSumWeight 0x80 +#define bDAGCEnable 0x10000 +#define bTXIQImb_A 0x3ff +#define bTXIQImb_B 0xfc00 +#define bTXIQImb_C 0x3f0000 +#define bTXIQImb_D 0xffc00000 +#define bTxIDCOffset 0xff +#define bTxQDCOffset 0xff00 +#define bTxDFIRMode 0x10000 +#define bTxPesudoNoiseOn 0x4000000 +#define bTxPesudoNoise_A 0xff +#define bTxPesudoNoise_B 0xff00 +#define bTxPesudoNoise_C 0xff0000 +#define bTxPesudoNoise_D 0xff000000 +#define bCCADropOption 0x20000 +#define bCCADropThres 0xfff00000 +#define bEDCCA_H 0xf +#define bEDCCA_L 0xf0 +#define bLambda_ED 0x300 +#define bRxInitialGain 0x7f +#define bRxAntDivEn 0x80 +#define bRxAGCAddressForLNA 0x7f00 +#define bRxHighPowerFlow 0x8000 +#define bRxAGCFreezeThres 0xc0000 +#define bRxFreezeStep_AGC1 0x300000 +#define bRxFreezeStep_AGC2 0xc00000 +#define bRxFreezeStep_AGC3 0x3000000 +#define bRxFreezeStep_AGC0 0xc000000 +#define bRxRssi_Cmp_En 0x10000000 +#define bRxQuickAGCEn 0x20000000 +#define bRxAGCFreezeThresMode 0x40000000 +#define bRxOverFlowCheckType 0x80000000 +#define bRxAGCShift 0x7f +#define bTRSW_Tri_Only 0x80 +#define bPowerThres 0x300 +#define bRxAGCEn 0x1 +#define bRxAGCTogetherEn 0x2 +#define bRxAGCMin 0x4 +#define bRxHP_Ini 0x7 +#define bRxHP_TRLNA 0x70 +#define bRxHP_RSSI 0x700 +#define bRxHP_BBP1 0x7000 +#define bRxHP_BBP2 0x70000 +#define bRxHP_BBP3 0x700000 +#define bRSSI_H 0x7f0000 //the threshold for high power +#define bRSSI_Gen 0x7f000000 //the threshold for ant diversity +#define bRxSettle_TRSW 0x7 +#define bRxSettle_LNA 0x38 +#define bRxSettle_RSSI 0x1c0 +#define bRxSettle_BBP 0xe00 +#define bRxSettle_RxHP 0x7000 +#define bRxSettle_AntSW_RSSI 0x38000 +#define bRxSettle_AntSW 0xc0000 +#define bRxProcessTime_DAGC 0x300000 +#define bRxSettle_HSSI 0x400000 +#define bRxProcessTime_BBPPW 0x800000 +#define bRxAntennaPowerShift 0x3000000 +#define bRSSITableSelect 0xc000000 +#define bRxHP_Final 0x7000000 +#define bRxHTSettle_BBP 0x7 +#define bRxHTSettle_HSSI 0x8 +#define bRxHTSettle_RxHP 0x70 +#define bRxHTSettle_BBPPW 0x80 +#define bRxHTSettle_Idle 0x300 +#define bRxHTSettle_Reserved 0x1c00 +#define bRxHTRxHPEn 0x8000 +#define bRxHTAGCFreezeThres 0x30000 +#define bRxHTAGCTogetherEn 0x40000 +#define bRxHTAGCMin 0x80000 +#define bRxHTAGCEn 0x100000 +#define bRxHTDAGCEn 0x200000 +#define bRxHTRxHP_BBP 0x1c00000 +#define bRxHTRxHP_Final 0xe0000000 +#define bRxPWRatioTH 0x3 +#define bRxPWRatioEn 0x4 +#define bRxMFHold 0x3800 +#define bRxPD_Delay_TH1 0x38 +#define bRxPD_Delay_TH2 0x1c0 +#define bRxPD_DC_COUNT_MAX 0x600 +//#define bRxMF_Hold 0x3800 +#define bRxPD_Delay_TH 0x8000 +#define bRxProcess_Delay 0xf0000 +#define bRxSearchrange_GI2_Early 0x700000 +#define bRxFrame_Guard_Counter_L 0x3800000 +#define bRxSGI_Guard_L 0xc000000 +#define bRxSGI_Search_L 0x30000000 +#define bRxSGI_TH 0xc0000000 +#define bDFSCnt0 0xff +#define bDFSCnt1 0xff00 +#define bDFSFlag 0xf0000 +#define bMFWeightSum 0x300000 +#define bMinIdxTH 0x7f000000 +#define bDAFormat 0x40000 +#define bTxChEmuEnable 0x01000000 +#define bTRSWIsolation_A 0x7f +#define bTRSWIsolation_B 0x7f00 +#define bTRSWIsolation_C 0x7f0000 +#define bTRSWIsolation_D 0x7f000000 +#define bExtLNAGain 0x7c00 + +// 6. PageE(0xE00) +#define bSTBCEn 0x4 // Useless +#define bAntennaMapping 0x10 +#define bNss 0x20 +#define bCFOAntSumD 0x200 +#define bPHYCounterReset 0x8000000 +#define bCFOReportGet 0x4000000 +#define bOFDMContinueTx 0x10000000 +#define bOFDMSingleCarrier 0x20000000 +#define bOFDMSingleTone 0x40000000 +//#define bRxPath1 0x01 +//#define bRxPath2 0x02 +//#define bRxPath3 0x04 +//#define bRxPath4 0x08 +//#define bTxPath1 0x10 +//#define bTxPath2 0x20 +#define bHTDetect 0x100 +#define bCFOEn 0x10000 +#define bCFOValue 0xfff00000 +#define bSigTone_Re 0x3f +#define bSigTone_Im 0x7f00 +#define bCounter_CCA 0xffff +#define bCounter_ParityFail 0xffff0000 +#define bCounter_RateIllegal 0xffff +#define bCounter_CRC8Fail 0xffff0000 +#define bCounter_MCSNoSupport 0xffff +#define bCounter_FastSync 0xffff +#define bShortCFO 0xfff +#define bShortCFOTLength 12 //total +#define bShortCFOFLength 11 //fraction +#define bLongCFO 0x7ff +#define bLongCFOTLength 11 +#define bLongCFOFLength 11 +#define bTailCFO 0x1fff +#define bTailCFOTLength 13 +#define bTailCFOFLength 12 +#define bmax_en_pwdB 0xffff +#define bCC_power_dB 0xffff0000 +#define bnoise_pwdB 0xffff +#define bPowerMeasTLength 10 +#define bPowerMeasFLength 3 +#define bRx_HT_BW 0x1 +#define bRxSC 0x6 +#define bRx_HT 0x8 +#define bNB_intf_det_on 0x1 +#define bIntf_win_len_cfg 0x30 +#define bNB_Intf_TH_cfg 0x1c0 +#define bRFGain 0x3f +#define bTableSel 0x40 +#define bTRSW 0x80 +#define bRxSNR_A 0xff +#define bRxSNR_B 0xff00 +#define bRxSNR_C 0xff0000 +#define bRxSNR_D 0xff000000 +#define bSNREVMTLength 8 +#define bSNREVMFLength 1 +#define bCSI1st 0xff +#define bCSI2nd 0xff00 +#define bRxEVM1st 0xff0000 +#define bRxEVM2nd 0xff000000 +#define bSIGEVM 0xff +#define bPWDB 0xff00 +#define bSGIEN 0x10000 + +#define bSFactorQAM1 0xf // Useless +#define bSFactorQAM2 0xf0 +#define bSFactorQAM3 0xf00 +#define bSFactorQAM4 0xf000 +#define bSFactorQAM5 0xf0000 +#define bSFactorQAM6 0xf0000 +#define bSFactorQAM7 0xf00000 +#define bSFactorQAM8 0xf000000 +#define bSFactorQAM9 0xf0000000 +#define bCSIScheme 0x100000 + +#define bNoiseLvlTopSet 0x3 // Useless +#define bChSmooth 0x4 +#define bChSmoothCfg1 0x38 +#define bChSmoothCfg2 0x1c0 +#define bChSmoothCfg3 0xe00 +#define bChSmoothCfg4 0x7000 +#define bMRCMode 0x800000 +#define bTHEVMCfg 0x7000000 + +#define bLoopFitType 0x1 // Useless +#define bUpdCFO 0x40 +#define bUpdCFOOffData 0x80 +#define bAdvUpdCFO 0x100 +#define bAdvTimeCtrl 0x800 +#define bUpdClko 0x1000 +#define bFC 0x6000 +#define bTrackingMode 0x8000 +#define bPhCmpEnable 0x10000 +#define bUpdClkoLTF 0x20000 +#define bComChCFO 0x40000 +#define bCSIEstiMode 0x80000 +#define bAdvUpdEqz 0x100000 +#define bUChCfg 0x7000000 +#define bUpdEqz 0x8000000 + +//Rx Pseduo noise +#define bRxPesudoNoiseOn 0x20000000 // Useless +#define bRxPesudoNoise_A 0xff +#define bRxPesudoNoise_B 0xff00 +#define bRxPesudoNoise_C 0xff0000 +#define bRxPesudoNoise_D 0xff000000 +#define bPesudoNoiseState_A 0xffff +#define bPesudoNoiseState_B 0xffff0000 +#define bPesudoNoiseState_C 0xffff +#define bPesudoNoiseState_D 0xffff0000 + +//7. RF Register +//Zebra1 +#define bZebra1_HSSIEnable 0x8 // Useless +#define bZebra1_TRxControl 0xc00 +#define bZebra1_TRxGainSetting 0x07f +#define bZebra1_RxCorner 0xc00 +#define bZebra1_TxChargePump 0x38 +#define bZebra1_RxChargePump 0x7 +#define bZebra1_ChannelNum 0xf80 +#define bZebra1_TxLPFBW 0x400 +#define bZebra1_RxLPFBW 0x600 + +//Zebra4 +#define bRTL8256RegModeCtrl1 0x100 // Useless +#define bRTL8256RegModeCtrl0 0x40 +#define bRTL8256_TxLPFBW 0x18 +#define bRTL8256_RxLPFBW 0x600 + +//RTL8258 +#define bRTL8258_TxLPFBW 0xc // Useless +#define bRTL8258_RxLPFBW 0xc00 +#define bRTL8258_RSSILPFBW 0xc0 + + +// +// Other Definition +// + +//byte endable for sb_write +#define bByte0 0x1 // Useless +#define bByte1 0x2 +#define bByte2 0x4 +#define bByte3 0x8 +#define bWord0 0x3 +#define bWord1 0xc +#define bDWord 0xf + +//for PutRegsetting & GetRegSetting BitMask +#define bMaskByte0 0xff // Reg 0xc50 rOFDM0_XAAGCCore~0xC6f +#define bMaskByte1 0xff00 +#define bMaskByte2 0xff0000 +#define bMaskByte3 0xff000000 +#define bMaskHWord 0xffff0000 +#define bMaskLWord 0x0000ffff +#define bMaskDWord 0xffffffff +#define bMask12Bits 0xfff +#define bMaskH4Bits 0xf0000000 +#define bMaskOFDM_D 0xffc00000 +#define bMaskCCK 0x3f3f3f3f + +//for PutRFRegsetting & GetRFRegSetting BitMask +//#define bMask12Bits 0xfffff // RF Reg mask bits +//#define bMask20Bits 0xfffff // RF Reg mask bits T65 RF +#define bRFRegOffsetMask 0xfffff +//#define bRFRegOffsetMask 0xfff + +//MAC0 will wirte PHY1 +#define MAC0_ACCESS_PHY1 0x4000 +//MAC1 will wirte PHY0 +#define MAC1_ACCESS_PHY0 0x2000 + +#define bEnable 0x1 // Useless +#define bDisable 0x0 + +#define LeftAntenna 0x0 // Useless +#define RightAntenna 0x1 + +#define tCheckTxStatus 500 //500ms // Useless +#define tUpdateRxCounter 100 //100ms + +#define rateCCK 0 // Useless +#define rateOFDM 1 +#define rateHT 2 + +//define Register-End +#define bPMAC_End 0x1ff // Useless +#define bFPGAPHY0_End 0x8ff +#define bFPGAPHY1_End 0x9ff +#define bCCKPHY0_End 0xaff +#define bOFDMPHY0_End 0xcff +#define bOFDMPHY1_End 0xdff + +//define max debug item in each debug page +//#define bMaxItem_FPGA_PHY0 0x9 +//#define bMaxItem_FPGA_PHY1 0x3 +//#define bMaxItem_PHY_11B 0x16 +//#define bMaxItem_OFDM_PHY0 0x29 +//#define bMaxItem_OFDM_PHY1 0x0 + +#define bPMACControl 0x0 // Useless +#define bWMACControl 0x1 +#define bWNICControl 0x2 + +#define PathA 0x0 // Useless +#define PathB 0x1 +#define PathC 0x2 +#define PathD 0x3 + +/*--------------------------Define Parameters-------------------------------*/ + + +#endif //__INC_HAL8192SPHYREG_H --- linux-raspi2-4.2.0.orig/drivers/net/wireless/rtl8192cu/include/Hal8192DUHWImg.h +++ linux-raspi2-4.2.0/drivers/net/wireless/rtl8192cu/include/Hal8192DUHWImg.h @@ -0,0 +1,66 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved. + * + * 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 + * published by the Free Software Foundation. + * + * 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 Street, Fifth Floor, Boston, MA 02110, USA + * + * + ******************************************************************************/ +#ifndef __INC_HAL8192DU_FW_IMG_H +#define __INC_HAL8192DU_FW_IMG_H + +#include + +/*Created on 2011/11/11, 8: 8*/ + +#define Rtl8192DUImgArrayLength 31452 +extern const u8 Rtl8192DUFwImgArray[Rtl8192DUImgArrayLength]; +#define Rtl8192DUMainArrayLength 1 +extern const u8 Rtl8192DUFwMainArray[Rtl8192DUMainArrayLength]; +#define Rtl8192DUDataArrayLength 1 +extern const u8 Rtl8192DUFwDataArray[Rtl8192DUDataArrayLength]; +#define Rtl8192DUPHY_REG_2TArrayLength 372 +extern const u32 Rtl8192DUPHY_REG_2TArray[Rtl8192DUPHY_REG_2TArrayLength]; +#define Rtl8192DUPHY_REG_1TArrayLength 1 +extern const u32 Rtl8192DUPHY_REG_1TArray[Rtl8192DUPHY_REG_1TArrayLength]; +#define Rtl8192DUPHY_REG_Array_PGLength 624 +extern const u32 Rtl8192DUPHY_REG_Array_PG[Rtl8192DUPHY_REG_Array_PGLength]; +#define Rtl8192DUPHY_REG_Array_MPLength 14 +extern const u32 Rtl8192DUPHY_REG_Array_MP[Rtl8192DUPHY_REG_Array_MPLength]; +#define Rtl8192DURadioA_2TArrayLength 378 +extern const u32 Rtl8192DURadioA_2TArray[Rtl8192DURadioA_2TArrayLength]; +#define Rtl8192DURadioB_2TArrayLength 384 +extern const u32 Rtl8192DURadioB_2TArray[Rtl8192DURadioB_2TArrayLength]; +#define Rtl8192DURadioA_1TArrayLength 1 +extern const u32 Rtl8192DURadioA_1TArray[Rtl8192DURadioA_1TArrayLength]; +#define Rtl8192DURadioB_1TArrayLength 1 +extern const u32 Rtl8192DURadioB_1TArray[Rtl8192DURadioB_1TArrayLength]; +#define Rtl8192DURadioA_2T_intPAArrayLength 378 +extern const u32 Rtl8192DURadioA_2T_intPAArray[Rtl8192DURadioA_2T_intPAArrayLength]; +#define Rtl8192DURadioB_2T_intPAArrayLength 384 +extern const u32 Rtl8192DURadioB_2T_intPAArray[Rtl8192DURadioB_2T_intPAArrayLength]; +#define Rtl8192DUMAC_2T_ArrayLength 192 +extern const u32 Rtl8192DUMAC_2T_Array[Rtl8192DUMAC_2T_ArrayLength]; +#define Rtl8192DUAGCTAB_ArrayLength 386 +extern const u32 Rtl8192DUAGCTAB_Array[Rtl8192DUAGCTAB_ArrayLength]; +#define Rtl8192DUAGCTAB_5GArrayLength 194 +extern const u32 Rtl8192DUAGCTAB_5GArray[Rtl8192DUAGCTAB_5GArrayLength]; +#define Rtl8192DUAGCTAB_2GArrayLength 194 +extern const u32 Rtl8192DUAGCTAB_2GArray[Rtl8192DUAGCTAB_2GArrayLength]; +#define Rtl8192DUAGCTAB_2TArrayLength 1 +extern const u32 Rtl8192DUAGCTAB_2TArray[Rtl8192DUAGCTAB_2TArrayLength]; +#define Rtl8192DUAGCTAB_1TArrayLength 1 +extern const u32 Rtl8192DUAGCTAB_1TArray[Rtl8192DUAGCTAB_1TArrayLength]; + +#endif //__INC_HAL8192CU_FW_IMG_H --- linux-raspi2-4.2.0.orig/drivers/net/wireless/rtl8192cu/include/Hal8192DUHWImg_wowlan.h +++ linux-raspi2-4.2.0/drivers/net/wireless/rtl8192cu/include/Hal8192DUHWImg_wowlan.h @@ -0,0 +1,29 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved. + * + * 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 + * published by the Free Software Foundation. + * + * 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 Street, Fifth Floor, Boston, MA 02110, USA + * + * + ******************************************************************************/ +#ifndef __INC_HAL8192DU_FW_IMG_WOWLAN_H +#define __INC_HAL8192DU_FW_IMG_WOWLAN_H + +/*Created on 2011/11/ 8, 14:15*/ + + +#define DUWWImgArrayLength 24818 +extern u8 Rtl8192DUFwWWImgArray[DUWWImgArrayLength]; + +#endif //__INC_HAL8192DU_FW_IMG_WOWLAN_H --- linux-raspi2-4.2.0.orig/drivers/net/wireless/rtl8192cu/include/HalPwrSeqCmd.h +++ linux-raspi2-4.2.0/drivers/net/wireless/rtl8192cu/include/HalPwrSeqCmd.h @@ -0,0 +1,137 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved. + * + * 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 + * published by the Free Software Foundation. + * + * 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 Street, Fifth Floor, Boston, MA 02110, USA + * + * + ******************************************************************************/ +#ifndef __HALPWRSEQCMD_H__ +#define __HALPWRSEQCMD_H__ + +#include + +/*---------------------------------------------*/ +//3 The value of cmd: 4 bits +/*---------------------------------------------*/ +#define PWR_CMD_READ 0x00 + // offset: the read register offset + // msk: the mask of the read value + // value: N/A, left by 0 + // note: dirver shall implement this function by read & msk + +#define PWR_CMD_WRITE 0x01 + // offset: the read register offset + // msk: the mask of the write bits + // value: write value + // note: driver shall implement this cmd by read & msk after write + +#define PWR_CMD_POLLING 0x02 + // offset: the read register offset + // msk: the mask of the polled value + // value: the value to be polled, masked by the msd field. + // note: driver shall implement this cmd by + // do{ + // if( (Read(offset) & msk) == (value & msk) ) + // break; + // } while(not timeout); + +#define PWR_CMD_DELAY 0x03 + // offset: the value to delay + // msk: N/A + // value: the unit of delay, 0: us, 1: ms + +#define PWR_CMD_END 0x04 + // offset: N/A + // msk: N/A + // value: N/A + +/*---------------------------------------------*/ +//3 The value of base: 4 bits +/*---------------------------------------------*/ + // define the base address of each block +#define PWR_BASEADDR_MAC 0x00 +#define PWR_BASEADDR_USB 0x01 +#define PWR_BASEADDR_PCIE 0x02 +#define PWR_BASEADDR_SDIO 0x03 + +/*---------------------------------------------*/ +//3 The value of interface_msk: 4 bits +/*---------------------------------------------*/ +#define PWR_INTF_SDIO_MSK BIT(0) +#define PWR_INTF_USB_MSK BIT(1) +#define PWR_INTF_PCI_MSK BIT(2) +#define PWR_INTF_ALL_MSK (BIT(0)|BIT(1)|BIT(2)|BIT(3)) + +/*---------------------------------------------*/ +//3 The value of fab_msk: 4 bits +/*---------------------------------------------*/ +#define PWR_FAB_TSMC_MSK BIT(0) +#define PWR_FAB_UMC_MSK BIT(1) +#define PWR_FAB_ALL_MSK (BIT(0)|BIT(1)|BIT(2)|BIT(3)) + +/*---------------------------------------------*/ +//3 The value of cut_msk: 8 bits +/*---------------------------------------------*/ +#define PWR_CUT_TESTCHIP_MSK BIT(0) +#define PWR_CUT_A_MSK BIT(1) +#define PWR_CUT_B_MSK BIT(2) +#define PWR_CUT_C_MSK BIT(3) +#define PWR_CUT_D_MSK BIT(4) +#define PWR_CUT_E_MSK BIT(5) +#define PWR_CUT_F_MSK BIT(6) +#define PWR_CUT_G_MSK BIT(7) +#define PWR_CUT_ALL_MSK 0xFF + + +typedef enum _PWRSEQ_CMD_DELAY_UNIT_ +{ + PWRSEQ_DELAY_US, + PWRSEQ_DELAY_MS, +} PWRSEQ_DELAY_UNIT; + +typedef struct _WL_PWR_CFG_ +{ + u16 offset; + u8 cut_msk; + u8 fab_msk:4; + u8 interface_msk:4; + u8 base:4; + u8 cmd:4; + u8 msk; + u8 value; +} WLAN_PWR_CFG, *PWLAN_PWR_CFG; + + +#define GET_PWR_CFG_OFFSET(__PWR_CMD) __PWR_CMD.offset +#define GET_PWR_CFG_CUT_MASK(__PWR_CMD) __PWR_CMD.cut_msk +#define GET_PWR_CFG_FAB_MASK(__PWR_CMD) __PWR_CMD.fab_msk +#define GET_PWR_CFG_INTF_MASK(__PWR_CMD) __PWR_CMD.interface_msk +#define GET_PWR_CFG_BASE(__PWR_CMD) __PWR_CMD.base +#define GET_PWR_CFG_CMD(__PWR_CMD) __PWR_CMD.cmd +#define GET_PWR_CFG_MASK(__PWR_CMD) __PWR_CMD.msk +#define GET_PWR_CFG_VALUE(__PWR_CMD) __PWR_CMD.value + + +//================================================================================ +// Prototype of protected function. +//================================================================================ +u8 HalPwrSeqCmdParsing( + PADAPTER padapter, + u8 CutVersion, + u8 FabVersion, + u8 InterfaceType, + WLAN_PWR_CFG PwrCfgCmd[]); + +#endif --- linux-raspi2-4.2.0.orig/drivers/net/wireless/rtl8192cu/include/autoconf.h +++ linux-raspi2-4.2.0/drivers/net/wireless/rtl8192cu/include/autoconf.h @@ -0,0 +1,336 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved. + * + * 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 + * published by the Free Software Foundation. + * + * 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 Street, Fifth Floor, Boston, MA 02110, USA + * + * + ******************************************************************************/ + +/* + * Public General Config + */ +#define AUTOCONF_INCLUDED +#define RTL871X_MODULE_NAME "92CU" +#define DRV_NAME "rtl8192cu" + +#define CONFIG_USB_HCI 1 + +#define CONFIG_RTL8192C 1 + +#define PLATFORM_LINUX 1 + +//#define CONFIG_IOCTL_CFG80211 1 +#ifdef CONFIG_IOCTL_CFG80211 + //#define RTW_USE_CFG80211_STA_EVENT /* Indecate new sta asoc through cfg80211_new_sta */ + #define CONFIG_CFG80211_FORCE_COMPATIBLE_2_6_37_UNDER + //#define CONFIG_DEBUG_CFG80211 1 + //#define CONFIG_DRV_ISSUE_PROV_REQ // IOT FOR S2 + #define CONFIG_SET_SCAN_DENY_TIMER +#endif + +/* + * Internal General Config + */ +//#define CONFIG_PWRCTRL +//#define CONFIG_H2CLBK + +#define CONFIG_EMBEDDED_FWIMG 1 +//#define CONFIG_FILE_FWIMG + +#ifdef CONFIG_WAKE_ON_WLAN +#define CONFIG_WOWLAN 1 +#endif //CONFIG_WAKE_ON_WLAN + +#define CONFIG_R871X_TEST 1 + +#define CONFIG_XMIT_ACK +#ifdef CONFIG_XMIT_ACK + #define CONFIG_XMIT_ACK_POLLING + #define CONFIG_ACTIVE_KEEP_ALIVE_CHECK +#endif + +#define CONFIG_80211N_HT 1 + +#define CONFIG_RECV_REORDERING_CTRL 1 + +//#define CONFIG_TCP_CSUM_OFFLOAD_RX 1 + +//#define CONFIG_BEFORE_LINKED_DIG +//#define CONFIG_DRVEXT_MODULE 1 + +#ifndef CONFIG_MP_INCLUDED + #define CONFIG_IPS 1 + #ifdef CONFIG_IPS + //#define CONFIG_IPS_LEVEL_2 1 //enable this to set default IPS mode to IPS_LEVEL_2 + #endif + + #define SUPPORT_HW_RFOFF_DETECTED 1 + + #define CONFIG_LPS 1 + #define CONFIG_BT_COEXIST 1 + + //befor link + #define CONFIG_ANTENNA_DIVERSITY + + //after link + #ifdef CONFIG_ANTENNA_DIVERSITY + #define CONFIG_SW_ANTENNA_DIVERSITY + //#define CONFIG_HW_ANTENNA_DIVERSITY + #endif + + #define CONFIG_IOL +#else //#ifndef CONFIG_MP_INCLUDED + #define CONFIG_MP_IWPRIV_SUPPORT 1 +#endif //#ifndef CONFIG_MP_INCLUDED + +#define CONFIG_AP_MODE 1 +#ifdef CONFIG_AP_MODE + #define CONFIG_NATIVEAP_MLME 1 + #ifndef CONFIG_NATIVEAP_MLME + #define CONFIG_HOSTAPD_MLME 1 + #endif + #define CONFIG_FIND_BEST_CHANNEL 1 + //#define CONFIG_NO_WIRELESS_HANDLERS 1 +#endif + +// Added by Albert 20110314 +#define CONFIG_P2P 1 +#ifdef CONFIG_P2P + //Added by Albert 20110812 + //The CONFIG_WFD is for supporting the Wi-Fi display + #define CONFIG_WFD + + #ifndef CONFIG_WIFI_TEST + #define CONFIG_P2P_REMOVE_GROUP_INFO + #endif + //#define CONFIG_DBG_P2P + + //#define CONFIG_P2P_PS + //#define CONFIG_P2P_IPS + + #define P2P_OP_CHECK_SOCIAL_CH + // Added comment by Borg 2013/06/21 + // Issue: Nexus 4 is hard to do miracast. + // Root Cause: After group formation, + // Nexus 4 is possible to be not at OP channel of Invitation Resp/Nego Confirm but at social channel. + // Patch: While scan OP channel, + // not only scan OP channel of Invitation Resp/Nego Confirm, + // but also scan social channel(1, 6, 11) +#endif + +// Added by Kurt 20110511 +//#define CONFIG_TDLS 1 +#ifdef CONFIG_TDLS +// #ifndef CONFIG_WFD +// #define CONFIG_WFD 1 +// #endif +// #define CONFIG_TDLS_AUTOSETUP 1 +// #define CONFIG_TDLS_AUTOCHECKALIVE 1 +#endif + +#define CONFIG_SKB_COPY 1//for amsdu + +#define CONFIG_LED +#ifdef CONFIG_LED + #define CONFIG_SW_LED + #ifdef CONFIG_SW_LED + //#define CONFIG_LED_HANDLED_BY_CMD_THREAD + #endif +#endif // CONFIG_LED + + + +#define USB_INTERFERENCE_ISSUE // this should be checked in all usb interface +#define CONFIG_GLOBAL_UI_PID + +#define CONFIG_LAYER2_ROAMING +#define CONFIG_LAYER2_ROAMING_RESUME +//#define CONFIG_ADAPTOR_INFO_CACHING_FILE // now just applied on 8192cu only, should make it general... +//#define CONFIG_RESUME_IN_WORKQUEUE +//#define CONFIG_SET_SCAN_DENY_TIMER +#define CONFIG_LONG_DELAY_ISSUE +#define CONFIG_NEW_SIGNAL_STAT_PROCESS +//#define CONFIG_SIGNAL_DISPLAY_DBM //display RX signal with dbm +#define RTW_NOTCH_FILTER 0 /* 0:Disable, 1:Enable */ +#define CONFIG_DEAUTH_BEFORE_CONNECT + +#ifdef CONFIG_IOL + #define CONFIG_IOL_LLT + #define CONFIG_IOL_MAC + #define CONFIG_IOL_BB_PHY_REG + #define CONFIG_IOL_BB_AGC_TAB + #define CONFIG_IOL_RF_RF90_PATH_A + #define CONFIG_IOL_RF_RF90_PATH_B +#endif + +#define CONFIG_BR_EXT 1 // Enable NAT2.5 support for STA mode interface with a L2 Bridge +#ifdef CONFIG_BR_EXT +#define CONFIG_BR_EXT_BRNAME "br0" +#endif // CONFIG_BR_EXT + +#define CONFIG_TX_MCAST2UNI 1 // Support IP multicast->unicast +//#define CONFIG_DM_ADAPTIVITY +//#define CONFIG_CHECK_AC_LIFETIME 1 // Check packet lifetime of 4 ACs. + +//#define CONFIG_CONCURRENT_MODE 1 +#ifdef CONFIG_CONCURRENT_MODE + #define CONFIG_TSF_RESET_OFFLOAD 1 // For 2 PORT TSF SYNC. + //#define CONFIG_HWPORT_SWAP //Port0->Sec , Port1 -> Pri + //#define CONFIG_STA_MODE_SCAN_UNDER_AP_MODE + //#define CONFIG_MULTI_VIR_IFACES //besides primary&secondary interfaces, extend to support more interfaces +#endif // CONFIG_CONCURRENT_MODE + +#define CONFIG_80211D + +/* + * Interface Related Config + */ + +//#define CONFIG_USB_ONE_OUT_EP +//#define CONFIG_USB_INTERRUPT_IN_PIPE 1 + +#ifndef CONFIG_MINIMAL_MEMORY_USAGE + #define CONFIG_USB_TX_AGGREGATION 1 + #define CONFIG_USB_RX_AGGREGATION 1 +#endif + +#define CONFIG_PREALLOC_RECV_SKB 1 +//#define CONFIG_REDUCE_USB_TX_INT 1 // Trade-off: Improve performance, but may cause TX URBs blocked by USB Host/Bus driver on few platforms. +//#define CONFIG_EASY_REPLACEMENT 1 + +/* + * CONFIG_USE_USB_BUFFER_ALLOC_XX uses Linux USB Buffer alloc API and is for Linux platform only now! + */ +//#define CONFIG_USE_USB_BUFFER_ALLOC_TX 1 // Trade-off: For TX path, improve stability on some platforms, but may cause performance degrade on other platforms. +//#define CONFIG_USE_USB_BUFFER_ALLOC_RX 1 // For RX path +#ifdef CONFIG_USE_USB_BUFFER_ALLOC_RX +#undef CONFIG_PREALLOC_RECV_SKB +#endif + +/* + * USB VENDOR REQ BUFFER ALLOCATION METHOD + * if not set we'll use function local variable (stack memory) + */ +//#define CONFIG_USB_VENDOR_REQ_BUFFER_DYNAMIC_ALLOCATE +#define CONFIG_USB_VENDOR_REQ_BUFFER_PREALLOC + +#define CONFIG_USB_VENDOR_REQ_MUTEX +#define CONFIG_VENDOR_REQ_RETRY + +//#define CONFIG_USB_SUPPORT_ASYNC_VDN_REQ 1 + + +/* + * HAL Related Config + */ + +#define RTL8192C_RX_PACKET_NO_INCLUDE_CRC 1 + +#define SUPPORTED_BLOCK_IO + + + +#define RTL8192CU_FW_DOWNLOAD_ENABLE 1 + +#define CONFIG_ONLY_ONE_OUT_EP_TO_LOW 0 + +#define CONFIG_OUT_EP_WIFI_MODE 0 + +#define ENABLE_USB_DROP_INCORRECT_OUT 0 + +#define RTL8192CU_ASIC_VERIFICATION 0 // For ASIC verification. + +#define RTL8192CU_ADHOC_WORKAROUND_SETTING 1 + +#define DISABLE_BB_RF 0 + +#define RTL8191C_FPGA_NETWORKTYPE_ADHOC 0 + +#ifdef CONFIG_MP_INCLUDED + #define MP_DRIVER 1 + #undef CONFIG_USB_TX_AGGREGATION + #undef CONFIG_USB_RX_AGGREGATION +#else + #define MP_DRIVER 0 +#endif + + +/* + * Platform Related Config + */ +#ifdef CONFIG_PLATFORM_MN10300 +#define CONFIG_SPECIAL_SETTING_FOR_FUNAI_TV + +#if defined (CONFIG_SW_ANTENNA_DIVERSITY) + #undef CONFIG_SW_ANTENNA_DIVERSITY + #define CONFIG_HW_ANTENNA_DIVERSITY +#endif + +#endif + +#ifdef CONFIG_WISTRON_PLATFORM + +#endif + +#ifdef CONFIG_PLATFORM_TI_DM365 +#define CONFIG_USE_USB_BUFFER_ALLOC_RX 1 +#endif + +#define CONFIG_ATTEMPT_TO_FIX_AP_BEACON_ERROR + +/* + * Debug Related Config + */ +//#define CONFIG_DEBUG_RTL871X + +#define DBG 0 +//#define CONFIG_DEBUG_RTL819X + +//#define CONFIG_PROC_DEBUG 1 + +//#define DBG_IO +//#define DBG_DELAY_OS +//#define DBG_MEM_ALLOC +//#define DBG_IOCTL + +//#define DBG_TX +//#define DBG_XMIT_BUF +//#define DBG_TX_DROP_FRAME + +//#define DBG_RX_DROP_FRAME +//#define DBG_RX_SEQ +//#define DBG_RX_SIGNAL_DISPLAY_PROCESSING +//#define DBG_RX_SIGNAL_DISPLAY_SSID_MONITORED "jeff-ap" + +//#define DBG_EXPIRATION_CHK + + +//#define DBG_SHOW_MCUFWDL_BEFORE_51_ENABLE +//#define DBG_ROAMING_TEST + +//#define DBG_HAL_INIT_PROFILING + +//#define DBG_MEMORY_LEAK 1 + +#define DBG_CONFIG_ERROR_DETECT +//#define DBG_CONFIG_ERROR_RESET + +//TX use 1 urb +//#define CONFIG_SINGLE_XMIT_BUF +//RX use 1 urb +//#define CONFIG_SINGLE_RECV_BUF + +//turn off power tracking when traffic is busy +//#define CONFIG_BUSY_TRAFFIC_SKIP_PWR_TRACK --- linux-raspi2-4.2.0.orig/drivers/net/wireless/rtl8192cu/include/basic_types.h +++ linux-raspi2-4.2.0/drivers/net/wireless/rtl8192cu/include/basic_types.h @@ -0,0 +1,320 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved. + * + * 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 + * published by the Free Software Foundation. + * + * 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 Street, Fifth Floor, Boston, MA 02110, USA + * + * + ******************************************************************************/ +#ifndef __BASIC_TYPES_H__ +#define __BASIC_TYPES_H__ + +#include + + +#define SUCCESS 0 +#define FAIL (-1) + +#ifndef TRUE + #define _TRUE 1 +#else + #define _TRUE TRUE +#endif + +#ifndef FALSE + #define _FALSE 0 +#else + #define _FALSE FALSE +#endif + +#ifdef PLATFORM_WINDOWS + + typedef signed char s8; + typedef unsigned char u8; + + typedef signed short s16; + typedef unsigned short u16; + + typedef signed long s32; + typedef unsigned long u32; + + typedef unsigned int uint; + typedef signed int sint; + + + typedef signed long long s64; + typedef unsigned long long u64; + + #ifdef NDIS50_MINIPORT + + #define NDIS_MAJOR_VERSION 5 + #define NDIS_MINOR_VERSION 0 + + #endif + + #ifdef NDIS51_MINIPORT + + #define NDIS_MAJOR_VERSION 5 + #define NDIS_MINOR_VERSION 1 + + #endif + + typedef NDIS_PROC proc_t; + + typedef LONG atomic_t; + +#endif + + +#ifdef PLATFORM_LINUX + + #include + #define IN + #define OUT + #define VOID void + #define NDIS_OID uint + #define NDIS_STATUS uint + + typedef signed int sint; + + #ifndef PVOID + typedef void * PVOID; + //#define PVOID (void *) + #endif + + #define UCHAR u8 + #define USHORT u16 + #define UINT u32 + #define ULONG u32 + + typedef void (*proc_t)(void*); + + typedef __kernel_size_t SIZE_T; + typedef __kernel_ssize_t SSIZE_T; + #define FIELD_OFFSET(s,field) ((SSIZE_T)&((s*)(0))->field) + +#endif + + +#ifdef PLATFORM_FREEBSD + + typedef signed char s8; + typedef unsigned char u8; + + typedef signed short s16; + typedef unsigned short u16; + + typedef signed int s32; + typedef unsigned int u32; + + typedef unsigned int uint; + typedef signed int sint; + typedef long atomic_t; + + typedef signed long long s64; + typedef unsigned long long u64; + #define IN + #define OUT + #define VOID void + #define NDIS_OID uint + #define NDIS_STATUS uint + + #ifndef PVOID + typedef void * PVOID; + //#define PVOID (void *) + #endif + typedef u32 dma_addr_t; + #define UCHAR u8 + #define USHORT u16 + #define UINT u32 + #define ULONG u32 + + typedef void (*proc_t)(void*); + + typedef unsigned int __kernel_size_t; + typedef int __kernel_ssize_t; + + typedef __kernel_size_t SIZE_T; + typedef __kernel_ssize_t SSIZE_T; + #define FIELD_OFFSET(s,field) ((SSIZE_T)&((s*)(0))->field) + +#endif + +#define MEM_ALIGNMENT_OFFSET (sizeof (SIZE_T)) +#define MEM_ALIGNMENT_PADDING (sizeof(SIZE_T) - 1) + +#define SIZE_PTR SIZE_T +#define SSIZE_PTR SSIZE_T + +//port from fw by thomas +// TODO: Belows are Sync from SD7-Driver. It is necessary to check correctness + +/* + * Call endian free function when + * 1. Read/write packet content. + * 2. Before write integer to IO. + * 3. After read integer from IO. +*/ + +// +// Byte Swapping routine. +// +#define EF1Byte +#define EF2Byte le16_to_cpu +#define EF4Byte le32_to_cpu + +// +// Read LE format data from memory +// +#define ReadEF1Byte(_ptr) EF1Byte(*((u8 *)(_ptr))) +#define ReadEF2Byte(_ptr) EF2Byte(*((u16 *)(_ptr))) +#define ReadEF4Byte(_ptr) EF4Byte(*((u32 *)(_ptr))) + +// +// Write LE data to memory +// +#define WriteEF1Byte(_ptr, _val) (*((u8 *)(_ptr)))=EF1Byte(_val) +#define WriteEF2Byte(_ptr, _val) (*((u16 *)(_ptr)))=EF2Byte(_val) +#define WriteEF4Byte(_ptr, _val) (*((u32 *)(_ptr)))=EF4Byte(_val) + +// +// Example: +// BIT_LEN_MASK_32(0) => 0x00000000 +// BIT_LEN_MASK_32(1) => 0x00000001 +// BIT_LEN_MASK_32(2) => 0x00000003 +// BIT_LEN_MASK_32(32) => 0xFFFFFFFF +// +#define BIT_LEN_MASK_32(__BitLen) \ + (0xFFFFFFFF >> (32 - (__BitLen))) +// +// Example: +// BIT_OFFSET_LEN_MASK_32(0, 2) => 0x00000003 +// BIT_OFFSET_LEN_MASK_32(16, 2) => 0x00030000 +// +#define BIT_OFFSET_LEN_MASK_32(__BitOffset, __BitLen) \ + (BIT_LEN_MASK_32(__BitLen) << (__BitOffset)) + +// +// Description: +// Return 4-byte value in host byte ordering from +// 4-byte pointer in litten-endian system. +// +#define LE_P4BYTE_TO_HOST_4BYTE(__pStart) \ + (EF4Byte(*((u32 *)(__pStart)))) + +// +// Description: +// Translate subfield (continuous bits in little-endian) of 4-byte value in litten byte to +// 4-byte value in host byte ordering. +// +#define LE_BITS_TO_4BYTE(__pStart, __BitOffset, __BitLen) \ + ( \ + ( LE_P4BYTE_TO_HOST_4BYTE(__pStart) >> (__BitOffset) ) \ + & \ + BIT_LEN_MASK_32(__BitLen) \ + ) + +// +// Description: +// Mask subfield (continuous bits in little-endian) of 4-byte value in litten byte oredering +// and return the result in 4-byte value in host byte ordering. +// +#define LE_BITS_CLEARED_TO_4BYTE(__pStart, __BitOffset, __BitLen) \ + ( \ + LE_P4BYTE_TO_HOST_4BYTE(__pStart) \ + & \ + ( ~BIT_OFFSET_LEN_MASK_32(__BitOffset, __BitLen) ) \ + ) + +// +// Description: +// Set subfield of little-endian 4-byte value to specified value. +// +#define SET_BITS_TO_LE_4BYTE(__pStart, __BitOffset, __BitLen, __Value) \ + *((u32 *)(__pStart)) = \ + EF4Byte( \ + LE_BITS_CLEARED_TO_4BYTE(__pStart, __BitOffset, __BitLen) \ + | \ + ( (((u32)__Value) & BIT_LEN_MASK_32(__BitLen)) << (__BitOffset) ) \ + ); + + +#define BIT_LEN_MASK_16(__BitLen) \ + (0xFFFF >> (16 - (__BitLen))) + +#define BIT_OFFSET_LEN_MASK_16(__BitOffset, __BitLen) \ + (BIT_LEN_MASK_16(__BitLen) << (__BitOffset)) + +#define LE_P2BYTE_TO_HOST_2BYTE(__pStart) \ + (EF2Byte(*((u16 *)(__pStart)))) + +#define LE_BITS_TO_2BYTE(__pStart, __BitOffset, __BitLen) \ + ( \ + ( LE_P2BYTE_TO_HOST_2BYTE(__pStart) >> (__BitOffset) ) \ + & \ + BIT_LEN_MASK_16(__BitLen) \ + ) + +#define LE_BITS_CLEARED_TO_2BYTE(__pStart, __BitOffset, __BitLen) \ + ( \ + LE_P2BYTE_TO_HOST_2BYTE(__pStart) \ + & \ + ( ~BIT_OFFSET_LEN_MASK_16(__BitOffset, __BitLen) ) \ + ) + +#define SET_BITS_TO_LE_2BYTE(__pStart, __BitOffset, __BitLen, __Value) \ + *((u16 *)(__pStart)) = \ + EF2Byte( \ + LE_BITS_CLEARED_TO_2BYTE(__pStart, __BitOffset, __BitLen) \ + | \ + ( (((u16)__Value) & BIT_LEN_MASK_16(__BitLen)) << (__BitOffset) ) \ + ); + +#define BIT_LEN_MASK_8(__BitLen) \ + (0xFF >> (8 - (__BitLen))) + +#define BIT_OFFSET_LEN_MASK_8(__BitOffset, __BitLen) \ + (BIT_LEN_MASK_8(__BitLen) << (__BitOffset)) + +#define LE_P1BYTE_TO_HOST_1BYTE(__pStart) \ + (EF1Byte(*((u8 *)(__pStart)))) + +#define LE_BITS_TO_1BYTE(__pStart, __BitOffset, __BitLen) \ + ( \ + ( LE_P1BYTE_TO_HOST_1BYTE(__pStart) >> (__BitOffset) ) \ + & \ + BIT_LEN_MASK_8(__BitLen) \ + ) + +#define LE_BITS_CLEARED_TO_1BYTE(__pStart, __BitOffset, __BitLen) \ + ( \ + LE_P1BYTE_TO_HOST_1BYTE(__pStart) \ + & \ + ( ~BIT_OFFSET_LEN_MASK_8(__BitOffset, __BitLen) ) \ + ) + +#define SET_BITS_TO_LE_1BYTE(__pStart, __BitOffset, __BitLen, __Value) \ + *((u8 *)(__pStart)) = \ + EF1Byte( \ + LE_BITS_CLEARED_TO_1BYTE(__pStart, __BitOffset, __BitLen) \ + | \ + ( (((u8)__Value) & BIT_LEN_MASK_8(__BitLen)) << (__BitOffset) ) \ + ); + +// Get the N-bytes aligment offset from the current length +#define N_BYTE_ALIGMENT(__Value, __Aligment) ((__Aligment == 1) ? (__Value) : (((__Value + __Aligment - 1) / __Aligment) * __Aligment)) + +typedef unsigned char BOOLEAN,*PBOOLEAN; + +#endif //__BASIC_TYPES_H__ --- linux-raspi2-4.2.0.orig/drivers/net/wireless/rtl8192cu/include/byteorder/big_endian.h +++ linux-raspi2-4.2.0/drivers/net/wireless/rtl8192cu/include/byteorder/big_endian.h @@ -0,0 +1,87 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved. + * + * 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 + * published by the Free Software Foundation. + * + * 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 Street, Fifth Floor, Boston, MA 02110, USA + * + * + ******************************************************************************/ +#ifndef _LINUX_BYTEORDER_BIG_ENDIAN_H +#define _LINUX_BYTEORDER_BIG_ENDIAN_H + +#ifndef __BIG_ENDIAN +#define __BIG_ENDIAN 4321 +#endif +#ifndef __BIG_ENDIAN_BITFIELD +#define __BIG_ENDIAN_BITFIELD +#endif + +#include + +#define __constant_htonl(x) ((__u32)(x)) +#define __constant_ntohl(x) ((__u32)(x)) +#define __constant_htons(x) ((__u16)(x)) +#define __constant_ntohs(x) ((__u16)(x)) +#define __constant_cpu_to_le64(x) ___constant_swab64((x)) +#define __constant_le64_to_cpu(x) ___constant_swab64((x)) +#define __constant_cpu_to_le32(x) ___constant_swab32((x)) +#define __constant_le32_to_cpu(x) ___constant_swab32((x)) +#define __constant_cpu_to_le16(x) ___constant_swab16((x)) +#define __constant_le16_to_cpu(x) ___constant_swab16((x)) +#define __constant_cpu_to_be64(x) ((__u64)(x)) +#define __constant_be64_to_cpu(x) ((__u64)(x)) +#define __constant_cpu_to_be32(x) ((__u32)(x)) +#define __constant_be32_to_cpu(x) ((__u32)(x)) +#define __constant_cpu_to_be16(x) ((__u16)(x)) +#define __constant_be16_to_cpu(x) ((__u16)(x)) +#define __cpu_to_le64(x) __swab64((x)) +#define __le64_to_cpu(x) __swab64((x)) +#define __cpu_to_le32(x) __swab32((x)) +#define __le32_to_cpu(x) __swab32((x)) +#define __cpu_to_le16(x) __swab16((x)) +#define __le16_to_cpu(x) __swab16((x)) +#define __cpu_to_be64(x) ((__u64)(x)) +#define __be64_to_cpu(x) ((__u64)(x)) +#define __cpu_to_be32(x) ((__u32)(x)) +#define __be32_to_cpu(x) ((__u32)(x)) +#define __cpu_to_be16(x) ((__u16)(x)) +#define __be16_to_cpu(x) ((__u16)(x)) +#define __cpu_to_le64p(x) __swab64p((x)) +#define __le64_to_cpup(x) __swab64p((x)) +#define __cpu_to_le32p(x) __swab32p((x)) +#define __le32_to_cpup(x) __swab32p((x)) +#define __cpu_to_le16p(x) __swab16p((x)) +#define __le16_to_cpup(x) __swab16p((x)) +#define __cpu_to_be64p(x) (*(__u64*)(x)) +#define __be64_to_cpup(x) (*(__u64*)(x)) +#define __cpu_to_be32p(x) (*(__u32*)(x)) +#define __be32_to_cpup(x) (*(__u32*)(x)) +#define __cpu_to_be16p(x) (*(__u16*)(x)) +#define __be16_to_cpup(x) (*(__u16*)(x)) +#define __cpu_to_le64s(x) __swab64s((x)) +#define __le64_to_cpus(x) __swab64s((x)) +#define __cpu_to_le32s(x) __swab32s((x)) +#define __le32_to_cpus(x) __swab32s((x)) +#define __cpu_to_le16s(x) __swab16s((x)) +#define __le16_to_cpus(x) __swab16s((x)) +#define __cpu_to_be64s(x) do {} while (0) +#define __be64_to_cpus(x) do {} while (0) +#define __cpu_to_be32s(x) do {} while (0) +#define __be32_to_cpus(x) do {} while (0) +#define __cpu_to_be16s(x) do {} while (0) +#define __be16_to_cpus(x) do {} while (0) + +#include + +#endif /* _LINUX_BYTEORDER_BIG_ENDIAN_H */ --- linux-raspi2-4.2.0.orig/drivers/net/wireless/rtl8192cu/include/byteorder/generic.h +++ linux-raspi2-4.2.0/drivers/net/wireless/rtl8192cu/include/byteorder/generic.h @@ -0,0 +1,212 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved. + * + * 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 + * published by the Free Software Foundation. + * + * 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 Street, Fifth Floor, Boston, MA 02110, USA + * + * + ******************************************************************************/ +#ifndef _LINUX_BYTEORDER_GENERIC_H +#define _LINUX_BYTEORDER_GENERIC_H + +/* + * linux/byteorder_generic.h + * Generic Byte-reordering support + * + * Francois-Rene Rideau 19970707 + * gathered all the good ideas from all asm-foo/byteorder.h into one file, + * cleaned them up. + * I hope it is compliant with non-GCC compilers. + * I decided to put __BYTEORDER_HAS_U64__ in byteorder.h, + * because I wasn't sure it would be ok to put it in types.h + * Upgraded it to 2.1.43 + * Francois-Rene Rideau 19971012 + * Upgraded it to 2.1.57 + * to please Linus T., replaced huge #ifdef's between little/big endian + * by nestedly #include'd files. + * Francois-Rene Rideau 19971205 + * Made it to 2.1.71; now a facelift: + * Put files under include/linux/byteorder/ + * Split swab from generic support. + * + * TODO: + * = Regular kernel maintainers could also replace all these manual + * byteswap macros that remain, disseminated among drivers, + * after some grep or the sources... + * = Linus might want to rename all these macros and files to fit his taste, + * to fit his personal naming scheme. + * = it seems that a few drivers would also appreciate + * nybble swapping support... + * = every architecture could add their byteswap macro in asm/byteorder.h + * see how some architectures already do (i386, alpha, ppc, etc) + * = cpu_to_beXX and beXX_to_cpu might some day need to be well + * distinguished throughout the kernel. This is not the case currently, + * since little endian, big endian, and pdp endian machines needn't it. + * But this might be the case for, say, a port of Linux to 20/21 bit + * architectures (and F21 Linux addict around?). + */ + +/* + * The following macros are to be defined by : + * + * Conversion of long and short int between network and host format + * ntohl(__u32 x) + * ntohs(__u16 x) + * htonl(__u32 x) + * htons(__u16 x) + * It seems that some programs (which? where? or perhaps a standard? POSIX?) + * might like the above to be functions, not macros (why?). + * if that's true, then detect them, and take measures. + * Anyway, the measure is: define only ___ntohl as a macro instead, + * and in a separate file, have + * unsigned long inline ntohl(x){return ___ntohl(x);} + * + * The same for constant arguments + * __constant_ntohl(__u32 x) + * __constant_ntohs(__u16 x) + * __constant_htonl(__u32 x) + * __constant_htons(__u16 x) + * + * Conversion of XX-bit integers (16- 32- or 64-) + * between native CPU format and little/big endian format + * 64-bit stuff only defined for proper architectures + * cpu_to_[bl]eXX(__uXX x) + * [bl]eXX_to_cpu(__uXX x) + * + * The same, but takes a pointer to the value to convert + * cpu_to_[bl]eXXp(__uXX x) + * [bl]eXX_to_cpup(__uXX x) + * + * The same, but change in situ + * cpu_to_[bl]eXXs(__uXX x) + * [bl]eXX_to_cpus(__uXX x) + * + * See asm-foo/byteorder.h for examples of how to provide + * architecture-optimized versions + * + */ + + +#if defined(PLATFORM_LINUX) || defined(PLATFORM_WINDOWS) || defined(PLATFORM_MPIXEL) || defined(PLATFORM_FREEBSD) +/* + * inside the kernel, we can use nicknames; + * outside of it, we must avoid POSIX namespace pollution... + */ +#define cpu_to_le64 __cpu_to_le64 +#define le64_to_cpu __le64_to_cpu +#define cpu_to_le32 __cpu_to_le32 +#define le32_to_cpu __le32_to_cpu +#define cpu_to_le16 __cpu_to_le16 +#define le16_to_cpu __le16_to_cpu +#define cpu_to_be64 __cpu_to_be64 +#define be64_to_cpu __be64_to_cpu +#define cpu_to_be32 __cpu_to_be32 +#define be32_to_cpu __be32_to_cpu +#define cpu_to_be16 __cpu_to_be16 +#define be16_to_cpu __be16_to_cpu +#define cpu_to_le64p __cpu_to_le64p +#define le64_to_cpup __le64_to_cpup +#define cpu_to_le32p __cpu_to_le32p +#define le32_to_cpup __le32_to_cpup +#define cpu_to_le16p __cpu_to_le16p +#define le16_to_cpup __le16_to_cpup +#define cpu_to_be64p __cpu_to_be64p +#define be64_to_cpup __be64_to_cpup +#define cpu_to_be32p __cpu_to_be32p +#define be32_to_cpup __be32_to_cpup +#define cpu_to_be16p __cpu_to_be16p +#define be16_to_cpup __be16_to_cpup +#define cpu_to_le64s __cpu_to_le64s +#define le64_to_cpus __le64_to_cpus +#define cpu_to_le32s __cpu_to_le32s +#define le32_to_cpus __le32_to_cpus +#define cpu_to_le16s __cpu_to_le16s +#define le16_to_cpus __le16_to_cpus +#define cpu_to_be64s __cpu_to_be64s +#define be64_to_cpus __be64_to_cpus +#define cpu_to_be32s __cpu_to_be32s +#define be32_to_cpus __be32_to_cpus +#define cpu_to_be16s __cpu_to_be16s +#define be16_to_cpus __be16_to_cpus +#endif + + +/* + * Handle ntohl and suches. These have various compatibility + * issues - like we want to give the prototype even though we + * also have a macro for them in case some strange program + * wants to take the address of the thing or something.. + * + * Note that these used to return a "long" in libc5, even though + * long is often 64-bit these days.. Thus the casts. + * + * They have to be macros in order to do the constant folding + * correctly - if the argument passed into a inline function + * it is no longer constant according to gcc.. + */ + +#undef ntohl +#undef ntohs +#undef htonl +#undef htons + +/* + * Do the prototypes. Somebody might want to take the + * address or some such sick thing.. + */ +#if defined(PLATFORM_LINUX) || (defined (__GLIBC__) && __GLIBC__ >= 2) +extern __u32 ntohl(__u32); +extern __u32 htonl(__u32); +#else //defined(PLATFORM_LINUX) || (defined (__GLIBC__) && __GLIBC__ >= 2) +#ifndef PLATFORM_FREEBSD +extern unsigned long int ntohl(unsigned long int); +extern unsigned long int htonl(unsigned long int); +#endif +#endif +#ifndef PLATFORM_FREEBSD +extern unsigned short int ntohs(unsigned short int); +extern unsigned short int htons(unsigned short int); +#endif + +#if defined(__GNUC__) && (__GNUC__ >= 2) && defined(__OPTIMIZE__) || defined(PLATFORM_MPIXEL) + +#define ___htonl(x) __cpu_to_be32(x) +#define ___htons(x) __cpu_to_be16(x) +#define ___ntohl(x) __be32_to_cpu(x) +#define ___ntohs(x) __be16_to_cpu(x) + +#if defined(PLATFORM_LINUX) || (defined (__GLIBC__) && __GLIBC__ >= 2) +#define htonl(x) ___htonl(x) +#define ntohl(x) ___ntohl(x) +#else +#define htonl(x) ((unsigned long)___htonl(x)) +#define ntohl(x) ((unsigned long)___ntohl(x)) +#endif +#define htons(x) ___htons(x) +#define ntohs(x) ___ntohs(x) + +#endif /* OPTIMIZE */ + + +#if defined (PLATFORM_WINDOWS) + +#define htonl(x) __cpu_to_be32(x) +#define ntohl(x) __be32_to_cpu(x) +#define htons(x) __cpu_to_be16(x) +#define ntohs(x) __be16_to_cpu(x) + + +#endif + +#endif /* _LINUX_BYTEORDER_GENERIC_H */ --- linux-raspi2-4.2.0.orig/drivers/net/wireless/rtl8192cu/include/byteorder/little_endian.h +++ linux-raspi2-4.2.0/drivers/net/wireless/rtl8192cu/include/byteorder/little_endian.h @@ -0,0 +1,89 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved. + * + * 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 + * published by the Free Software Foundation. + * + * 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 Street, Fifth Floor, Boston, MA 02110, USA + * + * + ******************************************************************************/ +#ifndef _LINUX_BYTEORDER_LITTLE_ENDIAN_H +#define _LINUX_BYTEORDER_LITTLE_ENDIAN_H + +#ifndef __LITTLE_ENDIAN +#define __LITTLE_ENDIAN 1234 +#endif +#ifndef __LITTLE_ENDIAN_BITFIELD +#define __LITTLE_ENDIAN_BITFIELD +#endif + +#include + +#ifndef __constant_htonl +#define __constant_htonl(x) ___constant_swab32((x)) +#define __constant_ntohl(x) ___constant_swab32((x)) +#define __constant_htons(x) ___constant_swab16((x)) +#define __constant_ntohs(x) ___constant_swab16((x)) +#define __constant_cpu_to_le64(x) ((__u64)(x)) +#define __constant_le64_to_cpu(x) ((__u64)(x)) +#define __constant_cpu_to_le32(x) ((__u32)(x)) +#define __constant_le32_to_cpu(x) ((__u32)(x)) +#define __constant_cpu_to_le16(x) ((__u16)(x)) +#define __constant_le16_to_cpu(x) ((__u16)(x)) +#define __constant_cpu_to_be64(x) ___constant_swab64((x)) +#define __constant_be64_to_cpu(x) ___constant_swab64((x)) +#define __constant_cpu_to_be32(x) ___constant_swab32((x)) +#define __constant_be32_to_cpu(x) ___constant_swab32((x)) +#define __constant_cpu_to_be16(x) ___constant_swab16((x)) +#define __constant_be16_to_cpu(x) ___constant_swab16((x)) +#define __cpu_to_le64(x) ((__u64)(x)) +#define __le64_to_cpu(x) ((__u64)(x)) +#define __cpu_to_le32(x) ((__u32)(x)) +#define __le32_to_cpu(x) ((__u32)(x)) +#define __cpu_to_le16(x) ((__u16)(x)) +#define __le16_to_cpu(x) ((__u16)(x)) +#define __cpu_to_be64(x) __swab64((x)) +#define __be64_to_cpu(x) __swab64((x)) +#define __cpu_to_be32(x) __swab32((x)) +#define __be32_to_cpu(x) __swab32((x)) +#define __cpu_to_be16(x) __swab16((x)) +#define __be16_to_cpu(x) __swab16((x)) +#define __cpu_to_le64p(x) (*(__u64*)(x)) +#define __le64_to_cpup(x) (*(__u64*)(x)) +#define __cpu_to_le32p(x) (*(__u32*)(x)) +#define __le32_to_cpup(x) (*(__u32*)(x)) +#define __cpu_to_le16p(x) (*(__u16*)(x)) +#define __le16_to_cpup(x) (*(__u16*)(x)) +#define __cpu_to_be64p(x) __swab64p((x)) +#define __be64_to_cpup(x) __swab64p((x)) +#define __cpu_to_be32p(x) __swab32p((x)) +#define __be32_to_cpup(x) __swab32p((x)) +#define __cpu_to_be16p(x) __swab16p((x)) +#define __be16_to_cpup(x) __swab16p((x)) +#define __cpu_to_le64s(x) do {} while (0) +#define __le64_to_cpus(x) do {} while (0) +#define __cpu_to_le32s(x) do {} while (0) +#define __le32_to_cpus(x) do {} while (0) +#define __cpu_to_le16s(x) do {} while (0) +#define __le16_to_cpus(x) do {} while (0) +#define __cpu_to_be64s(x) __swab64s((x)) +#define __be64_to_cpus(x) __swab64s((x)) +#define __cpu_to_be32s(x) __swab32s((x)) +#define __be32_to_cpus(x) __swab32s((x)) +#define __cpu_to_be16s(x) __swab16s((x)) +#define __be16_to_cpus(x) __swab16s((x)) +#endif // __constant_htonl + +#include + +#endif /* _LINUX_BYTEORDER_LITTLE_ENDIAN_H */ --- linux-raspi2-4.2.0.orig/drivers/net/wireless/rtl8192cu/include/byteorder/swab.h +++ linux-raspi2-4.2.0/drivers/net/wireless/rtl8192cu/include/byteorder/swab.h @@ -0,0 +1,140 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved. + * + * 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 + * published by the Free Software Foundation. + * + * 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 Street, Fifth Floor, Boston, MA 02110, USA + * + * + ******************************************************************************/ +#ifndef _LINUX_BYTEORDER_SWAB_H +#define _LINUX_BYTEORDER_SWAB_H + +#if !defined(CONFIG_PLATFORM_MSTAR) +#ifndef __u16 +typedef unsigned short __u16; +#endif + +#ifndef __u32 +typedef unsigned int __u32; +#endif + +#ifndef __u8 +typedef unsigned char __u8; +#endif + +#ifndef __u64 +typedef unsigned long long __u64; +#endif + + +__inline static __u16 ___swab16(__u16 x) +{ + __u16 __x = x; + return + ((__u16)( + (((__u16)(__x) & (__u16)0x00ffU) << 8) | + (((__u16)(__x) & (__u16)0xff00U) >> 8) )); + +} + +__inline static __u32 ___swab32(__u32 x) +{ + __u32 __x = (x); + return ((__u32)( + (((__u32)(__x) & (__u32)0x000000ffUL) << 24) | + (((__u32)(__x) & (__u32)0x0000ff00UL) << 8) | + (((__u32)(__x) & (__u32)0x00ff0000UL) >> 8) | + (((__u32)(__x) & (__u32)0xff000000UL) >> 24) )); +} + +__inline static __u64 ___swab64(__u64 x) +{ + __u64 __x = (x); + + return + ((__u64)( \ + (__u64)(((__u64)(__x) & (__u64)0x00000000000000ffULL) << 56) | \ + (__u64)(((__u64)(__x) & (__u64)0x000000000000ff00ULL) << 40) | \ + (__u64)(((__u64)(__x) & (__u64)0x0000000000ff0000ULL) << 24) | \ + (__u64)(((__u64)(__x) & (__u64)0x00000000ff000000ULL) << 8) | \ + (__u64)(((__u64)(__x) & (__u64)0x000000ff00000000ULL) >> 8) | \ + (__u64)(((__u64)(__x) & (__u64)0x0000ff0000000000ULL) >> 24) | \ + (__u64)(((__u64)(__x) & (__u64)0x00ff000000000000ULL) >> 40) | \ + (__u64)(((__u64)(__x) & (__u64)0xff00000000000000ULL) >> 56) )); \ +} +#endif // CONFIG_PLATFORM_MSTAR + +#ifndef __arch__swab16 +__inline static __u16 __arch__swab16(__u16 x) +{ + return ___swab16(x); +} + +#endif + +#ifndef __arch__swab32 +__inline static __u32 __arch__swab32(__u32 x) +{ + __u32 __tmp = (x) ; + return ___swab32(__tmp); +} +#endif + +#ifndef __arch__swab64 + +__inline static __u64 __arch__swab64(__u64 x) +{ + __u64 __tmp = (x) ; + return ___swab64(__tmp); +} + + +#endif + +#ifndef __swab16 +#define __swab16(x) __fswab16(x) +#define __swab32(x) __fswab32(x) +#define __swab64(x) __fswab64(x) +#endif // __swab16 + +#ifdef PLATFORM_FREEBSD +__inline static __u16 __fswab16(__u16 x) +#else +__inline static const __u16 __fswab16(__u16 x) +#endif //PLATFORM_FREEBSD +{ + return __arch__swab16(x); +} +#ifdef PLATFORM_FREEBSD +__inline static __u32 __fswab32(__u32 x) +#else +__inline static const __u32 __fswab32(__u32 x) +#endif //PLATFORM_FREEBSD +{ + return __arch__swab32(x); +} + +#if defined(PLATFORM_LINUX) || defined(PLATFORM_WINDOWS) +#define swab16 __swab16 +#define swab32 __swab32 +#define swab64 __swab64 +#define swab16p __swab16p +#define swab32p __swab32p +#define swab64p __swab64p +#define swab16s __swab16s +#define swab32s __swab32s +#define swab64s __swab64s +#endif + +#endif /* _LINUX_BYTEORDER_SWAB_H */ --- linux-raspi2-4.2.0.orig/drivers/net/wireless/rtl8192cu/include/byteorder/swabb.h +++ linux-raspi2-4.2.0/drivers/net/wireless/rtl8192cu/include/byteorder/swabb.h @@ -0,0 +1,156 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved. + * + * 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 + * published by the Free Software Foundation. + * + * 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 Street, Fifth Floor, Boston, MA 02110, USA + * + * + ******************************************************************************/ +#ifndef _LINUX_BYTEORDER_SWABB_H +#define _LINUX_BYTEORDER_SWABB_H + +/* + * linux/byteorder/swabb.h + * SWAp Bytes Bizarrely + * swaHHXX[ps]?(foo) + * + * Support for obNUXIous pdp-endian and other bizarre architectures. + * Will Linux ever run on such ancient beasts? if not, this file + * will be but a programming pearl. Still, it's a reminder that we + * shouldn't be making too many assumptions when trying to be portable. + * + */ + +/* + * Meaning of the names I chose (vaxlinux people feel free to correct them): + * swahw32 swap 16-bit half-words in a 32-bit word + * swahb32 swap 8-bit halves of each 16-bit half-word in a 32-bit word + * + * No 64-bit support yet. I don't know NUXI conventions for long longs. + * I guarantee it will be a mess when it's there, though :-> + * It will be even worse if there are conflicting 64-bit conventions. + * Hopefully, no one ever used 64-bit objects on NUXI machines. + * + */ + +#define ___swahw32(x) \ +({ \ + __u32 __x = (x); \ + ((__u32)( \ + (((__u32)(__x) & (__u32)0x0000ffffUL) << 16) | \ + (((__u32)(__x) & (__u32)0xffff0000UL) >> 16) )); \ +}) +#define ___swahb32(x) \ +({ \ + __u32 __x = (x); \ + ((__u32)( \ + (((__u32)(__x) & (__u32)0x00ff00ffUL) << 8) | \ + (((__u32)(__x) & (__u32)0xff00ff00UL) >> 8) )); \ +}) + +#define ___constant_swahw32(x) \ + ((__u32)( \ + (((__u32)(x) & (__u32)0x0000ffffUL) << 16) | \ + (((__u32)(x) & (__u32)0xffff0000UL) >> 16) )) +#define ___constant_swahb32(x) \ + ((__u32)( \ + (((__u32)(x) & (__u32)0x00ff00ffUL) << 8) | \ + (((__u32)(x) & (__u32)0xff00ff00UL) >> 8) )) + +/* + * provide defaults when no architecture-specific optimization is detected + */ +#ifndef __arch__swahw32 +# define __arch__swahw32(x) ___swahw32(x) +#endif +#ifndef __arch__swahb32 +# define __arch__swahb32(x) ___swahb32(x) +#endif + +#ifndef __arch__swahw32p +# define __arch__swahw32p(x) __swahw32(*(x)) +#endif +#ifndef __arch__swahb32p +# define __arch__swahb32p(x) __swahb32(*(x)) +#endif + +#ifndef __arch__swahw32s +# define __arch__swahw32s(x) do { *(x) = __swahw32p((x)); } while (0) +#endif +#ifndef __arch__swahb32s +# define __arch__swahb32s(x) do { *(x) = __swahb32p((x)); } while (0) +#endif + + +/* + * Allow constant folding + */ +#if defined(__GNUC__) && (__GNUC__ >= 2) && defined(__OPTIMIZE__) +# define __swahw32(x) \ +(__builtin_constant_p((__u32)(x)) ? \ + ___swahw32((x)) : \ + __fswahw32((x))) +# define __swahb32(x) \ +(__builtin_constant_p((__u32)(x)) ? \ + ___swahb32((x)) : \ + __fswahb32((x))) +#else +# define __swahw32(x) __fswahw32(x) +# define __swahb32(x) __fswahb32(x) +#endif /* OPTIMIZE */ + + +__inline static__ __const__ __u32 __fswahw32(__u32 x) +{ + return __arch__swahw32(x); +} +__inline static__ __u32 __swahw32p(__u32 *x) +{ + return __arch__swahw32p(x); +} +__inline static__ void __swahw32s(__u32 *addr) +{ + __arch__swahw32s(addr); +} + + +__inline static__ __const__ __u32 __fswahb32(__u32 x) +{ + return __arch__swahb32(x); +} +__inline static__ __u32 __swahb32p(__u32 *x) +{ + return __arch__swahb32p(x); +} +__inline static__ void __swahb32s(__u32 *addr) +{ + __arch__swahb32s(addr); +} + +#ifdef __BYTEORDER_HAS_U64__ +/* + * Not supported yet + */ +#endif /* __BYTEORDER_HAS_U64__ */ + +#if defined(PLATFORM_LINUX) +#define swahw32 __swahw32 +#define swahb32 __swahb32 +#define swahw32p __swahw32p +#define swahb32p __swahb32p +#define swahw32s __swahw32s +#define swahb32s __swahb32s +#endif + +#endif /* _LINUX_BYTEORDER_SWABB_H */ --- linux-raspi2-4.2.0.orig/drivers/net/wireless/rtl8192cu/include/circ_buf.h +++ linux-raspi2-4.2.0/drivers/net/wireless/rtl8192cu/include/circ_buf.h @@ -0,0 +1,27 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved. + * + * 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 + * published by the Free Software Foundation. + * + * 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 Street, Fifth Floor, Boston, MA 02110, USA + * + * + ******************************************************************************/ +#ifndef __CIRC_BUF_H_ +#define __CIRC_BUF_H_ 1 + +#define CIRC_CNT(head,tail,size) (((head) - (tail)) & ((size)-1)) + +#define CIRC_SPACE(head,tail,size) CIRC_CNT((tail),((head)+1),(size)) + +#endif //_CIRC_BUF_H_ --- linux-raspi2-4.2.0.orig/drivers/net/wireless/rtl8192cu/include/cmd_osdep.h +++ linux-raspi2-4.2.0/drivers/net/wireless/rtl8192cu/include/cmd_osdep.h @@ -0,0 +1,35 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved. + * + * 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 + * published by the Free Software Foundation. + * + * 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 Street, Fifth Floor, Boston, MA 02110, USA + * + * + ******************************************************************************/ +#ifndef __CMD_OSDEP_H_ +#define __CMD_OSDEP_H_ + + +#include +#include +#include + +extern sint _rtw_init_cmd_priv (struct cmd_priv *pcmdpriv); +extern sint _rtw_init_evt_priv(struct evt_priv *pevtpriv); +extern void _rtw_free_evt_priv (struct evt_priv *pevtpriv); +extern void _rtw_free_cmd_priv (struct cmd_priv *pcmdpriv); +extern sint _rtw_enqueue_cmd(_queue *queue, struct cmd_obj *obj); +extern struct cmd_obj *_rtw_dequeue_cmd(_queue *queue); + +#endif --- linux-raspi2-4.2.0.orig/drivers/net/wireless/rtl8192cu/include/drv_conf.h +++ linux-raspi2-4.2.0/drivers/net/wireless/rtl8192cu/include/drv_conf.h @@ -0,0 +1,77 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved. + * + * 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 + * published by the Free Software Foundation. + * + * 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 Street, Fifth Floor, Boston, MA 02110, USA + * + * + ******************************************************************************/ +#ifndef __DRV_CONF_H__ +#define __DRV_CONF_H__ +#include "autoconf.h" + +#if defined (PLATFORM_LINUX) && defined (PLATFORM_WINDOWS) + +#error "Shall be Linux or Windows, but not both!\n" + +#endif + +//Older Android kernel doesn't has CONFIG_ANDROID defined, +//add this to force CONFIG_ANDROID defined +#ifdef CONFIG_PLATFORM_ANDROID +#define CONFIG_ANDROID +#endif + +#ifdef CONFIG_ANDROID +//Some Android build will restart the UI while non-printable ascii is passed +//between java and c/c++ layer (JNI). We force CONFIG_VALIDATE_SSID +//for Android here. If you are sure there is no risk on your system about this, +//mask this macro define to support non-printable ascii ssid. +//#define CONFIG_VALIDATE_SSID + +//Android expect dbm as the rx signal strength unit +#define CONFIG_SIGNAL_DISPLAY_DBM +#endif + +#if defined(CONFIG_HAS_EARLYSUSPEND) && defined (CONFIG_RESUME_IN_WORKQUEUE) + #warning "You have CONFIG_HAS_EARLYSUSPEND enabled in your system, we disable CONFIG_RESUME_IN_WORKQUEUE automatically" + #undef CONFIG_RESUME_IN_WORKQUEUE +#endif + +#if defined(CONFIG_ANDROID_POWER) && defined (CONFIG_RESUME_IN_WORKQUEUE) + #warning "You have CONFIG_ANDROID_POWER enabled in your system, we disable CONFIG_RESUME_IN_WORKQUEUE automatically" + #undef CONFIG_RESUME_IN_WORKQUEUE +#endif + +#ifdef CONFIG_RESUME_IN_WORKQUEUE //this can be removed, because there is no case for this... + #if !defined( CONFIG_WAKELOCK) && !defined(CONFIG_ANDROID_POWER) + #error "enable CONFIG_RESUME_IN_WORKQUEUE without CONFIG_WAKELOCK or CONFIG_ANDROID_POWER will suffer from the danger of wifi's unfunctionality..." + #error "If you still want to enable CONFIG_RESUME_IN_WORKQUEUE in this case, mask this preprossor checking and GOOD LUCK..." + #endif +#endif + +//About USB VENDOR REQ +#if defined(CONFIG_USB_VENDOR_REQ_BUFFER_PREALLOC) && !defined(CONFIG_USB_VENDOR_REQ_MUTEX) + #warning "define CONFIG_USB_VENDOR_REQ_MUTEX for CONFIG_USB_VENDOR_REQ_BUFFER_PREALLOC automatically" + #define CONFIG_USB_VENDOR_REQ_MUTEX +#endif +#if defined(CONFIG_VENDOR_REQ_RETRY) && !defined(CONFIG_USB_VENDOR_REQ_MUTEX) + #warning "define CONFIG_USB_VENDOR_REQ_MUTEX for CONFIG_VENDOR_REQ_RETRY automatically" + #define CONFIG_USB_VENDOR_REQ_MUTEX +#endif + + +//#include + +#endif // __DRV_CONF_H__ --- linux-raspi2-4.2.0.orig/drivers/net/wireless/rtl8192cu/include/drv_types.h +++ linux-raspi2-4.2.0/drivers/net/wireless/rtl8192cu/include/drv_types.h @@ -0,0 +1,661 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved. + * + * 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 + * published by the Free Software Foundation. + * + * 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 Street, Fifth Floor, Boston, MA 02110, USA + * + * + ******************************************************************************/ +/*------------------------------------------------------------------------------- + + For type defines and data structure defines + +--------------------------------------------------------------------------------*/ + + +#ifndef __DRV_TYPES_H__ +#define __DRV_TYPES_H__ + +#include +#include +#include + + +#ifdef PLATFORM_OS_XP +#include +#endif + +#ifdef PLATFORM_OS_CE +#include +#endif + +#ifdef PLATFORM_LINUX +#include +#endif + +enum _NIC_VERSION { + + RTL8711_NIC, + RTL8712_NIC, + RTL8713_NIC, + RTL8716_NIC + +}; + +enum{ + UP_LINK, + DOWN_LINK, +}; +typedef struct _ADAPTER _adapter, ADAPTER,*PADAPTER; + +#ifdef CONFIG_80211N_HT +#include +#endif + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#ifdef CONFIG_DRVEXT_MODULE +#include +#endif + +#ifdef CONFIG_MP_INCLUDED +#include +#endif + +#ifdef CONFIG_BR_EXT +#include +#endif // CONFIG_BR_EXT + +#ifdef CONFIG_IOCTL_CFG80211 + #include "ioctl_cfg80211.h" +#endif //CONFIG_IOCTL_CFG80211 + +#define SPEC_DEV_ID_NONE BIT(0) +#define SPEC_DEV_ID_DISABLE_HT BIT(1) +#define SPEC_DEV_ID_ENABLE_PS BIT(2) +#define SPEC_DEV_ID_RF_CONFIG_1T1R BIT(3) +#define SPEC_DEV_ID_RF_CONFIG_2T2R BIT(4) +#define SPEC_DEV_ID_ASSIGN_IFNAME BIT(5) + +struct specific_device_id{ + + u32 flags; + + u16 idVendor; + u16 idProduct; + +}; + +struct registry_priv +{ + u8 chip_version; + u8 rfintfs; + u8 lbkmode; + u8 hci; + NDIS_802_11_SSID ssid; + u8 network_mode; //infra, ad-hoc, auto + u8 channel;//ad-hoc support requirement + u8 wireless_mode;//A, B, G, auto + u8 scan_mode;//active, passive + u8 radio_enable; + u8 preamble;//long, short, auto + u8 vrtl_carrier_sense;//Enable, Disable, Auto + u8 vcs_type;//RTS/CTS, CTS-to-self + u16 rts_thresh; + u16 frag_thresh; + u8 adhoc_tx_pwr; + u8 soft_ap; + u8 power_mgnt; + u8 ips_mode; + u8 smart_ps; + u8 long_retry_lmt; + u8 short_retry_lmt; + u16 busy_thresh; + u8 ack_policy; + u8 mp_mode; + u8 software_encrypt; + u8 software_decrypt; + + u8 acm_method; + //UAPSD + u8 wmm_enable; + u8 uapsd_enable; + u8 uapsd_max_sp; + u8 uapsd_acbk_en; + u8 uapsd_acbe_en; + u8 uapsd_acvi_en; + u8 uapsd_acvo_en; + + WLAN_BSSID_EX dev_network; + +#ifdef CONFIG_80211N_HT + u8 ht_enable; + u8 cbw40_enable; + u8 ampdu_enable;//for tx + u8 rx_stbc; + u8 ampdu_amsdu;//A-MPDU Supports A-MSDU is permitted +#endif + u8 lowrate_two_xmit; + + u8 rf_config ; + u8 low_power ; + + u8 wifi_spec;// !turbo_mode + + u8 channel_plan; +#ifdef CONFIG_BT_COEXIST + u8 bt_iso; + u8 bt_sco; + u8 bt_ampdu; +#endif + BOOLEAN bAcceptAddbaReq; + + u8 antdiv_cfg; + + u8 usbss_enable;//0:disable,1:enable + u8 hwpdn_mode;//0:disable,1:enable,2:decide by EFUSE config + u8 hwpwrp_detect;//0:disable,1:enable + + u8 hw_wps_pbc;//0:disable,1:enable + +#ifdef CONFIG_ADAPTOR_INFO_CACHING_FILE + char adaptor_info_caching_file_path[PATH_LENGTH_MAX]; +#endif + +#ifdef CONFIG_LAYER2_ROAMING + u8 max_roaming_times; // the max number driver will try to roaming +#endif + +#ifdef CONFIG_IOL + bool force_iol; //enable iol without other concern +#endif + u8 special_rf_path; //0: 2T2R ,1: only turn on path A 1T1R, 2: only turn on path B 1T1R + u8 mac_phy_mode; //0:by efuse, 1:smsp, 2:dmdp, 3:dmsp. + +#ifdef CONFIG_80211D + u8 enable80211d; +#endif + + u8 ifname[16]; + u8 if2name[16]; + + u8 notch_filter; + +#ifdef CONFIG_MULTI_VIR_IFACES + u8 ext_iface_num;//primary/secondary iface is excluded +#endif +}; + + +//For registry parameters +#define RGTRY_OFT(field) ((ULONG)FIELD_OFFSET(struct registry_priv,field)) +#define RGTRY_SZ(field) sizeof(((struct registry_priv*) 0)->field) +#define BSSID_OFT(field) ((ULONG)FIELD_OFFSET(WLAN_BSSID_EX,field)) +#define BSSID_SZ(field) sizeof(((PWLAN_BSSID_EX) 0)->field) + +#define MAX_CONTINUAL_URB_ERR 4 + +#ifdef CONFIG_SDIO_HCI +#include +#define INTF_DATA SDIO_DATA +#endif + +#define GET_PRIMARY_ADAPTER(padapter) (((_adapter *)padapter)->dvobj->if1) + +#define GET_IFACE_NUMS(padapter) (((_adapter *)padapter)->dvobj->iface_nums) +#define GET_ADAPTER(padapter, iface_id) (((_adapter *)padapter)->dvobj->padapters[iface_id]) + +enum _IFACE_ID { + IFACE_ID0, //maping to PRIMARY_ADAPTER + IFACE_ID1, //maping to SECONDARY_ADAPTER + IFACE_ID2, + IFACE_ID3, + IFACE_ID_MAX, +}; + +struct dvobj_priv +{ + _adapter *if1; //PRIMARY_ADAPTER + _adapter *if2; //SECONDARY_ADAPTER + + s32 processing_dev_remove; + + //for local/global synchronization + _mutex hw_init_mutex; + _mutex h2c_fwcmd_mutex; + _mutex setch_mutex; + _mutex setbw_mutex; + + unsigned char oper_channel; //saved channel info when call set_channel_bw + unsigned char oper_bwmode; + unsigned char oper_ch_offset;//PRIME_CHNL_OFFSET + u32 on_oper_ch_time; + + //extend to support mulitu interface + //padapters[IFACE_ID0] == if1 + //padapters[IFACE_ID1] == if2 + _adapter *padapters[IFACE_ID_MAX]; + u8 iface_nums; // total number of ifaces used runtime + + //For 92D, DMDP have 2 interface. + u8 InterfaceNumber; + u8 NumInterfaces; + u8 DualMacMode; + u8 irq_alloc; + +/*-------- below is for SDIO INTERFACE --------*/ + +#ifdef INTF_DATA + INTF_DATA intf_data; +#endif + +/*-------- below is for USB INTERFACE --------*/ + +#ifdef CONFIG_USB_HCI + + u8 nr_endpoint; + u8 ishighspeed; + u8 RtNumInPipes; + u8 RtNumOutPipes; + int ep_num[5]; //endpoint number + + int RegUsbSS; + + _sema usb_suspend_sema; + +#ifdef CONFIG_USB_VENDOR_REQ_MUTEX + _mutex usb_vendor_req_mutex; +#endif + +#ifdef CONFIG_USB_VENDOR_REQ_BUFFER_PREALLOC + u8 * usb_alloc_vendor_req_buf; + u8 * usb_vendor_req_buf; +#endif + +#ifdef PLATFORM_WINDOWS + //related device objects + PDEVICE_OBJECT pphysdevobj;//pPhysDevObj; + PDEVICE_OBJECT pfuncdevobj;//pFuncDevObj; + PDEVICE_OBJECT pnextdevobj;//pNextDevObj; + + u8 nextdevstacksz;//unsigned char NextDeviceStackSize; //= (CHAR)CEdevice->pUsbDevObj->StackSize + 1; + + //urb for control diescriptor request + +#ifdef PLATFORM_OS_XP + struct _URB_CONTROL_DESCRIPTOR_REQUEST descriptor_urb; + PUSB_CONFIGURATION_DESCRIPTOR pconfig_descriptor;//UsbConfigurationDescriptor; +#endif + +#ifdef PLATFORM_OS_CE + WCHAR active_path[MAX_ACTIVE_REG_PATH]; // adapter regpath + USB_EXTENSION usb_extension; + + _nic_hdl pipehdls_r8192c[0x10]; +#endif + + u32 config_descriptor_len;//ULONG UsbConfigurationDescriptorLength; +#endif//PLATFORM_WINDOWS + +#ifdef PLATFORM_LINUX + struct usb_interface *pusbintf; + struct usb_device *pusbdev; +#endif//PLATFORM_LINUX + +#ifdef PLATFORM_FREEBSD + struct usb_interface *pusbintf; + struct usb_device *pusbdev; +#endif//PLATFORM_FREEBSD + ATOMIC_T continual_urb_error; +#endif//CONFIG_USB_HCI + +/*-------- below is for PCIE INTERFACE --------*/ + +#ifdef CONFIG_PCI_HCI + +#ifdef PLATFORM_LINUX + struct pci_dev *ppcidev; + + //PCI MEM map + unsigned long pci_mem_end; /* shared mem end */ + unsigned long pci_mem_start; /* shared mem start */ + + //PCI IO map + unsigned long pci_base_addr; /* device I/O address */ + + //PciBridge + struct pci_priv pcipriv; + + u16 irqline; + u8 irq_enabled; + RT_ISR_CONTENT isr_content; + _lock irq_th_lock; + + //ASPM + u8 const_pci_aspm; + u8 const_amdpci_aspm; + u8 const_hwsw_rfoff_d3; + u8 const_support_pciaspm; + // pci-e bridge */ + u8 const_hostpci_aspm_setting; + // pci-e device */ + u8 const_devicepci_aspm_setting; + u8 b_support_aspm; // If it supports ASPM, Offset[560h] = 0x40, otherwise Offset[560h] = 0x00. + u8 b_support_backdoor; + u8 bdma64; +#endif//PLATFORM_LINUX + +#endif//CONFIG_PCI_HCI +}; + +#ifdef PLATFORM_LINUX +static struct device *dvobj_to_dev(struct dvobj_priv *dvobj) +{ + /* todo: get interface type from dvobj and the return the dev accordingly */ +#ifdef RTW_DVOBJ_CHIP_HW_TYPE +#endif + +#ifdef CONFIG_USB_HCI + return &dvobj->pusbintf->dev; +#endif +#ifdef CONFIG_SDIO_HCI + return &dvobj->intf_data.func->dev; +#endif +#ifdef CONFIG_PCI_HCI + return &dvobj->ppcidev->dev; +#endif +} +#endif + + +enum _IFACE_TYPE { + IFACE_PORT0, //mapping to port0 for C/D series chips + IFACE_PORT1, //mapping to port1 for C/D series chip + MAX_IFACE_PORT, +}; + +enum _ADAPTER_TYPE { + PRIMARY_ADAPTER, + SECONDARY_ADAPTER, + MAX_ADAPTER = 0xFF, +}; + +typedef enum _DRIVER_STATE{ + DRIVER_NORMAL = 0, + DRIVER_DISAPPEAR = 1, + DRIVER_REPLACE_DONGLE = 2, +}DRIVER_STATE; + +#ifdef CONFIG_INTEL_PROXIM +struct proxim { + bool proxim_support; + bool proxim_on; + + void *proximity_priv; + int (*proxim_rx)(_adapter *padapter, + union recv_frame *precv_frame); + u8 (*proxim_get_var)(_adapter* padapter, u8 type); +}; +#endif //CONFIG_INTEL_PROXIM + +#ifdef RTL8723A_SDIO_LOOPBACK +typedef struct loopbackdata +{ + _sema sema; + _thread_hdl_ lbkthread; + u8 bstop; + u32 cnt; + u16 size; + u16 txsize; + u8 txbuf[0x8000]; + u16 rxsize; + u8 rxbuf[0x8000]; + u8 msg[100]; + +}LOOPBACKDATA, *PLOOPBACKDATA; +#endif + +struct _ADAPTER{ + int DriverState;// for disable driver using module, use dongle to replace module. + int pid[3];//process id from UI, 0:wps, 1:hostapd, 2:dhcpcd + int bDongle;//build-in module or external dongle + u16 chip_type; + u16 HardwareType; + u16 interface_type;//USB,SDIO,PCI + + struct dvobj_priv *dvobj; + struct mlme_priv mlmepriv; + struct mlme_ext_priv mlmeextpriv; + struct cmd_priv cmdpriv; + struct evt_priv evtpriv; + //struct io_queue *pio_queue; + struct io_priv iopriv; + struct xmit_priv xmitpriv; + struct recv_priv recvpriv; + struct sta_priv stapriv; + struct security_priv securitypriv; + _lock security_key_mutex; // add for CONFIG_IEEE80211W, none 11w also can use + struct registry_priv registrypriv; + struct pwrctrl_priv pwrctrlpriv; + struct eeprom_priv eeprompriv; + struct led_priv ledpriv; + +#ifdef CONFIG_MP_INCLUDED + struct mp_priv mppriv; +#endif + +#ifdef CONFIG_DRVEXT_MODULE + struct drvext_priv drvextpriv; +#endif + +#ifdef CONFIG_AP_MODE + struct hostapd_priv *phostapdpriv; +#endif + +#ifdef CONFIG_IOCTL_CFG80211 +#ifdef CONFIG_P2P + struct cfg80211_wifidirect_info cfg80211_wdinfo; +#endif //CONFIG_P2P +#endif //CONFIG_IOCTL_CFG80211 + u32 setband; +#ifdef CONFIG_P2P + struct wifidirect_info wdinfo; +#endif //CONFIG_P2P + +#ifdef CONFIG_TDLS + struct tdls_info tdlsinfo; +#endif //CONFIG_TDLS + +#ifdef CONFIG_WFD + struct wifi_display_info wfd_info; +#endif //CONFIG_WFD + + PVOID HalData; + u32 hal_data_sz; + struct hal_ops HalFunc; + +#ifdef CONFIG_BT_COEXIST + //struct btcoexist_priv bt_coexist; +#endif + s32 bDriverStopped; + s32 bSurpriseRemoved; + s32 bCardDisableWOHSM; + + u32 IsrContent; + u32 ImrContent; + + u8 EepromAddressSize; + u8 hw_init_completed; + u8 bDriverIsGoingToUnload; + u8 init_adpt_in_progress; + u8 bHaltInProgress; + + _thread_hdl_ cmdThread; + _thread_hdl_ evtThread; + _thread_hdl_ xmitThread; + _thread_hdl_ recvThread; + +#ifndef PLATFORM_LINUX + NDIS_STATUS (*dvobj_init)(struct dvobj_priv *dvobj); + void (*dvobj_deinit)(struct dvobj_priv *dvobj); +#endif + + void (*intf_start)(_adapter * adapter); + void (*intf_stop)(_adapter * adapter); + +#ifdef PLATFORM_WINDOWS + _nic_hdl hndis_adapter;//hNdisAdapter(NDISMiniportAdapterHandle); + _nic_hdl hndis_config;//hNdisConfiguration; + NDIS_STRING fw_img; + + u32 NdisPacketFilter; + u8 MCList[MAX_MCAST_LIST_NUM][6]; + u32 MCAddrCount; +#endif //end of PLATFORM_WINDOWS + + +#ifdef PLATFORM_LINUX + _nic_hdl pnetdev; + + // used by rtw_rereg_nd_name related function + struct rereg_nd_name_data { + _nic_hdl old_pnetdev; + char old_ifname[IFNAMSIZ]; + u8 old_ips_mode; + u8 old_bRegUseLed; + } rereg_nd_name_priv; + + int bup; + struct net_device_stats stats; + struct iw_statistics iwstats; + struct proc_dir_entry *dir_dev;// for proc directory + +#ifdef CONFIG_IOCTL_CFG80211 + struct wireless_dev *rtw_wdev; +#endif //CONFIG_IOCTL_CFG80211 + +#endif //end of PLATFORM_LINUX + +#ifdef PLATFORM_FREEBSD + _nic_hdl pifp; + int bup; + _lock glock; +#endif //PLATFORM_FREEBSD + int net_closed; + + u8 bFWReady; + u8 bReadPortCancel; + u8 bWritePortCancel; + u8 bRxRSSIDisplay; + // Added by Albert 2012/07/26 + // The driver will write the initial gain everytime when running in the DM_Write_DIG function. + u8 bForceWriteInitGain; + // Added by Albert 2012/10/26 + // The driver will show up the desired channel number when this flag is 1. + u8 bNotifyChannelChange; +#ifdef CONFIG_P2P + // Added by Albert 2012/12/06 + // The driver will show the current P2P status when the upper application reads it. + u8 bShowGetP2PState; +#endif +#ifdef CONFIG_AUTOSUSPEND + u8 bDisableAutosuspend; +#endif + + //pbuddy_adapter is used only in two inteface case, (iface_nums=2 in struct dvobj_priv) + //PRIMARY_ADAPTER's buddy is SECONDARY_ADAPTER + //SECONDARY_ADAPTER's buddy is PRIMARY_ADAPTER + //for iface_id > SECONDARY_ADAPTER(IFACE_ID1), refer to padapters[iface_id] in struct dvobj_priv + //and their pbuddy_adapter is PRIMARY_ADAPTER. + //for PRIMARY_ADAPTER(IFACE_ID0) can directly refer to if1 in struct dvobj_priv + _adapter *pbuddy_adapter; + +#if defined(CONFIG_CONCURRENT_MODE) || defined(CONFIG_DUALMAC_CONCURRENT) + u8 isprimary; //is primary adapter or not + //notes: + // if isprimary is true, the adapter_type value is 0, iface_id is IFACE_ID0 for PRIMARY_ADAPTER + // if isprimary is false, the adapter_type value is 1, iface_id is IFACE_ID1 for SECONDARY_ADAPTER + // refer to iface_id if iface_nums>2 and isprimary is false and the adapter_type value is 0xff. + u8 adapter_type;//used only in two inteface case(PRIMARY_ADAPTER and SECONDARY_ADAPTER) . + u8 iface_type; //interface port type, it depends on HW port +#endif + + //extend to support multi interface + //IFACE_ID0 is equals to PRIMARY_ADAPTER + //IFACE_ID1 is equals to SECONDARY_ADAPTER + u8 iface_id; + +#ifdef CONFIG_DUALMAC_CONCURRENT + u8 DualMacConcurrent; // 1: DMSP 0:DMDP +#endif + +#ifdef CONFIG_BR_EXT + _lock br_ext_lock; + //unsigned int macclone_completed; + struct nat25_network_db_entry *nethash[NAT25_HASH_SIZE]; + int pppoe_connection_in_progress; + unsigned char pppoe_addr[MACADDRLEN]; + unsigned char scdb_mac[MACADDRLEN]; + unsigned char scdb_ip[4]; + struct nat25_network_db_entry *scdb_entry; + unsigned char br_mac[MACADDRLEN]; + unsigned char br_ip[4]; + + struct br_ext_info ethBrExtInfo; +#endif // CONFIG_BR_EXT + +#ifdef CONFIG_INTEL_PROXIM + /* intel Proximity, should be alloc mem + * in intel Proximity module and can only + * be used in intel Proximity mode */ + struct proxim proximity; +#endif //CONFIG_INTEL_PROXIM + +#ifdef RTL8723A_SDIO_LOOPBACK + PLOOPBACKDATA ploopback; +#endif + +}; + +#define adapter_to_dvobj(adapter) (adapter->dvobj) + +int rtw_handle_dualmac(_adapter *adapter, bool init); + +__inline static u8 *myid(struct eeprom_priv *peepriv) +{ + return (peepriv->mac_addr); +} + + +#endif //__DRV_TYPES_H__ --- linux-raspi2-4.2.0.orig/drivers/net/wireless/rtl8192cu/include/drv_types_ce.h +++ linux-raspi2-4.2.0/drivers/net/wireless/rtl8192cu/include/drv_types_ce.h @@ -0,0 +1,92 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved. + * + * 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 + * published by the Free Software Foundation. + * + * 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 Street, Fifth Floor, Boston, MA 02110, USA + * + * + ******************************************************************************/ +#ifndef __DRV_TYPES_CE_H__ +#define __DRV_TYPES_CE_H__ + +#include +#include + +#include + +#define MAX_ACTIVE_REG_PATH 256 + +#define MAX_MCAST_LIST_NUM 32 + + + +//for ioctl +#define MAKE_DRIVER_VERSION(_MainVer,_MinorVer) ((((u32)(_MainVer))<<16)+_MinorVer) + +#define NIC_HEADER_SIZE 14 //!< can be moved to typedef.h +#define NIC_MAX_PACKET_SIZE 1514 //!< can be moved to typedef.h +#define NIC_MAX_SEND_PACKETS 10 // max number of send packets the MiniportSendPackets function can accept, can be moved to typedef.h +#define NIC_VENDOR_DRIVER_VERSION MAKE_DRIVER_VERSION(0,001) //!< can be moved to typedef.h +#define NIC_MAX_PACKET_SIZE 1514 //!< can be moved to typedef.h + +typedef struct _MP_REG_ENTRY +{ + + NDIS_STRING RegName; // variable name text + BOOLEAN bRequired; // 1 -> required, 0 -> optional + + u8 Type; // NdisParameterInteger/NdisParameterHexInteger/NdisParameterStringle/NdisParameterMultiString + uint FieldOffset; // offset to MP_ADAPTER field + uint FieldSize; // size (in bytes) of the field + +#ifdef UNDER_AMD64 + u64 Default; +#else + u32 Default; // default value to use +#endif + + u32 Min; // minimum value allowed + u32 Max; // maximum value allowed +} MP_REG_ENTRY, *PMP_REG_ENTRY; + +#ifdef CONFIG_USB_HCI +typedef struct _USB_EXTENSION { + LPCUSB_FUNCS _lpUsbFuncs; + USB_HANDLE _hDevice; + PVOID pAdapter; + +#if 0 + USB_ENDPOINT_DESCRIPTOR _endpACLIn; + USB_ENDPOINT_DESCRIPTOR _endpACLOutHigh; + USB_ENDPOINT_DESCRIPTOR _endpACLOutNormal; + + USB_PIPE pPipeIn; + USB_PIPE pPipeOutNormal; + USB_PIPE pPipeOutHigh; +#endif + +} USB_EXTENSION, *PUSB_EXTENSION; +#endif + + +typedef struct _OCTET_STRING{ + u8 *Octet; + u16 Length; +} OCTET_STRING, *POCTET_STRING; + + + + + +#endif --- linux-raspi2-4.2.0.orig/drivers/net/wireless/rtl8192cu/include/drv_types_linux.h +++ linux-raspi2-4.2.0/drivers/net/wireless/rtl8192cu/include/drv_types_linux.h @@ -0,0 +1,24 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved. + * + * 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 + * published by the Free Software Foundation. + * + * 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 Street, Fifth Floor, Boston, MA 02110, USA + * + * + ******************************************************************************/ +#ifndef __DRV_TYPES_LINUX_H__ +#define __DRV_TYPES_LINUX_H__ + + +#endif --- linux-raspi2-4.2.0.orig/drivers/net/wireless/rtl8192cu/include/drv_types_sdio.h +++ linux-raspi2-4.2.0/drivers/net/wireless/rtl8192cu/include/drv_types_sdio.h @@ -0,0 +1,69 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved. + * + * 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 + * published by the Free Software Foundation. + * + * 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 Street, Fifth Floor, Boston, MA 02110, USA + * + * + ******************************************************************************/ +#ifndef __DRV_TYPES_SDIO_H__ +#define __DRV_TYPES_SDIO_H__ + +#include +#include + +// SDIO Header Files +#ifdef PLATFORM_LINUX +#include +#endif +#ifdef PLATFORM_OS_XP +#include +#include +#endif +#ifdef PLATFORM_OS_CE +#include +#endif + + +typedef struct sdio_data +{ + u8 func_number; + + u8 tx_block_mode; + u8 rx_block_mode; + u32 block_transfer_len; + +#ifdef PLATFORM_LINUX + struct sdio_func *func; +#endif + +#ifdef PLATFORM_OS_XP + PDEVICE_OBJECT pphysdevobj; + PDEVICE_OBJECT pfuncdevobj; + PDEVICE_OBJECT pnextdevobj; + SDBUS_INTERFACE_STANDARD sdbusinft; + u8 nextdevstacksz; +#endif + +#ifdef PLATFORM_OS_CE + SD_DEVICE_HANDLE hDevice; + SD_CARD_RCA sd_rca; + SD_CARD_INTERFACE card_intf; + BOOLEAN enableIsarWithStatus; + WCHAR active_path[MAX_ACTIVE_REG_PATH]; + SD_HOST_BLOCK_CAPABILITY sd_host_blk_cap; +#endif +} SDIO_DATA, *PSDIO_DATA; + +#endif --- linux-raspi2-4.2.0.orig/drivers/net/wireless/rtl8192cu/include/drv_types_xp.h +++ linux-raspi2-4.2.0/drivers/net/wireless/rtl8192cu/include/drv_types_xp.h @@ -0,0 +1,94 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved. + * + * 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 + * published by the Free Software Foundation. + * + * 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 Street, Fifth Floor, Boston, MA 02110, USA + * + * + ******************************************************************************/ +#ifndef __DRV_TYPES_XP_H__ +#define __DRV_TYPES_XP_H__ + +#include +#include + + + +#define MAX_MCAST_LIST_NUM 32 + + + +//for ioctl +#define MAKE_DRIVER_VERSION(_MainVer,_MinorVer) ((((u32)(_MainVer))<<16)+_MinorVer) + +#define NIC_HEADER_SIZE 14 //!< can be moved to typedef.h +#define NIC_MAX_PACKET_SIZE 1514 //!< can be moved to typedef.h +#define NIC_MAX_SEND_PACKETS 10 // max number of send packets the MiniportSendPackets function can accept, can be moved to typedef.h +#define NIC_VENDOR_DRIVER_VERSION MAKE_DRIVER_VERSION(0,001) //!< can be moved to typedef.h +#define NIC_MAX_PACKET_SIZE 1514 //!< can be moved to typedef.h + + +#undef ON_VISTA +//added by Jackson +#ifndef ON_VISTA +// +// Bus driver versions +// + +#define SDBUS_DRIVER_VERSION_1 0x100 +#define SDBUS_DRIVER_VERSION_2 0x200 + +#define SDP_FUNCTION_TYPE 4 +#define SDP_BUS_DRIVER_VERSION 5 +#define SDP_BUS_WIDTH 6 +#define SDP_BUS_CLOCK 7 +#define SDP_BUS_INTERFACE_CONTROL 8 +#define SDP_HOST_BLOCK_LENGTH 9 +#define SDP_FUNCTION_BLOCK_LENGTH 10 +#define SDP_FN0_BLOCK_LENGTH 11 +#define SDP_FUNCTION_INT_ENABLE 12 +#endif + + +typedef struct _MP_REG_ENTRY +{ + + NDIS_STRING RegName; // variable name text + BOOLEAN bRequired; // 1 -> required, 0 -> optional + + u8 Type; // NdisParameterInteger/NdisParameterHexInteger/NdisParameterStringle/NdisParameterMultiString + uint FieldOffset; // offset to MP_ADAPTER field + uint FieldSize; // size (in bytes) of the field + +#ifdef UNDER_AMD64 + u64 Default; +#else + u32 Default; // default value to use +#endif + + u32 Min; // minimum value allowed + u32 Max; // maximum value allowed +} MP_REG_ENTRY, *PMP_REG_ENTRY; + + +typedef struct _OCTET_STRING{ + u8 *Octet; + u16 Length; +} OCTET_STRING, *POCTET_STRING; + + + + + +#endif --- linux-raspi2-4.2.0.orig/drivers/net/wireless/rtl8192cu/include/ethernet.h +++ linux-raspi2-4.2.0/drivers/net/wireless/rtl8192cu/include/ethernet.h @@ -0,0 +1,41 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved. + * + * 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 + * published by the Free Software Foundation. + * + * 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 Street, Fifth Floor, Boston, MA 02110, USA + * + * + ******************************************************************************/ +/*! \file */ +#ifndef __INC_ETHERNET_H +#define __INC_ETHERNET_H + +#define ETHERNET_ADDRESS_LENGTH 6 //!< Ethernet Address Length +#define ETHERNET_HEADER_SIZE 14 //!< Ethernet Header Length +#define LLC_HEADER_SIZE 6 //!< LLC Header Length +#define TYPE_LENGTH_FIELD_SIZE 2 //!< Type/Length Size +#define MINIMUM_ETHERNET_PACKET_SIZE 60 //!< Minimum Ethernet Packet Size +#define MAXIMUM_ETHERNET_PACKET_SIZE 1514 //!< Maximum Ethernet Packet Size + +#define RT_ETH_IS_MULTICAST(_pAddr) ((((UCHAR *)(_pAddr))[0]&0x01)!=0) //!< Is Multicast Address? +#define RT_ETH_IS_BROADCAST(_pAddr) ( \ + ((UCHAR *)(_pAddr))[0]==0xff && \ + ((UCHAR *)(_pAddr))[1]==0xff && \ + ((UCHAR *)(_pAddr))[2]==0xff && \ + ((UCHAR *)(_pAddr))[3]==0xff && \ + ((UCHAR *)(_pAddr))[4]==0xff && \ + ((UCHAR *)(_pAddr))[5]==0xff ) //!< Is Broadcast Address? + + +#endif // #ifndef __INC_ETHERNET_H --- linux-raspi2-4.2.0.orig/drivers/net/wireless/rtl8192cu/include/h2clbk.h +++ linux-raspi2-4.2.0/drivers/net/wireless/rtl8192cu/include/h2clbk.h @@ -0,0 +1,35 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved. + * + * 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 + * published by the Free Software Foundation. + * + * 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 Street, Fifth Floor, Boston, MA 02110, USA + * + * + ******************************************************************************/ + + +#define _H2CLBK_H_ + + +#include +#include + + +void _lbk_cmd(PADAPTER Adapter); + +void _lbk_rsp(PADAPTER Adapter); + +void _lbk_evt(IN PADAPTER Adapter); + +void h2c_event_callback(unsigned char *dev, unsigned char *pbuf); --- linux-raspi2-4.2.0.orig/drivers/net/wireless/rtl8192cu/include/hal_com.h +++ linux-raspi2-4.2.0/drivers/net/wireless/rtl8192cu/include/hal_com.h @@ -0,0 +1,145 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved. + * + * 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 + * published by the Free Software Foundation. + * + * 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 Street, Fifth Floor, Boston, MA 02110, USA + * + * + ******************************************************************************/ +#ifndef __HAL_COMMON_H__ +#define __HAL_COMMON_H__ + +//CCK +#define RATE_1M BIT(0) +#define RATE_2M BIT(1) +#define RATE_5_5M BIT(2) +#define RATE_11M BIT(3) +//OFDM +#define RATE_6M BIT(4) +#define RATE_9M BIT(5) +#define RATE_12M BIT(6) +#define RATE_18M BIT(7) +#define RATE_24M BIT(8) +#define RATE_36M BIT(9) +#define RATE_48M BIT(10) +#define RATE_54M BIT(11) +//MCS 1 Spatial Stream +#define RATE_MCS0 BIT(12) +#define RATE_MCS1 BIT(13) +#define RATE_MCS2 BIT(14) +#define RATE_MCS3 BIT(15) +#define RATE_MCS4 BIT(16) +#define RATE_MCS5 BIT(17) +#define RATE_MCS6 BIT(18) +#define RATE_MCS7 BIT(19) +//MCS 2 Spatial Stream +#define RATE_MCS8 BIT(20) +#define RATE_MCS9 BIT(21) +#define RATE_MCS10 BIT(22) +#define RATE_MCS11 BIT(23) +#define RATE_MCS12 BIT(24) +#define RATE_MCS13 BIT(25) +#define RATE_MCS14 BIT(26) +#define RATE_MCS15 BIT(27) + +// ALL CCK Rate +#define RATE_ALL_CCK RATR_1M|RATR_2M|RATR_55M|RATR_11M +#define RATE_ALL_OFDM_AG RATR_6M|RATR_9M|RATR_12M|RATR_18M|RATR_24M|\ + RATR_36M|RATR_48M|RATR_54M +#define RATE_ALL_OFDM_1SS RATR_MCS0|RATR_MCS1|RATR_MCS2|RATR_MCS3 |\ + RATR_MCS4|RATR_MCS5|RATR_MCS6 |RATR_MCS7 +#define RATE_ALL_OFDM_2SS RATR_MCS8|RATR_MCS9 |RATR_MCS10|RATR_MCS11|\ + RATR_MCS12|RATR_MCS13|RATR_MCS14|RATR_MCS15 + +/*------------------------------ Tx Desc definition Macro ------------------------*/ +//#pragma mark -- Tx Desc related definition. -- +//---------------------------------------------------------------------------- +//----------------------------------------------------------- +// Rate +//----------------------------------------------------------- +// CCK Rates, TxHT = 0 +#define DESC_RATE1M 0x00 +#define DESC_RATE2M 0x01 +#define DESC_RATE5_5M 0x02 +#define DESC_RATE11M 0x03 + +// OFDM Rates, TxHT = 0 +#define DESC_RATE6M 0x04 +#define DESC_RATE9M 0x05 +#define DESC_RATE12M 0x06 +#define DESC_RATE18M 0x07 +#define DESC_RATE24M 0x08 +#define DESC_RATE36M 0x09 +#define DESC_RATE48M 0x0a +#define DESC_RATE54M 0x0b + +// MCS Rates, TxHT = 1 +#define DESC_RATEMCS0 0x0c +#define DESC_RATEMCS1 0x0d +#define DESC_RATEMCS2 0x0e +#define DESC_RATEMCS3 0x0f +#define DESC_RATEMCS4 0x10 +#define DESC_RATEMCS5 0x11 +#define DESC_RATEMCS6 0x12 +#define DESC_RATEMCS7 0x13 +#define DESC_RATEMCS8 0x14 +#define DESC_RATEMCS9 0x15 +#define DESC_RATEMCS10 0x16 +#define DESC_RATEMCS11 0x17 +#define DESC_RATEMCS12 0x18 +#define DESC_RATEMCS13 0x19 +#define DESC_RATEMCS14 0x1a +#define DESC_RATEMCS15 0x1b +#define DESC_RATEMCS15_SG 0x1c +#define DESC_RATEMCS32 0x20 + +//============================================================ +// Global var +//============================================================ +#define OFDM_TABLE_SIZE_92C 37 +#define OFDM_TABLE_SIZE_92D 43 +#define CCK_TABLE_SIZE 33 + +extern u32 OFDMSwingTable[OFDM_TABLE_SIZE_92D] ; + +extern u8 CCKSwingTable_Ch1_Ch13[CCK_TABLE_SIZE][8]; + +extern u8 CCKSwingTable_Ch14 [CCK_TABLE_SIZE][8]; + +#ifdef CONFIG_CHIP_VER_INTEGRATION +void dump_chip_info(HAL_VERSION ChipVersion); +#endif + +u8 //return the final channel plan decision +hal_com_get_channel_plan( + IN PADAPTER padapter, + IN u8 hw_channel_plan, //channel plan from HW (efuse/eeprom) + IN u8 sw_channel_plan, //channel plan from SW (registry/module param) + IN u8 def_channel_plan, //channel plan used when the former two is invalid + IN BOOLEAN AutoLoadFail + ); + +void HalSetBrateCfg( + IN PADAPTER Adapter, + IN u8 *mBratesOS, + OUT u16 *pBrateCfg); + +u8 MRateToHwRate(u8 rate); + +void hal_init_macaddr(_adapter *adapter); + +void c2h_evt_clear(_adapter *adapter); +s32 c2h_evt_read(_adapter *adapter, u8 *buf); + +#endif //__HAL_COMMON_H__ --- linux-raspi2-4.2.0.orig/drivers/net/wireless/rtl8192cu/include/hal_intf.h +++ linux-raspi2-4.2.0/drivers/net/wireless/rtl8192cu/include/hal_intf.h @@ -0,0 +1,431 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2012 Realtek Corporation. All rights reserved. + * + * 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 + * published by the Free Software Foundation. + * + * 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 Street, Fifth Floor, Boston, MA 02110, USA + * + * + ******************************************************************************/ +#ifndef __HAL_INTF_H__ +#define __HAL_INTF_H__ + +#include +#include +#include + +#ifdef CONFIG_PCI_HCI +#include +#endif + + +enum RTL871X_HCI_TYPE { + + RTW_SDIO, + RTW_USB, + RTW_PCIE +}; + +enum _CHIP_TYPE { + + NULL_CHIP_TYPE, + RTL8712_8188S_8191S_8192S, + RTL8188C_8192C, + RTL8192D, + RTL8723A, + RTL8188E, + MAX_CHIP_TYPE +}; + + +typedef enum _HW_VARIABLES{ + HW_VAR_MEDIA_STATUS, + HW_VAR_MEDIA_STATUS1, + HW_VAR_SET_OPMODE, + HW_VAR_MAC_ADDR, + HW_VAR_BSSID, + HW_VAR_INIT_RTS_RATE, + HW_VAR_INIT_DATA_RATE, + HW_VAR_BASIC_RATE, + HW_VAR_TXPAUSE, + HW_VAR_BCN_FUNC, + HW_VAR_CORRECT_TSF, + HW_VAR_CHECK_BSSID, + HW_VAR_MLME_DISCONNECT, + HW_VAR_MLME_SITESURVEY, + HW_VAR_MLME_JOIN, + HW_VAR_ON_RCR_AM, + HW_VAR_OFF_RCR_AM, + HW_VAR_BEACON_INTERVAL, + HW_VAR_SLOT_TIME, + HW_VAR_RESP_SIFS, + HW_VAR_ACK_PREAMBLE, + HW_VAR_SEC_CFG, + HW_VAR_BCN_VALID, + HW_VAR_RF_TYPE, + HW_VAR_DM_FLAG, + HW_VAR_DM_FUNC_OP, + HW_VAR_DM_FUNC_SET, + HW_VAR_DM_FUNC_CLR, + HW_VAR_DM_INIT_PWDB, + HW_VAR_CAM_EMPTY_ENTRY, + HW_VAR_CAM_INVALID_ALL, + HW_VAR_CAM_WRITE, + HW_VAR_CAM_READ, + HW_VAR_AC_PARAM_VO, + HW_VAR_AC_PARAM_VI, + HW_VAR_AC_PARAM_BE, + HW_VAR_AC_PARAM_BK, + HW_VAR_ACM_CTRL, + HW_VAR_AMPDU_MIN_SPACE, + HW_VAR_AMPDU_FACTOR, + HW_VAR_RXDMA_AGG_PG_TH, + HW_VAR_SET_RPWM, + HW_VAR_H2C_FW_PWRMODE, + HW_VAR_H2C_FW_JOINBSSRPT, + HW_VAR_FWLPS_RF_ON, + HW_VAR_H2C_FW_P2P_PS_OFFLOAD, + HW_VAR_TDLS_WRCR, + HW_VAR_TDLS_INIT_CH_SEN, + HW_VAR_TDLS_RS_RCR, + HW_VAR_TDLS_DONE_CH_SEN, + HW_VAR_INITIAL_GAIN, + HW_VAR_TRIGGER_GPIO_0, + HW_VAR_BT_SET_COEXIST, + HW_VAR_BT_ISSUE_DELBA, + HW_VAR_CURRENT_ANTENNA, + HW_VAR_ANTENNA_DIVERSITY_LINK, + HW_VAR_ANTENNA_DIVERSITY_SELECT, + HW_VAR_SWITCH_EPHY_WoWLAN, + HW_VAR_EFUSE_BYTES, + HW_VAR_FIFO_CLEARN_UP, + HW_VAR_CHECK_TXBUF, + HW_VAR_APFM_ON_MAC, //Auto FSM to Turn On, include clock, isolation, power control for MAC only + HW_VAR_WOWLAN, + HW_VAR_VID, + HW_VAR_PID, + HW_VAR_MBSSID_CAM_WRITE, + HW_VAR_MBSSID_CAM_CLEAR, + HW_VAR_RCR_MBSSID_EN, + HW_VAR_USB_RXAGG_PAGE_TO, +}HW_VARIABLES; + +typedef enum _HAL_DEF_VARIABLE{ + HAL_DEF_UNDERCORATEDSMOOTHEDPWDB, + HAL_DEF_IS_SUPPORT_ANT_DIV, + HAL_DEF_CURRENT_ANTENNA, + HAL_DEF_DRVINFO_SZ, + HAL_DEF_MAX_RECVBUF_SZ, + HAL_DEF_RX_PACKET_OFFSET, + HAL_DEF_DBG_DUMP_RXPKT,//for dbg + HAL_DEF_DBG_DM_FUNC,//for dbg + HAL_DEF_DUAL_MAC_MODE, +}HAL_DEF_VARIABLE; + +typedef enum _HAL_INTF_PS_FUNC{ + HAL_USB_SELECT_SUSPEND, + HAL_MAX_ID, +}HAL_INTF_PS_FUNC; + +typedef s32 (*c2h_id_filter)(u8 id); + +struct hal_ops { + u32 (*hal_init)(PADAPTER Adapter); + u32 (*hal_deinit)(PADAPTER Adapter); + + void (*free_hal_data)(PADAPTER Adapter); + + u32 (*inirp_init)(PADAPTER Adapter); + u32 (*inirp_deinit)(PADAPTER Adapter); + + s32 (*init_xmit_priv)(PADAPTER Adapter); + void (*free_xmit_priv)(PADAPTER Adapter); + + s32 (*init_recv_priv)(PADAPTER Adapter); + void (*free_recv_priv)(PADAPTER Adapter); + + void (*InitSwLeds)(PADAPTER Adapter); + void (*DeInitSwLeds)(PADAPTER Adapter); + + void (*dm_init)(PADAPTER Adapter); + void (*dm_deinit)(PADAPTER Adapter); + void (*read_chip_version)(PADAPTER Adapter); + + void (*init_default_value)(PADAPTER Adapter); + + void (*intf_chip_configure)(PADAPTER Adapter); + + void (*read_adapter_info)(PADAPTER Adapter); + + void (*enable_interrupt)(PADAPTER Adapter); + void (*disable_interrupt)(PADAPTER Adapter); + s32 (*interrupt_handler)(PADAPTER Adapter); + + void (*set_bwmode_handler)(PADAPTER Adapter, HT_CHANNEL_WIDTH Bandwidth, u8 Offset); + void (*set_channel_handler)(PADAPTER Adapter, u8 channel); + + void (*hal_dm_watchdog)(PADAPTER Adapter); + + void (*SetHwRegHandler)(PADAPTER Adapter, u8 variable,u8* val); + void (*GetHwRegHandler)(PADAPTER Adapter, u8 variable,u8* val); + + u8 (*GetHalDefVarHandler)(PADAPTER Adapter, HAL_DEF_VARIABLE eVariable, PVOID pValue); + u8 (*SetHalDefVarHandler)(PADAPTER Adapter, HAL_DEF_VARIABLE eVariable, PVOID pValue); + + void (*UpdateRAMaskHandler)(PADAPTER Adapter, u32 mac_id); + void (*SetBeaconRelatedRegistersHandler)(PADAPTER Adapter); + + void (*Add_RateATid)(PADAPTER Adapter, u32 bitmap, u8 arg); + +#ifdef CONFIG_ANTENNA_DIVERSITY + u8 (*AntDivBeforeLinkHandler)(PADAPTER Adapter); + void (*AntDivCompareHandler)(PADAPTER Adapter, WLAN_BSSID_EX *dst, WLAN_BSSID_EX *src); +#endif + u8 (*interface_ps_func)(PADAPTER Adapter,HAL_INTF_PS_FUNC efunc_id, u8* val); + + s32 (*hal_xmit)(PADAPTER Adapter, struct xmit_frame *pxmitframe); + s32 (*mgnt_xmit)(PADAPTER Adapter, struct xmit_frame *pmgntframe); + s32 (*hal_xmitframe_enqueue)(_adapter *padapter, struct xmit_frame *pxmitframe); + + u32 (*read_bbreg)(PADAPTER Adapter, u32 RegAddr, u32 BitMask); + void (*write_bbreg)(PADAPTER Adapter, u32 RegAddr, u32 BitMask, u32 Data); + u32 (*read_rfreg)(PADAPTER Adapter, u32 eRFPath, u32 RegAddr, u32 BitMask); + void (*write_rfreg)(PADAPTER Adapter, u32 eRFPath, u32 RegAddr, u32 BitMask, u32 Data); + +#ifdef CONFIG_HOSTAPD_MLME + s32 (*hostap_mgnt_xmit_entry)(PADAPTER Adapter, _pkt *pkt); +#endif + void (*EfusePowerSwitch)(PADAPTER pAdapter, u8 bWrite, u8 PwrState); + void (*ReadEFuse)(PADAPTER Adapter, u8 efuseType, u16 _offset, u16 _size_byte, u8 *pbuf, BOOLEAN bPseudoTest); + void (*EFUSEGetEfuseDefinition)(PADAPTER pAdapter, u8 efuseType, u8 type, PVOID *pOut, BOOLEAN bPseudoTest); + u16 (*EfuseGetCurrentSize)(PADAPTER pAdapter, u8 efuseType, BOOLEAN bPseudoTest); + int (*Efuse_PgPacketRead)(PADAPTER pAdapter, u8 offset, u8 *data, BOOLEAN bPseudoTest); + int (*Efuse_PgPacketWrite)(PADAPTER pAdapter, u8 offset, u8 word_en, u8 *data, BOOLEAN bPseudoTest); + u8 (*Efuse_WordEnableDataWrite)(PADAPTER pAdapter, u16 efuse_addr, u8 word_en, u8 *data, BOOLEAN bPseudoTest); + +#ifdef DBG_CONFIG_ERROR_DETECT + void (*sreset_init_value)(_adapter *padapter); + void (*sreset_reset_value)(_adapter *padapter); + void (*silentreset)(_adapter *padapter); + void (*sreset_xmit_status_check)(_adapter *padapter); + void (*sreset_linked_status_check) (_adapter *padapter); + u8 (*sreset_get_wifi_status)(_adapter *padapter); + bool (*sreset_inprogress)(_adapter *padapter); +#endif + +#ifdef CONFIG_IOL + int (*IOL_exec_cmds_sync)(ADAPTER *adapter, struct xmit_frame *xmit_frame, u32 max_wating_ms); +#endif + void (*hal_notch_filter)(_adapter * adapter, bool enable); + void (*hal_reset_security_engine)(_adapter * adapter); + + s32 (*c2h_handler)(_adapter *padapter, struct c2h_evt_hdr *c2h_evt); + c2h_id_filter c2h_id_filter_ccx; +}; + +typedef enum _RT_EEPROM_TYPE{ + EEPROM_93C46, + EEPROM_93C56, + EEPROM_BOOT_EFUSE, +}RT_EEPROM_TYPE,*PRT_EEPROM_TYPE; + +#define USB_HIGH_SPEED_BULK_SIZE 512 +#define USB_FULL_SPEED_BULK_SIZE 64 + +#define RF_CHANGE_BY_INIT 0 +#define RF_CHANGE_BY_IPS BIT28 +#define RF_CHANGE_BY_PS BIT29 +#define RF_CHANGE_BY_HW BIT30 +#define RF_CHANGE_BY_SW BIT31 + +typedef enum _HARDWARE_TYPE{ + HARDWARE_TYPE_RTL8180, + HARDWARE_TYPE_RTL8185, + HARDWARE_TYPE_RTL8187, + HARDWARE_TYPE_RTL8188, + HARDWARE_TYPE_RTL8190P, + HARDWARE_TYPE_RTL8192E, + HARDWARE_TYPE_RTL819xU, + HARDWARE_TYPE_RTL8192SE, + HARDWARE_TYPE_RTL8192SU, + HARDWARE_TYPE_RTL8192CE, + HARDWARE_TYPE_RTL8192CU, + HARDWARE_TYPE_RTL8192DE, + HARDWARE_TYPE_RTL8192DU, + HARDWARE_TYPE_RTL8723AE, + HARDWARE_TYPE_RTL8723AU, + HARDWARE_TYPE_RTL8723AS, + HARDWARE_TYPE_RTL8188EE, + HARDWARE_TYPE_RTL8188EU, + HARDWARE_TYPE_RTL8188ES, + HARDWARE_TYPE_MAX, +}HARDWARE_TYPE; + +// +// RTL8192C Series +// +#define IS_HARDWARE_TYPE_8192CE(_Adapter) (((PADAPTER)_Adapter)->HardwareType==HARDWARE_TYPE_RTL8192CE) +#define IS_HARDWARE_TYPE_8192CU(_Adapter) (((PADAPTER)_Adapter)->HardwareType==HARDWARE_TYPE_RTL8192CU) +#define IS_HARDWARE_TYPE_8192C(_Adapter) \ +(IS_HARDWARE_TYPE_8192CE(_Adapter) || IS_HARDWARE_TYPE_8192CU(_Adapter)) + +// +// RTL8192D Series +// +#define IS_HARDWARE_TYPE_8192DE(_Adapter) (((PADAPTER)_Adapter)->HardwareType==HARDWARE_TYPE_RTL8192DE) +#define IS_HARDWARE_TYPE_8192DU(_Adapter) (((PADAPTER)_Adapter)->HardwareType==HARDWARE_TYPE_RTL8192DU) +#define IS_HARDWARE_TYPE_8192D(_Adapter) \ +(IS_HARDWARE_TYPE_8192DE(_Adapter) || IS_HARDWARE_TYPE_8192DU(_Adapter)) + +// +// RTL8723A Series +// +#define IS_HARDWARE_TYPE_8723AE(_Adapter) (((PADAPTER)_Adapter)->HardwareType==HARDWARE_TYPE_RTL8723AE) +#define IS_HARDWARE_TYPE_8723AU(_Adapter) (((PADAPTER)_Adapter)->HardwareType==HARDWARE_TYPE_RTL8723AU) +#define IS_HARDWARE_TYPE_8723AS(_Adapter) (((PADAPTER)_Adapter)->HardwareType==HARDWARE_TYPE_RTL8723AS) +#define IS_HARDWARE_TYPE_8723A(_Adapter) \ +(IS_HARDWARE_TYPE_8723AE(_Adapter) || IS_HARDWARE_TYPE_8723AU(_Adapter) || IS_HARDWARE_TYPE_8723AS(_Adapter)) + +// +// RTL8188E Series +// +#define IS_HARDWARE_TYPE_8188EE(_Adapter) (((PADAPTER)_Adapter)->HardwareType==HARDWARE_TYPE_RTL8188EE) +#define IS_HARDWARE_TYPE_8188EU(_Adapter) (((PADAPTER)_Adapter)->HardwareType==HARDWARE_TYPE_RTL8188EU) +#define IS_HARDWARE_TYPE_8188ES(_Adapter) (((PADAPTER)_Adapter)->HardwareType==HARDWARE_TYPE_RTL8188ES) +#define IS_HARDWARE_TYPE_8188E(_Adapter) \ +(IS_HARDWARE_TYPE_8188EE(_Adapter) || IS_HARDWARE_TYPE_8188EU(_Adapter) || IS_HARDWARE_TYPE_8188ES(_Adapter)) + + +typedef struct eeprom_priv EEPROM_EFUSE_PRIV, *PEEPROM_EFUSE_PRIV; +#define GET_EEPROM_EFUSE_PRIV(priv) (&priv->eeprompriv) + +#ifdef CONFIG_WOWLAN +typedef enum _wowlan_subcode{ + WOWLAN_PATTERN_MATCH = 1, + WOWLAN_MAGIC_PACKET = 2, + WOWLAN_UNICAST = 3, + WOWLAN_SET_PATTERN = 4, + WOWLAN_DUMP_REG = 5, + WOWLAN_ENABLE = 6, + WOWLAN_DISABLE = 7, + WOWLAN_STATUS = 8, + WOWLAN_DEBUG_RELOAD_FW = 9, + WOWLAN_DEBUG_1 =10, + WOWLAN_DEBUG_2 =11 +}wowlan_subcode; + +struct wowlan_ioctl_param{ + unsigned int subcode; + unsigned int subcode_value; + unsigned int wakeup_reason; + unsigned int len; + unsigned char pattern[0]; +}; + +#define Rx_Pairwisekey BIT(0) +#define Rx_GTK BIT(1) +#define Rx_DisAssoc BIT(2) +#define Rx_DeAuth BIT(3) +#define FWDecisionDisconnect BIT(4) +#define Rx_MagicPkt BIT(5) +#define FinishBtFwPatch BIT(7) + +#endif // CONFIG_WOWLAN + +void rtw_hal_def_value_init(_adapter *padapter); +void rtw_hal_free_data(_adapter *padapter); + +void rtw_hal_dm_init(_adapter *padapter); +void rtw_hal_dm_deinit(_adapter *padapter); +void rtw_hal_sw_led_init(_adapter *padapter); +void rtw_hal_sw_led_deinit(_adapter *padapter); + +uint rtw_hal_init(_adapter *padapter); +uint rtw_hal_deinit(_adapter *padapter); +void rtw_hal_stop(_adapter *padapter); + +void rtw_hal_set_hwreg(PADAPTER padapter, u8 variable, u8 *val); +void rtw_hal_get_hwreg(PADAPTER padapter, u8 variable, u8 *val); + +void rtw_hal_chip_configure(_adapter *padapter); +void rtw_hal_read_chip_info(_adapter *padapter); +void rtw_hal_read_chip_version(_adapter *padapter); + +u8 rtw_hal_set_def_var(_adapter *padapter, HAL_DEF_VARIABLE eVariable, PVOID pValue); +u8 rtw_hal_get_def_var(_adapter *padapter, HAL_DEF_VARIABLE eVariable, PVOID pValue); + +void rtw_hal_enable_interrupt(_adapter *padapter); +void rtw_hal_disable_interrupt(_adapter *padapter); + +u32 rtw_hal_inirp_init(_adapter *padapter); +u32 rtw_hal_inirp_deinit(_adapter *padapter); + +u8 rtw_hal_intf_ps_func(_adapter *padapter,HAL_INTF_PS_FUNC efunc_id, u8* val); + +s32 rtw_hal_xmitframe_enqueue(_adapter *padapter, struct xmit_frame *pxmitframe); +s32 rtw_hal_xmit(_adapter *padapter, struct xmit_frame *pxmitframe); +s32 rtw_hal_mgnt_xmit(_adapter *padapter, struct xmit_frame *pmgntframe); + +s32 rtw_hal_init_xmit_priv(_adapter *padapter); +void rtw_hal_free_xmit_priv(_adapter *padapter); + +s32 rtw_hal_init_recv_priv(_adapter *padapter); +void rtw_hal_free_recv_priv(_adapter *padapter); + +void rtw_hal_update_ra_mask(_adapter *padapter, u32 mac_id); +void rtw_hal_add_ra_tid(_adapter *padapter, u32 bitmap, u8 arg); + +void rtw_hal_bcn_related_reg_setting(_adapter *padapter); + +u32 rtw_hal_read_bbreg(_adapter *padapter, u32 RegAddr, u32 BitMask); +void rtw_hal_write_bbreg(_adapter *padapter, u32 RegAddr, u32 BitMask, u32 Data); +u32 rtw_hal_read_rfreg(_adapter *padapter, u32 eRFPath, u32 RegAddr, u32 BitMask); +void rtw_hal_write_rfreg(_adapter *padapter, u32 eRFPath, u32 RegAddr, u32 BitMask, u32 Data); + +s32 rtw_hal_interrupt_handler(_adapter *padapter); + +void rtw_hal_set_bwmode(_adapter *padapter, HT_CHANNEL_WIDTH Bandwidth, u8 Offset); +void rtw_hal_set_chan(_adapter *padapter, u8 channel); + +void rtw_hal_dm_watchdog(_adapter *padapter); + +#ifdef CONFIG_ANTENNA_DIVERSITY +u8 rtw_hal_antdiv_before_linked(_adapter *padapter); +void rtw_hal_antdiv_rssi_compared(_adapter *padapter, WLAN_BSSID_EX *dst, WLAN_BSSID_EX *src); +#endif + +#ifdef CONFIG_HOSTAPD_MLME +s32 rtw_hal_hostap_mgnt_xmit_entry(_adapter *padapter, _pkt *pkt); +#endif + +#ifdef DBG_CONFIG_ERROR_DETECT +void rtw_hal_sreset_init(_adapter *padapter); +void rtw_hal_sreset_reset(_adapter *padapter); +void rtw_hal_sreset_reset_value(_adapter *padapter); +void rtw_hal_sreset_xmit_status_check(_adapter *padapter); +void rtw_hal_sreset_linked_status_check(_adapter *padapter); +u8 rtw_hal_sreset_get_wifi_status(_adapter *padapter); +bool rtw_hal_sreset_inprogress(_adapter *padapter); +#endif + +#ifdef CONFIG_IOL +int rtw_hal_iol_cmd(ADAPTER *adapter, struct xmit_frame *xmit_frame, u32 max_wating_ms); +#endif + +void rtw_hal_notch_filter(_adapter * adapter, bool enable); +void rtw_hal_reset_security_engine(_adapter * adapter); + +s32 rtw_hal_c2h_handler(_adapter *adapter, struct c2h_evt_hdr *c2h_evt); +c2h_id_filter rtw_hal_c2h_id_filter_ccx(_adapter *adapter); + +#endif //__HAL_INTF_H__ --- linux-raspi2-4.2.0.orig/drivers/net/wireless/rtl8192cu/include/ieee80211.h +++ linux-raspi2-4.2.0/drivers/net/wireless/rtl8192cu/include/ieee80211.h @@ -0,0 +1,1579 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved. + * + * 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 + * published by the Free Software Foundation. + * + * 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 Street, Fifth Floor, Boston, MA 02110, USA + * + * + ******************************************************************************/ +#ifndef __IEEE80211_H +#define __IEEE80211_H + + +#ifndef CONFIG_RTL8711FW + + #include + #include + #include + #include "wifi.h" + + #if defined PLATFORM_OS_XP + #include + #endif + #if defined PLATFORM_LINUX + #include + #endif +#else + + #include + +#endif + +#define MGMT_QUEUE_NUM 5 + +#define ETH_ALEN 6 +#define ETH_TYPE_LEN 2 +#define PAYLOAD_TYPE_LEN 1 + +#ifdef CONFIG_AP_MODE + +#define RTL_IOCTL_HOSTAPD (SIOCIWFIRSTPRIV + 28) + +/* RTL871X_IOCTL_HOSTAPD ioctl() cmd: */ +enum { + RTL871X_HOSTAPD_FLUSH = 1, + RTL871X_HOSTAPD_ADD_STA = 2, + RTL871X_HOSTAPD_REMOVE_STA = 3, + RTL871X_HOSTAPD_GET_INFO_STA = 4, + /* REMOVED: PRISM2_HOSTAPD_RESET_TXEXC_STA = 5, */ + RTL871X_HOSTAPD_GET_WPAIE_STA = 5, + RTL871X_SET_ENCRYPTION = 6, + RTL871X_GET_ENCRYPTION = 7, + RTL871X_HOSTAPD_SET_FLAGS_STA = 8, + RTL871X_HOSTAPD_GET_RID = 9, + RTL871X_HOSTAPD_SET_RID = 10, + RTL871X_HOSTAPD_SET_ASSOC_AP_ADDR = 11, + RTL871X_HOSTAPD_SET_GENERIC_ELEMENT = 12, + RTL871X_HOSTAPD_MLME = 13, + RTL871X_HOSTAPD_SCAN_REQ = 14, + RTL871X_HOSTAPD_STA_CLEAR_STATS = 15, + RTL871X_HOSTAPD_SET_BEACON=16, + RTL871X_HOSTAPD_SET_WPS_BEACON = 17, + RTL871X_HOSTAPD_SET_WPS_PROBE_RESP = 18, + RTL871X_HOSTAPD_SET_WPS_ASSOC_RESP = 19, + RTL871X_HOSTAPD_SET_HIDDEN_SSID = 20, + RTL871X_HOSTAPD_SET_MACADDR_ACL = 21, + RTL871X_HOSTAPD_ACL_ADD_STA = 22, + RTL871X_HOSTAPD_ACL_REMOVE_STA = 23, +}; + +/* STA flags */ +#define WLAN_STA_AUTH BIT(0) +#define WLAN_STA_ASSOC BIT(1) +#define WLAN_STA_PS BIT(2) +#define WLAN_STA_TIM BIT(3) +#define WLAN_STA_PERM BIT(4) +#define WLAN_STA_AUTHORIZED BIT(5) +#define WLAN_STA_PENDING_POLL BIT(6) /* pending activity poll not ACKed */ +#define WLAN_STA_SHORT_PREAMBLE BIT(7) +#define WLAN_STA_PREAUTH BIT(8) +#define WLAN_STA_WME BIT(9) +#define WLAN_STA_MFP BIT(10) +#define WLAN_STA_HT BIT(11) +#define WLAN_STA_WPS BIT(12) +#define WLAN_STA_MAYBE_WPS BIT(13) +#define WLAN_STA_NONERP BIT(31) + +#endif + +#define IEEE_CMD_SET_WPA_PARAM 1 +#define IEEE_CMD_SET_WPA_IE 2 +#define IEEE_CMD_SET_ENCRYPTION 3 +#define IEEE_CMD_MLME 4 + +#define IEEE_PARAM_WPA_ENABLED 1 +#define IEEE_PARAM_TKIP_COUNTERMEASURES 2 +#define IEEE_PARAM_DROP_UNENCRYPTED 3 +#define IEEE_PARAM_PRIVACY_INVOKED 4 +#define IEEE_PARAM_AUTH_ALGS 5 +#define IEEE_PARAM_IEEE_802_1X 6 +#define IEEE_PARAM_WPAX_SELECT 7 + +#define AUTH_ALG_OPEN_SYSTEM 0x1 +#define AUTH_ALG_SHARED_KEY 0x2 +#define AUTH_ALG_LEAP 0x00000004 + +#define IEEE_MLME_STA_DEAUTH 1 +#define IEEE_MLME_STA_DISASSOC 2 + +#define IEEE_CRYPT_ERR_UNKNOWN_ALG 2 +#define IEEE_CRYPT_ERR_UNKNOWN_ADDR 3 +#define IEEE_CRYPT_ERR_CRYPT_INIT_FAILED 4 +#define IEEE_CRYPT_ERR_KEY_SET_FAILED 5 +#define IEEE_CRYPT_ERR_TX_KEY_SET_FAILED 6 +#define IEEE_CRYPT_ERR_CARD_CONF_FAILED 7 + + +#define IEEE_CRYPT_ALG_NAME_LEN 16 + +#define WPA_CIPHER_NONE BIT(0) +#define WPA_CIPHER_WEP40 BIT(1) +#define WPA_CIPHER_WEP104 BIT(2) +#define WPA_CIPHER_TKIP BIT(3) +#define WPA_CIPHER_CCMP BIT(4) + + + +#define WPA_SELECTOR_LEN 4 +extern u8 RTW_WPA_OUI_TYPE[] ; +extern u16 RTW_WPA_VERSION ; +extern u8 WPA_AUTH_KEY_MGMT_NONE[]; +extern u8 WPA_AUTH_KEY_MGMT_UNSPEC_802_1X[]; +extern u8 WPA_AUTH_KEY_MGMT_PSK_OVER_802_1X[]; +extern u8 WPA_CIPHER_SUITE_NONE[]; +extern u8 WPA_CIPHER_SUITE_WEP40[]; +extern u8 WPA_CIPHER_SUITE_TKIP[]; +extern u8 WPA_CIPHER_SUITE_WRAP[]; +extern u8 WPA_CIPHER_SUITE_CCMP[]; +extern u8 WPA_CIPHER_SUITE_WEP104[]; + + +#define RSN_HEADER_LEN 4 +#define RSN_SELECTOR_LEN 4 + +extern u16 RSN_VERSION_BSD; +extern u8 RSN_AUTH_KEY_MGMT_UNSPEC_802_1X[]; +extern u8 RSN_AUTH_KEY_MGMT_PSK_OVER_802_1X[]; +extern u8 RSN_CIPHER_SUITE_NONE[]; +extern u8 RSN_CIPHER_SUITE_WEP40[]; +extern u8 RSN_CIPHER_SUITE_TKIP[]; +extern u8 RSN_CIPHER_SUITE_WRAP[]; +extern u8 RSN_CIPHER_SUITE_CCMP[]; +extern u8 RSN_CIPHER_SUITE_WEP104[]; + +typedef enum _RATR_TABLE_MODE{ + RATR_INX_WIRELESS_NGB = 0, // BGN 40 Mhz 2SS 1SS + RATR_INX_WIRELESS_NG = 1, // GN or N + RATR_INX_WIRELESS_NB = 2, // BGN 20 Mhz 2SS 1SS or BN + RATR_INX_WIRELESS_N = 3, + RATR_INX_WIRELESS_GB = 4, + RATR_INX_WIRELESS_G = 5, + RATR_INX_WIRELESS_B = 6, + RATR_INX_WIRELESS_MC = 7, + RATR_INX_WIRELESS_AC_N = 8, +}RATR_TABLE_MODE, *PRATR_TABLE_MODE; + +enum NETWORK_TYPE +{ + WIRELESS_INVALID = 0, + //Sub-Element + WIRELESS_11B = BIT(0), // tx: cck only , rx: cck only, hw: cck + WIRELESS_11G = BIT(1), // tx: ofdm only, rx: ofdm & cck, hw: cck & ofdm + WIRELESS_11A = BIT(2), // tx: ofdm only, rx: ofdm only, hw: ofdm only + WIRELESS_11_24N = BIT(3), // tx: MCS only, rx: MCS & cck, hw: MCS & cck + WIRELESS_11_5N = BIT(4), // tx: MCS only, rx: MCS & ofdm, hw: ofdm only + //WIRELESS_AUTO = BIT(5), + WIRELESS_AC = BIT(6), + + //Combination + WIRELESS_11BG = (WIRELESS_11B|WIRELESS_11G), // tx: cck & ofdm, rx: cck & ofdm & MCS, hw: cck & ofdm + WIRELESS_11G_24N = (WIRELESS_11G|WIRELESS_11_24N), // tx: ofdm & MCS, rx: ofdm & cck & MCS, hw: cck & ofdm + WIRELESS_11A_5N = (WIRELESS_11A|WIRELESS_11_5N), // tx: ofdm & MCS, rx: ofdm & MCS, hw: ofdm only + WIRELESS_11BG_24N = (WIRELESS_11B|WIRELESS_11G|WIRELESS_11_24N), // tx: ofdm & cck & MCS, rx: ofdm & cck & MCS, hw: ofdm & cck + WIRELESS_11AGN = (WIRELESS_11A|WIRELESS_11G|WIRELESS_11_24N|WIRELESS_11_5N), // tx: ofdm & MCS, rx: ofdm & MCS, hw: ofdm only + WIRELESS_11ABGN = (WIRELESS_11A|WIRELESS_11B|WIRELESS_11G|WIRELESS_11_24N|WIRELESS_11_5N), +}; + +#define SUPPORTED_24G_NETTYPE_MSK (WIRELESS_11B | WIRELESS_11G | WIRELESS_11_24N) +#define SUPPORTED_5G_NETTYPE_MSK (WIRELESS_11A | WIRELESS_11_5N) + +#define IsSupported24G(NetType) ((NetType) & SUPPORTED_24G_NETTYPE_MSK ? _TRUE : _FALSE) +#define IsSupported5G(NetType) ((NetType) & SUPPORTED_5G_NETTYPE_MSK ? _TRUE : _FALSE) + +#define IsEnableHWCCK(NetType) IsSupported24G(NetType) +#define IsEnableHWOFDM(NetType) ((NetType) & (WIRELESS_11G|WIRELESS_11_24N|SUPPORTED_5G_NETTYPE_MSK) ? _TRUE : _FALSE) + +#define IsSupportedRxCCK(NetType) IsEnableHWCCK(NetType) +#define IsSupportedRxOFDM(NetType) IsEnableHWOFDM(NetType) +#define IsSupportedRxMCS(NetType) IsEnableHWOFDM(NetType) + +#define IsSupportedTxCCK(NetType) ((NetType) & (WIRELESS_11B) ? _TRUE : _FALSE) +#define IsSupportedTxOFDM(NetType) ((NetType) & (WIRELESS_11G|WIRELESS_11A) ? _TRUE : _FALSE) +#define IsSupportedTxMCS(NetType) ((NetType) & (WIRELESS_11_24N|WIRELESS_11_5N) ? _TRUE : _FALSE) + + +typedef struct ieee_param { + u32 cmd; + u8 sta_addr[ETH_ALEN]; + union { + struct { + u8 name; + u32 value; + } wpa_param; + struct { + u32 len; + u8 reserved[32]; + u8 data[0]; + } wpa_ie; + struct{ + int command; + int reason_code; + } mlme; + struct { + u8 alg[IEEE_CRYPT_ALG_NAME_LEN]; + u8 set_tx; + u32 err; + u8 idx; + u8 seq[8]; /* sequence counter (set: RX, get: TX) */ + u16 key_len; + u8 key[0]; + } crypt; +#ifdef CONFIG_AP_MODE + struct { + u16 aid; + u16 capability; + int flags; + u8 tx_supp_rates[16]; + struct rtw_ieee80211_ht_cap ht_cap; + } add_sta; + struct { + u8 reserved[2];//for set max_num_sta + u8 buf[0]; + } bcn_ie; +#endif + + } u; +}ieee_param; + +#ifdef CONFIG_AP_MODE +typedef struct ieee_param_ex { + u32 cmd; + u8 sta_addr[ETH_ALEN]; + u8 data[0]; +}ieee_param_ex; + +struct sta_data{ + u16 aid; + u16 capability; + int flags; + u32 sta_set; + u8 tx_supp_rates[16]; + u32 tx_supp_rates_len; + struct rtw_ieee80211_ht_cap ht_cap; + u64 rx_pkts; + u64 rx_bytes; + u64 rx_drops; + u64 tx_pkts; + u64 tx_bytes; + u64 tx_drops; +}; +#endif + + +#if WIRELESS_EXT < 17 +#define IW_QUAL_QUAL_INVALID 0x10 +#define IW_QUAL_LEVEL_INVALID 0x20 +#define IW_QUAL_NOISE_INVALID 0x40 +#define IW_QUAL_QUAL_UPDATED 0x1 +#define IW_QUAL_LEVEL_UPDATED 0x2 +#define IW_QUAL_NOISE_UPDATED 0x4 +#endif + +#define IEEE80211_DATA_LEN 2304 +/* Maximum size for the MA-UNITDATA primitive, 802.11 standard section + 6.2.1.1.2. + + The figure in section 7.1.2 suggests a body size of up to 2312 + bytes is allowed, which is a bit confusing, I suspect this + represents the 2304 bytes of real data, plus a possible 8 bytes of + WEP IV and ICV. (this interpretation suggested by Ramiro Barreiro) */ + + +#define IEEE80211_HLEN 30 +#define IEEE80211_FRAME_LEN (IEEE80211_DATA_LEN + IEEE80211_HLEN) + + +/* this is stolen from ipw2200 driver */ +#define IEEE_IBSS_MAC_HASH_SIZE 31 + +struct ieee_ibss_seq { + u8 mac[ETH_ALEN]; + u16 seq_num; + u16 frag_num; + unsigned long packet_time; + _list list; +}; + +#if defined(PLATFORM_LINUX) || defined(CONFIG_RTL8711FW)||defined(PLATFORM_FREEBSD) + +struct rtw_ieee80211_hdr { + u16 frame_ctl; + u16 duration_id; + u8 addr1[ETH_ALEN]; + u8 addr2[ETH_ALEN]; + u8 addr3[ETH_ALEN]; + u16 seq_ctl; + u8 addr4[ETH_ALEN]; +} __attribute__ ((packed)); + +struct rtw_ieee80211_hdr_3addr { + u16 frame_ctl; + u16 duration_id; + u8 addr1[ETH_ALEN]; + u8 addr2[ETH_ALEN]; + u8 addr3[ETH_ALEN]; + u16 seq_ctl; +} __attribute__ ((packed)); + + +struct rtw_ieee80211_hdr_qos { + u16 frame_ctl; + u16 duration_id; + u8 addr1[ETH_ALEN]; + u8 addr2[ETH_ALEN]; + u8 addr3[ETH_ALEN]; + u16 seq_ctl; + u8 addr4[ETH_ALEN]; + u16 qc; +} __attribute__ ((packed)); + +struct rtw_ieee80211_hdr_3addr_qos { + u16 frame_ctl; + u16 duration_id; + u8 addr1[ETH_ALEN]; + u8 addr2[ETH_ALEN]; + u8 addr3[ETH_ALEN]; + u16 seq_ctl; + u16 qc; +} __attribute__ ((packed)); + +struct eapol { + u8 snap[6]; + u16 ethertype; + u8 version; + u8 type; + u16 length; +} __attribute__ ((packed)); + +#endif + + + +#ifdef PLATFORM_WINDOWS + +#pragma pack(1) +struct rtw_ieee80211_hdr { + u16 frame_ctl; + u16 duration_id; + u8 addr1[ETH_ALEN]; + u8 addr2[ETH_ALEN]; + u8 addr3[ETH_ALEN]; + u16 seq_ctl; + u8 addr4[ETH_ALEN]; +}; + +struct rtw_ieee80211_hdr_3addr { + u16 frame_ctl; + u16 duration_id; + u8 addr1[ETH_ALEN]; + u8 addr2[ETH_ALEN]; + u8 addr3[ETH_ALEN]; + u16 seq_ctl; +}; + + +struct rtw_ieee80211_hdr_qos { + struct rtw_ieee80211_hdr wlan_hdr; + u16 qc; +}; + +struct rtw_ieee80211_hdr_3addr_qos { + struct rtw_ieee80211_hdr_3addr wlan_hdr; + u16 qc; +}; + +struct eapol { + u8 snap[6]; + u16 ethertype; + u8 version; + u8 type; + u16 length; +}; +#pragma pack() + +#endif + + + +enum eap_type { + EAP_PACKET = 0, + EAPOL_START, + EAPOL_LOGOFF, + EAPOL_KEY, + EAPOL_ENCAP_ASF_ALERT +}; + +#define IEEE80211_3ADDR_LEN 24 +#define IEEE80211_4ADDR_LEN 30 +#define IEEE80211_FCS_LEN 4 + +#define MIN_FRAG_THRESHOLD 256U +#define MAX_FRAG_THRESHOLD 2346U + +/* Frame control field constants */ +#define RTW_IEEE80211_FCTL_VERS 0x0003 +#define RTW_IEEE80211_FCTL_FTYPE 0x000c +#define RTW_IEEE80211_FCTL_STYPE 0x00f0 +#define RTW_IEEE80211_FCTL_TODS 0x0100 +#define RTW_IEEE80211_FCTL_FROMDS 0x0200 +#define RTW_IEEE80211_FCTL_MOREFRAGS 0x0400 +#define RTW_IEEE80211_FCTL_RETRY 0x0800 +#define RTW_IEEE80211_FCTL_PM 0x1000 +#define RTW_IEEE80211_FCTL_MOREDATA 0x2000 +#define RTW_IEEE80211_FCTL_PROTECTED 0x4000 +#define RTW_IEEE80211_FCTL_ORDER 0x8000 +#define RTW_IEEE80211_FCTL_CTL_EXT 0x0f00 + +#define RTW_IEEE80211_FTYPE_MGMT 0x0000 +#define RTW_IEEE80211_FTYPE_CTL 0x0004 +#define RTW_IEEE80211_FTYPE_DATA 0x0008 +#define RTW_IEEE80211_FTYPE_EXT 0x000c + +/* management */ +#define RTW_IEEE80211_STYPE_ASSOC_REQ 0x0000 +#define RTW_IEEE80211_STYPE_ASSOC_RESP 0x0010 +#define RTW_IEEE80211_STYPE_REASSOC_REQ 0x0020 +#define RTW_IEEE80211_STYPE_REASSOC_RESP 0x0030 +#define RTW_IEEE80211_STYPE_PROBE_REQ 0x0040 +#define RTW_IEEE80211_STYPE_PROBE_RESP 0x0050 +#define RTW_IEEE80211_STYPE_BEACON 0x0080 +#define RTW_IEEE80211_STYPE_ATIM 0x0090 +#define RTW_IEEE80211_STYPE_DISASSOC 0x00A0 +#define RTW_IEEE80211_STYPE_AUTH 0x00B0 +#define RTW_IEEE80211_STYPE_DEAUTH 0x00C0 +#define RTW_IEEE80211_STYPE_ACTION 0x00D0 + +/* control */ +#define RTW_IEEE80211_STYPE_CTL_EXT 0x0060 +#define RTW_IEEE80211_STYPE_BACK_REQ 0x0080 +#define RTW_IEEE80211_STYPE_BACK 0x0090 +#define RTW_IEEE80211_STYPE_PSPOLL 0x00A0 +#define RTW_IEEE80211_STYPE_RTS 0x00B0 +#define RTW_IEEE80211_STYPE_CTS 0x00C0 +#define RTW_IEEE80211_STYPE_ACK 0x00D0 +#define RTW_IEEE80211_STYPE_CFEND 0x00E0 +#define RTW_IEEE80211_STYPE_CFENDACK 0x00F0 + +/* data */ +#define RTW_IEEE80211_STYPE_DATA 0x0000 +#define RTW_IEEE80211_STYPE_DATA_CFACK 0x0010 +#define RTW_IEEE80211_STYPE_DATA_CFPOLL 0x0020 +#define RTW_IEEE80211_STYPE_DATA_CFACKPOLL 0x0030 +#define RTW_IEEE80211_STYPE_NULLFUNC 0x0040 +#define RTW_IEEE80211_STYPE_CFACK 0x0050 +#define RTW_IEEE80211_STYPE_CFPOLL 0x0060 +#define RTW_IEEE80211_STYPE_CFACKPOLL 0x0070 +#define RTW_IEEE80211_STYPE_QOS_DATA 0x0080 +#define RTW_IEEE80211_STYPE_QOS_DATA_CFACK 0x0090 +#define RTW_IEEE80211_STYPE_QOS_DATA_CFPOLL 0x00A0 +#define RTW_IEEE80211_STYPE_QOS_DATA_CFACKPOLL 0x00B0 +#define RTW_IEEE80211_STYPE_QOS_NULLFUNC 0x00C0 +#define RTW_IEEE80211_STYPE_QOS_CFACK 0x00D0 +#define RTW_IEEE80211_STYPE_QOS_CFPOLL 0x00E0 +#define RTW_IEEE80211_STYPE_QOS_CFACKPOLL 0x00F0 + +/* sequence control field */ +#define RTW_IEEE80211_SCTL_FRAG 0x000F +#define RTW_IEEE80211_SCTL_SEQ 0xFFF0 + + +#define RTW_ERP_INFO_NON_ERP_PRESENT BIT(0) +#define RTW_ERP_INFO_USE_PROTECTION BIT(1) +#define RTW_ERP_INFO_BARKER_PREAMBLE_MODE BIT(2) + +/* QoS,QOS */ +#define NORMAL_ACK 0 +#define NO_ACK 1 +#define NON_EXPLICIT_ACK 2 +#define BLOCK_ACK 3 + +#ifndef ETH_P_PAE +#define ETH_P_PAE 0x888E /* Port Access Entity (IEEE 802.1X) */ +#endif /* ETH_P_PAE */ + +#define ETH_P_PREAUTH 0x88C7 /* IEEE 802.11i pre-authentication */ + +#define ETH_P_ECONET 0x0018 + +#ifndef ETH_P_80211_RAW +#define ETH_P_80211_RAW (ETH_P_ECONET + 1) +#endif + +/* IEEE 802.11 defines */ + +#define P80211_OUI_LEN 3 + +#if defined(PLATFORM_LINUX) || defined(CONFIG_RTL8711FW) || defined(PLATFORM_FREEBSD) + +struct ieee80211_snap_hdr { + + u8 dsap; /* always 0xAA */ + u8 ssap; /* always 0xAA */ + u8 ctrl; /* always 0x03 */ + u8 oui[P80211_OUI_LEN]; /* organizational universal id */ + +} __attribute__ ((packed)); + +#endif + +#ifdef PLATFORM_WINDOWS + +#pragma pack(1) +struct ieee80211_snap_hdr { + + u8 dsap; /* always 0xAA */ + u8 ssap; /* always 0xAA */ + u8 ctrl; /* always 0x03 */ + u8 oui[P80211_OUI_LEN]; /* organizational universal id */ + +}; +#pragma pack() + +#endif + + +#define SNAP_SIZE sizeof(struct ieee80211_snap_hdr) + +#define WLAN_FC_GET_TYPE(fc) ((fc) & RTW_IEEE80211_FCTL_FTYPE) +#define WLAN_FC_GET_STYPE(fc) ((fc) & RTW_IEEE80211_FCTL_STYPE) + +#define WLAN_QC_GET_TID(qc) ((qc) & 0x0f) + +#define WLAN_GET_SEQ_FRAG(seq) ((seq) & RTW_IEEE80211_SCTL_FRAG) +#define WLAN_GET_SEQ_SEQ(seq) ((seq) & RTW_IEEE80211_SCTL_SEQ) + +/* Authentication algorithms */ +#define WLAN_AUTH_OPEN 0 +#define WLAN_AUTH_SHARED_KEY 1 + +#define WLAN_AUTH_CHALLENGE_LEN 128 + +#define WLAN_CAPABILITY_BSS (1<<0) +#define WLAN_CAPABILITY_IBSS (1<<1) +#define WLAN_CAPABILITY_CF_POLLABLE (1<<2) +#define WLAN_CAPABILITY_CF_POLL_REQUEST (1<<3) +#define WLAN_CAPABILITY_PRIVACY (1<<4) +#define WLAN_CAPABILITY_SHORT_PREAMBLE (1<<5) +#define WLAN_CAPABILITY_PBCC (1<<6) +#define WLAN_CAPABILITY_CHANNEL_AGILITY (1<<7) +#define WLAN_CAPABILITY_SHORT_SLOT (1<<10) + +/* Status codes */ +#define WLAN_STATUS_SUCCESS 0 +#define WLAN_STATUS_UNSPECIFIED_FAILURE 1 +#define WLAN_STATUS_CAPS_UNSUPPORTED 10 +#define WLAN_STATUS_REASSOC_NO_ASSOC 11 +#define WLAN_STATUS_ASSOC_DENIED_UNSPEC 12 +#define WLAN_STATUS_NOT_SUPPORTED_AUTH_ALG 13 +#define WLAN_STATUS_UNKNOWN_AUTH_TRANSACTION 14 +#define WLAN_STATUS_CHALLENGE_FAIL 15 +#define WLAN_STATUS_AUTH_TIMEOUT 16 +#define WLAN_STATUS_AP_UNABLE_TO_HANDLE_NEW_STA 17 +#define WLAN_STATUS_ASSOC_DENIED_RATES 18 +/* 802.11b */ +#define WLAN_STATUS_ASSOC_DENIED_NOSHORT 19 +#define WLAN_STATUS_ASSOC_DENIED_NOPBCC 20 +#define WLAN_STATUS_ASSOC_DENIED_NOAGILITY 21 + +/* Reason codes */ +#define WLAN_REASON_UNSPECIFIED 1 +#define WLAN_REASON_PREV_AUTH_NOT_VALID 2 +#define WLAN_REASON_DEAUTH_LEAVING 3 +#define WLAN_REASON_DISASSOC_DUE_TO_INACTIVITY 4 +#define WLAN_REASON_DISASSOC_AP_BUSY 5 +#define WLAN_REASON_CLASS2_FRAME_FROM_NONAUTH_STA 6 +#define WLAN_REASON_CLASS3_FRAME_FROM_NONASSOC_STA 7 +#define WLAN_REASON_DISASSOC_STA_HAS_LEFT 8 +#define WLAN_REASON_STA_REQ_ASSOC_WITHOUT_AUTH 9 +#define WLAN_REASON_JOIN_WRONG_CHANNEL 65534 +#define WLAN_REASON_EXPIRATION_CHK 65535 + +/* Information Element IDs */ +#define WLAN_EID_SSID 0 +#define WLAN_EID_SUPP_RATES 1 +#define WLAN_EID_FH_PARAMS 2 +#define WLAN_EID_DS_PARAMS 3 +#define WLAN_EID_CF_PARAMS 4 +#define WLAN_EID_TIM 5 +#define WLAN_EID_IBSS_PARAMS 6 +#define WLAN_EID_CHALLENGE 16 +/* EIDs defined by IEEE 802.11h - START */ +#define WLAN_EID_PWR_CONSTRAINT 32 +#define WLAN_EID_PWR_CAPABILITY 33 +#define WLAN_EID_TPC_REQUEST 34 +#define WLAN_EID_TPC_REPORT 35 +#define WLAN_EID_SUPPORTED_CHANNELS 36 +#define WLAN_EID_CHANNEL_SWITCH 37 +#define WLAN_EID_MEASURE_REQUEST 38 +#define WLAN_EID_MEASURE_REPORT 39 +#define WLAN_EID_QUITE 40 +#define WLAN_EID_IBSS_DFS 41 +/* EIDs defined by IEEE 802.11h - END */ +#define WLAN_EID_ERP_INFO 42 +#define WLAN_EID_HT_CAP 45 +#define WLAN_EID_RSN 48 +#define WLAN_EID_EXT_SUPP_RATES 50 +#define WLAN_EID_MOBILITY_DOMAIN 54 +#define WLAN_EID_FAST_BSS_TRANSITION 55 +#define WLAN_EID_TIMEOUT_INTERVAL 56 +#define WLAN_EID_RIC_DATA 57 +#define WLAN_EID_HT_OPERATION 61 +#define WLAN_EID_SECONDARY_CHANNEL_OFFSET 62 +#define WLAN_EID_20_40_BSS_COEXISTENCE 72 +#define WLAN_EID_20_40_BSS_INTOLERANT 73 +#define WLAN_EID_OVERLAPPING_BSS_SCAN_PARAMS 74 +#define WLAN_EID_MMIE 76 +#define WLAN_EID_VENDOR_SPECIFIC 221 +#define WLAN_EID_GENERIC (WLAN_EID_VENDOR_SPECIFIC) + +#define IEEE80211_MGMT_HDR_LEN 24 +#define IEEE80211_DATA_HDR3_LEN 24 +#define IEEE80211_DATA_HDR4_LEN 30 + + +#define IEEE80211_STATMASK_SIGNAL (1<<0) +#define IEEE80211_STATMASK_RSSI (1<<1) +#define IEEE80211_STATMASK_NOISE (1<<2) +#define IEEE80211_STATMASK_RATE (1<<3) +#define IEEE80211_STATMASK_WEMASK 0x7 + + +#define IEEE80211_CCK_MODULATION (1<<0) +#define IEEE80211_OFDM_MODULATION (1<<1) + +#define IEEE80211_24GHZ_BAND (1<<0) +#define IEEE80211_52GHZ_BAND (1<<1) + +#define IEEE80211_CCK_RATE_LEN 4 +#define IEEE80211_NUM_OFDM_RATESLEN 8 + + +#define IEEE80211_CCK_RATE_1MB 0x02 +#define IEEE80211_CCK_RATE_2MB 0x04 +#define IEEE80211_CCK_RATE_5MB 0x0B +#define IEEE80211_CCK_RATE_11MB 0x16 +#define IEEE80211_OFDM_RATE_LEN 8 +#define IEEE80211_OFDM_RATE_6MB 0x0C +#define IEEE80211_OFDM_RATE_9MB 0x12 +#define IEEE80211_OFDM_RATE_12MB 0x18 +#define IEEE80211_OFDM_RATE_18MB 0x24 +#define IEEE80211_OFDM_RATE_24MB 0x30 +#define IEEE80211_OFDM_RATE_36MB 0x48 +#define IEEE80211_OFDM_RATE_48MB 0x60 +#define IEEE80211_OFDM_RATE_54MB 0x6C +#define IEEE80211_BASIC_RATE_MASK 0x80 + +#define IEEE80211_CCK_RATE_1MB_MASK (1<<0) +#define IEEE80211_CCK_RATE_2MB_MASK (1<<1) +#define IEEE80211_CCK_RATE_5MB_MASK (1<<2) +#define IEEE80211_CCK_RATE_11MB_MASK (1<<3) +#define IEEE80211_OFDM_RATE_6MB_MASK (1<<4) +#define IEEE80211_OFDM_RATE_9MB_MASK (1<<5) +#define IEEE80211_OFDM_RATE_12MB_MASK (1<<6) +#define IEEE80211_OFDM_RATE_18MB_MASK (1<<7) +#define IEEE80211_OFDM_RATE_24MB_MASK (1<<8) +#define IEEE80211_OFDM_RATE_36MB_MASK (1<<9) +#define IEEE80211_OFDM_RATE_48MB_MASK (1<<10) +#define IEEE80211_OFDM_RATE_54MB_MASK (1<<11) + +#define IEEE80211_CCK_RATES_MASK 0x0000000F +#define IEEE80211_CCK_BASIC_RATES_MASK (IEEE80211_CCK_RATE_1MB_MASK | \ + IEEE80211_CCK_RATE_2MB_MASK) +#define IEEE80211_CCK_DEFAULT_RATES_MASK (IEEE80211_CCK_BASIC_RATES_MASK | \ + IEEE80211_CCK_RATE_5MB_MASK | \ + IEEE80211_CCK_RATE_11MB_MASK) + +#define IEEE80211_OFDM_RATES_MASK 0x00000FF0 +#define IEEE80211_OFDM_BASIC_RATES_MASK (IEEE80211_OFDM_RATE_6MB_MASK | \ + IEEE80211_OFDM_RATE_12MB_MASK | \ + IEEE80211_OFDM_RATE_24MB_MASK) +#define IEEE80211_OFDM_DEFAULT_RATES_MASK (IEEE80211_OFDM_BASIC_RATES_MASK | \ + IEEE80211_OFDM_RATE_9MB_MASK | \ + IEEE80211_OFDM_RATE_18MB_MASK | \ + IEEE80211_OFDM_RATE_36MB_MASK | \ + IEEE80211_OFDM_RATE_48MB_MASK | \ + IEEE80211_OFDM_RATE_54MB_MASK) +#define IEEE80211_DEFAULT_RATES_MASK (IEEE80211_OFDM_DEFAULT_RATES_MASK | \ + IEEE80211_CCK_DEFAULT_RATES_MASK) + +#define IEEE80211_NUM_OFDM_RATES 8 +#define IEEE80211_NUM_CCK_RATES 4 +#define IEEE80211_OFDM_SHIFT_MASK_A 4 + + + + +/* NOTE: This data is for statistical purposes; not all hardware provides this + * information for frames received. Not setting these will not cause + * any adverse affects. */ +struct ieee80211_rx_stats { + //u32 mac_time[2]; + s8 rssi; + u8 signal; + u8 noise; + u8 received_channel; + u16 rate; /* in 100 kbps */ + //u8 control; + u8 mask; + u8 freq; + u16 len; +}; + +/* IEEE 802.11 requires that STA supports concurrent reception of at least + * three fragmented frames. This define can be increased to support more + * concurrent frames, but it should be noted that each entry can consume about + * 2 kB of RAM and increasing cache size will slow down frame reassembly. */ +#define IEEE80211_FRAG_CACHE_LEN 4 + +struct ieee80211_frag_entry { + u32 first_frag_time; + uint seq; + uint last_frag; + uint qos; //jackson + uint tid; //jackson + struct sk_buff *skb; + u8 src_addr[ETH_ALEN]; + u8 dst_addr[ETH_ALEN]; +}; + +#ifndef PLATFORM_FREEBSD //Baron BSD has already defined +struct ieee80211_stats { + uint tx_unicast_frames; + uint tx_multicast_frames; + uint tx_fragments; + uint tx_unicast_octets; + uint tx_multicast_octets; + uint tx_deferred_transmissions; + uint tx_single_retry_frames; + uint tx_multiple_retry_frames; + uint tx_retry_limit_exceeded; + uint tx_discards; + uint rx_unicast_frames; + uint rx_multicast_frames; + uint rx_fragments; + uint rx_unicast_octets; + uint rx_multicast_octets; + uint rx_fcs_errors; + uint rx_discards_no_buffer; + uint tx_discards_wrong_sa; + uint rx_discards_undecryptable; + uint rx_message_in_msg_fragments; + uint rx_message_in_bad_msg_fragments; +}; +#endif //PLATFORM_FREEBSD +struct ieee80211_softmac_stats{ + uint rx_ass_ok; + uint rx_ass_err; + uint rx_probe_rq; + uint tx_probe_rs; + uint tx_beacons; + uint rx_auth_rq; + uint rx_auth_rs_ok; + uint rx_auth_rs_err; + uint tx_auth_rq; + uint no_auth_rs; + uint no_ass_rs; + uint tx_ass_rq; + uint rx_ass_rq; + uint tx_probe_rq; + uint reassoc; + uint swtxstop; + uint swtxawake; +}; + +#define SEC_KEY_1 (1<<0) +#define SEC_KEY_2 (1<<1) +#define SEC_KEY_3 (1<<2) +#define SEC_KEY_4 (1<<3) +#define SEC_ACTIVE_KEY (1<<4) +#define SEC_AUTH_MODE (1<<5) +#define SEC_UNICAST_GROUP (1<<6) +#define SEC_LEVEL (1<<7) +#define SEC_ENABLED (1<<8) + +#define SEC_LEVEL_0 0 /* None */ +#define SEC_LEVEL_1 1 /* WEP 40 and 104 bit */ +#define SEC_LEVEL_2 2 /* Level 1 + TKIP */ +#define SEC_LEVEL_2_CKIP 3 /* Level 1 + CKIP */ +#define SEC_LEVEL_3 4 /* Level 2 + CCMP */ + +#define WEP_KEYS 4 +#define WEP_KEY_LEN 13 + +#ifdef CONFIG_IEEE80211W +#define BIP_MAX_KEYID 5 +#define BIP_AAD_SIZE 20 +#endif //CONFIG_IEEE80211W + +#if defined(PLATFORM_LINUX) || defined(CONFIG_RTL8711FW) + +struct ieee80211_security { + u16 active_key:2, + enabled:1, + auth_mode:2, + auth_algo:4, + unicast_uses_group:1; + u8 key_sizes[WEP_KEYS]; + u8 keys[WEP_KEYS][WEP_KEY_LEN]; + u8 level; + u16 flags; +} __attribute__ ((packed)); + +#endif + +#ifdef PLATFORM_WINDOWS + +#pragma pack(1) +struct ieee80211_security { + u16 active_key:2, + enabled:1, + auth_mode:2, + auth_algo:4, + unicast_uses_group:1; + u8 key_sizes[WEP_KEYS]; + u8 keys[WEP_KEYS][WEP_KEY_LEN]; + u8 level; + u16 flags; +} ; +#pragma pack() + +#endif + +/* + + 802.11 data frame from AP + + ,-------------------------------------------------------------------. +Bytes | 2 | 2 | 6 | 6 | 6 | 2 | 0..2312 | 4 | + |------|------|---------|---------|---------|------|---------|------| +Desc. | ctrl | dura | DA/RA | TA | SA | Sequ | frame | fcs | + | | tion | (BSSID) | | | ence | data | | + `-------------------------------------------------------------------' + +Total: 28-2340 bytes + +*/ + +struct ieee80211_header_data { + u16 frame_ctl; + u16 duration_id; + u8 addr1[6]; + u8 addr2[6]; + u8 addr3[6]; + u16 seq_ctrl; +}; + +#define BEACON_PROBE_SSID_ID_POSITION 12 + +/* Management Frame Information Element Types */ +#define MFIE_TYPE_SSID 0 +#define MFIE_TYPE_RATES 1 +#define MFIE_TYPE_FH_SET 2 +#define MFIE_TYPE_DS_SET 3 +#define MFIE_TYPE_CF_SET 4 +#define MFIE_TYPE_TIM 5 +#define MFIE_TYPE_IBSS_SET 6 +#define MFIE_TYPE_CHALLENGE 16 +#define MFIE_TYPE_ERP 42 +#define MFIE_TYPE_RSN 48 +#define MFIE_TYPE_RATES_EX 50 +#define MFIE_TYPE_GENERIC 221 + +#if defined(PLATFORM_LINUX) || defined(CONFIG_RTL8711FW) + +struct ieee80211_info_element_hdr { + u8 id; + u8 len; +} __attribute__ ((packed)); + +struct ieee80211_info_element { + u8 id; + u8 len; + u8 data[0]; +} __attribute__ ((packed)); +#endif + +#ifdef PLATFORM_WINDOWS + +#pragma pack(1) +struct ieee80211_info_element_hdr { + u8 id; + u8 len; +} ; + +struct ieee80211_info_element { + u8 id; + u8 len; + u8 data[0]; +} ; +#pragma pack() + +#endif + + +/* + * These are the data types that can make up management packets + * + u16 auth_algorithm; + u16 auth_sequence; + u16 beacon_interval; + u16 capability; + u8 current_ap[ETH_ALEN]; + u16 listen_interval; + struct { + u16 association_id:14, reserved:2; + } __attribute__ ((packed)); + u32 time_stamp[2]; + u16 reason; + u16 status; +*/ + +#define IEEE80211_DEFAULT_TX_ESSID "Penguin" +#define IEEE80211_DEFAULT_BASIC_RATE 10 + + +#if defined(PLATFORM_LINUX) || defined(CONFIG_RTL8711FW) + + +struct ieee80211_authentication { + struct ieee80211_header_data header; + u16 algorithm; + u16 transaction; + u16 status; + //struct ieee80211_info_element_hdr info_element; +} __attribute__ ((packed)); + + +struct ieee80211_probe_response { + struct ieee80211_header_data header; + u32 time_stamp[2]; + u16 beacon_interval; + u16 capability; + struct ieee80211_info_element info_element; +} __attribute__ ((packed)); + +struct ieee80211_probe_request { + struct ieee80211_header_data header; + /*struct ieee80211_info_element info_element;*/ +} __attribute__ ((packed)); + +struct ieee80211_assoc_request_frame { + struct rtw_ieee80211_hdr_3addr header; + u16 capability; + u16 listen_interval; + //u8 current_ap[ETH_ALEN]; + struct ieee80211_info_element_hdr info_element; +} __attribute__ ((packed)); + +struct ieee80211_assoc_response_frame { + struct rtw_ieee80211_hdr_3addr header; + u16 capability; + u16 status; + u16 aid; +// struct ieee80211_info_element info_element; /* supported rates */ +} __attribute__ ((packed)); +#endif + + + +#ifdef PLATFORM_WINDOWS + +#pragma pack(1) + +struct ieee80211_authentication { + struct ieee80211_header_data header; + u16 algorithm; + u16 transaction; + u16 status; + //struct ieee80211_info_element_hdr info_element; +} ; + + +struct ieee80211_probe_response { + struct ieee80211_header_data header; + u32 time_stamp[2]; + u16 beacon_interval; + u16 capability; + struct ieee80211_info_element info_element; +} ; + +struct ieee80211_probe_request { + struct ieee80211_header_data header; + /*struct ieee80211_info_element info_element;*/ +} ; + +struct ieee80211_assoc_request_frame { + struct rtw_ieee80211_hdr_3addr header; + u16 capability; + u16 listen_interval; + //u8 current_ap[ETH_ALEN]; + struct ieee80211_info_element_hdr info_element; +} ; + +struct ieee80211_assoc_response_frame { + struct rtw_ieee80211_hdr_3addr header; + u16 capability; + u16 status; + u16 aid; +// struct ieee80211_info_element info_element; /* supported rates */ +}; + +#pragma pack() + +#endif + + + + +struct ieee80211_txb { + u8 nr_frags; + u8 encrypted; + u16 reserved; + u16 frag_size; + u16 payload_size; + struct sk_buff *fragments[0]; +}; + + +/* SWEEP TABLE ENTRIES NUMBER*/ +#define MAX_SWEEP_TAB_ENTRIES 42 +#define MAX_SWEEP_TAB_ENTRIES_PER_PACKET 7 +/* MAX_RATES_LENGTH needs to be 12. The spec says 8, and many APs + * only use 8, and then use extended rates for the remaining supported + * rates. Other APs, however, stick all of their supported rates on the + * main rates information element... */ +#define MAX_RATES_LENGTH ((u8)12) +#define MAX_RATES_EX_LENGTH ((u8)16) +#define MAX_NETWORK_COUNT 128 +#define MAX_CHANNEL_NUMBER 161 +#define IEEE80211_SOFTMAC_SCAN_TIME 400 +//(HZ / 2) +#define IEEE80211_SOFTMAC_ASSOC_RETRY_TIME (HZ * 2) + +#define CRC_LENGTH 4U + +#define MAX_WPA_IE_LEN (256) +#define MAX_WPS_IE_LEN (512) +#define MAX_P2P_IE_LEN (256) +#define MAX_WFD_IE_LEN (128) + +#define NETWORK_EMPTY_ESSID (1<<0) +#define NETWORK_HAS_OFDM (1<<1) +#define NETWORK_HAS_CCK (1<<2) + +#define IEEE80211_DTIM_MBCAST 4 +#define IEEE80211_DTIM_UCAST 2 +#define IEEE80211_DTIM_VALID 1 +#define IEEE80211_DTIM_INVALID 0 + +#define IEEE80211_PS_DISABLED 0 +#define IEEE80211_PS_UNICAST IEEE80211_DTIM_UCAST +#define IEEE80211_PS_MBCAST IEEE80211_DTIM_MBCAST +#define IW_ESSID_MAX_SIZE 32 +#if 0 +struct ieee80211_network { + /* These entries are used to identify a unique network */ + u8 bssid[ETH_ALEN]; + u8 channel; + /* Ensure null-terminated for any debug msgs */ + u8 ssid[IW_ESSID_MAX_SIZE + 1]; + u8 ssid_len; + u8 rssi; //relative signal strength + u8 sq; //signal quality + + /* These are network statistics */ + //struct ieee80211_rx_stats stats; + u16 capability; + u16 aid; + u8 rates[MAX_RATES_LENGTH]; + u8 rates_len; + u8 rates_ex[MAX_RATES_EX_LENGTH]; + u8 rates_ex_len; + + u8 edca_parmsets[18]; + + u8 mode; + u8 flags; + u8 time_stamp[8]; + u16 beacon_interval; + u16 listen_interval; + u16 atim_window; + u8 wpa_ie[MAX_WPA_IE_LEN]; + size_t wpa_ie_len; + u8 rsn_ie[MAX_WPA_IE_LEN]; + size_t rsn_ie_len; + u8 country[6]; + u8 dtim_period; + u8 dtim_data; + u8 power_constraint; + u8 qosinfo; + u8 qbssload[5]; + u8 network_type; + int join_res; + unsigned long last_scanned; +}; +#endif +/* +join_res: +-1: authentication fail +-2: association fail +> 0: TID +*/ + +#ifndef PLATFORM_FREEBSD //Baron BSD has already defined + +enum ieee80211_state { + + /* the card is not linked at all */ + IEEE80211_NOLINK = 0, + + /* IEEE80211_ASSOCIATING* are for BSS client mode + * the driver shall not perform RX filtering unless + * the state is LINKED. + * The driver shall just check for the state LINKED and + * defaults to NOLINK for ALL the other states (including + * LINKED_SCANNING) + */ + + /* the association procedure will start (wq scheduling)*/ + IEEE80211_ASSOCIATING, + IEEE80211_ASSOCIATING_RETRY, + + /* the association procedure is sending AUTH request*/ + IEEE80211_ASSOCIATING_AUTHENTICATING, + + /* the association procedure has successfully authentcated + * and is sending association request + */ + IEEE80211_ASSOCIATING_AUTHENTICATED, + + /* the link is ok. the card associated to a BSS or linked + * to a ibss cell or acting as an AP and creating the bss + */ + IEEE80211_LINKED, + + /* same as LINKED, but the driver shall apply RX filter + * rules as we are in NO_LINK mode. As the card is still + * logically linked, but it is doing a syncro site survey + * then it will be back to LINKED state. + */ + IEEE80211_LINKED_SCANNING, + +}; +#endif //PLATFORM_FREEBSD + +#define DEFAULT_MAX_SCAN_AGE (15 * HZ) +#define DEFAULT_FTS 2346 +#define MAC_FMT "%02x:%02x:%02x:%02x:%02x:%02x" +#define MAC_ARG(x) ((u8*)(x))[0],((u8*)(x))[1],((u8*)(x))[2],((u8*)(x))[3],((u8*)(x))[4],((u8*)(x))[5] + +#ifdef PLATFORM_FREEBSD //Baron change func to macro +#define is_multicast_mac_addr(Addr) ((((Addr[0]) & 0x01) == 0x01) && ((Addr[0]) != 0xff)) +#define is_broadcast_mac_addr(Addr) ((((Addr[0]) & 0xff) == 0xff) && (((Addr[1]) & 0xff) == 0xff) && \ +(((Addr[2]) & 0xff) == 0xff) && (((Addr[3]) & 0xff) == 0xff) && (((Addr[4]) & 0xff) == 0xff) && \ +(((Addr[5]) & 0xff) == 0xff)) +#else +extern __inline int is_multicast_mac_addr(const u8 *addr) +{ + return ((addr[0] != 0xff) && (0x01 & addr[0])); +} + +extern __inline int is_broadcast_mac_addr(const u8 *addr) +{ + return ((addr[0] == 0xff) && (addr[1] == 0xff) && (addr[2] == 0xff) && \ + (addr[3] == 0xff) && (addr[4] == 0xff) && (addr[5] == 0xff)); +} + +extern __inline int is_zero_mac_addr(const u8 *addr) +{ + return ((addr[0] == 0x00) && (addr[1] == 0x00) && (addr[2] == 0x00) && \ + (addr[3] == 0x00) && (addr[4] == 0x00) && (addr[5] == 0x00)); +} +#endif //PLATFORM_FREEBSD + +#define CFG_IEEE80211_RESERVE_FCS (1<<0) +#define CFG_IEEE80211_COMPUTE_FCS (1<<1) + +typedef struct tx_pending_t{ + int frag; + struct ieee80211_txb *txb; +}tx_pending_t; + + + +#define MAXTID 16 + +#define IEEE_A (1<<0) +#define IEEE_B (1<<1) +#define IEEE_G (1<<2) +#define IEEE_MODE_MASK (IEEE_A|IEEE_B|IEEE_G) + +//Baron move to ieee80211.c +int ieee80211_is_empty_essid(const char *essid, int essid_len); +int ieee80211_get_hdrlen(u16 fc); + +#if 0 +/* Action frame categories (IEEE 802.11-2007, 7.3.1.11, Table 7-24) */ +#define WLAN_ACTION_SPECTRUM_MGMT 0 +#define WLAN_ACTION_QOS 1 +#define WLAN_ACTION_DLS 2 +#define WLAN_ACTION_BLOCK_ACK 3 +#define WLAN_ACTION_RADIO_MEASUREMENT 5 +#define WLAN_ACTION_FT 6 +#define WLAN_ACTION_SA_QUERY 8 +#define WLAN_ACTION_WMM 17 +#endif + + +/* Action category code */ +enum rtw_ieee80211_category { + RTW_WLAN_CATEGORY_SPECTRUM_MGMT = 0, + RTW_WLAN_CATEGORY_QOS = 1, + RTW_WLAN_CATEGORY_DLS = 2, + RTW_WLAN_CATEGORY_BACK = 3, + RTW_WLAN_CATEGORY_PUBLIC = 4, //IEEE 802.11 public action frames + RTW_WLAN_CATEGORY_RADIO_MEASUREMENT = 5, + RTW_WLAN_CATEGORY_FT = 6, + RTW_WLAN_CATEGORY_HT = 7, + RTW_WLAN_CATEGORY_SA_QUERY = 8, + RTW_WLAN_CATEGORY_UNPROTECTED_WNM = 11, // add for CONFIG_IEEE80211W, none 11w also can use + RTW_WLAN_CATEGORY_TDLS = 12, + RTW_WLAN_CATEGORY_SELF_PROTECTED = 15, // add for CONFIG_IEEE80211W, none 11w also can use + RTW_WLAN_CATEGORY_WMM = 17, + RTW_WLAN_CATEGORY_P2P = 0x7f,//P2P action frames +}; + +/* SPECTRUM_MGMT action code */ +enum rtw_ieee80211_spectrum_mgmt_actioncode { + RTW_WLAN_ACTION_SPCT_MSR_REQ = 0, + RTW_WLAN_ACTION_SPCT_MSR_RPRT = 1, + RTW_WLAN_ACTION_SPCT_TPC_REQ = 2, + RTW_WLAN_ACTION_SPCT_TPC_RPRT = 3, + RTW_WLAN_ACTION_SPCT_CHL_SWITCH = 4, + RTW_WLAN_ACTION_SPCT_EXT_CHL_SWITCH = 5, +}; + +enum _PUBLIC_ACTION{ + ACT_PUBLIC_BSSCOEXIST = 0, // 20/40 BSS Coexistence + ACT_PUBLIC_DSE_ENABLE = 1, + ACT_PUBLIC_DSE_DEENABLE = 2, + ACT_PUBLIC_DSE_REG_LOCATION = 3, + ACT_PUBLIC_EXT_CHL_SWITCH = 4, + ACT_PUBLIC_DSE_MSR_REQ = 5, + ACT_PUBLIC_DSE_MSR_RPRT = 6, + ACT_PUBLIC_MP = 7, // Measurement Pilot + ACT_PUBLIC_DSE_PWR_CONSTRAINT = 8, + ACT_PUBLIC_VENDOR = 9, // for WIFI_DIRECT + ACT_PUBLIC_GAS_INITIAL_REQ = 10, + ACT_PUBLIC_GAS_INITIAL_RSP = 11, + ACT_PUBLIC_GAS_COMEBACK_REQ = 12, + ACT_PUBLIC_GAS_COMEBACK_RSP = 13, + ACT_PUBLIC_TDLS_DISCOVERY_RSP = 14, + ACT_PUBLIC_LOCATION_TRACK = 15, + ACT_PUBLIC_MAX +}; + +#ifdef CONFIG_TDLS +enum TDLS_ACTION_FIELD{ + TDLS_SETUP_REQUEST = 0, + TDLS_SETUP_RESPONSE = 1, + TDLS_SETUP_CONFIRM = 2, + TDLS_TEARDOWN = 3, + TDLS_PEER_TRAFFIC_INDICATION = 4, + TDLS_CHANNEL_SWITCH_REQUEST = 5, + TDLS_CHANNEL_SWITCH_RESPONSE = 6, + TDLS_PEER_PSM_REQUEST = 7, + TDLS_PEER_PSM_RESPONSE = 8, + TDLS_PEER_TRAFFIC_RESPONSE = 9, + TDLS_DISCOVERY_REQUEST = 10, + TDLS_DISCOVERY_RESPONSE = 14, //it's used in public action frame +}; + +#define TUNNELED_PROBE_REQ 15 +#define TUNNELED_PROBE_RSP 16 +#endif //CONFIG_TDLS + +/* BACK action code */ +enum rtw_ieee80211_back_actioncode { + RTW_WLAN_ACTION_ADDBA_REQ = 0, + RTW_WLAN_ACTION_ADDBA_RESP = 1, + RTW_WLAN_ACTION_DELBA = 2, +}; + +/* HT features action code */ +enum rtw_ieee80211_ht_actioncode { + RTW_WLAN_ACTION_NOTIFY_CH_WIDTH = 0, + RTW_WLAN_ACTION_SM_PS = 1, + RTW_WLAN_ACTION_PSPM = 2, + RTW_WLAN_ACTION_PCO_PHASE = 3, + RTW_WLAN_ACTION_MIMO_CSI_MX = 4, + RTW_WLAN_ACTION_MIMO_NONCP_BF = 5, + RTW_WLAN_ACTION_MIMP_CP_BF = 6, + RTW_WLAN_ACTION_ASEL_INDICATES_FB = 7, + RTW_WLAN_ACTION_HI_INFO_EXCHG = 8, +}; + +/* BACK (block-ack) parties */ +enum rtw_ieee80211_back_parties { + RTW_WLAN_BACK_RECIPIENT = 0, + RTW_WLAN_BACK_INITIATOR = 1, + RTW_WLAN_BACK_TIMER = 2, +}; + + +#define OUI_MICROSOFT 0x0050f2 /* Microsoft (also used in Wi-Fi specs) + * 00:50:F2 */ +#ifndef PLATFORM_FREEBSD //Baron BSD has defined +#define WME_OUI_TYPE 2 +#endif //PLATFORM_FREEBSD +#define WME_OUI_SUBTYPE_INFORMATION_ELEMENT 0 +#define WME_OUI_SUBTYPE_PARAMETER_ELEMENT 1 +#define WME_OUI_SUBTYPE_TSPEC_ELEMENT 2 +#define WME_VERSION 1 + +#define WME_ACTION_CODE_SETUP_REQUEST 0 +#define WME_ACTION_CODE_SETUP_RESPONSE 1 +#define WME_ACTION_CODE_TEARDOWN 2 + +#define WME_SETUP_RESPONSE_STATUS_ADMISSION_ACCEPTED 0 +#define WME_SETUP_RESPONSE_STATUS_INVALID_PARAMETERS 1 +#define WME_SETUP_RESPONSE_STATUS_REFUSED 3 + +#define WME_TSPEC_DIRECTION_UPLINK 0 +#define WME_TSPEC_DIRECTION_DOWNLINK 1 +#define WME_TSPEC_DIRECTION_BI_DIRECTIONAL 3 + + +#define OUI_BROADCOM 0x00904c /* Broadcom (Epigram) */ + +#define VENDOR_HT_CAPAB_OUI_TYPE 0x33 /* 00-90-4c:0x33 */ + +/** + * enum rtw_ieee80211_channel_flags - channel flags + * + * Channel flags set by the regulatory control code. + * + * @RTW_IEEE80211_CHAN_DISABLED: This channel is disabled. + * @RTW_IEEE80211_CHAN_PASSIVE_SCAN: Only passive scanning is permitted + * on this channel. + * @RTW_IEEE80211_CHAN_NO_IBSS: IBSS is not allowed on this channel. + * @RTW_IEEE80211_CHAN_RADAR: Radar detection is required on this channel. + * @RTW_IEEE80211_CHAN_NO_HT40PLUS: extension channel above this channel + * is not permitted. + * @RTW_IEEE80211_CHAN_NO_HT40MINUS: extension channel below this channel + * is not permitted. + */ + enum rtw_ieee80211_channel_flags { + RTW_IEEE80211_CHAN_DISABLED = 1<<0, + RTW_IEEE80211_CHAN_PASSIVE_SCAN = 1<<1, + RTW_IEEE80211_CHAN_NO_IBSS = 1<<2, + RTW_IEEE80211_CHAN_RADAR = 1<<3, + RTW_IEEE80211_CHAN_NO_HT40PLUS = 1<<4, + RTW_IEEE80211_CHAN_NO_HT40MINUS = 1<<5, + }; + + #define RTW_IEEE80211_CHAN_NO_HT40 \ + (RTW_IEEE80211_CHAN_NO_HT40PLUS | RTW_IEEE80211_CHAN_NO_HT40MINUS) + +/* Represent channel details, subset of ieee80211_channel */ +struct rtw_ieee80211_channel { + //enum ieee80211_band band; + //u16 center_freq; + u16 hw_value; + u32 flags; + //int max_antenna_gain; + //int max_power; + //int max_reg_power; + //bool beacon_found; + //u32 orig_flags; + //int orig_mag; + //int orig_mpwr; +}; + +#define CHAN_FMT \ + /*"band:%d, "*/ \ + /*"center_freq:%u, "*/ \ + "hw_value:%u, " \ + "flags:0x%08x" \ + /*"max_antenna_gain:%d\n"*/ \ + /*"max_power:%d\n"*/ \ + /*"max_reg_power:%d\n"*/ \ + /*"beacon_found:%u\n"*/ \ + /*"orig_flags:0x%08x\n"*/ \ + /*"orig_mag:%d\n"*/ \ + /*"orig_mpwr:%d\n"*/ + +#define CHAN_ARG(channel) \ + /*(channel)->band*/ \ + /*, (channel)->center_freq*/ \ + (channel)->hw_value \ + , (channel)->flags \ + /*, (channel)->max_antenna_gain*/ \ + /*, (channel)->max_power*/ \ + /*, (channel)->max_reg_power*/ \ + /*, (channel)->beacon_found*/ \ + /*, (channel)->orig_flags*/ \ + /*, (channel)->orig_mag*/ \ + /*, (channel)->orig_mpwr*/ \ + +/* Parsed Information Elements */ +struct rtw_ieee802_11_elems { + u8 *ssid; + u8 ssid_len; + u8 *supp_rates; + u8 supp_rates_len; + u8 *fh_params; + u8 fh_params_len; + u8 *ds_params; + u8 ds_params_len; + u8 *cf_params; + u8 cf_params_len; + u8 *tim; + u8 tim_len; + u8 *ibss_params; + u8 ibss_params_len; + u8 *challenge; + u8 challenge_len; + u8 *erp_info; + u8 erp_info_len; + u8 *ext_supp_rates; + u8 ext_supp_rates_len; + u8 *wpa_ie; + u8 wpa_ie_len; + u8 *rsn_ie; + u8 rsn_ie_len; + u8 *wme; + u8 wme_len; + u8 *wme_tspec; + u8 wme_tspec_len; + u8 *wps_ie; + u8 wps_ie_len; + u8 *power_cap; + u8 power_cap_len; + u8 *supp_channels; + u8 supp_channels_len; + u8 *mdie; + u8 mdie_len; + u8 *ftie; + u8 ftie_len; + u8 *timeout_int; + u8 timeout_int_len; + u8 *ht_capabilities; + u8 ht_capabilities_len; + u8 *ht_operation; + u8 ht_operation_len; + u8 *vendor_ht_cap; + u8 vendor_ht_cap_len; +}; + +typedef enum { ParseOK = 0, ParseUnknown = 1, ParseFailed = -1 } ParseRes; + +ParseRes rtw_ieee802_11_parse_elems(u8 *start, uint len, + struct rtw_ieee802_11_elems *elems, + int show_errors); + +u8 *rtw_set_fixed_ie(unsigned char *pbuf, unsigned int len, unsigned char *source, unsigned int *frlen); +u8 *rtw_set_ie(u8 *pbuf, sint index, uint len, u8 *source, uint *frlen); + +enum secondary_ch_offset { + SCN = 0, /* no secondary channel */ + SCA = 1, /* secondary channel above */ + SCB = 3, /* secondary channel below */ +}; +u8 secondary_ch_offset_to_hal_ch_offset(u8 ch_offset); +u8 hal_ch_offset_to_secondary_ch_offset(u8 ch_offset); +u8 *rtw_set_ie_ch_switch(u8 *buf, u32 *buf_len, u8 ch_switch_mode, u8 new_ch, u8 ch_switch_cnt); +u8 *rtw_set_ie_secondary_ch_offset(u8 *buf, u32 *buf_len, u8 secondary_ch_offset); +u8 *rtw_set_ie_mesh_ch_switch_parm(u8 *buf, u32 *buf_len, u8 ttl, u8 flags, u16 reason, u16 precedence); + +u8 *rtw_get_ie(u8*pbuf, sint index, sint *len, sint limit); +u8 *rtw_get_ie_ex(u8 *in_ie, uint in_len, u8 eid, u8 *oui, u8 oui_len, u8 *ie, uint *ielen); +int rtw_ies_remove_ie(u8 *ies, uint *ies_len, uint offset, u8 eid, u8 *oui, u8 oui_len); + +void rtw_set_supported_rate(u8* SupportedRates, uint mode) ; + +unsigned char *rtw_get_wpa_ie(unsigned char *pie, int *wpa_ie_len, int limit); +unsigned char *rtw_get_wpa2_ie(unsigned char *pie, int *rsn_ie_len, int limit); +int rtw_get_wpa_cipher_suite(u8 *s); +int rtw_get_wpa2_cipher_suite(u8 *s); +int rtw_parse_wpa_ie(u8* wpa_ie, int wpa_ie_len, int *group_cipher, int *pairwise_cipher); +int rtw_parse_wpa2_ie(u8* wpa_ie, int wpa_ie_len, int *group_cipher, int *pairwise_cipher); + +int rtw_get_sec_ie(u8 *in_ie,uint in_len,u8 *rsn_ie,u16 *rsn_len,u8 *wpa_ie,u16 *wpa_len); + +u8 rtw_is_wps_ie(u8 *ie_ptr, uint *wps_ielen); +u8 *rtw_get_wps_ie(u8 *in_ie, uint in_len, u8 *wps_ie, uint *wps_ielen); +u8 *rtw_get_wps_attr(u8 *wps_ie, uint wps_ielen, u16 target_attr_id ,u8 *buf_attr, u32 *len_attr); +u8 *rtw_get_wps_attr_content(u8 *wps_ie, uint wps_ielen, u16 target_attr_id ,u8 *buf_content, uint *len_content); + +/** + * for_each_ie - iterate over continuous IEs + * @ie: + * @buf: + * @buf_len: + */ +#define for_each_ie(ie, buf, buf_len) \ + for (ie = (void*)buf; (((u8*)ie) - ((u8*)buf) + 1) < buf_len; ie = (void*)(((u8*)ie) + *(((u8*)ie)+1) + 2)) + +void dump_ies(u8 *buf, u32 buf_len); +void dump_wps_ie(u8 *ie, u32 ie_len); + +#ifdef CONFIG_P2P +u32 rtw_get_p2p_merged_ies_len(u8 *in_ie, u32 in_len); +int rtw_p2p_merge_ies(u8 *in_ie, u32 in_len, u8 *merge_ie); +void dump_p2p_ie(u8 *ie, u32 ie_len); +u8 *rtw_get_p2p_ie(u8 *in_ie, int in_len, u8 *p2p_ie, uint *p2p_ielen); +u8 *rtw_get_p2p_attr(u8 *p2p_ie, uint p2p_ielen, u8 target_attr_id ,u8 *buf_attr, u32 *len_attr); +u8 *rtw_get_p2p_attr_content(u8 *p2p_ie, uint p2p_ielen, u8 target_attr_id ,u8 *buf_content, uint *len_content); +u32 rtw_set_p2p_attr_content(u8 *pbuf, u8 attr_id, u16 attr_len, u8 *pdata_attr); +void rtw_WLAN_BSSID_EX_remove_p2p_attr(WLAN_BSSID_EX *bss_ex, u8 attr_id); +#endif + +#ifdef CONFIG_WFD +int rtw_get_wfd_ie(u8 *in_ie, int in_len, u8 *wfd_ie, uint *wfd_ielen); +int rtw_get_wfd_attr_content(u8 *wfd_ie, uint wfd_ielen, u8 target_attr_id ,u8 *attr_content, uint *attr_contentlen); +#endif // CONFIG_WFD + +uint rtw_get_rateset_len(u8 *rateset); + +struct registry_priv; +int rtw_generate_ie(struct registry_priv *pregistrypriv); + + +int rtw_get_bit_value_from_ieee_value(u8 val); + +uint rtw_is_cckrates_included(u8 *rate); + +uint rtw_is_cckratesonly_included(u8 *rate); + +int rtw_check_network_type(unsigned char *rate, int ratelen, int channel); + +void rtw_macaddr_cfg(u8 *mac_addr); + +u16 rtw_mcs_rate(u8 rf_type, u8 bw_40MHz, u8 short_GI_20, u8 short_GI_40, unsigned char * MCS_rate); + +int rtw_action_frame_parse(const u8 *frame, u32 frame_len, u8* category, u8 *action); +const char *action_public_str(u8 action); + +#endif /* IEEE80211_H */ --- linux-raspi2-4.2.0.orig/drivers/net/wireless/rtl8192cu/include/ieee80211_ext.h +++ linux-raspi2-4.2.0/drivers/net/wireless/rtl8192cu/include/ieee80211_ext.h @@ -0,0 +1,476 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved. + * + * 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 + * published by the Free Software Foundation. + * + * 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 Street, Fifth Floor, Boston, MA 02110, USA + * + * + ******************************************************************************/ +#ifndef __IEEE80211_EXT_H +#define __IEEE80211_EXT_H + +#include +#include +#include + +#define WMM_OUI_TYPE 2 +#define WMM_OUI_SUBTYPE_INFORMATION_ELEMENT 0 +#define WMM_OUI_SUBTYPE_PARAMETER_ELEMENT 1 +#define WMM_OUI_SUBTYPE_TSPEC_ELEMENT 2 +#define WMM_VERSION 1 + +#define WPA_PROTO_WPA BIT(0) +#define WPA_PROTO_RSN BIT(1) + +#define WPA_KEY_MGMT_IEEE8021X BIT(0) +#define WPA_KEY_MGMT_PSK BIT(1) +#define WPA_KEY_MGMT_NONE BIT(2) +#define WPA_KEY_MGMT_IEEE8021X_NO_WPA BIT(3) +#define WPA_KEY_MGMT_WPA_NONE BIT(4) + + +#define WPA_CAPABILITY_PREAUTH BIT(0) +#define WPA_CAPABILITY_MGMT_FRAME_PROTECTION BIT(6) +#define WPA_CAPABILITY_PEERKEY_ENABLED BIT(9) + + +#define PMKID_LEN 16 + + +#ifdef PLATFORM_LINUX +struct wpa_ie_hdr { + u8 elem_id; + u8 len; + u8 oui[4]; /* 24-bit OUI followed by 8-bit OUI type */ + u8 version[2]; /* little endian */ +}__attribute__ ((packed)); + +struct rsn_ie_hdr { + u8 elem_id; /* WLAN_EID_RSN */ + u8 len; + u8 version[2]; /* little endian */ +}__attribute__ ((packed)); + +struct wme_ac_parameter { +#if defined(CONFIG_LITTLE_ENDIAN) + /* byte 1 */ + u8 aifsn:4, + acm:1, + aci:2, + reserved:1; + + /* byte 2 */ + u8 eCWmin:4, + eCWmax:4; +#elif defined(CONFIG_BIG_ENDIAN) + /* byte 1 */ + u8 reserved:1, + aci:2, + acm:1, + aifsn:4; + + /* byte 2 */ + u8 eCWmax:4, + eCWmin:4; +#else +#error "Please fix " +#endif + + /* bytes 3 & 4 */ + u16 txopLimit; +} __attribute__ ((packed)); + +struct wme_parameter_element { + /* required fields for WME version 1 */ + u8 oui[3]; + u8 oui_type; + u8 oui_subtype; + u8 version; + u8 acInfo; + u8 reserved; + struct wme_ac_parameter ac[4]; + +} __attribute__ ((packed)); + +#endif + +#ifdef PLATFORM_WINDOWS + +#pragma pack(1) + +struct wpa_ie_hdr { + u8 elem_id; + u8 len; + u8 oui[4]; /* 24-bit OUI followed by 8-bit OUI type */ + u8 version[2]; /* little endian */ +}; + +struct rsn_ie_hdr { + u8 elem_id; /* WLAN_EID_RSN */ + u8 len; + u8 version[2]; /* little endian */ +}; + +#pragma pack() + +#endif + +#define WPA_PUT_LE16(a, val) \ + do { \ + (a)[1] = ((u16) (val)) >> 8; \ + (a)[0] = ((u16) (val)) & 0xff; \ + } while (0) + +#define WPA_PUT_BE32(a, val) \ + do { \ + (a)[0] = (u8) ((((u32) (val)) >> 24) & 0xff); \ + (a)[1] = (u8) ((((u32) (val)) >> 16) & 0xff); \ + (a)[2] = (u8) ((((u32) (val)) >> 8) & 0xff); \ + (a)[3] = (u8) (((u32) (val)) & 0xff); \ + } while (0) + +#define WPA_PUT_LE32(a, val) \ + do { \ + (a)[3] = (u8) ((((u32) (val)) >> 24) & 0xff); \ + (a)[2] = (u8) ((((u32) (val)) >> 16) & 0xff); \ + (a)[1] = (u8) ((((u32) (val)) >> 8) & 0xff); \ + (a)[0] = (u8) (((u32) (val)) & 0xff); \ + } while (0) + +#define RSN_SELECTOR_PUT(a, val) WPA_PUT_BE32((u8 *) (a), (val)) +//#define RSN_SELECTOR_PUT(a, val) WPA_PUT_LE32((u8 *) (a), (val)) + + + +/* Action category code */ +enum ieee80211_category { + WLAN_CATEGORY_SPECTRUM_MGMT = 0, + WLAN_CATEGORY_QOS = 1, + WLAN_CATEGORY_DLS = 2, + WLAN_CATEGORY_BACK = 3, + WLAN_CATEGORY_HT = 7, + WLAN_CATEGORY_WMM = 17, +}; + +/* SPECTRUM_MGMT action code */ +enum ieee80211_spectrum_mgmt_actioncode { + WLAN_ACTION_SPCT_MSR_REQ = 0, + WLAN_ACTION_SPCT_MSR_RPRT = 1, + WLAN_ACTION_SPCT_TPC_REQ = 2, + WLAN_ACTION_SPCT_TPC_RPRT = 3, + WLAN_ACTION_SPCT_CHL_SWITCH = 4, + WLAN_ACTION_SPCT_EXT_CHL_SWITCH = 5, +}; + +/* BACK action code */ +enum ieee80211_back_actioncode { + WLAN_ACTION_ADDBA_REQ = 0, + WLAN_ACTION_ADDBA_RESP = 1, + WLAN_ACTION_DELBA = 2, +}; + +/* HT features action code */ +enum ieee80211_ht_actioncode { + WLAN_ACTION_NOTIFY_CH_WIDTH = 0, + WLAN_ACTION_SM_PS = 1, + WLAN_ACTION_PSPM = 2, + WLAN_ACTION_PCO_PHASE = 3, + WLAN_ACTION_MIMO_CSI_MX = 4, + WLAN_ACTION_MIMO_NONCP_BF = 5, + WLAN_ACTION_MIMP_CP_BF = 6, + WLAN_ACTION_ASEL_INDICATES_FB = 7, + WLAN_ACTION_HI_INFO_EXCHG = 8, +}; + +/* BACK (block-ack) parties */ +enum ieee80211_back_parties { + WLAN_BACK_RECIPIENT = 0, + WLAN_BACK_INITIATOR = 1, + WLAN_BACK_TIMER = 2, +}; + +#ifdef PLATFORM_LINUX + +struct ieee80211_mgmt { + u16 frame_control; + u16 duration; + u8 da[6]; + u8 sa[6]; + u8 bssid[6]; + u16 seq_ctrl; + union { + struct { + u16 auth_alg; + u16 auth_transaction; + u16 status_code; + /* possibly followed by Challenge text */ + u8 variable[0]; + } __attribute__ ((packed)) auth; + struct { + u16 reason_code; + } __attribute__ ((packed)) deauth; + struct { + u16 capab_info; + u16 listen_interval; + /* followed by SSID and Supported rates */ + u8 variable[0]; + } __attribute__ ((packed)) assoc_req; + struct { + u16 capab_info; + u16 status_code; + u16 aid; + /* followed by Supported rates */ + u8 variable[0]; + } __attribute__ ((packed)) assoc_resp, reassoc_resp; + struct { + u16 capab_info; + u16 listen_interval; + u8 current_ap[6]; + /* followed by SSID and Supported rates */ + u8 variable[0]; + } __attribute__ ((packed)) reassoc_req; + struct { + u16 reason_code; + } __attribute__ ((packed)) disassoc; + struct { + __le64 timestamp; + u16 beacon_int; + u16 capab_info; + /* followed by some of SSID, Supported rates, + * FH Params, DS Params, CF Params, IBSS Params, TIM */ + u8 variable[0]; + } __attribute__ ((packed)) beacon; + struct { + /* only variable items: SSID, Supported rates */ + u8 variable[0]; + } __attribute__ ((packed)) probe_req; + struct { + __le64 timestamp; + u16 beacon_int; + u16 capab_info; + /* followed by some of SSID, Supported rates, + * FH Params, DS Params, CF Params, IBSS Params */ + u8 variable[0]; + } __attribute__ ((packed)) probe_resp; + struct { + u8 category; + union { + struct { + u8 action_code; + u8 dialog_token; + u8 status_code; + u8 variable[0]; + } __attribute__ ((packed)) wme_action; +#if 0 + struct{ + u8 action_code; + u8 element_id; + u8 length; + struct ieee80211_channel_sw_ie sw_elem; + } __attribute__ ((packed)) chan_switch; + struct{ + u8 action_code; + u8 dialog_token; + u8 element_id; + u8 length; + struct ieee80211_msrment_ie msr_elem; + } __attribute__ ((packed)) measurement; +#endif + struct{ + u8 action_code; + u8 dialog_token; + u16 capab; + u16 timeout; + u16 start_seq_num; + } __attribute__ ((packed)) addba_req; + struct{ + u8 action_code; + u8 dialog_token; + u16 status; + u16 capab; + u16 timeout; + } __attribute__ ((packed)) addba_resp; + struct{ + u8 action_code; + u16 params; + u16 reason_code; + } __attribute__ ((packed)) delba; + struct{ + u8 action_code; + /* capab_info for open and confirm, + * reason for close + */ + u16 aux; + /* Followed in plink_confirm by status + * code, AID and supported rates, + * and directly by supported rates in + * plink_open and plink_close + */ + u8 variable[0]; + } __attribute__ ((packed)) plink_action; + struct{ + u8 action_code; + u8 variable[0]; + } __attribute__ ((packed)) mesh_action; + } __attribute__ ((packed)) u; + } __attribute__ ((packed)) action; + } __attribute__ ((packed)) u; +}__attribute__ ((packed)); + +#endif + + +#ifdef PLATFORM_WINDOWS + +#pragma pack(1) + +struct ieee80211_mgmt { + u16 frame_control; + u16 duration; + u8 da[6]; + u8 sa[6]; + u8 bssid[6]; + u16 seq_ctrl; + union { + struct { + u16 auth_alg; + u16 auth_transaction; + u16 status_code; + /* possibly followed by Challenge text */ + u8 variable[0]; + } auth; + struct { + u16 reason_code; + } deauth; + struct { + u16 capab_info; + u16 listen_interval; + /* followed by SSID and Supported rates */ + u8 variable[0]; + } assoc_req; + struct { + u16 capab_info; + u16 status_code; + u16 aid; + /* followed by Supported rates */ + u8 variable[0]; + } assoc_resp, reassoc_resp; + struct { + u16 capab_info; + u16 listen_interval; + u8 current_ap[6]; + /* followed by SSID and Supported rates */ + u8 variable[0]; + } reassoc_req; + struct { + u16 reason_code; + } disassoc; +#if 0 + struct { + __le64 timestamp; + u16 beacon_int; + u16 capab_info; + /* followed by some of SSID, Supported rates, + * FH Params, DS Params, CF Params, IBSS Params, TIM */ + u8 variable[0]; + } beacon; + struct { + /* only variable items: SSID, Supported rates */ + u8 variable[0]; + } probe_req; + + struct { + __le64 timestamp; + u16 beacon_int; + u16 capab_info; + /* followed by some of SSID, Supported rates, + * FH Params, DS Params, CF Params, IBSS Params */ + u8 variable[0]; + } probe_resp; +#endif + struct { + u8 category; + union { + struct { + u8 action_code; + u8 dialog_token; + u8 status_code; + u8 variable[0]; + } wme_action; +/* + struct{ + u8 action_code; + u8 element_id; + u8 length; + struct ieee80211_channel_sw_ie sw_elem; + } chan_switch; + struct{ + u8 action_code; + u8 dialog_token; + u8 element_id; + u8 length; + struct ieee80211_msrment_ie msr_elem; + } measurement; +*/ + struct{ + u8 action_code; + u8 dialog_token; + u16 capab; + u16 timeout; + u16 start_seq_num; + } addba_req; + struct{ + u8 action_code; + u8 dialog_token; + u16 status; + u16 capab; + u16 timeout; + } addba_resp; + struct{ + u8 action_code; + u16 params; + u16 reason_code; + } delba; + struct{ + u8 action_code; + /* capab_info for open and confirm, + * reason for close + */ + u16 aux; + /* Followed in plink_confirm by status + * code, AID and supported rates, + * and directly by supported rates in + * plink_open and plink_close + */ + u8 variable[0]; + } plink_action; + struct{ + u8 action_code; + u8 variable[0]; + } mesh_action; + } u; + } action; + } u; +} ; + +#pragma pack() + +#endif + +/* mgmt header + 1 byte category code */ +#define IEEE80211_MIN_ACTION_SIZE FIELD_OFFSET(struct ieee80211_mgmt, u.action.u) + + + +#endif --- linux-raspi2-4.2.0.orig/drivers/net/wireless/rtl8192cu/include/if_ether.h +++ linux-raspi2-4.2.0/drivers/net/wireless/rtl8192cu/include/if_ether.h @@ -0,0 +1,112 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved. + * + * 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 + * published by the Free Software Foundation. + * + * 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 Street, Fifth Floor, Boston, MA 02110, USA + * + * + ******************************************************************************/ + +#ifndef _LINUX_IF_ETHER_H +#define _LINUX_IF_ETHER_H + +/* + * IEEE 802.3 Ethernet magic constants. The frame sizes omit the preamble + * and FCS/CRC (frame check sequence). + */ + +#define ETH_ALEN 6 /* Octets in one ethernet addr */ +#define ETH_HLEN 14 /* Total octets in header. */ +#define ETH_ZLEN 60 /* Min. octets in frame sans FCS */ +#define ETH_DATA_LEN 1500 /* Max. octets in payload */ +#define ETH_FRAME_LEN 1514 /* Max. octets in frame sans FCS */ + +/* + * These are the defined Ethernet Protocol ID's. + */ + +#define ETH_P_LOOP 0x0060 /* Ethernet Loopback packet */ +#define ETH_P_PUP 0x0200 /* Xerox PUP packet */ +#define ETH_P_PUPAT 0x0201 /* Xerox PUP Addr Trans packet */ +#define ETH_P_IP 0x0800 /* Internet Protocol packet */ +#define ETH_P_X25 0x0805 /* CCITT X.25 */ +#define ETH_P_ARP 0x0806 /* Address Resolution packet */ +#define ETH_P_BPQ 0x08FF /* G8BPQ AX.25 Ethernet Packet [ NOT AN OFFICIALLY REGISTERED ID ] */ +#define ETH_P_IEEEPUP 0x0a00 /* Xerox IEEE802.3 PUP packet */ +#define ETH_P_IEEEPUPAT 0x0a01 /* Xerox IEEE802.3 PUP Addr Trans packet */ +#define ETH_P_DEC 0x6000 /* DEC Assigned proto */ +#define ETH_P_DNA_DL 0x6001 /* DEC DNA Dump/Load */ +#define ETH_P_DNA_RC 0x6002 /* DEC DNA Remote Console */ +#define ETH_P_DNA_RT 0x6003 /* DEC DNA Routing */ +#define ETH_P_LAT 0x6004 /* DEC LAT */ +#define ETH_P_DIAG 0x6005 /* DEC Diagnostics */ +#define ETH_P_CUST 0x6006 /* DEC Customer use */ +#define ETH_P_SCA 0x6007 /* DEC Systems Comms Arch */ +#define ETH_P_RARP 0x8035 /* Reverse Addr Res packet */ +#define ETH_P_ATALK 0x809B /* Appletalk DDP */ +#define ETH_P_AARP 0x80F3 /* Appletalk AARP */ +#define ETH_P_8021Q 0x8100 /* 802.1Q VLAN Extended Header */ +#define ETH_P_IPX 0x8137 /* IPX over DIX */ +#define ETH_P_IPV6 0x86DD /* IPv6 over bluebook */ +#define ETH_P_PPP_DISC 0x8863 /* PPPoE discovery messages */ +#define ETH_P_PPP_SES 0x8864 /* PPPoE session messages */ +#define ETH_P_ATMMPOA 0x884c /* MultiProtocol Over ATM */ +#define ETH_P_ATMFATE 0x8884 /* Frame-based ATM Transport + * over Ethernet + */ + +/* + * Non DIX types. Won't clash for 1500 types. + */ + +#define ETH_P_802_3 0x0001 /* Dummy type for 802.3 frames */ +#define ETH_P_AX25 0x0002 /* Dummy protocol id for AX.25 */ +#define ETH_P_ALL 0x0003 /* Every packet (be careful!!!) */ +#define ETH_P_802_2 0x0004 /* 802.2 frames */ +#define ETH_P_SNAP 0x0005 /* Internal only */ +#define ETH_P_DDCMP 0x0006 /* DEC DDCMP: Internal only */ +#define ETH_P_WAN_PPP 0x0007 /* Dummy type for WAN PPP frames*/ +#define ETH_P_PPP_MP 0x0008 /* Dummy type for PPP MP frames */ +#define ETH_P_LOCALTALK 0x0009 /* Localtalk pseudo type */ +#define ETH_P_PPPTALK 0x0010 /* Dummy type for Atalk over PPP*/ +#define ETH_P_TR_802_2 0x0011 /* 802.2 frames */ +#define ETH_P_MOBITEX 0x0015 /* Mobitex (kaz@cafe.net) */ +#define ETH_P_CONTROL 0x0016 /* Card specific control frames */ +#define ETH_P_IRDA 0x0017 /* Linux-IrDA */ +#define ETH_P_ECONET 0x0018 /* Acorn Econet */ + +/* + * This is an Ethernet frame header. + */ + +struct ethhdr +{ + unsigned char h_dest[ETH_ALEN]; /* destination eth addr */ + unsigned char h_source[ETH_ALEN]; /* source ether addr */ + unsigned short h_proto; /* packet type ID field */ +}; + +struct _vlan { + unsigned short h_vlan_TCI; // Encapsulates priority and VLAN ID + unsigned short h_vlan_encapsulated_proto; +}; + + + +#define get_vlan_id(pvlan) ((ntohs((unsigned short )pvlan->h_vlan_TCI)) & 0xfff) +#define get_vlan_priority(pvlan) ((ntohs((unsigned short )pvlan->h_vlan_TCI))>>13) +#define get_vlan_encap_proto(pvlan) (ntohs((unsigned short )pvlan->h_vlan_encapsulated_proto)) + + +#endif /* _LINUX_IF_ETHER_H */ --- linux-raspi2-4.2.0.orig/drivers/net/wireless/rtl8192cu/include/ioctl_cfg80211.h +++ linux-raspi2-4.2.0/drivers/net/wireless/rtl8192cu/include/ioctl_cfg80211.h @@ -0,0 +1,179 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved. + * + * 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 + * published by the Free Software Foundation. + * + * 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 Street, Fifth Floor, Boston, MA 02110, USA + * + * + ******************************************************************************/ +#ifndef __IOCTL_CFG80211_H__ +#define __IOCTL_CFG80211_H__ + +#if defined(CONFIG_IOCTL_CFG80211) && !defined(CONFIG_CFG80211) && !defined(CONFIG_CFG80211_MODULE) + #error "Can't define CONFIG_IOCTL_CFG80211 because neither CONFIG_CFG80211 nor CONFIG_CFG80211_MODULE is defined in kernel" +#endif +#if defined(CONFIG_IOCTL_CFG80211) && LINUX_VERSION_CODE < KERNEL_VERSION(2,6,35) + #error "We haven't verify our cfg80211 solution below kernel version 2.6.35" +#endif + +#if defined(RTW_USE_CFG80211_STA_EVENT) + #undef CONFIG_CFG80211_FORCE_COMPATIBLE_2_6_37_UNDER +#endif + +struct rtw_wdev_invit_info { + u8 state; /* 0: req, 1:rep */ + u8 peer_mac[ETH_ALEN]; + u8 active; + u8 token; + u8 flags; + u8 status; + u8 req_op_ch; + u8 rsp_op_ch; +}; + +#define rtw_wdev_invit_info_init(invit_info) \ + do { \ + (invit_info)->state = 0xff; \ + _rtw_memset((invit_info)->peer_mac, 0, ETH_ALEN); \ + (invit_info)->active = 0xff; \ + (invit_info)->token = 0; \ + (invit_info)->flags = 0x00; \ + (invit_info)->status = 0xff; \ + (invit_info)->req_op_ch = 0; \ + (invit_info)->rsp_op_ch = 0; \ + } while (0) + +struct rtw_wdev_nego_info { + u8 state; /* 0: req, 1:rep, 3:conf */ + u8 peer_mac[ETH_ALEN]; + u8 active; + u8 token; + u8 status; + u8 req_intent; + u8 req_op_ch; + u8 req_listen_ch; + u8 rsp_intent; + u8 rsp_op_ch; + u8 conf_op_ch; +}; + +#define rtw_wdev_nego_info_init(nego_info) \ + do { \ + (nego_info)->state = 0xff; \ + _rtw_memset((nego_info)->peer_mac, 0, ETH_ALEN); \ + (nego_info)->active = 0xff; \ + (nego_info)->token = 0; \ + (nego_info)->status = 0xff; \ + (nego_info)->req_intent = 0xff; \ + (nego_info)->req_op_ch = 0; \ + (nego_info)->req_listen_ch = 0; \ + (nego_info)->rsp_intent = 0xff; \ + (nego_info)->rsp_op_ch = 0; \ + (nego_info)->conf_op_ch = 0; \ + } while (0) + +struct rtw_wdev_priv +{ + struct wireless_dev *rtw_wdev; + + _adapter *padapter; + + struct cfg80211_scan_request *scan_request; + _lock scan_req_lock; + + struct net_device *pmon_ndev;//for monitor interface + char ifname_mon[IFNAMSIZ + 1]; //interface name for monitor interface + + u8 p2p_enabled; + + u8 provdisc_req_issued; + + struct rtw_wdev_invit_info invit_info; + struct rtw_wdev_nego_info nego_info; + + u8 bandroid_scan; + bool block; + bool power_mgmt; + +#ifdef CONFIG_CONCURRENT_MODE + ATOMIC_T ro_ch_to; + ATOMIC_T switch_ch_to; +#endif + +}; + +#define wdev_to_priv(w) ((struct rtw_wdev_priv *)(wdev_priv(w))) + +#define wiphy_to_adapter(x) (_adapter *)(((struct rtw_wdev_priv*)wiphy_priv(x))->padapter) + +#define wiphy_to_wdev(x) (struct wireless_dev *)(((struct rtw_wdev_priv*)wiphy_priv(x))->rtw_wdev) + +int rtw_wdev_alloc(_adapter *padapter, struct device *dev); +void rtw_wdev_free(struct wireless_dev *wdev); +void rtw_wdev_unregister(struct wireless_dev *wdev); + +void rtw_cfg80211_init_wiphy(_adapter *padapter); + +void rtw_cfg80211_surveydone_event_callback(_adapter *padapter); +int rtw_cfg80211_check_bss(_adapter *padapter); +void rtw_cfg80211_indicate_connect(_adapter *padapter); +void rtw_cfg80211_indicate_disconnect(_adapter *padapter); +void rtw_cfg80211_indicate_scan_done(struct rtw_wdev_priv *pwdev_priv, bool aborted); + +#ifdef CONFIG_AP_MODE +void rtw_cfg80211_indicate_sta_assoc(_adapter *padapter, u8 *pmgmt_frame, uint frame_len); +void rtw_cfg80211_indicate_sta_disassoc(_adapter *padapter, unsigned char *da, unsigned short reason); +#endif //CONFIG_AP_MODE + +void rtw_cfg80211_issue_p2p_provision_request(_adapter *padapter, const u8 *buf, size_t len); +void rtw_cfg80211_rx_p2p_action_public(_adapter *padapter, u8 *pmgmt_frame, uint frame_len); +void rtw_cfg80211_rx_action_p2p(_adapter *padapter, u8 *pmgmt_frame, uint frame_len); +void rtw_cfg80211_rx_action(_adapter *adapter, u8 *frame, uint frame_len, const char*msg); + +int rtw_cfg80211_set_mgnt_wpsp2pie(struct net_device *net, char *buf, int len, int type); + +bool rtw_cfg80211_pwr_mgmt(_adapter *adapter); + +#if (LINUX_VERSION_CODE < KERNEL_VERSION(3,4,0)) && !defined(COMPAT_KERNEL_RELEASE) +#define rtw_cfg80211_rx_mgmt(adapter, freq, sig_dbm, buf, len, gfp) cfg80211_rx_mgmt((adapter)->pnetdev, freq, buf, len, gfp) +#elif (LINUX_VERSION_CODE < KERNEL_VERSION(3,6,0)) +#define rtw_cfg80211_rx_mgmt(adapter, freq, sig_dbm, buf, len, gfp) cfg80211_rx_mgmt((adapter)->pnetdev, freq, sig_dbm, buf, len, gfp) +#else +#define rtw_cfg80211_rx_mgmt(adapter, freq, sig_dbm, buf, len, gfp) cfg80211_rx_mgmt((adapter)->rtw_wdev, freq, sig_dbm, buf, len, gfp) +#endif + +#if (LINUX_VERSION_CODE < KERNEL_VERSION(3,4,0)) && !defined(COMPAT_KERNEL_RELEASE) +#define rtw_cfg80211_send_rx_assoc(adapter, bss, buf, len) cfg80211_send_rx_assoc((adapter)->pnetdev, buf, len) +#else +#define rtw_cfg80211_send_rx_assoc(adapter, bss, buf, len) cfg80211_send_rx_assoc((adapter)->pnetdev, bss, buf, len) +#endif + +#if (LINUX_VERSION_CODE < KERNEL_VERSION(3,6,0)) +#define rtw_cfg80211_mgmt_tx_status(adapter, cookie, buf, len, ack, gfp) cfg80211_mgmt_tx_status((adapter)->pnetdev, cookie, buf, len, ack, gfp) +#else +#define rtw_cfg80211_mgmt_tx_status(adapter, cookie, buf, len, ack, gfp) cfg80211_mgmt_tx_status((adapter)->rtw_wdev, cookie, buf, len, ack, gfp) +#endif + +#if (LINUX_VERSION_CODE < KERNEL_VERSION(3,6,0)) +#define rtw_cfg80211_ready_on_channel(adapter, cookie, chan, channel_type, duration, gfp) cfg80211_ready_on_channel((adapter)->pnetdev, cookie, chan, channel_type, duration, gfp) +#define rtw_cfg80211_remain_on_channel_expired(adapter, cookie, chan, chan_type, gfp) cfg80211_remain_on_channel_expired((adapter)->pnetdev, cookie, chan, chan_type, gfp) +#elif (LINUX_VERSION_CODE < KERNEL_VERSION(3,8,0)) +#define rtw_cfg80211_ready_on_channel(adapter, cookie, chan, channel_type, duration, gfp) cfg80211_ready_on_channel((adapter)->rtw_wdev, cookie, chan, channel_type, duration, gfp) +#define rtw_cfg80211_remain_on_channel_expired(adapter, cookie, chan, chan_type, gfp) cfg80211_remain_on_channel_expired((adapter)->rtw_wdev, cookie, chan, chan_type, gfp) +#else +#define rtw_cfg80211_ready_on_channel(adapter, cookie, chan, channel_type, duration, gfp) cfg80211_ready_on_channel((adapter)->rtw_wdev, cookie, chan, duration, gfp) +#define rtw_cfg80211_remain_on_channel_expired(adapter, cookie, chan, chan_type, gfp) cfg80211_remain_on_channel_expired((adapter)->rtw_wdev, cookie, chan, gfp) +#endif + +#endif //__IOCTL_CFG80211_H__ --- linux-raspi2-4.2.0.orig/drivers/net/wireless/rtl8192cu/include/ip.h +++ linux-raspi2-4.2.0/drivers/net/wireless/rtl8192cu/include/ip.h @@ -0,0 +1,141 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved. + * + * 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 + * published by the Free Software Foundation. + * + * 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 Street, Fifth Floor, Boston, MA 02110, USA + * + * + ******************************************************************************/ +#ifndef _LINUX_IP_H +#define _LINUX_IP_H +#include + +/* SOL_IP socket options */ + +#define IPTOS_TOS_MASK 0x1E +#define IPTOS_TOS(tos) ((tos)&IPTOS_TOS_MASK) +#define IPTOS_LOWDELAY 0x10 +#define IPTOS_THROUGHPUT 0x08 +#define IPTOS_RELIABILITY 0x04 +#define IPTOS_MINCOST 0x02 + +#define IPTOS_PREC_MASK 0xE0 +#define IPTOS_PREC(tos) ((tos)&IPTOS_PREC_MASK) +#define IPTOS_PREC_NETCONTROL 0xe0 +#define IPTOS_PREC_INTERNETCONTROL 0xc0 +#define IPTOS_PREC_CRITIC_ECP 0xa0 +#define IPTOS_PREC_FLASHOVERRIDE 0x80 +#define IPTOS_PREC_FLASH 0x60 +#define IPTOS_PREC_IMMEDIATE 0x40 +#define IPTOS_PREC_PRIORITY 0x20 +#define IPTOS_PREC_ROUTINE 0x00 + + +/* IP options */ +#define IPOPT_COPY 0x80 +#define IPOPT_CLASS_MASK 0x60 +#define IPOPT_NUMBER_MASK 0x1f + +#define IPOPT_COPIED(o) ((o)&IPOPT_COPY) +#define IPOPT_CLASS(o) ((o)&IPOPT_CLASS_MASK) +#define IPOPT_NUMBER(o) ((o)&IPOPT_NUMBER_MASK) + +#define IPOPT_CONTROL 0x00 +#define IPOPT_RESERVED1 0x20 +#define IPOPT_MEASUREMENT 0x40 +#define IPOPT_RESERVED2 0x60 + +#define IPOPT_END (0 |IPOPT_CONTROL) +#define IPOPT_NOOP (1 |IPOPT_CONTROL) +#define IPOPT_SEC (2 |IPOPT_CONTROL|IPOPT_COPY) +#define IPOPT_LSRR (3 |IPOPT_CONTROL|IPOPT_COPY) +#define IPOPT_TIMESTAMP (4 |IPOPT_MEASUREMENT) +#define IPOPT_RR (7 |IPOPT_CONTROL) +#define IPOPT_SID (8 |IPOPT_CONTROL|IPOPT_COPY) +#define IPOPT_SSRR (9 |IPOPT_CONTROL|IPOPT_COPY) +#define IPOPT_RA (20|IPOPT_CONTROL|IPOPT_COPY) + +#define IPVERSION 4 +#define MAXTTL 255 +#define IPDEFTTL 64 + +/* struct timestamp, struct route and MAX_ROUTES are removed. + + REASONS: it is clear that nobody used them because: + - MAX_ROUTES value was wrong. + - "struct route" was wrong. + - "struct timestamp" had fatally misaligned bitfields and was completely unusable. + */ + +#define IPOPT_OPTVAL 0 +#define IPOPT_OLEN 1 +#define IPOPT_OFFSET 2 +#define IPOPT_MINOFF 4 +#define MAX_IPOPTLEN 40 +#define IPOPT_NOP IPOPT_NOOP +#define IPOPT_EOL IPOPT_END +#define IPOPT_TS IPOPT_TIMESTAMP + +#define IPOPT_TS_TSONLY 0 /* timestamps only */ +#define IPOPT_TS_TSANDADDR 1 /* timestamps and addresses */ +#define IPOPT_TS_PRESPEC 3 /* specified modules only */ + +#ifdef PLATFORM_LINUX + +struct ip_options { + __u32 faddr; /* Saved first hop address */ + unsigned char optlen; + unsigned char srr; + unsigned char rr; + unsigned char ts; + unsigned char is_setbyuser:1, /* Set by setsockopt? */ + is_data:1, /* Options in __data, rather than skb */ + is_strictroute:1, /* Strict source route */ + srr_is_hit:1, /* Packet destination addr was our one */ + is_changed:1, /* IP checksum more not valid */ + rr_needaddr:1, /* Need to record addr of outgoing dev */ + ts_needtime:1, /* Need to record timestamp */ + ts_needaddr:1; /* Need to record addr of outgoing dev */ + unsigned char router_alert; + unsigned char __pad1; + unsigned char __pad2; + unsigned char __data[0]; +}; + +#define optlength(opt) (sizeof(struct ip_options) + opt->optlen) +#endif + +struct iphdr { +#if defined(__LITTLE_ENDIAN_BITFIELD) + __u8 ihl:4, + version:4; +#elif defined (__BIG_ENDIAN_BITFIELD) + __u8 version:4, + ihl:4; +#else +#error "Please fix " +#endif + __u8 tos; + __u16 tot_len; + __u16 id; + __u16 frag_off; + __u8 ttl; + __u8 protocol; + __u16 check; + __u32 saddr; + __u32 daddr; + /*The options start here. */ +}; + +#endif /* _LINUX_IP_H */ --- linux-raspi2-4.2.0.orig/drivers/net/wireless/rtl8192cu/include/linux/wireless.h +++ linux-raspi2-4.2.0/drivers/net/wireless/rtl8192cu/include/linux/wireless.h @@ -0,0 +1,90 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved. + * + * 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 + * published by the Free Software Foundation. + * + * 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 Street, Fifth Floor, Boston, MA 02110, USA + * + * + ******************************************************************************/ + +#ifndef _LINUX_WIRELESS_H +#define _LINUX_WIRELESS_H + +/***************************** INCLUDES *****************************/ + +#if 0 +#include /* for __u* and __s* typedefs */ +#include /* for "struct sockaddr" et al */ +#include /* for IFNAMSIZ and co... */ +#else +#define __user +//typedef uint16_t __u16; +#include /* for "struct sockaddr" et al */ +#include /* for IFNAMSIZ and co... */ +#endif + +/****************************** TYPES ******************************/ + +/* --------------------------- SUBTYPES --------------------------- */ +/* + * For all data larger than 16 octets, we need to use a + * pointer to memory allocated in user space. + */ +struct iw_point +{ + void __user *pointer; /* Pointer to the data (in user space) */ + __u16 length; /* number of fields or size in bytes */ + __u16 flags; /* Optional params */ +}; + + +/* ------------------------ IOCTL REQUEST ------------------------ */ +/* + * This structure defines the payload of an ioctl, and is used + * below. + * + * Note that this structure should fit on the memory footprint + * of iwreq (which is the same as ifreq), which mean a max size of + * 16 octets = 128 bits. Warning, pointers might be 64 bits wide... + * You should check this when increasing the structures defined + * above in this file... + */ +union iwreq_data +{ + /* Config - generic */ + char name[IFNAMSIZ]; + /* Name : used to verify the presence of wireless extensions. + * Name of the protocol/provider... */ + + struct iw_point data; /* Other large parameters */ +}; + +/* + * The structure to exchange data for ioctl. + * This structure is the same as 'struct ifreq', but (re)defined for + * convenience... + * Do I need to remind you about structure size (32 octets) ? + */ +struct iwreq +{ + union + { + char ifrn_name[IFNAMSIZ]; /* if name, e.g. "eth0" */ + } ifr_ifrn; + + /* Data part (defined just above) */ + union iwreq_data u; +}; + +#endif /* _LINUX_WIRELESS_H */ --- linux-raspi2-4.2.0.orig/drivers/net/wireless/rtl8192cu/include/mlme_osdep.h +++ linux-raspi2-4.2.0/drivers/net/wireless/rtl8192cu/include/mlme_osdep.h @@ -0,0 +1,39 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved. + * + * 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 + * published by the Free Software Foundation. + * + * 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 Street, Fifth Floor, Boston, MA 02110, USA + * + * + ******************************************************************************/ +#ifndef __MLME_OSDEP_H_ +#define __MLME_OSDEP_H_ + +#include +#include +#include + +#if defined(PLATFORM_WINDOWS) || defined(PLATFORM_MPIXEL) +extern int time_after(u32 now, u32 old); +#endif + +extern void rtw_init_mlme_timer(_adapter *padapter); +extern void rtw_os_indicate_disconnect( _adapter *adapter ); +extern void rtw_os_indicate_connect( _adapter *adapter ); +void rtw_os_indicate_scan_done( _adapter *padapter, bool aborted); +extern void rtw_report_sec_ie(_adapter *adapter,u8 authmode,u8 *sec_ie); + +void rtw_reset_securitypriv( _adapter *adapter ); + +#endif //_MLME_OSDEP_H_ --- linux-raspi2-4.2.0.orig/drivers/net/wireless/rtl8192cu/include/mp_custom_oid.h +++ linux-raspi2-4.2.0/drivers/net/wireless/rtl8192cu/include/mp_custom_oid.h @@ -0,0 +1,353 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved. + * + * 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 + * published by the Free Software Foundation. + * + * 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 Street, Fifth Floor, Boston, MA 02110, USA + * + * + ******************************************************************************/ +#ifndef __CUSTOM_OID_H +#define __CUSTOM_OID_H + +// by Owen +// 0xFF818000 - 0xFF81802F RTL8180 Mass Production Kit +// 0xFF818500 - 0xFF81850F RTL8185 Setup Utility +// 0xFF818580 - 0xFF81858F RTL8185 Phy Status Utility + +// + +// by Owen for Production Kit +// For Production Kit with Agilent Equipments +// in order to make our custom oids hopefully somewhat unique +// we will use 0xFF (indicating implementation specific OID) +// 81(first byte of non zero Realtek unique identifier) +// 80 (second byte of non zero Realtek unique identifier) +// XX (the custom OID number - providing 255 possible custom oids) + +#define OID_RT_PRO_RESET_DUT 0xFF818000 +#define OID_RT_PRO_SET_DATA_RATE 0xFF818001 +#define OID_RT_PRO_START_TEST 0xFF818002 +#define OID_RT_PRO_STOP_TEST 0xFF818003 +#define OID_RT_PRO_SET_PREAMBLE 0xFF818004 +#define OID_RT_PRO_SET_SCRAMBLER 0xFF818005 +#define OID_RT_PRO_SET_FILTER_BB 0xFF818006 +#define OID_RT_PRO_SET_MANUAL_DIVERSITY_BB 0xFF818007 +#define OID_RT_PRO_SET_CHANNEL_DIRECT_CALL 0xFF818008 +#define OID_RT_PRO_SET_SLEEP_MODE_DIRECT_CALL 0xFF818009 +#define OID_RT_PRO_SET_WAKE_MODE_DIRECT_CALL 0xFF81800A + +#define OID_RT_PRO_SET_TX_ANTENNA_BB 0xFF81800D +#define OID_RT_PRO_SET_ANTENNA_BB 0xFF81800E +#define OID_RT_PRO_SET_CR_SCRAMBLER 0xFF81800F +#define OID_RT_PRO_SET_CR_NEW_FILTER 0xFF818010 +#define OID_RT_PRO_SET_TX_POWER_CONTROL 0xFF818011 +#define OID_RT_PRO_SET_CR_TX_CONFIG 0xFF818012 +#define OID_RT_PRO_GET_TX_POWER_CONTROL 0xFF818013 +#define OID_RT_PRO_GET_CR_SIGNAL_QUALITY 0xFF818014 +#define OID_RT_PRO_SET_CR_SETPOINT 0xFF818015 +#define OID_RT_PRO_SET_INTEGRATOR 0xFF818016 +#define OID_RT_PRO_SET_SIGNAL_QUALITY 0xFF818017 +#define OID_RT_PRO_GET_INTEGRATOR 0xFF818018 +#define OID_RT_PRO_GET_SIGNAL_QUALITY 0xFF818019 +#define OID_RT_PRO_QUERY_EEPROM_TYPE 0xFF81801A +#define OID_RT_PRO_WRITE_MAC_ADDRESS 0xFF81801B +#define OID_RT_PRO_READ_MAC_ADDRESS 0xFF81801C +#define OID_RT_PRO_WRITE_CIS_DATA 0xFF81801D +#define OID_RT_PRO_READ_CIS_DATA 0xFF81801E +#define OID_RT_PRO_WRITE_POWER_CONTROL 0xFF81801F +#define OID_RT_PRO_READ_POWER_CONTROL 0xFF818020 +#define OID_RT_PRO_WRITE_EEPROM 0xFF818021 +#define OID_RT_PRO_READ_EEPROM 0xFF818022 +#define OID_RT_PRO_RESET_TX_PACKET_SENT 0xFF818023 +#define OID_RT_PRO_QUERY_TX_PACKET_SENT 0xFF818024 +#define OID_RT_PRO_RESET_RX_PACKET_RECEIVED 0xFF818025 +#define OID_RT_PRO_QUERY_RX_PACKET_RECEIVED 0xFF818026 +#define OID_RT_PRO_QUERY_RX_PACKET_CRC32_ERROR 0xFF818027 +#define OID_RT_PRO_QUERY_CURRENT_ADDRESS 0xFF818028 +#define OID_RT_PRO_QUERY_PERMANENT_ADDRESS 0xFF818029 +#define OID_RT_PRO_SET_PHILIPS_RF_PARAMETERS 0xFF81802A +#define OID_RT_PRO_RECEIVE_PACKET 0xFF81802C +// added by Owen on 04/08/03 for Cameo's request +#define OID_RT_PRO_WRITE_EEPROM_BYTE 0xFF81802D +#define OID_RT_PRO_READ_EEPROM_BYTE 0xFF81802E +#define OID_RT_PRO_SET_MODULATION 0xFF81802F +// + +//Sean +#define OID_RT_DRIVER_OPTION 0xFF818080 +#define OID_RT_RF_OFF 0xFF818081 +#define OID_RT_AUTH_STATUS 0xFF818082 + +//======================================================================== +#define OID_RT_PRO_SET_CONTINUOUS_TX 0xFF81800B +#define OID_RT_PRO_SET_SINGLE_CARRIER_TX 0xFF81800C +#define OID_RT_PRO_SET_CARRIER_SUPPRESSION_TX 0xFF81802B +#define OID_RT_PRO_SET_SINGLE_TONE_TX 0xFF818043 +//======================================================================== + + +// by Owen for RTL8185 Phy Status Report Utility +#define OID_RT_UTILITY_FALSE_ALARM_COUNTERS 0xFF818580 +#define OID_RT_UTILITY_SELECT_DEBUG_MODE 0xFF818581 +#define OID_RT_UTILITY_SELECT_SUBCARRIER_NUMBER 0xFF818582 +#define OID_RT_UTILITY_GET_RSSI_STATUS 0xFF818583 +#define OID_RT_UTILITY_GET_FRAME_DETECTION_STATUS 0xFF818584 +#define OID_RT_UTILITY_GET_AGC_AND_FREQUENCY_OFFSET_ESTIMATION_STATUS 0xFF818585 +#define OID_RT_UTILITY_GET_CHANNEL_ESTIMATION_STATUS 0xFF818586 +// + +// by Owen on 03/09/19-03/09/22 for RTL8185 +#define OID_RT_WIRELESS_MODE 0xFF818500 +#define OID_RT_SUPPORTED_RATES 0xFF818501 +#define OID_RT_DESIRED_RATES 0xFF818502 +#define OID_RT_WIRELESS_MODE_STARTING_ADHOC 0xFF818503 +// + +#define OID_RT_GET_CONNECT_STATE 0xFF030001 +#define OID_RT_RESCAN 0xFF030002 +#define OID_RT_SET_KEY_LENGTH 0xFF030003 +#define OID_RT_SET_DEFAULT_KEY_ID 0xFF030004 + +#define OID_RT_SET_CHANNEL 0xFF010182 +#define OID_RT_SET_SNIFFER_MODE 0xFF010183 +#define OID_RT_GET_SIGNAL_QUALITY 0xFF010184 +#define OID_RT_GET_SMALL_PACKET_CRC 0xFF010185 +#define OID_RT_GET_MIDDLE_PACKET_CRC 0xFF010186 +#define OID_RT_GET_LARGE_PACKET_CRC 0xFF010187 +#define OID_RT_GET_TX_RETRY 0xFF010188 +#define OID_RT_GET_RX_RETRY 0xFF010189 +#define OID_RT_PRO_SET_FW_DIG_STATE 0xFF01018A//S +#define OID_RT_PRO_SET_FW_RA_STATE 0xFF01018B//S + +#define OID_RT_GET_RX_TOTAL_PACKET 0xFF010190 +#define OID_RT_GET_TX_BEACON_OK 0xFF010191 +#define OID_RT_GET_TX_BEACON_ERR 0xFF010192 +#define OID_RT_GET_RX_ICV_ERR 0xFF010193 +#define OID_RT_SET_ENCRYPTION_ALGORITHM 0xFF010194 +#define OID_RT_SET_NO_AUTO_RESCAN 0xFF010195 +#define OID_RT_GET_PREAMBLE_MODE 0xFF010196 +#define OID_RT_GET_DRIVER_UP_DELTA_TIME 0xFF010197 +#define OID_RT_GET_AP_IP 0xFF010198 +#define OID_RT_GET_CHANNELPLAN 0xFF010199 +#define OID_RT_SET_PREAMBLE_MODE 0xFF01019A +#define OID_RT_SET_BCN_INTVL 0xFF01019B +#define OID_RT_GET_RF_VENDER 0xFF01019C +#define OID_RT_DEDICATE_PROBE 0xFF01019D +#define OID_RT_PRO_RX_FILTER_PATTERN 0xFF01019E + +#define OID_RT_GET_DCST_CURRENT_THRESHOLD 0xFF01019F + +#define OID_RT_GET_CCA_ERR 0xFF0101A0 +#define OID_RT_GET_CCA_UPGRADE_THRESHOLD 0xFF0101A1 +#define OID_RT_GET_CCA_FALLBACK_THRESHOLD 0xFF0101A2 + +#define OID_RT_GET_CCA_UPGRADE_EVALUATE_TIMES 0xFF0101A3 +#define OID_RT_GET_CCA_FALLBACK_EVALUATE_TIMES 0xFF0101A4 + +// by Owen on 03/31/03 for Cameo's request +#define OID_RT_SET_RATE_ADAPTIVE 0xFF0101A5 +// +#define OID_RT_GET_DCST_EVALUATE_PERIOD 0xFF0101A5 +#define OID_RT_GET_DCST_TIME_UNIT_INDEX 0xFF0101A6 +#define OID_RT_GET_TOTAL_TX_BYTES 0xFF0101A7 +#define OID_RT_GET_TOTAL_RX_BYTES 0xFF0101A8 +#define OID_RT_CURRENT_TX_POWER_LEVEL 0xFF0101A9 +#define OID_RT_GET_ENC_KEY_MISMATCH_COUNT 0xFF0101AA +#define OID_RT_GET_ENC_KEY_MATCH_COUNT 0xFF0101AB +#define OID_RT_GET_CHANNEL 0xFF0101AC + +#define OID_RT_SET_CHANNELPLAN 0xFF0101AD +#define OID_RT_GET_HARDWARE_RADIO_OFF 0xFF0101AE +#define OID_RT_CHANNELPLAN_BY_COUNTRY 0xFF0101AF +#define OID_RT_SCAN_AVAILABLE_BSSID 0xFF0101B0 +#define OID_RT_GET_HARDWARE_VERSION 0xFF0101B1 +#define OID_RT_GET_IS_ROAMING 0xFF0101B2 +#define OID_RT_GET_IS_PRIVACY 0xFF0101B3 +#define OID_RT_GET_KEY_MISMATCH 0xFF0101B4 +#define OID_RT_SET_RSSI_ROAM_TRAFFIC_TH 0xFF0101B5 +#define OID_RT_SET_RSSI_ROAM_SIGNAL_TH 0xFF0101B6 +#define OID_RT_RESET_LOG 0xFF0101B7 +#define OID_RT_GET_LOG 0xFF0101B8 +#define OID_RT_SET_INDICATE_HIDDEN_AP 0xFF0101B9 +#define OID_RT_GET_HEADER_FAIL 0xFF0101BA +#define OID_RT_SUPPORTED_WIRELESS_MODE 0xFF0101BB +#define OID_RT_GET_CHANNEL_LIST 0xFF0101BC +#define OID_RT_GET_SCAN_IN_PROGRESS 0xFF0101BD +#define OID_RT_GET_TX_INFO 0xFF0101BE +#define OID_RT_RF_READ_WRITE_OFFSET 0xFF0101BF +#define OID_RT_RF_READ_WRITE 0xFF0101C0 + +// For Netgear request. 2005.01.13, by rcnjko. +#define OID_RT_FORCED_DATA_RATE 0xFF0101C1 +#define OID_RT_WIRELESS_MODE_FOR_SCAN_LIST 0xFF0101C2 +// For Netgear request. 2005.02.17, by rcnjko. +#define OID_RT_GET_BSS_WIRELESS_MODE 0xFF0101C3 +// For AZ project. 2005.06.27, by rcnjko. +#define OID_RT_SCAN_WITH_MAGIC_PACKET 0xFF0101C4 + +// Vincent 8185MP +#define OID_RT_PRO_RX_FILTER 0xFF0111C0 + +//Andy TEST +//#define OID_RT_PRO_WRITE_REGISTRY 0xFF0111C1 +//#define OID_RT_PRO_READ_REGISTRY 0xFF0111C2 +#define OID_CE_USB_WRITE_REGISTRY 0xFF0111C1 +#define OID_CE_USB_READ_REGISTRY 0xFF0111C2 + + +#define OID_RT_PRO_SET_INITIAL_GAIN 0xFF0111C3 +#define OID_RT_PRO_SET_BB_RF_STANDBY_MODE 0xFF0111C4 +#define OID_RT_PRO_SET_BB_RF_SHUTDOWN_MODE 0xFF0111C5 +#define OID_RT_PRO_SET_TX_CHARGE_PUMP 0xFF0111C6 +#define OID_RT_PRO_SET_RX_CHARGE_PUMP 0xFF0111C7 +#define OID_RT_PRO_RF_WRITE_REGISTRY 0xFF0111C8 +#define OID_RT_PRO_RF_READ_REGISTRY 0xFF0111C9 +#define OID_RT_PRO_QUERY_RF_TYPE 0xFF0111CA + +// AP OID +#define OID_RT_AP_GET_ASSOCIATED_STATION_LIST 0xFF010300 +#define OID_RT_AP_GET_CURRENT_TIME_STAMP 0xFF010301 +#define OID_RT_AP_SWITCH_INTO_AP_MODE 0xFF010302 +#define OID_RT_AP_SET_DTIM_PERIOD 0xFF010303 +#define OID_RT_AP_SUPPORTED 0xFF010304 // Determine if driver supports AP mode. 2004.08.27, by rcnjko. +#define OID_RT_AP_SET_PASSPHRASE 0xFF010305 // Set WPA-PSK passphrase into authenticator. 2005.07.08, byrcnjko. + +// 8187MP. 2004.09.06, by rcnjko. +#define OID_RT_PRO8187_WI_POLL 0xFF818780 +#define OID_RT_PRO_WRITE_BB_REG 0xFF818781 +#define OID_RT_PRO_READ_BB_REG 0xFF818782 +#define OID_RT_PRO_WRITE_RF_REG 0xFF818783 +#define OID_RT_PRO_READ_RF_REG 0xFF818784 + +// Meeting House. added by Annie, 2005-07-20. +#define OID_RT_MH_VENDER_ID 0xFFEDC100 + +//8711 MP OID added 20051230. +#define OID_RT_PRO8711_JOIN_BSS 0xFF871100//S + +#define OID_RT_PRO_READ_REGISTER 0xFF871101 //Q +#define OID_RT_PRO_WRITE_REGISTER 0xFF871102 //S + +#define OID_RT_PRO_BURST_READ_REGISTER 0xFF871103 //Q +#define OID_RT_PRO_BURST_WRITE_REGISTER 0xFF871104 //S + +#define OID_RT_PRO_WRITE_TXCMD 0xFF871105 //S + +#define OID_RT_PRO_READ16_EEPROM 0xFF871106 //Q +#define OID_RT_PRO_WRITE16_EEPROM 0xFF871107 //S + +#define OID_RT_PRO_H2C_SET_COMMAND 0xFF871108 //S +#define OID_RT_PRO_H2C_QUERY_RESULT 0xFF871109 //Q + +#define OID_RT_PRO8711_WI_POLL 0xFF87110A //Q +#define OID_RT_PRO8711_PKT_LOSS 0xFF87110B //Q +#define OID_RT_RD_ATTRIB_MEM 0xFF87110C//Q +#define OID_RT_WR_ATTRIB_MEM 0xFF87110D//S + + +//Method 2 for H2C/C2H +#define OID_RT_PRO_H2C_CMD_MODE 0xFF871110 //S +#define OID_RT_PRO_H2C_CMD_RSP_MODE 0xFF871111 //Q +#define OID_RT_PRO_H2C_CMD_EVENT_MODE 0xFF871112 //S +#define OID_RT_PRO_WAIT_C2H_EVENT 0xFF871113 //Q +#define OID_RT_PRO_RW_ACCESS_PROTOCOL_TEST 0xFF871114//Q + +#define OID_RT_PRO_SCSI_ACCESS_TEST 0xFF871115 //Q, S + +#define OID_RT_PRO_SCSI_TCPIPOFFLOAD_OUT 0xFF871116 //S +#define OID_RT_PRO_SCSI_TCPIPOFFLOAD_IN 0xFF871117 //Q,S +#define OID_RT_RRO_RX_PKT_VIA_IOCTRL 0xFF871118 //Q +#define OID_RT_RRO_RX_PKTARRAY_VIA_IOCTRL 0xFF871119 //Q + +#define OID_RT_RPO_SET_PWRMGT_TEST 0xFF87111A //S +#define OID_RT_PRO_QRY_PWRMGT_TEST 0XFF87111B //Q +#define OID_RT_RPO_ASYNC_RWIO_TEST 0xFF87111C //S +#define OID_RT_RPO_ASYNC_RWIO_POLL 0xFF87111D //Q +#define OID_RT_PRO_SET_RF_INTFS 0xFF87111E //S +#define OID_RT_POLL_RX_STATUS 0xFF87111F //Q + +#define OID_RT_PRO_CFG_DEBUG_MESSAGE 0xFF871120 //Q,S +#define OID_RT_PRO_SET_DATA_RATE_EX 0xFF871121//S +#define OID_RT_PRO_SET_BASIC_RATE 0xFF871122//S +#define OID_RT_PRO_READ_TSSI 0xFF871123//S +#define OID_RT_PRO_SET_POWER_TRACKING 0xFF871124//S + + +#define OID_RT_PRO_QRY_PWRSTATE 0xFF871150 //Q +#define OID_RT_PRO_SET_PWRSTATE 0xFF871151 //S + +//Method 2 , using workitem +#define OID_RT_SET_READ_REG 0xFF871181 //S +#define OID_RT_SET_WRITE_REG 0xFF871182 //S +#define OID_RT_SET_BURST_READ_REG 0xFF871183 //S +#define OID_RT_SET_BURST_WRITE_REG 0xFF871184 //S +#define OID_RT_SET_WRITE_TXCMD 0xFF871185 //S +#define OID_RT_SET_READ16_EEPROM 0xFF871186 //S +#define OID_RT_SET_WRITE16_EEPROM 0xFF871187 //S +#define OID_RT_QRY_POLL_WKITEM 0xFF871188 //Q + +//For SDIO INTERFACE only +#define OID_RT_PRO_SYNCPAGERW_SRAM 0xFF8711A0 //Q, S +#define OID_RT_PRO_871X_DRV_EXT 0xFF8711A1 + +//For USB INTERFACE only +#define OID_RT_PRO_USB_VENDOR_REQ 0xFF8711B0 //Q, S +#define OID_RT_PRO_SCSI_AUTO_TEST 0xFF8711B1 //S +#define OID_RT_PRO_USB_MAC_AC_FIFO_WRITE 0xFF8711B2 //S +#define OID_RT_PRO_USB_MAC_RX_FIFO_READ 0xFF8711B3 //Q +#define OID_RT_PRO_USB_MAC_RX_FIFO_POLLING 0xFF8711B4 //Q + +#define OID_RT_PRO_H2C_SET_RATE_TABLE 0xFF8711FB //S +#define OID_RT_PRO_H2C_GET_RATE_TABLE 0xFF8711FC //S +#define OID_RT_PRO_H2C_C2H_LBK_TEST 0xFF8711FE + +#define OID_RT_PRO_ENCRYPTION_CTRL 0xFF871200 //Q, S +#define OID_RT_PRO_ADD_STA_INFO 0xFF871201 //S +#define OID_RT_PRO_DELE_STA_INFO 0xFF871202 //S +#define OID_RT_PRO_QUERY_DR_VARIABLE 0xFF871203 //Q + +#define OID_RT_PRO_RX_PACKET_TYPE 0xFF871204 //Q, S + +#define OID_RT_PRO_READ_EFUSE 0xFF871205 //Q +#define OID_RT_PRO_WRITE_EFUSE 0xFF871206 //S +#define OID_RT_PRO_RW_EFUSE_PGPKT 0xFF871207 //Q, S +#define OID_RT_GET_EFUSE_CURRENT_SIZE 0xFF871208 //Q + +#define OID_RT_SET_BANDWIDTH 0xFF871209 //S +#define OID_RT_SET_CRYSTAL_CAP 0xFF87120A //S + +#define OID_RT_SET_RX_PACKET_TYPE 0xFF87120B //S + +#define OID_RT_GET_EFUSE_MAX_SIZE 0xFF87120C //Q + +#define OID_RT_PRO_SET_TX_AGC_OFFSET 0xFF87120D //S + +#define OID_RT_PRO_SET_PKT_TEST_MODE 0xFF87120E //S + +#define OID_RT_PRO_FOR_EVM_TEST_SETTING 0xFF87120F //S + +#define OID_RT_PRO_GET_THERMAL_METER 0xFF871210 //Q + +#define OID_RT_RESET_PHY_RX_PACKET_COUNT 0xFF871211 //S +#define OID_RT_GET_PHY_RX_PACKET_RECEIVED 0xFF871212 //Q +#define OID_RT_GET_PHY_RX_PACKET_CRC32_ERROR 0xFF871213 //Q + +#define OID_RT_SET_POWER_DOWN 0xFF871214 //S + +#define OID_RT_GET_POWER_MODE 0xFF871215 //Q + +#define OID_RT_PRO_EFUSE 0xFF871216 //Q, S +#define OID_RT_PRO_EFUSE_MAP 0xFF871217 //Q, S + +#endif //#ifndef __CUSTOM_OID_H --- linux-raspi2-4.2.0.orig/drivers/net/wireless/rtl8192cu/include/nic_spec.h +++ linux-raspi2-4.2.0/drivers/net/wireless/rtl8192cu/include/nic_spec.h @@ -0,0 +1,46 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved. + * + * 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 + * published by the Free Software Foundation. + * + * 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 Street, Fifth Floor, Boston, MA 02110, USA + * + * + ******************************************************************************/ + + +#ifndef __NIC_SPEC_H__ +#define __NIC_SPEC_H__ + +#include + +#define RTL8711_MCTRL_ (0x20000) +#define RTL8711_UART_ (0x30000) +#define RTL8711_TIMER_ (0x40000) +#define RTL8711_FINT_ (0x50000) +#define RTL8711_HINT_ (0x50000) +#define RTL8711_GPIO_ (0x60000) +#define RTL8711_WLANCTRL_ (0x200000) +#define RTL8711_WLANFF_ (0xe00000) +#define RTL8711_HCICTRL_ (0x600000) +#define RTL8711_SYSCFG_ (0x620000) +#define RTL8711_SYSCTRL_ (0x620000) +#define RTL8711_MCCTRL_ (0x020000) + + +#include + +#include + + +#endif // __RTL8711_SPEC_H__ --- linux-raspi2-4.2.0.orig/drivers/net/wireless/rtl8192cu/include/osdep_ce_service.h +++ linux-raspi2-4.2.0/drivers/net/wireless/rtl8192cu/include/osdep_ce_service.h @@ -0,0 +1,170 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved. + * + * 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 + * published by the Free Software Foundation. + * + * 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 Street, Fifth Floor, Boston, MA 02110, USA + * + * + ******************************************************************************/ + +#ifndef __OSDEP_CE_SERVICE_H_ +#define __OSDEP_CE_SERVICE_H_ + + +#include +#include + +#ifdef CONFIG_SDIO_HCI +#include "SDCardDDK.h" +#endif + +#ifdef CONFIG_USB_HCI +#include +#endif + +typedef HANDLE _sema; +typedef LIST_ENTRY _list; +typedef NDIS_STATUS _OS_STATUS; + +typedef NDIS_SPIN_LOCK _lock; + +typedef HANDLE _rwlock; //Mutex + +typedef u32 _irqL; + +typedef NDIS_HANDLE _nic_hdl; + + +typedef NDIS_MINIPORT_TIMER _timer; + +struct __queue { + LIST_ENTRY queue; + _lock lock; +}; + +typedef NDIS_PACKET _pkt; +typedef NDIS_BUFFER _buffer; +typedef struct __queue _queue; + +typedef HANDLE _thread_hdl_; +typedef DWORD thread_return; +typedef void* thread_context; +typedef NDIS_WORK_ITEM _workitem; + +#define thread_exit() ExitThread(STATUS_SUCCESS); return 0; + + +#define SEMA_UPBND (0x7FFFFFFF) //8192 + +__inline static _list *get_prev(_list *list) +{ + return list->Blink; +} + +__inline static _list *get_next(_list *list) +{ + return list->Flink; +} + +__inline static _list *get_list_head(_queue *queue) +{ + return (&(queue->queue)); +} + +#define LIST_CONTAINOR(ptr, type, member) CONTAINING_RECORD(ptr, type, member) + +__inline static void _enter_critical(_lock *plock, _irqL *pirqL) +{ + NdisAcquireSpinLock(plock); +} + +__inline static void _exit_critical(_lock *plock, _irqL *pirqL) +{ + NdisReleaseSpinLock(plock); +} + +__inline static _enter_critical_ex(_lock *plock, _irqL *pirqL) +{ + NdisDprAcquireSpinLock(plock); +} + +__inline static _exit_critical_ex(_lock *plock, _irqL *pirqL) +{ + NdisDprReleaseSpinLock(plock); +} + + +__inline static void _enter_hwio_critical(_rwlock *prwlock, _irqL *pirqL) +{ + WaitForSingleObject(*prwlock, INFINITE ); + +} + +__inline static void _exit_hwio_critical(_rwlock *prwlock, _irqL *pirqL) +{ + ReleaseMutex(*prwlock); +} + +__inline static void rtw_list_delete(_list *plist) +{ + RemoveEntryList(plist); + InitializeListHead(plist); +} + +__inline static void _init_timer(_timer *ptimer,_nic_hdl nic_hdl,void *pfunc,PVOID cntx) +{ + NdisMInitializeTimer(ptimer, nic_hdl, pfunc, cntx); +} + +__inline static void _set_timer(_timer *ptimer,u32 delay_time) +{ + NdisMSetTimer(ptimer,delay_time); +} + +__inline static void _cancel_timer(_timer *ptimer,u8 *bcancelled) +{ + NdisMCancelTimer(ptimer,bcancelled); +} + +__inline static void _init_workitem(_workitem *pwork, void *pfunc, PVOID cntx) +{ + + NdisInitializeWorkItem(pwork, pfunc, cntx); +} + +__inline static void _set_workitem(_workitem *pwork) +{ + NdisScheduleWorkItem(pwork); +} + +#define ATOMIC_INIT(i) { (i) } + +// +// Global Mutex: can only be used at PASSIVE level. +// + +#define ACQUIRE_GLOBAL_MUTEX(_MutexCounter) \ +{ \ + while (NdisInterlockedIncrement((PULONG)&(_MutexCounter)) != 1)\ + { \ + NdisInterlockedDecrement((PULONG)&(_MutexCounter)); \ + NdisMSleep(10000); \ + } \ +} + +#define RELEASE_GLOBAL_MUTEX(_MutexCounter) \ +{ \ + NdisInterlockedDecrement((PULONG)&(_MutexCounter)); \ +} +#endif --- linux-raspi2-4.2.0.orig/drivers/net/wireless/rtl8192cu/include/osdep_intf.h +++ linux-raspi2-4.2.0/drivers/net/wireless/rtl8192cu/include/osdep_intf.h @@ -0,0 +1,154 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved. + * + * 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 + * published by the Free Software Foundation. + * + * 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 Street, Fifth Floor, Boston, MA 02110, USA + * + * + ******************************************************************************/ + +#ifndef __OSDEP_INTF_H_ +#define __OSDEP_INTF_H_ + +#include +#include +#include + +struct intf_priv { + + u8 *intf_dev; + u32 max_iosz; //USB2.0: 128, USB1.1: 64, SDIO:64 + u32 max_xmitsz; //USB2.0: unlimited, SDIO:512 + u32 max_recvsz; //USB2.0: unlimited, SDIO:512 + + volatile u8 *io_rwmem; + volatile u8 *allocated_io_rwmem; + u32 io_wsz; //unit: 4bytes + u32 io_rsz;//unit: 4bytes + u8 intf_status; + + void (*_bus_io)(u8 *priv); + +/* +Under Sync. IRP (SDIO/USB) +A protection mechanism is necessary for the io_rwmem(read/write protocol) + +Under Async. IRP (SDIO/USB) +The protection mechanism is through the pending queue. +*/ + + _mutex ioctl_mutex; + + +#ifdef PLATFORM_LINUX + #ifdef CONFIG_USB_HCI + // when in USB, IO is through interrupt in/out endpoints + struct usb_device *udev; + PURB piorw_urb; + u8 io_irp_cnt; + u8 bio_irp_pending; + _sema io_retevt; + _timer io_timer; + u8 bio_irp_timeout; + u8 bio_timer_cancel; + #endif +#endif + +#ifdef PLATFORM_OS_XP + #ifdef CONFIG_SDIO_HCI + // below is for io_rwmem... + PMDL pmdl; + PSDBUS_REQUEST_PACKET sdrp; + PSDBUS_REQUEST_PACKET recv_sdrp; + PSDBUS_REQUEST_PACKET xmit_sdrp; + + PIRP piorw_irp; + + #endif + #ifdef CONFIG_USB_HCI + PURB piorw_urb; + PIRP piorw_irp; + u8 io_irp_cnt; + u8 bio_irp_pending; + _sema io_retevt; + #endif +#endif + +}; + + +#ifdef CONFIG_R871X_TEST +int rtw_start_pseudo_adhoc(_adapter *padapter); +int rtw_stop_pseudo_adhoc(_adapter *padapter); +#endif + +struct dvobj_priv *devobj_init(void); +void devobj_deinit(struct dvobj_priv *pdvobj); + +u8 rtw_init_drv_sw(_adapter *padapter); +u8 rtw_free_drv_sw(_adapter *padapter); +u8 rtw_reset_drv_sw(_adapter *padapter); + +u32 rtw_start_drv_threads(_adapter *padapter); +void rtw_stop_drv_threads (_adapter *padapter); +void rtw_cancel_all_timer(_adapter *padapter); + +#ifdef PLATFORM_LINUX +int rtw_ioctl(struct net_device *dev, struct ifreq *rq, int cmd); + +int rtw_init_netdev_name(struct net_device *pnetdev, const char *ifname); +struct net_device *rtw_init_netdev(_adapter *padapter); +void rtw_unregister_netdevs(struct dvobj_priv *dvobj); + +#if (LINUX_VERSION_CODE>=KERNEL_VERSION(2,6,35)) +u16 rtw_recv_select_queue(struct sk_buff *skb); +#endif //LINUX_VERSION_CODE>=KERNEL_VERSION(2,6,35) + +#ifdef CONFIG_PROC_DEBUG +void rtw_proc_init_one(struct net_device *dev); +void rtw_proc_remove_one(struct net_device *dev); +#else //!CONFIG_PROC_DEBUG +static void rtw_proc_init_one(struct net_device *dev){} +static void rtw_proc_remove_one(struct net_device *dev){} +#endif //!CONFIG_PROC_DEBUG +#endif //PLATFORM_LINUX + + +#ifdef PLATFORM_FREEBSD +extern int rtw_ioctl(struct ifnet * ifp, u_long cmd, caddr_t data); +#endif + +void rtw_ips_dev_unload(_adapter *padapter); +#ifdef CONFIG_IPS +int rtw_ips_pwr_up(_adapter *padapter); +void rtw_ips_pwr_down(_adapter *padapter); +#endif + +#ifdef CONFIG_CONCURRENT_MODE +struct _io_ops; +_adapter *rtw_drv_if2_init(_adapter *primary_padapter, void (*set_intf_ops)(struct _io_ops *pops)); +void rtw_drv_if2_free(_adapter *if2); +void rtw_drv_if2_stop(_adapter *if2); +#ifdef CONFIG_MULTI_VIR_IFACES +struct dvobj_priv; +_adapter *rtw_drv_add_vir_if(_adapter *primary_padapter, void (*set_intf_ops)(struct _io_ops *pops)); +void rtw_drv_stop_vir_ifaces(struct dvobj_priv *dvobj); +void rtw_drv_free_vir_ifaces(struct dvobj_priv *dvobj); +#endif //CONFIG_MULTI_VIR_IFACES +#endif + +int rtw_drv_register_netdev(_adapter *padapter); +void rtw_ndev_destructor(_nic_hdl ndev); + +#endif //_OSDEP_INTF_H_ --- linux-raspi2-4.2.0.orig/drivers/net/wireless/rtl8192cu/include/osdep_service.h +++ linux-raspi2-4.2.0/drivers/net/wireless/rtl8192cu/include/osdep_service.h @@ -0,0 +1,1813 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved. + * + * 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 + * published by the Free Software Foundation. + * + * 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 Street, Fifth Floor, Boston, MA 02110, USA + * + * + ******************************************************************************/ +#ifndef __OSDEP_SERVICE_H_ +#define __OSDEP_SERVICE_H_ + +#include +#include +//#include + +#define _FAIL 0 +#define _SUCCESS 1 +#define RTW_RX_HANDLED 2 +//#define RTW_STATUS_TIMEDOUT -110 + +#undef _TRUE +#define _TRUE 1 + +#undef _FALSE +#define _FALSE 0 + + +#ifdef PLATFORM_FREEBSD +#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 +#include +#include +#include +#include +#include + + +#include +#include +#include +#include + +#include +#include +#include +#include + +#include +#include +#include "usbdevs.h" + +#define USB_DEBUG_VAR rum_debug +#include + +#if 1 //Baron porting from linux, it's all temp solution, needs to check again +#include +#include /* XXX for PCPU_GET */ +// typedef struct semaphore _sema; + typedef struct sema _sema; +// typedef spinlock_t _lock; + typedef struct mtx _lock; + typedef struct mtx _mutex; + typedef struct timer_list _timer; + struct list_head { + struct list_head *next, *prev; + }; + struct __queue { + struct list_head queue; + _lock lock; + }; + + //typedef struct sk_buff _pkt; + typedef struct mbuf _pkt; + typedef struct mbuf _buffer; + + typedef struct __queue _queue; + typedef struct list_head _list; + typedef int _OS_STATUS; + //typedef u32 _irqL; + typedef unsigned long _irqL; + typedef struct ifnet * _nic_hdl; + + typedef pid_t _thread_hdl_; +// typedef struct thread _thread_hdl_; + typedef void thread_return; + typedef void* thread_context; + + //#define thread_exit() complete_and_exit(NULL, 0) + + typedef void timer_hdl_return; + typedef void* timer_hdl_context; + typedef struct work_struct _workitem; + +#define KERNEL_VERSION(a,b,c) (((a) << 16) + ((b) << 8) + (c)) +/* emulate a modern version */ +#define LINUX_VERSION_CODE KERNEL_VERSION(2, 6, 35) + +#define WIRELESS_EXT -1 +#define HZ hz +#define spin_lock_irqsave mtx_lock_irqsave +#define spin_lock_bh mtx_lock_irqsave +#define mtx_lock_irqsave(lock, x) mtx_lock(lock)//{local_irq_save((x)); mtx_lock_spin((lock));} +//#define IFT_RTW 0xf9 //ifnet allocate type for RTW +#define free_netdev if_free +#define LIST_CONTAINOR(ptr, type, member) \ + ((type *)((char *)(ptr)-(SIZE_T)(&((type *)0)->member))) +#define container_of(p,t,n) (t*)((p)-&(((t*)0)->n)) +/* + * Linux timers are emulated using FreeBSD callout functions + * (and taskqueue functionality). + * + * Currently no timer stats functionality. + * + * See (linux_compat) processes.c + * + */ +struct timer_list { + + /* FreeBSD callout related fields */ + struct callout callout; + + //timeout function + void (*function)(void*); + //argument + void *arg; + +}; +struct workqueue_struct; +struct work_struct; +typedef void (*work_func_t)(struct work_struct *work); +/* Values for the state of an item of work (work_struct) */ +typedef enum work_state { + WORK_STATE_UNSET = 0, + WORK_STATE_CALLOUT_PENDING = 1, + WORK_STATE_TASK_PENDING = 2, + WORK_STATE_WORK_CANCELLED = 3 +} work_state_t; + +struct work_struct { + struct task task; /* FreeBSD task */ + work_state_t state; /* the pending or otherwise state of work. */ + work_func_t func; +}; +#define spin_unlock_irqrestore mtx_unlock_irqrestore +#define spin_unlock_bh mtx_unlock_irqrestore +#define mtx_unlock_irqrestore(lock,x) mtx_unlock(lock); +extern void _rtw_spinlock_init(_lock *plock); + +//modify private structure to match freebsd +#define BITS_PER_LONG 32 +union ktime { + s64 tv64; +#if BITS_PER_LONG != 64 && !defined(CONFIG_KTIME_SCALAR) + struct { +#ifdef __BIG_ENDIAN + s32 sec, nsec; +#else + s32 nsec, sec; +#endif + } tv; +#endif +}; +#define kmemcheck_bitfield_begin(name) +#define kmemcheck_bitfield_end(name) +#define CHECKSUM_NONE 0 +typedef unsigned char *sk_buff_data_t; +typedef union ktime ktime_t; /* Kill this */ + +void rtw_mtx_lock(_lock *plock); + +void rtw_mtx_unlock(_lock *plock); + +/** + * struct sk_buff - socket buffer + * @next: Next buffer in list + * @prev: Previous buffer in list + * @sk: Socket we are owned by + * @tstamp: Time we arrived + * @dev: Device we arrived on/are leaving by + * @transport_header: Transport layer header + * @network_header: Network layer header + * @mac_header: Link layer header + * @_skb_refdst: destination entry (with norefcount bit) + * @sp: the security path, used for xfrm + * @cb: Control buffer. Free for use by every layer. Put private vars here + * @len: Length of actual data + * @data_len: Data length + * @mac_len: Length of link layer header + * @hdr_len: writable header length of cloned skb + * @csum: Checksum (must include start/offset pair) + * @csum_start: Offset from skb->head where checksumming should start + * @csum_offset: Offset from csum_start where checksum should be stored + * @local_df: allow local fragmentation + * @cloned: Head may be cloned (check refcnt to be sure) + * @nohdr: Payload reference only, must not modify header + * @pkt_type: Packet class + * @fclone: skbuff clone status + * @ip_summed: Driver fed us an IP checksum + * @priority: Packet queueing priority + * @users: User count - see {datagram,tcp}.c + * @protocol: Packet protocol from driver + * @truesize: Buffer size + * @head: Head of buffer + * @data: Data head pointer + * @tail: Tail pointer + * @end: End pointer + * @destructor: Destruct function + * @mark: Generic packet mark + * @nfct: Associated connection, if any + * @ipvs_property: skbuff is owned by ipvs + * @peeked: this packet has been seen already, so stats have been + * done for it, don't do them again + * @nf_trace: netfilter packet trace flag + * @nfctinfo: Relationship of this skb to the connection + * @nfct_reasm: netfilter conntrack re-assembly pointer + * @nf_bridge: Saved data about a bridged frame - see br_netfilter.c + * @skb_iif: ifindex of device we arrived on + * @rxhash: the packet hash computed on receive + * @queue_mapping: Queue mapping for multiqueue devices + * @tc_index: Traffic control index + * @tc_verd: traffic control verdict + * @ndisc_nodetype: router type (from link layer) + * @dma_cookie: a cookie to one of several possible DMA operations + * done by skb DMA functions + * @secmark: security marking + * @vlan_tci: vlan tag control information + */ + +struct sk_buff { + /* These two members must be first. */ + struct sk_buff *next; + struct sk_buff *prev; + + ktime_t tstamp; + + struct sock *sk; + //struct net_device *dev; + struct ifnet *dev; + + /* + * This is the control buffer. It is free to use for every + * layer. Please put your private variables there. If you + * want to keep them across layers you have to do a skb_clone() + * first. This is owned by whoever has the skb queued ATM. + */ + char cb[48] __aligned(8); + + unsigned long _skb_refdst; +#ifdef CONFIG_XFRM + struct sec_path *sp; +#endif + unsigned int len, + data_len; + u16 mac_len, + hdr_len; + union { + u32 csum; + struct { + u16 csum_start; + u16 csum_offset; + }smbol2; + }smbol1; + u32 priority; + kmemcheck_bitfield_begin(flags1); + u8 local_df:1, + cloned:1, + ip_summed:2, + nohdr:1, + nfctinfo:3; + u8 pkt_type:3, + fclone:2, + ipvs_property:1, + peeked:1, + nf_trace:1; + kmemcheck_bitfield_end(flags1); + u16 protocol; + + void (*destructor)(struct sk_buff *skb); +#if defined(CONFIG_NF_CONNTRACK) || defined(CONFIG_NF_CONNTRACK_MODULE) + struct nf_conntrack *nfct; + struct sk_buff *nfct_reasm; +#endif +#ifdef CONFIG_BRIDGE_NETFILTER + struct nf_bridge_info *nf_bridge; +#endif + + int skb_iif; +#ifdef CONFIG_NET_SCHED + u16 tc_index; /* traffic control index */ +#ifdef CONFIG_NET_CLS_ACT + u16 tc_verd; /* traffic control verdict */ +#endif +#endif + + u32 rxhash; + + kmemcheck_bitfield_begin(flags2); + u16 queue_mapping:16; +#ifdef CONFIG_IPV6_NDISC_NODETYPE + u8 ndisc_nodetype:2, + deliver_no_wcard:1; +#else + u8 deliver_no_wcard:1; +#endif + kmemcheck_bitfield_end(flags2); + + /* 0/14 bit hole */ + +#ifdef CONFIG_NET_DMA + dma_cookie_t dma_cookie; +#endif +#ifdef CONFIG_NETWORK_SECMARK + u32 secmark; +#endif + union { + u32 mark; + u32 dropcount; + }symbol3; + + u16 vlan_tci; + + sk_buff_data_t transport_header; + sk_buff_data_t network_header; + sk_buff_data_t mac_header; + /* These elements must be at the end, see alloc_skb() for details. */ + sk_buff_data_t tail; + sk_buff_data_t end; + unsigned char *head, + *data; + unsigned int truesize; + atomic_t users; +}; +struct sk_buff_head { + /* These two members must be first. */ + struct sk_buff *next; + struct sk_buff *prev; + + u32 qlen; + _lock lock; +}; +#define skb_tail_pointer(skb) skb->tail +static inline unsigned char *skb_put(struct sk_buff *skb, unsigned int len) +{ + unsigned char *tmp = skb_tail_pointer(skb); + //SKB_LINEAR_ASSERT(skb); + skb->tail += len; + skb->len += len; + return tmp; +} + +static inline unsigned char *__skb_pull(struct sk_buff *skb, unsigned int len) +{ + skb->len -= len; + if(skb->len < skb->data_len) + printf("%s(),%d,error!\n",__FUNCTION__,__LINE__); + return skb->data += len; +} +static inline unsigned char *skb_pull(struct sk_buff *skb, unsigned int len) +{ + #ifdef PLATFORM_FREEBSD + return __skb_pull(skb, len); + #else + return unlikely(len > skb->len) ? NULL : __skb_pull(skb, len); + #endif //PLATFORM_FREEBSD +} +static inline u32 skb_queue_len(const struct sk_buff_head *list_) +{ + return list_->qlen; +} +static inline void __skb_insert(struct sk_buff *newsk, + struct sk_buff *prev, struct sk_buff *next, + struct sk_buff_head *list) +{ + newsk->next = next; + newsk->prev = prev; + next->prev = prev->next = newsk; + list->qlen++; +} +static inline void __skb_queue_before(struct sk_buff_head *list, + struct sk_buff *next, + struct sk_buff *newsk) +{ + __skb_insert(newsk, next->prev, next, list); +} +static inline void skb_queue_tail(struct sk_buff_head *list, + struct sk_buff *newsk) +{ + mtx_lock(&list->lock); + __skb_queue_before(list, (struct sk_buff *)list, newsk); + mtx_unlock(&list->lock); +} +static inline struct sk_buff *skb_peek(struct sk_buff_head *list_) +{ + struct sk_buff *list = ((struct sk_buff *)list_)->next; + if (list == (struct sk_buff *)list_) + list = NULL; + return list; +} +static inline void __skb_unlink(struct sk_buff *skb, struct sk_buff_head *list) +{ + struct sk_buff *next, *prev; + + list->qlen--; + next = skb->next; + prev = skb->prev; + skb->next = skb->prev = NULL; + next->prev = prev; + prev->next = next; +} + +static inline struct sk_buff *skb_dequeue(struct sk_buff_head *list) +{ + mtx_lock(&list->lock); + + struct sk_buff *skb = skb_peek(list); + if (skb) + __skb_unlink(skb, list); + + mtx_unlock(&list->lock); + + return skb; +} +static inline void skb_reserve(struct sk_buff *skb, int len) +{ + skb->data += len; + skb->tail += len; +} +static inline void __skb_queue_head_init(struct sk_buff_head *list) +{ + list->prev = list->next = (struct sk_buff *)list; + list->qlen = 0; +} +/* + * This function creates a split out lock class for each invocation; + * this is needed for now since a whole lot of users of the skb-queue + * infrastructure in drivers have different locking usage (in hardirq) + * than the networking core (in softirq only). In the long run either the + * network layer or drivers should need annotation to consolidate the + * main types of usage into 3 classes. + */ +static inline void skb_queue_head_init(struct sk_buff_head *list) +{ + _rtw_spinlock_init(&list->lock); + __skb_queue_head_init(list); +} +unsigned long copy_from_user(void *to, const void *from, unsigned long n); +unsigned long copy_to_user(void *to, const void *from, unsigned long n); +struct sk_buff * dev_alloc_skb(unsigned int size); +struct sk_buff *skb_clone(const struct sk_buff *skb); +void dev_kfree_skb_any(struct sk_buff *skb); +#endif //Baron porting from linux, it's all temp solution, needs to check again + + +#if 1 // kenny add Linux compatibility code for Linux USB driver +#include + +#define __init // __attribute ((constructor)) +#define __exit // __attribute ((destructor)) + +/* + * Definitions for module_init and module_exit macros. + * + * These macros will use the SYSINIT framework to call a specified + * function (with no arguments) on module loading or unloading. + * + */ + +void module_init_exit_wrapper(void *arg); + +#define module_init(initfn) \ + SYSINIT(mod_init_ ## initfn, \ + SI_SUB_KLD, SI_ORDER_FIRST, \ + module_init_exit_wrapper, initfn) + +#define module_exit(exitfn) \ + SYSUNINIT(mod_exit_ ## exitfn, \ + SI_SUB_KLD, SI_ORDER_ANY, \ + module_init_exit_wrapper, exitfn) + +/* + * The usb_register and usb_deregister functions are used to register + * usb drivers with the usb subsystem. + */ +int usb_register(struct usb_driver *driver); +int usb_deregister(struct usb_driver *driver); + +/* + * usb_get_dev and usb_put_dev - increment/decrement the reference count + * of the usb device structure. + * + * Original body of usb_get_dev: + * + * if (dev) + * get_device(&dev->dev); + * return dev; + * + * Reference counts are not currently used in this compatibility + * layer. So these functions will do nothing. + */ +static inline struct usb_device * +usb_get_dev(struct usb_device *dev) +{ + return dev; +} + +static inline void +usb_put_dev(struct usb_device *dev) +{ + return; +} + + +// rtw_usb_compat_linux +int rtw_usb_submit_urb(struct urb *urb, uint16_t mem_flags); +int rtw_usb_unlink_urb(struct urb *urb); +int rtw_usb_clear_halt(struct usb_device *dev, struct usb_host_endpoint *uhe); +int rtw_usb_control_msg(struct usb_device *dev, struct usb_host_endpoint *uhe, + uint8_t request, uint8_t requesttype, + uint16_t value, uint16_t index, void *data, + uint16_t size, usb_timeout_t timeout); +int rtw_usb_set_interface(struct usb_device *dev, uint8_t iface_no, uint8_t alt_index); +int rtw_usb_setup_endpoint(struct usb_device *dev, + struct usb_host_endpoint *uhe, usb_size_t bufsize); +struct urb *rtw_usb_alloc_urb(uint16_t iso_packets, uint16_t mem_flags); +struct usb_host_endpoint *rtw_usb_find_host_endpoint(struct usb_device *dev, uint8_t type, uint8_t ep); +struct usb_host_interface *rtw_usb_altnum_to_altsetting(const struct usb_interface *intf, uint8_t alt_index); +struct usb_interface *rtw_usb_ifnum_to_if(struct usb_device *dev, uint8_t iface_no); +void *rtw_usb_buffer_alloc(struct usb_device *dev, usb_size_t size, uint8_t *dma_addr); +void *rtw_usbd_get_intfdata(struct usb_interface *intf); +void rtw_usb_linux_register(void *arg); +void rtw_usb_linux_deregister(void *arg); +void rtw_usb_linux_free_device(struct usb_device *dev); +void rtw_usb_buffer_free(struct usb_device *dev, usb_size_t size, + void *addr, uint8_t dma_addr); +void rtw_usb_free_urb(struct urb *urb); +void rtw_usb_init_urb(struct urb *urb); +void rtw_usb_kill_urb(struct urb *urb); +void rtw_usb_set_intfdata(struct usb_interface *intf, void *data); +void rtw_usb_fill_bulk_urb(struct urb *urb, struct usb_device *udev, + struct usb_host_endpoint *uhe, void *buf, + int length, usb_complete_t callback, void *arg); +int rtw_usb_bulk_msg(struct usb_device *udev, struct usb_host_endpoint *uhe, + void *data, int len, uint16_t *pactlen, usb_timeout_t timeout); +void *usb_get_intfdata(struct usb_interface *intf); +int usb_linux_init_endpoints(struct usb_device *udev); + + + +typedef struct urb * PURB; + +typedef unsigned gfp_t; +#define __GFP_WAIT ((gfp_t)0x10u) /* Can wait and reschedule? */ +#define __GFP_HIGH ((gfp_t)0x20u) /* Should access emergency pools? */ +#define __GFP_IO ((gfp_t)0x40u) /* Can start physical IO? */ +#define __GFP_FS ((gfp_t)0x80u) /* Can call down to low-level FS? */ +#define __GFP_COLD ((gfp_t)0x100u) /* Cache-cold page required */ +#define __GFP_NOWARN ((gfp_t)0x200u) /* Suppress page allocation failure warning */ +#define __GFP_REPEAT ((gfp_t)0x400u) /* Retry the allocation. Might fail */ +#define __GFP_NOFAIL ((gfp_t)0x800u) /* Retry for ever. Cannot fail */ +#define __GFP_NORETRY ((gfp_t)0x1000u)/* Do not retry. Might fail */ +#define __GFP_NO_GROW ((gfp_t)0x2000u)/* Slab internal usage */ +#define __GFP_COMP ((gfp_t)0x4000u)/* Add compound page metadata */ +#define __GFP_ZERO ((gfp_t)0x8000u)/* Return zeroed page on success */ +#define __GFP_NOMEMALLOC ((gfp_t)0x10000u) /* Don't use emergency reserves */ +#define __GFP_HARDWALL ((gfp_t)0x20000u) /* Enforce hardwall cpuset memory allocs */ + +/* This equals 0, but use constants in case they ever change */ +#define GFP_NOWAIT (GFP_ATOMIC & ~__GFP_HIGH) +/* GFP_ATOMIC means both !wait (__GFP_WAIT not set) and use emergency pool */ +#define GFP_ATOMIC (__GFP_HIGH) +#define GFP_NOIO (__GFP_WAIT) +#define GFP_NOFS (__GFP_WAIT | __GFP_IO) +#define GFP_KERNEL (__GFP_WAIT | __GFP_IO | __GFP_FS) +#define GFP_USER (__GFP_WAIT | __GFP_IO | __GFP_FS | __GFP_HARDWALL) +#define GFP_HIGHUSER (__GFP_WAIT | __GFP_IO | __GFP_FS | __GFP_HARDWALL | \ + __GFP_HIGHMEM) + + +#endif // kenny add Linux compatibility code for Linux USB + + + +#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,24)) + #define DMA_BIT_MASK(n) (((n) == 64) ? ~0ULL : ((1ULL<<(n))-1)) +#endif + +__inline static _list *get_next(_list *list) +{ + return list->next; +} + +__inline static _list *get_list_head(_queue *queue) +{ + return (&(queue->queue)); +} + + +#define LIST_CONTAINOR(ptr, type, member) \ + ((type *)((char *)(ptr)-(SIZE_T)(&((type *)0)->member))) + + +__inline static void _enter_critical(_lock *plock, _irqL *pirqL) +{ + spin_lock_irqsave(plock, *pirqL); +} + +__inline static void _exit_critical(_lock *plock, _irqL *pirqL) +{ + spin_unlock_irqrestore(plock, *pirqL); +} + +__inline static void _enter_critical_ex(_lock *plock, _irqL *pirqL) +{ + spin_lock_irqsave(plock, *pirqL); +} + +__inline static void _exit_critical_ex(_lock *plock, _irqL *pirqL) +{ + spin_unlock_irqrestore(plock, *pirqL); +} + +__inline static void _enter_critical_bh(_lock *plock, _irqL *pirqL) +{ + spin_lock_bh(plock, *pirqL); +} + +__inline static void _exit_critical_bh(_lock *plock, _irqL *pirqL) +{ + spin_unlock_bh(plock, *pirqL); +} + +__inline static void _enter_critical_mutex(_mutex *pmutex, _irqL *pirqL) +{ + + mtx_lock(pmutex); + +} + + +__inline static void _exit_critical_mutex(_mutex *pmutex, _irqL *pirqL) +{ + + mtx_unlock(pmutex); + +} +static inline void __list_del(struct list_head * prev, struct list_head * next) +{ + next->prev = prev; + prev->next = next; +} +static inline void INIT_LIST_HEAD(struct list_head *list) +{ + list->next = list; + list->prev = list; +} +__inline static void rtw_list_delete(_list *plist) +{ + __list_del(plist->prev, plist->next); + INIT_LIST_HEAD(plist); +} + +__inline static void _init_timer(_timer *ptimer,_nic_hdl padapter,void *pfunc,void* cntx) +{ + ptimer->function = pfunc; + ptimer->arg = cntx; + callout_init(&ptimer->callout, CALLOUT_MPSAFE); +} + +__inline static void _set_timer(_timer *ptimer,u32 delay_time) +{ + // mod_timer(ptimer , (jiffies+(delay_time*HZ/1000))); + if(ptimer->function && ptimer->arg){ + rtw_mtx_lock(NULL); + callout_reset(&ptimer->callout, delay_time,ptimer->function, ptimer->arg); + rtw_mtx_unlock(NULL); + } +} + +__inline static void _cancel_timer(_timer *ptimer,u8 *bcancelled) +{ + // del_timer_sync(ptimer); + // *bcancelled= _TRUE;//TRUE ==1; FALSE==0 + rtw_mtx_lock(NULL); + callout_drain(&ptimer->callout); + rtw_mtx_unlock(NULL); +} + +__inline static void _init_workitem(_workitem *pwork, void *pfunc, PVOID cntx) +{ + printf("%s Not implement yet! \n",__FUNCTION__); +} + +__inline static void _set_workitem(_workitem *pwork) +{ + printf("%s Not implement yet! \n",__FUNCTION__); +// schedule_work(pwork); +} + +// +// Global Mutex: can only be used at PASSIVE level. +// + +#define ACQUIRE_GLOBAL_MUTEX(_MutexCounter) \ +{ \ +} + +#define RELEASE_GLOBAL_MUTEX(_MutexCounter) \ +{ \ +} + +#define ATOMIC_INIT(i) { (i) } + +#endif //PLATFORM_FREEBSD + + +#ifdef PLATFORM_LINUX + #include + #include + #include + #include + #include + #include + #include + #include +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,5)) + #include +#endif + //#include + #include + #include + #include + #include + #include + #include + #include +#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,26)) + #include +#else + #include +#endif + #include + #include + #include + #include + #include + #include + #include + #include + #include // Necessary because we use the proc fs + #include // for struct tasklet_struct + #include + #include + +#ifdef CONFIG_IOCTL_CFG80211 +// #include + #include + #include +#endif //CONFIG_IOCTL_CFG80211 + +#ifdef CONFIG_TCP_CSUM_OFFLOAD_TX + #include + #include +#endif + +#ifdef CONFIG_USB_HCI + #include +#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,21)) + #include +#else + #include +#endif +#endif + +#ifdef CONFIG_PCI_HCI + #include +#endif + + +#ifdef CONFIG_USB_HCI + typedef struct urb * PURB; +#if (LINUX_VERSION_CODE>=KERNEL_VERSION(2,6,22)) +#ifdef CONFIG_USB_SUSPEND +#define CONFIG_AUTOSUSPEND 1 +#endif +#endif +#endif + + typedef struct semaphore _sema; + typedef spinlock_t _lock; +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,37)) + typedef struct mutex _mutex; +#else + typedef struct semaphore _mutex; +#endif + typedef struct timer_list _timer; + + struct __queue { + struct list_head queue; + _lock lock; + }; + + typedef struct sk_buff _pkt; + typedef unsigned char _buffer; + + typedef struct __queue _queue; + typedef struct list_head _list; + typedef int _OS_STATUS; + //typedef u32 _irqL; + typedef unsigned long _irqL; + typedef struct net_device * _nic_hdl; + + typedef void* _thread_hdl_; + typedef int thread_return; + typedef void* thread_context; + + #define thread_exit() complete_and_exit(NULL, 0) + + typedef void timer_hdl_return; + typedef void* timer_hdl_context; + typedef struct work_struct _workitem; + +#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,24)) + #define DMA_BIT_MASK(n) (((n) == 64) ? ~0ULL : ((1ULL<<(n))-1)) +#endif + +#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,22)) +// Porting from linux kernel, for compatible with old kernel. +static inline unsigned char *skb_tail_pointer(const struct sk_buff *skb) +{ + return skb->tail; +} + +static inline void skb_reset_tail_pointer(struct sk_buff *skb) +{ + skb->tail = skb->data; +} + +static inline void skb_set_tail_pointer(struct sk_buff *skb, const int offset) +{ + skb->tail = skb->data + offset; +} + +static inline unsigned char *skb_end_pointer(const struct sk_buff *skb) +{ + return skb->end; +} +#endif + +__inline static _list *get_next(_list *list) +{ + return list->next; +} + +__inline static _list *get_list_head(_queue *queue) +{ + return (&(queue->queue)); +} + + +#define LIST_CONTAINOR(ptr, type, member) \ + ((type *)((char *)(ptr)-(SIZE_T)(&((type *)0)->member))) + + +__inline static void _enter_critical(_lock *plock, _irqL *pirqL) +{ + spin_lock_irqsave(plock, *pirqL); +} + +__inline static void _exit_critical(_lock *plock, _irqL *pirqL) +{ + spin_unlock_irqrestore(plock, *pirqL); +} + +__inline static void _enter_critical_ex(_lock *plock, _irqL *pirqL) +{ + spin_lock_irqsave(plock, *pirqL); +} + +__inline static void _exit_critical_ex(_lock *plock, _irqL *pirqL) +{ + spin_unlock_irqrestore(plock, *pirqL); +} + +__inline static void _enter_critical_bh(_lock *plock, _irqL *pirqL) +{ + spin_lock_bh(plock); +} + +__inline static void _exit_critical_bh(_lock *plock, _irqL *pirqL) +{ + spin_unlock_bh(plock); +} + +__inline static void _enter_critical_mutex(_mutex *pmutex, _irqL *pirqL) +{ +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,37)) + mutex_lock(pmutex); +#else + down(pmutex); +#endif +} + + +__inline static void _exit_critical_mutex(_mutex *pmutex, _irqL *pirqL) +{ +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,37)) + mutex_unlock(pmutex); +#else + up(pmutex); +#endif +} + +__inline static void rtw_list_delete(_list *plist) +{ + list_del_init(plist); +} + +__inline static void _init_timer(_timer *ptimer,_nic_hdl nic_hdl,void *pfunc,void* cntx) +{ + //setup_timer(ptimer, pfunc,(u32)cntx); + ptimer->function = pfunc; + ptimer->data = (unsigned long)cntx; + init_timer(ptimer); +} + +__inline static void _set_timer(_timer *ptimer,u32 delay_time) +{ + mod_timer(ptimer , (jiffies+(delay_time*HZ/1000))); +} + +__inline static void _cancel_timer(_timer *ptimer,u8 *bcancelled) +{ + del_timer_sync(ptimer); + *bcancelled= _TRUE;//TRUE ==1; FALSE==0 +} + +#ifdef PLATFORM_LINUX +#define RTW_TIMER_HDL_ARGS void *FunctionContext +#elif defined(PLATFORM_OS_CE) || defined(PLATFORM_WINDOWS) +#define RTW_TIMER_HDL_ARGS IN PVOID SystemSpecific1, IN PVOID FunctionContext, IN PVOID SystemSpecific2, IN PVOID SystemSpecific3 +#endif + +#define RTW_TIMER_HDL_NAME(name) rtw_##name##_timer_hdl +#define RTW_DECLARE_TIMER_HDL(name) void RTW_TIMER_HDL_NAME(name)(RTW_TIMER_HDL_ARGS) + + +__inline static void _init_workitem(_workitem *pwork, void *pfunc, PVOID cntx) +{ +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,20)) + INIT_WORK(pwork, pfunc); +#else + INIT_WORK(pwork, pfunc,pwork); +#endif +} + +__inline static void _set_workitem(_workitem *pwork) +{ + schedule_work(pwork); +} + +__inline static void _cancel_workitem_sync(_workitem *pwork) +{ +#if (LINUX_VERSION_CODE>=KERNEL_VERSION(2,6,22)) + cancel_work_sync(pwork); +#else + flush_scheduled_work(); +#endif +} + +// +// Global Mutex: can only be used at PASSIVE level. +// + +#define ACQUIRE_GLOBAL_MUTEX(_MutexCounter) \ +{ \ + while (atomic_inc_return((atomic_t *)&(_MutexCounter)) != 1)\ + { \ + atomic_dec((atomic_t *)&(_MutexCounter)); \ + msleep(10); \ + } \ +} + +#define RELEASE_GLOBAL_MUTEX(_MutexCounter) \ +{ \ + atomic_dec((atomic_t *)&(_MutexCounter)); \ +} + +static inline int rtw_netif_queue_stopped(struct net_device *pnetdev) +{ +#if (LINUX_VERSION_CODE>=KERNEL_VERSION(2,6,35)) + return (netif_tx_queue_stopped(netdev_get_tx_queue(pnetdev, 0)) && + netif_tx_queue_stopped(netdev_get_tx_queue(pnetdev, 1)) && + netif_tx_queue_stopped(netdev_get_tx_queue(pnetdev, 2)) && + netif_tx_queue_stopped(netdev_get_tx_queue(pnetdev, 3)) ); +#else + return netif_queue_stopped(pnetdev); +#endif +} + +static inline void rtw_netif_wake_queue(struct net_device *pnetdev) +{ +#if (LINUX_VERSION_CODE>=KERNEL_VERSION(2,6,35)) + netif_tx_wake_all_queues(pnetdev); +#else + netif_wake_queue(pnetdev); +#endif +} + +static inline void rtw_netif_start_queue(struct net_device *pnetdev) +{ +#if (LINUX_VERSION_CODE>=KERNEL_VERSION(2,6,35)) + netif_tx_start_all_queues(pnetdev); +#else + netif_start_queue(pnetdev); +#endif +} + +static inline void rtw_netif_stop_queue(struct net_device *pnetdev) +{ +#if (LINUX_VERSION_CODE>=KERNEL_VERSION(2,6,35)) + netif_tx_stop_all_queues(pnetdev); +#else + netif_stop_queue(pnetdev); +#endif +} + +#endif // PLATFORM_LINUX + + +#ifdef PLATFORM_OS_XP + + #include + #include + #include + #include + +#ifdef CONFIG_USB_HCI + #include + #include + #include +#endif + + typedef KSEMAPHORE _sema; + typedef LIST_ENTRY _list; + typedef NDIS_STATUS _OS_STATUS; + + + typedef NDIS_SPIN_LOCK _lock; + + typedef KMUTEX _mutex; + + typedef KIRQL _irqL; + + // USB_PIPE for WINCE , but handle can be use just integer under windows + typedef NDIS_HANDLE _nic_hdl; + + + typedef NDIS_MINIPORT_TIMER _timer; + + struct __queue { + LIST_ENTRY queue; + _lock lock; + }; + + typedef NDIS_PACKET _pkt; + typedef NDIS_BUFFER _buffer; + typedef struct __queue _queue; + + typedef PKTHREAD _thread_hdl_; + typedef void thread_return; + typedef void* thread_context; + + typedef NDIS_WORK_ITEM _workitem; + + #define thread_exit() PsTerminateSystemThread(STATUS_SUCCESS); + + #define HZ 10000000 + #define SEMA_UPBND (0x7FFFFFFF) //8192 + +__inline static _list *get_next(_list *list) +{ + return list->Flink; +} + +__inline static _list *get_list_head(_queue *queue) +{ + return (&(queue->queue)); +} + + +#define LIST_CONTAINOR(ptr, type, member) CONTAINING_RECORD(ptr, type, member) + + +__inline static _enter_critical(_lock *plock, _irqL *pirqL) +{ + NdisAcquireSpinLock(plock); +} + +__inline static _exit_critical(_lock *plock, _irqL *pirqL) +{ + NdisReleaseSpinLock(plock); +} + + +__inline static _enter_critical_ex(_lock *plock, _irqL *pirqL) +{ + NdisDprAcquireSpinLock(plock); +} + +__inline static _exit_critical_ex(_lock *plock, _irqL *pirqL) +{ + NdisDprReleaseSpinLock(plock); +} + +__inline static void _enter_critical_bh(_lock *plock, _irqL *pirqL) +{ + NdisDprAcquireSpinLock(plock); +} + +__inline static void _exit_critical_bh(_lock *plock, _irqL *pirqL) +{ + NdisDprReleaseSpinLock(plock); +} + +__inline static _enter_critical_mutex(_mutex *pmutex, _irqL *pirqL) +{ + KeWaitForSingleObject(pmutex, Executive, KernelMode, FALSE, NULL); +} + + +__inline static _exit_critical_mutex(_mutex *pmutex, _irqL *pirqL) +{ + KeReleaseMutex(pmutex, FALSE); +} + + +__inline static void rtw_list_delete(_list *plist) +{ + RemoveEntryList(plist); + InitializeListHead(plist); +} + +__inline static void _init_timer(_timer *ptimer,_nic_hdl nic_hdl,void *pfunc,PVOID cntx) +{ + NdisMInitializeTimer(ptimer, nic_hdl, pfunc, cntx); +} + +__inline static void _set_timer(_timer *ptimer,u32 delay_time) +{ + NdisMSetTimer(ptimer,delay_time); +} + +__inline static void _cancel_timer(_timer *ptimer,u8 *bcancelled) +{ + NdisMCancelTimer(ptimer,bcancelled); +} + +__inline static void _init_workitem(_workitem *pwork, void *pfunc, PVOID cntx) +{ + + NdisInitializeWorkItem(pwork, pfunc, cntx); +} + +__inline static void _set_workitem(_workitem *pwork) +{ + NdisScheduleWorkItem(pwork); +} + + +#define ATOMIC_INIT(i) { (i) } + +// +// Global Mutex: can only be used at PASSIVE level. +// + +#define ACQUIRE_GLOBAL_MUTEX(_MutexCounter) \ +{ \ + while (NdisInterlockedIncrement((PULONG)&(_MutexCounter)) != 1)\ + { \ + NdisInterlockedDecrement((PULONG)&(_MutexCounter)); \ + NdisMSleep(10000); \ + } \ +} + +#define RELEASE_GLOBAL_MUTEX(_MutexCounter) \ +{ \ + NdisInterlockedDecrement((PULONG)&(_MutexCounter)); \ +} + +#endif // PLATFORM_OS_XP + + +#ifdef PLATFORM_OS_CE +#include +#endif + +#include + +#ifndef BIT + #define BIT(x) ( 1 << (x)) +#endif + +extern int RTW_STATUS_CODE(int error_code); + +#define CONFIG_USE_VMALLOC + +/* flags used for rtw_mstat_update() */ +enum mstat_f { + /* type: 0x00ff */ + MSTAT_TYPE_VIR = 0x00, + MSTAT_TYPE_PHY= 0x01, + MSTAT_TYPE_SKB = 0x02, + MSTAT_TYPE_USB = 0x03, + MSTAT_TYPE_MAX = 0x04, + + /* func: 0xff00 */ + MSTAT_FUNC_UNSPECIFIED = 0x00<<8, + MSTAT_FUNC_IO = 0x01<<8, + MSTAT_FUNC_TX_IO = 0x02<<8, + MSTAT_FUNC_RX_IO = 0x03<<8, + MSTAT_FUNC_TX = 0x04<<8, + MSTAT_FUNC_RX = 0x05<<8, + MSTAT_FUNC_MAX = 0x06<<8, +}; + +#define mstat_tf_idx(flags) ((flags)&0xff) +#define mstat_ff_idx(flags) (((flags)&0xff00) >> 8) + +typedef enum mstat_status{ + MSTAT_ALLOC_SUCCESS = 0, + MSTAT_ALLOC_FAIL, + MSTAT_FREE +} MSTAT_STATUS; + +#ifdef DBG_MEM_ALLOC +void rtw_mstat_update(const enum mstat_f flags, const MSTAT_STATUS status, u32 sz); +int _rtw_mstat_dump(char *buf, int len); +void rtw_mstat_dump (void); +u8* dbg_rtw_vmalloc(u32 sz, const enum mstat_f flags, const char *func, const int line); +u8* dbg_rtw_zvmalloc(u32 sz, const enum mstat_f flags, const char *func, const int line); +void dbg_rtw_vmfree(u8 *pbuf, const enum mstat_f flags, u32 sz, const char *func, const int line); +u8* dbg_rtw_malloc(u32 sz, const enum mstat_f flags, const char *func, const int line); +u8* dbg_rtw_zmalloc(u32 sz, const enum mstat_f flags, const char *func, const int line); +void dbg_rtw_mfree(u8 *pbuf, const enum mstat_f flags, u32 sz, const char *func, const int line); + +struct sk_buff * dbg_rtw_skb_alloc(unsigned int size, const enum mstat_f flags, const char *func, const int line); +void dbg_rtw_skb_free(struct sk_buff *skb, const enum mstat_f flags, const char *func, const int line); +struct sk_buff *dbg_rtw_skb_copy(const struct sk_buff *skb, const enum mstat_f flags, const char *func, const int line); +struct sk_buff *dbg_rtw_skb_clone(struct sk_buff *skb, const enum mstat_f flags, const char *func, const int line); +int dbg_rtw_netif_rx(_nic_hdl ndev, struct sk_buff *skb, const enum mstat_f flags, const char *func, int line); +void dbg_rtw_skb_queue_purge(struct sk_buff_head *list, enum mstat_f flags, const char *func, int line); + +#ifdef CONFIG_USB_HCI +void *dbg_rtw_usb_buffer_alloc(struct usb_device *dev, size_t size, dma_addr_t *dma, const enum mstat_f flags, const char *func, const int line); +void dbg_rtw_usb_buffer_free(struct usb_device *dev, size_t size, void *addr, dma_addr_t dma, const enum mstat_f flags, const char *func, const int line); +#endif /* CONFIG_USB_HCI */ + +#ifdef CONFIG_USE_VMALLOC +#define rtw_vmalloc(sz) dbg_rtw_vmalloc((sz), MSTAT_TYPE_VIR, __FUNCTION__, __LINE__) +#define rtw_zvmalloc(sz) dbg_rtw_zvmalloc((sz), MSTAT_TYPE_VIR, __FUNCTION__, __LINE__) +#define rtw_vmfree(pbuf, sz) dbg_rtw_vmfree((pbuf), (sz), MSTAT_TYPE_VIR, __FUNCTION__, __LINE__) +#define rtw_vmalloc_f(sz, mstat_f) dbg_rtw_vmalloc((sz), ((mstat_f)&0xff00)|MSTAT_TYPE_VIR, __FUNCTION__, __LINE__) +#define rtw_zvmalloc_f(sz, mstat_f) dbg_rtw_zvmalloc((sz), ((mstat_f)&0xff00)|MSTAT_TYPE_VIR, __FUNCTION__, __LINE__) +#define rtw_vmfree_f(pbuf, sz, mstat_f) dbg_rtw_vmfree((pbuf), (sz), ((mstat_f)&0xff00)|MSTAT_TYPE_VIR, __FUNCTION__, __LINE__) +#else /* CONFIG_USE_VMALLOC */ +#define rtw_vmalloc(sz) dbg_rtw_malloc((sz), MSTAT_TYPE_PHY, __FUNCTION__, __LINE__) +#define rtw_zvmalloc(sz) dbg_rtw_zmalloc((sz), MSTAT_TYPE_PHY, __FUNCTION__, __LINE__) +#define rtw_vmfree(pbuf, sz) dbg_rtw_mfree((pbuf), (sz), MSTAT_TYPE_PHY, __FUNCTION__, __LINE__) +#define rtw_vmalloc_f(sz, mstat_f) dbg_rtw_malloc((sz), ((mstat_f)&0xff00)|MSTAT_TYPE_PHY, __FUNCTION__, __LINE__) +#define rtw_zvmalloc_f(sz, mstat_f) dbg_rtw_zmalloc((sz), ((mstat_f)&0xff00)|MSTAT_TYPE_PHY, __FUNCTION__, __LINE__) +#define rtw_vmfree_f(pbuf, sz, mstat_f) dbg_rtw_mfree((pbuf), (sz), ((mstat_f)&0xff00)|MSTAT_TYPE_PHY, __FUNCTION__, __LINE__) +#endif /* CONFIG_USE_VMALLOC */ +#define rtw_malloc(sz) dbg_rtw_malloc((sz), MSTAT_TYPE_PHY, __FUNCTION__, __LINE__) +#define rtw_zmalloc(sz) dbg_rtw_zmalloc((sz), MSTAT_TYPE_PHY, __FUNCTION__, __LINE__) +#define rtw_mfree(pbuf, sz) dbg_rtw_mfree((pbuf), (sz), MSTAT_TYPE_PHY, __FUNCTION__, __LINE__) +#define rtw_malloc_f(sz, mstat_f) dbg_rtw_malloc((sz), ((mstat_f)&0xff00)|MSTAT_TYPE_PHY, __FUNCTION__, __LINE__) +#define rtw_zmalloc_f(sz, mstat_f) dbg_rtw_zmalloc((sz), ((mstat_f)&0xff00)|MSTAT_TYPE_PHY, __FUNCTION__, __LINE__) +#define rtw_mfree_f(pbuf, sz, mstat_f) dbg_rtw_mfree((pbuf), (sz), ((mstat_f)&0xff00)|MSTAT_TYPE_PHY, __FUNCTION__, __LINE__) + +#define rtw_skb_alloc(size) dbg_rtw_skb_alloc((size), MSTAT_TYPE_SKB, __FUNCTION__, __LINE__) +#define rtw_skb_free(skb) dbg_rtw_skb_free((skb), MSTAT_TYPE_SKB, __FUNCTION__, __LINE__) +#define rtw_skb_alloc_f(size, mstat_f) dbg_rtw_skb_alloc((size), ((mstat_f)&0xff00)|MSTAT_TYPE_SKB, __FUNCTION__, __LINE__) +#define rtw_skb_free_f(skb, mstat_f) dbg_rtw_skb_free((skb), ((mstat_f)&0xff00)|MSTAT_TYPE_SKB, __FUNCTION__, __LINE__) +#define rtw_skb_copy(skb) dbg_rtw_skb_copy((skb), MSTAT_TYPE_SKB, __FUNCTION__, __LINE__) +#define rtw_skb_clone(skb) dbg_rtw_skb_clone((skb), MSTAT_TYPE_SKB, __FUNCTION__, __LINE__) +#define rtw_skb_copy_f(skb, mstat_f) dbg_rtw_skb_copy((skb), ((mstat_f)&0xff00)|MSTAT_TYPE_SKB, __FUNCTION__, __LINE__) +#define rtw_skb_clone_f(skb, mstat_f) dbg_rtw_skb_clone((skb), ((mstat_f)&0xff00)|MSTAT_TYPE_SKB, __FUNCTION__, __LINE__) +#define rtw_netif_rx(ndev, skb) dbg_rtw_netif_rx(ndev, skb, MSTAT_TYPE_SKB, __FUNCTION__, __LINE__) +#define rtw_skb_queue_purge(sk_buff_head) dbg_rtw_skb_queue_purge(sk_buff_head, MSTAT_TYPE_SKB, __FUNCTION__, __LINE__) +#ifdef CONFIG_USB_HCI +#define rtw_usb_buffer_alloc(dev, size, dma) dbg_rtw_usb_buffer_alloc((dev), (size), (dma), MSTAT_TYPE_USB, __FUNCTION__, __LINE__) +#define rtw_usb_buffer_free(dev, size, addr, dma) dbg_rtw_usb_buffer_free((dev), (size), (addr), (dma), MSTAT_TYPE_USB, __FUNCTION__, __LINE__) +#define rtw_usb_buffer_alloc_f(dev, size, dma, mstat_f) dbg_rtw_usb_buffer_alloc((dev), (size), (dma), ((mstat_f)&0xff00)|MSTAT_TYPE_USB, __FUNCTION__, __LINE__) +#define rtw_usb_buffer_free_f(dev, size, addr, dma, mstat_f) dbg_rtw_usb_buffer_free((dev), (size), (addr), (dma), ((mstat_f)&0xff00)|MSTAT_TYPE_USB, __FUNCTION__, __LINE__) +#endif /* CONFIG_USB_HCI */ + +#else /* DBG_MEM_ALLOC */ +#define rtw_mstat_update(flag, status, sz) do {} while(0) +#define rtw_mstat_dump() do {} while(0) +u8* _rtw_vmalloc(u32 sz); +u8* _rtw_zvmalloc(u32 sz); +void _rtw_vmfree(u8 *pbuf, u32 sz); +u8* _rtw_zmalloc(u32 sz); +u8* _rtw_malloc(u32 sz); +void _rtw_mfree(u8 *pbuf, u32 sz); + +struct sk_buff *_rtw_skb_alloc(u32 sz); +void _rtw_skb_free(struct sk_buff *skb); +struct sk_buff *_rtw_skb_copy(const struct sk_buff *skb); +struct sk_buff *_rtw_skb_clone(struct sk_buff *skb); +int _rtw_netif_rx(_nic_hdl ndev, struct sk_buff *skb); +void _rtw_skb_queue_purge(struct sk_buff_head *list); + +#ifdef CONFIG_USB_HCI +void *_rtw_usb_buffer_alloc(struct usb_device *dev, size_t size, dma_addr_t *dma); +void _rtw_usb_buffer_free(struct usb_device *dev, size_t size, void *addr, dma_addr_t dma); +#endif /* CONFIG_USB_HCI */ + +#ifdef CONFIG_USE_VMALLOC +#define rtw_vmalloc(sz) _rtw_vmalloc((sz)) +#define rtw_zvmalloc(sz) _rtw_zvmalloc((sz)) +#define rtw_vmfree(pbuf, sz) _rtw_vmfree((pbuf), (sz)) +#define rtw_vmalloc_f(sz, mstat_f) _rtw_vmalloc((sz)) +#define rtw_zvmalloc_f(sz, mstat_f) _rtw_zvmalloc((sz)) +#define rtw_vmfree_f(pbuf, sz, mstat_f) _rtw_vmfree((pbuf), (sz)) +#else /* CONFIG_USE_VMALLOC */ +#define rtw_vmalloc(sz) _rtw_malloc((sz)) +#define rtw_zvmalloc(sz) _rtw_zmalloc((sz)) +#define rtw_vmfree(pbuf, sz) _rtw_mfree((pbuf), (sz)) +#define rtw_vmalloc_f(sz, mstat_f) _rtw_malloc((sz)) +#define rtw_zvmalloc_f(sz, mstat_f) _rtw_zmalloc((sz)) +#define rtw_vmfree_f(pbuf, sz, mstat_f) _rtw_mfree((pbuf), (sz)) +#endif /* CONFIG_USE_VMALLOC */ +#define rtw_malloc(sz) _rtw_malloc((sz)) +#define rtw_zmalloc(sz) _rtw_zmalloc((sz)) +#define rtw_mfree(pbuf, sz) _rtw_mfree((pbuf), (sz)) +#define rtw_malloc_f(sz, mstat_f) _rtw_malloc((sz)) +#define rtw_zmalloc_f(sz, mstat_f) _rtw_zmalloc((sz)) +#define rtw_mfree_f(pbuf, sz, mstat_f) _rtw_mfree((pbuf), (sz)) + +#define rtw_skb_alloc(size) _rtw_skb_alloc((size)) +#define rtw_skb_free(skb) _rtw_skb_free((skb)) +#define rtw_skb_alloc_f(size, mstat_f) _rtw_skb_alloc((size)) +#define rtw_skb_free_f(skb, mstat_f) _rtw_skb_free((skb)) +#define rtw_skb_copy(skb) _rtw_skb_copy((skb)) +#define rtw_skb_clone(skb) _rtw_skb_clone((skb)) +#define rtw_skb_copy_f(skb, mstat_f) _rtw_skb_copy((skb)) +#define rtw_skb_clone_f(skb, mstat_f) _rtw_skb_clone((skb)) +#define rtw_netif_rx(ndev, skb) _rtw_netif_rx(ndev, skb) +#define rtw_skb_queue_purge(sk_buff_head) _rtw_skb_queue_purge(sk_buff_head) +#ifdef CONFIG_USB_HCI +#define rtw_usb_buffer_alloc(dev, size, dma) _rtw_usb_buffer_alloc((dev), (size), (dma)) +#define rtw_usb_buffer_free(dev, size, addr, dma) _rtw_usb_buffer_free((dev), (size), (addr), (dma)) +#define rtw_usb_buffer_alloc_f(dev, size, dma, mstat_f) _rtw_usb_buffer_alloc((dev), (size), (dma)) +#define rtw_usb_buffer_free_f(dev, size, addr, dma, mstat_f) _rtw_usb_buffer_free((dev), (size), (addr), (dma)) +#endif /* CONFIG_USB_HCI */ +#endif /* DBG_MEM_ALLOC */ + +extern void* rtw_malloc2d(int h, int w, int size); +extern void rtw_mfree2d(void *pbuf, int h, int w, int size); + +extern void _rtw_memcpy(void* dec, void* sour, u32 sz); +extern int _rtw_memcmp(void *dst, void *src, u32 sz); +extern void _rtw_memset(void *pbuf, int c, u32 sz); + +extern void _rtw_init_listhead(_list *list); +extern u32 rtw_is_list_empty(_list *phead); +extern void rtw_list_insert_head(_list *plist, _list *phead); +extern void rtw_list_insert_tail(_list *plist, _list *phead); +#ifndef PLATFORM_FREEBSD +extern void rtw_list_delete(_list *plist); +#endif //PLATFORM_FREEBSD + +extern void _rtw_init_sema(_sema *sema, int init_val); +extern void _rtw_free_sema(_sema *sema); +extern void _rtw_up_sema(_sema *sema); +extern u32 _rtw_down_sema(_sema *sema); +extern void _rtw_mutex_init(_mutex *pmutex); +extern void _rtw_mutex_free(_mutex *pmutex); +#ifndef PLATFORM_FREEBSD +extern void _rtw_spinlock_init(_lock *plock); +#endif //PLATFORM_FREEBSD +extern void _rtw_spinlock_free(_lock *plock); +extern void _rtw_spinlock(_lock *plock); +extern void _rtw_spinunlock(_lock *plock); +extern void _rtw_spinlock_ex(_lock *plock); +extern void _rtw_spinunlock_ex(_lock *plock); + +extern void _rtw_init_queue(_queue *pqueue); +extern u32 _rtw_queue_empty(_queue *pqueue); +extern u32 rtw_end_of_queue_search(_list *queue, _list *pelement); + +extern u32 rtw_get_current_time(void); +extern u32 rtw_systime_to_ms(u32 systime); +extern u32 rtw_ms_to_systime(u32 ms); +extern s32 rtw_get_passing_time_ms(u32 start); +extern s32 rtw_get_time_interval_ms(u32 start, u32 end); + +extern void rtw_sleep_schedulable(int ms); + +extern void rtw_msleep_os(int ms); +extern void rtw_usleep_os(int us); + +extern u32 rtw_atoi(u8* s); + +#ifdef DBG_DELAY_OS +#define rtw_mdelay_os(ms) _rtw_mdelay_os((ms), __FUNCTION__, __LINE__) +#define rtw_udelay_os(ms) _rtw_udelay_os((ms), __FUNCTION__, __LINE__) +extern void _rtw_mdelay_os(int ms, const char *func, const int line); +extern void _rtw_udelay_os(int us, const char *func, const int line); +#else +extern void rtw_mdelay_os(int ms); +extern void rtw_udelay_os(int us); +#endif + +extern void rtw_yield_os(void); + + +__inline static unsigned char _cancel_timer_ex(_timer *ptimer) +{ +#ifdef PLATFORM_LINUX + return del_timer_sync(ptimer); +#endif +#ifdef PLATFORM_FREEBSD + _cancel_timer(ptimer,0); + return 0; +#endif +#ifdef PLATFORM_WINDOWS + u8 bcancelled; + + _cancel_timer(ptimer, &bcancelled); + + return bcancelled; +#endif +} + +#ifdef PLATFORM_FREEBSD +static __inline void thread_enter(void *context); +#endif //PLATFORM_FREEBSD +static __inline void thread_enter(char *name) +{ +#ifdef PLATFORM_LINUX + #if (LINUX_VERSION_CODE < KERNEL_VERSION(3, 8, 0)) + daemonize("%s", name); + #endif + allow_signal(SIGTERM); +#endif +#ifdef PLATFORM_FREEBSD + printf("%s", "RTKTHREAD_enter"); +#endif +} + +#ifdef PLATFORM_FREEBSD +#define thread_exit() do{printf("%s", "RTKTHREAD_exit");}while(0) +#endif //PLATFORM_FREEBSD +__inline static void flush_signals_thread(void) +{ +#ifdef PLATFORM_LINUX + if (signal_pending (current)) + { + flush_signals(current); + } +#endif +} + +__inline static _OS_STATUS res_to_status(sint res) +{ + + +#if defined (PLATFORM_LINUX) || defined (PLATFORM_MPIXEL) || defined (PLATFORM_FREEBSD) + return res; +#endif + +#ifdef PLATFORM_WINDOWS + + if (res == _SUCCESS) + return NDIS_STATUS_SUCCESS; + else + return NDIS_STATUS_FAILURE; + +#endif + +} + +__inline static void rtw_dump_stack(void) +{ +#ifdef PLATFORM_LINUX + dump_stack(); +#endif +} + +#ifdef PLATFORM_LINUX +#define rtw_warn_on(condition) WARN_ON(condition) +#else +#define rtw_warn_on(condition) do {} while (0) +#endif + +#define _RND(sz, r) ((((sz)+((r)-1))/(r))*(r)) +#define RND4(x) (((x >> 2) + (((x & 3) == 0) ? 0: 1)) << 2) + +__inline static u32 _RND4(u32 sz) +{ + + u32 val; + + val = ((sz >> 2) + ((sz & 3) ? 1: 0)) << 2; + + return val; + +} + +__inline static u32 _RND8(u32 sz) +{ + + u32 val; + + val = ((sz >> 3) + ((sz & 7) ? 1: 0)) << 3; + + return val; + +} + +__inline static u32 _RND128(u32 sz) +{ + + u32 val; + + val = ((sz >> 7) + ((sz & 127) ? 1: 0)) << 7; + + return val; + +} + +__inline static u32 _RND256(u32 sz) +{ + + u32 val; + + val = ((sz >> 8) + ((sz & 255) ? 1: 0)) << 8; + + return val; + +} + +__inline static u32 _RND512(u32 sz) +{ + + u32 val; + + val = ((sz >> 9) + ((sz & 511) ? 1: 0)) << 9; + + return val; + +} + +__inline static u32 bitshift(u32 bitmask) +{ + u32 i; + + for (i = 0; i <= 31; i++) + if (((bitmask>>i) & 0x1) == 1) break; + + return i; +} + +#ifndef MAC_FMT +#define MAC_FMT "%02x:%02x:%02x:%02x:%02x:%02x" +#endif +#ifndef MAC_ARG +#define MAC_ARG(x) ((u8*)(x))[0],((u8*)(x))[1],((u8*)(x))[2],((u8*)(x))[3],((u8*)(x))[4],((u8*)(x))[5] +#endif + +//#ifdef __GNUC__ +#ifdef PLATFORM_LINUX +#define STRUCT_PACKED __attribute__ ((packed)) +#else +#define STRUCT_PACKED +#endif + + +// limitation of path length +#ifdef PLATFORM_LINUX + #define PATH_LENGTH_MAX PATH_MAX +#elif defined(PLATFORM_WINDOWS) + #define PATH_LENGTH_MAX MAX_PATH +#endif + + +// Suspend lock prevent system from going suspend +#ifdef CONFIG_WAKELOCK +#include +#elif defined(CONFIG_ANDROID_POWER) +#include +#endif + +extern void rtw_suspend_lock_init(void); +extern void rtw_suspend_lock_uninit(void); +extern void rtw_lock_suspend(void); +extern void rtw_unlock_suspend(void); +extern void rtw_lock_suspend_timeout(u32 timeout_ms); + + +//Atomic integer operations +#ifdef PLATFORM_LINUX + #define ATOMIC_T atomic_t +#elif defined(PLATFORM_WINDOWS) + #define ATOMIC_T LONG +#elif defined(PLATFORM_FREEBSD) + typedef uint32_t ATOMIC_T ; +#endif + +extern void ATOMIC_SET(ATOMIC_T *v, int i); +extern int ATOMIC_READ(ATOMIC_T *v); +extern void ATOMIC_ADD(ATOMIC_T *v, int i); +extern void ATOMIC_SUB(ATOMIC_T *v, int i); +extern void ATOMIC_INC(ATOMIC_T *v); +extern void ATOMIC_DEC(ATOMIC_T *v); +extern int ATOMIC_ADD_RETURN(ATOMIC_T *v, int i); +extern int ATOMIC_SUB_RETURN(ATOMIC_T *v, int i); +extern int ATOMIC_INC_RETURN(ATOMIC_T *v); +extern int ATOMIC_DEC_RETURN(ATOMIC_T *v); + +//File operation APIs, just for linux now +extern int rtw_is_file_readable(char *path); +extern int rtw_retrive_from_file(char *path, u8* buf, u32 sz); +extern int rtw_store_to_file(char *path, u8* buf, u32 sz); + + +#if 1 //#ifdef MEM_ALLOC_REFINE_ADAPTOR +struct rtw_netdev_priv_indicator { + void *priv; + u32 sizeof_priv; +}; +struct net_device *rtw_alloc_etherdev_with_old_priv(int sizeof_priv, void *old_priv); +extern struct net_device * rtw_alloc_etherdev(int sizeof_priv); + +#ifndef PLATFORM_FREEBSD +#define rtw_netdev_priv(netdev) ( ((struct rtw_netdev_priv_indicator *)netdev_priv(netdev))->priv ) +#else //PLATFORM_FREEBSD +#define rtw_netdev_priv(netdev) (((struct ifnet *)netdev)->if_softc) +#endif //PLATFORM_FREEBSD + +#ifndef PLATFORM_FREEBSD +extern void rtw_free_netdev(struct net_device * netdev); +#else //PLATFORM_FREEBSD +#define rtw_free_netdev(netdev) if_free((netdev)) +#endif //PLATFORM_FREEBSD + +#else //MEM_ALLOC_REFINE_ADAPTOR + +#define rtw_alloc_etherdev(sizeof_priv) alloc_etherdev((sizeof_priv)) + +#ifndef PLATFORM_FREEBSD +#define rtw_netdev_priv(netdev) netdev_priv((netdev)) +#define rtw_free_netdev(netdev) free_netdev((netdev)) +#else //PLATFORM_FREEBSD +#define rtw_netdev_priv(netdev) (((struct ifnet *)netdev)->if_softc) +#define rtw_free_netdev(netdev) if_free((netdev)) +#endif //PLATFORM_FREEBSD +#endif + +#ifdef PLATFORM_LINUX +#define NDEV_FMT "%s" +#define NDEV_ARG(ndev) ndev->name +#define ADPT_FMT "%s" +#define ADPT_ARG(adapter) adapter->pnetdev->name +#define FUNC_NDEV_FMT "%s(%s)" +#define FUNC_NDEV_ARG(ndev) __func__, ndev->name +#define FUNC_ADPT_FMT "%s(%s)" +#define FUNC_ADPT_ARG(adapter) __func__, adapter->pnetdev->name +#else +#define NDEV_FMT "%s" +#define NDEV_ARG(ndev) "" +#define ADPT_FMT "%s" +#define ADPT_ARG(adapter) "" +#define FUNC_NDEV_FMT "%s" +#define FUNC_NDEV_ARG(ndev) __func__ +#define FUNC_ADPT_FMT "%s" +#define FUNC_ADPT_ARG(adapter) __func__ +#endif + +#ifdef PLATFORM_LINUX +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,27)) +#define rtw_signal_process(pid, sig) kill_pid(find_vpid((pid)),(sig), 1) +#else //(LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,27)) +#define rtw_signal_process(pid, sig) kill_proc((pid), (sig), 1) +#endif //(LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,27)) +#endif //PLATFORM_LINUX + +extern u64 rtw_modular64(u64 x, u64 y); +extern u64 rtw_division64(u64 x, u64 y); + + +/* Macros for handling unaligned memory accesses */ + +#define RTW_GET_BE16(a) ((u16) (((a)[0] << 8) | (a)[1])) +#define RTW_PUT_BE16(a, val) \ + do { \ + (a)[0] = ((u16) (val)) >> 8; \ + (a)[1] = ((u16) (val)) & 0xff; \ + } while (0) + +#define RTW_GET_LE16(a) ((u16) (((a)[1] << 8) | (a)[0])) +#define RTW_PUT_LE16(a, val) \ + do { \ + (a)[1] = ((u16) (val)) >> 8; \ + (a)[0] = ((u16) (val)) & 0xff; \ + } while (0) + +#define RTW_GET_BE24(a) ((((u32) (a)[0]) << 16) | (((u32) (a)[1]) << 8) | \ + ((u32) (a)[2])) +#define RTW_PUT_BE24(a, val) \ + do { \ + (a)[0] = (u8) ((((u32) (val)) >> 16) & 0xff); \ + (a)[1] = (u8) ((((u32) (val)) >> 8) & 0xff); \ + (a)[2] = (u8) (((u32) (val)) & 0xff); \ + } while (0) + +#define RTW_GET_BE32(a) ((((u32) (a)[0]) << 24) | (((u32) (a)[1]) << 16) | \ + (((u32) (a)[2]) << 8) | ((u32) (a)[3])) +#define RTW_PUT_BE32(a, val) \ + do { \ + (a)[0] = (u8) ((((u32) (val)) >> 24) & 0xff); \ + (a)[1] = (u8) ((((u32) (val)) >> 16) & 0xff); \ + (a)[2] = (u8) ((((u32) (val)) >> 8) & 0xff); \ + (a)[3] = (u8) (((u32) (val)) & 0xff); \ + } while (0) + +#define RTW_GET_LE32(a) ((((u32) (a)[3]) << 24) | (((u32) (a)[2]) << 16) | \ + (((u32) (a)[1]) << 8) | ((u32) (a)[0])) +#define RTW_PUT_LE32(a, val) \ + do { \ + (a)[3] = (u8) ((((u32) (val)) >> 24) & 0xff); \ + (a)[2] = (u8) ((((u32) (val)) >> 16) & 0xff); \ + (a)[1] = (u8) ((((u32) (val)) >> 8) & 0xff); \ + (a)[0] = (u8) (((u32) (val)) & 0xff); \ + } while (0) + +#define RTW_GET_BE64(a) ((((u64) (a)[0]) << 56) | (((u64) (a)[1]) << 48) | \ + (((u64) (a)[2]) << 40) | (((u64) (a)[3]) << 32) | \ + (((u64) (a)[4]) << 24) | (((u64) (a)[5]) << 16) | \ + (((u64) (a)[6]) << 8) | ((u64) (a)[7])) +#define RTW_PUT_BE64(a, val) \ + do { \ + (a)[0] = (u8) (((u64) (val)) >> 56); \ + (a)[1] = (u8) (((u64) (val)) >> 48); \ + (a)[2] = (u8) (((u64) (val)) >> 40); \ + (a)[3] = (u8) (((u64) (val)) >> 32); \ + (a)[4] = (u8) (((u64) (val)) >> 24); \ + (a)[5] = (u8) (((u64) (val)) >> 16); \ + (a)[6] = (u8) (((u64) (val)) >> 8); \ + (a)[7] = (u8) (((u64) (val)) & 0xff); \ + } while (0) + +#define RTW_GET_LE64(a) ((((u64) (a)[7]) << 56) | (((u64) (a)[6]) << 48) | \ + (((u64) (a)[5]) << 40) | (((u64) (a)[4]) << 32) | \ + (((u64) (a)[3]) << 24) | (((u64) (a)[2]) << 16) | \ + (((u64) (a)[1]) << 8) | ((u64) (a)[0])) + +void rtw_buf_free(u8 **buf, u32 *buf_len); +void rtw_buf_update(u8 **buf, u32 *buf_len, u8 *src, u32 src_len); + +struct rtw_cbuf { + u32 write; + u32 read; + u32 size; + void *bufs[0]; +}; + +bool rtw_cbuf_full(struct rtw_cbuf *cbuf); +bool rtw_cbuf_empty(struct rtw_cbuf *cbuf); +bool rtw_cbuf_push(struct rtw_cbuf *cbuf, void *buf); +void *rtw_cbuf_pop(struct rtw_cbuf *cbuf); +struct rtw_cbuf *rtw_cbuf_alloc(u32 size); +void rtw_cbuf_free(struct rtw_cbuf *cbuf); + +#endif --- linux-raspi2-4.2.0.orig/drivers/net/wireless/rtl8192cu/include/pci_hal.h +++ linux-raspi2-4.2.0/drivers/net/wireless/rtl8192cu/include/pci_hal.h @@ -0,0 +1,167 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved. + * + * 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 + * published by the Free Software Foundation. + * + * 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 Street, Fifth Floor, Boston, MA 02110, USA + * + * + ******************************************************************************/ +#ifndef __PCI_HAL_H__ +#define __PCI_HAL_H__ + + +#define INTEL_VENDOR_ID 0x8086 +#define SIS_VENDOR_ID 0x1039 +#define ATI_VENDOR_ID 0x1002 +#define ATI_DEVICE_ID 0x7914 +#define AMD_VENDOR_ID 0x1022 + +#define PCI_MAX_BRIDGE_NUMBER 255 +#define PCI_MAX_DEVICES 32 +#define PCI_MAX_FUNCTION 8 + +#define PCI_CONF_ADDRESS 0x0CF8 // PCI Configuration Space Address +#define PCI_CONF_DATA 0x0CFC // PCI Configuration Space Data + +#define PCI_CLASS_BRIDGE_DEV 0x06 +#define PCI_SUBCLASS_BR_PCI_TO_PCI 0x04 + +#define PCI_CAPABILITY_ID_PCI_EXPRESS 0x10 + +#define U1DONTCARE 0xFF +#define U2DONTCARE 0xFFFF +#define U4DONTCARE 0xFFFFFFFF + +#define PCI_VENDER_ID_REALTEK 0x10ec + +#define HAL_HW_PCI_8180_DEVICE_ID 0x8180 +#define HAL_HW_PCI_8185_DEVICE_ID 0x8185 //8185 or 8185b +#define HAL_HW_PCI_8188_DEVICE_ID 0x8188 //8185b +#define HAL_HW_PCI_8198_DEVICE_ID 0x8198 //8185b +#define HAL_HW_PCI_8190_DEVICE_ID 0x8190 //8190 +#define HAL_HW_PCI_8723E_DEVICE_ID 0x8723 //8723E +#define HAL_HW_PCI_8192_DEVICE_ID 0x8192 //8192 PCI-E +#define HAL_HW_PCI_8192SE_DEVICE_ID 0x8192 //8192 SE +#define HAL_HW_PCI_8174_DEVICE_ID 0x8174 //8192 SE +#define HAL_HW_PCI_8173_DEVICE_ID 0x8173 //8191 SE Crab +#define HAL_HW_PCI_8172_DEVICE_ID 0x8172 //8191 SE RE +#define HAL_HW_PCI_8171_DEVICE_ID 0x8171 //8191 SE Unicron +#define HAL_HW_PCI_0045_DEVICE_ID 0x0045 //8190 PCI for Ceraga +#define HAL_HW_PCI_0046_DEVICE_ID 0x0046 //8190 Cardbus for Ceraga +#define HAL_HW_PCI_0044_DEVICE_ID 0x0044 //8192e PCIE for Ceraga +#define HAL_HW_PCI_0047_DEVICE_ID 0x0047 //8192e Express Card for Ceraga +#define HAL_HW_PCI_700F_DEVICE_ID 0x700F +#define HAL_HW_PCI_701F_DEVICE_ID 0x701F +#define HAL_HW_PCI_DLINK_DEVICE_ID 0x3304 +#define HAL_HW_PCI_8192CET_DEVICE_ID 0x8191 //8192ce +#define HAL_HW_PCI_8192CE_DEVICE_ID 0x8178 //8192ce +#define HAL_HW_PCI_8191CE_DEVICE_ID 0x8177 //8192ce +#define HAL_HW_PCI_8188CE_DEVICE_ID 0x8176 //8192ce +#define HAL_HW_PCI_8192CU_DEVICE_ID 0x8191 //8192ce +#define HAL_HW_PCI_8192DE_DEVICE_ID 0x8193 //8192de +#define HAL_HW_PCI_002B_DEVICE_ID 0x002B //8192de, provided by HW SD + +#define HAL_MEMORY_MAPPED_IO_RANGE_8190PCI 0x1000 //8190 support 16 pages of IO registers +#define HAL_HW_PCI_REVISION_ID_8190PCI 0x00 +#define HAL_MEMORY_MAPPED_IO_RANGE_8192PCIE 0x4000 //8192 support 16 pages of IO registers +#define HAL_HW_PCI_REVISION_ID_8192PCIE 0x01 +#define HAL_MEMORY_MAPPED_IO_RANGE_8192SE 0x4000 //8192 support 16 pages of IO registers +#define HAL_HW_PCI_REVISION_ID_8192SE 0x10 +#define HAL_HW_PCI_REVISION_ID_8192CE 0x1 +#define HAL_MEMORY_MAPPED_IO_RANGE_8192CE 0x4000 //8192 support 16 pages of IO registers +#define HAL_HW_PCI_REVISION_ID_8192DE 0x0 +#define HAL_MEMORY_MAPPED_IO_RANGE_8192DE 0x4000 //8192 support 16 pages of IO registers + +enum pci_bridge_vendor { + PCI_BRIDGE_VENDOR_INTEL = 0x0,//0b'0000,0001 + PCI_BRIDGE_VENDOR_ATI, //= 0x02,//0b'0000,0010 + PCI_BRIDGE_VENDOR_AMD, //= 0x04,//0b'0000,0100 + PCI_BRIDGE_VENDOR_SIS ,//= 0x08,//0b'0000,1000 + PCI_BRIDGE_VENDOR_UNKNOWN, //= 0x40,//0b'0100,0000 + PCI_BRIDGE_VENDOR_MAX ,//= 0x80 +} ; + +struct rt_pci_capabilities_header { + u8 capability_id; + u8 next; +}; + +struct pci_priv{ + u8 linkctrl_reg; + + u8 busnumber; + u8 devnumber; + u8 funcnumber; + + u8 pcibridge_busnum; + u8 pcibridge_devnum; + u8 pcibridge_funcnum; + u8 pcibridge_vendor; + u16 pcibridge_vendorid; + u16 pcibridge_deviceid; + u8 pcibridge_pciehdr_offset; + u8 pcibridge_linkctrlreg; + + u8 amd_l1_patch; +}; + +typedef struct _RT_ISR_CONTENT +{ + union{ + u32 IntArray[2]; + u32 IntReg4Byte; + u16 IntReg2Byte; + }; +}RT_ISR_CONTENT, *PRT_ISR_CONTENT; + +//#define RegAddr(addr) (addr + 0xB2000000UL) +//some platform macros will def here +static inline void NdisRawWritePortUlong(u32 port, u32 val) +{ + outl(val, port); + //writel(val, (u8 *)RegAddr(port)); +} + +static inline void NdisRawWritePortUchar(u32 port, u8 val) +{ + outb(val, port); + //writeb(val, (u8 *)RegAddr(port)); +} + +static inline void NdisRawReadPortUchar(u32 port, u8 *pval) +{ + *pval = inb(port); + //*pval = readb((u8 *)RegAddr(port)); +} + +static inline void NdisRawReadPortUshort(u32 port, u16 *pval) +{ + *pval = inw(port); + //*pval = readw((u8 *)RegAddr(port)); +} + +static inline void NdisRawReadPortUlong(u32 port, u32 *pval) +{ + *pval = inl(port); + //*pval = readl((u8 *)RegAddr(port)); +} + +#ifdef CONFIG_RTL8192C +void rtl8192ce_set_hal_ops(_adapter * padapter); +#endif +#ifdef CONFIG_RTL8192D +void rtl8192de_set_hal_ops(_adapter * padapter); +#endif + +#endif //__PCIE_HAL_H__ --- linux-raspi2-4.2.0.orig/drivers/net/wireless/rtl8192cu/include/pci_ops.h +++ linux-raspi2-4.2.0/drivers/net/wireless/rtl8192cu/include/pci_ops.h @@ -0,0 +1,60 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved. + * + * 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 + * published by the Free Software Foundation. + * + * 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 Street, Fifth Floor, Boston, MA 02110, USA + * + * + ******************************************************************************/ +#ifndef __PCI_OPS_H_ +#define __PCI_OPS_H_ + +#include +#include +#include +#include + +#ifdef CONFIG_RTL8192C +u32 rtl8192ce_init_desc_ring(_adapter * padapter); +u32 rtl8192ce_free_desc_ring(_adapter * padapter); +void rtl8192ce_reset_desc_ring(_adapter * padapter); +#ifdef CONFIG_64BIT_DMA +u8 PlatformEnable92CEDMA64(PADAPTER Adapter); +#endif +int rtl8192ce_interrupt(PADAPTER Adapter); +void rtl8192ce_xmit_tasklet(void *priv); +void rtl8192ce_recv_tasklet(void *priv); +void rtl8192ce_prepare_bcn_tasklet(void *priv); +void rtl8192ce_set_intf_ops(struct _io_ops *pops); +#define pci_set_intf_ops rtl8192ce_set_intf_ops +#endif + +#ifdef CONFIG_RTL8192D +u32 rtl8192de_init_desc_ring(_adapter * padapter); +u32 rtl8192de_free_desc_ring(_adapter * padapter); +void rtl8192de_reset_desc_ring(_adapter * padapter); +#ifdef CONFIG_64BIT_DMA +u8 PlatformEnable92DEDMA64(PADAPTER Adapter); +#endif +int rtl8192de_interrupt(PADAPTER Adapter); +void rtl8192de_xmit_tasklet(void *priv); +void rtl8192de_recv_tasklet(void *priv); +void rtl8192de_prepare_bcn_tasklet(void *priv); +void rtl8192de_set_intf_ops(struct _io_ops *pops); +#define pci_set_intf_ops rtl8192de_set_intf_ops +u32 MpReadPCIDwordDBI8192D(IN PADAPTER Adapter, IN u16 Offset, IN u8 Direct); +void MpWritePCIDwordDBI8192D(IN PADAPTER Adapter, IN u16 Offset, IN u32 Value, IN u8 Direct); +#endif + +#endif --- linux-raspi2-4.2.0.orig/drivers/net/wireless/rtl8192cu/include/pci_osintf.h +++ linux-raspi2-4.2.0/drivers/net/wireless/rtl8192cu/include/pci_osintf.h @@ -0,0 +1,32 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved. + * + * 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 + * published by the Free Software Foundation. + * + * 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 Street, Fifth Floor, Boston, MA 02110, USA + * + * + ******************************************************************************/ +#ifndef __PCI_OSINTF_H +#define __PCI_OSINTF_H + +#include +#include +#include + + +void rtw_pci_disable_aspm(_adapter *padapter); +void rtw_pci_enable_aspm(_adapter *padapter); + + +#endif --- linux-raspi2-4.2.0.orig/drivers/net/wireless/rtl8192cu/include/recv_osdep.h +++ linux-raspi2-4.2.0/drivers/net/wireless/rtl8192cu/include/recv_osdep.h @@ -0,0 +1,57 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved. + * + * 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 + * published by the Free Software Foundation. + * + * 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 Street, Fifth Floor, Boston, MA 02110, USA + * + * + ******************************************************************************/ +#ifndef __RECV_OSDEP_H_ +#define __RECV_OSDEP_H_ + +#include +#include +#include + + +extern sint _rtw_init_recv_priv(struct recv_priv *precvpriv, _adapter *padapter); +extern void _rtw_free_recv_priv (struct recv_priv *precvpriv); + + +extern s32 rtw_recv_entry(union recv_frame *precv_frame); +extern int rtw_recv_indicatepkt(_adapter *adapter, union recv_frame *precv_frame); +extern void rtw_recv_returnpacket(IN _nic_hdl cnxt, IN _pkt *preturnedpkt); + +extern void rtw_hostapd_mlme_rx(_adapter *padapter, union recv_frame *precv_frame); +extern void rtw_handle_tkip_mic_err(_adapter *padapter,u8 bgroup); + + +int rtw_init_recv_priv(struct recv_priv *precvpriv, _adapter *padapter); +void rtw_free_recv_priv (struct recv_priv *precvpriv); + + +int rtw_os_recv_resource_init(struct recv_priv *precvpriv, _adapter *padapter); +int rtw_os_recv_resource_alloc(_adapter *padapter, union recv_frame *precvframe); +void rtw_os_recv_resource_free(struct recv_priv *precvpriv); + + +int rtw_os_recvbuf_resource_alloc(_adapter *padapter, struct recv_buf *precvbuf); +int rtw_os_recvbuf_resource_free(_adapter *padapter, struct recv_buf *precvbuf); + +void rtw_os_read_port(_adapter *padapter, struct recv_buf *precvbuf); + +void rtw_init_recv_timer(struct recv_reorder_ctrl *preorder_ctrl); + + +#endif // --- linux-raspi2-4.2.0.orig/drivers/net/wireless/rtl8192cu/include/rtl8192c_cmd.h +++ linux-raspi2-4.2.0/drivers/net/wireless/rtl8192cu/include/rtl8192c_cmd.h @@ -0,0 +1,152 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved. + * + * 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 + * published by the Free Software Foundation. + * + * 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 Street, Fifth Floor, Boston, MA 02110, USA + * + * + ******************************************************************************/ +#ifndef __RTL8192C_CMD_H_ +#define __RTL8192C_CMD_H_ + + +enum cmd_msg_element_id +{ + NONE_CMDMSG_EID, + AP_OFFLOAD_EID=0, + SET_PWRMODE_EID=1, + JOINBSS_RPT_EID=2, + RSVD_PAGE_EID=3, + RSSI_4_EID = 4, + RSSI_SETTING_EID=5, + MACID_CONFIG_EID=6, + MACID_PS_MODE_EID=7, + P2P_PS_OFFLOAD_EID=8, + SELECTIVE_SUSPEND_ROF_CMD=9, +#ifdef CONFIG_WOWLAN + H2C_WO_WLAN_CMD = 26, // Wake on Wlan. + EXT_MACID_PERIOD_EID = 27, // support macid to 64 + MACID64_CONFIG_EID = 28, // support macid to 64 +#endif // CONFIG_WOWLAN + P2P_PS_CTW_CMD_EID=32, + H2C_92C_IO_OFFLOAD=44, +#ifdef CONFIG_WOWLAN + KEEP_ALIVE_CONTROL_CMD=48, + DISCONNECT_DECISION_CTRL_CMD=49, + REMOTE_WAKE_CTRL_CMD=60, +#endif // CONFIG_WOWLAN + H2C_92C_TSF_SYNC=67, + H2C_92C_DISABLE_BCN_FUNC=68, + H2C_92C_RESET_TSF = 75, + H2C_92C_CMD_MAX +}; + +struct cmd_msg_parm { + u8 eid; //element id + u8 sz; // sz + u8 buf[6]; +}; + +typedef struct _SETPWRMODE_PARM{ + u8 Mode; + u8 SmartPS; + u8 BcnPassTime; // unit: 100ms +}SETPWRMODE_PARM, *PSETPWRMODE_PARM; + +#ifdef CONFIG_WOWLAN +typedef struct _SETWOWLAN_PARM{ + u8 mode; + u8 gpio_index; + u8 gpio_duration; + u8 second_mode; + u8 reserve; +}SETWOWLAN_PARM, *PSETWOWLAN_PARM; + +#define FW_WOWLAN_FUN_EN BIT(0) +#define FW_WOWLAN_PATTERN_MATCH BIT(1) +#define FW_WOWLAN_MAGIC_PKT BIT(2) +#define FW_WOWLAN_UNICAST BIT(3) +#define FW_WOWLAN_ALL_PKT_DROP BIT(4) +#define FW_WOWLAN_GPIO_ACTIVE BIT(5) +#define FW_WOWLAN_REKEY_WAKEUP BIT(6) +#define FW_WOWLAN_DEAUTH_WAKEUP BIT(7) + +#define FW_WOWLAN_GPIO_WAKEUP_EN BIT(0) +#define FW_FW_PARSE_MAGIC_PKT BIT(1) +#endif // CONFIG_WOWLAN + +struct H2C_SS_RFOFF_PARAM{ + u8 ROFOn; // 1: on, 0:off + u16 gpio_period; // unit: 1024 us +}__attribute__ ((packed)); + + +typedef struct JOINBSSRPT_PARM{ + u8 OpMode; // RT_MEDIA_STATUS +}JOINBSSRPT_PARM, *PJOINBSSRPT_PARM; + +typedef struct _RSVDPAGE_LOC{ + u8 LocProbeRsp; + u8 LocPsPoll; + u8 LocNullData; +}RSVDPAGE_LOC, *PRSVDPAGE_LOC; + +struct P2P_PS_Offload_t { + unsigned char Offload_En:1; + unsigned char role:1; // 1: Owner, 0: Client + unsigned char CTWindow_En:1; + unsigned char NoA0_En:1; + unsigned char NoA1_En:1; + unsigned char AllStaSleep:1; // Only valid in Owner + unsigned char discovery:1; + unsigned char rsvd:1; +}; + +struct P2P_PS_CTWPeriod_t { + unsigned char CTWPeriod; //TU +}; + +// host message to firmware cmd +void rtl8192c_set_FwPwrMode_cmd(_adapter*padapter, u8 Mode); +void rtl8192c_set_FwJoinBssReport_cmd(_adapter* padapter, u8 mstatus); +u8 rtl8192c_set_rssi_cmd(_adapter*padapter, u8 *param); +u8 rtl8192c_set_raid_cmd(_adapter*padapter, u32 mask, u8 arg); +void rtl8192c_Add_RateATid(PADAPTER pAdapter, u32 bitmap, u8 arg); +u8 rtl8192c_set_FwSelectSuspend_cmd(_adapter*padapter,u8 bfwpoll, u16 period); +#ifdef CONFIG_P2P +void rtl8192c_set_p2p_ps_offload_cmd(_adapter* padapter, u8 p2p_ps_state); +#endif //CONFIG_P2P + +#ifdef CONFIG_IOL +typedef struct _IO_OFFLOAD_LOC{ + u8 LocCmd; +}IO_OFFLOAD_LOC, *PIO_OFFLOAD_LOC; +int rtl8192c_IOL_exec_cmds_sync(ADAPTER *adapter, struct xmit_frame *xmit_frame, u32 max_wating_ms); +#endif //CONFIG_IOL + +#ifdef CONFIG_BEACON_DISABLE_OFFLOAD +u8 rtl8192c_dis_beacon_fun_cmd(_adapter* padapter); +#endif // CONFIG_BEACON_DISABLE_OFFLOAD + + +#ifdef CONFIG_TSF_RESET_OFFLOAD +int reset_tsf(PADAPTER Adapter, u8 reset_port ); +#endif // CONFIG_TSF_RESET_OFFLOAD + +#ifdef CONFIG_WOWLAN +void rtl8192c_set_wowlan_cmd(_adapter* padapter); +void SetFwRelatedForWoWLAN8192CU(_adapter* padapter,u8 bHostIsGoingtoSleep); +#endif // CONFIG_WOWLAN + +#endif // __RTL8192C_CMD_H_ --- linux-raspi2-4.2.0.orig/drivers/net/wireless/rtl8192cu/include/rtl8192c_dm.h +++ linux-raspi2-4.2.0/drivers/net/wireless/rtl8192cu/include/rtl8192c_dm.h @@ -0,0 +1,515 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved. + * + * 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 + * published by the Free Software Foundation. + * + * 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 Street, Fifth Floor, Boston, MA 02110, USA + * + * + ******************************************************************************/ +#ifndef __RTL8192C_DM_H__ +#define __RTL8192C_DM_H__ +//============================================================ +// Description: +// +// This file is for 92CE/92CU dynamic mechanism only +// +// +//============================================================ + +#define RSSI_CCK 0 +#define RSSI_OFDM 1 +#define RSSI_DEFAULT 2 + +//============================================================ +// structure and define +//============================================================ + +typedef struct _FALSE_ALARM_STATISTICS{ + u32 Cnt_Parity_Fail; + u32 Cnt_Rate_Illegal; + u32 Cnt_Crc8_fail; + u32 Cnt_Mcs_fail; + u32 Cnt_Ofdm_fail; + u32 Cnt_Cck_fail; + u32 Cnt_all; + u32 Cnt_Fast_Fsync; + u32 Cnt_SB_Search_fail; +}FALSE_ALARM_STATISTICS, *PFALSE_ALARM_STATISTICS; + +typedef struct _Dynamic_Power_Saving_ +{ + u8 PreCCAState; + u8 CurCCAState; + + u8 PreRFState; + u8 CurRFState; + + s32 Rssi_val_min; + +}PS_T; + +typedef struct _Dynamic_Initial_Gain_Threshold_ +{ + u8 Dig_Enable_Flag; + u8 Dig_Ext_Port_Stage; + + int RssiLowThresh; + int RssiHighThresh; + + u32 FALowThresh; + u32 FAHighThresh; + + u8 CurSTAConnectState; + u8 PreSTAConnectState; + u8 CurMultiSTAConnectState; + + u8 PreIGValue; + u8 CurIGValue; + u8 BackupIGValue; + + char BackoffVal; + char BackoffVal_range_max; + char BackoffVal_range_min; + u8 rx_gain_range_max; + u8 rx_gain_range_min; + u8 Rssi_val_min; + + u8 PreCCKPDState; + u8 CurCCKPDState; + u8 PreCCKFAState; + u8 CurCCKFAState; + u8 PreCCAState; + u8 CurCCAState; + + u8 LargeFAHit; + u8 ForbiddenIGI; + u32 Recover_cnt; + u8 rx_gain_range_min_nolink; + +}DIG_T; + +typedef enum tag_Dynamic_Init_Gain_Operation_Type_Definition +{ + DIG_TYPE_THRESH_HIGH = 0, + DIG_TYPE_THRESH_LOW = 1, + DIG_TYPE_BACKOFF = 2, + DIG_TYPE_RX_GAIN_MIN = 3, + DIG_TYPE_RX_GAIN_MAX = 4, + DIG_TYPE_ENABLE = 5, + DIG_TYPE_DISABLE = 6, + DIG_OP_TYPE_MAX +}DM_DIG_OP_E; + +typedef enum tag_CCK_Packet_Detection_Threshold_Type_Definition +{ + CCK_PD_STAGE_LowRssi = 0, + CCK_PD_STAGE_HighRssi = 1, + CCK_PD_STAGE_MAX = 3, +}DM_CCK_PDTH_E; + +typedef enum tag_1R_CCA_Type_Definition +{ + CCA_1R =0, + CCA_2R = 1, + CCA_MAX = 2, +}DM_1R_CCA_E; + +typedef enum tag_RF_Type_Definition +{ + RF_Save =0, + RF_Normal = 1, + RF_MAX = 2, +}DM_RF_E; + +typedef enum tag_DIG_EXT_PORT_ALGO_Definition +{ + DIG_EXT_PORT_STAGE_0 = 0, + DIG_EXT_PORT_STAGE_1 = 1, + DIG_EXT_PORT_STAGE_2 = 2, + DIG_EXT_PORT_STAGE_3 = 3, + DIG_EXT_PORT_STAGE_MAX = 4, +}DM_DIG_EXT_PORT_ALG_E; + + +typedef enum tag_DIG_Connect_Definition +{ + DIG_STA_DISCONNECT = 0, + DIG_STA_CONNECT = 1, + DIG_STA_BEFORE_CONNECT = 2, + DIG_MultiSTA_DISCONNECT = 3, + DIG_MultiSTA_CONNECT = 4, + DIG_CONNECT_MAX +}DM_DIG_CONNECT_E; + + + +typedef enum _BT_Ant_NUM{ + Ant_x2 = 0, + Ant_x1 = 1 +} BT_Ant_NUM, *PBT_Ant_NUM; + +typedef enum _BT_CoType{ + BT_2Wire = 0, + BT_ISSC_3Wire = 1, + BT_Accel = 2, + BT_CSR_BC4 = 3, + BT_CSR_BC8 = 4, + BT_RTL8756 = 5, +} BT_CoType, *PBT_CoType; + +typedef enum _BT_CurState{ + BT_OFF = 0, + BT_ON = 1, +} BT_CurState, *PBT_CurState; + +typedef enum _BT_ServiceType{ + BT_SCO = 0, + BT_A2DP = 1, + BT_HID = 2, + BT_HID_Idle = 3, + BT_Scan = 4, + BT_Idle = 5, + BT_OtherAction = 6, + BT_Busy = 7, + BT_OtherBusy = 8, + BT_PAN = 9, +} BT_ServiceType, *PBT_ServiceType; + +typedef enum _BT_RadioShared{ + BT_Radio_Shared = 0, + BT_Radio_Individual = 1, +} BT_RadioShared, *PBT_RadioShared; + +struct btcoexist_priv { + u8 BT_Coexist; + u8 BT_Ant_Num; + u8 BT_CoexistType; + u8 BT_State; + u8 BT_CUR_State; //0:on, 1:off + u8 BT_Ant_isolation; //0:good, 1:bad + u8 BT_PapeCtrl; //0:SW, 1:SW/HW dynamic + u8 BT_Service; + u8 BT_Ampdu; // 0:Disable BT control A-MPDU, 1:Enable BT control A-MPDU. + u8 BT_RadioSharedType; + u32 Ratio_Tx; + u32 Ratio_PRI; + u8 BtRfRegOrigin1E; + u8 BtRfRegOrigin1F; + u8 BtRssiState; + u32 BtEdcaUL; + u32 BtEdcaDL; + u32 BT_EDCA[2]; + u8 bCOBT; + + u8 bInitSet; + u8 bBTBusyTraffic; + u8 bBTTrafficModeSet; + u8 bBTNonTrafficModeSet; + //BTTraffic BT21TrafficStatistics; + u32 CurrentState; + u32 PreviousState; + u8 BtPreRssiState; + u8 bFWCoexistAllOff; + u8 bSWCoexistAllOff; +}; + +#define BW_AUTO_SWITCH_HIGH_LOW 25 +#define BW_AUTO_SWITCH_LOW_HIGH 30 + +#define DM_DIG_THRESH_HIGH 40 +#define DM_DIG_THRESH_LOW 35 + +#define DM_FALSEALARM_THRESH_LOW 400 +#define DM_FALSEALARM_THRESH_HIGH 1000 + +#define DM_DIG_MAX 0x3e +#define DM_DIG_MIN 0x1e //0x22//0x1c + +#define DM_DIG_FA_UPPER 0x3e +#define DM_DIG_FA_LOWER 0x20 +#define DM_DIG_FA_TH0 0x20 +#define DM_DIG_FA_TH1 0x100 +#define DM_DIG_FA_TH2 0x200 + +#define DM_DIG_BACKOFF_MAX 12 +#define DM_DIG_BACKOFF_MIN (-4) +#define DM_DIG_BACKOFF_DEFAULT 10 + +#define RxPathSelection_SS_TH_low 30 +#define RxPathSelection_diff_TH 18 + +#define DM_RATR_STA_INIT 0 +#define DM_RATR_STA_HIGH 1 +#define DM_RATR_STA_MIDDLE 2 +#define DM_RATR_STA_LOW 3 + +#define CTSToSelfTHVal 30 +#define RegC38_TH 20 + +#define WAIotTHVal 25 + +//Dynamic Tx Power Control Threshold +#define TX_POWER_NEAR_FIELD_THRESH_LVL2 74 +#define TX_POWER_NEAR_FIELD_THRESH_LVL1 67 + +#define TxHighPwrLevel_Normal 0 +#define TxHighPwrLevel_Level1 1 +#define TxHighPwrLevel_Level2 2 +#define TxHighPwrLevel_BT1 3 +#define TxHighPwrLevel_BT2 4 +#define TxHighPwrLevel_15 5 +#define TxHighPwrLevel_35 6 +#define TxHighPwrLevel_50 7 +#define TxHighPwrLevel_70 8 +#define TxHighPwrLevel_100 9 + +#define DM_Type_ByFW 0 +#define DM_Type_ByDriver 1 + + +typedef struct _RATE_ADAPTIVE +{ + u8 RateAdaptiveDisabled; + u8 RATRState; + u16 reserve; + + u32 HighRSSIThreshForRA; + u32 High2LowRSSIThreshForRA; + u8 Low2HighRSSIThreshForRA40M; + u32 LowRSSIThreshForRA40M; + u8 Low2HighRSSIThreshForRA20M; + u32 LowRSSIThreshForRA20M; + u32 UpperRSSIThresholdRATR; + u32 MiddleRSSIThresholdRATR; + u32 LowRSSIThresholdRATR; + u32 LowRSSIThresholdRATR40M; + u32 LowRSSIThresholdRATR20M; + u8 PingRSSIEnable; //cosa add for Netcore long range ping issue + u32 PingRSSIRATR; //cosa add for Netcore long range ping issue + u32 PingRSSIThreshForRA;//cosa add for Netcore long range ping issue + u32 LastRATR; + u8 PreRATRState; + +} RATE_ADAPTIVE, *PRATE_ADAPTIVE; + +typedef enum tag_SW_Antenna_Switch_Definition +{ + Antenna_B = 1, + Antenna_A = 2, + Antenna_MAX = 3, +}DM_SWAS_E; + +#ifdef CONFIG_ANTENNA_DIVERSITY +// This indicates two different the steps. +// In SWAW_STEP_PEAK, driver needs to switch antenna and listen to the signal on the air. +// In SWAW_STEP_DETERMINE, driver just compares the signal captured in SWAW_STEP_PEAK +// with original RSSI to determine if it is necessary to switch antenna. +#define SWAW_STEP_PEAK 0 +#define SWAW_STEP_DETERMINE 1 + +#define TP_MODE 0 +#define RSSI_MODE 1 +#define TRAFFIC_LOW 0 +#define TRAFFIC_HIGH 1 + +typedef struct _SW_Antenna_Switch_ +{ + u8 try_flag; + s32 PreRSSI; + u8 CurAntenna; + u8 PreAntenna; + u8 RSSI_Trying; + u8 TestMode; + u8 bTriggerAntennaSwitch; + u8 SelectAntennaMap; + // Before link Antenna Switch check + u8 SWAS_NoLink_State; + +}SWAT_T; + + +#endif + + +struct dm_priv +{ + u8 DM_Type; + u8 DMFlag, DMFlag_tmp; + + + //for DIG + u8 bDMInitialGainEnable; + u8 binitialized; // for dm_initial_gain_Multi_STA use. + DIG_T DM_DigTable; + + PS_T DM_PSTable; + + FALSE_ALARM_STATISTICS FalseAlmCnt; + + //for rate adaptive, in fact, 88c/92c fw will handle this + u8 bUseRAMask; + RATE_ADAPTIVE RateAdaptive; + + //* Upper and Lower Signal threshold for Rate Adaptive*/ + int UndecoratedSmoothedPWDB; + int UndecoratedSmoothedCCK; + int EntryMinUndecoratedSmoothedPWDB; + int EntryMaxUndecoratedSmoothedPWDB; + + + //for High Power + u8 bDynamicTxPowerEnable; + u8 LastDTPLvl; + u8 DynamicTxHighPowerLvl;//Add by Jacken Tx Power Control for Near/Far Range 2008/03/06 + + //for tx power tracking + //u8 bTXPowerTracking; + u8 TXPowercount; + u8 bTXPowerTrackingInit; + u8 TxPowerTrackControl; //for mp mode, turn off txpwrtracking as default + u8 TM_Trigger; + + u8 ThermalMeter[2]; // ThermalMeter, index 0 for RFIC0, and 1 for RFIC1 + u8 ThermalValue; + u8 ThermalValue_LCK; + u8 ThermalValue_IQK; + u8 ThermalValue_DPK; + + u8 bRfPiEnable; + + //for APK + u32 APKoutput[2][2]; //path A/B; output1_1a/output1_2a + u8 bAPKdone; + u8 bAPKThermalMeterIgnore; + u8 bDPdone; + u8 bDPPathAOK; + u8 bDPPathBOK; + + //for IQK + u32 RegC04; + u32 Reg874; + u32 RegC08; + u32 RegB68; + u32 RegB6C; + u32 Reg870; + u32 Reg860; + u32 Reg864; + u32 ADDA_backup[IQK_ADDA_REG_NUM]; + u32 IQK_MAC_backup[IQK_MAC_REG_NUM]; + u32 IQK_BB_backup_recover[9]; + u32 IQK_BB_backup[IQK_BB_REG_NUM]; + u8 PowerIndex_backup[6]; + + u8 bCCKinCH14; + + char CCK_index; + char OFDM_index[2]; + + BOOLEAN bDoneTxpower; + char CCK_index_HP; + char OFDM_index_HP[2]; + u8 ThermalValue_HP[HP_THERMAL_NUM]; + u8 ThermalValue_HP_index; + + //for TxPwrTracking + int RegE94; + int RegE9C; + int RegEB4; + int RegEBC; + + u32 TXPowerTrackingCallbackCnt; //cosa add for debug + + u32 prv_traffic_idx; // edca turbo + + // for dm_RF_Saving + u8 initialize; + u32 rf_saving_Reg874; + u32 rf_saving_RegC70; + u32 rf_saving_Reg85C; + u32 rf_saving_RegA74; + + //for Antenna diversity +#ifdef CONFIG_ANTENNA_DIVERSITY + SWAT_T DM_SWAT_Table; +#endif +#ifdef CONFIG_SW_ANTENNA_DIVERSITY + _timer SwAntennaSwitchTimer; + + u64 lastTxOkCnt; + u64 lastRxOkCnt; + u64 TXByteCnt_A; + u64 TXByteCnt_B; + u64 RXByteCnt_A; + u64 RXByteCnt_B; + u8 DoubleComfirm; + u8 TrafficLoad; +#endif + + s32 OFDM_Pkt_Cnt; + u8 RSSI_Select; + u8 DIG_Dynamic_MIN ; + + // Add for Reading Initial Data Rate SEL Register 0x484 during watchdog. Using for fill tx desc. 2011.3.21 by Thomas + u8 INIDATA_RATE[32]; + +#ifdef CONFIG_DM_ADAPTIVITY + /* Ported from ODM, for ESTI Adaptivity test */ + s8 TH_L2H_ini; + s8 TH_EDCCA_HL_diff; + s8 IGI_Base; + u8 IGI_target; + bool ForceEDCCA; + u8 AdapEn_RSSI; + s8 Force_TH_H; + s8 Force_TH_L; + u8 IGI_LowerBound; + + bool bPreEdccaEnable; +#endif +}; + + +/*------------------------Export global variable----------------------------*/ +/*------------------------Export global variable----------------------------*/ +/*------------------------Export Marco Definition---------------------------*/ +//#define DM_MultiSTA_InitGainChangeNotify(Event) {DM_DigTable.CurMultiSTAConnectState = Event;} + + +//============================================================ +// function prototype +//============================================================ +void rtl8192c_init_dm_priv(IN PADAPTER Adapter); +void rtl8192c_deinit_dm_priv(IN PADAPTER Adapter); +void rtl8192c_InitHalDm(IN PADAPTER Adapter); +void rtl8192c_HalDmWatchDog(IN PADAPTER Adapter); + +VOID rtl8192c_dm_CheckTXPowerTracking(IN PADAPTER Adapter); + +void rtl8192c_dm_RF_Saving(IN PADAPTER pAdapter, IN u8 bForceInNormal); + +#ifdef CONFIG_BT_COEXIST +void rtl8192c_set_dm_bt_coexist(_adapter *padapter, u8 bStart); +void rtl8192c_issue_delete_ba(_adapter *padapter, u8 dir); +#endif + +#ifdef CONFIG_SW_ANTENNA_DIVERSITY +void SwAntDivRSSICheck8192C(_adapter *padapter ,u32 RxPWDBAll); +void SwAntDivRestAfterLink8192C(IN PADAPTER Adapter); +#endif +#ifdef CONFIG_ANTENNA_DIVERSITY +void SwAntDivCompare8192C(PADAPTER Adapter, WLAN_BSSID_EX *dst, WLAN_BSSID_EX *src); +u8 SwAntDivBeforeLink8192C(IN PADAPTER Adapter); +#endif + +#endif //__HAL8190PCIDM_H__ --- linux-raspi2-4.2.0.orig/drivers/net/wireless/rtl8192cu/include/rtl8192c_event.h +++ linux-raspi2-4.2.0/drivers/net/wireless/rtl8192cu/include/rtl8192c_event.h @@ -0,0 +1,26 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved. + * + * 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 + * published by the Free Software Foundation. + * + * 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 Street, Fifth Floor, Boston, MA 02110, USA + * + * + ******************************************************************************/ +#ifndef _RTL8192C_EVENT_H_ +#define _RTL8192C_EVENT_H_ + + + + +#endif --- linux-raspi2-4.2.0.orig/drivers/net/wireless/rtl8192cu/include/rtl8192c_hal.h +++ linux-raspi2-4.2.0/drivers/net/wireless/rtl8192cu/include/rtl8192c_hal.h @@ -0,0 +1,934 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved. + * + * 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 + * published by the Free Software Foundation. + * + * 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 Street, Fifth Floor, Boston, MA 02110, USA + * + * + ******************************************************************************/ +#ifndef __RTL8192C_HAL_H__ +#define __RTL8192C_HAL_H__ + +#include "hal_com.h" +#include "rtl8192c_spec.h" +#include "Hal8192CPhyReg.h" +#include "Hal8192CPhyCfg.h" +#include "rtl8192c_rf.h" +#include "rtl8192c_dm.h" +#include "rtl8192c_recv.h" +#include "rtl8192c_xmit.h" +#include "rtl8192c_cmd.h" +#ifdef DBG_CONFIG_ERROR_DETECT +#include "rtl8192c_sreset.h" +#endif + +#ifdef CONFIG_PCI_HCI + + #include "Hal8192CEHWImg.h" + + #define RTL819X_DEFAULT_RF_TYPE RF_2T2R + //#define RTL819X_DEFAULT_RF_TYPE RF_1T2R + #define RTL819X_TOTAL_RF_PATH 2 + + //2TODO: The following need to check!! + #define RTL8192C_FW_TSMC_IMG "rtl8192CE\\rtl8192cfwT.bin" + #define RTL8192C_FW_UMC_IMG "rtl8192CE\\rtl8192cfwU.bin" + #define RTL8192C_FW_UMC_B_IMG "rtl8192CE\\rtl8192cfwU_B.bin" + + #define RTL8188C_PHY_REG "rtl8192CE\\PHY_REG_1T.txt" + #define RTL8188C_PHY_RADIO_A "rtl8192CE\\radio_a_1T.txt" + #define RTL8188C_PHY_RADIO_B "rtl8192CE\\radio_b_1T.txt" + #define RTL8188C_AGC_TAB "rtl8192CE\\AGC_TAB_1T.txt" + #define RTL8188C_PHY_MACREG "rtl8192CE\\MACREG_1T.txt" + + #define RTL8192C_PHY_REG "rtl8192CE\\PHY_REG_2T.txt" + #define RTL8192C_PHY_RADIO_A "rtl8192CE\\radio_a_2T.txt" + #define RTL8192C_PHY_RADIO_B "rtl8192CE\\radio_b_2T.txt" + #define RTL8192C_AGC_TAB "rtl8192CE\\AGC_TAB_2T.txt" + #define RTL8192C_PHY_MACREG "rtl8192CE\\MACREG_2T.txt" + + #define RTL819X_PHY_MACPHY_REG "rtl8192CE\\MACPHY_reg.txt" + #define RTL819X_PHY_MACPHY_REG_PG "rtl8192CE\\MACPHY_reg_PG.txt" + #define RTL819X_PHY_MACREG "rtl8192CE\\MAC_REG.txt" + #define RTL819X_PHY_REG "rtl8192CE\\PHY_REG.txt" + #define RTL819X_PHY_REG_1T2R "rtl8192CE\\PHY_REG_1T2R.txt" + #define RTL819X_PHY_REG_to1T1R "rtl8192CE\\phy_to1T1R_a.txt" + #define RTL819X_PHY_REG_to1T2R "rtl8192CE\\phy_to1T2R.txt" + #define RTL819X_PHY_REG_to2T2R "rtl8192CE\\phy_to2T2R.txt" + #define RTL819X_PHY_REG_PG "rtl8192CE\\PHY_REG_PG.txt" + #define RTL819X_AGC_TAB "rtl8192CE\\AGC_TAB.txt" + #define RTL819X_PHY_RADIO_A "rtl8192CE\\radio_a.txt" + #define RTL819X_PHY_RADIO_A_1T "rtl8192CE\\radio_a_1t.txt" + #define RTL819X_PHY_RADIO_A_2T "rtl8192CE\\radio_a_2t.txt" + #define RTL819X_PHY_RADIO_B "rtl8192CE\\radio_b.txt" + #define RTL819X_PHY_RADIO_B_GM "rtl8192CE\\radio_b_gm.txt" + #define RTL819X_PHY_RADIO_C "rtl8192CE\\radio_c.txt" + #define RTL819X_PHY_RADIO_D "rtl8192CE\\radio_d.txt" + #define RTL819X_EEPROM_MAP "rtl8192CE\\8192ce.map" + #define RTL819X_EFUSE_MAP "rtl8192CE\\8192ce.map" + +//--------------------------------------------------------------------- +// RTL8723E From file +//--------------------------------------------------------------------- + #define RTL8723_FW_UMC_IMG "rtl8723E\\rtl8723fw.bin" + #define RTL8723_PHY_REG "rtl8723E\\PHY_REG_1T.txt" + #define RTL8723_PHY_RADIO_A "rtl8723E\\radio_a_1T.txt" + #define RTL8723_PHY_RADIO_B "rtl8723E\\radio_b_1T.txt" + #define RTL8723_AGC_TAB "rtl8723E\\AGC_TAB_1T.txt" + #define RTL8723_PHY_MACREG "rtl8723E\\MAC_REG.txt" + #define RTL8723_PHY_MACREG "rtl8723E\\MAC_REG.txt" + #define RTL8723_PHY_REG_PG "rtl8723E\\PHY_REG_PG.txt" + #define RTL8723_PHY_REG_MP "rtl8723E\\PHY_REG_MP.txt" + + // The file name "_2T" is for 92CE, "_1T" is for 88CE. Modified by tynli. 2009.11.24. + #define Rtl819XFwTSMCImageArray Rtl8192CEFwTSMCImgArray + #define Rtl819XFwUMCACutImageArray Rtl8192CEFwUMCACutImgArray + #define Rtl819XFwUMCBCutImageArray Rtl8192CEFwUMCBCutImgArray + + #define Rtl8723FwUMCImageArray Rtl8192CEFwUMC8723ImgArray + #define Rtl819XMAC_Array Rtl8192CEMAC_2T_Array + #define Rtl819XAGCTAB_2TArray Rtl8192CEAGCTAB_2TArray + #define Rtl819XAGCTAB_1TArray Rtl8192CEAGCTAB_1TArray + #define Rtl819XPHY_REG_2TArray Rtl8192CEPHY_REG_2TArray + #define Rtl819XPHY_REG_1TArray Rtl8192CEPHY_REG_1TArray + #define Rtl819XRadioA_2TArray Rtl8192CERadioA_2TArray + #define Rtl819XRadioA_1TArray Rtl8192CERadioA_1TArray + #define Rtl819XRadioB_2TArray Rtl8192CERadioB_2TArray + #define Rtl819XRadioB_1TArray Rtl8192CERadioB_1TArray + #define Rtl819XPHY_REG_Array_PG Rtl8192CEPHY_REG_Array_PG + #define Rtl819XPHY_REG_Array_MP Rtl8192CEPHY_REG_Array_MP + +#elif defined(CONFIG_USB_HCI) + + #include "Hal8192CUHWImg.h" +#ifdef CONFIG_WOWLAN + #include "Hal8192CUHWImg_wowlan.h" +#endif //CONFIG_WOWLAN + //2TODO: We should define 8192S firmware related macro settings here!! + #define RTL819X_DEFAULT_RF_TYPE RF_1T2R + #define RTL819X_TOTAL_RF_PATH 2 + + //TODO: The following need to check!! + #define RTL8192C_FW_TSMC_IMG "rtl8192CU\\rtl8192cfwT.bin" + #define RTL8192C_FW_UMC_IMG "rtl8192CU\\rtl8192cfwU.bin" + #define RTL8192C_FW_UMC_B_IMG "rtl8192CU\\rtl8192cfwU_B.bin" +#ifdef CONFIG_WOWLAN + #define RTL8192C_FW_TSMC_WW_IMG "rtl8192CU\\rtl8192cfwTww.bin" + #define RTL8192C_FW_UMC_WW_IMG "rtl8192CU\\rtl8192cfwUww.bin" + #define RTL8192C_FW_UMC_B_WW_IMG "rtl8192CU\\rtl8192cfwU_Bww.bin" +#endif // CONFIG_WOWLAN + //#define RTL819X_FW_BOOT_IMG "rtl8192CU\\boot.img" + //#define RTL819X_FW_MAIN_IMG "rtl8192CU\\main.img" + //#define RTL819X_FW_DATA_IMG "rtl8192CU\\data.img" + + #define RTL8188C_PHY_REG "rtl8188CU\\PHY_REG.txt" + #define RTL8188C_PHY_RADIO_A "rtl8188CU\\radio_a.txt" + #define RTL8188C_PHY_RADIO_B "rtl8188CU\\radio_b.txt" + #define RTL8188C_PHY_RADIO_A_mCard "rtl8192CU\\radio_a_1T_mCard.txt" + #define RTL8188C_PHY_RADIO_B_mCard "rtl8192CU\\radio_b_1T_mCard.txt" + #define RTL8188C_PHY_RADIO_A_HP "rtl8192CU\\radio_a_1T_HP.txt" + #define RTL8188C_AGC_TAB "rtl8188CU\\AGC_TAB.txt" + #define RTL8188C_PHY_MACREG "rtl8188CU\\MACREG.txt" + + #define RTL8192C_PHY_REG "rtl8192CU\\PHY_REG.txt" + #define RTL8192C_PHY_RADIO_A "rtl8192CU\\radio_a.txt" + #define RTL8192C_PHY_RADIO_B "rtl8192CU\\radio_b.txt" + #define RTL8192C_AGC_TAB "rtl8192CU\\AGC_TAB.txt" + #define RTL8192C_PHY_MACREG "rtl8192CU\\MACREG.txt" + + #define RTL819X_PHY_REG_PG "rtl8192CU\\PHY_REG_PG.txt" + +//--------------------------------------------------------------------- +// RTL8723U From file +//--------------------------------------------------------------------- + #define RTL8723_FW_UMC_IMG "rtl8723U\\rtl8723fw.bin" + #define RTL8723_PHY_REG "rtl8723U\\PHY_REG_1T.txt" + #define RTL8723_PHY_RADIO_A "rtl8723U\\radio_a_1T.txt" + #define RTL8723_PHY_RADIO_B "rtl8723U\\radio_b_1T.txt" + #define RTL8723_AGC_TAB "rtl8723U\\AGC_TAB_1T.txt" + #define RTL8723_PHY_MACREG "rtl8723U\\MAC_REG.txt" + #define RTL8723_PHY_MACREG "rtl8723U\\MAC_REG.txt" + #define RTL8723_PHY_REG_PG "rtl8723U\\PHY_REG_PG.txt" + #define RTL8723_PHY_REG_MP "rtl8723U\\PHY_REG_MP.txt" + + // The file name "_2T" is for 92CU, "_1T" is for 88CU. Modified by tynli. 2009.11.24. + #define Rtl819XFwImageArray Rtl8192CUFwTSMCImgArray + #define Rtl819XFwTSMCImageArray Rtl8192CUFwTSMCImgArray + #define Rtl819XFwUMCACutImageArray Rtl8192CUFwUMCACutImgArray + #define Rtl819XFwUMCBCutImageArray Rtl8192CUFwUMCBCutImgArray +#ifdef CONFIG_WOWLAN + #define Rtl8192C_FwTSMCWWImageArray Rtl8192CUFwTSMCWWImgArray + #define Rtl8192C_FwUMCWWImageArray Rtl8192CUFwUMCACutWWImgArray + #define Rtl8192C_FwUMCBCutWWImageArray Rtl8192CUFwUMCBCutWWImgArray +#endif //CONFIG_WOWLAN + #define Rtl819XMAC_Array Rtl8192CUMAC_2T_Array + #define Rtl819XAGCTAB_2TArray Rtl8192CUAGCTAB_2TArray + #define Rtl819XAGCTAB_1TArray Rtl8192CUAGCTAB_1TArray + #define Rtl819XAGCTAB_1T_HPArray Rtl8192CUAGCTAB_1T_HPArray + #define Rtl819XPHY_REG_2TArray Rtl8192CUPHY_REG_2TArray + #define Rtl819XPHY_REG_1TArray Rtl8192CUPHY_REG_1TArray + #define Rtl819XPHY_REG_1T_mCardArray Rtl8192CUPHY_REG_1T_mCardArray + #define Rtl819XPHY_REG_2T_mCardArray Rtl8192CUPHY_REG_2T_mCardArray + #define Rtl819XPHY_REG_1T_HPArray Rtl8192CUPHY_REG_1T_HPArray + #define Rtl819XRadioA_2TArray Rtl8192CURadioA_2TArray + #define Rtl819XRadioA_1TArray Rtl8192CURadioA_1TArray + #define Rtl819XRadioA_1T_mCardArray Rtl8192CURadioA_1T_mCardArray + #define Rtl819XRadioB_2TArray Rtl8192CURadioB_2TArray + #define Rtl819XRadioB_1TArray Rtl8192CURadioB_1TArray + #define Rtl819XRadioB_1T_mCardArray Rtl8192CURadioB_1T_mCardArray + #define Rtl819XRadioA_1T_HPArray Rtl8192CURadioA_1T_HPArray + #define Rtl819XPHY_REG_Array_PG Rtl8192CUPHY_REG_Array_PG + #define Rtl819XPHY_REG_Array_PG_mCard Rtl8192CUPHY_REG_Array_PG_mCard + #define Rtl819XPHY_REG_Array_PG_HP Rtl8192CUPHY_REG_Array_PG_HP + #define Rtl819XPHY_REG_Array_MP Rtl8192CUPHY_REG_Array_MP +#endif + +#define DRVINFO_SZ 4 // unit is 8bytes +#define PageNum_128(_Len) (u32)(((_Len)>>7) + ((_Len)&0x7F ? 1:0)) + +#define FW_8192C_SIZE 16384+32//16k +#define FW_8192C_START_ADDRESS 0x1000 +//#define FW_8192C_END_ADDRESS 0x3FFF //Filen said this is for test chip +#define FW_8192C_END_ADDRESS 0x1FFF + +#define MAX_PAGE_SIZE 4096 // @ page : 4k bytes + +#define IS_FW_HEADER_EXIST(_pFwHdr) ((le16_to_cpu(_pFwHdr->Signature)&0xFFF0) == 0x92C0 ||\ + (le16_to_cpu(_pFwHdr->Signature)&0xFFF0) == 0x88C0 ||\ + (le16_to_cpu(_pFwHdr->Signature)&0xFFF0) == 0x2300) + +typedef enum _FIRMWARE_SOURCE{ + FW_SOURCE_IMG_FILE = 0, + FW_SOURCE_HEADER_FILE = 1, //from header file +}FIRMWARE_SOURCE, *PFIRMWARE_SOURCE; + +typedef struct _RT_FIRMWARE{ + FIRMWARE_SOURCE eFWSource; + u8* szFwBuffer; + u32 ulFwLength; +#ifdef CONFIG_WOWLAN + u8* szWoWLANFwBuffer; + u32 ulWoWLANFwLength; +#endif //CONFIG_WOWLAN +}RT_FIRMWARE, *PRT_FIRMWARE, RT_FIRMWARE_92C, *PRT_FIRMWARE_92C; + +// +// This structure must be cared byte-ordering +// +// Added by tynli. 2009.12.04. +typedef struct _RT_8192C_FIRMWARE_HDR {//8-byte alinment required + + //--- LONG WORD 0 ---- + u16 Signature; // 92C0: test chip; 92C, 88C0: test chip; 88C1: MP A-cut; 92C1: MP A-cut + u8 Category; // AP/NIC and USB/PCI + u8 Function; // Reserved for different FW function indcation, for further use when driver needs to download different FW in different conditions + u16 Version; // FW Version + u8 Subversion; // FW Subversion, default 0x00 + u16 Rsvd1; + + + //--- LONG WORD 1 ---- + u8 Month; // Release time Month field + u8 Date; // Release time Date field + u8 Hour; // Release time Hour field + u8 Minute; // Release time Minute field + u16 RamCodeSize; // The size of RAM code + u16 Rsvd2; + + //--- LONG WORD 2 ---- + u32 SvnIdx; // The SVN entry index + u32 Rsvd3; + + //--- LONG WORD 3 ---- + u32 Rsvd4; + u32 Rsvd5; + +}RT_8192C_FIRMWARE_HDR, *PRT_8192C_FIRMWARE_HDR; + +#define DRIVER_EARLY_INT_TIME 0x05 +#define BCN_DMA_ATIME_INT_TIME 0x02 + +#ifdef CONFIG_USB_RX_AGGREGATION + +typedef enum _USB_RX_AGG_MODE{ + USB_RX_AGG_DISABLE, + USB_RX_AGG_DMA, + USB_RX_AGG_USB, + USB_RX_AGG_MIX +}USB_RX_AGG_MODE; + +#define MAX_RX_DMA_BUFFER_SIZE 10240 // 10K for 8192C RX DMA buffer + +#endif + + +#define TX_SELE_HQ BIT(0) // High Queue +#define TX_SELE_LQ BIT(1) // Low Queue +#define TX_SELE_NQ BIT(2) // Normal Queue + + +// Note: We will divide number of page equally for each queue other than public queue! + +#define TX_TOTAL_PAGE_NUMBER 0xF8 +#define TX_PAGE_BOUNDARY (TX_TOTAL_PAGE_NUMBER + 1) + +// For Normal Chip Setting +// (HPQ + LPQ + NPQ + PUBQ) shall be TX_TOTAL_PAGE_NUMBER +#define NORMAL_PAGE_NUM_PUBQ 0xE7 +#define NORMAL_PAGE_NUM_HPQ 0x0C +#define NORMAL_PAGE_NUM_LPQ 0x02 +#define NORMAL_PAGE_NUM_NPQ 0x02 + + +// For Test Chip Setting +// (HPQ + LPQ + PUBQ) shall be TX_TOTAL_PAGE_NUMBER +#define TEST_PAGE_NUM_PUBQ 0x7E + + +// For Test Chip Setting +#define WMM_TEST_TX_TOTAL_PAGE_NUMBER 0xF5 +#define WMM_TEST_TX_PAGE_BOUNDARY (WMM_TEST_TX_TOTAL_PAGE_NUMBER + 1) //F6 + +#define WMM_TEST_PAGE_NUM_PUBQ 0xA3 +#define WMM_TEST_PAGE_NUM_HPQ 0x29 +#define WMM_TEST_PAGE_NUM_LPQ 0x29 + + +//Note: For Normal Chip Setting ,modify later +#define WMM_NORMAL_TX_TOTAL_PAGE_NUMBER 0xF5 +#define WMM_NORMAL_TX_PAGE_BOUNDARY (WMM_TEST_TX_TOTAL_PAGE_NUMBER + 1) //F6 + +#define WMM_NORMAL_PAGE_NUM_PUBQ 0x65 +#define WMM_NORMAL_PAGE_NUM_HPQ 0x30 +#define WMM_NORMAL_PAGE_NUM_LPQ 0x30 +#define WMM_NORMAL_PAGE_NUM_NPQ 0x30 + +//------------------------------------------------------------------------- +// Chip specific +//------------------------------------------------------------------------- +#define CHIP_BONDING_IDENTIFIER(_value) (((_value)>>22)&0x3) +#define CHIP_BONDING_92C_1T2R 0x1 +#define CHIP_BONDING_88C_USB_MCARD 0x2 +#define CHIP_BONDING_88C_USB_HP 0x1 + +// +// 2011.01.06. Define new structure of chip version for RTL8723 and so on. Added by tynli. +// +/* + | BIT15:12 | BIT11:8 | BIT 7 | BIT6:4 | BIT3 | BIT2:0 | + |-------------+-----------+-----------+-------+-----------+-------| + | IC version(CUT) | ROM version | Manufacturer | RF type | Chip type | IC Type | + | | | TSMC/UMC | | TEST/NORMAL| | +*/ +// [15:12] IC version(CUT): A-cut=0, B-cut=1, C-cut=2, D-cut=3 +// [7] Manufacturer: TSMC=0, UMC=1 +// [6:4] RF type: 1T1R=0, 1T2R=1, 2T2R=2 +// [3] Chip type: TEST=0, NORMAL=1 +// [2:0] IC type: 81xxC=0, 8723=1, 92D=2 + +#define CHIP_8723 BIT(0) +#define CHIP_92D BIT(1) +#define NORMAL_CHIP BIT(3) +#define RF_TYPE_1T1R (~(BIT(4)|BIT(5)|BIT(6))) +#define RF_TYPE_1T2R BIT(4) +#define RF_TYPE_2T2R BIT(5) +#define CHIP_VENDOR_UMC BIT(7) +#define B_CUT_VERSION BIT(12) +#define C_CUT_VERSION BIT(13) +#define D_CUT_VERSION ((BIT(13)|BIT(14))) + + +// MASK +#define IC_TYPE_MASK (BIT(0)|BIT(1)|BIT(2)) +#define CHIP_TYPE_MASK BIT(3) +#define RF_TYPE_MASK (BIT(4)|BIT(5)|BIT(6)) +#define MANUFACTUER_MASK BIT(7) +#define ROM_VERSION_MASK (BIT(11)|BIT(10)|BIT(9)|BIT(8)) +#define CUT_VERSION_MASK (BIT(15)|BIT(14)|BIT(13)|BIT(12)) + +// Get element +#define GET_CVID_IC_TYPE(version) ((version) & IC_TYPE_MASK) +#define GET_CVID_CHIP_TYPE(version) ((version) & CHIP_TYPE_MASK) +#define GET_CVID_RF_TYPE(version) ((version) & RF_TYPE_MASK) +#define GET_CVID_MANUFACTUER(version) ((version) & MANUFACTUER_MASK) +#define GET_CVID_ROM_VERSION(version) ((version) & ROM_VERSION_MASK) +#define GET_CVID_CUT_VERSION(version) ((version) & CUT_VERSION_MASK) + +#define IS_81XXC(version) ((GET_CVID_IC_TYPE(version) == 0)? _TRUE : _FALSE) +#define IS_8723_SERIES(version) ((GET_CVID_IC_TYPE(version) == CHIP_8723)? _TRUE : _FALSE) +#define IS_92D(version) ((GET_CVID_IC_TYPE(version) == CHIP_92D)? _TRUE : _FALSE) +#define IS_1T1R(version) ((GET_CVID_RF_TYPE(version))? _FALSE : _TRUE) +#define IS_1T2R(version) ((GET_CVID_RF_TYPE(version) == RF_TYPE_1T2R)? _TRUE : _FALSE) +#define IS_2T2R(version) ((GET_CVID_RF_TYPE(version) == RF_TYPE_2T2R)? _TRUE : _FALSE) +#define IS_NORMAL_CHIP(version) ((GET_CVID_CHIP_TYPE(version))? _TRUE: _FALSE) +#define IS_CHIP_VENDOR_UMC(version) ((GET_CVID_MANUFACTUER(version))? _TRUE: _FALSE) + +#define IS_81XXC_TEST_CHIP(version) ((IS_81XXC(version) && (!IS_NORMAL_CHIP(version)))? _TRUE: _FALSE) +#define IS_92D_TEST_CHIP(version) ((IS_92D(version) && (!IS_NORMAL_CHIP(version)))? _TRUE: _FALSE) +#define IS_92C_SERIAL(version) ((IS_81XXC(version) && IS_2T2R(version)) ? _TRUE : _FALSE) +#define IS_VENDOR_UMC_A_CUT(version) ((IS_CHIP_VENDOR_UMC(version)) ? ((GET_CVID_CUT_VERSION(version)) ? _FALSE : _TRUE) : _FALSE) +#define IS_VENDOR_8723_A_CUT(version) ((IS_8723_SERIES(version)) ? ((GET_CVID_CUT_VERSION(version)) ? _FALSE : _TRUE) : _FALSE) +// 88/92C UMC B-cut vendor is set to TSMC so we need to check CHIP_VENDOR_UMC bit is not 1. +#define IS_81xxC_VENDOR_UMC_B_CUT(version) ((IS_CHIP_VENDOR_UMC(version)) ? ((GET_CVID_CUT_VERSION(version) == B_CUT_VERSION) ? _TRUE : _FALSE):_FALSE) +#define IS_92D_SINGLEPHY(version) ((IS_92D(version)) ? (IS_2T2R(version) ? _TRUE: _FALSE) : _FALSE) +#define IS_92D_C_CUT(version) ((IS_92D(version)) ? ((GET_CVID_CUT_VERSION(version) == 0x2) ? _TRUE : _FALSE) : _FALSE) +#define IS_92D_D_CUT(version) ((IS_92D(version)) ? ((GET_CVID_CUT_VERSION(version) == 0x3) ? _TRUE : _FALSE) : _FALSE) + +typedef enum _VERSION_8192C{ + VERSION_TEST_CHIP_88C = 0x0000, + VERSION_TEST_CHIP_92C = 0x0020, + VERSION_TEST_UMC_CHIP_8723 = 0x0081, + VERSION_NORMAL_TSMC_CHIP_88C = 0x0008, + VERSION_NORMAL_TSMC_CHIP_92C = 0x0028, + VERSION_NORMAL_TSMC_CHIP_92C_1T2R = 0x0018, + VERSION_NORMAL_UMC_CHIP_88C_A_CUT = 0x0088, + VERSION_NORMAL_UMC_CHIP_92C_A_CUT = 0x00a8, + VERSION_NORMAL_UMC_CHIP_92C_1T2R_A_CUT = 0x0098, + VERSION_NORMAL_UMC_CHIP_8723_1T1R_A_CUT = 0x0089, + VERSION_NORMAL_UMC_CHIP_8723_1T1R_B_CUT = 0x1089, + VERSION_NORMAL_UMC_CHIP_88C_B_CUT = 0x1088, + VERSION_NORMAL_UMC_CHIP_92C_B_CUT = 0x10a8, + VERSION_NORMAL_UMC_CHIP_92C_1T2R_B_CUT = 0x1090, + VERSION_TEST_CHIP_92D_SINGLEPHY= 0x0022, + VERSION_TEST_CHIP_92D_DUALPHY = 0x0002, + VERSION_NORMAL_CHIP_92D_SINGLEPHY= 0x002a, + VERSION_NORMAL_CHIP_92D_DUALPHY = 0x000a, + VERSION_NORMAL_CHIP_92D_C_CUT_SINGLEPHY = 0x202a, + VERSION_NORMAL_CHIP_92D_C_CUT_DUALPHY = 0x200a, + VERSION_NORMAL_CHIP_92D_D_CUT_SINGLEPHY = 0x302a, + VERSION_NORMAL_CHIP_92D_D_CUT_DUALPHY = 0x300a, +}VERSION_8192C,*PVERSION_8192C; + + + +//------------------------------------------------------------------------- +// Channel Plan +//------------------------------------------------------------------------- +enum ChannelPlan{ + CHPL_FCC = 0, + CHPL_IC = 1, + CHPL_ETSI = 2, + CHPL_SPAIN = 3, + CHPL_FRANCE = 4, + CHPL_MKK = 5, + CHPL_MKK1 = 6, + CHPL_ISRAEL = 7, + CHPL_TELEC = 8, + CHPL_GLOBAL = 9, + CHPL_WORLD = 10, +}; + +typedef struct _TxPowerInfo{ + u8 CCKIndex[RF_PATH_MAX][CHANNEL_GROUP_MAX]; + u8 HT40_1SIndex[RF_PATH_MAX][CHANNEL_GROUP_MAX]; + u8 HT40_2SIndexDiff[RF_PATH_MAX][CHANNEL_GROUP_MAX]; + s8 HT20IndexDiff[RF_PATH_MAX][CHANNEL_GROUP_MAX]; + u8 OFDMIndexDiff[RF_PATH_MAX][CHANNEL_GROUP_MAX]; + u8 HT40MaxOffset[RF_PATH_MAX][CHANNEL_GROUP_MAX]; + u8 HT20MaxOffset[RF_PATH_MAX][CHANNEL_GROUP_MAX]; + u8 TSSI_A; + u8 TSSI_B; +}TxPowerInfo, *PTxPowerInfo; + +#define EFUSE_REAL_CONTENT_LEN 512 +#define EFUSE_MAP_LEN 128 +#define EFUSE_MAX_SECTION 16 +#define EFUSE_IC_ID_OFFSET 506 //For some inferiority IC purpose. added by Roger, 2009.09.02. +#define AVAILABLE_EFUSE_ADDR(addr) (addr < EFUSE_REAL_CONTENT_LEN) +// +// To prevent out of boundary programming case, leave 1byte and program full section +// 9bytes + 1byt + 5bytes and pre 1byte. +// For worst case: +// | 1byte|----8bytes----|1byte|--5bytes--| +// | | Reserved(14bytes) | +// +#define EFUSE_OOB_PROTECT_BYTES 15 // PG data exclude header, dummy 6 bytes frome CP test and reserved 1byte. + + +#define EFUSE_MAP_LEN_8723 256 +#define EFUSE_MAX_SECTION_8723 32 + +//======================================================== +// EFUSE for BT definition +//======================================================== +#define EFUSE_BT_REAL_CONTENT_LEN 1536 // 512*3 +#define EFUSE_BT_MAP_LEN 1024 // 1k bytes +#define EFUSE_BT_MAX_SECTION 128 // 1024/8 + +#define EFUSE_PROTECT_BYTES_BANK 16 + +// +// For RTL8723 WiFi/BT/GPS multi-function configuration. 2010.10.06. +// +typedef enum _RT_MULTI_FUNC{ + RT_MULTI_FUNC_NONE = 0x00, + RT_MULTI_FUNC_WIFI = 0x01, + RT_MULTI_FUNC_BT = 0x02, + RT_MULTI_FUNC_GPS = 0x04, +}RT_MULTI_FUNC,*PRT_MULTI_FUNC; + +// +// For RTL8723 WiFi PDn/GPIO polarity control configuration. 2010.10.08. +// +typedef enum _RT_POLARITY_CTL{ + RT_POLARITY_LOW_ACT = 0, + RT_POLARITY_HIGH_ACT = 1, +}RT_POLARITY_CTL,*PRT_POLARITY_CTL; + +// For RTL8723 regulator mode. by tynli. 2011.01.14. +typedef enum _RT_REGULATOR_MODE{ + RT_SWITCHING_REGULATOR = 0, + RT_LDO_REGULATOR = 1, +}RT_REGULATOR_MODE,*PRT_REGULATOR_MODE; + +enum c2h_id_8192c { + C2H_DBG = 0, + C2H_TSF = 1, + C2H_AP_RPT_RSP = 2, + C2H_CCX_TX_RPT = 3, + C2H_BT_RSSI = 4, + C2H_BT_OP_MODE = 5, + C2H_EXT_RA_RPT = 6, + C2H_HW_INFO_EXCH = 10, + C2H_C2H_H2C_TEST = 11, + C2H_BT_INFO = 12, + C2H_BT_MP_INFO = 15, + MAX_C2HEVENT +}; + +#ifdef CONFIG_PCI_HCI +struct hal_data_8192ce +{ + VERSION_8192C VersionID; + RT_MULTI_FUNC MultiFunc; // For multi-function consideration. + RT_POLARITY_CTL PolarityCtl; // For Wifi PDn Polarity control. + RT_REGULATOR_MODE RegulatorMode; // switching regulator or LDO + u16 CustomerID; + + u16 FirmwareVersion; + u16 FirmwareVersionRev; + u16 FirmwareSubVersion; + + u32 IntrMask[2]; + u32 IntrMaskToSet[2]; + + u32 DisabledFunctions; + + //current WIFI_PHY values + u32 ReceiveConfig; + u32 TransmitConfig; + WIRELESS_MODE CurrentWirelessMode; + HT_CHANNEL_WIDTH CurrentChannelBW; + u8 CurrentChannel; + u8 nCur40MhzPrimeSC;// Control channel sub-carrier + + u16 BasicRateSet; + + //rf_ctrl + _lock rf_lock; + u8 rf_chip; + u8 rf_type; + u8 NumTotalRFPath; + + INTERFACE_SELECT_8192CPCIe InterfaceSel; + + // + // EEPROM setting. + // + u16 EEPROMVID; + u16 EEPROMDID; + u16 EEPROMSVID; + u16 EEPROMSMID; + u16 EEPROMChannelPlan; + u16 EEPROMVersion; + + u8 EEPROMChnlAreaTxPwrCCK[2][3]; + u8 EEPROMChnlAreaTxPwrHT40_1S[2][3]; + u8 EEPROMChnlAreaTxPwrHT40_2SDiff[2][3]; + u8 EEPROMPwrLimitHT20[3]; + u8 EEPROMPwrLimitHT40[3]; + + u8 bTXPowerDataReadFromEEPORM; + u8 EEPROMThermalMeter; + u8 EEPROMTSSI[2]; + + u8 EEPROMCustomerID; + u8 EEPROMBoardType; + u8 EEPROMRegulatory; + + u8 bDefaultAntenna; + u8 bIQKInitialized; + + u8 TxPwrLevelCck[RF_PATH_MAX][CHANNEL_MAX_NUMBER]; + u8 TxPwrLevelHT40_1S[RF_PATH_MAX][CHANNEL_MAX_NUMBER]; // For HT 40MHZ pwr + u8 TxPwrLevelHT40_2S[RF_PATH_MAX][CHANNEL_MAX_NUMBER]; // For HT 40MHZ pwr + s8 TxPwrHt20Diff[RF_PATH_MAX][CHANNEL_MAX_NUMBER];// HT 20<->40 Pwr diff + u8 TxPwrLegacyHtDiff[RF_PATH_MAX][CHANNEL_MAX_NUMBER];// For HT<->legacy pwr diff + // For power group + u8 PwrGroupHT20[RF_PATH_MAX][CHANNEL_MAX_NUMBER]; + u8 PwrGroupHT40[RF_PATH_MAX][CHANNEL_MAX_NUMBER]; + + u8 LegacyHTTxPowerDiff;// Legacy to HT rate power diff + +#ifdef CONFIG_BT_COEXIST + struct btcoexist_priv bt_coexist; +#endif + + // Read/write are allow for following hardware information variables + u8 framesync; + u32 framesyncC34; + u8 framesyncMonitor; + u8 DefaultInitialGain[4]; + u8 pwrGroupCnt; + u32 MCSTxPowerLevelOriginalOffset[7][16]; + u32 CCKTxPowerLevelOriginalOffset; + + u32 AntennaTxPath; // Antenna path Tx + u32 AntennaRxPath; // Antenna path Rx + u8 BluetoothCoexist; + u8 ExternalPA; + + //u32 LedControlNum; + //u32 LedControlMode; + u8 bLedOpenDrain; // Support Open-drain arrangement for controlling the LED. Added by Roger, 2009.10.16. + //u32 TxPowerTrackControl; + u8 b1x1RecvCombine; // for 1T1R receive combining + + u8 bCurrentTurboEDCA; + u32 AcParam_BE; //Original parameter for BE, use for EDCA turbo. + + //vivi, for tx power tracking, 20080407 + //u16 TSSI_13dBm; + //u32 Pwr_Track; + // The current Tx Power Level + u8 CurrentCckTxPwrIdx; + u8 CurrentOfdm24GTxPwrIdx; + + BB_REGISTER_DEFINITION_T PHYRegDef[4]; //Radio A/B/C/D + + BOOLEAN bRFPathRxEnable[4]; // We support 4 RF path now. + + u32 RfRegChnlVal[2]; + + u8 bCckHighPower; + + //RDG enable + BOOLEAN bRDGEnable; + + //for host message to fw + u8 LastHMEBoxNum; + + u8 fw_ractrl; + u8 RegTxPause; + // Beacon function related global variable. + u32 RegBcnCtrlVal; + u8 RegFwHwTxQCtrl; + u8 RegReg542; + u8 CurAntenna; + u8 AntDivCfg; + +#ifdef CONFIG_SW_ANTENNA_DIVERSITY + //SW Antenna Switch + s32 RSSI_sum_A; + s32 RSSI_sum_B; + s32 RSSI_cnt_A; + s32 RSSI_cnt_B; + BOOLEAN RSSI_test; +#endif +#ifdef CONFIG_HW_ANTENNA_DIVERSITY + //Hybrid Antenna Diversity + u32 CCK_Ant1_Cnt; + u32 CCK_Ant2_Cnt; + u32 OFDM_Ant1_Cnt; + u32 OFDM_Ant2_Cnt; +#endif + + struct dm_priv dmpriv; + u8 bDumpRxPkt;//for debug +#ifdef DBG_CONFIG_ERROR_DETECT + struct sreset_priv srestpriv; +#endif + u8 bInterruptMigration; + u8 bDisableTxInt; + u8 bGpioHwWpsPbc; + + u8 FwRsvdPageStartOffset; //2010.06.23. Added by tynli. Reserve page start offset except beacon in TxQ. + + u16 EfuseUsedBytes; + +#ifdef CONFIG_P2P + struct P2P_PS_Offload_t p2p_ps_offload; +#endif //CONFIG_P2P +}; + +typedef struct hal_data_8192ce HAL_DATA_TYPE, *PHAL_DATA_TYPE; + +// +// Function disabled. +// +#define DF_TX_BIT BIT0 +#define DF_RX_BIT BIT1 +#define DF_IO_BIT BIT2 +#define DF_IO_D3_BIT BIT3 + +#define RT_DF_TYPE u32 +#define RT_DISABLE_FUNC(__pAdapter, __FuncBits) ((__pAdapter)->DisabledFunctions |= ((RT_DF_TYPE)(__FuncBits))) +#define RT_ENABLE_FUNC(__pAdapter, __FuncBits) ((__pAdapter)->DisabledFunctions &= (~((RT_DF_TYPE)(__FuncBits)))) +#define RT_IS_FUNC_DISABLED(__pAdapter, __FuncBits) ( (__pAdapter)->DisabledFunctions & (__FuncBits) ) +#define IS_MULTI_FUNC_CHIP(_Adapter) (((((PHAL_DATA_TYPE)(_Adapter->HalData))->MultiFunc) & (RT_MULTI_FUNC_BT|RT_MULTI_FUNC_GPS)) ? _TRUE : _FALSE) + +void InterruptRecognized8192CE(PADAPTER Adapter, PRT_ISR_CONTENT pIsrContent); +VOID UpdateInterruptMask8192CE(PADAPTER Adapter, u32 AddMSR, u32 AddMSR1, u32 RemoveMSR, u32 RemoveMSR1); +#endif + +#ifdef CONFIG_USB_HCI +struct hal_data_8192cu +{ + VERSION_8192C VersionID; + RT_MULTI_FUNC MultiFunc; // For multi-function consideration. + RT_POLARITY_CTL PolarityCtl; // For Wifi PDn Polarity control. + RT_REGULATOR_MODE RegulatorMode; // switching regulator or LDO + u16 CustomerID; + + u16 FirmwareVersion; + u16 FirmwareVersionRev; + u16 FirmwareSubVersion; + + //current WIFI_PHY values + u32 ReceiveConfig; + WIRELESS_MODE CurrentWirelessMode; + HT_CHANNEL_WIDTH CurrentChannelBW; + u8 CurrentChannel; + u8 nCur40MhzPrimeSC;// Control channel sub-carrier + + u16 BasicRateSet; + + //rf_ctrl + u8 rf_chip; + u8 rf_type; + u8 NumTotalRFPath; + + u8 BoardType; + //INTERFACE_SELECT_8192CUSB InterfaceSel; + + // + // EEPROM setting. + // + u16 EEPROMVID; + u16 EEPROMPID; + u16 EEPROMSVID; + u16 EEPROMSDID; + u8 EEPROMCustomerID; + u8 EEPROMSubCustomerID; + u8 EEPROMVersion; + u8 EEPROMRegulatory; + + u8 bTXPowerDataReadFromEEPORM; + u8 EEPROMThermalMeter; + + u8 bIQKInitialized; + + u8 TxPwrLevelCck[RF_PATH_MAX][CHANNEL_MAX_NUMBER]; + u8 TxPwrLevelHT40_1S[RF_PATH_MAX][CHANNEL_MAX_NUMBER]; // For HT 40MHZ pwr + u8 TxPwrLevelHT40_2S[RF_PATH_MAX][CHANNEL_MAX_NUMBER]; // For HT 40MHZ pwr + s8 TxPwrHt20Diff[RF_PATH_MAX][CHANNEL_MAX_NUMBER];// HT 20<->40 Pwr diff + u8 TxPwrLegacyHtDiff[RF_PATH_MAX][CHANNEL_MAX_NUMBER];// For HT<->legacy pwr diff + // For power group + u8 PwrGroupHT20[RF_PATH_MAX][CHANNEL_MAX_NUMBER]; + u8 PwrGroupHT40[RF_PATH_MAX][CHANNEL_MAX_NUMBER]; + + u8 LegacyHTTxPowerDiff;// Legacy to HT rate power diff + + // Read/write are allow for following hardware information variables + u8 framesync; + u32 framesyncC34; + u8 framesyncMonitor; + u8 DefaultInitialGain[4]; + u8 pwrGroupCnt; + u32 MCSTxPowerLevelOriginalOffset[7][16]; + u32 CCKTxPowerLevelOriginalOffset; + + u32 AntennaTxPath; // Antenna path Tx + u32 AntennaRxPath; // Antenna path Rx + u8 BluetoothCoexist; + u8 ExternalPA; + + u8 bLedOpenDrain; // Support Open-drain arrangement for controlling the LED. Added by Roger, 2009.10.16. + + //u32 LedControlNum; + //u32 LedControlMode; + //u32 TxPowerTrackControl; + u8 b1x1RecvCombine; // for 1T1R receive combining + + u8 bCurrentTurboEDCA; + u32 AcParam_BE; //Original parameter for BE, use for EDCA turbo. + + //vivi, for tx power tracking, 20080407 + //u16 TSSI_13dBm; + //u32 Pwr_Track; + // The current Tx Power Level + u8 CurrentCckTxPwrIdx; + u8 CurrentOfdm24GTxPwrIdx; + + BB_REGISTER_DEFINITION_T PHYRegDef[4]; //Radio A/B/C/D + + BOOLEAN bRFPathRxEnable[4]; // We support 4 RF path now. + + u32 RfRegChnlVal[2]; + + u8 bCckHighPower; + + //RDG enable + BOOLEAN bRDGEnable; + + //for host message to fw + u8 LastHMEBoxNum; + + u8 fw_ractrl; + u8 RegTxPause; + // Beacon function related global variable. + u32 RegBcnCtrlVal; + u8 RegFwHwTxQCtrl; + u8 RegReg542; + + struct dm_priv dmpriv; +#ifdef DBG_CONFIG_ERROR_DETECT + struct sreset_priv srestpriv; +#endif + +#ifdef CONFIG_BT_COEXIST + struct btcoexist_priv bt_coexist; +#endif + u8 CurAntenna; + u8 AntDivCfg; + +#ifdef CONFIG_SW_ANTENNA_DIVERSITY + //SW Antenna Switch + s32 RSSI_sum_A; + s32 RSSI_sum_B; + s32 RSSI_cnt_A; + s32 RSSI_cnt_B; + BOOLEAN RSSI_test; +#endif +#ifdef CONFIG_HW_ANTENNA_DIVERSITY + //Hybrid Antenna Diversity + u32 CCK_Ant1_Cnt; + u32 CCK_Ant2_Cnt; + u32 OFDM_Ant1_Cnt; + u32 OFDM_Ant2_Cnt; +#endif + + u8 bDumpRxPkt;//for debug + u8 FwRsvdPageStartOffset; //2010.06.23. Added by tynli. Reserve page start offset except beacon in TxQ. + + // 2010/08/09 MH Add CU power down mode. + BOOLEAN pwrdown; + + // For 92C USB endpoint setting + // + + u32 UsbBulkOutSize; + + int RtBulkOutPipe[3]; + int RtBulkInPipe; + int RtIntInPipe; + // Add for dual MAC 0--Mac0 1--Mac1 + u32 interfaceIndex; + + u8 OutEpQueueSel; + u8 OutEpNumber; + + u8 Queue2EPNum[8];//for out endpoint number mapping + +#ifdef CONFIG_USB_TX_AGGREGATION + u8 UsbTxAggMode; + u8 UsbTxAggDescNum; +#endif +#ifdef CONFIG_USB_RX_AGGREGATION + u16 HwRxPageSize; // Hardware setting + u32 MaxUsbRxAggBlock; + + USB_RX_AGG_MODE UsbRxAggMode; + u8 UsbRxAggBlockCount; // USB Block count. Block size is 512-byte in hight speed and 64-byte in full speed + u8 UsbRxAggBlockTimeout; + u8 UsbRxAggPageCount; // 8192C DMA page count + u8 UsbRxAggPageTimeout; +#endif + + // 2010/12/10 MH Add for USB aggreation mode dynamic shceme. + BOOLEAN UsbRxHighSpeedMode; + + // 2010/11/22 MH Add for slim combo debug mode selective. + // This is used for fix the drawback of CU TSMC-A/UMC-A cut. HW auto suspend ability. Close BT clock. + BOOLEAN SlimComboDbg; + + u16 EfuseUsedBytes; + +#ifdef CONFIG_P2P + struct P2P_PS_Offload_t p2p_ps_offload; +#endif //CONFIG_P2P +}; + +typedef struct hal_data_8192cu HAL_DATA_TYPE, *PHAL_DATA_TYPE; +#endif + +#define GET_HAL_DATA(__pAdapter) ((HAL_DATA_TYPE *)((__pAdapter)->HalData)) +#define GET_RF_TYPE(priv) (GET_HAL_DATA(priv)->rf_type) + +#define INCLUDE_MULTI_FUNC_BT(_Adapter) (GET_HAL_DATA(_Adapter)->MultiFunc & RT_MULTI_FUNC_BT) +#define INCLUDE_MULTI_FUNC_GPS(_Adapter) (GET_HAL_DATA(_Adapter)->MultiFunc & RT_MULTI_FUNC_GPS) + +VOID rtl8192c_FirmwareSelfReset(IN PADAPTER Adapter); +int FirmwareDownload92C(IN PADAPTER Adapter,IN BOOLEAN bUsedWoWLANFw); +VOID InitializeFirmwareVars92C(PADAPTER Adapter); +u8 GetEEPROMSize8192C(PADAPTER Adapter); +void rtl8192c_EfuseParseChnlPlan(PADAPTER padapter, u8 *hwinfo, BOOLEAN AutoLoadFail); +VERSION_8192C rtl8192c_ReadChipVersion(IN PADAPTER Adapter); +void rtl8192c_ReadBluetoothCoexistInfo(PADAPTER Adapter, u8 *PROMContent, BOOLEAN AutoloadFail); +//void rtl8192c_free_hal_data(_adapter * padapter); +VOID rtl8192c_EfuseParseIDCode(PADAPTER pAdapter, u8 *hwinfo); +void rtl8192c_set_hal_ops(struct hal_ops *pHalFunc); + +s32 c2h_id_filter_ccx_8192c(u8 id); +#endif + +#ifdef CONFIG_MP_INCLUDED + +extern void Hal_SetAntenna(PADAPTER pAdapter); +extern void Hal_SetBandwidth(PADAPTER pAdapter); + +extern void Hal_SetTxPower(PADAPTER pAdapter); +extern void Hal_SetCarrierSuppressionTx(PADAPTER pAdapter, u8 bStart); +extern void Hal_SetSingleToneTx ( PADAPTER pAdapter , u8 bStart ); +extern void Hal_SetSingleCarrierTx (PADAPTER pAdapter, u8 bStart); +extern void Hal_SetContinuousTx (PADAPTER pAdapter, u8 bStart); + +extern void Hal_SetDataRate(PADAPTER pAdapter); +extern void Hal_SetChannel(PADAPTER pAdapter); +extern void Hal_SetAntennaPathPower(PADAPTER pAdapter); +extern s32 Hal_SetThermalMeter(PADAPTER pAdapter, u8 target_ther); +extern s32 Hal_SetPowerTracking(PADAPTER padapter, u8 enable); +extern void Hal_GetPowerTracking(PADAPTER padapter, u8 * enable); +extern void Hal_GetThermalMeter(PADAPTER pAdapter, u8 *value); +extern void Hal_mpt_SwitchRfSetting(PADAPTER pAdapter); +extern void Hal_MPT_CCKTxPowerAdjust(PADAPTER Adapter, BOOLEAN bInCH14); +extern void Hal_MPT_CCKTxPowerAdjustbyIndex(PADAPTER pAdapter, BOOLEAN beven); +extern void Hal_SetCCKTxPower(PADAPTER pAdapter, u8 * TxPower); +extern void Hal_SetOFDMTxPower(PADAPTER pAdapter, u8 * TxPower); +extern void Hal_TriggerRFThermalMeter(PADAPTER pAdapter); +extern u8 Hal_ReadRFThermalMeter(PADAPTER pAdapter); +extern void Hal_SetCCKContinuousTx(PADAPTER pAdapter, u8 bStart); +extern void Hal_SetOFDMContinuousTx(PADAPTER pAdapter, u8 bStart); + +#endif --- linux-raspi2-4.2.0.orig/drivers/net/wireless/rtl8192cu/include/rtl8192c_led.h +++ linux-raspi2-4.2.0/drivers/net/wireless/rtl8192cu/include/rtl8192c_led.h @@ -0,0 +1,41 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved. + * + * 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 + * published by the Free Software Foundation. + * + * 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 Street, Fifth Floor, Boston, MA 02110, USA + * + * + ******************************************************************************/ +#ifndef __RTL8192C_LED_H_ +#define __RTL8192C_LED_H_ + +#include +#include +#include + + +//================================================================================ +// Interface to manipulate LED objects. +//================================================================================ +#ifdef CONFIG_USB_HCI +void rtl8192cu_InitSwLeds(_adapter *padapter); +void rtl8192cu_DeInitSwLeds(_adapter *padapter); +#endif +#ifdef CONFIG_PCI_HCI +void rtl8192ce_gen_RefreshLedState(PADAPTER Adapter); +void rtl8192ce_InitSwLeds(_adapter *padapter); +void rtl8192ce_DeInitSwLeds(_adapter *padapter); +#endif + +#endif --- linux-raspi2-4.2.0.orig/drivers/net/wireless/rtl8192cu/include/rtl8192c_recv.h +++ linux-raspi2-4.2.0/drivers/net/wireless/rtl8192cu/include/rtl8192c_recv.h @@ -0,0 +1,183 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved. + * + * 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 + * published by the Free Software Foundation. + * + * 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 Street, Fifth Floor, Boston, MA 02110, USA + * + * + ******************************************************************************/ +#ifndef _RTL8192C_RECV_H_ +#define _RTL8192C_RECV_H_ + +#include +#include +#include + + +#ifdef PLATFORM_OS_XP + #define NR_RECVBUFF (16) +#elif defined(PLATFORM_OS_CE) + #define NR_RECVBUFF (4) +#else +#ifdef CONFIG_SINGLE_RECV_BUF + #define NR_RECVBUFF (1) +#else + #define NR_RECVBUFF (4) +#endif //CONFIG_SINGLE_RECV_BUF + + #define NR_PREALLOC_RECV_SKB (8) +#endif + + +#define RECV_BLK_SZ 512 +#define RECV_BLK_CNT 16 +#define RECV_BLK_TH RECV_BLK_CNT + +#if defined(CONFIG_USB_HCI) + +#ifdef PLATFORM_OS_CE +#define MAX_RECVBUF_SZ (8192+1024) // 8K+1k +#else + #ifndef CONFIG_MINIMAL_MEMORY_USAGE + //#define MAX_RECVBUF_SZ (32768) // 32k + //#define MAX_RECVBUF_SZ (16384) //16K + //#define MAX_RECVBUF_SZ (10240) //10K + #ifdef CONFIG_PLATFORM_MSTAR + #define MAX_RECVBUF_SZ (8192) // 8K + #else + #define MAX_RECVBUF_SZ (15360) // 15k < 16k + #endif + //#define MAX_RECVBUF_SZ (8192+1024) // 8K+1k + #else + #define MAX_RECVBUF_SZ (4000) // about 4K + #endif +#endif + +#elif defined(CONFIG_PCI_HCI) +//#ifndef CONFIG_MINIMAL_MEMORY_USAGE +// #define MAX_RECVBUF_SZ (9100) +//#else + #define MAX_RECVBUF_SZ (4000) // about 4K +//#endif + +#define RX_MPDU_QUEUE 0 +#define RX_CMD_QUEUE 1 +#define RX_MAX_QUEUE 2 +#endif + + +#define RECV_BULK_IN_ADDR 0x80 +#define RECV_INT_IN_ADDR 0x81 + +#define PHY_RSSI_SLID_WIN_MAX 100 +#define PHY_LINKQUALITY_SLID_WIN_MAX 20 + + +struct phy_stat +{ + unsigned int phydw0; + + unsigned int phydw1; + + unsigned int phydw2; + + unsigned int phydw3; + + unsigned int phydw4; + + unsigned int phydw5; + + unsigned int phydw6; + + unsigned int phydw7; +}; + +typedef struct _Phy_OFDM_Rx_Status_Report_8192cd +{ + unsigned char trsw_gain_X[4]; + unsigned char pwdb_all; + unsigned char cfosho_X[4]; + unsigned char cfotail_X[4]; + unsigned char rxevm_X[2]; + unsigned char rxsnr_X[4]; + unsigned char pdsnr_X[2]; + unsigned char csi_current_X[2]; + unsigned char csi_target_X[2]; + unsigned char sigevm; + unsigned char max_ex_pwr; +//#ifdef RTL8192SE +#ifdef CONFIG_LITTLE_ENDIAN + unsigned char ex_intf_flg:1; + unsigned char sgi_en:1; + unsigned char rxsc:2; + //unsigned char rsvd:4; + unsigned char idle_long:1; + unsigned char r_ant_train_en:1; + unsigned char ANTSELB:1; + unsigned char ANTSEL:1; +#else // _BIG_ENDIAN_ + //unsigned char rsvd:4; + unsigned char ANTSEL:1; + unsigned char ANTSELB:1; + unsigned char r_ant_train_en:1; + unsigned char idle_long:1; + unsigned char rxsc:2; + unsigned char sgi_en:1; + unsigned char ex_intf_flg:1; +#endif +//#else // RTL8190, RTL8192E +// unsigned char sgi_en; +// unsigned char rxsc_sgien_exflg; +//#endif +} __attribute__ ((packed))PHY_STS_OFDM_8192CD_T,PHY_RX_DRIVER_INFO_8192CD; + +typedef struct _Phy_CCK_Rx_Status_Report_8192cd +{ + /* For CCK rate descriptor. This is a signed 8:1 variable. LSB bit presend + 0.5. And MSB 7 bts presend a signed value. Range from -64~+63.5. */ + u8 adc_pwdb_X[4]; + u8 SQ_rpt; + u8 cck_agc_rpt; +} PHY_STS_CCK_8192CD_T; + + +// Rx smooth factor +#define Rx_Smooth_Factor (20) + + +#ifdef CONFIG_USB_HCI +typedef struct _INTERRUPT_MSG_FORMAT_EX{ + unsigned int C2H_MSG0; + unsigned int C2H_MSG1; + unsigned int C2H_MSG2; + unsigned int C2H_MSG3; + unsigned int HISR; // from HISR Reg0x124, read to clear + unsigned int HISRE;// from HISRE Reg0x12c, read to clear + unsigned int MSG_EX; +}INTERRUPT_MSG_FORMAT_EX,*PINTERRUPT_MSG_FORMAT_EX; + +void rtl8192cu_init_recvbuf(_adapter *padapter, struct recv_buf *precvbuf); +int rtl8192cu_init_recv_priv(_adapter * padapter); +void rtl8192cu_free_recv_priv(_adapter * padapter); +#endif + +#ifdef CONFIG_PCI_HCI +int rtl8192ce_init_recv_priv(_adapter * padapter); +void rtl8192ce_free_recv_priv(_adapter * padapter); +#endif + +void rtl8192c_translate_rx_signal_stuff(union recv_frame *precvframe, struct phy_stat *pphy_info); +void rtl8192c_query_rx_desc_status(union recv_frame *precvframe, struct recv_stat *pdesc); + +#endif --- linux-raspi2-4.2.0.orig/drivers/net/wireless/rtl8192cu/include/rtl8192c_rf.h +++ linux-raspi2-4.2.0/drivers/net/wireless/rtl8192cu/include/rtl8192c_rf.h @@ -0,0 +1,91 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved. + * + * 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 + * published by the Free Software Foundation. + * + * 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 Street, Fifth Floor, Boston, MA 02110, USA + * + * + ******************************************************************************/ +/****************************************************************************** + * + * + * Module: rtl8192c_rf.h ( Header File) + * + * Note: Collect every HAL RF type exter API or constant. + * + * Function: + * + * Export: + * + * Abbrev: + * + * History: + * Data Who Remark + * + * 09/25/2008 MHC Create initial version. + * + * +******************************************************************************/ +#ifndef _RTL8192C_RF_H_ +#define _RTL8192C_RF_H_ +/* Check to see if the file has been included already. */ + + +/*--------------------------Define Parameters-------------------------------*/ + +// +// For RF 6052 Series +// +#define RF6052_MAX_TX_PWR 0x3F +#define RF6052_MAX_REG 0x3F +#define RF6052_MAX_PATH 2 +/*--------------------------Define Parameters-------------------------------*/ + + +/*------------------------------Define structure----------------------------*/ + +/*------------------------------Define structure----------------------------*/ + + +/*------------------------Export global variable----------------------------*/ +/*------------------------Export global variable----------------------------*/ + +/*------------------------Export Marco Definition---------------------------*/ + +/*------------------------Export Marco Definition---------------------------*/ + + +/*--------------------------Exported Function prototype---------------------*/ + +// +// RF RL6052 Series API +// +void rtl8192c_RF_ChangeTxPath( IN PADAPTER Adapter, + IN u16 DataRate); +void rtl8192c_PHY_RF6052SetBandwidth( + IN PADAPTER Adapter, + IN HT_CHANNEL_WIDTH Bandwidth); +VOID rtl8192c_PHY_RF6052SetCckTxPower( + IN PADAPTER Adapter, + IN u8* pPowerlevel); +VOID rtl8192c_PHY_RF6052SetOFDMTxPower( + IN PADAPTER Adapter, + IN u8* pPowerLevel, + IN u8 Channel); +int PHY_RF6052_Config8192C( IN PADAPTER Adapter ); + +/*--------------------------Exported Function prototype---------------------*/ + + +#endif/* End of HalRf.h */ --- linux-raspi2-4.2.0.orig/drivers/net/wireless/rtl8192cu/include/rtl8192c_spec.h +++ linux-raspi2-4.2.0/drivers/net/wireless/rtl8192cu/include/rtl8192c_spec.h @@ -0,0 +1,1864 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved. + * + * 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 + * published by the Free Software Foundation. + * + * 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 Street, Fifth Floor, Boston, MA 02110, USA + * + * + ******************************************************************************/ +#ifndef __RTL8192C_SPEC_H__ +#define __RTL8192C_SPEC_H__ + +#include + +#ifndef BIT +#define BIT(x) (1 << (x)) +#endif + +#define BIT0 0x00000001 +#define BIT1 0x00000002 +#define BIT2 0x00000004 +#define BIT3 0x00000008 +#define BIT4 0x00000010 +#define BIT5 0x00000020 +#define BIT6 0x00000040 +#define BIT7 0x00000080 +#define BIT8 0x00000100 +#define BIT9 0x00000200 +#define BIT10 0x00000400 +#define BIT11 0x00000800 +#define BIT12 0x00001000 +#define BIT13 0x00002000 +#define BIT14 0x00004000 +#define BIT15 0x00008000 +#define BIT16 0x00010000 +#define BIT17 0x00020000 +#define BIT18 0x00040000 +#define BIT19 0x00080000 +#define BIT20 0x00100000 +#define BIT21 0x00200000 +#define BIT22 0x00400000 +#define BIT23 0x00800000 +#define BIT24 0x01000000 +#define BIT25 0x02000000 +#define BIT26 0x04000000 +#define BIT27 0x08000000 +#define BIT28 0x10000000 +#define BIT29 0x20000000 +#define BIT30 0x40000000 +#define BIT31 0x80000000 + + +//============================================================ +// 8192C Regsiter offset definition +//============================================================ + + +//============================================================ +// +//============================================================ + +//----------------------------------------------------- +// +// 0x0000h ~ 0x00FFh System Configuration +// +//----------------------------------------------------- +#define REG_SYS_ISO_CTRL 0x0000 +#define REG_SYS_FUNC_EN 0x0002 +#define REG_APS_FSMCO 0x0004 +#define REG_SYS_CLKR 0x0008 +#define REG_9346CR 0x000A +#define REG_EE_VPD 0x000C +#define REG_AFE_MISC 0x0010 +#define REG_SPS0_CTRL 0x0011 +#define REG_SPS_OCP_CFG 0x0018 +#define REG_RSV_CTRL 0x001C +#define REG_RF_CTRL 0x001F +#define REG_LDOA15_CTRL 0x0020 +#define REG_LDOV12D_CTRL 0x0021 +#define REG_LDOHCI12_CTRL 0x0022 +#define REG_LPLDO_CTRL 0x0023 +#define REG_AFE_XTAL_CTRL 0x0024 +#define REG_AFE_PLL_CTRL 0x0028 +#define REG_EFUSE_CTRL 0x0030 +#define REG_EFUSE_TEST 0x0034 +#define REG_PWR_DATA 0x0038 +#define REG_CAL_TIMER 0x003C +#define REG_ACLK_MON 0x003E +#define REG_GPIO_MUXCFG 0x0040 +#define REG_GPIO_IO_SEL 0x0042 +#define REG_MAC_PINMUX_CFG 0x0043 +#define REG_GPIO_PIN_CTRL 0x0044 +#define REG_GPIO_INTM 0x0048 +#define REG_LEDCFG0 0x004C +#define REG_LEDCFG1 0x004D +#define REG_LEDCFG2 0x004E +#define REG_LEDCFG3 0x004F +#define REG_LEDCFG REG_LEDCFG2 +#define REG_FSIMR 0x0050 +#define REG_FSISR 0x0054 +#define REG_HSIMR 0x0058 +#define REG_HSISR 0x005c +#define REG_GPIO_PIN_CTRL_2 0x0060 // RTL8723 WIFI/BT/GPS Multi-Function GPIO Pin Control. +#define REG_GPIO_IO_SEL_2 0x0062 // RTL8723 WIFI/BT/GPS Multi-Function GPIO Select. +#define REG_MULTI_FUNC_CTRL 0x0068 // RTL8723 WIFI/BT/GPS Multi-Function control source. +#define REG_MCUFWDL 0x0080 +#ifdef CONFIG_WOWLAN +#define REG_WOWLAN_REASON 0x0081 +#endif //CONFIG_WOWLAN +#define REG_HMEBOX_EXT_0 0x0088 +#define REG_HMEBOX_EXT_1 0x008A +#define REG_HMEBOX_EXT_2 0x008C +#define REG_HMEBOX_EXT_3 0x008E +#define REG_HOST_SUSP_CNT 0x00BC // Host suspend counter on FPGA platform +#define REG_EFUSE_ACCESS 0x00CF // Efuse access protection for RTL8723 +#define REG_BIST_SCAN 0x00D0 +#define REG_BIST_RPT 0x00D4 +#define REG_BIST_ROM_RPT 0x00D8 +#define REG_USB_SIE_INTF 0x00E0 +#define REG_PCIE_MIO_INTF 0x00E4 +#define REG_PCIE_MIO_INTD 0x00E8 +#define REG_HPON_FSM 0x00EC +#define REG_SYS_CFG 0x00F0 +#define REG_GPIO_OUTSTS 0x00F4 // For RTL8723 only. + +//----------------------------------------------------- +// +// 0x0100h ~ 0x01FFh MACTOP General Configuration +// +//----------------------------------------------------- +#define REG_CR 0x0100 +#define REG_PBP 0x0104 +#define REG_TRXDMA_CTRL 0x010C +#define REG_TRXFF_BNDY 0x0114 +#define REG_TRXFF_STATUS 0x0118 +#define REG_RXFF_PTR 0x011C +#define REG_HIMR 0x0120 +#define REG_HISR 0x0124 +#define REG_HIMRE 0x0128 +#define REG_HISRE 0x012C +#define REG_CPWM 0x012F +#define REG_FWIMR 0x0130 +#define REG_FWISR 0x0134 +#define REG_PKTBUF_DBG_CTRL 0x0140 +#define REG_PKTBUF_DBG_DATA_L 0x0144 +#define REG_PKTBUF_DBG_DATA_H 0x0148 + +#define REG_TC0_CTRL 0x0150 +#define REG_TC1_CTRL 0x0154 +#define REG_TC2_CTRL 0x0158 +#define REG_TC3_CTRL 0x015C +#define REG_TC4_CTRL 0x0160 +#define REG_TCUNIT_BASE 0x0164 +#define REG_MBIST_START 0x0174 +#define REG_MBIST_DONE 0x0178 +#define REG_MBIST_FAIL 0x017C +#define REG_C2HEVT_MSG_NORMAL 0x01A0 +#define REG_C2HEVT_CLEAR 0x01AF +#define REG_C2HEVT_MSG_TEST 0x01B8 +#define REG_MCUTST_1 0x01c0 +#define REG_FMETHR 0x01C8 +#define REG_HMETFR 0x01CC +#define REG_HMEBOX_0 0x01D0 +#define REG_HMEBOX_1 0x01D4 +#define REG_HMEBOX_2 0x01D8 +#define REG_HMEBOX_3 0x01DC + +#define REG_LLT_INIT 0x01E0 +#define REG_BB_ACCEESS_CTRL 0x01E8 +#define REG_BB_ACCESS_DATA 0x01EC + + +//----------------------------------------------------- +// +// 0x0200h ~ 0x027Fh TXDMA Configuration +// +//----------------------------------------------------- +#define REG_RQPN 0x0200 +#define REG_FIFOPAGE 0x0204 +#define REG_TDECTRL 0x0208 +#define REG_TXDMA_OFFSET_CHK 0x020C +#define REG_TXDMA_STATUS 0x0210 +#define REG_RQPN_NPQ 0x0214 + +//----------------------------------------------------- +// +// 0x0280h ~ 0x02FFh RXDMA Configuration +// +//----------------------------------------------------- +#define REG_RXDMA_AGG_PG_TH 0x0280 +#define REG_RXPKT_NUM 0x0284 +#define REG_RXDMA_STATUS 0x0288 + + +//----------------------------------------------------- +// +// 0x0300h ~ 0x03FFh PCIe +// +//----------------------------------------------------- +#define REG_PCIE_CTRL_REG 0x0300 +#define REG_INT_MIG 0x0304 // Interrupt Migration +#define REG_BCNQ_DESA 0x0308 // TX Beacon Descriptor Address +#define REG_HQ_DESA 0x0310 // TX High Queue Descriptor Address +#define REG_MGQ_DESA 0x0318 // TX Manage Queue Descriptor Address +#define REG_VOQ_DESA 0x0320 // TX VO Queue Descriptor Address +#define REG_VIQ_DESA 0x0328 // TX VI Queue Descriptor Address +#define REG_BEQ_DESA 0x0330 // TX BE Queue Descriptor Address +#define REG_BKQ_DESA 0x0338 // TX BK Queue Descriptor Address +#define REG_RX_DESA 0x0340 // RX Queue Descriptor Address +#define REG_DBI 0x0348 // Backdoor REG for Access Configuration +#define REG_MDIO 0x0354 // MDIO for Access PCIE PHY +#define REG_DBG_SEL 0x0360 // Debug Selection Register +#define REG_PCIE_HRPWM 0x0361 //PCIe RPWM +#define REG_PCIE_HCPWM 0x0363 //PCIe CPWM +#define REG_UART_CTRL 0x0364 // UART Control +#define REG_UART_TX_DESA 0x0370 // UART TX Descriptor Address +#define REG_UART_RX_DESA 0x0378 // UART Rx Descriptor Address + + +// spec version 11 +//----------------------------------------------------- +// +// 0x0400h ~ 0x047Fh Protocol Configuration +// +//----------------------------------------------------- +#define REG_VOQ_INFORMATION 0x0400 +#define REG_VIQ_INFORMATION 0x0404 +#define REG_BEQ_INFORMATION 0x0408 +#define REG_BKQ_INFORMATION 0x040C +#define REG_MGQ_INFORMATION 0x0410 +#define REG_HGQ_INFORMATION 0x0414 +#define REG_BCNQ_INFORMATION 0x0418 + + +#define REG_CPU_MGQ_INFORMATION 0x041C +#define REG_FWHW_TXQ_CTRL 0x0420 +#define REG_HWSEQ_CTRL 0x0423 +#define REG_TXPKTBUF_BCNQ_BDNY 0x0424 +#define REG_TXPKTBUF_MGQ_BDNY 0x0425 +#define REG_LIFETIME_EN 0x0426 +#define REG_MULTI_BCNQ_OFFSET 0x0427 +#define REG_SPEC_SIFS 0x0428 +#define REG_RL 0x042A +#define REG_DARFRC 0x0430 +#define REG_RARFRC 0x0438 +#define REG_RRSR 0x0440 +#define REG_ARFR0 0x0444 +#define REG_ARFR1 0x0448 +#define REG_ARFR2 0x044C +#define REG_ARFR3 0x0450 +#define REG_AGGLEN_LMT 0x0458 +#define REG_AMPDU_MIN_SPACE 0x045C +#define REG_TXPKTBUF_WMAC_LBK_BF_HD 0x045D +#define REG_FAST_EDCA_CTRL 0x0460 +#define REG_RD_RESP_PKT_TH 0x0463 +#define REG_INIRTS_RATE_SEL 0x0480 +#define REG_INIDATA_RATE_SEL 0x0484 + +//#define REG_FW_TSF_SYNC_CNT 0x04A0 +#define REG_FW_RESET_TSF_CNT_1 0x05FC +#define REG_FW_RESET_TSF_CNT_0 0x05FD +#define REG_FW_BCN_DIS_CNT 0x05FE + +#define REG_POWER_STATUS 0x04A4 +#define REG_POWER_STAGE1 0x04B4 +#define REG_POWER_STAGE2 0x04B8 +#define REG_PKT_VO_VI_LIFE_TIME 0x04C0 +#define REG_PKT_BE_BK_LIFE_TIME 0x04C2 +#define REG_STBC_SETTING 0x04C4 +#define REG_PROT_MODE_CTRL 0x04C8 +#define REG_MAX_AGGR_NUM 0x04CA +#define REG_RTS_MAX_AGGR_NUM 0x04CB +#define REG_BAR_MODE_CTRL 0x04CC +#define REG_RA_TRY_RATE_AGG_LMT 0x04CF +#define REG_NQOS_SEQ 0x04DC +#define REG_QOS_SEQ 0x04DE +#define REG_NEED_CPU_HANDLE 0x04E0 +#define REG_PKT_LOSE_RPT 0x04E1 +#define REG_PTCL_ERR_STATUS 0x04E2 +#define REG_DUMMY 0x04FC + + + +//----------------------------------------------------- +// +// 0x0500h ~ 0x05FFh EDCA Configuration +// +//----------------------------------------------------- +#define REG_EDCA_VO_PARAM 0x0500 +#define REG_EDCA_VI_PARAM 0x0504 +#define REG_EDCA_BE_PARAM 0x0508 +#define REG_EDCA_BK_PARAM 0x050C +#define REG_BCNTCFG 0x0510 +#define REG_PIFS 0x0512 +#define REG_RDG_PIFS 0x0513 +#define REG_SIFS_CCK 0x0514 +#define REG_SIFS_OFDM 0x0516 +#define REG_SIFS_CTX 0x0514 +#define REG_SIFS_TRX 0x0516 +#define REG_TSFTR_SYN_OFFSET 0x0518 +#define REG_AGGR_BREAK_TIME 0x051A +#define REG_SLOT 0x051B +#define REG_TX_PTCL_CTRL 0x0520 +#define REG_TXPAUSE 0x0522 +#define REG_DIS_TXREQ_CLR 0x0523 +#define REG_RD_CTRL 0x0524 +#define REG_TBTT_PROHIBIT 0x0540 +#define REG_RD_NAV_NXT 0x0544 +#define REG_NAV_PROT_LEN 0x0546 +#define REG_BCN_CTRL 0x0550 +#define REG_BCN_CTRL_1 0x0551 +#define REG_MBID_NUM 0x0552 +#define REG_DUAL_TSF_RST 0x0553 +#define REG_BCN_INTERVAL 0x0554 // The same as REG_MBSSID_BCN_SPACE +#define REG_MBSSID_BCN_SPACE 0x0554 +#define REG_DRVERLYINT 0x0558 +#define REG_BCNDMATIM 0x0559 +#define REG_ATIMWND 0x055A +#define REG_BCN_MAX_ERR 0x055D +#define REG_RXTSF_OFFSET_CCK 0x055E +#define REG_RXTSF_OFFSET_OFDM 0x055F +#define REG_TSFTR 0x0560 +#define REG_TSFTR1 0x0568 +#define REG_INIT_TSFTR 0x0564 +#define REG_ATIMWND_1 0x0570 +#define REG_PSTIMER 0x0580 +#define REG_TIMER0 0x0584 +#define REG_TIMER1 0x0588 +#define REG_ACMHWCTRL 0x05C0 +#define REG_ACMRSTCTRL 0x05C1 +#define REG_ACMAVG 0x05C2 +#define REG_VO_ADMTIME 0x05C4 +#define REG_VI_ADMTIME 0x05C6 +#define REG_BE_ADMTIME 0x05C8 +#define REG_EDCA_RANDOM_GEN 0x05CC +#define REG_SCH_TXCMD 0x05D0 + + +//----------------------------------------------------- +// +// 0x0600h ~ 0x07FFh WMAC Configuration +// +//----------------------------------------------------- +#define REG_APSD_CTRL 0x0600 +#define REG_BWOPMODE 0x0603 +#define REG_TCR 0x0604 +#define REG_RCR 0x0608 +#define REG_RX_PKT_LIMIT 0x060C +#define REG_RX_DLK_TIME 0x060D +#define REG_RX_DRVINFO_SZ 0x060F + +#define REG_MACID 0x0610 +#define REG_BSSID 0x0618 +#define REG_MAR 0x0620 +#define REG_MBIDCAMCFG 0x0628 + +#define REG_USTIME_EDCA 0x0638 +#define REG_MAC_SPEC_SIFS 0x063A + +// 20100719 Joseph: Hardware register definition change. (HW datasheet v54) +#define REG_R2T_SIFS 0x063C // [15:8]SIFS_R2T_OFDM, [7:0]SIFS_R2T_CCK +#define REG_T2T_SIFS 0x063E // [15:8]SIFS_T2T_OFDM, [7:0]SIFS_T2T_CCK +#define REG_ACKTO 0x0640 +#define REG_CTS2TO 0x0641 +#define REG_EIFS 0x0642 + +//WMA, BA, CCX +#define REG_NAV_CTRL 0x0650 +#define REG_BACAMCMD 0x0654 +#define REG_BACAMCONTENT 0x0658 +#define REG_LBDLY 0x0660 +#define REG_FWDLY 0x0661 +#define REG_RXERR_RPT 0x0664 +#define REG_WMAC_TRXPTCL_CTL 0x0668 + + +// Security +#define REG_CAMCMD 0x0670 +#define REG_CAMWRITE 0x0674 +#define REG_CAMREAD 0x0678 +#define REG_CAMDBG 0x067C +#define REG_SECCFG 0x0680 + +// Power +#define REG_WOW_CTRL 0x0690 +#define REG_PSSTATUS 0x0691 +#define REG_PS_RX_INFO 0x0692 +#define REG_LPNAV_CTRL 0x0694 +#define REG_WKFMCAM_CMD 0x0698 +#define REG_WKFMCAM_RWD 0x069C +#define REG_RXFLTMAP0 0x06A0 +#define REG_RXFLTMAP1 0x06A2 +#define REG_RXFLTMAP2 0x06A4 +#define REG_BCN_PSR_RPT 0x06A8 +#define REG_CALB32K_CTRL 0x06AC +#define REG_PKT_MON_CTRL 0x06B4 +#define REG_BT_COEX_TABLE 0x06C0 +#define REG_WMAC_RESP_TXINFO 0x06D8 + +#define REG_MACID1 0x0700 +#define REG_BSSID1 0x0708 + + +//----------------------------------------------------- +// +// 0xFE00h ~ 0xFE55h USB Configuration +// +//----------------------------------------------------- +#define REG_USB_INFO 0xFE17 +#define REG_USB_SPECIAL_OPTION 0xFE55 +#define REG_USB_DMA_AGG_TO 0xFE5B +#define REG_USB_AGG_TO 0xFE5C +#define REG_USB_AGG_TH 0xFE5D + +// For test chip +#define REG_TEST_USB_TXQS 0xFE48 +#define REG_TEST_SIE_VID 0xFE60 // 0xFE60~0xFE61 +#define REG_TEST_SIE_PID 0xFE62 // 0xFE62~0xFE63 +#define REG_TEST_SIE_OPTIONAL 0xFE64 +#define REG_TEST_SIE_CHIRP_K 0xFE65 +#define REG_TEST_SIE_PHY 0xFE66 // 0xFE66~0xFE6B +#define REG_TEST_SIE_MAC_ADDR 0xFE70 // 0xFE70~0xFE75 +#define REG_TEST_SIE_STRING 0xFE80 // 0xFE80~0xFEB9 + + +// For normal chip +#define REG_NORMAL_SIE_VID 0xFE60 // 0xFE60~0xFE61 +#define REG_NORMAL_SIE_PID 0xFE62 // 0xFE62~0xFE63 +#define REG_NORMAL_SIE_OPTIONAL 0xFE64 +#define REG_NORMAL_SIE_EP 0xFE65 // 0xFE65~0xFE67 +#define REG_NORMAL_SIE_PHY 0xFE68 // 0xFE68~0xFE6B +#define REG_NORMAL_SIE_OPTIONAL2 0xFE6C +#define REG_NORMAL_SIE_GPS_EP 0xFE6D // 0xFE6D, for RTL8723 only. +#define REG_NORMAL_SIE_MAC_ADDR 0xFE70 // 0xFE70~0xFE75 +#define REG_NORMAL_SIE_STRING 0xFE80 // 0xFE80~0xFEDF + + +//----------------------------------------------------- +// +// Redifine 8192C register definition for compatibility +// +//----------------------------------------------------- + +// TODO: use these definition when using REG_xxx naming rule. +// NOTE: DO NOT Remove these definition. Use later. + +#define SYS_ISO_CTRL REG_SYS_ISO_CTRL // System Isolation Interface Control. +#define SYS_FUNC_EN REG_SYS_FUNC_EN // System Function Enable. +#define SYS_CLK REG_SYS_CLKR +#define CR9346 REG_9346CR // 93C46/93C56 Command Register. +#define EFUSE_CTRL REG_EFUSE_CTRL // E-Fuse Control. +#define EFUSE_TEST REG_EFUSE_TEST // E-Fuse Test. +#define MSR (REG_CR + 2) // Media Status register +#define ISR REG_HISR +#define TSFR REG_TSFTR // Timing Sync Function Timer Register. + +#define MACIDR0 REG_MACID // MAC ID Register, Offset 0x0050-0x0053 +#define MACIDR4 (REG_MACID + 4) // MAC ID Register, Offset 0x0054-0x0055 + +#define PBP REG_PBP + +// Redifine MACID register, to compatible prior ICs. +#define IDR0 MACIDR0 +#define IDR4 MACIDR4 + + +// +// 9. Security Control Registers (Offset: ) +// +#define RWCAM REG_CAMCMD //IN 8190 Data Sheet is called CAMcmd +#define WCAMI REG_CAMWRITE // Software write CAM input content +#define RCAMO REG_CAMREAD // Software read/write CAM config +#define CAMDBG REG_CAMDBG +#define SECR REG_SECCFG //Security Configuration Register + +// Unused register +#define UnusedRegister 0x1BF +#define DCAM UnusedRegister +#define PSR UnusedRegister +#define BBAddr UnusedRegister +#define PhyDataR UnusedRegister + +#define InvalidBBRFValue 0x12345678 + +// Min Spacing related settings. +#define MAX_MSS_DENSITY_2T 0x13 +#define MAX_MSS_DENSITY_1T 0x0A + +//---------------------------------------------------------------------------- +// 8192C Cmd9346CR bits (Offset 0xA, 16bit) +//---------------------------------------------------------------------------- +#define CmdEEPROM_En BIT5 // EEPROM enable when set 1 +#define CmdEERPOMSEL BIT4 // System EEPROM select, 0: boot from E-FUSE, 1: The EEPROM used is 9346 +#define Cmd9346CR_9356SEL BIT4 +#define AutoLoadEEPROM (CmdEEPROM_En|CmdEERPOMSEL) +#define AutoLoadEFUSE CmdEEPROM_En + +//---------------------------------------------------------------------------- +// 8192C GPIO MUX Configuration Register (offset 0x40, 4 byte) +//---------------------------------------------------------------------------- +#define GPIOSEL_GPIO 0 +#define GPIOSEL_ENBT BIT5 + +//---------------------------------------------------------------------------- +// 8192C GPIO PIN Control Register (offset 0x44, 4 byte) +//---------------------------------------------------------------------------- +#define GPIO_IN REG_GPIO_PIN_CTRL // GPIO pins input value +#define GPIO_OUT (REG_GPIO_PIN_CTRL+1) // GPIO pins output value +#define GPIO_IO_SEL (REG_GPIO_PIN_CTRL+2) // GPIO pins output enable when a bit is set to "1"; otherwise, input is configured. +#define GPIO_MOD (REG_GPIO_PIN_CTRL+3) + +//---------------------------------------------------------------------------- +// 8192C (MSR) Media Status Register (Offset 0x4C, 8 bits) +//---------------------------------------------------------------------------- +/* +Network Type +00: No link +01: Link in ad hoc network +10: Link in infrastructure network +11: AP mode +Default: 00b. +*/ +#define MSR_NOLINK 0x00 +#define MSR_ADHOC 0x01 +#define MSR_INFRA 0x02 +#define MSR_AP 0x03 + +// +// 6. Adaptive Control Registers (Offset: 0x0160 - 0x01CF) +// +//---------------------------------------------------------------------------- +// 8192C Response Rate Set Register (offset 0x181, 24bits) +//---------------------------------------------------------------------------- +#define RRSR_RSC_OFFSET 21 +#define RRSR_SHORT_OFFSET 23 +#define RRSR_RSC_BW_40M 0x600000 +#define RRSR_RSC_UPSUBCHNL 0x400000 +#define RRSR_RSC_LOWSUBCHNL 0x200000 +#define RRSR_SHORT 0x800000 +#define RRSR_1M BIT0 +#define RRSR_2M BIT1 +#define RRSR_5_5M BIT2 +#define RRSR_11M BIT3 +#define RRSR_6M BIT4 +#define RRSR_9M BIT5 +#define RRSR_12M BIT6 +#define RRSR_18M BIT7 +#define RRSR_24M BIT8 +#define RRSR_36M BIT9 +#define RRSR_48M BIT10 +#define RRSR_54M BIT11 +#define RRSR_MCS0 BIT12 +#define RRSR_MCS1 BIT13 +#define RRSR_MCS2 BIT14 +#define RRSR_MCS3 BIT15 +#define RRSR_MCS4 BIT16 +#define RRSR_MCS5 BIT17 +#define RRSR_MCS6 BIT18 +#define RRSR_MCS7 BIT19 +#define BRSR_AckShortPmb BIT23 +// CCK ACK: use Short Preamble or not + + +//---------------------------------------------------------------------------- +// 8192C Rate Definition +//---------------------------------------------------------------------------- +//CCK +#define RATR_1M 0x00000001 +#define RATR_2M 0x00000002 +#define RATR_55M 0x00000004 +#define RATR_11M 0x00000008 +//OFDM +#define RATR_6M 0x00000010 +#define RATR_9M 0x00000020 +#define RATR_12M 0x00000040 +#define RATR_18M 0x00000080 +#define RATR_24M 0x00000100 +#define RATR_36M 0x00000200 +#define RATR_48M 0x00000400 +#define RATR_54M 0x00000800 +//MCS 1 Spatial Stream +#define RATR_MCS0 0x00001000 +#define RATR_MCS1 0x00002000 +#define RATR_MCS2 0x00004000 +#define RATR_MCS3 0x00008000 +#define RATR_MCS4 0x00010000 +#define RATR_MCS5 0x00020000 +#define RATR_MCS6 0x00040000 +#define RATR_MCS7 0x00080000 +//MCS 2 Spatial Stream +#define RATR_MCS8 0x00100000 +#define RATR_MCS9 0x00200000 +#define RATR_MCS10 0x00400000 +#define RATR_MCS11 0x00800000 +#define RATR_MCS12 0x01000000 +#define RATR_MCS13 0x02000000 +#define RATR_MCS14 0x04000000 +#define RATR_MCS15 0x08000000 + +//---------------------------------------------------------------------------- +// 8192C BW_OPMODE bits (Offset 0x203, 8bit) +//---------------------------------------------------------------------------- +#define BW_OPMODE_20MHZ BIT2 +#define BW_OPMODE_5G BIT1 +#define BW_OPMODE_11J BIT0 + + +//---------------------------------------------------------------------------- +// 8192C CAM Config Setting (offset 0x250, 1 byte) +//---------------------------------------------------------------------------- +#define CAM_VALID BIT15 +#define CAM_NOTVALID 0x0000 +#define CAM_USEDK BIT5 + +#define CAM_CONTENT_COUNT 8 + +#define CAM_NONE 0x0 +#define CAM_WEP40 0x01 +#define CAM_TKIP 0x02 +#define CAM_AES 0x04 +#define CAM_WEP104 0x05 + +#define TOTAL_CAM_ENTRY 32 +#define HALF_CAM_ENTRY 16 + +#define CAM_CONFIG_USEDK _TRUE +#define CAM_CONFIG_NO_USEDK _FALSE + +#define CAM_WRITE BIT16 +#define CAM_READ 0x00000000 +#define CAM_POLLINIG BIT31 + +#define SCR_UseDK 0x01 +#define SCR_TxSecEnable 0x02 +#define SCR_RxSecEnable 0x04 + + +// +// 12. Host Interrupt Status Registers (Offset: 0x0300 - 0x030F) +// +//---------------------------------------------------------------------------- +// 8190 IMR/ISR bits (offset 0xfd, 8bits) +//---------------------------------------------------------------------------- +#define IMR8190_DISABLED 0x0 +// IMR DW0 Bit 0-31 +#define IMR_BCNDMAINT6 BIT31 // Beacon DMA Interrupt 6 +#define IMR_BCNDMAINT5 BIT30 // Beacon DMA Interrupt 5 +#define IMR_BCNDMAINT4 BIT29 // Beacon DMA Interrupt 4 +#define IMR_BCNDMAINT3 BIT28 // Beacon DMA Interrupt 3 +#define IMR_BCNDMAINT2 BIT27 // Beacon DMA Interrupt 2 +#define IMR_BCNDMAINT1 BIT26 // Beacon DMA Interrupt 1 +#define IMR_BCNDOK8 BIT25 // Beacon Queue DMA OK Interrup 8 +#define IMR_BCNDOK7 BIT24 // Beacon Queue DMA OK Interrup 7 +#define IMR_BCNDOK6 BIT23 // Beacon Queue DMA OK Interrup 6 +#define IMR_BCNDOK5 BIT22 // Beacon Queue DMA OK Interrup 5 +#define IMR_BCNDOK4 BIT21 // Beacon Queue DMA OK Interrup 4 +#define IMR_BCNDOK3 BIT20 // Beacon Queue DMA OK Interrup 3 +#define IMR_BCNDOK2 BIT19 // Beacon Queue DMA OK Interrup 2 +#define IMR_BCNDOK1 BIT18 // Beacon Queue DMA OK Interrup 1 +#define IMR_TIMEOUT2 BIT17 // Timeout interrupt 2 +#define IMR_TIMEOUT1 BIT16 // Timeout interrupt 1 +#define IMR_TXFOVW BIT15 // Transmit FIFO Overflow +#define IMR_PSTIMEOUT BIT14 // Power save time out interrupt +#define IMR_BcnInt BIT13 // Beacon DMA Interrupt 0 +#define IMR_RXFOVW BIT12 // Receive FIFO Overflow +#define IMR_RDU BIT11 // Receive Descriptor Unavailable +#define IMR_ATIMEND BIT10 // For 92C,ATIM Window End Interrupt +#define IMR_BDOK BIT9 // Beacon Queue DMA OK Interrup +#define IMR_HIGHDOK BIT8 // High Queue DMA OK Interrupt +#define IMR_TBDOK BIT7 // Transmit Beacon OK interrup +#define IMR_MGNTDOK BIT6 // Management Queue DMA OK Interrupt +#define IMR_TBDER BIT5 // For 92C,Transmit Beacon Error Interrupt +#define IMR_BKDOK BIT4 // AC_BK DMA OK Interrupt +#define IMR_BEDOK BIT3 // AC_BE DMA OK Interrupt +#define IMR_VIDOK BIT2 // AC_VI DMA OK Interrupt +#define IMR_VODOK BIT1 // AC_VO DMA Interrupt +#define IMR_ROK BIT0 // Receive DMA OK Interrupt + +#define IMR_RX_MASK (IMR_ROK|IMR_RDU|IMR_RXFOVW) +#define IMR_TX_MASK (IMR_VODOK|IMR_VIDOK|IMR_BEDOK|IMR_BKDOK|IMR_MGNTDOK|IMR_HIGHDOK|IMR_BDOK) + +// 13. Host Interrupt Status Extension Register (Offset: 0x012C-012Eh) +#define IMR_BcnInt_E BIT12 +#define IMR_TXERR BIT11 +#define IMR_RXERR BIT10 +#define IMR_C2HCMD BIT9 +#define IMR_CPWM BIT8 +//RSVD [2-7] +#define IMR_OCPINT BIT1 +#define IMR_WLANOFF BIT0 + + + +//---------------------------------------------------------------------------- +// 8192C EFUSE +//---------------------------------------------------------------------------- +#define HWSET_MAX_SIZE 128 + + +//---------------------------------------------------------------------------- +// 8192C EEPROM/EFUSE share register definition. +//---------------------------------------------------------------------------- + +// +// Default Value for EEPROM or EFUSE!!! +// +#define EEPROM_Default_TSSI 0x0 +#define EEPROM_Default_TxPowerDiff 0x0 +#define EEPROM_Default_CrystalCap 0x5 +#define EEPROM_Default_BoardType 0x02 // Default: 2X2, RTL8192CE(QFPN68) +#define EEPROM_Default_TxPower 0x1010 +#define EEPROM_Default_HT2T_TxPwr 0x10 + +#define EEPROM_Default_LegacyHTTxPowerDiff 0x3 +#define EEPROM_Default_ThermalMeter 0x12 + +#define EEPROM_Default_AntTxPowerDiff 0x0 +#define EEPROM_Default_TxPwDiff_CrystalCap 0x5 +#define EEPROM_Default_TxPowerLevel 0x22 +#define EEPROM_Default_HT40_2SDiff 0x0 +#define EEPROM_Default_HT20_Diff 2 // HT20<->40 default Tx Power Index Difference +#define EEPROM_Default_LegacyHTTxPowerDiff 0x3 +#define EEPROM_Default_HT40_PwrMaxOffset 0 +#define EEPROM_Default_HT20_PwrMaxOffset 0 + +// For debug +#define EEPROM_Default_PID 0x1234 +#define EEPROM_Default_VID 0x5678 +#define EEPROM_Default_CustomerID 0xAB +#define EEPROM_Default_SubCustomerID 0xCD +#define EEPROM_Default_Version 0 + +#define EEPROM_CHANNEL_PLAN_FCC 0x0 +#define EEPROM_CHANNEL_PLAN_IC 0x1 +#define EEPROM_CHANNEL_PLAN_ETSI 0x2 +#define EEPROM_CHANNEL_PLAN_SPAIN 0x3 +#define EEPROM_CHANNEL_PLAN_FRANCE 0x4 +#define EEPROM_CHANNEL_PLAN_MKK 0x5 +#define EEPROM_CHANNEL_PLAN_MKK1 0x6 +#define EEPROM_CHANNEL_PLAN_ISRAEL 0x7 +#define EEPROM_CHANNEL_PLAN_TELEC 0x8 +#define EEPROM_CHANNEL_PLAN_GLOBAL_DOMAIN 0x9 +#define EEPROM_CHANNEL_PLAN_WORLD_WIDE_13 0xA +#define EEPROM_CHANNEL_PLAN_NCC 0xB +#define EEPROM_USB_OPTIONAL1 0xE +#define EEPROM_CHANNEL_PLAN_BY_HW_MASK 0x80 + + +#define EEPROM_CID_DEFAULT 0x0 +#define EEPROM_CID_TOSHIBA 0x4 +#define EEPROM_CID_CCX 0x10 // CCX test. By Bruce, 2009-02-25. +#define EEPROM_CID_QMI 0x0D +#define EEPROM_CID_WHQL 0xFE // added by chiyoko for dtm, 20090108 + + +#define RTL_EEPROM_ID 0x8129 + + +#ifdef CONFIG_PCI_HCI +#define RT_IBSS_INT_MASKS (IMR_BcnInt | IMR_TBDOK | IMR_TBDER) +#define RT_AC_INT_MASKS (IMR_VIDOK | IMR_VODOK | IMR_BEDOK|IMR_BKDOK) +#define RT_BSS_INT_MASKS (RT_IBSS_INT_MASKS) + +// +// Interface type. +// +typedef enum _INTERFACE_SELECT_8192CPCIe{ + INTF_SEL0_SOLO_MINICARD = 0, // WiFi solo-mCard + INTF_SEL1_BT_COMBO_MINICARD = 1, // WiFi+BT combo-mCard + INTF_SEL2_PCIe = 2, // PCIe Card +} INTERFACE_SELECT_8192CPCIe, *PINTERFACE_SELECT_8192CPCIe; + +#define RTL8190_EEPROM_ID 0x8129 // 0-1 +#define EEPROM_HPON 0x02 // LDO settings.2-5 +#define EEPROM_CLK 0x06 // Clock settings.6-7 +#define EEPROM_TESTR 0x08 // SE Test mode.8 + +#define EEPROM_VID 0x0A // SE Vendor ID.A-B +#define EEPROM_DID 0x0C // SE Device ID. C-D +#define EEPROM_SVID 0x0E // SE Vendor ID.E-F +#define EEPROM_SMID 0x10 // SE PCI Subsystem ID. 10-11 + +#define EEPROM_MAC_ADDR 0x16 // SEMAC Address. 12-17 + +//---------------------------------------------------------------- +// Ziv - Let PCIe and USB use the same define. Modify address mapping later. +#define EEPROM_CCK_TX_PWR_INX 0x5A +#define EEPROM_HT40_1S_TX_PWR_INX 0x60 +#define EEPROM_HT40_2S_TX_PWR_INX_DIFF 0x66 +#define EEPROM_HT20_TX_PWR_INX_DIFF 0x69 +#define EEPROM_OFDM_TX_PWR_INX_DIFF 0x6C +#define EEPROM_HT40_MAX_PWR_OFFSET 0x6F +#define EEPROM_HT20_MAX_PWR_OFFSET 0x72 + +#define EEPROM_CHANNEL_PLAN 0x75 +#define EEPROM_TSSI_A 0x76 +#define EEPROM_TSSI_B 0x77 +#define EEPROM_THERMAL_METER 0x78 +#define EEPROM_RF_OPT1 0x79 +#define EEPROM_RF_OPT2 0x7A +#define EEPROM_RF_OPT3 0x7B +#define EEPROM_RF_OPT4 0x7C +#define EEPROM_VERSION 0x7E +#define EEPROM_CUSTOMER_ID 0x7F + +#define EEPROM_NORMAL_BoardType EEPROM_RF_OPT1 //[7:5] + +#endif + +#ifdef CONFIG_USB_HCI + +//should be renamed and moved to another file +typedef enum _BOARD_TYPE_8192CUSB{ + BOARD_USB_DONGLE = 0, // USB dongle + BOARD_USB_High_PA = 1, // USB dongle with high power PA + BOARD_MINICARD = 2, // Minicard + BOARD_USB_SOLO = 3, // USB solo-Slim module + BOARD_USB_COMBO = 4, // USB Combo-Slim module +} BOARD_TYPE_8192CUSB, *PBOARD_TYPE_8192CUSB; + +#define SUPPORT_HW_RADIO_DETECT(pHalData) (pHalData->BoardType == BOARD_MINICARD||\ + pHalData->BoardType == BOARD_USB_SOLO||\ + pHalData->BoardType == BOARD_USB_COMBO) + +//--------------------------------------------------------------- +// EEPROM address for Test chip +//--------------------------------------------------------------- +#define EEPROM_TEST_USB_OPT 0x0E +#define EEPROM_TEST_CHIRP_K 0x0F +#define EEPROM_TEST_EP_SETTING 0x0E +#define EEPROM_TEST_USB_PHY 0x10 + + +//--------------------------------------------------------------- +// EEPROM address for Normal chip +//--------------------------------------------------------------- +#define EEPROM_NORMAL_USB_OPT 0x0E +#define EEPROM_NORMAL_CHIRP_K 0x0E // Changed +#define EEPROM_NORMAL_EP_SETTING 0x0F // Changed +#define EEPROM_NORMAL_USB_PHY 0x12 // Changed + + +// Test chip and normal chip common define +//--------------------------------------------------------------- +// EEPROM address for both +//--------------------------------------------------------------- +#define EEPROM_ID0 0x00 +#define EEPROM_ID1 0x01 +#define EEPROM_RTK_RSV1 0x02 +#define EEPROM_RTK_RSV2 0x03 +#define EEPROM_RTK_RSV3 0x04 +#define EEPROM_RTK_RSV4 0x05 +#define EEPROM_RTK_RSV5 0x06 +#define EEPROM_DBG_SEL 0x07 +#define EEPROM_RTK_RSV6 0x08 +#define EEPROM_VID 0x0A +#define EEPROM_PID 0x0C + +#define EEPROM_MAC_ADDR 0x16 +#define EEPROM_STRING 0x1C +#define EEPROM_SUBCUSTOMER_ID 0x59 +#define EEPROM_CCK_TX_PWR_INX 0x5A +#define EEPROM_HT40_1S_TX_PWR_INX 0x60 +#define EEPROM_HT40_2S_TX_PWR_INX_DIFF 0x66 +#define EEPROM_HT20_TX_PWR_INX_DIFF 0x69 +#define EEPROM_OFDM_TX_PWR_INX_DIFF 0x6C +#define EEPROM_HT40_MAX_PWR_OFFSET 0x6F +#define EEPROM_HT20_MAX_PWR_OFFSET 0x72 + +#define EEPROM_CHANNEL_PLAN 0x75 +#define EEPROM_TSSI_A 0x76 +#define EEPROM_TSSI_B 0x77 +#define EEPROM_THERMAL_METER 0x78 +#define EEPROM_RF_OPT1 0x79 +#define EEPROM_RF_OPT2 0x7A +#define EEPROM_RF_OPT3 0x7B +#define EEPROM_RF_OPT4 0x7C +#define EEPROM_VERSION 0x7E +#define EEPROM_CUSTOMER_ID 0x7F + +#define EEPROM_BoardType 0x54 //0x0: RTL8188SU, 0x1: RTL8191SU, 0x2: RTL8192SU, 0x3: RTL8191GU +#define EEPROM_TxPwIndex 0x5C //0x5C-0x76, Tx Power index. +#define EEPROM_PwDiff 0x67 // Difference of gain index between legacy and high throughput OFDM. + +#define EEPROM_TxPowerCCK 0x5A // CCK Tx Power + +// 2009/02/09 Cosa Add for SD3 requirement +#define EEPROM_TX_PWR_HT20_DIFF 0x6e// HT20 Tx Power Index Difference +#define DEFAULT_HT20_TXPWR_DIFF 2 // HT20<->40 default Tx Power Index Difference +#define EEPROM_TX_PWR_OFDM_DIFF 0x71// OFDM Tx Power Index Difference + +#define EEPROM_TxPWRGroup 0x73// Power diff for channel group +#define EEPROM_Regulatory 0x79// Check if power safety is need + +#define EEPROM_BLUETOOTH_COEXIST 0x7E // 92cu, 0x7E[4] +#define EEPROM_NORMAL_BoardType EEPROM_RF_OPT1 //[7:5] +#define BOARD_TYPE_NORMAL_MASK 0xE0 +#define BOARD_TYPE_TEST_MASK 0x0F +#define EEPROM_EASY_REPLACEMENT 0x50//BIT0 1 for build-in module, 0 for external dongle +//------------------------------------------------------------- +// EEPROM content definitions +//------------------------------------------------------------- +#define OS_LINK_SPEED BIT(5) + +#define BOARD_TYPE_MASK 0xF + +#define BT_COEXISTENCE BIT(4) +#define BT_CO_SHIFT 4 + +#define EP_NUMBER_MASK 0x30 //bit 4:5 0Eh +#define EP_NUMBER_SHIFT 4 + + +#define USB_PHY_PARA_SIZE 5 + + +//------------------------------------------------------------- +// EEPROM default value definitions +//------------------------------------------------------------- +// Use 0xABCD instead of 0x8192 for debug +#define EEPROM_DEF_ID_0 0xCD // Byte 0x00 +#define EEPROM_DEF_ID_1 0xAB // Byte 0x01 + +#define EEPROM_DEF_RTK_RSV_A3 0x74 // Byte 0x03 +#define EEPROM_DEF_RTK_RSV_A4 0x6D // Byte 0x04 +#define EEPROM_DEF_RTK_RSV_A8 0xFF // Byte 0x08 + +#define EEPROM_DEF_VID_0 0x0A // Byte 0x0A +#define EEPROM_DEF_VID_1 0x0B + +#define EEPROM_DEF_PID_0 0x92 // Byte 0x0C +#define EEPROM_DEF_PID_1 0x81 + + +#define EEPROM_TEST_DEF_USB_OPT 0x80 // Byte 0x0E +#define EEPROM_NORMAL_DEF_USB_OPT 0x00 // Byte 0x0E + +#define EEPROM_DEF_CHIRPK 0x15 // Byte 0x0F + +#define EEPROM_DEF_USB_PHY_0 0x85 // Byte 0x10 +#define EEPROM_DEF_USB_PHY_1 0x62 // Byte 0x11 +#define EEPROM_DEF_USB_PHY_2 0x9E // Byte 0x12 +#define EEPROM_DEF_USB_PHY_3 0x06 // Byte 0x13 + +#define EEPROM_DEF_TSSI_A 0x09 // Byte 0x78 +#define EEPROM_DEF_TSSI_B 0x09 // Byte 0x79 + + +#define EEPROM_DEF_THERMAL_METER 0x12 // Byte 0x7A + +#define RF_OPTION1 0x79// Check if power safety spec is need +#define RF_OPTION2 0x7A +#define RF_OPTION3 0x7B +#define RF_OPTION4 0x7C + + +#define EEPROM_USB_SN BIT(0) +#define EEPROM_USB_REMOTE_WAKEUP BIT(1) +#define EEPROM_USB_DEVICE_PWR BIT(2) +#define EEPROM_EP_NUMBER (BIT(3)|BIT(4)) + +#if 0 +#define EEPROM_CHANNEL_PLAN_FCC 0x0 +#define EEPROM_CHANNEL_PLAN_IC 0x1 +#define EEPROM_CHANNEL_PLAN_ETSI 0x2 +#define EEPROM_CHANNEL_PLAN_SPAIN 0x3 +#define EEPROM_CHANNEL_PLAN_FRANCE 0x4 +#define EEPROM_CHANNEL_PLAN_MKK 0x5 +#define EEPROM_CHANNEL_PLAN_MKK1 0x6 +#define EEPROM_CHANNEL_PLAN_ISRAEL 0x7 +#define EEPROM_CHANNEL_PLAN_TELEC 0x8 +#define EEPROM_CHANNEL_PLAN_GLOBAL_DOMAIN 0x9 +#define EEPROM_CHANNEL_PLAN_WORLD_WIDE_13 0xA +#define EEPROM_CHANNEL_PLAN_BY_HW_MASK 0x80 + +#define EEPROM_CID_DEFAULT 0x0 + +#define EEPROM_CID_WHQL 0xFE // added by chiyoko for dtm, 20090108 + + +#define EEPROM_CID_CCX 0x10 // CCX test. By Bruce, 2009-02-25. +#endif + +#endif + + +/*=================================================================== +===================================================================== +Here the register defines are for 92C. When the define is as same with 92C, +we will use the 92C's define for the consistency +So the following defines for 92C is not entire!!!!!! +===================================================================== +=====================================================================*/ +/* +Based on Datasheet V33---090401 +Register Summary +Current IOREG MAP +0x0000h ~ 0x00FFh System Configuration (256 Bytes) +0x0100h ~ 0x01FFh MACTOP General Configuration (256 Bytes) +0x0200h ~ 0x027Fh TXDMA Configuration (128 Bytes) +0x0280h ~ 0x02FFh RXDMA Configuration (128 Bytes) +0x0300h ~ 0x03FFh PCIE EMAC Reserved Region (256 Bytes) +0x0400h ~ 0x04FFh Protocol Configuration (256 Bytes) +0x0500h ~ 0x05FFh EDCA Configuration (256 Bytes) +0x0600h ~ 0x07FFh WMAC Configuration (512 Bytes) +0x2000h ~ 0x3FFFh 8051 FW Download Region (8196 Bytes) +*/ + +//---------------------------------------------------------------------------- +// 8192C (RCR) Receive Configuration Register (Offset 0x608, 32 bits) +//---------------------------------------------------------------------------- +#define RCR_APPFCS BIT31 //WMAC append FCS after pauload +#define RCR_APP_MIC BIT30 // +#define RCR_APP_PHYSTS BIT28// +#define RCR_APP_ICV BIT29 // +#define RCR_APP_PHYST_RXFF BIT28 // +#define RCR_APP_BA_SSN BIT27 //Accept BA SSN +#define RCR_ENMBID BIT24 //Enable Multiple BssId. +#define RCR_LSIGEN BIT23 +#define RCR_MFBEN BIT22 +#define RCR_HTC_LOC_CTRL BIT14 //MFC<--HTC=1 MFC-->HTC=0 +#define RCR_AMF BIT13 //Accept management type frame +#define RCR_ACF BIT12 //Accept control type frame +#define RCR_ADF BIT11 //Accept data type frame +#define RCR_AICV BIT9 //Accept ICV error packet +#define RCR_ACRC32 BIT8 //Accept CRC32 error packet +#define RCR_CBSSID_BCN BIT7 //Accept BSSID match packet (Rx beacon, probe rsp) +#define RCR_CBSSID_DATA BIT6 //Accept BSSID match packet (Data) +#define RCR_CBSSID RCR_CBSSID_DATA //Accept BSSID match packet +#define RCR_APWRMGT BIT5 //Accept power management packet +#define RCR_ADD3 BIT4 //Accept address 3 match packet +#define RCR_AB BIT3 //Accept broadcast packet +#define RCR_AM BIT2 //Accept multicast packet +#define RCR_APM BIT1 //Accept physical match packet +#define RCR_AAP BIT0 //Accept all unicast packet +#define RCR_MXDMA_OFFSET 8 +#define RCR_FIFO_OFFSET 13 + + + +//============================================================================ +// 8192c USB specific Regsiter Offset and Content definition, +// 2009.08.18, added by vivi. for merge 92c and 92C into one driver +//============================================================================ +//#define APS_FSMCO 0x0004 same with 92Ce +#define RSV_CTRL 0x001C +#define RD_CTRL 0x0524 + +//----------------------------------------------------- +// +// 0xFE00h ~ 0xFE55h USB Configuration +// +//----------------------------------------------------- +#define REG_USB_INFO 0xFE17 +#define REG_USB_SPECIAL_OPTION 0xFE55 +#define REG_USB_DMA_AGG_TO 0xFE5B +#define REG_USB_AGG_TO 0xFE5C +#define REG_USB_AGG_TH 0xFE5D + +#define REG_USB_VID 0xFE60 +#define REG_USB_PID 0xFE62 +#define REG_USB_OPTIONAL 0xFE64 +#define REG_USB_CHIRP_K 0xFE65 +#define REG_USB_PHY 0xFE66 +#define REG_USB_MAC_ADDR 0xFE70 + +#define REG_USB_HRPWM 0xFE58 +#define REG_USB_HCPWM 0xFE57 + +#define InvalidBBRFValue 0x12345678 + +//============================================================================ +// 8192C Regsiter Bit and Content definition +//============================================================================ +//----------------------------------------------------- +// +// 0x0000h ~ 0x00FFh System Configuration +// +//----------------------------------------------------- + +//2 SPS0_CTRL +#define SW18_FPWM BIT(3) + + +//2 SYS_ISO_CTRL +#define ISO_MD2PP BIT(0) +#define ISO_UA2USB BIT(1) +#define ISO_UD2CORE BIT(2) +#define ISO_PA2PCIE BIT(3) +#define ISO_PD2CORE BIT(4) +#define ISO_IP2MAC BIT(5) +#define ISO_DIOP BIT(6) +#define ISO_DIOE BIT(7) +#define ISO_EB2CORE BIT(8) +#define ISO_DIOR BIT(9) + +#define PWC_EV25V BIT(14) +#define PWC_EV12V BIT(15) + + +//2 SYS_FUNC_EN +#define FEN_BBRSTB BIT(0) +#define FEN_BB_GLB_RSTn BIT(1) +#define FEN_USBA BIT(2) +#define FEN_UPLL BIT(3) +#define FEN_USBD BIT(4) +#define FEN_DIO_PCIE BIT(5) +#define FEN_PCIEA BIT(6) +#define FEN_PPLL BIT(7) +#define FEN_PCIED BIT(8) +#define FEN_DIOE BIT(9) +#define FEN_CPUEN BIT(10) +#define FEN_DCORE BIT(11) +#define FEN_ELDR BIT(12) +#define FEN_DIO_RF BIT(13) +#define FEN_HWPDN BIT(14) +#define FEN_MREGEN BIT(15) + +//2 APS_FSMCO +#define PFM_LDALL BIT(0) +#define PFM_ALDN BIT(1) +#define PFM_LDKP BIT(2) +#define PFM_WOWL BIT(3) +#define EnPDN BIT(4) +#define PDN_PL BIT(5) +#define APFM_ONMAC BIT(8) +#define APFM_OFF BIT(9) +#define APFM_RSM BIT(10) +#define AFSM_HSUS BIT(11) +#define AFSM_PCIE BIT(12) +#define APDM_MAC BIT(13) +#define APDM_HOST BIT(14) +#define APDM_HPDN BIT(15) +#define RDY_MACON BIT(16) +#define SUS_HOST BIT(17) +#define ROP_ALD BIT(20) +#define ROP_PWR BIT(21) +#define ROP_SPS BIT(22) +#define SOP_MRST BIT(25) +#define SOP_FUSE BIT(26) +#define SOP_ABG BIT(27) +#define SOP_AMB BIT(28) +#define SOP_RCK BIT(29) +#define SOP_A8M BIT(30) +#define XOP_BTCK BIT(31) + +//2 SYS_CLKR +#define ANAD16V_EN BIT(0) +#define ANA8M BIT(1) +#define MACSLP BIT(4) +#define LOADER_CLK_EN BIT(5) +#define _80M_SSC_DIS BIT(7) +#define _80M_SSC_EN_HO BIT(8) +#define PHY_SSC_RSTB BIT(9) +#define SEC_CLK_EN BIT(10) +#define MAC_CLK_EN BIT(11) +#define SYS_CLK_EN BIT(12) +#define RING_CLK_EN BIT(13) + + +//2 9346CR + + +#define EEDO BIT(0) +#define EEDI BIT(1) +#define EESK BIT(2) +#define EECS BIT(3) +//#define EERPROMSEL BIT(4) +//#define EEPROM_EN BIT(5) +#define BOOT_FROM_EEPROM BIT(4) +#define EEPROM_EN BIT(5) +#define EEM0 BIT(6) +#define EEM1 BIT(7) + + +//2 AFE_MISC +#define AFE_BGEN BIT(0) +#define AFE_MBEN BIT(1) +#define MAC_ID_EN BIT(7) + + +//2 SPS0_CTRL + + +//2 SPS_OCP_CFG + + +//2 RSV_CTRL +#define WLOCK_ALL BIT(0) +#define WLOCK_00 BIT(1) +#define WLOCK_04 BIT(2) +#define WLOCK_08 BIT(3) +#define WLOCK_40 BIT(4) +#define R_DIS_PRST_0 BIT(5) +#define R_DIS_PRST_1 BIT(6) +#define LOCK_ALL_EN BIT(7) + +//2 RF_CTRL +#define RF_EN BIT(0) +#define RF_RSTB BIT(1) +#define RF_SDMRSTB BIT(2) + + + +//2 LDOA15_CTRL +#define LDA15_EN BIT(0) +#define LDA15_STBY BIT(1) +#define LDA15_OBUF BIT(2) +#define LDA15_REG_VOS BIT(3) +#define _LDA15_VOADJ(x) (((x) & 0x7) << 4) + + + +//2 LDOV12D_CTRL +#define LDV12_EN BIT(0) +#define LDV12_SDBY BIT(1) +#define LPLDO_HSM BIT(2) +#define LPLDO_LSM_DIS BIT(3) +#define _LDV12_VADJ(x) (((x) & 0xF) << 4) + + +//2 AFE_XTAL_CTRL +#define XTAL_EN BIT(0) +#define XTAL_BSEL BIT(1) +#define _XTAL_BOSC(x) (((x) & 0x3) << 2) +#define _XTAL_CADJ(x) (((x) & 0xF) << 4) +#define XTAL_GATE_USB BIT(8) +#define _XTAL_USB_DRV(x) (((x) & 0x3) << 9) +#define XTAL_GATE_AFE BIT(11) +#define _XTAL_AFE_DRV(x) (((x) & 0x3) << 12) +#define XTAL_RF_GATE BIT(14) +#define _XTAL_RF_DRV(x) (((x) & 0x3) << 15) +#define XTAL_GATE_DIG BIT(17) +#define _XTAL_DIG_DRV(x) (((x) & 0x3) << 18) +#define XTAL_BT_GATE BIT(20) +#define _XTAL_BT_DRV(x) (((x) & 0x3) << 21) +#define _XTAL_GPIO(x) (((x) & 0x7) << 23) + + +#define CKDLY_AFE BIT(26) +#define CKDLY_USB BIT(27) +#define CKDLY_DIG BIT(28) +#define CKDLY_BT BIT(29) + + +//2 AFE_PLL_CTRL +#define APLL_EN BIT(0) +#define APLL_320_EN BIT(1) +#define APLL_FREF_SEL BIT(2) +#define APLL_EDGE_SEL BIT(3) +#define APLL_WDOGB BIT(4) +#define APLL_LPFEN BIT(5) + +#define APLL_REF_CLK_13MHZ 0x1 +#define APLL_REF_CLK_19_2MHZ 0x2 +#define APLL_REF_CLK_20MHZ 0x3 +#define APLL_REF_CLK_25MHZ 0x4 +#define APLL_REF_CLK_26MHZ 0x5 +#define APLL_REF_CLK_38_4MHZ 0x6 +#define APLL_REF_CLK_40MHZ 0x7 + +#define APLL_320EN BIT(14) +#define APLL_80EN BIT(15) +#define APLL_1MEN BIT(24) + + +//2 EFUSE_CTRL +#define ALD_EN BIT(18) +#define EF_PD BIT(19) +#define EF_FLAG BIT(31) + +//2 EFUSE_TEST (For RTL8723 partially) +#define EF_TRPT BIT(7) +#define EF_CELL_SEL (BIT(8)|BIT(9)) // 00: Wifi Efuse, 01: BT Efuse0, 10: BT Efuse1, 11: BT Efuse2 +#define LDOE25_EN BIT(31) +#define EFUSE_SEL(x) (((x) & 0x3) << 8) +#define EFUSE_SEL_MASK 0x300 +#define EFUSE_WIFI_SEL_0 0x0 +#define EFUSE_BT_SEL_0 0x1 +#define EFUSE_BT_SEL_1 0x2 +#define EFUSE_BT_SEL_2 0x3 + +#define EFUSE_ACCESS_ON 0x69 // For RTL8723 only. +#define EFUSE_ACCESS_OFF 0x00 // For RTL8723 only. + +//2 PWR_DATA + +//2 CAL_TIMER + +//2 ACLK_MON +#define RSM_EN BIT(0) +#define Timer_EN BIT(4) + + +//2 GPIO_MUXCFG +#define TRSW0EN BIT(2) +#define TRSW1EN BIT(3) +#define EROM_EN BIT(4) +#define EnBT BIT(5) +#define EnUart BIT(8) +#define Uart_910 BIT(9) +#define EnPMAC BIT(10) +#define SIC_SWRST BIT(11) +#define EnSIC BIT(12) +#define SIC_23 BIT(13) +#define EnHDP BIT(14) +#define SIC_LBK BIT(15) + +//2 GPIO_PIN_CTRL + +// GPIO BIT +#define HAL_8192C_HW_GPIO_WPS_BIT BIT(2) + +//2 GPIO_INTM + +//2 LEDCFG +#define LED0PL BIT(4) +#define LED0DIS BIT(7) +#define LED1DIS BIT(15) +#define LED1PL BIT(12) + +#define SECCAM_CLR BIT(30) + + +//2 FSIMR + +//2 FSISR + + +//2 8051FWDL +//2 MCUFWDL +#define MCUFWDL_EN BIT(0) +#define MCUFWDL_RDY BIT(1) +#define FWDL_ChkSum_rpt BIT(2) +#define MACINI_RDY BIT(3) +#define BBINI_RDY BIT(4) +#define RFINI_RDY BIT(5) +#define WINTINI_RDY BIT(6) +#define CPRST BIT(23) + +//2REG_HPON_FSM +#define BOND92CE_1T2R_CFG BIT(22) + + +//2 REG_SYS_CFG +#define XCLK_VLD BIT(0) +#define ACLK_VLD BIT(1) +#define UCLK_VLD BIT(2) +#define PCLK_VLD BIT(3) +#define PCIRSTB BIT(4) +#define V15_VLD BIT(5) +#define TRP_B15V_EN BIT(7) +#define SIC_IDLE BIT(8) +#define BD_MAC2 BIT(9) +#define BD_MAC1 BIT(10) +#define IC_MACPHY_MODE BIT(11) +#define CHIP_VER (BIT(12)|BIT(13)|BIT(14)|BIT(15)) +#define BT_FUNC BIT(16) +#define VENDOR_ID BIT(19) +#define PAD_HWPD_IDN BIT(22) +#define TRP_VAUX_EN BIT(23) +#define TRP_BT_EN BIT(24) +#define BD_PKG_SEL BIT(25) +#define BD_HCI_SEL BIT(26) +#define TYPE_ID BIT(27) + +#define CHIP_VER_RTL_MASK 0xF000 //Bit 12 ~ 15 +#define CHIP_VER_RTL_SHIFT 12 + +//2REG_GPIO_OUTSTS (For RTL8723 only) +#define EFS_HCI_SEL (BIT(0)|BIT(1)) +#define PAD_HCI_SEL (BIT(2)|BIT(3)) +#define HCI_SEL (BIT(4)|BIT(5)) +#define PKG_SEL_HCI BIT(6) +#define FEN_GPS BIT(7) +#define FEN_BT BIT(8) +#define FEN_WL BIT(9) +#define FEN_PCI BIT(10) +#define FEN_USB BIT(11) +#define BTRF_HWPDN_N BIT(12) +#define WLRF_HWPDN_N BIT(13) +#define PDN_BT_N BIT(14) +#define PDN_GPS_N BIT(15) +#define BT_CTL_HWPDN BIT(16) +#define GPS_CTL_HWPDN BIT(17) +#define PPHY_SUSB BIT(20) +#define UPHY_SUSB BIT(21) +#define PCI_SUSEN BIT(22) +#define USB_SUSEN BIT(23) +#define RF_RL_ID (BIT(31)|BIT(30)|BIT(29)|BIT(28)) + +//----------------------------------------------------- +// +// 0x0100h ~ 0x01FFh MACTOP General Configuration +// +//----------------------------------------------------- + + +//2 Function Enable Registers +//2 CR + +#define REG_LBMODE (REG_CR + 3) + + +#define HCI_TXDMA_EN BIT(0) +#define HCI_RXDMA_EN BIT(1) +#define TXDMA_EN BIT(2) +#define RXDMA_EN BIT(3) +#define PROTOCOL_EN BIT(4) +#define SCHEDULE_EN BIT(5) +#define MACTXEN BIT(6) +#define MACRXEN BIT(7) +#define ENSWBCN BIT(8) +#define ENSEC BIT(9) + +// Network type +#define _NETTYPE(x) (((x) & 0x3) << 16) +#define MASK_NETTYPE 0x30000 +#define NT_NO_LINK 0x0 +#define NT_LINK_AD_HOC 0x1 +#define NT_LINK_AP 0x2 +#define NT_AS_AP 0x3 + +#define _LBMODE(x) (((x) & 0xF) << 24) +#define MASK_LBMODE 0xF000000 +#define LOOPBACK_NORMAL 0x0 +#define LOOPBACK_IMMEDIATELY 0xB +#define LOOPBACK_MAC_DELAY 0x3 +#define LOOPBACK_PHY 0x1 +#define LOOPBACK_DMA 0x7 + + +//2 PBP - Page Size Register +#define GET_RX_PAGE_SIZE(value) ((value) & 0xF) +#define GET_TX_PAGE_SIZE(value) (((value) & 0xF0) >> 4) +#define _PSRX_MASK 0xF +#define _PSTX_MASK 0xF0 +#define _PSRX(x) (x) +#define _PSTX(x) ((x) << 4) + +#define PBP_64 0x0 +#define PBP_128 0x1 +#define PBP_256 0x2 +#define PBP_512 0x3 +#define PBP_1024 0x4 + + +//2 TX/RXDMA +#define RXDMA_ARBBW_EN BIT(0) +#define RXSHFT_EN BIT(1) +#define RXDMA_AGG_EN BIT(2) +#define QS_VO_QUEUE BIT(8) +#define QS_VI_QUEUE BIT(9) +#define QS_BE_QUEUE BIT(10) +#define QS_BK_QUEUE BIT(11) +#define QS_MANAGER_QUEUE BIT(12) +#define QS_HIGH_QUEUE BIT(13) + +#define HQSEL_VOQ BIT(0) +#define HQSEL_VIQ BIT(1) +#define HQSEL_BEQ BIT(2) +#define HQSEL_BKQ BIT(3) +#define HQSEL_MGTQ BIT(4) +#define HQSEL_HIQ BIT(5) + +// For normal driver, 0x10C +#define _TXDMA_HIQ_MAP(x) (((x)&0x3) << 14) +#define _TXDMA_MGQ_MAP(x) (((x)&0x3) << 12) +#define _TXDMA_BKQ_MAP(x) (((x)&0x3) << 10) +#define _TXDMA_BEQ_MAP(x) (((x)&0x3) << 8 ) +#define _TXDMA_VIQ_MAP(x) (((x)&0x3) << 6 ) +#define _TXDMA_VOQ_MAP(x) (((x)&0x3) << 4 ) + +#define QUEUE_LOW 1 +#define QUEUE_NORMAL 2 +#define QUEUE_HIGH 3 + + + +//2 TRXFF_BNDY + + +//2 LLT_INIT +#define _LLT_NO_ACTIVE 0x0 +#define _LLT_WRITE_ACCESS 0x1 +#define _LLT_READ_ACCESS 0x2 + +#define _LLT_INIT_DATA(x) ((x) & 0xFF) +#define _LLT_INIT_ADDR(x) (((x) & 0xFF) << 8) +#define _LLT_OP(x) (((x) & 0x3) << 30) +#define _LLT_OP_VALUE(x) (((x) >> 30) & 0x3) + + +//2 BB_ACCESS_CTRL +#define BB_WRITE_READ_MASK (BIT(31) | BIT(30)) +#define BB_WRITE_EN BIT(30) +#define BB_READ_EN BIT(31) +//#define BB_ADDR_MASK 0xFFF +//#define _BB_ADDR(x) ((x) & BB_ADDR_MASK) + +//----------------------------------------------------- +// +// 0x0200h ~ 0x027Fh TXDMA Configuration +// +//----------------------------------------------------- +//2 RQPN +#define _HPQ(x) ((x) & 0xFF) +#define _LPQ(x) (((x) & 0xFF) << 8) +#define _PUBQ(x) (((x) & 0xFF) << 16) +#define _NPQ(x) ((x) & 0xFF) // NOTE: in RQPN_NPQ register + + +#define HPQ_PUBLIC_DIS BIT(24) +#define LPQ_PUBLIC_DIS BIT(25) +#define LD_RQPN BIT(31) + + +//2 TDECTRL +#define BCN_VALID BIT(16) +#define BCN_HEAD(x) (((x) & 0xFF) << 8) +#define BCN_HEAD_MASK 0xFF00 + +//2 TDECTL +#define BLK_DESC_NUM_SHIFT 4 +#define BLK_DESC_NUM_MASK 0xF + + +//2 TXDMA_OFFSET_CHK +#define DROP_DATA_EN BIT(9) + +//----------------------------------------------------- +// +// 0x0400h ~ 0x047Fh Protocol Configuration +// +//----------------------------------------------------- +//2 FWHW_TXQ_CTRL +#define EN_AMPDU_RTY_NEW BIT(7) + +//2 INIRTSMCS_SEL +#define _INIRTSMCS_SEL(x) ((x) & 0x3F) + + +//2 SPEC SIFS +#define _SPEC_SIFS_CCK(x) ((x) & 0xFF) +#define _SPEC_SIFS_OFDM(x) (((x) & 0xFF) << 8) + + +//2 RRSR + +#define RATE_REG_BITMAP_ALL 0xFFFFF + +#define _RRSC_BITMAP(x) ((x) & 0xFFFFF) + +#define _RRSR_RSC(x) (((x) & 0x3) << 21) +#define RRSR_RSC_RESERVED 0x0 +#define RRSR_RSC_UPPER_SUBCHANNEL 0x1 +#define RRSR_RSC_LOWER_SUBCHANNEL 0x2 +#define RRSR_RSC_DUPLICATE_MODE 0x3 + + +//2 ARFR +#define USE_SHORT_G1 BIT(20) + +//2 AGGLEN_LMT_L +#define _AGGLMT_MCS0(x) ((x) & 0xF) +#define _AGGLMT_MCS1(x) (((x) & 0xF) << 4) +#define _AGGLMT_MCS2(x) (((x) & 0xF) << 8) +#define _AGGLMT_MCS3(x) (((x) & 0xF) << 12) +#define _AGGLMT_MCS4(x) (((x) & 0xF) << 16) +#define _AGGLMT_MCS5(x) (((x) & 0xF) << 20) +#define _AGGLMT_MCS6(x) (((x) & 0xF) << 24) +#define _AGGLMT_MCS7(x) (((x) & 0xF) << 28) + + +//2 RL +#define RETRY_LIMIT_SHORT_SHIFT 8 +#define RETRY_LIMIT_LONG_SHIFT 0 + + +//2 DARFRC +#define _DARF_RC1(x) ((x) & 0x1F) +#define _DARF_RC2(x) (((x) & 0x1F) << 8) +#define _DARF_RC3(x) (((x) & 0x1F) << 16) +#define _DARF_RC4(x) (((x) & 0x1F) << 24) +// NOTE: shift starting from address (DARFRC + 4) +#define _DARF_RC5(x) ((x) & 0x1F) +#define _DARF_RC6(x) (((x) & 0x1F) << 8) +#define _DARF_RC7(x) (((x) & 0x1F) << 16) +#define _DARF_RC8(x) (((x) & 0x1F) << 24) + + +//2 RARFRC +#define _RARF_RC1(x) ((x) & 0x1F) +#define _RARF_RC2(x) (((x) & 0x1F) << 8) +#define _RARF_RC3(x) (((x) & 0x1F) << 16) +#define _RARF_RC4(x) (((x) & 0x1F) << 24) +// NOTE: shift starting from address (RARFRC + 4) +#define _RARF_RC5(x) ((x) & 0x1F) +#define _RARF_RC6(x) (((x) & 0x1F) << 8) +#define _RARF_RC7(x) (((x) & 0x1F) << 16) +#define _RARF_RC8(x) (((x) & 0x1F) << 24) + + + + +//----------------------------------------------------- +// +// 0x0500h ~ 0x05FFh EDCA Configuration +// +//----------------------------------------------------- + + + +//2 EDCA setting +#define AC_PARAM_TXOP_LIMIT_OFFSET 16 +#define AC_PARAM_ECW_MAX_OFFSET 12 +#define AC_PARAM_ECW_MIN_OFFSET 8 +#define AC_PARAM_AIFS_OFFSET 0 + + +//2 EDCA_VO_PARAM +#define _AIFS(x) (x) +#define _ECW_MAX_MIN(x) ((x) << 8) +#define _TXOP_LIMIT(x) ((x) << 16) + + +#define _BCNIFS(x) ((x) & 0xFF) +#define _BCNECW(x) (((x) & 0xF))<< 8) + + +#define _LRL(x) ((x) & 0x3F) +#define _SRL(x) (((x) & 0x3F) << 8) + + +//2 SIFS_CCK +#define _SIFS_CCK_CTX(x) ((x) & 0xFF) +#define _SIFS_CCK_TRX(x) (((x) & 0xFF) << 8); + + +//2 SIFS_OFDM +#define _SIFS_OFDM_CTX(x) ((x) & 0xFF) +#define _SIFS_OFDM_TRX(x) (((x) & 0xFF) << 8); + + +//2 TBTT PROHIBIT +#define _TBTT_PROHIBIT_HOLD(x) (((x) & 0xFF) << 8) + + +//2 REG_RD_CTRL +#define DIS_EDCA_CNT_DWN BIT(11) + + +//2 BCN_CTRL +#define EN_MBSSID BIT(1) +#define EN_TXBCN_RPT BIT(2) +#define EN_BCN_FUNCTION BIT(3) +// The same function but different bit field. +#define DIS_TSF_UDT0_NORMAL_CHIP BIT(4) +#define DIS_TSF_UDT0_TEST_CHIP BIT(5) + +//2 ACMHWCTRL +#define AcmHw_HwEn BIT(0) +#define AcmHw_BeqEn BIT(1) +#define AcmHw_ViqEn BIT(2) +#define AcmHw_VoqEn BIT(3) +#define AcmHw_BeqStatus BIT(4) +#define AcmHw_ViqStatus BIT(5) +#define AcmHw_VoqStatus BIT(6) + + + +//----------------------------------------------------- +// +// 0x0600h ~ 0x07FFh WMAC Configuration +// +//----------------------------------------------------- + +//2 APSD_CTRL +#define APSDOFF BIT(6) +#define APSDOFF_STATUS BIT(7) + + +//2 BWOPMODE +#define BW_20MHZ BIT(2) +//#define BW_OPMODE_20MHZ BIT(2) // For compability + + +#define RATE_BITMAP_ALL 0xFFFFF + +// Only use CCK 1M rate for ACK +#define RATE_RRSR_CCK_ONLY_1M 0xFFFF1 + +//2 TCR +#define TSFRST BIT(0) +#define DIS_GCLK BIT(1) +#define PAD_SEL BIT(2) +#define PWR_ST BIT(6) +#define PWRBIT_OW_EN BIT(7) +#define ACRC BIT(8) +#define CFENDFORM BIT(9) +#define ICV BIT(10) + + + +//2 RCR +#define AAP BIT(0) +#define APM BIT(1) +#define AM BIT(2) +#define AB BIT(3) +#define ADD3 BIT(4) +#define APWRMGT BIT(5) +#define CBSSID BIT(6) +#define CBSSID_BCN BIT(7) +#define ACRC32 BIT(8) +#define AICV BIT(9) +#define ADF BIT(11) +#define ACF BIT(12) +#define AMF BIT(13) +#define HTC_LOC_CTRL BIT(14) +#define UC_DATA_EN BIT(16) +#define BM_DATA_EN BIT(17) +#define MFBEN BIT(22) +#define LSIGEN BIT(23) +#define EnMBID BIT(24) +#define APP_BASSN BIT(27) +#define APP_PHYSTS BIT(28) +#define APP_ICV BIT(29) +#define APP_MIC BIT(30) +#define APP_FCS BIT(31) + +//2 RX_PKT_LIMIT + +//2 RX_DLK_TIME + +//2 MBIDCAMCFG + + + +//2 AMPDU_MIN_SPACE +#define _MIN_SPACE(x) ((x) & 0x7) +#define _SHORT_GI_PADDING(x) (((x) & 0x1F) << 3) + + +//2 RXERR_RPT +#define RXERR_TYPE_OFDM_PPDU 0 +#define RXERR_TYPE_OFDM_FALSE_ALARM 1 +#define RXERR_TYPE_OFDM_MPDU_OK 2 +#define RXERR_TYPE_OFDM_MPDU_FAIL 3 +#define RXERR_TYPE_CCK_PPDU 4 +#define RXERR_TYPE_CCK_FALSE_ALARM 5 +#define RXERR_TYPE_CCK_MPDU_OK 6 +#define RXERR_TYPE_CCK_MPDU_FAIL 7 +#define RXERR_TYPE_HT_PPDU 8 +#define RXERR_TYPE_HT_FALSE_ALARM 9 +#define RXERR_TYPE_HT_MPDU_TOTAL 10 +#define RXERR_TYPE_HT_MPDU_OK 11 +#define RXERR_TYPE_HT_MPDU_FAIL 12 +#define RXERR_TYPE_RX_FULL_DROP 15 + +#define RXERR_COUNTER_MASK 0xFFFFF +#define RXERR_RPT_RST BIT(27) +#define _RXERR_RPT_SEL(type) ((type) << 28) + + +//2 SECCFG +#define SCR_TxUseDK BIT(0) //Force Tx Use Default Key +#define SCR_RxUseDK BIT(1) //Force Rx Use Default Key +#define SCR_TxEncEnable BIT(2) //Enable Tx Encryption +#define SCR_RxDecEnable BIT(3) //Enable Rx Decryption +#define SCR_SKByA2 BIT(4) //Search kEY BY A2 +#define SCR_NoSKMC BIT(5) //No Key Search Multicast + + + +//----------------------------------------------------- +// +// 0xFE00h ~ 0xFE55h USB Configuration +// +//----------------------------------------------------- + +//2 USB Information (0xFE17) +#define USB_IS_HIGH_SPEED 0 +#define USB_IS_FULL_SPEED 1 +#define USB_SPEED_MASK BIT(5) + +#define USB_NORMAL_SIE_EP_MASK 0xF +#define USB_NORMAL_SIE_EP_SHIFT 4 + +#define USB_TEST_EP_MASK 0x30 +#define USB_TEST_EP_SHIFT 4 + +//2 Special Option +#define USB_AGG_EN BIT(3) + + +//2REG_C2HEVT_CLEAR +#define C2H_EVT_HOST_CLOSE 0x00 // Set by driver and notify FW that the driver has read the C2H command message +#define C2H_EVT_FW_CLOSE 0xFF // Set by FW indicating that FW had set the C2H command message and it's not yet read by driver. + + +//2REG_MULTI_FUNC_CTRL(For RTL8723 Only) +#define WL_HWPDN_EN BIT0 // Enable GPIO[9] as WiFi HW PDn source +#define WL_HWPDN_SL BIT1 // WiFi HW PDn polarity control +#define WL_FUNC_EN BIT2 // WiFi function enable +#define WL_HWROF_EN BIT3 // Enable GPIO[9] as WiFi RF HW PDn source +#define BT_HWPDN_EN BIT16 // Enable GPIO[11] as BT HW PDn source +#define BT_HWPDN_SL BIT17 // BT HW PDn polarity control +#define BT_FUNC_EN BIT18 // BT function enable +#define BT_HWROF_EN BIT19 // Enable GPIO[11] as BT/GPS RF HW PDn source +#define GPS_HWPDN_EN BIT20 // Enable GPIO[10] as GPS HW PDn source +#define GPS_HWPDN_SL BIT21 // GPS HW PDn polarity control +#define GPS_FUNC_EN BIT22 // GPS function enable + +//3 REG_LIFECTRL_CTRL +#define HAL92C_EN_PKT_LIFE_TIME_BK BIT3 +#define HAL92C_EN_PKT_LIFE_TIME_BE BIT2 +#define HAL92C_EN_PKT_LIFE_TIME_VI BIT1 +#define HAL92C_EN_PKT_LIFE_TIME_VO BIT0 + +#define HAL92C_MSDU_LIFE_TIME_UNIT 128 // in us, said by Tim. + +//======================================================== +// General definitions +//======================================================== + +#define MAC_ADDR_LEN 6 +#define LAST_ENTRY_OF_TX_PKT_BUFFER 255 + +#define POLLING_LLT_THRESHOLD 20 +#define POLLING_READY_TIMEOUT_COUNT 1000 + +// Min Spacing related settings. +#define MAX_MSS_DENSITY_2T 0x13 +#define MAX_MSS_DENSITY_1T 0x0A + +//---------------------------------------------------------------------------- +// 8192C GPIO MUX Configuration Register (offset 0x40, 4 byte) +//---------------------------------------------------------------------------- +#define GPIOSEL_GPIO 0 +#define GPIOSEL_ENBT BIT5 + +//---------------------------------------------------------------------------- +// 8192C GPIO PIN Control Register (offset 0x44, 4 byte) +//---------------------------------------------------------------------------- +#define GPIO_IN REG_GPIO_PIN_CTRL // GPIO pins input value +#define GPIO_OUT (REG_GPIO_PIN_CTRL+1) // GPIO pins output value +#define GPIO_IO_SEL (REG_GPIO_PIN_CTRL+2) // GPIO pins output enable when a bit is set to "1"; otherwise, input is configured. +#define GPIO_MOD (REG_GPIO_PIN_CTRL+3) + + + +#include "basic_types.h" + +#endif --- linux-raspi2-4.2.0.orig/drivers/net/wireless/rtl8192cu/include/rtl8192c_sreset.h +++ linux-raspi2-4.2.0/drivers/net/wireless/rtl8192cu/include/rtl8192c_sreset.h @@ -0,0 +1,32 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved. + * + * 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 + * published by the Free Software Foundation. + * + * 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 Street, Fifth Floor, Boston, MA 02110, USA + * + * + ******************************************************************************/ +#ifndef _RTL8192C_SRESET_C_ +#define _RTL8192C_SRESET_C_ + +#include +#include +#include +#include + +#ifdef DBG_CONFIG_ERROR_DETECT +extern void rtl8192c_sreset_xmit_status_check(_adapter *padapter); +extern void rtl8192c_sreset_linked_status_check(_adapter *padapter); +#endif +#endif --- linux-raspi2-4.2.0.orig/drivers/net/wireless/rtl8192cu/include/rtl8192c_xmit.h +++ linux-raspi2-4.2.0/drivers/net/wireless/rtl8192cu/include/rtl8192c_xmit.h @@ -0,0 +1,128 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved. + * + * 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 + * published by the Free Software Foundation. + * + * 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 Street, Fifth Floor, Boston, MA 02110, USA + * + * + ******************************************************************************/ +#ifndef _RTL8192C_XMIT_H_ +#define _RTL8192C_XMIT_H_ + +// +// Queue Select Value in TxDesc +// +#define QSLT_BK 0x2//0x01 +#define QSLT_BE 0x0 +#define QSLT_VI 0x5//0x4 +#define QSLT_VO 0x7//0x6 +#define QSLT_BEACON 0x10 +#define QSLT_HIGH 0x11 +#define QSLT_MGNT 0x12 +#define QSLT_CMD 0x13 + +struct txrpt_ccx_8192c { + /* offset 0 */ + u8 retry_cnt:6; + u8 rsvd_0:2; + + /* offset 1 */ + u8 rts_retry_cnt:6; + u8 rsvd_1:2; + + /* offset 2 */ + u8 ccx_qtime0; + u8 ccx_qtime1; + + /* offset 4 */ + u8 missed_pkt_num:5; + u8 rsvd_4:3; + + /* offset 5 */ + u8 mac_id:5; + u8 des1_fragssn:3; + + /* offset 6 */ + u8 rpt_pkt_num:5; + u8 pkt_drop:1; + u8 lifetime_over:1; + u8 retry_over:1; + + /* offset 7*/ + u8 edca_tx_queue:4; + u8 rsvd_7:1; + u8 bmc:1; + u8 pkt_ok:1; + u8 int_ccx:1; +}; + +#define txrpt_ccx_qtime_8192c(txrpt_ccx) ((txrpt_ccx)->ccx_qtime0+((txrpt_ccx)->ccx_qtime1<<8)) + +#ifdef CONFIG_XMIT_ACK +void dump_txrpt_ccx_8192c(void *buf); +void handle_txrpt_ccx_8192c(_adapter *adapter, void *buf); +#else +#define dump_txrpt_ccx_8192c(buf) do {} while(0) +#define handle_txrpt_ccx_8192c(adapter, buf) do {} while(0) +#endif + +#ifdef CONFIG_USB_HCI + +#ifdef CONFIG_USB_TX_AGGREGATION +#define MAX_TX_AGG_PACKET_NUMBER 0xFF +#endif + +s32 rtl8192cu_init_xmit_priv(_adapter * padapter); + +void rtl8192cu_free_xmit_priv(_adapter * padapter); + +void rtl8192cu_cal_txdesc_chksum(struct tx_desc *ptxdesc); + +s32 rtl8192cu_xmitframe_complete(_adapter *padapter, struct xmit_priv *pxmitpriv, struct xmit_buf *pxmitbuf); + +s32 rtl8192cu_mgnt_xmit(_adapter *padapter, struct xmit_frame *pmgntframe); + +s32 rtl8192cu_hal_xmit(_adapter *padapter, struct xmit_frame *pxmitframe); + +s32 rtl8192cu_hal_xmitframe_enqueue(_adapter *padapter, struct xmit_frame *pxmitframe); + +#ifdef CONFIG_HOSTAPD_MLME +s32 rtl8192cu_hostap_mgnt_xmit_entry(_adapter *padapter, _pkt *pkt); +#endif + +#endif + +#ifdef CONFIG_PCI_HCI +s32 rtl8192ce_init_xmit_priv(_adapter * padapter); +void rtl8192ce_free_xmit_priv(_adapter * padapter); + +s32 rtl8192ce_enqueue_xmitbuf(struct rtw_tx_ring *ring, struct xmit_buf *pxmitbuf); +struct xmit_buf *rtl8192ce_dequeue_xmitbuf(struct rtw_tx_ring *ring); + +void rtl8192ce_xmitframe_resume(_adapter *padapter); + +s32 rtl8192ce_mgnt_xmit(_adapter *padapter, struct xmit_frame *pmgntframe); + +s32 rtl8192ce_hal_xmit(_adapter *padapter, struct xmit_frame *pxmitframe); + +s32 rtl8192ce_hal_xmitframe_enqueue(_adapter *padapter, struct xmit_frame *pxmitframe); + + +#ifdef CONFIG_HOSTAPD_MLME +s32 rtl8192ce_hostap_mgnt_xmit_entry(_adapter *padapter, _pkt *pkt); +#endif + +#endif + +#endif --- linux-raspi2-4.2.0.orig/drivers/net/wireless/rtl8192cu/include/rtl8192d_cmd.h +++ linux-raspi2-4.2.0/drivers/net/wireless/rtl8192cu/include/rtl8192d_cmd.h @@ -0,0 +1,140 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved. + * + * 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 + * published by the Free Software Foundation. + * + * 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 Street, Fifth Floor, Boston, MA 02110, USA + * + * + ******************************************************************************/ +#ifndef __RTL8192D_CMD_H_ +#define __RTL8192D_CMD_H_ + + +//-------------------------------------------- +//3 Host Message Box +//-------------------------------------------- + +// User Define Message [31:8] + +//_SETPWRMODE_PARM +#define SET_H2CCMD_PWRMODE_PARM_MODE(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE(__pH2CCmd, 0, 8, __Value) +#define SET_H2CCMD_PWRMODE_PARM_SMART_PS(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE((__pH2CCmd)+1, 0, 8, __Value) +#define SET_H2CCMD_PWRMODE_PARM_BCN_PASS_TIME(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE((__pH2CCmd)+2, 0, 8, __Value) + +//JOINBSSRPT_PARM +#define SET_H2CCMD_JOINBSSRPT_PARM_OPMODE(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE(__pH2CCmd, 0, 8, __Value) + +//_RSVDPAGE_LOC +#define SET_H2CCMD_RSVDPAGE_LOC_PROBE_RSP(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE(__pH2CCmd, 0, 8, __Value) +#define SET_H2CCMD_RSVDPAGE_LOC_PSPOLL(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE((__pH2CCmd)+1, 0, 8, __Value) +#define SET_H2CCMD_RSVDPAGE_LOC_NULL_DATA(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE((__pH2CCmd)+2, 0, 8, __Value) + +//P2P_PS_OFFLOAD + +struct P2P_PS_Offload_t { + unsigned char Offload_En:1; + unsigned char role:1; // 1: Owner, 0: Client + unsigned char CTWindow_En:1; + unsigned char NoA0_En:1; + unsigned char NoA1_En:1; + unsigned char AllStaSleep:1; // Only valid in Owner + unsigned char discovery:1; + unsigned char rsvd:1; +}; + +#define SET_H2CCMD_P2P_PS_OFFLOAD_EN(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE(__pH2CCmd, 0, 1, __Value) +#define SET_H2CCMD_P2P_PS_OFFLOAD_ROLE(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE(__pH2CCmd, 1, 1, __Value) +#define SET_H2CCMD_P2P_PS_OFFLOAD_CTW(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE(__pH2CCmd, 2, 1, __Value) +#define SET_H2CCMD_P2P_PS_OFFLOAD_NOA0(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE(__pH2CCmd, 3, 1, __Value) +#define SET_H2CCMD_P2P_PS_OFFLOAD_NOA1(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE(__pH2CCmd, 4, 1, __Value) +#define SET_H2CCMD_P2P_PS_OFFLOAD_ALLSTASLEEP(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE(__pH2CCmd, 5, 1, __Value) +#define SET_H2CCMD_P2P_PS_OFFLOAD_DISCOVERY(__pH2CCmd, __Value) SET_BITS_TO_LE_1BYTE(__pH2CCmd, 6, 1, __Value) + +// Description: Determine the types of H2C commands that are the same in driver and Fw. +// Fisrt constructed by tynli. 2009.10.09. +typedef enum _RTL8192D_H2C_CMD +{ + H2C_AP_OFFLOAD = 0, /*0*/ + H2C_SETPWRMODE = 1, /*1*/ + H2C_JOINBSSRPT = 2, /*2*/ + H2C_RSVDPAGE = 3, + H2C_RSSI_REPORT = 5, + H2C_RA_MASK = 6, + H2C_P2P_PS_OFFLOAD = 8, + H2C_MAC_MODE_SEL = 9, + H2C_PWRM=15, +#ifdef CONFIG_WOWLAN + H2C_WO_WLAN_CMD = 20, // Wake on Wlan. +#endif // CONFIG_WOWLAN + H2C_P2P_PS_CTW_CMD = 24, + H2C_PathDiv = 26, //PathDiv--NeilChen--2011.07.15 +#ifdef CONFIG_WOWLAN + KEEP_ALIVE_CONTROL_CMD=31, //keep alive for wake on wlan + DISCONNECT_DECISION_CTRL_CMD=32, + REMOTE_WAKE_CTRL_CMD=34, +#endif // CONFIG_WOWLAN + H2C_92D_TSF_SYNC=36, + H2C_92D_RESET_TSF = 43, + H2C_CMD_MAX +}RTL8192D_H2C_CMD; + +struct cmd_msg_parm { + u8 eid; //element id + u8 sz; // sz + u8 buf[6]; +}; + + +void FillH2CCmd92D(_adapter* padapter, u8 ElementID, u32 CmdLen, u8* pCmdBuffer); + +// host message to firmware cmd +void rtl8192d_set_FwPwrMode_cmd(_adapter*padapter, u8 Mode); +void rtl8192d_set_FwJoinBssReport_cmd(_adapter* padapter, u8 mstatus); +u8 rtl8192d_set_rssi_cmd(_adapter*padapter, u8 *param); +u8 rtl8192d_set_raid_cmd(_adapter*padapter, u32 mask, u8 arg); +void rtl8192d_Add_RateATid(PADAPTER pAdapter, u32 bitmap, u8 arg); +#ifdef CONFIG_P2P +void rtl8192d_set_p2p_ps_offload_cmd(_adapter* padapter, u8 p2p_ps_state); +#endif //CONFIG_P2P + +#ifdef CONFIG_TSF_RESET_OFFLOAD +int reset_tsf(PADAPTER Adapter, u8 reset_port ); +#endif // CONFIG_TSF_RESET_OFFLOAD + +#ifdef CONFIG_WOWLAN +typedef struct _SETWOWLAN_PARM{ + u8 mode; + u8 gpio_index; + u8 gpio_duration; + u8 second_mode; + u8 reserve; +}SETWOWLAN_PARM, *PSETWOWLAN_PARM; + +#define FW_WOWLAN_FUN_EN BIT(0) +#define FW_WOWLAN_PATTERN_MATCH BIT(1) +#define FW_WOWLAN_MAGIC_PKT BIT(2) +#define FW_WOWLAN_UNICAST BIT(3) +#define FW_WOWLAN_ALL_PKT_DROP BIT(4) +#define FW_WOWLAN_GPIO_ACTIVE BIT(5) +#define FW_WOWLAN_REKEY_WAKEUP BIT(6) +#define FW_WOWLAN_DEAUTH_WAKEUP BIT(7) + +#define FW_WOWLAN_GPIO_WAKEUP_EN BIT(0) +#define FW_FW_PARSE_MAGIC_PKT BIT(1) + +void rtl8192d_set_wowlan_cmd(_adapter* padapter); +void SetFwRelatedForWoWLAN8192DU(_adapter* padapter,u8 bHostIsGoingtoSleep); +#endif // CONFIG_WOWLAN + +#endif // __RTL8192D_CMD_H_ --- linux-raspi2-4.2.0.orig/drivers/net/wireless/rtl8192cu/include/rtl8192d_dm.h +++ linux-raspi2-4.2.0/drivers/net/wireless/rtl8192cu/include/rtl8192d_dm.h @@ -0,0 +1,420 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved. + * + * 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 + * published by the Free Software Foundation. + * + * 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 Street, Fifth Floor, Boston, MA 02110, USA + * + * + ******************************************************************************/ +#ifndef __RTL8192D_DM_H__ +#define __RTL8192D_DM_H__ +//============================================================ +// Description: +// +// This file is for 92CE/92CU dynamic mechanism only +// +// +//============================================================ +//============================================================ +// Global var +//============================================================ + +extern u32 EDCAParam[maxAP][3] ; + +//============================================================ +// structure and define +//============================================================ + +typedef struct _FALSE_ALARM_STATISTICS{ + u32 Cnt_Parity_Fail; + u32 Cnt_Rate_Illegal; + u32 Cnt_Crc8_fail; + u32 Cnt_Mcs_fail; + u32 Cnt_Ofdm_fail; + u32 Cnt_Cck_fail; + u32 Cnt_all; + u32 Cnt_Fast_Fsync; + u32 Cnt_SB_Search_fail; +}FALSE_ALARM_STATISTICS, *PFALSE_ALARM_STATISTICS; + +typedef struct _Dynamic_Power_Saving_ +{ + u8 PreCCAState; + u8 CurCCAState; + + u8 PreRFState; + u8 CurRFState; + + //int Rssi_val_min; + +}PS_T,*pPS_T; + +typedef struct _Dynamic_Initial_Gain_Threshold_ +{ + u8 Dig_Enable_Flag; + u8 Dig_Ext_Port_Stage; + + int RssiLowThresh; + int RssiHighThresh; + + u32 FALowThresh; + u32 FAHighThresh; + + u8 CurSTAConnectState; + u8 PreSTAConnectState; + u8 CurMultiSTAConnectState; + + u8 PreIGValue; + u8 CurIGValue; + u8 BackupIGValue; + + char BackoffVal; + char BackoffVal_range_max; + char BackoffVal_range_min; + u8 rx_gain_range_max; + u8 rx_gain_range_min; + u8 Rssi_val_min; + + u8 PreCCKPDState; + u8 CurCCKPDState; + + u8 LargeFAHit; + u8 ForbiddenIGI; + u32 Recover_cnt; + u8 rx_gain_range_min_nolink; +}DIG_T,*pDIG_T; + +typedef enum tag_Dynamic_Init_Gain_Operation_Type_Definition +{ + DIG_TYPE_THRESH_HIGH = 0, + DIG_TYPE_THRESH_LOW = 1, + DIG_TYPE_BACKOFF = 2, + DIG_TYPE_RX_GAIN_MIN = 3, + DIG_TYPE_RX_GAIN_MAX = 4, + DIG_TYPE_ENABLE = 5, + DIG_TYPE_DISABLE = 6, + DIG_OP_TYPE_MAX +}DM_DIG_OP_E; + +typedef enum tag_CCK_Packet_Detection_Threshold_Type_Definition +{ + CCK_PD_STAGE_LowRssi = 0, + CCK_PD_STAGE_HighRssi = 1, + CCK_PD_STAGE_MAX = 3, +}DM_CCK_PDTH_E; + +typedef enum tag_1R_CCA_Type_Definition +{ + CCA_MIN = 0, + CCA_1R =1, + CCA_2R = 2, + CCA_MAX = 3, +}DM_1R_CCA_E; + +typedef enum tag_RF_Type_Definition +{ + RF_Save =0, + RF_Normal = 1, + RF_MAX = 2, +}DM_RF_E; + +typedef enum tag_DIG_EXT_PORT_ALGO_Definition +{ + DIG_EXT_PORT_STAGE_0 = 0, + DIG_EXT_PORT_STAGE_1 = 1, + DIG_EXT_PORT_STAGE_2 = 2, + DIG_EXT_PORT_STAGE_3 = 3, + DIG_EXT_PORT_STAGE_MAX = 4, +}DM_DIG_EXT_PORT_ALG_E; + + +typedef enum tag_DIG_Connect_Definition +{ + DIG_STA_DISCONNECT = 0, + DIG_STA_CONNECT = 1, + DIG_STA_BEFORE_CONNECT = 2, + DIG_MultiSTA_DISCONNECT = 3, + DIG_MultiSTA_CONNECT = 4, + DIG_CONNECT_MAX +}DM_DIG_CONNECT_E; + + +#define DM_DIG_THRESH_HIGH 40 +#define DM_DIG_THRESH_LOW 35 + +#define DM_FALSEALARM_THRESH_LOW 400 +#define DM_FALSEALARM_THRESH_HIGH 1000 + +#define DM_DIG_MAX 0x3e +#define DM_DIG_MIN 0x1e //0x22//0x1c + +#define DM_DIG_FA_UPPER 0x32 +#define DM_DIG_FA_LOWER 0x20 + +//vivi 92c&92d has different definition, 20110504 +//this is for 92c +#define DM_DIG_FA_TH0 0x200//0x20 +#define DM_DIG_FA_TH1 0x300//0x100 +#define DM_DIG_FA_TH2 0x400//0x200 +//this is for 92d +#define DM_DIG_FA_TH0_92D 0x100 +#define DM_DIG_FA_TH1_92D 0x150 +#define DM_DIG_FA_TH2_92D 0x250 + +#define DM_DIG_BACKOFF_MAX 12 +#define DM_DIG_BACKOFF_MIN (-4) +#define DM_DIG_BACKOFF_DEFAULT 10 + +#define RxPathSelection_SS_TH_low 30 +#define RxPathSelection_diff_TH 18 + +#define DM_RATR_STA_INIT 0 +#define DM_RATR_STA_HIGH 1 +#define DM_RATR_STA_MIDDLE 2 +#define DM_RATR_STA_LOW 3 + +#define CTSToSelfTHVal 30 +#define RegC38_TH 20 + +#define WAIotTHVal 25 + +//Dynamic Tx Power Control Threshold +#define TX_POWER_NEAR_FIELD_THRESH_LVL2 74 +#define TX_POWER_NEAR_FIELD_THRESH_LVL1 67 + +#define TxHighPwrLevel_Normal 0 +#define TxHighPwrLevel_Level1 1 +#define TxHighPwrLevel_Level2 2 +#define TxHighPwrLevel_BT1 3 +#define TxHighPwrLevel_BT2 4 +#define TxHighPwrLevel_15 5 +#define TxHighPwrLevel_35 6 +#define TxHighPwrLevel_50 7 +#define TxHighPwrLevel_70 8 +#define TxHighPwrLevel_100 9 + +#define DM_Type_ByFW 0 +#define DM_Type_ByDriver 1 + +typedef struct _RATE_ADAPTIVE +{ + u8 RateAdaptiveDisabled; + u8 RATRState; + u16 reserve; + + u32 HighRSSIThreshForRA; + u32 High2LowRSSIThreshForRA; + u8 Low2HighRSSIThreshForRA40M; + u32 LowRSSIThreshForRA40M; + u8 Low2HighRSSIThreshForRA20M; + u32 LowRSSIThreshForRA20M; + u32 UpperRSSIThresholdRATR; + u32 MiddleRSSIThresholdRATR; + u32 LowRSSIThresholdRATR; + u32 LowRSSIThresholdRATR40M; + u32 LowRSSIThresholdRATR20M; + u8 PingRSSIEnable; //cosa add for Netcore long range ping issue + u32 PingRSSIRATR; //cosa add for Netcore long range ping issue + u32 PingRSSIThreshForRA;//cosa add for Netcore long range ping issue + u32 LastRATR; + u8 PreRATRState; + +} RATE_ADAPTIVE, *PRATE_ADAPTIVE; + +typedef enum tag_SW_Antenna_Switch_Definition +{ + Antenna_B = 1, + Antenna_A = 2, + Antenna_MAX = 3, +}DM_SWAS_E; + +// 20100514 Joseph: Add definition for antenna switching test after link. +// This indicates two different the steps. +// In SWAW_STEP_PEAK, driver needs to switch antenna and listen to the signal on the air. +// In SWAW_STEP_DETERMINE, driver just compares the signal captured in SWAW_STEP_PEAK +// with original RSSI to determine if it is necessary to switch antenna. +#define SWAW_STEP_PEAK 0 +#define SWAW_STEP_DETERMINE 1 + +#define TP_MODE 0 +#define RSSI_MODE 1 +#define TRAFFIC_LOW 0 +#define TRAFFIC_HIGH 1 + +//============================= +//Neil Chen---2011--06--15-- +//============================== +//3 PathDiv +typedef struct _SW_Antenna_Switch_ +{ + u8 try_flag; + s32 PreRSSI; + u8 CurAntenna; + u8 PreAntenna; + u8 RSSI_Trying; + u8 TestMode; + u8 bTriggerAntennaSwitch; + u8 SelectAntennaMap; + + // Before link Antenna Switch check + u8 SWAS_NoLink_State; + u32 SWAS_NoLink_BK_Reg860; +}SWAT_T, *pSWAT_T; +//======================================== + +struct dm_priv +{ + u8 DM_Type; + u8 DMFlag, DMFlag_tmp; + + //for DIG + u8 bDMInitialGainEnable; + //u8 binitialized; // for dm_initial_gain_Multi_STA use. + DIG_T DM_DigTable; + + PS_T DM_PSTable; + + FALSE_ALARM_STATISTICS FalseAlmCnt; + + //for rate adaptive, in fact, 88c/92c fw will handle this + u8 bUseRAMask; + RATE_ADAPTIVE RateAdaptive; + + //* Upper and Lower Signal threshold for Rate Adaptive*/ + int UndecoratedSmoothedPWDB; + int EntryMinUndecoratedSmoothedPWDB; + int EntryMaxUndecoratedSmoothedPWDB; + int MinUndecoratedPWDBForDM; + int LastMinUndecoratedPWDBForDM; +#ifdef CONFIG_DUALMAC_CONCURRENT + int RssiValMinForAnotherMacOfDMSP; + u32 CurDigValueForAnotherMacOfDMSP; + BOOLEAN bWriteDigForAnotherMacOfDMSP; + BOOLEAN bChangeCCKPDStateForAnotherMacOfDMSP; + u8 CurCCKPDStateForAnotherMacOfDMSP; + BOOLEAN bChangeTxHighPowerLvlForAnotherMacOfDMSP; + u8 CurTxHighLvlForAnotherMacOfDMSP; +#endif + + //for High Power + u8 bDynamicTxPowerEnable; + u8 LastDTPLvl; + u8 DynamicTxHighPowerLvl;//Add by Jacken Tx Power Control for Near/Far Range 2008/03/06 + + //for tx power tracking + u8 bTXPowerTracking; + u8 TXPowercount; + u8 bTXPowerTrackingInit; + u8 TxPowerTrackControl; //for mp mode, turn off txpwrtracking as default + u8 TM_Trigger; + + u8 ThermalMeter[2]; // ThermalMeter, index 0 for RFIC0, and 1 for RFIC1 + u8 ThermalValue; + u8 ThermalValue_LCK; + u8 ThermalValue_IQK; + u8 ThermalValue_AVG[AVG_THERMAL_NUM]; + u8 ThermalValue_AVG_index; + u8 ThermalValue_RxGain; + u8 ThermalValue_Crystal; + u8 Delta_IQK; + u8 Delta_LCK; + u8 bRfPiEnable; + u8 bReloadtxpowerindex; + u8 bDoneTxpower; + + //for APK + u32 APKoutput[2][2]; //path A/B; output1_1a/output1_2a + u8 bAPKdone; + u8 bAPKThermalMeterIgnore; + BOOLEAN bDPKdone[2]; + BOOLEAN bDPKstore; + BOOLEAN bDPKworking; + u8 OFDM_min_index_internalPA_DPK[2]; + u8 TxPowerLevelDPK[2]; + + u32 RegA24; + + //for IQK + u32 Reg874; + u32 RegC08; + u32 Reg88C; + u8 Reg522; + u8 Reg550; + u8 Reg551; + u32 Reg870; + u32 ADDA_backup[IQK_ADDA_REG_NUM]; + u32 IQK_MAC_backup[IQK_MAC_REG_NUM]; + u32 IQK_BB_backup[IQK_BB_REG_NUM]; + + u8 bCCKinCH14; + + char CCK_index; + //u8 Record_CCK_20Mindex; + //u8 Record_CCK_40Mindex; + char OFDM_index[2]; + + SWAT_T DM_SWAT_Table; + + //for TxPwrTracking + int RegE94; + int RegE9C; + int RegEB4; + int RegEBC; +#if MP_DRIVER == 1 + u8 RegC04_MP; + u32 RegD04_MP; +#endif + u32 TXPowerTrackingCallbackCnt; //cosa add for debug + + u32 prv_traffic_idx; // edca turbo + + u32 RegRF3C[2]; //pathA / pathB + + // Add for Reading Initial Data Rate SEL Register 0x484 during watchdog. Using for fill tx desc. 2011.3.21 by Thomas + u8 INIDATA_RATE[32]; + +#ifdef CONFIG_DM_ADAPTIVITY + /* Ported from ODM, for ESTI Adaptivity test */ + s8 TH_L2H_ini; + s8 TH_EDCCA_HL_diff; + s8 IGI_Base; + u8 IGI_target; + bool ForceEDCCA; + u8 AdapEn_RSSI; + s8 Force_TH_H; + s8 Force_TH_L; + u8 IGI_LowerBound; + + bool bPreEdccaEnable; +#endif +}; + + +/*------------------------Export global variable----------------------------*/ +/*------------------------Export global variable----------------------------*/ +/*------------------------Export Marco Definition---------------------------*/ +//#define DM_MultiSTA_InitGainChangeNotify(Event) {DM_DigTable.CurMultiSTAConnectState = Event;} + + +//============================================================ +// function prototype +//============================================================ +void rtl8192d_init_dm_priv(IN PADAPTER Adapter); +void rtl8192d_deinit_dm_priv(IN PADAPTER Adapter); +void rtl8192d_InitHalDm(IN PADAPTER Adapter); +void rtl8192d_HalDmWatchDog(IN PADAPTER Adapter); + +VOID rtl8192d_dm_CheckTXPowerTracking(IN PADAPTER Adapter); + +#endif //__HAL8190PCIDM_H__ --- linux-raspi2-4.2.0.orig/drivers/net/wireless/rtl8192cu/include/rtl8192d_hal.h +++ linux-raspi2-4.2.0/drivers/net/wireless/rtl8192cu/include/rtl8192d_hal.h @@ -0,0 +1,1125 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved. + * + * 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 + * published by the Free Software Foundation. + * + * 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 Street, Fifth Floor, Boston, MA 02110, USA + * + * + ******************************************************************************/ +#ifndef __RTL8192D_HAL_H__ +#define __RTL8192D_HAL_H__ + +#include "hal_com.h" +#include "rtl8192d_spec.h" +#include "Hal8192DPhyReg.h" +#include "Hal8192DPhyCfg.h" +#include "rtl8192d_rf.h" +#include "rtl8192d_dm.h" +#include "rtl8192d_recv.h" +#include "rtl8192d_xmit.h" +#include "rtl8192d_cmd.h" + +/*---------------------------Define Local Constant---------------------------*/ +/* Channel switch:The size of command tables for switch channel*/ +#define MAX_PRECMD_CNT 16 +#define MAX_RFDEPENDCMD_CNT 16 +#define MAX_POSTCMD_CNT 16 + +#define MAX_DOZE_WAITING_TIMES_9x 64 + +#define MAX_RF_IMR_INDEX 12 +#define MAX_RF_IMR_INDEX_NORMAL 13 +#define RF_REG_NUM_for_C_CUT_5G 6 +#define RF_REG_NUM_for_C_CUT_5G_internalPA 7 +#define RF_REG_NUM_for_C_CUT_2G 5 +#define RF_CHNL_NUM_5G 19 +#define RF_CHNL_NUM_5G_40M 17 +#define TARGET_CHNL_NUM_5G 221 +#define TARGET_CHNL_NUM_2G 14 +#define TARGET_CHNL_NUM_2G_5G 59 +#define CV_CURVE_CNT 64 + +//static u32 RF_REG_FOR_5G_SWCHNL[MAX_RF_IMR_INDEX]={0,0x2f,0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x38,0x39,0x0}; +static u32 RF_REG_FOR_5G_SWCHNL_NORMAL[MAX_RF_IMR_INDEX_NORMAL]={0,0x2f,0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x0}; + +static u8 RF_REG_for_C_CUT_5G[RF_REG_NUM_for_C_CUT_5G] = + {RF_SYN_G1, RF_SYN_G2, RF_SYN_G3, RF_SYN_G4, RF_SYN_G5, RF_SYN_G6}; + +static u8 RF_REG_for_C_CUT_5G_internalPA[RF_REG_NUM_for_C_CUT_5G_internalPA] = + {0x0B, 0x48, 0x49, 0x4B, 0x03, 0x04, 0x0E}; +static u8 RF_REG_for_C_CUT_2G[RF_REG_NUM_for_C_CUT_2G] = + {RF_SYN_G1, RF_SYN_G2, RF_SYN_G3, RF_SYN_G7, RF_SYN_G8}; + +#if DBG +static u32 RF_REG_MASK_for_C_CUT_2G[RF_REG_NUM_for_C_CUT_2G] = + {BIT19|BIT18|BIT17|BIT14|BIT1, BIT10|BIT9, + BIT18|BIT17|BIT16|BIT1, BIT2|BIT1, + BIT15|BIT14|BIT13|BIT12|BIT11}; +#endif //amy, temp remove +static u8 RF_CHNL_5G[RF_CHNL_NUM_5G] = + {36,40,44,48,52,56,60,64,100,104,108,112,116,120,124,128,132,136,140}; +static u8 RF_CHNL_5G_40M[RF_CHNL_NUM_5G_40M] = + {38,42,46,50,54,58,62,102,106,110,114,118,122,126,130,134,138}; + +static u32 RF_REG_Param_for_C_CUT_5G[5][RF_REG_NUM_for_C_CUT_5G] = { + {0xE43BE, 0xFC638, 0x77C0A, 0xDE471, 0xd7110, 0x8EB04}, + {0xE43BE, 0xFC078, 0xF7C1A, 0xE0C71, 0xD7550, 0xAEB04}, + {0xE43BF, 0xFF038, 0xF7C0A, 0xDE471, 0xE5550, 0xAEB04}, + {0xE43BF, 0xFF079, 0xF7C1A, 0xDE471, 0xE5550, 0xAEB04}, + {0xE43BF, 0xFF038, 0xF7C1A, 0xDE471, 0xd7550, 0xAEB04}}; + +static u32 RF_REG_Param_for_C_CUT_2G[3][RF_REG_NUM_for_C_CUT_2G] = { + {0x643BC, 0xFC038, 0x77C1A, 0x41289, 0x01840}, + {0x643BC, 0xFC038, 0x07C1A, 0x41289, 0x01840}, + {0x243BC, 0xFC438, 0x07C1A, 0x4128B, 0x0FC41}}; + +#if SWLCK == 1 +static u32 RF_REG_SYN_G4_for_C_CUT_2G = 0xD1C31&0x7FF; +#endif + +static u32 RF_REG_Param_for_C_CUT_5G_internalPA[3][RF_REG_NUM_for_C_CUT_5G_internalPA] = { + {0x01a00, 0x40443, 0x00eb5, 0x89bec, 0x94a12, 0x94a12, 0x94a12}, + {0x01800, 0xc0443, 0x00730, 0x896ee, 0x94a52, 0x94a52, 0x94a52}, + {0x01800, 0xc0443, 0x00730, 0x896ee, 0x94a12, 0x94a12, 0x94a12}}; + + + +//[mode][patha+b][reg] +static u32 RF_IMR_Param_Normal[1][3][MAX_RF_IMR_INDEX_NORMAL]={{ + {0x70000,0x00ff0,0x4400f,0x00ff0,0x0,0x0,0x0,0x0,0x0,0x64888,0xe266c,0x00090,0x22fff},// channel 1-14. + {0x70000,0x22880,0x4470f,0x55880,0x00070, 0x88000, 0x0,0x88080,0x70000,0x64a82,0xe466c,0x00090,0x32c9a}, //path 36-64 + {0x70000,0x44880,0x4477f,0x77880,0x00070, 0x88000, 0x0,0x880b0,0x0,0x64b82,0xe466c,0x00090,0x32c9a} //100 -165 +} +}; + +//static u32 CurveIndex_5G[TARGET_CHNL_NUM_5G]={0}; +//static u32 CurveIndex_2G[TARGET_CHNL_NUM_2G]={0}; +static u32 CurveIndex[TARGET_CHNL_NUM_2G_5G]={0}; + +static u32 TargetChnl_5G[TARGET_CHNL_NUM_5G] = { +25141, 25116, 25091, 25066, 25041, +25016, 24991, 24966, 24941, 24917, +24892, 24867, 24843, 24818, 24794, +24770, 24765, 24721, 24697, 24672, +24648, 24624, 24600, 24576, 24552, +24528, 24504, 24480, 24457, 24433, +24409, 24385, 24362, 24338, 24315, +24291, 24268, 24245, 24221, 24198, +24175, 24151, 24128, 24105, 24082, +24059, 24036, 24013, 23990, 23967, +23945, 23922, 23899, 23876, 23854, +23831, 23809, 23786, 23764, 23741, +23719, 23697, 23674, 23652, 23630, +23608, 23586, 23564, 23541, 23519, +23498, 23476, 23454, 23432, 23410, +23388, 23367, 23345, 23323, 23302, +23280, 23259, 23237, 23216, 23194, +23173, 23152, 23130, 23109, 23088, +23067, 23046, 23025, 23003, 22982, +22962, 22941, 22920, 22899, 22878, +22857, 22837, 22816, 22795, 22775, +22754, 22733, 22713, 22692, 22672, +22652, 22631, 22611, 22591, 22570, +22550, 22530, 22510, 22490, 22469, +22449, 22429, 22409, 22390, 22370, +22350, 22336, 22310, 22290, 22271, +22251, 22231, 22212, 22192, 22173, +22153, 22134, 22114, 22095, 22075, +22056, 22037, 22017, 21998, 21979, +21960, 21941, 21921, 21902, 21883, +21864, 21845, 21826, 21807, 21789, +21770, 21751, 21732, 21713, 21695, +21676, 21657, 21639, 21620, 21602, +21583, 21565, 21546, 21528, 21509, +21491, 21473, 21454, 21436, 21418, +21400, 21381, 21363, 21345, 21327, +21309, 21291, 21273, 21255, 21237, +21219, 21201, 21183, 21166, 21148, +21130, 21112, 21095, 21077, 21059, +21042, 21024, 21007, 20989, 20972, +25679, 25653, 25627, 25601, 25575, +25549, 25523, 25497, 25471, 25446, +25420, 25394, 25369, 25343, 25318, +25292, 25267, 25242, 25216, 25191, +25166 }; + +static u32 TargetChnl_2G[TARGET_CHNL_NUM_2G] = { // channel 1~14 +26084, 26030, 25976, 25923, 25869, 25816, 25764, +25711, 25658, 25606, 25554, 25502, 25451, 25328 +}; + + +#ifdef CONFIG_PCI_HCI + #include + #include "Hal8192DEHWImg.h" + + #define RTL819X_DEFAULT_RF_TYPE RF_2T2R + +//--------------------------------------------------------------------- +// RTL8192DE From file +//--------------------------------------------------------------------- + #define RTL8192D_FW_IMG "rtl8192DE\\rtl8192dfw.bin" + + #define RTL8192D_PHY_REG "rtl8192DE\\PHY_REG.txt" + #define RTL8192D_PHY_REG_PG "rtl8192DE\\PHY_REG_PG.txt" + #define RTL8192D_PHY_REG_MP "rtl8192DE\\PHY_REG_MP.txt" + + #define RTL8192D_AGC_TAB "rtl8192DE\\AGC_TAB.txt" + #define RTL8192D_AGC_TAB_2G "rtl8192DE\\AGC_TAB_2G.txt" + #define RTL8192D_AGC_TAB_5G "rtl8192DE\\AGC_TAB_5G.txt" + #define RTL8192D_PHY_RADIO_A "rtl8192DE\\radio_a.txt" + #define RTL8192D_PHY_RADIO_B "rtl8192DE\\radio_b.txt" + #define RTL8192D_PHY_RADIO_A_intPA "rtl8192DE\\radio_a_intPA.txt" + #define RTL8192D_PHY_RADIO_B_intPA "rtl8192DE\\radio_b_intPA.txt" + #define RTL8192D_PHY_MACREG "rtl8192DE\\MAC_REG.txt" + +//--------------------------------------------------------------------- +// RTL8192DE From header +//--------------------------------------------------------------------- + + // Fw Array + #define Rtl8192D_FwImageArray Rtl8192DEFwImgArray + + // MAC/BB/PHY Array + #define Rtl8192D_MAC_Array Rtl8192DEMAC_2T_Array + #define Rtl8192D_AGCTAB_Array Rtl8192DEAGCTAB_Array + #define Rtl8192D_AGCTAB_5GArray Rtl8192DEAGCTAB_5GArray + #define Rtl8192D_AGCTAB_2GArray Rtl8192DEAGCTAB_2GArray + #define Rtl8192D_AGCTAB_2TArray Rtl8192DEAGCTAB_2TArray + #define Rtl8192D_AGCTAB_1TArray Rtl8192DEAGCTAB_1TArray + #define Rtl8192D_PHY_REG_2TArray Rtl8192DEPHY_REG_2TArray + #define Rtl8192D_PHY_REG_1TArray Rtl8192DEPHY_REG_1TArray + #define Rtl8192D_PHY_REG_Array_PG Rtl8192DEPHY_REG_Array_PG + #define Rtl8192D_PHY_REG_Array_MP Rtl8192DEPHY_REG_Array_MP + #define Rtl8192D_RadioA_2TArray Rtl8192DERadioA_2TArray + #define Rtl8192D_RadioA_1TArray Rtl8192DERadioA_1TArray + #define Rtl8192D_RadioB_2TArray Rtl8192DERadioB_2TArray + #define Rtl8192D_RadioB_1TArray Rtl8192DERadioB_1TArray + #define Rtl8192D_RadioA_2T_intPAArray Rtl8192DERadioA_2T_intPAArray + #define Rtl8192D_RadioB_2T_intPAArray Rtl8192DERadioB_2T_intPAArray + + // Array length + #define Rtl8192D_FwImageArrayLength Rtl8192DEImgArrayLength + #define Rtl8192D_MAC_ArrayLength Rtl8192DEMAC_2T_ArrayLength + #define Rtl8192D_AGCTAB_5GArrayLength Rtl8192DEAGCTAB_5GArrayLength + #define Rtl8192D_AGCTAB_2GArrayLength Rtl8192DEAGCTAB_2GArrayLength + #define Rtl8192D_AGCTAB_2TArrayLength Rtl8192DEAGCTAB_2TArrayLength + #define Rtl8192D_AGCTAB_1TArrayLength Rtl8192DEAGCTAB_1TArrayLength + #define Rtl8192D_AGCTAB_ArrayLength Rtl8192DEAGCTAB_ArrayLength + #define Rtl8192D_PHY_REG_2TArrayLength Rtl8192DEPHY_REG_2TArrayLength + #define Rtl8192D_PHY_REG_1TArrayLength Rtl8192DEPHY_REG_1TArrayLength + #define Rtl8192D_PHY_REG_Array_PGLength Rtl8192DEPHY_REG_Array_PGLength + #define Rtl8192D_PHY_REG_Array_MPLength Rtl8192DEPHY_REG_Array_MPLength + #define Rtl8192D_RadioA_2TArrayLength Rtl8192DERadioA_2TArrayLength + #define Rtl8192D_RadioB_2TArrayLength Rtl8192DERadioB_2TArrayLength + #define Rtl8192D_RadioA_2T_intPAArrayLength Rtl8192DERadioA_2T_intPAArrayLength + #define Rtl8192D_RadioB_2T_intPAArrayLength Rtl8192DERadioB_2T_intPAArrayLength + +#elif defined(CONFIG_USB_HCI) + + #include "Hal8192DUHWImg.h" +#ifdef CONFIG_WOWLAN + #include "Hal8192DUHWImg_wowlan.h" +#endif //CONFIG_WOWLAN + #define RTL819X_DEFAULT_RF_TYPE RF_1T2R + +//--------------------------------------------------------------------- +// RTL8192DU From file +//--------------------------------------------------------------------- + #define RTL8192D_FW_IMG "rtl8192DU\\rtl8192dfw.bin" + + #define RTL8192D_PHY_REG "rtl8192DU\\PHY_REG.txt" + #define RTL8192D_PHY_REG_PG "rtl8192DU\\PHY_REG_PG.txt" + #define RTL8192D_PHY_REG_MP "rtl8192DU\\PHY_REG_MP.txt" + + #define RTL8192D_AGC_TAB "rtl8192DU\\AGC_TAB.txt" + #define RTL8192D_AGC_TAB_2G "rtl8192DU\\AGC_TAB_2G.txt" + #define RTL8192D_AGC_TAB_5G "rtl8192DU\\AGC_TAB_5G.txt" + #define RTL8192D_PHY_RADIO_A "rtl8192DU\\radio_a.txt" + #define RTL8192D_PHY_RADIO_B "rtl8192DU\\radio_b.txt" + #define RTL8192D_PHY_RADIO_A_intPA "rtl8192DU\\radio_a_intPA.txt" + #define RTL8192D_PHY_RADIO_B_intPA "rtl8192DU\\radio_b_intPA.txt" + #define RTL8192D_PHY_MACREG "rtl8192DU\\MAC_REG.txt" + +//--------------------------------------------------------------------- +// RTL8192DU From header +//--------------------------------------------------------------------- + + // Fw Array + #define Rtl8192D_FwImageArray Rtl8192DUFwImgArray +#ifdef CONFIG_WOWLAN + #define Rtl8192D_FwWWImageArray Rtl8192DUFwWWImgArray +#endif //CONFIG_WOWLAN + // MAC/BB/PHY Array + #define Rtl8192D_MAC_Array Rtl8192DUMAC_2T_Array + #define Rtl8192D_AGCTAB_Array Rtl8192DUAGCTAB_Array + #define Rtl8192D_AGCTAB_5GArray Rtl8192DUAGCTAB_5GArray + #define Rtl8192D_AGCTAB_2GArray Rtl8192DUAGCTAB_2GArray + #define Rtl8192D_AGCTAB_2TArray Rtl8192DUAGCTAB_2TArray + #define Rtl8192D_AGCTAB_1TArray Rtl8192DUAGCTAB_1TArray + #define Rtl8192D_PHY_REG_2TArray Rtl8192DUPHY_REG_2TArray + #define Rtl8192D_PHY_REG_1TArray Rtl8192DUPHY_REG_1TArray + #define Rtl8192D_PHY_REG_Array_PG Rtl8192DUPHY_REG_Array_PG + #define Rtl8192D_PHY_REG_Array_MP Rtl8192DUPHY_REG_Array_MP + #define Rtl8192D_RadioA_2TArray Rtl8192DURadioA_2TArray + #define Rtl8192D_RadioA_1TArray Rtl8192DURadioA_1TArray + #define Rtl8192D_RadioB_2TArray Rtl8192DURadioB_2TArray + #define Rtl8192D_RadioB_1TArray Rtl8192DURadioB_1TArray + #define Rtl8192D_RadioA_2T_intPAArray Rtl8192DURadioA_2T_intPAArray + #define Rtl8192D_RadioB_2T_intPAArray Rtl8192DURadioB_2T_intPAArray + + // Array length + #define Rtl8192D_FwImageArrayLength Rtl8192DUImgArrayLength + #define Rtl8192D_MAC_ArrayLength Rtl8192DUMAC_2T_ArrayLength + #define Rtl8192D_AGCTAB_5GArrayLength Rtl8192DUAGCTAB_5GArrayLength + #define Rtl8192D_AGCTAB_2GArrayLength Rtl8192DUAGCTAB_2GArrayLength + #define Rtl8192D_AGCTAB_2TArrayLength Rtl8192DUAGCTAB_2TArrayLength + #define Rtl8192D_AGCTAB_1TArrayLength Rtl8192DUAGCTAB_1TArrayLength + #define Rtl8192D_AGCTAB_ArrayLength Rtl8192DUAGCTAB_ArrayLength + #define Rtl8192D_PHY_REG_2TArrayLength Rtl8192DUPHY_REG_2TArrayLength + #define Rtl8192D_PHY_REG_1TArrayLength Rtl8192DUPHY_REG_1TArrayLength + #define Rtl8192D_PHY_REG_Array_PGLength Rtl8192DUPHY_REG_Array_PGLength + #define Rtl8192D_PHY_REG_Array_MPLength Rtl8192DUPHY_REG_Array_MPLength + #define Rtl8192D_RadioA_2TArrayLength Rtl8192DURadioA_2TArrayLength + #define Rtl8192D_RadioB_2TArrayLength Rtl8192DURadioB_2TArrayLength + #define Rtl8192D_RadioA_2T_intPAArrayLength Rtl8192DURadioA_2T_intPAArrayLength + #define Rtl8192D_RadioB_2T_intPAArrayLength Rtl8192DURadioB_2T_intPAArrayLength + + // The file name "_2T" is for 92CU, "_1T" is for 88CU. Modified by tynli. 2009.11.24. +/* #define Rtl819XFwImageArray Rtl8192DUFwImgArray + #define Rtl819XMAC_Array Rtl8192DUMAC_2TArray + #define Rtl819XAGCTAB_Array Rtl8192DUAGCTAB_Array + #define Rtl819XAGCTAB_5GArray Rtl8192DUAGCTAB_5GArray + #define Rtl819XAGCTAB_2GArray Rtl8192DUAGCTAB_2GArray + #define Rtl819XPHY_REG_2TArray Rtl8192DUPHY_REG_2TArray + #define Rtl819XPHY_REG_1TArray Rtl8192DUPHY_REG_1TArray + #define Rtl819XRadioA_2TArray Rtl8192DURadioA_2TArray + #define Rtl819XRadioA_1TArray Rtl8192DURadioA_1TArray + #define Rtl819XRadioA_2T_intPAArray Rtl8192DURadioA_2T_intPAArray + #define Rtl819XRadioB_2TArray Rtl8192DURadioB_2TArray + #define Rtl819XRadioB_1TArray Rtl8192DURadioB_1TArray + #define Rtl819XRadioB_2T_intPAArray Rtl8192DURadioB_2T_intPAArray + #define Rtl819XPHY_REG_Array_PG Rtl8192DUPHY_REG_Array_PG + #define Rtl819XPHY_REG_Array_MP Rtl8192DUPHY_REG_Array_MP + + #define Rtl819XAGCTAB_2TArray Rtl8192DUAGCTAB_2TArray + #define Rtl819XAGCTAB_1TArray Rtl8192DUAGCTAB_1TArray*/ + +#endif + +#define DRVINFO_SZ 4 // unit is 8bytes +#define PageNum_128(_Len) (u32)(((_Len)>>7) + ((_Len)&0x7F ? 1:0)) + +// +// Check if FW header exists. We do not consider the lower 4 bits in this case. +// By tynli. 2009.12.04. +// +#define IS_FW_HEADER_EXIST(_pFwHdr) ((le16_to_cpu(_pFwHdr->Signature)&0xFFF0) == 0x92C0 ||\ + (le16_to_cpu(_pFwHdr->Signature)&0xFFF0) == 0x88C0 ||\ + (le16_to_cpu(_pFwHdr->Signature)&0xFFFF) == 0x92D0 ||\ + (le16_to_cpu(_pFwHdr->Signature)&0xFFFF) == 0x92D1 ||\ + (le16_to_cpu(_pFwHdr->Signature)&0xFFFF) == 0x92D2 ||\ + (le16_to_cpu(_pFwHdr->Signature)&0xFFFF) == 0x92D3 ) + +#define FW_8192D_SIZE 0x8020 // Max FW len = 32k + 32(FW header length). +#define FW_8192D_START_ADDRESS 0x1000 +#define FW_8192D_END_ADDRESS 0x1FFF + +#define MAX_PAGE_SIZE 4096 // @ page : 4k bytes + +typedef enum _FIRMWARE_SOURCE{ + FW_SOURCE_IMG_FILE = 0, + FW_SOURCE_HEADER_FILE = 1, //from header file +}FIRMWARE_SOURCE, *PFIRMWARE_SOURCE; + +typedef struct _RT_FIRMWARE{ + FIRMWARE_SOURCE eFWSource; + u8* szFwBuffer; + u32 ulFwLength; +#ifdef CONFIG_WOWLAN + u8* szWoWLANFwBuffer; + u32 ulWoWLANFwLength; +#endif //CONFIG_WOWLAN +}RT_FIRMWARE, *PRT_FIRMWARE, RT_FIRMWARE_92D, *PRT_FIRMWARE_92D; + +// +// This structure must be cared byte-ordering +// +// Added by tynli. 2009.12.04. +typedef struct _RT_8192D_FIRMWARE_HDR {//8-byte alinment required + + //--- LONG WORD 0 ---- + u16 Signature; // 92C0: test chip; 92C, 88C0: test chip; 88C1: MP A-cut; 92C1: MP A-cut + u8 Category; // AP/NIC and USB/PCI + u8 Function; // Reserved for different FW function indcation, for further use when driver needs to download different FW in different conditions + u16 Version; // FW Version + u8 Subversion; // FW Subversion, default 0x00 + u8 Rsvd1; + + + //--- LONG WORD 1 ---- + u8 Month; // Release time Month field + u8 Date; // Release time Date field + u8 Hour; // Release time Hour field + u8 Minute; // Release time Minute field + u16 RamCodeSize; // The size of RAM code + u16 Rsvd2; + + //--- LONG WORD 2 ---- + u32 SvnIdx; // The SVN entry index + u32 Rsvd3; + + //--- LONG WORD 3 ---- + u32 Rsvd4; + u32 Rsvd5; + +}RT_8192D_FIRMWARE_HDR, *PRT_8192D_FIRMWARE_HDR; + +#define DRIVER_EARLY_INT_TIME 0x05 +#define BCN_DMA_ATIME_INT_TIME 0x02 + +typedef enum _BT_CoType{ + BT_2Wire = 0, + BT_ISSC_3Wire = 1, + BT_Accel = 2, + BT_CSR = 3, + BT_CSR_ENHAN = 4, + BT_RTL8756 = 5, +} BT_CoType, *PBT_CoType; + +typedef enum _BT_CurState{ + BT_OFF = 0, + BT_ON = 1, +} BT_CurState, *PBT_CurState; + +typedef enum _BT_ServiceType{ + BT_SCO = 0, + BT_A2DP = 1, + BT_HID = 2, + BT_HID_Idle = 3, + BT_Scan = 4, + BT_Idle = 5, + BT_OtherAction = 6, + BT_Busy = 7, + BT_OtherBusy = 8, +} BT_ServiceType, *PBT_ServiceType; + +typedef enum _BT_RadioShared{ + BT_Radio_Shared = 0, + BT_Radio_Individual = 1, +} BT_RadioShared, *PBT_RadioShared; + +typedef struct _BT_COEXIST_STR{ + u8 BluetoothCoexist; + u8 BT_Ant_Num; + u8 BT_CoexistType; + u8 BT_State; + u8 BT_CUR_State; //0:on, 1:off + u8 BT_Ant_isolation; //0:good, 1:bad + u8 BT_PapeCtrl; //0:SW, 1:SW/HW dynamic + u8 BT_Service; + u8 BT_RadioSharedType; + u8 Ratio_Tx; + u8 Ratio_PRI; +}BT_COEXIST_STR, *PBT_COEXIST_STR; + +//Added for 92D IQK setting. +typedef struct _IQK_MATRIX_REGS_SETTING{ + BOOLEAN bIQKDone; +#if 1 + int Value[1][IQK_Matrix_REG_NUM]; +#else + u32 Mark[IQK_Matrix_REG_NUM]; + u32 Value[IQK_Matrix_REG_NUM]; +#endif +}IQK_MATRIX_REGS_SETTING,*PIQK_MATRIX_REGS_SETTING; + +#ifdef CONFIG_USB_RX_AGGREGATION + +typedef enum _USB_RX_AGG_MODE{ + USB_RX_AGG_DISABLE, + USB_RX_AGG_DMA, + USB_RX_AGG_USB, + USB_RX_AGG_DMA_USB +}USB_RX_AGG_MODE; + +#define MAX_RX_DMA_BUFFER_SIZE 10240 // 10K for 8192C RX DMA buffer + +#endif + + +#define TX_SELE_HQ BIT(0) // High Queue +#define TX_SELE_LQ BIT(1) // Low Queue +#define TX_SELE_NQ BIT(2) // Normal Queue + + +// Note: We will divide number of page equally for each queue other than public queue! + +#define TX_TOTAL_PAGE_NUMBER 0xF8 +#define TX_PAGE_BOUNDARY (TX_TOTAL_PAGE_NUMBER + 1) + +// For Normal Chip Setting +// (HPQ + LPQ + NPQ + PUBQ) shall be TX_TOTAL_PAGE_NUMBER +#define NORMAL_PAGE_NUM_PUBQ 0x56 + + +// For Test Chip Setting +// (HPQ + LPQ + PUBQ) shall be TX_TOTAL_PAGE_NUMBER +#define TEST_PAGE_NUM_PUBQ_92DU 0x89 +#define TX_TOTAL_PAGE_NUMBER_92D_DUAL_MAC 0x7A +#define NORMAL_PAGE_NUM_PUBQ_92D_DUAL_MAC 0x5A +#define NORMAL_PAGE_NUM_HPQ_92D_DUAL_MAC 0x10 +#define NORMAL_PAGE_NUM_LPQ_92D_DUAL_MAC 0x10 +#define NORMAL_PAGE_NUM_NORMALQ_92D_DUAL_MAC 0 + +#define TX_PAGE_BOUNDARY_DUAL_MAC (TX_TOTAL_PAGE_NUMBER_92D_DUAL_MAC + 1) + +// For Test Chip Setting +#define WMM_TEST_TX_TOTAL_PAGE_NUMBER 0xF5 +#define WMM_TEST_TX_PAGE_BOUNDARY (WMM_TEST_TX_TOTAL_PAGE_NUMBER + 1) //F6 + +#define WMM_TEST_PAGE_NUM_PUBQ 0xA3 +#define WMM_TEST_PAGE_NUM_HPQ 0x29 +#define WMM_TEST_PAGE_NUM_LPQ 0x29 + + +//Note: For Normal Chip Setting ,modify later +#define WMM_NORMAL_TX_TOTAL_PAGE_NUMBER 0xF5 +#define WMM_NORMAL_TX_PAGE_BOUNDARY (WMM_TEST_TX_TOTAL_PAGE_NUMBER + 1) //F6 + +#define WMM_NORMAL_PAGE_NUM_PUBQ_92D 0X65//0x82 +#define WMM_NORMAL_PAGE_NUM_HPQ_92D 0X30//0x29 +#define WMM_NORMAL_PAGE_NUM_LPQ_92D 0X30 +#define WMM_NORMAL_PAGE_NUM_NPQ_92D 0X30 + +#define WMM_NORMAL_PAGE_NUM_PUBQ_92D_DUAL_MAC 0X32 +#define WMM_NORMAL_PAGE_NUM_HPQ_92D_DUAL_MAC 0X18 +#define WMM_NORMAL_PAGE_NUM_LPQ_92D_DUAL_MAC 0X18 +#define WMM_NORMAL_PAGE_NUM_NPQ_92D_DUAL_MAC 0X18 + +//------------------------------------------------------------------------- +// Chip specific +//------------------------------------------------------------------------- + +#define CHIP_BONDING_IDENTIFIER(_value) (((_value)>>22)&0x3) +#define CHIP_BONDING_92C_1T2R 0x1 +#define CHIP_BONDING_88C_USB_MCARD 0x2 +#define CHIP_BONDING_88C_USB_HP 0x1 + +// +// 2011.01.06. Define new structure of chip version for RTL8723 and so on. Added by tynli. +// +/* + | BIT15:12 | BIT11:8 | BIT 7 | BIT6:4 | BIT3 | BIT2:0 | + |-------------+-----------+-----------+-------+-----------+-------| + | IC version(CUT) | ROM version | Manufacturer | RF type | Chip type | IC Type | + | | | TSMC/UMC | | TEST/NORMAL| | +*/ +// [15:12] IC version(CUT): A-cut=0, B-cut=1, C-cut=2, D-cut=3 +// [7] Manufacturer: TSMC=0, UMC=1 +// [6:4] RF type: 1T1R=0, 1T2R=1, 2T2R=2 +// [3] Chip type: TEST=0, NORMAL=1 +// [2:0] IC type: 81xxC=0, 8723=1, 92D=2 + +#define CHIP_8723 BIT(0) +#define CHIP_92D BIT(1) +#define NORMAL_CHIP BIT(3) +#define RF_TYPE_1T1R (~(BIT(4)|BIT(5)|BIT(6))) +#define RF_TYPE_1T2R BIT(4) +#define RF_TYPE_2T2R BIT(5) +#define CHIP_VENDOR_UMC BIT(7) +#define B_CUT_VERSION BIT(12) +#define C_CUT_VERSION BIT(13) +#define D_CUT_VERSION ((BIT(12)|BIT(13))) +#define E_CUT_VERSION BIT(14) + + +// MASK +#define IC_TYPE_MASK (BIT(0)|BIT(1)|BIT(2)) +#define CHIP_TYPE_MASK BIT(3) +#define RF_TYPE_MASK (BIT(4)|BIT(5)|BIT(6)) +#define MANUFACTUER_MASK BIT(7) +#define ROM_VERSION_MASK (BIT(11)|BIT(10)|BIT(9)|BIT(8)) +#define CUT_VERSION_MASK (BIT(15)|BIT(14)|BIT(13)|BIT(12)) + +// Get element +#define GET_CVID_IC_TYPE(version) ((version) & IC_TYPE_MASK) +#define GET_CVID_CHIP_TYPE(version) ((version) & CHIP_TYPE_MASK) +#define GET_CVID_RF_TYPE(version) ((version) & RF_TYPE_MASK) +#define GET_CVID_MANUFACTUER(version) ((version) & MANUFACTUER_MASK) +#define GET_CVID_ROM_VERSION(version) ((version) & ROM_VERSION_MASK) +#define GET_CVID_CUT_VERSION(version) ((version) & CUT_VERSION_MASK) + +#define IS_81XXC(version) ((GET_CVID_IC_TYPE(version) == 0)? _TRUE : _FALSE) +#define IS_8723_SERIES(version) ((GET_CVID_IC_TYPE(version) == CHIP_8723)? _TRUE : _FALSE) +#define IS_92D(version) ((GET_CVID_IC_TYPE(version) == CHIP_92D)? _TRUE : _FALSE) +#define IS_1T1R(version) ((GET_CVID_RF_TYPE(version))? _FALSE : _TRUE) +#define IS_1T2R(version) ((GET_CVID_RF_TYPE(version) == RF_TYPE_1T2R)? _TRUE : _FALSE) +#define IS_2T2R(version) ((GET_CVID_RF_TYPE(version) == RF_TYPE_2T2R)? _TRUE : _FALSE) +#define IS_CHIP_VENDOR_UMC(version) ((GET_CVID_MANUFACTUER(version))? _TRUE: _FALSE) + +#define IS_92C_SERIAL(version) ((IS_81XXC(version) && IS_2T2R(version)) ? _TRUE : _FALSE) +#define IS_VENDOR_UMC_A_CUT(version) ((IS_CHIP_VENDOR_UMC(version)) ? ((GET_CVID_CUT_VERSION(version)) ? _FALSE : _TRUE) : _FALSE) +#define IS_VENDOR_8723_A_CUT(version) ((IS_8723_SERIES(version)) ? ((GET_CVID_CUT_VERSION(version)) ? _FALSE : _TRUE) : _FALSE) +// 88/92C UMC B-cut vendor is set to TSMC so we need to check CHIP_VENDOR_UMC bit is not 1. +#define IS_81xxC_VENDOR_UMC_B_CUT(version) ((IS_CHIP_VENDOR_UMC(version)) ? ((GET_CVID_CUT_VERSION(version) == B_CUT_VERSION) ? _TRUE : _FALSE):_FALSE) +#define IS_92D_SINGLEPHY(version) ((IS_92D(version)) ? (IS_2T2R(version) ? _TRUE: _FALSE) : _FALSE) + +#define IS_92D_C_CUT(version) ((IS_92D(version)) ? ((GET_CVID_CUT_VERSION(version) == C_CUT_VERSION) ? _TRUE : _FALSE) : _FALSE) +#define IS_92D_D_CUT(version) ((IS_92D(version)) ? ((GET_CVID_CUT_VERSION(version) == D_CUT_VERSION) ? _TRUE : _FALSE) : _FALSE) +#define IS_92D_E_CUT(version) ((IS_92D(version)) ? ((GET_CVID_CUT_VERSION(version) == E_CUT_VERSION) ? _TRUE : _FALSE) : _FALSE) +#define IS_NORMAL_CHIP92D(version) ((GET_CVID_CHIP_TYPE(version))? _TRUE: _FALSE) + +typedef enum _VERSION_8192D{ + VERSION_TEST_CHIP_88C = 0x0000, + VERSION_TEST_CHIP_92C = 0x0020, + VERSION_TEST_UMC_CHIP_8723 = 0x0081, + VERSION_NORMAL_TSMC_CHIP_88C = 0x0008, + VERSION_NORMAL_TSMC_CHIP_92C = 0x0028, + VERSION_NORMAL_TSMC_CHIP_92C_1T2R = 0x0018, + VERSION_NORMAL_UMC_CHIP_88C_A_CUT = 0x0088, + VERSION_NORMAL_UMC_CHIP_92C_A_CUT = 0x00a8, + VERSION_NORMAL_UMC_CHIP_92C_1T2R_A_CUT = 0x0098, + VERSION_NORMAL_UMC_CHIP_8723_1T1R_A_CUT = 0x0089, + VERSION_NORMAL_UMC_CHIP_8723_1T1R_B_CUT = 0x1089, + VERSION_NORMAL_UMC_CHIP_88C_B_CUT = 0x1088, + VERSION_NORMAL_UMC_CHIP_92C_B_CUT = 0x10a8, + VERSION_NORMAL_UMC_CHIP_92C_1T2R_B_CUT = 0x1090, + VERSION_TEST_CHIP_92D_SINGLEPHY= 0x0022, + VERSION_TEST_CHIP_92D_DUALPHY = 0x0002, + VERSION_NORMAL_CHIP_92D_SINGLEPHY= 0x002a, + VERSION_NORMAL_CHIP_92D_DUALPHY = 0x000a, + VERSION_NORMAL_CHIP_92D_C_CUT_SINGLEPHY = 0x202a, + VERSION_NORMAL_CHIP_92D_C_CUT_DUALPHY = 0x200a, + VERSION_NORMAL_CHIP_92D_D_CUT_SINGLEPHY = 0x302a, + VERSION_NORMAL_CHIP_92D_D_CUT_DUALPHY = 0x300a, + VERSION_NORMAL_CHIP_92D_E_CUT_SINGLEPHY = 0x402a, + VERSION_NORMAL_CHIP_92D_E_CUT_DUALPHY = 0x400a, +}VERSION_8192D,*PVERSION_8192D; + + +//------------------------------------------------------------------------- +// Channel Plan +//------------------------------------------------------------------------- +enum ChannelPlan{ + CHPL_FCC = 0, + CHPL_IC = 1, + CHPL_ETSI = 2, + CHPL_SPAIN = 3, + CHPL_FRANCE = 4, + CHPL_MKK = 5, + CHPL_MKK1 = 6, + CHPL_ISRAEL = 7, + CHPL_TELEC = 8, + CHPL_GLOBAL = 9, + CHPL_WORLD = 10, +}; + +typedef struct _TxPowerInfo{ + u8 CCKIndex[RF_PATH_MAX][CHANNEL_GROUP_MAX]; + u8 HT40_1SIndex[RF_PATH_MAX][CHANNEL_GROUP_MAX]; + u8 HT40_2SIndexDiff[RF_PATH_MAX][CHANNEL_GROUP_MAX]; + s8 HT20IndexDiff[RF_PATH_MAX][CHANNEL_GROUP_MAX]; + u8 OFDMIndexDiff[RF_PATH_MAX][CHANNEL_GROUP_MAX]; + u8 HT40MaxOffset[RF_PATH_MAX][CHANNEL_GROUP_MAX]; + u8 HT20MaxOffset[RF_PATH_MAX][CHANNEL_GROUP_MAX]; + u8 TSSI_A[3]; + u8 TSSI_B[3]; + u8 TSSI_A_5G[3]; //5GL/5GM/5GH + u8 TSSI_B_5G[3]; +}TxPowerInfo, *PTxPowerInfo; + +#define EFUSE_REAL_CONTENT_LEN 1024 +#define EFUSE_MAP_LEN 256 +#define EFUSE_MAX_SECTION 32 +#define EFUSE_MAX_SECTION_BASE 16 +// To prevent out of boundary programming case, leave 1byte and program full section +// 9bytes + 1byt + 5bytes and pre 1byte. +// For worst case: +// | 2byte|----8bytes----|1byte|--7bytes--| //92D +#define EFUSE_OOB_PROTECT_BYTES 18 // PG data exclude header, dummy 7 bytes frome CP test and reserved 1byte. + +typedef enum _PA_MODE { + PA_MODE_EXTERNAL = 0x00, + PA_MODE_INTERNAL_SP3T = 0x01, + PA_MODE_INTERNAL_SPDT = 0x02 +} PA_MODE; + +/* Copy from rtl8192c */ +enum c2h_id_8192d { + C2H_DBG = 0, + C2H_TSF = 1, + C2H_AP_RPT_RSP = 2, + C2H_CCX_TX_RPT = 3, + C2H_BT_RSSI = 4, + C2H_BT_OP_MODE = 5, + C2H_EXT_RA_RPT = 6, + C2H_HW_INFO_EXCH = 10, + C2H_C2H_H2C_TEST = 11, + C2H_BT_INFO = 12, + C2H_BT_MP_INFO = 15, + MAX_C2HEVENT +}; + +#ifdef CONFIG_PCI_HCI +struct hal_data_8192de +{ + VERSION_8192D VersionID; + + // add for 92D Phy mode/mac/Band mode + MACPHY_MODE_8192D MacPhyMode92D; + BAND_TYPE CurrentBandType92D; //0:2.4G, 1:5G + BAND_TYPE BandSet92D; + BOOLEAN bIsVS; + BOOLEAN bSupportRemoteWakeUp; + u8 AutoLoadStatusFor8192D; + + BOOLEAN bNOPG; + + BOOLEAN bMasterOfDMSP; + BOOLEAN bSlaveOfDMSP; + + u16 CustomerID; + + u16 FirmwareVersion; + u16 FirmwareVersionRev; + u16 FirmwareSubVersion; + + u32 IntrMask[2]; + u32 IntrMaskToSet[2]; + + u32 DisabledFunctions; + + //current WIFI_PHY values + u32 ReceiveConfig; + u32 TransmitConfig; + WIRELESS_MODE CurrentWirelessMode; + HT_CHANNEL_WIDTH CurrentChannelBW; + u8 CurrentChannel; + u8 nCur40MhzPrimeSC;// Control channel sub-carrier + u16 BasicRateSet; + + //rf_ctrl + u8 rf_chip; + u8 rf_type; + u8 NumTotalRFPath; + + // + // EEPROM setting. + // + u16 EEPROMVID; + u16 EEPROMDID; + u16 EEPROMSVID; + u16 EEPROMSMID; + u16 EEPROMChannelPlan; + u16 EEPROMVersion; + + u8 EEPROMCustomerID; + u8 EEPROMBoardType; + u8 EEPROMRegulatory; + + u8 EEPROMThermalMeter; + + u8 EEPROMC9; + u8 EEPROMCC; + u8 PAMode; + + u8 TxPwrLevelCck[RF_PATH_MAX][CHANNEL_MAX_NUMBER_2G]; + u8 TxPwrLevelHT40_1S[RF_PATH_MAX][CHANNEL_MAX_NUMBER]; // For HT 40MHZ pwr + u8 TxPwrLevelHT40_2S[RF_PATH_MAX][CHANNEL_MAX_NUMBER]; // For HT 40MHZ pwr + s8 TxPwrHt20Diff[RF_PATH_MAX][CHANNEL_MAX_NUMBER];// HT 20<->40 Pwr diff + u8 TxPwrLegacyHtDiff[RF_PATH_MAX][CHANNEL_MAX_NUMBER];// For HT<->legacy pwr diff + // For power group + u8 PwrGroupHT20[RF_PATH_MAX][CHANNEL_MAX_NUMBER]; + u8 PwrGroupHT40[RF_PATH_MAX][CHANNEL_MAX_NUMBER]; + + u8 LegacyHTTxPowerDiff;// Legacy to HT rate power diff + + u8 CrystalCap; // CrystalCap. + +#ifdef CONFIG_BT_COEXIST + struct btcoexist_priv bt_coexist; +#endif + + // Read/write are allow for following hardware information variables + u8 framesync; + u32 framesyncC34; + u8 framesyncMonitor; + u8 DefaultInitialGain[4]; + u8 pwrGroupCnt; + u32 MCSTxPowerLevelOriginalOffset[MAX_PG_GROUP][16]; + u32 CCKTxPowerLevelOriginalOffset; + + u32 AntennaTxPath; // Antenna path Tx + u32 AntennaRxPath; // Antenna path Rx + u8 BluetoothCoexist; + u8 ExternalPA; + u8 InternalPA5G[2]; //pathA / pathB + + //u32 LedControlNum; + //u32 LedControlMode; + //u32 TxPowerTrackControl; + u8 b1x1RecvCombine; // for 1T1R receive combining + + u8 bCurrentTurboEDCA; + u32 AcParam_BE; //Original parameter for BE, use for EDCA turbo. + + //vivi, for tx power tracking, 20080407 + //u16 TSSI_13dBm; + //u32 Pwr_Track; + // The current Tx Power Level + u8 CurrentCckTxPwrIdx; + u8 CurrentOfdm24GTxPwrIdx; + + BB_REGISTER_DEFINITION_T PHYRegDef[4]; //Radio A/B/C/D + + BOOLEAN bRFPathRxEnable[4]; // We support 4 RF path now. + + u32 RfRegChnlVal[2]; + + u8 bCckHighPower; + + BOOLEAN bPhyValueInitReady; + + BOOLEAN bTXPowerDataReadFromEEPORM; + + BOOLEAN bInSetPower; + + //RDG enable + BOOLEAN bRDGEnable; + + BOOLEAN bLoadIMRandIQKSettingFor2G;// True if IMR or IQK have done for 2.4G in scan progress + BOOLEAN bNeedIQK; + + BOOLEAN bLCKInProgress; + + BOOLEAN bEarlyModeEnable; + +#if 1 + IQK_MATRIX_REGS_SETTING IQKMatrixRegSetting[IQK_Matrix_Settings_NUM]; +#else + //regc80¡¢regc94¡¢regc4c¡¢regc88¡¢regc9c¡¢regc14¡¢regca0¡¢regc1c¡¢regc78 + u4Byte IQKMatrixReg[IQK_Matrix_REG_NUM]; + IQK_MATRIX_REGS_SETTING IQKMatrixRegSetting[IQK_Matrix_Settings_NUM]; // 1->2G,24->5G 20M channel,21->5G 40M channel. +#endif + + //for host message to fw + u8 LastHMEBoxNum; + + u8 fw_ractrl; + // Beacon function related global variable. + u32 RegBcnCtrlVal; + u8 RegTxPause; + u8 RegFwHwTxQCtrl; + u8 RegReg542; + u8 RegCR_1; + + struct dm_priv dmpriv; + + u8 bInterruptMigration; + + u8 FwRsvdPageStartOffset; //2010.06.23. Added by tynli. Reserve page start offset except beacon in TxQ. + + // Add for dual MAC 0--Mac0 1--Mac1 + u32 interfaceIndex; + + u16 RegRRSR; + + u16 EfuseUsedBytes; + u8 RTSInitRate; // 2010.11.24.by tynli. +#ifdef CONFIG_P2P + struct P2P_PS_Offload_t p2p_ps_offload; +#endif //CONFIG_P2P +}; + +typedef struct hal_data_8192de HAL_DATA_TYPE, *PHAL_DATA_TYPE; + +// +// Function disabled. +// +#define DF_TX_BIT BIT0 +#define DF_RX_BIT BIT1 +#define DF_IO_BIT BIT2 +#define DF_IO_D3_BIT BIT3 + +#define RT_DF_TYPE u32 +#define RT_DISABLE_FUNC(__pAdapter, __FuncBits) ((__pAdapter)->DisabledFunctions |= ((RT_DF_TYPE)(__FuncBits))) +#define RT_ENABLE_FUNC(__pAdapter, __FuncBits) ((__pAdapter)->DisabledFunctions &= (~((RT_DF_TYPE)(__FuncBits)))) +#define RT_IS_FUNC_DISABLED(__pAdapter, __FuncBits) ( (__pAdapter)->DisabledFunctions & (__FuncBits) ) + +void InterruptRecognized8192DE(PADAPTER Adapter, PRT_ISR_CONTENT pIsrContent); +VOID UpdateInterruptMask8192DE(PADAPTER Adapter, u32 AddMSR, u32 RemoveMSR); +#endif + +#ifdef CONFIG_USB_HCI + +//should be renamed and moved to another file +typedef enum _INTERFACE_SELECT_8192DUSB{ + INTF_SEL0_USB = 0, // USB + INTF_SEL1_MINICARD = 1, // Minicard + INTF_SEL2_EKB_PRO = 2, // Eee keyboard proprietary + INTF_SEL3_PRO = 3, // Customized proprietary +} INTERFACE_SELECT_8192DUSB, *PINTERFACE_SELECT_8192DUSB; + +typedef INTERFACE_SELECT_8192DUSB INTERFACE_SELECT_USB; + +struct hal_data_8192du +{ + VERSION_8192D VersionID; + + // add for 92D Phy mode/mac/Band mode + MACPHY_MODE_8192D MacPhyMode92D; + BAND_TYPE CurrentBandType92D; //0:2.4G, 1:5G + BAND_TYPE BandSet92D; + BOOLEAN bIsVS; + + BOOLEAN bNOPG; + + BOOLEAN bSupportRemoteWakeUp; + BOOLEAN bMasterOfDMSP; + BOOLEAN bSlaveOfDMSP; +#ifdef CONFIG_DUALMAC_CONCURRENT + BOOLEAN bInModeSwitchProcess; +#endif + + u16 CustomerID; + + u16 FirmwareVersion; + u16 FirmwareVersionRev; + u16 FirmwareSubVersion; + + //current WIFI_PHY values + u32 ReceiveConfig; + WIRELESS_MODE CurrentWirelessMode; + HT_CHANNEL_WIDTH CurrentChannelBW; + u8 CurrentChannel; + u8 nCur40MhzPrimeSC;// Control channel sub-carrier + u16 BasicRateSet; + + INTERFACE_SELECT_8192DUSB InterfaceSel; + + //rf_ctrl + u8 rf_chip; + u8 rf_type; + u8 NumTotalRFPath; + + // + // EEPROM setting. + // + u8 EEPROMVersion; + u16 EEPROMVID; + u16 EEPROMPID; + u16 EEPROMSVID; + u16 EEPROMSDID; + u8 EEPROMCustomerID; + u8 EEPROMSubCustomerID; + u8 EEPROMRegulatory; + + u8 EEPROMThermalMeter; + + u8 EEPROMC9; + u8 EEPROMCC; + u8 PAMode; + + u8 TxPwrLevelCck[RF_PATH_MAX][CHANNEL_MAX_NUMBER_2G]; + u8 TxPwrLevelHT40_1S[RF_PATH_MAX][CHANNEL_MAX_NUMBER]; // For HT 40MHZ pwr + u8 TxPwrLevelHT40_2S[RF_PATH_MAX][CHANNEL_MAX_NUMBER]; // For HT 40MHZ pwr + s8 TxPwrHt20Diff[RF_PATH_MAX][CHANNEL_MAX_NUMBER];// HT 20<->40 Pwr diff + u8 TxPwrLegacyHtDiff[RF_PATH_MAX][CHANNEL_MAX_NUMBER];// For HT<->legacy pwr diff + // For power group + u8 PwrGroupHT20[RF_PATH_MAX][CHANNEL_MAX_NUMBER]; + u8 PwrGroupHT40[RF_PATH_MAX][CHANNEL_MAX_NUMBER]; + + u8 LegacyHTTxPowerDiff;// Legacy to HT rate power diff + + u8 CrystalCap; // CrystalCap. + +#ifdef CONFIG_BT_COEXIST + struct btcoexist_priv bt_coexist; +#endif + + // Read/write are allow for following hardware information variables + u8 framesync; + u32 framesyncC34; + u8 framesyncMonitor; + u8 DefaultInitialGain[4]; + u8 pwrGroupCnt; + u32 MCSTxPowerLevelOriginalOffset[MAX_PG_GROUP][16]; + u32 CCKTxPowerLevelOriginalOffset; + + u32 AntennaTxPath; // Antenna path Tx + u32 AntennaRxPath; // Antenna path Rx + u8 BluetoothCoexist; + u8 ExternalPA; + u8 InternalPA5G[2]; //pathA / pathB + + //u32 LedControlNum; + //u32 LedControlMode; + //u32 TxPowerTrackControl; + u8 b1x1RecvCombine; // for 1T1R receive combining + + u8 bCurrentTurboEDCA; + u32 AcParam_BE; //Original parameter for BE, use for EDCA turbo. + + //vivi, for tx power tracking, 20080407 + //u16 TSSI_13dBm; + //u32 Pwr_Track; + // The current Tx Power Level + u8 CurrentCckTxPwrIdx; + u8 CurrentOfdm24GTxPwrIdx; + + BB_REGISTER_DEFINITION_T PHYRegDef[4]; //Radio A/B/C/D + + BOOLEAN bRFPathRxEnable[4]; // We support 4 RF path now. + + u32 RfRegChnlVal[2]; + + u8 bCckHighPower; + + BOOLEAN bPhyValueInitReady; + + BOOLEAN bTXPowerDataReadFromEEPORM; + + BOOLEAN bInSetPower; + + //RDG enable + BOOLEAN bRDGEnable; + + BOOLEAN bLoadIMRandIQKSettingFor2G;// True if IMR or IQK have done for 2.4G in scan progress + BOOLEAN bNeedIQK; + + BOOLEAN bLCKInProgress; + + BOOLEAN bEarlyModeEnable; + +#if 1 + IQK_MATRIX_REGS_SETTING IQKMatrixRegSetting[IQK_Matrix_Settings_NUM]; +#else + //regc80¡¢regc94¡¢regc4c¡¢regc88¡¢regc9c¡¢regc14¡¢regca0¡¢regc1c¡¢regc78 + u4Byte IQKMatrixReg[IQK_Matrix_REG_NUM]; + IQK_MATRIX_REGS_SETTING IQKMatrixRegSetting[IQK_Matrix_Settings_NUM]; // 1->2G,24->5G 20M channel,21->5G 40M channel. +#endif + + //for host message to fw + u8 LastHMEBoxNum; + + u8 fw_ractrl; + // Beacon function related global variable. + u32 RegBcnCtrlVal; + u8 RegTxPause; + u8 RegFwHwTxQCtrl; + u8 RegReg542; + u8 RegCR_1; + + struct dm_priv dmpriv; + + u8 FwRsvdPageStartOffset; //2010.06.23. Added by tynli. Reserve page start offset except beacon in TxQ. + + //Query RF by FW + BOOLEAN bReadRFbyFW; + + // For 92C USB endpoint setting + // + + u32 UsbBulkOutSize; + + int RtBulkOutPipe[3]; + int RtBulkInPipe; + int RtIntInPipe; + + // Add for dual MAC 0--Mac0 1--Mac1 + u32 interfaceIndex; + + u8 OutEpQueueSel; + u8 OutEpNumber; + + u8 Queue2EPNum[8];//for out endpoint number mapping + +#ifdef CONFIG_USB_TX_AGGREGATION + u8 UsbTxAggMode; + u8 UsbTxAggDescNum; +#endif +#ifdef CONFIG_USB_RX_AGGREGATION + u16 HwRxPageSize; // Hardware setting + u32 MaxUsbRxAggBlock; + + USB_RX_AGG_MODE UsbRxAggMode; + u8 UsbRxAggBlockCount; // USB Block count. Block size is 512-byte in hight speed and 64-byte in full speed + u8 UsbRxAggBlockTimeout; + u8 UsbRxAggPageCount; // 8192C DMA page count + u8 UsbRxAggPageTimeout; +#endif + + u16 RegRRSR; + + u16 EfuseUsedBytes; + u8 RTSInitRate; // 2010.11.24.by tynli. +#ifdef CONFIG_P2P + struct P2P_PS_Offload_t p2p_ps_offload; +#endif //CONFIG_P2P +}; + +typedef struct hal_data_8192du HAL_DATA_TYPE, *PHAL_DATA_TYPE; +#endif + +#define GET_HAL_DATA(__pAdapter) ((HAL_DATA_TYPE *)((__pAdapter)->HalData)) +#define GET_RF_TYPE(priv) (GET_HAL_DATA(priv)->rf_type) + +int FirmwareDownload92D(IN PADAPTER Adapter,IN BOOLEAN bUsedWoWLANFw); +VOID rtl8192d_FirmwareSelfReset(IN PADAPTER Adapter); +void rtl8192d_ReadChipVersion(IN PADAPTER Adapter); +VOID rtl8192d_EfuseParseChnlPlan(PADAPTER Adapter, u8 *hwinfo, BOOLEAN AutoLoadFail); +VOID rtl8192d_ReadTxPowerInfo(PADAPTER Adapter, u8* PROMContent, BOOLEAN AutoLoadFail); +VOID rtl8192d_ResetDualMacSwitchVariables(IN PADAPTER Adapter); +u8 GetEEPROMSize8192D(PADAPTER Adapter); +BOOLEAN PHY_CheckPowerOffFor8192D(PADAPTER Adapter); +VOID PHY_SetPowerOnFor8192D(PADAPTER Adapter); +//void PHY_ConfigMacPhyMode92D(PADAPTER Adapter); +void rtl8192d_free_hal_data(_adapter * padapter); +void rtl8192d_set_hal_ops(struct hal_ops *pHalFunc); + +#endif + +#ifdef CONFIG_MP_INCLUDED + + +extern void Hal_SetAntenna(PADAPTER pAdapter); +extern void Hal_SetBandwidth(PADAPTER pAdapter); + +extern void Hal_SetTxPower(PADAPTER pAdapter); +extern void Hal_SetCarrierSuppressionTx(PADAPTER pAdapter, u8 bStart); +extern void Hal_SetSingleToneTx ( PADAPTER pAdapter , u8 bStart ); +extern void Hal_SetSingleCarrierTx (PADAPTER pAdapter, u8 bStart); +extern void Hal_SetContinuousTx (PADAPTER pAdapter, u8 bStart); +extern void Hal_SetBandwidth(PADAPTER pAdapter); + +extern void Hal_SetDataRate(PADAPTER pAdapter); +extern void Hal_SetChannel(PADAPTER pAdapter); +extern void Hal_SetAntennaPathPower(PADAPTER pAdapter); +extern s32 Hal_SetThermalMeter(PADAPTER pAdapter, u8 target_ther); +extern s32 Hal_SetPowerTracking(PADAPTER padapter, u8 enable); +extern void Hal_GetPowerTracking(PADAPTER padapter, u8 * enable); +extern void Hal_GetThermalMeter(PADAPTER pAdapter, u8 *value); +extern void Hal_mpt_SwitchRfSetting(PADAPTER pAdapter); +extern void Hal_MPT_CCKTxPowerAdjust(PADAPTER Adapter, BOOLEAN bInCH14); +extern void Hal_MPT_CCKTxPowerAdjustbyIndex(PADAPTER pAdapter, BOOLEAN beven); +extern void Hal_SetCCKTxPower(PADAPTER pAdapter, u8 * TxPower); +extern void Hal_SetOFDMTxPower(PADAPTER pAdapter, u8 * TxPower); +extern void Hal_TriggerRFThermalMeter(PADAPTER pAdapter); +extern u8 Hal_ReadRFThermalMeter(PADAPTER pAdapter); +extern void Hal_SetCCKContinuousTx(PADAPTER pAdapter, u8 bStart); +extern void Hal_SetOFDMContinuousTx(PADAPTER pAdapter, u8 bStart); + + +#endif //end CONFIG_MP_INCLUDED --- linux-raspi2-4.2.0.orig/drivers/net/wireless/rtl8192cu/include/rtl8192d_led.h +++ linux-raspi2-4.2.0/drivers/net/wireless/rtl8192cu/include/rtl8192d_led.h @@ -0,0 +1,42 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved. + * + * 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 + * published by the Free Software Foundation. + * + * 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 Street, Fifth Floor, Boston, MA 02110, USA + * + * + ******************************************************************************/ +#ifndef __RTL8192D_LED_H_ +#define __RTL8192D_LED_H_ + +#include +#include +#include + + +//================================================================================ +// Interface to manipulate LED objects. +//================================================================================ +#ifdef CONFIG_USB_HCI +void rtl8192du_InitSwLeds(_adapter *padapter); +void rtl8192du_DeInitSwLeds(_adapter *padapter); +#endif + +#ifdef CONFIG_PCI_HCI +void rtl8192de_gen_RefreshLedState(PADAPTER Adapter); +void rtl8192de_InitSwLeds(_adapter *padapter); +void rtl8192de_DeInitSwLeds(_adapter *padapter); +#endif + +#endif --- linux-raspi2-4.2.0.orig/drivers/net/wireless/rtl8192cu/include/rtl8192d_recv.h +++ linux-raspi2-4.2.0/drivers/net/wireless/rtl8192cu/include/rtl8192d_recv.h @@ -0,0 +1,186 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved. + * + * 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 + * published by the Free Software Foundation. + * + * 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 Street, Fifth Floor, Boston, MA 02110, USA + * + * + ******************************************************************************/ +#ifndef _RTL8192D_RECV_H_ +#define _RTL8192D_RECV_H_ + +#include +#include +#include + + +#ifdef PLATFORM_OS_XP + #ifdef CONFIG_SDIO_HCI + #define NR_RECVBUFF 1024//512//128 + #else + #define NR_RECVBUFF (16) + #endif +#elif defined(PLATFORM_OS_CE) + #ifdef CONFIG_SDIO_HCI + #define NR_RECVBUFF (128) + #else + #define NR_RECVBUFF (4) + #endif +#else +#ifdef CONFIG_SINGLE_RECV_BUF + #define NR_RECVBUFF (1) +#else + #define NR_RECVBUFF (4) +#endif //CONFIG_SINGLE_RECV_BUF + #define NR_PREALLOC_RECV_SKB (8) +#endif + + + +#define RECV_BLK_SZ 512 +#define RECV_BLK_CNT 16 +#define RECV_BLK_TH RECV_BLK_CNT + +#if defined(CONFIG_USB_HCI) + +#ifdef PLATFORM_OS_CE +#define MAX_RECVBUF_SZ (8192+1024) // 8K+1k +#else + #ifndef CONFIG_MINIMAL_MEMORY_USAGE + //#define MAX_RECVBUF_SZ (32768) // 32k + //#define MAX_RECVBUF_SZ (16384) //16K + //#define MAX_RECVBUF_SZ (10240) //10K + #ifdef CONFIG_PLATFORM_MSTAR + #define MAX_RECVBUF_SZ (8192) // 8K + #else + #define MAX_RECVBUF_SZ (15360) // 15k < 16k + #endif + #else + #define MAX_RECVBUF_SZ (4000) // about 4K + #endif +#endif + +#elif defined(CONFIG_PCI_HCI) +//#ifndef CONFIG_MINIMAL_MEMORY_USAGE +// #define MAX_RECVBUF_SZ (9100) +//#else + #define MAX_RECVBUF_SZ (4000) // about 4K +//#endif + +#define RX_MPDU_QUEUE 0 +#define RX_CMD_QUEUE 1 +#define RX_MAX_QUEUE 2 +#endif + +#define RECV_BULK_IN_ADDR 0x80 +#define RECV_INT_IN_ADDR 0x81 + +#define PHY_RSSI_SLID_WIN_MAX 100 +#define PHY_LINKQUALITY_SLID_WIN_MAX 20 + +struct phy_stat +{ + unsigned int phydw0; + + unsigned int phydw1; + + unsigned int phydw2; + + unsigned int phydw3; + + unsigned int phydw4; + + unsigned int phydw5; + + unsigned int phydw6; + + unsigned int phydw7; +}; + +typedef struct _Phy_OFDM_Rx_Status_Report_8192cd +{ + unsigned char trsw_gain_X[4]; + unsigned char pwdb_all; + unsigned char cfosho_X[4]; + unsigned char cfotail_X[4]; + unsigned char rxevm_X[2]; + unsigned char rxsnr_X[4]; + unsigned char pdsnr_X[2]; + unsigned char csi_current_X[2]; + unsigned char csi_target_X[2]; + unsigned char sigevm; + unsigned char max_ex_pwr; +//#ifdef RTL8192SE +#ifdef CONFIG_LITTLE_ENDIAN + unsigned char ex_intf_flg:1; + unsigned char sgi_en:1; + unsigned char rxsc:2; + //unsigned char rsvd:4; + unsigned char idle_long:1; + unsigned char r_ant_train_en:1; + unsigned char ANTSELB:1; + unsigned char ANTSEL:1; +#else // _BIG_ENDIAN_ + //unsigned char rsvd:4; + unsigned char ANTSEL:1; + unsigned char ANTSELB:1; + unsigned char r_ant_train_en:1; + unsigned char idle_long:1; + unsigned char rxsc:2; + unsigned char sgi_en:1; + unsigned char ex_intf_flg:1; +#endif +//#else // RTL8190, RTL8192E +// unsigned char sgi_en; +// unsigned char rxsc_sgien_exflg; +//#endif +}__attribute__ ((packed)) PHY_STS_OFDM_8192CD_T,PHY_RX_DRIVER_INFO_8192CD; + +typedef struct _Phy_CCK_Rx_Status_Report_8192cd +{ + /* For CCK rate descriptor. This is a signed 8:1 variable. LSB bit presend + 0.5. And MSB 7 bts presend a signed value. Range from -64~+63.5. */ + u8 adc_pwdb_X[4]; + u8 SQ_rpt; + u8 cck_agc_rpt; +} PHY_STS_CCK_8192CD_T; + +// Rx smooth factor +#define Rx_Smooth_Factor (20) + +#ifdef CONFIG_USB_HCI +typedef struct _INTERRUPT_MSG_FORMAT_EX{ + unsigned int C2H_MSG0; + unsigned int C2H_MSG1; + unsigned int C2H_MSG2; + unsigned int C2H_MSG3; + unsigned int HISR; // from HISR Reg0x124, read to clear + unsigned int HISRE;// from HISRE Reg0x12c, read to clear + unsigned int MSG_EX; +}INTERRUPT_MSG_FORMAT_EX,*PINTERRUPT_MSG_FORMAT_EX; + +void rtl8192du_init_recvbuf(_adapter *padapter, struct recv_buf *precvbuf); +int rtl8192du_init_recv_priv(_adapter * padapter); +void rtl8192du_free_recv_priv(_adapter * padapter); +#endif + +#ifdef CONFIG_PCI_HCI +int rtl8192de_init_recv_priv(_adapter * padapter); +void rtl8192de_free_recv_priv(_adapter * padapter); +#endif + +void rtl8192d_translate_rx_signal_stuff(union recv_frame *precvframe, struct phy_stat *pphy_info); +void rtl8192d_query_rx_desc_status(union recv_frame *precvframe, struct recv_stat *pdesc); + +#endif --- linux-raspi2-4.2.0.orig/drivers/net/wireless/rtl8192cu/include/rtl8192d_rf.h +++ linux-raspi2-4.2.0/drivers/net/wireless/rtl8192cu/include/rtl8192d_rf.h @@ -0,0 +1,96 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved. + * + * 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 + * published by the Free Software Foundation. + * + * 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 Street, Fifth Floor, Boston, MA 02110, USA + * + * + ******************************************************************************/ +/****************************************************************************** + * + * + * Module: rtl8192d_rf.h ( Header File) + * + * Note: Collect every HAL RF type exter API or constant. + * + * Function: + * + * Export: + * + * Abbrev: + * + * History: + * Data Who Remark + * + * 09/25/2008 MHC Create initial version. + * + * +******************************************************************************/ +#ifndef _RTL8192D_RF_H_ +#define _RTL8192D_RF_H_ +/* Check to see if the file has been included already. */ + + +/*--------------------------Define Parameters-------------------------------*/ + +// +// For RF 6052 Series +// +#define RF6052_MAX_TX_PWR 0x3F +#define RF6052_MAX_REG 0x3F +#define RF6052_MAX_PATH 2 +/*--------------------------Define Parameters-------------------------------*/ + + +/*------------------------------Define structure----------------------------*/ + +/*------------------------------Define structure----------------------------*/ + + +/*------------------------Export global variable----------------------------*/ +/*------------------------Export global variable----------------------------*/ + +/*------------------------Export Marco Definition---------------------------*/ + +/*------------------------Export Marco Definition---------------------------*/ + + +/*--------------------------Exported Function prototype---------------------*/ + +// +// RF RL6052 Series API +// +void rtl8192d_RF_ChangeTxPath( IN PADAPTER Adapter, + IN u16 DataRate); +void rtl8192d_PHY_RF6052SetBandwidth( + IN PADAPTER Adapter, + IN HT_CHANNEL_WIDTH Bandwidth); +VOID rtl8192d_PHY_RF6052SetCckTxPower( + IN PADAPTER Adapter, + IN u8* pPowerlevel); +VOID rtl8192d_PHY_RF6052SetOFDMTxPower( + IN PADAPTER Adapter, + IN u8* pPowerLevel, + IN u8 Channel); +int PHY_RF6052_Config8192D( IN PADAPTER Adapter ); + +BOOLEAN rtl8192d_PHY_EnableAnotherPHY(IN PADAPTER Adapter, IN BOOLEAN bMac0); + +void rtl8192d_PHY_PowerDownAnotherPHY(IN PADAPTER Adapter, IN BOOLEAN bMac0); + + +/*--------------------------Exported Function prototype---------------------*/ + + +#endif/* End of HalRf.h */ --- linux-raspi2-4.2.0.orig/drivers/net/wireless/rtl8192cu/include/rtl8192d_spec.h +++ linux-raspi2-4.2.0/drivers/net/wireless/rtl8192cu/include/rtl8192d_spec.h @@ -0,0 +1,1840 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved. + * + * 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 + * published by the Free Software Foundation. + * + * 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 Street, Fifth Floor, Boston, MA 02110, USA + * + * + ******************************************************************************/ + +#ifndef __RTL8192D_SPEC_H__ +#define __RTL8192D_SPEC_H__ + +#include + +#ifndef BIT +#define BIT(x) (1 << (x)) +#endif + +#define BIT0 0x00000001 +#define BIT1 0x00000002 +#define BIT2 0x00000004 +#define BIT3 0x00000008 +#define BIT4 0x00000010 +#define BIT5 0x00000020 +#define BIT6 0x00000040 +#define BIT7 0x00000080 +#define BIT8 0x00000100 +#define BIT9 0x00000200 +#define BIT10 0x00000400 +#define BIT11 0x00000800 +#define BIT12 0x00001000 +#define BIT13 0x00002000 +#define BIT14 0x00004000 +#define BIT15 0x00008000 +#define BIT16 0x00010000 +#define BIT17 0x00020000 +#define BIT18 0x00040000 +#define BIT19 0x00080000 +#define BIT20 0x00100000 +#define BIT21 0x00200000 +#define BIT22 0x00400000 +#define BIT23 0x00800000 +#define BIT24 0x01000000 +#define BIT25 0x02000000 +#define BIT26 0x04000000 +#define BIT27 0x08000000 +#define BIT28 0x10000000 +#define BIT29 0x20000000 +#define BIT30 0x40000000 +#define BIT31 0x80000000 + + +//============================================================ +// 8192D Regsiter offset definition +//============================================================ + + +//============================================================ +// +//============================================================ + +//----------------------------------------------------- +// +// 0x0000h ~ 0x00FFh System Configuration +// +//----------------------------------------------------- +#define REG_SYS_ISO_CTRL 0x0000 +#define REG_SYS_FUNC_EN 0x0002 +#define REG_APS_FSMCO 0x0004 +#define REG_SYS_CLKR 0x0008 +#define REG_9346CR 0x000A +#define REG_EE_VPD 0x000C +#define REG_AFE_MISC 0x0010 +#define REG_SPS0_CTRL 0x0011 +#define REG_POWER_OFF_IN_PROCESS 0x0017 +#define REG_SPS_OCP_CFG 0x0018 +#define REG_RSV_CTRL 0x001C +#define REG_RF_CTRL 0x001F +#define REG_LDOA15_CTRL 0x0020 +#define REG_LDOV12D_CTRL 0x0021 +#define REG_LDOHCI12_CTRL 0x0022 +#define REG_LPLDO_CTRL 0x0023 +#define REG_AFE_XTAL_CTRL 0x0024 +#define REG_AFE_PLL_CTRL 0x0028 +#define REG_MAC_PHY_CTRL 0x002c //for 92d, DMDP,SMSP,DMSP contrl +#define REG_EFUSE_CTRL 0x0030 +#define REG_EFUSE_TEST 0x0034 +#define REG_PWR_DATA 0x0038 +#define REG_CAL_TIMER 0x003C +#define REG_ACLK_MON 0x003E +#define REG_GPIO_MUXCFG 0x0040 +//#define REG_GPIO_MUXCFG 0x0041 +#define REG_GPIO_IO_SEL 0x0042 +#define REG_MAC_PINMUX_CFG 0x0043 +#define REG_GPIO_PIN_CTRL 0x0044 +#define REG_GPIO_INTM 0x0048 +#define REG_LEDCFG0 0x004C +#define REG_LEDCFG1 0x004D +#define REG_LEDCFG2 0x004E +#define REG_LEDCFG3 0x004F +#define REG_FSIMR 0x0050 +#define REG_FSISR 0x0054 + +#define REG_MCUFWDL 0x0080 +#ifdef CONFIG_WOWLAN +#define REG_WOWLAN_REASON 0x00FC +#endif // CONFIG_WOWLAN +#define REG_HMEBOX_EXT_0 0x0088 +#define REG_HMEBOX_EXT_1 0x008A +#define REG_HMEBOX_EXT_2 0x008C +#define REG_HMEBOX_EXT_3 0x008E + +#define REG_BIST_SCAN 0x00D0 +#define REG_BIST_RPT 0x00D4 +#define REG_BIST_ROM_RPT 0x00D8 +#define REG_USB_SIE_INTF 0x00E0 +#define REG_PCIE_MIO_INTF 0x00E4 +#define REG_PCIE_MIO_INTD 0x00E8 +#define REG_HPON_FSM 0x00EC +#define REG_SYS_CFG 0x00F0 +#define REG_MAC_PHY_CTRL_NORMAL 0x00f8 + +#define REG_MAC0 0x0081 +#define REG_MAC1 0x0053 +#define FW_MAC0_ready 0x18 +#define FW_MAC1_ready 0x1A +#define MAC0_ON BIT7 +#define MAC1_ON BIT0 +#define mac0_ready BIT0 +#define mac1_ready BIT0 + + +//----------------------------------------------------- +// +// 0x0100h ~ 0x01FFh MACTOP General Configuration +// +//----------------------------------------------------- +#define REG_CR 0x0100 +#define REG_PBP 0x0104 +#define REG_TRXDMA_CTRL 0x010C +#define REG_TRXFF_BNDY 0x0114 +#define REG_TRXFF_STATUS 0x0118 +#define REG_RXFF_PTR 0x011C +#define REG_HIMR 0x0120 +#define REG_HISR 0x0124 +#define REG_HIMRE 0x0128 +#define REG_HISRE 0x012C +#define REG_CPWM 0x012F +#define REG_FWIMR 0x0130 +#define REG_FWISR 0x0134 +#define REG_FTIMR 0x0138 +#define REG_PKTBUF_DBG_CTRL 0x0140 +#define REG_PKTBUF_DBG_DATA_L 0x0144 +#define REG_PKTBUF_DBG_DATA_H 0x0148 + +#define REG_TC0_CTRL 0x0150 +#define REG_TC1_CTRL 0x0154 +#define REG_TC2_CTRL 0x0158 +#define REG_TC3_CTRL 0x015C +#define REG_TC4_CTRL 0x0160 +#define REG_TCUNIT_BASE 0x0164 +#define REG_MBIST_START 0x0174 +#define REG_MBIST_DONE 0x0178 +#define REG_MBIST_FAIL 0x017C +#define REG_C2HEVT_MSG_NORMAL 0x01A0 +#define REG_C2HEVT_CLEAR 0x01AF +#define REG_C2HEVT_MSG_TEST 0x01B8 +#define REG_MCUTST_1 0x01c0 +#define REG_FMETHR 0x01C8 +#define REG_HMETFR 0x01CC +#define REG_HMEBOX_0 0x01D0 +#define REG_HMEBOX_1 0x01D4 +#define REG_HMEBOX_2 0x01D8 +#define REG_HMEBOX_3 0x01DC + +#define REG_LLT_INIT 0x01E0 +#define REG_BB_ACCEESS_CTRL 0x01E8 +#define REG_BB_ACCESS_DATA 0x01EC + + +//----------------------------------------------------- +// +// 0x0200h ~ 0x027Fh TXDMA Configuration +// +//----------------------------------------------------- +#define REG_RQPN 0x0200 +#define REG_FIFOPAGE 0x0204 +#define REG_TDECTRL 0x0208 +#define REG_TXDMA_OFFSET_CHK 0x020C +#define REG_TXDMA_STATUS 0x0210 +#define REG_RQPN_NPQ 0x0214 + +//----------------------------------------------------- +// +// 0x0280h ~ 0x02FFh RXDMA Configuration +// +//----------------------------------------------------- +#define REG_RXDMA_AGG_PG_TH 0x0280 +#define REG_RXPKT_NUM 0x0284 +#define REG_RXDMA_STATUS 0x0288 + + +//----------------------------------------------------- +// +// 0x0300h ~ 0x03FFh PCIe +// +//----------------------------------------------------- +#define REG_PCIE_CTRL_REG 0x0300 +#define REG_INT_MIG 0x0304 // Interrupt Migration +#define REG_BCNQ_DESA 0x0308 // TX Beacon Descriptor Address +#define REG_HQ_DESA 0x0310 // TX High Queue Descriptor Address +#define REG_MGQ_DESA 0x0318 // TX Manage Queue Descriptor Address +#define REG_VOQ_DESA 0x0320 // TX VO Queue Descriptor Address +#define REG_VIQ_DESA 0x0328 // TX VI Queue Descriptor Address +#define REG_BEQ_DESA 0x0330 // TX BE Queue Descriptor Address +#define REG_BKQ_DESA 0x0338 // TX BK Queue Descriptor Address +#define REG_RX_DESA 0x0340 // RX Queue Descriptor Address +#define REG_DBI 0x0348 // Backdoor REG for Access Configuration +//sherry added for DBI Read/Write 20091126 +#define REG_DBI_WDATA 0x0348 // Backdoor REG for Access Configuration +#define REG_DBI_RDATA 0x034C //Backdoor REG for Access Configuration +#define REG_DBI_CTRL 0x0350 //Backdoor REG for Access Configuration +#define REG_DBI_FLAG 0x0352 //Backdoor REG for Access Configuration#define REG_MDIO 0x0354 // MDIO for Access PCIE PHY +#define REG_MDIO 0x0354 // MDIO for Access PCIE PHY +#define REG_DBG_SEL 0x0360 // Debug Selection Register +#define REG_PCIE_HRPWM 0x0361 //PCIe RPWM +#define REG_PCIE_HCPWM 0x0363 //PCIe CPWM +#define REG_UART_CTRL 0x0364 // UART Control +#define REG_UART_TX_DESA 0x0370 // UART TX Descriptor Address +#define REG_UART_RX_DESA 0x0378 // UART Rx Descriptor Address + + +// spec version 11 +//----------------------------------------------------- +// +// 0x0400h ~ 0x047Fh Protocol Configuration +// +//----------------------------------------------------- +#define REG_VOQ_INFORMATION 0x0400 +#define REG_VIQ_INFORMATION 0x0404 +#define REG_BEQ_INFORMATION 0x0408 +#define REG_BKQ_INFORMATION 0x040C +#define REG_MGQ_INFORMATION 0x0410 +#define REG_HGQ_INFORMATION 0x0414 +#define REG_BCNQ_INFORMATION 0x0418 + + +#define REG_CPU_MGQ_INFORMATION 0x041C +#define REG_FWHW_TXQ_CTRL 0x0420 +#define REG_HWSEQ_CTRL 0x0423 +#define REG_TXPKTBUF_BCNQ_BDNY 0x0424 +#define REG_TXPKTBUF_MGQ_BDNY 0x0425 +#define REG_LIFETIME_EN 0x0426 +#define REG_MULTI_BCNQ_OFFSET 0x0427 +#define REG_SPEC_SIFS 0x0428 +#define REG_RL 0x042A +#define REG_DARFRC 0x0430 +#define REG_RARFRC 0x0438 +#define REG_RRSR 0x0440 +#define REG_ARFR0 0x0444 +#define REG_ARFR1 0x0448 +#define REG_ARFR2 0x044C +#define REG_ARFR3 0x0450 +#define REG_AGGLEN_LMT 0x0458 +#define REG_AMPDU_MIN_SPACE 0x045C +#define REG_TXPKTBUF_WMAC_LBK_BF_HD 0x045D +#define REG_FAST_EDCA_CTRL 0x0460 +#define REG_RD_RESP_PKT_TH 0x0463 +#define REG_INIRTS_RATE_SEL 0x0480 +#define REG_INIDATA_RATE_SEL 0x0484 + +//#define REG_FW_TSF_SYNC_CNT 0x04A0 +#define REG_FW_RESET_TSF_CNT_1 0x05FC +#define REG_FW_RESET_TSF_CNT_0 0x05FD +#define REG_FW_BCN_DIS_CNT 0x05FE + +#define REG_POWER_STATUS 0x04A4 +#define REG_POWER_STAGE1 0x04B4 +#define REG_POWER_STAGE2 0x04B8 +#define REG_PKT_VO_VI_LIFE_TIME 0x04C0 +#define REG_PKT_BE_BK_LIFE_TIME 0x04C2 +#define REG_STBC_SETTING 0x04C4 +#define REG_PROT_MODE_CTRL 0x04C8 +#define REG_MAX_AGGR_NUM 0x04CA +#define REG_RTS_MAX_AGGR_NUM 0x04CB +#define REG_BAR_MODE_CTRL 0x04CC +#define REG_RA_TRY_RATE_AGG_LMT 0x04CF +#define REG_EARLY_MODE_CONTROL 0x04D0 +#define REG_NQOS_SEQ 0x04DC +#define REG_QOS_SEQ 0x04DE +#define REG_NEED_CPU_HANDLE 0x04E0 +#define REG_PKT_LOSE_RPT 0x04E1 +#define REG_PTCL_ERR_STATUS 0x04E2 +#define REG_DUMMY 0x04FC + + + +//----------------------------------------------------- +// +// 0x0500h ~ 0x05FFh EDCA Configuration +// +//----------------------------------------------------- +#define REG_EDCA_VO_PARAM 0x0500 +#define REG_EDCA_VI_PARAM 0x0504 +#define REG_EDCA_BE_PARAM 0x0508 +#define REG_EDCA_BK_PARAM 0x050C +#define REG_BCNTCFG 0x0510 +#define REG_PIFS 0x0512 +#define REG_RDG_PIFS 0x0513 +#define REG_SIFS_CTX 0x0514 +#define REG_SIFS_TRX 0x0516 +#define REG_TSFTR_SYN_OFFSET 0x0518 +#define REG_AGGR_BREAK_TIME 0x051A +#define REG_SLOT 0x051B +#define REG_TX_PTCL_CTRL 0x0520 +#define REG_TXPAUSE 0x0522 +#define REG_DIS_TXREQ_CLR 0x0523 +#define REG_RD_CTRL 0x0524 +#define REG_TBTT_PROHIBIT 0x0540 +#define REG_RD_NAV_NXT 0x0544 +#define REG_NAV_PROT_LEN 0x0546 +#define REG_BCN_CTRL 0x0550 +#define REG_BCN_CTRL_1 0x0551 +#define REG_MBID_NUM 0x0552 +#define REG_DUAL_TSF_RST 0x0553 +#define REG_BCN_INTERVAL 0x0554 // The same as REG_MBSSID_BCN_SPACE +#define REG_MBSSID_BCN_SPACE 0x0554 +#define REG_DRVERLYINT 0x0558 +#define REG_BCNDMATIM 0x0559 +#define REG_ATIMWND 0x055A +#define REG_USTIME_TSF 0x055C +#define REG_BCN_MAX_ERR 0x055D +#define REG_RXTSF_OFFSET_CCK 0x055E +#define REG_RXTSF_OFFSET_OFDM 0x055F +#define REG_TSFTR 0x0560 +#define REG_TSFTR1 0x0568 +#define REG_INIT_TSFTR 0x0564 +#define REG_ATIMWND_1 0x0570 +#define REG_PSTIMER 0x0580 +#define REG_TIMER0 0x0584 +#define REG_TIMER1 0x0588 +#define REG_ACMHWCTRL 0x05C0 +#define REG_ACMRSTCTRL 0x05C1 +#define REG_ACMAVG 0x05C2 +#define REG_VO_ADMTIME 0x05C4 +#define REG_VI_ADMTIME 0x05C6 +#define REG_BE_ADMTIME 0x05C8 +#define REG_EDCA_RANDOM_GEN 0x05CC +#define REG_SCH_TXCMD 0x05D0 + +#define REG_DMC 0x05F0 //Dual MAC Co-Existence Register + + +//----------------------------------------------------- +// +// 0x0600h ~ 0x07FFh WMAC Configuration +// +//----------------------------------------------------- +#define REG_APSD_CTRL 0x0600 +#define REG_BWOPMODE 0x0603 +#define REG_TCR 0x0604 +#define REG_RCR 0x0608 +#define REG_RX_PKT_LIMIT 0x060C +#define REG_RX_DLK_TIME 0x060D +#define REG_RX_DRVINFO_SZ 0x060F + +#define REG_MACID 0x0610 +#define REG_BSSID 0x0618 +#define REG_MAR 0x0620 +#define REG_MBIDCAMCFG 0x0628 + +#define REG_USTIME_EDCA 0x0638 +#define REG_MAC_SPEC_SIFS 0x063A +#define REG_RESP_SIFS_CCK 0x063C +#define REG_RESP_SIFS_OFDM 0x063E +#define REG_ACKTO 0x0640 +#define REG_CTS2TO 0x0641 +#define REG_EIFS 0x0642 + + +//WMA, BA, CCX +#define REG_NAV_CTRL 0x0650 +#define REG_BACAMCMD 0x0654 +#define REG_BACAMCONTENT 0x0658 +#define REG_LBDLY 0x0660 +#define REG_FWDLY 0x0661 +#define REG_RXERR_RPT 0x0664 +#define REG_WMAC_TRXPTCL_CTL 0x0668 + + +// Security +#define REG_CAMCMD 0x0670 +#define REG_CAMWRITE 0x0674 +#define REG_CAMREAD 0x0678 +#define REG_CAMDBG 0x067C +#define REG_SECCFG 0x0680 + +// Power +#define REG_WOW_CTRL 0x0690 +#define REG_PSSTATUS 0x0691 +#define REG_PS_RX_INFO 0x0692 +#define REG_LPNAV_CTRL 0x0694 +#define REG_WKFMCAM_CMD 0x0698 +#define REG_WKFMCAM_RWD 0x069C +#define REG_RXFLTMAP0 0x06A0 +#define REG_RXFLTMAP1 0x06A2 +#define REG_RXFLTMAP2 0x06A4 +#define REG_BCN_PSR_RPT 0x06A8 +#define REG_CALB32K_CTRL 0x06AC +#define REG_PKT_MON_CTRL 0x06B4 +#define REG_BT_COEX_TABLE 0x06C0 +#define REG_WMAC_RESP_TXINFO 0x06D8 + +#define REG_MACID1 0x0700 +#define REG_BSSID1 0x0708 + +//----------------------------------------------------- +// +// 0xFE00h ~ 0xFE55h USB Configuration +// +//----------------------------------------------------- +#define REG_USB_INFO 0xFE17 +#define REG_USB_SPECIAL_OPTION 0xFE55 +#define REG_USB_DMA_AGG_TO 0xFE5B +#define REG_USB_AGG_TO 0xFE5C +#define REG_USB_AGG_TH 0xFE5D + +// for 92DU high_Queue low_Queue Normal_Queue select +#define REG_USB_High_NORMAL_Queue_Select_MAC0 0xFE44 +//#define REG_USB_LOW_Queue_Select_MAC0 0xFE45 +#define REG_USB_High_NORMAL_Queue_Select_MAC1 0xFE47 +//#define REG_USB_LOW_Queue_Select_MAC1 0xFE48 + +// For test chip +#define REG_TEST_USB_TXQS 0xFE48 +#define REG_TEST_SIE_VID 0xFE60 // 0xFE60~0xFE61 +#define REG_TEST_SIE_PID 0xFE62 // 0xFE62~0xFE63 +#define REG_TEST_SIE_OPTIONAL 0xFE64 +#define REG_TEST_SIE_CHIRP_K 0xFE65 +#define REG_TEST_SIE_PHY 0xFE66 // 0xFE66~0xFE6B +#define REG_TEST_SIE_MAC_ADDR 0xFE70 // 0xFE70~0xFE75 +#define REG_TEST_SIE_STRING 0xFE80 // 0xFE80~0xFEB9 + + +// For normal chip +#define REG_NORMAL_SIE_VID 0xFE60 // 0xFE60~0xFE61 +#define REG_NORMAL_SIE_PID 0xFE62 // 0xFE62~0xFE63 +#define REG_NORMAL_SIE_OPTIONAL 0xFE64 +#define REG_NORMAL_SIE_EP 0xFE65 // 0xFE65~0xFE67 +#define REG_NORMAL_SIE_PHY 0xFE68 // 0xFE68~0xFE6B +#define REG_NORMAL_SIE_MAC_ADDR 0xFE70 // 0xFE70~0xFE75 +#define REG_NORMAL_SIE_STRING 0xFE80 // 0xFE80~0xFEDF + + +//----------------------------------------------------- +// +// Redifine 8192C register definition for compatibility +// +//----------------------------------------------------- + +// TODO: use these definition when using REG_xxx naming rule. +// NOTE: DO NOT Remove these definition. Use later. + +#define SYS_ISO_CTRL REG_SYS_ISO_CTRL // System Isolation Interface Control. +#define SYS_FUNC_EN REG_SYS_FUNC_EN // System Function Enable. +#define SYS_CLK REG_SYS_CLKR +#define CR9346 REG_9346CR // 93C46/93C56 Command Register. +#define EFUSE_CTRL REG_EFUSE_CTRL // E-Fuse Control. +#define EFUSE_TEST REG_EFUSE_TEST // E-Fuse Test. +#define MSR (REG_CR + 2) // Media Status register +#define ISR REG_HISR +#define TSFR REG_TSFTR // Timing Sync Function Timer Register. + +#define MACIDR0 REG_MACID // MAC ID Register, Offset 0x0050-0x0053 +#define MACIDR4 (REG_MACID + 4) // MAC ID Register, Offset 0x0054-0x0055 + +#define PBP REG_PBP + +// Redifine MACID register, to compatible prior ICs. +#define IDR0 MACIDR0 +#define IDR4 MACIDR4 + + +// +// 9. Security Control Registers (Offset: ) +// +#define RWCAM REG_CAMCMD //IN 8190 Data Sheet is called CAMcmd +#define WCAMI REG_CAMWRITE // Software write CAM input content +#define RCAMO REG_CAMREAD // Software read/write CAM config +#define CAMDBG REG_CAMDBG +#define SECR REG_SECCFG //Security Configuration Register + +// Unused register +#define UnusedRegister 0x1BF +#define DCAM UnusedRegister +#define PSR UnusedRegister +#define BBAddr UnusedRegister +#define PhyDataR UnusedRegister + +#define InvalidBBRFValue 0x12345678 + +// Min Spacing related settings. +#define MAX_MSS_DENSITY_2T 0x13 +#define MAX_MSS_DENSITY_1T 0x0A + +//---------------------------------------------------------------------------- +// 8192C Cmd9346CR bits (Offset 0xA, 16bit) +//---------------------------------------------------------------------------- +#define CmdEEPROM_En BIT5 // EEPROM enable when set 1 +#define CmdEERPOMSEL BIT4 // System EEPROM select, 0: boot from E-FUSE, 1: The EEPROM used is 9346 +#define Cmd9346CR_9356SEL BIT4 +#define AutoLoadEEPROM (CmdEEPROM_En|CmdEERPOMSEL) +#define AutoLoadEFUSE CmdEEPROM_En + +// 8192C GPIO MUX Configuration Register (offset 0x40, 4 byte) +//---------------------------------------------------------------------------- +#define GPIOSEL_GPIO 0 +#define GPIOSEL_ENBT BIT5 + +//---------------------------------------------------------------------------- +// 8192C GPIO PIN Control Register (offset 0x44, 4 byte) +//---------------------------------------------------------------------------- +#define GPIO_IN REG_GPIO_PIN_CTRL // GPIO pins input value +#define GPIO_OUT (REG_GPIO_PIN_CTRL+1) // GPIO pins output value +#define GPIO_IO_SEL (REG_GPIO_PIN_CTRL+2) // GPIO pins output enable when a bit is set to "1"; otherwise, input is configured. +#define GPIO_MOD (REG_GPIO_PIN_CTRL+3) + + +//---------------------------------------------------------------------------- +// 8192C (MSR) Media Status Register (Offset 0x4C, 8 bits) +//---------------------------------------------------------------------------- +/* +Network Type +00: No link +01: Link in ad hoc network +10: Link in infrastructure network +11: AP mode +Default: 00b. +*/ +#define MSR_NOLINK 0x00 +#define MSR_ADHOC 0x01 +#define MSR_INFRA 0x02 +#define MSR_AP 0x03 + +// +// 6. Adaptive Control Registers (Offset: 0x0160 - 0x01CF) +// +//---------------------------------------------------------------------------- +// 8192C Response Rate Set Register (offset 0x181, 24bits) +//---------------------------------------------------------------------------- +#define RRSR_RSC_OFFSET 21 +#define RRSR_SHORT_OFFSET 23 +#define RRSR_RSC_BW_40M 0x600000 +#define RRSR_RSC_UPSUBCHNL 0x400000 +#define RRSR_RSC_LOWSUBCHNL 0x200000 +#define RRSR_SHORT 0x800000 +#define RRSR_1M BIT0 +#define RRSR_2M BIT1 +#define RRSR_5_5M BIT2 +#define RRSR_11M BIT3 +#define RRSR_6M BIT4 +#define RRSR_9M BIT5 +#define RRSR_12M BIT6 +#define RRSR_18M BIT7 +#define RRSR_24M BIT8 +#define RRSR_36M BIT9 +#define RRSR_48M BIT10 +#define RRSR_54M BIT11 +#define RRSR_MCS0 BIT12 +#define RRSR_MCS1 BIT13 +#define RRSR_MCS2 BIT14 +#define RRSR_MCS3 BIT15 +#define RRSR_MCS4 BIT16 +#define RRSR_MCS5 BIT17 +#define RRSR_MCS6 BIT18 +#define RRSR_MCS7 BIT19 +#define BRSR_AckShortPmb BIT23 +// CCK ACK: use Short Preamble or not + + +//---------------------------------------------------------------------------- +// 8192C Rate Definition +//---------------------------------------------------------------------------- +//CCK +#define RATR_1M 0x00000001 +#define RATR_2M 0x00000002 +#define RATR_55M 0x00000004 +#define RATR_11M 0x00000008 +//OFDM +#define RATR_6M 0x00000010 +#define RATR_9M 0x00000020 +#define RATR_12M 0x00000040 +#define RATR_18M 0x00000080 +#define RATR_24M 0x00000100 +#define RATR_36M 0x00000200 +#define RATR_48M 0x00000400 +#define RATR_54M 0x00000800 +//MCS 1 Spatial Stream +#define RATR_MCS0 0x00001000 +#define RATR_MCS1 0x00002000 +#define RATR_MCS2 0x00004000 +#define RATR_MCS3 0x00008000 +#define RATR_MCS4 0x00010000 +#define RATR_MCS5 0x00020000 +#define RATR_MCS6 0x00040000 +#define RATR_MCS7 0x00080000 +//MCS 2 Spatial Stream +#define RATR_MCS8 0x00100000 +#define RATR_MCS9 0x00200000 +#define RATR_MCS10 0x00400000 +#define RATR_MCS11 0x00800000 +#define RATR_MCS12 0x01000000 +#define RATR_MCS13 0x02000000 +#define RATR_MCS14 0x04000000 +#define RATR_MCS15 0x08000000 + +//---------------------------------------------------------------------------- +// 8192C BW_OPMODE bits (Offset 0x203, 8bit) +//---------------------------------------------------------------------------- +#define BW_OPMODE_20MHZ BIT2 +#define BW_OPMODE_5G BIT1 +#define BW_OPMODE_11J BIT0 + + +//---------------------------------------------------------------------------- +// 8192C CAM Config Setting (offset 0x250, 1 byte) +//---------------------------------------------------------------------------- +#define CAM_VALID BIT15 +#define CAM_NOTVALID 0x0000 +#define CAM_USEDK BIT5 + +#define CAM_CONTENT_COUNT 8 + +#define CAM_NONE 0x0 +#define CAM_WEP40 0x01 +#define CAM_TKIP 0x02 +#define CAM_AES 0x04 +#define CAM_WEP104 0x05 +#define CAM_SMS4 0x6 + + +#define TOTAL_CAM_ENTRY 32 +#define HALF_CAM_ENTRY 16 + +#define CAM_CONFIG_USEDK _TRUE +#define CAM_CONFIG_NO_USEDK _FALSE + +#define CAM_WRITE BIT16 +#define CAM_READ 0x00000000 +#define CAM_POLLINIG BIT31 + +#define SCR_UseDK 0x01 +#define SCR_TxSecEnable 0x02 +#define SCR_RxSecEnable 0x04 + + +// +// 12. Host Interrupt Status Registers (Offset: 0x0300 - 0x030F) +// +//---------------------------------------------------------------------------- +// 8190 IMR/ISR bits (offset 0xfd, 8bits) +//---------------------------------------------------------------------------- +#define IMR8190_DISABLED 0x0 +// IMR DW0 Bit 0-31 +#define IMR_BCNDMAINT6 BIT31 // Beacon DMA Interrupt 6 +#define IMR_BCNDMAINT5 BIT30 // Beacon DMA Interrupt 5 +#define IMR_BCNDMAINT4 BIT29 // Beacon DMA Interrupt 4 +#define IMR_BCNDMAINT3 BIT28 // Beacon DMA Interrupt 3 +#define IMR_BCNDMAINT2 BIT27 // Beacon DMA Interrupt 2 +#define IMR_BCNDMAINT1 BIT26 // Beacon DMA Interrupt 1 +#define IMR_BCNDOK8 BIT25 // Beacon Queue DMA OK Interrup 8 +#define IMR_BCNDOK7 BIT24 // Beacon Queue DMA OK Interrup 7 +#define IMR_BCNDOK6 BIT23 // Beacon Queue DMA OK Interrup 6 +#define IMR_BCNDOK5 BIT22 // Beacon Queue DMA OK Interrup 5 +#define IMR_BCNDOK4 BIT21 // Beacon Queue DMA OK Interrup 4 +#define IMR_BCNDOK3 BIT20 // Beacon Queue DMA OK Interrup 3 +#define IMR_BCNDOK2 BIT19 // Beacon Queue DMA OK Interrup 2 +#define IMR_BCNDOK1 BIT18 // Beacon Queue DMA OK Interrup 1 +#define IMR_TIMEOUT2 BIT17 // Timeout interrupt 2 +#define IMR_TIMEOUT1 BIT16 // Timeout interrupt 1 +#define IMR_TXFOVW BIT15 // Transmit FIFO Overflow +#define IMR_PSTIMEOUT BIT14 // Power save time out interrupt +#define IMR_BcnInt BIT13 // Beacon DMA Interrupt 0 +#define IMR_RXFOVW BIT12 // Receive FIFO Overflow +#define IMR_RDU BIT11 // Receive Descriptor Unavailable +#define IMR_ATIMEND BIT10 // For 92C,ATIM Window End Interrupt +#define IMR_BDOK BIT9 // Beacon Queue DMA OK Interrup +#define IMR_HIGHDOK BIT8 // High Queue DMA OK Interrupt +#define IMR_TBDOK BIT7 // Transmit Beacon OK interrup +#define IMR_MGNTDOK BIT6 // Management Queue DMA OK Interrupt +#define IMR_TBDER BIT5 // For 92C,Transmit Beacon Error Interrupt +#define IMR_BKDOK BIT4 // AC_BK DMA OK Interrupt +#define IMR_BEDOK BIT3 // AC_BE DMA OK Interrupt +#define IMR_VIDOK BIT2 // AC_VI DMA OK Interrupt +#define IMR_VODOK BIT1 // AC_VO DMA Interrupt +#define IMR_ROK BIT0 // Receive DMA OK Interrupt + +// 13. Host Interrupt Status Extension Register (Offset: 0x012C-012Eh) +#define IMR_TXERR BIT11 +#define IMR_RXERR BIT10 +#define IMR_C2HCMD BIT9 +#define IMR_CPWM BIT8 +//RSVD [2-7] +#define IMR_OCPINT BIT1 +#define IMR_WLANOFF BIT0 + + + +//---------------------------------------------------------------------------- +// 8192D EFUSE +//---------------------------------------------------------------------------- +#define HWSET_MAX_SIZE 256 + +//---------------------------------------------------------------------------- +// 8192C EEPROM/EFUSE share register definition. +//---------------------------------------------------------------------------- + +// +// Default Value for EEPROM or EFUSE!!! +// +#define EEPROM_Default_TSSI 0x0 +#define EEPROM_Default_TxPowerDiff 0x0 +#define EEPROM_Default_CrystalCap 0x0 //92D default 0x0 +#define EEPROM_Default_BoardType 0x02 // Default: 2X2, RTL8192CE(QFPN68) +#define EEPROM_Default_TxPower 0x1010 +#define EEPROM_Default_HT2T_TxPwr 0x10 + +#define EEPROM_Default_LegacyHTTxPowerDiff 0x4 +#define EEPROM_Default_ThermalMeter 0x12 + +#define EEPROM_Default_AntTxPowerDiff 0x0 +//#define EEPROM_Default_TxPwDiff_CrystalCap 0x5 +#define EEPROM_Default_TxPowerLevel_2G 0x2C +#define EEPROM_Default_TxPowerLevel_5G 0x22 + +#define EEPROM_Default_HT40_2SDiff 0x0 +#define EEPROM_Default_HT20_Diff 2 // HT20<->40 default Tx Power Index Difference +#define EEPROM_Default_LegacyHTTxPowerDiff 0x4 //OFDM Tx Power index diff +#define EEPROM_Default_HT40_PwrMaxOffset 0 +#define EEPROM_Default_HT20_PwrMaxOffset 0 + +// For debug +#define EEPROM_Default_PID 0x1234 +#define EEPROM_Default_VID 0x5678 +#define EEPROM_Default_CustomerID 0xAB +#define EEPROM_Default_SubCustomerID 0xCD +#define EEPROM_Default_Version 0 + +#define EEPROM_Default_externalPA_C9 0x00 +#define EEPROM_Default_externalPA_CC 0xFF +#define EEPROM_Default_internalPA_SP3T_C9 0xAA +#define EEPROM_Default_internalPA_SP3T_CC 0xAF +#define EEPROM_Default_internalPA_SPDT_C9 0xAA +#ifdef CONFIG_PCI_HCI +#define EEPROM_Default_internalPA_SPDT_CC 0xA0 +#else +#define EEPROM_Default_internalPA_SPDT_CC 0xFA +#endif + +#define EEPROM_CHANNEL_PLAN_FCC 0x0 +#define EEPROM_CHANNEL_PLAN_IC 0x1 +#define EEPROM_CHANNEL_PLAN_ETSI 0x2 +#define EEPROM_CHANNEL_PLAN_SPAIN 0x3 +#define EEPROM_CHANNEL_PLAN_FRANCE 0x4 +#define EEPROM_CHANNEL_PLAN_MKK 0x5 +#define EEPROM_CHANNEL_PLAN_MKK1 0x6 +#define EEPROM_CHANNEL_PLAN_ISRAEL 0x7 +#define EEPROM_CHANNEL_PLAN_TELEC 0x8 +#define EEPROM_CHANNEL_PLAN_GLOBAL_DOMAIN 0x9 +#define EEPROM_CHANNEL_PLAN_WORLD_WIDE_13 0xA +#define EEPROM_CHANNEL_PLAN_NCC 0xB +#define EEPROM_CHANNEL_PLAN_BY_HW_MASK 0x80 + + +#define EEPROM_CID_DEFAULT 0x0 +#define EEPROM_CID_TOSHIBA 0x4 +#define EEPROM_CID_CCX 0x10 // CCX test. By Bruce, 2009-02-25. +#define EEPROM_CID_QMI 0x0D +#define EEPROM_CID_WHQL 0xFE // added by chiyoko for dtm, 20090108 + + +#define RTL8192_EEPROM_ID 0x8129 +#define EEPROM_WAPI_SUPPORT 0x78 + + +#ifdef CONFIG_PCI_HCI +#define RT_IBSS_INT_MASKS (IMR_BcnInt | IMR_TBDOK | IMR_TBDER) +#define RT_AC_INT_MASKS (IMR_VIDOK | IMR_VODOK | IMR_BEDOK|IMR_BKDOK) +#define RT_BSS_INT_MASKS (RT_IBSS_INT_MASKS) + +#define RTL8190_EEPROM_ID 0x8129 // 0-1 +#define EEPROM_HPON 0x02 // LDO settings.2-5 +#define EEPROM_CLK 0x06 // Clock settings.6-7 +#define EEPROM_MAC_FUNCTION 0x08 // SE Test mode.8 + +#define EEPROM_VID 0x28 // SE Vendor ID.A-B +#define EEPROM_DID 0x2A // SE Device ID. C-D +#define EEPROM_SVID 0x2C // SE Vendor ID.E-F +#define EEPROM_SMID 0x2E // SE PCI Subsystem ID. 10-11 + +#define EEPROM_MAC_ADDR 0x16 // SEMAC Address. 12-17 +#define EEPROM_MAC_ADDR_MAC0_92D 0x55 +#define EEPROM_MAC_ADDR_MAC1_92D 0x5B +//---------------------------------------------------------------- +// 2.4G band Tx power index setting +#define EEPROM_CCK_TX_PWR_INX_2G 0x61 +#define EEPROM_HT40_1S_TX_PWR_INX_2G 0x67 +#define EEPROM_HT40_2S_TX_PWR_INX_DIFF_2G 0x6D +#define EEPROM_HT20_TX_PWR_INX_DIFF_2G 0x70 +#define EEPROM_OFDM_TX_PWR_INX_DIFF_2G 0x73 +#define EEPROM_HT40_MAX_PWR_OFFSET_2G 0x76 +#define EEPROM_HT20_MAX_PWR_OFFSET_2G 0x79 + +//5GL channel 32-64 +#define EEPROM_HT40_1S_TX_PWR_INX_5GL 0x7C +#define EEPROM_HT40_2S_TX_PWR_INX_DIFF_5GL 0x82 +#define EEPROM_HT20_TX_PWR_INX_DIFF_5GL 0x85 +#define EEPROM_OFDM_TX_PWR_INX_DIFF_5GL 0x88 +#define EEPROM_HT40_MAX_PWR_OFFSET_5GL 0x8B +#define EEPROM_HT20_MAX_PWR_OFFSET_5GL 0x8E + +//5GM channel 100-140 +#define EEPROM_HT40_1S_TX_PWR_INX_5GM 0x91 +#define EEPROM_HT40_2S_TX_PWR_INX_DIFF_5GM 0x97 +#define EEPROM_HT20_TX_PWR_INX_DIFF_5GM 0x9A +#define EEPROM_OFDM_TX_PWR_INX_DIFF_5GM 0x9D +#define EEPROM_HT40_MAX_PWR_OFFSET_5GM 0xA0 +#define EEPROM_HT20_MAX_PWR_OFFSET_5GM 0xA3 + +//5GH channel 149-165 +#define EEPROM_HT40_1S_TX_PWR_INX_5GH 0xA6 +#define EEPROM_HT40_2S_TX_PWR_INX_DIFF_5GH 0xAC +#define EEPROM_HT20_TX_PWR_INX_DIFF_5GH 0xAF +#define EEPROM_OFDM_TX_PWR_INX_DIFF_5GH 0xB2 +#define EEPROM_HT40_MAX_PWR_OFFSET_5GH 0xB5 +#define EEPROM_HT20_MAX_PWR_OFFSET_5GH 0xB8 + +#define EEPROM_CHANNEL_PLAN 0xBB // Map of supported channels. +#define EEPROM_IQK_DELTA 0xBC +#define EEPROM_LCK_DELTA 0xBC +#define EEPROM_XTAL_K 0xBD //[7:5] +#define EEPROM_TSSI_A_5G 0xBE +#define EEPROM_TSSI_B_5G 0xBF +#define EEPROM_TSSI_AB_5G 0xC0 +#define EEPROM_THERMAL_METER 0xC3 //[4:0] +#define EEPROM_PATHDIV 0xC4 +#define EEPROM_RF_OPT1 0xC4 +#define EEPROM_RF_OPT2 0xC5 +#define EEPROM_RF_OPT3 0xC6 +#define EEPROM_RF_OPT4 0xC7 +#define EEPROM_RF_OPT5 0xC8 +#define EEPROM_RF_OPT6 0xC9 +#define EEPROM_VERSION 0xCA +#define EEPROM_CUSTOMER_ID 0xCB +#define EEPROM_RF_OPT7 0xCC + +#define EEPROM_WIDIPAIRING_ADDR 0xF0 +#define EEPROM_WIDIPAIRING_KEY 0xF6 + +#define EEPROM_DEF_PART_NO 0x3FD //Byte +#define EEPROME_CHIP_VERSION_L 0x3FF +#define EEPROME_CHIP_VERSION_H 0x3FE +#endif + +#ifdef CONFIG_USB_HCI +#define RTL8190_EEPROM_ID 0x8129 // 0-1 +#define EEPROM_HPON 0x02 // LDO settings.2-5 +#define EEPROM_CLK 0x06 // Clock settings.6-7 +#define EEPROM_MAC_FUNCTION 0x08 // SE Test mode.8 + +#define EEPROM_VID 0xC // SE Vendor ID.A-B +#define EEPROM_PID 0xE // SE Device ID. C-D +#define EEPROM_ENDPOINT_SETTING 0x10 +#ifdef CONFIG_WOWLAN +#define EEPROM_Option_Setting 0x11 +#endif // CONFIG_WOWLAN +#define EEPROM_CHIRP_K 0x12 // Changed +#define EEPROM_USB_PHY 0x13 // Changed +#define EEPROM_NORMAL_BoardType EEPROM_RF_OPT1 //[7:5] +#define EEPROM_MAC_ADDR 0x16 // SEMAC Address. 12-17 +#define EEPROM_STRING 0x1F +#define EEPROM_SUBCUSTOMER_ID 0x59 + +#define EEPROM_MAC_ADDR_MAC0_92D 0x19 +#define EEPROM_MAC_ADDR_MAC1_92D 0x5B +//---------------------------------------------------------------- +// 2.4G band Tx power index setting +#define EEPROM_CCK_TX_PWR_INX_2G 0x61 +#define EEPROM_HT40_1S_TX_PWR_INX_2G 0x67 +#define EEPROM_HT40_2S_TX_PWR_INX_DIFF_2G 0x6D +#define EEPROM_HT20_TX_PWR_INX_DIFF_2G 0x70 +#define EEPROM_OFDM_TX_PWR_INX_DIFF_2G 0x73 +#define EEPROM_HT40_MAX_PWR_OFFSET_2G 0x76 +#define EEPROM_HT20_MAX_PWR_OFFSET_2G 0x79 + +//5GL channel 32-64 +#define EEPROM_HT40_1S_TX_PWR_INX_5GL 0x7C +#define EEPROM_HT40_2S_TX_PWR_INX_DIFF_5GL 0x82 +#define EEPROM_HT20_TX_PWR_INX_DIFF_5GL 0x85 +#define EEPROM_OFDM_TX_PWR_INX_DIFF_5GL 0x88 +#define EEPROM_HT40_MAX_PWR_OFFSET_5GL 0x8B +#define EEPROM_HT20_MAX_PWR_OFFSET_5GL 0x8E + +//5GM channel 100-140 +#define EEPROM_HT40_1S_TX_PWR_INX_5GM 0x91 +#define EEPROM_HT40_2S_TX_PWR_INX_DIFF_5GM 0x97 +#define EEPROM_HT20_TX_PWR_INX_DIFF_5GM 0x9A +#define EEPROM_OFDM_TX_PWR_INX_DIFF_5GM 0x9D +#define EEPROM_HT40_MAX_PWR_OFFSET_5GM 0xA0 +#define EEPROM_HT20_MAX_PWR_OFFSET_5GM 0xA3 + +//5GH channel 149-165 +#define EEPROM_HT40_1S_TX_PWR_INX_5GH 0xA6 +#define EEPROM_HT40_2S_TX_PWR_INX_DIFF_5GH 0xAC +#define EEPROM_HT20_TX_PWR_INX_DIFF_5GH 0xAF +#define EEPROM_OFDM_TX_PWR_INX_DIFF_5GH 0xB2 +#define EEPROM_HT40_MAX_PWR_OFFSET_5GH 0xB5 +#define EEPROM_HT20_MAX_PWR_OFFSET_5GH 0xB8 + +#define EEPROM_CHANNEL_PLAN 0xBB // Map of supported channels. +#define EEPROM_TEST_CHANNEL_PLAN 0xBB +#define EEPROM_IQK_DELTA 0xBC +#define EEPROM_LCK_DELTA 0xBC +#define EEPROM_XTAL_K 0xBD //[7:5] +#define EEPROM_TSSI_A_5G 0xBE +#define EEPROM_TSSI_B_5G 0xBF +#define EEPROM_TSSI_AB_5G 0xC0 +#define EEPROM_THERMAL_METER 0xC3 //[4:0] +#define EEPROM_RF_OPT1 0xC4 +#define EEPROM_RF_OPT2 0xC5 +#define EEPROM_RF_OPT3 0xC6 +#define EEPROM_RF_OPT4 0xC7 +#define EEPROM_RF_OPT5 0xC8 +#define EEPROM_RF_OPT6 0xC9 +#define EEPROM_VERSION 0xCA +#define EEPROM_CUSTOMER_ID 0xCB +#define EEPROM_RF_OPT7 0xCC + +#define EEPROM_DEF_PART_NO 0x3FD //Byte +#define EEPROME_CHIP_VERSION_L 0x3FF +#define EEPROME_CHIP_VERSION_H 0x3FE + +//------------------------------------------------------------- +// EEPROM content definitions +//------------------------------------------------------------- +#define OS_LINK_SPEED_NORMAL_MASK BIT3 | BIT2 +#define OS_LINK_SPEED_TEST_MASK BIT3 | BIT4 + +#define BOARD_TYPE_NORMAL_MASK 0xE0 +#define BOARD_TYPE_TEST_MASK 0xF + +#define BT_COEXISTENCE_TEST BIT4 +#define BT_COEXISTENCE_NORMAL BIT5 + +#define BT_CO_SHIFT_TEST 4 +#define BT_CO_SHIFT_NORMAL 5 + +#define EP_NUMBER_MASK_TEST 0x30 //bit 4:5 0Eh +#define EP_NUMBER_SHIFT_TEST 4 + +#define USB_PHY_PARA_SIZE_TEST 6 +#define USB_PHY_PARA_SIZE_NORMAL 4 + +//------------------------------------------------------------- +// EEPROM default value definitions +//------------------------------------------------------------- +// Use 0xABCD instead of 0x8192 for debug +#define EEPROM_DEF_ID_0 0xCD // Byte 0x00 +#define EEPROM_DEF_ID_1 0xAB // Byte 0x01 + +#define EEPROM_DEF_RTK_RSV_A3 0x74 // Byte 0x03 +#define EEPROM_DEF_RTK_RSV_A4 0x6D // Byte 0x04 +#define EEPROM_DEF_RTK_RSV_A8 0xFF // Byte 0x08 + +#define EEPROM_DEF_VID_0 0x0A // Byte 0x0A +#define EEPROM_DEF_VID_1 0x0B + +#define EEPROM_DEF_PID_0 0x92 // Byte 0x0C +#define EEPROM_DEF_PID_1 0x81 + + +#define EEPROM_TEST_DEF_USB_OPT 0x80 // Byte 0x0E +#define EEPROM_NORMAL_DEF_USB_OPT 0x00 // Byte 0x0E + +#define EEPROM_DEF_CHIRPK 0x15 // Byte 0x0F + +#define EEPROM_DEF_USB_PHY_0 0x85 // Byte 0x10 +#define EEPROM_DEF_USB_PHY_1 0x62 // Byte 0x11 +#define EEPROM_DEF_USB_PHY_2 0x9E // Byte 0x12 +#define EEPROM_DEF_USB_PHY_3 0x06 // Byte 0x13 + +#define EEPROM_DEF_TSSI_A 0x09 // Byte 0x78 +#define EEPROM_DEF_TSSI_B 0x09 // Byte 0x79 + + +#define EEPROM_DEF_THERMAL_METER 0x12 // Byte 0x7A + + +#define EEPROM_USB_SN BIT(0) +#define EEPROM_USB_REMOTE_WAKEUP BIT(1) +#define EEPROM_USB_DEVICE_PWR BIT(2) +#define EEPROM_EP_NUMBER (BIT(3)|BIT(4)) + +#if 0 +#define EEPROM_CHANNEL_PLAN_FCC 0x0 +#define EEPROM_CHANNEL_PLAN_IC 0x1 +#define EEPROM_CHANNEL_PLAN_ETSI 0x2 +#define EEPROM_CHANNEL_PLAN_SPAIN 0x3 +#define EEPROM_CHANNEL_PLAN_FRANCE 0x4 +#define EEPROM_CHANNEL_PLAN_MKK 0x5 +#define EEPROM_CHANNEL_PLAN_MKK1 0x6 +#define EEPROM_CHANNEL_PLAN_ISRAEL 0x7 +#define EEPROM_CHANNEL_PLAN_TELEC 0x8 +#define EEPROM_CHANNEL_PLAN_GLOBAL_DOMAIN 0x9 +#define EEPROM_CHANNEL_PLAN_WORLD_WIDE_13 0xA +#define EEPROM_CHANNEL_PLAN_BY_HW_MASK 0x80 + +#define EEPROM_CID_DEFAULT 0x0 + +#define EEPROM_CID_WHQL 0xFE // added by chiyoko for dtm, 20090108 + + +#define EEPROM_CID_CCX 0x10 // CCX test. By Bruce, 2009-02-25. + +#endif +#endif + + +/*=================================================================== +===================================================================== +Here the register defines are for 92C. When the define is as same with 92C, +we will use the 92C's define for the consistency +So the following defines for 92C is not entire!!!!!! +===================================================================== +=====================================================================*/ +/* +Based on Datasheet V33---090401 +Register Summary +Current IOREG MAP +0x0000h ~ 0x00FFh System Configuration (256 Bytes) +0x0100h ~ 0x01FFh MACTOP General Configuration (256 Bytes) +0x0200h ~ 0x027Fh TXDMA Configuration (128 Bytes) +0x0280h ~ 0x02FFh RXDMA Configuration (128 Bytes) +0x0300h ~ 0x03FFh PCIE EMAC Reserved Region (256 Bytes) +0x0400h ~ 0x04FFh Protocol Configuration (256 Bytes) +0x0500h ~ 0x05FFh EDCA Configuration (256 Bytes) +0x0600h ~ 0x07FFh WMAC Configuration (512 Bytes) +0x2000h ~ 0x3FFFh 8051 FW Download Region (8196 Bytes) +*/ + +//---------------------------------------------------------------------------- +// 8192C (RCR) Receive Configuration Register (Offset 0x608, 32 bits) +//---------------------------------------------------------------------------- +#define RCR_APPFCS BIT31 //WMAC append FCS after pauload +#define RCR_APP_MIC BIT30 // +#define RCR_APP_ICV BIT29 // +#define RCR_APP_PHYST_RXFF BIT28 // +#define RCR_APP_BA_SSN BIT27 //Accept BA SSN +#define RCR_ENMBID BIT24 //Enable Multiple BssId. +#define RCR_LSIGEN BIT23 +#define RCR_MFBEN BIT22 +#define RCR_HTC_LOC_CTRL BIT14 //MFC<--HTC=1 MFC-->HTC=0 +#define RCR_AMF BIT13 //Accept management type frame +#define RCR_ACF BIT12 //Accept control type frame +#define RCR_ADF BIT11 //Accept data type frame +#define RCR_AICV BIT9 //Accept ICV error packet +#define RCR_ACRC32 BIT8 //Accept CRC32 error packet +#define RCR_CBSSID_BCN BIT7 //Accept BSSID match packet (Rx beacon, probe rsp) +#define RCR_CBSSID_DATA BIT6 //Accept BSSID match packet (Data) +#define RCR_CBSSID RCR_CBSSID_DATA //Accept BSSID match packet +#define RCR_APWRMGT BIT5 //Accept power management packet +#define RCR_ADD3 BIT4 //Accept address 3 match packet +#define RCR_AB BIT3 //Accept broadcast packet +#define RCR_AM BIT2 //Accept multicast packet +#define RCR_APM BIT1 //Accept physical match packet +#define RCR_AAP BIT0 //Accept all unicast packet +#define RCR_MXDMA_OFFSET 8 +#define RCR_FIFO_OFFSET 13 + + + +//============================================================================ +// 8192c USB specific Regsiter Offset and Content definition, +// 2009.08.18, added by vivi. for merge 92c and 92C into one driver +//============================================================================ +//#define APS_FSMCO 0x0004 same with 92Ce +#define RSV_CTRL 0x001C +#define RD_CTRL 0x0524 + +//----------------------------------------------------- +// +// 0xFE00h ~ 0xFE55h USB Configuration +// +//----------------------------------------------------- +#define REG_USB_INFO 0xFE17 +#define REG_USB_SPECIAL_OPTION 0xFE55 +#define REG_USB_DMA_AGG_TO 0xFE5B +#define REG_USB_AGG_TO 0xFE5C +#define REG_USB_AGG_TH 0xFE5D + +#define REG_USB_VID 0xFE60 +#define REG_USB_PID 0xFE62 +#define REG_USB_OPTIONAL 0xFE64 +#define REG_USB_CHIRP_K 0xFE65 +#define REG_USB_PHY 0xFE66 +#define REG_USB_MAC_ADDR 0xFE70 + +#define REG_USB_HRPWM 0xFE58 +#define REG_USB_HCPWM 0xFE57 + +#define InvalidBBRFValue 0x12345678 + +//============================================================================ +// 8192C Regsiter Bit and Content definition +//============================================================================ +//----------------------------------------------------- +// +// 0x0000h ~ 0x00FFh System Configuration +// +//----------------------------------------------------- + +//2 SPS0_CTRL +#define SW18_FPWM BIT(3) + + +//2 SYS_ISO_CTRL +#define ISO_MD2PP BIT(0) +#define ISO_UA2USB BIT(1) +#define ISO_UD2CORE BIT(2) +#define ISO_PA2PCIE BIT(3) +#define ISO_PD2CORE BIT(4) +#define ISO_IP2MAC BIT(5) +#define ISO_DIOP BIT(6) +#define ISO_DIOE BIT(7) +#define ISO_EB2CORE BIT(8) +#define ISO_DIOR BIT(9) + +#define PWC_EV25V BIT(14) +#define PWC_EV12V BIT(15) + + +//2 SYS_FUNC_EN +#define FEN_BBRSTB BIT(0) +#define FEN_BB_GLB_RSTn BIT(1) +#define FEN_USBA BIT(2) +#define FEN_UPLL BIT(3) +#define FEN_USBD BIT(4) +#define FEN_DIO_PCIE BIT(5) +#define FEN_PCIEA BIT(6) +#define FEN_PPLL BIT(7) +#define FEN_PCIED BIT(8) +#define FEN_DIOE BIT(9) +#define FEN_CPUEN BIT(10) +#define FEN_DCORE BIT(11) +#define FEN_ELDR BIT(12) +#define FEN_DIO_RF BIT(13) +#define FEN_HWPDN BIT(14) +#define FEN_MREGEN BIT(15) + +//2 APS_FSMCO +#define PFM_LDALL BIT(0) +#define PFM_ALDN BIT(1) +#define PFM_LDKP BIT(2) +#define PFM_WOWL BIT(3) +#define EnPDN BIT(4) +#define PDN_PL BIT(5) +#define APFM_ONMAC BIT(8) +#define APFM_OFF BIT(9) +#define APFM_RSM BIT(10) +#define AFSM_HSUS BIT(11) +#define AFSM_PCIE BIT(12) +#define APDM_MAC BIT(13) +#define APDM_HOST BIT(14) +#define APDM_HPDN BIT(15) +#define RDY_MACON BIT(16) +#define SUS_HOST BIT(17) +#define ROP_ALD BIT(20) +#define ROP_PWR BIT(21) +#define ROP_SPS BIT(22) +#define SOP_MRST BIT(25) +#define SOP_FUSE BIT(26) +#define SOP_ABG BIT(27) +#define SOP_AMB BIT(28) +#define SOP_RCK BIT(29) +#define SOP_A8M BIT(30) +#define XOP_BTCK BIT(31) + +//2 SYS_CLKR +#define ANAD16V_EN BIT(0) +#define ANA8M BIT(1) +#define MACSLP BIT(4) +#define LOADER_CLK_EN BIT(5) +#define _80M_SSC_DIS BIT(7) +#define _80M_SSC_EN_HO BIT(8) +#define PHY_SSC_RSTB BIT(9) +#define SEC_CLK_EN BIT(10) +#define MAC_CLK_EN BIT(11) +#define SYS_CLK_EN BIT(12) +#define RING_CLK_EN BIT(13) + + +//2 9346CR + +#define BOOT_FROM_EEPROM BIT(4) +#define EEPROM_EN BIT(5) + + +//2 AFE_MISC +#define AFE_BGEN BIT(0) +#define AFE_MBEN BIT(1) +#define MAC_ID_EN BIT(7) + + +//2 SPS0_CTRL + + +//2 SPS_OCP_CFG + + +//2 RSV_CTRL +#define WLOCK_ALL BIT(0) +#define WLOCK_00 BIT(1) +#define WLOCK_04 BIT(2) +#define WLOCK_08 BIT(3) +#define WLOCK_40 BIT(4) +#define R_DIS_PRST_0 BIT(5) +#define R_DIS_PRST_1 BIT(6) +#define LOCK_ALL_EN BIT(7) + +//2 RF_CTRL +#define RF_EN BIT(0) +#define RF_RSTB BIT(1) +#define RF_SDMRSTB BIT(2) + + + +//2 LDOA15_CTRL +#define LDA15_EN BIT(0) +#define LDA15_STBY BIT(1) +#define LDA15_OBUF BIT(2) +#define LDA15_REG_VOS BIT(3) +#define _LDA15_VOADJ(x) (((x) & 0x7) << 4) + + + +//2 LDOV12D_CTRL +#define LDV12_EN BIT(0) +#define LDV12_SDBY BIT(1) +#define LPLDO_HSM BIT(2) +#define LPLDO_LSM_DIS BIT(3) +#define _LDV12_VADJ(x) (((x) & 0xF) << 4) + + +//2 AFE_XTAL_CTRL +#define XTAL_EN BIT(0) +#define XTAL_BSEL BIT(1) +#define _XTAL_BOSC(x) (((x) & 0x3) << 2) +#define _XTAL_CADJ(x) (((x) & 0xF) << 4) +#define XTAL_GATE_USB BIT(8) +#define _XTAL_USB_DRV(x) (((x) & 0x3) << 9) +#define XTAL_GATE_AFE BIT(11) +#define _XTAL_AFE_DRV(x) (((x) & 0x3) << 12) +#define XTAL_RF_GATE BIT(14) +#define _XTAL_RF_DRV(x) (((x) & 0x3) << 15) +#define XTAL_GATE_DIG BIT(17) +#define _XTAL_DIG_DRV(x) (((x) & 0x3) << 18) +#define XTAL_BT_GATE BIT(20) +#define _XTAL_BT_DRV(x) (((x) & 0x3) << 21) +#define _XTAL_GPIO(x) (((x) & 0x7) << 23) + + +#define CKDLY_AFE BIT(26) +#define CKDLY_USB BIT(27) +#define CKDLY_DIG BIT(28) +#define CKDLY_BT BIT(29) + + +//2 AFE_PLL_CTRL +#define APLL_EN BIT(0) +#define APLL_320_EN BIT(1) +#define APLL_FREF_SEL BIT(2) +#define APLL_EDGE_SEL BIT(3) +#define APLL_WDOGB BIT(4) +#define APLL_LPFEN BIT(5) + +#define APLL_REF_CLK_13MHZ 0x1 +#define APLL_REF_CLK_19_2MHZ 0x2 +#define APLL_REF_CLK_20MHZ 0x3 +#define APLL_REF_CLK_25MHZ 0x4 +#define APLL_REF_CLK_26MHZ 0x5 +#define APLL_REF_CLK_38_4MHZ 0x6 +#define APLL_REF_CLK_40MHZ 0x7 + +#define APLL_320EN BIT(14) +#define APLL_80EN BIT(15) +#define APLL_1MEN BIT(24) + + +//2 EFUSE_CTRL +#define ALD_EN BIT(18) +#define EF_PD BIT(19) +#define EF_FLAG BIT(31) + +//2 EFUSE_TEST +#define EF_TRPT BIT(7) +#define LDOE25_EN BIT(31) + +//2 PWR_DATA + +//2 CAL_TIMER + +//2 ACLK_MON +#define RSM_EN BIT(0) +#define Timer_EN BIT(4) + + +//2 GPIO_MUXCFG +#define TRSW0EN BIT(2) +#define TRSW1EN BIT(3) +#define EROM_EN BIT(4) +#define EnBT BIT(5) +#define EnUart BIT(8) +#define Uart_910 BIT(9) +#define EnPMAC BIT(10) +#define SIC_SWRST BIT(11) +#define EnSIC BIT(12) +#define SIC_23 BIT(13) +#define EnHDP BIT(14) +#define SIC_LBK BIT(15) + +//2 GPIO_PIN_CTRL + + + +//2 GPIO_INTM + +//2 LEDCFG +#define LED0PL BIT(4) +#define LED1PL BIT(12) +#define LED0DIS BIT(7) + +#define SECCAM_CLR BIT(30) + +//2 FSIMR + +//2 FSISR + + +//2 8051FWDL +//2 MCUFWDL +#define MCUFWDL_EN BIT(0) +#define MCUFWDL_RDY BIT(1) +#define FWDL_ChkSum_rpt BIT(2) +#define MACINI_RDY BIT(3) +#define BBINI_RDY BIT(4) +#define RFINI_RDY BIT(5) +#define WINTINI_RDY BIT(6) +#define MAC1_WINTINI_RDY BIT(11)// 0X81 BIT3 +#define CPRST BIT(23) + + + + +//2 REG_SYS_CFG +#define XCLK_VLD BIT(0) +#define ACLK_VLD BIT(1) +#define UCLK_VLD BIT(2) +#define PCLK_VLD BIT(3) +#define PCIRSTB BIT(4) +#define V15_VLD BIT(5) +#define TRP_B15V_EN BIT(7) +#define SIC_IDLE BIT(8) +#define BD_MAC2 BIT(9) +#define BD_MAC1 BIT(10) +#define IC_MACPHY_MODE BIT(11) +#define PAD_HWPD_IDN BIT(22) +#define TRP_VAUX_EN BIT(23) +#define TRP_BT_EN BIT(24) +#define BD_PKG_SEL BIT(25) +#define BD_HCI_SEL BIT(26) +#define TYPE_ID BIT(27) + +#define CHIP_VER_RTL_MASK 0xF000 //Bit 12 ~ 15 +#define CHIP_VER_RTL_SHIFT 12 + +//----------------------------------------------------- +// +// 0x0100h ~ 0x01FFh MACTOP General Configuration +// +//----------------------------------------------------- + + +//2 Function Enable Registers +//2 CR + +#define REG_LBMODE (REG_CR + 3) + + +#define HCI_TXDMA_EN BIT(0) +#define HCI_RXDMA_EN BIT(1) +#define TXDMA_EN BIT(2) +#define RXDMA_EN BIT(3) +#define PROTOCOL_EN BIT(4) +#define SCHEDULE_EN BIT(5) +#define MACTXEN BIT(6) +#define MACRXEN BIT(7) +#define ENSWBCN BIT(8) +#define ENSEC BIT(9) + +// Network type +#define _NETTYPE(x) (((x) & 0x3) << 16) +#define MASK_NETTYPE 0x30000 +#define NT_NO_LINK 0x0 +#define NT_LINK_AD_HOC 0x1 +#define NT_LINK_AP 0x2 +#define NT_AS_AP 0x3 + +#define _LBMODE(x) (((x) & 0xF) << 24) +#define MASK_LBMODE 0xF000000 +#define LOOPBACK_NORMAL 0x0 +#define LOOPBACK_IMMEDIATELY 0xB +#define LOOPBACK_MAC_DELAY 0x3 +#define LOOPBACK_PHY 0x1 +#define LOOPBACK_DMA 0x7 + + +//2 PBP - Page Size Register +#define GET_RX_PAGE_SIZE(value) ((value) & 0xF) +#define GET_TX_PAGE_SIZE(value) (((value) & 0xF0) >> 4) +#define _PSRX_MASK 0xF +#define _PSTX_MASK 0xF0 +#define _PSRX(x) (x) +#define _PSTX(x) ((x) << 4) + +#define PBP_64 0x0 +#define PBP_128 0x1 +#define PBP_256 0x2 +#define PBP_512 0x3 +#define PBP_1024 0x4 + + +//2 TX/RXDMA +#define RXDMA_ARBBW_EN BIT(0) +#define RXSHFT_EN BIT(1) +#define RXDMA_AGG_EN BIT(2) +#define QS_VO_QUEUE BIT(8) +#define QS_VI_QUEUE BIT(9) +#define QS_BE_QUEUE BIT(10) +#define QS_BK_QUEUE BIT(11) +#define QS_MANAGER_QUEUE BIT(12) +#define QS_HIGH_QUEUE BIT(13) + +#define HQSEL_VOQ BIT(0) +#define HQSEL_VIQ BIT(1) +#define HQSEL_BEQ BIT(2) +#define HQSEL_BKQ BIT(3) +#define HQSEL_MGTQ BIT(4) +#define HQSEL_HIQ BIT(5) + +// For normal driver, 0x10C +#define _TXDMA_HIQ_MAP(x) (((x)&0x3) << 14) +#define _TXDMA_MGQ_MAP(x) (((x)&0x3) << 12) +#define _TXDMA_BKQ_MAP(x) (((x)&0x3) << 10) +#define _TXDMA_BEQ_MAP(x) (((x)&0x3) << 8 ) +#define _TXDMA_VIQ_MAP(x) (((x)&0x3) << 6 ) +#define _TXDMA_VOQ_MAP(x) (((x)&0x3) << 4 ) + +#define QUEUE_LOW 1 +#define QUEUE_NORMAL 2 +#define QUEUE_HIGH 3 + + + +//2 TRXFF_BNDY + + +//2 LLT_INIT +#define _LLT_NO_ACTIVE 0x0 +#define _LLT_WRITE_ACCESS 0x1 +#define _LLT_READ_ACCESS 0x2 + +#define _LLT_INIT_DATA(x) ((x) & 0xFF) +#define _LLT_INIT_ADDR(x) (((x) & 0xFF) << 8) +#define _LLT_OP(x) (((x) & 0x3) << 30) +#define _LLT_OP_VALUE(x) (((x) >> 30) & 0x3) + + +//2 BB_ACCESS_CTRL +#define BB_WRITE_READ_MASK (BIT(31) | BIT(30)) +#define BB_WRITE_EN BIT(30) +#define BB_READ_EN BIT(31) +//#define BB_ADDR_MASK 0xFFF +//#define _BB_ADDR(x) ((x) & BB_ADDR_MASK) + +//----------------------------------------------------- +// +// 0x0200h ~ 0x027Fh TXDMA Configuration +// +//----------------------------------------------------- +//2 RQPN +#define _HPQ(x) ((x) & 0xFF) +#define _LPQ(x) (((x) & 0xFF) << 8) +#define _PUBQ(x) (((x) & 0xFF) << 16) +#define _NPQ(x) ((x) & 0xFF) // NOTE: in RQPN_NPQ register + + +#define HPQ_PUBLIC_DIS BIT(24) +#define LPQ_PUBLIC_DIS BIT(25) +#define LD_RQPN BIT(31) + + +//2 TDECTRL +#define BCN_VALID BIT(16) +#define BCN_HEAD(x) (((x) & 0xFF) << 8) +#define BCN_HEAD_MASK 0xFF00 + +//2 TDECTL +#define BLK_DESC_NUM_SHIFT 4 +#define BLK_DESC_NUM_MASK 0xF + + +//2 TXDMA_OFFSET_CHK +#define DROP_DATA_EN BIT(9) + +//----------------------------------------------------- +// +// 0x0400h ~ 0x047Fh Protocol Configuration +// +//----------------------------------------------------- +//2 FWHW_TXQ_CTRL +#define EN_AMPDU_RTY_NEW BIT(7) + +//2 INIRTSMCS_SEL +#define _INIRTSMCS_SEL(x) ((x) & 0x3F) + + +//2 SPEC SIFS +#define _SPEC_SIFS_CCK(x) ((x) & 0xFF) +#define _SPEC_SIFS_OFDM(x) (((x) & 0xFF) << 8) + + +//2 RRSR + +#define RATE_REG_BITMAP_ALL 0xFFFFF + +#define _RRSC_BITMAP(x) ((x) & 0xFFFFF) + +#define _RRSR_RSC(x) (((x) & 0x3) << 21) +#define RRSR_RSC_RESERVED 0x0 +#define RRSR_RSC_UPPER_SUBCHANNEL 0x1 +#define RRSR_RSC_LOWER_SUBCHANNEL 0x2 +#define RRSR_RSC_DUPLICATE_MODE 0x3 + + +//2 ARFR +#define USE_SHORT_G1 BIT(20) + +//2 AGGLEN_LMT_L +#define _AGGLMT_MCS0(x) ((x) & 0xF) +#define _AGGLMT_MCS1(x) (((x) & 0xF) << 4) +#define _AGGLMT_MCS2(x) (((x) & 0xF) << 8) +#define _AGGLMT_MCS3(x) (((x) & 0xF) << 12) +#define _AGGLMT_MCS4(x) (((x) & 0xF) << 16) +#define _AGGLMT_MCS5(x) (((x) & 0xF) << 20) +#define _AGGLMT_MCS6(x) (((x) & 0xF) << 24) +#define _AGGLMT_MCS7(x) (((x) & 0xF) << 28) + + +//2 RL +#define RETRY_LIMIT_SHORT_SHIFT 8 +#define RETRY_LIMIT_LONG_SHIFT 0 + + +//2 DARFRC +#define _DARF_RC1(x) ((x) & 0x1F) +#define _DARF_RC2(x) (((x) & 0x1F) << 8) +#define _DARF_RC3(x) (((x) & 0x1F) << 16) +#define _DARF_RC4(x) (((x) & 0x1F) << 24) +// NOTE: shift starting from address (DARFRC + 4) +#define _DARF_RC5(x) ((x) & 0x1F) +#define _DARF_RC6(x) (((x) & 0x1F) << 8) +#define _DARF_RC7(x) (((x) & 0x1F) << 16) +#define _DARF_RC8(x) (((x) & 0x1F) << 24) + + +//2 RARFRC +#define _RARF_RC1(x) ((x) & 0x1F) +#define _RARF_RC2(x) (((x) & 0x1F) << 8) +#define _RARF_RC3(x) (((x) & 0x1F) << 16) +#define _RARF_RC4(x) (((x) & 0x1F) << 24) +// NOTE: shift starting from address (RARFRC + 4) +#define _RARF_RC5(x) ((x) & 0x1F) +#define _RARF_RC6(x) (((x) & 0x1F) << 8) +#define _RARF_RC7(x) (((x) & 0x1F) << 16) +#define _RARF_RC8(x) (((x) & 0x1F) << 24) + + + + +//----------------------------------------------------- +// +// 0x0500h ~ 0x05FFh EDCA Configuration +// +//----------------------------------------------------- + + + +//2 EDCA setting +#define AC_PARAM_TXOP_LIMIT_OFFSET 16 +#define AC_PARAM_ECW_MAX_OFFSET 12 +#define AC_PARAM_ECW_MIN_OFFSET 8 +#define AC_PARAM_AIFS_OFFSET 0 + + +//2 EDCA_VO_PARAM +#define _AIFS(x) (x) +#define _ECW_MAX_MIN(x) ((x) << 8) +#define _TXOP_LIMIT(x) ((x) << 16) + + +#define _BCNIFS(x) ((x) & 0xFF) +#define _BCNECW(x) (((x) & 0xF))<< 8) + + +#define _LRL(x) ((x) & 0x3F) +#define _SRL(x) (((x) & 0x3F) << 8) + + +//2 SIFS_CCK +#define _SIFS_CCK_CTX(x) ((x) & 0xFF) +#define _SIFS_CCK_TRX(x) (((x) & 0xFF) << 8); + + +//2 SIFS_OFDM +#define _SIFS_OFDM_CTX(x) ((x) & 0xFF) +#define _SIFS_OFDM_TRX(x) (((x) & 0xFF) << 8); + + +//2 TBTT PROHIBIT +#define _TBTT_PROHIBIT_HOLD(x) (((x) & 0xFF) << 8) + + +//2 REG_RD_CTRL +#define DIS_EDCA_CNT_DWN BIT(11) + + +//2 BCN_CTRL +#define EN_MBSSID BIT(1) +#define EN_TXBCN_RPT BIT(2) +#define EN_BCN_FUNCTION BIT(3) +// The same function but different bit field. +#define DIS_TSF_UDT0_NORMAL_CHIP BIT(4) +#define DIS_TSF_UDT0_TEST_CHIP BIT(5) + +//2 ACMHWCTRL +#define AcmHw_HwEn BIT(0) +#define AcmHw_BeqEn BIT(1) +#define AcmHw_ViqEn BIT(2) +#define AcmHw_VoqEn BIT(3) +#define AcmHw_BeqStatus BIT(4) +#define AcmHw_ViqStatus BIT(5) +#define AcmHw_VoqStatus BIT(6) + + + +//----------------------------------------------------- +// +// 0x0600h ~ 0x07FFh WMAC Configuration +// +//----------------------------------------------------- + +//2 APSD_CTRL +#define APSDOFF BIT(6) +#define APSDOFF_STATUS BIT(7) + + +//2 BWOPMODE +#define BW_20MHZ BIT(2) +//#define BW_OPMODE_20MHZ BIT(2) // For compability + + +#define RATE_BITMAP_ALL 0xFFFFF + +// Only use CCK 1M rate for ACK +#define RATE_RRSR_CCK_ONLY_1M 0xFFFF1 +#define RATE_RRSR_WITHOUT_CCK 0xFFFF0 + +//2 TCR +#define TSFRST BIT(0) +#define DIS_GCLK BIT(1) +#define PAD_SEL BIT(2) +#define PWR_ST BIT(6) +#define PWRBIT_OW_EN BIT(7) +#define ACRC BIT(8) +#define CFENDFORM BIT(9) +#define ICV BIT(10) + + + +//2 RCR +#define AAP BIT(0) +#define APM BIT(1) +#define AM BIT(2) +#define AB BIT(3) +#define ADD3 BIT(4) +#define APWRMGT BIT(5) +#define CBSSID BIT(6) +#define CBSSID_BCN BIT(7) +#define ACRC32 BIT(8) +#define AICV BIT(9) +#define ADF BIT(11) +#define ACF BIT(12) +#define AMF BIT(13) +#define HTC_LOC_CTRL BIT(14) +#define UC_DATA_EN BIT(16) +#define BM_DATA_EN BIT(17) +#define MFBEN BIT(22) +#define LSIGEN BIT(23) +#define EnMBID BIT(24) +#define APP_BASSN BIT(27) +#define APP_PHYSTS BIT(28) +#define APP_ICV BIT(29) +#define APP_MIC BIT(30) +#define APP_FCS BIT(31) + +//2 RX_PKT_LIMIT + +//2 RX_DLK_TIME + +//2 MBIDCAMCFG + + + +//2 AMPDU_MIN_SPACE +#define _MIN_SPACE(x) ((x) & 0x7) +#define _SHORT_GI_PADDING(x) (((x) & 0x1F) << 3) + + +//2 RXERR_RPT +#define RXERR_TYPE_OFDM_PPDU 0 +#define RXERR_TYPE_OFDM_FALSE_ALARM 1 +#define RXERR_TYPE_OFDM_MPDU_OK 2 +#define RXERR_TYPE_OFDM_MPDU_FAIL 3 +#define RXERR_TYPE_CCK_PPDU 4 +#define RXERR_TYPE_CCK_FALSE_ALARM 5 +#define RXERR_TYPE_CCK_MPDU_OK 6 +#define RXERR_TYPE_CCK_MPDU_FAIL 7 +#define RXERR_TYPE_HT_PPDU 8 +#define RXERR_TYPE_HT_FALSE_ALARM 9 +#define RXERR_TYPE_HT_MPDU_TOTAL 10 +#define RXERR_TYPE_HT_MPDU_OK 11 +#define RXERR_TYPE_HT_MPDU_FAIL 12 +#define RXERR_TYPE_RX_FULL_DROP 15 + +#define RXERR_COUNTER_MASK 0xFFFFF +#define RXERR_RPT_RST BIT(27) +#define _RXERR_RPT_SEL(type) ((type) << 28) + + +//2 SECCFG +#define SCR_TxUseDK BIT(0) //Force Tx Use Default Key +#define SCR_RxUseDK BIT(1) //Force Rx Use Default Key +#define SCR_TxEncEnable BIT(2) //Enable Tx Encryption +#define SCR_RxDecEnable BIT(3) //Enable Rx Decryption +#define SCR_SKByA2 BIT(4) //Search kEY BY A2 +#define SCR_NoSKMC BIT(5) //No Key Search Multicast +#define SCR_TXBCUSEDK BIT(6) // Force Tx Broadcast packets Use Default Key +#define SCR_RXBCUSEDK BIT(7) // Force Rx Broadcast packets Use Default Key + +//vivi added for new cam search flow, 20091028 +#ifdef HW_EN_DE_CRYPTION_FOR_NEW_CAM_SEARCH_FLOW +#define SCR_TxUseBroadcastDK BIT6 //Force Tx Use Broadcast Default Key +#define SCR_RxUseBroadcastDK BIT7 //Force Rx Use Broadcast Default Key +#endif + + +//----------------------------------------------------- +// +// 0xFE00h ~ 0xFE55h USB Configuration +// +//----------------------------------------------------- + +//2 USB Information (0xFE17) +#define USB_IS_HIGH_SPEED 0 +#define USB_IS_FULL_SPEED 1 +#define USB_SPEED_MASK BIT(5) + +#define USB_NORMAL_SIE_EP_MASK 0xF +#define USB_NORMAL_SIE_EP_SHIFT 4 + +#define USB_TEST_EP_MASK 0x30 +#define USB_TEST_EP_SHIFT 4 + +//2 Special Option +#define USB_AGG_EN BIT(3) + + +//2REG_C2HEVT_CLEAR +#define C2H_EVT_HOST_CLOSE 0x00 // Set by driver and notify FW that the driver has read the C2H command message +#define C2H_EVT_FW_CLOSE 0xFF // Set by FW indicating that FW had set the C2H command message and it's not yet read by driver. + +//2 8192D PartNo. +#define PARTNO_92D_NIC (BIT7|BIT6) +#define PARTNO_92D_NIC_REMARK (BIT5|BIT4) +#define PARTNO_SINGLE_BAND_VS BIT3 +#define PARTNO_SINGLE_BAND_VS_REMARK BIT1 +#define PARTNO_CONCURRENT_BAND_VC (BIT3|BIT2) +#define PARTNO_CONCURRENT_BAND_VC_REMARK (BIT1|BIT0) +//======================================================== +// General definitions +//======================================================== + +#define MAC_ADDR_LEN 6 +#define LAST_ENTRY_OF_TX_PKT_BUFFER 255 +#define LAST_ENTRY_OF_TX_PKT_BUFFER_DUAL_MAC 127 + +#define POLLING_LLT_THRESHOLD 20 +#define POLLING_READY_TIMEOUT_COUNT 1000 + +// Min Spacing related settings. +#define MAX_MSS_DENSITY_2T 0x13 +#define MAX_MSS_DENSITY_1T 0x0A +// GPIO BIT +#define HAL_8192C_HW_GPIO_WPS_BIT BIT2 + + +#include "basic_types.h" + +#endif --- linux-raspi2-4.2.0.orig/drivers/net/wireless/rtl8192cu/include/rtl8192d_xmit.h +++ linux-raspi2-4.2.0/drivers/net/wireless/rtl8192cu/include/rtl8192d_xmit.h @@ -0,0 +1,144 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved. + * + * 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 + * published by the Free Software Foundation. + * + * 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 Street, Fifth Floor, Boston, MA 02110, USA + * + * + ******************************************************************************/ +#ifndef _RTL8192D_XMIT_H_ +#define _RTL8192D_XMIT_H_ + +// +// Queue Select Value in TxDesc +// +#define QSLT_BK 0x2//0x01 +#define QSLT_BE 0x0 +#define QSLT_VI 0x5//0x4 +#define QSLT_VO 0x7//0x6 +#define QSLT_BEACON 0x10 +#define QSLT_HIGH 0x11 +#define QSLT_MGNT 0x12 +#define QSLT_CMD 0x13 + +//Because we open EM for normal case, we just always insert 2*8 bytes.by wl +#define USB_92D_DUMMY_OFFSET 2 +#define USB_92D_DUMMY_LENGTH (USB_92D_DUMMY_OFFSET * PACKET_OFFSET_SZ) +#define USB_HWDESC_HEADER_LEN (TXDESC_SIZE + USB_92D_DUMMY_LENGTH) + +//For 92D early mode +#define SET_EARLYMODE_PKTNUM(__pAddr, __Value) SET_BITS_TO_LE_4BYTE(__pAddr, 0, 3, __Value) +#define SET_EARLYMODE_LEN0(__pAddr, __Value) SET_BITS_TO_LE_4BYTE(__pAddr, 4, 12, __Value) +#define SET_EARLYMODE_LEN1(__pAddr, __Value) SET_BITS_TO_LE_4BYTE(__pAddr, 16, 12, __Value) +#define SET_EARLYMODE_LEN2_1(__pAddr, __Value) SET_BITS_TO_LE_4BYTE(__pAddr, 28, 4, __Value) +#define SET_EARLYMODE_LEN2_2(__pAddr, __Value) SET_BITS_TO_LE_4BYTE(__pAddr+4, 0, 8, __Value) +#define SET_EARLYMODE_LEN3(__pAddr, __Value) SET_BITS_TO_LE_4BYTE(__pAddr+4, 8, 12, __Value) +#define SET_EARLYMODE_LEN4(__pAddr, __Value) SET_BITS_TO_LE_4BYTE(__pAddr+4, 20, 12, __Value) + +/* Copy from rtl8192c */ +struct txrpt_ccx_8192d { + /* offset 0 */ + u8 retry_cnt:6; + u8 rsvd_0:2; + + /* offset 1 */ + u8 rts_retry_cnt:6; + u8 rsvd_1:2; + + /* offset 2 */ + u8 ccx_qtime0; + u8 ccx_qtime1; + + /* offset 4 */ + u8 missed_pkt_num:5; + u8 rsvd_4:3; + + /* offset 5 */ + u8 mac_id:5; + u8 des1_fragssn:3; + + /* offset 6 */ + u8 rpt_pkt_num:5; + u8 pkt_drop:1; + u8 lifetime_over:1; + u8 retry_over:1; + + /* offset 7*/ + u8 edca_tx_queue:4; + u8 rsvd_7:1; + u8 bmc:1; + u8 pkt_ok:1; + u8 int_ccx:1; +}; + +#define txrpt_ccx_qtime_8192d(txrpt_ccx) ((txrpt_ccx)->ccx_qtime0+((txrpt_ccx)->ccx_qtime1<<8)) + +#ifdef CONFIG_XMIT_ACK +void dump_txrpt_ccx_8192d(void *buf); +void handle_txrpt_ccx_8192d(_adapter *adapter, void *buf); +#else +#define dump_txrpt_ccx_8192d(buf) do {} while(0) +#define handle_txrpt_ccx_8192d(adapter, buf) do {} while(0) +#endif + +#ifdef CONFIG_USB_HCI + +#ifdef CONFIG_USB_TX_AGGREGATION +#define MAX_TX_AGG_PACKET_NUMBER 0xFF +#endif + +s32 rtl8192du_init_xmit_priv(_adapter * padapter); + +void rtl8192du_free_xmit_priv(_adapter * padapter); + +void rtl8192du_cal_txdesc_chksum(struct tx_desc *ptxdesc); + +s32 rtl8192du_xmitframe_complete(_adapter *padapter, struct xmit_priv *pxmitpriv, struct xmit_buf *pxmitbuf); + +s32 rtl8192du_mgnt_xmit(_adapter *padapter, struct xmit_frame *pmgntframe); + +s32 rtl8192du_hal_xmit(_adapter *padapter, struct xmit_frame *pxmitframe); + +s32 rtl8192du_hal_xmitframe_enqueue(_adapter *padapter, struct xmit_frame *pxmitframe); + + +#ifdef CONFIG_HOSTAPD_MLME +s32 rtl8192du_hostap_mgnt_xmit_entry(_adapter *padapter, _pkt *pkt); +#endif + +#endif + +#ifdef CONFIG_PCI_HCI +s32 rtl8192de_init_xmit_priv(_adapter * padapter); +void rtl8192de_free_xmit_priv(_adapter * padapter); + +s32 rtl8192de_enqueue_xmitbuf(struct rtw_tx_ring *ring, struct xmit_buf *pxmitbuf); +struct xmit_buf *rtl8192de_dequeue_xmitbuf(struct rtw_tx_ring *ring); + +void rtl8192de_xmitframe_resume(_adapter *padapter); + +s32 rtl8192de_mgnt_xmit(_adapter *padapter, struct xmit_frame *pmgntframe); + +s32 rtl8192de_hal_xmit(_adapter *padapter, struct xmit_frame *pxmitframe); + +s32 rtl8192de_hal_xmitframe_enqueue(_adapter *padapter, struct xmit_frame *pxmitframe); + +#ifdef CONFIG_HOSTAPD_MLME +s32 rtl8192de_hostap_mgnt_xmit_entry(_adapter *padapter, _pkt *pkt); +#endif + +#endif + + +#endif --- linux-raspi2-4.2.0.orig/drivers/net/wireless/rtl8192cu/include/rtw_android.h +++ linux-raspi2-4.2.0/drivers/net/wireless/rtl8192cu/include/rtw_android.h @@ -0,0 +1,89 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved. + * + * 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 + * published by the Free Software Foundation. + * + * 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 Street, Fifth Floor, Boston, MA 02110, USA + * + * + ******************************************************************************/ + +#ifndef __RTW_ANDROID_H__ +#define __RTW_ANDROID_H__ + +#include +#include + +enum ANDROID_WIFI_CMD { + ANDROID_WIFI_CMD_START, + ANDROID_WIFI_CMD_STOP, + ANDROID_WIFI_CMD_SCAN_ACTIVE, + ANDROID_WIFI_CMD_SCAN_PASSIVE, + ANDROID_WIFI_CMD_RSSI, + ANDROID_WIFI_CMD_LINKSPEED, + ANDROID_WIFI_CMD_RXFILTER_START, + ANDROID_WIFI_CMD_RXFILTER_STOP, + ANDROID_WIFI_CMD_RXFILTER_ADD, + ANDROID_WIFI_CMD_RXFILTER_REMOVE, + ANDROID_WIFI_CMD_BTCOEXSCAN_START, + ANDROID_WIFI_CMD_BTCOEXSCAN_STOP, + ANDROID_WIFI_CMD_BTCOEXMODE, + ANDROID_WIFI_CMD_SETSUSPENDOPT, + ANDROID_WIFI_CMD_P2P_DEV_ADDR, + ANDROID_WIFI_CMD_SETFWPATH, + ANDROID_WIFI_CMD_SETBAND, + ANDROID_WIFI_CMD_GETBAND, + ANDROID_WIFI_CMD_COUNTRY, + ANDROID_WIFI_CMD_P2P_SET_NOA, + ANDROID_WIFI_CMD_P2P_GET_NOA, + ANDROID_WIFI_CMD_P2P_SET_PS, + ANDROID_WIFI_CMD_SET_AP_WPS_P2P_IE, +#ifdef PNO_SUPPORT + ANDROID_WIFI_CMD_PNOSSIDCLR_SET, + ANDROID_WIFI_CMD_PNOSETUP_SET, + ANDROID_WIFI_CMD_PNOENABLE_SET, + ANDROID_WIFI_CMD_PNODEBUG_SET, +#endif + + ANDROID_WIFI_CMD_MACADDR, + + ANDROID_WIFI_CMD_BLOCK, + + ANDROID_WIFI_CMD_WFD_ENABLE, + ANDROID_WIFI_CMD_WFD_DISABLE, + + ANDROID_WIFI_CMD_WFD_SET_TCPPORT, + ANDROID_WIFI_CMD_WFD_SET_MAX_TPUT, + ANDROID_WIFI_CMD_WFD_SET_DEVTYPE, + + ANDROID_WIFI_CMD_MAX +}; + +int rtw_android_cmdstr_to_num(char *cmdstr); +int rtw_android_priv_cmd(struct net_device *net, struct ifreq *ifr, int cmd); + +#if defined(RTW_ENABLE_WIFI_CONTROL_FUNC) +int rtw_android_wifictrl_func_add(void); +void rtw_android_wifictrl_func_del(void); +void* wl_android_prealloc(int section, unsigned long size); + +int wifi_get_irq_number(unsigned long *irq_flags_ptr); +int wifi_set_power(int on, unsigned long msec); +int wifi_get_mac_addr(unsigned char *buf); +void *wifi_get_country_code(char *ccode); +#else +static int rtw_android_wifictrl_func_add(void) { return 0; } +static void rtw_android_wifictrl_func_del(void) {} +#endif /* defined(RTW_ENABLE_WIFI_CONTROL_FUNC) */ + +#endif //__RTW_ANDROID_H__ --- linux-raspi2-4.2.0.orig/drivers/net/wireless/rtl8192cu/include/rtw_ap.h +++ linux-raspi2-4.2.0/drivers/net/wireless/rtl8192cu/include/rtw_ap.h @@ -0,0 +1,63 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2012 Realtek Corporation. All rights reserved. + * + * 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 + * published by the Free Software Foundation. + * + * 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 Street, Fifth Floor, Boston, MA 02110, USA + * + * + ******************************************************************************/ +#ifndef __RTW_AP_H_ +#define __RTW_AP_H_ + +#include +#include +#include + + +#ifdef CONFIG_AP_MODE + +//external function +extern void rtw_indicate_sta_assoc_event(_adapter *padapter, struct sta_info *psta); +extern void rtw_indicate_sta_disassoc_event(_adapter *padapter, struct sta_info *psta); + + +void init_mlme_ap_info(_adapter *padapter); +void free_mlme_ap_info(_adapter *padapter); +//void update_BCNTIM(_adapter *padapter); +void rtw_add_bcn_ie(_adapter *padapter, WLAN_BSSID_EX *pnetwork, u8 index, u8 *data, u8 len); +void rtw_remove_bcn_ie(_adapter *padapter, WLAN_BSSID_EX *pnetwork, u8 index); +void update_beacon(_adapter *padapter, u8 ie_id, u8 *oui, u8 tx); +void expire_timeout_chk(_adapter *padapter); +void update_sta_info_apmode(_adapter *padapter, struct sta_info *psta); +int rtw_check_beacon_data(_adapter *padapter, u8 *pbuf, int len); +void rtw_ap_restore_network(_adapter *padapter); +void rtw_set_macaddr_acl(_adapter *padapter, int mode); +int rtw_acl_add_sta(_adapter *padapter, u8 *addr); +int rtw_acl_remove_sta(_adapter *padapter, u8 *addr); + +#ifdef CONFIG_NATIVEAP_MLME +void associated_clients_update(_adapter *padapter, u8 updated); +void bss_cap_update_on_sta_join(_adapter *padapter, struct sta_info *psta); +u8 bss_cap_update_on_sta_leave(_adapter *padapter, struct sta_info *psta); +void sta_info_update(_adapter *padapter, struct sta_info *psta); +void ap_sta_info_defer_update(_adapter *padapter, struct sta_info *psta); +u8 ap_free_sta(_adapter *padapter, struct sta_info *psta, bool active, u16 reason); +int rtw_sta_flush(_adapter *padapter); +int rtw_ap_inform_ch_switch(_adapter *padapter, u8 new_ch, u8 ch_offset); +void start_ap_mode(_adapter *padapter); +void stop_ap_mode(_adapter *padapter); +#endif +#endif //end of CONFIG_AP_MODE + +#endif --- linux-raspi2-4.2.0.orig/drivers/net/wireless/rtl8192cu/include/rtw_br_ext.h +++ linux-raspi2-4.2.0/drivers/net/wireless/rtl8192cu/include/rtw_br_ext.h @@ -0,0 +1,75 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved. + * + * 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 + * published by the Free Software Foundation. + * + * 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 Street, Fifth Floor, Boston, MA 02110, USA + * + * + ******************************************************************************/ +#ifndef _RTW_BR_EXT_H_ +#define _RTW_BR_EXT_H_ + +#if 1 // rtw_wifi_driver +#define CL_IPV6_PASS 1 +#define MACADDRLEN 6 +#define _DEBUG_ERR printk +#define _DEBUG_INFO //printk +#define DEBUG_WARN printk +#define DEBUG_INFO //printk +#define DEBUG_ERR printk +//#define GET_MY_HWADDR ((GET_MIB(priv))->dot11OperationEntry.hwaddr) +#define GET_MY_HWADDR(padapter) ((padapter)->eeprompriv.mac_addr) +#endif // rtw_wifi_driver + +#define NAT25_HASH_BITS 4 +#define NAT25_HASH_SIZE (1 << NAT25_HASH_BITS) +#define NAT25_AGEING_TIME 300 + +#ifdef CL_IPV6_PASS +#define MAX_NETWORK_ADDR_LEN 17 +#else +#define MAX_NETWORK_ADDR_LEN 11 +#endif + +struct nat25_network_db_entry +{ + struct nat25_network_db_entry *next_hash; + struct nat25_network_db_entry **pprev_hash; + atomic_t use_count; + unsigned char macAddr[6]; + unsigned long ageing_timer; + unsigned char networkAddr[MAX_NETWORK_ADDR_LEN]; +}; + +enum NAT25_METHOD { + NAT25_MIN, + NAT25_CHECK, + NAT25_INSERT, + NAT25_LOOKUP, + NAT25_PARSE, + NAT25_MAX +}; + +struct br_ext_info { + unsigned int nat25_disable; + unsigned int macclone_enable; + unsigned int dhcp_bcst_disable; + int addPPPoETag; // 1: Add PPPoE relay-SID, 0: disable + unsigned char nat25_dmzMac[MACADDRLEN]; + unsigned int nat25sc_disable; +}; + +void nat25_db_cleanup(_adapter *priv); + +#endif // _RTW_BR_EXT_H_ --- linux-raspi2-4.2.0.orig/drivers/net/wireless/rtl8192cu/include/rtw_byteorder.h +++ linux-raspi2-4.2.0/drivers/net/wireless/rtl8192cu/include/rtw_byteorder.h @@ -0,0 +1,39 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved. + * + * 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 + * published by the Free Software Foundation. + * + * 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 Street, Fifth Floor, Boston, MA 02110, USA + * + * + ******************************************************************************/ +#ifndef _RTL871X_BYTEORDER_H_ +#define _RTL871X_BYTEORDER_H_ + +#include + +#if defined (CONFIG_LITTLE_ENDIAN) && defined (CONFIG_BIG_ENDIAN) +#error "Shall be CONFIG_LITTLE_ENDIAN or CONFIG_BIG_ENDIAN, but not both!\n" +#endif + +#if defined (CONFIG_LITTLE_ENDIAN) +#ifndef CONFIG_PLATFORM_MSTAR389 +# include +#endif +#elif defined (CONFIG_BIG_ENDIAN) +# include +#else +# error "Must be LITTLE/BIG Endian Host" +#endif + +#endif /* _RTL871X_BYTEORDER_H_ */ --- linux-raspi2-4.2.0.orig/drivers/net/wireless/rtl8192cu/include/rtw_cmd.h +++ linux-raspi2-4.2.0/drivers/net/wireless/rtl8192cu/include/rtw_cmd.h @@ -0,0 +1,1166 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved. + * + * 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 + * published by the Free Software Foundation. + * + * 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 Street, Fifth Floor, Boston, MA 02110, USA + * + * + ******************************************************************************/ +#ifndef __RTW_CMD_H_ +#define __RTW_CMD_H_ + +#include +#include +#include +#include + +#define C2H_MEM_SZ (16*1024) + +#ifndef CONFIG_RTL8711FW + + #include + #include // + + + #define FREE_CMDOBJ_SZ 128 + + #define MAX_CMDSZ 1024 + #define MAX_RSPSZ 512 + #define MAX_EVTSZ 1024 + +#ifdef PLATFORM_OS_CE + #define CMDBUFF_ALIGN_SZ 4 +#else + #define CMDBUFF_ALIGN_SZ 512 +#endif + + struct cmd_obj { + _adapter *padapter; + u16 cmdcode; + u8 res; + u8 *parmbuf; + u32 cmdsz; + u8 *rsp; + u32 rspsz; + //_sema cmd_sem; + _list list; + }; + + struct cmd_priv { + _sema cmd_queue_sema; + //_sema cmd_done_sema; + _sema terminate_cmdthread_sema; + _queue cmd_queue; + u8 cmd_seq; + u8 *cmd_buf; //shall be non-paged, and 4 bytes aligned + u8 *cmd_allocated_buf; + u8 *rsp_buf; //shall be non-paged, and 4 bytes aligned + u8 *rsp_allocated_buf; + u32 cmd_issued_cnt; + u32 cmd_done_cnt; + u32 rsp_cnt; + u8 cmdthd_running; + u8 stop_req; + _adapter *padapter; + }; + +#ifdef CONFIG_EVENT_THREAD_MODE + struct evt_obj { + u16 evtcode; + u8 res; + u8 *parmbuf; + u32 evtsz; + _list list; + }; +#endif + + struct evt_priv { +#ifdef CONFIG_EVENT_THREAD_MODE + _sema evt_notify; + _sema terminate_evtthread_sema; + _queue evt_queue; +#endif + +//#define CONFIG_C2H_WK +#ifdef CONFIG_C2H_WK + _workitem c2h_wk; + bool c2h_wk_alive; + struct rtw_cbuf *c2h_queue; + #define C2H_QUEUE_MAX_LEN 10 +#endif + +#ifdef CONFIG_H2CLBK + _sema lbkevt_done; + u8 lbkevt_limit; + u8 lbkevt_num; + u8 *cmdevt_parm; +#endif + ATOMIC_T event_seq; + u8 *evt_buf; //shall be non-paged, and 4 bytes aligned + u8 *evt_allocated_buf; + u32 evt_done_cnt; +#ifdef CONFIG_SDIO_HCI + u8 *c2h_mem; + u8 *allocated_c2h_mem; +#ifdef PLATFORM_OS_XP + PMDL pc2h_mdl; +#endif +#endif + + }; + +#define init_h2fwcmd_w_parm_no_rsp(pcmd, pparm, code) \ +do {\ + _rtw_init_listhead(&pcmd->list);\ + pcmd->cmdcode = code;\ + pcmd->parmbuf = (u8 *)(pparm);\ + pcmd->cmdsz = sizeof (*pparm);\ + pcmd->rsp = NULL;\ + pcmd->rspsz = 0;\ +} while(0) + +struct c2h_evt_hdr { + u8 id:4; + u8 plen:4; + u8 seq; + u8 payload[0]; +}; + +#define c2h_evt_exist(c2h_evt) ((c2h_evt)->id || (c2h_evt)->plen) + +extern u32 rtw_enqueue_cmd(struct cmd_priv *pcmdpriv, struct cmd_obj *obj); +extern struct cmd_obj *rtw_dequeue_cmd(struct cmd_priv *pcmdpriv); +extern void rtw_free_cmd_obj(struct cmd_obj *pcmd); + +#ifdef CONFIG_EVENT_THREAD_MODE +extern u32 rtw_enqueue_evt(struct evt_priv *pevtpriv, struct evt_obj *obj); +extern struct evt_obj *rtw_dequeue_evt(_queue *queue); +extern void rtw_free_evt_obj(struct evt_obj *pcmd); +#endif + +void rtw_stop_cmd_thread(_adapter *adapter); +thread_return rtw_cmd_thread(thread_context context); + +extern u32 rtw_init_cmd_priv (struct cmd_priv *pcmdpriv); +extern void rtw_free_cmd_priv (struct cmd_priv *pcmdpriv); + +extern u32 rtw_init_evt_priv (struct evt_priv *pevtpriv); +extern void rtw_free_evt_priv (struct evt_priv *pevtpriv); +extern void rtw_cmd_clr_isr(struct cmd_priv *pcmdpriv); +extern void rtw_evt_notify_isr(struct evt_priv *pevtpriv); +#ifdef CONFIG_P2P +u8 p2p_protocol_wk_cmd(_adapter*padapter, int intCmdType ); +#endif //CONFIG_P2P + +#else + #include +#endif /* CONFIG_RTL8711FW */ + +enum rtw_drvextra_cmd_id +{ + NONE_WK_CID, + DYNAMIC_CHK_WK_CID, + DM_CTRL_WK_CID, + PBC_POLLING_WK_CID, + POWER_SAVING_CTRL_WK_CID,//IPS,AUTOSuspend + LPS_CTRL_WK_CID, + ANT_SELECT_WK_CID, + P2P_PS_WK_CID, + P2P_PROTO_WK_CID, + CHECK_HIQ_WK_CID,//for softap mode, check hi queue if empty + INTEl_WIDI_WK_CID, + C2H_WK_CID, + RESET_SECURITYPRIV, // add for CONFIG_IEEE80211W, none 11w also can use + FREE_ASSOC_RESOURCES, // add for CONFIG_IEEE80211W, none 11w also can use + MAX_WK_CID +}; + +enum LPS_CTRL_TYPE +{ + LPS_CTRL_SCAN=0, + LPS_CTRL_JOINBSS=1, + LPS_CTRL_CONNECT=2, + LPS_CTRL_DISCONNECT=3, + LPS_CTRL_SPECIAL_PACKET=4, +}; + +enum RFINTFS { + SWSI, + HWSI, + HWPI, +}; + +/* +Caller Mode: Infra, Ad-HoC(C) + +Notes: To enter USB suspend mode + +Command Mode + +*/ +struct usb_suspend_parm { + u32 action;// 1: sleep, 0:resume +}; + +/* +Caller Mode: Infra, Ad-HoC + +Notes: To join a known BSS. + +Command-Event Mode + +*/ + +/* +Caller Mode: Infra, Ad-Hoc + +Notes: To join the specified bss + +Command Event Mode + +*/ +struct joinbss_parm { + WLAN_BSSID_EX network; +}; + +/* +Caller Mode: Infra, Ad-HoC(C) + +Notes: To disconnect the current associated BSS + +Command Mode + +*/ +struct disconnect_parm { + u32 deauth_timeout_ms; +}; + +/* +Caller Mode: AP, Ad-HoC(M) + +Notes: To create a BSS + +Command Mode +*/ +struct createbss_parm { + WLAN_BSSID_EX network; +}; + +/* +Caller Mode: AP, Ad-HoC, Infra + +Notes: To set the NIC mode of RTL8711 + +Command Mode + +The definition of mode: + +#define IW_MODE_AUTO 0 // Let the driver decides which AP to join +#define IW_MODE_ADHOC 1 // Single cell network (Ad-Hoc Clients) +#define IW_MODE_INFRA 2 // Multi cell network, roaming, .. +#define IW_MODE_MASTER 3 // Synchronisation master or Access Point +#define IW_MODE_REPEAT 4 // Wireless Repeater (forwarder) +#define IW_MODE_SECOND 5 // Secondary master/repeater (backup) +#define IW_MODE_MONITOR 6 // Passive monitor (listen only) + +*/ +struct setopmode_parm { + u8 mode; + u8 rsvd[3]; +}; + +/* +Caller Mode: AP, Ad-HoC, Infra + +Notes: To ask RTL8711 performing site-survey + +Command-Event Mode + +*/ + +#define RTW_SSID_SCAN_AMOUNT 9 // for WEXT_CSCAN_AMOUNT 9 +#define RTW_CHANNEL_SCAN_AMOUNT (14+37) +struct sitesurvey_parm { + sint scan_mode; //active: 1, passive: 0 + /* sint bsslimit; // 1 ~ 48 */ + u8 ssid_num; + u8 ch_num; + NDIS_802_11_SSID ssid[RTW_SSID_SCAN_AMOUNT]; + struct rtw_ieee80211_channel ch[RTW_CHANNEL_SCAN_AMOUNT]; +}; + +/* +Caller Mode: Any + +Notes: To set the auth type of RTL8711. open/shared/802.1x + +Command Mode + +*/ +struct setauth_parm { + u8 mode; //0: legacy open, 1: legacy shared 2: 802.1x + u8 _1x; //0: PSK, 1: TLS + u8 rsvd[2]; +}; + +/* +Caller Mode: Infra + +a. algorithm: wep40, wep104, tkip & aes +b. keytype: grp key/unicast key +c. key contents + +when shared key ==> keyid is the camid +when 802.1x ==> keyid [0:1] ==> grp key +when 802.1x ==> keyid > 2 ==> unicast key + +*/ +struct setkey_parm { + u8 algorithm; // encryption algorithm, could be none, wep40, TKIP, CCMP, wep104 + u8 keyid; + u8 grpkey; // 1: this is the grpkey for 802.1x. 0: this is the unicast key for 802.1x + u8 set_tx; // 1: main tx key for wep. 0: other key. + u8 key[16]; // this could be 40 or 104 +}; + +/* +When in AP or Ad-Hoc mode, this is used to +allocate an sw/hw entry for a newly associated sta. + +Command + +when shared key ==> algorithm/keyid + +*/ +struct set_stakey_parm { + u8 addr[ETH_ALEN]; + u8 algorithm; + u8 id;// currently for erasing cam entry if algorithm == _NO_PRIVACY_ + u8 key[16]; +}; + +struct set_stakey_rsp { + u8 addr[ETH_ALEN]; + u8 keyid; + u8 rsvd; +}; + +/* +Caller Ad-Hoc/AP + +Command -Rsp(AID == CAMID) mode + +This is to force fw to add an sta_data entry per driver's request. + +FW will write an cam entry associated with it. + +*/ +struct set_assocsta_parm { + u8 addr[ETH_ALEN]; +}; + +struct set_assocsta_rsp { + u8 cam_id; + u8 rsvd[3]; +}; + +/* + Caller Ad-Hoc/AP + + Command mode + + This is to force fw to del an sta_data entry per driver's request + + FW will invalidate the cam entry associated with it. + +*/ +struct del_assocsta_parm { + u8 addr[ETH_ALEN]; +}; + +/* +Caller Mode: AP/Ad-HoC(M) + +Notes: To notify fw that given staid has changed its power state + +Command Mode + +*/ +struct setstapwrstate_parm { + u8 staid; + u8 status; + u8 hwaddr[6]; +}; + +/* +Caller Mode: Any + +Notes: To setup the basic rate of RTL8711 + +Command Mode + +*/ +struct setbasicrate_parm { + u8 basicrates[NumRates]; +}; + +/* +Caller Mode: Any + +Notes: To read the current basic rate + +Command-Rsp Mode + +*/ +struct getbasicrate_parm { + u32 rsvd; +}; + +struct getbasicrate_rsp { + u8 basicrates[NumRates]; +}; + +/* +Caller Mode: Any + +Notes: To setup the data rate of RTL8711 + +Command Mode + +*/ +struct setdatarate_parm { +#ifdef MP_FIRMWARE_OFFLOAD + u32 curr_rateidx; +#else + u8 mac_id; + u8 datarates[NumRates]; +#endif +}; + +/* +Caller Mode: Any + +Notes: To read the current data rate + +Command-Rsp Mode + +*/ +struct getdatarate_parm { + u32 rsvd; + +}; +struct getdatarate_rsp { + u8 datarates[NumRates]; +}; + + +/* +Caller Mode: Any +AP: AP can use the info for the contents of beacon frame +Infra: STA can use the info when sitesurveying +Ad-HoC(M): Like AP +Ad-HoC(C): Like STA + + +Notes: To set the phy capability of the NIC + +Command Mode + +*/ + +struct setphyinfo_parm { + struct regulatory_class class_sets[NUM_REGULATORYS]; + u8 status; +}; + +struct getphyinfo_parm { + u32 rsvd; +}; + +struct getphyinfo_rsp { + struct regulatory_class class_sets[NUM_REGULATORYS]; + u8 status; +}; + +/* +Caller Mode: Any + +Notes: To set the channel/modem/band +This command will be used when channel/modem/band is changed. + +Command Mode + +*/ +struct setphy_parm { + u8 rfchannel; + u8 modem; +}; + +/* +Caller Mode: Any + +Notes: To get the current setting of channel/modem/band + +Command-Rsp Mode + +*/ +struct getphy_parm { + u32 rsvd; + +}; +struct getphy_rsp { + u8 rfchannel; + u8 modem; +}; + +struct readBB_parm { + u8 offset; +}; +struct readBB_rsp { + u8 value; +}; + +struct readTSSI_parm { + u8 offset; +}; +struct readTSSI_rsp { + u8 value; +}; + +struct writeBB_parm { + u8 offset; + u8 value; +}; + +struct readRF_parm { + u8 offset; +}; +struct readRF_rsp { + u32 value; +}; + +struct writeRF_parm { + u32 offset; + u32 value; +}; + +struct getrfintfs_parm { + u8 rfintfs; +}; + + +struct Tx_Beacon_param +{ + WLAN_BSSID_EX network; +}; + +/* + Notes: This command is used for H2C/C2H loopback testing + + mac[0] == 0 + ==> CMD mode, return H2C_SUCCESS. + The following condition must be ture under CMD mode + mac[1] == mac[4], mac[2] == mac[3], mac[0]=mac[5]= 0; + s0 == 0x1234, s1 == 0xabcd, w0 == 0x78563412, w1 == 0x5aa5def7; + s2 == (b1 << 8 | b0); + + mac[0] == 1 + ==> CMD_RSP mode, return H2C_SUCCESS_RSP + + The rsp layout shall be: + rsp: parm: + mac[0] = mac[5]; + mac[1] = mac[4]; + mac[2] = mac[3]; + mac[3] = mac[2]; + mac[4] = mac[1]; + mac[5] = mac[0]; + s0 = s1; + s1 = swap16(s0); + w0 = swap32(w1); + b0 = b1 + s2 = s0 + s1 + b1 = b0 + w1 = w0 + + mac[0] == 2 + ==> CMD_EVENT mode, return H2C_SUCCESS + The event layout shall be: + event: parm: + mac[0] = mac[5]; + mac[1] = mac[4]; + mac[2] = event's sequence number, starting from 1 to parm's marc[3] + mac[3] = mac[2]; + mac[4] = mac[1]; + mac[5] = mac[0]; + s0 = swap16(s0) - event.mac[2]; + s1 = s1 + event.mac[2]; + w0 = swap32(w0); + b0 = b1 + s2 = s0 + event.mac[2] + b1 = b0 + w1 = swap32(w1) - event.mac[2]; + + parm->mac[3] is the total event counts that host requested. + + + event will be the same with the cmd's param. + +*/ + +#ifdef CONFIG_H2CLBK + +struct seth2clbk_parm { + u8 mac[6]; + u16 s0; + u16 s1; + u32 w0; + u8 b0; + u16 s2; + u8 b1; + u32 w1; +}; + +struct geth2clbk_parm { + u32 rsv; +}; + +struct geth2clbk_rsp { + u8 mac[6]; + u16 s0; + u16 s1; + u32 w0; + u8 b0; + u16 s2; + u8 b1; + u32 w1; +}; + +#endif /* CONFIG_H2CLBK */ + +// CMD param Formart for driver extra cmd handler +struct drvextra_cmd_parm { + int ec_id; //extra cmd id + int type_size; // Can use this field as the type id or command size + unsigned char *pbuf; +}; + +/*------------------- Below are used for RF/BB tunning ---------------------*/ + +struct setantenna_parm { + u8 tx_antset; + u8 rx_antset; + u8 tx_antenna; + u8 rx_antenna; +}; + +struct enrateadaptive_parm { + u32 en; +}; + +struct settxagctbl_parm { + u32 txagc[MAX_RATES_LENGTH]; +}; + +struct gettxagctbl_parm { + u32 rsvd; +}; +struct gettxagctbl_rsp { + u32 txagc[MAX_RATES_LENGTH]; +}; + +struct setagcctrl_parm { + u32 agcctrl; // 0: pure hw, 1: fw +}; + + +struct setssup_parm { + u32 ss_ForceUp[MAX_RATES_LENGTH]; +}; + +struct getssup_parm { + u32 rsvd; +}; +struct getssup_rsp { + u8 ss_ForceUp[MAX_RATES_LENGTH]; +}; + + +struct setssdlevel_parm { + u8 ss_DLevel[MAX_RATES_LENGTH]; +}; + +struct getssdlevel_parm { + u32 rsvd; +}; +struct getssdlevel_rsp { + u8 ss_DLevel[MAX_RATES_LENGTH]; +}; + +struct setssulevel_parm { + u8 ss_ULevel[MAX_RATES_LENGTH]; +}; + +struct getssulevel_parm { + u32 rsvd; +}; +struct getssulevel_rsp { + u8 ss_ULevel[MAX_RATES_LENGTH]; +}; + + +struct setcountjudge_parm { + u8 count_judge[MAX_RATES_LENGTH]; +}; + +struct getcountjudge_parm { + u32 rsvd; +}; +struct getcountjudge_rsp { + u8 count_judge[MAX_RATES_LENGTH]; +}; + + +struct setratable_parm { + u8 ss_ForceUp[NumRates]; + u8 ss_ULevel[NumRates]; + u8 ss_DLevel[NumRates]; + u8 count_judge[NumRates]; +}; + +struct getratable_parm { + uint rsvd; +}; +struct getratable_rsp { + u8 ss_ForceUp[NumRates]; + u8 ss_ULevel[NumRates]; + u8 ss_DLevel[NumRates]; + u8 count_judge[NumRates]; +}; + + +//to get TX,RX retry count +struct gettxretrycnt_parm{ + unsigned int rsvd; +}; +struct gettxretrycnt_rsp{ + unsigned long tx_retrycnt; +}; + +struct getrxretrycnt_parm{ + unsigned int rsvd; +}; +struct getrxretrycnt_rsp{ + unsigned long rx_retrycnt; +}; + +//to get BCNOK,BCNERR count +struct getbcnokcnt_parm{ + unsigned int rsvd; +}; +struct getbcnokcnt_rsp{ + unsigned long bcnokcnt; +}; + +struct getbcnerrcnt_parm{ + unsigned int rsvd; +}; +struct getbcnerrcnt_rsp{ + unsigned long bcnerrcnt; +}; + +// to get current TX power level +struct getcurtxpwrlevel_parm{ + unsigned int rsvd; +}; +struct getcurtxpwrlevel_rsp{ + unsigned short tx_power; +}; + +struct setprobereqextraie_parm { + unsigned char e_id; + unsigned char ie_len; + unsigned char ie[0]; +}; + +struct setassocreqextraie_parm { + unsigned char e_id; + unsigned char ie_len; + unsigned char ie[0]; +}; + +struct setproberspextraie_parm { + unsigned char e_id; + unsigned char ie_len; + unsigned char ie[0]; +}; + +struct setassocrspextraie_parm { + unsigned char e_id; + unsigned char ie_len; + unsigned char ie[0]; +}; + + +struct addBaReq_parm +{ + unsigned int tid; + u8 addr[ETH_ALEN]; +}; + +/*H2C Handler index: 46 */ +struct set_ch_parm { + u8 ch; + u8 bw; + u8 ch_offset; +}; + +#ifdef MP_FIRMWARE_OFFLOAD +/*H2C Handler index: 47 */ +struct SetTxPower_parm +{ + u8 TxPower; +}; + +/*H2C Handler index: 48 */ +struct SwitchAntenna_parm +{ + u16 antenna_tx; + u16 antenna_rx; +// R_ANTENNA_SELECT_CCK cck_txrx; + u8 cck_txrx; +}; + +/*H2C Handler index: 49 */ +struct SetCrystalCap_parm +{ + u32 curr_crystalcap; +}; + +/*H2C Handler index: 50 */ +struct SetSingleCarrierTx_parm +{ + u8 bStart; +}; + +/*H2C Handler index: 51 */ +struct SetSingleToneTx_parm +{ + u8 bStart; + u8 curr_rfpath; +}; + +/*H2C Handler index: 52 */ +struct SetCarrierSuppressionTx_parm +{ + u8 bStart; + u32 curr_rateidx; +}; + +/*H2C Handler index: 53 */ +struct SetContinuousTx_parm +{ + u8 bStart; + u8 CCK_flag; /*1:CCK 2:OFDM*/ + u32 curr_rateidx; +}; + +/*H2C Handler index: 54 */ +struct SwitchBandwidth_parm +{ + u8 curr_bandwidth; +}; + +#endif /* MP_FIRMWARE_OFFLOAD */ + +/*H2C Handler index: 59 */ +struct SetChannelPlan_param +{ + u8 channel_plan; +}; + +/*H2C Handler index: 60 */ +struct LedBlink_param +{ + PLED_871x pLed; +}; + +/*H2C Handler index: 61 */ +struct SetChannelSwitch_param +{ + u8 new_ch_no; +}; + +/*H2C Handler index: 62 */ +struct TDLSoption_param +{ + u8 addr[ETH_ALEN]; + u8 option; +}; + +#define GEN_CMD_CODE(cmd) cmd ## _CMD_ + + +/* + +Result: +0x00: success +0x01: sucess, and check Response. +0x02: cmd ignored due to duplicated sequcne number +0x03: cmd dropped due to invalid cmd code +0x04: reserved. + +*/ + +#define H2C_RSP_OFFSET 512 + +#define H2C_SUCCESS 0x00 +#define H2C_SUCCESS_RSP 0x01 +#define H2C_DUPLICATED 0x02 +#define H2C_DROPPED 0x03 +#define H2C_PARAMETERS_ERROR 0x04 +#define H2C_REJECTED 0x05 +#define H2C_CMD_OVERFLOW 0x06 +#define H2C_RESERVED 0x07 + +extern u8 rtw_setassocsta_cmd(_adapter *padapter, u8 *mac_addr); +extern u8 rtw_setstandby_cmd(_adapter *padapter, uint action); +u8 rtw_sitesurvey_cmd(_adapter *padapter, NDIS_802_11_SSID *ssid, int ssid_num, struct rtw_ieee80211_channel *ch, int ch_num); +extern u8 rtw_createbss_cmd(_adapter *padapter); +extern u8 rtw_createbss_cmd_ex(_adapter *padapter, unsigned char *pbss, unsigned int sz); +extern u8 rtw_setphy_cmd(_adapter *padapter, u8 modem, u8 ch); +extern u8 rtw_setstakey_cmd(_adapter *padapter, u8 *psta, u8 unicast_key); +extern u8 rtw_clearstakey_cmd(_adapter *padapter, u8 *psta, u8 entry, u8 enqueue); +extern u8 rtw_joinbss_cmd(_adapter *padapter, struct wlan_network* pnetwork); +u8 rtw_disassoc_cmd(_adapter *padapter, u32 deauth_timeout_ms, bool enqueue); +extern u8 rtw_setopmode_cmd(_adapter *padapter, NDIS_802_11_NETWORK_INFRASTRUCTURE networktype); +extern u8 rtw_setdatarate_cmd(_adapter *padapter, u8 *rateset); +extern u8 rtw_setbasicrate_cmd(_adapter *padapter, u8 *rateset); +extern u8 rtw_setbbreg_cmd(_adapter * padapter, u8 offset, u8 val); +extern u8 rtw_setrfreg_cmd(_adapter * padapter, u8 offset, u32 val); +extern u8 rtw_getbbreg_cmd(_adapter * padapter, u8 offset, u8 * pval); +extern u8 rtw_getrfreg_cmd(_adapter * padapter, u8 offset, u8 * pval); +extern u8 rtw_setrfintfs_cmd(_adapter *padapter, u8 mode); +extern u8 rtw_setrttbl_cmd(_adapter *padapter, struct setratable_parm *prate_table); +extern u8 rtw_getrttbl_cmd(_adapter *padapter, struct getratable_rsp *pval); + +extern u8 rtw_gettssi_cmd(_adapter *padapter, u8 offset,u8 *pval); +extern u8 rtw_setfwdig_cmd(_adapter*padapter, u8 type); +extern u8 rtw_setfwra_cmd(_adapter*padapter, u8 type); + +extern u8 rtw_addbareq_cmd(_adapter*padapter, u8 tid, u8 *addr); +// add for CONFIG_IEEE80211W, none 11w also can use +extern u8 rtw_reset_securitypriv_cmd(_adapter*padapter); +extern u8 rtw_free_assoc_resources_cmd(_adapter *padapter); +extern u8 rtw_dynamic_chk_wk_cmd(_adapter *adapter); + +u8 rtw_lps_ctrl_wk_cmd(_adapter*padapter, u8 lps_ctrl_type, u8 enqueue); + +#ifdef CONFIG_ANTENNA_DIVERSITY +extern u8 rtw_antenna_select_cmd(_adapter*padapter, u8 antenna,u8 enqueue); +#endif + +extern u8 rtw_ps_cmd(_adapter*padapter); + + +#ifdef CONFIG_AP_MODE +u8 rtw_chk_hi_queue_cmd(_adapter*padapter); +#endif + +u8 rtw_set_ch_cmd(_adapter*padapter, u8 ch, u8 bw, u8 ch_offset, u8 enqueue); +extern u8 rtw_set_chplan_cmd(_adapter*padapter, u8 chplan, u8 enqueue); +extern u8 rtw_led_blink_cmd(_adapter*padapter, PLED_871x pLed); +extern u8 rtw_set_csa_cmd(_adapter*padapter, u8 new_ch_no); +extern u8 rtw_tdls_cmd(_adapter*padapter, u8 *addr, u8 option); + +extern u8 rtw_c2h_wk_cmd(PADAPTER padapter, u8 *c2h_evt); + +u8 rtw_drvextra_cmd_hdl(_adapter *padapter, unsigned char *pbuf); + +extern void rtw_survey_cmd_callback(_adapter *padapter, struct cmd_obj *pcmd); +extern void rtw_disassoc_cmd_callback(_adapter *padapter, struct cmd_obj *pcmd); +extern void rtw_joinbss_cmd_callback(_adapter *padapter, struct cmd_obj *pcmd); +extern void rtw_createbss_cmd_callback(_adapter *padapter, struct cmd_obj *pcmd); +extern void rtw_getbbrfreg_cmdrsp_callback(_adapter *padapter, struct cmd_obj *pcmd); +extern void rtw_readtssi_cmdrsp_callback(_adapter* padapter, struct cmd_obj *pcmd); + +extern void rtw_setstaKey_cmdrsp_callback(_adapter *padapter, struct cmd_obj *pcmd); +extern void rtw_setassocsta_cmdrsp_callback(_adapter *padapter, struct cmd_obj *pcmd); +extern void rtw_getrttbl_cmdrsp_callback(_adapter *padapter, struct cmd_obj *pcmd); + + +struct _cmd_callback { + u32 cmd_code; + void (*callback)(_adapter *padapter, struct cmd_obj *cmd); +}; + +enum rtw_h2c_cmd +{ + GEN_CMD_CODE(_Read_MACREG) , /*0*/ + GEN_CMD_CODE(_Write_MACREG) , + GEN_CMD_CODE(_Read_BBREG) , + GEN_CMD_CODE(_Write_BBREG) , + GEN_CMD_CODE(_Read_RFREG) , + GEN_CMD_CODE(_Write_RFREG) , /*5*/ + GEN_CMD_CODE(_Read_EEPROM) , + GEN_CMD_CODE(_Write_EEPROM) , + GEN_CMD_CODE(_Read_EFUSE) , + GEN_CMD_CODE(_Write_EFUSE) , + + GEN_CMD_CODE(_Read_CAM) , /*10*/ + GEN_CMD_CODE(_Write_CAM) , + GEN_CMD_CODE(_setBCNITV), + GEN_CMD_CODE(_setMBIDCFG), + GEN_CMD_CODE(_JoinBss), /*14*/ + GEN_CMD_CODE(_DisConnect) , /*15*/ + GEN_CMD_CODE(_CreateBss) , + GEN_CMD_CODE(_SetOpMode) , + GEN_CMD_CODE(_SiteSurvey), /*18*/ + GEN_CMD_CODE(_SetAuth) , + + GEN_CMD_CODE(_SetKey) , /*20*/ + GEN_CMD_CODE(_SetStaKey) , + GEN_CMD_CODE(_SetAssocSta) , + GEN_CMD_CODE(_DelAssocSta) , + GEN_CMD_CODE(_SetStaPwrState) , + GEN_CMD_CODE(_SetBasicRate) , /*25*/ + GEN_CMD_CODE(_GetBasicRate) , + GEN_CMD_CODE(_SetDataRate) , + GEN_CMD_CODE(_GetDataRate) , + GEN_CMD_CODE(_SetPhyInfo) , + + GEN_CMD_CODE(_GetPhyInfo) , /*30*/ + GEN_CMD_CODE(_SetPhy) , + GEN_CMD_CODE(_GetPhy) , + GEN_CMD_CODE(_readRssi) , + GEN_CMD_CODE(_readGain) , + GEN_CMD_CODE(_SetAtim) , /*35*/ + GEN_CMD_CODE(_SetPwrMode) , + GEN_CMD_CODE(_JoinbssRpt), + GEN_CMD_CODE(_SetRaTable) , + GEN_CMD_CODE(_GetRaTable) , + + GEN_CMD_CODE(_GetCCXReport), /*40*/ + GEN_CMD_CODE(_GetDTMReport), + GEN_CMD_CODE(_GetTXRateStatistics), + GEN_CMD_CODE(_SetUsbSuspend), + GEN_CMD_CODE(_SetH2cLbk), + GEN_CMD_CODE(_AddBAReq) , /*45*/ + GEN_CMD_CODE(_SetChannel), /*46*/ + GEN_CMD_CODE(_SetTxPower), + GEN_CMD_CODE(_SwitchAntenna), + GEN_CMD_CODE(_SetCrystalCap), + GEN_CMD_CODE(_SetSingleCarrierTx), /*50*/ + + GEN_CMD_CODE(_SetSingleToneTx),/*51*/ + GEN_CMD_CODE(_SetCarrierSuppressionTx), + GEN_CMD_CODE(_SetContinuousTx), + GEN_CMD_CODE(_SwitchBandwidth), /*54*/ + GEN_CMD_CODE(_TX_Beacon), /*55*/ + + GEN_CMD_CODE(_Set_MLME_EVT), /*56*/ + GEN_CMD_CODE(_Set_Drv_Extra), /*57*/ + GEN_CMD_CODE(_Set_H2C_MSG), /*58*/ + + GEN_CMD_CODE(_SetChannelPlan), /*59*/ + GEN_CMD_CODE(_LedBlink), /*60*/ + + GEN_CMD_CODE(_SetChannelSwitch), /*61*/ + GEN_CMD_CODE(_TDLS), /*62*/ + + MAX_H2CCMD +}; + +#define _GetBBReg_CMD_ _Read_BBREG_CMD_ +#define _SetBBReg_CMD_ _Write_BBREG_CMD_ +#define _GetRFReg_CMD_ _Read_RFREG_CMD_ +#define _SetRFReg_CMD_ _Write_RFREG_CMD_ + +#ifdef _RTW_CMD_C_ +struct _cmd_callback rtw_cmd_callback[] = +{ + {GEN_CMD_CODE(_Read_MACREG), NULL}, /*0*/ + {GEN_CMD_CODE(_Write_MACREG), NULL}, + {GEN_CMD_CODE(_Read_BBREG), &rtw_getbbrfreg_cmdrsp_callback}, + {GEN_CMD_CODE(_Write_BBREG), NULL}, + {GEN_CMD_CODE(_Read_RFREG), &rtw_getbbrfreg_cmdrsp_callback}, + {GEN_CMD_CODE(_Write_RFREG), NULL}, /*5*/ + {GEN_CMD_CODE(_Read_EEPROM), NULL}, + {GEN_CMD_CODE(_Write_EEPROM), NULL}, + {GEN_CMD_CODE(_Read_EFUSE), NULL}, + {GEN_CMD_CODE(_Write_EFUSE), NULL}, + + {GEN_CMD_CODE(_Read_CAM), NULL}, /*10*/ + {GEN_CMD_CODE(_Write_CAM), NULL}, + {GEN_CMD_CODE(_setBCNITV), NULL}, + {GEN_CMD_CODE(_setMBIDCFG), NULL}, + {GEN_CMD_CODE(_JoinBss), &rtw_joinbss_cmd_callback}, /*14*/ + {GEN_CMD_CODE(_DisConnect), &rtw_disassoc_cmd_callback}, /*15*/ + {GEN_CMD_CODE(_CreateBss), &rtw_createbss_cmd_callback}, + {GEN_CMD_CODE(_SetOpMode), NULL}, + {GEN_CMD_CODE(_SiteSurvey), &rtw_survey_cmd_callback}, /*18*/ + {GEN_CMD_CODE(_SetAuth), NULL}, + + {GEN_CMD_CODE(_SetKey), NULL}, /*20*/ + {GEN_CMD_CODE(_SetStaKey), &rtw_setstaKey_cmdrsp_callback}, + {GEN_CMD_CODE(_SetAssocSta), &rtw_setassocsta_cmdrsp_callback}, + {GEN_CMD_CODE(_DelAssocSta), NULL}, + {GEN_CMD_CODE(_SetStaPwrState), NULL}, + {GEN_CMD_CODE(_SetBasicRate), NULL}, /*25*/ + {GEN_CMD_CODE(_GetBasicRate), NULL}, + {GEN_CMD_CODE(_SetDataRate), NULL}, + {GEN_CMD_CODE(_GetDataRate), NULL}, + {GEN_CMD_CODE(_SetPhyInfo), NULL}, + + {GEN_CMD_CODE(_GetPhyInfo), NULL}, /*30*/ + {GEN_CMD_CODE(_SetPhy), NULL}, + {GEN_CMD_CODE(_GetPhy), NULL}, + {GEN_CMD_CODE(_readRssi), NULL}, + {GEN_CMD_CODE(_readGain), NULL}, + {GEN_CMD_CODE(_SetAtim), NULL}, /*35*/ + {GEN_CMD_CODE(_SetPwrMode), NULL}, + {GEN_CMD_CODE(_JoinbssRpt), NULL}, + {GEN_CMD_CODE(_SetRaTable), NULL}, + {GEN_CMD_CODE(_GetRaTable) , NULL}, + + {GEN_CMD_CODE(_GetCCXReport), NULL}, /*40*/ + {GEN_CMD_CODE(_GetDTMReport), NULL}, + {GEN_CMD_CODE(_GetTXRateStatistics), NULL}, + {GEN_CMD_CODE(_SetUsbSuspend), NULL}, + {GEN_CMD_CODE(_SetH2cLbk), NULL}, + {GEN_CMD_CODE(_AddBAReq), NULL}, /*45*/ + {GEN_CMD_CODE(_SetChannel), NULL}, /*46*/ + {GEN_CMD_CODE(_SetTxPower), NULL}, + {GEN_CMD_CODE(_SwitchAntenna), NULL}, + {GEN_CMD_CODE(_SetCrystalCap), NULL}, + {GEN_CMD_CODE(_SetSingleCarrierTx), NULL}, /*50*/ + + {GEN_CMD_CODE(_SetSingleToneTx), NULL}, /*51*/ + {GEN_CMD_CODE(_SetCarrierSuppressionTx), NULL}, + {GEN_CMD_CODE(_SetContinuousTx), NULL}, + {GEN_CMD_CODE(_SwitchBandwidth), NULL}, /*54*/ + {GEN_CMD_CODE(_TX_Beacon), NULL},/*55*/ + + {GEN_CMD_CODE(_Set_MLME_EVT), NULL},/*56*/ + {GEN_CMD_CODE(_Set_Drv_Extra), NULL},/*57*/ + {GEN_CMD_CODE(_Set_H2C_MSG), NULL},/*58*/ + {GEN_CMD_CODE(_SetChannelPlan), NULL},/*59*/ + {GEN_CMD_CODE(_LedBlink), NULL},/*60*/ + + {GEN_CMD_CODE(_SetChannelSwitch), NULL},/*61*/ + {GEN_CMD_CODE(_TDLS), NULL},/*62*/ +}; +#endif + +#endif // _CMD_H_ --- linux-raspi2-4.2.0.orig/drivers/net/wireless/rtl8192cu/include/rtw_debug.h +++ linux-raspi2-4.2.0/drivers/net/wireless/rtl8192cu/include/rtw_debug.h @@ -0,0 +1,537 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved. + * + * 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 + * published by the Free Software Foundation. + * + * 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 Street, Fifth Floor, Boston, MA 02110, USA + * + * + ******************************************************************************/ +#ifndef __RTW_DEBUG_H__ +#define __RTW_DEBUG_H__ + +#include +#include +#include + + +#define _no_debug_ 0 +#define _drv_emerg_ 1 +#define _drv_alert_ 2 +#define _drv_crit_ 3 +#define _drv_err_ 4 +#define _drv_warning_ 5 +#define _drv_notice_ 6 +#define _drv_info_ 7 +#define _drv_dump_ 8 +#define _drv_debug_ 9 +#define _drv_always_ _drv_emerg_ + +#define _module_rtl871x_xmit_c_ BIT(0) +#define _module_xmit_osdep_c_ BIT(1) +#define _module_rtl871x_recv_c_ BIT(2) +#define _module_recv_osdep_c_ BIT(3) +#define _module_rtl871x_mlme_c_ BIT(4) +#define _module_mlme_osdep_c_ BIT(5) +#define _module_rtl871x_sta_mgt_c_ BIT(6) +#define _module_rtl871x_cmd_c_ BIT(7) +#define _module_cmd_osdep_c_ BIT(8) +#define _module_rtl871x_io_c_ BIT(9) +#define _module_io_osdep_c_ BIT(10) +#define _module_os_intfs_c_ BIT(11) +#define _module_rtl871x_security_c_ BIT(12) +#define _module_rtl871x_eeprom_c_ BIT(13) +#define _module_hal_init_c_ BIT(14) +#define _module_hci_hal_init_c_ BIT(15) +#define _module_rtl871x_ioctl_c_ BIT(16) +#define _module_rtl871x_ioctl_set_c_ BIT(17) +#define _module_rtl871x_ioctl_query_c_ BIT(18) +#define _module_rtl871x_pwrctrl_c_ BIT(19) +#define _module_hci_intfs_c_ BIT(20) +#define _module_hci_ops_c_ BIT(21) +#define _module_osdep_service_c_ BIT(22) +#define _module_mp_ BIT(23) +#define _module_hci_ops_os_c_ BIT(24) +#define _module_rtl871x_ioctl_os_c BIT(25) +#define _module_rtl8712_cmd_c_ BIT(26) +//#define _module_efuse_ BIT(27) +#define _module_rtl8192c_xmit_c_ BIT(28) +#define _module_hal_xmit_c_ BIT(28) +#define _module_efuse_ BIT(29) +#define _module_rtl8712_recv_c_ BIT(30) +#define _module_rtl8712_led_c_ BIT(31) + +#undef _MODULE_DEFINE_ + +#if defined _RTW_XMIT_C_ + #define _MODULE_DEFINE_ _module_rtl871x_xmit_c_ +#elif defined _XMIT_OSDEP_C_ + #define _MODULE_DEFINE_ _module_xmit_osdep_c_ +#elif defined _RTW_RECV_C_ + #define _MODULE_DEFINE_ _module_rtl871x_recv_c_ +#elif defined _RECV_OSDEP_C_ + #define _MODULE_DEFINE_ _module_recv_osdep_c_ +#elif defined _RTW_MLME_C_ + #define _MODULE_DEFINE_ _module_rtl871x_mlme_c_ +#elif defined _MLME_OSDEP_C_ + #define _MODULE_DEFINE_ _module_mlme_osdep_c_ +#elif defined _RTW_MLME_EXT_C_ + #define _MODULE_DEFINE_ 1 +#elif defined _RTW_STA_MGT_C_ + #define _MODULE_DEFINE_ _module_rtl871x_sta_mgt_c_ +#elif defined _RTW_CMD_C_ + #define _MODULE_DEFINE_ _module_rtl871x_cmd_c_ +#elif defined _CMD_OSDEP_C_ + #define _MODULE_DEFINE_ _module_cmd_osdep_c_ +#elif defined _RTW_IO_C_ + #define _MODULE_DEFINE_ _module_rtl871x_io_c_ +#elif defined _IO_OSDEP_C_ + #define _MODULE_DEFINE_ _module_io_osdep_c_ +#elif defined _OS_INTFS_C_ + #define _MODULE_DEFINE_ _module_os_intfs_c_ +#elif defined _RTW_SECURITY_C_ + #define _MODULE_DEFINE_ _module_rtl871x_security_c_ +#elif defined _RTW_EEPROM_C_ + #define _MODULE_DEFINE_ _module_rtl871x_eeprom_c_ +#elif defined _HAL_INTF_C_ + #define _MODULE_DEFINE_ _module_hal_init_c_ +#elif defined _HCI_HAL_INIT_C_ + #define _MODULE_DEFINE_ _module_hci_hal_init_c_ +#elif defined _RTL871X_IOCTL_C_ + #define _MODULE_DEFINE_ _module_rtl871x_ioctl_c_ +#elif defined _RTL871X_IOCTL_SET_C_ + #define _MODULE_DEFINE_ _module_rtl871x_ioctl_set_c_ +#elif defined _RTL871X_IOCTL_QUERY_C_ + #define _MODULE_DEFINE_ _module_rtl871x_ioctl_query_c_ +#elif defined _RTL871X_PWRCTRL_C_ + #define _MODULE_DEFINE_ _module_rtl871x_pwrctrl_c_ +#elif defined _RTW_PWRCTRL_C_ + #define _MODULE_DEFINE_ 1 +#elif defined _HCI_INTF_C_ + #define _MODULE_DEFINE_ _module_hci_intfs_c_ +#elif defined _HCI_OPS_C_ + #define _MODULE_DEFINE_ _module_hci_ops_c_ +#elif defined _SDIO_OPS_C_ + #define _MODULE_DEFINE_ 1 +#elif defined _OSDEP_HCI_INTF_C_ + #define _MODULE_DEFINE_ _module_hci_intfs_c_ +#elif defined _OSDEP_SERVICE_C_ + #define _MODULE_DEFINE_ _module_osdep_service_c_ +#elif defined _HCI_OPS_OS_C_ + #define _MODULE_DEFINE_ _module_hci_ops_os_c_ +#elif defined _RTL871X_IOCTL_LINUX_C_ + #define _MODULE_DEFINE_ _module_rtl871x_ioctl_os_c +#elif defined _RTL8712_CMD_C_ + #define _MODULE_DEFINE_ _module_rtl8712_cmd_c_ +#elif defined _RTL8192C_XMIT_C_ + #define _MODULE_DEFINE_ 1 +#elif defined _RTL8723AS_XMIT_C_ + #define _MODULE_DEFINE_ 1 +#elif defined _RTL8712_RECV_C_ + #define _MODULE_DEFINE_ _module_rtl8712_recv_c_ +#elif defined _RTL8192CU_RECV_C_ + #define _MODULE_DEFINE_ _module_rtl8712_recv_c_ +#elif defined _RTL871X_MLME_EXT_C_ + #define _MODULE_DEFINE_ _module_mlme_osdep_c_ +#elif defined _RTW_MP_C_ + #define _MODULE_DEFINE_ _module_mp_ +#elif defined _RTW_MP_IOCTL_C_ + #define _MODULE_DEFINE_ _module_mp_ +#elif defined _RTW_EFUSE_C_ + #define _MODULE_DEFINE_ _module_efuse_ +#endif + +#ifdef PLATFORM_OS_CE +extern void rtl871x_cedbg(const char *fmt, ...); +#endif + +#define RT_TRACE(_Comp, _Level, Fmt) do{}while(0) +#define _func_enter_ do{}while(0) +#define _func_exit_ do{}while(0) +#define RT_PRINT_DATA(_Comp, _Level, _TitleString, _HexData, _HexDataLen) do{}while(0) + +#undef _dbgdump + +#ifdef CONFIG_DEBUG_RTL871X + +#ifndef _RTL871X_DEBUG_C_ + extern u32 GlobalDebugLevel; + extern u64 GlobalDebugComponents; +#endif + +#ifdef PLATFORM_WINDOWS + + #ifdef PLATFORM_OS_XP + + #define _dbgdump DbgPrint + + #elif defined PLATFORM_OS_CE + + #define _dbgdump rtl871x_cedbg + + #endif + +#elif defined PLATFORM_LINUX + + #define _dbgdump printk + +#elif defined PLATFORM_FREEBSD + + #define _dbgdump printf + +#endif + +#endif /* CONFIG_DEBUG_RTL871X */ + + +#if defined (_dbgdump) && defined (_MODULE_DEFINE_) + + #undef RT_TRACE + #define RT_TRACE(_Comp, _Level, Fmt)\ + do {\ + if((_Comp & GlobalDebugComponents) && (_Level <= GlobalDebugLevel)) {\ + _dbgdump("%s [0x%08x,%d]", RTL871X_MODULE_NAME, (unsigned int)_Comp, _Level);\ + _dbgdump Fmt;\ + }\ + }while(0) + +#endif + + +#if defined (_dbgdump) + + #undef _func_enter_ + #define _func_enter_ \ + do { \ + if (GlobalDebugLevel >= _drv_debug_) \ + { \ + _dbgdump("\n %s : %s enters at %d\n", RTL871X_MODULE_NAME, __FUNCTION__, __LINE__);\ + } \ + } while(0) + + #undef _func_exit_ + #define _func_exit_ \ + do { \ + if (GlobalDebugLevel >= _drv_debug_) \ + { \ + _dbgdump("\n %s : %s exits at %d\n", RTL871X_MODULE_NAME, __FUNCTION__, __LINE__); \ + } \ + } while(0) + + #undef RT_PRINT_DATA + #define RT_PRINT_DATA(_Comp, _Level, _TitleString, _HexData, _HexDataLen) \ + if(((_Comp) & GlobalDebugComponents) && (_Level <= GlobalDebugLevel)) \ + { \ + int __i; \ + u8 *ptr = (u8 *)_HexData; \ + _dbgdump("Rtl871x: "); \ + _dbgdump(_TitleString); \ + for( __i=0; __i<(int)_HexDataLen; __i++ ) \ + { \ + _dbgdump("%02X%s", ptr[__i], (((__i + 1) % 4) == 0)?" ":" "); \ + if (((__i + 1) % 16) == 0) _dbgdump("\n"); \ + } \ + _dbgdump("\n"); \ + } +#endif + + +#ifdef CONFIG_DEBUG_RTL819X + +#undef _dbgdump + +#ifdef PLATFORM_WINDOWS + + #ifdef PLATFORM_OS_XP + + #define _dbgdump DbgPrint + + #elif defined PLATFORM_OS_CE + + #define _dbgdump rtl871x_cedbg + + #endif + +#elif defined PLATFORM_LINUX + + #define _dbgdump printk + +#elif defined PLATFORM_FREEBSD + + #define _dbgdump printf + +#endif + +#endif /* CONFIG_DEBUG_RTL819X */ + + +#ifdef PLATFORM_WINDOWS + #define DBG_871X do {} while(0) + #define MSG_8192C do {} while(0) + #define DBG_8192C do {} while(0) + #define WRN_8192C do {} while(0) + #define ERR_8192C do {} while(0) +#endif + +#ifdef PLATFORM_LINUX + #define DBG_871X(x, ...) do {} while(0) + #define MSG_8192C(x, ...) do {} while(0) + #define DBG_8192C(x,...) do {} while(0) + #define WRN_8192C(x,...) do {} while(0) + #define ERR_8192C(x,...) do {} while(0) +#endif + +#ifdef PLATFORM_FREEBSD + #define _dbgdump printf + #define DBG_871X(x, ...) do {} while(0) + #define MSG_8192C(x, ...) do {} while(0) + #define DBG_8192C(x,...) do {} while(0) + #define WRN_8192C(x,...) do {} while(0) + #define ERR_8192C(x,...) do {} while(0) +#endif + +extern u32 GlobalDebugLevel; +#define LOG_LEVEL(level, ...)\ + do {\ + if(level <= GlobalDebugLevel) {\ + printk(__VA_ARGS__);\ + }\ + }while(0) + +#define DBG_871X_LEVEL LOG_LEVEL + +#if defined (_dbgdump) + #undef DBG_871X +// #define DBG_871X _dbgdump + #define DBG_871X(...) LOG_LEVEL(_drv_emerg_ , __VA_ARGS__) + + #undef MSG_8192C +// #define MSG_8192C _dbgdump + #define MSG_8192C(...) LOG_LEVEL(_drv_emerg_ , __VA_ARGS__) + + #undef DBG_8192C +// #define DBG_8192C _dbgdump + #define DBG_8192C(...) LOG_LEVEL(_drv_emerg_ , __VA_ARGS__) + + + #undef WRN_8192C + #define WRN_8192C _dbgdump + + #undef ERR_8192C + #define ERR_8192C _dbgdump +#endif + + +#ifdef CONFIG_PROC_DEBUG + + int proc_get_drv_version(char *page, char **start, + off_t offset, int count, + int *eof, void *data); + + int proc_get_log_level(char *page, char **start, + off_t offset, int count, + int *eof, void *data); + + int proc_set_log_level(struct file *file, const char *buffer, + unsigned long count, void *data); + +#ifdef DBG_MEM_ALLOC + int proc_get_mstat(char *page, char **start, + off_t offset, int count, + int *eof, void *data); +#endif /* DBG_MEM_ALLOC */ + + int proc_get_write_reg(char *page, char **start, + off_t offset, int count, + int *eof, void *data); + + int proc_set_write_reg(struct file *file, const char *buffer, + unsigned long count, void *data); + + int proc_get_read_reg(char *page, char **start, + off_t offset, int count, + int *eof, void *data); + + int proc_set_read_reg(struct file *file, const char *buffer, + unsigned long count, void *data); + + + int proc_get_fwstate(char *page, char **start, + off_t offset, int count, + int *eof, void *data); + + int proc_get_sec_info(char *page, char **start, + off_t offset, int count, + int *eof, void *data); + + int proc_get_mlmext_state(char *page, char **start, + off_t offset, int count, + int *eof, void *data); + + int proc_get_qos_option(char *page, char **start, + off_t offset, int count, + int *eof, void *data); + + int proc_get_ht_option(char *page, char **start, + off_t offset, int count, + int *eof, void *data); + + int proc_get_rf_info(char *page, char **start, + off_t offset, int count, + int *eof, void *data); + + int proc_get_ap_info(char *page, char **start, + off_t offset, int count, + int *eof, void *data); + + int proc_get_adapter_state(char *page, char **start, + off_t offset, int count, + int *eof, void *data); + + int proc_get_trx_info(char *page, char **start, + off_t offset, int count, + int *eof, void *data); + + int proc_get_mac_reg_dump1(char *page, char **start, + off_t offset, int count, + int *eof, void *data); + + int proc_get_mac_reg_dump2(char *page, char **start, + off_t offset, int count, + int *eof, void *data); + + int proc_get_mac_reg_dump3(char *page, char **start, + off_t offset, int count, + int *eof, void *data); + + int proc_get_bb_reg_dump1(char *page, char **start, + off_t offset, int count, + int *eof, void *data); + + int proc_get_bb_reg_dump2(char *page, char **start, + off_t offset, int count, + int *eof, void *data); + + int proc_get_bb_reg_dump3(char *page, char **start, + off_t offset, int count, + int *eof, void *data); + + int proc_get_rf_reg_dump1(char *page, char **start, + off_t offset, int count, + int *eof, void *data); + + int proc_get_rf_reg_dump2(char *page, char **start, + off_t offset, int count, + int *eof, void *data); + + int proc_get_rf_reg_dump3(char *page, char **start, + off_t offset, int count, + int *eof, void *data); + + int proc_get_rf_reg_dump4(char *page, char **start, + off_t offset, int count, + int *eof, void *data); + +#ifdef CONFIG_AP_MODE + + int proc_get_all_sta_info(char *page, char **start, + off_t offset, int count, + int *eof, void *data); + +#endif + +#ifdef DBG_MEMORY_LEAK + int proc_get_malloc_cnt(char *page, char **start, + off_t offset, int count, + int *eof, void *data); +#endif + +#ifdef CONFIG_FIND_BEST_CHANNEL + int proc_get_best_channel(char *page, char **start, + off_t offset, int count, + int *eof, void *data); + int proc_set_best_channel(struct file *file, const char *buffer, + unsigned long count, void *data); +#endif + + int proc_get_rx_signal(char *page, char **start, + off_t offset, int count, + int *eof, void *data); + + int proc_set_rx_signal(struct file *file, const char *buffer, + unsigned long count, void *data); + + int proc_get_ht_enable(char *page, char **start, + off_t offset, int count, + int *eof, void *data); + + int proc_set_ht_enable(struct file *file, const char *buffer, + unsigned long count, void *data); + + int proc_get_cbw40_enable(char *page, char **start, + off_t offset, int count, + int *eof, void *data); + + int proc_set_cbw40_enable(struct file *file, const char *buffer, + unsigned long count, void *data); + + int proc_get_ampdu_enable(char *page, char **start, + off_t offset, int count, + int *eof, void *data); + + int proc_set_ampdu_enable(struct file *file, const char *buffer, + unsigned long count, void *data); + + int proc_get_two_path_rssi(char *page, char **start, + off_t offset, int count, + int *eof, void *data); + + int proc_get_rx_stbc(char *page, char **start, + off_t offset, int count, + int *eof, void *data); + + int proc_set_rx_stbc(struct file *file, const char *buffer, + unsigned long count, void *data); + + + int proc_get_vid(char *page, char **start, + off_t offset, int count, + int *eof, void *data); + + int proc_get_pid(char *page, char **start, + off_t offset, int count, + int *eof, void *data); + + int proc_get_rssi_disp(char *page, char **start, + off_t offset, int count, + int *eof, void *data); + + int proc_set_rssi_disp(struct file *file, const char *buffer, + unsigned long count, void *data); + +#if defined(DBG_CONFIG_ERROR_DETECT) +int proc_get_sreset(char *page, char **start, off_t offset, int count, int *eof, void *data); +int proc_set_sreset(struct file *file, const char *buffer, unsigned long count, void *data); +#endif /* DBG_CONFIG_ERROR_DETECT */ + +#ifdef CONFIG_DM_ADAPTIVITY +int proc_get_dm_adaptivity(char *page, char **start, + off_t offset, int count, + int *eof, void *data); +int proc_set_dm_adaptivity(struct file *file, const char *buffer, + unsigned long count, void *data); +#endif /* CONFIG_DM_ADAPTIVITY */ + +#endif //CONFIG_PROC_DEBUG + +#endif //__RTW_DEBUG_H__ --- linux-raspi2-4.2.0.orig/drivers/net/wireless/rtl8192cu/include/rtw_eeprom.h +++ linux-raspi2-4.2.0/drivers/net/wireless/rtl8192cu/include/rtw_eeprom.h @@ -0,0 +1,152 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved. + * + * 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 + * published by the Free Software Foundation. + * + * 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 Street, Fifth Floor, Boston, MA 02110, USA + * + * + ******************************************************************************/ +#ifndef __RTW_EEPROM_H__ +#define __RTW_EEPROM_H__ + +#include +#include +#include + +#define RTL8712_EEPROM_ID 0x8712 +#define EEPROM_MAX_SIZE 256 +#define CLOCK_RATE 50 //100us + +//- EEPROM opcodes +#define EEPROM_READ_OPCODE 06 +#define EEPROM_WRITE_OPCODE 05 +#define EEPROM_ERASE_OPCODE 07 +#define EEPROM_EWEN_OPCODE 19 // Erase/write enable +#define EEPROM_EWDS_OPCODE 16 // Erase/write disable + +//Country codes +#define USA 0x555320 +#define EUROPE 0x1 //temp, should be provided later +#define JAPAN 0x2 //temp, should be provided later + +#ifdef CONFIG_SDIO_HCI +#define eeprom_cis0_sz 17 +#define eeprom_cis1_sz 50 +#endif + +#define EEPROM_CID_DEFAULT 0x0 +#define EEPROM_CID_ALPHA 0x1 +#define EEPROM_CID_Senao 0x3 +#define EEPROM_CID_NetCore 0x5 +#define EEPROM_CID_CAMEO 0X8 +#define EEPROM_CID_SITECOM 0x9 +#define EEPROM_CID_COREGA 0xB +#define EEPROM_CID_EDIMAX_BELKIN 0xC +#define EEPROM_CID_SERCOMM_BELKIN 0xE +#define EEPROM_CID_CAMEO1 0xF +#define EEPROM_CID_WNC_COREGA 0x12 +#define EEPROM_CID_CLEVO 0x13 +#define EEPROM_CID_WHQL 0xFE // added by chiyoko for dtm, 20090108 + +// +// Customer ID, note that: +// This variable is initiailzed through EEPROM or registry, +// however, its definition may be different with that in EEPROM for +// EEPROM size consideration. So, we have to perform proper translation between them. +// Besides, CustomerID of registry has precedence of that of EEPROM. +// defined below. 060703, by rcnjko. +// +typedef enum _RT_CUSTOMER_ID +{ + RT_CID_DEFAULT = 0, + RT_CID_8187_ALPHA0 = 1, + RT_CID_8187_SERCOMM_PS = 2, + RT_CID_8187_HW_LED = 3, + RT_CID_8187_NETGEAR = 4, + RT_CID_WHQL = 5, + RT_CID_819x_CAMEO = 6, + RT_CID_819x_RUNTOP = 7, + RT_CID_819x_Senao = 8, + RT_CID_TOSHIBA = 9, // Merge by Jacken, 2008/01/31. + RT_CID_819x_Netcore = 10, + RT_CID_Nettronix = 11, + RT_CID_DLINK = 12, + RT_CID_PRONET = 13, + RT_CID_COREGA = 14, + RT_CID_CHINA_MOBILE = 15, + RT_CID_819x_ALPHA = 16, + RT_CID_819x_Sitecom = 17, + RT_CID_CCX = 18, // It's set under CCX logo test and isn't demanded for CCX functions, but for test behavior like retry limit and tx report. By Bruce, 2009-02-17. + RT_CID_819x_Lenovo = 19, + RT_CID_819x_QMI = 20, + RT_CID_819x_Edimax_Belkin = 21, + RT_CID_819x_Sercomm_Belkin = 22, + RT_CID_819x_CAMEO1 = 23, + RT_CID_819x_MSI = 24, + RT_CID_819x_Acer = 25, + RT_CID_819x_AzWave_ASUS = 26, + RT_CID_819x_AzWave = 27, // For AzWave in PCIe, The ID is AzWave use and not only Asus + RT_CID_819x_HP = 28, + RT_CID_819x_WNC_COREGA = 29, + RT_CID_819x_Arcadyan_Belkin = 30, + RT_CID_819x_SAMSUNG = 31, + RT_CID_819x_CLEVO = 32, + RT_CID_819x_DELL = 33, + RT_CID_819x_PRONETS = 34, + RT_CID_819x_Edimax_ASUS = 35, + RT_CID_819x_CAMEO_NETGEAR = 36, +}RT_CUSTOMER_ID, *PRT_CUSTOMER_ID; + +struct eeprom_priv +{ + u8 bautoload_fail_flag; + //u8 bempty; + //u8 sys_config; + u8 mac_addr[6]; //PermanentAddress + //u8 config0; + u16 channel_plan; + //u8 country_string[3]; + //u8 tx_power_b[15]; + //u8 tx_power_g[15]; + //u8 tx_power_a[201]; + + u8 EepromOrEfuse; + + u8 efuse_eeprom_data[EEPROM_MAX_SIZE]; + +#ifdef CONFIG_SDIO_HCI + u8 sdio_setting; + u32 ocr; + u8 cis0[eeprom_cis0_sz]; + u8 cis1[eeprom_cis1_sz]; +#endif +}; + + +extern void eeprom_write16(_adapter *padapter, u16 reg, u16 data); +extern u16 eeprom_read16(_adapter *padapter, u16 reg); +extern void read_eeprom_content(_adapter *padapter); +extern void eeprom_read_sz(_adapter * padapter, u16 reg,u8* data, u32 sz); + +extern void read_eeprom_content_by_attrib(_adapter * padapter ); + +#ifdef PLATFORM_LINUX +#ifdef CONFIG_ADAPTOR_INFO_CACHING_FILE +extern int isAdaptorInfoFileValid(void); +extern int storeAdaptorInfoFile(char *path, struct eeprom_priv * eeprom_priv); +extern int retriveAdaptorInfoFile(char *path, struct eeprom_priv * eeprom_priv); +#endif //CONFIG_ADAPTOR_INFO_CACHING_FILE +#endif //PLATFORM_LINUX + +#endif //__RTL871X_EEPROM_H__ --- linux-raspi2-4.2.0.orig/drivers/net/wireless/rtl8192cu/include/rtw_efuse.h +++ linux-raspi2-4.2.0/drivers/net/wireless/rtl8192cu/include/rtw_efuse.h @@ -0,0 +1,123 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved. + * + * 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 + * published by the Free Software Foundation. + * + * 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 Street, Fifth Floor, Boston, MA 02110, USA + * + * + ******************************************************************************/ +#ifndef __RTW_EFUSE_H__ +#define __RTW_EFUSE_H__ + +#include +#include + +#define EFUSE_ERROE_HANDLE 1 + +#define PG_STATE_HEADER 0x01 +#define PG_STATE_WORD_0 0x02 +#define PG_STATE_WORD_1 0x04 +#define PG_STATE_WORD_2 0x08 +#define PG_STATE_WORD_3 0x10 +#define PG_STATE_DATA 0x20 + +#define PG_SWBYTE_H 0x01 +#define PG_SWBYTE_L 0x02 + +#define PGPKT_DATA_SIZE 8 + +#define EFUSE_WIFI 0 +#define EFUSE_BT 1 + +enum _EFUSE_DEF_TYPE { + TYPE_EFUSE_MAX_SECTION = 0, + TYPE_EFUSE_REAL_CONTENT_LEN = 1, + TYPE_AVAILABLE_EFUSE_BYTES_BANK = 2, + TYPE_AVAILABLE_EFUSE_BYTES_TOTAL = 3, + TYPE_EFUSE_MAP_LEN = 4, + TYPE_EFUSE_PROTECT_BYTES_BANK = 5, +}; + +#define EFUSE_MAX_MAP_LEN 256 +#define EFUSE_MAX_HW_SIZE 512 +#define EFUSE_MAX_SECTION_BASE 16 + +#define EXT_HEADER(header) ((header & 0x1F ) == 0x0F) +#define ALL_WORDS_DISABLED(wde) ((wde & 0x0F) == 0x0F) +#define GET_HDR_OFFSET_2_0(header) ( (header & 0xE0) >> 5) + +#define EFUSE_REPEAT_THRESHOLD_ 3 + +//============================================= +// The following is for BT Efuse definition +//============================================= +#define EFUSE_BT_MAX_MAP_LEN 1024 +#define EFUSE_MAX_BANK 4 +#define EFUSE_MAX_BT_BANK (EFUSE_MAX_BANK-1) +//============================================= +/*--------------------------Define Parameters-------------------------------*/ +#define EFUSE_MAX_WORD_UNIT 4 + +/*------------------------------Define structure----------------------------*/ +typedef struct PG_PKT_STRUCT_A{ + u8 offset; + u8 word_en; + u8 data[8]; + u8 word_cnts; +}PGPKT_STRUCT,*PPGPKT_STRUCT; +/*------------------------------Define structure----------------------------*/ + + +/*------------------------Export global variable----------------------------*/ +extern u8 fakeEfuseBank; +extern u32 fakeEfuseUsedBytes; +extern u8 fakeEfuseContent[]; +extern u8 fakeEfuseInitMap[]; +extern u8 fakeEfuseModifiedMap[]; + +extern u32 BTEfuseUsedBytes; +extern u8 BTEfuseContent[EFUSE_MAX_BT_BANK][EFUSE_MAX_HW_SIZE]; +extern u8 BTEfuseInitMap[]; +extern u8 BTEfuseModifiedMap[]; + +extern u32 fakeBTEfuseUsedBytes; +extern u8 fakeBTEfuseContent[EFUSE_MAX_BT_BANK][EFUSE_MAX_HW_SIZE]; +extern u8 fakeBTEfuseInitMap[]; +extern u8 fakeBTEfuseModifiedMap[]; +/*------------------------Export global variable----------------------------*/ + +u8 efuse_GetCurrentSize(PADAPTER padapter, u16 *size); +u16 efuse_GetMaxSize(PADAPTER padapter); +u8 rtw_efuse_access(PADAPTER padapter, u8 bRead, u16 start_addr, u16 cnts, u8 *data); +u8 rtw_efuse_map_read(PADAPTER padapter, u16 addr, u16 cnts, u8 *data); +u8 rtw_efuse_map_write(PADAPTER padapter, u16 addr, u16 cnts, u8 *data); + +u16 Efuse_GetCurrentSize(PADAPTER pAdapter, u8 efuseType, BOOLEAN bPseudoTest); +u8 Efuse_CalculateWordCnts(u8 word_en); +void ReadEFuseByte(PADAPTER Adapter, u16 _offset, u8 *pbuf, BOOLEAN bPseudoTest) ; +void EFUSE_GetEfuseDefinition(PADAPTER pAdapter, u8 efuseType, u8 type, void *pOut, BOOLEAN bPseudoTest); +u8 efuse_OneByteRead(PADAPTER pAdapter, u16 addr, u8 *data, BOOLEAN bPseudoTest); +u8 efuse_OneByteWrite(PADAPTER pAdapter, u16 addr, u8 data, BOOLEAN bPseudoTest); + +void Efuse_PowerSwitch(PADAPTER pAdapter,u8 bWrite,u8 PwrState); +int Efuse_PgPacketRead(PADAPTER pAdapter, u8 offset, u8 *data, BOOLEAN bPseudoTest); +int Efuse_PgPacketWrite(PADAPTER pAdapter, u8 offset, u8 word_en, u8 *data, BOOLEAN bPseudoTest); +void efuse_WordEnableDataRead(u8 word_en, u8 *sourdata, u8 *targetdata); +u8 Efuse_WordEnableDataWrite(PADAPTER pAdapter, u16 efuse_addr, u8 word_en, u8 *data, BOOLEAN bPseudoTest); + +u8 EFUSE_Read1Byte(PADAPTER pAdapter, u16 Address); +void EFUSE_ShadowMapUpdate(PADAPTER pAdapter, u8 efuseType, BOOLEAN bPseudoTest); +void EFUSE_ShadowRead(PADAPTER pAdapter, u8 Type, u16 Offset, u32 *Value); + +#endif --- linux-raspi2-4.2.0.orig/drivers/net/wireless/rtl8192cu/include/rtw_event.h +++ linux-raspi2-4.2.0/drivers/net/wireless/rtl8192cu/include/rtw_event.h @@ -0,0 +1,153 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved. + * + * 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 + * published by the Free Software Foundation. + * + * 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 Street, Fifth Floor, Boston, MA 02110, USA + * + * + ******************************************************************************/ +#ifndef _RTW_EVENT_H_ +#define _RTW_EVENT_H_ +#include +#include + +#ifndef CONFIG_RTL8711FW +#ifdef PLATFORM_LINUX +#include +#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,26)) +#include +#else +#include +#endif +#include +#endif +#else +#include +#endif//CONFIG_RTL8711FW + + + +#ifdef CONFIG_H2CLBK +#include +#endif + +/* +Used to report a bss has been scanned + +*/ +struct survey_event { + WLAN_BSSID_EX bss; +}; + +/* +Used to report that the requested site survey has been done. + +bss_cnt indicates the number of bss that has been reported. + + +*/ +struct surveydone_event { + unsigned int bss_cnt; + +}; + +/* +Used to report the link result of joinning the given bss + + +join_res: +-1: authentication fail +-2: association fail +> 0: TID + +*/ +struct joinbss_event { + struct wlan_network network; +}; + +/* +Used to report a given STA has joinned the created BSS. +It is used in AP/Ad-HoC(M) mode. + + +*/ +struct stassoc_event { + unsigned char macaddr[6]; + unsigned char rsvd[2]; + int cam_id; + +}; + +struct stadel_event { + unsigned char macaddr[6]; + unsigned char rsvd[2]; //for reason + int mac_id; +}; + +struct addba_event +{ + unsigned int tid; +}; + + +#ifdef CONFIG_H2CLBK +struct c2hlbk_event{ + unsigned char mac[6]; + unsigned short s0; + unsigned short s1; + unsigned int w0; + unsigned char b0; + unsigned short s2; + unsigned char b1; + unsigned int w1; +}; +#endif//CONFIG_H2CLBK + +#define GEN_EVT_CODE(event) event ## _EVT_ + + + +struct fwevent { + u32 parmsize; + void (*event_callback)(_adapter *dev, u8 *pbuf); +}; + + +#define C2HEVENT_SZ 32 + +struct event_node{ + unsigned char *node; + unsigned char evt_code; + unsigned short evt_sz; + volatile int *caller_ff_tail; + int caller_ff_sz; +}; + +struct c2hevent_queue { + volatile int head; + volatile int tail; + struct event_node nodes[C2HEVENT_SZ]; + unsigned char seq; +}; + +#define NETWORK_QUEUE_SZ 4 + +struct network_queue { + volatile int head; + volatile int tail; + WLAN_BSSID_EX networks[NETWORK_QUEUE_SZ]; +}; + + +#endif // _WLANEVENT_H_ --- linux-raspi2-4.2.0.orig/drivers/net/wireless/rtl8192cu/include/rtw_ht.h +++ linux-raspi2-4.2.0/drivers/net/wireless/rtl8192cu/include/rtw_ht.h @@ -0,0 +1,49 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved. + * + * 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 + * published by the Free Software Foundation. + * + * 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 Street, Fifth Floor, Boston, MA 02110, USA + * + * + ******************************************************************************/ +#ifndef _RTW_HT_H_ +#define _RTW_HT_H_ + +#include +#include +#include "wifi.h" + +struct ht_priv +{ + u32 ht_option; + u32 ampdu_enable;//for enable Tx A-MPDU + //u8 baddbareq_issued[16]; + u32 tx_amsdu_enable;//for enable Tx A-MSDU + u32 tx_amdsu_maxlen; // 1: 8k, 0:4k ; default:8k, for tx + u32 rx_ampdu_maxlen; //for rx reordering ctrl win_sz, updated when join_callback. + + u8 bwmode;// + u8 ch_offset;//PRIME_CHNL_OFFSET + u8 sgi;//short GI + + //for processing Tx A-MPDU + u8 agg_enable_bitmap; + //u8 ADDBA_retry_count; + u8 candidate_tid_bitmap; + + struct rtw_ieee80211_ht_cap ht_cap; + +}; + +#endif //_RTL871X_HT_H_ --- linux-raspi2-4.2.0.orig/drivers/net/wireless/rtl8192cu/include/rtw_io.h +++ linux-raspi2-4.2.0/drivers/net/wireless/rtl8192cu/include/rtw_io.h @@ -0,0 +1,504 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved. + * + * 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 + * published by the Free Software Foundation. + * + * 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 Street, Fifth Floor, Boston, MA 02110, USA + * + * + ******************************************************************************/ + +#ifndef _RTW_IO_H_ +#define _RTW_IO_H_ + +#include +#include +#include + +#ifdef PLATFORM_LINUX +#include +#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,26)) +#include +#else +#include +#endif +#include +//#include +#include +#include + +#ifdef CONFIG_USB_HCI +#include +#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,21)) +#include +#else +#include +#endif +#endif //CONFIG_USB_HCI + +#endif //PLATFORM_LINUX + + +#define NUM_IOREQ 8 + +#ifdef PLATFORM_WINDOWS +#define MAX_PROT_SZ 64 +#endif +#ifdef PLATFORM_LINUX +#define MAX_PROT_SZ (64-16) +#endif + +#define _IOREADY 0 +#define _IO_WAIT_COMPLETE 1 +#define _IO_WAIT_RSP 2 + +// IO COMMAND TYPE +#define _IOSZ_MASK_ (0x7F) +#define _IO_WRITE_ BIT(7) +#define _IO_FIXED_ BIT(8) +#define _IO_BURST_ BIT(9) +#define _IO_BYTE_ BIT(10) +#define _IO_HW_ BIT(11) +#define _IO_WORD_ BIT(12) +#define _IO_SYNC_ BIT(13) +#define _IO_CMDMASK_ (0x1F80) + + +/* + For prompt mode accessing, caller shall free io_req + Otherwise, io_handler will free io_req +*/ + + + +// IO STATUS TYPE +#define _IO_ERR_ BIT(2) +#define _IO_SUCCESS_ BIT(1) +#define _IO_DONE_ BIT(0) + + +#define IO_RD32 (_IO_SYNC_ | _IO_WORD_) +#define IO_RD16 (_IO_SYNC_ | _IO_HW_) +#define IO_RD8 (_IO_SYNC_ | _IO_BYTE_) + +#define IO_RD32_ASYNC (_IO_WORD_) +#define IO_RD16_ASYNC (_IO_HW_) +#define IO_RD8_ASYNC (_IO_BYTE_) + +#define IO_WR32 (_IO_WRITE_ | _IO_SYNC_ | _IO_WORD_) +#define IO_WR16 (_IO_WRITE_ | _IO_SYNC_ | _IO_HW_) +#define IO_WR8 (_IO_WRITE_ | _IO_SYNC_ | _IO_BYTE_) + +#define IO_WR32_ASYNC (_IO_WRITE_ | _IO_WORD_) +#define IO_WR16_ASYNC (_IO_WRITE_ | _IO_HW_) +#define IO_WR8_ASYNC (_IO_WRITE_ | _IO_BYTE_) + +/* + + Only Sync. burst accessing is provided. + +*/ + +#define IO_WR_BURST(x) (_IO_WRITE_ | _IO_SYNC_ | _IO_BURST_ | ( (x) & _IOSZ_MASK_)) +#define IO_RD_BURST(x) (_IO_SYNC_ | _IO_BURST_ | ( (x) & _IOSZ_MASK_)) + + + +//below is for the intf_option bit defition... + +#define _INTF_ASYNC_ BIT(0) //support async io + +struct intf_priv; +struct intf_hdl; +struct io_queue; + +struct _io_ops +{ + u8 (*_read8)(struct intf_hdl *pintfhdl, u32 addr); + u16 (*_read16)(struct intf_hdl *pintfhdl, u32 addr); + u32 (*_read32)(struct intf_hdl *pintfhdl, u32 addr); + + int (*_write8)(struct intf_hdl *pintfhdl, u32 addr, u8 val); + int (*_write16)(struct intf_hdl *pintfhdl, u32 addr, u16 val); + int (*_write32)(struct intf_hdl *pintfhdl, u32 addr, u32 val); + int (*_writeN)(struct intf_hdl *pintfhdl, u32 addr, u32 length, u8 *pdata); + + int (*_write8_async)(struct intf_hdl *pintfhdl, u32 addr, u8 val); + int (*_write16_async)(struct intf_hdl *pintfhdl, u32 addr, u16 val); + int (*_write32_async)(struct intf_hdl *pintfhdl, u32 addr, u32 val); + + void (*_read_mem)(struct intf_hdl *pintfhdl, u32 addr, u32 cnt, u8 *pmem); + void (*_write_mem)(struct intf_hdl *pintfhdl, u32 addr, u32 cnt, u8 *pmem); + + void (*_sync_irp_protocol_rw)(struct io_queue *pio_q); + + u32 (*_read_interrupt)(struct intf_hdl *pintfhdl, u32 addr); + + u32 (*_read_port)(struct intf_hdl *pintfhdl, u32 addr, u32 cnt, u8 *pmem); + u32 (*_write_port)(struct intf_hdl *pintfhdl, u32 addr, u32 cnt, u8 *pmem); + + u32 (*_write_scsi)(struct intf_hdl *pintfhdl,u32 cnt, u8 *pmem); + + void (*_read_port_cancel)(struct intf_hdl *pintfhdl); + void (*_write_port_cancel)(struct intf_hdl *pintfhdl); + +}; + +struct io_req { + _list list; + u32 addr; + volatile u32 val; + u32 command; + u32 status; + u8 *pbuf; + _sema sema; + +#ifdef PLATFORM_OS_CE +#ifdef CONFIG_USB_HCI + // URB handler for rtw_write_mem + USB_TRANSFER usb_transfer_write_mem; +#endif +#endif + + void (*_async_io_callback)(_adapter *padater, struct io_req *pio_req, u8 *cnxt); + u8 *cnxt; + +#ifdef PLATFORM_OS_XP + PMDL pmdl; + PIRP pirp; + +#ifdef CONFIG_SDIO_HCI + PSDBUS_REQUEST_PACKET sdrp; +#endif + +#endif + + +}; + +struct intf_hdl { + +/* + u32 intf_option; + u32 bus_status; + u32 do_flush; + u8 *adapter; + u8 *intf_dev; + struct intf_priv *pintfpriv; + u8 cnt; + void (*intf_hdl_init)(u8 *priv); + void (*intf_hdl_unload)(u8 *priv); + void (*intf_hdl_open)(u8 *priv); + void (*intf_hdl_close)(u8 *priv); + struct _io_ops io_ops; + //u8 intf_status;//moved to struct intf_priv + u16 len; + u16 done_len; +*/ + _adapter *padapter; + struct dvobj_priv *pintf_dev;// pointer to &(padapter->dvobjpriv); + + struct _io_ops io_ops; + +}; + +struct reg_protocol_rd { + +#ifdef CONFIG_LITTLE_ENDIAN + + //DW1 + u32 NumOfTrans:4; + u32 Reserved1:4; + u32 Reserved2:24; + //DW2 + u32 ByteCount:7; + u32 WriteEnable:1; //0:read, 1:write + u32 FixOrContinuous:1; //0:continuous, 1: Fix + u32 BurstMode:1; + u32 Byte1Access:1; + u32 Byte2Access:1; + u32 Byte4Access:1; + u32 Reserved3:3; + u32 Reserved4:16; + //DW3 + u32 BusAddress; + //DW4 + //u32 Value; +#else + + +//DW1 + u32 Reserved1 :4; + u32 NumOfTrans :4; + + u32 Reserved2 :24; + + //DW2 + u32 WriteEnable : 1; + u32 ByteCount :7; + + + u32 Reserved3 : 3; + u32 Byte4Access : 1; + + u32 Byte2Access : 1; + u32 Byte1Access : 1; + u32 BurstMode :1 ; + u32 FixOrContinuous : 1; + + u32 Reserved4 : 16; + + //DW3 + u32 BusAddress; + + //DW4 + //u32 Value; + +#endif + +}; + + +struct reg_protocol_wt { + + +#ifdef CONFIG_LITTLE_ENDIAN + + //DW1 + u32 NumOfTrans:4; + u32 Reserved1:4; + u32 Reserved2:24; + //DW2 + u32 ByteCount:7; + u32 WriteEnable:1; //0:read, 1:write + u32 FixOrContinuous:1; //0:continuous, 1: Fix + u32 BurstMode:1; + u32 Byte1Access:1; + u32 Byte2Access:1; + u32 Byte4Access:1; + u32 Reserved3:3; + u32 Reserved4:16; + //DW3 + u32 BusAddress; + //DW4 + u32 Value; + +#else + //DW1 + u32 Reserved1 :4; + u32 NumOfTrans :4; + + u32 Reserved2 :24; + + //DW2 + u32 WriteEnable : 1; + u32 ByteCount :7; + + u32 Reserved3 : 3; + u32 Byte4Access : 1; + + u32 Byte2Access : 1; + u32 Byte1Access : 1; + u32 BurstMode :1 ; + u32 FixOrContinuous : 1; + + u32 Reserved4 : 16; + + //DW3 + u32 BusAddress; + + //DW4 + u32 Value; + +#endif + +}; + + + +/* +Below is the data structure used by _io_handler + +*/ + +struct io_queue { + _lock lock; + _list free_ioreqs; + _list pending; //The io_req list that will be served in the single protocol read/write. + _list processing; + u8 *free_ioreqs_buf; // 4-byte aligned + u8 *pallocated_free_ioreqs_buf; + struct intf_hdl intf; +}; + +struct io_priv{ + + _adapter *padapter; + + struct intf_hdl intf; + +}; + +extern uint ioreq_flush(_adapter *adapter, struct io_queue *ioqueue); +extern void sync_ioreq_enqueue(struct io_req *preq,struct io_queue *ioqueue); +extern uint sync_ioreq_flush(_adapter *adapter, struct io_queue *ioqueue); + + +extern uint free_ioreq(struct io_req *preq, struct io_queue *pio_queue); +extern struct io_req *alloc_ioreq(struct io_queue *pio_q); + +extern uint register_intf_hdl(u8 *dev, struct intf_hdl *pintfhdl); +extern void unregister_intf_hdl(struct intf_hdl *pintfhdl); + +extern void _rtw_attrib_read(_adapter *adapter, u32 addr, u32 cnt, u8 *pmem); +extern void _rtw_attrib_write(_adapter *adapter, u32 addr, u32 cnt, u8 *pmem); + +extern u8 _rtw_read8(_adapter *adapter, u32 addr); +extern u16 _rtw_read16(_adapter *adapter, u32 addr); +extern u32 _rtw_read32(_adapter *adapter, u32 addr); +extern void _rtw_read_mem(_adapter *adapter, u32 addr, u32 cnt, u8 *pmem); +extern void _rtw_read_port(_adapter *adapter, u32 addr, u32 cnt, u8 *pmem); +extern void _rtw_read_port_cancel(_adapter *adapter); + + +extern int _rtw_write8(_adapter *adapter, u32 addr, u8 val); +extern int _rtw_write16(_adapter *adapter, u32 addr, u16 val); +extern int _rtw_write32(_adapter *adapter, u32 addr, u32 val); +extern int _rtw_writeN(_adapter *adapter, u32 addr, u32 length, u8 *pdata); + +extern int _rtw_write8_async(_adapter *adapter, u32 addr, u8 val); +extern int _rtw_write16_async(_adapter *adapter, u32 addr, u16 val); +extern int _rtw_write32_async(_adapter *adapter, u32 addr, u32 val); + +extern void _rtw_write_mem(_adapter *adapter, u32 addr, u32 cnt, u8 *pmem); +extern u32 _rtw_write_port(_adapter *adapter, u32 addr, u32 cnt, u8 *pmem); +u32 _rtw_write_port_and_wait(_adapter *adapter, u32 addr, u32 cnt, u8 *pmem, int timeout_ms); +extern void _rtw_write_port_cancel(_adapter *adapter); + +#ifdef DBG_IO +bool match_read_sniff_ranges(u16 addr, u16 len); +bool match_write_sniff_ranges(u16 addr, u16 len); + +extern u8 dbg_rtw_read8(_adapter *adapter, u32 addr, const char *caller, const int line); +extern u16 dbg_rtw_read16(_adapter *adapter, u32 addr, const char *caller, const int line); +extern u32 dbg_rtw_read32(_adapter *adapter, u32 addr, const char *caller, const int line); + +extern int dbg_rtw_write8(_adapter *adapter, u32 addr, u8 val, const char *caller, const int line); +extern int dbg_rtw_write16(_adapter *adapter, u32 addr, u16 val, const char *caller, const int line); +extern int dbg_rtw_write32(_adapter *adapter, u32 addr, u32 val, const char *caller, const int line); +extern int dbg_rtw_writeN(_adapter *adapter, u32 addr ,u32 length , u8 *data, const char *caller, const int line); + +#define rtw_read8(adapter, addr) dbg_rtw_read8((adapter), (addr), __FUNCTION__, __LINE__) +#define rtw_read16(adapter, addr) dbg_rtw_read16((adapter), (addr), __FUNCTION__, __LINE__) +#define rtw_read32(adapter, addr) dbg_rtw_read32((adapter), (addr), __FUNCTION__, __LINE__) +#define rtw_read_mem(adapter, addr, cnt, mem) _rtw_read_mem((adapter), (addr), (cnt), (mem)) +#define rtw_read_port(adapter, addr, cnt, mem) _rtw_read_port((adapter), (addr), (cnt), (mem)) +#define rtw_read_port_cancel(adapter) _rtw_read_port_cancel((adapter)) + +#define rtw_write8(adapter, addr, val) dbg_rtw_write8((adapter), (addr), (val), __FUNCTION__, __LINE__) +#define rtw_write16(adapter, addr, val) dbg_rtw_write16((adapter), (addr), (val), __FUNCTION__, __LINE__) +#define rtw_write32(adapter, addr, val) dbg_rtw_write32((adapter), (addr), (val), __FUNCTION__, __LINE__) +#define rtw_writeN(adapter, addr, length, data) dbg_rtw_writeN((adapter), (addr), (length), (data), __FUNCTION__, __LINE__) + +#define rtw_write8_async(adapter, addr, val) _rtw_write8_async((adapter), (addr), (val)) +#define rtw_write16_async(adapter, addr, val) _rtw_write16_async((adapter), (addr), (val)) +#define rtw_write32_async(adapter, addr, val) _rtw_write32_async((adapter), (addr), (val)) + +#define rtw_write_mem(adapter, addr, cnt, mem) _rtw_write_mem((adapter), addr, cnt, mem) +#define rtw_write_port(adapter, addr, cnt, mem) _rtw_write_port(adapter, addr, cnt, mem) +#define rtw_write_port_and_wait(adapter, addr, cnt, mem, timeout_ms) _rtw_write_port_and_wait((adapter), (addr), (cnt), (mem), (timeout_ms)) +#define rtw_write_port_cancel(adapter) _rtw_write_port_cancel(adapter) +#else //DBG_IO +#define rtw_read8(adapter, addr) _rtw_read8((adapter), (addr)) +#define rtw_read16(adapter, addr) _rtw_read16((adapter), (addr)) +#define rtw_read32(adapter, addr) _rtw_read32((adapter), (addr)) +#define rtw_read_mem(adapter, addr, cnt, mem) _rtw_read_mem((adapter), (addr), (cnt), (mem)) +#define rtw_read_port(adapter, addr, cnt, mem) _rtw_read_port((adapter), (addr), (cnt), (mem)) +#define rtw_read_port_cancel(adapter) _rtw_read_port_cancel((adapter)) + +#define rtw_write8(adapter, addr, val) _rtw_write8((adapter), (addr), (val)) +#define rtw_write16(adapter, addr, val) _rtw_write16((adapter), (addr), (val)) +#define rtw_write32(adapter, addr, val) _rtw_write32((adapter), (addr), (val)) +#define rtw_writeN(adapter, addr, length, data) _rtw_writeN((adapter), (addr), (length), (data)) + +#define rtw_write8_async(adapter, addr, val) _rtw_write8_async((adapter), (addr), (val)) +#define rtw_write16_async(adapter, addr, val) _rtw_write16_async((adapter), (addr), (val)) +#define rtw_write32_async(adapter, addr, val) _rtw_write32_async((adapter), (addr), (val)) + +#define rtw_write_mem(adapter, addr, cnt, mem) _rtw_write_mem((adapter), (addr), (cnt), (mem)) +#define rtw_write_port(adapter, addr, cnt, mem) _rtw_write_port((adapter), (addr), (cnt), (mem)) +#define rtw_write_port_and_wait(adapter, addr, cnt, mem, timeout_ms) _rtw_write_port_and_wait((adapter), (addr), (cnt), (mem), (timeout_ms)) +#define rtw_write_port_cancel(adapter) _rtw_write_port_cancel((adapter)) +#endif //DBG_IO + +extern void rtw_write_scsi(_adapter *adapter, u32 cnt, u8 *pmem); + +//ioreq +extern void ioreq_read8(_adapter *adapter, u32 addr, u8 *pval); +extern void ioreq_read16(_adapter *adapter, u32 addr, u16 *pval); +extern void ioreq_read32(_adapter *adapter, u32 addr, u32 *pval); +extern void ioreq_write8(_adapter *adapter, u32 addr, u8 val); +extern void ioreq_write16(_adapter *adapter, u32 addr, u16 val); +extern void ioreq_write32(_adapter *adapter, u32 addr, u32 val); + + +extern uint async_read8(_adapter *adapter, u32 addr, u8 *pbuff, + void (*_async_io_callback)(_adapter *padater, struct io_req *pio_req, u8 *cnxt), u8 *cnxt); +extern uint async_read16(_adapter *adapter, u32 addr, u8 *pbuff, + void (*_async_io_callback)(_adapter *padater, struct io_req *pio_req, u8 *cnxt), u8 *cnxt); +extern uint async_read32(_adapter *adapter, u32 addr, u8 *pbuff, + void (*_async_io_callback)(_adapter *padater, struct io_req *pio_req, u8 *cnxt), u8 *cnxt); + +extern void async_read_mem(_adapter *adapter, u32 addr, u32 cnt, u8 *pmem); +extern void async_read_port(_adapter *adapter, u32 addr, u32 cnt, u8 *pmem); + +extern void async_write8(_adapter *adapter, u32 addr, u8 val, + void (*_async_io_callback)(_adapter *padater, struct io_req *pio_req, u8 *cnxt), u8 *cnxt); +extern void async_write16(_adapter *adapter, u32 addr, u16 val, + void (*_async_io_callback)(_adapter *padater, struct io_req *pio_req, u8 *cnxt), u8 *cnxt); +extern void async_write32(_adapter *adapter, u32 addr, u32 val, + void (*_async_io_callback)(_adapter *padater, struct io_req *pio_req, u8 *cnxt), u8 *cnxt); + +extern void async_write_mem(_adapter *adapter, u32 addr, u32 cnt, u8 *pmem); +extern void async_write_port(_adapter *adapter, u32 addr, u32 cnt, u8 *pmem); + + +int rtw_init_io_priv(_adapter *padapter, void (*set_intf_ops)(struct _io_ops *pops)); + + +extern uint alloc_io_queue(_adapter *adapter); +extern void free_io_queue(_adapter *adapter); +extern void async_bus_io(struct io_queue *pio_q); +extern void bus_sync_io(struct io_queue *pio_q); +extern u32 _ioreq2rwmem(struct io_queue *pio_q); +extern void dev_power_down(_adapter * Adapter, u8 bpwrup); + +/* +#define RTL_R8(reg) rtw_read8(padapter, reg) +#define RTL_R16(reg) rtw_read16(padapter, reg) +#define RTL_R32(reg) rtw_read32(padapter, reg) +#define RTL_W8(reg, val8) rtw_write8(padapter, reg, val8) +#define RTL_W16(reg, val16) rtw_write16(padapter, reg, val16) +#define RTL_W32(reg, val32) rtw_write32(padapter, reg, val32) +*/ + +/* +#define RTL_W8_ASYNC(reg, val8) rtw_write32_async(padapter, reg, val8) +#define RTL_W16_ASYNC(reg, val16) rtw_write32_async(padapter, reg, val16) +#define RTL_W32_ASYNC(reg, val32) rtw_write32_async(padapter, reg, val32) + +#define RTL_WRITE_BB(reg, val32) phy_SetUsbBBReg(padapter, reg, val32) +#define RTL_READ_BB(reg) phy_QueryUsbBBReg(padapter, reg) +*/ + +#endif //_RTL8711_IO_H_ --- linux-raspi2-4.2.0.orig/drivers/net/wireless/rtl8192cu/include/rtw_ioctl.h +++ linux-raspi2-4.2.0/drivers/net/wireless/rtl8192cu/include/rtw_ioctl.h @@ -0,0 +1,268 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved. + * + * 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 + * published by the Free Software Foundation. + * + * 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 Street, Fifth Floor, Boston, MA 02110, USA + * + * + ******************************************************************************/ +#ifndef _RTW_IOCTL_H_ +#define _RTW_IOCTL_H_ + +#include +#include +#include + +#ifndef OID_802_11_CAPABILITY + #define OID_802_11_CAPABILITY 0x0d010122 +#endif + +#ifndef OID_802_11_PMKID + #define OID_802_11_PMKID 0x0d010123 +#endif + + +// For DDK-defined OIDs +#define OID_NDIS_SEG1 0x00010100 +#define OID_NDIS_SEG2 0x00010200 +#define OID_NDIS_SEG3 0x00020100 +#define OID_NDIS_SEG4 0x01010100 +#define OID_NDIS_SEG5 0x01020100 +#define OID_NDIS_SEG6 0x01020200 +#define OID_NDIS_SEG7 0xFD010100 +#define OID_NDIS_SEG8 0x0D010100 +#define OID_NDIS_SEG9 0x0D010200 +#define OID_NDIS_SEG10 0x0D020200 + +#define SZ_OID_NDIS_SEG1 23 +#define SZ_OID_NDIS_SEG2 3 +#define SZ_OID_NDIS_SEG3 6 +#define SZ_OID_NDIS_SEG4 6 +#define SZ_OID_NDIS_SEG5 4 +#define SZ_OID_NDIS_SEG6 8 +#define SZ_OID_NDIS_SEG7 7 +#define SZ_OID_NDIS_SEG8 36 +#define SZ_OID_NDIS_SEG9 24 +#define SZ_OID_NDIS_SEG10 19 + +// For Realtek-defined OIDs +#define OID_MP_SEG1 0xFF871100 +#define OID_MP_SEG2 0xFF818000 + +#define OID_MP_SEG3 0xFF818700 +#define OID_MP_SEG4 0xFF011100 + +#define DEBUG_OID(dbg, str) \ + if((!dbg)) \ + { \ + RT_TRACE(_module_rtl871x_ioctl_c_,_drv_info_,("%s(%d): %s", __FUNCTION__, __LINE__, str)); \ + } + + +enum oid_type +{ + QUERY_OID, + SET_OID +}; + +struct oid_funs_node { + unsigned int oid_start; //the starting number for OID + unsigned int oid_end; //the ending number for OID + struct oid_obj_priv *node_array; + unsigned int array_sz; //the size of node_array + int query_counter; //count the number of query hits for this segment + int set_counter; //count the number of set hits for this segment +}; + +struct oid_par_priv +{ + void *adapter_context; + NDIS_OID oid; + void *information_buf; + u32 information_buf_len; + u32 *bytes_rw; + u32 *bytes_needed; + enum oid_type type_of_oid; + u32 dbg; +}; + +struct oid_obj_priv { + unsigned char dbg; // 0: without OID debug message 1: with OID debug message + NDIS_STATUS (*oidfuns)(struct oid_par_priv *poid_par_priv); +}; + +#if (defined(CONFIG_MP_INCLUDED) && defined(_RTW_MP_IOCTL_C_)) || \ + (defined(PLATFORM_WINDOWS) && defined(_RTW_IOCTL_RTL_C_)) +static NDIS_STATUS oid_null_function(struct oid_par_priv* poid_par_priv) +{ + _func_enter_; + _func_exit_; + return NDIS_STATUS_SUCCESS; +} +#endif + +#ifdef PLATFORM_WINDOWS + +int TranslateNdisPsToRtPs(IN NDIS_802_11_POWER_MODE ndisPsMode); + +//OID Handler for Segment 1 +NDIS_STATUS oid_gen_supported_list_hdl(struct oid_par_priv* poid_par_priv); +NDIS_STATUS oid_gen_hardware_status_hdl(struct oid_par_priv* poid_par_priv); +NDIS_STATUS oid_gen_media_supported_hdl(struct oid_par_priv* poid_par_priv); +NDIS_STATUS oid_gen_media_in_use_hdl(struct oid_par_priv* poid_par_priv); +NDIS_STATUS oid_gen_maximum_lookahead_hdl(struct oid_par_priv* poid_par_priv); +NDIS_STATUS oid_gen_maximum_frame_size_hdl(struct oid_par_priv* poid_par_priv); +NDIS_STATUS oid_gen_link_speed_hdl(struct oid_par_priv* poid_par_priv); +NDIS_STATUS oid_gen_transmit_buffer_space_hdl(struct oid_par_priv* poid_par_priv); +NDIS_STATUS oid_gen_receive_buffer_space_hdl(struct oid_par_priv* poid_par_priv); +NDIS_STATUS oid_gen_transmit_block_size_hdl(struct oid_par_priv* poid_par_priv); +NDIS_STATUS oid_gen_receive_block_size_hdl(struct oid_par_priv* poid_par_priv); +NDIS_STATUS oid_gen_vendor_id_hdl(struct oid_par_priv* poid_par_priv); +NDIS_STATUS oid_gen_vendor_description_hdl(struct oid_par_priv* poid_par_priv); +NDIS_STATUS oid_gen_current_packet_filter_hdl(struct oid_par_priv* poid_par_priv); +NDIS_STATUS oid_gen_current_lookahead_hdl(struct oid_par_priv* poid_par_priv); +NDIS_STATUS oid_gen_driver_version_hdl(struct oid_par_priv* poid_par_priv); +NDIS_STATUS oid_gen_maximum_total_size_hdl(struct oid_par_priv* poid_par_priv); +NDIS_STATUS oid_gen_protocol_options_hdl(struct oid_par_priv* poid_par_priv); +NDIS_STATUS oid_gen_mac_options_hdl(struct oid_par_priv* poid_par_priv); +NDIS_STATUS oid_gen_media_connect_status_hdl(struct oid_par_priv* poid_par_priv); +NDIS_STATUS oid_gen_maximum_send_packets_hdl(struct oid_par_priv* poid_par_priv); +NDIS_STATUS oid_gen_vendor_driver_version_hdl(struct oid_par_priv* poid_par_priv); + + +//OID Handler for Segment 2 +NDIS_STATUS oid_gen_physical_medium_hdl(struct oid_par_priv* poid_par_priv); + +//OID Handler for Segment 3 +NDIS_STATUS oid_gen_xmit_ok_hdl(struct oid_par_priv* poid_par_priv); +NDIS_STATUS oid_gen_rcv_ok_hdl(struct oid_par_priv* poid_par_priv); +NDIS_STATUS oid_gen_xmit_error_hdl(struct oid_par_priv* poid_par_priv); +NDIS_STATUS oid_gen_rcv_error_hdl(struct oid_par_priv* poid_par_priv); +NDIS_STATUS oid_gen_rcv_no_buffer_hdl(struct oid_par_priv* poid_par_priv); + + +//OID Handler for Segment 4 +NDIS_STATUS oid_802_3_permanent_address_hdl(struct oid_par_priv* poid_par_priv); +NDIS_STATUS oid_802_3_current_address_hdl(struct oid_par_priv* poid_par_priv); +NDIS_STATUS oid_802_3_multicast_list_hdl(struct oid_par_priv* poid_par_priv); +NDIS_STATUS oid_802_3_maximum_list_size_hdl(struct oid_par_priv* poid_par_priv); +NDIS_STATUS oid_802_3_mac_options_hdl(struct oid_par_priv* poid_par_priv); + + + +//OID Handler for Segment 5 +NDIS_STATUS oid_802_3_rcv_error_alignment_hdl(struct oid_par_priv* poid_par_priv); +NDIS_STATUS oid_802_3_xmit_one_collision_hdl(struct oid_par_priv* poid_par_priv); +NDIS_STATUS oid_802_3_xmit_more_collisions_hdl(struct oid_par_priv* poid_par_priv); + + +//OID Handler for Segment 6 +NDIS_STATUS oid_802_3_xmit_deferred_hdl(struct oid_par_priv* poid_par_priv); +NDIS_STATUS oid_802_3_xmit_max_collisions_hdl(struct oid_par_priv* poid_par_priv); +NDIS_STATUS oid_802_3_rcv_overrun_hdl(struct oid_par_priv* poid_par_priv); +NDIS_STATUS oid_802_3_xmit_underrun_hdl(struct oid_par_priv* poid_par_priv); +NDIS_STATUS oid_802_3_xmit_heartbeat_failure_hdl(struct oid_par_priv* poid_par_priv); +NDIS_STATUS oid_802_3_xmit_times_crs_lost_hdl(struct oid_par_priv* poid_par_priv); +NDIS_STATUS oid_802_3_xmit_late_collisions_hdl(struct oid_par_priv* poid_par_priv); + + + +//OID Handler for Segment 7 +NDIS_STATUS oid_pnp_capabilities_hdl(struct oid_par_priv* poid_par_priv); +NDIS_STATUS oid_pnp_set_power_hdl(struct oid_par_priv* poid_par_priv); +NDIS_STATUS oid_pnp_query_power_hdl(struct oid_par_priv* poid_par_priv); +NDIS_STATUS oid_pnp_add_wake_up_pattern_hdl(struct oid_par_priv* poid_par_priv); +NDIS_STATUS oid_pnp_remove_wake_up_pattern_hdl(struct oid_par_priv* poid_par_priv); +NDIS_STATUS oid_pnp_wake_up_pattern_list_hdl(struct oid_par_priv* poid_par_priv); +NDIS_STATUS oid_pnp_enable_wake_up_hdl(struct oid_par_priv* poid_par_priv); + + + +//OID Handler for Segment 8 +NDIS_STATUS oid_802_11_bssid_hdl(struct oid_par_priv* poid_par_priv); +NDIS_STATUS oid_802_11_ssid_hdl(struct oid_par_priv* poid_par_priv); +NDIS_STATUS oid_802_11_infrastructure_mode_hdl(struct oid_par_priv* poid_par_priv); +NDIS_STATUS oid_802_11_add_wep_hdl(struct oid_par_priv* poid_par_priv); +NDIS_STATUS oid_802_11_remove_wep_hdl(struct oid_par_priv* poid_par_priv); +NDIS_STATUS oid_802_11_disassociate_hdl(struct oid_par_priv* poid_par_priv); +NDIS_STATUS oid_802_11_authentication_mode_hdl(struct oid_par_priv* poid_par_priv); +NDIS_STATUS oid_802_11_privacy_filter_hdl(struct oid_par_priv* poid_par_priv); +NDIS_STATUS oid_802_11_bssid_list_scan_hdl(struct oid_par_priv* poid_par_priv); +NDIS_STATUS oid_802_11_encryption_status_hdl(struct oid_par_priv* poid_par_priv); +NDIS_STATUS oid_802_11_reload_defaults_hdl(struct oid_par_priv* poid_par_priv); +NDIS_STATUS oid_802_11_add_key_hdl(struct oid_par_priv* poid_par_priv); +NDIS_STATUS oid_802_11_remove_key_hdl(struct oid_par_priv* poid_par_priv); +NDIS_STATUS oid_802_11_association_information_hdl(struct oid_par_priv* poid_par_priv); +NDIS_STATUS oid_802_11_test_hdl(struct oid_par_priv* poid_par_priv); +NDIS_STATUS oid_802_11_media_stream_mode_hdl(struct oid_par_priv* poid_par_priv); +NDIS_STATUS oid_802_11_capability_hdl(struct oid_par_priv* poid_par_priv); +NDIS_STATUS oid_802_11_pmkid_hdl(struct oid_par_priv* poid_par_priv); + + + + + +//OID Handler for Segment 9 +NDIS_STATUS oid_802_11_network_types_supported_hdl(struct oid_par_priv* poid_par_priv); +NDIS_STATUS oid_802_11_network_type_in_use_hdl(struct oid_par_priv* poid_par_priv); +NDIS_STATUS oid_802_11_tx_power_level_hdl(struct oid_par_priv* poid_par_priv); +NDIS_STATUS oid_802_11_rssi_hdl(struct oid_par_priv* poid_par_priv); +NDIS_STATUS oid_802_11_rssi_trigger_hdl(struct oid_par_priv* poid_par_priv); +NDIS_STATUS oid_802_11_fragmentation_threshold_hdl(struct oid_par_priv* poid_par_priv); +NDIS_STATUS oid_802_11_rts_threshold_hdl(struct oid_par_priv* poid_par_priv); +NDIS_STATUS oid_802_11_number_of_antennas_hdl(struct oid_par_priv* poid_par_priv); +NDIS_STATUS oid_802_11_rx_antenna_selected_hdl(struct oid_par_priv* poid_par_priv); +NDIS_STATUS oid_802_11_tx_antenna_selected_hdl(struct oid_par_priv* poid_par_priv); +NDIS_STATUS oid_802_11_supported_rates_hdl(struct oid_par_priv* poid_par_priv); +NDIS_STATUS oid_802_11_desired_rates_hdl(struct oid_par_priv* poid_par_priv); +NDIS_STATUS oid_802_11_configuration_hdl(struct oid_par_priv* poid_par_priv); +NDIS_STATUS oid_802_11_power_mode_hdl(struct oid_par_priv* poid_par_priv); +NDIS_STATUS oid_802_11_bssid_list_hdl(struct oid_par_priv* poid_par_priv); + + +//OID Handler for Segment 10 +NDIS_STATUS oid_802_11_statistics_hdl(struct oid_par_priv* poid_par_priv); + + +//OID Handler for Segment ED +NDIS_STATUS oid_rt_mh_vender_id_hdl(struct oid_par_priv* poid_par_priv); + +void Set_802_3_MULTICAST_LIST(ADAPTER *pAdapter, UCHAR *MCListbuf, ULONG MCListlen, BOOLEAN bAcceptAllMulticast); + +#endif// end of PLATFORM_WINDOWS + + +#if defined(PLATFORM_LINUX) && defined(CONFIG_WIRELESS_EXT) +extern struct iw_handler_def rtw_handlers_def; +#endif + +extern NDIS_STATUS drv_query_info( + IN _nic_hdl MiniportAdapterContext, + IN NDIS_OID Oid, + IN void * InformationBuffer, + IN u32 InformationBufferLength, + OUT u32* BytesWritten, + OUT u32* BytesNeeded + ); + +extern NDIS_STATUS drv_set_info( + IN _nic_hdl MiniportAdapterContext, + IN NDIS_OID Oid, + IN void * InformationBuffer, + IN u32 InformationBufferLength, + OUT u32* BytesRead, + OUT u32* BytesNeeded + ); + +#endif // #ifndef __INC_CEINFO_ --- linux-raspi2-4.2.0.orig/drivers/net/wireless/rtl8192cu/include/rtw_ioctl_query.h +++ linux-raspi2-4.2.0/drivers/net/wireless/rtl8192cu/include/rtw_ioctl_query.h @@ -0,0 +1,35 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved. + * + * 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 + * published by the Free Software Foundation. + * + * 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 Street, Fifth Floor, Boston, MA 02110, USA + * + * + ******************************************************************************/ +#ifndef _RTW_IOCTL_QUERY_H_ +#define _RTW_IOCTL_QUERY_H_ + +#include +#include + + +#ifdef PLATFORM_WINDOWS + +u8 query_802_11_capability(_adapter* padapter,u8* pucBuf,u32 * pulOutLen); +u8 query_802_11_association_information (_adapter * padapter, PNDIS_802_11_ASSOCIATION_INFORMATION pAssocInfo); + +#endif + + +#endif --- linux-raspi2-4.2.0.orig/drivers/net/wireless/rtl8192cu/include/rtw_ioctl_rtl.h +++ linux-raspi2-4.2.0/drivers/net/wireless/rtl8192cu/include/rtw_ioctl_rtl.h @@ -0,0 +1,83 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved. + * + * 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 + * published by the Free Software Foundation. + * + * 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 Street, Fifth Floor, Boston, MA 02110, USA + * + * + ******************************************************************************/ +#ifndef _RTW_IOCTL_RTL_H_ +#define _RTW_IOCTL_RTL_H_ + +#include +#include +#include + +//************** oid_rtl_seg_01_01 ************** +NDIS_STATUS oid_rt_get_signal_quality_hdl(struct oid_par_priv* poid_par_priv);//84 +NDIS_STATUS oid_rt_get_small_packet_crc_hdl(struct oid_par_priv* poid_par_priv); +NDIS_STATUS oid_rt_get_middle_packet_crc_hdl(struct oid_par_priv* poid_par_priv); +NDIS_STATUS oid_rt_get_large_packet_crc_hdl(struct oid_par_priv* poid_par_priv); +NDIS_STATUS oid_rt_get_tx_retry_hdl(struct oid_par_priv* poid_par_priv); +NDIS_STATUS oid_rt_get_rx_retry_hdl(struct oid_par_priv* poid_par_priv); +NDIS_STATUS oid_rt_get_rx_total_packet_hdl(struct oid_par_priv* poid_par_priv); +NDIS_STATUS oid_rt_get_tx_beacon_ok_hdl(struct oid_par_priv* poid_par_priv); +NDIS_STATUS oid_rt_get_tx_beacon_err_hdl(struct oid_par_priv* poid_par_priv); + +NDIS_STATUS oid_rt_pro_set_fw_dig_state_hdl(struct oid_par_priv* poid_par_priv); //8a +NDIS_STATUS oid_rt_pro_set_fw_ra_state_hdl(struct oid_par_priv* poid_par_priv); //8b + +NDIS_STATUS oid_rt_get_rx_icv_err_hdl(struct oid_par_priv* poid_par_priv);//93 +NDIS_STATUS oid_rt_set_encryption_algorithm_hdl(struct oid_par_priv* poid_par_priv); +NDIS_STATUS oid_rt_get_preamble_mode_hdl(struct oid_par_priv* poid_par_priv); +NDIS_STATUS oid_rt_get_ap_ip_hdl(struct oid_par_priv* poid_par_priv); +NDIS_STATUS oid_rt_get_channelplan_hdl(struct oid_par_priv* poid_par_priv); +NDIS_STATUS oid_rt_set_channelplan_hdl(struct oid_par_priv* poid_par_priv); +NDIS_STATUS oid_rt_set_preamble_mode_hdl(struct oid_par_priv* poid_par_priv); +NDIS_STATUS oid_rt_set_bcn_intvl_hdl(struct oid_par_priv* poid_par_priv); +NDIS_STATUS oid_rt_dedicate_probe_hdl(struct oid_par_priv* poid_par_priv); +NDIS_STATUS oid_rt_get_total_tx_bytes_hdl(struct oid_par_priv* poid_par_priv); +NDIS_STATUS oid_rt_get_total_rx_bytes_hdl(struct oid_par_priv* poid_par_priv); +NDIS_STATUS oid_rt_current_tx_power_level_hdl(struct oid_par_priv* poid_par_priv); +NDIS_STATUS oid_rt_get_enc_key_mismatch_count_hdl(struct oid_par_priv* poid_par_priv); +NDIS_STATUS oid_rt_get_enc_key_match_count_hdl(struct oid_par_priv* poid_par_priv); +NDIS_STATUS oid_rt_get_channel_hdl(struct oid_par_priv* poid_par_priv); +NDIS_STATUS oid_rt_get_hardware_radio_off_hdl(struct oid_par_priv* poid_par_priv); +NDIS_STATUS oid_rt_get_key_mismatch_hdl(struct oid_par_priv* poid_par_priv); +NDIS_STATUS oid_rt_supported_wireless_mode_hdl(struct oid_par_priv* poid_par_priv); +NDIS_STATUS oid_rt_get_channel_list_hdl(struct oid_par_priv* poid_par_priv); +NDIS_STATUS oid_rt_get_scan_in_progress_hdl(struct oid_par_priv* poid_par_priv); +NDIS_STATUS oid_rt_forced_data_rate_hdl(struct oid_par_priv* poid_par_priv); +NDIS_STATUS oid_rt_wireless_mode_for_scan_list_hdl(struct oid_par_priv* poid_par_priv); +NDIS_STATUS oid_rt_get_bss_wireless_mode_hdl(struct oid_par_priv* poid_par_priv); +NDIS_STATUS oid_rt_scan_with_magic_packet_hdl(struct oid_par_priv* poid_par_priv); + +//************** oid_rtl_seg_01_03 section start ************** +NDIS_STATUS oid_rt_ap_get_associated_station_list_hdl(struct oid_par_priv* poid_par_priv); +NDIS_STATUS oid_rt_ap_switch_into_ap_mode_hdl(struct oid_par_priv* poid_par_priv); +NDIS_STATUS oid_rt_ap_supported_hdl(struct oid_par_priv* poid_par_priv); +NDIS_STATUS oid_rt_ap_set_passphrase_hdl(struct oid_par_priv* poid_par_priv); + +// oid_rtl_seg_01_11 +NDIS_STATUS oid_rt_pro_rf_write_registry_hdl(struct oid_par_priv* poid_par_priv); +NDIS_STATUS oid_rt_pro_rf_read_registry_hdl(struct oid_par_priv* poid_par_priv); + +//************** oid_rtl_seg_03_00 section start ************** +NDIS_STATUS oid_rt_get_connect_state_hdl(struct oid_par_priv* poid_par_priv); +NDIS_STATUS oid_rt_set_default_key_id_hdl(struct oid_par_priv* poid_par_priv); + + + + +#endif --- linux-raspi2-4.2.0.orig/drivers/net/wireless/rtl8192cu/include/rtw_ioctl_set.h +++ linux-raspi2-4.2.0/drivers/net/wireless/rtl8192cu/include/rtw_ioctl_set.h @@ -0,0 +1,78 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved. + * + * 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 + * published by the Free Software Foundation. + * + * 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 Street, Fifth Floor, Boston, MA 02110, USA + * + * + ******************************************************************************/ +#ifndef __RTW_IOCTL_SET_H_ +#define __RTW_IOCTL_SET_H_ + +#include +#include + + +typedef u8 NDIS_802_11_PMKID_VALUE[16]; + +typedef struct _BSSIDInfo { + NDIS_802_11_MAC_ADDRESS BSSID; + NDIS_802_11_PMKID_VALUE PMKID; +} BSSIDInfo, *PBSSIDInfo; + + +#ifdef PLATFORM_OS_XP +typedef struct _NDIS_802_11_PMKID { + u32 Length; + u32 BSSIDInfoCount; + BSSIDInfo BSSIDInfo[1]; +} NDIS_802_11_PMKID, *PNDIS_802_11_PMKID; +#endif + + +#ifdef PLATFORM_WINDOWS +u8 rtw_set_802_11_reload_defaults(_adapter * padapter, NDIS_802_11_RELOAD_DEFAULTS reloadDefaults); +u8 rtw_set_802_11_test(_adapter * padapter, NDIS_802_11_TEST * test); +u8 rtw_set_802_11_pmkid(_adapter *pdapter, NDIS_802_11_PMKID *pmkid); + +u8 rtw_pnp_set_power_sleep(_adapter* padapter); +u8 rtw_pnp_set_power_wakeup(_adapter* padapter); + +void rtw_pnp_resume_wk(void *context); +void rtw_pnp_sleep_wk(void * context); + +#endif + +u8 rtw_set_802_11_add_key(_adapter * padapter, NDIS_802_11_KEY * key); +u8 rtw_set_802_11_authentication_mode(_adapter *pdapter, NDIS_802_11_AUTHENTICATION_MODE authmode); +u8 rtw_set_802_11_bssid(_adapter* padapter, u8 *bssid); +u8 rtw_set_802_11_add_wep(_adapter * padapter, NDIS_802_11_WEP * wep); +u8 rtw_set_802_11_disassociate(_adapter * padapter); +u8 rtw_set_802_11_bssid_list_scan(_adapter* padapter, NDIS_802_11_SSID *pssid, int ssid_max_num); +u8 rtw_set_802_11_infrastructure_mode(_adapter * padapter, NDIS_802_11_NETWORK_INFRASTRUCTURE networktype); +u8 rtw_set_802_11_remove_wep(_adapter * padapter, u32 keyindex); +u8 rtw_set_802_11_ssid(_adapter * padapter, NDIS_802_11_SSID * ssid); +u8 rtw_set_802_11_connect(_adapter* padapter, u8 *bssid, NDIS_802_11_SSID *ssid); +u8 rtw_set_802_11_remove_key(_adapter * padapter, NDIS_802_11_REMOVE_KEY * key); + +u8 rtw_validate_bssid(u8 *bssid); +u8 rtw_validate_ssid(NDIS_802_11_SSID *ssid); + +u16 rtw_get_cur_max_rate(_adapter *adapter); +int rtw_set_scan_mode(_adapter *adapter, RT_SCAN_TYPE scan_mode); +int rtw_set_channel_plan(_adapter *adapter, u8 channel_plan); +int rtw_set_country(_adapter *adapter, const char *country_code); +int rtw_set_band(_adapter *adapter, enum _BAND band); + +#endif --- linux-raspi2-4.2.0.orig/drivers/net/wireless/rtl8192cu/include/rtw_iol.h +++ linux-raspi2-4.2.0/drivers/net/wireless/rtl8192cu/include/rtw_iol.h @@ -0,0 +1,89 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved. + * + * 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 + * published by the Free Software Foundation. + * + * 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 Street, Fifth Floor, Boston, MA 02110, USA + * + * + ******************************************************************************/ +#ifndef __RTW_IOL_H_ +#define __RTW_IOL_H_ + +#include +#include +#include + +typedef struct _io_offload_cmd { + u8 rsvd0; + u8 cmd; + u16 address; + u32 value; +} IO_OFFLOAD_CMD, IOL_CMD; + +#define IOL_CMD_LLT 0x00 +//#define IOL_CMD_R_EFUSE 0x01 +#define IOL_CMD_WB_REG 0x02 +#define IOL_CMD_WW_REG 0x03 +#define IOL_CMD_WD_REG 0x04 +//#define IOL_CMD_W_RF 0x05 +#define IOL_CMD_DELAY_US 0x80 +#define IOL_CMD_DELAY_MS 0x81 +//#define IOL_CMD_DELAY_S 0x82 +#define IOL_CMD_END 0x83 + +/***************************************************** +CMD Address Value +(B1) (B2/B3:H/L addr) (B4:B7 : MSB:LSB) +****************************************************** +IOL_CMD_LLT - B7: PGBNDY +//IOL_CMD_R_EFUSE - - +IOL_CMD_WB_REG 0x0~0xFFFF B7 +IOL_CMD_WW_REG 0x0~0xFFFF B6~B7 +IOL_CMD_WD_REG 0x0~0xFFFF B4~B7 +//IOL_CMD_W_RF RF Reg B5~B7 +IOL_CMD_DELAY_US - B6~B7 +IOL_CMD_DELAY_MS - B6~B7 +//IOL_CMD_DELAY_S - B6~B7 +IOL_CMD_END - - +******************************************************/ + +struct xmit_frame *rtw_IOL_accquire_xmit_frame(ADAPTER *adapter); +int rtw_IOL_append_cmds(struct xmit_frame *xmit_frame, u8 *IOL_cmds, u32 cmd_len); +int rtw_IOL_append_LLT_cmd(struct xmit_frame *xmit_frame, u8 page_boundary); +int _rtw_IOL_append_WB_cmd(struct xmit_frame *xmit_frame, u16 addr, u8 value); +int _rtw_IOL_append_WW_cmd(struct xmit_frame *xmit_frame, u16 addr, u16 value); +int _rtw_IOL_append_WD_cmd(struct xmit_frame *xmit_frame, u16 addr, u32 value); +int rtw_IOL_append_DELAY_US_cmd(struct xmit_frame *xmit_frame, u16 us); +int rtw_IOL_append_DELAY_MS_cmd(struct xmit_frame *xmit_frame, u16 ms); +int rtw_IOL_append_END_cmd(struct xmit_frame *xmit_frame); +int rtw_IOL_exec_cmds_sync(ADAPTER *adapter, struct xmit_frame *xmit_frame, u32 max_wating_ms); +int rtw_IOL_exec_cmd_array_sync(PADAPTER adapter, u8 *IOL_cmds, u32 cmd_num, u32 max_wating_ms); +int rtw_IOL_exec_empty_cmds_sync(ADAPTER *adapter, u32 max_wating_ms); + +#ifdef DBG_IO +int dbg_rtw_IOL_append_WB_cmd(struct xmit_frame *xmit_frame, u16 addr, u8 value, const char *caller, const int line); +int dbg_rtw_IOL_append_WW_cmd(struct xmit_frame *xmit_frame, u16 addr, u16 value, const char *caller, const int line); +int dbg_rtw_IOL_append_WD_cmd(struct xmit_frame *xmit_frame, u16 addr, u32 value, const char *caller, const int line); +#define rtw_IOL_append_WB_cmd(xmit_frame, addr, value) dbg_rtw_IOL_append_WB_cmd((xmit_frame), (addr), (value), __FUNCTION__, __LINE__) +#define rtw_IOL_append_WW_cmd(xmit_frame, addr, value) dbg_rtw_IOL_append_WW_cmd((xmit_frame), (addr), (value), __FUNCTION__, __LINE__) +#define rtw_IOL_append_WD_cmd(xmit_frame, addr, value) dbg_rtw_IOL_append_WD_cmd((xmit_frame), (addr), (value), __FUNCTION__, __LINE__) +#else +#define rtw_IOL_append_WB_cmd(xmit_frame, addr, value) _rtw_IOL_append_WB_cmd((xmit_frame), (addr), (value)) +#define rtw_IOL_append_WW_cmd(xmit_frame, addr, value) _rtw_IOL_append_WW_cmd((xmit_frame), (addr), (value)) +#define rtw_IOL_append_WD_cmd(xmit_frame, addr, value) _rtw_IOL_append_WD_cmd((xmit_frame), (addr), (value)) +#endif + +bool rtw_IOL_applied(ADAPTER *adapter); + +#endif //__RTW_IOL_H_ --- linux-raspi2-4.2.0.orig/drivers/net/wireless/rtl8192cu/include/rtw_led.h +++ linux-raspi2-4.2.0/drivers/net/wireless/rtl8192cu/include/rtw_led.h @@ -0,0 +1,216 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved. + * + * 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 + * published by the Free Software Foundation. + * + * 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 Street, Fifth Floor, Boston, MA 02110, USA + * + * + ******************************************************************************/ +#ifndef __RTW_LED_H_ +#define __RTW_LED_H_ + +#include +#include +#include + +#define MSECS(t) (HZ * ((t) / 1000) + (HZ * ((t) % 1000)) / 1000) + +typedef enum _LED_CTL_MODE{ + LED_CTL_POWER_ON = 1, + LED_CTL_LINK = 2, + LED_CTL_NO_LINK = 3, + LED_CTL_TX = 4, + LED_CTL_RX = 5, + LED_CTL_SITE_SURVEY = 6, + LED_CTL_POWER_OFF = 7, + LED_CTL_START_TO_LINK = 8, + LED_CTL_START_WPS = 9, + LED_CTL_STOP_WPS = 10, + LED_CTL_START_WPS_BOTTON = 11, //added for runtop + LED_CTL_STOP_WPS_FAIL = 12, //added for ALPHA + LED_CTL_STOP_WPS_FAIL_OVERLAP = 13, //added for BELKIN +}LED_CTL_MODE; + + +#if defined(CONFIG_USB_HCI) || defined(CONFIG_SDIO_HCI) +//================================================================================ +// LED object. +//================================================================================ + +typedef enum _LED_STATE_871x{ + LED_UNKNOWN = 0, + RTW_LED_ON = 1, + RTW_LED_OFF = 2, + LED_BLINK_NORMAL = 3, + LED_BLINK_SLOWLY = 4, + LED_POWER_ON_BLINK = 5, + LED_SCAN_BLINK = 6, // LED is blinking during scanning period, the # of times to blink is depend on time for scanning. + LED_NO_LINK_BLINK = 7, // LED is blinking during no link state. + LED_BLINK_StartToBlink = 8,// Customzied for Sercomm Printer Server case + LED_BLINK_WPS = 9, // LED is blinkg during WPS communication + LED_TXRX_BLINK = 10, + LED_BLINK_WPS_STOP = 11, //for ALPHA + LED_BLINK_WPS_STOP_OVERLAP = 12, //for BELKIN +}LED_STATE_871x; + +#define IS_LED_WPS_BLINKING(_LED_871x) (((PLED_871x)_LED_871x)->CurrLedState==LED_BLINK_WPS \ + || ((PLED_871x)_LED_871x)->CurrLedState==LED_BLINK_WPS_STOP \ + || ((PLED_871x)_LED_871x)->bLedWPSBlinkInProgress) + +#define IS_LED_BLINKING(_LED_871x) (((PLED_871x)_LED_871x)->bLedWPSBlinkInProgress \ + ||((PLED_871x)_LED_871x)->bLedScanBlinkInProgress) + +typedef enum _LED_PIN_871x{ + LED_PIN_GPIO0, + LED_PIN_LED0, + LED_PIN_LED1 +}LED_PIN_871x; + +typedef struct _LED_871x{ + _adapter *padapter; + LED_PIN_871x LedPin; // Identify how to implement this SW led. + LED_STATE_871x CurrLedState; // Current LED state. + u8 bLedOn; // true if LED is ON, false if LED is OFF. + + u8 bSWLedCtrl; + + u8 bLedBlinkInProgress; // true if it is blinking, false o.w.. + // ALPHA, added by chiyoko, 20090106 + u8 bLedNoLinkBlinkInProgress; + u8 bLedLinkBlinkInProgress; + u8 bLedStartToLinkBlinkInProgress; + u8 bLedScanBlinkInProgress; + u8 bLedWPSBlinkInProgress; + + u32 BlinkTimes; // Number of times to toggle led state for blinking. + LED_STATE_871x BlinkingLedState; // Next state for blinking, either RTW_LED_ON or RTW_LED_OFF are. + + _timer BlinkTimer; // Timer object for led blinking. +#if LINUX_VERSION_CODE > KERNEL_VERSION(2,5,0)|| defined PLATFORM_FREEBSD + _workitem BlinkWorkItem; // Workitem used by BlinkTimer to manipulate H/W to blink LED. +#endif +} LED_871x, *PLED_871x; + + +//================================================================================ +// LED customization. +//================================================================================ + +typedef enum _LED_STRATEGY_871x{ + SW_LED_MODE0, // SW control 1 LED via GPIO0. It is default option. + SW_LED_MODE1, // 2 LEDs, through LED0 and LED1. For ALPHA. + SW_LED_MODE2, // SW control 1 LED via GPIO0, customized for AzWave 8187 minicard. + SW_LED_MODE3, // SW control 1 LED via GPIO0, customized for Sercomm Printer Server case. + SW_LED_MODE4, //for Edimax / Belkin + SW_LED_MODE5, //for Sercomm / Belkin + SW_LED_MODE6, //for 88CU minicard, porting from ce SW_LED_MODE7 + HW_LED, // HW control 2 LEDs, LED0 and LED1 (there are 4 different control modes, see MAC.CONFIG1 for details.) +}LED_STRATEGY_871x, *PLED_STRATEGY_871x; +#endif //CONFIG_USB_HCI + +#ifdef CONFIG_PCI_HCI +//================================================================================ +// LED object. +//================================================================================ + +typedef enum _LED_STATE_871x{ + LED_UNKNOWN = 0, + RTW_LED_ON = 1, + RTW_LED_OFF = 2, + LED_BLINK_NORMAL = 3, + LED_BLINK_SLOWLY = 4, + LED_POWER_ON_BLINK = 5, + LED_SCAN_BLINK = 6, // LED is blinking during scanning period, the # of times to blink is depend on time for scanning. + LED_NO_LINK_BLINK = 7, // LED is blinking during no link state. + LED_BLINK_StartToBlink = 8, + LED_BLINK_TXRX = 9, + LED_BLINK_RUNTOP = 10, // Customized for RunTop + LED_BLINK_CAMEO = 11, +}LED_STATE_871x; + +typedef enum _LED_PIN_871x{ + LED_PIN_GPIO0, + LED_PIN_LED0, + LED_PIN_LED1, + LED_PIN_LED2 +}LED_PIN_871x; + +typedef struct _LED_871x{ + _adapter *padapter; + + LED_PIN_871x LedPin; // Identify how to implement this SW led. + + LED_STATE_871x CurrLedState; // Current LED state. + u8 bLedOn; // TRUE if LED is ON, FALSE if LED is OFF. + + u8 bLedBlinkInProgress; // TRUE if it is blinking, FALSE o.w.. + u8 bLedWPSBlinkInProgress; // TRUE if it is blinking, FALSE o.w.. + + u8 bLedSlowBlinkInProgress;//added by vivi, for led new mode + u32 BlinkTimes; // Number of times to toggle led state for blinking. + LED_STATE_871x BlinkingLedState; // Next state for blinking, either RTW_LED_ON or RTW_LED_OFF are. + + _timer BlinkTimer; // Timer object for led blinking. + + u8 bLedLinkBlinkInProgress; + u8 bLedNoLinkBlinkInProgress; + u8 bLedScanBlinkInProgress; +} LED_871x, *PLED_871x; + + +//================================================================================ +// LED customization. +//================================================================================ + +typedef enum _LED_STRATEGY_871x{ + SW_LED_MODE0, // SW control 1 LED via GPIO0. It is default option. + SW_LED_MODE1, // SW control for PCI Express + SW_LED_MODE2, // SW control for Cameo. + SW_LED_MODE3, // SW contorl for RunTop. + SW_LED_MODE4, // SW control for Netcore + SW_LED_MODE5, //added by vivi, for led new mode, DLINK + SW_LED_MODE6, //added by vivi, for led new mode, PRONET + SW_LED_MODE7, //added by chiyokolin, for Lenovo, PCI Express Minicard Spec Rev.1.2 spec + SW_LED_MODE8, //added by chiyokolin, for QMI + SW_LED_MODE9, //added by chiyokolin, for BITLAND, PCI Express Minicard Spec Rev.1.1 + SW_LED_MODE10, //added by chiyokolin, for Edimax-ASUS + HW_LED, // HW control 2 LEDs, LED0 and LED1 (there are 4 different control modes) +}LED_STRATEGY_871x, *PLED_STRATEGY_871x; + +#define LED_CM8_BLINK_INTERVAL 500 //for QMI +#endif //CONFIG_PCI_HCI + +struct led_priv{ + /* add for led controll */ + LED_871x SwLed0; + LED_871x SwLed1; + LED_STRATEGY_871x LedStrategy; + u8 bRegUseLed; + void (*LedControlHandler)(_adapter *padapter, LED_CTL_MODE LedAction); + /* add for led controll */ +}; + +#ifdef CONFIG_SW_LED +#define rtw_led_control(adapter, LedAction) \ + do { \ + if((adapter)->ledpriv.LedControlHandler) \ + (adapter)->ledpriv.LedControlHandler((adapter), (LedAction)); \ + } while(0) +#else //CONFIG_SW_LED +#define rtw_led_control(adapter, LedAction) +#endif //CONFIG_SW_LED + +extern void BlinkHandler(PLED_871x pLed); + +#endif //__RTW_LED_H_ --- linux-raspi2-4.2.0.orig/drivers/net/wireless/rtl8192cu/include/rtw_mlme.h +++ linux-raspi2-4.2.0/drivers/net/wireless/rtl8192cu/include/rtw_mlme.h @@ -0,0 +1,843 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved. + * + * 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 + * published by the Free Software Foundation. + * + * 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 Street, Fifth Floor, Boston, MA 02110, USA + * + * + ******************************************************************************/ +#ifndef __RTW_MLME_H_ +#define __RTW_MLME_H_ + +#include +#include +#include +#include +#include + +#ifdef CONFIG_INTEL_WIDI +#include +#endif + +#define MAX_BSS_CNT 128 +//#define MAX_JOIN_TIMEOUT 2000 +//#define MAX_JOIN_TIMEOUT 2500 +#define MAX_JOIN_TIMEOUT 6500 + +// Commented by Albert 20101105 +// Increase the scanning timeout because of increasing the SURVEY_TO value. + +#define SCANNING_TIMEOUT 8000 + +#define SCAN_INTERVAL (30) // unit:2sec, 30*2=60sec + +#ifdef PALTFORM_OS_WINCE +#define SCANQUEUE_LIFETIME 12000000 // unit:us +#else +#define SCANQUEUE_LIFETIME 20 // unit:sec +#endif + +#define WIFI_NULL_STATE 0x00000000 + +#define WIFI_ASOC_STATE 0x00000001 // Under Linked state... +#define WIFI_REASOC_STATE 0x00000002 +#define WIFI_SLEEP_STATE 0x00000004 +#define WIFI_STATION_STATE 0x00000008 + +#define WIFI_AP_STATE 0x00000010 +#define WIFI_ADHOC_STATE 0x00000020 +#define WIFI_ADHOC_MASTER_STATE 0x00000040 +#define WIFI_UNDER_LINKING 0x00000080 + +#define WIFI_UNDER_WPS 0x00000100 +//#define WIFI_UNDER_CMD 0x00000200 +//#define WIFI_UNDER_P2P 0x00000400 +#define WIFI_STA_ALIVE_CHK_STATE 0x00000400 +#define WIFI_SITE_MONITOR 0x00000800 //to indicate the station is under site surveying + +#ifdef WDS +#define WIFI_WDS 0x00001000 +#define WIFI_WDS_RX_BEACON 0x00002000 // already rx WDS AP beacon +#endif +#ifdef AUTO_CONFIG +#define WIFI_AUTOCONF 0x00004000 +#define WIFI_AUTOCONF_IND 0x00008000 +#endif + +/* +// ========== P2P Section Start =============== +#define WIFI_P2P_LISTEN_STATE 0x00010000 +#define WIFI_P2P_GROUP_FORMATION_STATE 0x00020000 +// ========== P2P Section End =============== +*/ + +//#ifdef UNDER_MPTEST +#define WIFI_MP_STATE 0x00010000 +#define WIFI_MP_CTX_BACKGROUND 0x00020000 // in continous tx background +#define WIFI_MP_CTX_ST 0x00040000 // in continous tx with single-tone +#define WIFI_MP_CTX_BACKGROUND_PENDING 0x00080000 // pending in continous tx background due to out of skb +#define WIFI_MP_CTX_CCK_HW 0x00100000 // in continous tx +#define WIFI_MP_CTX_CCK_CS 0x00200000 // in continous tx with carrier suppression +#define WIFI_MP_LPBK_STATE 0x00400000 +//#endif + +//#define _FW_UNDER_CMD WIFI_UNDER_CMD +#define _FW_UNDER_LINKING WIFI_UNDER_LINKING +#define _FW_LINKED WIFI_ASOC_STATE +#define _FW_UNDER_SURVEY WIFI_SITE_MONITOR + + +enum dot11AuthAlgrthmNum { + dot11AuthAlgrthm_Open = 0, + dot11AuthAlgrthm_Shared, + dot11AuthAlgrthm_8021X, + dot11AuthAlgrthm_Auto, + dot11AuthAlgrthm_MaxNum +}; + +// Scan type including active and passive scan. +typedef enum _RT_SCAN_TYPE +{ + SCAN_PASSIVE, + SCAN_ACTIVE, + SCAN_MIX, +}RT_SCAN_TYPE, *PRT_SCAN_TYPE; + +enum DriverInterface { + DRIVER_WEXT = 1, + DRIVER_CFG80211 = 2 +}; + +enum _BAND +{ + GHZ24_50 = 0, + GHZ_50, + GHZ_24, + GHZ_MAX, +}; + +#define rtw_band_valid(band) ((band) >= GHZ24_50 && (band) < GHZ_MAX) + +enum SCAN_RESULT_TYPE +{ + SCAN_RESULT_P2P_ONLY = 0, // Will return all the P2P devices. + SCAN_RESULT_ALL = 1, // Will return all the scanned device, include AP. + SCAN_RESULT_WFD_TYPE = 2 // Will just return the correct WFD device. + // If this device is Miracast sink device, it will just return all the Miracast source devices. +}; + +/* + +there are several "locks" in mlme_priv, +since mlme_priv is a shared resource between many threads, +like ISR/Call-Back functions, the OID handlers, and even timer functions. + + +Each _queue has its own locks, already. +Other items are protected by mlme_priv.lock. + +To avoid possible dead lock, any thread trying to modifiying mlme_priv +SHALL not lock up more than one locks at a time! + +*/ + + +#define traffic_threshold 10 +#define traffic_scan_period 500 + +struct sitesurvey_ctrl { + u64 last_tx_pkts; + uint last_rx_pkts; + sint traffic_busy; + _timer sitesurvey_ctrl_timer; +}; + +typedef struct _RT_LINK_DETECT_T{ + u32 NumTxOkInPeriod; + u32 NumRxOkInPeriod; + u32 NumRxUnicastOkInPeriod; + BOOLEAN bBusyTraffic; + BOOLEAN bTxBusyTraffic; + BOOLEAN bRxBusyTraffic; + BOOLEAN bHigherBusyTraffic; // For interrupt migration purpose. + BOOLEAN bHigherBusyRxTraffic; // We may disable Tx interrupt according as Rx traffic. + BOOLEAN bHigherBusyTxTraffic; // We may disable Tx interrupt according as Tx traffic. +}RT_LINK_DETECT_T, *PRT_LINK_DETECT_T; + +struct profile_info { + u8 ssidlen; + u8 ssid[ WLAN_SSID_MAXLEN ]; + u8 peermac[ ETH_ALEN ]; +}; + +struct tx_invite_req_info{ + u8 token; + u8 benable; + u8 go_ssid[ WLAN_SSID_MAXLEN ]; + u8 ssidlen; + u8 go_bssid[ ETH_ALEN ]; + u8 peer_macaddr[ ETH_ALEN ]; + u8 operating_ch; // This information will be set by using the p2p_set op_ch=x + u8 peer_ch; // The listen channel for peer P2P device + +}; + +struct tx_invite_resp_info{ + u8 token; // Used to record the dialog token of p2p invitation request frame. +}; + +#ifdef CONFIG_WFD + +struct wifi_display_info{ + u16 wfd_enable; // Eanble/Disable the WFD function. + u16 rtsp_ctrlport; // TCP port number at which the this WFD device listens for RTSP messages + u16 peer_rtsp_ctrlport; // TCP port number at which the peer WFD device listens for RTSP messages + // This filed should be filled when receiving the gropu negotiation request + + u8 peer_session_avail; // WFD session is available or not for the peer wfd device. + // This variable will be set when sending the provisioning discovery request to peer WFD device. + // And this variable will be reset when it is read by using the iwpriv p2p_get wfd_sa command. + + u8 ip_address[4]; + u8 peer_ip_address[4]; + u8 wfd_pc; // WFD preferred connection + // 0 -> Prefer to use the P2P for WFD connection on peer side. + // 1 -> Prefer to use the TDLS for WFD connection on peer side. + + u8 wfd_device_type; // WFD Device Type + // 0 -> WFD Source Device + // 1 -> WFD Primary Sink Device + enum SCAN_RESULT_TYPE scan_result_type; // Used when P2P is enable. This parameter will impact the scan result. +}; +#endif //CONFIG_WFD + +struct tx_provdisc_req_info{ + u16 wps_config_method_request; // Used when sending the provisioning request frame + u16 peer_channel_num[2]; // The channel number which the receiver stands. + NDIS_802_11_SSID ssid; + u8 peerDevAddr[ ETH_ALEN ]; // Peer device address + u8 peerIFAddr[ ETH_ALEN ]; // Peer interface address + u8 benable; // This provision discovery request frame is trigger to send or not +}; + +struct rx_provdisc_req_info{ //When peer device issue prov_disc_req first, we should store the following informations + u8 peerDevAddr[ ETH_ALEN ]; // Peer device address + u8 strconfig_method_desc_of_prov_disc_req[4]; // description for the config method located in the provisioning discovery request frame. + // The UI must know this information to know which config method the remote p2p device is requiring. +}; + +struct tx_nego_req_info{ + u16 peer_channel_num[2]; // The channel number which the receiver stands. + u8 peerDevAddr[ ETH_ALEN ]; // Peer device address + u8 benable; // This negoitation request frame is trigger to send or not +}; + +struct group_id_info{ + u8 go_device_addr[ ETH_ALEN ]; // The GO's device address of this P2P group + u8 ssid[ WLAN_SSID_MAXLEN ]; // The SSID of this P2P group +}; + +struct scan_limit_info{ + u8 scan_op_ch_only; // When this flag is set, the driver should just scan the operation channel +#ifndef P2P_OP_CHECK_SOCIAL_CH + u8 operation_ch[2]; // Store the operation channel of invitation request frame +#else + u8 operation_ch[5]; // Store additional channel 1,6,11 for Android 4.2 IOT & Nexus 4 +#endif //P2P_OP_CHECK_SOCIAL_CH +}; + +#ifdef CONFIG_IOCTL_CFG80211 +struct cfg80211_wifidirect_info{ + _timer remain_on_ch_timer; + u8 restore_channel; + struct ieee80211_channel remain_on_ch_channel; + enum nl80211_channel_type remain_on_ch_type; + u64 remain_on_ch_cookie; + bool is_ro_ch; +}; +#endif //CONFIG_IOCTL_CFG80211 + +struct wifidirect_info{ + _adapter* padapter; + _timer find_phase_timer; + _timer restore_p2p_state_timer; + + // Used to do the scanning. After confirming the peer is availalble, the driver transmits the P2P frame to peer. + _timer pre_tx_scan_timer; + _timer reset_ch_sitesurvey; + _timer reset_ch_sitesurvey2; // Just for resetting the scan limit function by using p2p nego +#ifdef CONFIG_CONCURRENT_MODE + // Used to switch the channel between legacy AP and listen state. + _timer ap_p2p_switch_timer; +#endif + struct tx_provdisc_req_info tx_prov_disc_info; + struct rx_provdisc_req_info rx_prov_disc_info; + struct tx_invite_req_info invitereq_info; + struct profile_info profileinfo[ P2P_MAX_PERSISTENT_GROUP_NUM ]; // Store the profile information of persistent group + struct tx_invite_resp_info inviteresp_info; + struct tx_nego_req_info nego_req_info; + struct group_id_info groupid_info; // Store the group id information when doing the group negotiation handshake. + struct scan_limit_info rx_invitereq_info; // Used for get the limit scan channel from the Invitation procedure + struct scan_limit_info p2p_info; // Used for get the limit scan channel from the P2P negotiation handshake +#ifdef CONFIG_WFD + struct wifi_display_info *wfd_info; +#endif + enum P2P_ROLE role; + enum P2P_STATE pre_p2p_state; + enum P2P_STATE p2p_state; + u8 device_addr[ETH_ALEN]; // The device address should be the mac address of this device. + u8 interface_addr[ETH_ALEN]; + u8 social_chan[4]; + u8 listen_channel; + u8 operating_channel; + u8 listen_dwell; // This value should be between 1 and 3 + u8 support_rate[8]; + u8 p2p_wildcard_ssid[P2P_WILDCARD_SSID_LEN]; + u8 intent; // should only include the intent value. + u8 p2p_peer_interface_addr[ ETH_ALEN ]; + u8 p2p_peer_device_addr[ ETH_ALEN ]; + u8 peer_intent; // Included the intent value and tie breaker value. + u8 device_name[ WPS_MAX_DEVICE_NAME_LEN ]; // Device name for displaying on searching device screen + u8 device_name_len; + u8 profileindex; // Used to point to the index of profileinfo array + u8 peer_operating_ch; + u8 find_phase_state_exchange_cnt; + u16 device_password_id_for_nego; // The device password ID for group negotation + u8 negotiation_dialog_token; + u8 nego_ssid[ WLAN_SSID_MAXLEN ]; // SSID information for group negotitation + u8 nego_ssidlen; + u8 p2p_group_ssid[WLAN_SSID_MAXLEN]; + u8 p2p_group_ssid_len; + u8 persistent_supported; // Flag to know the persistent function should be supported or not. + // In the Sigma test, the Sigma will provide this enable from the sta_set_p2p CAPI. + // 0: disable + // 1: enable + u8 session_available; // Flag to set the WFD session available to enable or disable "by Sigma" + // In the Sigma test, the Sigma will disable the session available by using the sta_preset CAPI. + // 0: disable + // 1: enable + u8 wfd_tdls_enable; // Flag to enable or disable the TDLS by WFD Sigma + // 0: disable + // 1: enable + u8 wfd_tdls_weaksec; // Flag to enable or disable the weak security function for TDLS by WFD Sigma + // 0: disable + // In this case, the driver can't issue the tdsl setup request frame. + // 1: enable + // In this case, the driver can issue the tdls setup request frame + // even the current security is weak security. + + enum P2P_WPSINFO ui_got_wps_info; // This field will store the WPS value (PIN value or PBC) that UI had got from the user. + u16 supported_wps_cm; // This field describes the WPS config method which this driver supported. + // The value should be the combination of config method defined in page104 of WPS v2.0 spec. + u8 external_uuid; // UUID flag + u8 uuid[16]; // UUID + uint channel_list_attr_len; // This field will contain the length of body of P2P Channel List attribute of group negotitation response frame. + u8 channel_list_attr[100]; // This field will contain the body of P2P Channel List attribute of group negotitation response frame. + // We will use the channel_cnt and channel_list fields when constructing the group negotitation confirm frame. + u8 driver_interface; // Indicate DRIVER_WEXT or DRIVER_CFG80211 + +#ifdef CONFIG_CONCURRENT_MODE + u16 ext_listen_interval; // The interval to be available with legacy AP (ms) + u16 ext_listen_period; // The time period to be available for P2P listen state (ms) +#endif +#ifdef CONFIG_P2P_PS + enum P2P_PS_MODE p2p_ps_mode; // indicate p2p ps mode + enum P2P_PS_STATE p2p_ps_state; // indicate p2p ps state + u8 noa_index; // Identifies and instance of Notice of Absence timing. + u8 ctwindow; // Client traffic window. A period of time in TU after TBTT. + u8 opp_ps; // opportunistic power save. + u8 noa_num; // number of NoA descriptor in P2P IE. + u8 noa_count[P2P_MAX_NOA_NUM]; // Count for owner, Type of client. + u32 noa_duration[P2P_MAX_NOA_NUM]; // Max duration for owner, preferred or min acceptable duration for client. + u32 noa_interval[P2P_MAX_NOA_NUM]; // Length of interval for owner, preferred or max acceptable interval of client. + u32 noa_start_time[P2P_MAX_NOA_NUM]; // schedule expressed in terms of the lower 4 bytes of the TSF timer. +#endif // CONFIG_P2P_PS +}; + +struct tdls_ss_record{ //signal strength record; recording the tdls sta with lowerest ss + u8 macaddr[ETH_ALEN]; + u8 RxPWDBAll; + u8 is_tdls_sta; // _TRUE: direct link sta, _FALSE: else +}; + +struct tdls_info{ + u8 ap_prohibited; + uint setup_state; + u8 sta_cnt; + u8 sta_maximum; // 1:tdls sta is equal (NUM_STA-1), reach max direct link number; 0: else; + struct tdls_ss_record ss_record; + u8 macid_index; //macid entry that is ready to write + u8 clear_cam; //cam entry that is trying to clear, using it in direct link teardown + u8 ch_sensing; + u8 cur_channel; + u8 candidate_ch; + u8 collect_pkt_num[MAX_CHANNEL_NUM]; + _lock cmd_lock; + _lock hdl_lock; + u8 watchdog_count; + u8 dev_discovered; //WFD_TDLS: for sigma test + u8 enable; +#ifdef CONFIG_WFD + struct wifi_display_info *wfd_info; +#endif +}; + +struct mlme_priv { + + _lock lock; + sint fw_state; //shall we protect this variable? maybe not necessarily... + + u8 to_join; //flag + #ifdef CONFIG_LAYER2_ROAMING + u8 to_roaming; // roaming trying times + #endif + + u8 *nic_hdl; + + u8 not_indic_disco; + _list *pscanned; + _queue free_bss_pool; + _queue scanned_queue; + u8 *free_bss_buf; + u32 num_of_scanned; + + NDIS_802_11_SSID assoc_ssid; + u8 assoc_bssid[6]; + + struct wlan_network cur_network; + + //uint wireless_mode; no used, remove it + + u32 scan_interval; + + _timer assoc_timer; + + uint assoc_by_bssid; + uint assoc_by_rssi; + + _timer scan_to_timer; // driver itself handles scan_timeout status. + u32 scan_start_time; // used to evaluate the time spent in scanning + + #ifdef CONFIG_SET_SCAN_DENY_TIMER + _timer set_scan_deny_timer; + ATOMIC_T set_scan_deny; //0: allowed, 1: deny + #endif + + struct qos_priv qospriv; + +#ifdef CONFIG_80211N_HT + + /* Number of non-HT AP/stations */ + int num_sta_no_ht; + + /* Number of HT AP/stations 20 MHz */ + //int num_sta_ht_20mhz; + + + int num_FortyMHzIntolerant; + + struct ht_priv htpriv; + +#endif + + RT_LINK_DETECT_T LinkDetectInfo; + _timer dynamic_chk_timer; //dynamic/periodic check timer + + u8 acm_mask; // for wmm acm mask + u8 ChannelPlan; + RT_SCAN_TYPE scan_mode; // active: 1, passive: 0 + + //u8 probereq_wpsie[MAX_WPS_IE_LEN];//added in probe req + //int probereq_wpsie_len; + u8 *wps_probe_req_ie; + u32 wps_probe_req_ie_len; + +#if defined (CONFIG_AP_MODE) && defined (CONFIG_NATIVEAP_MLME) + /* Number of associated Non-ERP stations (i.e., stations using 802.11b + * in 802.11g BSS) */ + int num_sta_non_erp; + + /* Number of associated stations that do not support Short Slot Time */ + int num_sta_no_short_slot_time; + + /* Number of associated stations that do not support Short Preamble */ + int num_sta_no_short_preamble; + + int olbc; /* Overlapping Legacy BSS Condition */ + + /* Number of HT associated stations that do not support greenfield */ + int num_sta_ht_no_gf; + + /* Number of associated non-HT stations */ + //int num_sta_no_ht; + + /* Number of HT associated stations 20 MHz */ + int num_sta_ht_20mhz; + + /* Overlapping BSS information */ + int olbc_ht; + +#ifdef CONFIG_80211N_HT + u16 ht_op_mode; +#endif /* CONFIG_80211N_HT */ + + u8 *assoc_req; + u32 assoc_req_len; + u8 *assoc_rsp; + u32 assoc_rsp_len; + + u8 *wps_beacon_ie; + //u8 *wps_probe_req_ie; + u8 *wps_probe_resp_ie; + u8 *wps_assoc_resp_ie; // for CONFIG_IOCTL_CFG80211, this IE could include p2p ie / wfd ie + + u32 wps_beacon_ie_len; + //u32 wps_probe_req_ie_len; + u32 wps_probe_resp_ie_len; + u32 wps_assoc_resp_ie_len; // for CONFIG_IOCTL_CFG80211, this IE len could include p2p ie / wfd ie + + u8 *p2p_beacon_ie; + u8 *p2p_probe_req_ie; + u8 *p2p_probe_resp_ie; + u8 *p2p_go_probe_resp_ie; //for GO + u8 *p2p_assoc_req_ie; + + u32 p2p_beacon_ie_len; + u32 p2p_probe_req_ie_len; + u32 p2p_probe_resp_ie_len; + u32 p2p_go_probe_resp_ie_len; //for GO + u32 p2p_assoc_req_ie_len; +/* +#if defined(CONFIG_P2P) && defined(CONFIG_IOCTL_CFG80211) + //u8 *wps_p2p_beacon_ie; + u8 *p2p_beacon_ie; + u8 *wps_p2p_probe_resp_ie; + u8 *wps_p2p_assoc_resp_ie; + //u32 wps_p2p_beacon_ie_len; + u32 p2p_beacon_ie_len; + u32 wps_p2p_probe_resp_ie_len; + u32 wps_p2p_assoc_resp_ie_len; +#endif +*/ + + _lock bcn_update_lock; + u8 update_bcn; + + +#endif //#if defined (CONFIG_AP_MODE) && defined (CONFIG_NATIVEAP_MLME) + +#if defined(CONFIG_WFD) && defined(CONFIG_IOCTL_CFG80211) + + u8 *wfd_beacon_ie; + u8 *wfd_probe_req_ie; + u8 *wfd_probe_resp_ie; + u8 *wfd_go_probe_resp_ie; //for GO + u8 *wfd_assoc_req_ie; + + u32 wfd_beacon_ie_len; + u32 wfd_probe_req_ie_len; + u32 wfd_probe_resp_ie_len; + u32 wfd_go_probe_resp_ie_len; //for GO + u32 wfd_assoc_req_ie_len; + +#endif + +#ifdef RTK_DMP_PLATFORM + // DMP kobject_hotplug function signal need in passive level + _workitem Linkup_workitem; + _workitem Linkdown_workitem; +#endif + +#ifdef CONFIG_INTEL_WIDI + int widi_state; + int listen_state; + _timer listen_timer; + ATOMIC_T rx_probe_rsp; // 1:receive probe respone from RDS source. + u8 *l2sdTaBuffer; + u8 channel_idx; + s8 group_cnt; //For WiDi 3.5, they specified another scan algo. for WFD/RDS co-existed + u8 sa_ext[L2SDTA_SERVICE_VE_LEN]; + + u8 widi_enable; + /** + * For WiDi 4; upper layer would set + * p2p_primary_device_type_category_id + * p2p_primary_device_type_sub_category_id + * p2p_secondary_device_type_category_id + * p2p_secondary_device_type_sub_category_id + */ + u16 p2p_pdt_cid; + u16 p2p_pdt_scid; + u8 num_p2p_sdt; + u16 p2p_sdt_cid[MAX_NUM_P2P_SDT]; + u16 p2p_sdt_scid[MAX_NUM_P2P_SDT]; + u8 p2p_reject_disable; //When starting NL80211 wpa_supplicant/hostapd, it will call netdev_close + //such that it will cause p2p disabled. Use this flag to reject. +#endif // CONFIG_INTEL_WIDI + +#ifdef CONFIG_CONCURRENT_MODE + u8 scanning_via_buddy_intf; +#endif +}; + +#ifdef CONFIG_AP_MODE + +struct hostapd_priv +{ + _adapter *padapter; + +#ifdef CONFIG_HOSTAPD_MLME + struct net_device *pmgnt_netdev; + struct usb_anchor anchored; +#endif + +}; + +extern int hostapd_mode_init(_adapter *padapter); +extern void hostapd_mode_unload(_adapter *padapter); +#endif + + +extern void rtw_joinbss_event_prehandle(_adapter *adapter, u8 *pbuf); +extern void rtw_survey_event_callback(_adapter *adapter, u8 *pbuf); +extern void rtw_surveydone_event_callback(_adapter *adapter, u8 *pbuf); +extern void rtw_joinbss_event_callback(_adapter *adapter, u8 *pbuf); +extern void rtw_stassoc_event_callback(_adapter *adapter, u8 *pbuf); +extern void rtw_stadel_event_callback(_adapter *adapter, u8 *pbuf); +extern void rtw_atimdone_event_callback(_adapter *adapter, u8 *pbuf); +extern void rtw_cpwm_event_callback(_adapter *adapter, u8 *pbuf); + +#ifdef PLATFORM_WINDOWS +extern thread_return event_thread(void *context); + +extern void rtw_join_timeout_handler ( + IN PVOID SystemSpecific1, + IN PVOID FunctionContext, + IN PVOID SystemSpecific2, + IN PVOID SystemSpecific3 + ); + +extern void _rtw_scan_timeout_handler ( + IN PVOID SystemSpecific1, + IN PVOID FunctionContext, + IN PVOID SystemSpecific2, + IN PVOID SystemSpecific3 + ); + +#endif + +#if defined (PLATFORM_LINUX)|| defined (PLATFORM_FREEBSD) +extern int event_thread(void *context); +extern void rtw_join_timeout_handler(void* FunctionContext); +extern void _rtw_scan_timeout_handler(void* FunctionContext); +#endif + +extern void rtw_free_network_queue(_adapter *adapter,u8 isfreeall); +extern int rtw_init_mlme_priv(_adapter *adapter);// (struct mlme_priv *pmlmepriv); + +extern void rtw_free_mlme_priv (struct mlme_priv *pmlmepriv); + + +extern sint rtw_select_and_join_from_scanned_queue(struct mlme_priv *pmlmepriv); +extern sint rtw_set_key(_adapter *adapter,struct security_priv *psecuritypriv,sint keyid, u8 set_tx); +extern sint rtw_set_auth(_adapter *adapter,struct security_priv *psecuritypriv); + +__inline static u8 *get_bssid(struct mlme_priv *pmlmepriv) +{ //if sta_mode:pmlmepriv->cur_network.network.MacAddress=> bssid + // if adhoc_mode:pmlmepriv->cur_network.network.MacAddress=> ibss mac address + return pmlmepriv->cur_network.network.MacAddress; +} + +__inline static sint check_fwstate(struct mlme_priv *pmlmepriv, sint state) +{ + if (pmlmepriv->fw_state & state) + return _TRUE; + + return _FALSE; +} + +__inline static sint get_fwstate(struct mlme_priv *pmlmepriv) +{ + return pmlmepriv->fw_state; +} + +/* + * No Limit on the calling context, + * therefore set it to be the critical section... + * + * ### NOTE:#### (!!!!) + * MUST TAKE CARE THAT BEFORE CALLING THIS FUNC, YOU SHOULD HAVE LOCKED pmlmepriv->lock + */ +__inline static void set_fwstate(struct mlme_priv *pmlmepriv, sint state) +{ + pmlmepriv->fw_state |= state; +} + +__inline static void _clr_fwstate_(struct mlme_priv *pmlmepriv, sint state) +{ + pmlmepriv->fw_state &= ~state; +} + +/* + * No Limit on the calling context, + * therefore set it to be the critical section... + */ +__inline static void clr_fwstate(struct mlme_priv *pmlmepriv, sint state) +{ + _irqL irqL; + + _enter_critical_bh(&pmlmepriv->lock, &irqL); + if (check_fwstate(pmlmepriv, state) == _TRUE) + pmlmepriv->fw_state ^= state; + _exit_critical_bh(&pmlmepriv->lock, &irqL); +} + +__inline static void clr_fwstate_ex(struct mlme_priv *pmlmepriv, sint state) +{ + _irqL irqL; + + _enter_critical_bh(&pmlmepriv->lock, &irqL); + _clr_fwstate_(pmlmepriv, state); + _exit_critical_bh(&pmlmepriv->lock, &irqL); +} + +__inline static void up_scanned_network(struct mlme_priv *pmlmepriv) +{ + _irqL irqL; + + _enter_critical_bh(&pmlmepriv->lock, &irqL); + pmlmepriv->num_of_scanned++; + _exit_critical_bh(&pmlmepriv->lock, &irqL); +} + +#ifdef CONFIG_CONCURRENT_MODE +sint rtw_buddy_adapter_up(_adapter *padapter); +sint check_buddy_fwstate(_adapter *padapter, sint state); +#endif //CONFIG_CONCURRENT_MODE + +__inline static void down_scanned_network(struct mlme_priv *pmlmepriv) +{ + _irqL irqL; + + _enter_critical_bh(&pmlmepriv->lock, &irqL); + pmlmepriv->num_of_scanned--; + _exit_critical_bh(&pmlmepriv->lock, &irqL); +} + +__inline static void set_scanned_network_val(struct mlme_priv *pmlmepriv, sint val) +{ + _irqL irqL; + + _enter_critical_bh(&pmlmepriv->lock, &irqL); + pmlmepriv->num_of_scanned = val; + _exit_critical_bh(&pmlmepriv->lock, &irqL); +} + +extern u16 rtw_get_capability(WLAN_BSSID_EX *bss); +extern void rtw_update_scanned_network(_adapter *adapter, WLAN_BSSID_EX *target); +extern void rtw_disconnect_hdl_under_linked(_adapter* adapter, struct sta_info *psta, u8 free_assoc); +extern void rtw_generate_random_ibss(u8 *pibss); +extern struct wlan_network* rtw_find_network(_queue *scanned_queue, u8 *addr); +extern struct wlan_network* rtw_get_oldest_wlan_network(_queue *scanned_queue); + +extern void rtw_free_assoc_resources(_adapter* adapter, int lock_scanned_queue); +extern void rtw_indicate_disconnect(_adapter* adapter); +extern void rtw_indicate_connect(_adapter* adapter); +void rtw_indicate_scan_done( _adapter *padapter, bool aborted); +void rtw_scan_abort(_adapter *adapter); + +extern int rtw_restruct_sec_ie(_adapter *adapter,u8 *in_ie,u8 *out_ie,uint in_len); +extern int rtw_restruct_wmm_ie(_adapter *adapter, u8 *in_ie, u8 *out_ie, uint in_len, uint initial_out_len); +extern void rtw_init_registrypriv_dev_network(_adapter *adapter); + +extern void rtw_update_registrypriv_dev_network(_adapter *adapter); + +extern void rtw_get_encrypt_decrypt_from_registrypriv(_adapter *adapter); + +extern void _rtw_join_timeout_handler(_adapter *adapter); +extern void rtw_scan_timeout_handler(_adapter *adapter); + +extern void rtw_dynamic_check_timer_handlder(_adapter *adapter); +#ifdef CONFIG_SET_SCAN_DENY_TIMER +bool rtw_is_scan_deny(_adapter *adapter); +void rtw_clear_scan_deny(_adapter *adapter); +void rtw_set_scan_deny_timer_hdl(_adapter *adapter); +void rtw_set_scan_deny(_adapter *adapter, u32 ms); +#else +#define rtw_is_scan_deny(adapter) _FALSE +#define rtw_clear_scan_deny(adapter) do {} while (0) +#define rtw_set_scan_deny_timer_hdl(adapter) do {} while (0) +#define rtw_set_scan_deny(adapter, ms) do {} while (0) +#endif + + +extern int _rtw_init_mlme_priv(_adapter *padapter); + +void rtw_free_mlme_priv_ie_data(struct mlme_priv *pmlmepriv); + +extern void _rtw_free_mlme_priv(struct mlme_priv *pmlmepriv); + +extern int _rtw_enqueue_network(_queue *queue, struct wlan_network *pnetwork); + +extern struct wlan_network* _rtw_dequeue_network(_queue *queue); + +extern struct wlan_network* _rtw_alloc_network(struct mlme_priv *pmlmepriv); + + +extern void _rtw_free_network(struct mlme_priv *pmlmepriv, struct wlan_network *pnetwork, u8 isfreeall); +extern void _rtw_free_network_nolock(struct mlme_priv *pmlmepriv, struct wlan_network *pnetwork); + + +extern struct wlan_network* _rtw_find_network(_queue *scanned_queue, u8 *addr); + +extern void _rtw_free_network_queue(_adapter* padapter, u8 isfreeall); + +extern sint rtw_if_up(_adapter *padapter); + + +u8 *rtw_get_capability_from_ie(u8 *ie); +u8 *rtw_get_timestampe_from_ie(u8 *ie); +u8 *rtw_get_beacon_interval_from_ie(u8 *ie); + + +void rtw_joinbss_reset(_adapter *padapter); + +#ifdef CONFIG_80211N_HT +unsigned int rtw_restructure_ht_ie(_adapter *padapter, u8 *in_ie, u8 *out_ie, uint in_len, uint *pout_len, u8 channel); +void rtw_update_ht_cap(_adapter *padapter, u8 *pie, uint ie_len, u8 channel); +void rtw_issue_addbareq_cmd(_adapter *padapter, struct xmit_frame *pxmitframe); +#endif + +int rtw_is_same_ibss(_adapter *adapter, struct wlan_network *pnetwork); +int is_same_network(WLAN_BSSID_EX *src, WLAN_BSSID_EX *dst); + +#ifdef CONFIG_LAYER2_ROAMING +void _rtw_roaming(_adapter *adapter, struct wlan_network *tgt_network); +void rtw_roaming(_adapter *adapter, struct wlan_network *tgt_network); +void rtw_set_roaming(_adapter *adapter, u8 to_roaming); +u8 rtw_to_roaming(_adapter *adapter); +#else +#define _rtw_roaming(adapter, tgt_network) do {} while(0) +#define rtw_roaming(adapter, tgt_network) do {} while(0) +#define rtw_set_roaming(adapter, to_roaming) do {} while(0) +#define rtw_to_roaming(adapter) 0 +#endif + + +#ifdef CONFIG_INTEL_PROXIM +void rtw_proxim_enable(_adapter *padapter); +void rtw_proxim_disable(_adapter *padapter); +void rtw_proxim_send_packet(_adapter *padapter,u8 *pbuf,u16 len,u8 hw_rate); +#endif //CONFIG_INTEL_PROXIM +#endif //__RTL871X_MLME_H_ --- linux-raspi2-4.2.0.orig/drivers/net/wireless/rtl8192cu/include/rtw_mlme_ext.h +++ linux-raspi2-4.2.0/drivers/net/wireless/rtl8192cu/include/rtw_mlme_ext.h @@ -0,0 +1,962 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved. + * + * 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 + * published by the Free Software Foundation. + * + * 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 Street, Fifth Floor, Boston, MA 02110, USA + * + * + ******************************************************************************/ +#ifndef __RTW_MLME_EXT_H_ +#define __RTW_MLME_EXT_H_ + +#include +#include +#include +#include + + +// Commented by Albert 20101105 +// Increase the SURVEY_TO value from 100 to 150 ( 100ms to 150ms ) +// The Realtek 8188CE SoftAP will spend around 100ms to send the probe response after receiving the probe request. +// So, this driver tried to extend the dwell time for each scanning channel. +// This will increase the chance to receive the probe response from SoftAP. + +#define SURVEY_TO (100) +#define REAUTH_TO (300) //(50) +#define REASSOC_TO (300) //(50) +//#define DISCONNECT_TO (3000) +#define ADDBA_TO (2000) + +#define LINKED_TO (1) //unit:2 sec, 1x2=2 sec + +#define REAUTH_LIMIT (4) +#define REASSOC_LIMIT (4) +#define READDBA_LIMIT (2) + +//#define IOCMD_REG0 0x10250370 +//#define IOCMD_REG1 0x10250374 +//#define IOCMD_REG2 0x10250378 + +//#define FW_DYNAMIC_FUN_SWITCH 0x10250364 + +//#define WRITE_BB_CMD 0xF0000001 +//#define SET_CHANNEL_CMD 0xF3000000 +//#define UPDATE_RA_CMD 0xFD0000A2 + +#define DYNAMIC_FUNC_DISABLE (0x0) +#define DYNAMIC_FUNC_DIG BIT(0) +#define DYNAMIC_FUNC_HP BIT(1) +#define DYNAMIC_FUNC_SS BIT(2) //Tx Power Tracking +#define DYNAMIC_FUNC_BT BIT(3) +#define DYNAMIC_FUNC_ANT_DIV BIT(4) +#define DYNAMIC_FUNC_ADAPTIVITY BIT(5) + +#define _HW_STATE_NOLINK_ 0x00 +#define _HW_STATE_ADHOC_ 0x01 +#define _HW_STATE_STATION_ 0x02 +#define _HW_STATE_AP_ 0x03 + + +#define _1M_RATE_ 0 +#define _2M_RATE_ 1 +#define _5M_RATE_ 2 +#define _11M_RATE_ 3 +#define _6M_RATE_ 4 +#define _9M_RATE_ 5 +#define _12M_RATE_ 6 +#define _18M_RATE_ 7 +#define _24M_RATE_ 8 +#define _36M_RATE_ 9 +#define _48M_RATE_ 10 +#define _54M_RATE_ 11 + + +extern unsigned char RTW_WPA_OUI[]; +extern unsigned char WMM_OUI[]; +extern unsigned char WPS_OUI[]; +extern unsigned char WFD_OUI[]; +extern unsigned char P2P_OUI[]; + +extern unsigned char WMM_INFO_OUI[]; +extern unsigned char WMM_PARA_OUI[]; + + +// +// Channel Plan Type. +// Note: +// We just add new channel plan when the new channel plan is different from any of the following +// channel plan. +// If you just wnat to customize the acitions(scan period or join actions) about one of the channel plan, +// customize them in RT_CHANNEL_INFO in the RT_CHANNEL_LIST. +// +typedef enum _RT_CHANNEL_DOMAIN +{ + //===== old channel plan mapping =====// + RT_CHANNEL_DOMAIN_FCC = 0x00, + RT_CHANNEL_DOMAIN_IC = 0x01, + RT_CHANNEL_DOMAIN_ETSI = 0x02, + RT_CHANNEL_DOMAIN_SPAIN = 0x03, + RT_CHANNEL_DOMAIN_FRANCE = 0x04, + RT_CHANNEL_DOMAIN_MKK = 0x05, + RT_CHANNEL_DOMAIN_MKK1 = 0x06, + RT_CHANNEL_DOMAIN_ISRAEL = 0x07, + RT_CHANNEL_DOMAIN_TELEC = 0x08, + RT_CHANNEL_DOMAIN_GLOBAL_DOAMIN = 0x09, + RT_CHANNEL_DOMAIN_WORLD_WIDE_13 = 0x0A, + RT_CHANNEL_DOMAIN_TAIWAN = 0x0B, + RT_CHANNEL_DOMAIN_CHINA = 0x0C, + RT_CHANNEL_DOMAIN_SINGAPORE_INDIA_MEXICO = 0x0D, + RT_CHANNEL_DOMAIN_KOREA = 0x0E, + RT_CHANNEL_DOMAIN_TURKEY = 0x0F, + RT_CHANNEL_DOMAIN_JAPAN = 0x10, + RT_CHANNEL_DOMAIN_FCC_NO_DFS = 0x11, + RT_CHANNEL_DOMAIN_JAPAN_NO_DFS = 0x12, + RT_CHANNEL_DOMAIN_WORLD_WIDE_5G = 0x13, + RT_CHANNEL_DOMAIN_TAIWAN_NO_DFS = 0x14, + + //===== new channel plan mapping, (2GDOMAIN_5GDOMAIN) =====// + RT_CHANNEL_DOMAIN_WORLD_NULL = 0x20, + RT_CHANNEL_DOMAIN_ETSI1_NULL = 0x21, + RT_CHANNEL_DOMAIN_FCC1_NULL = 0x22, + RT_CHANNEL_DOMAIN_MKK1_NULL = 0x23, + RT_CHANNEL_DOMAIN_ETSI2_NULL = 0x24, + RT_CHANNEL_DOMAIN_FCC1_FCC1 = 0x25, + RT_CHANNEL_DOMAIN_WORLD_ETSI1 = 0x26, + RT_CHANNEL_DOMAIN_MKK1_MKK1 = 0x27, + RT_CHANNEL_DOMAIN_WORLD_KCC1 = 0x28, + RT_CHANNEL_DOMAIN_WORLD_FCC2 = 0x29, + RT_CHANNEL_DOMAIN_WORLD_FCC3 = 0x30, + RT_CHANNEL_DOMAIN_WORLD_FCC4 = 0x31, + RT_CHANNEL_DOMAIN_WORLD_FCC5 = 0x32, + RT_CHANNEL_DOMAIN_WORLD_FCC6 = 0x33, + RT_CHANNEL_DOMAIN_FCC1_FCC7 = 0x34, + RT_CHANNEL_DOMAIN_WORLD_ETSI2 = 0x35, + RT_CHANNEL_DOMAIN_WORLD_ETSI3 = 0x36, + RT_CHANNEL_DOMAIN_MKK1_MKK2 = 0x37, + RT_CHANNEL_DOMAIN_MKK1_MKK3 = 0x38, + RT_CHANNEL_DOMAIN_FCC1_NCC1 = 0x39, + RT_CHANNEL_DOMAIN_FCC1_NCC2 = 0x40, + + //===== Add new channel plan above this line===============// + RT_CHANNEL_DOMAIN_MAX, + RT_CHANNEL_DOMAIN_REALTEK_DEFINE = 0x7F, +}RT_CHANNEL_DOMAIN, *PRT_CHANNEL_DOMAIN; + +typedef enum _RT_CHANNEL_DOMAIN_2G +{ + RT_CHANNEL_DOMAIN_2G_WORLD = 0x00, //Worldwird 13 + RT_CHANNEL_DOMAIN_2G_ETSI1 = 0x01, //Europe + RT_CHANNEL_DOMAIN_2G_FCC1 = 0x02, //US + RT_CHANNEL_DOMAIN_2G_MKK1 = 0x03, //Japan + RT_CHANNEL_DOMAIN_2G_ETSI2 = 0x04, //France + RT_CHANNEL_DOMAIN_2G_NULL = 0x05, + //===== Add new channel plan above this line===============// + RT_CHANNEL_DOMAIN_2G_MAX, +}RT_CHANNEL_DOMAIN_2G, *PRT_CHANNEL_DOMAIN_2G; + +typedef enum _RT_CHANNEL_DOMAIN_5G +{ + RT_CHANNEL_DOMAIN_5G_NULL = 0x00, + RT_CHANNEL_DOMAIN_5G_ETSI1 = 0x01, //Europe + RT_CHANNEL_DOMAIN_5G_ETSI2 = 0x02, //Australia, New Zealand + RT_CHANNEL_DOMAIN_5G_ETSI3 = 0x03, //Russia + RT_CHANNEL_DOMAIN_5G_FCC1 = 0x04, //US + RT_CHANNEL_DOMAIN_5G_FCC2 = 0x05, //FCC o/w DFS Channels + RT_CHANNEL_DOMAIN_5G_FCC3 = 0x06, //India, Mexico + RT_CHANNEL_DOMAIN_5G_FCC4 = 0x07, //Venezuela + RT_CHANNEL_DOMAIN_5G_FCC5 = 0x08, //China + RT_CHANNEL_DOMAIN_5G_FCC6 = 0x09, //Israel + RT_CHANNEL_DOMAIN_5G_FCC7_IC1 = 0x0A, //US, Canada + RT_CHANNEL_DOMAIN_5G_KCC1 = 0x0B, //Korea + RT_CHANNEL_DOMAIN_5G_MKK1 = 0x0C, //Japan + RT_CHANNEL_DOMAIN_5G_MKK2 = 0x0D, //Japan (W52, W53) + RT_CHANNEL_DOMAIN_5G_MKK3 = 0x0E, //Japan (W56) + RT_CHANNEL_DOMAIN_5G_NCC1 = 0x0F, //Taiwan + RT_CHANNEL_DOMAIN_5G_NCC2 = 0x10, //Taiwan o/w DFS + //===== Add new channel plan above this line===============// + //===== Driver Self Defined =====// + RT_CHANNEL_DOMAIN_5G_FCC = 0x11, + RT_CHANNEL_DOMAIN_5G_JAPAN_NO_DFS = 0x12, + RT_CHANNEL_DOMAIN_5G_FCC4_NO_DFS = 0x13, + RT_CHANNEL_DOMAIN_5G_MAX, +}RT_CHANNEL_DOMAIN_5G, *PRT_CHANNEL_DOMAIN_5G; + +#define rtw_is_channel_plan_valid(chplan) (chplansurvey_timer, (ms)); \ + } while(0) + +#define set_link_timer(mlmeext, ms) \ + do { \ + /*DBG_871X("%s set_link_timer(%p, %d)\n", __FUNCTION__, (mlmeext), (ms));*/ \ + _set_timer(&(mlmeext)->link_timer, (ms)); \ + } while(0) +#ifdef CONFIG_IEEE80211W +#define set_sa_query_timer(mlmeext, ms) \ + do { \ + DBG_871X("%s set_sa_query_timer(%p, %d)\n", __FUNCTION__, (mlmeext), (ms)); \ + _set_timer(&(mlmeext)->sa_query_timer, (ms)); \ + } while(0) +#endif //CONFIG_IEEE80211W +extern int cckrates_included(unsigned char *rate, int ratelen); +extern int cckratesonly_included(unsigned char *rate, int ratelen); + +extern void process_addba_req(_adapter *padapter, u8 *paddba_req, u8 *addr); + +extern void update_TSF(struct mlme_ext_priv *pmlmeext, u8 *pframe, uint len); +extern void correct_TSF(_adapter *padapter, struct mlme_ext_priv *pmlmeext); + + +#ifdef CONFIG_CONCURRENT_MODE + sint check_buddy_mlmeinfo_state(_adapter *padapter, u32 state); +void concurrent_chk_joinbss_done(_adapter *padapter, int join_res); +#endif //CONFIG_CONCURRENT_MODE + +#ifdef CONFIG_DUALMAC_CONCURRENT +void dc_SelectChannel(_adapter *padapter, unsigned char channel); +void dc_SetBWMode(_adapter *padapter, unsigned short bwmode, unsigned char channel_offset); +void dc_set_channel_bwmode_disconnect(_adapter *padapter); +u8 dc_handle_join_request(_adapter *padapter); +void dc_handle_join_done(_adapter *padapter, u8 join_res); +sint dc_check_fwstate(_adapter *padapter, sint fw_state); +u8 dc_handle_site_survey(_adapter *padapter); +void dc_report_survey_event(_adapter *padapter, union recv_frame *precv_frame); +void dc_set_channel_bwmode_survey_done(_adapter *padapter); +void dc_set_ap_channel_bandwidth(_adapter *padapter, u8 channel, u8 channel_offset, u8 bwmode); +void dc_resume_xmit(_adapter *padapter); +u8 dc_check_xmit(_adapter *padapter); +#endif + +int rtw_chk_start_clnt_join(_adapter *padapter); +int rtw_get_ch_setting_union(_adapter *adapter, u8 *ch, u8 *bw, u8 *offset); + +struct cmd_hdl { + uint parmsize; + u8 (*h2cfuns)(struct _ADAPTER *padapter, u8 *pbuf); +}; + + +u8 read_macreg_hdl(_adapter *padapter, u8 *pbuf); +u8 write_macreg_hdl(_adapter *padapter, u8 *pbuf); +u8 read_bbreg_hdl(_adapter *padapter, u8 *pbuf); +u8 write_bbreg_hdl(_adapter *padapter, u8 *pbuf); +u8 read_rfreg_hdl(_adapter *padapter, u8 *pbuf); +u8 write_rfreg_hdl(_adapter *padapter, u8 *pbuf); + + +u8 NULL_hdl(_adapter *padapter, u8 *pbuf); +u8 join_cmd_hdl(_adapter *padapter, u8 *pbuf); +u8 disconnect_hdl(_adapter *padapter, u8 *pbuf); +u8 createbss_hdl(_adapter *padapter, u8 *pbuf); +u8 setopmode_hdl(_adapter *padapter, u8 *pbuf); +u8 sitesurvey_cmd_hdl(_adapter *padapter, u8 *pbuf); +u8 setauth_hdl(_adapter *padapter, u8 *pbuf); +u8 setkey_hdl(_adapter *padapter, u8 *pbuf); +u8 set_stakey_hdl(_adapter *padapter, u8 *pbuf); +u8 set_assocsta_hdl(_adapter *padapter, u8 *pbuf); +u8 del_assocsta_hdl(_adapter *padapter, u8 *pbuf); +u8 add_ba_hdl(_adapter *padapter, unsigned char *pbuf); + +u8 mlme_evt_hdl(_adapter *padapter, unsigned char *pbuf); +u8 h2c_msg_hdl(_adapter *padapter, unsigned char *pbuf); +u8 tx_beacon_hdl(_adapter *padapter, unsigned char *pbuf); +u8 set_ch_hdl(_adapter *padapter, u8 *pbuf); +u8 set_chplan_hdl(_adapter *padapter, unsigned char *pbuf); +u8 led_blink_hdl(_adapter *padapter, unsigned char *pbuf); +u8 set_csa_hdl(_adapter *padapter, unsigned char *pbuf); //Kurt: Handling DFS channel switch announcement ie. +u8 tdls_hdl(_adapter *padapter, unsigned char *pbuf); + + +#define GEN_DRV_CMD_HANDLER(size, cmd) {size, &cmd ## _hdl}, +#define GEN_MLME_EXT_HANDLER(size, cmd) {size, cmd}, + +#ifdef _RTW_CMD_C_ + +struct cmd_hdl wlancmds[] = +{ + GEN_DRV_CMD_HANDLER(0, NULL) /*0*/ + GEN_DRV_CMD_HANDLER(0, NULL) + GEN_DRV_CMD_HANDLER(0, NULL) + GEN_DRV_CMD_HANDLER(0, NULL) + GEN_DRV_CMD_HANDLER(0, NULL) + GEN_DRV_CMD_HANDLER(0, NULL) + GEN_MLME_EXT_HANDLER(0, NULL) + GEN_MLME_EXT_HANDLER(0, NULL) + GEN_MLME_EXT_HANDLER(0, NULL) + GEN_MLME_EXT_HANDLER(0, NULL) + GEN_MLME_EXT_HANDLER(0, NULL) /*10*/ + GEN_MLME_EXT_HANDLER(0, NULL) + GEN_MLME_EXT_HANDLER(0, NULL) + GEN_MLME_EXT_HANDLER(0, NULL) + GEN_MLME_EXT_HANDLER(sizeof (struct joinbss_parm), join_cmd_hdl) /*14*/ + GEN_MLME_EXT_HANDLER(sizeof (struct disconnect_parm), disconnect_hdl) + GEN_MLME_EXT_HANDLER(sizeof (struct createbss_parm), createbss_hdl) + GEN_MLME_EXT_HANDLER(sizeof (struct setopmode_parm), setopmode_hdl) + GEN_MLME_EXT_HANDLER(sizeof (struct sitesurvey_parm), sitesurvey_cmd_hdl) /*18*/ + GEN_MLME_EXT_HANDLER(sizeof (struct setauth_parm), setauth_hdl) + GEN_MLME_EXT_HANDLER(sizeof (struct setkey_parm), setkey_hdl) /*20*/ + GEN_MLME_EXT_HANDLER(sizeof (struct set_stakey_parm), set_stakey_hdl) + GEN_MLME_EXT_HANDLER(sizeof (struct set_assocsta_parm), NULL) + GEN_MLME_EXT_HANDLER(sizeof (struct del_assocsta_parm), NULL) + GEN_MLME_EXT_HANDLER(sizeof (struct setstapwrstate_parm), NULL) + GEN_MLME_EXT_HANDLER(sizeof (struct setbasicrate_parm), NULL) + GEN_MLME_EXT_HANDLER(sizeof (struct getbasicrate_parm), NULL) + GEN_MLME_EXT_HANDLER(sizeof (struct setdatarate_parm), NULL) + GEN_MLME_EXT_HANDLER(sizeof (struct getdatarate_parm), NULL) + GEN_MLME_EXT_HANDLER(sizeof (struct setphyinfo_parm), NULL) + GEN_MLME_EXT_HANDLER(sizeof (struct getphyinfo_parm), NULL) /*30*/ + GEN_MLME_EXT_HANDLER(sizeof (struct setphy_parm), NULL) + GEN_MLME_EXT_HANDLER(sizeof (struct getphy_parm), NULL) + GEN_MLME_EXT_HANDLER(0, NULL) + GEN_MLME_EXT_HANDLER(0, NULL) + GEN_MLME_EXT_HANDLER(0, NULL) + GEN_MLME_EXT_HANDLER(0, NULL) + GEN_MLME_EXT_HANDLER(0, NULL) + GEN_MLME_EXT_HANDLER(0, NULL) + GEN_MLME_EXT_HANDLER(0, NULL) + GEN_MLME_EXT_HANDLER(0, NULL) /*40*/ + GEN_MLME_EXT_HANDLER(0, NULL) + GEN_MLME_EXT_HANDLER(0, NULL) + GEN_MLME_EXT_HANDLER(0, NULL) + GEN_MLME_EXT_HANDLER(0, NULL) + GEN_MLME_EXT_HANDLER(sizeof(struct addBaReq_parm), add_ba_hdl) + GEN_MLME_EXT_HANDLER(sizeof(struct set_ch_parm), set_ch_hdl) /* 46 */ + GEN_MLME_EXT_HANDLER(0, NULL) + GEN_MLME_EXT_HANDLER(0, NULL) + GEN_MLME_EXT_HANDLER(0, NULL) + GEN_MLME_EXT_HANDLER(0, NULL) /*50*/ + GEN_MLME_EXT_HANDLER(0, NULL) + GEN_MLME_EXT_HANDLER(0, NULL) + GEN_MLME_EXT_HANDLER(0, NULL) + GEN_MLME_EXT_HANDLER(0, NULL) + GEN_MLME_EXT_HANDLER(sizeof(struct Tx_Beacon_param), tx_beacon_hdl) /*55*/ + + GEN_MLME_EXT_HANDLER(0, mlme_evt_hdl) /*56*/ + GEN_MLME_EXT_HANDLER(0, rtw_drvextra_cmd_hdl) /*57*/ + + GEN_MLME_EXT_HANDLER(0, h2c_msg_hdl) /*58*/ + GEN_MLME_EXT_HANDLER(sizeof(struct SetChannelPlan_param), set_chplan_hdl) /*59*/ + GEN_MLME_EXT_HANDLER(sizeof(struct LedBlink_param), led_blink_hdl) /*60*/ + GEN_MLME_EXT_HANDLER(sizeof(struct SetChannelSwitch_param), set_csa_hdl) /*61*/ + GEN_MLME_EXT_HANDLER(sizeof(struct TDLSoption_param), tdls_hdl) /*62*/ +}; + +#endif + +struct C2HEvent_Header +{ + +#ifdef CONFIG_LITTLE_ENDIAN + + unsigned int len:16; + unsigned int ID:8; + unsigned int seq:8; + +#elif defined(CONFIG_BIG_ENDIAN) + + unsigned int seq:8; + unsigned int ID:8; + unsigned int len:16; + +#else + +# error "Must be LITTLE or BIG Endian" + +#endif + + unsigned int rsvd; + +}; + +void rtw_dummy_event_callback(_adapter *adapter , u8 *pbuf); +void rtw_fwdbg_event_callback(_adapter *adapter , u8 *pbuf); + +enum rtw_c2h_event +{ + GEN_EVT_CODE(_Read_MACREG)=0, /*0*/ + GEN_EVT_CODE(_Read_BBREG), + GEN_EVT_CODE(_Read_RFREG), + GEN_EVT_CODE(_Read_EEPROM), + GEN_EVT_CODE(_Read_EFUSE), + GEN_EVT_CODE(_Read_CAM), /*5*/ + GEN_EVT_CODE(_Get_BasicRate), + GEN_EVT_CODE(_Get_DataRate), + GEN_EVT_CODE(_Survey), /*8*/ + GEN_EVT_CODE(_SurveyDone), /*9*/ + + GEN_EVT_CODE(_JoinBss) , /*10*/ + GEN_EVT_CODE(_AddSTA), + GEN_EVT_CODE(_DelSTA), + GEN_EVT_CODE(_AtimDone) , + GEN_EVT_CODE(_TX_Report), + GEN_EVT_CODE(_CCX_Report), /*15*/ + GEN_EVT_CODE(_DTM_Report), + GEN_EVT_CODE(_TX_Rate_Statistics), + GEN_EVT_CODE(_C2HLBK), + GEN_EVT_CODE(_FWDBG), + GEN_EVT_CODE(_C2HFEEDBACK), /*20*/ + GEN_EVT_CODE(_ADDBA), + GEN_EVT_CODE(_C2HBCN), + GEN_EVT_CODE(_ReportPwrState), //filen: only for PCIE, USB + GEN_EVT_CODE(_CloseRF), //filen: only for PCIE, work around ASPM + MAX_C2HEVT +}; + + +#ifdef _RTW_MLME_EXT_C_ + +static struct fwevent wlanevents[] = +{ + {0, rtw_dummy_event_callback}, /*0*/ + {0, NULL}, + {0, NULL}, + {0, NULL}, + {0, NULL}, + {0, NULL}, + {0, NULL}, + {0, NULL}, + {0, &rtw_survey_event_callback}, /*8*/ + {sizeof (struct surveydone_event), &rtw_surveydone_event_callback}, /*9*/ + + {0, &rtw_joinbss_event_callback}, /*10*/ + {sizeof(struct stassoc_event), &rtw_stassoc_event_callback}, + {sizeof(struct stadel_event), &rtw_stadel_event_callback}, + {0, &rtw_atimdone_event_callback}, + {0, rtw_dummy_event_callback}, + {0, NULL}, /*15*/ + {0, NULL}, + {0, NULL}, + {0, NULL}, + {0, rtw_fwdbg_event_callback}, + {0, NULL}, /*20*/ + {0, NULL}, + {0, NULL}, + {0, &rtw_cpwm_event_callback}, +}; + +#endif//_RTL8192C_CMD_C_ + +#endif --- linux-raspi2-4.2.0.orig/drivers/net/wireless/rtl8192cu/include/rtw_mp.h +++ linux-raspi2-4.2.0/drivers/net/wireless/rtl8192cu/include/rtw_mp.h @@ -0,0 +1,711 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved. + * + * 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 + * published by the Free Software Foundation. + * + * 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 Street, Fifth Floor, Boston, MA 02110, USA + * + * + ******************************************************************************/ +#ifndef _RTW_MP_H_ +#define _RTW_MP_H_ + +#ifndef PLATFORM_WINDOWS +// 00 - Success +// 11 - Error +#define STATUS_SUCCESS (0x00000000L) +#define STATUS_PENDING (0x00000103L) + +#define STATUS_UNSUCCESSFUL (0xC0000001L) +#define STATUS_INSUFFICIENT_RESOURCES (0xC000009AL) +#define STATUS_NOT_SUPPORTED (0xC00000BBL) + +#define NDIS_STATUS_SUCCESS ((NDIS_STATUS)STATUS_SUCCESS) +#define NDIS_STATUS_PENDING ((NDIS_STATUS)STATUS_PENDING) +#define NDIS_STATUS_NOT_RECOGNIZED ((NDIS_STATUS)0x00010001L) +#define NDIS_STATUS_NOT_COPIED ((NDIS_STATUS)0x00010002L) +#define NDIS_STATUS_NOT_ACCEPTED ((NDIS_STATUS)0x00010003L) +#define NDIS_STATUS_CALL_ACTIVE ((NDIS_STATUS)0x00010007L) + +#define NDIS_STATUS_FAILURE ((NDIS_STATUS)STATUS_UNSUCCESSFUL) +#define NDIS_STATUS_RESOURCES ((NDIS_STATUS)STATUS_INSUFFICIENT_RESOURCES) +#define NDIS_STATUS_CLOSING ((NDIS_STATUS)0xC0010002L) +#define NDIS_STATUS_BAD_VERSION ((NDIS_STATUS)0xC0010004L) +#define NDIS_STATUS_BAD_CHARACTERISTICS ((NDIS_STATUS)0xC0010005L) +#define NDIS_STATUS_ADAPTER_NOT_FOUND ((NDIS_STATUS)0xC0010006L) +#define NDIS_STATUS_OPEN_FAILED ((NDIS_STATUS)0xC0010007L) +#define NDIS_STATUS_DEVICE_FAILED ((NDIS_STATUS)0xC0010008L) +#define NDIS_STATUS_MULTICAST_FULL ((NDIS_STATUS)0xC0010009L) +#define NDIS_STATUS_MULTICAST_EXISTS ((NDIS_STATUS)0xC001000AL) +#define NDIS_STATUS_MULTICAST_NOT_FOUND ((NDIS_STATUS)0xC001000BL) +#define NDIS_STATUS_REQUEST_ABORTED ((NDIS_STATUS)0xC001000CL) +#define NDIS_STATUS_RESET_IN_PROGRESS ((NDIS_STATUS)0xC001000DL) +#define NDIS_STATUS_CLOSING_INDICATING ((NDIS_STATUS)0xC001000EL) +#define NDIS_STATUS_NOT_SUPPORTED ((NDIS_STATUS)STATUS_NOT_SUPPORTED) +#define NDIS_STATUS_INVALID_PACKET ((NDIS_STATUS)0xC001000FL) +#define NDIS_STATUS_OPEN_LIST_FULL ((NDIS_STATUS)0xC0010010L) +#define NDIS_STATUS_ADAPTER_NOT_READY ((NDIS_STATUS)0xC0010011L) +#define NDIS_STATUS_ADAPTER_NOT_OPEN ((NDIS_STATUS)0xC0010012L) +#define NDIS_STATUS_NOT_INDICATING ((NDIS_STATUS)0xC0010013L) +#define NDIS_STATUS_INVALID_LENGTH ((NDIS_STATUS)0xC0010014L) +#define NDIS_STATUS_INVALID_DATA ((NDIS_STATUS)0xC0010015L) +#define NDIS_STATUS_BUFFER_TOO_SHORT ((NDIS_STATUS)0xC0010016L) +#define NDIS_STATUS_INVALID_OID ((NDIS_STATUS)0xC0010017L) +#define NDIS_STATUS_ADAPTER_REMOVED ((NDIS_STATUS)0xC0010018L) +#define NDIS_STATUS_UNSUPPORTED_MEDIA ((NDIS_STATUS)0xC0010019L) +#define NDIS_STATUS_GROUP_ADDRESS_IN_USE ((NDIS_STATUS)0xC001001AL) +#define NDIS_STATUS_FILE_NOT_FOUND ((NDIS_STATUS)0xC001001BL) +#define NDIS_STATUS_ERROR_READING_FILE ((NDIS_STATUS)0xC001001CL) +#define NDIS_STATUS_ALREADY_MAPPED ((NDIS_STATUS)0xC001001DL) +#define NDIS_STATUS_RESOURCE_CONFLICT ((NDIS_STATUS)0xC001001EL) +#define NDIS_STATUS_NO_CABLE ((NDIS_STATUS)0xC001001FL) + +#define NDIS_STATUS_INVALID_SAP ((NDIS_STATUS)0xC0010020L) +#define NDIS_STATUS_SAP_IN_USE ((NDIS_STATUS)0xC0010021L) +#define NDIS_STATUS_INVALID_ADDRESS ((NDIS_STATUS)0xC0010022L) +#define NDIS_STATUS_VC_NOT_ACTIVATED ((NDIS_STATUS)0xC0010023L) +#define NDIS_STATUS_DEST_OUT_OF_ORDER ((NDIS_STATUS)0xC0010024L) // cause 27 +#define NDIS_STATUS_VC_NOT_AVAILABLE ((NDIS_STATUS)0xC0010025L) // cause 35,45 +#define NDIS_STATUS_CELLRATE_NOT_AVAILABLE ((NDIS_STATUS)0xC0010026L) // cause 37 +#define NDIS_STATUS_INCOMPATABLE_QOS ((NDIS_STATUS)0xC0010027L) // cause 49 +#define NDIS_STATUS_AAL_PARAMS_UNSUPPORTED ((NDIS_STATUS)0xC0010028L) // cause 93 +#define NDIS_STATUS_NO_ROUTE_TO_DESTINATION ((NDIS_STATUS)0xC0010029L) // cause 3 +#endif /* #ifndef PLATFORM_WINDOWS */ + +#if 0 +#define MPT_NOOP 0 +#define MPT_READ_MAC_1BYTE 1 +#define MPT_READ_MAC_2BYTE 2 +#define MPT_READ_MAC_4BYTE 3 +#define MPT_WRITE_MAC_1BYTE 4 +#define MPT_WRITE_MAC_2BYTE 5 +#define MPT_WRITE_MAC_4BYTE 6 +#define MPT_READ_BB_CCK 7 +#define MPT_WRITE_BB_CCK 8 +#define MPT_READ_BB_OFDM 9 +#define MPT_WRITE_BB_OFDM 10 +#define MPT_READ_RF 11 +#define MPT_WRITE_RF 12 +#define MPT_READ_EEPROM_1BYTE 13 +#define MPT_WRITE_EEPROM_1BYTE 14 +#define MPT_READ_EEPROM_2BYTE 15 +#define MPT_WRITE_EEPROM_2BYTE 16 +#define MPT_SET_CSTHRESHOLD 21 +#define MPT_SET_INITGAIN 22 +#define MPT_SWITCH_BAND 23 +#define MPT_SWITCH_CHANNEL 24 +#define MPT_SET_DATARATE 25 +#define MPT_SWITCH_ANTENNA 26 +#define MPT_SET_TX_POWER 27 +#define MPT_SET_CONT_TX 28 +#define MPT_SET_SINGLE_CARRIER 29 +#define MPT_SET_CARRIER_SUPPRESSION 30 +#define MPT_GET_RATE_TABLE 31 +#define MPT_READ_TSSI 32 +#define MPT_GET_THERMAL_METER 33 +#endif + +#define MAX_MP_XMITBUF_SZ 2048 +#define NR_MP_XMITFRAME 8 + +struct mp_xmit_frame +{ + _list list; + + struct pkt_attrib attrib; + + _pkt *pkt; + + int frame_tag; + + _adapter *padapter; + +#ifdef CONFIG_USB_HCI + + //insert urb, irp, and irpcnt info below... + //max frag_cnt = 8 + + u8 *mem_addr; + u32 sz[8]; + +#if defined(PLATFORM_OS_XP) || defined(PLATFORM_LINUX) + PURB pxmit_urb[8]; +#endif + +#ifdef PLATFORM_OS_XP + PIRP pxmit_irp[8]; +#endif + + u8 bpending[8]; + sint ac_tag[8]; + sint last[8]; + uint irpcnt; + uint fragcnt; +#endif /* CONFIG_USB_HCI */ + + uint mem[(MAX_MP_XMITBUF_SZ >> 2)]; +}; + +struct mp_wiparam +{ + u32 bcompleted; + u32 act_type; + u32 io_offset; + u32 io_value; +}; + +typedef void(*wi_act_func)(void* padapter); + +#ifdef PLATFORM_WINDOWS +struct mp_wi_cntx +{ + u8 bmpdrv_unload; + + // Work Item + NDIS_WORK_ITEM mp_wi; + NDIS_EVENT mp_wi_evt; + _lock mp_wi_lock; + u8 bmp_wi_progress; + wi_act_func curractfunc; + // Variable needed in each implementation of CurrActFunc. + struct mp_wiparam param; +}; +#endif + +struct mp_tx +{ + u8 stop; + u32 count, sended; + u8 payload; + struct pkt_attrib attrib; + struct tx_desc desc; + u8 *pallocated_buf; + u8 *buf; + u32 buf_size, write_size; + _thread_hdl_ PktTxThread; +}; + +//#if (MP_DRIVER == 1) +#if defined(CONFIG_RTL8192C) || defined(CONFIG_RTL8192D) || defined(CONFIG_RTL8723A) || defined(CONFIG_RTL8188E) +#ifdef CONFIG_RTL8192C +#include +#endif +#ifdef CONFIG_RTL8192D +#include +#endif +#ifdef CONFIG_RTL8723A +#include +#endif +#ifdef CONFIG_RTL8188E +#include +#endif +#define MP_MAX_LINES 1000 +#define MP_MAX_LINES_BYTES 256 +#define u1Byte u8 +#define s1Byte s8 +#define u4Byte u32 +#define s4Byte s32 +typedef VOID (*MPT_WORK_ITEM_HANDLER)(IN PVOID Adapter); +typedef struct _MPT_CONTEXT +{ + // Indicate if we have started Mass Production Test. + BOOLEAN bMassProdTest; + + // Indicate if the driver is unloading or unloaded. + BOOLEAN bMptDrvUnload; + + /* 8190 PCI does not support NDIS_WORK_ITEM. */ + // Work Item for Mass Production Test. + //NDIS_WORK_ITEM MptWorkItem; +// RT_WORK_ITEM MptWorkItem; + // Event used to sync the case unloading driver and MptWorkItem is still in progress. +// NDIS_EVENT MptWorkItemEvent; + // To protect the following variables. +// NDIS_SPIN_LOCK MptWorkItemSpinLock; + // Indicate a MptWorkItem is scheduled and not yet finished. + BOOLEAN bMptWorkItemInProgress; + // An instance which implements function and context of MptWorkItem. + MPT_WORK_ITEM_HANDLER CurrMptAct; + + // 1=Start, 0=Stop from UI. + ULONG MptTestStart; + // _TEST_MODE, defined in MPT_Req2.h + ULONG MptTestItem; + // Variable needed in each implementation of CurrMptAct. + ULONG MptActType; // Type of action performed in CurrMptAct. + // The Offset of IO operation is depend of MptActType. + ULONG MptIoOffset; + // The Value of IO operation is depend of MptActType. + ULONG MptIoValue; + // The RfPath of IO operation is depend of MptActType. + ULONG MptRfPath; + + WIRELESS_MODE MptWirelessModeToSw; // Wireless mode to switch. + u8 MptChannelToSw; // Channel to switch. + u8 MptInitGainToSet; // Initial gain to set. + //ULONG bMptAntennaA; // TRUE if we want to use antenna A. + ULONG MptBandWidth; // bandwidth to switch. + ULONG MptRateIndex; // rate index. + // Register value kept for Single Carrier Tx test. + u8 btMpCckTxPower; + // Register value kept for Single Carrier Tx test. + u8 btMpOfdmTxPower; + // For MP Tx Power index + u8 TxPwrLevel[2]; // rf-A, rf-B + + // Content of RCR Regsiter for Mass Production Test. + ULONG MptRCR; + // TRUE if we only receive packets with specific pattern. + BOOLEAN bMptFilterPattern; + // Rx OK count, statistics used in Mass Production Test. + ULONG MptRxOkCnt; + // Rx CRC32 error count, statistics used in Mass Production Test. + ULONG MptRxCrcErrCnt; + + BOOLEAN bCckContTx; // TRUE if we are in CCK Continuous Tx test. + BOOLEAN bOfdmContTx; // TRUE if we are in OFDM Continuous Tx test. + BOOLEAN bStartContTx; // TRUE if we have start Continuous Tx test. + // TRUE if we are in Single Carrier Tx test. + BOOLEAN bSingleCarrier; + // TRUE if we are in Carrier Suppression Tx Test. + BOOLEAN bCarrierSuppression; + //TRUE if we are in Single Tone Tx test. + BOOLEAN bSingleTone; + + // ACK counter asked by K.Y.. + BOOLEAN bMptEnableAckCounter; + ULONG MptAckCounter; + + // SD3 Willis For 8192S to save 1T/2T RF table for ACUT Only fro ACUT delete later ~~~! + //s1Byte BufOfLines[2][MAX_LINES_HWCONFIG_TXT][MAX_BYTES_LINE_HWCONFIG_TXT]; + //s1Byte BufOfLines[2][MP_MAX_LINES][MP_MAX_LINES_BYTES]; + //s4Byte RfReadLine[2]; + + u8 APK_bound[2]; //for APK path A/path B + BOOLEAN bMptIndexEven; + + u8 backup0xc50; + u8 backup0xc58; + u8 backup0xc30; +}MPT_CONTEXT, *PMPT_CONTEXT; +#endif +//#endif + +/* E-Fuse */ +#ifdef CONFIG_RTL8192D +#define EFUSE_MAP_SIZE 255 +#endif +#ifdef CONFIG_RTL8192C +#define EFUSE_MAP_SIZE 128 +#endif +#ifdef CONFIG_RTL8723A +#define EFUSE_MAP_SIZE 256 +#endif +#ifdef CONFIG_RTL8188E +#define EFUSE_MAP_SIZE 256 +#endif +#define EFUSE_MAX_SIZE 512 + +/* end of E-Fuse */ + +//#define RTPRIV_IOCTL_MP ( SIOCIWFIRSTPRIV + 0x17) +enum { + WRITE_REG = 1, + READ_REG, + WRITE_RF, + READ_RF, + MP_START, + MP_STOP, + MP_RATE, + MP_CHANNEL, + MP_BANDWIDTH, + MP_TXPOWER, + MP_ANT_TX, + MP_ANT_RX, + MP_CTX, + MP_QUERY, + MP_ARX, + MP_PSD, + MP_PWRTRK, + MP_THER, + MP_IOCTL, + EFUSE_GET, + EFUSE_SET, + MP_RESET_STATS, + MP_DUMP, + MP_PHYPARA, + MP_NULL, +}; + +struct mp_priv +{ + _adapter *papdater; + + //Testing Flag + u32 mode;//0 for normal type packet, 1 for loopback packet (16bytes TXCMD) + + u32 prev_fw_state; + + //OID cmd handler + struct mp_wiparam workparam; +// u8 act_in_progress; + + //Tx Section + u8 TID; + u32 tx_pktcount; + struct mp_tx tx; + + //Rx Section + u32 rx_pktcount; + u32 rx_crcerrpktcount; + u32 rx_pktloss; + + struct recv_stat rxstat; + + //RF/BB relative + u8 channel; + u8 bandwidth; + u8 prime_channel_offset; + u8 txpoweridx; + u8 txpoweridx_b; + u8 rateidx; + u32 preamble; +// u8 modem; + u32 CrystalCap; +// u32 curr_crystalcap; + + u16 antenna_tx; + u16 antenna_rx; +// u8 curr_rfpath; + + u8 check_mp_pkt; + +// uint ForcedDataRate; + + struct wlan_network mp_network; + NDIS_802_11_MAC_ADDRESS network_macaddr; + +#ifdef PLATFORM_WINDOWS + u32 rx_testcnt; + u32 rx_testcnt1; + u32 rx_testcnt2; + u32 tx_testcnt; + u32 tx_testcnt1; + + struct mp_wi_cntx wi_cntx; + + u8 h2c_result; + u8 h2c_seqnum; + u16 h2c_cmdcode; + u8 h2c_resp_parambuf[512]; + _lock h2c_lock; + _lock wkitm_lock; + u32 h2c_cmdcnt; + NDIS_EVENT h2c_cmd_evt; + NDIS_EVENT c2h_set; + NDIS_EVENT h2c_clr; + NDIS_EVENT cpwm_int; + + NDIS_EVENT scsir_full_evt; + NDIS_EVENT scsiw_empty_evt; +#endif + + u8 *pallocated_mp_xmitframe_buf; + u8 *pmp_xmtframe_buf; + _queue free_mp_xmitqueue; + u32 free_mp_xmitframe_cnt; + + MPT_CONTEXT MptCtx; +}; + +typedef struct _IOCMD_STRUCT_ { + u8 cmdclass; + u16 value; + u8 index; +}IOCMD_STRUCT; + +struct rf_reg_param { + u32 path; + u32 offset; + u32 value; +}; + +struct bb_reg_param { + u32 offset; + u32 value; +}; +//======================================================================= + +#define LOWER _TRUE +#define RAISE _FALSE + +/* Hardware Registers */ +#if 0 +#if 0 +#define IOCMD_CTRL_REG 0x102502C0 +#define IOCMD_DATA_REG 0x102502C4 +#else +#define IOCMD_CTRL_REG 0x10250370 +#define IOCMD_DATA_REG 0x10250374 +#endif + +#define IOCMD_GET_THERMAL_METER 0xFD000028 + +#define IOCMD_CLASS_BB_RF 0xF0 +#define IOCMD_BB_READ_IDX 0x00 +#define IOCMD_BB_WRITE_IDX 0x01 +#define IOCMD_RF_READ_IDX 0x02 +#define IOCMD_RF_WRIT_IDX 0x03 +#endif +#define BB_REG_BASE_ADDR 0x800 + +/* MP variables */ +#if 0 +#define _2MAC_MODE_ 0 +#define _LOOPBOOK_MODE_ 1 +#endif +typedef enum _MP_MODE_ { + MP_OFF, + MP_ON, + MP_ERR, + MP_CONTINUOUS_TX, + MP_SINGLE_CARRIER_TX, + MP_CARRIER_SUPPRISSION_TX, + MP_SINGLE_TONE_TX, + MP_PACKET_TX, + MP_PACKET_RX +} MP_MODE; + +#ifdef CONFIG_RTL8192C +#define RF_PATH_A RF_PATH_A +#define RF_PATH_B RF_PATH_B +#define RF_PATH_C RF_PATH_C +#define RF_PATH_D RF_PATH_D + +#define MAX_RF_PATH_NUMS RF_PATH_MAX +#else +#define RF_PATH_A 0 +#define RF_PATH_B 1 +#define RF_PATH_C 2 +#define RF_PATH_D 3 + +#define MAX_RF_PATH_NUMS 2 +#endif + +extern u8 mpdatarate[NumRates]; + +/* MP set force data rate base on the definition. */ +typedef enum _MPT_RATE_INDEX +{ + /* CCK rate. */ + MPT_RATE_1M, /* 0 */ + MPT_RATE_2M, + MPT_RATE_55M, + MPT_RATE_11M, /* 3 */ + + /* OFDM rate. */ + MPT_RATE_6M, /* 4 */ + MPT_RATE_9M, + MPT_RATE_12M, + MPT_RATE_18M, + MPT_RATE_24M, + MPT_RATE_36M, + MPT_RATE_48M, + MPT_RATE_54M, /* 11 */ + + /* HT rate. */ + MPT_RATE_MCS0, /* 12 */ + MPT_RATE_MCS1, + MPT_RATE_MCS2, + MPT_RATE_MCS3, + MPT_RATE_MCS4, + MPT_RATE_MCS5, + MPT_RATE_MCS6, + MPT_RATE_MCS7, /* 19 */ + MPT_RATE_MCS8, + MPT_RATE_MCS9, + MPT_RATE_MCS10, + MPT_RATE_MCS11, + MPT_RATE_MCS12, + MPT_RATE_MCS13, + MPT_RATE_MCS14, + MPT_RATE_MCS15, /* 27 */ + MPT_RATE_LAST +}MPT_RATE_E, *PMPT_RATE_E; + +#if 0 +// Represent Channel Width in HT Capabilities +typedef enum _HT_CHANNEL_WIDTH { + HT_CHANNEL_WIDTH_20 = 0, + HT_CHANNEL_WIDTH_40 = 1, +}HT_CHANNEL_WIDTH, *PHT_CHANNEL_WIDTH; +#endif + +#define MAX_TX_PWR_INDEX_N_MODE 64 // 0x3F + +typedef enum _POWER_MODE_ { + POWER_LOW = 0, + POWER_NORMAL +}POWER_MODE; + + +#define RX_PKT_BROADCAST 1 +#define RX_PKT_DEST_ADDR 2 +#define RX_PKT_PHY_MATCH 3 + +#if 0 +#define RPTMaxCount 0x000FFFFF; + +// parameter 1 : BitMask +// bit 0 : OFDM PPDU +// bit 1 : OFDM False Alarm +// bit 2 : OFDM MPDU OK +// bit 3 : OFDM MPDU Fail +// bit 4 : CCK PPDU +// bit 5 : CCK False Alarm +// bit 6 : CCK MPDU ok +// bit 7 : CCK MPDU fail +// bit 8 : HT PPDU counter +// bit 9 : HT false alarm +// bit 10 : HT MPDU total +// bit 11 : HT MPDU OK +// bit 12 : HT MPDU fail +// bit 15 : RX full drop +typedef enum _RXPHY_BITMASK_ +{ + OFDM_PPDU_BIT = 0, + OFDM_FALSE_BIT, + OFDM_MPDU_OK_BIT, + OFDM_MPDU_FAIL_BIT, + CCK_PPDU_BIT, + CCK_FALSE_BIT, + CCK_MPDU_OK_BIT, + CCK_MPDU_FAIL_BIT, + HT_PPDU_BIT, + HT_FALSE_BIT, + HT_MPDU_BIT, + HT_MPDU_OK_BIT, + HT_MPDU_FAIL_BIT, +} RXPHY_BITMASK; +#endif + +typedef enum _ENCRY_CTRL_STATE_ { + HW_CONTROL, //hw encryption& decryption + SW_CONTROL, //sw encryption& decryption + HW_ENCRY_SW_DECRY, //hw encryption & sw decryption + SW_ENCRY_HW_DECRY //sw encryption & hw decryption +}ENCRY_CTRL_STATE; + +typedef enum _OFDM_TX_MODE { + OFDM_ALL_OFF = 0, + OFDM_ContinuousTx = 1, + OFDM_SingleCarrier = 2, + OFDM_SingleTone = 4, +} OFDM_TX_MODE; + +//======================================================================= +//extern struct mp_xmit_frame *alloc_mp_xmitframe(struct mp_priv *pmp_priv); +//extern int free_mp_xmitframe(struct xmit_priv *pxmitpriv, struct mp_xmit_frame *pmp_xmitframe); + +extern s32 init_mp_priv(PADAPTER padapter); +extern void free_mp_priv(struct mp_priv *pmp_priv); +extern s32 MPT_InitializeAdapter(PADAPTER padapter, u8 Channel); +extern void MPT_DeInitAdapter(PADAPTER padapter); +extern s32 mp_start_test(PADAPTER padapter); +extern void mp_stop_test(PADAPTER padapter); + +//======================================================================= +//extern void IQCalibrateBcut(PADAPTER pAdapter); + +//extern u32 bb_reg_read(PADAPTER Adapter, u16 offset); +//extern u8 bb_reg_write(PADAPTER Adapter, u16 offset, u32 value); +//extern u32 rf_reg_read(PADAPTER Adapter, u8 path, u8 offset); +//extern u8 rf_reg_write(PADAPTER Adapter, u8 path, u8 offset, u32 value); + +//extern u32 get_bb_reg(PADAPTER Adapter, u16 offset, u32 bitmask); +//extern u8 set_bb_reg(PADAPTER Adapter, u16 offset, u32 bitmask, u32 value); +//extern u32 get_rf_reg(PADAPTER Adapter, u8 path, u8 offset, u32 bitmask); +//extern u8 set_rf_reg(PADAPTER Adapter, u8 path, u8 offset, u32 bitmask, u32 value); + +extern u32 _read_rfreg(PADAPTER padapter, u8 rfpath, u32 addr, u32 bitmask); +extern void _write_rfreg(PADAPTER padapter, u8 rfpath, u32 addr, u32 bitmask, u32 val); + +extern u32 read_macreg(_adapter *padapter, u32 addr, u32 sz); +extern void write_macreg(_adapter *padapter, u32 addr, u32 val, u32 sz); +extern u32 read_bbreg(_adapter *padapter, u32 addr, u32 bitmask); +extern void write_bbreg(_adapter *padapter, u32 addr, u32 bitmask, u32 val); +extern u32 read_rfreg(PADAPTER padapter, u8 rfpath, u32 addr); +extern void write_rfreg(PADAPTER padapter, u8 rfpath, u32 addr, u32 val); + +extern void SetChannel(PADAPTER pAdapter); +extern void SetBandwidth(PADAPTER pAdapter); +extern void SetTxPower(PADAPTER pAdapter); +extern void SetAntennaPathPower(PADAPTER pAdapter); +//extern void SetTxAGCOffset(PADAPTER pAdapter, u32 ulTxAGCOffset); +extern void SetDataRate(PADAPTER pAdapter); + +extern void SetAntenna(PADAPTER pAdapter); + +//extern void SetCrystalCap(PADAPTER pAdapter); + +extern s32 SetThermalMeter(PADAPTER pAdapter, u8 target_ther); +extern void GetThermalMeter(PADAPTER pAdapter, u8 *value); + +extern void SetContinuousTx(PADAPTER pAdapter, u8 bStart); +extern void SetSingleCarrierTx(PADAPTER pAdapter, u8 bStart); +extern void SetSingleToneTx(PADAPTER pAdapter, u8 bStart); +extern void SetCarrierSuppressionTx(PADAPTER pAdapter, u8 bStart); + +extern void fill_txdesc_for_mp(PADAPTER padapter, struct tx_desc *ptxdesc); +extern void SetPacketTx(PADAPTER padapter); +extern void SetPacketRx(PADAPTER pAdapter, u8 bStartRx); + +extern void ResetPhyRxPktCount(PADAPTER pAdapter); +extern u32 GetPhyRxPktReceived(PADAPTER pAdapter); +extern u32 GetPhyRxPktCRC32Error(PADAPTER pAdapter); + +extern s32 SetPowerTracking(PADAPTER padapter, u8 enable); +extern void GetPowerTracking(PADAPTER padapter, u8 *enable); + +extern u32 mp_query_psd(PADAPTER pAdapter, u8 *data); + + +extern void Hal_SetAntenna(PADAPTER pAdapter); +extern void Hal_SetBandwidth(PADAPTER pAdapter); + +extern void Hal_SetTxPower(PADAPTER pAdapter); +extern void Hal_SetCarrierSuppressionTx(PADAPTER pAdapter, u8 bStart); +extern void Hal_SetSingleToneTx ( PADAPTER pAdapter , u8 bStart ); +extern void Hal_SetSingleCarrierTx (PADAPTER pAdapter, u8 bStart); +extern void Hal_SetContinuousTx (PADAPTER pAdapter, u8 bStart); +extern void Hal_SetBandwidth(PADAPTER pAdapter); + +extern void Hal_SetDataRate(PADAPTER pAdapter); +extern void Hal_SetChannel(PADAPTER pAdapter); +extern void Hal_SetAntennaPathPower(PADAPTER pAdapter); +extern s32 Hal_SetThermalMeter(PADAPTER pAdapter, u8 target_ther); +extern s32 Hal_SetPowerTracking(PADAPTER padapter, u8 enable); +extern void Hal_GetPowerTracking(PADAPTER padapter, u8 * enable); +extern void Hal_GetThermalMeter(PADAPTER pAdapter, u8 *value); +extern void Hal_mpt_SwitchRfSetting(PADAPTER pAdapter); +extern void Hal_MPT_CCKTxPowerAdjust(PADAPTER Adapter, BOOLEAN bInCH14); +extern void Hal_MPT_CCKTxPowerAdjustbyIndex(PADAPTER pAdapter, BOOLEAN beven); +extern void Hal_SetCCKTxPower(PADAPTER pAdapter, u8 * TxPower); +extern void Hal_SetOFDMTxPower(PADAPTER pAdapter, u8 * TxPower); +extern void Hal_TriggerRFThermalMeter(PADAPTER pAdapter); +extern u8 Hal_ReadRFThermalMeter(PADAPTER pAdapter); +extern void Hal_SetCCKContinuousTx(PADAPTER pAdapter, u8 bStart); +extern void Hal_SetOFDMContinuousTx(PADAPTER pAdapter, u8 bStart); +extern void Hal_ProSetCrystalCap (PADAPTER pAdapter , u32 CrystalCapVal); + +#endif //_RTW_MP_H_ --- linux-raspi2-4.2.0.orig/drivers/net/wireless/rtl8192cu/include/rtw_mp_ioctl.h +++ linux-raspi2-4.2.0/drivers/net/wireless/rtl8192cu/include/rtw_mp_ioctl.h @@ -0,0 +1,595 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved. + * + * 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 + * published by the Free Software Foundation. + * + * 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 Street, Fifth Floor, Boston, MA 02110, USA + * + * + ******************************************************************************/ +#ifndef _RTW_MP_IOCTL_H_ +#define _RTW_MP_IOCTL_H_ + +//#include +//#include +#include +#include +#include +#include +#include +#include + +#if 0 +#define TESTFWCMDNUMBER 1000000 +#define TEST_H2CINT_WAIT_TIME 500 +#define TEST_C2HINT_WAIT_TIME 500 +#define HCI_TEST_SYSCFG_HWMASK 1 +#define _BUSCLK_40M (4 << 2) +#endif +//------------------------------------------------------------------------------ +typedef struct CFG_DBG_MSG_STRUCT { + u32 DebugLevel; + u32 DebugComponent_H32; + u32 DebugComponent_L32; +}CFG_DBG_MSG_STRUCT,*PCFG_DBG_MSG_STRUCT; + +typedef struct _RW_REG { + u32 offset; + u32 width; + u32 value; +}mp_rw_reg,RW_Reg, *pRW_Reg; + +//for OID_RT_PRO_READ16_EEPROM & OID_RT_PRO_WRITE16_EEPROM +typedef struct _EEPROM_RW_PARAM { + u32 offset; + u16 value; +}eeprom_rw_param,EEPROM_RWParam, *pEEPROM_RWParam; + +typedef struct _EFUSE_ACCESS_STRUCT_ { + u16 start_addr; + u16 cnts; + u8 data[0]; +}EFUSE_ACCESS_STRUCT, *PEFUSE_ACCESS_STRUCT; + +typedef struct _BURST_RW_REG { + u32 offset; + u32 len; + u8 Data[256]; +}burst_rw_reg,Burst_RW_Reg, *pBurst_RW_Reg; + +typedef struct _USB_VendorReq{ + u8 bRequest; + u16 wValue; + u16 wIndex; + u16 wLength; + u8 u8Dir;//0:OUT, 1:IN + u8 u8InData; +}usb_vendor_req, USB_VendorReq, *pUSB_VendorReq; + +typedef struct _DR_VARIABLE_STRUCT_ { + u8 offset; + u32 variable; +}DR_VARIABLE_STRUCT; + +//int mp_start_joinbss(_adapter *padapter, NDIS_802_11_SSID *pssid); + +//void _irqlevel_changed_(_irqL *irqlevel, /*BOOLEAN*/unsigned char bLower); +#ifdef PLATFORM_OS_XP +static void _irqlevel_changed_(_irqL *irqlevel, u8 bLower) +{ + + if (bLower == LOWER) { + *irqlevel = KeGetCurrentIrql(); + + if (*irqlevel > PASSIVE_LEVEL) { + KeLowerIrql(PASSIVE_LEVEL); + } + } else { + if (KeGetCurrentIrql() == PASSIVE_LEVEL) { + KeRaiseIrql(DISPATCH_LEVEL, irqlevel); + } + } + +} +#else +#define _irqlevel_changed_(a,b) +#endif + +//oid_rtl_seg_81_80_00 +NDIS_STATUS oid_rt_pro_set_data_rate_hdl(struct oid_par_priv* poid_par_priv); +NDIS_STATUS oid_rt_pro_start_test_hdl(struct oid_par_priv* poid_par_priv); +NDIS_STATUS oid_rt_pro_stop_test_hdl(struct oid_par_priv* poid_par_priv); +NDIS_STATUS oid_rt_pro_set_channel_direct_call_hdl(struct oid_par_priv* poid_par_priv); +NDIS_STATUS oid_rt_pro_set_antenna_bb_hdl(struct oid_par_priv* poid_par_priv); +NDIS_STATUS oid_rt_pro_set_tx_power_control_hdl(struct oid_par_priv* poid_par_priv); +//oid_rtl_seg_81_80_20 +NDIS_STATUS oid_rt_pro_query_tx_packet_sent_hdl(struct oid_par_priv* poid_par_priv); +NDIS_STATUS oid_rt_pro_query_rx_packet_received_hdl(struct oid_par_priv* poid_par_priv); +NDIS_STATUS oid_rt_pro_query_rx_packet_crc32_error_hdl(struct oid_par_priv* poid_par_priv); + +NDIS_STATUS oid_rt_pro_reset_tx_packet_sent_hdl(struct oid_par_priv* poid_par_priv); +NDIS_STATUS oid_rt_pro_reset_rx_packet_received_hdl(struct oid_par_priv* poid_par_priv); +NDIS_STATUS oid_rt_pro_set_modulation_hdl(struct oid_par_priv* poid_par_priv); + +NDIS_STATUS oid_rt_pro_set_continuous_tx_hdl(struct oid_par_priv* poid_par_priv); +NDIS_STATUS oid_rt_pro_set_single_carrier_tx_hdl(struct oid_par_priv* poid_par_priv); +NDIS_STATUS oid_rt_pro_set_carrier_suppression_tx_hdl(struct oid_par_priv* poid_par_priv); +NDIS_STATUS oid_rt_pro_set_single_tone_tx_hdl(struct oid_par_priv* poid_par_priv); + + +//oid_rtl_seg_81_87 +NDIS_STATUS oid_rt_pro_write_bb_reg_hdl(struct oid_par_priv* poid_par_priv); +NDIS_STATUS oid_rt_pro_read_bb_reg_hdl(struct oid_par_priv* poid_par_priv); + +NDIS_STATUS oid_rt_pro_write_rf_reg_hdl(struct oid_par_priv* poid_par_priv); +NDIS_STATUS oid_rt_pro_read_rf_reg_hdl(struct oid_par_priv* poid_par_priv); + + +//oid_rtl_seg_81_85 +NDIS_STATUS oid_rt_wireless_mode_hdl(struct oid_par_priv* poid_par_priv); + + +// oid_rtl_seg_87_11_00 +NDIS_STATUS oid_rt_pro8711_join_bss_hdl(struct oid_par_priv* poid_par_priv); +NDIS_STATUS oid_rt_pro_read_register_hdl(struct oid_par_priv* poid_par_priv); +NDIS_STATUS oid_rt_pro_write_register_hdl(struct oid_par_priv* poid_par_priv); +NDIS_STATUS oid_rt_pro_burst_read_register_hdl(struct oid_par_priv* poid_par_priv); +NDIS_STATUS oid_rt_pro_burst_write_register_hdl(struct oid_par_priv* poid_par_priv); +NDIS_STATUS oid_rt_pro_write_txcmd_hdl(struct oid_par_priv* poid_par_priv); +NDIS_STATUS oid_rt_pro_read16_eeprom_hdl(struct oid_par_priv* poid_par_priv); +NDIS_STATUS oid_rt_pro_write16_eeprom_hdl (struct oid_par_priv* poid_par_priv); +NDIS_STATUS oid_rt_pro8711_wi_poll_hdl(struct oid_par_priv* poid_par_priv); +NDIS_STATUS oid_rt_pro8711_pkt_loss_hdl(struct oid_par_priv* poid_par_priv); +NDIS_STATUS oid_rt_rd_attrib_mem_hdl(struct oid_par_priv* poid_par_priv); +NDIS_STATUS oid_rt_wr_attrib_mem_hdl (struct oid_par_priv* poid_par_priv); +NDIS_STATUS oid_rt_pro_set_rf_intfs_hdl(struct oid_par_priv* poid_par_priv); +NDIS_STATUS oid_rt_poll_rx_status_hdl(struct oid_par_priv* poid_par_priv); +// oid_rtl_seg_87_11_20 +NDIS_STATUS oid_rt_pro_cfg_debug_message_hdl(struct oid_par_priv* poid_par_priv); +NDIS_STATUS oid_rt_pro_set_data_rate_ex_hdl(struct oid_par_priv* poid_par_priv); +NDIS_STATUS oid_rt_pro_set_basic_rate_hdl(struct oid_par_priv* poid_par_priv); +NDIS_STATUS oid_rt_pro_read_tssi_hdl(struct oid_par_priv* poid_par_priv); +NDIS_STATUS oid_rt_pro_set_power_tracking_hdl(struct oid_par_priv* poid_par_priv); +//oid_rtl_seg_87_11_50 +NDIS_STATUS oid_rt_pro_qry_pwrstate_hdl(struct oid_par_priv* poid_par_priv); +NDIS_STATUS oid_rt_pro_set_pwrstate_hdl(struct oid_par_priv* poid_par_priv); +//oid_rtl_seg_87_11_F0 +NDIS_STATUS oid_rt_pro_h2c_set_rate_table_hdl(struct oid_par_priv* poid_par_priv); +NDIS_STATUS oid_rt_pro_h2c_get_rate_table_hdl(struct oid_par_priv* poid_par_priv); + + +//oid_rtl_seg_87_12_00 +NDIS_STATUS oid_rt_pro_encryption_ctrl_hdl(struct oid_par_priv* poid_par_priv); +NDIS_STATUS oid_rt_pro_add_sta_info_hdl(struct oid_par_priv* poid_par_priv); +NDIS_STATUS oid_rt_pro_dele_sta_info_hdl(struct oid_par_priv* poid_par_priv); +NDIS_STATUS oid_rt_pro_query_dr_variable_hdl(struct oid_par_priv* poid_par_priv); +NDIS_STATUS oid_rt_pro_rx_packet_type_hdl(struct oid_par_priv* poid_par_priv); + +NDIS_STATUS oid_rt_pro_read_efuse_hdl(struct oid_par_priv *poid_par_priv); +NDIS_STATUS oid_rt_pro_write_efuse_hdl(struct oid_par_priv *poid_par_priv); +NDIS_STATUS oid_rt_pro_rw_efuse_pgpkt_hdl(struct oid_par_priv *poid_par_priv); +NDIS_STATUS oid_rt_get_efuse_current_size_hdl(struct oid_par_priv *poid_par_priv); +NDIS_STATUS oid_rt_pro_efuse_hdl(struct oid_par_priv *poid_par_priv); +NDIS_STATUS oid_rt_pro_efuse_map_hdl(struct oid_par_priv *poid_par_priv); + +NDIS_STATUS oid_rt_set_bandwidth_hdl(struct oid_par_priv* poid_par_priv); +NDIS_STATUS oid_rt_set_crystal_cap_hdl(struct oid_par_priv* poid_par_priv); +NDIS_STATUS oid_rt_set_rx_packet_type_hdl(struct oid_par_priv* poid_par_priv); +NDIS_STATUS oid_rt_get_efuse_max_size_hdl(struct oid_par_priv* poid_par_priv); +NDIS_STATUS oid_rt_pro_set_tx_agc_offset_hdl(struct oid_par_priv* poid_par_priv); + +NDIS_STATUS oid_rt_pro_set_pkt_test_mode_hdl(struct oid_par_priv* poid_par_priv); + +NDIS_STATUS oid_rt_get_thermal_meter_hdl(struct oid_par_priv* poid_par_priv); + +NDIS_STATUS oid_rt_reset_phy_rx_packet_count_hdl(struct oid_par_priv* poid_par_priv); +NDIS_STATUS oid_rt_get_phy_rx_packet_received_hdl(struct oid_par_priv* poid_par_priv); +NDIS_STATUS oid_rt_get_phy_rx_packet_crc32_error_hdl(struct oid_par_priv* poid_par_priv); + +NDIS_STATUS oid_rt_set_power_down_hdl(struct oid_par_priv* poid_par_priv); + +NDIS_STATUS oid_rt_get_power_mode_hdl(struct oid_par_priv* poid_par_priv); + +NDIS_STATUS oid_rt_pro_trigger_gpio_hdl(struct oid_par_priv *poid_par_priv); + +#ifdef _RTW_MP_IOCTL_C_ + +const struct oid_obj_priv oid_rtl_seg_81_80_00[] = +{ + {1, &oid_null_function}, //0x00 OID_RT_PRO_RESET_DUT + {1, &oid_rt_pro_set_data_rate_hdl}, //0x01 + {1, &oid_rt_pro_start_test_hdl}, //0x02 + {1, &oid_rt_pro_stop_test_hdl}, //0x03 + {1, &oid_null_function}, //0x04 OID_RT_PRO_SET_PREAMBLE + {1, &oid_null_function}, //0x05 OID_RT_PRO_SET_SCRAMBLER + {1, &oid_null_function}, //0x06 OID_RT_PRO_SET_FILTER_BB + {1, &oid_null_function}, //0x07 OID_RT_PRO_SET_MANUAL_DIVERSITY_BB + {1, &oid_rt_pro_set_channel_direct_call_hdl}, //0x08 + {1, &oid_null_function}, //0x09 OID_RT_PRO_SET_SLEEP_MODE_DIRECT_CALL + {1, &oid_null_function}, //0x0A OID_RT_PRO_SET_WAKE_MODE_DIRECT_CALL + {1, &oid_rt_pro_set_continuous_tx_hdl}, //0x0B OID_RT_PRO_SET_TX_CONTINUOUS_DIRECT_CALL + {1, &oid_rt_pro_set_single_carrier_tx_hdl}, //0x0C OID_RT_PRO_SET_SINGLE_CARRIER_TX_CONTINUOUS + {1, &oid_null_function}, //0x0D OID_RT_PRO_SET_TX_ANTENNA_BB + {1, &oid_rt_pro_set_antenna_bb_hdl}, //0x0E + {1, &oid_null_function}, //0x0F OID_RT_PRO_SET_CR_SCRAMBLER + {1, &oid_null_function}, //0x10 OID_RT_PRO_SET_CR_NEW_FILTER + {1, &oid_rt_pro_set_tx_power_control_hdl}, //0x11 OID_RT_PRO_SET_TX_POWER_CONTROL + {1, &oid_null_function}, //0x12 OID_RT_PRO_SET_CR_TX_CONFIG + {1, &oid_null_function}, //0x13 OID_RT_PRO_GET_TX_POWER_CONTROL + {1, &oid_null_function}, //0x14 OID_RT_PRO_GET_CR_SIGNAL_QUALITY + {1, &oid_null_function}, //0x15 OID_RT_PRO_SET_CR_SETPOINT + {1, &oid_null_function}, //0x16 OID_RT_PRO_SET_INTEGRATOR + {1, &oid_null_function}, //0x17 OID_RT_PRO_SET_SIGNAL_QUALITY + {1, &oid_null_function}, //0x18 OID_RT_PRO_GET_INTEGRATOR + {1, &oid_null_function}, //0x19 OID_RT_PRO_GET_SIGNAL_QUALITY + {1, &oid_null_function}, //0x1A OID_RT_PRO_QUERY_EEPROM_TYPE + {1, &oid_null_function}, //0x1B OID_RT_PRO_WRITE_MAC_ADDRESS + {1, &oid_null_function}, //0x1C OID_RT_PRO_READ_MAC_ADDRESS + {1, &oid_null_function}, //0x1D OID_RT_PRO_WRITE_CIS_DATA + {1, &oid_null_function}, //0x1E OID_RT_PRO_READ_CIS_DATA + {1, &oid_null_function} //0x1F OID_RT_PRO_WRITE_POWER_CONTROL + +}; + +const struct oid_obj_priv oid_rtl_seg_81_80_20[] = +{ + {1, &oid_null_function}, //0x20 OID_RT_PRO_READ_POWER_CONTROL + {1, &oid_null_function}, //0x21 OID_RT_PRO_WRITE_EEPROM + {1, &oid_null_function}, //0x22 OID_RT_PRO_READ_EEPROM + {1, &oid_rt_pro_reset_tx_packet_sent_hdl}, //0x23 + {1, &oid_rt_pro_query_tx_packet_sent_hdl}, //0x24 + {1, &oid_rt_pro_reset_rx_packet_received_hdl}, //0x25 + {1, &oid_rt_pro_query_rx_packet_received_hdl}, //0x26 + {1, &oid_rt_pro_query_rx_packet_crc32_error_hdl}, //0x27 + {1, &oid_null_function}, //0x28 OID_RT_PRO_QUERY_CURRENT_ADDRESS + {1, &oid_null_function}, //0x29 OID_RT_PRO_QUERY_PERMANENT_ADDRESS + {1, &oid_null_function}, //0x2A OID_RT_PRO_SET_PHILIPS_RF_PARAMETERS + {1, &oid_rt_pro_set_carrier_suppression_tx_hdl},//0x2B OID_RT_PRO_SET_CARRIER_SUPPRESSION_TX + {1, &oid_null_function}, //0x2C OID_RT_PRO_RECEIVE_PACKET + {1, &oid_null_function}, //0x2D OID_RT_PRO_WRITE_EEPROM_BYTE + {1, &oid_null_function}, //0x2E OID_RT_PRO_READ_EEPROM_BYTE + {1, &oid_rt_pro_set_modulation_hdl} //0x2F + +}; + +const struct oid_obj_priv oid_rtl_seg_81_80_40[] = +{ + {1, &oid_null_function}, //0x40 + {1, &oid_null_function}, //0x41 + {1, &oid_null_function}, //0x42 + {1, &oid_rt_pro_set_single_tone_tx_hdl}, //0x43 + {1, &oid_null_function}, //0x44 + {1, &oid_null_function} //0x45 +}; + +const struct oid_obj_priv oid_rtl_seg_81_80_80[] = +{ + {1, &oid_null_function}, //0x80 OID_RT_DRIVER_OPTION + {1, &oid_null_function}, //0x81 OID_RT_RF_OFF + {1, &oid_null_function} //0x82 OID_RT_AUTH_STATUS + +}; + +const struct oid_obj_priv oid_rtl_seg_81_85[] = +{ + {1, &oid_rt_wireless_mode_hdl} //0x00 OID_RT_WIRELESS_MODE +}; + +struct oid_obj_priv oid_rtl_seg_81_87[] = +{ + {1, &oid_null_function}, //0x80 OID_RT_PRO8187_WI_POLL + {1, &oid_rt_pro_write_bb_reg_hdl}, //0x81 + {1, &oid_rt_pro_read_bb_reg_hdl}, //0x82 + {1, &oid_rt_pro_write_rf_reg_hdl}, //0x82 + {1, &oid_rt_pro_read_rf_reg_hdl} //0x83 +}; + +struct oid_obj_priv oid_rtl_seg_87_11_00[] = +{ + {1, &oid_rt_pro8711_join_bss_hdl}, //0x00 //S + {1, &oid_rt_pro_read_register_hdl}, //0x01 + {1, &oid_rt_pro_write_register_hdl}, //0x02 + {1, &oid_rt_pro_burst_read_register_hdl}, //0x03 + {1, &oid_rt_pro_burst_write_register_hdl}, //0x04 + {1, &oid_rt_pro_write_txcmd_hdl}, //0x05 + {1, &oid_rt_pro_read16_eeprom_hdl}, //0x06 + {1, &oid_rt_pro_write16_eeprom_hdl}, //0x07 + {1, &oid_null_function}, //0x08 OID_RT_PRO_H2C_SET_COMMAND + {1, &oid_null_function}, //0x09 OID_RT_PRO_H2C_QUERY_RESULT + {1, &oid_rt_pro8711_wi_poll_hdl}, //0x0A + {1, &oid_rt_pro8711_pkt_loss_hdl}, //0x0B + {1, &oid_rt_rd_attrib_mem_hdl}, //0x0C + {1, &oid_rt_wr_attrib_mem_hdl}, //0x0D + {1, &oid_null_function}, //0x0E + {1, &oid_null_function}, //0x0F + {1, &oid_null_function}, //0x10 OID_RT_PRO_H2C_CMD_MODE + {1, &oid_null_function}, //0x11 OID_RT_PRO_H2C_CMD_RSP_MODE + {1, &oid_null_function}, //0X12 OID_RT_PRO_WAIT_C2H_EVENT + {1, &oid_null_function}, //0X13 OID_RT_PRO_RW_ACCESS_PROTOCOL_TEST + {1, &oid_null_function}, //0X14 OID_RT_PRO_SCSI_ACCESS_TEST + {1, &oid_null_function}, //0X15 OID_RT_PRO_SCSI_TCPIPOFFLOAD_OUT + {1, &oid_null_function}, //0X16 OID_RT_PRO_SCSI_TCPIPOFFLOAD_IN + {1, &oid_null_function}, //0X17 OID_RT_RRO_RX_PKT_VIA_IOCTRL + {1, &oid_null_function}, //0X18 OID_RT_RRO_RX_PKTARRAY_VIA_IOCTRL + {1, &oid_null_function}, //0X19 OID_RT_RPO_SET_PWRMGT_TEST + {1, &oid_null_function}, //0X1A + {1, &oid_null_function}, //0X1B OID_RT_PRO_QRY_PWRMGT_TEST + {1, &oid_null_function}, //0X1C OID_RT_RPO_ASYNC_RWIO_TEST + {1, &oid_null_function}, //0X1D OID_RT_RPO_ASYNC_RWIO_POLL + {1, &oid_rt_pro_set_rf_intfs_hdl}, //0X1E + {1, &oid_rt_poll_rx_status_hdl} //0X1F +}; + +struct oid_obj_priv oid_rtl_seg_87_11_20[] = +{ + {1, &oid_rt_pro_cfg_debug_message_hdl}, //0x20 + {1, &oid_rt_pro_set_data_rate_ex_hdl}, //0x21 + {1, &oid_rt_pro_set_basic_rate_hdl}, //0x22 + {1, &oid_rt_pro_read_tssi_hdl}, //0x23 + {1, &oid_rt_pro_set_power_tracking_hdl} //0x24 +}; + + +struct oid_obj_priv oid_rtl_seg_87_11_50[] = +{ + {1, &oid_rt_pro_qry_pwrstate_hdl}, //0x50 + {1, &oid_rt_pro_set_pwrstate_hdl} //0x51 +}; + +struct oid_obj_priv oid_rtl_seg_87_11_80[] = +{ + {1, &oid_null_function} //0x80 +}; + +struct oid_obj_priv oid_rtl_seg_87_11_B0[] = +{ + {1, &oid_null_function} //0xB0 +}; + +struct oid_obj_priv oid_rtl_seg_87_11_F0[] = +{ + {1, &oid_null_function}, //0xF0 + {1, &oid_null_function}, //0xF1 + {1, &oid_null_function}, //0xF2 + {1, &oid_null_function}, //0xF3 + {1, &oid_null_function}, //0xF4 + {1, &oid_null_function}, //0xF5 + {1, &oid_null_function}, //0xF6 + {1, &oid_null_function}, //0xF7 + {1, &oid_null_function}, //0xF8 + {1, &oid_null_function}, //0xF9 + {1, &oid_null_function}, //0xFA + {1, &oid_rt_pro_h2c_set_rate_table_hdl}, //0xFB + {1, &oid_rt_pro_h2c_get_rate_table_hdl}, //0xFC + {1, &oid_null_function}, //0xFD + {1, &oid_null_function}, //0xFE OID_RT_PRO_H2C_C2H_LBK_TEST + {1, &oid_null_function} //0xFF + +}; + +struct oid_obj_priv oid_rtl_seg_87_12_00[]= +{ + {1, &oid_rt_pro_encryption_ctrl_hdl}, //0x00 Q&S + {1, &oid_rt_pro_add_sta_info_hdl}, //0x01 S + {1, &oid_rt_pro_dele_sta_info_hdl}, //0x02 S + {1, &oid_rt_pro_query_dr_variable_hdl}, //0x03 Q + {1, &oid_rt_pro_rx_packet_type_hdl}, //0x04 Q,S + {1, &oid_rt_pro_read_efuse_hdl}, //0x05 Q OID_RT_PRO_READ_EFUSE + {1, &oid_rt_pro_write_efuse_hdl}, //0x06 S OID_RT_PRO_WRITE_EFUSE + {1, &oid_rt_pro_rw_efuse_pgpkt_hdl}, //0x07 Q,S + {1, &oid_rt_get_efuse_current_size_hdl}, //0x08 Q + {1, &oid_rt_set_bandwidth_hdl}, //0x09 + {1, &oid_rt_set_crystal_cap_hdl}, //0x0a + {1, &oid_rt_set_rx_packet_type_hdl}, //0x0b S + {1, &oid_rt_get_efuse_max_size_hdl}, //0x0c + {1, &oid_rt_pro_set_tx_agc_offset_hdl}, //0x0d + {1, &oid_rt_pro_set_pkt_test_mode_hdl}, //0x0e + {1, &oid_null_function}, //0x0f OID_RT_PRO_FOR_EVM_TEST_SETTING + {1, &oid_rt_get_thermal_meter_hdl}, //0x10 Q OID_RT_PRO_GET_THERMAL_METER + {1, &oid_rt_reset_phy_rx_packet_count_hdl}, //0x11 S OID_RT_RESET_PHY_RX_PACKET_COUNT + {1, &oid_rt_get_phy_rx_packet_received_hdl}, //0x12 Q OID_RT_GET_PHY_RX_PACKET_RECEIVED + {1, &oid_rt_get_phy_rx_packet_crc32_error_hdl}, //0x13 Q OID_RT_GET_PHY_RX_PACKET_CRC32_ERROR + {1, &oid_rt_set_power_down_hdl}, //0x14 Q OID_RT_SET_POWER_DOWN + {1, &oid_rt_get_power_mode_hdl} //0x15 Q OID_RT_GET_POWER_MODE +}; + +#else /* _RTL871X_MP_IOCTL_C_ */ + +extern struct oid_obj_priv oid_rtl_seg_81_80_00[32]; +extern struct oid_obj_priv oid_rtl_seg_81_80_20[16]; +extern struct oid_obj_priv oid_rtl_seg_81_80_40[6]; +extern struct oid_obj_priv oid_rtl_seg_81_80_80[3]; + +extern struct oid_obj_priv oid_rtl_seg_81_85[1]; +extern struct oid_obj_priv oid_rtl_seg_81_87[5]; + +extern struct oid_obj_priv oid_rtl_seg_87_11_00[32]; +extern struct oid_obj_priv oid_rtl_seg_87_11_20[5]; +extern struct oid_obj_priv oid_rtl_seg_87_11_50[2]; +extern struct oid_obj_priv oid_rtl_seg_87_11_80[1]; +extern struct oid_obj_priv oid_rtl_seg_87_11_B0[1]; +extern struct oid_obj_priv oid_rtl_seg_87_11_F0[16]; + +extern struct oid_obj_priv oid_rtl_seg_87_12_00[32]; + +#endif /* _RTL871X_MP_IOCTL_C_ */ + +struct rwreg_param{ + u32 offset; + u32 width; + u32 value; +}; + +struct bbreg_param{ + u32 offset; + u32 phymask; + u32 value; +}; +/* +struct rfchannel_param{ + u32 ch; + u32 modem; +}; +*/ +struct txpower_param{ + u32 pwr_index; +}; + + +struct datarate_param{ + u32 rate_index; +}; + + +struct rfintfs_parm { + u32 rfintfs; +}; + +typedef struct _mp_xmit_parm_ { + u8 enable; + u32 count; + u16 length; + u8 payload_type; + u8 da[ETH_ALEN]; +}MP_XMIT_PARM, *PMP_XMIT_PARM; + +struct mp_xmit_packet { + u32 len; + u32 mem[MAX_MP_XMITBUF_SZ >> 2]; +}; + +struct psmode_param { + u32 ps_mode; + u32 smart_ps; +}; + +//for OID_RT_PRO_READ16_EEPROM & OID_RT_PRO_WRITE16_EEPROM +struct eeprom_rw_param { + u32 offset; + u16 value; +}; + +struct mp_ioctl_handler { + u32 paramsize; + u32 (*handler)(struct oid_par_priv* poid_par_priv); + u32 oid; +}; + +struct mp_ioctl_param{ + u32 subcode; + u32 len; + u8 data[0]; +}; + +#define GEN_MP_IOCTL_SUBCODE(code) _MP_IOCTL_ ## code ## _CMD_ + +enum RTL871X_MP_IOCTL_SUBCODE { + GEN_MP_IOCTL_SUBCODE(MP_START), /*0*/ + GEN_MP_IOCTL_SUBCODE(MP_STOP), + GEN_MP_IOCTL_SUBCODE(READ_REG), + GEN_MP_IOCTL_SUBCODE(WRITE_REG), + GEN_MP_IOCTL_SUBCODE(READ_BB_REG), + GEN_MP_IOCTL_SUBCODE(WRITE_BB_REG), /*5*/ + GEN_MP_IOCTL_SUBCODE(READ_RF_REG), + GEN_MP_IOCTL_SUBCODE(WRITE_RF_REG), + GEN_MP_IOCTL_SUBCODE(SET_CHANNEL), + GEN_MP_IOCTL_SUBCODE(SET_TXPOWER), + GEN_MP_IOCTL_SUBCODE(SET_DATARATE), /*10*/ + GEN_MP_IOCTL_SUBCODE(SET_BANDWIDTH), + GEN_MP_IOCTL_SUBCODE(SET_ANTENNA), + GEN_MP_IOCTL_SUBCODE(CNTU_TX), + GEN_MP_IOCTL_SUBCODE(SC_TX), + GEN_MP_IOCTL_SUBCODE(CS_TX), /*15*/ + GEN_MP_IOCTL_SUBCODE(ST_TX), + GEN_MP_IOCTL_SUBCODE(IOCTL_XMIT_PACKET), + GEN_MP_IOCTL_SUBCODE(SET_RX_PKT_TYPE), + GEN_MP_IOCTL_SUBCODE(RESET_PHY_RX_PKT_CNT), + GEN_MP_IOCTL_SUBCODE(GET_PHY_RX_PKT_RECV), /*20*/ + GEN_MP_IOCTL_SUBCODE(GET_PHY_RX_PKT_ERROR), + GEN_MP_IOCTL_SUBCODE(READ16_EEPROM), + GEN_MP_IOCTL_SUBCODE(WRITE16_EEPROM), + GEN_MP_IOCTL_SUBCODE(EFUSE), + GEN_MP_IOCTL_SUBCODE(EFUSE_MAP), /*25*/ + GEN_MP_IOCTL_SUBCODE(GET_EFUSE_MAX_SIZE), + GEN_MP_IOCTL_SUBCODE(GET_EFUSE_CURRENT_SIZE), + GEN_MP_IOCTL_SUBCODE(GET_THERMAL_METER), + GEN_MP_IOCTL_SUBCODE(SET_PTM), + GEN_MP_IOCTL_SUBCODE(SET_POWER_DOWN), /*30*/ + GEN_MP_IOCTL_SUBCODE(TRIGGER_GPIO), + GEN_MP_IOCTL_SUBCODE(SET_DM_BT), /*35*/ + GEN_MP_IOCTL_SUBCODE(DEL_BA), /*36*/ + GEN_MP_IOCTL_SUBCODE(GET_WIFI_STATUS), /*37*/ + MAX_MP_IOCTL_SUBCODE, +}; + +u32 mp_ioctl_xmit_packet_hdl(struct oid_par_priv* poid_par_priv); + +#ifdef _RTW_MP_IOCTL_C_ + +#define GEN_MP_IOCTL_HANDLER(sz, hdl, oid) {sz, hdl, oid}, + +#define EXT_MP_IOCTL_HANDLER(sz, subcode, oid) {sz, mp_ioctl_ ## subcode ## _hdl, oid}, + + +struct mp_ioctl_handler mp_ioctl_hdl[] = { + +/*0*/ GEN_MP_IOCTL_HANDLER(sizeof(u32), oid_rt_pro_start_test_hdl, OID_RT_PRO_START_TEST) + GEN_MP_IOCTL_HANDLER(sizeof(u32), oid_rt_pro_stop_test_hdl, OID_RT_PRO_STOP_TEST) + + GEN_MP_IOCTL_HANDLER(sizeof(struct rwreg_param), oid_rt_pro_read_register_hdl, OID_RT_PRO_READ_REGISTER) + GEN_MP_IOCTL_HANDLER(sizeof(struct rwreg_param), oid_rt_pro_write_register_hdl, OID_RT_PRO_WRITE_REGISTER) + GEN_MP_IOCTL_HANDLER(sizeof(struct bb_reg_param), oid_rt_pro_read_bb_reg_hdl, OID_RT_PRO_READ_BB_REG) +/*5*/ GEN_MP_IOCTL_HANDLER(sizeof(struct bb_reg_param), oid_rt_pro_write_bb_reg_hdl, OID_RT_PRO_WRITE_BB_REG) + GEN_MP_IOCTL_HANDLER(sizeof(struct rf_reg_param), oid_rt_pro_read_rf_reg_hdl, OID_RT_PRO_RF_READ_REGISTRY) + GEN_MP_IOCTL_HANDLER(sizeof(struct rf_reg_param), oid_rt_pro_write_rf_reg_hdl, OID_RT_PRO_RF_WRITE_REGISTRY) + + GEN_MP_IOCTL_HANDLER(sizeof(u32), oid_rt_pro_set_channel_direct_call_hdl, OID_RT_PRO_SET_CHANNEL_DIRECT_CALL) + GEN_MP_IOCTL_HANDLER(sizeof(struct txpower_param), oid_rt_pro_set_tx_power_control_hdl, OID_RT_PRO_SET_TX_POWER_CONTROL) +/*10*/ GEN_MP_IOCTL_HANDLER(sizeof(u32), oid_rt_pro_set_data_rate_hdl, OID_RT_PRO_SET_DATA_RATE) + GEN_MP_IOCTL_HANDLER(sizeof(u32), oid_rt_set_bandwidth_hdl, OID_RT_SET_BANDWIDTH) + GEN_MP_IOCTL_HANDLER(sizeof(u32), oid_rt_pro_set_antenna_bb_hdl, OID_RT_PRO_SET_ANTENNA_BB) + + GEN_MP_IOCTL_HANDLER(sizeof(u32), oid_rt_pro_set_continuous_tx_hdl, OID_RT_PRO_SET_CONTINUOUS_TX) + GEN_MP_IOCTL_HANDLER(sizeof(u32), oid_rt_pro_set_single_carrier_tx_hdl, OID_RT_PRO_SET_SINGLE_CARRIER_TX) +/*15*/ GEN_MP_IOCTL_HANDLER(sizeof(u32), oid_rt_pro_set_carrier_suppression_tx_hdl, OID_RT_PRO_SET_CARRIER_SUPPRESSION_TX) + GEN_MP_IOCTL_HANDLER(sizeof(u32), oid_rt_pro_set_single_tone_tx_hdl, OID_RT_PRO_SET_SINGLE_TONE_TX) + + EXT_MP_IOCTL_HANDLER(0, xmit_packet, 0) + + GEN_MP_IOCTL_HANDLER(sizeof(u32), oid_rt_set_rx_packet_type_hdl, OID_RT_SET_RX_PACKET_TYPE) + GEN_MP_IOCTL_HANDLER(0, oid_rt_reset_phy_rx_packet_count_hdl, OID_RT_RESET_PHY_RX_PACKET_COUNT) +/*20*/ GEN_MP_IOCTL_HANDLER(sizeof(u32), oid_rt_get_phy_rx_packet_received_hdl, OID_RT_GET_PHY_RX_PACKET_RECEIVED) + GEN_MP_IOCTL_HANDLER(sizeof(u32), oid_rt_get_phy_rx_packet_crc32_error_hdl, OID_RT_GET_PHY_RX_PACKET_CRC32_ERROR) + + GEN_MP_IOCTL_HANDLER(sizeof(struct eeprom_rw_param), NULL, 0) + GEN_MP_IOCTL_HANDLER(sizeof(struct eeprom_rw_param), NULL, 0) + GEN_MP_IOCTL_HANDLER(sizeof(EFUSE_ACCESS_STRUCT), oid_rt_pro_efuse_hdl, OID_RT_PRO_EFUSE) +/*25*/ GEN_MP_IOCTL_HANDLER(0, oid_rt_pro_efuse_map_hdl, OID_RT_PRO_EFUSE_MAP) + GEN_MP_IOCTL_HANDLER(sizeof(u32), oid_rt_get_efuse_max_size_hdl, OID_RT_GET_EFUSE_MAX_SIZE) + GEN_MP_IOCTL_HANDLER(sizeof(u32), oid_rt_get_efuse_current_size_hdl, OID_RT_GET_EFUSE_CURRENT_SIZE) + + GEN_MP_IOCTL_HANDLER(sizeof(u32), oid_rt_get_thermal_meter_hdl, OID_RT_PRO_GET_THERMAL_METER) + GEN_MP_IOCTL_HANDLER(sizeof(u8), oid_rt_pro_set_power_tracking_hdl, OID_RT_PRO_SET_POWER_TRACKING) +/*30*/ GEN_MP_IOCTL_HANDLER(sizeof(u8), oid_rt_set_power_down_hdl, OID_RT_SET_POWER_DOWN) +/*31*/ GEN_MP_IOCTL_HANDLER(0, oid_rt_pro_trigger_gpio_hdl, 0) + + +}; + +#else /* _RTW_MP_IOCTL_C_ */ + +extern struct mp_ioctl_handler mp_ioctl_hdl[]; + +#endif /* _RTW_MP_IOCTL_C_ */ + +#endif --- linux-raspi2-4.2.0.orig/drivers/net/wireless/rtl8192cu/include/rtw_mp_phy_regdef.h +++ linux-raspi2-4.2.0/drivers/net/wireless/rtl8192cu/include/rtw_mp_phy_regdef.h @@ -0,0 +1,1096 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved. + * + * 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 + * published by the Free Software Foundation. + * + * 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 Street, Fifth Floor, Boston, MA 02110, USA + * + * + ******************************************************************************/ +/***************************************************************************** + * + * Module: __RTW_MP_PHY_REGDEF_H_ + * + * + * Note: 1. Define PMAC/BB register map + * 2. Define RF register map + * 3. PMAC/BB register bit mask. + * 4. RF reg bit mask. + * 5. Other BB/RF relative definition. + * + * + * Export: Constants, macro, functions(API), global variables(None). + * + * Abbrev: + * + * History: + * Data Who Remark + * 08/07/2007 MHC 1. Porting from 9x series PHYCFG.h. + * 2. Reorganize code architecture. + * 09/25/2008 MH 1. Add RL6052 register definition + * + *****************************************************************************/ +#ifndef __RTW_MP_PHY_REGDEF_H_ +#define __RTW_MP_PHY_REGDEF_H_ + + +/*--------------------------Define Parameters-------------------------------*/ + +//============================================================ +// 8192S Regsiter offset definition +//============================================================ + +// +// BB-PHY register PMAC 0x100 PHY 0x800 - 0xEFF +// 1. PMAC duplicate register due to connection: RF_Mode, TRxRN, NumOf L-STF +// 2. 0x800/0x900/0xA00/0xC00/0xD00/0xE00 +// 3. RF register 0x00-2E +// 4. Bit Mask for BB/RF register +// 5. Other defintion for BB/RF R/W +// + + +// +// 1. PMAC duplicate register due to connection: RF_Mode, TRxRN, NumOf L-STF +// 1. Page1(0x100) +// +#define rPMAC_Reset 0x100 +#define rPMAC_TxStart 0x104 +#define rPMAC_TxLegacySIG 0x108 +#define rPMAC_TxHTSIG1 0x10c +#define rPMAC_TxHTSIG2 0x110 +#define rPMAC_PHYDebug 0x114 +#define rPMAC_TxPacketNum 0x118 +#define rPMAC_TxIdle 0x11c +#define rPMAC_TxMACHeader0 0x120 +#define rPMAC_TxMACHeader1 0x124 +#define rPMAC_TxMACHeader2 0x128 +#define rPMAC_TxMACHeader3 0x12c +#define rPMAC_TxMACHeader4 0x130 +#define rPMAC_TxMACHeader5 0x134 +#define rPMAC_TxDataType 0x138 +#define rPMAC_TxRandomSeed 0x13c +#define rPMAC_CCKPLCPPreamble 0x140 +#define rPMAC_CCKPLCPHeader 0x144 +#define rPMAC_CCKCRC16 0x148 +#define rPMAC_OFDMRxCRC32OK 0x170 +#define rPMAC_OFDMRxCRC32Er 0x174 +#define rPMAC_OFDMRxParityEr 0x178 +#define rPMAC_OFDMRxCRC8Er 0x17c +#define rPMAC_CCKCRxRC16Er 0x180 +#define rPMAC_CCKCRxRC32Er 0x184 +#define rPMAC_CCKCRxRC32OK 0x188 +#define rPMAC_TxStatus 0x18c + +// +// 2. Page2(0x200) +// +// The following two definition are only used for USB interface. +//#define RF_BB_CMD_ADDR 0x02c0 // RF/BB read/write command address. +//#define RF_BB_CMD_DATA 0x02c4 // RF/BB read/write command data. + +// +// 3. Page8(0x800) +// +#define rFPGA0_RFMOD 0x800 //RF mode & CCK TxSC // RF BW Setting?? + +#define rFPGA0_TxInfo 0x804 // Status report?? +#define rFPGA0_PSDFunction 0x808 + +#define rFPGA0_TxGainStage 0x80c // Set TX PWR init gain? + +#define rFPGA0_RFTiming1 0x810 // Useless now +#define rFPGA0_RFTiming2 0x814 +//#define rFPGA0_XC_RFTiming 0x818 +//#define rFPGA0_XD_RFTiming 0x81c + +#define rFPGA0_XA_HSSIParameter1 0x820 // RF 3 wire register +#define rFPGA0_XA_HSSIParameter2 0x824 +#define rFPGA0_XB_HSSIParameter1 0x828 +#define rFPGA0_XB_HSSIParameter2 0x82c +#define rFPGA0_XC_HSSIParameter1 0x830 +#define rFPGA0_XC_HSSIParameter2 0x834 +#define rFPGA0_XD_HSSIParameter1 0x838 +#define rFPGA0_XD_HSSIParameter2 0x83c +#define rFPGA0_XA_LSSIParameter 0x840 +#define rFPGA0_XB_LSSIParameter 0x844 +#define rFPGA0_XC_LSSIParameter 0x848 +#define rFPGA0_XD_LSSIParameter 0x84c + +#define rFPGA0_RFWakeUpParameter 0x850 // Useless now +#define rFPGA0_RFSleepUpParameter 0x854 + +#define rFPGA0_XAB_SwitchControl 0x858 // RF Channel switch +#define rFPGA0_XCD_SwitchControl 0x85c + +#define rFPGA0_XA_RFInterfaceOE 0x860 // RF Channel switch +#define rFPGA0_XB_RFInterfaceOE 0x864 +#define rFPGA0_XC_RFInterfaceOE 0x868 +#define rFPGA0_XD_RFInterfaceOE 0x86c + +#define rFPGA0_XAB_RFInterfaceSW 0x870 // RF Interface Software Control +#define rFPGA0_XCD_RFInterfaceSW 0x874 + +#define rFPGA0_XAB_RFParameter 0x878 // RF Parameter +#define rFPGA0_XCD_RFParameter 0x87c + +#define rFPGA0_AnalogParameter1 0x880 // Crystal cap setting RF-R/W protection for parameter4?? +#define rFPGA0_AnalogParameter2 0x884 +#define rFPGA0_AnalogParameter3 0x888 // Useless now +#define rFPGA0_AnalogParameter4 0x88c + +#define rFPGA0_XA_LSSIReadBack 0x8a0 // Tranceiver LSSI Readback +#define rFPGA0_XB_LSSIReadBack 0x8a4 +#define rFPGA0_XC_LSSIReadBack 0x8a8 +#define rFPGA0_XD_LSSIReadBack 0x8ac + +#define rFPGA0_PSDReport 0x8b4 // Useless now +#define rFPGA0_XAB_RFInterfaceRB 0x8e0 // Useless now // RF Interface Readback Value +#define rFPGA0_XCD_RFInterfaceRB 0x8e4 // Useless now + +// +// 4. Page9(0x900) +// +#define rFPGA1_RFMOD 0x900 //RF mode & OFDM TxSC // RF BW Setting?? + +#define rFPGA1_TxBlock 0x904 // Useless now +#define rFPGA1_DebugSelect 0x908 // Useless now +#define rFPGA1_TxInfo 0x90c // Useless now // Status report?? + +// +// 5. PageA(0xA00) +// +// Set Control channel to upper or lower. These settings are required only for 40MHz +#define rCCK0_System 0xa00 + +#define rCCK0_AFESetting 0xa04 // Disable init gain now // Select RX path by RSSI +#define rCCK0_CCA 0xa08 // Disable init gain now // Init gain + +#define rCCK0_RxAGC1 0xa0c //AGC default value, saturation level // Antenna Diversity, RX AGC, LNA Threshold, RX LNA Threshold useless now. Not the same as 90 series +#define rCCK0_RxAGC2 0xa10 //AGC & DAGC + +#define rCCK0_RxHP 0xa14 + +#define rCCK0_DSPParameter1 0xa18 //Timing recovery & Channel estimation threshold +#define rCCK0_DSPParameter2 0xa1c //SQ threshold + +#define rCCK0_TxFilter1 0xa20 +#define rCCK0_TxFilter2 0xa24 +#define rCCK0_DebugPort 0xa28 //debug port and Tx filter3 +#define rCCK0_FalseAlarmReport 0xa2c //0xa2d useless now 0xa30-a4f channel report +#define rCCK0_TRSSIReport 0xa50 +#define rCCK0_RxReport 0xa54 //0xa57 +#define rCCK0_FACounterLower 0xa5c //0xa5b +#define rCCK0_FACounterUpper 0xa58 //0xa5c + +// +// 6. PageC(0xC00) +// +#define rOFDM0_LSTF 0xc00 + +#define rOFDM0_TRxPathEnable 0xc04 +#define rOFDM0_TRMuxPar 0xc08 +#define rOFDM0_TRSWIsolation 0xc0c + +#define rOFDM0_XARxAFE 0xc10 //RxIQ DC offset, Rx digital filter, DC notch filter +#define rOFDM0_XARxIQImbalance 0xc14 //RxIQ imblance matrix +#define rOFDM0_XBRxAFE 0xc18 +#define rOFDM0_XBRxIQImbalance 0xc1c +#define rOFDM0_XCRxAFE 0xc20 +#define rOFDM0_XCRxIQImbalance 0xc24 +#define rOFDM0_XDRxAFE 0xc28 +#define rOFDM0_XDRxIQImbalance 0xc2c + +#define rOFDM0_RxDetector1 0xc30 //PD,BW & SBD // DM tune init gain +#define rOFDM0_RxDetector2 0xc34 //SBD & Fame Sync. +#define rOFDM0_RxDetector3 0xc38 //Frame Sync. +#define rOFDM0_RxDetector4 0xc3c //PD, SBD, Frame Sync & Short-GI + +#define rOFDM0_RxDSP 0xc40 //Rx Sync Path +#define rOFDM0_CFOandDAGC 0xc44 //CFO & DAGC +#define rOFDM0_CCADropThreshold 0xc48 //CCA Drop threshold +#define rOFDM0_ECCAThreshold 0xc4c // energy CCA + +#define rOFDM0_XAAGCCore1 0xc50 // DIG +#define rOFDM0_XAAGCCore2 0xc54 +#define rOFDM0_XBAGCCore1 0xc58 +#define rOFDM0_XBAGCCore2 0xc5c +#define rOFDM0_XCAGCCore1 0xc60 +#define rOFDM0_XCAGCCore2 0xc64 +#define rOFDM0_XDAGCCore1 0xc68 +#define rOFDM0_XDAGCCore2 0xc6c + +#define rOFDM0_AGCParameter1 0xc70 +#define rOFDM0_AGCParameter2 0xc74 +#define rOFDM0_AGCRSSITable 0xc78 +#define rOFDM0_HTSTFAGC 0xc7c + +#define rOFDM0_XATxIQImbalance 0xc80 // TX PWR TRACK and DIG +#define rOFDM0_XATxAFE 0xc84 +#define rOFDM0_XBTxIQImbalance 0xc88 +#define rOFDM0_XBTxAFE 0xc8c +#define rOFDM0_XCTxIQImbalance 0xc90 +#define rOFDM0_XCTxAFE 0xc94 +#define rOFDM0_XDTxIQImbalance 0xc98 +#define rOFDM0_XDTxAFE 0xc9c +#define rOFDM0_RxIQExtAnta 0xca0 + +#define rOFDM0_RxHPParameter 0xce0 +#define rOFDM0_TxPseudoNoiseWgt 0xce4 +#define rOFDM0_FrameSync 0xcf0 +#define rOFDM0_DFSReport 0xcf4 +#define rOFDM0_TxCoeff1 0xca4 +#define rOFDM0_TxCoeff2 0xca8 +#define rOFDM0_TxCoeff3 0xcac +#define rOFDM0_TxCoeff4 0xcb0 +#define rOFDM0_TxCoeff5 0xcb4 +#define rOFDM0_TxCoeff6 0xcb8 + + +// +// 7. PageD(0xD00) +// +#define rOFDM1_LSTF 0xd00 +#define rOFDM1_TRxPathEnable 0xd04 + +#define rOFDM1_CFO 0xd08 // No setting now +#define rOFDM1_CSI1 0xd10 +#define rOFDM1_SBD 0xd14 +#define rOFDM1_CSI2 0xd18 +#define rOFDM1_CFOTracking 0xd2c +#define rOFDM1_TRxMesaure1 0xd34 +#define rOFDM1_IntfDet 0xd3c +#define rOFDM1_PseudoNoiseStateAB 0xd50 +#define rOFDM1_PseudoNoiseStateCD 0xd54 +#define rOFDM1_RxPseudoNoiseWgt 0xd58 + +#define rOFDM_PHYCounter1 0xda0 //cca, parity fail +#define rOFDM_PHYCounter2 0xda4 //rate illegal, crc8 fail +#define rOFDM_PHYCounter3 0xda8 //MCS not support + +#define rOFDM_ShortCFOAB 0xdac // No setting now +#define rOFDM_ShortCFOCD 0xdb0 +#define rOFDM_LongCFOAB 0xdb4 +#define rOFDM_LongCFOCD 0xdb8 +#define rOFDM_TailCFOAB 0xdbc +#define rOFDM_TailCFOCD 0xdc0 +#define rOFDM_PWMeasure1 0xdc4 +#define rOFDM_PWMeasure2 0xdc8 +#define rOFDM_BWReport 0xdcc +#define rOFDM_AGCReport 0xdd0 +#define rOFDM_RxSNR 0xdd4 +#define rOFDM_RxEVMCSI 0xdd8 +#define rOFDM_SIGReport 0xddc + + +// +// 8. PageE(0xE00) +// +#define rTxAGC_Rate18_06 0xe00 +#define rTxAGC_Rate54_24 0xe04 +#define rTxAGC_CCK_Mcs32 0xe08 +#define rTxAGC_Mcs03_Mcs00 0xe10 +#define rTxAGC_Mcs07_Mcs04 0xe14 +#define rTxAGC_Mcs11_Mcs08 0xe18 +#define rTxAGC_Mcs15_Mcs12 0xe1c + +// Analog- control in RX_WAIT_CCA : REG: EE0 [Analog- Power & Control Register] +#define rRx_Wait_CCCA 0xe70 +#define rAnapar_Ctrl_BB 0xee0 + +// +// 7. RF Register 0x00-0x2E (RF 8256) +// RF-0222D 0x00-3F +// +//Zebra1 +#define RTL92SE_FPGA_VERIFY 0 +#define rZebra1_HSSIEnable 0x0 // Useless now +#define rZebra1_TRxEnable1 0x1 +#define rZebra1_TRxEnable2 0x2 +#define rZebra1_AGC 0x4 +#define rZebra1_ChargePump 0x5 +//#if (RTL92SE_FPGA_VERIFY == 1) +#define rZebra1_Channel 0x7 // RF channel switch +//#else + +//#endif +#define rZebra1_TxGain 0x8 // Useless now +#define rZebra1_TxLPF 0x9 +#define rZebra1_RxLPF 0xb +#define rZebra1_RxHPFCorner 0xc + +//Zebra4 +#define rGlobalCtrl 0 // Useless now +#define rRTL8256_TxLPF 19 +#define rRTL8256_RxLPF 11 + +//RTL8258 +#define rRTL8258_TxLPF 0x11 // Useless now +#define rRTL8258_RxLPF 0x13 +#define rRTL8258_RSSILPF 0xa + +// +// RL6052 Register definition +// +#define RF_AC 0x00 // + +#define RF_IQADJ_G1 0x01 // +#define RF_IQADJ_G2 0x02 // +#define RF_POW_TRSW 0x05 // + +#define RF_GAIN_RX 0x06 // +#define RF_GAIN_TX 0x07 // + +#define RF_TXM_IDAC 0x08 // +#define RF_BS_IQGEN 0x0F // + +#define RF_MODE1 0x10 // +#define RF_MODE2 0x11 // + +#define RF_RX_AGC_HP 0x12 // +#define RF_TX_AGC 0x13 // +#define RF_BIAS 0x14 // +#define RF_IPA 0x15 // +#define RF_POW_ABILITY 0x17 // +#define RF_MODE_AG 0x18 // +#define rRfChannel 0x18 // RF channel and BW switch +#define RF_CHNLBW 0x18 // RF channel and BW switch +#define RF_TOP 0x19 // + +#define RF_RX_G1 0x1A // +#define RF_RX_G2 0x1B // + +#define RF_RX_BB2 0x1C // +#define RF_RX_BB1 0x1D // + +#define RF_RCK1 0x1E // +#define RF_RCK2 0x1F // + +#define RF_TX_G1 0x20 // +#define RF_TX_G2 0x21 // +#define RF_TX_G3 0x22 // + +#define RF_TX_BB1 0x23 // + +#define RF_T_METER 0x24 // + +#define RF_SYN_G1 0x25 // RF TX Power control +#define RF_SYN_G2 0x26 // RF TX Power control +#define RF_SYN_G3 0x27 // RF TX Power control +#define RF_SYN_G4 0x28 // RF TX Power control +#define RF_SYN_G5 0x29 // RF TX Power control +#define RF_SYN_G6 0x2A // RF TX Power control +#define RF_SYN_G7 0x2B // RF TX Power control +#define RF_SYN_G8 0x2C // RF TX Power control + +#define RF_RCK_OS 0x30 // RF TX PA control + +#define RF_TXPA_G1 0x31 // RF TX PA control +#define RF_TXPA_G2 0x32 // RF TX PA control +#define RF_TXPA_G3 0x33 // RF TX PA control + +// +//Bit Mask +// +// 1. Page1(0x100) +#define bBBResetB 0x100 // Useless now? +#define bGlobalResetB 0x200 +#define bOFDMTxStart 0x4 +#define bCCKTxStart 0x8 +#define bCRC32Debug 0x100 +#define bPMACLoopback 0x10 +#define bTxLSIG 0xffffff +#define bOFDMTxRate 0xf +#define bOFDMTxReserved 0x10 +#define bOFDMTxLength 0x1ffe0 +#define bOFDMTxParity 0x20000 +#define bTxHTSIG1 0xffffff +#define bTxHTMCSRate 0x7f +#define bTxHTBW 0x80 +#define bTxHTLength 0xffff00 +#define bTxHTSIG2 0xffffff +#define bTxHTSmoothing 0x1 +#define bTxHTSounding 0x2 +#define bTxHTReserved 0x4 +#define bTxHTAggreation 0x8 +#define bTxHTSTBC 0x30 +#define bTxHTAdvanceCoding 0x40 +#define bTxHTShortGI 0x80 +#define bTxHTNumberHT_LTF 0x300 +#define bTxHTCRC8 0x3fc00 +#define bCounterReset 0x10000 +#define bNumOfOFDMTx 0xffff +#define bNumOfCCKTx 0xffff0000 +#define bTxIdleInterval 0xffff +#define bOFDMService 0xffff0000 +#define bTxMACHeader 0xffffffff +#define bTxDataInit 0xff +#define bTxHTMode 0x100 +#define bTxDataType 0x30000 +#define bTxRandomSeed 0xffffffff +#define bCCKTxPreamble 0x1 +#define bCCKTxSFD 0xffff0000 +#define bCCKTxSIG 0xff +#define bCCKTxService 0xff00 +#define bCCKLengthExt 0x8000 +#define bCCKTxLength 0xffff0000 +#define bCCKTxCRC16 0xffff +#define bCCKTxStatus 0x1 +#define bOFDMTxStatus 0x2 + +#define IS_BB_REG_OFFSET_92S(_Offset) ((_Offset >= 0x800) && (_Offset <= 0xfff)) + +// 2. Page8(0x800) +#define bRFMOD 0x1 // Reg 0x800 rFPGA0_RFMOD +#define bJapanMode 0x2 +#define bCCKTxSC 0x30 +#define bCCKEn 0x1000000 +#define bOFDMEn 0x2000000 + +#define bOFDMRxADCPhase 0x10000 // Useless now +#define bOFDMTxDACPhase 0x40000 +#define bXATxAGC 0x3f + +#define bXBTxAGC 0xf00 // Reg 80c rFPGA0_TxGainStage +#define bXCTxAGC 0xf000 +#define bXDTxAGC 0xf0000 + +#define bPAStart 0xf0000000 // Useless now +#define bTRStart 0x00f00000 +#define bRFStart 0x0000f000 +#define bBBStart 0x000000f0 +#define bBBCCKStart 0x0000000f +#define bPAEnd 0xf //Reg0x814 +#define bTREnd 0x0f000000 +#define bRFEnd 0x000f0000 +#define bCCAMask 0x000000f0 //T2R +#define bR2RCCAMask 0x00000f00 +#define bHSSI_R2TDelay 0xf8000000 +#define bHSSI_T2RDelay 0xf80000 +#define bContTxHSSI 0x400 //chane gain at continue Tx +#define bIGFromCCK 0x200 +#define bAGCAddress 0x3f +#define bRxHPTx 0x7000 +#define bRxHPT2R 0x38000 +#define bRxHPCCKIni 0xc0000 +#define bAGCTxCode 0xc00000 +#define bAGCRxCode 0x300000 + +#define b3WireDataLength 0x800 // Reg 0x820~84f rFPGA0_XA_HSSIParameter1 +#define b3WireAddressLength 0x400 + +#define b3WireRFPowerDown 0x1 // Useless now +//#define bHWSISelect 0x8 +#define b5GPAPEPolarity 0x40000000 +#define b2GPAPEPolarity 0x80000000 +#define bRFSW_TxDefaultAnt 0x3 +#define bRFSW_TxOptionAnt 0x30 +#define bRFSW_RxDefaultAnt 0x300 +#define bRFSW_RxOptionAnt 0x3000 +#define bRFSI_3WireData 0x1 +#define bRFSI_3WireClock 0x2 +#define bRFSI_3WireLoad 0x4 +#define bRFSI_3WireRW 0x8 +#define bRFSI_3Wire 0xf + +#define bRFSI_RFENV 0x10 // Reg 0x870 rFPGA0_XAB_RFInterfaceSW + +#define bRFSI_TRSW 0x20 // Useless now +#define bRFSI_TRSWB 0x40 +#define bRFSI_ANTSW 0x100 +#define bRFSI_ANTSWB 0x200 +#define bRFSI_PAPE 0x400 +#define bRFSI_PAPE5G 0x800 +#define bBandSelect 0x1 +#define bHTSIG2_GI 0x80 +#define bHTSIG2_Smoothing 0x01 +#define bHTSIG2_Sounding 0x02 +#define bHTSIG2_Aggreaton 0x08 +#define bHTSIG2_STBC 0x30 +#define bHTSIG2_AdvCoding 0x40 +#define bHTSIG2_NumOfHTLTF 0x300 +#define bHTSIG2_CRC8 0x3fc +#define bHTSIG1_MCS 0x7f +#define bHTSIG1_BandWidth 0x80 +#define bHTSIG1_HTLength 0xffff +#define bLSIG_Rate 0xf +#define bLSIG_Reserved 0x10 +#define bLSIG_Length 0x1fffe +#define bLSIG_Parity 0x20 +#define bCCKRxPhase 0x4 +#if (RTL92SE_FPGA_VERIFY == 1) +#define bLSSIReadAddress 0x3f000000 //LSSI "Read" Address // Reg 0x824 rFPGA0_XA_HSSIParameter2 +#else +#define bLSSIReadAddress 0x7f800000 // T65 RF +#endif +#define bLSSIReadEdge 0x80000000 //LSSI "Read" edge signal +#if (RTL92SE_FPGA_VERIFY == 1) +#define bLSSIReadBackData 0xfff // Reg 0x8a0 rFPGA0_XA_LSSIReadBack +#else +#define bLSSIReadBackData 0xfffff // T65 RF +#endif +#define bLSSIReadOKFlag 0x1000 // Useless now +#define bCCKSampleRate 0x8 //0: 44MHz, 1:88MHz +#define bRegulator0Standby 0x1 +#define bRegulatorPLLStandby 0x2 +#define bRegulator1Standby 0x4 +#define bPLLPowerUp 0x8 +#define bDPLLPowerUp 0x10 +#define bDA10PowerUp 0x20 +#define bAD7PowerUp 0x200 +#define bDA6PowerUp 0x2000 +#define bXtalPowerUp 0x4000 +#define b40MDClkPowerUP 0x8000 +#define bDA6DebugMode 0x20000 +#define bDA6Swing 0x380000 + +#define bADClkPhase 0x4000000 // Reg 0x880 rFPGA0_AnalogParameter1 20/40 CCK support switch 40/80 BB MHZ + +#define b80MClkDelay 0x18000000 // Useless +#define bAFEWatchDogEnable 0x20000000 + +#define bXtalCap01 0xc0000000 // Reg 0x884 rFPGA0_AnalogParameter2 Crystal cap +#define bXtalCap23 0x3 +#define bXtalCap92x 0x0f000000 +#define bXtalCap 0x0f000000 + +#define bIntDifClkEnable 0x400 // Useless +#define bExtSigClkEnable 0x800 +#define bBandgapMbiasPowerUp 0x10000 +#define bAD11SHGain 0xc0000 +#define bAD11InputRange 0x700000 +#define bAD11OPCurrent 0x3800000 +#define bIPathLoopback 0x4000000 +#define bQPathLoopback 0x8000000 +#define bAFELoopback 0x10000000 +#define bDA10Swing 0x7e0 +#define bDA10Reverse 0x800 +#define bDAClkSource 0x1000 +#define bAD7InputRange 0x6000 +#define bAD7Gain 0x38000 +#define bAD7OutputCMMode 0x40000 +#define bAD7InputCMMode 0x380000 +#define bAD7Current 0xc00000 +#define bRegulatorAdjust 0x7000000 +#define bAD11PowerUpAtTx 0x1 +#define bDA10PSAtTx 0x10 +#define bAD11PowerUpAtRx 0x100 +#define bDA10PSAtRx 0x1000 +#define bCCKRxAGCFormat 0x200 +#define bPSDFFTSamplepPoint 0xc000 +#define bPSDAverageNum 0x3000 +#define bIQPathControl 0xc00 +#define bPSDFreq 0x3ff +#define bPSDAntennaPath 0x30 +#define bPSDIQSwitch 0x40 +#define bPSDRxTrigger 0x400000 +#define bPSDTxTrigger 0x80000000 +#define bPSDSineToneScale 0x7f000000 +#define bPSDReport 0xffff + +// 3. Page9(0x900) +#define bOFDMTxSC 0x30000000 // Useless +#define bCCKTxOn 0x1 +#define bOFDMTxOn 0x2 +#define bDebugPage 0xfff //reset debug page and also HWord, LWord +#define bDebugItem 0xff //reset debug page and LWord +#define bAntL 0x10 +#define bAntNonHT 0x100 +#define bAntHT1 0x1000 +#define bAntHT2 0x10000 +#define bAntHT1S1 0x100000 +#define bAntNonHTS1 0x1000000 + +// 4. PageA(0xA00) +#define bCCKBBMode 0x3 // Useless +#define bCCKTxPowerSaving 0x80 +#define bCCKRxPowerSaving 0x40 + +#define bCCKSideBand 0x10 // Reg 0xa00 rCCK0_System 20/40 switch + +#define bCCKScramble 0x8 // Useless +#define bCCKAntDiversity 0x8000 +#define bCCKCarrierRecovery 0x4000 +#define bCCKTxRate 0x3000 +#define bCCKDCCancel 0x0800 +#define bCCKISICancel 0x0400 +#define bCCKMatchFilter 0x0200 +#define bCCKEqualizer 0x0100 +#define bCCKPreambleDetect 0x800000 +#define bCCKFastFalseCCA 0x400000 +#define bCCKChEstStart 0x300000 +#define bCCKCCACount 0x080000 +#define bCCKcs_lim 0x070000 +#define bCCKBistMode 0x80000000 +#define bCCKCCAMask 0x40000000 +#define bCCKTxDACPhase 0x4 +#define bCCKRxADCPhase 0x20000000 //r_rx_clk +#define bCCKr_cp_mode0 0x0100 +#define bCCKTxDCOffset 0xf0 +#define bCCKRxDCOffset 0xf +#define bCCKCCAMode 0xc000 +#define bCCKFalseCS_lim 0x3f00 +#define bCCKCS_ratio 0xc00000 +#define bCCKCorgBit_sel 0x300000 +#define bCCKPD_lim 0x0f0000 +#define bCCKNewCCA 0x80000000 +#define bCCKRxHPofIG 0x8000 +#define bCCKRxIG 0x7f00 +#define bCCKLNAPolarity 0x800000 +#define bCCKRx1stGain 0x7f0000 +#define bCCKRFExtend 0x20000000 //CCK Rx Iinital gain polarity +#define bCCKRxAGCSatLevel 0x1f000000 +#define bCCKRxAGCSatCount 0xe0 +#define bCCKRxRFSettle 0x1f //AGCsamp_dly +#define bCCKFixedRxAGC 0x8000 +//#define bCCKRxAGCFormat 0x4000 //remove to HSSI register 0x824 +#define bCCKAntennaPolarity 0x2000 +#define bCCKTxFilterType 0x0c00 +#define bCCKRxAGCReportType 0x0300 +#define bCCKRxDAGCEn 0x80000000 +#define bCCKRxDAGCPeriod 0x20000000 +#define bCCKRxDAGCSatLevel 0x1f000000 +#define bCCKTimingRecovery 0x800000 +#define bCCKTxC0 0x3f0000 +#define bCCKTxC1 0x3f000000 +#define bCCKTxC2 0x3f +#define bCCKTxC3 0x3f00 +#define bCCKTxC4 0x3f0000 +#define bCCKTxC5 0x3f000000 +#define bCCKTxC6 0x3f +#define bCCKTxC7 0x3f00 +#define bCCKDebugPort 0xff0000 +#define bCCKDACDebug 0x0f000000 +#define bCCKFalseAlarmEnable 0x8000 +#define bCCKFalseAlarmRead 0x4000 +#define bCCKTRSSI 0x7f +#define bCCKRxAGCReport 0xfe +#define bCCKRxReport_AntSel 0x80000000 +#define bCCKRxReport_MFOff 0x40000000 +#define bCCKRxRxReport_SQLoss 0x20000000 +#define bCCKRxReport_Pktloss 0x10000000 +#define bCCKRxReport_Lockedbit 0x08000000 +#define bCCKRxReport_RateError 0x04000000 +#define bCCKRxReport_RxRate 0x03000000 +#define bCCKRxFACounterLower 0xff +#define bCCKRxFACounterUpper 0xff000000 +#define bCCKRxHPAGCStart 0xe000 +#define bCCKRxHPAGCFinal 0x1c00 +#define bCCKRxFalseAlarmEnable 0x8000 +#define bCCKFACounterFreeze 0x4000 +#define bCCKTxPathSel 0x10000000 +#define bCCKDefaultRxPath 0xc000000 +#define bCCKOptionRxPath 0x3000000 + +// 5. PageC(0xC00) +#define bNumOfSTF 0x3 // Useless +#define bShift_L 0xc0 +#define bGI_TH 0xc +#define bRxPathA 0x1 +#define bRxPathB 0x2 +#define bRxPathC 0x4 +#define bRxPathD 0x8 +#define bTxPathA 0x1 +#define bTxPathB 0x2 +#define bTxPathC 0x4 +#define bTxPathD 0x8 +#define bTRSSIFreq 0x200 +#define bADCBackoff 0x3000 +#define bDFIRBackoff 0xc000 +#define bTRSSILatchPhase 0x10000 +#define bRxIDCOffset 0xff +#define bRxQDCOffset 0xff00 +#define bRxDFIRMode 0x1800000 +#define bRxDCNFType 0xe000000 +#define bRXIQImb_A 0x3ff +#define bRXIQImb_B 0xfc00 +#define bRXIQImb_C 0x3f0000 +#define bRXIQImb_D 0xffc00000 +#define bDC_dc_Notch 0x60000 +#define bRxNBINotch 0x1f000000 +#define bPD_TH 0xf +#define bPD_TH_Opt2 0xc000 +#define bPWED_TH 0x700 +#define bIfMF_Win_L 0x800 +#define bPD_Option 0x1000 +#define bMF_Win_L 0xe000 +#define bBW_Search_L 0x30000 +#define bwin_enh_L 0xc0000 +#define bBW_TH 0x700000 +#define bED_TH2 0x3800000 +#define bBW_option 0x4000000 +#define bRatio_TH 0x18000000 +#define bWindow_L 0xe0000000 +#define bSBD_Option 0x1 +#define bFrame_TH 0x1c +#define bFS_Option 0x60 +#define bDC_Slope_check 0x80 +#define bFGuard_Counter_DC_L 0xe00 +#define bFrame_Weight_Short 0x7000 +#define bSub_Tune 0xe00000 +#define bFrame_DC_Length 0xe000000 +#define bSBD_start_offset 0x30000000 +#define bFrame_TH_2 0x7 +#define bFrame_GI2_TH 0x38 +#define bGI2_Sync_en 0x40 +#define bSarch_Short_Early 0x300 +#define bSarch_Short_Late 0xc00 +#define bSarch_GI2_Late 0x70000 +#define bCFOAntSum 0x1 +#define bCFOAcc 0x2 +#define bCFOStartOffset 0xc +#define bCFOLookBack 0x70 +#define bCFOSumWeight 0x80 +#define bDAGCEnable 0x10000 +#define bTXIQImb_A 0x3ff +#define bTXIQImb_B 0xfc00 +#define bTXIQImb_C 0x3f0000 +#define bTXIQImb_D 0xffc00000 +#define bTxIDCOffset 0xff +#define bTxQDCOffset 0xff00 +#define bTxDFIRMode 0x10000 +#define bTxPesudoNoiseOn 0x4000000 +#define bTxPesudoNoise_A 0xff +#define bTxPesudoNoise_B 0xff00 +#define bTxPesudoNoise_C 0xff0000 +#define bTxPesudoNoise_D 0xff000000 +#define bCCADropOption 0x20000 +#define bCCADropThres 0xfff00000 +#define bEDCCA_H 0xf +#define bEDCCA_L 0xf0 +#define bLambda_ED 0x300 +#define bRxInitialGain 0x7f +#define bRxAntDivEn 0x80 +#define bRxAGCAddressForLNA 0x7f00 +#define bRxHighPowerFlow 0x8000 +#define bRxAGCFreezeThres 0xc0000 +#define bRxFreezeStep_AGC1 0x300000 +#define bRxFreezeStep_AGC2 0xc00000 +#define bRxFreezeStep_AGC3 0x3000000 +#define bRxFreezeStep_AGC0 0xc000000 +#define bRxRssi_Cmp_En 0x10000000 +#define bRxQuickAGCEn 0x20000000 +#define bRxAGCFreezeThresMode 0x40000000 +#define bRxOverFlowCheckType 0x80000000 +#define bRxAGCShift 0x7f +#define bTRSW_Tri_Only 0x80 +#define bPowerThres 0x300 +#define bRxAGCEn 0x1 +#define bRxAGCTogetherEn 0x2 +#define bRxAGCMin 0x4 +#define bRxHP_Ini 0x7 +#define bRxHP_TRLNA 0x70 +#define bRxHP_RSSI 0x700 +#define bRxHP_BBP1 0x7000 +#define bRxHP_BBP2 0x70000 +#define bRxHP_BBP3 0x700000 +#define bRSSI_H 0x7f0000 //the threshold for high power +#define bRSSI_Gen 0x7f000000 //the threshold for ant diversity +#define bRxSettle_TRSW 0x7 +#define bRxSettle_LNA 0x38 +#define bRxSettle_RSSI 0x1c0 +#define bRxSettle_BBP 0xe00 +#define bRxSettle_RxHP 0x7000 +#define bRxSettle_AntSW_RSSI 0x38000 +#define bRxSettle_AntSW 0xc0000 +#define bRxProcessTime_DAGC 0x300000 +#define bRxSettle_HSSI 0x400000 +#define bRxProcessTime_BBPPW 0x800000 +#define bRxAntennaPowerShift 0x3000000 +#define bRSSITableSelect 0xc000000 +#define bRxHP_Final 0x7000000 +#define bRxHTSettle_BBP 0x7 +#define bRxHTSettle_HSSI 0x8 +#define bRxHTSettle_RxHP 0x70 +#define bRxHTSettle_BBPPW 0x80 +#define bRxHTSettle_Idle 0x300 +#define bRxHTSettle_Reserved 0x1c00 +#define bRxHTRxHPEn 0x8000 +#define bRxHTAGCFreezeThres 0x30000 +#define bRxHTAGCTogetherEn 0x40000 +#define bRxHTAGCMin 0x80000 +#define bRxHTAGCEn 0x100000 +#define bRxHTDAGCEn 0x200000 +#define bRxHTRxHP_BBP 0x1c00000 +#define bRxHTRxHP_Final 0xe0000000 +#define bRxPWRatioTH 0x3 +#define bRxPWRatioEn 0x4 +#define bRxMFHold 0x3800 +#define bRxPD_Delay_TH1 0x38 +#define bRxPD_Delay_TH2 0x1c0 +#define bRxPD_DC_COUNT_MAX 0x600 +//#define bRxMF_Hold 0x3800 +#define bRxPD_Delay_TH 0x8000 +#define bRxProcess_Delay 0xf0000 +#define bRxSearchrange_GI2_Early 0x700000 +#define bRxFrame_Guard_Counter_L 0x3800000 +#define bRxSGI_Guard_L 0xc000000 +#define bRxSGI_Search_L 0x30000000 +#define bRxSGI_TH 0xc0000000 +#define bDFSCnt0 0xff +#define bDFSCnt1 0xff00 +#define bDFSFlag 0xf0000 +#define bMFWeightSum 0x300000 +#define bMinIdxTH 0x7f000000 +#define bDAFormat 0x40000 +#define bTxChEmuEnable 0x01000000 +#define bTRSWIsolation_A 0x7f +#define bTRSWIsolation_B 0x7f00 +#define bTRSWIsolation_C 0x7f0000 +#define bTRSWIsolation_D 0x7f000000 +#define bExtLNAGain 0x7c00 + +// 6. PageE(0xE00) +#define bSTBCEn 0x4 // Useless +#define bAntennaMapping 0x10 +#define bNss 0x20 +#define bCFOAntSumD 0x200 +#define bPHYCounterReset 0x8000000 +#define bCFOReportGet 0x4000000 +#define bOFDMContinueTx 0x10000000 +#define bOFDMSingleCarrier 0x20000000 +#define bOFDMSingleTone 0x40000000 +//#define bRxPath1 0x01 +//#define bRxPath2 0x02 +//#define bRxPath3 0x04 +//#define bRxPath4 0x08 +//#define bTxPath1 0x10 +//#define bTxPath2 0x20 +#define bHTDetect 0x100 +#define bCFOEn 0x10000 +#define bCFOValue 0xfff00000 +#define bSigTone_Re 0x3f +#define bSigTone_Im 0x7f00 +#define bCounter_CCA 0xffff +#define bCounter_ParityFail 0xffff0000 +#define bCounter_RateIllegal 0xffff +#define bCounter_CRC8Fail 0xffff0000 +#define bCounter_MCSNoSupport 0xffff +#define bCounter_FastSync 0xffff +#define bShortCFO 0xfff +#define bShortCFOTLength 12 //total +#define bShortCFOFLength 11 //fraction +#define bLongCFO 0x7ff +#define bLongCFOTLength 11 +#define bLongCFOFLength 11 +#define bTailCFO 0x1fff +#define bTailCFOTLength 13 +#define bTailCFOFLength 12 +#define bmax_en_pwdB 0xffff +#define bCC_power_dB 0xffff0000 +#define bnoise_pwdB 0xffff +#define bPowerMeasTLength 10 +#define bPowerMeasFLength 3 +#define bRx_HT_BW 0x1 +#define bRxSC 0x6 +#define bRx_HT 0x8 +#define bNB_intf_det_on 0x1 +#define bIntf_win_len_cfg 0x30 +#define bNB_Intf_TH_cfg 0x1c0 +#define bRFGain 0x3f +#define bTableSel 0x40 +#define bTRSW 0x80 +#define bRxSNR_A 0xff +#define bRxSNR_B 0xff00 +#define bRxSNR_C 0xff0000 +#define bRxSNR_D 0xff000000 +#define bSNREVMTLength 8 +#define bSNREVMFLength 1 +#define bCSI1st 0xff +#define bCSI2nd 0xff00 +#define bRxEVM1st 0xff0000 +#define bRxEVM2nd 0xff000000 +#define bSIGEVM 0xff +#define bPWDB 0xff00 +#define bSGIEN 0x10000 + +#define bSFactorQAM1 0xf // Useless +#define bSFactorQAM2 0xf0 +#define bSFactorQAM3 0xf00 +#define bSFactorQAM4 0xf000 +#define bSFactorQAM5 0xf0000 +#define bSFactorQAM6 0xf0000 +#define bSFactorQAM7 0xf00000 +#define bSFactorQAM8 0xf000000 +#define bSFactorQAM9 0xf0000000 +#define bCSIScheme 0x100000 + +#define bNoiseLvlTopSet 0x3 // Useless +#define bChSmooth 0x4 +#define bChSmoothCfg1 0x38 +#define bChSmoothCfg2 0x1c0 +#define bChSmoothCfg3 0xe00 +#define bChSmoothCfg4 0x7000 +#define bMRCMode 0x800000 +#define bTHEVMCfg 0x7000000 + +#define bLoopFitType 0x1 // Useless +#define bUpdCFO 0x40 +#define bUpdCFOOffData 0x80 +#define bAdvUpdCFO 0x100 +#define bAdvTimeCtrl 0x800 +#define bUpdClko 0x1000 +#define bFC 0x6000 +#define bTrackingMode 0x8000 +#define bPhCmpEnable 0x10000 +#define bUpdClkoLTF 0x20000 +#define bComChCFO 0x40000 +#define bCSIEstiMode 0x80000 +#define bAdvUpdEqz 0x100000 +#define bUChCfg 0x7000000 +#define bUpdEqz 0x8000000 + +#define bTxAGCRate18_06 0x7f7f7f7f // Useless +#define bTxAGCRate54_24 0x7f7f7f7f +#define bTxAGCRateMCS32 0x7f +#define bTxAGCRateCCK 0x7f00 +#define bTxAGCRateMCS3_MCS0 0x7f7f7f7f +#define bTxAGCRateMCS7_MCS4 0x7f7f7f7f +#define bTxAGCRateMCS11_MCS8 0x7f7f7f7f +#define bTxAGCRateMCS15_MCS12 0x7f7f7f7f + +//Rx Pseduo noise +#define bRxPesudoNoiseOn 0x20000000 // Useless +#define bRxPesudoNoise_A 0xff +#define bRxPesudoNoise_B 0xff00 +#define bRxPesudoNoise_C 0xff0000 +#define bRxPesudoNoise_D 0xff000000 +#define bPesudoNoiseState_A 0xffff +#define bPesudoNoiseState_B 0xffff0000 +#define bPesudoNoiseState_C 0xffff +#define bPesudoNoiseState_D 0xffff0000 + +//7. RF Register +//Zebra1 +#define bZebra1_HSSIEnable 0x8 // Useless +#define bZebra1_TRxControl 0xc00 +#define bZebra1_TRxGainSetting 0x07f +#define bZebra1_RxCorner 0xc00 +#define bZebra1_TxChargePump 0x38 +#define bZebra1_RxChargePump 0x7 +#define bZebra1_ChannelNum 0xf80 +#define bZebra1_TxLPFBW 0x400 +#define bZebra1_RxLPFBW 0x600 + +//Zebra4 +#define bRTL8256RegModeCtrl1 0x100 // Useless +#define bRTL8256RegModeCtrl0 0x40 +#define bRTL8256_TxLPFBW 0x18 +#define bRTL8256_RxLPFBW 0x600 + +//RTL8258 +#define bRTL8258_TxLPFBW 0xc // Useless +#define bRTL8258_RxLPFBW 0xc00 +#define bRTL8258_RSSILPFBW 0xc0 + + +// +// Other Definition +// + +//byte endable for sb_write +#define bByte0 0x1 // Useless +#define bByte1 0x2 +#define bByte2 0x4 +#define bByte3 0x8 +#define bWord0 0x3 +#define bWord1 0xc +#define bDWord 0xf + +//for PutRegsetting & GetRegSetting BitMask +#define bMaskByte0 0xff // Reg 0xc50 rOFDM0_XAAGCCore~0xC6f +#define bMaskByte1 0xff00 +#define bMaskByte2 0xff0000 +#define bMaskByte3 0xff000000 +#define bMaskHWord 0xffff0000 +#define bMaskLWord 0x0000ffff +#define bMaskDWord 0xffffffff +#define bMaskH4Bits 0xf0000000 +#define bMaskOFDM_D 0xffc00000 +#define bMaskCCK 0x3f3f3f3f +#define bMask12Bits 0xfff + +//for PutRFRegsetting & GetRFRegSetting BitMask +#if (RTL92SE_FPGA_VERIFY == 1) +//#define bMask12Bits 0xfff // RF Reg mask bits +//#define bMask20Bits 0xfff // RF Reg mask bits T65 RF +#define bRFRegOffsetMask 0xfff +#else +//#define bMask12Bits 0xfffff // RF Reg mask bits +//#define bMask20Bits 0xfffff // RF Reg mask bits T65 RF +#define bRFRegOffsetMask 0xfffff +#endif +#define bEnable 0x1 // Useless +#define bDisable 0x0 + +#define LeftAntenna 0x0 // Useless +#define RightAntenna 0x1 + +#define tCheckTxStatus 500 //500ms // Useless +#define tUpdateRxCounter 100 //100ms + +#define rateCCK 0 // Useless +#define rateOFDM 1 +#define rateHT 2 + +//define Register-End +#define bPMAC_End 0x1ff // Useless +#define bFPGAPHY0_End 0x8ff +#define bFPGAPHY1_End 0x9ff +#define bCCKPHY0_End 0xaff +#define bOFDMPHY0_End 0xcff +#define bOFDMPHY1_End 0xdff + +//define max debug item in each debug page +//#define bMaxItem_FPGA_PHY0 0x9 +//#define bMaxItem_FPGA_PHY1 0x3 +//#define bMaxItem_PHY_11B 0x16 +//#define bMaxItem_OFDM_PHY0 0x29 +//#define bMaxItem_OFDM_PHY1 0x0 + +#define bPMACControl 0x0 // Useless +#define bWMACControl 0x1 +#define bWNICControl 0x2 + +#if 0 +#define ANTENNA_A 0x1 // Useless +#define ANTENNA_B 0x2 +#define ANTENNA_AB 0x3 // ANTENNA_A|ANTENNA_B + +#define ANTENNA_C 0x4 +#define ANTENNA_D 0x8 +#endif + +#define RCR_AAP BIT(0) // accept all physical address +#define RCR_APM BIT(1) // accept physical match +#define RCR_AM BIT(2) // accept multicast +#define RCR_AB BIT(3) // accept broadcast +#define RCR_ACRC32 BIT(5) // accept error packet +#define RCR_9356SEL BIT(6) +#define RCR_AICV BIT(12) // Accept ICV error packet +#define RCR_RXFTH0 (BIT(13)|BIT(14)|BIT(15)) // Rx FIFO threshold +#define RCR_ADF BIT(18) // Accept Data(frame type) frame +#define RCR_ACF BIT(19) // Accept control frame +#define RCR_AMF BIT(20) // Accept management frame +#define RCR_ADD3 BIT(21) +#define RCR_APWRMGT BIT(22) // Accept power management packet +#define RCR_CBSSID BIT(23) // Accept BSSID match packet +#define RCR_ENMARP BIT(28) // enable mac auto reset phy +#define RCR_EnCS1 BIT(29) // enable carrier sense method 1 +#define RCR_EnCS2 BIT(30) // enable carrier sense method 2 +#define RCR_OnlyErlPkt BIT(31) // Rx Early mode is performed for packet size greater than 1536 + +/*--------------------------Define Parameters-------------------------------*/ + + +#endif //__INC_HAL8192SPHYREG_H --- linux-raspi2-4.2.0.orig/drivers/net/wireless/rtl8192cu/include/rtw_p2p.h +++ linux-raspi2-4.2.0/drivers/net/wireless/rtl8192cu/include/rtw_p2p.h @@ -0,0 +1,160 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved. + * + * 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 + * published by the Free Software Foundation. + * + * 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 Street, Fifth Floor, Boston, MA 02110, USA + * + * + ******************************************************************************/ +#ifndef __RTW_P2P_H_ +#define __RTW_P2P_H_ + +#include + +u32 build_beacon_p2p_ie(struct wifidirect_info *pwdinfo, u8 *pbuf); +u32 build_probe_resp_p2p_ie(struct wifidirect_info *pwdinfo, u8 *pbuf); +u32 build_prov_disc_request_p2p_ie(struct wifidirect_info *pwdinfo, u8 *pbuf, u8* pssid, u8 ussidlen, u8* pdev_raddr ); +u32 build_assoc_resp_p2p_ie(struct wifidirect_info *pwdinfo, u8 *pbuf, u8 status_code); +u32 build_deauth_p2p_ie(struct wifidirect_info *pwdinfo, u8 *pbuf); +#ifdef CONFIG_WFD +u32 build_probe_req_wfd_ie(struct wifidirect_info *pwdinfo, u8 *pbuf); +u32 build_probe_resp_wfd_ie(struct wifidirect_info *pwdinfo, u8 *pbuf, u8 tunneled); +u32 build_beacon_wfd_ie(struct wifidirect_info *pwdinfo, u8 *pbuf); +u32 build_nego_req_wfd_ie(struct wifidirect_info *pwdinfo, u8 *pbuf); +u32 build_nego_resp_wfd_ie(struct wifidirect_info *pwdinfo, u8 *pbuf); +u32 build_nego_confirm_wfd_ie(struct wifidirect_info *pwdinfo, u8 *pbuf); +u32 build_invitation_req_wfd_ie(struct wifidirect_info *pwdinfo, u8 *pbuf); +u32 build_invitation_resp_wfd_ie(struct wifidirect_info *pwdinfo, u8 *pbuf); +u32 build_assoc_req_wfd_ie(struct wifidirect_info *pwdinfo, u8 *pbuf); +u32 build_assoc_resp_wfd_ie(struct wifidirect_info *pwdinfo, u8 *pbuf); +u32 build_provdisc_req_wfd_ie(struct wifidirect_info *pwdinfo, u8 *pbuf); +u32 build_provdisc_resp_wfd_ie(struct wifidirect_info *pwdinfo, u8 *pbuf); +#endif //CONFIG_WFD + +u32 process_probe_req_p2p_ie(struct wifidirect_info *pwdinfo, u8 *pframe, uint len); +u32 process_assoc_req_p2p_ie(struct wifidirect_info *pwdinfo, u8 *pframe, uint len, struct sta_info *psta); +u32 process_p2p_devdisc_req(struct wifidirect_info *pwdinfo, u8 *pframe, uint len); +u32 process_p2p_devdisc_resp(struct wifidirect_info *pwdinfo, u8 *pframe, uint len); +u8 process_p2p_provdisc_req(struct wifidirect_info *pwdinfo, u8 *pframe, uint len); +u8 process_p2p_provdisc_resp(struct wifidirect_info *pwdinfo, u8 *pframe); +u8 process_p2p_group_negotation_req( struct wifidirect_info *pwdinfo, u8 *pframe, uint len ); +u8 process_p2p_group_negotation_resp( struct wifidirect_info *pwdinfo, u8 *pframe, uint len ); +u8 process_p2p_group_negotation_confirm( struct wifidirect_info *pwdinfo, u8 *pframe, uint len ); +u8 process_p2p_presence_req(struct wifidirect_info *pwdinfo, u8 *pframe, uint len); + +void p2p_protocol_wk_hdl(_adapter *padapter, int intCmdType); + +#ifdef CONFIG_P2P_PS +void process_p2p_ps_ie(PADAPTER padapter, u8 *IEs, u32 IELength); +void p2p_ps_wk_hdl(_adapter *padapter, u8 p2p_ps_state); +u8 p2p_ps_wk_cmd(_adapter*padapter, u8 p2p_ps_state, u8 enqueue); +#endif // CONFIG_P2P_PS + +#ifdef CONFIG_IOCTL_CFG80211 +void rtw_init_cfg80211_wifidirect_info( _adapter* padapter); +int rtw_p2p_check_frames(_adapter *padapter, const u8 *buf, u32 len, u8 tx); +void rtw_append_wfd_ie(_adapter *padapter, u8 *buf, u32 *len); +#endif //CONFIG_IOCTL_CFG80211 + +void reset_global_wifidirect_info( _adapter* padapter ); +int rtw_init_wifi_display_info(_adapter* padapter); +void rtw_init_wifidirect_timers(_adapter* padapter); +void rtw_init_wifidirect_addrs(_adapter* padapter, u8 *dev_addr, u8 *iface_addr); +void init_wifidirect_info( _adapter* padapter, enum P2P_ROLE role); +int rtw_p2p_enable(_adapter *padapter, enum P2P_ROLE role); + +static inline void _rtw_p2p_set_state(struct wifidirect_info *wdinfo, enum P2P_STATE state) +{ + if(wdinfo->p2p_state != state) { + //wdinfo->pre_p2p_state = wdinfo->p2p_state; + wdinfo->p2p_state = state; + } +} +static inline void _rtw_p2p_set_pre_state(struct wifidirect_info *wdinfo, enum P2P_STATE state) +{ + if(wdinfo->pre_p2p_state != state) { + wdinfo->pre_p2p_state = state; + } +} +#if 0 +static inline void _rtw_p2p_restore_state(struct wifidirect_info *wdinfo) +{ + if(wdinfo->pre_p2p_state != -1) { + wdinfo->p2p_state = wdinfo->pre_p2p_state; + wdinfo->pre_p2p_state = -1; + } +} +#endif +static inline void _rtw_p2p_set_role(struct wifidirect_info *wdinfo, enum P2P_ROLE role) +{ + if(wdinfo->role != role) { + wdinfo->role = role; + } +} +static inline int _rtw_p2p_state(struct wifidirect_info *wdinfo) +{ + return wdinfo->p2p_state; +} +static inline int _rtw_p2p_pre_state(struct wifidirect_info *wdinfo) +{ + return wdinfo->pre_p2p_state; +} +static inline int _rtw_p2p_role(struct wifidirect_info *wdinfo) +{ + return wdinfo->role; +} +static inline bool _rtw_p2p_chk_state(struct wifidirect_info *wdinfo, enum P2P_STATE state) +{ + return wdinfo->p2p_state == state; +} +static inline bool _rtw_p2p_chk_role(struct wifidirect_info *wdinfo, enum P2P_ROLE role) +{ + return wdinfo->role == role; +} + +#ifdef CONFIG_DBG_P2P +void dbg_rtw_p2p_set_state(struct wifidirect_info *wdinfo, enum P2P_STATE state, const char *caller, int line); +void dbg_rtw_p2p_set_pre_state(struct wifidirect_info *wdinfo, enum P2P_STATE state, const char *caller, int line); +//void dbg_rtw_p2p_restore_state(struct wifidirect_info *wdinfo, const char *caller, int line); +void dbg_rtw_p2p_set_role(struct wifidirect_info *wdinfo, enum P2P_ROLE role, const char *caller, int line); +#define rtw_p2p_set_state(wdinfo, state) dbg_rtw_p2p_set_state(wdinfo, state, __FUNCTION__, __LINE__) +#define rtw_p2p_set_pre_state(wdinfo, state) dbg_rtw_p2p_set_pre_state(wdinfo, state, __FUNCTION__, __LINE__) +#define rtw_p2p_set_role(wdinfo, role) dbg_rtw_p2p_set_role(wdinfo, role, __FUNCTION__, __LINE__) +//#define rtw_p2p_restore_state(wdinfo) dbg_rtw_p2p_restore_state(wdinfo, __FUNCTION__, __LINE__) +#else //CONFIG_DBG_P2P +#define rtw_p2p_set_state(wdinfo, state) _rtw_p2p_set_state(wdinfo, state) +#define rtw_p2p_set_pre_state(wdinfo, state) _rtw_p2p_set_pre_state(wdinfo, state) +#define rtw_p2p_set_role(wdinfo, role) _rtw_p2p_set_role(wdinfo, role) +//#define rtw_p2p_restore_state(wdinfo) _rtw_p2p_restore_state(wdinfo) +#endif //CONFIG_DBG_P2P + +#define rtw_p2p_state(wdinfo) _rtw_p2p_state(wdinfo) +#define rtw_p2p_pre_state(wdinfo) _rtw_p2p_pre_state(wdinfo) +#define rtw_p2p_role(wdinfo) _rtw_p2p_role(wdinfo) +#define rtw_p2p_chk_state(wdinfo, state) _rtw_p2p_chk_state(wdinfo, state) +#define rtw_p2p_chk_role(wdinfo, role) _rtw_p2p_chk_role(wdinfo, role) + +#define rtw_p2p_findphase_ex_set(wdinfo, value) \ + (wdinfo)->find_phase_state_exchange_cnt = (value) + +//is this find phase exchange for social channel scan? +#define rtw_p2p_findphase_ex_is_social(wdinfo) \ + (wdinfo)->find_phase_state_exchange_cnt >= P2P_FINDPHASE_EX_SOCIAL_FIRST + +//should we need find phase exchange anymore? +#define rtw_p2p_findphase_ex_is_needed(wdinfo) \ + ((wdinfo)->find_phase_state_exchange_cnt < P2P_FINDPHASE_EX_MAX && \ + (wdinfo)->find_phase_state_exchange_cnt != P2P_FINDPHASE_EX_NONE) + +#endif --- linux-raspi2-4.2.0.orig/drivers/net/wireless/rtl8192cu/include/rtw_pwrctrl.h +++ linux-raspi2-4.2.0/drivers/net/wireless/rtl8192cu/include/rtw_pwrctrl.h @@ -0,0 +1,362 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved. + * + * 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 + * published by the Free Software Foundation. + * + * 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 Street, Fifth Floor, Boston, MA 02110, USA + * + * + ******************************************************************************/ +#ifndef __RTW_PWRCTRL_H_ +#define __RTW_PWRCTRL_H_ + +#include +#include +#include + +#ifdef CONFIG_HAS_EARLYSUSPEND +#include +#endif //CONFIG_HAS_EARLYSUSPEND + + +#define FW_PWR0 0 +#define FW_PWR1 1 +#define FW_PWR2 2 +#define FW_PWR3 3 + + +#define HW_PWR0 7 +#define HW_PWR1 6 +#define HW_PWR2 2 +#define HW_PWR3 0 +#define HW_PWR4 8 + +#define FW_PWRMSK 0x7 + + +#define XMIT_ALIVE BIT(0) +#define RECV_ALIVE BIT(1) +#define CMD_ALIVE BIT(2) +#define EVT_ALIVE BIT(3) + + +enum Power_Mgnt +{ + PS_MODE_ACTIVE = 0 , + PS_MODE_MIN , + PS_MODE_MAX , + PS_MODE_DTIM , + PS_MODE_VOIP , + PS_MODE_UAPSD_WMM , + PS_MODE_UAPSD , + PS_MODE_IBSS , + PS_MODE_WWLAN , + PM_Radio_Off , + PM_Card_Disable , + PS_MODE_NUM +}; + + +/* + BIT[2:0] = HW state + BIT[3] = Protocol PS state, 0: register active state , 1: register sleep state + BIT[4] = sub-state +*/ + +#define PS_DPS BIT(0) +#define PS_LCLK (PS_DPS) +#define PS_RF_OFF BIT(1) +#define PS_ALL_ON BIT(2) +#define PS_ST_ACTIVE BIT(3) + +#define PS_ISR_ENABLE BIT(4) +#define PS_IMR_ENABLE BIT(5) +#define PS_ACK BIT(6) +#define PS_TOGGLE BIT(7) + +#define PS_STATE_MASK (0x0F) +#define PS_STATE_HW_MASK (0x07) +#define PS_SEQ_MASK (0xc0) + +#define PS_STATE(x) (PS_STATE_MASK & (x)) +#define PS_STATE_HW(x) (PS_STATE_HW_MASK & (x)) +#define PS_SEQ(x) (PS_SEQ_MASK & (x)) + +#define PS_STATE_S0 (PS_DPS) +#define PS_STATE_S1 (PS_LCLK) +#define PS_STATE_S2 (PS_RF_OFF) +#define PS_STATE_S3 (PS_ALL_ON) +#define PS_STATE_S4 ((PS_ST_ACTIVE) | (PS_ALL_ON)) + + +#define PS_IS_RF_ON(x) ((x) & (PS_ALL_ON)) +#define PS_IS_ACTIVE(x) ((x) & (PS_ST_ACTIVE)) +#define CLR_PS_STATE(x) ((x) = ((x) & (0xF0))) + + +struct reportpwrstate_parm { + unsigned char mode; + unsigned char state; //the CPWM value + unsigned short rsvd; +}; + + +typedef _sema _pwrlock; + + +__inline static void _init_pwrlock(_pwrlock *plock) +{ + _rtw_init_sema(plock, 1); +} + +__inline static void _free_pwrlock(_pwrlock *plock) +{ + _rtw_free_sema(plock); +} + + +__inline static void _enter_pwrlock(_pwrlock *plock) +{ + _rtw_down_sema(plock); +} + + +__inline static void _exit_pwrlock(_pwrlock *plock) +{ + _rtw_up_sema(plock); +} + +#define LPS_DELAY_TIME 1*HZ // 1 sec + +#define EXE_PWR_NONE 0x01 +#define EXE_PWR_IPS 0x02 +#define EXE_PWR_LPS 0x04 + +// RF state. +typedef enum _rt_rf_power_state +{ + rf_on, // RF is on after RFSleep or RFOff + rf_sleep, // 802.11 Power Save mode + rf_off, // HW/SW Radio OFF or Inactive Power Save + //=====Add the new RF state above this line=====// + rf_max +}rt_rf_power_state; + +// RF Off Level for IPS or HW/SW radio off +#define RT_RF_OFF_LEVL_ASPM BIT(0) // PCI ASPM +#define RT_RF_OFF_LEVL_CLK_REQ BIT(1) // PCI clock request +#define RT_RF_OFF_LEVL_PCI_D3 BIT(2) // PCI D3 mode +#define RT_RF_OFF_LEVL_HALT_NIC BIT(3) // NIC halt, re-initialize hw parameters +#define RT_RF_OFF_LEVL_FREE_FW BIT(4) // FW free, re-download the FW +#define RT_RF_OFF_LEVL_FW_32K BIT(5) // FW in 32k +#define RT_RF_PS_LEVEL_ALWAYS_ASPM BIT(6) // Always enable ASPM and Clock Req in initialization. +#define RT_RF_LPS_DISALBE_2R BIT(30) // When LPS is on, disable 2R if no packet is received or transmittd. +#define RT_RF_LPS_LEVEL_ASPM BIT(31) // LPS with ASPM + +#define RT_IN_PS_LEVEL(ppsc, _PS_FLAG) ((ppsc->cur_ps_level & _PS_FLAG) ? _TRUE : _FALSE) +#define RT_CLEAR_PS_LEVEL(ppsc, _PS_FLAG) (ppsc->cur_ps_level &= (~(_PS_FLAG))) +#define RT_SET_PS_LEVEL(ppsc, _PS_FLAG) (ppsc->cur_ps_level |= _PS_FLAG) + + +enum _PS_BBRegBackup_ { + PSBBREG_RF0 = 0, + PSBBREG_RF1, + PSBBREG_RF2, + PSBBREG_AFE0, + PSBBREG_TOTALCNT +}; + +enum { // for ips_mode + IPS_NONE=0, + IPS_NORMAL, + IPS_LEVEL_2, +}; + +struct pwrctrl_priv +{ + _pwrlock lock; + volatile u8 rpwm; // requested power state for fw + volatile u8 cpwm; // fw current power state. updated when 1. read from HCPWM 2. driver lowers power level + volatile u8 tog; // toggling + volatile u8 cpwm_tog; // toggling + u8 pwr_mode; + u8 smart_ps; + u32 alives; + + u8 b_hw_radio_off; + u8 reg_rfoff; + u8 reg_pdnmode; //powerdown mode + u32 rfoff_reason; + + //RF OFF Level + u32 cur_ps_level; + u32 reg_rfps_level; + + + +#ifdef CONFIG_PCI_HCI + //just for PCIE ASPM + u8 b_support_aspm; // If it supports ASPM, Offset[560h] = 0x40, otherwise Offset[560h] = 0x00. + u8 b_support_backdoor; + + //just for PCIE ASPM + u8 const_amdpci_aspm; +#endif + + uint ips_enter_cnts; + uint ips_leave_cnts; + + u8 ips_mode; + u8 ips_mode_req; // used to accept the mode setting request, will update to ipsmode later + uint bips_processing; + u32 ips_deny_time; /* will deny IPS when system time is smaller than this */ + u8 ps_processing; /* temporarily used to mark whether in rtw_ps_processor */ + + u8 bLeisurePs; + u8 LpsIdleCount; + u8 power_mgnt; + u8 bFwCurrentInPSMode; + u32 DelayLPSLastTimeStamp; + + s32 pnp_current_pwr_state; + u8 pnp_bstop_trx; + + + u8 bInternalAutoSuspend; + u8 bInSuspend; + u8 bSupportRemoteWakeup; +#ifdef CONFIG_WOWLAN + u8 wowlan_mode; + u8 wowlan_pattern; + u8 wowlan_magic; + u8 wowlan_unicast; + u8 wowlan_pattern_idx; + u32 wowlan_pattern_context[8][5]; +#endif // CONFIG_WOWLAN + _timer pwr_state_check_timer; + int pwr_state_check_interval; + u8 pwr_state_check_cnts; + + int ps_flag; + + rt_rf_power_state rf_pwrstate;//cur power state + //rt_rf_power_state current_rfpwrstate; + rt_rf_power_state change_rfpwrstate; + + u8 bHWPowerdown;//if support hw power down + u8 bHWPwrPindetect; + u8 bkeepfwalive; + u8 brfoffbyhw; + unsigned long PS_BBRegBackup[PSBBREG_TOTALCNT]; + + #ifdef CONFIG_RESUME_IN_WORKQUEUE + struct workqueue_struct *rtw_workqueue; + _workitem resume_work; + #endif + + #ifdef CONFIG_HAS_EARLYSUSPEND + struct early_suspend early_suspend; + u8 do_late_resume; + #endif //CONFIG_HAS_EARLYSUSPEND + + #ifdef CONFIG_ANDROID_POWER + android_early_suspend_t early_suspend; + u8 do_late_resume; + #endif + +}; + +#define rtw_get_ips_mode_req(pwrctrlpriv) \ + (pwrctrlpriv)->ips_mode_req + +#define rtw_ips_mode_req(pwrctrlpriv, ips_mode) \ + (pwrctrlpriv)->ips_mode_req = (ips_mode) + +#define RTW_PWR_STATE_CHK_INTERVAL 2000 + +#define _rtw_set_pwr_state_check_timer(pwrctrlpriv, ms) \ + do { \ + /*DBG_871X("%s _rtw_set_pwr_state_check_timer(%p, %d)\n", __FUNCTION__, (pwrctrlpriv), (ms));*/ \ + _set_timer(&(pwrctrlpriv)->pwr_state_check_timer, (ms)); \ + } while(0) + +#define rtw_set_pwr_state_check_timer(pwrctrlpriv) \ + _rtw_set_pwr_state_check_timer((pwrctrlpriv), (pwrctrlpriv)->pwr_state_check_interval) + +extern void rtw_init_pwrctrl_priv(_adapter *adapter); +extern void rtw_free_pwrctrl_priv(_adapter * adapter); + +#ifdef CONFIG_LPS_LCLK +extern s32 rtw_register_tx_alive(PADAPTER padapter); +extern void rtw_unregister_tx_alive(PADAPTER padapter); +extern s32 rtw_register_rx_alive(PADAPTER padapter); +extern void rtw_unregister_rx_alive(PADAPTER padapter); +extern s32 rtw_register_cmd_alive(PADAPTER padapter); +extern void rtw_unregister_cmd_alive(PADAPTER padapter); +extern s32 rtw_register_evt_alive(PADAPTER padapter); +extern void rtw_unregister_evt_alive(PADAPTER padapter); +extern void cpwm_int_hdl(PADAPTER padapter, struct reportpwrstate_parm *preportpwrstate); +#endif + +extern void rtw_set_ps_mode(_adapter * padapter, u8 ps_mode, u8 smart_ps); +extern void rtw_set_rpwm(_adapter * padapter, u8 val8); +extern void LeaveAllPowerSaveMode(PADAPTER Adapter); +#ifdef CONFIG_IPS +void _ips_enter(_adapter * padapter); +void ips_enter(_adapter * padapter); +int _ips_leave(_adapter * padapter); +int ips_leave(_adapter * padapter); +#endif + +void rtw_ps_processor(_adapter*padapter); + +#ifdef CONFIG_AUTOSUSPEND +int autoresume_enter(_adapter* padapter); +#endif +#ifdef SUPPORT_HW_RFOFF_DETECTED +rt_rf_power_state RfOnOffDetect(IN PADAPTER pAdapter ); +#endif + + +#ifdef CONFIG_LPS +void LPS_Enter(PADAPTER padapter); +void LPS_Leave(PADAPTER padapter); +#endif + +#ifdef CONFIG_RESUME_IN_WORKQUEUE +void rtw_resume_in_workqueue(struct pwrctrl_priv *pwrpriv); +#endif //CONFIG_RESUME_IN_WORKQUEUE + +#if defined(CONFIG_HAS_EARLYSUSPEND ) || defined(CONFIG_ANDROID_POWER) +bool rtw_is_earlysuspend_registered(struct pwrctrl_priv *pwrpriv); +bool rtw_is_do_late_resume(struct pwrctrl_priv *pwrpriv); +void rtw_set_do_late_resume(struct pwrctrl_priv *pwrpriv, bool enable); +void rtw_register_early_suspend(struct pwrctrl_priv *pwrpriv); +void rtw_unregister_early_suspend(struct pwrctrl_priv *pwrpriv); +#else +#define rtw_is_earlysuspend_registered(pwrpriv) _FALSE +#define rtw_is_do_late_resume(pwrpriv) _FALSE +#define rtw_set_do_late_resume(pwrpriv, enable) do {} while (0) +#define rtw_register_early_suspend(pwrpriv) do {} while (0) +#define rtw_unregister_early_suspend(pwrpriv) do {} while (0) +#endif /* CONFIG_HAS_EARLYSUSPEND || CONFIG_ANDROID_POWER */ + +u8 rtw_interface_ps_func(_adapter *padapter,HAL_INTF_PS_FUNC efunc_id,u8* val); +void rtw_set_ips_deny(_adapter *padapter, u32 ms); +int _rtw_pwr_wakeup(_adapter *padapter, u32 ips_deffer_ms, const char *caller); +#define rtw_pwr_wakeup(adapter) _rtw_pwr_wakeup(adapter, RTW_PWR_STATE_CHK_INTERVAL, __FUNCTION__) +#define rtw_pwr_wakeup_ex(adapter, ips_deffer_ms) _rtw_pwr_wakeup(adapter, ips_deffer_ms, __FUNCTION__) +int rtw_pm_set_ips(_adapter *padapter, u8 mode); +int rtw_pm_set_lps(_adapter *padapter, u8 mode); + +#endif //__RTL871X_PWRCTRL_H_ --- linux-raspi2-4.2.0.orig/drivers/net/wireless/rtl8192cu/include/rtw_qos.h +++ linux-raspi2-4.2.0/drivers/net/wireless/rtl8192cu/include/rtw_qos.h @@ -0,0 +1,39 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved. + * + * 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 + * published by the Free Software Foundation. + * + * 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 Street, Fifth Floor, Boston, MA 02110, USA + * + * + ******************************************************************************/ + + +#ifndef _RTW_QOS_H_ +#define _RTW_QOS_H_ +#include +#include + + + + + + +struct qos_priv { + + unsigned int qos_option; //bit mask option: u-apsd, s-apsd, ts, block ack... + +}; + + +#endif //_RTL871X_QOS_H_ --- linux-raspi2-4.2.0.orig/drivers/net/wireless/rtl8192cu/include/rtw_recv.h +++ linux-raspi2-4.2.0/drivers/net/wireless/rtl8192cu/include/rtw_recv.h @@ -0,0 +1,730 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved. + * + * 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 + * published by the Free Software Foundation. + * + * 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 Street, Fifth Floor, Boston, MA 02110, USA + * + * + ******************************************************************************/ +#ifndef _RTW_RECV_H_ +#define _RTW_RECV_H_ + +#include +#include +#include + + +#define NR_RECVFRAME 256 + +#define RXFRAME_ALIGN 8 +#define RXFRAME_ALIGN_SZ (1<signal_stat_timer, (recvpriv)->signal_stat_sampling_interval) +#endif //CONFIG_NEW_SIGNAL_STAT_PROCESS + +struct sta_recv_priv { + + _lock lock; + sint option; + + //_queue blk_strms[MAX_RX_NUMBLKS]; + _queue defrag_q; //keeping the fragment frame until defrag + + struct stainfo_rxcache rxcache; + + //uint sta_rx_bytes; + //uint sta_rx_pkts; + //uint sta_rx_fail; + +}; + + +struct recv_buf +{ + _list list; + + _lock recvbuf_lock; + + u32 ref_cnt; + + PADAPTER adapter; + + u8 *pbuf; + u8 *pallocated_buf; + + u32 len; + u8 *phead; + u8 *pdata; + u8 *ptail; + u8 *pend; + +#ifdef CONFIG_USB_HCI + + #if defined(PLATFORM_OS_XP)||defined(PLATFORM_LINUX)||defined(PLATFORM_FREEBSD) + PURB purb; + dma_addr_t dma_transfer_addr; /* (in) dma addr for transfer_buffer */ + u32 alloc_sz; + #endif + + #ifdef PLATFORM_OS_XP + PIRP pirp; + #endif + + #ifdef PLATFORM_OS_CE + USB_TRANSFER usb_transfer_read_port; + #endif + + u8 irp_pending; + int transfer_len; + +#endif + +#ifdef PLATFORM_LINUX + _pkt *pskb; + u8 reuse; +#endif +#ifdef PLATFORM_FREEBSD //skb solution + struct sk_buff *pskb; + u8 reuse; +#endif //PLATFORM_FREEBSD //skb solution +}; + + +/* + head -----> + + data -----> + + payload + + tail -----> + + + end -----> + + len = (unsigned int )(tail - data); + +*/ +struct recv_frame_hdr +{ + _list list; +#ifndef CONFIG_BSD_RX_USE_MBUF + struct sk_buff *pkt; + struct sk_buff *pkt_newalloc; +#else // CONFIG_BSD_RX_USE_MBUF + _pkt *pkt; + _pkt *pkt_newalloc; +#endif // CONFIG_BSD_RX_USE_MBUF + + _adapter *adapter; + + u8 fragcnt; + + int frame_tag; + + struct rx_pkt_attrib attrib; + + uint len; + u8 *rx_head; + u8 *rx_data; + u8 *rx_tail; + u8 *rx_end; + + void *precvbuf; + + + // + struct sta_info *psta; + + //for A-MPDU Rx reordering buffer control + struct recv_reorder_ctrl *preorder_ctrl; + +}; + + +union recv_frame{ + + union{ + _list list; + struct recv_frame_hdr hdr; + uint mem[RECVFRAME_HDR_ALIGN>>2]; + }u; + + //uint mem[MAX_RXSZ>>2]; + +}; + + +extern union recv_frame *_rtw_alloc_recvframe (_queue *pfree_recv_queue); //get a free recv_frame from pfree_recv_queue +extern union recv_frame *rtw_alloc_recvframe (_queue *pfree_recv_queue); //get a free recv_frame from pfree_recv_queue +extern void rtw_init_recvframe(union recv_frame *precvframe ,struct recv_priv *precvpriv); +extern int rtw_free_recvframe(union recv_frame *precvframe, _queue *pfree_recv_queue); + +#define rtw_dequeue_recvframe(queue) rtw_alloc_recvframe(queue) +extern int _rtw_enqueue_recvframe(union recv_frame *precvframe, _queue *queue); +extern int rtw_enqueue_recvframe(union recv_frame *precvframe, _queue *queue); + +extern void rtw_free_recvframe_queue(_queue *pframequeue, _queue *pfree_recv_queue); +u32 rtw_free_uc_swdec_pending_queue(_adapter *adapter); + +sint rtw_enqueue_recvbuf_to_head(struct recv_buf *precvbuf, _queue *queue); +sint rtw_enqueue_recvbuf(struct recv_buf *precvbuf, _queue *queue); +struct recv_buf *rtw_dequeue_recvbuf (_queue *queue); + +void rtw_reordering_ctrl_timeout_handler(void *pcontext); + +__inline static u8 *get_rxmem(union recv_frame *precvframe) +{ + //always return rx_head... + if(precvframe==NULL) + return NULL; + + return precvframe->u.hdr.rx_head; +} + +__inline static u8 *get_rx_status(union recv_frame *precvframe) +{ + + return get_rxmem(precvframe); + +} + +__inline static u8 *get_recvframe_data(union recv_frame *precvframe) +{ + + //alwasy return rx_data + if(precvframe==NULL) + return NULL; + + return precvframe->u.hdr.rx_data; + +} + +__inline static u8 *recvframe_push(union recv_frame *precvframe, sint sz) +{ + // append data before rx_data + + /* add data to the start of recv_frame + * + * This function extends the used data area of the recv_frame at the buffer + * start. rx_data must be still larger than rx_head, after pushing. + */ + + if(precvframe==NULL) + return NULL; + + + precvframe->u.hdr.rx_data -= sz ; + if( precvframe->u.hdr.rx_data < precvframe->u.hdr.rx_head ) + { + precvframe->u.hdr.rx_data += sz ; + return NULL; + } + + precvframe->u.hdr.len +=sz; + + return precvframe->u.hdr.rx_data; + +} + + +__inline static u8 *recvframe_pull(union recv_frame *precvframe, sint sz) +{ + // rx_data += sz; move rx_data sz bytes hereafter + + //used for extract sz bytes from rx_data, update rx_data and return the updated rx_data to the caller + + + if(precvframe==NULL) + return NULL; + + + precvframe->u.hdr.rx_data += sz; + + if(precvframe->u.hdr.rx_data > precvframe->u.hdr.rx_tail) + { + precvframe->u.hdr.rx_data -= sz; + return NULL; + } + + precvframe->u.hdr.len -=sz; + + return precvframe->u.hdr.rx_data; + +} + +__inline static u8 *recvframe_put(union recv_frame *precvframe, sint sz) +{ + // rx_tai += sz; move rx_tail sz bytes hereafter + + //used for append sz bytes from ptr to rx_tail, update rx_tail and return the updated rx_tail to the caller + //after putting, rx_tail must be still larger than rx_end. + unsigned char * prev_rx_tail; + + if(precvframe==NULL) + return NULL; + + prev_rx_tail = precvframe->u.hdr.rx_tail; + + precvframe->u.hdr.rx_tail += sz; + + if(precvframe->u.hdr.rx_tail > precvframe->u.hdr.rx_end) + { + precvframe->u.hdr.rx_tail -= sz; + return NULL; + } + + precvframe->u.hdr.len +=sz; + + return precvframe->u.hdr.rx_tail; + +} + + + +__inline static u8 *recvframe_pull_tail(union recv_frame *precvframe, sint sz) +{ + // rmv data from rx_tail (by yitsen) + + //used for extract sz bytes from rx_end, update rx_end and return the updated rx_end to the caller + //after pulling, rx_end must be still larger than rx_data. + + if(precvframe==NULL) + return NULL; + + precvframe->u.hdr.rx_tail -= sz; + + if(precvframe->u.hdr.rx_tail < precvframe->u.hdr.rx_data) + { + precvframe->u.hdr.rx_tail += sz; + return NULL; + } + + precvframe->u.hdr.len -=sz; + + return precvframe->u.hdr.rx_tail; + +} + + + +__inline static _buffer * get_rxbuf_desc(union recv_frame *precvframe) +{ + _buffer * buf_desc; + + if(precvframe==NULL) + return NULL; +#ifdef PLATFORM_WINDOWS + NdisQueryPacket(precvframe->u.hdr.pkt, NULL, NULL, &buf_desc, NULL); +#endif + + return buf_desc; +} + + +__inline static union recv_frame *rxmem_to_recvframe(u8 *rxmem) +{ + //due to the design of 2048 bytes alignment of recv_frame, we can reference the union recv_frame + //from any given member of recv_frame. + // rxmem indicates the any member/address in recv_frame + + return (union recv_frame*)(((SIZE_PTR)rxmem >> RXFRAME_ALIGN) << RXFRAME_ALIGN); + +} + +__inline static union recv_frame *pkt_to_recvframe(_pkt *pkt) +{ + + u8 * buf_star; + union recv_frame * precv_frame; +#ifdef PLATFORM_WINDOWS + _buffer * buf_desc; + uint len; + + NdisQueryPacket(pkt, NULL, NULL, &buf_desc, &len); + NdisQueryBufferSafe(buf_desc, &buf_star, &len, HighPagePriority); +#endif + precv_frame = rxmem_to_recvframe((unsigned char*)buf_star); + + return precv_frame; +} + +__inline static u8 *pkt_to_recvmem(_pkt *pkt) +{ + // return the rx_head + + union recv_frame * precv_frame = pkt_to_recvframe(pkt); + + return precv_frame->u.hdr.rx_head; + +} + +__inline static u8 *pkt_to_recvdata(_pkt *pkt) +{ + // return the rx_data + + union recv_frame * precv_frame =pkt_to_recvframe(pkt); + + return precv_frame->u.hdr.rx_data; + +} + + +__inline static sint get_recvframe_len(union recv_frame *precvframe) +{ + return precvframe->u.hdr.len; +} + +__inline static u8 query_rx_pwr_percentage(s8 antpower ) +{ + if ((antpower <= -100) || (antpower >= 20)) + { + return 0; + } + else if (antpower >= 0) + { + return 100; + } + else + { + return (100+antpower); + } +} + +__inline static s32 translate_percentage_to_dbm(u32 SignalStrengthIndex) +{ + s32 SignalPower; // in dBm. + + // Translate to dBm (x=0.5y-95). + SignalPower = (s32)((SignalStrengthIndex + 1) >> 1); + SignalPower -= 95; + + return SignalPower; +} + + +struct sta_info; + +extern void _rtw_init_sta_recv_priv(struct sta_recv_priv *psta_recvpriv); + +extern void mgt_dispatcher(_adapter *padapter, union recv_frame *precv_frame); + +#endif --- linux-raspi2-4.2.0.orig/drivers/net/wireless/rtl8192cu/include/rtw_rf.h +++ linux-raspi2-4.2.0/drivers/net/wireless/rtl8192cu/include/rtw_rf.h @@ -0,0 +1,151 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved. + * + * 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 + * published by the Free Software Foundation. + * + * 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 Street, Fifth Floor, Boston, MA 02110, USA + * + * + ******************************************************************************/ +#ifndef __RTW_RF_H_ +#define __RTW_RF_H_ + +#include +#include + +#define OFDM_PHY 1 +#define MIXED_PHY 2 +#define CCK_PHY 3 + +#define NumRates (13) + +// slot time for 11g +#define SHORT_SLOT_TIME 9 +#define NON_SHORT_SLOT_TIME 20 + +#define RTL8711_RF_MAX_SENS 6 +#define RTL8711_RF_DEF_SENS 4 + +// +// We now define the following channels as the max channels in each channel plan. +// 2G, total 14 chnls +// {1,2,3,4,5,6,7,8,9,10,11,12,13,14} +// 5G, total 24 chnls +// {36,40,44,48,52,56,60,64,100,104,108,112,116,120,124,128,132,136,140,149,153,157,161,165} +#define MAX_CHANNEL_NUM_2G 14 +#define MAX_CHANNEL_NUM_5G 24 +#define MAX_CHANNEL_NUM 38//14+24 + +//#define NUM_REGULATORYS 21 +#define NUM_REGULATORYS 1 + +//Country codes +#define USA 0x555320 +#define EUROPE 0x1 //temp, should be provided later +#define JAPAN 0x2 //temp, should be provided later + +struct regulatory_class { + u32 starting_freq; //MHz, + u8 channel_set[MAX_CHANNEL_NUM]; + u8 channel_cck_power[MAX_CHANNEL_NUM];//dbm + u8 channel_ofdm_power[MAX_CHANNEL_NUM];//dbm + u8 txpower_limit; //dbm + u8 channel_spacing; //MHz + u8 modem; +}; + +typedef enum _CAPABILITY{ + cESS = 0x0001, + cIBSS = 0x0002, + cPollable = 0x0004, + cPollReq = 0x0008, + cPrivacy = 0x0010, + cShortPreamble = 0x0020, + cPBCC = 0x0040, + cChannelAgility = 0x0080, + cSpectrumMgnt = 0x0100, + cQos = 0x0200, // For HCCA, use with CF-Pollable and CF-PollReq + cShortSlotTime = 0x0400, + cAPSD = 0x0800, + cRM = 0x1000, // RRM (Radio Request Measurement) + cDSSS_OFDM = 0x2000, + cDelayedBA = 0x4000, + cImmediateBA = 0x8000, +}CAPABILITY, *PCAPABILITY; + +enum _REG_PREAMBLE_MODE{ + PREAMBLE_LONG = 1, + PREAMBLE_AUTO = 2, + PREAMBLE_SHORT = 3, +}; + + +enum _RTL8712_RF_MIMO_CONFIG_{ + RTL8712_RFCONFIG_1T=0x10, + RTL8712_RFCONFIG_2T=0x20, + RTL8712_RFCONFIG_1R=0x01, + RTL8712_RFCONFIG_2R=0x02, + RTL8712_RFCONFIG_1T1R=0x11, + RTL8712_RFCONFIG_1T2R=0x12, + RTL8712_RFCONFIG_TURBO=0x92, + RTL8712_RFCONFIG_2T2R=0x22 +}; + + +// Bandwidth Offset +#define HAL_PRIME_CHNL_OFFSET_DONT_CARE 0 +#define HAL_PRIME_CHNL_OFFSET_LOWER 1 +#define HAL_PRIME_CHNL_OFFSET_UPPER 2 + +// Represent Channel Width in HT Capabilities +// +typedef enum _HT_CHANNEL_WIDTH { + HT_CHANNEL_WIDTH_20 = 0, + HT_CHANNEL_WIDTH_40 = 1, +}HT_CHANNEL_WIDTH, *PHT_CHANNEL_WIDTH; + +// +// Represent Extention Channel Offset in HT Capabilities +// This is available only in 40Mhz mode. +// +typedef enum _HT_EXTCHNL_OFFSET{ + HT_EXTCHNL_OFFSET_NO_EXT = 0, + HT_EXTCHNL_OFFSET_UPPER = 1, + HT_EXTCHNL_OFFSET_NO_DEF = 2, + HT_EXTCHNL_OFFSET_LOWER = 3, +}HT_EXTCHNL_OFFSET, *PHT_EXTCHNL_OFFSET; + +/* 2007/11/15 MH Define different RF type. */ +typedef enum _RT_RF_TYPE_DEFINITION +{ + RF_1T2R = 0, + RF_2T4R = 1, + RF_2T2R = 2, + RF_1T1R = 3, + RF_2T2R_GREEN = 4, + RF_819X_MAX_TYPE = 5, +}RT_RF_TYPE_DEF_E; + +typedef enum _RF_RADIO_PATH{ + RF_PATH_A = 0, //Radio Path A + RF_PATH_B = 1, //Radio Path B + RF_PATH_C = 2, //Radio Path C + RF_PATH_D = 3, //Radio Path D + //RF_PATH_MAX //Max RF number 90 support +}RF_RADIO_PATH_E, *PRF_RADIO_PATH_E; + +u32 rtw_ch2freq(u32 ch); +u32 rtw_freq2ch(u32 freq); + + +#endif //_RTL8711_RF_H_ --- linux-raspi2-4.2.0.orig/drivers/net/wireless/rtl8192cu/include/rtw_security.h +++ linux-raspi2-4.2.0/drivers/net/wireless/rtl8192cu/include/rtw_security.h @@ -0,0 +1,446 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved. + * + * 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 + * published by the Free Software Foundation. + * + * 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 Street, Fifth Floor, Boston, MA 02110, USA + * + * + ******************************************************************************/ +#ifndef __RTW_SECURITY_H_ +#define __RTW_SECURITY_H_ + + +#include +#include +#include + + +#define _NO_PRIVACY_ 0x0 +#define _WEP40_ 0x1 +#define _TKIP_ 0x2 +#define _TKIP_WTMIC_ 0x3 +#define _AES_ 0x4 +#define _WEP104_ 0x5 +#ifdef CONFIG_IEEE80211W +#define _BIP_ 0x8 +#endif //CONFIG_IEEE80211W +#define is_wep_enc(alg) (((alg) == _WEP40_) || ((alg) == _WEP104_)) + +#define _WPA_IE_ID_ 0xdd +#define _WPA2_IE_ID_ 0x30 + +#define SHA256_MAC_LEN 32 +#define AES_BLOCK_SIZE 16 +#define AES_PRIV_SIZE (4 * 44) + +#ifndef Ndis802_11AuthModeWPA2 +#define Ndis802_11AuthModeWPA2 (Ndis802_11AuthModeWPANone + 1) +#endif + +#ifndef Ndis802_11AuthModeWPA2PSK +#define Ndis802_11AuthModeWPA2PSK (Ndis802_11AuthModeWPANone + 2) +#endif + +union pn48 { + + u64 val; + +#ifdef CONFIG_LITTLE_ENDIAN + +struct { + u8 TSC0; + u8 TSC1; + u8 TSC2; + u8 TSC3; + u8 TSC4; + u8 TSC5; + u8 TSC6; + u8 TSC7; +} _byte_; + +#elif defined(CONFIG_BIG_ENDIAN) + +struct { + u8 TSC7; + u8 TSC6; + u8 TSC5; + u8 TSC4; + u8 TSC3; + u8 TSC2; + u8 TSC1; + u8 TSC0; +} _byte_; + +#endif + +}; + +union Keytype { + u8 skey[16]; + u32 lkey[4]; +}; + + +typedef struct _RT_PMKID_LIST +{ + u8 bUsed; + u8 Bssid[6]; + u8 PMKID[16]; + u8 SsidBuf[33]; + u8* ssid_octet; + u16 ssid_length; +} RT_PMKID_LIST, *PRT_PMKID_LIST; + + +struct security_priv +{ + u32 dot11AuthAlgrthm; // 802.11 auth, could be open, shared, 8021x and authswitch + u32 dot11PrivacyAlgrthm; // This specify the privacy for shared auth. algorithm. + + /* WEP */ + u32 dot11PrivacyKeyIndex; // this is only valid for legendary wep, 0~3 for key id. (tx key index) + union Keytype dot11DefKey[4]; // this is only valid for def. key + u32 dot11DefKeylen[4]; + u8 key_mask; /* use to restore wep key after hal_init */ + + u32 dot118021XGrpPrivacy; // This specify the privacy algthm. used for Grp key + u32 dot118021XGrpKeyid; // key id used for Grp Key ( tx key index) + union Keytype dot118021XGrpKey[4]; // 802.1x Group Key, for inx0 and inx1 + union Keytype dot118021XGrptxmickey[4]; + union Keytype dot118021XGrprxmickey[4]; + union pn48 dot11Grptxpn; // PN48 used for Grp Key xmit. + union pn48 dot11Grprxpn; // PN48 used for Grp Key recv. +#ifdef CONFIG_IEEE80211W + u32 dot11wBIPKeyid; // key id used for BIP Key ( tx key index) + union Keytype dot11wBIPKey[6]; // BIP Key, for index4 and index5 + union pn48 dot11wBIPtxpn; // PN48 used for Grp Key xmit. + union pn48 dot11wBIPrxpn; // PN48 used for Grp Key recv. +#endif //CONFIG_IEEE80211W +#ifdef CONFIG_AP_MODE + //extend security capabilities for AP_MODE + unsigned int dot8021xalg;//0:disable, 1:psk, 2:802.1x + unsigned int wpa_psk;//0:disable, bit(0): WPA, bit(1):WPA2 + unsigned int wpa_group_cipher; + unsigned int wpa2_group_cipher; + unsigned int wpa_pairwise_cipher; + unsigned int wpa2_pairwise_cipher; +#endif + + u8 wps_ie[MAX_WPS_IE_LEN];//added in assoc req + int wps_ie_len; + + + u8 binstallGrpkey; +#ifdef CONFIG_IEEE80211W + u8 binstallBIPkey; +#endif //CONFIG_IEEE80211W + u8 busetkipkey; + //_timer tkip_timer; + u8 bcheck_grpkey; + u8 bgrpkey_handshake; + + //u8 packet_cnt;//unused, removed + + s32 sw_encrypt;//from registry_priv + s32 sw_decrypt;//from registry_priv + + s32 hw_decrypted;//if the rx packets is hw_decrypted==_FALSE, it means the hw has not been ready. + + + //keeps the auth_type & enc_status from upper layer ioctl(wpa_supplicant or wzc) + u32 ndisauthtype; // NDIS_802_11_AUTHENTICATION_MODE + u32 ndisencryptstatus; // NDIS_802_11_ENCRYPTION_STATUS + + WLAN_BSSID_EX sec_bss; //for joinbss (h2c buffer) usage + + NDIS_802_11_WEP ndiswep; +#ifdef PLATFORM_WINDOWS + u8 KeyMaterial[16];// variable length depending on above field. +#endif + + u8 assoc_info[600]; + u8 szofcapability[256]; //for wpa2 usage + u8 oidassociation[512]; //for wpa/wpa2 usage + u8 authenticator_ie[256]; //store ap security information element + u8 supplicant_ie[256]; //store sta security information element + + + //for tkip countermeasure + u32 last_mic_err_time; + u8 btkip_countermeasure; + u8 btkip_wait_report; + u32 btkip_countermeasure_time; + + //--------------------------------------------------------------------------- + // For WPA2 Pre-Authentication. + //--------------------------------------------------------------------------- + //u8 RegEnablePreAuth; // Default value: Pre-Authentication enabled or not, from registry "EnablePreAuth". Added by Annie, 2005-11-01. + //u8 EnablePreAuthentication; // Current Value: Pre-Authentication enabled or not. + RT_PMKID_LIST PMKIDList[NUM_PMKID_CACHE]; // Renamed from PreAuthKey[NUM_PRE_AUTH_KEY]. Annie, 2006-10-13. + u8 PMKIDIndex; + //u32 PMKIDCount; // Added by Annie, 2006-10-13. + //u8 szCapability[256]; // For WPA2-PSK using zero-config, by Annie, 2005-09-20. + + u8 bWepDefaultKeyIdxSet; +}; + +struct sha256_state { + u64 length; + u32 state[8], curlen; + u8 buf[64]; +}; + +#define GET_ENCRY_ALGO(psecuritypriv, psta, encry_algo, bmcst)\ +do{\ + switch(psecuritypriv->dot11AuthAlgrthm)\ + {\ + case dot11AuthAlgrthm_Open:\ + case dot11AuthAlgrthm_Shared:\ + case dot11AuthAlgrthm_Auto:\ + encry_algo = (u8)psecuritypriv->dot11PrivacyAlgrthm;\ + break;\ + case dot11AuthAlgrthm_8021X:\ + if(bmcst)\ + encry_algo = (u8)psecuritypriv->dot118021XGrpPrivacy;\ + else\ + encry_algo =(u8) psta->dot118021XPrivacy;\ + break;\ + }\ +}while(0) + + +#define SET_ICE_IV_LEN( iv_len, icv_len, encrypt)\ +do{\ + switch(encrypt)\ + {\ + case _WEP40_:\ + case _WEP104_:\ + iv_len = 4;\ + icv_len = 4;\ + break;\ + case _TKIP_:\ + iv_len = 8;\ + icv_len = 4;\ + break;\ + case _AES_:\ + iv_len = 8;\ + icv_len = 8;\ + break;\ + default:\ + iv_len = 0;\ + icv_len = 0;\ + break;\ + }\ +}while(0) + + +#define GET_TKIP_PN(iv,dot11txpn)\ +do{\ + dot11txpn._byte_.TSC0=iv[2];\ + dot11txpn._byte_.TSC1=iv[0];\ + dot11txpn._byte_.TSC2=iv[4];\ + dot11txpn._byte_.TSC3=iv[5];\ + dot11txpn._byte_.TSC4=iv[6];\ + dot11txpn._byte_.TSC5=iv[7];\ +}while(0) + + +#define ROL32( A, n ) ( ((A) << (n)) | ( ((A)>>(32-(n))) & ( (1UL << (n)) - 1 ) ) ) +#define ROR32( A, n ) ROL32( (A), 32-(n) ) + +struct mic_data +{ + u32 K0, K1; // Key + u32 L, R; // Current state + u32 M; // Message accumulator (single word) + u32 nBytesInM; // # bytes in M +}; + +extern const u32 Te0[256]; +extern const u32 Te1[256]; +extern const u32 Te2[256]; +extern const u32 Te3[256]; +extern const u32 Te4[256]; +extern const u32 Td0[256]; +extern const u32 Td1[256]; +extern const u32 Td2[256]; +extern const u32 Td3[256]; +extern const u32 Td4[256]; +extern const u32 rcon[10]; +extern const u8 Td4s[256]; +extern const u8 rcons[10]; + +#define RCON(i) (rcons[(i)] << 24) + +static inline u32 rotr(u32 val, int bits) +{ + return (val >> bits) | (val << (32 - bits)); +} + +#define TE0(i) Te0[((i) >> 24) & 0xff] +#define TE1(i) rotr(Te0[((i) >> 16) & 0xff], 8) +#define TE2(i) rotr(Te0[((i) >> 8) & 0xff], 16) +#define TE3(i) rotr(Te0[(i) & 0xff], 24) +#define TE41(i) ((Te0[((i) >> 24) & 0xff] << 8) & 0xff000000) +#define TE42(i) (Te0[((i) >> 16) & 0xff] & 0x00ff0000) +#define TE43(i) (Te0[((i) >> 8) & 0xff] & 0x0000ff00) +#define TE44(i) ((Te0[(i) & 0xff] >> 8) & 0x000000ff) +#define TE421(i) ((Te0[((i) >> 16) & 0xff] << 8) & 0xff000000) +#define TE432(i) (Te0[((i) >> 8) & 0xff] & 0x00ff0000) +#define TE443(i) (Te0[(i) & 0xff] & 0x0000ff00) +#define TE414(i) ((Te0[((i) >> 24) & 0xff] >> 8) & 0x000000ff) +#define TE4(i) ((Te0[(i)] >> 8) & 0x000000ff) + +#define TD0(i) Td0[((i) >> 24) & 0xff] +#define TD1(i) rotr(Td0[((i) >> 16) & 0xff], 8) +#define TD2(i) rotr(Td0[((i) >> 8) & 0xff], 16) +#define TD3(i) rotr(Td0[(i) & 0xff], 24) +#define TD41(i) (Td4s[((i) >> 24) & 0xff] << 24) +#define TD42(i) (Td4s[((i) >> 16) & 0xff] << 16) +#define TD43(i) (Td4s[((i) >> 8) & 0xff] << 8) +#define TD44(i) (Td4s[(i) & 0xff]) +#define TD0_(i) Td0[(i) & 0xff] +#define TD1_(i) rotr(Td0[(i) & 0xff], 8) +#define TD2_(i) rotr(Td0[(i) & 0xff], 16) +#define TD3_(i) rotr(Td0[(i) & 0xff], 24) + +#define GETU32(pt) (((u32)(pt)[0] << 24) ^ ((u32)(pt)[1] << 16) ^ \ + ((u32)(pt)[2] << 8) ^ ((u32)(pt)[3])) + +#define PUTU32(ct, st) { \ +(ct)[0] = (u8)((st) >> 24); (ct)[1] = (u8)((st) >> 16); \ +(ct)[2] = (u8)((st) >> 8); (ct)[3] = (u8)(st); } + +#define WPA_GET_BE32(a) ((((u32) (a)[0]) << 24) | (((u32) (a)[1]) << 16) | \ + (((u32) (a)[2]) << 8) | ((u32) (a)[3])) + +#define WPA_PUT_LE16(a, val) \ + do { \ + (a)[1] = ((u16) (val)) >> 8; \ + (a)[0] = ((u16) (val)) & 0xff; \ + } while (0) + +#define WPA_PUT_BE32(a, val) \ + do { \ + (a)[0] = (u8) ((((u32) (val)) >> 24) & 0xff); \ + (a)[1] = (u8) ((((u32) (val)) >> 16) & 0xff); \ + (a)[2] = (u8) ((((u32) (val)) >> 8) & 0xff); \ + (a)[3] = (u8) (((u32) (val)) & 0xff); \ + } while (0) + +#define WPA_PUT_BE64(a, val) \ + do { \ + (a)[0] = (u8) (((u64) (val)) >> 56); \ + (a)[1] = (u8) (((u64) (val)) >> 48); \ + (a)[2] = (u8) (((u64) (val)) >> 40); \ + (a)[3] = (u8) (((u64) (val)) >> 32); \ + (a)[4] = (u8) (((u64) (val)) >> 24); \ + (a)[5] = (u8) (((u64) (val)) >> 16); \ + (a)[6] = (u8) (((u64) (val)) >> 8); \ + (a)[7] = (u8) (((u64) (val)) & 0xff); \ + } while (0) + +/* ===== start - public domain SHA256 implementation ===== */ + +/* This is based on SHA256 implementation in LibTomCrypt that was released into + * public domain by Tom St Denis. */ + +/* the K array */ +static const unsigned long K[64] = { + 0x428a2f98UL, 0x71374491UL, 0xb5c0fbcfUL, 0xe9b5dba5UL, 0x3956c25bUL, + 0x59f111f1UL, 0x923f82a4UL, 0xab1c5ed5UL, 0xd807aa98UL, 0x12835b01UL, + 0x243185beUL, 0x550c7dc3UL, 0x72be5d74UL, 0x80deb1feUL, 0x9bdc06a7UL, + 0xc19bf174UL, 0xe49b69c1UL, 0xefbe4786UL, 0x0fc19dc6UL, 0x240ca1ccUL, + 0x2de92c6fUL, 0x4a7484aaUL, 0x5cb0a9dcUL, 0x76f988daUL, 0x983e5152UL, + 0xa831c66dUL, 0xb00327c8UL, 0xbf597fc7UL, 0xc6e00bf3UL, 0xd5a79147UL, + 0x06ca6351UL, 0x14292967UL, 0x27b70a85UL, 0x2e1b2138UL, 0x4d2c6dfcUL, + 0x53380d13UL, 0x650a7354UL, 0x766a0abbUL, 0x81c2c92eUL, 0x92722c85UL, + 0xa2bfe8a1UL, 0xa81a664bUL, 0xc24b8b70UL, 0xc76c51a3UL, 0xd192e819UL, + 0xd6990624UL, 0xf40e3585UL, 0x106aa070UL, 0x19a4c116UL, 0x1e376c08UL, + 0x2748774cUL, 0x34b0bcb5UL, 0x391c0cb3UL, 0x4ed8aa4aUL, 0x5b9cca4fUL, + 0x682e6ff3UL, 0x748f82eeUL, 0x78a5636fUL, 0x84c87814UL, 0x8cc70208UL, + 0x90befffaUL, 0xa4506cebUL, 0xbef9a3f7UL, 0xc67178f2UL +}; + + +/* Various logical functions */ +#define RORc(x, y) \ +( ((((unsigned long) (x) & 0xFFFFFFFFUL) >> (unsigned long) ((y) & 31)) | \ + ((unsigned long) (x) << (unsigned long) (32 - ((y) & 31)))) & 0xFFFFFFFFUL) +#define Ch(x,y,z) (z ^ (x & (y ^ z))) +#define Maj(x,y,z) (((x | y) & z) | (x & y)) +#define S(x, n) RORc((x), (n)) +#define R(x, n) (((x)&0xFFFFFFFFUL)>>(n)) +#define Sigma0(x) (S(x, 2) ^ S(x, 13) ^ S(x, 22)) +#define Sigma1(x) (S(x, 6) ^ S(x, 11) ^ S(x, 25)) +#define Gamma0(x) (S(x, 7) ^ S(x, 18) ^ R(x, 3)) +#define Gamma1(x) (S(x, 17) ^ S(x, 19) ^ R(x, 10)) +#ifndef MIN +#define MIN(x, y) (((x) < (y)) ? (x) : (y)) +#endif +#ifdef CONFIG_IEEE80211W +int omac1_aes_128(u8 *key, u8 *data, size_t data_len, u8 *mac); +#endif //CONFIG_IEEE80211W +void rtw_secmicsetkey(struct mic_data *pmicdata, u8 * key ); +void rtw_secmicappendbyte(struct mic_data *pmicdata, u8 b ); +void rtw_secmicappend(struct mic_data *pmicdata, u8 * src, u32 nBytes ); +void rtw_secgetmic(struct mic_data *pmicdata, u8 * dst ); + +void rtw_seccalctkipmic( + u8 * key, + u8 *header, + u8 *data, + u32 data_len, + u8 *Miccode, + u8 priority); + +u32 rtw_aes_encrypt(_adapter *padapter, u8 *pxmitframe); +u32 rtw_tkip_encrypt(_adapter *padapter, u8 *pxmitframe); +void rtw_wep_encrypt(_adapter *padapter, u8 *pxmitframe); + +u32 rtw_aes_decrypt(_adapter *padapter, u8 *precvframe); +u32 rtw_tkip_decrypt(_adapter *padapter, u8 *precvframe); +void rtw_wep_decrypt(_adapter *padapter, u8 *precvframe); +#ifdef CONFIG_IEEE80211W +u32 rtw_BIP_verify(_adapter *padapter, u8 *precvframe); +#endif //CONFIG_IEEE80211W +#ifdef CONFIG_TDLS +void wpa_tdls_generate_tpk(_adapter *padapter, struct sta_info *psta); +int wpa_tdls_ftie_mic(u8 *kck, u8 trans_seq, + u8 *lnkid, u8 *rsnie, u8 *timeoutie, u8 *ftie, + u8 *mic); +int tdls_verify_mic(u8 *kck, u8 trans_seq, + u8 *lnkid, u8 *rsnie, u8 *timeoutie, u8 *ftie); +#endif //CONFIG_TDLS + +#ifdef PLATFORM_WINDOWS +void rtw_use_tkipkey_handler ( + IN PVOID SystemSpecific1, + IN PVOID FunctionContext, + IN PVOID SystemSpecific2, + IN PVOID SystemSpecific3 + ); +#endif +#ifdef PLATFORM_LINUX +void rtw_use_tkipkey_handler(void* FunctionContext); +#endif + +#ifdef PLATFORM_FREEBSD +void rtw_use_tkipkey_handler(void* FunctionContext); +#endif //PLATFORM_FREEBSD + +void rtw_sec_restore_wep_key(_adapter *adapter); +u8 rtw_handle_tkip_countermeasure(_adapter* adapter, const char *caller); + +#endif //__RTL871X_SECURITY_H_ --- linux-raspi2-4.2.0.orig/drivers/net/wireless/rtl8192cu/include/rtw_sreset.h +++ linux-raspi2-4.2.0/drivers/net/wireless/rtl8192cu/include/rtw_sreset.h @@ -0,0 +1,73 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2012 Realtek Corporation. All rights reserved. + * + * 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 + * published by the Free Software Foundation. + * + * 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 Street, Fifth Floor, Boston, MA 02110, USA + * + * + ******************************************************************************/ +#ifndef _RTW_SRESET_C_ +#define _RTW_SRESET_C_ + +#include +#include +#include + +enum { + SRESET_TGP_NULL = 0, + SRESET_TGP_XMIT_STATUS = 1, + SRESET_TGP_LINK_STATUS = 2, +}; + +struct sreset_priv { + _mutex silentreset_mutex; + u8 silent_reset_inprogress; + u8 Wifi_Error_Status; + unsigned long last_tx_time; + unsigned long last_tx_complete_time; + + s32 dbg_trigger_point; +}; + +#ifdef CONFIG_RTL8192C +#include +#endif +#ifdef CONFIG_RTL8192D +#include +#endif +#ifdef CONFIG_RTL8723A +#include +#endif +#ifdef CONFIG_RTL8188E +#include +#endif + +#define WIFI_STATUS_SUCCESS 0 +#define USB_VEN_REQ_CMD_FAIL BIT0 +#define USB_READ_PORT_FAIL BIT1 +#define USB_WRITE_PORT_FAIL BIT2 +#define WIFI_MAC_TXDMA_ERROR BIT3 +#define WIFI_TX_HANG BIT4 +#define WIFI_RX_HANG BIT5 +#define WIFI_IF_NOT_EXIST BIT6 + +void sreset_init_value(_adapter *padapter); +void sreset_reset_value(_adapter *padapter); +u8 sreset_get_wifi_status(_adapter *padapter); +void sreset_set_wifi_error_status(_adapter *padapter, u32 status); +void sreset_set_trigger_point(_adapter *padapter, s32 tgp); +bool sreset_inprogress(_adapter *padapter); +void sreset_reset(_adapter *padapter); + +#endif --- linux-raspi2-4.2.0.orig/drivers/net/wireless/rtl8192cu/include/rtw_tdls.h +++ linux-raspi2-4.2.0/drivers/net/wireless/rtl8192cu/include/rtw_tdls.h @@ -0,0 +1,142 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved. + * + * 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 + * published by the Free Software Foundation. + * + * 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 Street, Fifth Floor, Boston, MA 02110, USA + * + * + ******************************************************************************/ +#ifndef __RTW_TDLS_H_ +#define __RTW_TDLS_H_ + +#include + +#ifdef CONFIG_TDLS +/* TDLS STA state */ +#define TDLS_STATE_NONE 0x00000000 //default state +#define TDLS_INITIATOR_STATE 0x10000000 +#define TDLS_RESPONDER_STATE 0x20000000 +#define TDLS_LINKED_STATE 0x40000000 +#define TDLS_CH_SWITCH_ON_STATE 0x01000000 +#define TDLS_PEER_AT_OFF_STATE 0x02000000 //could send pkt on target ch +#define TDLS_AT_OFF_CH_STATE 0x04000000 +#define TDLS_CH_SW_INITIATOR_STATE 0x08000000 //avoiding duplicated or unconditional ch. switch rsp. +#define TDLS_APSD_CHSW_STATE 0x00100000 //in APSD and want to setup channel switch +#define TDLS_PEER_SLEEP_STATE 0x00200000 //peer sta is sleeping +#define TDLS_SW_OFF_STATE 0x00400000 //terminate channel swithcing +#define TDLS_ALIVE_STATE 0x00010000 //Check if peer sta is alived. + +#define TPK_RESEND_COUNT 301 +#define CH_SWITCH_TIME 10 +#define CH_SWITCH_TIMEOUT 30 +#define TDLS_STAY_TIME 500 +#define TDLS_SIGNAL_THRESH 0x20 +#define TDLS_WATCHDOG_PERIOD 10 //Periodically sending tdls discovery request in TDLS_WATCHDOG_PERIOD * 2 sec +#define TDLS_ALIVE_TIMER_PH1 5000 +#define TDLS_ALIVE_TIMER_PH2 2000 +#define TDLS_STAY_TIME 500 +#define TDLS_HANDSHAKE_TIME 2000 +#define TDLS_ALIVE_COUNT 3 +#define TDLS_INI_MACID_ENTRY 6 + +/* TDLS */ +#define TDLS_MIC_LEN 16 +#define WPA_NONCE_LEN 32 +#define TDLS_TIMEOUT_LEN 4 + +struct wpa_tdls_ftie { + u8 ie_type; /* FTIE */ + u8 ie_len; + u8 mic_ctrl[2]; + u8 mic[TDLS_MIC_LEN]; + u8 Anonce[WPA_NONCE_LEN]; /* Responder Nonce in TDLS */ + u8 Snonce[WPA_NONCE_LEN]; /* Initiator Nonce in TDLS */ + /* followed by optional elements */ +} ; + +struct wpa_tdls_lnkid { + u8 ie_type; /* Link Identifier IE */ + u8 ie_len; + u8 bssid[ETH_ALEN]; + u8 init_sta[ETH_ALEN]; + u8 resp_sta[ETH_ALEN]; +} ; + +static u8 TDLS_RSNIE[]={ 0x01, 0x00, //version shall be set to 1 + 0x00, 0x0f, 0xac, 0x07, //group sipher suite + 0x01, 0x00, //pairwise cipher suite count + 0x00, 0x0f, 0xac, 0x04, //pairwise cipher suite list; CCMP only + 0x01, 0x00, //AKM suite count + 0x00, 0x0f, 0xac, 0x07, //TPK Handshake + 0x00, 0x02, + //PMKID shall not be present + }; + +static u8 TDLS_WMMIE[]={0x00, 0x50, 0xf2, 0x02, 0x00, 0x01, 0x00}; //Qos info all set zero + +static u8 TDLS_EXT_CAPIE[] = {0x00, 0x00, 0x00, 0x50, 0x20}; //bit(28), bit(30), bit(37) + +// SRC: Supported Regulatory Classes +static u8 TDLS_SRC[] = { 0x01, 0x01, 0x02, 0x03, 0x04, 0x0c, 0x16, 0x17, 0x18, 0x19, 0x1b, 0x1c, 0x1d, 0x1e, 0x20, 0x21 }; + +void rtw_reset_tdls_info(_adapter* padapter); +int rtw_init_tdls_info(_adapter* padapter); +void rtw_free_tdls_info(struct tdls_info *ptdlsinfo); +void issue_nulldata_to_TDLS_peer_STA(_adapter *padapter, struct sta_info *ptdls_sta, unsigned int power_mode); +void init_TPK_timer(_adapter *padapter, struct sta_info *psta); +void init_ch_switch_timer(_adapter *padapter, struct sta_info *psta); +void init_base_ch_timer(_adapter *padapter, struct sta_info *psta); +void init_off_ch_timer(_adapter *padapter, struct sta_info *psta); +void init_tdls_alive_timer(_adapter *padapter, struct sta_info *psta); +void init_handshake_timer(_adapter *padapter, struct sta_info *psta); +void free_tdls_sta(_adapter *padapter, struct sta_info *ptdls_sta); +#ifdef CONFIG_WFD +void issue_tunneled_probe_req(_adapter *padapter); +void issue_tunneled_probe_rsp(_adapter *padapter, union recv_frame *precv_frame); +#endif //CONFIG_WFD +void issue_tdls_dis_req(_adapter *padapter, u8 *mac_addr); +void issue_tdls_setup_req(_adapter *padapter, u8 *mac_addr); +void issue_tdls_setup_rsp(_adapter *padapter, union recv_frame *precv_frame); +void issue_tdls_setup_cfm(_adapter *padapter, union recv_frame *precv_frame); +void issue_tdls_dis_rsp(_adapter * padapter, union recv_frame * precv_frame, u8 dialog); +void issue_tdls_teardown(_adapter *padapter, u8 *mac_addr); +void issue_tdls_peer_traffic_indication(_adapter *padapter, struct sta_info *psta); +void issue_tdls_ch_switch_req(_adapter *padapter, u8 *mac_addr); +void issue_tdls_ch_switch_rsp(_adapter *padapter, u8 *mac_addr); +sint On_TDLS_Dis_Rsp(_adapter *adapter, union recv_frame *precv_frame); +sint On_TDLS_Setup_Req(_adapter *adapter, union recv_frame *precv_frame); +sint On_TDLS_Setup_Rsp(_adapter *adapter, union recv_frame *precv_frame); +sint On_TDLS_Setup_Cfm(_adapter *adapter, union recv_frame *precv_frame); +sint On_TDLS_Dis_Req(_adapter *adapter, union recv_frame *precv_frame); +sint On_TDLS_Teardown(_adapter *adapter, union recv_frame *precv_frame); +sint On_TDLS_Peer_Traffic_Rsp(_adapter *adapter, union recv_frame *precv_frame); +sint On_TDLS_Ch_Switch_Req(_adapter *adapter, union recv_frame *precv_frame); +sint On_TDLS_Ch_Switch_Rsp(_adapter *adapter, union recv_frame *precv_frame); +void rtw_build_tdls_setup_req_ies(_adapter * padapter, struct xmit_frame * pxmitframe, u8 *pframe); +void rtw_build_tdls_setup_rsp_ies(_adapter * padapter, struct xmit_frame * pxmitframe, u8 *pframe); +void rtw_build_tdls_setup_cfm_ies(_adapter * padapter, struct xmit_frame * pxmitframe, u8 *pframe); +void rtw_build_tdls_teardown_ies(_adapter * padapter, struct xmit_frame * pxmitframe, u8 *pframe); +void rtw_build_tdls_dis_req_ies(_adapter * padapter, struct xmit_frame * pxmitframe, u8 *pframe); +void rtw_build_tdls_dis_rsp_ies(_adapter * padapter, struct xmit_frame * pxmitframe, u8 *pframe, u8 dialog); +void rtw_build_tdls_peer_traffic_indication_ies(_adapter * padapter, struct xmit_frame * pxmitframe, u8 *pframe); +void rtw_build_tdls_ch_switch_req_ies(_adapter * padapter, struct xmit_frame * pxmitframe, u8 *pframe); +void rtw_build_tdls_ch_switch_rsp_ies(_adapter * padapter, struct xmit_frame * pxmitframe, u8 *pframe); +void rtw_build_tunneled_probe_req_ies(_adapter * padapter, struct xmit_frame * pxmitframe, u8 *pframe); +void rtw_build_tunneled_probe_rsp_ies(_adapter * padapter, struct xmit_frame * pxmitframe, u8 *pframe); + +int update_sgi_tdls(_adapter *padapter, struct sta_info *psta); +u32 update_mask_tdls(_adapter *padapter, struct sta_info *psta); +#endif //CONFIG_TDLS + +#endif --- linux-raspi2-4.2.0.orig/drivers/net/wireless/rtl8192cu/include/rtw_version.h +++ linux-raspi2-4.2.0/drivers/net/wireless/rtl8192cu/include/rtw_version.h @@ -0,0 +1 @@ +#define DRIVERVERSION "v4.0.2_9000.20130911" --- linux-raspi2-4.2.0.orig/drivers/net/wireless/rtl8192cu/include/rtw_xmit.h +++ linux-raspi2-4.2.0/drivers/net/wireless/rtl8192cu/include/rtw_xmit.h @@ -0,0 +1,753 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved. + * + * 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 + * published by the Free Software Foundation. + * + * 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 Street, Fifth Floor, Boston, MA 02110, USA + * + * + ******************************************************************************/ +#ifndef _RTW_XMIT_H_ +#define _RTW_XMIT_H_ + +#include +#include +#include +#ifdef PLATFORM_FREEBSD +#include +#endif //PLATFORM_FREEBSD + +#ifdef CONFIG_SDIO_HCI +//#define MAX_XMITBUF_SZ (30720)// (2048) +#define MAX_XMITBUF_SZ (12288) +#define NR_XMITBUFF (16) + +#elif defined (CONFIG_USB_HCI) +#ifdef CONFIG_USB_TX_AGGREGATION + #if defined(CONFIG_PLATFORM_ARM_SUNxI) || defined(CONFIG_PLATFORM_ARM_SUN6I) + #define MAX_XMITBUF_SZ (12288) //12k 1536*8 + #elif defined (CONFIG_PLATFORM_MSTAR) + #define MAX_XMITBUF_SZ 7680 // 7.5k + #else + #define MAX_XMITBUF_SZ (20480) // 20k + #endif +#else +#define MAX_XMITBUF_SZ (2048) +#endif //CONFIG_USB_TX_AGGREGATION +#ifdef CONFIG_SINGLE_XMIT_BUF +#define NR_XMITBUFF (1) +#else +#define NR_XMITBUFF (4) +#endif //CONFIG_SINGLE_XMIT_BUF + +#elif defined (CONFIG_PCI_HCI) +#define MAX_XMITBUF_SZ (1664) +#define NR_XMITBUFF (128) +#endif + +#ifdef PLATFORM_OS_CE +#define XMITBUF_ALIGN_SZ 4 +#else +#ifdef CONFIG_PCI_HCI +#define XMITBUF_ALIGN_SZ 4 +#else +#define XMITBUF_ALIGN_SZ 512 +#endif +#endif + +// xmit extension buff defination +#define MAX_XMIT_EXTBUF_SZ (1536) +#ifdef CONFIG_SINGLE_XMIT_BUF +#define NR_XMIT_EXTBUFF (1) +#else +#define NR_XMIT_EXTBUFF (32) +#endif //CONFIG_SINGLE_XMIT_BUF + +#define MAX_NUMBLKS (1) + +#define XMIT_VO_QUEUE (0) +#define XMIT_VI_QUEUE (1) +#define XMIT_BE_QUEUE (2) +#define XMIT_BK_QUEUE (3) + +#define VO_QUEUE_INX 0 +#define VI_QUEUE_INX 1 +#define BE_QUEUE_INX 2 +#define BK_QUEUE_INX 3 +#define BCN_QUEUE_INX 4 +#define MGT_QUEUE_INX 5 +#define HIGH_QUEUE_INX 6 +#define TXCMD_QUEUE_INX 7 + +#define HW_QUEUE_ENTRY 8 + +#ifdef CONFIG_PCI_HCI +//#define TXDESC_NUM 64 +#define TXDESC_NUM 128 +#define TXDESC_NUM_BE_QUEUE 128 +#endif + +#define WEP_IV(pattrib_iv, dot11txpn, keyidx)\ +do{\ + pattrib_iv[0] = dot11txpn._byte_.TSC0;\ + pattrib_iv[1] = dot11txpn._byte_.TSC1;\ + pattrib_iv[2] = dot11txpn._byte_.TSC2;\ + pattrib_iv[3] = ((keyidx & 0x3)<<6);\ + dot11txpn.val = (dot11txpn.val == 0xffffff) ? 0: (dot11txpn.val+1);\ +}while(0) + + +#define TKIP_IV(pattrib_iv, dot11txpn, keyidx)\ +do{\ + pattrib_iv[0] = dot11txpn._byte_.TSC1;\ + pattrib_iv[1] = (dot11txpn._byte_.TSC1 | 0x20) & 0x7f;\ + pattrib_iv[2] = dot11txpn._byte_.TSC0;\ + pattrib_iv[3] = BIT(5) | ((keyidx & 0x3)<<6);\ + pattrib_iv[4] = dot11txpn._byte_.TSC2;\ + pattrib_iv[5] = dot11txpn._byte_.TSC3;\ + pattrib_iv[6] = dot11txpn._byte_.TSC4;\ + pattrib_iv[7] = dot11txpn._byte_.TSC5;\ + dot11txpn.val = dot11txpn.val == 0xffffffffffffULL ? 0: (dot11txpn.val+1);\ +}while(0) + +#define AES_IV(pattrib_iv, dot11txpn, keyidx)\ +do{\ + pattrib_iv[0] = dot11txpn._byte_.TSC0;\ + pattrib_iv[1] = dot11txpn._byte_.TSC1;\ + pattrib_iv[2] = 0;\ + pattrib_iv[3] = BIT(5) | ((keyidx & 0x3)<<6);\ + pattrib_iv[4] = dot11txpn._byte_.TSC2;\ + pattrib_iv[5] = dot11txpn._byte_.TSC3;\ + pattrib_iv[6] = dot11txpn._byte_.TSC4;\ + pattrib_iv[7] = dot11txpn._byte_.TSC5;\ + dot11txpn.val = dot11txpn.val == 0xffffffffffffULL ? 0: (dot11txpn.val+1);\ +}while(0) + + +#define HWXMIT_ENTRY 4 + +#define TXDESC_SIZE 32 + +#ifdef CONFIG_SDIO_HCI +#define TXDESC_OFFSET TXDESC_SIZE +#endif + +#ifdef CONFIG_USB_HCI +#define PACKET_OFFSET_SZ (8) +#define TXDESC_OFFSET (TXDESC_SIZE + PACKET_OFFSET_SZ) +#endif + +#ifdef CONFIG_PCI_HCI +#define TXDESC_OFFSET 0 +#define TX_DESC_NEXT_DESC_OFFSET 40 +#endif + +// +//defined for TX DESC Operation +// + +#define MAX_TID (15) + +//OFFSET 0 +#define OFFSET_SZ 0 +#define OFFSET_SHT 16 +#define BMC BIT(24) +#define LSG BIT(26) +#define FSG BIT(27) +#define OWN BIT(31) + +//OFFSET 4 +#define PKT_OFFSET_SZ 0 +#define BK BIT(6) +#define QSEL_SHT 8 +#define Rate_ID_SHT 16 +#define NAVUSEHDR BIT(20) +#define PKT_OFFSET_SHT 26 +#define HWPC BIT(31) + +//OFFSET 8 +#define AGG_EN BIT(29) + +//OFFSET 12 +#define SEQ_SHT 16 + +//OFFSET 16 +#define QoS BIT(6) +#define HW_SEQ_EN BIT(7) +#define USERATE BIT(8) +#define DISDATAFB BIT(10) +#define DATA_SHORT BIT(24) +#define DATA_BW BIT(25) + +//OFFSET 20 +#define SGI BIT(6) + +struct tx_desc{ + + //DWORD 0 + unsigned int txdw0; + + unsigned int txdw1; + + unsigned int txdw2; + + unsigned int txdw3; + + unsigned int txdw4; + + unsigned int txdw5; + + unsigned int txdw6; + + unsigned int txdw7; +#ifdef CONFIG_PCI_HCI + unsigned int txdw8; + + unsigned int txdw9; + + unsigned int txdw10; + + unsigned int txdw11; + + // 2008/05/15 MH Because PCIE HW memory R/W 4K limit. And now, our descriptor + // size is 40 bytes. If you use more than 102 descriptor( 103*40>4096), HW will execute + // memoryR/W CRC error. And then all DMA fetch will fail. We must decrease descriptor + // number or enlarge descriptor size as 64 bytes. + unsigned int txdw12; + + unsigned int txdw13; + + unsigned int txdw14; + + unsigned int txdw15; +#endif +}; + + +union txdesc { + struct tx_desc txdesc; + unsigned int value[TXDESC_SIZE>>2]; +}; + +#ifdef CONFIG_PCI_HCI +#define PCI_MAX_TX_QUEUE_COUNT 8 + +struct rtw_tx_ring { + struct tx_desc *desc; + dma_addr_t dma; + unsigned int idx; + unsigned int entries; + _queue queue; + u32 qlen; +}; +#endif + +struct hw_xmit { + //_lock xmit_lock; + //_list pending; + _queue *sta_queue; + //struct hw_txqueue *phwtxqueue; + //sint txcmdcnt; + int accnt; +}; + +#if 0 +struct pkt_attrib +{ + u8 type; + u8 subtype; + u8 bswenc; + u8 dhcp_pkt; + u16 ether_type; + int pktlen; //the original 802.3 pkt raw_data len (not include ether_hdr data) + int pkt_hdrlen; //the original 802.3 pkt header len + int hdrlen; //the WLAN Header Len + int nr_frags; + int last_txcmdsz; + int encrypt; //when 0 indicate no encrypt. when non-zero, indicate the encrypt algorith + u8 iv[8]; + int iv_len; + u8 icv[8]; + int icv_len; + int priority; + int ack_policy; + int mac_id; + int vcs_mode; //virtual carrier sense method + + u8 dst[ETH_ALEN]; + u8 src[ETH_ALEN]; + u8 ta[ETH_ALEN]; + u8 ra[ETH_ALEN]; + + u8 key_idx; + + u8 qos_en; + u8 ht_en; + u8 raid;//rate adpative id + u8 bwmode; + u8 ch_offset;//PRIME_CHNL_OFFSET + u8 sgi;//short GI + u8 ampdu_en;//tx ampdu enable + u8 mdata;//more data bit + u8 eosp; + + u8 pctrl;//per packet txdesc control enable + u8 triggered;//for ap mode handling Power Saving sta + + u32 qsel; + u16 seqnum; + + struct sta_info * psta; +#ifdef CONFIG_TCP_CSUM_OFFLOAD_TX + u8 hw_tcp_csum; +#endif +}; +#else +//reduce size +struct pkt_attrib +{ + u8 type; + u8 subtype; + u8 bswenc; + u8 dhcp_pkt; + u16 ether_type; + u16 seqnum; + u16 pkt_hdrlen; //the original 802.3 pkt header len + u16 hdrlen; //the WLAN Header Len + u32 pktlen; //the original 802.3 pkt raw_data len (not include ether_hdr data) + u32 last_txcmdsz; + u8 nr_frags; + u8 encrypt; //when 0 indicate no encrypt. when non-zero, indicate the encrypt algorith + u8 iv_len; + u8 icv_len; + u8 iv[8]; + u8 icv[8]; + u8 priority; + u8 ack_policy; + u8 mac_id; + u8 vcs_mode; //virtual carrier sense method + u8 dst[ETH_ALEN]; + u8 src[ETH_ALEN]; + u8 ta[ETH_ALEN]; + u8 ra[ETH_ALEN]; + u8 key_idx; + u8 qos_en; + u8 ht_en; + u8 raid;//rate adpative id + u8 bwmode; + u8 ch_offset;//PRIME_CHNL_OFFSET + u8 sgi;//short GI + u8 ampdu_en;//tx ampdu enable + u8 mdata;//more data bit + u8 pctrl;//per packet txdesc control enable + u8 triggered;//for ap mode handling Power Saving sta + u8 qsel; + u8 eosp; + u8 rate; + u8 intel_proxim; + u8 retry_ctrl; + struct sta_info * psta; +#ifdef CONFIG_TCP_CSUM_OFFLOAD_TX + u8 hw_tcp_csum; +#endif + union Keytype dot11tkiptxmickey; + //union Keytype dot11tkiprxmickey; + union Keytype dot118021x_UncstKey; +}; +#endif + +#ifdef PLATFORM_FREEBSD +#define ETH_ALEN 6 /* Octets in one ethernet addr */ +#define ETH_HLEN 14 /* Total octets in header. */ +#define ETH_P_IP 0x0800 /* Internet Protocol packet */ + +/*struct rtw_ieee80211_hdr { + uint16_t frame_control; + uint16_t duration_id; + u8 addr1[6]; + u8 addr2[6]; + u8 addr3[6]; + uint16_t seq_ctrl; + u8 addr4[6]; +} ;*/ +#endif //PLATFORM_FREEBSD + +#define WLANHDR_OFFSET 64 + +#define NULL_FRAMETAG (0x0) +#define DATA_FRAMETAG 0x01 +#define L2_FRAMETAG 0x02 +#define MGNT_FRAMETAG 0x03 +#define AMSDU_FRAMETAG 0x04 + +#define EII_FRAMETAG 0x05 +#define IEEE8023_FRAMETAG 0x06 + +#define MP_FRAMETAG 0x07 + +#define TXAGG_FRAMETAG 0x08 + +struct submit_ctx{ + u32 submit_time; /* */ + u32 timeout_ms; /* <0: not synchronous, 0: wait forever, >0: up to ms waiting */ + int status; /* status for operation */ +#ifdef PLATFORM_LINUX + struct completion done; +#endif +}; + +enum { + RTW_SCTX_SUBMITTED = -1, + RTW_SCTX_DONE_SUCCESS = 0, + RTW_SCTX_DONE_UNKNOWN, + RTW_SCTX_DONE_TIMEOUT, + RTW_SCTX_DONE_BUF_ALLOC, + RTW_SCTX_DONE_BUF_FREE, + RTW_SCTX_DONE_WRITE_PORT_ERR, + RTW_SCTX_DONE_TX_DESC_NA, + RTW_SCTX_DONE_TX_DENY, + RTW_SCTX_DONE_CCX_PKT_FAIL, + RTW_SCTX_DONE_DRV_STOP, + RTW_SCTX_DONE_DEV_REMOVE, +}; + + +void rtw_sctx_init(struct submit_ctx *sctx, int timeout_ms); +int rtw_sctx_wait(struct submit_ctx *sctx); +void rtw_sctx_done_err(struct submit_ctx **sctx, int status); +void rtw_sctx_done(struct submit_ctx **sctx); + +struct xmit_buf +{ + _list list; + + _adapter *padapter; + + u8 *pallocated_buf; + + u8 *pbuf; + + void *priv_data; + + u16 ext_tag; // 0: Normal xmitbuf, 1: extension xmitbuf. + u16 flags; + u32 alloc_sz; + + struct submit_ctx *sctx; + +#ifdef CONFIG_USB_HCI + + u32 sz[8]; + +#if defined(PLATFORM_OS_XP)||defined(PLATFORM_LINUX) || defined(PLATFORM_FREEBSD) + PURB pxmit_urb[8]; + dma_addr_t dma_transfer_addr; /* (in) dma addr for transfer_buffer */ +#endif + +#ifdef PLATFORM_OS_XP + PIRP pxmit_irp[8]; +#endif + +#ifdef PLATFORM_OS_CE + USB_TRANSFER usb_transfer_write_port; +#endif + + u8 bpending[8]; + + sint last[8]; + +#endif + +#ifdef CONFIG_SDIO_HCI + u32 len; + u8 *phead; + u8 *pdata; + u8 *ptail; + u8 *pend; + u32 ff_hwaddr; +#ifdef PLATFORM_OS_XP + PMDL pxmitbuf_mdl; + PIRP pxmitbuf_irp; + PSDBUS_REQUEST_PACKET pxmitbuf_sdrp; +#endif +#endif + +#ifdef CONFIG_PCI_HCI + u32 len; +#endif + +#ifdef DBG_XMIT_BUF + u8 no; +#endif + +}; + +struct xmit_frame +{ + _list list; + + struct pkt_attrib attrib; + + _pkt *pkt; + + int frame_tag; + + _adapter *padapter; + + u8 *buf_addr; + + struct xmit_buf *pxmitbuf; + +#ifdef CONFIG_SDIO_HCI + u8 pg_num; + u8 agg_num; +#endif + +#ifdef CONFIG_USB_HCI +#ifdef CONFIG_USB_TX_AGGREGATION + u8 agg_num; +#endif + u8 pkt_offset; +#ifdef CONFIG_RTL8192D + u8 EMPktNum; + u16 EMPktLen[5];//The max value by HW +#endif +#endif +#ifdef CONFIG_XMIT_ACK + u8 ack_report; +#endif + + u8 *alloc_addr; /* the actual address this xmitframe allocated */ + u8 ext_tag; /* 0:data, 1:mgmt */ + +}; + +struct tx_servq { + _list tx_pending; + _queue sta_pending; + int qcnt; +}; + + + +struct sta_xmit_priv +{ + _lock lock; + sint option; + sint apsd_setting; //When bit mask is on, the associated edca queue supports APSD. + + + //struct tx_servq blk_q[MAX_NUMBLKS]; + struct tx_servq be_q; //priority == 0,3 + struct tx_servq bk_q; //priority == 1,2 + struct tx_servq vi_q; //priority == 4,5 + struct tx_servq vo_q; //priority == 6,7 + _list legacy_dz; + _list apsd; + + u16 txseq_tid[16]; + + //uint sta_tx_bytes; + //u64 sta_tx_pkts; + //uint sta_tx_fail; + +}; + + +struct hw_txqueue { + volatile sint head; + volatile sint tail; + volatile sint free_sz; //in units of 64 bytes + volatile sint free_cmdsz; + volatile sint txsz[8]; + uint ff_hwaddr; + uint cmd_hwaddr; + sint ac_tag; +}; + + +struct xmit_priv { + + _lock lock; + + _sema xmit_sema; + _sema terminate_xmitthread_sema; + + //_queue blk_strms[MAX_NUMBLKS]; + _queue be_pending; + _queue bk_pending; + _queue vi_pending; + _queue vo_pending; + _queue bm_pending; + + //_queue legacy_dz_queue; + //_queue apsd_queue; + + u8 *pallocated_frame_buf; + u8 *pxmit_frame_buf; + uint free_xmitframe_cnt; + _queue free_xmit_queue; + + //uint mapping_addr; + //uint pkt_sz; + + u8 *xframe_ext_alloc_addr; + u8 *xframe_ext; + uint free_xframe_ext_cnt; + _queue free_xframe_ext_queue; + + //struct hw_txqueue be_txqueue; + //struct hw_txqueue bk_txqueue; + //struct hw_txqueue vi_txqueue; + //struct hw_txqueue vo_txqueue; + //struct hw_txqueue bmc_txqueue; + + uint frag_len; + + _adapter *adapter; + + u8 vcs_setting; + u8 vcs; + u8 vcs_type; + //u16 rts_thresh; + + u64 tx_bytes; + u64 tx_pkts; + u64 tx_drop; + u64 last_tx_bytes; + u64 last_tx_pkts; + + struct hw_xmit *hwxmits; + u8 hwxmit_entry; + +#ifdef CONFIG_USB_HCI + _sema tx_retevt;//all tx return event; + u8 txirp_cnt;// + +#ifdef PLATFORM_OS_CE + USB_TRANSFER usb_transfer_write_port; +// USB_TRANSFER usb_transfer_write_mem; +#endif +#ifdef PLATFORM_LINUX + struct tasklet_struct xmit_tasklet; +#endif +#ifdef PLATFORM_FREEBSD + struct task xmit_tasklet; +#endif + //per AC pending irp + int beq_cnt; + int bkq_cnt; + int viq_cnt; + int voq_cnt; + +#endif + +#ifdef CONFIG_PCI_HCI + // Tx + struct rtw_tx_ring tx_ring[PCI_MAX_TX_QUEUE_COUNT]; + int txringcount[PCI_MAX_TX_QUEUE_COUNT]; +#ifdef PLATFORM_LINUX + struct tasklet_struct xmit_tasklet; +#endif +#endif + + _queue free_xmitbuf_queue; + _queue pending_xmitbuf_queue; + u8 *pallocated_xmitbuf; + u8 *pxmitbuf; + uint free_xmitbuf_cnt; + + _queue free_xmit_extbuf_queue; + u8 *pallocated_xmit_extbuf; + u8 *pxmit_extbuf; + uint free_xmit_extbuf_cnt; + + u16 nqos_ssn; + +#ifdef CONFIG_XMIT_ACK + int ack_tx; + _mutex ack_tx_mutex; + struct submit_ctx ack_tx_ops; +#endif + _lock lock_sctx; +}; + +extern struct xmit_buf *rtw_alloc_xmitbuf_ext(struct xmit_priv *pxmitpriv); +extern s32 rtw_free_xmitbuf_ext(struct xmit_priv *pxmitpriv, struct xmit_buf *pxmitbuf); + +extern struct xmit_buf *rtw_alloc_xmitbuf(struct xmit_priv *pxmitpriv); +extern s32 rtw_free_xmitbuf(struct xmit_priv *pxmitpriv, struct xmit_buf *pxmitbuf); + +void rtw_count_tx_stats(_adapter *padapter, struct xmit_frame *pxmitframe, int sz); +extern void rtw_update_protection(_adapter *padapter, u8 *ie, uint ie_len); +extern s32 rtw_make_wlanhdr(_adapter *padapter, u8 *hdr, struct pkt_attrib *pattrib); +extern s32 rtw_put_snap(u8 *data, u16 h_proto); + +extern struct xmit_frame *rtw_alloc_xmitframe(struct xmit_priv *pxmitpriv); +struct xmit_frame *rtw_alloc_xmitframe_ext(struct xmit_priv *pxmitpriv); +struct xmit_frame *rtw_alloc_xmitframe_once(struct xmit_priv *pxmitpriv); +extern s32 rtw_free_xmitframe(struct xmit_priv *pxmitpriv, struct xmit_frame *pxmitframe); +extern void rtw_free_xmitframe_queue(struct xmit_priv *pxmitpriv, _queue *pframequeue); +struct tx_servq *rtw_get_sta_pending(_adapter *padapter, struct sta_info *psta, sint up, u8 *ac); +extern s32 rtw_xmitframe_enqueue(_adapter *padapter, struct xmit_frame *pxmitframe); +extern struct xmit_frame* rtw_dequeue_xframe(struct xmit_priv *pxmitpriv, struct hw_xmit *phwxmit_i, sint entry); + +extern s32 rtw_xmit_classifier(_adapter *padapter, struct xmit_frame *pxmitframe); +extern thread_return rtw_xmit_thread(thread_context context); +extern u32 rtw_calculate_wlan_pkt_size_by_attribue(struct pkt_attrib *pattrib); +#define rtw_wlan_pkt_size(f) rtw_calculate_wlan_pkt_size_by_attribue(&f->attrib) +extern s32 rtw_xmitframe_coalesce(_adapter *padapter, _pkt *pkt, struct xmit_frame *pxmitframe); +#ifdef CONFIG_IEEE80211W +extern s32 rtw_mgmt_xmitframe_coalesce(_adapter *padapter, _pkt *pkt, struct xmit_frame *pxmitframe); +#endif //CONFIG_IEEE80211W +#ifdef CONFIG_TDLS +s32 rtw_xmit_tdls_coalesce(_adapter *padapter, struct xmit_frame *pxmitframe, u8 action); +#endif //CONFIG_TDLS +s32 _rtw_init_hw_txqueue(struct hw_txqueue* phw_txqueue, u8 ac_tag); +void _rtw_init_sta_xmit_priv(struct sta_xmit_priv *psta_xmitpriv); + + +s32 rtw_txframes_pending(_adapter *padapter); +s32 rtw_txframes_sta_ac_pending(_adapter *padapter, struct pkt_attrib *pattrib); +void rtw_init_hwxmits(struct hw_xmit *phwxmit, sint entry); + + +s32 _rtw_init_xmit_priv(struct xmit_priv *pxmitpriv, _adapter *padapter); +void _rtw_free_xmit_priv (struct xmit_priv *pxmitpriv); + + +void rtw_alloc_hwxmits(_adapter *padapter); +void rtw_free_hwxmits(_adapter *padapter); + + +s32 rtw_xmit(_adapter *padapter, _pkt **pkt); + +#if defined(CONFIG_AP_MODE) || defined(CONFIG_TDLS) +sint xmitframe_enqueue_for_sleeping_sta(_adapter *padapter, struct xmit_frame *pxmitframe); +void stop_sta_xmit(_adapter *padapter, struct sta_info *psta); +void wakeup_sta_to_xmit(_adapter *padapter, struct sta_info *psta); +void xmit_delivery_enabled_frames(_adapter *padapter, struct sta_info *psta); +#endif + +u8 qos_acm(u8 acm_mask, u8 priority); + +#ifdef CONFIG_XMIT_ACK +int rtw_ack_tx_wait(struct xmit_priv *pxmitpriv, u32 timeout_ms); +void rtw_ack_tx_done(struct xmit_priv *pxmitpriv, int status); +#endif //CONFIG_XMIT_ACK + + +//include after declaring struct xmit_buf, in order to avoid warning +#include + +#endif //_RTL871X_XMIT_H_ --- linux-raspi2-4.2.0.orig/drivers/net/wireless/rtl8192cu/include/sta_info.h +++ linux-raspi2-4.2.0/drivers/net/wireless/rtl8192cu/include/sta_info.h @@ -0,0 +1,431 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved. + * + * 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 + * published by the Free Software Foundation. + * + * 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 Street, Fifth Floor, Boston, MA 02110, USA + * + * + ******************************************************************************/ +#ifndef __STA_INFO_H_ +#define __STA_INFO_H_ + +#include +#include +#include +#include + +#define IBSS_START_MAC_ID 2 +#define NUM_STA 32 +#define NUM_ACL 16 + + +//if mode ==0, then the sta is allowed once the addr is hit. +//if mode ==1, then the sta is rejected once the addr is non-hit. +struct rtw_wlan_acl_node { + _list list; + u8 addr[ETH_ALEN]; + u8 valid; +}; + +//mode=0, disable +//mode=1, accept unless in deny list +//mode=2, deny unless in accept list +struct wlan_acl_pool { + int mode; + int num; + struct rtw_wlan_acl_node aclnode[NUM_ACL]; + _queue acl_node_q; +}; + +typedef struct _RSSI_STA{ + s32 UndecoratedSmoothedPWDB; + s32 UndecoratedSmoothedCCK; + s32 UndecoratedSmoothedOFDM; + u64 PacketMap; + u8 ValidBit; +}RSSI_STA, *PRSSI_STA; + +struct stainfo_stats { + + u64 rx_mgnt_pkts; + u64 rx_beacon_pkts; + u64 rx_probereq_pkts; + u64 rx_probersp_pkts; + u64 rx_probersp_bm_pkts; + u64 rx_probersp_uo_pkts; + u64 rx_ctrl_pkts; + u64 rx_data_pkts; + + u64 last_rx_mgnt_pkts; + u64 last_rx_beacon_pkts; + u64 last_rx_probereq_pkts; + u64 last_rx_probersp_pkts; + u64 last_rx_probersp_bm_pkts; + u64 last_rx_probersp_uo_pkts; + u64 last_rx_ctrl_pkts; + u64 last_rx_data_pkts; + + u64 rx_bytes; + u64 rx_drops; + + u64 tx_pkts; + u64 tx_bytes; + u64 tx_drops; + +}; + +#ifdef CONFIG_TDLS +struct TDLS_PeerKey { + u8 kck[16]; /* TPK-KCK */ + u8 tk[16]; /* TPK-TK; only CCMP will be used */ +} ; +#endif //CONFIG_TDLS + +struct sta_info { + + _lock lock; + _list list; //free_sta_queue + _list hash_list; //sta_hash + //_list asoc_list; //20061114 + //_list sleep_list;//sleep_q + //_list wakeup_list;//wakeup_q + + struct sta_xmit_priv sta_xmitpriv; + struct sta_recv_priv sta_recvpriv; + + _queue sleep_q; + unsigned int sleepq_len; + + uint state; + uint aid; + uint mac_id; + uint qos_option; + u8 hwaddr[ETH_ALEN]; + + uint ieee8021x_blocked; //0: allowed, 1:blocked + uint dot118021XPrivacy; //aes, tkip... + union Keytype dot11tkiptxmickey; + union Keytype dot11tkiprxmickey; + union Keytype dot118021x_UncstKey; + union pn48 dot11txpn; // PN48 used for Unicast xmit. +#ifdef CONFIG_IEEE80211W + union pn48 dot11wtxpn; // PN48 used for Unicast mgmt xmit. +#endif //CONFIG_IEEE80211W + union pn48 dot11rxpn; // PN48 used for Unicast recv. + + + u8 bssrateset[16]; + u32 bssratelen; + s32 rssi; + s32 signal_quality; + + u8 cts2self; + u8 rtsen; + + u8 raid; + u8 init_rate; + u32 ra_mask; + struct stainfo_stats sta_stats; + +#ifdef CONFIG_TDLS + u32 tdls_sta_state; + u8 dialog; + u8 SNonce[32]; + u8 ANonce[32]; + u32 TDLS_PeerKey_Lifetime; + u16 TPK_count; + _timer TPK_timer; + struct TDLS_PeerKey tpk; + _adapter *padapter; + u16 stat_code; + u8 off_ch; + u16 ch_switch_time; + u16 ch_switch_timeout; + u8 option; + _timer option_timer; + _timer base_ch_timer; + _timer off_ch_timer; + + _timer handshake_timer; + _timer alive_timer1; + _timer alive_timer2; + u8 timer_flag; + u8 alive_count; +#endif //CONFIG_TDLS + + //for A-MPDU TX, ADDBA timeout check + _timer addba_retry_timer; + + //for A-MPDU Rx reordering buffer control + struct recv_reorder_ctrl recvreorder_ctrl[16]; + + //for A-MPDU Tx + //unsigned char ampdu_txen_bitmap; + u16 BA_starting_seqctrl[16]; + + +#ifdef CONFIG_80211N_HT + struct ht_priv htpriv; +#endif + + //Notes: + //STA_Mode: + //curr_network(mlme_priv/security_priv/qos/ht) + sta_info: (STA & AP) CAP/INFO + //scan_q: AP CAP/INFO + + //AP_Mode: + //curr_network(mlme_priv/security_priv/qos/ht) : AP CAP/INFO + //sta_info: (AP & STA) CAP/INFO + +#ifdef CONFIG_AP_MODE + + _list asoc_list; + _list auth_list; + + unsigned int expire_to; + unsigned int auth_seq; + unsigned int authalg; + unsigned char chg_txt[128]; + + u16 capability; + int flags; + + int dot8021xalg;//0:disable, 1:psk, 2:802.1x + int wpa_psk;//0:disable, bit(0): WPA, bit(1):WPA2 + int wpa_group_cipher; + int wpa2_group_cipher; + int wpa_pairwise_cipher; + int wpa2_pairwise_cipher; + + u8 bpairwise_key_installed; + +#ifdef CONFIG_NATIVEAP_MLME + u8 wpa_ie[32]; + + u8 nonerp_set; + u8 no_short_slot_time_set; + u8 no_short_preamble_set; + u8 no_ht_gf_set; + u8 no_ht_set; + u8 ht_20mhz_set; +#endif // CONFIG_NATIVEAP_MLME + + unsigned int tx_ra_bitmap; + u8 qos_info; + + u8 max_sp_len; + u8 uapsd_bk;//BIT(0): Delivery enabled, BIT(1): Trigger enabled + u8 uapsd_be; + u8 uapsd_vi; + u8 uapsd_vo; + + u8 has_legacy_ac; + unsigned int sleepq_ac_len; + +#ifdef CONFIG_P2P + //p2p priv data + u8 is_p2p_device; + u8 p2p_status_code; + + //p2p client info + u8 dev_addr[ETH_ALEN]; + //u8 iface_addr[ETH_ALEN];//= hwaddr[ETH_ALEN] + u8 dev_cap; + u16 config_methods; + u8 primary_dev_type[8]; + u8 num_of_secdev_type; + u8 secdev_types_list[32];// 32/8 == 4; + u16 dev_name_len; + u8 dev_name[32]; +#endif //CONFIG_P2P + +#ifdef CONFIG_TX_MCAST2UNI + u8 under_exist_checking; +#endif // CONFIG_TX_MCAST2UNI + + u8 keep_alive_trycnt; + +#endif // CONFIG_AP_MODE + +#ifdef CONFIG_IOCTL_CFG80211 + u8 *passoc_req; + u32 assoc_req_len; +#endif + + //for DM + RSSI_STA rssi_stat; + + /* To store the sequence number of received management frame */ + u16 RxMgmtFrameSeqNum; +}; + +#define sta_rx_pkts(sta) \ + (sta->sta_stats.rx_mgnt_pkts \ + + sta->sta_stats.rx_ctrl_pkts \ + + sta->sta_stats.rx_data_pkts) + +#define sta_last_rx_pkts(sta) \ + (sta->sta_stats.last_rx_mgnt_pkts \ + + sta->sta_stats.last_rx_ctrl_pkts \ + + sta->sta_stats.last_rx_data_pkts) + +#define sta_rx_data_pkts(sta) \ + (sta->sta_stats.rx_data_pkts) + +#define sta_last_rx_data_pkts(sta) \ + (sta->sta_stats.last_rx_data_pkts) + +#define sta_rx_mgnt_pkts(sta) \ + (sta->sta_stats.rx_mgnt_pkts) + +#define sta_last_rx_mgnt_pkts(sta) \ + (sta->sta_stats.last_rx_mgnt_pkts) + +#define sta_rx_beacon_pkts(sta) \ + (sta->sta_stats.rx_beacon_pkts) + +#define sta_last_rx_beacon_pkts(sta) \ + (sta->sta_stats.last_rx_beacon_pkts) + +#define sta_rx_probereq_pkts(sta) \ + (sta->sta_stats.rx_probereq_pkts) + +#define sta_last_rx_probereq_pkts(sta) \ + (sta->sta_stats.last_rx_probereq_pkts) + +#define sta_rx_probersp_pkts(sta) \ + (sta->sta_stats.rx_probersp_pkts) + +#define sta_last_rx_probersp_pkts(sta) \ + (sta->sta_stats.last_rx_probersp_pkts) + +#define sta_rx_probersp_bm_pkts(sta) \ + (sta->sta_stats.rx_probersp_bm_pkts) + +#define sta_last_rx_probersp_bm_pkts(sta) \ + (sta->sta_stats.last_rx_probersp_bm_pkts) + +#define sta_rx_probersp_uo_pkts(sta) \ + (sta->sta_stats.rx_probersp_uo_pkts) + +#define sta_last_rx_probersp_uo_pkts(sta) \ + (sta->sta_stats.last_rx_probersp_uo_pkts) + +#define sta_update_last_rx_pkts(sta) \ + do { \ + sta->sta_stats.last_rx_mgnt_pkts = sta->sta_stats.rx_mgnt_pkts; \ + sta->sta_stats.last_rx_beacon_pkts = sta->sta_stats.rx_beacon_pkts; \ + sta->sta_stats.last_rx_probereq_pkts = sta->sta_stats.rx_probereq_pkts; \ + sta->sta_stats.last_rx_probersp_pkts = sta->sta_stats.rx_probersp_pkts; \ + sta->sta_stats.last_rx_probersp_bm_pkts = sta->sta_stats.rx_probersp_bm_pkts; \ + sta->sta_stats.last_rx_probersp_uo_pkts = sta->sta_stats.rx_probersp_uo_pkts; \ + sta->sta_stats.last_rx_ctrl_pkts = sta->sta_stats.rx_ctrl_pkts; \ + sta->sta_stats.last_rx_data_pkts = sta->sta_stats.rx_data_pkts; \ + } while(0) + +#define STA_RX_PKTS_ARG(sta) \ + sta->sta_stats.rx_mgnt_pkts \ + , sta->sta_stats.rx_ctrl_pkts \ + , sta->sta_stats.rx_data_pkts + +#define STA_LAST_RX_PKTS_ARG(sta) \ + sta->sta_stats.last_rx_mgnt_pkts \ + , sta->sta_stats.last_rx_ctrl_pkts \ + , sta->sta_stats.last_rx_data_pkts + +#define STA_RX_PKTS_DIFF_ARG(sta) \ + sta->sta_stats.rx_mgnt_pkts - sta->sta_stats.last_rx_mgnt_pkts \ + , sta->sta_stats.rx_ctrl_pkts - sta->sta_stats.last_rx_ctrl_pkts \ + , sta->sta_stats.rx_data_pkts -sta->sta_stats.last_rx_data_pkts + +#define STA_PKTS_FMT "(m:%llu, c:%llu, d:%llu)" + +struct sta_priv { + + u8 *pallocated_stainfo_buf; + u8 *pstainfo_buf; + _queue free_sta_queue; + + _lock sta_hash_lock; + _list sta_hash[NUM_STA]; + int asoc_sta_count; + _queue sleep_q; + _queue wakeup_q; + + _adapter *padapter; + + +#ifdef CONFIG_AP_MODE + _list asoc_list; + _list auth_list; + _lock asoc_list_lock; + _lock auth_list_lock; + u8 asoc_list_cnt; + u8 auth_list_cnt; + + unsigned int auth_to; //sec, time to expire in authenticating. + unsigned int assoc_to; //sec, time to expire before associating. + unsigned int expire_to; //sec , time to expire after associated. + + /* pointers to STA info; based on allocated AID or NULL if AID free + * AID is in the range 1-2007, so sta_aid[0] corresponders to AID 1 + * and so on + */ + struct sta_info *sta_aid[NUM_STA]; + + u16 sta_dz_bitmap;//only support 15 stations, staion aid bitmap for sleeping sta. + u16 tim_bitmap;//only support 15 stations, aid=0~15 mapping bit0~bit15 + + u16 max_num_sta; + + struct wlan_acl_pool acl_list; +#endif + +}; + + +__inline static u32 wifi_mac_hash(u8 *mac) +{ + u32 x; + + x = mac[0]; + x = (x << 2) ^ mac[1]; + x = (x << 2) ^ mac[2]; + x = (x << 2) ^ mac[3]; + x = (x << 2) ^ mac[4]; + x = (x << 2) ^ mac[5]; + + x ^= x >> 8; + x = x & (NUM_STA - 1); + + return x; +} + + +extern u32 _rtw_init_sta_priv(struct sta_priv *pstapriv); +extern u32 _rtw_free_sta_priv(struct sta_priv *pstapriv); + +#define stainfo_offset_valid(offset) (offset < NUM_STA && offset >= 0) +int rtw_stainfo_offset(struct sta_priv *stapriv, struct sta_info *sta); +struct sta_info *rtw_get_stainfo_by_offset(struct sta_priv *stapriv, int offset); + +extern struct sta_info *rtw_alloc_stainfo(struct sta_priv *pstapriv, u8 *hwaddr); +extern u32 rtw_free_stainfo(_adapter *padapter , struct sta_info *psta); +extern void rtw_free_all_stainfo(_adapter *padapter); +extern struct sta_info *rtw_get_stainfo(struct sta_priv *pstapriv, u8 *hwaddr); +extern u32 rtw_init_bcmc_stainfo(_adapter* padapter); +extern struct sta_info* rtw_get_bcmc_stainfo(_adapter* padapter); +extern u8 rtw_access_ctrl(_adapter *padapter, u8 *mac_addr); + +#endif //_STA_INFO_H_ --- linux-raspi2-4.2.0.orig/drivers/net/wireless/rtl8192cu/include/usb_hal.h +++ linux-raspi2-4.2.0/drivers/net/wireless/rtl8192cu/include/usb_hal.h @@ -0,0 +1,36 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved. + * + * 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 + * published by the Free Software Foundation. + * + * 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 Street, Fifth Floor, Boston, MA 02110, USA + * + * + ******************************************************************************/ +#ifndef __USB_HAL_H__ +#define __USB_HAL_H__ + + +void rtl8192cu_set_hal_ops(_adapter * padapter); + +void rtl8192du_set_hal_ops(_adapter * padapter); +#ifdef CONFIG_INTEL_PROXIM +extern _adapter *rtw_usb_get_sw_pointer(void); +#endif //CONFIG_INTEL_PROXIM +#ifdef CONFIG_WOWLAN +#ifdef CONFIG_WOWLAN_MANUAL +extern int rtw_suspend_toshiba(PADAPTER Adapter); +extern int rtw_resume_toshiba(PADAPTER Adapter); +#endif // CONFIG_WOWLAN_MANUAL +#endif //CONFIG_WOWLAN +#endif //__USB_HAL_H__ --- linux-raspi2-4.2.0.orig/drivers/net/wireless/rtl8192cu/include/usb_ops.h +++ linux-raspi2-4.2.0/drivers/net/wireless/rtl8192cu/include/usb_ops.h @@ -0,0 +1,109 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved. + * + * 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 + * published by the Free Software Foundation. + * + * 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 Street, Fifth Floor, Boston, MA 02110, USA + * + * + ******************************************************************************/ +#ifndef __USB_OPS_H_ +#define __USB_OPS_H_ + +#include +#include +#include +#include + +#define REALTEK_USB_VENQT_READ 0xC0 +#define REALTEK_USB_VENQT_WRITE 0x40 +#define REALTEK_USB_VENQT_CMD_REQ 0x05 +#define REALTEK_USB_VENQT_CMD_IDX 0x00 + +enum{ + VENDOR_WRITE = 0x00, + VENDOR_READ = 0x01, +}; +#define ALIGNMENT_UNIT 16 +#define MAX_VENDOR_REQ_CMD_SIZE 254 //8188cu SIE Support +#define MAX_USB_IO_CTL_SIZE (MAX_VENDOR_REQ_CMD_SIZE +ALIGNMENT_UNIT) + +#ifdef PLATFORM_LINUX +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,12)) +#define rtw_usb_control_msg(dev, pipe, request, requesttype, value, index, data, size, timeout_ms) \ + usb_control_msg((dev), (pipe), (request), (requesttype), (value), (index), (data), (size), (timeout_ms)) +#define rtw_usb_bulk_msg(usb_dev, pipe, data, len, actual_length, timeout_ms) \ + usb_bulk_msg((usb_dev), (pipe), (data), (len), (actual_length), (timeout_ms)) +#else +#define rtw_usb_control_msg(dev, pipe, request, requesttype, value, index, data, size,timeout_ms) \ + usb_control_msg((dev), (pipe), (request), (requesttype), (value), (index), (data), (size), \ + ((timeout_ms) == 0) ||((timeout_ms)*HZ/1000>0)?((timeout_ms)*HZ/1000):1) +#define rtw_usb_bulk_msg(usb_dev, pipe, data, len, actual_length, timeout_ms) \ + usb_bulk_msg((usb_dev), (pipe), (data), (len), (actual_length), \ + ((timeout_ms) == 0) ||((timeout_ms)*HZ/1000>0)?((timeout_ms)*HZ/1000):1) +#endif +#include +#endif //PLATFORM_LINUX + +#ifdef CONFIG_RTL8192C +void rtl8192cu_set_intf_ops(struct _io_ops *pops); +#define usb_set_intf_ops rtl8192cu_set_intf_ops + +void rtl8192cu_recv_tasklet(void *priv); + +void rtl8192cu_xmit_tasklet(void *priv); +#endif + +#ifdef CONFIG_RTL8192D +void rtl8192du_set_intf_ops(struct _io_ops *pops); +#define usb_set_intf_ops rtl8192du_set_intf_ops + +#ifndef PLATFORM_FREEBSD +void rtl8192du_recv_tasklet(void *priv); +#else // PLATFORM_FREEBSD +void rtl8192du_recv_tasklet(void *priv, int npending); +#ifdef CONFIG_RX_INDICATE_QUEUE +void rtw_rx_indicate_tasklet(void *priv, int npending); +#endif // CONFIG_RX_INDICATE_QUEUE +#endif // PLATFORM_FREEBSD + +void rtl8192du_xmit_tasklet(void *priv); +#endif + +/* +* Increase and check if the continual_urb_error of this @param dvobjprive is larger than MAX_CONTINUAL_URB_ERR +* @return _TRUE: +* @return _FALSE: +*/ +static inline int rtw_inc_and_chk_continual_urb_error(struct dvobj_priv *dvobj) +{ + int ret = _FALSE; + int value; + if( (value=ATOMIC_INC_RETURN(&dvobj->continual_urb_error)) > MAX_CONTINUAL_URB_ERR) { + DBG_871X("[dvobj:%p][ERROR] continual_urb_error:%d > %d\n", dvobj, value, MAX_CONTINUAL_URB_ERR); + ret = _TRUE; + } else { + //DBG_871X("[dvobj:%p] continual_urb_error:%d\n", dvobj, value); + } + return ret; +} + +/* +* Set the continual_urb_error of this @param dvobjprive to 0 +*/ +static inline void rtw_reset_continual_urb_error(struct dvobj_priv *dvobj) +{ + ATOMIC_SET(&dvobj->continual_urb_error, 0); +} + +#endif //__USB_OPS_H_ --- linux-raspi2-4.2.0.orig/drivers/net/wireless/rtl8192cu/include/usb_ops_linux.h +++ linux-raspi2-4.2.0/drivers/net/wireless/rtl8192cu/include/usb_ops_linux.h @@ -0,0 +1,62 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved. + * + * 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 + * published by the Free Software Foundation. + * + * 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 Street, Fifth Floor, Boston, MA 02110, USA + * + * + ******************************************************************************/ +#ifndef __USB_OPS_LINUX_H__ +#define __USB_OPS_LINUX_H__ + +#define VENDOR_CMD_MAX_DATA_LEN 254 + +#define RTW_USB_CONTROL_MSG_TIMEOUT_TEST 10//ms +#define RTW_USB_CONTROL_MSG_TIMEOUT 500//ms + +#if defined(CONFIG_VENDOR_REQ_RETRY) && defined(CONFIG_USB_VENDOR_REQ_MUTEX) +/* vendor req retry should be in the situation when each vendor req is atomically submitted from others */ +#define MAX_USBCTRL_VENDORREQ_TIMES 10 +#else +#define MAX_USBCTRL_VENDORREQ_TIMES 1 +#endif + +#define RTW_USB_BULKOUT_TIMEOUT 5000//ms + +#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0)) || (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,18)) +#define _usbctrl_vendorreq_async_callback(urb, regs) _usbctrl_vendorreq_async_callback(urb) +#define usb_bulkout_zero_complete(purb, regs) usb_bulkout_zero_complete(purb) +#define usb_write_mem_complete(purb, regs) usb_write_mem_complete(purb) +#define usb_write_port_complete(purb, regs) usb_write_port_complete(purb) +#define usb_read_port_complete(purb, regs) usb_read_port_complete(purb) +#define usb_read_interrupt_complete(purb, regs) usb_read_interrupt_complete(purb) +#endif + +#ifdef CONFIG_USB_SUPPORT_ASYNC_VDN_REQ +int usb_async_write8(struct intf_hdl *pintfhdl, u32 addr, u8 val); +int usb_async_write16(struct intf_hdl *pintfhdl, u32 addr, u16 val); +int usb_async_write32(struct intf_hdl *pintfhdl, u32 addr, u32 val); +#endif /* CONFIG_USB_SUPPORT_ASYNC_VDN_REQ */ + +unsigned int ffaddr2pipehdl(struct dvobj_priv *pdvobj, u32 addr); + +void usb_read_mem(struct intf_hdl *pintfhdl, u32 addr, u32 cnt, u8 *rmem); +void usb_write_mem(struct intf_hdl *pintfhdl, u32 addr, u32 cnt, u8 *wmem); + +void usb_read_port_cancel(struct intf_hdl *pintfhdl); + +u32 usb_write_port(struct intf_hdl *pintfhdl, u32 addr, u32 cnt, u8 *wmem); +void usb_write_port_cancel(struct intf_hdl *pintfhdl); + +#endif --- linux-raspi2-4.2.0.orig/drivers/net/wireless/rtl8192cu/include/usb_osintf.h +++ linux-raspi2-4.2.0/drivers/net/wireless/rtl8192cu/include/usb_osintf.h @@ -0,0 +1,37 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved. + * + * 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 + * published by the Free Software Foundation. + * + * 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 Street, Fifth Floor, Boston, MA 02110, USA + * + * + ******************************************************************************/ +#ifndef __USB_OSINTF_H +#define __USB_OSINTF_H + +#include +#include +#include +#include + +#define USBD_HALTED(Status) ((ULONG)(Status) >> 30 == 3) + + +//uint usb_dvobj_init(_adapter * adapter); +//void usb_dvobj_deinit(_adapter * adapter); + +u8 usbvendorrequest(struct dvobj_priv *pdvobjpriv, RT_USB_BREQUEST brequest, RT_USB_WVALUE wvalue, u8 windex, void* data, u8 datalen, u8 isdirectionin); + + +#endif --- linux-raspi2-4.2.0.orig/drivers/net/wireless/rtl8192cu/include/usb_vendor_req.h +++ linux-raspi2-4.2.0/drivers/net/wireless/rtl8192cu/include/usb_vendor_req.h @@ -0,0 +1,59 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved. + * + * 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 + * published by the Free Software Foundation. + * + * 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 Street, Fifth Floor, Boston, MA 02110, USA + * + * + ******************************************************************************/ +#ifndef _USB_VENDOR_REQUEST_H_ +#define _USB_VENDOR_REQUEST_H_ + +//4 Set/Get Register related wIndex/Data +#define RT_USB_RESET_MASK_OFF 0 +#define RT_USB_RESET_MASK_ON 1 +#define RT_USB_SLEEP_MASK_OFF 0 +#define RT_USB_SLEEP_MASK_ON 1 +#define RT_USB_LDO_ON 1 +#define RT_USB_LDO_OFF 0 + +//4 Set/Get SYSCLK related wValue or Data +#define RT_USB_SYSCLK_32KHZ 0 +#define RT_USB_SYSCLK_40MHZ 1 +#define RT_USB_SYSCLK_60MHZ 2 + + +typedef enum _RT_USB_BREQUEST { + RT_USB_SET_REGISTER = 1, + RT_USB_SET_SYSCLK = 2, + RT_USB_GET_SYSCLK = 3, + RT_USB_GET_REGISTER = 4 +} RT_USB_BREQUEST; + + +typedef enum _RT_USB_WVALUE { + RT_USB_RESET_MASK = 1, + RT_USB_SLEEP_MASK = 2, + RT_USB_USB_HRCPWM = 3, + RT_USB_LDO = 4, + RT_USB_BOOT_TYPE = 5 +} RT_USB_WVALUE; + + +//BOOLEAN usbvendorrequest(PCE_USB_DEVICE CEdevice, RT_USB_BREQUEST bRequest, RT_USB_WVALUE wValue, UCHAR wIndex, PVOID Data, UCHAR DataLength, BOOLEAN isDirectionIn); +//BOOLEAN CEusbGetStatusRequest(PCE_USB_DEVICE CEdevice, IN USHORT Op, IN USHORT Index, PVOID Data); +//BOOLEAN CEusbFeatureRequest(PCE_USB_DEVICE CEdevice, IN USHORT Op, IN USHORT FeatureSelector, IN USHORT Index); +//BOOLEAN CEusbGetDescriptorRequest(PCE_USB_DEVICE CEdevice, IN short urbLength, IN UCHAR DescriptorType, IN UCHAR Index, IN USHORT LanguageId, IN PVOID TransferBuffer, IN ULONG TransferBufferLength); + +#endif --- linux-raspi2-4.2.0.orig/drivers/net/wireless/rtl8192cu/include/wifi.h +++ linux-raspi2-4.2.0/drivers/net/wireless/rtl8192cu/include/wifi.h @@ -0,0 +1,1245 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved. + * + * 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 + * published by the Free Software Foundation. + * + * 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 Street, Fifth Floor, Boston, MA 02110, USA + * + * + ******************************************************************************/ +#ifndef _WIFI_H_ +#define _WIFI_H_ + +#include + +#ifdef BIT +//#error "BIT define occurred earlier elsewhere!\n" +#undef BIT +#endif +#define BIT(x) (1 << (x)) + + +#define WLAN_ETHHDR_LEN 14 +#define WLAN_ETHADDR_LEN 6 +#define WLAN_IEEE_OUI_LEN 3 +#define WLAN_ADDR_LEN 6 +#define WLAN_CRC_LEN 4 +#define WLAN_BSSID_LEN 6 +#define WLAN_BSS_TS_LEN 8 +#define WLAN_HDR_A3_LEN 24 +#define WLAN_HDR_A4_LEN 30 +#define WLAN_HDR_A3_QOS_LEN 26 +#define WLAN_HDR_A4_QOS_LEN 32 +#define WLAN_SSID_MAXLEN 32 +#define WLAN_DATA_MAXLEN 2312 + +#define WLAN_A3_PN_OFFSET 24 +#define WLAN_A4_PN_OFFSET 30 + +#define WLAN_MIN_ETHFRM_LEN 60 +#define WLAN_MAX_ETHFRM_LEN 1514 +#define WLAN_ETHHDR_LEN 14 + +#define P80211CAPTURE_VERSION 0x80211001 + +#ifdef GREEN_HILL +#pragma pack(1) +#endif + +enum WIFI_FRAME_TYPE { + WIFI_MGT_TYPE = (0), + WIFI_CTRL_TYPE = (BIT(2)), + WIFI_DATA_TYPE = (BIT(3)), + WIFI_QOS_DATA_TYPE = (BIT(7)|BIT(3)), //!< QoS Data +}; + +enum WIFI_FRAME_SUBTYPE { + + // below is for mgt frame + WIFI_ASSOCREQ = (0 | WIFI_MGT_TYPE), + WIFI_ASSOCRSP = (BIT(4) | WIFI_MGT_TYPE), + WIFI_REASSOCREQ = (BIT(5) | WIFI_MGT_TYPE), + WIFI_REASSOCRSP = (BIT(5) | BIT(4) | WIFI_MGT_TYPE), + WIFI_PROBEREQ = (BIT(6) | WIFI_MGT_TYPE), + WIFI_PROBERSP = (BIT(6) | BIT(4) | WIFI_MGT_TYPE), + WIFI_BEACON = (BIT(7) | WIFI_MGT_TYPE), + WIFI_ATIM = (BIT(7) | BIT(4) | WIFI_MGT_TYPE), + WIFI_DISASSOC = (BIT(7) | BIT(5) | WIFI_MGT_TYPE), + WIFI_AUTH = (BIT(7) | BIT(5) | BIT(4) | WIFI_MGT_TYPE), + WIFI_DEAUTH = (BIT(7) | BIT(6) | WIFI_MGT_TYPE), + WIFI_ACTION = (BIT(7) | BIT(6) | BIT(4) | WIFI_MGT_TYPE), + + // below is for control frame + WIFI_PSPOLL = (BIT(7) | BIT(5) | WIFI_CTRL_TYPE), + WIFI_RTS = (BIT(7) | BIT(5) | BIT(4) | WIFI_CTRL_TYPE), + WIFI_CTS = (BIT(7) | BIT(6) | WIFI_CTRL_TYPE), + WIFI_ACK = (BIT(7) | BIT(6) | BIT(4) | WIFI_CTRL_TYPE), + WIFI_CFEND = (BIT(7) | BIT(6) | BIT(5) | WIFI_CTRL_TYPE), + WIFI_CFEND_CFACK = (BIT(7) | BIT(6) | BIT(5) | BIT(4) | WIFI_CTRL_TYPE), + + // below is for data frame + WIFI_DATA = (0 | WIFI_DATA_TYPE), + WIFI_DATA_CFACK = (BIT(4) | WIFI_DATA_TYPE), + WIFI_DATA_CFPOLL = (BIT(5) | WIFI_DATA_TYPE), + WIFI_DATA_CFACKPOLL = (BIT(5) | BIT(4) | WIFI_DATA_TYPE), + WIFI_DATA_NULL = (BIT(6) | WIFI_DATA_TYPE), + WIFI_CF_ACK = (BIT(6) | BIT(4) | WIFI_DATA_TYPE), + WIFI_CF_POLL = (BIT(6) | BIT(5) | WIFI_DATA_TYPE), + WIFI_CF_ACKPOLL = (BIT(6) | BIT(5) | BIT(4) | WIFI_DATA_TYPE), + WIFI_QOS_DATA_NULL = (BIT(6) | WIFI_QOS_DATA_TYPE), +}; + +enum WIFI_REASON_CODE { + _RSON_RESERVED_ = 0, + _RSON_UNSPECIFIED_ = 1, + _RSON_AUTH_NO_LONGER_VALID_ = 2, + _RSON_DEAUTH_STA_LEAVING_ = 3, + _RSON_INACTIVITY_ = 4, + _RSON_UNABLE_HANDLE_ = 5, + _RSON_CLS2_ = 6, + _RSON_CLS3_ = 7, + _RSON_DISAOC_STA_LEAVING_ = 8, + _RSON_ASOC_NOT_AUTH_ = 9, + + // WPA reason + _RSON_INVALID_IE_ = 13, + _RSON_MIC_FAILURE_ = 14, + _RSON_4WAY_HNDSHK_TIMEOUT_ = 15, + _RSON_GROUP_KEY_UPDATE_TIMEOUT_ = 16, + _RSON_DIFF_IE_ = 17, + _RSON_MLTCST_CIPHER_NOT_VALID_ = 18, + _RSON_UNICST_CIPHER_NOT_VALID_ = 19, + _RSON_AKMP_NOT_VALID_ = 20, + _RSON_UNSUPPORT_RSNE_VER_ = 21, + _RSON_INVALID_RSNE_CAP_ = 22, + _RSON_IEEE_802DOT1X_AUTH_FAIL_ = 23, + + //belowing are Realtek definition + _RSON_PMK_NOT_AVAILABLE_ = 24, + _RSON_TDLS_TEAR_TOOFAR_ = 25, + _RSON_TDLS_TEAR_UN_RSN_ = 26, +}; + +/* Reason codes (IEEE 802.11-2007, 7.3.1.7, Table 7-22) */ +#if 0 +#define WLAN_REASON_UNSPECIFIED 1 +#define WLAN_REASON_PREV_AUTH_NOT_VALID 2 +#define WLAN_REASON_DEAUTH_LEAVING 3 +#define WLAN_REASON_DISASSOC_DUE_TO_INACTIVITY 4 +#define WLAN_REASON_DISASSOC_AP_BUSY 5 +#define WLAN_REASON_CLASS2_FRAME_FROM_NONAUTH_STA 6 +#define WLAN_REASON_CLASS3_FRAME_FROM_NONASSOC_STA 7 +#define WLAN_REASON_DISASSOC_STA_HAS_LEFT 8 +#define WLAN_REASON_STA_REQ_ASSOC_WITHOUT_AUTH 9 +#endif +/* IEEE 802.11h */ +#define WLAN_REASON_PWR_CAPABILITY_NOT_VALID 10 +#define WLAN_REASON_SUPPORTED_CHANNEL_NOT_VALID 11 +#if 0 +/* IEEE 802.11i */ +#define WLAN_REASON_INVALID_IE 13 +#define WLAN_REASON_MICHAEL_MIC_FAILURE 14 +#define WLAN_REASON_4WAY_HANDSHAKE_TIMEOUT 15 +#define WLAN_REASON_GROUP_KEY_UPDATE_TIMEOUT 16 +#define WLAN_REASON_IE_IN_4WAY_DIFFERS 17 +#define WLAN_REASON_GROUP_CIPHER_NOT_VALID 18 +#define WLAN_REASON_PAIRWISE_CIPHER_NOT_VALID 19 +#define WLAN_REASON_AKMP_NOT_VALID 20 +#define WLAN_REASON_UNSUPPORTED_RSN_IE_VERSION 21 +#define WLAN_REASON_INVALID_RSN_IE_CAPAB 22 +#define WLAN_REASON_IEEE_802_1X_AUTH_FAILED 23 +#define WLAN_REASON_CIPHER_SUITE_REJECTED 24 +#endif + +enum WIFI_STATUS_CODE { + _STATS_SUCCESSFUL_ = 0, + _STATS_FAILURE_ = 1, + _STATS_CAP_FAIL_ = 10, + _STATS_NO_ASOC_ = 11, + _STATS_OTHER_ = 12, + _STATS_NO_SUPP_ALG_ = 13, + _STATS_OUT_OF_AUTH_SEQ_ = 14, + _STATS_CHALLENGE_FAIL_ = 15, + _STATS_AUTH_TIMEOUT_ = 16, + _STATS_UNABLE_HANDLE_STA_ = 17, + _STATS_RATE_FAIL_ = 18, +}; + +/* Status codes (IEEE 802.11-2007, 7.3.1.9, Table 7-23) */ +#if 0 +#define WLAN_STATUS_SUCCESS 0 +#define WLAN_STATUS_UNSPECIFIED_FAILURE 1 +#define WLAN_STATUS_CAPS_UNSUPPORTED 10 +#define WLAN_STATUS_REASSOC_NO_ASSOC 11 +#define WLAN_STATUS_ASSOC_DENIED_UNSPEC 12 +#define WLAN_STATUS_NOT_SUPPORTED_AUTH_ALG 13 +#define WLAN_STATUS_UNKNOWN_AUTH_TRANSACTION 14 +#define WLAN_STATUS_CHALLENGE_FAIL 15 +#define WLAN_STATUS_AUTH_TIMEOUT 16 +#define WLAN_STATUS_AP_UNABLE_TO_HANDLE_NEW_STA 17 +#define WLAN_STATUS_ASSOC_DENIED_RATES 18 +#endif +//entended +/* IEEE 802.11b */ +#define WLAN_STATUS_ASSOC_DENIED_NOSHORT 19 +#define WLAN_STATUS_ASSOC_DENIED_NOPBCC 20 +#define WLAN_STATUS_ASSOC_DENIED_NOAGILITY 21 +/* IEEE 802.11h */ +#define WLAN_STATUS_SPEC_MGMT_REQUIRED 22 +#define WLAN_STATUS_PWR_CAPABILITY_NOT_VALID 23 +#define WLAN_STATUS_SUPPORTED_CHANNEL_NOT_VALID 24 +/* IEEE 802.11g */ +#define WLAN_STATUS_ASSOC_DENIED_NO_SHORT_SLOT_TIME 25 +#define WLAN_STATUS_ASSOC_DENIED_NO_ER_PBCC 26 +#define WLAN_STATUS_ASSOC_DENIED_NO_DSSS_OFDM 27 +/* IEEE 802.11w */ +#define WLAN_STATUS_ASSOC_REJECTED_TEMPORARILY 30 +#define WLAN_STATUS_ROBUST_MGMT_FRAME_POLICY_VIOLATION 31 +/* IEEE 802.11i */ +#define WLAN_STATUS_INVALID_IE 40 +#define WLAN_STATUS_GROUP_CIPHER_NOT_VALID 41 +#define WLAN_STATUS_PAIRWISE_CIPHER_NOT_VALID 42 +#define WLAN_STATUS_AKMP_NOT_VALID 43 +#define WLAN_STATUS_UNSUPPORTED_RSN_IE_VERSION 44 +#define WLAN_STATUS_INVALID_RSN_IE_CAPAB 45 +#define WLAN_STATUS_CIPHER_REJECTED_PER_POLICY 46 +#define WLAN_STATUS_TS_NOT_CREATED 47 +#define WLAN_STATUS_DIRECT_LINK_NOT_ALLOWED 48 +#define WLAN_STATUS_DEST_STA_NOT_PRESENT 49 +#define WLAN_STATUS_DEST_STA_NOT_QOS_STA 50 +#define WLAN_STATUS_ASSOC_DENIED_LISTEN_INT_TOO_LARGE 51 +/* IEEE 802.11r */ +#define WLAN_STATUS_INVALID_FT_ACTION_FRAME_COUNT 52 +#define WLAN_STATUS_INVALID_PMKID 53 +#define WLAN_STATUS_INVALID_MDIE 54 +#define WLAN_STATUS_INVALID_FTIE 55 + + +enum WIFI_REG_DOMAIN { + DOMAIN_FCC = 1, + DOMAIN_IC = 2, + DOMAIN_ETSI = 3, + DOMAIN_SPAIN = 4, + DOMAIN_FRANCE = 5, + DOMAIN_MKK = 6, + DOMAIN_ISRAEL = 7, + DOMAIN_MKK1 = 8, + DOMAIN_MKK2 = 9, + DOMAIN_MKK3 = 10, + DOMAIN_MAX +}; + +#define _TO_DS_ BIT(8) +#define _FROM_DS_ BIT(9) +#define _MORE_FRAG_ BIT(10) +#define _RETRY_ BIT(11) +#define _PWRMGT_ BIT(12) +#define _MORE_DATA_ BIT(13) +#define _PRIVACY_ BIT(14) +#define _ORDER_ BIT(15) + +#define SetToDs(pbuf) \ + do { \ + *(unsigned short *)(pbuf) |= cpu_to_le16(_TO_DS_); \ + } while(0) + +#define GetToDs(pbuf) (((*(unsigned short *)(pbuf)) & le16_to_cpu(_TO_DS_)) != 0) + +#define ClearToDs(pbuf) \ + do { \ + *(unsigned short *)(pbuf) &= (~cpu_to_le16(_TO_DS_)); \ + } while(0) + +#define SetFrDs(pbuf) \ + do { \ + *(unsigned short *)(pbuf) |= cpu_to_le16(_FROM_DS_); \ + } while(0) + +#define GetFrDs(pbuf) (((*(unsigned short *)(pbuf)) & le16_to_cpu(_FROM_DS_)) != 0) + +#define ClearFrDs(pbuf) \ + do { \ + *(unsigned short *)(pbuf) &= (~cpu_to_le16(_FROM_DS_)); \ + } while(0) + +#define get_tofr_ds(pframe) ((GetToDs(pframe) << 1) | GetFrDs(pframe)) + + +#define SetMFrag(pbuf) \ + do { \ + *(unsigned short *)(pbuf) |= cpu_to_le16(_MORE_FRAG_); \ + } while(0) + +#define GetMFrag(pbuf) (((*(unsigned short *)(pbuf)) & le16_to_cpu(_MORE_FRAG_)) != 0) + +#define ClearMFrag(pbuf) \ + do { \ + *(unsigned short *)(pbuf) &= (~cpu_to_le16(_MORE_FRAG_)); \ + } while(0) + +#define SetRetry(pbuf) \ + do { \ + *(unsigned short *)(pbuf) |= cpu_to_le16(_RETRY_); \ + } while(0) + +#define GetRetry(pbuf) (((*(unsigned short *)(pbuf)) & le16_to_cpu(_RETRY_)) != 0) + +#define ClearRetry(pbuf) \ + do { \ + *(unsigned short *)(pbuf) &= (~cpu_to_le16(_RETRY_)); \ + } while(0) + +#define SetPwrMgt(pbuf) \ + do { \ + *(unsigned short *)(pbuf) |= cpu_to_le16(_PWRMGT_); \ + } while(0) + +#define GetPwrMgt(pbuf) (((*(unsigned short *)(pbuf)) & le16_to_cpu(_PWRMGT_)) != 0) + +#define ClearPwrMgt(pbuf) \ + do { \ + *(unsigned short *)(pbuf) &= (~cpu_to_le16(_PWRMGT_)); \ + } while(0) + +#define SetMData(pbuf) \ + do { \ + *(unsigned short *)(pbuf) |= cpu_to_le16(_MORE_DATA_); \ + } while(0) + +#define GetMData(pbuf) (((*(unsigned short *)(pbuf)) & le16_to_cpu(_MORE_DATA_)) != 0) + +#define ClearMData(pbuf) \ + do { \ + *(unsigned short *)(pbuf) &= (~cpu_to_le16(_MORE_DATA_)); \ + } while(0) + +#define SetPrivacy(pbuf) \ + do { \ + *(unsigned short *)(pbuf) |= cpu_to_le16(_PRIVACY_); \ + } while(0) + +#define GetPrivacy(pbuf) (((*(unsigned short *)(pbuf)) & le16_to_cpu(_PRIVACY_)) != 0) + +#define ClearPrivacy(pbuf) \ + do { \ + *(unsigned short *)(pbuf) &= (~cpu_to_le16(_PRIVACY_)); \ + } while(0) + + +#define GetOrder(pbuf) (((*(unsigned short *)(pbuf)) & le16_to_cpu(_ORDER_)) != 0) + +#define GetFrameType(pbuf) (le16_to_cpu(*(unsigned short *)(pbuf)) & (BIT(3) | BIT(2))) + +#define SetFrameType(pbuf,type) \ + do { \ + *(unsigned short *)(pbuf) &= __constant_cpu_to_le16(~(BIT(3) | BIT(2))); \ + *(unsigned short *)(pbuf) |= __constant_cpu_to_le16(type); \ + } while(0) + +#define GetFrameSubType(pbuf) (cpu_to_le16(*(unsigned short *)(pbuf)) & (BIT(7) | BIT(6) | BIT(5) | BIT(4) | BIT(3) | BIT(2))) + +#define SetFrameSubType(pbuf,type) \ + do { \ + *(unsigned short *)(pbuf) &= cpu_to_le16(~(BIT(7) | BIT(6) | BIT(5) | BIT(4) | BIT(3) | BIT(2))); \ + *(unsigned short *)(pbuf) |= cpu_to_le16(type); \ + } while(0) + +#define GetSequence(pbuf) (cpu_to_le16(*(unsigned short *)((SIZE_PTR)(pbuf) + 22)) >> 4) + +#define GetFragNum(pbuf) (cpu_to_le16(*(unsigned short *)((SIZE_PTR)(pbuf) + 22)) & 0x0f) + +#define GetTupleCache(pbuf) (cpu_to_le16(*(unsigned short *)((SIZE_PTR)(pbuf) + 22))) + +#define SetFragNum(pbuf, num) \ + do { \ + *(unsigned short *)((SIZE_PTR)(pbuf) + 22) = \ + ((*(unsigned short *)((SIZE_PTR)(pbuf) + 22)) & le16_to_cpu(~(0x000f))) | \ + cpu_to_le16(0x0f & (num)); \ + } while(0) + +#define SetSeqNum(pbuf, num) \ + do { \ + *(unsigned short *)((SIZE_PTR)(pbuf) + 22) = \ + ((*(unsigned short *)((SIZE_PTR)(pbuf) + 22)) & le16_to_cpu((unsigned short)~0xfff0)) | \ + le16_to_cpu((unsigned short)(0xfff0 & (num << 4))); \ + } while(0) + +#define SetDuration(pbuf, dur) \ + do { \ + *(unsigned short *)((SIZE_PTR)(pbuf) + 2) = cpu_to_le16(0xffff & (dur)); \ + } while(0) + + +#define SetPriority(pbuf, tid) \ + do { \ + *(unsigned short *)(pbuf) |= cpu_to_le16(tid & 0xf); \ + } while(0) + +#define GetPriority(pbuf) ((le16_to_cpu(*(unsigned short *)(pbuf))) & 0xf) + +#define SetEOSP(pbuf, eosp) \ + do { \ + *(unsigned short *)(pbuf) |= cpu_to_le16( (eosp & 1) << 4); \ + } while(0) + +#define SetAckpolicy(pbuf, ack) \ + do { \ + *(unsigned short *)(pbuf) |= cpu_to_le16( (ack & 3) << 5); \ + } while(0) + +#define GetAckpolicy(pbuf) (((le16_to_cpu(*(unsigned short *)pbuf)) >> 5) & 0x3) + +#define GetAMsdu(pbuf) (((le16_to_cpu(*(unsigned short *)pbuf)) >> 7) & 0x1) + +#define SetAMsdu(pbuf, amsdu) \ + do { \ + *(unsigned short *)(pbuf) |= cpu_to_le16( (amsdu & 1) << 7); \ + } while(0) + +#define GetAid(pbuf) (cpu_to_le16(*(unsigned short *)((SIZE_PTR)(pbuf) + 2)) & 0x3fff) + +#define GetTid(pbuf) (cpu_to_le16(*(unsigned short *)((SIZE_PTR)(pbuf) + (((GetToDs(pbuf)<<1)|GetFrDs(pbuf))==3?30:24))) & 0x000f) + +#define GetAddr1Ptr(pbuf) ((unsigned char *)((SIZE_PTR)(pbuf) + 4)) + +#define GetAddr2Ptr(pbuf) ((unsigned char *)((SIZE_PTR)(pbuf) + 10)) + +#define GetAddr3Ptr(pbuf) ((unsigned char *)((SIZE_PTR)(pbuf) + 16)) + +#define GetAddr4Ptr(pbuf) ((unsigned char *)((SIZE_PTR)(pbuf) + 24)) + +#define MacAddr_isBcst(addr) \ +( \ + ( (addr[0] == 0xff) && (addr[1] == 0xff) && \ + (addr[2] == 0xff) && (addr[3] == 0xff) && \ + (addr[4] == 0xff) && (addr[5] == 0xff) ) ? _TRUE : _FALSE \ +) + +__inline static int IS_MCAST(unsigned char *da) +{ + if ((*da) & 0x01) + return _TRUE; + else + return _FALSE; +} + + +__inline static unsigned char * get_da(unsigned char *pframe) +{ + unsigned char *da; + unsigned int to_fr_ds = (GetToDs(pframe) << 1) | GetFrDs(pframe); + + switch (to_fr_ds) { + case 0x00: // ToDs=0, FromDs=0 + da = GetAddr1Ptr(pframe); + break; + case 0x01: // ToDs=0, FromDs=1 + da = GetAddr1Ptr(pframe); + break; + case 0x02: // ToDs=1, FromDs=0 + da = GetAddr3Ptr(pframe); + break; + default: // ToDs=1, FromDs=1 + da = GetAddr3Ptr(pframe); + break; + } + + return da; +} + + +__inline static unsigned char * get_sa(unsigned char *pframe) +{ + unsigned char *sa; + unsigned int to_fr_ds = (GetToDs(pframe) << 1) | GetFrDs(pframe); + + switch (to_fr_ds) { + case 0x00: // ToDs=0, FromDs=0 + sa = GetAddr2Ptr(pframe); + break; + case 0x01: // ToDs=0, FromDs=1 + sa = GetAddr3Ptr(pframe); + break; + case 0x02: // ToDs=1, FromDs=0 + sa = GetAddr2Ptr(pframe); + break; + default: // ToDs=1, FromDs=1 + sa = GetAddr4Ptr(pframe); + break; + } + + return sa; +} + +__inline static unsigned char * get_hdr_bssid(unsigned char *pframe) +{ + unsigned char *sa; + unsigned int to_fr_ds = (GetToDs(pframe) << 1) | GetFrDs(pframe); + + switch (to_fr_ds) { + case 0x00: // ToDs=0, FromDs=0 + sa = GetAddr3Ptr(pframe); + break; + case 0x01: // ToDs=0, FromDs=1 + sa = GetAddr2Ptr(pframe); + break; + case 0x02: // ToDs=1, FromDs=0 + sa = GetAddr1Ptr(pframe); + break; + case 0x03: // ToDs=1, FromDs=1 + sa = GetAddr1Ptr(pframe); + break; + default: + sa =NULL; //??????? + break; + } + + return sa; +} + + +__inline static int IsFrameTypeCtrl(unsigned char *pframe) +{ + if(WIFI_CTRL_TYPE == GetFrameType(pframe)) + return _TRUE; + else + return _FALSE; +} +/*----------------------------------------------------------------------------- + Below is for the security related definition +------------------------------------------------------------------------------*/ +#define _RESERVED_FRAME_TYPE_ 0 +#define _SKB_FRAME_TYPE_ 2 +#define _PRE_ALLOCMEM_ 1 +#define _PRE_ALLOCHDR_ 3 +#define _PRE_ALLOCLLCHDR_ 4 +#define _PRE_ALLOCICVHDR_ 5 +#define _PRE_ALLOCMICHDR_ 6 + +#define _SIFSTIME_ ((priv->pmib->dot11BssType.net_work_type&WIRELESS_11A)?16:10) +#define _ACKCTSLNG_ 14 //14 bytes long, including crclng +#define _CRCLNG_ 4 + +#define _ASOCREQ_IE_OFFSET_ 4 // excluding wlan_hdr +#define _ASOCRSP_IE_OFFSET_ 6 +#define _REASOCREQ_IE_OFFSET_ 10 +#define _REASOCRSP_IE_OFFSET_ 6 +#define _PROBEREQ_IE_OFFSET_ 0 +#define _PROBERSP_IE_OFFSET_ 12 +#define _AUTH_IE_OFFSET_ 6 +#define _DEAUTH_IE_OFFSET_ 0 +#define _BEACON_IE_OFFSET_ 12 +#define _PUBLIC_ACTION_IE_OFFSET_ 8 + +#define _FIXED_IE_LENGTH_ _BEACON_IE_OFFSET_ + +#define _SSID_IE_ 0 +#define _SUPPORTEDRATES_IE_ 1 +#define _DSSET_IE_ 3 +#define _TIM_IE_ 5 +#define _IBSS_PARA_IE_ 6 +#define _COUNTRY_IE_ 7 +#define _CHLGETXT_IE_ 16 +#define _POW_CAP_IE_ 33 +#define _SUPPORTED_CH_IE_ 36 +#define _CH_SWTICH_ANNOUNCE_ 37 //Secondary Channel Offset +#define _RSN_IE_2_ 48 +#define _SSN_IE_1_ 221 +#define _ERPINFO_IE_ 42 +#define _EXT_SUPPORTEDRATES_IE_ 50 + +#define _HT_CAPABILITY_IE_ 45 +#define _FTIE_ 55 +#define _TIMEOUT_ITVL_IE_ 56 +#define _SRC_IE_ 59 +#define _HT_EXTRA_INFO_IE_ 61 +#define _HT_ADD_INFO_IE_ 61 //_HT_EXTRA_INFO_IE_ + +#define EID_BSSCoexistence 72 // 20/40 BSS Coexistence +#define EID_BSSIntolerantChlReport 73 +#define _RIC_Descriptor_IE_ 75 + +#ifdef CONFIG_IEEE80211W +#define _MME_IE_ 76 //802.11w Management MIC element +#endif //CONFIG_IEEE80211W +#define _LINK_ID_IE_ 101 +#define _CH_SWITCH_TIMING_ 104 +#define _PTI_BUFFER_STATUS_ 106 +#define _EXT_CAP_IE_ 127 +#define _VENDOR_SPECIFIC_IE_ 221 + +#define _RESERVED47_ 47 + +/* --------------------------------------------------------------------------- + Below is the fixed elements... +-----------------------------------------------------------------------------*/ +#define _AUTH_ALGM_NUM_ 2 +#define _AUTH_SEQ_NUM_ 2 +#define _BEACON_ITERVAL_ 2 +#define _CAPABILITY_ 2 +#define _CURRENT_APADDR_ 6 +#define _LISTEN_INTERVAL_ 2 +#define _RSON_CODE_ 2 +#define _ASOC_ID_ 2 +#define _STATUS_CODE_ 2 +#define _TIMESTAMP_ 8 + +#define AUTH_ODD_TO 0 +#define AUTH_EVEN_TO 1 + +#define WLAN_ETHCONV_ENCAP 1 +#define WLAN_ETHCONV_RFC1042 2 +#define WLAN_ETHCONV_8021h 3 + +#define cap_ESS BIT(0) +#define cap_IBSS BIT(1) +#define cap_CFPollable BIT(2) +#define cap_CFRequest BIT(3) +#define cap_Privacy BIT(4) +#define cap_ShortPremble BIT(5) +#define cap_PBCC BIT(6) +#define cap_ChAgility BIT(7) +#define cap_SpecMgmt BIT(8) +#define cap_QoS BIT(9) +#define cap_ShortSlot BIT(10) + +/*----------------------------------------------------------------------------- + Below is the definition for 802.11i / 802.1x +------------------------------------------------------------------------------*/ +#define _IEEE8021X_MGT_ 1 // WPA +#define _IEEE8021X_PSK_ 2 // WPA with pre-shared key + +/* +#define _NO_PRIVACY_ 0 +#define _WEP_40_PRIVACY_ 1 +#define _TKIP_PRIVACY_ 2 +#define _WRAP_PRIVACY_ 3 +#define _CCMP_PRIVACY_ 4 +#define _WEP_104_PRIVACY_ 5 +#define _WEP_WPA_MIXED_PRIVACY_ 6 // WEP + WPA +*/ + +#ifdef CONFIG_IEEE80211W +#define _MME_IE_LENGTH_ 18 +#endif //CONFIG_IEEE80211W +/*----------------------------------------------------------------------------- + Below is the definition for WMM +------------------------------------------------------------------------------*/ +#define _WMM_IE_Length_ 7 // for WMM STA +#define _WMM_Para_Element_Length_ 24 + + +/*----------------------------------------------------------------------------- + Below is the definition for 802.11n +------------------------------------------------------------------------------*/ + +/* block-ack parameters */ +#define IEEE80211_ADDBA_PARAM_POLICY_MASK 0x0002 +#define IEEE80211_ADDBA_PARAM_TID_MASK 0x003C +#define RTW_IEEE80211_ADDBA_PARAM_BUF_SIZE_MASK 0xFFA0 +#define IEEE80211_DELBA_PARAM_TID_MASK 0xF000 +#define IEEE80211_DELBA_PARAM_INITIATOR_MASK 0x0800 + +//#ifdef CONFIG_80211N_HT + +#define SetOrderBit(pbuf) \ + do { \ + *(unsigned short *)(pbuf) |= cpu_to_le16(_ORDER_); \ + } while(0) + +#define GetOrderBit(pbuf) (((*(unsigned short *)(pbuf)) & le16_to_cpu(_ORDER_)) != 0) + + +/** + * struct rtw_ieee80211_bar - HT Block Ack Request + * + * This structure refers to "HT BlockAckReq" as + * described in 802.11n draft section 7.2.1.7.1 + */ + #if defined(PLATFORM_LINUX) || defined(CONFIG_RTL8712FW) +struct rtw_ieee80211_bar { + unsigned short frame_control; + unsigned short duration; + unsigned char ra[6]; + unsigned char ta[6]; + unsigned short control; + unsigned short start_seq_num; +} __attribute__((packed)); + #endif + +/* 802.11 BAR control masks */ +#define IEEE80211_BAR_CTRL_ACK_POLICY_NORMAL 0x0000 +#define IEEE80211_BAR_CTRL_CBMTID_COMPRESSED_BA 0x0004 + + + #if defined(PLATFORM_LINUX) || defined(CONFIG_RTL8712FW) || defined(PLATFORM_FREEBSD) + + + + /** + * struct rtw_ieee80211_ht_cap - HT capabilities + * + * This structure refers to "HT capabilities element" as + * described in 802.11n draft section 7.3.2.52 + */ + +struct rtw_ieee80211_ht_cap { + unsigned short cap_info; + unsigned char ampdu_params_info; + unsigned char supp_mcs_set[16]; + unsigned short extended_ht_cap_info; + unsigned int tx_BF_cap_info; + unsigned char antenna_selection_info; +} __attribute__ ((packed)); + +/** + * struct rtw_ieee80211_ht_cap - HT additional information + * + * This structure refers to "HT information element" as + * described in 802.11n draft section 7.3.2.53 + */ +struct ieee80211_ht_addt_info { + unsigned char control_chan; + unsigned char ht_param; + unsigned short operation_mode; + unsigned short stbc_param; + unsigned char basic_set[16]; +} __attribute__ ((packed)); + + +struct HT_caps_element +{ + union + { + struct + { + unsigned short HT_caps_info; + unsigned char AMPDU_para; + unsigned char MCS_rate[16]; + unsigned short HT_ext_caps; + unsigned int Beamforming_caps; + unsigned char ASEL_caps; + } HT_cap_element; + unsigned char HT_cap[26]; + }u; +} __attribute__ ((packed)); + +struct HT_info_element +{ + unsigned char primary_channel; + unsigned char infos[5]; + unsigned char MCS_rate[16]; +} __attribute__ ((packed)); + +struct AC_param +{ + unsigned char ACI_AIFSN; + unsigned char CW; + unsigned short TXOP_limit; +} __attribute__ ((packed)); + +struct WMM_para_element +{ + unsigned char QoS_info; + unsigned char reserved; + struct AC_param ac_param[4]; +} __attribute__ ((packed)); + +struct ADDBA_request +{ + unsigned char dialog_token; + unsigned short BA_para_set; + unsigned short BA_timeout_value; + unsigned short BA_starting_seqctrl; +} __attribute__ ((packed)); + + + +#endif + + +#ifdef PLATFORM_WINDOWS + +#pragma pack(1) + +struct rtw_ieee80211_ht_cap { + unsigned short cap_info; + unsigned char ampdu_params_info; + unsigned char supp_mcs_set[16]; + unsigned short extended_ht_cap_info; + unsigned int tx_BF_cap_info; + unsigned char antenna_selection_info; +}; + + +struct ieee80211_ht_addt_info { + unsigned char control_chan; + unsigned char ht_param; + unsigned short operation_mode; + unsigned short stbc_param; + unsigned char basic_set[16]; +}; + +struct HT_caps_element +{ + union + { + struct + { + unsigned short HT_caps_info; + unsigned char AMPDU_para; + unsigned char MCS_rate[16]; + unsigned short HT_ext_caps; + unsigned int Beamforming_caps; + unsigned char ASEL_caps; + } HT_cap_element; + unsigned char HT_cap[26]; + }; +}; + +struct HT_info_element +{ + unsigned char primary_channel; + unsigned char infos[5]; + unsigned char MCS_rate[16]; +}; + +struct AC_param +{ + unsigned char ACI_AIFSN; + unsigned char CW; + unsigned short TXOP_limit; +}; + +struct WMM_para_element +{ + unsigned char QoS_info; + unsigned char reserved; + struct AC_param ac_param[4]; +}; + +struct ADDBA_request +{ + unsigned char dialog_token; + unsigned short BA_para_set; + unsigned short BA_timeout_value; + unsigned short BA_starting_seqctrl; +}; + + +#pragma pack() + +#endif + + +/* 802.11n HT capabilities masks */ +#define IEEE80211_HT_CAP_SUP_WIDTH 0x0002 +#define IEEE80211_HT_CAP_SM_PS 0x000C +#define IEEE80211_HT_CAP_GRN_FLD 0x0010 +#define IEEE80211_HT_CAP_SGI_20 0x0020 +#define IEEE80211_HT_CAP_SGI_40 0x0040 +#define IEEE80211_HT_CAP_TX_STBC 0x0080 +#define IEEE80211_HT_CAP_RX_STBC 0x0300 +#define IEEE80211_HT_CAP_DELAY_BA 0x0400 +#define IEEE80211_HT_CAP_MAX_AMSDU 0x0800 +#define IEEE80211_HT_CAP_DSSSCCK40 0x1000 +/* 802.11n HT capability AMPDU settings */ +#define IEEE80211_HT_CAP_AMPDU_FACTOR 0x03 +#define IEEE80211_HT_CAP_AMPDU_DENSITY 0x1C +/* 802.11n HT capability MSC set */ +#define IEEE80211_SUPP_MCS_SET_UEQM 4 +#define IEEE80211_HT_CAP_MAX_STREAMS 4 +#define IEEE80211_SUPP_MCS_SET_LEN 10 +/* maximum streams the spec allows */ +#define IEEE80211_HT_CAP_MCS_TX_DEFINED 0x01 +#define IEEE80211_HT_CAP_MCS_TX_RX_DIFF 0x02 +#define IEEE80211_HT_CAP_MCS_TX_STREAMS 0x0C +#define IEEE80211_HT_CAP_MCS_TX_UEQM 0x10 +/* 802.11n HT IE masks */ +#define IEEE80211_HT_IE_CHA_SEC_OFFSET 0x03 +#define IEEE80211_HT_IE_CHA_SEC_NONE 0x00 +#define IEEE80211_HT_IE_CHA_SEC_ABOVE 0x01 +#define IEEE80211_HT_IE_CHA_SEC_BELOW 0x03 +#define IEEE80211_HT_IE_CHA_WIDTH 0x04 +#define IEEE80211_HT_IE_HT_PROTECTION 0x0003 +#define IEEE80211_HT_IE_NON_GF_STA_PRSNT 0x0004 +#define IEEE80211_HT_IE_NON_HT_STA_PRSNT 0x0010 + +/* block-ack parameters */ +#define IEEE80211_ADDBA_PARAM_POLICY_MASK 0x0002 +#define IEEE80211_ADDBA_PARAM_TID_MASK 0x003C +#define RTW_IEEE80211_ADDBA_PARAM_BUF_SIZE_MASK 0xFFA0 +#define IEEE80211_DELBA_PARAM_TID_MASK 0xF000 +#define IEEE80211_DELBA_PARAM_INITIATOR_MASK 0x0800 + +/* + * A-PMDU buffer sizes + * According to IEEE802.11n spec size varies from 8K to 64K (in powers of 2) + */ +#define IEEE80211_MIN_AMPDU_BUF 0x8 +#define IEEE80211_MAX_AMPDU_BUF 0x40 + + +/* Spatial Multiplexing Power Save Modes */ +#define WLAN_HT_CAP_SM_PS_STATIC 0 +#define WLAN_HT_CAP_SM_PS_DYNAMIC 1 +#define WLAN_HT_CAP_SM_PS_INVALID 2 +#define WLAN_HT_CAP_SM_PS_DISABLED 3 + + +#define OP_MODE_PURE 0 +#define OP_MODE_MAY_BE_LEGACY_STAS 1 +#define OP_MODE_20MHZ_HT_STA_ASSOCED 2 +#define OP_MODE_MIXED 3 + +#define HT_INFO_HT_PARAM_SECONDARY_CHNL_OFF_MASK ((u8) BIT(0) | BIT(1)) +#define HT_INFO_HT_PARAM_SECONDARY_CHNL_ABOVE ((u8) BIT(0)) +#define HT_INFO_HT_PARAM_SECONDARY_CHNL_BELOW ((u8) BIT(0) | BIT(1)) +#define HT_INFO_HT_PARAM_REC_TRANS_CHNL_WIDTH ((u8) BIT(2)) +#define HT_INFO_HT_PARAM_RIFS_MODE ((u8) BIT(3)) +#define HT_INFO_HT_PARAM_CTRL_ACCESS_ONLY ((u8) BIT(4)) +#define HT_INFO_HT_PARAM_SRV_INTERVAL_GRANULARITY ((u8) BIT(5)) + +#define HT_INFO_OPERATION_MODE_OP_MODE_MASK \ + ((u16) (0x0001 | 0x0002)) +#define HT_INFO_OPERATION_MODE_OP_MODE_OFFSET 0 +#define HT_INFO_OPERATION_MODE_NON_GF_DEVS_PRESENT ((u8) BIT(2)) +#define HT_INFO_OPERATION_MODE_TRANSMIT_BURST_LIMIT ((u8) BIT(3)) +#define HT_INFO_OPERATION_MODE_NON_HT_STA_PRESENT ((u8) BIT(4)) + +#define HT_INFO_STBC_PARAM_DUAL_BEACON ((u16) BIT(6)) +#define HT_INFO_STBC_PARAM_DUAL_STBC_PROTECT ((u16) BIT(7)) +#define HT_INFO_STBC_PARAM_SECONDARY_BCN ((u16) BIT(8)) +#define HT_INFO_STBC_PARAM_LSIG_TXOP_PROTECT_ALLOWED ((u16) BIT(9)) +#define HT_INFO_STBC_PARAM_PCO_ACTIVE ((u16) BIT(10)) +#define HT_INFO_STBC_PARAM_PCO_PHASE ((u16) BIT(11)) + + + +//#endif + +// ===============WPS Section=============== +// For WPSv1.0 +#define WPSOUI 0x0050f204 +// WPS attribute ID +#define WPS_ATTR_VER1 0x104A +#define WPS_ATTR_SIMPLE_CONF_STATE 0x1044 +#define WPS_ATTR_RESP_TYPE 0x103B +#define WPS_ATTR_UUID_E 0x1047 +#define WPS_ATTR_MANUFACTURER 0x1021 +#define WPS_ATTR_MODEL_NAME 0x1023 +#define WPS_ATTR_MODEL_NUMBER 0x1024 +#define WPS_ATTR_SERIAL_NUMBER 0x1042 +#define WPS_ATTR_PRIMARY_DEV_TYPE 0x1054 +#define WPS_ATTR_SEC_DEV_TYPE_LIST 0x1055 +#define WPS_ATTR_DEVICE_NAME 0x1011 +#define WPS_ATTR_CONF_METHOD 0x1008 +#define WPS_ATTR_RF_BANDS 0x103C +#define WPS_ATTR_DEVICE_PWID 0x1012 +#define WPS_ATTR_REQUEST_TYPE 0x103A +#define WPS_ATTR_ASSOCIATION_STATE 0x1002 +#define WPS_ATTR_CONFIG_ERROR 0x1009 +#define WPS_ATTR_VENDOR_EXT 0x1049 +#define WPS_ATTR_SELECTED_REGISTRAR 0x1041 + +// Value of WPS attribute "WPS_ATTR_DEVICE_NAME +#define WPS_MAX_DEVICE_NAME_LEN 32 + +// Value of WPS Request Type Attribute +#define WPS_REQ_TYPE_ENROLLEE_INFO_ONLY 0x00 +#define WPS_REQ_TYPE_ENROLLEE_OPEN_8021X 0x01 +#define WPS_REQ_TYPE_REGISTRAR 0x02 +#define WPS_REQ_TYPE_WLAN_MANAGER_REGISTRAR 0x03 + +// Value of WPS Response Type Attribute +#define WPS_RESPONSE_TYPE_INFO_ONLY 0x00 +#define WPS_RESPONSE_TYPE_8021X 0x01 +#define WPS_RESPONSE_TYPE_REGISTRAR 0x02 +#define WPS_RESPONSE_TYPE_AP 0x03 + +// Value of WPS WiFi Simple Configuration State Attribute +#define WPS_WSC_STATE_NOT_CONFIG 0x01 +#define WPS_WSC_STATE_CONFIG 0x02 + +// Value of WPS Version Attribute +#define WPS_VERSION_1 0x10 + +// Value of WPS Configuration Method Attribute +#define WPS_CONFIG_METHOD_FLASH 0x0001 +#define WPS_CONFIG_METHOD_ETHERNET 0x0002 +#define WPS_CONFIG_METHOD_LABEL 0x0004 +#define WPS_CONFIG_METHOD_DISPLAY 0x0008 +#define WPS_CONFIG_METHOD_E_NFC 0x0010 +#define WPS_CONFIG_METHOD_I_NFC 0x0020 +#define WPS_CONFIG_METHOD_NFC 0x0040 +#define WPS_CONFIG_METHOD_PBC 0x0080 +#define WPS_CONFIG_METHOD_KEYPAD 0x0100 +#define WPS_CONFIG_METHOD_VPBC 0x0280 +#define WPS_CONFIG_METHOD_PPBC 0x0480 +#define WPS_CONFIG_METHOD_VDISPLAY 0x2008 +#define WPS_CONFIG_METHOD_PDISPLAY 0x4008 + +// Value of Category ID of WPS Primary Device Type Attribute +#define WPS_PDT_CID_DISPLAYS 0x0007 +#define WPS_PDT_CID_MULIT_MEDIA 0x0008 +#define WPS_PDT_CID_RTK_WIDI WPS_PDT_CID_MULIT_MEDIA + +// Value of Sub Category ID of WPS Primary Device Type Attribute +#define WPS_PDT_SCID_MEDIA_SERVER 0x0005 +#define WPS_PDT_SCID_RTK_DMP WPS_PDT_SCID_MEDIA_SERVER + +// Value of Device Password ID +#define WPS_DPID_PIN 0x0000 +#define WPS_DPID_USER_SPEC 0x0001 +#define WPS_DPID_MACHINE_SPEC 0x0002 +#define WPS_DPID_REKEY 0x0003 +#define WPS_DPID_PBC 0x0004 +#define WPS_DPID_REGISTRAR_SPEC 0x0005 + +// Value of WPS RF Bands Attribute +#define WPS_RF_BANDS_2_4_GHZ 0x01 +#define WPS_RF_BANDS_5_GHZ 0x02 + +// Value of WPS Association State Attribute +#define WPS_ASSOC_STATE_NOT_ASSOCIATED 0x00 +#define WPS_ASSOC_STATE_CONNECTION_SUCCESS 0x01 +#define WPS_ASSOC_STATE_CONFIGURATION_FAILURE 0x02 +#define WPS_ASSOC_STATE_ASSOCIATION_FAILURE 0x03 +#define WPS_ASSOC_STATE_IP_FAILURE 0x04 + +// =====================P2P Section===================== +// For P2P +#define P2POUI 0x506F9A09 + +// P2P Attribute ID +#define P2P_ATTR_STATUS 0x00 +#define P2P_ATTR_MINOR_REASON_CODE 0x01 +#define P2P_ATTR_CAPABILITY 0x02 +#define P2P_ATTR_DEVICE_ID 0x03 +#define P2P_ATTR_GO_INTENT 0x04 +#define P2P_ATTR_CONF_TIMEOUT 0x05 +#define P2P_ATTR_LISTEN_CH 0x06 +#define P2P_ATTR_GROUP_BSSID 0x07 +#define P2P_ATTR_EX_LISTEN_TIMING 0x08 +#define P2P_ATTR_INTENTED_IF_ADDR 0x09 +#define P2P_ATTR_MANAGEABILITY 0x0A +#define P2P_ATTR_CH_LIST 0x0B +#define P2P_ATTR_NOA 0x0C +#define P2P_ATTR_DEVICE_INFO 0x0D +#define P2P_ATTR_GROUP_INFO 0x0E +#define P2P_ATTR_GROUP_ID 0x0F +#define P2P_ATTR_INTERFACE 0x10 +#define P2P_ATTR_OPERATING_CH 0x11 +#define P2P_ATTR_INVITATION_FLAGS 0x12 + +// Value of Status Attribute +#define P2P_STATUS_SUCCESS 0x00 +#define P2P_STATUS_FAIL_INFO_UNAVAILABLE 0x01 +#define P2P_STATUS_FAIL_INCOMPATIBLE_PARAM 0x02 +#define P2P_STATUS_FAIL_LIMIT_REACHED 0x03 +#define P2P_STATUS_FAIL_INVALID_PARAM 0x04 +#define P2P_STATUS_FAIL_REQUEST_UNABLE 0x05 +#define P2P_STATUS_FAIL_PREVOUS_PROTO_ERR 0x06 +#define P2P_STATUS_FAIL_NO_COMMON_CH 0x07 +#define P2P_STATUS_FAIL_UNKNOWN_P2PGROUP 0x08 +#define P2P_STATUS_FAIL_BOTH_GOINTENT_15 0x09 +#define P2P_STATUS_FAIL_INCOMPATIBLE_PROVSION 0x0A +#define P2P_STATUS_FAIL_USER_REJECT 0x0B + +// Value of Inviation Flags Attribute +#define P2P_INVITATION_FLAGS_PERSISTENT BIT(0) + +#define DMP_P2P_DEVCAP_SUPPORT (P2P_DEVCAP_SERVICE_DISCOVERY | \ + P2P_DEVCAP_CLIENT_DISCOVERABILITY | \ + P2P_DEVCAP_CONCURRENT_OPERATION | \ + P2P_DEVCAP_INVITATION_PROC) + +#define DMP_P2P_GRPCAP_SUPPORT (P2P_GRPCAP_INTRABSS) + +// Value of Device Capability Bitmap +#define P2P_DEVCAP_SERVICE_DISCOVERY BIT(0) +#define P2P_DEVCAP_CLIENT_DISCOVERABILITY BIT(1) +#define P2P_DEVCAP_CONCURRENT_OPERATION BIT(2) +#define P2P_DEVCAP_INFRA_MANAGED BIT(3) +#define P2P_DEVCAP_DEVICE_LIMIT BIT(4) +#define P2P_DEVCAP_INVITATION_PROC BIT(5) + +// Value of Group Capability Bitmap +#define P2P_GRPCAP_GO BIT(0) +#define P2P_GRPCAP_PERSISTENT_GROUP BIT(1) +#define P2P_GRPCAP_GROUP_LIMIT BIT(2) +#define P2P_GRPCAP_INTRABSS BIT(3) +#define P2P_GRPCAP_CROSS_CONN BIT(4) +#define P2P_GRPCAP_PERSISTENT_RECONN BIT(5) +#define P2P_GRPCAP_GROUP_FORMATION BIT(6) + +// P2P Public Action Frame ( Management Frame ) +#define P2P_PUB_ACTION_ACTION 0x09 + +// P2P Public Action Frame Type +#define P2P_GO_NEGO_REQ 0 +#define P2P_GO_NEGO_RESP 1 +#define P2P_GO_NEGO_CONF 2 +#define P2P_INVIT_REQ 3 +#define P2P_INVIT_RESP 4 +#define P2P_DEVDISC_REQ 5 +#define P2P_DEVDISC_RESP 6 +#define P2P_PROVISION_DISC_REQ 7 +#define P2P_PROVISION_DISC_RESP 8 + +// P2P Action Frame Type +#define P2P_NOTICE_OF_ABSENCE 0 +#define P2P_PRESENCE_REQUEST 1 +#define P2P_PRESENCE_RESPONSE 2 +#define P2P_GO_DISC_REQUEST 3 + + +#define P2P_MAX_PERSISTENT_GROUP_NUM 10 + +#define P2P_PROVISIONING_SCAN_CNT 3 + +#define P2P_WILDCARD_SSID_LEN 7 + +#define P2P_FINDPHASE_EX_NONE 0 // default value, used when: (1)p2p disabed or (2)p2p enabled but only do 1 scan phase +#define P2P_FINDPHASE_EX_FULL 1 // used when p2p enabled and want to do 1 scan phase and P2P_FINDPHASE_EX_MAX-1 find phase +#define P2P_FINDPHASE_EX_SOCIAL_FIRST (P2P_FINDPHASE_EX_FULL+1) +#define P2P_FINDPHASE_EX_MAX 4 +#define P2P_FINDPHASE_EX_SOCIAL_LAST P2P_FINDPHASE_EX_MAX + +#define P2P_PROVISION_TIMEOUT 5000 // 5 seconds timeout for sending the provision discovery request +#define P2P_CONCURRENT_PROVISION_TIMEOUT 3000 // 3 seconds timeout for sending the provision discovery request under concurrent mode +#define P2P_GO_NEGO_TIMEOUT 5000 // 5 seconds timeout for receiving the group negotation response +#define P2P_CONCURRENT_GO_NEGO_TIMEOUT 3000 // 3 seconds timeout for sending the negotiation request under concurrent mode +#define P2P_TX_PRESCAN_TIMEOUT 100 // 100ms +#define P2P_INVITE_TIMEOUT 5000 // 5 seconds timeout for sending the invitation request +#define P2P_CONCURRENT_INVITE_TIMEOUT 3000 // 3 seconds timeout for sending the invitation request under concurrent mode +#define P2P_RESET_SCAN_CH 15000 // 15 seconds timeout to reset the scan channel ( based on channel plan ) +#define P2P_MAX_INTENT 15 + +#define P2P_MAX_NOA_NUM 2 + +// WPS Configuration Method +#define WPS_CM_NONE 0x0000 +#define WPS_CM_LABEL 0x0004 +#define WPS_CM_DISPLYA 0x0008 +#define WPS_CM_EXTERNAL_NFC_TOKEN 0x0010 +#define WPS_CM_INTEGRATED_NFC_TOKEN 0x0020 +#define WPS_CM_NFC_INTERFACE 0x0040 +#define WPS_CM_PUSH_BUTTON 0x0080 +#define WPS_CM_KEYPAD 0x0100 +#define WPS_CM_SW_PUHS_BUTTON 0x0280 +#define WPS_CM_HW_PUHS_BUTTON 0x0480 +#define WPS_CM_SW_DISPLAY_PIN 0x2008 +#define WPS_CM_LCD_DISPLAY_PIN 0x4008 + +enum P2P_ROLE { + P2P_ROLE_DISABLE = 0, + P2P_ROLE_DEVICE = 1, + P2P_ROLE_CLIENT = 2, + P2P_ROLE_GO = 3 +}; + +enum P2P_STATE { + P2P_STATE_NONE = 0, // P2P disable + P2P_STATE_IDLE = 1, // P2P had enabled and do nothing + P2P_STATE_LISTEN = 2, // In pure listen state + P2P_STATE_SCAN = 3, // In scan phase + P2P_STATE_FIND_PHASE_LISTEN = 4, // In the listen state of find phase + P2P_STATE_FIND_PHASE_SEARCH = 5, // In the search state of find phase + P2P_STATE_TX_PROVISION_DIS_REQ = 6, // In P2P provisioning discovery + P2P_STATE_RX_PROVISION_DIS_RSP = 7, + P2P_STATE_RX_PROVISION_DIS_REQ = 8, + P2P_STATE_GONEGO_ING = 9, // Doing the group owner negoitation handshake + P2P_STATE_GONEGO_OK = 10, // finish the group negoitation handshake with success + P2P_STATE_GONEGO_FAIL = 11, // finish the group negoitation handshake with failure + P2P_STATE_RECV_INVITE_REQ_MATCH = 12, // receiving the P2P Inviation request and match with the profile. + P2P_STATE_PROVISIONING_ING = 13, // Doing the P2P WPS + P2P_STATE_PROVISIONING_DONE = 14, // Finish the P2P WPS + P2P_STATE_TX_INVITE_REQ = 15, // Transmit the P2P Invitation request + P2P_STATE_RX_INVITE_RESP_OK = 16, // Receiving the P2P Invitation response with sucess + P2P_STATE_RECV_INVITE_REQ_DISMATCH = 17, // receiving the P2P Inviation request and dismatch with the profile. + P2P_STATE_RECV_INVITE_REQ_GO = 18, // receiving the P2P Inviation request and this wifi is GO. + P2P_STATE_RECV_INVITE_REQ_JOIN = 19, // receiving the P2P Inviation request to join an existing P2P Group. + P2P_STATE_RX_INVITE_RESP_FAIL = 20, // recveing the P2P Inviation response with failure + P2P_STATE_RX_INFOR_NOREADY = 21, // receiving p2p negoitation response with information is not available + P2P_STATE_TX_INFOR_NOREADY = 22, // sending p2p negoitation response with information is not available +}; + +enum P2P_WPSINFO { + P2P_NO_WPSINFO = 0, + P2P_GOT_WPSINFO_PEER_DISPLAY_PIN = 1, + P2P_GOT_WPSINFO_SELF_DISPLAY_PIN = 2, + P2P_GOT_WPSINFO_PBC = 3, +}; + +#define P2P_PRIVATE_IOCTL_SET_LEN 64 + +enum P2P_PROTO_WK_ID +{ + P2P_FIND_PHASE_WK = 0, + P2P_RESTORE_STATE_WK = 1, + P2P_PRE_TX_PROVDISC_PROCESS_WK = 2, + P2P_PRE_TX_NEGOREQ_PROCESS_WK = 3, + P2P_PRE_TX_INVITEREQ_PROCESS_WK = 4, + P2P_AP_P2P_CH_SWITCH_PROCESS_WK =5, + P2P_RO_CH_WK = 6, +}; + +#ifdef CONFIG_P2P_PS +enum P2P_PS_STATE +{ + P2P_PS_DISABLE = 0, + P2P_PS_ENABLE = 1, + P2P_PS_SCAN = 2, + P2P_PS_SCAN_DONE = 3, + P2P_PS_ALLSTASLEEP = 4, // for P2P GO +}; + +enum P2P_PS_MODE +{ + P2P_PS_NONE = 0, + P2P_PS_CTWINDOW = 1, + P2P_PS_NOA = 2, + P2P_PS_MIX = 3, // CTWindow and NoA +}; +#endif // CONFIG_P2P_PS + +// =====================WFD Section===================== +// For Wi-Fi Display +#define WFD_ATTR_DEVICE_INFO 0x00 +#define WFD_ATTR_ASSOC_BSSID 0x01 +#define WFD_ATTR_COUPLED_SINK_INFO 0x06 +#define WFD_ATTR_LOCAL_IP_ADDR 0x08 +#define WFD_ATTR_SESSION_INFO 0x09 +#define WFD_ATTR_ALTER_MAC 0x0a + +// For WFD Device Information Attribute +#define WFD_DEVINFO_SOURCE 0x0000 +#define WFD_DEVINFO_PSINK 0x0001 +#define WFD_DEVINFO_SSINK 0x0002 +#define WFD_DEVINFO_DUAL 0x0003 + +#define WFD_DEVINFO_SESSION_AVAIL 0x0010 +#define WFD_DEVINFO_WSD 0x0040 +#define WFD_DEVINFO_PC_TDLS 0x0080 +#define WFD_DEVINFO_HDCP_SUPPORT 0x0100 + + +#ifdef CONFIG_TX_MCAST2UNI +#define IP_MCAST_MAC(mac) ((mac[0]==0x01)&&(mac[1]==0x00)&&(mac[2]==0x5e)) +#define ICMPV6_MCAST_MAC(mac) ((mac[0]==0x33)&&(mac[1]==0x33)&&(mac[2]!=0xff)) +#endif // CONFIG_TX_MCAST2UNI + + + +#endif // _WIFI_H_ --- linux-raspi2-4.2.0.orig/drivers/net/wireless/rtl8192cu/include/wlan_bssdef.h +++ linux-raspi2-4.2.0/drivers/net/wireless/rtl8192cu/include/wlan_bssdef.h @@ -0,0 +1,702 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved. + * + * 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 + * published by the Free Software Foundation. + * + * 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 Street, Fifth Floor, Boston, MA 02110, USA + * + * + ******************************************************************************/ +#ifndef __WLAN_BSSDEF_H__ +#define __WLAN_BSSDEF_H__ + + +#define MAX_IE_SZ 768 + + +#ifdef PLATFORM_LINUX + +#define NDIS_802_11_LENGTH_SSID 32 +#define NDIS_802_11_LENGTH_RATES 8 +#define NDIS_802_11_LENGTH_RATES_EX 16 + +typedef unsigned char NDIS_802_11_MAC_ADDRESS[6]; +typedef long NDIS_802_11_RSSI; // in dBm +typedef unsigned char NDIS_802_11_RATES[NDIS_802_11_LENGTH_RATES]; // Set of 8 data rates +typedef unsigned char NDIS_802_11_RATES_EX[NDIS_802_11_LENGTH_RATES_EX]; // Set of 16 data rates + + +typedef ULONG NDIS_802_11_KEY_INDEX; +typedef unsigned long long NDIS_802_11_KEY_RSC; + + +typedef struct _NDIS_802_11_SSID +{ + ULONG SsidLength; + UCHAR Ssid[32]; +} NDIS_802_11_SSID, *PNDIS_802_11_SSID; + +typedef enum _NDIS_802_11_NETWORK_TYPE +{ + Ndis802_11FH, + Ndis802_11DS, + Ndis802_11OFDM5, + Ndis802_11OFDM24, + Ndis802_11NetworkTypeMax // not a real type, defined as an upper bound +} NDIS_802_11_NETWORK_TYPE, *PNDIS_802_11_NETWORK_TYPE; + +typedef struct _NDIS_802_11_CONFIGURATION_FH +{ + ULONG Length; // Length of structure + ULONG HopPattern; // As defined by 802.11, MSB set + ULONG HopSet; // to one if non-802.11 + ULONG DwellTime; // units are Kusec +} NDIS_802_11_CONFIGURATION_FH, *PNDIS_802_11_CONFIGURATION_FH; + + +/* + FW will only save the channel number in DSConfig. + ODI Handler will convert the channel number to freq. number. +*/ +typedef struct _NDIS_802_11_CONFIGURATION +{ + ULONG Length; // Length of structure + ULONG BeaconPeriod; // units are Kusec + ULONG ATIMWindow; // units are Kusec + ULONG DSConfig; // Frequency, units are kHz + NDIS_802_11_CONFIGURATION_FH FHConfig; +} NDIS_802_11_CONFIGURATION, *PNDIS_802_11_CONFIGURATION; + + + +typedef enum _NDIS_802_11_NETWORK_INFRASTRUCTURE +{ + Ndis802_11IBSS, + Ndis802_11Infrastructure, + Ndis802_11AutoUnknown, + Ndis802_11InfrastructureMax, // Not a real value, defined as upper bound + Ndis802_11APMode +} NDIS_802_11_NETWORK_INFRASTRUCTURE, *PNDIS_802_11_NETWORK_INFRASTRUCTURE; + + + + + +typedef struct _NDIS_802_11_FIXED_IEs +{ + UCHAR Timestamp[8]; + USHORT BeaconInterval; + USHORT Capabilities; +} NDIS_802_11_FIXED_IEs, *PNDIS_802_11_FIXED_IEs; + + + +typedef struct _NDIS_802_11_VARIABLE_IEs +{ + UCHAR ElementID; + UCHAR Length; + UCHAR data[1]; +} NDIS_802_11_VARIABLE_IEs, *PNDIS_802_11_VARIABLE_IEs; + + + +/* + + + +Length is the 4 bytes multiples of the sume of + sizeof (NDIS_802_11_MAC_ADDRESS) + 2 + sizeof (NDIS_802_11_SSID) + sizeof (ULONG) ++ sizeof (NDIS_802_11_RSSI) + sizeof (NDIS_802_11_NETWORK_TYPE) + sizeof (NDIS_802_11_CONFIGURATION) ++ sizeof (NDIS_802_11_RATES_EX) + IELength + +Except the IELength, all other fields are fixed length. Therefore, we can define a marco to present the +partial sum. + +*/ +#if 0 +typedef struct _NDIS_WLAN_BSSID_EX +{ + ULONG Length; + NDIS_802_11_MAC_ADDRESS MacAddress; + UCHAR Reserved[2];//[0]: IS beacon frame, [1]:optimum_antenna=>For antenna diversity; + NDIS_802_11_SSID Ssid; + ULONG Privacy; + NDIS_802_11_RSSI Rssi; + NDIS_802_11_NETWORK_TYPE NetworkTypeInUse; + NDIS_802_11_CONFIGURATION Configuration; + NDIS_802_11_NETWORK_INFRASTRUCTURE InfrastructureMode; + NDIS_802_11_RATES_EX SupportedRates; + ULONG IELength; + UCHAR IEs[MAX_IE_SZ]; //(timestamp, beacon interval, and capability information) +} NDIS_WLAN_BSSID_EX, *PNDIS_WLAN_BSSID_EX; + + +typedef struct _NDIS_802_11_BSSID_LIST_EX +{ + ULONG NumberOfItems; + NDIS_WLAN_BSSID_EX Bssid[1]; +} NDIS_802_11_BSSID_LIST_EX, *PNDIS_802_11_BSSID_LIST_EX; +#endif + +typedef enum _NDIS_802_11_AUTHENTICATION_MODE +{ + Ndis802_11AuthModeOpen, + Ndis802_11AuthModeShared, + Ndis802_11AuthModeAutoSwitch, + Ndis802_11AuthModeWPA, + Ndis802_11AuthModeWPAPSK, + Ndis802_11AuthModeWPANone, + Ndis802_11AuthModeMax // Not a real mode, defined as upper bound +} NDIS_802_11_AUTHENTICATION_MODE, *PNDIS_802_11_AUTHENTICATION_MODE; + +typedef enum _NDIS_802_11_WEP_STATUS +{ + Ndis802_11WEPEnabled, + Ndis802_11Encryption1Enabled = Ndis802_11WEPEnabled, + Ndis802_11WEPDisabled, + Ndis802_11EncryptionDisabled = Ndis802_11WEPDisabled, + Ndis802_11WEPKeyAbsent, + Ndis802_11Encryption1KeyAbsent = Ndis802_11WEPKeyAbsent, + Ndis802_11WEPNotSupported, + Ndis802_11EncryptionNotSupported = Ndis802_11WEPNotSupported, + Ndis802_11Encryption2Enabled, + Ndis802_11Encryption2KeyAbsent, + Ndis802_11Encryption3Enabled, + Ndis802_11Encryption3KeyAbsent +} NDIS_802_11_WEP_STATUS, *PNDIS_802_11_WEP_STATUS, + NDIS_802_11_ENCRYPTION_STATUS, *PNDIS_802_11_ENCRYPTION_STATUS; + + +#define NDIS_802_11_AI_REQFI_CAPABILITIES 1 +#define NDIS_802_11_AI_REQFI_LISTENINTERVAL 2 +#define NDIS_802_11_AI_REQFI_CURRENTAPADDRESS 4 + +#define NDIS_802_11_AI_RESFI_CAPABILITIES 1 +#define NDIS_802_11_AI_RESFI_STATUSCODE 2 +#define NDIS_802_11_AI_RESFI_ASSOCIATIONID 4 + +typedef struct _NDIS_802_11_AI_REQFI +{ + USHORT Capabilities; + USHORT ListenInterval; + NDIS_802_11_MAC_ADDRESS CurrentAPAddress; +} NDIS_802_11_AI_REQFI, *PNDIS_802_11_AI_REQFI; + +typedef struct _NDIS_802_11_AI_RESFI +{ + USHORT Capabilities; + USHORT StatusCode; + USHORT AssociationId; +} NDIS_802_11_AI_RESFI, *PNDIS_802_11_AI_RESFI; + +typedef struct _NDIS_802_11_ASSOCIATION_INFORMATION +{ + ULONG Length; + USHORT AvailableRequestFixedIEs; + NDIS_802_11_AI_REQFI RequestFixedIEs; + ULONG RequestIELength; + ULONG OffsetRequestIEs; + USHORT AvailableResponseFixedIEs; + NDIS_802_11_AI_RESFI ResponseFixedIEs; + ULONG ResponseIELength; + ULONG OffsetResponseIEs; +} NDIS_802_11_ASSOCIATION_INFORMATION, *PNDIS_802_11_ASSOCIATION_INFORMATION; + +typedef enum _NDIS_802_11_RELOAD_DEFAULTS +{ + Ndis802_11ReloadWEPKeys +} NDIS_802_11_RELOAD_DEFAULTS, *PNDIS_802_11_RELOAD_DEFAULTS; + + +// Key mapping keys require a BSSID +typedef struct _NDIS_802_11_KEY +{ + ULONG Length; // Length of this structure + ULONG KeyIndex; + ULONG KeyLength; // length of key in bytes + NDIS_802_11_MAC_ADDRESS BSSID; + NDIS_802_11_KEY_RSC KeyRSC; + UCHAR KeyMaterial[32]; // variable length depending on above field +} NDIS_802_11_KEY, *PNDIS_802_11_KEY; + +typedef struct _NDIS_802_11_REMOVE_KEY +{ + ULONG Length; // Length of this structure + ULONG KeyIndex; + NDIS_802_11_MAC_ADDRESS BSSID; +} NDIS_802_11_REMOVE_KEY, *PNDIS_802_11_REMOVE_KEY; + +typedef struct _NDIS_802_11_WEP +{ + ULONG Length; // Length of this structure + ULONG KeyIndex; // 0 is the per-client key, 1-N are the global keys + ULONG KeyLength; // length of key in bytes + UCHAR KeyMaterial[16];// variable length depending on above field +} NDIS_802_11_WEP, *PNDIS_802_11_WEP; + +typedef struct _NDIS_802_11_AUTHENTICATION_REQUEST +{ + ULONG Length; // Length of structure + NDIS_802_11_MAC_ADDRESS Bssid; + ULONG Flags; +} NDIS_802_11_AUTHENTICATION_REQUEST, *PNDIS_802_11_AUTHENTICATION_REQUEST; + +typedef enum _NDIS_802_11_STATUS_TYPE +{ + Ndis802_11StatusType_Authentication, + Ndis802_11StatusType_MediaStreamMode, + Ndis802_11StatusType_PMKID_CandidateList, + Ndis802_11StatusTypeMax // not a real type, defined as an upper bound +} NDIS_802_11_STATUS_TYPE, *PNDIS_802_11_STATUS_TYPE; + +typedef struct _NDIS_802_11_STATUS_INDICATION +{ + NDIS_802_11_STATUS_TYPE StatusType; +} NDIS_802_11_STATUS_INDICATION, *PNDIS_802_11_STATUS_INDICATION; + +// mask for authentication/integrity fields +#define NDIS_802_11_AUTH_REQUEST_AUTH_FIELDS 0x0f +#define NDIS_802_11_AUTH_REQUEST_REAUTH 0x01 +#define NDIS_802_11_AUTH_REQUEST_KEYUPDATE 0x02 +#define NDIS_802_11_AUTH_REQUEST_PAIRWISE_ERROR 0x06 +#define NDIS_802_11_AUTH_REQUEST_GROUP_ERROR 0x0E + +// MIC check time, 60 seconds. +#define MIC_CHECK_TIME 60000000 + +typedef struct _NDIS_802_11_AUTHENTICATION_EVENT +{ + NDIS_802_11_STATUS_INDICATION Status; + NDIS_802_11_AUTHENTICATION_REQUEST Request[1]; +} NDIS_802_11_AUTHENTICATION_EVENT, *PNDIS_802_11_AUTHENTICATION_EVENT; + +typedef struct _NDIS_802_11_TEST +{ + ULONG Length; + ULONG Type; + union + { + NDIS_802_11_AUTHENTICATION_EVENT AuthenticationEvent; + NDIS_802_11_RSSI RssiTrigger; + }tt; +} NDIS_802_11_TEST, *PNDIS_802_11_TEST; + + +#endif //end of #ifdef PLATFORM_LINUX + +#ifdef PLATFORM_FREEBSD + +#define NDIS_802_11_LENGTH_SSID 32 +#define NDIS_802_11_LENGTH_RATES 8 +#define NDIS_802_11_LENGTH_RATES_EX 16 + +typedef unsigned char NDIS_802_11_MAC_ADDRESS[6]; +typedef long NDIS_802_11_RSSI; // in dBm +typedef unsigned char NDIS_802_11_RATES[NDIS_802_11_LENGTH_RATES]; // Set of 8 data rates +typedef unsigned char NDIS_802_11_RATES_EX[NDIS_802_11_LENGTH_RATES_EX]; // Set of 16 data rates + + +typedef ULONG NDIS_802_11_KEY_INDEX; +typedef unsigned long long NDIS_802_11_KEY_RSC; + + +typedef struct _NDIS_802_11_SSID +{ + ULONG SsidLength; + UCHAR Ssid[32]; +} NDIS_802_11_SSID, *PNDIS_802_11_SSID; + +typedef enum _NDIS_802_11_NETWORK_TYPE +{ + Ndis802_11FH, + Ndis802_11DS, + Ndis802_11OFDM5, + Ndis802_11OFDM24, + Ndis802_11NetworkTypeMax // not a real type, defined as an upper bound +} NDIS_802_11_NETWORK_TYPE, *PNDIS_802_11_NETWORK_TYPE; + +typedef struct _NDIS_802_11_CONFIGURATION_FH +{ + ULONG Length; // Length of structure + ULONG HopPattern; // As defined by 802.11, MSB set + ULONG HopSet; // to one if non-802.11 + ULONG DwellTime; // units are Kusec +} NDIS_802_11_CONFIGURATION_FH, *PNDIS_802_11_CONFIGURATION_FH; + + +/* + FW will only save the channel number in DSConfig. + ODI Handler will convert the channel number to freq. number. +*/ +typedef struct _NDIS_802_11_CONFIGURATION +{ + ULONG Length; // Length of structure + ULONG BeaconPeriod; // units are Kusec + ULONG ATIMWindow; // units are Kusec + ULONG DSConfig; // Frequency, units are kHz + NDIS_802_11_CONFIGURATION_FH FHConfig; +} NDIS_802_11_CONFIGURATION, *PNDIS_802_11_CONFIGURATION; + + + +typedef enum _NDIS_802_11_NETWORK_INFRASTRUCTURE +{ + Ndis802_11IBSS, + Ndis802_11Infrastructure, + Ndis802_11AutoUnknown, + Ndis802_11InfrastructureMax, // Not a real value, defined as upper bound + Ndis802_11APMode +} NDIS_802_11_NETWORK_INFRASTRUCTURE, *PNDIS_802_11_NETWORK_INFRASTRUCTURE; + + + + + +typedef struct _NDIS_802_11_FIXED_IEs +{ + UCHAR Timestamp[8]; + USHORT BeaconInterval; + USHORT Capabilities; +} NDIS_802_11_FIXED_IEs, *PNDIS_802_11_FIXED_IEs; + + + +typedef struct _NDIS_802_11_VARIABLE_IEs +{ + UCHAR ElementID; + UCHAR Length; + UCHAR data[1]; +} NDIS_802_11_VARIABLE_IEs, *PNDIS_802_11_VARIABLE_IEs; + + + +/* + + + +Length is the 4 bytes multiples of the sume of + sizeof (NDIS_802_11_MAC_ADDRESS) + 2 + sizeof (NDIS_802_11_SSID) + sizeof (ULONG) ++ sizeof (NDIS_802_11_RSSI) + sizeof (NDIS_802_11_NETWORK_TYPE) + sizeof (NDIS_802_11_CONFIGURATION) ++ sizeof (NDIS_802_11_RATES_EX) + IELength + +Except the IELength, all other fields are fixed length. Therefore, we can define a marco to present the +partial sum. + +*/ +#if 0 +typedef struct _NDIS_WLAN_BSSID_EX +{ + ULONG Length; + NDIS_802_11_MAC_ADDRESS MacAddress; + UCHAR Reserved[2];//[0]: IS beacon frame, [1]:optimum_antenna=>For antenna diversity; + NDIS_802_11_SSID Ssid; + ULONG Privacy; + NDIS_802_11_RSSI Rssi; + NDIS_802_11_NETWORK_TYPE NetworkTypeInUse; + NDIS_802_11_CONFIGURATION Configuration; + NDIS_802_11_NETWORK_INFRASTRUCTURE InfrastructureMode; + NDIS_802_11_RATES_EX SupportedRates; + ULONG IELength; + UCHAR IEs[MAX_IE_SZ]; //(timestamp, beacon interval, and capability information) +} NDIS_WLAN_BSSID_EX, *PNDIS_WLAN_BSSID_EX; + + +typedef struct _NDIS_802_11_BSSID_LIST_EX +{ + ULONG NumberOfItems; + NDIS_WLAN_BSSID_EX Bssid[1]; +} NDIS_802_11_BSSID_LIST_EX, *PNDIS_802_11_BSSID_LIST_EX; +#endif + +typedef enum _NDIS_802_11_AUTHENTICATION_MODE +{ + Ndis802_11AuthModeOpen, + Ndis802_11AuthModeShared, + Ndis802_11AuthModeAutoSwitch, + Ndis802_11AuthModeWPA, + Ndis802_11AuthModeWPAPSK, + Ndis802_11AuthModeWPANone, + Ndis802_11AuthModeMax // Not a real mode, defined as upper bound +} NDIS_802_11_AUTHENTICATION_MODE, *PNDIS_802_11_AUTHENTICATION_MODE; + +typedef enum _NDIS_802_11_WEP_STATUS +{ + Ndis802_11WEPEnabled, + Ndis802_11Encryption1Enabled = Ndis802_11WEPEnabled, + Ndis802_11WEPDisabled, + Ndis802_11EncryptionDisabled = Ndis802_11WEPDisabled, + Ndis802_11WEPKeyAbsent, + Ndis802_11Encryption1KeyAbsent = Ndis802_11WEPKeyAbsent, + Ndis802_11WEPNotSupported, + Ndis802_11EncryptionNotSupported = Ndis802_11WEPNotSupported, + Ndis802_11Encryption2Enabled, + Ndis802_11Encryption2KeyAbsent, + Ndis802_11Encryption3Enabled, + Ndis802_11Encryption3KeyAbsent +} NDIS_802_11_WEP_STATUS, *PNDIS_802_11_WEP_STATUS, + NDIS_802_11_ENCRYPTION_STATUS, *PNDIS_802_11_ENCRYPTION_STATUS; + + +#define NDIS_802_11_AI_REQFI_CAPABILITIES 1 +#define NDIS_802_11_AI_REQFI_LISTENINTERVAL 2 +#define NDIS_802_11_AI_REQFI_CURRENTAPADDRESS 4 + +#define NDIS_802_11_AI_RESFI_CAPABILITIES 1 +#define NDIS_802_11_AI_RESFI_STATUSCODE 2 +#define NDIS_802_11_AI_RESFI_ASSOCIATIONID 4 + +typedef struct _NDIS_802_11_AI_REQFI +{ + USHORT Capabilities; + USHORT ListenInterval; + NDIS_802_11_MAC_ADDRESS CurrentAPAddress; +} NDIS_802_11_AI_REQFI, *PNDIS_802_11_AI_REQFI; + +typedef struct _NDIS_802_11_AI_RESFI +{ + USHORT Capabilities; + USHORT StatusCode; + USHORT AssociationId; +} NDIS_802_11_AI_RESFI, *PNDIS_802_11_AI_RESFI; + +typedef struct _NDIS_802_11_ASSOCIATION_INFORMATION +{ + ULONG Length; + USHORT AvailableRequestFixedIEs; + NDIS_802_11_AI_REQFI RequestFixedIEs; + ULONG RequestIELength; + ULONG OffsetRequestIEs; + USHORT AvailableResponseFixedIEs; + NDIS_802_11_AI_RESFI ResponseFixedIEs; + ULONG ResponseIELength; + ULONG OffsetResponseIEs; +} NDIS_802_11_ASSOCIATION_INFORMATION, *PNDIS_802_11_ASSOCIATION_INFORMATION; + +typedef enum _NDIS_802_11_RELOAD_DEFAULTS +{ + Ndis802_11ReloadWEPKeys +} NDIS_802_11_RELOAD_DEFAULTS, *PNDIS_802_11_RELOAD_DEFAULTS; + + +// Key mapping keys require a BSSID +typedef struct _NDIS_802_11_KEY +{ + ULONG Length; // Length of this structure + ULONG KeyIndex; + ULONG KeyLength; // length of key in bytes + NDIS_802_11_MAC_ADDRESS BSSID; + NDIS_802_11_KEY_RSC KeyRSC; + UCHAR KeyMaterial[32]; // variable length depending on above field +} NDIS_802_11_KEY, *PNDIS_802_11_KEY; + +typedef struct _NDIS_802_11_REMOVE_KEY +{ + ULONG Length; // Length of this structure + ULONG KeyIndex; + NDIS_802_11_MAC_ADDRESS BSSID; +} NDIS_802_11_REMOVE_KEY, *PNDIS_802_11_REMOVE_KEY; + +typedef struct _NDIS_802_11_WEP +{ + ULONG Length; // Length of this structure + ULONG KeyIndex; // 0 is the per-client key, 1-N are the global keys + ULONG KeyLength; // length of key in bytes + UCHAR KeyMaterial[16];// variable length depending on above field +} NDIS_802_11_WEP, *PNDIS_802_11_WEP; + +typedef struct _NDIS_802_11_AUTHENTICATION_REQUEST +{ + ULONG Length; // Length of structure + NDIS_802_11_MAC_ADDRESS Bssid; + ULONG Flags; +} NDIS_802_11_AUTHENTICATION_REQUEST, *PNDIS_802_11_AUTHENTICATION_REQUEST; + +typedef enum _NDIS_802_11_STATUS_TYPE +{ + Ndis802_11StatusType_Authentication, + Ndis802_11StatusType_MediaStreamMode, + Ndis802_11StatusType_PMKID_CandidateList, + Ndis802_11StatusTypeMax // not a real type, defined as an upper bound +} NDIS_802_11_STATUS_TYPE, *PNDIS_802_11_STATUS_TYPE; + +typedef struct _NDIS_802_11_STATUS_INDICATION +{ + NDIS_802_11_STATUS_TYPE StatusType; +} NDIS_802_11_STATUS_INDICATION, *PNDIS_802_11_STATUS_INDICATION; + +// mask for authentication/integrity fields +#define NDIS_802_11_AUTH_REQUEST_AUTH_FIELDS 0x0f +#define NDIS_802_11_AUTH_REQUEST_REAUTH 0x01 +#define NDIS_802_11_AUTH_REQUEST_KEYUPDATE 0x02 +#define NDIS_802_11_AUTH_REQUEST_PAIRWISE_ERROR 0x06 +#define NDIS_802_11_AUTH_REQUEST_GROUP_ERROR 0x0E + +// MIC check time, 60 seconds. +#define MIC_CHECK_TIME 60000000 + +typedef struct _NDIS_802_11_AUTHENTICATION_EVENT +{ + NDIS_802_11_STATUS_INDICATION Status; + NDIS_802_11_AUTHENTICATION_REQUEST Request[1]; +} NDIS_802_11_AUTHENTICATION_EVENT, *PNDIS_802_11_AUTHENTICATION_EVENT; + +typedef struct _NDIS_802_11_TEST +{ + ULONG Length; + ULONG Type; + union + { + NDIS_802_11_AUTHENTICATION_EVENT AuthenticationEvent; + NDIS_802_11_RSSI RssiTrigger; + }tt; +} NDIS_802_11_TEST, *PNDIS_802_11_TEST; + + +#endif //PLATFORM_FREEBSD +#ifndef Ndis802_11APMode +#define Ndis802_11APMode (Ndis802_11InfrastructureMax+1) +#endif + +typedef struct _WLAN_PHY_INFO +{ + u8 SignalStrength;//(in percentage) + u8 SignalQuality;//(in percentage) + u8 Optimum_antenna; //for Antenna diversity + u8 Reserved_0; +}WLAN_PHY_INFO,*PWLAN_PHY_INFO; + +/* temporally add #pragma pack for structure alignment issue of +* WLAN_BSSID_EX and get_WLAN_BSSID_EX_sz() +*/ +#ifdef PLATFORM_WINDOWS +#pragma pack(push) +#pragma pack(1) +#endif +typedef struct _WLAN_BSSID_EX +{ + ULONG Length; + NDIS_802_11_MAC_ADDRESS MacAddress; + UCHAR Reserved[2];//[0]: IS beacon frame + NDIS_802_11_SSID Ssid; + ULONG Privacy; + NDIS_802_11_RSSI Rssi;//(in dBM,raw data ,get from PHY) + NDIS_802_11_NETWORK_TYPE NetworkTypeInUse; + NDIS_802_11_CONFIGURATION Configuration; + NDIS_802_11_NETWORK_INFRASTRUCTURE InfrastructureMode; + NDIS_802_11_RATES_EX SupportedRates; + WLAN_PHY_INFO PhyInfo; + ULONG IELength; + UCHAR IEs[MAX_IE_SZ]; //(timestamp, beacon interval, and capability information) +} +#ifndef PLATFORM_WINDOWS +__attribute__((packed)) +#endif +WLAN_BSSID_EX, *PWLAN_BSSID_EX; +#ifdef PLATFORM_WINDOWS +#pragma pack(pop) +#endif + +__inline static uint get_WLAN_BSSID_EX_sz(WLAN_BSSID_EX *bss) +{ + return (sizeof(WLAN_BSSID_EX) - MAX_IE_SZ + bss->IELength); +} + +struct wlan_network { + _list list; + int network_type; //refer to ieee80211.h for WIRELESS_11A/B/G + int fixed; // set to fixed when not to be removed as site-surveying + unsigned long last_scanned; //timestamp for the network + int aid; //will only be valid when a BSS is joinned. + int join_res; + WLAN_BSSID_EX network; //must be the last item +#ifdef PLATFORM_WINDOWS + unsigned char iebuf[MAX_IE_SZ]; +#endif + +}; + +enum VRTL_CARRIER_SENSE +{ + DISABLE_VCS, + ENABLE_VCS, + AUTO_VCS +}; + +enum VCS_TYPE +{ + NONE_VCS, + RTS_CTS, + CTS_TO_SELF +}; + + + + +#define PWR_CAM 0 +#define PWR_MINPS 1 +#define PWR_MAXPS 2 +#define PWR_UAPSD 3 +#define PWR_VOIP 4 + + +enum UAPSD_MAX_SP +{ + NO_LIMIT, + TWO_MSDU, + FOUR_MSDU, + SIX_MSDU +}; + + +//john +#define NUM_PRE_AUTH_KEY 16 +#define NUM_PMKID_CACHE NUM_PRE_AUTH_KEY + +/* +* WPA2 +*/ + +#ifndef PLATFORM_OS_CE +typedef struct _PMKID_CANDIDATE { + NDIS_802_11_MAC_ADDRESS BSSID; + ULONG Flags; +} PMKID_CANDIDATE, *PPMKID_CANDIDATE; + +typedef struct _NDIS_802_11_PMKID_CANDIDATE_LIST +{ + ULONG Version; // Version of the structure + ULONG NumCandidates; // No. of pmkid candidates + PMKID_CANDIDATE CandidateList[1]; +} NDIS_802_11_PMKID_CANDIDATE_LIST, *PNDIS_802_11_PMKID_CANDIDATE_LIST; + + +typedef struct _NDIS_802_11_AUTHENTICATION_ENCRYPTION +{ + NDIS_802_11_AUTHENTICATION_MODE AuthModeSupported; + NDIS_802_11_ENCRYPTION_STATUS EncryptStatusSupported; + +} NDIS_802_11_AUTHENTICATION_ENCRYPTION, *PNDIS_802_11_AUTHENTICATION_ENCRYPTION; + +typedef struct _NDIS_802_11_CAPABILITY +{ + ULONG Length; + ULONG Version; + ULONG NoOfPMKIDs; + ULONG NoOfAuthEncryptPairsSupported; + NDIS_802_11_AUTHENTICATION_ENCRYPTION AuthenticationEncryptionSupported[1]; + +} NDIS_802_11_CAPABILITY, *PNDIS_802_11_CAPABILITY; +#endif + + +#endif //#ifndef WLAN_BSSDEF_H_ --- linux-raspi2-4.2.0.orig/drivers/net/wireless/rtl8192cu/include/xmit_osdep.h +++ linux-raspi2-4.2.0/drivers/net/wireless/rtl8192cu/include/xmit_osdep.h @@ -0,0 +1,94 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved. + * + * 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 + * published by the Free Software Foundation. + * + * 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 Street, Fifth Floor, Boston, MA 02110, USA + * + * + ******************************************************************************/ +#ifndef __XMIT_OSDEP_H_ +#define __XMIT_OSDEP_H_ + +#include +#include +#include + +struct pkt_file { + _pkt *pkt; + SIZE_T pkt_len; //the remainder length of the open_file + _buffer *cur_buffer; + u8 *buf_start; + u8 *cur_addr; + SIZE_T buf_len; +}; + +#ifdef PLATFORM_WINDOWS + +#ifdef PLATFORM_OS_XP +#ifdef CONFIG_USB_HCI +#include +#include +#include +#endif +#endif + +#define NR_XMITFRAME 128 + +#define ETH_ALEN 6 + +extern NDIS_STATUS rtw_xmit_entry( +IN _nic_hdl cnxt, +IN NDIS_PACKET *pkt, +IN UINT flags +); + +#endif + +#ifdef PLATFORM_FREEBSD +#define NR_XMITFRAME 256 +extern int rtw_xmit_entry(_pkt *pkt, _nic_hdl pnetdev); +extern void rtw_xmit_entry_wrap (struct ifnet * pifp); +#endif //PLATFORM_FREEBSD + +#ifdef PLATFORM_LINUX + +#define NR_XMITFRAME 256 + +struct xmit_priv; +struct pkt_attrib; +struct sta_xmit_priv; +struct xmit_frame; +struct xmit_buf; + +extern int _rtw_xmit_entry(_pkt *pkt, _nic_hdl pnetdev); +extern int rtw_xmit_entry(_pkt *pkt, _nic_hdl pnetdev); + +#endif + +void rtw_os_xmit_schedule(_adapter *padapter); + +int rtw_os_xmit_resource_alloc(_adapter *padapter, struct xmit_buf *pxmitbuf,u32 alloc_sz); +void rtw_os_xmit_resource_free(_adapter *padapter, struct xmit_buf *pxmitbuf,u32 free_sz); + +extern void rtw_set_tx_chksum_offload(_pkt *pkt, struct pkt_attrib *pattrib); + +extern uint rtw_remainder_len(struct pkt_file *pfile); +extern void _rtw_open_pktfile(_pkt *pkt, struct pkt_file *pfile); +extern uint _rtw_pktfile_read (struct pkt_file *pfile, u8 *rmem, uint rlen); +extern sint rtw_endofpktfile (struct pkt_file *pfile); + +extern void rtw_os_pkt_complete(_adapter *padapter, _pkt *pkt); +extern void rtw_os_xmit_complete(_adapter *padapter, struct xmit_frame *pxframe); + +#endif //__XMIT_OSDEP_H_ --- linux-raspi2-4.2.0.orig/drivers/net/wireless/rtl8192cu/os_dep/linux/ioctl_cfg80211.c +++ linux-raspi2-4.2.0/drivers/net/wireless/rtl8192cu/os_dep/linux/ioctl_cfg80211.c @@ -0,0 +1,5488 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2012 Realtek Corporation. All rights reserved. + * + * 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 + * published by the Free Software Foundation. + * + * 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 Street, Fifth Floor, Boston, MA 02110, USA + * + * + ******************************************************************************/ +#define _IOCTL_CFG80211_C_ + +#include +#include +#include +#include +#include +#include +#include + +#ifdef CONFIG_IOCTL_CFG80211 + +#include "ioctl_cfg80211.h" + +#define RTW_MAX_MGMT_TX_CNT (8) + +#define RTW_SCAN_IE_LEN_MAX 2304 +#define RTW_MAX_REMAIN_ON_CHANNEL_DURATION 65535 //ms +#define RTW_MAX_NUM_PMKIDS 4 + +#define RTW_CH_MAX_2G_CHANNEL 14 /* Max channel in 2G band */ + +static const u32 rtw_cipher_suites[] = { + WLAN_CIPHER_SUITE_WEP40, + WLAN_CIPHER_SUITE_WEP104, + WLAN_CIPHER_SUITE_TKIP, + WLAN_CIPHER_SUITE_CCMP, +#ifdef CONFIG_IEEE80211W + WLAN_CIPHER_SUITE_AES_CMAC, +#endif //CONFIG_IEEE80211W +}; + +#define RATETAB_ENT(_rate, _rateid, _flags) \ + { \ + .bitrate = (_rate), \ + .hw_value = (_rateid), \ + .flags = (_flags), \ + } + +#define CHAN2G(_channel, _freq, _flags) { \ + .band = IEEE80211_BAND_2GHZ, \ + .center_freq = (_freq), \ + .hw_value = (_channel), \ + .flags = (_flags), \ + .max_antenna_gain = 0, \ + .max_power = 30, \ +} + +#define CHAN5G(_channel, _flags) { \ + .band = IEEE80211_BAND_5GHZ, \ + .center_freq = 5000 + (5 * (_channel)), \ + .hw_value = (_channel), \ + .flags = (_flags), \ + .max_antenna_gain = 0, \ + .max_power = 30, \ +} + +static struct ieee80211_rate rtw_rates[] = { + RATETAB_ENT(10, 0x1, 0), + RATETAB_ENT(20, 0x2, 0), + RATETAB_ENT(55, 0x4, 0), + RATETAB_ENT(110, 0x8, 0), + RATETAB_ENT(60, 0x10, 0), + RATETAB_ENT(90, 0x20, 0), + RATETAB_ENT(120, 0x40, 0), + RATETAB_ENT(180, 0x80, 0), + RATETAB_ENT(240, 0x100, 0), + RATETAB_ENT(360, 0x200, 0), + RATETAB_ENT(480, 0x400, 0), + RATETAB_ENT(540, 0x800, 0), +}; + +#define rtw_a_rates (rtw_rates + 4) +#define RTW_A_RATES_NUM 8 +#define rtw_g_rates (rtw_rates + 0) +#define RTW_G_RATES_NUM 12 + +#define RTW_2G_CHANNELS_NUM 14 +#define RTW_5G_CHANNELS_NUM 37 + +static struct ieee80211_channel rtw_2ghz_channels[] = { + CHAN2G(1, 2412, 0), + CHAN2G(2, 2417, 0), + CHAN2G(3, 2422, 0), + CHAN2G(4, 2427, 0), + CHAN2G(5, 2432, 0), + CHAN2G(6, 2437, 0), + CHAN2G(7, 2442, 0), + CHAN2G(8, 2447, 0), + CHAN2G(9, 2452, 0), + CHAN2G(10, 2457, 0), + CHAN2G(11, 2462, 0), + CHAN2G(12, 2467, 0), + CHAN2G(13, 2472, 0), + CHAN2G(14, 2484, 0), +}; + +static struct ieee80211_channel rtw_5ghz_a_channels[] = { + CHAN5G(34, 0), CHAN5G(36, 0), + CHAN5G(38, 0), CHAN5G(40, 0), + CHAN5G(42, 0), CHAN5G(44, 0), + CHAN5G(46, 0), CHAN5G(48, 0), + CHAN5G(52, 0), CHAN5G(56, 0), + CHAN5G(60, 0), CHAN5G(64, 0), + CHAN5G(100, 0), CHAN5G(104, 0), + CHAN5G(108, 0), CHAN5G(112, 0), + CHAN5G(116, 0), CHAN5G(120, 0), + CHAN5G(124, 0), CHAN5G(128, 0), + CHAN5G(132, 0), CHAN5G(136, 0), + CHAN5G(140, 0), CHAN5G(149, 0), + CHAN5G(153, 0), CHAN5G(157, 0), + CHAN5G(161, 0), CHAN5G(165, 0), + CHAN5G(184, 0), CHAN5G(188, 0), + CHAN5G(192, 0), CHAN5G(196, 0), + CHAN5G(200, 0), CHAN5G(204, 0), + CHAN5G(208, 0), CHAN5G(212, 0), + CHAN5G(216, 0), +}; + + +void rtw_2g_channels_init(struct ieee80211_channel *channels) +{ + _rtw_memcpy((void*)channels, (void*)rtw_2ghz_channels, + sizeof(struct ieee80211_channel)*RTW_2G_CHANNELS_NUM + ); +} + +void rtw_5g_channels_init(struct ieee80211_channel *channels) +{ + _rtw_memcpy((void*)channels, (void*)rtw_5ghz_a_channels, + sizeof(struct ieee80211_channel)*RTW_5G_CHANNELS_NUM + ); +} + +void rtw_2g_rates_init(struct ieee80211_rate *rates) +{ + _rtw_memcpy(rates, rtw_g_rates, + sizeof(struct ieee80211_rate)*RTW_G_RATES_NUM + ); +} + +void rtw_5g_rates_init(struct ieee80211_rate *rates) +{ + _rtw_memcpy(rates, rtw_a_rates, + sizeof(struct ieee80211_rate)*RTW_A_RATES_NUM + ); +} + +struct ieee80211_supported_band *rtw_spt_band_alloc( + enum ieee80211_band band + ) +{ + struct ieee80211_supported_band *spt_band = NULL; + int n_channels, n_bitrates; + + if(band == IEEE80211_BAND_2GHZ) + { + n_channels = RTW_2G_CHANNELS_NUM; + n_bitrates = RTW_G_RATES_NUM; + } + else if(band == IEEE80211_BAND_5GHZ) + { + n_channels = RTW_5G_CHANNELS_NUM; + n_bitrates = RTW_A_RATES_NUM; + } + else + { + goto exit; + } + + spt_band = (struct ieee80211_supported_band *)rtw_zmalloc( + sizeof(struct ieee80211_supported_band) + + sizeof(struct ieee80211_channel)*n_channels + + sizeof(struct ieee80211_rate)*n_bitrates + ); + if(!spt_band) + goto exit; + + spt_band->channels = (struct ieee80211_channel*)(((u8*)spt_band)+sizeof(struct ieee80211_supported_band)); + spt_band->bitrates= (struct ieee80211_rate*)(((u8*)spt_band->channels)+sizeof(struct ieee80211_channel)*n_channels); + spt_band->band = band; + spt_band->n_channels = n_channels; + spt_band->n_bitrates = n_bitrates; + + if(band == IEEE80211_BAND_2GHZ) + { + rtw_2g_channels_init(spt_band->channels); + rtw_2g_rates_init(spt_band->bitrates); + } + else if(band == IEEE80211_BAND_5GHZ) + { + rtw_5g_channels_init(spt_band->channels); + rtw_5g_rates_init(spt_band->bitrates); + } + + //spt_band.ht_cap + +exit: + + return spt_band; +} + +void rtw_spt_band_free(struct ieee80211_supported_band *spt_band) +{ + u32 size; + + if(!spt_band) + return; + + if(spt_band->band == IEEE80211_BAND_2GHZ) + { + size = sizeof(struct ieee80211_supported_band) + + sizeof(struct ieee80211_channel)*RTW_2G_CHANNELS_NUM + + sizeof(struct ieee80211_rate)*RTW_G_RATES_NUM; + } + else if(spt_band->band == IEEE80211_BAND_5GHZ) + { + size = sizeof(struct ieee80211_supported_band) + + sizeof(struct ieee80211_channel)*RTW_5G_CHANNELS_NUM + + sizeof(struct ieee80211_rate)*RTW_A_RATES_NUM; + } + else + { + + } + rtw_mfree((u8*)spt_band, size); +} + +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,37)) || defined(COMPAT_KERNEL_RELEASE) +static const struct ieee80211_txrx_stypes +rtw_cfg80211_default_mgmt_stypes[NUM_NL80211_IFTYPES] = { + [NL80211_IFTYPE_ADHOC] = { + .tx = 0xffff, + .rx = BIT(IEEE80211_STYPE_ACTION >> 4) + }, + [NL80211_IFTYPE_STATION] = { + .tx = 0xffff, + .rx = BIT(IEEE80211_STYPE_ACTION >> 4) | + BIT(IEEE80211_STYPE_PROBE_REQ >> 4) + }, + [NL80211_IFTYPE_AP] = { + .tx = 0xffff, + .rx = BIT(IEEE80211_STYPE_ASSOC_REQ >> 4) | + BIT(IEEE80211_STYPE_REASSOC_REQ >> 4) | + BIT(IEEE80211_STYPE_PROBE_REQ >> 4) | + BIT(IEEE80211_STYPE_DISASSOC >> 4) | + BIT(IEEE80211_STYPE_AUTH >> 4) | + BIT(IEEE80211_STYPE_DEAUTH >> 4) | + BIT(IEEE80211_STYPE_ACTION >> 4) + }, + [NL80211_IFTYPE_AP_VLAN] = { + /* copy AP */ + .tx = 0xffff, + .rx = BIT(IEEE80211_STYPE_ASSOC_REQ >> 4) | + BIT(IEEE80211_STYPE_REASSOC_REQ >> 4) | + BIT(IEEE80211_STYPE_PROBE_REQ >> 4) | + BIT(IEEE80211_STYPE_DISASSOC >> 4) | + BIT(IEEE80211_STYPE_AUTH >> 4) | + BIT(IEEE80211_STYPE_DEAUTH >> 4) | + BIT(IEEE80211_STYPE_ACTION >> 4) + }, + [NL80211_IFTYPE_P2P_CLIENT] = { + .tx = 0xffff, + .rx = BIT(IEEE80211_STYPE_ACTION >> 4) | + BIT(IEEE80211_STYPE_PROBE_REQ >> 4) + }, + [NL80211_IFTYPE_P2P_GO] = { + .tx = 0xffff, + .rx = BIT(IEEE80211_STYPE_ASSOC_REQ >> 4) | + BIT(IEEE80211_STYPE_REASSOC_REQ >> 4) | + BIT(IEEE80211_STYPE_PROBE_REQ >> 4) | + BIT(IEEE80211_STYPE_DISASSOC >> 4) | + BIT(IEEE80211_STYPE_AUTH >> 4) | + BIT(IEEE80211_STYPE_DEAUTH >> 4) | + BIT(IEEE80211_STYPE_ACTION >> 4) + }, +}; +#endif + +static int rtw_ieee80211_channel_to_frequency(int chan, int band) +{ + /* see 802.11 17.3.8.3.2 and Annex J + * there are overlapping channel numbers in 5GHz and 2GHz bands */ + + if (band == IEEE80211_BAND_5GHZ) { + if (chan >= 182 && chan <= 196) + return 4000 + chan * 5; + else + return 5000 + chan * 5; + } else { /* IEEE80211_BAND_2GHZ */ + if (chan == 14) + return 2484; + else if (chan < 14) + return 2407 + chan * 5; + else + return 0; /* not supported */ + } +} + +#define MAX_BSSINFO_LEN 1000 +static int rtw_cfg80211_inform_bss(_adapter *padapter, struct wlan_network *pnetwork) +{ + int ret=0; + struct ieee80211_channel *notify_channel; + struct cfg80211_bss *bss; + //struct ieee80211_supported_band *band; + u16 channel; + u32 freq; + u64 notify_timestamp; + u16 notify_capability; + u16 notify_interval; + u8 *notify_ie; + size_t notify_ielen; + s32 notify_signal; + u8 buf[MAX_BSSINFO_LEN], *pbuf; + size_t len,bssinf_len=0; + struct rtw_ieee80211_hdr *pwlanhdr; + unsigned short *fctrl; + u8 bc_addr[] = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff}; + + struct wireless_dev *wdev = padapter->rtw_wdev; + struct wiphy *wiphy = wdev->wiphy; + struct mlme_priv *pmlmepriv = &(padapter->mlmepriv); + + + //DBG_8192C("%s\n", __func__); + + bssinf_len = pnetwork->network.IELength+sizeof (struct rtw_ieee80211_hdr_3addr); + if(bssinf_len > MAX_BSSINFO_LEN){ + DBG_871X("%s IE Length too long > %d byte \n",__FUNCTION__,MAX_BSSINFO_LEN); + goto exit; + } + + //To reduce PBC Overlap rate + //_enter_critical_bh(&pwdev_priv->scan_req_lock, &irqL); + if(wdev_to_priv(wdev)->scan_request != NULL) + { + u8 *psr=NULL, sr = 0; + NDIS_802_11_SSID *pssid = &pnetwork->network.Ssid; + struct cfg80211_scan_request *request = wdev_to_priv(wdev)->scan_request; + struct cfg80211_ssid *ssids = request->ssids; + u32 wpsielen=0; + u8 *wpsie=NULL; + + wpsie = rtw_get_wps_ie(pnetwork->network.IEs+_FIXED_IE_LENGTH_, pnetwork->network.IELength-_FIXED_IE_LENGTH_, NULL, &wpsielen); + + if(wpsie && wpsielen>0) + psr = rtw_get_wps_attr_content(wpsie, wpsielen, WPS_ATTR_SELECTED_REGISTRAR, (u8*)(&sr), NULL); + + if (sr != 0) + { + if(request->n_ssids == 1 && request->n_channels == 1) // it means under processing WPS + { + DBG_8192C("ssid=%s, len=%d\n", pssid->Ssid, pssid->SsidLength); + + if(pssid->SsidLength == ssids[0].ssid_len && + _rtw_memcmp(pssid->Ssid, ssids[0].ssid, ssids[0].ssid_len)) + { + DBG_871X("%s, got sr and ssid match!\n", __func__); + } + else + { + if(psr !=NULL) + *psr = 0; //clear sr + +#if 0 + WLAN_BSSID_EX *pselect_network = &pnetwork->network; + struct cfg80211_bss *pselect_bss = NULL; + struct ieee80211_channel *notify_channel = NULL; + u32 freq; + + DBG_871X("%s, got sr, but ssid mismatch, to remove this bss\n", __func__); + + if (pselect_network->Configuration.DSConfig <= RTW_CH_MAX_2G_CHANNEL) + freq = rtw_ieee80211_channel_to_frequency(pselect_network->Configuration.DSConfig, IEEE80211_BAND_2GHZ); + else + freq = rtw_ieee80211_channel_to_frequency(pselect_network->Configuration.DSConfig, IEEE80211_BAND_5GHZ); + + notify_channel = ieee80211_get_channel(wiphy, freq); + pselect_bss = cfg80211_get_bss(wiphy, NULL/*notify_channel*/, + pselect_network->MacAddress, pselect_network->Ssid.Ssid, + pselect_network->Ssid.SsidLength, 0/*WLAN_CAPABILITY_ESS*/, + 0/*WLAN_CAPABILITY_ESS*/); + + if(pselect_bss) + { + DBG_871X("%s, got bss for cfg80211 for unlinking bss\n", __func__); + + cfg80211_unlink_bss(wiphy, pselect_bss); +#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 9, 0) + cfg80211_put_bss(wiphy, pselect_bss); +#else + cfg80211_put_bss(pselect_bss); +#endif + + } + + goto exit; +#endif + } + } + } + } + //_exit_critical_bh(&pwdev_priv->scan_req_lock, &irqL); + + channel = pnetwork->network.Configuration.DSConfig; + if (channel <= RTW_CH_MAX_2G_CHANNEL) + freq = rtw_ieee80211_channel_to_frequency(channel, IEEE80211_BAND_2GHZ); + else + freq = rtw_ieee80211_channel_to_frequency(channel, IEEE80211_BAND_5GHZ); + + notify_channel = ieee80211_get_channel(wiphy, freq); + + //rtw_get_timestampe_from_ie() + notify_timestamp = jiffies_to_msecs(jiffies)*1000; /* uSec */ + + notify_interval = le16_to_cpu(*(u16*)rtw_get_beacon_interval_from_ie(pnetwork->network.IEs)); + notify_capability = le16_to_cpu(*(u16*)rtw_get_capability_from_ie(pnetwork->network.IEs)); + + + notify_ie = pnetwork->network.IEs+_FIXED_IE_LENGTH_; + notify_ielen = pnetwork->network.IELength-_FIXED_IE_LENGTH_; + + //We've set wiphy's signal_type as CFG80211_SIGNAL_TYPE_MBM: signal strength in mBm (100*dBm) + if ( check_fwstate(pmlmepriv, _FW_LINKED)== _TRUE && + is_same_network(&pmlmepriv->cur_network.network, &pnetwork->network)) { + notify_signal = 100*translate_percentage_to_dbm(padapter->recvpriv.signal_strength);//dbm + } else { + notify_signal = 100*translate_percentage_to_dbm(pnetwork->network.PhyInfo.SignalStrength);//dbm + } + +/* + DBG_8192C("bssid: %2.2X:%2.2X:%2.2X:%2.2X:%2.2X:%2.2X\n", + pnetwork->network.MacAddress[0], pnetwork->network.MacAddress[1], pnetwork->network.MacAddress[2], + pnetwork->network.MacAddress[3], pnetwork->network.MacAddress[4], pnetwork->network.MacAddress[5]); + DBG_8192C("Channel: %d(%d)\n", channel, freq); + DBG_8192C("Capability: %X\n", notify_capability); + DBG_8192C("Beacon interval: %d\n", notify_interval); + DBG_8192C("Signal: %d\n", notify_signal); + DBG_8192C("notify_timestamp: %#018llx\n", notify_timestamp); +*/ + + pbuf = buf; + + pwlanhdr = (struct rtw_ieee80211_hdr *)pbuf; + fctrl = &(pwlanhdr->frame_ctl); + *(fctrl) = 0; + + SetSeqNum(pwlanhdr, 0/*pmlmeext->mgnt_seq*/); + //pmlmeext->mgnt_seq++; + + if (pnetwork->network.Reserved[0] == 1) { // WIFI_BEACON + _rtw_memcpy(pwlanhdr->addr1, bc_addr, ETH_ALEN); + SetFrameSubType(pbuf, WIFI_BEACON); + } else { + _rtw_memcpy(pwlanhdr->addr1, myid(&(padapter->eeprompriv)), ETH_ALEN); + SetFrameSubType(pbuf, WIFI_PROBERSP); + } + + _rtw_memcpy(pwlanhdr->addr2, pnetwork->network.MacAddress, ETH_ALEN); + _rtw_memcpy(pwlanhdr->addr3, pnetwork->network.MacAddress, ETH_ALEN); + + + pbuf += sizeof(struct rtw_ieee80211_hdr_3addr); + len = sizeof (struct rtw_ieee80211_hdr_3addr); + + _rtw_memcpy(pbuf, pnetwork->network.IEs, pnetwork->network.IELength); + len += pnetwork->network.IELength; + + //#ifdef CONFIG_P2P + //if(rtw_get_p2p_ie(pnetwork->network.IEs+12, pnetwork->network.IELength-12, NULL, NULL)) + //{ + // DBG_8192C("%s, got p2p_ie\n", __func__); + //} + //#endif + + +#if 1 + bss = cfg80211_inform_bss_frame(wiphy, notify_channel, (struct ieee80211_mgmt *)buf, + len, notify_signal, GFP_ATOMIC); +#else + + bss = cfg80211_inform_bss(wiphy, notify_channel, (const u8 *)pnetwork->network.MacAddress, + notify_timestamp, notify_capability, notify_interval, notify_ie, + notify_ielen, notify_signal, GFP_ATOMIC/*GFP_KERNEL*/); +#endif + + if (unlikely(!bss)) { + DBG_8192C("rtw_cfg80211_inform_bss error\n"); + return -EINVAL; + } + +#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,38)) +#ifndef COMPAT_KERNEL_RELEASE + //patch for cfg80211, update beacon ies to information_elements + if (pnetwork->network.Reserved[0] == 1) { // WIFI_BEACON + + if(bss->len_information_elements != bss->len_beacon_ies) + { + bss->information_elements = bss->beacon_ies; + bss->len_information_elements = bss->len_beacon_ies; + } + } +#endif //COMPAT_KERNEL_RELEASE +#endif //LINUX_VERSION_CODE < KERNEL_VERSION(2,6,38) + +/* + { + if( bss->information_elements == bss->proberesp_ies) + { + if( bss->len_information_elements != bss->len_proberesp_ies) + { + DBG_8192C("error!, len_information_elements != bss->len_proberesp_ies\n"); + } + + } + else if(bss->len_information_elements < bss->len_beacon_ies) + { + bss->information_elements = bss->beacon_ies; + bss->len_information_elements = bss->len_beacon_ies; + } + } +*/ + +#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 9, 0) + cfg80211_put_bss(wiphy, bss); +#else + cfg80211_put_bss(bss); +#endif + +exit: + return ret; + +} + +/* + Check the given bss is valid by kernel API cfg80211_get_bss() + @padapter : the given adapter + + return _TRUE if bss is valid, _FALSE for not found. +*/ +int rtw_cfg80211_check_bss(_adapter *padapter) +{ + WLAN_BSSID_EX *pnetwork = &(padapter->mlmeextpriv.mlmext_info.network); + struct cfg80211_bss *bss = NULL; + struct ieee80211_channel *notify_channel = NULL; + u32 freq; + + if (!(pnetwork) || !(padapter->rtw_wdev)) + return _FALSE; + + if (pnetwork->Configuration.DSConfig <= RTW_CH_MAX_2G_CHANNEL) + freq = rtw_ieee80211_channel_to_frequency(pnetwork->Configuration.DSConfig, IEEE80211_BAND_2GHZ); + else + freq = rtw_ieee80211_channel_to_frequency(pnetwork->Configuration.DSConfig, IEEE80211_BAND_5GHZ); + + notify_channel = ieee80211_get_channel(padapter->rtw_wdev->wiphy, freq); + bss = cfg80211_get_bss(padapter->rtw_wdev->wiphy, notify_channel, + pnetwork->MacAddress, pnetwork->Ssid.Ssid, + pnetwork->Ssid.SsidLength, + WLAN_CAPABILITY_ESS, WLAN_CAPABILITY_ESS); + + return (bss!=NULL); +} + +void rtw_cfg80211_indicate_connect(_adapter *padapter) +{ + struct mlme_priv *pmlmepriv = &padapter->mlmepriv; + struct wlan_network *cur_network = &(pmlmepriv->cur_network); + struct wireless_dev *pwdev = padapter->rtw_wdev; +#ifdef CONFIG_P2P + struct wifidirect_info *pwdinfo= &(padapter->wdinfo); +#endif + struct cfg80211_bss *bss = NULL; + + DBG_871X(FUNC_ADPT_FMT"\n", FUNC_ADPT_ARG(padapter)); + if (pwdev->iftype != NL80211_IFTYPE_STATION + #if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,37)) || defined(COMPAT_KERNEL_RELEASE) + && pwdev->iftype != NL80211_IFTYPE_P2P_CLIENT + #endif + ) { + return; + } + + if(check_fwstate(pmlmepriv, WIFI_AP_STATE) == _TRUE) + return; + +#ifdef CONFIG_P2P + if(pwdinfo->driver_interface == DRIVER_CFG80211 ) + { + if(!rtw_p2p_chk_state(pwdinfo, P2P_STATE_NONE)) + { + rtw_p2p_set_pre_state(pwdinfo, rtw_p2p_state(pwdinfo)); + rtw_p2p_set_role(pwdinfo, P2P_ROLE_CLIENT); + rtw_p2p_set_state(pwdinfo, P2P_STATE_GONEGO_OK); + DBG_8192C("%s, role=%d, p2p_state=%d, pre_p2p_state=%d\n", __func__, rtw_p2p_role(pwdinfo), rtw_p2p_state(pwdinfo), rtw_p2p_pre_state(pwdinfo)); + } + } +#endif //CONFIG_P2P + + #ifdef CONFIG_LAYER2_ROAMING + if (rtw_to_roaming(padapter) > 0) { + #if LINUX_VERSION_CODE > KERNEL_VERSION(2, 6, 39) || defined(COMPAT_KERNEL_RELEASE) + struct wiphy *wiphy = pwdev->wiphy; + struct ieee80211_channel *notify_channel; + u32 freq; + u16 channel = cur_network->network.Configuration.DSConfig; + + if (channel <= RTW_CH_MAX_2G_CHANNEL) + freq = rtw_ieee80211_channel_to_frequency(channel, IEEE80211_BAND_2GHZ); + else + freq = rtw_ieee80211_channel_to_frequency(channel, IEEE80211_BAND_5GHZ); + + notify_channel = ieee80211_get_channel(wiphy, freq); + #endif + + DBG_871X("%s call cfg80211_roamed\n", __FUNCTION__); + cfg80211_roamed(padapter->pnetdev + #if LINUX_VERSION_CODE > KERNEL_VERSION(2, 6, 39) || defined(COMPAT_KERNEL_RELEASE) + , notify_channel + #endif + , cur_network->network.MacAddress + , pmlmepriv->assoc_req+sizeof(struct rtw_ieee80211_hdr_3addr)+2 + , pmlmepriv->assoc_req_len-sizeof(struct rtw_ieee80211_hdr_3addr)-2 + , pmlmepriv->assoc_rsp+sizeof(struct rtw_ieee80211_hdr_3addr)+6 + , pmlmepriv->assoc_rsp_len-sizeof(struct rtw_ieee80211_hdr_3addr)-6 + , GFP_ATOMIC); + } + else + #endif + { + DBG_8192C("pwdev->sme_state(b)=%d\n", pwdev->sme_state); + cfg80211_connect_result(padapter->pnetdev, cur_network->network.MacAddress + , pmlmepriv->assoc_req+sizeof(struct rtw_ieee80211_hdr_3addr)+2 + , pmlmepriv->assoc_req_len-sizeof(struct rtw_ieee80211_hdr_3addr)-2 + , pmlmepriv->assoc_rsp+sizeof(struct rtw_ieee80211_hdr_3addr)+6 + , pmlmepriv->assoc_rsp_len-sizeof(struct rtw_ieee80211_hdr_3addr)-6 + , WLAN_STATUS_SUCCESS, GFP_ATOMIC); + DBG_8192C("pwdev->sme_state(a)=%d\n", pwdev->sme_state); + } +} + +void rtw_cfg80211_indicate_disconnect(_adapter *padapter) +{ + struct mlme_priv *pmlmepriv = &padapter->mlmepriv; + struct wireless_dev *pwdev = padapter->rtw_wdev; +#ifdef CONFIG_P2P + struct wifidirect_info *pwdinfo= &(padapter->wdinfo); +#endif + + DBG_871X(FUNC_ADPT_FMT"\n", FUNC_ADPT_ARG(padapter)); + + if (pwdev->iftype != NL80211_IFTYPE_STATION + #if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,37)) || defined(COMPAT_KERNEL_RELEASE) + && pwdev->iftype != NL80211_IFTYPE_P2P_CLIENT + #endif + ) { + return; + } + + if(check_fwstate(pmlmepriv, WIFI_AP_STATE) == _TRUE) + return; + +#ifdef CONFIG_P2P + if( pwdinfo->driver_interface == DRIVER_CFG80211 ) + { + if(!rtw_p2p_chk_state(pwdinfo, P2P_STATE_NONE)) + { + _cancel_timer_ex( &pwdinfo->find_phase_timer ); + _cancel_timer_ex( &pwdinfo->restore_p2p_state_timer ); + _cancel_timer_ex( &pwdinfo->pre_tx_scan_timer); + + rtw_p2p_set_state(pwdinfo, rtw_p2p_pre_state(pwdinfo)); + rtw_p2p_set_role(pwdinfo, P2P_ROLE_DEVICE); + + DBG_8192C("%s, role=%d, p2p_state=%d, pre_p2p_state=%d\n", __func__, rtw_p2p_role(pwdinfo), rtw_p2p_state(pwdinfo), rtw_p2p_pre_state(pwdinfo)); + } + } +#endif //CONFIG_P2P + + if (!padapter->mlmepriv.not_indic_disco) { + DBG_8192C("pwdev->sme_state(b)=%d\n", pwdev->sme_state); + + if(pwdev->sme_state==CFG80211_SME_CONNECTING) + cfg80211_connect_result(padapter->pnetdev, NULL, NULL, 0, NULL, 0, + WLAN_STATUS_UNSPECIFIED_FAILURE, GFP_ATOMIC/*GFP_KERNEL*/); + else if(pwdev->sme_state==CFG80211_SME_CONNECTED) + cfg80211_disconnected(padapter->pnetdev, 0, NULL, 0, GFP_ATOMIC); + //else + //DBG_8192C("pwdev->sme_state=%d\n", pwdev->sme_state); + + DBG_8192C("pwdev->sme_state(a)=%d\n", pwdev->sme_state); + } +} + + +#ifdef CONFIG_AP_MODE +static u8 set_pairwise_key(_adapter *padapter, struct sta_info *psta) +{ + struct cmd_obj* ph2c; + struct set_stakey_parm *psetstakey_para; + struct cmd_priv *pcmdpriv=&padapter->cmdpriv; + u8 res=_SUCCESS; + + ph2c = (struct cmd_obj*)rtw_zmalloc(sizeof(struct cmd_obj)); + if ( ph2c == NULL){ + res= _FAIL; + goto exit; + } + + psetstakey_para = (struct set_stakey_parm*)rtw_zmalloc(sizeof(struct set_stakey_parm)); + if(psetstakey_para==NULL){ + rtw_mfree((u8 *) ph2c, sizeof(struct cmd_obj)); + res=_FAIL; + goto exit; + } + + init_h2fwcmd_w_parm_no_rsp(ph2c, psetstakey_para, _SetStaKey_CMD_); + + + psetstakey_para->algorithm = (u8)psta->dot118021XPrivacy; + + _rtw_memcpy(psetstakey_para->addr, psta->hwaddr, ETH_ALEN); + + _rtw_memcpy(psetstakey_para->key, &psta->dot118021x_UncstKey, 16); + + + res = rtw_enqueue_cmd(pcmdpriv, ph2c); + +exit: + + return res; + +} + +static int set_group_key(_adapter *padapter, u8 *key, u8 alg, int keyid) +{ + u8 keylen; + struct cmd_obj* pcmd; + struct setkey_parm *psetkeyparm; + struct cmd_priv *pcmdpriv=&(padapter->cmdpriv); + int res=_SUCCESS; + + DBG_8192C("%s\n", __FUNCTION__); + + pcmd = (struct cmd_obj*)rtw_zmalloc(sizeof(struct cmd_obj)); + if(pcmd==NULL){ + res= _FAIL; + goto exit; + } + psetkeyparm=(struct setkey_parm*)rtw_zmalloc(sizeof(struct setkey_parm)); + if(psetkeyparm==NULL){ + rtw_mfree((unsigned char *)pcmd, sizeof(struct cmd_obj)); + res= _FAIL; + goto exit; + } + + _rtw_memset(psetkeyparm, 0, sizeof(struct setkey_parm)); + + psetkeyparm->keyid=(u8)keyid; + if (is_wep_enc(alg)) + padapter->securitypriv.key_mask |= BIT(psetkeyparm->keyid); + + psetkeyparm->algorithm = alg; + + psetkeyparm->set_tx = 1; + + switch(alg) + { + case _WEP40_: + keylen = 5; + break; + case _WEP104_: + keylen = 13; + break; + case _TKIP_: + case _TKIP_WTMIC_: + case _AES_: + keylen = 16; + default: + keylen = 16; + } + + _rtw_memcpy(&(psetkeyparm->key[0]), key, keylen); + + pcmd->cmdcode = _SetKey_CMD_; + pcmd->parmbuf = (u8 *)psetkeyparm; + pcmd->cmdsz = (sizeof(struct setkey_parm)); + pcmd->rsp = NULL; + pcmd->rspsz = 0; + + + _rtw_init_listhead(&pcmd->list); + + res = rtw_enqueue_cmd(pcmdpriv, pcmd); + +exit: + + return res; + + +} + +static int set_wep_key(_adapter *padapter, u8 *key, u8 keylen, int keyid) +{ + u8 alg; + + switch(keylen) + { + case 5: + alg =_WEP40_; + break; + case 13: + alg =_WEP104_; + break; + default: + alg =_NO_PRIVACY_; + } + + return set_group_key(padapter, key, alg, keyid); + +} + +static int rtw_cfg80211_ap_set_encryption(struct net_device *dev, struct ieee_param *param, u32 param_len) +{ + int ret = 0; + u32 wep_key_idx, wep_key_len,wep_total_len; + struct sta_info *psta = NULL, *pbcmc_sta = NULL; + _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); + struct mlme_priv *pmlmepriv = &padapter->mlmepriv; + struct security_priv* psecuritypriv=&(padapter->securitypriv); + struct sta_priv *pstapriv = &padapter->stapriv; + + DBG_8192C("%s\n", __FUNCTION__); + + param->u.crypt.err = 0; + param->u.crypt.alg[IEEE_CRYPT_ALG_NAME_LEN - 1] = '\0'; + + //sizeof(struct ieee_param) = 64 bytes; + //if (param_len != (u32) ((u8 *) param->u.crypt.key - (u8 *) param) + param->u.crypt.key_len) + if (param_len != sizeof(struct ieee_param) + param->u.crypt.key_len) + { + ret = -EINVAL; + goto exit; + } + + if (param->sta_addr[0] == 0xff && param->sta_addr[1] == 0xff && + param->sta_addr[2] == 0xff && param->sta_addr[3] == 0xff && + param->sta_addr[4] == 0xff && param->sta_addr[5] == 0xff) + { + if (param->u.crypt.idx >= WEP_KEYS) + { + ret = -EINVAL; + goto exit; + } + } + else + { + psta = rtw_get_stainfo(pstapriv, param->sta_addr); + if(!psta) + { + //ret = -EINVAL; + DBG_8192C("rtw_set_encryption(), sta has already been removed or never been added\n"); + goto exit; + } + } + + if (strcmp(param->u.crypt.alg, "none") == 0 && (psta==NULL)) + { + //todo:clear default encryption keys + + DBG_8192C("clear default encryption keys, keyid=%d\n", param->u.crypt.idx); + + goto exit; + } + + + if (strcmp(param->u.crypt.alg, "WEP") == 0 && (psta==NULL)) + { + DBG_8192C("r871x_set_encryption, crypt.alg = WEP\n"); + + wep_key_idx = param->u.crypt.idx; + wep_key_len = param->u.crypt.key_len; + + DBG_8192C("r871x_set_encryption, wep_key_idx=%d, len=%d\n", wep_key_idx, wep_key_len); + + if((wep_key_idx >= WEP_KEYS) || (wep_key_len<=0)) + { + ret = -EINVAL; + goto exit; + } + + if (wep_key_len > 0) + { + wep_key_len = wep_key_len <= 5 ? 5 : 13; + } + + if (psecuritypriv->bWepDefaultKeyIdxSet == 0) + { + //wep default key has not been set, so use this key index as default key. + + psecuritypriv->ndisencryptstatus = Ndis802_11Encryption1Enabled; + psecuritypriv->dot11PrivacyAlgrthm=_WEP40_; + psecuritypriv->dot118021XGrpPrivacy=_WEP40_; + + if(wep_key_len == 13) + { + psecuritypriv->dot11PrivacyAlgrthm=_WEP104_; + psecuritypriv->dot118021XGrpPrivacy=_WEP104_; + } + + psecuritypriv->dot11PrivacyKeyIndex = wep_key_idx; + } + + _rtw_memcpy(&(psecuritypriv->dot11DefKey[wep_key_idx].skey[0]), param->u.crypt.key, wep_key_len); + + psecuritypriv->dot11DefKeylen[wep_key_idx] = wep_key_len; + + set_wep_key(padapter, param->u.crypt.key, wep_key_len, wep_key_idx); + + goto exit; + + } + + + if(!psta && check_fwstate(pmlmepriv, WIFI_AP_STATE)) // //group key + { + if(param->u.crypt.set_tx == 0) //group key + { + if(strcmp(param->u.crypt.alg, "WEP") == 0) + { + DBG_8192C("%s, set group_key, WEP\n", __FUNCTION__); + + _rtw_memcpy(psecuritypriv->dot118021XGrpKey[param->u.crypt.idx].skey, param->u.crypt.key, (param->u.crypt.key_len>16 ?16:param->u.crypt.key_len)); + + psecuritypriv->dot118021XGrpPrivacy = _WEP40_; + if(param->u.crypt.key_len==13) + { + psecuritypriv->dot118021XGrpPrivacy = _WEP104_; + } + + } + else if(strcmp(param->u.crypt.alg, "TKIP") == 0) + { + DBG_8192C("%s, set group_key, TKIP\n", __FUNCTION__); + + psecuritypriv->dot118021XGrpPrivacy = _TKIP_; + + _rtw_memcpy(psecuritypriv->dot118021XGrpKey[param->u.crypt.idx].skey, param->u.crypt.key, (param->u.crypt.key_len>16 ?16:param->u.crypt.key_len)); + + //DEBUG_ERR("set key length :param->u.crypt.key_len=%d\n", param->u.crypt.key_len); + //set mic key + _rtw_memcpy(psecuritypriv->dot118021XGrptxmickey[param->u.crypt.idx].skey, &(param->u.crypt.key[16]), 8); + _rtw_memcpy(psecuritypriv->dot118021XGrprxmickey[param->u.crypt.idx].skey, &(param->u.crypt.key[24]), 8); + + psecuritypriv->busetkipkey = _TRUE; + + } + else if(strcmp(param->u.crypt.alg, "CCMP") == 0) + { + DBG_8192C("%s, set group_key, CCMP\n", __FUNCTION__); + + psecuritypriv->dot118021XGrpPrivacy = _AES_; + + _rtw_memcpy(psecuritypriv->dot118021XGrpKey[param->u.crypt.idx].skey, param->u.crypt.key, (param->u.crypt.key_len>16 ?16:param->u.crypt.key_len)); + } + else + { + DBG_8192C("%s, set group_key, none\n", __FUNCTION__); + + psecuritypriv->dot118021XGrpPrivacy = _NO_PRIVACY_; + } + + psecuritypriv->dot118021XGrpKeyid = param->u.crypt.idx; + + psecuritypriv->binstallGrpkey = _TRUE; + + psecuritypriv->dot11PrivacyAlgrthm = psecuritypriv->dot118021XGrpPrivacy;//!!! + + set_group_key(padapter, param->u.crypt.key, psecuritypriv->dot118021XGrpPrivacy, param->u.crypt.idx); + + pbcmc_sta=rtw_get_bcmc_stainfo(padapter); + if(pbcmc_sta) + { + pbcmc_sta->ieee8021x_blocked = _FALSE; + pbcmc_sta->dot118021XPrivacy= psecuritypriv->dot118021XGrpPrivacy;//rx will use bmc_sta's dot118021XPrivacy + } + + } + + goto exit; + + } + + if(psecuritypriv->dot11AuthAlgrthm == dot11AuthAlgrthm_8021X && psta) // psk/802_1x + { + if(check_fwstate(pmlmepriv, WIFI_AP_STATE)) + { + if(param->u.crypt.set_tx ==1) //pairwise key + { + _rtw_memcpy(psta->dot118021x_UncstKey.skey, param->u.crypt.key, (param->u.crypt.key_len>16 ?16:param->u.crypt.key_len)); + + if(strcmp(param->u.crypt.alg, "WEP") == 0) + { + DBG_8192C("%s, set pairwise key, WEP\n", __FUNCTION__); + + psta->dot118021XPrivacy = _WEP40_; + if(param->u.crypt.key_len==13) + { + psta->dot118021XPrivacy = _WEP104_; + } + } + else if(strcmp(param->u.crypt.alg, "TKIP") == 0) + { + DBG_8192C("%s, set pairwise key, TKIP\n", __FUNCTION__); + + psta->dot118021XPrivacy = _TKIP_; + + //DEBUG_ERR("set key length :param->u.crypt.key_len=%d\n", param->u.crypt.key_len); + //set mic key + _rtw_memcpy(psta->dot11tkiptxmickey.skey, &(param->u.crypt.key[16]), 8); + _rtw_memcpy(psta->dot11tkiprxmickey.skey, &(param->u.crypt.key[24]), 8); + + psecuritypriv->busetkipkey = _TRUE; + + } + else if(strcmp(param->u.crypt.alg, "CCMP") == 0) + { + + DBG_8192C("%s, set pairwise key, CCMP\n", __FUNCTION__); + + psta->dot118021XPrivacy = _AES_; + } + else + { + DBG_8192C("%s, set pairwise key, none\n", __FUNCTION__); + + psta->dot118021XPrivacy = _NO_PRIVACY_; + } + + set_pairwise_key(padapter, psta); + + psta->ieee8021x_blocked = _FALSE; + + psta->bpairwise_key_installed = _TRUE; + + } + else//group key??? + { + if(strcmp(param->u.crypt.alg, "WEP") == 0) + { + _rtw_memcpy(psecuritypriv->dot118021XGrpKey[param->u.crypt.idx].skey, param->u.crypt.key, (param->u.crypt.key_len>16 ?16:param->u.crypt.key_len)); + + psecuritypriv->dot118021XGrpPrivacy = _WEP40_; + if(param->u.crypt.key_len==13) + { + psecuritypriv->dot118021XGrpPrivacy = _WEP104_; + } + } + else if(strcmp(param->u.crypt.alg, "TKIP") == 0) + { + psecuritypriv->dot118021XGrpPrivacy = _TKIP_; + + _rtw_memcpy(psecuritypriv->dot118021XGrpKey[param->u.crypt.idx].skey, param->u.crypt.key, (param->u.crypt.key_len>16 ?16:param->u.crypt.key_len)); + + //DEBUG_ERR("set key length :param->u.crypt.key_len=%d\n", param->u.crypt.key_len); + //set mic key + _rtw_memcpy(psecuritypriv->dot118021XGrptxmickey[param->u.crypt.idx].skey, &(param->u.crypt.key[16]), 8); + _rtw_memcpy(psecuritypriv->dot118021XGrprxmickey[param->u.crypt.idx].skey, &(param->u.crypt.key[24]), 8); + + psecuritypriv->busetkipkey = _TRUE; + + } + else if(strcmp(param->u.crypt.alg, "CCMP") == 0) + { + psecuritypriv->dot118021XGrpPrivacy = _AES_; + + _rtw_memcpy(psecuritypriv->dot118021XGrpKey[param->u.crypt.idx].skey, param->u.crypt.key, (param->u.crypt.key_len>16 ?16:param->u.crypt.key_len)); + } + else + { + psecuritypriv->dot118021XGrpPrivacy = _NO_PRIVACY_; + } + + psecuritypriv->dot118021XGrpKeyid = param->u.crypt.idx; + + psecuritypriv->binstallGrpkey = _TRUE; + + psecuritypriv->dot11PrivacyAlgrthm = psecuritypriv->dot118021XGrpPrivacy;//!!! + + set_group_key(padapter, param->u.crypt.key, psecuritypriv->dot118021XGrpPrivacy, param->u.crypt.idx); + + pbcmc_sta=rtw_get_bcmc_stainfo(padapter); + if(pbcmc_sta) + { + pbcmc_sta->ieee8021x_blocked = _FALSE; + pbcmc_sta->dot118021XPrivacy= psecuritypriv->dot118021XGrpPrivacy;//rx will use bmc_sta's dot118021XPrivacy + } + + } + + } + + } + +exit: + + return ret; + +} +#endif + +static int rtw_cfg80211_set_encryption(struct net_device *dev, struct ieee_param *param, u32 param_len) +{ + int ret = 0; + u32 wep_key_idx, wep_key_len,wep_total_len; + _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); + struct mlme_priv *pmlmepriv = &padapter->mlmepriv; + struct security_priv *psecuritypriv = &padapter->securitypriv; +#ifdef CONFIG_P2P + struct wifidirect_info* pwdinfo = &padapter->wdinfo; +#endif //CONFIG_P2P + +_func_enter_; + + DBG_8192C("%s\n", __func__); + + param->u.crypt.err = 0; + param->u.crypt.alg[IEEE_CRYPT_ALG_NAME_LEN - 1] = '\0'; + + if (param_len < (u32) ((u8 *) param->u.crypt.key - (u8 *) param) + param->u.crypt.key_len) + { + ret = -EINVAL; + goto exit; + } + + if (param->sta_addr[0] == 0xff && param->sta_addr[1] == 0xff && + param->sta_addr[2] == 0xff && param->sta_addr[3] == 0xff && + param->sta_addr[4] == 0xff && param->sta_addr[5] == 0xff) + { + if (param->u.crypt.idx >= WEP_KEYS +#ifdef CONFIG_IEEE80211W + && param->u.crypt.idx > BIP_MAX_KEYID +#endif //CONFIG_IEEE80211W + ) + { + ret = -EINVAL; + goto exit; + } + } else { + ret = -EINVAL; + goto exit; + } + + if (strcmp(param->u.crypt.alg, "WEP") == 0) + { + RT_TRACE(_module_rtl871x_ioctl_os_c,_drv_err_,("wpa_set_encryption, crypt.alg = WEP\n")); + DBG_8192C("wpa_set_encryption, crypt.alg = WEP\n"); + + wep_key_idx = param->u.crypt.idx; + wep_key_len = param->u.crypt.key_len; + + if ((wep_key_idx > WEP_KEYS) || (wep_key_len <= 0)) + { + ret = -EINVAL; + goto exit; + } + + if (psecuritypriv->bWepDefaultKeyIdxSet == 0) + { + //wep default key has not been set, so use this key index as default key. + + wep_key_len = wep_key_len <= 5 ? 5 : 13; + + psecuritypriv->ndisencryptstatus = Ndis802_11Encryption1Enabled; + psecuritypriv->dot11PrivacyAlgrthm = _WEP40_; + psecuritypriv->dot118021XGrpPrivacy = _WEP40_; + + if(wep_key_len==13) + { + psecuritypriv->dot11PrivacyAlgrthm = _WEP104_; + psecuritypriv->dot118021XGrpPrivacy = _WEP104_; + } + + psecuritypriv->dot11PrivacyKeyIndex = wep_key_idx; + } + + _rtw_memcpy(&(psecuritypriv->dot11DefKey[wep_key_idx].skey[0]), param->u.crypt.key, wep_key_len); + + psecuritypriv->dot11DefKeylen[wep_key_idx] = wep_key_len; + + rtw_set_key(padapter, psecuritypriv, wep_key_idx, 0); + + goto exit; + } + + if(padapter->securitypriv.dot11AuthAlgrthm == dot11AuthAlgrthm_8021X) // 802_1x + { + struct sta_info * psta,*pbcmc_sta; + struct sta_priv * pstapriv = &padapter->stapriv; + + //DBG_8192C("%s, : dot11AuthAlgrthm == dot11AuthAlgrthm_8021X \n", __func__); + + if (check_fwstate(pmlmepriv, WIFI_STATION_STATE | WIFI_MP_STATE) == _TRUE) //sta mode + { + psta = rtw_get_stainfo(pstapriv, get_bssid(pmlmepriv)); + if (psta == NULL) { + //DEBUG_ERR( ("Set wpa_set_encryption: Obtain Sta_info fail \n")); + DBG_8192C("%s, : Obtain Sta_info fail \n", __func__); + } + else + { + //Jeff: don't disable ieee8021x_blocked while clearing key + if (strcmp(param->u.crypt.alg, "none") != 0) + psta->ieee8021x_blocked = _FALSE; + + + if((padapter->securitypriv.ndisencryptstatus == Ndis802_11Encryption2Enabled)|| + (padapter->securitypriv.ndisencryptstatus == Ndis802_11Encryption3Enabled)) + { + psta->dot118021XPrivacy = padapter->securitypriv.dot11PrivacyAlgrthm; + } + + if(param->u.crypt.set_tx ==1)//pairwise key + { + + DBG_8192C("%s, : param->u.crypt.set_tx ==1 \n", __func__); + + _rtw_memcpy(psta->dot118021x_UncstKey.skey, param->u.crypt.key, (param->u.crypt.key_len>16 ?16:param->u.crypt.key_len)); + + if(strcmp(param->u.crypt.alg, "TKIP") == 0)//set mic key + { + //DEBUG_ERR(("\nset key length :param->u.crypt.key_len=%d\n", param->u.crypt.key_len)); + _rtw_memcpy(psta->dot11tkiptxmickey.skey, &(param->u.crypt.key[16]), 8); + _rtw_memcpy(psta->dot11tkiprxmickey.skey, &(param->u.crypt.key[24]), 8); + + padapter->securitypriv.busetkipkey=_FALSE; + //_set_timer(&padapter->securitypriv.tkip_timer, 50); + } + + //DEBUG_ERR((" param->u.crypt.key_len=%d\n",param->u.crypt.key_len)); + DBG_871X(" ~~~~set sta key:unicastkey\n"); + + rtw_setstakey_cmd(padapter, (unsigned char *)psta, _TRUE); + } + else//group key + { + if(strcmp(param->u.crypt.alg, "TKIP") == 0 || strcmp(param->u.crypt.alg, "CCMP") == 0) + { + _rtw_memcpy(padapter->securitypriv.dot118021XGrpKey[param->u.crypt.idx].skey, param->u.crypt.key,(param->u.crypt.key_len>16 ?16:param->u.crypt.key_len)); + _rtw_memcpy(padapter->securitypriv.dot118021XGrptxmickey[param->u.crypt.idx].skey,&(param->u.crypt.key[16]),8); + _rtw_memcpy(padapter->securitypriv.dot118021XGrprxmickey[param->u.crypt.idx].skey,&(param->u.crypt.key[24]),8); + padapter->securitypriv.binstallGrpkey = _TRUE; + //DEBUG_ERR((" param->u.crypt.key_len=%d\n", param->u.crypt.key_len)); + DBG_871X(" ~~~~set sta key:groupkey\n"); + + padapter->securitypriv.dot118021XGrpKeyid = param->u.crypt.idx; + + rtw_set_key(padapter,&padapter->securitypriv,param->u.crypt.idx, 1); + } +#ifdef CONFIG_IEEE80211W + else if(strcmp(param->u.crypt.alg, "BIP") == 0) + { + int no; + //DBG_871X("BIP key_len=%d , index=%d @@@@@@@@@@@@@@@@@@\n", param->u.crypt.key_len, param->u.crypt.idx); + //save the IGTK key, length 16 bytes + _rtw_memcpy(padapter->securitypriv.dot11wBIPKey[param->u.crypt.idx].skey, param->u.crypt.key,(param->u.crypt.key_len>16 ?16:param->u.crypt.key_len)); + /*DBG_871X("IGTK key below:\n"); + for(no=0;no<16;no++) + printk(" %02x ", padapter->securitypriv.dot11wBIPKey[param->u.crypt.idx].skey[no]); + DBG_871X("\n");*/ + padapter->securitypriv.dot11wBIPKeyid = param->u.crypt.idx; + padapter->securitypriv.binstallBIPkey = _TRUE; + DBG_871X(" ~~~~set sta key:IGKT\n"); + } +#endif //CONFIG_IEEE80211W + +#ifdef CONFIG_P2P + if(pwdinfo->driver_interface == DRIVER_CFG80211 ) + { + if(rtw_p2p_chk_state(pwdinfo, P2P_STATE_PROVISIONING_ING)) + { + rtw_p2p_set_state(pwdinfo, P2P_STATE_PROVISIONING_DONE); + } + } +#endif //CONFIG_P2P + + } + } + + pbcmc_sta=rtw_get_bcmc_stainfo(padapter); + if(pbcmc_sta==NULL) + { + //DEBUG_ERR( ("Set OID_802_11_ADD_KEY: bcmc stainfo is null \n")); + } + else + { + //Jeff: don't disable ieee8021x_blocked while clearing key + if (strcmp(param->u.crypt.alg, "none") != 0) + pbcmc_sta->ieee8021x_blocked = _FALSE; + + if((padapter->securitypriv.ndisencryptstatus == Ndis802_11Encryption2Enabled)|| + (padapter->securitypriv.ndisencryptstatus == Ndis802_11Encryption3Enabled)) + { + pbcmc_sta->dot118021XPrivacy = padapter->securitypriv.dot11PrivacyAlgrthm; + } + } + } + else if(check_fwstate(pmlmepriv, WIFI_ADHOC_STATE)) //adhoc mode + { + } + } + +exit: + + DBG_8192C("%s, ret=%d\n", __func__, ret); + + _func_exit_; + + return ret; +} + +static int cfg80211_rtw_add_key(struct wiphy *wiphy, struct net_device *ndev, +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,37)) || defined(COMPAT_KERNEL_RELEASE) + u8 key_index, bool pairwise, const u8 *mac_addr, +#else // (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,37)) + u8 key_index, const u8 *mac_addr, +#endif // (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,37)) + struct key_params *params) +{ + char *alg_name; + u32 param_len; + struct ieee_param *param = NULL; + int ret=0; + struct wireless_dev *rtw_wdev = wiphy_to_wdev(wiphy); + _adapter *padapter = wiphy_to_adapter(wiphy); + struct mlme_priv *pmlmepriv = &padapter->mlmepriv; + + DBG_871X(FUNC_NDEV_FMT" adding key for %pM\n", FUNC_NDEV_ARG(ndev), mac_addr); + DBG_871X("cipher=0x%x\n", params->cipher); + DBG_871X("key_len=0x%x\n", params->key_len); + DBG_871X("seq_len=0x%x\n", params->seq_len); + DBG_871X("key_index=%d\n", key_index); +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,37)) || defined(COMPAT_KERNEL_RELEASE) + DBG_871X("pairwise=%d\n", pairwise); +#endif // (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,37)) + + param_len = sizeof(struct ieee_param) + params->key_len; + param = (struct ieee_param *)rtw_malloc(param_len); + if (param == NULL) + return -1; + + _rtw_memset(param, 0, param_len); + + param->cmd = IEEE_CMD_SET_ENCRYPTION; + _rtw_memset(param->sta_addr, 0xff, ETH_ALEN); + + switch (params->cipher) { + case IW_AUTH_CIPHER_NONE: + //todo: remove key + //remove = 1; + alg_name = "none"; + break; + case WLAN_CIPHER_SUITE_WEP40: + case WLAN_CIPHER_SUITE_WEP104: + alg_name = "WEP"; + break; + case WLAN_CIPHER_SUITE_TKIP: + alg_name = "TKIP"; + break; + case WLAN_CIPHER_SUITE_CCMP: + alg_name = "CCMP"; + break; +#ifdef CONFIG_IEEE80211W + case WLAN_CIPHER_SUITE_AES_CMAC: + alg_name = "BIP"; + break; +#endif //CONFIG_IEEE80211W + default: + return -ENOTSUPP; + } + + strncpy((char *)param->u.crypt.alg, alg_name, IEEE_CRYPT_ALG_NAME_LEN); + + + if (!mac_addr || is_broadcast_ether_addr(mac_addr)) + { + param->u.crypt.set_tx = 0; //for wpa/wpa2 group key + } else { + param->u.crypt.set_tx = 1; //for wpa/wpa2 pairwise key + } + + + //param->u.crypt.idx = key_index - 1; + param->u.crypt.idx = key_index; + + if (params->seq_len && params->seq) + { + _rtw_memcpy(param->u.crypt.seq, params->seq, params->seq_len); + } + + if(params->key_len && params->key) + { + param->u.crypt.key_len = params->key_len; + _rtw_memcpy(param->u.crypt.key, params->key, params->key_len); + } + + if(check_fwstate(pmlmepriv, WIFI_STATION_STATE) == _TRUE) + { + ret = rtw_cfg80211_set_encryption(ndev, param, param_len); + } + else if(check_fwstate(pmlmepriv, WIFI_AP_STATE) == _TRUE) + { +#ifdef CONFIG_AP_MODE + if(mac_addr) + _rtw_memcpy(param->sta_addr, (void*)mac_addr, ETH_ALEN); + + ret = rtw_cfg80211_ap_set_encryption(ndev, param, param_len); +#endif + } + else + { + DBG_8192C("error! fw_state=0x%x, iftype=%d\n", pmlmepriv->fw_state, rtw_wdev->iftype); + + } + + if(param) + { + rtw_mfree((u8*)param, param_len); + } + + return ret; + +} + +static int cfg80211_rtw_get_key(struct wiphy *wiphy, struct net_device *ndev, +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,37)) || defined(COMPAT_KERNEL_RELEASE) + u8 key_index, bool pairwise, const u8 *mac_addr, +#else // (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,37)) + u8 key_index, const u8 *mac_addr, +#endif // (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,37)) + void *cookie, + void (*callback)(void *cookie, + struct key_params*)) +{ +#if 0 + struct iwm_priv *iwm = ndev_to_iwm(ndev); + struct iwm_key *key = &iwm->keys[key_index]; + struct key_params params; + + IWM_DBG_WEXT(iwm, DBG, "Getting key %d\n", key_index); + + memset(¶ms, 0, sizeof(params)); + + params.cipher = key->cipher; + params.key_len = key->key_len; + params.seq_len = key->seq_len; + params.seq = key->seq; + params.key = key->key; + + callback(cookie, ¶ms); + + return key->key_len ? 0 : -ENOENT; +#endif + DBG_871X(FUNC_NDEV_FMT"\n", FUNC_NDEV_ARG(ndev)); + return 0; +} + +static int cfg80211_rtw_del_key(struct wiphy *wiphy, struct net_device *ndev, +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,37)) || defined(COMPAT_KERNEL_RELEASE) + u8 key_index, bool pairwise, const u8 *mac_addr) +#else // (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,37)) + u8 key_index, const u8 *mac_addr) +#endif // (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,37)) +{ + _adapter *padapter = (_adapter *)rtw_netdev_priv(ndev); + struct security_priv *psecuritypriv = &padapter->securitypriv; + + DBG_871X(FUNC_NDEV_FMT" key_index=%d\n", FUNC_NDEV_ARG(ndev), key_index); + + if (key_index == psecuritypriv->dot11PrivacyKeyIndex) + { + //clear the flag of wep default key set. + psecuritypriv->bWepDefaultKeyIdxSet = 0; + } + + return 0; +} + +static int cfg80211_rtw_set_default_key(struct wiphy *wiphy, + struct net_device *ndev, u8 key_index + #if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,38)) || defined(COMPAT_KERNEL_RELEASE) + , bool unicast, bool multicast + #endif + ) +{ + _adapter *padapter = (_adapter *)rtw_netdev_priv(ndev); + struct security_priv *psecuritypriv = &padapter->securitypriv; + + DBG_871X(FUNC_NDEV_FMT" key_index=%d" + #if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,38)) || defined(COMPAT_KERNEL_RELEASE) + ", unicast=%d, multicast=%d" + #endif + ".\n", FUNC_NDEV_ARG(ndev), key_index + #if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,38)) || defined(COMPAT_KERNEL_RELEASE) + , unicast, multicast + #endif + ); + + if ((key_index < WEP_KEYS) && ((psecuritypriv->dot11PrivacyAlgrthm == _WEP40_) || (psecuritypriv->dot11PrivacyAlgrthm == _WEP104_))) //set wep default key + { + psecuritypriv->ndisencryptstatus = Ndis802_11Encryption1Enabled; + + psecuritypriv->dot11PrivacyKeyIndex = key_index; + + psecuritypriv->dot11PrivacyAlgrthm = _WEP40_; + psecuritypriv->dot118021XGrpPrivacy = _WEP40_; + if (psecuritypriv->dot11DefKeylen[key_index] == 13) + { + psecuritypriv->dot11PrivacyAlgrthm = _WEP104_; + psecuritypriv->dot118021XGrpPrivacy = _WEP104_; + } + + psecuritypriv->bWepDefaultKeyIdxSet = 1; //set the flag to represent that wep default key has been set + } + + return 0; + +} + +static int cfg80211_rtw_get_station(struct wiphy *wiphy, + struct net_device *ndev, + u8 *mac, struct station_info *sinfo) +{ + int ret = 0; + _adapter *padapter = wiphy_to_adapter(wiphy); + struct mlme_priv *pmlmepriv = &padapter->mlmepriv; + struct sta_info *psta = NULL; + struct sta_priv *pstapriv = &padapter->stapriv; + + sinfo->filled = 0; + + if (!mac) { + DBG_871X(FUNC_NDEV_FMT" mac==%p\n", FUNC_NDEV_ARG(ndev), mac); + ret = -ENOENT; + goto exit; + } + + psta = rtw_get_stainfo(pstapriv, mac); + if (psta == NULL) { + DBG_8192C("%s, sta_info is null\n", __func__); + ret = -ENOENT; + goto exit; + } + +#ifdef CONFIG_DEBUG_CFG80211 + DBG_871X(FUNC_NDEV_FMT" mac="MAC_FMT"\n", FUNC_NDEV_ARG(ndev), MAC_ARG(mac)); +#endif + + //for infra./P2PClient mode + if( check_fwstate(pmlmepriv, WIFI_STATION_STATE) + && check_fwstate(pmlmepriv, _FW_LINKED) + ) + { + struct wlan_network *cur_network = &(pmlmepriv->cur_network); + + if (_rtw_memcmp(mac, cur_network->network.MacAddress, ETH_ALEN) == _FALSE) { + DBG_871X("%s, mismatch bssid="MAC_FMT"\n", __func__, MAC_ARG(cur_network->network.MacAddress)); + ret = -ENOENT; + goto exit; + } + + sinfo->filled |= STATION_INFO_SIGNAL; + sinfo->signal = translate_percentage_to_dbm(padapter->recvpriv.signal_strength); + + sinfo->filled |= STATION_INFO_TX_BITRATE; + sinfo->txrate.legacy = rtw_get_cur_max_rate(padapter); + + sinfo->filled |= STATION_INFO_RX_PACKETS; + sinfo->rx_packets = sta_rx_data_pkts(psta); + + sinfo->filled |= STATION_INFO_TX_PACKETS; + sinfo->tx_packets = psta->sta_stats.tx_pkts; + + } + + //for Ad-Hoc/AP mode + if ((check_fwstate(pmlmepriv, WIFI_ADHOC_STATE) + ||check_fwstate(pmlmepriv, WIFI_ADHOC_MASTER_STATE) + ||check_fwstate(pmlmepriv, WIFI_AP_STATE)) + && check_fwstate(pmlmepriv, _FW_LINKED) + ) + { + //TODO: should acquire station info... + } + +exit: + return ret; +} + +extern int netdev_open(struct net_device *pnetdev); +#ifdef CONFIG_CONCURRENT_MODE +extern int netdev_if2_open(struct net_device *pnetdev); +#endif + +/* +enum nl80211_iftype { + NL80211_IFTYPE_UNSPECIFIED, + NL80211_IFTYPE_ADHOC, //1 + NL80211_IFTYPE_STATION, //2 + NL80211_IFTYPE_AP, //3 + NL80211_IFTYPE_AP_VLAN, + NL80211_IFTYPE_WDS, + NL80211_IFTYPE_MONITOR, //6 + NL80211_IFTYPE_MESH_POINT, + NL80211_IFTYPE_P2P_CLIENT, //8 + NL80211_IFTYPE_P2P_GO, //9 + //keep last + NUM_NL80211_IFTYPES, + NL80211_IFTYPE_MAX = NUM_NL80211_IFTYPES - 1 +}; +*/ +static int cfg80211_rtw_change_iface(struct wiphy *wiphy, + struct net_device *ndev, + enum nl80211_iftype type, u32 *flags, + struct vif_params *params) +{ + enum nl80211_iftype old_type; + NDIS_802_11_NETWORK_INFRASTRUCTURE networkType ; + _adapter *padapter = wiphy_to_adapter(wiphy); + struct mlme_ext_priv *pmlmeext = &(padapter->mlmeextpriv); + struct wireless_dev *rtw_wdev = wiphy_to_wdev(wiphy); + struct mlme_priv *pmlmepriv = &padapter->mlmepriv; + _irqL irqL; + _queue *queue = &pmlmepriv->scanned_queue; +#ifdef CONFIG_P2P + struct wifidirect_info *pwdinfo= &(padapter->wdinfo); +#endif + int ret = 0; + u8 change = _FALSE; + + if (adapter_to_dvobj(padapter)->processing_dev_remove == _TRUE) { + ret= -EPERM; + goto exit; + } + +#ifdef CONFIG_CONCURRENT_MODE + if(padapter->adapter_type == SECONDARY_ADAPTER) + { + DBG_871X(FUNC_NDEV_FMT" call netdev_if2_open\n", FUNC_NDEV_ARG(ndev)); + if(netdev_if2_open(ndev) != 0) { + ret= -EPERM; + goto exit; + } + } + else if(padapter->adapter_type == PRIMARY_ADAPTER) +#endif //CONFIG_CONCURRENT_MODE + { + DBG_871X(FUNC_NDEV_FMT" call netdev_open\n", FUNC_NDEV_ARG(ndev)); + if(netdev_open(ndev) != 0) { + ret= -EPERM; + goto exit; + } + } + + if(_FAIL == rtw_pwr_wakeup(padapter)) { + ret= -EPERM; + goto exit; + } + + old_type = rtw_wdev->iftype; + DBG_871X(FUNC_NDEV_FMT" old_iftype=%d, new_iftype=%d\n", + FUNC_NDEV_ARG(ndev), old_type, type); + + if(old_type != type) + { + change = _TRUE; + pmlmeext->action_public_rxseq = 0xffff; + pmlmeext->action_public_dialog_token = 0xff; + } + + switch (type) { + case NL80211_IFTYPE_ADHOC: + networkType = Ndis802_11IBSS; + break; +#if defined(CONFIG_P2P) && ((LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,37)) || defined(COMPAT_KERNEL_RELEASE)) + case NL80211_IFTYPE_P2P_CLIENT: +#endif + case NL80211_IFTYPE_STATION: + networkType = Ndis802_11Infrastructure; + #ifdef CONFIG_P2P + if(pwdinfo->driver_interface == DRIVER_CFG80211 ) + { + if(change && rtw_p2p_chk_role(pwdinfo, P2P_ROLE_GO)) + { + _cancel_timer_ex( &pwdinfo->find_phase_timer ); + _cancel_timer_ex( &pwdinfo->restore_p2p_state_timer ); + _cancel_timer_ex( &pwdinfo->pre_tx_scan_timer); + + //it means remove GO and change mode from AP(GO) to station(P2P DEVICE) + rtw_p2p_set_role(pwdinfo, P2P_ROLE_DEVICE); + rtw_p2p_set_state(pwdinfo, rtw_p2p_pre_state(pwdinfo)); + + DBG_8192C("%s, role=%d, p2p_state=%d, pre_p2p_state=%d\n", __func__, rtw_p2p_role(pwdinfo), rtw_p2p_state(pwdinfo), rtw_p2p_pre_state(pwdinfo)); + } + } + #endif //CONFIG_P2P + break; +#if defined(CONFIG_P2P) && ((LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,37)) || defined(COMPAT_KERNEL_RELEASE)) + case NL80211_IFTYPE_P2P_GO: +#endif + case NL80211_IFTYPE_AP: + networkType = Ndis802_11APMode; + #ifdef CONFIG_P2P + if(pwdinfo->driver_interface == DRIVER_CFG80211 ) + { + if(change && !rtw_p2p_chk_state(pwdinfo, P2P_STATE_NONE)) + { + //it means P2P Group created, we will be GO and change mode from P2P DEVICE to AP(GO) + rtw_p2p_set_role(pwdinfo, P2P_ROLE_GO); + } + } + #endif //CONFIG_P2P + break; + default: + return -EOPNOTSUPP; + } + + rtw_wdev->iftype = type; + + _enter_critical_bh(&pmlmepriv->lock, &irqL); + _enter_critical_bh(&queue->lock, &irqL); + + if (rtw_set_802_11_infrastructure_mode(padapter, networkType) ==_FALSE) + { + rtw_wdev->iftype = old_type; + ret = -EPERM; + _exit_critical_bh(&queue->lock, &irqL); + _exit_critical_bh(&pmlmepriv->lock, &irqL); + goto exit; + } + _exit_critical_bh(&queue->lock, &irqL); + _exit_critical_bh(&pmlmepriv->lock, &irqL); + + rtw_setopmode_cmd(padapter, networkType); + +exit: + + return ret; +} + +void rtw_cfg80211_indicate_scan_done(struct rtw_wdev_priv *pwdev_priv, bool aborted) +{ + _irqL irqL; + + _enter_critical_bh(&pwdev_priv->scan_req_lock, &irqL); + if(pwdev_priv->scan_request != NULL) + { + //struct cfg80211_scan_request *scan_request = pwdev_priv->scan_request; + + #ifdef CONFIG_DEBUG_CFG80211 + DBG_871X("%s with scan req\n", __FUNCTION__); + #endif + + //avoid WARN_ON(request != wiphy_to_dev(request->wiphy)->scan_req); + //if(scan_request == wiphy_to_dev(scan_request->wiphy)->scan_req) + if(pwdev_priv->scan_request->wiphy != pwdev_priv->rtw_wdev->wiphy) + { + DBG_8192C("error wiphy compare\n"); + } + else + { + cfg80211_scan_done(pwdev_priv->scan_request, aborted); + } + + pwdev_priv->scan_request = NULL; + + } else { + #ifdef CONFIG_DEBUG_CFG80211 + DBG_871X("%s without scan req\n", __FUNCTION__); + #endif + } + _exit_critical_bh(&pwdev_priv->scan_req_lock, &irqL); +} + +void rtw_cfg80211_surveydone_event_callback(_adapter *padapter) +{ + _irqL irqL; + _list *plist, *phead; + struct mlme_priv *pmlmepriv = &(padapter->mlmepriv); + _queue *queue = &(pmlmepriv->scanned_queue); + struct wlan_network *pnetwork = NULL; + u32 cnt=0; + u32 wait_for_surveydone; + sint wait_status; +#ifdef CONFIG_P2P + struct wifidirect_info* pwdinfo = &padapter->wdinfo; +#endif //CONFIG_P2P + struct rtw_wdev_priv *pwdev_priv = wdev_to_priv(padapter->rtw_wdev); + struct pwrctrl_priv *pwrpriv = &padapter->pwrctrlpriv; + +#ifdef CONFIG_DEBUG_CFG80211 + DBG_8192C("%s\n", __func__); +#endif + + _enter_critical_bh(&(pmlmepriv->scanned_queue.lock), &irqL); + + phead = get_list_head(queue); + plist = get_next(phead); + + while(1) + { + if (rtw_end_of_queue_search(phead,plist)== _TRUE) + break; + + pnetwork = LIST_CONTAINOR(plist, struct wlan_network, list); + + //report network only if the current channel set contains the channel to which this network belongs + if(rtw_ch_set_search_ch(padapter->mlmeextpriv.channel_set, pnetwork->network.Configuration.DSConfig) >= 0 + && rtw_mlme_band_check(padapter, pnetwork->network.Configuration.DSConfig) == _TRUE + && _TRUE == rtw_validate_ssid(&(pnetwork->network.Ssid)) + ) + { + //ev=translate_scan(padapter, a, pnetwork, ev, stop); + rtw_cfg80211_inform_bss(padapter, pnetwork); + } + + plist = get_next(plist); + + } + + _exit_critical_bh(&(pmlmepriv->scanned_queue.lock), &irqL); + + //call this after other things have been done + rtw_cfg80211_indicate_scan_done(wdev_to_priv(padapter->rtw_wdev), _FALSE); +} + +static int rtw_cfg80211_set_probe_req_wpsp2pie(_adapter *padapter, char *buf, int len) +{ + int ret = 0; + uint wps_ielen = 0; + u8 *wps_ie; + u32 p2p_ielen = 0; + u8 *p2p_ie; + u32 wfd_ielen = 0; + u8 *wfd_ie; + struct mlme_priv *pmlmepriv = &(padapter->mlmepriv); + +#ifdef CONFIG_DEBUG_CFG80211 + DBG_8192C("%s, ielen=%d\n", __func__, len); +#endif + + if(len>0) + { + if((wps_ie = rtw_get_wps_ie(buf, len, NULL, &wps_ielen))) + { + #ifdef CONFIG_DEBUG_CFG80211 + DBG_8192C("probe_req_wps_ielen=%d\n", wps_ielen); + #endif + + if(pmlmepriv->wps_probe_req_ie) + { + u32 free_len = pmlmepriv->wps_probe_req_ie_len; + pmlmepriv->wps_probe_req_ie_len = 0; + rtw_mfree(pmlmepriv->wps_probe_req_ie, free_len); + pmlmepriv->wps_probe_req_ie = NULL; + } + + pmlmepriv->wps_probe_req_ie = rtw_malloc(wps_ielen); + if ( pmlmepriv->wps_probe_req_ie == NULL) { + DBG_8192C("%s()-%d: rtw_malloc() ERROR!\n", __FUNCTION__, __LINE__); + return -EINVAL; + + } + _rtw_memcpy(pmlmepriv->wps_probe_req_ie, wps_ie, wps_ielen); + pmlmepriv->wps_probe_req_ie_len = wps_ielen; + } + + //buf += wps_ielen; + //len -= wps_ielen; + + #ifdef CONFIG_P2P + if((p2p_ie=rtw_get_p2p_ie(buf, len, NULL, &p2p_ielen))) + { + struct wifidirect_info *wdinfo = &padapter->wdinfo; + u32 attr_contentlen = 0; + u8 listen_ch_attr[5]; + + #ifdef CONFIG_DEBUG_CFG80211 + DBG_8192C("probe_req_p2p_ielen=%d\n", p2p_ielen); + #endif + + if(pmlmepriv->p2p_probe_req_ie) + { + u32 free_len = pmlmepriv->p2p_probe_req_ie_len; + pmlmepriv->p2p_probe_req_ie_len = 0; + rtw_mfree(pmlmepriv->p2p_probe_req_ie, free_len); + pmlmepriv->p2p_probe_req_ie = NULL; + } + + pmlmepriv->p2p_probe_req_ie = rtw_malloc(p2p_ielen); + if ( pmlmepriv->p2p_probe_req_ie == NULL) { + DBG_8192C("%s()-%d: rtw_malloc() ERROR!\n", __FUNCTION__, __LINE__); + return -EINVAL; + + } + _rtw_memcpy(pmlmepriv->p2p_probe_req_ie, p2p_ie, p2p_ielen); + pmlmepriv->p2p_probe_req_ie_len = p2p_ielen; + + if(rtw_get_p2p_attr_content(p2p_ie, p2p_ielen, P2P_ATTR_LISTEN_CH, (u8*)listen_ch_attr, (uint*) &attr_contentlen) + && attr_contentlen == 5) + { + if (wdinfo->listen_channel != listen_ch_attr[4]) { + DBG_871X(FUNC_ADPT_FMT" listen channel - country:%c%c%c, class:%u, ch:%u\n", + FUNC_ADPT_ARG(padapter), listen_ch_attr[0], listen_ch_attr[1], listen_ch_attr[2], + listen_ch_attr[3], listen_ch_attr[4]); + wdinfo->listen_channel = listen_ch_attr[4]; + } + } + } + #endif //CONFIG_P2P + + //buf += p2p_ielen; + //len -= p2p_ielen; + + #ifdef CONFIG_WFD + if(rtw_get_wfd_ie(buf, len, NULL, &wfd_ielen)) + { + #ifdef CONFIG_DEBUG_CFG80211 + DBG_8192C("probe_req_wfd_ielen=%d\n", wfd_ielen); + #endif + + if(pmlmepriv->wfd_probe_req_ie) + { + u32 free_len = pmlmepriv->wfd_probe_req_ie_len; + pmlmepriv->wfd_probe_req_ie_len = 0; + rtw_mfree(pmlmepriv->wfd_probe_req_ie, free_len); + pmlmepriv->wfd_probe_req_ie = NULL; + } + + pmlmepriv->wfd_probe_req_ie = rtw_malloc(wfd_ielen); + if ( pmlmepriv->wfd_probe_req_ie == NULL) { + DBG_8192C("%s()-%d: rtw_malloc() ERROR!\n", __FUNCTION__, __LINE__); + return -EINVAL; + + } + rtw_get_wfd_ie(buf, len, pmlmepriv->wfd_probe_req_ie, &pmlmepriv->wfd_probe_req_ie_len); + } + #endif //CONFIG_WFD + + } + + return ret; + +} + +static int cfg80211_rtw_scan(struct wiphy *wiphy + #if (LINUX_VERSION_CODE < KERNEL_VERSION(3, 6, 0)) + , struct net_device *ndev + #endif + , struct cfg80211_scan_request *request) +{ + int i; + u8 _status = _FALSE; + int ret = 0; + _adapter *padapter = wiphy_to_adapter(wiphy); + struct mlme_priv *pmlmepriv= &padapter->mlmepriv; + NDIS_802_11_SSID ssid[RTW_SSID_SCAN_AMOUNT]; + struct rtw_ieee80211_channel ch[RTW_CHANNEL_SCAN_AMOUNT]; + _irqL irqL; + u8 *wps_ie=NULL; + uint wps_ielen=0; + u8 *p2p_ie=NULL; + uint p2p_ielen=0; + u8 survey_times=3; + u8 survey_times_for_one_ch=6; +#ifdef CONFIG_P2P + struct wifidirect_info *pwdinfo= &(padapter->wdinfo); +#endif //CONFIG_P2P + struct rtw_wdev_priv *pwdev_priv = wdev_to_priv(padapter->rtw_wdev); + struct cfg80211_ssid *ssids = request->ssids; + int social_channel = 0, j = 0; + bool need_indicate_scan_done = _FALSE; +#ifdef CONFIG_CONCURRENT_MODE + PADAPTER pbuddy_adapter = NULL; + struct mlme_priv *pbuddy_mlmepriv = NULL; +#endif //CONFIG_CONCURRENT_MODE + +//#ifdef CONFIG_DEBUG_CFG80211 + DBG_871X(FUNC_ADPT_FMT"\n", FUNC_ADPT_ARG(padapter)); +//#endif + +#ifdef CONFIG_CONCURRENT_MODE + if (padapter->pbuddy_adapter) { + pbuddy_adapter = padapter->pbuddy_adapter; + pbuddy_mlmepriv = &(pbuddy_adapter->mlmepriv); + } +#endif //CONFIG_CONCURRENT_MODE + +#ifdef CONFIG_MP_INCLUDED + if (check_fwstate(pmlmepriv, WIFI_MP_STATE) == _TRUE) + { + ret = -EPERM; + goto exit; + } +#endif + + _enter_critical_bh(&pwdev_priv->scan_req_lock, &irqL); + pwdev_priv->scan_request = request; + _exit_critical_bh(&pwdev_priv->scan_req_lock, &irqL); + + if (check_fwstate(pmlmepriv, WIFI_AP_STATE) == _TRUE) + { +#ifdef CONFIG_DEBUG_CFG80211 + DBG_871X("%s under WIFI_AP_STATE\n", __FUNCTION__); +#endif + + if (check_fwstate(pmlmepriv, WIFI_UNDER_WPS|_FW_UNDER_SURVEY|_FW_UNDER_LINKING) == _TRUE) + { + DBG_8192C("%s, fwstate=0x%x\n", __func__, pmlmepriv->fw_state); + + if(check_fwstate(pmlmepriv, WIFI_UNDER_WPS)) + { + DBG_8192C("AP mode process WPS \n"); + } + + need_indicate_scan_done = _TRUE; + goto check_need_indicate_scan_done; + } + } + + if(_FAIL == rtw_pwr_wakeup(padapter)) { + need_indicate_scan_done = _TRUE; + goto check_need_indicate_scan_done; + } + + #ifdef CONFIG_P2P + if( pwdinfo->driver_interface == DRIVER_CFG80211 ) + { + if(ssids->ssid != NULL + && _rtw_memcmp(ssids->ssid, "DIRECT-", 7) + && rtw_get_p2p_ie((u8 *)request->ie, request->ie_len, NULL, NULL) + ) + { + if(rtw_p2p_chk_state(pwdinfo, P2P_STATE_NONE)) + { + u32 initialgain = 0x30; + rtw_p2p_enable(padapter, P2P_ROLE_DEVICE); + wdev_to_priv(padapter->rtw_wdev)->p2p_enabled = _TRUE; + padapter->HalFunc.SetHwRegHandler(padapter, HW_VAR_INITIAL_GAIN, (u8 *)&(initialgain)); + padapter->HalFunc.SetHwRegHandler(padapter, HW_VAR_INITIAL_GAIN, (u8 *)&(initialgain)); + } + else + { + rtw_p2p_set_pre_state(pwdinfo, rtw_p2p_state(pwdinfo)); + #ifdef CONFIG_DEBUG_CFG80211 + DBG_8192C("%s, role=%d, p2p_state=%d\n", __func__, rtw_p2p_role(pwdinfo), rtw_p2p_state(pwdinfo)); + #endif + } + rtw_p2p_set_state(pwdinfo, P2P_STATE_LISTEN); + + if(request->n_channels == 3 && + request->channels[0]->hw_value == 1 && + request->channels[1]->hw_value == 6 && + request->channels[2]->hw_value == 11 + ) + { + social_channel = 1; + } + } + } + #endif //CONFIG_P2P + + if(request->ie && request->ie_len>0) + { + rtw_cfg80211_set_probe_req_wpsp2pie(padapter, (u8 *)request->ie, request->ie_len ); + } + + if (pmlmepriv->LinkDetectInfo.bBusyTraffic == _TRUE) + { + DBG_8192C("%s, bBusyTraffic == _TRUE\n", __func__); + need_indicate_scan_done = _TRUE; + goto check_need_indicate_scan_done; + } + if (rtw_is_scan_deny(padapter)){ + DBG_871X(FUNC_ADPT_FMT ": scan deny\n", FUNC_ADPT_ARG(padapter)); + need_indicate_scan_done = _TRUE; + goto check_need_indicate_scan_done; + } + +#ifdef CONFIG_CONCURRENT_MODE + if(pbuddy_mlmepriv && (pbuddy_mlmepriv->LinkDetectInfo.bBusyTraffic == _TRUE)) + { + DBG_8192C("%s, bBusyTraffic == _TRUE at buddy_intf\n", __func__); + need_indicate_scan_done = _TRUE; + goto check_need_indicate_scan_done; + } +#endif //CONFIG_CONCURRENT_MODE + + if (check_fwstate(pmlmepriv, _FW_UNDER_SURVEY|_FW_UNDER_LINKING) == _TRUE) + { + DBG_8192C("%s, fwstate=0x%x\n", __func__, pmlmepriv->fw_state); + need_indicate_scan_done = _TRUE; + goto check_need_indicate_scan_done; + } + +#ifdef CONFIG_CONCURRENT_MODE + if (check_buddy_fwstate(padapter, + _FW_UNDER_SURVEY|_FW_UNDER_LINKING|WIFI_UNDER_WPS) == _TRUE) + { + if(check_buddy_fwstate(padapter, _FW_UNDER_SURVEY)) + { + DBG_8192C("scanning_via_buddy_intf\n"); + pmlmepriv->scanning_via_buddy_intf = _TRUE; + } + + DBG_8192C("buddy_intf's mlme state:0x%x\n", pbuddy_mlmepriv->fw_state); + + need_indicate_scan_done = _TRUE; + goto check_need_indicate_scan_done; + } +#endif + + +#ifdef CONFIG_P2P + if( pwdinfo->driver_interface == DRIVER_CFG80211 ) + { + if(!rtw_p2p_chk_state(pwdinfo, P2P_STATE_NONE) && !rtw_p2p_chk_state(pwdinfo, P2P_STATE_IDLE)) + { + rtw_p2p_set_state(pwdinfo, P2P_STATE_FIND_PHASE_SEARCH); + rtw_free_network_queue(padapter, _TRUE); + + if(social_channel == 0) + rtw_p2p_findphase_ex_set(pwdinfo, P2P_FINDPHASE_EX_NONE); + else + rtw_p2p_findphase_ex_set(pwdinfo, P2P_FINDPHASE_EX_SOCIAL_LAST); + } + } +#endif //CONFIG_P2P + + + _rtw_memset(ssid, 0, sizeof(NDIS_802_11_SSID)*RTW_SSID_SCAN_AMOUNT); + //parsing request ssids, n_ssids + for (i = 0; i < request->n_ssids && i < RTW_SSID_SCAN_AMOUNT; i++) { + #ifdef CONFIG_DEBUG_CFG80211 + DBG_8192C("ssid=%s, len=%d\n", ssids[i].ssid, ssids[i].ssid_len); + #endif + _rtw_memcpy(ssid[i].Ssid, ssids[i].ssid, ssids[i].ssid_len); + ssid[i].SsidLength = ssids[i].ssid_len; + } + + + /* parsing channels, n_channels */ + _rtw_memset(ch, 0, sizeof(struct rtw_ieee80211_channel)*RTW_CHANNEL_SCAN_AMOUNT); + for (i=0;in_channels && ichannels[i])); + #endif + ch[i].hw_value = request->channels[i]->hw_value; + ch[i].flags = request->channels[i]->flags; + } + + _enter_critical_bh(&pmlmepriv->lock, &irqL); + if (request->n_channels == 1) { + for(i=1;in_channels == 2) { + _rtw_memcpy(&ch[3], &ch[1], sizeof(struct rtw_ieee80211_channel)); + for(i=1;ilock, &irqL); + + + if(_status == _FALSE) + { + ret = -1; + } + +check_need_indicate_scan_done: + if(need_indicate_scan_done) + rtw_cfg80211_surveydone_event_callback(padapter); + +exit: + + return ret; + +} + +static int cfg80211_rtw_set_wiphy_params(struct wiphy *wiphy, u32 changed) +{ +#if 0 + struct iwm_priv *iwm = wiphy_to_iwm(wiphy); + + if (changed & WIPHY_PARAM_RTS_THRESHOLD && + (iwm->conf.rts_threshold != wiphy->rts_threshold)) { + int ret; + + iwm->conf.rts_threshold = wiphy->rts_threshold; + + ret = iwm_umac_set_config_fix(iwm, UMAC_PARAM_TBL_CFG_FIX, + CFG_RTS_THRESHOLD, + iwm->conf.rts_threshold); + if (ret < 0) + return ret; + } + + if (changed & WIPHY_PARAM_FRAG_THRESHOLD && + (iwm->conf.frag_threshold != wiphy->frag_threshold)) { + int ret; + + iwm->conf.frag_threshold = wiphy->frag_threshold; + + ret = iwm_umac_set_config_fix(iwm, UMAC_PARAM_TBL_FA_CFG_FIX, + CFG_FRAG_THRESHOLD, + iwm->conf.frag_threshold); + if (ret < 0) + return ret; + } +#endif + DBG_8192C("%s\n", __func__); + return 0; +} + +static int cfg80211_rtw_join_ibss(struct wiphy *wiphy, struct net_device *ndev, + struct cfg80211_ibss_params *params) +{ +#if 0 + struct iwm_priv *iwm = wiphy_to_iwm(wiphy); + struct ieee80211_channel *chan = params->channel; + + if (!test_bit(IWM_STATUS_READY, &iwm->status)) + return -EIO; + + /* UMAC doesn't support creating or joining an IBSS network + * with specified bssid. */ + if (params->bssid) + return -EOPNOTSUPP; + + iwm->channel = ieee80211_frequency_to_channel(chan->center_freq); + iwm->umac_profile->ibss.band = chan->band; + iwm->umac_profile->ibss.channel = iwm->channel; + iwm->umac_profile->ssid.ssid_len = params->ssid_len; + memcpy(iwm->umac_profile->ssid.ssid, params->ssid, params->ssid_len); + + return iwm_send_mlme_profile(iwm); +#endif + DBG_871X(FUNC_NDEV_FMT"\n", FUNC_NDEV_ARG(ndev)); + return 0; +} + +static int cfg80211_rtw_leave_ibss(struct wiphy *wiphy, struct net_device *ndev) +{ +#if 0 + struct iwm_priv *iwm = wiphy_to_iwm(wiphy); + + if (iwm->umac_profile_active) + return iwm_invalidate_mlme_profile(iwm); +#endif + DBG_871X(FUNC_NDEV_FMT"\n", FUNC_NDEV_ARG(ndev)); + return 0; +} + +static int rtw_cfg80211_set_wpa_version(struct security_priv *psecuritypriv, u32 wpa_version) +{ + DBG_8192C("%s, wpa_version=%d\n", __func__, wpa_version); + + if (!wpa_version) { + psecuritypriv->ndisauthtype = Ndis802_11AuthModeOpen; + return 0; + } + + + if (wpa_version & (NL80211_WPA_VERSION_1 | NL80211_WPA_VERSION_2)) + { + psecuritypriv->ndisauthtype = Ndis802_11AuthModeWPAPSK; + } + +/* + if (wpa_version & NL80211_WPA_VERSION_2) + { + psecuritypriv->ndisauthtype = Ndis802_11AuthModeWPA2PSK; + } +*/ + + return 0; + +} + +static int rtw_cfg80211_set_auth_type(struct security_priv *psecuritypriv, + enum nl80211_auth_type sme_auth_type) +{ + DBG_8192C("%s, nl80211_auth_type=%d\n", __func__, sme_auth_type); + + + switch (sme_auth_type) { + case NL80211_AUTHTYPE_AUTOMATIC: + + psecuritypriv->dot11AuthAlgrthm = dot11AuthAlgrthm_Auto; + + break; + case NL80211_AUTHTYPE_OPEN_SYSTEM: + + psecuritypriv->dot11AuthAlgrthm = dot11AuthAlgrthm_Open; + + if(psecuritypriv->ndisauthtype>Ndis802_11AuthModeWPA) + psecuritypriv->dot11AuthAlgrthm = dot11AuthAlgrthm_8021X; + + break; + case NL80211_AUTHTYPE_SHARED_KEY: + + psecuritypriv->dot11AuthAlgrthm = dot11AuthAlgrthm_Shared; + + psecuritypriv->ndisencryptstatus = Ndis802_11Encryption1Enabled; + + + break; + default: + psecuritypriv->dot11AuthAlgrthm = dot11AuthAlgrthm_Open; + //return -ENOTSUPP; + } + + return 0; + +} + +static int rtw_cfg80211_set_cipher(struct security_priv *psecuritypriv, u32 cipher, bool ucast) +{ + u32 ndisencryptstatus = Ndis802_11EncryptionDisabled; + + u32 *profile_cipher = ucast ? &psecuritypriv->dot11PrivacyAlgrthm : + &psecuritypriv->dot118021XGrpPrivacy; + + DBG_8192C("%s, ucast=%d, cipher=0x%x\n", __func__, ucast, cipher); + + + if (!cipher) { + *profile_cipher = _NO_PRIVACY_; + psecuritypriv->ndisencryptstatus = ndisencryptstatus; + return 0; + } + + switch (cipher) { + case IW_AUTH_CIPHER_NONE: + *profile_cipher = _NO_PRIVACY_; + ndisencryptstatus = Ndis802_11EncryptionDisabled; + break; + case WLAN_CIPHER_SUITE_WEP40: + *profile_cipher = _WEP40_; + ndisencryptstatus = Ndis802_11Encryption1Enabled; + break; + case WLAN_CIPHER_SUITE_WEP104: + *profile_cipher = _WEP104_; + ndisencryptstatus = Ndis802_11Encryption1Enabled; + break; + case WLAN_CIPHER_SUITE_TKIP: + *profile_cipher = _TKIP_; + ndisencryptstatus = Ndis802_11Encryption2Enabled; + break; + case WLAN_CIPHER_SUITE_CCMP: + *profile_cipher = _AES_; + ndisencryptstatus = Ndis802_11Encryption3Enabled; + break; + default: + DBG_8192C("Unsupported cipher: 0x%x\n", cipher); + return -ENOTSUPP; + } + + if(ucast) + { + psecuritypriv->ndisencryptstatus = ndisencryptstatus; + + //if(psecuritypriv->dot11PrivacyAlgrthm >= _AES_) + // psecuritypriv->ndisauthtype = Ndis802_11AuthModeWPA2PSK; + } + + return 0; +} + +static int rtw_cfg80211_set_key_mgt(struct security_priv *psecuritypriv, u32 key_mgt) +{ + DBG_8192C("%s, key_mgt=0x%x\n", __func__, key_mgt); + + if (key_mgt == WLAN_AKM_SUITE_8021X) + //*auth_type = UMAC_AUTH_TYPE_8021X; + psecuritypriv->dot11AuthAlgrthm = dot11AuthAlgrthm_8021X; + else if (key_mgt == WLAN_AKM_SUITE_PSK) { + psecuritypriv->dot11AuthAlgrthm = dot11AuthAlgrthm_8021X; + } else { + DBG_8192C("Invalid key mgt: 0x%x\n", key_mgt); + //return -EINVAL; + } + + return 0; +} + +static int rtw_cfg80211_set_wpa_ie(_adapter *padapter, u8 *pie, size_t ielen) +{ + u8 *buf=NULL, *pos=NULL; + u32 left; + int group_cipher = 0, pairwise_cipher = 0; + int ret = 0; + int wpa_ielen=0; + int wpa2_ielen=0; + u8 *pwpa, *pwpa2; + u8 null_addr[]= {0,0,0,0,0,0}; + + if (pie == NULL || !ielen) { + /* Treat this as normal case, but need to clear WIFI_UNDER_WPS */ + _clr_fwstate_(&padapter->mlmepriv, WIFI_UNDER_WPS); + goto exit; + } + + if (ielen > MAX_WPA_IE_LEN+MAX_WPS_IE_LEN+MAX_P2P_IE_LEN) { + ret = -EINVAL; + goto exit; + } + + buf = rtw_zmalloc(ielen); + if (buf == NULL){ + ret = -ENOMEM; + goto exit; + } + + _rtw_memcpy(buf, pie , ielen); + + //dump + { + int i; + DBG_8192C("set wpa_ie(length:%zu):\n", ielen); + for(i=0;i0) + { + if(rtw_parse_wpa_ie(pwpa, wpa_ielen+2, &group_cipher, &pairwise_cipher) == _SUCCESS) + { + padapter->securitypriv.dot11AuthAlgrthm= dot11AuthAlgrthm_8021X; + padapter->securitypriv.ndisauthtype=Ndis802_11AuthModeWPAPSK; + _rtw_memcpy(padapter->securitypriv.supplicant_ie, &pwpa[0], wpa_ielen+2); + + DBG_8192C("got wpa_ie, wpa_ielen:%u\n", wpa_ielen); + } + } + + pwpa2 = rtw_get_wpa2_ie(buf, &wpa2_ielen, ielen); + if(pwpa2 && wpa2_ielen>0) + { + if(rtw_parse_wpa2_ie(pwpa2, wpa2_ielen+2, &group_cipher, &pairwise_cipher) == _SUCCESS) + { + padapter->securitypriv.dot11AuthAlgrthm= dot11AuthAlgrthm_8021X; + padapter->securitypriv.ndisauthtype=Ndis802_11AuthModeWPA2PSK; + _rtw_memcpy(padapter->securitypriv.supplicant_ie, &pwpa2[0], wpa2_ielen+2); + + DBG_8192C("got wpa2_ie, wpa2_ielen:%u\n", wpa2_ielen); + } + } + + if (group_cipher == 0) + { + group_cipher = WPA_CIPHER_NONE; + } + if (pairwise_cipher == 0) + { + pairwise_cipher = WPA_CIPHER_NONE; + } + + switch(group_cipher) + { + case WPA_CIPHER_NONE: + padapter->securitypriv.dot118021XGrpPrivacy=_NO_PRIVACY_; + padapter->securitypriv.ndisencryptstatus=Ndis802_11EncryptionDisabled; + break; + case WPA_CIPHER_WEP40: + padapter->securitypriv.dot118021XGrpPrivacy=_WEP40_; + padapter->securitypriv.ndisencryptstatus = Ndis802_11Encryption1Enabled; + break; + case WPA_CIPHER_TKIP: + padapter->securitypriv.dot118021XGrpPrivacy=_TKIP_; + padapter->securitypriv.ndisencryptstatus = Ndis802_11Encryption2Enabled; + break; + case WPA_CIPHER_CCMP: + padapter->securitypriv.dot118021XGrpPrivacy=_AES_; + padapter->securitypriv.ndisencryptstatus = Ndis802_11Encryption3Enabled; + break; + case WPA_CIPHER_WEP104: + padapter->securitypriv.dot118021XGrpPrivacy=_WEP104_; + padapter->securitypriv.ndisencryptstatus = Ndis802_11Encryption1Enabled; + break; + } + + switch(pairwise_cipher) + { + case WPA_CIPHER_NONE: + padapter->securitypriv.dot11PrivacyAlgrthm=_NO_PRIVACY_; + padapter->securitypriv.ndisencryptstatus=Ndis802_11EncryptionDisabled; + break; + case WPA_CIPHER_WEP40: + padapter->securitypriv.dot11PrivacyAlgrthm=_WEP40_; + padapter->securitypriv.ndisencryptstatus = Ndis802_11Encryption1Enabled; + break; + case WPA_CIPHER_TKIP: + padapter->securitypriv.dot11PrivacyAlgrthm=_TKIP_; + padapter->securitypriv.ndisencryptstatus = Ndis802_11Encryption2Enabled; + break; + case WPA_CIPHER_CCMP: + padapter->securitypriv.dot11PrivacyAlgrthm=_AES_; + padapter->securitypriv.ndisencryptstatus = Ndis802_11Encryption3Enabled; + break; + case WPA_CIPHER_WEP104: + padapter->securitypriv.dot11PrivacyAlgrthm=_WEP104_; + padapter->securitypriv.ndisencryptstatus = Ndis802_11Encryption1Enabled; + break; + } + + {/* handle wps_ie */ + uint wps_ielen; + u8 *wps_ie; + + wps_ie = rtw_get_wps_ie(buf, ielen, NULL, &wps_ielen); + if (wps_ie && wps_ielen > 0) { + DBG_8192C("got wps_ie, wps_ielen:%u\n", wps_ielen); + padapter->securitypriv.wps_ie_len = wps_ielensecuritypriv.wps_ie, wps_ie, padapter->securitypriv.wps_ie_len); + set_fwstate(&padapter->mlmepriv, WIFI_UNDER_WPS); + } else { + _clr_fwstate_(&padapter->mlmepriv, WIFI_UNDER_WPS); + } + } + + #ifdef CONFIG_P2P + {//check p2p_ie for assoc req; + uint p2p_ielen=0; + u8 *p2p_ie; + struct mlme_priv *pmlmepriv = &(padapter->mlmepriv); + + if((p2p_ie=rtw_get_p2p_ie(buf, ielen, NULL, &p2p_ielen))) + { + #ifdef CONFIG_DEBUG_CFG80211 + DBG_8192C("%s p2p_assoc_req_ielen=%d\n", __FUNCTION__, p2p_ielen); + #endif + + if(pmlmepriv->p2p_assoc_req_ie) + { + u32 free_len = pmlmepriv->p2p_assoc_req_ie_len; + pmlmepriv->p2p_assoc_req_ie_len = 0; + rtw_mfree(pmlmepriv->p2p_assoc_req_ie, free_len); + pmlmepriv->p2p_assoc_req_ie = NULL; + } + + pmlmepriv->p2p_assoc_req_ie = rtw_malloc(p2p_ielen); + if ( pmlmepriv->p2p_assoc_req_ie == NULL) { + DBG_8192C("%s()-%d: rtw_malloc() ERROR!\n", __FUNCTION__, __LINE__); + goto exit; + } + _rtw_memcpy(pmlmepriv->p2p_assoc_req_ie, p2p_ie, p2p_ielen); + pmlmepriv->p2p_assoc_req_ie_len = p2p_ielen; + } + } + #endif //CONFIG_P2P + + #ifdef CONFIG_WFD + {//check wfd_ie for assoc req; + uint wfd_ielen=0; + u8 *wfd_ie; + struct mlme_priv *pmlmepriv = &(padapter->mlmepriv); + + if(rtw_get_wfd_ie(buf, ielen, NULL, &wfd_ielen)) + { + #ifdef CONFIG_DEBUG_CFG80211 + DBG_8192C("%s wfd_assoc_req_ielen=%d\n", __FUNCTION__, wfd_ielen); + #endif + + if(pmlmepriv->wfd_assoc_req_ie) + { + u32 free_len = pmlmepriv->wfd_assoc_req_ie_len; + pmlmepriv->wfd_assoc_req_ie_len = 0; + rtw_mfree(pmlmepriv->wfd_assoc_req_ie, free_len); + pmlmepriv->wfd_assoc_req_ie = NULL; + } + + pmlmepriv->wfd_assoc_req_ie = rtw_malloc(wfd_ielen); + if ( pmlmepriv->wfd_assoc_req_ie == NULL) { + DBG_8192C("%s()-%d: rtw_malloc() ERROR!\n", __FUNCTION__, __LINE__); + goto exit; + } + rtw_get_wfd_ie(buf, ielen, pmlmepriv->wfd_assoc_req_ie, &pmlmepriv->wfd_assoc_req_ie_len); + } + } + #endif //CONFIG_WFD + + //TKIP and AES disallow multicast packets until installing group key + if(padapter->securitypriv.dot11PrivacyAlgrthm == _TKIP_ + || padapter->securitypriv.dot11PrivacyAlgrthm == _TKIP_WTMIC_ + || padapter->securitypriv.dot11PrivacyAlgrthm == _AES_) + //WPS open need to enable multicast + //|| check_fwstate(&padapter->mlmepriv, WIFI_UNDER_WPS) == _TRUE) + rtw_hal_set_hwreg(padapter, HW_VAR_OFF_RCR_AM, null_addr); + + RT_TRACE(_module_rtl871x_ioctl_os_c, _drv_info_, + ("rtw_set_wpa_ie: pairwise_cipher=0x%08x padapter->securitypriv.ndisencryptstatus=%d padapter->securitypriv.ndisauthtype=%d\n", + pairwise_cipher, padapter->securitypriv.ndisencryptstatus, padapter->securitypriv.ndisauthtype)); + +exit: + if (buf) + rtw_mfree(buf, ielen); + if (ret) + _clr_fwstate_(&padapter->mlmepriv, WIFI_UNDER_WPS); + return ret; +} + +static int cfg80211_rtw_connect(struct wiphy *wiphy, struct net_device *ndev, + struct cfg80211_connect_params *sme) +{ + int ret=0; + _irqL irqL; + _list *phead; + struct wlan_network *pnetwork = NULL; + NDIS_802_11_AUTHENTICATION_MODE authmode; + NDIS_802_11_SSID ndis_ssid; + u8 *dst_ssid, *src_ssid; + u8 *dst_bssid, *src_bssid; + //u8 matched_by_bssid=_FALSE; + //u8 matched_by_ssid=_FALSE; + u8 matched=_FALSE; + _adapter *padapter = wiphy_to_adapter(wiphy); + struct mlme_priv *pmlmepriv = &padapter->mlmepriv; + struct security_priv *psecuritypriv = &padapter->securitypriv; + _queue *queue = &pmlmepriv->scanned_queue; + + DBG_871X("=>"FUNC_NDEV_FMT"\n", FUNC_NDEV_ARG(ndev)); + DBG_871X("privacy=%d, key=%p, key_len=%d, key_idx=%d\n", + sme->privacy, sme->key, sme->key_len, sme->key_idx); + + + if(wdev_to_priv(padapter->rtw_wdev)->block == _TRUE) + { + ret = -EBUSY; + DBG_871X("%s wdev_priv.block is set\n", __FUNCTION__); + goto exit; + } + +#ifdef CONFIG_PLATFORM_MSTAR + printk("MStar Android!\n"); + if((wdev_to_priv(padapter->rtw_wdev))->bandroid_scan == _FALSE) + { +#ifdef CONFIG_P2P + struct wifidirect_info *pwdinfo= &(padapter->wdinfo); + if(rtw_p2p_chk_state(pwdinfo, P2P_STATE_NONE)) +#endif //CONFIG_P2P + { + ret = -EBUSY; + printk("Android hasn't attached yet!\n"); + goto exit; + } + } +#endif + + if(_FAIL == rtw_pwr_wakeup(padapter)) { + ret= -EPERM; + goto exit; + } + + if(check_fwstate(pmlmepriv, WIFI_AP_STATE)) { + ret = -EPERM; + goto exit; + } + +#ifdef CONFIG_CONCURRENT_MODE + if (check_buddy_fwstate(padapter, _FW_UNDER_LINKING) == _TRUE) { + DBG_8192C("%s, but buddy_intf is under linking\n", __FUNCTION__); + ret = -EINVAL; + goto exit; + } + if (check_buddy_fwstate(padapter, _FW_UNDER_SURVEY) == _TRUE) { + rtw_scan_abort(padapter->pbuddy_adapter); + } +#endif + + if (!sme->ssid || !sme->ssid_len) + { + ret = -EINVAL; + goto exit; + } + + if (sme->ssid_len > IW_ESSID_MAX_SIZE){ + + ret= -E2BIG; + goto exit; + } + + _rtw_memset(&ndis_ssid, 0, sizeof(NDIS_802_11_SSID)); + ndis_ssid.SsidLength = sme->ssid_len; + _rtw_memcpy(ndis_ssid.Ssid, sme->ssid, sme->ssid_len); + + DBG_8192C("ssid=%s, len=%zu\n", ndis_ssid.Ssid, sme->ssid_len); + + + if (sme->bssid) + DBG_8192C("bssid="MAC_FMT"\n", MAC_ARG(sme->bssid)); + + + if (check_fwstate(pmlmepriv, _FW_UNDER_LINKING) == _TRUE) { + ret = -EBUSY; + DBG_8192C("%s, fw_state=0x%x, goto exit\n", __FUNCTION__, pmlmepriv->fw_state); + goto exit; + } + if (check_fwstate(pmlmepriv, _FW_UNDER_SURVEY) == _TRUE) { + rtw_scan_abort(padapter); + } + + psecuritypriv->ndisencryptstatus = Ndis802_11EncryptionDisabled; + psecuritypriv->dot11PrivacyAlgrthm = _NO_PRIVACY_; + psecuritypriv->dot118021XGrpPrivacy = _NO_PRIVACY_; + psecuritypriv->dot11AuthAlgrthm = dot11AuthAlgrthm_Open; //open system + psecuritypriv->ndisauthtype = Ndis802_11AuthModeOpen; + + + ret = rtw_cfg80211_set_wpa_version(psecuritypriv, sme->crypto.wpa_versions); + if (ret < 0) + goto exit; + + ret = rtw_cfg80211_set_auth_type(psecuritypriv, sme->auth_type); + if (ret < 0) + goto exit; + + DBG_8192C("%s, ie_len=%zu\n", __func__, sme->ie_len); + + ret = rtw_cfg80211_set_wpa_ie(padapter, sme->ie, sme->ie_len); + if (ret < 0) + goto exit; + + if (sme->crypto.n_ciphers_pairwise) { + ret = rtw_cfg80211_set_cipher(psecuritypriv, sme->crypto.ciphers_pairwise[0], _TRUE); + if (ret < 0) + goto exit; + } + + //For WEP Shared auth + if((psecuritypriv->dot11AuthAlgrthm == dot11AuthAlgrthm_Shared + || psecuritypriv->dot11AuthAlgrthm == dot11AuthAlgrthm_Auto) && sme->key + ) + { + u32 wep_key_idx, wep_key_len,wep_total_len; + NDIS_802_11_WEP *pwep = NULL; + DBG_871X("%s(): Shared/Auto WEP\n",__FUNCTION__); + + wep_key_idx = sme->key_idx; + wep_key_len = sme->key_len; + + if (sme->key_idx > WEP_KEYS) { + ret = -EINVAL; + goto exit; + } + + if (wep_key_len > 0) + { + wep_key_len = wep_key_len <= 5 ? 5 : 13; + wep_total_len = wep_key_len + FIELD_OFFSET(NDIS_802_11_WEP, KeyMaterial); + pwep =(NDIS_802_11_WEP *) rtw_malloc(wep_total_len); + if(pwep == NULL){ + DBG_871X(" wpa_set_encryption: pwep allocate fail !!!\n"); + ret = -ENOMEM; + goto exit; + } + + _rtw_memset(pwep, 0, wep_total_len); + + pwep->KeyLength = wep_key_len; + pwep->Length = wep_total_len; + + if(wep_key_len==13) + { + padapter->securitypriv.dot11PrivacyAlgrthm=_WEP104_; + padapter->securitypriv.dot118021XGrpPrivacy=_WEP104_; + } + } + else { + ret = -EINVAL; + goto exit; + } + + pwep->KeyIndex = wep_key_idx; + pwep->KeyIndex |= 0x80000000; + + _rtw_memcpy(pwep->KeyMaterial, (void *)sme->key, pwep->KeyLength); + + if(rtw_set_802_11_add_wep(padapter, pwep) == (u8)_FAIL) + { + ret = -EOPNOTSUPP ; + } + + if (pwep) { + rtw_mfree((u8 *)pwep,wep_total_len); + } + + if(ret < 0) + goto exit; + } + + ret = rtw_cfg80211_set_cipher(psecuritypriv, sme->crypto.cipher_group, _FALSE); + if (ret < 0) + return ret; + + if (sme->crypto.n_akm_suites) { + ret = rtw_cfg80211_set_key_mgt(psecuritypriv, sme->crypto.akm_suites[0]); + if (ret < 0) + goto exit; + } + + authmode = psecuritypriv->ndisauthtype; + rtw_set_802_11_authentication_mode(padapter, authmode); + + //rtw_set_802_11_encryption_mode(padapter, padapter->securitypriv.ndisencryptstatus); + + if (rtw_set_802_11_connect(padapter, sme->bssid, &ndis_ssid) == _FALSE) { + ret = -1; + goto exit; + } + + DBG_8192C("set ssid:dot11AuthAlgrthm=%d, dot11PrivacyAlgrthm=%d, dot118021XGrpPrivacy=%d\n", psecuritypriv->dot11AuthAlgrthm, psecuritypriv->dot11PrivacyAlgrthm, psecuritypriv->dot118021XGrpPrivacy); + +exit: + + DBG_8192C("<=%s, ret %d\n",__FUNCTION__, ret); + + return ret; +} + +static int cfg80211_rtw_disconnect(struct wiphy *wiphy, struct net_device *ndev, + u16 reason_code) +{ + _adapter *padapter = wiphy_to_adapter(wiphy); + + DBG_871X(FUNC_NDEV_FMT"\n", FUNC_NDEV_ARG(ndev)); + + rtw_set_roaming(padapter, 0); + + if(check_fwstate(&padapter->mlmepriv, _FW_LINKED)) + { + rtw_scan_abort(padapter); + LeaveAllPowerSaveMode(padapter); + rtw_disassoc_cmd(padapter, 500, _FALSE); + + DBG_871X("%s...call rtw_indicate_disconnect\n", __FUNCTION__); + + padapter->mlmepriv.not_indic_disco = _TRUE; + rtw_indicate_disconnect(padapter); + padapter->mlmepriv.not_indic_disco = _FALSE; + + rtw_free_assoc_resources(padapter, 1); + } + + return 0; +} + +static int cfg80211_rtw_set_txpower(struct wiphy *wiphy, +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,8,0)) + struct wireless_dev *wdev, +#endif +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,36)) || defined(COMPAT_KERNEL_RELEASE) + enum nl80211_tx_power_setting type, int mbm) +#else + enum tx_power_setting type, int dbm) +#endif +{ +#if 0 + struct iwm_priv *iwm = wiphy_to_iwm(wiphy); + int ret; + + switch (type) { + case NL80211_TX_POWER_AUTOMATIC: + return 0; + case NL80211_TX_POWER_FIXED: + if (mbm < 0 || (mbm % 100)) + return -EOPNOTSUPP; + + if (!test_bit(IWM_STATUS_READY, &iwm->status)) + return 0; + + ret = iwm_umac_set_config_fix(iwm, UMAC_PARAM_TBL_CFG_FIX, + CFG_TX_PWR_LIMIT_USR, + MBM_TO_DBM(mbm) * 2); + if (ret < 0) + return ret; + + return iwm_tx_power_trigger(iwm); + default: + IWM_ERR(iwm, "Unsupported power type: %d\n", type); + return -EOPNOTSUPP; + } +#endif + DBG_8192C("%s\n", __func__); + return 0; +} + +static int cfg80211_rtw_get_txpower(struct wiphy *wiphy, +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,8,0)) + struct wireless_dev *wdev, +#endif + int *dbm) +{ + //_adapter *padapter = wiphy_to_adapter(wiphy); + + DBG_8192C("%s\n", __func__); + + *dbm = (12); + + return 0; +} + +inline bool rtw_cfg80211_pwr_mgmt(_adapter *adapter) +{ + struct rtw_wdev_priv *rtw_wdev_priv = wdev_to_priv(adapter->rtw_wdev); + return rtw_wdev_priv->power_mgmt; +} + +static int cfg80211_rtw_set_power_mgmt(struct wiphy *wiphy, + struct net_device *ndev, + bool enabled, int timeout) +{ + _adapter *padapter = wiphy_to_adapter(wiphy); + struct rtw_wdev_priv *rtw_wdev_priv = wdev_to_priv(padapter->rtw_wdev); + + DBG_871X(FUNC_NDEV_FMT" enabled:%u, timeout:%d\n", FUNC_NDEV_ARG(ndev), + enabled, timeout); + + rtw_wdev_priv->power_mgmt = enabled; + + #ifdef CONFIG_LPS + if (!enabled) + LPS_Leave(padapter); + #endif + + return 0; +} + +static int cfg80211_rtw_set_pmksa(struct wiphy *wiphy, + struct net_device *netdev, + struct cfg80211_pmksa *pmksa) +{ + u8 index,blInserted = _FALSE; + _adapter *padapter = wiphy_to_adapter(wiphy); + struct security_priv *psecuritypriv = &padapter->securitypriv; + u8 strZeroMacAddress[ ETH_ALEN ] = { 0x00 }; + + DBG_871X(FUNC_NDEV_FMT"\n", FUNC_NDEV_ARG(netdev)); + + if ( _rtw_memcmp( pmksa->bssid, strZeroMacAddress, ETH_ALEN ) == _TRUE ) + { + return -EINVAL; + } + + blInserted = _FALSE; + + //overwrite PMKID + for(index=0 ; indexPMKIDList[index].Bssid, pmksa->bssid, ETH_ALEN) ==_TRUE ) + { // BSSID is matched, the same AP => rewrite with new PMKID. + DBG_871X(FUNC_NDEV_FMT" BSSID exists in the PMKList.\n", FUNC_NDEV_ARG(netdev)); + + _rtw_memcpy( psecuritypriv->PMKIDList[index].PMKID, pmksa->pmkid, WLAN_PMKID_LEN); + psecuritypriv->PMKIDList[index].bUsed = _TRUE; + psecuritypriv->PMKIDIndex = index+1; + blInserted = _TRUE; + break; + } + } + + if(!blInserted) + { + // Find a new entry + DBG_871X(FUNC_NDEV_FMT" Use the new entry index = %d for this PMKID.\n", + FUNC_NDEV_ARG(netdev), psecuritypriv->PMKIDIndex ); + + _rtw_memcpy(psecuritypriv->PMKIDList[psecuritypriv->PMKIDIndex].Bssid, pmksa->bssid, ETH_ALEN); + _rtw_memcpy(psecuritypriv->PMKIDList[psecuritypriv->PMKIDIndex].PMKID, pmksa->pmkid, WLAN_PMKID_LEN); + + psecuritypriv->PMKIDList[psecuritypriv->PMKIDIndex].bUsed = _TRUE; + psecuritypriv->PMKIDIndex++ ; + if(psecuritypriv->PMKIDIndex==16) + { + psecuritypriv->PMKIDIndex =0; + } + } + + return 0; +} + +static int cfg80211_rtw_del_pmksa(struct wiphy *wiphy, + struct net_device *netdev, + struct cfg80211_pmksa *pmksa) +{ + u8 index, bMatched = _FALSE; + _adapter *padapter = wiphy_to_adapter(wiphy); + struct security_priv *psecuritypriv = &padapter->securitypriv; + + DBG_871X(FUNC_NDEV_FMT"\n", FUNC_NDEV_ARG(netdev)); + + for(index=0 ; indexPMKIDList[index].Bssid, pmksa->bssid, ETH_ALEN) ==_TRUE ) + { // BSSID is matched, the same AP => Remove this PMKID information and reset it. + _rtw_memset( psecuritypriv->PMKIDList[index].Bssid, 0x00, ETH_ALEN ); + _rtw_memset( psecuritypriv->PMKIDList[index].PMKID, 0x00, WLAN_PMKID_LEN ); + psecuritypriv->PMKIDList[index].bUsed = _FALSE; + bMatched = _TRUE; + break; + } + } + + if(_FALSE == bMatched) + { + DBG_871X(FUNC_NDEV_FMT" do not have matched BSSID\n" + , FUNC_NDEV_ARG(netdev)); + return -EINVAL; + } + + return 0; +} + +static int cfg80211_rtw_flush_pmksa(struct wiphy *wiphy, + struct net_device *netdev) +{ + _adapter *padapter = wiphy_to_adapter(wiphy); + struct security_priv *psecuritypriv = &padapter->securitypriv; + + DBG_871X(FUNC_NDEV_FMT"\n", FUNC_NDEV_ARG(netdev)); + + _rtw_memset( &psecuritypriv->PMKIDList[ 0 ], 0x00, sizeof( RT_PMKID_LIST ) * NUM_PMKID_CACHE ); + psecuritypriv->PMKIDIndex = 0; + + return 0; +} + +#ifdef CONFIG_AP_MODE +void rtw_cfg80211_indicate_sta_assoc(_adapter *padapter, u8 *pmgmt_frame, uint frame_len) +{ + s32 freq; + int channel; + struct wireless_dev *pwdev = padapter->rtw_wdev; + struct mlme_ext_priv *pmlmeext = &(padapter->mlmeextpriv); + struct net_device *ndev = padapter->pnetdev; + + DBG_871X(FUNC_ADPT_FMT"\n", FUNC_ADPT_ARG(padapter)); + +#if defined(RTW_USE_CFG80211_STA_EVENT) || defined(COMPAT_KERNEL_RELEASE) + { + struct station_info sinfo; + u8 ie_offset; + if (GetFrameSubType(pmgmt_frame) == WIFI_ASSOCREQ) + ie_offset = _ASOCREQ_IE_OFFSET_; + else // WIFI_REASSOCREQ + ie_offset = _REASOCREQ_IE_OFFSET_; + + sinfo.filled = 0; + sinfo.filled = STATION_INFO_ASSOC_REQ_IES; + sinfo.assoc_req_ies = pmgmt_frame + WLAN_HDR_A3_LEN + ie_offset; + sinfo.assoc_req_ies_len = frame_len - WLAN_HDR_A3_LEN - ie_offset; + cfg80211_new_sta(ndev, GetAddr2Ptr(pmgmt_frame), &sinfo, GFP_ATOMIC); + } +#else /* defined(RTW_USE_CFG80211_STA_EVENT) */ + channel = pmlmeext->cur_channel; + if (channel <= RTW_CH_MAX_2G_CHANNEL) + freq = rtw_ieee80211_channel_to_frequency(channel, IEEE80211_BAND_2GHZ); + else + freq = rtw_ieee80211_channel_to_frequency(channel, IEEE80211_BAND_5GHZ); + + #ifdef COMPAT_KERNEL_RELEASE + rtw_cfg80211_rx_mgmt(padapter, freq, 0, pmgmt_frame, frame_len, GFP_ATOMIC); + #elif (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,37)) && !defined(CONFIG_CFG80211_FORCE_COMPATIBLE_2_6_37_UNDER) + rtw_cfg80211_rx_mgmt(padapter, freq, 0, pmgmt_frame, frame_len, GFP_ATOMIC); + #else //COMPAT_KERNEL_RELEASE + { + //to avoid WARN_ON(wdev->iftype != NL80211_IFTYPE_STATION) when calling cfg80211_send_rx_assoc() + #ifndef CONFIG_PLATFORM_MSTAR + pwdev->iftype = NL80211_IFTYPE_STATION; + #endif //CONFIG_PLATFORM_MSTAR + DBG_8192C("iftype=%d before call cfg80211_send_rx_assoc()\n", pwdev->iftype); + rtw_cfg80211_send_rx_assoc(padapter, NULL, pmgmt_frame, frame_len); + DBG_8192C("iftype=%d after call cfg80211_send_rx_assoc()\n", pwdev->iftype); + pwdev->iftype = NL80211_IFTYPE_AP; + //cfg80211_rx_action(padapter->pnetdev, freq, pmgmt_frame, frame_len, GFP_ATOMIC); + } + #endif //COMPAT_KERNEL_RELEASE +#endif /* defined(RTW_USE_CFG80211_STA_EVENT) */ + +} + +void rtw_cfg80211_indicate_sta_disassoc(_adapter *padapter, unsigned char *da, unsigned short reason) +{ + s32 freq; + int channel; + u8 *pmgmt_frame; + uint frame_len; + struct rtw_ieee80211_hdr *pwlanhdr; + unsigned short *fctrl; + u8 mgmt_buf[128] = {0}; + struct mlme_ext_priv *pmlmeext = &(padapter->mlmeextpriv); + struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info); + struct net_device *ndev = padapter->pnetdev; + + DBG_871X(FUNC_ADPT_FMT"\n", FUNC_ADPT_ARG(padapter)); + +#if defined(RTW_USE_CFG80211_STA_EVENT) || defined(COMPAT_KERNEL_RELEASE) + cfg80211_del_sta(ndev, da, GFP_ATOMIC); +#else /* defined(RTW_USE_CFG80211_STA_EVENT) */ + channel = pmlmeext->cur_channel; + if (channel <= RTW_CH_MAX_2G_CHANNEL) + freq = rtw_ieee80211_channel_to_frequency(channel, IEEE80211_BAND_2GHZ); + else + freq = rtw_ieee80211_channel_to_frequency(channel, IEEE80211_BAND_5GHZ); + + pmgmt_frame = mgmt_buf; + pwlanhdr = (struct rtw_ieee80211_hdr *)pmgmt_frame; + + fctrl = &(pwlanhdr->frame_ctl); + *(fctrl) = 0; + + //_rtw_memcpy(pwlanhdr->addr1, da, ETH_ALEN); + //_rtw_memcpy(pwlanhdr->addr2, myid(&(padapter->eeprompriv)), ETH_ALEN); + _rtw_memcpy(pwlanhdr->addr1, myid(&(padapter->eeprompriv)), ETH_ALEN); + _rtw_memcpy(pwlanhdr->addr2, da, ETH_ALEN); + _rtw_memcpy(pwlanhdr->addr3, get_my_bssid(&(pmlmeinfo->network)), ETH_ALEN); + + SetSeqNum(pwlanhdr, pmlmeext->mgnt_seq); + pmlmeext->mgnt_seq++; + SetFrameSubType(pmgmt_frame, WIFI_DEAUTH); + + pmgmt_frame += sizeof(struct rtw_ieee80211_hdr_3addr); + frame_len = sizeof(struct rtw_ieee80211_hdr_3addr); + + reason = cpu_to_le16(reason); + pmgmt_frame = rtw_set_fixed_ie(pmgmt_frame, _RSON_CODE_ , (unsigned char *)&reason, &frame_len); + + #ifdef COMPAT_KERNEL_RELEASE + rtw_cfg80211_rx_mgmt(padapter, freq, 0, mgmt_buf, frame_len, GFP_ATOMIC); + #elif (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,37)) && !defined(CONFIG_CFG80211_FORCE_COMPATIBLE_2_6_37_UNDER) + rtw_cfg80211_rx_mgmt(padapter, freq, 0, mgmt_buf, frame_len, GFP_ATOMIC); + #else //COMPAT_KERNEL_RELEASE + cfg80211_send_disassoc(padapter->pnetdev, mgmt_buf, frame_len); + //cfg80211_rx_action(padapter->pnetdev, freq, mgmt_buf, frame_len, GFP_ATOMIC); + #endif //COMPAT_KERNEL_RELEASE +#endif /* defined(RTW_USE_CFG80211_STA_EVENT) */ +} + +static int rtw_cfg80211_monitor_if_open(struct net_device *ndev) +{ + int ret = 0; + + DBG_8192C("%s\n", __func__); + + return ret; +} + +static int rtw_cfg80211_monitor_if_close(struct net_device *ndev) +{ + int ret = 0; + + DBG_8192C("%s\n", __func__); + + return ret; +} + +static int rtw_cfg80211_monitor_if_xmit_entry(struct sk_buff *skb, struct net_device *ndev) +{ + int ret = 0; + int rtap_len; + int qos_len = 0; + int dot11_hdr_len = 24; + int snap_len = 6; + unsigned char *pdata; + u16 frame_ctl; + unsigned char src_mac_addr[6]; + unsigned char dst_mac_addr[6]; + struct ieee80211_hdr *dot11_hdr; + struct ieee80211_radiotap_header *rtap_hdr; + _adapter *padapter = (_adapter *)rtw_netdev_priv(ndev); + + DBG_871X(FUNC_NDEV_FMT"\n", FUNC_NDEV_ARG(ndev)); + + if (skb) + rtw_mstat_update(MSTAT_TYPE_SKB, MSTAT_ALLOC_SUCCESS, skb->truesize); + + if (unlikely(skb->len < sizeof(struct ieee80211_radiotap_header))) + goto fail; + + rtap_hdr = (struct ieee80211_radiotap_header *)skb->data; + if (unlikely(rtap_hdr->it_version)) + goto fail; + + rtap_len = ieee80211_get_radiotap_len(skb->data); + if (unlikely(skb->len < rtap_len)) + goto fail; + + if(rtap_len != 14) + { + DBG_8192C("radiotap len (should be 14): %d\n", rtap_len); + goto fail; + } + + /* Skip the ratio tap header */ + skb_pull(skb, rtap_len); + + dot11_hdr = (struct ieee80211_hdr *)skb->data; + frame_ctl = le16_to_cpu(dot11_hdr->frame_control); + /* Check if the QoS bit is set */ + if ((frame_ctl & RTW_IEEE80211_FCTL_FTYPE) == RTW_IEEE80211_FTYPE_DATA) { + /* Check if this ia a Wireless Distribution System (WDS) frame + * which has 4 MAC addresses + */ + if (dot11_hdr->frame_control & 0x0080) + qos_len = 2; + if ((dot11_hdr->frame_control & 0x0300) == 0x0300) + dot11_hdr_len += 6; + + memcpy(dst_mac_addr, dot11_hdr->addr1, sizeof(dst_mac_addr)); + memcpy(src_mac_addr, dot11_hdr->addr2, sizeof(src_mac_addr)); + + /* Skip the 802.11 header, QoS (if any) and SNAP, but leave spaces for + * for two MAC addresses + */ + skb_pull(skb, dot11_hdr_len + qos_len + snap_len - sizeof(src_mac_addr) * 2); + pdata = (unsigned char*)skb->data; + memcpy(pdata, dst_mac_addr, sizeof(dst_mac_addr)); + memcpy(pdata + sizeof(dst_mac_addr), src_mac_addr, sizeof(src_mac_addr)); + + DBG_8192C("should be eapol packet\n"); + + /* Use the real net device to transmit the packet */ + ret = _rtw_xmit_entry(skb, padapter->pnetdev); + + return ret; + + } + else if ((frame_ctl & (RTW_IEEE80211_FCTL_FTYPE|RTW_IEEE80211_FCTL_STYPE)) + == (RTW_IEEE80211_FTYPE_MGMT|RTW_IEEE80211_STYPE_ACTION) + ) + { + //only for action frames + struct xmit_frame *pmgntframe; + struct pkt_attrib *pattrib; + unsigned char *pframe; + //u8 category, action, OUI_Subtype, dialogToken=0; + //unsigned char *frame_body; + struct rtw_ieee80211_hdr *pwlanhdr; + struct xmit_priv *pxmitpriv = &(padapter->xmitpriv); + struct mlme_ext_priv *pmlmeext = &(padapter->mlmeextpriv); + u8 *buf = skb->data; + u32 len = skb->len; + u8 category, action; + int type = -1; + + if (rtw_action_frame_parse(buf, len, &category, &action) == _FALSE) { + DBG_8192C(FUNC_NDEV_FMT" frame_control:0x%x\n", FUNC_NDEV_ARG(ndev), + le16_to_cpu(((struct rtw_ieee80211_hdr_3addr *)buf)->frame_ctl)); + goto fail; + } + + DBG_8192C("RTW_Tx:da="MAC_FMT" via "FUNC_NDEV_FMT"\n", + MAC_ARG(GetAddr1Ptr(buf)), FUNC_NDEV_ARG(ndev)); + #ifdef CONFIG_P2P + if((type = rtw_p2p_check_frames(padapter, buf, len, _TRUE)) >= 0) + goto dump; + #endif + if (category == RTW_WLAN_CATEGORY_PUBLIC) + DBG_871X("RTW_Tx:%s\n", action_public_str(action)); + else + DBG_871X("RTW_Tx:category(%u), action(%u)\n", category, action); + +dump: + //starting alloc mgmt frame to dump it + if ((pmgntframe = alloc_mgtxmitframe(pxmitpriv)) == NULL) + { + goto fail; + } + + //update attribute + pattrib = &pmgntframe->attrib; + update_mgntframe_attrib(padapter, pattrib); + pattrib->retry_ctrl = _FALSE; + + _rtw_memset(pmgntframe->buf_addr, 0, WLANHDR_OFFSET + TXDESC_OFFSET); + + pframe = (u8 *)(pmgntframe->buf_addr) + TXDESC_OFFSET; + + _rtw_memcpy(pframe, (void*)buf, len); + #ifdef CONFIG_WFD + if (type >= 0) + { + struct wifi_display_info *pwfd_info; + + pwfd_info = padapter->wdinfo.wfd_info; + + if ( _TRUE == pwfd_info->wfd_enable ) + { + rtw_append_wfd_ie( padapter, pframe, &len ); + } + } + #endif // CONFIG_WFD + pattrib->pktlen = len; + + pwlanhdr = (struct rtw_ieee80211_hdr *)pframe; + //update seq number + pmlmeext->mgnt_seq = GetSequence(pwlanhdr); + pattrib->seqnum = pmlmeext->mgnt_seq; + pmlmeext->mgnt_seq++; + + + pattrib->last_txcmdsz = pattrib->pktlen; + + dump_mgntframe(padapter, pmgntframe); + + } + else + { + DBG_8192C("frame_ctl=0x%x\n", frame_ctl & (RTW_IEEE80211_FCTL_FTYPE|RTW_IEEE80211_FCTL_STYPE)); + } + + +fail: + + dev_kfree_skb(skb); + + return 0; + +} + +static void rtw_cfg80211_monitor_if_set_multicast_list(struct net_device *ndev) +{ + DBG_8192C("%s\n", __func__); +} + +static int rtw_cfg80211_monitor_if_set_mac_address(struct net_device *ndev, void *addr) +{ + int ret = 0; + + DBG_8192C("%s\n", __func__); + + return ret; +} + +#if (LINUX_VERSION_CODE>=KERNEL_VERSION(2,6,29)) +static const struct net_device_ops rtw_cfg80211_monitor_if_ops = { + .ndo_open = rtw_cfg80211_monitor_if_open, + .ndo_stop = rtw_cfg80211_monitor_if_close, + .ndo_start_xmit = rtw_cfg80211_monitor_if_xmit_entry, + #if (LINUX_VERSION_CODE < KERNEL_VERSION(3,2,0)) + .ndo_set_multicast_list = rtw_cfg80211_monitor_if_set_multicast_list, + #endif + .ndo_set_mac_address = rtw_cfg80211_monitor_if_set_mac_address, +}; +#endif + +static int rtw_cfg80211_add_monitor_if(_adapter *padapter, char *name, struct net_device **ndev) +{ + int ret = 0; + struct net_device* mon_ndev = NULL; + struct wireless_dev* mon_wdev = NULL; + struct rtw_netdev_priv_indicator *pnpi; + struct rtw_wdev_priv *pwdev_priv = wdev_to_priv(padapter->rtw_wdev); + + if (!name ) { + DBG_871X(FUNC_ADPT_FMT" without specific name\n", FUNC_ADPT_ARG(padapter)); + ret = -EINVAL; + goto out; + } + + if (pwdev_priv->pmon_ndev) { + DBG_871X(FUNC_ADPT_FMT" monitor interface exist: "NDEV_FMT"\n", + FUNC_ADPT_ARG(padapter), NDEV_ARG(pwdev_priv->pmon_ndev)); + ret = -EBUSY; + goto out; + } + + mon_ndev = alloc_etherdev(sizeof(struct rtw_netdev_priv_indicator)); + if (!mon_ndev) { + DBG_871X(FUNC_ADPT_FMT" allocate ndev fail\n", FUNC_ADPT_ARG(padapter)); + ret = -ENOMEM; + goto out; + } + + mon_ndev->type = ARPHRD_IEEE80211_RADIOTAP; + strncpy(mon_ndev->name, name, IFNAMSIZ); + mon_ndev->name[IFNAMSIZ - 1] = 0; + mon_ndev->destructor = rtw_ndev_destructor; + +#if (LINUX_VERSION_CODE>=KERNEL_VERSION(2,6,29)) + mon_ndev->netdev_ops = &rtw_cfg80211_monitor_if_ops; +#else + mon_ndev->open = rtw_cfg80211_monitor_if_open; + mon_ndev->stop = rtw_cfg80211_monitor_if_close; + mon_ndev->hard_start_xmit = rtw_cfg80211_monitor_if_xmit_entry; + mon_ndev->set_mac_address = rtw_cfg80211_monitor_if_set_mac_address; +#endif + + pnpi = netdev_priv(mon_ndev); + pnpi->priv = padapter; + pnpi->sizeof_priv = sizeof(_adapter); + + /* wdev */ + mon_wdev = (struct wireless_dev *)rtw_zmalloc(sizeof(struct wireless_dev)); + if (!mon_wdev) { + DBG_871X(FUNC_ADPT_FMT" allocate mon_wdev fail\n", FUNC_ADPT_ARG(padapter)); + ret = -ENOMEM; + goto out; + } + + mon_wdev->wiphy = padapter->rtw_wdev->wiphy; + mon_wdev->netdev = mon_ndev; + mon_wdev->iftype = NL80211_IFTYPE_MONITOR; + mon_ndev->ieee80211_ptr = mon_wdev; + + ret = register_netdevice(mon_ndev); + if (ret) { + goto out; + } + + *ndev = pwdev_priv->pmon_ndev = mon_ndev; + _rtw_memcpy(pwdev_priv->ifname_mon, name, IFNAMSIZ+1); + +out: + if (ret && mon_wdev) { + rtw_mfree((u8*)mon_wdev, sizeof(struct wireless_dev)); + mon_wdev = NULL; + } + + if (ret && mon_ndev) { + free_netdev(mon_ndev); + *ndev = mon_ndev = NULL; + } + + return ret; +} + +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,6,0)) +static struct wireless_dev * +#elif (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,38)) || defined(COMPAT_KERNEL_RELEASE) +static struct net_device * +#else +static int +#endif + cfg80211_rtw_add_virtual_intf( + struct wiphy *wiphy, + #if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,7,0)) + const char *name, + #else + char *name, + #endif + enum nl80211_iftype type, u32 *flags, struct vif_params *params) +{ + int ret = 0; + struct net_device* ndev = NULL; + _adapter *padapter = wiphy_to_adapter(wiphy); + + DBG_871X(FUNC_ADPT_FMT " wiphy:%s, name:%s, type:%d\n", + FUNC_ADPT_ARG(padapter), wiphy_name(wiphy), name, type); + + switch (type) { + case NL80211_IFTYPE_ADHOC: + case NL80211_IFTYPE_AP_VLAN: + case NL80211_IFTYPE_WDS: + case NL80211_IFTYPE_MESH_POINT: + ret = -ENODEV; + break; + case NL80211_IFTYPE_MONITOR: + ret = rtw_cfg80211_add_monitor_if(padapter, (char *)name, &ndev); + break; + +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,37)) || defined(COMPAT_KERNEL_RELEASE) + case NL80211_IFTYPE_P2P_CLIENT: +#endif + case NL80211_IFTYPE_STATION: + ret = -ENODEV; + break; + +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,37)) || defined(COMPAT_KERNEL_RELEASE) + case NL80211_IFTYPE_P2P_GO: +#endif + case NL80211_IFTYPE_AP: + ret = -ENODEV; + break; + default: + ret = -ENODEV; + DBG_871X("Unsupported interface type\n"); + break; + } + + DBG_871X(FUNC_ADPT_FMT" ndev:%p, ret:%d\n", FUNC_ADPT_ARG(padapter), ndev, ret); + +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,6,0)) + return ndev ? ndev->ieee80211_ptr : ERR_PTR(ret); +#elif (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,38)) || defined(COMPAT_KERNEL_RELEASE) + return ndev ? ndev : ERR_PTR(ret); +#else + return ret; +#endif +} + +static int cfg80211_rtw_del_virtual_intf(struct wiphy *wiphy, +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,6,0)) + struct wireless_dev *wdev +#else + struct net_device *ndev +#endif +) +{ + struct rtw_wdev_priv *pwdev_priv = (struct rtw_wdev_priv *)wiphy_priv(wiphy); +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,6,0)) + struct net_device *ndev; + ndev = wdev ? wdev->netdev : NULL; +#endif + + if (!ndev) + goto exit; + + unregister_netdevice(ndev); + + if (ndev == pwdev_priv->pmon_ndev) { + pwdev_priv->pmon_ndev = NULL; + pwdev_priv->ifname_mon[0] = '\0'; + DBG_871X(FUNC_NDEV_FMT" remove monitor interface\n", FUNC_NDEV_ARG(ndev)); + } + +exit: + return 0; +} + +static int rtw_add_beacon(_adapter *adapter, const u8 *head, size_t head_len, const u8 *tail, size_t tail_len) +{ + int ret=0; + u8 *pbuf = NULL; + uint len, wps_ielen=0; + uint p2p_ielen=0; + u8 *p2p_ie; + u8 got_p2p_ie = _FALSE; + struct mlme_priv *pmlmepriv = &(adapter->mlmepriv); + //struct sta_priv *pstapriv = &padapter->stapriv; + + + DBG_8192C("%s beacon_head_len=%zu, beacon_tail_len=%zu\n", __FUNCTION__, head_len, tail_len); + + + if(check_fwstate(pmlmepriv, WIFI_AP_STATE) != _TRUE) + return -EINVAL; + + if(head_len<24) + return -EINVAL; + + + pbuf = rtw_zmalloc(head_len+tail_len); + if(!pbuf) + return -ENOMEM; + + + //_rtw_memcpy(&pstapriv->max_num_sta, param->u.bcn_ie.reserved, 2); + + //if((pstapriv->max_num_sta>NUM_STA) || (pstapriv->max_num_sta<=0)) + // pstapriv->max_num_sta = NUM_STA; + + + _rtw_memcpy(pbuf, (void *)head+24, head_len-24);// 24=beacon header len. + _rtw_memcpy(pbuf+head_len-24, (void *)tail, tail_len); + + len = head_len+tail_len-24; + + //check wps ie if inclued + if(rtw_get_wps_ie(pbuf+_FIXED_IE_LENGTH_, len-_FIXED_IE_LENGTH_, NULL, &wps_ielen)) + DBG_8192C("add bcn, wps_ielen=%d\n", wps_ielen); + +#ifdef CONFIG_P2P + //check p2p ie if inclued + if( adapter->wdinfo.driver_interface == DRIVER_CFG80211 ) + { + //check p2p if enable + if(rtw_get_p2p_ie(pbuf+_FIXED_IE_LENGTH_, len-_FIXED_IE_LENGTH_, NULL, &p2p_ielen)) + { + struct mlme_ext_priv *pmlmeext = &adapter->mlmeextpriv; + struct wifidirect_info *pwdinfo= &(adapter->wdinfo); + + DBG_8192C("got p2p_ie, len=%d\n", p2p_ielen); + got_p2p_ie = _TRUE; + + if(rtw_p2p_chk_state(pwdinfo, P2P_STATE_NONE)) + { + DBG_8192C("Enable P2P function for the first time\n"); + rtw_p2p_enable(adapter, P2P_ROLE_GO); + wdev_to_priv(adapter->rtw_wdev)->p2p_enabled = _TRUE; + } + else + { + _cancel_timer_ex( &pwdinfo->find_phase_timer ); + _cancel_timer_ex( &pwdinfo->restore_p2p_state_timer ); + _cancel_timer_ex( &pwdinfo->pre_tx_scan_timer); + + DBG_8192C("enter GO Mode, p2p_ielen=%d\n", p2p_ielen); + + rtw_p2p_set_role(pwdinfo, P2P_ROLE_GO); + rtw_p2p_set_state(pwdinfo, P2P_STATE_GONEGO_OK); + pwdinfo->intent = 15; + } + } + } +#endif // CONFIG_P2P + + /* pbss_network->IEs will not include p2p_ie, wfd ie */ + rtw_ies_remove_ie(pbuf, &len, _BEACON_IE_OFFSET_, _VENDOR_SPECIFIC_IE_, P2P_OUI, 4); + rtw_ies_remove_ie(pbuf, &len, _BEACON_IE_OFFSET_, _VENDOR_SPECIFIC_IE_, WFD_OUI, 4); + + if (rtw_check_beacon_data(adapter, pbuf, len) == _SUCCESS) + { +#ifdef CONFIG_P2P + //check p2p if enable + if(got_p2p_ie == _TRUE) + { + struct mlme_ext_priv *pmlmeext = &adapter->mlmeextpriv; + struct wifidirect_info *pwdinfo= &(adapter->wdinfo); + pwdinfo->operating_channel = pmlmeext->cur_channel; + } +#endif //CONFIG_P2P + ret = 0; + } + else + { + ret = -EINVAL; + } + + + rtw_mfree(pbuf, head_len+tail_len); + + return ret; +} + +#if (LINUX_VERSION_CODE < KERNEL_VERSION(3,4,0)) && !defined(COMPAT_KERNEL_RELEASE) +static int cfg80211_rtw_add_beacon(struct wiphy *wiphy, struct net_device *ndev, + struct beacon_parameters *info) +{ + int ret=0; + _adapter *adapter = wiphy_to_adapter(wiphy); + + DBG_871X(FUNC_NDEV_FMT"\n", FUNC_NDEV_ARG(ndev)); + ret = rtw_add_beacon(adapter, info->head, info->head_len, info->tail, info->tail_len); + + return ret; +} + +static int cfg80211_rtw_set_beacon(struct wiphy *wiphy, struct net_device *ndev, + struct beacon_parameters *info) +{ + _adapter *padapter = wiphy_to_adapter(wiphy); + struct mlme_ext_priv *pmlmeext = &(padapter->mlmeextpriv); + + DBG_871X(FUNC_NDEV_FMT"\n", FUNC_NDEV_ARG(ndev)); + + pmlmeext->bstart_bss = _TRUE; + + cfg80211_rtw_add_beacon(wiphy, ndev, info); + + return 0; +} + +static int cfg80211_rtw_del_beacon(struct wiphy *wiphy, struct net_device *ndev) +{ + DBG_871X(FUNC_NDEV_FMT"\n", FUNC_NDEV_ARG(ndev)); + + return 0; +} +#else +static int cfg80211_rtw_start_ap(struct wiphy *wiphy, struct net_device *ndev, + struct cfg80211_ap_settings *settings) +{ + int ret = 0; + _adapter *adapter = wiphy_to_adapter(wiphy); + + DBG_871X(FUNC_NDEV_FMT" hidden_ssid:%d, auth_type:%d\n", FUNC_NDEV_ARG(ndev), + settings->hidden_ssid, settings->auth_type); + + ret = rtw_add_beacon(adapter, settings->beacon.head, settings->beacon.head_len, + settings->beacon.tail, settings->beacon.tail_len); + + adapter->mlmeextpriv.mlmext_info.hidden_ssid_mode = settings->hidden_ssid; + + if (settings->ssid && settings->ssid_len) { + WLAN_BSSID_EX *pbss_network = &adapter->mlmepriv.cur_network.network; + WLAN_BSSID_EX *pbss_network_ext = &adapter->mlmeextpriv.mlmext_info.network; + + if(0) + DBG_871X(FUNC_ADPT_FMT" ssid:(%s,%d), from ie:(%s,%d)\n", FUNC_ADPT_ARG(adapter), + settings->ssid, settings->ssid_len, + pbss_network->Ssid.Ssid, pbss_network->Ssid.SsidLength); + + _rtw_memcpy(pbss_network->Ssid.Ssid, (void *)settings->ssid, settings->ssid_len); + pbss_network->Ssid.SsidLength = settings->ssid_len; + _rtw_memcpy(pbss_network_ext->Ssid.Ssid, (void *)settings->ssid, settings->ssid_len); + pbss_network_ext->Ssid.SsidLength = settings->ssid_len; + + if(0) + DBG_871X(FUNC_ADPT_FMT" after ssid:(%s,%d), (%s,%d)\n", FUNC_ADPT_ARG(adapter), + pbss_network->Ssid.Ssid, pbss_network->Ssid.SsidLength, + pbss_network_ext->Ssid.Ssid, pbss_network_ext->Ssid.SsidLength); + } + + return ret; +} + +static int cfg80211_rtw_change_beacon(struct wiphy *wiphy, struct net_device *ndev, + struct cfg80211_beacon_data *info) +{ + int ret = 0; + _adapter *adapter = wiphy_to_adapter(wiphy); + + DBG_871X(FUNC_NDEV_FMT"\n", FUNC_NDEV_ARG(ndev)); + + ret = rtw_add_beacon(adapter, info->head, info->head_len, info->tail, info->tail_len); + + return ret; +} + +static int cfg80211_rtw_stop_ap(struct wiphy *wiphy, struct net_device *ndev) +{ + DBG_871X(FUNC_NDEV_FMT"\n", FUNC_NDEV_ARG(ndev)); + return 0; +} + +#endif //(LINUX_VERSION_CODE < KERNEL_VERSION(3,4,0)) + +static int cfg80211_rtw_add_station(struct wiphy *wiphy, struct net_device *ndev, + u8 *mac, struct station_parameters *params) +{ + DBG_871X(FUNC_NDEV_FMT"\n", FUNC_NDEV_ARG(ndev)); + + return 0; +} + +static int cfg80211_rtw_del_station(struct wiphy *wiphy, struct net_device *ndev, + u8 *mac) +{ + int ret=0; + _irqL irqL; + _list *phead, *plist; + u8 updated; + struct sta_info *psta = NULL; + _adapter *padapter = (_adapter *)rtw_netdev_priv(ndev); + struct mlme_priv *pmlmepriv = &(padapter->mlmepriv); + struct sta_priv *pstapriv = &padapter->stapriv; + + DBG_871X("+"FUNC_NDEV_FMT"\n", FUNC_NDEV_ARG(ndev)); + + if(check_fwstate(pmlmepriv, (_FW_LINKED|WIFI_AP_STATE)) != _TRUE) + { + DBG_8192C("%s, fw_state != FW_LINKED|WIFI_AP_STATE\n", __func__); + return -EINVAL; + } + + + if(!mac) + { + DBG_8192C("flush all sta, and cam_entry\n"); + + flush_all_cam_entry(padapter); //clear CAM + + ret = rtw_sta_flush(padapter); + + return ret; + } + + + DBG_8192C("free sta macaddr =" MAC_FMT "\n", MAC_ARG(mac)); + + if (mac[0] == 0xff && mac[1] == 0xff && + mac[2] == 0xff && mac[3] == 0xff && + mac[4] == 0xff && mac[5] == 0xff) + { + return -EINVAL; + } + + + _enter_critical_bh(&pstapriv->asoc_list_lock, &irqL); + + phead = &pstapriv->asoc_list; + plist = get_next(phead); + + //check asoc_queue + while ((rtw_end_of_queue_search(phead, plist)) == _FALSE) + { + psta = LIST_CONTAINOR(plist, struct sta_info, asoc_list); + + plist = get_next(plist); + + if(_rtw_memcmp(mac, psta->hwaddr, ETH_ALEN)) + { + if(psta->dot8021xalg == 1 && psta->bpairwise_key_installed == _FALSE) + { + DBG_8192C("%s, sta's dot8021xalg = 1 and key_installed = _FALSE\n", __func__); + } + else + { + DBG_8192C("free psta=%p, aid=%d\n", psta, psta->aid); + + rtw_list_delete(&psta->asoc_list); + pstapriv->asoc_list_cnt--; + + //_exit_critical_bh(&pstapriv->asoc_list_lock, &irqL); + updated = ap_free_sta(padapter, psta, _TRUE, WLAN_REASON_DEAUTH_LEAVING); + //_enter_critical_bh(&pstapriv->asoc_list_lock, &irqL); + + psta = NULL; + + break; + } + + } + + } + + _exit_critical_bh(&pstapriv->asoc_list_lock, &irqL); + + associated_clients_update(padapter, updated); + + DBG_871X("-"FUNC_NDEV_FMT"\n", FUNC_NDEV_ARG(ndev)); + + return ret; + +} + +static int cfg80211_rtw_change_station(struct wiphy *wiphy, struct net_device *ndev, + u8 *mac, struct station_parameters *params) +{ + DBG_871X(FUNC_NDEV_FMT"\n", FUNC_NDEV_ARG(ndev)); + + return 0; +} + +static int cfg80211_rtw_dump_station(struct wiphy *wiphy, struct net_device *ndev, + int idx, u8 *mac, struct station_info *sinfo) +{ + DBG_871X(FUNC_NDEV_FMT"\n", FUNC_NDEV_ARG(ndev)); + + //TODO: dump scanned queue + + return -ENOENT; +} + +static int cfg80211_rtw_change_bss(struct wiphy *wiphy, struct net_device *ndev, + struct bss_parameters *params) +{ + u8 i; + + DBG_871X(FUNC_NDEV_FMT"\n", FUNC_NDEV_ARG(ndev)); +/* + DBG_8192C("use_cts_prot=%d\n", params->use_cts_prot); + DBG_8192C("use_short_preamble=%d\n", params->use_short_preamble); + DBG_8192C("use_short_slot_time=%d\n", params->use_short_slot_time); + DBG_8192C("ap_isolate=%d\n", params->ap_isolate); + + DBG_8192C("basic_rates_len=%d\n", params->basic_rates_len); + for(i=0; ibasic_rates_len; i++) + { + DBG_8192C("basic_rates=%d\n", params->basic_rates[i]); + + } +*/ + return 0; + +} + +static int cfg80211_rtw_set_channel(struct wiphy *wiphy + #if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35)) + , struct net_device *ndev + #endif + , struct ieee80211_channel *chan, enum nl80211_channel_type channel_type) +{ + #if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35)) + DBG_871X(FUNC_NDEV_FMT"\n", FUNC_NDEV_ARG(ndev)); + #endif + + return 0; +} + +static int cfg80211_rtw_auth(struct wiphy *wiphy, struct net_device *ndev, + struct cfg80211_auth_request *req) +{ + DBG_871X(FUNC_NDEV_FMT"\n", FUNC_NDEV_ARG(ndev)); + + return 0; +} + +static int cfg80211_rtw_assoc(struct wiphy *wiphy, struct net_device *ndev, + struct cfg80211_assoc_request *req) +{ + DBG_871X(FUNC_NDEV_FMT"\n", FUNC_NDEV_ARG(ndev)); + + return 0; +} +#endif //CONFIG_AP_MODE + +void rtw_cfg80211_rx_action_p2p(_adapter *padapter, u8 *pmgmt_frame, uint frame_len) +{ + int type; + s32 freq; + int channel; + struct mlme_ext_priv *pmlmeext = &(padapter->mlmeextpriv); + u8 category, action; + + channel = rtw_get_oper_ch(padapter); + + DBG_8192C("RTW_Rx:cur_ch=%d\n", channel); + #ifdef CONFIG_P2P + type = rtw_p2p_check_frames(padapter, pmgmt_frame, frame_len, _FALSE); + if (type >= 0) + goto indicate; + #endif + rtw_action_frame_parse(pmgmt_frame, frame_len, &category, &action); + DBG_871X("RTW_Rx:category(%u), action(%u)\n", category, action); + +indicate: + if (channel <= RTW_CH_MAX_2G_CHANNEL) + freq = rtw_ieee80211_channel_to_frequency(channel, IEEE80211_BAND_2GHZ); + else + freq = rtw_ieee80211_channel_to_frequency(channel, IEEE80211_BAND_5GHZ); + +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,37)) || defined(COMPAT_KERNEL_RELEASE) + rtw_cfg80211_rx_mgmt(padapter, freq, 0, pmgmt_frame, frame_len, GFP_ATOMIC); +#else + cfg80211_rx_action(padapter->pnetdev, freq, pmgmt_frame, frame_len, GFP_ATOMIC); +#endif +} + +void rtw_cfg80211_rx_p2p_action_public(_adapter *padapter, u8 *pmgmt_frame, uint frame_len) +{ + int type; + s32 freq; + int channel; + struct mlme_ext_priv *pmlmeext = &(padapter->mlmeextpriv); + u8 category, action; + + channel = rtw_get_oper_ch(padapter); + + DBG_8192C("RTW_Rx:cur_ch=%d\n", channel); + #ifdef CONFIG_P2P + type = rtw_p2p_check_frames(padapter, pmgmt_frame, frame_len, _FALSE); + if (type >= 0) { + switch (type) { + case P2P_GO_NEGO_CONF: + case P2P_PROVISION_DISC_RESP: + case P2P_INVIT_RESP: + rtw_set_scan_deny(padapter, 2000); + rtw_clear_scan_deny(padapter); + } + goto indicate; + } + #endif + rtw_action_frame_parse(pmgmt_frame, frame_len, &category, &action); + DBG_871X("RTW_Rx:category(%u), action(%u)\n", category, action); + +indicate: + if (channel <= RTW_CH_MAX_2G_CHANNEL) + freq = rtw_ieee80211_channel_to_frequency(channel, IEEE80211_BAND_2GHZ); + else + freq = rtw_ieee80211_channel_to_frequency(channel, IEEE80211_BAND_5GHZ); + +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,37)) || defined(COMPAT_KERNEL_RELEASE) + rtw_cfg80211_rx_mgmt(padapter, freq, 0, pmgmt_frame, frame_len, GFP_ATOMIC); +#else + cfg80211_rx_action(padapter->pnetdev, freq, pmgmt_frame, frame_len, GFP_ATOMIC); +#endif +} + +void rtw_cfg80211_rx_action(_adapter *adapter, u8 *frame, uint frame_len, const char*msg) +{ + s32 freq; + int channel; + struct mlme_ext_priv *pmlmeext = &(adapter->mlmeextpriv); + struct rtw_wdev_priv *pwdev_priv = wdev_to_priv(adapter->rtw_wdev); + u8 category, action; + + channel = rtw_get_oper_ch(adapter); + + rtw_action_frame_parse(frame, frame_len, &category, &action); + + DBG_8192C("RTW_Rx:cur_ch=%d\n", channel); + if (msg) + DBG_871X("RTW_Rx:%s\n", msg); + else + DBG_871X("RTW_Rx:category(%u), action(%u)\n", category, action); + + if (channel <= RTW_CH_MAX_2G_CHANNEL) + freq = rtw_ieee80211_channel_to_frequency(channel, IEEE80211_BAND_2GHZ); + else + freq = rtw_ieee80211_channel_to_frequency(channel, IEEE80211_BAND_5GHZ); + +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,37)) || defined(COMPAT_KERNEL_RELEASE) + rtw_cfg80211_rx_mgmt(adapter, freq, 0, frame, frame_len, GFP_ATOMIC); +#else + cfg80211_rx_action(adapter->pnetdev, freq, frame, frame_len, GFP_ATOMIC); +#endif + +} + +#ifdef CONFIG_P2P +void rtw_cfg80211_issue_p2p_provision_request(_adapter *padapter, const u8 *buf, size_t len) +{ + u16 wps_devicepassword_id = 0x0000; + uint wps_devicepassword_id_len = 0; + u8 wpsie[ 255 ] = { 0x00 }, p2p_ie[ 255 ] = { 0x00 }; + uint p2p_ielen = 0; + uint wpsielen = 0; + u32 devinfo_contentlen = 0; + u8 devinfo_content[64] = { 0x00 }; + u16 capability = 0; + uint capability_len = 0; + + unsigned char category = RTW_WLAN_CATEGORY_PUBLIC; + u8 action = P2P_PUB_ACTION_ACTION; + u8 dialogToken = 1; + u32 p2poui = cpu_to_be32(P2POUI); + u8 oui_subtype = P2P_PROVISION_DISC_REQ; + u32 p2pielen = 0; +#ifdef CONFIG_WFD + u32 wfdielen = 0; +#endif //CONFIG_WFD + + struct xmit_frame *pmgntframe; + struct pkt_attrib *pattrib; + unsigned char *pframe; + struct rtw_ieee80211_hdr *pwlanhdr; + unsigned short *fctrl; + struct xmit_priv *pxmitpriv = &(padapter->xmitpriv); + struct mlme_ext_priv *pmlmeext = &(padapter->mlmeextpriv); + struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info); + + struct wifidirect_info *pwdinfo = &(padapter->wdinfo); + u8 *frame_body = (unsigned char *)(buf + sizeof(struct rtw_ieee80211_hdr_3addr)); + size_t frame_body_len = len - sizeof(struct rtw_ieee80211_hdr_3addr); + + + DBG_871X( "[%s] In\n", __FUNCTION__ ); + + //prepare for building provision_request frame + _rtw_memcpy(pwdinfo->tx_prov_disc_info.peerIFAddr, GetAddr1Ptr(buf), ETH_ALEN); + _rtw_memcpy(pwdinfo->tx_prov_disc_info.peerDevAddr, GetAddr1Ptr(buf), ETH_ALEN); + + pwdinfo->tx_prov_disc_info.wps_config_method_request = WPS_CM_PUSH_BUTTON; + + rtw_get_wps_ie( frame_body + _PUBLIC_ACTION_IE_OFFSET_, frame_body_len - _PUBLIC_ACTION_IE_OFFSET_, wpsie, &wpsielen); + rtw_get_wps_attr_content( wpsie, wpsielen, WPS_ATTR_DEVICE_PWID, (u8*) &wps_devicepassword_id, &wps_devicepassword_id_len); + wps_devicepassword_id = be16_to_cpu( wps_devicepassword_id ); + + switch(wps_devicepassword_id) + { + case WPS_DPID_PIN: + pwdinfo->tx_prov_disc_info.wps_config_method_request = WPS_CM_LABEL; + break; + case WPS_DPID_USER_SPEC: + pwdinfo->tx_prov_disc_info.wps_config_method_request = WPS_CM_DISPLYA; + break; + case WPS_DPID_MACHINE_SPEC: + break; + case WPS_DPID_REKEY: + break; + case WPS_DPID_PBC: + pwdinfo->tx_prov_disc_info.wps_config_method_request = WPS_CM_PUSH_BUTTON; + break; + case WPS_DPID_REGISTRAR_SPEC: + pwdinfo->tx_prov_disc_info.wps_config_method_request = WPS_CM_KEYPAD; + break; + default: + break; + } + + + if ( rtw_get_p2p_ie( frame_body + _PUBLIC_ACTION_IE_OFFSET_, frame_body_len - _PUBLIC_ACTION_IE_OFFSET_, p2p_ie, &p2p_ielen ) ) + { + + rtw_get_p2p_attr_content( p2p_ie, p2p_ielen, P2P_ATTR_DEVICE_INFO, devinfo_content, &devinfo_contentlen); + rtw_get_p2p_attr_content( p2p_ie, p2p_ielen, P2P_ATTR_CAPABILITY, (u8*)&capability, &capability_len); + + } + + + //start to build provision_request frame + _rtw_memset(wpsie, 0, sizeof(wpsie)); + _rtw_memset(p2p_ie, 0, sizeof(p2p_ie)); + p2p_ielen = 0; + + if ((pmgntframe = alloc_mgtxmitframe(pxmitpriv)) == NULL) + { + return; + } + + + //update attribute + pattrib = &pmgntframe->attrib; + update_mgntframe_attrib(padapter, pattrib); + + _rtw_memset(pmgntframe->buf_addr, 0, WLANHDR_OFFSET + TXDESC_OFFSET); + + pframe = (u8 *)(pmgntframe->buf_addr) + TXDESC_OFFSET; + pwlanhdr = (struct rtw_ieee80211_hdr *)pframe; + + fctrl = &(pwlanhdr->frame_ctl); + *(fctrl) = 0; + + _rtw_memcpy(pwlanhdr->addr1, pwdinfo->tx_prov_disc_info.peerDevAddr, ETH_ALEN); + _rtw_memcpy(pwlanhdr->addr2, myid(&(padapter->eeprompriv)), ETH_ALEN); + _rtw_memcpy(pwlanhdr->addr3, pwdinfo->tx_prov_disc_info.peerDevAddr, ETH_ALEN); + + SetSeqNum(pwlanhdr, pmlmeext->mgnt_seq); + pmlmeext->mgnt_seq++; + SetFrameSubType(pframe, WIFI_ACTION); + + pframe += sizeof(struct rtw_ieee80211_hdr_3addr); + pattrib->pktlen = sizeof(struct rtw_ieee80211_hdr_3addr); + + pframe = rtw_set_fixed_ie(pframe, 1, &(category), &(pattrib->pktlen)); + pframe = rtw_set_fixed_ie(pframe, 1, &(action), &(pattrib->pktlen)); + pframe = rtw_set_fixed_ie(pframe, 4, (unsigned char *) &(p2poui), &(pattrib->pktlen)); + pframe = rtw_set_fixed_ie(pframe, 1, &(oui_subtype), &(pattrib->pktlen)); + pframe = rtw_set_fixed_ie(pframe, 1, &(dialogToken), &(pattrib->pktlen)); + + + //build_prov_disc_request_p2p_ie + // P2P OUI + p2pielen = 0; + p2p_ie[ p2pielen++ ] = 0x50; + p2p_ie[ p2pielen++ ] = 0x6F; + p2p_ie[ p2pielen++ ] = 0x9A; + p2p_ie[ p2pielen++ ] = 0x09; // WFA P2P v1.0 + + // Commented by Albert 20110301 + // According to the P2P Specification, the provision discovery request frame should contain 3 P2P attributes + // 1. P2P Capability + // 2. Device Info + // 3. Group ID ( When joining an operating P2P Group ) + + // P2P Capability ATTR + // Type: + p2p_ie[ p2pielen++ ] = P2P_ATTR_CAPABILITY; + + // Length: + //*(u16*) ( p2pie + p2pielen ) = cpu_to_le16( 0x0002 ); + RTW_PUT_LE16(p2p_ie + p2pielen, 0x0002); + p2pielen += 2; + + // Value: + // Device Capability Bitmap, 1 byte + // Group Capability Bitmap, 1 byte + _rtw_memcpy(p2p_ie + p2pielen, &capability, 2); + p2pielen += 2; + + + // Device Info ATTR + // Type: + p2p_ie[ p2pielen++ ] = P2P_ATTR_DEVICE_INFO; + + // Length: + // 21 -> P2P Device Address (6bytes) + Config Methods (2bytes) + Primary Device Type (8bytes) + // + NumofSecondDevType (1byte) + WPS Device Name ID field (2bytes) + WPS Device Name Len field (2bytes) + //*(u16*) ( p2pie + p2pielen ) = cpu_to_le16( 21 + pwdinfo->device_name_len ); + RTW_PUT_LE16(p2p_ie + p2pielen, devinfo_contentlen); + p2pielen += 2; + + // Value: + _rtw_memcpy(p2p_ie + p2pielen, devinfo_content, devinfo_contentlen); + p2pielen += devinfo_contentlen; + + + pframe = rtw_set_ie(pframe, _VENDOR_SPECIFIC_IE_, p2pielen, (unsigned char *) p2p_ie, &p2p_ielen); + //p2pielen = build_prov_disc_request_p2p_ie( pwdinfo, pframe, NULL, 0, pwdinfo->tx_prov_disc_info.peerDevAddr); + //pframe += p2pielen; + pattrib->pktlen += p2p_ielen; + + wpsielen = 0; + // WPS OUI + *(u32*) ( wpsie ) = cpu_to_be32( WPSOUI ); + wpsielen += 4; + + // WPS version + // Type: + *(u16*) ( wpsie + wpsielen ) = cpu_to_be16( WPS_ATTR_VER1 ); + wpsielen += 2; + + // Length: + *(u16*) ( wpsie + wpsielen ) = cpu_to_be16( 0x0001 ); + wpsielen += 2; + + // Value: + wpsie[wpsielen++] = WPS_VERSION_1; // Version 1.0 + + // Config Method + // Type: + *(u16*) ( wpsie + wpsielen ) = cpu_to_be16( WPS_ATTR_CONF_METHOD ); + wpsielen += 2; + + // Length: + *(u16*) ( wpsie + wpsielen ) = cpu_to_be16( 0x0002 ); + wpsielen += 2; + + // Value: + *(u16*) ( wpsie + wpsielen ) = cpu_to_be16( pwdinfo->tx_prov_disc_info.wps_config_method_request ); + wpsielen += 2; + + pframe = rtw_set_ie(pframe, _VENDOR_SPECIFIC_IE_, wpsielen, (unsigned char *) wpsie, &pattrib->pktlen ); + + +#ifdef CONFIG_WFD + wfdielen = build_provdisc_req_wfd_ie(pwdinfo, pframe); + pframe += wfdielen; + pattrib->pktlen += wfdielen; +#endif //CONFIG_WFD + + pattrib->last_txcmdsz = pattrib->pktlen; + + //dump_mgntframe(padapter, pmgntframe); + if (dump_mgntframe_and_wait_ack(padapter, pmgntframe) != _SUCCESS) + DBG_8192C("%s, ack to\n", __func__); + + //if(wps_devicepassword_id == WPS_DPID_REGISTRAR_SPEC) + //{ + // DBG_8192C("waiting for p2p peer key-in PIN CODE\n"); + // rtw_msleep_os(15000); // 15 sec for key in PIN CODE, workaround for GS2 before issuing Nego Req. + //} + +} + +static s32 cfg80211_rtw_remain_on_channel(struct wiphy *wiphy, +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,6,0)) + struct wireless_dev *wdev, +#else + struct net_device *ndev, +#endif + struct ieee80211_channel * channel, +#if (LINUX_VERSION_CODE < KERNEL_VERSION(3,8,0)) + enum nl80211_channel_type channel_type, +#endif + unsigned int duration, u64 *cookie) +{ + s32 err = 0; + _adapter *padapter = wiphy_to_adapter(wiphy); + struct rtw_wdev_priv *pwdev_priv = wdev_to_priv(padapter->rtw_wdev); + struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; + struct wifidirect_info *pwdinfo = &padapter->wdinfo; + struct cfg80211_wifidirect_info *pcfg80211_wdinfo = &padapter->cfg80211_wdinfo; + u8 remain_ch = (u8) ieee80211_frequency_to_channel(channel->center_freq); + u8 ready_on_channel = _FALSE; + + DBG_871X(FUNC_ADPT_FMT" ch:%u duration:%d\n", FUNC_ADPT_ARG(padapter), remain_ch, duration); + + if(pcfg80211_wdinfo->is_ro_ch == _TRUE) + { + DBG_8192C("%s, cancel ro ch timer\n", __func__); + + _cancel_timer_ex(&padapter->cfg80211_wdinfo.remain_on_ch_timer); + +#ifdef CONFIG_CONCURRENT_MODE + ATOMIC_SET(&pwdev_priv->ro_ch_to, 1); +#endif //CONFIG_CONCURRENT_MODE + + p2p_protocol_wk_hdl(padapter, P2P_RO_CH_WK); + } + + pcfg80211_wdinfo->is_ro_ch = _TRUE; + + if(_FAIL == rtw_pwr_wakeup(padapter)) { + err = -EFAULT; + goto exit; + } + + _rtw_memcpy(&pcfg80211_wdinfo->remain_on_ch_channel, channel, sizeof(struct ieee80211_channel)); + #if (LINUX_VERSION_CODE < KERNEL_VERSION(3,8,0)) + pcfg80211_wdinfo->remain_on_ch_type= channel_type; + #endif + pcfg80211_wdinfo->remain_on_ch_cookie= *cookie; + + rtw_scan_abort(padapter); +#ifdef CONFIG_CONCURRENT_MODE + if(rtw_buddy_adapter_up(padapter)) + rtw_scan_abort(padapter->pbuddy_adapter); +#endif //CONFIG_CONCURRENT_MODE + + //if(!rtw_p2p_chk_role(pwdinfo, P2P_ROLE_CLIENT) && !rtw_p2p_chk_role(pwdinfo, P2P_ROLE_GO)) + if(rtw_p2p_chk_state(pwdinfo, P2P_STATE_NONE)) + { + rtw_p2p_enable(padapter, P2P_ROLE_DEVICE); + wdev_to_priv(padapter->rtw_wdev)->p2p_enabled = _TRUE; + } + else + { + rtw_p2p_set_pre_state(pwdinfo, rtw_p2p_state(pwdinfo)); +#ifdef CONFIG_DEBUG_CFG80211 + DBG_8192C("%s, role=%d, p2p_state=%d\n", __func__, rtw_p2p_role(pwdinfo), rtw_p2p_state(pwdinfo)); +#endif + } + + + rtw_p2p_set_state(pwdinfo, P2P_STATE_LISTEN); + + + if(duration < 400) + duration = duration*3;//extend from exper. + + +#ifdef CONFIG_CONCURRENT_MODE + if(check_buddy_fwstate(padapter, _FW_LINKED) && + (durationext_listen_interval)) + { + duration = duration + pwdinfo->ext_listen_interval; + } +#endif + + pcfg80211_wdinfo->restore_channel = rtw_get_oper_ch(padapter); + + if(rtw_ch_set_search_ch(pmlmeext->channel_set, remain_ch) >= 0) { +#ifdef CONFIG_CONCURRENT_MODE + if ( check_buddy_fwstate(padapter, _FW_LINKED ) ) + { + PADAPTER pbuddy_adapter = padapter->pbuddy_adapter; + struct mlme_ext_priv *pbuddy_mlmeext = &pbuddy_adapter->mlmeextpriv; + + if(remain_ch != pbuddy_mlmeext->cur_channel) + { + if(ATOMIC_READ(&pwdev_priv->switch_ch_to)==1 || + (remain_ch != pmlmeext->cur_channel)) + { + DBG_8192C("%s, issue nulldata pwrbit=1\n", __func__); + issue_nulldata(padapter->pbuddy_adapter, NULL, 1, 3, 500); + + ATOMIC_SET(&pwdev_priv->switch_ch_to, 0); + + DBG_8192C("%s, set switch ch timer, duration=%d\n", __func__, duration-pwdinfo->ext_listen_interval); + _set_timer(&pwdinfo->ap_p2p_switch_timer, duration-pwdinfo->ext_listen_interval); + } + } + + ready_on_channel = _TRUE; + //pmlmeext->cur_channel = remain_ch; + //set_channel_bwmode(padapter, remain_ch, HAL_PRIME_CHNL_OFFSET_DONT_CARE, HT_CHANNEL_WIDTH_20); + }else +#endif //CONFIG_CONCURRENT_MODE + if(remain_ch != pmlmeext->cur_channel ) + { + ready_on_channel = _TRUE; + //pmlmeext->cur_channel = remain_ch; + //set_channel_bwmode(padapter, remain_ch, HAL_PRIME_CHNL_OFFSET_DONT_CARE, HT_CHANNEL_WIDTH_20); + } + } else { + DBG_871X("%s remain_ch:%u not in channel plan!!!!\n", __FUNCTION__, remain_ch); + } + + + //call this after other things have been done +#ifdef CONFIG_CONCURRENT_MODE + if(ATOMIC_READ(&pwdev_priv->ro_ch_to)==1 || + (remain_ch != pmlmeext->cur_channel)) + { + u8 co_channel = 0xff; + ATOMIC_SET(&pwdev_priv->ro_ch_to, 0); +#endif + + if(ready_on_channel == _TRUE) + { + if ( !check_fwstate(&padapter->mlmepriv, _FW_LINKED ) ) + pmlmeext->cur_channel = remain_ch; + +#ifdef CONFIG_CONCURRENT_MODE + co_channel = rtw_get_oper_ch(padapter); + + if(co_channel !=remain_ch) +#endif + { + if (!padapter->mlmepriv.LinkDetectInfo.bBusyTraffic) + set_channel_bwmode(padapter, remain_ch, HAL_PRIME_CHNL_OFFSET_DONT_CARE, HT_CHANNEL_WIDTH_20); + } + } + DBG_8192C("%s, set ro ch timer, duration=%d\n", __func__, duration); + _set_timer( &pcfg80211_wdinfo->remain_on_ch_timer, duration); + +#ifdef CONFIG_CONCURRENT_MODE + } +#endif + + rtw_cfg80211_ready_on_channel(padapter, *cookie, channel, channel_type, duration, GFP_KERNEL); + +exit: + if (err) + pcfg80211_wdinfo->is_ro_ch = _FALSE; + + return err; +} + +static s32 cfg80211_rtw_cancel_remain_on_channel(struct wiphy *wiphy, +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,6,0)) + struct wireless_dev *wdev, +#else + struct net_device *ndev, +#endif + u64 cookie) +{ + s32 err = 0; + _adapter *padapter = wiphy_to_adapter(wiphy); + struct rtw_wdev_priv *pwdev_priv = wdev_to_priv(padapter->rtw_wdev); + struct wifidirect_info *pwdinfo = &padapter->wdinfo; + struct pwrctrl_priv *pwrpriv = &padapter->pwrctrlpriv; + struct cfg80211_wifidirect_info *pcfg80211_wdinfo = &padapter->cfg80211_wdinfo; + + DBG_871X(FUNC_ADPT_FMT"\n", FUNC_ADPT_ARG(padapter)); + + if (pcfg80211_wdinfo->is_ro_ch == _TRUE) { + DBG_8192C("%s, cancel ro ch timer\n", __func__); + _cancel_timer_ex(&padapter->cfg80211_wdinfo.remain_on_ch_timer); + #ifdef CONFIG_CONCURRENT_MODE + ATOMIC_SET(&pwdev_priv->ro_ch_to, 1); + #endif + p2p_protocol_wk_hdl(padapter, P2P_RO_CH_WK); + } + + #if 0 + // Disable P2P Listen State + if(!rtw_p2p_chk_role(pwdinfo, P2P_ROLE_CLIENT) && !rtw_p2p_chk_role(pwdinfo, P2P_ROLE_GO)) + { + if(!rtw_p2p_chk_state(pwdinfo, P2P_STATE_NONE)) + { + _cancel_timer_ex( &pwdinfo->find_phase_timer ); + _cancel_timer_ex( &pwdinfo->restore_p2p_state_timer ); + _cancel_timer_ex( &pwdinfo->pre_tx_scan_timer); + + rtw_p2p_set_state(pwdinfo, P2P_STATE_NONE); + _rtw_memset(pwdinfo, 0x00, sizeof(struct wifidirect_info)); + } + } + else + #endif + { + rtw_p2p_set_state(pwdinfo, rtw_p2p_pre_state(pwdinfo)); +#ifdef CONFIG_DEBUG_CFG80211 + DBG_8192C("%s, role=%d, p2p_state=%d\n", __func__, rtw_p2p_role(pwdinfo), rtw_p2p_state(pwdinfo)); +#endif + } + pcfg80211_wdinfo->is_ro_ch = _FALSE; + + return err; +} + +#endif //CONFIG_P2P + +static int _cfg80211_rtw_mgmt_tx(_adapter *padapter, u8 tx_ch, const u8 *buf, size_t len) +{ + struct xmit_frame *pmgntframe; + struct pkt_attrib *pattrib; + unsigned char *pframe; + int ret = _FAIL; + bool ack = _TRUE; + struct rtw_ieee80211_hdr *pwlanhdr; + struct rtw_wdev_priv *pwdev_priv = wdev_to_priv(padapter->rtw_wdev); + struct xmit_priv *pxmitpriv = &(padapter->xmitpriv); + struct mlme_priv *pmlmepriv = &(padapter->mlmepriv); + struct mlme_ext_priv *pmlmeext = &(padapter->mlmeextpriv); + struct wifidirect_info *pwdinfo = &padapter->wdinfo; + //struct cfg80211_wifidirect_info *pcfg80211_wdinfo = &padapter->cfg80211_wdinfo; + + if(_FAIL == rtw_pwr_wakeup(padapter)) { + ret = -EFAULT; + goto exit; + } + + rtw_set_scan_deny(padapter, 1000); + + rtw_scan_abort(padapter); + #ifdef CONFIG_CONCURRENT_MODE + if(rtw_buddy_adapter_up(padapter)) + rtw_scan_abort(padapter->pbuddy_adapter); + #endif /* CONFIG_CONCURRENT_MODE */ + + if (padapter->cfg80211_wdinfo.is_ro_ch == _TRUE) { + //DBG_8192C("%s, cancel ro ch timer\n", __func__); + //_cancel_timer_ex(&padapter->cfg80211_wdinfo.remain_on_ch_timer); + //padapter->cfg80211_wdinfo.is_ro_ch = _FALSE; + #ifdef CONFIG_CONCURRENT_MODE + if (!check_fwstate(&padapter->mlmepriv, _FW_LINKED )) + { + DBG_8192C("%s, extend ro ch time\n", __func__); + _set_timer( &padapter->cfg80211_wdinfo.remain_on_ch_timer, pwdinfo->ext_listen_period); + } + #endif //CONFIG_CONCURRENT_MODE + } + +#ifdef CONFIG_CONCURRENT_MODE + if (check_buddy_fwstate(padapter, _FW_LINKED )) { + u8 co_channel=0xff; + PADAPTER pbuddy_adapter = padapter->pbuddy_adapter; + struct mlme_ext_priv *pbuddy_mlmeext = &pbuddy_adapter->mlmeextpriv; + + co_channel = rtw_get_oper_ch(padapter); + + if (tx_ch != pbuddy_mlmeext->cur_channel) { + + u16 ext_listen_period; + + if (ATOMIC_READ(&pwdev_priv->switch_ch_to)==1) { + DBG_8192C("%s, issue nulldata pwrbit=1\n", __func__); + issue_nulldata(padapter->pbuddy_adapter, NULL, 1, 3, 500); + + ATOMIC_SET(&pwdev_priv->switch_ch_to, 0); + + //DBG_8192C("%s, set switch ch timer, period=%d\n", __func__, pwdinfo->ext_listen_period); + //_set_timer(&pwdinfo->ap_p2p_switch_timer, pwdinfo->ext_listen_period); + } + + if (check_fwstate(&padapter->mlmepriv, _FW_LINKED )) + { + ext_listen_period = 500;// 500ms + } + else + { + ext_listen_period = pwdinfo->ext_listen_period; + } + + DBG_8192C("%s, set switch ch timer, period=%d\n", __func__, ext_listen_period); + _set_timer(&pwdinfo->ap_p2p_switch_timer, ext_listen_period); + + } + + if (!check_fwstate(&padapter->mlmepriv, _FW_LINKED )) + pmlmeext->cur_channel = tx_ch; + + if (tx_ch != co_channel) + set_channel_bwmode(padapter, tx_ch, HAL_PRIME_CHNL_OFFSET_DONT_CARE, HT_CHANNEL_WIDTH_20); + }else +#endif //CONFIG_CONCURRENT_MODE + //if (tx_ch != pmlmeext->cur_channel) { + if(tx_ch != rtw_get_oper_ch(padapter)) { + if (!check_fwstate(&padapter->mlmepriv, _FW_LINKED )) + pmlmeext->cur_channel = tx_ch; + set_channel_bwmode(padapter, tx_ch, HAL_PRIME_CHNL_OFFSET_DONT_CARE, HT_CHANNEL_WIDTH_20); + } + + //starting alloc mgmt frame to dump it + if ((pmgntframe = alloc_mgtxmitframe(pxmitpriv)) == NULL) + { + //ret = -ENOMEM; + ret = _FAIL; + goto exit; + } + + //update attribute + pattrib = &pmgntframe->attrib; + update_mgntframe_attrib(padapter, pattrib); + pattrib->retry_ctrl = _FALSE; + + _rtw_memset(pmgntframe->buf_addr, 0, WLANHDR_OFFSET + TXDESC_OFFSET); + + pframe = (u8 *)(pmgntframe->buf_addr) + TXDESC_OFFSET; + + _rtw_memcpy(pframe, (void*)buf, len); + pattrib->pktlen = len; + + pwlanhdr = (struct rtw_ieee80211_hdr *)pframe; + //update seq number + pmlmeext->mgnt_seq = GetSequence(pwlanhdr); + pattrib->seqnum = pmlmeext->mgnt_seq; + pmlmeext->mgnt_seq++; + +#ifdef CONFIG_WFD + { + struct wifi_display_info *pwfd_info; + + pwfd_info = padapter->wdinfo.wfd_info; + + if ( _TRUE == pwfd_info->wfd_enable ) + { + rtw_append_wfd_ie( padapter, pframe, &pattrib->pktlen ); + } + } +#endif // CONFIG_WFD + + pattrib->last_txcmdsz = pattrib->pktlen; + + if (dump_mgntframe_and_wait_ack(padapter, pmgntframe) != _SUCCESS) + { + ack = _FALSE; + ret = _FAIL; + + #ifdef CONFIG_DEBUG_CFG80211 + DBG_8192C("%s, ack == _FAIL\n", __func__); + #endif + } + else + { + #ifdef CONFIG_DEBUG_CFG80211 + DBG_8192C("%s, ack=%d, ok!\n", __func__, ack); + #endif + ret = _SUCCESS; + } + +exit: + + #ifdef CONFIG_DEBUG_CFG80211 + DBG_8192C("%s, ret=%d\n", __func__, ret); + #endif + + return ret; + +} + +static int cfg80211_rtw_mgmt_tx(struct wiphy *wiphy, +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,6,0)) + struct wireless_dev *wdev, +#else + struct net_device *ndev, +#endif + struct ieee80211_channel *chan, +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,38)) || defined(COMPAT_KERNEL_RELEASE) + bool offchan, +#endif +#if (LINUX_VERSION_CODE < KERNEL_VERSION(3,8,0)) + enum nl80211_channel_type channel_type, + #if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,37)) || defined(COMPAT_KERNEL_RELEASE) + bool channel_type_valid, + #endif +#endif +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,38)) || defined(COMPAT_KERNEL_RELEASE) + unsigned int wait, +#endif + const u8 *buf, size_t len, +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,2,0)) + bool no_cck, +#endif +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,3,0)) + bool dont_wait_for_ack, +#endif + u64 *cookie) +{ + _adapter *padapter = (_adapter *)wiphy_to_adapter(wiphy); + struct rtw_wdev_priv *pwdev_priv = wdev_to_priv(padapter->rtw_wdev); + int ret = 0; + int tx_ret; + u32 dump_limit = RTW_MAX_MGMT_TX_CNT; + u32 dump_cnt = 0; + bool ack = _TRUE; + u8 tx_ch = (u8)ieee80211_frequency_to_channel(chan->center_freq); + u8 category, action; + int type = (-1); + u32 start = rtw_get_current_time(); + + /* cookie generation */ + *cookie = (unsigned long) buf; + +#ifdef CONFIG_DEBUG_CFG80211 + DBG_871X(FUNC_ADPT_FMT" len=%zu, ch=%d" + #if (LINUX_VERSION_CODE < KERNEL_VERSION(3,8,0)) + ", ch_type=%d" + #if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,37)) || defined(COMPAT_KERNEL_RELEASE) + ", channel_type_valid=%d" + #endif + #endif + "\n", FUNC_ADPT_ARG(padapter), + len, tx_ch + #if (LINUX_VERSION_CODE < KERNEL_VERSION(3,8,0)) + , channel_type + #if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,37)) || defined(COMPAT_KERNEL_RELEASE) + , channel_type_valid + #endif + #endif + ); +#endif /* CONFIG_DEBUG_CFG80211 */ + + /* indicate ack before issue frame to avoid racing with rsp frame */ +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,37)) || defined(COMPAT_KERNEL_RELEASE) + rtw_cfg80211_mgmt_tx_status(padapter, *cookie, buf, len, ack, GFP_KERNEL); +#elif (LINUX_VERSION_CODE>=KERNEL_VERSION(2,6,34) && LINUX_VERSION_CODE<=KERNEL_VERSION(2,6,35)) + cfg80211_action_tx_status(ndev, *cookie, buf, len, ack, GFP_KERNEL); +#endif + + if (rtw_action_frame_parse(buf, len, &category, &action) == _FALSE) { + DBG_8192C(FUNC_ADPT_FMT" frame_control:0x%x\n", FUNC_ADPT_ARG(padapter), + le16_to_cpu(((struct rtw_ieee80211_hdr_3addr *)buf)->frame_ctl)); + goto exit; + } + + DBG_8192C("RTW_Tx:tx_ch=%d, da="MAC_FMT"\n", tx_ch, MAC_ARG(GetAddr1Ptr(buf))); + #ifdef CONFIG_P2P + if((type = rtw_p2p_check_frames(padapter, buf, len, _TRUE)) >= 0) { + goto dump; + } + #endif + if (category == RTW_WLAN_CATEGORY_PUBLIC) + DBG_871X("RTW_Tx:%s\n", action_public_str(action)); + else + DBG_871X("RTW_Tx:category(%u), action(%u)\n", category, action); + +dump: + do { + dump_cnt++; + tx_ret = _cfg80211_rtw_mgmt_tx(padapter, tx_ch, buf, len); + } while (dump_cnt < dump_limit && tx_ret != _SUCCESS); + + if (tx_ret != _SUCCESS || dump_cnt > 1) { + DBG_871X(FUNC_ADPT_FMT" %s (%d/%d) in %d ms\n", FUNC_ADPT_ARG(padapter), + tx_ret==_SUCCESS?"OK":"FAIL", dump_cnt, dump_limit, rtw_get_passing_time_ms(start)); + } + + switch (type) { + case P2P_GO_NEGO_CONF: + rtw_clear_scan_deny(padapter); + break; + case P2P_INVIT_RESP: + if (pwdev_priv->invit_info.flags & BIT(0) + && pwdev_priv->invit_info.status == 0) + { + DBG_871X(FUNC_ADPT_FMT" agree with invitation of persistent group\n", + FUNC_ADPT_ARG(padapter)); + rtw_set_scan_deny(padapter, 5000); + rtw_pwr_wakeup_ex(padapter, 5000); + rtw_clear_scan_deny(padapter); + } + break; + } + +exit: + return ret; +} + +static void cfg80211_rtw_mgmt_frame_register(struct wiphy *wiphy, +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 6, 0)) + struct wireless_dev *wdev, +#else + struct net_device *ndev, +#endif + u16 frame_type, bool reg) +{ + _adapter *adapter = wiphy_to_adapter(wiphy); + +#ifdef CONFIG_DEBUG_CFG80211 + DBG_871X(FUNC_ADPT_FMT" frame_type:%x, reg:%d\n", FUNC_ADPT_ARG(adapter), + frame_type, reg); +#endif + + if (frame_type != (IEEE80211_FTYPE_MGMT | IEEE80211_STYPE_PROBE_REQ)) + return; + + return; +} + +static int rtw_cfg80211_set_beacon_wpsp2pie(struct net_device *ndev, char *buf, int len) +{ + int ret = 0; + uint wps_ielen = 0; + u8 *wps_ie; + u32 p2p_ielen = 0; + u8 wps_oui[8]={0x0,0x50,0xf2,0x04}; + u8 *p2p_ie; + u32 wfd_ielen = 0; + u8 *wfd_ie; + _adapter *padapter = (_adapter *)rtw_netdev_priv(ndev); + struct mlme_priv *pmlmepriv = &(padapter->mlmepriv); + struct mlme_ext_priv *pmlmeext = &(padapter->mlmeextpriv); + + DBG_871X(FUNC_NDEV_FMT" ielen=%d\n", FUNC_NDEV_ARG(ndev), len); + + if(len>0) + { + if((wps_ie = rtw_get_wps_ie(buf, len, NULL, &wps_ielen))) + { + #ifdef CONFIG_DEBUG_CFG80211 + DBG_8192C("bcn_wps_ielen=%d\n", wps_ielen); + #endif + + if(pmlmepriv->wps_beacon_ie) + { + u32 free_len = pmlmepriv->wps_beacon_ie_len; + pmlmepriv->wps_beacon_ie_len = 0; + rtw_mfree(pmlmepriv->wps_beacon_ie, free_len); + pmlmepriv->wps_beacon_ie = NULL; + } + + pmlmepriv->wps_beacon_ie = rtw_malloc(wps_ielen); + if ( pmlmepriv->wps_beacon_ie == NULL) { + DBG_8192C("%s()-%d: rtw_malloc() ERROR!\n", __FUNCTION__, __LINE__); + return -EINVAL; + + } + + _rtw_memcpy(pmlmepriv->wps_beacon_ie, wps_ie, wps_ielen); + pmlmepriv->wps_beacon_ie_len = wps_ielen; + + update_beacon(padapter, _VENDOR_SPECIFIC_IE_, wps_oui, _TRUE); + + } + + //buf += wps_ielen; + //len -= wps_ielen; + + #ifdef CONFIG_P2P + if((p2p_ie=rtw_get_p2p_ie(buf, len, NULL, &p2p_ielen))) + { + #ifdef CONFIG_DEBUG_CFG80211 + DBG_8192C("bcn_p2p_ielen=%d\n", p2p_ielen); + #endif + + if(pmlmepriv->p2p_beacon_ie) + { + u32 free_len = pmlmepriv->p2p_beacon_ie_len; + pmlmepriv->p2p_beacon_ie_len = 0; + rtw_mfree(pmlmepriv->p2p_beacon_ie, free_len); + pmlmepriv->p2p_beacon_ie = NULL; + } + + pmlmepriv->p2p_beacon_ie = rtw_malloc(p2p_ielen); + if ( pmlmepriv->p2p_beacon_ie == NULL) { + DBG_8192C("%s()-%d: rtw_malloc() ERROR!\n", __FUNCTION__, __LINE__); + return -EINVAL; + + } + + _rtw_memcpy(pmlmepriv->p2p_beacon_ie, p2p_ie, p2p_ielen); + pmlmepriv->p2p_beacon_ie_len = p2p_ielen; + + } + #endif //CONFIG_P2P + + //buf += p2p_ielen; + //len -= p2p_ielen; + + #ifdef CONFIG_WFD + if(rtw_get_wfd_ie(buf, len, NULL, &wfd_ielen)) + { + #ifdef CONFIG_DEBUG_CFG80211 + DBG_8192C("bcn_wfd_ielen=%d\n", wfd_ielen); + #endif + + if(pmlmepriv->wfd_beacon_ie) + { + u32 free_len = pmlmepriv->wfd_beacon_ie_len; + pmlmepriv->wfd_beacon_ie_len = 0; + rtw_mfree(pmlmepriv->wfd_beacon_ie, free_len); + pmlmepriv->wfd_beacon_ie = NULL; + } + + pmlmepriv->wfd_beacon_ie = rtw_malloc(wfd_ielen); + if ( pmlmepriv->wfd_beacon_ie == NULL) { + DBG_8192C("%s()-%d: rtw_malloc() ERROR!\n", __FUNCTION__, __LINE__); + return -EINVAL; + + } + rtw_get_wfd_ie(buf, len, pmlmepriv->wfd_beacon_ie, &pmlmepriv->wfd_beacon_ie_len); + } + #endif //CONFIG_WFD + + pmlmeext->bstart_bss = _TRUE; + + } + + return ret; + +} + +static int rtw_cfg80211_set_probe_resp_wpsp2pie(struct net_device *net, char *buf, int len) +{ + int ret = 0; + uint wps_ielen = 0; + u8 *wps_ie; + u32 p2p_ielen = 0; + u8 *p2p_ie; + u32 wfd_ielen = 0; + u8 *wfd_ie; + _adapter *padapter = (_adapter *)rtw_netdev_priv(net); + struct mlme_priv *pmlmepriv = &(padapter->mlmepriv); + +#ifdef CONFIG_DEBUG_CFG80211 + DBG_8192C("%s, ielen=%d\n", __func__, len); +#endif + + if(len>0) + { + if((wps_ie = rtw_get_wps_ie(buf, len, NULL, &wps_ielen))) + { + uint attr_contentlen = 0; + u16 uconfig_method, *puconfig_method = NULL; + + #ifdef CONFIG_DEBUG_CFG80211 + DBG_8192C("probe_resp_wps_ielen=%d\n", wps_ielen); + #endif + + if(check_fwstate(pmlmepriv, WIFI_UNDER_WPS)) + { + u8 sr = 0; + rtw_get_wps_attr_content(wps_ie, wps_ielen, WPS_ATTR_SELECTED_REGISTRAR, (u8*)(&sr), NULL); + + if (sr != 0) + { + DBG_871X("%s, got sr\n", __func__); + } + else + { + DBG_8192C("GO mode process WPS under site-survey, sr no set\n"); + return ret; + } + } + + if(pmlmepriv->wps_probe_resp_ie) + { + u32 free_len = pmlmepriv->wps_probe_resp_ie_len; + pmlmepriv->wps_probe_resp_ie_len = 0; + rtw_mfree(pmlmepriv->wps_probe_resp_ie, free_len); + pmlmepriv->wps_probe_resp_ie = NULL; + } + + pmlmepriv->wps_probe_resp_ie = rtw_malloc(wps_ielen); + if ( pmlmepriv->wps_probe_resp_ie == NULL) { + DBG_8192C("%s()-%d: rtw_malloc() ERROR!\n", __FUNCTION__, __LINE__); + return -EINVAL; + + } + + //add PUSH_BUTTON config_method by driver self in wpsie of probe_resp at GO Mode + if ( (puconfig_method = (u16*)rtw_get_wps_attr_content( wps_ie, wps_ielen, WPS_ATTR_CONF_METHOD , NULL, &attr_contentlen)) != NULL ) + { + #ifdef CONFIG_DEBUG_CFG80211 + //printk("config_method in wpsie of probe_resp = 0x%x\n", be16_to_cpu(*puconfig_method)); + #endif + + uconfig_method = WPS_CM_PUSH_BUTTON; + uconfig_method = cpu_to_be16( uconfig_method ); + + *puconfig_method |= uconfig_method; + } + + _rtw_memcpy(pmlmepriv->wps_probe_resp_ie, wps_ie, wps_ielen); + pmlmepriv->wps_probe_resp_ie_len = wps_ielen; + + } + + //buf += wps_ielen; + //len -= wps_ielen; + + #ifdef CONFIG_P2P + if((p2p_ie=rtw_get_p2p_ie(buf, len, NULL, &p2p_ielen))) + { + u8 is_GO = _FALSE; + u32 attr_contentlen = 0; + u16 cap_attr=0; + + #ifdef CONFIG_DEBUG_CFG80211 + DBG_8192C("probe_resp_p2p_ielen=%d\n", p2p_ielen); + #endif + + //Check P2P Capability ATTR + if( rtw_get_p2p_attr_content( p2p_ie, p2p_ielen, P2P_ATTR_CAPABILITY, (u8*)&cap_attr, (uint*) &attr_contentlen) ) + { + u8 grp_cap=0; + //DBG_8192C( "[%s] Got P2P Capability Attr!!\n", __FUNCTION__ ); + cap_attr = le16_to_cpu(cap_attr); + grp_cap = (u8)((cap_attr >> 8)&0xff); + + is_GO = (grp_cap&BIT(0)) ? _TRUE:_FALSE; + + if(is_GO) + DBG_8192C("Got P2P Capability Attr, grp_cap=0x%x, is_GO\n", grp_cap); + } + + + if(is_GO == _FALSE) + { + if(pmlmepriv->p2p_probe_resp_ie) + { + u32 free_len = pmlmepriv->p2p_probe_resp_ie_len; + pmlmepriv->p2p_probe_resp_ie_len = 0; + rtw_mfree(pmlmepriv->p2p_probe_resp_ie, free_len); + pmlmepriv->p2p_probe_resp_ie = NULL; + } + + pmlmepriv->p2p_probe_resp_ie = rtw_malloc(p2p_ielen); + if ( pmlmepriv->p2p_probe_resp_ie == NULL) { + DBG_8192C("%s()-%d: rtw_malloc() ERROR!\n", __FUNCTION__, __LINE__); + return -EINVAL; + + } + _rtw_memcpy(pmlmepriv->p2p_probe_resp_ie, p2p_ie, p2p_ielen); + pmlmepriv->p2p_probe_resp_ie_len = p2p_ielen; + } + else + { + if(pmlmepriv->p2p_go_probe_resp_ie) + { + u32 free_len = pmlmepriv->p2p_go_probe_resp_ie_len; + pmlmepriv->p2p_go_probe_resp_ie_len = 0; + rtw_mfree(pmlmepriv->p2p_go_probe_resp_ie, free_len); + pmlmepriv->p2p_go_probe_resp_ie = NULL; + } + + pmlmepriv->p2p_go_probe_resp_ie = rtw_malloc(p2p_ielen); + if ( pmlmepriv->p2p_go_probe_resp_ie == NULL) { + DBG_8192C("%s()-%d: rtw_malloc() ERROR!\n", __FUNCTION__, __LINE__); + return -EINVAL; + + } + _rtw_memcpy(pmlmepriv->p2p_go_probe_resp_ie, p2p_ie, p2p_ielen); + pmlmepriv->p2p_go_probe_resp_ie_len = p2p_ielen; + } + + } + #endif //CONFIG_P2P + + //buf += p2p_ielen; + //len -= p2p_ielen; + + #ifdef CONFIG_WFD + if(rtw_get_wfd_ie(buf, len, NULL, &wfd_ielen)) + { + #ifdef CONFIG_DEBUG_CFG80211 + DBG_8192C("probe_resp_wfd_ielen=%d\n", wfd_ielen); + #endif + + if(pmlmepriv->wfd_probe_resp_ie) + { + u32 free_len = pmlmepriv->wfd_probe_resp_ie_len; + pmlmepriv->wfd_probe_resp_ie_len = 0; + rtw_mfree(pmlmepriv->wfd_probe_resp_ie, free_len); + pmlmepriv->wfd_probe_resp_ie = NULL; + } + + pmlmepriv->wfd_probe_resp_ie = rtw_malloc(wfd_ielen); + if ( pmlmepriv->wfd_probe_resp_ie == NULL) { + DBG_8192C("%s()-%d: rtw_malloc() ERROR!\n", __FUNCTION__, __LINE__); + return -EINVAL; + + } + rtw_get_wfd_ie(buf, len, pmlmepriv->wfd_probe_resp_ie, &pmlmepriv->wfd_probe_resp_ie_len); + } + #endif //CONFIG_WFD + + } + + return ret; + +} + +static int rtw_cfg80211_set_assoc_resp_wpsp2pie(struct net_device *net, char *buf, int len) +{ + int ret = 0; + _adapter *padapter = (_adapter *)rtw_netdev_priv(net); + struct mlme_priv *pmlmepriv = &(padapter->mlmepriv); + + DBG_8192C("%s, ielen=%d\n", __func__, len); + + if(len>0) + { + if(pmlmepriv->wps_assoc_resp_ie) + { + u32 free_len = pmlmepriv->wps_assoc_resp_ie_len; + pmlmepriv->wps_assoc_resp_ie_len = 0; + rtw_mfree(pmlmepriv->wps_assoc_resp_ie, free_len); + pmlmepriv->wps_assoc_resp_ie = NULL; + } + + pmlmepriv->wps_assoc_resp_ie = rtw_malloc(len); + if ( pmlmepriv->wps_assoc_resp_ie == NULL) { + DBG_8192C("%s()-%d: rtw_malloc() ERROR!\n", __FUNCTION__, __LINE__); + return -EINVAL; + + } + _rtw_memcpy(pmlmepriv->wps_assoc_resp_ie, buf, len); + pmlmepriv->wps_assoc_resp_ie_len = len; + } + + return ret; + +} + +int rtw_cfg80211_set_mgnt_wpsp2pie(struct net_device *net, char *buf, int len, + int type) +{ + int ret = 0; + uint wps_ielen = 0; + u32 p2p_ielen = 0; + +#ifdef CONFIG_DEBUG_CFG80211 + DBG_8192C("%s, ielen=%d\n", __func__, len); +#endif + + if( (rtw_get_wps_ie(buf, len, NULL, &wps_ielen) && (wps_ielen>0)) + #ifdef CONFIG_P2P + || (rtw_get_p2p_ie(buf, len, NULL, &p2p_ielen) && (p2p_ielen>0)) + #endif + ) + { + if (net != NULL) + { + switch (type) + { + case 0x1: //BEACON + ret = rtw_cfg80211_set_beacon_wpsp2pie(net, buf, len); + break; + case 0x2: //PROBE_RESP + ret = rtw_cfg80211_set_probe_resp_wpsp2pie(net, buf, len); + break; + case 0x4: //ASSOC_RESP + ret = rtw_cfg80211_set_assoc_resp_wpsp2pie(net, buf, len); + break; + } + } + } + + return ret; + +} + +static struct cfg80211_ops rtw_cfg80211_ops = { + .change_virtual_intf = cfg80211_rtw_change_iface, + .add_key = cfg80211_rtw_add_key, + .get_key = cfg80211_rtw_get_key, + .del_key = cfg80211_rtw_del_key, + .set_default_key = cfg80211_rtw_set_default_key, + .get_station = cfg80211_rtw_get_station, + .scan = cfg80211_rtw_scan, + .set_wiphy_params = cfg80211_rtw_set_wiphy_params, + .connect = cfg80211_rtw_connect, + .disconnect = cfg80211_rtw_disconnect, + .join_ibss = cfg80211_rtw_join_ibss, + .leave_ibss = cfg80211_rtw_leave_ibss, + .set_tx_power = cfg80211_rtw_set_txpower, + .get_tx_power = cfg80211_rtw_get_txpower, + .set_power_mgmt = cfg80211_rtw_set_power_mgmt, + .set_pmksa = cfg80211_rtw_set_pmksa, + .del_pmksa = cfg80211_rtw_del_pmksa, + .flush_pmksa = cfg80211_rtw_flush_pmksa, + +#ifdef CONFIG_AP_MODE + .add_virtual_intf = cfg80211_rtw_add_virtual_intf, + .del_virtual_intf = cfg80211_rtw_del_virtual_intf, + + #if (LINUX_VERSION_CODE < KERNEL_VERSION(3, 4, 0)) && !defined(COMPAT_KERNEL_RELEASE) + .add_beacon = cfg80211_rtw_add_beacon, + .set_beacon = cfg80211_rtw_set_beacon, + .del_beacon = cfg80211_rtw_del_beacon, + #else + .start_ap = cfg80211_rtw_start_ap, + .change_beacon = cfg80211_rtw_change_beacon, + .stop_ap = cfg80211_rtw_stop_ap, + #endif + + .add_station = cfg80211_rtw_add_station, + .del_station = cfg80211_rtw_del_station, + .change_station = cfg80211_rtw_change_station, + .dump_station = cfg80211_rtw_dump_station, + .change_bss = cfg80211_rtw_change_bss, + #if (LINUX_VERSION_CODE < KERNEL_VERSION(3, 6, 0)) + .set_channel = cfg80211_rtw_set_channel, + #endif + //.auth = cfg80211_rtw_auth, + //.assoc = cfg80211_rtw_assoc, +#endif //CONFIG_AP_MODE + +#ifdef CONFIG_P2P + .remain_on_channel = cfg80211_rtw_remain_on_channel, + .cancel_remain_on_channel = cfg80211_rtw_cancel_remain_on_channel, +#endif + +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,37)) || defined(COMPAT_KERNEL_RELEASE) + .mgmt_tx = cfg80211_rtw_mgmt_tx, + .mgmt_frame_register = cfg80211_rtw_mgmt_frame_register, +#elif (LINUX_VERSION_CODE>=KERNEL_VERSION(2,6,34) && LINUX_VERSION_CODE<=KERNEL_VERSION(2,6,35)) + .action = cfg80211_rtw_mgmt_tx, +#endif +}; + +static void rtw_cfg80211_init_ht_capab(struct ieee80211_sta_ht_cap *ht_cap, enum ieee80211_band band, u8 rf_type) +{ + +#define MAX_BIT_RATE_40MHZ_MCS15 300 /* Mbps */ +#define MAX_BIT_RATE_40MHZ_MCS7 150 /* Mbps */ + + ht_cap->ht_supported = _TRUE; + + ht_cap->cap = IEEE80211_HT_CAP_SUP_WIDTH_20_40 | + IEEE80211_HT_CAP_SGI_40 | IEEE80211_HT_CAP_SGI_20 | + IEEE80211_HT_CAP_DSSSCCK40 | IEEE80211_HT_CAP_MAX_AMSDU; + + /* + *Maximum length of AMPDU that the STA can receive. + *Length = 2 ^ (13 + max_ampdu_length_exp) - 1 (octets) + */ + ht_cap->ampdu_factor = IEEE80211_HT_MAX_AMPDU_64K; + + /*Minimum MPDU start spacing , */ + ht_cap->ampdu_density = IEEE80211_HT_MPDU_DENSITY_16; + + ht_cap->mcs.tx_params = IEEE80211_HT_MCS_TX_DEFINED; + + /* + *hw->wiphy->bands[IEEE80211_BAND_2GHZ] + *base on ant_num + *rx_mask: RX mask + *if rx_ant =1 rx_mask[0]=0xff;==>MCS0-MCS7 + *if rx_ant =2 rx_mask[1]=0xff;==>MCS8-MCS15 + *if rx_ant >=3 rx_mask[2]=0xff; + *if BW_40 rx_mask[4]=0x01; + *highest supported RX rate + */ + if(rf_type == RF_1T1R) + { + ht_cap->mcs.rx_mask[0] = 0xFF; + ht_cap->mcs.rx_mask[1] = 0x00; + ht_cap->mcs.rx_mask[4] = 0x01; + + ht_cap->mcs.rx_highest = MAX_BIT_RATE_40MHZ_MCS7; + } + else if((rf_type == RF_1T2R) || (rf_type==RF_2T2R)) + { + ht_cap->mcs.rx_mask[0] = 0xFF; + ht_cap->mcs.rx_mask[1] = 0xFF; + ht_cap->mcs.rx_mask[4] = 0x01; + + ht_cap->mcs.rx_highest = MAX_BIT_RATE_40MHZ_MCS15; + } + else + { + DBG_8192C("%s, error rf_type=%d\n", __func__, rf_type); + } + +} + +void rtw_cfg80211_init_wiphy(_adapter *padapter) +{ + u8 rf_type; + struct ieee80211_supported_band *bands; + struct wireless_dev *pwdev = padapter->rtw_wdev; + struct wiphy *wiphy = pwdev->wiphy; + + rtw_hal_get_hwreg(padapter, HW_VAR_RF_TYPE, (u8 *)(&rf_type)); + + DBG_8192C("%s:rf_type=%d\n", __func__, rf_type); + + /* if (padapter->registrypriv.wireless_mode & WIRELESS_11G) */ + { + bands = wiphy->bands[IEEE80211_BAND_2GHZ]; + if(bands) + rtw_cfg80211_init_ht_capab(&bands->ht_cap, IEEE80211_BAND_2GHZ, rf_type); + } + + /* if (padapter->registrypriv.wireless_mode & WIRELESS_11A) */ + { + bands = wiphy->bands[IEEE80211_BAND_5GHZ]; + if(bands) + rtw_cfg80211_init_ht_capab(&bands->ht_cap, IEEE80211_BAND_5GHZ, rf_type); + } +} + +/* +struct ieee80211_iface_limit rtw_limits[] = { + { .max = 1, .types = BIT(NL80211_IFTYPE_STATION) + | BIT(NL80211_IFTYPE_ADHOC) +#ifdef CONFIG_AP_MODE + | BIT(NL80211_IFTYPE_AP) +#endif +#if defined(CONFIG_P2P) && ((LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,37)) || defined(COMPAT_KERNEL_RELEASE)) + | BIT(NL80211_IFTYPE_P2P_CLIENT) + | BIT(NL80211_IFTYPE_P2P_GO) +#endif + }, + {.max = 1, .types = BIT(NL80211_IFTYPE_MONITOR)}, +}; + +struct ieee80211_iface_combination rtw_combinations = { + .limits = rtw_limits, + .n_limits = ARRAY_SIZE(rtw_limits), + .max_interfaces = 2, + .num_different_channels = 1, +}; +*/ + +static void rtw_cfg80211_preinit_wiphy(_adapter *padapter, struct wiphy *wiphy) +{ + + wiphy->signal_type = CFG80211_SIGNAL_TYPE_MBM; + + wiphy->max_scan_ssids = RTW_SSID_SCAN_AMOUNT; + wiphy->max_scan_ie_len = RTW_SCAN_IE_LEN_MAX; + wiphy->max_num_pmkids = RTW_MAX_NUM_PMKIDS; + +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,38)) || defined(COMPAT_KERNEL_RELEASE) + wiphy->max_remain_on_channel_duration = RTW_MAX_REMAIN_ON_CHANNEL_DURATION; +#endif + + wiphy->interface_modes = BIT(NL80211_IFTYPE_STATION) + | BIT(NL80211_IFTYPE_ADHOC) +#ifdef CONFIG_AP_MODE + | BIT(NL80211_IFTYPE_AP) + | BIT(NL80211_IFTYPE_MONITOR) +#endif +#if defined(CONFIG_P2P) && ((LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,37)) || defined(COMPAT_KERNEL_RELEASE)) + | BIT(NL80211_IFTYPE_P2P_CLIENT) + | BIT(NL80211_IFTYPE_P2P_GO) +#endif + ; + +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,37)) || defined(COMPAT_KERNEL_RELEASE) +#ifdef CONFIG_AP_MODE + wiphy->mgmt_stypes = rtw_cfg80211_default_mgmt_stypes; +#endif //CONFIG_AP_MODE +#endif + +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,0,0)) + wiphy->software_iftypes |= BIT(NL80211_IFTYPE_MONITOR); +#endif + + /* + wiphy->iface_combinations = &rtw_combinations; + wiphy->n_iface_combinations = 1; + */ + + wiphy->cipher_suites = rtw_cipher_suites; + wiphy->n_cipher_suites = ARRAY_SIZE(rtw_cipher_suites); + + /* if (padapter->registrypriv.wireless_mode & WIRELESS_11G) */ + wiphy->bands[IEEE80211_BAND_2GHZ] = rtw_spt_band_alloc(IEEE80211_BAND_2GHZ); + /* if (padapter->registrypriv.wireless_mode & WIRELESS_11A) */ + wiphy->bands[IEEE80211_BAND_5GHZ] = rtw_spt_band_alloc(IEEE80211_BAND_5GHZ); + +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,38) && LINUX_VERSION_CODE < KERNEL_VERSION(3,0,0)) + wiphy->flags |= WIPHY_FLAG_SUPPORTS_SEPARATE_DEFAULT_KEYS; +#endif + +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,3,0)) + wiphy->flags |= WIPHY_FLAG_HAS_REMAIN_ON_CHANNEL; + wiphy->flags |= WIPHY_FLAG_OFFCHAN_TX | WIPHY_FLAG_HAVE_AP_SME; +#endif + + if(padapter->registrypriv.power_mgnt != PS_MODE_ACTIVE) + wiphy->flags |= WIPHY_FLAG_PS_ON_BY_DEFAULT; + else + wiphy->flags &= ~WIPHY_FLAG_PS_ON_BY_DEFAULT; +} + +int rtw_wdev_alloc(_adapter *padapter, struct device *dev) +{ + int ret = 0; + struct wiphy *wiphy; + struct wireless_dev *wdev; + struct rtw_wdev_priv *pwdev_priv; + struct net_device *pnetdev = padapter->pnetdev; + + DBG_8192C("%s(padapter=%p)\n", __func__, padapter); + + /* wiphy */ + wiphy = wiphy_new(&rtw_cfg80211_ops, sizeof(struct rtw_wdev_priv)); + if (!wiphy) { + DBG_8192C("Couldn't allocate wiphy device\n"); + ret = -ENOMEM; + goto exit; + } + set_wiphy_dev(wiphy, dev); + rtw_cfg80211_preinit_wiphy(padapter, wiphy); + + ret = wiphy_register(wiphy); + if (ret < 0) { + DBG_8192C("Couldn't register wiphy device\n"); + goto free_wiphy; + } + + /* wdev */ + wdev = (struct wireless_dev *)rtw_zmalloc(sizeof(struct wireless_dev)); + if (!wdev) { + DBG_8192C("Couldn't allocate wireless device\n"); + ret = -ENOMEM; + goto unregister_wiphy; + } + wdev->wiphy = wiphy; + wdev->netdev = pnetdev; + //wdev->iftype = NL80211_IFTYPE_STATION; + wdev->iftype = NL80211_IFTYPE_MONITOR; // for rtw_setopmode_cmd() in cfg80211_rtw_change_iface() + padapter->rtw_wdev = wdev; + pnetdev->ieee80211_ptr = wdev; + + //init pwdev_priv + pwdev_priv = wdev_to_priv(wdev); + pwdev_priv->rtw_wdev = wdev; + pwdev_priv->pmon_ndev = NULL; + pwdev_priv->ifname_mon[0] = '\0'; + pwdev_priv->padapter = padapter; + pwdev_priv->scan_request = NULL; + _rtw_spinlock_init(&pwdev_priv->scan_req_lock); + + pwdev_priv->p2p_enabled = _FALSE; + pwdev_priv->provdisc_req_issued = _FALSE; + rtw_wdev_invit_info_init(&pwdev_priv->invit_info); + rtw_wdev_nego_info_init(&pwdev_priv->nego_info); + + pwdev_priv->bandroid_scan = _FALSE; + + if(padapter->registrypriv.power_mgnt != PS_MODE_ACTIVE) + pwdev_priv->power_mgmt = _TRUE; + else + pwdev_priv->power_mgmt = _FALSE; + +#ifdef CONFIG_CONCURRENT_MODE + ATOMIC_SET(&pwdev_priv->switch_ch_to, 1); + ATOMIC_SET(&pwdev_priv->ro_ch_to, 1); +#endif + + return ret; + + rtw_mfree((u8*)wdev, sizeof(struct wireless_dev)); +unregister_wiphy: + wiphy_unregister(wiphy); + free_wiphy: + wiphy_free(wiphy); +exit: + return ret; + +} + +void rtw_wdev_free(struct wireless_dev *wdev) +{ + struct rtw_wdev_priv *pwdev_priv; + + DBG_8192C("%s(wdev=%p)\n", __func__, wdev); + + if (!wdev) + return; + + pwdev_priv = wdev_to_priv(wdev); + + rtw_spt_band_free(wdev->wiphy->bands[IEEE80211_BAND_2GHZ]); + rtw_spt_band_free(wdev->wiphy->bands[IEEE80211_BAND_5GHZ]); + + wiphy_free(wdev->wiphy); + + rtw_mfree((u8*)wdev, sizeof(struct wireless_dev)); +} + +void rtw_wdev_unregister(struct wireless_dev *wdev) +{ + struct rtw_wdev_priv *pwdev_priv; + + DBG_8192C("%s(wdev=%p)\n", __func__, wdev); + + if (!wdev) + return; + + pwdev_priv = wdev_to_priv(wdev); + + rtw_cfg80211_indicate_scan_done(pwdev_priv, _TRUE); + + if (pwdev_priv->pmon_ndev) { + DBG_8192C("%s, unregister monitor interface\n", __func__); + unregister_netdev(pwdev_priv->pmon_ndev); + } + + wiphy_unregister(wdev->wiphy); +} + +#endif //CONFIG_IOCTL_CFG80211 --- linux-raspi2-4.2.0.orig/drivers/net/wireless/rtl8192cu/os_dep/linux/ioctl_linux.c +++ linux-raspi2-4.2.0/drivers/net/wireless/rtl8192cu/os_dep/linux/ioctl_linux.c @@ -0,0 +1,11908 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved. + * + * 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 + * published by the Free Software Foundation. + * + * 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 Street, Fifth Floor, Boston, MA 02110, USA + * + * + ******************************************************************************/ +#define _IOCTL_LINUX_C_ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +//#ifdef CONFIG_MP_INCLUDED +#include +//#endif + +#ifdef CONFIG_USB_HCI +#include +#endif //CONFIG_USB_HCI +#include + +#ifdef CONFIG_MP_INCLUDED +#include +#endif + +#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,27)) +#define iwe_stream_add_event(a, b, c, d, e) iwe_stream_add_event(b, c, d, e) +#define iwe_stream_add_point(a, b, c, d, e) iwe_stream_add_point(b, c, d, e) +#endif + + +#define RTL_IOCTL_WPA_SUPPLICANT SIOCIWFIRSTPRIV+30 + +#define SCAN_ITEM_SIZE 768 +#define MAX_CUSTOM_LEN 64 +#define RATE_COUNT 4 + +#ifdef CONFIG_GLOBAL_UI_PID +extern int ui_pid[3]; +#endif + +// combo scan +#define WEXT_CSCAN_AMOUNT 9 +#define WEXT_CSCAN_BUF_LEN 360 +#define WEXT_CSCAN_HEADER "CSCAN S\x01\x00\x00S\x00" +#define WEXT_CSCAN_HEADER_SIZE 12 +#define WEXT_CSCAN_SSID_SECTION 'S' +#define WEXT_CSCAN_CHANNEL_SECTION 'C' +#define WEXT_CSCAN_NPROBE_SECTION 'N' +#define WEXT_CSCAN_ACTV_DWELL_SECTION 'A' +#define WEXT_CSCAN_PASV_DWELL_SECTION 'P' +#define WEXT_CSCAN_HOME_DWELL_SECTION 'H' +#define WEXT_CSCAN_TYPE_SECTION 'T' + + +extern u8 key_2char2num(u8 hch, u8 lch); +extern u8 str_2char2num(u8 hch, u8 lch); +extern u8 convert_ip_addr(u8 hch, u8 mch, u8 lch); + +u32 rtw_rates[] = {1000000,2000000,5500000,11000000, + 6000000,9000000,12000000,18000000,24000000,36000000,48000000,54000000}; + +static const char * const iw_operation_mode[] = +{ + "Auto", "Ad-Hoc", "Managed", "Master", "Repeater", "Secondary", "Monitor" +}; + +static int hex2num_i(char c) +{ + if (c >= '0' && c <= '9') + return c - '0'; + if (c >= 'a' && c <= 'f') + return c - 'a' + 10; + if (c >= 'A' && c <= 'F') + return c - 'A' + 10; + return -1; +} + +static int hex2byte_i(const char *hex) +{ + int a, b; + a = hex2num_i(*hex++); + if (a < 0) + return -1; + b = hex2num_i(*hex++); + if (b < 0) + return -1; + return (a << 4) | b; +} + +/** + * hwaddr_aton - Convert ASCII string to MAC address + * @txt: MAC address as a string (e.g., "00:11:22:33:44:55") + * @addr: Buffer for the MAC address (ETH_ALEN = 6 bytes) + * Returns: 0 on success, -1 on failure (e.g., string not a MAC address) + */ +static int hwaddr_aton_i(const char *txt, u8 *addr) +{ + int i; + + for (i = 0; i < 6; i++) { + int a, b; + + a = hex2num_i(*txt++); + if (a < 0) + return -1; + b = hex2num_i(*txt++); + if (b < 0) + return -1; + *addr++ = (a << 4) | b; + if (i < 5 && *txt++ != ':') + return -1; + } + + return 0; +} + +static void indicate_wx_custom_event(_adapter *padapter, char *msg) +{ +#ifndef CONFIG_IOCTL_CFG80211 + u8 *buff, *p; + union iwreq_data wrqu; + + if ((u32)strlen(msg) > IW_CUSTOM_MAX) { + DBG_871X("%s strlen(msg):%u > IW_CUSTOM_MAX:%u\n", __FUNCTION__ ,(u32)strlen(msg), IW_CUSTOM_MAX); + return; + } + + buff = rtw_zmalloc(IW_CUSTOM_MAX+1); + if(!buff) + return; + + _rtw_memcpy(buff, msg, strlen(msg)); + + _rtw_memset(&wrqu,0,sizeof(wrqu)); + wrqu.data.length = strlen(msg); + + DBG_871X("%s %s\n", __FUNCTION__, buff); + wireless_send_event(padapter->pnetdev, IWEVCUSTOM, &wrqu, buff); + + rtw_mfree(buff, IW_CUSTOM_MAX+1); +#endif +} + + +static void request_wps_pbc_event(_adapter *padapter) +{ +#ifndef CONFIG_IOCTL_CFG80211 + u8 *buff, *p; + union iwreq_data wrqu; + + buff = rtw_malloc(IW_CUSTOM_MAX); + if(!buff) + return; + + _rtw_memset(buff, 0, IW_CUSTOM_MAX); + + p=buff; + + p+=sprintf(p, "WPS_PBC_START.request=TRUE"); + + _rtw_memset(&wrqu,0,sizeof(wrqu)); + + wrqu.data.length = p-buff; + + wrqu.data.length = (wrqu.data.lengthpnetdev, IWEVCUSTOM, &wrqu, buff); + + if(buff) + { + rtw_mfree(buff, IW_CUSTOM_MAX); + } +#endif +} + + +void indicate_wx_scan_complete_event(_adapter *padapter) +{ +#ifndef CONFIG_IOCTL_CFG80211 + union iwreq_data wrqu; + struct mlme_priv *pmlmepriv = &padapter->mlmepriv; + + _rtw_memset(&wrqu, 0, sizeof(union iwreq_data)); + + //DBG_871X("+rtw_indicate_wx_scan_complete_event\n"); + wireless_send_event(padapter->pnetdev, SIOCGIWSCAN, &wrqu, NULL); +#endif +} + + +void rtw_indicate_wx_assoc_event(_adapter *padapter) +{ +#ifndef CONFIG_IOCTL_CFG80211 + union iwreq_data wrqu; + struct mlme_priv *pmlmepriv = &padapter->mlmepriv; + + _rtw_memset(&wrqu, 0, sizeof(union iwreq_data)); + + wrqu.ap_addr.sa_family = ARPHRD_ETHER; + + _rtw_memcpy(wrqu.ap_addr.sa_data, pmlmepriv->cur_network.network.MacAddress, ETH_ALEN); + + //DBG_871X("+rtw_indicate_wx_assoc_event\n"); + wireless_send_event(padapter->pnetdev, SIOCGIWAP, &wrqu, NULL); +#endif +} + +void rtw_indicate_wx_disassoc_event(_adapter *padapter) +{ +#ifndef CONFIG_IOCTL_CFG80211 + union iwreq_data wrqu; + + _rtw_memset(&wrqu, 0, sizeof(union iwreq_data)); + + wrqu.ap_addr.sa_family = ARPHRD_ETHER; + _rtw_memset(wrqu.ap_addr.sa_data, 0, ETH_ALEN); + + //DBG_871X("+rtw_indicate_wx_disassoc_event\n"); + wireless_send_event(padapter->pnetdev, SIOCGIWAP, &wrqu, NULL); +#endif +} + +/* +uint rtw_is_cckrates_included(u8 *rate) +{ + u32 i = 0; + + while(rate[i]!=0) + { + if ( (((rate[i]) & 0x7f) == 2) || (((rate[i]) & 0x7f) == 4) || + (((rate[i]) & 0x7f) == 11) || (((rate[i]) & 0x7f) == 22) ) + return _TRUE; + i++; + } + + return _FALSE; +} + +uint rtw_is_cckratesonly_included(u8 *rate) +{ + u32 i = 0; + + while(rate[i]!=0) + { + if ( (((rate[i]) & 0x7f) != 2) && (((rate[i]) & 0x7f) != 4) && + (((rate[i]) & 0x7f) != 11) && (((rate[i]) & 0x7f) != 22) ) + return _FALSE; + i++; + } + + return _TRUE; +} +*/ + +static char *translate_scan(_adapter *padapter, + struct iw_request_info* info, struct wlan_network *pnetwork, + char *start, char *stop) +{ + struct iw_event iwe; + u16 cap; + u32 ht_ielen = 0; + char custom[MAX_CUSTOM_LEN]; + char *p; + u16 max_rate=0, rate, ht_cap=_FALSE; + u32 i = 0; + char *current_val; + long rssi; + u8 bw_40MHz=0, short_GI=0; + u16 mcs_rate=0; + struct registry_priv *pregpriv = &padapter->registrypriv; +#ifdef CONFIG_P2P + struct wifidirect_info *pwdinfo = &padapter->wdinfo; +#endif //CONFIG_P2P + +#ifdef CONFIG_P2P +#ifdef CONFIG_WFD + if ( SCAN_RESULT_ALL == pwdinfo->wfd_info->scan_result_type ) + { + + } + else if ( ( SCAN_RESULT_P2P_ONLY == pwdinfo->wfd_info->scan_result_type ) || + ( SCAN_RESULT_WFD_TYPE == pwdinfo->wfd_info->scan_result_type ) ) +#endif // CONFIG_WFD + { + if(!rtw_p2p_chk_state(pwdinfo, P2P_STATE_NONE)) + { + u32 blnGotP2PIE = _FALSE; + + // User is doing the P2P device discovery + // The prefix of SSID should be "DIRECT-" and the IE should contains the P2P IE. + // If not, the driver should ignore this AP and go to the next AP. + + // Verifying the SSID + if ( _rtw_memcmp( pnetwork->network.Ssid.Ssid, pwdinfo->p2p_wildcard_ssid, P2P_WILDCARD_SSID_LEN ) ) + { + u32 p2pielen = 0; + + // Verifying the P2P IE + if ( rtw_get_p2p_ie( &pnetwork->network.IEs[12], pnetwork->network.IELength - 12, NULL, &p2pielen) ) + { + blnGotP2PIE = _TRUE; + } + } + + if ( blnGotP2PIE == _FALSE ) + { + return start; + } + + } + } + +#ifdef CONFIG_WFD + if ( SCAN_RESULT_WFD_TYPE == pwdinfo->wfd_info->scan_result_type ) + { + u32 blnGotWFD = _FALSE; + u8 wfd_ie[ 128 ] = { 0x00 }; + uint wfd_ielen = 0; + + if ( rtw_get_wfd_ie( &pnetwork->network.IEs[12], pnetwork->network.IELength - 12, wfd_ie, &wfd_ielen ) ) + { + u8 wfd_devinfo[ 6 ] = { 0x00 }; + uint wfd_devlen = 6; + + if ( rtw_get_wfd_attr_content( wfd_ie, wfd_ielen, WFD_ATTR_DEVICE_INFO, wfd_devinfo, &wfd_devlen) ) + { + if ( pwdinfo->wfd_info->wfd_device_type == WFD_DEVINFO_PSINK ) + { + // the first two bits will indicate the WFD device type + if ( ( wfd_devinfo[ 1 ] & 0x03 ) == WFD_DEVINFO_SOURCE ) + { + // If this device is Miracast PSink device, the scan reuslt should just provide the Miracast source. + blnGotWFD = _TRUE; + } + } + else if ( pwdinfo->wfd_info->wfd_device_type == WFD_DEVINFO_SOURCE ) + { + // the first two bits will indicate the WFD device type + if ( ( wfd_devinfo[ 1 ] & 0x03 ) == WFD_DEVINFO_PSINK ) + { + // If this device is Miracast source device, the scan reuslt should just provide the Miracast PSink. + // Todo: How about the SSink?! + blnGotWFD = _TRUE; + } + } + } + } + + if ( blnGotWFD == _FALSE ) + { + return start; + } + } +#endif // CONFIG_WFD + +#endif //CONFIG_P2P + /* AP MAC address */ + iwe.cmd = SIOCGIWAP; + iwe.u.ap_addr.sa_family = ARPHRD_ETHER; + + _rtw_memcpy(iwe.u.ap_addr.sa_data, pnetwork->network.MacAddress, ETH_ALEN); + start = iwe_stream_add_event(info, start, stop, &iwe, IW_EV_ADDR_LEN); + + /* Add the ESSID */ + iwe.cmd = SIOCGIWESSID; + iwe.u.data.flags = 1; + iwe.u.data.length = min((u16)pnetwork->network.Ssid.SsidLength, (u16)32); + start = iwe_stream_add_point(info, start, stop, &iwe, pnetwork->network.Ssid.Ssid); + + //parsing HT_CAP_IE + p = rtw_get_ie(&pnetwork->network.IEs[12], _HT_CAPABILITY_IE_, &ht_ielen, pnetwork->network.IELength-12); + + if(p && ht_ielen>0) + { + struct rtw_ieee80211_ht_cap *pht_capie; + ht_cap = _TRUE; + pht_capie = (struct rtw_ieee80211_ht_cap *)(p+2); + _rtw_memcpy(&mcs_rate , pht_capie->supp_mcs_set, 2); + bw_40MHz = (pht_capie->cap_info&IEEE80211_HT_CAP_SUP_WIDTH) ? 1:0; + short_GI = (pht_capie->cap_info&(IEEE80211_HT_CAP_SGI_20|IEEE80211_HT_CAP_SGI_40)) ? 1:0; + } + + /* Add the protocol name */ + iwe.cmd = SIOCGIWNAME; + if ((rtw_is_cckratesonly_included((u8*)&pnetwork->network.SupportedRates)) == _TRUE) + { + if(ht_cap == _TRUE) + snprintf(iwe.u.name, IFNAMSIZ, "IEEE 802.11bn"); + else + snprintf(iwe.u.name, IFNAMSIZ, "IEEE 802.11b"); + } + else if ((rtw_is_cckrates_included((u8*)&pnetwork->network.SupportedRates)) == _TRUE) + { + if(ht_cap == _TRUE) + snprintf(iwe.u.name, IFNAMSIZ, "IEEE 802.11bgn"); + else + snprintf(iwe.u.name, IFNAMSIZ, "IEEE 802.11bg"); + } + else + { + if(pnetwork->network.Configuration.DSConfig > 14) + { + if(ht_cap == _TRUE) + snprintf(iwe.u.name, IFNAMSIZ, "IEEE 802.11an"); + else + snprintf(iwe.u.name, IFNAMSIZ, "IEEE 802.11a"); + } + else + { + if(ht_cap == _TRUE) + snprintf(iwe.u.name, IFNAMSIZ, "IEEE 802.11gn"); + else + snprintf(iwe.u.name, IFNAMSIZ, "IEEE 802.11g"); + } + } + + start = iwe_stream_add_event(info, start, stop, &iwe, IW_EV_CHAR_LEN); + + /* Add mode */ + iwe.cmd = SIOCGIWMODE; + _rtw_memcpy((u8 *)&cap, rtw_get_capability_from_ie(pnetwork->network.IEs), 2); + + + cap = le16_to_cpu(cap); + + if(cap & (WLAN_CAPABILITY_IBSS |WLAN_CAPABILITY_BSS)){ + if (cap & WLAN_CAPABILITY_BSS) + iwe.u.mode = IW_MODE_MASTER; + else + iwe.u.mode = IW_MODE_ADHOC; + + start = iwe_stream_add_event(info, start, stop, &iwe, IW_EV_UINT_LEN); + } + + if(pnetwork->network.Configuration.DSConfig<1 /*|| pnetwork->network.Configuration.DSConfig>14*/) + pnetwork->network.Configuration.DSConfig = 1; + + /* Add frequency/channel */ + iwe.cmd = SIOCGIWFREQ; + iwe.u.freq.m = rtw_ch2freq(pnetwork->network.Configuration.DSConfig) * 100000; + iwe.u.freq.e = 1; + iwe.u.freq.i = pnetwork->network.Configuration.DSConfig; + start = iwe_stream_add_event(info, start, stop, &iwe, IW_EV_FREQ_LEN); + + /* Add encryption capability */ + iwe.cmd = SIOCGIWENCODE; + if (cap & WLAN_CAPABILITY_PRIVACY) + iwe.u.data.flags = IW_ENCODE_ENABLED | IW_ENCODE_NOKEY; + else + iwe.u.data.flags = IW_ENCODE_DISABLED; + iwe.u.data.length = 0; + start = iwe_stream_add_point(info, start, stop, &iwe, pnetwork->network.Ssid.Ssid); + + /*Add basic and extended rates */ + max_rate = 0; + p = custom; + p += snprintf(p, MAX_CUSTOM_LEN - (p - custom), " Rates (Mb/s): "); + while(pnetwork->network.SupportedRates[i]!=0) + { + rate = pnetwork->network.SupportedRates[i]&0x7F; + if (rate > max_rate) + max_rate = rate; + p += snprintf(p, MAX_CUSTOM_LEN - (p - custom), + "%d%s ", rate >> 1, (rate & 1) ? ".5" : ""); + i++; + } + + if(ht_cap == _TRUE) + { + if(mcs_rate&0x8000)//MCS15 + { + max_rate = (bw_40MHz) ? ((short_GI)?300:270):((short_GI)?144:130); + + } + else if(mcs_rate&0x0080)//MCS7 + { + max_rate = (bw_40MHz) ? ((short_GI)?150:135):((short_GI)?72:65); + } + else//default MCS7 + { + DBG_871X("wx_get_scan, mcs_rate_bitmap=0x%x\n", mcs_rate); + max_rate = (bw_40MHz) ? ((short_GI)?150:135):((short_GI)?72:65); + } + + max_rate = max_rate*2;//Mbps/2; + } + + iwe.cmd = SIOCGIWRATE; + iwe.u.bitrate.fixed = iwe.u.bitrate.disabled = 0; + iwe.u.bitrate.value = max_rate * 500000; + start = iwe_stream_add_event(info, start, stop, &iwe, IW_EV_PARAM_LEN); + + //parsing WPA/WPA2 IE + { + u8 buf[MAX_WPA_IE_LEN]; + u8 wpa_ie[255],rsn_ie[255]; + u16 wpa_len=0,rsn_len=0; + u8 *p; + sint out_len=0; + out_len=rtw_get_sec_ie(pnetwork->network.IEs ,pnetwork->network.IELength,rsn_ie,&rsn_len,wpa_ie,&wpa_len); + RT_TRACE(_module_rtl871x_mlme_c_,_drv_info_,("rtw_wx_get_scan: ssid=%s\n",pnetwork->network.Ssid.Ssid)); + RT_TRACE(_module_rtl871x_mlme_c_,_drv_info_,("rtw_wx_get_scan: wpa_len=%d rsn_len=%d\n",wpa_len,rsn_len)); + + if (wpa_len > 0) + { + p=buf; + _rtw_memset(buf, 0, MAX_WPA_IE_LEN); + p += sprintf(p, "wpa_ie="); + for (i = 0; i < wpa_len; i++) { + p += sprintf(p, "%02x", wpa_ie[i]); + } + + _rtw_memset(&iwe, 0, sizeof(iwe)); + iwe.cmd = IWEVCUSTOM; + iwe.u.data.length = strlen(buf); + start = iwe_stream_add_point(info, start, stop, &iwe,buf); + + _rtw_memset(&iwe, 0, sizeof(iwe)); + iwe.cmd =IWEVGENIE; + iwe.u.data.length = wpa_len; + start = iwe_stream_add_point(info, start, stop, &iwe, wpa_ie); + } + if (rsn_len > 0) + { + p = buf; + _rtw_memset(buf, 0, MAX_WPA_IE_LEN); + p += sprintf(p, "rsn_ie="); + for (i = 0; i < rsn_len; i++) { + p += sprintf(p, "%02x", rsn_ie[i]); + } + _rtw_memset(&iwe, 0, sizeof(iwe)); + iwe.cmd = IWEVCUSTOM; + iwe.u.data.length = strlen(buf); + start = iwe_stream_add_point(info, start, stop, &iwe,buf); + + _rtw_memset(&iwe, 0, sizeof(iwe)); + iwe.cmd =IWEVGENIE; + iwe.u.data.length = rsn_len; + start = iwe_stream_add_point(info, start, stop, &iwe, rsn_ie); + } + } + + { //parsing WPS IE + uint cnt = 0,total_ielen; + u8 *wpsie_ptr=NULL; + uint wps_ielen = 0; + + u8 *ie_ptr = pnetwork->network.IEs +_FIXED_IE_LENGTH_; + total_ielen= pnetwork->network.IELength - _FIXED_IE_LENGTH_; + + while(cnt < total_ielen) + { + if(rtw_is_wps_ie(&ie_ptr[cnt], &wps_ielen) && (wps_ielen>2)) + { + wpsie_ptr = &ie_ptr[cnt]; + iwe.cmd =IWEVGENIE; + iwe.u.data.length = (u16)wps_ielen; + start = iwe_stream_add_point(info, start, stop, &iwe, wpsie_ptr); + } + cnt+=ie_ptr[cnt+1]+2; //goto next + } + } + + +{ + struct mlme_priv *pmlmepriv = &(padapter->mlmepriv); + u8 ss, sq; + + /* Add quality statistics */ + iwe.cmd = IWEVQUAL; + iwe.u.qual.updated = IW_QUAL_QUAL_UPDATED | IW_QUAL_LEVEL_UPDATED | IW_QUAL_NOISE_INVALID + #ifdef CONFIG_SIGNAL_DISPLAY_DBM + | IW_QUAL_DBM + #endif + ; + + if ( check_fwstate(pmlmepriv, _FW_LINKED)== _TRUE && + is_same_network(&pmlmepriv->cur_network.network, &pnetwork->network)) { + ss = padapter->recvpriv.signal_strength; + sq = padapter->recvpriv.signal_qual; + } else { + ss = pnetwork->network.PhyInfo.SignalStrength; + sq = pnetwork->network.PhyInfo.SignalQuality; + } + + + #ifdef CONFIG_SIGNAL_DISPLAY_DBM + iwe.u.qual.level = (u8) translate_percentage_to_dbm(ss);//dbm + #else + iwe.u.qual.level = (u8)ss;//% + #endif + + iwe.u.qual.qual = (u8)sq; // signal quality + + #ifdef CONFIG_PLATFORM_ROCKCHIPS + iwe.u.qual.noise = -100; // noise level suggest by zhf@rockchips + #else + iwe.u.qual.noise = 0; // noise level + #endif //CONFIG_PLATFORM_ROCKCHIPS + + //DBG_871X("iqual=%d, ilevel=%d, inoise=%d, iupdated=%d\n", iwe.u.qual.qual, iwe.u.qual.level , iwe.u.qual.noise, iwe.u.qual.updated); + + start = iwe_stream_add_event(info, start, stop, &iwe, IW_EV_QUAL_LEN); +} + + return start; +} + +static int wpa_set_auth_algs(struct net_device *dev, u32 value) +{ + _adapter *padapter = (_adapter *) rtw_netdev_priv(dev); + int ret = 0; + + if ((value & AUTH_ALG_SHARED_KEY)&&(value & AUTH_ALG_OPEN_SYSTEM)) + { + DBG_871X("wpa_set_auth_algs, AUTH_ALG_SHARED_KEY and AUTH_ALG_OPEN_SYSTEM [value:0x%x]\n",value); + padapter->securitypriv.ndisencryptstatus = Ndis802_11Encryption1Enabled; + padapter->securitypriv.ndisauthtype = Ndis802_11AuthModeAutoSwitch; + padapter->securitypriv.dot11AuthAlgrthm = dot11AuthAlgrthm_Auto; + } + else if (value & AUTH_ALG_SHARED_KEY) + { + DBG_871X("wpa_set_auth_algs, AUTH_ALG_SHARED_KEY [value:0x%x]\n",value); + padapter->securitypriv.ndisencryptstatus = Ndis802_11Encryption1Enabled; + +#ifdef CONFIG_PLATFORM_MT53XX + padapter->securitypriv.ndisauthtype = Ndis802_11AuthModeAutoSwitch; + padapter->securitypriv.dot11AuthAlgrthm = dot11AuthAlgrthm_Auto; +#else + padapter->securitypriv.ndisauthtype = Ndis802_11AuthModeShared; + padapter->securitypriv.dot11AuthAlgrthm = dot11AuthAlgrthm_Shared; +#endif + } + else if(value & AUTH_ALG_OPEN_SYSTEM) + { + DBG_871X("wpa_set_auth_algs, AUTH_ALG_OPEN_SYSTEM\n"); + //padapter->securitypriv.ndisencryptstatus = Ndis802_11EncryptionDisabled; + if(padapter->securitypriv.ndisauthtype < Ndis802_11AuthModeWPAPSK) + { +#ifdef CONFIG_PLATFORM_MT53XX + padapter->securitypriv.ndisauthtype = Ndis802_11AuthModeAutoSwitch; + padapter->securitypriv.dot11AuthAlgrthm = dot11AuthAlgrthm_Auto; +#else + padapter->securitypriv.ndisauthtype = Ndis802_11AuthModeOpen; + padapter->securitypriv.dot11AuthAlgrthm = dot11AuthAlgrthm_Open; +#endif + } + + } + else if(value & AUTH_ALG_LEAP) + { + DBG_871X("wpa_set_auth_algs, AUTH_ALG_LEAP\n"); + } + else + { + DBG_871X("wpa_set_auth_algs, error!\n"); + ret = -EINVAL; + } + + return ret; + +} + +static int wpa_set_encryption(struct net_device *dev, struct ieee_param *param, u32 param_len) +{ + int ret = 0; + u32 wep_key_idx, wep_key_len,wep_total_len; + NDIS_802_11_WEP *pwep = NULL; + _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); + struct mlme_priv *pmlmepriv = &padapter->mlmepriv; + struct security_priv *psecuritypriv = &padapter->securitypriv; +#ifdef CONFIG_P2P + struct wifidirect_info* pwdinfo = &padapter->wdinfo; +#endif //CONFIG_P2P + +_func_enter_; + + param->u.crypt.err = 0; + param->u.crypt.alg[IEEE_CRYPT_ALG_NAME_LEN - 1] = '\0'; + + if (param_len < (u32) ((u8 *) param->u.crypt.key - (u8 *) param) + param->u.crypt.key_len) + { + ret = -EINVAL; + goto exit; + } + + if (param->sta_addr[0] == 0xff && param->sta_addr[1] == 0xff && + param->sta_addr[2] == 0xff && param->sta_addr[3] == 0xff && + param->sta_addr[4] == 0xff && param->sta_addr[5] == 0xff) + { + + if (param->u.crypt.idx >= WEP_KEYS +#ifdef CONFIG_IEEE80211W + && param->u.crypt.idx > BIP_MAX_KEYID +#endif //CONFIG_IEEE80211W + ) + { + ret = -EINVAL; + goto exit; + } + } + else + { + + { + ret = -EINVAL; + goto exit; + } + } + + if (strcmp(param->u.crypt.alg, "WEP") == 0) + { + RT_TRACE(_module_rtl871x_ioctl_os_c,_drv_err_,("wpa_set_encryption, crypt.alg = WEP\n")); + DBG_871X("wpa_set_encryption, crypt.alg = WEP\n"); + + padapter->securitypriv.ndisencryptstatus = Ndis802_11Encryption1Enabled; + padapter->securitypriv.dot11PrivacyAlgrthm=_WEP40_; + padapter->securitypriv.dot118021XGrpPrivacy=_WEP40_; + + wep_key_idx = param->u.crypt.idx; + wep_key_len = param->u.crypt.key_len; + + RT_TRACE(_module_rtl871x_ioctl_os_c,_drv_info_,("(1)wep_key_idx=%d\n", wep_key_idx)); + DBG_871X("(1)wep_key_idx=%d\n", wep_key_idx); + + if (wep_key_idx > WEP_KEYS) + return -EINVAL; + + RT_TRACE(_module_rtl871x_ioctl_os_c,_drv_info_,("(2)wep_key_idx=%d\n", wep_key_idx)); + + if (wep_key_len > 0) + { + wep_key_len = wep_key_len <= 5 ? 5 : 13; + wep_total_len = wep_key_len + FIELD_OFFSET(NDIS_802_11_WEP, KeyMaterial); + pwep =(NDIS_802_11_WEP *) rtw_malloc(wep_total_len); + if(pwep == NULL){ + RT_TRACE(_module_rtl871x_ioctl_os_c,_drv_err_,(" wpa_set_encryption: pwep allocate fail !!!\n")); + goto exit; + } + + _rtw_memset(pwep, 0, wep_total_len); + + pwep->KeyLength = wep_key_len; + pwep->Length = wep_total_len; + + if(wep_key_len==13) + { + padapter->securitypriv.dot11PrivacyAlgrthm=_WEP104_; + padapter->securitypriv.dot118021XGrpPrivacy=_WEP104_; + } + } + else { + ret = -EINVAL; + goto exit; + } + + pwep->KeyIndex = wep_key_idx; + pwep->KeyIndex |= 0x80000000; + + _rtw_memcpy(pwep->KeyMaterial, param->u.crypt.key, pwep->KeyLength); + + if(param->u.crypt.set_tx) + { + DBG_871X("wep, set_tx=1\n"); + + if(rtw_set_802_11_add_wep(padapter, pwep) == (u8)_FAIL) + { + ret = -EOPNOTSUPP ; + } + } + else + { + DBG_871X("wep, set_tx=0\n"); + + //don't update "psecuritypriv->dot11PrivacyAlgrthm" and + //"psecuritypriv->dot11PrivacyKeyIndex=keyid", but can rtw_set_key to fw/cam + + if (wep_key_idx >= WEP_KEYS) { + ret = -EOPNOTSUPP ; + goto exit; + } + + _rtw_memcpy(&(psecuritypriv->dot11DefKey[wep_key_idx].skey[0]), pwep->KeyMaterial, pwep->KeyLength); + psecuritypriv->dot11DefKeylen[wep_key_idx]=pwep->KeyLength; + rtw_set_key(padapter, psecuritypriv, wep_key_idx, 0); + } + + goto exit; + } + + if(padapter->securitypriv.dot11AuthAlgrthm == dot11AuthAlgrthm_8021X) // 802_1x + { + struct sta_info * psta,*pbcmc_sta; + struct sta_priv * pstapriv = &padapter->stapriv; + + if (check_fwstate(pmlmepriv, WIFI_STATION_STATE | WIFI_MP_STATE) == _TRUE) //sta mode + { + psta = rtw_get_stainfo(pstapriv, get_bssid(pmlmepriv)); + if (psta == NULL) { + //DEBUG_ERR( ("Set wpa_set_encryption: Obtain Sta_info fail \n")); + } + else + { + //Jeff: don't disable ieee8021x_blocked while clearing key + if (strcmp(param->u.crypt.alg, "none") != 0) + psta->ieee8021x_blocked = _FALSE; + + if((padapter->securitypriv.ndisencryptstatus == Ndis802_11Encryption2Enabled)|| + (padapter->securitypriv.ndisencryptstatus == Ndis802_11Encryption3Enabled)) + { + psta->dot118021XPrivacy = padapter->securitypriv.dot11PrivacyAlgrthm; + } + + if(param->u.crypt.set_tx ==1)//pairwise key + { + _rtw_memcpy(psta->dot118021x_UncstKey.skey, param->u.crypt.key, (param->u.crypt.key_len>16 ?16:param->u.crypt.key_len)); + + if(strcmp(param->u.crypt.alg, "TKIP") == 0)//set mic key + { + //DEBUG_ERR(("\nset key length :param->u.crypt.key_len=%d\n", param->u.crypt.key_len)); + _rtw_memcpy(psta->dot11tkiptxmickey.skey, &(param->u.crypt.key[16]), 8); + _rtw_memcpy(psta->dot11tkiprxmickey.skey, &(param->u.crypt.key[24]), 8); + + padapter->securitypriv.busetkipkey=_FALSE; + //_set_timer(&padapter->securitypriv.tkip_timer, 50); + } + + //DEBUG_ERR(("\n param->u.crypt.key_len=%d\n",param->u.crypt.key_len)); + //DEBUG_ERR(("\n ~~~~stastakey:unicastkey\n")); + DBG_871X("\n ~~~~stastakey:unicastkey\n"); + + rtw_setstakey_cmd(padapter, (unsigned char *)psta, _TRUE); + } + else//group key + { + if(strcmp(param->u.crypt.alg, "TKIP") == 0 || strcmp(param->u.crypt.alg, "CCMP") == 0) + { + _rtw_memcpy(padapter->securitypriv.dot118021XGrpKey[param->u.crypt.idx].skey, param->u.crypt.key,(param->u.crypt.key_len>16 ?16:param->u.crypt.key_len)); + //only TKIP group key need to install this + if(param->u.crypt.key_len > 16) + { + _rtw_memcpy(padapter->securitypriv.dot118021XGrptxmickey[param->u.crypt.idx].skey,&(param->u.crypt.key[16]),8); + _rtw_memcpy(padapter->securitypriv.dot118021XGrprxmickey[param->u.crypt.idx].skey,&(param->u.crypt.key[24]),8); + } + padapter->securitypriv.binstallGrpkey = _TRUE; + //DEBUG_ERR((" param->u.crypt.key_len=%d\n", param->u.crypt.key_len)); + DBG_871X(" ~~~~set sta key:groupkey\n"); + + padapter->securitypriv.dot118021XGrpKeyid = param->u.crypt.idx; + + rtw_set_key(padapter,&padapter->securitypriv,param->u.crypt.idx, 1); + } +#ifdef CONFIG_IEEE80211W + else if(strcmp(param->u.crypt.alg, "BIP") == 0) + { + int no; + //printk("BIP key_len=%d , index=%d @@@@@@@@@@@@@@@@@@\n", param->u.crypt.key_len, param->u.crypt.idx); + //save the IGTK key, length 16 bytes + _rtw_memcpy(padapter->securitypriv.dot11wBIPKey[param->u.crypt.idx].skey, param->u.crypt.key,(param->u.crypt.key_len>16 ?16:param->u.crypt.key_len)); + /*printk("IGTK key below:\n"); + for(no=0;no<16;no++) + printk(" %02x ", padapter->securitypriv.dot11wBIPKey[param->u.crypt.idx].skey[no]); + printk("\n");*/ + padapter->securitypriv.dot11wBIPKeyid = param->u.crypt.idx; + padapter->securitypriv.binstallBIPkey = _TRUE; + DBG_871X(" ~~~~set sta key:IGKT\n"); + } +#endif //CONFIG_IEEE80211W + +#ifdef CONFIG_P2P + if(rtw_p2p_chk_state(pwdinfo, P2P_STATE_PROVISIONING_ING)) + { + rtw_p2p_set_state(pwdinfo, P2P_STATE_PROVISIONING_DONE); + } +#endif //CONFIG_P2P + + } + } + + pbcmc_sta=rtw_get_bcmc_stainfo(padapter); + if(pbcmc_sta==NULL) + { + //DEBUG_ERR( ("Set OID_802_11_ADD_KEY: bcmc stainfo is null \n")); + } + else + { + //Jeff: don't disable ieee8021x_blocked while clearing key + if (strcmp(param->u.crypt.alg, "none") != 0) + pbcmc_sta->ieee8021x_blocked = _FALSE; + + if((padapter->securitypriv.ndisencryptstatus == Ndis802_11Encryption2Enabled)|| + (padapter->securitypriv.ndisencryptstatus == Ndis802_11Encryption3Enabled)) + { + pbcmc_sta->dot118021XPrivacy = padapter->securitypriv.dot11PrivacyAlgrthm; + } + } + } + else if(check_fwstate(pmlmepriv, WIFI_ADHOC_STATE)) //adhoc mode + { + } + } + +exit: + + if (pwep) { + rtw_mfree((u8 *)pwep, wep_total_len); + } + + _func_exit_; + + return ret; +} + +static int rtw_set_wpa_ie(_adapter *padapter, char *pie, unsigned short ielen) +{ + u8 *buf=NULL, *pos=NULL; + u32 left; + int group_cipher = 0, pairwise_cipher = 0; + int ret = 0; + u8 null_addr[]= {0,0,0,0,0,0}; +#ifdef CONFIG_P2P + struct wifidirect_info* pwdinfo = &padapter->wdinfo; +#endif //CONFIG_P2P + + if((ielen > MAX_WPA_IE_LEN) || (pie == NULL)){ + _clr_fwstate_(&padapter->mlmepriv, WIFI_UNDER_WPS); + if(pie == NULL) + return ret; + else + return -EINVAL; + } + + if(ielen) + { + buf = rtw_zmalloc(ielen); + if (buf == NULL){ + ret = -ENOMEM; + goto exit; + } + + _rtw_memcpy(buf, pie , ielen); + + //dump + { + int i; + DBG_871X("\n wpa_ie(length:%d):\n", ielen); + for(i=0;i= RSN_SELECTOR_LEN){ + pos += RSN_SELECTOR_LEN; + left -= RSN_SELECTOR_LEN; + } + else if (left > 0){ + RT_TRACE(_module_rtl871x_ioctl_os_c,_drv_err_,("Ie length mismatch, %u too much \n", left)); + ret =-1; + goto exit; + } +#endif + + if(rtw_parse_wpa_ie(buf, ielen, &group_cipher, &pairwise_cipher) == _SUCCESS) + { + padapter->securitypriv.dot11AuthAlgrthm= dot11AuthAlgrthm_8021X; + padapter->securitypriv.ndisauthtype=Ndis802_11AuthModeWPAPSK; + _rtw_memcpy(padapter->securitypriv.supplicant_ie, &buf[0], ielen); + } + + if(rtw_parse_wpa2_ie(buf, ielen, &group_cipher, &pairwise_cipher) == _SUCCESS) + { + padapter->securitypriv.dot11AuthAlgrthm= dot11AuthAlgrthm_8021X; + padapter->securitypriv.ndisauthtype=Ndis802_11AuthModeWPA2PSK; + _rtw_memcpy(padapter->securitypriv.supplicant_ie, &buf[0], ielen); + } + + if (group_cipher == 0) + { + group_cipher = WPA_CIPHER_NONE; + } + if (pairwise_cipher == 0) + { + pairwise_cipher = WPA_CIPHER_NONE; + } + + switch(group_cipher) + { + case WPA_CIPHER_NONE: + padapter->securitypriv.dot118021XGrpPrivacy=_NO_PRIVACY_; + padapter->securitypriv.ndisencryptstatus=Ndis802_11EncryptionDisabled; + break; + case WPA_CIPHER_WEP40: + padapter->securitypriv.dot118021XGrpPrivacy=_WEP40_; + padapter->securitypriv.ndisencryptstatus = Ndis802_11Encryption1Enabled; + break; + case WPA_CIPHER_TKIP: + padapter->securitypriv.dot118021XGrpPrivacy=_TKIP_; + padapter->securitypriv.ndisencryptstatus = Ndis802_11Encryption2Enabled; + break; + case WPA_CIPHER_CCMP: + padapter->securitypriv.dot118021XGrpPrivacy=_AES_; + padapter->securitypriv.ndisencryptstatus = Ndis802_11Encryption3Enabled; + break; + case WPA_CIPHER_WEP104: + padapter->securitypriv.dot118021XGrpPrivacy=_WEP104_; + padapter->securitypriv.ndisencryptstatus = Ndis802_11Encryption1Enabled; + break; + } + + switch(pairwise_cipher) + { + case WPA_CIPHER_NONE: + padapter->securitypriv.dot11PrivacyAlgrthm=_NO_PRIVACY_; + padapter->securitypriv.ndisencryptstatus=Ndis802_11EncryptionDisabled; + break; + case WPA_CIPHER_WEP40: + padapter->securitypriv.dot11PrivacyAlgrthm=_WEP40_; + padapter->securitypriv.ndisencryptstatus = Ndis802_11Encryption1Enabled; + break; + case WPA_CIPHER_TKIP: + padapter->securitypriv.dot11PrivacyAlgrthm=_TKIP_; + padapter->securitypriv.ndisencryptstatus = Ndis802_11Encryption2Enabled; + break; + case WPA_CIPHER_CCMP: + padapter->securitypriv.dot11PrivacyAlgrthm=_AES_; + padapter->securitypriv.ndisencryptstatus = Ndis802_11Encryption3Enabled; + break; + case WPA_CIPHER_WEP104: + padapter->securitypriv.dot11PrivacyAlgrthm=_WEP104_; + padapter->securitypriv.ndisencryptstatus = Ndis802_11Encryption1Enabled; + break; + } + + _clr_fwstate_(&padapter->mlmepriv, WIFI_UNDER_WPS); + {//set wps_ie + u16 cnt = 0; + u8 eid, wps_oui[4]={0x0,0x50,0xf2,0x04}; + + while( cnt < ielen ) + { + eid = buf[cnt]; + + if((eid==_VENDOR_SPECIFIC_IE_)&&(_rtw_memcmp(&buf[cnt+2], wps_oui, 4)==_TRUE)) + { + DBG_871X("SET WPS_IE\n"); + + padapter->securitypriv.wps_ie_len = ( (buf[cnt+1]+2) < (MAX_WPA_IE_LEN<<2)) ? (buf[cnt+1]+2):(MAX_WPA_IE_LEN<<2); + + _rtw_memcpy(padapter->securitypriv.wps_ie, &buf[cnt], padapter->securitypriv.wps_ie_len); + + set_fwstate(&padapter->mlmepriv, WIFI_UNDER_WPS); + +#ifdef CONFIG_P2P + if(rtw_p2p_chk_state(pwdinfo, P2P_STATE_GONEGO_OK)) + { + rtw_p2p_set_state(pwdinfo, P2P_STATE_PROVISIONING_ING); + } +#endif //CONFIG_P2P + cnt += buf[cnt+1]+2; + + break; + } else { + cnt += buf[cnt+1]+2; //goto next + } + } + } + } + + //TKIP and AES disallow multicast packets until installing group key + if(padapter->securitypriv.dot11PrivacyAlgrthm == _TKIP_ + || padapter->securitypriv.dot11PrivacyAlgrthm == _TKIP_WTMIC_ + || padapter->securitypriv.dot11PrivacyAlgrthm == _AES_) + //WPS open need to enable multicast + //|| check_fwstate(&padapter->mlmepriv, WIFI_UNDER_WPS) == _TRUE) + rtw_hal_set_hwreg(padapter, HW_VAR_OFF_RCR_AM, null_addr); + + RT_TRACE(_module_rtl871x_ioctl_os_c, _drv_info_, + ("rtw_set_wpa_ie: pairwise_cipher=0x%08x padapter->securitypriv.ndisencryptstatus=%d padapter->securitypriv.ndisauthtype=%d\n", + pairwise_cipher, padapter->securitypriv.ndisencryptstatus, padapter->securitypriv.ndisauthtype)); + +exit: + + if (buf) rtw_mfree(buf, ielen); + + return ret; +} + +static int rtw_wx_get_name(struct net_device *dev, + struct iw_request_info *info, + union iwreq_data *wrqu, char *extra) +{ + _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); + u16 cap; + u32 ht_ielen = 0; + char *p; + u8 ht_cap=_FALSE; + struct mlme_priv *pmlmepriv = &(padapter->mlmepriv); + WLAN_BSSID_EX *pcur_bss = &pmlmepriv->cur_network.network; + NDIS_802_11_RATES_EX* prates = NULL; + + RT_TRACE(_module_rtl871x_mlme_c_,_drv_info_,("cmd_code=%x\n", info->cmd)); + + _func_enter_; + + if (check_fwstate(pmlmepriv, _FW_LINKED|WIFI_ADHOC_MASTER_STATE) == _TRUE) + { + //parsing HT_CAP_IE + p = rtw_get_ie(&pcur_bss->IEs[12], _HT_CAPABILITY_IE_, &ht_ielen, pcur_bss->IELength-12); + if(p && ht_ielen>0) + { + ht_cap = _TRUE; + } + + prates = &pcur_bss->SupportedRates; + + if (rtw_is_cckratesonly_included((u8*)prates) == _TRUE) + { + if(ht_cap == _TRUE) + snprintf(wrqu->name, IFNAMSIZ, "IEEE 802.11bn"); + else + snprintf(wrqu->name, IFNAMSIZ, "IEEE 802.11b"); + } + else if ((rtw_is_cckrates_included((u8*)prates)) == _TRUE) + { + if(ht_cap == _TRUE) + snprintf(wrqu->name, IFNAMSIZ, "IEEE 802.11bgn"); + else + snprintf(wrqu->name, IFNAMSIZ, "IEEE 802.11bg"); + } + else + { + if(pcur_bss->Configuration.DSConfig > 14) + { + if(ht_cap == _TRUE) + snprintf(wrqu->name, IFNAMSIZ, "IEEE 802.11an"); + else + snprintf(wrqu->name, IFNAMSIZ, "IEEE 802.11a"); + } + else + { + if(ht_cap == _TRUE) + snprintf(wrqu->name, IFNAMSIZ, "IEEE 802.11gn"); + else + snprintf(wrqu->name, IFNAMSIZ, "IEEE 802.11g"); + } + } + } + else + { + //prates = &padapter->registrypriv.dev_network.SupportedRates; + //snprintf(wrqu->name, IFNAMSIZ, "IEEE 802.11g"); + snprintf(wrqu->name, IFNAMSIZ, "unassociated"); + } + + _func_exit_; + + return 0; +} + +static int rtw_wx_set_freq(struct net_device *dev, + struct iw_request_info *info, + union iwreq_data *wrqu, char *extra) +{ + _func_enter_; + + RT_TRACE(_module_rtl871x_mlme_c_, _drv_notice_, ("+rtw_wx_set_freq\n")); + + _func_exit_; + + return 0; +} + +static int rtw_wx_get_freq(struct net_device *dev, + struct iw_request_info *info, + union iwreq_data *wrqu, char *extra) +{ + _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); + struct mlme_priv *pmlmepriv = &(padapter->mlmepriv); + WLAN_BSSID_EX *pcur_bss = &pmlmepriv->cur_network.network; + + if(check_fwstate(pmlmepriv, _FW_LINKED) == _TRUE) + { + //wrqu->freq.m = ieee80211_wlan_frequencies[pcur_bss->Configuration.DSConfig-1] * 100000; + wrqu->freq.m = rtw_ch2freq(pcur_bss->Configuration.DSConfig) * 100000; + wrqu->freq.e = 1; + wrqu->freq.i = pcur_bss->Configuration.DSConfig; + + } + else{ + wrqu->freq.m = rtw_ch2freq(padapter->mlmeextpriv.cur_channel) * 100000; + wrqu->freq.e = 1; + wrqu->freq.i = padapter->mlmeextpriv.cur_channel; + } + + return 0; +} + +static int rtw_wx_set_mode(struct net_device *dev, struct iw_request_info *a, + union iwreq_data *wrqu, char *b) +{ + _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); + NDIS_802_11_NETWORK_INFRASTRUCTURE networkType ; + int ret = 0; + _irqL irqL; + struct mlme_priv *pmlmepriv = &padapter->mlmepriv; + _queue *queue = &pmlmepriv->scanned_queue; + _func_enter_; + + if(_FAIL == rtw_pwr_wakeup(padapter)) { + ret= -EPERM; + goto exit; + } + + if (padapter->hw_init_completed==_FALSE){ + ret = -EPERM; + goto exit; + } + + switch(wrqu->mode) + { + case IW_MODE_AUTO: + networkType = Ndis802_11AutoUnknown; + DBG_871X("set_mode = IW_MODE_AUTO\n"); + break; + case IW_MODE_ADHOC: + networkType = Ndis802_11IBSS; + DBG_871X("set_mode = IW_MODE_ADHOC\n"); + break; + case IW_MODE_MASTER: + networkType = Ndis802_11APMode; + DBG_871X("set_mode = IW_MODE_MASTER\n"); + //rtw_setopmode_cmd(padapter, networkType); + break; + case IW_MODE_INFRA: + networkType = Ndis802_11Infrastructure; + DBG_871X("set_mode = IW_MODE_INFRA\n"); + break; + + default : + ret = -EINVAL;; + RT_TRACE(_module_rtl871x_ioctl_os_c,_drv_err_,("\n Mode: %s is not supported \n", iw_operation_mode[wrqu->mode])); + goto exit; + } + +/* + if(Ndis802_11APMode == networkType) + { + rtw_setopmode_cmd(padapter, networkType); + } + else + { + rtw_setopmode_cmd(padapter, Ndis802_11AutoUnknown); + } +*/ + _enter_critical_bh(&pmlmepriv->lock, &irqL); + _enter_critical_bh(&queue->lock, &irqL); + if (rtw_set_802_11_infrastructure_mode(padapter, networkType) ==_FALSE){ + + ret = -EPERM; + _exit_critical_bh(&queue->lock, &irqL); + _exit_critical_bh(&pmlmepriv->lock, &irqL); + goto exit; + + } + _exit_critical_bh(&queue->lock, &irqL); + _exit_critical_bh(&pmlmepriv->lock, &irqL); + rtw_setopmode_cmd(padapter, networkType); + +exit: + + _func_exit_; + + return ret; + +} + +static int rtw_wx_get_mode(struct net_device *dev, struct iw_request_info *a, + union iwreq_data *wrqu, char *b) +{ + _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); + struct mlme_priv *pmlmepriv = &(padapter->mlmepriv); + + RT_TRACE(_module_rtl871x_mlme_c_,_drv_info_,(" rtw_wx_get_mode \n")); + + _func_enter_; + + if (check_fwstate(pmlmepriv, WIFI_STATION_STATE) == _TRUE) + { + wrqu->mode = IW_MODE_INFRA; + } + else if ((check_fwstate(pmlmepriv, WIFI_ADHOC_MASTER_STATE) == _TRUE) || + (check_fwstate(pmlmepriv, WIFI_ADHOC_STATE) == _TRUE)) + + { + wrqu->mode = IW_MODE_ADHOC; + } + else if(check_fwstate(pmlmepriv, WIFI_AP_STATE) == _TRUE) + { + wrqu->mode = IW_MODE_MASTER; + } + else + { + wrqu->mode = IW_MODE_AUTO; + } + + _func_exit_; + + return 0; + +} + + +static int rtw_wx_set_pmkid(struct net_device *dev, + struct iw_request_info *a, + union iwreq_data *wrqu, char *extra) +{ + _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); + u8 j,blInserted = _FALSE; + int intReturn = _FALSE; + struct mlme_priv *pmlmepriv = &padapter->mlmepriv; + struct security_priv *psecuritypriv = &padapter->securitypriv; + struct iw_pmksa* pPMK = ( struct iw_pmksa* ) extra; + u8 strZeroMacAddress[ ETH_ALEN ] = { 0x00 }; + u8 strIssueBssid[ ETH_ALEN ] = { 0x00 }; + +/* + struct iw_pmksa + { + __u32 cmd; + struct sockaddr bssid; + __u8 pmkid[IW_PMKID_LEN]; //IW_PMKID_LEN=16 + } + There are the BSSID information in the bssid.sa_data array. + If cmd is IW_PMKSA_FLUSH, it means the wpa_suppplicant wants to clear all the PMKID information. + If cmd is IW_PMKSA_ADD, it means the wpa_supplicant wants to add a PMKID/BSSID to driver. + If cmd is IW_PMKSA_REMOVE, it means the wpa_supplicant wants to remove a PMKID/BSSID from driver. + */ + + _rtw_memcpy( strIssueBssid, pPMK->bssid.sa_data, ETH_ALEN); + if ( pPMK->cmd == IW_PMKSA_ADD ) + { + DBG_871X( "[rtw_wx_set_pmkid] IW_PMKSA_ADD!\n" ); + if ( _rtw_memcmp( strIssueBssid, strZeroMacAddress, ETH_ALEN ) == _TRUE ) + { + return( intReturn ); + } + else + { + intReturn = _TRUE; + } + blInserted = _FALSE; + + //overwrite PMKID + for(j=0 ; jPMKIDList[j].Bssid, strIssueBssid, ETH_ALEN) ==_TRUE ) + { // BSSID is matched, the same AP => rewrite with new PMKID. + + DBG_871X( "[rtw_wx_set_pmkid] BSSID exists in the PMKList.\n" ); + + _rtw_memcpy( psecuritypriv->PMKIDList[j].PMKID, pPMK->pmkid, IW_PMKID_LEN); + psecuritypriv->PMKIDList[ j ].bUsed = _TRUE; + psecuritypriv->PMKIDIndex = j+1; + blInserted = _TRUE; + break; + } + } + + if(!blInserted) + { + // Find a new entry + DBG_871X( "[rtw_wx_set_pmkid] Use the new entry index = %d for this PMKID.\n", + psecuritypriv->PMKIDIndex ); + + _rtw_memcpy(psecuritypriv->PMKIDList[psecuritypriv->PMKIDIndex].Bssid, strIssueBssid, ETH_ALEN); + _rtw_memcpy(psecuritypriv->PMKIDList[psecuritypriv->PMKIDIndex].PMKID, pPMK->pmkid, IW_PMKID_LEN); + + psecuritypriv->PMKIDList[ psecuritypriv->PMKIDIndex ].bUsed = _TRUE; + psecuritypriv->PMKIDIndex++ ; + if(psecuritypriv->PMKIDIndex==16) + { + psecuritypriv->PMKIDIndex =0; + } + } + } + else if ( pPMK->cmd == IW_PMKSA_REMOVE ) + { + DBG_871X( "[rtw_wx_set_pmkid] IW_PMKSA_REMOVE!\n" ); + intReturn = _TRUE; + for(j=0 ; jPMKIDList[j].Bssid, strIssueBssid, ETH_ALEN) ==_TRUE ) + { // BSSID is matched, the same AP => Remove this PMKID information and reset it. + _rtw_memset( psecuritypriv->PMKIDList[ j ].Bssid, 0x00, ETH_ALEN ); + psecuritypriv->PMKIDList[ j ].bUsed = _FALSE; + break; + } + } + } + else if ( pPMK->cmd == IW_PMKSA_FLUSH ) + { + DBG_871X( "[rtw_wx_set_pmkid] IW_PMKSA_FLUSH!\n" ); + _rtw_memset( &psecuritypriv->PMKIDList[ 0 ], 0x00, sizeof( RT_PMKID_LIST ) * NUM_PMKID_CACHE ); + psecuritypriv->PMKIDIndex = 0; + intReturn = _TRUE; + } + return( intReturn ); +} + +static int rtw_wx_get_sens(struct net_device *dev, + struct iw_request_info *info, + union iwreq_data *wrqu, char *extra) +{ + #ifdef CONFIG_PLATFORM_ROCKCHIPS + _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); + struct mlme_priv *pmlmepriv = &(padapter->mlmepriv); + + /* + * 20110311 Commented by Jeff + * For rockchip platform's wpa_driver_wext_get_rssi + */ + if(check_fwstate(pmlmepriv, _FW_LINKED) == _TRUE) { + //wrqu->sens.value=-padapter->recvpriv.signal_strength; + wrqu->sens.value=-padapter->recvpriv.rssi; + //DBG_871X("%s: %d\n", __FUNCTION__, wrqu->sens.value); + wrqu->sens.fixed = 0; /* no auto select */ + } else + #endif + { + wrqu->sens.value = 0; + wrqu->sens.fixed = 0; /* no auto select */ + wrqu->sens.disabled = 1; + } + return 0; +} + +static int rtw_wx_get_range(struct net_device *dev, + struct iw_request_info *info, + union iwreq_data *wrqu, char *extra) +{ + struct iw_range *range = (struct iw_range *)extra; + _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); + struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; + + u16 val; + int i; + + _func_enter_; + + RT_TRACE(_module_rtl871x_mlme_c_,_drv_info_,("rtw_wx_get_range. cmd_code=%x\n", info->cmd)); + + wrqu->data.length = sizeof(*range); + _rtw_memset(range, 0, sizeof(*range)); + + /* Let's try to keep this struct in the same order as in + * linux/include/wireless.h + */ + + /* TODO: See what values we can set, and remove the ones we can't + * set, or fill them with some default data. + */ + + /* ~5 Mb/s real (802.11b) */ + range->throughput = 5 * 1000 * 1000; + + // TODO: Not used in 802.11b? +// range->min_nwid; /* Minimal NWID we are able to set */ + // TODO: Not used in 802.11b? +// range->max_nwid; /* Maximal NWID we are able to set */ + + /* Old Frequency (backward compat - moved lower ) */ +// range->old_num_channels; +// range->old_num_frequency; +// range->old_freq[6]; /* Filler to keep "version" at the same offset */ + + /* signal level threshold range */ + + //percent values between 0 and 100. + range->max_qual.qual = 100; + range->max_qual.level = 100; + range->max_qual.noise = 100; + range->max_qual.updated = 7; /* Updated all three */ + + + range->avg_qual.qual = 92; /* > 8% missed beacons is 'bad' */ + /* TODO: Find real 'good' to 'bad' threshol value for RSSI */ + range->avg_qual.level = 20 + -98; + range->avg_qual.noise = 0; + range->avg_qual.updated = 7; /* Updated all three */ + + range->num_bitrates = RATE_COUNT; + + for (i = 0; i < RATE_COUNT && i < IW_MAX_BITRATES; i++) { + range->bitrate[i] = rtw_rates[i]; + } + + range->min_frag = MIN_FRAG_THRESHOLD; + range->max_frag = MAX_FRAG_THRESHOLD; + + range->pm_capa = 0; + + range->we_version_compiled = WIRELESS_EXT; + range->we_version_source = 16; + +// range->retry_capa; /* What retry options are supported */ +// range->retry_flags; /* How to decode max/min retry limit */ +// range->r_time_flags; /* How to decode max/min retry life */ +// range->min_retry; /* Minimal number of retries */ +// range->max_retry; /* Maximal number of retries */ +// range->min_r_time; /* Minimal retry lifetime */ +// range->max_r_time; /* Maximal retry lifetime */ + + for (i = 0, val = 0; i < MAX_CHANNEL_NUM; i++) { + + // Include only legal frequencies for some countries + if(pmlmeext->channel_set[i].ChannelNum != 0) + { + range->freq[val].i = pmlmeext->channel_set[i].ChannelNum; + range->freq[val].m = rtw_ch2freq(pmlmeext->channel_set[i].ChannelNum) * 100000; + range->freq[val].e = 1; + val++; + } + + if (val == IW_MAX_FREQUENCIES) + break; + } + + range->num_channels = val; + range->num_frequency = val; + +// Commented by Albert 2009/10/13 +// The following code will proivde the security capability to network manager. +// If the driver doesn't provide this capability to network manager, +// the WPA/WPA2 routers can't be choosen in the network manager. + +/* +#define IW_SCAN_CAPA_NONE 0x00 +#define IW_SCAN_CAPA_ESSID 0x01 +#define IW_SCAN_CAPA_BSSID 0x02 +#define IW_SCAN_CAPA_CHANNEL 0x04 +#define IW_SCAN_CAPA_MODE 0x08 +#define IW_SCAN_CAPA_RATE 0x10 +#define IW_SCAN_CAPA_TYPE 0x20 +#define IW_SCAN_CAPA_TIME 0x40 +*/ + +#if WIRELESS_EXT > 17 + range->enc_capa = IW_ENC_CAPA_WPA|IW_ENC_CAPA_WPA2| + IW_ENC_CAPA_CIPHER_TKIP|IW_ENC_CAPA_CIPHER_CCMP; +#endif + +#ifdef IW_SCAN_CAPA_ESSID //WIRELESS_EXT > 21 + range->scan_capa = IW_SCAN_CAPA_ESSID | IW_SCAN_CAPA_TYPE |IW_SCAN_CAPA_BSSID| + IW_SCAN_CAPA_CHANNEL|IW_SCAN_CAPA_MODE|IW_SCAN_CAPA_RATE; +#endif + + + _func_exit_; + + return 0; + +} + +//set bssid flow +//s1. rtw_set_802_11_infrastructure_mode() +//s2. rtw_set_802_11_authentication_mode() +//s3. set_802_11_encryption_mode() +//s4. rtw_set_802_11_bssid() +static int rtw_wx_set_wap(struct net_device *dev, + struct iw_request_info *info, + union iwreq_data *awrq, + char *extra) +{ + _irqL irqL; + uint ret = 0; + _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); + struct sockaddr *temp = (struct sockaddr *)awrq; + struct mlme_priv *pmlmepriv = &(padapter->mlmepriv); + _list *phead; + u8 *dst_bssid, *src_bssid; + _queue *queue = &(pmlmepriv->scanned_queue); + struct wlan_network *pnetwork = NULL; + NDIS_802_11_AUTHENTICATION_MODE authmode; + + _func_enter_; +/* +#ifdef CONFIG_CONCURRENT_MODE + if(padapter->iface_type > PRIMARY_IFACE) + { + ret = -EINVAL; + goto exit; + } +#endif +*/ + +#ifdef CONFIG_CONCURRENT_MODE + if (check_buddy_fwstate(padapter, _FW_UNDER_SURVEY|_FW_UNDER_LINKING) == _TRUE) + { + printk("set bssid, but buddy_intf is under scanning or linking\n"); + + ret = -EINVAL; + + goto exit; + } +#endif + +#ifdef CONFIG_DUALMAC_CONCURRENT + if (dc_check_fwstate(padapter, _FW_UNDER_SURVEY|_FW_UNDER_LINKING)== _TRUE) + { + printk("set bssid, but buddy_intf is under scanning or linking\n"); + ret = -EINVAL; + goto exit; + } +#endif + + if(_FAIL == rtw_pwr_wakeup(padapter)) + { + ret= -1; + goto exit; + } + + if(!padapter->bup){ + ret = -1; + goto exit; + } + + + if (temp->sa_family != ARPHRD_ETHER){ + ret = -EINVAL; + goto exit; + } + + authmode = padapter->securitypriv.ndisauthtype; + _enter_critical_bh(&pmlmepriv->lock, &irqL); + _enter_critical_bh(&queue->lock, &irqL); + phead = get_list_head(queue); + pmlmepriv->pscanned = get_next(phead); + + while (1) + { + + if ((rtw_end_of_queue_search(phead, pmlmepriv->pscanned)) == _TRUE) + { +#if 0 + ret = -EINVAL; + goto exit; + + if(check_fwstate(pmlmepriv, WIFI_ADHOC_STATE) == _TRUE) + { + rtw_set_802_11_bssid(padapter, temp->sa_data); + goto exit; + } + else + { + ret = -EINVAL; + goto exit; + } +#endif + + break; + } + + pnetwork = LIST_CONTAINOR(pmlmepriv->pscanned, struct wlan_network, list); + + pmlmepriv->pscanned = get_next(pmlmepriv->pscanned); + + dst_bssid = pnetwork->network.MacAddress; + + src_bssid = temp->sa_data; + + if ((_rtw_memcmp(dst_bssid, src_bssid, ETH_ALEN)) == _TRUE) + { + if(!rtw_set_802_11_infrastructure_mode(padapter, pnetwork->network.InfrastructureMode)) + { + ret = -1; + _exit_critical_bh(&queue->lock, &irqL); + _exit_critical_bh(&pmlmepriv->lock, &irqL); + goto exit; + } + + break; + } + + } + _exit_critical_bh(&queue->lock, &irqL); + _exit_critical_bh(&pmlmepriv->lock, &irqL); + rtw_set_802_11_authentication_mode(padapter, authmode); + //set_802_11_encryption_mode(padapter, padapter->securitypriv.ndisencryptstatus); + if (rtw_set_802_11_bssid(padapter, temp->sa_data) == _FALSE) { + ret = -1; + goto exit; + } + +exit: + + _func_exit_; + + return ret; +} + +static int rtw_wx_get_wap(struct net_device *dev, + struct iw_request_info *info, + union iwreq_data *wrqu, char *extra) +{ + + _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); + struct mlme_priv *pmlmepriv = &(padapter->mlmepriv); + WLAN_BSSID_EX *pcur_bss = &pmlmepriv->cur_network.network; + + wrqu->ap_addr.sa_family = ARPHRD_ETHER; + + _rtw_memset(wrqu->ap_addr.sa_data, 0, ETH_ALEN); + + RT_TRACE(_module_rtl871x_mlme_c_,_drv_info_,("rtw_wx_get_wap\n")); + + _func_enter_; + + if ( ((check_fwstate(pmlmepriv, _FW_LINKED)) == _TRUE) || + ((check_fwstate(pmlmepriv, WIFI_ADHOC_MASTER_STATE)) == _TRUE) || + ((check_fwstate(pmlmepriv, WIFI_AP_STATE)) == _TRUE) ) + { + + _rtw_memcpy(wrqu->ap_addr.sa_data, pcur_bss->MacAddress, ETH_ALEN); + } + else + { + _rtw_memset(wrqu->ap_addr.sa_data, 0, ETH_ALEN); + } + + _func_exit_; + + return 0; + +} + +static int rtw_wx_set_mlme(struct net_device *dev, + struct iw_request_info *info, + union iwreq_data *wrqu, char *extra) +{ +#if 0 +/* SIOCSIWMLME data */ +struct iw_mlme +{ + __u16 cmd; /* IW_MLME_* */ + __u16 reason_code; + struct sockaddr addr; +}; +#endif + + int ret=0; + u16 reason; + _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); + struct iw_mlme *mlme = (struct iw_mlme *) extra; + + + if(mlme==NULL) + return -1; + + printk("%s\n", __FUNCTION__); + + reason = cpu_to_le16(mlme->reason_code); + + + printk("%s, cmd=%d, reason=%d\n", __FUNCTION__, mlme->cmd, reason); + + switch (mlme->cmd) + { + case IW_MLME_DEAUTH: + if(!rtw_set_802_11_disassociate(padapter)) + ret = -1; + break; + + case IW_MLME_DISASSOC: + if(!rtw_set_802_11_disassociate(padapter)) + ret = -1; + + break; + + default: + return -EOPNOTSUPP; + } + + return ret; + +} + +static int rtw_wx_set_scan(struct net_device *dev, struct iw_request_info *a, + union iwreq_data *wrqu, char *extra) +{ + u8 _status = _FALSE; + int ret = 0; + _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); + struct mlme_priv *pmlmepriv= &padapter->mlmepriv; + NDIS_802_11_SSID ssid[RTW_SSID_SCAN_AMOUNT]; + _irqL irqL; +#ifdef CONFIG_P2P + struct wifidirect_info *pwdinfo= &(padapter->wdinfo); +#endif //CONFIG_P2P + RT_TRACE(_module_rtl871x_mlme_c_,_drv_info_,("rtw_wx_set_scan\n")); + +_func_enter_; + + #ifdef DBG_IOCTL + DBG_871X("DBG_IOCTL %s:%d\n",__FUNCTION__, __LINE__); + #endif +/* +#ifdef CONFIG_CONCURRENT_MODE + if(padapter->iface_type > PRIMARY_IFACE) + { + ret = -1; + goto exit; + } +#endif +*/ + +#ifdef CONFIG_MP_INCLUDED + if (check_fwstate(pmlmepriv, WIFI_MP_STATE) == _TRUE) + { + ret = -1; + goto exit; + } +#endif + + if(_FAIL == rtw_pwr_wakeup(padapter)) + { + ret= -1; + goto exit; + } + + if(padapter->bDriverStopped){ + DBG_871X("bDriverStopped=%d\n", padapter->bDriverStopped); + ret= -1; + goto exit; + } + + if(!padapter->bup){ + ret = -1; + goto exit; + } + + if (padapter->hw_init_completed==_FALSE){ + ret = -1; + goto exit; + } + + // When Busy Traffic, driver do not site survey. So driver return success. + // wpa_supplicant will not issue SIOCSIWSCAN cmd again after scan timeout. + // modify by thomas 2011-02-22. + if (pmlmepriv->LinkDetectInfo.bBusyTraffic == _TRUE) + { + indicate_wx_scan_complete_event(padapter); + goto exit; + } + + if (check_fwstate(pmlmepriv, _FW_UNDER_SURVEY|_FW_UNDER_LINKING) == _TRUE) + { + indicate_wx_scan_complete_event(padapter); + goto exit; + } + +#ifdef CONFIG_CONCURRENT_MODE + if (check_buddy_fwstate(padapter, + _FW_UNDER_SURVEY|_FW_UNDER_LINKING|WIFI_UNDER_WPS) == _TRUE) + { + if(check_buddy_fwstate(padapter, _FW_UNDER_SURVEY)) + { + printk("scanning_via_buddy_intf\n"); + pmlmepriv->scanning_via_buddy_intf = _TRUE; + } + + indicate_wx_scan_complete_event(padapter); + + goto exit; + } +#endif + +#ifdef CONFIG_DUALMAC_CONCURRENT + if (dc_check_fwstate(padapter, _FW_UNDER_SURVEY|_FW_UNDER_LINKING)== _TRUE) + { + indicate_wx_scan_complete_event(padapter); + goto exit; + } +#endif + +// Mareded by Albert 20101103 +// For the DMP WiFi Display project, the driver won't to scan because +// the pmlmepriv->scan_interval is always equal to 3. +// So, the wpa_supplicant won't find out the WPS SoftAP. + +/* + if(pmlmepriv->scan_interval>10) + pmlmepriv->scan_interval = 0; + + if(pmlmepriv->scan_interval > 0) + { + DBG_871X("scan done\n"); + ret = 0; + goto exit; + } + +*/ +#ifdef CONFIG_P2P + if(!rtw_p2p_chk_state(pwdinfo, P2P_STATE_NONE)) + { + rtw_p2p_set_pre_state( pwdinfo, rtw_p2p_state( pwdinfo ) ); + rtw_p2p_set_state(pwdinfo, P2P_STATE_FIND_PHASE_SEARCH); + rtw_p2p_findphase_ex_set(pwdinfo, P2P_FINDPHASE_EX_FULL); + rtw_free_network_queue(padapter, _TRUE); + } +#endif //CONFIG_P2P + + _rtw_memset(ssid, 0, sizeof(NDIS_802_11_SSID)*RTW_SSID_SCAN_AMOUNT); + +#if WIRELESS_EXT >= 17 + if (wrqu->data.length == sizeof(struct iw_scan_req)) + { + struct iw_scan_req *req = (struct iw_scan_req *)extra; + + if (wrqu->data.flags & IW_SCAN_THIS_ESSID) + { + int len = min((int)req->essid_len, IW_ESSID_MAX_SIZE); + + _rtw_memcpy(ssid[0].Ssid, req->essid, len); + ssid[0].SsidLength = len; + + DBG_871X("IW_SCAN_THIS_ESSID, ssid=%s, len=%d\n", req->essid, req->essid_len); + + _enter_critical_bh(&pmlmepriv->lock, &irqL); + + _status = rtw_sitesurvey_cmd(padapter, ssid, 1, NULL, 0); + + _exit_critical_bh(&pmlmepriv->lock, &irqL); + + } + else if (req->scan_type == IW_SCAN_TYPE_PASSIVE) + { + DBG_871X("rtw_wx_set_scan, req->scan_type == IW_SCAN_TYPE_PASSIVE\n"); + } + + } + else +#endif + + if( wrqu->data.length >= WEXT_CSCAN_HEADER_SIZE + && _rtw_memcmp(extra, WEXT_CSCAN_HEADER, WEXT_CSCAN_HEADER_SIZE) == _TRUE + ) + { + int len = wrqu->data.length -WEXT_CSCAN_HEADER_SIZE; + char *pos = extra+WEXT_CSCAN_HEADER_SIZE; + char section; + char sec_len; + int ssid_index = 0; + + //DBG_871X("%s COMBO_SCAN header is recognized\n", __FUNCTION__); + + while(len >= 1) { + section = *(pos++); len-=1; + + switch(section) { + case WEXT_CSCAN_SSID_SECTION: + //DBG_871X("WEXT_CSCAN_SSID_SECTION\n"); + if(len < 1) { + len = 0; + break; + } + + sec_len = *(pos++); len-=1; + + if(sec_len>0 && sec_len<=len) { + ssid[ssid_index].SsidLength = sec_len; + _rtw_memcpy(ssid[ssid_index].Ssid, pos, ssid[ssid_index].SsidLength); + //DBG_871X("%s COMBO_SCAN with specific ssid:%s, %d\n", __FUNCTION__ + // , ssid[ssid_index].Ssid, ssid[ssid_index].SsidLength); + ssid_index++; + } + + pos+=sec_len; len-=sec_len; + break; + + + case WEXT_CSCAN_CHANNEL_SECTION: + //DBG_871X("WEXT_CSCAN_CHANNEL_SECTION\n"); + pos+=1; len-=1; + break; + case WEXT_CSCAN_ACTV_DWELL_SECTION: + //DBG_871X("WEXT_CSCAN_ACTV_DWELL_SECTION\n"); + pos+=2; len-=2; + break; + case WEXT_CSCAN_PASV_DWELL_SECTION: + //DBG_871X("WEXT_CSCAN_PASV_DWELL_SECTION\n"); + pos+=2; len-=2; + break; + case WEXT_CSCAN_HOME_DWELL_SECTION: + //DBG_871X("WEXT_CSCAN_HOME_DWELL_SECTION\n"); + pos+=2; len-=2; + break; + case WEXT_CSCAN_TYPE_SECTION: + //DBG_871X("WEXT_CSCAN_TYPE_SECTION\n"); + pos+=1; len-=1; + break; + #if 0 + case WEXT_CSCAN_NPROBE_SECTION: + DBG_871X("WEXT_CSCAN_NPROBE_SECTION\n"); + break; + #endif + + default: + //DBG_871X("Unknown CSCAN section %c\n", section); + len = 0; // stop parsing + } + //DBG_871X("len:%d\n", len); + + } + + //jeff: it has still some scan paramater to parse, we only do this now... + _status = rtw_set_802_11_bssid_list_scan(padapter, ssid, RTW_SSID_SCAN_AMOUNT); + + } else + + { + _status = rtw_set_802_11_bssid_list_scan(padapter, NULL, 0); + } + + if(_status == _FALSE) + ret = -1; + +exit: + #ifdef DBG_IOCTL + DBG_871X("DBG_IOCTL %s:%d return %d\n",__FUNCTION__, __LINE__, ret); + #endif + +_func_exit_; + + return ret; +} + +static int rtw_wx_get_scan(struct net_device *dev, struct iw_request_info *a, + union iwreq_data *wrqu, char *extra) +{ + _irqL irqL; + _list *plist, *phead; + _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); + struct mlme_priv *pmlmepriv = &(padapter->mlmepriv); + _queue *queue = &(pmlmepriv->scanned_queue); + struct wlan_network *pnetwork = NULL; + char *ev = extra; + char *stop = ev + wrqu->data.length; + u32 ret = 0; + u32 cnt=0; + u32 wait_for_surveydone; + sint wait_status; +#ifdef CONFIG_CONCURRENT_MODE + //PADAPTER pbuddy_adapter = padapter->pbuddy_adapter; + //struct mlme_priv *pbuddy_mlmepriv = &(pbuddy_adapter->mlmepriv); +#endif +#ifdef CONFIG_P2P + struct wifidirect_info* pwdinfo = &padapter->wdinfo; +#endif //CONFIG_P2P + RT_TRACE(_module_rtl871x_mlme_c_,_drv_info_,("rtw_wx_get_scan\n")); + RT_TRACE(_module_rtl871x_ioctl_os_c,_drv_info_, (" Start of Query SIOCGIWSCAN .\n")); + + _func_enter_; + + #ifdef DBG_IOCTL + DBG_871X("DBG_IOCTL %s:%d\n",__FUNCTION__, __LINE__); + #endif + +/* +#ifdef CONFIG_CONCURRENT_MODE + if(padapter->iface_type > PRIMARY_IFACE) + { + ret = -EINVAL; + goto exit; + } +#endif +*/ + if(padapter->pwrctrlpriv.brfoffbyhw && padapter->bDriverStopped) + { + ret = -EINVAL; + goto exit; + } + +#ifdef CONFIG_P2P + if(!rtw_p2p_chk_state(pwdinfo, P2P_STATE_NONE)) + { + // P2P is enabled + if ( padapter->chip_type == RTL8192D ) + wait_for_surveydone = 300; // Because the 8192du supports more channels. + else + wait_for_surveydone = 200; + } + else + { + // P2P is disabled + wait_for_surveydone = 100; + } +#else + { + wait_for_surveydone = 100; + } +#endif //CONFIG_P2P + +/* +#ifdef CONFIG_CONCURRENT_MODE + if(pmlmepriv->scanning_via_buddy_intf == _TRUE) + { + pmlmepriv->scanning_via_buddy_intf = _FALSE;//reset + + // change pointers to buddy interface + padapter = pbuddy_adapter; + pmlmepriv = pbuddy_mlmepriv; + queue = &(pbuddy_mlmepriv->scanned_queue); + + } +#endif // CONFIG_CONCURRENT_MODE +*/ + + wait_status = _FW_UNDER_SURVEY + #ifndef CONFIG_ANDROID + |_FW_UNDER_LINKING + #endif + ; + +#ifdef CONFIG_DUALMAC_CONCURRENT + while(dc_check_fwstate(padapter, wait_status)== _TRUE) + { + rtw_msleep_os(30); + cnt++; + if(cnt > wait_for_surveydone ) + break; + } +#endif // CONFIG_DUALMAC_CONCURRENT + + while(check_fwstate(pmlmepriv, wait_status) == _TRUE) + { + rtw_msleep_os(30); + cnt++; + if(cnt > wait_for_surveydone ) + break; + } + + _enter_critical_bh(&(pmlmepriv->scanned_queue.lock), &irqL); + + phead = get_list_head(queue); + plist = get_next(phead); + + while(1) + { + if (rtw_end_of_queue_search(phead,plist)== _TRUE) + break; + + if((stop - ev) < SCAN_ITEM_SIZE) { + ret = -E2BIG; + break; + } + + pnetwork = LIST_CONTAINOR(plist, struct wlan_network, list); + + //report network only if the current channel set contains the channel to which this network belongs + if(rtw_ch_set_search_ch(padapter->mlmeextpriv.channel_set, pnetwork->network.Configuration.DSConfig) >= 0 + && rtw_mlme_band_check(padapter, pnetwork->network.Configuration.DSConfig) == _TRUE + && _TRUE == rtw_validate_ssid(&(pnetwork->network.Ssid)) + ) + { + ev=translate_scan(padapter, a, pnetwork, ev, stop); + } + + plist = get_next(plist); + + } + + _exit_critical_bh(&(pmlmepriv->scanned_queue.lock), &irqL); + + wrqu->data.length = ev-extra; + wrqu->data.flags = 0; + +exit: + + _func_exit_; + + #ifdef DBG_IOCTL + DBG_871X("DBG_IOCTL %s:%d return %d\n",__FUNCTION__, __LINE__, ret); + #endif + + return ret ; + +} + +//set ssid flow +//s1. rtw_set_802_11_infrastructure_mode() +//s2. set_802_11_authenticaion_mode() +//s3. set_802_11_encryption_mode() +//s4. rtw_set_802_11_ssid() +static int rtw_wx_set_essid(struct net_device *dev, + struct iw_request_info *a, + union iwreq_data *wrqu, char *extra) +{ + _irqL irqL; + _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); + struct mlme_priv *pmlmepriv = &padapter->mlmepriv; + _queue *queue = &pmlmepriv->scanned_queue; + struct pwrctrl_priv *pwrpriv = &padapter->pwrctrlpriv; + _list *phead; + s8 status = _TRUE; + struct wlan_network *pnetwork = NULL; + NDIS_802_11_AUTHENTICATION_MODE authmode; + NDIS_802_11_SSID ndis_ssid; + u8 *dst_ssid, *src_ssid; + + uint ret = 0, len; + + _func_enter_; + + #ifdef DBG_IOCTL + DBG_871X("DBG_IOCTL %s:%d\n",__FUNCTION__, __LINE__); + #endif + +/* +#ifdef CONFIG_CONCURRENT_MODE + if(padapter->iface_type > PRIMARY_IFACE) + { + ret = -EINVAL; + goto exit; + } +#endif +*/ + +#ifdef CONFIG_CONCURRENT_MODE + if (check_buddy_fwstate(padapter, _FW_UNDER_SURVEY|_FW_UNDER_LINKING) == _TRUE) + { + printk("set ssid, but buddy_intf is under scanning or linking\n"); + + ret = -EINVAL; + + goto exit; + } +#endif + +#ifdef CONFIG_DUALMAC_CONCURRENT + if (dc_check_fwstate(padapter, _FW_UNDER_SURVEY|_FW_UNDER_LINKING)== _TRUE) + { + printk("set bssid, but buddy_intf is under scanning or linking\n"); + ret = -EINVAL; + goto exit; + } +#endif + + RT_TRACE(_module_rtl871x_ioctl_os_c, _drv_info_, + ("+rtw_wx_set_essid: fw_state=0x%08x\n", get_fwstate(pmlmepriv))); + if(_FAIL == rtw_pwr_wakeup(padapter)) + { + ret = -1; + goto exit; + } + + if(!padapter->bup){ + ret = -1; + goto exit; + } + +#if WIRELESS_EXT <= 20 + if ((wrqu->essid.length-1) > IW_ESSID_MAX_SIZE){ +#else + if (wrqu->essid.length > IW_ESSID_MAX_SIZE){ +#endif + ret= -E2BIG; + goto exit; + } + + if(check_fwstate(pmlmepriv, WIFI_AP_STATE)) { + ret = -1; + goto exit; + } + + authmode = padapter->securitypriv.ndisauthtype; + DBG_871X("=>%s\n",__FUNCTION__); + if (wrqu->essid.flags && wrqu->essid.length) + { + // Commented by Albert 20100519 + // We got the codes in "set_info" function of iwconfig source code. + // ========================================= + // wrq.u.essid.length = strlen(essid) + 1; + // if(we_kernel_version > 20) + // wrq.u.essid.length--; + // ========================================= + // That means, if the WIRELESS_EXT less than or equal to 20, the correct ssid len should subtract 1. +#if WIRELESS_EXT <= 20 + len = ((wrqu->essid.length-1) < IW_ESSID_MAX_SIZE) ? (wrqu->essid.length-1) : IW_ESSID_MAX_SIZE; +#else + len = (wrqu->essid.length < IW_ESSID_MAX_SIZE) ? wrqu->essid.length : IW_ESSID_MAX_SIZE; +#endif + + if( wrqu->essid.length != 33 ) + DBG_871X("ssid=%s, len=%d\n", extra, wrqu->essid.length); + + _rtw_memset(&ndis_ssid, 0, sizeof(NDIS_802_11_SSID)); + ndis_ssid.SsidLength = len; + _rtw_memcpy(ndis_ssid.Ssid, extra, len); + src_ssid = ndis_ssid.Ssid; + + RT_TRACE(_module_rtl871x_ioctl_os_c, _drv_info_, ("rtw_wx_set_essid: ssid=[%s]\n", src_ssid)); + _enter_critical_bh(&pmlmepriv->lock, &irqL); + _enter_critical_bh(&queue->lock, &irqL); + phead = get_list_head(queue); + pmlmepriv->pscanned = get_next(phead); + + while (1) + { + if (rtw_end_of_queue_search(phead, pmlmepriv->pscanned) == _TRUE) + { +#if 0 + if(check_fwstate(pmlmepriv, WIFI_ADHOC_STATE) == _TRUE) + { + rtw_set_802_11_ssid(padapter, &ndis_ssid); + + goto exit; + } + else + { + RT_TRACE(_module_rtl871x_ioctl_os_c,_drv_info_,("rtw_wx_set_ssid(): scanned_queue is empty\n")); + ret = -EINVAL; + goto exit; + } +#endif + RT_TRACE(_module_rtl871x_ioctl_os_c, _drv_warning_, + ("rtw_wx_set_essid: scan_q is empty, set ssid to check if scanning again!\n")); + + break; + } + + pnetwork = LIST_CONTAINOR(pmlmepriv->pscanned, struct wlan_network, list); + + pmlmepriv->pscanned = get_next(pmlmepriv->pscanned); + + dst_ssid = pnetwork->network.Ssid.Ssid; + + RT_TRACE(_module_rtl871x_ioctl_os_c, _drv_info_, + ("rtw_wx_set_essid: dst_ssid=%s\n", + pnetwork->network.Ssid.Ssid)); + + if ((_rtw_memcmp(dst_ssid, src_ssid, ndis_ssid.SsidLength) == _TRUE) && + (pnetwork->network.Ssid.SsidLength==ndis_ssid.SsidLength)) + { + RT_TRACE(_module_rtl871x_ioctl_os_c, _drv_info_, + ("rtw_wx_set_essid: find match, set infra mode\n")); + + if(check_fwstate(pmlmepriv, WIFI_ADHOC_STATE) == _TRUE) + { + if(pnetwork->network.InfrastructureMode != pmlmepriv->cur_network.network.InfrastructureMode) + continue; + } + + if (rtw_set_802_11_infrastructure_mode(padapter, pnetwork->network.InfrastructureMode) == _FALSE) + { + ret = -1; + _exit_critical_bh(&queue->lock, &irqL); + _exit_critical_bh(&pmlmepriv->lock, &irqL); + goto exit; + } + + break; + } + } + _exit_critical_bh(&queue->lock, &irqL); + _exit_critical_bh(&pmlmepriv->lock, &irqL); + RT_TRACE(_module_rtl871x_ioctl_os_c, _drv_info_, + ("set ssid: set_802_11_auth. mode=%d\n", authmode)); + rtw_set_802_11_authentication_mode(padapter, authmode); + //set_802_11_encryption_mode(padapter, padapter->securitypriv.ndisencryptstatus); + if (rtw_set_802_11_ssid(padapter, &ndis_ssid) == _FALSE) { + ret = -1; + goto exit; + } + } + +exit: + + DBG_871X("<=%s, ret %d\n",__FUNCTION__, ret); + + #ifdef DBG_IOCTL + DBG_871X("DBG_IOCTL %s:%d return %d\n",__FUNCTION__, __LINE__, ret); + #endif + + _func_exit_; + + return ret; +} + +static int rtw_wx_get_essid(struct net_device *dev, + struct iw_request_info *a, + union iwreq_data *wrqu, char *extra) +{ + u32 len,ret = 0; + _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); + struct mlme_priv *pmlmepriv = &(padapter->mlmepriv); + WLAN_BSSID_EX *pcur_bss = &pmlmepriv->cur_network.network; + + RT_TRACE(_module_rtl871x_mlme_c_,_drv_info_,("rtw_wx_get_essid\n")); + + _func_enter_; + + if ( (check_fwstate(pmlmepriv, _FW_LINKED) == _TRUE) || + (check_fwstate(pmlmepriv, WIFI_ADHOC_MASTER_STATE) == _TRUE)) + { + len = pcur_bss->Ssid.SsidLength; + + wrqu->essid.length = len; + + _rtw_memcpy(extra, pcur_bss->Ssid.Ssid, len); + + wrqu->essid.flags = 1; + } + else + { + ret = -1; + goto exit; + } + +exit: + + _func_exit_; + + return ret; + +} + +static int rtw_wx_set_rate(struct net_device *dev, + struct iw_request_info *a, + union iwreq_data *wrqu, char *extra) +{ + int i, ret = 0; + _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); + u8 datarates[NumRates]; + u32 target_rate = wrqu->bitrate.value; + u32 fixed = wrqu->bitrate.fixed; + u32 ratevalue = 0; + u8 mpdatarate[NumRates]={11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0, 0xff}; + +_func_enter_; + + RT_TRACE(_module_rtl871x_mlme_c_,_drv_info_,(" rtw_wx_set_rate \n")); + RT_TRACE(_module_rtl871x_ioctl_os_c,_drv_info_,("target_rate = %d, fixed = %d\n",target_rate,fixed)); + + if(target_rate == -1){ + ratevalue = 11; + goto set_rate; + } + target_rate = target_rate/100000; + + switch(target_rate){ + case 10: + ratevalue = 0; + break; + case 20: + ratevalue = 1; + break; + case 55: + ratevalue = 2; + break; + case 60: + ratevalue = 3; + break; + case 90: + ratevalue = 4; + break; + case 110: + ratevalue = 5; + break; + case 120: + ratevalue = 6; + break; + case 180: + ratevalue = 7; + break; + case 240: + ratevalue = 8; + break; + case 360: + ratevalue = 9; + break; + case 480: + ratevalue = 10; + break; + case 540: + ratevalue = 11; + break; + default: + ratevalue = 11; + break; + } + +set_rate: + + for(i=0; ibitrate.fixed = 0; /* no auto select */ + wrqu->bitrate.value = max_rate * 100000; + + return 0; +} + +static int rtw_wx_set_rts(struct net_device *dev, + struct iw_request_info *info, + union iwreq_data *wrqu, char *extra) +{ + _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); + + _func_enter_; + + if (wrqu->rts.disabled) + padapter->registrypriv.rts_thresh = 2347; + else { + if (wrqu->rts.value < 0 || + wrqu->rts.value > 2347) + return -EINVAL; + + padapter->registrypriv.rts_thresh = wrqu->rts.value; + } + + DBG_871X("%s, rts_thresh=%d\n", __func__, padapter->registrypriv.rts_thresh); + + _func_exit_; + + return 0; + +} + +static int rtw_wx_get_rts(struct net_device *dev, + struct iw_request_info *info, + union iwreq_data *wrqu, char *extra) +{ + _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); + + _func_enter_; + + DBG_871X("%s, rts_thresh=%d\n", __func__, padapter->registrypriv.rts_thresh); + + wrqu->rts.value = padapter->registrypriv.rts_thresh; + wrqu->rts.fixed = 0; /* no auto select */ + //wrqu->rts.disabled = (wrqu->rts.value == DEFAULT_RTS_THRESHOLD); + + _func_exit_; + + return 0; +} + +static int rtw_wx_set_frag(struct net_device *dev, + struct iw_request_info *info, + union iwreq_data *wrqu, char *extra) +{ + _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); + + _func_enter_; + + if (wrqu->frag.disabled) + padapter->xmitpriv.frag_len = MAX_FRAG_THRESHOLD; + else { + if (wrqu->frag.value < MIN_FRAG_THRESHOLD || + wrqu->frag.value > MAX_FRAG_THRESHOLD) + return -EINVAL; + + padapter->xmitpriv.frag_len = wrqu->frag.value & ~0x1; + } + + DBG_871X("%s, frag_len=%d\n", __func__, padapter->xmitpriv.frag_len); + + _func_exit_; + + return 0; + +} + +static int rtw_wx_get_frag(struct net_device *dev, + struct iw_request_info *info, + union iwreq_data *wrqu, char *extra) +{ + _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); + + _func_enter_; + + DBG_871X("%s, frag_len=%d\n", __func__, padapter->xmitpriv.frag_len); + + wrqu->frag.value = padapter->xmitpriv.frag_len; + wrqu->frag.fixed = 0; /* no auto select */ + //wrqu->frag.disabled = (wrqu->frag.value == DEFAULT_FRAG_THRESHOLD); + + _func_exit_; + + return 0; +} + +static int rtw_wx_get_retry(struct net_device *dev, + struct iw_request_info *info, + union iwreq_data *wrqu, char *extra) +{ + //_adapter *padapter = (_adapter *)rtw_netdev_priv(dev); + + + wrqu->retry.value = 7; + wrqu->retry.fixed = 0; /* no auto select */ + wrqu->retry.disabled = 1; + + return 0; + +} + +#if 0 +#define IW_ENCODE_INDEX 0x00FF /* Token index (if needed) */ +#define IW_ENCODE_FLAGS 0xFF00 /* Flags defined below */ +#define IW_ENCODE_MODE 0xF000 /* Modes defined below */ +#define IW_ENCODE_DISABLED 0x8000 /* Encoding disabled */ +#define IW_ENCODE_ENABLED 0x0000 /* Encoding enabled */ +#define IW_ENCODE_RESTRICTED 0x4000 /* Refuse non-encoded packets */ +#define IW_ENCODE_OPEN 0x2000 /* Accept non-encoded packets */ +#define IW_ENCODE_NOKEY 0x0800 /* Key is write only, so not present */ +#define IW_ENCODE_TEMP 0x0400 /* Temporary key */ +/* +iwconfig wlan0 key on -> flags = 0x6001 -> maybe it means auto +iwconfig wlan0 key off -> flags = 0x8800 +iwconfig wlan0 key open -> flags = 0x2800 +iwconfig wlan0 key open 1234567890 -> flags = 0x2000 +iwconfig wlan0 key restricted -> flags = 0x4800 +iwconfig wlan0 key open [3] 1234567890 -> flags = 0x2003 +iwconfig wlan0 key restricted [2] 1234567890 -> flags = 0x4002 +iwconfig wlan0 key open [3] -> flags = 0x2803 +iwconfig wlan0 key restricted [2] -> flags = 0x4802 +*/ +#endif + +static int rtw_wx_set_enc(struct net_device *dev, + struct iw_request_info *info, + union iwreq_data *wrqu, char *keybuf) +{ + u32 key, ret = 0; + u32 keyindex_provided; + NDIS_802_11_WEP wep; + NDIS_802_11_AUTHENTICATION_MODE authmode; + + struct iw_point *erq = &(wrqu->encoding); + _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); + struct pwrctrl_priv *pwrpriv = &padapter->pwrctrlpriv; + DBG_871X("+rtw_wx_set_enc, flags=0x%x\n", erq->flags); + + _rtw_memset(&wep, 0, sizeof(NDIS_802_11_WEP)); + + key = erq->flags & IW_ENCODE_INDEX; + + _func_enter_; + + if (erq->flags & IW_ENCODE_DISABLED) + { + DBG_871X("EncryptionDisabled\n"); + padapter->securitypriv.ndisencryptstatus = Ndis802_11EncryptionDisabled; + padapter->securitypriv.dot11PrivacyAlgrthm=_NO_PRIVACY_; + padapter->securitypriv.dot118021XGrpPrivacy=_NO_PRIVACY_; + padapter->securitypriv.dot11AuthAlgrthm= dot11AuthAlgrthm_Open; //open system + authmode = Ndis802_11AuthModeOpen; + padapter->securitypriv.ndisauthtype=authmode; + + goto exit; + } + + if (key) { + if (key > WEP_KEYS) + return -EINVAL; + key--; + keyindex_provided = 1; + } + else + { + keyindex_provided = 0; + key = padapter->securitypriv.dot11PrivacyKeyIndex; + DBG_871X("rtw_wx_set_enc, key=%d\n", key); + } + + //set authentication mode + if(erq->flags & IW_ENCODE_OPEN) + { + DBG_871X("rtw_wx_set_enc():IW_ENCODE_OPEN\n"); + padapter->securitypriv.ndisencryptstatus = Ndis802_11Encryption1Enabled;//Ndis802_11EncryptionDisabled; + +#ifdef CONFIG_PLATFORM_MT53XX + padapter->securitypriv.dot11AuthAlgrthm = dot11AuthAlgrthm_Auto; +#else + padapter->securitypriv.dot11AuthAlgrthm= dot11AuthAlgrthm_Open; +#endif + + padapter->securitypriv.dot11PrivacyAlgrthm=_NO_PRIVACY_; + padapter->securitypriv.dot118021XGrpPrivacy=_NO_PRIVACY_; + authmode = Ndis802_11AuthModeOpen; + padapter->securitypriv.ndisauthtype=authmode; + } + else if(erq->flags & IW_ENCODE_RESTRICTED) + { + DBG_871X("rtw_wx_set_enc():IW_ENCODE_RESTRICTED\n"); + padapter->securitypriv.ndisencryptstatus = Ndis802_11Encryption1Enabled; + +#ifdef CONFIG_PLATFORM_MT53XX + padapter->securitypriv.dot11AuthAlgrthm = dot11AuthAlgrthm_Auto; +#else + padapter->securitypriv.dot11AuthAlgrthm= dot11AuthAlgrthm_Shared; +#endif + + padapter->securitypriv.dot11PrivacyAlgrthm=_WEP40_; + padapter->securitypriv.dot118021XGrpPrivacy=_WEP40_; + authmode = Ndis802_11AuthModeShared; + padapter->securitypriv.ndisauthtype=authmode; + } + else + { + DBG_871X("rtw_wx_set_enc():erq->flags=0x%x\n", erq->flags); + + padapter->securitypriv.ndisencryptstatus = Ndis802_11Encryption1Enabled;//Ndis802_11EncryptionDisabled; + padapter->securitypriv.dot11AuthAlgrthm= dot11AuthAlgrthm_Open; //open system + padapter->securitypriv.dot11PrivacyAlgrthm=_NO_PRIVACY_; + padapter->securitypriv.dot118021XGrpPrivacy=_NO_PRIVACY_; + authmode = Ndis802_11AuthModeOpen; + padapter->securitypriv.ndisauthtype=authmode; + } + + wep.KeyIndex = key; + if (erq->length > 0) + { + wep.KeyLength = erq->length <= 5 ? 5 : 13; + + wep.Length = wep.KeyLength + FIELD_OFFSET(NDIS_802_11_WEP, KeyMaterial); + } + else + { + wep.KeyLength = 0 ; + + if(keyindex_provided == 1)// set key_id only, no given KeyMaterial(erq->length==0). + { + padapter->securitypriv.dot11PrivacyKeyIndex = key; + + DBG_871X("(keyindex_provided == 1), keyid=%d, key_len=%d\n", key, padapter->securitypriv.dot11DefKeylen[key]); + + switch(padapter->securitypriv.dot11DefKeylen[key]) + { + case 5: + padapter->securitypriv.dot11PrivacyAlgrthm=_WEP40_; + break; + case 13: + padapter->securitypriv.dot11PrivacyAlgrthm=_WEP104_; + break; + default: + padapter->securitypriv.dot11PrivacyAlgrthm=_NO_PRIVACY_; + break; + } + + goto exit; + + } + + } + + wep.KeyIndex |= 0x80000000; + + _rtw_memcpy(wep.KeyMaterial, keybuf, wep.KeyLength); + + if (rtw_set_802_11_add_wep(padapter, &wep) == _FALSE) { + if(rf_on == pwrpriv->rf_pwrstate ) + ret = -EOPNOTSUPP; + goto exit; + } + +exit: + + _func_exit_; + + return ret; + +} + +static int rtw_wx_get_enc(struct net_device *dev, + struct iw_request_info *info, + union iwreq_data *wrqu, char *keybuf) +{ + uint key, ret =0; + _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); + struct iw_point *erq = &(wrqu->encoding); + struct mlme_priv *pmlmepriv = &(padapter->mlmepriv); + + _func_enter_; + + if(check_fwstate(pmlmepriv, _FW_LINKED) != _TRUE) + { + if(check_fwstate(pmlmepriv, WIFI_ADHOC_MASTER_STATE) != _TRUE) + { + erq->length = 0; + erq->flags |= IW_ENCODE_DISABLED; + return 0; + } + } + + + key = erq->flags & IW_ENCODE_INDEX; + + if (key) { + if (key > WEP_KEYS) + return -EINVAL; + key--; + } else + { + key = padapter->securitypriv.dot11PrivacyKeyIndex; + } + + erq->flags = key + 1; + + //if(padapter->securitypriv.ndisauthtype == Ndis802_11AuthModeOpen) + //{ + // erq->flags |= IW_ENCODE_OPEN; + //} + + switch(padapter->securitypriv.ndisencryptstatus) + { + case Ndis802_11EncryptionNotSupported: + case Ndis802_11EncryptionDisabled: + + erq->length = 0; + erq->flags |= IW_ENCODE_DISABLED; + + break; + + case Ndis802_11Encryption1Enabled: + + erq->length = padapter->securitypriv.dot11DefKeylen[key]; + + if(erq->length) + { + _rtw_memcpy(keybuf, padapter->securitypriv.dot11DefKey[key].skey, padapter->securitypriv.dot11DefKeylen[key]); + + erq->flags |= IW_ENCODE_ENABLED; + + if(padapter->securitypriv.ndisauthtype == Ndis802_11AuthModeOpen) + { + erq->flags |= IW_ENCODE_OPEN; + } + else if(padapter->securitypriv.ndisauthtype == Ndis802_11AuthModeShared) + { + erq->flags |= IW_ENCODE_RESTRICTED; + } + } + else + { + erq->length = 0; + erq->flags |= IW_ENCODE_DISABLED; + } + + break; + + case Ndis802_11Encryption2Enabled: + case Ndis802_11Encryption3Enabled: + + erq->length = 16; + erq->flags |= (IW_ENCODE_ENABLED | IW_ENCODE_OPEN | IW_ENCODE_NOKEY); + + break; + + default: + erq->length = 0; + erq->flags |= IW_ENCODE_DISABLED; + + break; + + } + + _func_exit_; + + return ret; + +} + +static int rtw_wx_get_power(struct net_device *dev, + struct iw_request_info *info, + union iwreq_data *wrqu, char *extra) +{ + //_adapter *padapter = (_adapter *)rtw_netdev_priv(dev); + + wrqu->power.value = 0; + wrqu->power.fixed = 0; /* no auto select */ + wrqu->power.disabled = 1; + + return 0; + +} + +static int rtw_wx_set_gen_ie(struct net_device *dev, + struct iw_request_info *info, + union iwreq_data *wrqu, char *extra) +{ + int ret; + _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); + + ret = rtw_set_wpa_ie(padapter, extra, wrqu->data.length); + + return ret; +} + +static int rtw_wx_set_auth(struct net_device *dev, + struct iw_request_info *info, + union iwreq_data *wrqu, char *extra) +{ + _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); + struct iw_param *param = (struct iw_param*)&(wrqu->param); + int ret = 0; + + switch (param->flags & IW_AUTH_INDEX) { + case IW_AUTH_WPA_VERSION: + break; + case IW_AUTH_CIPHER_PAIRWISE: + + break; + case IW_AUTH_CIPHER_GROUP: + + break; + case IW_AUTH_KEY_MGMT: + /* + * ??? does not use these parameters + */ + break; + + case IW_AUTH_TKIP_COUNTERMEASURES: + { + if ( param->value ) + { // wpa_supplicant is enabling the tkip countermeasure. + padapter->securitypriv.btkip_countermeasure = _TRUE; + } + else + { // wpa_supplicant is disabling the tkip countermeasure. + padapter->securitypriv.btkip_countermeasure = _FALSE; + } + break; + } + case IW_AUTH_DROP_UNENCRYPTED: + { + /* HACK: + * + * wpa_supplicant calls set_wpa_enabled when the driver + * is loaded and unloaded, regardless of if WPA is being + * used. No other calls are made which can be used to + * determine if encryption will be used or not prior to + * association being expected. If encryption is not being + * used, drop_unencrypted is set to false, else true -- we + * can use this to determine if the CAP_PRIVACY_ON bit should + * be set. + */ + + if(padapter->securitypriv.ndisencryptstatus == Ndis802_11Encryption1Enabled) + { + break;//it means init value, or using wep, ndisencryptstatus = Ndis802_11Encryption1Enabled, + // then it needn't reset it; + } + + if(param->value){ + padapter->securitypriv.ndisencryptstatus = Ndis802_11EncryptionDisabled; + padapter->securitypriv.dot11PrivacyAlgrthm=_NO_PRIVACY_; + padapter->securitypriv.dot118021XGrpPrivacy=_NO_PRIVACY_; + padapter->securitypriv.dot11AuthAlgrthm= dot11AuthAlgrthm_Open; //open system + padapter->securitypriv.ndisauthtype=Ndis802_11AuthModeOpen; + } + + break; + } + + case IW_AUTH_80211_AUTH_ALG: + + #if defined(CONFIG_ANDROID) || 1 + /* + * It's the starting point of a link layer connection using wpa_supplicant + */ + if(check_fwstate(&padapter->mlmepriv, _FW_LINKED)) { + LeaveAllPowerSaveMode(padapter); + rtw_disassoc_cmd(padapter, 500, _FALSE); + DBG_871X("%s...call rtw_indicate_disconnect\n ",__FUNCTION__); + rtw_indicate_disconnect(padapter); + rtw_free_assoc_resources(padapter, 1); + } + #endif + + + ret = wpa_set_auth_algs(dev, (u32)param->value); + + break; + + case IW_AUTH_WPA_ENABLED: + + //if(param->value) + // padapter->securitypriv.dot11AuthAlgrthm = dot11AuthAlgrthm_8021X; //802.1x + //else + // padapter->securitypriv.dot11AuthAlgrthm = dot11AuthAlgrthm_Open;//open system + + //_disassociate(priv); + + break; + + case IW_AUTH_RX_UNENCRYPTED_EAPOL: + //ieee->ieee802_1x = param->value; + break; + + case IW_AUTH_PRIVACY_INVOKED: + //ieee->privacy_invoked = param->value; + break; + + default: + return -EOPNOTSUPP; + + } + + return ret; + +} + +static int rtw_wx_set_enc_ext(struct net_device *dev, + struct iw_request_info *info, + union iwreq_data *wrqu, char *extra) +{ + char *alg_name; + u32 param_len; + struct ieee_param *param = NULL; + struct iw_point *pencoding = &wrqu->encoding; + struct iw_encode_ext *pext = (struct iw_encode_ext *)extra; + int ret=0; + + param_len = sizeof(struct ieee_param) + pext->key_len; + param = (struct ieee_param *)rtw_malloc(param_len); + if (param == NULL) + return -1; + + _rtw_memset(param, 0, param_len); + + param->cmd = IEEE_CMD_SET_ENCRYPTION; + _rtw_memset(param->sta_addr, 0xff, ETH_ALEN); + + + switch (pext->alg) { + case IW_ENCODE_ALG_NONE: + //todo: remove key + //remove = 1; + alg_name = "none"; + break; + case IW_ENCODE_ALG_WEP: + alg_name = "WEP"; + break; + case IW_ENCODE_ALG_TKIP: + alg_name = "TKIP"; + break; + case IW_ENCODE_ALG_CCMP: + alg_name = "CCMP"; + break; +#ifdef CONFIG_IEEE80211W + case IW_ENCODE_ALG_AES_CMAC: + alg_name = "BIP"; + break; +#endif //CONFIG_IEEE80211W + default: + return -1; + } + + strncpy((char *)param->u.crypt.alg, alg_name, IEEE_CRYPT_ALG_NAME_LEN); + + + if((pext->ext_flags & IW_ENCODE_EXT_GROUP_KEY)//? +#ifdef CONFIG_IEEE80211W + || (pext->ext_flags & IW_ENCODE_ALG_AES_CMAC) +#endif //CONFIG_IEEE80211W + ) + { + param->u.crypt.set_tx = 0; + } + + if (pext->ext_flags & IW_ENCODE_EXT_SET_TX_KEY)//? + { + param->u.crypt.set_tx = 1; + } + + param->u.crypt.idx = (pencoding->flags&0x00FF) -1 ; + + if (pext->ext_flags & IW_ENCODE_EXT_RX_SEQ_VALID) + { + _rtw_memcpy(param->u.crypt.seq, pext->rx_seq, 8); + } + + if(pext->key_len) + { + param->u.crypt.key_len = pext->key_len; + //_rtw_memcpy(param + 1, pext + 1, pext->key_len); + _rtw_memcpy(param->u.crypt.key, pext + 1, pext->key_len); + } + + + if (pencoding->flags & IW_ENCODE_DISABLED) + { + //todo: remove key + //remove = 1; + } + + ret = wpa_set_encryption(dev, param, param_len); + + + if(param) + { + rtw_mfree((u8*)param, param_len); + } + + + return ret; + +} + + +static int rtw_wx_get_nick(struct net_device *dev, + struct iw_request_info *info, + union iwreq_data *wrqu, char *extra) +{ + //_adapter *padapter = (_adapter *)rtw_netdev_priv(dev); + //struct mlme_priv *pmlmepriv = &(padapter->mlmepriv); + //struct security_priv *psecuritypriv = &padapter->securitypriv; + + if(extra) + { + wrqu->data.length = 14; + wrqu->data.flags = 1; + _rtw_memcpy(extra, "", 14); + } + + //rtw_signal_process(pid, SIGUSR1); //for test + + //dump debug info here +/* + u32 dot11AuthAlgrthm; // 802.11 auth, could be open, shared, and 8021x + u32 dot11PrivacyAlgrthm; // This specify the privacy for shared auth. algorithm. + u32 dot118021XGrpPrivacy; // This specify the privacy algthm. used for Grp key + u32 ndisauthtype; + u32 ndisencryptstatus; +*/ + + //DBG_871X("auth_alg=0x%x, enc_alg=0x%x, auth_type=0x%x, enc_type=0x%x\n", + // psecuritypriv->dot11AuthAlgrthm, psecuritypriv->dot11PrivacyAlgrthm, + // psecuritypriv->ndisauthtype, psecuritypriv->ndisencryptstatus); + + //DBG_871X("enc_alg=0x%x\n", psecuritypriv->dot11PrivacyAlgrthm); + //DBG_871X("auth_type=0x%x\n", psecuritypriv->ndisauthtype); + //DBG_871X("enc_type=0x%x\n", psecuritypriv->ndisencryptstatus); + +#if 0 + DBG_871X("dbg(0x210)=0x%x\n", rtw_read32(padapter, 0x210)); + DBG_871X("dbg(0x608)=0x%x\n", rtw_read32(padapter, 0x608)); + DBG_871X("dbg(0x280)=0x%x\n", rtw_read32(padapter, 0x280)); + DBG_871X("dbg(0x284)=0x%x\n", rtw_read32(padapter, 0x284)); + DBG_871X("dbg(0x288)=0x%x\n", rtw_read32(padapter, 0x288)); + + DBG_871X("dbg(0x664)=0x%x\n", rtw_read32(padapter, 0x664)); + + + DBG_871X("\n"); + + DBG_871X("dbg(0x430)=0x%x\n", rtw_read32(padapter, 0x430)); + DBG_871X("dbg(0x438)=0x%x\n", rtw_read32(padapter, 0x438)); + + DBG_871X("dbg(0x440)=0x%x\n", rtw_read32(padapter, 0x440)); + + DBG_871X("dbg(0x458)=0x%x\n", rtw_read32(padapter, 0x458)); + + DBG_871X("dbg(0x484)=0x%x\n", rtw_read32(padapter, 0x484)); + DBG_871X("dbg(0x488)=0x%x\n", rtw_read32(padapter, 0x488)); + + DBG_871X("dbg(0x444)=0x%x\n", rtw_read32(padapter, 0x444)); + DBG_871X("dbg(0x448)=0x%x\n", rtw_read32(padapter, 0x448)); + DBG_871X("dbg(0x44c)=0x%x\n", rtw_read32(padapter, 0x44c)); + DBG_871X("dbg(0x450)=0x%x\n", rtw_read32(padapter, 0x450)); +#endif + + return 0; + +} + +static int rtw_wx_read32(struct net_device *dev, + struct iw_request_info *info, + union iwreq_data *wrqu, char *extra) +{ + PADAPTER padapter; + struct iw_point *p; + u16 len; + u32 addr; + u32 data32; + u32 bytes; + u8 *ptmp; + + + padapter = (PADAPTER)rtw_netdev_priv(dev); + p = &wrqu->data; + len = p->length; + ptmp = (u8*)rtw_malloc(len); + if (NULL == ptmp) + return -ENOMEM; + + if (copy_from_user(ptmp, p->pointer, len)) { + rtw_mfree(ptmp, len); + return -EFAULT; + } + + bytes = 0; + addr = 0; + sscanf(ptmp, "%d,%x", &bytes, &addr); + + switch (bytes) { + case 1: + data32 = rtw_read8(padapter, addr); + sprintf(extra, "0x%02X", data32); + break; + case 2: + data32 = rtw_read16(padapter, addr); + sprintf(extra, "0x%04X", data32); + break; + case 4: + data32 = rtw_read32(padapter, addr); + sprintf(extra, "0x%08X", data32); + break; + default: + printk(KERN_INFO "%s: usage> read [bytes],[address(hex)]\n", __func__); + return -EINVAL; + } + printk(KERN_INFO "%s: addr=0x%08X data=%s\n", __func__, addr, extra); + + rtw_mfree(ptmp, len); + + return 0; +} + +static int rtw_wx_write32(struct net_device *dev, + struct iw_request_info *info, + union iwreq_data *wrqu, char *extra) +{ + PADAPTER padapter = (PADAPTER)rtw_netdev_priv(dev); + + u32 addr; + u32 data32; + u32 bytes; + + + bytes = 0; + addr = 0; + data32 = 0; + sscanf(extra, "%d,%x,%x", &bytes, &addr, &data32); + + switch (bytes) { + case 1: + rtw_write8(padapter, addr, (u8)data32); + printk(KERN_INFO "%s: addr=0x%08X data=0x%02X\n", __func__, addr, (u8)data32); + break; + case 2: + rtw_write16(padapter, addr, (u16)data32); + printk(KERN_INFO "%s: addr=0x%08X data=0x%04X\n", __func__, addr, (u16)data32); + break; + case 4: + rtw_write32(padapter, addr, data32); + printk(KERN_INFO "%s: addr=0x%08X data=0x%08X\n", __func__, addr, data32); + break; + default: + printk(KERN_INFO "%s: usage> write [bytes],[address(hex)],[data(hex)]\n", __func__); + return -EINVAL; + } + + return 0; +} + +static int rtw_wx_read_rf(struct net_device *dev, + struct iw_request_info *info, + union iwreq_data *wrqu, char *extra) +{ + _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); + u32 path, addr, data32; + + + path = *(u32*)extra; + addr = *((u32*)extra + 1); + data32 = rtw_hal_read_rfreg(padapter, path, addr, 0xFFFFF); +// DBG_871X("%s: path=%d addr=0x%02x data=0x%05x\n", __func__, path, addr, data32); + /* + * IMPORTANT!! + * Only when wireless private ioctl is at odd order, + * "extra" would be copied to user space. + */ + sprintf(extra, "0x%05x", data32); + + return 0; +} + +static int rtw_wx_write_rf(struct net_device *dev, + struct iw_request_info *info, + union iwreq_data *wrqu, char *extra) +{ + _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); + u32 path, addr, data32; + + + path = *(u32*)extra; + addr = *((u32*)extra + 1); + data32 = *((u32*)extra + 2); +// DBG_871X("%s: path=%d addr=0x%02x data=0x%05x\n", __func__, path, addr, data32); + rtw_hal_write_rfreg(padapter, path, addr, 0xFFFFF, data32); + + return 0; +} + +static int rtw_wx_priv_null(struct net_device *dev, struct iw_request_info *a, + union iwreq_data *wrqu, char *b) +{ + return -1; +} + +static int dummy(struct net_device *dev, struct iw_request_info *a, + union iwreq_data *wrqu, char *b) +{ + //_adapter *padapter = (_adapter *)rtw_netdev_priv(dev); + //struct mlme_priv *pmlmepriv = &(padapter->mlmepriv); + + //DBG_871X("cmd_code=%x, fwstate=0x%x\n", a->cmd, get_fwstate(pmlmepriv)); + + return -1; + +} + +static int rtw_wx_set_channel_plan(struct net_device *dev, + struct iw_request_info *info, + union iwreq_data *wrqu, char *extra) +{ + _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); + struct registry_priv *pregistrypriv = &padapter->registrypriv; + struct mlme_priv *pmlmepriv = &padapter->mlmepriv; + extern int rtw_channel_plan; + u8 channel_plan_req = (u8) (*((int *)wrqu)); + + #if 0 + rtw_channel_plan = (int)wrqu->data.pointer; + pregistrypriv->channel_plan = rtw_channel_plan; + pmlmepriv->ChannelPlan = pregistrypriv->channel_plan; + #endif + + if( _SUCCESS == rtw_set_chplan_cmd(padapter, channel_plan_req, 1) ) { + DBG_871X("%s set channel_plan = 0x%02X\n", __func__, pmlmepriv->ChannelPlan); + } else + return -EPERM; + + return 0; +} + +static int rtw_wx_set_mtk_wps_probe_ie(struct net_device *dev, + struct iw_request_info *a, + union iwreq_data *wrqu, char *b) +{ +#ifdef CONFIG_PLATFORM_MT53XX + _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); + struct mlme_priv *pmlmepriv = &padapter->mlmepriv; + + RT_TRACE(_module_rtl871x_ioctl_os_c, _drv_notice_, + ("WLAN IOCTL: cmd_code=%x, fwstate=0x%x\n", + a->cmd, get_fwstate(pmlmepriv))); +#endif + return 0; +} + +static int rtw_wx_get_sensitivity(struct net_device *dev, + struct iw_request_info *info, + union iwreq_data *wrqu, char *buf) +{ +#ifdef CONFIG_PLATFORM_MT53XX + _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); + + // Modified by Albert 20110914 + // This is in dbm format for MTK platform. + wrqu->qual.level = padapter->recvpriv.rssi; + DBG_871X(" level = %u\n", wrqu->qual.level ); +#endif + return 0; +} + +static int rtw_wx_set_mtk_wps_ie(struct net_device *dev, + struct iw_request_info *info, + union iwreq_data *wrqu, char *extra) +{ +#ifdef CONFIG_PLATFORM_MT53XX + _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); + + return rtw_set_wpa_ie(padapter, wrqu->data.pointer, wrqu->data.length); +#else + return 0; +#endif +} + +/* +typedef int (*iw_handler)(struct net_device *dev, struct iw_request_info *info, + union iwreq_data *wrqu, char *extra); +*/ +/* + * For all data larger than 16 octets, we need to use a + * pointer to memory allocated in user space. + */ +static int rtw_drvext_hdl(struct net_device *dev, struct iw_request_info *info, + union iwreq_data *wrqu, char *extra) +{ + + #if 0 +struct iw_point +{ + void __user *pointer; /* Pointer to the data (in user space) */ + __u16 length; /* number of fields or size in bytes */ + __u16 flags; /* Optional params */ +}; + #endif + +#ifdef CONFIG_DRVEXT_MODULE + u8 res; + struct drvext_handler *phandler; + struct drvext_oidparam *poidparam; + int ret; + u16 len; + u8 *pparmbuf, bset; + _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); + struct iw_point *p = &wrqu->data; + + if( (!p->length) || (!p->pointer)){ + ret = -EINVAL; + goto _rtw_drvext_hdl_exit; + } + + + bset = (u8)(p->flags&0xFFFF); + len = p->length; + pparmbuf = (u8*)rtw_malloc(len); + if (pparmbuf == NULL){ + ret = -ENOMEM; + goto _rtw_drvext_hdl_exit; + } + + if(bset)//set info + { + if (copy_from_user(pparmbuf, p->pointer,len)) { + rtw_mfree(pparmbuf, len); + ret = -EFAULT; + goto _rtw_drvext_hdl_exit; + } + } + else//query info + { + + } + + + // + poidparam = (struct drvext_oidparam *)pparmbuf; + + RT_TRACE(_module_rtl871x_ioctl_os_c,_drv_info_,("drvext set oid subcode [%d], len[%d], InformationBufferLength[%d]\r\n", + poidparam->subcode, poidparam->len, len)); + + + //check subcode + if ( poidparam->subcode >= MAX_DRVEXT_HANDLERS) + { + RT_TRACE(_module_rtl871x_ioctl_os_c,_drv_err_,("no matching drvext handlers\r\n")); + ret = -EINVAL; + goto _rtw_drvext_hdl_exit; + } + + + if ( poidparam->subcode >= MAX_DRVEXT_OID_SUBCODES) + { + RT_TRACE(_module_rtl871x_ioctl_os_c,_drv_err_,("no matching drvext subcodes\r\n")); + ret = -EINVAL; + goto _rtw_drvext_hdl_exit; + } + + + phandler = drvextoidhandlers + poidparam->subcode; + + if (poidparam->len != phandler->parmsize) + { + RT_TRACE(_module_rtl871x_ioctl_os_c,_drv_err_,("no matching drvext param size %d vs %d\r\n", + poidparam->len , phandler->parmsize)); + ret = -EINVAL; + goto _rtw_drvext_hdl_exit; + } + + + res = phandler->handler(&padapter->drvextpriv, bset, poidparam->data); + + if(res==0) + { + ret = 0; + + if (bset == 0x00) {//query info + //_rtw_memcpy(p->pointer, pparmbuf, len); + if (copy_to_user(p->pointer, pparmbuf, len)) + ret = -EFAULT; + } + } + else + ret = -EFAULT; + + +_rtw_drvext_hdl_exit: + + return ret; + +#endif + + return 0; + +} + +static void rtw_dbg_mode_hdl(_adapter *padapter, u32 id, u8 *pdata, u32 len) +{ + pRW_Reg RegRWStruct; + struct rf_reg_param *prfreg; + u8 path; + u8 offset; + u32 value; + + DBG_871X("%s\n", __FUNCTION__); + + switch(id) + { + case GEN_MP_IOCTL_SUBCODE(MP_START): + DBG_871X("871x_driver is only for normal mode, can't enter mp mode\n"); + break; + case GEN_MP_IOCTL_SUBCODE(READ_REG): + RegRWStruct = (pRW_Reg)pdata; + switch (RegRWStruct->width) + { + case 1: + RegRWStruct->value = rtw_read8(padapter, RegRWStruct->offset); + break; + case 2: + RegRWStruct->value = rtw_read16(padapter, RegRWStruct->offset); + break; + case 4: + RegRWStruct->value = rtw_read32(padapter, RegRWStruct->offset); + break; + default: + break; + } + + break; + case GEN_MP_IOCTL_SUBCODE(WRITE_REG): + RegRWStruct = (pRW_Reg)pdata; + switch (RegRWStruct->width) + { + case 1: + rtw_write8(padapter, RegRWStruct->offset, (u8)RegRWStruct->value); + break; + case 2: + rtw_write16(padapter, RegRWStruct->offset, (u16)RegRWStruct->value); + break; + case 4: + rtw_write32(padapter, RegRWStruct->offset, (u32)RegRWStruct->value); + break; + default: + break; + } + + break; + case GEN_MP_IOCTL_SUBCODE(READ_RF_REG): + + prfreg = (struct rf_reg_param *)pdata; + + path = (u8)prfreg->path; + offset = (u8)prfreg->offset; + + value = rtw_hal_read_rfreg(padapter, path, offset, 0xffffffff); + + prfreg->value = value; + + break; + case GEN_MP_IOCTL_SUBCODE(WRITE_RF_REG): + + prfreg = (struct rf_reg_param *)pdata; + + path = (u8)prfreg->path; + offset = (u8)prfreg->offset; + value = prfreg->value; + + rtw_hal_write_rfreg(padapter, path, offset, 0xffffffff, value); + + break; + case GEN_MP_IOCTL_SUBCODE(TRIGGER_GPIO): + DBG_871X("==> trigger gpio 0\n"); + rtw_hal_set_hwreg(padapter, HW_VAR_TRIGGER_GPIO_0, 0); + break; +#ifdef CONFIG_BT_COEXIST + case GEN_MP_IOCTL_SUBCODE(SET_DM_BT): + DBG_871X("==> set dm_bt_coexist:%x\n",*(u8 *)pdata); + rtw_hal_set_hwreg(padapter, HW_VAR_BT_SET_COEXIST, pdata); + break; + case GEN_MP_IOCTL_SUBCODE(DEL_BA): + DBG_871X("==> delete ba:%x\n",*(u8 *)pdata); + rtw_hal_set_hwreg(padapter, HW_VAR_BT_ISSUE_DELBA, pdata); + break; +#endif +#ifdef DBG_CONFIG_ERROR_DETECT + case GEN_MP_IOCTL_SUBCODE(GET_WIFI_STATUS): + *pdata = rtw_hal_sreset_get_wifi_status(padapter); + break; +#endif + + default: + break; + } + +} + +static int rtw_mp_ioctl_hdl(struct net_device *dev, struct iw_request_info *info, + union iwreq_data *wrqu, char *extra) +{ + int ret = 0; + u32 BytesRead, BytesWritten, BytesNeeded; + struct oid_par_priv oid_par; + struct mp_ioctl_handler *phandler; + struct mp_ioctl_param *poidparam; + uint status=0; + u16 len; + u8 *pparmbuf = NULL, bset; + PADAPTER padapter = (PADAPTER)rtw_netdev_priv(dev); + struct iw_point *p = &wrqu->data; + + //DBG_871X("+rtw_mp_ioctl_hdl\n"); + + //mutex_lock(&ioctl_mutex); + + if ((!p->length) || (!p->pointer)) { + ret = -EINVAL; + goto _rtw_mp_ioctl_hdl_exit; + } + + pparmbuf = NULL; + bset = (u8)(p->flags & 0xFFFF); + len = p->length; + pparmbuf = (u8*)rtw_malloc(len); + if (pparmbuf == NULL){ + ret = -ENOMEM; + goto _rtw_mp_ioctl_hdl_exit; + } + + if (copy_from_user(pparmbuf, p->pointer, len)) { + ret = -EFAULT; + goto _rtw_mp_ioctl_hdl_exit; + } + + poidparam = (struct mp_ioctl_param *)pparmbuf; + RT_TRACE(_module_rtl871x_ioctl_os_c, _drv_info_, + ("rtw_mp_ioctl_hdl: subcode [%d], len[%d], buffer_len[%d]\r\n", + poidparam->subcode, poidparam->len, len)); + + if (poidparam->subcode >= MAX_MP_IOCTL_SUBCODE) { + RT_TRACE(_module_rtl871x_ioctl_os_c, _drv_err_, ("no matching drvext subcodes\r\n")); + ret = -EINVAL; + goto _rtw_mp_ioctl_hdl_exit; + } + + //DBG_871X("%s: %d\n", __func__, poidparam->subcode); + +#ifdef CONFIG_MP_INCLUDED + phandler = mp_ioctl_hdl + poidparam->subcode; + + if ((phandler->paramsize != 0) && (poidparam->len < phandler->paramsize)) + { + RT_TRACE(_module_rtl871x_ioctl_os_c, _drv_err_, + ("no matching drvext param size %d vs %d\r\n", + poidparam->len, phandler->paramsize)); + ret = -EINVAL; + goto _rtw_mp_ioctl_hdl_exit; + } + + if (phandler->handler) + { + oid_par.adapter_context = padapter; + oid_par.oid = phandler->oid; + oid_par.information_buf = poidparam->data; + oid_par.information_buf_len = poidparam->len; + oid_par.dbg = 0; + + BytesWritten = 0; + BytesNeeded = 0; + + if (bset) { + oid_par.bytes_rw = &BytesRead; + oid_par.bytes_needed = &BytesNeeded; + oid_par.type_of_oid = SET_OID; + } else { + oid_par.bytes_rw = &BytesWritten; + oid_par.bytes_needed = &BytesNeeded; + oid_par.type_of_oid = QUERY_OID; + } + + status = phandler->handler(&oid_par); + + //todo:check status, BytesNeeded, etc. + } + else { + DBG_871X("rtw_mp_ioctl_hdl(): err!, subcode=%d, oid=%d, handler=%p\n", + poidparam->subcode, phandler->oid, phandler->handler); + ret = -EFAULT; + goto _rtw_mp_ioctl_hdl_exit; + } +#else + + rtw_dbg_mode_hdl(padapter, poidparam->subcode, poidparam->data, poidparam->len); + +#endif + + if (bset == 0x00) {//query info + if (copy_to_user(p->pointer, pparmbuf, len)) + ret = -EFAULT; + } + + if (status) { + ret = -EFAULT; + goto _rtw_mp_ioctl_hdl_exit; + } + +_rtw_mp_ioctl_hdl_exit: + + if (pparmbuf) + rtw_mfree(pparmbuf, len); + + //mutex_unlock(&ioctl_mutex); + + return ret; +} + +static int rtw_get_ap_info(struct net_device *dev, + struct iw_request_info *info, + union iwreq_data *wrqu, char *extra) +{ + int bssid_match, ret = 0; + u32 cnt=0, wpa_ielen; + _irqL irqL; + _list *plist, *phead; + unsigned char *pbuf; + u8 bssid[ETH_ALEN]; + char data[32]; + struct wlan_network *pnetwork = NULL; + _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); + struct mlme_priv *pmlmepriv = &(padapter->mlmepriv); + _queue *queue = &(pmlmepriv->scanned_queue); + struct iw_point *pdata = &wrqu->data; + + DBG_871X("+rtw_get_aplist_info\n"); + + if((padapter->bDriverStopped) || (pdata==NULL)) + { + ret= -EINVAL; + goto exit; + } + + while((check_fwstate(pmlmepriv, (_FW_UNDER_SURVEY|_FW_UNDER_LINKING))) == _TRUE) + { + rtw_msleep_os(30); + cnt++; + if(cnt > 100) + break; + } + + + //pdata->length = 0;//? + pdata->flags = 0; + if(pdata->length>=32) + { + if(copy_from_user(data, pdata->pointer, 32)) + { + ret= -EINVAL; + goto exit; + } + } + else + { + ret= -EINVAL; + goto exit; + } + + _enter_critical_bh(&(pmlmepriv->scanned_queue.lock), &irqL); + + phead = get_list_head(queue); + plist = get_next(phead); + + while(1) + { + if (rtw_end_of_queue_search(phead,plist)== _TRUE) + break; + + + pnetwork = LIST_CONTAINOR(plist, struct wlan_network, list); + + //if(hwaddr_aton_i(pdata->pointer, bssid)) + if(hwaddr_aton_i(data, bssid)) + { + DBG_871X("Invalid BSSID '%s'.\n", (u8*)data); + _exit_critical_bh(&(pmlmepriv->scanned_queue.lock), &irqL); + return -EINVAL; + } + + + if(_rtw_memcmp(bssid, pnetwork->network.MacAddress, ETH_ALEN) == _TRUE)//BSSID match, then check if supporting wpa/wpa2 + { + DBG_871X("BSSID:" MAC_FMT "\n", MAC_ARG(bssid)); + + pbuf = rtw_get_wpa_ie(&pnetwork->network.IEs[12], &wpa_ielen, pnetwork->network.IELength-12); + if(pbuf && (wpa_ielen>0)) + { + pdata->flags = 1; + break; + } + + pbuf = rtw_get_wpa2_ie(&pnetwork->network.IEs[12], &wpa_ielen, pnetwork->network.IELength-12); + if(pbuf && (wpa_ielen>0)) + { + pdata->flags = 2; + break; + } + + } + + plist = get_next(plist); + + } + + _exit_critical_bh(&(pmlmepriv->scanned_queue.lock), &irqL); + + if(pdata->length>=34) + { + if(copy_to_user((u8*)pdata->pointer+32, (u8*)&pdata->flags, 1)) + { + ret= -EINVAL; + goto exit; + } + } + +exit: + + return ret; + +} + +static int rtw_set_pid(struct net_device *dev, + struct iw_request_info *info, + union iwreq_data *wrqu, char *extra) +{ + + int ret = 0; + _adapter *padapter = rtw_netdev_priv(dev); + int *pdata = (int *)wrqu; + int selector; + + if((padapter->bDriverStopped) || (pdata==NULL)) + { + ret= -EINVAL; + goto exit; + } + + selector = *pdata; + if(selector < 3 && selector >=0) { + padapter->pid[selector] = *(pdata+1); + #ifdef CONFIG_GLOBAL_UI_PID + ui_pid[selector] = *(pdata+1); + #endif + DBG_871X("%s set pid[%d]=%d\n", __FUNCTION__, selector ,padapter->pid[selector]); + } + else + DBG_871X("%s selector %d error\n", __FUNCTION__, selector); + +exit: + + return ret; + +} + +static int rtw_wps_start(struct net_device *dev, + struct iw_request_info *info, + union iwreq_data *wrqu, char *extra) +{ + + int ret = 0; + _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); + struct iw_point *pdata = &wrqu->data; + u32 u32wps_start = 0; + unsigned int uintRet = 0; + + uintRet = copy_from_user( ( void* ) &u32wps_start, pdata->pointer, 4 ); + + if((padapter->bDriverStopped) || (pdata==NULL)) + { + ret= -EINVAL; + goto exit; + } + + if ( u32wps_start == 0 ) + { + u32wps_start = *extra; + } + + DBG_871X( "[%s] wps_start = %d\n", __FUNCTION__, u32wps_start ); + + if ( u32wps_start == 1 ) // WPS Start + { + rtw_led_control(padapter, LED_CTL_START_WPS); + } + else if ( u32wps_start == 2 ) // WPS Stop because of wps success + { + rtw_led_control(padapter, LED_CTL_STOP_WPS); + } + else if ( u32wps_start == 3 ) // WPS Stop because of wps fail + { + rtw_led_control(padapter, LED_CTL_STOP_WPS_FAIL); + } + +#ifdef CONFIG_INTEL_WIDI + process_intel_widi_wps_status(padapter, u32wps_start); +#endif //CONFIG_INTEL_WIDI + +exit: + + return ret; + +} + +#ifdef CONFIG_P2P +static int rtw_wext_p2p_enable(struct net_device *dev, + struct iw_request_info *info, + union iwreq_data *wrqu, char *extra) +{ + + int ret = 0; + _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); + struct mlme_priv *pmlmepriv = &(padapter->mlmepriv); + struct iw_point *pdata = &wrqu->data; + struct wifidirect_info *pwdinfo= &(padapter->wdinfo); + struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; + struct pwrctrl_priv *pwrpriv = &padapter->pwrctrlpriv; + enum P2P_ROLE init_role = P2P_ROLE_DISABLE; + + if(*extra == '0' ) + init_role = P2P_ROLE_DISABLE; + else if(*extra == '1') + init_role = P2P_ROLE_DEVICE; + else if(*extra == '2') + init_role = P2P_ROLE_CLIENT; + else if(*extra == '3') + init_role = P2P_ROLE_GO; + + if(_FAIL == rtw_p2p_enable(padapter, init_role)) + { + ret = -EFAULT; + goto exit; + } + + //set channel/bandwidth + if(init_role != P2P_ROLE_DISABLE) + { + u8 channel, ch_offset; + u16 bwmode; + + if(rtw_p2p_chk_state(pwdinfo, P2P_STATE_LISTEN)) + { + // Stay at the listen state and wait for discovery. + channel = pwdinfo->listen_channel; + pwdinfo->operating_channel = pwdinfo->listen_channel; + ch_offset = HAL_PRIME_CHNL_OFFSET_DONT_CARE; + bwmode = HT_CHANNEL_WIDTH_20; + } +#ifdef CONFIG_CONCURRENT_MODE + else if(rtw_p2p_chk_state(pwdinfo, P2P_STATE_IDLE)) + { + _adapter *pbuddy_adapter = padapter->pbuddy_adapter; + //struct wifidirect_info *pbuddy_wdinfo = &pbuddy_adapter->wdinfo; + struct mlme_priv *pbuddy_mlmepriv = &pbuddy_adapter->mlmepriv; + struct mlme_ext_priv *pbuddy_mlmeext = &pbuddy_adapter->mlmeextpriv; + + _set_timer( &pwdinfo->ap_p2p_switch_timer, pwdinfo->ext_listen_interval ); + if ( check_fwstate( pbuddy_mlmepriv, _FW_LINKED ) ) + { + pwdinfo->operating_channel = pbuddy_mlmeext->cur_channel; + // How about the ch_offset and bwmode ?? + } + else + { + pwdinfo->operating_channel = pwdinfo->listen_channel; + } + + channel = pbuddy_mlmeext->cur_channel; + ch_offset = pbuddy_mlmeext->cur_ch_offset; + bwmode = pbuddy_mlmeext->cur_bwmode; + } +#endif + else + { + pwdinfo->operating_channel = pmlmeext->cur_channel; + + channel = pwdinfo->operating_channel; + ch_offset = pmlmeext->cur_ch_offset; + bwmode = pmlmeext->cur_bwmode; + } + + set_channel_bwmode(padapter, channel, ch_offset, bwmode); + } + +exit: + return ret; + +} + +static int rtw_p2p_set_go_nego_ssid(struct net_device *dev, + struct iw_request_info *info, + union iwreq_data *wrqu, char *extra) +{ + + int ret = 0; + _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); + struct mlme_priv *pmlmepriv = &(padapter->mlmepriv); + struct iw_point *pdata = &wrqu->data; + struct wifidirect_info *pwdinfo= &(padapter->wdinfo); + + DBG_871X( "[%s] ssid = %s, len = %d\n", __FUNCTION__, extra, (u32)strlen( extra ) ); + _rtw_memcpy( pwdinfo->nego_ssid, extra, strlen( extra ) ); + pwdinfo->nego_ssidlen = strlen( extra ); + + return ret; + +} + + +static int rtw_p2p_set_intent(struct net_device *dev, + struct iw_request_info *info, + union iwreq_data *wrqu, char *extra) +{ + int ret = 0; + _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); + struct wifidirect_info *pwdinfo= &(padapter->wdinfo); + u8 intent = pwdinfo->intent; + + extra[ wrqu->data.length ] = 0x00; + + intent = rtw_atoi( extra ); + + if ( intent <= 15 ) + { + pwdinfo->intent= intent; + } + else + { + ret = -1; + } + + DBG_871X( "[%s] intent = %d\n", __FUNCTION__, intent); + + return ret; + +} + +static int rtw_p2p_set_listen_ch(struct net_device *dev, + struct iw_request_info *info, + union iwreq_data *wrqu, char *extra) +{ + + int ret = 0; + _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); + struct wifidirect_info *pwdinfo= &(padapter->wdinfo); + u8 listen_ch = pwdinfo->listen_channel; // Listen channel number + + extra[ wrqu->data.length ] = 0x00; + listen_ch = rtw_atoi( extra ); + + if ( ( listen_ch == 1 ) || ( listen_ch == 6 ) || ( listen_ch == 11 ) ) + { + pwdinfo->listen_channel = listen_ch; + set_channel_bwmode(padapter, pwdinfo->listen_channel, HAL_PRIME_CHNL_OFFSET_DONT_CARE, HT_CHANNEL_WIDTH_20); + } + else + { + ret = -1; + } + + DBG_871X( "[%s] listen_ch = %d\n", __FUNCTION__, pwdinfo->listen_channel ); + + return ret; + +} + +static int rtw_p2p_set_op_ch(struct net_device *dev, + struct iw_request_info *info, + union iwreq_data *wrqu, char *extra) +{ +// Commented by Albert 20110524 +// This function is used to set the operating channel if the driver will become the group owner + + int ret = 0; + _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); + struct wifidirect_info *pwdinfo= &(padapter->wdinfo); + u8 op_ch = pwdinfo->operating_channel; // Operating channel number + + extra[ wrqu->data.length ] = 0x00; + + op_ch = ( u8 ) rtw_atoi( extra ); + if ( op_ch > 0 ) + { + pwdinfo->operating_channel = op_ch; + } + else + { + ret = -1; + } + + DBG_871X( "[%s] op_ch = %d\n", __FUNCTION__, pwdinfo->operating_channel ); + + return ret; + +} + + +static int rtw_p2p_profilefound(struct net_device *dev, + struct iw_request_info *info, + union iwreq_data *wrqu, char *extra) +{ + + int ret = 0; + _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); + struct wifidirect_info *pwdinfo= &(padapter->wdinfo); + + // Comment by Albert 2010/10/13 + // Input data format: + // Ex: 0 + // Ex: 1XX:XX:XX:XX:XX:XXYYSSID + // 0 => Reflush the profile record list. + // 1 => Add the profile list + // XX:XX:XX:XX:XX:XX => peer's MAC Address ( ex: 00:E0:4C:00:00:01 ) + // YY => SSID Length + // SSID => SSID for persistence group + + DBG_871X( "[%s] In value = %s, len = %d \n", __FUNCTION__, extra, wrqu->data.length -1); + + + // The upper application should pass the SSID to driver by using this rtw_p2p_profilefound function. + if(!rtw_p2p_chk_state(pwdinfo, P2P_STATE_NONE)) + { + if ( extra[ 0 ] == '0' ) + { + // Remove all the profile information of wifidirect_info structure. + _rtw_memset( &pwdinfo->profileinfo[ 0 ], 0x00, sizeof( struct profile_info ) * P2P_MAX_PERSISTENT_GROUP_NUM ); + pwdinfo->profileindex = 0; + } + else + { + if ( pwdinfo->profileindex >= P2P_MAX_PERSISTENT_GROUP_NUM ) + { + ret = -1; + } + else + { + int jj, kk; + + // Add this profile information into pwdinfo->profileinfo + // Ex: 1XX:XX:XX:XX:XX:XXYYSSID + for( jj = 0, kk = 1; jj < ETH_ALEN; jj++, kk += 3 ) + { + pwdinfo->profileinfo[ pwdinfo->profileindex ].peermac[ jj ] = key_2char2num(extra[ kk ], extra[ kk+ 1 ]); + } + + //pwdinfo->profileinfo[ pwdinfo->profileindex ].ssidlen = ( extra[18] - '0' ) * 10 + ( extra[ 19 ] - '0' ); + //_rtw_memcpy( pwdinfo->profileinfo[ pwdinfo->profileindex ].ssid, &extra[ 20 ], pwdinfo->profileinfo[ pwdinfo->profileindex ].ssidlen ); + pwdinfo->profileindex++; + } + } + } + + return ret; + +} + +static int rtw_p2p_setDN(struct net_device *dev, + struct iw_request_info *info, + union iwreq_data *wrqu, char *extra) +{ + + int ret = 0; + _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); + struct wifidirect_info *pwdinfo= &(padapter->wdinfo); + + + DBG_871X( "[%s] %s %d\n", __FUNCTION__, extra, wrqu->data.length -1 ); + + _rtw_memset( pwdinfo->device_name, 0x00, WPS_MAX_DEVICE_NAME_LEN ); + _rtw_memcpy( pwdinfo->device_name, extra, wrqu->data.length - 1 ); + pwdinfo->device_name_len = wrqu->data.length - 1; + return ret; + +} + + +static int rtw_p2p_get_status(struct net_device *dev, + struct iw_request_info *info, + union iwreq_data *wrqu, char *extra) +{ + + int ret = 0; + _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); + struct iw_point *pdata = &wrqu->data; + struct wifidirect_info *pwdinfo = &( padapter->wdinfo ); + + + if ( padapter->bShowGetP2PState ) + { + DBG_871X( "[%s] Role = %d, Status = %d, peer addr = %.2X:%.2X:%.2X:%.2X:%.2X:%.2X\n", __FUNCTION__, rtw_p2p_role(pwdinfo), rtw_p2p_state(pwdinfo), + pwdinfo->p2p_peer_interface_addr[ 0 ], pwdinfo->p2p_peer_interface_addr[ 1 ], pwdinfo->p2p_peer_interface_addr[ 2 ], + pwdinfo->p2p_peer_interface_addr[ 3 ], pwdinfo->p2p_peer_interface_addr[ 4 ], pwdinfo->p2p_peer_interface_addr[ 5 ]); + } + + // Commented by Albert 2010/10/12 + // Because of the output size limitation, I had removed the "Role" information. + // About the "Role" information, we will use the new private IOCTL to get the "Role" information. + sprintf( extra, "\n\nStatus=%.2d\n", rtw_p2p_state(pwdinfo) ); + wrqu->data.length = strlen( extra ); + + return ret; + +} + +// Commented by Albert 20110520 +// This function will return the config method description +// This config method description will show us which config method the remote P2P device is intented to use +// by sending the provisioning discovery request frame. + +static int rtw_p2p_get_req_cm(struct net_device *dev, + struct iw_request_info *info, + union iwreq_data *wrqu, char *extra) +{ + + int ret = 0; + _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); + struct iw_point *pdata = &wrqu->data; + struct wifidirect_info *pwdinfo = &( padapter->wdinfo ); + + sprintf( extra, "\n\nCM=%s\n", pwdinfo->rx_prov_disc_info.strconfig_method_desc_of_prov_disc_req ); + wrqu->data.length = strlen( extra ); + return ret; + +} + + +static int rtw_p2p_get_role(struct net_device *dev, + struct iw_request_info *info, + union iwreq_data *wrqu, char *extra) +{ + + int ret = 0; + _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); + struct iw_point *pdata = &wrqu->data; + struct wifidirect_info *pwdinfo = &( padapter->wdinfo ); + + + DBG_871X( "[%s] Role = %d, Status = %d, peer addr = %.2X:%.2X:%.2X:%.2X:%.2X:%.2X\n", __FUNCTION__, rtw_p2p_role(pwdinfo), rtw_p2p_state(pwdinfo), + pwdinfo->p2p_peer_interface_addr[ 0 ], pwdinfo->p2p_peer_interface_addr[ 1 ], pwdinfo->p2p_peer_interface_addr[ 2 ], + pwdinfo->p2p_peer_interface_addr[ 3 ], pwdinfo->p2p_peer_interface_addr[ 4 ], pwdinfo->p2p_peer_interface_addr[ 5 ]); + + sprintf( extra, "\n\nRole=%.2d\n", rtw_p2p_role(pwdinfo) ); + wrqu->data.length = strlen( extra ); + return ret; + +} + + +static int rtw_p2p_get_peer_ifaddr(struct net_device *dev, + struct iw_request_info *info, + union iwreq_data *wrqu, char *extra) +{ + + int ret = 0; + _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); + struct iw_point *pdata = &wrqu->data; + struct wifidirect_info *pwdinfo = &( padapter->wdinfo ); + + + DBG_871X( "[%s] Role = %d, Status = %d, peer addr = %.2X:%.2X:%.2X:%.2X:%.2X:%.2X\n", __FUNCTION__, rtw_p2p_role(pwdinfo), rtw_p2p_state(pwdinfo), + pwdinfo->p2p_peer_interface_addr[ 0 ], pwdinfo->p2p_peer_interface_addr[ 1 ], pwdinfo->p2p_peer_interface_addr[ 2 ], + pwdinfo->p2p_peer_interface_addr[ 3 ], pwdinfo->p2p_peer_interface_addr[ 4 ], pwdinfo->p2p_peer_interface_addr[ 5 ]); + + sprintf( extra, "\nMAC %.2X:%.2X:%.2X:%.2X:%.2X:%.2X", + pwdinfo->p2p_peer_interface_addr[ 0 ], pwdinfo->p2p_peer_interface_addr[ 1 ], pwdinfo->p2p_peer_interface_addr[ 2 ], + pwdinfo->p2p_peer_interface_addr[ 3 ], pwdinfo->p2p_peer_interface_addr[ 4 ], pwdinfo->p2p_peer_interface_addr[ 5 ]); + wrqu->data.length = strlen( extra ); + return ret; + +} + +static int rtw_p2p_get_peer_devaddr(struct net_device *dev, + struct iw_request_info *info, + union iwreq_data *wrqu, char *extra) + +{ + + int ret = 0; + _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); + struct iw_point *pdata = &wrqu->data; + struct wifidirect_info *pwdinfo = &( padapter->wdinfo ); + + DBG_871X( "[%s] Role = %d, Status = %d, peer addr = %.2X:%.2X:%.2X:%.2X:%.2X:%.2X\n", __FUNCTION__, rtw_p2p_role(pwdinfo), rtw_p2p_state(pwdinfo), + pwdinfo->rx_prov_disc_info.peerDevAddr[ 0 ], pwdinfo->rx_prov_disc_info.peerDevAddr[ 1 ], + pwdinfo->rx_prov_disc_info.peerDevAddr[ 2 ], pwdinfo->rx_prov_disc_info.peerDevAddr[ 3 ], + pwdinfo->rx_prov_disc_info.peerDevAddr[ 4 ], pwdinfo->rx_prov_disc_info.peerDevAddr[ 5 ]); + sprintf( extra, "\n%.2X%.2X%.2X%.2X%.2X%.2X", + pwdinfo->rx_prov_disc_info.peerDevAddr[ 0 ], pwdinfo->rx_prov_disc_info.peerDevAddr[ 1 ], + pwdinfo->rx_prov_disc_info.peerDevAddr[ 2 ], pwdinfo->rx_prov_disc_info.peerDevAddr[ 3 ], + pwdinfo->rx_prov_disc_info.peerDevAddr[ 4 ], pwdinfo->rx_prov_disc_info.peerDevAddr[ 5 ]); + wrqu->data.length = strlen( extra ); + return ret; + +} + +static int rtw_p2p_get_peer_devaddr_by_invitation(struct net_device *dev, + struct iw_request_info *info, + union iwreq_data *wrqu, char *extra) + +{ + + int ret = 0; + _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); + struct iw_point *pdata = &wrqu->data; + struct wifidirect_info *pwdinfo = &( padapter->wdinfo ); + + DBG_871X( "[%s] Role = %d, Status = %d, peer addr = %.2X:%.2X:%.2X:%.2X:%.2X:%.2X\n", __FUNCTION__, rtw_p2p_role(pwdinfo), rtw_p2p_state(pwdinfo), + pwdinfo->p2p_peer_device_addr[ 0 ], pwdinfo->p2p_peer_device_addr[ 1 ], + pwdinfo->p2p_peer_device_addr[ 2 ], pwdinfo->p2p_peer_device_addr[ 3 ], + pwdinfo->p2p_peer_device_addr[ 4 ], pwdinfo->p2p_peer_device_addr[ 5 ]); + sprintf( extra, "\nMAC %.2X:%.2X:%.2X:%.2X:%.2X:%.2X", + pwdinfo->p2p_peer_device_addr[ 0 ], pwdinfo->p2p_peer_device_addr[ 1 ], + pwdinfo->p2p_peer_device_addr[ 2 ], pwdinfo->p2p_peer_device_addr[ 3 ], + pwdinfo->p2p_peer_device_addr[ 4 ], pwdinfo->p2p_peer_device_addr[ 5 ]); + wrqu->data.length = strlen( extra ); + return ret; + +} + +static int rtw_p2p_get_groupid(struct net_device *dev, + struct iw_request_info *info, + union iwreq_data *wrqu, char *extra) + +{ + + int ret = 0; + _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); + struct iw_point *pdata = &wrqu->data; + struct wifidirect_info *pwdinfo = &( padapter->wdinfo ); + + sprintf( extra, "\n%.2X:%.2X:%.2X:%.2X:%.2X:%.2X %s", + pwdinfo->groupid_info.go_device_addr[ 0 ], pwdinfo->groupid_info.go_device_addr[ 1 ], + pwdinfo->groupid_info.go_device_addr[ 2 ], pwdinfo->groupid_info.go_device_addr[ 3 ], + pwdinfo->groupid_info.go_device_addr[ 4 ], pwdinfo->groupid_info.go_device_addr[ 5 ], + pwdinfo->groupid_info.ssid); + wrqu->data.length = strlen( extra ); + return ret; + +} + +static int rtw_p2p_get_op_ch(struct net_device *dev, + struct iw_request_info *info, + union iwreq_data *wrqu, char *extra) + +{ + + int ret = 0; + _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); + struct iw_point *pdata = &wrqu->data; + struct wifidirect_info *pwdinfo = &( padapter->wdinfo ); + + + DBG_871X( "[%s] Op_ch = %02x\n", __FUNCTION__, pwdinfo->operating_channel); + + sprintf( extra, "\n\nOp_ch=%.2d\n", pwdinfo->operating_channel ); + wrqu->data.length = strlen( extra ); + return ret; + +} + +inline static void macstr2num(u8 *dst, u8 *src) +{ + int jj, kk; + for (jj = 0, kk = 0; jj < ETH_ALEN; jj++, kk += 3) + { + dst[jj] = key_2char2num(src[kk], src[kk + 1]); + } +} + +static int rtw_p2p_get_wps_configmethod(struct net_device *dev, + struct iw_request_info *info, + union iwreq_data *wrqu, char *extra, char *subcmd) +{ + + int ret = 0; + _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); + u8 peerMAC[ETH_ALEN] = { 0x00 }; + struct mlme_priv *pmlmepriv = &padapter->mlmepriv; + _irqL irqL; + _list * plist,*phead; + _queue *queue = &(pmlmepriv->scanned_queue); + struct wlan_network *pnetwork = NULL; + u8 blnMatch = 0; + u16 attr_content = 0; + uint attr_contentlen = 0; + u8 attr_content_str[P2P_PRIVATE_IOCTL_SET_LEN] = { 0x00 }; + + // Commented by Albert 20110727 + // The input data is the MAC address which the application wants to know its WPS config method. + // After knowing its WPS config method, the application can decide the config method for provisioning discovery. + // Format: iwpriv wlanx p2p_get_wpsCM 00:E0:4C:00:00:05 + + DBG_871X("[%s] data = %s\n", __FUNCTION__, subcmd); + + macstr2num(peerMAC, subcmd); + + _enter_critical_bh(&(pmlmepriv->scanned_queue.lock), &irqL); + + phead = get_list_head(queue); + plist = get_next(phead); + + while (1) + { + if (rtw_end_of_queue_search(phead, plist) == _TRUE) break; + + pnetwork = LIST_CONTAINOR(plist, struct wlan_network, list); + if (_rtw_memcmp(pnetwork->network.MacAddress, peerMAC, ETH_ALEN)) + { + u8 *wpsie; + uint wpsie_len = 0; + + // The mac address is matched. + + if ((wpsie = rtw_get_wps_ie(&pnetwork->network.IEs[12], pnetwork->network.IELength - 12, NULL, &wpsie_len))) + { + rtw_get_wps_attr_content(wpsie, wpsie_len, WPS_ATTR_CONF_METHOD, (u8 *)&attr_content, &attr_contentlen); + if (attr_contentlen) + { + attr_content = be16_to_cpu(attr_content); + sprintf(attr_content_str, "\n\nM=%.4d", attr_content); + blnMatch = 1; + } + } + + break; + } + + plist = get_next(plist); + + } + + _exit_critical_bh(&(pmlmepriv->scanned_queue.lock), &irqL); + + if (!blnMatch) + { + sprintf(attr_content_str, "\n\nM=0000"); + } + + wrqu->data.length = strlen(attr_content_str); + _rtw_memcpy(extra, attr_content_str, wrqu->data.length); + + return ret; + +} + +#ifdef CONFIG_WFD +static int rtw_p2p_get_peer_wfd_port(struct net_device *dev, + struct iw_request_info *info, + union iwreq_data *wrqu, char *extra) +{ + + int ret = 0; + _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); + struct iw_point *pdata = &wrqu->data; + struct wifidirect_info *pwdinfo = &( padapter->wdinfo ); + + DBG_871X( "[%s] p2p_state = %d\n", __FUNCTION__, rtw_p2p_state(pwdinfo) ); + + sprintf( extra, "\n\nPort=%d\n", pwdinfo->wfd_info->peer_rtsp_ctrlport ); + DBG_871X( "[%s] remote port = %d\n", __FUNCTION__, pwdinfo->wfd_info->peer_rtsp_ctrlport ); + + wrqu->data.length = strlen( extra ); + return ret; + +} + +static int rtw_p2p_get_peer_wfd_preferred_connection(struct net_device *dev, + struct iw_request_info *info, + union iwreq_data *wrqu, char *extra) +{ + + int ret = 0; + _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); + struct iw_point *pdata = &wrqu->data; + struct wifidirect_info *pwdinfo = &( padapter->wdinfo ); + + sprintf( extra, "\n\nwfd_pc=%d\n", pwdinfo->wfd_info->wfd_pc ); + DBG_871X( "[%s] wfd_pc = %d\n", __FUNCTION__, pwdinfo->wfd_info->wfd_pc ); + + wrqu->data.length = strlen( extra ); + pwdinfo->wfd_info->wfd_pc = _FALSE; // Reset the WFD preferred connection to P2P + return ret; + +} + +static int rtw_p2p_get_peer_wfd_session_available(struct net_device *dev, + struct iw_request_info *info, + union iwreq_data *wrqu, char *extra) +{ + + int ret = 0; + _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); + struct iw_point *pdata = &wrqu->data; + struct wifidirect_info *pwdinfo = &( padapter->wdinfo ); + + sprintf( extra, "\n\nwfd_sa=%d\n", pwdinfo->wfd_info->peer_session_avail ); + DBG_871X( "[%s] wfd_sa = %d\n", __FUNCTION__, pwdinfo->wfd_info->peer_session_avail ); + + wrqu->data.length = strlen( extra ); + pwdinfo->wfd_info->peer_session_avail = _TRUE; // Reset the WFD session available + return ret; + +} + +#endif // CONFIG_WFD + +static int rtw_p2p_get_go_device_address(struct net_device *dev, + struct iw_request_info *info, + union iwreq_data *wrqu, char *extra, char *subcmd) +{ + + int ret = 0; + _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); + u8 peerMAC[ETH_ALEN] = { 0x00 }; + struct mlme_priv *pmlmepriv = &padapter->mlmepriv; + _irqL irqL; + _list *plist, *phead; + _queue *queue = &(pmlmepriv->scanned_queue); + struct wlan_network *pnetwork = NULL; + u8 blnMatch = 0; + u8 *p2pie; + uint p2pielen = 0, attr_contentlen = 0; + u8 attr_content[100] = { 0x00 }; + u8 go_devadd_str[P2P_PRIVATE_IOCTL_SET_LEN] = { 0x00 }; + + // Commented by Albert 20121209 + // The input data is the GO's interface address which the application wants to know its device address. + // Format: iwpriv wlanx p2p_get2 go_devadd=00:E0:4C:00:00:05 + + DBG_871X("[%s] data = %s\n", __FUNCTION__, subcmd); + + macstr2num(peerMAC, subcmd); + + _enter_critical_bh(&(pmlmepriv->scanned_queue.lock), &irqL); + + phead = get_list_head(queue); + plist = get_next(phead); + + while (1) + { + if (rtw_end_of_queue_search(phead, plist) == _TRUE) break; + + pnetwork = LIST_CONTAINOR(plist, struct wlan_network, list); + if (_rtw_memcmp(pnetwork->network.MacAddress, peerMAC, ETH_ALEN)) + { + // Commented by Albert 2011/05/18 + // Match the device address located in the P2P IE + // This is for the case that the P2P device address is not the same as the P2P interface address. + + if ((p2pie = rtw_get_p2p_ie(&pnetwork->network.IEs[12], pnetwork->network.IELength - 12, NULL, &p2pielen))) + { + while (p2pie) + { + // The P2P Device ID attribute is included in the Beacon frame. + // The P2P Device Info attribute is included in the probe response frame. + + _rtw_memset(attr_content, 0x00, 100); + if (rtw_get_p2p_attr_content(p2pie, p2pielen, P2P_ATTR_DEVICE_ID, attr_content, &attr_contentlen)) + { + // Handle the P2P Device ID attribute of Beacon first + blnMatch = 1; + break; + + } else if (rtw_get_p2p_attr_content(p2pie, p2pielen, P2P_ATTR_DEVICE_INFO, attr_content, &attr_contentlen)) + { + // Handle the P2P Device Info attribute of probe response + blnMatch = 1; + break; + } + + //Get the next P2P IE + p2pie = rtw_get_p2p_ie(p2pie + p2pielen, pnetwork->network.IELength - 12 - (p2pie - &pnetwork->network.IEs[12] + p2pielen), NULL, &p2pielen); + } + } + } + + plist = get_next(plist); + + } + + _exit_critical_bh(&(pmlmepriv->scanned_queue.lock), &irqL); + + if (!blnMatch) + { + sprintf(go_devadd_str, "\n\ndev_add=NULL"); + } else + { + sprintf(go_devadd_str, "\n\ndev_add=%.2X:%.2X:%.2X:%.2X:%.2X:%.2X", + attr_content[0], attr_content[1], attr_content[2], attr_content[3], attr_content[4], attr_content[5]); + } + + wrqu->data.length = strlen(go_devadd_str); + _rtw_memcpy(extra, go_devadd_str, wrqu->data.length); + + return ret; + +} + +static int rtw_p2p_get_device_type(struct net_device *dev, + struct iw_request_info *info, + union iwreq_data *wrqu, char *extra, char *subcmd) +{ + + int ret = 0; + _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); + u8 peerMAC[ETH_ALEN] = { 0x00 }; + struct mlme_priv *pmlmepriv = &padapter->mlmepriv; + _irqL irqL; + _list *plist, *phead; + _queue *queue = &(pmlmepriv->scanned_queue); + struct wlan_network *pnetwork = NULL; + u8 blnMatch = 0; + u8 dev_type[8] = { 0x00 }; + uint dev_type_len = 0; + u8 dev_type_str[P2P_PRIVATE_IOCTL_SET_LEN] = { 0x00 }; // +9 is for the str "dev_type=", we have to clear it at wrqu->data.pointer + + // Commented by Albert 20121209 + // The input data is the MAC address which the application wants to know its device type. + // Such user interface could know the device type. + // Format: iwpriv wlanx p2p_get2 dev_type=00:E0:4C:00:00:05 + + DBG_871X("[%s] data = %s\n", __FUNCTION__, subcmd); + + macstr2num(peerMAC, subcmd); + + _enter_critical_bh(&(pmlmepriv->scanned_queue.lock), &irqL); + + phead = get_list_head(queue); + plist = get_next(phead); + + while (1) + { + if (rtw_end_of_queue_search(phead, plist) == _TRUE) break; + + pnetwork = LIST_CONTAINOR(plist, struct wlan_network, list); + if (_rtw_memcmp(pnetwork->network.MacAddress, peerMAC, ETH_ALEN)) + { + u8 *wpsie; + uint wpsie_len = 0; + + // The mac address is matched. + + if ((wpsie = rtw_get_wps_ie(&pnetwork->network.IEs[12], pnetwork->network.IELength - 12, NULL, &wpsie_len))) + { + rtw_get_wps_attr_content(wpsie, wpsie_len, WPS_ATTR_PRIMARY_DEV_TYPE, dev_type, &dev_type_len); + if (dev_type_len) + { + u16 type = 0; + + _rtw_memcpy(&type, dev_type, 2); + type = be16_to_cpu(type); + sprintf(dev_type_str, "\n\nN=%.2d", type); + blnMatch = 1; + } + } + break; + } + + plist = get_next(plist); + + } + + _exit_critical_bh(&(pmlmepriv->scanned_queue.lock), &irqL); + + if (!blnMatch) + { + sprintf(dev_type_str, "\n\nN=00"); + } + + wrqu->data.length = strlen(dev_type_str); + _rtw_memcpy(extra, dev_type_str, wrqu->data.length); + + return ret; + +} + +static int rtw_p2p_get_device_name(struct net_device *dev, + struct iw_request_info *info, + union iwreq_data *wrqu, char *extra, char *subcmd) +{ + + int ret = 0; + _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); + u8 peerMAC[ETH_ALEN] = { 0x00 }; + struct mlme_priv *pmlmepriv = &padapter->mlmepriv; + _irqL irqL; + _list *plist, *phead; + _queue *queue = &(pmlmepriv->scanned_queue); + struct wlan_network *pnetwork = NULL; + u8 blnMatch = 0; + u8 dev_name[WPS_MAX_DEVICE_NAME_LEN] = { 0x00 }; + uint dev_len = 0; + u8 dev_name_str[P2P_PRIVATE_IOCTL_SET_LEN] = { 0x00 }; + + // Commented by Albert 20121225 + // The input data is the MAC address which the application wants to know its device name. + // Such user interface could show peer device's device name instead of ssid. + // Format: iwpriv wlanx p2p_get2 devN=00:E0:4C:00:00:05 + + DBG_871X("[%s] data = %s\n", __FUNCTION__, subcmd); + + macstr2num(peerMAC, subcmd); + + _enter_critical_bh(&(pmlmepriv->scanned_queue.lock), &irqL); + + phead = get_list_head(queue); + plist = get_next(phead); + + while (1) + { + if (rtw_end_of_queue_search(phead, plist) == _TRUE) break; + + pnetwork = LIST_CONTAINOR(plist, struct wlan_network, list); + if (_rtw_memcmp(pnetwork->network.MacAddress, peerMAC, ETH_ALEN)) + { + u8 *wpsie; + uint wpsie_len = 0; + + // The mac address is matched. + + if ((wpsie = rtw_get_wps_ie(&pnetwork->network.IEs[12], pnetwork->network.IELength - 12, NULL, &wpsie_len))) + { + rtw_get_wps_attr_content(wpsie, wpsie_len, WPS_ATTR_DEVICE_NAME, dev_name, &dev_len); + if (dev_len) + { + sprintf(dev_name_str, "\n\nN=%s", dev_name); + blnMatch = 1; + } + } + break; + } + + plist = get_next(plist); + + } + + _exit_critical_bh(&(pmlmepriv->scanned_queue.lock), &irqL); + + if (!blnMatch) + { + sprintf(dev_name_str, "\n\nN=0000"); + } + + wrqu->data.length = strlen(dev_name_str); + _rtw_memcpy(extra, dev_name_str, wrqu->data.length); + + return ret; + +} + +static int rtw_p2p_get_invitation_procedure(struct net_device *dev, + struct iw_request_info *info, + union iwreq_data *wrqu, char *extra, char *subcmd) +{ + + int ret = 0; + _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); + u8 peerMAC[ETH_ALEN] = { 0x00 }; + struct mlme_priv *pmlmepriv = &padapter->mlmepriv; + _irqL irqL; + _list *plist, *phead; + _queue *queue = &(pmlmepriv->scanned_queue); + struct wlan_network *pnetwork = NULL; + u8 blnMatch = 0; + u8 *p2pie; + uint p2pielen = 0, attr_contentlen = 0; + u8 attr_content[2] = { 0x00 }; + u8 inv_proc_str[P2P_PRIVATE_IOCTL_SET_LEN] = { 0x00 }; + + // Commented by Ouden 20121226 + // The application wants to know P2P initation procedure is support or not. + // Format: iwpriv wlanx p2p_get2 InvProc=00:E0:4C:00:00:05 + + DBG_871X("[%s] data = %s\n", __FUNCTION__, subcmd); + + macstr2num(peerMAC, subcmd); + + _enter_critical_bh(&(pmlmepriv->scanned_queue.lock), &irqL); + + phead = get_list_head(queue); + plist = get_next(phead); + + while (1) + { + if (rtw_end_of_queue_search(phead, plist) == _TRUE) break; + + pnetwork = LIST_CONTAINOR(plist, struct wlan_network, list); + if (_rtw_memcmp(pnetwork->network.MacAddress, peerMAC, ETH_ALEN)) + { + // Commented by Albert 20121226 + // Match the device address located in the P2P IE + // This is for the case that the P2P device address is not the same as the P2P interface address. + + if ((p2pie = rtw_get_p2p_ie(&pnetwork->network.IEs[12], pnetwork->network.IELength - 12, NULL, &p2pielen))) + { + while (p2pie) + { + //_rtw_memset( attr_content, 0x00, 2); + if (rtw_get_p2p_attr_content(p2pie, p2pielen, P2P_ATTR_CAPABILITY, attr_content, &attr_contentlen)) + { + // Handle the P2P capability attribute + blnMatch = 1; + break; + + } + + //Get the next P2P IE + p2pie = rtw_get_p2p_ie(p2pie + p2pielen, pnetwork->network.IELength - 12 - (p2pie - &pnetwork->network.IEs[12] + p2pielen), NULL, &p2pielen); + } + } + } + + plist = get_next(plist); + + } + + _exit_critical_bh(&(pmlmepriv->scanned_queue.lock), &irqL); + + if (!blnMatch) + { + sprintf(inv_proc_str, "\nIP=-1"); + } else + { + if (attr_content[0] && 0x20) + { + sprintf(inv_proc_str, "\nIP=1"); + } else + { + sprintf(inv_proc_str, "\nIP=0"); + } + } + + wrqu->data.length = strlen(inv_proc_str); + _rtw_memcpy(extra, inv_proc_str, wrqu->data.length); + + return ret; + +} + +static int rtw_p2p_connect(struct net_device *dev, + struct iw_request_info *info, + union iwreq_data *wrqu, char *extra) +{ + + int ret = 0; + _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); + struct wifidirect_info *pwdinfo = &( padapter->wdinfo ); + u8 peerMAC[ ETH_ALEN ] = { 0x00 }; + int jj,kk; + u8 peerMACStr[ ETH_ALEN * 2 ] = { 0x00 }; + struct mlme_priv *pmlmepriv = &padapter->mlmepriv; + _irqL irqL; + _list *plist, *phead; + _queue *queue = &(pmlmepriv->scanned_queue); + struct wlan_network *pnetwork = NULL; + uint uintPeerChannel = 0; +#ifdef CONFIG_CONCURRENT_MODE + _adapter *pbuddy_adapter = padapter->pbuddy_adapter; + struct mlme_ext_priv *pbuddy_mlmeext = &pbuddy_adapter->mlmeextpriv; +#endif // CONFIG_CONCURRENT_MODE + + + // Commented by Albert 20110304 + // The input data contains two informations. + // 1. First information is the MAC address which wants to formate with + // 2. Second information is the WPS PINCode or "pbc" string for push button method + // Format: 00:E0:4C:00:00:05 + // Format: 00:E0:4C:00:00:05 + + DBG_871X( "[%s] data = %s\n", __FUNCTION__, extra ); + + if(rtw_p2p_chk_state(pwdinfo, P2P_STATE_NONE)) + { + DBG_871X( "[%s] WiFi Direct is disable!\n", __FUNCTION__ ); + return ret; + } + + if ( pwdinfo->ui_got_wps_info == P2P_NO_WPSINFO ) + { + return -1; + } + + for( jj = 0, kk = 0; jj < ETH_ALEN; jj++, kk += 3 ) + { + peerMAC[ jj ] = key_2char2num( extra[kk], extra[kk+ 1] ); + } + + _enter_critical_bh(&(pmlmepriv->scanned_queue.lock), &irqL); + + phead = get_list_head(queue); + plist = get_next(phead); + + while(1) + { + if (rtw_end_of_queue_search(phead,plist)== _TRUE) + break; + + pnetwork = LIST_CONTAINOR(plist, struct wlan_network, list); + if ( _rtw_memcmp( pnetwork->network.MacAddress, peerMAC, ETH_ALEN ) ) + { + uintPeerChannel = pnetwork->network.Configuration.DSConfig; + break; + } + + plist = get_next(plist); + + } + + _exit_critical_bh(&(pmlmepriv->scanned_queue.lock), &irqL); + + if ( uintPeerChannel ) + { +#ifdef CONFIG_CONCURRENT_MODE + if ( check_buddy_fwstate(padapter, _FW_LINKED ) ) + { + _cancel_timer_ex( &pwdinfo->ap_p2p_switch_timer ); + } +#endif // CONFIG_CONCURRENT_MODE + + _rtw_memset( &pwdinfo->nego_req_info, 0x00, sizeof( struct tx_nego_req_info ) ); + _rtw_memset( &pwdinfo->groupid_info, 0x00, sizeof( struct group_id_info ) ); + + pwdinfo->nego_req_info.peer_channel_num[ 0 ] = uintPeerChannel; + _rtw_memcpy( pwdinfo->nego_req_info.peerDevAddr, pnetwork->network.MacAddress, ETH_ALEN ); + pwdinfo->nego_req_info.benable = _TRUE; + + _cancel_timer_ex( &pwdinfo->restore_p2p_state_timer ); + if ( rtw_p2p_state(pwdinfo) != P2P_STATE_GONEGO_OK ) + { + // Restore to the listen state if the current p2p state is not nego OK + rtw_p2p_set_state(pwdinfo, P2P_STATE_LISTEN ); + } + + rtw_p2p_set_pre_state(pwdinfo, rtw_p2p_state(pwdinfo)); + rtw_p2p_set_state(pwdinfo, P2P_STATE_GONEGO_ING); + +#ifdef CONFIG_CONCURRENT_MODE + if ( check_buddy_fwstate(padapter, _FW_LINKED ) ) + { + // Have to enter the power saving with the AP + set_channel_bwmode(padapter, pbuddy_mlmeext->cur_channel, pbuddy_mlmeext->cur_ch_offset, pbuddy_mlmeext->cur_bwmode); + + issue_nulldata(pbuddy_adapter, NULL, 1, 3, 500); + } +#endif // CONFIG_CONCURRENT_MODE + + DBG_871X( "[%s] Start PreTx Procedure!\n", __FUNCTION__ ); + _set_timer( &pwdinfo->pre_tx_scan_timer, P2P_TX_PRESCAN_TIMEOUT ); + +#ifdef CONFIG_CONCURRENT_MODE + if ( check_buddy_fwstate(padapter, _FW_LINKED ) ) + { + _set_timer( &pwdinfo->restore_p2p_state_timer, P2P_CONCURRENT_GO_NEGO_TIMEOUT ); + } + else + { + _set_timer( &pwdinfo->restore_p2p_state_timer, P2P_GO_NEGO_TIMEOUT ); + } +#else + _set_timer( &pwdinfo->restore_p2p_state_timer, P2P_GO_NEGO_TIMEOUT ); +#endif // CONFIG_CONCURRENT_MODE + + } + else + { + DBG_871X( "[%s] Not Found in Scanning Queue~\n", __FUNCTION__ ); + ret = -1; + } +exit: + return ret; +} + +static int rtw_p2p_invite_req(struct net_device *dev, + struct iw_request_info *info, + union iwreq_data *wrqu, char *extra) +{ + + int ret = 0; + _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); + struct iw_point *pdata = &wrqu->data; + struct wifidirect_info *pwdinfo = &( padapter->wdinfo ); + int jj,kk; + u8 peerMACStr[ ETH_ALEN * 2 ] = { 0x00 }; + struct mlme_priv *pmlmepriv = &padapter->mlmepriv; + _list *plist, *phead; + _queue *queue = &(pmlmepriv->scanned_queue); + struct wlan_network *pnetwork = NULL; + uint uintPeerChannel = 0; + u8 attr_content[50] = { 0x00 }, _status = 0; + u8 *p2pie; + uint p2pielen = 0, attr_contentlen = 0; + _irqL irqL; + struct tx_invite_req_info* pinvite_req_info = &pwdinfo->invitereq_info; +#ifdef CONFIG_CONCURRENT_MODE + _adapter *pbuddy_adapter = padapter->pbuddy_adapter; + struct mlme_priv *pbuddy_mlmepriv = &pbuddy_adapter->mlmepriv; + struct mlme_ext_priv *pbuddy_mlmeext = &pbuddy_adapter->mlmeextpriv; +#endif // CONFIG_CONCURRENT_MODE + +#ifdef CONFIG_WFD + struct wifi_display_info* pwfd_info = pwdinfo->wfd_info; +#endif // CONFIG_WFD + + // Commented by Albert 20120321 + // The input data contains two informations. + // 1. First information is the P2P device address which you want to send to. + // 2. Second information is the group id which combines with GO's mac address, space and GO's ssid. + // Command line sample: iwpriv wlan0 p2p_set invite="00:11:22:33:44:55 00:E0:4C:00:00:05 DIRECT-xy" + // Format: 00:11:22:33:44:55 00:E0:4C:00:00:05 DIRECT-xy + + DBG_871X( "[%s] data = %s\n", __FUNCTION__, extra ); + + if ( wrqu->data.length <= 37 ) + { + DBG_871X( "[%s] Wrong format!\n", __FUNCTION__ ); + return ret; + } + + if(rtw_p2p_chk_state(pwdinfo, P2P_STATE_NONE)) + { + DBG_871X( "[%s] WiFi Direct is disable!\n", __FUNCTION__ ); + return ret; + } + else + { + // Reset the content of struct tx_invite_req_info + pinvite_req_info->benable = _FALSE; + _rtw_memset( pinvite_req_info->go_bssid, 0x00, ETH_ALEN ); + _rtw_memset( pinvite_req_info->go_ssid, 0x00, WLAN_SSID_MAXLEN ); + pinvite_req_info->ssidlen = 0x00; + pinvite_req_info->operating_ch = pwdinfo->operating_channel; + _rtw_memset( pinvite_req_info->peer_macaddr, 0x00, ETH_ALEN ); + pinvite_req_info->token = 3; + } + + for( jj = 0, kk = 0; jj < ETH_ALEN; jj++, kk += 3 ) + { + pinvite_req_info->peer_macaddr[ jj ] = key_2char2num( extra[kk], extra[kk+ 1] ); + } + + _enter_critical_bh(&(pmlmepriv->scanned_queue.lock), &irqL); + + phead = get_list_head(queue); + plist = get_next(phead); + + while(1) + { + if (rtw_end_of_queue_search(phead,plist)== _TRUE) + break; + + pnetwork = LIST_CONTAINOR(plist, struct wlan_network, list); + + // Commented by Albert 2011/05/18 + // Match the device address located in the P2P IE + // This is for the case that the P2P device address is not the same as the P2P interface address. + + if ( (p2pie=rtw_get_p2p_ie( &pnetwork->network.IEs[12], pnetwork->network.IELength - 12, NULL, &p2pielen)) ) + { + // The P2P Device ID attribute is included in the Beacon frame. + // The P2P Device Info attribute is included in the probe response frame. + + if ( rtw_get_p2p_attr_content( p2pie, p2pielen, P2P_ATTR_DEVICE_ID, attr_content, &attr_contentlen) ) + { + // Handle the P2P Device ID attribute of Beacon first + if ( _rtw_memcmp( attr_content, pinvite_req_info->peer_macaddr, ETH_ALEN ) ) + { + uintPeerChannel = pnetwork->network.Configuration.DSConfig; + break; + } + } + else if ( rtw_get_p2p_attr_content( p2pie, p2pielen, P2P_ATTR_DEVICE_INFO, attr_content, &attr_contentlen) ) + { + // Handle the P2P Device Info attribute of probe response + if ( _rtw_memcmp( attr_content, pinvite_req_info->peer_macaddr, ETH_ALEN ) ) + { + uintPeerChannel = pnetwork->network.Configuration.DSConfig; + break; + } + } + + } + + plist = get_next(plist); + + } + + _exit_critical_bh(&(pmlmepriv->scanned_queue.lock), &irqL); + +#ifdef CONFIG_WFD + if ( uintPeerChannel ) + { + u8 wfd_ie[ 128 ] = { 0x00 }; + uint wfd_ielen = 0; + + if ( rtw_get_wfd_ie( &pnetwork->network.IEs[12], pnetwork->network.IELength - 12, wfd_ie, &wfd_ielen ) ) + { + u8 wfd_devinfo[ 6 ] = { 0x00 }; + uint wfd_devlen = 6; + + DBG_871X( "[%s] Found WFD IE!\n", __FUNCTION__ ); + if ( rtw_get_wfd_attr_content( wfd_ie, wfd_ielen, WFD_ATTR_DEVICE_INFO, wfd_devinfo, &wfd_devlen ) ) + { + u16 wfd_devinfo_field = 0; + + // Commented by Albert 20120319 + // The first two bytes are the WFD device information field of WFD device information subelement. + // In big endian format. + wfd_devinfo_field = RTW_GET_BE16(wfd_devinfo); + if ( wfd_devinfo_field & WFD_DEVINFO_SESSION_AVAIL ) + { + pwfd_info->peer_session_avail = _TRUE; + } + else + { + pwfd_info->peer_session_avail = _FALSE; + } + } + } + + if ( _FALSE == pwfd_info->peer_session_avail ) + { + DBG_871X( "[%s] WFD Session not avaiable!\n", __FUNCTION__ ); + goto exit; + } + } +#endif // CONFIG_WFD + + if ( uintPeerChannel ) + { +#ifdef CONFIG_CONCURRENT_MODE + if ( check_fwstate( pbuddy_mlmepriv, _FW_LINKED ) ) + { + _cancel_timer_ex( &pwdinfo->ap_p2p_switch_timer ); + } +#endif // CONFIG_CONCURRENT_MODE + + // Store the GO's bssid + for( jj = 0, kk = 18; jj < ETH_ALEN; jj++, kk += 3 ) + { + pinvite_req_info->go_bssid[ jj ] = key_2char2num( extra[kk], extra[kk+ 1] ); + } + + // Store the GO's ssid + pinvite_req_info->ssidlen = wrqu->data.length - 36; + _rtw_memcpy( pinvite_req_info->go_ssid, &extra[ 36 ], (u32) pinvite_req_info->ssidlen ); + pinvite_req_info->benable = _TRUE; + pinvite_req_info->peer_ch = uintPeerChannel; + + rtw_p2p_set_pre_state(pwdinfo, rtw_p2p_state(pwdinfo)); + rtw_p2p_set_state(pwdinfo, P2P_STATE_TX_INVITE_REQ); + +#ifdef CONFIG_CONCURRENT_MODE + if ( check_fwstate( pbuddy_mlmepriv, _FW_LINKED ) ) + { + // Have to enter the power saving with the AP + set_channel_bwmode(padapter, pbuddy_mlmeext->cur_channel, pbuddy_mlmeext->cur_ch_offset, pbuddy_mlmeext->cur_bwmode); + + issue_nulldata(pbuddy_adapter, NULL, 1, 3, 500); + } + else + { + set_channel_bwmode(padapter, uintPeerChannel, HAL_PRIME_CHNL_OFFSET_DONT_CARE, HT_CHANNEL_WIDTH_20); + } +#else + set_channel_bwmode(padapter, uintPeerChannel, HAL_PRIME_CHNL_OFFSET_DONT_CARE, HT_CHANNEL_WIDTH_20); +#endif + + _set_timer( &pwdinfo->pre_tx_scan_timer, P2P_TX_PRESCAN_TIMEOUT ); + +#ifdef CONFIG_CONCURRENT_MODE + if ( check_fwstate( pbuddy_mlmepriv, _FW_LINKED ) ) + { + _set_timer( &pwdinfo->restore_p2p_state_timer, P2P_CONCURRENT_INVITE_TIMEOUT ); + } + else + { + _set_timer( &pwdinfo->restore_p2p_state_timer, P2P_INVITE_TIMEOUT ); + } +#else + _set_timer( &pwdinfo->restore_p2p_state_timer, P2P_INVITE_TIMEOUT ); +#endif // CONFIG_CONCURRENT_MODE + + + } + else + { + DBG_871X( "[%s] NOT Found in the Scanning Queue!\n", __FUNCTION__ ); + } +exit: + + return ret; + +} + +static int rtw_p2p_set_persistent(struct net_device *dev, + struct iw_request_info *info, + union iwreq_data *wrqu, char *extra) +{ + + int ret = 0; + _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); + struct iw_point *pdata = &wrqu->data; + struct wifidirect_info *pwdinfo = &( padapter->wdinfo ); + int jj,kk; + u8 peerMACStr[ ETH_ALEN * 2 ] = { 0x00 }; + struct mlme_priv *pmlmepriv = &padapter->mlmepriv; + _list *plist, *phead; + _queue *queue = &(pmlmepriv->scanned_queue); + struct wlan_network *pnetwork = NULL; + uint uintPeerChannel = 0; + u8 attr_content[50] = { 0x00 }, _status = 0; + u8 *p2pie; + uint p2pielen = 0, attr_contentlen = 0; + _irqL irqL; + struct tx_invite_req_info* pinvite_req_info = &pwdinfo->invitereq_info; +#ifdef CONFIG_CONCURRENT_MODE + _adapter *pbuddy_adapter = padapter->pbuddy_adapter; + struct mlme_priv *pbuddy_mlmepriv = &pbuddy_adapter->mlmepriv; + struct mlme_ext_priv *pbuddy_mlmeext = &pbuddy_adapter->mlmeextpriv; +#endif // CONFIG_CONCURRENT_MODE + +#ifdef CONFIG_WFD + struct wifi_display_info* pwfd_info = pwdinfo->wfd_info; +#endif // CONFIG_WFD + + // Commented by Albert 20120328 + // The input data is 0 or 1 + // 0: disable persistent group functionality + // 1: enable persistent group founctionality + + DBG_871X( "[%s] data = %s\n", __FUNCTION__, extra ); + + if(rtw_p2p_chk_state(pwdinfo, P2P_STATE_NONE)) + { + DBG_871X( "[%s] WiFi Direct is disable!\n", __FUNCTION__ ); + return ret; + } + else + { + if ( extra[ 0 ] == '0' ) // Disable the persistent group function. + { + pwdinfo->persistent_supported = _FALSE; + } + else if ( extra[ 0 ] == '1' ) // Enable the persistent group function. + { + pwdinfo->persistent_supported = _TRUE; + } + else + { + pwdinfo->persistent_supported = _FALSE; + } + } + printk( "[%s] persistent_supported = %d\n", __FUNCTION__, pwdinfo->persistent_supported ); + +exit: + + return ret; + +} + +static int hexstr2bin(const char *hex, u8 *buf, size_t len) +{ + size_t i; + int a; + const char *ipos = hex; + u8 *opos = buf; + + for (i = 0; i < len; i++) { + a = hex2byte_i(ipos); + if (a < 0) + return -1; + *opos++ = a; + ipos += 2; + } + return 0; +} + +static int uuid_str2bin(const char *str, u8 *bin) +{ + const char *pos; + u8 *opos; + + pos = str; + opos = bin; + + if (hexstr2bin(pos, opos, 4)) + return -1; + pos += 8; + opos += 4; + + if (*pos++ != '-' || hexstr2bin(pos, opos, 2)) + return -1; + pos += 4; + opos += 2; + + if (*pos++ != '-' || hexstr2bin(pos, opos, 2)) + return -1; + pos += 4; + opos += 2; + + if (*pos++ != '-' || hexstr2bin(pos, opos, 2)) + return -1; + pos += 4; + opos += 2; + + if (*pos++ != '-' || hexstr2bin(pos, opos, 6)) + return -1; + + return 0; +} + +static int rtw_p2p_set_wps_uuid(struct net_device *dev, + struct iw_request_info *info, + union iwreq_data *wrqu, char *extra) +{ + + int ret = 0; + _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); + struct wifidirect_info *pwdinfo = &(padapter->wdinfo); + + DBG_871X("[%s] data = %s\n", __FUNCTION__, extra); + + if ((36 == strlen(extra)) && (uuid_str2bin(extra, pwdinfo->uuid) == 0)) + { + pwdinfo->external_uuid = 1; + } else { + pwdinfo->external_uuid = 0; + ret = -EINVAL; + } + + return ret; + +} +#ifdef CONFIG_WFD +static int rtw_p2p_set_pc(struct net_device *dev, + struct iw_request_info *info, + union iwreq_data *wrqu, char *extra) +{ + + int ret = 0; + _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); + struct iw_point *pdata = &wrqu->data; + struct wifidirect_info *pwdinfo = &( padapter->wdinfo ); + u8 peerMAC[ ETH_ALEN ] = { 0x00 }; + int jj,kk; + u8 peerMACStr[ ETH_ALEN * 2 ] = { 0x00 }; + struct mlme_priv *pmlmepriv = &padapter->mlmepriv; + _list *plist, *phead; + _queue *queue = &(pmlmepriv->scanned_queue); + struct wlan_network *pnetwork = NULL; + u8 attr_content[50] = { 0x00 }, _status = 0; + u8 *p2pie; + uint p2pielen = 0, attr_contentlen = 0; + _irqL irqL; + uint uintPeerChannel = 0; +#ifdef CONFIG_CONCURRENT_MODE + _adapter *pbuddy_adapter = padapter->pbuddy_adapter; + struct mlme_ext_priv *pbuddy_mlmeext = &pbuddy_adapter->mlmeextpriv; +#endif // CONFIG_CONCURRENT_MODE + struct wifi_display_info* pwfd_info = pwdinfo->wfd_info; + + // Commented by Albert 20120512 + // 1. Input information is the MAC address which wants to know the Preferred Connection bit (PC bit) + // Format: 00:E0:4C:00:00:05 + + DBG_871X( "[%s] data = %s\n", __FUNCTION__, extra ); + + if(rtw_p2p_chk_state(pwdinfo, P2P_STATE_NONE)) + { + DBG_871X( "[%s] WiFi Direct is disable!\n", __FUNCTION__ ); + return ret; + } + + for( jj = 0, kk = 0; jj < ETH_ALEN; jj++, kk += 3 ) + { + peerMAC[ jj ] = key_2char2num( extra[kk], extra[kk+ 1] ); + } + + _enter_critical_bh(&(pmlmepriv->scanned_queue.lock), &irqL); + + phead = get_list_head(queue); + plist = get_next(phead); + + while(1) + { + if (rtw_end_of_queue_search(phead,plist)== _TRUE) + break; + + pnetwork = LIST_CONTAINOR(plist, struct wlan_network, list); + + // Commented by Albert 2011/05/18 + // Match the device address located in the P2P IE + // This is for the case that the P2P device address is not the same as the P2P interface address. + + if ( (p2pie=rtw_get_p2p_ie( &pnetwork->network.IEs[12], pnetwork->network.IELength - 12, NULL, &p2pielen)) ) + { + // The P2P Device ID attribute is included in the Beacon frame. + // The P2P Device Info attribute is included in the probe response frame. + printk( "[%s] Got P2P IE\n", __FUNCTION__ ); + if ( rtw_get_p2p_attr_content( p2pie, p2pielen, P2P_ATTR_DEVICE_ID, attr_content, &attr_contentlen) ) + { + // Handle the P2P Device ID attribute of Beacon first + printk( "[%s] P2P_ATTR_DEVICE_ID \n", __FUNCTION__ ); + if ( _rtw_memcmp( attr_content, peerMAC, ETH_ALEN ) ) + { + uintPeerChannel = pnetwork->network.Configuration.DSConfig; + break; + } + } + else if ( rtw_get_p2p_attr_content( p2pie, p2pielen, P2P_ATTR_DEVICE_INFO, attr_content, &attr_contentlen) ) + { + // Handle the P2P Device Info attribute of probe response + printk( "[%s] P2P_ATTR_DEVICE_INFO \n", __FUNCTION__ ); + if ( _rtw_memcmp( attr_content, peerMAC, ETH_ALEN ) ) + { + uintPeerChannel = pnetwork->network.Configuration.DSConfig; + break; + } + } + + } + + plist = get_next(plist); + + } + + _exit_critical_bh(&(pmlmepriv->scanned_queue.lock), &irqL); + printk( "[%s] channel = %d\n", __FUNCTION__, uintPeerChannel ); + + if ( uintPeerChannel ) + { + u8 wfd_ie[ 128 ] = { 0x00 }; + uint wfd_ielen = 0; + + if ( rtw_get_wfd_ie( &pnetwork->network.IEs[12], pnetwork->network.IELength - 12, wfd_ie, &wfd_ielen ) ) + { + u8 wfd_devinfo[ 6 ] = { 0x00 }; + uint wfd_devlen = 6; + + DBG_871X( "[%s] Found WFD IE!\n", __FUNCTION__ ); + if ( rtw_get_wfd_attr_content( wfd_ie, wfd_ielen, WFD_ATTR_DEVICE_INFO, wfd_devinfo, &wfd_devlen ) ) + { + u16 wfd_devinfo_field = 0; + + // Commented by Albert 20120319 + // The first two bytes are the WFD device information field of WFD device information subelement. + // In big endian format. + wfd_devinfo_field = RTW_GET_BE16(wfd_devinfo); + if ( wfd_devinfo_field & WFD_DEVINFO_PC_TDLS ) + { + pwfd_info->wfd_pc = _TRUE; + } + else + { + pwfd_info->wfd_pc = _FALSE; + } + } + } + } + else + { + DBG_871X( "[%s] NOT Found in the Scanning Queue!\n", __FUNCTION__ ); + } + +exit: + + return ret; + +} + +static int rtw_p2p_set_wfd_device_type(struct net_device *dev, + struct iw_request_info *info, + union iwreq_data *wrqu, char *extra) +{ + + int ret = 0; + _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); + struct iw_point *pdata = &wrqu->data; + struct wifidirect_info *pwdinfo = &( padapter->wdinfo ); + struct wifi_display_info *pwfd_info = pwdinfo->wfd_info; + + // Commented by Albert 20120328 + // The input data is 0 or 1 + // 0: specify to Miracast source device + // 1 or others: specify to Miracast sink device (display device) + + DBG_871X( "[%s] data = %s\n", __FUNCTION__, extra ); + + if ( extra[ 0 ] == '0' ) // Set to Miracast source device. + { + pwfd_info->wfd_device_type = WFD_DEVINFO_SOURCE; + } + else // Set to Miracast sink device. + { + pwfd_info->wfd_device_type = WFD_DEVINFO_PSINK; + } + +exit: + + return ret; + +} + +static int rtw_p2p_set_scan_result_type(struct net_device *dev, + struct iw_request_info *info, + union iwreq_data *wrqu, char *extra) +{ + + int ret = 0; + _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); + struct iw_point *pdata = &wrqu->data; + struct wifidirect_info *pwdinfo = &( padapter->wdinfo ); + struct wifi_display_info *pwfd_info = pwdinfo->wfd_info; + + // Commented by Albert 20120328 + // The input data is 0 , 1 , 2 + // 0: when the P2P is enabled, the scan result will return all the found P2P device. + // 1: when the P2P is enabled, the scan result will return all the found P2P device and AP. + // 2: when the P2P is enabled, the scan result will show up the found Miracast devices base on... + // It will show up all the Miracast source device if this device is sink. + // It will show up all the Miracast sink device if this device is source. + + DBG_871X( "[%s] data = %s\n", __FUNCTION__, extra ); + + if ( extra[ 0 ] == '0' ) + { + pwfd_info->scan_result_type = SCAN_RESULT_P2P_ONLY; + } + else if ( extra[ 0 ] == '1' ) + { + pwfd_info->scan_result_type = SCAN_RESULT_ALL; + } + else if ( extra[ 0 ] == '2' ) + { + pwfd_info->scan_result_type = SCAN_RESULT_WFD_TYPE; + } + else + { + pwfd_info->scan_result_type = SCAN_RESULT_P2P_ONLY; + } + +exit: + + return ret; + +} + +static int rtw_p2p_set_wfd_enable(struct net_device *dev, + struct iw_request_info *info, + union iwreq_data *wrqu, char *extra) +{ +// Commented by Kurt 20121206 +// This function is used to set wfd enabled + + int ret = 0; + _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); + struct wifidirect_info *pwdinfo= &(padapter->wdinfo); + + if(*extra == '0' ) + pwdinfo->wfd_info->wfd_enable = _FALSE; + else if(*extra == '1') + pwdinfo->wfd_info->wfd_enable = _TRUE; + + DBG_871X( "[%s] wfd_enable = %d\n", __FUNCTION__, pwdinfo->wfd_info->wfd_enable ); + + return ret; + +} + +static int rtw_p2p_set_driver_iface(struct net_device *dev, + struct iw_request_info *info, + union iwreq_data *wrqu, char *extra) +{ +// Commented by Kurt 20121206 +// This function is used to set driver iface is WEXT or CFG80211 + int ret = 0; + _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); + struct wifidirect_info *pwdinfo= &(padapter->wdinfo); + + if(*extra == '1' ) + { + pwdinfo->driver_interface = DRIVER_WEXT; + DBG_871X( "[%s] driver_interface = WEXT\n", __FUNCTION__); + } + else if(*extra == '2') + { + pwdinfo->driver_interface = DRIVER_CFG80211; + DBG_871X( "[%s] driver_interface = CFG80211\n", __FUNCTION__); + } + + return ret; + +} + +// To set the WFD session available to enable or disable +static int rtw_p2p_set_sa(struct net_device *dev, + struct iw_request_info *info, + union iwreq_data *wrqu, char *extra) +{ + + int ret = 0; + _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); + struct iw_point *pdata = &wrqu->data; + struct wifidirect_info *pwdinfo = &( padapter->wdinfo ); + struct wifi_display_info *pwfd_info = pwdinfo->wfd_info; + + DBG_871X( "[%s] data = %s\n", __FUNCTION__, extra ); + + if( 0 ) + { + DBG_871X( "[%s] WiFi Direct is disable!\n", __FUNCTION__ ); + return ret; + } + else + { + if ( extra[ 0 ] == '0' ) // Disable the session available. + { + pwdinfo->session_available = _FALSE; + } + else if ( extra[ 0 ] == '1' ) // Enable the session available. + { + pwdinfo->session_available = _TRUE; + } + else + { + pwdinfo->session_available = _FALSE; + } + } + printk( "[%s] session available = %d\n", __FUNCTION__, pwdinfo->session_available ); + +exit: + + return ret; + +} +#endif //CONFIG_WFD + +static int rtw_p2p_prov_disc(struct net_device *dev, + struct iw_request_info *info, + union iwreq_data *wrqu, char *extra) +{ + int ret = 0; + _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); + struct wifidirect_info *pwdinfo = &( padapter->wdinfo ); + u8 peerMAC[ ETH_ALEN ] = { 0x00 }; + int jj,kk; + u8 peerMACStr[ ETH_ALEN * 2 ] = { 0x00 }; + struct mlme_priv *pmlmepriv = &padapter->mlmepriv; + _list *plist, *phead; + _queue *queue = &(pmlmepriv->scanned_queue); + struct wlan_network *pnetwork = NULL; + uint uintPeerChannel = 0; + u8 attr_content[100] = { 0x00 }, _status = 0; + u8 *p2pie; + uint p2pielen = 0, attr_contentlen = 0; + _irqL irqL; + u8 ie_offset; +#ifdef CONFIG_CONCURRENT_MODE + _adapter *pbuddy_adapter = padapter->pbuddy_adapter; + struct mlme_ext_priv *pbuddy_mlmeext = &pbuddy_adapter->mlmeextpriv; +#endif // CONFIG_CONCURRENT_MODE + +#ifdef CONFIG_WFD + struct wifi_display_info* pwfd_info = pwdinfo->wfd_info; +#endif // CONFIG_WFD + + // Commented by Albert 20110301 + // The input data contains two informations. + // 1. First information is the MAC address which wants to issue the provisioning discovery request frame. + // 2. Second information is the WPS configuration method which wants to discovery + // Format: 00:E0:4C:00:00:05_display + // Format: 00:E0:4C:00:00:05_keypad + // Format: 00:E0:4C:00:00:05_pbc + // Format: 00:E0:4C:00:00:05_label + + DBG_871X( "[%s] data = %s\n", __FUNCTION__, extra ); + + if(rtw_p2p_chk_state(pwdinfo, P2P_STATE_NONE)) + { + DBG_871X( "[%s] WiFi Direct is disable!\n", __FUNCTION__ ); + return ret; + } + else + { +#ifdef CONFIG_INTEL_WIDI + if(check_fwstate(pmlmepriv, _FW_UNDER_SURVEY) == _TRUE){ + DBG_871X( "[%s] WiFi is under survey!\n", __FUNCTION__ ); + return ret; + } +#endif //CONFIG_INTEL_WIDI + + // Reset the content of struct tx_provdisc_req_info excluded the wps_config_method_request. + _rtw_memset( pwdinfo->tx_prov_disc_info.peerDevAddr, 0x00, ETH_ALEN ); + _rtw_memset( pwdinfo->tx_prov_disc_info.peerIFAddr, 0x00, ETH_ALEN ); + _rtw_memset( &pwdinfo->tx_prov_disc_info.ssid, 0x00, sizeof( NDIS_802_11_SSID ) ); + pwdinfo->tx_prov_disc_info.peer_channel_num[ 0 ] = 0; + pwdinfo->tx_prov_disc_info.peer_channel_num[ 1 ] = 0; + pwdinfo->tx_prov_disc_info.benable = _FALSE; + } + + for( jj = 0, kk = 0; jj < ETH_ALEN; jj++, kk += 3 ) + { + peerMAC[ jj ] = key_2char2num( extra[kk], extra[kk+ 1] ); + } + + if ( _rtw_memcmp( &extra[ 18 ], "display", 7 ) ) + { + pwdinfo->tx_prov_disc_info.wps_config_method_request = WPS_CM_DISPLYA; + } + else if ( _rtw_memcmp( &extra[ 18 ], "keypad", 7 ) ) + { + pwdinfo->tx_prov_disc_info.wps_config_method_request = WPS_CM_KEYPAD; + } + else if ( _rtw_memcmp( &extra[ 18 ], "pbc", 3 ) ) + { + pwdinfo->tx_prov_disc_info.wps_config_method_request = WPS_CM_PUSH_BUTTON; + } + else if ( _rtw_memcmp( &extra[ 18 ], "label", 5 ) ) + { + pwdinfo->tx_prov_disc_info.wps_config_method_request = WPS_CM_LABEL; + } + else + { + DBG_871X( "[%s] Unknown WPS config methodn", __FUNCTION__ ); + return( ret ); + } + + + _enter_critical_bh(&(pmlmepriv->scanned_queue.lock), &irqL); + + phead = get_list_head(queue); + plist = get_next(phead); + + while(1) + { + if (rtw_end_of_queue_search(phead,plist)== _TRUE) + break; + + if( uintPeerChannel != 0 ) + break; + + pnetwork = LIST_CONTAINOR(plist, struct wlan_network, list); + + // Commented by Albert 2011/05/18 + // Match the device address located in the P2P IE + // This is for the case that the P2P device address is not the same as the P2P interface address. + + if (pnetwork->network.Reserved[0] == 2) { // Probe Request + ie_offset = 0; + } else { // Beacon or Probe Respones + ie_offset = 12; + } + if ( (p2pie=rtw_get_p2p_ie( &pnetwork->network.IEs[ie_offset], pnetwork->network.IELength - ie_offset, NULL, &p2pielen)) ) + { + while ( p2pie ) + { + // The P2P Device ID attribute is included in the Beacon frame. + // The P2P Device Info attribute is included in the probe response frame. + + if ( rtw_get_p2p_attr_content( p2pie, p2pielen, P2P_ATTR_DEVICE_ID, attr_content, &attr_contentlen) ) + { + // Handle the P2P Device ID attribute of Beacon first + if ( _rtw_memcmp( attr_content, peerMAC, ETH_ALEN ) ) + { + uintPeerChannel = pnetwork->network.Configuration.DSConfig; + break; + } + } + else if ( rtw_get_p2p_attr_content( p2pie, p2pielen, P2P_ATTR_DEVICE_INFO, attr_content, &attr_contentlen) ) + { + // Handle the P2P Device Info attribute of probe response + if ( _rtw_memcmp( attr_content, peerMAC, ETH_ALEN ) ) + { + uintPeerChannel = pnetwork->network.Configuration.DSConfig; + break; + } + } + + //Get the next P2P IE + p2pie = rtw_get_p2p_ie(p2pie+p2pielen, pnetwork->network.IELength - ie_offset -(p2pie -&pnetwork->network.IEs[ie_offset] + p2pielen), NULL, &p2pielen); + } + } + +#ifdef CONFIG_INTEL_WIDI + // Some Intel WiDi source may not provide P2P IE, + // so we could only compare mac addr by 802.11 Source Address + if( pmlmepriv->widi_state == INTEL_WIDI_STATE_WFD_CONNECTION + && uintPeerChannel == 0 ) + { + if ( _rtw_memcmp( pnetwork->network.MacAddress, peerMAC, ETH_ALEN ) ) + { + uintPeerChannel = pnetwork->network.Configuration.DSConfig; + break; + } + } +#endif //CONFIG_INTEL_WIDI + + plist = get_next(plist); + + } + + _exit_critical_bh(&(pmlmepriv->scanned_queue.lock), &irqL); + + if ( uintPeerChannel ) + { +#ifdef CONFIG_WFD + { + u8 wfd_ie[ 128 ] = { 0x00 }; + uint wfd_ielen = 0; + + if ( rtw_get_wfd_ie( &pnetwork->network.IEs[12], pnetwork->network.IELength - 12, wfd_ie, &wfd_ielen ) ) + { + u8 wfd_devinfo[ 6 ] = { 0x00 }; + uint wfd_devlen = 6; + + DBG_871X( "[%s] Found WFD IE!\n", __FUNCTION__ ); + if ( rtw_get_wfd_attr_content( wfd_ie, wfd_ielen, WFD_ATTR_DEVICE_INFO, wfd_devinfo, &wfd_devlen ) ) + { + u16 wfd_devinfo_field = 0; + + // Commented by Albert 20120319 + // The first two bytes are the WFD device information field of WFD device information subelement. + // In big endian format. + wfd_devinfo_field = RTW_GET_BE16(wfd_devinfo); + if ( wfd_devinfo_field & WFD_DEVINFO_SESSION_AVAIL ) + { + pwfd_info->peer_session_avail = _TRUE; + } + else + { + pwfd_info->peer_session_avail = _FALSE; + } + } + } + + if ( _FALSE == pwfd_info->peer_session_avail ) + { + DBG_871X( "[%s] WFD Session not avaiable!\n", __FUNCTION__ ); + goto exit; + } + } +#endif // CONFIG_WFD + + DBG_871X( "[%s] peer channel: %d!\n", __FUNCTION__, uintPeerChannel ); +#ifdef CONFIG_CONCURRENT_MODE + if ( check_buddy_fwstate(padapter, _FW_LINKED ) ) + { + _cancel_timer_ex( &pwdinfo->ap_p2p_switch_timer ); + } +#endif // CONFIG_CONCURRENT_MODE + _rtw_memcpy( pwdinfo->tx_prov_disc_info.peerIFAddr, pnetwork->network.MacAddress, ETH_ALEN ); + _rtw_memcpy( pwdinfo->tx_prov_disc_info.peerDevAddr, peerMAC, ETH_ALEN ); + pwdinfo->tx_prov_disc_info.peer_channel_num[0] = ( u16 ) uintPeerChannel; + pwdinfo->tx_prov_disc_info.benable = _TRUE; + rtw_p2p_set_pre_state(pwdinfo, rtw_p2p_state(pwdinfo)); + rtw_p2p_set_state(pwdinfo, P2P_STATE_TX_PROVISION_DIS_REQ); + + if(rtw_p2p_chk_role(pwdinfo, P2P_ROLE_CLIENT)) + { + _rtw_memcpy( &pwdinfo->tx_prov_disc_info.ssid, &pnetwork->network.Ssid, sizeof( NDIS_802_11_SSID ) ); + } + else if(rtw_p2p_chk_role(pwdinfo, P2P_ROLE_DEVICE) || rtw_p2p_chk_role(pwdinfo, P2P_ROLE_GO)) + { + _rtw_memcpy( pwdinfo->tx_prov_disc_info.ssid.Ssid, pwdinfo->p2p_wildcard_ssid, P2P_WILDCARD_SSID_LEN ); + pwdinfo->tx_prov_disc_info.ssid.SsidLength= P2P_WILDCARD_SSID_LEN; + } + +#ifdef CONFIG_CONCURRENT_MODE + if ( check_buddy_fwstate(padapter, _FW_LINKED ) ) + { + // Have to enter the power saving with the AP + set_channel_bwmode(padapter, pbuddy_mlmeext->cur_channel, pbuddy_mlmeext->cur_ch_offset, pbuddy_mlmeext->cur_bwmode); + + issue_nulldata(pbuddy_adapter, NULL, 1, 3, 500); + } + else + { + set_channel_bwmode(padapter, uintPeerChannel, HAL_PRIME_CHNL_OFFSET_DONT_CARE, HT_CHANNEL_WIDTH_20); + } +#else + set_channel_bwmode(padapter, uintPeerChannel, HAL_PRIME_CHNL_OFFSET_DONT_CARE, HT_CHANNEL_WIDTH_20); +#endif + + _set_timer( &pwdinfo->pre_tx_scan_timer, P2P_TX_PRESCAN_TIMEOUT ); + +#ifdef CONFIG_CONCURRENT_MODE + if ( check_buddy_fwstate(padapter, _FW_LINKED ) ) + { + _set_timer( &pwdinfo->restore_p2p_state_timer, P2P_CONCURRENT_PROVISION_TIMEOUT ); + } + else + { + _set_timer( &pwdinfo->restore_p2p_state_timer, P2P_PROVISION_TIMEOUT ); + } +#else + _set_timer( &pwdinfo->restore_p2p_state_timer, P2P_PROVISION_TIMEOUT ); +#endif // CONFIG_CONCURRENT_MODE + + + } + else + { + DBG_871X( "[%s] NOT Found in the Scanning Queue!\n", __FUNCTION__ ); +#ifdef CONFIG_INTEL_WIDI + rtw_p2p_set_state(pwdinfo, P2P_STATE_FIND_PHASE_SEARCH); + rtw_p2p_findphase_ex_set(pwdinfo, P2P_FINDPHASE_EX_NONE); + rtw_free_network_queue(padapter, _TRUE); + _enter_critical_bh(&pmlmepriv->lock, &irqL); + rtw_sitesurvey_cmd(padapter, NULL, 0, NULL, 0); + _exit_critical_bh(&pmlmepriv->lock, &irqL); +#endif //CONFIG_INTEL_WIDI + } +exit: + + return ret; + +} + +// Added by Albert 20110328 +// This function is used to inform the driver the user had specified the pin code value or pbc +// to application. + +static int rtw_p2p_got_wpsinfo(struct net_device *dev, + struct iw_request_info *info, + union iwreq_data *wrqu, char *extra) +{ + + int ret = 0; + _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); + struct wifidirect_info *pwdinfo = &( padapter->wdinfo ); + + + DBG_871X( "[%s] data = %s\n", __FUNCTION__, extra ); + // Added by Albert 20110328 + // if the input data is P2P_NO_WPSINFO -> reset the wpsinfo + // if the input data is P2P_GOT_WPSINFO_PEER_DISPLAY_PIN -> the utility just input the PIN code got from the peer P2P device. + // if the input data is P2P_GOT_WPSINFO_SELF_DISPLAY_PIN -> the utility just got the PIN code from itself. + // if the input data is P2P_GOT_WPSINFO_PBC -> the utility just determine to use the PBC + + if ( *extra == '0' ) + { + pwdinfo->ui_got_wps_info = P2P_NO_WPSINFO; + } + else if ( *extra == '1' ) + { + pwdinfo->ui_got_wps_info = P2P_GOT_WPSINFO_PEER_DISPLAY_PIN; + } + else if ( *extra == '2' ) + { + pwdinfo->ui_got_wps_info = P2P_GOT_WPSINFO_SELF_DISPLAY_PIN; + } + else if ( *extra == '3' ) + { + pwdinfo->ui_got_wps_info = P2P_GOT_WPSINFO_PBC; + } + else + { + pwdinfo->ui_got_wps_info = P2P_NO_WPSINFO; + } + + return ret; + +} + +#endif //CONFIG_P2P + +static int rtw_p2p_set(struct net_device *dev, + struct iw_request_info *info, + union iwreq_data *wrqu, char *extra) +{ + + int ret = 0; +#ifdef CONFIG_P2P + + _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); + struct mlme_priv *pmlmepriv = &(padapter->mlmepriv); + struct iw_point *pdata = &wrqu->data; + struct wifidirect_info *pwdinfo= &(padapter->wdinfo); + struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; + + DBG_871X( "[%s] extra = %s\n", __FUNCTION__, extra ); + + if ( _rtw_memcmp( extra, "enable=", 7 ) ) + { + rtw_wext_p2p_enable( dev, info, wrqu, &extra[7] ); + } + else if ( _rtw_memcmp( extra, "setDN=", 6 ) ) + { + wrqu->data.length -= 6; + rtw_p2p_setDN( dev, info, wrqu, &extra[6] ); + } + else if ( _rtw_memcmp( extra, "profilefound=", 13 ) ) + { + wrqu->data.length -= 13; + rtw_p2p_profilefound( dev, info, wrqu, &extra[13] ); + } + else if ( _rtw_memcmp( extra, "prov_disc=", 10 ) ) + { + wrqu->data.length -= 10; + rtw_p2p_prov_disc( dev, info, wrqu, &extra[10] ); + } + else if ( _rtw_memcmp( extra, "nego=", 5 ) ) + { + wrqu->data.length -= 5; + rtw_p2p_connect( dev, info, wrqu, &extra[5] ); + } + else if ( _rtw_memcmp( extra, "intent=", 7 ) ) + { + // Commented by Albert 2011/03/23 + // The wrqu->data.length will include the null character + // So, we will decrease 7 + 1 + wrqu->data.length -= 8; + rtw_p2p_set_intent( dev, info, wrqu, &extra[7] ); + } + else if ( _rtw_memcmp( extra, "ssid=", 5 ) ) + { + wrqu->data.length -= 5; + rtw_p2p_set_go_nego_ssid( dev, info, wrqu, &extra[5] ); + } + else if ( _rtw_memcmp( extra, "got_wpsinfo=", 12 ) ) + { + wrqu->data.length -= 12; + rtw_p2p_got_wpsinfo( dev, info, wrqu, &extra[12] ); + } + else if ( _rtw_memcmp( extra, "listen_ch=", 10 ) ) + { + // Commented by Albert 2011/05/24 + // The wrqu->data.length will include the null character + // So, we will decrease (10 + 1) + wrqu->data.length -= 11; + rtw_p2p_set_listen_ch( dev, info, wrqu, &extra[10] ); + } + else if ( _rtw_memcmp( extra, "op_ch=", 6 ) ) + { + // Commented by Albert 2011/05/24 + // The wrqu->data.length will include the null character + // So, we will decrease (6 + 1) + wrqu->data.length -= 7; + rtw_p2p_set_op_ch( dev, info, wrqu, &extra[6] ); + } + else if ( _rtw_memcmp( extra, "invite=", 7 ) ) + { + wrqu->data.length -= 8; + rtw_p2p_invite_req( dev, info, wrqu, &extra[7] ); + } + else if ( _rtw_memcmp( extra, "persistent=", 11 ) ) + { + wrqu->data.length -= 11; + rtw_p2p_set_persistent( dev, info, wrqu, &extra[11] ); + } + else if ( _rtw_memcmp ( extra, "uuid=", 5) ) + { + wrqu->data.length -= 5; + ret = rtw_p2p_set_wps_uuid( dev, info, wrqu, &extra[5] ); + } +#ifdef CONFIG_WFD + else if ( _rtw_memcmp( extra, "sa=", 3 ) ) + { + // sa: WFD Session Available information + wrqu->data.length -= 3; + rtw_p2p_set_sa( dev, info, wrqu, &extra[3] ); + } + else if ( _rtw_memcmp( extra, "pc=", 3 ) ) + { + // pc: WFD Preferred Connection + wrqu->data.length -= 3; + rtw_p2p_set_pc( dev, info, wrqu, &extra[3] ); + } + else if ( _rtw_memcmp( extra, "wfd_type=", 9 ) ) + { + // Specify this device is Mircast source or sink + wrqu->data.length -= 9; + rtw_p2p_set_wfd_device_type( dev, info, wrqu, &extra[9] ); + } + else if ( _rtw_memcmp( extra, "scan_type=", 10 ) ) + { + wrqu->data.length -= 10; + rtw_p2p_set_scan_result_type( dev, info, wrqu, &extra[10] ); + } + else if ( _rtw_memcmp( extra, "wfd_enable=", 11 ) ) + { + wrqu->data.length -= 11; + rtw_p2p_set_wfd_enable( dev, info, wrqu, &extra[11] ); + } + else if ( _rtw_memcmp( extra, "driver_iface=", 13 ) ) + { + wrqu->data.length -= 13; + rtw_p2p_set_driver_iface( dev, info, wrqu, &extra[13] ); + } +#endif //CONFIG_WFD +#endif //CONFIG_P2P + + return ret; + +} + +static int rtw_p2p_get(struct net_device *dev, + struct iw_request_info *info, + union iwreq_data *wrqu, char *extra) +{ + + int ret = 0; + +#ifdef CONFIG_P2P + + _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); + struct mlme_priv *pmlmepriv = &(padapter->mlmepriv); + struct iw_point *pdata = &wrqu->data; + struct wifidirect_info *pwdinfo= &(padapter->wdinfo); + struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; + + if ( padapter->bShowGetP2PState ) + { + DBG_871X( "[%s] extra = %s\n", __FUNCTION__, (char*) wrqu->data.pointer ); + } + + if ( _rtw_memcmp( wrqu->data.pointer, "status", 6 ) ) + { + rtw_p2p_get_status( dev, info, wrqu, extra ); + } + else if ( _rtw_memcmp( wrqu->data.pointer, "role", 4 ) ) + { + rtw_p2p_get_role( dev, info, wrqu, extra); + } + else if ( _rtw_memcmp( wrqu->data.pointer, "peer_ifa", 8 ) ) + { + rtw_p2p_get_peer_ifaddr( dev, info, wrqu, extra); + } + else if ( _rtw_memcmp( wrqu->data.pointer, "req_cm", 6 ) ) + { + rtw_p2p_get_req_cm( dev, info, wrqu, extra); + } + else if ( _rtw_memcmp( wrqu->data.pointer, "peer_deva", 9 ) ) + { + // Get the P2P device address when receiving the provision discovery request frame. + rtw_p2p_get_peer_devaddr( dev, info, wrqu, extra); + } + else if ( _rtw_memcmp( wrqu->data.pointer, "group_id", 8 ) ) + { + rtw_p2p_get_groupid( dev, info, wrqu, extra); + } + else if ( _rtw_memcmp( wrqu->data.pointer, "inv_peer_deva", 13 ) ) + { + // Get the P2P device address when receiving the P2P Invitation request frame. + rtw_p2p_get_peer_devaddr_by_invitation( dev, info, wrqu, extra); + } + else if ( _rtw_memcmp( wrqu->data.pointer, "op_ch", 5 ) ) + { + rtw_p2p_get_op_ch( dev, info, wrqu, extra); + } +#ifdef CONFIG_WFD + else if ( _rtw_memcmp( wrqu->data.pointer, "peer_port", 9 ) ) + { + rtw_p2p_get_peer_wfd_port( dev, info, wrqu, extra ); + } + else if ( _rtw_memcmp( wrqu->data.pointer, "wfd_sa", 6 ) ) + { + rtw_p2p_get_peer_wfd_session_available( dev, info, wrqu, extra ); + } + else if ( _rtw_memcmp( wrqu->data.pointer, "wfd_pc", 6 ) ) + { + rtw_p2p_get_peer_wfd_preferred_connection( dev, info, wrqu, extra ); + } +#endif // CONFIG_WFD + +#endif //CONFIG_P2P + + return ret; + +} + +static int rtw_p2p_get2(struct net_device *dev, + struct iw_request_info *info, + union iwreq_data *wrqu, char *extra) +{ + + int ret = 0; + +#ifdef CONFIG_P2P + + int length = wrqu->data.length; + char *buffer = (u8 *)rtw_malloc(length); + + if (buffer == NULL) + { + ret = -ENOMEM; + goto bad; + } + + if (copy_from_user(buffer, wrqu->data.pointer, wrqu->data.length)) + { + ret - EFAULT; + goto bad; + } + + DBG_871X("[%s] buffer = %s\n", __FUNCTION__, buffer); + + if (_rtw_memcmp(buffer, "wpsCM=", 6)) + { + ret = rtw_p2p_get_wps_configmethod(dev, info, wrqu, extra, &buffer[6]); + } else if (_rtw_memcmp(buffer, "devN=", 5)) + { + ret = rtw_p2p_get_device_name(dev, info, wrqu, extra, &buffer[5]); + } else if (_rtw_memcmp(buffer, "dev_type=", 9)) + { + ret = rtw_p2p_get_device_type(dev, info, wrqu, extra, &buffer[9]); + } else if (_rtw_memcmp(buffer, "go_devadd=", 10)) + { + ret = rtw_p2p_get_go_device_address(dev, info, wrqu, extra, &buffer[10]); + } else if (_rtw_memcmp(buffer, "InvProc=", 8)) + { + ret = rtw_p2p_get_invitation_procedure(dev, info, wrqu, extra, &buffer[8]); + } else + { + snprintf(extra, sizeof("Command not found."), "Command not found."); + wrqu->data.length = strlen(extra); + } + +bad: + if (buffer) + { + rtw_mfree(buffer, length); + } + +#endif //CONFIG_P2P + + return ret; + +} + +extern int rtw_change_ifname(_adapter *padapter, const char *ifname); +static int rtw_rereg_nd_name(struct net_device *dev, + struct iw_request_info *info, + union iwreq_data *wrqu, char *extra) +{ + int ret = 0; + _adapter *padapter = rtw_netdev_priv(dev); + struct rereg_nd_name_data *rereg_priv = &padapter->rereg_nd_name_priv; + char new_ifname[IFNAMSIZ]; + + if(rereg_priv->old_ifname[0] == 0) { + char *reg_ifname; +#ifdef CONFIG_CONCURRENT_MODE + if (padapter->isprimary) + reg_ifname = padapter->registrypriv.ifname; + else +#endif + reg_ifname = padapter->registrypriv.if2name; + + strncpy(rereg_priv->old_ifname, reg_ifname, IFNAMSIZ); + rereg_priv->old_ifname[IFNAMSIZ-1] = 0; + } + + //DBG_871X("%s wrqu->data.length:%d\n", __FUNCTION__, wrqu->data.length); + if(wrqu->data.length > IFNAMSIZ) + return -EFAULT; + + if ( copy_from_user(new_ifname, wrqu->data.pointer, IFNAMSIZ) ) { + return -EFAULT; + } + + if( 0 == strcmp(rereg_priv->old_ifname, new_ifname) ) { + return ret; + } + + DBG_871X("%s new_ifname:%s\n", __FUNCTION__, new_ifname); + if( 0 != (ret = rtw_change_ifname(padapter, new_ifname)) ) { + goto exit; + } + + if(_rtw_memcmp(rereg_priv->old_ifname, "disable%d", 9) == _TRUE) { + padapter->ledpriv.bRegUseLed= rereg_priv->old_bRegUseLed; + rtw_hal_sw_led_init(padapter); + rtw_ips_mode_req(&padapter->pwrctrlpriv, rereg_priv->old_ips_mode); + } + + strncpy(rereg_priv->old_ifname, new_ifname, IFNAMSIZ); + rereg_priv->old_ifname[IFNAMSIZ-1] = 0; + + if(_rtw_memcmp(new_ifname, "disable%d", 9) == _TRUE) { + + DBG_871X("%s disable\n", __FUNCTION__); + // free network queue for Android's timming issue + rtw_free_network_queue(padapter, _TRUE); + + // close led + rtw_led_control(padapter, LED_CTL_POWER_OFF); + rereg_priv->old_bRegUseLed = padapter->ledpriv.bRegUseLed; + padapter->ledpriv.bRegUseLed= _FALSE; + rtw_hal_sw_led_deinit(padapter); + + // the interface is being "disabled", we can do deeper IPS + rereg_priv->old_ips_mode = rtw_get_ips_mode_req(&padapter->pwrctrlpriv); + rtw_ips_mode_req(&padapter->pwrctrlpriv, IPS_NORMAL); + } +exit: + return ret; + +} + +#if 0 +void mac_reg_dump(_adapter *padapter) +{ + int i,j=1; + DBG_871X("\n======= MAC REG =======\n"); + for(i=0x0;i<0x300;i+=4) + { + if(j%4==1) DBG_871X("0x%02x",i); + DBG_871X(" 0x%08x ",rtw_read32(padapter,i)); + if((j++)%4 == 0) DBG_871X("\n"); + } + for(i=0x400;i<0x800;i+=4) + { + if(j%4==1) DBG_871X("0x%02x",i); + DBG_871X(" 0x%08x ",rtw_read32(padapter,i)); + if((j++)%4 == 0) DBG_871X("\n"); + } +} +void bb_reg_dump(_adapter *padapter) +{ + int i,j=1; + DBG_871X("\n======= BB REG =======\n"); + for(i=0x800;i<0x1000;i+=4) + { + if(j%4==1) DBG_871X("0x%02x",i); + + DBG_871X(" 0x%08x ",rtw_read32(padapter,i)); + if((j++)%4 == 0) DBG_871X("\n"); + } +} +void rf_reg_dump(_adapter *padapter) +{ + int i,j=1,path; + u32 value; + DBG_871X("\n======= RF REG =======\n"); + for(path=0;path<2;path++) + { + DBG_871X("\nRF_Path(%x)\n",path); + for(i=0;i<0x100;i++) + { + value = PHY_QueryRFReg(padapter, (RF90_RADIO_PATH_E)path,i, bMaskDWord); + if(j%4==1) DBG_871X("0x%02x ",i); + DBG_871X(" 0x%08x ",value); + if((j++)%4==0) DBG_871X("\n"); + } + } +} + +#endif + +void mac_reg_dump(_adapter *padapter) +{ + int i,j=1; + DBG_871X("\n======= MAC REG =======\n"); + for(i=0x0;i<0x300;i+=4) + { + if(j%4==1) DBG_871X("0x%02x",i); + DBG_871X(" 0x%08x ",rtw_read32(padapter,i)); + if((j++)%4 == 0) DBG_871X("\n"); + } + for(i=0x400;i<0x800;i+=4) + { + if(j%4==1) DBG_871X("0x%02x",i); + DBG_871X(" 0x%08x ",rtw_read32(padapter,i)); + if((j++)%4 == 0) DBG_871X("\n"); + } +} +void bb_reg_dump(_adapter *padapter) +{ + int i,j=1; + DBG_871X("\n======= BB REG =======\n"); + for(i=0x800;i<0x1000;i+=4) + { + if(j%4==1) DBG_871X("0x%02x",i); + + DBG_871X(" 0x%08x ",rtw_read32(padapter,i)); + if((j++)%4 == 0) DBG_871X("\n"); + } +} +void rf_reg_dump(_adapter *padapter) +{ + int i,j=1,path; + u32 value; + u8 rf_type,path_nums = 0; + rtw_hal_get_hwreg(padapter, HW_VAR_RF_TYPE, (u8 *)(&rf_type)); + + DBG_871X("\n======= RF REG =======\n"); + if((RF_1T2R == rf_type) ||(RF_1T1R ==rf_type )) + path_nums = 1; + else + path_nums = 2; + + for(path=0;path +#endif +#ifdef DBG_CONFIG_ERROR_DETECT +#include +#endif +static int rtw_dbg_port(struct net_device *dev, + struct iw_request_info *info, + union iwreq_data *wrqu, char *extra) +{ + _irqL irqL; + int ret = 0; + u8 major_cmd, minor_cmd; + u16 arg; + u32 extra_arg, *pdata, val32; + struct sta_info *psta; + _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); + struct mlme_priv *pmlmepriv = &(padapter->mlmepriv); + struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; + struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info); + struct security_priv *psecuritypriv = &padapter->securitypriv; + struct wlan_network *cur_network = &(pmlmepriv->cur_network); + struct sta_priv *pstapriv = &padapter->stapriv; + + + pdata = (u32*)&wrqu->data; + + val32 = *pdata; + arg = (u16)(val32&0x0000ffff); + major_cmd = (u8)(val32>>24); + minor_cmd = (u8)((val32>>16)&0x00ff); + + extra_arg = *(pdata+1); + + switch(major_cmd) + { + case 0x70://read_reg + switch(minor_cmd) + { + case 1: + DBG_871X("rtw_read8(0x%x)=0x%02x\n", arg, rtw_read8(padapter, arg)); + break; + case 2: + DBG_871X("rtw_read16(0x%x)=0x%04x\n", arg, rtw_read16(padapter, arg)); + break; + case 4: + DBG_871X("rtw_read32(0x%x)=0x%08x\n", arg, rtw_read32(padapter, arg)); + break; + } + break; + case 0x71://write_reg + switch(minor_cmd) + { + case 1: + rtw_write8(padapter, arg, extra_arg); + DBG_871X("rtw_write8(0x%x)=0x%02x\n", arg, rtw_read8(padapter, arg)); + break; + case 2: + rtw_write16(padapter, arg, extra_arg); + DBG_871X("rtw_write16(0x%x)=0x%04x\n", arg, rtw_read16(padapter, arg)); + break; + case 4: + rtw_write32(padapter, arg, extra_arg); + DBG_871X("rtw_write32(0x%x)=0x%08x\n", arg, rtw_read32(padapter, arg)); + break; + } + break; + case 0x72://read_bb + DBG_871X("read_bbreg(0x%x)=0x%x\n", arg, rtw_hal_read_bbreg(padapter, arg, 0xffffffff)); + break; + case 0x73://write_bb + rtw_hal_write_bbreg(padapter, arg, 0xffffffff, extra_arg); + DBG_871X("write_bbreg(0x%x)=0x%x\n", arg, rtw_hal_read_bbreg(padapter, arg, 0xffffffff)); + break; + case 0x74://read_rf + DBG_871X("read RF_reg path(0x%02x),offset(0x%x),value(0x%08x)\n",minor_cmd,arg,rtw_hal_read_rfreg(padapter, minor_cmd, arg, 0xffffffff)); + break; + case 0x75://write_rf + rtw_hal_write_rfreg(padapter, minor_cmd, arg, 0xffffffff, extra_arg); + DBG_871X("write RF_reg path(0x%02x),offset(0x%x),value(0x%08x)\n",minor_cmd,arg, rtw_hal_read_rfreg(padapter, minor_cmd, arg, 0xffffffff)); + break; + + case 0x76: + switch(minor_cmd) + { + case 0x00: //normal mode, + padapter->recvpriv.is_signal_dbg = 0; + break; + case 0x01: //dbg mode + padapter->recvpriv.is_signal_dbg = 1; + extra_arg = extra_arg>100?100:extra_arg; + extra_arg = extra_arg<0?0:extra_arg; + padapter->recvpriv.signal_strength_dbg=extra_arg; + break; + } + break; + case 0x78: //IOL test + switch(minor_cmd) + { + #ifdef CONFIG_IOL + case 0x04: //LLT table initialization test + { + u8 page_boundary = 0xf9; + { + struct xmit_frame *xmit_frame; + + if((xmit_frame=rtw_IOL_accquire_xmit_frame(padapter)) == NULL) { + ret = -ENOMEM; + break; + } + + rtw_IOL_append_LLT_cmd(xmit_frame, page_boundary); + + + if(_SUCCESS != rtw_IOL_exec_cmds_sync(padapter, xmit_frame, 500) ) + ret = -EPERM; + } + } + break; + case 0x05: //blink LED test + { + u16 reg = 0x4c; + u32 blink_num = 50; + u32 blink_delay_ms = 200; + int i; + + { + struct xmit_frame *xmit_frame; + + if((xmit_frame=rtw_IOL_accquire_xmit_frame(padapter)) == NULL) { + ret = -ENOMEM; + break; + } + + for(i=0;inetwork.MacAddress + , WLAN_REASON_EXPIRATION_CHK); + break; + + case 0x7F: + switch(minor_cmd) + { + case 0x0: + DBG_871X("fwstate=0x%x\n", get_fwstate(pmlmepriv)); + break; + case 0x01: + DBG_871X("auth_alg=0x%x, enc_alg=0x%x, auth_type=0x%x, enc_type=0x%x\n", + psecuritypriv->dot11AuthAlgrthm, psecuritypriv->dot11PrivacyAlgrthm, + psecuritypriv->ndisauthtype, psecuritypriv->ndisencryptstatus); + break; + case 0x02: + DBG_871X("pmlmeinfo->state=0x%x\n", pmlmeinfo->state); + break; + case 0x03: + DBG_871X("qos_option=%d\n", pmlmepriv->qospriv.qos_option); + DBG_871X("ht_option=%d\n", pmlmepriv->htpriv.ht_option); + break; + case 0x04: + DBG_871X("cur_ch=%d\n", pmlmeext->cur_channel); + DBG_871X("cur_bw=%d\n", pmlmeext->cur_bwmode); + DBG_871X("cur_ch_off=%d\n", pmlmeext->cur_ch_offset); + break; + case 0x05: + psta = rtw_get_stainfo(pstapriv, cur_network->network.MacAddress); + if(psta) + { + int i; + struct recv_reorder_ctrl *preorder_ctrl; + + DBG_871X("SSID=%s\n", cur_network->network.Ssid.Ssid); + DBG_871X("sta's macaddr:" MAC_FMT "\n", MAC_ARG(psta->hwaddr)); + DBG_871X("cur_channel=%d, cur_bwmode=%d, cur_ch_offset=%d\n", pmlmeext->cur_channel, pmlmeext->cur_bwmode, pmlmeext->cur_ch_offset); + DBG_871X("rtsen=%d, cts2slef=%d\n", psta->rtsen, psta->cts2self); + DBG_871X("qos_en=%d, ht_en=%d, init_rate=%d\n", psta->qos_option, psta->htpriv.ht_option, psta->init_rate); + DBG_871X("state=0x%x, aid=%d, macid=%d, raid=%d\n", psta->state, psta->aid, psta->mac_id, psta->raid); + DBG_871X("bwmode=%d, ch_offset=%d, sgi=%d\n", psta->htpriv.bwmode, psta->htpriv.ch_offset, psta->htpriv.sgi); + DBG_871X("ampdu_enable = %d\n", psta->htpriv.ampdu_enable); + DBG_871X("agg_enable_bitmap=%x, candidate_tid_bitmap=%x\n", psta->htpriv.agg_enable_bitmap, psta->htpriv.candidate_tid_bitmap); + + for(i=0;i<16;i++) + { + preorder_ctrl = &psta->recvreorder_ctrl[i]; + if(preorder_ctrl->enable) + { + DBG_871X("tid=%d, indicate_seq=%d\n", i, preorder_ctrl->indicate_seq); + } + } + + } + else + { + DBG_871X("can't get sta's macaddr, cur_network's macaddr:" MAC_FMT "\n", MAC_ARG(cur_network->network.MacAddress)); + } + break; + case 0x06: + { + u8 DMFlag; + rtw_hal_get_hwreg(padapter, HW_VAR_DM_FLAG, (u8 *)(&DMFlag)); + DBG_871X("(B)DMFlag=0x%x, arg=0x%x\n", DMFlag, arg); + DMFlag = (u8)(0x0f&arg); + DBG_871X("(A)DMFlag=0x%x\n", DMFlag); + rtw_hal_set_hwreg(padapter, HW_VAR_DM_FLAG, (u8 *)(&DMFlag)); + } + break; + case 0x07: + DBG_871X("bSurpriseRemoved=%d, bDriverStopped=%d\n", + padapter->bSurpriseRemoved, padapter->bDriverStopped); + break; + case 0x08: + { + struct xmit_priv *pxmitpriv = &padapter->xmitpriv; + struct recv_priv *precvpriv = &padapter->recvpriv; + + DBG_871X("free_xmitbuf_cnt=%d, free_xmitframe_cnt=%d" + ", free_xmit_extbuf_cnt=%d, free_xframe_ext_cnt=%d" + ", free_recvframe_cnt=%d\n", + pxmitpriv->free_xmitbuf_cnt, pxmitpriv->free_xmitframe_cnt, + pxmitpriv->free_xmit_extbuf_cnt, pxmitpriv->free_xframe_ext_cnt, + precvpriv->free_recvframe_cnt); + #ifdef CONFIG_USB_HCI + DBG_871X("rx_urb_pending_cn=%d\n", precvpriv->rx_pending_cnt); + #endif + } + break; + case 0x09: + { + int i, j; + _list *plist, *phead; + struct recv_reorder_ctrl *preorder_ctrl; + +#ifdef CONFIG_AP_MODE + DBG_871X("sta_dz_bitmap=0x%x, tim_bitmap=0x%x\n", pstapriv->sta_dz_bitmap, pstapriv->tim_bitmap); +#endif + _enter_critical_bh(&pstapriv->sta_hash_lock, &irqL); + + for(i=0; i< NUM_STA; i++) + { + phead = &(pstapriv->sta_hash[i]); + plist = get_next(phead); + + while ((rtw_end_of_queue_search(phead, plist)) == _FALSE) + { + psta = LIST_CONTAINOR(plist, struct sta_info, hash_list); + + plist = get_next(plist); + + if(extra_arg == psta->aid) + { + DBG_871X("sta's macaddr:" MAC_FMT "\n", MAC_ARG(psta->hwaddr)); + DBG_871X("rtsen=%d, cts2slef=%d\n", psta->rtsen, psta->cts2self); + DBG_871X("qos_en=%d, ht_en=%d, init_rate=%d\n", psta->qos_option, psta->htpriv.ht_option, psta->init_rate); + DBG_871X("state=0x%x, aid=%d, macid=%d, raid=%d\n", psta->state, psta->aid, psta->mac_id, psta->raid); + DBG_871X("bwmode=%d, ch_offset=%d, sgi=%d\n", psta->htpriv.bwmode, psta->htpriv.ch_offset, psta->htpriv.sgi); + DBG_871X("ampdu_enable = %d\n", psta->htpriv.ampdu_enable); + DBG_871X("agg_enable_bitmap=%x, candidate_tid_bitmap=%x\n", psta->htpriv.agg_enable_bitmap, psta->htpriv.candidate_tid_bitmap); +#ifdef CONFIG_AP_MODE + DBG_871X("capability=0x%x\n", psta->capability); + DBG_871X("flags=0x%x\n", psta->flags); + DBG_871X("wpa_psk=0x%x\n", psta->wpa_psk); + DBG_871X("wpa2_group_cipher=0x%x\n", psta->wpa2_group_cipher); + DBG_871X("wpa2_pairwise_cipher=0x%x\n", psta->wpa2_pairwise_cipher); + DBG_871X("qos_info=0x%x\n", psta->qos_info); +#endif + DBG_871X("dot118021XPrivacy=0x%x\n", psta->dot118021XPrivacy); + + + + for(j=0;j<16;j++) + { + preorder_ctrl = &psta->recvreorder_ctrl[j]; + if(preorder_ctrl->enable) + { + DBG_871X("tid=%d, indicate_seq=%d\n", j, preorder_ctrl->indicate_seq); + } + } + + } + + } + } + + _exit_critical_bh(&pstapriv->sta_hash_lock, &irqL); + + } + break; + + case 0x0c://dump rx packet + { + DBG_871X("dump rx packet (%d)\n",extra_arg); + //pHalData->bDumpRxPkt =extra_arg; + rtw_hal_set_def_var(padapter, HAL_DEF_DBG_DUMP_RXPKT, &(extra_arg)); + } + break; +#if 0 + case 0x0d://dump cam + { + //u8 entry = (u8) extra_arg; + u8 entry=0; + //dump cam + for(entry=0;entry<32;entry++) + read_cam(padapter,entry); + } + break; +#endif + #ifdef DBG_CONFIG_ERROR_DETECT + case 0x0f: + { + if(extra_arg == 0){ + DBG_871X("###### silent reset test.......#####\n"); + rtw_hal_sreset_reset(padapter); + } else { + sreset_set_trigger_point(padapter, extra_arg); + } + + } + break; + case 0x15: + { + struct pwrctrl_priv *pwrpriv = &padapter->pwrctrlpriv; + DBG_871X("==>silent resete cnts:%d\n",pwrpriv->ips_enter_cnts); + } + break; + + #endif + + case 0x10:// driver version display + DBG_871X("rtw driver version=%s\n", DRIVERVERSION); + break; + case 0x11: + { + DBG_871X("turn %s Rx RSSI display function\n",(extra_arg==1)?"on":"off"); + padapter->bRxRSSIDisplay = extra_arg ; + } + break; + case 0x12: //set rx_stbc + { + struct registry_priv *pregpriv = &padapter->registrypriv; + // 0: disable, bit(0):enable 2.4g, bit(1):enable 5g, 0x3: enable both 2.4g and 5g + //default is set to enable 2.4GHZ for IOT issue with bufflao's AP at 5GHZ + if( pregpriv && (extra_arg == 0 || extra_arg == 1|| extra_arg == 2 || extra_arg == 3)) + { + pregpriv->rx_stbc= extra_arg; + DBG_871X("set rx_stbc=%d\n",pregpriv->rx_stbc); + } + else + DBG_871X("get rx_stbc=%d\n",pregpriv->rx_stbc); + + } + break; + case 0x13: //set ampdu_enable + { + struct registry_priv *pregpriv = &padapter->registrypriv; + // 0: disable, 0x1:enable (but wifi_spec should be 0), 0x2: force enable (don't care wifi_spec) + if( pregpriv && extra_arg >= 0 && extra_arg < 3 ) + { + pregpriv->ampdu_enable= extra_arg; + DBG_871X("set ampdu_enable=%d\n",pregpriv->ampdu_enable); + } + else + DBG_871X("get ampdu_enable=%d\n",pregpriv->ampdu_enable); + + } + break; + case 0x14: //get wifi_spec + { + struct registry_priv *pregpriv = &padapter->registrypriv; + DBG_871X("get wifi_spec=%d\n",pregpriv->wifi_spec); + + } + break; + case 0x22: + { + DBG_871X("turn %s the ForceWriteInitGain Variable\n",(extra_arg==1)?"on":"off"); + padapter->bForceWriteInitGain = extra_arg; + break; + } + case 0x23: + { + DBG_871X("turn %s the bNotifyChannelChange Variable\n",(extra_arg==1)?"on":"off"); + padapter->bNotifyChannelChange = extra_arg; + break; + } + case 0x24: + { +#ifdef CONFIG_P2P + DBG_871X("turn %s the bShowGetP2PState Variable\n",(extra_arg==1)?"on":"off"); + padapter->bShowGetP2PState = extra_arg; +#endif // CONFIG_P2P + break; + } +#if 1 + case 0xdd://registers dump , 0 for mac reg,1 for bb reg, 2 for rf reg + { + if(extra_arg==0){ + mac_reg_dump(padapter); + } + else if(extra_arg==1){ + bb_reg_dump(padapter); + } + else if(extra_arg==2){ + rf_reg_dump(padapter); + } + + } + break; +#endif + case 0xee://turn on/off dynamic funcs + { + u8 dm_flag; + + if(0xf==extra_arg){ + rtw_hal_get_def_var(padapter, HAL_DEF_DBG_DM_FUNC,&dm_flag); + DBG_871X(" === DMFlag(0x%02x) === \n",dm_flag); + DBG_871X("extra_arg = 0 - disable all dynamic func \n"); + DBG_871X("extra_arg = 1 - disable DIG- BIT(0)\n"); + DBG_871X("extra_arg = 2 - disable High power - BIT(1)\n"); + DBG_871X("extra_arg = 3 - disable tx power tracking - BIT(2)\n"); + DBG_871X("extra_arg = 4 - disable BT coexistence - BIT(3)\n"); + DBG_871X("extra_arg = 5 - disable antenna diversity - BIT(4)\n"); + DBG_871X("extra_arg = 6 - enable all dynamic func \n"); + } + else{ + /* extra_arg = 0 - disable all dynamic func + extra_arg = 1 - disable DIG + extra_arg = 2 - disable tx power tracking + extra_arg = 3 - turn on all dynamic func + */ + rtw_hal_set_def_var(padapter, HAL_DEF_DBG_DM_FUNC, &(extra_arg)); + rtw_hal_get_def_var(padapter, HAL_DEF_DBG_DM_FUNC,&dm_flag); + DBG_871X(" === DMFlag(0x%02x) === \n",dm_flag); + } + } + break; + + case 0xfd: + rtw_write8(padapter, 0xc50, arg); + DBG_871X("wr(0xc50)=0x%x\n", rtw_read8(padapter, 0xc50)); + rtw_write8(padapter, 0xc58, arg); + DBG_871X("wr(0xc58)=0x%x\n", rtw_read8(padapter, 0xc58)); + break; + case 0xfe: + DBG_871X("rd(0xc50)=0x%x\n", rtw_read8(padapter, 0xc50)); + DBG_871X("rd(0xc58)=0x%x\n", rtw_read8(padapter, 0xc58)); + break; + case 0xff: + { + DBG_871X("dbg(0x210)=0x%x\n", rtw_read32(padapter, 0x210)); + DBG_871X("dbg(0x608)=0x%x\n", rtw_read32(padapter, 0x608)); + DBG_871X("dbg(0x280)=0x%x\n", rtw_read32(padapter, 0x280)); + DBG_871X("dbg(0x284)=0x%x\n", rtw_read32(padapter, 0x284)); + DBG_871X("dbg(0x288)=0x%x\n", rtw_read32(padapter, 0x288)); + + DBG_871X("dbg(0x664)=0x%x\n", rtw_read32(padapter, 0x664)); + + + DBG_871X("\n"); + + DBG_871X("dbg(0x430)=0x%x\n", rtw_read32(padapter, 0x430)); + DBG_871X("dbg(0x438)=0x%x\n", rtw_read32(padapter, 0x438)); + + DBG_871X("dbg(0x440)=0x%x\n", rtw_read32(padapter, 0x440)); + + DBG_871X("dbg(0x458)=0x%x\n", rtw_read32(padapter, 0x458)); + + DBG_871X("dbg(0x484)=0x%x\n", rtw_read32(padapter, 0x484)); + DBG_871X("dbg(0x488)=0x%x\n", rtw_read32(padapter, 0x488)); + + DBG_871X("dbg(0x444)=0x%x\n", rtw_read32(padapter, 0x444)); + DBG_871X("dbg(0x448)=0x%x\n", rtw_read32(padapter, 0x448)); + DBG_871X("dbg(0x44c)=0x%x\n", rtw_read32(padapter, 0x44c)); + DBG_871X("dbg(0x450)=0x%x\n", rtw_read32(padapter, 0x450)); + } + break; + } + break; + default: + DBG_871X("error dbg cmd!\n"); + break; + } + + + return ret; + +} + +static int wpa_set_param(struct net_device *dev, u8 name, u32 value) +{ + uint ret=0; + u32 flags; + _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); + + switch (name){ + case IEEE_PARAM_WPA_ENABLED: + + padapter->securitypriv.dot11AuthAlgrthm= dot11AuthAlgrthm_8021X; //802.1x + + //ret = ieee80211_wpa_enable(ieee, value); + + switch((value)&0xff) + { + case 1 : //WPA + padapter->securitypriv.ndisauthtype = Ndis802_11AuthModeWPAPSK; //WPA_PSK + padapter->securitypriv.ndisencryptstatus = Ndis802_11Encryption2Enabled; + break; + case 2: //WPA2 + padapter->securitypriv.ndisauthtype = Ndis802_11AuthModeWPA2PSK; //WPA2_PSK + padapter->securitypriv.ndisencryptstatus = Ndis802_11Encryption3Enabled; + break; + } + + RT_TRACE(_module_rtl871x_ioctl_os_c,_drv_info_,("wpa_set_param:padapter->securitypriv.ndisauthtype=%d\n", padapter->securitypriv.ndisauthtype)); + + break; + + case IEEE_PARAM_TKIP_COUNTERMEASURES: + //ieee->tkip_countermeasures=value; + break; + + case IEEE_PARAM_DROP_UNENCRYPTED: + { + /* HACK: + * + * wpa_supplicant calls set_wpa_enabled when the driver + * is loaded and unloaded, regardless of if WPA is being + * used. No other calls are made which can be used to + * determine if encryption will be used or not prior to + * association being expected. If encryption is not being + * used, drop_unencrypted is set to false, else true -- we + * can use this to determine if the CAP_PRIVACY_ON bit should + * be set. + */ + +#if 0 + struct ieee80211_security sec = { + .flags = SEC_ENABLED, + .enabled = value, + }; + ieee->drop_unencrypted = value; + /* We only change SEC_LEVEL for open mode. Others + * are set by ipw_wpa_set_encryption. + */ + if (!value) { + sec.flags |= SEC_LEVEL; + sec.level = SEC_LEVEL_0; + } + else { + sec.flags |= SEC_LEVEL; + sec.level = SEC_LEVEL_1; + } + if (ieee->set_security) + ieee->set_security(ieee->dev, &sec); +#endif + break; + + } + case IEEE_PARAM_PRIVACY_INVOKED: + + //ieee->privacy_invoked=value; + + break; + + case IEEE_PARAM_AUTH_ALGS: + + ret = wpa_set_auth_algs(dev, value); + + break; + + case IEEE_PARAM_IEEE_802_1X: + + //ieee->ieee802_1x=value; + + break; + + case IEEE_PARAM_WPAX_SELECT: + + // added for WPA2 mixed mode + //DBG_871X(KERN_WARNING "------------------------>wpax value = %x\n", value); + /* + spin_lock_irqsave(&ieee->wpax_suitlist_lock,flags); + ieee->wpax_type_set = 1; + ieee->wpax_type_notify = value; + spin_unlock_irqrestore(&ieee->wpax_suitlist_lock,flags); + */ + + break; + + default: + + + + ret = -EOPNOTSUPP; + + + break; + + } + + return ret; + +} + +static int wpa_mlme(struct net_device *dev, u32 command, u32 reason) +{ + int ret = 0; + _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); + + switch (command) + { + case IEEE_MLME_STA_DEAUTH: + + if(!rtw_set_802_11_disassociate(padapter)) + ret = -1; + + break; + + case IEEE_MLME_STA_DISASSOC: + + if(!rtw_set_802_11_disassociate(padapter)) + ret = -1; + + break; + + default: + ret = -EOPNOTSUPP; + break; + } + + return ret; + +} + +static int wpa_supplicant_ioctl(struct net_device *dev, struct iw_point *p) +{ + struct ieee_param *param; + uint ret=0; + + //down(&ieee->wx_sem); + + if (p->length < sizeof(struct ieee_param) || !p->pointer){ + ret = -EINVAL; + goto out; + } + + param = (struct ieee_param *)rtw_malloc(p->length); + if (param == NULL) + { + ret = -ENOMEM; + goto out; + } + + if (copy_from_user(param, p->pointer, p->length)) + { + rtw_mfree((u8*)param, p->length); + ret = -EFAULT; + goto out; + } + + switch (param->cmd) { + + case IEEE_CMD_SET_WPA_PARAM: + ret = wpa_set_param(dev, param->u.wpa_param.name, param->u.wpa_param.value); + break; + + case IEEE_CMD_SET_WPA_IE: + //ret = wpa_set_wpa_ie(dev, param, p->length); + ret = rtw_set_wpa_ie((_adapter *)rtw_netdev_priv(dev), (char*)param->u.wpa_ie.data, (u16)param->u.wpa_ie.len); + break; + + case IEEE_CMD_SET_ENCRYPTION: + ret = wpa_set_encryption(dev, param, p->length); + break; + + case IEEE_CMD_MLME: + ret = wpa_mlme(dev, param->u.mlme.command, param->u.mlme.reason_code); + break; + + default: + DBG_871X("Unknown WPA supplicant request: %d\n", param->cmd); + ret = -EOPNOTSUPP; + break; + + } + + if (ret == 0 && copy_to_user(p->pointer, param, p->length)) + ret = -EFAULT; + + rtw_mfree((u8 *)param, p->length); + +out: + + //up(&ieee->wx_sem); + + return ret; + +} + +#ifdef CONFIG_AP_MODE +static u8 set_pairwise_key(_adapter *padapter, struct sta_info *psta) +{ + struct cmd_obj* ph2c; + struct set_stakey_parm *psetstakey_para; + struct cmd_priv *pcmdpriv=&padapter->cmdpriv; + u8 res=_SUCCESS; + + ph2c = (struct cmd_obj*)rtw_zmalloc(sizeof(struct cmd_obj)); + if ( ph2c == NULL){ + res= _FAIL; + goto exit; + } + + psetstakey_para = (struct set_stakey_parm*)rtw_zmalloc(sizeof(struct set_stakey_parm)); + if(psetstakey_para==NULL){ + rtw_mfree((u8 *) ph2c, sizeof(struct cmd_obj)); + res=_FAIL; + goto exit; + } + + init_h2fwcmd_w_parm_no_rsp(ph2c, psetstakey_para, _SetStaKey_CMD_); + + + psetstakey_para->algorithm = (u8)psta->dot118021XPrivacy; + + _rtw_memcpy(psetstakey_para->addr, psta->hwaddr, ETH_ALEN); + + _rtw_memcpy(psetstakey_para->key, &psta->dot118021x_UncstKey, 16); + + + res = rtw_enqueue_cmd(pcmdpriv, ph2c); + +exit: + + return res; + +} + +static int set_group_key(_adapter *padapter, u8 *key, u8 alg, int keyid) +{ + u8 keylen; + struct cmd_obj* pcmd; + struct setkey_parm *psetkeyparm; + struct cmd_priv *pcmdpriv=&(padapter->cmdpriv); + int res=_SUCCESS; + + DBG_871X("%s\n", __FUNCTION__); + + pcmd = (struct cmd_obj*)rtw_zmalloc(sizeof(struct cmd_obj)); + if(pcmd==NULL){ + res= _FAIL; + goto exit; + } + psetkeyparm=(struct setkey_parm*)rtw_zmalloc(sizeof(struct setkey_parm)); + if(psetkeyparm==NULL){ + rtw_mfree((unsigned char *)pcmd, sizeof(struct cmd_obj)); + res= _FAIL; + goto exit; + } + + _rtw_memset(psetkeyparm, 0, sizeof(struct setkey_parm)); + + psetkeyparm->keyid=(u8)keyid; + if (is_wep_enc(alg)) + padapter->securitypriv.key_mask |= BIT(psetkeyparm->keyid); + + psetkeyparm->algorithm = alg; + + psetkeyparm->set_tx = 1; + + switch(alg) + { + case _WEP40_: + keylen = 5; + break; + case _WEP104_: + keylen = 13; + break; + case _TKIP_: + case _TKIP_WTMIC_: + case _AES_: + keylen = 16; + default: + keylen = 16; + } + + _rtw_memcpy(&(psetkeyparm->key[0]), key, keylen); + + pcmd->cmdcode = _SetKey_CMD_; + pcmd->parmbuf = (u8 *)psetkeyparm; + pcmd->cmdsz = (sizeof(struct setkey_parm)); + pcmd->rsp = NULL; + pcmd->rspsz = 0; + + + _rtw_init_listhead(&pcmd->list); + + res = rtw_enqueue_cmd(pcmdpriv, pcmd); + +exit: + + return res; + + +} + +static int set_wep_key(_adapter *padapter, u8 *key, u8 keylen, int keyid) +{ + u8 alg; + + switch(keylen) + { + case 5: + alg =_WEP40_; + break; + case 13: + alg =_WEP104_; + break; + default: + alg =_NO_PRIVACY_; + } + + return set_group_key(padapter, key, alg, keyid); + +} + + +static int rtw_set_encryption(struct net_device *dev, struct ieee_param *param, u32 param_len) +{ + int ret = 0; + u32 wep_key_idx, wep_key_len,wep_total_len; + NDIS_802_11_WEP *pwep = NULL; + struct sta_info *psta = NULL, *pbcmc_sta = NULL; + _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); + struct mlme_priv *pmlmepriv = &padapter->mlmepriv; + struct security_priv* psecuritypriv=&(padapter->securitypriv); + struct sta_priv *pstapriv = &padapter->stapriv; + + DBG_871X("%s\n", __FUNCTION__); + + param->u.crypt.err = 0; + param->u.crypt.alg[IEEE_CRYPT_ALG_NAME_LEN - 1] = '\0'; + + //sizeof(struct ieee_param) = 64 bytes; + //if (param_len != (u32) ((u8 *) param->u.crypt.key - (u8 *) param) + param->u.crypt.key_len) + if (param_len != sizeof(struct ieee_param) + param->u.crypt.key_len) + { + ret = -EINVAL; + goto exit; + } + + if (param->sta_addr[0] == 0xff && param->sta_addr[1] == 0xff && + param->sta_addr[2] == 0xff && param->sta_addr[3] == 0xff && + param->sta_addr[4] == 0xff && param->sta_addr[5] == 0xff) + { + if (param->u.crypt.idx >= WEP_KEYS) + { + ret = -EINVAL; + goto exit; + } + } + else + { + psta = rtw_get_stainfo(pstapriv, param->sta_addr); + if(!psta) + { + //ret = -EINVAL; + DBG_871X("rtw_set_encryption(), sta has already been removed or never been added\n"); + goto exit; + } + } + + if (strcmp(param->u.crypt.alg, "none") == 0 && (psta==NULL)) + { + //todo:clear default encryption keys + + DBG_871X("clear default encryption keys, keyid=%d\n", param->u.crypt.idx); + + goto exit; + } + + + if (strcmp(param->u.crypt.alg, "WEP") == 0 && (psta==NULL)) + { + DBG_871X("r871x_set_encryption, crypt.alg = WEP\n"); + + wep_key_idx = param->u.crypt.idx; + wep_key_len = param->u.crypt.key_len; + + DBG_871X("r871x_set_encryption, wep_key_idx=%d, len=%d\n", wep_key_idx, wep_key_len); + + if((wep_key_idx >= WEP_KEYS) || (wep_key_len<=0)) + { + ret = -EINVAL; + goto exit; + } + + + if (wep_key_len > 0) + { + wep_key_len = wep_key_len <= 5 ? 5 : 13; + wep_total_len = wep_key_len + FIELD_OFFSET(NDIS_802_11_WEP, KeyMaterial); + pwep =(NDIS_802_11_WEP *)rtw_malloc(wep_total_len); + if(pwep == NULL){ + DBG_871X(" r871x_set_encryption: pwep allocate fail !!!\n"); + goto exit; + } + + _rtw_memset(pwep, 0, wep_total_len); + + pwep->KeyLength = wep_key_len; + pwep->Length = wep_total_len; + + } + + pwep->KeyIndex = wep_key_idx; + + _rtw_memcpy(pwep->KeyMaterial, param->u.crypt.key, pwep->KeyLength); + + if(param->u.crypt.set_tx) + { + DBG_871X("wep, set_tx=1\n"); + + psecuritypriv->ndisencryptstatus = Ndis802_11Encryption1Enabled; + psecuritypriv->dot11PrivacyAlgrthm=_WEP40_; + psecuritypriv->dot118021XGrpPrivacy=_WEP40_; + + if(pwep->KeyLength==13) + { + psecuritypriv->dot11PrivacyAlgrthm=_WEP104_; + psecuritypriv->dot118021XGrpPrivacy=_WEP104_; + } + + + psecuritypriv->dot11PrivacyKeyIndex = wep_key_idx; + + _rtw_memcpy(&(psecuritypriv->dot11DefKey[wep_key_idx].skey[0]), pwep->KeyMaterial, pwep->KeyLength); + + psecuritypriv->dot11DefKeylen[wep_key_idx]=pwep->KeyLength; + + set_wep_key(padapter, pwep->KeyMaterial, pwep->KeyLength, wep_key_idx); + + + } + else + { + DBG_871X("wep, set_tx=0\n"); + + //don't update "psecuritypriv->dot11PrivacyAlgrthm" and + //"psecuritypriv->dot11PrivacyKeyIndex=keyid", but can rtw_set_key to cam + + _rtw_memcpy(&(psecuritypriv->dot11DefKey[wep_key_idx].skey[0]), pwep->KeyMaterial, pwep->KeyLength); + + psecuritypriv->dot11DefKeylen[wep_key_idx] = pwep->KeyLength; + + set_wep_key(padapter, pwep->KeyMaterial, pwep->KeyLength, wep_key_idx); + + } + + goto exit; + + } + + + if(!psta && check_fwstate(pmlmepriv, WIFI_AP_STATE)) // //group key + { + if(param->u.crypt.set_tx ==1) + { + if(strcmp(param->u.crypt.alg, "WEP") == 0) + { + DBG_871X("%s, set group_key, WEP\n", __FUNCTION__); + + _rtw_memcpy(psecuritypriv->dot118021XGrpKey[param->u.crypt.idx].skey, param->u.crypt.key, (param->u.crypt.key_len>16 ?16:param->u.crypt.key_len)); + + psecuritypriv->dot118021XGrpPrivacy = _WEP40_; + if(param->u.crypt.key_len==13) + { + psecuritypriv->dot118021XGrpPrivacy = _WEP104_; + } + + } + else if(strcmp(param->u.crypt.alg, "TKIP") == 0) + { + DBG_871X("%s, set group_key, TKIP\n", __FUNCTION__); + + psecuritypriv->dot118021XGrpPrivacy = _TKIP_; + + _rtw_memcpy(psecuritypriv->dot118021XGrpKey[param->u.crypt.idx].skey, param->u.crypt.key, (param->u.crypt.key_len>16 ?16:param->u.crypt.key_len)); + + //DEBUG_ERR("set key length :param->u.crypt.key_len=%d\n", param->u.crypt.key_len); + //set mic key + _rtw_memcpy(psecuritypriv->dot118021XGrptxmickey[param->u.crypt.idx].skey, &(param->u.crypt.key[16]), 8); + _rtw_memcpy(psecuritypriv->dot118021XGrprxmickey[param->u.crypt.idx].skey, &(param->u.crypt.key[24]), 8); + + psecuritypriv->busetkipkey = _TRUE; + + } + else if(strcmp(param->u.crypt.alg, "CCMP") == 0) + { + DBG_871X("%s, set group_key, CCMP\n", __FUNCTION__); + + psecuritypriv->dot118021XGrpPrivacy = _AES_; + + _rtw_memcpy(psecuritypriv->dot118021XGrpKey[param->u.crypt.idx].skey, param->u.crypt.key, (param->u.crypt.key_len>16 ?16:param->u.crypt.key_len)); + } + else + { + DBG_871X("%s, set group_key, none\n", __FUNCTION__); + + psecuritypriv->dot118021XGrpPrivacy = _NO_PRIVACY_; + } + + psecuritypriv->dot118021XGrpKeyid = param->u.crypt.idx; + + psecuritypriv->binstallGrpkey = _TRUE; + + psecuritypriv->dot11PrivacyAlgrthm = psecuritypriv->dot118021XGrpPrivacy;//!!! + + set_group_key(padapter, param->u.crypt.key, psecuritypriv->dot118021XGrpPrivacy, param->u.crypt.idx); + + pbcmc_sta=rtw_get_bcmc_stainfo(padapter); + if(pbcmc_sta) + { + pbcmc_sta->ieee8021x_blocked = _FALSE; + pbcmc_sta->dot118021XPrivacy= psecuritypriv->dot118021XGrpPrivacy;//rx will use bmc_sta's dot118021XPrivacy + } + + } + + goto exit; + + } + + if(psecuritypriv->dot11AuthAlgrthm == dot11AuthAlgrthm_8021X && psta) // psk/802_1x + { + if(check_fwstate(pmlmepriv, WIFI_AP_STATE)) + { + if(param->u.crypt.set_tx ==1) + { + _rtw_memcpy(psta->dot118021x_UncstKey.skey, param->u.crypt.key, (param->u.crypt.key_len>16 ?16:param->u.crypt.key_len)); + + if(strcmp(param->u.crypt.alg, "WEP") == 0) + { + DBG_871X("%s, set pairwise key, WEP\n", __FUNCTION__); + + psta->dot118021XPrivacy = _WEP40_; + if(param->u.crypt.key_len==13) + { + psta->dot118021XPrivacy = _WEP104_; + } + } + else if(strcmp(param->u.crypt.alg, "TKIP") == 0) + { + DBG_871X("%s, set pairwise key, TKIP\n", __FUNCTION__); + + psta->dot118021XPrivacy = _TKIP_; + + //DEBUG_ERR("set key length :param->u.crypt.key_len=%d\n", param->u.crypt.key_len); + //set mic key + _rtw_memcpy(psta->dot11tkiptxmickey.skey, &(param->u.crypt.key[16]), 8); + _rtw_memcpy(psta->dot11tkiprxmickey.skey, &(param->u.crypt.key[24]), 8); + + psecuritypriv->busetkipkey = _TRUE; + + } + else if(strcmp(param->u.crypt.alg, "CCMP") == 0) + { + + DBG_871X("%s, set pairwise key, CCMP\n", __FUNCTION__); + + psta->dot118021XPrivacy = _AES_; + } + else + { + DBG_871X("%s, set pairwise key, none\n", __FUNCTION__); + + psta->dot118021XPrivacy = _NO_PRIVACY_; + } + + set_pairwise_key(padapter, psta); + + psta->ieee8021x_blocked = _FALSE; + + } + else//group key??? + { + if(strcmp(param->u.crypt.alg, "WEP") == 0) + { + _rtw_memcpy(psecuritypriv->dot118021XGrpKey[param->u.crypt.idx].skey, param->u.crypt.key, (param->u.crypt.key_len>16 ?16:param->u.crypt.key_len)); + + psecuritypriv->dot118021XGrpPrivacy = _WEP40_; + if(param->u.crypt.key_len==13) + { + psecuritypriv->dot118021XGrpPrivacy = _WEP104_; + } + } + else if(strcmp(param->u.crypt.alg, "TKIP") == 0) + { + psecuritypriv->dot118021XGrpPrivacy = _TKIP_; + + _rtw_memcpy(psecuritypriv->dot118021XGrpKey[param->u.crypt.idx].skey, param->u.crypt.key, (param->u.crypt.key_len>16 ?16:param->u.crypt.key_len)); + + //DEBUG_ERR("set key length :param->u.crypt.key_len=%d\n", param->u.crypt.key_len); + //set mic key + _rtw_memcpy(psecuritypriv->dot118021XGrptxmickey[param->u.crypt.idx].skey, &(param->u.crypt.key[16]), 8); + _rtw_memcpy(psecuritypriv->dot118021XGrprxmickey[param->u.crypt.idx].skey, &(param->u.crypt.key[24]), 8); + + psecuritypriv->busetkipkey = _TRUE; + + } + else if(strcmp(param->u.crypt.alg, "CCMP") == 0) + { + psecuritypriv->dot118021XGrpPrivacy = _AES_; + + _rtw_memcpy(psecuritypriv->dot118021XGrpKey[param->u.crypt.idx].skey, param->u.crypt.key, (param->u.crypt.key_len>16 ?16:param->u.crypt.key_len)); + } + else + { + psecuritypriv->dot118021XGrpPrivacy = _NO_PRIVACY_; + } + + psecuritypriv->dot118021XGrpKeyid = param->u.crypt.idx; + + psecuritypriv->binstallGrpkey = _TRUE; + + psecuritypriv->dot11PrivacyAlgrthm = psecuritypriv->dot118021XGrpPrivacy;//!!! + + set_group_key(padapter, param->u.crypt.key, psecuritypriv->dot118021XGrpPrivacy, param->u.crypt.idx); + + pbcmc_sta=rtw_get_bcmc_stainfo(padapter); + if(pbcmc_sta) + { + pbcmc_sta->ieee8021x_blocked = _FALSE; + pbcmc_sta->dot118021XPrivacy= psecuritypriv->dot118021XGrpPrivacy;//rx will use bmc_sta's dot118021XPrivacy + } + + } + + } + + } + +exit: + + if(pwep) + { + rtw_mfree((u8 *)pwep,wep_total_len); + } + + return ret; + +} + +static int rtw_set_beacon(struct net_device *dev, struct ieee_param *param, int len) +{ + int ret=0; + _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); + struct mlme_priv *pmlmepriv = &(padapter->mlmepriv); + struct sta_priv *pstapriv = &padapter->stapriv; + unsigned char *pbuf = param->u.bcn_ie.buf; + + + DBG_871X("%s, len=%d\n", __FUNCTION__, len); + + if(check_fwstate(pmlmepriv, WIFI_AP_STATE) != _TRUE) + return -EINVAL; + + _rtw_memcpy(&pstapriv->max_num_sta, param->u.bcn_ie.reserved, 2); + + if((pstapriv->max_num_sta>NUM_STA) || (pstapriv->max_num_sta<=0)) + pstapriv->max_num_sta = NUM_STA; + + + if(rtw_check_beacon_data(padapter, pbuf, (len-12-2)) == _SUCCESS)// 12 = param header, 2:no packed + ret = 0; + else + ret = -EINVAL; + + + return ret; + +} + +static int rtw_hostapd_sta_flush(struct net_device *dev) +{ + //_irqL irqL; + //_list *phead, *plist; + int ret=0; + //struct sta_info *psta = NULL; + _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); + //struct sta_priv *pstapriv = &padapter->stapriv; + + DBG_871X("%s\n", __FUNCTION__); + + flush_all_cam_entry(padapter); //clear CAM + + ret = rtw_sta_flush(padapter); + + return ret; + +} + +static int rtw_add_sta(struct net_device *dev, struct ieee_param *param) +{ + _irqL irqL; + int ret=0; + struct sta_info *psta = NULL; + _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); + struct mlme_priv *pmlmepriv = &(padapter->mlmepriv); + struct sta_priv *pstapriv = &padapter->stapriv; + + DBG_871X("rtw_add_sta(aid=%d)=" MAC_FMT "\n", param->u.add_sta.aid, MAC_ARG(param->sta_addr)); + + if(check_fwstate(pmlmepriv, (_FW_LINKED|WIFI_AP_STATE)) != _TRUE) + { + return -EINVAL; + } + + if (param->sta_addr[0] == 0xff && param->sta_addr[1] == 0xff && + param->sta_addr[2] == 0xff && param->sta_addr[3] == 0xff && + param->sta_addr[4] == 0xff && param->sta_addr[5] == 0xff) + { + return -EINVAL; + } + +/* + psta = rtw_get_stainfo(pstapriv, param->sta_addr); + if(psta) + { + DBG_871X("rtw_add_sta(), free has been added psta=%p\n", psta); + _enter_critical_bh(&(pstapriv->sta_hash_lock), &irqL); + rtw_free_stainfo(padapter, psta); + _exit_critical_bh(&(pstapriv->sta_hash_lock), &irqL); + + psta = NULL; + } +*/ + //psta = rtw_alloc_stainfo(pstapriv, param->sta_addr); + psta = rtw_get_stainfo(pstapriv, param->sta_addr); + if(psta) + { + int flags = param->u.add_sta.flags; + + //DBG_871X("rtw_add_sta(), init sta's variables, psta=%p\n", psta); + + psta->aid = param->u.add_sta.aid;//aid=1~2007 + + _rtw_memcpy(psta->bssrateset, param->u.add_sta.tx_supp_rates, 16); + + + //check wmm cap. + if(WLAN_STA_WME&flags) + psta->qos_option = 1; + else + psta->qos_option = 0; + + if(pmlmepriv->qospriv.qos_option == 0) + psta->qos_option = 0; + + +#ifdef CONFIG_80211N_HT + //chec 802.11n ht cap. + if(WLAN_STA_HT&flags) + { + psta->htpriv.ht_option = _TRUE; + psta->qos_option = 1; + _rtw_memcpy((void*)&psta->htpriv.ht_cap, (void*)¶m->u.add_sta.ht_cap, sizeof(struct rtw_ieee80211_ht_cap)); + } + else + { + psta->htpriv.ht_option = _FALSE; + } + + if(pmlmepriv->htpriv.ht_option == _FALSE) + psta->htpriv.ht_option = _FALSE; +#endif + + + update_sta_info_apmode(padapter, psta); + + + } + else + { + ret = -ENOMEM; + } + + return ret; + +} + +static int rtw_del_sta(struct net_device *dev, struct ieee_param *param) +{ + _irqL irqL; + int ret=0; + struct sta_info *psta = NULL; + _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); + struct mlme_priv *pmlmepriv = &(padapter->mlmepriv); + struct sta_priv *pstapriv = &padapter->stapriv; + + DBG_871X("rtw_del_sta=" MAC_FMT "\n", MAC_ARG(param->sta_addr)); + + if(check_fwstate(pmlmepriv, (_FW_LINKED|WIFI_AP_STATE)) != _TRUE) + { + return -EINVAL; + } + + if (param->sta_addr[0] == 0xff && param->sta_addr[1] == 0xff && + param->sta_addr[2] == 0xff && param->sta_addr[3] == 0xff && + param->sta_addr[4] == 0xff && param->sta_addr[5] == 0xff) + { + return -EINVAL; + } + + psta = rtw_get_stainfo(pstapriv, param->sta_addr); + if(psta) + { + u8 updated=_FALSE; + + //DBG_871X("free psta=%p, aid=%d\n", psta, psta->aid); + + _enter_critical_bh(&pstapriv->asoc_list_lock, &irqL); + if(rtw_is_list_empty(&psta->asoc_list)==_FALSE) + { + rtw_list_delete(&psta->asoc_list); + pstapriv->asoc_list_cnt--; + updated = ap_free_sta(padapter, psta, _TRUE, WLAN_REASON_DEAUTH_LEAVING); + + } + _exit_critical_bh(&pstapriv->asoc_list_lock, &irqL); + + associated_clients_update(padapter, updated); + + psta = NULL; + + } + else + { + DBG_871X("rtw_del_sta(), sta has already been removed or never been added\n"); + + //ret = -1; + } + + + return ret; + +} + +static int rtw_ioctl_get_sta_data(struct net_device *dev, struct ieee_param *param, int len) +{ + int ret=0; + struct sta_info *psta = NULL; + _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); + struct mlme_priv *pmlmepriv = &(padapter->mlmepriv); + struct sta_priv *pstapriv = &padapter->stapriv; + struct ieee_param_ex *param_ex = (struct ieee_param_ex *)param; + struct sta_data *psta_data = (struct sta_data *)param_ex->data; + + DBG_871X("rtw_ioctl_get_sta_info, sta_addr: " MAC_FMT "\n", MAC_ARG(param_ex->sta_addr)); + + if(check_fwstate(pmlmepriv, (_FW_LINKED|WIFI_AP_STATE)) != _TRUE) + { + return -EINVAL; + } + + if (param_ex->sta_addr[0] == 0xff && param_ex->sta_addr[1] == 0xff && + param_ex->sta_addr[2] == 0xff && param_ex->sta_addr[3] == 0xff && + param_ex->sta_addr[4] == 0xff && param_ex->sta_addr[5] == 0xff) + { + return -EINVAL; + } + + psta = rtw_get_stainfo(pstapriv, param_ex->sta_addr); + if(psta) + { +#if 0 + struct { + u16 aid; + u16 capability; + int flags; + u32 sta_set; + u8 tx_supp_rates[16]; + u32 tx_supp_rates_len; + struct rtw_ieee80211_ht_cap ht_cap; + u64 rx_pkts; + u64 rx_bytes; + u64 rx_drops; + u64 tx_pkts; + u64 tx_bytes; + u64 tx_drops; + } get_sta; +#endif + psta_data->aid = (u16)psta->aid; + psta_data->capability = psta->capability; + psta_data->flags = psta->flags; + +/* + nonerp_set : BIT(0) + no_short_slot_time_set : BIT(1) + no_short_preamble_set : BIT(2) + no_ht_gf_set : BIT(3) + no_ht_set : BIT(4) + ht_20mhz_set : BIT(5) +*/ + + psta_data->sta_set =((psta->nonerp_set) | + (psta->no_short_slot_time_set <<1) | + (psta->no_short_preamble_set <<2) | + (psta->no_ht_gf_set <<3) | + (psta->no_ht_set <<4) | + (psta->ht_20mhz_set <<5)); + + psta_data->tx_supp_rates_len = psta->bssratelen; + _rtw_memcpy(psta_data->tx_supp_rates, psta->bssrateset, psta->bssratelen); + + _rtw_memcpy(&psta_data->ht_cap, &psta->htpriv.ht_cap, sizeof(struct rtw_ieee80211_ht_cap)); + + psta_data->rx_pkts = psta->sta_stats.rx_data_pkts; + psta_data->rx_bytes = psta->sta_stats.rx_bytes; + psta_data->rx_drops = psta->sta_stats.rx_drops; + + psta_data->tx_pkts = psta->sta_stats.tx_pkts; + psta_data->tx_bytes = psta->sta_stats.tx_bytes; + psta_data->tx_drops = psta->sta_stats.tx_drops; + + + } + else + { + ret = -1; + } + + return ret; + +} + +static int rtw_get_sta_wpaie(struct net_device *dev, struct ieee_param *param) +{ + int ret=0; + struct sta_info *psta = NULL; + _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); + struct mlme_priv *pmlmepriv = &(padapter->mlmepriv); + struct sta_priv *pstapriv = &padapter->stapriv; + + DBG_871X("rtw_get_sta_wpaie, sta_addr: " MAC_FMT "\n", MAC_ARG(param->sta_addr)); + + if(check_fwstate(pmlmepriv, (_FW_LINKED|WIFI_AP_STATE)) != _TRUE) + { + return -EINVAL; + } + + if (param->sta_addr[0] == 0xff && param->sta_addr[1] == 0xff && + param->sta_addr[2] == 0xff && param->sta_addr[3] == 0xff && + param->sta_addr[4] == 0xff && param->sta_addr[5] == 0xff) + { + return -EINVAL; + } + + psta = rtw_get_stainfo(pstapriv, param->sta_addr); + if(psta) + { + if((psta->wpa_ie[0] == WLAN_EID_RSN) || (psta->wpa_ie[0] == WLAN_EID_GENERIC)) + { + int wpa_ie_len; + int copy_len; + + wpa_ie_len = psta->wpa_ie[1]; + + copy_len = ((wpa_ie_len+2) > sizeof(psta->wpa_ie)) ? (sizeof(psta->wpa_ie)):(wpa_ie_len+2); + + param->u.wpa_ie.len = copy_len; + + _rtw_memcpy(param->u.wpa_ie.reserved, psta->wpa_ie, copy_len); + } + else + { + //ret = -1; + DBG_871X("sta's wpa_ie is NONE\n"); + } + } + else + { + ret = -1; + } + + return ret; + +} + +static int rtw_set_wps_beacon(struct net_device *dev, struct ieee_param *param, int len) +{ + int ret=0; + unsigned char wps_oui[4]={0x0,0x50,0xf2,0x04}; + _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); + struct mlme_priv *pmlmepriv = &(padapter->mlmepriv); + struct mlme_ext_priv *pmlmeext = &(padapter->mlmeextpriv); + struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info); + int ie_len; + + DBG_871X("%s, len=%d\n", __FUNCTION__, len); + + if(check_fwstate(pmlmepriv, WIFI_AP_STATE) != _TRUE) + return -EINVAL; + + ie_len = len-12-2;// 12 = param header, 2:no packed + + + if(pmlmepriv->wps_beacon_ie) + { + rtw_mfree(pmlmepriv->wps_beacon_ie, pmlmepriv->wps_beacon_ie_len); + pmlmepriv->wps_beacon_ie = NULL; + } + + if(ie_len>0) + { + pmlmepriv->wps_beacon_ie = rtw_malloc(ie_len); + pmlmepriv->wps_beacon_ie_len = ie_len; + if ( pmlmepriv->wps_beacon_ie == NULL) { + DBG_871X("%s()-%d: rtw_malloc() ERROR!\n", __FUNCTION__, __LINE__); + return -EINVAL; + } + + _rtw_memcpy(pmlmepriv->wps_beacon_ie, param->u.bcn_ie.buf, ie_len); + + update_beacon(padapter, _VENDOR_SPECIFIC_IE_, wps_oui, _TRUE); + + pmlmeext->bstart_bss = _TRUE; + + } + + + return ret; + +} + +static int rtw_set_wps_probe_resp(struct net_device *dev, struct ieee_param *param, int len) +{ + int ret=0; + _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); + struct mlme_priv *pmlmepriv = &(padapter->mlmepriv); + int ie_len; + + DBG_871X("%s, len=%d\n", __FUNCTION__, len); + + if(check_fwstate(pmlmepriv, WIFI_AP_STATE) != _TRUE) + return -EINVAL; + + ie_len = len-12-2;// 12 = param header, 2:no packed + + + if(pmlmepriv->wps_probe_resp_ie) + { + rtw_mfree(pmlmepriv->wps_probe_resp_ie, pmlmepriv->wps_probe_resp_ie_len); + pmlmepriv->wps_probe_resp_ie = NULL; + } + + if(ie_len>0) + { + pmlmepriv->wps_probe_resp_ie = rtw_malloc(ie_len); + pmlmepriv->wps_probe_resp_ie_len = ie_len; + if ( pmlmepriv->wps_probe_resp_ie == NULL) { + DBG_871X("%s()-%d: rtw_malloc() ERROR!\n", __FUNCTION__, __LINE__); + return -EINVAL; + } + _rtw_memcpy(pmlmepriv->wps_probe_resp_ie, param->u.bcn_ie.buf, ie_len); + } + + + return ret; + +} + +static int rtw_set_wps_assoc_resp(struct net_device *dev, struct ieee_param *param, int len) +{ + int ret=0; + _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); + struct mlme_priv *pmlmepriv = &(padapter->mlmepriv); + int ie_len; + + DBG_871X("%s, len=%d\n", __FUNCTION__, len); + + if(check_fwstate(pmlmepriv, WIFI_AP_STATE) != _TRUE) + return -EINVAL; + + ie_len = len-12-2;// 12 = param header, 2:no packed + + + if(pmlmepriv->wps_assoc_resp_ie) + { + rtw_mfree(pmlmepriv->wps_assoc_resp_ie, pmlmepriv->wps_assoc_resp_ie_len); + pmlmepriv->wps_assoc_resp_ie = NULL; + } + + if(ie_len>0) + { + pmlmepriv->wps_assoc_resp_ie = rtw_malloc(ie_len); + pmlmepriv->wps_assoc_resp_ie_len = ie_len; + if ( pmlmepriv->wps_assoc_resp_ie == NULL) { + DBG_871X("%s()-%d: rtw_malloc() ERROR!\n", __FUNCTION__, __LINE__); + return -EINVAL; + } + + _rtw_memcpy(pmlmepriv->wps_assoc_resp_ie, param->u.bcn_ie.buf, ie_len); + } + + + return ret; + +} + +static int rtw_set_hidden_ssid(struct net_device *dev, struct ieee_param *param, int len) +{ + int ret=0; + _adapter *adapter = (_adapter *)rtw_netdev_priv(dev); + struct mlme_priv *mlmepriv = &(adapter->mlmepriv); + struct mlme_ext_priv *mlmeext = &(adapter->mlmeextpriv); + struct mlme_ext_info *mlmeinfo = &(mlmeext->mlmext_info); + int ie_len; + u8 *ssid_ie; + char ssid[NDIS_802_11_LENGTH_SSID + 1]; + sint ssid_len; + u8 ignore_broadcast_ssid; + + if(check_fwstate(mlmepriv, WIFI_AP_STATE) != _TRUE) + return -EPERM; + + if (param->u.bcn_ie.reserved[0] != 0xea) + return -EINVAL; + + mlmeinfo->hidden_ssid_mode = ignore_broadcast_ssid = param->u.bcn_ie.reserved[1]; + + ie_len = len-12-2;// 12 = param header, 2:no packed + ssid_ie = rtw_get_ie(param->u.bcn_ie.buf, WLAN_EID_SSID, &ssid_len, ie_len); + + if (ssid_ie && ssid_len) { + WLAN_BSSID_EX *pbss_network = &mlmepriv->cur_network.network; + WLAN_BSSID_EX *pbss_network_ext = &mlmeinfo->network; + + _rtw_memcpy(ssid, ssid_ie+2, ssid_len); + ssid[ssid_len>NDIS_802_11_LENGTH_SSID?NDIS_802_11_LENGTH_SSID:ssid_len] = 0x0; + + if(0) + DBG_871X(FUNC_ADPT_FMT" ssid:(%s,%d), from ie:(%s,%d), (%s,%d)\n", FUNC_ADPT_ARG(adapter), + ssid, ssid_len, + pbss_network->Ssid.Ssid, pbss_network->Ssid.SsidLength, + pbss_network_ext->Ssid.Ssid, pbss_network_ext->Ssid.SsidLength); + + _rtw_memcpy(pbss_network->Ssid.Ssid, (void *)ssid, ssid_len); + pbss_network->Ssid.SsidLength = ssid_len; + _rtw_memcpy(pbss_network_ext->Ssid.Ssid, (void *)ssid, ssid_len); + pbss_network_ext->Ssid.SsidLength = ssid_len; + + if(0) + DBG_871X(FUNC_ADPT_FMT" after ssid:(%s,%d), (%s,%d)\n", FUNC_ADPT_ARG(adapter), + pbss_network->Ssid.Ssid, pbss_network->Ssid.SsidLength, + pbss_network_ext->Ssid.Ssid, pbss_network_ext->Ssid.SsidLength); + } + + DBG_871X(FUNC_ADPT_FMT" ignore_broadcast_ssid:%d, %s,%d\n", FUNC_ADPT_ARG(adapter), + ignore_broadcast_ssid, ssid, ssid_len); + + return ret; +} + +static int rtw_ioctl_acl_remove_sta(struct net_device *dev, struct ieee_param *param, int len) +{ + int ret=0; + _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); + struct mlme_priv *pmlmepriv = &(padapter->mlmepriv); + + if(check_fwstate(pmlmepriv, WIFI_AP_STATE) != _TRUE) + return -EINVAL; + + if (param->sta_addr[0] == 0xff && param->sta_addr[1] == 0xff && + param->sta_addr[2] == 0xff && param->sta_addr[3] == 0xff && + param->sta_addr[4] == 0xff && param->sta_addr[5] == 0xff) + { + return -EINVAL; + } + + ret = rtw_acl_remove_sta(padapter, param->sta_addr); + + return ret; + +} + +static int rtw_ioctl_acl_add_sta(struct net_device *dev, struct ieee_param *param, int len) +{ + int ret=0; + _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); + struct mlme_priv *pmlmepriv = &(padapter->mlmepriv); + + if(check_fwstate(pmlmepriv, WIFI_AP_STATE) != _TRUE) + return -EINVAL; + + if (param->sta_addr[0] == 0xff && param->sta_addr[1] == 0xff && + param->sta_addr[2] == 0xff && param->sta_addr[3] == 0xff && + param->sta_addr[4] == 0xff && param->sta_addr[5] == 0xff) + { + return -EINVAL; + } + + ret = rtw_acl_add_sta(padapter, param->sta_addr); + + return ret; + +} + +static int rtw_ioctl_set_macaddr_acl(struct net_device *dev, struct ieee_param *param, int len) +{ + int ret=0; + _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); + struct mlme_priv *pmlmepriv = &(padapter->mlmepriv); + + if(check_fwstate(pmlmepriv, WIFI_AP_STATE) != _TRUE) + return -EINVAL; + + rtw_set_macaddr_acl(padapter, param->u.mlme.command); + + return ret; +} + +static int rtw_hostapd_ioctl(struct net_device *dev, struct iw_point *p) +{ + struct ieee_param *param; + int ret=0; + _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); + + //DBG_871X("%s\n", __FUNCTION__); + + /* + * this function is expect to call in master mode, which allows no power saving + * so, we just check hw_init_completed instead of call rfpwrstate_check() + */ + + if (padapter->hw_init_completed==_FALSE){ + ret = -EPERM; + goto out; + } + + + //if (p->length < sizeof(struct ieee_param) || !p->pointer){ + if(!p->pointer){ + ret = -EINVAL; + goto out; + } + + param = (struct ieee_param *)rtw_malloc(p->length); + if (param == NULL) + { + ret = -ENOMEM; + goto out; + } + + if (copy_from_user(param, p->pointer, p->length)) + { + rtw_mfree((u8*)param, p->length); + ret = -EFAULT; + goto out; + } + + //DBG_871X("%s, cmd=%d\n", __FUNCTION__, param->cmd); + + switch (param->cmd) + { + case RTL871X_HOSTAPD_FLUSH: + + ret = rtw_hostapd_sta_flush(dev); + + break; + + case RTL871X_HOSTAPD_ADD_STA: + + ret = rtw_add_sta(dev, param); + + break; + + case RTL871X_HOSTAPD_REMOVE_STA: + + ret = rtw_del_sta(dev, param); + + break; + + case RTL871X_HOSTAPD_SET_BEACON: + + ret = rtw_set_beacon(dev, param, p->length); + + break; + + case RTL871X_SET_ENCRYPTION: + + ret = rtw_set_encryption(dev, param, p->length); + + break; + + case RTL871X_HOSTAPD_GET_WPAIE_STA: + + ret = rtw_get_sta_wpaie(dev, param); + + break; + + case RTL871X_HOSTAPD_SET_WPS_BEACON: + + ret = rtw_set_wps_beacon(dev, param, p->length); + + break; + + case RTL871X_HOSTAPD_SET_WPS_PROBE_RESP: + + ret = rtw_set_wps_probe_resp(dev, param, p->length); + + break; + + case RTL871X_HOSTAPD_SET_WPS_ASSOC_RESP: + + ret = rtw_set_wps_assoc_resp(dev, param, p->length); + + break; + + case RTL871X_HOSTAPD_SET_HIDDEN_SSID: + + ret = rtw_set_hidden_ssid(dev, param, p->length); + + break; + + case RTL871X_HOSTAPD_GET_INFO_STA: + + ret = rtw_ioctl_get_sta_data(dev, param, p->length); + + break; + + case RTL871X_HOSTAPD_SET_MACADDR_ACL: + + ret = rtw_ioctl_set_macaddr_acl(dev, param, p->length); + + break; + + case RTL871X_HOSTAPD_ACL_ADD_STA: + + ret = rtw_ioctl_acl_add_sta(dev, param, p->length); + + break; + + case RTL871X_HOSTAPD_ACL_REMOVE_STA: + + ret = rtw_ioctl_acl_remove_sta(dev, param, p->length); + + break; + + default: + DBG_871X("Unknown hostapd request: %d\n", param->cmd); + ret = -EOPNOTSUPP; + break; + + } + + if (ret == 0 && copy_to_user(p->pointer, param, p->length)) + ret = -EFAULT; + + + rtw_mfree((u8 *)param, p->length); + +out: + + return ret; + +} +#endif + +#include +static int rtw_wx_set_priv(struct net_device *dev, + struct iw_request_info *info, + union iwreq_data *awrq, + char *extra) +{ + +#ifdef CONFIG_DEBUG_RTW_WX_SET_PRIV + char *ext_dbg; +#endif + + int ret = 0; + int len = 0; + char *ext; + int i; + + _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); + struct iw_point *dwrq = (struct iw_point*)awrq; + + //RT_TRACE(_module_rtl871x_ioctl_os_c, _drv_notice_, ("+rtw_wx_set_priv\n")); + if(dwrq->length == 0) + return -EFAULT; + len = dwrq->length; + if (!(ext = rtw_vmalloc(len))) + return -ENOMEM; + + if (copy_from_user(ext, dwrq->pointer, len)) { + rtw_vmfree(ext, len); + return -EFAULT; + } + + + //RT_TRACE(_module_rtl871x_ioctl_os_c, _drv_notice_, + // ("rtw_wx_set_priv: %s req=%s\n", + // dev->name, ext)); + + #ifdef CONFIG_DEBUG_RTW_WX_SET_PRIV + if (!(ext_dbg = rtw_vmalloc(len))) + { + rtw_vmfree(ext, len); + return -ENOMEM; + } + + _rtw_memcpy(ext_dbg, ext, len); + #endif + + //added for wps2.0 @20110524 + if(dwrq->flags == 0x8766 && len > 8) + { + u32 cp_sz; + struct mlme_priv *pmlmepriv = &(padapter->mlmepriv); + u8 *probereq_wpsie = ext; + int probereq_wpsie_len = len; + u8 wps_oui[4]={0x0,0x50,0xf2,0x04}; + + if((_VENDOR_SPECIFIC_IE_ == probereq_wpsie[0]) && + (_rtw_memcmp(&probereq_wpsie[2], wps_oui, 4) ==_TRUE)) + { + cp_sz = probereq_wpsie_len>MAX_WPS_IE_LEN ? MAX_WPS_IE_LEN:probereq_wpsie_len; + + //_rtw_memcpy(pmlmepriv->probereq_wpsie, probereq_wpsie, cp_sz); + //pmlmepriv->probereq_wpsie_len = cp_sz; + + printk("probe_req_wps_ielen=%d\n", cp_sz); + + if(pmlmepriv->wps_probe_req_ie) + { + u32 free_len = pmlmepriv->wps_probe_req_ie_len; + pmlmepriv->wps_probe_req_ie_len = 0; + rtw_mfree(pmlmepriv->wps_probe_req_ie, free_len); + pmlmepriv->wps_probe_req_ie = NULL; + } + + pmlmepriv->wps_probe_req_ie = rtw_malloc(cp_sz); + if ( pmlmepriv->wps_probe_req_ie == NULL) { + printk("%s()-%d: rtw_malloc() ERROR!\n", __FUNCTION__, __LINE__); + ret = -EINVAL; + goto FREE_EXT; + + } + + _rtw_memcpy(pmlmepriv->wps_probe_req_ie, probereq_wpsie, cp_sz); + pmlmepriv->wps_probe_req_ie_len = cp_sz; + + } + + goto FREE_EXT; + + } + + if( len >= WEXT_CSCAN_HEADER_SIZE + && _rtw_memcmp(ext, WEXT_CSCAN_HEADER, WEXT_CSCAN_HEADER_SIZE) == _TRUE + ){ + ret = rtw_wx_set_scan(dev, info, awrq, ext); + goto FREE_EXT; + } + +#ifdef CONFIG_ANDROID + //DBG_871X("rtw_wx_set_priv: %s req=%s\n", dev->name, ext); + + i = rtw_android_cmdstr_to_num(ext); + + switch(i) { + case ANDROID_WIFI_CMD_START : + indicate_wx_custom_event(padapter, "START"); + break; + case ANDROID_WIFI_CMD_STOP : + indicate_wx_custom_event(padapter, "STOP"); + break; + case ANDROID_WIFI_CMD_RSSI : + { + struct mlme_priv *pmlmepriv = &(padapter->mlmepriv); + struct wlan_network *pcur_network = &pmlmepriv->cur_network; + + if(check_fwstate(pmlmepriv, _FW_LINKED) == _TRUE) { + sprintf(ext, "%s rssi %d", pcur_network->network.Ssid.Ssid, padapter->recvpriv.rssi); + } else { + sprintf(ext, "OK"); + } + } + break; + case ANDROID_WIFI_CMD_LINKSPEED : + { + u16 mbps = rtw_get_cur_max_rate(padapter)/10; + sprintf(ext, "LINKSPEED %d", mbps); + } + break; + case ANDROID_WIFI_CMD_MACADDR : + sprintf(ext, "MACADDR = " MAC_FMT, MAC_ARG(dev->dev_addr)); + break; + case ANDROID_WIFI_CMD_SCAN_ACTIVE : + { + //rtw_set_scan_mode(padapter, SCAN_ACTIVE); + sprintf(ext, "OK"); + } + break; + case ANDROID_WIFI_CMD_SCAN_PASSIVE : + { + //rtw_set_scan_mode(padapter, SCAN_PASSIVE); + sprintf(ext, "OK"); + } + break; + + case ANDROID_WIFI_CMD_COUNTRY : + { + char country_code[10]; + sscanf(ext, "%*s %s", country_code); + rtw_set_country(padapter, country_code); + sprintf(ext, "OK"); + } + break; + default : + #ifdef CONFIG_DEBUG_RTW_WX_SET_PRIV + DBG_871X("%s: %s unknowned req=%s\n", __FUNCTION__, + dev->name, ext_dbg); + #endif + + sprintf(ext, "OK"); + + } + + if (copy_to_user(dwrq->pointer, ext, min(dwrq->length, (u16)(strlen(ext)+1)) ) ) + ret = -EFAULT; + + #ifdef CONFIG_DEBUG_RTW_WX_SET_PRIV + DBG_871X("%s: %s req=%s rep=%s dwrq->length=%d, strlen(ext)+1=%d\n", __FUNCTION__, + dev->name, ext_dbg ,ext, dwrq->length, (u16)(strlen(ext)+1)); + #endif +#endif //end of CONFIG_ANDROID + + +FREE_EXT: + + rtw_vmfree(ext, len); + #ifdef CONFIG_DEBUG_RTW_WX_SET_PRIV + rtw_vmfree(ext_dbg, len); + #endif + + //DBG_871X("rtw_wx_set_priv: (SIOCSIWPRIV) %s ret=%d\n", + // dev->name, ret); + + return ret; + +} + +static int rtw_mp_efuse_get(struct net_device *dev, + struct iw_request_info *info, + union iwreq_data *wdata, char *extra) +{ + struct iw_point *wrqu = (struct iw_point *)wdata; + PADAPTER padapter = rtw_netdev_priv(dev); + struct mp_priv *pmp_priv; + + int i,j =0; + u8 data[EFUSE_MAP_SIZE]; + u8 rawdata[EFUSE_MAX_SIZE]; + u16 mapLen=0; + char *pch, *ptmp, *token, *tmp[3]={0x00,0x00,0x00}; + u16 addr = 0, cnts = 0, max_available_size = 0,raw_cursize = 0 ,raw_maxsize = 0; + + _rtw_memset(data, '\0', sizeof(data)); + _rtw_memset(rawdata, '\0', sizeof(rawdata)); + + if (copy_from_user(extra, wrqu->pointer, wrqu->length)) + return -EFAULT; + + pch = extra; + DBG_871X("%s: in=%s\n", __func__, extra); + + i=0; + //mac 16 "00e04c871200" rmap,00,2 + while ( (token = strsep (&pch,",") )!=NULL ) + { + if(i>2) break; + tmp[i] = token; + i++; + } + + if ( strcmp(tmp[0],"realmap") == 0 ) { + + DBG_871X("strcmp OK = %s \n" ,tmp[0]); + + mapLen = EFUSE_MAP_SIZE; + + if (rtw_efuse_map_read(padapter, 0, mapLen, data) == _SUCCESS){ + DBG_871X("\t rtw_efuse_map_read \n"); + }else { + DBG_871X("\t rtw_efuse_map_read : Fail \n"); + return -EFAULT; + } + _rtw_memset(extra, '\0', sizeof(extra)); + DBG_871X("\tOFFSET\tVALUE(hex)\n"); + sprintf(extra, "%s \n", extra); + for ( i = 0; i < EFUSE_MAP_SIZE; i += 16 ) + { + DBG_871X("\t0x%02x\t", i); + sprintf(extra, "%s \t0x%02x\t", extra,i); + for (j = 0; j < 8; j++) + { + DBG_871X("%02X ", data[i+j]); + sprintf(extra, "%s %02X", extra, data[i+j]); + } + DBG_871X("\t"); + sprintf(extra,"%s\t",extra); + for (; j < 16; j++){ + DBG_871X("%02X ", data[i+j]); + sprintf(extra, "%s %02X", extra, data[i+j]); + } + DBG_871X("\n"); + sprintf(extra,"%s\n",extra); + } + DBG_871X("\n"); + wrqu->length = strlen(extra); + + return 0; + } + else if ( strcmp(tmp[0],"rmap") == 0 ) { + if ( tmp[1]==NULL || tmp[2]==NULL ) return -EINVAL; + // rmap addr cnts + addr = simple_strtoul(tmp[1], &ptmp, 16); + + DBG_871X("addr = %x \n" ,addr); + + cnts=simple_strtoul(tmp[2], &ptmp,10); + if(cnts==0) return -EINVAL; + + DBG_871X("cnts = %d \n" ,cnts); + //_rtw_memset(extra, '\0', wrqu->data.length); + + EFUSE_GetEfuseDefinition(padapter, EFUSE_WIFI, TYPE_AVAILABLE_EFUSE_BYTES_TOTAL, (PVOID)&max_available_size, _FALSE); + if ((addr + cnts) > max_available_size) { + DBG_871X("(addr + cnts parameter error \n"); + return -EFAULT; + } + + if (rtw_efuse_map_read(padapter, addr, cnts, data) == _FAIL) + { + DBG_871X("rtw_efuse_access error \n"); + } + else{ + DBG_871X("rtw_efuse_access ok \n"); + } + + _rtw_memset(extra, '\0', sizeof(extra)); + for ( i = 0; i < cnts; i ++) { + DBG_871X("0x%02x", data[i]); + sprintf(extra, "%s 0x%02X", extra, data[i]); + DBG_871X(" "); + sprintf(extra,"%s ",extra); + } + + wrqu->length = strlen(extra)+1; + + DBG_871X("extra = %s ", extra); + + return 0; + } + else if ( strcmp(tmp[0],"realraw") == 0 ) { + addr=0; + mapLen = EFUSE_MAX_SIZE; + + if (rtw_efuse_access(padapter, _FALSE, addr, mapLen, rawdata) == _FAIL) + { + DBG_871X("\t rtw_efuse_map_read : Fail \n"); + return -EFAULT; + } else + { + DBG_871X("\t rtw_efuse_access raw ok \n"); + } + + _rtw_memset(extra, '\0', sizeof(extra)); + for ( i=0; ilength = strlen(extra); + return 0; + } + else if ( strcmp(tmp[0],"mac") == 0 ) { + if ( tmp[1]==NULL || tmp[2]==NULL ) return -EINVAL; + #ifdef CONFIG_RTL8192C + addr = 0x16; + cnts = 6; + #endif + #ifdef CONFIG_RTL8192D + addr = 0x19; + cnts = 6; + #endif + EFUSE_GetEfuseDefinition(padapter, EFUSE_WIFI, TYPE_AVAILABLE_EFUSE_BYTES_TOTAL, (PVOID)&max_available_size, _FALSE); + if ((addr + mapLen) > max_available_size) { + DBG_871X("(addr + cnts parameter error \n"); + return -EFAULT; + } + if (rtw_efuse_map_read(padapter, addr, cnts, data) == _FAIL) + { + DBG_871X("rtw_efuse_access error \n"); + } + else{ + DBG_871X("rtw_efuse_access ok \n"); + } + _rtw_memset(extra, '\0', sizeof(extra)); + for ( i = 0; i < cnts; i ++) { + DBG_871X("0x%02x", data[i]); + sprintf(extra, "%s 0x%02X", extra, data[i+j]); + DBG_871X(" "); + sprintf(extra,"%s ",extra); + } + wrqu->length = strlen(extra); + return 0; + } + else if ( strcmp(tmp[0],"vidpid") == 0 ) { + if ( tmp[1]==NULL || tmp[2]==NULL ) return -EINVAL; + #ifdef CONFIG_RTL8192C + addr=0x0a; + #endif + #ifdef CONFIG_RTL8192D + addr = 0x0c; + #endif + cnts = 4; + EFUSE_GetEfuseDefinition(padapter, EFUSE_WIFI, TYPE_AVAILABLE_EFUSE_BYTES_TOTAL, (PVOID)&max_available_size, _FALSE); + if ((addr + mapLen) > max_available_size) { + DBG_871X("(addr + cnts parameter error \n"); + return -EFAULT; + } + if (rtw_efuse_map_read(padapter, addr, cnts, data) == _FAIL) + { + DBG_871X("rtw_efuse_access error \n"); + } + else{ + DBG_871X("rtw_efuse_access ok \n"); + } + _rtw_memset(extra, '\0', sizeof(extra)); + for ( i = 0; i < cnts; i ++) { + DBG_871X("0x%02x", data[i]); + sprintf(extra, "%s 0x%02X", extra, data[i+j]); + DBG_871X(" "); + sprintf(extra,"%s ",extra); + } + wrqu->length = strlen(extra); + return 0; + } + else if ( strcmp(tmp[0],"ableraw") == 0 ) { + efuse_GetCurrentSize(padapter,&raw_cursize); + raw_maxsize = efuse_GetMaxSize(padapter); + sprintf(extra, "%s : [ available raw size] = %d",extra,raw_maxsize-raw_cursize); + wrqu->length = strlen(extra); + + return 0; + }else + { + sprintf(extra, "%s : Command not found\n",extra); + wrqu->length = strlen(extra); + return 0; + } + + return 0; +} + +static int rtw_mp_efuse_set(struct net_device *dev, + struct iw_request_info *info, + union iwreq_data *wdata, char *extra) +{ + struct iw_point *wrqu = (struct iw_point *)wdata; + PADAPTER padapter = rtw_netdev_priv(dev); + + u8 buffer[40]; + u32 i,jj,kk; + u8 setdata[EFUSE_MAP_SIZE]; + u8 setrawdata[EFUSE_MAX_SIZE]; + char *pch, *ptmp, *token, *edata,*tmp[3]={0x00,0x00,0x00}; + + u16 addr = 0, max_available_size = 0; + u32 cnts = 0; + + pch = extra; + DBG_871X("%s: in=%s\n", __func__, extra); + + i=0; + while ( (token = strsep (&pch,",") )!=NULL ) + { + if(i>2) break; + tmp[i] = token; + i++; + } + + // tmp[0],[1],[2] + // wmap,addr,00e04c871200 + if ( strcmp(tmp[0],"wmap") == 0 ) { + if ( tmp[1]==NULL || tmp[2]==NULL ) return -EINVAL; + if ( ! strlen( tmp[2] )/2 > 1 ) return -EFAULT; + + addr = simple_strtoul( tmp[1], &ptmp, 16 ); + addr = addr & 0xFF; + DBG_871X("addr = %x \n" ,addr); + + cnts = strlen( tmp[2] )/2; + if ( cnts == 0) return -EFAULT; + + DBG_871X("cnts = %d \n" ,cnts); + DBG_871X("target data = %s \n" ,tmp[2]); + + for( jj = 0, kk = 0; jj < cnts; jj++, kk += 2 ) + { + setdata[jj] = key_2char2num( tmp[2][kk], tmp[2][kk+ 1] ); + } + + EFUSE_GetEfuseDefinition(padapter, EFUSE_WIFI, TYPE_AVAILABLE_EFUSE_BYTES_TOTAL, (PVOID)&max_available_size, _FALSE); + + if ((addr + cnts) > max_available_size) { + DBG_871X("parameter error \n"); + return -EFAULT; + } + if (rtw_efuse_map_write(padapter, addr, cnts, setdata) == _FAIL) { + DBG_871X("rtw_efuse_map_write error \n"); + return -EFAULT; + } else + DBG_871X("rtw_efuse_map_write ok \n"); + + return 0; + } + else if ( strcmp(tmp[0],"wraw") == 0 ) { + if ( tmp[1]==NULL || tmp[2]==NULL ) return -EINVAL; + if ( ! strlen( tmp[2] )/2 > 1 ) return -EFAULT; + addr = simple_strtoul( tmp[1], &ptmp, 16 ); + addr = addr & 0xFF; + DBG_871X("addr = %x \n" ,addr); + + cnts=strlen( tmp[2] )/2; + if ( cnts == 0) return -EFAULT; + + DBG_871X(" cnts = %d \n" ,cnts ); + DBG_871X("target data = %s \n" ,tmp[2] ); + + for( jj = 0, kk = 0; jj < cnts; jj++, kk += 2 ) + { + setrawdata[jj] = key_2char2num( tmp[2][kk], tmp[2][kk+ 1] ); + } + + if ( rtw_efuse_access( padapter, _TRUE, addr, cnts, setrawdata ) == _FAIL ){ + DBG_871X("\t rtw_efuse_map_read : Fail \n"); + return -EFAULT; + } else + DBG_871X("\t rtw_efuse_access raw ok \n"); + + return 0; + } + else if ( strcmp(tmp[0],"mac") == 0 ) { + if ( tmp[1]==NULL || tmp[2]==NULL ) return -EINVAL; + //mac,00e04c871200 + #ifdef CONFIG_RTL8192C + addr = 0x16; + #endif + #ifdef CONFIG_RTL8192D + addr = 0x19; + #endif + cnts = strlen( tmp[1] )/2; + if ( cnts == 0) return -EFAULT; + if ( cnts > 6 ){ + DBG_871X("error data for mac addr = %s \n" ,tmp[1]); + return -EFAULT; + } + + DBG_871X("target data = %s \n" ,tmp[1]); + + for( jj = 0, kk = 0; jj < cnts; jj++, kk += 2 ) + { + setdata[jj] = key_2char2num(tmp[1][kk], tmp[1][kk+ 1]); + } + + EFUSE_GetEfuseDefinition(padapter, EFUSE_WIFI, TYPE_AVAILABLE_EFUSE_BYTES_TOTAL, (PVOID)&max_available_size, _FALSE); + + if ((addr + cnts) > max_available_size) { + DBG_871X("parameter error \n"); + return -EFAULT; + } + if ( rtw_efuse_map_write(padapter, addr, cnts, setdata) == _FAIL ) { + DBG_871X("rtw_efuse_map_write error \n"); + return -EFAULT; + } else + DBG_871X("rtw_efuse_map_write ok \n"); + + return 0; + } + else if ( strcmp(tmp[0],"vidpid") == 0 ) { + if ( tmp[1]==NULL || tmp[2]==NULL ) return -EINVAL; + // pidvid,da0b7881 + #ifdef CONFIG_RTL8192C + addr=0x0a; + #endif + #ifdef CONFIG_RTL8192D + addr = 0x0c; + #endif + + cnts=strlen( tmp[1] )/2; + if ( cnts == 0) return -EFAULT; + DBG_871X("target data = %s \n" ,tmp[1]); + + for( jj = 0, kk = 0; jj < cnts; jj++, kk += 2 ) + { + setdata[jj] = key_2char2num(tmp[1][kk], tmp[1][kk+ 1]); + } + + EFUSE_GetEfuseDefinition(padapter, EFUSE_WIFI, TYPE_AVAILABLE_EFUSE_BYTES_TOTAL, (PVOID)&max_available_size, _FALSE); + + if ((addr + cnts) > max_available_size) { + DBG_871X("parameter error \n"); + return -EFAULT; + } + + if ( rtw_efuse_map_write(padapter, addr, cnts, setdata) == _FAIL ) { + DBG_871X("rtw_efuse_map_write error \n"); + return -EFAULT; + } else + DBG_871X("rtw_efuse_map_write ok \n"); + + return 0; + } + else{ + DBG_871X("Command not found\n"); + return 0; + } + + return 0; +} + + + +#if defined(CONFIG_MP_INCLUDED) && defined(CONFIG_MP_IWPRIV_SUPPORT) + +/* + * Input Format: %s,%d,%d + * %s is width, could be + * "b" for 1 byte + * "w" for WORD (2 bytes) + * "dw" for DWORD (4 bytes) + * 1st %d is address(offset) + * 2st %d is data to write + */ +static int rtw_mp_write_reg(struct net_device *dev, + struct iw_request_info *info, + struct iw_point *wrqu, char *extra) +{ + char *pch, *pnext, *ptmp; + char *width_str; + char width; + u32 addr, data; + int ret; + PADAPTER padapter = rtw_netdev_priv(dev); + + + pch = extra; + pnext = strpbrk(pch, " ,.-"); + if (pnext == NULL) return -EINVAL; + *pnext = 0; + width_str = pch; + + pch = pnext + 1; + pnext = strpbrk(pch, " ,.-"); + if (pnext == NULL) return -EINVAL; + *pnext = 0; + addr = simple_strtoul(pch, &ptmp, 16); + if (addr > 0x3FFF) return -EINVAL; + + pch = pnext + 1; + if ((pch - extra) >= wrqu->length) return -EINVAL; + data = simple_strtoul(pch, &ptmp, 16); + + ret = 0; + width = width_str[0]; + switch (width) { + case 'b': + // 1 byte + if (data > 0xFF) { + ret = -EINVAL; + break; + } + rtw_write8(padapter, addr, data); + break; + case 'w': + // 2 bytes + if (data > 0xFFFF) { + ret = -EINVAL; + break; + } + rtw_write16(padapter, addr, data); + break; + case 'd': + // 4 bytes + rtw_write32(padapter, addr, data); + break; + default: + ret = -EINVAL; + break; + } + + return ret; +} + +/* + * Input Format: %s,%d + * %s is width, could be + * "b" for 1 byte + * "w" for WORD (2 bytes) + * "dw" for DWORD (4 bytes) + * %d is address(offset) + * + * Return: + * %d for data readed + */ +static int rtw_mp_read_reg(struct net_device *dev, + struct iw_request_info *info, + struct iw_point *wrqu, char *extra) +{ + char input[wrqu->length]; + char *pch, *pnext, *ptmp; + char *width_str; + char width; + char data[20],tmp[20]; + u32 addr; + //u32 *data = (u32*)extra; + u32 ret, i=0, j=0, strtout=0; + PADAPTER padapter = rtw_netdev_priv(dev); + + if (wrqu->length > 128) return -EFAULT; + + if (copy_from_user(input, wrqu->pointer, wrqu->length)) + return -EFAULT; + + _rtw_memset(data, 0, 20); + _rtw_memset(tmp, 0, 20); + _rtw_memset(extra, 0, wrqu->length); + + pch = input; + pnext = strpbrk(pch, " ,.-"); + if (pnext == NULL) return -EINVAL; + *pnext = 0; + width_str = pch; + + pch = pnext + 1; + if ((pch - input) >= wrqu->length) return -EINVAL; + + addr = simple_strtoul(pch, &ptmp, 16); + if (addr > 0x3FFF) return -EINVAL; + + ret = 0; + width = width_str[0]; + switch (width) { + case 'b': + // 1 byte + // *(u8*)data = rtw_read8(padapter, addr); + sprintf(extra, "%d\n", rtw_read8(padapter, addr)); + wrqu->length = strlen(extra); + break; + case 'w': + // 2 bytes + //*(u16*)data = rtw_read16(padapter, addr); + sprintf(data, "%04d\n", rtw_read16(padapter, addr)); + for( i=0 ; i <= strlen(data) ; i++) + { + if( i%2==0 ) + { + tmp[j]=' '; + j++; + } + if ( data[i] != '\0' ) + tmp[j] = data[i]; + + j++; + } + pch = tmp; + DBG_871X("pch=%s",pch); + + while( *pch != '\0' ) + { + pnext = strpbrk(pch, " "); + pnext++; + if ( *pnext != '\0' ) + { + strtout = simple_strtoul (pnext , &ptmp, 16); + sprintf( extra, "%s %d" ,extra ,strtout ); + } + else{ + break; + } + pch = pnext; + } + wrqu->length = 6; + break; + case 'd': + // 4 bytes + //*data = rtw_read32(padapter, addr); + sprintf(data, "%08x", rtw_read32(padapter, addr)); + //add read data format blank + for( i=0 ; i <= strlen(data) ; i++) + { + if( i%2==0 ) + { + tmp[j]=' '; + j++; + } + tmp[j] = data[i]; + j++; + } + pch = tmp; + DBG_871X("pch=%s",pch); + + while( *pch != '\0' ) + { + pnext = strpbrk(pch, " "); + pnext++; + if ( *pnext != '\0' ) + { + strtout = simple_strtoul (pnext , &ptmp, 16); + sprintf( extra, "%s %d" ,extra ,strtout ); + } + else{ + break; + } + pch = pnext; + } + wrqu->length = strlen(extra); + break; + + default: + wrqu->length = 0; + ret = -EINVAL; + break; + + } + + return ret; +} + +/* + * Input Format: %d,%x,%x + * %d is RF path, should be smaller than MAX_RF_PATH_NUMS + * 1st %x is address(offset) + * 2st %x is data to write + */ + static int rtw_mp_write_rf(struct net_device *dev, + struct iw_request_info *info, + struct iw_point *wrqu, char *extra) +{ +/*static int rtw_mp_write_rf(struct net_device *dev, + struct iw_request_info *info, + union iwreq_data *wrqu, char *extra) +*/ + u32 path, addr, data; + int ret; + PADAPTER padapter = rtw_netdev_priv(dev); + + + ret = sscanf(extra, "%d,%x,%x", &path, &addr, &data); + if (ret < 3) return -EINVAL; + + if (path >= MAX_RF_PATH_NUMS) return -EINVAL; + if (addr > 0xFF) return -EINVAL; + if (data > 0xFFFFF) return -EINVAL; + _rtw_memset(extra, 0, wrqu->length); + + write_rfreg(padapter, path, addr, data); + + sprintf(extra, "write_rf completed \n"); + + return 0; +} + +/* + * Input Format: %d,%x + * %d is RF path, should be smaller than MAX_RF_PATH_NUMS + * %x is address(offset) + * + * Return: + * %d for data readed + */ +static int rtw_mp_read_rf(struct net_device *dev, + struct iw_request_info *info, + struct iw_point *wrqu, char *extra) +{ + char input[wrqu->length]; + char *pch, *pnext, *ptmp; + char data[20],tmp[20]; + //u32 *data = (u32*)extra; + u32 path, addr; + u32 ret,i=0 ,j=0,strtou=0; + PADAPTER padapter = rtw_netdev_priv(dev); + + + if (wrqu->length > 128) return -EFAULT; + if (copy_from_user(input, wrqu->pointer, wrqu->length)) + return -EFAULT; + + ret = sscanf(input, "%d,%x", &path, &addr); + if (ret < 2) return -EINVAL; + + if (path >= MAX_RF_PATH_NUMS) return -EINVAL; + if (addr > 0xFF) return -EINVAL; + + _rtw_memset(extra, 0, wrqu->length); + + //*data = read_rfreg(padapter, path, addr); + sprintf(data, "%08x", read_rfreg(padapter, path, addr)); + //add read data format blank + for( i=0 ; i <= strlen(data) ; i++) + { + if( i%2==0 ) + { + tmp[j]=' '; + j++; + } + tmp[j] = data[i]; + j++; + } + pch = tmp; + DBG_871X("pch=%s",pch); + + while( *pch != '\0' ) + { + pnext = strpbrk(pch, " "); + pnext++; + if ( *pnext != '\0' ) + { + strtou = simple_strtoul (pnext , &ptmp, 16); + sprintf( extra, "%s %d" ,extra ,strtou ); + } + else{ + break; + } + pch = pnext; + } + wrqu->length = strlen(extra); + + return 0; +} + +static int rtw_mp_start(struct net_device *dev, + struct iw_request_info *info, + struct iw_point *wrqu, char *extra) +{ + u8 val8; + PADAPTER padapter = rtw_netdev_priv(dev); + + + if (padapter->registrypriv.mp_mode == 0) + return -EPERM; + + if (padapter->mppriv.mode == MP_OFF) { + if (mp_start_test(padapter) == _FAIL) + return -EPERM; + padapter->mppriv.mode = MP_ON; + } + + return 0; +} + +static int rtw_mp_stop(struct net_device *dev, + struct iw_request_info *info, + struct iw_point *wrqu, char *extra) +{ + PADAPTER padapter = rtw_netdev_priv(dev); + + + if (padapter->mppriv.mode != MP_OFF) { + mp_stop_test(padapter); + padapter->mppriv.mode = MP_OFF; + } + + return 0; +} + +extern int wifirate2_ratetbl_inx(unsigned char rate); + +static int rtw_mp_rate(struct net_device *dev, + struct iw_request_info *info, + struct iw_point *wrqu, char *extra) +{ + u32 rate = MPT_RATE_1M; + u8 input[wrqu->length]; + PADAPTER padapter = rtw_netdev_priv(dev); + + if (copy_from_user(input, wrqu->pointer, wrqu->length)) + return -EFAULT; + + rate = rtw_atoi(input); + sprintf( extra, "Set data rate to %d" , rate ); + + if(rate <= 0x7f) + rate = wifirate2_ratetbl_inx( (u8)rate); + else + rate =(rate-0x80+MPT_RATE_MCS0); + + //DBG_871X("%s: rate=%d\n", __func__, rate); + + if (rate >= MPT_RATE_LAST ) + return -EINVAL; + + padapter->mppriv.rateidx = rate; + Hal_SetDataRate(padapter); + + wrqu->length = strlen(extra) + 1; + return 0; +} + +static int rtw_mp_channel(struct net_device *dev, + struct iw_request_info *info, + struct iw_point *wrqu, char *extra) +{ + + PADAPTER padapter = rtw_netdev_priv(dev); + u8 input[wrqu->length]; + u32 channel = 1; + + if (copy_from_user(input, wrqu->pointer, wrqu->length)) + return -EFAULT; + + channel = rtw_atoi(input); + //DBG_871X("%s: channel=%d\n", __func__, channel); + sprintf( extra, "Change channel %d to channel %d", padapter->mppriv.channel , channel ); + + padapter->mppriv.channel = channel; + Hal_SetChannel(padapter); + + wrqu->length = strlen(extra) + 1; + return 0; +} + +static int rtw_mp_bandwidth(struct net_device *dev, + struct iw_request_info *info, + struct iw_point *wrqu, char *extra) +{ + u32 bandwidth=0, sg=0; + //u8 buffer[40]; + PADAPTER padapter = rtw_netdev_priv(dev); + //if (copy_from_user(buffer, (void*)wrqu->data.pointer, wrqu->data.length)) + // return -EFAULT; + + //DBG_871X("%s:iwpriv in=%s\n", __func__, extra); + + sscanf(extra, "40M=%d,shortGI=%d", &bandwidth, &sg); + + if (bandwidth != HT_CHANNEL_WIDTH_40) + bandwidth = HT_CHANNEL_WIDTH_20; + + //DBG_871X("%s: bw=%d sg=%d \n", __func__, bandwidth , sg); + + padapter->mppriv.bandwidth = (u8)bandwidth; + padapter->mppriv.preamble = sg; + + SetBandwidth(padapter); + + return 0; +} + +static int rtw_mp_txpower(struct net_device *dev, + struct iw_request_info *info, + struct iw_point *wrqu, char *extra) +{ + u32 idx_a=0,idx_b=0; + u8 input[wrqu->length]; + + PADAPTER padapter = rtw_netdev_priv(dev); + + if (copy_from_user(input, wrqu->pointer, wrqu->length)) + return -EFAULT; + + sscanf(input,"patha=%d,pathb=%d",&idx_a,&idx_b); + //DBG_871X("%s: tx_pwr_idx_a=%x b=%x\n", __func__, idx_a, idx_b); + + sprintf( extra, "Set power level path_A:%d path_B:%d", idx_a , idx_b ); + padapter->mppriv.txpoweridx = (u8)idx_a; + padapter->mppriv.txpoweridx_b = (u8)idx_b; + + Hal_SetAntennaPathPower(padapter); + + wrqu->length = strlen(extra) + 1; + return 0; +} + +static int rtw_mp_ant_tx(struct net_device *dev, + struct iw_request_info *info, + struct iw_point *wrqu, char *extra) +{ + u8 i; + u8 input[wrqu->length]; + u16 antenna = 0; + PADAPTER padapter = rtw_netdev_priv(dev); + + if (copy_from_user(input, wrqu->pointer, wrqu->length)) + return -EFAULT; + + //DBG_871X("%s: input=%s\n", __func__, input); + + sprintf( extra, "switch Tx antenna to %s", input ); + + for (i=0; i < strlen(input); i++) + { + switch(input[i]) + { + case 'a' : + antenna|=ANTENNA_A; + break; + case 'b': + antenna|=ANTENNA_B; + break; + } + } + //antenna |= BIT(extra[i]-'a'); + //DBG_871X("%s: antenna=0x%x\n", __func__, antenna); + padapter->mppriv.antenna_tx = antenna; + //DBG_871X("%s:mppriv.antenna_rx=%d\n", __func__, padapter->mppriv.antenna_tx); + + Hal_SetAntenna(padapter); + + wrqu->length = strlen(extra) + 1; + return 0; +} + +static int rtw_mp_ant_rx(struct net_device *dev, + struct iw_request_info *info, + struct iw_point *wrqu, char *extra) +{ + u8 i; + u16 antenna = 0; + u8 input[wrqu->length]; + PADAPTER padapter = rtw_netdev_priv(dev); + + if (copy_from_user(input, wrqu->pointer, wrqu->length)) + return -EFAULT; + //DBG_871X("%s: input=%s\n", __func__, input); + _rtw_memset(extra, 0, wrqu->length); + + sprintf( extra, "switch Rx antenna to %s", input ); + + for (i=0; i < strlen(input); i++) { + + switch( input[i] ) + { + case 'a' : + antenna|=ANTENNA_A; + break; + case 'b': + antenna|=ANTENNA_B; + break; + } + } + + //DBG_871X("%s: antenna=0x%x\n", __func__, antenna); + padapter->mppriv.antenna_rx = antenna; + //DBG_871X("%s:mppriv.antenna_rx=%d\n", __func__, padapter->mppriv.antenna_rx); + Hal_SetAntenna(padapter); + wrqu->length = strlen(extra); + + return 0; +} + +static int rtw_mp_ctx(struct net_device *dev, + struct iw_request_info *info, + struct iw_point *wrqu, char *extra) +{ + u32 pkTx = 1, countPkTx = 1, cotuTx = 1, CarrSprTx = 1, scTx = 1, sgleTx = 1, stop = 1; + u32 bStartTest = 1; + u32 count = 0; + struct mp_priv *pmp_priv; + struct pkt_attrib *pattrib; + + PADAPTER padapter = rtw_netdev_priv(dev); + + + pmp_priv = &padapter->mppriv; + + if (copy_from_user(extra, wrqu->pointer, wrqu->length)) + return -EFAULT; + + DBG_871X("%s: in=%s\n", __func__, extra); + + countPkTx = strncmp(extra, "count=", 5); // strncmp TRUE is 0 + cotuTx = strncmp(extra, "background", 20); + CarrSprTx = strncmp(extra, "background,cs", 20); + scTx = strncmp(extra, "background,sc", 20); + sgleTx = strncmp(extra, "background,stone", 20); + pkTx = strncmp(extra, "background,pkt", 20); + stop = strncmp(extra, "stop", 5); + sscanf(extra, "count=%d,pkt", &count); + + //DBG_871X("%s: count=%d countPkTx=%d cotuTx=%d CarrSprTx=%d scTx=%d sgleTx=%d pkTx=%d stop=%d\n", __func__, count, countPkTx, cotuTx, CarrSprTx, pkTx, sgleTx, scTx, stop); + _rtw_memset(extra, '\0', sizeof(extra)); + + if (stop == 0) { + bStartTest = 0; // To set Stop + pmp_priv->tx.stop = 1; + sprintf( extra, "Stop continuous Tx"); + } else { + bStartTest = 1; + if (pmp_priv->mode != MP_ON) { + if (pmp_priv->tx.stop != 1) { + DBG_871X("%s: MP_MODE != ON %d\n", __func__, pmp_priv->mode); + return -EFAULT; + } + } + } + + if (pkTx == 0 || countPkTx == 0) + pmp_priv->mode = MP_PACKET_TX; + if (sgleTx == 0) + pmp_priv->mode = MP_SINGLE_TONE_TX; + if (cotuTx == 0) + pmp_priv->mode = MP_CONTINUOUS_TX; + if (CarrSprTx == 0) + pmp_priv->mode = MP_CARRIER_SUPPRISSION_TX; + if (scTx == 0) + pmp_priv->mode = MP_SINGLE_CARRIER_TX; + + switch (pmp_priv->mode) + { + case MP_PACKET_TX: + + //DBG_871X("%s:pkTx %d\n", __func__,bStartTest); + if (bStartTest == 0) + { + pmp_priv->tx.stop = 1; + pmp_priv->mode = MP_ON; + sprintf( extra, "Stop continuous Tx"); + } + else if (pmp_priv->tx.stop == 1) + { + sprintf( extra, "Start continuous DA=ffffffffffff len=1500 count=%u,\n",count); + //DBG_871X("%s:countPkTx %d\n", __func__,count); + pmp_priv->tx.stop = 0; + pmp_priv->tx.count = count; + pmp_priv->tx.payload = 2; + pattrib = &pmp_priv->tx.attrib; + pattrib->pktlen = 1460; + _rtw_memset(pattrib->dst, 0xFF, ETH_ALEN); + SetPacketTx(padapter); + } + else { + //DBG_871X("%s: pkTx not stop\n", __func__); + return -EFAULT; + } + wrqu->length = strlen(extra); + return 0; + + case MP_SINGLE_TONE_TX: + //DBG_871X("%s: sgleTx %d \n", __func__, bStartTest); + if (bStartTest != 0){ + sprintf( extra, "Start continuous DA=ffffffffffff len=1500 \n infinite=yes."); + + } + Hal_SetSingleToneTx(padapter, (u8)bStartTest); + break; + + case MP_CONTINUOUS_TX: + DBG_871X("%s: cotuTx %d\n", __func__, bStartTest); + if (bStartTest != 0){ + sprintf( extra, "Start continuous DA=ffffffffffff len=1500 \n infinite=yes."); + } + Hal_SetContinuousTx(padapter, (u8)bStartTest); + break; + + case MP_CARRIER_SUPPRISSION_TX: + //DBG_871X("%s: CarrSprTx %d\n", __func__, bStartTest); + if (bStartTest != 0){ + if( pmp_priv->rateidx <= MPT_RATE_11M ) + { + sprintf( extra, "Start continuous DA=ffffffffffff len=1500 \n infinite=yes."); + }else + sprintf( extra, "Specify carrier suppression but not CCK rate"); + } + Hal_SetCarrierSuppressionTx(padapter, (u8)bStartTest); + break; + + case MP_SINGLE_CARRIER_TX: + //DBG_871X("%s: scTx %d\n", __func__, bStartTest); + if (bStartTest != 0){ + sprintf( extra, "Start continuous DA=ffffffffffff len=1500 \n infinite=yes."); + } + Hal_SetSingleCarrierTx(padapter, (u8)bStartTest); + break; + + default: + //DBG_871X("%s:No Match MP_MODE\n", __func__); + sprintf( extra, "Error! Continuous-Tx is not on-going."); + return -EFAULT; + } + + if (bStartTest) { + struct mp_priv *pmp_priv = &padapter->mppriv; + if (pmp_priv->tx.stop == 0) { + pmp_priv->tx.stop = 1; + //DBG_871X("%s: pkt tx is running...\n", __func__); + rtw_msleep_os(5); + } + pmp_priv->tx.stop = 0; + pmp_priv->tx.count = 1; + SetPacketTx(padapter); + } else { + pmp_priv->mode = MP_ON; + } + + wrqu->length = strlen(extra); + return 0; +} + +static int rtw_mp_arx(struct net_device *dev, + struct iw_request_info *info, + struct iw_point *wrqu, char *extra) +{ + u8 bStartRx=0,bStopRx=0; + PADAPTER padapter = rtw_netdev_priv(dev); + u8 input[wrqu->length]; + + if (copy_from_user(input, wrqu->pointer, wrqu->length)) + return -EFAULT; + + DBG_871X("%s: %s\n", __func__, input); + + bStartRx = (strncmp(input, "start", 5)==0)?1:0; // strncmp TRUE is 0 + bStopRx = (strncmp(input, "stop", 5)==0)?1:0; // strncmp TRUE is 0 + SetPacketRx(padapter, bStartRx); + + if(bStartRx) + { + sprintf( extra, "start"); + wrqu->length = strlen(extra) + 1; + } + else if(bStopRx) + { + sprintf( extra, "Received packet OK:%d CRC error:%d",padapter->mppriv.rx_pktcount, + padapter->mppriv.rx_crcerrpktcount); + wrqu->length = strlen(extra) + 1; + } + + + return 0; +} + +static int rtw_mp_trx_query(struct net_device *dev, + struct iw_request_info *info, + struct iw_point *wrqu, char *extra) +{ + u32 txok,txfail,rxok,rxfail; + PADAPTER padapter = rtw_netdev_priv(dev); + //if (copy_from_user(extra, wrqu->data.pointer, wrqu->data.length)) + // return -EFAULT; + + txok=padapter->mppriv.tx.sended; + txfail=0; + rxok = padapter->mppriv.rx_pktcount; + rxfail = padapter->mppriv.rx_crcerrpktcount; + + _rtw_memset(extra, '\0', 128); + + sprintf(extra, "Tx OK:%d, Tx Fail:%d, Rx OK:%d, CRC error:%d ", txok, txfail,rxok,rxfail); + + wrqu->length=strlen(extra)+1; + + return 0; +} + +static int rtw_mp_pwrtrk(struct net_device *dev, + struct iw_request_info *info, + struct iw_point *wrqu, char *extra) +{ + u8 enable; + u32 thermal; + s32 ret; + PADAPTER padapter = rtw_netdev_priv(dev); + u8 input[wrqu->length]; + + if (copy_from_user(input, wrqu->pointer, wrqu->length)) + return -EFAULT; + + _rtw_memset(extra, 0, wrqu->length); + + enable = 1; + if (wrqu->length > 1) { // not empty string + if (strncmp(input, "stop", 4) == 0) + { + enable = 0; + sprintf(extra, "mp tx power tracking stop"); + } + else if (sscanf(input, "ther=%d", &thermal)) { + ret = Hal_SetThermalMeter(padapter, (u8)thermal); + if (ret == _FAIL) return -EPERM; + sprintf(extra, "mp tx power tracking start,target value=%d ok ",thermal); + }else { + return -EINVAL; + } + } + + ret = Hal_SetPowerTracking(padapter, enable); + if (ret == _FAIL) return -EPERM; + + wrqu->length = strlen(extra); + + return 0; +} + +static int rtw_mp_psd(struct net_device *dev, + struct iw_request_info *info, + struct iw_point *wrqu, char *extra) +{ + PADAPTER padapter = rtw_netdev_priv(dev); + u8 input[wrqu->length]; + + if (copy_from_user(input, wrqu->pointer, wrqu->length)) + return -EFAULT; + + strcpy(extra,input); + + wrqu->length = mp_query_psd(padapter, extra); + + return 0; +} + +static int rtw_mp_thermal(struct net_device *dev, + struct iw_request_info *info, + struct iw_point *wrqu, char *extra) +{ + u8 val; + u16 bwrite=1; + #ifdef CONFIG_RTL8192C + u16 addr=0x78; + #endif + #ifdef CONFIG_RTL8192D + u16 addr=0xc3; + #endif + u16 cnt=1; + u16 max_available_size=0; + PADAPTER padapter = rtw_netdev_priv(dev); + + if (copy_from_user(extra, wrqu->pointer, wrqu->length)) + return -EFAULT; + + //DBG_871X("print extra %s \n",extra); + + bwrite = strncmp(extra, "write", 6); // strncmp TRUE is 0 + + Hal_GetThermalMeter(padapter, &val); + + if( bwrite == 0 ) + { + //DBG_871X("to write val:%d",val); + EFUSE_GetEfuseDefinition(padapter, EFUSE_WIFI, TYPE_AVAILABLE_EFUSE_BYTES_TOTAL, (PVOID)&max_available_size, _FALSE); + if( 2 > max_available_size ) + { + DBG_871X("no available efuse!\n"); + return -EFAULT; + } + if ( rtw_efuse_map_write(padapter, addr, cnt, &val) == _FAIL ) + { + DBG_871X("rtw_efuse_map_write error \n"); + return -EFAULT; + } + else + { + sprintf(extra, " efuse write ok :%d", val); + } + } + else + { + sprintf(extra, "%d", val); + } + wrqu->length = strlen(extra); + + return 0; +} + +static int rtw_mp_reset_stats(struct net_device *dev, + struct iw_request_info *info, + struct iw_point *wrqu, char *extra) +{ + struct mp_priv *pmp_priv; + struct pkt_attrib *pattrib; + PADAPTER padapter = rtw_netdev_priv(dev); + + pmp_priv = &padapter->mppriv; + + pmp_priv->tx.sended = 0; + padapter->mppriv.rx_pktcount = 0; + padapter->mppriv.rx_crcerrpktcount = 0; + + return 0; +} + +static int rtw_mp_dump(struct net_device *dev, + struct iw_request_info *info, + struct iw_point *wrqu, char *extra) +{ + struct mp_priv *pmp_priv; + struct pkt_attrib *pattrib; + u32 value; + u8 rf_type,path_nums = 0; + u32 i,j=1,path; + PADAPTER padapter = rtw_netdev_priv(dev); + + pmp_priv = &padapter->mppriv; + + + //if (copy_from_user(extra, wrqu->data.pointer, wrqu->data.length)) + // return -EFAULT; + + if ( strncmp(extra, "all", 4)==0 ) + { + DBG_871X("\n======= MAC REG =======\n"); + for ( i=0x0;i<0x300;i+=4 ) + { + if(j%4==1) DBG_871X("0x%02x",i); + DBG_871X(" 0x%08x ",rtw_read32(padapter,i)); + if((j++)%4 == 0) DBG_871X("\n"); + } + for( i=0x400;i<0x800;i+=4 ) + { + if(j%4==1) DBG_871X("0x%02x",i); + DBG_871X(" 0x%08x ",rtw_read32(padapter,i)); + if((j++)%4 == 0) DBG_871X("\n"); + } + + i,j=1; + rtw_hal_get_hwreg(padapter, HW_VAR_RF_TYPE, (u8 *)(&rf_type)); + + DBG_871X("\n======= RF REG =======\n"); + if(( RF_1T2R == rf_type ) ||( RF_1T1R ==rf_type )) + path_nums = 1; + else + path_nums = 2; + + for(path=0;pathlength]; + u32 valxcap; + + if (copy_from_user(input, wrqu->pointer, wrqu->length)) + return -EFAULT; + + DBG_871X("%s:iwpriv in=%s\n", __func__, input); + + sscanf(input, "xcap=%d", &valxcap); + + if (!IS_HARDWARE_TYPE_8192D(padapter)) + return 0; +#ifdef CONFIG_RTL8192D + Hal_ProSetCrystalCap( padapter , valxcap ); +#endif + + sprintf( extra, "Set xcap=%d",valxcap ); + wrqu->length = strlen(extra) + 1; + +return 0; + +} + + +/* update Tx AGC offset */ +static int rtw_mp_antBdiff(struct net_device *dev, + struct iw_request_info *info, + struct iw_point *wrqu, char *extra) +{ + + + // MPT_ProSetTxAGCOffset + return 0; +} + + +static int rtw_mp_set(struct net_device *dev, + struct iw_request_info *info, + union iwreq_data *wdata, char *extra) +{ + struct iw_point *wrqu = (struct iw_point *)wdata; + u32 subcmd = wrqu->flags; + PADAPTER padapter = rtw_netdev_priv(dev); + + if (padapter == NULL) + { + return -ENETDOWN; + } + + //_rtw_memset(extra, 0x00, IW_PRIV_SIZE_MASK); + + if (extra == NULL) + { + wrqu->length = 0; + return -EIO; + } + + switch(subcmd) + { + case WRITE_REG : + rtw_mp_write_reg (dev,info,wrqu,extra); + break; + + case WRITE_RF: + rtw_mp_write_rf (dev,info,wrqu,extra); + break; + + case MP_START: + DBG_871X("set case mp_start \n"); + rtw_mp_start (dev,info,wrqu,extra); + break; + + case MP_STOP: + DBG_871X("set case mp_stop \n"); + rtw_mp_stop (dev,info,wrqu,extra); + break; + + case MP_BANDWIDTH: + DBG_871X("set case mp_bandwidth \n"); + rtw_mp_bandwidth (dev,info,wrqu,extra); + break; + + case MP_RESET_STATS: + DBG_871X("set case MP_RESET_STATS \n"); + rtw_mp_reset_stats (dev,info,wrqu,extra); + break; + + case EFUSE_SET: + DBG_871X("efuse set \n"); + rtw_mp_efuse_set (dev,info,wdata,extra); + break; + + } + + + return 0; +} + + +static int rtw_mp_get(struct net_device *dev, + struct iw_request_info *info, + union iwreq_data *wdata, char *extra) +{ + struct iw_point *wrqu = (struct iw_point *)wdata; + u32 subcmd = wrqu->flags; + PADAPTER padapter = rtw_netdev_priv(dev); + + //DBG_871X("in mp_get extra= %s \n",extra); + + if (padapter == NULL) + { + return -ENETDOWN; + } + if (extra == NULL) + { + wrqu->length = 0; + return -EIO; + } + + switch(subcmd) + { + case MP_PHYPARA: + DBG_871X("mp_get MP_PHYPARA \n"); + rtw_mp_phypara(dev,info,wrqu,extra); + break; + + case MP_CHANNEL: + DBG_871X("set case mp_channel \n"); + rtw_mp_channel (dev,info,wrqu,extra); + break; + + case READ_REG: + DBG_871X("mp_get READ_REG \n"); + rtw_mp_read_reg (dev,info,wrqu,extra); + break; + case READ_RF: + DBG_871X("mp_get READ_RF \n"); + rtw_mp_read_rf (dev,info,wrqu,extra); + break; + + case MP_RATE: + DBG_871X("set case mp_rate \n"); + rtw_mp_rate (dev,info,wrqu,extra); + break; + + case MP_TXPOWER: + DBG_871X("set case MP_TXPOWER \n"); + rtw_mp_txpower (dev,info,wrqu,extra); + break; + + case MP_ANT_TX: + DBG_871X("set case MP_ANT_TX \n"); + rtw_mp_ant_tx (dev,info,wrqu,extra); + break; + + case MP_ANT_RX: + DBG_871X("set case MP_ANT_RX \n"); + rtw_mp_ant_rx (dev,info,wrqu,extra); + break; + + case MP_QUERY: + DBG_871X("mp_get mp_query MP_QUERY \n"); + rtw_mp_trx_query(dev,info,wrqu,extra); + break; + + case MP_CTX: + DBG_871X("set case MP_CTX \n"); + rtw_mp_ctx (dev,info,wrqu,extra); + break; + + case MP_ARX: + DBG_871X("set case MP_ARX \n"); + rtw_mp_arx (dev,info,wrqu,extra); + break; + + case EFUSE_GET: + DBG_871X("efuse get EFUSE_GET \n"); + rtw_mp_efuse_get(dev,info,wdata,extra); + break; + + case MP_DUMP: + DBG_871X("set case MP_DUMP \n"); + rtw_mp_dump (dev,info,wrqu,extra); + break; + case MP_PSD: + DBG_871X("set case MP_PSD \n"); + rtw_mp_psd (dev,info,wrqu,extra); + break; + + case MP_THER: + DBG_871X("set case MP_THER \n"); + rtw_mp_thermal (dev,info,wrqu,extra); + break; + + case MP_PWRTRK: + DBG_871X("set case MP_PWRTRK \n"); + rtw_mp_pwrtrk (dev,info,wrqu,extra); + break; + } + +return 0; +} + +#endif //#if defined(CONFIG_MP_INCLUDED) && defined(CONFIG_MP_IWPRIV_SUPPORT) + +static int rtw_wfd_tdls_enable(struct net_device *dev, + struct iw_request_info *info, + union iwreq_data *wrqu, char *extra) +{ + int ret = 0; + +#ifdef CONFIG_TDLS +#ifdef CONFIG_WFD + + _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); + + printk( "[%s] %s %d\n", __FUNCTION__, extra, wrqu->data.length -1 ); + + if ( extra[ 0 ] == '0' ) + { + padapter->wdinfo.wfd_tdls_enable = 0; + } + else + { + padapter->wdinfo.wfd_tdls_enable = 1; + } + +#endif //CONFIG_WFD +#endif //CONFIG_TDLS + + return ret; +} + +static int rtw_tdls_weaksec(struct net_device *dev, + struct iw_request_info *info, + union iwreq_data *wrqu, char *extra) +{ + int ret = 0; + +#ifdef CONFIG_TDLS + + u8 i, j; + _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); + + DBG_871X( "[%s] %s %d\n", __FUNCTION__, extra, wrqu->data.length -1 ); + + if ( extra[ 0 ] == '0' ) + { + padapter->wdinfo.wfd_tdls_weaksec = 0; + } + else + { + padapter->wdinfo.wfd_tdls_weaksec = 1; + } +#endif + + return ret; +} + + +static int rtw_tdls_enable(struct net_device *dev, + struct iw_request_info *info, + union iwreq_data *wrqu, char *extra) +{ + int ret = 0; + +#ifdef CONFIG_TDLS + + _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); + struct tdls_info *ptdlsinfo = &padapter->tdlsinfo; + _irqL irqL; + _list *plist, *phead; + s32 index; + struct sta_info *psta = NULL; + struct sta_priv *pstapriv = &padapter->stapriv; + u8 tdls_sta[NUM_STA][ETH_ALEN]; + u8 empty_hwaddr[ETH_ALEN] = { 0x00 }; + + printk( "[%s] %s %d\n", __FUNCTION__, extra, wrqu->data.length -1 ); + + _rtw_memset(tdls_sta, 0x00, sizeof(tdls_sta)); + + if ( extra[ 0 ] == '0' ) + { + ptdlsinfo->enable = 0; + + if(pstapriv->asoc_sta_count==1) + return ret; + + _enter_critical_bh(&pstapriv->sta_hash_lock, &irqL); + for(index=0; index< NUM_STA; index++) + { + phead = &(pstapriv->sta_hash[index]); + plist = get_next(phead); + + while ((rtw_end_of_queue_search(phead, plist)) == _FALSE) + { + psta = LIST_CONTAINOR(plist, struct sta_info ,hash_list); + + plist = get_next(plist); + + if(psta->tdls_sta_state != TDLS_STATE_NONE) + { + _rtw_memcpy(tdls_sta[index], psta->hwaddr, ETH_ALEN); + } + } + } + _exit_critical_bh(&pstapriv->sta_hash_lock, &irqL); + + for(index=0; index< NUM_STA; index++) + { + if( !_rtw_memcmp(tdls_sta[index], empty_hwaddr, ETH_ALEN) ) + { + printk("issue tear down to "MAC_FMT"\n", MAC_ARG(tdls_sta[index])); + issue_tdls_teardown(padapter, tdls_sta[index]); + } + } + rtw_tdls_cmd(padapter, myid(&(padapter->eeprompriv)), TDLS_RS_RCR); + rtw_reset_tdls_info(padapter); + } + else if ( extra[ 0 ] == '1' ) + { + ptdlsinfo->enable = 1; + } +#endif //CONFIG_TDLS + + return ret; +} + +static int rtw_tdls_setup(struct net_device *dev, + struct iw_request_info *info, + union iwreq_data *wrqu, char *extra) +{ + int ret = 0; + +#ifdef CONFIG_TDLS + + u8 i, j; + _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); + u8 mac_addr[ETH_ALEN]; + +#ifdef CONFIG_WFD + struct wifidirect_info *pwdinfo= &(padapter->wdinfo); +#endif // CONFIG_WFD + + printk( "[%s] %s %d\n", __FUNCTION__, extra, wrqu->data.length -1 ); + + for( i=0, j=0 ; i < ETH_ALEN; i++, j+=3 ){ + mac_addr[i]=key_2char2num(*(extra+j), *(extra+j+1)); + } + +#ifdef CONFIG_WFD + if ( _AES_ != padapter->securitypriv.dot11PrivacyAlgrthm ) + { + // Weak Security situation with AP. + if ( 0 == pwdinfo->wfd_tdls_weaksec ) + { + // Can't send the tdls setup request out!! + DBG_871X( "[%s] Current link is not AES, SKIP sending the tdls setup request!!\n", __FUNCTION__ ); + } + else + { + issue_tdls_setup_req(padapter, mac_addr); + } + } + else +#endif // CONFIG_WFD + { + issue_tdls_setup_req(padapter, mac_addr); + } +#endif + + return ret; +} + +static int rtw_tdls_teardown(struct net_device *dev, + struct iw_request_info *info, + union iwreq_data *wrqu, char *extra) +{ + int ret = 0; + +#ifdef CONFIG_TDLS + + u8 i,j; + _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); + struct sta_info *ptdls_sta = NULL; + u8 mac_addr[ETH_ALEN]; + + printk( "[%s] %s %d\n", __FUNCTION__, extra, wrqu->data.length -1 ); + + for( i=0, j=0 ; i < ETH_ALEN; i++, j+=3 ){ + mac_addr[i]=key_2char2num(*(extra+j), *(extra+j+1)); + } + + ptdls_sta = rtw_get_stainfo( &(padapter->stapriv), mac_addr); + + if(ptdls_sta != NULL) + { + ptdls_sta->stat_code = _RSON_TDLS_TEAR_UN_RSN_; + issue_tdls_teardown(padapter, mac_addr); + } + +#endif //CONFIG_TDLS + + return ret; +} + +static int rtw_tdls_discovery(struct net_device *dev, + struct iw_request_info *info, + union iwreq_data *wrqu, char *extra) +{ + int ret = 0; + +#ifdef CONFIG_TDLS + + _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); + struct mlme_ext_priv *pmlmeext = &(padapter->mlmeextpriv); + struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info); + + printk( "[%s] %s %d\n", __FUNCTION__, extra, wrqu->data.length -1 ); + + issue_tdls_dis_req(padapter, NULL); + +#endif //CONFIG_TDLS + + return ret; +} + +static int rtw_tdls_ch_switch(struct net_device *dev, + struct iw_request_info *info, + union iwreq_data *wrqu, char *extra) +{ + int ret = 0; + +#ifdef CONFIG_TDLS + + _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); + struct tdls_info *ptdlsinfo = &padapter->tdlsinfo; + u8 i, j, mac_addr[ETH_ALEN]; + struct sta_info *ptdls_sta = NULL; + + printk( "[%s] %s %d\n", __FUNCTION__, extra, wrqu->data.length -1 ); + + for( i=0, j=0 ; i < ETH_ALEN; i++, j+=3 ){ + mac_addr[i]=key_2char2num(*(extra+j), *(extra+j+1)); + } + + ptdls_sta = rtw_get_stainfo(&padapter->stapriv, mac_addr); + if( ptdls_sta == NULL ) + return ret; + ptdlsinfo->ch_sensing=1; + + rtw_tdls_cmd(padapter, ptdls_sta->hwaddr, TDLS_INIT_CH_SEN); + +#endif //CONFIG_TDLS + + return ret; +} + +static int rtw_tdls_pson(struct net_device *dev, + struct iw_request_info *info, + union iwreq_data *wrqu, char *extra) +{ + int ret = 0; + +#ifdef CONFIG_TDLS + + _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); + struct mlme_ext_priv *pmlmeext = &(padapter->mlmeextpriv); + struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info); + u8 i, j, mac_addr[ETH_ALEN]; + struct sta_info *ptdls_sta = NULL; + + printk( "[%s] %s %d\n", __FUNCTION__, extra, wrqu->data.length -1 ); + + for( i=0, j=0 ; i < ETH_ALEN; i++, j+=3 ){ + mac_addr[i]=key_2char2num(*(extra+j), *(extra+j+1)); + } + + ptdls_sta = rtw_get_stainfo(&padapter->stapriv, mac_addr); + + issue_nulldata_to_TDLS_peer_STA(padapter, ptdls_sta, 1); + +#endif //CONFIG_TDLS + + return ret; +} + +static int rtw_tdls_psoff(struct net_device *dev, + struct iw_request_info *info, + union iwreq_data *wrqu, char *extra) +{ + int ret = 0; + +#ifdef CONFIG_TDLS + + _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); + struct mlme_ext_priv *pmlmeext = &(padapter->mlmeextpriv); + struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info); + u8 i, j, mac_addr[ETH_ALEN]; + struct sta_info *ptdls_sta = NULL; + + printk( "[%s] %s %d\n", __FUNCTION__, extra, wrqu->data.length -1 ); + + for( i=0, j=0 ; i < ETH_ALEN; i++, j+=3 ){ + mac_addr[i]=key_2char2num(*(extra+j), *(extra+j+1)); + } + + ptdls_sta = rtw_get_stainfo(&padapter->stapriv, mac_addr); + + issue_nulldata_to_TDLS_peer_STA(padapter, ptdls_sta, 0); + +#endif //CONFIG_TDLS + + return ret; +} + +static int rtw_tdls_setip(struct net_device *dev, + struct iw_request_info *info, + union iwreq_data *wrqu, char *extra) +{ + int ret = 0; + +#ifdef CONFIG_TDLS +#ifdef CONFIG_WFD + + _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); + struct tdls_info *ptdlsinfo = &padapter->tdlsinfo; + struct wifi_display_info *pwfd_info = ptdlsinfo->wfd_info; + u8 i=0, j=0, k=0, tag=0, ip[3] = { 0xff }, *ptr = extra; + + printk( "[%s] %s %d\n", __FUNCTION__, extra, wrqu->data.length - 1 ); + + + while( i < 4 ) + { + for( j=0; j < 4; j++) + { + if( *( extra + j + tag ) == '.' || *( extra + j + tag ) == '\0' ) + { + if( j == 1 ) + pwfd_info->ip_address[i]=convert_ip_addr( '0', '0', *(extra+(j-1)+tag)); + if( j == 2 ) + pwfd_info->ip_address[i]=convert_ip_addr( '0', *(extra+(j-2)+tag), *(extra+(j-1)+tag)); + if( j == 3 ) + pwfd_info->ip_address[i]=convert_ip_addr( *(extra+(j-3)+tag), *(extra+(j-2)+tag), *(extra+(j-1)+tag)); + + tag += j + 1; + break; + } + } + i++; + } + + printk( "[%s] Set IP = %u.%u.%u.%u \n", __FUNCTION__, + ptdlsinfo->wfd_info->ip_address[0], ptdlsinfo->wfd_info->ip_address[1], + ptdlsinfo->wfd_info->ip_address[2], ptdlsinfo->wfd_info->ip_address[3] + ); + +#endif //CONFIG_WFD +#endif //CONFIG_TDLS + + return ret; +} + +static int rtw_tdls_getip(struct net_device *dev, + struct iw_request_info *info, + union iwreq_data *wrqu, char *extra) +{ + int ret = 0; + +#ifdef CONFIG_TDLS +#ifdef CONFIG_WFD + + _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); + struct tdls_info *ptdlsinfo = &padapter->tdlsinfo; + struct wifi_display_info *pwfd_info = ptdlsinfo->wfd_info; + + printk( "[%s]\n", __FUNCTION__); + + sprintf( extra, "\n\n%u.%u.%u.%u\n", + pwfd_info->peer_ip_address[0], pwfd_info->peer_ip_address[1], + pwfd_info->peer_ip_address[2], pwfd_info->peer_ip_address[3] + ); + + printk( "[%s] IP=%u.%u.%u.%u\n", __FUNCTION__, + pwfd_info->peer_ip_address[0], pwfd_info->peer_ip_address[1], + pwfd_info->peer_ip_address[2], pwfd_info->peer_ip_address[3] + ); + + wrqu->data.length = strlen( extra ); + +#endif //CONFIG_WFD +#endif //CONFIG_TDLS + + return ret; +} + +static int rtw_tdls_getport(struct net_device *dev, + struct iw_request_info *info, + union iwreq_data *wrqu, char *extra) +{ + + int ret = 0; + +#ifdef CONFIG_TDLS +#ifdef CONFIG_WFD + + _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); + struct tdls_info *ptdlsinfo = &padapter->tdlsinfo; + struct wifi_display_info *pwfd_info = ptdlsinfo->wfd_info; + + printk( "[%s]\n", __FUNCTION__); + + sprintf( extra, "\n\n%d\n", pwfd_info->peer_rtsp_ctrlport ); + printk( "[%s] remote port = %d\n", __FUNCTION__, pwfd_info->peer_rtsp_ctrlport ); + + wrqu->data.length = strlen( extra ); + +#endif //CONFIG_WFD +#endif //CONFIG_TDLS + + return ret; + +} + +//WFDTDLS, for sigma test +static int rtw_tdls_dis_result(struct net_device *dev, + struct iw_request_info *info, + union iwreq_data *wrqu, char *extra) +{ + + int ret = 0; + +#ifdef CONFIG_TDLS +#ifdef CONFIG_WFD + + _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); + struct tdls_info *ptdlsinfo = &padapter->tdlsinfo; + struct wifi_display_info *pwfd_info = ptdlsinfo->wfd_info; + + printk( "[%s]\n", __FUNCTION__); + + if(ptdlsinfo->dev_discovered == 1 ) + { + sprintf( extra, "\n\nDis=1\n" ); + ptdlsinfo->dev_discovered = 0; + } + + wrqu->data.length = strlen( extra ); + +#endif //CONFIG_WFD +#endif //CONFIG_TDLS + + return ret; + +} + +//WFDTDLS, for sigma test +static int rtw_wfd_tdls_status(struct net_device *dev, + struct iw_request_info *info, + union iwreq_data *wrqu, char *extra) +{ + + int ret = 0; + +#ifdef CONFIG_TDLS +#ifdef CONFIG_WFD + + _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); + struct tdls_info *ptdlsinfo = &padapter->tdlsinfo; + struct wifi_display_info *pwfd_info = ptdlsinfo->wfd_info; + + printk( "[%s]\n", __FUNCTION__); + + if(ptdlsinfo->setup_state == TDLS_LINKED_STATE ) + { + sprintf( extra, "\n\nStatus=1\n" ); + } + else + { + sprintf( extra, "\n\nStatus=0\n" ); + } + + wrqu->data.length = strlen( extra ); + +#endif //CONFIG_WFD +#endif //CONFIG_TDLS + + return ret; + +} + +static int rtw_tdls_ch_switch_off(struct net_device *dev, + struct iw_request_info *info, + union iwreq_data *wrqu, char *extra) +{ + int ret = 0; + +#ifdef CONFIG_TDLS + + _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); + u8 i, j, mac_addr[ETH_ALEN]; + struct sta_info *ptdls_sta = NULL; + + printk( "[%s] %s %d\n", __FUNCTION__, extra, wrqu->data.length -1 ); + + for( i=0, j=0 ; i < ETH_ALEN; i++, j+=3 ){ + mac_addr[i]=key_2char2num(*(extra+j), *(extra+j+1)); + } + + ptdls_sta = rtw_get_stainfo(&padapter->stapriv, mac_addr); + + ptdls_sta->tdls_sta_state |= TDLS_SW_OFF_STATE; +/* + if((ptdls_sta->tdls_sta_state & TDLS_AT_OFF_CH_STATE) && (ptdls_sta->tdls_sta_state & TDLS_PEER_AT_OFF_STATE)){ + pmlmeinfo->tdls_candidate_ch= pmlmeext->cur_channel; + issue_tdls_ch_switch_req(padapter, mac_addr); + DBG_871X("issue tdls ch switch req back to base channel\n"); + } +*/ + +#endif //CONFIG_TDLS + + return ret; +} + +static int rtw_tdls(struct net_device *dev, + struct iw_request_info *info, + union iwreq_data *wrqu, char *extra) +{ + int ret = 0; + +#ifdef CONFIG_TDLS + _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); + + printk( "[%s] extra = %s\n", __FUNCTION__, extra ); + // WFD Sigma will use the tdls enable command to let the driver know we want to test the tdls now! + if ( _rtw_memcmp( extra, "wfdenable=", 10 ) ) + { + wrqu->data.length -=10; + rtw_wfd_tdls_enable( dev, info, wrqu, &extra[10] ); + return ret; + } + else if ( _rtw_memcmp( extra, "weaksec=", 8 ) ) + { + wrqu->data.length -=8; + rtw_tdls_weaksec( dev, info, wrqu, &extra[8] ); + return ret; + } + else if ( _rtw_memcmp( extra, "tdlsenable=", 11 ) ) + { + wrqu->data.length -=11; + rtw_tdls_enable( dev, info, wrqu, &extra[11] ); + return ret; + } + + if( padapter->tdlsinfo.enable == 0 ) + { + printk("tdls haven't enabled\n"); + return 0; + } + + if ( _rtw_memcmp( extra, "setup=", 6 ) ) + { + wrqu->data.length -=6; + rtw_tdls_setup( dev, info, wrqu, &extra[6] ); + } + else if (_rtw_memcmp( extra, "tear=", 5 ) ) + { + wrqu->data.length -= 5; + rtw_tdls_teardown( dev, info, wrqu, &extra[5] ); + } + else if (_rtw_memcmp( extra, "dis=", 4 ) ) + { + wrqu->data.length -= 4; + rtw_tdls_discovery( dev, info, wrqu, &extra[4] ); + } + else if (_rtw_memcmp( extra, "sw=", 3 ) ) + { + wrqu->data.length -= 3; + rtw_tdls_ch_switch( dev, info, wrqu, &extra[3] ); + } + else if (_rtw_memcmp( extra, "swoff=", 6 ) ) + { + wrqu->data.length -= 6; + rtw_tdls_ch_switch_off( dev, info, wrqu, &extra[6] ); + } + else if (_rtw_memcmp( extra, "pson=", 5 ) ) + { + wrqu->data.length -= 5; + rtw_tdls_pson( dev, info, wrqu, &extra[5] ); + } + else if (_rtw_memcmp( extra, "psoff=", 6 ) ) + { + wrqu->data.length -= 6; + rtw_tdls_psoff( dev, info, wrqu, &extra[6] ); + } +#ifdef CONFIG_WFD + else if (_rtw_memcmp( extra, "setip=", 6 ) ) + { + wrqu->data.length -= 6; + rtw_tdls_setip( dev, info, wrqu, &extra[6] ); + } + else if (_rtw_memcmp( extra, "tprobe=", 6 ) ) + { + issue_tunneled_probe_req((_adapter *)rtw_netdev_priv(dev)); + } +#endif //CONFIG_WFD + +#endif //CONFIG_TDLS + + return ret; +} + + +static int rtw_tdls_get(struct net_device *dev, + struct iw_request_info *info, + union iwreq_data *wrqu, char *extra) +{ + int ret = 0; + +#ifdef CONFIG_WFD + + DBG_871X( "[%s] extra = %s\n", __FUNCTION__, (char*) wrqu->data.pointer ); + + if ( _rtw_memcmp( wrqu->data.pointer, "ip", 2 ) ) + { + rtw_tdls_getip( dev, info, wrqu, extra ); + } + if ( _rtw_memcmp( wrqu->data.pointer, "port", 4 ) ) + { + rtw_tdls_getport( dev, info, wrqu, extra ); + } + + //WFDTDLS, for sigma test + if ( _rtw_memcmp( wrqu->data.pointer, "dis", 3 ) ) + { + rtw_tdls_dis_result( dev, info, wrqu, extra ); + } + if ( _rtw_memcmp( wrqu->data.pointer, "status", 6 ) ) + { + rtw_wfd_tdls_status( dev, info, wrqu, extra ); + } + +#endif //CONFIG_WFD + + return ret; +} + +static int rtw_pm_set(struct net_device *dev, + struct iw_request_info *info, + union iwreq_data *wrqu, char *extra) +{ + int ret = 0; + unsigned mode = 0; + _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); + + DBG_871X( "[%s] extra = %s\n", __FUNCTION__, extra ); + + if ( _rtw_memcmp( extra, "lps=", 4 ) ) + { + sscanf(extra+4, "%u", &mode); + ret = rtw_pm_set_lps(padapter,mode); + } + else if ( _rtw_memcmp( extra, "ips=", 4 ) ) + { + sscanf(extra+4, "%u", &mode); + ret = rtw_pm_set_ips(padapter,mode); + } + else{ + ret = -EINVAL; + } + + return ret; +} + +#ifdef CONFIG_WOWLAN +static int rtw_wowlan_ctrl(struct net_device *dev, + struct iw_request_info *info, + union iwreq_data *wrqu, char *extra) +{ + int ret = 0; + struct oid_par_priv oid_par; + struct wowlan_ioctl_param *poidparam; + uint status=0; + u16 len; + u8 *pparmbuf = NULL, bset; + _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); + + struct iw_point *p = &wrqu->data; + + //DBG_871X("+rtw_wowlan_ctrl\n"); + + //mutex_lock(&ioctl_mutex); + + if ((!p->length) || (!p->pointer)) { + ret = -EINVAL; + goto _rtw_wowlan_ctrl_exit; + } + + pparmbuf = NULL; + bset = (u8)(p->flags & 0xFFFF); + len = p->length; + pparmbuf = (u8*)rtw_malloc(len); + if (pparmbuf == NULL){ + ret = -ENOMEM; + goto _rtw_wowlan_ctrl_exit; + } + + if (copy_from_user(pparmbuf, p->pointer, len)) { + ret = -EFAULT; + goto _rtw_wowlan_ctrl_exit_free; + } + poidparam = (struct wowlan_ioctl_param *)pparmbuf; + + if(padapter->pwrctrlpriv.bSupportRemoteWakeup==_FALSE){ + ret = -EPERM; + DBG_871X("+rtw_wowlan_ctrl: Device didn't support the remote wakeup!!\n"); + goto _rtw_wowlan_ctrl_exit_free; + } + rtw_hal_set_hwreg(padapter,HW_VAR_WOWLAN,(u8 *)poidparam); + + DBG_871X("rtw_wowlan_ctrl: subcode [%d], len[%d], buffer_len[%d]\r\n", + poidparam->subcode, poidparam->len, len); + + if (copy_to_user(p->pointer, pparmbuf, len)) { + ret = -EFAULT; + } + + +_rtw_wowlan_ctrl_exit_free: + //DBG_871X("-rtw_wowlan_ctrl( subcode = %d)\n", poidparam->subcode); + rtw_mfree(pparmbuf, len); +_rtw_wowlan_ctrl_exit: + + + return ret; +} +#endif //CONFIG_WOWLAN + +#ifdef CONFIG_INTEL_WIDI +static int rtw_widi_set(struct net_device *dev, + struct iw_request_info *info, + union iwreq_data *wrqu, char *extra) +{ + int ret = 0; + _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); + + process_intel_widi_cmd(padapter, extra); + + return ret; +} + +static int rtw_widi_set_probe_request(struct net_device *dev, + struct iw_request_info *info, + union iwreq_data *wrqu, char *extra) +{ + int ret = 0; + u8 *pbuf = NULL; + _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); + + pbuf = rtw_malloc(sizeof(l2_msg_t)); + if(pbuf) + { + copy_from_user(pbuf, wrqu->data.pointer, wrqu->data.length); + //_rtw_memcpy(pbuf, wrqu->data.pointer, wrqu->data.length); + + if( wrqu->data.flags == 0 ) + intel_widi_wk_cmd(padapter, INTEL_WIDI_ISSUE_PROB_WK, pbuf); + else if( wrqu->data.flags == 1 ) + rtw_set_wfd_rds_sink_info( padapter, (l2_msg_t *)pbuf ); + } + return ret; +} + +#endif // CONFIG_INTEL_WIDI + +#ifdef RTL8723A_SDIO_LOOPBACK +#include + +static s32 initLoopback(PADAPTER padapter) +{ + PLOOPBACKDATA ploopback; + + + if (padapter->ploopback == NULL) { + ploopback = (PLOOPBACKDATA)rtw_zmalloc(sizeof(LOOPBACKDATA)); + if (ploopback == NULL) return -ENOMEM; + + _rtw_init_sema(&ploopback->sema, 0); + + ploopback->bstop = _TRUE; + ploopback->cnt = 0; + ploopback->size = 300; + _rtw_memset(ploopback->msg, 0, sizeof(ploopback->msg)); + + padapter->ploopback = ploopback; + } + + return 0; +} + +static void freeLoopback(PADAPTER padapter) +{ + PLOOPBACKDATA ploopback; + + + ploopback = padapter->ploopback; + if (ploopback) { + rtw_mfree((u8*)ploopback, sizeof(LOOPBACKDATA)); + padapter->ploopback = NULL; + } +} + +static s32 initpseudoadhoc(PADAPTER padapter) +{ + NDIS_802_11_NETWORK_INFRASTRUCTURE networkType; + s32 err; + _irqL irqL; + struct mlme_priv *pmlmepriv = &padapter->mlmepriv; + _queue *queue = &pmlmepriv->scanned_queue; + + networkType = Ndis802_11IBSS; + _enter_critical_bh(&pmlmepriv->lock, &irqL); + _enter_critical_bh(&queue->lock, &irqL); + err = rtw_set_802_11_infrastructure_mode(padapter, networkType); + _exit_critical_bh(&queue->lock, &irqL); + _exit_critical_bh(&pmlmepriv->lock, &irqL); + if (err == _FALSE) return _FAIL; + + err = rtw_setopmode_cmd(padapter, networkType); + if (err == _FAIL) return _FAIL; + + return _SUCCESS; +} + +static s32 createpseudoadhoc(PADAPTER padapter) +{ + NDIS_802_11_AUTHENTICATION_MODE authmode; + struct mlme_priv *pmlmepriv; + NDIS_802_11_SSID *passoc_ssid; + WLAN_BSSID_EX *pdev_network; + u8 *pibss; + u8 ssid[] = "pseduo_ad-hoc"; + s32 err; + _irqL irqL; + + + pmlmepriv = &padapter->mlmepriv; + + authmode = Ndis802_11AuthModeOpen; + err = rtw_set_802_11_authentication_mode(padapter, authmode); + if (err == _FALSE) return _FAIL; + + passoc_ssid = &pmlmepriv->assoc_ssid; + _rtw_memset(passoc_ssid, 0, sizeof(NDIS_802_11_SSID)); + passoc_ssid->SsidLength = sizeof(ssid) - 1; + _rtw_memcpy(passoc_ssid->Ssid, ssid, passoc_ssid->SsidLength); + + pdev_network = &padapter->registrypriv.dev_network; + pibss = padapter->registrypriv.dev_network.MacAddress; + _rtw_memcpy(&pdev_network->Ssid, passoc_ssid, sizeof(NDIS_802_11_SSID)); + + rtw_update_registrypriv_dev_network(padapter); + rtw_generate_random_ibss(pibss); + + _enter_critical_bh(&pmlmepriv->lock, &irqL); + pmlmepriv->fw_state = WIFI_ADHOC_MASTER_STATE; + _exit_critical_bh(&pmlmepriv->lock, &irqL); + +#if 0 + err = rtw_createbss_cmd(padapter); + if (err == _FAIL) return _FAIL; +#else +{ + struct wlan_network *pcur_network; + struct sta_info *psta; + + //3 create a new psta + pcur_network = &pmlmepriv->cur_network; + + //clear psta in the cur_network, if any + psta = rtw_get_stainfo(&padapter->stapriv, pcur_network->network.MacAddress); + if (psta) rtw_free_stainfo(padapter, psta); + + psta = rtw_alloc_stainfo(&padapter->stapriv, pibss); + if (psta == NULL) return _FAIL; + + //3 join psudo AdHoc + pcur_network->join_res = 1; + pcur_network->aid = psta->aid = 1; + _rtw_memcpy(&pcur_network->network, pdev_network, get_WLAN_BSSID_EX_sz(pdev_network)); + + // set msr to WIFI_FW_ADHOC_STATE +#if 0 + Set_NETYPE0_MSR(padapter, WIFI_FW_ADHOC_STATE); +#else + { + u8 val8; + + val8 = rtw_read8(padapter, MSR); + val8 &= 0xFC; // clear NETYPE0 + val8 |= WIFI_FW_ADHOC_STATE & 0x3; + rtw_write8(padapter, MSR, val8); + } +#endif +} +#endif + + return _SUCCESS; +} + +extern void rtl8723a_cal_txdesc_chksum(struct tx_desc *ptxdesc); +extern void rtl8723a_fill_default_txdesc(struct xmit_frame *pxmitframe, u8 *pbuf); + +static struct xmit_frame* createloopbackpkt(PADAPTER padapter, u32 size) +{ + struct xmit_priv *pxmitpriv; + struct xmit_frame *pframe; + struct xmit_buf *pxmitbuf; + struct pkt_attrib *pattrib; + struct tx_desc *desc; + u8 *pkt_start, *pkt_end, *ptr; + struct rtw_ieee80211_hdr *hdr; + s32 bmcast; + _irqL irqL; + + + if ((TXDESC_SIZE + WLANHDR_OFFSET + size) > MAX_XMITBUF_SZ) return NULL; + + pxmitpriv = &padapter->xmitpriv; + pframe = NULL; + + //2 1. allocate xmit frame + pframe = rtw_alloc_xmitframe(pxmitpriv); + if (pframe == NULL) return NULL; + pframe->padapter = padapter; + + //2 2. allocate xmit buffer + _enter_critical_bh(&pxmitpriv->lock, &irqL); + pxmitbuf = rtw_alloc_xmitbuf(pxmitpriv); + _exit_critical_bh(&pxmitpriv->lock, &irqL); + if (pxmitbuf == NULL) { + rtw_free_xmitframe(pxmitpriv, pframe); + return NULL; + } + + pframe->pxmitbuf = pxmitbuf; + pframe->buf_addr = pxmitbuf->pbuf; + pxmitbuf->priv_data = pframe; + + //2 3. update_attrib() + pattrib = &pframe->attrib; + + // init xmitframe attribute + _rtw_memset(pattrib, 0, sizeof(struct pkt_attrib)); + + pattrib->ether_type = 0x8723; + _rtw_memcpy(pattrib->src, padapter->eeprompriv.mac_addr, ETH_ALEN); + _rtw_memcpy(pattrib->ta, pattrib->src, ETH_ALEN); + _rtw_memset(pattrib->dst, 0xFF, ETH_ALEN); + _rtw_memcpy(pattrib->ra, pattrib->dst, ETH_ALEN); +// pattrib->pctrl = 0; +// pattrib->dhcp_pkt = 0; +// pattrib->pktlen = 0; + pattrib->ack_policy = 0; +// pattrib->pkt_hdrlen = ETH_HLEN; + pattrib->hdrlen = WLAN_HDR_A3_LEN; + pattrib->subtype = WIFI_DATA; + pattrib->priority = 0; + pattrib->qsel = pattrib->priority; +// do_queue_select(padapter, pattrib); + pattrib->nr_frags = 1; + pattrib->encrypt = 0; + pattrib->bswenc = _FALSE; + pattrib->qos_en = _FALSE; + + bmcast = IS_MCAST(pattrib->ra); + if (bmcast) { + pattrib->mac_id = 1; + pattrib->psta = rtw_get_bcmc_stainfo(padapter); + } else { + pattrib->mac_id = 0; + pattrib->psta = rtw_get_stainfo(&padapter->stapriv, get_bssid(&padapter->mlmepriv)); + } + + pattrib->pktlen = size; + pattrib->last_txcmdsz = pattrib->hdrlen + pattrib->pktlen; + + //2 4. fill TX descriptor + desc = (struct tx_desc*)pframe->buf_addr; + _rtw_memset(desc, 0, TXDESC_SIZE); + + rtl8723a_fill_default_txdesc(pframe, (u8*)desc); + + // Hw set sequence number + ((PTXDESC)desc)->hwseq_en = 0; // HWSEQ_EN, 0:disable, 1:enable +// ((PTXDESC)desc)->hwseq_sel = 0; // HWSEQ_SEL + + ((PTXDESC)desc)->disdatafb = 1; + + // convert to little endian + desc->txdw0 = cpu_to_le32(desc->txdw0); + desc->txdw1 = cpu_to_le32(desc->txdw1); + desc->txdw2 = cpu_to_le32(desc->txdw2); + desc->txdw3 = cpu_to_le32(desc->txdw3); + desc->txdw4 = cpu_to_le32(desc->txdw4); + desc->txdw5 = cpu_to_le32(desc->txdw5); + desc->txdw6 = cpu_to_le32(desc->txdw6); + desc->txdw7 = cpu_to_le32(desc->txdw7); +#ifdef CONFIG_PCI_HCI + desc->txdw8 = cpu_to_le32(desc->txdw8); + desc->txdw9 = cpu_to_le32(desc->txdw9); + desc->txdw10 = cpu_to_le32(desc->txdw10); + desc->txdw11 = cpu_to_le32(desc->txdw11); + desc->txdw12 = cpu_to_le32(desc->txdw12); + desc->txdw13 = cpu_to_le32(desc->txdw13); + desc->txdw14 = cpu_to_le32(desc->txdw14); + desc->txdw15 = cpu_to_le32(desc->txdw15); +#endif + + rtl8723a_cal_txdesc_chksum(desc); + + //2 5. coalesce + pkt_start = pframe->buf_addr + TXDESC_SIZE; + pkt_end = pkt_start + pattrib->last_txcmdsz; + + //3 5.1. make wlan header, make_wlanhdr() + hdr = (struct rtw_ieee80211_hdr *)pkt_start; + SetFrameSubType(&hdr->frame_ctl, pattrib->subtype); + _rtw_memcpy(hdr->addr1, pattrib->dst, ETH_ALEN); // DA + _rtw_memcpy(hdr->addr2, pattrib->src, ETH_ALEN); // SA + _rtw_memcpy(hdr->addr3, get_bssid(&padapter->mlmepriv), ETH_ALEN); // RA, BSSID + + //3 5.2. make payload + ptr = pkt_start + pattrib->hdrlen; + get_random_bytes(ptr, pkt_end - ptr); + + pxmitbuf->len = TXDESC_SIZE + pattrib->last_txcmdsz; + pxmitbuf->ptail += pxmitbuf->len; + + return pframe; +} + +static void freeloopbackpkt(PADAPTER padapter, struct xmit_frame *pframe) +{ + struct xmit_priv *pxmitpriv; + struct xmit_buf *pxmitbuf; + + + pxmitpriv = &padapter->xmitpriv; + pxmitbuf = pframe->pxmitbuf; + + rtw_free_xmitframe(pxmitpriv, pframe); + rtw_free_xmitbuf(pxmitpriv, pxmitbuf); +} + +extern u32 get_txfifo_hwaddr(struct xmit_frame *pxmitframe); + +thread_return lbk_thread(thread_context context) +{ + s32 err; + PADAPTER padapter; + PLOOPBACKDATA ploopback; + struct xmit_frame *pxmitframe; + u32 cnt, ok, fail, i, headerlen; + u32 pktsize; + u32 ff_hwaddr; + + + padapter = (PADAPTER)context; + ploopback = padapter->ploopback; + if (ploopback == NULL) return -1; + cnt = 0; + ok = 0; + fail = 0; + + daemonize("%s", "RTW_LBK_THREAD"); + allow_signal(SIGTERM); + + do { + if (ploopback->size == 0) { + get_random_bytes(&pktsize, 4); + pktsize = (pktsize % 1535) + 1; // 1~1535 + } else + pktsize = ploopback->size; + + pxmitframe = createloopbackpkt(padapter, pktsize); + if (pxmitframe == NULL) { + sprintf(ploopback->msg, "loopback FAIL! 3. create Packet FAIL!"); + break; + } + + ploopback->txsize = TXDESC_SIZE + pxmitframe->attrib.last_txcmdsz; + _rtw_memcpy(ploopback->txbuf, pxmitframe->buf_addr, ploopback->txsize); + + ff_hwaddr = get_txfifo_hwaddr(pxmitframe); + rtw_write_port(padapter, ff_hwaddr, ploopback->txsize, ploopback->txbuf); + cnt++; + + _rtw_down_sema(&ploopback->sema); + +{ + PHAL_DATA_TYPE phal; + struct recv_stat *prxstat; + struct recv_stat report; + PRXREPORT prxreport; + u32 drvinfosize; + u32 rxpktsize; + u8 fcssize; + + prxstat = (struct recv_stat*)ploopback->rxbuf; + report.rxdw0 = le32_to_cpu(prxstat->rxdw0); + report.rxdw1 = le32_to_cpu(prxstat->rxdw1); + report.rxdw2 = le32_to_cpu(prxstat->rxdw2); + report.rxdw3 = le32_to_cpu(prxstat->rxdw3); + report.rxdw4 = le32_to_cpu(prxstat->rxdw4); + report.rxdw5 = le32_to_cpu(prxstat->rxdw5); + + prxreport = (PRXREPORT)&report; + drvinfosize = prxreport->drvinfosize << 3; + rxpktsize = prxreport->pktlen; + + phal = GET_HAL_DATA(padapter); + if (phal->ReceiveConfig & RCR_APPFCS) fcssize = IEEE80211_FCS_LEN; + else fcssize = 0; + + if ((ploopback->txsize - TXDESC_SIZE) != (rxpktsize - fcssize)) { + printk("%s: cnt=%d, size not match! tx=%d rx=%d\n", + __func__, i, ploopback->txsize - TXDESC_SIZE, + rxpktsize - fcssize); + err = _FALSE; + } else { + err = _rtw_memcmp(ploopback->txbuf + TXDESC_SIZE,\ + ploopback->rxbuf + RXDESC_SIZE + drvinfosize,\ + ploopback->txsize - TXDESC_SIZE); + } +} + + if (err == _TRUE) + ok++; + else + fail++; + + ploopback->txsize = 0; + _rtw_memset(ploopback->txbuf, 0, 0x8000); + ploopback->rxsize = 0; + _rtw_memset(ploopback->rxbuf, 0, 0x8000); + + freeloopbackpkt(padapter, pxmitframe); + pxmitframe = NULL; + + if (signal_pending(current)) { + flush_signals(current); + } + + if ((ploopback->bstop == _TRUE) || + ((ploopback->cnt != 0) && (ploopback->cnt == cnt))) + { + u32 ok_rate, fail_rate; + ok_rate = (ok*100)/cnt; + fail_rate = (fail*100)/cnt; + sprintf(ploopback->msg, "loopback result: ok=%d%%(%d/%d),error=%d%%(%d/%d)", ok_rate, ok, cnt, fail_rate, fail, cnt); + break; + } + } while (1); + + ploopback->bstop = _TRUE; + + thread_exit(); +} + +static void loopbackTest(PADAPTER padapter, u32 cnt, u32 size, u8* pmsg) +{ + PLOOPBACKDATA ploopback; + u32 len; + s32 err; + + + ploopback = padapter->ploopback; + + if (ploopback) + { + ploopback->bstop = _TRUE; + len = 0; + do { + len = strlen(ploopback->msg); + if (len) break; + rtw_msleep_os(1); + } while (1); + _rtw_memcpy(pmsg, ploopback->msg, len+1); + freeLoopback(padapter); + return; + } + + // create pseudo ad-hoc connection + err = initpseudoadhoc(padapter); + if (err == _FAIL) { + sprintf(pmsg, "loopback FAIL! 1.1 init ad-hoc FAIL!"); + return; + } + + err = createpseudoadhoc(padapter); + if (err == _FAIL) { + sprintf(pmsg, "loopback FAIL! 1.2 create ad-hoc master FAIL!"); + return; + } + + err = initLoopback(padapter); + if (err) { + sprintf(pmsg, "loopback FAIL! 2. init FAIL! error code=%d", err); + return; + } + + ploopback = padapter->ploopback; + + ploopback->bstop = _FALSE; + ploopback->cnt = cnt; + ploopback->size = size; + ploopback->lbkthread = kthread_run(lbk_thread, padapter, "RTW_LBK_THREAD"); + if (IS_ERR(padapter->lbkthread)) + { + freeLoopback(padapter); + sprintf(pmsg, "loopback start FAIL! cnt=%d", cnt); + return; + } + + sprintf(pmsg, "loopback start! cnt=%d", cnt); +} + +extern u8 _InitPowerOn(PADAPTER padapter); +extern s32 rtl8723a_FirmwareDownload(PADAPTER padapter); + +static int rtw_test( + struct net_device *dev, + struct iw_request_info *info, + union iwreq_data *wrqu, char *extra) +{ + u32 len; + u8 *pbuf, *pch; + char *ptmp; + u8 *delim = ","; + PADAPTER padapter = rtw_netdev_priv(dev); + + + printk("+%s\n", __func__); + len = wrqu->data.length; + + pbuf = (u8*)rtw_zmalloc(len); + if (pbuf == NULL) { + printk("%s: no memory!\n", __func__); + return -ENOMEM; + } + + if (copy_from_user(pbuf, wrqu->data.pointer, len)) { + rtw_mfree(pbuf, len); + printk("%s: copy from user fail!\n", __func__); + return -EFAULT; + } + printk("%s: string=\"%s\"\n", __func__, pbuf); + + ptmp = (char*)pbuf; + pch = strsep(&ptmp, delim); + if ((pch == NULL) || (strlen(pch) == 0)) { + rtw_mfree(pbuf, len); + printk("%s: parameter error(level 1)!\n", __func__); + return -EFAULT; + } + +#ifdef RTL8723A_SDIO_LOOPBACK + if (strcmp(pch, "loopback") == 0) + { + s32 cnt = 0; + u32 size = 64; + + pch = strsep(&ptmp, delim); + if ((pch == NULL) || (strlen(pch) == 0)) { + rtw_mfree(pbuf, len); + printk("%s: parameter error(level 2)!\n", __func__); + return -EFAULT; + } + + sscanf(pch, "%d", &cnt); + printk("%s: loopback cnt=%d\n", __func__, cnt); + + pch = strsep(&ptmp, delim); + if ((pch == NULL) || (strlen(pch) == 0)) { + rtw_mfree(pbuf, len); + printk("%s: parameter error(level 2)!\n", __func__); + return -EFAULT; + } + + sscanf(pch, "%d", &size); + printk("%s: loopback size=%d\n", __func__, size); + + loopbackTest(padapter, cnt, size, extra); + wrqu->data.length = strlen(extra) + 1; + + rtw_mfree(pbuf, len); + return 0; + } +#endif + + if (strcmp(pch, "poweron") == 0) + { + s32 ret; + + ret = _InitPowerOn(padapter); + if (_FAIL == ret) + printk("%s: power on FAIL!\n", __func__); + else + printk("%s: power on OK.\n", __func__); + + rtw_mfree(pbuf, len); + return 0; + } + + if (strcmp(pch, "dlfw") == 0) + { + s32 ret; + + ret = rtl8723a_FirmwareDownload(padapter); + if (_FAIL == ret) + printk("%s: download FW FAIL!\n", __func__); + else + printk("%s: download FW OK.\n", __func__); + + rtw_mfree(pbuf, len); + return 0; + } + + rtw_mfree(pbuf, len); + return 0; +} +#else +static int rtw_test( + struct net_device *dev, + struct iw_request_info *info, + union iwreq_data *wrqu, char *extra) +{ + printk("%s\n", __func__); + return 0; +} +#endif //RTL8723A_SDIO_LOOPBACK + +#include +int rtw_ioctl(struct net_device *dev, struct ifreq *rq, int cmd) +{ + struct iwreq *wrq = (struct iwreq *)rq; + int ret=0; + + switch (cmd) + { + case RTL_IOCTL_WPA_SUPPLICANT: + ret = wpa_supplicant_ioctl(dev, &wrq->u.data); + break; +#ifdef CONFIG_AP_MODE + case RTL_IOCTL_HOSTAPD: + ret = rtw_hostapd_ioctl(dev, &wrq->u.data); + break; +#ifdef CONFIG_NO_WIRELESS_HANDLERS + case SIOCSIWMODE: + ret = rtw_wx_set_mode(dev, NULL, &wrq->u, NULL); + break; +#endif +#endif + case (SIOCDEVPRIVATE+1): + ret = rtw_android_priv_cmd(dev, rq, cmd); + break; + default: + ret = -EOPNOTSUPP; + break; + } + + return ret; +} + +static iw_handler rtw_handlers[] = +{ + NULL, /* SIOCSIWCOMMIT */ + rtw_wx_get_name, /* SIOCGIWNAME */ + dummy, /* SIOCSIWNWID */ + dummy, /* SIOCGIWNWID */ + rtw_wx_set_freq, /* SIOCSIWFREQ */ + rtw_wx_get_freq, /* SIOCGIWFREQ */ + rtw_wx_set_mode, /* SIOCSIWMODE */ + rtw_wx_get_mode, /* SIOCGIWMODE */ + dummy, /* SIOCSIWSENS */ + rtw_wx_get_sens, /* SIOCGIWSENS */ + NULL, /* SIOCSIWRANGE */ + rtw_wx_get_range, /* SIOCGIWRANGE */ + rtw_wx_set_priv, /* SIOCSIWPRIV */ + NULL, /* SIOCGIWPRIV */ + NULL, /* SIOCSIWSTATS */ + NULL, /* SIOCGIWSTATS */ + dummy, /* SIOCSIWSPY */ + dummy, /* SIOCGIWSPY */ + NULL, /* SIOCGIWTHRSPY */ + NULL, /* SIOCWIWTHRSPY */ + rtw_wx_set_wap, /* SIOCSIWAP */ + rtw_wx_get_wap, /* SIOCGIWAP */ + rtw_wx_set_mlme, /* request MLME operation; uses struct iw_mlme */ + dummy, /* SIOCGIWAPLIST -- depricated */ + rtw_wx_set_scan, /* SIOCSIWSCAN */ + rtw_wx_get_scan, /* SIOCGIWSCAN */ + rtw_wx_set_essid, /* SIOCSIWESSID */ + rtw_wx_get_essid, /* SIOCGIWESSID */ + dummy, /* SIOCSIWNICKN */ + rtw_wx_get_nick, /* SIOCGIWNICKN */ + NULL, /* -- hole -- */ + NULL, /* -- hole -- */ + rtw_wx_set_rate, /* SIOCSIWRATE */ + rtw_wx_get_rate, /* SIOCGIWRATE */ + rtw_wx_set_rts, /* SIOCSIWRTS */ + rtw_wx_get_rts, /* SIOCGIWRTS */ + rtw_wx_set_frag, /* SIOCSIWFRAG */ + rtw_wx_get_frag, /* SIOCGIWFRAG */ + dummy, /* SIOCSIWTXPOW */ + dummy, /* SIOCGIWTXPOW */ + dummy, /* SIOCSIWRETRY */ + rtw_wx_get_retry, /* SIOCGIWRETRY */ + rtw_wx_set_enc, /* SIOCSIWENCODE */ + rtw_wx_get_enc, /* SIOCGIWENCODE */ + dummy, /* SIOCSIWPOWER */ + rtw_wx_get_power, /* SIOCGIWPOWER */ + NULL, /*---hole---*/ + NULL, /*---hole---*/ + rtw_wx_set_gen_ie, /* SIOCSIWGENIE */ + NULL, /* SIOCGWGENIE */ + rtw_wx_set_auth, /* SIOCSIWAUTH */ + NULL, /* SIOCGIWAUTH */ + rtw_wx_set_enc_ext, /* SIOCSIWENCODEEXT */ + NULL, /* SIOCGIWENCODEEXT */ + rtw_wx_set_pmkid, /* SIOCSIWPMKSA */ + NULL, /*---hole---*/ +}; + +#if defined(CONFIG_MP_INCLUDED) && defined(CONFIG_MP_IWPRIV_SUPPORT) + +static const struct iw_priv_args rtw_private_args[] = +{ + { SIOCIWFIRSTPRIV + 0x00, IW_PRIV_TYPE_CHAR | 1024, 0 , ""}, //set + { SIOCIWFIRSTPRIV + 0x01, IW_PRIV_TYPE_CHAR | 1024, IW_PRIV_TYPE_CHAR | IW_PRIV_SIZE_MASK , ""},//get +/* --- sub-ioctls definitions --- */ + { MP_START , IW_PRIV_TYPE_CHAR | 1024, 0, "mp_start" }, //set + { MP_PHYPARA, IW_PRIV_TYPE_CHAR | 1024, IW_PRIV_TYPE_CHAR | IW_PRIV_SIZE_MASK, "mp_phypara" },//get + { MP_STOP , IW_PRIV_TYPE_CHAR | 1024, 0, "mp_stop" }, //set + { MP_CHANNEL , IW_PRIV_TYPE_CHAR | 1024 , IW_PRIV_TYPE_CHAR | IW_PRIV_SIZE_MASK, "mp_channel" },//get + { MP_BANDWIDTH , IW_PRIV_TYPE_CHAR | 1024, 0, "mp_bandwidth"}, //set + { MP_RATE , IW_PRIV_TYPE_CHAR | 1024, IW_PRIV_TYPE_CHAR | IW_PRIV_SIZE_MASK, "mp_rate" },//get + { MP_RESET_STATS , IW_PRIV_TYPE_CHAR | 1024, 0, "mp_reset_stats"}, + { MP_QUERY , IW_PRIV_TYPE_CHAR | 1024, IW_PRIV_TYPE_CHAR | IW_PRIV_SIZE_MASK , "mp_query"}, //get + { MP_NULL, IW_PRIV_TYPE_CHAR | 128, 0,"NULL"},//set + { READ_REG , IW_PRIV_TYPE_CHAR | 1024, IW_PRIV_TYPE_CHAR | IW_PRIV_SIZE_MASK, "read_reg" }, + { MP_NULL, IW_PRIV_TYPE_CHAR | 128, 0,"NULL"},//set + { MP_RATE , IW_PRIV_TYPE_CHAR | 1024, IW_PRIV_TYPE_CHAR | IW_PRIV_SIZE_MASK, "mp_rate" }, + { MP_NULL, IW_PRIV_TYPE_CHAR | 128, 0,"NULL"},//set + { READ_RF , IW_PRIV_TYPE_CHAR | 1024, IW_PRIV_TYPE_CHAR | IW_PRIV_SIZE_MASK, "read_rf" }, + { MP_NULL, IW_PRIV_TYPE_CHAR | 128, 0,"NULL"},//set + { MP_PSD , IW_PRIV_TYPE_CHAR | 1024, IW_PRIV_TYPE_CHAR | IW_PRIV_SIZE_MASK, "mp_psd"}, + { MP_NULL, IW_PRIV_TYPE_CHAR | 128, 0,"NULL"},//set + { MP_DUMP, IW_PRIV_TYPE_CHAR | 1024, IW_PRIV_TYPE_CHAR | IW_PRIV_SIZE_MASK, "mp_dump" }, + { MP_NULL, IW_PRIV_TYPE_CHAR | 128, 0,"NULL"},//set + { MP_TXPOWER , IW_PRIV_TYPE_CHAR | 1024, IW_PRIV_TYPE_CHAR | IW_PRIV_SIZE_MASK, "mp_txpower"}, + { MP_NULL, IW_PRIV_TYPE_CHAR | 128, 0,"NULL"},//set + { MP_ANT_TX , IW_PRIV_TYPE_CHAR | 1024, IW_PRIV_TYPE_CHAR | IW_PRIV_SIZE_MASK, "mp_ant_tx"}, + { MP_NULL, IW_PRIV_TYPE_CHAR | 128, 0,"NULL"},//set + { MP_ANT_RX , IW_PRIV_TYPE_CHAR | 1024, IW_PRIV_TYPE_CHAR | IW_PRIV_SIZE_MASK, "mp_ant_rx"}, + { MP_NULL, IW_PRIV_TYPE_CHAR | 128, 0,"NULL"},//set + { WRITE_REG , IW_PRIV_TYPE_CHAR | 1024, IW_PRIV_TYPE_CHAR | IW_PRIV_SIZE_MASK, "write_reg" }, + { MP_NULL, IW_PRIV_TYPE_CHAR | 128, 0,"NULL"},//set + { WRITE_RF , IW_PRIV_TYPE_CHAR | 1024, IW_PRIV_TYPE_CHAR | IW_PRIV_SIZE_MASK, "write_rf" }, + { MP_NULL, IW_PRIV_TYPE_CHAR | 128, 0,"NULL"},//set + { MP_CTX , IW_PRIV_TYPE_CHAR | 1024, IW_PRIV_TYPE_CHAR | IW_PRIV_SIZE_MASK, "mp_ctx"}, + { MP_NULL, IW_PRIV_TYPE_CHAR | 128, 0,"NULL"},//set + { MP_ARX , IW_PRIV_TYPE_CHAR | 1024, IW_PRIV_TYPE_CHAR | IW_PRIV_SIZE_MASK, "mp_arx"}, + { MP_ANT_RX , IW_PRIV_TYPE_CHAR | 1024, 0, "mp_ant_rx"}, + { MP_THER , IW_PRIV_TYPE_CHAR | 1024, IW_PRIV_TYPE_CHAR | IW_PRIV_SIZE_MASK, "mp_ther"}, + { EFUSE_SET, IW_PRIV_TYPE_CHAR | 1024, 0, "efuse_set" }, + { EFUSE_GET, IW_PRIV_TYPE_CHAR | 1024, IW_PRIV_TYPE_CHAR | IW_PRIV_SIZE_MASK, "efuse_get" }, + { MP_NULL , IW_PRIV_TYPE_CHAR | 1024, 0, "NULL"}, + { MP_PWRTRK, IW_PRIV_TYPE_CHAR | 1024, IW_PRIV_TYPE_CHAR | IW_PRIV_SIZE_MASK, "mp_pwrtrk" }, + { MP_IOCTL, IW_PRIV_TYPE_CHAR | 1024, 0, "mp_ioctl"}, // mp_ioctl + + + { SIOCIWFIRSTPRIV + 0x02, IW_PRIV_TYPE_CHAR | 1024, IW_PRIV_TYPE_CHAR | IW_PRIV_SIZE_MASK , "test"},//set +}; + + +static iw_handler rtw_private_handler[] = +{ + rtw_mp_set, + rtw_mp_get, +}; + +#else // not inlucde MP + +static const struct iw_priv_args rtw_private_args[] = { + { + SIOCIWFIRSTPRIV + 0x0, + IW_PRIV_TYPE_CHAR | 0x7FF, 0, "write" + }, + { + SIOCIWFIRSTPRIV + 0x1, + IW_PRIV_TYPE_CHAR | 0x7FF, + IW_PRIV_TYPE_CHAR | IW_PRIV_SIZE_FIXED | IFNAMSIZ, "read" + }, + { + SIOCIWFIRSTPRIV + 0x2, 0, 0, "driver_ext" + }, + { + SIOCIWFIRSTPRIV + 0x3, 0, 0, "mp_ioctl" + }, + { + SIOCIWFIRSTPRIV + 0x4, + IW_PRIV_TYPE_INT | IW_PRIV_SIZE_FIXED | 1, 0, "apinfo" + }, + { + SIOCIWFIRSTPRIV + 0x5, + IW_PRIV_TYPE_INT | IW_PRIV_SIZE_FIXED | 2, 0, "setpid" + }, + { + SIOCIWFIRSTPRIV + 0x6, + IW_PRIV_TYPE_INT | IW_PRIV_SIZE_FIXED | 1, 0, "wps_start" + }, +//for PLATFORM_MT53XX + { + SIOCIWFIRSTPRIV + 0x7, + IW_PRIV_TYPE_INT | IW_PRIV_SIZE_FIXED | 1, 0, "get_sensitivity" + }, + { + SIOCIWFIRSTPRIV + 0x8, + IW_PRIV_TYPE_INT | IW_PRIV_SIZE_FIXED | 1, 0, "wps_prob_req_ie" + }, + { + SIOCIWFIRSTPRIV + 0x9, + IW_PRIV_TYPE_INT | IW_PRIV_SIZE_FIXED | 1, 0, "wps_assoc_req_ie" + }, + +//for RTK_DMP_PLATFORM + { + SIOCIWFIRSTPRIV + 0xA, + IW_PRIV_TYPE_INT | IW_PRIV_SIZE_FIXED | 1, 0, "channel_plan" + }, + + { + SIOCIWFIRSTPRIV + 0xB, + IW_PRIV_TYPE_INT | IW_PRIV_SIZE_FIXED | 2, 0, "dbg" + }, + { + SIOCIWFIRSTPRIV + 0xC, + IW_PRIV_TYPE_INT | IW_PRIV_SIZE_FIXED | 3, 0, "rfw" + }, + { + SIOCIWFIRSTPRIV + 0xD, + IW_PRIV_TYPE_INT | IW_PRIV_SIZE_FIXED | 2, IW_PRIV_TYPE_CHAR | IW_PRIV_SIZE_FIXED | IFNAMSIZ, "rfr" + }, +#ifdef CONFIG_WOWLAN + { + SIOCIWFIRSTPRIV + 0xE,0,0, "wowlan_ctrl" + }, +#endif // CONFIG_WOWLAN + { + SIOCIWFIRSTPRIV + 0x10, + IW_PRIV_TYPE_CHAR | 1024, 0, "p2p_set" + }, + { + SIOCIWFIRSTPRIV + 0x11, + IW_PRIV_TYPE_CHAR | 1024, IW_PRIV_TYPE_CHAR | IW_PRIV_SIZE_MASK , "p2p_get" + }, + { + SIOCIWFIRSTPRIV + 0x12, 0, 0, "NULL" + }, + { + SIOCIWFIRSTPRIV + 0x13, + IW_PRIV_TYPE_CHAR | 64, IW_PRIV_TYPE_CHAR | 64 , "p2p_get2" + }, + { + SIOCIWFIRSTPRIV + 0x14, + IW_PRIV_TYPE_CHAR | 64, 0, "tdls" + }, + { + SIOCIWFIRSTPRIV + 0x15, + IW_PRIV_TYPE_CHAR | P2P_PRIVATE_IOCTL_SET_LEN, IW_PRIV_TYPE_CHAR | IW_PRIV_SIZE_FIXED | P2P_PRIVATE_IOCTL_SET_LEN , "tdls_get" + }, + { + SIOCIWFIRSTPRIV + 0x16, + IW_PRIV_TYPE_CHAR | 64, 0, "pm_set" + }, + + {SIOCIWFIRSTPRIV + 0x18, IW_PRIV_TYPE_CHAR | IFNAMSIZ , 0 , "rereg_nd_name"}, + + {SIOCIWFIRSTPRIV + 0x1A, IW_PRIV_TYPE_CHAR | 128, 0, "efuse_set"}, + {SIOCIWFIRSTPRIV + 0x1B, IW_PRIV_TYPE_CHAR | 128, IW_PRIV_TYPE_CHAR |IW_PRIV_SIZE_FIXED |0x700 ,"efuse_get"}, + { + SIOCIWFIRSTPRIV + 0x1D, + IW_PRIV_TYPE_CHAR | 40, IW_PRIV_TYPE_CHAR | 0x7FF, "test" + }, +#ifdef CONFIG_INTEL_WIDI + { + SIOCIWFIRSTPRIV + 0x1E, + IW_PRIV_TYPE_CHAR | 1024, 0, "widi_set" + }, + { + SIOCIWFIRSTPRIV + 0x1F, + IW_PRIV_TYPE_CHAR | 128, 0, "widi_prob_req" + }, +#endif // CONFIG_INTEL_WIDI +}; + +static iw_handler rtw_private_handler[] = +{ + rtw_wx_write32, //0x00 + rtw_wx_read32, //0x01 + rtw_drvext_hdl, //0x02 + rtw_mp_ioctl_hdl, //0x03 + +// for MM DTV platform + rtw_get_ap_info, //0x04 + + rtw_set_pid, //0x05 + rtw_wps_start, //0x06 + +// for PLATFORM_MT53XX + rtw_wx_get_sensitivity, //0x07 + rtw_wx_set_mtk_wps_probe_ie, //0x08 + rtw_wx_set_mtk_wps_ie, //0x09 + +// for RTK_DMP_PLATFORM +// Set Channel depend on the country code + rtw_wx_set_channel_plan, //0x0A + + rtw_dbg_port, //0x0B + rtw_wx_write_rf, //0x0C + rtw_wx_read_rf, //0x0D + +#ifdef CONFIG_WOWLAN + rtw_wowlan_ctrl, //0x0E +#else + rtw_wx_priv_null, //0x0E +#endif //CONFIG_WOWLAN + rtw_wx_priv_null, //0x0F + + rtw_p2p_set, //0x10 + rtw_p2p_get, //0x11 + NULL, //0x12 + rtw_p2p_get2, //0x13 + + rtw_tdls, //0x14 + rtw_tdls_get, //0x15 + + rtw_pm_set, //0x16 + rtw_wx_priv_null, //0x17 + rtw_rereg_nd_name, //0x18 + rtw_wx_priv_null, //0x19 + + rtw_mp_efuse_set, //0x1A + rtw_mp_efuse_get, //0x1B + NULL, // 0x1C is reserved for hostapd + rtw_test , // 0x1D +#ifdef CONFIG_INTEL_WIDI + rtw_widi_set, //0x1E + rtw_widi_set_probe_request, //0x1F +#endif // CONFIG_INTEL_WIDI +}; + +#endif // #if defined(CONFIG_MP_INCLUDED) && defined(CONFIG_MP_IWPRIV_SUPPORT) + +#if WIRELESS_EXT >= 17 +static struct iw_statistics *rtw_get_wireless_stats(struct net_device *dev) +{ + _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); + struct iw_statistics *piwstats=&padapter->iwstats; + int tmp_level = 0; + int tmp_qual = 0; + int tmp_noise = 0; + + if (check_fwstate(&padapter->mlmepriv, _FW_LINKED) != _TRUE) + { + piwstats->qual.qual = 0; + piwstats->qual.level = 0; + piwstats->qual.noise = 0; + //DBG_871X("No link level:%d, qual:%d, noise:%d\n", tmp_level, tmp_qual, tmp_noise); + } + else{ + #ifdef CONFIG_SIGNAL_DISPLAY_DBM + tmp_level = translate_percentage_to_dbm(padapter->recvpriv.signal_strength); + #else + tmp_level = padapter->recvpriv.signal_strength; + #endif + + tmp_qual = padapter->recvpriv.signal_qual; + tmp_noise =padapter->recvpriv.noise; + //DBG_871X("level:%d, qual:%d, noise:%d, rssi (%d)\n", tmp_level, tmp_qual, tmp_noise,padapter->recvpriv.rssi); + + piwstats->qual.level = tmp_level; + piwstats->qual.qual = tmp_qual; + piwstats->qual.noise = tmp_noise; + } +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,14)) + piwstats->qual.updated = IW_QUAL_ALL_UPDATED ;//|IW_QUAL_DBM; +#else +#ifdef RTK_DMP_PLATFORM + //IW_QUAL_DBM= 0x8, if driver use this flag, wireless extension will show value of dbm. + //remove this flag for show percentage 0~100 + piwstats->qual.updated = 0x07; +#else + piwstats->qual.updated = 0x0f; +#endif +#endif + + #ifdef CONFIG_SIGNAL_DISPLAY_DBM + piwstats->qual.updated = piwstats->qual.updated | IW_QUAL_DBM; + #endif + + return &padapter->iwstats; +} +#endif + +#ifdef CONFIG_WIRELESS_EXT +struct iw_handler_def rtw_handlers_def = +{ + .standard = rtw_handlers, + .num_standard = sizeof(rtw_handlers) / sizeof(iw_handler), +#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,33)) || defined(CONFIG_WEXT_PRIV) + .private = rtw_private_handler, + .private_args = (struct iw_priv_args *)rtw_private_args, + .num_private = sizeof(rtw_private_handler) / sizeof(iw_handler), + .num_private_args = sizeof(rtw_private_args) / sizeof(struct iw_priv_args), +#endif +#if WIRELESS_EXT >= 17 + .get_wireless_stats = rtw_get_wireless_stats, +#endif +}; +#endif --- linux-raspi2-4.2.0.orig/drivers/net/wireless/rtl8192cu/os_dep/linux/mlme_linux.c +++ linux-raspi2-4.2.0/drivers/net/wireless/rtl8192cu/os_dep/linux/mlme_linux.c @@ -0,0 +1,585 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved. + * + * 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 + * published by the Free Software Foundation. + * + * 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 Street, Fifth Floor, Boston, MA 02110, USA + * + * + ******************************************************************************/ + + +#define _MLME_OSDEP_C_ + +#include +#include +#include +#include + + +#ifdef RTK_DMP_PLATFORM +void Linkup_workitem_callback(struct work_struct *work) +{ + struct mlme_priv *pmlmepriv = container_of(work, struct mlme_priv, Linkup_workitem); + _adapter *padapter = container_of(pmlmepriv, _adapter, mlmepriv); + +_func_enter_; + + RT_TRACE(_module_mlme_osdep_c_,_drv_info_,("+ Linkup_workitem_callback\n")); + +#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,12)) + kobject_uevent(&padapter->pnetdev->dev.kobj, KOBJ_LINKUP); +#else + kobject_hotplug(&padapter->pnetdev->class_dev.kobj, KOBJ_LINKUP); +#endif + +_func_exit_; +} + +void Linkdown_workitem_callback(struct work_struct *work) +{ + struct mlme_priv *pmlmepriv = container_of(work, struct mlme_priv, Linkdown_workitem); + _adapter *padapter = container_of(pmlmepriv, _adapter, mlmepriv); + +_func_enter_; + + RT_TRACE(_module_mlme_osdep_c_,_drv_info_,("+ Linkdown_workitem_callback\n")); + +#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,12)) + kobject_uevent(&padapter->pnetdev->dev.kobj, KOBJ_LINKDOWN); +#else + kobject_hotplug(&padapter->pnetdev->class_dev.kobj, KOBJ_LINKDOWN); +#endif + +_func_exit_; +} +#endif + + +/* +void sitesurvey_ctrl_handler(void *FunctionContext) +{ + _adapter *adapter = (_adapter *)FunctionContext; + + _sitesurvey_ctrl_handler(adapter); + + _set_timer(&adapter->mlmepriv.sitesurveyctrl.sitesurvey_ctrl_timer, 3000); +} +*/ + +void rtw_join_timeout_handler (void *FunctionContext) +{ + _adapter *adapter = (_adapter *)FunctionContext; + _rtw_join_timeout_handler(adapter); +} + + +void _rtw_scan_timeout_handler (void *FunctionContext) +{ + _adapter *adapter = (_adapter *)FunctionContext; + rtw_scan_timeout_handler(adapter); +} + + +void _dynamic_check_timer_handlder (void *FunctionContext) +{ + _adapter *adapter = (_adapter *)FunctionContext; + + rtw_dynamic_check_timer_handlder(adapter); + + _set_timer(&adapter->mlmepriv.dynamic_chk_timer, 2000); +} + +#ifdef CONFIG_SET_SCAN_DENY_TIMER +void _rtw_set_scan_deny_timer_hdl(void *FunctionContext) +{ + _adapter *adapter = (_adapter *)FunctionContext; + rtw_set_scan_deny_timer_hdl(adapter); +} +#endif + + +void rtw_init_mlme_timer(_adapter *padapter) +{ + struct mlme_priv *pmlmepriv = &padapter->mlmepriv; + + _init_timer(&(pmlmepriv->assoc_timer), padapter->pnetdev, rtw_join_timeout_handler, padapter); + //_init_timer(&(pmlmepriv->sitesurveyctrl.sitesurvey_ctrl_timer), padapter->pnetdev, sitesurvey_ctrl_handler, padapter); + _init_timer(&(pmlmepriv->scan_to_timer), padapter->pnetdev, _rtw_scan_timeout_handler, padapter); + + _init_timer(&(pmlmepriv->dynamic_chk_timer), padapter->pnetdev, _dynamic_check_timer_handlder, padapter); + + #ifdef CONFIG_SET_SCAN_DENY_TIMER + _init_timer(&(pmlmepriv->set_scan_deny_timer), padapter->pnetdev, _rtw_set_scan_deny_timer_hdl, padapter); + #endif + +#ifdef RTK_DMP_PLATFORM + _init_workitem(&(pmlmepriv->Linkup_workitem), Linkup_workitem_callback, padapter); + _init_workitem(&(pmlmepriv->Linkdown_workitem), Linkdown_workitem_callback, padapter); +#endif + +} + +extern void rtw_indicate_wx_assoc_event(_adapter *padapter); +extern void rtw_indicate_wx_disassoc_event(_adapter *padapter); + +void rtw_os_indicate_connect(_adapter *adapter) +{ + +_func_enter_; + +#ifdef CONFIG_IOCTL_CFG80211 + rtw_cfg80211_indicate_connect(adapter); +#endif //CONFIG_IOCTL_CFG80211 + + rtw_indicate_wx_assoc_event(adapter); + netif_carrier_on(adapter->pnetdev); + + if(adapter->pid[2] !=0) + rtw_signal_process(adapter->pid[2], SIGALRM); + +#ifdef RTK_DMP_PLATFORM + _set_workitem(&adapter->mlmepriv.Linkup_workitem); +#endif + +_func_exit_; + +} + +extern void indicate_wx_scan_complete_event(_adapter *padapter); +void rtw_os_indicate_scan_done( _adapter *padapter, bool aborted) +{ +#ifdef CONFIG_IOCTL_CFG80211 + rtw_cfg80211_indicate_scan_done(wdev_to_priv(padapter->rtw_wdev), aborted); +#endif + indicate_wx_scan_complete_event(padapter); +} + +static RT_PMKID_LIST backupPMKIDList[ NUM_PMKID_CACHE ]; +void rtw_reset_securitypriv( _adapter *adapter ) +{ + u8 backupPMKIDIndex = 0; + u8 backupTKIPCountermeasure = 0x00; + u32 backupTKIPcountermeasure_time = 0; + // add for CONFIG_IEEE80211W, none 11w also can use + _irqL irqL; + struct mlme_ext_priv *pmlmeext = &adapter->mlmeextpriv; + + _enter_critical_bh(&adapter->security_key_mutex, &irqL); + + if(adapter->securitypriv.dot11AuthAlgrthm == dot11AuthAlgrthm_8021X)//802.1x + { + // Added by Albert 2009/02/18 + // We have to backup the PMK information for WiFi PMK Caching test item. + // + // Backup the btkip_countermeasure information. + // When the countermeasure is trigger, the driver have to disconnect with AP for 60 seconds. + + _rtw_memset( &backupPMKIDList[ 0 ], 0x00, sizeof( RT_PMKID_LIST ) * NUM_PMKID_CACHE ); + + _rtw_memcpy( &backupPMKIDList[ 0 ], &adapter->securitypriv.PMKIDList[ 0 ], sizeof( RT_PMKID_LIST ) * NUM_PMKID_CACHE ); + backupPMKIDIndex = adapter->securitypriv.PMKIDIndex; + backupTKIPCountermeasure = adapter->securitypriv.btkip_countermeasure; + backupTKIPcountermeasure_time = adapter->securitypriv.btkip_countermeasure_time; +#ifdef CONFIG_IEEE80211W + //reset RX BIP packet number + pmlmeext->mgnt_80211w_IPN_rx = 0; +#endif //CONFIG_IEEE80211W + _rtw_memset((unsigned char *)&adapter->securitypriv, 0, sizeof (struct security_priv)); + //_init_timer(&(adapter->securitypriv.tkip_timer),adapter->pnetdev, rtw_use_tkipkey_handler, adapter); + + // Added by Albert 2009/02/18 + // Restore the PMK information to securitypriv structure for the following connection. + _rtw_memcpy( &adapter->securitypriv.PMKIDList[ 0 ], &backupPMKIDList[ 0 ], sizeof( RT_PMKID_LIST ) * NUM_PMKID_CACHE ); + adapter->securitypriv.PMKIDIndex = backupPMKIDIndex; + adapter->securitypriv.btkip_countermeasure = backupTKIPCountermeasure; + adapter->securitypriv.btkip_countermeasure_time = backupTKIPcountermeasure_time; + + adapter->securitypriv.ndisauthtype = Ndis802_11AuthModeOpen; + adapter->securitypriv.ndisencryptstatus = Ndis802_11WEPDisabled; + + } + else //reset values in securitypriv + { + //if(adapter->mlmepriv.fw_state & WIFI_STATION_STATE) + //{ + struct security_priv *psec_priv=&adapter->securitypriv; + + psec_priv->dot11AuthAlgrthm =dot11AuthAlgrthm_Open; //open system + psec_priv->dot11PrivacyAlgrthm = _NO_PRIVACY_; + psec_priv->dot11PrivacyKeyIndex = 0; + + psec_priv->dot118021XGrpPrivacy = _NO_PRIVACY_; + psec_priv->dot118021XGrpKeyid = 1; + + psec_priv->ndisauthtype = Ndis802_11AuthModeOpen; + psec_priv->ndisencryptstatus = Ndis802_11WEPDisabled; + //} + } + // add for CONFIG_IEEE80211W, none 11w also can use + _exit_critical_bh(&adapter->security_key_mutex, &irqL); +} + +void rtw_os_indicate_disconnect( _adapter *adapter ) +{ + //RT_PMKID_LIST backupPMKIDList[ NUM_PMKID_CACHE ]; + +_func_enter_; + + netif_carrier_off(adapter->pnetdev); // Do it first for tx broadcast pkt after disconnection issue! + +#ifdef CONFIG_IOCTL_CFG80211 + rtw_cfg80211_indicate_disconnect(adapter); +#endif //CONFIG_IOCTL_CFG80211 + + rtw_indicate_wx_disassoc_event(adapter); + +#ifdef RTK_DMP_PLATFORM + _set_workitem(&adapter->mlmepriv.Linkdown_workitem); +#endif + //modify for CONFIG_IEEE80211W, none 11w also can use the same command + rtw_reset_securitypriv_cmd(adapter); + +_func_exit_; + +} + +void rtw_report_sec_ie(_adapter *adapter,u8 authmode,u8 *sec_ie) +{ + uint len; + u8 *buff,*p,i; + union iwreq_data wrqu; + +_func_enter_; + + RT_TRACE(_module_mlme_osdep_c_,_drv_info_,("+rtw_report_sec_ie, authmode=%d\n", authmode)); + + buff = NULL; + if(authmode==_WPA_IE_ID_) + { + RT_TRACE(_module_mlme_osdep_c_,_drv_info_,("rtw_report_sec_ie, authmode=%d\n", authmode)); + + buff = rtw_malloc(IW_CUSTOM_MAX); + + _rtw_memset(buff,0,IW_CUSTOM_MAX); + + p=buff; + + p+=sprintf(p,"ASSOCINFO(ReqIEs="); + + len = sec_ie[1]+2; + len = (len < IW_CUSTOM_MAX) ? len:IW_CUSTOM_MAX; + + for(i=0;ipnetdev,IWEVCUSTOM,&wrqu,buff); + + if(buff) + rtw_mfree(buff, IW_CUSTOM_MAX); + + } + +_func_exit_; + +} + +void _survey_timer_hdl (void *FunctionContext) +{ + _adapter *padapter = (_adapter *)FunctionContext; + + survey_timer_hdl(padapter); +} + +void _link_timer_hdl (void *FunctionContext) +{ + _adapter *padapter = (_adapter *)FunctionContext; + link_timer_hdl(padapter); +} + +void _addba_timer_hdl(void *FunctionContext) +{ + struct sta_info *psta = (struct sta_info *)FunctionContext; + addba_timer_hdl(psta); +} + +#ifdef CONFIG_IEEE80211W +void _sa_query_timer_hdl (void *FunctionContext) +{ + _adapter *padapter = (_adapter *)FunctionContext; + sa_query_timer_hdl(padapter); +} +#endif //CONFIG_IEEE80211W + +void init_addba_retry_timer(_adapter *padapter, struct sta_info *psta) +{ + + _init_timer(&psta->addba_retry_timer, padapter->pnetdev, _addba_timer_hdl, psta); +} + +/* +void _reauth_timer_hdl(void *FunctionContext) +{ + _adapter *padapter = (_adapter *)FunctionContext; + reauth_timer_hdl(padapter); +} + +void _reassoc_timer_hdl(void *FunctionContext) +{ + _adapter *padapter = (_adapter *)FunctionContext; + reassoc_timer_hdl(padapter); +} +*/ + +void init_mlme_ext_timer(_adapter *padapter) +{ + struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; + + _init_timer(&pmlmeext->survey_timer, padapter->pnetdev, _survey_timer_hdl, padapter); + _init_timer(&pmlmeext->link_timer, padapter->pnetdev, _link_timer_hdl, padapter); +#ifdef CONFIG_IEEE80211W + _init_timer(&pmlmeext->sa_query_timer, padapter->pnetdev, _sa_query_timer_hdl, padapter); +#endif //CONFIG_IEEE80211W + //_init_timer(&pmlmeext->ADDBA_timer, padapter->pnetdev, _addba_timer_hdl, padapter); + + //_init_timer(&pmlmeext->reauth_timer, padapter->pnetdev, _reauth_timer_hdl, padapter); + //_init_timer(&pmlmeext->reassoc_timer, padapter->pnetdev, _reassoc_timer_hdl, padapter); +} + +#ifdef CONFIG_AP_MODE + +void rtw_indicate_sta_assoc_event(_adapter *padapter, struct sta_info *psta) +{ + union iwreq_data wrqu; + struct sta_priv *pstapriv = &padapter->stapriv; + + if(psta==NULL) + return; + + if(psta->aid > NUM_STA) + return; + + if(pstapriv->sta_aid[psta->aid - 1] != psta) + return; + + + wrqu.addr.sa_family = ARPHRD_ETHER; + + _rtw_memcpy(wrqu.addr.sa_data, psta->hwaddr, ETH_ALEN); + + DBG_871X("+rtw_indicate_sta_assoc_event\n"); + + wireless_send_event(padapter->pnetdev, IWEVREGISTERED, &wrqu, NULL); + +} + +void rtw_indicate_sta_disassoc_event(_adapter *padapter, struct sta_info *psta) +{ + union iwreq_data wrqu; + struct sta_priv *pstapriv = &padapter->stapriv; + + if(psta==NULL) + return; + + if(psta->aid > NUM_STA) + return; + + if(pstapriv->sta_aid[psta->aid - 1] != psta) + return; + + + wrqu.addr.sa_family = ARPHRD_ETHER; + + _rtw_memcpy(wrqu.addr.sa_data, psta->hwaddr, ETH_ALEN); + + DBG_871X("+rtw_indicate_sta_disassoc_event\n"); + + wireless_send_event(padapter->pnetdev, IWEVEXPIRED, &wrqu, NULL); + +} + + +#ifdef CONFIG_HOSTAPD_MLME + +static int mgnt_xmit_entry(struct sk_buff *skb, struct net_device *pnetdev) +{ + struct hostapd_priv *phostapdpriv = rtw_netdev_priv(pnetdev); + _adapter *padapter = (_adapter *)phostapdpriv->padapter; + + //DBG_871X("%s\n", __FUNCTION__); + + return rtw_hal_hostap_mgnt_xmit_entry(padapter, skb); +} + +static int mgnt_netdev_open(struct net_device *pnetdev) +{ + struct hostapd_priv *phostapdpriv = rtw_netdev_priv(pnetdev); + + DBG_871X("mgnt_netdev_open: MAC Address:" MAC_FMT "\n", MAC_ARG(pnetdev->dev_addr)); + + + init_usb_anchor(&phostapdpriv->anchored); + + if(!rtw_netif_queue_stopped(pnetdev)) + rtw_netif_start_queue(pnetdev); + else + rtw_netif_wake_queue(pnetdev); + + + netif_carrier_on(pnetdev); + + //rtw_write16(phostapdpriv->padapter, 0x0116, 0x0100);//only excluding beacon + + return 0; +} +static int mgnt_netdev_close(struct net_device *pnetdev) +{ + struct hostapd_priv *phostapdpriv = rtw_netdev_priv(pnetdev); + + DBG_871X("%s\n", __FUNCTION__); + + usb_kill_anchored_urbs(&phostapdpriv->anchored); + + netif_carrier_off(pnetdev); + + if (!rtw_netif_queue_stopped(pnetdev)) + rtw_netif_stop_queue(pnetdev); + + //rtw_write16(phostapdpriv->padapter, 0x0116, 0x3f3f); + + return 0; +} + +#if (LINUX_VERSION_CODE>=KERNEL_VERSION(2,6,29)) +static const struct net_device_ops rtl871x_mgnt_netdev_ops = { + .ndo_open = mgnt_netdev_open, + .ndo_stop = mgnt_netdev_close, + .ndo_start_xmit = mgnt_xmit_entry, + //.ndo_set_mac_address = r871x_net_set_mac_address, + //.ndo_get_stats = r871x_net_get_stats, + //.ndo_do_ioctl = r871x_mp_ioctl, +}; +#endif + +int hostapd_mode_init(_adapter *padapter) +{ + unsigned char mac[ETH_ALEN]; + struct hostapd_priv *phostapdpriv; + struct net_device *pnetdev; + + pnetdev = rtw_alloc_etherdev(sizeof(struct hostapd_priv)); + if (!pnetdev) + return -ENOMEM; + + //SET_MODULE_OWNER(pnetdev); + ether_setup(pnetdev); + + //pnetdev->type = ARPHRD_IEEE80211; + + phostapdpriv = rtw_netdev_priv(pnetdev); + phostapdpriv->pmgnt_netdev = pnetdev; + phostapdpriv->padapter= padapter; + padapter->phostapdpriv = phostapdpriv; + + //pnetdev->init = NULL; + +#if (LINUX_VERSION_CODE>=KERNEL_VERSION(2,6,29)) + + DBG_871X("register rtl871x_mgnt_netdev_ops to netdev_ops\n"); + + pnetdev->netdev_ops = &rtl871x_mgnt_netdev_ops; + +#else + + pnetdev->open = mgnt_netdev_open; + + pnetdev->stop = mgnt_netdev_close; + + pnetdev->hard_start_xmit = mgnt_xmit_entry; + + //pnetdev->set_mac_address = r871x_net_set_mac_address; + + //pnetdev->get_stats = r871x_net_get_stats; + + //pnetdev->do_ioctl = r871x_mp_ioctl; + +#endif + + pnetdev->watchdog_timeo = HZ; /* 1 second timeout */ + + //pnetdev->wireless_handlers = NULL; + +#ifdef CONFIG_TCP_CSUM_OFFLOAD_TX + pnetdev->features |= NETIF_F_IP_CSUM; +#endif + + + + if(dev_alloc_name(pnetdev,"mgnt.wlan%d") < 0) + { + DBG_871X("hostapd_mode_init(): dev_alloc_name, fail! \n"); + } + + + //SET_NETDEV_DEV(pnetdev, pintfpriv->udev); + + + mac[0]=0x00; + mac[1]=0xe0; + mac[2]=0x4c; + mac[3]=0x87; + mac[4]=0x11; + mac[5]=0x12; + + _rtw_memcpy(pnetdev->dev_addr, mac, ETH_ALEN); + + + netif_carrier_off(pnetdev); + + + /* Tell the network stack we exist */ + if (register_netdev(pnetdev) != 0) + { + DBG_871X("hostapd_mode_init(): register_netdev fail!\n"); + + if(pnetdev) + { + rtw_free_netdev(pnetdev); + } + } + + return 0; + +} + +void hostapd_mode_unload(_adapter *padapter) +{ + struct hostapd_priv *phostapdpriv = padapter->phostapdpriv; + struct net_device *pnetdev = phostapdpriv->pmgnt_netdev; + + unregister_netdev(pnetdev); + rtw_free_netdev(pnetdev); + +} + +#endif +#endif --- linux-raspi2-4.2.0.orig/drivers/net/wireless/rtl8192cu/os_dep/linux/os_intfs.c +++ linux-raspi2-4.2.0/drivers/net/wireless/rtl8192cu/os_dep/linux/os_intfs.c @@ -0,0 +1,2748 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved. + * + * 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 + * published by the Free Software Foundation. + * + * 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 Street, Fifth Floor, Boston, MA 02110, USA + * + * + ******************************************************************************/ +#define _OS_INTFS_C_ + +#include + +#if defined (PLATFORM_LINUX) && defined (PLATFORM_WINDOWS) + +#error "Shall be Linux or Windows, but not both!\n" + +#endif + +#include +#include +#include +#include +#include +#include +#include + +#ifdef CONFIG_USB_HCI +#include +#endif + +#ifdef CONFIG_PCI_HCI +#include +#endif + +#ifdef CONFIG_BR_EXT +#include +#endif //CONFIG_BR_EXT + +MODULE_LICENSE("GPL"); +MODULE_DESCRIPTION("Realtek Wireless Lan Driver"); +MODULE_AUTHOR("Realtek Semiconductor Corp."); +MODULE_VERSION(DRIVERVERSION); + +/* module param defaults */ +int rtw_chip_version = 0x00; +int rtw_rfintfs = HWPI; +int rtw_lbkmode = 0;//RTL8712_AIR_TRX; + + +int rtw_network_mode = Ndis802_11IBSS;//Ndis802_11Infrastructure;//infra, ad-hoc, auto +//NDIS_802_11_SSID ssid; +int rtw_channel = 1;//ad-hoc support requirement +int rtw_wireless_mode = WIRELESS_11BG_24N; +int rtw_vrtl_carrier_sense = AUTO_VCS; +int rtw_vcs_type = RTS_CTS;//* +int rtw_rts_thresh = 2347;//* +int rtw_frag_thresh = 2346;//* +int rtw_preamble = PREAMBLE_LONG;//long, short, auto +int rtw_scan_mode = 1;//active, passive +int rtw_adhoc_tx_pwr = 1; +int rtw_soft_ap = 0; +//int smart_ps = 1; +#ifdef CONFIG_POWER_SAVING +int rtw_power_mgnt = 1; +#ifdef CONFIG_IPS_LEVEL_2 +int rtw_ips_mode = IPS_LEVEL_2; +#else +int rtw_ips_mode = IPS_NORMAL; +#endif +#else +int rtw_power_mgnt = PS_MODE_ACTIVE; +int rtw_ips_mode = IPS_NONE; +#endif +module_param(rtw_ips_mode, int, 0644); +MODULE_PARM_DESC(rtw_ips_mode,"The default IPS mode"); + +int rtw_radio_enable = 1; +int rtw_long_retry_lmt = 7; +int rtw_short_retry_lmt = 7; +int rtw_busy_thresh = 40; +//int qos_enable = 0; //* +int rtw_ack_policy = NORMAL_ACK; +#ifdef CONFIG_MP_INCLUDED +int rtw_mp_mode = 1; +#else +int rtw_mp_mode = 0; +#endif +int rtw_software_encrypt = 0; +int rtw_software_decrypt = 0; + +int rtw_acm_method = 0;// 0:By SW 1:By HW. + +int rtw_wmm_enable = 1;// default is set to enable the wmm. +int rtw_uapsd_enable = 0; +int rtw_uapsd_max_sp = NO_LIMIT; +int rtw_uapsd_acbk_en = 0; +int rtw_uapsd_acbe_en = 0; +int rtw_uapsd_acvi_en = 0; +int rtw_uapsd_acvo_en = 0; + +#ifdef CONFIG_80211N_HT +int rtw_ht_enable = 1; +int rtw_cbw40_enable = 3; // 0 :diable, bit(0): enable 2.4g, bit(1): enable 5g +int rtw_ampdu_enable = 1;//for enable tx_ampdu +int rtw_rx_stbc = 1;// 0: disable, bit(0):enable 2.4g, bit(1):enable 5g, default is set to enable 2.4GHZ for IOT issue with bufflao's AP at 5GHZ +int rtw_ampdu_amsdu = 0;// 0: disabled, 1:enabled, 2:auto +#endif + +int rtw_lowrate_two_xmit = 1;//Use 2 path Tx to transmit MCS0~7 and legacy mode + +//int rf_config = RF_1T2R; // 1T2R +int rtw_rf_config = RF_819X_MAX_TYPE; //auto +int rtw_low_power = 0; +#ifdef CONFIG_WIFI_TEST +int rtw_wifi_spec = 1;//for wifi test +#else +int rtw_wifi_spec = 0; +#endif + +int rtw_special_rf_path = 0; //0: 2T2R ,1: only turn on path A 1T1R, 2: only turn on path B 1T1R + +int rtw_channel_plan = RT_CHANNEL_DOMAIN_MAX; + +#ifdef CONFIG_BT_COEXIST +int rtw_bt_iso = 2;// 0:Low, 1:High, 2:From Efuse +int rtw_bt_sco = 3;// 0:Idle, 1:None-SCO, 2:SCO, 3:From Counter, 4.Busy, 5.OtherBusy +int rtw_bt_ampdu =1 ;// 0:Disable BT control A-MPDU, 1:Enable BT control A-MPDU. +#endif +int rtw_AcceptAddbaReq = _TRUE;// 0:Reject AP's Add BA req, 1:Accept AP's Add BA req. + +int rtw_antdiv_cfg = 2; // 0:OFF , 1:ON, 2:decide by Efuse config + +#ifdef CONFIG_USB_AUTOSUSPEND +int rtw_enusbss = 1;//0:disable,1:enable +#else +int rtw_enusbss = 0;//0:disable,1:enable +#endif + +int rtw_hwpdn_mode=2;//0:disable,1:enable,2: by EFUSE config + +#ifdef CONFIG_HW_PWRP_DETECTION +int rtw_hwpwrp_detect = 1; +#else +int rtw_hwpwrp_detect = 0; //HW power ping detect 0:disable , 1:enable +#endif + +#ifdef CONFIG_USB_HCI +int rtw_hw_wps_pbc = 1; +#else +int rtw_hw_wps_pbc = 0; +#endif + +#ifdef CONFIG_TX_MCAST2UNI +int rtw_mc2u_disable = 0; +#endif // CONFIG_TX_MCAST2UNI + +int rtw_mac_phy_mode = 0; //0:by efuse, 1:smsp, 2:dmdp, 3:dmsp. + +#ifdef CONFIG_80211D +int rtw_80211d = 0; +#endif + +char* ifname = "wlan%d"; +module_param(ifname, charp, 0644); +MODULE_PARM_DESC(ifname, "The default name to allocate for first interface"); + +char* if2name = "wlan%d"; +module_param(if2name, charp, 0644); +MODULE_PARM_DESC(if2name, "The default name to allocate for second interface"); + +char* rtw_initmac = 0; // temp mac address if users want to use instead of the mac address in Efuse + +#ifdef CONFIG_MULTI_VIR_IFACES +int rtw_ext_iface_num = 1;//primary/secondary iface is excluded +module_param(rtw_ext_iface_num, int, 0644); +#endif //CONFIG_MULTI_VIR_IFACES + +module_param(rtw_initmac, charp, 0644); +module_param(rtw_channel_plan, int, 0644); +module_param(rtw_chip_version, int, 0644); +module_param(rtw_rfintfs, int, 0644); +module_param(rtw_lbkmode, int, 0644); +module_param(rtw_network_mode, int, 0644); +module_param(rtw_channel, int, 0644); +module_param(rtw_mp_mode, int, 0644); +module_param(rtw_wmm_enable, int, 0644); +module_param(rtw_vrtl_carrier_sense, int, 0644); +module_param(rtw_vcs_type, int, 0644); +module_param(rtw_busy_thresh, int, 0644); +#ifdef CONFIG_80211N_HT +module_param(rtw_ht_enable, int, 0644); +module_param(rtw_cbw40_enable, int, 0644); +module_param(rtw_ampdu_enable, int, 0644); +module_param(rtw_rx_stbc, int, 0644); +module_param(rtw_ampdu_amsdu, int, 0644); +#endif + +module_param(rtw_lowrate_two_xmit, int, 0644); + +module_param(rtw_rf_config, int, 0644); +module_param(rtw_power_mgnt, int, 0644); +module_param(rtw_low_power, int, 0644); +module_param(rtw_wifi_spec, int, 0644); + +module_param(rtw_special_rf_path, int, 0644); + +module_param(rtw_antdiv_cfg, int, 0644); + + +module_param(rtw_enusbss, int, 0644); +module_param(rtw_hwpdn_mode, int, 0644); +module_param(rtw_hwpwrp_detect, int, 0644); + +module_param(rtw_hw_wps_pbc, int, 0644); + +#ifdef CONFIG_ADAPTOR_INFO_CACHING_FILE +char *rtw_adaptor_info_caching_file_path= "/data/misc/wifi/rtw_cache"; +module_param(rtw_adaptor_info_caching_file_path, charp, 0644); +MODULE_PARM_DESC(rtw_adaptor_info_caching_file_path, "The path of adapter info cache file"); +#endif //CONFIG_ADAPTOR_INFO_CACHING_FILE + +#ifdef CONFIG_LAYER2_ROAMING +uint rtw_max_roaming_times=2; +module_param(rtw_max_roaming_times, uint, 0644); +MODULE_PARM_DESC(rtw_max_roaming_times,"The max roaming times to try"); +#endif //CONFIG_LAYER2_ROAMING + +#ifdef CONFIG_IOL +bool rtw_force_iol=_FALSE; +module_param(rtw_force_iol, bool, 0644); +MODULE_PARM_DESC(rtw_force_iol,"Force to enable IOL"); +#endif //CONFIG_IOL + +#ifdef CONFIG_FILE_FWIMG +char *rtw_fw_file_path= ""; +module_param(rtw_fw_file_path, charp, 0644); +MODULE_PARM_DESC(rtw_fw_file_path, "The path of fw image"); +#endif //CONFIG_FILE_FWIMG + +#ifdef CONFIG_TX_MCAST2UNI +module_param(rtw_mc2u_disable, int, 0644); +#endif // CONFIG_TX_MCAST2UNI + +module_param(rtw_mac_phy_mode, int, 0644); + +#ifdef CONFIG_80211D +module_param(rtw_80211d, int, 0644); +#endif + +uint rtw_notch_filter = RTW_NOTCH_FILTER; +module_param(rtw_notch_filter, uint, 0644); +MODULE_PARM_DESC(rtw_notch_filter, "0:Disable, 1:Enable, 2:Enable only for P2P"); + +static uint loadparam( _adapter *padapter, _nic_hdl pnetdev); +int _netdev_open(struct net_device *pnetdev); +int netdev_open (struct net_device *pnetdev); +static int netdev_close (struct net_device *pnetdev); + +//#ifdef RTK_DMP_PLATFORM +#ifdef CONFIG_PROC_DEBUG +#define RTL8192C_PROC_NAME "rtl819xC" +#define RTL8192D_PROC_NAME "rtl819xD" +static char rtw_proc_name[IFNAMSIZ]; +static struct proc_dir_entry *rtw_proc = NULL; +static int rtw_proc_cnt = 0; + +#define RTW_PROC_NAME DRV_NAME + +void rtw_proc_init_one(struct net_device *dev) +{ + struct proc_dir_entry *dir_dev = NULL; + struct proc_dir_entry *entry=NULL; + _adapter *padapter = rtw_netdev_priv(dev); + u8 rf_type; + + if(rtw_proc == NULL) + { + if(padapter->chip_type == RTL8188C_8192C) + { + _rtw_memcpy(rtw_proc_name, RTL8192C_PROC_NAME, sizeof(RTL8192C_PROC_NAME)); + } + else if(padapter->chip_type == RTL8192D) + { + _rtw_memcpy(rtw_proc_name, RTL8192D_PROC_NAME, sizeof(RTL8192D_PROC_NAME)); + } + else if(padapter->chip_type == RTL8723A) + { + _rtw_memcpy(rtw_proc_name, RTW_PROC_NAME, sizeof(RTW_PROC_NAME)); + } + else if(padapter->chip_type == RTL8188E) + { + _rtw_memcpy(rtw_proc_name, RTW_PROC_NAME, sizeof(RTW_PROC_NAME)); + } + else + { + _rtw_memcpy(rtw_proc_name, RTW_PROC_NAME, sizeof(RTW_PROC_NAME)); + } + +#if(LINUX_VERSION_CODE < KERNEL_VERSION(2,6,24)) + rtw_proc=create_proc_entry(rtw_proc_name, S_IFDIR, proc_net); +#else + rtw_proc=create_proc_entry(rtw_proc_name, S_IFDIR, init_net.proc_net); +#endif + if (rtw_proc == NULL) { + DBG_871X(KERN_ERR "Unable to create rtw_proc directory\n"); + return; + } + + entry = create_proc_read_entry("ver_info", S_IFREG | S_IRUGO, rtw_proc, proc_get_drv_version, dev); + if (!entry) { + DBG_871X("Unable to create_proc_read_entry!\n"); + return; + } + + entry = create_proc_read_entry("log_level", S_IFREG | S_IRUGO, + rtw_proc, proc_get_log_level, dev); + if (!entry) { + DBG_871X("Unable to create_proc_read_entry!\n"); + return; + } + entry->write_proc = proc_set_log_level; + +#ifdef DBG_MEM_ALLOC + entry = create_proc_read_entry("mstat", S_IFREG | S_IRUGO, + rtw_proc, proc_get_mstat, dev); + if (!entry) { + DBG_871X("Unable to create_proc_read_entry!\n"); + return; + } +#endif /* DBG_MEM_ALLOC */ + } + + + + if(padapter->dir_dev == NULL) + { + padapter->dir_dev = create_proc_entry(dev->name, + S_IFDIR | S_IRUGO | S_IXUGO, + rtw_proc); + + dir_dev = padapter->dir_dev; + + if(dir_dev==NULL) + { + if(rtw_proc_cnt == 0) + { + if(rtw_proc){ +#if(LINUX_VERSION_CODE < KERNEL_VERSION(2,6,24)) + remove_proc_entry(rtw_proc_name, proc_net); +#else + remove_proc_entry(rtw_proc_name, init_net.proc_net); +#endif + rtw_proc = NULL; + } + } + + DBG_871X("Unable to create dir_dev directory\n"); + return; + } + } + else + { + return; + } + + rtw_proc_cnt++; + + entry = create_proc_read_entry("write_reg", S_IFREG | S_IRUGO, + dir_dev, proc_get_write_reg, dev); + if (!entry) { + DBG_871X("Unable to create_proc_read_entry!\n"); + return; + } + entry->write_proc = proc_set_write_reg; + + entry = create_proc_read_entry("read_reg", S_IFREG | S_IRUGO, + dir_dev, proc_get_read_reg, dev); + if (!entry) { + DBG_871X("Unable to create_proc_read_entry!\n"); + return; + } + entry->write_proc = proc_set_read_reg; + + + entry = create_proc_read_entry("fwstate", S_IFREG | S_IRUGO, + dir_dev, proc_get_fwstate, dev); + if (!entry) { + DBG_871X("Unable to create_proc_read_entry!\n"); + return; + } + + + entry = create_proc_read_entry("sec_info", S_IFREG | S_IRUGO, + dir_dev, proc_get_sec_info, dev); + if (!entry) { + DBG_871X("Unable to create_proc_read_entry!\n"); + return; + } + + + entry = create_proc_read_entry("mlmext_state", S_IFREG | S_IRUGO, + dir_dev, proc_get_mlmext_state, dev); + if (!entry) { + DBG_871X("Unable to create_proc_read_entry!\n"); + return; + } + + + entry = create_proc_read_entry("qos_option", S_IFREG | S_IRUGO, + dir_dev, proc_get_qos_option, dev); + if (!entry) { + DBG_871X("Unable to create_proc_read_entry!\n"); + return; + } + + entry = create_proc_read_entry("ht_option", S_IFREG | S_IRUGO, + dir_dev, proc_get_ht_option, dev); + if (!entry) { + DBG_871X("Unable to create_proc_read_entry!\n"); + return; + } + + entry = create_proc_read_entry("rf_info", S_IFREG | S_IRUGO, + dir_dev, proc_get_rf_info, dev); + if (!entry) { + DBG_871X("Unable to create_proc_read_entry!\n"); + return; + } + + entry = create_proc_read_entry("ap_info", S_IFREG | S_IRUGO, + dir_dev, proc_get_ap_info, dev); + if (!entry) { + DBG_871X("Unable to create_proc_read_entry!\n"); + return; + } + + entry = create_proc_read_entry("adapter_state", S_IFREG | S_IRUGO, + dir_dev, proc_get_adapter_state, dev); + if (!entry) { + DBG_871X("Unable to create_proc_read_entry!\n"); + return; + } + + entry = create_proc_read_entry("trx_info", S_IFREG | S_IRUGO, + dir_dev, proc_get_trx_info, dev); + if (!entry) { + DBG_871X("Unable to create_proc_read_entry!\n"); + return; + } + + entry = create_proc_read_entry("mac_reg_dump1", S_IFREG | S_IRUGO, + dir_dev, proc_get_mac_reg_dump1, dev); + if (!entry) { + DBG_871X("Unable to create_proc_read_entry!\n"); + return; + } + + entry = create_proc_read_entry("mac_reg_dump2", S_IFREG | S_IRUGO, + dir_dev, proc_get_mac_reg_dump2, dev); + if (!entry) { + DBG_871X("Unable to create_proc_read_entry!\n"); + return; + } + + entry = create_proc_read_entry("mac_reg_dump3", S_IFREG | S_IRUGO, + dir_dev, proc_get_mac_reg_dump3, dev); + if (!entry) { + DBG_871X("Unable to create_proc_read_entry!\n"); + return; + } + + entry = create_proc_read_entry("bb_reg_dump1", S_IFREG | S_IRUGO, + dir_dev, proc_get_bb_reg_dump1, dev); + if (!entry) { + DBG_871X("Unable to create_proc_read_entry!\n"); + return; + } + + entry = create_proc_read_entry("bb_reg_dump2", S_IFREG | S_IRUGO, + dir_dev, proc_get_bb_reg_dump2, dev); + if (!entry) { + DBG_871X("Unable to create_proc_read_entry!\n"); + return; + } + + entry = create_proc_read_entry("bb_reg_dump3", S_IFREG | S_IRUGO, + dir_dev, proc_get_bb_reg_dump3, dev); + if (!entry) { + DBG_871X("Unable to create_proc_read_entry!\n"); + return; + } + + entry = create_proc_read_entry("rf_reg_dump1", S_IFREG | S_IRUGO, + dir_dev, proc_get_rf_reg_dump1, dev); + if (!entry) { + DBG_871X("Unable to create_proc_read_entry!\n"); + return; + } + + entry = create_proc_read_entry("rf_reg_dump2", S_IFREG | S_IRUGO, + dir_dev, proc_get_rf_reg_dump2, dev); + if (!entry) { + DBG_871X("Unable to create_proc_read_entry!\n"); + return; + } + + rtw_hal_get_hwreg(padapter, HW_VAR_RF_TYPE, (u8 *)(&rf_type)); + if((RF_1T2R == rf_type) ||(RF_1T1R ==rf_type )) { + entry = create_proc_read_entry("rf_reg_dump3", S_IFREG | S_IRUGO, + dir_dev, proc_get_rf_reg_dump3, dev); + if (!entry) { + DBG_871X("Unable to create_proc_read_entry!\n"); + return; + } + + entry = create_proc_read_entry("rf_reg_dump4", S_IFREG | S_IRUGO, + dir_dev, proc_get_rf_reg_dump4, dev); + if (!entry) { + DBG_871X("Unable to create_proc_read_entry!\n"); + return; + } + } + +#ifdef CONFIG_AP_MODE + + entry = create_proc_read_entry("all_sta_info", S_IFREG | S_IRUGO, + dir_dev, proc_get_all_sta_info, dev); + if (!entry) { + DBG_871X("Unable to create_proc_read_entry!\n"); + return; + } +#endif + +#ifdef DBG_MEMORY_LEAK + entry = create_proc_read_entry("_malloc_cnt", S_IFREG | S_IRUGO, + dir_dev, proc_get_malloc_cnt, dev); + if (!entry) { + DBG_871X("Unable to create_proc_read_entry!\n"); + return; + } +#endif + +#ifdef CONFIG_FIND_BEST_CHANNEL + entry = create_proc_read_entry("best_channel", S_IFREG | S_IRUGO, + dir_dev, proc_get_best_channel, dev); + if (!entry) { + DBG_871X("Unable to create_proc_read_entry!\n"); + return; + } + entry->write_proc = proc_set_best_channel; +#endif + + entry = create_proc_read_entry("rx_signal", S_IFREG | S_IRUGO, + dir_dev, proc_get_rx_signal, dev); + if (!entry) { + DBG_871X("Unable to create_proc_read_entry!\n"); + return; + } + entry->write_proc = proc_set_rx_signal; + + entry = create_proc_read_entry("ht_enable", S_IFREG | S_IRUGO, + dir_dev, proc_get_ht_enable, dev); + if (!entry) { + DBG_871X("Unable to create_proc_read_entry!\n"); + return; + } + entry->write_proc = proc_set_ht_enable; + + entry = create_proc_read_entry("cbw40_enable", S_IFREG | S_IRUGO, + dir_dev, proc_get_cbw40_enable, dev); + if (!entry) { + DBG_871X("Unable to create_proc_read_entry!\n"); + return; + } + entry->write_proc = proc_set_cbw40_enable; + + entry = create_proc_read_entry("ampdu_enable", S_IFREG | S_IRUGO, + dir_dev, proc_get_ampdu_enable, dev); + if (!entry) { + DBG_871X("Unable to create_proc_read_entry!\n"); + return; + } + entry->write_proc = proc_set_ampdu_enable; + + entry = create_proc_read_entry("rx_stbc", S_IFREG | S_IRUGO, + dir_dev, proc_get_rx_stbc, dev); + if (!entry) { + DBG_871X("Unable to create_proc_read_entry!\n"); + return; + } + entry->write_proc = proc_set_rx_stbc; + + + entry = create_proc_read_entry("path_rssi", S_IFREG | S_IRUGO, + dir_dev, proc_get_two_path_rssi, dev); + + entry = create_proc_read_entry("vid", S_IFREG | S_IRUGO, + dir_dev, proc_get_vid, dev); + if (!entry) { + DBG_871X("Unable to create_proc_read_entry!\n"); + return; + } + + entry = create_proc_read_entry("pid", S_IFREG | S_IRUGO, + dir_dev, proc_get_pid, dev); + if (!entry) { + DBG_871X("Unable to create_proc_read_entry!\n"); + return; + } + + entry = create_proc_read_entry("rssi_disp", S_IFREG | S_IRUGO, + dir_dev, proc_get_rssi_disp, dev); + if (!entry) { + DBG_871X("Unable to create_proc_read_entry!\n"); + return; + } + entry->write_proc = proc_set_rssi_disp; + +#if defined(DBG_CONFIG_ERROR_DETECT) + entry = create_proc_read_entry("sreset", S_IFREG | S_IRUGO, + dir_dev, proc_get_sreset, dev); + if (!entry) { + DBG_871X("Unable to create_proc_read_entry!\n"); + return; + } + entry->write_proc = proc_set_sreset; +#endif /* DBG_CONFIG_ERROR_DETECT */ + +#ifdef CONFIG_DM_ADAPTIVITY + entry = create_proc_read_entry("dm_adaptivity", S_IFREG | S_IRUGO, + dir_dev, proc_get_dm_adaptivity, dev); + if (!entry) { + DBG_871X("Unable to create_proc_read_entry!\n"); + return; + } + entry->write_proc = proc_set_dm_adaptivity; +#endif /* CONFIG_DM_ADAPTIVITY */ + +} + +void rtw_proc_remove_one(struct net_device *dev) +{ + struct proc_dir_entry *dir_dev = NULL; + _adapter *padapter = rtw_netdev_priv(dev); + u8 rf_type; + + dir_dev = padapter->dir_dev; + padapter->dir_dev = NULL; + + if (dir_dev) { + + remove_proc_entry("write_reg", dir_dev); + remove_proc_entry("read_reg", dir_dev); + remove_proc_entry("fwstate", dir_dev); + remove_proc_entry("sec_info", dir_dev); + remove_proc_entry("mlmext_state", dir_dev); + remove_proc_entry("qos_option", dir_dev); + remove_proc_entry("ht_option", dir_dev); + remove_proc_entry("rf_info", dir_dev); + remove_proc_entry("ap_info", dir_dev); + remove_proc_entry("adapter_state", dir_dev); + remove_proc_entry("trx_info", dir_dev); + + remove_proc_entry("mac_reg_dump1", dir_dev); + remove_proc_entry("mac_reg_dump2", dir_dev); + remove_proc_entry("mac_reg_dump3", dir_dev); + remove_proc_entry("bb_reg_dump1", dir_dev); + remove_proc_entry("bb_reg_dump2", dir_dev); + remove_proc_entry("bb_reg_dump3", dir_dev); + remove_proc_entry("rf_reg_dump1", dir_dev); + remove_proc_entry("rf_reg_dump2", dir_dev); + rtw_hal_get_hwreg(padapter, HW_VAR_RF_TYPE, (u8 *)(&rf_type)); + if((RF_1T2R == rf_type) ||(RF_1T1R ==rf_type )) { + remove_proc_entry("rf_reg_dump3", dir_dev); + remove_proc_entry("rf_reg_dump4", dir_dev); + } +#ifdef CONFIG_AP_MODE + remove_proc_entry("all_sta_info", dir_dev); +#endif + +#ifdef DBG_MEMORY_LEAK + remove_proc_entry("_malloc_cnt", dir_dev); +#endif + +#ifdef CONFIG_FIND_BEST_CHANNEL + remove_proc_entry("best_channel", dir_dev); +#endif + remove_proc_entry("rx_signal", dir_dev); + + remove_proc_entry("cbw40_enable", dir_dev); + + remove_proc_entry("ht_enable", dir_dev); + + remove_proc_entry("ampdu_enable", dir_dev); + + remove_proc_entry("rx_stbc", dir_dev); + + remove_proc_entry("path_rssi", dir_dev); + + remove_proc_entry("vid", dir_dev); + + remove_proc_entry("pid", dir_dev); + + remove_proc_entry("rssi_disp", dir_dev); + +#if defined(DBG_CONFIG_ERROR_DETECT) + remove_proc_entry("sreset", dir_dev); +#endif /* DBG_CONFIG_ERROR_DETECT */ + +#ifdef CONFIG_DM_ADAPTIVITY + remove_proc_entry("dm_adaptivity", dir_dev); +#endif + + remove_proc_entry(dev->name, rtw_proc); + dir_dev = NULL; + + } + else + { + return; + } + + rtw_proc_cnt--; + + if(rtw_proc_cnt == 0) + { + if(rtw_proc){ + remove_proc_entry("ver_info", rtw_proc); + + remove_proc_entry("log_level", rtw_proc); + #ifdef DBG_MEM_ALLOC + remove_proc_entry("mstat", rtw_proc); + #endif /* DBG_MEM_ALLOC */ +#if(LINUX_VERSION_CODE < KERNEL_VERSION(2,6,24)) + remove_proc_entry(rtw_proc_name, proc_net); +#else + remove_proc_entry(rtw_proc_name, init_net.proc_net); +#endif + rtw_proc = NULL; + } + } +} +#endif + +uint loadparam( _adapter *padapter, _nic_hdl pnetdev); +uint loadparam( _adapter *padapter, _nic_hdl pnetdev) +{ + + uint status = _SUCCESS; + struct registry_priv *registry_par = &padapter->registrypriv; + +_func_enter_; + + registry_par->chip_version = (u8)rtw_chip_version; + registry_par->rfintfs = (u8)rtw_rfintfs; + registry_par->lbkmode = (u8)rtw_lbkmode; + //registry_par->hci = (u8)hci; + registry_par->network_mode = (u8)rtw_network_mode; + + _rtw_memcpy(registry_par->ssid.Ssid, "ANY", 3); + registry_par->ssid.SsidLength = 3; + + registry_par->channel = (u8)rtw_channel; + registry_par->wireless_mode = (u8)rtw_wireless_mode; + registry_par->vrtl_carrier_sense = (u8)rtw_vrtl_carrier_sense ; + registry_par->vcs_type = (u8)rtw_vcs_type; + registry_par->rts_thresh=(u16)rtw_rts_thresh; + registry_par->frag_thresh=(u16)rtw_frag_thresh; + registry_par->preamble = (u8)rtw_preamble; + registry_par->scan_mode = (u8)rtw_scan_mode; + registry_par->adhoc_tx_pwr = (u8)rtw_adhoc_tx_pwr; + registry_par->soft_ap= (u8)rtw_soft_ap; + //registry_par->smart_ps = (u8)rtw_smart_ps; + registry_par->power_mgnt = (u8)rtw_power_mgnt; + registry_par->ips_mode = (u8)rtw_ips_mode; + registry_par->radio_enable = (u8)rtw_radio_enable; + registry_par->long_retry_lmt = (u8)rtw_long_retry_lmt; + registry_par->short_retry_lmt = (u8)rtw_short_retry_lmt; + registry_par->busy_thresh = (u16)rtw_busy_thresh; + //registry_par->qos_enable = (u8)rtw_qos_enable; + registry_par->ack_policy = (u8)rtw_ack_policy; + registry_par->mp_mode = (u8)rtw_mp_mode; + registry_par->software_encrypt = (u8)rtw_software_encrypt; + registry_par->software_decrypt = (u8)rtw_software_decrypt; + + registry_par->acm_method = (u8)rtw_acm_method; + + //UAPSD + registry_par->wmm_enable = (u8)rtw_wmm_enable; + registry_par->uapsd_enable = (u8)rtw_uapsd_enable; + registry_par->uapsd_max_sp = (u8)rtw_uapsd_max_sp; + registry_par->uapsd_acbk_en = (u8)rtw_uapsd_acbk_en; + registry_par->uapsd_acbe_en = (u8)rtw_uapsd_acbe_en; + registry_par->uapsd_acvi_en = (u8)rtw_uapsd_acvi_en; + registry_par->uapsd_acvo_en = (u8)rtw_uapsd_acvo_en; + +#ifdef CONFIG_80211N_HT + registry_par->ht_enable = (u8)rtw_ht_enable; + registry_par->cbw40_enable = (u8)rtw_cbw40_enable; + registry_par->ampdu_enable = (u8)rtw_ampdu_enable; + registry_par->rx_stbc = (u8)rtw_rx_stbc; + registry_par->ampdu_amsdu = (u8)rtw_ampdu_amsdu; +#endif + + registry_par->lowrate_two_xmit = (u8)rtw_lowrate_two_xmit; + registry_par->rf_config = (u8)rtw_rf_config; + registry_par->low_power = (u8)rtw_low_power; + + + registry_par->wifi_spec = (u8)rtw_wifi_spec; + registry_par->special_rf_path = (u8)rtw_special_rf_path; + registry_par->channel_plan = (u8)rtw_channel_plan; + +#ifdef CONFIG_BT_COEXIST + registry_par->bt_iso = (u8)rtw_bt_iso; + registry_par->bt_sco = (u8)rtw_bt_sco; + registry_par->bt_ampdu = (u8)rtw_bt_ampdu; +#endif + registry_par->bAcceptAddbaReq = (u8)rtw_AcceptAddbaReq; + + registry_par->antdiv_cfg = (u8)rtw_antdiv_cfg; + +#ifdef CONFIG_AUTOSUSPEND + registry_par->usbss_enable = (u8)rtw_enusbss;//0:disable,1:enable +#endif +#ifdef SUPPORT_HW_RFOFF_DETECTED + registry_par->hwpdn_mode = (u8)rtw_hwpdn_mode;//0:disable,1:enable,2:by EFUSE config + registry_par->hwpwrp_detect = (u8)rtw_hwpwrp_detect;//0:disable,1:enable +#endif + + registry_par->hw_wps_pbc = (u8)rtw_hw_wps_pbc; + +#ifdef CONFIG_ADAPTOR_INFO_CACHING_FILE + snprintf(registry_par->adaptor_info_caching_file_path, PATH_LENGTH_MAX, "%s", rtw_adaptor_info_caching_file_path); + registry_par->adaptor_info_caching_file_path[PATH_LENGTH_MAX-1]=0; +#endif + +#ifdef CONFIG_LAYER2_ROAMING + registry_par->max_roaming_times = (u8)rtw_max_roaming_times; +#ifdef CONFIG_INTEL_WIDI + registry_par->max_roaming_times = (u8)rtw_max_roaming_times + 2; +#endif // CONFIG_INTEL_WIDI +#endif + +#ifdef CONFIG_IOL + registry_par->force_iol = rtw_force_iol; +#endif + + registry_par->mac_phy_mode = rtw_mac_phy_mode; + +#ifdef CONFIG_80211D + registry_par->enable80211d = (u8)rtw_80211d; +#endif + + snprintf(registry_par->ifname, 16, "%s", ifname); + snprintf(registry_par->if2name, 16, "%s", if2name); + + registry_par->notch_filter = (u8)rtw_notch_filter; + +#ifdef CONFIG_MULTI_VIR_IFACES + registry_par->ext_iface_num = (u8)rtw_ext_iface_num; +#endif //CONFIG_MULTI_VIR_IFACES + +_func_exit_; + + return status; +} + +static int rtw_net_set_mac_address(struct net_device *pnetdev, void *p) +{ + _adapter *padapter = (_adapter *)rtw_netdev_priv(pnetdev); + struct sockaddr *addr = p; + + if(padapter->bup == _FALSE) + { + //DBG_871X("r8711_net_set_mac_address(), MAC=%x:%x:%x:%x:%x:%x\n", addr->sa_data[0], addr->sa_data[1], addr->sa_data[2], addr->sa_data[3], + //addr->sa_data[4], addr->sa_data[5]); + _rtw_memcpy(padapter->eeprompriv.mac_addr, addr->sa_data, ETH_ALEN); + //_rtw_memcpy(pnetdev->dev_addr, addr->sa_data, ETH_ALEN); + //padapter->bset_hwaddr = _TRUE; + } + + return 0; +} + +static struct net_device_stats *rtw_net_get_stats(struct net_device *pnetdev) +{ + _adapter *padapter = (_adapter *)rtw_netdev_priv(pnetdev); + struct xmit_priv *pxmitpriv = &(padapter->xmitpriv); + struct recv_priv *precvpriv = &(padapter->recvpriv); + + padapter->stats.tx_packets = pxmitpriv->tx_pkts;//pxmitpriv->tx_pkts++; + padapter->stats.rx_packets = precvpriv->rx_pkts;//precvpriv->rx_pkts++; + padapter->stats.tx_dropped = pxmitpriv->tx_drop; + padapter->stats.rx_dropped = precvpriv->rx_drop; + padapter->stats.tx_bytes = pxmitpriv->tx_bytes; + padapter->stats.rx_bytes = precvpriv->rx_bytes; + + return &padapter->stats; +} + +#if (LINUX_VERSION_CODE>=KERNEL_VERSION(2,6,35)) +/* + * AC to queue mapping + * + * AC_VO -> queue 0 + * AC_VI -> queue 1 + * AC_BE -> queue 2 + * AC_BK -> queue 3 + */ +static const u16 rtw_1d_to_queue[8] = { 2, 3, 3, 2, 1, 1, 0, 0 }; + +/* Given a data frame determine the 802.1p/1d tag to use. */ +unsigned int rtw_classify8021d(struct sk_buff *skb) +{ + unsigned int dscp; + + /* skb->priority values from 256->263 are magic values to + * directly indicate a specific 802.1d priority. This is used + * to allow 802.1d priority to be passed directly in from VLAN + * tags, etc. + */ + if (skb->priority >= 256 && skb->priority <= 263) + return skb->priority - 256; + + switch (skb->protocol) { + case htons(ETH_P_IP): + dscp = ip_hdr(skb)->tos & 0xfc; + break; + default: + return 0; + } + + return dscp >> 5; +} + +static u16 rtw_select_queue(struct net_device *dev, struct sk_buff *skb) +{ + _adapter *padapter = rtw_netdev_priv(dev); + struct mlme_priv *pmlmepriv = &padapter->mlmepriv; + + skb->priority = rtw_classify8021d(skb); + + if(pmlmepriv->acm_mask != 0) + { + skb->priority = qos_acm(pmlmepriv->acm_mask, skb->priority); + } + + return rtw_1d_to_queue[skb->priority]; +} + +u16 rtw_recv_select_queue(struct sk_buff *skb) +{ + struct iphdr *piphdr; + unsigned int dscp; + u16 eth_type; + u32 priority; + u8 *pdata = skb->data; + + _rtw_memcpy(ð_type, pdata+(ETH_ALEN<<1), 2); + + switch (eth_type) { + case htons(ETH_P_IP): + + piphdr = (struct iphdr *)(pdata+ETH_HLEN); + + dscp = piphdr->tos & 0xfc; + + priority = dscp >> 5; + + break; + default: + priority = 0; + } + + return rtw_1d_to_queue[priority]; + +} + +#endif + +#if (LINUX_VERSION_CODE>=KERNEL_VERSION(2,6,29)) +static const struct net_device_ops rtw_netdev_ops = { + .ndo_open = netdev_open, + .ndo_stop = netdev_close, + .ndo_start_xmit = rtw_xmit_entry, +#if (LINUX_VERSION_CODE>=KERNEL_VERSION(2,6,35)) + .ndo_select_queue = rtw_select_queue, +#endif + .ndo_set_mac_address = rtw_net_set_mac_address, + .ndo_get_stats = rtw_net_get_stats, + .ndo_do_ioctl = rtw_ioctl, +}; +#endif + +int rtw_init_netdev_name(struct net_device *pnetdev, const char *ifname) +{ + _adapter *padapter = rtw_netdev_priv(pnetdev); + +#ifdef CONFIG_EASY_REPLACEMENT + struct net_device *TargetNetdev = NULL; + _adapter *TargetAdapter = NULL; + struct net *devnet = NULL; + + if(padapter->bDongle == 1) + { +#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,24)) + TargetNetdev = dev_get_by_name("wlan0"); +#else + #if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,26)) + devnet = pnetdev->nd_net; + #else + devnet = dev_net(pnetdev); + #endif + TargetNetdev = dev_get_by_name(devnet, "wlan0"); +#endif + if(TargetNetdev) { + DBG_871X("Force onboard module driver disappear !!!\n"); + TargetAdapter = rtw_netdev_priv(TargetNetdev); + TargetAdapter->DriverState = DRIVER_DISAPPEAR; + + padapter->pid[0] = TargetAdapter->pid[0]; + padapter->pid[1] = TargetAdapter->pid[1]; + padapter->pid[2] = TargetAdapter->pid[2]; + + dev_put(TargetNetdev); + unregister_netdev(TargetNetdev); + + if(TargetAdapter->chip_type == padapter->chip_type) + rtw_proc_remove_one(TargetNetdev); + + padapter->DriverState = DRIVER_REPLACE_DONGLE; + } + } +#endif //CONFIG_EASY_REPLACEMENT + + if(dev_alloc_name(pnetdev, ifname) < 0) + { + RT_TRACE(_module_os_intfs_c_,_drv_err_,("dev_alloc_name, fail! \n")); + } + + netif_carrier_off(pnetdev); + //rtw_netif_stop_queue(pnetdev); + + return 0; +} + +struct net_device *rtw_init_netdev(_adapter *old_padapter) +{ + _adapter *padapter; + struct net_device *pnetdev; + + RT_TRACE(_module_os_intfs_c_,_drv_info_,("+init_net_dev\n")); + + if(old_padapter != NULL) + pnetdev = rtw_alloc_etherdev_with_old_priv(sizeof(_adapter), (void *)old_padapter); + else + pnetdev = rtw_alloc_etherdev(sizeof(_adapter)); + + if (!pnetdev) + return NULL; + + padapter = rtw_netdev_priv(pnetdev); + padapter->pnetdev = pnetdev; + +#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,24) + SET_MODULE_OWNER(pnetdev); +#endif + + //pnetdev->init = NULL; + +#if (LINUX_VERSION_CODE>=KERNEL_VERSION(2,6,29)) + DBG_871X("register rtw_netdev_ops to netdev_ops\n"); + pnetdev->netdev_ops = &rtw_netdev_ops; +#else + pnetdev->open = netdev_open; + pnetdev->stop = netdev_close; + pnetdev->hard_start_xmit = rtw_xmit_entry; + pnetdev->set_mac_address = rtw_net_set_mac_address; + pnetdev->get_stats = rtw_net_get_stats; + pnetdev->do_ioctl = rtw_ioctl; +#endif + + +#ifdef CONFIG_TCP_CSUM_OFFLOAD_TX + pnetdev->features |= NETIF_F_IP_CSUM; +#endif + //pnetdev->tx_timeout = NULL; + pnetdev->watchdog_timeo = HZ*3; /* 3 second timeout */ +#ifdef CONFIG_WIRELESS_EXT + pnetdev->wireless_handlers = (struct iw_handler_def *)&rtw_handlers_def; +#endif + +#ifdef WIRELESS_SPY + //priv->wireless_data.spy_data = &priv->spy_data; + //pnetdev->wireless_data = &priv->wireless_data; +#endif + + //step 2. + loadparam(padapter, pnetdev); + + return pnetdev; + +} + +void rtw_unregister_netdevs(struct dvobj_priv *dvobj) +{ + int i; + _adapter *padapter = NULL; + + for (i=0;iiface_nums;i++) { + struct net_device *pnetdev = NULL; + + padapter = dvobj->padapters[i]; + + if (padapter == NULL) + continue; + + pnetdev = padapter->pnetdev; + + if((padapter->DriverState != DRIVER_DISAPPEAR) && pnetdev) { + unregister_netdev(pnetdev); //will call netdev_close() + rtw_proc_remove_one(pnetdev); + } + + #ifdef CONFIG_IOCTL_CFG80211 + rtw_wdev_unregister(padapter->rtw_wdev); + #endif + } + +} + +u32 rtw_start_drv_threads(_adapter *padapter) +{ + + u32 _status = _SUCCESS; + + RT_TRACE(_module_os_intfs_c_,_drv_info_,("+rtw_start_drv_threads\n")); +#ifdef CONFIG_XMIT_THREAD_MODE + padapter->xmitThread = kthread_run(rtw_xmit_thread, padapter, "RTW_XMIT_THREAD"); + if(IS_ERR(padapter->xmitThread)) + _status = _FAIL; +#endif + +#ifdef CONFIG_RECV_THREAD_MODE + padapter->recvThread = kthread_run(rtw_recv_thread, padapter, "RTW_RECV_THREAD"); + if(IS_ERR(padapter->recvThread)) + _status = _FAIL; +#endif + +#ifdef CONFIG_CONCURRENT_MODE + if(padapter->isprimary == _TRUE) +#endif //CONFIG_CONCURRENT_MODE + { + padapter->cmdThread = kthread_run(rtw_cmd_thread, padapter, "RTW_CMD_THREAD"); + if(IS_ERR(padapter->cmdThread)) + _status = _FAIL; + else + _rtw_down_sema(&padapter->cmdpriv.terminate_cmdthread_sema); //wait for cmd_thread to run + } + + +#ifdef CONFIG_EVENT_THREAD_MODE + padapter->evtThread = kthread_run(event_thread, padapter, "RTW_EVENT_THREAD"); + if(IS_ERR(padapter->evtThread)) + _status = _FAIL; +#endif + + return _status; + +} + +void rtw_stop_drv_threads (_adapter *padapter) +{ + RT_TRACE(_module_os_intfs_c_,_drv_info_,("+rtw_stop_drv_threads\n")); + +#ifdef CONFIG_CONCURRENT_MODE + if(padapter->isprimary == _TRUE) +#endif //CONFIG_CONCURRENT_MODE + { + rtw_stop_cmd_thread(padapter); + } + +#ifdef CONFIG_EVENT_THREAD_MODE + _rtw_up_sema(&padapter->evtpriv.evt_notify); + if(padapter->evtThread){ + _rtw_down_sema(&padapter->evtpriv.terminate_evtthread_sema); + } +#endif + +#ifdef CONFIG_XMIT_THREAD_MODE + // Below is to termindate tx_thread... + _rtw_up_sema(&padapter->xmitpriv.xmit_sema); + _rtw_down_sema(&padapter->xmitpriv.terminate_xmitthread_sema); + RT_TRACE(_module_os_intfs_c_,_drv_info_,("\n drv_halt: rtw_xmit_thread can be terminated ! \n")); +#endif + +#ifdef CONFIG_RECV_THREAD_MODE + // Below is to termindate rx_thread... + _rtw_up_sema(&padapter->recvpriv.recv_sema); + _rtw_down_sema(&padapter->recvpriv.terminate_recvthread_sema); + RT_TRACE(_module_os_intfs_c_,_drv_info_,("\n drv_halt:recv_thread can be terminated! \n")); +#endif + + +} + +u8 rtw_init_default_value(_adapter *padapter); +u8 rtw_init_default_value(_adapter *padapter) +{ + u8 ret = _SUCCESS; + struct registry_priv* pregistrypriv = &padapter->registrypriv; + struct xmit_priv *pxmitpriv = &padapter->xmitpriv; + struct mlme_priv *pmlmepriv= &padapter->mlmepriv; + struct security_priv *psecuritypriv = &padapter->securitypriv; + + //xmit_priv + pxmitpriv->vcs_setting = pregistrypriv->vrtl_carrier_sense; + pxmitpriv->vcs = pregistrypriv->vcs_type; + pxmitpriv->vcs_type = pregistrypriv->vcs_type; + //pxmitpriv->rts_thresh = pregistrypriv->rts_thresh; + pxmitpriv->frag_len = pregistrypriv->frag_thresh; + + + + //recv_priv + + + //mlme_priv + pmlmepriv->scan_interval = SCAN_INTERVAL;// 30*2 sec = 60sec + pmlmepriv->scan_mode = SCAN_ACTIVE; + + //qos_priv + //pmlmepriv->qospriv.qos_option = pregistrypriv->wmm_enable; + + //ht_priv +#ifdef CONFIG_80211N_HT + pmlmepriv->htpriv.ampdu_enable = _FALSE;//set to disabled +#endif + + //security_priv + //rtw_get_encrypt_decrypt_from_registrypriv(padapter); + psecuritypriv->binstallGrpkey = _FAIL; + psecuritypriv->sw_encrypt=pregistrypriv->software_encrypt; + psecuritypriv->sw_decrypt=pregistrypriv->software_decrypt; + + psecuritypriv->dot11AuthAlgrthm = dot11AuthAlgrthm_Open; //open system + psecuritypriv->dot11PrivacyAlgrthm = _NO_PRIVACY_; + + psecuritypriv->dot11PrivacyKeyIndex = 0; + + psecuritypriv->dot118021XGrpPrivacy = _NO_PRIVACY_; + psecuritypriv->dot118021XGrpKeyid = 1; + + psecuritypriv->ndisauthtype = Ndis802_11AuthModeOpen; + psecuritypriv->ndisencryptstatus = Ndis802_11WEPDisabled; + + + //pwrctrl_priv + + + //registry_priv + rtw_init_registrypriv_dev_network(padapter); + rtw_update_registrypriv_dev_network(padapter); + + + //hal_priv + rtw_hal_def_value_init(padapter); + + //misc. + padapter->bReadPortCancel = _FALSE; + padapter->bWritePortCancel = _FALSE; + padapter->bRxRSSIDisplay = 0; + padapter->bForceWriteInitGain = 1; + padapter->bNotifyChannelChange = 0; +#ifdef CONFIG_P2P + padapter->bShowGetP2PState = 1; +#endif + return ret; +} + +struct dvobj_priv *devobj_init(void) +{ + struct dvobj_priv *pdvobj = NULL; + + if ((pdvobj = (struct dvobj_priv*)rtw_zmalloc(sizeof(*pdvobj))) == NULL) + return NULL; + + _rtw_mutex_init(&pdvobj->hw_init_mutex); + _rtw_mutex_init(&pdvobj->h2c_fwcmd_mutex); + _rtw_mutex_init(&pdvobj->setch_mutex); + _rtw_mutex_init(&pdvobj->setbw_mutex); + + pdvobj->processing_dev_remove = _FALSE; + + return pdvobj; +} + +void devobj_deinit(struct dvobj_priv *pdvobj) +{ + if(!pdvobj) + return; + + _rtw_mutex_free(&pdvobj->hw_init_mutex); + _rtw_mutex_free(&pdvobj->h2c_fwcmd_mutex); + _rtw_mutex_free(&pdvobj->setch_mutex); + _rtw_mutex_free(&pdvobj->setbw_mutex); + + rtw_mfree((u8*)pdvobj, sizeof(*pdvobj)); +} + +u8 rtw_reset_drv_sw(_adapter *padapter) +{ + u8 ret8=_SUCCESS; + struct mlme_priv *pmlmepriv= &padapter->mlmepriv; + struct pwrctrl_priv *pwrctrlpriv = &padapter->pwrctrlpriv; + + //hal_priv + rtw_hal_def_value_init(padapter); + padapter->bReadPortCancel = _FALSE; + padapter->bWritePortCancel = _FALSE; + padapter->bRxRSSIDisplay = 0; + pmlmepriv->scan_interval = SCAN_INTERVAL;// 30*2 sec = 60sec + + pwrctrlpriv->bips_processing = _FALSE; + pwrctrlpriv->rf_pwrstate = rf_on; + + padapter->xmitpriv.tx_pkts = 0; + padapter->recvpriv.rx_pkts = 0; + + pmlmepriv->LinkDetectInfo.bBusyTraffic = _FALSE; + + _clr_fwstate_(pmlmepriv, _FW_UNDER_SURVEY |_FW_UNDER_LINKING); + +#ifdef CONFIG_AUTOSUSPEND + #if (LINUX_VERSION_CODE>=KERNEL_VERSION(2,6,22) && LINUX_VERSION_CODE<=KERNEL_VERSION(2,6,34)) + adapter_to_dvobj(padapter)->pusbdev->autosuspend_disabled = 1;//autosuspend disabled by the user + #endif +#endif + +#ifdef DBG_CONFIG_ERROR_DETECT + rtw_hal_sreset_reset_value(padapter); +#endif + pwrctrlpriv->pwr_state_check_cnts = 0; + + //mlmeextpriv + padapter->mlmeextpriv.sitesurvey_res.state= SCAN_DISABLE; + +#ifdef CONFIG_NEW_SIGNAL_STAT_PROCESS + rtw_set_signal_stat_timer(&padapter->recvpriv); +#endif + + return ret8; +} + + +u8 rtw_init_drv_sw(_adapter *padapter) +{ + + u8 ret8=_SUCCESS; + +_func_enter_; + + RT_TRACE(_module_os_intfs_c_,_drv_info_,("+rtw_init_drv_sw\n")); + + if ((rtw_init_cmd_priv(&padapter->cmdpriv)) == _FAIL) + { + RT_TRACE(_module_os_intfs_c_,_drv_err_,("\n Can't init cmd_priv\n")); + ret8=_FAIL; + goto exit; + } + + padapter->cmdpriv.padapter=padapter; + + if ((rtw_init_evt_priv(&padapter->evtpriv)) == _FAIL) + { + RT_TRACE(_module_os_intfs_c_,_drv_err_,("\n Can't init evt_priv\n")); + ret8=_FAIL; + goto exit; + } + + + if (rtw_init_mlme_priv(padapter) == _FAIL) + { + RT_TRACE(_module_os_intfs_c_,_drv_err_,("\n Can't init mlme_priv\n")); + ret8=_FAIL; + goto exit; + } + +#ifdef CONFIG_P2P + rtw_init_wifidirect_timers(padapter); + init_wifidirect_info(padapter, P2P_ROLE_DISABLE); + reset_global_wifidirect_info(padapter); + #ifdef CONFIG_IOCTL_CFG80211 + rtw_init_cfg80211_wifidirect_info(padapter); + #endif +#ifdef CONFIG_WFD + if(rtw_init_wifi_display_info(padapter) == _FAIL) + RT_TRACE(_module_os_intfs_c_,_drv_err_,("\n Can't init init_wifi_display_info\n")); +#endif +#endif /* CONFIG_P2P */ + + if(init_mlme_ext_priv(padapter) == _FAIL) + { + RT_TRACE(_module_os_intfs_c_,_drv_err_,("\n Can't init mlme_ext_priv\n")); + ret8=_FAIL; + goto exit; + } + +#ifdef CONFIG_TDLS + if(rtw_init_tdls_info(padapter) == _FAIL) + { + DBG_871X("Can't rtw_init_tdls_info\n"); + ret8=_FAIL; + goto exit; + } +#endif //CONFIG_TDLS + + if(_rtw_init_xmit_priv(&padapter->xmitpriv, padapter) == _FAIL) + { + DBG_871X("Can't _rtw_init_xmit_priv\n"); + ret8=_FAIL; + goto exit; + } + + if(_rtw_init_recv_priv(&padapter->recvpriv, padapter) == _FAIL) + { + DBG_871X("Can't _rtw_init_recv_priv\n"); + ret8=_FAIL; + goto exit; + } + // add for CONFIG_IEEE80211W, none 11w also can use + _rtw_spinlock_init(&padapter->security_key_mutex); + + // We don't need to memset padapter->XXX to zero, because adapter is allocated by rtw_zvmalloc(). + //_rtw_memset((unsigned char *)&padapter->securitypriv, 0, sizeof (struct security_priv)); + + //_init_timer(&(padapter->securitypriv.tkip_timer), padapter->pifp, rtw_use_tkipkey_handler, padapter); + + if(_rtw_init_sta_priv(&padapter->stapriv) == _FAIL) + { + DBG_871X("Can't _rtw_init_sta_priv\n"); + ret8=_FAIL; + goto exit; + } + + padapter->stapriv.padapter = padapter; + padapter->setband = GHZ24_50; + rtw_init_bcmc_stainfo(padapter); + + rtw_init_pwrctrl_priv(padapter); + + //_rtw_memset((u8 *)&padapter->qospriv, 0, sizeof (struct qos_priv));//move to mlme_priv + +#ifdef CONFIG_MP_INCLUDED + if (init_mp_priv(padapter) == _FAIL) { + DBG_871X("%s: initialize MP private data Fail!\n", __func__); + } +#endif + + ret8 = rtw_init_default_value(padapter); + + rtw_hal_dm_init(padapter); + rtw_hal_sw_led_init(padapter); + +#ifdef DBG_CONFIG_ERROR_DETECT + rtw_hal_sreset_init(padapter); +#endif + +#ifdef CONFIG_INTEL_WIDI + if(rtw_init_intel_widi(padapter) == _FAIL) + { + DBG_871X("Can't rtw_init_intel_widi\n"); + ret8=_FAIL; + goto exit; + } +#endif //CONFIG_INTEL_WIDI + +#ifdef CONFIG_BR_EXT + _rtw_spinlock_init(&padapter->br_ext_lock); +#endif // CONFIG_BR_EXT + +exit: + + RT_TRACE(_module_os_intfs_c_,_drv_info_,("-rtw_init_drv_sw\n")); + + _func_exit_; + + return ret8; + +} + +void rtw_cancel_all_timer(_adapter *padapter) +{ + RT_TRACE(_module_os_intfs_c_,_drv_info_,("+rtw_cancel_all_timer\n")); + + _cancel_timer_ex(&padapter->mlmepriv.assoc_timer); + RT_TRACE(_module_os_intfs_c_,_drv_info_,("rtw_cancel_all_timer:cancel association timer complete! \n")); + + //_cancel_timer_ex(&padapter->securitypriv.tkip_timer); + //RT_TRACE(_module_os_intfs_c_,_drv_info_,("rtw_cancel_all_timer:cancel tkip_timer! \n")); + + _cancel_timer_ex(&padapter->mlmepriv.scan_to_timer); + RT_TRACE(_module_os_intfs_c_,_drv_info_,("rtw_cancel_all_timer:cancel scan_to_timer! \n")); + + _cancel_timer_ex(&padapter->mlmepriv.dynamic_chk_timer); + RT_TRACE(_module_os_intfs_c_,_drv_info_,("rtw_cancel_all_timer:cancel dynamic_chk_timer! \n")); + + // cancel sw led timer + rtw_hal_sw_led_deinit(padapter); + RT_TRACE(_module_os_intfs_c_,_drv_info_,("rtw_cancel_all_timer:cancel DeInitSwLeds! \n")); + + _cancel_timer_ex(&padapter->pwrctrlpriv.pwr_state_check_timer); + +#ifdef CONFIG_IOCTL_CFG80211 +#ifdef CONFIG_P2P + _cancel_timer_ex(&padapter->cfg80211_wdinfo.remain_on_ch_timer); +#endif //CONFIG_P2P +#endif //CONFIG_IOCTL_CFG80211 + +#ifdef CONFIG_SET_SCAN_DENY_TIMER + _cancel_timer_ex(&padapter->mlmepriv.set_scan_deny_timer); + rtw_clear_scan_deny(padapter); + RT_TRACE(_module_os_intfs_c_,_drv_info_,("rtw_cancel_all_timer:cancel set_scan_deny_timer! \n")); +#endif + +#ifdef CONFIG_NEW_SIGNAL_STAT_PROCESS + _cancel_timer_ex(&padapter->recvpriv.signal_stat_timer); +#endif + + // cancel dm timer + rtw_hal_dm_deinit(padapter); + +#ifdef CONFIG_PLATFORM_FS_MX61 + msleep(50); +#endif +} + +u8 rtw_free_drv_sw(_adapter *padapter) +{ + RT_TRACE(_module_os_intfs_c_,_drv_info_,("==>rtw_free_drv_sw")); + + + //we can call rtw_p2p_enable here, but: + // 1. rtw_p2p_enable may have IO operation + // 2. rtw_p2p_enable is bundled with wext interface + #ifdef CONFIG_P2P + { + struct wifidirect_info *pwdinfo = &padapter->wdinfo; + if(!rtw_p2p_chk_state(pwdinfo, P2P_STATE_NONE)) + { + _cancel_timer_ex( &pwdinfo->find_phase_timer ); + _cancel_timer_ex( &pwdinfo->restore_p2p_state_timer ); + _cancel_timer_ex( &pwdinfo->pre_tx_scan_timer); +#ifdef CONFIG_CONCURRENT_MODE + _cancel_timer_ex( &pwdinfo->ap_p2p_switch_timer ); +#endif // CONFIG_CONCURRENT_MODE + rtw_p2p_set_state(pwdinfo, P2P_STATE_NONE); + } + } + #endif + // add for CONFIG_IEEE80211W, none 11w also can use + _rtw_spinlock_free(&padapter->security_key_mutex); + +#ifdef CONFIG_BR_EXT + _rtw_spinlock_free(&padapter->br_ext_lock); +#endif // CONFIG_BR_EXT + +#ifdef CONFIG_INTEL_WIDI + rtw_free_intel_widi(padapter); +#endif //CONFIG_INTEL_WIDI + + free_mlme_ext_priv(&padapter->mlmeextpriv); + +#ifdef CONFIG_TDLS + //rtw_free_tdls_info(&padapter->tdlsinfo); +#endif //CONFIG_TDLS + + rtw_free_cmd_priv(&padapter->cmdpriv); + + rtw_free_evt_priv(&padapter->evtpriv); + + rtw_free_mlme_priv(&padapter->mlmepriv); + + //free_io_queue(padapter); + + _rtw_free_xmit_priv(&padapter->xmitpriv); + + _rtw_free_sta_priv(&padapter->stapriv); //will free bcmc_stainfo here + + _rtw_free_recv_priv(&padapter->recvpriv); + + rtw_free_pwrctrl_priv(padapter); + + //rtw_mfree((void *)padapter, sizeof (padapter)); + +#ifdef CONFIG_DRVEXT_MODULE + free_drvext(&padapter->drvextpriv); +#endif + + rtw_hal_free_data(padapter); + + RT_TRACE(_module_os_intfs_c_,_drv_info_,("<==rtw_free_drv_sw\n")); + + //free the old_pnetdev + if(padapter->rereg_nd_name_priv.old_pnetdev) { + free_netdev(padapter->rereg_nd_name_priv.old_pnetdev); + padapter->rereg_nd_name_priv.old_pnetdev = NULL; + } + + // clear pbuddy_adapter to avoid access wrong pointer. + if(padapter->pbuddy_adapter != NULL) + { + padapter->pbuddy_adapter->pbuddy_adapter = NULL; + } + + RT_TRACE(_module_os_intfs_c_,_drv_info_,("-rtw_free_drv_sw\n")); + + return _SUCCESS; + +} + +#ifdef CONFIG_CONCURRENT_MODE + +#ifdef CONFIG_USB_HCI + #include +#endif + +#ifdef CONFIG_MULTI_VIR_IFACES +int _netdev_vir_if_open(struct net_device *pnetdev) +{ + _adapter *padapter = (_adapter *)rtw_netdev_priv(pnetdev); + _adapter *primary_padapter = GET_PRIMARY_ADAPTER(padapter); + + DBG_871X(FUNC_NDEV_FMT" enter\n", FUNC_NDEV_ARG(pnetdev)); + + if(!primary_padapter) + goto _netdev_virtual_iface_open_error; + + if(primary_padapter->bup == _FALSE || primary_padapter->hw_init_completed == _FALSE) + { + _netdev_open(primary_padapter->pnetdev); + } + + if(padapter->bup == _FALSE && primary_padapter->bup == _TRUE && + primary_padapter->hw_init_completed == _TRUE) + { + int i; + + padapter->bDriverStopped = _FALSE; + padapter->bSurpriseRemoved = _FALSE; + padapter->bCardDisableWOHSM = _FALSE; + + _rtw_memcpy(padapter->HalData, primary_padapter->HalData, padapter->hal_data_sz); + + padapter->bFWReady = primary_padapter->bFWReady; + + if(rtw_start_drv_threads(padapter) == _FAIL) + { + goto _netdev_virtual_iface_open_error; + } + + padapter->dir_dev = NULL; + rtw_proc_init_one(pnetdev); + +#ifdef CONFIG_IOCTL_CFG80211 + rtw_cfg80211_init_wiphy(padapter); +#endif + + padapter->bup = _TRUE; + padapter->hw_init_completed = _TRUE; + + rtw_start_mbssid_cam(padapter);//start mbssid_cam after bup = _TRUE & hw_init_completed = _TRUE + + } + + padapter->net_closed = _FALSE; + + _set_timer(&padapter->mlmepriv.dynamic_chk_timer, 2000); + + if(!rtw_netif_queue_stopped(pnetdev)) + rtw_netif_start_queue(pnetdev); + else + rtw_netif_wake_queue(pnetdev); + + + DBG_871X(FUNC_NDEV_FMT" exit\n", FUNC_NDEV_ARG(pnetdev)); + return 0; + +_netdev_virtual_iface_open_error: + + padapter->bup = _FALSE; + + netif_carrier_off(pnetdev); + rtw_netif_stop_queue(pnetdev); + + return (-1); + +} + +int netdev_vir_if_open(struct net_device *pnetdev) +{ + int ret; + _adapter *padapter = (_adapter *)rtw_netdev_priv(pnetdev); + + _enter_critical_mutex(&(adapter_to_dvobj(padapter)->hw_init_mutex), NULL); + ret = _netdev_vir_if_open(pnetdev); + _exit_critical_mutex(&(adapter_to_dvobj(padapter)->hw_init_mutex), NULL); + return ret; +} + +static int netdev_vir_if_close(struct net_device *pnetdev) +{ + _adapter *padapter = (_adapter *)rtw_netdev_priv(pnetdev); + + padapter->net_closed = _TRUE; + + if(pnetdev) + { + if (!rtw_netif_queue_stopped(pnetdev)) + rtw_netif_stop_queue(pnetdev); + } + +#ifdef CONFIG_IOCTL_CFG80211 + rtw_scan_abort(padapter); + wdev_to_priv(padapter->rtw_wdev)->bandroid_scan = _FALSE; +#endif + + return 0; +} + +#if (LINUX_VERSION_CODE>=KERNEL_VERSION(2,6,29)) +static const struct net_device_ops rtw_netdev_vir_if_ops = { + .ndo_open = netdev_vir_if_open, + .ndo_stop = netdev_vir_if_close, + .ndo_start_xmit = rtw_xmit_entry, + .ndo_set_mac_address = rtw_net_set_mac_address, + .ndo_get_stats = rtw_net_get_stats, + .ndo_do_ioctl = rtw_ioctl, +#if (LINUX_VERSION_CODE>=KERNEL_VERSION(2,6,35)) + .ndo_select_queue = rtw_select_queue, +#endif +}; +#endif + +_adapter *rtw_drv_add_vir_if(_adapter *primary_padapter, void (*set_intf_ops)(struct _io_ops *pops)) +{ + + int res = _FAIL; + struct net_device *pnetdev=NULL; + _adapter *padapter = NULL; + struct dvobj_priv *pdvobjpriv; + u8 mac[ETH_ALEN]; + +/* + if((primary_padapter->bup == _FALSE) || + (rtw_buddy_adapter_up(primary_padapter) == _FALSE)) + { + goto error_rtw_drv_add_iface; + } + +*/ + /****** init netdev ******/ + pnetdev = rtw_init_netdev(NULL); + if (!pnetdev) + goto error_rtw_drv_add_iface; + +#if (LINUX_VERSION_CODE>=KERNEL_VERSION(2,6,29)) + DBG_871X("register rtw_netdev_virtual_iface_ops to netdev_ops\n"); + pnetdev->netdev_ops = &rtw_netdev_vir_if_ops; +#else + pnetdev->open = netdev_vir_if_open; + pnetdev->stop = netdev_vir_if_close; +#endif + +#ifdef CONFIG_NO_WIRELESS_HANDLERS + pnetdev->wireless_handlers = NULL; +#endif + + /****** init adapter ******/ + padapter = rtw_netdev_priv(pnetdev); + _rtw_memcpy(padapter, primary_padapter, sizeof(_adapter)); + + // + padapter->bup = _FALSE; + padapter->net_closed = _TRUE; + padapter->hw_init_completed = _FALSE; + + + //set adapter_type/iface type + padapter->isprimary = _FALSE; + padapter->adapter_type = MAX_ADAPTER; + padapter->pbuddy_adapter = primary_padapter; +#if 0 +#ifndef CONFIG_HWPORT_SWAP //Port0 -> Pri , Port1 -> Sec + padapter->iface_type = IFACE_PORT1; +#else + padapter->iface_type = IFACE_PORT0; +#endif //CONFIG_HWPORT_SWAP +#else + //extended virtual interfaces always are set to port0 + padapter->iface_type = IFACE_PORT0; +#endif + // + padapter->pnetdev = pnetdev; + + /****** setup dvobj ******/ + pdvobjpriv = adapter_to_dvobj(padapter); + padapter->iface_id = pdvobjpriv->iface_nums; + pdvobjpriv->padapters[pdvobjpriv->iface_nums++] = padapter; + + SET_NETDEV_DEV(pnetdev, dvobj_to_dev(pdvobjpriv)); +#ifdef CONFIG_IOCTL_CFG80211 + rtw_wdev_alloc(padapter, dvobj_to_dev(pdvobjpriv)); +#endif //CONFIG_IOCTL_CFG80211 + + //set interface_type/chip_type/HardwareType + padapter->interface_type = primary_padapter->interface_type; + padapter->chip_type = primary_padapter->chip_type; + padapter->HardwareType = primary_padapter->HardwareType; + + //set hal data & hal ops +#if defined(CONFIG_RTL8192C) + #if defined(CONFIG_PCI_HCI) + rtl8192ce_set_hal_ops(padapter); + #elif defined(CONFIG_USB_HCI) + rtl8192cu_set_hal_ops(padapter); + #endif +#elif defined(CONFIG_RTL8192D) + #if defined(CONFIG_PCI_HCI) + rtl8192de_set_hal_ops(padapter); + #elif defined(CONFIG_USB_HCI) + rtl8192du_set_hal_ops(padapter); + #endif +#endif + + padapter->HalFunc.inirp_init = NULL; + padapter->HalFunc.inirp_deinit = NULL; + padapter->intf_start = NULL; + padapter->intf_stop = NULL; + + //step init_io_priv + if ((rtw_init_io_priv(padapter, set_intf_ops)) == _FAIL) { + RT_TRACE(_module_hci_intfs_c_,_drv_err_,(" \n Can't init io_reqs\n")); + } + + //step read_chip_version + rtw_hal_read_chip_version(padapter); + + //step usb endpoint mapping + rtw_hal_chip_configure(padapter); + + + //init drv data + if(rtw_init_drv_sw(padapter)!= _SUCCESS) + goto error_rtw_drv_add_iface; + + + //get mac address from primary_padapter + _rtw_memcpy(mac, primary_padapter->eeprompriv.mac_addr, ETH_ALEN); + + if (((mac[0]==0xff) &&(mac[1]==0xff) && (mac[2]==0xff) && + (mac[3]==0xff) && (mac[4]==0xff) &&(mac[5]==0xff)) || + ((mac[0]==0x0) && (mac[1]==0x0) && (mac[2]==0x0) && + (mac[3]==0x0) && (mac[4]==0x0) &&(mac[5]==0x0))) + { + mac[0] = 0x00; + mac[1] = 0xe0; + mac[2] = 0x4c; + mac[3] = 0x87; + mac[4] = 0x11; + mac[5] = 0x22; + } + else + { + //If the BIT1 is 0, the address is universally administered. + //If it is 1, the address is locally administered +#if 1 //needs enable MBSSID CAM + mac[0] |= BIT(1); // locally administered + mac[0] |= (padapter->iface_id-1)<<4; +#endif + } + + _rtw_memcpy(padapter->eeprompriv.mac_addr, mac, ETH_ALEN); + + padapter->dir_dev = NULL; + + res = _SUCCESS; + + return padapter; + + +error_rtw_drv_add_iface: + + if(padapter) + rtw_free_drv_sw(padapter); + + if (pnetdev) + rtw_free_netdev(pnetdev); + + return NULL; + +} + +void rtw_drv_stop_vir_if(_adapter *padapter) +{ + struct net_device *pnetdev=NULL; + + if (padapter == NULL) + return; + + pnetdev = padapter->pnetdev; + + rtw_cancel_all_timer(padapter); + + if(padapter->bup == _TRUE) + { + padapter->bDriverStopped = _TRUE; + + #ifdef CONFIG_XMIT_ACK + if (padapter->xmitpriv.ack_tx) + rtw_ack_tx_done(&padapter->xmitpriv, RTW_SCTX_DONE_DRV_STOP); + #endif + + if(padapter->intf_stop) + { + padapter->intf_stop(padapter); + } + + rtw_stop_drv_threads(padapter); + + padapter->bup = _FALSE; + } +} + +void rtw_drv_free_vir_if(_adapter *padapter) +{ + struct net_device *pnetdev=NULL; + + if (padapter == NULL) + return; + + padapter->pbuddy_adapter = NULL; + + pnetdev = padapter->pnetdev; + +#ifdef CONFIG_IOCTL_CFG80211 + rtw_wdev_free(padapter->rtw_wdev); +#endif //CONFIG_IOCTL_CFG80211 + + rtw_free_drv_sw(padapter); + + rtw_free_netdev(pnetdev); +} + +void rtw_drv_stop_vir_ifaces(struct dvobj_priv *dvobj) +{ + int i; + //struct dvobj_priv *dvobj = primary_padapter->dvobj; + + for(i=2;iiface_nums;i++) + { + rtw_drv_stop_vir_if(dvobj->padapters[i]); + } +} + +void rtw_drv_free_vir_ifaces(struct dvobj_priv *dvobj) +{ + int i; + //struct dvobj_priv *dvobj = primary_padapter->dvobj; + + for(i=2;iiface_nums;i++) + { + rtw_drv_free_vir_if(dvobj->padapters[i]); + } +} + +void rtw_drv_del_vir_if(_adapter *padapter) +{ + rtw_drv_stop_vir_if(padapter); + rtw_drv_free_vir_if(padapter); +} + +void rtw_drv_del_vir_ifaces(_adapter *primary_padapter) +{ + int i; + struct dvobj_priv *dvobj = primary_padapter->dvobj; + + for(i=2;iiface_nums;i++) + { + rtw_drv_del_vir_if(dvobj->padapters[i]); + } +} +#endif //CONFIG_MULTI_VIR_IFACES + +int _netdev_if2_open(struct net_device *pnetdev) +{ + _adapter *padapter = (_adapter *)rtw_netdev_priv(pnetdev); + _adapter *primary_padapter = padapter->pbuddy_adapter; + + DBG_871X("+871x_drv - if2_open, bup=%d\n", padapter->bup); + + if(primary_padapter->bup == _FALSE || primary_padapter->hw_init_completed == _FALSE) + { + _netdev_open(primary_padapter->pnetdev); + } + + if(padapter->bup == _FALSE && primary_padapter->bup == _TRUE && + primary_padapter->hw_init_completed == _TRUE) + { + int i; + + padapter->bDriverStopped = _FALSE; + padapter->bSurpriseRemoved = _FALSE; + padapter->bCardDisableWOHSM = _FALSE; + + _rtw_memcpy(padapter->HalData, primary_padapter->HalData, padapter->hal_data_sz); + + padapter->bFWReady = primary_padapter->bFWReady; + + rtw_hal_set_hwreg(padapter, HW_VAR_DM_INIT_PWDB, NULL); + + //if (init_mlme_ext_priv(padapter) == _FAIL) + // goto netdev_if2_open_error; + + + if(rtw_start_drv_threads(padapter) == _FAIL) + { + goto netdev_if2_open_error; + } + + + if(padapter->intf_start) + { + padapter->intf_start(padapter); + } + + + padapter->hw_init_completed = _TRUE; + + padapter->dir_dev = NULL; + rtw_proc_init_one(pnetdev); + + +#ifdef CONFIG_IOCTL_CFG80211 + rtw_cfg80211_init_wiphy(padapter); +#endif + + padapter->bup = _TRUE; + + } + + padapter->net_closed = _FALSE; + + _set_timer(&padapter->mlmepriv.dynamic_chk_timer, 2000); + + if(!rtw_netif_queue_stopped(pnetdev)) + rtw_netif_start_queue(pnetdev); + else + rtw_netif_wake_queue(pnetdev); + + DBG_871X("-871x_drv - if2_open, bup=%d\n", padapter->bup); + return 0; + +netdev_if2_open_error: + + padapter->bup = _FALSE; + + netif_carrier_off(pnetdev); + rtw_netif_stop_queue(pnetdev); + + return (-1); + +} + +int netdev_if2_open(struct net_device *pnetdev) +{ + int ret; + _adapter *padapter = (_adapter *)rtw_netdev_priv(pnetdev); + + _enter_critical_mutex(&(adapter_to_dvobj(padapter)->hw_init_mutex), NULL); + ret = _netdev_if2_open(pnetdev); + _exit_critical_mutex(&(adapter_to_dvobj(padapter)->hw_init_mutex), NULL); + return ret; +} + +static int netdev_if2_close(struct net_device *pnetdev) +{ + _adapter *padapter = (_adapter *)rtw_netdev_priv(pnetdev); + + padapter->net_closed = _TRUE; + + if(pnetdev) + { + if (!rtw_netif_queue_stopped(pnetdev)) + rtw_netif_stop_queue(pnetdev); + } + +#ifdef CONFIG_IOCTL_CFG80211 + rtw_scan_abort(padapter); + wdev_to_priv(padapter->rtw_wdev)->bandroid_scan = _FALSE; +#endif + + return 0; +} + +#if (LINUX_VERSION_CODE>=KERNEL_VERSION(2,6,29)) +static const struct net_device_ops rtw_netdev_if2_ops = { + .ndo_open = netdev_if2_open, + .ndo_stop = netdev_if2_close, + .ndo_start_xmit = rtw_xmit_entry, + .ndo_set_mac_address = rtw_net_set_mac_address, + .ndo_get_stats = rtw_net_get_stats, + .ndo_do_ioctl = rtw_ioctl, +#if (LINUX_VERSION_CODE>=KERNEL_VERSION(2,6,35)) + .ndo_select_queue = rtw_select_queue, +#endif +}; +#endif + +_adapter *rtw_drv_if2_init(_adapter *primary_padapter, void (*set_intf_ops)(struct _io_ops *pops)) +{ + int res = _FAIL; + struct net_device *pnetdev = NULL; + _adapter *padapter = NULL; + struct dvobj_priv *pdvobjpriv; + u8 mac[ETH_ALEN]; + + /****** init netdev ******/ + pnetdev = rtw_init_netdev(NULL); + if (!pnetdev) + goto error_rtw_drv_if2_init; + +#if (LINUX_VERSION_CODE>=KERNEL_VERSION(2,6,29)) + DBG_871X("register rtw_netdev_if2_ops to netdev_ops\n"); + pnetdev->netdev_ops = &rtw_netdev_if2_ops; +#else + pnetdev->open = netdev_if2_open; + pnetdev->stop = netdev_if2_close; +#endif + +#ifdef CONFIG_NO_WIRELESS_HANDLERS + pnetdev->wireless_handlers = NULL; +#endif + + /****** init adapter ******/ + padapter = rtw_netdev_priv(pnetdev); + _rtw_memcpy(padapter, primary_padapter, sizeof(_adapter)); + + // + padapter->bup = _FALSE; + padapter->net_closed = _TRUE; + padapter->hw_init_completed = _FALSE; + + //set adapter_type/iface type + padapter->isprimary = _FALSE; + padapter->adapter_type = SECONDARY_ADAPTER; + padapter->pbuddy_adapter = primary_padapter; + padapter->iface_id = IFACE_ID1; +#ifndef CONFIG_HWPORT_SWAP //Port0 -> Pri , Port1 -> Sec + padapter->iface_type = IFACE_PORT1; +#else + padapter->iface_type = IFACE_PORT0; +#endif //CONFIG_HWPORT_SWAP + // + padapter->pnetdev = pnetdev; + + /****** setup dvobj ******/ + pdvobjpriv = adapter_to_dvobj(padapter); + pdvobjpriv->if2 = padapter; + pdvobjpriv->padapters[pdvobjpriv->iface_nums++] = padapter; + + SET_NETDEV_DEV(pnetdev, dvobj_to_dev(pdvobjpriv)); + #ifdef CONFIG_IOCTL_CFG80211 + rtw_wdev_alloc(padapter, dvobj_to_dev(pdvobjpriv)); + #endif //CONFIG_IOCTL_CFG80211 + + //set interface_type/chip_type/HardwareType + padapter->interface_type = primary_padapter->interface_type; + padapter->chip_type = primary_padapter->chip_type; + padapter->HardwareType = primary_padapter->HardwareType; + + //set hal data & hal ops +#if defined(CONFIG_RTL8192C) + #if defined(CONFIG_PCI_HCI) + rtl8192ce_set_hal_ops(padapter); + #elif defined(CONFIG_USB_HCI) + rtl8192cu_set_hal_ops(padapter); + #endif +#elif defined(CONFIG_RTL8192D) + #if defined(CONFIG_PCI_HCI) + rtl8192de_set_hal_ops(padapter); + #elif defined(CONFIG_USB_HCI) + rtl8192du_set_hal_ops(padapter); + #endif +#endif + + padapter->HalFunc.inirp_init = NULL; + padapter->HalFunc.inirp_deinit = NULL; + + // + padapter->intf_start = primary_padapter->intf_start; + padapter->intf_stop = primary_padapter->intf_stop; + + //step init_io_priv + if ((rtw_init_io_priv(padapter, set_intf_ops)) == _FAIL) { + RT_TRACE(_module_hci_intfs_c_,_drv_err_,(" \n Can't init io_reqs\n")); + } + + //step read_chip_version + rtw_hal_read_chip_version(padapter); + + //step usb endpoint mapping + rtw_hal_chip_configure(padapter); + + + //init drv data + if(rtw_init_drv_sw(padapter)!= _SUCCESS) + goto error_rtw_drv_if2_init; + + //get mac address from primary_padapter + _rtw_memcpy(mac, primary_padapter->eeprompriv.mac_addr, ETH_ALEN); + + if (((mac[0]==0xff) &&(mac[1]==0xff) && (mac[2]==0xff) && + (mac[3]==0xff) && (mac[4]==0xff) &&(mac[5]==0xff)) || + ((mac[0]==0x0) && (mac[1]==0x0) && (mac[2]==0x0) && + (mac[3]==0x0) && (mac[4]==0x0) &&(mac[5]==0x0))) + { + mac[0] = 0x00; + mac[1] = 0xe0; + mac[2] = 0x4c; + mac[3] = 0x87; + mac[4] = 0x11; + mac[5] = 0x22; + } + else + { + //If the BIT1 is 0, the address is universally administered. + //If it is 1, the address is locally administered + mac[0] |= BIT(1); // locally administered + + } + + _rtw_memcpy(padapter->eeprompriv.mac_addr, mac, ETH_ALEN); + rtw_init_wifidirect_addrs(padapter, padapter->eeprompriv.mac_addr, padapter->eeprompriv.mac_addr); + + primary_padapter->pbuddy_adapter = padapter; + + padapter->dir_dev = NULL; + + res = _SUCCESS; + + return padapter; + + +error_rtw_drv_if2_init: + + if(padapter) + rtw_free_drv_sw(padapter); + + if (pnetdev) + rtw_free_netdev(pnetdev); + + return NULL; + +} + +void rtw_drv_if2_free(_adapter *if2) +{ + _adapter *padapter = if2; + struct net_device *pnetdev = NULL; + + if (padapter == NULL) + return; + + pnetdev = padapter->pnetdev; + +#ifdef CONFIG_IOCTL_CFG80211 + rtw_wdev_free(padapter->rtw_wdev); +#endif /* CONFIG_IOCTL_CFG80211 */ + + + rtw_free_drv_sw(padapter); + + rtw_free_netdev(pnetdev); + +} + +void rtw_drv_if2_stop(_adapter *if2) +{ + _adapter *padapter = if2; + + if (padapter == NULL) + return; + + rtw_cancel_all_timer(padapter); + + if (padapter->bup == _TRUE) { + padapter->bDriverStopped = _TRUE; + #ifdef CONFIG_XMIT_ACK + if (padapter->xmitpriv.ack_tx) + rtw_ack_tx_done(&padapter->xmitpriv, RTW_SCTX_DONE_DRV_STOP); + #endif + + if(padapter->intf_stop) + { + padapter->intf_stop(padapter); + } + + rtw_stop_drv_threads(padapter); + + padapter->bup = _FALSE; + } +} +#endif //end of CONFIG_CONCURRENT_MODE + +#ifdef CONFIG_BR_EXT +void netdev_br_init(struct net_device *netdev) +{ + _adapter *adapter = (_adapter *)rtw_netdev_priv(netdev); + +#if (LINUX_VERSION_CODE > KERNEL_VERSION(2, 6, 35)) + rcu_read_lock(); +#endif // (LINUX_VERSION_CODE > KERNEL_VERSION(2, 6, 35)) + + //if(check_fwstate(pmlmepriv, WIFI_STATION_STATE|WIFI_ADHOC_STATE) == _TRUE) + { + //struct net_bridge *br = netdev->br_port->br;//->dev->dev_addr; +#if (LINUX_VERSION_CODE <= KERNEL_VERSION(2, 6, 35)) + if (netdev->br_port) +#else // (LINUX_VERSION_CODE <= KERNEL_VERSION(2, 6, 35)) + if (rcu_dereference(adapter->pnetdev->rx_handler_data)) +#endif // (LINUX_VERSION_CODE <= KERNEL_VERSION(2, 6, 35)) + { + struct net_device *br_netdev; +#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,24)) + br_netdev = dev_get_by_name(CONFIG_BR_EXT_BRNAME); +#else // (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,24)) + struct net *devnet = NULL; + +#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,26)) + devnet = netdev->nd_net; +#else // (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,26)) + devnet = dev_net(netdev); +#endif // (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,26)) + + br_netdev = dev_get_by_name(devnet, CONFIG_BR_EXT_BRNAME); +#endif // (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,24)) + + if (br_netdev) { + memcpy(adapter->br_mac, br_netdev->dev_addr, ETH_ALEN); + dev_put(br_netdev); + } else + printk("%s()-%d: dev_get_by_name(%s) failed!", __FUNCTION__, __LINE__, CONFIG_BR_EXT_BRNAME); + } + + adapter->ethBrExtInfo.addPPPoETag = 1; + } + +#if (LINUX_VERSION_CODE > KERNEL_VERSION(2, 6, 35)) + rcu_read_unlock(); +#endif // (LINUX_VERSION_CODE > KERNEL_VERSION(2, 6, 35)) +} +#endif //CONFIG_BR_EXT + +static int _rtw_drv_register_netdev(_adapter *padapter, char *name) +{ + int ret = _SUCCESS; + struct net_device *pnetdev = padapter->pnetdev; + + /* alloc netdev name */ + rtw_init_netdev_name(pnetdev, name); + + _rtw_memcpy(pnetdev->dev_addr, padapter->eeprompriv.mac_addr, ETH_ALEN); + + /* Tell the network stack we exist */ + if (register_netdev(pnetdev) != 0) { + DBG_871X(FUNC_NDEV_FMT "Failed!\n", FUNC_NDEV_ARG(pnetdev)); + ret = _FAIL; + goto error_register_netdev; + } + + DBG_871X("%s, MAC Address (if%d) = " MAC_FMT "\n", __FUNCTION__, (padapter->iface_id+1), MAC_ARG(pnetdev->dev_addr)); + + return ret; + +error_register_netdev: + + if(padapter->iface_id > IFACE_ID0) + { + rtw_free_drv_sw(padapter); + + rtw_free_netdev(pnetdev); + } + + return ret; +} + +int rtw_drv_register_netdev(_adapter *if1) +{ + int i, status = _SUCCESS; + struct dvobj_priv *dvobj = if1->dvobj; + + if(dvobj->iface_nums < IFACE_ID_MAX) + { + for(i=0; iiface_nums; i++) + { + _adapter *padapter = dvobj->padapters[i]; + + if(padapter) + { + char *name; + + if(padapter->iface_id == IFACE_ID0) + name = if1->registrypriv.ifname; + else if(padapter->iface_id == IFACE_ID1) + name = if1->registrypriv.if2name; + else + name = "wlan%d"; + + if((status = _rtw_drv_register_netdev(padapter, name)) != _SUCCESS) { + break; + } + } + } + } + + return status; +} + +int _netdev_open(struct net_device *pnetdev) +{ + uint status; + _adapter *padapter = (_adapter *)rtw_netdev_priv(pnetdev); + struct pwrctrl_priv *pwrctrlpriv = &padapter->pwrctrlpriv; + + RT_TRACE(_module_os_intfs_c_,_drv_info_,("+871x_drv - dev_open\n")); + DBG_871X("+871x_drv - drv_open, bup=%d\n", padapter->bup); + + if(pwrctrlpriv->ps_flag == _TRUE){ + padapter->net_closed = _FALSE; + goto netdev_open_normal_process; + } + + if(padapter->bup == _FALSE) + { + padapter->bDriverStopped = _FALSE; + padapter->bSurpriseRemoved = _FALSE; + padapter->bCardDisableWOHSM = _FALSE; + + status = rtw_hal_init(padapter); + if (status ==_FAIL) + { + RT_TRACE(_module_os_intfs_c_,_drv_err_,("rtl871x_hal_init(): Can't init h/w!\n")); + goto netdev_open_error; + } + + DBG_871X("MAC Address = "MAC_FMT"\n", MAC_ARG(pnetdev->dev_addr)); + + + status=rtw_start_drv_threads(padapter); + if(status ==_FAIL) + { + RT_TRACE(_module_os_intfs_c_,_drv_err_,("Initialize driver software resource Failed!\n")); + goto netdev_open_error; + } + +#ifdef CONFIG_DRVEXT_MODULE + init_drvext(padapter); +#endif + + if(padapter->intf_start) + { + padapter->intf_start(padapter); + } + +#ifndef RTK_DMP_PLATFORM + rtw_proc_init_one(pnetdev); +#endif + +#ifdef CONFIG_IOCTL_CFG80211 + rtw_cfg80211_init_wiphy(padapter); +#endif + + rtw_led_control(padapter, LED_CTL_NO_LINK); + + padapter->bup = _TRUE; + } + padapter->net_closed = _FALSE; + + _set_timer(&padapter->mlmepriv.dynamic_chk_timer, 2000); + + padapter->pwrctrlpriv.bips_processing = _FALSE; + rtw_set_pwr_state_check_timer(&padapter->pwrctrlpriv); + + //netif_carrier_on(pnetdev);//call this func when rtw_joinbss_event_callback return success + if(!rtw_netif_queue_stopped(pnetdev)) + rtw_netif_start_queue(pnetdev); + else + rtw_netif_wake_queue(pnetdev); + +#ifdef CONFIG_BR_EXT + netdev_br_init(pnetdev); +#endif // CONFIG_BR_EXT + +netdev_open_normal_process: + + #ifdef CONFIG_CONCURRENT_MODE + { + _adapter *sec_adapter = padapter->pbuddy_adapter; + if(sec_adapter && (sec_adapter->bup == _FALSE || sec_adapter->hw_init_completed == _FALSE)) + _netdev_if2_open(sec_adapter->pnetdev); + } + #endif + + RT_TRACE(_module_os_intfs_c_,_drv_info_,("-871x_drv - dev_open\n")); + DBG_871X("-871x_drv - drv_open, bup=%d\n", padapter->bup); + + return 0; + +netdev_open_error: + + padapter->bup = _FALSE; + + netif_carrier_off(pnetdev); + rtw_netif_stop_queue(pnetdev); + + RT_TRACE(_module_os_intfs_c_,_drv_err_,("-871x_drv - dev_open, fail!\n")); + DBG_871X("-871x_drv - drv_open fail, bup=%d\n", padapter->bup); + + return (-1); + +} + +int netdev_open(struct net_device *pnetdev) +{ + int ret; + _adapter *padapter = (_adapter *)rtw_netdev_priv(pnetdev); + + _enter_critical_mutex(&(adapter_to_dvobj(padapter)->hw_init_mutex), NULL); + ret = _netdev_open(pnetdev); + _exit_critical_mutex(&(adapter_to_dvobj(padapter)->hw_init_mutex), NULL); + + return ret; +} + +#ifdef CONFIG_IPS +int ips_netdrv_open(_adapter *padapter) +{ + int status = _SUCCESS; + padapter->net_closed = _FALSE; + DBG_871X("===> %s.........\n",__FUNCTION__); + + + padapter->bDriverStopped = _FALSE; + padapter->bCardDisableWOHSM = _FALSE; + //padapter->bup = _TRUE; + + status = rtw_hal_init(padapter); + if (status ==_FAIL) + { + RT_TRACE(_module_os_intfs_c_,_drv_err_,("ips_netdrv_open(): Can't init h/w!\n")); + goto netdev_open_error; + } + + if(padapter->intf_start) + { + padapter->intf_start(padapter); + } + + rtw_set_pwr_state_check_timer(&padapter->pwrctrlpriv); + _set_timer(&padapter->mlmepriv.dynamic_chk_timer,5000); + + return _SUCCESS; + +netdev_open_error: + //padapter->bup = _FALSE; + DBG_871X("-ips_netdrv_open - drv_open failure, bup=%d\n", padapter->bup); + + return _FAIL; +} + + +int rtw_ips_pwr_up(_adapter *padapter) +{ + int result; + u32 start_time = rtw_get_current_time(); + DBG_871X("===> rtw_ips_pwr_up..............\n"); + rtw_reset_drv_sw(padapter); + + result = ips_netdrv_open(padapter); + + rtw_led_control(padapter, LED_CTL_NO_LINK); + + DBG_871X("<=== rtw_ips_pwr_up.............. in %dms\n", rtw_get_passing_time_ms(start_time)); + return result; + +} + +void rtw_ips_pwr_down(_adapter *padapter) +{ + u32 start_time = rtw_get_current_time(); + DBG_871X("===> rtw_ips_pwr_down...................\n"); + + padapter->bCardDisableWOHSM = _TRUE; + padapter->net_closed = _TRUE; + + rtw_led_control(padapter, LED_CTL_POWER_OFF); + + rtw_ips_dev_unload(padapter); + padapter->bCardDisableWOHSM = _FALSE; + DBG_871X("<=== rtw_ips_pwr_down..................... in %dms\n", rtw_get_passing_time_ms(start_time)); +} +#endif +void rtw_ips_dev_unload(_adapter *padapter) +{ + struct net_device *pnetdev= (struct net_device*)padapter->pnetdev; + struct xmit_priv *pxmitpriv = &(padapter->xmitpriv); + DBG_871X("====> %s...\n",__FUNCTION__); + + rtw_hal_set_hwreg(padapter, HW_VAR_FIFO_CLEARN_UP, 0); + + if(padapter->intf_stop) + { + padapter->intf_stop(padapter); + } + + //s5. + if(padapter->bSurpriseRemoved == _FALSE) + { + rtw_hal_deinit(padapter); + } + +} + +int pm_netdev_open(struct net_device *pnetdev,u8 bnormal) +{ + int status; + if(bnormal) + status = netdev_open(pnetdev); +#ifdef CONFIG_IPS + else + status = (_SUCCESS == ips_netdrv_open((_adapter *)rtw_netdev_priv(pnetdev)))?(0):(-1); +#endif + + return status; +} + +static int netdev_close(struct net_device *pnetdev) +{ + _adapter *padapter = (_adapter *)rtw_netdev_priv(pnetdev); + + RT_TRACE(_module_os_intfs_c_,_drv_info_,("+871x_drv - drv_close\n")); + + if(padapter->pwrctrlpriv.bInternalAutoSuspend == _TRUE) + { + //rtw_pwr_wakeup(padapter); + if(padapter->pwrctrlpriv.rf_pwrstate == rf_off) + padapter->pwrctrlpriv.ps_flag = _TRUE; + } + padapter->net_closed = _TRUE; + +/* if(!padapter->hw_init_completed) + { + DBG_871X("(1)871x_drv - drv_close, bup=%d, hw_init_completed=%d\n", padapter->bup, padapter->hw_init_completed); + + padapter->bDriverStopped = _TRUE; + + rtw_dev_unload(padapter); + } + else*/ + if(padapter->pwrctrlpriv.rf_pwrstate == rf_on){ + DBG_871X("(2)871x_drv - drv_close, bup=%d, hw_init_completed=%d\n", padapter->bup, padapter->hw_init_completed); + + //s1. + if(pnetdev) + { + if (!rtw_netif_queue_stopped(pnetdev)) + rtw_netif_stop_queue(pnetdev); + } + +#ifndef CONFIG_ANDROID + //s2. + LeaveAllPowerSaveMode(padapter); + rtw_disassoc_cmd(padapter, 500, _FALSE); + //s2-2. indicate disconnect to os + rtw_indicate_disconnect(padapter); + //s2-3. + rtw_free_assoc_resources(padapter, 1); + //s2-4. + rtw_free_network_queue(padapter,_TRUE); +#endif + // Close LED + rtw_led_control(padapter, LED_CTL_POWER_OFF); + } + +#ifdef CONFIG_BR_EXT + //if (OPMODE & (WIFI_STATION_STATE | WIFI_ADHOC_STATE)) + { + //void nat25_db_cleanup(_adapter *priv); + nat25_db_cleanup(padapter); + } +#endif // CONFIG_BR_EXT + +#ifdef CONFIG_P2P +#ifdef CONFIG_IOCTL_CFG80211 + if( padapter->wdinfo.driver_interface == DRIVER_CFG80211 ) + { + if(wdev_to_priv(padapter->rtw_wdev)->p2p_enabled == _TRUE) + wdev_to_priv(padapter->rtw_wdev)->p2p_enabled = _FALSE; + } +#endif //CONFIG_IOCTL_CFG80211 + rtw_p2p_enable(padapter, P2P_ROLE_DISABLE); +#endif //CONFIG_P2P + +#ifdef CONFIG_IOCTL_CFG80211 + rtw_scan_abort(padapter); + wdev_to_priv(padapter->rtw_wdev)->bandroid_scan = _FALSE; + padapter->rtw_wdev->iftype = NL80211_IFTYPE_MONITOR; //set this at the end +#endif //CONFIG_IOCTL_CFG80211 + + RT_TRACE(_module_os_intfs_c_,_drv_info_,("-871x_drv - drv_close\n")); + DBG_871X("-871x_drv - drv_close, bup=%d\n", padapter->bup); + + return 0; +} + +void rtw_ndev_destructor(struct net_device *ndev) +{ + DBG_871X(FUNC_NDEV_FMT"\n", FUNC_NDEV_ARG(ndev)); + +#ifdef CONFIG_IOCTL_CFG80211 + if (ndev->ieee80211_ptr) + rtw_mfree((u8 *)ndev->ieee80211_ptr, sizeof(struct wireless_dev)); +#endif + free_netdev(ndev); +} --- linux-raspi2-4.2.0.orig/drivers/net/wireless/rtl8192cu/os_dep/linux/pci_intf.c +++ linux-raspi2-4.2.0/drivers/net/wireless/rtl8192cu/os_dep/linux/pci_intf.c @@ -0,0 +1,1996 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved. + * + * 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 + * published by the Free Software Foundation. + * + * 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 Street, Fifth Floor, Boston, MA 02110, USA + * + * + ******************************************************************************/ +#define _HCI_INTF_C_ + +#include +#include +#include +#include +#include +#include +#include + +#ifndef CONFIG_PCI_HCI + +#error "CONFIG_PCI_HCI shall be on!\n" + +#endif + +#include +#include +#include + +#if defined (PLATFORM_LINUX) && defined (PLATFORM_WINDOWS) + +#error "Shall be Linux or Windows, but not both!\n" + +#endif + +#ifdef CONFIG_80211N_HT +extern int rtw_ht_enable; +extern int rtw_cbw40_enable; +extern int rtw_ampdu_enable;//for enable tx_ampdu +#endif + +#ifdef CONFIG_PM +extern int pm_netdev_open(struct net_device *pnetdev); +static int rtw_suspend(struct pci_dev *pdev, pm_message_t state); +static int rtw_resume(struct pci_dev *pdev); +#endif + + +static int rtw_drv_init(struct pci_dev *pdev, const struct pci_device_id *pdid); +static void rtw_dev_remove(struct pci_dev *pdev); + +static struct specific_device_id specific_device_id_tbl[] = { + {.idVendor=0x0b05, .idProduct=0x1791, .flags=SPEC_DEV_ID_DISABLE_HT}, + {.idVendor=0x13D3, .idProduct=0x3311, .flags=SPEC_DEV_ID_DISABLE_HT}, + {} +}; + +struct pci_device_id rtw_pci_id_tbl[] = { +#ifdef CONFIG_RTL8192C + {PCI_DEVICE(PCI_VENDER_ID_REALTEK, 0x8191)}, + {PCI_DEVICE(PCI_VENDER_ID_REALTEK, 0x8178)}, + {PCI_DEVICE(PCI_VENDER_ID_REALTEK, 0x8177)}, + {PCI_DEVICE(PCI_VENDER_ID_REALTEK, 0x8176)}, +#endif +#ifdef CONFIG_RTL8192D + {PCI_DEVICE(PCI_VENDER_ID_REALTEK, 0x8193)}, + {PCI_DEVICE(PCI_VENDER_ID_REALTEK, 0x002B)}, +#endif + {}, +}; + +struct pci_drv_priv { + struct pci_driver rtw_pci_drv; + int drv_registered; +}; + + +static struct pci_drv_priv pci_drvpriv = { + .rtw_pci_drv.name = (char*)DRV_NAME, + .rtw_pci_drv.probe = rtw_drv_init, + .rtw_pci_drv.remove = rtw_dev_remove, + .rtw_pci_drv.id_table = rtw_pci_id_tbl, +#ifdef CONFIG_PM + .rtw_pci_drv.suspend = rtw_suspend, + .rtw_pci_drv.resume = rtw_resume, +#else + .rtw_pci_drv.suspend = NULL, + .rtw_pci_drv.resume = NULL, +#endif +}; + + +MODULE_DEVICE_TABLE(pci, rtw_pci_id_tbl); + + +static u16 pcibridge_vendors[PCI_BRIDGE_VENDOR_MAX] = { + INTEL_VENDOR_ID, + ATI_VENDOR_ID, + AMD_VENDOR_ID, + SIS_VENDOR_ID +}; + +static u8 rtw_pci_platform_switch_device_pci_aspm(_adapter *padapter, u8 value) +{ + struct dvobj_priv *pdvobjpriv = adapter_to_dvobj(padapter); + u8 bresult = _SUCCESS; + int error; + + value |= 0x40; + + error = pci_write_config_byte(pdvobjpriv->ppcidev, 0x80, value); + + if(error != 0) + { + bresult = _FALSE; + DBG_871X("rtw_pci_platform_switch_device_pci_aspm error (%d)\n",error); + } + + return bresult; +} + +// +// When we set 0x01 to enable clk request. Set 0x0 to disable clk req. +// +static u8 rtw_pci_switch_clk_req(_adapter *padapter, u8 value) +{ + struct dvobj_priv *pdvobjpriv = adapter_to_dvobj(padapter); + u8 buffer, bresult = _SUCCESS; + int error; + + buffer = value; + + if(!padapter->hw_init_completed) + return bresult; + + error = pci_write_config_byte(pdvobjpriv->ppcidev, 0x81, value); + + if(error != 0) + { + bresult = _FALSE; + DBG_871X("rtw_pci_switch_clk_req error (%d)\n",error); + } + + return bresult; +} + +#if 0 +//Description: +//Disable RTL8192SE ASPM & Disable Pci Bridge ASPM +void rtw_pci_disable_aspm(_adapter *padapter) +{ + struct dvobj_priv *pdvobjpriv = adapter_to_dvobj(padapter); + struct pwrctrl_priv *pwrpriv = &padapter->pwrctrlpriv; + struct pci_priv *pcipriv = &(pdvobjpriv->pcipriv); + u32 pcicfg_addrport = 0; + u8 num4bytes; + u8 linkctrl_reg; + u16 pcibridge_linkctrlreg, aspmlevel = 0; + + // When there exists anyone's busnum, devnum, and funcnum that are set to 0xff, + // we do not execute any action and return. + // if it is not intel bus then don't enable ASPM. + if ((pcipriv->busnumber == 0xff + && pcipriv->devnumber == 0xff + && pcipriv->funcnumber == 0xff) + || (pcipriv->pcibridge_busnum == 0xff + && pcipriv->pcibridge_devnum == 0xff + && pcipriv->pcibridge_funcnum == 0xff)) + { + DBG_871X("PlatformEnableASPM(): Fail to enable ASPM. Cannot find the Bus of PCI(Bridge).\n"); + return; + } + + if (pcipriv->pcibridge_vendor == PCI_BRIDGE_VENDOR_UNKNOWN) { + DBG_871X("%s(): Disable ASPM. Recognize the Bus of PCI(Bridge) as UNKNOWN.\n", __func__); + } + + if (pwrpriv->reg_rfps_level & RT_RF_OFF_LEVL_CLK_REQ) { + RT_CLEAR_PS_LEVEL(pwrpriv, RT_RF_OFF_LEVL_CLK_REQ); + rtw_pci_switch_clk_req(padapter, 0x0); + } + + { + // Suggested by SD1 for promising device will in L0 state after an I/O. + u8 tmp_u1b; + + pci_read_config_byte(pdvobjpriv->ppcidev, 0x80, &tmp_u1b); + } + + // Retrieve original configuration settings. + linkctrl_reg = pcipriv->linkctrl_reg; + pcibridge_linkctrlreg = pcipriv->pcibridge_linkctrlreg; + + // Set corresponding value. + aspmlevel |= BIT(0) | BIT(1); + linkctrl_reg &= ~aspmlevel; + pcibridge_linkctrlreg &= ~(BIT(0) | BIT(1)); + + rtw_pci_platform_switch_device_pci_aspm(padapter, linkctrl_reg); + rtw_udelay_os(50); + + //When there exists anyone's busnum, devnum, and funcnum that are set to 0xff, + // we do not execute any action and return. + if ((pcipriv->busnumber == 0xff && + pcipriv->devnumber == 0xff && + pcipriv->funcnumber == 0xff) || + (pcipriv->pcibridge_busnum == 0xff && + pcipriv->pcibridge_devnum == 0xff + && pcipriv->pcibridge_funcnum == 0xff)) + { + //Do Nothing!! + } + else + { + //4 //Disable Pci Bridge ASPM + pcicfg_addrport = (pcipriv->pcibridge_busnum << 16) | + (pcipriv->pcibridge_devnum << 11) | + (pcipriv->pcibridge_funcnum << 8) | (1 << 31); + num4bytes = (pcipriv->pcibridge_pciehdr_offset + 0x10) / 4; + + // set up address port at 0xCF8 offset field= 0 (dev|vend) + NdisRawWritePortUlong(PCI_CONF_ADDRESS, pcicfg_addrport + (num4bytes << 2)); + + // now grab data port with device|vendor 4 byte dword + NdisRawWritePortUchar(PCI_CONF_DATA, pcibridge_linkctrlreg); + + DBG_871X("rtw_pci_disable_aspm():PciBridge busnumber[%x], DevNumbe[%x], funcnumber[%x], Write reg[%x] = %x\n", + pcipriv->pcibridge_busnum, pcipriv->pcibridge_devnum, + pcipriv->pcibridge_funcnum, + (pcipriv->pcibridge_pciehdr_offset+0x10), pcibridge_linkctrlreg); + + rtw_udelay_os(50); + } +} + +//[ASPM] +//Description: +// Enable RTL8192SE ASPM & Enable Pci Bridge ASPM for power saving +// We should follow the sequence to enable RTL8192SE first then enable Pci Bridge ASPM +// or the system will show bluescreen. +void rtw_pci_enable_aspm(_adapter *padapter) +{ + struct dvobj_priv *pdvobjpriv = adapter_to_dvobj(padapter); + struct pwrctrl_priv *pwrpriv = &padapter->pwrctrlpriv; + struct pci_priv *pcipriv = &(pdvobjpriv->pcipriv); + u16 aspmlevel = 0; + u32 pcicfg_addrport = 0; + u8 num4bytes; + u8 u_pcibridge_aspmsetting = 0; + u8 u_device_aspmsetting = 0; + + // When there exists anyone's busnum, devnum, and funcnum that are set to 0xff, + // we do not execute any action and return. + // if it is not intel bus then don't enable ASPM. + + if ((pcipriv->busnumber == 0xff + && pcipriv->devnumber == 0xff + && pcipriv->funcnumber == 0xff) + || (pcipriv->pcibridge_busnum == 0xff + && pcipriv->pcibridge_devnum == 0xff + && pcipriv->pcibridge_funcnum == 0xff)) + { + DBG_871X("PlatformEnableASPM(): Fail to enable ASPM. Cannot find the Bus of PCI(Bridge).\n"); + return; + } + + //4 Enable Pci Bridge ASPM + pcicfg_addrport = (pcipriv->pcibridge_busnum << 16) + | (pcipriv->pcibridge_devnum << 11) + | (pcipriv->pcibridge_funcnum << 8) | (1 << 31); + num4bytes = (pcipriv->pcibridge_pciehdr_offset + 0x10) / 4; + // set up address port at 0xCF8 offset field= 0 (dev|vend) + NdisRawWritePortUlong(PCI_CONF_ADDRESS, pcicfg_addrport + (num4bytes << 2)); + // now grab data port with device|vendor 4 byte dword + + u_pcibridge_aspmsetting = pcipriv->pcibridge_linkctrlreg | pdvobjpriv->const_hostpci_aspm_setting; + + if (pcipriv->pcibridge_vendor == PCI_BRIDGE_VENDOR_INTEL || + pcipriv->pcibridge_vendor == PCI_BRIDGE_VENDOR_SIS) + u_pcibridge_aspmsetting &= ~BIT(0); + + NdisRawWritePortUchar(PCI_CONF_DATA, u_pcibridge_aspmsetting); + + DBG_871X("PlatformEnableASPM():PciBridge busnumber[%x], DevNumbe[%x], funcnumber[%x], Write reg[%x] = %x\n", + pcipriv->pcibridge_busnum, + pcipriv->pcibridge_devnum, + pcipriv->pcibridge_funcnum, + (pcipriv->pcibridge_pciehdr_offset+0x10), + u_pcibridge_aspmsetting); + + rtw_udelay_os(50); + + // Get ASPM level (with/without Clock Req) + aspmlevel |= pdvobjpriv->const_devicepci_aspm_setting; + u_device_aspmsetting = pcipriv->linkctrl_reg; + u_device_aspmsetting |= aspmlevel; + + rtw_pci_platform_switch_device_pci_aspm(padapter, u_device_aspmsetting); //(priv->linkctrl_reg | ASPMLevel)); + + if (pwrpriv->reg_rfps_level & RT_RF_OFF_LEVL_CLK_REQ) { + rtw_pci_switch_clk_req(padapter, (pwrpriv->reg_rfps_level & RT_RF_OFF_LEVL_CLK_REQ) ? 1 : 0); + RT_SET_PS_LEVEL(pwrpriv, RT_RF_OFF_LEVL_CLK_REQ); + } + + rtw_udelay_os(50); +} + +// +//Description: +//To get link control field by searching from PCIe capability lists. +// +static u8 +rtw_get_link_control_field(_adapter *padapter, u8 busnum, u8 devnum, + u8 funcnum) +{ + struct dvobj_priv *pdvobjpriv = adapter_to_dvobj(padapter); + struct pci_priv *pcipriv = &(pdvobjpriv->pcipriv); + struct rt_pci_capabilities_header capability_hdr; + u8 capability_offset, num4bytes; + u32 pcicfg_addrport = 0; + u8 linkctrl_reg; + u8 status = _FALSE; + + //If busnum, devnum, funcnum are set to 0xff. + if (busnum == 0xff && devnum == 0xff && funcnum == 0xff) { + DBG_871X("GetLinkControlField(): Fail to find PCIe Capability\n"); + return _FALSE; + } + + pcicfg_addrport = (busnum << 16) | (devnum << 11) | (funcnum << 8) | (1 << 31); + + //2PCIeCap + + // The device supports capability lists. Find the capabilities. + num4bytes = 0x34 / 4; + //get capability_offset + // set up address port at 0xCF8 offset field= 0 (dev|vend) + NdisRawWritePortUlong(PCI_CONF_ADDRESS, pcicfg_addrport + (num4bytes << 2)); + // now grab data port with device|vendor 4 byte dword + NdisRawReadPortUchar(PCI_CONF_DATA, &capability_offset); + + // Loop through the capabilities in search of the power management capability. + // The list is NULL-terminated, so the last offset will always be zero. + + while (capability_offset != 0) { + // First find the number of 4 Byte. + num4bytes = capability_offset / 4; + + // Read the header of the capability at this offset. If the retrieved capability is not + // the power management capability that we are looking for, follow the link to the + // next capability and continue looping. + + //4 get capability_hdr + // set up address port at 0xCF8 offset field= 0 (dev|vend) + NdisRawWritePortUlong(PCI_CONF_ADDRESS, pcicfg_addrport + (num4bytes << 2)); + // now grab data port with device|vendor 4 byte dword + NdisRawReadPortUshort(PCI_CONF_DATA, (u16 *) & capability_hdr); + + // Found the PCI express capability + if (capability_hdr.capability_id == PCI_CAPABILITY_ID_PCI_EXPRESS) + { + break; + } + else + { + // This is some other capability. Keep looking for the PCI express capability. + capability_offset = capability_hdr.next; + } + } + + if (capability_hdr.capability_id == PCI_CAPABILITY_ID_PCI_EXPRESS) // + { + num4bytes = (capability_offset + 0x10) / 4; + + //4 Read Link Control Register + // set up address port at 0xCF8 offset field= 0 (dev|vend) + NdisRawWritePortUlong(PCI_CONF_ADDRESS, pcicfg_addrport + (num4bytes << 2)); + // now grab data port with device|vendor 4 byte dword + NdisRawReadPortUchar(PCI_CONF_DATA, &linkctrl_reg); + + pcipriv->pcibridge_pciehdr_offset = capability_offset; + pcipriv->pcibridge_linkctrlreg = linkctrl_reg; + + status = _TRUE; + } + else + { + // We didn't find a PCIe capability. + DBG_871X("GetLinkControlField(): Cannot Find PCIe Capability\n"); + } + + return status; +} + +// +//Description: +//To get PCI bus infomation and return busnum, devnum, and funcnum about +//the bus(bridge) which the device binds. +// +static u8 +rtw_get_pci_bus_info(_adapter *padapter, + u16 vendorid, + u16 deviceid, + u8 irql, u8 basecode, u8 subclass, u8 filed19val, + u8 * busnum, u8 * devnum, u8 * funcnum) +{ + struct dvobj_priv *pdvobjpriv = adapter_to_dvobj(padapter); + struct pci_dev *pdev = pdvobjpriv->ppcidev; + u8 busnum_idx, devicenum_idx, functionnum_idx; + u32 pcicfg_addrport = 0; + u32 dev_venid = 0, classcode, field19, headertype; + u16 venId, devId; + u8 basec, subc, irqline; + u16 regoffset; + u8 b_singlefunc = _FALSE; + u8 b_bridgechk = _FALSE; + + *busnum = 0xFF; + *devnum = 0xFF; + *funcnum = 0xFF; + + //DBG_871X("==============>vendorid:%x,deviceid:%x,irql:%x\n", vendorid,deviceid,irql); + if ((basecode == PCI_CLASS_BRIDGE_DEV) && + (subclass == PCI_SUBCLASS_BR_PCI_TO_PCI) + && (filed19val == U1DONTCARE)) + b_bridgechk = _TRUE; + + // perform a complete pci bus scan operation + for (busnum_idx = 0; busnum_idx < PCI_MAX_BRIDGE_NUMBER; busnum_idx++) //255 + { + for (devicenum_idx = 0; devicenum_idx < PCI_MAX_DEVICES; devicenum_idx++) //32 + { + b_singlefunc = _FALSE; + for (functionnum_idx = 0; functionnum_idx < PCI_MAX_FUNCTION; functionnum_idx++) //8 + { + // + // We have to skip redundant Bus scan to prevent unexpected system hang + // if single function is present in this device. + // 2009.02.26. + // + if (functionnum_idx == 0) { + //4 get header type (DWORD #3) + pcicfg_addrport = (busnum_idx << 16) | (devicenum_idx << 11) | (functionnum_idx << 8) | (1 << 31); + NdisRawWritePortUlong(PCI_CONF_ADDRESS, pcicfg_addrport + (3 << 2)); + NdisRawReadPortUlong(PCI_CONF_DATA, &headertype); + headertype = ((headertype >> 16) & 0x0080) >> 7; // address 0x0e[7]. + if (headertype == 0) //Single function + b_singlefunc = _TRUE; + } + else + {//By pass the following scan process. + if (b_singlefunc == _TRUE) + break; + } + + // Set access enable control. + pcicfg_addrport = (busnum_idx << 16) | (devicenum_idx << 11) | (functionnum_idx << 8) | (1 << 31); + + //4 // Get vendorid/ deviceid + // set up address port at 0xCF8 offset field= 0 (dev|vend) + NdisRawWritePortUlong(PCI_CONF_ADDRESS, pcicfg_addrport); + // now grab data port with device|vendor 4 byte dword + NdisRawReadPortUlong(PCI_CONF_DATA, &dev_venid); + + // if data port is full of 1s, no device is present + // some broken boards return 0 if a slot is empty: + if (dev_venid == 0xFFFFFFFF || dev_venid == 0) + continue; //PCI_INVALID_VENDORID + + // 4 // Get irql + regoffset = 0x3C; + pcicfg_addrport = (busnum_idx << 16) | (devicenum_idx << 11) | (functionnum_idx << 8) | (1 << 31) | (regoffset & 0xFFFFFFFC); + NdisRawWritePortUlong(PCI_CONF_ADDRESS, pcicfg_addrport); + NdisRawReadPortUchar((PCI_CONF_DATA +(regoffset & 0x3)), &irqline); + + venId = (u16) (dev_venid >> 0) & 0xFFFF; + devId = (u16) (dev_venid >> 16) & 0xFFFF; + + // Check Vendor ID + if (!b_bridgechk && (venId != vendorid) && (vendorid != U2DONTCARE)) + continue; + + // Check Device ID + if (!b_bridgechk && (devId != deviceid) && (deviceid != U2DONTCARE)) + continue; + + // Check irql + if (!b_bridgechk && (irqline != irql) && (irql != U1DONTCARE)) + continue; + + //4 get Class Code + pcicfg_addrport = (busnum_idx << 16) | (devicenum_idx << 11) | (functionnum_idx << 8) | (1 << 31); + NdisRawWritePortUlong(PCI_CONF_ADDRESS, pcicfg_addrport + (2 << 2)); + NdisRawReadPortUlong(PCI_CONF_DATA, &classcode); + classcode = classcode >> 8; + + basec = (u8) (classcode >> 16) & 0xFF; + subc = (u8) (classcode >> 8) & 0xFF; + if (b_bridgechk && (venId != vendorid) && (basec == basecode) && (subc == subclass)) + return _TRUE; + + // Check Vendor ID + if (b_bridgechk && (venId != vendorid) && (vendorid != U2DONTCARE)) + continue; + + // Check Device ID + if (b_bridgechk && (devId != deviceid) && (deviceid != U2DONTCARE)) + continue; + + // Check irql + if (b_bridgechk && (irqline != irql) && (irql != U1DONTCARE)) + continue; + + //4 get field 0x19 value (DWORD #6) + NdisRawWritePortUlong(PCI_CONF_ADDRESS, pcicfg_addrport + (6 << 2)); + NdisRawReadPortUlong(PCI_CONF_DATA, &field19); + field19 = (field19 >> 8) & 0xFF; + + //4 Matching Class Code and filed19. + if ((basec == basecode) && (subc == subclass) && ((field19 == filed19val) || (filed19val == U1DONTCARE))) { + *busnum = busnum_idx; + *devnum = devicenum_idx; + *funcnum = functionnum_idx; + + DBG_871X("GetPciBusInfo(): Find Device(%X:%X) bus=%d dev=%d, func=%d\n", + vendorid, deviceid, busnum_idx, devicenum_idx, functionnum_idx); + return _TRUE; + } + } + } + } + + DBG_871X("GetPciBusInfo(): Cannot Find Device(%X:%X:%X)\n", vendorid, deviceid, dev_venid); + + return _FALSE; +} + +static u8 +rtw_get_pci_brideg_info(_adapter *padapter, + u8 basecode, + u8 subclass, + u8 filed19val, u8 * busnum, u8 * devnum, + u8 * funcnum, u16 * vendorid, u16 * deviceid) +{ + u8 busnum_idx, devicenum_idx, functionnum_idx; + u32 pcicfg_addrport = 0; + u32 dev_venid, classcode, field19, headertype; + u16 venId, devId; + u8 basec, subc, irqline; + u16 regoffset; + u8 b_singlefunc = _FALSE; + + *busnum = 0xFF; + *devnum = 0xFF; + *funcnum = 0xFF; + + // perform a complete pci bus scan operation + for (busnum_idx = 0; busnum_idx < PCI_MAX_BRIDGE_NUMBER; busnum_idx++) //255 + { + for (devicenum_idx = 0; devicenum_idx < PCI_MAX_DEVICES; devicenum_idx++) //32 + { + b_singlefunc = _FALSE; + for (functionnum_idx = 0; functionnum_idx < PCI_MAX_FUNCTION; functionnum_idx++) //8 + { + // + // We have to skip redundant Bus scan to prevent unexpected system hang + // if single function is present in this device. + // 2009.02.26. + // + if (functionnum_idx == 0) + { + //4 get header type (DWORD #3) + pcicfg_addrport = (busnum_idx << 16) | (devicenum_idx << 11) | (functionnum_idx << 8) | (1 << 31); + //NdisRawWritePortUlong((ULONG_PTR)PCI_CONF_ADDRESS , pcicfg_addrport + (3 << 2)); + //NdisRawReadPortUlong((ULONG_PTR)PCI_CONF_DATA, &headertype); + NdisRawWritePortUlong(PCI_CONF_ADDRESS, pcicfg_addrport + (3 << 2)); + NdisRawReadPortUlong(PCI_CONF_DATA, &headertype); + headertype = ((headertype >> 16) & 0x0080) >> 7; // address 0x0e[7]. + if (headertype == 0) //Single function + b_singlefunc = _TRUE; + } + else + {//By pass the following scan process. + if (b_singlefunc == _TRUE) + break; + } + + pcicfg_addrport = (busnum_idx << 16) | (devicenum_idx << 11) | (functionnum_idx << 8) | (1 << 31); + + //4 // Get vendorid/ deviceid + // set up address port at 0xCF8 offset field= 0 (dev|vend) + NdisRawWritePortUlong(PCI_CONF_ADDRESS, pcicfg_addrport); + // now grab data port with device|vendor 4 byte dword + NdisRawReadPortUlong(PCI_CONF_DATA, &dev_venid); + + //4 Get irql + regoffset = 0x3C; + pcicfg_addrport = (busnum_idx << 16) | (devicenum_idx << 11) | (functionnum_idx << 8) | (1 << 31) | (regoffset & 0xFFFFFFFC); + NdisRawWritePortUlong(PCI_CONF_ADDRESS, pcicfg_addrport); + NdisRawReadPortUchar((PCI_CONF_DATA + (regoffset & 0x3)), &irqline); + + venId = (u16) (dev_venid >> 0) & 0xFFFF; + devId = (u16) (dev_venid >> 16) & 0xFFFF; + + //4 get Class Code + pcicfg_addrport = (busnum_idx << 16) | (devicenum_idx << 11) | (functionnum_idx << 8) | (1 << 31); + NdisRawWritePortUlong(PCI_CONF_ADDRESS, pcicfg_addrport + (2 << 2)); + NdisRawReadPortUlong(PCI_CONF_DATA, &classcode); + classcode = classcode >> 8; + + basec = (u8) (classcode >> 16) & 0xFF; + subc = (u8) (classcode >> 8) & 0xFF; + + //4 get field 0x19 value (DWORD #6) + NdisRawWritePortUlong(PCI_CONF_ADDRESS, pcicfg_addrport + (6 << 2)); + NdisRawReadPortUlong(PCI_CONF_DATA, &field19); + field19 = (field19 >> 8) & 0xFF; + + //4 Matching Class Code and filed19. + if ((basec == basecode) && (subc == subclass) && ((field19 == filed19val) || (filed19val == U1DONTCARE))) { + *busnum = busnum_idx; + *devnum = devicenum_idx; + *funcnum = functionnum_idx; + *vendorid = venId; + *deviceid = devId; + + DBG_871X("GetPciBridegInfo : Find Device(%X:%X) bus=%d dev=%d, func=%d\n", + venId, devId, busnum_idx, devicenum_idx, functionnum_idx); + + return _TRUE; + } + } + } + } + + DBG_871X("GetPciBridegInfo(): Cannot Find PciBridge for Device\n"); + + return _FALSE; +} // end of GetPciBridegInfo + +// +//Description: +//To find specific bridge information. +// +static void rtw_find_bridge_info(_adapter *padapter) +{ + struct dvobj_priv *pdvobjpriv = adapter_to_dvobj(padapter); + struct pci_priv *pcipriv = &(pdvobjpriv->pcipriv); + u8 pcibridge_busnum = 0xff; + u8 pcibridge_devnum = 0xff; + u8 pcibridge_funcnum = 0xff; + u16 pcibridge_vendorid = 0xff; + u16 pcibridge_deviceid = 0xff; + u8 tmp = 0; + + rtw_get_pci_brideg_info(padapter, + PCI_CLASS_BRIDGE_DEV, + PCI_SUBCLASS_BR_PCI_TO_PCI, + pcipriv->busnumber, + &pcibridge_busnum, + &pcibridge_devnum, &pcibridge_funcnum, + &pcibridge_vendorid, &pcibridge_deviceid); + + // match the array of vendor id and regonize which chipset is used. + pcipriv->pcibridge_vendor = PCI_BRIDGE_VENDOR_UNKNOWN; + + for (tmp = 0; tmp < PCI_BRIDGE_VENDOR_MAX; tmp++) { + if (pcibridge_vendorid == pcibridge_vendors[tmp]) { + pcipriv->pcibridge_vendor = tmp; + DBG_871X("Pci Bridge Vendor is found index: %d\n", tmp); + break; + } + } + DBG_871X("Pci Bridge Vendor is %x\n", pcibridge_vendors[tmp]); + + // Update corresponding PCI bus info. + pcipriv->pcibridge_busnum = pcibridge_busnum; + pcipriv->pcibridge_devnum = pcibridge_devnum; + pcipriv->pcibridge_funcnum = pcibridge_funcnum; + pcipriv->pcibridge_vendorid = pcibridge_vendorid; + pcipriv->pcibridge_deviceid = pcibridge_deviceid; + +} + +static u8 +rtw_get_amd_l1_patch(_adapter *padapter, u8 busnum, u8 devnum, + u8 funcnum) +{ + u8 status = _FALSE; + u8 offset_e0; + unsigned offset_e4; + u32 pcicfg_addrport = 0; + + pcicfg_addrport = (busnum << 16) | (devnum << 11) | (funcnum << 8) | (1 << 31); + + NdisRawWritePortUlong(PCI_CONF_ADDRESS, pcicfg_addrport + 0xE0); + NdisRawWritePortUchar(PCI_CONF_DATA, 0xA0); + + NdisRawWritePortUlong(PCI_CONF_ADDRESS, pcicfg_addrport + 0xE0); + NdisRawReadPortUchar(PCI_CONF_DATA, &offset_e0); + + if (offset_e0 == 0xA0) + { + NdisRawWritePortUlong(PCI_CONF_ADDRESS, pcicfg_addrport + 0xE4); + NdisRawReadPortUlong(PCI_CONF_DATA, &offset_e4); + //DbgPrint("Offset E4 %x\n", offset_e4); + if (offset_e4 & BIT(23)) + status = _TRUE; + } + + return status; +} +#else +/*Disable RTL8192SE ASPM & Disable Pci Bridge ASPM*/ +void rtw_pci_disable_aspm(_adapter *padapter) +{ + struct dvobj_priv *pdvobjpriv = adapter_to_dvobj(padapter); + struct pwrctrl_priv *pwrpriv = &padapter->pwrctrlpriv; + struct pci_dev *pdev = pdvobjpriv->ppcidev; + struct pci_dev *bridge_pdev = pdev->bus->self; + struct pci_priv *pcipriv = &(pdvobjpriv->pcipriv); + u8 linkctrl_reg; + u16 pcibridge_linkctrlreg; + u16 aspmlevel = 0; + + // We do not diable/enable ASPM by driver, in the future, the BIOS will enable host and NIC ASPM. + // Advertised by SD1 victorh. Added by tynli. 2009.11.23. + if(pdvobjpriv->const_pci_aspm == 0) + return; + + if(!padapter->hw_init_completed) + return; + + if (pcipriv->pcibridge_vendor == PCI_BRIDGE_VENDOR_UNKNOWN) { + RT_TRACE(_module_hci_intfs_c_, _drv_err_, ("%s(): PCI(Bridge) UNKNOWN.\n", __FUNCTION__)); + return; + } + + linkctrl_reg = pcipriv->linkctrl_reg; + pcibridge_linkctrlreg = pcipriv->pcibridge_linkctrlreg; + + // Set corresponding value. + aspmlevel |= BIT(0) | BIT(1); + linkctrl_reg &=~aspmlevel; + pcibridge_linkctrlreg &=~aspmlevel; + + if (pwrpriv->reg_rfps_level & RT_RF_OFF_LEVL_CLK_REQ) { + RT_CLEAR_PS_LEVEL(pwrpriv, RT_RF_OFF_LEVL_CLK_REQ); + rtw_pci_switch_clk_req(padapter, 0x0); + } + + { + /*for promising device will in L0 state after an I/O.*/ + u8 tmp_u1b; + pci_read_config_byte(pdev, 0x80, &tmp_u1b); + } + + rtw_pci_platform_switch_device_pci_aspm(padapter, linkctrl_reg); + rtw_udelay_os(50); + + //When there exists anyone's BusNum, DevNum, and FuncNum that are set to 0xff, + // we do not execute any action and return. Added by tynli. + if( (pcipriv->busnumber == 0xff && pcipriv->devnumber == 0xff && pcipriv->funcnumber == 0xff) || + (pcipriv->pcibridge_busnum == 0xff && pcipriv->pcibridge_devnum == 0xff && pcipriv->pcibridge_funcnum == 0xff) ) + { + // Do Nothing!! + } + else + { + /*Disable Pci Bridge ASPM*/ + //NdisRawWritePortUlong(PCI_CONF_ADDRESS, pcicfg_addrport + (num4bytes << 2)); + //NdisRawWritePortUchar(PCI_CONF_DATA, pcibridge_linkctrlreg); + pci_write_config_byte(bridge_pdev, pcipriv->pcibridge_pciehdr_offset + 0x10, pcibridge_linkctrlreg); + + DBG_871X("rtw_pci_disable_aspm():PciBridge busnumber[%x], DevNumbe[%x], funcnumber[%x], Write reg[%x] = %x\n", + pcipriv->pcibridge_busnum, pcipriv->pcibridge_devnum, + pcipriv->pcibridge_funcnum, + (pcipriv->pcibridge_pciehdr_offset+0x10), pcibridge_linkctrlreg); + + rtw_udelay_os(50); + } + +} + +/*Enable RTL8192SE ASPM & Enable Pci Bridge ASPM for +power saving We should follow the sequence to enable +RTL8192SE first then enable Pci Bridge ASPM +or the system will show bluescreen.*/ +void rtw_pci_enable_aspm(_adapter *padapter) +{ + struct dvobj_priv *pdvobjpriv = adapter_to_dvobj(padapter); + struct pwrctrl_priv *pwrpriv = &padapter->pwrctrlpriv; + struct pci_dev *pdev = pdvobjpriv->ppcidev; + struct pci_dev *bridge_pdev = pdev->bus->self; + struct pci_priv *pcipriv = &(pdvobjpriv->pcipriv); + u16 aspmlevel = 0; + u8 u_pcibridge_aspmsetting = 0; + u8 u_device_aspmsetting = 0; + u32 u_device_aspmsupportsetting = 0; + + // We do not diable/enable ASPM by driver, in the future, the BIOS will enable host and NIC ASPM. + // Advertised by SD1 victorh. Added by tynli. 2009.11.23. + if(pdvobjpriv->const_pci_aspm == 0) + return; + + //When there exists anyone's BusNum, DevNum, and FuncNum that are set to 0xff, + // we do not execute any action and return. Added by tynli. + if( (pcipriv->busnumber == 0xff && pcipriv->devnumber == 0xff && pcipriv->funcnumber == 0xff) || + (pcipriv->pcibridge_busnum == 0xff && pcipriv->pcibridge_devnum == 0xff && pcipriv->pcibridge_funcnum == 0xff) ) + { + DBG_871X("rtw_pci_enable_aspm(): Fail to enable ASPM. Cannot find the Bus of PCI(Bridge).\n"); + return; + } + +//Get Bridge ASPM Support +//not to enable bridge aspm if bridge does not support +//Added by sherry 20100803 + if (IS_HARDWARE_TYPE_8192DE(padapter)) + { + //PciCfgAddrPort = (pcipriv->pcibridge_busnum << 16)|(pcipriv->pcibridge_devnum<< 11)|(pcipriv->pcibridge_funcnum << 8)|(1 << 31); + //Num4Bytes = (pcipriv->pcibridge_pciehdr_offset+0x0C)/4; + //NdisRawWritePortUlong((ULONG_PTR)PCI_CONF_ADDRESS , PciCfgAddrPort+(Num4Bytes << 2)); + //NdisRawReadPortUlong((ULONG_PTR)PCI_CONF_DATA,&uDeviceASPMSupportSetting); + pci_read_config_dword(bridge_pdev, (pcipriv->pcibridge_pciehdr_offset+0x0C), &u_device_aspmsupportsetting); + DBG_871X("rtw_pci_enable_aspm(): Bridge ASPM support %x \n",u_device_aspmsupportsetting); + if(((u_device_aspmsupportsetting & BIT(11)) != BIT(11)) || ((u_device_aspmsupportsetting & BIT(10)) != BIT(10))) + { + if(pdvobjpriv->const_devicepci_aspm_setting == 3) + { + DBG_871X("rtw_pci_enable_aspm(): Bridge not support L0S or L1\n"); + return; + } + else if(pdvobjpriv->const_devicepci_aspm_setting == 2) + { + if((u_device_aspmsupportsetting & BIT(11)) != BIT(11)) + { + DBG_871X("rtw_pci_enable_aspm(): Bridge not support L1 \n"); + return; + } + } + else if(pdvobjpriv->const_devicepci_aspm_setting == 1) + { + if((u_device_aspmsupportsetting & BIT(10)) != BIT(10)) + { + DBG_871X("rtw_pci_enable_aspm(): Bridge not support L0s \n"); + return; + } + + } + } + else + { + DBG_871X("rtw_pci_enable_aspm(): Bridge support L0s and L1 \n"); + } + } + + + /*Enable Pci Bridge ASPM*/ + //PciCfgAddrPort = (pcipriv->pcibridge_busnum << 16)|(pcipriv->pcibridge_devnum<< 11) |(pcipriv->pcibridge_funcnum << 8)|(1 << 31); + //Num4Bytes = (pcipriv->pcibridge_pciehdr_offset+0x10)/4; + // set up address port at 0xCF8 offset field= 0 (dev|vend) + //NdisRawWritePortUlong(PCI_CONF_ADDRESS, PciCfgAddrPort + (Num4Bytes << 2)); + // now grab data port with device|vendor 4 byte dword + + u_pcibridge_aspmsetting = pcipriv->pcibridge_linkctrlreg; + u_pcibridge_aspmsetting |= pdvobjpriv->const_hostpci_aspm_setting; + + if (pcipriv->pcibridge_vendor == PCI_BRIDGE_VENDOR_INTEL || + pcipriv->pcibridge_vendor == PCI_BRIDGE_VENDOR_SIS ) + u_pcibridge_aspmsetting &= ~BIT(0); // for intel host 42 device 43 + + //NdisRawWritePortUchar(PCI_CONF_DATA, u_pcibridge_aspmsetting); + pci_write_config_byte(bridge_pdev, (pcipriv->pcibridge_pciehdr_offset+0x10), u_pcibridge_aspmsetting); + + DBG_871X("PlatformEnableASPM():PciBridge busnumber[%x], DevNumbe[%x], funcnumber[%x], Write reg[%x] = %x\n", + pcipriv->pcibridge_busnum, pcipriv->pcibridge_devnum, pcipriv->pcibridge_funcnum, + (pcipriv->pcibridge_pciehdr_offset+0x10), + u_pcibridge_aspmsetting); + + rtw_udelay_os(50); + + /*Get ASPM level (with/without Clock Req)*/ + aspmlevel |= pdvobjpriv->const_devicepci_aspm_setting; + u_device_aspmsetting = pcipriv->linkctrl_reg; + u_device_aspmsetting |= aspmlevel; // device 43 + + rtw_pci_platform_switch_device_pci_aspm(padapter, u_device_aspmsetting); + + if (pwrpriv->reg_rfps_level & RT_RF_OFF_LEVL_CLK_REQ) { + rtw_pci_switch_clk_req(padapter, (pwrpriv->reg_rfps_level & RT_RF_OFF_LEVL_CLK_REQ) ? 1 : 0); + RT_SET_PS_LEVEL(pwrpriv, RT_RF_OFF_LEVL_CLK_REQ); + } + + rtw_udelay_os(50); +} + +static u8 rtw_pci_get_amd_l1_patch(struct dvobj_priv *dvobj) +{ + struct pci_dev *pdev = dvobj->ppcidev; + struct pci_dev *bridge_pdev = pdev->bus->self; + u8 status = _FALSE; + u8 offset_e0; + u32 offset_e4; + + //NdisRawWritePortUlong(PCI_CONF_ADDRESS,pcicfg_addrport + 0xE0); + //NdisRawWritePortUchar(PCI_CONF_DATA, 0xA0); + pci_write_config_byte(bridge_pdev, 0xE0, 0xA0); + + //NdisRawWritePortUlong(PCI_CONF_ADDRESS,pcicfg_addrport + 0xE0); + //NdisRawReadPortUchar(PCI_CONF_DATA, &offset_e0); + pci_read_config_byte(bridge_pdev, 0xE0, &offset_e0); + + if (offset_e0 == 0xA0) { + //NdisRawWritePortUlong(PCI_CONF_ADDRESS, pcicfg_addrport + 0xE4); + //NdisRawReadPortUlong(PCI_CONF_DATA, &offset_e4); + pci_read_config_dword(bridge_pdev, 0xE4, &offset_e4); + if (offset_e4 & BIT(23)) + status = _TRUE; + } + + return status; +} + +static void rtw_pci_get_linkcontrol_field(struct dvobj_priv *dvobj) +{ + struct pci_priv *pcipriv = &(dvobj->pcipriv); + struct pci_dev *pdev = dvobj->ppcidev; + struct pci_dev *bridge_pdev = pdev->bus->self; + u8 capabilityoffset = pcipriv->pcibridge_pciehdr_offset; + u8 linkctrl_reg; + + /*Read Link Control Register*/ + pci_read_config_byte(bridge_pdev, capabilityoffset + PCI_EXP_LNKCTL, &linkctrl_reg); + + pcipriv->pcibridge_linkctrlreg = linkctrl_reg; +} +#endif + +static void rtw_pci_parse_configuration(struct dvobj_priv *dvobj) +{ + struct pci_dev *pdev = dvobj->ppcidev; + struct pci_priv *pcipriv = &(dvobj->pcipriv); + u8 tmp; + int pos; + u8 linkctrl_reg; + + //Link Control Register + pos = pci_find_capability(pdev, PCI_CAP_ID_EXP); + pci_read_config_byte(pdev, pos + PCI_EXP_LNKCTL, &linkctrl_reg); + pcipriv->linkctrl_reg = linkctrl_reg; + + //DBG_871X("Link Control Register = %x\n", pcipriv->linkctrl_reg); + + pci_read_config_byte(pdev, 0x98, &tmp); + tmp |= BIT(4); + pci_write_config_byte(pdev, 0x98, tmp); + + //tmp = 0x17; + //pci_write_config_byte(pdev, 0x70f, tmp); +} + +// +// Update PCI dependent default settings. +// +static void rtw_pci_update_default_setting(_adapter *padapter) +{ + struct dvobj_priv *pdvobjpriv = adapter_to_dvobj(padapter); + struct pci_priv *pcipriv = &(pdvobjpriv->pcipriv); + struct pwrctrl_priv *pwrpriv = &padapter->pwrctrlpriv; + + //reset pPSC->reg_rfps_level & priv->b_support_aspm + pwrpriv->reg_rfps_level = 0; + pwrpriv->b_support_aspm = 0; + + // Dynamic Mechanism, + //rtw_hal_set_def_var(pAdapter, HAL_DEF_INIT_GAIN, &(pDevice->InitGainState)); + + // Update PCI ASPM setting + pwrpriv->const_amdpci_aspm = pdvobjpriv->const_amdpci_aspm; + switch (pdvobjpriv->const_pci_aspm) { + case 0: // No ASPM + break; + + case 1: // ASPM dynamically enabled/disable. + pwrpriv->reg_rfps_level |= RT_RF_LPS_LEVEL_ASPM; + break; + + case 2: // ASPM with Clock Req dynamically enabled/disable. + pwrpriv->reg_rfps_level |= (RT_RF_LPS_LEVEL_ASPM | RT_RF_OFF_LEVL_CLK_REQ); + break; + + case 3: // Always enable ASPM and Clock Req from initialization to halt. + pwrpriv->reg_rfps_level &= ~(RT_RF_LPS_LEVEL_ASPM); + pwrpriv->reg_rfps_level |= (RT_RF_PS_LEVEL_ALWAYS_ASPM | RT_RF_OFF_LEVL_CLK_REQ); + break; + + case 4: // Always enable ASPM without Clock Req from initialization to halt. + pwrpriv->reg_rfps_level &= ~(RT_RF_LPS_LEVEL_ASPM | RT_RF_OFF_LEVL_CLK_REQ); + pwrpriv->reg_rfps_level |= RT_RF_PS_LEVEL_ALWAYS_ASPM; + break; + } + + pwrpriv->reg_rfps_level |= RT_RF_OFF_LEVL_HALT_NIC; + + // Update Radio OFF setting + switch (pdvobjpriv->const_hwsw_rfoff_d3) { + case 1: + if (pwrpriv->reg_rfps_level & RT_RF_LPS_LEVEL_ASPM) + pwrpriv->reg_rfps_level |= RT_RF_OFF_LEVL_ASPM; + break; + + case 2: + if (pwrpriv->reg_rfps_level & RT_RF_LPS_LEVEL_ASPM) + pwrpriv->reg_rfps_level |= RT_RF_OFF_LEVL_ASPM; + pwrpriv->reg_rfps_level |= RT_RF_OFF_LEVL_HALT_NIC; + break; + + case 3: + pwrpriv->reg_rfps_level |= RT_RF_OFF_LEVL_PCI_D3; + break; + } + + // Update Rx 2R setting + //pPSC->reg_rfps_level |= ((pDevice->RegLPS2RDisable) ? RT_RF_LPS_DISALBE_2R : 0); + + // + // Set HW definition to determine if it supports ASPM. + // + switch (pdvobjpriv->const_support_pciaspm) { + case 0: // Not support ASPM. + { + u8 b_support_aspm = _FALSE; + pwrpriv->b_support_aspm = b_support_aspm; + } + break; + + case 1: // Support ASPM. + { + u8 b_support_aspm = _TRUE; + u8 b_support_backdoor = _TRUE; + + pwrpriv->b_support_aspm = b_support_aspm; + + /*if(pAdapter->MgntInfo.CustomerID == RT_CID_TOSHIBA && + pcipriv->pcibridge_vendor == PCI_BRIDGE_VENDOR_AMD && + !pcipriv->amd_l1_patch) + b_support_backdoor = _FALSE;*/ + + pwrpriv->b_support_backdoor = b_support_backdoor; + } + break; + + case 2: // Set by Chipset. + // ASPM value set by chipset. + if (pcipriv->pcibridge_vendor == PCI_BRIDGE_VENDOR_INTEL) { + u8 b_support_aspm = _TRUE; + pwrpriv->b_support_aspm = b_support_aspm; + } + break; + + default: + // Do nothing. Set when finding the chipset. + break; + } +} + +static void rtw_pci_initialize_adapter_common(_adapter *padapter) +{ + struct pwrctrl_priv *pwrpriv = &padapter->pwrctrlpriv; + + rtw_pci_update_default_setting(padapter); + + if (pwrpriv->reg_rfps_level & RT_RF_PS_LEVEL_ALWAYS_ASPM) { + // Always enable ASPM & Clock Req. + rtw_pci_enable_aspm(padapter); + RT_SET_PS_LEVEL(pwrpriv, RT_RF_PS_LEVEL_ALWAYS_ASPM); + } + +} + +#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0)) || (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,18)) +#define rtw_pci_interrupt(x,y,z) rtw_pci_interrupt(x,y) +#endif + +static irqreturn_t rtw_pci_interrupt(int irq, void *priv, struct pt_regs *regs) +{ + struct dvobj_priv *dvobj = (struct dvobj_priv *)priv; + _adapter *adapter = dvobj->if1; + + if (dvobj->irq_enabled == 0) { + return IRQ_HANDLED; + } + + if(rtw_hal_interrupt_handler(adapter) == _FAIL) + return IRQ_HANDLED; + //return IRQ_NONE; + + return IRQ_HANDLED; +} + +#ifdef RTK_DMP_PLATFORM +#define pci_iounmap(x,y) iounmap(y) +#endif + +int pci_alloc_irq(struct dvobj_priv *dvobj) +{ + int err; + struct pci_dev *pdev = dvobj->ppcidev; + +#if defined(IRQF_SHARED) + err = request_irq(pdev->irq, &rtw_pci_interrupt, IRQF_SHARED, DRV_NAME, dvobj); +#else + err = request_irq(pdev->irq, &rtw_pci_interrupt, SA_SHIRQ, DRV_NAME, dvobj); +#endif + if (err) { + DBG_871X("Error allocating IRQ %d",pdev->irq); + } else { + dvobj->irq_alloc = 1; + DBG_871X("Request_irq OK, IRQ %d\n",pdev->irq); + } + + return err?_FAIL:_SUCCESS; +} + +static struct dvobj_priv *pci_dvobj_init(struct pci_dev *pdev) +{ + int err; + u32 status = _FAIL; + struct dvobj_priv *dvobj = NULL; + struct pci_priv *pcipriv = NULL; + struct pci_dev *bridge_pdev = pdev->bus->self; + unsigned long pmem_start, pmem_len, pmem_flags; + u8 tmp; + +_func_enter_; + + if ((dvobj = devobj_init()) == NULL) { + goto exit; + } + dvobj->ppcidev = pdev; + pcipriv = &(dvobj->pcipriv); + pci_set_drvdata(pdev, dvobj); + + if ( (err = pci_enable_device(pdev)) != 0) { + DBG_871X(KERN_ERR "%s : Cannot enable new PCI device\n", pci_name(pdev)); + goto free_dvobj; + } + +#ifdef CONFIG_64BIT_DMA + if (!pci_set_dma_mask(pdev, DMA_BIT_MASK(64))) { + DBG_871X("RTL819xCE: Using 64bit DMA\n"); + if ((err = pci_set_consistent_dma_mask(pdev, DMA_BIT_MASK(64))) != 0) { + DBG_871X(KERN_ERR "Unable to obtain 64bit DMA for consistent allocations\n"); + goto disable_picdev; + } + dvobj->bdma64 = _TRUE; + } else +#endif + { + if (!pci_set_dma_mask(pdev, DMA_BIT_MASK(32))) { + if ((err = pci_set_consistent_dma_mask(pdev, DMA_BIT_MASK(32))) != 0) { + DBG_871X(KERN_ERR "Unable to obtain 32bit DMA for consistent allocations\n"); + goto disable_picdev; + } + } + } + + pci_set_master(pdev); + + if ((err = pci_request_regions(pdev, DRV_NAME)) != 0) { + DBG_871X(KERN_ERR "Can't obtain PCI resources\n"); + goto disable_picdev; + } + //MEM map + pmem_start = pci_resource_start(pdev, 2); + pmem_len = pci_resource_len(pdev, 2); + pmem_flags = pci_resource_flags(pdev, 2); + +#ifdef RTK_DMP_PLATFORM + dvobj->pci_mem_start = (unsigned long)ioremap_nocache(pmem_start, pmem_len); +#else + dvobj->pci_mem_start = (unsigned long)pci_iomap(pdev, 2, pmem_len); /* shared mem start */ +#endif + if (dvobj->pci_mem_start == 0) { + DBG_871X(KERN_ERR "Can't map PCI mem\n"); + goto release_regions; + } + + DBG_871X("Memory mapped space start: 0x%08lx len:%08lx flags:%08lx, after map:0x%08lx\n", + pmem_start, pmem_len, pmem_flags, dvobj->pci_mem_start); + + // Disable Clk Request */ + pci_write_config_byte(pdev, 0x81, 0); + // leave D3 mode */ + pci_write_config_byte(pdev, 0x44, 0); + pci_write_config_byte(pdev, 0x04, 0x06); + pci_write_config_byte(pdev, 0x04, 0x07); + + +#if 1 + /*find bus info*/ + pcipriv->busnumber = pdev->bus->number; + pcipriv->devnumber = PCI_SLOT(pdev->devfn); + pcipriv->funcnumber = PCI_FUNC(pdev->devfn); + + /*find bridge info*/ + pcipriv->pcibridge_vendor = PCI_BRIDGE_VENDOR_UNKNOWN; + if(bridge_pdev){ + pcipriv->pcibridge_vendorid = bridge_pdev->vendor; + for (tmp = 0; tmp < PCI_BRIDGE_VENDOR_MAX; tmp++) { + if (bridge_pdev->vendor == pcibridge_vendors[tmp]) { + pcipriv->pcibridge_vendor = tmp; + DBG_871X("Pci Bridge Vendor is found index: %d, %x\n", tmp, pcibridge_vendors[tmp]); + break; + } + } + } + + //if (pcipriv->pcibridge_vendor != PCI_BRIDGE_VENDOR_UNKNOWN) { + if(bridge_pdev){ + pcipriv->pcibridge_busnum = bridge_pdev->bus->number; + pcipriv->pcibridge_devnum = PCI_SLOT(bridge_pdev->devfn); + pcipriv->pcibridge_funcnum = PCI_FUNC(bridge_pdev->devfn); + +#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,34)) + pcipriv->pcibridge_pciehdr_offset = pci_find_capability(bridge_pdev, PCI_CAP_ID_EXP); +#else + pcipriv->pcibridge_pciehdr_offset = bridge_pdev->pcie_cap; +#endif + + rtw_pci_get_linkcontrol_field(dvobj); + + if (pcipriv->pcibridge_vendor == PCI_BRIDGE_VENDOR_AMD) { + pcipriv->amd_l1_patch = rtw_pci_get_amd_l1_patch(dvobj); + } + } +#else + // + // Find bridge related info. + // + rtw_get_pci_bus_info(padapter, + pdev->vendor, + pdev->device, + (u8) pdvobjpriv->irqline, + 0x02, 0x80, U1DONTCARE, + &pcipriv->busnumber, + &pcipriv->devnumber, + &pcipriv->funcnumber); + + rtw_find_bridge_info(padapter); + + if (pcipriv->pcibridge_vendor != PCI_BRIDGE_VENDOR_UNKNOWN) { + rtw_get_link_control_field(padapter, + pcipriv->pcibridge_busnum, + pcipriv->pcibridge_devnum, + pcipriv->pcibridge_funcnum); + + if (pcipriv->pcibridge_vendor == PCI_BRIDGE_VENDOR_AMD) { + pcipriv->amd_l1_patch = + rtw_get_amd_l1_patch(padapter, + pcipriv->pcibridge_busnum, + pcipriv->pcibridge_devnum, + pcipriv->pcibridge_funcnum); + } + } +#endif + + // + // Allow the hardware to look at PCI config information. + // + rtw_pci_parse_configuration(dvobj); + + DBG_871X("pcidev busnumber:devnumber:funcnumber:" + "vendor:link_ctl %d:%d:%d:%x:%x\n", + pcipriv->busnumber, + pcipriv->devnumber, + pcipriv->funcnumber, + pdev->vendor, + pcipriv->linkctrl_reg); + + DBG_871X("pci_bridge busnumber:devnumber:funcnumber:vendor:" + "pcie_cap:link_ctl_reg: %d:%d:%d:%x:%x:%x:%x\n", + pcipriv->pcibridge_busnum, + pcipriv->pcibridge_devnum, + pcipriv->pcibridge_funcnum, + pcibridge_vendors[pcipriv->pcibridge_vendor], + pcipriv->pcibridge_pciehdr_offset, + pcipriv->pcibridge_linkctrlreg, + pcipriv->amd_l1_patch); + + status = _SUCCESS; + +iounmap: + if (status != _SUCCESS && dvobj->pci_mem_start != 0) { + pci_iounmap(pdev, (void *)dvobj->pci_mem_start); + dvobj->pci_mem_start = 0; + } +release_regions: + if (status != _SUCCESS) + pci_release_regions(pdev); +disable_picdev: + if (status != _SUCCESS) + pci_disable_device(pdev); +free_dvobj: + if (status != _SUCCESS && dvobj) { + pci_set_drvdata(pdev, NULL); + devobj_deinit(dvobj); + dvobj = NULL; + } +exit: +_func_exit_; + return dvobj; +} + +static void pci_dvobj_deinit(struct pci_dev *pdev) +{ + struct dvobj_priv *dvobj = pci_get_drvdata(pdev); +_func_enter_; + + pci_set_drvdata(pdev, NULL); + if (dvobj) { + if (dvobj->irq_alloc) { + free_irq(pdev->irq, dvobj); + dvobj->irq_alloc = 0; + } + + if (dvobj->pci_mem_start != 0) { + pci_iounmap(pdev, (void *)dvobj->pci_mem_start); + dvobj->pci_mem_start = 0; + } + + devobj_deinit(dvobj); + } + + pci_release_regions(pdev); + pci_disable_device(pdev); + +_func_exit_; +} + +static void decide_chip_type_by_pci_device_id(_adapter *padapter, struct pci_dev *pdev) +{ + u16 venderid, deviceid, irqline; + u8 revisionid; + struct dvobj_priv *pdvobjpriv = adapter_to_dvobj(padapter); + + + venderid = pdev->vendor; + deviceid = pdev->device; +#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,23)) + pci_read_config_byte(pdev, PCI_REVISION_ID, &revisionid); // PCI_REVISION_ID 0x08 +#else + revisionid = pdev->revision; +#endif + pci_read_config_word(pdev, PCI_INTERRUPT_LINE, &irqline); // PCI_INTERRUPT_LINE 0x3c + pdvobjpriv->irqline = irqline; + + + // + // Decide hardware type here. + // + if( deviceid == HAL_HW_PCI_8185_DEVICE_ID || + deviceid == HAL_HW_PCI_8188_DEVICE_ID || + deviceid == HAL_HW_PCI_8198_DEVICE_ID) + { + DBG_871X("Adapter (8185/8185B) is found- VendorID/DeviceID=%x/%x\n", venderid, deviceid); + padapter->HardwareType=HARDWARE_TYPE_RTL8185; + } + else if (deviceid == HAL_HW_PCI_8190_DEVICE_ID || + deviceid == HAL_HW_PCI_0045_DEVICE_ID || + deviceid == HAL_HW_PCI_0046_DEVICE_ID || + deviceid == HAL_HW_PCI_DLINK_DEVICE_ID) + { + DBG_871X("Adapter(8190 PCI) is found - vendorid/deviceid=%x/%x\n", venderid, deviceid); + padapter->HardwareType = HARDWARE_TYPE_RTL8190P; + } + else if (deviceid == HAL_HW_PCI_8192_DEVICE_ID || + deviceid == HAL_HW_PCI_0044_DEVICE_ID || + deviceid == HAL_HW_PCI_0047_DEVICE_ID || + deviceid == HAL_HW_PCI_8192SE_DEVICE_ID || + deviceid == HAL_HW_PCI_8174_DEVICE_ID || + deviceid == HAL_HW_PCI_8173_DEVICE_ID || + deviceid == HAL_HW_PCI_8172_DEVICE_ID || + deviceid == HAL_HW_PCI_8171_DEVICE_ID) + { + // 8192e and and 8192se may have the same device ID 8192. However, their Revision + // ID is different + // Added for 92DE. We deferentiate it from SVID,SDID. + if( pdev->subsystem_vendor == 0x10EC && pdev->subsystem_device == 0xE020){ + padapter->HardwareType = HARDWARE_TYPE_RTL8192DE; + DBG_871X("Adapter(8192DE) is found - VendorID/DeviceID/RID=%X/%X/%X\n", venderid, deviceid, revisionid); + }else{ + switch (revisionid) { + case HAL_HW_PCI_REVISION_ID_8192PCIE: + DBG_871X("Adapter(8192 PCI-E) is found - vendorid/deviceid=%x/%x\n", venderid, deviceid); + padapter->HardwareType = HARDWARE_TYPE_RTL8192E; + break; + case HAL_HW_PCI_REVISION_ID_8192SE: + DBG_871X("Adapter(8192SE) is found - vendorid/deviceid=%x/%x\n", venderid, deviceid); + padapter->HardwareType = HARDWARE_TYPE_RTL8192SE; + break; + default: + DBG_871X("Err: Unknown device - vendorid/deviceid=%x/%x\n", venderid, deviceid); + padapter->HardwareType = HARDWARE_TYPE_RTL8192SE; + break; + } + } + } + else if(deviceid==HAL_HW_PCI_8723E_DEVICE_ID ) + {//RTL8723E may have the same device ID with RTL8192CET + padapter->HardwareType = HARDWARE_TYPE_RTL8723AE; + DBG_871X("Adapter(8723 PCI-E) is found - VendorID/DeviceID=%x/%x\n", venderid, deviceid); + } + else if (deviceid == HAL_HW_PCI_8192CET_DEVICE_ID || + deviceid == HAL_HW_PCI_8192CE_DEVICE_ID || + deviceid == HAL_HW_PCI_8191CE_DEVICE_ID || + deviceid == HAL_HW_PCI_8188CE_DEVICE_ID) + { + DBG_871X("Adapter(8192C PCI-E) is found - vendorid/deviceid=%x/%x\n", venderid, deviceid); + padapter->HardwareType = HARDWARE_TYPE_RTL8192CE; + } + else if (deviceid == HAL_HW_PCI_8192DE_DEVICE_ID || + deviceid == HAL_HW_PCI_002B_DEVICE_ID ){ + padapter->HardwareType = HARDWARE_TYPE_RTL8192DE; + DBG_871X("Adapter(8192DE) is found - VendorID/DeviceID/RID=%X/%X/%X\n", venderid, deviceid, revisionid); + } + else + { + DBG_871X("Err: Unknown device - vendorid/deviceid=%x/%x\n", venderid, deviceid); + //padapter->HardwareType = HAL_DEFAULT_HARDWARE_TYPE; + } + + + padapter->chip_type = NULL_CHIP_TYPE; + + //TODO: +#ifdef CONFIG_RTL8192C + padapter->chip_type = RTL8188C_8192C; + padapter->HardwareType = HARDWARE_TYPE_RTL8192CE; +#endif +#ifdef CONFIG_RTL8192D + pdvobjpriv->InterfaceNumber = revisionid; + + padapter->chip_type = RTL8192D; + padapter->HardwareType = HARDWARE_TYPE_RTL8192DE; +#endif + +} + +static void pci_intf_start(_adapter *padapter) +{ + + RT_TRACE(_module_hci_intfs_c_,_drv_err_,("+pci_intf_start\n")); + DBG_871X("+pci_intf_start\n"); + +#ifdef CONFIG_PCILED_BLINK + rtw_led_control(padapter, LED_CTL_NO_LINK); +#endif + //Enable hw interrupt + rtw_hal_enable_interrupt(padapter); + + RT_TRACE(_module_hci_intfs_c_,_drv_err_,("-pci_intf_start\n")); + DBG_871X("-pci_intf_start\n"); +} + +static void pci_intf_stop(_adapter *padapter) +{ + + RT_TRACE(_module_hci_intfs_c_,_drv_err_,("+pci_intf_stop\n")); + + //Disable hw interrupt + if(padapter->bSurpriseRemoved == _FALSE) + { + //device still exists, so driver can do i/o operation + rtw_hal_disable_interrupt(padapter); + tasklet_disable(&(padapter->recvpriv.recv_tasklet)); + tasklet_disable(&(padapter->recvpriv.irq_prepare_beacon_tasklet)); + tasklet_disable(&(padapter->xmitpriv.xmit_tasklet)); + +#ifdef CONFIG_CONCURRENT_MODE + /* This function only be called at driver removing. disable buddy_adapter too + don't disable interrupt of buddy_adapter because it is same as primary. + */ + if (padapter->pbuddy_adapter){ + tasklet_disable(&(padapter->pbuddy_adapter->recvpriv.recv_tasklet)); + tasklet_disable(&(padapter->pbuddy_adapter->recvpriv.irq_prepare_beacon_tasklet)); + tasklet_disable(&(padapter->pbuddy_adapter->xmitpriv.xmit_tasklet)); + } +#endif + RT_TRACE(_module_hci_intfs_c_,_drv_err_,("pci_intf_stop: SurpriseRemoved==_FALSE\n")); + } + else + { + // Clear irq_enabled to prevent handle interrupt function. + adapter_to_dvobj(padapter)->irq_enabled = 0; + } + + RT_TRACE(_module_hci_intfs_c_,_drv_err_,("-pci_intf_stop\n")); + +} + + +static void rtw_dev_unload(_adapter *padapter) +{ + struct net_device *pnetdev= (struct net_device*)padapter->pnetdev; + + RT_TRACE(_module_hci_intfs_c_,_drv_err_,("+rtw_dev_unload\n")); + + if(padapter->bup == _TRUE) + { + DBG_871X("+rtw_dev_unload\n"); + + padapter->bDriverStopped = _TRUE; + #ifdef CONFIG_XMIT_ACK + if (padapter->xmitpriv.ack_tx) + rtw_ack_tx_done(&padapter->xmitpriv, RTW_SCTX_DONE_DRV_STOP); + #endif + + //s3. + if(padapter->intf_stop) + { + padapter->intf_stop(padapter); + } + + //s4. + rtw_stop_drv_threads(padapter); + + + //s5. + if(padapter->bSurpriseRemoved == _FALSE) + { + DBG_871X("r871x_dev_unload()->rtl871x_hal_deinit()\n"); + rtw_hal_deinit(padapter); + + padapter->bSurpriseRemoved = _TRUE; + } + + padapter->bup = _FALSE; + + } + else + { + RT_TRACE(_module_hci_intfs_c_,_drv_err_,("r871x_dev_unload():padapter->bup == _FALSE\n" )); + } + + DBG_871X("-rtw_dev_unload\n"); + + RT_TRACE(_module_hci_intfs_c_,_drv_err_,("-rtw_dev_unload\n")); + +} + +static void disable_ht_for_spec_devid(const struct pci_device_id *pdid) +{ +#ifdef CONFIG_80211N_HT + u16 vid, pid; + u32 flags; + int i; + int num = sizeof(specific_device_id_tbl)/sizeof(struct specific_device_id); + + for(i=0; ivendor==vid) && (pdid->device==pid) && (flags&SPEC_DEV_ID_DISABLE_HT)) + { + rtw_ht_enable = 0; + rtw_cbw40_enable = 0; + rtw_ampdu_enable = 0; + } + + } +#endif +} + +#ifdef CONFIG_PM +static int rtw_suspend(struct pci_dev *pdev, pm_message_t state) +{ + _func_enter_; + + + _func_exit_; + return 0; +} + +static int rtw_resume(struct pci_dev *pdev) +{ + _func_enter_; + + + _func_exit_; + + return 0; +} +#endif + +_adapter *rtw_pci_if1_init(struct dvobj_priv * dvobj, struct pci_dev *pdev, + const struct pci_device_id *pdid) +{ + _adapter *padapter = NULL; + struct net_device *pnetdev = NULL; + int status = _FAIL; + + if ((padapter = (_adapter *)rtw_zvmalloc(sizeof(*padapter))) == NULL) { + goto exit; + } + padapter->dvobj = dvobj; + dvobj->if1 = padapter; + + padapter->bDriverStopped=_TRUE; + + dvobj->padapters[dvobj->iface_nums++] = padapter; + padapter->iface_id = IFACE_ID0; + +#if defined(CONFIG_CONCURRENT_MODE) || defined(CONFIG_DUALMAC_CONCURRENT) + //set adapter_type/iface type for primary padapter + padapter->isprimary = _TRUE; + padapter->adapter_type = PRIMARY_ADAPTER; + #ifndef CONFIG_HWPORT_SWAP + padapter->iface_type = IFACE_PORT0; + #else + padapter->iface_type = IFACE_PORT1; + #endif +#endif + + //step 1-1., decide the chip_type via vid/pid + padapter->interface_type = RTW_PCIE; + decide_chip_type_by_pci_device_id(padapter, pdev); + + if((pnetdev = rtw_init_netdev(padapter)) == NULL) { + goto free_adapter; + } + if (dvobj->bdma64) + pnetdev->features |= NETIF_F_HIGHDMA; + pnetdev->irq = pdev->irq; + SET_NETDEV_DEV(pnetdev, dvobj_to_dev(dvobj)); + padapter = rtw_netdev_priv(pnetdev); + + //step 2. hook HalFunc, allocate HalData + if (padapter->chip_type == RTL8188C_8192C) { + #ifdef CONFIG_RTL8192C + rtl8192ce_set_hal_ops(padapter); + #endif + } else if (padapter->chip_type == RTL8192D) { + #ifdef CONFIG_RTL8192D + rtl8192de_set_hal_ops(padapter); + #endif + } else { + DBG_871X("Detect NULL_CHIP_TYPE\n"); + goto free_hal_data; + } + + //step 3. initialize the dvobj_priv + padapter->intf_start=&pci_intf_start; + padapter->intf_stop=&pci_intf_stop; + + + //.2 + if ((rtw_init_io_priv(padapter, pci_set_intf_ops)) == _FAIL) { + RT_TRACE(_module_hci_intfs_c_,_drv_err_,(" \n Can't init io_reqs\n")); + goto free_hal_data; + } + + //.3 + rtw_hal_read_chip_version(padapter); + + //.4 + rtw_hal_chip_configure(padapter); + + //step 4. read efuse/eeprom data and get mac_addr + rtw_hal_read_chip_info(padapter); + + if (rtw_handle_dualmac(padapter, 1) != _SUCCESS) + goto free_hal_data; + +#ifdef CONFIG_IOCTL_CFG80211 + if(rtw_wdev_alloc(padapter, dvobj_to_dev(dvobj)) != 0) { + goto handle_dualmac; + } +#endif + + //step 5. + if (rtw_init_drv_sw(padapter) == _FAIL) { + RT_TRACE(_module_hci_intfs_c_,_drv_err_,("Initialize driver software resource Failed!\n")); + goto free_wdev; + } + + status = rtw_hal_inirp_init(padapter); + if(status ==_FAIL){ + RT_TRACE(_module_hci_intfs_c_,_drv_err_,("Initialize PCI desc ring Failed!\n")); + goto free_drv_sw; + } + + rtw_macaddr_cfg(padapter->eeprompriv.mac_addr); + rtw_init_wifidirect_addrs(padapter, padapter->eeprompriv.mac_addr, padapter->eeprompriv.mac_addr); + + + rtw_hal_disable_interrupt(padapter); + + //step 6. Init pci related configuration + rtw_pci_initialize_adapter_common(padapter); + + DBG_871X("bDriverStopped:%d, bSurpriseRemoved:%d, bup:%d, hw_init_completed:%d\n" + ,padapter->bDriverStopped + ,padapter->bSurpriseRemoved + ,padapter->bup + ,padapter->hw_init_completed + ); + + status = _SUCCESS; + +inirp_deinit: + if (status != _SUCCESS) + rtw_hal_inirp_deinit(padapter); +free_drv_sw: + if (status != _SUCCESS) + rtw_free_drv_sw(padapter); +free_wdev: + if (status != _SUCCESS) { + #ifdef CONFIG_IOCTL_CFG80211 + rtw_wdev_unregister(padapter->rtw_wdev); + rtw_wdev_free(padapter->rtw_wdev); + #endif + } +handle_dualmac: + if (status != _SUCCESS) + rtw_handle_dualmac(padapter, 0); +free_hal_data: + if (status != _SUCCESS && padapter->HalData) + rtw_mfree(padapter->HalData, sizeof(*(padapter->HalData))); +free_adapter: + if (status != _SUCCESS) { + if (pnetdev) + rtw_free_netdev(pnetdev); + else if (padapter) + rtw_vmfree((u8*)padapter, sizeof(*padapter)); + padapter = NULL; + } +exit: + return padapter; +} + +static void rtw_pci_if1_deinit(_adapter *if1) +{ + struct net_device *pnetdev = if1->pnetdev; + struct mlme_priv *pmlmepriv= &if1->mlmepriv; + + // padapter->intf_stop(padapter); + + if(check_fwstate(pmlmepriv, _FW_LINKED)) + rtw_disassoc_cmd(if1, 0, _FALSE); + +#ifdef CONFIG_AP_MODE + free_mlme_ap_info(if1); + #ifdef CONFIG_HOSTAPD_MLME + hostapd_mode_unload(if1); + #endif +#endif + + rtw_cancel_all_timer(if1); +#ifdef CONFIG_WOWLAN + if1->pwrctrlpriv.wowlan_mode=_FALSE; +#endif //CONFIG_WOWLAN + rtw_dev_unload(if1); + + DBG_871X("%s, hw_init_completed=%d\n", __func__, if1->hw_init_completed); + + //s6. + rtw_handle_dualmac(if1, 0); + +#ifdef CONFIG_IOCTL_CFG80211 + if (if1->rtw_wdev) + rtw_wdev_free(if1->rtw_wdev); +#endif //CONFIG_IOCTL_CFG80211 + + rtw_hal_inirp_deinit(if1); + rtw_free_drv_sw(if1); + + if(pnetdev) + rtw_free_netdev(pnetdev); + +#ifdef CONFIG_PLATFORM_RTD2880B + DBG_871X("wlan link down\n"); + rtd2885_wlan_netlink_sendMsg("linkdown", "8712"); +#endif +} + +/* + * drv_init() - a device potentially for us + * + * notes: drv_init() is called when the bus driver has located a card for us to support. + * We accept the new device by returning 0. +*/ +static int rtw_drv_init(struct pci_dev *pdev, const struct pci_device_id *did) +{ + int i, err = -ENODEV; + + int status; + _adapter *if1 = NULL, *if2 = NULL; + struct dvobj_priv *dvobj; + + RT_TRACE(_module_hci_intfs_c_, _drv_err_, ("+rtw_drv_init\n")); + + //step 0. + disable_ht_for_spec_devid(did); + + /* Initialize dvobj_priv */ + if ((dvobj = pci_dvobj_init(pdev)) == NULL) { + RT_TRACE(_module_hci_intfs_c_, _drv_err_, ("initialize device object priv Failed!\n")); + goto exit; + } + + /* Initialize if1 */ + if ((if1 = rtw_pci_if1_init(dvobj, pdev, did)) == NULL) { + DBG_871X("rtw_pci_if1_init Failed!\n"); + goto free_dvobj; + } + + /* Initialize if2 */ +#ifdef CONFIG_CONCURRENT_MODE + if((if2 = rtw_drv_if2_init(if1, pci_set_intf_ops)) == NULL) { + goto free_if1; + } +#endif + +#ifdef CONFIG_GLOBAL_UI_PID + if (ui_pid[1]!=0) { + DBG_871X("ui_pid[1]:%d\n",ui_pid[1]); + rtw_signal_process(ui_pid[1], SIGUSR2); + } +#endif + + //dev_alloc_name && register_netdev + if((status = rtw_drv_register_netdev(if1)) != _SUCCESS) { + goto free_if1; + } + +#ifdef CONFIG_HOSTAPD_MLME + hostapd_mode_init(if1); +#endif + +#ifdef CONFIG_PLATFORM_RTD2880B + DBG_871X("wlan link up\n"); + rtd2885_wlan_netlink_sendMsg("linkup", "8712"); +#endif + +#ifdef RTK_DMP_PLATFORM + rtw_proc_init_one(if1->pnetdev); +#endif + + + /* alloc irq */ + if (pci_alloc_irq(dvobj) != _SUCCESS) + goto free_if2; + + RT_TRACE(_module_hci_intfs_c_,_drv_err_,("-871x_drv - drv_init, success!\n")); + //DBG_871X("-871x_drv - drv_init, success!\n"); + + status = _SUCCESS; + +free_if2: + if(status != _SUCCESS && if2) { + #ifdef CONFIG_CONCURRENT_MODE + rtw_drv_if2_stop(if2); + rtw_drv_if2_free(if2); + #endif + } +free_if1: + if (status != _SUCCESS && if1) { + rtw_pci_if1_deinit(if1); + } +free_dvobj: + if (status != _SUCCESS) + pci_dvobj_deinit(pdev); +exit: + return status == _SUCCESS?0:-ENODEV; +} + +/* + * dev_remove() - our device is being removed +*/ +//rmmod module & unplug(SurpriseRemoved) will call r871xu_dev_remove() => how to recognize both +static void rtw_dev_remove(struct pci_dev *pdev) +{ + struct dvobj_priv *pdvobjpriv = pci_get_drvdata(pdev); + _adapter *padapter = pdvobjpriv->if1; + struct net_device *pnetdev = padapter->pnetdev; + +_func_exit_; + + DBG_871X("+rtw_dev_remove\n"); + + pdvobjpriv->processing_dev_remove = _TRUE; + + if (unlikely(!padapter)) { + return; + } + + rtw_unregister_netdevs(pdvobjpriv); + + #if 0 +#ifdef RTK_DMP_PLATFORM + padapter->bSurpriseRemoved = _FALSE; // always trate as device exists + // this will let the driver to disable it's interrupt +#else + if(pci_drvpriv.drv_registered == _TRUE) + { + //DBG_871X("r871xu_dev_remove():padapter->bSurpriseRemoved == _TRUE\n"); + padapter->bSurpriseRemoved = _TRUE; + } + /*else + { + //DBG_871X("r871xu_dev_remove():module removed\n"); + padapter->hw_init_completed = _FALSE; + }*/ +#endif + #endif + +#if defined(CONFIG_HAS_EARLYSUSPEND) || defined(CONFIG_ANDROID_POWER) + rtw_unregister_early_suspend(&padapter->pwrctrlpriv); +#endif + + rtw_pm_set_ips(padapter, IPS_NONE); + rtw_pm_set_lps(padapter, PS_MODE_ACTIVE); + + LeaveAllPowerSaveMode(padapter); + + rtw_hal_disable_interrupt(padapter); + +#ifdef CONFIG_CONCURRENT_MODE + rtw_drv_if2_stop(pdvobjpriv->if2); +#endif //CONFIG_CONCURRENT_MODE + + rtw_pci_if1_deinit(padapter); + +#ifdef CONFIG_CONCURRENT_MODE + rtw_drv_if2_free(pdvobjpriv->if2); +#endif + + pci_dvobj_deinit(pdev); + + DBG_871X("-r871xu_dev_remove, done\n"); + +_func_exit_; + return; +} + + +static int __init rtw_drv_entry(void) +{ + int ret = 0; + + RT_TRACE(_module_hci_intfs_c_,_drv_err_,("+rtw_drv_entry\n")); + DBG_871X("rtw driver version=%s\n", DRIVERVERSION); + DBG_871X("Build at: %s %s\n", __DATE__, __TIME__); + pci_drvpriv.drv_registered = _TRUE; + + rtw_suspend_lock_init(); + + ret = pci_register_driver(&pci_drvpriv.rtw_pci_drv); + if (ret) { + RT_TRACE(_module_hci_intfs_c_, _drv_err_, (": No device found\n")); + } + + return ret; +} + +static void __exit rtw_drv_halt(void) +{ + RT_TRACE(_module_hci_intfs_c_,_drv_err_,("+rtw_drv_halt\n")); + DBG_871X("+rtw_drv_halt\n"); + + pci_drvpriv.drv_registered = _FALSE; + + pci_unregister_driver(&pci_drvpriv.rtw_pci_drv); + + rtw_suspend_lock_uninit(); + DBG_871X("-rtw_drv_halt\n"); + + rtw_mstat_dump(); +} + + +module_init(rtw_drv_entry); +module_exit(rtw_drv_halt); --- linux-raspi2-4.2.0.orig/drivers/net/wireless/rtl8192cu/os_dep/linux/pci_ops_linux.c +++ linux-raspi2-4.2.0/drivers/net/wireless/rtl8192cu/os_dep/linux/pci_ops_linux.c @@ -0,0 +1,21 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2012 Realtek Corporation. All rights reserved. + * + * 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 + * published by the Free Software Foundation. + * + * 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 Street, Fifth Floor, Boston, MA 02110, USA + * + *******************************************************************************/ +#define _PCI_OPS_LINUX_C_ + +#include --- linux-raspi2-4.2.0.orig/drivers/net/wireless/rtl8192cu/os_dep/linux/recv_linux.c +++ linux-raspi2-4.2.0/drivers/net/wireless/rtl8192cu/os_dep/linux/recv_linux.c @@ -0,0 +1,447 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved. + * + * 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 + * published by the Free Software Foundation. + * + * 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 Street, Fifth Floor, Boston, MA 02110, USA + * + * + ******************************************************************************/ +#define _RECV_OSDEP_C_ + +#include +#include +#include + +#include +#include + +#include +#include + +#ifdef CONFIG_USB_HCI +#include +#endif + +//init os related resource in struct recv_priv +int rtw_os_recv_resource_init(struct recv_priv *precvpriv, _adapter *padapter) +{ + int res=_SUCCESS; + + return res; +} + +//alloc os related resource in union recv_frame +int rtw_os_recv_resource_alloc(_adapter *padapter, union recv_frame *precvframe) +{ + int res=_SUCCESS; + + precvframe->u.hdr.pkt_newalloc = precvframe->u.hdr.pkt = NULL; + + return res; + +} + +//free os related resource in union recv_frame +void rtw_os_recv_resource_free(struct recv_priv *precvpriv) +{ + +} + + +//alloc os related resource in struct recv_buf +int rtw_os_recvbuf_resource_alloc(_adapter *padapter, struct recv_buf *precvbuf) +{ + int res=_SUCCESS; + +#ifdef CONFIG_USB_HCI + struct dvobj_priv *pdvobjpriv = adapter_to_dvobj(padapter); + struct usb_device *pusbd = pdvobjpriv->pusbdev; + + precvbuf->irp_pending = _FALSE; + precvbuf->purb = usb_alloc_urb(0, GFP_KERNEL); + if(precvbuf->purb == NULL){ + res = _FAIL; + } + + precvbuf->pskb = NULL; + + precvbuf->reuse = _FALSE; + + precvbuf->pallocated_buf = precvbuf->pbuf = NULL; + + precvbuf->pdata = precvbuf->phead = precvbuf->ptail = precvbuf->pend = NULL; + + precvbuf->transfer_len = 0; + + precvbuf->len = 0; + + #ifdef CONFIG_USE_USB_BUFFER_ALLOC_RX + precvbuf->pallocated_buf = rtw_usb_buffer_alloc(pusbd, (size_t)precvbuf->alloc_sz, &precvbuf->dma_transfer_addr); + precvbuf->pbuf = precvbuf->pallocated_buf; + if(precvbuf->pallocated_buf == NULL) + return _FAIL; + #endif //CONFIG_USE_USB_BUFFER_ALLOC_RX + +#endif //CONFIG_USB_HCI + + return res; +} + +//free os related resource in struct recv_buf +int rtw_os_recvbuf_resource_free(_adapter *padapter, struct recv_buf *precvbuf) +{ + int ret = _SUCCESS; + +#ifdef CONFIG_USB_HCI + +#ifdef CONFIG_USE_USB_BUFFER_ALLOC_RX + + struct dvobj_priv *pdvobjpriv = adapter_to_dvobj(padapter); + struct usb_device *pusbd = pdvobjpriv->pusbdev; + + rtw_usb_buffer_free(pusbd, (size_t)precvbuf->alloc_sz, precvbuf->pallocated_buf, precvbuf->dma_transfer_addr); + precvbuf->pallocated_buf = NULL; + precvbuf->dma_transfer_addr = 0; + +#endif //CONFIG_USE_USB_BUFFER_ALLOC_RX + + if(precvbuf->purb) + { + //usb_kill_urb(precvbuf->purb); + usb_free_urb(precvbuf->purb); + } + +#endif //CONFIG_USB_HCI + + + if(precvbuf->pskb) + rtw_skb_free(precvbuf->pskb); + + + return ret; + +} + +void rtw_handle_tkip_mic_err(_adapter *padapter,u8 bgroup) +{ +#ifdef CONFIG_IOCTL_CFG80211 + enum nl80211_key_type key_type; +#endif + union iwreq_data wrqu; + struct iw_michaelmicfailure ev; + struct mlme_priv* pmlmepriv = &padapter->mlmepriv; + struct security_priv *psecuritypriv = &padapter->securitypriv; + u32 cur_time = 0; + + if( psecuritypriv->last_mic_err_time == 0 ) + { + psecuritypriv->last_mic_err_time = rtw_get_current_time(); + } + else + { + cur_time = rtw_get_current_time(); + + if( cur_time - psecuritypriv->last_mic_err_time < 60*HZ ) + { + psecuritypriv->btkip_countermeasure = _TRUE; + psecuritypriv->last_mic_err_time = 0; + psecuritypriv->btkip_countermeasure_time = cur_time; + } + else + { + psecuritypriv->last_mic_err_time = rtw_get_current_time(); + } + } + +#ifdef CONFIG_IOCTL_CFG80211 + if ( bgroup ) + { + key_type |= NL80211_KEYTYPE_GROUP; + } + else + { + key_type |= NL80211_KEYTYPE_PAIRWISE; + } + + cfg80211_michael_mic_failure(padapter->pnetdev, (u8 *)&pmlmepriv->assoc_bssid[ 0 ], key_type, -1, + NULL, GFP_ATOMIC); +#endif + + _rtw_memset( &ev, 0x00, sizeof( ev ) ); + if ( bgroup ) + { + ev.flags |= IW_MICFAILURE_GROUP; + } + else + { + ev.flags |= IW_MICFAILURE_PAIRWISE; + } + + ev.src_addr.sa_family = ARPHRD_ETHER; + _rtw_memcpy( ev.src_addr.sa_data, &pmlmepriv->assoc_bssid[ 0 ], ETH_ALEN ); + + _rtw_memset( &wrqu, 0x00, sizeof( wrqu ) ); + wrqu.data.length = sizeof( ev ); + + wireless_send_event( padapter->pnetdev, IWEVMICHAELMICFAILURE, &wrqu, (char*) &ev ); +} + +void rtw_hostapd_mlme_rx(_adapter *padapter, union recv_frame *precv_frame) +{ +#ifdef CONFIG_HOSTAPD_MLME + _pkt *skb; + struct hostapd_priv *phostapdpriv = padapter->phostapdpriv; + struct net_device *pmgnt_netdev = phostapdpriv->pmgnt_netdev; + + RT_TRACE(_module_recv_osdep_c_, _drv_info_, ("+rtw_hostapd_mlme_rx\n")); + + skb = precv_frame->u.hdr.pkt; + + if (skb == NULL) + return; + + skb->data = precv_frame->u.hdr.rx_data; + skb->tail = precv_frame->u.hdr.rx_tail; + skb->len = precv_frame->u.hdr.len; + + //pskb_copy = rtw_skb_copy(skb); +// if(skb == NULL) goto _exit; + + skb->dev = pmgnt_netdev; + skb->ip_summed = CHECKSUM_NONE; + skb->pkt_type = PACKET_OTHERHOST; + //skb->protocol = __constant_htons(0x0019); /*ETH_P_80211_RAW*/ + skb->protocol = __constant_htons(0x0003); /*ETH_P_80211_RAW*/ + + //DBG_871X("(1)data=0x%x, head=0x%x, tail=0x%x, mac_header=0x%x, len=%d\n", skb->data, skb->head, skb->tail, skb->mac_header, skb->len); + + //skb->mac.raw = skb->data; + skb_reset_mac_header(skb); + + //skb_pull(skb, 24); + _rtw_memset(skb->cb, 0, sizeof(skb->cb)); + + rtw_netif_rx(pmgnt_netdev, skb); + + precv_frame->u.hdr.pkt = NULL; // set pointer to NULL before rtw_free_recvframe() if call rtw_netif_rx() +#endif +} + +int rtw_recv_indicatepkt(_adapter *padapter, union recv_frame *precv_frame) +{ + struct recv_priv *precvpriv; + _queue *pfree_recv_queue; + _pkt *skb; + struct mlme_priv*pmlmepriv = &padapter->mlmepriv; +#ifdef CONFIG_TCP_CSUM_OFFLOAD_RX + struct rx_pkt_attrib *pattrib = &precv_frame->u.hdr.attrib; +#endif + +#ifdef CONFIG_BR_EXT + void *br_port = NULL; +#endif + +_func_enter_; + + precvpriv = &(padapter->recvpriv); + pfree_recv_queue = &(precvpriv->free_recv_queue); + +#ifdef CONFIG_DRVEXT_MODULE + if (drvext_rx_handler(padapter, precv_frame->u.hdr.rx_data, precv_frame->u.hdr.len) == _SUCCESS) + { + goto _recv_indicatepkt_drop; + } +#endif + + skb = precv_frame->u.hdr.pkt; + if(skb == NULL) + { + RT_TRACE(_module_recv_osdep_c_,_drv_err_,("rtw_recv_indicatepkt():skb==NULL something wrong!!!!\n")); + goto _recv_indicatepkt_drop; + } + + RT_TRACE(_module_recv_osdep_c_,_drv_info_,("rtw_recv_indicatepkt():skb != NULL !!!\n")); + RT_TRACE(_module_recv_osdep_c_,_drv_info_,("rtw_recv_indicatepkt():precv_frame->u.hdr.rx_head=%p precv_frame->hdr.rx_data=%p\n", precv_frame->u.hdr.rx_head, precv_frame->u.hdr.rx_data)); + RT_TRACE(_module_recv_osdep_c_,_drv_info_,("precv_frame->hdr.rx_tail=%p precv_frame->u.hdr.rx_end=%p precv_frame->hdr.len=%d \n", precv_frame->u.hdr.rx_tail, precv_frame->u.hdr.rx_end, precv_frame->u.hdr.len)); + + skb->data = precv_frame->u.hdr.rx_data; + + skb_set_tail_pointer(skb, precv_frame->u.hdr.len); + + skb->len = precv_frame->u.hdr.len; + + RT_TRACE(_module_recv_osdep_c_,_drv_info_,("\n skb->head=%p skb->data=%p skb->tail=%p skb->end=%p skb->len=%d\n", skb->head, skb->data, skb->tail, skb->end, skb->len)); + + if(check_fwstate(pmlmepriv, WIFI_AP_STATE) == _TRUE) + { + _pkt *pskb2=NULL; + struct sta_info *psta = NULL; + struct sta_priv *pstapriv = &padapter->stapriv; + struct rx_pkt_attrib *pattrib = &precv_frame->u.hdr.attrib; + int bmcast = IS_MCAST(pattrib->dst); + + //DBG_871X("bmcast=%d\n", bmcast); + + if(_rtw_memcmp(pattrib->dst, myid(&padapter->eeprompriv), ETH_ALEN)==_FALSE) + { + //DBG_871X("not ap psta=%p, addr=%pM\n", psta, pattrib->dst); + + if(bmcast) + { + psta = rtw_get_bcmc_stainfo(padapter); + pskb2 = rtw_skb_clone(skb); + } else { + psta = rtw_get_stainfo(pstapriv, pattrib->dst); + } + + if(psta) + { + struct net_device *pnetdev= (struct net_device*)padapter->pnetdev; + + //DBG_871X("directly forwarding to the rtw_xmit_entry\n"); + + //skb->ip_summed = CHECKSUM_NONE; + skb->dev = pnetdev; +#if (LINUX_VERSION_CODE>=KERNEL_VERSION(2,6,35)) + skb_set_queue_mapping(skb, rtw_recv_select_queue(skb)); +#endif //LINUX_VERSION_CODE>=KERNEL_VERSION(2,6,35) + + _rtw_xmit_entry(skb, pnetdev); + + if(bmcast) + skb = pskb2; + else + goto _recv_indicatepkt_end; + } + + + } + else// to APself + { + //DBG_871X("to APSelf\n"); + } + } + + +#ifdef CONFIG_BR_EXT + +#if (LINUX_VERSION_CODE <= KERNEL_VERSION(2, 6, 35)) + br_port = padapter->pnetdev->br_port; +#else // (LINUX_VERSION_CODE <= KERNEL_VERSION(2, 6, 35)) + rcu_read_lock(); + br_port = rcu_dereference(padapter->pnetdev->rx_handler_data); + rcu_read_unlock(); +#endif // (LINUX_VERSION_CODE <= KERNEL_VERSION(2, 6, 35)) + + if( br_port && (check_fwstate(pmlmepriv, WIFI_STATION_STATE|WIFI_ADHOC_STATE) == _TRUE) ) + { + int nat25_handle_frame(_adapter *priv, struct sk_buff *skb); + if (nat25_handle_frame(padapter, skb) == -1) { + //priv->ext_stats.rx_data_drops++; + //DEBUG_ERR("RX DROP: nat25_handle_frame fail!\n"); + //return FAIL; +#if 1 + // bypass this frame to upper layer!! +#else + goto _recv_indicatepkt_drop; +#endif + } + } + +#endif // CONFIG_BR_EXT + + +#ifdef CONFIG_TCP_CSUM_OFFLOAD_RX + if ( (pattrib->tcpchk_valid == 1) && (pattrib->tcp_chkrpt == 1) ) { + skb->ip_summed = CHECKSUM_UNNECESSARY; + //DBG_871X("CHECKSUM_UNNECESSARY \n"); + } else { + skb->ip_summed = CHECKSUM_NONE; + //DBG_871X("CHECKSUM_NONE(%d, %d) \n", pattrib->tcpchk_valid, pattrib->tcp_chkrpt); + } +#else /* !CONFIG_TCP_CSUM_OFFLOAD_RX */ + + skb->ip_summed = CHECKSUM_NONE; + +#endif + + skb->dev = padapter->pnetdev; + skb->protocol = eth_type_trans(skb, padapter->pnetdev); + + rtw_netif_rx(padapter->pnetdev, skb); + +_recv_indicatepkt_end: + + precv_frame->u.hdr.pkt = NULL; // pointers to NULL before rtw_free_recvframe() + + rtw_free_recvframe(precv_frame, pfree_recv_queue); + + RT_TRACE(_module_recv_osdep_c_,_drv_info_,("\n rtw_recv_indicatepkt :after rtw_netif_rx!!!!\n")); + +_func_exit_; + + return _SUCCESS; + +_recv_indicatepkt_drop: + + //enqueue back to free_recv_queue + if(precv_frame) + rtw_free_recvframe(precv_frame, pfree_recv_queue); + + return _FAIL; + +_func_exit_; + +} + +void rtw_os_read_port(_adapter *padapter, struct recv_buf *precvbuf) +{ + struct recv_priv *precvpriv = &padapter->recvpriv; + +#ifdef CONFIG_USB_HCI + + precvbuf->ref_cnt--; + + //free skb in recv_buf + rtw_skb_free(precvbuf->pskb); + + precvbuf->pskb = NULL; + precvbuf->reuse = _FALSE; + + if(precvbuf->irp_pending == _FALSE) + { + rtw_read_port(padapter, precvpriv->ff_hwaddr, 0, (unsigned char *)precvbuf); + } + + +#endif +#ifdef CONFIG_SDIO_HCI + precvbuf->pskb = NULL; +#endif + +} +void _rtw_reordering_ctrl_timeout_handler (void *FunctionContext); +void _rtw_reordering_ctrl_timeout_handler (void *FunctionContext) +{ + struct recv_reorder_ctrl *preorder_ctrl = (struct recv_reorder_ctrl *)FunctionContext; + rtw_reordering_ctrl_timeout_handler(preorder_ctrl); +} + +void rtw_init_recv_timer(struct recv_reorder_ctrl *preorder_ctrl) +{ + _adapter *padapter = preorder_ctrl->padapter; + + _init_timer(&(preorder_ctrl->reordering_ctrl_timer), padapter->pnetdev, _rtw_reordering_ctrl_timeout_handler, preorder_ctrl); + +} --- linux-raspi2-4.2.0.orig/drivers/net/wireless/rtl8192cu/os_dep/linux/rtw_android.c +++ linux-raspi2-4.2.0/drivers/net/wireless/rtl8192cu/os_dep/linux/rtw_android.c @@ -0,0 +1,838 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved. + * + * 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 + * published by the Free Software Foundation. + * + * 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 Street, Fifth Floor, Boston, MA 02110, USA + * + * + ******************************************************************************/ + +#include +#include + +#include +#include +#include +#include +#include + +#if defined(RTW_ENABLE_WIFI_CONTROL_FUNC) +#include +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 35)) +#include +#else +#include +#endif +#endif /* defined(RTW_ENABLE_WIFI_CONTROL_FUNC) */ + +const char *android_wifi_cmd_str[ANDROID_WIFI_CMD_MAX] = { + "START", + "STOP", + "SCAN-ACTIVE", + "SCAN-PASSIVE", + "RSSI", + "LINKSPEED", + "RXFILTER-START", + "RXFILTER-STOP", + "RXFILTER-ADD", + "RXFILTER-REMOVE", + "BTCOEXSCAN-START", + "BTCOEXSCAN-STOP", + "BTCOEXMODE", + "SETSUSPENDOPT", + "P2P_DEV_ADDR", + "SETFWPATH", + "SETBAND", + "GETBAND", + "COUNTRY", + "P2P_SET_NOA", + "P2P_GET_NOA", + "P2P_SET_PS", + "SET_AP_WPS_P2P_IE", +#ifdef PNO_SUPPORT + "PNOSSIDCLR", + "PNOSETUP ", + "PNOFORCE", + "PNODEBUG", +#endif + + "MACADDR", + + "BLOCK", + "WFD-ENABLE", + "WFD-DISABLE", + "WFD-SET-TCPPORT", + "WFD-SET-MAXTPUT", + "WFD-SET-DEVTYPE", +}; + +#ifdef PNO_SUPPORT +#define PNO_TLV_PREFIX 'S' +#define PNO_TLV_VERSION '1' +#define PNO_TLV_SUBVERSION '2' +#define PNO_TLV_RESERVED '0' +#define PNO_TLV_TYPE_SSID_IE 'S' +#define PNO_TLV_TYPE_TIME 'T' +#define PNO_TLV_FREQ_REPEAT 'R' +#define PNO_TLV_FREQ_EXPO_MAX 'M' + +typedef struct cmd_tlv { + char prefix; + char version; + char subver; + char reserved; +} cmd_tlv_t; +#endif /* PNO_SUPPORT */ + +typedef struct android_wifi_priv_cmd { + +#ifdef CONFIG_COMPAT + compat_uptr_t buf; +#else + char *buf; +#endif + + int used_len; + int total_len; +} android_wifi_priv_cmd; + +/** + * Local (static) functions and variables + */ + +/* Initialize g_wifi_on to 1 so dhd_bus_start will be called for the first + * time (only) in dhd_open, subsequential wifi on will be handled by + * wl_android_wifi_on + */ +static int g_wifi_on = _TRUE; + + +#ifdef PNO_SUPPORT +static int wl_android_set_pno_setup(struct net_device *dev, char *command, int total_len) +{ + wlc_ssid_t ssids_local[MAX_PFN_LIST_COUNT]; + int res = -1; + int nssid = 0; + cmd_tlv_t *cmd_tlv_temp; + char *str_ptr; + int tlv_size_left; + int pno_time = 0; + int pno_repeat = 0; + int pno_freq_expo_max = 0; + +#ifdef PNO_SET_DEBUG + int i; + char pno_in_example[] = { + 'P', 'N', 'O', 'S', 'E', 'T', 'U', 'P', ' ', + 'S', '1', '2', '0', + 'S', + 0x05, + 'd', 'l', 'i', 'n', 'k', + 'S', + 0x04, + 'G', 'O', 'O', 'G', + 'T', + '0', 'B', + 'R', + '2', + 'M', + '2', + 0x00 + }; +#endif /* PNO_SET_DEBUG */ + + DHD_INFO(("%s: command=%s, len=%d\n", __FUNCTION__, command, total_len)); + + if (total_len < (strlen(CMD_PNOSETUP_SET) + sizeof(cmd_tlv_t))) { + DBG_871X("%s argument=%d less min size\n", __FUNCTION__, total_len); + goto exit_proc; + } + +#ifdef PNO_SET_DEBUG + memcpy(command, pno_in_example, sizeof(pno_in_example)); + for (i = 0; i < sizeof(pno_in_example); i++) + printf("%02X ", command[i]); + printf("\n"); + total_len = sizeof(pno_in_example); +#endif + + str_ptr = command + strlen(CMD_PNOSETUP_SET); + tlv_size_left = total_len - strlen(CMD_PNOSETUP_SET); + + cmd_tlv_temp = (cmd_tlv_t *)str_ptr; + memset(ssids_local, 0, sizeof(ssids_local)); + + if ((cmd_tlv_temp->prefix == PNO_TLV_PREFIX) && + (cmd_tlv_temp->version == PNO_TLV_VERSION) && + (cmd_tlv_temp->subver == PNO_TLV_SUBVERSION)) { + + str_ptr += sizeof(cmd_tlv_t); + tlv_size_left -= sizeof(cmd_tlv_t); + + if ((nssid = wl_iw_parse_ssid_list_tlv(&str_ptr, ssids_local, + MAX_PFN_LIST_COUNT, &tlv_size_left)) <= 0) { + DBG_871X("SSID is not presented or corrupted ret=%d\n", nssid); + goto exit_proc; + } else { + if ((str_ptr[0] != PNO_TLV_TYPE_TIME) || (tlv_size_left <= 1)) { + DBG_871X("%s scan duration corrupted field size %d\n", + __FUNCTION__, tlv_size_left); + goto exit_proc; + } + str_ptr++; + pno_time = simple_strtoul(str_ptr, &str_ptr, 16); + DHD_INFO(("%s: pno_time=%d\n", __FUNCTION__, pno_time)); + + if (str_ptr[0] != 0) { + if ((str_ptr[0] != PNO_TLV_FREQ_REPEAT)) { + DBG_871X("%s pno repeat : corrupted field\n", + __FUNCTION__); + goto exit_proc; + } + str_ptr++; + pno_repeat = simple_strtoul(str_ptr, &str_ptr, 16); + DHD_INFO(("%s :got pno_repeat=%d\n", __FUNCTION__, pno_repeat)); + if (str_ptr[0] != PNO_TLV_FREQ_EXPO_MAX) { + DBG_871X("%s FREQ_EXPO_MAX corrupted field size\n", + __FUNCTION__); + goto exit_proc; + } + str_ptr++; + pno_freq_expo_max = simple_strtoul(str_ptr, &str_ptr, 16); + DHD_INFO(("%s: pno_freq_expo_max=%d\n", + __FUNCTION__, pno_freq_expo_max)); + } + } + } else { + DBG_871X("%s get wrong TLV command\n", __FUNCTION__); + goto exit_proc; + } + + res = dhd_dev_pno_set(dev, ssids_local, nssid, pno_time, pno_repeat, pno_freq_expo_max); + +exit_proc: + return res; +} +#endif /* PNO_SUPPORT */ + +int rtw_android_cmdstr_to_num(char *cmdstr) +{ + int cmd_num; + for(cmd_num=0 ; cmd_nummlmepriv); + struct wlan_network *pcur_network = &pmlmepriv->cur_network; + int bytes_written = 0; + + if(check_fwstate(pmlmepriv, _FW_LINKED) == _TRUE) { + bytes_written += snprintf(&command[bytes_written], total_len, "%s rssi %d", + pcur_network->network.Ssid.Ssid, padapter->recvpriv.rssi); + } + + return bytes_written; +} + +int rtw_android_get_link_speed(struct net_device *net, char *command, int total_len) +{ + _adapter *padapter = (_adapter *)rtw_netdev_priv(net); + struct mlme_priv *pmlmepriv = &(padapter->mlmepriv); + struct wlan_network *pcur_network = &pmlmepriv->cur_network; + int bytes_written = 0; + u16 link_speed = 0; + + link_speed = rtw_get_cur_max_rate(padapter)/10; + bytes_written = snprintf(command, total_len, "LinkSpeed %d", link_speed); + + return bytes_written; +} + +int rtw_android_get_macaddr(struct net_device *net, char *command, int total_len) +{ + _adapter *adapter = (_adapter *)rtw_netdev_priv(net); + int bytes_written = 0; + + bytes_written = snprintf(command, total_len, "Macaddr = "MAC_FMT, MAC_ARG(net->dev_addr)); + return bytes_written; +} + +int rtw_android_set_country(struct net_device *net, char *command, int total_len) +{ + _adapter *adapter = (_adapter *)rtw_netdev_priv(net); + char *country_code = command + strlen(android_wifi_cmd_str[ANDROID_WIFI_CMD_COUNTRY]) + 1; + int ret = _FAIL; + + ret = rtw_set_country(adapter, country_code); + + return (ret==_SUCCESS)?0:-1; +} + +int rtw_android_get_p2p_dev_addr(struct net_device *net, char *command, int total_len) +{ + int bytes_written = 0; + + //We use the same address as our HW MAC address + _rtw_memcpy(command, net->dev_addr, ETH_ALEN); + + bytes_written = ETH_ALEN; + return bytes_written; +} + +int rtw_android_set_block(struct net_device *net, char *command, int total_len) +{ + _adapter *adapter = (_adapter *)rtw_netdev_priv(net); + char *block_value = command + strlen(android_wifi_cmd_str[ANDROID_WIFI_CMD_BLOCK]) + 1; + + #ifdef CONFIG_IOCTL_CFG80211 + wdev_to_priv(adapter->rtw_wdev)->block = (*block_value=='0')?_FALSE:_TRUE; + #endif + + return 0; +} + +int rtw_android_setband(struct net_device *net, char *command, int total_len) +{ + _adapter *adapter = (_adapter *)rtw_netdev_priv(net); + char *arg = command + strlen(android_wifi_cmd_str[ANDROID_WIFI_CMD_SETBAND]) + 1; + u32 band = GHZ_MAX; + int ret = _FAIL; + + sscanf(arg, "%u", &band); + ret = rtw_set_band(adapter, band); + + return (ret==_SUCCESS)?0:-1; +} + +int rtw_android_getband(struct net_device *net, char *command, int total_len) +{ + _adapter *adapter = (_adapter *)rtw_netdev_priv(net); + int bytes_written = 0; + + bytes_written = snprintf(command, total_len, "%u", adapter->setband); + + return bytes_written; +} + +int get_int_from_command( char* pcmd ) +{ + int i = 0; + + for( i = 0; i < strlen( pcmd ); i++ ) + { + if ( pcmd[ i ] == '=' ) + { + // Skip the '=' and space characters. + i += 2; + break; + } + } + return ( rtw_atoi( pcmd + i ) ); +} + +int rtw_android_priv_cmd(struct net_device *net, struct ifreq *ifr, int cmd) +{ + int ret = 0; + char *command = NULL; + int cmd_num; + int bytes_written = 0; + android_wifi_priv_cmd priv_cmd; + + rtw_lock_suspend(); + + if (!ifr->ifr_data) { + ret = -EINVAL; + goto exit; + } + if (copy_from_user(&priv_cmd, ifr->ifr_data, sizeof(android_wifi_priv_cmd))) { + ret = -EFAULT; + goto exit; + } + + command = rtw_zmalloc(priv_cmd.total_len); + if (!command) + { + DBG_871X("%s: failed to allocate memory\n", __FUNCTION__); + ret = -ENOMEM; + goto exit; + } + + if (!access_ok(VERIFY_READ, priv_cmd.buf, priv_cmd.total_len)){ + DBG_871X("%s: failed to access memory\n", __FUNCTION__); + ret = -EFAULT; + goto exit; + } + if (copy_from_user(command, (void *)priv_cmd.buf, priv_cmd.total_len)) { + ret = -EFAULT; + goto exit; + } + + DBG_871X("%s: Android private cmd \"%s\" on %s\n" + , __FUNCTION__, command, ifr->ifr_name); + + cmd_num = rtw_android_cmdstr_to_num(command); + + switch(cmd_num) { + case ANDROID_WIFI_CMD_START: + //bytes_written = wl_android_wifi_on(net); + goto response; + case ANDROID_WIFI_CMD_SETFWPATH: + goto response; + } + + if (!g_wifi_on) { + DBG_871X("%s: Ignore private cmd \"%s\" - iface %s is down\n" + ,__FUNCTION__, command, ifr->ifr_name); + ret = 0; + goto exit; + } + + switch(cmd_num) { + + case ANDROID_WIFI_CMD_STOP: + //bytes_written = wl_android_wifi_off(net); + break; + + case ANDROID_WIFI_CMD_SCAN_ACTIVE: + //rtw_set_scan_mode((_adapter *)rtw_netdev_priv(net), SCAN_ACTIVE); +#ifdef CONFIG_PLATFORM_MSTAR +#ifdef CONFIG_IOCTL_CFG80211 + (wdev_to_priv(net->ieee80211_ptr))->bandroid_scan = _TRUE; +#endif //CONFIG_IOCTL_CFG80211 +#endif //CONFIG_PLATFORM_MSTAR + break; + case ANDROID_WIFI_CMD_SCAN_PASSIVE: + //rtw_set_scan_mode((_adapter *)rtw_netdev_priv(net), SCAN_PASSIVE); + break; + + case ANDROID_WIFI_CMD_RSSI: + bytes_written = rtw_android_get_rssi(net, command, priv_cmd.total_len); + break; + case ANDROID_WIFI_CMD_LINKSPEED: + bytes_written = rtw_android_get_link_speed(net, command, priv_cmd.total_len); + break; + + case ANDROID_WIFI_CMD_MACADDR: + bytes_written = rtw_android_get_macaddr(net, command, priv_cmd.total_len); + break; + + case ANDROID_WIFI_CMD_BLOCK: + bytes_written = rtw_android_set_block(net, command, priv_cmd.total_len); + break; + + case ANDROID_WIFI_CMD_RXFILTER_START: + //bytes_written = net_os_set_packet_filter(net, 1); + break; + case ANDROID_WIFI_CMD_RXFILTER_STOP: + //bytes_written = net_os_set_packet_filter(net, 0); + break; + case ANDROID_WIFI_CMD_RXFILTER_ADD: + //int filter_num = *(command + strlen(CMD_RXFILTER_ADD) + 1) - '0'; + //bytes_written = net_os_rxfilter_add_remove(net, TRUE, filter_num); + break; + case ANDROID_WIFI_CMD_RXFILTER_REMOVE: + //int filter_num = *(command + strlen(CMD_RXFILTER_REMOVE) + 1) - '0'; + //bytes_written = net_os_rxfilter_add_remove(net, FALSE, filter_num); + break; + + case ANDROID_WIFI_CMD_BTCOEXSCAN_START: + /* TBD: BTCOEXSCAN-START */ + break; + case ANDROID_WIFI_CMD_BTCOEXSCAN_STOP: + /* TBD: BTCOEXSCAN-STOP */ + break; + case ANDROID_WIFI_CMD_BTCOEXMODE: + #if 0 + uint mode = *(command + strlen(CMD_BTCOEXMODE) + 1) - '0'; + if (mode == 1) + net_os_set_packet_filter(net, 0); /* DHCP starts */ + else + net_os_set_packet_filter(net, 1); /* DHCP ends */ +#ifdef WL_CFG80211 + bytes_written = wl_cfg80211_set_btcoex_dhcp(net, command); +#endif + #endif + break; + + case ANDROID_WIFI_CMD_SETSUSPENDOPT: + //bytes_written = wl_android_set_suspendopt(net, command, priv_cmd.total_len); + break; + + case ANDROID_WIFI_CMD_SETBAND: + bytes_written = rtw_android_setband(net, command, priv_cmd.total_len); + break; + + case ANDROID_WIFI_CMD_GETBAND: + bytes_written = rtw_android_getband(net, command, priv_cmd.total_len); + break; + + case ANDROID_WIFI_CMD_COUNTRY: + bytes_written = rtw_android_set_country(net, command, priv_cmd.total_len); + break; + +#ifdef PNO_SUPPORT + case ANDROID_WIFI_CMD_PNOSSIDCLR_SET: + //bytes_written = dhd_dev_pno_reset(net); + break; + case ANDROID_WIFI_CMD_PNOSETUP_SET: + //bytes_written = wl_android_set_pno_setup(net, command, priv_cmd.total_len); + break; + case ANDROID_WIFI_CMD_PNOENABLE_SET: + //uint pfn_enabled = *(command + strlen(CMD_PNOENABLE_SET) + 1) - '0'; + //bytes_written = dhd_dev_pno_enable(net, pfn_enabled); + break; +#endif + + case ANDROID_WIFI_CMD_P2P_DEV_ADDR: + bytes_written = rtw_android_get_p2p_dev_addr(net, command, priv_cmd.total_len); + break; + case ANDROID_WIFI_CMD_P2P_SET_NOA: + //int skip = strlen(CMD_P2P_SET_NOA) + 1; + //bytes_written = wl_cfg80211_set_p2p_noa(net, command + skip, priv_cmd.total_len - skip); + break; + case ANDROID_WIFI_CMD_P2P_GET_NOA: + //bytes_written = wl_cfg80211_get_p2p_noa(net, command, priv_cmd.total_len); + break; + case ANDROID_WIFI_CMD_P2P_SET_PS: + //int skip = strlen(CMD_P2P_SET_PS) + 1; + //bytes_written = wl_cfg80211_set_p2p_ps(net, command + skip, priv_cmd.total_len - skip); + break; + +#ifdef CONFIG_IOCTL_CFG80211 + case ANDROID_WIFI_CMD_SET_AP_WPS_P2P_IE: + { + int skip = strlen(android_wifi_cmd_str[ANDROID_WIFI_CMD_SET_AP_WPS_P2P_IE]) + 3; + bytes_written = rtw_cfg80211_set_mgnt_wpsp2pie(net, command + skip, priv_cmd.total_len - skip, *(command + skip - 2) - '0'); + break; + } +#endif //CONFIG_IOCTL_CFG80211 + +#ifdef CONFIG_WFD + case ANDROID_WIFI_CMD_WFD_ENABLE: + { + // Commented by Albert 2012/07/24 + // We can enable the WFD function by using the following command: + // wpa_cli driver wfd-enable + + struct wifi_display_info *pwfd_info; + _adapter* padapter = ( _adapter * ) rtw_netdev_priv(net); + + pwfd_info = &padapter->wfd_info; + if( padapter->wdinfo.driver_interface == DRIVER_CFG80211 ) + pwfd_info->wfd_enable = _TRUE; + break; + } + + case ANDROID_WIFI_CMD_WFD_DISABLE: + { + // Commented by Albert 2012/07/24 + // We can disable the WFD function by using the following command: + // wpa_cli driver wfd-disable + + struct wifi_display_info *pwfd_info; + _adapter* padapter = ( _adapter * ) rtw_netdev_priv(net); + + pwfd_info = &padapter->wfd_info; + if( padapter->wdinfo.driver_interface == DRIVER_CFG80211 ) + pwfd_info->wfd_enable = _FALSE; + break; + } + case ANDROID_WIFI_CMD_WFD_SET_TCPPORT: + { + // Commented by Albert 2012/07/24 + // We can set the tcp port number by using the following command: + // wpa_cli driver wfd-set-tcpport = 554 + + struct wifi_display_info *pwfd_info; + _adapter* padapter = ( _adapter * ) rtw_netdev_priv(net); + + pwfd_info = &padapter->wfd_info; + if( padapter->wdinfo.driver_interface == DRIVER_CFG80211 ) + pwfd_info->rtsp_ctrlport = ( u16 ) get_int_from_command( priv_cmd.buf ); + break; + } + case ANDROID_WIFI_CMD_WFD_SET_MAX_TPUT: + { + + + break; + } + case ANDROID_WIFI_CMD_WFD_SET_DEVTYPE: + { + // Commented by Albert 2012/08/28 + // Specify the WFD device type ( WFD source/primary sink ) + + struct wifi_display_info *pwfd_info; + _adapter* padapter = ( _adapter * ) rtw_netdev_priv(net); + + pwfd_info = &padapter->wfd_info; + if( padapter->wdinfo.driver_interface == DRIVER_CFG80211 ) + { + pwfd_info->wfd_device_type = ( u8 ) get_int_from_command( priv_cmd.buf ); + + pwfd_info->wfd_device_type &= WFD_DEVINFO_DUAL; + } + break; + } +#endif + default: + DBG_871X("Unknown PRIVATE command %s - ignored\n", command); + snprintf(command, 3, "OK"); + bytes_written = strlen("OK"); + } + +response: + if (bytes_written >= 0) { + if ((bytes_written == 0) && (priv_cmd.total_len > 0)) + command[0] = '\0'; + if (bytes_written >= priv_cmd.total_len) { + DBG_871X("%s: bytes_written = %d\n", __FUNCTION__, bytes_written); + bytes_written = priv_cmd.total_len; + } else { + bytes_written++; + } + priv_cmd.used_len = bytes_written; + if (copy_to_user((void *)priv_cmd.buf, command, bytes_written)) { + DBG_871X("%s: failed to copy data to user buffer\n", __FUNCTION__); + ret = -EFAULT; + } + } + else { + ret = bytes_written; + } + +exit: + rtw_unlock_suspend(); + if (command) { + rtw_mfree(command, priv_cmd.total_len); + } + + return ret; +} + + +/** + * Functions for Android WiFi card detection + */ +#if defined(RTW_ENABLE_WIFI_CONTROL_FUNC) + +static int g_wifidev_registered = 0; +static struct semaphore wifi_control_sem; +static struct wifi_platform_data *wifi_control_data = NULL; +static struct resource *wifi_irqres = NULL; + +static int wifi_add_dev(void); +static void wifi_del_dev(void); + +int rtw_android_wifictrl_func_add(void) +{ + int ret = 0; + sema_init(&wifi_control_sem, 0); + + ret = wifi_add_dev(); + if (ret) { + DBG_871X("%s: platform_driver_register failed\n", __FUNCTION__); + return ret; + } + g_wifidev_registered = 1; + + /* Waiting callback after platform_driver_register is done or exit with error */ + if (down_timeout(&wifi_control_sem, msecs_to_jiffies(1000)) != 0) { + ret = -EINVAL; + DBG_871X("%s: platform_driver_register timeout\n", __FUNCTION__); + } + + return ret; +} + +void rtw_android_wifictrl_func_del(void) +{ + if (g_wifidev_registered) + { + wifi_del_dev(); + g_wifidev_registered = 0; + } +} + +void *wl_android_prealloc(int section, unsigned long size) +{ + void *alloc_ptr = NULL; + if (wifi_control_data && wifi_control_data->mem_prealloc) { + alloc_ptr = wifi_control_data->mem_prealloc(section, size); + if (alloc_ptr) { + DBG_871X("success alloc section %d\n", section); + if (size != 0L) + memset(alloc_ptr, 0, size); + return alloc_ptr; + } + } + + DBG_871X("can't alloc section %d\n", section); + return NULL; +} + +int wifi_get_irq_number(unsigned long *irq_flags_ptr) +{ + if (wifi_irqres) { + *irq_flags_ptr = wifi_irqres->flags & IRQF_TRIGGER_MASK; + return (int)wifi_irqres->start; + } +#ifdef CUSTOM_OOB_GPIO_NUM + return CUSTOM_OOB_GPIO_NUM; +#else + return -1; +#endif +} + +int wifi_set_power(int on, unsigned long msec) +{ + DBG_871X("%s = %d\n", __FUNCTION__, on); + if (wifi_control_data && wifi_control_data->set_power) { + wifi_control_data->set_power(on); + } + if (msec) + msleep(msec); + return 0; +} + +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 35)) +int wifi_get_mac_addr(unsigned char *buf) +{ + DBG_871X("%s\n", __FUNCTION__); + if (!buf) + return -EINVAL; + if (wifi_control_data && wifi_control_data->get_mac_addr) { + return wifi_control_data->get_mac_addr(buf); + } + return -EOPNOTSUPP; +} +#endif /* (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 35)) */ + +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 39)) || defined(COMPAT_KERNEL_RELEASE) +void *wifi_get_country_code(char *ccode) +{ + DBG_871X("%s\n", __FUNCTION__); + if (!ccode) + return NULL; + if (wifi_control_data && wifi_control_data->get_country_code) { + return wifi_control_data->get_country_code(ccode); + } + return NULL; +} +#endif /* (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 39)) */ + +static int wifi_set_carddetect(int on) +{ + DBG_871X("%s = %d\n", __FUNCTION__, on); + if (wifi_control_data && wifi_control_data->set_carddetect) { + wifi_control_data->set_carddetect(on); + } + return 0; +} + +static int wifi_probe(struct platform_device *pdev) +{ + struct wifi_platform_data *wifi_ctrl = + (struct wifi_platform_data *)(pdev->dev.platform_data); + + DBG_871X("## %s\n", __FUNCTION__); + wifi_irqres = platform_get_resource_byname(pdev, IORESOURCE_IRQ, "bcmdhd_wlan_irq"); + if (wifi_irqres == NULL) + wifi_irqres = platform_get_resource_byname(pdev, + IORESOURCE_IRQ, "bcm4329_wlan_irq"); + wifi_control_data = wifi_ctrl; + + wifi_set_power(1, 0); /* Power On */ + wifi_set_carddetect(1); /* CardDetect (0->1) */ + + up(&wifi_control_sem); + return 0; +} + +static int wifi_remove(struct platform_device *pdev) +{ + struct wifi_platform_data *wifi_ctrl = + (struct wifi_platform_data *)(pdev->dev.platform_data); + + DBG_871X("## %s\n", __FUNCTION__); + wifi_control_data = wifi_ctrl; + + wifi_set_power(0, 0); /* Power Off */ + wifi_set_carddetect(0); /* CardDetect (1->0) */ + + up(&wifi_control_sem); + return 0; +} + +static int wifi_suspend(struct platform_device *pdev, pm_message_t state) +{ + DBG_871X("##> %s\n", __FUNCTION__); +#if (LINUX_VERSION_CODE <= KERNEL_VERSION(2, 6, 39)) && defined(OOB_INTR_ONLY) + bcmsdh_oob_intr_set(0); +#endif + return 0; +} + +static int wifi_resume(struct platform_device *pdev) +{ + DBG_871X("##> %s\n", __FUNCTION__); +#if (LINUX_VERSION_CODE <= KERNEL_VERSION(2, 6, 39)) && defined(OOB_INTR_ONLY) + if (dhd_os_check_if_up(bcmsdh_get_drvdata())) + bcmsdh_oob_intr_set(1); +#endif + return 0; +} + +/* temporarily use these two */ +static struct platform_driver wifi_device = { + .probe = wifi_probe, + .remove = wifi_remove, + .suspend = wifi_suspend, + .resume = wifi_resume, + .driver = { + .name = "bcmdhd_wlan", + } +}; + +static struct platform_driver wifi_device_legacy = { + .probe = wifi_probe, + .remove = wifi_remove, + .suspend = wifi_suspend, + .resume = wifi_resume, + .driver = { + .name = "bcm4329_wlan", + } +}; + +static int wifi_add_dev(void) +{ + DBG_871X("## Calling platform_driver_register\n"); + platform_driver_register(&wifi_device); + platform_driver_register(&wifi_device_legacy); + return 0; +} + +static void wifi_del_dev(void) +{ + DBG_871X("## Unregister platform_driver_register\n"); + platform_driver_unregister(&wifi_device); + platform_driver_unregister(&wifi_device_legacy); +} +#endif /* defined(RTW_ENABLE_WIFI_CONTROL_FUNC) */ --- linux-raspi2-4.2.0.orig/drivers/net/wireless/rtl8192cu/os_dep/linux/usb_intf.c +++ linux-raspi2-4.2.0/drivers/net/wireless/rtl8192cu/os_dep/linux/usb_intf.c @@ -0,0 +1,1655 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved. + * + * 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 + * published by the Free Software Foundation. + * + * 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 Street, Fifth Floor, Boston, MA 02110, USA + * + * + ******************************************************************************/ +#define _HCI_INTF_C_ + +#include +#include +#include +#include +#include +#include +#include + +#ifndef CONFIG_USB_HCI + +#error "CONFIG_USB_HCI shall be on!\n" + +#endif + +#include +#include +#include +#include +#ifdef CONFIG_PLATFORM_RTK_DMP +#include +#endif + +#if defined (PLATFORM_LINUX) && defined (PLATFORM_WINDOWS) + +#error "Shall be Linux or Windows, but not both!\n" + +#endif + +#ifdef CONFIG_80211N_HT +extern int rtw_ht_enable; +extern int rtw_cbw40_enable; +extern int rtw_ampdu_enable;//for enable tx_ampdu +#endif + +#ifdef CONFIG_GLOBAL_UI_PID +int ui_pid[3] = {0, 0, 0}; +#endif + + +extern int pm_netdev_open(struct net_device *pnetdev,u8 bnormal); +static int rtw_suspend(struct usb_interface *intf, pm_message_t message); +static int rtw_resume(struct usb_interface *intf); +int rtw_resume_process(_adapter *padapter); + + +static int rtw_drv_init(struct usb_interface *pusb_intf,const struct usb_device_id *pdid); +static void rtw_dev_remove(struct usb_interface *pusb_intf); + +#define USB_VENDER_ID_REALTEK 0x0BDA + +/* DID_USB_v915_20121224 */ +#define RTL8192C_USB_IDS \ + /*=== Realtek demoboard ===*/ \ + {USB_DEVICE(USB_VENDER_ID_REALTEK, 0x8191)},/* Default ID */ \ + /****** 8188CUS ********/ \ + {USB_DEVICE(USB_VENDER_ID_REALTEK, 0x8176)},/* 8188cu 1*1 dongole */ \ + {USB_DEVICE(USB_VENDER_ID_REALTEK, 0x8170)},/* 8188CE-VAU USB minCard */ \ + {USB_DEVICE(USB_VENDER_ID_REALTEK, 0x817E)},/* 8188CE-VAU USB minCard */ \ + {USB_DEVICE(USB_VENDER_ID_REALTEK, 0x817A)},/* 8188cu Slim Solo */ \ + {USB_DEVICE(USB_VENDER_ID_REALTEK, 0x817B)},/* 8188cu Slim Combo */ \ + {USB_DEVICE(USB_VENDER_ID_REALTEK, 0x817D)},/* 8188RU High-power USB Dongle */ \ + {USB_DEVICE(USB_VENDER_ID_REALTEK, 0x8754)},/* 8188 Combo for BC4 */ \ + {USB_DEVICE(USB_VENDER_ID_REALTEK, 0x817F)},/* 8188RU */ \ + {USB_DEVICE(USB_VENDER_ID_REALTEK, 0x818A)},/* RTL8188CUS-VL */ \ + {USB_DEVICE(USB_VENDER_ID_REALTEK, 0x018A)},/* RTL8188CTV */ \ + {USB_DEVICE(USB_VENDER_ID_REALTEK, 0x17C0)}, /* RTK demoboard - USB-N10E */ \ + /****** 8192CUS ********/ \ + {USB_DEVICE(USB_VENDER_ID_REALTEK, 0x8177)},/* 8191cu 1*2 */ \ + {USB_DEVICE(USB_VENDER_ID_REALTEK, 0x8178)},/* 8192cu 2*2 */ \ + {USB_DEVICE(USB_VENDER_ID_REALTEK, 0x817C)},/* 8192CE-VAU USB minCard */ \ + {USB_DEVICE(USB_VENDER_ID_REALTEK, 0x8191)},/* 8192CU 2*2 */ \ + {USB_DEVICE(0x1058, 0x0631)},/* Alpha, 8192CU */ \ + /*=== Customer ID ===*/ \ + /****** 8188CUS Dongle ********/ \ + {USB_DEVICE(0x2019, 0xED17)},/* PCI - Edimax */ \ + {USB_DEVICE(0x0DF6, 0x0052)},/* Sitecom - Edimax */ \ + {USB_DEVICE(0x7392, 0x7811)},/* Edimax - Edimax */ \ + {USB_DEVICE(0x07B8, 0x8189)},/* Abocom - Abocom */ \ + {USB_DEVICE(0x0EB0, 0x9071)},/* NO Brand - Etop */ \ + {USB_DEVICE(0x06F8, 0xE033)},/* Hercules - Edimax */ \ + {USB_DEVICE(0x103C, 0x1629)},/* HP - Lite-On ,8188CUS Slim Combo */ \ + {USB_DEVICE(0x2001, 0x3308)},/* D-Link - Alpha */ \ + {USB_DEVICE(0x050D, 0x1102)},/* Belkin - Edimax */ \ + {USB_DEVICE(0x2019, 0xAB2A)},/* Planex - Abocom */ \ + {USB_DEVICE(0x20F4, 0x648B)},/* TRENDnet - Cameo */ \ + {USB_DEVICE(0x4855, 0x0090)},/* - Feixun */ \ + {USB_DEVICE(0x13D3, 0x3357)},/* - AzureWave */ \ + {USB_DEVICE(0x0DF6, 0x005C)},/* Sitecom - Edimax */ \ + {USB_DEVICE(0x0BDA, 0x5088)},/* Thinkware - CC&C */ \ + {USB_DEVICE(0x4856, 0x0091)},/* NetweeN - Feixun */ \ + {USB_DEVICE(0x0846, 0x9041)}, /* Netgear - Cameo */ \ + {USB_DEVICE(0x2019, 0x4902)},/* Planex - Etop */ \ + {USB_DEVICE(0x2019, 0xAB2E)},/* SW-WF02-AD15 -Abocom */ \ + {USB_DEVICE(0x2001, 0x330B)}, /* D-LINK - T&W */ \ + {USB_DEVICE(0xCDAB, 0x8010)}, /* - - compare */ \ + {USB_DEVICE(0x0B05, 0x17BA)}, /* ASUS - Edimax */ \ + {USB_DEVICE(0x0BDA, 0x1E1E)}, /* Intel - - */ \ + {USB_DEVICE(0x04BB, 0x094c)}, /* I-O DATA - Edimax */ \ + /****** 8188CTV ********/ \ + {USB_DEVICE(0xCDAB, 0x8011)}, /* - - compare */ \ + {USB_DEVICE(0x0BDA, 0x0A8A)}, /* Sony - Foxconn */ \ + /****** 8188 RU ********/ \ + {USB_DEVICE(0x0BDA, 0x317F)},/* Netcore,Netcore */ \ + /****** 8188CE-VAU ********/ \ + {USB_DEVICE(0x13D3, 0x3359)},/* - Azwave */ \ + {USB_DEVICE(0x13D3, 0x3358)},/* - Azwave */ \ + /****** 8188CUS Slim Solo********/ \ + {USB_DEVICE(0x04F2, 0xAFF7)},/* XAVI - XAVI */ \ + {USB_DEVICE(0x04F2, 0xAFF9)},/* XAVI - XAVI */ \ + {USB_DEVICE(0x04F2, 0xAFFA)},/* XAVI - XAVI */ \ + /****** 8188CUS Slim Combo ********/ \ + {USB_DEVICE(0x04F2, 0xAFF8)},/* XAVI - XAVI */ \ + {USB_DEVICE(0x04F2, 0xAFFB)},/* XAVI - XAVI */ \ + {USB_DEVICE(0x04F2, 0xAFFC)},/* XAVI - XAVI */ \ + {USB_DEVICE(0x2019, 0x1201)},/* Planex - Vencer */ \ + /****** 8192CUS Dongle ********/ \ + {USB_DEVICE(0x2001, 0x3307)},/* D-Link - Cameo */ \ + {USB_DEVICE(0x2001, 0x330A)},/* D-Link - Alpha */ \ + {USB_DEVICE(0x2001, 0x3309)},/* D-Link - Alpha */ \ + {USB_DEVICE(0x2001, 0x330D)},/* D-Link - DWA 131 */ \ + {USB_DEVICE(0x0586, 0x341F)},/* Zyxel - Abocom */ \ + {USB_DEVICE(0x7392, 0x7822)},/* Edimax - Edimax */ \ + {USB_DEVICE(0x2019, 0xAB2B)},/* Planex - Abocom */ \ + {USB_DEVICE(0x07B8, 0x8178)},/* Abocom - Abocom */ \ + {USB_DEVICE(0x07AA, 0x0056)},/* ATKK - Gemtek */ \ + {USB_DEVICE(0x4855, 0x0091)},/* - Feixun */ \ + {USB_DEVICE(0x050D, 0x2102)},/* Belkin - Sercomm */ \ + {USB_DEVICE(0x050D, 0x2103)},/* Belkin - Edimax */ \ + {USB_DEVICE(0x20F4, 0x624D)},/* TRENDnet */ \ + {USB_DEVICE(0x0DF6, 0x0061)},/* Sitecom - Edimax */ \ + {USB_DEVICE(0x0B05, 0x17AB)},/* ASUS - Edimax */ \ + {USB_DEVICE(0x0846, 0x9021)},/* Netgear - Sercomm */ \ + {USB_DEVICE(0x0846, 0xF001)}, /* Netgear - Sercomm */ \ + {USB_DEVICE(0x0E66, 0x0019)},/* Hawking,Edimax */ \ + {USB_DEVICE(0x0E66, 0x0020)}, /* Hawking - Edimax */ \ + {USB_DEVICE(0x050D, 0x1004)}, /* Belkin - Edimax */ \ + {USB_DEVICE(0x0BDA, 0x2E2E)}, /* Intel - - */ \ + {USB_DEVICE(0x2357, 0x0100)}, /* TP-Link - TP-Link */ \ + {USB_DEVICE(0x06F8, 0xE035)}, /* Hercules - Edimax */ \ + {USB_DEVICE(0x04BB, 0x0950)}, /* IO-DATA - Edimax */ \ + {USB_DEVICE(0x0DF6, 0x0070)}, /* Sitecom - Edimax */ \ + {USB_DEVICE(0x0789, 0x016D)}, /* LOGITEC - Edimax */ \ + /****** 8192CE-VAU ********/ \ + {USB_DEVICE(USB_VENDER_ID_REALTEK, 0x8186)},/* Intel-Xavi( Azwave) */ + +#define RTL8192D_USB_IDS \ + /*=== Realtek demoboard ===*/ \ + /****** 8192DU ********/ \ + {USB_DEVICE(USB_VENDER_ID_REALTEK, 0x8193)},/* 8192DU-VC */ \ + {USB_DEVICE(USB_VENDER_ID_REALTEK, 0x8194)},/* 8192DU-VS */ \ + {USB_DEVICE(USB_VENDER_ID_REALTEK, 0x8111)},/* Realtek 5G dongle for WiFi Display */ \ + {USB_DEVICE(USB_VENDER_ID_REALTEK, 0x0193)},/* 8192DE-VAU */ \ + {USB_DEVICE(USB_VENDER_ID_REALTEK, 0x8171)},/* 8192DU-VC */ \ + /*=== Customer ID ===*/ \ + /****** 8192DU-VC ********/ \ + {USB_DEVICE(0x2019, 0xAB2C)},/* PCI - Abocm */ \ + {USB_DEVICE(0x2019, 0x4903)},/* PCI - ETOP */ \ + {USB_DEVICE(0x2019, 0x4904)},/* PCI - ETOP */ \ + {USB_DEVICE(0x07B8, 0x8193)},/* Abocom - Abocom */ \ + /****** 8192DU-VS ********/ \ + {USB_DEVICE(0x20F4, 0x664B)}, /* TRENDnet - Cameo */ \ + {USB_DEVICE(0x04DD, 0x954F)}, /* Sharp */ \ + {USB_DEVICE(0x04DD, 0x96A6)}, /* Sharp */ \ + {USB_DEVICE(0x050D, 0x110A)}, /* Belkin - Edimax */ \ + {USB_DEVICE(0x050D, 0x1105)}, /* Belkin - Edimax */ \ + {USB_DEVICE(0x050D, 0x120A)}, /* Belkin - Edimax */ \ + {USB_DEVICE(0x1668, 0x8102)}, /* - */ \ + {USB_DEVICE(0x0BDA, 0xE194)}, /* - Edimax */ \ + /****** 8192DU-WiFi Display Dongle ********/ \ + {USB_DEVICE(0x2019, 0xAB2D)},/* Planex - Abocom ,5G dongle for WiFi Display */ + +#ifndef CONFIG_RTL8192C + #undef RTL8192C_USB_IDS + #define RTL8192C_USB_IDS +#endif +#ifndef CONFIG_RTL8192D + #undef RTL8192D_USB_IDS + #define RTL8192D_USB_IDS +#endif + + +static struct usb_device_id rtw_usb_id_tbl[] ={ + RTL8192C_USB_IDS + RTL8192D_USB_IDS + {} /* Terminating entry */ +}; +MODULE_DEVICE_TABLE(usb, rtw_usb_id_tbl); + +int const rtw_usb_id_len = sizeof(rtw_usb_id_tbl) / sizeof(struct usb_device_id); + +static struct specific_device_id specific_device_id_tbl[] = { + {.idVendor=USB_VENDER_ID_REALTEK, .idProduct=0x8177, .flags=SPEC_DEV_ID_DISABLE_HT},//8188cu 1*1 dongole, (b/g mode only) + {.idVendor=USB_VENDER_ID_REALTEK, .idProduct=0x817E, .flags=SPEC_DEV_ID_DISABLE_HT},//8188CE-VAU USB minCard (b/g mode only) + {.idVendor=0x0b05, .idProduct=0x1791, .flags=SPEC_DEV_ID_DISABLE_HT}, + {.idVendor=0x13D3, .idProduct=0x3311, .flags=SPEC_DEV_ID_DISABLE_HT}, + {.idVendor=0x13D3, .idProduct=0x3359, .flags=SPEC_DEV_ID_DISABLE_HT},//Russian customer -Azwave (8188CE-VAU g mode) +#ifdef RTK_DMP_PLATFORM + {.idVendor=USB_VENDER_ID_REALTEK, .idProduct=0x8111, .flags=SPEC_DEV_ID_ASSIGN_IFNAME}, // Realtek 5G dongle for WiFi Display + {.idVendor=0x2019, .idProduct=0xAB2D, .flags=SPEC_DEV_ID_ASSIGN_IFNAME}, // PCI-Abocom 5G dongle for WiFi Display +#endif /* RTK_DMP_PLATFORM */ + {} +}; + +struct rtw_usb_drv { + struct usb_driver usbdrv; + int drv_registered; +}; + +static void rtw_dev_shutdown(struct device *dev) +{ + struct usb_interface *usb_intf = container_of(dev, struct usb_interface, dev); + struct dvobj_priv *dvobj = usb_get_intfdata(usb_intf); + _adapter *adapter = dvobj->if1; + int i; + + DBG_871X("%s\n", __func__); + + for (i = 0; iiface_nums; i++) { + adapter = dvobj->padapters[i]; + adapter->bSurpriseRemoved = _TRUE; + } + + ATOMIC_SET(&dvobj->continual_urb_error, MAX_CONTINUAL_URB_ERR+1); +} + +#ifdef CONFIG_RTL8192C +static struct usb_device_id rtl8192c_usb_id_tbl[] ={ + RTL8192C_USB_IDS + {} /* Terminating entry */ +}; + +struct rtw_usb_drv rtl8192c_usb_drv = { + .usbdrv.name = (char*)"rtl8192cu", + .usbdrv.probe = rtw_drv_init, + .usbdrv.disconnect = rtw_dev_remove, + .usbdrv.id_table = rtl8192c_usb_id_tbl, + .usbdrv.suspend = rtw_suspend, + .usbdrv.resume = rtw_resume, + #if (LINUX_VERSION_CODE > KERNEL_VERSION(2, 6, 22)) + .usbdrv.reset_resume = rtw_resume, + #endif + #ifdef CONFIG_AUTOSUSPEND + .usbdrv.supports_autosuspend = 1, + #endif + + #if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 19)) + .usbdrv.drvwrap.driver.shutdown = rtw_dev_shutdown, + #else + .usbdrv.driver.shutdown = rtw_dev_shutdown, + #endif +}; + +static struct rtw_usb_drv *usb_drv = &rtl8192c_usb_drv; +#endif /* CONFIG_RTL8192C */ + +#ifdef CONFIG_RTL8192D +static struct usb_device_id rtl8192d_usb_id_tbl[] ={ + RTL8192D_USB_IDS + {} /* Terminating entry */ +}; + +struct rtw_usb_drv rtl8192d_usb_drv = { + .usbdrv.name = (char*)"rtl8192du", + .usbdrv.probe = rtw_drv_init, + .usbdrv.disconnect = rtw_dev_remove, + .usbdrv.id_table = rtl8192d_usb_id_tbl, + .usbdrv.suspend = rtw_suspend, + .usbdrv.resume = rtw_resume, + #if (LINUX_VERSION_CODE > KERNEL_VERSION(2, 6, 22)) + .usbdrv.reset_resume = rtw_resume, + #endif + #ifdef CONFIG_AUTOSUSPEND + .usbdrv.supports_autosuspend = 1, + #endif + + #if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 19)) + .usbdrv.drvwrap.driver.shutdown = rtw_dev_shutdown, + #else + .usbdrv.driver.shutdown = rtw_dev_shutdown, + #endif +}; +static struct rtw_usb_drv *usb_drv = &rtl8192d_usb_drv; +#endif /* CONFIG_RTL8192D */ + +static inline int RT_usb_endpoint_dir_in(const struct usb_endpoint_descriptor *epd) +{ + return ((epd->bEndpointAddress & USB_ENDPOINT_DIR_MASK) == USB_DIR_IN); +} + +static inline int RT_usb_endpoint_dir_out(const struct usb_endpoint_descriptor *epd) +{ + return ((epd->bEndpointAddress & USB_ENDPOINT_DIR_MASK) == USB_DIR_OUT); +} + +static inline int RT_usb_endpoint_xfer_int(const struct usb_endpoint_descriptor *epd) +{ + return ((epd->bmAttributes & USB_ENDPOINT_XFERTYPE_MASK) == USB_ENDPOINT_XFER_INT); +} + +static inline int RT_usb_endpoint_xfer_bulk(const struct usb_endpoint_descriptor *epd) +{ + return ((epd->bmAttributes & USB_ENDPOINT_XFERTYPE_MASK) == USB_ENDPOINT_XFER_BULK); +} + +static inline int RT_usb_endpoint_is_bulk_in(const struct usb_endpoint_descriptor *epd) +{ + return (RT_usb_endpoint_xfer_bulk(epd) && RT_usb_endpoint_dir_in(epd)); +} + +static inline int RT_usb_endpoint_is_bulk_out(const struct usb_endpoint_descriptor *epd) +{ + return (RT_usb_endpoint_xfer_bulk(epd) && RT_usb_endpoint_dir_out(epd)); +} + +static inline int RT_usb_endpoint_is_int_in(const struct usb_endpoint_descriptor *epd) +{ + return (RT_usb_endpoint_xfer_int(epd) && RT_usb_endpoint_dir_in(epd)); +} + +static inline int RT_usb_endpoint_num(const struct usb_endpoint_descriptor *epd) +{ + return epd->bEndpointAddress & USB_ENDPOINT_NUMBER_MASK; +} + +static u8 rtw_init_intf_priv(struct dvobj_priv *dvobj) +{ + u8 rst = _SUCCESS; + + #ifdef CONFIG_USB_VENDOR_REQ_MUTEX + _rtw_mutex_init(&dvobj->usb_vendor_req_mutex); + #endif + + + #ifdef CONFIG_USB_VENDOR_REQ_BUFFER_PREALLOC + dvobj->usb_alloc_vendor_req_buf = rtw_zmalloc(MAX_USB_IO_CTL_SIZE); + if (dvobj->usb_alloc_vendor_req_buf == NULL) { + DBG_871X("alloc usb_vendor_req_buf failed... /n"); + rst = _FAIL; + goto exit; + } + dvobj->usb_vendor_req_buf = + (u8 *)N_BYTE_ALIGMENT((SIZE_PTR)(dvobj->usb_alloc_vendor_req_buf ), ALIGNMENT_UNIT); +exit: + #endif + + return rst; + +} + +static u8 rtw_deinit_intf_priv(struct dvobj_priv *dvobj) +{ + u8 rst = _SUCCESS; + + #ifdef CONFIG_USB_VENDOR_REQ_BUFFER_PREALLOC + if(dvobj->usb_vendor_req_buf) + rtw_mfree(dvobj->usb_alloc_vendor_req_buf, MAX_USB_IO_CTL_SIZE); + #endif + + #ifdef CONFIG_USB_VENDOR_REQ_MUTEX + _rtw_mutex_free(&dvobj->usb_vendor_req_mutex); + #endif + + return rst; +} + +static struct dvobj_priv *usb_dvobj_init(struct usb_interface *usb_intf) +{ + int i; + u8 val8; + int status = _FAIL; + struct dvobj_priv *pdvobjpriv = NULL; + struct usb_device *pusbd; + struct usb_device_descriptor *pdev_desc; + struct usb_host_config *phost_conf; + struct usb_config_descriptor *pconf_desc; + struct usb_host_interface *phost_iface; + struct usb_interface_descriptor *piface_desc; + struct usb_host_endpoint *phost_endp; + struct usb_endpoint_descriptor *pendp_desc; + +_func_enter_; + + if((pdvobjpriv = devobj_init()) == NULL) { + goto exit; + } + + pdvobjpriv->pusbintf = usb_intf ; + pusbd = pdvobjpriv->pusbdev = interface_to_usbdev(usb_intf); + usb_set_intfdata(usb_intf, pdvobjpriv); + + pdvobjpriv->RtNumInPipes = 0; + pdvobjpriv->RtNumOutPipes = 0; + + + pdev_desc = &pusbd->descriptor; +#if 0 + DBG_871X("\n8712_usb_device_descriptor:\n"); + DBG_871X("bLength=%x\n", pdev_desc->bLength); + DBG_871X("bDescriptorType=%x\n", pdev_desc->bDescriptorType); + DBG_871X("bcdUSB=%x\n", pdev_desc->bcdUSB); + DBG_871X("bDeviceClass=%x\n", pdev_desc->bDeviceClass); + DBG_871X("bDeviceSubClass=%x\n", pdev_desc->bDeviceSubClass); + DBG_871X("bDeviceProtocol=%x\n", pdev_desc->bDeviceProtocol); + DBG_871X("bMaxPacketSize0=%x\n", pdev_desc->bMaxPacketSize0); + DBG_871X("idVendor=%x\n", pdev_desc->idVendor); + DBG_871X("idProduct=%x\n", pdev_desc->idProduct); + DBG_871X("bcdDevice=%x\n", pdev_desc->bcdDevice); + DBG_871X("iManufacturer=%x\n", pdev_desc->iManufacturer); + DBG_871X("iProduct=%x\n", pdev_desc->iProduct); + DBG_871X("iSerialNumber=%x\n", pdev_desc->iSerialNumber); + DBG_871X("bNumConfigurations=%x\n", pdev_desc->bNumConfigurations); +#endif + + phost_conf = pusbd->actconfig; + pconf_desc = &phost_conf->desc; + +#if 0 + DBG_871X("\n8712_usb_configuration_descriptor:\n"); + DBG_871X("bLength=%x\n", pconf_desc->bLength); + DBG_871X("bDescriptorType=%x\n", pconf_desc->bDescriptorType); + DBG_871X("wTotalLength=%x\n", pconf_desc->wTotalLength); + DBG_871X("bNumInterfaces=%x\n", pconf_desc->bNumInterfaces); + DBG_871X("bConfigurationValue=%x\n", pconf_desc->bConfigurationValue); + DBG_871X("iConfiguration=%x\n", pconf_desc->iConfiguration); + DBG_871X("bmAttributes=%x\n", pconf_desc->bmAttributes); + DBG_871X("bMaxPower=%x\n", pconf_desc->bMaxPower); +#endif + + //DBG_871X("\n/****** num of altsetting = (%d) ******/\n", usb_intf->num_altsetting); + + phost_iface = &usb_intf->altsetting[0]; + piface_desc = &phost_iface->desc; + +#if 0 + DBG_871X("\n8712_usb_interface_descriptor:\n"); + DBG_871X("bLength=%x\n", piface_desc->bLength); + DBG_871X("bDescriptorType=%x\n", piface_desc->bDescriptorType); + DBG_871X("bInterfaceNumber=%x\n", piface_desc->bInterfaceNumber); + DBG_871X("bAlternateSetting=%x\n", piface_desc->bAlternateSetting); + DBG_871X("bNumEndpoints=%x\n", piface_desc->bNumEndpoints); + DBG_871X("bInterfaceClass=%x\n", piface_desc->bInterfaceClass); + DBG_871X("bInterfaceSubClass=%x\n", piface_desc->bInterfaceSubClass); + DBG_871X("bInterfaceProtocol=%x\n", piface_desc->bInterfaceProtocol); + DBG_871X("iInterface=%x\n", piface_desc->iInterface); +#endif + + pdvobjpriv->NumInterfaces = pconf_desc->bNumInterfaces; + pdvobjpriv->InterfaceNumber = piface_desc->bInterfaceNumber; + pdvobjpriv->nr_endpoint = piface_desc->bNumEndpoints; + + //DBG_871X("\ndump usb_endpoint_descriptor:\n"); + + for (i = 0; i < pdvobjpriv->nr_endpoint; i++) + { + phost_endp = phost_iface->endpoint + i; + if (phost_endp) + { + pendp_desc = &phost_endp->desc; + + DBG_871X("\nusb_endpoint_descriptor(%d):\n", i); + DBG_871X("bLength=%x\n",pendp_desc->bLength); + DBG_871X("bDescriptorType=%x\n",pendp_desc->bDescriptorType); + DBG_871X("bEndpointAddress=%x\n",pendp_desc->bEndpointAddress); + //DBG_871X("bmAttributes=%x\n",pendp_desc->bmAttributes); + //DBG_871X("wMaxPacketSize=%x\n",pendp_desc->wMaxPacketSize); + DBG_871X("wMaxPacketSize=%x\n",le16_to_cpu(pendp_desc->wMaxPacketSize)); + DBG_871X("bInterval=%x\n",pendp_desc->bInterval); + //DBG_871X("bRefresh=%x\n",pendp_desc->bRefresh); + //DBG_871X("bSynchAddress=%x\n",pendp_desc->bSynchAddress); + + if (RT_usb_endpoint_is_bulk_in(pendp_desc)) + { + DBG_871X("RT_usb_endpoint_is_bulk_in = %x\n", RT_usb_endpoint_num(pendp_desc)); + pdvobjpriv->RtNumInPipes++; + } + else if (RT_usb_endpoint_is_int_in(pendp_desc)) + { + DBG_871X("RT_usb_endpoint_is_int_in = %x, Interval = %x\n", RT_usb_endpoint_num(pendp_desc),pendp_desc->bInterval); + pdvobjpriv->RtNumInPipes++; + } + else if (RT_usb_endpoint_is_bulk_out(pendp_desc)) + { + DBG_871X("RT_usb_endpoint_is_bulk_out = %x\n", RT_usb_endpoint_num(pendp_desc)); + pdvobjpriv->RtNumOutPipes++; + } + pdvobjpriv->ep_num[i] = RT_usb_endpoint_num(pendp_desc); + } + } + + DBG_871X("nr_endpoint=%d, in_num=%d, out_num=%d\n\n", pdvobjpriv->nr_endpoint, pdvobjpriv->RtNumInPipes, pdvobjpriv->RtNumOutPipes); + + if (pusbd->speed == USB_SPEED_HIGH) { + pdvobjpriv->ishighspeed = _TRUE; + DBG_871X("USB_SPEED_HIGH\n"); + } else { + pdvobjpriv->ishighspeed = _FALSE; + DBG_871X("NON USB_SPEED_HIGH\n"); + } + + if (rtw_init_intf_priv(pdvobjpriv) == _FAIL) { + RT_TRACE(_module_os_intfs_c_,_drv_err_,("\n Can't INIT rtw_init_intf_priv\n")); + goto free_dvobj; + } + + //.3 misc + _rtw_init_sema(&(pdvobjpriv->usb_suspend_sema), 0); + + rtw_reset_continual_urb_error(pdvobjpriv); + + usb_get_dev(pusbd); + + //DBG_871X("%s %d\n", __func__, ATOMIC_READ(&usb_intf->dev.kobj.kref.refcount)); + + status = _SUCCESS; + +free_dvobj: + if (status != _SUCCESS && pdvobjpriv) { + usb_set_intfdata(usb_intf, NULL); + devobj_deinit(pdvobjpriv); + pdvobjpriv = NULL; + } +exit: +_func_exit_; + return pdvobjpriv; +} + +static void usb_dvobj_deinit(struct usb_interface *usb_intf) +{ + struct dvobj_priv *dvobj = usb_get_intfdata(usb_intf); + +_func_enter_; + + usb_set_intfdata(usb_intf, NULL); + if (dvobj) { + //Modify condition for 92DU DMDP 2010.11.18, by Thomas + /*if ((dvobj->NumInterfaces == 1) + || ((dvobj->InterfaceNumber == 1) && (dvobj->DualMacMode == _TRUE))) { + if (interface_to_usbdev(usb_intf)->state != USB_STATE_NOTATTACHED) { + //If we didn't unplug usb dongle and remove/insert modlue, driver fails on sitesurvey for the first time when device is up . + //Reset usb port for sitesurvey fail issue. 2009.8.13, by Thomas + DBG_871X("usb attached..., try to reset usb device\n"); + usb_reset_device(interface_to_usbdev(usb_intf)); + } + }*/ + rtw_deinit_intf_priv(dvobj); + devobj_deinit(dvobj); + } + + //DBG_871X("%s %d\n", __func__, ATOMIC_READ(&usb_intf->dev.kobj.kref.refcount)); + usb_put_dev(interface_to_usbdev(usb_intf)); + +_func_exit_; +} + +static void decide_chip_type_by_usb_device_id(_adapter *padapter, const struct usb_device_id *pdid) +{ + padapter->chip_type = NULL_CHIP_TYPE; +#ifdef CONFIG_RTL8192C + padapter->chip_type = RTL8188C_8192C; + padapter->HardwareType = HARDWARE_TYPE_RTL8192CU; + DBG_871X("CHIP TYPE: RTL8188C_8192C\n"); +#endif + +#ifdef CONFIG_RTL8192D + padapter->chip_type = RTL8192D; + padapter->HardwareType = HARDWARE_TYPE_RTL8192DU; + DBG_871X("CHIP TYPE: RTL8192D\n"); +#endif +} + +static void usb_intf_start(_adapter *padapter) +{ + RT_TRACE(_module_hci_intfs_c_,_drv_err_,("+usb_intf_start\n")); + rtw_hal_inirp_init(padapter); + RT_TRACE(_module_hci_intfs_c_,_drv_err_,("-usb_intf_start\n")); +} + +static void usb_intf_stop(_adapter *padapter) +{ + + RT_TRACE(_module_hci_intfs_c_,_drv_err_,("+usb_intf_stop\n")); + + //disabel_hw_interrupt + if(padapter->bSurpriseRemoved == _FALSE) + { + //device still exists, so driver can do i/o operation + //TODO: + RT_TRACE(_module_hci_intfs_c_,_drv_err_,("SurpriseRemoved==_FALSE\n")); + } + + //cancel in irp + rtw_hal_inirp_deinit(padapter); + + //cancel out irp + rtw_write_port_cancel(padapter); + + //todo:cancel other irps + + RT_TRACE(_module_hci_intfs_c_,_drv_err_,("-usb_intf_stop\n")); + +} + +static void rtw_dev_unload(_adapter *padapter) +{ + struct net_device *pnetdev= (struct net_device*)padapter->pnetdev; + u8 val8; + RT_TRACE(_module_hci_intfs_c_,_drv_err_,("+rtw_dev_unload\n")); + + if(padapter->bup == _TRUE) + { + DBG_871X("===> rtw_dev_unload\n"); + + padapter->bDriverStopped = _TRUE; + #ifdef CONFIG_XMIT_ACK + if (padapter->xmitpriv.ack_tx) + rtw_ack_tx_done(&padapter->xmitpriv, RTW_SCTX_DONE_DRV_STOP); + #endif + + //s3. + if(padapter->intf_stop) + { + padapter->intf_stop(padapter); + } + + //s4. + if(!padapter->pwrctrlpriv.bInternalAutoSuspend ) + rtw_stop_drv_threads(padapter); + + + //s5. + if(padapter->bSurpriseRemoved == _FALSE) + { + //DBG_871X("r871x_dev_unload()->rtl871x_hal_deinit()\n"); +#ifdef CONFIG_WOWLAN + if((padapter->pwrctrlpriv.bSupportRemoteWakeup==_TRUE)&&(padapter->pwrctrlpriv.wowlan_mode==_TRUE)){ + DBG_871X("%s bSupportWakeOnWlan==_TRUE do not run rtw_hal_deinit()\n",__FUNCTION__); + } + else +#endif //CONFIG_WOWLAN + { + rtw_hal_deinit(padapter); + } + padapter->bSurpriseRemoved = _TRUE; + } + + padapter->bup = _FALSE; +#ifdef CONFIG_WOWLAN + padapter->hw_init_completed=_FALSE; +#endif //CONFIG_WOWLAN + } + else + { + RT_TRACE(_module_hci_intfs_c_,_drv_err_,("r871x_dev_unload():padapter->bup == _FALSE\n" )); + } + + DBG_871X("<=== rtw_dev_unload\n"); + + RT_TRACE(_module_hci_intfs_c_,_drv_err_,("-rtw_dev_unload\n")); + +} + +static void process_spec_devid(const struct usb_device_id *pdid) +{ + u16 vid, pid; + u32 flags; + int i; + int num = sizeof(specific_device_id_tbl)/sizeof(struct specific_device_id); + + for(i=0; iidVendor==vid) && (pdid->idProduct==pid) && (flags&SPEC_DEV_ID_DISABLE_HT)) + { + rtw_ht_enable = 0; + rtw_cbw40_enable = 0; + rtw_ampdu_enable = 0; + } +#endif + +#ifdef RTK_DMP_PLATFORM + // Change the ifname to wlan10 when PC side WFD dongle plugin on DMP platform. + // It is used to distinguish between normal and PC-side wifi dongle/module. + if((pdid->idVendor==vid) && (pdid->idProduct==pid) && (flags&SPEC_DEV_ID_ASSIGN_IFNAME)) + { + extern char* ifname; + strncpy(ifname, "wlan10", 6); + //DBG_871X("%s()-%d: ifname=%s, vid=%04X, pid=%04X\n", __FUNCTION__, __LINE__, ifname, vid, pid); + } +#endif /* RTK_DMP_PLATFORM */ + + } +} + +#ifdef SUPPORT_HW_RFOFF_DETECTED +int rtw_hw_suspend(_adapter *padapter ) +{ + struct pwrctrl_priv *pwrpriv = &padapter->pwrctrlpriv; + struct usb_interface *pusb_intf = adapter_to_dvobj(padapter)->pusbintf; + struct net_device *pnetdev = padapter->pnetdev; + + _func_enter_; + + if((!padapter->bup) || (padapter->bDriverStopped)||(padapter->bSurpriseRemoved)) + { + DBG_871X("padapter->bup=%d bDriverStopped=%d bSurpriseRemoved = %d\n", + padapter->bup, padapter->bDriverStopped,padapter->bSurpriseRemoved); + goto error_exit; + } + + if(padapter)//system suspend + { + LeaveAllPowerSaveMode(padapter); + + DBG_871X("==> rtw_hw_suspend\n"); + _enter_pwrlock(&pwrpriv->lock); + pwrpriv->bips_processing = _TRUE; + //padapter->net_closed = _TRUE; + //s1. + if(pnetdev) + { + netif_carrier_off(pnetdev); + rtw_netif_stop_queue(pnetdev); + } + + //s2. + rtw_disassoc_cmd(padapter, 500, _FALSE); + + //s2-2. indicate disconnect to os + //rtw_indicate_disconnect(padapter); + { + struct mlme_priv *pmlmepriv = &padapter->mlmepriv; + + if(check_fwstate(pmlmepriv, _FW_LINKED)) + { + _clr_fwstate_(pmlmepriv, _FW_LINKED); + + rtw_led_control(padapter, LED_CTL_NO_LINK); + + rtw_os_indicate_disconnect(padapter); + + #ifdef CONFIG_LPS + //donnot enqueue cmd + rtw_lps_ctrl_wk_cmd(padapter, LPS_CTRL_DISCONNECT, 0); + #endif + } + + } + //s2-3. + rtw_free_assoc_resources(padapter, 1); + + //s2-4. + rtw_free_network_queue(padapter,_TRUE); + #ifdef CONFIG_IPS + rtw_ips_dev_unload(padapter); + #endif + pwrpriv->rf_pwrstate = rf_off; + pwrpriv->bips_processing = _FALSE; + + _exit_pwrlock(&pwrpriv->lock); + } + else + goto error_exit; + + _func_exit_; + return 0; + +error_exit: + DBG_871X("%s, failed \n",__FUNCTION__); + return (-1); + +} + +int rtw_hw_resume(_adapter *padapter) +{ + struct pwrctrl_priv *pwrpriv = &padapter->pwrctrlpriv; + struct usb_interface *pusb_intf = adapter_to_dvobj(padapter)->pusbintf; + struct net_device *pnetdev = padapter->pnetdev; + + _func_enter_; + + if(padapter)//system resume + { + DBG_871X("==> rtw_hw_resume\n"); + _enter_pwrlock(&pwrpriv->lock); + pwrpriv->bips_processing = _TRUE; + rtw_reset_drv_sw(padapter); + + if(pm_netdev_open(pnetdev,_FALSE) != 0) + { + _exit_pwrlock(&pwrpriv->lock); + goto error_exit; + } + + netif_device_attach(pnetdev); + netif_carrier_on(pnetdev); + + if(!rtw_netif_queue_stopped(pnetdev)) + rtw_netif_start_queue(pnetdev); + else + rtw_netif_wake_queue(pnetdev); + + pwrpriv->bkeepfwalive = _FALSE; + pwrpriv->brfoffbyhw = _FALSE; + + pwrpriv->rf_pwrstate = rf_on; + pwrpriv->bips_processing = _FALSE; + + _exit_pwrlock(&pwrpriv->lock); + } + else + { + goto error_exit; + } + + _func_exit_; + + return 0; +error_exit: + DBG_871X("%s, Open net dev failed \n",__FUNCTION__); + return (-1); +} +#endif + +static int rtw_suspend(struct usb_interface *pusb_intf, pm_message_t message) +{ + struct dvobj_priv *dvobj = usb_get_intfdata(pusb_intf); + _adapter *padapter = dvobj->if1; + struct net_device *pnetdev = padapter->pnetdev; + struct mlme_priv *pmlmepriv = &padapter->mlmepriv; + struct pwrctrl_priv *pwrpriv = &padapter->pwrctrlpriv; + struct usb_device *usb_dev = interface_to_usbdev(pusb_intf); +#ifdef CONFIG_WOWLAN + struct wowlan_ioctl_param poidparam; +#endif // CONFIG_WOWLAN + int ret = 0; + u32 start_time = rtw_get_current_time(); + _func_enter_; + + DBG_871X("==> %s (%s:%d)\n",__FUNCTION__, current->comm, current->pid); + + if((!padapter->bup) || (padapter->bDriverStopped)||(padapter->bSurpriseRemoved)) + { + DBG_871X("padapter->bup=%d bDriverStopped=%d bSurpriseRemoved = %d\n", + padapter->bup, padapter->bDriverStopped,padapter->bSurpriseRemoved); + goto exit; + } + + if(pwrpriv->bInternalAutoSuspend ) + { + #ifdef CONFIG_AUTOSUSPEND + #ifdef SUPPORT_HW_RFOFF_DETECTED + // The FW command register update must after MAC and FW init ready. + if((padapter->bFWReady) && ( padapter->pwrctrlpriv.bHWPwrPindetect ) && (padapter->registrypriv.usbss_enable )) + { + u8 bOpen = _TRUE; + rtw_interface_ps_func(padapter,HAL_USB_SELECT_SUSPEND,&bOpen); + //rtl8192c_set_FwSelectSuspend_cmd(padapter,_TRUE ,500);//note fw to support hw power down ping detect + } + #endif + #endif + } + pwrpriv->bInSuspend = _TRUE; + rtw_cancel_all_timer(padapter); + LeaveAllPowerSaveMode(padapter); + + rtw_stop_cmd_thread(padapter); + + _enter_pwrlock(&pwrpriv->lock); + //padapter->net_closed = _TRUE; + //s1. + if(pnetdev) + { + netif_carrier_off(pnetdev); + rtw_netif_stop_queue(pnetdev); + } +#ifdef CONFIG_WOWLAN + if(padapter->pwrctrlpriv.bSupportRemoteWakeup==_TRUE&&padapter->pwrctrlpriv.wowlan_mode==_TRUE){ + u8 ps_mode=PS_MODE_MIN; + //set H2C command + poidparam.subcode=WOWLAN_ENABLE; + rtw_hal_set_hwreg(padapter,HW_VAR_WOWLAN,(u8 *)&poidparam); + //rtw_hal_set_hwreg(padapter, HW_VAR_H2C_FW_PWRMODE, &ps_mode); + //rtw_set_rpwm(padapter, PS_STATE_S2); + } + else +#endif //CONFIG_WOWLAN + { + //s2. + rtw_disassoc_cmd(padapter, 0, _FALSE); + } + +#ifdef CONFIG_LAYER2_ROAMING_RESUME + if(check_fwstate(pmlmepriv, WIFI_STATION_STATE) && check_fwstate(pmlmepriv, _FW_LINKED) ) + { + //printk("%s:%d assoc_ssid:%s\n", __FUNCTION__, __LINE__, pmlmepriv->assoc_ssid.Ssid); + DBG_871X("%s:%d %s(" MAC_FMT "), length:%d assoc_ssid.length:%d\n",__FUNCTION__, __LINE__, + pmlmepriv->cur_network.network.Ssid.Ssid, + MAC_ARG(pmlmepriv->cur_network.network.MacAddress), + pmlmepriv->cur_network.network.Ssid.SsidLength, + pmlmepriv->assoc_ssid.SsidLength); + rtw_set_roaming(padapter, 1); + } +#endif + //s2-2. indicate disconnect to os + rtw_indicate_disconnect(padapter); + //s2-3. + rtw_free_assoc_resources(padapter, 1); +#ifdef CONFIG_AUTOSUSPEND + if(!pwrpriv->bInternalAutoSuspend ) +#endif + //s2-4. + rtw_free_network_queue(padapter, _TRUE); + + rtw_dev_unload(padapter); +#ifdef CONFIG_AUTOSUSPEND + pwrpriv->rf_pwrstate = rf_off; + pwrpriv->bips_processing = _FALSE; +#endif + _exit_pwrlock(&pwrpriv->lock); + + if(check_fwstate(pmlmepriv, _FW_UNDER_SURVEY)) + rtw_indicate_scan_done(padapter, 1); + + if(check_fwstate(pmlmepriv, _FW_UNDER_LINKING)) + rtw_indicate_disconnect(padapter); + +exit: + DBG_871X("<=== %s return %d.............. in %dms\n", __FUNCTION__ + , ret, rtw_get_passing_time_ms(start_time)); + + _func_exit_; + return ret; +} + +static int rtw_resume(struct usb_interface *pusb_intf) +{ + struct dvobj_priv *dvobj = usb_get_intfdata(pusb_intf); + _adapter *padapter = dvobj->if1; + struct net_device *pnetdev = padapter->pnetdev; + struct pwrctrl_priv *pwrpriv = &padapter->pwrctrlpriv; + int ret = 0; + + if(pwrpriv->bInternalAutoSuspend ){ + ret = rtw_resume_process(padapter); + } else { +#ifdef CONFIG_RESUME_IN_WORKQUEUE + rtw_resume_in_workqueue(pwrpriv); +#else + if (rtw_is_earlysuspend_registered(pwrpriv) + #ifdef CONFIG_WOWLAN + && !padapter->pwrctrlpriv.wowlan_mode + #endif /* CONFIG_WOWLAN */ + ) { + /* jeff: bypass resume here, do in late_resume */ + rtw_set_do_late_resume(pwrpriv, _TRUE); + } else { + ret = rtw_resume_process(padapter); + } +#endif /* CONFIG_RESUME_IN_WORKQUEUE */ + } + + return ret; + +} + +int rtw_resume_process(_adapter *padapter) +{ + struct net_device *pnetdev; + struct pwrctrl_priv *pwrpriv; + int ret = -1; + u32 start_time = rtw_get_current_time(); + _func_enter_; + + DBG_871X("==> %s (%s:%d)\n",__FUNCTION__, current->comm, current->pid); + + if(padapter) { + pnetdev= padapter->pnetdev; + pwrpriv = &padapter->pwrctrlpriv; + } else { + goto exit; + } + + _enter_pwrlock(&pwrpriv->lock); + rtw_reset_drv_sw(padapter); + pwrpriv->bkeepfwalive = _FALSE; + + DBG_871X("bkeepfwalive(%x)\n",pwrpriv->bkeepfwalive); + if(pm_netdev_open(pnetdev,_TRUE) != 0) { + _exit_pwrlock(&pwrpriv->lock); + goto exit; + } + + netif_device_attach(pnetdev); + netif_carrier_on(pnetdev); + +#ifdef CONFIG_AUTOSUSPEND + if(pwrpriv->bInternalAutoSuspend ) + { + #ifdef CONFIG_AUTOSUSPEND + #ifdef SUPPORT_HW_RFOFF_DETECTED + // The FW command register update must after MAC and FW init ready. + if((padapter->bFWReady) && ( padapter->pwrctrlpriv.bHWPwrPindetect ) && (padapter->registrypriv.usbss_enable )) + { + //rtl8192c_set_FwSelectSuspend_cmd(padapter,_FALSE ,500);//note fw to support hw power down ping detect + u8 bOpen = _FALSE; + rtw_interface_ps_func(padapter,HAL_USB_SELECT_SUSPEND,&bOpen); + } + #endif + #endif + + pwrpriv->bInternalAutoSuspend = _FALSE; + pwrpriv->brfoffbyhw = _FALSE; + } +#endif + _exit_pwrlock(&pwrpriv->lock); + + if( padapter->pid[1]!=0) { + DBG_871X("pid[1]:%d\n",padapter->pid[1]); + rtw_signal_process(padapter->pid[1], SIGUSR2); + } + + #ifdef CONFIG_LAYER2_ROAMING_RESUME + rtw_roaming(padapter, NULL); + #endif + + ret = 0; +exit: + #ifdef CONFIG_RESUME_IN_WORKQUEUE + rtw_unlock_suspend(); + #endif //CONFIG_RESUME_IN_WORKQUEUE + + pwrpriv->bInSuspend = _FALSE; + DBG_871X("<=== %s return %d.............. in %dms\n", __FUNCTION__ + , ret, rtw_get_passing_time_ms(start_time)); + + _func_exit_; + + return ret; +} + +#ifdef CONFIG_AUTOSUSPEND +void autosuspend_enter(_adapter* padapter) +{ + struct pwrctrl_priv *pwrpriv = &padapter->pwrctrlpriv; + struct dvobj_priv *dvobj = adapter_to_dvobj(padapter); + + pwrpriv->bInternalAutoSuspend = _TRUE; + pwrpriv->bips_processing = _TRUE; + + DBG_871X("==>autosuspend_enter...........\n"); + + if(rf_off == pwrpriv->change_rfpwrstate ) + { + #if (LINUX_VERSION_CODE>=KERNEL_VERSION(2,6,35)) + usb_enable_autosuspend(dvobj->pusbdev); + #else + dvobj->pusbdev->autosuspend_disabled = 0;//autosuspend disabled by the user + #endif + + #if (LINUX_VERSION_CODE>=KERNEL_VERSION(2,6,33)) + usb_autopm_put_interface(dvobj->pusbintf); + #elif (LINUX_VERSION_CODE>=KERNEL_VERSION(2,6,20)) + usb_autopm_enable(dvobj->pusbintf); + #else + usb_autosuspend_device(dvobj->pusbdev, 1); + #endif + } + #if (LINUX_VERSION_CODE>=KERNEL_VERSION(2,6,32)) + DBG_871X("...pm_usage_cnt(%d).....\n", atomic_read(&(dvobj->pusbintf->pm_usage_cnt))); + #else + DBG_871X("...pm_usage_cnt(%d).....\n", dvobj->pusbintf->pm_usage_cnt); + #endif + +} +int autoresume_enter(_adapter* padapter) +{ + int result = _SUCCESS; + struct pwrctrl_priv *pwrpriv = &padapter->pwrctrlpriv; + struct security_priv* psecuritypriv=&(padapter->securitypriv); + struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; + struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info); + struct dvobj_priv *dvobj = adapter_to_dvobj(padapter); + + + DBG_871X("====> autoresume_enter \n"); + + if(rf_off == pwrpriv->rf_pwrstate ) + { + pwrpriv->ps_flag = _FALSE; + #if (LINUX_VERSION_CODE>=KERNEL_VERSION(2,6,33)) + if (usb_autopm_get_interface(dvobj->pusbintf) < 0) + { + DBG_871X( "can't get autopm: %d\n", result); + result = _FAIL; + goto error_exit; + } + #elif (LINUX_VERSION_CODE>=KERNEL_VERSION(2,6,20)) + usb_autopm_disable(dvobj->pusbintf); + #else + usb_autoresume_device(dvobj->pusbdev, 1); + #endif + + #if (LINUX_VERSION_CODE>=KERNEL_VERSION(2,6,32)) + DBG_871X("...pm_usage_cnt(%d).....\n", atomic_read(&(dvobj->pusbintf->pm_usage_cnt))); + #else + DBG_871X("...pm_usage_cnt(%d).....\n", dvobj->pusbintf->pm_usage_cnt); + #endif + } + DBG_871X("<==== autoresume_enter \n"); +error_exit: + + return result; +} +#endif + +#ifdef CONFIG_PLATFORM_RTD2880B +extern void rtd2885_wlan_netlink_sendMsg(char *action_string, char *name); +#endif + +#ifdef CONFIG_PLATFORM_ARM_SUNxI +#include +extern int sw_usb_disable_hcd(__u32 usbc_no); +extern int sw_usb_enable_hcd(__u32 usbc_no); +static int usb_wifi_host = 2; +#endif + +#ifdef CONFIG_PLATFORM_ARM_SUN6I +#include +extern int sw_usb_disable_hcd(__u32 usbc_no); +extern int sw_usb_enable_hcd(__u32 usbc_no); +extern void wifi_pm_power(int on); +static script_item_u item; +#endif + +_adapter *rtw_usb_if1_init(struct dvobj_priv *dvobj, + struct usb_interface *pusb_intf, const struct usb_device_id *pdid) +{ + _adapter *padapter = NULL; + struct net_device *pnetdev = NULL; + int status = _FAIL; + + if ((padapter = (_adapter *)rtw_zvmalloc(sizeof(*padapter))) == NULL) { + goto exit; + } + padapter->dvobj = dvobj; + dvobj->if1 = padapter; + + padapter->bDriverStopped=_TRUE; + + dvobj->padapters[dvobj->iface_nums++] = padapter; + padapter->iface_id = IFACE_ID0; + +#if defined(CONFIG_CONCURRENT_MODE) || defined(CONFIG_DUALMAC_CONCURRENT) + //set adapter_type/iface type for primary padapter + padapter->isprimary = _TRUE; + padapter->adapter_type = PRIMARY_ADAPTER; + #ifndef CONFIG_HWPORT_SWAP + padapter->iface_type = IFACE_PORT0; + #else + padapter->iface_type = IFACE_PORT1; + #endif +#endif + + #ifndef RTW_DVOBJ_CHIP_HW_TYPE + //step 1-1., decide the chip_type via vid/pid + padapter->interface_type = RTW_USB; + decide_chip_type_by_usb_device_id(padapter, pdid); + #endif + + if((pnetdev = rtw_init_netdev(padapter)) == NULL) { + goto free_adapter; + } + SET_NETDEV_DEV(pnetdev, dvobj_to_dev(dvobj)); + padapter = rtw_netdev_priv(pnetdev); + + //step 2. hook HalFunc, allocate HalData + if(padapter->chip_type == RTL8188C_8192C) { + #ifdef CONFIG_RTL8192C + rtl8192cu_set_hal_ops(padapter); + #endif + } else if(padapter->chip_type == RTL8192D) { + #ifdef CONFIG_RTL8192D + rtl8192du_set_hal_ops(padapter); + #endif + } else { + DBG_871X("Detect NULL_CHIP_TYPE\n"); + goto free_hal_data; + } + + //step 3. + padapter->intf_start=&usb_intf_start; + padapter->intf_stop=&usb_intf_stop; + + //.2 + if ((rtw_init_io_priv(padapter, usb_set_intf_ops)) == _FAIL) { + RT_TRACE(_module_hci_intfs_c_,_drv_err_,(" \n Can't init io_reqs\n")); + goto free_hal_data; + } + + rtw_hal_read_chip_version(padapter); + + //.4 usb endpoint mapping + rtw_hal_chip_configure(padapter); + + //step 4. read efuse/eeprom data and get mac_addr + rtw_hal_read_chip_info(padapter); + + if (rtw_handle_dualmac(padapter, 1) != _SUCCESS) + goto free_hal_data; + +#ifdef CONFIG_IOCTL_CFG80211 + if(rtw_wdev_alloc(padapter, dvobj_to_dev(dvobj)) != 0) { + goto handle_dualmac; + } +#endif + + //step 5. + if (rtw_init_drv_sw(padapter) == _FAIL) { + RT_TRACE(_module_hci_intfs_c_,_drv_err_,("Initialize driver software resource Failed!\n")); + goto free_wdev; + } + +#ifdef CONFIG_PM +#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,18)) + if(padapter->pwrctrlpriv.bSupportRemoteWakeup) + { + dvobj->pusbdev->do_remote_wakeup=1; + pusb_intf->needs_remote_wakeup = 1; + device_init_wakeup(&pusb_intf->dev, 1); + DBG_871X("\n padapter->pwrctrlpriv.bSupportRemoteWakeup~~~~~~\n"); + DBG_871X("\n padapter->pwrctrlpriv.bSupportRemoteWakeup~~~[%d]~~~\n",device_may_wakeup(&pusb_intf->dev)); + } +#endif +#endif + +#ifdef CONFIG_AUTOSUSPEND + if( padapter->registrypriv.power_mgnt != PS_MODE_ACTIVE ) + { + if(padapter->registrypriv.usbss_enable ){ /* autosuspend (2s delay) */ + #if (LINUX_VERSION_CODE>=KERNEL_VERSION(2,6,38)) + dvobj->pusbdev->dev.power.autosuspend_delay = 0 * HZ;//15 * HZ; idle-delay time + #else + dvobj->pusbdev->autosuspend_delay = 0 * HZ;//15 * HZ; idle-delay time + #endif + + #if (LINUX_VERSION_CODE>=KERNEL_VERSION(2,6,35)) + usb_enable_autosuspend(dvobj->pusbdev); + #elif (LINUX_VERSION_CODE>=KERNEL_VERSION(2,6,22) && LINUX_VERSION_CODE<=KERNEL_VERSION(2,6,34)) + padapter->bDisableAutosuspend = dvobj->pusbdev->autosuspend_disabled ; + dvobj->pusbdev->autosuspend_disabled = 0;//autosuspend disabled by the user + #endif + + usb_autopm_get_interface(dvobj->pusbintf );//init pm_usage_cnt ,let it start from 1 + + #if (LINUX_VERSION_CODE>=KERNEL_VERSION(2,6,32)) + DBG_871X("%s...pm_usage_cnt(%d).....\n",__FUNCTION__, atomic_read(&(dvobj->pusbintf ->pm_usage_cnt))); + #else + DBG_871X("%s...pm_usage_cnt(%d).....\n",__FUNCTION__, dvobj->pusbintf ->pm_usage_cnt); + #endif + } + } +#endif + + // set mac addr + rtw_macaddr_cfg(padapter->eeprompriv.mac_addr); + rtw_init_wifidirect_addrs(padapter, padapter->eeprompriv.mac_addr, padapter->eeprompriv.mac_addr); + + DBG_871X("bDriverStopped:%d, bSurpriseRemoved:%d, bup:%d, hw_init_completed:%d\n" + ,padapter->bDriverStopped + ,padapter->bSurpriseRemoved + ,padapter->bup + ,padapter->hw_init_completed + ); + + status = _SUCCESS; + +free_wdev: + if(status != _SUCCESS) { + #ifdef CONFIG_IOCTL_CFG80211 + rtw_wdev_unregister(padapter->rtw_wdev); + rtw_wdev_free(padapter->rtw_wdev); + #endif + } +handle_dualmac: + if (status != _SUCCESS) + rtw_handle_dualmac(padapter, 0); +free_hal_data: + if(status != _SUCCESS && padapter->HalData) + rtw_mfree(padapter->HalData, sizeof(*(padapter->HalData))); +free_adapter: + if (status != _SUCCESS) { + if (pnetdev) + rtw_free_netdev(pnetdev); + else if (padapter) + rtw_vmfree((u8*)padapter, sizeof(*padapter)); + padapter = NULL; + } +exit: + return padapter; +} + +static void rtw_usb_if1_deinit(_adapter *if1) +{ + struct net_device *pnetdev = if1->pnetdev; + struct mlme_priv *pmlmepriv= &if1->mlmepriv; + + if(check_fwstate(pmlmepriv, _FW_LINKED)) + rtw_disassoc_cmd(if1, 0, _FALSE); + +#ifdef CONFIG_AP_MODE + free_mlme_ap_info(if1); + #ifdef CONFIG_HOSTAPD_MLME + hostapd_mode_unload(if1); + #endif +#endif + + rtw_cancel_all_timer(if1); +#ifdef CONFIG_WOWLAN + if1->pwrctrlpriv.wowlan_mode=_FALSE; +#endif //CONFIG_WOWLAN + rtw_dev_unload(if1); + + DBG_871X("%s, hw_init_completed=%d\n", __func__, if1->hw_init_completed); + + //s6. + rtw_handle_dualmac(if1, 0); + +#ifdef CONFIG_IOCTL_CFG80211 + if (if1->rtw_wdev) + rtw_wdev_free(if1->rtw_wdev); +#endif //CONFIG_IOCTL_CFG80211 + + rtw_free_drv_sw(if1); + + if(pnetdev) + rtw_free_netdev(pnetdev); + +#ifdef CONFIG_PLATFORM_RTD2880B + DBG_871X("wlan link down\n"); + rtd2885_wlan_netlink_sendMsg("linkdown", "8712"); +#endif + +} + +/* + * drv_init() - a device potentially for us + * + * notes: drv_init() is called when the bus driver has located a card for us to support. + * We accept the new device by returning 0. +*/ + +_adapter *rtw_sw_export = NULL; + +static int rtw_drv_init(struct usb_interface *pusb_intf, const struct usb_device_id *did) +{ + int i; + uint status = _FAIL; + _adapter *if1 = NULL, *if2 = NULL; + struct dvobj_priv *dvobj = NULL; + + + RT_TRACE(_module_hci_intfs_c_, _drv_err_, ("+rtw_drv_init\n")); + + + //step 0. + process_spec_devid(did); + + /* Initialize dvobj_priv */ + if ((dvobj = usb_dvobj_init(pusb_intf)) == NULL) { + RT_TRACE(_module_hci_intfs_c_, _drv_err_, ("initialize device object priv Failed!\n")); + goto exit; + } + + /* Initialize if1 */ + if ((if1 = rtw_usb_if1_init(dvobj, pusb_intf, did)) == NULL) { + DBG_871X("rtw_usb_if1_init Failed!\n"); + goto free_dvobj; + } + + /* Initialize if2 */ +#ifdef CONFIG_CONCURRENT_MODE + if((if2 = rtw_drv_if2_init(if1, usb_set_intf_ops)) == NULL) { + goto free_if1; + } +#ifdef CONFIG_MULTI_VIR_IFACES + for(i=0; iregistrypriv.ext_iface_num;i++) + { + if(rtw_drv_add_vir_if(if1, usb_set_intf_ops) == NULL) + { + DBG_871X("rtw_drv_add_iface failed! (%d)\n", i); + goto free_if1; + } + } +#endif //CONFIG_MULTI_VIR_IFACES +#endif + +#ifdef CONFIG_INTEL_PROXIM + rtw_sw_export=if1; +#endif + +#ifdef CONFIG_GLOBAL_UI_PID + if (ui_pid[1]!=0) { + DBG_871X("ui_pid[1]:%d\n",ui_pid[1]); + rtw_signal_process(ui_pid[1], SIGUSR2); + } +#endif + + //dev_alloc_name && register_netdev + if((status = rtw_drv_register_netdev(if1)) != _SUCCESS) { + goto free_if1; + } + +#ifdef CONFIG_HOSTAPD_MLME + hostapd_mode_init(if1); +#endif + +#ifdef CONFIG_PLATFORM_RTD2880B + DBG_871X("wlan link up\n"); + rtd2885_wlan_netlink_sendMsg("linkup", "8712"); +#endif + +#ifdef RTK_DMP_PLATFORM + rtw_proc_init_one(if1->pnetdev); +#endif + + RT_TRACE(_module_hci_intfs_c_,_drv_err_,("-871x_drv - drv_init, success!\n")); + + status = _SUCCESS; + +free_if1: + if (status != _SUCCESS && if1) { + rtw_usb_if1_deinit(if1); + } +free_dvobj: + if (status != _SUCCESS) + usb_dvobj_deinit(pusb_intf); +exit: + return status == _SUCCESS?0:-ENODEV; +} + +/* + * dev_remove() - our device is being removed +*/ +//rmmod module & unplug(SurpriseRemoved) will call r871xu_dev_remove() => how to recognize both +static void rtw_dev_remove(struct usb_interface *pusb_intf) +{ + struct dvobj_priv *dvobj = usb_get_intfdata(pusb_intf); + _adapter *padapter = dvobj->if1; + +_func_exit_; + + DBG_871X("+rtw_dev_remove\n"); + RT_TRACE(_module_hci_intfs_c_,_drv_err_,("+dev_remove()\n")); + + dvobj->processing_dev_remove = _TRUE; + + rtw_unregister_netdevs(dvobj); + + if(usb_drv->drv_registered == _TRUE) + { + //DBG_871X("r871xu_dev_remove():padapter->bSurpriseRemoved == _TRUE\n"); + padapter->bSurpriseRemoved = _TRUE; + } + /*else + { + //DBG_871X("r871xu_dev_remove():module removed\n"); + padapter->hw_init_completed = _FALSE; + }*/ + +#if defined(CONFIG_HAS_EARLYSUSPEND) || defined(CONFIG_ANDROID_POWER) + rtw_unregister_early_suspend(&padapter->pwrctrlpriv); +#endif + + rtw_pm_set_ips(padapter, IPS_NONE); + rtw_pm_set_lps(padapter, PS_MODE_ACTIVE); + + LeaveAllPowerSaveMode(padapter); + +#ifdef CONFIG_CONCURRENT_MODE +#ifdef CONFIG_MULTI_VIR_IFACES + rtw_drv_stop_vir_ifaces(dvobj); +#endif //CONFIG_MULTI_VIR_IFACES + rtw_drv_if2_stop(dvobj->if2); +#endif //CONFIG_CONCURRENT_MODE + + rtw_usb_if1_deinit(padapter); + +#ifdef CONFIG_CONCURRENT_MODE +#ifdef CONFIG_MULTI_VIR_IFACES + rtw_drv_free_vir_ifaces(dvobj); +#endif //CONFIG_MULTI_VIR_IFACES + rtw_drv_if2_free(dvobj->if2); +#endif //CONFIG_CONCURRENT_MODE + + usb_dvobj_deinit(pusb_intf); + + RT_TRACE(_module_hci_intfs_c_,_drv_err_,("-dev_remove()\n")); + DBG_871X("-r871xu_dev_remove, done\n"); + + +#ifdef CONFIG_INTEL_PROXIM + rtw_sw_export=NULL; +#endif + +_func_exit_; + + return; + +} +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,24)) +extern int console_suspend_enabled; +#endif + +static int __init rtw_drv_entry(void) +{ +#ifdef CONFIG_PLATFORM_RTK_DMP + u32 tmp; + tmp=readl((volatile unsigned int*)0xb801a608); + tmp &= 0xffffff00; + tmp |= 0x55; + writel(tmp,(volatile unsigned int*)0xb801a608);//write dummy register for 1055 +#endif +#ifdef CONFIG_PLATFORM_ARM_SUNxI +#ifndef CONFIG_RTL8723A + int ret = 0; + /* ----------get usb_wifi_usbc_num------------- */ + ret = script_parser_fetch("usb_wifi_para", "usb_wifi_usbc_num", (int *)&usb_wifi_host, 64); + if(ret != 0){ + printk("ERR: script_parser_fetch usb_wifi_usbc_num failed\n"); + ret = -ENOMEM; + return ret; + } + printk("sw_usb_enable_hcd: usbc_num = %d\n", usb_wifi_host); + sw_usb_enable_hcd(usb_wifi_host); +#endif //CONFIG_RTL8723A +#endif //CONFIG_PLATFORM_ARM_SUNxI + +#ifdef CONFIG_PLATFORM_ARM_SUN6I + script_item_value_type_e type; + + type = script_get_item("wifi_para", "wifi_usbc_id", &item); + if(SCIRPT_ITEM_VALUE_TYPE_INT != type){ + printk("ERR: script_get_item wifi_usbc_id failed\n"); + return -ENOMEM; + } + + printk("sw_usb_enable_hcd: usbc_num = %d\n", item.val); + wifi_pm_power(1); + mdelay(10); + sw_usb_enable_hcd(item.val); +#endif //CONFIG_PLATFORM_ARM_SUN6I + + RT_TRACE(_module_hci_intfs_c_,_drv_err_,("+rtw_drv_entry\n")); + + DBG_871X(DRV_NAME " driver version=%s\n", DRIVERVERSION); + DBG_871X("build time: %s %s\n", __DATE__, __TIME__); + +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,24)) + //console_suspend_enabled=0; +#endif + + rtw_suspend_lock_init(); + + usb_drv->drv_registered = _TRUE; + return usb_register(&usb_drv->usbdrv); +} + +static void __exit rtw_drv_halt(void) +{ + RT_TRACE(_module_hci_intfs_c_,_drv_err_,("+rtw_drv_halt\n")); + DBG_871X("+rtw_drv_halt\n"); + + usb_drv->drv_registered = _FALSE; + usb_deregister(&usb_drv->usbdrv); + +#ifdef CONFIG_PLATFORM_ARM_SUNxI +#ifndef CONFIG_RTL8723A + printk("sw_usb_disable_hcd: usbc_num = %d\n", usb_wifi_host); + sw_usb_disable_hcd(usb_wifi_host); +#endif //ifndef CONFIG_RTL8723A +#endif //CONFIG_PLATFORM_ARM_SUNxI +#ifdef CONFIG_PLATFORM_ARM_SUN6I + sw_usb_disable_hcd(item.val); + wifi_pm_power(0); +#endif + + rtw_suspend_lock_uninit(); + DBG_871X("-rtw_drv_halt\n"); + + rtw_mstat_dump(); +} + + +module_init(rtw_drv_entry); +module_exit(rtw_drv_halt); + +#ifdef CONFIG_WOWLAN +#ifdef CONFIG_WOWLAN_MANUAL + +int rtw_resume_toshiba(PADAPTER Adapter) +{ + struct dvobj_priv *pdvobjpriv; + pdvobjpriv = adapter_to_dvobj(Adapter); + + rtw_resume(pdvobjpriv->pusbintf); + return 0; +} + +int rtw_suspend_toshiba(PADAPTER Adapter) +{ + pm_message_t msg; + struct dvobj_priv *pdvobjpriv; + pdvobjpriv = adapter_to_dvobj(Adapter); + msg.event=0; + //for Toshiba only, they should call rtw_suspend before suspend + rtw_suspend(pdvobjpriv->pusbintf, msg); + return 0; +} +EXPORT_SYMBOL(rtw_suspend_toshiba); +EXPORT_SYMBOL(rtw_resume_toshiba); +#endif //CONFIG_WOWLAN_MANUAL +#endif //CONFIG_WOWLAN + +#ifdef CONFIG_INTEL_PROXIM +_adapter *rtw_usb_get_sw_pointer(void) +{ + return rtw_sw_export; +} +EXPORT_SYMBOL(rtw_usb_get_sw_pointer); +#endif //CONFIG_INTEL_PROXIM --- linux-raspi2-4.2.0.orig/drivers/net/wireless/rtl8192cu/os_dep/linux/usb_ops_linux.c +++ linux-raspi2-4.2.0/drivers/net/wireless/rtl8192cu/os_dep/linux/usb_ops_linux.c @@ -0,0 +1,648 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2012 Realtek Corporation. All rights reserved. + * + * 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 + * published by the Free Software Foundation. + * + * 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 Street, Fifth Floor, Boston, MA 02110, USA + * + *******************************************************************************/ +#define _USB_OPS_LINUX_C_ + +#include +#include +#include + +#ifdef CONFIG_USB_SUPPORT_ASYNC_VDN_REQ +static void _usbctrl_vendorreq_async_callback(struct urb *urb, struct pt_regs *regs) +{ + if (urb) { + if (urb->context) { + rtw_mfree(urb->context); + } + usb_free_urb(urb); + } +} + +static int _usbctrl_vendorreq_async_write(struct usb_device *udev, u8 request, + u16 value, u16 index, void *pdata, u16 len, u8 requesttype) +{ + int rc; + unsigned int pipe; + u8 reqtype; + struct usb_ctrlrequest *dr; + struct urb *urb; + struct rtl819x_async_write_data { + u8 data[VENDOR_CMD_MAX_DATA_LEN]; + struct usb_ctrlrequest dr; + } *buf; + + + if (requesttype == VENDOR_READ) { + pipe = usb_rcvctrlpipe(udev, 0);//read_in + reqtype = REALTEK_USB_VENQT_READ; + } + else { + pipe = usb_sndctrlpipe(udev, 0);//write_out + reqtype = REALTEK_USB_VENQT_WRITE; + } + + buf = (struct rtl819x_async_write_data *)rtw_zmalloc(sizeof(*buf)); + if (!buf) { + rc = -ENOMEM; + goto exit; + } + + urb = usb_alloc_urb(0, GFP_ATOMIC); + if (!urb) { + rtw_mfree((u8*)buf, sizeof(*buf)); + rc = -ENOMEM; + goto exit; + } + + dr = &buf->dr; + + dr->bRequestType = reqtype; + dr->bRequest = request; + dr->wValue = cpu_to_le16(value); + dr->wIndex = cpu_to_le16(index); + dr->wLength = cpu_to_le16(len); + + _rtw_memcpy(buf, pdata, len); + + usb_fill_control_urb(urb, udev, pipe, (unsigned char *)dr, buf, len, + _usbctrl_vendorreq_async_callback, buf); + + rc = usb_submit_urb(urb, GFP_ATOMIC); + if (rc < 0) { + rtw_mfree((u8*)buf, sizeof(*buf)); + usb_free_urb(urb); + } + +exit: + return rc; +} + +int usb_write_async(struct usb_device *udev, u32 addr, void *pdata, u16 len) +{ + u8 request; + u8 requesttype; + u16 wvalue; + u16 index; + + int ret; + + requesttype = VENDOR_WRITE;//write_out + request = REALTEK_USB_VENQT_CMD_REQ; + index = REALTEK_USB_VENQT_CMD_IDX;//n/a + + wvalue = (u16)(addr&0x0000ffff); + + ret = _usbctrl_vendorreq_async_write(udev, request, wvalue, index, pdata, len, requesttype); + + return ret; +} + +int usb_async_write8(struct intf_hdl *pintfhdl, u32 addr, u8 val) +{ + u8 data; + int ret; + struct dvobj_priv *pdvobjpriv = (struct dvobj_priv *)pintfhdl->pintf_dev; + struct usb_device *udev=pdvobjpriv->pusbdev; + + _func_enter_; + data = val; + ret = usb_write_async(udev, addr, &data, 1); + _func_exit_; + + return ret; +} + +int usb_async_write16(struct intf_hdl *pintfhdl, u32 addr, u16 val) +{ + u16 data; + int ret; + struct dvobj_priv *pdvobjpriv = (struct dvobj_priv *)pintfhdl->pintf_dev; + struct usb_device *udev=pdvobjpriv->pusbdev; + + _func_enter_; + data = val; + ret = usb_write_async(udev, addr, &data, 2); + _func_exit_; + + return ret; +} + +int usb_async_write32(struct intf_hdl *pintfhdl, u32 addr, u32 val) +{ + u32 data; + int ret; + struct dvobj_priv *pdvobjpriv = (struct dvobj_priv *)pintfhdl->pintf_dev; + struct usb_device *udev=pdvobjpriv->pusbdev; + + _func_enter_; + data = val; + ret = usb_write_async(udev, addr, &data, 4); + _func_exit_; + + return ret; +} +#endif /* CONFIG_USB_SUPPORT_ASYNC_VDN_REQ */ + +unsigned int ffaddr2pipehdl(struct dvobj_priv *pdvobj, u32 addr) +{ + unsigned int pipe=0; + int ep_num=0; + _adapter *padapter = pdvobj->if1; + struct usb_device *pusbd = pdvobj->pusbdev; + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(padapter); + + if (addr == RECV_BULK_IN_ADDR) { + pipe=usb_rcvbulkpipe(pusbd, pHalData->RtBulkInPipe); + + } else if (addr == RECV_INT_IN_ADDR) { + pipe=usb_rcvbulkpipe(pusbd, pHalData->RtIntInPipe); + + } else if (addr < HW_QUEUE_ENTRY) { + ep_num = pHalData->Queue2EPNum[addr]; + pipe = usb_sndbulkpipe(pusbd, ep_num); + } + + return pipe; +} + +struct zero_bulkout_context{ + void *pbuf; + void *purb; + void *pirp; + void *padapter; +}; + +static void usb_bulkout_zero_complete(struct urb *purb, struct pt_regs *regs) +{ + struct zero_bulkout_context *pcontext = (struct zero_bulkout_context *)purb->context; + + //DBG_8192C("+usb_bulkout_zero_complete\n"); + + if(pcontext) + { + if(pcontext->pbuf) + { + rtw_mfree(pcontext->pbuf, sizeof(int)); + } + + if(pcontext->purb && (pcontext->purb==purb)) + { + usb_free_urb(pcontext->purb); + } + + + rtw_mfree((u8*)pcontext, sizeof(struct zero_bulkout_context)); + } + + +} + +static u32 usb_bulkout_zero(struct intf_hdl *pintfhdl, u32 addr) +{ + int pipe, status, len; + u32 ret; + unsigned char *pbuf; + struct zero_bulkout_context *pcontext; + PURB purb = NULL; + _adapter *padapter = (_adapter *)pintfhdl->padapter; + struct dvobj_priv *pdvobj = adapter_to_dvobj(padapter); + struct usb_device *pusbd = pdvobj->pusbdev; + + //DBG_871X("%s\n", __func__); + + + if((padapter->bDriverStopped) || (padapter->bSurpriseRemoved) ||(padapter->pwrctrlpriv.pnp_bstop_trx)) + { + return _FAIL; + } + + + pcontext = (struct zero_bulkout_context *)rtw_zmalloc(sizeof(struct zero_bulkout_context)); + + pbuf = (unsigned char *)rtw_zmalloc(sizeof(int)); + purb = usb_alloc_urb(0, GFP_ATOMIC); + + len = 0; + pcontext->pbuf = pbuf; + pcontext->purb = purb; + pcontext->pirp = NULL; + pcontext->padapter = padapter; + + + //translate DMA FIFO addr to pipehandle + //pipe = ffaddr2pipehdl(pdvobj, addr); + + usb_fill_bulk_urb(purb, pusbd, pipe, + pbuf, + len, + usb_bulkout_zero_complete, + pcontext);//context is pcontext + + status = usb_submit_urb(purb, GFP_ATOMIC); + + if (!status) + { + ret= _SUCCESS; + } + else + { + ret= _FAIL; + } + + + return _SUCCESS; + +} + +void usb_read_mem(struct intf_hdl *pintfhdl, u32 addr, u32 cnt, u8 *rmem) +{ + +} + +void usb_write_mem(struct intf_hdl *pintfhdl, u32 addr, u32 cnt, u8 *wmem) +{ + +} + + +void usb_read_port_cancel(struct intf_hdl *pintfhdl) +{ + int i; + struct recv_buf *precvbuf; + _adapter *padapter = pintfhdl->padapter; + precvbuf = (struct recv_buf *)padapter->recvpriv.precv_buf; + + DBG_871X("%s\n", __func__); + + padapter->bReadPortCancel = _TRUE; + + for (i=0; i < NR_RECVBUFF ; i++) { + + precvbuf->reuse = _TRUE; + if (precvbuf->purb) { + //DBG_8192C("usb_read_port_cancel : usb_kill_urb \n"); + usb_kill_urb(precvbuf->purb); + } + precvbuf++; + } + +#ifdef CONFIG_USB_INTERRUPT_IN_PIPE + usb_kill_urb(padapter->recvpriv.int_in_urb); +#endif +} + +static void usb_write_port_complete(struct urb *purb, struct pt_regs *regs) +{ + _irqL irqL; + int i; + struct xmit_buf *pxmitbuf = (struct xmit_buf *)purb->context; + //struct xmit_frame *pxmitframe = (struct xmit_frame *)pxmitbuf->priv_data; + //_adapter *padapter = pxmitframe->padapter; + _adapter *padapter = pxmitbuf->padapter; + struct xmit_priv *pxmitpriv = &padapter->xmitpriv; + //struct pkt_attrib *pattrib = &pxmitframe->attrib; + +_func_enter_; + + switch(pxmitbuf->flags) + { + case VO_QUEUE_INX: + pxmitpriv->voq_cnt--; + break; + case VI_QUEUE_INX: + pxmitpriv->viq_cnt--; + break; + case BE_QUEUE_INX: + pxmitpriv->beq_cnt--; + break; + case BK_QUEUE_INX: + pxmitpriv->bkq_cnt--; + break; + case HIGH_QUEUE_INX: +#ifdef CONFIG_AP_MODE + rtw_chk_hi_queue_cmd(padapter); +#endif + break; + default: + break; + } + + +/* + _enter_critical(&pxmitpriv->lock, &irqL); + + pxmitpriv->txirp_cnt--; + + switch(pattrib->priority) + { + case 1: + case 2: + pxmitpriv->bkq_cnt--; + //DBG_8192C("pxmitpriv->bkq_cnt=%d\n", pxmitpriv->bkq_cnt); + break; + case 4: + case 5: + pxmitpriv->viq_cnt--; + //DBG_8192C("pxmitpriv->viq_cnt=%d\n", pxmitpriv->viq_cnt); + break; + case 6: + case 7: + pxmitpriv->voq_cnt--; + //DBG_8192C("pxmitpriv->voq_cnt=%d\n", pxmitpriv->voq_cnt); + break; + case 0: + case 3: + default: + pxmitpriv->beq_cnt--; + //DBG_8192C("pxmitpriv->beq_cnt=%d\n", pxmitpriv->beq_cnt); + break; + + } + + _exit_critical(&pxmitpriv->lock, &irqL); + + + if(pxmitpriv->txirp_cnt==0) + { + RT_TRACE(_module_hci_ops_os_c_,_drv_err_,("usb_write_port_complete: txirp_cnt== 0, set allrxreturnevt!\n")); + _rtw_up_sema(&(pxmitpriv->tx_retevt)); + } +*/ + //rtw_free_xmitframe(pxmitpriv, pxmitframe); + + if(padapter->bSurpriseRemoved || padapter->bDriverStopped ||padapter->bWritePortCancel) + { + RT_TRACE(_module_hci_ops_os_c_,_drv_err_,("usb_write_port_complete:bDriverStopped(%d) OR bSurpriseRemoved(%d)", padapter->bDriverStopped, padapter->bSurpriseRemoved)); + DBG_8192C("%s(): TX Warning! bDriverStopped(%d) OR bSurpriseRemoved(%d) bWritePortCancel(%d) pxmitbuf->ext_tag(%x) \n", + __FUNCTION__,padapter->bDriverStopped, padapter->bSurpriseRemoved,padapter->bReadPortCancel,pxmitbuf->ext_tag); + + goto check_completion; + } + + + if (purb->status==0) { + + } else { + RT_TRACE(_module_hci_ops_os_c_,_drv_err_,("usb_write_port_complete : purb->status(%d) != 0 \n", purb->status)); + DBG_871X("###=> urb_write_port_complete status(%d)\n",purb->status); + if((purb->status==-EPIPE)||(purb->status==-EPROTO)) + { + //usb_clear_halt(pusbdev, purb->pipe); + //msleep(10); + sreset_set_wifi_error_status(padapter, USB_WRITE_PORT_FAIL); + } else if (purb->status == -EINPROGRESS) { + RT_TRACE(_module_hci_ops_os_c_,_drv_err_,("usb_write_port_complete: EINPROGESS\n")); + goto check_completion; + + } else if (purb->status == -ENOENT) { + DBG_871X("%s: -ENOENT\n", __func__); + goto check_completion; + + } else if (purb->status == -ECONNRESET) { + DBG_871X("%s: -ECONNRESET\n", __func__); + goto check_completion; + + } else if (purb->status == -ESHUTDOWN) { + RT_TRACE(_module_hci_ops_os_c_,_drv_err_,("usb_write_port_complete: ESHUTDOWN\n")); + padapter->bDriverStopped=_TRUE; + RT_TRACE(_module_hci_ops_os_c_,_drv_err_,("usb_write_port_complete:bDriverStopped=TRUE\n")); + + goto check_completion; + } + else + { + padapter->bSurpriseRemoved=_TRUE; + DBG_8192C("bSurpriseRemoved=TRUE\n"); + //rtl8192cu_trigger_gpio_0(padapter); + RT_TRACE(_module_hci_ops_os_c_,_drv_err_,("usb_write_port_complete:bSurpriseRemoved=TRUE\n")); + + goto check_completion; + } + } + + #ifdef DBG_CONFIG_ERROR_DETECT + { + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(padapter); + pHalData->srestpriv.last_tx_complete_time = rtw_get_current_time(); + } + #endif + +check_completion: + _enter_critical(&pxmitpriv->lock_sctx, &irqL); + rtw_sctx_done_err(&pxmitbuf->sctx, + purb->status ? RTW_SCTX_DONE_WRITE_PORT_ERR : RTW_SCTX_DONE_SUCCESS); + _exit_critical(&pxmitpriv->lock_sctx, &irqL); + + rtw_free_xmitbuf(pxmitpriv, pxmitbuf); + + //if(rtw_txframes_pending(padapter)) + { + tasklet_hi_schedule(&pxmitpriv->xmit_tasklet); + } + +_func_exit_; + +} + +u32 usb_write_port(struct intf_hdl *pintfhdl, u32 addr, u32 cnt, u8 *wmem) +{ + _irqL irqL; + unsigned int pipe; + int status; + u32 ret = _FAIL, bwritezero = _FALSE; + PURB purb = NULL; + _adapter *padapter = (_adapter *)pintfhdl->padapter; + struct dvobj_priv *pdvobj = adapter_to_dvobj(padapter); + struct xmit_priv *pxmitpriv = &padapter->xmitpriv; + struct xmit_buf *pxmitbuf = (struct xmit_buf *)wmem; + struct xmit_frame *pxmitframe = (struct xmit_frame *)pxmitbuf->priv_data; + struct usb_device *pusbd = pdvobj->pusbdev; + struct pkt_attrib *pattrib = &pxmitframe->attrib; + +_func_enter_; + + RT_TRACE(_module_hci_ops_os_c_,_drv_err_,("+usb_write_port\n")); + + if ((padapter->bDriverStopped) || (padapter->bSurpriseRemoved) ||(padapter->pwrctrlpriv.pnp_bstop_trx)) { + #ifdef DBG_TX + DBG_871X(" DBG_TX %s:%d bDriverStopped%d, bSurpriseRemoved:%d, pnp_bstop_trx:%d\n",__FUNCTION__, __LINE__ + ,padapter->bDriverStopped, padapter->bSurpriseRemoved, padapter->pwrctrlpriv.pnp_bstop_trx ); + #endif + RT_TRACE(_module_hci_ops_os_c_,_drv_err_,("usb_write_port:( padapter->bDriverStopped ||padapter->bSurpriseRemoved ||adapter->pwrctrlpriv.pnp_bstop_trx)!!!\n")); + rtw_sctx_done_err(&pxmitbuf->sctx, RTW_SCTX_DONE_TX_DENY); + goto exit; + } + + _enter_critical(&pxmitpriv->lock, &irqL); + + switch(addr) + { + case VO_QUEUE_INX: + pxmitpriv->voq_cnt++; + pxmitbuf->flags = VO_QUEUE_INX; + break; + case VI_QUEUE_INX: + pxmitpriv->viq_cnt++; + pxmitbuf->flags = VI_QUEUE_INX; + break; + case BE_QUEUE_INX: + pxmitpriv->beq_cnt++; + pxmitbuf->flags = BE_QUEUE_INX; + break; + case BK_QUEUE_INX: + pxmitpriv->bkq_cnt++; + pxmitbuf->flags = BK_QUEUE_INX; + break; + case HIGH_QUEUE_INX: + pxmitbuf->flags = HIGH_QUEUE_INX; + break; + default: + pxmitbuf->flags = MGT_QUEUE_INX; + break; + } + + _exit_critical(&pxmitpriv->lock, &irqL); + + purb = pxmitbuf->pxmit_urb[0]; + +#if 0 + if(pdvobj->ishighspeed) + { + if(cnt> 0 && cnt%512 == 0) + { + //DBG_8192C("ishighspeed, cnt=%d\n", cnt); + bwritezero = _TRUE; + } + } + else + { + if(cnt > 0 && cnt%64 == 0) + { + //DBG_8192C("cnt=%d\n", cnt); + bwritezero = _TRUE; + } + } +#endif + + //translate DMA FIFO addr to pipehandle + pipe = ffaddr2pipehdl(pdvobj, addr); + +#ifdef CONFIG_REDUCE_USB_TX_INT + if ( (pxmitpriv->free_xmitbuf_cnt%NR_XMITBUFF == 0) + || (pxmitbuf->ext_tag == _TRUE) ) + { + purb->transfer_flags &= (~URB_NO_INTERRUPT); + } else { + purb->transfer_flags |= URB_NO_INTERRUPT; + //DBG_8192C("URB_NO_INTERRUPT "); + } +#endif + + + usb_fill_bulk_urb(purb, pusbd, pipe, + pxmitframe->buf_addr, //= pxmitbuf->pbuf + cnt, + usb_write_port_complete, + pxmitbuf);//context is pxmitbuf + +#ifdef CONFIG_USE_USB_BUFFER_ALLOC_TX + purb->transfer_dma = pxmitbuf->dma_transfer_addr; + purb->transfer_flags |= URB_NO_TRANSFER_DMA_MAP; + purb->transfer_flags |= URB_ZERO_PACKET; +#endif // CONFIG_USE_USB_BUFFER_ALLOC_TX + +#if 0 + if (bwritezero) + { + purb->transfer_flags |= URB_ZERO_PACKET; + } +#endif + + status = usb_submit_urb(purb, GFP_ATOMIC); + if (!status) { + #ifdef DBG_CONFIG_ERROR_DETECT + { + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(padapter); + pHalData->srestpriv.last_tx_time = rtw_get_current_time(); + } + #endif + } else { + rtw_sctx_done_err(&pxmitbuf->sctx, RTW_SCTX_DONE_WRITE_PORT_ERR); + DBG_871X("usb_write_port, status=%d\n", status); + RT_TRACE(_module_hci_ops_os_c_,_drv_err_,("usb_write_port(): usb_submit_urb, status=%x\n", status)); + + switch (status) { + case -ENODEV: + padapter->bDriverStopped=_TRUE; + break; + default: + break; + } + goto exit; + } + + ret= _SUCCESS; + +// Commented by Albert 2009/10/13 +// We add the URB_ZERO_PACKET flag to urb so that the host will send the zero packet automatically. +/* + if(bwritezero == _TRUE) + { + usb_bulkout_zero(pintfhdl, addr); + } +*/ + + RT_TRACE(_module_hci_ops_os_c_,_drv_err_,("-usb_write_port\n")); + +exit: + if (ret != _SUCCESS) + rtw_free_xmitbuf(pxmitpriv, pxmitbuf); +_func_exit_; + return ret; + +} + +void usb_write_port_cancel(struct intf_hdl *pintfhdl) +{ + int i, j; + _adapter *padapter = pintfhdl->padapter; + struct xmit_buf *pxmitbuf = (struct xmit_buf *)padapter->xmitpriv.pxmitbuf; + + DBG_871X("%s \n", __func__); + + padapter->bWritePortCancel = _TRUE; + + for (i=0; ipxmit_urb[j]) { + usb_kill_urb(pxmitbuf->pxmit_urb[j]); + } + } + pxmitbuf++; + } + + pxmitbuf = (struct xmit_buf*)padapter->xmitpriv.pxmit_extbuf; + for (i = 0; i < NR_XMIT_EXTBUFF; i++) { + for (j=0; j<8; j++) { + if(pxmitbuf->pxmit_urb[j]) { + usb_kill_urb(pxmitbuf->pxmit_urb[j]); + } + } + pxmitbuf++; + } +} --- linux-raspi2-4.2.0.orig/drivers/net/wireless/rtl8192cu/os_dep/linux/xmit_linux.c +++ linux-raspi2-4.2.0/drivers/net/wireless/rtl8192cu/os_dep/linux/xmit_linux.c @@ -0,0 +1,420 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved. + * + * 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 + * published by the Free Software Foundation. + * + * 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 Street, Fifth Floor, Boston, MA 02110, USA + * + * + ******************************************************************************/ +#define _XMIT_OSDEP_C_ + +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include + + +uint rtw_remainder_len(struct pkt_file *pfile) +{ + return (pfile->buf_len - ((SIZE_PTR)(pfile->cur_addr) - (SIZE_PTR)(pfile->buf_start))); +} + +void _rtw_open_pktfile (_pkt *pktptr, struct pkt_file *pfile) +{ +_func_enter_; + + pfile->pkt = pktptr; + pfile->cur_addr = pfile->buf_start = pktptr->data; + pfile->pkt_len = pfile->buf_len = pktptr->len; + + pfile->cur_buffer = pfile->buf_start ; + +_func_exit_; +} + +uint _rtw_pktfile_read (struct pkt_file *pfile, u8 *rmem, uint rlen) +{ + uint len = 0; + +_func_enter_; + + len = rtw_remainder_len(pfile); + len = (rlen > len)? len: rlen; + + if(rmem) + skb_copy_bits(pfile->pkt, pfile->buf_len-pfile->pkt_len, rmem, len); + + pfile->cur_addr += len; + pfile->pkt_len -= len; + +_func_exit_; + + return len; +} + +sint rtw_endofpktfile(struct pkt_file *pfile) +{ +_func_enter_; + + if (pfile->pkt_len == 0) { +_func_exit_; + return _TRUE; + } + +_func_exit_; + + return _FALSE; +} + +void rtw_set_tx_chksum_offload(_pkt *pkt, struct pkt_attrib *pattrib) +{ + +#ifdef CONFIG_TCP_CSUM_OFFLOAD_TX + struct sk_buff *skb = (struct sk_buff *)pkt; + pattrib->hw_tcp_csum = 0; + + if (skb->ip_summed == CHECKSUM_PARTIAL) { + if (skb_shinfo(skb)->nr_frags == 0) + { + const struct iphdr *ip = ip_hdr(skb); + if (ip->protocol == IPPROTO_TCP) { + // TCP checksum offload by HW + DBG_871X("CHECKSUM_PARTIAL TCP\n"); + pattrib->hw_tcp_csum = 1; + //skb_checksum_help(skb); + } else if (ip->protocol == IPPROTO_UDP) { + //DBG_871X("CHECKSUM_PARTIAL UDP\n"); +#if 1 + skb_checksum_help(skb); +#else + // Set UDP checksum = 0 to skip checksum check + struct udphdr *udp = skb_transport_header(skb); + udp->check = 0; +#endif + } else { + DBG_871X("%s-%d TCP CSUM offload Error!!\n", __FUNCTION__, __LINE__); + WARN_ON(1); /* we need a WARN() */ + } + } + else { // IP fragmentation case + DBG_871X("%s-%d nr_frags != 0, using skb_checksum_help(skb);!!\n", __FUNCTION__, __LINE__); + skb_checksum_help(skb); + } + } +#endif + +} + +int rtw_os_xmit_resource_alloc(_adapter *padapter, struct xmit_buf *pxmitbuf,u32 alloc_sz) +{ +#ifdef CONFIG_USB_HCI + int i; + struct dvobj_priv *pdvobjpriv = adapter_to_dvobj(padapter); + struct usb_device *pusbd = pdvobjpriv->pusbdev; + +#ifdef CONFIG_USE_USB_BUFFER_ALLOC_TX + pxmitbuf->pallocated_buf = rtw_usb_buffer_alloc(pusbd, (size_t)alloc_sz, &pxmitbuf->dma_transfer_addr); + pxmitbuf->pbuf = pxmitbuf->pallocated_buf; + if(pxmitbuf->pallocated_buf == NULL) + return _FAIL; +#else // CONFIG_USE_USB_BUFFER_ALLOC_TX + + pxmitbuf->pallocated_buf = rtw_zmalloc(alloc_sz); + if (pxmitbuf->pallocated_buf == NULL) + { + return _FAIL; + } + + pxmitbuf->pbuf = (u8 *)N_BYTE_ALIGMENT((SIZE_PTR)(pxmitbuf->pallocated_buf), XMITBUF_ALIGN_SZ); + pxmitbuf->dma_transfer_addr = 0; + +#endif // CONFIG_USE_USB_BUFFER_ALLOC_TX + + for(i=0; i<8; i++) + { + pxmitbuf->pxmit_urb[i] = usb_alloc_urb(0, GFP_KERNEL); + if(pxmitbuf->pxmit_urb[i] == NULL) + { + DBG_871X("pxmitbuf->pxmit_urb[i]==NULL"); + return _FAIL; + } + + } +#endif +#if defined(CONFIG_PCI_HCI) || defined(CONFIG_SDIO_HCI) + pxmitbuf->pallocated_buf = rtw_zmalloc(alloc_sz); + if (pxmitbuf->pallocated_buf == NULL) + { + return _FAIL; + } + + pxmitbuf->pbuf = (u8 *)N_BYTE_ALIGMENT((SIZE_PTR)(pxmitbuf->pallocated_buf), XMITBUF_ALIGN_SZ); +#endif + + return _SUCCESS; +} + +void rtw_os_xmit_resource_free(_adapter *padapter, struct xmit_buf *pxmitbuf,u32 free_sz) +{ +#ifdef CONFIG_USB_HCI + int i; + struct dvobj_priv *pdvobjpriv = adapter_to_dvobj(padapter); + struct usb_device *pusbd = pdvobjpriv->pusbdev; + + + for(i=0; i<8; i++) + { + if(pxmitbuf->pxmit_urb[i]) + { + //usb_kill_urb(pxmitbuf->pxmit_urb[i]); + usb_free_urb(pxmitbuf->pxmit_urb[i]); + } + } + +#ifdef CONFIG_USE_USB_BUFFER_ALLOC_TX + rtw_usb_buffer_free(pusbd, (size_t)free_sz, pxmitbuf->pallocated_buf, pxmitbuf->dma_transfer_addr); + pxmitbuf->pallocated_buf = NULL; + pxmitbuf->dma_transfer_addr = 0; +#else // CONFIG_USE_USB_BUFFER_ALLOC_TX + if(pxmitbuf->pallocated_buf) + rtw_mfree(pxmitbuf->pallocated_buf, free_sz); +#endif // CONFIG_USE_USB_BUFFER_ALLOC_TX + +#endif +#if defined(CONFIG_PCI_HCI) || defined(CONFIG_SDIO_HCI) + if(pxmitbuf->pallocated_buf) + rtw_mfree(pxmitbuf->pallocated_buf, free_sz); +#endif +} + +void rtw_os_pkt_complete(_adapter *padapter, _pkt *pkt) +{ +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35)) + u16 queue; + struct xmit_priv *pxmitpriv = &padapter->xmitpriv; + + queue = skb_get_queue_mapping(pkt); + if(__netif_subqueue_stopped(padapter->pnetdev, queue) && + (pxmitpriv->hwxmits[queue].accnt < NR_XMITFRAME/2)) + { + netif_wake_subqueue(padapter->pnetdev, queue); + } +#else + if (netif_queue_stopped(padapter->pnetdev)) + netif_wake_queue(padapter->pnetdev); +#endif + + rtw_skb_free(pkt); +} + +void rtw_os_xmit_complete(_adapter *padapter, struct xmit_frame *pxframe) +{ + if(pxframe->pkt) + rtw_os_pkt_complete(padapter, pxframe->pkt); + + pxframe->pkt = NULL; +} + +void rtw_os_xmit_schedule(_adapter *padapter) +{ +#ifdef CONFIG_SDIO_HCI + if(!padapter) + return; + + if (rtw_txframes_pending(padapter)) + _rtw_up_sema(&padapter->xmitpriv.xmit_sema); +#else + _irqL irqL; + struct xmit_priv *pxmitpriv; + + if(!padapter) + return; + + pxmitpriv = &padapter->xmitpriv; + + _enter_critical_bh(&pxmitpriv->lock, &irqL); + + if(rtw_txframes_pending(padapter)) + { + tasklet_hi_schedule(&pxmitpriv->xmit_tasklet); + } + + _exit_critical_bh(&pxmitpriv->lock, &irqL); +#endif +} + + + +#ifdef CONFIG_TX_MCAST2UNI +int rtw_mlcst2unicst(_adapter *padapter, struct sk_buff *skb) +{ + struct sta_priv *pstapriv = &padapter->stapriv; + struct xmit_priv *pxmitpriv = &padapter->xmitpriv; + _irqL irqL; + _list *phead, *plist; + struct sk_buff *newskb; + struct sta_info *psta = NULL; + u8 chk_alive_num = 0; + char chk_alive_list[NUM_STA]; + u8 bc_addr[6]={0xff, 0xff, 0xff, 0xff, 0xff, 0xff}; + u8 null_addr[6]={0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; + + int i; + s32 res; + + _enter_critical_bh(&pstapriv->asoc_list_lock, &irqL); + phead = &pstapriv->asoc_list; + plist = get_next(phead); + + //free sta asoc_queue + while ((rtw_end_of_queue_search(phead, plist)) == _FALSE) { + int stainfo_offset; + psta = LIST_CONTAINOR(plist, struct sta_info, asoc_list); + plist = get_next(plist); + + stainfo_offset = rtw_stainfo_offset(pstapriv, psta); + if (stainfo_offset_valid(stainfo_offset)) { + chk_alive_list[chk_alive_num++] = stainfo_offset; + } + } + _exit_critical_bh(&pstapriv->asoc_list_lock, &irqL); + + for (i = 0; i < chk_alive_num; i++) { + psta = rtw_get_stainfo_by_offset(pstapriv, chk_alive_list[i]); + + /* avoid come from STA1 and send back STA1 */ + if (_rtw_memcmp(psta->hwaddr, &skb->data[6], 6) == _TRUE + || _rtw_memcmp(psta->hwaddr, null_addr, 6) == _TRUE + || _rtw_memcmp(psta->hwaddr, bc_addr, 6) == _TRUE + ) + continue; + + newskb = rtw_skb_copy(skb); + + if (newskb) { + _rtw_memcpy(newskb->data, psta->hwaddr, 6); + res = rtw_xmit(padapter, &newskb); + if (res < 0) { + DBG_871X("%s()-%d: rtw_xmit() return error!\n", __FUNCTION__, __LINE__); + pxmitpriv->tx_drop++; + rtw_skb_free(newskb); + } else + pxmitpriv->tx_pkts++; + } else { + DBG_871X("%s-%d: rtw_skb_copy() failed!\n", __FUNCTION__, __LINE__); + pxmitpriv->tx_drop++; + //rtw_skb_free(skb); + return _FALSE; // Caller shall tx this multicast frame via normal way. + } + } + + rtw_skb_free(skb); + return _TRUE; +} +#endif // CONFIG_TX_MCAST2UNI + + +int _rtw_xmit_entry(_pkt *pkt, _nic_hdl pnetdev) +{ + _adapter *padapter = (_adapter *)rtw_netdev_priv(pnetdev); + struct xmit_priv *pxmitpriv = &padapter->xmitpriv; +#ifdef CONFIG_TX_MCAST2UNI + struct mlme_priv *pmlmepriv = &padapter->mlmepriv; + extern int rtw_mc2u_disable; +#endif // CONFIG_TX_MCAST2UNI + s32 res = 0; +#if (LINUX_VERSION_CODE>=KERNEL_VERSION(2,6,35)) + u16 queue; +#endif + +_func_enter_; + + RT_TRACE(_module_rtl871x_mlme_c_, _drv_info_, ("+xmit_enry\n")); + + if (rtw_if_up(padapter) == _FALSE) { + RT_TRACE(_module_xmit_osdep_c_, _drv_err_, ("rtw_xmit_entry: rtw_if_up fail\n")); + #ifdef DBG_TX_DROP_FRAME + DBG_871X("DBG_TX_DROP_FRAME %s if_up fail\n", __FUNCTION__); + #endif + goto drop_packet; + } + +#if (LINUX_VERSION_CODE>=KERNEL_VERSION(2,6,35)) + queue = skb_get_queue_mapping(pkt); + /* No free space for Tx, tx_worker is too slow */ + if (pxmitpriv->hwxmits[queue].accnt > NR_XMITFRAME/2) { + //DBG_871X("%s(): stop netif_subqueue[%d]\n", __FUNCTION__, queue); + netif_stop_subqueue(padapter->pnetdev, queue); + return NETDEV_TX_BUSY; + } +#endif + +#ifdef CONFIG_TX_MCAST2UNI + if ( !rtw_mc2u_disable + && check_fwstate(pmlmepriv, WIFI_AP_STATE) == _TRUE + && ( IP_MCAST_MAC(pkt->data) + || ICMPV6_MCAST_MAC(pkt->data) ) + && (padapter->registrypriv.wifi_spec == 0) + ) + { + if ( pxmitpriv->free_xmitframe_cnt > (NR_XMITFRAME/4) ) { + res = rtw_mlcst2unicst(padapter, pkt); + if (res == _TRUE) { + goto exit; + } + } else { + //DBG_871X("Stop M2U(%d, %d)! ", pxmitpriv->free_xmitframe_cnt, pxmitpriv->free_xmitbuf_cnt); + //DBG_871X("!m2u ); + } + } +#endif // CONFIG_TX_MCAST2UNI + + res = rtw_xmit(padapter, &pkt); + if (res < 0) { + #ifdef DBG_TX_DROP_FRAME + DBG_871X("DBG_TX_DROP_FRAME %s rtw_xmit fail\n", __FUNCTION__); + #endif + goto drop_packet; + } + + pxmitpriv->tx_pkts++; + RT_TRACE(_module_xmit_osdep_c_, _drv_info_, ("rtw_xmit_entry: tx_pkts=%d\n", (u32)pxmitpriv->tx_pkts)); + goto exit; + +drop_packet: + pxmitpriv->tx_drop++; + rtw_skb_free(pkt); + RT_TRACE(_module_xmit_osdep_c_, _drv_notice_, ("rtw_xmit_entry: drop, tx_drop=%d\n", (u32)pxmitpriv->tx_drop)); + +exit: + +_func_exit_; + + return 0; +} + +int rtw_xmit_entry(_pkt *pkt, _nic_hdl pnetdev) +{ + if (pkt) + rtw_mstat_update(MSTAT_TYPE_SKB, MSTAT_ALLOC_SUCCESS, pkt->truesize); + return _rtw_xmit_entry(pkt, pnetdev); +} --- linux-raspi2-4.2.0.orig/drivers/net/wireless/rtl8192cu/os_dep/osdep_service.c +++ linux-raspi2-4.2.0/drivers/net/wireless/rtl8192cu/os_dep/osdep_service.c @@ -0,0 +1,2299 @@ +/****************************************************************************** + * + * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved. + * + * 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 + * published by the Free Software Foundation. + * + * 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 Street, Fifth Floor, Boston, MA 02110, USA + * + * + ******************************************************************************/ + + +#define _OSDEP_SERVICE_C_ + +#include +#include +#include +#include +#ifdef PLATFORM_LINUX +#include +#endif +#ifdef PLATFORM_FREEBSD +#include +#include +#endif /* PLATFORM_FREEBSD */ +#ifdef RTK_DMP_PLATFORM +#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,12)) +#include +#endif +#endif + +#define RT_TAG '1178' + +#ifdef DBG_MEMORY_LEAK +#ifdef PLATFORM_LINUX +#include +atomic_t _malloc_cnt = ATOMIC_INIT(0); +atomic_t _malloc_size = ATOMIC_INIT(0); +#endif +#endif /* DBG_MEMORY_LEAK */ + + +#if defined(PLATFORM_LINUX) +/* +* Translate the OS dependent @param error_code to OS independent RTW_STATUS_CODE +* @return: one of RTW_STATUS_CODE +*/ +inline int RTW_STATUS_CODE(int error_code){ + if(error_code >=0) + return _SUCCESS; + + switch(error_code) { + //case -ETIMEDOUT: + // return RTW_STATUS_TIMEDOUT; + default: + return _FAIL; + } +} +#else +inline int RTW_STATUS_CODE(int error_code){ + return error_code; +} +#endif + +u32 rtw_atoi(u8* s) +{ + + int num=0,flag=0; + int i; + for(i=0;i<=strlen(s);i++) + { + if(s[i] >= '0' && s[i] <= '9') + num = num * 10 + s[i] -'0'; + else if(s[0] == '-' && i==0) + flag =1; + else + break; + } + + if(flag == 1) + num = num * -1; + + return(num); + +} + +inline u8* _rtw_vmalloc(u32 sz) +{ + u8 *pbuf; +#ifdef PLATFORM_LINUX + pbuf = vmalloc(sz); +#endif +#ifdef PLATFORM_FREEBSD + pbuf = malloc(sz,M_DEVBUF,M_NOWAIT); +#endif + +#ifdef PLATFORM_WINDOWS + NdisAllocateMemoryWithTag(&pbuf,sz, RT_TAG); +#endif + +#ifdef DBG_MEMORY_LEAK +#ifdef PLATFORM_LINUX + if ( pbuf != NULL) { + atomic_inc(&_malloc_cnt); + atomic_add(sz, &_malloc_size); + } +#endif +#endif /* DBG_MEMORY_LEAK */ + + return pbuf; +} + +inline u8* _rtw_zvmalloc(u32 sz) +{ + u8 *pbuf; +#ifdef PLATFORM_LINUX + pbuf = _rtw_vmalloc(sz); + if (pbuf != NULL) + memset(pbuf, 0, sz); +#endif +#ifdef PLATFORM_FREEBSD + pbuf = malloc(sz,M_DEVBUF,M_ZERO|M_NOWAIT); +#endif +#ifdef PLATFORM_WINDOWS + NdisAllocateMemoryWithTag(&pbuf,sz, RT_TAG); + if (pbuf != NULL) + NdisFillMemory(pbuf, sz, 0); +#endif + + return pbuf; +} + +inline void _rtw_vmfree(u8 *pbuf, u32 sz) +{ +#ifdef PLATFORM_LINUX + vfree(pbuf); +#endif +#ifdef PLATFORM_FREEBSD + free(pbuf,M_DEVBUF); +#endif +#ifdef PLATFORM_WINDOWS + NdisFreeMemory(pbuf,sz, 0); +#endif + +#ifdef DBG_MEMORY_LEAK +#ifdef PLATFORM_LINUX + atomic_dec(&_malloc_cnt); + atomic_sub(sz, &_malloc_size); +#endif +#endif /* DBG_MEMORY_LEAK */ +} + +u8* _rtw_malloc(u32 sz) +{ + + u8 *pbuf=NULL; + +#ifdef PLATFORM_LINUX +#ifdef RTK_DMP_PLATFORM + if(sz > 0x4000) + pbuf = (u8 *)dvr_malloc(sz); + else +#endif + pbuf = kmalloc(sz,in_interrupt() ? GFP_ATOMIC : GFP_KERNEL); + +#endif +#ifdef PLATFORM_FREEBSD + pbuf = malloc(sz,M_DEVBUF,M_NOWAIT); +#endif +#ifdef PLATFORM_WINDOWS + + NdisAllocateMemoryWithTag(&pbuf,sz, RT_TAG); + +#endif + +#ifdef DBG_MEMORY_LEAK +#ifdef PLATFORM_LINUX + if ( pbuf != NULL) { + atomic_inc(&_malloc_cnt); + atomic_add(sz, &_malloc_size); + } +#endif +#endif /* DBG_MEMORY_LEAK */ + + return pbuf; + +} + + +u8* _rtw_zmalloc(u32 sz) +{ +#ifdef PLATFORM_FREEBSD + return malloc(sz,M_DEVBUF,M_ZERO|M_NOWAIT); +#else // PLATFORM_FREEBSD + u8 *pbuf = _rtw_malloc(sz); + + if (pbuf != NULL) { + +#ifdef PLATFORM_LINUX + memset(pbuf, 0, sz); +#endif + +#ifdef PLATFORM_WINDOWS + NdisFillMemory(pbuf, sz, 0); +#endif + + } + + return pbuf; +#endif // PLATFORM_FREEBSD +} + +void _rtw_mfree(u8 *pbuf, u32 sz) +{ + +#ifdef PLATFORM_LINUX +#ifdef RTK_DMP_PLATFORM + if(sz > 0x4000) + dvr_free(pbuf); + else +#endif + kfree(pbuf); + +#endif +#ifdef PLATFORM_FREEBSD + free(pbuf,M_DEVBUF); +#endif +#ifdef PLATFORM_WINDOWS + + NdisFreeMemory(pbuf,sz, 0); + +#endif + +#ifdef DBG_MEMORY_LEAK +#ifdef PLATFORM_LINUX + atomic_dec(&_malloc_cnt); + atomic_sub(sz, &_malloc_size); +#endif +#endif /* DBG_MEMORY_LEAK */ + +} + +#ifdef PLATFORM_FREEBSD +//review again +struct sk_buff * dev_alloc_skb(unsigned int size) +{ + struct sk_buff *skb=NULL; + u8 *data=NULL; + + //skb = (struct sk_buff *)_rtw_zmalloc(sizeof(struct sk_buff)); // for skb->len, etc. + skb = (struct sk_buff *)_rtw_malloc(sizeof(struct sk_buff)); + if(!skb) + goto out; + data = _rtw_malloc(size); + if(!data) + goto nodata; + + skb->head = (unsigned char*)data; + skb->data = (unsigned char*)data; + skb->tail = (unsigned char*)data; + skb->end = (unsigned char*)data + size; + skb->len = 0; + //printf("%s()-%d: skb=%p, skb->head = %p\n", __FUNCTION__, __LINE__, skb, skb->head); + +out: + return skb; +nodata: + _rtw_mfree((u8 *)skb, sizeof(struct sk_buff)); + skb = NULL; +goto out; + +} + +void dev_kfree_skb_any(struct sk_buff *skb) +{ + //printf("%s()-%d: skb->head = %p\n", __FUNCTION__, __LINE__, skb->head); + if(skb->head) + _rtw_mfree(skb->head, 0); + //printf("%s()-%d: skb = %p\n", __FUNCTION__, __LINE__, skb); + if(skb) + _rtw_mfree((u8 *)skb, 0); +} +struct sk_buff *skb_clone(const struct sk_buff *skb) +{ + return NULL; +} + +#endif /* PLATFORM_FREEBSD */ + +inline struct sk_buff *_rtw_skb_alloc(u32 sz) +{ +#ifdef PLATFORM_LINUX + return __dev_alloc_skb(sz, in_interrupt() ? GFP_ATOMIC : GFP_KERNEL); +#endif /* PLATFORM_LINUX */ + +#ifdef PLATFORM_FREEBSD + return dev_alloc_skb(sz); +#endif /* PLATFORM_FREEBSD */ +} + +inline void _rtw_skb_free(struct sk_buff *skb) +{ + dev_kfree_skb_any(skb); +} + +inline struct sk_buff *_rtw_skb_copy(const struct sk_buff *skb) +{ +#ifdef PLATFORM_LINUX + return skb_copy(skb, in_interrupt() ? GFP_ATOMIC : GFP_KERNEL); +#endif /* PLATFORM_LINUX */ + +#ifdef PLATFORM_FREEBSD + return NULL; +#endif /* PLATFORM_FREEBSD */ +} + +inline struct sk_buff *_rtw_skb_clone(struct sk_buff *skb) +{ +#ifdef PLATFORM_LINUX + return skb_clone(skb, in_interrupt() ? GFP_ATOMIC : GFP_KERNEL); +#endif /* PLATFORM_LINUX */ + +#ifdef PLATFORM_FREEBSD + return skb_clone(skb); +#endif /* PLATFORM_FREEBSD */ +} + +inline int _rtw_netif_rx(_nic_hdl ndev, struct sk_buff *skb) +{ +#ifdef PLATFORM_LINUX + skb->dev = ndev; + return netif_rx(skb); +#endif /* PLATFORM_LINUX */ + +#ifdef PLATFORM_FREEBSD + return (*ndev->if_input)(ndev, skb); +#endif /* PLATFORM_FREEBSD */ +} + +void _rtw_skb_queue_purge(struct sk_buff_head *list) +{ + struct sk_buff *skb; + + while ((skb = skb_dequeue(list)) != NULL) + _rtw_skb_free(skb); +} + +#ifdef CONFIG_USB_HCI +inline void *_rtw_usb_buffer_alloc(struct usb_device *dev, size_t size, dma_addr_t *dma) +{ +#ifdef PLATFORM_LINUX +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35)) + return usb_alloc_coherent(dev, size, (in_interrupt() ? GFP_ATOMIC : GFP_KERNEL), dma); +#else + return usb_buffer_alloc(dev, size, (in_interrupt() ? GFP_ATOMIC : GFP_KERNEL), dma); +#endif +#endif /* PLATFORM_LINUX */ + +#ifdef PLATFORM_FREEBSD + return (malloc(size, M_USBDEV, M_NOWAIT | M_ZERO)); +#endif /* PLATFORM_FREEBSD */ +} +inline void _rtw_usb_buffer_free(struct usb_device *dev, size_t size, void *addr, dma_addr_t dma) +{ +#ifdef PLATFORM_LINUX +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35)) + usb_free_coherent(dev, size, addr, dma); +#else + usb_buffer_free(dev, size, addr, dma); +#endif +#endif /* PLATFORM_LINUX */ + +#ifdef PLATFORM_FREEBSD + free(addr, M_USBDEV); +#endif /* PLATFORM_FREEBSD */ +} +#endif /* CONFIG_USB_HCI */ + +#ifdef DBG_MEM_ALLOC + +struct rtw_mem_stat { + ATOMIC_T alloc; // the memory bytes we allocate currently + ATOMIC_T peak; // the peak memory bytes we allocate + ATOMIC_T alloc_cnt; // the alloc count for alloc currently + ATOMIC_T alloc_err_cnt; // the error times we fail to allocate memory +}; + +struct rtw_mem_stat rtw_mem_type_stat[mstat_tf_idx(MSTAT_TYPE_MAX)]; +struct rtw_mem_stat rtw_mem_func_stat[mstat_ff_idx(MSTAT_FUNC_MAX)]; + +char *MSTAT_TYPE_str[] = { + "VIR", + "PHY", + "SKB", + "USB", +}; + +char *MSTAT_FUNC_str[] = { + "UNSP", + "IO", + "TXIO", + "RXIO", + "TX", + "RX", +}; + +int _rtw_mstat_dump(char *buf, int len) +{ + int cnt = 0; + int i; + int value_t[4][mstat_tf_idx(MSTAT_TYPE_MAX)]; + int value_f[4][mstat_ff_idx(MSTAT_FUNC_MAX)]; + + int vir_alloc, vir_peak, vir_alloc_err, phy_alloc, phy_peak, phy_alloc_err; + int tx_alloc, tx_peak, tx_alloc_err, rx_alloc, rx_peak, rx_alloc_err; + + for(i=0;i 5000) { + // rtw_mstat_dump(); + update_time=rtw_get_current_time(); + //} +} + + + +inline u8* dbg_rtw_vmalloc(u32 sz, const enum mstat_f flags, const char *func, const int line) +{ + u8 *p; + //DBG_871X("DBG_MEM_ALLOC %s:%d %s(%d)\n", func, line, __FUNCTION__, (sz)); + + p=_rtw_vmalloc((sz)); + + rtw_mstat_update( + flags + , p ? MSTAT_ALLOC_SUCCESS : MSTAT_ALLOC_FAIL + , sz + ); + + return p; +} + +inline u8* dbg_rtw_zvmalloc(u32 sz, const enum mstat_f flags, const char *func, const int line) +{ + u8 *p; + //DBG_871X("DBG_MEM_ALLOC %s:%d %s(%d)\n", func, line, __FUNCTION__, (sz)); + + p=_rtw_zvmalloc((sz)); + + rtw_mstat_update( + flags + , p ? MSTAT_ALLOC_SUCCESS : MSTAT_ALLOC_FAIL + , sz + ); + + return p; +} + +inline void dbg_rtw_vmfree(u8 *pbuf, u32 sz, const enum mstat_f flags, const char *func, const int line) +{ + //DBG_871X("DBG_MEM_ALLOC %s:%d %s(%p,%d)\n", func, line, __FUNCTION__, (pbuf), (sz)); + + _rtw_vmfree((pbuf), (sz)); + + rtw_mstat_update( + flags + , MSTAT_FREE + , sz + ); +} + +inline u8* dbg_rtw_malloc(u32 sz, const enum mstat_f flags, const char *func, const int line) +{ + u8 *p; + + //if(sz>=153 && sz<=306) + // DBG_871X("DBG_MEM_ALLOC %s:%d %s(%d)\n", func, line, __FUNCTION__, (sz)); + + //if((sz)>4096) + // DBG_871X("DBG_MEM_ALLOC %s:%d %s(%d)\n", func, line, __FUNCTION__, (sz)); + + p=_rtw_malloc((sz)); + + rtw_mstat_update( + flags + , p ? MSTAT_ALLOC_SUCCESS : MSTAT_ALLOC_FAIL + , sz + ); + + return p; +} + +inline u8* dbg_rtw_zmalloc(u32 sz, const enum mstat_f flags, const char *func, const int line) +{ + u8 *p; + + //if(sz>=153 && sz<=306) + // DBG_871X("DBG_MEM_ALLOC %s:%d %s(%d)\n", func, line, __FUNCTION__, (sz)); + + //if((sz)>4096) + // DBG_871X("DBG_MEM_ALLOC %s:%d %s(%d)\n", func, line, __FUNCTION__, (sz)); + + p = _rtw_zmalloc((sz)); + + rtw_mstat_update( + flags + , p ? MSTAT_ALLOC_SUCCESS : MSTAT_ALLOC_FAIL + , sz + ); + + return p; +} + +inline void dbg_rtw_mfree(u8 *pbuf, u32 sz, const enum mstat_f flags, const char *func, const int line) +{ + //if(sz>=153 && sz<=306) + // DBG_871X("DBG_MEM_ALLOC %s:%d %s(%d)\n", func, line, __FUNCTION__, (sz)); + + //if((sz)>4096) + // DBG_871X("DBG_MEM_ALLOC %s:%d %s(%p,%d)\n", func, line, __FUNCTION__, (pbuf), (sz)); + + _rtw_mfree((pbuf), (sz)); + + rtw_mstat_update( + flags + , MSTAT_FREE + , sz + ); +} + +inline struct sk_buff * dbg_rtw_skb_alloc(unsigned int size, const enum mstat_f flags, const char *func, int line) +{ + struct sk_buff *skb; + unsigned int truesize = 0; + + skb = _rtw_skb_alloc(size); + + if(skb) + truesize = skb->truesize; + + if(!skb || truesize < size /*|| size > 4096*/) + DBG_871X("DBG_MEM_ALLOC %s:%d %s(%d), skb:%p, truesize=%u\n", func, line, __FUNCTION__, size, skb, truesize); + + rtw_mstat_update( + flags + , skb ? MSTAT_ALLOC_SUCCESS : MSTAT_ALLOC_FAIL + , truesize + ); + + return skb; +} + +inline void dbg_rtw_skb_free(struct sk_buff *skb, const enum mstat_f flags, const char *func, int line) +{ + unsigned int truesize = skb->truesize; + + //if(truesize > 4096) + // DBG_871X("DBG_MEM_ALLOC %s:%d %s, truesize=%u\n", func, line, __FUNCTION__, truesize); + + _rtw_skb_free(skb); + + rtw_mstat_update( + flags + , MSTAT_FREE + , truesize + ); +} + +inline struct sk_buff *dbg_rtw_skb_copy(const struct sk_buff *skb, const enum mstat_f flags, const char *func, const int line) +{ + struct sk_buff *skb_cp; + unsigned int truesize = skb->truesize; + unsigned int cp_truesize = 0; + + skb_cp = _rtw_skb_copy(skb); + if(skb_cp) + cp_truesize = skb_cp->truesize; + + if(!skb_cp || cp_truesize != truesize /*||cp_truesize > 4096*/) + DBG_871X("DBG_MEM_ALLOC %s:%d %s(%u), skb_cp:%p, cp_truesize=%u\n", func, line, __FUNCTION__, truesize, skb_cp, cp_truesize); + + rtw_mstat_update( + flags + , skb_cp ? MSTAT_ALLOC_SUCCESS : MSTAT_ALLOC_FAIL + , truesize + ); + + return skb_cp; +} + +inline struct sk_buff *dbg_rtw_skb_clone(struct sk_buff *skb, const enum mstat_f flags, const char *func, const int line) +{ + struct sk_buff *skb_cl; + unsigned int truesize = skb->truesize; + unsigned int cl_truesize = 0; + + skb_cl = _rtw_skb_clone(skb); + if(skb_cl) + cl_truesize = skb_cl->truesize; + + if(!skb_cl || cl_truesize != truesize /*|| cl_truesize > 4096*/) + DBG_871X("DBG_MEM_ALLOC %s:%d %s(%u), skb_cl:%p, cl_truesize=%u\n", func, line, __FUNCTION__, truesize, skb_cl, cl_truesize); + + rtw_mstat_update( + flags + , skb_cl ? MSTAT_ALLOC_SUCCESS : MSTAT_ALLOC_FAIL + , truesize + ); + + return skb_cl; +} + +inline int dbg_rtw_netif_rx(_nic_hdl ndev, struct sk_buff *skb, const enum mstat_f flags, const char *func, int line) +{ + int ret; + unsigned int truesize = skb->truesize; + + //if(truesize > 4096) + // DBG_871X("DBG_MEM_ALLOC %s:%d %s, truesize=%u\n", func, line, __FUNCTION__, truesize); + + ret = _rtw_netif_rx(ndev, skb); + + rtw_mstat_update( + flags + , MSTAT_FREE + , truesize + ); + + return ret; +} + +inline void dbg_rtw_skb_queue_purge(struct sk_buff_head *list, enum mstat_f flags, const char *func, int line) +{ + struct sk_buff *skb; + + while ((skb = skb_dequeue(list)) != NULL) + dbg_rtw_skb_free(skb, flags, func, line); +} + +#ifdef CONFIG_USB_HCI +inline void *dbg_rtw_usb_buffer_alloc(struct usb_device *dev, size_t size, dma_addr_t *dma, const enum mstat_f flags, const char *func, int line) +{ + void *p; + //DBG_871X("DBG_MEM_ALLOC %s:%d %s(%d)\n", func, line, __FUNCTION__, size); + + p = _rtw_usb_buffer_alloc(dev, size, dma); + + rtw_mstat_update( + flags + , p ? MSTAT_ALLOC_SUCCESS : MSTAT_ALLOC_FAIL + , size + ); + + return p; +} + +inline void dbg_rtw_usb_buffer_free(struct usb_device *dev, size_t size, void *addr, dma_addr_t dma, const enum mstat_f flags, const char *func, int line) +{ + //DBG_871X("DBG_MEM_ALLOC %s:%d %s(%d)\n", func, line, __FUNCTION__, size); + + _rtw_usb_buffer_free(dev, size, addr, dma); + + rtw_mstat_update( + flags + , MSTAT_FREE + , size + ); +} +#endif /* CONFIG_USB_HCI */ +#endif /* DBG_MEM_ALLOC */ + +void* rtw_malloc2d(int h, int w, int size) +{ + int j; + + void **a = (void **) rtw_zmalloc( h*sizeof(void *) + h*w*size ); + if(a == NULL) + { + DBG_871X("%s: alloc memory fail!\n", __FUNCTION__); + return NULL; + } + + for( j=0; jprev = pnew; + pnew->next = pnext; + pnew->prev = pprev; + pprev->next = pnew; +} +#endif /* PLATFORM_FREEBSD */ + +void _rtw_init_listhead(_list *list) +{ + +#ifdef PLATFORM_LINUX + + INIT_LIST_HEAD(list); + +#endif + +#ifdef PLATFORM_FREEBSD + list->next = list; + list->prev = list; +#endif +#ifdef PLATFORM_WINDOWS + + NdisInitializeListHead(list); + +#endif + +} + + +/* +For the following list_xxx operations, +caller must guarantee the atomic context. +Otherwise, there will be racing condition. +*/ +u32 rtw_is_list_empty(_list *phead) +{ + +#ifdef PLATFORM_LINUX + + if (list_empty(phead)) + return _TRUE; + else + return _FALSE; + +#endif +#ifdef PLATFORM_FREEBSD + + if (phead->next == phead) + return _TRUE; + else + return _FALSE; + +#endif + + +#ifdef PLATFORM_WINDOWS + + if (IsListEmpty(phead)) + return _TRUE; + else + return _FALSE; + +#endif + + +} + +void rtw_list_insert_head(_list *plist, _list *phead) +{ + +#ifdef PLATFORM_LINUX + list_add(plist, phead); +#endif + +#ifdef PLATFORM_FREEBSD + __list_add(plist, phead, phead->next); +#endif + +#ifdef PLATFORM_WINDOWS + InsertHeadList(phead, plist); +#endif +} + +void rtw_list_insert_tail(_list *plist, _list *phead) +{ + +#ifdef PLATFORM_LINUX + + list_add_tail(plist, phead); + +#endif +#ifdef PLATFORM_FREEBSD + + __list_add(plist, phead->prev, phead); + +#endif +#ifdef PLATFORM_WINDOWS + + InsertTailList(phead, plist); + +#endif + +} + + +/* + +Caller must check if the list is empty before calling rtw_list_delete + +*/ + + +void _rtw_init_sema(_sema *sema, int init_val) +{ + +#ifdef PLATFORM_LINUX + + sema_init(sema, init_val); + +#endif +#ifdef PLATFORM_FREEBSD + sema_init(sema, init_val, "rtw_drv"); +#endif +#ifdef PLATFORM_OS_XP + + KeInitializeSemaphore(sema, init_val, SEMA_UPBND); // count=0; + +#endif + +#ifdef PLATFORM_OS_CE + if(*sema == NULL) + *sema = CreateSemaphore(NULL, init_val, SEMA_UPBND, NULL); +#endif + +} + +void _rtw_free_sema(_sema *sema) +{ +#ifdef PLATFORM_FREEBSD + sema_destroy(sema); +#endif +#ifdef PLATFORM_OS_CE + CloseHandle(*sema); +#endif + +} + +void _rtw_up_sema(_sema *sema) +{ + +#ifdef PLATFORM_LINUX + + up(sema); + +#endif +#ifdef PLATFORM_FREEBSD + sema_post(sema); +#endif +#ifdef PLATFORM_OS_XP + + KeReleaseSemaphore(sema, IO_NETWORK_INCREMENT, 1, FALSE ); + +#endif + +#ifdef PLATFORM_OS_CE + ReleaseSemaphore(*sema, 1, NULL ); +#endif +} + +u32 _rtw_down_sema(_sema *sema) +{ + +#ifdef PLATFORM_LINUX + + if (down_interruptible(sema)) + return _FAIL; + else + return _SUCCESS; + +#endif +#ifdef PLATFORM_FREEBSD + sema_wait(sema); + return _SUCCESS; +#endif +#ifdef PLATFORM_OS_XP + + if(STATUS_SUCCESS == KeWaitForSingleObject(sema, Executive, KernelMode, TRUE, NULL)) + return _SUCCESS; + else + return _FAIL; +#endif + +#ifdef PLATFORM_OS_CE + if(WAIT_OBJECT_0 == WaitForSingleObject(*sema, INFINITE )) + return _SUCCESS; + else + return _FAIL; +#endif +} + + + +void _rtw_mutex_init(_mutex *pmutex) +{ +#ifdef PLATFORM_LINUX + +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,37)) + mutex_init(pmutex); +#else + init_MUTEX(pmutex); +#endif + +#endif +#ifdef PLATFORM_FREEBSD + mtx_init(pmutex, "", NULL, MTX_DEF|MTX_RECURSE); +#endif +#ifdef PLATFORM_OS_XP + + KeInitializeMutex(pmutex, 0); + +#endif + +#ifdef PLATFORM_OS_CE + *pmutex = CreateMutex( NULL, _FALSE, NULL); +#endif +} + +void _rtw_mutex_free(_mutex *pmutex); +void _rtw_mutex_free(_mutex *pmutex) +{ +#ifdef PLATFORM_LINUX + +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,37)) + mutex_destroy(pmutex); +#else +#endif + +#ifdef PLATFORM_FREEBSD + sema_destroy(pmutex); +#endif + +#endif + +#ifdef PLATFORM_OS_XP + +#endif + +#ifdef PLATFORM_OS_CE + +#endif +} + +void _rtw_spinlock_init(_lock *plock) +{ + +#ifdef PLATFORM_LINUX + + spin_lock_init(plock); + +#endif +#ifdef PLATFORM_FREEBSD + mtx_init(plock, "", NULL, MTX_DEF|MTX_RECURSE); +#endif +#ifdef PLATFORM_WINDOWS + + NdisAllocateSpinLock(plock); + +#endif + +} + +void _rtw_spinlock_free(_lock *plock) +{ +#ifdef PLATFORM_FREEBSD + mtx_destroy(plock); +#endif + +#ifdef PLATFORM_WINDOWS + + NdisFreeSpinLock(plock); + +#endif + +} +#ifdef PLATFORM_FREEBSD +extern PADAPTER prtw_lock; + +void rtw_mtx_lock(_lock *plock){ + if(prtw_lock){ + mtx_lock(&prtw_lock->glock); + } + else{ + printf("%s prtw_lock==NULL",__FUNCTION__); + } +} +void rtw_mtx_unlock(_lock *plock){ + if(prtw_lock){ + mtx_unlock(&prtw_lock->glock); + } + else{ + printf("%s prtw_lock==NULL",__FUNCTION__); + } + +} +#endif //PLATFORM_FREEBSD + + +void _rtw_spinlock(_lock *plock) +{ + +#ifdef PLATFORM_LINUX + + spin_lock(plock); + +#endif +#ifdef PLATFORM_FREEBSD + mtx_lock(plock); +#endif +#ifdef PLATFORM_WINDOWS + + NdisAcquireSpinLock(plock); + +#endif + +} + +void _rtw_spinunlock(_lock *plock) +{ + +#ifdef PLATFORM_LINUX + + spin_unlock(plock); + +#endif +#ifdef PLATFORM_FREEBSD + mtx_unlock(plock); +#endif +#ifdef PLATFORM_WINDOWS + + NdisReleaseSpinLock(plock); + +#endif +} + + +void _rtw_spinlock_ex(_lock *plock) +{ + +#ifdef PLATFORM_LINUX + + spin_lock(plock); + +#endif +#ifdef PLATFORM_FREEBSD + mtx_lock(plock); +#endif +#ifdef PLATFORM_WINDOWS + + NdisDprAcquireSpinLock(plock); + +#endif + +} + +void _rtw_spinunlock_ex(_lock *plock) +{ + +#ifdef PLATFORM_LINUX + + spin_unlock(plock); + +#endif +#ifdef PLATFORM_FREEBSD + mtx_unlock(plock); +#endif +#ifdef PLATFORM_WINDOWS + + NdisDprReleaseSpinLock(plock); + +#endif +} + + + +void _rtw_init_queue(_queue *pqueue) +{ + + _rtw_init_listhead(&(pqueue->queue)); + + _rtw_spinlock_init(&(pqueue->lock)); + +} + +u32 _rtw_queue_empty(_queue *pqueue) +{ + return (rtw_is_list_empty(&(pqueue->queue))); +} + + +u32 rtw_end_of_queue_search(_list *head, _list *plist) +{ + if (head == plist) + return _TRUE; + else + return _FALSE; +} + + +u32 rtw_get_current_time(void) +{ + +#ifdef PLATFORM_LINUX + return jiffies; +#endif +#ifdef PLATFORM_FREEBSD + struct timeval tvp; + getmicrotime(&tvp); + return tvp.tv_sec; +#endif +#ifdef PLATFORM_WINDOWS + LARGE_INTEGER SystemTime; + NdisGetCurrentSystemTime(&SystemTime); + return (u32)(SystemTime.LowPart);// count of 100-nanosecond intervals +#endif +} + +inline u32 rtw_systime_to_ms(u32 systime) +{ +#ifdef PLATFORM_LINUX + return systime * 1000 / HZ; +#endif +#ifdef PLATFORM_FREEBSD + return systime * 1000; +#endif +#ifdef PLATFORM_WINDOWS + return systime / 10000 ; +#endif +} + +inline u32 rtw_ms_to_systime(u32 ms) +{ +#ifdef PLATFORM_LINUX + return ms * HZ / 1000; +#endif +#ifdef PLATFORM_FREEBSD + return ms /1000; +#endif +#ifdef PLATFORM_WINDOWS + return ms * 10000 ; +#endif +} + +// the input parameter start use the same unit as returned by rtw_get_current_time +inline s32 rtw_get_passing_time_ms(u32 start) +{ +#ifdef PLATFORM_LINUX + return rtw_systime_to_ms(jiffies-start); +#endif +#ifdef PLATFORM_FREEBSD + return rtw_systime_to_ms(rtw_get_current_time()); +#endif +#ifdef PLATFORM_WINDOWS + LARGE_INTEGER SystemTime; + NdisGetCurrentSystemTime(&SystemTime); + return rtw_systime_to_ms((u32)(SystemTime.LowPart) - start) ; +#endif +} + +inline s32 rtw_get_time_interval_ms(u32 start, u32 end) +{ +#ifdef PLATFORM_LINUX + return rtw_systime_to_ms(end-start); +#endif +#ifdef PLATFORM_FREEBSD + return rtw_systime_to_ms(rtw_get_current_time()); +#endif +#ifdef PLATFORM_WINDOWS + return rtw_systime_to_ms(end-start); +#endif +} + + +void rtw_sleep_schedulable(int ms) +{ + +#ifdef PLATFORM_LINUX + + u32 delta; + + delta = (ms * HZ)/1000;//(ms) + if (delta == 0) { + delta = 1;// 1 ms + } + set_current_state(TASK_INTERRUPTIBLE); + if (schedule_timeout(delta) != 0) { + return ; + } + return; + +#endif +#ifdef PLATFORM_FREEBSD + DELAY(ms*1000); + return ; +#endif + +#ifdef PLATFORM_WINDOWS + + NdisMSleep(ms*1000); //(us)*1000=(ms) + +#endif + +} + + +void rtw_msleep_os(int ms) +{ + +#ifdef PLATFORM_LINUX + + msleep((unsigned int)ms); + +#endif +#ifdef PLATFORM_FREEBSD + //Delay for delay microseconds + DELAY(ms*1000); + return ; +#endif +#ifdef PLATFORM_WINDOWS + + NdisMSleep(ms*1000); //(us)*1000=(ms) + +#endif + + +} +void rtw_usleep_os(int us) +{ + +#ifdef PLATFORM_LINUX + + // msleep((unsigned int)us); + if ( 1 < (us/1000) ) + msleep(1); + else + msleep( (us/1000) + 1); + +#endif +#ifdef PLATFORM_FREEBSD + //Delay for delay microseconds + DELAY(us); + + return ; +#endif +#ifdef PLATFORM_WINDOWS + + NdisMSleep(us); //(us) + +#endif + + +} + + +#ifdef DBG_DELAY_OS +void _rtw_mdelay_os(int ms, const char *func, const int line) +{ + #if 0 + if(ms>10) + DBG_871X("%s:%d %s(%d)\n", func, line, __FUNCTION__, ms); + rtw_msleep_os(ms); + return; + #endif + + + DBG_871X("%s:%d %s(%d)\n", func, line, __FUNCTION__, ms); + +#if defined(PLATFORM_LINUX) + + mdelay((unsigned long)ms); + +#elif defined(PLATFORM_WINDOWS) + + NdisStallExecution(ms*1000); //(us)*1000=(ms) + +#endif + + +} +void _rtw_udelay_os(int us, const char *func, const int line) +{ + + #if 0 + if(us > 1000) { + DBG_871X("%s:%d %s(%d)\n", func, line, __FUNCTION__, us); + rtw_usleep_os(us); + return; + } + #endif + + + DBG_871X("%s:%d %s(%d)\n", func, line, __FUNCTION__, us); + + +#if defined(PLATFORM_LINUX) + + udelay((unsigned long)us); + +#elif defined(PLATFORM_WINDOWS) + + NdisStallExecution(us); //(us) + +#endif + +} +#else +void rtw_mdelay_os(int ms) +{ + +#ifdef PLATFORM_LINUX + + mdelay((unsigned long)ms); + +#endif +#ifdef PLATFORM_FREEBSD + DELAY(ms*1000); + return ; +#endif +#ifdef PLATFORM_WINDOWS + + NdisStallExecution(ms*1000); //(us)*1000=(ms) + +#endif + + +} +void rtw_udelay_os(int us) +{ + +#ifdef PLATFORM_LINUX + + udelay((unsigned long)us); + +#endif +#ifdef PLATFORM_FREEBSD + //Delay for delay microseconds + DELAY(us); + return ; +#endif +#ifdef PLATFORM_WINDOWS + + NdisStallExecution(us); //(us) + +#endif + +} +#endif + +void rtw_yield_os() +{ +#ifdef PLATFORM_LINUX + yield(); +#endif +#ifdef PLATFORM_FREEBSD + yield(); +#endif +#ifdef PLATFORM_WINDOWS + SwitchToThread(); +#endif +} + +#define RTW_SUSPEND_LOCK_NAME "rtw_wifi" + +#ifdef CONFIG_WAKELOCK +static struct wake_lock rtw_suspend_lock; +#elif defined(CONFIG_ANDROID_POWER) +static android_suspend_lock_t rtw_suspend_lock ={ + .name = RTW_SUSPEND_LOCK_NAME +}; +#endif + +inline void rtw_suspend_lock_init() +{ + #ifdef CONFIG_WAKELOCK + wake_lock_init(&rtw_suspend_lock, WAKE_LOCK_SUSPEND, RTW_SUSPEND_LOCK_NAME); + #elif defined(CONFIG_ANDROID_POWER) + android_init_suspend_lock(&rtw_suspend_lock); + #endif +} + +inline void rtw_suspend_lock_uninit() +{ + #ifdef CONFIG_WAKELOCK + wake_lock_destroy(&rtw_suspend_lock); + #elif defined(CONFIG_ANDROID_POWER) + android_uninit_suspend_lock(&rtw_suspend_lock); + #endif +} + +inline void rtw_lock_suspend() +{ + #ifdef CONFIG_WAKELOCK + wake_lock(&rtw_suspend_lock); + #elif defined(CONFIG_ANDROID_POWER) + android_lock_suspend(&rtw_suspend_lock); + #endif +} + +inline void rtw_unlock_suspend() +{ + #ifdef CONFIG_WAKELOCK + wake_unlock(&rtw_suspend_lock); + #elif defined(CONFIG_ANDROID_POWER) + android_unlock_suspend(&rtw_suspend_lock); + #endif +} + +inline void rtw_lock_suspend_timeout(u32 timeout_ms) +{ + #ifdef CONFIG_WAKELOCK + wake_lock_timeout(&rtw_suspend_lock, rtw_ms_to_systime(timeout_ms)); + #elif defined(CONFIG_ANDROID_POWER) + android_lock_suspend_auto_expire(&rtw_suspend_lock, rtw_ms_to_systime(timeout_ms)); + #endif +} + +inline void ATOMIC_SET(ATOMIC_T *v, int i) +{ + #ifdef PLATFORM_LINUX + atomic_set(v,i); + #elif defined(PLATFORM_WINDOWS) + *v=i;// other choice???? + #elif defined(PLATFORM_FREEBSD) + atomic_set_int(v,i); + #endif +} + +inline int ATOMIC_READ(ATOMIC_T *v) +{ + #ifdef PLATFORM_LINUX + return atomic_read(v); + #elif defined(PLATFORM_WINDOWS) + return *v; // other choice???? + #elif defined(PLATFORM_FREEBSD) + return atomic_load_acq_32(v); + #endif +} + +inline void ATOMIC_ADD(ATOMIC_T *v, int i) +{ + #ifdef PLATFORM_LINUX + atomic_add(i,v); + #elif defined(PLATFORM_WINDOWS) + InterlockedAdd(v,i); + #elif defined(PLATFORM_FREEBSD) + atomic_add_int(v,i); + #endif +} +inline void ATOMIC_SUB(ATOMIC_T *v, int i) +{ + #ifdef PLATFORM_LINUX + atomic_sub(i,v); + #elif defined(PLATFORM_WINDOWS) + InterlockedAdd(v,-i); + #elif defined(PLATFORM_FREEBSD) + atomic_subtract_int(v,i); + #endif +} + +inline void ATOMIC_INC(ATOMIC_T *v) +{ + #ifdef PLATFORM_LINUX + atomic_inc(v); + #elif defined(PLATFORM_WINDOWS) + InterlockedIncrement(v); + #elif defined(PLATFORM_FREEBSD) + atomic_add_int(v,1); + #endif +} + +inline void ATOMIC_DEC(ATOMIC_T *v) +{ + #ifdef PLATFORM_LINUX + atomic_dec(v); + #elif defined(PLATFORM_WINDOWS) + InterlockedDecrement(v); + #elif defined(PLATFORM_FREEBSD) + atomic_subtract_int(v,1); + #endif +} + +inline int ATOMIC_ADD_RETURN(ATOMIC_T *v, int i) +{ + #ifdef PLATFORM_LINUX + return atomic_add_return(i,v); + #elif defined(PLATFORM_WINDOWS) + return InterlockedAdd(v,i); + #elif defined(PLATFORM_FREEBSD) + atomic_add_int(v,i); + return atomic_load_acq_32(v); + #endif +} + +inline int ATOMIC_SUB_RETURN(ATOMIC_T *v, int i) +{ + #ifdef PLATFORM_LINUX + return atomic_sub_return(i,v); + #elif defined(PLATFORM_WINDOWS) + return InterlockedAdd(v,-i); + #elif defined(PLATFORM_FREEBSD) + atomic_subtract_int(v,i); + return atomic_load_acq_32(v); + #endif +} + +inline int ATOMIC_INC_RETURN(ATOMIC_T *v) +{ + #ifdef PLATFORM_LINUX + return atomic_inc_return(v); + #elif defined(PLATFORM_WINDOWS) + return InterlockedIncrement(v); + #elif defined(PLATFORM_FREEBSD) + atomic_add_int(v,1); + return atomic_load_acq_32(v); + #endif +} + +inline int ATOMIC_DEC_RETURN(ATOMIC_T *v) +{ + #ifdef PLATFORM_LINUX + return atomic_dec_return(v); + #elif defined(PLATFORM_WINDOWS) + return InterlockedDecrement(v); + #elif defined(PLATFORM_FREEBSD) + atomic_subtract_int(v,1); + return atomic_load_acq_32(v); + #endif +} + + +#ifdef PLATFORM_LINUX +/* +* Open a file with the specific @param path, @param flag, @param mode +* @param fpp the pointer of struct file pointer to get struct file pointer while file opening is success +* @param path the path of the file to open +* @param flag file operation flags, please refer to linux document +* @param mode please refer to linux document +* @return Linux specific error code +*/ +static int openFile(struct file **fpp, char *path, int flag, int mode) +{ + struct file *fp; + + fp=filp_open(path, flag, mode); + if(IS_ERR(fp)) { + *fpp=NULL; + return PTR_ERR(fp); + } + else { + *fpp=fp; + return 0; + } +} + +/* +* Close the file with the specific @param fp +* @param fp the pointer of struct file to close +* @return always 0 +*/ +static int closeFile(struct file *fp) +{ + filp_close(fp,NULL); + return 0; +} + +static int readFile(struct file *fp,char *buf,int len) +{ + int rlen=0, sum=0; + + if (!fp->f_op || !fp->f_op->read) + return -EPERM; + + while(sumf_op->read(fp,buf+sum,len-sum, &fp->f_pos); + if(rlen>0) + sum+=rlen; + else if(0 != rlen) + return rlen; + else + break; + } + + return sum; + +} + +static int writeFile(struct file *fp,char *buf,int len) +{ + int wlen=0, sum=0; + + if (!fp->f_op || !fp->f_op->write) + return -EPERM; + + while(sumf_op->write(fp,buf+sum,len-sum, &fp->f_pos); + if(wlen>0) + sum+=wlen; + else if(0 != wlen) + return wlen; + else + break; + } + + return sum; + +} + +/* +* Test if the specifi @param path is a file and readable +* @param path the path of the file to test +* @return Linux specific error code +*/ +static int isFileReadable(char *path) +{ + struct file *fp; + int ret = 0; + mm_segment_t oldfs; + char buf; + + fp=filp_open(path, O_RDONLY, 0); + if(IS_ERR(fp)) { + ret = PTR_ERR(fp); + } + else { + oldfs = get_fs(); set_fs(get_ds()); + + if(1!=readFile(fp, &buf, 1)) + ret = PTR_ERR(fp); + + set_fs(oldfs); + filp_close(fp,NULL); + } + return ret; +} + +/* +* Open the file with @param path and retrive the file content into memory starting from @param buf for @param sz at most +* @param path the path of the file to open and read +* @param buf the starting address of the buffer to store file content +* @param sz how many bytes to read at most +* @return the byte we've read, or Linux specific error code +*/ +static int retriveFromFile(char *path, u8* buf, u32 sz) +{ + int ret =-1; + mm_segment_t oldfs; + struct file *fp; + + if(path && buf) { + if( 0 == (ret=openFile(&fp,path, O_RDONLY, 0)) ){ + DBG_871X("%s openFile path:%s fp=%p\n",__FUNCTION__, path ,fp); + + oldfs = get_fs(); set_fs(get_ds()); + ret=readFile(fp, buf, sz); + set_fs(oldfs); + closeFile(fp); + + DBG_871X("%s readFile, ret:%d\n",__FUNCTION__, ret); + + } else { + DBG_871X("%s openFile path:%s Fail, ret:%d\n",__FUNCTION__, path, ret); + } + } else { + DBG_871X("%s NULL pointer\n",__FUNCTION__); + ret = -EINVAL; + } + return ret; +} + +/* +* Open the file with @param path and wirte @param sz byte of data starting from @param buf into the file +* @param path the path of the file to open and write +* @param buf the starting address of the data to write into file +* @param sz how many bytes to write at most +* @return the byte we've written, or Linux specific error code +*/ +static int storeToFile(char *path, u8* buf, u32 sz) +{ + int ret =0; + mm_segment_t oldfs; + struct file *fp; + + if(path && buf) { + if( 0 == (ret=openFile(&fp, path, O_CREAT|O_WRONLY, 0666)) ) { + DBG_871X("%s openFile path:%s fp=%p\n",__FUNCTION__, path ,fp); + + oldfs = get_fs(); set_fs(get_ds()); + ret=writeFile(fp, buf, sz); + set_fs(oldfs); + closeFile(fp); + + DBG_871X("%s writeFile, ret:%d\n",__FUNCTION__, ret); + + } else { + DBG_871X("%s openFile path:%s Fail, ret:%d\n",__FUNCTION__, path, ret); + } + } else { + DBG_871X("%s NULL pointer\n",__FUNCTION__); + ret = -EINVAL; + } + return ret; +} +#endif //PLATFORM_LINUX + +/* +* Test if the specifi @param path is a file and readable +* @param path the path of the file to test +* @return _TRUE or _FALSE +*/ +int rtw_is_file_readable(char *path) +{ +#ifdef PLATFORM_LINUX + if(isFileReadable(path) == 0) + return _TRUE; + else + return _FALSE; +#else + //Todo... + return _FALSE; +#endif +} + +/* +* Open the file with @param path and retrive the file content into memory starting from @param buf for @param sz at most +* @param path the path of the file to open and read +* @param buf the starting address of the buffer to store file content +* @param sz how many bytes to read at most +* @return the byte we've read +*/ +int rtw_retrive_from_file(char *path, u8* buf, u32 sz) +{ +#ifdef PLATFORM_LINUX + int ret =retriveFromFile(path, buf, sz); + return ret>=0?ret:0; +#else + //Todo... + return 0; +#endif +} + +/* +* Open the file with @param path and wirte @param sz byte of data starting from @param buf into the file +* @param path the path of the file to open and write +* @param buf the starting address of the data to write into file +* @param sz how many bytes to write at most +* @return the byte we've written +*/ +int rtw_store_to_file(char *path, u8* buf, u32 sz) +{ +#ifdef PLATFORM_LINUX + int ret =storeToFile(path, buf, sz); + return ret>=0?ret:0; +#else + //Todo... + return 0; +#endif +} + +#if 1 //#ifdef MEM_ALLOC_REFINE_ADAPTOR +#ifdef PLATFORM_LINUX +struct net_device *rtw_alloc_etherdev_with_old_priv(int sizeof_priv, void *old_priv) +{ + struct net_device *pnetdev; + struct rtw_netdev_priv_indicator *pnpi; + +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35)) + pnetdev = alloc_etherdev_mq(sizeof(struct rtw_netdev_priv_indicator), 4); +#else + pnetdev = alloc_etherdev(sizeof(struct rtw_netdev_priv_indicator)); +#endif + if (!pnetdev) + goto RETURN; + + pnpi = netdev_priv(pnetdev); + pnpi->priv=old_priv; + pnpi->sizeof_priv=sizeof_priv; + +RETURN: + return pnetdev; +} + +struct net_device *rtw_alloc_etherdev(int sizeof_priv) +{ + struct net_device *pnetdev; + struct rtw_netdev_priv_indicator *pnpi; + +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35)) + pnetdev = alloc_etherdev_mq(sizeof(struct rtw_netdev_priv_indicator), 4); +#else + pnetdev = alloc_etherdev(sizeof(struct rtw_netdev_priv_indicator)); +#endif + if (!pnetdev) + goto RETURN; + + pnpi = netdev_priv(pnetdev); + + pnpi->priv = rtw_zvmalloc(sizeof_priv); + if (!pnpi->priv) { + free_netdev(pnetdev); + pnetdev = NULL; + goto RETURN; + } + + pnpi->sizeof_priv=sizeof_priv; +RETURN: + return pnetdev; +} + +void rtw_free_netdev(struct net_device * netdev) +{ + struct rtw_netdev_priv_indicator *pnpi; + + if(!netdev) + goto RETURN; + + pnpi = netdev_priv(netdev); + + if(!pnpi->priv) + goto RETURN; + + rtw_vmfree(pnpi->priv, pnpi->sizeof_priv); + free_netdev(netdev); + +RETURN: + return; +} + +/* +* Jeff: this function should be called under ioctl (rtnl_lock is accquired) while +* LINUX_VERSION_CODE < KERNEL_VERSION(2,6,26) +*/ +int rtw_change_ifname(_adapter *padapter, const char *ifname) +{ + struct net_device *pnetdev; + struct net_device *cur_pnetdev = padapter->pnetdev; + struct rereg_nd_name_data *rereg_priv; + int ret; + + if(!padapter) + goto error; + + rereg_priv = &padapter->rereg_nd_name_priv; + + //free the old_pnetdev + if(rereg_priv->old_pnetdev) { + free_netdev(rereg_priv->old_pnetdev); + rereg_priv->old_pnetdev = NULL; + } + +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,26)) + if(!rtnl_is_locked()) + unregister_netdev(cur_pnetdev); + else +#endif + unregister_netdevice(cur_pnetdev); + + rtw_proc_remove_one(cur_pnetdev); + + rereg_priv->old_pnetdev=cur_pnetdev; + + pnetdev = rtw_init_netdev(padapter); + if (!pnetdev) { + ret = -1; + goto error; + } + + SET_NETDEV_DEV(pnetdev, dvobj_to_dev(adapter_to_dvobj(padapter))); + + rtw_init_netdev_name(pnetdev, ifname); + + _rtw_memcpy(pnetdev->dev_addr, padapter->eeprompriv.mac_addr, ETH_ALEN); + +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,26)) + if(!rtnl_is_locked()) + ret = register_netdev(pnetdev); + else +#endif + ret = register_netdevice(pnetdev); + + if ( ret != 0) { + RT_TRACE(_module_hci_intfs_c_,_drv_err_,("register_netdev() failed\n")); + goto error; + } + + rtw_proc_init_one(pnetdev); + + return 0; + +error: + + return -1; + +} +#endif +#endif //MEM_ALLOC_REFINE_ADAPTOR + +#ifdef PLATFORM_FREEBSD +/* + * Copy a buffer from userspace and write into kernel address + * space. + * + * This emulation just calls the FreeBSD copyin function (to + * copy data from user space buffer into a kernel space buffer) + * and is designed to be used with the above io_write_wrapper. + * + * This function should return the number of bytes not copied. + * I.e. success results in a zero value. + * Negative error values are not returned. + */ +unsigned long +copy_from_user(void *to, const void *from, unsigned long n) +{ + if ( copyin(from, to, n) != 0 ) { + /* Any errors will be treated as a failure + to copy any of the requested bytes */ + return n; + } + + return 0; +} + +unsigned long +copy_to_user(void *to, const void *from, unsigned long n) +{ + if ( copyout(from, to, n) != 0 ) { + /* Any errors will be treated as a failure + to copy any of the requested bytes */ + return n; + } + + return 0; +} + + +/* + * The usb_register and usb_deregister functions are used to register + * usb drivers with the usb subsystem. In this compatibility layer + * emulation a list of drivers (struct usb_driver) is maintained + * and is used for probing/attaching etc. + * + * usb_register and usb_deregister simply call these functions. + */ +int +usb_register(struct usb_driver *driver) +{ + rtw_usb_linux_register(driver); + return 0; +} + + +int +usb_deregister(struct usb_driver *driver) +{ + rtw_usb_linux_deregister(driver); + return 0; +} + +void module_init_exit_wrapper(void *arg) +{ + int (*func)(void) = arg; + func(); + return; +} + +#endif //PLATFORM_FREEBSD +u64 rtw_modular64(u64 x, u64 y) +{ +#ifdef PLATFORM_LINUX + return do_div(x, y); +#elif defined(PLATFORM_WINDOWS) + return (x % y); +#elif defined(PLATFORM_FREEBSD) + return (x %y); +#endif +} + +u64 rtw_division64(u64 x, u64 y) +{ +#ifdef PLATFORM_LINUX + do_div(x, y); + return x; +#elif defined(PLATFORM_WINDOWS) + return (x / y); +#elif defined(PLATFORM_FREEBSD) + return (x / y); +#endif +} + +void rtw_buf_free(u8 **buf, u32 *buf_len) +{ + u32 ori_len; + + if (!buf || !buf_len) + return; + + ori_len = *buf_len; + + if (*buf) { + u32 tmp_buf_len = *buf_len; + *buf_len = 0; + rtw_mfree(*buf, tmp_buf_len); + *buf = NULL; + } +} + +void rtw_buf_update(u8 **buf, u32 *buf_len, u8 *src, u32 src_len) +{ + u32 ori_len = 0, dup_len = 0; + u8 *ori = NULL; + u8 *dup = NULL; + + if (!buf || !buf_len) + return; + + if (!src || !src_len) + goto keep_ori; + + /* duplicate src */ + dup = rtw_malloc(src_len); + if (dup) { + dup_len = src_len; + _rtw_memcpy(dup, src, dup_len); + } + +keep_ori: + ori = *buf; + ori_len = *buf_len; + + /* replace buf with dup */ + *buf_len = 0; + *buf = dup; + *buf_len = dup_len; + + /* free ori */ + if (ori && ori_len > 0) + rtw_mfree(ori, ori_len); +} + + +/** + * rtw_cbuf_full - test if cbuf is full + * @cbuf: pointer of struct rtw_cbuf + * + * Returns: _TRUE if cbuf is full + */ +inline bool rtw_cbuf_full(struct rtw_cbuf *cbuf) +{ + return (cbuf->write == cbuf->read-1)? _TRUE : _FALSE; +} + +/** + * rtw_cbuf_empty - test if cbuf is empty + * @cbuf: pointer of struct rtw_cbuf + * + * Returns: _TRUE if cbuf is empty + */ +inline bool rtw_cbuf_empty(struct rtw_cbuf *cbuf) +{ + return (cbuf->write == cbuf->read)? _TRUE : _FALSE; +} + +/** + * rtw_cbuf_push - push a pointer into cbuf + * @cbuf: pointer of struct rtw_cbuf + * @buf: pointer to push in + * + * Lock free operation, be careful of the use scheme + * Returns: _TRUE push success + */ +bool rtw_cbuf_push(struct rtw_cbuf *cbuf, void *buf) +{ + if (rtw_cbuf_full(cbuf)) + return _FAIL; + + if (0) + DBG_871X("%s on %u\n", __func__, cbuf->write); + cbuf->bufs[cbuf->write] = buf; + cbuf->write = (cbuf->write+1)%cbuf->size; + + return _SUCCESS; +} + +/** + * rtw_cbuf_pop - pop a pointer from cbuf + * @cbuf: pointer of struct rtw_cbuf + * + * Lock free operation, be careful of the use scheme + * Returns: pointer popped out + */ +void *rtw_cbuf_pop(struct rtw_cbuf *cbuf) +{ + void *buf; + if (rtw_cbuf_empty(cbuf)) + return NULL; + + if (0) + DBG_871X("%s on %u\n", __func__, cbuf->read); + buf = cbuf->bufs[cbuf->read]; + cbuf->read = (cbuf->read+1)%cbuf->size; + + return buf; +} + +/** + * rtw_cbuf_alloc - allocte a rtw_cbuf with given size and do initialization + * @size: size of pointer + * + * Returns: pointer of srtuct rtw_cbuf, NULL for allocation failure + */ +struct rtw_cbuf *rtw_cbuf_alloc(u32 size) +{ + struct rtw_cbuf *cbuf; + + cbuf = (struct rtw_cbuf *)rtw_malloc(sizeof(*cbuf) + sizeof(void*)*size); + + if (cbuf) { + cbuf->write = cbuf->read = 0; + cbuf->size = size; + } + + return cbuf; +} + +/** + * rtw_cbuf_free - free the given rtw_cbuf + * @cbuf: pointer of struct rtw_cbuf to free + */ +void rtw_cbuf_free(struct rtw_cbuf *cbuf) +{ + rtw_mfree((u8*)cbuf, sizeof(*cbuf) + sizeof(void*)*cbuf->size); +} --- linux-raspi2-4.2.0.orig/drivers/net/wireless/rtl8192cu/runwpa +++ linux-raspi2-4.2.0/drivers/net/wireless/rtl8192cu/runwpa @@ -0,0 +1,18 @@ +#!/bin/bash + +if [ "`which iwconfig`" = "" ] ; then + echo "WARNING:Wireless tool not exist!" + echo " Please install it!" + exit +else + if [ `uname -r | cut -d. -f2` -eq 4 ]; then + wpa_supplicant -D ipw -c wpa1.conf -i wlan0 + else + if [ `iwconfig -v |awk '{print $4}' | head -n 1` -lt 18 ] ; then + wpa_supplicant -D ipw -c wpa1.conf -i wlan0 + else + wpa_supplicant -D wext -c wpa1.conf -i wlan0 + fi + + fi +fi --- linux-raspi2-4.2.0.orig/drivers/net/wireless/rtl8192cu/wlan0dhcp +++ linux-raspi2-4.2.0/drivers/net/wireless/rtl8192cu/wlan0dhcp @@ -0,0 +1,15 @@ +#!/bin/bash + +var0=`ps aux|awk '/dhclient wlan0/'|awk '$11!="awk"{print $2}'` + +kill $var0 +cp ifcfg-wlan0 /etc/sysconfig/network-scripts/ + +dhclient wlan0 + +var1=`ifconfig wlan0 |awk '/inet/{print $2}'|awk -F: '{print $2}'` + + +rm -f /etc/sysconfig/network-scripts/ifcfg-wlan0 + +echo "get ip: $var1" --- linux-raspi2-4.2.0.orig/drivers/net/wireless/rtlwifi/pci.h +++ linux-raspi2-4.2.0/drivers/net/wireless/rtlwifi/pci.h @@ -247,6 +247,8 @@ /* MSI support */ bool msi_support; bool using_msi; + /* interrupt clear before set */ + bool int_clear; }; struct mp_adapter { --- linux-raspi2-4.2.0.orig/drivers/net/wireless/rtlwifi/rtl8192cu/sw.c +++ linux-raspi2-4.2.0/drivers/net/wireless/rtlwifi/rtl8192cu/sw.c @@ -321,6 +321,7 @@ {RTL_USB_DEVICE(0x07b8, 0x8188, rtl92cu_hal_cfg)}, /*Abocom - Abocom*/ {RTL_USB_DEVICE(0x07b8, 0x8189, rtl92cu_hal_cfg)}, /*Funai - Abocom*/ {RTL_USB_DEVICE(0x0846, 0x9041, rtl92cu_hal_cfg)}, /*NetGear WNA1000M*/ + {RTL_USB_DEVICE(0x0846, 0x9043, rtl92cu_hal_cfg)}, /*NG WNA1000Mv2*/ {RTL_USB_DEVICE(0x0b05, 0x17ba, rtl92cu_hal_cfg)}, /*ASUS-Edimax*/ {RTL_USB_DEVICE(0x0bda, 0x5088, rtl92cu_hal_cfg)}, /*Thinkware-CC&C*/ {RTL_USB_DEVICE(0x0df6, 0x0052, rtl92cu_hal_cfg)}, /*Sitecom - Edimax*/ --- linux-raspi2-4.2.0.orig/drivers/net/wireless/rtlwifi/rtl8821ae/hw.c +++ linux-raspi2-4.2.0/drivers/net/wireless/rtlwifi/rtl8821ae/hw.c @@ -2180,7 +2180,7 @@ rtl_write_byte(rtlpriv, MSR, bt_msr); rtlpriv->cfg->ops->led_control(hw, ledaction); - if ((bt_msr & 0xfc) == MSR_AP) + if ((bt_msr & MSR_MASK) == MSR_AP) rtl_write_byte(rtlpriv, REG_BCNTCFG + 1, 0x00); else rtl_write_byte(rtlpriv, REG_BCNTCFG + 1, 0x66); @@ -2253,11 +2253,28 @@ } } +static void rtl8821ae_clear_interrupt(struct ieee80211_hw *hw) +{ + struct rtl_priv *rtlpriv = rtl_priv(hw); + u32 tmp = rtl_read_dword(rtlpriv, REG_HISR); + + rtl_write_dword(rtlpriv, REG_HISR, tmp); + + tmp = rtl_read_dword(rtlpriv, REG_HISRE); + rtl_write_dword(rtlpriv, REG_HISRE, tmp); + + tmp = rtl_read_dword(rtlpriv, REG_HSISR); + rtl_write_dword(rtlpriv, REG_HSISR, tmp); +} + void rtl8821ae_enable_interrupt(struct ieee80211_hw *hw) { struct rtl_priv *rtlpriv = rtl_priv(hw); struct rtl_pci *rtlpci = rtl_pcidev(rtl_pcipriv(hw)); + if (!rtlpci->int_clear) + rtl8821ae_clear_interrupt(hw);/*clear it here first*/ + rtl_write_dword(rtlpriv, REG_HIMR, rtlpci->irq_mask[0] & 0xFFFFFFFF); rtl_write_dword(rtlpriv, REG_HIMRE, rtlpci->irq_mask[1] & 0xFFFFFFFF); rtlpci->irq_enabled = true; --- linux-raspi2-4.2.0.orig/drivers/net/wireless/rtlwifi/rtl8821ae/reg.h +++ linux-raspi2-4.2.0/drivers/net/wireless/rtlwifi/rtl8821ae/reg.h @@ -429,6 +429,7 @@ #define MSR_ADHOC 0x01 #define MSR_INFRA 0x02 #define MSR_AP 0x03 +#define MSR_MASK 0x03 #define RRSR_RSC_OFFSET 21 #define RRSR_SHORT_OFFSET 23 --- linux-raspi2-4.2.0.orig/drivers/net/wireless/rtlwifi/rtl8821ae/sw.c +++ linux-raspi2-4.2.0/drivers/net/wireless/rtlwifi/rtl8821ae/sw.c @@ -96,6 +96,7 @@ rtl8821ae_bt_reg_init(hw); rtlpci->msi_support = rtlpriv->cfg->mod_params->msi_support; + rtlpci->int_clear = rtlpriv->cfg->mod_params->int_clear; rtlpriv->btcoexist.btc_ops = rtl_btc_get_ops_pointer(); rtlpriv->dm.dm_initialgain_enable = 1; @@ -167,6 +168,7 @@ rtlpriv->psc.swctrl_lps = rtlpriv->cfg->mod_params->swctrl_lps; rtlpriv->psc.fwctrl_lps = rtlpriv->cfg->mod_params->fwctrl_lps; rtlpci->msi_support = rtlpriv->cfg->mod_params->msi_support; + rtlpci->msi_support = rtlpriv->cfg->mod_params->int_clear; if (rtlpriv->cfg->mod_params->disable_watchdog) pr_info("watchdog disabled\n"); rtlpriv->psc.reg_fwctrl_lps = 3; @@ -308,6 +310,7 @@ .swctrl_lps = false, .fwctrl_lps = true, .msi_support = true, + .int_clear = true, .debug = DBG_EMERG, .disable_watchdog = 0, }; @@ -437,6 +440,7 @@ module_param_named(msi, rtl8821ae_mod_params.msi_support, bool, 0444); module_param_named(disable_watchdog, rtl8821ae_mod_params.disable_watchdog, bool, 0444); +module_param_named(int_clear, rtl8821ae_mod_params.int_clear, bool, 0444); MODULE_PARM_DESC(swenc, "Set to 1 for software crypto (default 0)\n"); MODULE_PARM_DESC(ips, "Set to 0 to not use link power save (default 1)\n"); MODULE_PARM_DESC(swlps, "Set to 1 to use SW control power save (default 0)\n"); @@ -444,6 +448,7 @@ MODULE_PARM_DESC(msi, "Set to 1 to use MSI interrupts mode (default 1)\n"); MODULE_PARM_DESC(debug, "Set debug level (0-5) (default 0)"); MODULE_PARM_DESC(disable_watchdog, "Set to 1 to disable the watchdog (default 0)\n"); +MODULE_PARM_DESC(int_clear, "Set to 1 to disable interrupt clear before set (default 0)\n"); static SIMPLE_DEV_PM_OPS(rtlwifi_pm_ops, rtl_pci_suspend, rtl_pci_resume); --- linux-raspi2-4.2.0.orig/drivers/net/wireless/rtlwifi/wifi.h +++ linux-raspi2-4.2.0/drivers/net/wireless/rtlwifi/wifi.h @@ -2234,6 +2234,9 @@ /* default 0: 1 means disable */ bool disable_watchdog; + + /* default 0: 1 means do not disable interrupts */ + bool int_clear; }; struct rtl_hal_usbint_cfg { --- linux-raspi2-4.2.0.orig/drivers/net/xen-netback/netback.c +++ linux-raspi2-4.2.0/drivers/net/xen-netback/netback.c @@ -247,18 +247,18 @@ struct netrx_pending_operations *npo) { struct xenvif_rx_meta *meta; - struct xen_netif_rx_request *req; + struct xen_netif_rx_request req; - req = RING_GET_REQUEST(&queue->rx, queue->rx.req_cons++); + RING_COPY_REQUEST(&queue->rx, queue->rx.req_cons++, &req); meta = npo->meta + npo->meta_prod++; meta->gso_type = XEN_NETIF_GSO_TYPE_NONE; meta->gso_size = 0; meta->size = 0; - meta->id = req->id; + meta->id = req.id; npo->copy_off = 0; - npo->copy_gref = req->gref; + npo->copy_gref = req.gref; return meta; } @@ -370,7 +370,7 @@ struct xenvif *vif = netdev_priv(skb->dev); int nr_frags = skb_shinfo(skb)->nr_frags; int i; - struct xen_netif_rx_request *req; + struct xen_netif_rx_request req; struct xenvif_rx_meta *meta; unsigned char *data; int head = 1; @@ -389,15 +389,15 @@ /* Set up a GSO prefix descriptor, if necessary */ if ((1 << gso_type) & vif->gso_prefix_mask) { - req = RING_GET_REQUEST(&queue->rx, queue->rx.req_cons++); + RING_COPY_REQUEST(&queue->rx, queue->rx.req_cons++, &req); meta = npo->meta + npo->meta_prod++; meta->gso_type = gso_type; meta->gso_size = skb_shinfo(skb)->gso_size; meta->size = 0; - meta->id = req->id; + meta->id = req.id; } - req = RING_GET_REQUEST(&queue->rx, queue->rx.req_cons++); + RING_COPY_REQUEST(&queue->rx, queue->rx.req_cons++, &req); meta = npo->meta + npo->meta_prod++; if ((1 << gso_type) & vif->gso_mask) { @@ -409,9 +409,9 @@ } meta->size = 0; - meta->id = req->id; + meta->id = req.id; npo->copy_off = 0; - npo->copy_gref = req->gref; + npo->copy_gref = req.gref; data = skb->data; while (data < skb_tail_pointer(skb)) { @@ -625,9 +625,7 @@ * Allow a burst big enough to transmit a jumbo packet of up to 128kB. * Otherwise the interface can seize up due to insufficient credit. */ - max_burst = RING_GET_REQUEST(&queue->tx, queue->tx.req_cons)->size; - max_burst = min(max_burst, 131072UL); - max_burst = max(max_burst, queue->credit_bytes); + max_burst = max(131072UL, queue->credit_bytes); /* Take care that adding a new chunk of credit doesn't wrap to zero. */ max_credit = queue->remaining_credit + queue->credit_bytes; @@ -657,7 +655,7 @@ spin_unlock_irqrestore(&queue->response_lock, flags); if (cons == end) break; - txp = RING_GET_REQUEST(&queue->tx, cons++); + RING_COPY_REQUEST(&queue->tx, cons++, txp); } while (1); queue->tx.req_cons = cons; } @@ -724,8 +722,7 @@ if (drop_err) txp = &dropped_tx; - memcpy(txp, RING_GET_REQUEST(&queue->tx, cons + slots), - sizeof(*txp)); + RING_COPY_REQUEST(&queue->tx, cons + slots, txp); /* If the guest submitted a frame >= 64 KiB then * first->size overflowed and following slots will @@ -1058,8 +1055,7 @@ return -EBADR; } - memcpy(&extra, RING_GET_REQUEST(&queue->tx, cons), - sizeof(extra)); + RING_COPY_REQUEST(&queue->tx, cons, &extra); if (unlikely(!extra.type || extra.type >= XEN_NETIF_EXTRA_TYPE_MAX)) { queue->tx.req_cons = ++cons; @@ -1194,7 +1190,7 @@ idx = queue->tx.req_cons; rmb(); /* Ensure that we see the request before we copy it. */ - memcpy(&txreq, RING_GET_REQUEST(&queue->tx, idx), sizeof(txreq)); + RING_COPY_REQUEST(&queue->tx, idx, &txreq); /* Credit-based scheduling. */ if (txreq.size > queue->remaining_credit && --- linux-raspi2-4.2.0.orig/drivers/net/xen-netfront.c +++ linux-raspi2-4.2.0/drivers/net/xen-netfront.c @@ -1348,7 +1348,8 @@ queue->tx_evtchn = queue->rx_evtchn = 0; queue->tx_irq = queue->rx_irq = 0; - napi_synchronize(&queue->napi); + if (netif_running(info->netdev)) + napi_synchronize(&queue->napi); xennet_release_tx_bufs(queue); xennet_release_rx_bufs(queue); --- linux-raspi2-4.2.0.orig/drivers/nfc/mei_phy.c +++ linux-raspi2-4.2.0/drivers/nfc/mei_phy.c @@ -355,7 +355,8 @@ goto err; } - r = mei_cl_register_event_cb(phy->device, nfc_mei_event_cb, phy); + r = mei_cl_register_event_cb(phy->device, BIT(MEI_CL_EVENT_RX), + nfc_mei_event_cb, phy); if (r) { pr_err("Event cb registration failed %d\n", r); goto err; --- linux-raspi2-4.2.0.orig/drivers/nfc/st-nci/i2c.c +++ linux-raspi2-4.2.0/drivers/nfc/st-nci/i2c.c @@ -25,15 +25,15 @@ #include #include #include -#include +#include #include "ndlc.h" -#define DRIVER_DESC "NCI NFC driver for ST21NFCB" +#define DRIVER_DESC "NCI NFC driver for ST_NCI" /* ndlc header */ -#define ST21NFCB_FRAME_HEADROOM 1 -#define ST21NFCB_FRAME_TAILROOM 0 +#define ST_NCI_FRAME_HEADROOM 1 +#define ST_NCI_FRAME_TAILROOM 0 #define ST_NCI_I2C_MIN_SIZE 4 /* PCB(1) + NCI Packet header(3) */ #define ST_NCI_I2C_MAX_SIZE 250 /* req 4.2.1 */ @@ -118,15 +118,10 @@ /* * Reads an ndlc frame and returns it in a newly allocated sk_buff. * returns: - * frame size : if received frame is complete (find ST21NFCB_SOF_EOF at - * end of read) - * -EAGAIN : if received frame is incomplete (not find ST21NFCB_SOF_EOF - * at end of read) + * 0 : if received frame is complete * -EREMOTEIO : i2c read error (fatal) * -EBADMSG : frame was incorrect and discarded - * (value returned from st_nci_i2c_repack) - * -EIO : if no ST21NFCB_SOF_EOF is found after reaching - * the read length end sequence + * -ENOMEM : cannot allocate skb, frame dropped */ static int st_nci_i2c_read(struct st_nci_i2c_phy *phy, struct sk_buff **skb) @@ -179,7 +174,7 @@ /* * Reads an ndlc frame from the chip. * - * On ST21NFCB, IRQ goes in idle state when read starts. + * On ST_NCI, IRQ goes in idle state when read starts. */ static irqreturn_t st_nci_irq_thread_fn(int irq, void *phy_id) { @@ -325,12 +320,12 @@ } } else { nfc_err(&client->dev, - "st21nfcb platform resources not available\n"); + "st_nci platform resources not available\n"); return -ENODEV; } r = ndlc_probe(phy, &i2c_phy_ops, &client->dev, - ST21NFCB_FRAME_HEADROOM, ST21NFCB_FRAME_TAILROOM, + ST_NCI_FRAME_HEADROOM, ST_NCI_FRAME_TAILROOM, &phy->ndlc); if (r < 0) { nfc_err(&client->dev, "Unable to register ndlc layer\n"); --- linux-raspi2-4.2.0.orig/drivers/nfc/st-nci/ndlc.c +++ linux-raspi2-4.2.0/drivers/nfc/st-nci/ndlc.c @@ -171,6 +171,8 @@ if ((pcb & PCB_TYPE_MASK) == PCB_TYPE_SUPERVISOR) { switch (pcb & PCB_SYNC_MASK) { case PCB_SYNC_ACK: + skb = skb_dequeue(&ndlc->ack_pending_q); + kfree_skb(skb); del_timer_sync(&ndlc->t1_timer); del_timer_sync(&ndlc->t2_timer); ndlc->t2_active = false; @@ -196,8 +198,10 @@ kfree_skb(skb); break; } - } else { + } else if ((pcb & PCB_TYPE_MASK) == PCB_TYPE_DATAFRAME) { nci_recv_frame(ndlc->ndev, skb); + } else { + kfree_skb(skb); } } } --- linux-raspi2-4.2.0.orig/drivers/nfc/st-nci/st-nci_se.c +++ linux-raspi2-4.2.0/drivers/nfc/st-nci/st-nci_se.c @@ -189,14 +189,14 @@ ST_NCI_DEVICE_MGNT_GATE, ST_NCI_DEVICE_MGNT_PIPE); if (r < 0) - goto free_info; + return r; /* Get pipe list */ r = nci_hci_send_cmd(ndev, ST_NCI_DEVICE_MGNT_GATE, ST_NCI_DM_GETINFO, pipe_list, sizeof(pipe_list), &skb_pipe_list); if (r < 0) - goto free_info; + return r; /* Complete the existing gate_pipe table */ for (i = 0; i < skb_pipe_list->len; i++) { @@ -222,6 +222,7 @@ dm_pipe_info->src_host_id != ST_NCI_ESE_HOST_ID) { pr_err("Unexpected apdu_reader pipe on host %x\n", dm_pipe_info->src_host_id); + kfree_skb(skb_pipe_info); continue; } @@ -241,13 +242,12 @@ ndev->hci_dev->pipes[st_nci_gates[j].pipe].host = dm_pipe_info->src_host_id; } + kfree_skb(skb_pipe_info); } memcpy(ndev->hci_dev->init_data.gates, st_nci_gates, sizeof(st_nci_gates)); -free_info: - kfree_skb(skb_pipe_info); kfree_skb(skb_pipe_list); return r; } --- linux-raspi2-4.2.0.orig/drivers/nfc/st21nfca/st21nfca.c +++ linux-raspi2-4.2.0/drivers/nfc/st21nfca/st21nfca.c @@ -148,14 +148,14 @@ ST21NFCA_DEVICE_MGNT_GATE, ST21NFCA_DEVICE_MGNT_PIPE); if (r < 0) - goto free_info; + return r; /* Get pipe list */ r = nfc_hci_send_cmd(hdev, ST21NFCA_DEVICE_MGNT_GATE, ST21NFCA_DM_GETINFO, pipe_list, sizeof(pipe_list), &skb_pipe_list); if (r < 0) - goto free_info; + return r; /* Complete the existing gate_pipe table */ for (i = 0; i < skb_pipe_list->len; i++) { @@ -181,6 +181,7 @@ info->src_host_id != ST21NFCA_ESE_HOST_ID) { pr_err("Unexpected apdu_reader pipe on host %x\n", info->src_host_id); + kfree_skb(skb_pipe_info); continue; } @@ -200,6 +201,7 @@ hdev->pipes[st21nfca_gates[j].pipe].dest_host = info->src_host_id; } + kfree_skb(skb_pipe_info); } /* @@ -214,13 +216,12 @@ st21nfca_gates[i].gate, st21nfca_gates[i].pipe); if (r < 0) - goto free_info; + goto free_list; } } memcpy(hdev->init_data.gates, st21nfca_gates, sizeof(st21nfca_gates)); -free_info: - kfree_skb(skb_pipe_info); +free_list: kfree_skb(skb_pipe_list); return r; } --- linux-raspi2-4.2.0.orig/drivers/ntb/ntb_transport.c +++ linux-raspi2-4.2.0/drivers/ntb/ntb_transport.c @@ -806,10 +806,10 @@ size = max_mw_size; spad = MW0_SZ_HIGH + (i * 2); - ntb_peer_spad_write(ndev, spad, (u32)(size >> 32)); + ntb_peer_spad_write(ndev, spad, upper_32_bits(size)); spad = MW0_SZ_LOW + (i * 2); - ntb_peer_spad_write(ndev, spad, (u32)size); + ntb_peer_spad_write(ndev, spad, lower_32_bits(size)); } ntb_peer_spad_write(ndev, NUM_MWS, nt->mw_count); --- linux-raspi2-4.2.0.orig/drivers/nvdimm/pmem.c +++ linux-raspi2-4.2.0/drivers/nvdimm/pmem.c @@ -86,6 +86,8 @@ struct pmem_device *pmem = bdev->bd_disk->private_data; pmem_do_bvec(pmem, page, PAGE_CACHE_SIZE, 0, rw, sector); + if (rw & WRITE) + wmb_pmem(); page_endio(page, rw & WRITE, 0); return 0; --- linux-raspi2-4.2.0.orig/drivers/of/address.c +++ linux-raspi2-4.2.0/drivers/of/address.c @@ -845,10 +845,10 @@ struct resource res; while (dn) { - if (of_address_to_resource(dn, 0, &res)) - continue; - if (res.start == base_address) + if (!of_address_to_resource(dn, 0, &res) && + res.start == base_address) return dn; + dn = of_find_matching_node(dn, matches); } --- linux-raspi2-4.2.0.orig/drivers/of/fdt.c +++ linux-raspi2-4.2.0/drivers/of/fdt.c @@ -819,14 +819,15 @@ return -ENODEV; while (match->compatible[0]) { - unsigned long addr; + u64 addr; + if (fdt_node_check_compatible(fdt, offset, match->compatible)) { match++; continue; } addr = fdt_translate_address(fdt, offset); - if (!addr) + if (addr == OF_BAD_ADDR) return -ENXIO; of_setup_earlycon(addr, match->data); @@ -945,19 +946,38 @@ /* Retrieve command line */ p = of_get_flat_dt_prop(node, "bootargs", &l); - if (p != NULL && l > 0) - strlcpy(data, p, min((int)l, COMMAND_LINE_SIZE)); /* * CONFIG_CMDLINE is meant to be a default in case nothing else * managed to set the command line, unless CONFIG_CMDLINE_FORCE * is set in which case we override whatever was found earlier. + * + * However, it can be useful to be able to treat the default as + * a starting point to be extended using CONFIG_CMDLINE_EXTEND. */ + ((char *)data)[0] = '\0'; + #ifdef CONFIG_CMDLINE -#ifndef CONFIG_CMDLINE_FORCE - if (!((char *)data)[0]) + strlcpy(data, CONFIG_CMDLINE, COMMAND_LINE_SIZE); + + if (p != NULL && l > 0) { +#if defined(CONFIG_CMDLINE_EXTEND) + int len = strlen(data); + if (len > 0) { + strlcat(data, " ", COMMAND_LINE_SIZE); + len++; + } + strlcpy((char *)data + len, p, min((int)l, COMMAND_LINE_SIZE - len)); +#elif defined(CONFIG_CMDLINE_FORCE) + pr_warning("Ignoring bootargs property (using the default kernel command line)\n"); +#else + /* Neither extend nor force - just override */ + strlcpy(data, p, min((int)l, COMMAND_LINE_SIZE)); #endif - strlcpy(data, CONFIG_CMDLINE, COMMAND_LINE_SIZE); + } +#else /* CONFIG_CMDLINE */ + if (p != NULL && l > 0) { + strlcpy(data, p, min((int)l, COMMAND_LINE_SIZE)); #endif /* CONFIG_CMDLINE */ pr_debug("Command line is: %s\n", (char*)data); @@ -967,7 +987,9 @@ } #ifdef CONFIG_HAVE_MEMBLOCK -#define MAX_PHYS_ADDR ((phys_addr_t)~0) +#ifndef MAX_MEMBLOCK_ADDR +#define MAX_MEMBLOCK_ADDR ((phys_addr_t)~0) +#endif void __init __weak early_init_dt_add_memory_arch(u64 base, u64 size) { @@ -984,16 +1006,16 @@ } size &= PAGE_MASK; - if (base > MAX_PHYS_ADDR) { + if (base > MAX_MEMBLOCK_ADDR) { pr_warning("Ignoring memory block 0x%llx - 0x%llx\n", base, base + size); return; } - if (base + size - 1 > MAX_PHYS_ADDR) { + if (base + size - 1 > MAX_MEMBLOCK_ADDR) { pr_warning("Ignoring memory range 0x%llx - 0x%llx\n", - ((u64)MAX_PHYS_ADDR) + 1, base + size); - size = MAX_PHYS_ADDR - base + 1; + ((u64)MAX_MEMBLOCK_ADDR) + 1, base + size); + size = MAX_MEMBLOCK_ADDR - base + 1; } if (base + size < phys_offset) { --- linux-raspi2-4.2.0.orig/drivers/of/of_mdio.c +++ linux-raspi2-4.2.0/drivers/of/of_mdio.c @@ -266,7 +266,8 @@ bool of_phy_is_fixed_link(struct device_node *np) { struct device_node *dn; - int len; + int len, err; + const char *managed; /* New binding */ dn = of_get_child_by_name(np, "fixed-link"); @@ -275,6 +276,10 @@ return true; } + err = of_property_read_string(np, "managed", &managed); + if (err == 0 && strcmp(managed, "auto") != 0) + return true; + /* Old binding */ if (of_get_property(np, "fixed-link", &len) && len == (5 * sizeof(__be32))) @@ -289,8 +294,18 @@ struct fixed_phy_status status = {}; struct device_node *fixed_link_node; const __be32 *fixed_link_prop; - int len; + int len, err; struct phy_device *phy; + const char *managed; + + err = of_property_read_string(np, "managed", &managed); + if (err == 0) { + if (strcmp(managed, "in-band-status") == 0) { + /* status is zeroed, namely its .link member */ + phy = fixed_phy_register(PHY_POLL, &status, np); + return IS_ERR(phy) ? PTR_ERR(phy) : 0; + } + } /* New binding */ fixed_link_node = of_get_child_by_name(np, "fixed-link"); --- linux-raspi2-4.2.0.orig/drivers/of/of_pci_irq.c +++ linux-raspi2-4.2.0/drivers/of/of_pci_irq.c @@ -38,8 +38,8 @@ */ rc = pci_read_config_byte(pdev, PCI_INTERRUPT_PIN, &pin); if (rc != 0) - return rc; - /* No pin, exit */ + goto err; + /* No pin, exit with no error message. */ if (pin == 0) return -ENODEV; @@ -53,8 +53,10 @@ ppnode = pci_bus_to_OF_node(pdev->bus); /* No node for host bridge ? give up */ - if (ppnode == NULL) - return -EINVAL; + if (ppnode == NULL) { + rc = -EINVAL; + goto err; + } } else { /* We found a P2P bridge, check if it has a node */ ppnode = pci_device_to_OF_node(ppdev); @@ -86,7 +88,13 @@ out_irq->args[0] = pin; laddr[0] = cpu_to_be32((pdev->bus->number << 16) | (pdev->devfn << 8)); laddr[1] = laddr[2] = cpu_to_be32(0); - return of_irq_parse_raw(laddr, out_irq); + rc = of_irq_parse_raw(laddr, out_irq); + if (rc) + goto err; + return 0; +err: + dev_err(&pdev->dev, "of_irq_parse_pci() failed with rc=%d\n", rc); + return rc; } EXPORT_SYMBOL_GPL(of_irq_parse_pci); @@ -105,10 +113,8 @@ int ret; ret = of_irq_parse_pci(dev, &oirq); - if (ret) { - dev_err(&dev->dev, "of_irq_parse_pci() failed with rc=%d\n", ret); + if (ret) return 0; /* Proper return code 0 == NO_IRQ */ - } return irq_create_of_mapping(&oirq); } --- linux-raspi2-4.2.0.orig/drivers/of/of_reserved_mem.c +++ linux-raspi2-4.2.0/drivers/of/of_reserved_mem.c @@ -123,6 +123,10 @@ align = dt_mem_next_cell(dt_root_addr_cells, &prop); } + /* Need adjust the alignment to satisfy the CMA requirement */ + if (IS_ENABLED(CONFIG_CMA) && of_flat_dt_is_compatible(node, "shared-dma-pool")) + align = max(align, (phys_addr_t)PAGE_SIZE << max(MAX_ORDER - 1, pageblock_order)); + prop = of_get_flat_dt_prop(node, "alloc-ranges", &len); if (prop) { --- linux-raspi2-4.2.0.orig/drivers/parisc/lba_pci.c +++ linux-raspi2-4.2.0/drivers/parisc/lba_pci.c @@ -1556,8 +1556,11 @@ if (lba_dev->hba.lmmio_space.flags) pci_add_resource_offset(&resources, &lba_dev->hba.lmmio_space, lba_dev->hba.lmmio_space_offset); - if (lba_dev->hba.gmmio_space.flags) - pci_add_resource(&resources, &lba_dev->hba.gmmio_space); + if (lba_dev->hba.gmmio_space.flags) { + /* pci_add_resource(&resources, &lba_dev->hba.gmmio_space); */ + pr_warn("LBA: Not registering GMMIO space %pR\n", + &lba_dev->hba.gmmio_space); + } pci_add_resource(&resources, &lba_dev->hba.bus_num); --- linux-raspi2-4.2.0.orig/drivers/pci/Kconfig +++ linux-raspi2-4.2.0/drivers/pci/Kconfig @@ -2,7 +2,7 @@ # PCI configuration # config PCI_BUS_ADDR_T_64BIT - def_bool y if (ARCH_DMA_ADDR_T_64BIT || (64BIT && !PARISC)) + def_bool y if (ARCH_DMA_ADDR_T_64BIT || 64BIT) depends on PCI config PCI_MSI --- linux-raspi2-4.2.0.orig/drivers/pci/Makefile +++ linux-raspi2-4.2.0/drivers/pci/Makefile @@ -33,6 +33,7 @@ # obj-$(CONFIG_ALPHA) += setup-irq.o obj-$(CONFIG_ARM) += setup-irq.o +obj-$(CONFIG_ARM64) += setup-irq.o obj-$(CONFIG_UNICORE32) += setup-irq.o obj-$(CONFIG_SUPERH) += setup-irq.o obj-$(CONFIG_MIPS) += setup-irq.o --- linux-raspi2-4.2.0.orig/drivers/pci/access.c +++ linux-raspi2-4.2.0/drivers/pci/access.c @@ -439,6 +439,42 @@ .release = pci_vpd_pci22_release, }; +static ssize_t pci_vpd_f0_read(struct pci_dev *dev, loff_t pos, size_t count, + void *arg) +{ + struct pci_dev *tdev = pci_get_slot(dev->bus, + PCI_DEVFN(PCI_SLOT(dev->devfn), 0)); + ssize_t ret; + + if (!tdev) + return -ENODEV; + + ret = pci_read_vpd(tdev, pos, count, arg); + pci_dev_put(tdev); + return ret; +} + +static ssize_t pci_vpd_f0_write(struct pci_dev *dev, loff_t pos, size_t count, + const void *arg) +{ + struct pci_dev *tdev = pci_get_slot(dev->bus, + PCI_DEVFN(PCI_SLOT(dev->devfn), 0)); + ssize_t ret; + + if (!tdev) + return -ENODEV; + + ret = pci_write_vpd(tdev, pos, count, arg); + pci_dev_put(tdev); + return ret; +} + +static const struct pci_vpd_ops pci_vpd_f0_ops = { + .read = pci_vpd_f0_read, + .write = pci_vpd_f0_write, + .release = pci_vpd_pci22_release, +}; + int pci_vpd_pci22_init(struct pci_dev *dev) { struct pci_vpd_pci22 *vpd; @@ -447,12 +483,16 @@ cap = pci_find_capability(dev, PCI_CAP_ID_VPD); if (!cap) return -ENODEV; + vpd = kzalloc(sizeof(*vpd), GFP_ATOMIC); if (!vpd) return -ENOMEM; vpd->base.len = PCI_VPD_PCI22_SIZE; - vpd->base.ops = &pci_vpd_pci22_ops; + if (dev->dev_flags & PCI_DEV_FLAGS_VPD_REF_F0) + vpd->base.ops = &pci_vpd_f0_ops; + else + vpd->base.ops = &pci_vpd_pci22_ops; mutex_init(&vpd->lock); vpd->cap = cap; vpd->busy = false; --- linux-raspi2-4.2.0.orig/drivers/pci/bus.c +++ linux-raspi2-4.2.0/drivers/pci/bus.c @@ -256,6 +256,8 @@ res->start = start; res->end = end; + res->flags &= ~IORESOURCE_UNSET; + orig_res.flags &= ~IORESOURCE_UNSET; dev_printk(KERN_DEBUG, &dev->dev, "%pR clipped to %pR\n", &orig_res, res); --- linux-raspi2-4.2.0.orig/drivers/pci/host/Kconfig +++ linux-raspi2-4.2.0/drivers/pci/host/Kconfig @@ -53,7 +53,7 @@ config PCI_HOST_GENERIC bool "Generic PCI host controller" - depends on ARM && OF + depends on (ARM || ARM64) && OF help Say Y here if you want to support a simple generic PCI host controller, such as the one emulated by kvmtool. --- linux-raspi2-4.2.0.orig/drivers/pci/host/pci-host-generic.c +++ linux-raspi2-4.2.0/drivers/pci/host/pci-host-generic.c @@ -38,7 +38,16 @@ const struct gen_pci_cfg_bus_ops *ops; }; +/* + * ARM pcibios functions expect the ARM struct pci_sys_data as the PCI + * sysdata. Add pci_sys_data as the first element in struct gen_pci so + * that when we use a gen_pci pointer as sysdata, it is also a pointer to + * a struct pci_sys_data. + */ struct gen_pci { +#ifdef CONFIG_ARM + struct pci_sys_data sys; +#endif struct pci_host_bridge host; struct gen_pci_cfg_windows cfg; struct list_head resources; @@ -48,8 +57,7 @@ unsigned int devfn, int where) { - struct pci_sys_data *sys = bus->sysdata; - struct gen_pci *pci = sys->private_data; + struct gen_pci *pci = bus->sysdata; resource_size_t idx = bus->number - pci->cfg.bus_range->start; return pci->cfg.win[idx] + ((devfn << 8) | where); @@ -64,8 +72,7 @@ unsigned int devfn, int where) { - struct pci_sys_data *sys = bus->sysdata; - struct gen_pci *pci = sys->private_data; + struct gen_pci *pci = bus->sysdata; resource_size_t idx = bus->number - pci->cfg.bus_range->start; return pci->cfg.win[idx] + ((devfn << 12) | where); @@ -198,13 +205,6 @@ return 0; } -static int gen_pci_setup(int nr, struct pci_sys_data *sys) -{ - struct gen_pci *pci = sys->private_data; - list_splice_init(&pci->resources, &sys->resources); - return 1; -} - static int gen_pci_probe(struct platform_device *pdev) { int err; @@ -214,13 +214,7 @@ struct device *dev = &pdev->dev; struct device_node *np = dev->of_node; struct gen_pci *pci = devm_kzalloc(dev, sizeof(*pci), GFP_KERNEL); - struct hw_pci hw = { - .nr_controllers = 1, - .private_data = (void **)&pci, - .setup = gen_pci_setup, - .map_irq = of_irq_parse_and_map_pci, - .ops = &gen_pci_ops, - }; + struct pci_bus *bus, *child; if (!pci) return -ENOMEM; @@ -258,7 +252,27 @@ return err; } - pci_common_init_dev(dev, &hw); + /* Do not reassign resources if probe only */ + if (!pci_has_flag(PCI_PROBE_ONLY)) + pci_add_flags(PCI_REASSIGN_ALL_RSRC | PCI_REASSIGN_ALL_BUS); + + bus = pci_scan_root_bus(dev, 0, &gen_pci_ops, pci, &pci->resources); + if (!bus) { + dev_err(dev, "Scanning rootbus failed"); + return -ENODEV; + } + + pci_fixup_irqs(pci_common_swizzle, of_irq_parse_and_map_pci); + + if (!pci_has_flag(PCI_PROBE_ONLY)) { + pci_bus_size_bridges(bus); + pci_bus_assign_resources(bus); + + list_for_each_entry(child, &bus->children, node) + pcie_bus_configure_settings(child); + } + + pci_bus_add_devices(bus); return 0; } --- linux-raspi2-4.2.0.orig/drivers/pci/host/pcie-spear13xx.c +++ linux-raspi2-4.2.0/drivers/pci/host/pcie-spear13xx.c @@ -163,34 +163,36 @@ * default value in capability register is 512 bytes. So force * it to 128 here. */ - dw_pcie_cfg_read(pp->dbi_base, exp_cap_off + PCI_EXP_DEVCTL, 4, &val); + dw_pcie_cfg_read(pp->dbi_base + exp_cap_off + PCI_EXP_DEVCTL, + 0, 2, &val); val &= ~PCI_EXP_DEVCTL_READRQ; - dw_pcie_cfg_write(pp->dbi_base, exp_cap_off + PCI_EXP_DEVCTL, 4, val); + dw_pcie_cfg_write(pp->dbi_base + exp_cap_off + PCI_EXP_DEVCTL, + 0, 2, val); - dw_pcie_cfg_write(pp->dbi_base, PCI_VENDOR_ID, 2, 0x104A); - dw_pcie_cfg_write(pp->dbi_base, PCI_DEVICE_ID, 2, 0xCD80); + dw_pcie_cfg_write(pp->dbi_base + PCI_VENDOR_ID, 0, 2, 0x104A); + dw_pcie_cfg_write(pp->dbi_base + PCI_VENDOR_ID, 2, 2, 0xCD80); /* * if is_gen1 is set then handle it, so that some buggy card * also works */ if (spear13xx_pcie->is_gen1) { - dw_pcie_cfg_read(pp->dbi_base, exp_cap_off + PCI_EXP_LNKCAP, 4, - &val); + dw_pcie_cfg_read(pp->dbi_base + exp_cap_off + PCI_EXP_LNKCAP, + 0, 4, &val); if ((val & PCI_EXP_LNKCAP_SLS) != PCI_EXP_LNKCAP_SLS_2_5GB) { val &= ~((u32)PCI_EXP_LNKCAP_SLS); val |= PCI_EXP_LNKCAP_SLS_2_5GB; - dw_pcie_cfg_write(pp->dbi_base, exp_cap_off + - PCI_EXP_LNKCAP, 4, val); + dw_pcie_cfg_write(pp->dbi_base + exp_cap_off + + PCI_EXP_LNKCAP, 0, 4, val); } - dw_pcie_cfg_read(pp->dbi_base, exp_cap_off + PCI_EXP_LNKCTL2, 4, - &val); + dw_pcie_cfg_read(pp->dbi_base + exp_cap_off + PCI_EXP_LNKCTL2, + 0, 2, &val); if ((val & PCI_EXP_LNKCAP_SLS) != PCI_EXP_LNKCAP_SLS_2_5GB) { val &= ~((u32)PCI_EXP_LNKCAP_SLS); val |= PCI_EXP_LNKCAP_SLS_2_5GB; - dw_pcie_cfg_write(pp->dbi_base, exp_cap_off + - PCI_EXP_LNKCTL2, 4, val); + dw_pcie_cfg_write(pp->dbi_base + exp_cap_off + + PCI_EXP_LNKCTL2, 0, 2, val); } } --- linux-raspi2-4.2.0.orig/drivers/pci/iov.c +++ linux-raspi2-4.2.0/drivers/pci/iov.c @@ -54,24 +54,29 @@ * The PF consumes one bus number. NumVFs, First VF Offset, and VF Stride * determine how many additional bus numbers will be consumed by VFs. * - * Iterate over all valid NumVFs and calculate the maximum number of bus - * numbers that could ever be required. + * Iterate over all valid NumVFs, validate offset and stride, and calculate + * the maximum number of bus numbers that could ever be required. */ -static inline u8 virtfn_max_buses(struct pci_dev *dev) +static int compute_max_vf_buses(struct pci_dev *dev) { struct pci_sriov *iov = dev->sriov; - int nr_virtfn; - u8 max = 0; - int busnr; + int nr_virtfn, busnr, rc = 0; - for (nr_virtfn = 1; nr_virtfn <= iov->total_VFs; nr_virtfn++) { + for (nr_virtfn = iov->total_VFs; nr_virtfn; nr_virtfn--) { pci_iov_set_numvfs(dev, nr_virtfn); + if (!iov->offset || (nr_virtfn > 1 && !iov->stride)) { + rc = -EIO; + goto out; + } + busnr = pci_iov_virtfn_bus(dev, nr_virtfn - 1); - if (busnr > max) - max = busnr; + if (busnr > iov->max_VF_buses) + iov->max_VF_buses = busnr; } - return max; +out: + pci_iov_set_numvfs(dev, 0); + return rc; } static struct pci_bus *virtfn_add_bus(struct pci_bus *bus, int busnr) @@ -384,7 +389,7 @@ int rc; int nres; u32 pgsz; - u16 ctrl, total, offset, stride; + u16 ctrl, total; struct pci_sriov *iov; struct resource *res; struct pci_dev *pdev; @@ -414,11 +419,6 @@ found: pci_write_config_word(dev, pos + PCI_SRIOV_CTRL, ctrl); - pci_write_config_word(dev, pos + PCI_SRIOV_NUM_VF, 0); - pci_read_config_word(dev, pos + PCI_SRIOV_VF_OFFSET, &offset); - pci_read_config_word(dev, pos + PCI_SRIOV_VF_STRIDE, &stride); - if (!offset || (total > 1 && !stride)) - return -EIO; pci_read_config_dword(dev, pos + PCI_SRIOV_SUP_PGSIZE, &pgsz); i = PAGE_SHIFT > 12 ? PAGE_SHIFT - 12 : 0; @@ -456,8 +456,6 @@ iov->nres = nres; iov->ctrl = ctrl; iov->total_VFs = total; - iov->offset = offset; - iov->stride = stride; iov->pgsz = pgsz; iov->self = dev; pci_read_config_dword(dev, pos + PCI_SRIOV_CAP, &iov->cap); @@ -474,10 +472,15 @@ dev->sriov = iov; dev->is_physfn = 1; - iov->max_VF_buses = virtfn_max_buses(dev); + rc = compute_max_vf_buses(dev); + if (rc) + goto fail_max_buses; return 0; +fail_max_buses: + dev->sriov = NULL; + dev->is_physfn = 0; failed: for (i = 0; i < PCI_SRIOV_NUM_BARS; i++) { res = &dev->resource[i + PCI_IOV_RESOURCES]; --- linux-raspi2-4.2.0.orig/drivers/pci/pci-sysfs.c +++ linux-raspi2-4.2.0/drivers/pci/pci-sysfs.c @@ -216,7 +216,7 @@ if (ret) return ret; - if (!node_online(node)) + if (node >= MAX_NUMNODES || !node_online(node)) return -EINVAL; add_taint(TAINT_FIRMWARE_WORKAROUND, LOCKDEP_STILL_OK); --- linux-raspi2-4.2.0.orig/drivers/pci/quirks.c +++ linux-raspi2-4.2.0/drivers/pci/quirks.c @@ -41,6 +41,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" this now blacklisted device. @@ -1569,6 +1584,18 @@ #endif +static void quirk_jmicron_async_suspend(struct pci_dev *dev) +{ + if (dev->multifunction) { + device_disable_async_suspend(&dev->dev); + dev_info(&dev->dev, "async suspend disabled to avoid multi-function power-on ordering issue\n"); + } +} +DECLARE_PCI_FIXUP_CLASS_FINAL(PCI_VENDOR_ID_JMICRON, PCI_ANY_ID, PCI_CLASS_STORAGE_IDE, 8, quirk_jmicron_async_suspend); +DECLARE_PCI_FIXUP_CLASS_FINAL(PCI_VENDOR_ID_JMICRON, PCI_ANY_ID, PCI_CLASS_STORAGE_SATA_AHCI, 0, quirk_jmicron_async_suspend); +DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_JMICRON, 0x2362, quirk_jmicron_async_suspend); +DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_JMICRON, 0x236f, quirk_jmicron_async_suspend); + #ifdef CONFIG_X86_IO_APIC static void quirk_alder_ioapic(struct pci_dev *pdev) { @@ -1894,6 +1921,31 @@ DECLARE_PCI_FIXUP_CLASS_HEADER(PCI_VENDOR_ID_NETMOS, PCI_ANY_ID, PCI_CLASS_COMMUNICATION_SERIAL, 8, quirk_netmos); +/* + * Quirk non-zero PCI functions to route VPD access through function 0 for + * devices that share VPD resources between functions. The functions are + * expected to be identical devices. + */ +static void quirk_f0_vpd_link(struct pci_dev *dev) +{ + struct pci_dev *f0; + + if (!PCI_FUNC(dev->devfn)) + return; + + f0 = pci_get_slot(dev->bus, PCI_DEVFN(PCI_SLOT(dev->devfn), 0)); + if (!f0) + return; + + if (f0->vpd && dev->class == f0->class && + dev->vendor == f0->vendor && dev->device == f0->device) + dev->dev_flags |= PCI_DEV_FLAGS_VPD_REF_F0; + + pci_dev_put(f0); +} +DECLARE_PCI_FIXUP_CLASS_EARLY(PCI_VENDOR_ID_INTEL, PCI_ANY_ID, + PCI_CLASS_NETWORK_ETHERNET, 8, quirk_f0_vpd_link); + static void quirk_e100_interrupt(struct pci_dev *dev) { u16 command, pmcsr; @@ -2829,12 +2881,15 @@ static void fixup_ti816x_class(struct pci_dev *dev) { + u32 class = dev->class; + /* TI 816x devices do not have class code set when in PCIe boot mode */ - dev_info(&dev->dev, "Setting PCI class for 816x PCIe device\n"); - dev->class = PCI_CLASS_MULTIMEDIA_VIDEO; + dev->class = PCI_CLASS_MULTIMEDIA_VIDEO << 8; + dev_info(&dev->dev, "PCI class overridden (%#08x -> %#08x)\n", + class, dev->class); } DECLARE_PCI_FIXUP_CLASS_EARLY(PCI_VENDOR_ID_TI, 0xb800, - PCI_CLASS_NOT_DEFINED, 0, fixup_ti816x_class); + PCI_CLASS_NOT_DEFINED, 0, fixup_ti816x_class); /* Some PCIe devices do not work reliably with the claimed maximum * payload size supported. --- linux-raspi2-4.2.0.orig/drivers/pcmcia/sa1100_generic.c +++ linux-raspi2-4.2.0/drivers/pcmcia/sa1100_generic.c @@ -93,7 +93,6 @@ for (i = 0; i < sinfo->nskt; i++) soc_pcmcia_remove_one(&sinfo->skt[i]); - clk_put(sinfo->clk); kfree(sinfo); return 0; } --- linux-raspi2-4.2.0.orig/drivers/pcmcia/sa11xx_base.c +++ linux-raspi2-4.2.0/drivers/pcmcia/sa11xx_base.c @@ -222,7 +222,7 @@ int i, ret = 0; struct clk *clk; - clk = clk_get(dev, NULL); + clk = devm_clk_get(dev, NULL); if (IS_ERR(clk)) return PTR_ERR(clk); @@ -251,7 +251,6 @@ if (ret) { while (--i >= 0) soc_pcmcia_remove_one(&sinfo->skt[i]); - clk_put(clk); kfree(sinfo); } else { dev_set_drvdata(dev, sinfo); --- linux-raspi2-4.2.0.orig/drivers/pinctrl/Makefile +++ linux-raspi2-4.2.0/drivers/pinctrl/Makefile @@ -40,6 +40,7 @@ obj-$(CONFIG_PINCTRL_ST) += pinctrl-st.o obj-$(CONFIG_PINCTRL_ZYNQ) += pinctrl-zynq.o +obj-$(CONFIG_ARCH_BCM2708)$(CONFIG_ARCH_BCM2709) += bcm/ obj-$(CONFIG_ARCH_BCM) += bcm/ obj-$(CONFIG_ARCH_BERLIN) += berlin/ obj-y += freescale/ --- linux-raspi2-4.2.0.orig/drivers/pinctrl/bcm/pinctrl-bcm2835.c +++ linux-raspi2-4.2.0/drivers/pinctrl/bcm/pinctrl-bcm2835.c @@ -47,6 +47,7 @@ #define MODULE_NAME "pinctrl-bcm2835" #define BCM2835_NUM_GPIOS 54 #define BCM2835_NUM_BANKS 2 +#define BCM2835_NUM_IRQS 3 #define BCM2835_PIN_BITMAP_SZ \ DIV_ROUND_UP(BCM2835_NUM_GPIOS, sizeof(unsigned long) * 8) @@ -88,13 +89,13 @@ struct bcm2835_gpio_irqdata { struct bcm2835_pinctrl *pc; - int bank; + int irqgroup; }; struct bcm2835_pinctrl { struct device *dev; void __iomem *base; - int irq[BCM2835_NUM_BANKS]; + int irq[BCM2835_NUM_IRQS]; /* note: locking assumes each bank will have its own unsigned long */ unsigned long enabled_irq_map[BCM2835_NUM_BANKS]; @@ -105,7 +106,7 @@ struct gpio_chip gpio_chip; struct pinctrl_gpio_range gpio_range; - struct bcm2835_gpio_irqdata irq_data[BCM2835_NUM_BANKS]; + struct bcm2835_gpio_irqdata irq_data[BCM2835_NUM_IRQS]; spinlock_t irq_lock[BCM2835_NUM_BANKS]; }; @@ -355,7 +356,14 @@ static int bcm2835_gpio_direction_output(struct gpio_chip *chip, unsigned offset, int value) { - return pinctrl_gpio_direction_output(chip->base + offset); + struct bcm2835_pinctrl *pc = dev_get_drvdata(chip->dev); + int ret; + + ret = pinctrl_gpio_direction_output(chip->base + offset); + if (ret >= 0) + bcm2835_gpio_set_bit(pc, value ? GPSET0 : GPCLR0, offset); + + return ret; } static void bcm2835_gpio_set(struct gpio_chip *chip, unsigned offset, int value) @@ -382,22 +390,21 @@ .get = bcm2835_gpio_get, .set = bcm2835_gpio_set, .to_irq = bcm2835_gpio_to_irq, - .base = -1, + .base = 0, .ngpio = BCM2835_NUM_GPIOS, .can_sleep = false, }; -static irqreturn_t bcm2835_gpio_irq_handler(int irq, void *dev_id) +static int bcm2835_gpio_irq_handle_bank(struct bcm2835_pinctrl *pc, + unsigned int bank, u32 mask) { - struct bcm2835_gpio_irqdata *irqdata = dev_id; - struct bcm2835_pinctrl *pc = irqdata->pc; - int bank = irqdata->bank; unsigned long events; unsigned offset; unsigned gpio; unsigned int type; events = bcm2835_gpio_rd(pc, GPEDS0 + bank * 4); + events &= mask; events &= pc->enabled_irq_map[bank]; for_each_set_bit(offset, &events, 32) { gpio = (32 * bank) + offset; @@ -405,7 +412,30 @@ generic_handle_irq(irq_linear_revmap(pc->irq_domain, gpio)); } - return events ? IRQ_HANDLED : IRQ_NONE; + + return (events != 0); +} + +static irqreturn_t bcm2835_gpio_irq_handler(int irq, void *dev_id) +{ + struct bcm2835_gpio_irqdata *irqdata = dev_id; + struct bcm2835_pinctrl *pc = irqdata->pc; + int handled = 0; + + switch (irqdata->irqgroup) { + case 0: /* IRQ0 covers GPIOs 0-27 */ + handled = bcm2835_gpio_irq_handle_bank(pc, 0, 0x0fffffff); + break; + case 1: /* IRQ1 covers GPIOs 28-45 */ + handled = bcm2835_gpio_irq_handle_bank(pc, 0, 0xf0000000) | + bcm2835_gpio_irq_handle_bank(pc, 1, 0x00003fff); + break; + case 2: /* IRQ2 covers GPIOs 46-53 */ + handled = bcm2835_gpio_irq_handle_bank(pc, 1, 0x003fc000); + break; + } + + return handled ? IRQ_HANDLED : IRQ_NONE; } static inline void __bcm2835_gpio_irq_config(struct bcm2835_pinctrl *pc, @@ -995,8 +1025,6 @@ for (i = 0; i < BCM2835_NUM_BANKS; i++) { unsigned long events; unsigned offset; - int len; - char *name; /* clear event detection flags */ bcm2835_gpio_wr(pc, GPREN0 + i * 4, 0); @@ -1011,10 +1039,17 @@ for_each_set_bit(offset, &events, 32) bcm2835_gpio_wr(pc, GPEDS0 + i * 4, BIT(offset)); + spin_lock_init(&pc->irq_lock[i]); + } + + for (i = 0; i < BCM2835_NUM_IRQS; i++) { + int len; + char *name; pc->irq[i] = irq_of_parse_and_map(np, i); + if (pc->irq[i] == 0) + break; pc->irq_data[i].pc = pc; - pc->irq_data[i].bank = i; - spin_lock_init(&pc->irq_lock[i]); + pc->irq_data[i].irqgroup = i; len = strlen(dev_name(pc->dev)) + 16; name = devm_kzalloc(pc->dev, len, GFP_KERNEL); @@ -1072,6 +1107,7 @@ .remove = bcm2835_pinctrl_remove, .driver = { .name = MODULE_NAME, + .owner = THIS_MODULE, .of_match_table = bcm2835_pinctrl_match, }, }; --- linux-raspi2-4.2.0.orig/drivers/pinctrl/freescale/pinctrl-imx25.c +++ linux-raspi2-4.2.0/drivers/pinctrl/freescale/pinctrl-imx25.c @@ -26,7 +26,8 @@ #include "pinctrl-imx.h" enum imx25_pads { - MX25_PAD_RESERVE0 = 1, + MX25_PAD_RESERVE0 = 0, + MX25_PAD_RESERVE1 = 1, MX25_PAD_A10 = 2, MX25_PAD_A13 = 3, MX25_PAD_A14 = 4, @@ -169,6 +170,7 @@ /* Pad names for the pinmux subsystem */ static const struct pinctrl_pin_desc imx25_pinctrl_pads[] = { IMX_PINCTRL_PIN(MX25_PAD_RESERVE0), + IMX_PINCTRL_PIN(MX25_PAD_RESERVE1), IMX_PINCTRL_PIN(MX25_PAD_A10), IMX_PINCTRL_PIN(MX25_PAD_A13), IMX_PINCTRL_PIN(MX25_PAD_A14), --- linux-raspi2-4.2.0.orig/drivers/pinctrl/intel/pinctrl-baytrail.c +++ linux-raspi2-4.2.0/drivers/pinctrl/intel/pinctrl-baytrail.c @@ -146,7 +146,7 @@ struct byt_gpio { struct gpio_chip chip; struct platform_device *pdev; - spinlock_t lock; + raw_spinlock_t lock; void __iomem *reg_base; struct pinctrl_gpio_range *range; struct byt_gpio_pin_context *saved_context; @@ -174,11 +174,11 @@ unsigned long flags; u32 value; - spin_lock_irqsave(&vg->lock, flags); + raw_spin_lock_irqsave(&vg->lock, flags); value = readl(reg); value &= ~(BYT_TRIG_POS | BYT_TRIG_NEG | BYT_TRIG_LVL); writel(value, reg); - spin_unlock_irqrestore(&vg->lock, flags); + raw_spin_unlock_irqrestore(&vg->lock, flags); } static u32 byt_get_gpio_mux(struct byt_gpio *vg, unsigned offset) @@ -201,6 +201,9 @@ struct byt_gpio *vg = to_byt_gpio(chip); void __iomem *reg = byt_gpio_reg(chip, offset, BYT_CONF0_REG); u32 value, gpio_mux; + unsigned long flags; + + raw_spin_lock_irqsave(&vg->lock, flags); /* * In most cases, func pin mux 000 means GPIO function. @@ -214,18 +217,16 @@ value = readl(reg) & BYT_PIN_MUX; gpio_mux = byt_get_gpio_mux(vg, offset); if (WARN_ON(gpio_mux != value)) { - unsigned long flags; - - spin_lock_irqsave(&vg->lock, flags); value = readl(reg) & ~BYT_PIN_MUX; value |= gpio_mux; writel(value, reg); - spin_unlock_irqrestore(&vg->lock, flags); dev_warn(&vg->pdev->dev, "pin %u forcibly re-configured as GPIO\n", offset); } + raw_spin_unlock_irqrestore(&vg->lock, flags); + pm_runtime_get(&vg->pdev->dev); return 0; @@ -250,7 +251,7 @@ if (offset >= vg->chip.ngpio) return -EINVAL; - spin_lock_irqsave(&vg->lock, flags); + raw_spin_lock_irqsave(&vg->lock, flags); value = readl(reg); WARN(value & BYT_DIRECT_IRQ_EN, @@ -269,7 +270,7 @@ else if (type & IRQ_TYPE_LEVEL_MASK) __irq_set_handler_locked(d->irq, handle_level_irq); - spin_unlock_irqrestore(&vg->lock, flags); + raw_spin_unlock_irqrestore(&vg->lock, flags); return 0; } @@ -277,7 +278,15 @@ static int byt_gpio_get(struct gpio_chip *chip, unsigned offset) { void __iomem *reg = byt_gpio_reg(chip, offset, BYT_VAL_REG); - return readl(reg) & BYT_LEVEL; + struct byt_gpio *vg = to_byt_gpio(chip); + unsigned long flags; + u32 val; + + raw_spin_lock_irqsave(&vg->lock, flags); + val = readl(reg); + raw_spin_unlock_irqrestore(&vg->lock, flags); + + return val & BYT_LEVEL; } static void byt_gpio_set(struct gpio_chip *chip, unsigned offset, int value) @@ -287,7 +296,7 @@ unsigned long flags; u32 old_val; - spin_lock_irqsave(&vg->lock, flags); + raw_spin_lock_irqsave(&vg->lock, flags); old_val = readl(reg); @@ -296,7 +305,7 @@ else writel(old_val & ~BYT_LEVEL, reg); - spin_unlock_irqrestore(&vg->lock, flags); + raw_spin_unlock_irqrestore(&vg->lock, flags); } static int byt_gpio_direction_input(struct gpio_chip *chip, unsigned offset) @@ -306,13 +315,13 @@ unsigned long flags; u32 value; - spin_lock_irqsave(&vg->lock, flags); + raw_spin_lock_irqsave(&vg->lock, flags); value = readl(reg) | BYT_DIR_MASK; value &= ~BYT_INPUT_EN; /* active low */ writel(value, reg); - spin_unlock_irqrestore(&vg->lock, flags); + raw_spin_unlock_irqrestore(&vg->lock, flags); return 0; } @@ -326,7 +335,7 @@ unsigned long flags; u32 reg_val; - spin_lock_irqsave(&vg->lock, flags); + raw_spin_lock_irqsave(&vg->lock, flags); /* * Before making any direction modifications, do a check if gpio @@ -345,7 +354,7 @@ else writel(reg_val & ~BYT_LEVEL, reg); - spin_unlock_irqrestore(&vg->lock, flags); + raw_spin_unlock_irqrestore(&vg->lock, flags); return 0; } @@ -354,18 +363,19 @@ { struct byt_gpio *vg = to_byt_gpio(chip); int i; - unsigned long flags; u32 conf0, val, offs; - spin_lock_irqsave(&vg->lock, flags); - for (i = 0; i < vg->chip.ngpio; i++) { const char *pull_str = NULL; const char *pull = NULL; + unsigned long flags; const char *label; offs = vg->range->pins[i] * 16; + + raw_spin_lock_irqsave(&vg->lock, flags); conf0 = readl(vg->reg_base + offs + BYT_CONF0_REG); val = readl(vg->reg_base + offs + BYT_VAL_REG); + raw_spin_unlock_irqrestore(&vg->lock, flags); label = gpiochip_is_requested(chip, i); if (!label) @@ -418,7 +428,6 @@ seq_puts(s, "\n"); } - spin_unlock_irqrestore(&vg->lock, flags); } static void byt_gpio_irq_handler(unsigned irq, struct irq_desc *desc) @@ -450,8 +459,10 @@ unsigned offset = irqd_to_hwirq(d); void __iomem *reg; + raw_spin_lock(&vg->lock); reg = byt_gpio_reg(&vg->chip, offset, BYT_INT_STAT_REG); writel(BIT(offset % 32), reg); + raw_spin_unlock(&vg->lock); } static void byt_irq_unmask(struct irq_data *d) @@ -463,9 +474,9 @@ void __iomem *reg; u32 value; - spin_lock_irqsave(&vg->lock, flags); - reg = byt_gpio_reg(&vg->chip, offset, BYT_CONF0_REG); + + raw_spin_lock_irqsave(&vg->lock, flags); value = readl(reg); switch (irqd_get_trigger_type(d)) { @@ -486,7 +497,7 @@ writel(value, reg); - spin_unlock_irqrestore(&vg->lock, flags); + raw_spin_unlock_irqrestore(&vg->lock, flags); } static void byt_irq_mask(struct irq_data *d) @@ -578,7 +589,7 @@ if (IS_ERR(vg->reg_base)) return PTR_ERR(vg->reg_base); - spin_lock_init(&vg->lock); + raw_spin_lock_init(&vg->lock); gc = &vg->chip; gc->label = dev_name(&pdev->dev); --- linux-raspi2-4.2.0.orig/drivers/pinctrl/mediatek/pinctrl-mtk-common.c +++ linux-raspi2-4.2.0/drivers/pinctrl/mediatek/pinctrl-mtk-common.c @@ -1202,12 +1202,6 @@ return 0; } -static struct pinctrl_desc mtk_pctrl_desc = { - .confops = &mtk_pconf_ops, - .pctlops = &mtk_pctrl_ops, - .pmxops = &mtk_pmx_ops, -}; - int mtk_pctrl_init(struct platform_device *pdev, const struct mtk_pinctrl_devdata *data, struct regmap *regmap) @@ -1265,12 +1259,17 @@ for (i = 0; i < pctl->devdata->npins; i++) pins[i] = pctl->devdata->pins[i].pin; - mtk_pctrl_desc.name = dev_name(&pdev->dev); - mtk_pctrl_desc.owner = THIS_MODULE; - mtk_pctrl_desc.pins = pins; - mtk_pctrl_desc.npins = pctl->devdata->npins; + + pctl->pctl_desc.name = dev_name(&pdev->dev); + pctl->pctl_desc.owner = THIS_MODULE; + pctl->pctl_desc.pins = pins; + pctl->pctl_desc.npins = pctl->devdata->npins; + pctl->pctl_desc.confops = &mtk_pconf_ops; + pctl->pctl_desc.pctlops = &mtk_pctrl_ops; + pctl->pctl_desc.pmxops = &mtk_pmx_ops; pctl->dev = &pdev->dev; - pctl->pctl_dev = pinctrl_register(&mtk_pctrl_desc, &pdev->dev, pctl); + + pctl->pctl_dev = pinctrl_register(&pctl->pctl_desc, &pdev->dev, pctl); if (IS_ERR(pctl->pctl_dev)) { dev_err(&pdev->dev, "couldn't register pinctrl driver\n"); return PTR_ERR(pctl->pctl_dev); --- linux-raspi2-4.2.0.orig/drivers/pinctrl/mediatek/pinctrl-mtk-common.h +++ linux-raspi2-4.2.0/drivers/pinctrl/mediatek/pinctrl-mtk-common.h @@ -256,6 +256,7 @@ struct mtk_pinctrl { struct regmap *regmap1; struct regmap *regmap2; + struct pinctrl_desc pctl_desc; struct device *dev; struct gpio_chip *chip; struct mtk_pinctrl_group *groups; --- linux-raspi2-4.2.0.orig/drivers/pinctrl/pinctrl-at91.c +++ linux-raspi2-4.2.0/drivers/pinctrl/pinctrl-at91.c @@ -320,6 +320,9 @@ static void __iomem *pin_to_controller(struct at91_pinctrl *info, unsigned int bank) { + if (!gpio_chips[bank]) + return NULL; + return gpio_chips[bank]->regbase; } @@ -729,6 +732,10 @@ pin = &pins_conf[i]; at91_pin_dbg(info->dev, pin); pio = pin_to_controller(info, pin->bank); + + if (!pio) + continue; + mask = pin_to_mask(pin->pin); at91_mux_disable_interrupt(pio, mask); switch (pin->mux) { @@ -848,6 +855,10 @@ *config = 0; dev_dbg(info->dev, "%s:%d, pin_id=%d", __func__, __LINE__, pin_id); pio = pin_to_controller(info, pin_to_bank(pin_id)); + + if (!pio) + return -EINVAL; + pin = pin_id % MAX_NB_GPIO_PER_BANK; if (at91_mux_get_multidrive(pio, pin)) @@ -889,6 +900,10 @@ "%s:%d, pin_id=%d, config=0x%lx", __func__, __LINE__, pin_id, config); pio = pin_to_controller(info, pin_to_bank(pin_id)); + + if (!pio) + return -EINVAL; + pin = pin_id % MAX_NB_GPIO_PER_BANK; mask = pin_to_mask(pin); --- linux-raspi2-4.2.0.orig/drivers/pinctrl/pinctrl-single.c +++ linux-raspi2-4.2.0/drivers/pinctrl/pinctrl-single.c @@ -1983,7 +1983,6 @@ }; static const struct pcs_soc_data pinctrl_single_dra7 = { - .flags = PCS_QUIRK_SHARED_IRQ, .irq_enable_mask = (1 << 24), /* WAKEUPENABLE */ .irq_status_mask = (1 << 25), /* WAKEUPEVENT */ }; --- linux-raspi2-4.2.0.orig/drivers/platform/x86/hp-wmi.c +++ linux-raspi2-4.2.0/drivers/platform/x86/hp-wmi.c @@ -54,8 +54,9 @@ #define HPWMI_HARDWARE_QUERY 0x4 #define HPWMI_WIRELESS_QUERY 0x5 #define HPWMI_BIOS_QUERY 0x9 +#define HPWMI_FEATURE_QUERY 0xb #define HPWMI_HOTKEY_QUERY 0xc -#define HPWMI_FEATURE_QUERY 0xd +#define HPWMI_FEATURE2_QUERY 0xd #define HPWMI_WIRELESS2_QUERY 0x1b #define HPWMI_POSTCODEERROR_QUERY 0x2a @@ -295,25 +296,33 @@ return (state & 0x4) ? 1 : 0; } -static int __init hp_wmi_bios_2009_later(void) +static int __init hp_wmi_bios_2008_later(void) { int state = 0; int ret = hp_wmi_perform_query(HPWMI_FEATURE_QUERY, 0, &state, sizeof(state), sizeof(state)); - if (ret) - return ret; + if (!ret) + return 1; - return (state & 0x10) ? 1 : 0; + return (ret == HPWMI_RET_UNKNOWN_CMDTYPE) ? 0 : -ENXIO; } -static int hp_wmi_enable_hotkeys(void) +static int __init hp_wmi_bios_2009_later(void) { - int ret; - int query = 0x6e; + int state = 0; + int ret = hp_wmi_perform_query(HPWMI_FEATURE2_QUERY, 0, &state, + sizeof(state), sizeof(state)); + if (!ret) + return 1; - ret = hp_wmi_perform_query(HPWMI_BIOS_QUERY, 1, &query, sizeof(query), - 0); + return (ret == HPWMI_RET_UNKNOWN_CMDTYPE) ? 0 : -ENXIO; +} +static int __init hp_wmi_enable_hotkeys(void) +{ + int value = 0x6e; + int ret = hp_wmi_perform_query(HPWMI_BIOS_QUERY, 1, &value, + sizeof(value), 0); if (ret) return -EINVAL; return 0; @@ -663,7 +672,7 @@ hp_wmi_tablet_state()); input_sync(hp_wmi_input_dev); - if (hp_wmi_bios_2009_later() == 4) + if (!hp_wmi_bios_2009_later() && hp_wmi_bios_2008_later()) hp_wmi_enable_hotkeys(); status = wmi_install_notify_handler(HPWMI_EVENT_GUID, hp_wmi_notify, NULL); --- linux-raspi2-4.2.0.orig/drivers/platform/x86/ideapad-laptop.c +++ linux-raspi2-4.2.0/drivers/platform/x86/ideapad-laptop.c @@ -853,12 +853,26 @@ }, }, { + .ident = "Lenovo Yoga 3 14", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"), + DMI_MATCH(DMI_PRODUCT_VERSION, "Lenovo Yoga 3 14"), + }, + }, + { .ident = "Lenovo Yoga 3 Pro 1370", .matches = { DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"), DMI_MATCH(DMI_PRODUCT_VERSION, "Lenovo YOGA 3 Pro-1370"), }, }, + { + .ident = "Lenovo Yoga 900", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"), + DMI_MATCH(DMI_PRODUCT_VERSION, "Lenovo YOGA 900"), + }, + }, {} }; --- linux-raspi2-4.2.0.orig/drivers/platform/x86/intel_ips.c +++ linux-raspi2-4.2.0/drivers/platform/x86/intel_ips.c @@ -1501,6 +1501,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-raspi2-4.2.0.orig/drivers/platform/x86/intel_pmc_ipc.c +++ linux-raspi2-4.2.0/drivers/platform/x86/intel_pmc_ipc.c @@ -33,7 +33,7 @@ #include #include #include -#include +#include /* * IPC registers @@ -473,9 +473,9 @@ }, }; -static struct lpc_ich_info tco_info = { +static struct itco_wdt_platform_data tco_info = { .name = "Apollo Lake SoC", - .iTCO_version = 3, + .version = 3, }; static int ipc_create_punit_device(void) @@ -552,8 +552,7 @@ goto err; } - ret = platform_device_add_data(pdev, &tco_info, - sizeof(struct lpc_ich_info)); + ret = platform_device_add_data(pdev, &tco_info, sizeof(tco_info)); if (ret) { dev_err(ipcdev.dev, "Failed to add tco platform data\n"); goto err; --- linux-raspi2-4.2.0.orig/drivers/platform/x86/toshiba_acpi.c +++ linux-raspi2-4.2.0/drivers/platform/x86/toshiba_acpi.c @@ -2408,11 +2408,9 @@ if (error) return error; - error = toshiba_hotkey_event_type_get(dev, &events_type); - if (error) { - pr_err("Unable to query Hotkey Event Type\n"); - return error; - } + if (toshiba_hotkey_event_type_get(dev, &events_type)) + pr_notice("Unable to query Hotkey Event Type\n"); + dev->hotkey_event_type = events_type; dev->hotkey_dev = input_allocate_device(); @@ -2640,6 +2638,7 @@ ret = toshiba_function_keys_get(dev, &special_functions); dev->kbd_function_keys_supported = !ret; + dev->hotkey_event_type = 0; if (toshiba_acpi_setup_keyboard(dev)) pr_info("Unable to activate hotkeys\n"); --- linux-raspi2-4.2.0.orig/drivers/pnp/isapnp/core.c +++ linux-raspi2-4.2.0/drivers/pnp/isapnp/core.c @@ -41,6 +41,7 @@ #include #include #include +#include #include #include "../base.h" @@ -990,7 +991,7 @@ .disable = isapnp_disable_resources, }; -static int __init isapnp_init(void) +static int __init real_isapnp_init(void) { int cards; struct pnp_card *card; @@ -1084,6 +1085,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-raspi2-4.2.0.orig/drivers/power/avs/Kconfig +++ linux-raspi2-4.2.0/drivers/power/avs/Kconfig @@ -13,7 +13,7 @@ config ROCKCHIP_IODOMAIN tristate "Rockchip IO domain support" - depends on ARCH_ROCKCHIP && OF + depends on POWER_AVS && ARCH_ROCKCHIP && OF help Say y here to enable support io domains on Rockchip SoCs. It is necessary for the io domain setting of the SoC to match the --- linux-raspi2-4.2.0.orig/drivers/power/reset/gpio-poweroff.c +++ linux-raspi2-4.2.0/drivers/power/reset/gpio-poweroff.c @@ -49,9 +49,11 @@ { bool input = false; enum gpiod_flags flags; + bool force = false; /* If a pm_power_off function has already been added, leave it alone */ - if (pm_power_off != NULL) { + force = of_property_read_bool(pdev->dev.of_node, "force"); + if (!force && (pm_power_off != NULL)) { dev_err(&pdev->dev, "%s: pm_power_off function already registered", __func__); --- linux-raspi2-4.2.0.orig/drivers/power/wm831x_power.c +++ linux-raspi2-4.2.0/drivers/power/wm831x_power.c @@ -572,7 +572,7 @@ irq = wm831x_irq(wm831x, platform_get_irq_byname(pdev, "SYSLO")); ret = request_threaded_irq(irq, NULL, wm831x_syslo_irq, - IRQF_TRIGGER_RISING, "System power low", + IRQF_TRIGGER_RISING | IRQF_ONESHOT, "System power low", power); if (ret != 0) { dev_err(&pdev->dev, "Failed to request SYSLO IRQ %d: %d\n", @@ -582,7 +582,7 @@ irq = wm831x_irq(wm831x, platform_get_irq_byname(pdev, "PWR SRC")); ret = request_threaded_irq(irq, NULL, wm831x_pwr_src_irq, - IRQF_TRIGGER_RISING, "Power source", + IRQF_TRIGGER_RISING | IRQF_ONESHOT, "Power source", power); if (ret != 0) { dev_err(&pdev->dev, "Failed to request PWR SRC IRQ %d: %d\n", @@ -595,7 +595,7 @@ platform_get_irq_byname(pdev, wm831x_bat_irqs[i])); ret = request_threaded_irq(irq, NULL, wm831x_bat_irq, - IRQF_TRIGGER_RISING, + IRQF_TRIGGER_RISING | IRQF_ONESHOT, wm831x_bat_irqs[i], power); if (ret != 0) { --- linux-raspi2-4.2.0.orig/drivers/powercap/intel_rapl.c +++ linux-raspi2-4.2.0/drivers/powercap/intel_rapl.c @@ -1096,11 +1096,13 @@ RAPL_CPU(0x3f, rapl_defaults_hsw_server),/* Haswell servers */ RAPL_CPU(0x4f, rapl_defaults_hsw_server),/* Broadwell servers */ RAPL_CPU(0x45, rapl_defaults_core),/* Haswell ULT */ + RAPL_CPU(0x47, rapl_defaults_core),/* Broadwell-H */ RAPL_CPU(0x4E, rapl_defaults_core),/* Skylake */ RAPL_CPU(0x4C, rapl_defaults_cht),/* Braswell/Cherryview */ RAPL_CPU(0x4A, rapl_defaults_tng),/* Tangier */ RAPL_CPU(0x56, rapl_defaults_core),/* Future Xeon */ RAPL_CPU(0x5A, rapl_defaults_ann),/* Annidale */ + RAPL_CPU(0x5E, rapl_defaults_core),/* Skylake-H/S */ RAPL_CPU(0x57, rapl_defaults_hsw_server),/* Knights Landing */ {} }; @@ -1145,9 +1147,11 @@ pr_debug("remove package, undo power limit on %d: %s\n", rp->id, rd->name); rapl_write_data_raw(rd, PL1_ENABLE, 0); - rapl_write_data_raw(rd, PL2_ENABLE, 0); rapl_write_data_raw(rd, PL1_CLAMP, 0); - rapl_write_data_raw(rd, PL2_CLAMP, 0); + if (find_nr_power_limit(rd) > 1) { + rapl_write_data_raw(rd, PL2_ENABLE, 0); + rapl_write_data_raw(rd, PL2_CLAMP, 0); + } if (rd->id == RAPL_DOMAIN_PACKAGE) { rd_package = rd; continue; --- linux-raspi2-4.2.0.orig/drivers/pwm/Kconfig +++ linux-raspi2-4.2.0/drivers/pwm/Kconfig @@ -85,7 +85,7 @@ config PWM_BCM2835 tristate "BCM2835 PWM support" - depends on ARCH_BCM2835 + depends on ARCH_BCM2835 || ARCH_BCM2708 || ARCH_BCM2709 help PWM framework driver for BCM2835 controller (Raspberry Pi) --- linux-raspi2-4.2.0.orig/drivers/regulator/arizona-ldo1.c +++ linux-raspi2-4.2.0/drivers/regulator/arizona-ldo1.c @@ -17,6 +17,7 @@ #include #include #include +#include #include #include #include @@ -189,13 +190,22 @@ { struct arizona_pdata *pdata = &arizona->pdata; struct arizona_ldo1 *ldo1 = config->driver_data; + struct device_node *np = arizona->dev->of_node; struct device_node *init_node, *dcvdd_node; struct regulator_init_data *init_data; - pdata->ldoena = arizona_of_get_named_gpio(arizona, "wlf,ldoena", true); + pdata->ldoena = of_get_named_gpio(np, "wlf,ldoena", 0); + if (pdata->ldoena < 0) { + dev_warn(arizona->dev, + "LDOENA GPIO property missing/malformed: %d\n", + pdata->ldoena); + pdata->ldoena = 0; + } else { + config->ena_gpio_initialized = true; + } - init_node = of_get_child_by_name(arizona->dev->of_node, "ldo1"); - dcvdd_node = of_parse_phandle(arizona->dev->of_node, "DCVDD-supply", 0); + init_node = of_get_child_by_name(np, "ldo1"); + dcvdd_node = of_parse_phandle(np, "DCVDD-supply", 0); if (init_node) { config->of_node = init_node; @@ -272,8 +282,6 @@ ret = arizona_ldo1_of_get_pdata(arizona, &config, desc); if (ret < 0) return ret; - - config.ena_gpio_initialized = true; } } --- linux-raspi2-4.2.0.orig/drivers/regulator/axp20x-regulator.c +++ linux-raspi2-4.2.0/drivers/regulator/axp20x-regulator.c @@ -192,9 +192,9 @@ AXP_DESC(AXP22X, DCDC3, "dcdc3", "vin3", 600, 1860, 20, AXP22X_DCDC3_V_OUT, 0x3f, AXP22X_PWR_OUT_CTRL1, BIT(3)), AXP_DESC(AXP22X, DCDC4, "dcdc4", "vin4", 600, 1540, 20, - AXP22X_DCDC4_V_OUT, 0x3f, AXP22X_PWR_OUT_CTRL1, BIT(3)), + AXP22X_DCDC4_V_OUT, 0x3f, AXP22X_PWR_OUT_CTRL1, BIT(4)), AXP_DESC(AXP22X, DCDC5, "dcdc5", "vin5", 1000, 2550, 50, - AXP22X_DCDC5_V_OUT, 0x1f, AXP22X_PWR_OUT_CTRL1, BIT(4)), + AXP22X_DCDC5_V_OUT, 0x1f, AXP22X_PWR_OUT_CTRL1, BIT(5)), /* secondary switchable output of DCDC1 */ AXP_DESC_SW(AXP22X, DC1SW, "dc1sw", "dcdc1", 1600, 3400, 100, AXP22X_DCDC1_V_OUT, 0x1f, AXP22X_PWR_OUT_CTRL2, BIT(7)), --- linux-raspi2-4.2.0.orig/drivers/regulator/core.c +++ linux-raspi2-4.2.0/drivers/regulator/core.c @@ -1376,15 +1376,19 @@ return 0; r = regulator_dev_lookup(dev, rdev->supply_name, &ret); - if (ret == -ENODEV) { - /* - * No supply was specified for this regulator and - * there will never be one. - */ - return 0; - } - if (!r) { + if (ret == -ENODEV) { + /* + * No supply was specified for this regulator and + * there will never be one. + */ + return 0; + } + + /* Did the lookup explicitly defer for us? */ + if (ret == -EPROBE_DEFER) + return ret; + if (have_full_constraints()) { r = dummy_regulator_rdev; } else { --- linux-raspi2-4.2.0.orig/drivers/regulator/pbias-regulator.c +++ linux-raspi2-4.2.0/drivers/regulator/pbias-regulator.c @@ -30,6 +30,7 @@ struct pbias_reg_info { u32 enable; u32 enable_mask; + u32 disable_val; u32 vmode; unsigned int enable_time; char *name; @@ -62,6 +63,7 @@ .enable = BIT(1), .enable_mask = BIT(1), .vmode = BIT(0), + .disable_val = 0, .enable_time = 100, .name = "pbias_mmc_omap2430" }; @@ -77,6 +79,7 @@ static const struct pbias_reg_info pbias_mmc_omap4 = { .enable = BIT(26) | BIT(22), .enable_mask = BIT(26) | BIT(25) | BIT(22), + .disable_val = BIT(25), .vmode = BIT(21), .enable_time = 100, .name = "pbias_mmc_omap4" @@ -85,6 +88,7 @@ static const struct pbias_reg_info pbias_mmc_omap5 = { .enable = BIT(27) | BIT(26), .enable_mask = BIT(27) | BIT(25) | BIT(26), + .disable_val = BIT(25), .vmode = BIT(21), .enable_time = 100, .name = "pbias_mmc_omap5" @@ -159,6 +163,7 @@ drvdata[data_idx].desc.enable_reg = res->start; drvdata[data_idx].desc.enable_mask = info->enable_mask; drvdata[data_idx].desc.enable_val = info->enable; + drvdata[data_idx].desc.disable_val = info->disable_val; cfg.init_data = pbias_matches[idx].init_data; cfg.driver_data = &drvdata[data_idx]; --- linux-raspi2-4.2.0.orig/drivers/rtc/interface.c +++ linux-raspi2-4.2.0/drivers/rtc/interface.c @@ -748,9 +748,23 @@ */ static int rtc_timer_enqueue(struct rtc_device *rtc, struct rtc_timer *timer) { + struct timerqueue_node *next = timerqueue_getnext(&rtc->timerqueue); + struct rtc_time tm; + ktime_t now; + timer->enabled = 1; + __rtc_read_time(rtc, &tm); + now = rtc_tm_to_ktime(tm); + + /* Skip over expired timers */ + while (next) { + if (next->expires.tv64 >= now.tv64) + break; + next = timerqueue_iterate_next(next); + } + timerqueue_add(&rtc->timerqueue, &timer->node); - if (&timer->node == timerqueue_getnext(&rtc->timerqueue)) { + if (!next) { struct rtc_wkalrm alarm; int err; alarm.time = rtc_ktime_to_tm(timer->node.expires); --- linux-raspi2-4.2.0.orig/drivers/rtc/rtc-abx80x.c +++ linux-raspi2-4.2.0/drivers/rtc/rtc-abx80x.c @@ -28,7 +28,7 @@ #define ABX8XX_REG_WD 0x07 #define ABX8XX_REG_CTRL1 0x10 -#define ABX8XX_CTRL_WRITE BIT(1) +#define ABX8XX_CTRL_WRITE BIT(0) #define ABX8XX_CTRL_12_24 BIT(6) #define ABX8XX_REG_CFG_KEY 0x1f --- linux-raspi2-4.2.0.orig/drivers/rtc/rtc-ds1307.c +++ linux-raspi2-4.2.0/drivers/rtc/rtc-ds1307.c @@ -734,9 +734,9 @@ regs[3] = bin2bcd(t->time.tm_sec); regs[4] = bin2bcd(t->time.tm_min); regs[5] = bin2bcd(t->time.tm_hour); - regs[6] = bin2bcd(t->time.tm_wday) + 1; + regs[6] = bin2bcd(t->time.tm_wday + 1); regs[7] = bin2bcd(t->time.tm_mday); - regs[8] = bin2bcd(t->time.tm_mon) + 1; + regs[8] = bin2bcd(t->time.tm_mon + 1); /* Clear the alarm 0 interrupt flag. */ regs[6] &= ~MCP794XX_BIT_ALMX_IF; @@ -1242,6 +1242,14 @@ return 0; } +#ifdef CONFIG_OF +static const struct of_device_id ds1307_of_match[] = { + { .compatible = "maxim,ds1307" }, + { } +}; +MODULE_DEVICE_TABLE(of, ds1307_of_match); +#endif + static struct i2c_driver ds1307_driver = { .driver = { .name = "rtc-ds1307", --- linux-raspi2-4.2.0.orig/drivers/rtc/rtc-s3c.c +++ linux-raspi2-4.2.0/drivers/rtc/rtc-s3c.c @@ -39,6 +39,7 @@ void __iomem *base; struct clk *rtc_clk; struct clk *rtc_src_clk; + bool clk_disabled; struct s3c_rtc_data *data; @@ -71,9 +72,12 @@ unsigned long irq_flags; spin_lock_irqsave(&info->alarm_clk_lock, irq_flags); - clk_enable(info->rtc_clk); - if (info->data->needs_src_clk) - clk_enable(info->rtc_src_clk); + if (info->clk_disabled) { + clk_enable(info->rtc_clk); + if (info->data->needs_src_clk) + clk_enable(info->rtc_src_clk); + info->clk_disabled = false; + } spin_unlock_irqrestore(&info->alarm_clk_lock, irq_flags); } @@ -82,9 +86,12 @@ unsigned long irq_flags; spin_lock_irqsave(&info->alarm_clk_lock, irq_flags); - if (info->data->needs_src_clk) - clk_disable(info->rtc_src_clk); - clk_disable(info->rtc_clk); + if (!info->clk_disabled) { + if (info->data->needs_src_clk) + clk_disable(info->rtc_src_clk); + clk_disable(info->rtc_clk); + info->clk_disabled = true; + } spin_unlock_irqrestore(&info->alarm_clk_lock, irq_flags); } @@ -128,6 +135,11 @@ s3c_rtc_disable_clk(info); + if (enabled) + s3c_rtc_enable_clk(info); + else + s3c_rtc_disable_clk(info); + return 0; } --- linux-raspi2-4.2.0.orig/drivers/rtc/rtc-s5m.c +++ linux-raspi2-4.2.0/drivers/rtc/rtc-s5m.c @@ -635,6 +635,16 @@ case S2MPS13X: data[0] = (0 << BCD_EN_SHIFT) | (1 << MODEL24_SHIFT); ret = regmap_write(info->regmap, info->regs->ctrl, data[0]); + if (ret < 0) + break; + + /* + * Should set WUDR & (RUDR or AUDR) bits to high after writing + * RTC_CTRL register like writing Alarm registers. We can't find + * the description from datasheet but vendor code does that + * really. + */ + ret = s5m8767_rtc_set_alarm_reg(info); break; default: --- linux-raspi2-4.2.0.orig/drivers/scsi/3w-9xxx.c +++ linux-raspi2-4.2.0/drivers/scsi/3w-9xxx.c @@ -212,6 +212,17 @@ .llseek = noop_llseek, }; +/* + * The controllers use an inline buffer instead of a mapped SGL for small, + * single entry buffers. Note that we treat a zero-length transfer like + * a mapped SGL. + */ +static bool twa_command_mapped(struct scsi_cmnd *cmd) +{ + return scsi_sg_count(cmd) != 1 || + scsi_bufflen(cmd) >= TW_MIN_SGL_LENGTH; +} + /* This function will complete an aen request from the isr */ static int twa_aen_complete(TW_Device_Extension *tw_dev, int request_id) { @@ -1339,7 +1350,8 @@ } /* Now complete the io */ - scsi_dma_unmap(cmd); + if (twa_command_mapped(cmd)) + scsi_dma_unmap(cmd); cmd->scsi_done(cmd); tw_dev->state[request_id] = TW_S_COMPLETED; twa_free_request_id(tw_dev, request_id); @@ -1582,7 +1594,8 @@ struct scsi_cmnd *cmd = tw_dev->srb[i]; cmd->result = (DID_RESET << 16); - scsi_dma_unmap(cmd); + if (twa_command_mapped(cmd)) + scsi_dma_unmap(cmd); cmd->scsi_done(cmd); } } @@ -1765,12 +1778,14 @@ retval = twa_scsiop_execute_scsi(tw_dev, request_id, NULL, 0, NULL); switch (retval) { case SCSI_MLQUEUE_HOST_BUSY: - scsi_dma_unmap(SCpnt); + if (twa_command_mapped(SCpnt)) + scsi_dma_unmap(SCpnt); twa_free_request_id(tw_dev, request_id); break; case 1: SCpnt->result = (DID_ERROR << 16); - scsi_dma_unmap(SCpnt); + if (twa_command_mapped(SCpnt)) + scsi_dma_unmap(SCpnt); done(SCpnt); tw_dev->state[request_id] = TW_S_COMPLETED; twa_free_request_id(tw_dev, request_id); @@ -1831,8 +1846,7 @@ /* Map sglist from scsi layer to cmd packet */ if (scsi_sg_count(srb)) { - if ((scsi_sg_count(srb) == 1) && - (scsi_bufflen(srb) < TW_MIN_SGL_LENGTH)) { + if (!twa_command_mapped(srb)) { if (srb->sc_data_direction == DMA_TO_DEVICE || srb->sc_data_direction == DMA_BIDIRECTIONAL) scsi_sg_copy_to_buffer(srb, @@ -1905,7 +1919,7 @@ { struct scsi_cmnd *cmd = tw_dev->srb[request_id]; - if (scsi_bufflen(cmd) < TW_MIN_SGL_LENGTH && + if (!twa_command_mapped(cmd) && (cmd->sc_data_direction == DMA_FROM_DEVICE || cmd->sc_data_direction == DMA_BIDIRECTIONAL)) { if (scsi_sg_count(cmd) == 1) { --- linux-raspi2-4.2.0.orig/drivers/scsi/Kconfig +++ linux-raspi2-4.2.0/drivers/scsi/Kconfig @@ -345,6 +345,7 @@ source "drivers/scsi/bnx2i/Kconfig" source "drivers/scsi/bnx2fc/Kconfig" source "drivers/scsi/be2iscsi/Kconfig" +source "drivers/scsi/cxlflash/Kconfig" config SGIWD93_SCSI tristate "SGI WD93C93 SCSI Driver" --- linux-raspi2-4.2.0.orig/drivers/scsi/Makefile +++ linux-raspi2-4.2.0/drivers/scsi/Makefile @@ -102,6 +102,7 @@ obj-$(CONFIG_SCSI_EATA) += eata.o obj-$(CONFIG_SCSI_DC395x) += dc395x.o obj-$(CONFIG_SCSI_AM53C974) += esp_scsi.o am53c974.o +obj-$(CONFIG_CXLFLASH) += cxlflash/ obj-$(CONFIG_MEGARAID_LEGACY) += megaraid.o obj-$(CONFIG_MEGARAID_NEWGEN) += megaraid/ obj-$(CONFIG_MEGARAID_SAS) += megaraid/ --- linux-raspi2-4.2.0.orig/drivers/scsi/be2iscsi/be_main.c +++ linux-raspi2-4.2.0/drivers/scsi/be2iscsi/be_main.c @@ -232,20 +232,20 @@ cls_session = starget_to_session(scsi_target(sc->device)); session = cls_session->dd_data; - spin_lock_bh(&session->frwd_lock); + spin_lock_bh(&session->lock); if (!aborted_task || !aborted_task->sc) { /* we raced */ - spin_unlock_bh(&session->frwd_lock); + spin_unlock_bh(&session->lock); return SUCCESS; } aborted_io_task = aborted_task->dd_data; if (!aborted_io_task->scsi_cmnd) { /* raced or invalid command */ - spin_unlock_bh(&session->frwd_lock); + spin_unlock_bh(&session->lock); return SUCCESS; } - spin_unlock_bh(&session->frwd_lock); + spin_unlock_bh(&session->lock); /* Invalidate WRB Posted for this Task */ AMAP_SET_BITS(struct amap_iscsi_wrb, invld, aborted_io_task->pwrb_handle->pwrb, @@ -310,9 +310,9 @@ /* invalidate iocbs */ cls_session = starget_to_session(scsi_target(sc->device)); session = cls_session->dd_data; - spin_lock_bh(&session->frwd_lock); + spin_lock_bh(&session->lock); if (!session->leadconn || session->state != ISCSI_STATE_LOGGED_IN) { - spin_unlock_bh(&session->frwd_lock); + spin_unlock_bh(&session->lock); return FAILED; } conn = session->leadconn; @@ -341,7 +341,7 @@ num_invalidate++; inv_tbl++; } - spin_unlock_bh(&session->frwd_lock); + spin_unlock_bh(&session->lock); inv_tbl = phba->inv_tbl; nonemb_cmd.va = pci_alloc_consistent(phba->ctrl.pdev, @@ -1137,9 +1137,9 @@ return 1; } - spin_lock_bh(&session->back_lock); + spin_lock_bh(&session->lock); __iscsi_complete_pdu(conn, (struct iscsi_hdr *)ppdu, pbuffer, buf_len); - spin_unlock_bh(&session->back_lock); + spin_unlock_bh(&session->lock); return 0; } @@ -1560,7 +1560,7 @@ pwrb = pwrb_handle->pwrb; type = ((struct beiscsi_io_task *)task->dd_data)->wrb_type; - spin_lock_bh(&session->back_lock); + spin_lock_bh(&session->lock); switch (type) { case HWH_TYPE_IO: case HWH_TYPE_IO_RD: @@ -1599,7 +1599,7 @@ break; } - spin_unlock_bh(&session->back_lock); + spin_unlock_bh(&session->lock); } static struct list_head *hwi_get_async_busy_list(struct hwi_async_pdu_context @@ -4688,9 +4688,9 @@ * login/startup related tasks. */ beiscsi_conn->login_in_progress = 0; - spin_lock_bh(&session->back_lock); + spin_lock_bh(&session->lock); beiscsi_cleanup_task(task); - spin_unlock_bh(&session->back_lock); + spin_unlock_bh(&session->lock); pwrb_handle = alloc_wrb_handle(phba, beiscsi_conn->beiscsi_conn_cid); --- linux-raspi2-4.2.0.orig/drivers/scsi/bnx2i/bnx2i_hwi.c +++ linux-raspi2-4.2.0/drivers/scsi/bnx2i/bnx2i_hwi.c @@ -1363,7 +1363,7 @@ u32 datalen = 0; resp_cqe = (struct bnx2i_cmd_response *)cqe; - spin_lock_bh(&session->back_lock); + spin_lock_bh(&session->lock); task = iscsi_itt_to_task(conn, resp_cqe->itt & ISCSI_CMD_RESPONSE_INDEX); if (!task) @@ -1434,7 +1434,7 @@ __iscsi_complete_pdu(conn, (struct iscsi_hdr *)hdr, conn->data, datalen); fail: - spin_unlock_bh(&session->back_lock); + spin_unlock_bh(&session->lock); return 0; } @@ -1459,7 +1459,7 @@ int pad_len; login = (struct bnx2i_login_response *) cqe; - spin_lock(&session->back_lock); + spin_lock(&session->lock); task = iscsi_itt_to_task(conn, login->itt & ISCSI_LOGIN_RESPONSE_INDEX); if (!task) @@ -1502,7 +1502,7 @@ bnx2i_conn->gen_pdu.resp_buf, bnx2i_conn->gen_pdu.resp_wr_ptr - bnx2i_conn->gen_pdu.resp_buf); done: - spin_unlock(&session->back_lock); + spin_unlock(&session->lock); return 0; } @@ -1527,7 +1527,7 @@ int pad_len; text = (struct bnx2i_text_response *) cqe; - spin_lock(&session->back_lock); + spin_lock(&session->lock); task = iscsi_itt_to_task(conn, text->itt & ISCSI_LOGIN_RESPONSE_INDEX); if (!task) goto done; @@ -1563,7 +1563,7 @@ bnx2i_conn->gen_pdu.resp_wr_ptr - bnx2i_conn->gen_pdu.resp_buf); done: - spin_unlock(&session->back_lock); + spin_unlock(&session->lock); return 0; } @@ -1586,7 +1586,7 @@ struct iscsi_tm_rsp *resp_hdr; tmf_cqe = (struct bnx2i_tmf_response *)cqe; - spin_lock(&session->back_lock); + spin_lock(&session->lock); task = iscsi_itt_to_task(conn, tmf_cqe->itt & ISCSI_TMF_RESPONSE_INDEX); if (!task) @@ -1602,7 +1602,7 @@ __iscsi_complete_pdu(conn, (struct iscsi_hdr *)resp_hdr, NULL, 0); done: - spin_unlock(&session->back_lock); + spin_unlock(&session->lock); return 0; } @@ -1625,7 +1625,7 @@ struct iscsi_logout_rsp *resp_hdr; logout = (struct bnx2i_logout_response *) cqe; - spin_lock(&session->back_lock); + spin_lock(&session->lock); task = iscsi_itt_to_task(conn, logout->itt & ISCSI_LOGOUT_RESPONSE_INDEX); if (!task) @@ -1649,7 +1649,7 @@ bnx2i_conn->ep->state = EP_STATE_LOGOUT_RESP_RCVD; done: - spin_unlock(&session->back_lock); + spin_unlock(&session->lock); return 0; } @@ -1670,12 +1670,12 @@ struct iscsi_task *task; nop_in = (struct bnx2i_nop_in_msg *)cqe; - spin_lock(&session->back_lock); + spin_lock(&session->lock); task = iscsi_itt_to_task(conn, nop_in->itt & ISCSI_NOP_IN_MSG_INDEX); if (task) __iscsi_put_task(task); - spin_unlock(&session->back_lock); + spin_unlock(&session->lock); } /** @@ -1714,7 +1714,7 @@ nop_in = (struct bnx2i_nop_in_msg *)cqe; - spin_lock(&session->back_lock); + spin_lock(&session->lock); hdr = (struct iscsi_nopin *)&bnx2i_conn->gen_pdu.resp_hdr; memset(hdr, 0, sizeof(struct iscsi_hdr)); hdr->opcode = nop_in->op_code; @@ -1740,7 +1740,7 @@ } done: __iscsi_complete_pdu(conn, (struct iscsi_hdr *)hdr, NULL, 0); - spin_unlock(&session->back_lock); + spin_unlock(&session->lock); return tgt_async_nop; } @@ -1773,7 +1773,7 @@ return; } - spin_lock(&session->back_lock); + spin_lock(&session->lock); resp_hdr = (struct iscsi_async *) &bnx2i_conn->gen_pdu.resp_hdr; memset(resp_hdr, 0, sizeof(struct iscsi_hdr)); resp_hdr->opcode = async_cqe->op_code; @@ -1792,7 +1792,7 @@ __iscsi_complete_pdu(bnx2i_conn->cls_conn->dd_data, (struct iscsi_hdr *)resp_hdr, NULL, 0); - spin_unlock(&session->back_lock); + spin_unlock(&session->lock); } @@ -1819,7 +1819,7 @@ } else bnx2i_unsol_pdu_adjust_rq(bnx2i_conn); - spin_lock(&session->back_lock); + spin_lock(&session->lock); hdr = (struct iscsi_reject *) &bnx2i_conn->gen_pdu.resp_hdr; memset(hdr, 0, sizeof(struct iscsi_hdr)); hdr->opcode = reject->op_code; @@ -1830,7 +1830,7 @@ hdr->ffffffff = cpu_to_be32(RESERVED_ITT); __iscsi_complete_pdu(conn, (struct iscsi_hdr *)hdr, conn->data, reject->data_length); - spin_unlock(&session->back_lock); + spin_unlock(&session->lock); } /** @@ -1850,13 +1850,13 @@ struct iscsi_task *task; cmd_clean_rsp = (struct bnx2i_cleanup_response *)cqe; - spin_lock(&session->back_lock); + spin_lock(&session->lock); task = iscsi_itt_to_task(conn, cmd_clean_rsp->itt & ISCSI_CLEANUP_RESPONSE_INDEX); if (!task) printk(KERN_ALERT "bnx2i: cmd clean ITT %x not active\n", cmd_clean_rsp->itt & ISCSI_CLEANUP_RESPONSE_INDEX); - spin_unlock(&session->back_lock); + spin_unlock(&session->lock); complete(&bnx2i_conn->cmd_cleanup_cmpl); } @@ -1923,11 +1923,11 @@ int rc = 0; int cpu; - spin_lock(&session->back_lock); + spin_lock(&session->lock); task = iscsi_itt_to_task(bnx2i_conn->cls_conn->dd_data, cqe->itt & ISCSI_CMD_RESPONSE_INDEX); if (!task || !task->sc) { - spin_unlock(&session->back_lock); + spin_unlock(&session->lock); return -EINVAL; } sc = task->sc; @@ -1937,7 +1937,7 @@ else cpu = sc->request->cpu; - spin_unlock(&session->back_lock); + spin_unlock(&session->lock); p = &per_cpu(bnx2i_percpu, cpu); spin_lock(&p->p_work_lock); --- linux-raspi2-4.2.0.orig/drivers/scsi/bnx2i/bnx2i_iscsi.c +++ linux-raspi2-4.2.0/drivers/scsi/bnx2i/bnx2i_iscsi.c @@ -1172,12 +1172,10 @@ if (task->state == ISCSI_TASK_ABRT_TMF) { bnx2i_send_cmd_cleanup_req(hba, task->dd_data); - spin_unlock_bh(&conn->session->back_lock); - spin_unlock_bh(&conn->session->frwd_lock); + spin_unlock_bh(&conn->session->lock); wait_for_completion_timeout(&bnx2i_conn->cmd_cleanup_cmpl, msecs_to_jiffies(ISCSI_CMD_CLEANUP_TIMEOUT)); - spin_lock_bh(&conn->session->frwd_lock); - spin_lock_bh(&conn->session->back_lock); + spin_lock_bh(&conn->session->lock); } bnx2i_iscsi_unmap_sg_list(task->dd_data); } @@ -2063,7 +2061,7 @@ goto out; if (session) { - spin_lock_bh(&session->frwd_lock); + spin_lock_bh(&session->lock); if (bnx2i_ep->state != EP_STATE_TCP_FIN_RCVD) { if (session->state == ISCSI_STATE_LOGGING_OUT) { if (bnx2i_ep->state == EP_STATE_LOGOUT_SENT) { @@ -2079,7 +2077,7 @@ } else close = 1; - spin_unlock_bh(&session->frwd_lock); + spin_unlock_bh(&session->lock); } bnx2i_ep->state = EP_STATE_DISCONN_START; --- linux-raspi2-4.2.0.orig/drivers/scsi/cxlflash/Kconfig +++ linux-raspi2-4.2.0/drivers/scsi/cxlflash/Kconfig @@ -0,0 +1,11 @@ +# +# IBM CXL-attached Flash Accelerator SCSI Driver +# + +config CXLFLASH + tristate "Support for IBM CAPI Flash" + depends on PCI && SCSI && CXL && EEH + default m + help + Allows CAPI Accelerated IO to Flash + If unsure, say N. --- linux-raspi2-4.2.0.orig/drivers/scsi/cxlflash/Makefile +++ linux-raspi2-4.2.0/drivers/scsi/cxlflash/Makefile @@ -0,0 +1,2 @@ +obj-$(CONFIG_CXLFLASH) += cxlflash.o +cxlflash-y += main.o superpipe.o lunmgt.o vlun.o --- linux-raspi2-4.2.0.orig/drivers/scsi/cxlflash/common.h +++ linux-raspi2-4.2.0/drivers/scsi/cxlflash/common.h @@ -0,0 +1,204 @@ +/* + * CXL Flash Device Driver + * + * Written by: Manoj N. Kumar , IBM Corporation + * Matthew R. Ochs , IBM Corporation + * + * Copyright (C) 2015 IBM Corporation + * + * 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. + */ + +#ifndef _CXLFLASH_COMMON_H +#define _CXLFLASH_COMMON_H + +#include +#include +#include +#include +#include + +extern const struct file_operations cxlflash_cxl_fops; + +#define MAX_CONTEXT CXLFLASH_MAX_CONTEXT /* num contexts per afu */ + +#define CXLFLASH_BLOCK_SIZE 4096 /* 4K blocks */ +#define CXLFLASH_MAX_XFER_SIZE 16777216 /* 16MB transfer */ +#define CXLFLASH_MAX_SECTORS (CXLFLASH_MAX_XFER_SIZE/512) /* SCSI wants + max_sectors + in units of + 512 byte + sectors + */ + +#define NUM_RRQ_ENTRY 16 /* for master issued cmds */ +#define MAX_RHT_PER_CONTEXT (PAGE_SIZE / sizeof(struct sisl_rht_entry)) + +/* AFU command retry limit */ +#define MC_RETRY_CNT 5 /* sufficient for SCSI check and + certain AFU errors */ + +/* Command management definitions */ +#define CXLFLASH_NUM_CMDS (2 * CXLFLASH_MAX_CMDS) /* Must be a pow2 for + alignment and more + efficient array + index derivation + */ + +#define CXLFLASH_MAX_CMDS 16 +#define CXLFLASH_MAX_CMDS_PER_LUN CXLFLASH_MAX_CMDS + + +static inline void check_sizes(void) +{ + BUILD_BUG_ON_NOT_POWER_OF_2(CXLFLASH_NUM_CMDS); +} + +/* AFU defines a fixed size of 4K for command buffers (borrow 4K page define) */ +#define CMD_BUFSIZE SIZE_4K + +/* flags in IOA status area for host use */ +#define B_DONE 0x01 +#define B_ERROR 0x02 /* set with B_DONE */ +#define B_TIMEOUT 0x04 /* set with B_DONE & B_ERROR */ + +enum cxlflash_lr_state { + LINK_RESET_INVALID, + LINK_RESET_REQUIRED, + LINK_RESET_COMPLETE +}; + +enum cxlflash_init_state { + INIT_STATE_NONE, + INIT_STATE_PCI, + INIT_STATE_AFU, + INIT_STATE_SCSI +}; + +enum cxlflash_state { + STATE_NORMAL, /* Normal running state, everything good */ + STATE_RESET, /* Reset state, trying to reset/recover */ + STATE_FAILTERM /* Failed/terminating state, error out users/threads */ +}; + +/* + * Each context has its own set of resource handles that is visible + * only from that context. + */ + +struct cxlflash_cfg { + struct afu *afu; + struct cxl_context *mcctx; + + struct pci_dev *dev; + struct pci_device_id *dev_id; + struct Scsi_Host *host; + + ulong cxlflash_regs_pci; + + struct work_struct work_q; + enum cxlflash_init_state init_state; + enum cxlflash_lr_state lr_state; + int lr_port; + atomic_t scan_host_needed; + + struct cxl_afu *cxl_afu; + struct pci_dev *parent_dev; + + atomic_t recovery_threads; + struct mutex ctx_recovery_mutex; + struct mutex ctx_tbl_list_mutex; + struct rw_semaphore ioctl_rwsem; + struct ctx_info *ctx_tbl[MAX_CONTEXT]; + struct list_head ctx_err_recovery; /* contexts w/ recovery pending */ + struct file_operations cxl_fops; + + /* Parameters that are LUN table related */ + int last_lun_index[CXLFLASH_NUM_FC_PORTS]; + int promote_lun_index; + struct list_head lluns; /* list of llun_info structs */ + + wait_queue_head_t tmf_waitq; + spinlock_t tmf_slock; + bool tmf_active; + wait_queue_head_t reset_waitq; + enum cxlflash_state state; +}; + +struct afu_cmd { + struct sisl_ioarcb rcb; /* IOARCB (cache line aligned) */ + struct sisl_ioasa sa; /* IOASA must follow IOARCB */ + spinlock_t slock; + struct completion cevent; + char *buf; /* per command buffer */ + struct afu *parent; + int slot; + atomic_t free; + + u8 cmd_tmf:1; + + /* As per the SISLITE spec the IOARCB EA has to be 16-byte aligned. + * However for performance reasons the IOARCB/IOASA should be + * cache line aligned. + */ +} __aligned(cache_line_size()); + +struct afu { + /* Stuff requiring alignment go first. */ + + u64 rrq_entry[NUM_RRQ_ENTRY]; /* 128B RRQ */ + /* + * Command & data for AFU commands. + */ + struct afu_cmd cmd[CXLFLASH_NUM_CMDS]; + + /* Beware of alignment till here. Preferably introduce new + * fields after this point + */ + + /* AFU HW */ + struct cxl_ioctl_start_work work; + struct cxlflash_afu_map __iomem *afu_map; /* entire MMIO map */ + struct sisl_host_map __iomem *host_map; /* MC host map */ + struct sisl_ctrl_map __iomem *ctrl_map; /* MC control map */ + + ctx_hndl_t ctx_hndl; /* master's context handle */ + u64 *hrrq_start; + u64 *hrrq_end; + u64 *hrrq_curr; + bool toggle; + bool read_room; + atomic64_t room; + u64 hb; + u32 cmd_couts; /* Number of command checkouts */ + u32 internal_lun; /* User-desired LUN mode for this AFU */ + + char version[16]; + u64 interface_version; + + struct cxlflash_cfg *parent; /* Pointer back to parent cxlflash_cfg */ + +}; + +static inline u64 lun_to_lunid(u64 lun) +{ + __be64 lun_id; + + int_to_scsilun(lun, (struct scsi_lun *)&lun_id); + return be64_to_cpu(lun_id); +} + +int cxlflash_afu_sync(struct afu *, ctx_hndl_t, res_hndl_t, u8); +void cxlflash_list_init(void); +void cxlflash_term_global_luns(void); +void cxlflash_free_errpage(void); +int cxlflash_ioctl(struct scsi_device *, int, void __user *); +void cxlflash_stop_term_user_contexts(struct cxlflash_cfg *); +int cxlflash_mark_contexts_error(struct cxlflash_cfg *); +void cxlflash_term_local_luns(struct cxlflash_cfg *); +void cxlflash_restore_luntable(struct cxlflash_cfg *); + +#endif /* ifndef _CXLFLASH_COMMON_H */ --- linux-raspi2-4.2.0.orig/drivers/scsi/cxlflash/lunmgt.c +++ linux-raspi2-4.2.0/drivers/scsi/cxlflash/lunmgt.c @@ -0,0 +1,269 @@ +/* + * CXL Flash Device Driver + * + * Written by: Manoj N. Kumar , IBM Corporation + * Matthew R. Ochs , IBM Corporation + * + * Copyright (C) 2015 IBM Corporation + * + * 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. + */ + +#include +#include + +#include +#include + +#include "sislite.h" +#include "common.h" +#include "vlun.h" +#include "superpipe.h" + +/** + * create_local() - allocate and initialize a local LUN information structure + * @sdev: SCSI device associated with LUN. + * @wwid: World Wide Node Name for LUN. + * + * Return: Allocated local llun_info structure on success, NULL on failure + */ +static struct llun_info *create_local(struct scsi_device *sdev, u8 *wwid) +{ + struct llun_info *lli = NULL; + + lli = kzalloc(sizeof(*lli), GFP_KERNEL); + if (unlikely(!lli)) { + pr_err("%s: could not allocate lli\n", __func__); + goto out; + } + + lli->sdev = sdev; + lli->host_no = sdev->host->host_no; + lli->in_table = false; + + memcpy(lli->wwid, wwid, DK_CXLFLASH_MANAGE_LUN_WWID_LEN); +out: + return lli; +} + +/** + * create_global() - allocate and initialize a global LUN information structure + * @sdev: SCSI device associated with LUN. + * @wwid: World Wide Node Name for LUN. + * + * Return: Allocated global glun_info structure on success, NULL on failure + */ +static struct glun_info *create_global(struct scsi_device *sdev, u8 *wwid) +{ + struct glun_info *gli = NULL; + + gli = kzalloc(sizeof(*gli), GFP_KERNEL); + if (unlikely(!gli)) { + pr_err("%s: could not allocate gli\n", __func__); + goto out; + } + + mutex_init(&gli->mutex); + memcpy(gli->wwid, wwid, DK_CXLFLASH_MANAGE_LUN_WWID_LEN); +out: + return gli; +} + +/** + * lookup_local() - find a local LUN information structure by WWID + * @cfg: Internal structure associated with the host. + * @wwid: WWID associated with LUN. + * + * Return: Found local lun_info structure on success, NULL on failure + */ +static struct llun_info *lookup_local(struct cxlflash_cfg *cfg, u8 *wwid) +{ + struct llun_info *lli, *temp; + + list_for_each_entry_safe(lli, temp, &cfg->lluns, list) + if (!memcmp(lli->wwid, wwid, DK_CXLFLASH_MANAGE_LUN_WWID_LEN)) + return lli; + + return NULL; +} + +/** + * lookup_global() - find a global LUN information structure by WWID + * @wwid: WWID associated with LUN. + * + * Return: Found global lun_info structure on success, NULL on failure + */ +static struct glun_info *lookup_global(u8 *wwid) +{ + struct glun_info *gli, *temp; + + list_for_each_entry_safe(gli, temp, &global.gluns, list) + if (!memcmp(gli->wwid, wwid, DK_CXLFLASH_MANAGE_LUN_WWID_LEN)) + return gli; + + return NULL; +} + +/** + * find_and_create_lun() - find or create a local LUN information structure + * @sdev: SCSI device associated with LUN. + * @wwid: WWID associated with LUN. + * + * The LUN is kept both in a local list (per adapter) and in a global list + * (across all adapters). Certain attributes of the LUN are local to the + * adapter (such as index, port selection mask, etc.). + * + * The block allocation map is shared across all adapters (i.e. associated + * wih the global list). Since different attributes are associated with + * the per adapter and global entries, allocate two separate structures for each + * LUN (one local, one global). + * + * Keep a pointer back from the local to the global entry. + * + * This routine assumes the caller holds the global mutex. + * + * Return: Found/Allocated local lun_info structure on success, NULL on failure + */ +static struct llun_info *find_and_create_lun(struct scsi_device *sdev, u8 *wwid) +{ + struct llun_info *lli = NULL; + struct glun_info *gli = NULL; + struct Scsi_Host *shost = sdev->host; + struct cxlflash_cfg *cfg = shost_priv(shost); + + if (unlikely(!wwid)) + goto out; + + lli = lookup_local(cfg, wwid); + if (lli) + goto out; + + lli = create_local(sdev, wwid); + if (unlikely(!lli)) + goto out; + + gli = lookup_global(wwid); + if (gli) { + lli->parent = gli; + list_add(&lli->list, &cfg->lluns); + goto out; + } + + gli = create_global(sdev, wwid); + if (unlikely(!gli)) { + kfree(lli); + lli = NULL; + goto out; + } + + lli->parent = gli; + list_add(&lli->list, &cfg->lluns); + + list_add(&gli->list, &global.gluns); + +out: + pr_debug("%s: returning %p\n", __func__, lli); + return lli; +} + +/** + * cxlflash_term_local_luns() - Delete all entries from local LUN list, free. + * @cfg: Internal structure associated with the host. + */ +void cxlflash_term_local_luns(struct cxlflash_cfg *cfg) +{ + struct llun_info *lli, *temp; + + mutex_lock(&global.mutex); + list_for_each_entry_safe(lli, temp, &cfg->lluns, list) { + list_del(&lli->list); + kfree(lli); + } + mutex_unlock(&global.mutex); +} + +/** + * cxlflash_list_init() - initializes the global LUN list + */ +void cxlflash_list_init(void) +{ + INIT_LIST_HEAD(&global.gluns); + mutex_init(&global.mutex); + global.err_page = NULL; +} + +/** + * cxlflash_term_global_luns() - frees resources associated with global LUN list + */ +void cxlflash_term_global_luns(void) +{ + struct glun_info *gli, *temp; + + mutex_lock(&global.mutex); + list_for_each_entry_safe(gli, temp, &global.gluns, list) { + list_del(&gli->list); + cxlflash_ba_terminate(&gli->blka.ba_lun); + kfree(gli); + } + mutex_unlock(&global.mutex); +} + +/** + * cxlflash_manage_lun() - handles LUN management activities + * @sdev: SCSI device associated with LUN. + * @manage: Manage ioctl data structure. + * + * This routine is used to notify the driver about a LUN's WWID and associate + * SCSI devices (sdev) with a global LUN instance. Additionally it serves to + * change a LUN's operating mode: legacy or superpipe. + * + * Return: 0 on success, -errno on failure + */ +int cxlflash_manage_lun(struct scsi_device *sdev, + struct dk_cxlflash_manage_lun *manage) +{ + int rc = 0; + struct llun_info *lli = NULL; + u64 flags = manage->hdr.flags; + u32 chan = sdev->channel; + + mutex_lock(&global.mutex); + lli = find_and_create_lun(sdev, manage->wwid); + pr_debug("%s: ENTER: WWID = %016llX%016llX, flags = %016llX li = %p\n", + __func__, get_unaligned_be64(&manage->wwid[0]), + get_unaligned_be64(&manage->wwid[8]), + manage->hdr.flags, lli); + if (unlikely(!lli)) { + rc = -ENOMEM; + goto out; + } + + if (flags & DK_CXLFLASH_MANAGE_LUN_ENABLE_SUPERPIPE) { + /* + * Update port selection mask based upon channel, store off LUN + * in unpacked, AFU-friendly format, and hang LUN reference in + * the sdev. + */ + lli->port_sel |= CHAN2PORT(chan); + lli->lun_id[chan] = lun_to_lunid(sdev->lun); + sdev->hostdata = lli; + } else if (flags & DK_CXLFLASH_MANAGE_LUN_DISABLE_SUPERPIPE) { + if (lli->parent->mode != MODE_NONE) + rc = -EBUSY; + else { + sdev->hostdata = NULL; + lli->port_sel &= ~CHAN2PORT(chan); + } + } + + pr_debug("%s: port_sel = %08X chan = %u lun_id = %016llX\n", __func__, + lli->port_sel, chan, lli->lun_id[chan]); + +out: + mutex_unlock(&global.mutex); + pr_debug("%s: returning rc=%d\n", __func__, rc); + return rc; +} --- linux-raspi2-4.2.0.orig/drivers/scsi/cxlflash/main.c +++ linux-raspi2-4.2.0/drivers/scsi/cxlflash/main.c @@ -0,0 +1,2608 @@ +/* + * CXL Flash Device Driver + * + * Written by: Manoj N. Kumar , IBM Corporation + * Matthew R. Ochs , IBM Corporation + * + * Copyright (C) 2015 IBM Corporation + * + * 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. + */ + +#include +#include +#include +#include + +#include + +#include + +#include +#include +#include + +#include "main.h" +#include "sislite.h" +#include "common.h" + +MODULE_DESCRIPTION(CXLFLASH_ADAPTER_NAME); +MODULE_AUTHOR("Manoj N. Kumar "); +MODULE_AUTHOR("Matthew R. Ochs "); +MODULE_LICENSE("GPL"); + +/** + * cmd_checkout() - checks out an AFU command + * @afu: AFU to checkout from. + * + * Commands are checked out in a round-robin fashion. Note that since + * the command pool is larger than the hardware queue, the majority of + * times we will only loop once or twice before getting a command. The + * buffer and CDB within the command are initialized (zeroed) prior to + * returning. + * + * Return: The checked out command or NULL when command pool is empty. + */ +static struct afu_cmd *cmd_checkout(struct afu *afu) +{ + int k, dec = CXLFLASH_NUM_CMDS; + struct afu_cmd *cmd; + + while (dec--) { + k = (afu->cmd_couts++ & (CXLFLASH_NUM_CMDS - 1)); + + cmd = &afu->cmd[k]; + + if (!atomic_dec_if_positive(&cmd->free)) { + pr_devel("%s: returning found index=%d cmd=%p\n", + __func__, cmd->slot, cmd); + memset(cmd->buf, 0, CMD_BUFSIZE); + memset(cmd->rcb.cdb, 0, sizeof(cmd->rcb.cdb)); + return cmd; + } + } + + return NULL; +} + +/** + * cmd_checkin() - checks in an AFU command + * @cmd: AFU command to checkin. + * + * Safe to pass commands that have already been checked in. Several + * internal tracking fields are reset as part of the checkin. Note + * that these are intentionally reset prior to toggling the free bit + * to avoid clobbering values in the event that the command is checked + * out right away. + */ +static void cmd_checkin(struct afu_cmd *cmd) +{ + cmd->rcb.scp = NULL; + cmd->rcb.timeout = 0; + cmd->sa.ioasc = 0; + cmd->cmd_tmf = false; + cmd->sa.host_use[0] = 0; /* clears both completion and retry bytes */ + + if (unlikely(atomic_inc_return(&cmd->free) != 1)) { + pr_err("%s: Freeing cmd (%d) that is not in use!\n", + __func__, cmd->slot); + return; + } + + pr_devel("%s: released cmd %p index=%d\n", __func__, cmd, cmd->slot); +} + +/** + * process_cmd_err() - command error handler + * @cmd: AFU command that experienced the error. + * @scp: SCSI command associated with the AFU command in error. + * + * Translates error bits from AFU command to SCSI command results. + */ +static void process_cmd_err(struct afu_cmd *cmd, struct scsi_cmnd *scp) +{ + struct sisl_ioarcb *ioarcb; + struct sisl_ioasa *ioasa; + u32 resid; + + if (unlikely(!cmd)) + return; + + ioarcb = &(cmd->rcb); + ioasa = &(cmd->sa); + + if (ioasa->rc.flags & SISL_RC_FLAGS_UNDERRUN) { + resid = ioasa->resid; + scsi_set_resid(scp, resid); + pr_debug("%s: cmd underrun cmd = %p scp = %p, resid = %d\n", + __func__, cmd, scp, resid); + } + + if (ioasa->rc.flags & SISL_RC_FLAGS_OVERRUN) { + pr_debug("%s: cmd underrun cmd = %p scp = %p\n", + __func__, cmd, scp); + scp->result = (DID_ERROR << 16); + } + + pr_debug("%s: cmd failed afu_rc=%d scsi_rc=%d fc_rc=%d " + "afu_extra=0x%X, scsi_extra=0x%X, fc_extra=0x%X\n", + __func__, ioasa->rc.afu_rc, ioasa->rc.scsi_rc, + ioasa->rc.fc_rc, ioasa->afu_extra, ioasa->scsi_extra, + ioasa->fc_extra); + + if (ioasa->rc.scsi_rc) { + /* We have a SCSI status */ + if (ioasa->rc.flags & SISL_RC_FLAGS_SENSE_VALID) { + memcpy(scp->sense_buffer, ioasa->sense_data, + SISL_SENSE_DATA_LEN); + scp->result = ioasa->rc.scsi_rc; + } else + scp->result = ioasa->rc.scsi_rc | (DID_ERROR << 16); + } + + /* + * We encountered an error. Set scp->result based on nature + * of error. + */ + if (ioasa->rc.fc_rc) { + /* We have an FC status */ + switch (ioasa->rc.fc_rc) { + case SISL_FC_RC_LINKDOWN: + scp->result = (DID_REQUEUE << 16); + break; + case SISL_FC_RC_RESID: + /* This indicates an FCP resid underrun */ + if (!(ioasa->rc.flags & SISL_RC_FLAGS_OVERRUN)) { + /* If the SISL_RC_FLAGS_OVERRUN flag was set, + * then we will handle this error else where. + * If not then we must handle it here. + * This is probably an AFU bug. + */ + scp->result = (DID_ERROR << 16); + } + break; + case SISL_FC_RC_RESIDERR: + /* Resid mismatch between adapter and device */ + case SISL_FC_RC_TGTABORT: + case SISL_FC_RC_ABORTOK: + case SISL_FC_RC_ABORTFAIL: + case SISL_FC_RC_NOLOGI: + case SISL_FC_RC_ABORTPEND: + case SISL_FC_RC_WRABORTPEND: + case SISL_FC_RC_NOEXP: + case SISL_FC_RC_INUSE: + scp->result = (DID_ERROR << 16); + break; + } + } + + if (ioasa->rc.afu_rc) { + /* We have an AFU error */ + switch (ioasa->rc.afu_rc) { + case SISL_AFU_RC_NO_CHANNELS: + scp->result = (DID_NO_CONNECT << 16); + break; + case SISL_AFU_RC_DATA_DMA_ERR: + switch (ioasa->afu_extra) { + case SISL_AFU_DMA_ERR_PAGE_IN: + /* Retry */ + scp->result = (DID_IMM_RETRY << 16); + break; + case SISL_AFU_DMA_ERR_INVALID_EA: + default: + scp->result = (DID_ERROR << 16); + } + break; + case SISL_AFU_RC_OUT_OF_DATA_BUFS: + /* Retry */ + scp->result = (DID_ALLOC_FAILURE << 16); + break; + default: + scp->result = (DID_ERROR << 16); + } + } +} + +/** + * cmd_complete() - command completion handler + * @cmd: AFU command that has completed. + * + * Prepares and submits command that has either completed or timed out to + * the SCSI stack. Checks AFU command back into command pool for non-internal + * (rcb.scp populated) commands. + */ +static void cmd_complete(struct afu_cmd *cmd) +{ + struct scsi_cmnd *scp; + ulong lock_flags; + struct afu *afu = cmd->parent; + struct cxlflash_cfg *cfg = afu->parent; + bool cmd_is_tmf; + + spin_lock_irqsave(&cmd->slock, lock_flags); + cmd->sa.host_use_b[0] |= B_DONE; + spin_unlock_irqrestore(&cmd->slock, lock_flags); + + if (cmd->rcb.scp) { + scp = cmd->rcb.scp; + if (unlikely(cmd->sa.ioasc)) + process_cmd_err(cmd, scp); + else + scp->result = (DID_OK << 16); + + cmd_is_tmf = cmd->cmd_tmf; + cmd_checkin(cmd); /* Don't use cmd after here */ + + pr_debug_ratelimited("%s: calling scsi_done scp=%p result=%X " + "ioasc=%d\n", __func__, scp, scp->result, + cmd->sa.ioasc); + + scsi_dma_unmap(scp); + scp->scsi_done(scp); + + if (cmd_is_tmf) { + spin_lock_irqsave(&cfg->tmf_slock, lock_flags); + cfg->tmf_active = false; + wake_up_all_locked(&cfg->tmf_waitq); + spin_unlock_irqrestore(&cfg->tmf_slock, lock_flags); + } + } else + complete(&cmd->cevent); +} + +/** + * context_reset() - timeout handler for AFU commands + * @cmd: AFU command that timed out. + * + * Sends a reset to the AFU. + */ +static void context_reset(struct afu_cmd *cmd) +{ + int nretry = 0; + u64 rrin = 0x1; + u64 room = 0; + struct afu *afu = cmd->parent; + ulong lock_flags; + + pr_debug("%s: cmd=%p\n", __func__, cmd); + + spin_lock_irqsave(&cmd->slock, lock_flags); + + /* Already completed? */ + if (cmd->sa.host_use_b[0] & B_DONE) { + spin_unlock_irqrestore(&cmd->slock, lock_flags); + return; + } + + cmd->sa.host_use_b[0] |= (B_DONE | B_ERROR | B_TIMEOUT); + spin_unlock_irqrestore(&cmd->slock, lock_flags); + + /* + * We really want to send this reset at all costs, so spread + * out wait time on successive retries for available room. + */ + do { + room = readq_be(&afu->host_map->cmd_room); + atomic64_set(&afu->room, room); + if (room) + goto write_rrin; + udelay(nretry); + } while (nretry++ < MC_ROOM_RETRY_CNT); + + pr_err("%s: no cmd_room to send reset\n", __func__); + return; + +write_rrin: + nretry = 0; + writeq_be(rrin, &afu->host_map->ioarrin); + do { + rrin = readq_be(&afu->host_map->ioarrin); + if (rrin != 0x1) + break; + /* Double delay each time */ + udelay(2 << nretry); + } while (nretry++ < MC_ROOM_RETRY_CNT); +} + +/** + * send_cmd() - sends an AFU command + * @afu: AFU associated with the host. + * @cmd: AFU command to send. + * + * Return: + * 0 on success, SCSI_MLQUEUE_HOST_BUSY on failure + */ +static int send_cmd(struct afu *afu, struct afu_cmd *cmd) +{ + struct cxlflash_cfg *cfg = afu->parent; + struct device *dev = &cfg->dev->dev; + int nretry = 0; + int rc = 0; + u64 room; + long newval; + + /* + * This routine is used by critical users such an AFU sync and to + * send a task management function (TMF). Thus we want to retry a + * bit before returning an error. To avoid the performance penalty + * of MMIO, we spread the update of 'room' over multiple commands. + */ +retry: + newval = atomic64_dec_if_positive(&afu->room); + if (!newval) { + do { + room = readq_be(&afu->host_map->cmd_room); + atomic64_set(&afu->room, room); + if (room) + goto write_ioarrin; + udelay(nretry); + } while (nretry++ < MC_ROOM_RETRY_CNT); + + dev_err(dev, "%s: no cmd_room to send 0x%X\n", + __func__, cmd->rcb.cdb[0]); + + goto no_room; + } else if (unlikely(newval < 0)) { + /* This should be rare. i.e. Only if two threads race and + * decrement before the MMIO read is done. In this case + * just benefit from the other thread having updated + * afu->room. + */ + if (nretry++ < MC_ROOM_RETRY_CNT) { + udelay(nretry); + goto retry; + } + + goto no_room; + } + +write_ioarrin: + writeq_be((u64)&cmd->rcb, &afu->host_map->ioarrin); +out: + pr_devel("%s: cmd=%p len=%d ea=%p rc=%d\n", __func__, cmd, + cmd->rcb.data_len, (void *)cmd->rcb.data_ea, rc); + return rc; + +no_room: + afu->read_room = true; + schedule_work(&cfg->work_q); + rc = SCSI_MLQUEUE_HOST_BUSY; + goto out; +} + +/** + * wait_resp() - polls for a response or timeout to a sent AFU command + * @afu: AFU associated with the host. + * @cmd: AFU command that was sent. + */ +static void wait_resp(struct afu *afu, struct afu_cmd *cmd) +{ + ulong timeout = msecs_to_jiffies(cmd->rcb.timeout * 2 * 1000); + + timeout = wait_for_completion_timeout(&cmd->cevent, timeout); + if (!timeout) + context_reset(cmd); + + if (unlikely(cmd->sa.ioasc != 0)) + pr_err("%s: CMD 0x%X failed, IOASC: flags 0x%X, afu_rc 0x%X, " + "scsi_rc 0x%X, fc_rc 0x%X\n", __func__, cmd->rcb.cdb[0], + cmd->sa.rc.flags, cmd->sa.rc.afu_rc, cmd->sa.rc.scsi_rc, + cmd->sa.rc.fc_rc); +} + +/** + * send_tmf() - sends a Task Management Function (TMF) + * @afu: AFU to checkout from. + * @scp: SCSI command from stack. + * @tmfcmd: TMF command to send. + * + * Return: + * 0 on success, SCSI_MLQUEUE_HOST_BUSY on failure + */ +static int send_tmf(struct afu *afu, struct scsi_cmnd *scp, u64 tmfcmd) +{ + struct afu_cmd *cmd; + + u32 port_sel = scp->device->channel + 1; + short lflag = 0; + struct Scsi_Host *host = scp->device->host; + struct cxlflash_cfg *cfg = (struct cxlflash_cfg *)host->hostdata; + struct device *dev = &cfg->dev->dev; + ulong lock_flags; + int rc = 0; + ulong to; + + cmd = cmd_checkout(afu); + if (unlikely(!cmd)) { + dev_err(dev, "%s: could not get a free command\n", __func__); + rc = SCSI_MLQUEUE_HOST_BUSY; + goto out; + } + + /* When Task Management Function is active do not send another */ + spin_lock_irqsave(&cfg->tmf_slock, lock_flags); + if (cfg->tmf_active) + wait_event_interruptible_lock_irq(cfg->tmf_waitq, + !cfg->tmf_active, + cfg->tmf_slock); + cfg->tmf_active = true; + cmd->cmd_tmf = true; + spin_unlock_irqrestore(&cfg->tmf_slock, lock_flags); + + cmd->rcb.ctx_id = afu->ctx_hndl; + cmd->rcb.port_sel = port_sel; + cmd->rcb.lun_id = lun_to_lunid(scp->device->lun); + + lflag = SISL_REQ_FLAGS_TMF_CMD; + + cmd->rcb.req_flags = (SISL_REQ_FLAGS_PORT_LUN_ID | + SISL_REQ_FLAGS_SUP_UNDERRUN | lflag); + + /* Stash the scp in the reserved field, for reuse during interrupt */ + cmd->rcb.scp = scp; + + /* Copy the CDB from the cmd passed in */ + memcpy(cmd->rcb.cdb, &tmfcmd, sizeof(tmfcmd)); + + /* Send the command */ + rc = send_cmd(afu, cmd); + if (unlikely(rc)) { + cmd_checkin(cmd); + spin_lock_irqsave(&cfg->tmf_slock, lock_flags); + cfg->tmf_active = false; + spin_unlock_irqrestore(&cfg->tmf_slock, lock_flags); + goto out; + } + + spin_lock_irqsave(&cfg->tmf_slock, lock_flags); + to = msecs_to_jiffies(5000); + to = wait_event_interruptible_lock_irq_timeout(cfg->tmf_waitq, + !cfg->tmf_active, + cfg->tmf_slock, + to); + if (!to) { + cfg->tmf_active = false; + dev_err(dev, "%s: TMF timed out!\n", __func__); + rc = -1; + } + spin_unlock_irqrestore(&cfg->tmf_slock, lock_flags); +out: + return rc; +} + +/** + * cxlflash_driver_info() - information handler for this host driver + * @host: SCSI host associated with device. + * + * Return: A string describing the device. + */ +static const char *cxlflash_driver_info(struct Scsi_Host *host) +{ + return CXLFLASH_ADAPTER_NAME; +} + +/** + * cxlflash_queuecommand() - sends a mid-layer request + * @host: SCSI host associated with device. + * @scp: SCSI command to send. + * + * Return: 0 on success, SCSI_MLQUEUE_HOST_BUSY on failure + */ +static int cxlflash_queuecommand(struct Scsi_Host *host, struct scsi_cmnd *scp) +{ + struct cxlflash_cfg *cfg = (struct cxlflash_cfg *)host->hostdata; + struct afu *afu = cfg->afu; + struct device *dev = &cfg->dev->dev; + struct afu_cmd *cmd; + u32 port_sel = scp->device->channel + 1; + int nseg, i, ncount; + struct scatterlist *sg; + ulong lock_flags; + short lflag = 0; + int rc = 0; + + dev_dbg_ratelimited(dev, "%s: (scp=%p) %d/%d/%d/%llu " + "cdb=(%08X-%08X-%08X-%08X)\n", + __func__, scp, host->host_no, scp->device->channel, + scp->device->id, scp->device->lun, + get_unaligned_be32(&((u32 *)scp->cmnd)[0]), + get_unaligned_be32(&((u32 *)scp->cmnd)[1]), + get_unaligned_be32(&((u32 *)scp->cmnd)[2]), + get_unaligned_be32(&((u32 *)scp->cmnd)[3])); + + /* + * If a Task Management Function is active, wait for it to complete + * before continuing with regular commands. + */ + spin_lock_irqsave(&cfg->tmf_slock, lock_flags); + if (cfg->tmf_active) { + spin_unlock_irqrestore(&cfg->tmf_slock, lock_flags); + rc = SCSI_MLQUEUE_HOST_BUSY; + goto out; + } + spin_unlock_irqrestore(&cfg->tmf_slock, lock_flags); + + switch (cfg->state) { + case STATE_RESET: + dev_dbg_ratelimited(dev, "%s: device is in reset!\n", __func__); + rc = SCSI_MLQUEUE_HOST_BUSY; + goto out; + case STATE_FAILTERM: + dev_dbg_ratelimited(dev, "%s: device has failed!\n", __func__); + scp->result = (DID_NO_CONNECT << 16); + scp->scsi_done(scp); + rc = 0; + goto out; + default: + break; + } + + cmd = cmd_checkout(afu); + if (unlikely(!cmd)) { + dev_err(dev, "%s: could not get a free command\n", __func__); + rc = SCSI_MLQUEUE_HOST_BUSY; + goto out; + } + + cmd->rcb.ctx_id = afu->ctx_hndl; + cmd->rcb.port_sel = port_sel; + cmd->rcb.lun_id = lun_to_lunid(scp->device->lun); + + if (scp->sc_data_direction == DMA_TO_DEVICE) + lflag = SISL_REQ_FLAGS_HOST_WRITE; + else + lflag = SISL_REQ_FLAGS_HOST_READ; + + cmd->rcb.req_flags = (SISL_REQ_FLAGS_PORT_LUN_ID | + SISL_REQ_FLAGS_SUP_UNDERRUN | lflag); + + /* Stash the scp in the reserved field, for reuse during interrupt */ + cmd->rcb.scp = scp; + + nseg = scsi_dma_map(scp); + if (unlikely(nseg < 0)) { + dev_err(dev, "%s: Fail DMA map! nseg=%d\n", + __func__, nseg); + rc = SCSI_MLQUEUE_HOST_BUSY; + goto out; + } + + ncount = scsi_sg_count(scp); + scsi_for_each_sg(scp, sg, ncount, i) { + cmd->rcb.data_len = sg_dma_len(sg); + cmd->rcb.data_ea = sg_dma_address(sg); + } + + /* Copy the CDB from the scsi_cmnd passed in */ + memcpy(cmd->rcb.cdb, scp->cmnd, sizeof(cmd->rcb.cdb)); + + /* Send the command */ + rc = send_cmd(afu, cmd); + if (unlikely(rc)) { + cmd_checkin(cmd); + scsi_dma_unmap(scp); + } + +out: + pr_devel("%s: returning rc=%d\n", __func__, rc); + return rc; +} + +/** + * cxlflash_wait_for_pci_err_recovery() - wait for error recovery during probe + * @cfg: Internal structure associated with the host. + */ +static void cxlflash_wait_for_pci_err_recovery(struct cxlflash_cfg *cfg) +{ + struct pci_dev *pdev = cfg->dev; + + if (pci_channel_offline(pdev)) + wait_event_timeout(cfg->reset_waitq, + !pci_channel_offline(pdev), + CXLFLASH_PCI_ERROR_RECOVERY_TIMEOUT); +} + +/** + * free_mem() - free memory associated with the AFU + * @cfg: Internal structure associated with the host. + */ +static void free_mem(struct cxlflash_cfg *cfg) +{ + int i; + char *buf = NULL; + struct afu *afu = cfg->afu; + + if (cfg->afu) { + for (i = 0; i < CXLFLASH_NUM_CMDS; i++) { + buf = afu->cmd[i].buf; + if (!((u64)buf & (PAGE_SIZE - 1))) + free_page((ulong)buf); + } + + free_pages((ulong)afu, get_order(sizeof(struct afu))); + cfg->afu = NULL; + } +} + +/** + * stop_afu() - stops the AFU command timers and unmaps the MMIO space + * @cfg: Internal structure associated with the host. + * + * Safe to call with AFU in a partially allocated/initialized state. + */ +static void stop_afu(struct cxlflash_cfg *cfg) +{ + int i; + struct afu *afu = cfg->afu; + + if (likely(afu)) { + for (i = 0; i < CXLFLASH_NUM_CMDS; i++) + complete(&afu->cmd[i].cevent); + + if (likely(afu->afu_map)) { + cxl_psa_unmap((void __iomem *)afu->afu_map); + afu->afu_map = NULL; + } + } +} + +/** + * term_mc() - terminates the master context + * @cfg: Internal structure associated with the host. + * @level: Depth of allocation, where to begin waterfall tear down. + * + * Safe to call with AFU/MC in partially allocated/initialized state. + */ +static void term_mc(struct cxlflash_cfg *cfg, enum undo_level level) +{ + int rc = 0; + struct afu *afu = cfg->afu; + struct device *dev = &cfg->dev->dev; + + if (!afu || !cfg->mcctx) { + dev_err(dev, "%s: returning from term_mc with NULL afu or MC\n", + __func__); + return; + } + + switch (level) { + case UNDO_START: + rc = cxl_stop_context(cfg->mcctx); + BUG_ON(rc); + case UNMAP_THREE: + cxl_unmap_afu_irq(cfg->mcctx, 3, afu); + case UNMAP_TWO: + cxl_unmap_afu_irq(cfg->mcctx, 2, afu); + case UNMAP_ONE: + cxl_unmap_afu_irq(cfg->mcctx, 1, afu); + case FREE_IRQ: + cxl_free_afu_irqs(cfg->mcctx); + case RELEASE_CONTEXT: + cfg->mcctx = NULL; + } +} + +/** + * term_afu() - terminates the AFU + * @cfg: Internal structure associated with the host. + * + * Safe to call with AFU/MC in partially allocated/initialized state. + */ +static void term_afu(struct cxlflash_cfg *cfg) +{ + term_mc(cfg, UNDO_START); + + if (cfg->afu) + stop_afu(cfg); + + pr_debug("%s: returning\n", __func__); +} + +/** + * cxlflash_remove() - PCI entry point to tear down host + * @pdev: PCI device associated with the host. + * + * Safe to use as a cleanup in partially allocated/initialized state. + */ +static void cxlflash_remove(struct pci_dev *pdev) +{ + struct cxlflash_cfg *cfg = pci_get_drvdata(pdev); + ulong lock_flags; + + /* If a Task Management Function is active, wait for it to complete + * before continuing with remove. + */ + spin_lock_irqsave(&cfg->tmf_slock, lock_flags); + if (cfg->tmf_active) + wait_event_interruptible_lock_irq(cfg->tmf_waitq, + !cfg->tmf_active, + cfg->tmf_slock); + spin_unlock_irqrestore(&cfg->tmf_slock, lock_flags); + + cfg->state = STATE_FAILTERM; + cxlflash_stop_term_user_contexts(cfg); + + switch (cfg->init_state) { + case INIT_STATE_SCSI: + cxlflash_term_local_luns(cfg); + scsi_remove_host(cfg->host); + /* fall through */ + case INIT_STATE_AFU: + term_afu(cfg); + cancel_work_sync(&cfg->work_q); + case INIT_STATE_PCI: + pci_release_regions(cfg->dev); + pci_disable_device(pdev); + case INIT_STATE_NONE: + free_mem(cfg); + scsi_host_put(cfg->host); + break; + } + + pr_debug("%s: returning\n", __func__); +} + +/** + * alloc_mem() - allocates the AFU and its command pool + * @cfg: Internal structure associated with the host. + * + * A partially allocated state remains on failure. + * + * Return: + * 0 on success + * -ENOMEM on failure to allocate memory + */ +static int alloc_mem(struct cxlflash_cfg *cfg) +{ + int rc = 0; + int i; + char *buf = NULL; + struct device *dev = &cfg->dev->dev; + + /* AFU is ~12k, i.e. only one 64k page or up to four 4k pages */ + cfg->afu = (void *)__get_free_pages(GFP_KERNEL | __GFP_ZERO, + get_order(sizeof(struct afu))); + if (unlikely(!cfg->afu)) { + dev_err(dev, "%s: cannot get %d free pages\n", + __func__, get_order(sizeof(struct afu))); + rc = -ENOMEM; + goto out; + } + cfg->afu->parent = cfg; + cfg->afu->afu_map = NULL; + + for (i = 0; i < CXLFLASH_NUM_CMDS; buf += CMD_BUFSIZE, i++) { + if (!((u64)buf & (PAGE_SIZE - 1))) { + buf = (void *)__get_free_page(GFP_KERNEL | __GFP_ZERO); + if (unlikely(!buf)) { + dev_err(dev, + "%s: Allocate command buffers fail!\n", + __func__); + rc = -ENOMEM; + free_mem(cfg); + goto out; + } + } + + cfg->afu->cmd[i].buf = buf; + atomic_set(&cfg->afu->cmd[i].free, 1); + cfg->afu->cmd[i].slot = i; + } + +out: + return rc; +} + +/** + * init_pci() - initializes the host as a PCI device + * @cfg: Internal structure associated with the host. + * + * Return: 0 on success, -errno on failure + */ +static int init_pci(struct cxlflash_cfg *cfg) +{ + struct pci_dev *pdev = cfg->dev; + int rc = 0; + + cfg->cxlflash_regs_pci = pci_resource_start(pdev, 0); + rc = pci_request_regions(pdev, CXLFLASH_NAME); + if (rc < 0) { + dev_err(&pdev->dev, + "%s: Couldn't register memory range of registers\n", + __func__); + goto out; + } + + rc = pci_enable_device(pdev); + if (rc || pci_channel_offline(pdev)) { + if (pci_channel_offline(pdev)) { + cxlflash_wait_for_pci_err_recovery(cfg); + rc = pci_enable_device(pdev); + } + + if (rc) { + dev_err(&pdev->dev, "%s: Cannot enable adapter\n", + __func__); + cxlflash_wait_for_pci_err_recovery(cfg); + goto out_release_regions; + } + } + + rc = pci_set_dma_mask(pdev, DMA_BIT_MASK(64)); + if (rc < 0) { + dev_dbg(&pdev->dev, "%s: Failed to set 64 bit PCI DMA mask\n", + __func__); + rc = pci_set_dma_mask(pdev, DMA_BIT_MASK(32)); + } + + if (rc < 0) { + dev_err(&pdev->dev, "%s: Failed to set PCI DMA mask\n", + __func__); + goto out_disable; + } + + pci_set_master(pdev); + + if (pci_channel_offline(pdev)) { + cxlflash_wait_for_pci_err_recovery(cfg); + if (pci_channel_offline(pdev)) { + rc = -EIO; + goto out_msi_disable; + } + } + + rc = pci_save_state(pdev); + + if (rc != PCIBIOS_SUCCESSFUL) { + dev_err(&pdev->dev, "%s: Failed to save PCI config space\n", + __func__); + rc = -EIO; + goto cleanup_nolog; + } + +out: + pr_debug("%s: returning rc=%d\n", __func__, rc); + return rc; + +cleanup_nolog: +out_msi_disable: + cxlflash_wait_for_pci_err_recovery(cfg); +out_disable: + pci_disable_device(pdev); +out_release_regions: + pci_release_regions(pdev); + goto out; + +} + +/** + * init_scsi() - adds the host to the SCSI stack and kicks off host scan + * @cfg: Internal structure associated with the host. + * + * Return: 0 on success, -errno on failure + */ +static int init_scsi(struct cxlflash_cfg *cfg) +{ + struct pci_dev *pdev = cfg->dev; + int rc = 0; + + rc = scsi_add_host(cfg->host, &pdev->dev); + if (rc) { + dev_err(&pdev->dev, "%s: scsi_add_host failed (rc=%d)\n", + __func__, rc); + goto out; + } + + scsi_scan_host(cfg->host); + +out: + pr_debug("%s: returning rc=%d\n", __func__, rc); + return rc; +} + +/** + * set_port_online() - transitions the specified host FC port to online state + * @fc_regs: Top of MMIO region defined for specified port. + * + * The provided MMIO region must be mapped prior to call. Online state means + * that the FC link layer has synced, completed the handshaking process, and + * is ready for login to start. + */ +static void set_port_online(__be64 __iomem *fc_regs) +{ + u64 cmdcfg; + + cmdcfg = readq_be(&fc_regs[FC_MTIP_CMDCONFIG / 8]); + cmdcfg &= (~FC_MTIP_CMDCONFIG_OFFLINE); /* clear OFF_LINE */ + cmdcfg |= (FC_MTIP_CMDCONFIG_ONLINE); /* set ON_LINE */ + writeq_be(cmdcfg, &fc_regs[FC_MTIP_CMDCONFIG / 8]); +} + +/** + * set_port_offline() - transitions the specified host FC port to offline state + * @fc_regs: Top of MMIO region defined for specified port. + * + * The provided MMIO region must be mapped prior to call. + */ +static void set_port_offline(__be64 __iomem *fc_regs) +{ + u64 cmdcfg; + + cmdcfg = readq_be(&fc_regs[FC_MTIP_CMDCONFIG / 8]); + cmdcfg &= (~FC_MTIP_CMDCONFIG_ONLINE); /* clear ON_LINE */ + cmdcfg |= (FC_MTIP_CMDCONFIG_OFFLINE); /* set OFF_LINE */ + writeq_be(cmdcfg, &fc_regs[FC_MTIP_CMDCONFIG / 8]); +} + +/** + * wait_port_online() - waits for the specified host FC port come online + * @fc_regs: Top of MMIO region defined for specified port. + * @delay_us: Number of microseconds to delay between reading port status. + * @nretry: Number of cycles to retry reading port status. + * + * The provided MMIO region must be mapped prior to call. This will timeout + * when the cable is not plugged in. + * + * Return: + * TRUE (1) when the specified port is online + * FALSE (0) when the specified port fails to come online after timeout + * -EINVAL when @delay_us is less than 1000 + */ +static int wait_port_online(__be64 __iomem *fc_regs, u32 delay_us, u32 nretry) +{ + u64 status; + + if (delay_us < 1000) { + pr_err("%s: invalid delay specified %d\n", __func__, delay_us); + return -EINVAL; + } + + do { + msleep(delay_us / 1000); + status = readq_be(&fc_regs[FC_MTIP_STATUS / 8]); + } while ((status & FC_MTIP_STATUS_MASK) != FC_MTIP_STATUS_ONLINE && + nretry--); + + return ((status & FC_MTIP_STATUS_MASK) == FC_MTIP_STATUS_ONLINE); +} + +/** + * wait_port_offline() - waits for the specified host FC port go offline + * @fc_regs: Top of MMIO region defined for specified port. + * @delay_us: Number of microseconds to delay between reading port status. + * @nretry: Number of cycles to retry reading port status. + * + * The provided MMIO region must be mapped prior to call. + * + * Return: + * TRUE (1) when the specified port is offline + * FALSE (0) when the specified port fails to go offline after timeout + * -EINVAL when @delay_us is less than 1000 + */ +static int wait_port_offline(__be64 __iomem *fc_regs, u32 delay_us, u32 nretry) +{ + u64 status; + + if (delay_us < 1000) { + pr_err("%s: invalid delay specified %d\n", __func__, delay_us); + return -EINVAL; + } + + do { + msleep(delay_us / 1000); + status = readq_be(&fc_regs[FC_MTIP_STATUS / 8]); + } while ((status & FC_MTIP_STATUS_MASK) != FC_MTIP_STATUS_OFFLINE && + nretry--); + + return ((status & FC_MTIP_STATUS_MASK) == FC_MTIP_STATUS_OFFLINE); +} + +/** + * afu_set_wwpn() - configures the WWPN for the specified host FC port + * @afu: AFU associated with the host that owns the specified FC port. + * @port: Port number being configured. + * @fc_regs: Top of MMIO region defined for specified port. + * @wwpn: The world-wide-port-number previously discovered for port. + * + * The provided MMIO region must be mapped prior to call. As part of the + * sequence to configure the WWPN, the port is toggled offline and then back + * online. This toggling action can cause this routine to delay up to a few + * seconds. When configured to use the internal LUN feature of the AFU, a + * failure to come online is overridden. + * + * Return: + * 0 when the WWPN is successfully written and the port comes back online + * -1 when the port fails to go offline or come back up online + */ +static int afu_set_wwpn(struct afu *afu, int port, __be64 __iomem *fc_regs, + u64 wwpn) +{ + int rc = 0; + + set_port_offline(fc_regs); + + if (!wait_port_offline(fc_regs, FC_PORT_STATUS_RETRY_INTERVAL_US, + FC_PORT_STATUS_RETRY_CNT)) { + pr_debug("%s: wait on port %d to go offline timed out\n", + __func__, port); + rc = -1; /* but continue on to leave the port back online */ + } + + if (rc == 0) + writeq_be(wwpn, &fc_regs[FC_PNAME / 8]); + + /* Always return success after programming WWPN */ + rc = 0; + + set_port_online(fc_regs); + + if (!wait_port_online(fc_regs, FC_PORT_STATUS_RETRY_INTERVAL_US, + FC_PORT_STATUS_RETRY_CNT)) { + pr_err("%s: wait on port %d to go online timed out\n", + __func__, port); + } + + pr_debug("%s: returning rc=%d\n", __func__, rc); + + return rc; +} + +/** + * afu_link_reset() - resets the specified host FC port + * @afu: AFU associated with the host that owns the specified FC port. + * @port: Port number being configured. + * @fc_regs: Top of MMIO region defined for specified port. + * + * The provided MMIO region must be mapped prior to call. The sequence to + * reset the port involves toggling it offline and then back online. This + * action can cause this routine to delay up to a few seconds. An effort + * is made to maintain link with the device by switching to host to use + * the alternate port exclusively while the reset takes place. + * failure to come online is overridden. + */ +static void afu_link_reset(struct afu *afu, int port, __be64 __iomem *fc_regs) +{ + u64 port_sel; + + /* first switch the AFU to the other links, if any */ + port_sel = readq_be(&afu->afu_map->global.regs.afu_port_sel); + port_sel &= ~(1ULL << port); + writeq_be(port_sel, &afu->afu_map->global.regs.afu_port_sel); + cxlflash_afu_sync(afu, 0, 0, AFU_GSYNC); + + set_port_offline(fc_regs); + if (!wait_port_offline(fc_regs, FC_PORT_STATUS_RETRY_INTERVAL_US, + FC_PORT_STATUS_RETRY_CNT)) + pr_err("%s: wait on port %d to go offline timed out\n", + __func__, port); + + set_port_online(fc_regs); + if (!wait_port_online(fc_regs, FC_PORT_STATUS_RETRY_INTERVAL_US, + FC_PORT_STATUS_RETRY_CNT)) + pr_err("%s: wait on port %d to go online timed out\n", + __func__, port); + + /* switch back to include this port */ + port_sel |= (1ULL << port); + writeq_be(port_sel, &afu->afu_map->global.regs.afu_port_sel); + cxlflash_afu_sync(afu, 0, 0, AFU_GSYNC); + + pr_debug("%s: returning port_sel=%lld\n", __func__, port_sel); +} + +/* + * Asynchronous interrupt information table + */ +static const struct asyc_intr_info ainfo[] = { + {SISL_ASTATUS_FC0_OTHER, "other error", 0, CLR_FC_ERROR | LINK_RESET}, + {SISL_ASTATUS_FC0_LOGO, "target initiated LOGO", 0, 0}, + {SISL_ASTATUS_FC0_CRC_T, "CRC threshold exceeded", 0, LINK_RESET}, + {SISL_ASTATUS_FC0_LOGI_R, "login timed out, retrying", 0, LINK_RESET}, + {SISL_ASTATUS_FC0_LOGI_F, "login failed", 0, CLR_FC_ERROR}, + {SISL_ASTATUS_FC0_LOGI_S, "login succeeded", 0, SCAN_HOST}, + {SISL_ASTATUS_FC0_LINK_DN, "link down", 0, 0}, + {SISL_ASTATUS_FC0_LINK_UP, "link up", 0, SCAN_HOST}, + {SISL_ASTATUS_FC1_OTHER, "other error", 1, CLR_FC_ERROR | LINK_RESET}, + {SISL_ASTATUS_FC1_LOGO, "target initiated LOGO", 1, 0}, + {SISL_ASTATUS_FC1_CRC_T, "CRC threshold exceeded", 1, LINK_RESET}, + {SISL_ASTATUS_FC1_LOGI_R, "login timed out, retrying", 1, LINK_RESET}, + {SISL_ASTATUS_FC1_LOGI_F, "login failed", 1, CLR_FC_ERROR}, + {SISL_ASTATUS_FC1_LOGI_S, "login succeeded", 1, SCAN_HOST}, + {SISL_ASTATUS_FC1_LINK_DN, "link down", 1, 0}, + {SISL_ASTATUS_FC1_LINK_UP, "link up", 1, SCAN_HOST}, + {0x0, "", 0, 0} /* terminator */ +}; + +/** + * find_ainfo() - locates and returns asynchronous interrupt information + * @status: Status code set by AFU on error. + * + * Return: The located information or NULL when the status code is invalid. + */ +static const struct asyc_intr_info *find_ainfo(u64 status) +{ + const struct asyc_intr_info *info; + + for (info = &ainfo[0]; info->status; info++) + if (info->status == status) + return info; + + return NULL; +} + +/** + * afu_err_intr_init() - clears and initializes the AFU for error interrupts + * @afu: AFU associated with the host. + */ +static void afu_err_intr_init(struct afu *afu) +{ + int i; + u64 reg; + + /* global async interrupts: AFU clears afu_ctrl on context exit + * if async interrupts were sent to that context. This prevents + * the AFU form sending further async interrupts when + * there is + * nobody to receive them. + */ + + /* mask all */ + writeq_be(-1ULL, &afu->afu_map->global.regs.aintr_mask); + /* set LISN# to send and point to master context */ + reg = ((u64) (((afu->ctx_hndl << 8) | SISL_MSI_ASYNC_ERROR)) << 40); + + if (afu->internal_lun) + reg |= 1; /* Bit 63 indicates local lun */ + writeq_be(reg, &afu->afu_map->global.regs.afu_ctrl); + /* clear all */ + writeq_be(-1ULL, &afu->afu_map->global.regs.aintr_clear); + /* unmask bits that are of interest */ + /* note: afu can send an interrupt after this step */ + writeq_be(SISL_ASTATUS_MASK, &afu->afu_map->global.regs.aintr_mask); + /* clear again in case a bit came on after previous clear but before */ + /* unmask */ + writeq_be(-1ULL, &afu->afu_map->global.regs.aintr_clear); + + /* Clear/Set internal lun bits */ + reg = readq_be(&afu->afu_map->global.fc_regs[0][FC_CONFIG2 / 8]); + reg &= SISL_FC_INTERNAL_MASK; + if (afu->internal_lun) + reg |= ((u64)(afu->internal_lun - 1) << SISL_FC_INTERNAL_SHIFT); + writeq_be(reg, &afu->afu_map->global.fc_regs[0][FC_CONFIG2 / 8]); + + /* now clear FC errors */ + for (i = 0; i < NUM_FC_PORTS; i++) { + writeq_be(0xFFFFFFFFU, + &afu->afu_map->global.fc_regs[i][FC_ERROR / 8]); + writeq_be(0, &afu->afu_map->global.fc_regs[i][FC_ERRCAP / 8]); + } + + /* sync interrupts for master's IOARRIN write */ + /* note that unlike asyncs, there can be no pending sync interrupts */ + /* at this time (this is a fresh context and master has not written */ + /* IOARRIN yet), so there is nothing to clear. */ + + /* set LISN#, it is always sent to the context that wrote IOARRIN */ + writeq_be(SISL_MSI_SYNC_ERROR, &afu->host_map->ctx_ctrl); + writeq_be(SISL_ISTATUS_MASK, &afu->host_map->intr_mask); +} + +/** + * cxlflash_sync_err_irq() - interrupt handler for synchronous errors + * @irq: Interrupt number. + * @data: Private data provided at interrupt registration, the AFU. + * + * Return: Always return IRQ_HANDLED. + */ +static irqreturn_t cxlflash_sync_err_irq(int irq, void *data) +{ + struct afu *afu = (struct afu *)data; + u64 reg; + u64 reg_unmasked; + + reg = readq_be(&afu->host_map->intr_status); + reg_unmasked = (reg & SISL_ISTATUS_UNMASK); + + if (reg_unmasked == 0UL) { + pr_err("%s: %llX: spurious interrupt, intr_status %016llX\n", + __func__, (u64)afu, reg); + goto cxlflash_sync_err_irq_exit; + } + + pr_err("%s: %llX: unexpected interrupt, intr_status %016llX\n", + __func__, (u64)afu, reg); + + writeq_be(reg_unmasked, &afu->host_map->intr_clear); + +cxlflash_sync_err_irq_exit: + pr_debug("%s: returning rc=%d\n", __func__, IRQ_HANDLED); + return IRQ_HANDLED; +} + +/** + * cxlflash_rrq_irq() - interrupt handler for read-response queue (normal path) + * @irq: Interrupt number. + * @data: Private data provided at interrupt registration, the AFU. + * + * Return: Always return IRQ_HANDLED. + */ +static irqreturn_t cxlflash_rrq_irq(int irq, void *data) +{ + struct afu *afu = (struct afu *)data; + struct afu_cmd *cmd; + bool toggle = afu->toggle; + u64 entry, + *hrrq_start = afu->hrrq_start, + *hrrq_end = afu->hrrq_end, + *hrrq_curr = afu->hrrq_curr; + + /* Process however many RRQ entries that are ready */ + while (true) { + entry = *hrrq_curr; + + if ((entry & SISL_RESP_HANDLE_T_BIT) != toggle) + break; + + cmd = (struct afu_cmd *)(entry & ~SISL_RESP_HANDLE_T_BIT); + cmd_complete(cmd); + + /* Advance to next entry or wrap and flip the toggle bit */ + if (hrrq_curr < hrrq_end) + hrrq_curr++; + else { + hrrq_curr = hrrq_start; + toggle ^= SISL_RESP_HANDLE_T_BIT; + } + } + + afu->hrrq_curr = hrrq_curr; + afu->toggle = toggle; + + return IRQ_HANDLED; +} + +/** + * cxlflash_async_err_irq() - interrupt handler for asynchronous errors + * @irq: Interrupt number. + * @data: Private data provided at interrupt registration, the AFU. + * + * Return: Always return IRQ_HANDLED. + */ +static irqreturn_t cxlflash_async_err_irq(int irq, void *data) +{ + struct afu *afu = (struct afu *)data; + struct cxlflash_cfg *cfg = afu->parent; + struct device *dev = &cfg->dev->dev; + u64 reg_unmasked; + const struct asyc_intr_info *info; + struct sisl_global_map __iomem *global = &afu->afu_map->global; + u64 reg; + u8 port; + int i; + + reg = readq_be(&global->regs.aintr_status); + reg_unmasked = (reg & SISL_ASTATUS_UNMASK); + + if (reg_unmasked == 0) { + dev_err(dev, "%s: spurious interrupt, aintr_status 0x%016llX\n", + __func__, reg); + goto out; + } + + /* FYI, it is 'okay' to clear AFU status before FC_ERROR */ + writeq_be(reg_unmasked, &global->regs.aintr_clear); + + /* Check each bit that is on */ + for (i = 0; reg_unmasked; i++, reg_unmasked = (reg_unmasked >> 1)) { + info = find_ainfo(1ULL << i); + if (((reg_unmasked & 0x1) == 0) || !info) + continue; + + port = info->port; + + dev_err(dev, "%s: FC Port %d -> %s, fc_status 0x%08llX\n", + __func__, port, info->desc, + readq_be(&global->fc_regs[port][FC_STATUS / 8])); + + /* + * Do link reset first, some OTHER errors will set FC_ERROR + * again if cleared before or w/o a reset + */ + if (info->action & LINK_RESET) { + dev_err(dev, "%s: FC Port %d: resetting link\n", + __func__, port); + cfg->lr_state = LINK_RESET_REQUIRED; + cfg->lr_port = port; + schedule_work(&cfg->work_q); + } + + if (info->action & CLR_FC_ERROR) { + reg = readq_be(&global->fc_regs[port][FC_ERROR / 8]); + + /* + * Since all errors are unmasked, FC_ERROR and FC_ERRCAP + * should be the same and tracing one is sufficient. + */ + + dev_err(dev, "%s: fc %d: clearing fc_error 0x%08llX\n", + __func__, port, reg); + + writeq_be(reg, &global->fc_regs[port][FC_ERROR / 8]); + writeq_be(0, &global->fc_regs[port][FC_ERRCAP / 8]); + } + + if (info->action & SCAN_HOST) { + atomic_inc(&cfg->scan_host_needed); + schedule_work(&cfg->work_q); + } + } + +out: + dev_dbg(dev, "%s: returning IRQ_HANDLED, afu=%p\n", __func__, afu); + return IRQ_HANDLED; +} + +/** + * start_context() - starts the master context + * @cfg: Internal structure associated with the host. + * + * Return: A success or failure value from CXL services. + */ +static int start_context(struct cxlflash_cfg *cfg) +{ + int rc = 0; + + rc = cxl_start_context(cfg->mcctx, + cfg->afu->work.work_element_descriptor, + NULL); + + pr_debug("%s: returning rc=%d\n", __func__, rc); + return rc; +} + +/** + * read_vpd() - obtains the WWPNs from VPD + * @cfg: Internal structure associated with the host. + * @wwpn: Array of size NUM_FC_PORTS to pass back WWPNs + * + * Return: 0 on success, -errno on failure + */ +static int read_vpd(struct cxlflash_cfg *cfg, u64 wwpn[]) +{ + struct pci_dev *dev = cfg->parent_dev; + int rc = 0; + int ro_start, ro_size, i, j, k; + ssize_t vpd_size; + char vpd_data[CXLFLASH_VPD_LEN]; + char tmp_buf[WWPN_BUF_LEN] = { 0 }; + char *wwpn_vpd_tags[NUM_FC_PORTS] = { "V5", "V6" }; + + /* Get the VPD data from the device */ + vpd_size = pci_read_vpd(dev, 0, sizeof(vpd_data), vpd_data); + if (unlikely(vpd_size <= 0)) { + dev_err(&dev->dev, "%s: Unable to read VPD (size = %ld)\n", + __func__, vpd_size); + rc = -ENODEV; + goto out; + } + + /* Get the read only section offset */ + ro_start = pci_vpd_find_tag(vpd_data, 0, vpd_size, + PCI_VPD_LRDT_RO_DATA); + if (unlikely(ro_start < 0)) { + dev_err(&dev->dev, "%s: VPD Read-only data not found\n", + __func__); + rc = -ENODEV; + goto out; + } + + /* Get the read only section size, cap when extends beyond read VPD */ + ro_size = pci_vpd_lrdt_size(&vpd_data[ro_start]); + j = ro_size; + i = ro_start + PCI_VPD_LRDT_TAG_SIZE; + if (unlikely((i + j) > vpd_size)) { + pr_debug("%s: Might need to read more VPD (%d > %ld)\n", + __func__, (i + j), vpd_size); + ro_size = vpd_size - i; + } + + /* + * Find the offset of the WWPN tag within the read only + * VPD data and validate the found field (partials are + * no good to us). Convert the ASCII data to an integer + * value. Note that we must copy to a temporary buffer + * because the conversion service requires that the ASCII + * string be terminated. + */ + for (k = 0; k < NUM_FC_PORTS; k++) { + j = ro_size; + i = ro_start + PCI_VPD_LRDT_TAG_SIZE; + + i = pci_vpd_find_info_keyword(vpd_data, i, j, wwpn_vpd_tags[k]); + if (unlikely(i < 0)) { + dev_err(&dev->dev, "%s: Port %d WWPN not found " + "in VPD\n", __func__, k); + rc = -ENODEV; + goto out; + } + + j = pci_vpd_info_field_size(&vpd_data[i]); + i += PCI_VPD_INFO_FLD_HDR_SIZE; + if (unlikely((i + j > vpd_size) || (j != WWPN_LEN))) { + dev_err(&dev->dev, "%s: Port %d WWPN incomplete or " + "VPD corrupt\n", + __func__, k); + rc = -ENODEV; + goto out; + } + + memcpy(tmp_buf, &vpd_data[i], WWPN_LEN); + rc = kstrtoul(tmp_buf, WWPN_LEN, (ulong *)&wwpn[k]); + if (unlikely(rc)) { + dev_err(&dev->dev, "%s: Fail to convert port %d WWPN " + "to integer\n", __func__, k); + rc = -ENODEV; + goto out; + } + } + +out: + pr_debug("%s: returning rc=%d\n", __func__, rc); + return rc; +} + +/** + * init_pcr() - initialize the provisioning and control registers + * @cfg: Internal structure associated with the host. + * + * Also sets up fast access to the mapped registers and initializes AFU + * command fields that never change. + */ +static void init_pcr(struct cxlflash_cfg *cfg) +{ + struct afu *afu = cfg->afu; + struct sisl_ctrl_map __iomem *ctrl_map; + int i; + + for (i = 0; i < MAX_CONTEXT; i++) { + ctrl_map = &afu->afu_map->ctrls[i].ctrl; + /* Disrupt any clients that could be running */ + /* e.g. clients that survived a master restart */ + writeq_be(0, &ctrl_map->rht_start); + writeq_be(0, &ctrl_map->rht_cnt_id); + writeq_be(0, &ctrl_map->ctx_cap); + } + + /* Copy frequently used fields into afu */ + afu->ctx_hndl = (u16) cxl_process_element(cfg->mcctx); + afu->host_map = &afu->afu_map->hosts[afu->ctx_hndl].host; + afu->ctrl_map = &afu->afu_map->ctrls[afu->ctx_hndl].ctrl; + + /* Program the Endian Control for the master context */ + writeq_be(SISL_ENDIAN_CTRL, &afu->host_map->endian_ctrl); + + /* Initialize cmd fields that never change */ + for (i = 0; i < CXLFLASH_NUM_CMDS; i++) { + afu->cmd[i].rcb.ctx_id = afu->ctx_hndl; + afu->cmd[i].rcb.msi = SISL_MSI_RRQ_UPDATED; + afu->cmd[i].rcb.rrq = 0x0; + } +} + +/** + * init_global() - initialize AFU global registers + * @cfg: Internal structure associated with the host. + */ +static int init_global(struct cxlflash_cfg *cfg) +{ + struct afu *afu = cfg->afu; + struct device *dev = &cfg->dev->dev; + u64 wwpn[NUM_FC_PORTS]; /* wwpn of AFU ports */ + int i = 0, num_ports = 0; + int rc = 0; + u64 reg; + + rc = read_vpd(cfg, &wwpn[0]); + if (rc) { + dev_err(dev, "%s: could not read vpd rc=%d\n", __func__, rc); + goto out; + } + + pr_debug("%s: wwpn0=0x%llX wwpn1=0x%llX\n", __func__, wwpn[0], wwpn[1]); + + /* Set up RRQ in AFU for master issued cmds */ + writeq_be((u64) afu->hrrq_start, &afu->host_map->rrq_start); + writeq_be((u64) afu->hrrq_end, &afu->host_map->rrq_end); + + /* AFU configuration */ + reg = readq_be(&afu->afu_map->global.regs.afu_config); + reg |= SISL_AFUCONF_AR_ALL|SISL_AFUCONF_ENDIAN; + /* enable all auto retry options and control endianness */ + /* leave others at default: */ + /* CTX_CAP write protected, mbox_r does not clear on read and */ + /* checker on if dual afu */ + writeq_be(reg, &afu->afu_map->global.regs.afu_config); + + /* Global port select: select either port */ + if (afu->internal_lun) { + /* Only use port 0 */ + writeq_be(PORT0, &afu->afu_map->global.regs.afu_port_sel); + num_ports = NUM_FC_PORTS - 1; + } else { + writeq_be(BOTH_PORTS, &afu->afu_map->global.regs.afu_port_sel); + num_ports = NUM_FC_PORTS; + } + + for (i = 0; i < num_ports; i++) { + /* Unmask all errors (but they are still masked at AFU) */ + writeq_be(0, &afu->afu_map->global.fc_regs[i][FC_ERRMSK / 8]); + /* Clear CRC error cnt & set a threshold */ + (void)readq_be(&afu->afu_map->global. + fc_regs[i][FC_CNT_CRCERR / 8]); + writeq_be(MC_CRC_THRESH, &afu->afu_map->global.fc_regs[i] + [FC_CRC_THRESH / 8]); + + /* Set WWPNs. If already programmed, wwpn[i] is 0 */ + if (wwpn[i] != 0 && + afu_set_wwpn(afu, i, + &afu->afu_map->global.fc_regs[i][0], + wwpn[i])) { + dev_err(dev, "%s: failed to set WWPN on port %d\n", + __func__, i); + rc = -EIO; + goto out; + } + /* Programming WWPN back to back causes additional + * offline/online transitions and a PLOGI + */ + msleep(100); + } + + /* Set up master's own CTX_CAP to allow real mode, host translation */ + /* tables, afu cmds and read/write GSCSI cmds. */ + /* First, unlock ctx_cap write by reading mbox */ + (void)readq_be(&afu->ctrl_map->mbox_r); /* unlock ctx_cap */ + writeq_be((SISL_CTX_CAP_REAL_MODE | SISL_CTX_CAP_HOST_XLATE | + SISL_CTX_CAP_READ_CMD | SISL_CTX_CAP_WRITE_CMD | + SISL_CTX_CAP_AFU_CMD | SISL_CTX_CAP_GSCSI_CMD), + &afu->ctrl_map->ctx_cap); + /* Initialize heartbeat */ + afu->hb = readq_be(&afu->afu_map->global.regs.afu_hb); + +out: + return rc; +} + +/** + * start_afu() - initializes and starts the AFU + * @cfg: Internal structure associated with the host. + */ +static int start_afu(struct cxlflash_cfg *cfg) +{ + struct afu *afu = cfg->afu; + struct afu_cmd *cmd; + + int i = 0; + int rc = 0; + + for (i = 0; i < CXLFLASH_NUM_CMDS; i++) { + cmd = &afu->cmd[i]; + + init_completion(&cmd->cevent); + spin_lock_init(&cmd->slock); + cmd->parent = afu; + } + + init_pcr(cfg); + + /* After an AFU reset, RRQ entries are stale, clear them */ + memset(&afu->rrq_entry, 0, sizeof(afu->rrq_entry)); + + /* Initialize RRQ pointers */ + afu->hrrq_start = &afu->rrq_entry[0]; + afu->hrrq_end = &afu->rrq_entry[NUM_RRQ_ENTRY - 1]; + afu->hrrq_curr = afu->hrrq_start; + afu->toggle = 1; + + rc = init_global(cfg); + + pr_debug("%s: returning rc=%d\n", __func__, rc); + return rc; +} + +/** + * init_mc() - create and register as the master context + * @cfg: Internal structure associated with the host. + * + * Return: 0 on success, -errno on failure + */ +static int init_mc(struct cxlflash_cfg *cfg) +{ + struct cxl_context *ctx; + struct device *dev = &cfg->dev->dev; + struct afu *afu = cfg->afu; + int rc = 0; + enum undo_level level; + + ctx = cxl_get_context(cfg->dev); + if (unlikely(!ctx)) + return -ENOMEM; + cfg->mcctx = ctx; + + /* Set it up as a master with the CXL */ + cxl_set_master(ctx); + + /* During initialization reset the AFU to start from a clean slate */ + rc = cxl_afu_reset(cfg->mcctx); + if (unlikely(rc)) { + dev_err(dev, "%s: initial AFU reset failed rc=%d\n", + __func__, rc); + level = RELEASE_CONTEXT; + goto out; + } + + rc = cxl_allocate_afu_irqs(ctx, 3); + if (unlikely(rc)) { + dev_err(dev, "%s: call to allocate_afu_irqs failed rc=%d!\n", + __func__, rc); + level = RELEASE_CONTEXT; + goto out; + } + + rc = cxl_map_afu_irq(ctx, 1, cxlflash_sync_err_irq, afu, + "SISL_MSI_SYNC_ERROR"); + if (unlikely(rc <= 0)) { + dev_err(dev, "%s: IRQ 1 (SISL_MSI_SYNC_ERROR) map failed!\n", + __func__); + level = FREE_IRQ; + goto out; + } + + rc = cxl_map_afu_irq(ctx, 2, cxlflash_rrq_irq, afu, + "SISL_MSI_RRQ_UPDATED"); + if (unlikely(rc <= 0)) { + dev_err(dev, "%s: IRQ 2 (SISL_MSI_RRQ_UPDATED) map failed!\n", + __func__); + level = UNMAP_ONE; + goto out; + } + + rc = cxl_map_afu_irq(ctx, 3, cxlflash_async_err_irq, afu, + "SISL_MSI_ASYNC_ERROR"); + if (unlikely(rc <= 0)) { + dev_err(dev, "%s: IRQ 3 (SISL_MSI_ASYNC_ERROR) map failed!\n", + __func__); + level = UNMAP_TWO; + goto out; + } + + rc = 0; + + /* This performs the equivalent of the CXL_IOCTL_START_WORK. + * The CXL_IOCTL_GET_PROCESS_ELEMENT is implicit in the process + * element (pe) that is embedded in the context (ctx) + */ + rc = start_context(cfg); + if (unlikely(rc)) { + dev_err(dev, "%s: start context failed rc=%d\n", __func__, rc); + level = UNMAP_THREE; + goto out; + } +ret: + pr_debug("%s: returning rc=%d\n", __func__, rc); + return rc; +out: + term_mc(cfg, level); + goto ret; +} + +/** + * init_afu() - setup as master context and start AFU + * @cfg: Internal structure associated with the host. + * + * This routine is a higher level of control for configuring the + * AFU on probe and reset paths. + * + * Return: 0 on success, -errno on failure + */ +static int init_afu(struct cxlflash_cfg *cfg) +{ + u64 reg; + int rc = 0; + struct afu *afu = cfg->afu; + struct device *dev = &cfg->dev->dev; + + cxl_perst_reloads_same_image(cfg->cxl_afu, true); + + rc = init_mc(cfg); + if (rc) { + dev_err(dev, "%s: call to init_mc failed, rc=%d!\n", + __func__, rc); + goto out; + } + + /* Map the entire MMIO space of the AFU */ + afu->afu_map = cxl_psa_map(cfg->mcctx); + if (!afu->afu_map) { + dev_err(dev, "%s: call to cxl_psa_map failed!\n", __func__); + rc = -ENOMEM; + goto err1; + } + + /* No byte reverse on reading afu_version or string will be backwards */ + reg = readq(&afu->afu_map->global.regs.afu_version); + memcpy(afu->version, ®, sizeof(reg)); + afu->interface_version = + readq_be(&afu->afu_map->global.regs.interface_version); + if ((afu->interface_version + 1) == 0) { + pr_err("Back level AFU, please upgrade. AFU version %s " + "interface version 0x%llx\n", afu->version, + afu->interface_version); + rc = -EINVAL; + goto err2; + } + + pr_debug("%s: afu version %s, interface version 0x%llX\n", __func__, + afu->version, afu->interface_version); + + rc = start_afu(cfg); + if (rc) { + dev_err(dev, "%s: call to start_afu failed, rc=%d!\n", + __func__, rc); + goto err2; + } + + afu_err_intr_init(cfg->afu); + atomic64_set(&afu->room, readq_be(&afu->host_map->cmd_room)); + + /* Restore the LUN mappings */ + cxlflash_restore_luntable(cfg); +out: + pr_debug("%s: returning rc=%d\n", __func__, rc); + return rc; + +err2: + cxl_psa_unmap((void __iomem *)afu->afu_map); + afu->afu_map = NULL; +err1: + term_mc(cfg, UNDO_START); + goto out; +} + +/** + * cxlflash_afu_sync() - builds and sends an AFU sync command + * @afu: AFU associated with the host. + * @ctx_hndl_u: Identifies context requesting sync. + * @res_hndl_u: Identifies resource requesting sync. + * @mode: Type of sync to issue (lightweight, heavyweight, global). + * + * The AFU can only take 1 sync command at a time. This routine enforces this + * limitation by using a mutex to provide exclusive access to the AFU during + * the sync. This design point requires calling threads to not be on interrupt + * context due to the possibility of sleeping during concurrent sync operations. + * + * AFU sync operations are only necessary and allowed when the device is + * operating normally. When not operating normally, sync requests can occur as + * part of cleaning up resources associated with an adapter prior to removal. + * In this scenario, these requests are simply ignored (safe due to the AFU + * going away). + * + * Return: + * 0 on success + * -1 on failure + */ +int cxlflash_afu_sync(struct afu *afu, ctx_hndl_t ctx_hndl_u, + res_hndl_t res_hndl_u, u8 mode) +{ + struct cxlflash_cfg *cfg = afu->parent; + struct device *dev = &cfg->dev->dev; + struct afu_cmd *cmd = NULL; + int rc = 0; + int retry_cnt = 0; + static DEFINE_MUTEX(sync_active); + + if (cfg->state != STATE_NORMAL) { + pr_debug("%s: Sync not required! (%u)\n", __func__, cfg->state); + return 0; + } + + mutex_lock(&sync_active); +retry: + cmd = cmd_checkout(afu); + if (unlikely(!cmd)) { + retry_cnt++; + udelay(1000 * retry_cnt); + if (retry_cnt < MC_RETRY_CNT) + goto retry; + dev_err(dev, "%s: could not get a free command\n", __func__); + rc = -1; + goto out; + } + + pr_debug("%s: afu=%p cmd=%p %d\n", __func__, afu, cmd, ctx_hndl_u); + + memset(cmd->rcb.cdb, 0, sizeof(cmd->rcb.cdb)); + + cmd->rcb.req_flags = SISL_REQ_FLAGS_AFU_CMD; + cmd->rcb.port_sel = 0x0; /* NA */ + cmd->rcb.lun_id = 0x0; /* NA */ + cmd->rcb.data_len = 0x0; + cmd->rcb.data_ea = 0x0; + cmd->rcb.timeout = MC_AFU_SYNC_TIMEOUT; + + cmd->rcb.cdb[0] = 0xC0; /* AFU Sync */ + cmd->rcb.cdb[1] = mode; + + /* The cdb is aligned, no unaligned accessors required */ + *((__be16 *)&cmd->rcb.cdb[2]) = cpu_to_be16(ctx_hndl_u); + *((__be32 *)&cmd->rcb.cdb[4]) = cpu_to_be32(res_hndl_u); + + rc = send_cmd(afu, cmd); + if (unlikely(rc)) + goto out; + + wait_resp(afu, cmd); + + /* Set on timeout */ + if (unlikely((cmd->sa.ioasc != 0) || + (cmd->sa.host_use_b[0] & B_ERROR))) + rc = -1; +out: + mutex_unlock(&sync_active); + if (cmd) + cmd_checkin(cmd); + pr_debug("%s: returning rc=%d\n", __func__, rc); + return rc; +} + +/** + * afu_reset() - resets the AFU + * @cfg: Internal structure associated with the host. + * + * Return: 0 on success, -errno on failure + */ +static int afu_reset(struct cxlflash_cfg *cfg) +{ + int rc = 0; + /* Stop the context before the reset. Since the context is + * no longer available restart it after the reset is complete + */ + + term_afu(cfg); + + rc = init_afu(cfg); + + pr_debug("%s: returning rc=%d\n", __func__, rc); + return rc; +} + +/** + * cxlflash_eh_device_reset_handler() - reset a single LUN + * @scp: SCSI command to send. + * + * Return: + * SUCCESS as defined in scsi/scsi.h + * FAILED as defined in scsi/scsi.h + */ +static int cxlflash_eh_device_reset_handler(struct scsi_cmnd *scp) +{ + int rc = SUCCESS; + struct Scsi_Host *host = scp->device->host; + struct cxlflash_cfg *cfg = (struct cxlflash_cfg *)host->hostdata; + struct afu *afu = cfg->afu; + int rcr = 0; + + pr_debug("%s: (scp=%p) %d/%d/%d/%llu " + "cdb=(%08X-%08X-%08X-%08X)\n", __func__, scp, + host->host_no, scp->device->channel, + scp->device->id, scp->device->lun, + get_unaligned_be32(&((u32 *)scp->cmnd)[0]), + get_unaligned_be32(&((u32 *)scp->cmnd)[1]), + get_unaligned_be32(&((u32 *)scp->cmnd)[2]), + get_unaligned_be32(&((u32 *)scp->cmnd)[3])); + +retry: + switch (cfg->state) { + case STATE_NORMAL: + rcr = send_tmf(afu, scp, TMF_LUN_RESET); + if (unlikely(rcr)) + rc = FAILED; + break; + case STATE_RESET: + wait_event(cfg->reset_waitq, cfg->state != STATE_RESET); + goto retry; + default: + rc = FAILED; + break; + } + + pr_debug("%s: returning rc=%d\n", __func__, rc); + return rc; +} + +/** + * cxlflash_eh_host_reset_handler() - reset the host adapter + * @scp: SCSI command from stack identifying host. + * + * Return: + * SUCCESS as defined in scsi/scsi.h + * FAILED as defined in scsi/scsi.h + */ +static int cxlflash_eh_host_reset_handler(struct scsi_cmnd *scp) +{ + int rc = SUCCESS; + int rcr = 0; + struct Scsi_Host *host = scp->device->host; + struct cxlflash_cfg *cfg = (struct cxlflash_cfg *)host->hostdata; + + pr_debug("%s: (scp=%p) %d/%d/%d/%llu " + "cdb=(%08X-%08X-%08X-%08X)\n", __func__, scp, + host->host_no, scp->device->channel, + scp->device->id, scp->device->lun, + get_unaligned_be32(&((u32 *)scp->cmnd)[0]), + get_unaligned_be32(&((u32 *)scp->cmnd)[1]), + get_unaligned_be32(&((u32 *)scp->cmnd)[2]), + get_unaligned_be32(&((u32 *)scp->cmnd)[3])); + + switch (cfg->state) { + case STATE_NORMAL: + cfg->state = STATE_RESET; + cxlflash_mark_contexts_error(cfg); + rcr = afu_reset(cfg); + if (rcr) { + rc = FAILED; + cfg->state = STATE_FAILTERM; + } else + cfg->state = STATE_NORMAL; + wake_up_all(&cfg->reset_waitq); + break; + case STATE_RESET: + wait_event(cfg->reset_waitq, cfg->state != STATE_RESET); + if (cfg->state == STATE_NORMAL) + break; + /* fall through */ + default: + rc = FAILED; + break; + } + + pr_debug("%s: returning rc=%d\n", __func__, rc); + return rc; +} + +/** + * cxlflash_change_queue_depth() - change the queue depth for the device + * @sdev: SCSI device destined for queue depth change. + * @qdepth: Requested queue depth value to set. + * + * The requested queue depth is capped to the maximum supported value. + * + * Return: The actual queue depth set. + */ +static int cxlflash_change_queue_depth(struct scsi_device *sdev, int qdepth) +{ + + if (qdepth > CXLFLASH_MAX_CMDS_PER_LUN) + qdepth = CXLFLASH_MAX_CMDS_PER_LUN; + + scsi_change_queue_depth(sdev, qdepth); + return sdev->queue_depth; +} + +/** + * cxlflash_show_port_status() - queries and presents the current port status + * @port: Desired port for status reporting. + * @afu: AFU owning the specified port. + * @buf: Buffer of length PAGE_SIZE to report back port status in ASCII. + * + * Return: The size of the ASCII string returned in @buf. + */ +static ssize_t cxlflash_show_port_status(u32 port, struct afu *afu, char *buf) +{ + char *disp_status; + u64 status; + __be64 __iomem *fc_regs; + + if (port >= NUM_FC_PORTS) + return 0; + + fc_regs = &afu->afu_map->global.fc_regs[port][0]; + status = readq_be(&fc_regs[FC_MTIP_STATUS / 8]); + status &= FC_MTIP_STATUS_MASK; + + if (status == FC_MTIP_STATUS_ONLINE) + disp_status = "online"; + else if (status == FC_MTIP_STATUS_OFFLINE) + disp_status = "offline"; + else + disp_status = "unknown"; + + return scnprintf(buf, PAGE_SIZE, "%s\n", disp_status); +} + +/** + * port0_show() - queries and presents the current status of port 0 + * @dev: Generic device associated with the host owning the port. + * @attr: Device attribute representing the port. + * @buf: Buffer of length PAGE_SIZE to report back port status in ASCII. + * + * Return: The size of the ASCII string returned in @buf. + */ +static ssize_t port0_show(struct device *dev, + struct device_attribute *attr, + char *buf) +{ + struct Scsi_Host *shost = class_to_shost(dev); + struct cxlflash_cfg *cfg = (struct cxlflash_cfg *)shost->hostdata; + struct afu *afu = cfg->afu; + + return cxlflash_show_port_status(0, afu, buf); +} + +/** + * port1_show() - queries and presents the current status of port 1 + * @dev: Generic device associated with the host owning the port. + * @attr: Device attribute representing the port. + * @buf: Buffer of length PAGE_SIZE to report back port status in ASCII. + * + * Return: The size of the ASCII string returned in @buf. + */ +static ssize_t port1_show(struct device *dev, + struct device_attribute *attr, + char *buf) +{ + struct Scsi_Host *shost = class_to_shost(dev); + struct cxlflash_cfg *cfg = (struct cxlflash_cfg *)shost->hostdata; + struct afu *afu = cfg->afu; + + return cxlflash_show_port_status(1, afu, buf); +} + +/** + * lun_mode_show() - presents the current LUN mode of the host + * @dev: Generic device associated with the host. + * @attr: Device attribute representing the LUN mode. + * @buf: Buffer of length PAGE_SIZE to report back the LUN mode in ASCII. + * + * Return: The size of the ASCII string returned in @buf. + */ +static ssize_t lun_mode_show(struct device *dev, + struct device_attribute *attr, char *buf) +{ + struct Scsi_Host *shost = class_to_shost(dev); + struct cxlflash_cfg *cfg = (struct cxlflash_cfg *)shost->hostdata; + struct afu *afu = cfg->afu; + + return scnprintf(buf, PAGE_SIZE, "%u\n", afu->internal_lun); +} + +/** + * lun_mode_store() - sets the LUN mode of the host + * @dev: Generic device associated with the host. + * @attr: Device attribute representing the LUN mode. + * @buf: Buffer of length PAGE_SIZE containing the LUN mode in ASCII. + * @count: Length of data resizing in @buf. + * + * The CXL Flash AFU supports a dummy LUN mode where the external + * links and storage are not required. Space on the FPGA is used + * to create 1 or 2 small LUNs which are presented to the system + * as if they were a normal storage device. This feature is useful + * during development and also provides manufacturing with a way + * to test the AFU without an actual device. + * + * 0 = external LUN[s] (default) + * 1 = internal LUN (1 x 64K, 512B blocks, id 0) + * 2 = internal LUN (1 x 64K, 4K blocks, id 0) + * 3 = internal LUN (2 x 32K, 512B blocks, ids 0,1) + * 4 = internal LUN (2 x 32K, 4K blocks, ids 0,1) + * + * Return: The size of the ASCII string returned in @buf. + */ +static ssize_t lun_mode_store(struct device *dev, + struct device_attribute *attr, + const char *buf, size_t count) +{ + struct Scsi_Host *shost = class_to_shost(dev); + struct cxlflash_cfg *cfg = (struct cxlflash_cfg *)shost->hostdata; + struct afu *afu = cfg->afu; + int rc; + u32 lun_mode; + + rc = kstrtouint(buf, 10, &lun_mode); + if (!rc && (lun_mode < 5) && (lun_mode != afu->internal_lun)) { + afu->internal_lun = lun_mode; + afu_reset(cfg); + scsi_scan_host(cfg->host); + } + + return count; +} + +/** + * ioctl_version_show() - presents the current ioctl version of the host + * @dev: Generic device associated with the host. + * @attr: Device attribute representing the ioctl version. + * @buf: Buffer of length PAGE_SIZE to report back the ioctl version. + * + * Return: The size of the ASCII string returned in @buf. + */ +static ssize_t ioctl_version_show(struct device *dev, + struct device_attribute *attr, char *buf) +{ + return scnprintf(buf, PAGE_SIZE, "%u\n", DK_CXLFLASH_VERSION_0); +} + +/** + * cxlflash_show_port_lun_table() - queries and presents the port LUN table + * @port: Desired port for status reporting. + * @afu: AFU owning the specified port. + * @buf: Buffer of length PAGE_SIZE to report back port status in ASCII. + * + * Return: The size of the ASCII string returned in @buf. + */ +static ssize_t cxlflash_show_port_lun_table(u32 port, + struct afu *afu, + char *buf) +{ + int i; + ssize_t bytes = 0; + __be64 __iomem *fc_port; + + if (port >= NUM_FC_PORTS) + return 0; + + fc_port = &afu->afu_map->global.fc_port[port][0]; + + for (i = 0; i < CXLFLASH_NUM_VLUNS; i++) + bytes += scnprintf(buf + bytes, PAGE_SIZE - bytes, + "%03d: %016llX\n", i, readq_be(&fc_port[i])); + return bytes; +} + +/** + * port0_lun_table_show() - presents the current LUN table of port 0 + * @dev: Generic device associated with the host owning the port. + * @attr: Device attribute representing the port. + * @buf: Buffer of length PAGE_SIZE to report back port status in ASCII. + * + * Return: The size of the ASCII string returned in @buf. + */ +static ssize_t port0_lun_table_show(struct device *dev, + struct device_attribute *attr, + char *buf) +{ + struct Scsi_Host *shost = class_to_shost(dev); + struct cxlflash_cfg *cfg = (struct cxlflash_cfg *)shost->hostdata; + struct afu *afu = cfg->afu; + + return cxlflash_show_port_lun_table(0, afu, buf); +} + +/** + * port1_lun_table_show() - presents the current LUN table of port 1 + * @dev: Generic device associated with the host owning the port. + * @attr: Device attribute representing the port. + * @buf: Buffer of length PAGE_SIZE to report back port status in ASCII. + * + * Return: The size of the ASCII string returned in @buf. + */ +static ssize_t port1_lun_table_show(struct device *dev, + struct device_attribute *attr, + char *buf) +{ + struct Scsi_Host *shost = class_to_shost(dev); + struct cxlflash_cfg *cfg = (struct cxlflash_cfg *)shost->hostdata; + struct afu *afu = cfg->afu; + + return cxlflash_show_port_lun_table(1, afu, buf); +} + +/** + * mode_show() - presents the current mode of the device + * @dev: Generic device associated with the device. + * @attr: Device attribute representing the device mode. + * @buf: Buffer of length PAGE_SIZE to report back the dev mode in ASCII. + * + * Return: The size of the ASCII string returned in @buf. + */ +static ssize_t mode_show(struct device *dev, + struct device_attribute *attr, char *buf) +{ + struct scsi_device *sdev = to_scsi_device(dev); + + return scnprintf(buf, PAGE_SIZE, "%s\n", + sdev->hostdata ? "superpipe" : "legacy"); +} + +/* + * Host attributes + */ +static DEVICE_ATTR_RO(port0); +static DEVICE_ATTR_RO(port1); +static DEVICE_ATTR_RW(lun_mode); +static DEVICE_ATTR_RO(ioctl_version); +static DEVICE_ATTR_RO(port0_lun_table); +static DEVICE_ATTR_RO(port1_lun_table); + +static struct device_attribute *cxlflash_host_attrs[] = { + &dev_attr_port0, + &dev_attr_port1, + &dev_attr_lun_mode, + &dev_attr_ioctl_version, + &dev_attr_port0_lun_table, + &dev_attr_port1_lun_table, + NULL +}; + +/* + * Device attributes + */ +static DEVICE_ATTR_RO(mode); + +static struct device_attribute *cxlflash_dev_attrs[] = { + &dev_attr_mode, + NULL +}; + +/* + * Host template + */ +static struct scsi_host_template driver_template = { + .module = THIS_MODULE, + .name = CXLFLASH_ADAPTER_NAME, + .info = cxlflash_driver_info, + .ioctl = cxlflash_ioctl, + .proc_name = CXLFLASH_NAME, + .queuecommand = cxlflash_queuecommand, + .eh_device_reset_handler = cxlflash_eh_device_reset_handler, + .eh_host_reset_handler = cxlflash_eh_host_reset_handler, + .change_queue_depth = cxlflash_change_queue_depth, + .cmd_per_lun = 16, + .can_queue = CXLFLASH_MAX_CMDS, + .this_id = -1, + .sg_tablesize = SG_NONE, /* No scatter gather support */ + .max_sectors = CXLFLASH_MAX_SECTORS, + .use_clustering = ENABLE_CLUSTERING, + .shost_attrs = cxlflash_host_attrs, + .sdev_attrs = cxlflash_dev_attrs, +}; + +/* + * Device dependent values + */ +static struct dev_dependent_vals dev_corsa_vals = { CXLFLASH_MAX_SECTORS }; + +/* + * PCI device binding table + */ +static struct pci_device_id cxlflash_pci_table[] = { + {PCI_VENDOR_ID_IBM, PCI_DEVICE_ID_IBM_CORSA, + PCI_ANY_ID, PCI_ANY_ID, 0, 0, (kernel_ulong_t)&dev_corsa_vals}, + {} +}; + +MODULE_DEVICE_TABLE(pci, cxlflash_pci_table); + +/** + * cxlflash_worker_thread() - work thread handler for the AFU + * @work: Work structure contained within cxlflash associated with host. + * + * Handles the following events: + * - Link reset which cannot be performed on interrupt context due to + * blocking up to a few seconds + * - Read AFU command room + * - Rescan the host + */ +static void cxlflash_worker_thread(struct work_struct *work) +{ + struct cxlflash_cfg *cfg = container_of(work, struct cxlflash_cfg, + work_q); + struct afu *afu = cfg->afu; + struct device *dev = &cfg->dev->dev; + int port; + ulong lock_flags; + + /* Avoid MMIO if the device has failed */ + + if (cfg->state != STATE_NORMAL) + return; + + spin_lock_irqsave(cfg->host->host_lock, lock_flags); + + if (cfg->lr_state == LINK_RESET_REQUIRED) { + port = cfg->lr_port; + if (port < 0) + dev_err(dev, "%s: invalid port index %d\n", + __func__, port); + else { + spin_unlock_irqrestore(cfg->host->host_lock, + lock_flags); + + /* The reset can block... */ + afu_link_reset(afu, port, + &afu->afu_map->global.fc_regs[port][0]); + spin_lock_irqsave(cfg->host->host_lock, lock_flags); + } + + cfg->lr_state = LINK_RESET_COMPLETE; + } + + if (afu->read_room) { + atomic64_set(&afu->room, readq_be(&afu->host_map->cmd_room)); + afu->read_room = false; + } + + spin_unlock_irqrestore(cfg->host->host_lock, lock_flags); + + if (atomic_dec_if_positive(&cfg->scan_host_needed) >= 0) + scsi_scan_host(cfg->host); +} + +/** + * cxlflash_probe() - PCI entry point to add host + * @pdev: PCI device associated with the host. + * @dev_id: PCI device id associated with device. + * + * Return: 0 on success, -errno on failure + */ +static int cxlflash_probe(struct pci_dev *pdev, + const struct pci_device_id *dev_id) +{ + struct Scsi_Host *host; + struct cxlflash_cfg *cfg = NULL; + struct device *phys_dev; + struct dev_dependent_vals *ddv; + int rc = 0; + + dev_dbg(&pdev->dev, "%s: Found CXLFLASH with IRQ: %d\n", + __func__, pdev->irq); + + ddv = (struct dev_dependent_vals *)dev_id->driver_data; + driver_template.max_sectors = ddv->max_sectors; + + host = scsi_host_alloc(&driver_template, sizeof(struct cxlflash_cfg)); + if (!host) { + dev_err(&pdev->dev, "%s: call to scsi_host_alloc failed!\n", + __func__); + rc = -ENOMEM; + goto out; + } + + host->max_id = CXLFLASH_MAX_NUM_TARGETS_PER_BUS; + host->max_lun = CXLFLASH_MAX_NUM_LUNS_PER_TARGET; + host->max_channel = NUM_FC_PORTS - 1; + host->unique_id = host->host_no; + host->max_cmd_len = CXLFLASH_MAX_CDB_LEN; + + cfg = (struct cxlflash_cfg *)host->hostdata; + cfg->host = host; + rc = alloc_mem(cfg); + if (rc) { + dev_err(&pdev->dev, "%s: call to alloc_mem failed!\n", + __func__); + rc = -ENOMEM; + scsi_host_put(cfg->host); + goto out; + } + + cfg->init_state = INIT_STATE_NONE; + cfg->dev = pdev; + cfg->cxl_fops = cxlflash_cxl_fops; + + /* + * The promoted LUNs move to the top of the LUN table. The rest stay + * on the bottom half. The bottom half grows from the end + * (index = 255), whereas the top half grows from the beginning + * (index = 0). + */ + cfg->promote_lun_index = 0; + cfg->last_lun_index[0] = CXLFLASH_NUM_VLUNS/2 - 1; + cfg->last_lun_index[1] = CXLFLASH_NUM_VLUNS/2 - 1; + + cfg->dev_id = (struct pci_device_id *)dev_id; + + init_waitqueue_head(&cfg->tmf_waitq); + init_waitqueue_head(&cfg->reset_waitq); + + INIT_WORK(&cfg->work_q, cxlflash_worker_thread); + cfg->lr_state = LINK_RESET_INVALID; + cfg->lr_port = -1; + spin_lock_init(&cfg->tmf_slock); + mutex_init(&cfg->ctx_tbl_list_mutex); + mutex_init(&cfg->ctx_recovery_mutex); + init_rwsem(&cfg->ioctl_rwsem); + INIT_LIST_HEAD(&cfg->ctx_err_recovery); + INIT_LIST_HEAD(&cfg->lluns); + + pci_set_drvdata(pdev, cfg); + + /* + * Use the special service provided to look up the physical + * PCI device, since we are called on the probe of the virtual + * PCI host bus (vphb) + */ + phys_dev = cxl_get_phys_dev(pdev); + if (!dev_is_pci(phys_dev)) { + dev_err(&pdev->dev, "%s: not a pci dev\n", __func__); + rc = -ENODEV; + goto out_remove; + } + cfg->parent_dev = to_pci_dev(phys_dev); + + cfg->cxl_afu = cxl_pci_to_afu(pdev); + + rc = init_pci(cfg); + if (rc) { + dev_err(&pdev->dev, "%s: call to init_pci " + "failed rc=%d!\n", __func__, rc); + goto out_remove; + } + cfg->init_state = INIT_STATE_PCI; + + rc = init_afu(cfg); + if (rc) { + dev_err(&pdev->dev, "%s: call to init_afu " + "failed rc=%d!\n", __func__, rc); + goto out_remove; + } + cfg->init_state = INIT_STATE_AFU; + + rc = init_scsi(cfg); + if (rc) { + dev_err(&pdev->dev, "%s: call to init_scsi " + "failed rc=%d!\n", __func__, rc); + goto out_remove; + } + cfg->init_state = INIT_STATE_SCSI; + +out: + pr_debug("%s: returning rc=%d\n", __func__, rc); + return rc; + +out_remove: + cxlflash_remove(pdev); + goto out; +} + +/** + * drain_ioctls() - wait until all currently executing ioctls have completed + * @cfg: Internal structure associated with the host. + * + * Obtain write access to read/write semaphore that wraps ioctl + * handling to 'drain' ioctls currently executing. + */ +static void drain_ioctls(struct cxlflash_cfg *cfg) +{ + down_write(&cfg->ioctl_rwsem); + up_write(&cfg->ioctl_rwsem); +} + +/** + * cxlflash_pci_error_detected() - called when a PCI error is detected + * @pdev: PCI device struct. + * @state: PCI channel state. + * + * Return: PCI_ERS_RESULT_NEED_RESET or PCI_ERS_RESULT_DISCONNECT + */ +static pci_ers_result_t cxlflash_pci_error_detected(struct pci_dev *pdev, + pci_channel_state_t state) +{ + int rc = 0; + struct cxlflash_cfg *cfg = pci_get_drvdata(pdev); + struct device *dev = &cfg->dev->dev; + + dev_dbg(dev, "%s: pdev=%p state=%u\n", __func__, pdev, state); + + switch (state) { + case pci_channel_io_frozen: + cfg->state = STATE_RESET; + scsi_block_requests(cfg->host); + drain_ioctls(cfg); + rc = cxlflash_mark_contexts_error(cfg); + if (unlikely(rc)) + dev_err(dev, "%s: Failed to mark user contexts!(%d)\n", + __func__, rc); + term_mc(cfg, UNDO_START); + stop_afu(cfg); + return PCI_ERS_RESULT_NEED_RESET; + case pci_channel_io_perm_failure: + cfg->state = STATE_FAILTERM; + wake_up_all(&cfg->reset_waitq); + scsi_unblock_requests(cfg->host); + return PCI_ERS_RESULT_DISCONNECT; + default: + break; + } + return PCI_ERS_RESULT_NEED_RESET; +} + +/** + * cxlflash_pci_slot_reset() - called when PCI slot has been reset + * @pdev: PCI device struct. + * + * This routine is called by the pci error recovery code after the PCI + * slot has been reset, just before we should resume normal operations. + * + * Return: PCI_ERS_RESULT_RECOVERED or PCI_ERS_RESULT_DISCONNECT + */ +static pci_ers_result_t cxlflash_pci_slot_reset(struct pci_dev *pdev) +{ + int rc = 0; + struct cxlflash_cfg *cfg = pci_get_drvdata(pdev); + struct device *dev = &cfg->dev->dev; + + dev_dbg(dev, "%s: pdev=%p\n", __func__, pdev); + + rc = init_afu(cfg); + if (unlikely(rc)) { + dev_err(dev, "%s: EEH recovery failed! (%d)\n", __func__, rc); + return PCI_ERS_RESULT_DISCONNECT; + } + + return PCI_ERS_RESULT_RECOVERED; +} + +/** + * cxlflash_pci_resume() - called when normal operation can resume + * @pdev: PCI device struct + */ +static void cxlflash_pci_resume(struct pci_dev *pdev) +{ + struct cxlflash_cfg *cfg = pci_get_drvdata(pdev); + struct device *dev = &cfg->dev->dev; + + dev_dbg(dev, "%s: pdev=%p\n", __func__, pdev); + + cfg->state = STATE_NORMAL; + wake_up_all(&cfg->reset_waitq); + scsi_unblock_requests(cfg->host); +} + +static const struct pci_error_handlers cxlflash_err_handler = { + .error_detected = cxlflash_pci_error_detected, + .slot_reset = cxlflash_pci_slot_reset, + .resume = cxlflash_pci_resume, +}; + +/* + * PCI device structure + */ +static struct pci_driver cxlflash_driver = { + .name = CXLFLASH_NAME, + .id_table = cxlflash_pci_table, + .probe = cxlflash_probe, + .remove = cxlflash_remove, + .err_handler = &cxlflash_err_handler, +}; + +/** + * init_cxlflash() - module entry point + * + * Return: 0 on success, -errno on failure + */ +static int __init init_cxlflash(void) +{ + pr_info("%s: IBM Power CXL Flash Adapter: %s\n", + __func__, CXLFLASH_DRIVER_DATE); + + cxlflash_list_init(); + + return pci_register_driver(&cxlflash_driver); +} + +/** + * exit_cxlflash() - module exit point + */ +static void __exit exit_cxlflash(void) +{ + cxlflash_term_global_luns(); + cxlflash_free_errpage(); + + pci_unregister_driver(&cxlflash_driver); +} + +module_init(init_cxlflash); +module_exit(exit_cxlflash); --- linux-raspi2-4.2.0.orig/drivers/scsi/cxlflash/main.h +++ linux-raspi2-4.2.0/drivers/scsi/cxlflash/main.h @@ -0,0 +1,109 @@ +/* + * CXL Flash Device Driver + * + * Written by: Manoj N. Kumar , IBM Corporation + * Matthew R. Ochs , IBM Corporation + * + * Copyright (C) 2015 IBM Corporation + * + * 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. + */ + +#ifndef _CXLFLASH_MAIN_H +#define _CXLFLASH_MAIN_H + +#include +#include +#include +#include + +#define CXLFLASH_NAME "cxlflash" +#define CXLFLASH_ADAPTER_NAME "IBM POWER CXL Flash Adapter" +#define CXLFLASH_DRIVER_DATE "(August 13, 2015)" + +#define PCI_DEVICE_ID_IBM_CORSA 0x04F0 +#define CXLFLASH_SUBS_DEV_ID 0x04F0 + +/* Since there is only one target, make it 0 */ +#define CXLFLASH_TARGET 0 +#define CXLFLASH_MAX_CDB_LEN 16 + +/* Really only one target per bus since the Texan is directly attached */ +#define CXLFLASH_MAX_NUM_TARGETS_PER_BUS 1 +#define CXLFLASH_MAX_NUM_LUNS_PER_TARGET 65536 + +#define CXLFLASH_PCI_ERROR_RECOVERY_TIMEOUT (120 * HZ) + +#define NUM_FC_PORTS CXLFLASH_NUM_FC_PORTS /* ports per AFU */ + +/* FC defines */ +#define FC_MTIP_CMDCONFIG 0x010 +#define FC_MTIP_STATUS 0x018 + +#define FC_PNAME 0x300 +#define FC_CONFIG 0x320 +#define FC_CONFIG2 0x328 +#define FC_STATUS 0x330 +#define FC_ERROR 0x380 +#define FC_ERRCAP 0x388 +#define FC_ERRMSK 0x390 +#define FC_CNT_CRCERR 0x538 +#define FC_CRC_THRESH 0x580 + +#define FC_MTIP_CMDCONFIG_ONLINE 0x20ULL +#define FC_MTIP_CMDCONFIG_OFFLINE 0x40ULL + +#define FC_MTIP_STATUS_MASK 0x30ULL +#define FC_MTIP_STATUS_ONLINE 0x20ULL +#define FC_MTIP_STATUS_OFFLINE 0x10ULL + +/* TIMEOUT and RETRY definitions */ + +/* AFU command timeout values */ +#define MC_AFU_SYNC_TIMEOUT 5 /* 5 secs */ + +/* AFU command room retry limit */ +#define MC_ROOM_RETRY_CNT 10 + +/* FC CRC clear periodic timer */ +#define MC_CRC_THRESH 100 /* threshold in 5 mins */ + +#define FC_PORT_STATUS_RETRY_CNT 100 /* 100 100ms retries = 10 seconds */ +#define FC_PORT_STATUS_RETRY_INTERVAL_US 100000 /* microseconds */ + +/* VPD defines */ +#define CXLFLASH_VPD_LEN 256 +#define WWPN_LEN 16 +#define WWPN_BUF_LEN (WWPN_LEN + 1) + +enum undo_level { + RELEASE_CONTEXT = 0, + FREE_IRQ, + UNMAP_ONE, + UNMAP_TWO, + UNMAP_THREE, + UNDO_START +}; + +struct dev_dependent_vals { + u64 max_sectors; +}; + +struct asyc_intr_info { + u64 status; + char *desc; + u8 port; + u8 action; +#define CLR_FC_ERROR 0x01 +#define LINK_RESET 0x02 +#define SCAN_HOST 0x04 +}; + +#ifndef CONFIG_CXL_EEH +#define cxl_perst_reloads_same_image(_a, _b) do { } while (0) +#endif + +#endif /* _CXLFLASH_MAIN_H */ --- linux-raspi2-4.2.0.orig/drivers/scsi/cxlflash/sislite.h +++ linux-raspi2-4.2.0/drivers/scsi/cxlflash/sislite.h @@ -0,0 +1,472 @@ +/* + * CXL Flash Device Driver + * + * Written by: Manoj N. Kumar , IBM Corporation + * Matthew R. Ochs , IBM Corporation + * + * Copyright (C) 2015 IBM Corporation + * + * 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. + */ + +#ifndef _SISLITE_H +#define _SISLITE_H + +#include + +typedef u16 ctx_hndl_t; +typedef u32 res_hndl_t; + +#define SIZE_4K 4096 +#define SIZE_64K 65536 + +/* + * IOARCB: 64 bytes, min 16 byte alignment required, host native endianness + * except for SCSI CDB which remains big endian per SCSI standards. + */ +struct sisl_ioarcb { + u16 ctx_id; /* ctx_hndl_t */ + u16 req_flags; +#define SISL_REQ_FLAGS_RES_HNDL 0x8000U /* bit 0 (MSB) */ +#define SISL_REQ_FLAGS_PORT_LUN_ID 0x0000U + +#define SISL_REQ_FLAGS_SUP_UNDERRUN 0x4000U /* bit 1 */ + +#define SISL_REQ_FLAGS_TIMEOUT_SECS 0x0000U /* bits 8,9 */ +#define SISL_REQ_FLAGS_TIMEOUT_MSECS 0x0040U +#define SISL_REQ_FLAGS_TIMEOUT_USECS 0x0080U +#define SISL_REQ_FLAGS_TIMEOUT_CYCLES 0x00C0U + +#define SISL_REQ_FLAGS_TMF_CMD 0x0004u /* bit 13 */ + +#define SISL_REQ_FLAGS_AFU_CMD 0x0002U /* bit 14 */ + +#define SISL_REQ_FLAGS_HOST_WRITE 0x0001U /* bit 15 (LSB) */ +#define SISL_REQ_FLAGS_HOST_READ 0x0000U + + union { + u32 res_hndl; /* res_hndl_t */ + u32 port_sel; /* this is a selection mask: + * 0x1 -> port#0 can be selected, + * 0x2 -> port#1 can be selected. + * Can be bitwise ORed. + */ + }; + u64 lun_id; + u32 data_len; /* 4K for read/write */ + u32 ioadl_len; + union { + u64 data_ea; /* min 16 byte aligned */ + u64 ioadl_ea; + }; + u8 msi; /* LISN to send on RRQ write */ +#define SISL_MSI_CXL_PFAULT 0 /* reserved for CXL page faults */ +#define SISL_MSI_SYNC_ERROR 1 /* recommended for AFU sync error */ +#define SISL_MSI_RRQ_UPDATED 2 /* recommended for IO completion */ +#define SISL_MSI_ASYNC_ERROR 3 /* master only - for AFU async error */ + + u8 rrq; /* 0 for a single RRQ */ + u16 timeout; /* in units specified by req_flags */ + u32 rsvd1; + u8 cdb[16]; /* must be in big endian */ + struct scsi_cmnd *scp; +} __packed; + +struct sisl_rc { + u8 flags; +#define SISL_RC_FLAGS_SENSE_VALID 0x80U +#define SISL_RC_FLAGS_FCP_RSP_CODE_VALID 0x40U +#define SISL_RC_FLAGS_OVERRUN 0x20U +#define SISL_RC_FLAGS_UNDERRUN 0x10U + + u8 afu_rc; +#define SISL_AFU_RC_RHT_INVALID 0x01U /* user error */ +#define SISL_AFU_RC_RHT_UNALIGNED 0x02U /* should never happen */ +#define SISL_AFU_RC_RHT_OUT_OF_BOUNDS 0x03u /* user error */ +#define SISL_AFU_RC_RHT_DMA_ERR 0x04u /* see afu_extra + may retry if afu_retry is off + possible on master exit + */ +#define SISL_AFU_RC_RHT_RW_PERM 0x05u /* no RW perms, user error */ +#define SISL_AFU_RC_LXT_UNALIGNED 0x12U /* should never happen */ +#define SISL_AFU_RC_LXT_OUT_OF_BOUNDS 0x13u /* user error */ +#define SISL_AFU_RC_LXT_DMA_ERR 0x14u /* see afu_extra + may retry if afu_retry is off + possible on master exit + */ +#define SISL_AFU_RC_LXT_RW_PERM 0x15u /* no RW perms, user error */ + +#define SISL_AFU_RC_NOT_XLATE_HOST 0x1au /* possible if master exited */ + + /* NO_CHANNELS means the FC ports selected by dest_port in + * IOARCB or in the LXT entry are down when the AFU tried to select + * a FC port. If the port went down on an active IO, it will set + * fc_rc to =0x54(NOLOGI) or 0x57(LINKDOWN) instead. + */ +#define SISL_AFU_RC_NO_CHANNELS 0x20U /* see afu_extra, may retry */ +#define SISL_AFU_RC_CAP_VIOLATION 0x21U /* either user error or + afu reset/master restart + */ +#define SISL_AFU_RC_OUT_OF_DATA_BUFS 0x30U /* always retry */ +#define SISL_AFU_RC_DATA_DMA_ERR 0x31U /* see afu_extra + may retry if afu_retry is off + */ + + u8 scsi_rc; /* SCSI status byte, retry as appropriate */ +#define SISL_SCSI_RC_CHECK 0x02U +#define SISL_SCSI_RC_BUSY 0x08u + + u8 fc_rc; /* retry */ + /* + * We should only see fc_rc=0x57 (LINKDOWN) or 0x54(NOLOGI) for + * commands that are in flight when a link goes down or is logged out. + * If the link is down or logged out before AFU selects the port, either + * it will choose the other port or we will get afu_rc=0x20 (no_channel) + * if there is no valid port to use. + * + * ABORTPEND/ABORTOK/ABORTFAIL/TGTABORT can be retried, typically these + * would happen if a frame is dropped and something times out. + * NOLOGI or LINKDOWN can be retried if the other port is up. + * RESIDERR can be retried as well. + * + * ABORTFAIL might indicate that lots of frames are getting CRC errors. + * So it maybe retried once and reset the link if it happens again. + * The link can also be reset on the CRC error threshold interrupt. + */ +#define SISL_FC_RC_ABORTPEND 0x52 /* exchange timeout or abort request */ +#define SISL_FC_RC_WRABORTPEND 0x53 /* due to write XFER_RDY invalid */ +#define SISL_FC_RC_NOLOGI 0x54 /* port not logged in, in-flight cmds */ +#define SISL_FC_RC_NOEXP 0x55 /* FC protocol error or HW bug */ +#define SISL_FC_RC_INUSE 0x56 /* tag already in use, HW bug */ +#define SISL_FC_RC_LINKDOWN 0x57 /* link down, in-flight cmds */ +#define SISL_FC_RC_ABORTOK 0x58 /* pending abort completed w/success */ +#define SISL_FC_RC_ABORTFAIL 0x59 /* pending abort completed w/fail */ +#define SISL_FC_RC_RESID 0x5A /* ioasa underrun/overrun flags set */ +#define SISL_FC_RC_RESIDERR 0x5B /* actual data len does not match SCSI + reported len, possibly due to dropped + frames */ +#define SISL_FC_RC_TGTABORT 0x5C /* command aborted by target */ +}; + +#define SISL_SENSE_DATA_LEN 20 /* Sense data length */ + +/* + * IOASA: 64 bytes & must follow IOARCB, min 16 byte alignment required, + * host native endianness + */ +struct sisl_ioasa { + union { + struct sisl_rc rc; + u32 ioasc; +#define SISL_IOASC_GOOD_COMPLETION 0x00000000U + }; + u32 resid; + u8 port; + u8 afu_extra; + /* when afu_rc=0x04, 0x14, 0x31 (_xxx_DMA_ERR): + * afu_exta contains PSL response code. Useful codes are: + */ +#define SISL_AFU_DMA_ERR_PAGE_IN 0x0A /* AFU_retry_on_pagein Action + * Enabled N/A + * Disabled retry + */ +#define SISL_AFU_DMA_ERR_INVALID_EA 0x0B /* this is a hard error + * afu_rc Implies + * 0x04, 0x14 master exit. + * 0x31 user error. + */ + /* when afu rc=0x20 (no channels): + * afu_extra bits [4:5]: available portmask, [6:7]: requested portmask. + */ +#define SISL_AFU_NO_CLANNELS_AMASK(afu_extra) (((afu_extra) & 0x0C) >> 2) +#define SISL_AFU_NO_CLANNELS_RMASK(afu_extra) ((afu_extra) & 0x03) + + u8 scsi_extra; + u8 fc_extra; + u8 sense_data[SISL_SENSE_DATA_LEN]; + + /* These fields are defined by the SISlite architecture for the + * host to use as they see fit for their implementation. + */ + union { + u64 host_use[4]; + u8 host_use_b[32]; + }; +} __packed; + +#define SISL_RESP_HANDLE_T_BIT 0x1ULL /* Toggle bit */ + +/* MMIO space is required to support only 64-bit access */ + +/* + * This AFU has two mechanisms to deal with endian-ness. + * One is a global configuration (in the afu_config) register + * below that specifies the endian-ness of the host. + * The other is a per context (i.e. application) specification + * controlled by the endian_ctrl field here. Since the master + * context is one such application the master context's + * endian-ness is set to be the same as the host. + * + * As per the SISlite spec, the MMIO registers are always + * big endian. + */ +#define SISL_ENDIAN_CTRL_BE 0x8000000000000080ULL +#define SISL_ENDIAN_CTRL_LE 0x0000000000000000ULL + +#ifdef __BIG_ENDIAN +#define SISL_ENDIAN_CTRL SISL_ENDIAN_CTRL_BE +#else +#define SISL_ENDIAN_CTRL SISL_ENDIAN_CTRL_LE +#endif + +/* per context host transport MMIO */ +struct sisl_host_map { + __be64 endian_ctrl; /* Per context Endian Control. The AFU will + * operate on whatever the context is of the + * host application. + */ + + __be64 intr_status; /* this sends LISN# programmed in ctx_ctrl. + * Only recovery in a PERM_ERR is a context + * exit since there is no way to tell which + * command caused the error. + */ +#define SISL_ISTATUS_PERM_ERR_CMDROOM 0x0010ULL /* b59, user error */ +#define SISL_ISTATUS_PERM_ERR_RCB_READ 0x0008ULL /* b60, user error */ +#define SISL_ISTATUS_PERM_ERR_SA_WRITE 0x0004ULL /* b61, user error */ +#define SISL_ISTATUS_PERM_ERR_RRQ_WRITE 0x0002ULL /* b62, user error */ + /* Page in wait accessing RCB/IOASA/RRQ is reported in b63. + * Same error in data/LXT/RHT access is reported via IOASA. + */ +#define SISL_ISTATUS_TEMP_ERR_PAGEIN 0x0001ULL /* b63, can be generated + * only when AFU auto + * retry is disabled. + * If user can determine + * the command that + * caused the error, it + * can be retried. + */ +#define SISL_ISTATUS_UNMASK (0x001FULL) /* 1 means unmasked */ +#define SISL_ISTATUS_MASK ~(SISL_ISTATUS_UNMASK) /* 1 means masked */ + + __be64 intr_clear; + __be64 intr_mask; + __be64 ioarrin; /* only write what cmd_room permits */ + __be64 rrq_start; /* start & end are both inclusive */ + __be64 rrq_end; /* write sequence: start followed by end */ + __be64 cmd_room; + __be64 ctx_ctrl; /* least significant byte or b56:63 is LISN# */ + __be64 mbox_w; /* restricted use */ +}; + +/* per context provisioning & control MMIO */ +struct sisl_ctrl_map { + __be64 rht_start; + __be64 rht_cnt_id; + /* both cnt & ctx_id args must be ULL */ +#define SISL_RHT_CNT_ID(cnt, ctx_id) (((cnt) << 48) | ((ctx_id) << 32)) + + __be64 ctx_cap; /* afu_rc below is when the capability is violated */ +#define SISL_CTX_CAP_PROXY_ISSUE 0x8000000000000000ULL /* afu_rc 0x21 */ +#define SISL_CTX_CAP_REAL_MODE 0x4000000000000000ULL /* afu_rc 0x21 */ +#define SISL_CTX_CAP_HOST_XLATE 0x2000000000000000ULL /* afu_rc 0x1a */ +#define SISL_CTX_CAP_PROXY_TARGET 0x1000000000000000ULL /* afu_rc 0x21 */ +#define SISL_CTX_CAP_AFU_CMD 0x0000000000000008ULL /* afu_rc 0x21 */ +#define SISL_CTX_CAP_GSCSI_CMD 0x0000000000000004ULL /* afu_rc 0x21 */ +#define SISL_CTX_CAP_WRITE_CMD 0x0000000000000002ULL /* afu_rc 0x21 */ +#define SISL_CTX_CAP_READ_CMD 0x0000000000000001ULL /* afu_rc 0x21 */ + __be64 mbox_r; +}; + +/* single copy global regs */ +struct sisl_global_regs { + __be64 aintr_status; + /* In cxlflash, each FC port/link gets a byte of status */ +#define SISL_ASTATUS_FC0_OTHER 0x8000ULL /* b48, other err, + FC_ERRCAP[31:20] */ +#define SISL_ASTATUS_FC0_LOGO 0x4000ULL /* b49, target sent FLOGI/PLOGI/LOGO + while logged in */ +#define SISL_ASTATUS_FC0_CRC_T 0x2000ULL /* b50, CRC threshold exceeded */ +#define SISL_ASTATUS_FC0_LOGI_R 0x1000ULL /* b51, login state machine timed out + and retrying */ +#define SISL_ASTATUS_FC0_LOGI_F 0x0800ULL /* b52, login failed, + FC_ERROR[19:0] */ +#define SISL_ASTATUS_FC0_LOGI_S 0x0400ULL /* b53, login succeeded */ +#define SISL_ASTATUS_FC0_LINK_DN 0x0200ULL /* b54, link online to offline */ +#define SISL_ASTATUS_FC0_LINK_UP 0x0100ULL /* b55, link offline to online */ + +#define SISL_ASTATUS_FC1_OTHER 0x0080ULL /* b56 */ +#define SISL_ASTATUS_FC1_LOGO 0x0040ULL /* b57 */ +#define SISL_ASTATUS_FC1_CRC_T 0x0020ULL /* b58 */ +#define SISL_ASTATUS_FC1_LOGI_R 0x0010ULL /* b59 */ +#define SISL_ASTATUS_FC1_LOGI_F 0x0008ULL /* b60 */ +#define SISL_ASTATUS_FC1_LOGI_S 0x0004ULL /* b61 */ +#define SISL_ASTATUS_FC1_LINK_DN 0x0002ULL /* b62 */ +#define SISL_ASTATUS_FC1_LINK_UP 0x0001ULL /* b63 */ + +#define SISL_FC_INTERNAL_UNMASK 0x0000000300000000ULL /* 1 means unmasked */ +#define SISL_FC_INTERNAL_MASK ~(SISL_FC_INTERNAL_UNMASK) +#define SISL_FC_INTERNAL_SHIFT 32 + +#define SISL_ASTATUS_UNMASK 0xFFFFULL /* 1 means unmasked */ +#define SISL_ASTATUS_MASK ~(SISL_ASTATUS_UNMASK) /* 1 means masked */ + + __be64 aintr_clear; + __be64 aintr_mask; + __be64 afu_ctrl; + __be64 afu_hb; + __be64 afu_scratch_pad; + __be64 afu_port_sel; +#define SISL_AFUCONF_AR_IOARCB 0x4000ULL +#define SISL_AFUCONF_AR_LXT 0x2000ULL +#define SISL_AFUCONF_AR_RHT 0x1000ULL +#define SISL_AFUCONF_AR_DATA 0x0800ULL +#define SISL_AFUCONF_AR_RSRC 0x0400ULL +#define SISL_AFUCONF_AR_IOASA 0x0200ULL +#define SISL_AFUCONF_AR_RRQ 0x0100ULL +/* Aggregate all Auto Retry Bits */ +#define SISL_AFUCONF_AR_ALL (SISL_AFUCONF_AR_IOARCB|SISL_AFUCONF_AR_LXT| \ + SISL_AFUCONF_AR_RHT|SISL_AFUCONF_AR_DATA| \ + SISL_AFUCONF_AR_RSRC|SISL_AFUCONF_AR_IOASA| \ + SISL_AFUCONF_AR_RRQ) +#ifdef __BIG_ENDIAN +#define SISL_AFUCONF_ENDIAN 0x0000ULL +#else +#define SISL_AFUCONF_ENDIAN 0x0020ULL +#endif +#define SISL_AFUCONF_MBOX_CLR_READ 0x0010ULL + __be64 afu_config; + __be64 rsvd[0xf8]; + __le64 afu_version; + __be64 interface_version; +}; + +#define CXLFLASH_NUM_FC_PORTS 2 +#define CXLFLASH_MAX_CONTEXT 512 /* how many contexts per afu */ +#define CXLFLASH_NUM_VLUNS 512 + +struct sisl_global_map { + union { + struct sisl_global_regs regs; + char page0[SIZE_4K]; /* page 0 */ + }; + + char page1[SIZE_4K]; /* page 1 */ + + /* pages 2 & 3 */ + __be64 fc_regs[CXLFLASH_NUM_FC_PORTS][CXLFLASH_NUM_VLUNS]; + + /* pages 4 & 5 (lun tbl) */ + __be64 fc_port[CXLFLASH_NUM_FC_PORTS][CXLFLASH_NUM_VLUNS]; + +}; + +/* + * CXL Flash Memory Map + * + * +-------------------------------+ + * | 512 * 64 KB User MMIO | + * | (per context) | + * | User Accessible | + * +-------------------------------+ + * | 512 * 128 B per context | + * | Provisioning and Control | + * | Trusted Process accessible | + * +-------------------------------+ + * | 64 KB Global | + * | Trusted Process accessible | + * +-------------------------------+ +*/ +struct cxlflash_afu_map { + union { + struct sisl_host_map host; + char harea[SIZE_64K]; /* 64KB each */ + } hosts[CXLFLASH_MAX_CONTEXT]; + + union { + struct sisl_ctrl_map ctrl; + char carea[cache_line_size()]; /* 128B each */ + } ctrls[CXLFLASH_MAX_CONTEXT]; + + union { + struct sisl_global_map global; + char garea[SIZE_64K]; /* 64KB single block */ + }; +}; + +/* + * LXT - LBA Translation Table + * LXT control blocks + */ +struct sisl_lxt_entry { + u64 rlba_base; /* bits 0:47 is base + * b48:55 is lun index + * b58:59 is write & read perms + * (if no perm, afu_rc=0x15) + * b60:63 is port_sel mask + */ +}; + +/* + * RHT - Resource Handle Table + * Per the SISlite spec, RHT entries are to be 16-byte aligned + */ +struct sisl_rht_entry { + struct sisl_lxt_entry *lxt_start; + u32 lxt_cnt; + u16 rsvd; + u8 fp; /* format & perm nibbles. + * (if no perm, afu_rc=0x05) + */ + u8 nmask; +} __packed __aligned(16); + +struct sisl_rht_entry_f1 { + u64 lun_id; + union { + struct { + u8 valid; + u8 rsvd[5]; + u8 fp; + u8 port_sel; + }; + + u64 dw; + }; +} __packed __aligned(16); + +/* make the fp byte */ +#define SISL_RHT_FP(fmt, perm) (((fmt) << 4) | (perm)) + +/* make the fp byte for a clone from a source fp and clone flags + * flags must be only 2 LSB bits. + */ +#define SISL_RHT_FP_CLONE(src_fp, cln_flags) ((src_fp) & (0xFC | (cln_flags))) + +#define RHT_PERM_READ 0x01U +#define RHT_PERM_WRITE 0x02U +#define RHT_PERM_RW (RHT_PERM_READ | RHT_PERM_WRITE) + +/* extract the perm bits from a fp */ +#define SISL_RHT_PERM(fp) ((fp) & RHT_PERM_RW) + +#define PORT0 0x01U +#define PORT1 0x02U +#define BOTH_PORTS (PORT0 | PORT1) + +/* AFU Sync Mode byte */ +#define AFU_LW_SYNC 0x0U +#define AFU_HW_SYNC 0x1U +#define AFU_GSYNC 0x2U + +/* Special Task Management Function CDB */ +#define TMF_LUN_RESET 0x1U +#define TMF_CLEAR_ACA 0x2U + + +#define SISLITE_MAX_WS_BLOCKS 512 + +#endif /* _SISLITE_H */ --- linux-raspi2-4.2.0.orig/drivers/scsi/cxlflash/superpipe.c +++ linux-raspi2-4.2.0/drivers/scsi/cxlflash/superpipe.c @@ -0,0 +1,2143 @@ +/* + * CXL Flash Device Driver + * + * Written by: Manoj N. Kumar , IBM Corporation + * Matthew R. Ochs , IBM Corporation + * + * Copyright (C) 2015 IBM Corporation + * + * 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. + */ + +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include + +#include "sislite.h" +#include "common.h" +#include "vlun.h" +#include "superpipe.h" + +struct cxlflash_global global; + +/** + * marshal_rele_to_resize() - translate release to resize structure + * @rele: Source structure from which to translate/copy. + * @resize: Destination structure for the translate/copy. + */ +static void marshal_rele_to_resize(struct dk_cxlflash_release *release, + struct dk_cxlflash_resize *resize) +{ + resize->hdr = release->hdr; + resize->context_id = release->context_id; + resize->rsrc_handle = release->rsrc_handle; +} + +/** + * marshal_det_to_rele() - translate detach to release structure + * @detach: Destination structure for the translate/copy. + * @rele: Source structure from which to translate/copy. + */ +static void marshal_det_to_rele(struct dk_cxlflash_detach *detach, + struct dk_cxlflash_release *release) +{ + release->hdr = detach->hdr; + release->context_id = detach->context_id; +} + +/** + * cxlflash_free_errpage() - frees resources associated with global error page + */ +void cxlflash_free_errpage(void) +{ + + mutex_lock(&global.mutex); + if (global.err_page) { + __free_page(global.err_page); + global.err_page = NULL; + } + mutex_unlock(&global.mutex); +} + +/** + * cxlflash_stop_term_user_contexts() - stops/terminates known user contexts + * @cfg: Internal structure associated with the host. + * + * When the host needs to go down, all users must be quiesced and their + * memory freed. This is accomplished by putting the contexts in error + * state which will notify the user and let them 'drive' the tear down. + * Meanwhile, this routine camps until all user contexts have been removed. + */ +void cxlflash_stop_term_user_contexts(struct cxlflash_cfg *cfg) +{ + struct device *dev = &cfg->dev->dev; + int i, found; + + cxlflash_mark_contexts_error(cfg); + + while (true) { + found = false; + + for (i = 0; i < MAX_CONTEXT; i++) + if (cfg->ctx_tbl[i]) { + found = true; + break; + } + + if (!found && list_empty(&cfg->ctx_err_recovery)) + return; + + dev_dbg(dev, "%s: Wait for user contexts to quiesce...\n", + __func__); + wake_up_all(&cfg->reset_waitq); + ssleep(1); + } +} + +/** + * find_error_context() - locates a context by cookie on the error recovery list + * @cfg: Internal structure associated with the host. + * @rctxid: Desired context by id. + * @file: Desired context by file. + * + * Return: Found context on success, NULL on failure + */ +static struct ctx_info *find_error_context(struct cxlflash_cfg *cfg, u64 rctxid, + struct file *file) +{ + struct ctx_info *ctxi; + + list_for_each_entry(ctxi, &cfg->ctx_err_recovery, list) + if ((ctxi->ctxid == rctxid) || (ctxi->file == file)) + return ctxi; + + return NULL; +} + +/** + * get_context() - obtains a validated and locked context reference + * @cfg: Internal structure associated with the host. + * @rctxid: Desired context (raw, un-decoded format). + * @arg: LUN information or file associated with request. + * @ctx_ctrl: Control information to 'steer' desired lookup. + * + * NOTE: despite the name pid, in linux, current->pid actually refers + * to the lightweight process id (tid) and can change if the process is + * multi threaded. The tgid remains constant for the process and only changes + * when the process of fork. For all intents and purposes, think of tgid + * as a pid in the traditional sense. + * + * Return: Validated context on success, NULL on failure + */ +struct ctx_info *get_context(struct cxlflash_cfg *cfg, u64 rctxid, + void *arg, enum ctx_ctrl ctx_ctrl) +{ + struct device *dev = &cfg->dev->dev; + struct ctx_info *ctxi = NULL; + struct lun_access *lun_access = NULL; + struct file *file = NULL; + struct llun_info *lli = arg; + u64 ctxid = DECODE_CTXID(rctxid); + int rc; + pid_t pid = current->tgid, ctxpid = 0; + + if (ctx_ctrl & CTX_CTRL_FILE) { + lli = NULL; + file = (struct file *)arg; + } + + if (ctx_ctrl & CTX_CTRL_CLONE) + pid = current->parent->tgid; + + if (likely(ctxid < MAX_CONTEXT)) { + while (true) { + mutex_lock(&cfg->ctx_tbl_list_mutex); + ctxi = cfg->ctx_tbl[ctxid]; + if (ctxi) + if ((file && (ctxi->file != file)) || + (!file && (ctxi->ctxid != rctxid))) + ctxi = NULL; + + if ((ctx_ctrl & CTX_CTRL_ERR) || + (!ctxi && (ctx_ctrl & CTX_CTRL_ERR_FALLBACK))) + ctxi = find_error_context(cfg, rctxid, file); + if (!ctxi) { + mutex_unlock(&cfg->ctx_tbl_list_mutex); + goto out; + } + + /* + * Need to acquire ownership of the context while still + * under the table/list lock to serialize with a remove + * thread. Use the 'try' to avoid stalling the + * table/list lock for a single context. + * + * Note that the lock order is: + * + * cfg->ctx_tbl_list_mutex -> ctxi->mutex + * + * Therefore release ctx_tbl_list_mutex before retrying. + */ + rc = mutex_trylock(&ctxi->mutex); + mutex_unlock(&cfg->ctx_tbl_list_mutex); + if (rc) + break; /* got the context's lock! */ + } + + if (ctxi->unavail) + goto denied; + + ctxpid = ctxi->pid; + if (likely(!(ctx_ctrl & CTX_CTRL_NOPID))) + if (pid != ctxpid) + goto denied; + + if (lli) { + list_for_each_entry(lun_access, &ctxi->luns, list) + if (lun_access->lli == lli) + goto out; + goto denied; + } + } + +out: + dev_dbg(dev, "%s: rctxid=%016llX ctxinfo=%p ctxpid=%u pid=%u " + "ctx_ctrl=%u\n", __func__, rctxid, ctxi, ctxpid, pid, + ctx_ctrl); + + return ctxi; + +denied: + mutex_unlock(&ctxi->mutex); + ctxi = NULL; + goto out; +} + +/** + * put_context() - release a context that was retrieved from get_context() + * @ctxi: Context to release. + * + * For now, releasing the context equates to unlocking it's mutex. + */ +void put_context(struct ctx_info *ctxi) +{ + mutex_unlock(&ctxi->mutex); +} + +/** + * afu_attach() - attach a context to the AFU + * @cfg: Internal structure associated with the host. + * @ctxi: Context to attach. + * + * Upon setting the context capabilities, they must be confirmed with + * a read back operation as the context might have been closed since + * the mailbox was unlocked. When this occurs, registration is failed. + * + * Return: 0 on success, -errno on failure + */ +static int afu_attach(struct cxlflash_cfg *cfg, struct ctx_info *ctxi) +{ + struct device *dev = &cfg->dev->dev; + struct afu *afu = cfg->afu; + struct sisl_ctrl_map __iomem *ctrl_map = ctxi->ctrl_map; + int rc = 0; + u64 val; + + /* Unlock cap and restrict user to read/write cmds in translated mode */ + readq_be(&ctrl_map->mbox_r); + val = (SISL_CTX_CAP_READ_CMD | SISL_CTX_CAP_WRITE_CMD); + writeq_be(val, &ctrl_map->ctx_cap); + val = readq_be(&ctrl_map->ctx_cap); + if (val != (SISL_CTX_CAP_READ_CMD | SISL_CTX_CAP_WRITE_CMD)) { + dev_err(dev, "%s: ctx may be closed val=%016llX\n", + __func__, val); + rc = -EAGAIN; + goto out; + } + + /* Set up MMIO registers pointing to the RHT */ + writeq_be((u64)ctxi->rht_start, &ctrl_map->rht_start); + val = SISL_RHT_CNT_ID((u64)MAX_RHT_PER_CONTEXT, (u64)(afu->ctx_hndl)); + writeq_be(val, &ctrl_map->rht_cnt_id); +out: + dev_dbg(dev, "%s: returning rc=%d\n", __func__, rc); + return rc; +} + +/** + * read_cap16() - issues a SCSI READ_CAP16 command + * @sdev: SCSI device associated with LUN. + * @lli: LUN destined for capacity request. + * + * The READ_CAP16 can take quite a while to complete. Should an EEH occur while + * in scsi_execute(), the EEH handler will attempt to recover. As part of the + * recovery, the handler drains all currently running ioctls, waiting until they + * have completed before proceeding with a reset. As this routine is used on the + * ioctl path, this can create a condition where the EEH handler becomes stuck, + * infinitely waiting for this ioctl thread. To avoid this behavior, temporarily + * unmark this thread as an ioctl thread by releasing the ioctl read semaphore. + * This will allow the EEH handler to proceed with a recovery while this thread + * is still running. Once the scsi_execute() returns, reacquire the ioctl read + * semaphore and check the adapter state in case it changed while inside of + * scsi_execute(). The state check will wait if the adapter is still being + * recovered or return a failure if the recovery failed. In the event that the + * adapter reset failed, simply return the failure as the ioctl would be unable + * to continue. + * + * Note that the above puts a requirement on this routine to only be called on + * an ioctl thread. + * + * Return: 0 on success, -errno on failure + */ +static int read_cap16(struct scsi_device *sdev, struct llun_info *lli) +{ + struct cxlflash_cfg *cfg = (struct cxlflash_cfg *)sdev->host->hostdata; + struct device *dev = &cfg->dev->dev; + struct glun_info *gli = lli->parent; + u8 *cmd_buf = NULL; + u8 *scsi_cmd = NULL; + u8 *sense_buf = NULL; + int rc = 0; + int result = 0; + int retry_cnt = 0; + u32 to = CMD_TIMEOUT * HZ; + +retry: + cmd_buf = kzalloc(CMD_BUFSIZE, GFP_KERNEL); + scsi_cmd = kzalloc(MAX_COMMAND_SIZE, GFP_KERNEL); + sense_buf = kzalloc(SCSI_SENSE_BUFFERSIZE, GFP_KERNEL); + if (unlikely(!cmd_buf || !scsi_cmd || !sense_buf)) { + rc = -ENOMEM; + goto out; + } + + scsi_cmd[0] = SERVICE_ACTION_IN_16; /* read cap(16) */ + scsi_cmd[1] = SAI_READ_CAPACITY_16; /* service action */ + put_unaligned_be32(CMD_BUFSIZE, &scsi_cmd[10]); + + dev_dbg(dev, "%s: %ssending cmd(0x%x)\n", __func__, + retry_cnt ? "re" : "", scsi_cmd[0]); + + /* Drop the ioctl read semahpore across lengthy call */ + up_read(&cfg->ioctl_rwsem); + result = scsi_execute(sdev, scsi_cmd, DMA_FROM_DEVICE, cmd_buf, + CMD_BUFSIZE, sense_buf, to, CMD_RETRIES, 0, NULL); + down_read(&cfg->ioctl_rwsem); + rc = check_state(cfg); + if (rc) { + dev_err(dev, "%s: Failed state! result=0x08%X\n", + __func__, result); + rc = -ENODEV; + goto out; + } + + if (driver_byte(result) == DRIVER_SENSE) { + result &= ~(0xFF<<24); /* DRIVER_SENSE is not an error */ + if (result & SAM_STAT_CHECK_CONDITION) { + struct scsi_sense_hdr sshdr; + + scsi_normalize_sense(sense_buf, SCSI_SENSE_BUFFERSIZE, + &sshdr); + switch (sshdr.sense_key) { + case NO_SENSE: + case RECOVERED_ERROR: + /* fall through */ + case NOT_READY: + result &= ~SAM_STAT_CHECK_CONDITION; + break; + case UNIT_ATTENTION: + switch (sshdr.asc) { + case 0x29: /* Power on Reset or Device Reset */ + /* fall through */ + case 0x2A: /* Device capacity changed */ + case 0x3F: /* Report LUNs changed */ + /* Retry the command once more */ + if (retry_cnt++ < 1) { + kfree(cmd_buf); + kfree(scsi_cmd); + kfree(sense_buf); + goto retry; + } + } + break; + default: + break; + } + } + } + + if (result) { + dev_err(dev, "%s: command failed, result=0x%x\n", + __func__, result); + rc = -EIO; + goto out; + } + + /* + * Read cap was successful, grab values from the buffer; + * note that we don't need to worry about unaligned access + * as the buffer is allocated on an aligned boundary. + */ + mutex_lock(&gli->mutex); + gli->max_lba = be64_to_cpu(*((__be64 *)&cmd_buf[0])); + gli->blk_len = be32_to_cpu(*((__be32 *)&cmd_buf[8])); + mutex_unlock(&gli->mutex); + +out: + kfree(cmd_buf); + kfree(scsi_cmd); + kfree(sense_buf); + + dev_dbg(dev, "%s: maxlba=%lld blklen=%d rc=%d\n", + __func__, gli->max_lba, gli->blk_len, rc); + return rc; +} + +/** + * get_rhte() - obtains validated resource handle table entry reference + * @ctxi: Context owning the resource handle. + * @rhndl: Resource handle associated with entry. + * @lli: LUN associated with request. + * + * Return: Validated RHTE on success, NULL on failure + */ +struct sisl_rht_entry *get_rhte(struct ctx_info *ctxi, res_hndl_t rhndl, + struct llun_info *lli) +{ + struct sisl_rht_entry *rhte = NULL; + + if (unlikely(!ctxi->rht_start)) { + pr_debug("%s: Context does not have allocated RHT!\n", + __func__); + goto out; + } + + if (unlikely(rhndl >= MAX_RHT_PER_CONTEXT)) { + pr_debug("%s: Bad resource handle! (%d)\n", __func__, rhndl); + goto out; + } + + if (unlikely(ctxi->rht_lun[rhndl] != lli)) { + pr_debug("%s: Bad resource handle LUN! (%d)\n", + __func__, rhndl); + goto out; + } + + rhte = &ctxi->rht_start[rhndl]; + if (unlikely(rhte->nmask == 0)) { + pr_debug("%s: Unopened resource handle! (%d)\n", + __func__, rhndl); + rhte = NULL; + goto out; + } + +out: + return rhte; +} + +/** + * rhte_checkout() - obtains free/empty resource handle table entry + * @ctxi: Context owning the resource handle. + * @lli: LUN associated with request. + * + * Return: Free RHTE on success, NULL on failure + */ +struct sisl_rht_entry *rhte_checkout(struct ctx_info *ctxi, + struct llun_info *lli) +{ + struct sisl_rht_entry *rhte = NULL; + int i; + + /* Find a free RHT entry */ + for (i = 0; i < MAX_RHT_PER_CONTEXT; i++) + if (ctxi->rht_start[i].nmask == 0) { + rhte = &ctxi->rht_start[i]; + ctxi->rht_out++; + break; + } + + if (likely(rhte)) + ctxi->rht_lun[i] = lli; + + pr_debug("%s: returning rhte=%p (%d)\n", __func__, rhte, i); + return rhte; +} + +/** + * rhte_checkin() - releases a resource handle table entry + * @ctxi: Context owning the resource handle. + * @rhte: RHTE to release. + */ +void rhte_checkin(struct ctx_info *ctxi, + struct sisl_rht_entry *rhte) +{ + u32 rsrc_handle = rhte - ctxi->rht_start; + + rhte->nmask = 0; + rhte->fp = 0; + ctxi->rht_out--; + ctxi->rht_lun[rsrc_handle] = NULL; + ctxi->rht_needs_ws[rsrc_handle] = false; +} + +/** + * rhte_format1() - populates a RHTE for format 1 + * @rhte: RHTE to populate. + * @lun_id: LUN ID of LUN associated with RHTE. + * @perm: Desired permissions for RHTE. + * @port_sel: Port selection mask + */ +static void rht_format1(struct sisl_rht_entry *rhte, u64 lun_id, u32 perm, + u32 port_sel) +{ + /* + * Populate the Format 1 RHT entry for direct access (physical + * LUN) using the synchronization sequence defined in the + * SISLite specification. + */ + struct sisl_rht_entry_f1 dummy = { 0 }; + struct sisl_rht_entry_f1 *rhte_f1 = (struct sisl_rht_entry_f1 *)rhte; + + memset(rhte_f1, 0, sizeof(*rhte_f1)); + rhte_f1->fp = SISL_RHT_FP(1U, 0); + dma_wmb(); /* Make setting of format bit visible */ + + rhte_f1->lun_id = lun_id; + dma_wmb(); /* Make setting of LUN id visible */ + + /* + * Use a dummy RHT Format 1 entry to build the second dword + * of the entry that must be populated in a single write when + * enabled (valid bit set to TRUE). + */ + dummy.valid = 0x80; + dummy.fp = SISL_RHT_FP(1U, perm); + dummy.port_sel = port_sel; + rhte_f1->dw = dummy.dw; + + dma_wmb(); /* Make remaining RHT entry fields visible */ +} + +/** + * cxlflash_lun_attach() - attaches a user to a LUN and manages the LUN's mode + * @gli: LUN to attach. + * @mode: Desired mode of the LUN. + * @locked: Mutex status on current thread. + * + * Return: 0 on success, -errno on failure + */ +int cxlflash_lun_attach(struct glun_info *gli, enum lun_mode mode, bool locked) +{ + int rc = 0; + + if (!locked) + mutex_lock(&gli->mutex); + + if (gli->mode == MODE_NONE) + gli->mode = mode; + else if (gli->mode != mode) { + pr_debug("%s: LUN operating in mode %d, requested mode %d\n", + __func__, gli->mode, mode); + rc = -EINVAL; + goto out; + } + + gli->users++; + WARN_ON(gli->users <= 0); +out: + pr_debug("%s: Returning rc=%d gli->mode=%u gli->users=%u\n", + __func__, rc, gli->mode, gli->users); + if (!locked) + mutex_unlock(&gli->mutex); + return rc; +} + +/** + * cxlflash_lun_detach() - detaches a user from a LUN and resets the LUN's mode + * @gli: LUN to detach. + * + * When resetting the mode, terminate block allocation resources as they + * are no longer required (service is safe to call even when block allocation + * resources were not present - such as when transitioning from physical mode). + * These resources will be reallocated when needed (subsequent transition to + * virtual mode). + */ +void cxlflash_lun_detach(struct glun_info *gli) +{ + mutex_lock(&gli->mutex); + WARN_ON(gli->mode == MODE_NONE); + if (--gli->users == 0) { + gli->mode = MODE_NONE; + cxlflash_ba_terminate(&gli->blka.ba_lun); + } + pr_debug("%s: gli->users=%u\n", __func__, gli->users); + WARN_ON(gli->users < 0); + mutex_unlock(&gli->mutex); +} + +/** + * _cxlflash_disk_release() - releases the specified resource entry + * @sdev: SCSI device associated with LUN. + * @ctxi: Context owning resources. + * @release: Release ioctl data structure. + * + * For LUNs in virtual mode, the virtual LUN associated with the specified + * resource handle is resized to 0 prior to releasing the RHTE. Note that the + * AFU sync should _not_ be performed when the context is sitting on the error + * recovery list. A context on the error recovery list is not known to the AFU + * due to reset. When the context is recovered, it will be reattached and made + * known again to the AFU. + * + * Return: 0 on success, -errno on failure + */ +int _cxlflash_disk_release(struct scsi_device *sdev, + struct ctx_info *ctxi, + struct dk_cxlflash_release *release) +{ + struct cxlflash_cfg *cfg = (struct cxlflash_cfg *)sdev->host->hostdata; + struct device *dev = &cfg->dev->dev; + struct llun_info *lli = sdev->hostdata; + struct glun_info *gli = lli->parent; + struct afu *afu = cfg->afu; + bool put_ctx = false; + + struct dk_cxlflash_resize size; + res_hndl_t rhndl = release->rsrc_handle; + + int rc = 0; + u64 ctxid = DECODE_CTXID(release->context_id), + rctxid = release->context_id; + + struct sisl_rht_entry *rhte; + struct sisl_rht_entry_f1 *rhte_f1; + + dev_dbg(dev, "%s: ctxid=%llu rhndl=0x%llx gli->mode=%u gli->users=%u\n", + __func__, ctxid, release->rsrc_handle, gli->mode, gli->users); + + if (!ctxi) { + ctxi = get_context(cfg, rctxid, lli, CTX_CTRL_ERR_FALLBACK); + if (unlikely(!ctxi)) { + dev_dbg(dev, "%s: Bad context! (%llu)\n", + __func__, ctxid); + rc = -EINVAL; + goto out; + } + + put_ctx = true; + } + + rhte = get_rhte(ctxi, rhndl, lli); + if (unlikely(!rhte)) { + dev_dbg(dev, "%s: Bad resource handle! (%d)\n", + __func__, rhndl); + rc = -EINVAL; + goto out; + } + + /* + * Resize to 0 for virtual LUNS by setting the size + * to 0. This will clear LXT_START and LXT_CNT fields + * in the RHT entry and properly sync with the AFU. + * + * Afterwards we clear the remaining fields. + */ + switch (gli->mode) { + case MODE_VIRTUAL: + marshal_rele_to_resize(release, &size); + size.req_size = 0; + rc = _cxlflash_vlun_resize(sdev, ctxi, &size); + if (rc) { + dev_dbg(dev, "%s: resize failed rc %d\n", __func__, rc); + goto out; + } + + break; + case MODE_PHYSICAL: + /* + * Clear the Format 1 RHT entry for direct access + * (physical LUN) using the synchronization sequence + * defined in the SISLite specification. + */ + rhte_f1 = (struct sisl_rht_entry_f1 *)rhte; + + rhte_f1->valid = 0; + dma_wmb(); /* Make revocation of RHT entry visible */ + + rhte_f1->lun_id = 0; + dma_wmb(); /* Make clearing of LUN id visible */ + + rhte_f1->dw = 0; + dma_wmb(); /* Make RHT entry bottom-half clearing visible */ + + if (!ctxi->err_recovery_active) + cxlflash_afu_sync(afu, ctxid, rhndl, AFU_HW_SYNC); + break; + default: + WARN(1, "Unsupported LUN mode!"); + goto out; + } + + rhte_checkin(ctxi, rhte); + cxlflash_lun_detach(gli); + +out: + if (put_ctx) + put_context(ctxi); + dev_dbg(dev, "%s: returning rc=%d\n", __func__, rc); + return rc; +} + +int cxlflash_disk_release(struct scsi_device *sdev, + struct dk_cxlflash_release *release) +{ + return _cxlflash_disk_release(sdev, NULL, release); +} + +/** + * destroy_context() - releases a context + * @cfg: Internal structure associated with the host. + * @ctxi: Context to release. + * + * Note that the rht_lun member of the context was cut from a single + * allocation when the context was created and therefore does not need + * to be explicitly freed. Also note that we conditionally check for the + * existence of the context control map before clearing the RHT registers + * and context capabilities because it is possible to destroy a context + * while the context is in the error state (previous mapping was removed + * [so we don't have to worry about clearing] and context is waiting for + * a new mapping). + */ +static void destroy_context(struct cxlflash_cfg *cfg, + struct ctx_info *ctxi) +{ + struct afu *afu = cfg->afu; + + WARN_ON(!list_empty(&ctxi->luns)); + + /* Clear RHT registers and drop all capabilities for this context */ + if (afu->afu_map && ctxi->ctrl_map) { + writeq_be(0, &ctxi->ctrl_map->rht_start); + writeq_be(0, &ctxi->ctrl_map->rht_cnt_id); + writeq_be(0, &ctxi->ctrl_map->ctx_cap); + } + + /* Free memory associated with context */ + free_page((ulong)ctxi->rht_start); + kfree(ctxi->rht_needs_ws); + kfree(ctxi->rht_lun); + kfree(ctxi); +} + +/** + * create_context() - allocates and initializes a context + * @cfg: Internal structure associated with the host. + * @ctx: Previously obtained CXL context reference. + * @ctxid: Previously obtained process element associated with CXL context. + * @adap_fd: Previously obtained adapter fd associated with CXL context. + * @file: Previously obtained file associated with CXL context. + * @perms: User-specified permissions. + * + * The context's mutex is locked when an allocated context is returned. + * + * Return: Allocated context on success, NULL on failure + */ +static struct ctx_info *create_context(struct cxlflash_cfg *cfg, + struct cxl_context *ctx, int ctxid, + int adap_fd, struct file *file, + u32 perms) +{ + struct device *dev = &cfg->dev->dev; + struct afu *afu = cfg->afu; + struct ctx_info *ctxi = NULL; + struct llun_info **lli = NULL; + u8 *ws = NULL; + struct sisl_rht_entry *rhte; + + ctxi = kzalloc(sizeof(*ctxi), GFP_KERNEL); + lli = kzalloc((MAX_RHT_PER_CONTEXT * sizeof(*lli)), GFP_KERNEL); + ws = kzalloc((MAX_RHT_PER_CONTEXT * sizeof(*ws)), GFP_KERNEL); + if (unlikely(!ctxi || !lli || !ws)) { + dev_err(dev, "%s: Unable to allocate context!\n", __func__); + goto err; + } + + rhte = (struct sisl_rht_entry *)get_zeroed_page(GFP_KERNEL); + if (unlikely(!rhte)) { + dev_err(dev, "%s: Unable to allocate RHT!\n", __func__); + goto err; + } + + ctxi->rht_lun = lli; + ctxi->rht_needs_ws = ws; + ctxi->rht_start = rhte; + ctxi->rht_perms = perms; + + ctxi->ctrl_map = &afu->afu_map->ctrls[ctxid].ctrl; + ctxi->ctxid = ENCODE_CTXID(ctxi, ctxid); + ctxi->lfd = adap_fd; + ctxi->pid = current->tgid; /* tgid = pid */ + ctxi->ctx = ctx; + ctxi->file = file; + mutex_init(&ctxi->mutex); + INIT_LIST_HEAD(&ctxi->luns); + INIT_LIST_HEAD(&ctxi->list); /* initialize for list_empty() */ + + mutex_lock(&ctxi->mutex); +out: + return ctxi; + +err: + kfree(ws); + kfree(lli); + kfree(ctxi); + ctxi = NULL; + goto out; +} + +/** + * _cxlflash_disk_detach() - detaches a LUN from a context + * @sdev: SCSI device associated with LUN. + * @ctxi: Context owning resources. + * @detach: Detach ioctl data structure. + * + * As part of the detach, all per-context resources associated with the LUN + * are cleaned up. When detaching the last LUN for a context, the context + * itself is cleaned up and released. + * + * Return: 0 on success, -errno on failure + */ +static int _cxlflash_disk_detach(struct scsi_device *sdev, + struct ctx_info *ctxi, + struct dk_cxlflash_detach *detach) +{ + struct cxlflash_cfg *cfg = (struct cxlflash_cfg *)sdev->host->hostdata; + struct device *dev = &cfg->dev->dev; + struct llun_info *lli = sdev->hostdata; + struct lun_access *lun_access, *t; + struct dk_cxlflash_release rel; + bool put_ctx = false; + + int i; + int rc = 0; + int lfd; + u64 ctxid = DECODE_CTXID(detach->context_id), + rctxid = detach->context_id; + + dev_dbg(dev, "%s: ctxid=%llu\n", __func__, ctxid); + + if (!ctxi) { + ctxi = get_context(cfg, rctxid, lli, CTX_CTRL_ERR_FALLBACK); + if (unlikely(!ctxi)) { + dev_dbg(dev, "%s: Bad context! (%llu)\n", + __func__, ctxid); + rc = -EINVAL; + goto out; + } + + put_ctx = true; + } + + /* Cleanup outstanding resources tied to this LUN */ + if (ctxi->rht_out) { + marshal_det_to_rele(detach, &rel); + for (i = 0; i < MAX_RHT_PER_CONTEXT; i++) { + if (ctxi->rht_lun[i] == lli) { + rel.rsrc_handle = i; + _cxlflash_disk_release(sdev, ctxi, &rel); + } + + /* No need to loop further if we're done */ + if (ctxi->rht_out == 0) + break; + } + } + + /* Take our LUN out of context, free the node */ + list_for_each_entry_safe(lun_access, t, &ctxi->luns, list) + if (lun_access->lli == lli) { + list_del(&lun_access->list); + kfree(lun_access); + lun_access = NULL; + break; + } + + /* Tear down context following last LUN cleanup */ + if (list_empty(&ctxi->luns)) { + ctxi->unavail = true; + mutex_unlock(&ctxi->mutex); + mutex_lock(&cfg->ctx_tbl_list_mutex); + mutex_lock(&ctxi->mutex); + + /* Might not have been in error list so conditionally remove */ + if (!list_empty(&ctxi->list)) + list_del(&ctxi->list); + cfg->ctx_tbl[ctxid] = NULL; + mutex_unlock(&cfg->ctx_tbl_list_mutex); + mutex_unlock(&ctxi->mutex); + + lfd = ctxi->lfd; + destroy_context(cfg, ctxi); + ctxi = NULL; + put_ctx = false; + + /* + * As a last step, clean up external resources when not + * already on an external cleanup thread, i.e.: close(adap_fd). + * + * NOTE: this will free up the context from the CXL services, + * allowing it to dole out the same context_id on a future + * (or even currently in-flight) disk_attach operation. + */ + if (lfd != -1) + sys_close(lfd); + } + + /* Release the sdev reference that bound this LUN to the context */ + scsi_device_put(sdev); + +out: + if (put_ctx) + put_context(ctxi); + dev_dbg(dev, "%s: returning rc=%d\n", __func__, rc); + return rc; +} + +static int cxlflash_disk_detach(struct scsi_device *sdev, + struct dk_cxlflash_detach *detach) +{ + return _cxlflash_disk_detach(sdev, NULL, detach); +} + +/** + * cxlflash_cxl_release() - release handler for adapter file descriptor + * @inode: File-system inode associated with fd. + * @file: File installed with adapter file descriptor. + * + * This routine is the release handler for the fops registered with + * the CXL services on an initial attach for a context. It is called + * when a close is performed on the adapter file descriptor returned + * to the user. Programmatically, the user is not required to perform + * the close, as it is handled internally via the detach ioctl when + * a context is being removed. Note that nothing prevents the user + * from performing a close, but the user should be aware that doing + * so is considered catastrophic and subsequent usage of the superpipe + * API with previously saved off tokens will fail. + * + * When initiated from an external close (either by the user or via + * a process tear down), the routine derives the context reference + * and calls detach for each LUN associated with the context. The + * final detach operation will cause the context itself to be freed. + * Note that the saved off lfd is reset prior to calling detach to + * signify that the final detach should not perform a close. + * + * When initiated from a detach operation as part of the tear down + * of a context, the context is first completely freed and then the + * close is performed. This routine will fail to derive the context + * reference (due to the context having already been freed) and then + * call into the CXL release entry point. + * + * Thus, with exception to when the CXL process element (context id) + * lookup fails (a case that should theoretically never occur), every + * call into this routine results in a complete freeing of a context. + * + * As part of the detach, all per-context resources associated with the LUN + * are cleaned up. When detaching the last LUN for a context, the context + * itself is cleaned up and released. + * + * Return: 0 on success + */ +static int cxlflash_cxl_release(struct inode *inode, struct file *file) +{ + struct cxl_context *ctx = cxl_fops_get_context(file); + struct cxlflash_cfg *cfg = container_of(file->f_op, struct cxlflash_cfg, + cxl_fops); + struct device *dev = &cfg->dev->dev; + struct ctx_info *ctxi = NULL; + struct dk_cxlflash_detach detach = { { 0 }, 0 }; + struct lun_access *lun_access, *t; + enum ctx_ctrl ctrl = CTX_CTRL_ERR_FALLBACK | CTX_CTRL_FILE; + int ctxid; + + ctxid = cxl_process_element(ctx); + if (unlikely(ctxid < 0)) { + dev_err(dev, "%s: Context %p was closed! (%d)\n", + __func__, ctx, ctxid); + goto out; + } + + ctxi = get_context(cfg, ctxid, file, ctrl); + if (unlikely(!ctxi)) { + ctxi = get_context(cfg, ctxid, file, ctrl | CTX_CTRL_CLONE); + if (!ctxi) { + dev_dbg(dev, "%s: Context %d already free!\n", + __func__, ctxid); + goto out_release; + } + + dev_dbg(dev, "%s: Another process owns context %d!\n", + __func__, ctxid); + put_context(ctxi); + goto out; + } + + dev_dbg(dev, "%s: close(%d) for context %d\n", + __func__, ctxi->lfd, ctxid); + + /* Reset the file descriptor to indicate we're on a close() thread */ + ctxi->lfd = -1; + detach.context_id = ctxi->ctxid; + list_for_each_entry_safe(lun_access, t, &ctxi->luns, list) + _cxlflash_disk_detach(lun_access->sdev, ctxi, &detach); +out_release: + cxl_fd_release(inode, file); +out: + dev_dbg(dev, "%s: returning\n", __func__); + return 0; +} + +/** + * unmap_context() - clears a previously established mapping + * @ctxi: Context owning the mapping. + * + * This routine is used to switch between the error notification page + * (dummy page of all 1's) and the real mapping (established by the CXL + * fault handler). + */ +static void unmap_context(struct ctx_info *ctxi) +{ + unmap_mapping_range(ctxi->file->f_mapping, 0, 0, 1); +} + +/** + * get_err_page() - obtains and allocates the error notification page + * + * Return: error notification page on success, NULL on failure + */ +static struct page *get_err_page(void) +{ + struct page *err_page = global.err_page; + + if (unlikely(!err_page)) { + err_page = alloc_page(GFP_KERNEL); + if (unlikely(!err_page)) { + pr_err("%s: Unable to allocate err_page!\n", __func__); + goto out; + } + + memset(page_address(err_page), -1, PAGE_SIZE); + + /* Serialize update w/ other threads to avoid a leak */ + mutex_lock(&global.mutex); + if (likely(!global.err_page)) + global.err_page = err_page; + else { + __free_page(err_page); + err_page = global.err_page; + } + mutex_unlock(&global.mutex); + } + +out: + pr_debug("%s: returning err_page=%p\n", __func__, err_page); + return err_page; +} + +/** + * cxlflash_mmap_fault() - mmap fault handler for adapter file descriptor + * @vma: VM area associated with mapping. + * @vmf: VM fault associated with current fault. + * + * To support error notification via MMIO, faults are 'caught' by this routine + * that was inserted before passing back the adapter file descriptor on attach. + * When a fault occurs, this routine evaluates if error recovery is active and + * if so, installs the error page to 'notify' the user about the error state. + * During normal operation, the fault is simply handled by the original fault + * handler that was installed by CXL services as part of initializing the + * adapter file descriptor. The VMA's page protection bits are toggled to + * indicate cached/not-cached depending on the memory backing the fault. + * + * Return: 0 on success, VM_FAULT_SIGBUS on failure + */ +static int cxlflash_mmap_fault(struct vm_area_struct *vma, struct vm_fault *vmf) +{ + struct file *file = vma->vm_file; + struct cxl_context *ctx = cxl_fops_get_context(file); + struct cxlflash_cfg *cfg = container_of(file->f_op, struct cxlflash_cfg, + cxl_fops); + struct device *dev = &cfg->dev->dev; + struct ctx_info *ctxi = NULL; + struct page *err_page = NULL; + enum ctx_ctrl ctrl = CTX_CTRL_ERR_FALLBACK | CTX_CTRL_FILE; + int rc = 0; + int ctxid; + + ctxid = cxl_process_element(ctx); + if (unlikely(ctxid < 0)) { + dev_err(dev, "%s: Context %p was closed! (%d)\n", + __func__, ctx, ctxid); + goto err; + } + + ctxi = get_context(cfg, ctxid, file, ctrl); + if (unlikely(!ctxi)) { + dev_dbg(dev, "%s: Bad context! (%d)\n", __func__, ctxid); + goto err; + } + + dev_dbg(dev, "%s: fault(%d) for context %d\n", + __func__, ctxi->lfd, ctxid); + + if (likely(!ctxi->err_recovery_active)) { + vma->vm_page_prot = pgprot_noncached(vma->vm_page_prot); + rc = ctxi->cxl_mmap_vmops->fault(vma, vmf); + } else { + dev_dbg(dev, "%s: err recovery active, use err_page!\n", + __func__); + + err_page = get_err_page(); + if (unlikely(!err_page)) { + dev_err(dev, "%s: Could not obtain error page!\n", + __func__); + rc = VM_FAULT_RETRY; + goto out; + } + + get_page(err_page); + vmf->page = err_page; + vma->vm_page_prot = pgprot_cached(vma->vm_page_prot); + } + +out: + if (likely(ctxi)) + put_context(ctxi); + dev_dbg(dev, "%s: returning rc=%d\n", __func__, rc); + return rc; + +err: + rc = VM_FAULT_SIGBUS; + goto out; +} + +/* + * Local MMAP vmops to 'catch' faults + */ +static const struct vm_operations_struct cxlflash_mmap_vmops = { + .fault = cxlflash_mmap_fault, +}; + +/** + * cxlflash_cxl_mmap() - mmap handler for adapter file descriptor + * @file: File installed with adapter file descriptor. + * @vma: VM area associated with mapping. + * + * Installs local mmap vmops to 'catch' faults for error notification support. + * + * Return: 0 on success, -errno on failure + */ +static int cxlflash_cxl_mmap(struct file *file, struct vm_area_struct *vma) +{ + struct cxl_context *ctx = cxl_fops_get_context(file); + struct cxlflash_cfg *cfg = container_of(file->f_op, struct cxlflash_cfg, + cxl_fops); + struct device *dev = &cfg->dev->dev; + struct ctx_info *ctxi = NULL; + enum ctx_ctrl ctrl = CTX_CTRL_ERR_FALLBACK | CTX_CTRL_FILE; + int ctxid; + int rc = 0; + + ctxid = cxl_process_element(ctx); + if (unlikely(ctxid < 0)) { + dev_err(dev, "%s: Context %p was closed! (%d)\n", + __func__, ctx, ctxid); + rc = -EIO; + goto out; + } + + ctxi = get_context(cfg, ctxid, file, ctrl); + if (unlikely(!ctxi)) { + dev_dbg(dev, "%s: Bad context! (%d)\n", __func__, ctxid); + rc = -EIO; + goto out; + } + + dev_dbg(dev, "%s: mmap(%d) for context %d\n", + __func__, ctxi->lfd, ctxid); + + rc = cxl_fd_mmap(file, vma); + if (likely(!rc)) { + /* Insert ourself in the mmap fault handler path */ + ctxi->cxl_mmap_vmops = vma->vm_ops; + vma->vm_ops = &cxlflash_mmap_vmops; + } + +out: + if (likely(ctxi)) + put_context(ctxi); + return rc; +} + +const struct file_operations cxlflash_cxl_fops = { + .owner = THIS_MODULE, + .mmap = cxlflash_cxl_mmap, + .release = cxlflash_cxl_release, +}; + +/** + * cxlflash_mark_contexts_error() - move contexts to error state and list + * @cfg: Internal structure associated with the host. + * + * A context is only moved over to the error list when there are no outstanding + * references to it. This ensures that a running operation has completed. + * + * Return: 0 on success, -errno on failure + */ +int cxlflash_mark_contexts_error(struct cxlflash_cfg *cfg) +{ + int i, rc = 0; + struct ctx_info *ctxi = NULL; + + mutex_lock(&cfg->ctx_tbl_list_mutex); + + for (i = 0; i < MAX_CONTEXT; i++) { + ctxi = cfg->ctx_tbl[i]; + if (ctxi) { + mutex_lock(&ctxi->mutex); + cfg->ctx_tbl[i] = NULL; + list_add(&ctxi->list, &cfg->ctx_err_recovery); + ctxi->err_recovery_active = true; + ctxi->ctrl_map = NULL; + unmap_context(ctxi); + mutex_unlock(&ctxi->mutex); + } + } + + mutex_unlock(&cfg->ctx_tbl_list_mutex); + return rc; +} + +/* + * Dummy NULL fops + */ +static const struct file_operations null_fops = { + .owner = THIS_MODULE, +}; + +/** + * check_state() - checks and responds to the current adapter state + * @cfg: Internal structure associated with the host. + * + * This routine can block and should only be used on process context. + * It assumes that the caller is an ioctl thread and holding the ioctl + * read semaphore. This is temporarily let up across the wait to allow + * for draining actively running ioctls. Also note that when waking up + * from waiting in reset, the state is unknown and must be checked again + * before proceeding. + * + * Return: 0 on success, -errno on failure + */ +int check_state(struct cxlflash_cfg *cfg) +{ + struct device *dev = &cfg->dev->dev; + int rc = 0; + +retry: + switch (cfg->state) { + case STATE_RESET: + dev_dbg(dev, "%s: Reset state, going to wait...\n", __func__); + up_read(&cfg->ioctl_rwsem); + rc = wait_event_interruptible(cfg->reset_waitq, + cfg->state != STATE_RESET); + down_read(&cfg->ioctl_rwsem); + if (unlikely(rc)) + break; + goto retry; + case STATE_FAILTERM: + dev_dbg(dev, "%s: Failed/Terminating!\n", __func__); + rc = -ENODEV; + break; + default: + break; + } + + return rc; +} + +/** + * cxlflash_disk_attach() - attach a LUN to a context + * @sdev: SCSI device associated with LUN. + * @attach: Attach ioctl data structure. + * + * Creates a context and attaches LUN to it. A LUN can only be attached + * one time to a context (subsequent attaches for the same context/LUN pair + * are not supported). Additional LUNs can be attached to a context by + * specifying the 'reuse' flag defined in the cxlflash_ioctl.h header. + * + * Return: 0 on success, -errno on failure + */ +static int cxlflash_disk_attach(struct scsi_device *sdev, + struct dk_cxlflash_attach *attach) +{ + struct cxlflash_cfg *cfg = (struct cxlflash_cfg *)sdev->host->hostdata; + struct device *dev = &cfg->dev->dev; + struct afu *afu = cfg->afu; + struct llun_info *lli = sdev->hostdata; + struct glun_info *gli = lli->parent; + struct cxl_ioctl_start_work *work; + struct ctx_info *ctxi = NULL; + struct lun_access *lun_access = NULL; + int rc = 0; + u32 perms; + int ctxid = -1; + u64 rctxid = 0UL; + struct file *file; + + struct cxl_context *ctx; + + int fd = -1; + + if (attach->num_interrupts > 4) { + dev_dbg(dev, "%s: Cannot support this many interrupts %llu\n", + __func__, attach->num_interrupts); + rc = -EINVAL; + goto out; + } + + if (gli->max_lba == 0) { + dev_dbg(dev, "%s: No capacity info for this LUN (%016llX)\n", + __func__, lli->lun_id[sdev->channel]); + rc = read_cap16(sdev, lli); + if (rc) { + dev_err(dev, "%s: Invalid device! (%d)\n", + __func__, rc); + rc = -ENODEV; + goto out; + } + dev_dbg(dev, "%s: LBA = %016llX\n", __func__, gli->max_lba); + dev_dbg(dev, "%s: BLK_LEN = %08X\n", __func__, gli->blk_len); + } + + if (attach->hdr.flags & DK_CXLFLASH_ATTACH_REUSE_CONTEXT) { + rctxid = attach->context_id; + ctxi = get_context(cfg, rctxid, NULL, 0); + if (!ctxi) { + dev_dbg(dev, "%s: Bad context! (%016llX)\n", + __func__, rctxid); + rc = -EINVAL; + goto out; + } + + list_for_each_entry(lun_access, &ctxi->luns, list) + if (lun_access->lli == lli) { + dev_dbg(dev, "%s: Already attached!\n", + __func__); + rc = -EINVAL; + goto out; + } + } + + rc = scsi_device_get(sdev); + if (unlikely(rc)) { + dev_err(dev, "%s: Unable to get sdev reference!\n", __func__); + goto out; + } + + lun_access = kzalloc(sizeof(*lun_access), GFP_KERNEL); + if (unlikely(!lun_access)) { + dev_err(dev, "%s: Unable to allocate lun_access!\n", __func__); + rc = -ENOMEM; + goto err0; + } + + lun_access->lli = lli; + lun_access->sdev = sdev; + + /* Non-NULL context indicates reuse */ + if (ctxi) { + dev_dbg(dev, "%s: Reusing context for LUN! (%016llX)\n", + __func__, rctxid); + list_add(&lun_access->list, &ctxi->luns); + fd = ctxi->lfd; + goto out_attach; + } + + ctx = cxl_dev_context_init(cfg->dev); + if (unlikely(IS_ERR_OR_NULL(ctx))) { + dev_err(dev, "%s: Could not initialize context %p\n", + __func__, ctx); + rc = -ENODEV; + goto err1; + } + + ctxid = cxl_process_element(ctx); + if (unlikely((ctxid >= MAX_CONTEXT) || (ctxid < 0))) { + dev_err(dev, "%s: ctxid (%d) invalid!\n", __func__, ctxid); + rc = -EPERM; + goto err2; + } + + file = cxl_get_fd(ctx, &cfg->cxl_fops, &fd); + if (unlikely(fd < 0)) { + rc = -ENODEV; + dev_err(dev, "%s: Could not get file descriptor\n", __func__); + goto err2; + } + + /* Translate read/write O_* flags from fcntl.h to AFU permission bits */ + perms = SISL_RHT_PERM(attach->hdr.flags + 1); + + ctxi = create_context(cfg, ctx, ctxid, fd, file, perms); + if (unlikely(!ctxi)) { + dev_err(dev, "%s: Failed to create context! (%d)\n", + __func__, ctxid); + goto err3; + } + + work = &ctxi->work; + work->num_interrupts = attach->num_interrupts; + work->flags = CXL_START_WORK_NUM_IRQS; + + rc = cxl_start_work(ctx, work); + if (unlikely(rc)) { + dev_dbg(dev, "%s: Could not start context rc=%d\n", + __func__, rc); + goto err4; + } + + rc = afu_attach(cfg, ctxi); + if (unlikely(rc)) { + dev_err(dev, "%s: Could not attach AFU rc %d\n", __func__, rc); + goto err5; + } + + /* + * No error paths after this point. Once the fd is installed it's + * visible to user space and can't be undone safely on this thread. + * There is no need to worry about a deadlock here because no one + * knows about us yet; we can be the only one holding our mutex. + */ + list_add(&lun_access->list, &ctxi->luns); + mutex_unlock(&ctxi->mutex); + mutex_lock(&cfg->ctx_tbl_list_mutex); + mutex_lock(&ctxi->mutex); + cfg->ctx_tbl[ctxid] = ctxi; + mutex_unlock(&cfg->ctx_tbl_list_mutex); + fd_install(fd, file); + +out_attach: + attach->hdr.return_flags = 0; + attach->context_id = ctxi->ctxid; + attach->block_size = gli->blk_len; + attach->mmio_size = sizeof(afu->afu_map->hosts[0].harea); + attach->last_lba = gli->max_lba; + attach->max_xfer = sdev->host->max_sectors * MAX_SECTOR_UNIT; + attach->max_xfer /= gli->blk_len; + +out: + attach->adap_fd = fd; + + if (ctxi) + put_context(ctxi); + + dev_dbg(dev, "%s: returning ctxid=%d fd=%d bs=%lld rc=%d llba=%lld\n", + __func__, ctxid, fd, attach->block_size, rc, attach->last_lba); + return rc; + +err5: + cxl_stop_context(ctx); +err4: + put_context(ctxi); + destroy_context(cfg, ctxi); + ctxi = NULL; +err3: + /* + * Here, we're overriding the fops with a dummy all-NULL fops because + * fput() calls the release fop, which will cause us to mistakenly + * call into the CXL code. Rather than try to add yet more complexity + * to that routine (cxlflash_cxl_release) we should try to fix the + * issue here. + */ + file->f_op = &null_fops; + fput(file); + put_unused_fd(fd); + fd = -1; +err2: + cxl_release_context(ctx); +err1: + kfree(lun_access); +err0: + scsi_device_put(sdev); + goto out; +} + +/** + * recover_context() - recovers a context in error + * @cfg: Internal structure associated with the host. + * @ctxi: Context to release. + * + * Restablishes the state for a context-in-error. + * + * Return: 0 on success, -errno on failure + */ +static int recover_context(struct cxlflash_cfg *cfg, struct ctx_info *ctxi) +{ + struct device *dev = &cfg->dev->dev; + int rc = 0; + int old_fd, fd = -1; + int ctxid = -1; + struct file *file; + struct cxl_context *ctx; + struct afu *afu = cfg->afu; + + ctx = cxl_dev_context_init(cfg->dev); + if (unlikely(IS_ERR_OR_NULL(ctx))) { + dev_err(dev, "%s: Could not initialize context %p\n", + __func__, ctx); + rc = -ENODEV; + goto out; + } + + ctxid = cxl_process_element(ctx); + if (unlikely((ctxid >= MAX_CONTEXT) || (ctxid < 0))) { + dev_err(dev, "%s: ctxid (%d) invalid!\n", __func__, ctxid); + rc = -EPERM; + goto err1; + } + + file = cxl_get_fd(ctx, &cfg->cxl_fops, &fd); + if (unlikely(fd < 0)) { + rc = -ENODEV; + dev_err(dev, "%s: Could not get file descriptor\n", __func__); + goto err1; + } + + rc = cxl_start_work(ctx, &ctxi->work); + if (unlikely(rc)) { + dev_dbg(dev, "%s: Could not start context rc=%d\n", + __func__, rc); + goto err2; + } + + /* Update with new MMIO area based on updated context id */ + ctxi->ctrl_map = &afu->afu_map->ctrls[ctxid].ctrl; + + rc = afu_attach(cfg, ctxi); + if (rc) { + dev_err(dev, "%s: Could not attach AFU rc %d\n", __func__, rc); + goto err3; + } + + /* + * No error paths after this point. Once the fd is installed it's + * visible to user space and can't be undone safely on this thread. + */ + old_fd = ctxi->lfd; + ctxi->ctxid = ENCODE_CTXID(ctxi, ctxid); + ctxi->lfd = fd; + ctxi->ctx = ctx; + ctxi->file = file; + + /* + * Put context back in table (note the reinit of the context list); + * we must first drop the context's mutex and then acquire it in + * order with the table/list mutex to avoid a deadlock - safe to do + * here because no one can find us at this moment in time. + */ + mutex_unlock(&ctxi->mutex); + mutex_lock(&cfg->ctx_tbl_list_mutex); + mutex_lock(&ctxi->mutex); + list_del_init(&ctxi->list); + cfg->ctx_tbl[ctxid] = ctxi; + mutex_unlock(&cfg->ctx_tbl_list_mutex); + fd_install(fd, file); + + /* Release the original adapter fd and associated CXL resources */ + sys_close(old_fd); +out: + dev_dbg(dev, "%s: returning ctxid=%d fd=%d rc=%d\n", + __func__, ctxid, fd, rc); + return rc; + +err3: + cxl_stop_context(ctx); +err2: + fput(file); + put_unused_fd(fd); +err1: + cxl_release_context(ctx); + goto out; +} + +/** + * cxlflash_afu_recover() - initiates AFU recovery + * @sdev: SCSI device associated with LUN. + * @recover: Recover ioctl data structure. + * + * Only a single recovery is allowed at a time to avoid exhausting CXL + * resources (leading to recovery failure) in the event that we're up + * against the maximum number of contexts limit. For similar reasons, + * a context recovery is retried if there are multiple recoveries taking + * place at the same time and the failure was due to CXL services being + * unable to keep up. + * + * Because a user can detect an error condition before the kernel, it is + * quite possible for this routine to act as the kernel's EEH detection + * source (MMIO read of mbox_r). Because of this, there is a window of + * time where an EEH might have been detected but not yet 'serviced' + * (callback invoked, causing the device to enter reset state). To avoid + * looping in this routine during that window, a 1 second sleep is in place + * between the time the MMIO failure is detected and the time a wait on the + * reset wait queue is attempted via check_state(). + * + * Return: 0 on success, -errno on failure + */ +static int cxlflash_afu_recover(struct scsi_device *sdev, + struct dk_cxlflash_recover_afu *recover) +{ + struct cxlflash_cfg *cfg = (struct cxlflash_cfg *)sdev->host->hostdata; + struct device *dev = &cfg->dev->dev; + struct llun_info *lli = sdev->hostdata; + struct afu *afu = cfg->afu; + struct ctx_info *ctxi = NULL; + struct mutex *mutex = &cfg->ctx_recovery_mutex; + u64 ctxid = DECODE_CTXID(recover->context_id), + rctxid = recover->context_id; + long reg; + int lretry = 20; /* up to 2 seconds */ + int rc = 0; + + atomic_inc(&cfg->recovery_threads); + rc = mutex_lock_interruptible(mutex); + if (rc) + goto out; + + dev_dbg(dev, "%s: reason 0x%016llX rctxid=%016llX\n", + __func__, recover->reason, rctxid); + +retry: + /* Ensure that this process is attached to the context */ + ctxi = get_context(cfg, rctxid, lli, CTX_CTRL_ERR_FALLBACK); + if (unlikely(!ctxi)) { + dev_dbg(dev, "%s: Bad context! (%llu)\n", __func__, ctxid); + rc = -EINVAL; + goto out; + } + + if (ctxi->err_recovery_active) { +retry_recover: + rc = recover_context(cfg, ctxi); + if (unlikely(rc)) { + dev_err(dev, "%s: Recovery failed for context %llu (rc=%d)\n", + __func__, ctxid, rc); + if ((rc == -ENODEV) && + ((atomic_read(&cfg->recovery_threads) > 1) || + (lretry--))) { + dev_dbg(dev, "%s: Going to try again!\n", + __func__); + mutex_unlock(mutex); + msleep(100); + rc = mutex_lock_interruptible(mutex); + if (rc) + goto out; + goto retry_recover; + } + + goto out; + } + + ctxi->err_recovery_active = false; + recover->context_id = ctxi->ctxid; + recover->adap_fd = ctxi->lfd; + recover->mmio_size = sizeof(afu->afu_map->hosts[0].harea); + recover->hdr.return_flags |= + DK_CXLFLASH_RECOVER_AFU_CONTEXT_RESET; + goto out; + } + + /* Test if in error state */ + reg = readq_be(&afu->ctrl_map->mbox_r); + if (reg == -1) { + dev_dbg(dev, "%s: MMIO fail, wait for recovery.\n", __func__); + + /* + * Before checking the state, put back the context obtained with + * get_context() as it is no longer needed and sleep for a short + * period of time (see prolog notes). + */ + put_context(ctxi); + ctxi = NULL; + ssleep(1); + rc = check_state(cfg); + if (unlikely(rc)) + goto out; + goto retry; + } + + dev_dbg(dev, "%s: MMIO working, no recovery required!\n", __func__); +out: + if (likely(ctxi)) + put_context(ctxi); + mutex_unlock(mutex); + atomic_dec_if_positive(&cfg->recovery_threads); + return rc; +} + +/** + * process_sense() - evaluates and processes sense data + * @sdev: SCSI device associated with LUN. + * @verify: Verify ioctl data structure. + * + * Return: 0 on success, -errno on failure + */ +static int process_sense(struct scsi_device *sdev, + struct dk_cxlflash_verify *verify) +{ + struct cxlflash_cfg *cfg = (struct cxlflash_cfg *)sdev->host->hostdata; + struct device *dev = &cfg->dev->dev; + struct llun_info *lli = sdev->hostdata; + struct glun_info *gli = lli->parent; + u64 prev_lba = gli->max_lba; + struct scsi_sense_hdr sshdr = { 0 }; + int rc = 0; + + rc = scsi_normalize_sense((const u8 *)&verify->sense_data, + DK_CXLFLASH_VERIFY_SENSE_LEN, &sshdr); + if (!rc) { + dev_err(dev, "%s: Failed to normalize sense data!\n", __func__); + rc = -EINVAL; + goto out; + } + + switch (sshdr.sense_key) { + case NO_SENSE: + case RECOVERED_ERROR: + /* fall through */ + case NOT_READY: + break; + case UNIT_ATTENTION: + switch (sshdr.asc) { + case 0x29: /* Power on Reset or Device Reset */ + /* fall through */ + case 0x2A: /* Device settings/capacity changed */ + rc = read_cap16(sdev, lli); + if (rc) { + rc = -ENODEV; + break; + } + if (prev_lba != gli->max_lba) + dev_dbg(dev, "%s: Capacity changed old=%lld " + "new=%lld\n", __func__, prev_lba, + gli->max_lba); + break; + case 0x3F: /* Report LUNs changed, Rescan. */ + scsi_scan_host(cfg->host); + break; + default: + rc = -EIO; + break; + } + break; + default: + rc = -EIO; + break; + } +out: + dev_dbg(dev, "%s: sense_key %x asc %x ascq %x rc %d\n", __func__, + sshdr.sense_key, sshdr.asc, sshdr.ascq, rc); + return rc; +} + +/** + * cxlflash_disk_verify() - verifies a LUN is the same and handle size changes + * @sdev: SCSI device associated with LUN. + * @verify: Verify ioctl data structure. + * + * Return: 0 on success, -errno on failure + */ +static int cxlflash_disk_verify(struct scsi_device *sdev, + struct dk_cxlflash_verify *verify) +{ + int rc = 0; + struct ctx_info *ctxi = NULL; + struct cxlflash_cfg *cfg = (struct cxlflash_cfg *)sdev->host->hostdata; + struct device *dev = &cfg->dev->dev; + struct llun_info *lli = sdev->hostdata; + struct glun_info *gli = lli->parent; + struct sisl_rht_entry *rhte = NULL; + res_hndl_t rhndl = verify->rsrc_handle; + u64 ctxid = DECODE_CTXID(verify->context_id), + rctxid = verify->context_id; + u64 last_lba = 0; + + dev_dbg(dev, "%s: ctxid=%llu rhndl=%016llX, hint=%016llX, " + "flags=%016llX\n", __func__, ctxid, verify->rsrc_handle, + verify->hint, verify->hdr.flags); + + ctxi = get_context(cfg, rctxid, lli, 0); + if (unlikely(!ctxi)) { + dev_dbg(dev, "%s: Bad context! (%llu)\n", __func__, ctxid); + rc = -EINVAL; + goto out; + } + + rhte = get_rhte(ctxi, rhndl, lli); + if (unlikely(!rhte)) { + dev_dbg(dev, "%s: Bad resource handle! (%d)\n", + __func__, rhndl); + rc = -EINVAL; + goto out; + } + + /* + * Look at the hint/sense to see if it requires us to redrive + * inquiry (i.e. the Unit attention is due to the WWN changing). + */ + if (verify->hint & DK_CXLFLASH_VERIFY_HINT_SENSE) { + /* Can't hold mutex across process_sense/read_cap16, + * since we could have an intervening EEH event. + */ + ctxi->unavail = true; + mutex_unlock(&ctxi->mutex); + rc = process_sense(sdev, verify); + if (unlikely(rc)) { + dev_err(dev, "%s: Failed to validate sense data (%d)\n", + __func__, rc); + mutex_lock(&ctxi->mutex); + ctxi->unavail = false; + goto out; + } + mutex_lock(&ctxi->mutex); + ctxi->unavail = false; + } + + switch (gli->mode) { + case MODE_PHYSICAL: + last_lba = gli->max_lba; + break; + case MODE_VIRTUAL: + /* Cast lxt_cnt to u64 for multiply to be treated as 64bit op */ + last_lba = ((u64)rhte->lxt_cnt * MC_CHUNK_SIZE * gli->blk_len); + last_lba /= CXLFLASH_BLOCK_SIZE; + last_lba--; + break; + default: + WARN(1, "Unsupported LUN mode!"); + } + + verify->last_lba = last_lba; + +out: + if (likely(ctxi)) + put_context(ctxi); + dev_dbg(dev, "%s: returning rc=%d llba=%llX\n", + __func__, rc, verify->last_lba); + return rc; +} + +/** + * decode_ioctl() - translates an encoded ioctl to an easily identifiable string + * @cmd: The ioctl command to decode. + * + * Return: A string identifying the decoded ioctl. + */ +static char *decode_ioctl(int cmd) +{ + switch (cmd) { + case DK_CXLFLASH_ATTACH: + return __stringify_1(DK_CXLFLASH_ATTACH); + case DK_CXLFLASH_USER_DIRECT: + return __stringify_1(DK_CXLFLASH_USER_DIRECT); + case DK_CXLFLASH_USER_VIRTUAL: + return __stringify_1(DK_CXLFLASH_USER_VIRTUAL); + case DK_CXLFLASH_VLUN_RESIZE: + return __stringify_1(DK_CXLFLASH_VLUN_RESIZE); + case DK_CXLFLASH_RELEASE: + return __stringify_1(DK_CXLFLASH_RELEASE); + case DK_CXLFLASH_DETACH: + return __stringify_1(DK_CXLFLASH_DETACH); + case DK_CXLFLASH_VERIFY: + return __stringify_1(DK_CXLFLASH_VERIFY); + case DK_CXLFLASH_VLUN_CLONE: + return __stringify_1(DK_CXLFLASH_VLUN_CLONE); + case DK_CXLFLASH_RECOVER_AFU: + return __stringify_1(DK_CXLFLASH_RECOVER_AFU); + case DK_CXLFLASH_MANAGE_LUN: + return __stringify_1(DK_CXLFLASH_MANAGE_LUN); + } + + return "UNKNOWN"; +} + +/** + * cxlflash_disk_direct_open() - opens a direct (physical) disk + * @sdev: SCSI device associated with LUN. + * @arg: UDirect ioctl data structure. + * + * On successful return, the user is informed of the resource handle + * to be used to identify the direct lun and the size (in blocks) of + * the direct lun in last LBA format. + * + * Return: 0 on success, -errno on failure + */ +static int cxlflash_disk_direct_open(struct scsi_device *sdev, void *arg) +{ + struct cxlflash_cfg *cfg = (struct cxlflash_cfg *)sdev->host->hostdata; + struct device *dev = &cfg->dev->dev; + struct afu *afu = cfg->afu; + struct llun_info *lli = sdev->hostdata; + struct glun_info *gli = lli->parent; + + struct dk_cxlflash_udirect *pphys = (struct dk_cxlflash_udirect *)arg; + + u64 ctxid = DECODE_CTXID(pphys->context_id), + rctxid = pphys->context_id; + u64 lun_size = 0; + u64 last_lba = 0; + u64 rsrc_handle = -1; + u32 port = CHAN2PORT(sdev->channel); + + int rc = 0; + + struct ctx_info *ctxi = NULL; + struct sisl_rht_entry *rhte = NULL; + + pr_debug("%s: ctxid=%llu ls=0x%llx\n", __func__, ctxid, lun_size); + + rc = cxlflash_lun_attach(gli, MODE_PHYSICAL, false); + if (unlikely(rc)) { + dev_dbg(dev, "%s: Failed to attach to LUN! (PHYSICAL)\n", + __func__); + goto out; + } + + ctxi = get_context(cfg, rctxid, lli, 0); + if (unlikely(!ctxi)) { + dev_dbg(dev, "%s: Bad context! (%llu)\n", __func__, ctxid); + rc = -EINVAL; + goto err1; + } + + rhte = rhte_checkout(ctxi, lli); + if (unlikely(!rhte)) { + dev_dbg(dev, "%s: too many opens for this context\n", __func__); + rc = -EMFILE; /* too many opens */ + goto err1; + } + + rsrc_handle = (rhte - ctxi->rht_start); + + rht_format1(rhte, lli->lun_id[sdev->channel], ctxi->rht_perms, port); + cxlflash_afu_sync(afu, ctxid, rsrc_handle, AFU_LW_SYNC); + + last_lba = gli->max_lba; + pphys->hdr.return_flags = 0; + pphys->last_lba = last_lba; + pphys->rsrc_handle = rsrc_handle; + +out: + if (likely(ctxi)) + put_context(ctxi); + dev_dbg(dev, "%s: returning handle 0x%llx rc=%d llba %lld\n", + __func__, rsrc_handle, rc, last_lba); + return rc; + +err1: + cxlflash_lun_detach(gli); + goto out; +} + +/** + * ioctl_common() - common IOCTL handler for driver + * @sdev: SCSI device associated with LUN. + * @cmd: IOCTL command. + * + * Handles common fencing operations that are valid for multiple ioctls. Always + * allow through ioctls that are cleanup oriented in nature, even when operating + * in a failed/terminating state. + * + * Return: 0 on success, -errno on failure + */ +static int ioctl_common(struct scsi_device *sdev, int cmd) +{ + struct cxlflash_cfg *cfg = (struct cxlflash_cfg *)sdev->host->hostdata; + struct device *dev = &cfg->dev->dev; + struct llun_info *lli = sdev->hostdata; + int rc = 0; + + if (unlikely(!lli)) { + dev_dbg(dev, "%s: Unknown LUN\n", __func__); + rc = -EINVAL; + goto out; + } + + rc = check_state(cfg); + if (unlikely(rc) && (cfg->state == STATE_FAILTERM)) { + switch (cmd) { + case DK_CXLFLASH_VLUN_RESIZE: + case DK_CXLFLASH_RELEASE: + case DK_CXLFLASH_DETACH: + dev_dbg(dev, "%s: Command override! (%d)\n", + __func__, rc); + rc = 0; + break; + } + } +out: + return rc; +} + +/** + * cxlflash_ioctl() - IOCTL handler for driver + * @sdev: SCSI device associated with LUN. + * @cmd: IOCTL command. + * @arg: Userspace ioctl data structure. + * + * A read/write semaphore is used to implement a 'drain' of currently + * running ioctls. The read semaphore is taken at the beginning of each + * ioctl thread and released upon concluding execution. Additionally the + * semaphore should be released and then reacquired in any ioctl execution + * path which will wait for an event to occur that is outside the scope of + * the ioctl (i.e. an adapter reset). To drain the ioctls currently running, + * a thread simply needs to acquire the write semaphore. + * + * Return: 0 on success, -errno on failure + */ +int cxlflash_ioctl(struct scsi_device *sdev, int cmd, void __user *arg) +{ + typedef int (*sioctl) (struct scsi_device *, void *); + + struct cxlflash_cfg *cfg = (struct cxlflash_cfg *)sdev->host->hostdata; + struct device *dev = &cfg->dev->dev; + struct afu *afu = cfg->afu; + struct dk_cxlflash_hdr *hdr; + char buf[sizeof(union cxlflash_ioctls)]; + size_t size = 0; + bool known_ioctl = false; + int idx; + int rc = 0; + struct Scsi_Host *shost = sdev->host; + sioctl do_ioctl = NULL; + + static const struct { + size_t size; + sioctl ioctl; + } ioctl_tbl[] = { /* NOTE: order matters here */ + {sizeof(struct dk_cxlflash_attach), (sioctl)cxlflash_disk_attach}, + {sizeof(struct dk_cxlflash_udirect), cxlflash_disk_direct_open}, + {sizeof(struct dk_cxlflash_release), (sioctl)cxlflash_disk_release}, + {sizeof(struct dk_cxlflash_detach), (sioctl)cxlflash_disk_detach}, + {sizeof(struct dk_cxlflash_verify), (sioctl)cxlflash_disk_verify}, + {sizeof(struct dk_cxlflash_recover_afu), (sioctl)cxlflash_afu_recover}, + {sizeof(struct dk_cxlflash_manage_lun), (sioctl)cxlflash_manage_lun}, + {sizeof(struct dk_cxlflash_uvirtual), cxlflash_disk_virtual_open}, + {sizeof(struct dk_cxlflash_resize), (sioctl)cxlflash_vlun_resize}, + {sizeof(struct dk_cxlflash_clone), (sioctl)cxlflash_disk_clone}, + }; + + /* Hold read semaphore so we can drain if needed */ + down_read(&cfg->ioctl_rwsem); + + /* Restrict command set to physical support only for internal LUN */ + if (afu->internal_lun) + switch (cmd) { + case DK_CXLFLASH_RELEASE: + case DK_CXLFLASH_USER_VIRTUAL: + case DK_CXLFLASH_VLUN_RESIZE: + case DK_CXLFLASH_VLUN_CLONE: + dev_dbg(dev, "%s: %s not supported for lun_mode=%d\n", + __func__, decode_ioctl(cmd), afu->internal_lun); + rc = -EINVAL; + goto cxlflash_ioctl_exit; + } + + switch (cmd) { + case DK_CXLFLASH_ATTACH: + case DK_CXLFLASH_USER_DIRECT: + case DK_CXLFLASH_RELEASE: + case DK_CXLFLASH_DETACH: + case DK_CXLFLASH_VERIFY: + case DK_CXLFLASH_RECOVER_AFU: + case DK_CXLFLASH_USER_VIRTUAL: + case DK_CXLFLASH_VLUN_RESIZE: + case DK_CXLFLASH_VLUN_CLONE: + dev_dbg(dev, "%s: %s (%08X) on dev(%d/%d/%d/%llu)\n", + __func__, decode_ioctl(cmd), cmd, shost->host_no, + sdev->channel, sdev->id, sdev->lun); + rc = ioctl_common(sdev, cmd); + if (unlikely(rc)) + goto cxlflash_ioctl_exit; + + /* fall through */ + + case DK_CXLFLASH_MANAGE_LUN: + known_ioctl = true; + idx = _IOC_NR(cmd) - _IOC_NR(DK_CXLFLASH_ATTACH); + size = ioctl_tbl[idx].size; + do_ioctl = ioctl_tbl[idx].ioctl; + + if (likely(do_ioctl)) + break; + + /* fall through */ + default: + rc = -EINVAL; + goto cxlflash_ioctl_exit; + } + + if (unlikely(copy_from_user(&buf, arg, size))) { + dev_err(dev, "%s: copy_from_user() fail! " + "size=%lu cmd=%d (%s) arg=%p\n", + __func__, size, cmd, decode_ioctl(cmd), arg); + rc = -EFAULT; + goto cxlflash_ioctl_exit; + } + + hdr = (struct dk_cxlflash_hdr *)&buf; + if (hdr->version != DK_CXLFLASH_VERSION_0) { + dev_dbg(dev, "%s: Version %u not supported for %s\n", + __func__, hdr->version, decode_ioctl(cmd)); + rc = -EINVAL; + goto cxlflash_ioctl_exit; + } + + if (hdr->rsvd[0] || hdr->rsvd[1] || hdr->rsvd[2] || hdr->return_flags) { + dev_dbg(dev, "%s: Reserved/rflags populated!\n", __func__); + rc = -EINVAL; + goto cxlflash_ioctl_exit; + } + + rc = do_ioctl(sdev, (void *)&buf); + if (likely(!rc)) + if (unlikely(copy_to_user(arg, &buf, size))) { + dev_err(dev, "%s: copy_to_user() fail! " + "size=%lu cmd=%d (%s) arg=%p\n", + __func__, size, cmd, decode_ioctl(cmd), arg); + rc = -EFAULT; + } + + /* fall through to exit */ + +cxlflash_ioctl_exit: + up_read(&cfg->ioctl_rwsem); + if (unlikely(rc && known_ioctl)) + dev_err(dev, "%s: ioctl %s (%08X) on dev(%d/%d/%d/%llu) " + "returned rc %d\n", __func__, + decode_ioctl(cmd), cmd, shost->host_no, + sdev->channel, sdev->id, sdev->lun, rc); + else + dev_dbg(dev, "%s: ioctl %s (%08X) on dev(%d/%d/%d/%llu) " + "returned rc %d\n", __func__, decode_ioctl(cmd), + cmd, shost->host_no, sdev->channel, sdev->id, + sdev->lun, rc); + return rc; +} --- linux-raspi2-4.2.0.orig/drivers/scsi/cxlflash/superpipe.h +++ linux-raspi2-4.2.0/drivers/scsi/cxlflash/superpipe.h @@ -0,0 +1,151 @@ +/* + * CXL Flash Device Driver + * + * Written by: Manoj N. Kumar , IBM Corporation + * Matthew R. Ochs , IBM Corporation + * + * Copyright (C) 2015 IBM Corporation + * + * 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. + */ + +#ifndef _CXLFLASH_SUPERPIPE_H +#define _CXLFLASH_SUPERPIPE_H + +extern struct cxlflash_global global; + +/* + * Terminology: use afu (and not adapter) to refer to the HW. + * Adapter is the entire slot and includes PSL out of which + * only the AFU is visible to user space. + */ + +/* Chunk size parms: note sislite minimum chunk size is + 0x10000 LBAs corresponding to a NMASK or 16. +*/ +#define MC_CHUNK_SIZE (1 << MC_RHT_NMASK) /* in LBAs */ + +#define CMD_TIMEOUT 30 /* 30 secs */ +#define CMD_RETRIES 5 /* 5 retries for scsi_execute */ + +#define MAX_SECTOR_UNIT 512 /* max_sector is in 512 byte multiples */ + +#define CHAN2PORT(_x) ((_x) + 1) +#define PORT2CHAN(_x) ((_x) - 1) + +enum lun_mode { + MODE_NONE = 0, + MODE_VIRTUAL, + MODE_PHYSICAL +}; + +/* Global (entire driver, spans adapters) lun_info structure */ +struct glun_info { + u64 max_lba; /* from read cap(16) */ + u32 blk_len; /* from read cap(16) */ + enum lun_mode mode; /* NONE, VIRTUAL, PHYSICAL */ + int users; /* Number of users w/ references to LUN */ + + u8 wwid[16]; + + struct mutex mutex; + + struct blka blka; + struct list_head list; +}; + +/* Local (per-adapter) lun_info structure */ +struct llun_info { + u64 lun_id[CXLFLASH_NUM_FC_PORTS]; /* from REPORT_LUNS */ + u32 lun_index; /* Index in the LUN table */ + u32 host_no; /* host_no from Scsi_host */ + u32 port_sel; /* What port to use for this LUN */ + bool in_table; /* Whether a LUN table entry was created */ + + u8 wwid[16]; /* Keep a duplicate copy here? */ + + struct glun_info *parent; /* Pointer to entry in global LUN structure */ + struct scsi_device *sdev; + struct list_head list; +}; + +struct lun_access { + struct llun_info *lli; + struct scsi_device *sdev; + struct list_head list; +}; + +enum ctx_ctrl { + CTX_CTRL_CLONE = (1 << 1), + CTX_CTRL_ERR = (1 << 2), + CTX_CTRL_ERR_FALLBACK = (1 << 3), + CTX_CTRL_NOPID = (1 << 4), + CTX_CTRL_FILE = (1 << 5) +}; + +#define ENCODE_CTXID(_ctx, _id) (((((u64)_ctx) & 0xFFFFFFFF0ULL) << 28) | _id) +#define DECODE_CTXID(_val) (_val & 0xFFFFFFFF) + +struct ctx_info { + struct sisl_ctrl_map __iomem *ctrl_map; /* initialized at startup */ + struct sisl_rht_entry *rht_start; /* 1 page (req'd for alignment), + alloc/free on attach/detach */ + u32 rht_out; /* Number of checked out RHT entries */ + u32 rht_perms; /* User-defined permissions for RHT entries */ + struct llun_info **rht_lun; /* Mapping of RHT entries to LUNs */ + u8 *rht_needs_ws; /* User-desired write-same function per RHTE */ + + struct cxl_ioctl_start_work work; + u64 ctxid; + int lfd; + pid_t pid; + bool unavail; + bool err_recovery_active; + struct mutex mutex; /* Context protection */ + struct cxl_context *ctx; + struct list_head luns; /* LUNs attached to this context */ + const struct vm_operations_struct *cxl_mmap_vmops; + struct file *file; + struct list_head list; /* Link contexts in error recovery */ +}; + +struct cxlflash_global { + struct mutex mutex; + struct list_head gluns;/* list of glun_info structs */ + struct page *err_page; /* One page of all 0xF for error notification */ +}; + +int cxlflash_vlun_resize(struct scsi_device *, struct dk_cxlflash_resize *); +int _cxlflash_vlun_resize(struct scsi_device *, struct ctx_info *, + struct dk_cxlflash_resize *); + +int cxlflash_disk_release(struct scsi_device *, struct dk_cxlflash_release *); +int _cxlflash_disk_release(struct scsi_device *, struct ctx_info *, + struct dk_cxlflash_release *); + +int cxlflash_disk_clone(struct scsi_device *, struct dk_cxlflash_clone *); + +int cxlflash_disk_virtual_open(struct scsi_device *, void *); + +int cxlflash_lun_attach(struct glun_info *, enum lun_mode, bool); +void cxlflash_lun_detach(struct glun_info *); + +struct ctx_info *get_context(struct cxlflash_cfg *, u64, void *, enum ctx_ctrl); +void put_context(struct ctx_info *); + +struct sisl_rht_entry *get_rhte(struct ctx_info *, res_hndl_t, + struct llun_info *); + +struct sisl_rht_entry *rhte_checkout(struct ctx_info *, struct llun_info *); +void rhte_checkin(struct ctx_info *, struct sisl_rht_entry *); + +void cxlflash_ba_terminate(struct ba_lun *); + +int cxlflash_manage_lun(struct scsi_device *, struct dk_cxlflash_manage_lun *); + +int check_state(struct cxlflash_cfg *); + +#endif /* ifndef _CXLFLASH_SUPERPIPE_H */ --- linux-raspi2-4.2.0.orig/drivers/scsi/cxlflash/vlun.c +++ linux-raspi2-4.2.0/drivers/scsi/cxlflash/vlun.c @@ -0,0 +1,1275 @@ +/* + * CXL Flash Device Driver + * + * Written by: Manoj N. Kumar , IBM Corporation + * Matthew R. Ochs , IBM Corporation + * + * Copyright (C) 2015 IBM Corporation + * + * 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. + */ + +#include +#include +#include +#include + +#include +#include +#include + +#include "sislite.h" +#include "common.h" +#include "vlun.h" +#include "superpipe.h" + +/** + * marshal_virt_to_resize() - translate uvirtual to resize structure + * @virt: Source structure from which to translate/copy. + * @resize: Destination structure for the translate/copy. + */ +static void marshal_virt_to_resize(struct dk_cxlflash_uvirtual *virt, + struct dk_cxlflash_resize *resize) +{ + resize->hdr = virt->hdr; + resize->context_id = virt->context_id; + resize->rsrc_handle = virt->rsrc_handle; + resize->req_size = virt->lun_size; + resize->last_lba = virt->last_lba; +} + +/** + * marshal_clone_to_rele() - translate clone to release structure + * @clone: Source structure from which to translate/copy. + * @rele: Destination structure for the translate/copy. + */ +static void marshal_clone_to_rele(struct dk_cxlflash_clone *clone, + struct dk_cxlflash_release *release) +{ + release->hdr = clone->hdr; + release->context_id = clone->context_id_dst; +} + +/** + * ba_init() - initializes a block allocator + * @ba_lun: Block allocator to initialize. + * + * Return: 0 on success, -errno on failure + */ +static int ba_init(struct ba_lun *ba_lun) +{ + struct ba_lun_info *bali = NULL; + int lun_size_au = 0, i = 0; + int last_word_underflow = 0; + u64 *lam; + + pr_debug("%s: Initializing LUN: lun_id = %llX, " + "ba_lun->lsize = %lX, ba_lun->au_size = %lX\n", + __func__, ba_lun->lun_id, ba_lun->lsize, ba_lun->au_size); + + /* Calculate bit map size */ + lun_size_au = ba_lun->lsize / ba_lun->au_size; + if (lun_size_au == 0) { + pr_debug("%s: Requested LUN size of 0!\n", __func__); + return -EINVAL; + } + + /* Allocate lun information container */ + bali = kzalloc(sizeof(struct ba_lun_info), GFP_KERNEL); + if (unlikely(!bali)) { + pr_err("%s: Failed to allocate lun_info for lun_id %llX\n", + __func__, ba_lun->lun_id); + return -ENOMEM; + } + + bali->total_aus = lun_size_au; + bali->lun_bmap_size = lun_size_au / BITS_PER_LONG; + + if (lun_size_au % BITS_PER_LONG) + bali->lun_bmap_size++; + + /* Allocate bitmap space */ + bali->lun_alloc_map = kzalloc((bali->lun_bmap_size * sizeof(u64)), + GFP_KERNEL); + if (unlikely(!bali->lun_alloc_map)) { + pr_err("%s: Failed to allocate lun allocation map: " + "lun_id = %llX\n", __func__, ba_lun->lun_id); + kfree(bali); + return -ENOMEM; + } + + /* Initialize the bit map size and set all bits to '1' */ + bali->free_aun_cnt = lun_size_au; + + for (i = 0; i < bali->lun_bmap_size; i++) + bali->lun_alloc_map[i] = 0xFFFFFFFFFFFFFFFFULL; + + /* If the last word not fully utilized, mark extra bits as allocated */ + last_word_underflow = (bali->lun_bmap_size * BITS_PER_LONG); + last_word_underflow -= bali->free_aun_cnt; + if (last_word_underflow > 0) { + lam = &bali->lun_alloc_map[bali->lun_bmap_size - 1]; + for (i = (HIBIT - last_word_underflow + 1); + i < BITS_PER_LONG; + i++) + clear_bit(i, (ulong *)lam); + } + + /* Initialize high elevator index, low/curr already at 0 from kzalloc */ + bali->free_high_idx = bali->lun_bmap_size; + + /* Allocate clone map */ + bali->aun_clone_map = kzalloc((bali->total_aus * sizeof(u8)), + GFP_KERNEL); + if (unlikely(!bali->aun_clone_map)) { + pr_err("%s: Failed to allocate clone map: lun_id = %llX\n", + __func__, ba_lun->lun_id); + kfree(bali->lun_alloc_map); + kfree(bali); + return -ENOMEM; + } + + /* Pass the allocated LUN info as a handle to the user */ + ba_lun->ba_lun_handle = bali; + + pr_debug("%s: Successfully initialized the LUN: " + "lun_id = %llX, bitmap size = %X, free_aun_cnt = %llX\n", + __func__, ba_lun->lun_id, bali->lun_bmap_size, + bali->free_aun_cnt); + return 0; +} + +/** + * find_free_range() - locates a free bit within the block allocator + * @low: First word in block allocator to start search. + * @high: Last word in block allocator to search. + * @bali: LUN information structure owning the block allocator to search. + * @bit_word: Passes back the word in the block allocator owning the free bit. + * + * Return: The bit position within the passed back word, -1 on failure + */ +static int find_free_range(u32 low, + u32 high, + struct ba_lun_info *bali, int *bit_word) +{ + int i; + u64 bit_pos = -1; + ulong *lam, num_bits; + + for (i = low; i < high; i++) + if (bali->lun_alloc_map[i] != 0) { + lam = (ulong *)&bali->lun_alloc_map[i]; + num_bits = (sizeof(*lam) * BITS_PER_BYTE); + bit_pos = find_first_bit(lam, num_bits); + + pr_devel("%s: Found free bit %llX in LUN " + "map entry %llX at bitmap index = %X\n", + __func__, bit_pos, bali->lun_alloc_map[i], + i); + + *bit_word = i; + bali->free_aun_cnt--; + clear_bit(bit_pos, lam); + break; + } + + return bit_pos; +} + +/** + * ba_alloc() - allocates a block from the block allocator + * @ba_lun: Block allocator from which to allocate a block. + * + * Return: The allocated block, -1 on failure + */ +static u64 ba_alloc(struct ba_lun *ba_lun) +{ + u64 bit_pos = -1; + int bit_word = 0; + struct ba_lun_info *bali = NULL; + + bali = ba_lun->ba_lun_handle; + + pr_debug("%s: Received block allocation request: " + "lun_id = %llX, free_aun_cnt = %llX\n", + __func__, ba_lun->lun_id, bali->free_aun_cnt); + + if (bali->free_aun_cnt == 0) { + pr_debug("%s: No space left on LUN: lun_id = %llX\n", + __func__, ba_lun->lun_id); + return -1ULL; + } + + /* Search to find a free entry, curr->high then low->curr */ + bit_pos = find_free_range(bali->free_curr_idx, + bali->free_high_idx, bali, &bit_word); + if (bit_pos == -1) { + bit_pos = find_free_range(bali->free_low_idx, + bali->free_curr_idx, + bali, &bit_word); + if (bit_pos == -1) { + pr_debug("%s: Could not find an allocation unit on LUN:" + " lun_id = %llX\n", __func__, ba_lun->lun_id); + return -1ULL; + } + } + + /* Update the free_curr_idx */ + if (bit_pos == HIBIT) + bali->free_curr_idx = bit_word + 1; + else + bali->free_curr_idx = bit_word; + + pr_debug("%s: Allocating AU number %llX, on lun_id %llX, " + "free_aun_cnt = %llX\n", __func__, + ((bit_word * BITS_PER_LONG) + bit_pos), ba_lun->lun_id, + bali->free_aun_cnt); + + return (u64) ((bit_word * BITS_PER_LONG) + bit_pos); +} + +/** + * validate_alloc() - validates the specified block has been allocated + * @ba_lun_info: LUN info owning the block allocator. + * @aun: Block to validate. + * + * Return: 0 on success, -1 on failure + */ +static int validate_alloc(struct ba_lun_info *bali, u64 aun) +{ + int idx = 0, bit_pos = 0; + + idx = aun / BITS_PER_LONG; + bit_pos = aun % BITS_PER_LONG; + + if (test_bit(bit_pos, (ulong *)&bali->lun_alloc_map[idx])) + return -1; + + return 0; +} + +/** + * ba_free() - frees a block from the block allocator + * @ba_lun: Block allocator from which to allocate a block. + * @to_free: Block to free. + * + * Return: 0 on success, -1 on failure + */ +static int ba_free(struct ba_lun *ba_lun, u64 to_free) +{ + int idx = 0, bit_pos = 0; + struct ba_lun_info *bali = NULL; + + bali = ba_lun->ba_lun_handle; + + if (validate_alloc(bali, to_free)) { + pr_debug("%s: The AUN %llX is not allocated on lun_id %llX\n", + __func__, to_free, ba_lun->lun_id); + return -1; + } + + pr_debug("%s: Received a request to free AU %llX on lun_id %llX, " + "free_aun_cnt = %llX\n", __func__, to_free, ba_lun->lun_id, + bali->free_aun_cnt); + + if (bali->aun_clone_map[to_free] > 0) { + pr_debug("%s: AUN %llX on lun_id %llX has been cloned. Clone " + "count = %X\n", __func__, to_free, ba_lun->lun_id, + bali->aun_clone_map[to_free]); + bali->aun_clone_map[to_free]--; + return 0; + } + + idx = to_free / BITS_PER_LONG; + bit_pos = to_free % BITS_PER_LONG; + + set_bit(bit_pos, (ulong *)&bali->lun_alloc_map[idx]); + bali->free_aun_cnt++; + + if (idx < bali->free_low_idx) + bali->free_low_idx = idx; + else if (idx > bali->free_high_idx) + bali->free_high_idx = idx; + + pr_debug("%s: Successfully freed AU at bit_pos %X, bit map index %X on " + "lun_id %llX, free_aun_cnt = %llX\n", __func__, bit_pos, idx, + ba_lun->lun_id, bali->free_aun_cnt); + + return 0; +} + +/** + * ba_clone() - Clone a chunk of the block allocation table + * @ba_lun: Block allocator from which to allocate a block. + * @to_free: Block to free. + * + * Return: 0 on success, -1 on failure + */ +static int ba_clone(struct ba_lun *ba_lun, u64 to_clone) +{ + struct ba_lun_info *bali = ba_lun->ba_lun_handle; + + if (validate_alloc(bali, to_clone)) { + pr_debug("%s: AUN %llX is not allocated on lun_id %llX\n", + __func__, to_clone, ba_lun->lun_id); + return -1; + } + + pr_debug("%s: Received a request to clone AUN %llX on lun_id %llX\n", + __func__, to_clone, ba_lun->lun_id); + + if (bali->aun_clone_map[to_clone] == MAX_AUN_CLONE_CNT) { + pr_debug("%s: AUN %llX on lun_id %llX hit max clones already\n", + __func__, to_clone, ba_lun->lun_id); + return -1; + } + + bali->aun_clone_map[to_clone]++; + + return 0; +} + +/** + * ba_space() - returns the amount of free space left in the block allocator + * @ba_lun: Block allocator. + * + * Return: Amount of free space in block allocator + */ +static u64 ba_space(struct ba_lun *ba_lun) +{ + struct ba_lun_info *bali = ba_lun->ba_lun_handle; + + return bali->free_aun_cnt; +} + +/** + * cxlflash_ba_terminate() - frees resources associated with the block allocator + * @ba_lun: Block allocator. + * + * Safe to call in a partially allocated state. + */ +void cxlflash_ba_terminate(struct ba_lun *ba_lun) +{ + struct ba_lun_info *bali = ba_lun->ba_lun_handle; + + if (bali) { + kfree(bali->aun_clone_map); + kfree(bali->lun_alloc_map); + kfree(bali); + ba_lun->ba_lun_handle = NULL; + } +} + +/** + * init_vlun() - initializes a LUN for virtual use + * @lun_info: LUN information structure that owns the block allocator. + * + * Return: 0 on success, -errno on failure + */ +static int init_vlun(struct llun_info *lli) +{ + int rc = 0; + struct glun_info *gli = lli->parent; + struct blka *blka = &gli->blka; + + memset(blka, 0, sizeof(*blka)); + mutex_init(&blka->mutex); + + /* LUN IDs are unique per port, save the index instead */ + blka->ba_lun.lun_id = lli->lun_index; + blka->ba_lun.lsize = gli->max_lba + 1; + blka->ba_lun.lba_size = gli->blk_len; + + blka->ba_lun.au_size = MC_CHUNK_SIZE; + blka->nchunk = blka->ba_lun.lsize / MC_CHUNK_SIZE; + + rc = ba_init(&blka->ba_lun); + if (unlikely(rc)) + pr_debug("%s: cannot init block_alloc, rc=%d\n", __func__, rc); + + pr_debug("%s: returning rc=%d lli=%p\n", __func__, rc, lli); + return rc; +} + +/** + * write_same16() - sends a SCSI WRITE_SAME16 (0) command to specified LUN + * @sdev: SCSI device associated with LUN. + * @lba: Logical block address to start write same. + * @nblks: Number of logical blocks to write same. + * + * The SCSI WRITE_SAME16 can take quite a while to complete. Should an EEH occur + * while in scsi_execute(), the EEH handler will attempt to recover. As part of + * the recovery, the handler drains all currently running ioctls, waiting until + * they have completed before proceeding with a reset. As this routine is used + * on the ioctl path, this can create a condition where the EEH handler becomes + * stuck, infinitely waiting for this ioctl thread. To avoid this behavior, + * temporarily unmark this thread as an ioctl thread by releasing the ioctl read + * semaphore. This will allow the EEH handler to proceed with a recovery while + * this thread is still running. Once the scsi_execute() returns, reacquire the + * ioctl read semaphore and check the adapter state in case it changed while + * inside of scsi_execute(). The state check will wait if the adapter is still + * being recovered or return a failure if the recovery failed. In the event that + * the adapter reset failed, simply return the failure as the ioctl would be + * unable to continue. + * + * Note that the above puts a requirement on this routine to only be called on + * an ioctl thread. + * + * Return: 0 on success, -errno on failure + */ +static int write_same16(struct scsi_device *sdev, + u64 lba, + u32 nblks) +{ + u8 *cmd_buf = NULL; + u8 *scsi_cmd = NULL; + u8 *sense_buf = NULL; + int rc = 0; + int result = 0; + int ws_limit = SISLITE_MAX_WS_BLOCKS; + u64 offset = lba; + int left = nblks; + u32 to = sdev->request_queue->rq_timeout; + struct cxlflash_cfg *cfg = (struct cxlflash_cfg *)sdev->host->hostdata; + struct device *dev = &cfg->dev->dev; + + cmd_buf = kzalloc(CMD_BUFSIZE, GFP_KERNEL); + scsi_cmd = kzalloc(MAX_COMMAND_SIZE, GFP_KERNEL); + sense_buf = kzalloc(SCSI_SENSE_BUFFERSIZE, GFP_KERNEL); + if (unlikely(!cmd_buf || !scsi_cmd || !sense_buf)) { + rc = -ENOMEM; + goto out; + } + + while (left > 0) { + + scsi_cmd[0] = WRITE_SAME_16; + put_unaligned_be64(offset, &scsi_cmd[2]); + put_unaligned_be32(ws_limit < left ? ws_limit : left, + &scsi_cmd[10]); + + /* Drop the ioctl read semahpore across lengthy call */ + up_read(&cfg->ioctl_rwsem); + result = scsi_execute(sdev, scsi_cmd, DMA_TO_DEVICE, cmd_buf, + CMD_BUFSIZE, sense_buf, to, CMD_RETRIES, + 0, NULL); + down_read(&cfg->ioctl_rwsem); + rc = check_state(cfg); + if (rc) { + dev_err(dev, "%s: Failed state! result=0x08%X\n", + __func__, result); + rc = -ENODEV; + goto out; + } + + if (result) { + dev_err_ratelimited(dev, "%s: command failed for " + "offset %lld result=0x%x\n", + __func__, offset, result); + rc = -EIO; + goto out; + } + left -= ws_limit; + offset += ws_limit; + } + +out: + kfree(cmd_buf); + kfree(scsi_cmd); + kfree(sense_buf); + pr_debug("%s: returning rc=%d\n", __func__, rc); + return rc; +} + +/** + * grow_lxt() - expands the translation table associated with the specified RHTE + * @afu: AFU associated with the host. + * @sdev: SCSI device associated with LUN. + * @ctxid: Context ID of context owning the RHTE. + * @rhndl: Resource handle associated with the RHTE. + * @rhte: Resource handle entry (RHTE). + * @new_size: Number of translation entries associated with RHTE. + * + * By design, this routine employs a 'best attempt' allocation and will + * truncate the requested size down if there is not sufficient space in + * the block allocator to satisfy the request but there does exist some + * amount of space. The user is made aware of this by returning the size + * allocated. + * + * Return: 0 on success, -errno on failure + */ +static int grow_lxt(struct afu *afu, + struct scsi_device *sdev, + ctx_hndl_t ctxid, + res_hndl_t rhndl, + struct sisl_rht_entry *rhte, + u64 *new_size) +{ + struct sisl_lxt_entry *lxt = NULL, *lxt_old = NULL; + struct llun_info *lli = sdev->hostdata; + struct glun_info *gli = lli->parent; + struct blka *blka = &gli->blka; + u32 av_size; + u32 ngrps, ngrps_old; + u64 aun; /* chunk# allocated by block allocator */ + u64 delta = *new_size - rhte->lxt_cnt; + u64 my_new_size; + int i, rc = 0; + + /* + * Check what is available in the block allocator before re-allocating + * LXT array. This is done up front under the mutex which must not be + * released until after allocation is complete. + */ + mutex_lock(&blka->mutex); + av_size = ba_space(&blka->ba_lun); + if (unlikely(av_size <= 0)) { + pr_debug("%s: ba_space error: av_size %d\n", __func__, av_size); + mutex_unlock(&blka->mutex); + rc = -ENOSPC; + goto out; + } + + if (av_size < delta) + delta = av_size; + + lxt_old = rhte->lxt_start; + ngrps_old = LXT_NUM_GROUPS(rhte->lxt_cnt); + ngrps = LXT_NUM_GROUPS(rhte->lxt_cnt + delta); + + if (ngrps != ngrps_old) { + /* reallocate to fit new size */ + lxt = kzalloc((sizeof(*lxt) * LXT_GROUP_SIZE * ngrps), + GFP_KERNEL); + if (unlikely(!lxt)) { + mutex_unlock(&blka->mutex); + rc = -ENOMEM; + goto out; + } + + /* copy over all old entries */ + memcpy(lxt, lxt_old, (sizeof(*lxt) * rhte->lxt_cnt)); + } else + lxt = lxt_old; + + /* nothing can fail from now on */ + my_new_size = rhte->lxt_cnt + delta; + + /* add new entries to the end */ + for (i = rhte->lxt_cnt; i < my_new_size; i++) { + /* + * Due to the earlier check of available space, ba_alloc + * cannot fail here. If it did due to internal error, + * leave a rlba_base of -1u which will likely be a + * invalid LUN (too large). + */ + aun = ba_alloc(&blka->ba_lun); + if ((aun == -1ULL) || (aun >= blka->nchunk)) + pr_debug("%s: ba_alloc error: allocated chunk# %llX, " + "max %llX\n", __func__, aun, blka->nchunk - 1); + + /* select both ports, use r/w perms from RHT */ + lxt[i].rlba_base = ((aun << MC_CHUNK_SHIFT) | + (lli->lun_index << LXT_LUNIDX_SHIFT) | + (RHT_PERM_RW << LXT_PERM_SHIFT | + lli->port_sel)); + } + + mutex_unlock(&blka->mutex); + + /* + * The following sequence is prescribed in the SISlite spec + * for syncing up with the AFU when adding LXT entries. + */ + dma_wmb(); /* Make LXT updates are visible */ + + rhte->lxt_start = lxt; + dma_wmb(); /* Make RHT entry's LXT table update visible */ + + rhte->lxt_cnt = my_new_size; + dma_wmb(); /* Make RHT entry's LXT table size update visible */ + + cxlflash_afu_sync(afu, ctxid, rhndl, AFU_LW_SYNC); + + /* free old lxt if reallocated */ + if (lxt != lxt_old) + kfree(lxt_old); + *new_size = my_new_size; +out: + pr_debug("%s: returning rc=%d\n", __func__, rc); + return rc; +} + +/** + * shrink_lxt() - reduces translation table associated with the specified RHTE + * @afu: AFU associated with the host. + * @sdev: SCSI device associated with LUN. + * @rhndl: Resource handle associated with the RHTE. + * @rhte: Resource handle entry (RHTE). + * @ctxi: Context owning resources. + * @new_size: Number of translation entries associated with RHTE. + * + * Return: 0 on success, -errno on failure + */ +static int shrink_lxt(struct afu *afu, + struct scsi_device *sdev, + res_hndl_t rhndl, + struct sisl_rht_entry *rhte, + struct ctx_info *ctxi, + u64 *new_size) +{ + struct sisl_lxt_entry *lxt, *lxt_old; + struct llun_info *lli = sdev->hostdata; + struct glun_info *gli = lli->parent; + struct blka *blka = &gli->blka; + ctx_hndl_t ctxid = DECODE_CTXID(ctxi->ctxid); + bool needs_ws = ctxi->rht_needs_ws[rhndl]; + bool needs_sync = !ctxi->err_recovery_active; + u32 ngrps, ngrps_old; + u64 aun; /* chunk# allocated by block allocator */ + u64 delta = rhte->lxt_cnt - *new_size; + u64 my_new_size; + int i, rc = 0; + + lxt_old = rhte->lxt_start; + ngrps_old = LXT_NUM_GROUPS(rhte->lxt_cnt); + ngrps = LXT_NUM_GROUPS(rhte->lxt_cnt - delta); + + if (ngrps != ngrps_old) { + /* Reallocate to fit new size unless new size is 0 */ + if (ngrps) { + lxt = kzalloc((sizeof(*lxt) * LXT_GROUP_SIZE * ngrps), + GFP_KERNEL); + if (unlikely(!lxt)) { + rc = -ENOMEM; + goto out; + } + + /* Copy over old entries that will remain */ + memcpy(lxt, lxt_old, + (sizeof(*lxt) * (rhte->lxt_cnt - delta))); + } else + lxt = NULL; + } else + lxt = lxt_old; + + /* Nothing can fail from now on */ + my_new_size = rhte->lxt_cnt - delta; + + /* + * The following sequence is prescribed in the SISlite spec + * for syncing up with the AFU when removing LXT entries. + */ + rhte->lxt_cnt = my_new_size; + dma_wmb(); /* Make RHT entry's LXT table size update visible */ + + rhte->lxt_start = lxt; + dma_wmb(); /* Make RHT entry's LXT table update visible */ + + if (needs_sync) + cxlflash_afu_sync(afu, ctxid, rhndl, AFU_HW_SYNC); + + if (needs_ws) { + /* + * Mark the context as unavailable, so that we can release + * the mutex safely. + */ + ctxi->unavail = true; + mutex_unlock(&ctxi->mutex); + } + + /* Free LBAs allocated to freed chunks */ + mutex_lock(&blka->mutex); + for (i = delta - 1; i >= 0; i--) { + /* Mask the higher 48 bits before shifting, even though + * it is a noop + */ + aun = (lxt_old[my_new_size + i].rlba_base & SISL_ASTATUS_MASK); + aun = (aun >> MC_CHUNK_SHIFT); + if (needs_ws) + write_same16(sdev, aun, MC_CHUNK_SIZE); + ba_free(&blka->ba_lun, aun); + } + mutex_unlock(&blka->mutex); + + if (needs_ws) { + /* Make the context visible again */ + mutex_lock(&ctxi->mutex); + ctxi->unavail = false; + } + + /* Free old lxt if reallocated */ + if (lxt != lxt_old) + kfree(lxt_old); + *new_size = my_new_size; +out: + pr_debug("%s: returning rc=%d\n", __func__, rc); + return rc; +} + +/** + * _cxlflash_vlun_resize() - changes the size of a virtual LUN + * @sdev: SCSI device associated with LUN owning virtual LUN. + * @ctxi: Context owning resources. + * @resize: Resize ioctl data structure. + * + * On successful return, the user is informed of the new size (in blocks) + * of the virtual LUN in last LBA format. When the size of the virtual + * LUN is zero, the last LBA is reflected as -1. See comment in the + * prologue for _cxlflash_disk_release() regarding AFU syncs and contexts + * on the error recovery list. + * + * Return: 0 on success, -errno on failure + */ +int _cxlflash_vlun_resize(struct scsi_device *sdev, + struct ctx_info *ctxi, + struct dk_cxlflash_resize *resize) +{ + struct cxlflash_cfg *cfg = (struct cxlflash_cfg *)sdev->host->hostdata; + struct llun_info *lli = sdev->hostdata; + struct glun_info *gli = lli->parent; + struct afu *afu = cfg->afu; + bool put_ctx = false; + + res_hndl_t rhndl = resize->rsrc_handle; + u64 new_size; + u64 nsectors; + u64 ctxid = DECODE_CTXID(resize->context_id), + rctxid = resize->context_id; + + struct sisl_rht_entry *rhte; + + int rc = 0; + + /* + * The requested size (req_size) is always assumed to be in 4k blocks, + * so we have to convert it here from 4k to chunk size. + */ + nsectors = (resize->req_size * CXLFLASH_BLOCK_SIZE) / gli->blk_len; + new_size = DIV_ROUND_UP(nsectors, MC_CHUNK_SIZE); + + pr_debug("%s: ctxid=%llu rhndl=0x%llx, req_size=0x%llx," + "new_size=%llx\n", __func__, ctxid, resize->rsrc_handle, + resize->req_size, new_size); + + if (unlikely(gli->mode != MODE_VIRTUAL)) { + pr_debug("%s: LUN mode does not support resize! (%d)\n", + __func__, gli->mode); + rc = -EINVAL; + goto out; + + } + + if (!ctxi) { + ctxi = get_context(cfg, rctxid, lli, CTX_CTRL_ERR_FALLBACK); + if (unlikely(!ctxi)) { + pr_debug("%s: Bad context! (%llu)\n", __func__, ctxid); + rc = -EINVAL; + goto out; + } + + put_ctx = true; + } + + rhte = get_rhte(ctxi, rhndl, lli); + if (unlikely(!rhte)) { + pr_debug("%s: Bad resource handle! (%u)\n", __func__, rhndl); + rc = -EINVAL; + goto out; + } + + if (new_size > rhte->lxt_cnt) + rc = grow_lxt(afu, sdev, ctxid, rhndl, rhte, &new_size); + else if (new_size < rhte->lxt_cnt) + rc = shrink_lxt(afu, sdev, rhndl, rhte, ctxi, &new_size); + + resize->hdr.return_flags = 0; + resize->last_lba = (new_size * MC_CHUNK_SIZE * gli->blk_len); + resize->last_lba /= CXLFLASH_BLOCK_SIZE; + resize->last_lba--; + +out: + if (put_ctx) + put_context(ctxi); + pr_debug("%s: resized to %lld returning rc=%d\n", + __func__, resize->last_lba, rc); + return rc; +} + +int cxlflash_vlun_resize(struct scsi_device *sdev, + struct dk_cxlflash_resize *resize) +{ + return _cxlflash_vlun_resize(sdev, NULL, resize); +} + +/** + * cxlflash_restore_luntable() - Restore LUN table to prior state + * @cfg: Internal structure associated with the host. + */ +void cxlflash_restore_luntable(struct cxlflash_cfg *cfg) +{ + struct llun_info *lli, *temp; + u32 chan; + u32 lind; + struct afu *afu = cfg->afu; + struct sisl_global_map __iomem *agm = &afu->afu_map->global; + + mutex_lock(&global.mutex); + + list_for_each_entry_safe(lli, temp, &cfg->lluns, list) { + if (!lli->in_table) + continue; + + lind = lli->lun_index; + + if (lli->port_sel == BOTH_PORTS) { + writeq_be(lli->lun_id[0], &agm->fc_port[0][lind]); + writeq_be(lli->lun_id[1], &agm->fc_port[1][lind]); + pr_debug("%s: Virtual LUN on slot %d id0=%llx, " + "id1=%llx\n", __func__, lind, + lli->lun_id[0], lli->lun_id[1]); + } else { + chan = PORT2CHAN(lli->port_sel); + writeq_be(lli->lun_id[chan], &agm->fc_port[chan][lind]); + pr_debug("%s: Virtual LUN on slot %d chan=%d, " + "id=%llx\n", __func__, lind, chan, + lli->lun_id[chan]); + } + } + + mutex_unlock(&global.mutex); +} + +/** + * init_luntable() - write an entry in the LUN table + * @cfg: Internal structure associated with the host. + * @lli: Per adapter LUN information structure. + * + * On successful return, a LUN table entry is created. + * At the top for LUNs visible on both ports. + * At the bottom for LUNs visible only on one port. + * + * Return: 0 on success, -errno on failure + */ +static int init_luntable(struct cxlflash_cfg *cfg, struct llun_info *lli) +{ + u32 chan; + u32 lind; + int rc = 0; + struct afu *afu = cfg->afu; + struct sisl_global_map __iomem *agm = &afu->afu_map->global; + + mutex_lock(&global.mutex); + + if (lli->in_table) + goto out; + + if (lli->port_sel == BOTH_PORTS) { + /* + * If this LUN is visible from both ports, we will put + * it in the top half of the LUN table. + */ + if ((cfg->promote_lun_index == cfg->last_lun_index[0]) || + (cfg->promote_lun_index == cfg->last_lun_index[1])) { + rc = -ENOSPC; + goto out; + } + + lind = lli->lun_index = cfg->promote_lun_index; + writeq_be(lli->lun_id[0], &agm->fc_port[0][lind]); + writeq_be(lli->lun_id[1], &agm->fc_port[1][lind]); + cfg->promote_lun_index++; + pr_debug("%s: Virtual LUN on slot %d id0=%llx, id1=%llx\n", + __func__, lind, lli->lun_id[0], lli->lun_id[1]); + } else { + /* + * If this LUN is visible only from one port, we will put + * it in the bottom half of the LUN table. + */ + chan = PORT2CHAN(lli->port_sel); + if (cfg->promote_lun_index == cfg->last_lun_index[chan]) { + rc = -ENOSPC; + goto out; + } + + lind = lli->lun_index = cfg->last_lun_index[chan]; + writeq_be(lli->lun_id[chan], &agm->fc_port[chan][lind]); + cfg->last_lun_index[chan]--; + pr_debug("%s: Virtual LUN on slot %d chan=%d, id=%llx\n", + __func__, lind, chan, lli->lun_id[chan]); + } + + lli->in_table = true; +out: + mutex_unlock(&global.mutex); + pr_debug("%s: returning rc=%d\n", __func__, rc); + return rc; +} + +/** + * cxlflash_disk_virtual_open() - open a virtual disk of specified size + * @sdev: SCSI device associated with LUN owning virtual LUN. + * @arg: UVirtual ioctl data structure. + * + * On successful return, the user is informed of the resource handle + * to be used to identify the virtual LUN and the size (in blocks) of + * the virtual LUN in last LBA format. When the size of the virtual LUN + * is zero, the last LBA is reflected as -1. + * + * Return: 0 on success, -errno on failure + */ +int cxlflash_disk_virtual_open(struct scsi_device *sdev, void *arg) +{ + struct cxlflash_cfg *cfg = (struct cxlflash_cfg *)sdev->host->hostdata; + struct device *dev = &cfg->dev->dev; + struct llun_info *lli = sdev->hostdata; + struct glun_info *gli = lli->parent; + + struct dk_cxlflash_uvirtual *virt = (struct dk_cxlflash_uvirtual *)arg; + struct dk_cxlflash_resize resize; + + u64 ctxid = DECODE_CTXID(virt->context_id), + rctxid = virt->context_id; + u64 lun_size = virt->lun_size; + u64 last_lba = 0; + u64 rsrc_handle = -1; + + int rc = 0; + + struct ctx_info *ctxi = NULL; + struct sisl_rht_entry *rhte = NULL; + + pr_debug("%s: ctxid=%llu ls=0x%llx\n", __func__, ctxid, lun_size); + + /* Setup the LUNs block allocator on first call */ + mutex_lock(&gli->mutex); + if (gli->mode == MODE_NONE) { + rc = init_vlun(lli); + if (rc) { + dev_err(dev, "%s: call to init_vlun failed rc=%d!\n", + __func__, rc); + rc = -ENOMEM; + goto err0; + } + } + + rc = cxlflash_lun_attach(gli, MODE_VIRTUAL, true); + if (unlikely(rc)) { + dev_err(dev, "%s: Failed to attach to LUN! (VIRTUAL)\n", + __func__); + goto err0; + } + mutex_unlock(&gli->mutex); + + rc = init_luntable(cfg, lli); + if (rc) { + dev_err(dev, "%s: call to init_luntable failed rc=%d!\n", + __func__, rc); + goto err1; + } + + ctxi = get_context(cfg, rctxid, lli, 0); + if (unlikely(!ctxi)) { + dev_err(dev, "%s: Bad context! (%llu)\n", __func__, ctxid); + rc = -EINVAL; + goto err1; + } + + rhte = rhte_checkout(ctxi, lli); + if (unlikely(!rhte)) { + dev_err(dev, "%s: too many opens for this context\n", __func__); + rc = -EMFILE; /* too many opens */ + goto err1; + } + + rsrc_handle = (rhte - ctxi->rht_start); + + /* Populate RHT format 0 */ + rhte->nmask = MC_RHT_NMASK; + rhte->fp = SISL_RHT_FP(0U, ctxi->rht_perms); + + /* Resize even if requested size is 0 */ + marshal_virt_to_resize(virt, &resize); + resize.rsrc_handle = rsrc_handle; + rc = _cxlflash_vlun_resize(sdev, ctxi, &resize); + if (rc) { + dev_err(dev, "%s: resize failed rc %d\n", __func__, rc); + goto err2; + } + last_lba = resize.last_lba; + + if (virt->hdr.flags & DK_CXLFLASH_UVIRTUAL_NEED_WRITE_SAME) + ctxi->rht_needs_ws[rsrc_handle] = true; + + virt->hdr.return_flags = 0; + virt->last_lba = last_lba; + virt->rsrc_handle = rsrc_handle; + + if (lli->port_sel == BOTH_PORTS) + virt->hdr.return_flags |= DK_CXLFLASH_ALL_PORTS_ACTIVE; +out: + if (likely(ctxi)) + put_context(ctxi); + pr_debug("%s: returning handle 0x%llx rc=%d llba %lld\n", + __func__, rsrc_handle, rc, last_lba); + return rc; + +err2: + rhte_checkin(ctxi, rhte); +err1: + cxlflash_lun_detach(gli); + goto out; +err0: + /* Special common cleanup prior to successful LUN attach */ + cxlflash_ba_terminate(&gli->blka.ba_lun); + mutex_unlock(&gli->mutex); + goto out; +} + +/** + * clone_lxt() - copies translation tables from source to destination RHTE + * @afu: AFU associated with the host. + * @blka: Block allocator associated with LUN. + * @ctxid: Context ID of context owning the RHTE. + * @rhndl: Resource handle associated with the RHTE. + * @rhte: Destination resource handle entry (RHTE). + * @rhte_src: Source resource handle entry (RHTE). + * + * Return: 0 on success, -errno on failure + */ +static int clone_lxt(struct afu *afu, + struct blka *blka, + ctx_hndl_t ctxid, + res_hndl_t rhndl, + struct sisl_rht_entry *rhte, + struct sisl_rht_entry *rhte_src) +{ + struct sisl_lxt_entry *lxt; + u32 ngrps; + u64 aun; /* chunk# allocated by block allocator */ + int i, j; + + ngrps = LXT_NUM_GROUPS(rhte_src->lxt_cnt); + + if (ngrps) { + /* allocate new LXTs for clone */ + lxt = kzalloc((sizeof(*lxt) * LXT_GROUP_SIZE * ngrps), + GFP_KERNEL); + if (unlikely(!lxt)) + return -ENOMEM; + + /* copy over */ + memcpy(lxt, rhte_src->lxt_start, + (sizeof(*lxt) * rhte_src->lxt_cnt)); + + /* clone the LBAs in block allocator via ref_cnt */ + mutex_lock(&blka->mutex); + for (i = 0; i < rhte_src->lxt_cnt; i++) { + aun = (lxt[i].rlba_base >> MC_CHUNK_SHIFT); + if (ba_clone(&blka->ba_lun, aun) == -1ULL) { + /* free the clones already made */ + for (j = 0; j < i; j++) { + aun = (lxt[j].rlba_base >> + MC_CHUNK_SHIFT); + ba_free(&blka->ba_lun, aun); + } + + mutex_unlock(&blka->mutex); + kfree(lxt); + return -EIO; + } + } + mutex_unlock(&blka->mutex); + } else { + lxt = NULL; + } + + /* + * The following sequence is prescribed in the SISlite spec + * for syncing up with the AFU when adding LXT entries. + */ + dma_wmb(); /* Make LXT updates are visible */ + + rhte->lxt_start = lxt; + dma_wmb(); /* Make RHT entry's LXT table update visible */ + + rhte->lxt_cnt = rhte_src->lxt_cnt; + dma_wmb(); /* Make RHT entry's LXT table size update visible */ + + cxlflash_afu_sync(afu, ctxid, rhndl, AFU_LW_SYNC); + + pr_debug("%s: returning\n", __func__); + return 0; +} + +/** + * cxlflash_disk_clone() - clone a context by making snapshot of another + * @sdev: SCSI device associated with LUN owning virtual LUN. + * @clone: Clone ioctl data structure. + * + * This routine effectively performs cxlflash_disk_open operation for each + * in-use virtual resource in the source context. Note that the destination + * context must be in pristine state and cannot have any resource handles + * open at the time of the clone. + * + * Return: 0 on success, -errno on failure + */ +int cxlflash_disk_clone(struct scsi_device *sdev, + struct dk_cxlflash_clone *clone) +{ + struct cxlflash_cfg *cfg = (struct cxlflash_cfg *)sdev->host->hostdata; + struct llun_info *lli = sdev->hostdata; + struct glun_info *gli = lli->parent; + struct blka *blka = &gli->blka; + struct afu *afu = cfg->afu; + struct dk_cxlflash_release release = { { 0 }, 0 }; + + struct ctx_info *ctxi_src = NULL, + *ctxi_dst = NULL; + struct lun_access *lun_access_src, *lun_access_dst; + u32 perms; + u64 ctxid_src = DECODE_CTXID(clone->context_id_src), + ctxid_dst = DECODE_CTXID(clone->context_id_dst), + rctxid_src = clone->context_id_src, + rctxid_dst = clone->context_id_dst; + int adap_fd_src = clone->adap_fd_src; + int i, j; + int rc = 0; + bool found; + LIST_HEAD(sidecar); + + pr_debug("%s: ctxid_src=%llu ctxid_dst=%llu adap_fd_src=%d\n", + __func__, ctxid_src, ctxid_dst, adap_fd_src); + + /* Do not clone yourself */ + if (unlikely(rctxid_src == rctxid_dst)) { + rc = -EINVAL; + goto out; + } + + if (unlikely(gli->mode != MODE_VIRTUAL)) { + rc = -EINVAL; + pr_debug("%s: Clone not supported on physical LUNs! (%d)\n", + __func__, gli->mode); + goto out; + } + + ctxi_src = get_context(cfg, rctxid_src, lli, CTX_CTRL_CLONE); + ctxi_dst = get_context(cfg, rctxid_dst, lli, 0); + if (unlikely(!ctxi_src || !ctxi_dst)) { + pr_debug("%s: Bad context! (%llu,%llu)\n", __func__, + ctxid_src, ctxid_dst); + rc = -EINVAL; + goto out; + } + + if (unlikely(adap_fd_src != ctxi_src->lfd)) { + pr_debug("%s: Invalid source adapter fd! (%d)\n", + __func__, adap_fd_src); + rc = -EINVAL; + goto out; + } + + /* Verify there is no open resource handle in the destination context */ + for (i = 0; i < MAX_RHT_PER_CONTEXT; i++) + if (ctxi_dst->rht_start[i].nmask != 0) { + rc = -EINVAL; + goto out; + } + + /* Clone LUN access list */ + list_for_each_entry(lun_access_src, &ctxi_src->luns, list) { + found = false; + list_for_each_entry(lun_access_dst, &ctxi_dst->luns, list) + if (lun_access_dst->sdev == lun_access_src->sdev) { + found = true; + break; + } + + if (!found) { + lun_access_dst = kzalloc(sizeof(*lun_access_dst), + GFP_KERNEL); + if (unlikely(!lun_access_dst)) { + pr_err("%s: Unable to allocate lun_access!\n", + __func__); + rc = -ENOMEM; + goto out; + } + + *lun_access_dst = *lun_access_src; + list_add(&lun_access_dst->list, &sidecar); + } + } + + if (unlikely(!ctxi_src->rht_out)) { + pr_debug("%s: Nothing to clone!\n", __func__); + goto out_success; + } + + /* User specified permission on attach */ + perms = ctxi_dst->rht_perms; + + /* + * Copy over checked-out RHT (and their associated LXT) entries by + * hand, stopping after we've copied all outstanding entries and + * cleaning up if the clone fails. + * + * Note: This loop is equivalent to performing cxlflash_disk_open and + * cxlflash_vlun_resize. As such, LUN accounting needs to be taken into + * account by attaching after each successful RHT entry clone. In the + * event that a clone failure is experienced, the LUN detach is handled + * via the cleanup performed by _cxlflash_disk_release. + */ + for (i = 0; i < MAX_RHT_PER_CONTEXT; i++) { + if (ctxi_src->rht_out == ctxi_dst->rht_out) + break; + if (ctxi_src->rht_start[i].nmask == 0) + continue; + + /* Consume a destination RHT entry */ + ctxi_dst->rht_out++; + ctxi_dst->rht_start[i].nmask = ctxi_src->rht_start[i].nmask; + ctxi_dst->rht_start[i].fp = + SISL_RHT_FP_CLONE(ctxi_src->rht_start[i].fp, perms); + ctxi_dst->rht_lun[i] = ctxi_src->rht_lun[i]; + + rc = clone_lxt(afu, blka, ctxid_dst, i, + &ctxi_dst->rht_start[i], + &ctxi_src->rht_start[i]); + if (rc) { + marshal_clone_to_rele(clone, &release); + for (j = 0; j < i; j++) { + release.rsrc_handle = j; + _cxlflash_disk_release(sdev, ctxi_dst, + &release); + } + + /* Put back the one we failed on */ + rhte_checkin(ctxi_dst, &ctxi_dst->rht_start[i]); + goto err; + } + + cxlflash_lun_attach(gli, gli->mode, false); + } + +out_success: + list_splice(&sidecar, &ctxi_dst->luns); + sys_close(adap_fd_src); + + /* fall through */ +out: + if (ctxi_src) + put_context(ctxi_src); + if (ctxi_dst) + put_context(ctxi_dst); + pr_debug("%s: returning rc=%d\n", __func__, rc); + return rc; + +err: + list_for_each_entry_safe(lun_access_src, lun_access_dst, &sidecar, list) + kfree(lun_access_src); + goto out; +} --- linux-raspi2-4.2.0.orig/drivers/scsi/cxlflash/vlun.h +++ linux-raspi2-4.2.0/drivers/scsi/cxlflash/vlun.h @@ -0,0 +1,86 @@ +/* + * CXL Flash Device Driver + * + * Written by: Manoj N. Kumar , IBM Corporation + * Matthew R. Ochs , IBM Corporation + * + * Copyright (C) 2015 IBM Corporation + * + * 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. + */ + +#ifndef _CXLFLASH_VLUN_H +#define _CXLFLASH_VLUN_H + +/* RHT - Resource Handle Table */ +#define MC_RHT_NMASK 16 /* in bits */ +#define MC_CHUNK_SHIFT MC_RHT_NMASK /* shift to go from LBA to chunk# */ + +#define HIBIT (BITS_PER_LONG - 1) + +#define MAX_AUN_CLONE_CNT 0xFF + +/* + * LXT - LBA Translation Table + * + * +-------+-------+-------+-------+-------+-------+-------+---+---+ + * | RLBA_BASE |LUN_IDX| P |SEL| + * +-------+-------+-------+-------+-------+-------+-------+---+---+ + * + * The LXT Entry contains the physical LBA where the chunk starts (RLBA_BASE). + * AFU ORes the low order bits from the virtual LBA (offset into the chunk) + * with RLBA_BASE. The result is the physical LBA to be sent to storage. + * The LXT Entry also contains an index to a LUN TBL and a bitmask of which + * outgoing (FC) * ports can be selected. The port select bit-mask is ANDed + * with a global port select bit-mask maintained by the driver. + * In addition, it has permission bits that are ANDed with the + * RHT permissions to arrive at the final permissions for the chunk. + * + * LXT tables are allocated dynamically in groups. This is done to avoid + * a malloc/free overhead each time the LXT has to grow or shrink. + * + * Based on the current lxt_cnt (used), it is always possible to know + * how many are allocated (used+free). The number of allocated entries is + * not stored anywhere. + * + * The LXT table is re-allocated whenever it needs to cross into another group. +*/ +#define LXT_GROUP_SIZE 8 +#define LXT_NUM_GROUPS(lxt_cnt) (((lxt_cnt) + 7)/8) /* alloc'ed groups */ +#define LXT_LUNIDX_SHIFT 8 /* LXT entry, shift for LUN index */ +#define LXT_PERM_SHIFT 4 /* LXT entry, shift for permission bits */ + +struct ba_lun_info { + u64 *lun_alloc_map; + u32 lun_bmap_size; + u32 total_aus; + u64 free_aun_cnt; + + /* indices to be used for elevator lookup of free map */ + u32 free_low_idx; + u32 free_curr_idx; + u32 free_high_idx; + + u8 *aun_clone_map; +}; + +struct ba_lun { + u64 lun_id; + u64 wwpn; + size_t lsize; /* LUN size in number of LBAs */ + size_t lba_size; /* LBA size in number of bytes */ + size_t au_size; /* Allocation Unit size in number of LBAs */ + struct ba_lun_info *ba_lun_handle; +}; + +/* Block Allocator */ +struct blka { + struct ba_lun ba_lun; + u64 nchunk; /* number of chunks */ + struct mutex mutex; +}; + +#endif /* ifndef _CXLFLASH_SUPERPIPE_H */ --- linux-raspi2-4.2.0.orig/drivers/scsi/dpt_i2o.c +++ linux-raspi2-4.2.0/drivers/scsi/dpt_i2o.c @@ -1924,6 +1924,9 @@ #endif #if defined __i386__ + +#include + static void adpt_i386_info(sysInfo_S* si) { // This is all the info we need for now --- linux-raspi2-4.2.0.orig/drivers/scsi/hpsa.c +++ linux-raspi2-4.2.0/drivers/scsi/hpsa.c @@ -5104,7 +5104,7 @@ int rc; struct ctlr_info *h; struct hpsa_scsi_dev_t *dev; - char msg[40]; + char msg[48]; /* find the controller to which the command to be aborted was sent */ h = sdev_to_hba(scsicmd->device); @@ -5122,16 +5122,18 @@ /* if controller locked up, we can guarantee command won't complete */ if (lockup_detected(h)) { - sprintf(msg, "cmd %d RESET FAILED, lockup detected", - hpsa_get_cmd_index(scsicmd)); + snprintf(msg, sizeof(msg), + "cmd %d RESET FAILED, lockup detected", + hpsa_get_cmd_index(scsicmd)); hpsa_show_dev_msg(KERN_WARNING, h, dev, msg); return FAILED; } /* this reset request might be the result of a lockup; check */ if (detect_controller_lockup(h)) { - sprintf(msg, "cmd %d RESET FAILED, new lockup detected", - hpsa_get_cmd_index(scsicmd)); + snprintf(msg, sizeof(msg), + "cmd %d RESET FAILED, new lockup detected", + hpsa_get_cmd_index(scsicmd)); hpsa_show_dev_msg(KERN_WARNING, h, dev, msg); return FAILED; } @@ -5145,7 +5147,8 @@ /* send a reset to the SCSI LUN which the command was sent to */ rc = hpsa_do_reset(h, dev, dev->scsi3addr, HPSA_RESET_TYPE_LUN, DEFAULT_REPLY_QUEUE); - sprintf(msg, "reset %s", rc == 0 ? "completed successfully" : "failed"); + snprintf(msg, sizeof(msg), "reset %s", + rc == 0 ? "completed successfully" : "failed"); hpsa_show_dev_msg(KERN_WARNING, h, dev, msg); return rc == 0 ? SUCCESS : FAILED; } --- linux-raspi2-4.2.0.orig/drivers/scsi/ipr.c +++ linux-raspi2-4.2.0/drivers/scsi/ipr.c @@ -4455,7 +4455,7 @@ spin_lock_irqsave(ioa_cfg->host->host_lock, lock_flags); res = (struct ipr_resource_entry *)sdev->hostdata; if (res && ioa_cfg->sis64) - len = snprintf(buf, PAGE_SIZE, "0x%llx\n", res->dev_id); + len = snprintf(buf, PAGE_SIZE, "0x%llx\n", be64_to_cpu(res->dev_id)); else if (res) len = snprintf(buf, PAGE_SIZE, "0x%llx\n", res->lun_wwn); @@ -4554,7 +4554,7 @@ spin_lock_irqsave(ioa_cfg->host->host_lock, lock_flags); res = (struct ipr_resource_entry *)sdev->hostdata; if (res) { - if (ioa_cfg->sis64 && ipr_is_af_dasd_device(res)) { + if (ipr_is_af_dasd_device(res)) { res->raw_mode = simple_strtoul(buf, NULL, 10); len = strlen(buf); if (res->sdev) --- linux-raspi2-4.2.0.orig/drivers/scsi/iscsi_tcp.c +++ linux-raspi2-4.2.0/drivers/scsi/iscsi_tcp.c @@ -593,9 +593,9 @@ iscsi_sw_tcp_conn_restore_callbacks(conn); sock_put(sock->sk); - spin_lock_bh(&session->frwd_lock); + spin_lock_bh(&session->lock); tcp_sw_conn->sock = NULL; - spin_unlock_bh(&session->frwd_lock); + spin_unlock_bh(&session->lock); sockfd_put(sock); } @@ -663,10 +663,10 @@ if (err) goto free_socket; - spin_lock_bh(&session->frwd_lock); + spin_lock_bh(&session->lock); /* bind iSCSI connection and socket */ tcp_sw_conn->sock = sock; - spin_unlock_bh(&session->frwd_lock); + spin_unlock_bh(&session->lock); /* setup Socket parameters */ sk = sock->sk; @@ -727,9 +727,9 @@ case ISCSI_PARAM_CONN_PORT: case ISCSI_PARAM_CONN_ADDRESS: case ISCSI_PARAM_LOCAL_PORT: - spin_lock_bh(&conn->session->frwd_lock); + spin_lock_bh(&conn->session->lock); if (!tcp_sw_conn || !tcp_sw_conn->sock) { - spin_unlock_bh(&conn->session->frwd_lock); + spin_unlock_bh(&conn->session->lock); return -ENOTCONN; } if (param == ISCSI_PARAM_LOCAL_PORT) @@ -738,7 +738,7 @@ else rc = kernel_getpeername(tcp_sw_conn->sock, (struct sockaddr *)&addr, &len); - spin_unlock_bh(&conn->session->frwd_lock); + spin_unlock_bh(&conn->session->lock); if (rc) return rc; @@ -767,23 +767,23 @@ if (!session) return -ENOTCONN; - spin_lock_bh(&session->frwd_lock); + spin_lock_bh(&session->lock); conn = session->leadconn; if (!conn) { - spin_unlock_bh(&session->frwd_lock); + spin_unlock_bh(&session->lock); return -ENOTCONN; } tcp_conn = conn->dd_data; tcp_sw_conn = tcp_conn->dd_data; if (!tcp_sw_conn->sock) { - spin_unlock_bh(&session->frwd_lock); + spin_unlock_bh(&session->lock); return -ENOTCONN; } rc = kernel_getsockname(tcp_sw_conn->sock, (struct sockaddr *)&addr, &len); - spin_unlock_bh(&session->frwd_lock); + spin_unlock_bh(&session->lock); if (rc) return rc; --- linux-raspi2-4.2.0.orig/drivers/scsi/libiscsi.c +++ linux-raspi2-4.2.0/drivers/scsi/libiscsi.c @@ -477,7 +477,7 @@ * iscsi_free_task - free a task * @task: iscsi cmd task * - * Must be called with session back_lock. + * Must be called with session lock. * This function returns the scsi command to scsi-ml or cleans * up mgmt tasks then returns the task to the pool. */ @@ -531,10 +531,9 @@ { struct iscsi_session *session = task->conn->session; - /* regular RX path uses back_lock */ - spin_lock_bh(&session->back_lock); + spin_lock_bh(&session->lock); __iscsi_put_task(task); - spin_unlock_bh(&session->back_lock); + spin_unlock_bh(&session->lock); } EXPORT_SYMBOL_GPL(iscsi_put_task); @@ -543,7 +542,7 @@ * @task: iscsi cmd task * @state: state to complete task with * - * Must be called with session back_lock. + * Must be called with session lock. */ static void iscsi_complete_task(struct iscsi_task *task, int state) { @@ -582,7 +581,7 @@ * This is used when drivers do not need or cannot perform * lower level pdu processing. * - * Called with session back_lock + * Called with session lock */ void iscsi_complete_scsi_task(struct iscsi_task *task, uint32_t exp_cmdsn, uint32_t max_cmdsn) @@ -599,7 +598,7 @@ /* - * session back_lock must be held and if not called for a task that is + * session lock must be held and if not called for a task that is * still pending or from the xmit thread, then xmit thread must * be suspended. */ @@ -639,10 +638,7 @@ scsi_in(sc)->resid = scsi_in(sc)->length; } - /* regular RX path uses back_lock */ - spin_lock_bh(&conn->session->back_lock); iscsi_complete_task(task, state); - spin_unlock_bh(&conn->session->back_lock); } static int iscsi_prep_mgmt_task(struct iscsi_conn *conn, @@ -790,10 +786,7 @@ return task; free_task: - /* regular RX path uses back_lock */ - spin_lock_bh(&session->back_lock); __iscsi_put_task(task); - spin_unlock_bh(&session->back_lock); return NULL; } @@ -804,10 +797,10 @@ struct iscsi_session *session = conn->session; int err = 0; - spin_lock_bh(&session->frwd_lock); + spin_lock_bh(&session->lock); if (!__iscsi_conn_send_pdu(conn, hdr, data, data_size)) err = -EPERM; - spin_unlock_bh(&session->frwd_lock); + spin_unlock_bh(&session->lock); return err; } EXPORT_SYMBOL_GPL(iscsi_conn_send_pdu); @@ -1071,19 +1064,14 @@ if (opcode != ISCSI_OP_NOOP_OUT) return 0; - if (rejected_pdu.itt == cpu_to_be32(ISCSI_RESERVED_TAG)) { + if (rejected_pdu.itt == cpu_to_be32(ISCSI_RESERVED_TAG)) /* * nop-out in response to target's nop-out rejected. * Just resend. */ - /* In RX path we are under back lock */ - spin_unlock(&conn->session->back_lock); - spin_lock(&conn->session->frwd_lock); iscsi_send_nopout(conn, (struct iscsi_nopin*)&rejected_pdu); - spin_unlock(&conn->session->frwd_lock); - spin_lock(&conn->session->back_lock); - } else { + else { struct iscsi_task *task; /* * Our nop as ping got dropped. We know the target @@ -1119,7 +1107,7 @@ * This should be used for mgmt tasks like login and nops, or if * the LDD's itt space does not include the session age. * - * The session back_lock must be held. + * The session lock must be held. */ struct iscsi_task *iscsi_itt_to_task(struct iscsi_conn *conn, itt_t itt) { @@ -1148,7 +1136,7 @@ * @datalen: len of data buffer * * Completes pdu processing by freeing any resources allocated at - * queuecommand or send generic. session back_lock must be held and verify + * queuecommand or send generic. session lock must be held and verify * itt must have been called. */ int __iscsi_complete_pdu(struct iscsi_conn *conn, struct iscsi_hdr *hdr, @@ -1185,12 +1173,7 @@ if (hdr->ttt == cpu_to_be32(ISCSI_RESERVED_TAG)) break; - /* In RX path we are under back lock */ - spin_unlock(&session->back_lock); - spin_lock(&session->frwd_lock); iscsi_send_nopout(conn, (struct iscsi_nopin*)hdr); - spin_unlock(&session->frwd_lock); - spin_lock(&session->back_lock); break; case ISCSI_OP_REJECT: rc = iscsi_handle_reject(conn, hdr, data, datalen); @@ -1297,9 +1280,9 @@ { int rc; - spin_lock(&conn->session->back_lock); + spin_lock(&conn->session->lock); rc = __iscsi_complete_pdu(conn, hdr, data, datalen); - spin_unlock(&conn->session->back_lock); + spin_unlock(&conn->session->lock); return rc; } EXPORT_SYMBOL_GPL(iscsi_complete_pdu); @@ -1343,7 +1326,7 @@ * * This should be used for cmd tasks. * - * The session back_lock must be held. + * The session lock must be held. */ struct iscsi_task *iscsi_itt_to_ctask(struct iscsi_conn *conn, itt_t itt) { @@ -1373,15 +1356,15 @@ struct iscsi_conn *conn; struct device *dev; - spin_lock_bh(&session->frwd_lock); + spin_lock_bh(&session->lock); conn = session->leadconn; if (session->state == ISCSI_STATE_TERMINATE || !conn) { - spin_unlock_bh(&session->frwd_lock); + spin_unlock_bh(&session->lock); return; } dev = get_device(&conn->cls_conn->dev); - spin_unlock_bh(&session->frwd_lock); + spin_unlock_bh(&session->lock); if (!dev) return; /* @@ -1401,15 +1384,15 @@ { struct iscsi_session *session = conn->session; - spin_lock_bh(&session->frwd_lock); + spin_lock_bh(&session->lock); if (session->state == ISCSI_STATE_FAILED) { - spin_unlock_bh(&session->frwd_lock); + spin_unlock_bh(&session->lock); return; } if (conn->stop_stage == 0) session->state = ISCSI_STATE_FAILED; - spin_unlock_bh(&session->frwd_lock); + spin_unlock_bh(&session->lock); set_bit(ISCSI_SUSPEND_BIT, &conn->suspend_tx); set_bit(ISCSI_SUSPEND_BIT, &conn->suspend_rx); @@ -1443,18 +1426,15 @@ return -ENODATA; __iscsi_get_task(task); - spin_unlock_bh(&conn->session->frwd_lock); + spin_unlock_bh(&conn->session->lock); rc = conn->session->tt->xmit_task(task); - spin_lock_bh(&conn->session->frwd_lock); + spin_lock_bh(&conn->session->lock); if (!rc) { /* done with this task */ task->last_xfer = jiffies; conn->task = NULL; } - /* regular RX path uses back_lock */ - spin_lock(&conn->session->back_lock); __iscsi_put_task(task); - spin_unlock(&conn->session->back_lock); return rc; } @@ -1463,7 +1443,7 @@ * @task: task to requeue * * LLDs that need to run a task from the session workqueue should call - * this. The session frwd_lock must be held. This should only be called + * this. The session lock must be held. This should only be called * by software drivers. */ void iscsi_requeue_task(struct iscsi_task *task) @@ -1494,10 +1474,10 @@ struct iscsi_task *task; int rc = 0; - spin_lock_bh(&conn->session->frwd_lock); + spin_lock_bh(&conn->session->lock); if (test_bit(ISCSI_SUSPEND_BIT, &conn->suspend_tx)) { ISCSI_DBG_SESSION(conn->session, "Tx suspended!\n"); - spin_unlock_bh(&conn->session->frwd_lock); + spin_unlock_bh(&conn->session->lock); return -ENODATA; } @@ -1518,10 +1498,7 @@ struct iscsi_task, running); list_del_init(&conn->task->running); if (iscsi_prep_mgmt_task(conn, conn->task)) { - /* regular RX path uses back_lock */ - spin_lock_bh(&conn->session->back_lock); __iscsi_put_task(conn->task); - spin_unlock_bh(&conn->session->back_lock); conn->task = NULL; continue; } @@ -1583,11 +1560,11 @@ if (!list_empty(&conn->mgmtqueue)) goto check_mgmt; } - spin_unlock_bh(&conn->session->frwd_lock); + spin_unlock_bh(&conn->session->lock); return -ENODATA; done: - spin_unlock_bh(&conn->session->frwd_lock); + spin_unlock_bh(&conn->session->lock); return rc; } @@ -1657,7 +1634,7 @@ cls_session = starget_to_session(scsi_target(sc->device)); session = cls_session->dd_data; - spin_lock_bh(&session->frwd_lock); + spin_lock_bh(&session->lock); reason = iscsi_session_chkready(cls_session); if (reason) { @@ -1743,13 +1720,13 @@ } session->queued_cmdsn++; - spin_unlock_bh(&session->frwd_lock); + spin_unlock_bh(&session->lock); return 0; prepd_reject: iscsi_complete_task(task, ISCSI_TASK_REQUEUE_SCSIQ); reject: - spin_unlock_bh(&session->frwd_lock); + spin_unlock_bh(&session->lock); ISCSI_DBG_SESSION(session, "cmd 0x%x rejected (%d)\n", sc->cmnd[0], reason); return SCSI_MLQUEUE_TARGET_BUSY; @@ -1757,7 +1734,7 @@ prepd_fault: iscsi_complete_task(task, ISCSI_TASK_REQUEUE_SCSIQ); fault: - spin_unlock_bh(&session->frwd_lock); + spin_unlock_bh(&session->lock); ISCSI_DBG_SESSION(session, "iscsi: cmd 0x%x is not queued (%d)\n", sc->cmnd[0], reason); if (!scsi_bidi_cmnd(sc)) @@ -1786,14 +1763,14 @@ struct iscsi_conn *conn = (struct iscsi_conn *)data; struct iscsi_session *session = conn->session; - spin_lock(&session->frwd_lock); + spin_lock(&session->lock); if (conn->tmf_state == TMF_QUEUED) { conn->tmf_state = TMF_TIMEDOUT; ISCSI_DBG_EH(session, "tmf timedout\n"); /* unblock eh_abort() */ wake_up(&conn->ehwait); } - spin_unlock(&session->frwd_lock); + spin_unlock(&session->lock); } static int iscsi_exec_task_mgmt_fn(struct iscsi_conn *conn, @@ -1806,10 +1783,10 @@ task = __iscsi_conn_send_pdu(conn, (struct iscsi_hdr *)hdr, NULL, 0); if (!task) { - spin_unlock_bh(&session->frwd_lock); + spin_unlock_bh(&session->lock); iscsi_conn_printk(KERN_ERR, conn, "Could not send TMF.\n"); iscsi_conn_failure(conn, ISCSI_ERR_CONN_FAILED); - spin_lock_bh(&session->frwd_lock); + spin_lock_bh(&session->lock); return -EPERM; } conn->tmfcmd_pdus_cnt++; @@ -1819,7 +1796,7 @@ add_timer(&conn->tmf_timer); ISCSI_DBG_EH(session, "tmf set timeout\n"); - spin_unlock_bh(&session->frwd_lock); + spin_unlock_bh(&session->lock); mutex_unlock(&session->eh_mutex); /* @@ -1838,7 +1815,7 @@ del_timer_sync(&conn->tmf_timer); mutex_lock(&session->eh_mutex); - spin_lock_bh(&session->frwd_lock); + spin_lock_bh(&session->lock); /* if the session drops it will clean up the task */ if (age != session->age || session->state != ISCSI_STATE_LOGGED_IN) @@ -1874,7 +1851,7 @@ * iscsi_suspend_queue - suspend iscsi_queuecommand * @conn: iscsi conn to stop queueing IO on * - * This grabs the session frwd_lock to make sure no one is in + * This grabs the session lock to make sure no one is in * xmit_task/queuecommand, and then sets suspend to prevent * new commands from being queued. This only needs to be called * by offload drivers that need to sync a path like ep disconnect @@ -1883,9 +1860,9 @@ */ void iscsi_suspend_queue(struct iscsi_conn *conn) { - spin_lock_bh(&conn->session->frwd_lock); + spin_lock_bh(&conn->session->lock); set_bit(ISCSI_SUSPEND_BIT, &conn->suspend_tx); - spin_unlock_bh(&conn->session->frwd_lock); + spin_unlock_bh(&conn->session->lock); } EXPORT_SYMBOL_GPL(iscsi_suspend_queue); @@ -1944,7 +1921,7 @@ ISCSI_DBG_EH(session, "scsi cmd %p timedout\n", sc); - spin_lock(&session->frwd_lock); + spin_lock(&session->lock); task = (struct iscsi_task *)sc->SCp.ptr; if (!task) { /* @@ -2058,7 +2035,7 @@ done: if (task) task->last_timeout = jiffies; - spin_unlock(&session->frwd_lock); + spin_unlock(&session->lock); ISCSI_DBG_EH(session, "return %s\n", rc == BLK_EH_RESET_TIMER ? "timer reset" : "nh"); return rc; @@ -2070,7 +2047,7 @@ struct iscsi_session *session = conn->session; unsigned long recv_timeout, next_timeout = 0, last_recv; - spin_lock(&session->frwd_lock); + spin_lock(&session->lock); if (session->state != ISCSI_STATE_LOGGED_IN) goto done; @@ -2087,7 +2064,7 @@ "last ping %lu, now %lu\n", conn->ping_timeout, conn->recv_timeout, last_recv, conn->last_ping, jiffies); - spin_unlock(&session->frwd_lock); + spin_unlock(&session->lock); iscsi_conn_failure(conn, ISCSI_ERR_NOP_TIMEDOUT); return; } @@ -2103,7 +2080,7 @@ ISCSI_DBG_CONN(conn, "Setting next tmo %lu\n", next_timeout); mod_timer(&conn->transport_timer, next_timeout); done: - spin_unlock(&session->frwd_lock); + spin_unlock(&session->lock); } static void iscsi_prep_abort_task_pdu(struct iscsi_task *task, @@ -2133,7 +2110,7 @@ ISCSI_DBG_EH(session, "aborting sc %p\n", sc); mutex_lock(&session->eh_mutex); - spin_lock_bh(&session->frwd_lock); + spin_lock_bh(&session->lock); /* * if session was ISCSI_STATE_IN_RECOVERY then we may not have * got the command. @@ -2141,7 +2118,7 @@ if (!sc->SCp.ptr) { ISCSI_DBG_EH(session, "sc never reached iscsi layer or " "it completed.\n"); - spin_unlock_bh(&session->frwd_lock); + spin_unlock_bh(&session->lock); mutex_unlock(&session->eh_mutex); return SUCCESS; } @@ -2152,7 +2129,7 @@ */ if (!session->leadconn || session->state != ISCSI_STATE_LOGGED_IN || sc->SCp.phase != session->age) { - spin_unlock_bh(&session->frwd_lock); + spin_unlock_bh(&session->lock); mutex_unlock(&session->eh_mutex); ISCSI_DBG_EH(session, "failing abort due to dropped " "session.\n"); @@ -2193,7 +2170,7 @@ switch (conn->tmf_state) { case TMF_SUCCESS: - spin_unlock_bh(&session->frwd_lock); + spin_unlock_bh(&session->lock); /* * stop tx side incase the target had sent a abort rsp but * the initiator was still writing out data. @@ -2204,15 +2181,15 @@ * good and have never sent us a successful tmf response * then sent more data for the cmd. */ - spin_lock_bh(&session->frwd_lock); + spin_lock_bh(&session->lock); fail_scsi_task(task, DID_ABORT); conn->tmf_state = TMF_INITIAL; memset(hdr, 0, sizeof(*hdr)); - spin_unlock_bh(&session->frwd_lock); + spin_unlock_bh(&session->lock); iscsi_start_tx(conn); goto success_unlocked; case TMF_TIMEDOUT: - spin_unlock_bh(&session->frwd_lock); + spin_unlock_bh(&session->lock); iscsi_conn_failure(conn, ISCSI_ERR_SCSI_EH_SESSION_RST); goto failed_unlocked; case TMF_NOT_FOUND: @@ -2231,7 +2208,7 @@ } success: - spin_unlock_bh(&session->frwd_lock); + spin_unlock_bh(&session->lock); success_unlocked: ISCSI_DBG_EH(session, "abort success [sc %p itt 0x%x]\n", sc, task->itt); @@ -2239,7 +2216,7 @@ return SUCCESS; failed: - spin_unlock_bh(&session->frwd_lock); + spin_unlock_bh(&session->lock); failed_unlocked: ISCSI_DBG_EH(session, "abort failed [sc %p itt 0x%x]\n", sc, task ? task->itt : 0); @@ -2273,7 +2250,7 @@ sc->device->lun); mutex_lock(&session->eh_mutex); - spin_lock_bh(&session->frwd_lock); + spin_lock_bh(&session->lock); /* * Just check if we are not logged in. We cannot check for * the phase because the reset could come from a ioctl. @@ -2300,7 +2277,7 @@ case TMF_SUCCESS: break; case TMF_TIMEDOUT: - spin_unlock_bh(&session->frwd_lock); + spin_unlock_bh(&session->lock); iscsi_conn_failure(conn, ISCSI_ERR_SCSI_EH_SESSION_RST); goto done; default: @@ -2309,21 +2286,21 @@ } rc = SUCCESS; - spin_unlock_bh(&session->frwd_lock); + spin_unlock_bh(&session->lock); iscsi_suspend_tx(conn); - spin_lock_bh(&session->frwd_lock); + spin_lock_bh(&session->lock); memset(hdr, 0, sizeof(*hdr)); fail_scsi_tasks(conn, sc->device->lun, DID_ERROR); conn->tmf_state = TMF_INITIAL; - spin_unlock_bh(&session->frwd_lock); + spin_unlock_bh(&session->lock); iscsi_start_tx(conn); goto done; unlock: - spin_unlock_bh(&session->frwd_lock); + spin_unlock_bh(&session->lock); done: ISCSI_DBG_EH(session, "dev reset result = %s\n", rc == SUCCESS ? "SUCCESS" : "FAILED"); @@ -2336,13 +2313,13 @@ { struct iscsi_session *session = cls_session->dd_data; - spin_lock_bh(&session->frwd_lock); + spin_lock_bh(&session->lock); if (session->state != ISCSI_STATE_LOGGED_IN) { session->state = ISCSI_STATE_RECOVERY_FAILED; if (session->leadconn) wake_up(&session->leadconn->ehwait); } - spin_unlock_bh(&session->frwd_lock); + spin_unlock_bh(&session->lock); } EXPORT_SYMBOL_GPL(iscsi_session_recovery_timedout); @@ -2364,19 +2341,19 @@ conn = session->leadconn; mutex_lock(&session->eh_mutex); - spin_lock_bh(&session->frwd_lock); + spin_lock_bh(&session->lock); if (session->state == ISCSI_STATE_TERMINATE) { failed: ISCSI_DBG_EH(session, "failing session reset: Could not log back into " "%s, %s [age %d]\n", session->targetname, conn->persistent_address, session->age); - spin_unlock_bh(&session->frwd_lock); + spin_unlock_bh(&session->lock); mutex_unlock(&session->eh_mutex); return FAILED; } - spin_unlock_bh(&session->frwd_lock); + spin_unlock_bh(&session->lock); mutex_unlock(&session->eh_mutex); /* * we drop the lock here but the leadconn cannot be destoyed while @@ -2393,14 +2370,14 @@ flush_signals(current); mutex_lock(&session->eh_mutex); - spin_lock_bh(&session->frwd_lock); + spin_lock_bh(&session->lock); if (session->state == ISCSI_STATE_LOGGED_IN) { ISCSI_DBG_EH(session, "session reset succeeded for %s,%s\n", session->targetname, conn->persistent_address); } else goto failed; - spin_unlock_bh(&session->frwd_lock); + spin_unlock_bh(&session->lock); mutex_unlock(&session->eh_mutex); return SUCCESS; } @@ -2436,7 +2413,7 @@ session->targetname); mutex_lock(&session->eh_mutex); - spin_lock_bh(&session->frwd_lock); + spin_lock_bh(&session->lock); /* * Just check if we are not logged in. We cannot check for * the phase because the reset could come from a ioctl. @@ -2463,7 +2440,7 @@ case TMF_SUCCESS: break; case TMF_TIMEDOUT: - spin_unlock_bh(&session->frwd_lock); + spin_unlock_bh(&session->lock); iscsi_conn_failure(conn, ISCSI_ERR_SCSI_EH_SESSION_RST); goto done; default: @@ -2472,21 +2449,21 @@ } rc = SUCCESS; - spin_unlock_bh(&session->frwd_lock); + spin_unlock_bh(&session->lock); iscsi_suspend_tx(conn); - spin_lock_bh(&session->frwd_lock); + spin_lock_bh(&session->lock); memset(hdr, 0, sizeof(*hdr)); fail_scsi_tasks(conn, -1, DID_ERROR); conn->tmf_state = TMF_INITIAL; - spin_unlock_bh(&session->frwd_lock); + spin_unlock_bh(&session->lock); iscsi_start_tx(conn); goto done; unlock: - spin_unlock_bh(&session->frwd_lock); + spin_unlock_bh(&session->lock); done: ISCSI_DBG_EH(session, "tgt %s reset result = %s\n", session->targetname, rc == SUCCESS ? "SUCCESS" : "FAILED"); @@ -2784,10 +2761,8 @@ session->max_r2t = 1; session->tt = iscsit; session->dd_data = cls_session->dd_data + sizeof(*session); - mutex_init(&session->eh_mutex); - spin_lock_init(&session->frwd_lock); - spin_lock_init(&session->back_lock); + spin_lock_init(&session->lock); /* initialize SCSI PDU commands pool */ if (iscsi_pool_init(&session->cmdpool, session->cmds_max, @@ -2901,14 +2876,14 @@ INIT_WORK(&conn->xmitwork, iscsi_xmitworker); /* allocate login_task used for the login/text sequences */ - spin_lock_bh(&session->frwd_lock); + spin_lock_bh(&session->lock); if (!kfifo_out(&session->cmdpool.queue, (void*)&conn->login_task, sizeof(void*))) { - spin_unlock_bh(&session->frwd_lock); + spin_unlock_bh(&session->lock); goto login_task_alloc_fail; } - spin_unlock_bh(&session->frwd_lock); + spin_unlock_bh(&session->lock); data = (char *) __get_free_pages(GFP_KERNEL, get_order(ISCSI_DEF_MAX_RECV_SEG_LEN)); @@ -2945,7 +2920,7 @@ del_timer_sync(&conn->transport_timer); mutex_lock(&session->eh_mutex); - spin_lock_bh(&session->frwd_lock); + spin_lock_bh(&session->lock); conn->c_stage = ISCSI_CONN_CLEANUP_WAIT; if (session->leadconn == conn) { /* @@ -2954,24 +2929,21 @@ session->state = ISCSI_STATE_TERMINATE; wake_up(&conn->ehwait); } - spin_unlock_bh(&session->frwd_lock); + spin_unlock_bh(&session->lock); /* flush queued up work because we free the connection below */ iscsi_suspend_tx(conn); - spin_lock_bh(&session->frwd_lock); + spin_lock_bh(&session->lock); free_pages((unsigned long) conn->data, get_order(ISCSI_DEF_MAX_RECV_SEG_LEN)); kfree(conn->persistent_address); kfree(conn->local_ipaddr); - /* regular RX path uses back_lock */ - spin_lock_bh(&session->back_lock); kfifo_in(&session->cmdpool.queue, (void*)&conn->login_task, sizeof(void*)); - spin_unlock_bh(&session->back_lock); if (session->leadconn == conn) session->leadconn = NULL; - spin_unlock_bh(&session->frwd_lock); + spin_unlock_bh(&session->lock); mutex_unlock(&session->eh_mutex); iscsi_destroy_conn(cls_conn); @@ -3009,7 +2981,7 @@ conn->ping_timeout = 5; } - spin_lock_bh(&session->frwd_lock); + spin_lock_bh(&session->lock); conn->c_stage = ISCSI_CONN_STARTED; session->state = ISCSI_STATE_LOGGED_IN; session->queued_cmdsn = session->cmdsn; @@ -3038,7 +3010,7 @@ default: break; } - spin_unlock_bh(&session->frwd_lock); + spin_unlock_bh(&session->lock); iscsi_unblock_session(session->cls_session); wake_up(&conn->ehwait); @@ -3077,9 +3049,9 @@ int old_stop_stage; mutex_lock(&session->eh_mutex); - spin_lock_bh(&session->frwd_lock); + spin_lock_bh(&session->lock); if (conn->stop_stage == STOP_CONN_TERM) { - spin_unlock_bh(&session->frwd_lock); + spin_unlock_bh(&session->lock); mutex_unlock(&session->eh_mutex); return; } @@ -3096,14 +3068,14 @@ old_stop_stage = conn->stop_stage; conn->stop_stage = flag; - spin_unlock_bh(&session->frwd_lock); + spin_unlock_bh(&session->lock); del_timer_sync(&conn->transport_timer); iscsi_suspend_tx(conn); - spin_lock_bh(&session->frwd_lock); + spin_lock_bh(&session->lock); conn->c_stage = ISCSI_CONN_STOPPED; - spin_unlock_bh(&session->frwd_lock); + spin_unlock_bh(&session->lock); /* * for connection level recovery we should not calculate @@ -3124,11 +3096,11 @@ /* * flush queues. */ - spin_lock_bh(&session->frwd_lock); + spin_lock_bh(&session->lock); fail_scsi_tasks(conn, -1, DID_TRANSPORT_DISRUPTED); fail_mgmt_tasks(session, conn); memset(&conn->tmhdr, 0, sizeof(conn->tmhdr)); - spin_unlock_bh(&session->frwd_lock); + spin_unlock_bh(&session->lock); mutex_unlock(&session->eh_mutex); } @@ -3155,10 +3127,10 @@ struct iscsi_session *session = cls_session->dd_data; struct iscsi_conn *conn = cls_conn->dd_data; - spin_lock_bh(&session->frwd_lock); + spin_lock_bh(&session->lock); if (is_leading) session->leadconn = conn; - spin_unlock_bh(&session->frwd_lock); + spin_unlock_bh(&session->lock); /* * Unblock xmitworker(), Login Phase will pass through. --- linux-raspi2-4.2.0.orig/drivers/scsi/libiscsi_tcp.c +++ linux-raspi2-4.2.0/drivers/scsi/libiscsi_tcp.c @@ -446,7 +446,7 @@ * iscsi_tcp_cleanup_task - free tcp_task resources * @task: iscsi task * - * must be called with session back_lock + * must be called with session lock */ void iscsi_tcp_cleanup_task(struct iscsi_task *task) { @@ -457,7 +457,6 @@ if (!task->sc) return; - spin_lock_bh(&tcp_task->queue2pool); /* flush task's r2t queues */ while (kfifo_out(&tcp_task->r2tqueue, (void*)&r2t, sizeof(void*))) { kfifo_in(&tcp_task->r2tpool.queue, (void*)&r2t, @@ -471,7 +470,6 @@ sizeof(void*)); tcp_task->r2t = NULL; } - spin_unlock_bh(&tcp_task->queue2pool); } EXPORT_SYMBOL_GPL(iscsi_tcp_cleanup_task); @@ -579,13 +577,11 @@ return ISCSI_ERR_DATALEN; } - spin_lock(&tcp_task->pool2queue); rc = kfifo_out(&tcp_task->r2tpool.queue, (void *)&r2t, sizeof(void *)); if (!rc) { iscsi_conn_printk(KERN_ERR, conn, "Could not allocate R2T. " "Target has sent more R2Ts than it " "negotiated for or driver has leaked.\n"); - spin_unlock(&tcp_task->pool2queue); return ISCSI_ERR_PROTO; } @@ -600,7 +596,6 @@ tcp_task->exp_datasn = r2tsn + 1; kfifo_in(&tcp_task->r2tqueue, (void*)&r2t, sizeof(void*)); conn->r2t_pdus_cnt++; - spin_unlock(&tcp_task->pool2queue); iscsi_requeue_task(task); return 0; @@ -673,14 +668,14 @@ switch(opcode) { case ISCSI_OP_SCSI_DATA_IN: - spin_lock(&conn->session->back_lock); + spin_lock(&conn->session->lock); task = iscsi_itt_to_ctask(conn, hdr->itt); if (!task) rc = ISCSI_ERR_BAD_ITT; else rc = iscsi_tcp_data_in(conn, task); if (rc) { - spin_unlock(&conn->session->back_lock); + spin_unlock(&conn->session->lock); break; } @@ -713,11 +708,11 @@ tcp_conn->in.datalen, iscsi_tcp_process_data_in, rx_hash); - spin_unlock(&conn->session->back_lock); + spin_unlock(&conn->session->lock); return rc; } rc = __iscsi_complete_pdu(conn, hdr, NULL, 0); - spin_unlock(&conn->session->back_lock); + spin_unlock(&conn->session->lock); break; case ISCSI_OP_SCSI_CMD_RSP: if (tcp_conn->in.datalen) { @@ -727,20 +722,18 @@ rc = iscsi_complete_pdu(conn, hdr, NULL, 0); break; case ISCSI_OP_R2T: - spin_lock(&conn->session->back_lock); + spin_lock(&conn->session->lock); task = iscsi_itt_to_ctask(conn, hdr->itt); - spin_unlock(&conn->session->back_lock); if (!task) rc = ISCSI_ERR_BAD_ITT; else if (ahslen) rc = ISCSI_ERR_AHSLEN; else if (task->sc->sc_data_direction == DMA_TO_DEVICE) { task->last_xfer = jiffies; - spin_lock(&conn->session->frwd_lock); rc = iscsi_tcp_r2t_rsp(conn, task); - spin_unlock(&conn->session->frwd_lock); } else rc = ISCSI_ERR_PROTO; + spin_unlock(&conn->session->lock); break; case ISCSI_OP_LOGIN_RSP: case ISCSI_OP_TEXT_RSP: @@ -988,13 +981,14 @@ static struct iscsi_r2t_info *iscsi_tcp_get_curr_r2t(struct iscsi_task *task) { + struct iscsi_session *session = task->conn->session; struct iscsi_tcp_task *tcp_task = task->dd_data; struct iscsi_r2t_info *r2t = NULL; if (iscsi_task_has_unsol_data(task)) r2t = &task->unsol_r2t; else { - spin_lock_bh(&tcp_task->queue2pool); + spin_lock_bh(&session->lock); if (tcp_task->r2t) { r2t = tcp_task->r2t; /* Continue with this R2T? */ @@ -1016,7 +1010,7 @@ else r2t = tcp_task->r2t; } - spin_unlock_bh(&tcp_task->queue2pool); + spin_unlock_bh(&session->lock); } return r2t; @@ -1146,8 +1140,6 @@ iscsi_pool_free(&tcp_task->r2tpool); goto r2t_alloc_fail; } - spin_lock_init(&tcp_task->pool2queue); - spin_lock_init(&tcp_task->queue2pool); } return 0; --- linux-raspi2-4.2.0.orig/drivers/scsi/megaraid/megaraid_sas.h +++ linux-raspi2-4.2.0/drivers/scsi/megaraid/megaraid_sas.h @@ -364,6 +364,8 @@ MR_EVT_ARGS_GENERIC, }; + +#define SGE_BUFFER_SIZE 4096 /* * define constants for device list query options */ @@ -1748,6 +1750,7 @@ u8 UnevenSpanSupport; u8 supportmax256vd; + u8 allow_fw_scan; u16 fw_supported_vd_count; u16 fw_supported_pd_count; --- linux-raspi2-4.2.0.orig/drivers/scsi/megaraid/megaraid_sas_base.c +++ linux-raspi2-4.2.0/drivers/scsi/megaraid/megaraid_sas_base.c @@ -1650,6 +1650,20 @@ static int megasas_slave_configure(struct scsi_device *sdev) { + u16 pd_index = 0; + struct megasas_instance *instance; + + instance = megasas_lookup_instance(sdev->host->host_no); + if (instance->allow_fw_scan) { + if (sdev->channel < MEGASAS_MAX_PD_CHANNELS && + sdev->type == TYPE_DISK) { + pd_index = (sdev->channel * MEGASAS_MAX_DEV_PER_CHANNEL) + + sdev->id; + if (instance->pd_list[pd_index].driveState != + MR_PD_STATE_SYSTEM) + return -ENXIO; + } + } /* * The RAID firmware may require extended timeouts. */ @@ -1671,8 +1685,8 @@ pd_index = (sdev->channel * MEGASAS_MAX_DEV_PER_CHANNEL) + sdev->id; - if (instance->pd_list[pd_index].driveState == - MR_PD_STATE_SYSTEM) { + if ((instance->allow_fw_scan || instance->pd_list[pd_index].driveState == + MR_PD_STATE_SYSTEM)) { return 0; } return -ENXIO; @@ -4542,6 +4556,7 @@ case PCI_DEVICE_ID_DELL_PERC5: default: instance->instancet = &megasas_instance_template_xscale; + instance->allow_fw_scan = 1; break; } @@ -4754,7 +4769,7 @@ instance->max_sectors_per_req = instance->max_num_sge * - PAGE_SIZE / 512; + SGE_BUFFER_SIZE / 512; if (tmp_sectors && (instance->max_sectors_per_req > tmp_sectors)) instance->max_sectors_per_req = tmp_sectors; @@ -6325,6 +6340,9 @@ int i; int error = 0; compat_uptr_t ptr; + unsigned long local_raw_ptr; + u32 local_sense_off; + u32 local_sense_len; if (clear_user(ioc, sizeof(*ioc))) return -EFAULT; @@ -6342,9 +6360,15 @@ * sense_len is not null, so prepare the 64bit value under * the same condition. */ - if (ioc->sense_len) { + if (get_user(local_raw_ptr, ioc->frame.raw) || + get_user(local_sense_off, &ioc->sense_off) || + get_user(local_sense_len, &ioc->sense_len)) + return -EFAULT; + + + if (local_sense_len) { void __user **sense_ioc_ptr = - (void __user **)(ioc->frame.raw + ioc->sense_off); + (void __user **)((u8*)local_raw_ptr + local_sense_off); compat_uptr_t *sense_cioc_ptr = (compat_uptr_t *)(cioc->frame.raw + cioc->sense_off); if (get_user(ptr, sense_cioc_ptr) || --- linux-raspi2-4.2.0.orig/drivers/scsi/mvsas/mv_sas.c +++ linux-raspi2-4.2.0/drivers/scsi/mvsas/mv_sas.c @@ -887,6 +887,8 @@ static void mvs_slot_task_free(struct mvs_info *mvi, struct sas_task *task, struct mvs_slot_info *slot, u32 slot_idx) { + if (!slot) + return; if (!slot->task) return; if (!sas_protocol_ata(task->task_proto)) --- linux-raspi2-4.2.0.orig/drivers/scsi/qla4xxx/ql4_isr.c +++ linux-raspi2-4.2.0/drivers/scsi/qla4xxx/ql4_isr.c @@ -385,9 +385,9 @@ cls_conn = ddb_entry->conn; conn = cls_conn->dd_data; - spin_lock(&conn->session->back_lock); + spin_lock(&conn->session->lock); task = iscsi_itt_to_task(conn, itt); - spin_unlock(&conn->session->back_lock); + spin_unlock(&conn->session->lock); if (task == NULL) { ql4_printk(KERN_ERR, ha, "%s: Task is NULL\n", __func__); --- linux-raspi2-4.2.0.orig/drivers/scsi/scsi_error.c +++ linux-raspi2-4.2.0/drivers/scsi/scsi_error.c @@ -2169,8 +2169,17 @@ * We never actually get interrupted because kthread_run * disables signal delivery for the created thread. */ - while (!kthread_should_stop()) { + while (true) { + /* + * The sequence in kthread_stop() sets the stop flag first + * then wakes the process. To avoid missed wakeups, the task + * should always be in a non running state before the stop + * flag is checked + */ set_current_state(TASK_INTERRUPTIBLE); + if (kthread_should_stop()) + break; + if ((shost->host_failed == 0 && shost->host_eh_scheduled == 0) || shost->host_failed != atomic_read(&shost->host_busy)) { SCSI_LOG_ERROR_RECOVERY(1, --- linux-raspi2-4.2.0.orig/drivers/scsi/scsi_scan.c +++ linux-raspi2-4.2.0/drivers/scsi/scsi_scan.c @@ -1712,8 +1712,7 @@ return NULL; if (shost->async_scan) { - shost_printk(KERN_INFO, shost, "%s called twice\n", __func__); - dump_stack(); + shost_printk(KERN_DEBUG, shost, "%s called twice\n", __func__); return NULL; } --- linux-raspi2-4.2.0.orig/drivers/scsi/scsi_sysfs.c +++ linux-raspi2-4.2.0/drivers/scsi/scsi_sysfs.c @@ -898,7 +898,7 @@ return -EINVAL; sdev->queue_ramp_up_period = msecs_to_jiffies(period); - return period; + return count; } static DEVICE_ATTR(queue_ramp_up_period, S_IRUGO | S_IWUSR, @@ -1067,6 +1067,14 @@ { struct device *dev = &sdev->sdev_gendev; + /* + * This cleanup path is not reentrant and while it is impossible + * to get a new reference with scsi_device_get() someone can still + * hold a previously acquired one. + */ + if (sdev->sdev_state == SDEV_DEL) + return; + if (sdev->is_visible) { if (scsi_device_set_state(sdev, SDEV_CANCEL) != 0) return; @@ -1148,31 +1156,23 @@ void scsi_remove_target(struct device *dev) { struct Scsi_Host *shost = dev_to_shost(dev->parent); - struct scsi_target *starget, *last = NULL; + struct scsi_target *starget; unsigned long flags; - /* remove targets being careful to lookup next entry before - * deleting the last - */ +restart: spin_lock_irqsave(shost->host_lock, flags); list_for_each_entry(starget, &shost->__targets, siblings) { if (starget->state == STARGET_DEL) continue; if (starget->dev.parent == dev || &starget->dev == dev) { - /* assuming new targets arrive at the end */ kref_get(&starget->reap_ref); spin_unlock_irqrestore(shost->host_lock, flags); - if (last) - scsi_target_reap(last); - last = starget; __scsi_remove_target(starget); - spin_lock_irqsave(shost->host_lock, flags); + scsi_target_reap(starget); + goto restart; } } spin_unlock_irqrestore(shost->host_lock, flags); - - if (last) - scsi_target_reap(last); } EXPORT_SYMBOL(scsi_remove_target); --- linux-raspi2-4.2.0.orig/drivers/scsi/storvsc_drv.c +++ linux-raspi2-4.2.0/drivers/scsi/storvsc_drv.c @@ -56,15 +56,18 @@ * V1 RC > 2008/1/31: 2.0 * Win7: 4.2 * Win8: 5.1 + * Win8.1: 6.0 + * Win10: 6.2 */ +#define VMSTOR_PROTO_VERSION(MAJOR_, MINOR_) ((((MAJOR_) & 0xff) << 8) | \ + (((MINOR_) & 0xff))) -#define VMSTOR_WIN7_MAJOR 4 -#define VMSTOR_WIN7_MINOR 2 - -#define VMSTOR_WIN8_MAJOR 5 -#define VMSTOR_WIN8_MINOR 1 - +#define VMSTOR_PROTO_VERSION_WIN6 VMSTOR_PROTO_VERSION(2, 0) +#define VMSTOR_PROTO_VERSION_WIN7 VMSTOR_PROTO_VERSION(4, 2) +#define VMSTOR_PROTO_VERSION_WIN8 VMSTOR_PROTO_VERSION(5, 1) +#define VMSTOR_PROTO_VERSION_WIN8_1 VMSTOR_PROTO_VERSION(6, 0) +#define VMSTOR_PROTO_VERSION_WIN10 VMSTOR_PROTO_VERSION(6, 2) /* Packet structure describing virtual storage requests. */ enum vstor_packet_operation { @@ -148,21 +151,18 @@ /* * Sense buffer size changed in win8; have a run-time - * variable to track the size we should use. + * variable to track the size we should use. This value will + * likely change during protocol negotiation but it is valid + * to start by assuming pre-Win8. */ -static int sense_buffer_size; +static int sense_buffer_size = PRE_WIN8_STORVSC_SENSE_BUFFER_SIZE; /* - * The size of the vmscsi_request has changed in win8. The - * additional size is because of new elements added to the - * structure. These elements are valid only when we are talking - * to a win8 host. - * Track the correction to size we need to apply. - */ - -static int vmscsi_size_delta; -static int vmstor_current_major; -static int vmstor_current_minor; + * The storage protocol version is determined during the + * initial exchange with the host. It will indicate which + * storage functionality is available in the host. +*/ +static int vmstor_proto_version; struct vmscsi_win8_extension { /* @@ -207,6 +207,56 @@ /* + * The size of the vmscsi_request has changed in win8. The + * additional size is because of new elements added to the + * structure. These elements are valid only when we are talking + * to a win8 host. + * Track the correction to size we need to apply. This value + * will likely change during protocol negotiation but it is + * valid to start by assuming pre-Win8. + */ +static int vmscsi_size_delta = sizeof(struct vmscsi_win8_extension); + +/* + * The list of storage protocols in order of preference. + */ +struct vmstor_protocol { + int protocol_version; + int sense_buffer_size; + int vmscsi_size_delta; +}; + + +static const struct vmstor_protocol vmstor_protocols[] = { + { + VMSTOR_PROTO_VERSION_WIN10, + POST_WIN7_STORVSC_SENSE_BUFFER_SIZE, + 0 + }, + { + VMSTOR_PROTO_VERSION_WIN8_1, + POST_WIN7_STORVSC_SENSE_BUFFER_SIZE, + 0 + }, + { + VMSTOR_PROTO_VERSION_WIN8, + POST_WIN7_STORVSC_SENSE_BUFFER_SIZE, + 0 + }, + { + VMSTOR_PROTO_VERSION_WIN7, + PRE_WIN8_STORVSC_SENSE_BUFFER_SIZE, + sizeof(struct vmscsi_win8_extension), + }, + { + VMSTOR_PROTO_VERSION_WIN6, + PRE_WIN8_STORVSC_SENSE_BUFFER_SIZE, + sizeof(struct vmscsi_win8_extension), + } +}; + + +/* * This structure is sent during the intialization phase to get the different * properties of the channel. */ @@ -426,7 +476,6 @@ struct storvsc_scan_work *wrk; struct Scsi_Host *host; struct scsi_device *sdev; - unsigned long flags; wrk = container_of(work, struct storvsc_scan_work, work); host = wrk->host; @@ -443,14 +492,8 @@ * may have been removed this way. */ mutex_lock(&host->scan_mutex); - spin_lock_irqsave(host->host_lock, flags); - list_for_each_entry(sdev, &host->__devices, siblings) { - spin_unlock_irqrestore(host->host_lock, flags); + shost_for_each_device(sdev, host) scsi_test_unit_ready(sdev, 1, 1, NULL); - spin_lock_irqsave(host->host_lock, flags); - continue; - } - spin_unlock_irqrestore(host->host_lock, flags); mutex_unlock(&host->scan_mutex); /* * Now scan the host to discover LUNs that may have been added. @@ -481,18 +524,6 @@ kfree(wrk); } -/* - * Major/minor macros. Minor version is in LSB, meaning that earlier flat - * version numbers will be interpreted as "0.x" (i.e., 1 becomes 0.1). - */ - -static inline u16 storvsc_get_version(u8 major, u8 minor) -{ - u16 version; - - version = ((major << 8) | minor); - return version; -} /* * We can get incoming messages from the host that are not in response to @@ -885,7 +916,7 @@ struct storvsc_device *stor_device; struct storvsc_cmd_request *request; struct vstor_packet *vstor_packet; - int ret, t; + int ret, t, i; int max_chns; bool process_sub_channels = false; @@ -921,41 +952,65 @@ } if (vstor_packet->operation != VSTOR_OPERATION_COMPLETE_IO || - vstor_packet->status != 0) + vstor_packet->status != 0) { + ret = -EINVAL; goto cleanup; + } - /* reuse the packet for version range supported */ - memset(vstor_packet, 0, sizeof(struct vstor_packet)); - vstor_packet->operation = VSTOR_OPERATION_QUERY_PROTOCOL_VERSION; - vstor_packet->flags = REQUEST_COMPLETION_FLAG; + for (i = 0; i < ARRAY_SIZE(vmstor_protocols); i++) { + /* reuse the packet for version range supported */ + memset(vstor_packet, 0, sizeof(struct vstor_packet)); + vstor_packet->operation = + VSTOR_OPERATION_QUERY_PROTOCOL_VERSION; + vstor_packet->flags = REQUEST_COMPLETION_FLAG; - vstor_packet->version.major_minor = - storvsc_get_version(vmstor_current_major, vmstor_current_minor); + vstor_packet->version.major_minor = + vmstor_protocols[i].protocol_version; - /* - * The revision number is only used in Windows; set it to 0. - */ - vstor_packet->version.revision = 0; + /* + * The revision number is only used in Windows; set it to 0. + */ + vstor_packet->version.revision = 0; - ret = vmbus_sendpacket(device->channel, vstor_packet, + ret = vmbus_sendpacket(device->channel, vstor_packet, (sizeof(struct vstor_packet) - vmscsi_size_delta), (unsigned long)request, VM_PKT_DATA_INBAND, VMBUS_DATA_PACKET_FLAG_COMPLETION_REQUESTED); - if (ret != 0) - goto cleanup; + if (ret != 0) + goto cleanup; - t = wait_for_completion_timeout(&request->wait_event, 5*HZ); - if (t == 0) { - ret = -ETIMEDOUT; - goto cleanup; + t = wait_for_completion_timeout(&request->wait_event, 5*HZ); + if (t == 0) { + ret = -ETIMEDOUT; + goto cleanup; + } + + if (vstor_packet->operation != VSTOR_OPERATION_COMPLETE_IO) { + ret = -EINVAL; + goto cleanup; + } + + if (vstor_packet->status == 0) { + vmstor_proto_version = + vmstor_protocols[i].protocol_version; + + sense_buffer_size = + vmstor_protocols[i].sense_buffer_size; + + vmscsi_size_delta = + vmstor_protocols[i].vmscsi_size_delta; + + break; + } } - if (vstor_packet->operation != VSTOR_OPERATION_COMPLETE_IO || - vstor_packet->status != 0) + if (vstor_packet->status != 0) { + ret = -EINVAL; goto cleanup; + } memset(vstor_packet, 0, sizeof(struct vstor_packet)); @@ -979,8 +1034,10 @@ } if (vstor_packet->operation != VSTOR_OPERATION_COMPLETE_IO || - vstor_packet->status != 0) + vstor_packet->status != 0) { + ret = -EINVAL; goto cleanup; + } /* * Check to see if multi-channel support is there. @@ -988,8 +1045,7 @@ * support multi-channel. */ max_chns = vstor_packet->storage_channel_properties.max_channel_cnt; - if ((vmbus_proto_version != VERSION_WIN7) && - (vmbus_proto_version != VERSION_WS2008)) { + if (vmstor_proto_version >= VMSTOR_PROTO_VERSION_WIN8) { if (vstor_packet->storage_channel_properties.flags & STORAGE_CHANNEL_SUPPORTS_MULTI_CHANNEL) process_sub_channels = true; @@ -1018,8 +1074,10 @@ } if (vstor_packet->operation != VSTOR_OPERATION_COMPLETE_IO || - vstor_packet->status != 0) + vstor_packet->status != 0) { + ret = -EINVAL; goto cleanup; + } if (process_sub_channels) handle_multichannel_storage(device, max_chns); @@ -1428,15 +1486,19 @@ /* * If the host is WIN8 or WIN8 R2, claim conformance to SPC-3 - * if the device is a MSFT virtual device. + * if the device is a MSFT virtual device. If the host is + * WIN10 or newer, allow write_same. */ if (!strncmp(sdevice->vendor, "Msft", 4)) { - switch (vmbus_proto_version) { - case VERSION_WIN8: - case VERSION_WIN8_1: + switch (vmstor_proto_version) { + case VMSTOR_PROTO_VERSION_WIN8: + case VMSTOR_PROTO_VERSION_WIN8_1: sdevice->scsi_level = SCSI_SPC_3; break; } + + if (vmstor_proto_version >= VMSTOR_PROTO_VERSION_WIN10) + sdevice->no_write_same = 0; } return 0; @@ -1563,7 +1625,7 @@ u32 payload_sz; u32 length; - if (vmstor_current_major <= VMSTOR_WIN8_MAJOR) { + if (vmstor_proto_version <= VMSTOR_PROTO_VERSION_WIN8) { /* * On legacy hosts filter unimplemented commands. * Future hosts are expected to correctly handle @@ -1585,8 +1647,7 @@ vm_srb->win8_extension.time_out_value = 60; vm_srb->win8_extension.srb_flags |= - (SRB_FLAGS_QUEUE_ACTION_ENABLE | - SRB_FLAGS_DISABLE_SYNCH_TRANSFER); + SRB_FLAGS_DISABLE_SYNCH_TRANSFER; /* Build the SRB */ switch (scmnd->sc_data_direction) { @@ -1598,10 +1659,18 @@ vm_srb->data_in = READ_TYPE; vm_srb->win8_extension.srb_flags |= SRB_FLAGS_DATA_IN; break; - default: + case DMA_NONE: vm_srb->data_in = UNKNOWN_TYPE; vm_srb->win8_extension.srb_flags |= SRB_FLAGS_NO_DATA_TRANSFER; break; + default: + /* + * This is DMA_BIDIRECTIONAL or something else we are never + * supposed to see here. + */ + WARN(1, "Unexpected data direction: %d\n", + scmnd->sc_data_direction); + return -EINVAL; } @@ -1758,22 +1827,11 @@ * set state to properly communicate with the host. */ - switch (vmbus_proto_version) { - case VERSION_WS2008: - case VERSION_WIN7: - sense_buffer_size = PRE_WIN8_STORVSC_SENSE_BUFFER_SIZE; - vmscsi_size_delta = sizeof(struct vmscsi_win8_extension); - vmstor_current_major = VMSTOR_WIN7_MAJOR; - vmstor_current_minor = VMSTOR_WIN7_MINOR; + if (vmbus_proto_version < VERSION_WIN8) { max_luns_per_target = STORVSC_IDE_MAX_LUNS_PER_TARGET; max_targets = STORVSC_IDE_MAX_TARGETS; max_channels = STORVSC_IDE_MAX_CHANNELS; - break; - default: - sense_buffer_size = POST_WIN7_STORVSC_SENSE_BUFFER_SIZE; - vmscsi_size_delta = 0; - vmstor_current_major = VMSTOR_WIN8_MAJOR; - vmstor_current_minor = VMSTOR_WIN8_MINOR; + } else { max_luns_per_target = STORVSC_MAX_LUNS_PER_TARGET; max_targets = STORVSC_MAX_TARGETS; max_channels = STORVSC_MAX_CHANNELS; @@ -1783,7 +1841,6 @@ * VCPUs in the guest. */ max_sub_channels = (num_cpus / storvsc_vcpus_per_sub_channel); - break; } scsi_driver.can_queue = (max_outstanding_req_per_channel * @@ -1849,6 +1906,11 @@ * 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 /* Register the HBA and start the scsi bus scan */ ret = scsi_add_host(host, &device->device); --- linux-raspi2-4.2.0.orig/drivers/soc/tegra/pmc.c +++ linux-raspi2-4.2.0/drivers/soc/tegra/pmc.c @@ -736,12 +736,12 @@ u32 value, checksum; if (!pmc->soc->has_tsense_reset) - goto out; + return; np = of_find_node_by_name(pmc->dev->of_node, "i2c-thermtrip"); if (!np) { dev_warn(dev, "i2c-thermtrip node not found, %s.\n", disabled); - goto out; + return; } if (of_property_read_u32(np, "nvidia,i2c-controller-id", &ctrl_id)) { --- linux-raspi2-4.2.0.orig/drivers/spi/Kconfig +++ linux-raspi2-4.2.0/drivers/spi/Kconfig @@ -78,7 +78,7 @@ config SPI_BCM2835 tristate "BCM2835 SPI controller" depends on GPIOLIB - depends on ARCH_BCM2835 || COMPILE_TEST + depends on ARCH_BCM2835 || ARCH_BCM2708 || ARCH_BCM2709 || COMPILE_TEST depends on GPIOLIB help This selects a driver for the Broadcom BCM2835 SPI master. @@ -88,6 +88,14 @@ is for the regular SPI controller. Slave mode operation is not also not supported. +config SPI_BCM2708 + tristate "BCM2708 SPI controller driver (SPI0)" + depends on MACH_BCM2708 || MACH_BCM2709 + help + This selects a driver for the Broadcom BCM2708 SPI master (SPI0). This + driver is not compatible with the "Universal SPI Master" or the SPI slave + device. + config SPI_BFIN5XX tristate "SPI controller driver for ADI Blackfin5xx" depends on BLACKFIN && !BF60x --- linux-raspi2-4.2.0.orig/drivers/spi/Makefile +++ linux-raspi2-4.2.0/drivers/spi/Makefile @@ -20,6 +20,7 @@ obj-$(CONFIG_SPI_BCM63XX_HSSPI) += spi-bcm63xx-hsspi.o obj-$(CONFIG_SPI_BFIN5XX) += spi-bfin5xx.o obj-$(CONFIG_SPI_ADI_V3) += spi-adi-v3.o +obj-$(CONFIG_SPI_BCM2708) += spi-bcm2708.o obj-$(CONFIG_SPI_BFIN_SPORT) += spi-bfin-sport.o obj-$(CONFIG_SPI_BITBANG) += spi-bitbang.o obj-$(CONFIG_SPI_BUTTERFLY) += spi-butterfly.o --- linux-raspi2-4.2.0.orig/drivers/spi/spi-atmel.c +++ linux-raspi2-4.2.0/drivers/spi/spi-atmel.c @@ -774,7 +774,8 @@ *plen = len; - if (atmel_spi_dma_slave_config(as, &slave_config, 8)) + if (atmel_spi_dma_slave_config(as, &slave_config, + xfer->bits_per_word)) goto err_exit; /* Send both scatterlists */ --- linux-raspi2-4.2.0.orig/drivers/spi/spi-bcm2708.c +++ linux-raspi2-4.2.0/drivers/spi/spi-bcm2708.c @@ -0,0 +1,628 @@ +/* + * Driver for Broadcom BCM2708 SPI Controllers + * + * Copyright (C) 2012 Chris Boot + * + * This driver is inspired by: + * spi-ath79.c, Copyright (C) 2009-2011 Gabor Juhos + * spi-atmel.c, Copyright (C) 2006 Atmel Corporation + * + * 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 +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +/* SPI register offsets */ +#define SPI_CS 0x00 +#define SPI_FIFO 0x04 +#define SPI_CLK 0x08 +#define SPI_DLEN 0x0c +#define SPI_LTOH 0x10 +#define SPI_DC 0x14 + +/* Bitfields in CS */ +#define SPI_CS_LEN_LONG 0x02000000 +#define SPI_CS_DMA_LEN 0x01000000 +#define SPI_CS_CSPOL2 0x00800000 +#define SPI_CS_CSPOL1 0x00400000 +#define SPI_CS_CSPOL0 0x00200000 +#define SPI_CS_RXF 0x00100000 +#define SPI_CS_RXR 0x00080000 +#define SPI_CS_TXD 0x00040000 +#define SPI_CS_RXD 0x00020000 +#define SPI_CS_DONE 0x00010000 +#define SPI_CS_LEN 0x00002000 +#define SPI_CS_REN 0x00001000 +#define SPI_CS_ADCS 0x00000800 +#define SPI_CS_INTR 0x00000400 +#define SPI_CS_INTD 0x00000200 +#define SPI_CS_DMAEN 0x00000100 +#define SPI_CS_TA 0x00000080 +#define SPI_CS_CSPOL 0x00000040 +#define SPI_CS_CLEAR_RX 0x00000020 +#define SPI_CS_CLEAR_TX 0x00000010 +#define SPI_CS_CPOL 0x00000008 +#define SPI_CS_CPHA 0x00000004 +#define SPI_CS_CS_10 0x00000002 +#define SPI_CS_CS_01 0x00000001 + +#define SPI_TIMEOUT_MS 1000 + +#define DRV_NAME "bcm2708_spi" + +struct bcm2708_spi { + spinlock_t lock; + void __iomem *base; + int irq; + struct clk *clk; + bool stopping; + + struct list_head queue; + struct workqueue_struct *workq; + struct work_struct work; + struct completion done; + + const u8 *tx_buf; + u8 *rx_buf; + int len; +}; + +struct bcm2708_spi_state { + u32 cs; + u16 cdiv; +}; + +/* + * This function sets the ALT mode on the SPI pins so that we can use them with + * the SPI hardware. + * + * FIXME: This is a hack. Use pinmux / pinctrl. + */ +static void bcm2708_init_pinmode(void) +{ +#define INP_GPIO(g) *(gpio+((g)/10)) &= ~(7<<(((g)%10)*3)) +#define SET_GPIO_ALT(g,a) *(gpio+(((g)/10))) |= (((a)<=3?(a)+4:(a)==4?3:2)<<(((g)%10)*3)) + + int pin; + u32 *gpio = ioremap(GPIO_BASE, SZ_16K); + + /* SPI is on GPIO 7..11 */ + for (pin = 7; pin <= 11; pin++) { + INP_GPIO(pin); /* set mode to GPIO input first */ + SET_GPIO_ALT(pin, 0); /* set mode to ALT 0 */ + } + + iounmap(gpio); + +#undef INP_GPIO +#undef SET_GPIO_ALT +} + +static inline u32 bcm2708_rd(struct bcm2708_spi *bs, unsigned reg) +{ + return readl(bs->base + reg); +} + +static inline void bcm2708_wr(struct bcm2708_spi *bs, unsigned reg, u32 val) +{ + writel(val, bs->base + reg); +} + +static inline void bcm2708_rd_fifo(struct bcm2708_spi *bs, int len) +{ + u8 byte; + + while (len--) { + byte = bcm2708_rd(bs, SPI_FIFO); + if (bs->rx_buf) + *bs->rx_buf++ = byte; + } +} + +static inline void bcm2708_wr_fifo(struct bcm2708_spi *bs, int len) +{ + u8 byte; + u16 val; + + if (len > bs->len) + len = bs->len; + + if (unlikely(bcm2708_rd(bs, SPI_CS) & SPI_CS_LEN)) { + /* LoSSI mode */ + if (unlikely(len % 2)) { + printk(KERN_ERR"bcm2708_wr_fifo: length must be even, skipping.\n"); + bs->len = 0; + return; + } + while (len) { + if (bs->tx_buf) { + val = *(const u16 *)bs->tx_buf; + bs->tx_buf += 2; + } else + val = 0; + bcm2708_wr(bs, SPI_FIFO, val); + bs->len -= 2; + len -= 2; + } + return; + } + + while (len--) { + byte = bs->tx_buf ? *bs->tx_buf++ : 0; + bcm2708_wr(bs, SPI_FIFO, byte); + bs->len--; + } +} + +static irqreturn_t bcm2708_spi_interrupt(int irq, void *dev_id) +{ + struct spi_master *master = dev_id; + struct bcm2708_spi *bs = spi_master_get_devdata(master); + u32 cs; + + spin_lock(&bs->lock); + + cs = bcm2708_rd(bs, SPI_CS); + + if (cs & SPI_CS_DONE) { + if (bs->len) { /* first interrupt in a transfer */ + /* fill the TX fifo with up to 16 bytes */ + bcm2708_wr_fifo(bs, 16); + } else { /* transfer complete */ + /* disable interrupts */ + cs &= ~(SPI_CS_INTR | SPI_CS_INTD); + bcm2708_wr(bs, SPI_CS, cs); + + /* drain RX FIFO */ + while (cs & SPI_CS_RXD) { + bcm2708_rd_fifo(bs, 1); + cs = bcm2708_rd(bs, SPI_CS); + } + + /* wake up our bh */ + complete(&bs->done); + } + } else if (cs & SPI_CS_RXR) { + /* read 12 bytes of data */ + bcm2708_rd_fifo(bs, 12); + + /* write up to 12 bytes */ + bcm2708_wr_fifo(bs, 12); + } + + spin_unlock(&bs->lock); + + return IRQ_HANDLED; +} + +static int bcm2708_setup_state(struct spi_master *master, + struct device *dev, struct bcm2708_spi_state *state, + u32 hz, u8 csel, u8 mode, u8 bpw) +{ + struct bcm2708_spi *bs = spi_master_get_devdata(master); + int cdiv; + unsigned long bus_hz; + u32 cs = 0; + + bus_hz = clk_get_rate(bs->clk); + + if (hz >= bus_hz) { + cdiv = 2; /* bus_hz / 2 is as fast as we can go */ + } else if (hz) { + cdiv = DIV_ROUND_UP(bus_hz, hz); + + /* CDIV must be a power of 2, so round up */ + cdiv = roundup_pow_of_two(cdiv); + + if (cdiv > 65536) { + dev_dbg(dev, + "setup: %d Hz too slow, cdiv %u; min %ld Hz\n", + hz, cdiv, bus_hz / 65536); + return -EINVAL; + } else if (cdiv == 65536) { + cdiv = 0; + } else if (cdiv == 1) { + cdiv = 2; /* 1 gets rounded down to 0; == 65536 */ + } + } else { + cdiv = 0; + } + + switch (bpw) { + case 8: + break; + case 9: + /* Reading in LoSSI mode is a special case. See 'BCM2835 ARM Peripherals' datasheet */ + cs |= SPI_CS_LEN; + break; + default: + dev_dbg(dev, "setup: invalid bits_per_word %u (must be 8 or 9)\n", + bpw); + return -EINVAL; + } + + if (mode & SPI_CPOL) + cs |= SPI_CS_CPOL; + if (mode & SPI_CPHA) + cs |= SPI_CS_CPHA; + + if (!(mode & SPI_NO_CS)) { + if (mode & SPI_CS_HIGH) { + cs |= SPI_CS_CSPOL; + cs |= SPI_CS_CSPOL0 << csel; + } + + cs |= csel; + } else { + cs |= SPI_CS_CS_10 | SPI_CS_CS_01; + } + + if (state) { + state->cs = cs; + state->cdiv = cdiv; + dev_dbg(dev, "setup: want %d Hz; " + "bus_hz=%lu / cdiv=%u == %lu Hz; " + "mode %u: cs 0x%08X\n", + hz, bus_hz, cdiv, bus_hz/cdiv, mode, cs); + } + + return 0; +} + +static int bcm2708_process_transfer(struct bcm2708_spi *bs, + struct spi_message *msg, struct spi_transfer *xfer) +{ + struct spi_device *spi = msg->spi; + struct bcm2708_spi_state state, *stp; + int ret; + u32 cs; + + if (bs->stopping) + return -ESHUTDOWN; + + if (xfer->bits_per_word || xfer->speed_hz) { + ret = bcm2708_setup_state(spi->master, &spi->dev, &state, + xfer->speed_hz ? xfer->speed_hz : spi->max_speed_hz, + spi->chip_select, spi->mode, + xfer->bits_per_word ? xfer->bits_per_word : + spi->bits_per_word); + if (ret) + return ret; + + stp = &state; + } else { + stp = spi->controller_state; + } + + reinit_completion(&bs->done); + bs->tx_buf = xfer->tx_buf; + bs->rx_buf = xfer->rx_buf; + bs->len = xfer->len; + + cs = stp->cs | SPI_CS_INTR | SPI_CS_INTD | SPI_CS_TA; + + bcm2708_wr(bs, SPI_CLK, stp->cdiv); + bcm2708_wr(bs, SPI_CS, cs); + + ret = wait_for_completion_timeout(&bs->done, + msecs_to_jiffies(SPI_TIMEOUT_MS)); + if (ret == 0) { + dev_err(&spi->dev, "transfer timed out\n"); + return -ETIMEDOUT; + } + + if (xfer->delay_usecs) + udelay(xfer->delay_usecs); + + if (list_is_last(&xfer->transfer_list, &msg->transfers) || + xfer->cs_change) { + /* clear TA and interrupt flags */ + bcm2708_wr(bs, SPI_CS, stp->cs); + } + + msg->actual_length += (xfer->len - bs->len); + + return 0; +} + +static void bcm2708_work(struct work_struct *work) +{ + struct bcm2708_spi *bs = container_of(work, struct bcm2708_spi, work); + unsigned long flags; + struct spi_message *msg; + struct spi_transfer *xfer; + int status = 0; + + spin_lock_irqsave(&bs->lock, flags); + while (!list_empty(&bs->queue)) { + msg = list_first_entry(&bs->queue, struct spi_message, queue); + list_del_init(&msg->queue); + spin_unlock_irqrestore(&bs->lock, flags); + + list_for_each_entry(xfer, &msg->transfers, transfer_list) { + status = bcm2708_process_transfer(bs, msg, xfer); + if (status) + break; + } + + msg->status = status; + msg->complete(msg->context); + + spin_lock_irqsave(&bs->lock, flags); + } + spin_unlock_irqrestore(&bs->lock, flags); +} + +static int bcm2708_spi_setup(struct spi_device *spi) +{ + struct bcm2708_spi *bs = spi_master_get_devdata(spi->master); + struct bcm2708_spi_state *state; + int ret; + + if (bs->stopping) + return -ESHUTDOWN; + + state = spi->controller_state; + if (!state) { + state = kzalloc(sizeof(*state), GFP_KERNEL); + if (!state) + return -ENOMEM; + + spi->controller_state = state; + } + + ret = bcm2708_setup_state(spi->master, &spi->dev, state, + spi->max_speed_hz, spi->chip_select, spi->mode, + spi->bits_per_word); + if (ret < 0) { + kfree(state); + spi->controller_state = NULL; + return ret; + } + + dev_dbg(&spi->dev, + "setup: cd %d: %d Hz, bpw %u, mode 0x%x -> CS=%08x CDIV=%04x\n", + spi->chip_select, spi->max_speed_hz, spi->bits_per_word, + spi->mode, state->cs, state->cdiv); + + return 0; +} + +static int bcm2708_spi_transfer(struct spi_device *spi, struct spi_message *msg) +{ + struct bcm2708_spi *bs = spi_master_get_devdata(spi->master); + struct spi_transfer *xfer; + int ret; + unsigned long flags; + + if (unlikely(list_empty(&msg->transfers))) + return -EINVAL; + + if (bs->stopping) + return -ESHUTDOWN; + + list_for_each_entry(xfer, &msg->transfers, transfer_list) { + if (!(xfer->tx_buf || xfer->rx_buf) && xfer->len) { + dev_dbg(&spi->dev, "missing rx or tx buf\n"); + return -EINVAL; + } + + if (!xfer->bits_per_word || xfer->speed_hz) + continue; + + ret = bcm2708_setup_state(spi->master, &spi->dev, NULL, + xfer->speed_hz ? xfer->speed_hz : spi->max_speed_hz, + spi->chip_select, spi->mode, + xfer->bits_per_word ? xfer->bits_per_word : + spi->bits_per_word); + if (ret) + return ret; + } + + msg->status = -EINPROGRESS; + msg->actual_length = 0; + + spin_lock_irqsave(&bs->lock, flags); + list_add_tail(&msg->queue, &bs->queue); + queue_work(bs->workq, &bs->work); + spin_unlock_irqrestore(&bs->lock, flags); + + return 0; +} + +static void bcm2708_spi_cleanup(struct spi_device *spi) +{ + if (spi->controller_state) { + kfree(spi->controller_state); + spi->controller_state = NULL; + } +} + +static int bcm2708_spi_probe(struct platform_device *pdev) +{ + struct resource *regs; + int irq, err = -ENOMEM; + struct clk *clk; + struct spi_master *master; + struct bcm2708_spi *bs; + + regs = platform_get_resource(pdev, IORESOURCE_MEM, 0); + if (!regs) { + dev_err(&pdev->dev, "could not get IO memory\n"); + return -ENXIO; + } + + irq = platform_get_irq(pdev, 0); + if (irq < 0) { + dev_err(&pdev->dev, "could not get IRQ\n"); + return irq; + } + + clk = clk_get(&pdev->dev, NULL); + if (IS_ERR(clk)) { + dev_err(&pdev->dev, "could not find clk: %ld\n", PTR_ERR(clk)); + return PTR_ERR(clk); + } + + if (!pdev->dev.of_node) + bcm2708_init_pinmode(); + + master = spi_alloc_master(&pdev->dev, sizeof(*bs)); + if (!master) { + dev_err(&pdev->dev, "spi_alloc_master() failed\n"); + goto out_clk_put; + } + + /* the spi->mode bits understood by this driver: */ + master->mode_bits = SPI_CPOL | SPI_CPHA | SPI_CS_HIGH | SPI_NO_CS; + + master->bus_num = pdev->id; + master->num_chipselect = 3; + master->setup = bcm2708_spi_setup; + master->transfer = bcm2708_spi_transfer; + master->cleanup = bcm2708_spi_cleanup; + master->dev.of_node = pdev->dev.of_node; + platform_set_drvdata(pdev, master); + + bs = spi_master_get_devdata(master); + + spin_lock_init(&bs->lock); + INIT_LIST_HEAD(&bs->queue); + init_completion(&bs->done); + INIT_WORK(&bs->work, bcm2708_work); + + bs->base = ioremap(regs->start, resource_size(regs)); + if (!bs->base) { + dev_err(&pdev->dev, "could not remap memory\n"); + goto out_master_put; + } + + bs->workq = create_singlethread_workqueue(dev_name(&pdev->dev)); + if (!bs->workq) { + dev_err(&pdev->dev, "could not create workqueue\n"); + goto out_iounmap; + } + + bs->irq = irq; + bs->clk = clk; + bs->stopping = false; + + err = request_irq(irq, bcm2708_spi_interrupt, 0, dev_name(&pdev->dev), + master); + if (err) { + dev_err(&pdev->dev, "could not request IRQ: %d\n", err); + goto out_workqueue; + } + + /* initialise the hardware */ + clk_prepare_enable(clk); + bcm2708_wr(bs, SPI_CS, SPI_CS_REN | SPI_CS_CLEAR_RX | SPI_CS_CLEAR_TX); + + err = spi_register_master(master); + if (err) { + dev_err(&pdev->dev, "could not register SPI master: %d\n", err); + goto out_free_irq; + } + + dev_info(&pdev->dev, "SPI Controller at 0x%08lx (irq %d)\n", + (unsigned long)regs->start, irq); + + return 0; + +out_free_irq: + free_irq(bs->irq, master); + clk_disable_unprepare(bs->clk); +out_workqueue: + destroy_workqueue(bs->workq); +out_iounmap: + iounmap(bs->base); +out_master_put: + spi_master_put(master); +out_clk_put: + clk_put(clk); + return err; +} + +static int bcm2708_spi_remove(struct platform_device *pdev) +{ + struct spi_master *master = platform_get_drvdata(pdev); + struct bcm2708_spi *bs = spi_master_get_devdata(master); + + /* reset the hardware and block queue progress */ + spin_lock_irq(&bs->lock); + bs->stopping = true; + bcm2708_wr(bs, SPI_CS, SPI_CS_CLEAR_RX | SPI_CS_CLEAR_TX); + spin_unlock_irq(&bs->lock); + + flush_work(&bs->work); + + clk_disable_unprepare(bs->clk); + clk_put(bs->clk); + free_irq(bs->irq, master); + iounmap(bs->base); + + spi_unregister_master(master); + + return 0; +} + +static const struct of_device_id bcm2708_spi_match[] = { + { .compatible = "brcm,bcm2708-spi", }, + {} +}; +MODULE_DEVICE_TABLE(of, bcm2708_spi_match); + +static struct platform_driver bcm2708_spi_driver = { + .driver = { + .name = DRV_NAME, + .owner = THIS_MODULE, + .of_match_table = bcm2708_spi_match, + }, + .probe = bcm2708_spi_probe, + .remove = bcm2708_spi_remove, +}; + + +static int __init bcm2708_spi_init(void) +{ + return platform_driver_probe(&bcm2708_spi_driver, bcm2708_spi_probe); +} +module_init(bcm2708_spi_init); + +static void __exit bcm2708_spi_exit(void) +{ + platform_driver_unregister(&bcm2708_spi_driver); +} +module_exit(bcm2708_spi_exit); + + +//module_platform_driver(bcm2708_spi_driver); + +MODULE_DESCRIPTION("SPI controller driver for Broadcom BCM2708"); +MODULE_AUTHOR("Chris Boot "); +MODULE_LICENSE("GPL v2"); +MODULE_ALIAS("platform:" DRV_NAME); --- linux-raspi2-4.2.0.orig/drivers/spi/spi-bcm2835.c +++ linux-raspi2-4.2.0/drivers/spi/spi-bcm2835.c @@ -386,14 +386,14 @@ /* otherwise we only allow transfers within the same page * to avoid wasting time on dma_mapping when it is not practical */ - if (((size_t)tfr->tx_buf & PAGE_MASK) + tfr->len > PAGE_SIZE) { + if (((size_t)tfr->tx_buf & (PAGE_SIZE - 1)) + tfr->len > PAGE_SIZE) { dev_warn_once(&spi->dev, "Unaligned spi tx-transfer bridging page\n"); return false; } - if (((size_t)tfr->rx_buf & PAGE_MASK) + tfr->len > PAGE_SIZE) { + if (((size_t)tfr->rx_buf & (PAGE_SIZE - 1)) + tfr->len > PAGE_SIZE) { dev_warn_once(&spi->dev, - "Unaligned spi tx-transfer bridging page\n"); + "Unaligned spi rx-transfer bridging page\n"); return false; } @@ -480,7 +480,7 @@ struct spi_device *spi, struct spi_transfer *tfr, u32 cs, - unsigned long xfer_time_us) + unsigned long long xfer_time_us) { struct bcm2835_spi *bs = spi_master_get_devdata(master); unsigned long timeout; @@ -531,7 +531,8 @@ { struct bcm2835_spi *bs = spi_master_get_devdata(master); unsigned long spi_hz, clk_hz, cdiv; - unsigned long spi_used_hz, xfer_time_us; + unsigned long spi_used_hz; + unsigned long long xfer_time_us; u32 cs = bcm2835_rd(bs, BCM2835_SPI_CS); /* set clock */ @@ -553,13 +554,11 @@ spi_used_hz = cdiv ? (clk_hz / cdiv) : (clk_hz / 65536); bcm2835_wr(bs, BCM2835_SPI_CLK, cdiv); - /* handle all the modes */ + /* handle all the 3-wire mode */ if ((spi->mode & SPI_3WIRE) && (tfr->rx_buf)) cs |= BCM2835_SPI_CS_REN; - if (spi->mode & SPI_CPOL) - cs |= BCM2835_SPI_CS_CPOL; - if (spi->mode & SPI_CPHA) - cs |= BCM2835_SPI_CS_CPHA; + else + cs &= ~BCM2835_SPI_CS_REN; /* for gpio_cs set dummy CS so that no HW-CS get changed * we can not run this in bcm2835_spi_set_cs, as it does @@ -575,9 +574,10 @@ bs->rx_len = tfr->len; /* calculate the estimated time in us the transfer runs */ - xfer_time_us = tfr->len + xfer_time_us = (unsigned long long)tfr->len * 9 /* clocks/byte - SPI-HW waits 1 clock after each byte */ - * 1000000 / spi_used_hz; + * 1000000; + do_div(xfer_time_us, spi_used_hz); /* for short requests run polling*/ if (xfer_time_us <= BCM2835_SPI_POLLING_LIMIT_US) @@ -592,6 +592,25 @@ return bcm2835_spi_transfer_one_irq(master, spi, tfr, cs); } +static int bcm2835_spi_prepare_message(struct spi_master *master, + struct spi_message *msg) +{ + struct spi_device *spi = msg->spi; + struct bcm2835_spi *bs = spi_master_get_devdata(master); + u32 cs = bcm2835_rd(bs, BCM2835_SPI_CS); + + cs &= ~(BCM2835_SPI_CS_CPOL | BCM2835_SPI_CS_CPHA); + + if (spi->mode & SPI_CPOL) + cs |= BCM2835_SPI_CS_CPOL; + if (spi->mode & SPI_CPHA) + cs |= BCM2835_SPI_CS_CPHA; + + bcm2835_wr(bs, BCM2835_SPI_CS, cs); + + return 0; +} + static void bcm2835_spi_handle_err(struct spi_master *master, struct spi_message *msg) { @@ -669,6 +688,8 @@ { int err; struct gpio_chip *chip; + struct device_node *pins; + u32 pingroup_index; /* * sanity checking the native-chipselects */ @@ -685,15 +706,42 @@ "setup: only two native chip-selects are supported\n"); return -EINVAL; } - /* now translate native cs to GPIO */ - /* get the gpio chip for the base */ - chip = gpiochip_find("pinctrl-bcm2835", chip_match_name); - if (!chip) - return 0; + /* now translate native cs to GPIO */ + /* first look for chip select pins in the devices pin groups */ + for (pingroup_index = 0; + (pins = of_parse_phandle(spi->master->dev.of_node, + "pinctrl-0", + pingroup_index)) != 0; + pingroup_index++) { + u32 pin; + u32 pin_index; + for (pin_index = 0; + of_property_read_u32_index(pins, + "brcm,pins", + pin_index, + &pin) == 0; + pin_index++) { + if (((spi->chip_select == 0) && + ((pin == 8) || (pin == 36) || (pin == 46))) || + ((spi->chip_select == 1) && + ((pin == 7) || (pin == 35)))) { + spi->cs_gpio = pin; + break; + } + } + of_node_put(pins); + } + /* if that fails, assume GPIOs 7-11 are used */ + if (!gpio_is_valid(spi->cs_gpio) ) { + /* get the gpio chip for the base */ + chip = gpiochip_find("pinctrl-bcm2835", chip_match_name); + if (!chip) + return 0; - /* and calculate the real CS */ - spi->cs_gpio = chip->base + 8 - spi->chip_select; + /* and calculate the real CS */ + spi->cs_gpio = chip->base + 8 - spi->chip_select; + } /* and set up the "mode" and level */ dev_info(&spi->dev, "setting up native-CS%i as GPIO %i\n", @@ -739,6 +787,7 @@ master->set_cs = bcm2835_spi_set_cs; master->transfer_one = bcm2835_spi_transfer_one; master->handle_err = bcm2835_spi_handle_err; + master->prepare_message = bcm2835_spi_prepare_message; master->dev.of_node = pdev->dev.of_node; bs = spi_master_get_devdata(master); --- linux-raspi2-4.2.0.orig/drivers/spi/spi-bitbang-txrx.h +++ linux-raspi2-4.2.0/drivers/spi/spi-bitbang-txrx.h @@ -49,7 +49,7 @@ { /* if (cpol == 0) this is SPI_MODE_0; else this is SPI_MODE_2 */ - bool oldbit = !(word & 1); + u32 oldbit = (!(word & (1<<(bits-1)))) << 31; /* clock starts at inactive polarity */ for (word <<= (32 - bits); likely(bits); bits--) { @@ -81,7 +81,7 @@ { /* if (cpol == 0) this is SPI_MODE_1; else this is SPI_MODE_3 */ - bool oldbit = !(word & (1 << 31)); + u32 oldbit = (!(word & (1<<(bits-1)))) << 31; /* clock starts at inactive polarity */ for (word <<= (32 - bits); likely(bits); bits--) { --- linux-raspi2-4.2.0.orig/drivers/spi/spi-dw-mmio.c +++ linux-raspi2-4.2.0/drivers/spi/spi-dw-mmio.c @@ -74,6 +74,9 @@ dws->max_freq = clk_get_rate(dwsmmio->clk); + of_property_read_u32(pdev->dev.of_node, "reg-io-width", + &dws->reg_io_width); + num_cs = 4; if (pdev->dev.of_node) --- linux-raspi2-4.2.0.orig/drivers/spi/spi-dw.c +++ linux-raspi2-4.2.0/drivers/spi/spi-dw.c @@ -194,7 +194,7 @@ else txw = *(u16 *)(dws->tx); } - dw_writel(dws, DW_SPI_DR, txw); + dw_write_io_reg(dws, DW_SPI_DR, txw); dws->tx += dws->n_bytes; } } @@ -205,7 +205,7 @@ u16 rxw; while (max--) { - rxw = dw_readl(dws, DW_SPI_DR); + rxw = dw_read_io_reg(dws, DW_SPI_DR); /* Care rx only if the transfer's original "rx" is not null */ if (dws->rx_end - dws->len) { if (dws->n_bytes == 1) @@ -527,8 +527,7 @@ dws->dma_addr = (dma_addr_t)(dws->paddr + 0x60); snprintf(dws->name, sizeof(dws->name), "dw_spi%d", dws->bus_num); - ret = devm_request_irq(dev, dws->irq, dw_spi_irq, IRQF_SHARED, - dws->name, master); + ret = request_irq(dws->irq, dw_spi_irq, IRQF_SHARED, dws->name, master); if (ret < 0) { dev_err(&master->dev, "can not get IRQ\n"); goto err_free_master; @@ -573,6 +572,7 @@ if (dws->dma_ops && dws->dma_ops->dma_exit) dws->dma_ops->dma_exit(dws); spi_enable_chip(dws, 0); + free_irq(dws->irq, master); err_free_master: spi_master_put(master); return ret; @@ -590,6 +590,8 @@ spi_enable_chip(dws, 0); /* Disable clk */ spi_set_clk(dws, 0); + + free_irq(dws->irq, dws->master); } EXPORT_SYMBOL_GPL(dw_spi_remove_host); --- linux-raspi2-4.2.0.orig/drivers/spi/spi-dw.h +++ linux-raspi2-4.2.0/drivers/spi/spi-dw.h @@ -109,6 +109,7 @@ u32 fifo_len; /* depth of the FIFO buffer */ u32 max_freq; /* max bus freq supported */ + u32 reg_io_width; /* DR I/O width in bytes */ u16 bus_num; u16 num_cs; /* supported slave numbers */ @@ -145,11 +146,45 @@ return __raw_readl(dws->regs + offset); } +static inline u16 dw_readw(struct dw_spi *dws, u32 offset) +{ + return __raw_readw(dws->regs + offset); +} + static inline void dw_writel(struct dw_spi *dws, u32 offset, u32 val) { __raw_writel(val, dws->regs + offset); } +static inline void dw_writew(struct dw_spi *dws, u32 offset, u16 val) +{ + __raw_writew(val, dws->regs + offset); +} + +static inline u32 dw_read_io_reg(struct dw_spi *dws, u32 offset) +{ + switch (dws->reg_io_width) { + case 2: + return dw_readw(dws, offset); + case 4: + default: + return dw_readl(dws, offset); + } +} + +static inline void dw_write_io_reg(struct dw_spi *dws, u32 offset, u32 val) +{ + switch (dws->reg_io_width) { + case 2: + dw_writew(dws, offset, val); + break; + case 4: + default: + dw_writel(dws, offset, val); + break; + } +} + static inline void spi_enable_chip(struct dw_spi *dws, int enable) { dw_writel(dws, DW_SPI_SSIENR, (enable ? 1 : 0)); --- linux-raspi2-4.2.0.orig/drivers/spi/spi-img-spfi.c +++ linux-raspi2-4.2.0/drivers/spi/spi-img-spfi.c @@ -105,6 +105,10 @@ bool rx_dma_busy; }; +struct img_spfi_device_data { + bool gpio_requested; +}; + static inline u32 spfi_readl(struct img_spfi *spfi, u32 reg) { return readl(spfi->regs + reg); @@ -267,15 +271,15 @@ cpu_relax(); } - ret = spfi_wait_all_done(spfi); - if (ret < 0) - return ret; - if (rx_bytes > 0 || tx_bytes > 0) { dev_err(spfi->dev, "PIO transfer timed out\n"); return -ETIMEDOUT; } + ret = spfi_wait_all_done(spfi); + if (ret < 0) + return ret; + return 0; } @@ -440,21 +444,50 @@ static int img_spfi_setup(struct spi_device *spi) { - int ret; + int ret = -EINVAL; + struct img_spfi_device_data *spfi_data = spi_get_ctldata(spi); - ret = gpio_request_one(spi->cs_gpio, (spi->mode & SPI_CS_HIGH) ? - GPIOF_OUT_INIT_LOW : GPIOF_OUT_INIT_HIGH, - dev_name(&spi->dev)); - if (ret) - dev_err(&spi->dev, "can't request chipselect gpio %d\n", + if (!spfi_data) { + spfi_data = kzalloc(sizeof(*spfi_data), GFP_KERNEL); + if (!spfi_data) + return -ENOMEM; + spfi_data->gpio_requested = false; + spi_set_ctldata(spi, spfi_data); + } + if (!spfi_data->gpio_requested) { + ret = gpio_request_one(spi->cs_gpio, + (spi->mode & SPI_CS_HIGH) ? + GPIOF_OUT_INIT_LOW : GPIOF_OUT_INIT_HIGH, + dev_name(&spi->dev)); + if (ret) + dev_err(&spi->dev, "can't request chipselect gpio %d\n", spi->cs_gpio); - + else + spfi_data->gpio_requested = true; + } else { + if (gpio_is_valid(spi->cs_gpio)) { + int mode = ((spi->mode & SPI_CS_HIGH) ? + GPIOF_OUT_INIT_LOW : GPIOF_OUT_INIT_HIGH); + + ret = gpio_direction_output(spi->cs_gpio, mode); + if (ret) + dev_err(&spi->dev, "chipselect gpio %d setup failed (%d)\n", + spi->cs_gpio, ret); + } + } return ret; } static void img_spfi_cleanup(struct spi_device *spi) { - gpio_free(spi->cs_gpio); + struct img_spfi_device_data *spfi_data = spi_get_ctldata(spi); + + if (spfi_data) { + if (spfi_data->gpio_requested) + gpio_free(spi->cs_gpio); + kfree(spfi_data); + spi_set_ctldata(spi, NULL); + } } static void img_spfi_config(struct spi_master *master, struct spi_device *spi, --- linux-raspi2-4.2.0.orig/drivers/spi/spi-omap2-mcspi.c +++ linux-raspi2-4.2.0/drivers/spi/spi-omap2-mcspi.c @@ -245,6 +245,7 @@ static void omap2_mcspi_set_cs(struct spi_device *spi, bool enable) { + struct omap2_mcspi *mcspi = spi_master_get_devdata(spi->master); u32 l; /* The controller handles the inverted chip selects @@ -255,6 +256,12 @@ enable = !enable; if (spi->controller_state) { + int err = pm_runtime_get_sync(mcspi->dev); + if (err < 0) { + dev_err(mcspi->dev, "failed to get sync: %d\n", err); + return; + } + l = mcspi_cached_chconf0(spi); if (enable) @@ -263,6 +270,9 @@ l |= OMAP2_MCSPI_CHCONF_FORCE; mcspi_write_chconf0(spi, l); + + pm_runtime_mark_last_busy(mcspi->dev); + pm_runtime_put_autosuspend(mcspi->dev); } } @@ -1207,6 +1217,33 @@ return status; } +static int omap2_mcspi_prepare_message(struct spi_master *master, + struct spi_message *msg) +{ + struct omap2_mcspi *mcspi = spi_master_get_devdata(master); + struct omap2_mcspi_regs *ctx = &mcspi->ctx; + struct omap2_mcspi_cs *cs; + + /* Only a single channel can have the FORCE bit enabled + * in its chconf0 register. + * Scan all channels and disable them except the current one. + * A FORCE can remain from a last transfer having cs_change enabled + */ + list_for_each_entry(cs, &ctx->cs, node) { + if (msg->spi->controller_state == cs) + continue; + + if ((cs->chconf0 & OMAP2_MCSPI_CHCONF_FORCE)) { + cs->chconf0 &= ~OMAP2_MCSPI_CHCONF_FORCE; + writel_relaxed(cs->chconf0, + cs->base + OMAP2_MCSPI_CHCONF0); + readl_relaxed(cs->base + OMAP2_MCSPI_CHCONF0); + } + } + + return 0; +} + static int omap2_mcspi_transfer_one(struct spi_master *master, struct spi_device *spi, struct spi_transfer *t) { @@ -1334,6 +1371,7 @@ master->bits_per_word_mask = SPI_BPW_RANGE_MASK(4, 32); master->setup = omap2_mcspi_setup; master->auto_runtime_pm = true; + master->prepare_message = omap2_mcspi_prepare_message; master->transfer_one = omap2_mcspi_transfer_one; master->set_cs = omap2_mcspi_set_cs; master->cleanup = omap2_mcspi_cleanup; --- linux-raspi2-4.2.0.orig/drivers/spi/spi-orion.c +++ linux-raspi2-4.2.0/drivers/spi/spi-orion.c @@ -41,6 +41,11 @@ #define ORION_SPI_DATA_OUT_REG 0x08 #define ORION_SPI_DATA_IN_REG 0x0c #define ORION_SPI_INT_CAUSE_REG 0x10 +#define ORION_SPI_TIMING_PARAMS_REG 0x18 + +#define ORION_SPI_TMISO_SAMPLE_MASK (0x3 << 6) +#define ORION_SPI_TMISO_SAMPLE_1 (1 << 6) +#define ORION_SPI_TMISO_SAMPLE_2 (2 << 6) #define ORION_SPI_MODE_CPOL (1 << 11) #define ORION_SPI_MODE_CPHA (1 << 12) @@ -70,6 +75,7 @@ unsigned int min_divisor; unsigned int max_divisor; u32 prescale_mask; + bool is_errata_50mhz_ac; }; struct orion_spi { @@ -195,6 +201,41 @@ writel(reg, spi_reg(orion_spi, ORION_SPI_IF_CONFIG_REG)); } +static void +orion_spi_50mhz_ac_timing_erratum(struct spi_device *spi, unsigned int speed) +{ + u32 reg; + struct orion_spi *orion_spi; + + orion_spi = spi_master_get_devdata(spi->master); + + /* + * Erratum description: (Erratum NO. FE-9144572) The device + * SPI interface supports frequencies of up to 50 MHz. + * However, due to this erratum, when the device core clock is + * 250 MHz and the SPI interfaces is configured for 50MHz SPI + * clock and CPOL=CPHA=1 there might occur data corruption on + * reads from the SPI device. + * Erratum Workaround: + * Work in one of the following configurations: + * 1. Set CPOL=CPHA=0 in "SPI Interface Configuration + * Register". + * 2. Set TMISO_SAMPLE value to 0x2 in "SPI Timing Parameters 1 + * Register" before setting the interface. + */ + reg = readl(spi_reg(orion_spi, ORION_SPI_TIMING_PARAMS_REG)); + reg &= ~ORION_SPI_TMISO_SAMPLE_MASK; + + if (clk_get_rate(orion_spi->clk) == 250000000 && + speed == 50000000 && spi->mode & SPI_CPOL && + spi->mode & SPI_CPHA) + reg |= ORION_SPI_TMISO_SAMPLE_2; + else + reg |= ORION_SPI_TMISO_SAMPLE_1; /* This is the default value */ + + writel(reg, spi_reg(orion_spi, ORION_SPI_TIMING_PARAMS_REG)); +} + /* * called only when no transfer is active on the bus */ @@ -216,6 +257,9 @@ orion_spi_mode_set(spi); + if (orion_spi->devdata->is_errata_50mhz_ac) + orion_spi_50mhz_ac_timing_erratum(spi, speed); + rc = orion_spi_baudrate_set(spi, speed); if (rc) return rc; @@ -413,6 +457,14 @@ .prescale_mask = ARMADA_SPI_CLK_PRESCALE_MASK, }; +static const struct orion_spi_dev armada_380_spi_dev_data = { + .typ = ARMADA_SPI, + .max_hz = 50000000, + .max_divisor = 1920, + .prescale_mask = ARMADA_SPI_CLK_PRESCALE_MASK, + .is_errata_50mhz_ac = true, +}; + static const struct of_device_id orion_spi_of_match_table[] = { { .compatible = "marvell,orion-spi", @@ -428,7 +480,7 @@ }, { .compatible = "marvell,armada-380-spi", - .data = &armada_xp_spi_dev_data, + .data = &armada_380_spi_dev_data, }, { .compatible = "marvell,armada-390-spi", --- linux-raspi2-4.2.0.orig/drivers/spi/spi-pxa2xx.c +++ linux-raspi2-4.2.0/drivers/spi/spi-pxa2xx.c @@ -21,6 +21,7 @@ #include #include #include +#include #include #include #include @@ -97,6 +98,15 @@ .tx_threshold_lo = 160, .tx_threshold_hi = 224, }, + { /* LPSS_SPT_SSP */ + .offset = 0x200, + .reg_general = -1, + .reg_ssp = 0x20, + .reg_cs_ctrl = 0x24, + .rx_threshold = 1, + .tx_threshold_lo = 32, + .tx_threshold_hi = 56, + }, }; static inline const struct lpss_config @@ -110,6 +120,7 @@ switch (drv_data->ssp_type) { case LPSS_LPT_SSP: case LPSS_BYT_SSP: + case LPSS_SPT_SSP: return true; default: return false; @@ -643,6 +654,10 @@ if (!(sccr1_reg & SSCR1_TIE)) mask &= ~SSSR_TFS; + /* Ignore RX timeout interrupt if it is disabled */ + if (!(sccr1_reg & SSCR1_TINTE)) + mask &= ~SSSR_TINT; + if (!(status & mask)) return IRQ_NONE; @@ -1107,6 +1122,7 @@ break; case LPSS_LPT_SSP: case LPSS_BYT_SSP: + case LPSS_SPT_SSP: config = lpss_get_config(drv_data); tx_thres = config->tx_threshold_lo; tx_hi_thres = config->tx_threshold_hi; @@ -1276,6 +1292,31 @@ }; MODULE_DEVICE_TABLE(acpi, pxa2xx_spi_acpi_match); +/* + * PCI IDs of compound devices that integrate both host controller and private + * integrated DMA engine. Please note these are not used in module + * autoloading and probing in this module but matching the LPSS SSP type. + */ +static const struct pci_device_id pxa2xx_spi_pci_compound_match[] = { + /* SPT-LP */ + { PCI_VDEVICE(INTEL, 0x9d29), LPSS_SPT_SSP }, + { PCI_VDEVICE(INTEL, 0x9d2a), LPSS_SPT_SSP }, + /* SPT-H */ + { PCI_VDEVICE(INTEL, 0xa129), LPSS_SPT_SSP }, + { PCI_VDEVICE(INTEL, 0xa12a), LPSS_SPT_SSP }, + { }, +}; + +static bool pxa2xx_spi_idma_filter(struct dma_chan *chan, void *param) +{ + struct device *dev = param; + + if (dev != chan->device->dev->parent) + return false; + + return true; +} + static struct pxa2xx_spi_master * pxa2xx_spi_acpi_get_pdata(struct platform_device *pdev) { @@ -1283,16 +1324,25 @@ struct acpi_device *adev; struct ssp_device *ssp; struct resource *res; - const struct acpi_device_id *id; + const struct acpi_device_id *adev_id = NULL; + const struct pci_device_id *pcidev_id = NULL; int devid, type; if (!ACPI_HANDLE(&pdev->dev) || acpi_bus_get_device(ACPI_HANDLE(&pdev->dev), &adev)) return NULL; - id = acpi_match_device(pdev->dev.driver->acpi_match_table, &pdev->dev); - if (id) - type = (int)id->driver_data; + if (dev_is_pci(pdev->dev.parent)) + pcidev_id = pci_match_id(pxa2xx_spi_pci_compound_match, + to_pci_dev(pdev->dev.parent)); + else + adev_id = acpi_match_device(pdev->dev.driver->acpi_match_table, + &pdev->dev); + + if (adev_id) + type = (int)adev_id->driver_data; + else if (pcidev_id) + type = (int)pcidev_id->driver_data; else return NULL; @@ -1311,6 +1361,12 @@ if (IS_ERR(ssp->mmio_base)) return NULL; + if (pcidev_id) { + pdata->tx_param = pdev->dev.parent; + pdata->rx_param = pdev->dev.parent; + pdata->dma_filter = pxa2xx_spi_idma_filter; + } + ssp->clk = devm_clk_get(&pdev->dev, NULL); ssp->irq = platform_get_irq(pdev, 0); ssp->type = type; @@ -1362,8 +1418,7 @@ return -ENODEV; } - /* Allocate master with space for drv_data and null dma buffer */ - master = spi_alloc_master(dev, sizeof(struct driver_data) + 16); + master = spi_alloc_master(dev, sizeof(struct driver_data)); if (!master) { dev_err(&pdev->dev, "cannot alloc spi_master\n"); pxa_ssp_free(ssp); @@ -1390,7 +1445,6 @@ master->auto_runtime_pm = true; drv_data->ssp_type = ssp->type; - drv_data->null_dma_buf = (u32 *)PTR_ALIGN(&drv_data[1], DMA_ALIGNMENT); drv_data->ioaddr = ssp->mmio_base; drv_data->ssdr_physical = ssp->phys_base + SSDR; @@ -1424,8 +1478,6 @@ } /* Setup DMA if requested */ - drv_data->tx_channel = -1; - drv_data->rx_channel = -1; if (platform_info->enable_dma) { status = pxa2xx_spi_dma_setup(drv_data); if (status) { --- linux-raspi2-4.2.0.orig/drivers/spi/spi-pxa2xx.h +++ linux-raspi2-4.2.0/drivers/spi/spi-pxa2xx.h @@ -36,11 +36,6 @@ /* PXA hookup */ struct pxa2xx_spi_master *master_info; - /* PXA private DMA setup stuff */ - int rx_channel; - int tx_channel; - u32 *null_dma_buf; - /* SSP register addresses */ void __iomem *ioaddr; u32 ssdr_physical; --- linux-raspi2-4.2.0.orig/drivers/spi/spi-sh-msiof.c +++ linux-raspi2-4.2.0/drivers/spi/spi-sh-msiof.c @@ -48,8 +48,8 @@ const struct sh_msiof_chipdata *chipdata; struct sh_msiof_spi_info *info; struct completion done; - int tx_fifo_size; - int rx_fifo_size; + unsigned int tx_fifo_size; + unsigned int rx_fifo_size; void *tx_dma_page; void *rx_dma_page; dma_addr_t tx_dma_addr; @@ -95,8 +95,6 @@ #define MDR2_WDLEN1(i) (((i) - 1) << 16) /* Word Count (1-64/256 (SH, A1))) */ #define MDR2_GRPMASK1 0x00000001 /* Group Output Mask 1 (SH, A1) */ -#define MAX_WDLEN 256U - /* TSCR and RSCR */ #define SCR_BRPS_MASK 0x1f00 /* Prescaler Setting (1-32) */ #define SCR_BRPS(i) (((i) - 1) << 8) @@ -850,7 +848,12 @@ * DMA supports 32-bit words only, hence pack 8-bit and 16-bit * words, with byte resp. word swapping. */ - unsigned int l = min(len, MAX_WDLEN * 4); + unsigned int l = 0; + + if (tx_buf) + l = min(len, p->tx_fifo_size * 4); + if (rx_buf) + l = min(len, p->rx_fifo_size * 4); if (bits <= 8) { if (l & 3) @@ -963,7 +966,7 @@ static const struct sh_msiof_chipdata r8a779x_data = { .tx_fifo_size = 64, - .rx_fifo_size = 256, + .rx_fifo_size = 64, .master_flags = SPI_MASTER_MUST_TX, }; --- linux-raspi2-4.2.0.orig/drivers/spi/spi-ti-qspi.c +++ linux-raspi2-4.2.0/drivers/spi/spi-ti-qspi.c @@ -384,11 +384,10 @@ mutex_unlock(&qspi->list_lock); + ti_qspi_write(qspi, qspi->cmd | QSPI_INVAL, QSPI_SPI_CMD_REG); m->status = status; spi_finalize_current_message(master); - ti_qspi_write(qspi, qspi->cmd | QSPI_INVAL, QSPI_SPI_CMD_REG); - return status; } --- linux-raspi2-4.2.0.orig/drivers/spi/spi-xilinx.c +++ linux-raspi2-4.2.0/drivers/spi/spi-xilinx.c @@ -249,23 +249,28 @@ xspi->tx_ptr = t->tx_buf; xspi->rx_ptr = t->rx_buf; remaining_words = t->len / xspi->bytes_per_word; - reinit_completion(&xspi->done); if (xspi->irq >= 0 && remaining_words > xspi->buffer_size) { + u32 isr; use_irq = true; - xspi->write_fn(XSPI_INTR_TX_EMPTY, - xspi->regs + XIPIF_V123B_IISR_OFFSET); - /* Enable the global IPIF interrupt */ - xspi->write_fn(XIPIF_V123B_GINTR_ENABLE, - xspi->regs + XIPIF_V123B_DGIER_OFFSET); /* Inhibit irq to avoid spurious irqs on tx_empty*/ cr = xspi->read_fn(xspi->regs + XSPI_CR_OFFSET); xspi->write_fn(cr | XSPI_CR_TRANS_INHIBIT, xspi->regs + XSPI_CR_OFFSET); + /* ACK old irqs (if any) */ + isr = xspi->read_fn(xspi->regs + XIPIF_V123B_IISR_OFFSET); + if (isr) + xspi->write_fn(isr, + xspi->regs + XIPIF_V123B_IISR_OFFSET); + /* Enable the global IPIF interrupt */ + xspi->write_fn(XIPIF_V123B_GINTR_ENABLE, + xspi->regs + XIPIF_V123B_DGIER_OFFSET); + reinit_completion(&xspi->done); } while (remaining_words) { int n_words, tx_words, rx_words; + u32 sr; n_words = min(remaining_words, xspi->buffer_size); @@ -280,30 +285,41 @@ if (use_irq) { xspi->write_fn(cr, xspi->regs + XSPI_CR_OFFSET); wait_for_completion(&xspi->done); - } else - while (!(xspi->read_fn(xspi->regs + XSPI_SR_OFFSET) & - XSPI_SR_TX_EMPTY_MASK)) - ; - - /* A transmit has just completed. Process received data and - * check for more data to transmit. Always inhibit the - * transmitter while the Isr refills the transmit register/FIFO, - * or make sure it is stopped if we're done. - */ - if (use_irq) + /* A transmit has just completed. Process received data + * and check for more data to transmit. Always inhibit + * the transmitter while the Isr refills the transmit + * register/FIFO, or make sure it is stopped if we're + * done. + */ xspi->write_fn(cr | XSPI_CR_TRANS_INHIBIT, - xspi->regs + XSPI_CR_OFFSET); + xspi->regs + XSPI_CR_OFFSET); + sr = XSPI_SR_TX_EMPTY_MASK; + } else + sr = xspi->read_fn(xspi->regs + XSPI_SR_OFFSET); /* Read out all the data from the Rx FIFO */ rx_words = n_words; - while (rx_words--) - xilinx_spi_rx(xspi); + while (rx_words) { + if ((sr & XSPI_SR_TX_EMPTY_MASK) && (rx_words > 1)) { + xilinx_spi_rx(xspi); + rx_words--; + continue; + } + + sr = xspi->read_fn(xspi->regs + XSPI_SR_OFFSET); + if (!(sr & XSPI_SR_RX_EMPTY_MASK)) { + xilinx_spi_rx(xspi); + rx_words--; + } + } remaining_words -= n_words; } - if (use_irq) + if (use_irq) { xspi->write_fn(0, xspi->regs + XIPIF_V123B_DGIER_OFFSET); + xspi->write_fn(cr, xspi->regs + XSPI_CR_OFFSET); + } return t->len; } --- linux-raspi2-4.2.0.orig/drivers/spi/spi-xtensa-xtfpga.c +++ linux-raspi2-4.2.0/drivers/spi/spi-xtensa-xtfpga.c @@ -34,13 +34,13 @@ static inline void xtfpga_spi_write32(const struct xtfpga_spi *spi, unsigned addr, u32 val) { - iowrite32(val, spi->regs + addr); + __raw_writel(val, spi->regs + addr); } static inline unsigned int xtfpga_spi_read32(const struct xtfpga_spi *spi, unsigned addr) { - return ioread32(spi->regs + addr); + return __raw_readl(spi->regs + addr); } static inline void xtfpga_spi_wait_busy(struct xtfpga_spi *xspi) --- linux-raspi2-4.2.0.orig/drivers/spi/spi.c +++ linux-raspi2-4.2.0/drivers/spi/spi.c @@ -1437,8 +1437,7 @@ * * The caller is responsible for assigning the bus number and initializing * the master's methods before calling spi_register_master(); and (after errors - * adding the device) calling spi_master_put() and kfree() to prevent a memory - * leak. + * adding the device) calling spi_master_put() to prevent a memory leak. */ struct spi_master *spi_alloc_master(struct device *dev, unsigned size) { --- linux-raspi2-4.2.0.orig/drivers/spi/spidev.c +++ linux-raspi2-4.2.0/drivers/spi/spidev.c @@ -651,7 +651,8 @@ kfree(spidev->rx_buffer); spidev->rx_buffer = NULL; - spidev->speed_hz = spidev->spi->max_speed_hz; + if (spidev->spi) + spidev->speed_hz = spidev->spi->max_speed_hz; /* ... after we unbound from the underlying device? */ spin_lock_irq(&spidev->spi_lock); @@ -694,6 +695,7 @@ static const struct of_device_id spidev_dt_ids[] = { { .compatible = "rohm,dh2228fv" }, { .compatible = "lineartechnology,ltc2488" }, + { .compatible = "spidev" }, {}, }; MODULE_DEVICE_TABLE(of, spidev_dt_ids); --- linux-raspi2-4.2.0.orig/drivers/staging/android/ion/ion.c +++ linux-raspi2-4.2.0/drivers/staging/android/ion/ion.c @@ -1179,13 +1179,13 @@ mutex_unlock(&client->lock); goto end; } - mutex_unlock(&client->lock); handle = ion_handle_create(client, buffer); - if (IS_ERR(handle)) + if (IS_ERR(handle)) { + mutex_unlock(&client->lock); goto end; + } - mutex_lock(&client->lock); ret = ion_handle_add(client, handle); mutex_unlock(&client->lock); if (ret) { --- linux-raspi2-4.2.0.orig/drivers/staging/comedi/drivers/adl_pci7x3x.c +++ linux-raspi2-4.2.0/drivers/staging/comedi/drivers/adl_pci7x3x.c @@ -120,8 +120,20 @@ { unsigned long reg = (unsigned long)s->private; - if (comedi_dio_update_state(s, data)) - outl(s->state, dev->iobase + reg); + if (comedi_dio_update_state(s, data)) { + unsigned int val = s->state; + + if (s->n_chan == 16) { + /* + * It seems the PCI-7230 needs the 16-bit DO state + * to be shifted left by 16 bits before being written + * to the 32-bit register. Set the value in both + * halves of the register to be sure. + */ + val |= val << 16; + } + outl(val, dev->iobase + reg); + } data[1] = s->state; --- linux-raspi2-4.2.0.orig/drivers/staging/comedi/drivers/usbduxsigma.c +++ linux-raspi2-4.2.0/drivers/staging/comedi/drivers/usbduxsigma.c @@ -550,27 +550,6 @@ if (err) return 3; - /* Step 4: fix up any arguments */ - - if (high_speed) { - /* - * every 2 channels get a time window of 125us. Thus, if we - * sample all 16 channels we need 1ms. If we sample only one - * channel we need only 125us - */ - devpriv->ai_interval = interval; - devpriv->ai_timer = cmd->scan_begin_arg / (125000 * interval); - } else { - /* interval always 1ms */ - devpriv->ai_interval = 1; - devpriv->ai_timer = cmd->scan_begin_arg / 1000000; - } - if (devpriv->ai_timer < 1) - err |= -EINVAL; - - if (err) - return 4; - return 0; } @@ -668,6 +647,22 @@ down(&devpriv->sem); + if (devpriv->high_speed) { + /* + * every 2 channels get a time window of 125us. Thus, if we + * sample all 16 channels we need 1ms. If we sample only one + * channel we need only 125us + */ + unsigned int interval = usbduxsigma_chans_to_interval(len); + + devpriv->ai_interval = interval; + devpriv->ai_timer = cmd->scan_begin_arg / (125000 * interval); + } else { + /* interval always 1ms */ + devpriv->ai_interval = 1; + devpriv->ai_timer = cmd->scan_begin_arg / 1000000; + } + for (i = 0; i < len; i++) { unsigned int chan = CR_CHAN(cmd->chanlist[i]); @@ -917,25 +912,6 @@ if (err) return 3; - /* Step 4: fix up any arguments */ - - /* we count in timer steps */ - if (high_speed) { - /* timing of the conversion itself: every 125 us */ - devpriv->ao_timer = cmd->convert_arg / 125000; - } else { - /* - * timing of the scan: every 1ms - * we get all channels at once - */ - devpriv->ao_timer = cmd->scan_begin_arg / 1000000; - } - if (devpriv->ao_timer < 1) - err |= -EINVAL; - - if (err) - return 4; - return 0; } @@ -948,6 +924,20 @@ down(&devpriv->sem); + if (cmd->convert_src == TRIG_TIMER) { + /* + * timing of the conversion itself: every 125 us + * at high speed (not used yet) + */ + devpriv->ao_timer = cmd->convert_arg / 125000; + } else { + /* + * timing of the scan: every 1ms + * we get all channels at once + */ + devpriv->ao_timer = cmd->scan_begin_arg / 1000000; + } + devpriv->ao_counter = devpriv->ao_timer; if (cmd->start_src == TRIG_NOW) { --- linux-raspi2-4.2.0.orig/drivers/staging/dgnc/dgnc_mgmt.c +++ linux-raspi2-4.2.0/drivers/staging/dgnc/dgnc_mgmt.c @@ -115,6 +115,7 @@ spin_lock_irqsave(&dgnc_global_lock, flags); + memset(&ddi, 0, sizeof(ddi)); ddi.dinfo_nboards = dgnc_NumBoards; sprintf(ddi.dinfo_version, "%s", DG_PART); --- linux-raspi2-4.2.0.orig/drivers/staging/fbtft/fbtft-core.c +++ linux-raspi2-4.2.0/drivers/staging/fbtft/fbtft-core.c @@ -1076,6 +1076,11 @@ p = of_prop_next_u32(prop, NULL, &val); if (!p) return -EINVAL; + + par->fbtftops.reset(par); + if (par->gpio.cs != -1) + gpio_set_value(par->gpio.cs, 0); /* Activate chip */ + while (p) { if (val & FBTFT_OF_INIT_CMD) { val &= 0xFFFF; --- linux-raspi2-4.2.0.orig/drivers/staging/iio/accel/sca3000_ring.c +++ linux-raspi2-4.2.0/drivers/staging/iio/accel/sca3000_ring.c @@ -116,7 +116,7 @@ if (ret) goto error_ret; - for (i = 0; i < num_read; i++) + for (i = 0; i < num_read / sizeof(u16); i++) *(((u16 *)rx) + i) = be16_to_cpup((__be16 *)rx + i); if (copy_to_user(buf, rx, num_read)) --- linux-raspi2-4.2.0.orig/drivers/staging/iio/adc/mxs-lradc.c +++ linux-raspi2-4.2.0/drivers/staging/iio/adc/mxs-lradc.c @@ -919,11 +919,12 @@ case IIO_CHAN_INFO_OFFSET: if (chan->type == IIO_TEMP) { /* The calculated value from the ADC is in Kelvin, we - * want Celsius for hwmon so the offset is - * -272.15 * scale + * want Celsius for hwmon so the offset is -273.15 + * The offset is applied before scaling so it is + * actually -213.15 * 4 / 1.012 = -1079.644268 */ - *val = -1075; - *val2 = 691699; + *val = -1079; + *val2 = 644268; return IIO_VAL_INT_PLUS_MICRO; } --- linux-raspi2-4.2.0.orig/drivers/staging/lustre/include/linux/lnet/lib-lnet.h +++ linux-raspi2-4.2.0/drivers/staging/lustre/include/linux/lnet/lib-lnet.h @@ -680,7 +680,7 @@ static inline void lnet_peer_set_alive(lnet_peer_t *lp) { - lp->lp_last_alive = lp->lp_last_query = get_seconds(); + lp->lp_last_alive = lp->lp_last_query = jiffies; if (!lp->lp_alive) lnet_notify_locked(lp, 0, 1, lp->lp_last_alive); } --- linux-raspi2-4.2.0.orig/drivers/staging/media/lirc/Kconfig +++ linux-raspi2-4.2.0/drivers/staging/media/lirc/Kconfig @@ -32,6 +32,12 @@ help Driver for Homebrew Parallel Port Receivers +config LIRC_RPI + tristate "Homebrew GPIO Port Receiver/Transmitter for the RaspberryPi" + depends on LIRC + help + Driver for Homebrew GPIO Port Receiver/Transmitter for the RaspberryPi + config LIRC_SASEM tristate "Sasem USB IR Remote" depends on LIRC && USB --- linux-raspi2-4.2.0.orig/drivers/staging/media/lirc/Makefile +++ linux-raspi2-4.2.0/drivers/staging/media/lirc/Makefile @@ -6,6 +6,7 @@ obj-$(CONFIG_LIRC_BT829) += lirc_bt829.o obj-$(CONFIG_LIRC_IMON) += lirc_imon.o obj-$(CONFIG_LIRC_PARALLEL) += lirc_parallel.o +obj-$(CONFIG_LIRC_RPI) += lirc_rpi.o obj-$(CONFIG_LIRC_SASEM) += lirc_sasem.o obj-$(CONFIG_LIRC_SERIAL) += lirc_serial.o obj-$(CONFIG_LIRC_SIR) += lirc_sir.o --- linux-raspi2-4.2.0.orig/drivers/staging/media/lirc/lirc_rpi.c +++ linux-raspi2-4.2.0/drivers/staging/media/lirc/lirc_rpi.c @@ -0,0 +1,771 @@ +/* + * lirc_rpi.c + * + * lirc_rpi - Device driver that records pulse- and pause-lengths + * (space-lengths) (just like the lirc_serial driver does) + * between GPIO interrupt events on the Raspberry Pi. + * Lots of code has been taken from the lirc_serial module, + * so I would like say thanks to the authors. + * + * Copyright (C) 2012 Aron Robert Szabo , + * Michael Bishop + * 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 +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#ifndef CONFIG_ARCH_BCM2835 +#include +#endif + +#define LIRC_DRIVER_NAME "lirc_rpi" +#define RBUF_LEN 256 +#define LIRC_TRANSMITTER_LATENCY 50 + +#ifndef MAX_UDELAY_MS +#define MAX_UDELAY_US 5000 +#else +#define MAX_UDELAY_US (MAX_UDELAY_MS*1000) +#endif + +#define dprintk(fmt, args...) \ + do { \ + if (debug) \ + printk(KERN_DEBUG LIRC_DRIVER_NAME ": " \ + fmt, ## args); \ + } while (0) + +/* module parameters */ + +/* set the default GPIO input pin */ +static int gpio_in_pin = 18; +/* set the default pull behaviour for input pin */ +static int gpio_in_pull = BCM2708_PULL_DOWN; +/* set the default GPIO output pin */ +static int gpio_out_pin = 17; +/* enable debugging messages */ +static bool debug; +/* -1 = auto, 0 = active high, 1 = active low */ +static int sense = -1; +/* use softcarrier by default */ +static bool softcarrier = 1; +/* 0 = do not invert output, 1 = invert output */ +static bool invert = 0; + +struct gpio_chip *gpiochip; +static int irq_num; + +/* forward declarations */ +static long send_pulse(unsigned long length); +static void send_space(long length); +static void lirc_rpi_exit(void); + +static struct platform_device *lirc_rpi_dev; +static struct timeval lasttv = { 0, 0 }; +static struct lirc_buffer rbuf; +static spinlock_t lock; + +/* initialized/set in init_timing_params() */ +static unsigned int freq = 38000; +static unsigned int duty_cycle = 50; +static unsigned long period; +static unsigned long pulse_width; +static unsigned long space_width; + +static void safe_udelay(unsigned long usecs) +{ + while (usecs > MAX_UDELAY_US) { + udelay(MAX_UDELAY_US); + usecs -= MAX_UDELAY_US; + } + udelay(usecs); +} + +static unsigned long read_current_us(void) +{ + struct timespec now; + getnstimeofday(&now); + return (now.tv_sec * 1000000) + (now.tv_nsec/1000); +} + +static int init_timing_params(unsigned int new_duty_cycle, + unsigned int new_freq) +{ + if (1000 * 1000000L / new_freq * new_duty_cycle / 100 <= + LIRC_TRANSMITTER_LATENCY) + return -EINVAL; + if (1000 * 1000000L / new_freq * (100 - new_duty_cycle) / 100 <= + LIRC_TRANSMITTER_LATENCY) + return -EINVAL; + duty_cycle = new_duty_cycle; + freq = new_freq; + period = 1000 * 1000000L / freq; + pulse_width = period * duty_cycle / 100; + space_width = period - pulse_width; + dprintk("in init_timing_params, freq=%d pulse=%ld, " + "space=%ld\n", freq, pulse_width, space_width); + return 0; +} + +static long send_pulse_softcarrier(unsigned long length) +{ + int flag; + unsigned long actual, target; + unsigned long actual_us, initial_us, target_us; + + length *= 1000; + + actual = 0; target = 0; flag = 0; + actual_us = read_current_us(); + + while (actual < length) { + if (flag) { + gpiochip->set(gpiochip, gpio_out_pin, invert); + target += space_width; + } else { + gpiochip->set(gpiochip, gpio_out_pin, !invert); + target += pulse_width; + } + initial_us = actual_us; + target_us = actual_us + (target - actual) / 1000; + /* + * Note - we've checked in ioctl that the pulse/space + * widths are big enough so that d is > 0 + */ + if ((int)(target_us - actual_us) > 0) + udelay(target_us - actual_us); + actual_us = read_current_us(); + actual += (actual_us - initial_us) * 1000; + flag = !flag; + } + return (actual-length) / 1000; +} + +static long send_pulse(unsigned long length) +{ + if (length <= 0) + return 0; + + if (softcarrier) { + return send_pulse_softcarrier(length); + } else { + gpiochip->set(gpiochip, gpio_out_pin, !invert); + safe_udelay(length); + return 0; + } +} + +static void send_space(long length) +{ + gpiochip->set(gpiochip, gpio_out_pin, invert); + if (length <= 0) + return; + safe_udelay(length); +} + +static void rbwrite(int l) +{ + if (lirc_buffer_full(&rbuf)) { + /* no new signals will be accepted */ + dprintk("Buffer overrun\n"); + return; + } + lirc_buffer_write(&rbuf, (void *)&l); +} + +static void frbwrite(int l) +{ + /* simple noise filter */ + static int pulse, space; + static unsigned int ptr; + + if (ptr > 0 && (l & PULSE_BIT)) { + pulse += l & PULSE_MASK; + if (pulse > 250) { + rbwrite(space); + rbwrite(pulse | PULSE_BIT); + ptr = 0; + pulse = 0; + } + return; + } + if (!(l & PULSE_BIT)) { + if (ptr == 0) { + if (l > 20000) { + space = l; + ptr++; + return; + } + } else { + if (l > 20000) { + space += pulse; + if (space > PULSE_MASK) + space = PULSE_MASK; + space += l; + if (space > PULSE_MASK) + space = PULSE_MASK; + pulse = 0; + return; + } + rbwrite(space); + rbwrite(pulse | PULSE_BIT); + ptr = 0; + pulse = 0; + } + } + rbwrite(l); +} + +static irqreturn_t irq_handler(int i, void *blah, struct pt_regs *regs) +{ + struct timeval tv; + long deltv; + int data; + int signal; + + /* use the GPIO signal level */ + signal = gpiochip->get(gpiochip, gpio_in_pin); + + if (sense != -1) { + /* get current time */ + do_gettimeofday(&tv); + + /* calc time since last interrupt in microseconds */ + deltv = tv.tv_sec-lasttv.tv_sec; + if (tv.tv_sec < lasttv.tv_sec || + (tv.tv_sec == lasttv.tv_sec && + tv.tv_usec < lasttv.tv_usec)) { + printk(KERN_WARNING LIRC_DRIVER_NAME + ": AIEEEE: your clock just jumped backwards\n"); + printk(KERN_WARNING LIRC_DRIVER_NAME + ": %d %d %lx %lx %lx %lx\n", signal, sense, + tv.tv_sec, lasttv.tv_sec, + tv.tv_usec, lasttv.tv_usec); + data = PULSE_MASK; + } else if (deltv > 15) { + data = PULSE_MASK; /* really long time */ + if (!(signal^sense)) { + /* sanity check */ + printk(KERN_WARNING LIRC_DRIVER_NAME + ": AIEEEE: %d %d %lx %lx %lx %lx\n", + signal, sense, tv.tv_sec, lasttv.tv_sec, + tv.tv_usec, lasttv.tv_usec); + /* + * detecting pulse while this + * MUST be a space! + */ + sense = sense ? 0 : 1; + } + } else { + data = (int) (deltv*1000000 + + (tv.tv_usec - lasttv.tv_usec)); + } + frbwrite(signal^sense ? data : (data|PULSE_BIT)); + lasttv = tv; + wake_up_interruptible(&rbuf.wait_poll); + } + + return IRQ_HANDLED; +} + +static int is_right_chip(struct gpio_chip *chip, void *data) +{ + dprintk("is_right_chip %s %d\n", chip->label, strcmp(data, chip->label)); + + if (strcmp(data, chip->label) == 0) + return 1; + return 0; +} + +static inline int read_bool_property(const struct device_node *np, + const char *propname, + bool *out_value) +{ + u32 value = 0; + int err = of_property_read_u32(np, propname, &value); + if (err == 0) + *out_value = (value != 0); + return err; +} + +static void read_pin_settings(struct device_node *node) +{ + u32 pin; + int index; + + for (index = 0; + of_property_read_u32_index( + node, + "brcm,pins", + index, + &pin) == 0; + index++) { + u32 function; + int err; + err = of_property_read_u32_index( + node, + "brcm,function", + index, + &function); + if (err == 0) { + if (function == 1) /* Output */ + gpio_out_pin = pin; + else if (function == 0) /* Input */ + gpio_in_pin = pin; + } + } +} + +static int init_port(void) +{ + int i, nlow, nhigh, ret; + struct device_node *node; + + node = lirc_rpi_dev->dev.of_node; + + gpiochip = gpiochip_find("bcm2708_gpio", is_right_chip); + + /* + * Because of the lack of a setpull function, only support + * pinctrl-bcm2835 if using device tree. + */ + if (!gpiochip && node) + gpiochip = gpiochip_find("pinctrl-bcm2835", is_right_chip); + + if (!gpiochip) { + pr_err(LIRC_DRIVER_NAME ": gpio chip not found!\n"); + return -ENODEV; + } + + if (node) { + struct device_node *pins_node; + + pins_node = of_parse_phandle(node, "pinctrl-0", 0); + if (!pins_node) { + printk(KERN_ERR LIRC_DRIVER_NAME + ": pinctrl settings not found!\n"); + ret = -EINVAL; + goto exit_init_port; + } + + read_pin_settings(pins_node); + + of_property_read_u32(node, "rpi,sense", &sense); + + read_bool_property(node, "rpi,softcarrier", &softcarrier); + + read_bool_property(node, "rpi,invert", &invert); + + read_bool_property(node, "rpi,debug", &debug); + + } + else + { +#ifdef CONFIG_ARCH_BCM2835 + ret = -EINVAL; + goto exit_init_port; +#else + if (gpio_in_pin >= BCM2708_NR_GPIOS || + gpio_out_pin >= BCM2708_NR_GPIOS) { + ret = -EINVAL; + printk(KERN_ERR LIRC_DRIVER_NAME + ": invalid GPIO pin(s) specified!\n"); + goto exit_init_port; + } + + if (gpio_request(gpio_out_pin, LIRC_DRIVER_NAME " ir/out")) { + printk(KERN_ALERT LIRC_DRIVER_NAME + ": cant claim gpio pin %d\n", gpio_out_pin); + ret = -ENODEV; + goto exit_init_port; + } + + if (gpio_request(gpio_in_pin, LIRC_DRIVER_NAME " ir/in")) { + printk(KERN_ALERT LIRC_DRIVER_NAME + ": cant claim gpio pin %d\n", gpio_in_pin); + ret = -ENODEV; + goto exit_gpio_free_out_pin; + } + + bcm2708_gpio_setpull(gpiochip, gpio_in_pin, gpio_in_pull); + gpiochip->direction_input(gpiochip, gpio_in_pin); + gpiochip->direction_output(gpiochip, gpio_out_pin, 1); +#endif + } + + gpiochip->set(gpiochip, gpio_out_pin, invert); + + irq_num = gpiochip->to_irq(gpiochip, gpio_in_pin); + dprintk("to_irq %d\n", irq_num); + + /* if pin is high, then this must be an active low receiver. */ + if (sense == -1) { + /* wait 1/2 sec for the power supply */ + msleep(500); + + /* + * probe 9 times every 0.04s, collect "votes" for + * active high/low + */ + nlow = 0; + nhigh = 0; + for (i = 0; i < 9; i++) { + if (gpiochip->get(gpiochip, gpio_in_pin)) + nlow++; + else + nhigh++; + msleep(40); + } + sense = (nlow >= nhigh ? 1 : 0); + printk(KERN_INFO LIRC_DRIVER_NAME + ": auto-detected active %s receiver on GPIO pin %d\n", + sense ? "low" : "high", gpio_in_pin); + } else { + printk(KERN_INFO LIRC_DRIVER_NAME + ": manually using active %s receiver on GPIO pin %d\n", + sense ? "low" : "high", gpio_in_pin); + } + + return 0; + + exit_gpio_free_out_pin: + gpio_free(gpio_out_pin); + + exit_init_port: + return ret; +} + +// called when the character device is opened +static int set_use_inc(void *data) +{ + int result; + + /* initialize timestamp */ + do_gettimeofday(&lasttv); + + result = request_irq(irq_num, + (irq_handler_t) irq_handler, + IRQ_TYPE_EDGE_RISING | IRQ_TYPE_EDGE_FALLING, + LIRC_DRIVER_NAME, (void*) 0); + + switch (result) { + case -EBUSY: + printk(KERN_ERR LIRC_DRIVER_NAME + ": IRQ %d is busy\n", + irq_num); + return -EBUSY; + case -EINVAL: + printk(KERN_ERR LIRC_DRIVER_NAME + ": Bad irq number or handler\n"); + return -EINVAL; + default: + dprintk("Interrupt %d obtained\n", + irq_num); + break; + }; + + /* initialize pulse/space widths */ + init_timing_params(duty_cycle, freq); + + return 0; +} + +static void set_use_dec(void *data) +{ + /* GPIO Pin Falling/Rising Edge Detect Disable */ + irq_set_irq_type(irq_num, 0); + disable_irq(irq_num); + + free_irq(irq_num, (void *) 0); + + dprintk(KERN_INFO LIRC_DRIVER_NAME + ": freed IRQ %d\n", irq_num); +} + +static ssize_t lirc_write(struct file *file, const char *buf, + size_t n, loff_t *ppos) +{ + int i, count; + unsigned long flags; + long delta = 0; + int *wbuf; + + count = n / sizeof(int); + if (n % sizeof(int) || count % 2 == 0) + return -EINVAL; + wbuf = memdup_user(buf, n); + if (IS_ERR(wbuf)) + return PTR_ERR(wbuf); + spin_lock_irqsave(&lock, flags); + + for (i = 0; i < count; i++) { + if (i%2) + send_space(wbuf[i] - delta); + else + delta = send_pulse(wbuf[i]); + } + gpiochip->set(gpiochip, gpio_out_pin, invert); + + spin_unlock_irqrestore(&lock, flags); + kfree(wbuf); + return n; +} + +static long lirc_ioctl(struct file *filep, unsigned int cmd, unsigned long arg) +{ + int result; + __u32 value; + + switch (cmd) { + case LIRC_GET_SEND_MODE: + return -ENOIOCTLCMD; + break; + + case LIRC_SET_SEND_MODE: + result = get_user(value, (__u32 *) arg); + if (result) + return result; + /* only LIRC_MODE_PULSE supported */ + if (value != LIRC_MODE_PULSE) + return -ENOSYS; + break; + + case LIRC_GET_LENGTH: + return -ENOSYS; + break; + + case LIRC_SET_SEND_DUTY_CYCLE: + dprintk("SET_SEND_DUTY_CYCLE\n"); + result = get_user(value, (__u32 *) arg); + if (result) + return result; + if (value <= 0 || value > 100) + return -EINVAL; + return init_timing_params(value, freq); + break; + + case LIRC_SET_SEND_CARRIER: + dprintk("SET_SEND_CARRIER\n"); + result = get_user(value, (__u32 *) arg); + if (result) + return result; + if (value > 500000 || value < 20000) + return -EINVAL; + return init_timing_params(duty_cycle, value); + break; + + default: + return lirc_dev_fop_ioctl(filep, cmd, arg); + } + return 0; +} + +static const struct file_operations lirc_fops = { + .owner = THIS_MODULE, + .write = lirc_write, + .unlocked_ioctl = lirc_ioctl, + .read = lirc_dev_fop_read, + .poll = lirc_dev_fop_poll, + .open = lirc_dev_fop_open, + .release = lirc_dev_fop_close, + .llseek = no_llseek, +}; + +static struct lirc_driver driver = { + .name = LIRC_DRIVER_NAME, + .minor = -1, + .code_length = 1, + .sample_rate = 0, + .data = NULL, + .add_to_buf = NULL, + .rbuf = &rbuf, + .set_use_inc = set_use_inc, + .set_use_dec = set_use_dec, + .fops = &lirc_fops, + .dev = NULL, + .owner = THIS_MODULE, +}; + +static const struct of_device_id lirc_rpi_of_match[] = { + { .compatible = "rpi,lirc-rpi", }, + {}, +}; +MODULE_DEVICE_TABLE(of, lirc_rpi_of_match); + +static struct platform_driver lirc_rpi_driver = { + .driver = { + .name = LIRC_DRIVER_NAME, + .owner = THIS_MODULE, + .of_match_table = of_match_ptr(lirc_rpi_of_match), + }, +}; + +static int __init lirc_rpi_init(void) +{ + struct device_node *node; + int result; + + /* Init read buffer. */ + result = lirc_buffer_init(&rbuf, sizeof(int), RBUF_LEN); + if (result < 0) + return -ENOMEM; + + result = platform_driver_register(&lirc_rpi_driver); + if (result) { + printk(KERN_ERR LIRC_DRIVER_NAME + ": lirc register returned %d\n", result); + goto exit_buffer_free; + } + + node = of_find_compatible_node(NULL, NULL, + lirc_rpi_of_match[0].compatible); + + if (node) { + /* DT-enabled */ + lirc_rpi_dev = of_find_device_by_node(node); + WARN_ON(lirc_rpi_dev->dev.of_node != node); + of_node_put(node); + } + else { + lirc_rpi_dev = platform_device_alloc(LIRC_DRIVER_NAME, 0); + if (!lirc_rpi_dev) { + result = -ENOMEM; + goto exit_driver_unregister; + } + + result = platform_device_add(lirc_rpi_dev); + if (result) + goto exit_device_put; + } + + return 0; + + exit_device_put: + platform_device_put(lirc_rpi_dev); + + exit_driver_unregister: + platform_driver_unregister(&lirc_rpi_driver); + + exit_buffer_free: + lirc_buffer_free(&rbuf); + + return result; +} + +static void lirc_rpi_exit(void) +{ + if (!lirc_rpi_dev->dev.of_node) + platform_device_unregister(lirc_rpi_dev); + platform_driver_unregister(&lirc_rpi_driver); + lirc_buffer_free(&rbuf); +} + +static int __init lirc_rpi_init_module(void) +{ + int result; + + result = lirc_rpi_init(); + if (result) + return result; + + result = init_port(); + if (result < 0) + goto exit_rpi; + + driver.features = LIRC_CAN_SET_SEND_DUTY_CYCLE | + LIRC_CAN_SET_SEND_CARRIER | + LIRC_CAN_SEND_PULSE | + LIRC_CAN_REC_MODE2; + + driver.dev = &lirc_rpi_dev->dev; + driver.minor = lirc_register_driver(&driver); + + if (driver.minor < 0) { + printk(KERN_ERR LIRC_DRIVER_NAME + ": device registration failed with %d\n", result); + result = -EIO; + goto exit_rpi; + } + + printk(KERN_INFO LIRC_DRIVER_NAME ": driver registered!\n"); + + return 0; + + exit_rpi: + lirc_rpi_exit(); + + return result; +} + +static void __exit lirc_rpi_exit_module(void) +{ + lirc_unregister_driver(driver.minor); + + gpio_free(gpio_out_pin); + gpio_free(gpio_in_pin); + + lirc_rpi_exit(); + + printk(KERN_INFO LIRC_DRIVER_NAME ": cleaned up module\n"); +} + +module_init(lirc_rpi_init_module); +module_exit(lirc_rpi_exit_module); + +MODULE_DESCRIPTION("Infra-red receiver and blaster driver for Raspberry Pi GPIO."); +MODULE_AUTHOR("Aron Robert Szabo "); +MODULE_AUTHOR("Michael Bishop "); +MODULE_LICENSE("GPL"); + +module_param(gpio_out_pin, int, S_IRUGO); +MODULE_PARM_DESC(gpio_out_pin, "GPIO output/transmitter pin number of the BCM" + " processor. (default 17"); + +module_param(gpio_in_pin, int, S_IRUGO); +MODULE_PARM_DESC(gpio_in_pin, "GPIO input pin number of the BCM processor." + " (default 18"); + +module_param(gpio_in_pull, int, S_IRUGO); +MODULE_PARM_DESC(gpio_in_pull, "GPIO input pin pull configuration." + " (0 = off, 1 = up, 2 = down, default down)"); + +module_param(sense, int, S_IRUGO); +MODULE_PARM_DESC(sense, "Override autodetection of IR receiver circuit" + " (0 = active high, 1 = active low )"); + +module_param(softcarrier, bool, S_IRUGO); +MODULE_PARM_DESC(softcarrier, "Software carrier (0 = off, 1 = on, default on)"); + +module_param(invert, bool, S_IRUGO); +MODULE_PARM_DESC(invert, "Invert output (0 = off, 1 = on, default off"); + +module_param(debug, bool, S_IRUGO | S_IWUSR); +MODULE_PARM_DESC(debug, "Enable debugging messages"); --- linux-raspi2-4.2.0.orig/drivers/staging/rtl8192e/rtl8192e/rtl_core.c +++ linux-raspi2-4.2.0/drivers/staging/rtl8192e/rtl8192e/rtl_core.c @@ -1826,8 +1826,8 @@ return; } - if (queue_index != TXCMD_QUEUE) - netdev_warn(dev, "%s(): queue index != TXCMD_QUEUE\n", + if (queue_index == TXCMD_QUEUE) + netdev_warn(dev, "%s(): queue index == TXCMD_QUEUE\n", __func__); memcpy((unsigned char *)(skb->cb), &dev, sizeof(dev)); --- linux-raspi2-4.2.0.orig/drivers/staging/rtl8712/usb_intf.c +++ linux-raspi2-4.2.0/drivers/staging/rtl8712/usb_intf.c @@ -144,6 +144,7 @@ {USB_DEVICE(0x0DF6, 0x0058)}, {USB_DEVICE(0x0DF6, 0x0049)}, {USB_DEVICE(0x0DF6, 0x004C)}, + {USB_DEVICE(0x0DF6, 0x006C)}, {USB_DEVICE(0x0DF6, 0x0064)}, /* Skyworth */ {USB_DEVICE(0x14b2, 0x3300)}, --- linux-raspi2-4.2.0.orig/drivers/staging/speakup/fakekey.c +++ linux-raspi2-4.2.0/drivers/staging/speakup/fakekey.c @@ -81,6 +81,7 @@ __this_cpu_write(reporting_keystroke, true); input_report_key(virt_keyboard, KEY_DOWN, PRESSED); input_report_key(virt_keyboard, KEY_DOWN, RELEASED); + input_sync(virt_keyboard); __this_cpu_write(reporting_keystroke, false); /* reenable preemption */ --- linux-raspi2-4.2.0.orig/drivers/staging/unisys/visorbus/visorchipset.c +++ linux-raspi2-4.2.0/drivers/staging/unisys/visorbus/visorchipset.c @@ -2381,6 +2381,9 @@ .remove = visorchipset_exit, }, }; + +MODULE_DEVICE_TABLE(acpi, unisys_device_ids); + static __init uint32_t visorutil_spar_detect(void) { unsigned int eax, ebx, ecx, edx; --- linux-raspi2-4.2.0.orig/drivers/target/iscsi/iscsi_target.c +++ linux-raspi2-4.2.0/drivers/target/iscsi/iscsi_target.c @@ -341,7 +341,6 @@ struct iscsi_np *iscsit_add_np( struct __kernel_sockaddr_storage *sockaddr, - char *ip_str, int network_transport) { struct sockaddr_in *sock_in; @@ -370,11 +369,9 @@ np->np_flags |= NPF_IP_NETWORK; if (sockaddr->ss_family == AF_INET6) { sock_in6 = (struct sockaddr_in6 *)sockaddr; - snprintf(np->np_ip, IPV6_ADDRESS_SPACE, "%s", ip_str); np->np_port = ntohs(sock_in6->sin6_port); } else { sock_in = (struct sockaddr_in *)sockaddr; - sprintf(np->np_ip, "%s", ip_str); np->np_port = ntohs(sock_in->sin_port); } @@ -411,8 +408,8 @@ list_add_tail(&np->np_list, &g_np_list); mutex_unlock(&np_lock); - pr_debug("CORE[0] - Added Network Portal: %s:%hu on %s\n", - np->np_ip, np->np_port, np->np_transport->name); + pr_debug("CORE[0] - Added Network Portal: %pISc:%hu on %s\n", + &np->np_sockaddr, np->np_port, np->np_transport->name); return np; } @@ -481,8 +478,8 @@ list_del(&np->np_list); mutex_unlock(&np_lock); - pr_debug("CORE[0] - Removed Network Portal: %s:%hu on %s\n", - np->np_ip, np->np_port, np->np_transport->name); + pr_debug("CORE[0] - Removed Network Portal: %pISc:%hu on %s\n", + &np->np_sockaddr, np->np_port, np->np_transport->name); iscsit_put_transport(np->np_transport); kfree(np); @@ -3464,7 +3461,6 @@ tpg_np_list) { struct iscsi_np *np = tpg_np->tpg_np; bool inaddr_any = iscsit_check_inaddr_any(np); - char *fmt_str; if (np->np_network_transport != network_transport) continue; @@ -3492,15 +3488,18 @@ } } - if (np->np_sockaddr.ss_family == AF_INET6) - fmt_str = "TargetAddress=[%s]:%hu,%hu"; - else - fmt_str = "TargetAddress=%s:%hu,%hu"; - - len = sprintf(buf, fmt_str, - inaddr_any ? conn->local_ip : np->np_ip, - np->np_port, - tpg->tpgt); + if (inaddr_any) { + len = sprintf(buf, "TargetAddress=" + "%s:%hu,%hu", + conn->local_ip, + np->np_port, + tpg->tpgt); + } else { + len = sprintf(buf, "TargetAddress=" + "%pISpc,%hu", + &np->np_sockaddr, + tpg->tpgt); + } len += 1; if ((len + payload_len) > buffer_len) { --- linux-raspi2-4.2.0.orig/drivers/target/iscsi/iscsi_target.h +++ linux-raspi2-4.2.0/drivers/target/iscsi/iscsi_target.h @@ -13,7 +13,7 @@ extern bool iscsit_check_np_match(struct __kernel_sockaddr_storage *, struct iscsi_np *, int); extern struct iscsi_np *iscsit_add_np(struct __kernel_sockaddr_storage *, - char *, int); + int); extern int iscsit_reset_np_thread(struct iscsi_np *, struct iscsi_tpg_np *, struct iscsi_portal_group *, bool); extern int iscsit_del_np(struct iscsi_np *); --- linux-raspi2-4.2.0.orig/drivers/target/iscsi/iscsi_target_configfs.c +++ linux-raspi2-4.2.0/drivers/target/iscsi/iscsi_target_configfs.c @@ -99,7 +99,7 @@ * Use existing np->np_sockaddr for SCTP network portal reference */ tpg_np_sctp = iscsit_tpg_add_network_portal(tpg, &np->np_sockaddr, - np->np_ip, tpg_np, ISCSI_SCTP_TCP); + tpg_np, ISCSI_SCTP_TCP); if (!tpg_np_sctp || IS_ERR(tpg_np_sctp)) goto out; } else { @@ -177,7 +177,7 @@ } tpg_np_iser = iscsit_tpg_add_network_portal(tpg, &np->np_sockaddr, - np->np_ip, tpg_np, ISCSI_INFINIBAND); + tpg_np, ISCSI_INFINIBAND); if (IS_ERR(tpg_np_iser)) { rc = PTR_ERR(tpg_np_iser); goto out; @@ -248,8 +248,8 @@ return ERR_PTR(-EINVAL); } str++; /* Skip over leading "[" */ - *str2 = '\0'; /* Terminate the IPv6 address */ - str2++; /* Skip over the "]" */ + *str2 = '\0'; /* Terminate the unbracketed IPv6 address */ + str2++; /* Skip over the \0 */ port_str = strstr(str2, ":"); if (!port_str) { pr_err("Unable to locate \":port\"" @@ -316,7 +316,7 @@ * sys/kernel/config/iscsi/$IQN/$TPG/np/$IP:$PORT/ * */ - tpg_np = iscsit_tpg_add_network_portal(tpg, &sockaddr, str, NULL, + tpg_np = iscsit_tpg_add_network_portal(tpg, &sockaddr, NULL, ISCSI_TCP); if (IS_ERR(tpg_np)) { iscsit_put_tpg(tpg); @@ -344,8 +344,8 @@ se_tpg = &tpg->tpg_se_tpg; pr_debug("LIO_Target_ConfigFS: DEREGISTER -> %s TPGT: %hu" - " PORTAL: %s:%hu\n", config_item_name(&se_tpg->se_tpg_wwn->wwn_group.cg_item), - tpg->tpgt, tpg_np->tpg_np->np_ip, tpg_np->tpg_np->np_port); + " PORTAL: %pISc:%hu\n", config_item_name(&se_tpg->se_tpg_wwn->wwn_group.cg_item), + tpg->tpgt, &tpg_np->tpg_np->np_sockaddr, tpg_np->tpg_np->np_port); ret = iscsit_tpg_del_network_portal(tpg, tpg_np); if (ret < 0) --- linux-raspi2-4.2.0.orig/drivers/target/iscsi/iscsi_target_login.c +++ linux-raspi2-4.2.0/drivers/target/iscsi/iscsi_target_login.c @@ -823,8 +823,8 @@ struct iscsi_np *np = (struct iscsi_np *) data; spin_lock_bh(&np->np_thread_lock); - pr_err("iSCSI Login timeout on Network Portal %s:%hu\n", - np->np_ip, np->np_port); + pr_err("iSCSI Login timeout on Network Portal %pISc:%hu\n", + &np->np_sockaddr, np->np_port); if (np->np_login_timer_flags & ISCSI_TF_STOP) { spin_unlock_bh(&np->np_thread_lock); @@ -1302,8 +1302,8 @@ spin_lock_bh(&np->np_thread_lock); if (np->np_thread_state != ISCSI_NP_THREAD_ACTIVE) { spin_unlock_bh(&np->np_thread_lock); - pr_err("iSCSI Network Portal on %s:%hu currently not" - " active.\n", np->np_ip, np->np_port); + pr_err("iSCSI Network Portal on %pISc:%hu currently not" + " active.\n", &np->np_sockaddr, np->np_port); iscsit_tx_login_rsp(conn, ISCSI_STATUS_CLS_TARGET_ERR, ISCSI_LOGIN_STATUS_SVC_UNAVAILABLE); goto new_sess_out; --- linux-raspi2-4.2.0.orig/drivers/target/iscsi/iscsi_target_parameters.c +++ linux-raspi2-4.2.0/drivers/target/iscsi/iscsi_target_parameters.c @@ -407,6 +407,7 @@ TYPERANGE_UTF8, USE_INITIAL_ONLY); if (!param) goto out; + /* * Extra parameters for ISER from RFC-5046 */ @@ -496,9 +497,9 @@ } else if (!strcmp(param->name, SESSIONTYPE)) { SET_PSTATE_NEGOTIATE(param); } else if (!strcmp(param->name, IFMARKER)) { - SET_PSTATE_NEGOTIATE(param); + SET_PSTATE_REJECT(param); } else if (!strcmp(param->name, OFMARKER)) { - SET_PSTATE_NEGOTIATE(param); + SET_PSTATE_REJECT(param); } else if (!strcmp(param->name, IFMARKINT)) { SET_PSTATE_REJECT(param); } else if (!strcmp(param->name, OFMARKINT)) { --- linux-raspi2-4.2.0.orig/drivers/target/iscsi/iscsi_target_tpg.c +++ linux-raspi2-4.2.0/drivers/target/iscsi/iscsi_target_tpg.c @@ -460,7 +460,6 @@ struct iscsi_tpg_np *iscsit_tpg_add_network_portal( struct iscsi_portal_group *tpg, struct __kernel_sockaddr_storage *sockaddr, - char *ip_str, struct iscsi_tpg_np *tpg_np_parent, int network_transport) { @@ -470,8 +469,8 @@ if (!tpg_np_parent) { if (iscsit_tpg_check_network_portal(tpg->tpg_tiqn, sockaddr, network_transport)) { - pr_err("Network Portal: %s already exists on a" - " different TPG on %s\n", ip_str, + pr_err("Network Portal: %pISc already exists on a" + " different TPG on %s\n", sockaddr, tpg->tpg_tiqn->tiqn); return ERR_PTR(-EEXIST); } @@ -484,7 +483,7 @@ return ERR_PTR(-ENOMEM); } - np = iscsit_add_np(sockaddr, ip_str, network_transport); + np = iscsit_add_np(sockaddr, network_transport); if (IS_ERR(np)) { kfree(tpg_np); return ERR_CAST(np); @@ -514,8 +513,8 @@ spin_unlock(&tpg_np_parent->tpg_np_parent_lock); } - pr_debug("CORE[%s] - Added Network Portal: %s:%hu,%hu on %s\n", - tpg->tpg_tiqn->tiqn, np->np_ip, np->np_port, tpg->tpgt, + pr_debug("CORE[%s] - Added Network Portal: %pISc:%hu,%hu on %s\n", + tpg->tpg_tiqn->tiqn, &np->np_sockaddr, np->np_port, tpg->tpgt, np->np_transport->name); return tpg_np; @@ -528,8 +527,8 @@ { iscsit_clear_tpg_np_login_thread(tpg_np, tpg, true); - pr_debug("CORE[%s] - Removed Network Portal: %s:%hu,%hu on %s\n", - tpg->tpg_tiqn->tiqn, np->np_ip, np->np_port, tpg->tpgt, + pr_debug("CORE[%s] - Removed Network Portal: %pISc:%hu,%hu on %s\n", + tpg->tpg_tiqn->tiqn, &np->np_sockaddr, np->np_port, tpg->tpgt, np->np_transport->name); tpg_np->tpg_np = NULL; --- linux-raspi2-4.2.0.orig/drivers/target/iscsi/iscsi_target_tpg.h +++ linux-raspi2-4.2.0/drivers/target/iscsi/iscsi_target_tpg.h @@ -22,7 +22,7 @@ extern void iscsit_tpg_del_external_nps(struct iscsi_tpg_np *); extern struct iscsi_tpg_np *iscsit_tpg_locate_child_np(struct iscsi_tpg_np *, int); extern struct iscsi_tpg_np *iscsit_tpg_add_network_portal(struct iscsi_portal_group *, - struct __kernel_sockaddr_storage *, char *, struct iscsi_tpg_np *, + struct __kernel_sockaddr_storage *, struct iscsi_tpg_np *, int); extern int iscsit_tpg_del_network_portal(struct iscsi_portal_group *, struct iscsi_tpg_np *); --- linux-raspi2-4.2.0.orig/drivers/target/target_core_device.c +++ linux-raspi2-4.2.0/drivers/target/target_core_device.c @@ -427,8 +427,6 @@ hlist_del_rcu(&orig->link); clear_bit(DEF_PR_REG_ACTIVE, &orig->deve_flags); - rcu_assign_pointer(orig->se_lun, NULL); - rcu_assign_pointer(orig->se_lun_acl, NULL); orig->lun_flags = 0; orig->creation_time = 0; orig->attach_count--; @@ -439,6 +437,9 @@ kref_put(&orig->pr_kref, target_pr_kref_release); wait_for_completion(&orig->pr_comp); + rcu_assign_pointer(orig->se_lun, NULL); + rcu_assign_pointer(orig->se_lun_acl, NULL); + kfree_rcu(orig, rcu_head); core_scsi3_free_pr_reg_from_nacl(dev, nacl); --- linux-raspi2-4.2.0.orig/drivers/target/target_core_pr.c +++ linux-raspi2-4.2.0/drivers/target/target_core_pr.c @@ -618,7 +618,7 @@ struct se_device *dev, struct se_node_acl *nacl, struct se_lun *lun, - struct se_dev_entry *deve, + struct se_dev_entry *dest_deve, u64 mapped_lun, unsigned char *isid, u64 sa_res_key, @@ -640,7 +640,29 @@ INIT_LIST_HEAD(&pr_reg->pr_reg_atp_mem_list); atomic_set(&pr_reg->pr_res_holders, 0); pr_reg->pr_reg_nacl = nacl; - pr_reg->pr_reg_deve = deve; + /* + * For destination registrations for ALL_TG_PT=1 and SPEC_I_PT=1, + * the se_dev_entry->pr_ref will have been already obtained by + * core_get_se_deve_from_rtpi() or __core_scsi3_alloc_registration(). + * + * Otherwise, locate se_dev_entry now and obtain a reference until + * registration completes in __core_scsi3_add_registration(). + */ + if (dest_deve) { + pr_reg->pr_reg_deve = dest_deve; + } else { + rcu_read_lock(); + pr_reg->pr_reg_deve = target_nacl_find_deve(nacl, mapped_lun); + if (!pr_reg->pr_reg_deve) { + rcu_read_unlock(); + pr_err("Unable to locate PR deve %s mapped_lun: %llu\n", + nacl->initiatorname, mapped_lun); + kmem_cache_free(t10_pr_reg_cache, pr_reg); + return NULL; + } + kref_get(&pr_reg->pr_reg_deve->pr_kref); + rcu_read_unlock(); + } pr_reg->pr_res_mapped_lun = mapped_lun; pr_reg->pr_aptpl_target_lun = lun->unpacked_lun; pr_reg->tg_pt_sep_rtpi = lun->lun_rtpi; @@ -936,17 +958,29 @@ !(strcmp(pr_reg->pr_tport, t_port)) && (pr_reg->pr_reg_tpgt == tpgt) && (pr_reg->pr_aptpl_target_lun == target_lun)) { + /* + * Obtain the ->pr_reg_deve pointer + reference, that + * is released by __core_scsi3_add_registration() below. + */ + rcu_read_lock(); + pr_reg->pr_reg_deve = target_nacl_find_deve(nacl, mapped_lun); + if (!pr_reg->pr_reg_deve) { + pr_err("Unable to locate PR APTPL %s mapped_lun:" + " %llu\n", nacl->initiatorname, mapped_lun); + rcu_read_unlock(); + continue; + } + kref_get(&pr_reg->pr_reg_deve->pr_kref); + rcu_read_unlock(); pr_reg->pr_reg_nacl = nacl; pr_reg->tg_pt_sep_rtpi = lun->lun_rtpi; - list_del(&pr_reg->pr_reg_aptpl_list); spin_unlock(&pr_tmpl->aptpl_reg_lock); /* * At this point all of the pointers in *pr_reg will * be setup, so go ahead and add the registration. */ - __core_scsi3_add_registration(dev, nacl, pr_reg, 0, 0); /* * If this registration is the reservation holder, @@ -1044,18 +1078,11 @@ __core_scsi3_dump_registration(tfo, dev, nacl, pr_reg, register_type); spin_unlock(&pr_tmpl->registration_lock); - - rcu_read_lock(); - deve = pr_reg->pr_reg_deve; - if (deve) - set_bit(DEF_PR_REG_ACTIVE, &deve->deve_flags); - rcu_read_unlock(); - /* * Skip extra processing for ALL_TG_PT=0 or REGISTER_AND_MOVE. */ if (!pr_reg->pr_reg_all_tg_pt || register_move) - return; + goto out; /* * Walk pr_reg->pr_reg_atp_list and add registrations for ALL_TG_PT=1 * allocated in __core_scsi3_alloc_registration() @@ -1075,19 +1102,31 @@ __core_scsi3_dump_registration(tfo, dev, nacl_tmp, pr_reg_tmp, register_type); spin_unlock(&pr_tmpl->registration_lock); - + /* + * Drop configfs group dependency reference and deve->pr_kref + * obtained from __core_scsi3_alloc_registration() code. + */ rcu_read_lock(); deve = pr_reg_tmp->pr_reg_deve; - if (deve) + if (deve) { set_bit(DEF_PR_REG_ACTIVE, &deve->deve_flags); + core_scsi3_lunacl_undepend_item(deve); + pr_reg_tmp->pr_reg_deve = NULL; + } rcu_read_unlock(); - - /* - * Drop configfs group dependency reference from - * __core_scsi3_alloc_registration() - */ - core_scsi3_lunacl_undepend_item(pr_reg_tmp->pr_reg_deve); } +out: + /* + * Drop deve->pr_kref obtained in __core_scsi3_do_alloc_registration() + */ + rcu_read_lock(); + deve = pr_reg->pr_reg_deve; + if (deve) { + set_bit(DEF_PR_REG_ACTIVE, &deve->deve_flags); + kref_put(&deve->pr_kref, target_pr_kref_release); + pr_reg->pr_reg_deve = NULL; + } + rcu_read_unlock(); } static int core_scsi3_alloc_registration( @@ -1785,9 +1824,11 @@ dest_node_acl->initiatorname, i_buf, (dest_se_deve) ? dest_se_deve->mapped_lun : 0); - if (!dest_se_deve) + if (!dest_se_deve) { + kref_put(&local_pr_reg->pr_reg_deve->pr_kref, + target_pr_kref_release); continue; - + } core_scsi3_lunacl_undepend_item(dest_se_deve); core_scsi3_nodeacl_undepend_item(dest_node_acl); core_scsi3_tpg_undepend_item(dest_tpg); @@ -1823,9 +1864,11 @@ kmem_cache_free(t10_pr_reg_cache, dest_pr_reg); - if (!dest_se_deve) + if (!dest_se_deve) { + kref_put(&local_pr_reg->pr_reg_deve->pr_kref, + target_pr_kref_release); continue; - + } core_scsi3_lunacl_undepend_item(dest_se_deve); core_scsi3_nodeacl_undepend_item(dest_node_acl); core_scsi3_tpg_undepend_item(dest_tpg); --- linux-raspi2-4.2.0.orig/drivers/target/target_core_xcopy.c +++ linux-raspi2-4.2.0/drivers/target/target_core_xcopy.c @@ -450,6 +450,8 @@ memset(&xcopy_pt_sess, 0, sizeof(struct se_session)); INIT_LIST_HEAD(&xcopy_pt_sess.sess_list); INIT_LIST_HEAD(&xcopy_pt_sess.sess_acl_list); + INIT_LIST_HEAD(&xcopy_pt_sess.sess_cmd_list); + spin_lock_init(&xcopy_pt_sess.sess_cmd_lock); xcopy_pt_nacl.se_tpg = &xcopy_pt_tpg; xcopy_pt_nacl.nacl_sess = &xcopy_pt_sess; @@ -644,7 +646,7 @@ pr_debug("XCOPY: Built READ_16: LBA: %llu Sectors: %u Length: %u\n", (unsigned long long)src_lba, src_sectors, length); - transport_init_se_cmd(se_cmd, &xcopy_pt_tfo, NULL, length, + transport_init_se_cmd(se_cmd, &xcopy_pt_tfo, &xcopy_pt_sess, length, DMA_FROM_DEVICE, 0, &xpt_cmd->sense_buffer[0]); xop->src_pt_cmd = xpt_cmd; @@ -704,7 +706,7 @@ pr_debug("XCOPY: Built WRITE_16: LBA: %llu Sectors: %u Length: %u\n", (unsigned long long)dst_lba, dst_sectors, length); - transport_init_se_cmd(se_cmd, &xcopy_pt_tfo, NULL, length, + transport_init_se_cmd(se_cmd, &xcopy_pt_tfo, &xcopy_pt_sess, length, DMA_TO_DEVICE, 0, &xpt_cmd->sense_buffer[0]); xop->dst_pt_cmd = xpt_cmd; --- linux-raspi2-4.2.0.orig/drivers/thermal/Kconfig +++ linux-raspi2-4.2.0/drivers/thermal/Kconfig @@ -271,6 +271,13 @@ enforce idle time which results in more package C-state residency. The user interface is exposed via generic thermal framework. +config THERMAL_BCM2835 + depends on RASPBERRYPI_FIRMWARE + tristate "BCM2835 Thermal Driver" + help + This will enable temperature monitoring for the Broadcom BCM2835 + chip. If built as a module, it will be called 'bcm2835-thermal'. + config X86_PKG_TEMP_THERMAL tristate "X86 package temperature thermal driver" depends on X86_THERMAL_VECTOR --- linux-raspi2-4.2.0.orig/drivers/thermal/Makefile +++ linux-raspi2-4.2.0/drivers/thermal/Makefile @@ -35,6 +35,7 @@ obj-$(CONFIG_IMX_THERMAL) += imx_thermal.o obj-$(CONFIG_DB8500_CPUFREQ_COOLING) += db8500_cpufreq_cooling.o obj-$(CONFIG_INTEL_POWERCLAMP) += intel_powerclamp.o +obj-$(CONFIG_THERMAL_BCM2835) += bcm2835-thermal.o obj-$(CONFIG_X86_PKG_TEMP_THERMAL) += x86_pkg_temp_thermal.o obj-$(CONFIG_INTEL_SOC_DTS_IOSF_CORE) += intel_soc_dts_iosf.o obj-$(CONFIG_INTEL_SOC_DTS_THERMAL) += intel_soc_dts_thermal.o --- linux-raspi2-4.2.0.orig/drivers/thermal/bcm2835-thermal.c +++ linux-raspi2-4.2.0/drivers/thermal/bcm2835-thermal.c @@ -0,0 +1,141 @@ +/***************************************************************************** +* Copyright 2011 Broadcom Corporation. All rights reserved. +* +* Unless you and Broadcom execute a separate written software license +* agreement governing use of this software, this software is licensed to you +* under the terms of the GNU General Public License version 2, available at +* http://www.broadcom.com/licenses/GPLv2.php (the "GPL"). +* +* Notwithstanding the above, under no circumstances may you combine this +* software in any way with any other Broadcom software provided under a +* license other than the GPL, without Broadcom's express prior written +* consent. +*****************************************************************************/ + +#include +#include +#include +#include + +static int bcm2835_thermal_get_property(struct thermal_zone_device *tz, + unsigned long *temp, u32 tag) +{ + struct rpi_firmware *fw = tz->devdata; + struct { + u32 id; + u32 val; + } packet; + int ret; + + *temp = 0; + packet.id = 0; + ret = rpi_firmware_property(fw, tag, &packet, sizeof(packet)); + if (ret) { + dev_err(&tz->device, "Failed to get temperature\n"); + return ret; + } + + *temp = packet.val; + dev_dbg(&tz->device, "%stemp=%lu\n", + tag == RPI_FIRMWARE_GET_MAX_TEMPERATURE ? "max" : "", *temp); + + return 0; +} + +static int bcm2835_thermal_get_temp(struct thermal_zone_device *tz, + unsigned long *temp) +{ + return bcm2835_thermal_get_property(tz, temp, + RPI_FIRMWARE_GET_TEMPERATURE); +} + +static int bcm2835_thermal_get_max_temp(struct thermal_zone_device *tz, + int trip, unsigned long *temp) +{ + /* + * The maximum safe temperature of the SoC. + * Overclock may be disabled above this temperature. + */ + return bcm2835_thermal_get_property(tz, temp, + RPI_FIRMWARE_GET_MAX_TEMPERATURE); +} + +static int bcm2835_thermal_get_trip_type(struct thermal_zone_device *tz, + int trip, enum thermal_trip_type *type) +{ + *type = THERMAL_TRIP_HOT; + + return 0; +} + +static int bcm2835_thermal_get_mode(struct thermal_zone_device *tz, + enum thermal_device_mode *mode) +{ + *mode = THERMAL_DEVICE_ENABLED; + + return 0; +} + +static struct thermal_zone_device_ops ops = { + .get_temp = bcm2835_thermal_get_temp, + .get_trip_temp = bcm2835_thermal_get_max_temp, + .get_trip_type = bcm2835_thermal_get_trip_type, + .get_mode = bcm2835_thermal_get_mode, +}; + +static int bcm2835_thermal_probe(struct platform_device *pdev) +{ + struct device_node *fw_np; + struct rpi_firmware *fw; + struct thermal_zone_device *tz; + + fw_np = of_parse_phandle(pdev->dev.of_node, "firmware", 0); +/* Remove comment when booting without Device Tree is no longer supported + if (!fw_np) { + dev_err(&pdev->dev, "Missing firmware node\n"); + return -ENOENT; + } +*/ + fw = rpi_firmware_get(fw_np); + if (!fw) + return -EPROBE_DEFER; + + tz = thermal_zone_device_register("bcm2835_thermal", 1, 0, fw, &ops, + NULL, 0, 0); + if (IS_ERR(tz)) { + dev_err(&pdev->dev, "Failed to register the thermal device\n"); + return PTR_ERR(tz); + } + + platform_set_drvdata(pdev, tz); + + return 0; +} + +static int bcm2835_thermal_remove(struct platform_device *pdev) +{ + thermal_zone_device_unregister(platform_get_drvdata(pdev)); + + return 0; +} + +static const struct of_device_id bcm2835_thermal_of_match_table[] = { + { .compatible = "brcm,bcm2835-thermal", }, + {}, +}; +MODULE_DEVICE_TABLE(of, bcm2835_thermal_of_match_table); + +static struct platform_driver bcm2835_thermal_driver = { + .probe = bcm2835_thermal_probe, + .remove = bcm2835_thermal_remove, + .driver = { + .name = "bcm2835_thermal", + .of_match_table = bcm2835_thermal_of_match_table, + }, +}; +module_platform_driver(bcm2835_thermal_driver); + +MODULE_AUTHOR("Dorian Peake"); +MODULE_AUTHOR("Noralf Trønnes"); +MODULE_DESCRIPTION("Thermal driver for bcm2835 chip"); +MODULE_LICENSE("GPL"); --- linux-raspi2-4.2.0.orig/drivers/thermal/cpu_cooling.c +++ linux-raspi2-4.2.0/drivers/thermal/cpu_cooling.c @@ -262,7 +262,9 @@ * efficiently. Power is stored in mW, frequency in KHz. The * resulting table is in ascending order. * - * Return: 0 on success, -E* on error. + * Return: 0 on success, -EINVAL if there are no OPPs for any CPUs, + * -ENOMEM if we run out of memory or -EAGAIN if an OPP was + * added/enabled while the function was executing. */ static int build_dyn_power_table(struct cpufreq_cooling_device *cpufreq_device, u32 capacitance) @@ -273,8 +275,6 @@ int num_opps = 0, cpu, i, ret = 0; unsigned long freq; - rcu_read_lock(); - for_each_cpu(cpu, &cpufreq_device->allowed_cpus) { dev = get_cpu_device(cpu); if (!dev) { @@ -284,24 +284,20 @@ } num_opps = dev_pm_opp_get_opp_count(dev); - if (num_opps > 0) { + if (num_opps > 0) break; - } else if (num_opps < 0) { - ret = num_opps; - goto unlock; - } + else if (num_opps < 0) + return num_opps; } - if (num_opps == 0) { - ret = -EINVAL; - goto unlock; - } + if (num_opps == 0) + return -EINVAL; power_table = kcalloc(num_opps, sizeof(*power_table), GFP_KERNEL); - if (!power_table) { - ret = -ENOMEM; - goto unlock; - } + if (!power_table) + return -ENOMEM; + + rcu_read_lock(); for (freq = 0, i = 0; opp = dev_pm_opp_find_freq_ceil(dev, &freq), !IS_ERR(opp); @@ -309,6 +305,12 @@ u32 freq_mhz, voltage_mv; u64 power; + if (i >= num_opps) { + rcu_read_unlock(); + ret = -EAGAIN; + goto free_power_table; + } + freq_mhz = freq / 1000000; voltage_mv = dev_pm_opp_get_voltage(opp) / 1000; @@ -326,17 +328,22 @@ power_table[i].power = power; } - if (i == 0) { + rcu_read_unlock(); + + if (i != num_opps) { ret = PTR_ERR(opp); - goto unlock; + goto free_power_table; } cpufreq_device->cpu_dev = dev; cpufreq_device->dyn_power_table = power_table; cpufreq_device->dyn_power_table_entries = i; -unlock: - rcu_read_unlock(); + return 0; + +free_power_table: + kfree(power_table); + return ret; } @@ -847,7 +854,7 @@ ret = get_idr(&cpufreq_idr, &cpufreq_dev->id); if (ret) { cool_dev = ERR_PTR(ret); - goto free_table; + goto free_power_table; } snprintf(dev_name, sizeof(dev_name), "thermal-cpufreq-%d", @@ -889,6 +896,8 @@ remove_idr: release_idr(&cpufreq_idr, cpufreq_dev->id); +free_power_table: + kfree(cpufreq_dev->dyn_power_table); free_table: kfree(cpufreq_dev->freq_table); free_time_in_idle_timestamp: @@ -1039,6 +1048,7 @@ thermal_cooling_device_unregister(cpufreq_dev->cool_dev); release_idr(&cpufreq_idr, cpufreq_dev->id); + kfree(cpufreq_dev->dyn_power_table); kfree(cpufreq_dev->time_in_idle_timestamp); kfree(cpufreq_dev->time_in_idle); kfree(cpufreq_dev->freq_table); --- linux-raspi2-4.2.0.orig/drivers/thermal/intel_powerclamp.c +++ linux-raspi2-4.2.0/drivers/thermal/intel_powerclamp.c @@ -693,11 +693,14 @@ { X86_VENDOR_INTEL, 6, 0x3f}, { X86_VENDOR_INTEL, 6, 0x45}, { X86_VENDOR_INTEL, 6, 0x46}, + { X86_VENDOR_INTEL, 6, 0x47}, { X86_VENDOR_INTEL, 6, 0x4c}, { X86_VENDOR_INTEL, 6, 0x4d}, + { X86_VENDOR_INTEL, 6, 0x4e}, { X86_VENDOR_INTEL, 6, 0x4f}, { X86_VENDOR_INTEL, 6, 0x56}, { X86_VENDOR_INTEL, 6, 0x57}, + { X86_VENDOR_INTEL, 6, 0x5e}, {} }; MODULE_DEVICE_TABLE(x86cpu, intel_powerclamp_ids); --- linux-raspi2-4.2.0.orig/drivers/thermal/samsung/exynos_tmu.c +++ linux-raspi2-4.2.0/drivers/thermal/samsung/exynos_tmu.c @@ -933,7 +933,7 @@ if (data->soc == SOC_ARCH_EXYNOS5260) emul_con = EXYNOS5260_EMUL_CON; - if (data->soc == SOC_ARCH_EXYNOS5433) + else if (data->soc == SOC_ARCH_EXYNOS5433) emul_con = EXYNOS5433_TMU_EMUL_CON; else if (data->soc == SOC_ARCH_EXYNOS7) emul_con = EXYNOS7_TMU_REG_EMUL_CON; @@ -1169,27 +1169,10 @@ struct exynos_tmu_data *data = platform_get_drvdata(pdev); struct exynos_tmu_platform_data *pdata; struct resource res; - int ret; if (!data || !pdev->dev.of_node) return -ENODEV; - /* - * Try enabling the regulator if found - * TODO: Add regulator as an SOC feature, so that regulator enable - * is a compulsory call. - */ - data->regulator = devm_regulator_get(&pdev->dev, "vtmu"); - if (!IS_ERR(data->regulator)) { - ret = regulator_enable(data->regulator); - if (ret) { - dev_err(&pdev->dev, "failed to enable vtmu\n"); - return ret; - } - } else { - dev_info(&pdev->dev, "Regulator node (vtmu) not found\n"); - } - data->id = of_alias_get_id(pdev->dev.of_node, "tmuctrl"); if (data->id < 0) data->id = 0; @@ -1307,12 +1290,22 @@ platform_set_drvdata(pdev, data); mutex_init(&data->lock); - data->tzd = thermal_zone_of_sensor_register(&pdev->dev, 0, data, - &exynos_sensor_ops); - if (IS_ERR(data->tzd)) { - pr_err("thermal: tz: %p ERROR\n", data->tzd); - return PTR_ERR(data->tzd); + /* + * Try enabling the regulator if found + * TODO: Add regulator as an SOC feature, so that regulator enable + * is a compulsory call. + */ + data->regulator = devm_regulator_get(&pdev->dev, "vtmu"); + if (!IS_ERR(data->regulator)) { + ret = regulator_enable(data->regulator); + if (ret) { + dev_err(&pdev->dev, "failed to enable vtmu\n"); + return ret; + } + } else { + dev_info(&pdev->dev, "Regulator node (vtmu) not found\n"); } + ret = exynos_map_dt_data(pdev); if (ret) goto err_sensor; @@ -1366,21 +1359,36 @@ break; }; + /* + * data->tzd must be registered before calling exynos_tmu_initialize(), + * requesting irq and calling exynos_tmu_control(). + */ + data->tzd = thermal_zone_of_sensor_register(&pdev->dev, 0, data, + &exynos_sensor_ops); + if (IS_ERR(data->tzd)) { + ret = PTR_ERR(data->tzd); + dev_err(&pdev->dev, "Failed to register sensor: %d\n", ret); + goto err_sclk; + } + ret = exynos_tmu_initialize(pdev); if (ret) { dev_err(&pdev->dev, "Failed to initialize TMU\n"); - goto err_sclk; + goto err_thermal; } ret = devm_request_irq(&pdev->dev, data->irq, exynos_tmu_irq, IRQF_TRIGGER_RISING | IRQF_SHARED, dev_name(&pdev->dev), data); if (ret) { dev_err(&pdev->dev, "Failed to request irq: %d\n", data->irq); - goto err_sclk; + goto err_thermal; } exynos_tmu_control(pdev, true); return 0; + +err_thermal: + thermal_zone_of_sensor_unregister(&pdev->dev, data->tzd); err_sclk: clk_disable_unprepare(data->sclk); err_clk: @@ -1391,7 +1399,6 @@ err_sensor: if (!IS_ERR_OR_NULL(data->regulator)) regulator_disable(data->regulator); - thermal_zone_of_sensor_unregister(&pdev->dev, data->tzd); return ret; } --- linux-raspi2-4.2.0.orig/drivers/thunderbolt/nhi.c +++ linux-raspi2-4.2.0/drivers/thunderbolt/nhi.c @@ -643,7 +643,7 @@ { .class = PCI_CLASS_SYSTEM_OTHER << 8, .class_mask = ~0, .vendor = PCI_VENDOR_ID_INTEL, .device = 0x156c, - .subvendor = 0x2222, .subdevice = 0x1111, + .subvendor = PCI_ANY_ID, .subdevice = PCI_ANY_ID, }, { 0,} }; --- linux-raspi2-4.2.0.orig/drivers/tty/hvc/hvsi.c +++ linux-raspi2-4.2.0/drivers/tty/hvc/hvsi.c @@ -240,9 +240,9 @@ { struct hvsi_control *header = (struct hvsi_control *)packet; - switch (header->verb) { + switch (be16_to_cpu(header->verb)) { case VSV_MODEM_CTL_UPDATE: - if ((header->word & HVSI_TSCD) == 0) { + if ((be32_to_cpu(header->word) & HVSI_TSCD) == 0) { /* CD went away; no more connection */ pr_debug("hvsi%i: CD dropped\n", hp->index); hp->mctrl &= TIOCM_CD; @@ -267,6 +267,7 @@ static void hvsi_recv_response(struct hvsi_struct *hp, uint8_t *packet) { struct hvsi_query_response *resp = (struct hvsi_query_response *)packet; + uint32_t mctrl_word; switch (hp->state) { case HVSI_WAIT_FOR_VER_RESPONSE: @@ -274,9 +275,10 @@ break; case HVSI_WAIT_FOR_MCTRL_RESPONSE: hp->mctrl = 0; - if (resp->u.mctrl_word & HVSI_TSDTR) + mctrl_word = be32_to_cpu(resp->u.mctrl_word); + if (mctrl_word & HVSI_TSDTR) hp->mctrl |= TIOCM_DTR; - if (resp->u.mctrl_word & HVSI_TSCD) + if (mctrl_word & HVSI_TSCD) hp->mctrl |= TIOCM_CD; __set_state(hp, HVSI_OPEN); break; @@ -295,10 +297,10 @@ packet.hdr.type = VS_QUERY_RESPONSE_PACKET_HEADER; packet.hdr.len = sizeof(struct hvsi_query_response); - packet.hdr.seqno = atomic_inc_return(&hp->seqno); - packet.verb = VSV_SEND_VERSION_NUMBER; + packet.hdr.seqno = cpu_to_be16(atomic_inc_return(&hp->seqno)); + packet.verb = cpu_to_be16(VSV_SEND_VERSION_NUMBER); packet.u.version = HVSI_VERSION; - packet.query_seqno = query_seqno+1; + packet.query_seqno = cpu_to_be16(query_seqno+1); pr_debug("%s: sending %i bytes\n", __func__, packet.hdr.len); dbg_dump_hex((uint8_t*)&packet, packet.hdr.len); @@ -319,7 +321,7 @@ switch (hp->state) { case HVSI_WAIT_FOR_VER_QUERY: - hvsi_version_respond(hp, query->hdr.seqno); + hvsi_version_respond(hp, be16_to_cpu(query->hdr.seqno)); __set_state(hp, HVSI_OPEN); break; default: @@ -555,8 +557,8 @@ packet.hdr.type = VS_QUERY_PACKET_HEADER; packet.hdr.len = sizeof(struct hvsi_query); - packet.hdr.seqno = atomic_inc_return(&hp->seqno); - packet.verb = verb; + packet.hdr.seqno = cpu_to_be16(atomic_inc_return(&hp->seqno)); + packet.verb = cpu_to_be16(verb); pr_debug("%s: sending %i bytes\n", __func__, packet.hdr.len); dbg_dump_hex((uint8_t*)&packet, packet.hdr.len); @@ -596,14 +598,14 @@ struct hvsi_control packet __ALIGNED__; int wrote; - packet.hdr.type = VS_CONTROL_PACKET_HEADER, - packet.hdr.seqno = atomic_inc_return(&hp->seqno); + packet.hdr.type = VS_CONTROL_PACKET_HEADER; + packet.hdr.seqno = cpu_to_be16(atomic_inc_return(&hp->seqno)); packet.hdr.len = sizeof(struct hvsi_control); - packet.verb = VSV_SET_MODEM_CTL; - packet.mask = HVSI_TSDTR; + packet.verb = cpu_to_be16(VSV_SET_MODEM_CTL); + packet.mask = cpu_to_be32(HVSI_TSDTR); if (mctrl & TIOCM_DTR) - packet.word = HVSI_TSDTR; + packet.word = cpu_to_be32(HVSI_TSDTR); pr_debug("%s: sending %i bytes\n", __func__, packet.hdr.len); dbg_dump_hex((uint8_t*)&packet, packet.hdr.len); @@ -680,7 +682,7 @@ BUG_ON(count > HVSI_MAX_OUTGOING_DATA); packet.hdr.type = VS_DATA_PACKET_HEADER; - packet.hdr.seqno = atomic_inc_return(&hp->seqno); + packet.hdr.seqno = cpu_to_be16(atomic_inc_return(&hp->seqno)); packet.hdr.len = count + sizeof(struct hvsi_header); memcpy(&packet.data, buf, count); @@ -697,9 +699,9 @@ struct hvsi_control packet __ALIGNED__; packet.hdr.type = VS_CONTROL_PACKET_HEADER; - packet.hdr.seqno = atomic_inc_return(&hp->seqno); + packet.hdr.seqno = cpu_to_be16(atomic_inc_return(&hp->seqno)); packet.hdr.len = 6; - packet.verb = VSV_CLOSE_PROTOCOL; + packet.verb = cpu_to_be16(VSV_CLOSE_PROTOCOL); pr_debug("%s: sending %i bytes\n", __func__, packet.hdr.len); dbg_dump_hex((uint8_t*)&packet, packet.hdr.len); @@ -1180,7 +1182,7 @@ /* search device tree for vty nodes */ for_each_compatible_node(vty, "serial", "hvterm-protocol") { struct hvsi_struct *hp; - const uint32_t *vtermno, *irq; + const __be32 *vtermno, *irq; vtermno = of_get_property(vty, "reg", NULL); irq = of_get_property(vty, "interrupts", NULL); @@ -1202,11 +1204,11 @@ hp->index = hvsi_count; hp->inbuf_end = hp->inbuf; hp->state = HVSI_CLOSED; - hp->vtermno = *vtermno; - hp->virq = irq_create_mapping(NULL, irq[0]); + hp->vtermno = be32_to_cpup(vtermno); + hp->virq = irq_create_mapping(NULL, be32_to_cpup(irq)); if (hp->virq == 0) { printk(KERN_ERR "%s: couldn't create irq mapping for 0x%x\n", - __func__, irq[0]); + __func__, be32_to_cpup(irq)); tty_port_destroy(&hp->port); continue; } --- linux-raspi2-4.2.0.orig/drivers/tty/mips_ejtag_fdc.c +++ linux-raspi2-4.2.0/drivers/tty/mips_ejtag_fdc.c @@ -1045,38 +1045,6 @@ return ret; } -static int mips_ejtag_fdc_tty_remove(struct mips_cdmm_device *dev) -{ - struct mips_ejtag_fdc_tty *priv = mips_cdmm_get_drvdata(dev); - struct mips_ejtag_fdc_tty_port *dport; - int nport; - unsigned int cfg; - - if (priv->irq >= 0) { - raw_spin_lock_irq(&priv->lock); - cfg = mips_ejtag_fdc_read(priv, REG_FDCFG); - /* Disable interrupts */ - cfg &= ~(REG_FDCFG_TXINTTHRES | REG_FDCFG_RXINTTHRES); - cfg |= REG_FDCFG_TXINTTHRES_DISABLED; - cfg |= REG_FDCFG_RXINTTHRES_DISABLED; - mips_ejtag_fdc_write(priv, REG_FDCFG, cfg); - raw_spin_unlock_irq(&priv->lock); - } else { - priv->removing = true; - del_timer_sync(&priv->poll_timer); - } - kthread_stop(priv->thread); - if (dev->cpu == 0) - mips_ejtag_fdc_con.tty_drv = NULL; - tty_unregister_driver(priv->driver); - for (nport = 0; nport < NUM_TTY_CHANNELS; nport++) { - dport = &priv->ports[nport]; - tty_port_destroy(&dport->port); - } - put_tty_driver(priv->driver); - return 0; -} - static int mips_ejtag_fdc_tty_cpu_down(struct mips_cdmm_device *dev) { struct mips_ejtag_fdc_tty *priv = mips_cdmm_get_drvdata(dev); @@ -1149,12 +1117,11 @@ .name = "mips_ejtag_fdc", }, .probe = mips_ejtag_fdc_tty_probe, - .remove = mips_ejtag_fdc_tty_remove, .cpu_down = mips_ejtag_fdc_tty_cpu_down, .cpu_up = mips_ejtag_fdc_tty_cpu_up, .id_table = mips_ejtag_fdc_tty_ids, }; -module_mips_cdmm_driver(mips_ejtag_fdc_tty_driver); +builtin_mips_cdmm_driver(mips_ejtag_fdc_tty_driver); static int __init mips_ejtag_fdc_init_console(void) { --- linux-raspi2-4.2.0.orig/drivers/tty/n_tty.c +++ linux-raspi2-4.2.0/drivers/tty/n_tty.c @@ -169,7 +169,7 @@ { struct n_tty_data *ldata = tty->disc_data; - tty_audit_add_data(tty, to, n, ldata->icanon); + tty_audit_add_data(tty, from, n, ldata->icanon); return copy_to_user(to, from, n); } @@ -343,8 +343,7 @@ spin_lock_irqsave(&tty->ctrl_lock, flags); tty->ctrl_status |= TIOCPKT_FLUSHREAD; spin_unlock_irqrestore(&tty->ctrl_lock, flags); - if (waitqueue_active(&tty->link->read_wait)) - wake_up_interruptible(&tty->link->read_wait); + wake_up_interruptible(&tty->link->read_wait); } } @@ -1382,8 +1381,7 @@ put_tty_queue(c, ldata); smp_store_release(&ldata->canon_head, ldata->read_head); kill_fasync(&tty->fasync, SIGIO, POLL_IN); - if (waitqueue_active(&tty->read_wait)) - wake_up_interruptible_poll(&tty->read_wait, POLLIN); + wake_up_interruptible_poll(&tty->read_wait, POLLIN); return 0; } } @@ -1667,8 +1665,7 @@ if ((read_cnt(ldata) >= ldata->minimum_to_wake) || L_EXTPROC(tty)) { kill_fasync(&tty->fasync, SIGIO, POLL_IN); - if (waitqueue_active(&tty->read_wait)) - wake_up_interruptible_poll(&tty->read_wait, POLLIN); + wake_up_interruptible_poll(&tty->read_wait, POLLIN); } } @@ -1887,10 +1884,8 @@ } /* The termios change make the tty ready for I/O */ - if (waitqueue_active(&tty->write_wait)) - wake_up_interruptible(&tty->write_wait); - if (waitqueue_active(&tty->read_wait)) - wake_up_interruptible(&tty->read_wait); + wake_up_interruptible(&tty->write_wait); + wake_up_interruptible(&tty->read_wait); } /** --- linux-raspi2-4.2.0.orig/drivers/tty/serial/8250/8250_core.c +++ linux-raspi2-4.2.0/drivers/tty/serial/8250/8250_core.c @@ -326,6 +326,14 @@ UART_FCR7_64BYTE, .flags = UART_CAP_FIFO, }, + [PORT_RT2880] = { + .name = "Palmchip BK-3103", + .fifo_size = 16, + .tx_loadsz = 16, + .fcr = UART_FCR_ENABLE_FIFO | UART_FCR_R_TRIG_10, + .rxtrig_bytes = {1, 4, 8, 14}, + .flags = UART_CAP_FIFO, + }, }; /* Uart divisor latch read */ @@ -3250,6 +3258,8 @@ if (nr_uarts > UART_NR) nr_uarts = UART_NR; + if (!nr_uarts) + return; for (i = 0; i < nr_uarts; i++) { struct uart_8250_port *up = &serial8250_ports[i]; --- linux-raspi2-4.2.0.orig/drivers/tty/serial/8250/8250_dma.c +++ linux-raspi2-4.2.0/drivers/tty/serial/8250/8250_dma.c @@ -80,10 +80,6 @@ return 0; dma->tx_size = CIRC_CNT_TO_END(xmit->head, xmit->tail, UART_XMIT_SIZE); - if (dma->tx_size < p->port.fifosize) { - ret = -EINVAL; - goto err; - } desc = dmaengine_prep_slave_single(dma->txchan, dma->tx_addr + xmit->tail, --- linux-raspi2-4.2.0.orig/drivers/tty/serial/8250/8250_omap.c +++ linux-raspi2-4.2.0/drivers/tty/serial/8250/8250_omap.c @@ -100,6 +100,7 @@ struct work_struct qos_work; struct uart_8250_dma omap8250_dma; spinlock_t rx_dma_lock; + bool rx_dma_broken; }; static u32 uart_read(struct uart_8250_port *up, u32 reg) @@ -754,6 +755,7 @@ struct omap8250_priv *priv = p->port.private_data; struct uart_8250_dma *dma = p->dma; unsigned long flags; + int ret; spin_lock_irqsave(&priv->rx_dma_lock, flags); @@ -762,7 +764,9 @@ return; } - dmaengine_pause(dma->rxchan); + ret = dmaengine_pause(dma->rxchan); + if (WARN_ON_ONCE(ret)) + priv->rx_dma_broken = true; spin_unlock_irqrestore(&priv->rx_dma_lock, flags); @@ -806,6 +810,9 @@ break; } + if (priv->rx_dma_broken) + return -EINVAL; + spin_lock_irqsave(&priv->rx_dma_lock, flags); if (dma->rx_running) @@ -1180,6 +1187,11 @@ if (of_machine_is_compatible("ti,am33xx")) priv->habit |= OMAP_DMA_TX_KICK; + /* + * pause is currently not supported atleast on omap-sdma + * and edma on most earlier kernels. + */ + priv->rx_dma_broken = true; } } #endif --- linux-raspi2-4.2.0.orig/drivers/tty/serial/8250/8250_pci.c +++ linux-raspi2-4.2.0/drivers/tty/serial/8250/8250_pci.c @@ -2017,6 +2017,12 @@ #define PCIE_DEVICE_ID_WCH_CH382_2S1P 0x3250 #define PCIE_DEVICE_ID_WCH_CH384_4S 0x3470 +#define PCI_VENDOR_ID_PERICOM 0x12D8 +#define PCI_DEVICE_ID_PERICOM_PI7C9X7951 0x7951 +#define PCI_DEVICE_ID_PERICOM_PI7C9X7952 0x7952 +#define PCI_DEVICE_ID_PERICOM_PI7C9X7954 0x7954 +#define PCI_DEVICE_ID_PERICOM_PI7C9X7958 0x7958 + /* Unknown vendors/cards - this should not be in linux/pci_ids.h */ #define PCI_SUBDEVICE_ID_UNKNOWN_0x1584 0x1584 #define PCI_SUBDEVICE_ID_UNKNOWN_0x1588 0x1588 @@ -2331,27 +2337,12 @@ * Pericom */ { - .vendor = 0x12d8, - .device = 0x7952, - .subvendor = PCI_ANY_ID, - .subdevice = PCI_ANY_ID, - .setup = pci_pericom_setup, - }, - { - .vendor = 0x12d8, - .device = 0x7954, - .subvendor = PCI_ANY_ID, - .subdevice = PCI_ANY_ID, - .setup = pci_pericom_setup, - }, - { - .vendor = 0x12d8, - .device = 0x7958, - .subvendor = PCI_ANY_ID, - .subdevice = PCI_ANY_ID, - .setup = pci_pericom_setup, + .vendor = PCI_VENDOR_ID_PERICOM, + .device = PCI_ANY_ID, + .subvendor = PCI_ANY_ID, + .subdevice = PCI_ANY_ID, + .setup = pci_pericom_setup, }, - /* * PLX */ @@ -3056,6 +3047,10 @@ pbn_fintek_8, pbn_fintek_12, pbn_wch384_4, + pbn_pericom_PI7C9X7951, + pbn_pericom_PI7C9X7952, + pbn_pericom_PI7C9X7954, + pbn_pericom_PI7C9X7958, }; /* @@ -3881,7 +3876,6 @@ .base_baud = 115200, .first_offset = 0x40, }, - [pbn_wch384_4] = { .flags = FL_BASE0, .num_ports = 4, @@ -3889,6 +3883,33 @@ .uart_offset = 8, .first_offset = 0xC0, }, + /* + * Pericom PI7C9X795[1248] Uno/Dual/Quad/Octal UART + */ + [pbn_pericom_PI7C9X7951] = { + .flags = FL_BASE0, + .num_ports = 1, + .base_baud = 921600, + .uart_offset = 0x8, + }, + [pbn_pericom_PI7C9X7952] = { + .flags = FL_BASE0, + .num_ports = 2, + .base_baud = 921600, + .uart_offset = 0x8, + }, + [pbn_pericom_PI7C9X7954] = { + .flags = FL_BASE0, + .num_ports = 4, + .base_baud = 921600, + .uart_offset = 0x8, + }, + [pbn_pericom_PI7C9X7958] = { + .flags = FL_BASE0, + .num_ports = 8, + .base_baud = 921600, + .uart_offset = 0x8, + }, }; static const struct pci_device_id blacklist[] = { @@ -5154,6 +5175,25 @@ 0, 0, pbn_exar_XR17V8358 }, /* + * Pericom PI7C9X795[1248] Uno/Dual/Quad/Octal UART + */ + { PCI_VENDOR_ID_PERICOM, PCI_DEVICE_ID_PERICOM_PI7C9X7951, + PCI_ANY_ID, PCI_ANY_ID, + 0, + 0, pbn_pericom_PI7C9X7951 }, + { PCI_VENDOR_ID_PERICOM, PCI_DEVICE_ID_PERICOM_PI7C9X7952, + PCI_ANY_ID, PCI_ANY_ID, + 0, + 0, pbn_pericom_PI7C9X7952 }, + { PCI_VENDOR_ID_PERICOM, PCI_DEVICE_ID_PERICOM_PI7C9X7954, + PCI_ANY_ID, PCI_ANY_ID, + 0, + 0, pbn_pericom_PI7C9X7954 }, + { PCI_VENDOR_ID_PERICOM, PCI_DEVICE_ID_PERICOM_PI7C9X7958, + PCI_ANY_ID, PCI_ANY_ID, + 0, + 0, pbn_pericom_PI7C9X7958 }, + /* * Topic TP560 Data/Fax/Voice 56k modem (reported by Evan Clarke) */ { PCI_VENDOR_ID_TOPIC, PCI_DEVICE_ID_TOPIC_TP560, --- linux-raspi2-4.2.0.orig/drivers/tty/serial/8250/8250_pnp.c +++ linux-raspi2-4.2.0/drivers/tty/serial/8250/8250_pnp.c @@ -41,6 +41,12 @@ { "AEI1240", 0 }, /* Rockwell 56K ACF II Fax+Data+Voice Modem */ { "AKY1021", 0 /*SPCI_FL_NO_SHIRQ*/ }, + /* + * ALi Fast Infrared Controller + * Native driver (ali-ircc) is broken so at least + * it can be used with irtty-sir. + */ + { "ALI5123", 0 }, /* AZT3005 PnP SOUND DEVICE */ { "AZT4001", 0 }, /* Best Data Products Inc. Smart One 336F PnP Modem */ @@ -364,6 +370,11 @@ /* Winbond CIR port, should not be probed. We should keep track of it to prevent the legacy serial driver from probing it */ { "WEC1022", CIR_PORT }, + /* + * SMSC IrCC SIR/FIR port, should not be probed by serial driver + * as well so its own driver can bind to it. + */ + { "SMCF010", CIR_PORT }, { "", 0 } }; --- linux-raspi2-4.2.0.orig/drivers/tty/serial/8250/8250_uniphier.c +++ linux-raspi2-4.2.0/drivers/tty/serial/8250/8250_uniphier.c @@ -218,6 +218,7 @@ ret = serial8250_register_8250_port(&up); if (ret < 0) { dev_err(dev, "failed to register 8250 port\n"); + clk_disable_unprepare(priv->clk); return ret; } --- linux-raspi2-4.2.0.orig/drivers/tty/serial/amba-pl011.c +++ linux-raspi2-4.2.0/drivers/tty/serial/amba-pl011.c @@ -87,7 +87,7 @@ static unsigned int get_fifosize_arm(struct amba_device *dev) { - return amba_rev(dev) < 3 ? 16 : 32; + return 16; //TODO: fix: amba_rev(dev) < 3 ? 16 : 32; } static struct vendor_data vendor_arm = { --- linux-raspi2-4.2.0.orig/drivers/tty/serial/atmel_serial.c +++ linux-raspi2-4.2.0/drivers/tty/serial/atmel_serial.c @@ -2641,7 +2641,7 @@ ret = atmel_init_gpios(port, &pdev->dev); if (ret < 0) { dev_err(&pdev->dev, "Failed to initialize GPIOs."); - goto err; + goto err_clear_bit; } ret = atmel_init_port(port, pdev); --- linux-raspi2-4.2.0.orig/drivers/tty/serial/men_z135_uart.c +++ linux-raspi2-4.2.0/drivers/tty/serial/men_z135_uart.c @@ -392,7 +392,6 @@ struct men_z135_port *uart = (struct men_z135_port *)data; struct uart_port *port = &uart->port; bool handled = false; - unsigned long flags; int irq_id; uart->stat_reg = ioread32(port->membase + MEN_Z135_STAT_REG); @@ -401,7 +400,7 @@ if (!irq_id) goto out; - spin_lock_irqsave(&port->lock, flags); + spin_lock(&port->lock); /* It's save to write to IIR[7:6] RXC[9:8] */ iowrite8(irq_id, port->membase + MEN_Z135_STAT_REG); @@ -427,7 +426,7 @@ handled = true; } - spin_unlock_irqrestore(&port->lock, flags); + spin_unlock(&port->lock); out: return IRQ_RETVAL(handled); } @@ -717,7 +716,7 @@ baud = uart_get_baud_rate(port, termios, old, 0, uart_freq / 16); - spin_lock(&port->lock); + spin_lock_irq(&port->lock); if (tty_termios_baud_rate(termios)) tty_termios_encode_baud_rate(termios, baud, baud); @@ -725,7 +724,7 @@ iowrite32(bd_reg, port->membase + MEN_Z135_BAUD_REG); uart_update_timeout(port, termios->c_cflag, baud); - spin_unlock(&port->lock); + spin_unlock_irq(&port->lock); } static const char *men_z135_type(struct uart_port *port) --- linux-raspi2-4.2.0.orig/drivers/tty/serial/samsung.c +++ linux-raspi2-4.2.0/drivers/tty/serial/samsung.c @@ -295,15 +295,6 @@ if (ourport->tx_mode != S3C24XX_TX_DMA) enable_tx_dma(ourport); - while (xmit->tail & (dma_get_cache_alignment() - 1)) { - if (rd_regl(port, S3C2410_UFSTAT) & ourport->info->tx_fifofull) - return 0; - wr_regb(port, S3C2410_UTXH, xmit->buf[xmit->tail]); - xmit->tail = (xmit->tail + 1) & (UART_XMIT_SIZE - 1); - port->icount.tx++; - count--; - } - dma->tx_size = count & ~(dma_get_cache_alignment() - 1); dma->tx_transfer_addr = dma->tx_addr + xmit->tail; @@ -342,7 +333,9 @@ return; } - if (!ourport->dma || !ourport->dma->tx_chan || count < port->fifosize) + if (!ourport->dma || !ourport->dma->tx_chan || + count < ourport->min_dma_size || + xmit->tail & (dma_get_cache_alignment() - 1)) s3c24xx_serial_start_tx_pio(ourport); else s3c24xx_serial_start_tx_dma(ourport, count); @@ -736,15 +729,20 @@ struct uart_port *port = &ourport->port; struct circ_buf *xmit = &port->state->xmit; unsigned long flags; - int count; + int count, dma_count = 0; spin_lock_irqsave(&port->lock, flags); count = CIRC_CNT_TO_END(xmit->head, xmit->tail, UART_XMIT_SIZE); - if (ourport->dma && ourport->dma->tx_chan && count >= port->fifosize) { - s3c24xx_serial_start_tx_dma(ourport, count); - goto out; + if (ourport->dma && ourport->dma->tx_chan && + count >= ourport->min_dma_size) { + int align = dma_get_cache_alignment() - + (xmit->tail & (dma_get_cache_alignment() - 1)); + if (count-align >= ourport->min_dma_size) { + dma_count = count-align; + count = align; + } } if (port->x_char) { @@ -765,14 +763,24 @@ /* try and drain the buffer... */ - count = port->fifosize; - while (!uart_circ_empty(xmit) && count-- > 0) { + if (count > port->fifosize) { + count = port->fifosize; + dma_count = 0; + } + + while (!uart_circ_empty(xmit) && count > 0) { if (rd_regl(port, S3C2410_UFSTAT) & ourport->info->tx_fifofull) break; wr_regb(port, S3C2410_UTXH, xmit->buf[xmit->tail]); xmit->tail = (xmit->tail + 1) & (UART_XMIT_SIZE - 1); port->icount.tx++; + count--; + } + + if (!count && dma_count) { + s3c24xx_serial_start_tx_dma(ourport, dma_count); + goto out; } if (uart_circ_chars_pending(xmit) < WAKEUP_CHARS) { @@ -1838,6 +1846,13 @@ else if (ourport->info->fifosize) ourport->port.fifosize = ourport->info->fifosize; + /* + * DMA transfers must be aligned at least to cache line size, + * so find minimal transfer size suitable for DMA mode + */ + ourport->min_dma_size = max_t(int, ourport->port.fifosize, + dma_get_cache_alignment()); + probe_index++; dbg("%s: initialising port %p...\n", __func__, ourport); --- linux-raspi2-4.2.0.orig/drivers/tty/serial/samsung.h +++ linux-raspi2-4.2.0/drivers/tty/serial/samsung.h @@ -82,6 +82,7 @@ unsigned char tx_claimed; unsigned int pm_level; unsigned long baudclk_rate; + unsigned int min_dma_size; unsigned int rx_irq; unsigned int tx_irq; --- linux-raspi2-4.2.0.orig/drivers/tty/tty_audit.c +++ linux-raspi2-4.2.0/drivers/tty/tty_audit.c @@ -265,7 +265,7 @@ * * Audit @data of @size from @tty, if necessary. */ -void tty_audit_add_data(struct tty_struct *tty, unsigned char *data, +void tty_audit_add_data(struct tty_struct *tty, const void *data, size_t size, unsigned icanon) { struct tty_audit_buf *buf; --- linux-raspi2-4.2.0.orig/drivers/tty/tty_io.c +++ linux-raspi2-4.2.0/drivers/tty/tty_io.c @@ -1279,18 +1279,22 @@ int was_stopped = tty->stopped; if (tty->ops->send_xchar) { + down_read(&tty->termios_rwsem); tty->ops->send_xchar(tty, ch); + up_read(&tty->termios_rwsem); return 0; } if (tty_write_lock(tty, 0) < 0) return -ERESTARTSYS; + down_read(&tty->termios_rwsem); if (was_stopped) start_tty(tty); tty->ops->write(tty, &ch, 1); if (was_stopped) stop_tty(tty); + up_read(&tty->termios_rwsem); tty_write_unlock(tty); return 0; } @@ -2136,8 +2140,24 @@ if (!noctty && current->signal->leader && !current->signal->tty && - tty->session == NULL) - __proc_set_tty(tty); + tty->session == NULL) { + /* + * Don't let a process that only has write access to the tty + * obtain the privileges associated with having a tty as + * controlling terminal (being able to reopen it with full + * access through /dev/tty, being able to perform pushback). + * Many distributions set the group of all ttys to "tty" and + * grant write-only access to all terminals for setgid tty + * binaries, which should not imply full privileges on all ttys. + * + * This could theoretically break old code that performs open() + * on a write-only file descriptor. In that case, it might be + * necessary to also permit this if + * inode_permission(inode, MAY_READ) == 0. + */ + if (filp->f_mode & FMODE_READ) + __proc_set_tty(tty); + } spin_unlock_irq(¤t->sighand->siglock); read_unlock(&tasklist_lock); tty_unlock(tty); @@ -2426,7 +2446,7 @@ * Takes ->siglock() when updating signal->tty */ -static int tiocsctty(struct tty_struct *tty, int arg) +static int tiocsctty(struct tty_struct *tty, struct file *file, int arg) { int ret = 0; @@ -2460,6 +2480,13 @@ goto unlock; } } + + /* See the comment in tty_open(). */ + if ((file->f_mode & FMODE_READ) == 0 && !capable(CAP_SYS_ADMIN)) { + ret = -EPERM; + goto unlock; + } + proc_set_tty(tty); unlock: read_unlock(&tasklist_lock); @@ -2852,7 +2879,7 @@ no_tty(); return 0; case TIOCSCTTY: - return tiocsctty(tty, arg); + return tiocsctty(tty, file, arg); case TIOCGPGRP: return tiocgpgrp(tty, real_tty, p); case TIOCSPGRP: --- linux-raspi2-4.2.0.orig/drivers/tty/tty_ioctl.c +++ linux-raspi2-4.2.0/drivers/tty/tty_ioctl.c @@ -1142,16 +1142,12 @@ spin_unlock_irq(&tty->flow_lock); break; case TCIOFF: - down_read(&tty->termios_rwsem); if (STOP_CHAR(tty) != __DISABLED_CHAR) retval = tty_send_xchar(tty, STOP_CHAR(tty)); - up_read(&tty->termios_rwsem); break; case TCION: - down_read(&tty->termios_rwsem); if (START_CHAR(tty) != __DISABLED_CHAR) retval = tty_send_xchar(tty, START_CHAR(tty)); - up_read(&tty->termios_rwsem); break; default: return -EINVAL; --- linux-raspi2-4.2.0.orig/drivers/tty/vt/vt.c +++ linux-raspi2-4.2.0/drivers/tty/vt/vt.c @@ -102,6 +102,7 @@ #include #include #include +#include #define MAX_NR_CON_DRIVER 16 @@ -146,7 +147,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); @@ -170,6 +171,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. @@ -684,6 +688,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; @@ -799,7 +810,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); } @@ -2927,7 +2938,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 ; @@ -2938,7 +2949,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] ; @@ -2995,16 +3006,32 @@ 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); visual_init(vc, currcons, 1); 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); --- linux-raspi2-4.2.0.orig/drivers/tty/vt/vt_ioctl.c +++ linux-raspi2-4.2.0/drivers/tty/vt/vt_ioctl.c @@ -1046,9 +1046,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; @@ -1080,7 +1080,7 @@ */ if (tty) __do_SAK(tty); - reset_vc(vc); + reset_vc(vc, KD_TEXT); } console_unlock(); } @@ -1337,7 +1337,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) @@ -1409,7 +1409,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-raspi2-4.2.0.orig/drivers/usb/Makefile +++ linux-raspi2-4.2.0/drivers/usb/Makefile @@ -7,6 +7,7 @@ obj-$(CONFIG_USB) += core/ obj-$(CONFIG_USB_SUPPORT) += phy/ +obj-$(CONFIG_USB_DWCOTG) += host/ obj-$(CONFIG_USB_DWC3) += dwc3/ obj-$(CONFIG_USB_DWC2) += dwc2/ obj-$(CONFIG_USB_ISP1760) += isp1760/ --- linux-raspi2-4.2.0.orig/drivers/usb/chipidea/ci_hdrc_imx.c +++ linux-raspi2-4.2.0/drivers/usb/chipidea/ci_hdrc_imx.c @@ -56,7 +56,7 @@ { .compatible = "fsl,imx27-usb", .data = &imx27_usb_data}, { .compatible = "fsl,imx6q-usb", .data = &imx6q_usb_data}, { .compatible = "fsl,imx6sl-usb", .data = &imx6sl_usb_data}, - { .compatible = "fsl,imx6sx-usb", .data = &imx6sl_usb_data}, + { .compatible = "fsl,imx6sx-usb", .data = &imx6sx_usb_data}, { /* sentinel */ } }; MODULE_DEVICE_TABLE(of, ci_hdrc_imx_dt_ids); @@ -68,6 +68,12 @@ struct imx_usbmisc_data *usbmisc_data; bool supports_runtime_pm; bool in_lpm; + /* SoC before i.mx6 (except imx23/imx28) needs three clks */ + bool need_three_clks; + struct clk *clk_ipg; + struct clk *clk_ahb; + struct clk *clk_per; + /* --------------------------------- */ }; /* Common functions shared by usbmisc drivers */ @@ -119,6 +125,102 @@ } /* End of common functions shared by usbmisc drivers*/ +static int imx_get_clks(struct device *dev) +{ + struct ci_hdrc_imx_data *data = dev_get_drvdata(dev); + int ret = 0; + + data->clk_ipg = devm_clk_get(dev, "ipg"); + if (IS_ERR(data->clk_ipg)) { + /* If the platform only needs one clocks */ + data->clk = devm_clk_get(dev, NULL); + if (IS_ERR(data->clk)) { + ret = PTR_ERR(data->clk); + dev_err(dev, + "Failed to get clks, err=%ld,%ld\n", + PTR_ERR(data->clk), PTR_ERR(data->clk_ipg)); + return ret; + } + return ret; + } + + data->clk_ahb = devm_clk_get(dev, "ahb"); + if (IS_ERR(data->clk_ahb)) { + ret = PTR_ERR(data->clk_ahb); + dev_err(dev, + "Failed to get ahb clock, err=%d\n", ret); + return ret; + } + + data->clk_per = devm_clk_get(dev, "per"); + if (IS_ERR(data->clk_per)) { + ret = PTR_ERR(data->clk_per); + dev_err(dev, + "Failed to get per clock, err=%d\n", ret); + return ret; + } + + data->need_three_clks = true; + return ret; +} + +static int imx_prepare_enable_clks(struct device *dev) +{ + struct ci_hdrc_imx_data *data = dev_get_drvdata(dev); + int ret = 0; + + if (data->need_three_clks) { + ret = clk_prepare_enable(data->clk_ipg); + if (ret) { + dev_err(dev, + "Failed to prepare/enable ipg clk, err=%d\n", + ret); + return ret; + } + + ret = clk_prepare_enable(data->clk_ahb); + if (ret) { + dev_err(dev, + "Failed to prepare/enable ahb clk, err=%d\n", + ret); + clk_disable_unprepare(data->clk_ipg); + return ret; + } + + ret = clk_prepare_enable(data->clk_per); + if (ret) { + dev_err(dev, + "Failed to prepare/enable per clk, err=%d\n", + ret); + clk_disable_unprepare(data->clk_ahb); + clk_disable_unprepare(data->clk_ipg); + return ret; + } + } else { + ret = clk_prepare_enable(data->clk); + if (ret) { + dev_err(dev, + "Failed to prepare/enable clk, err=%d\n", + ret); + return ret; + } + } + + return ret; +} + +static void imx_disable_unprepare_clks(struct device *dev) +{ + struct ci_hdrc_imx_data *data = dev_get_drvdata(dev); + + if (data->need_three_clks) { + clk_disable_unprepare(data->clk_per); + clk_disable_unprepare(data->clk_ahb); + clk_disable_unprepare(data->clk_ipg); + } else { + clk_disable_unprepare(data->clk); + } +} static int ci_hdrc_imx_probe(struct platform_device *pdev) { @@ -137,23 +239,18 @@ if (!data) return -ENOMEM; + platform_set_drvdata(pdev, data); data->usbmisc_data = usbmisc_get_init_data(&pdev->dev); if (IS_ERR(data->usbmisc_data)) return PTR_ERR(data->usbmisc_data); - data->clk = devm_clk_get(&pdev->dev, NULL); - if (IS_ERR(data->clk)) { - dev_err(&pdev->dev, - "Failed to get clock, err=%ld\n", PTR_ERR(data->clk)); - return PTR_ERR(data->clk); - } + ret = imx_get_clks(&pdev->dev); + if (ret) + return ret; - ret = clk_prepare_enable(data->clk); - if (ret) { - dev_err(&pdev->dev, - "Failed to prepare or enable clock, err=%d\n", ret); + ret = imx_prepare_enable_clks(&pdev->dev); + if (ret) return ret; - } data->phy = devm_usb_get_phy_by_phandle(&pdev->dev, "fsl,usbphy", 0); if (IS_ERR(data->phy)) { @@ -196,8 +293,6 @@ goto disable_device; } - platform_set_drvdata(pdev, data); - if (data->supports_runtime_pm) { pm_runtime_set_active(&pdev->dev); pm_runtime_enable(&pdev->dev); @@ -210,7 +305,7 @@ disable_device: ci_hdrc_remove_device(data->ci_pdev); err_clk: - clk_disable_unprepare(data->clk); + imx_disable_unprepare_clks(&pdev->dev); return ret; } @@ -224,7 +319,7 @@ pm_runtime_put_noidle(&pdev->dev); } ci_hdrc_remove_device(data->ci_pdev); - clk_disable_unprepare(data->clk); + imx_disable_unprepare_clks(&pdev->dev); return 0; } @@ -236,7 +331,7 @@ dev_dbg(dev, "at %s\n", __func__); - clk_disable_unprepare(data->clk); + imx_disable_unprepare_clks(dev); data->in_lpm = true; return 0; @@ -254,7 +349,7 @@ return 0; } - ret = clk_prepare_enable(data->clk); + ret = imx_prepare_enable_clks(dev); if (ret) return ret; @@ -269,7 +364,7 @@ return 0; clk_disable: - clk_disable_unprepare(data->clk); + imx_disable_unprepare_clks(dev); return ret; } --- linux-raspi2-4.2.0.orig/drivers/usb/chipidea/udc.c +++ linux-raspi2-4.2.0/drivers/usb/chipidea/udc.c @@ -656,6 +656,44 @@ return 0; } +static int _ep_set_halt(struct usb_ep *ep, int value, bool check_transfer) +{ + struct ci_hw_ep *hwep = container_of(ep, struct ci_hw_ep, ep); + int direction, retval = 0; + unsigned long flags; + + if (ep == NULL || hwep->ep.desc == NULL) + return -EINVAL; + + if (usb_endpoint_xfer_isoc(hwep->ep.desc)) + return -EOPNOTSUPP; + + spin_lock_irqsave(hwep->lock, flags); + + if (value && hwep->dir == TX && check_transfer && + !list_empty(&hwep->qh.queue) && + !usb_endpoint_xfer_control(hwep->ep.desc)) { + spin_unlock_irqrestore(hwep->lock, flags); + return -EAGAIN; + } + + direction = hwep->dir; + do { + retval |= hw_ep_set_halt(hwep->ci, hwep->num, hwep->dir, value); + + if (!value) + hwep->wedge = 0; + + if (hwep->type == USB_ENDPOINT_XFER_CONTROL) + hwep->dir = (hwep->dir == TX) ? RX : TX; + + } while (hwep->dir != direction); + + spin_unlock_irqrestore(hwep->lock, flags); + return retval; +} + + /** * _gadget_stop_activity: stops all USB activity, flushes & disables all endpts * @gadget: gadget @@ -1051,7 +1089,7 @@ num += ci->hw_ep_max / 2; spin_unlock(&ci->lock); - err = usb_ep_set_halt(&ci->ci_hw_ep[num].ep); + err = _ep_set_halt(&ci->ci_hw_ep[num].ep, 1, false); spin_lock(&ci->lock); if (!err) isr_setup_status_phase(ci); @@ -1110,8 +1148,8 @@ if (err < 0) { spin_unlock(&ci->lock); - if (usb_ep_set_halt(&hwep->ep)) - dev_err(ci->dev, "error: ep_set_halt\n"); + if (_ep_set_halt(&hwep->ep, 1, false)) + dev_err(ci->dev, "error: _ep_set_halt\n"); spin_lock(&ci->lock); } } @@ -1142,9 +1180,9 @@ err = isr_setup_status_phase(ci); if (err < 0) { spin_unlock(&ci->lock); - if (usb_ep_set_halt(&hwep->ep)) + if (_ep_set_halt(&hwep->ep, 1, false)) dev_err(ci->dev, - "error: ep_set_halt\n"); + "error: _ep_set_halt\n"); spin_lock(&ci->lock); } } @@ -1390,41 +1428,7 @@ */ static int ep_set_halt(struct usb_ep *ep, int value) { - struct ci_hw_ep *hwep = container_of(ep, struct ci_hw_ep, ep); - int direction, retval = 0; - unsigned long flags; - - if (ep == NULL || hwep->ep.desc == NULL) - return -EINVAL; - - if (usb_endpoint_xfer_isoc(hwep->ep.desc)) - return -EOPNOTSUPP; - - spin_lock_irqsave(hwep->lock, flags); - -#ifndef STALL_IN - /* g_file_storage MS compliant but g_zero fails chapter 9 compliance */ - if (value && hwep->type == USB_ENDPOINT_XFER_BULK && hwep->dir == TX && - !list_empty(&hwep->qh.queue)) { - spin_unlock_irqrestore(hwep->lock, flags); - return -EAGAIN; - } -#endif - - direction = hwep->dir; - do { - retval |= hw_ep_set_halt(hwep->ci, hwep->num, hwep->dir, value); - - if (!value) - hwep->wedge = 0; - - if (hwep->type == USB_ENDPOINT_XFER_CONTROL) - hwep->dir = (hwep->dir == TX) ? RX : TX; - - } while (hwep->dir != direction); - - spin_unlock_irqrestore(hwep->lock, flags); - return retval; + return _ep_set_halt(ep, value, true); } /** @@ -1726,6 +1730,22 @@ return retval; } +static void ci_udc_stop_for_otg_fsm(struct ci_hdrc *ci) +{ + if (!ci_otg_is_fsm_mode(ci)) + return; + + mutex_lock(&ci->fsm.lock); + if (ci->fsm.otg->state == OTG_STATE_A_PERIPHERAL) { + ci->fsm.a_bidl_adis_tmout = 1; + ci_hdrc_otg_fsm_start(ci); + } else if (ci->fsm.otg->state == OTG_STATE_B_PERIPHERAL) { + ci->fsm.protocol = PROTO_UNDEF; + ci->fsm.otg->state = OTG_STATE_UNDEFINED; + } + mutex_unlock(&ci->fsm.lock); +} + /** * ci_udc_stop: unregister a gadget driver */ @@ -1750,6 +1770,7 @@ ci->driver = NULL; spin_unlock_irqrestore(&ci->lock, flags); + ci_udc_stop_for_otg_fsm(ci); return 0; } --- linux-raspi2-4.2.0.orig/drivers/usb/class/usblp.c +++ linux-raspi2-4.2.0/drivers/usb/class/usblp.c @@ -873,11 +873,11 @@ add_wait_queue(&usblp->wwait, &waita); for (;;) { - set_current_state(TASK_INTERRUPTIBLE); if (mutex_lock_interruptible(&usblp->mut)) { rc = -EINTR; break; } + set_current_state(TASK_INTERRUPTIBLE); rc = usblp_wtest(usblp, nonblock); mutex_unlock(&usblp->mut); if (rc <= 0) --- linux-raspi2-4.2.0.orig/drivers/usb/core/config.c +++ linux-raspi2-4.2.0/drivers/usb/core/config.c @@ -112,7 +112,7 @@ cfgno, inum, asnum, ep->desc.bEndpointAddress); ep->ss_ep_comp.bmAttributes = 16; } else if (usb_endpoint_xfer_isoc(&ep->desc) && - desc->bmAttributes > 2) { + USB_SS_MULT(desc->bmAttributes) > 3) { dev_warn(ddev, "Isoc endpoint has Mult of %d in " "config %d interface %d altsetting %d ep %d: " "setting to 3\n", desc->bmAttributes + 1, @@ -121,7 +121,8 @@ } if (usb_endpoint_xfer_isoc(&ep->desc)) - max_tx = (desc->bMaxBurst + 1) * (desc->bmAttributes + 1) * + max_tx = (desc->bMaxBurst + 1) * + (USB_SS_MULT(desc->bmAttributes)) * usb_endpoint_maxp(&ep->desc); else if (usb_endpoint_xfer_int(&ep->desc)) max_tx = usb_endpoint_maxp(&ep->desc) * --- linux-raspi2-4.2.0.orig/drivers/usb/core/generic.c +++ linux-raspi2-4.2.0/drivers/usb/core/generic.c @@ -152,6 +152,7 @@ dev_warn(&udev->dev, "no configuration chosen from %d choice%s\n", num_configs, plural(num_configs)); + dev_warn(&udev->dev, "No support over %dmA\n", udev->bus_mA); } return i; } --- linux-raspi2-4.2.0.orig/drivers/usb/core/hub.c +++ linux-raspi2-4.2.0/drivers/usb/core/hub.c @@ -4912,7 +4912,7 @@ if (portchange & USB_PORT_STAT_C_OVERCURRENT) { u16 status = 0, unused; - dev_dbg(&port_dev->dev, "over-current change\n"); + dev_notice(&port_dev->dev, "over-current change\n"); usb_clear_port_feature(hdev, port1, USB_PORT_FEAT_C_OVER_CURRENT); msleep(100); /* Cool down */ --- linux-raspi2-4.2.0.orig/drivers/usb/core/message.c +++ linux-raspi2-4.2.0/drivers/usb/core/message.c @@ -1872,6 +1872,85 @@ if (cp->string == NULL && !(dev->quirks & USB_QUIRK_CONFIG_INTF_STRINGS)) cp->string = usb_cache_string(dev, cp->desc.iConfiguration); +/* Uncomment this define to enable the HS Electrical Test support */ +#define DWC_HS_ELECT_TST 1 +#ifdef DWC_HS_ELECT_TST + /* Here we implement the HS Electrical Test support. The + * tester uses a vendor ID of 0x1A0A to indicate we should + * run a special test sequence. The product ID tells us + * which sequence to run. We invoke the test sequence by + * sending a non-standard SetFeature command to our root + * hub port. Our dwc_otg_hcd_hub_control() routine will + * recognize the command and perform the desired test + * sequence. + */ + if (dev->descriptor.idVendor == 0x1A0A) { + /* HSOTG Electrical Test */ + dev_warn(&dev->dev, "VID from HSOTG Electrical Test Fixture\n"); + + if (dev->bus && dev->bus->root_hub) { + struct usb_device *hdev = dev->bus->root_hub; + dev_warn(&dev->dev, "Got PID 0x%x\n", dev->descriptor.idProduct); + + switch (dev->descriptor.idProduct) { + case 0x0101: /* TEST_SE0_NAK */ + dev_warn(&dev->dev, "TEST_SE0_NAK\n"); + usb_control_msg(hdev, usb_sndctrlpipe(hdev, 0), + USB_REQ_SET_FEATURE, USB_RT_PORT, + USB_PORT_FEAT_TEST, 0x300, NULL, 0, HZ); + break; + + case 0x0102: /* TEST_J */ + dev_warn(&dev->dev, "TEST_J\n"); + usb_control_msg(hdev, usb_sndctrlpipe(hdev, 0), + USB_REQ_SET_FEATURE, USB_RT_PORT, + USB_PORT_FEAT_TEST, 0x100, NULL, 0, HZ); + break; + + case 0x0103: /* TEST_K */ + dev_warn(&dev->dev, "TEST_K\n"); + usb_control_msg(hdev, usb_sndctrlpipe(hdev, 0), + USB_REQ_SET_FEATURE, USB_RT_PORT, + USB_PORT_FEAT_TEST, 0x200, NULL, 0, HZ); + break; + + case 0x0104: /* TEST_PACKET */ + dev_warn(&dev->dev, "TEST_PACKET\n"); + usb_control_msg(hdev, usb_sndctrlpipe(hdev, 0), + USB_REQ_SET_FEATURE, USB_RT_PORT, + USB_PORT_FEAT_TEST, 0x400, NULL, 0, HZ); + break; + + case 0x0105: /* TEST_FORCE_ENABLE */ + dev_warn(&dev->dev, "TEST_FORCE_ENABLE\n"); + usb_control_msg(hdev, usb_sndctrlpipe(hdev, 0), + USB_REQ_SET_FEATURE, USB_RT_PORT, + USB_PORT_FEAT_TEST, 0x500, NULL, 0, HZ); + break; + + case 0x0106: /* HS_HOST_PORT_SUSPEND_RESUME */ + dev_warn(&dev->dev, "HS_HOST_PORT_SUSPEND_RESUME\n"); + usb_control_msg(hdev, usb_sndctrlpipe(hdev, 0), + USB_REQ_SET_FEATURE, USB_RT_PORT, + USB_PORT_FEAT_TEST, 0x600, NULL, 0, 40 * HZ); + break; + + case 0x0107: /* SINGLE_STEP_GET_DEVICE_DESCRIPTOR setup */ + dev_warn(&dev->dev, "SINGLE_STEP_GET_DEVICE_DESCRIPTOR setup\n"); + usb_control_msg(hdev, usb_sndctrlpipe(hdev, 0), + USB_REQ_SET_FEATURE, USB_RT_PORT, + USB_PORT_FEAT_TEST, 0x700, NULL, 0, 40 * HZ); + break; + + case 0x0108: /* SINGLE_STEP_GET_DEVICE_DESCRIPTOR execute */ + dev_warn(&dev->dev, "SINGLE_STEP_GET_DEVICE_DESCRIPTOR execute\n"); + usb_control_msg(hdev, usb_sndctrlpipe(hdev, 0), + USB_REQ_SET_FEATURE, USB_RT_PORT, + USB_PORT_FEAT_TEST, 0x800, NULL, 0, 40 * HZ); + } + } + } +#endif /* DWC_HS_ELECT_TST */ /* Now that the interfaces are installed, re-enable LPM. */ usb_unlocked_enable_lpm(dev); --- linux-raspi2-4.2.0.orig/drivers/usb/core/otg_whitelist.h +++ linux-raspi2-4.2.0/drivers/usb/core/otg_whitelist.h @@ -19,33 +19,82 @@ static struct usb_device_id whitelist_table [] = { /* hubs are optional in OTG, but very handy ... */ +#define CERT_WITHOUT_HUBS +#if defined(CERT_WITHOUT_HUBS) +{ USB_DEVICE( 0x0000, 0x0000 ), }, /* Root HUB Only*/ +#else { USB_DEVICE_INFO(USB_CLASS_HUB, 0, 0), }, { USB_DEVICE_INFO(USB_CLASS_HUB, 0, 1), }, +{ USB_DEVICE_INFO(USB_CLASS_HUB, 0, 2), }, +#endif #ifdef CONFIG_USB_PRINTER /* ignoring nonstatic linkage! */ /* FIXME actually, printers are NOT supposed to use device classes; * they're supposed to use interface classes... */ -{ USB_DEVICE_INFO(7, 1, 1) }, -{ USB_DEVICE_INFO(7, 1, 2) }, -{ USB_DEVICE_INFO(7, 1, 3) }, +//{ USB_DEVICE_INFO(7, 1, 1) }, +//{ USB_DEVICE_INFO(7, 1, 2) }, +//{ USB_DEVICE_INFO(7, 1, 3) }, #endif #ifdef CONFIG_USB_NET_CDCETHER /* Linux-USB CDC Ethernet gadget */ -{ USB_DEVICE(0x0525, 0xa4a1), }, +//{ USB_DEVICE(0x0525, 0xa4a1), }, /* Linux-USB CDC Ethernet + RNDIS gadget */ -{ USB_DEVICE(0x0525, 0xa4a2), }, +//{ USB_DEVICE(0x0525, 0xa4a2), }, #endif #if defined(CONFIG_USB_TEST) || defined(CONFIG_USB_TEST_MODULE) /* gadget zero, for testing */ -{ USB_DEVICE(0x0525, 0xa4a0), }, +//{ USB_DEVICE(0x0525, 0xa4a0), }, #endif +/* OPT Tester */ +{ USB_DEVICE( 0x1a0a, 0x0101 ), }, /* TEST_SE0_NAK */ +{ USB_DEVICE( 0x1a0a, 0x0102 ), }, /* Test_J */ +{ USB_DEVICE( 0x1a0a, 0x0103 ), }, /* Test_K */ +{ USB_DEVICE( 0x1a0a, 0x0104 ), }, /* Test_PACKET */ +{ USB_DEVICE( 0x1a0a, 0x0105 ), }, /* Test_FORCE_ENABLE */ +{ USB_DEVICE( 0x1a0a, 0x0106 ), }, /* HS_PORT_SUSPEND_RESUME */ +{ USB_DEVICE( 0x1a0a, 0x0107 ), }, /* SINGLE_STEP_GET_DESCRIPTOR setup */ +{ USB_DEVICE( 0x1a0a, 0x0108 ), }, /* SINGLE_STEP_GET_DESCRIPTOR execute */ + +/* Sony cameras */ +{ USB_DEVICE_VER(0x054c,0x0010,0x0410, 0x0500), }, + +/* Memory Devices */ +//{ USB_DEVICE( 0x0781, 0x5150 ), }, /* SanDisk */ +//{ USB_DEVICE( 0x05DC, 0x0080 ), }, /* Lexar */ +//{ USB_DEVICE( 0x4146, 0x9281 ), }, /* IOMEGA */ +//{ USB_DEVICE( 0x067b, 0x2507 ), }, /* Hammer 20GB External HD */ +{ USB_DEVICE( 0x0EA0, 0x2168 ), }, /* Ours Technology Inc. (BUFFALO ClipDrive)*/ +//{ USB_DEVICE( 0x0457, 0x0150 ), }, /* Silicon Integrated Systems Corp. */ + +/* HP Printers */ +//{ USB_DEVICE( 0x03F0, 0x1102 ), }, /* HP Photosmart 245 */ +//{ USB_DEVICE( 0x03F0, 0x1302 ), }, /* HP Photosmart 370 Series */ + +/* Speakers */ +//{ USB_DEVICE( 0x0499, 0x3002 ), }, /* YAMAHA YST-MS35D USB Speakers */ +//{ USB_DEVICE( 0x0672, 0x1041 ), }, /* Labtec USB Headset */ + { } /* Terminating entry */ }; +static inline void report_errors(struct usb_device *dev) +{ + /* OTG MESSAGE: report errors here, customize to match your product */ + dev_info(&dev->dev, "device Vendor:%04x Product:%04x is not supported\n", + le16_to_cpu(dev->descriptor.idVendor), + le16_to_cpu(dev->descriptor.idProduct)); + if (USB_CLASS_HUB == dev->descriptor.bDeviceClass){ + dev_printk(KERN_CRIT, &dev->dev, "Unsupported Hub Topology\n"); + } else { + dev_printk(KERN_CRIT, &dev->dev, "Attached Device is not Supported\n"); + } +} + + static int is_targeted(struct usb_device *dev) { struct usb_device_id *id = whitelist_table; @@ -95,16 +144,57 @@ continue; return 1; - } + /* NOTE: can't use usb_match_id() since interface caches + * aren't set up yet. this is cut/paste from that code. + */ + for (id = whitelist_table; id->match_flags; id++) { +#ifdef DEBUG + dev_dbg(&dev->dev, + "ID: V:%04x P:%04x DC:%04x SC:%04x PR:%04x \n", + id->idVendor, + id->idProduct, + id->bDeviceClass, + id->bDeviceSubClass, + id->bDeviceProtocol); +#endif - /* add other match criteria here ... */ + if ((id->match_flags & USB_DEVICE_ID_MATCH_VENDOR) && + id->idVendor != le16_to_cpu(dev->descriptor.idVendor)) + continue; + + if ((id->match_flags & USB_DEVICE_ID_MATCH_PRODUCT) && + id->idProduct != le16_to_cpu(dev->descriptor.idProduct)) + continue; + + /* No need to test id->bcdDevice_lo != 0, since 0 is never + greater than any unsigned number. */ + if ((id->match_flags & USB_DEVICE_ID_MATCH_DEV_LO) && + (id->bcdDevice_lo > le16_to_cpu(dev->descriptor.bcdDevice))) + continue; + + if ((id->match_flags & USB_DEVICE_ID_MATCH_DEV_HI) && + (id->bcdDevice_hi < le16_to_cpu(dev->descriptor.bcdDevice))) + continue; + + if ((id->match_flags & USB_DEVICE_ID_MATCH_DEV_CLASS) && + (id->bDeviceClass != dev->descriptor.bDeviceClass)) + continue; + + if ((id->match_flags & USB_DEVICE_ID_MATCH_DEV_SUBCLASS) && + (id->bDeviceSubClass != dev->descriptor.bDeviceSubClass)) + continue; + + if ((id->match_flags & USB_DEVICE_ID_MATCH_DEV_PROTOCOL) && + (id->bDeviceProtocol != dev->descriptor.bDeviceProtocol)) + continue; + return 1; + } + } - /* OTG MESSAGE: report errors here, customize to match your product */ - dev_err(&dev->dev, "device v%04x p%04x is not supported\n", - le16_to_cpu(dev->descriptor.idVendor), - le16_to_cpu(dev->descriptor.idProduct)); + /* add other match criteria here ... */ + report_errors(dev); return 0; } --- linux-raspi2-4.2.0.orig/drivers/usb/core/quirks.c +++ linux-raspi2-4.2.0/drivers/usb/core/quirks.c @@ -54,6 +54,13 @@ { USB_DEVICE(0x046d, 0x082d), .driver_info = USB_QUIRK_DELAY_INIT }, { USB_DEVICE(0x046d, 0x0843), .driver_info = USB_QUIRK_DELAY_INIT }, + /* Logitech ConferenceCam CC3000e */ + { USB_DEVICE(0x046d, 0x0847), .driver_info = USB_QUIRK_DELAY_INIT }, + { USB_DEVICE(0x046d, 0x0848), .driver_info = USB_QUIRK_DELAY_INIT }, + + /* Logitech PTZ Pro Camera */ + { USB_DEVICE(0x046d, 0x0853), .driver_info = USB_QUIRK_DELAY_INIT }, + /* Logitech Quickcam Fusion */ { USB_DEVICE(0x046d, 0x08c1), .driver_info = USB_QUIRK_RESET_RESUME }, @@ -78,6 +85,12 @@ /* Philips PSC805 audio device */ { USB_DEVICE(0x0471, 0x0155), .driver_info = USB_QUIRK_RESET_RESUME }, + /* Plantronic Audio 655 DSP */ + { USB_DEVICE(0x047f, 0xc008), .driver_info = USB_QUIRK_RESET_RESUME }, + + /* Plantronic Audio 648 USB */ + { USB_DEVICE(0x047f, 0xc013), .driver_info = USB_QUIRK_RESET_RESUME }, + /* Artisman Watchdog Dongle */ { USB_DEVICE(0x04b4, 0x0526), .driver_info = USB_QUIRK_CONFIG_INTF_STRINGS }, --- linux-raspi2-4.2.0.orig/drivers/usb/dwc3/core.c +++ linux-raspi2-4.2.0/drivers/usb/dwc3/core.c @@ -490,6 +490,9 @@ if (dwc->dis_u2_susphy_quirk) reg &= ~DWC3_GUSB2PHYCFG_SUSPHY; + if (dwc->dis_enblslpm_quirk) + reg &= ~DWC3_GUSB2PHYCFG_ENBLSLPM; + dwc3_writel(dwc->regs, DWC3_GUSB2PHYCFG(0), reg); return 0; @@ -509,12 +512,18 @@ reg = dwc3_readl(dwc->regs, DWC3_GSNPSID); /* This should read as U3 followed by revision number */ - if ((reg & DWC3_GSNPSID_MASK) != 0x55330000) { + if ((reg & DWC3_GSNPSID_MASK) == 0x55330000) { + /* Detected DWC_usb3 IP */ + dwc->revision = reg; + } else if ((reg & DWC3_GSNPSID_MASK) == 0x33310000) { + /* Detected DWC_usb31 IP */ + dwc->revision = dwc3_readl(dwc->regs, DWC3_VER_NUMBER); + dwc->revision |= DWC3_REVISION_IS_DWC31; + } else { dev_err(dwc->dev, "this is not a DesignWare USB3 DRD Core\n"); ret = -ENODEV; goto err0; } - dwc->revision = reg; /* * Write Linux Version Code to our GUID register so it's easy to figure @@ -881,6 +890,8 @@ "snps,dis_u3_susphy_quirk"); dwc->dis_u2_susphy_quirk = of_property_read_bool(node, "snps,dis_u2_susphy_quirk"); + dwc->dis_enblslpm_quirk = device_property_read_bool(dev, + "snps,dis_enblslpm_quirk"); dwc->tx_de_emphasis_quirk = of_property_read_bool(node, "snps,tx_de_emphasis_quirk"); @@ -911,6 +922,7 @@ dwc->rx_detect_poll_quirk = pdata->rx_detect_poll_quirk; dwc->dis_u3_susphy_quirk = pdata->dis_u3_susphy_quirk; dwc->dis_u2_susphy_quirk = pdata->dis_u2_susphy_quirk; + dwc->dis_enblslpm_quirk = pdata->dis_enblslpm_quirk; dwc->tx_de_emphasis_quirk = pdata->tx_de_emphasis_quirk; if (pdata->tx_de_emphasis) --- linux-raspi2-4.2.0.orig/drivers/usb/dwc3/core.h +++ linux-raspi2-4.2.0/drivers/usb/dwc3/core.h @@ -108,6 +108,9 @@ #define DWC3_GPRTBIMAP_FS0 0xc188 #define DWC3_GPRTBIMAP_FS1 0xc18c +#define DWC3_VER_NUMBER 0xc1a0 +#define DWC3_VER_TYPE 0xc1a4 + #define DWC3_GUSB2PHYCFG(n) (0xc200 + (n * 0x04)) #define DWC3_GUSB2I2CCTL(n) (0xc240 + (n * 0x04)) @@ -175,6 +178,7 @@ #define DWC3_GUSB2PHYCFG_PHYSOFTRST (1 << 31) #define DWC3_GUSB2PHYCFG_SUSPHY (1 << 6) #define DWC3_GUSB2PHYCFG_ULPI_UTMI (1 << 4) +#define DWC3_GUSB2PHYCFG_ENBLSLPM (1 << 8) /* Global USB2 PHY Vendor Control Register */ #define DWC3_GUSB2PHYACC_NEWREGREQ (1 << 25) @@ -712,6 +716,8 @@ * @rx_detect_poll_quirk: set if we enable rx_detect to polling lfps quirk * @dis_u3_susphy_quirk: set if we disable usb3 suspend phy * @dis_u2_susphy_quirk: set if we disable usb2 suspend phy + * @dis_enblslpm_quirk: set if we clear enblslpm in GUSB2PHYCFG, + * disabling the suspend signal to the PHY. * @tx_de_emphasis_quirk: set if we enable Tx de-emphasis quirk * @tx_de_emphasis: Tx de-emphasis value * 0 - -6dB de-emphasis @@ -766,6 +772,14 @@ u32 num_event_buffers; u32 u1u2; u32 maximum_speed; + + /* + * All 3.1 IP version constants are greater than the 3.0 IP + * version constants. This works for most version checks in + * dwc3. However, in the future, this may not apply as + * features may be developed on newer versions of the 3.0 IP + * that are not in the 3.1 IP. + */ u32 revision; #define DWC3_REVISION_173A 0x5533173a @@ -788,6 +802,13 @@ #define DWC3_REVISION_270A 0x5533270a #define DWC3_REVISION_280A 0x5533280a +/* + * NOTICE: we're using bit 31 as a "is usb 3.1" flag. This is really + * just so dwc31 revisions are always larger than dwc3. + */ +#define DWC3_REVISION_IS_DWC31 0x80000000 +#define DWC3_USB31_REVISION_110A (0x3131302a | DWC3_REVISION_IS_USB31) + enum dwc3_ep0_next ep0_next_event; enum dwc3_ep0_state ep0state; enum dwc3_link_state link_state; @@ -841,6 +862,7 @@ unsigned rx_detect_poll_quirk:1; unsigned dis_u3_susphy_quirk:1; unsigned dis_u2_susphy_quirk:1; + unsigned dis_enblslpm_quirk:1; unsigned tx_de_emphasis_quirk:1; unsigned tx_de_emphasis:2; --- linux-raspi2-4.2.0.orig/drivers/usb/dwc3/dwc3-pci.c +++ linux-raspi2-4.2.0/drivers/usb/dwc3/dwc3-pci.c @@ -27,6 +27,8 @@ #include "platform_data.h" #define PCI_DEVICE_ID_SYNOPSYS_HAPSUSB3 0xabcd +#define PCI_DEVICE_ID_SYNOPSYS_HAPSUSB3_AXI 0xabce +#define PCI_DEVICE_ID_SYNOPSYS_HAPSUSB31 0xabcf #define PCI_DEVICE_ID_INTEL_BYT 0x0f37 #define PCI_DEVICE_ID_INTEL_MRFLD 0x119e #define PCI_DEVICE_ID_INTEL_BSW 0x22B7 @@ -100,6 +102,22 @@ } } + if (pdev->vendor == PCI_VENDOR_ID_SYNOPSYS && + (pdev->device == PCI_DEVICE_ID_SYNOPSYS_HAPSUSB3 || + pdev->device == PCI_DEVICE_ID_SYNOPSYS_HAPSUSB3_AXI || + pdev->device == PCI_DEVICE_ID_SYNOPSYS_HAPSUSB31)) { + + struct dwc3_platform_data pdata; + + memset(&pdata, 0, sizeof(pdata)); + pdata.usb3_lpm_capable = true; + pdata.has_lpm_erratum = true; + pdata.dis_enblslpm_quirk = true; + + return platform_device_add_data(pci_get_drvdata(pdev), &pdata, + sizeof(pdata)); + } + return 0; } @@ -172,6 +190,14 @@ PCI_DEVICE(PCI_VENDOR_ID_SYNOPSYS, PCI_DEVICE_ID_SYNOPSYS_HAPSUSB3), }, + { + PCI_DEVICE(PCI_VENDOR_ID_SYNOPSYS, + PCI_DEVICE_ID_SYNOPSYS_HAPSUSB3_AXI), + }, + { + PCI_DEVICE(PCI_VENDOR_ID_SYNOPSYS, + PCI_DEVICE_ID_SYNOPSYS_HAPSUSB31), + }, { PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_BSW), }, { PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_BYT), }, { PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_MRFLD), }, --- linux-raspi2-4.2.0.orig/drivers/usb/dwc3/ep0.c +++ linux-raspi2-4.2.0/drivers/usb/dwc3/ep0.c @@ -820,6 +820,11 @@ unsigned maxp = ep0->endpoint.maxpacket; transfer_size += (maxp - (transfer_size % maxp)); + + /* Maximum of DWC3_EP0_BOUNCE_SIZE can only be received */ + if (transfer_size > DWC3_EP0_BOUNCE_SIZE) + transfer_size = DWC3_EP0_BOUNCE_SIZE; + transferred = min_t(u32, ur->length, transfer_size - length); memcpy(ur->buf, dwc->ep0_bounce, transferred); @@ -941,11 +946,14 @@ return; } - WARN_ON(req->request.length > DWC3_EP0_BOUNCE_SIZE); - maxpacket = dep->endpoint.maxpacket; transfer_size = roundup(req->request.length, maxpacket); + if (transfer_size > DWC3_EP0_BOUNCE_SIZE) { + dev_WARN(dwc->dev, "bounce buf can't handle req len\n"); + transfer_size = DWC3_EP0_BOUNCE_SIZE; + } + dwc->ep0_bounced = true; /* --- linux-raspi2-4.2.0.orig/drivers/usb/dwc3/gadget.c +++ linux-raspi2-4.2.0/drivers/usb/dwc3/gadget.c @@ -1859,27 +1859,32 @@ unsigned int i; int ret; - req = next_request(&dep->req_queued); - if (!req) { - WARN_ON_ONCE(1); - return 1; - } - i = 0; do { - slot = req->start_slot + i; - if ((slot == DWC3_TRB_NUM - 1) && + req = next_request(&dep->req_queued); + if (!req) { + WARN_ON_ONCE(1); + return 1; + } + i = 0; + do { + slot = req->start_slot + i; + if ((slot == DWC3_TRB_NUM - 1) && usb_endpoint_xfer_isoc(dep->endpoint.desc)) - slot++; - slot %= DWC3_TRB_NUM; - trb = &dep->trb_pool[slot]; + slot++; + slot %= DWC3_TRB_NUM; + trb = &dep->trb_pool[slot]; + + ret = __dwc3_cleanup_done_trbs(dwc, dep, req, trb, + event, status); + if (ret) + break; + } while (++i < req->request.num_mapped_sgs); + + dwc3_gadget_giveback(dep, req, status); - ret = __dwc3_cleanup_done_trbs(dwc, dep, req, trb, - event, status); if (ret) break; - } while (++i < req->request.num_mapped_sgs); - - dwc3_gadget_giveback(dep, req, status); + } while (1); if (usb_endpoint_xfer_isoc(dep->endpoint.desc) && list_empty(&dep->req_queued)) { @@ -2709,12 +2714,34 @@ } dwc->gadget.ops = &dwc3_gadget_ops; - dwc->gadget.max_speed = USB_SPEED_SUPER; dwc->gadget.speed = USB_SPEED_UNKNOWN; dwc->gadget.sg_supported = true; dwc->gadget.name = "dwc3-gadget"; /* + * FIXME We might be setting max_speed to revision < DWC3_REVISION_220A) + dwc3_trace(trace_dwc3_gadget, + "Changing max_speed on rev %08x\n", + dwc->revision); + + dwc->gadget.max_speed = dwc->maximum_speed; + + /* * Per databook, DWC3 needs buffer size to be aligned to MaxPacketSize * on ep out. */ --- linux-raspi2-4.2.0.orig/drivers/usb/dwc3/platform_data.h +++ linux-raspi2-4.2.0/drivers/usb/dwc3/platform_data.h @@ -42,6 +42,7 @@ unsigned rx_detect_poll_quirk:1; unsigned dis_u3_susphy_quirk:1; unsigned dis_u2_susphy_quirk:1; + unsigned dis_enblslpm_quirk:1; unsigned tx_de_emphasis_quirk:1; unsigned tx_de_emphasis:2; --- linux-raspi2-4.2.0.orig/drivers/usb/gadget/file_storage.c +++ linux-raspi2-4.2.0/drivers/usb/gadget/file_storage.c @@ -0,0 +1,3676 @@ +/* + * file_storage.c -- File-backed USB Storage Gadget, for USB development + * + * Copyright (C) 2003-2008 Alan Stern + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions, and the following disclaimer, + * without modification. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The names of the above-listed copyright holders may not be used + * to endorse or promote products derived from this software without + * specific prior written permission. + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") as published by the Free Software + * Foundation, either version 2 of that License or (at your option) any + * later version. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS + * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + + +/* + * The File-backed Storage Gadget acts as a USB Mass Storage device, + * appearing to the host as a disk drive or as a CD-ROM drive. In addition + * to providing an example of a genuinely useful gadget driver for a USB + * device, it also illustrates a technique of double-buffering for increased + * throughput. Last but not least, it gives an easy way to probe the + * behavior of the Mass Storage drivers in a USB host. + * + * Backing storage is provided by a regular file or a block device, specified + * by the "file" module parameter. Access can be limited to read-only by + * setting the optional "ro" module parameter. (For CD-ROM emulation, + * access is always read-only.) The gadget will indicate that it has + * removable media if the optional "removable" module parameter is set. + * + * The gadget supports the Control-Bulk (CB), Control-Bulk-Interrupt (CBI), + * and Bulk-Only (also known as Bulk-Bulk-Bulk or BBB) transports, selected + * by the optional "transport" module parameter. It also supports the + * following protocols: RBC (0x01), ATAPI or SFF-8020i (0x02), QIC-157 (0c03), + * UFI (0x04), SFF-8070i (0x05), and transparent SCSI (0x06), selected by + * the optional "protocol" module parameter. In addition, the default + * Vendor ID, Product ID, release number and serial number can be overridden. + * + * There is support for multiple logical units (LUNs), each of which has + * its own backing file. The number of LUNs can be set using the optional + * "luns" module parameter (anywhere from 1 to 8), and the corresponding + * files are specified using comma-separated lists for "file" and "ro". + * The default number of LUNs is taken from the number of "file" elements; + * it is 1 if "file" is not given. If "removable" is not set then a backing + * file must be specified for each LUN. If it is set, then an unspecified + * or empty backing filename means the LUN's medium is not loaded. Ideally + * each LUN would be settable independently as a disk drive or a CD-ROM + * drive, but currently all LUNs have to be the same type. The CD-ROM + * emulation includes a single data track and no audio tracks; hence there + * need be only one backing file per LUN. + * + * Requirements are modest; only a bulk-in and a bulk-out endpoint are + * needed (an interrupt-out endpoint is also needed for CBI). The memory + * requirement amounts to two 16K buffers, size configurable by a parameter. + * Support is included for both full-speed and high-speed operation. + * + * Note that the driver is slightly non-portable in that it assumes a + * single memory/DMA buffer will be useable for bulk-in, bulk-out, and + * interrupt-in endpoints. With most device controllers this isn't an + * issue, but there may be some with hardware restrictions that prevent + * a buffer from being used by more than one endpoint. + * + * Module options: + * + * file=filename[,filename...] + * Required if "removable" is not set, names of + * the files or block devices used for + * backing storage + * serial=HHHH... Required serial number (string of hex chars) + * ro=b[,b...] Default false, booleans for read-only access + * removable Default false, boolean for removable media + * luns=N Default N = number of filenames, number of + * LUNs to support + * nofua=b[,b...] Default false, booleans for ignore FUA flag + * in SCSI WRITE(10,12) commands + * stall Default determined according to the type of + * USB device controller (usually true), + * boolean to permit the driver to halt + * bulk endpoints + * cdrom Default false, boolean for whether to emulate + * a CD-ROM drive + * transport=XXX Default BBB, transport name (CB, CBI, or BBB) + * protocol=YYY Default SCSI, protocol name (RBC, 8020 or + * ATAPI, QIC, UFI, 8070, or SCSI; + * also 1 - 6) + * vendor=0xVVVV Default 0x0525 (NetChip), USB Vendor ID + * product=0xPPPP Default 0xa4a5 (FSG), USB Product ID + * release=0xRRRR Override the USB release number (bcdDevice) + * buflen=N Default N=16384, buffer size used (will be + * rounded down to a multiple of + * PAGE_CACHE_SIZE) + * + * If CONFIG_USB_FILE_STORAGE_TEST is not set, only the "file", "serial", "ro", + * "removable", "luns", "nofua", "stall", and "cdrom" options are available; + * default values are used for everything else. + * + * The pathnames of the backing files and the ro settings are available in + * the attribute files "file", "nofua", and "ro" in the lun subdirectory of + * the gadget's sysfs directory. If the "removable" option is set, writing to + * these files will simulate ejecting/loading the medium (writing an empty + * line means eject) and adjusting a write-enable tab. Changes to the ro + * setting are not allowed when the medium is loaded or if CD-ROM emulation + * is being used. + * + * This gadget driver is heavily based on "Gadget Zero" by David Brownell. + * The driver's SCSI command interface was based on the "Information + * technology - Small Computer System Interface - 2" document from + * X3T9.2 Project 375D, Revision 10L, 7-SEP-93, available at + * . The single exception + * is opcode 0x23 (READ FORMAT CAPACITIES), which was based on the + * "Universal Serial Bus Mass Storage Class UFI Command Specification" + * document, Revision 1.0, December 14, 1998, available at + * . + */ + + +/* + * Driver Design + * + * The FSG driver is fairly straightforward. There is a main kernel + * thread that handles most of the work. Interrupt routines field + * callbacks from the controller driver: bulk- and interrupt-request + * completion notifications, endpoint-0 events, and disconnect events. + * Completion events are passed to the main thread by wakeup calls. Many + * ep0 requests are handled at interrupt time, but SetInterface, + * SetConfiguration, and device reset requests are forwarded to the + * thread in the form of "exceptions" using SIGUSR1 signals (since they + * should interrupt any ongoing file I/O operations). + * + * The thread's main routine implements the standard command/data/status + * parts of a SCSI interaction. It and its subroutines are full of tests + * for pending signals/exceptions -- all this polling is necessary since + * the kernel has no setjmp/longjmp equivalents. (Maybe this is an + * indication that the driver really wants to be running in userspace.) + * An important point is that so long as the thread is alive it keeps an + * open reference to the backing file. This will prevent unmounting + * the backing file's underlying filesystem and could cause problems + * during system shutdown, for example. To prevent such problems, the + * thread catches INT, TERM, and KILL signals and converts them into + * an EXIT exception. + * + * In normal operation the main thread is started during the gadget's + * fsg_bind() callback and stopped during fsg_unbind(). But it can also + * exit when it receives a signal, and there's no point leaving the + * gadget running when the thread is dead. So just before the thread + * exits, it deregisters the gadget driver. This makes things a little + * tricky: The driver is deregistered at two places, and the exiting + * thread can indirectly call fsg_unbind() which in turn can tell the + * thread to exit. The first problem is resolved through the use of the + * REGISTERED atomic bitflag; the driver will only be deregistered once. + * The second problem is resolved by having fsg_unbind() check + * fsg->state; it won't try to stop the thread if the state is already + * FSG_STATE_TERMINATED. + * + * To provide maximum throughput, the driver uses a circular pipeline of + * buffer heads (struct fsg_buffhd). In principle the pipeline can be + * arbitrarily long; in practice the benefits don't justify having more + * than 2 stages (i.e., double buffering). But it helps to think of the + * pipeline as being a long one. Each buffer head contains a bulk-in and + * a bulk-out request pointer (since the buffer can be used for both + * output and input -- directions always are given from the host's + * point of view) as well as a pointer to the buffer and various state + * variables. + * + * Use of the pipeline follows a simple protocol. There is a variable + * (fsg->next_buffhd_to_fill) that points to the next buffer head to use. + * At any time that buffer head may still be in use from an earlier + * request, so each buffer head has a state variable indicating whether + * it is EMPTY, FULL, or BUSY. Typical use involves waiting for the + * buffer head to be EMPTY, filling the buffer either by file I/O or by + * USB I/O (during which the buffer head is BUSY), and marking the buffer + * head FULL when the I/O is complete. Then the buffer will be emptied + * (again possibly by USB I/O, during which it is marked BUSY) and + * finally marked EMPTY again (possibly by a completion routine). + * + * A module parameter tells the driver to avoid stalling the bulk + * endpoints wherever the transport specification allows. This is + * necessary for some UDCs like the SuperH, which cannot reliably clear a + * halt on a bulk endpoint. However, under certain circumstances the + * Bulk-only specification requires a stall. In such cases the driver + * will halt the endpoint and set a flag indicating that it should clear + * the halt in software during the next device reset. Hopefully this + * will permit everything to work correctly. Furthermore, although the + * specification allows the bulk-out endpoint to halt when the host sends + * too much data, implementing this would cause an unavoidable race. + * The driver will always use the "no-stall" approach for OUT transfers. + * + * One subtle point concerns sending status-stage responses for ep0 + * requests. Some of these requests, such as device reset, can involve + * interrupting an ongoing file I/O operation, which might take an + * arbitrarily long time. During that delay the host might give up on + * the original ep0 request and issue a new one. When that happens the + * driver should not notify the host about completion of the original + * request, as the host will no longer be waiting for it. So the driver + * assigns to each ep0 request a unique tag, and it keeps track of the + * tag value of the request associated with a long-running exception + * (device-reset, interface-change, or configuration-change). When the + * exception handler is finished, the status-stage response is submitted + * only if the current ep0 request tag is equal to the exception request + * tag. Thus only the most recently received ep0 request will get a + * status-stage response. + * + * Warning: This driver source file is too long. It ought to be split up + * into a header file plus about 3 separate .c files, to handle the details + * of the Gadget, USB Mass Storage, and SCSI protocols. + */ + + +/* #define VERBOSE_DEBUG */ +/* #define DUMP_MSGS */ + + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include + +#include "gadget_chips.h" + + + +/* + * Kbuild is not very cooperative with respect to linking separately + * compiled library objects into one module. So for now we won't use + * separate compilation ... ensuring init/exit sections work to shrink + * the runtime footprint, and giving us at least some parts of what + * a "gcc --combine ... part1.c part2.c part3.c ... " build would. + */ +#include "usbstring.c" +#include "config.c" +#include "epautoconf.c" + +/*-------------------------------------------------------------------------*/ + +#define DRIVER_DESC "File-backed Storage Gadget" +#define DRIVER_NAME "g_file_storage" +#define DRIVER_VERSION "1 September 2010" + +static char fsg_string_manufacturer[64]; +static const char fsg_string_product[] = DRIVER_DESC; +static const char fsg_string_config[] = "Self-powered"; +static const char fsg_string_interface[] = "Mass Storage"; + + +#include "storage_common.c" + + +MODULE_DESCRIPTION(DRIVER_DESC); +MODULE_AUTHOR("Alan Stern"); +MODULE_LICENSE("Dual BSD/GPL"); + +/* + * This driver assumes self-powered hardware and has no way for users to + * trigger remote wakeup. It uses autoconfiguration to select endpoints + * and endpoint addresses. + */ + + +/*-------------------------------------------------------------------------*/ + + +/* Encapsulate the module parameter settings */ + +static struct { + char *file[FSG_MAX_LUNS]; + char *serial; + bool ro[FSG_MAX_LUNS]; + bool nofua[FSG_MAX_LUNS]; + unsigned int num_filenames; + unsigned int num_ros; + unsigned int num_nofuas; + unsigned int nluns; + + bool removable; + bool can_stall; + bool cdrom; + + char *transport_parm; + char *protocol_parm; + unsigned short vendor; + unsigned short product; + unsigned short release; + unsigned int buflen; + + int transport_type; + char *transport_name; + int protocol_type; + char *protocol_name; + +} mod_data = { // Default values + .transport_parm = "BBB", + .protocol_parm = "SCSI", + .removable = 0, + .can_stall = 1, + .cdrom = 0, + .vendor = FSG_VENDOR_ID, + .product = FSG_PRODUCT_ID, + .release = 0xffff, // Use controller chip type + .buflen = 16384, + }; + + +module_param_array_named(file, mod_data.file, charp, &mod_data.num_filenames, + S_IRUGO); +MODULE_PARM_DESC(file, "names of backing files or devices"); + +module_param_named(serial, mod_data.serial, charp, S_IRUGO); +MODULE_PARM_DESC(serial, "USB serial number"); + +module_param_array_named(ro, mod_data.ro, bool, &mod_data.num_ros, S_IRUGO); +MODULE_PARM_DESC(ro, "true to force read-only"); + +module_param_array_named(nofua, mod_data.nofua, bool, &mod_data.num_nofuas, + S_IRUGO); +MODULE_PARM_DESC(nofua, "true to ignore SCSI WRITE(10,12) FUA bit"); + +module_param_named(luns, mod_data.nluns, uint, S_IRUGO); +MODULE_PARM_DESC(luns, "number of LUNs"); + +module_param_named(removable, mod_data.removable, bool, S_IRUGO); +MODULE_PARM_DESC(removable, "true to simulate removable media"); + +module_param_named(stall, mod_data.can_stall, bool, S_IRUGO); +MODULE_PARM_DESC(stall, "false to prevent bulk stalls"); + +module_param_named(cdrom, mod_data.cdrom, bool, S_IRUGO); +MODULE_PARM_DESC(cdrom, "true to emulate cdrom instead of disk"); + +/* In the non-TEST version, only the module parameters listed above + * are available. */ +#ifdef CONFIG_USB_FILE_STORAGE_TEST + +module_param_named(transport, mod_data.transport_parm, charp, S_IRUGO); +MODULE_PARM_DESC(transport, "type of transport (BBB, CBI, or CB)"); + +module_param_named(protocol, mod_data.protocol_parm, charp, S_IRUGO); +MODULE_PARM_DESC(protocol, "type of protocol (RBC, 8020, QIC, UFI, " + "8070, or SCSI)"); + +module_param_named(vendor, mod_data.vendor, ushort, S_IRUGO); +MODULE_PARM_DESC(vendor, "USB Vendor ID"); + +module_param_named(product, mod_data.product, ushort, S_IRUGO); +MODULE_PARM_DESC(product, "USB Product ID"); + +module_param_named(release, mod_data.release, ushort, S_IRUGO); +MODULE_PARM_DESC(release, "USB release number"); + +module_param_named(buflen, mod_data.buflen, uint, S_IRUGO); +MODULE_PARM_DESC(buflen, "I/O buffer size"); + +#endif /* CONFIG_USB_FILE_STORAGE_TEST */ + + +/* + * These definitions will permit the compiler to avoid generating code for + * parts of the driver that aren't used in the non-TEST version. Even gcc + * can recognize when a test of a constant expression yields a dead code + * path. + */ + +#ifdef CONFIG_USB_FILE_STORAGE_TEST + +#define transport_is_bbb() (mod_data.transport_type == USB_PR_BULK) +#define transport_is_cbi() (mod_data.transport_type == USB_PR_CBI) +#define protocol_is_scsi() (mod_data.protocol_type == USB_SC_SCSI) + +#else + +#define transport_is_bbb() 1 +#define transport_is_cbi() 0 +#define protocol_is_scsi() 1 + +#endif /* CONFIG_USB_FILE_STORAGE_TEST */ + + +/*-------------------------------------------------------------------------*/ + + +struct fsg_dev { + /* lock protects: state, all the req_busy's, and cbbuf_cmnd */ + spinlock_t lock; + struct usb_gadget *gadget; + + /* filesem protects: backing files in use */ + struct rw_semaphore filesem; + + /* reference counting: wait until all LUNs are released */ + struct kref ref; + + struct usb_ep *ep0; // Handy copy of gadget->ep0 + struct usb_request *ep0req; // For control responses + unsigned int ep0_req_tag; + const char *ep0req_name; + + struct usb_request *intreq; // For interrupt responses + int intreq_busy; + struct fsg_buffhd *intr_buffhd; + + unsigned int bulk_out_maxpacket; + enum fsg_state state; // For exception handling + unsigned int exception_req_tag; + + u8 config, new_config; + + unsigned int running : 1; + unsigned int bulk_in_enabled : 1; + unsigned int bulk_out_enabled : 1; + unsigned int intr_in_enabled : 1; + unsigned int phase_error : 1; + unsigned int short_packet_received : 1; + unsigned int bad_lun_okay : 1; + + unsigned long atomic_bitflags; +#define REGISTERED 0 +#define IGNORE_BULK_OUT 1 +#define SUSPENDED 2 + + struct usb_ep *bulk_in; + struct usb_ep *bulk_out; + struct usb_ep *intr_in; + + struct fsg_buffhd *next_buffhd_to_fill; + struct fsg_buffhd *next_buffhd_to_drain; + + int thread_wakeup_needed; + struct completion thread_notifier; + struct task_struct *thread_task; + + int cmnd_size; + u8 cmnd[MAX_COMMAND_SIZE]; + enum data_direction data_dir; + u32 data_size; + u32 data_size_from_cmnd; + u32 tag; + unsigned int lun; + u32 residue; + u32 usb_amount_left; + + /* The CB protocol offers no way for a host to know when a command + * has completed. As a result the next command may arrive early, + * and we will still have to handle it. For that reason we need + * a buffer to store new commands when using CB (or CBI, which + * does not oblige a host to wait for command completion either). */ + int cbbuf_cmnd_size; + u8 cbbuf_cmnd[MAX_COMMAND_SIZE]; + + unsigned int nluns; + struct fsg_lun *luns; + struct fsg_lun *curlun; + /* Must be the last entry */ + struct fsg_buffhd buffhds[]; +}; + +typedef void (*fsg_routine_t)(struct fsg_dev *); + +static int exception_in_progress(struct fsg_dev *fsg) +{ + return (fsg->state > FSG_STATE_IDLE); +} + +/* Make bulk-out requests be divisible by the maxpacket size */ +static void set_bulk_out_req_length(struct fsg_dev *fsg, + struct fsg_buffhd *bh, unsigned int length) +{ + unsigned int rem; + + bh->bulk_out_intended_length = length; + rem = length % fsg->bulk_out_maxpacket; + if (rem > 0) + length += fsg->bulk_out_maxpacket - rem; + bh->outreq->length = length; +} + +static struct fsg_dev *the_fsg; +static struct usb_gadget_driver fsg_driver; + + +/*-------------------------------------------------------------------------*/ + +static int fsg_set_halt(struct fsg_dev *fsg, struct usb_ep *ep) +{ + const char *name; + + if (ep == fsg->bulk_in) + name = "bulk-in"; + else if (ep == fsg->bulk_out) + name = "bulk-out"; + else + name = ep->name; + DBG(fsg, "%s set halt\n", name); + return usb_ep_set_halt(ep); +} + + +/*-------------------------------------------------------------------------*/ + +/* + * DESCRIPTORS ... most are static, but strings and (full) configuration + * descriptors are built on demand. Also the (static) config and interface + * descriptors are adjusted during fsg_bind(). + */ + +/* There is only one configuration. */ +#define CONFIG_VALUE 1 + +static struct usb_device_descriptor +device_desc = { + .bLength = sizeof device_desc, + .bDescriptorType = USB_DT_DEVICE, + + .bcdUSB = cpu_to_le16(0x0200), + .bDeviceClass = USB_CLASS_PER_INTERFACE, + + /* The next three values can be overridden by module parameters */ + .idVendor = cpu_to_le16(FSG_VENDOR_ID), + .idProduct = cpu_to_le16(FSG_PRODUCT_ID), + .bcdDevice = cpu_to_le16(0xffff), + + .iManufacturer = FSG_STRING_MANUFACTURER, + .iProduct = FSG_STRING_PRODUCT, + .iSerialNumber = FSG_STRING_SERIAL, + .bNumConfigurations = 1, +}; + +static struct usb_config_descriptor +config_desc = { + .bLength = sizeof config_desc, + .bDescriptorType = USB_DT_CONFIG, + + /* wTotalLength computed by usb_gadget_config_buf() */ + .bNumInterfaces = 1, + .bConfigurationValue = CONFIG_VALUE, + .iConfiguration = FSG_STRING_CONFIG, + .bmAttributes = USB_CONFIG_ATT_ONE | USB_CONFIG_ATT_SELFPOWER, + .bMaxPower = CONFIG_USB_GADGET_VBUS_DRAW / 2, +}; + + +static struct usb_qualifier_descriptor +dev_qualifier = { + .bLength = sizeof dev_qualifier, + .bDescriptorType = USB_DT_DEVICE_QUALIFIER, + + .bcdUSB = cpu_to_le16(0x0200), + .bDeviceClass = USB_CLASS_PER_INTERFACE, + + .bNumConfigurations = 1, +}; + +static int populate_bos(struct fsg_dev *fsg, u8 *buf) +{ + memcpy(buf, &fsg_bos_desc, USB_DT_BOS_SIZE); + buf += USB_DT_BOS_SIZE; + + memcpy(buf, &fsg_ext_cap_desc, USB_DT_USB_EXT_CAP_SIZE); + buf += USB_DT_USB_EXT_CAP_SIZE; + + memcpy(buf, &fsg_ss_cap_desc, USB_DT_USB_SS_CAP_SIZE); + + return USB_DT_BOS_SIZE + USB_DT_USB_SS_CAP_SIZE + + USB_DT_USB_EXT_CAP_SIZE; +} + +/* + * Config descriptors must agree with the code that sets configurations + * and with code managing interfaces and their altsettings. They must + * also handle different speeds and other-speed requests. + */ +static int populate_config_buf(struct usb_gadget *gadget, + u8 *buf, u8 type, unsigned index) +{ + enum usb_device_speed speed = gadget->speed; + int len; + const struct usb_descriptor_header **function; + + if (index > 0) + return -EINVAL; + + if (gadget_is_dualspeed(gadget) && type == USB_DT_OTHER_SPEED_CONFIG) + speed = (USB_SPEED_FULL + USB_SPEED_HIGH) - speed; + function = gadget_is_dualspeed(gadget) && speed == USB_SPEED_HIGH + ? (const struct usb_descriptor_header **)fsg_hs_function + : (const struct usb_descriptor_header **)fsg_fs_function; + + /* for now, don't advertise srp-only devices */ + if (!gadget_is_otg(gadget)) + function++; + + len = usb_gadget_config_buf(&config_desc, buf, EP0_BUFSIZE, function); + ((struct usb_config_descriptor *) buf)->bDescriptorType = type; + return len; +} + + +/*-------------------------------------------------------------------------*/ + +/* These routines may be called in process context or in_irq */ + +/* Caller must hold fsg->lock */ +static void wakeup_thread(struct fsg_dev *fsg) +{ + /* Tell the main thread that something has happened */ + fsg->thread_wakeup_needed = 1; + if (fsg->thread_task) + wake_up_process(fsg->thread_task); +} + + +static void raise_exception(struct fsg_dev *fsg, enum fsg_state new_state) +{ + unsigned long flags; + + /* Do nothing if a higher-priority exception is already in progress. + * If a lower-or-equal priority exception is in progress, preempt it + * and notify the main thread by sending it a signal. */ + spin_lock_irqsave(&fsg->lock, flags); + if (fsg->state <= new_state) { + fsg->exception_req_tag = fsg->ep0_req_tag; + fsg->state = new_state; + if (fsg->thread_task) + send_sig_info(SIGUSR1, SEND_SIG_FORCED, + fsg->thread_task); + } + spin_unlock_irqrestore(&fsg->lock, flags); +} + + +/*-------------------------------------------------------------------------*/ + +/* The disconnect callback and ep0 routines. These always run in_irq, + * except that ep0_queue() is called in the main thread to acknowledge + * completion of various requests: set config, set interface, and + * Bulk-only device reset. */ + +static void fsg_disconnect(struct usb_gadget *gadget) +{ + struct fsg_dev *fsg = get_gadget_data(gadget); + + DBG(fsg, "disconnect or port reset\n"); + raise_exception(fsg, FSG_STATE_DISCONNECT); +} + + +static int ep0_queue(struct fsg_dev *fsg) +{ + int rc; + + rc = usb_ep_queue(fsg->ep0, fsg->ep0req, GFP_ATOMIC); + if (rc != 0 && rc != -ESHUTDOWN) { + + /* We can't do much more than wait for a reset */ + WARNING(fsg, "error in submission: %s --> %d\n", + fsg->ep0->name, rc); + } + return rc; +} + +static void ep0_complete(struct usb_ep *ep, struct usb_request *req) +{ + struct fsg_dev *fsg = ep->driver_data; + + if (req->actual > 0) + dump_msg(fsg, fsg->ep0req_name, req->buf, req->actual); + if (req->status || req->actual != req->length) + DBG(fsg, "%s --> %d, %u/%u\n", __func__, + req->status, req->actual, req->length); + if (req->status == -ECONNRESET) // Request was cancelled + usb_ep_fifo_flush(ep); + + if (req->status == 0 && req->context) + ((fsg_routine_t) (req->context))(fsg); +} + + +/*-------------------------------------------------------------------------*/ + +/* Bulk and interrupt endpoint completion handlers. + * These always run in_irq. */ + +static void bulk_in_complete(struct usb_ep *ep, struct usb_request *req) +{ + struct fsg_dev *fsg = ep->driver_data; + struct fsg_buffhd *bh = req->context; + + if (req->status || req->actual != req->length) + DBG(fsg, "%s --> %d, %u/%u\n", __func__, + req->status, req->actual, req->length); + if (req->status == -ECONNRESET) // Request was cancelled + usb_ep_fifo_flush(ep); + + /* Hold the lock while we update the request and buffer states */ + smp_wmb(); + spin_lock(&fsg->lock); + bh->inreq_busy = 0; + bh->state = BUF_STATE_EMPTY; + wakeup_thread(fsg); + spin_unlock(&fsg->lock); +} + +static void bulk_out_complete(struct usb_ep *ep, struct usb_request *req) +{ + struct fsg_dev *fsg = ep->driver_data; + struct fsg_buffhd *bh = req->context; + + dump_msg(fsg, "bulk-out", req->buf, req->actual); + if (req->status || req->actual != bh->bulk_out_intended_length) + DBG(fsg, "%s --> %d, %u/%u\n", __func__, + req->status, req->actual, + bh->bulk_out_intended_length); + if (req->status == -ECONNRESET) // Request was cancelled + usb_ep_fifo_flush(ep); + + /* Hold the lock while we update the request and buffer states */ + smp_wmb(); + spin_lock(&fsg->lock); + bh->outreq_busy = 0; + bh->state = BUF_STATE_FULL; + wakeup_thread(fsg); + spin_unlock(&fsg->lock); +} + + +#ifdef CONFIG_USB_FILE_STORAGE_TEST +static void intr_in_complete(struct usb_ep *ep, struct usb_request *req) +{ + struct fsg_dev *fsg = ep->driver_data; + struct fsg_buffhd *bh = req->context; + + if (req->status || req->actual != req->length) + DBG(fsg, "%s --> %d, %u/%u\n", __func__, + req->status, req->actual, req->length); + if (req->status == -ECONNRESET) // Request was cancelled + usb_ep_fifo_flush(ep); + + /* Hold the lock while we update the request and buffer states */ + smp_wmb(); + spin_lock(&fsg->lock); + fsg->intreq_busy = 0; + bh->state = BUF_STATE_EMPTY; + wakeup_thread(fsg); + spin_unlock(&fsg->lock); +} + +#else +static void intr_in_complete(struct usb_ep *ep, struct usb_request *req) +{} +#endif /* CONFIG_USB_FILE_STORAGE_TEST */ + + +/*-------------------------------------------------------------------------*/ + +/* Ep0 class-specific handlers. These always run in_irq. */ + +#ifdef CONFIG_USB_FILE_STORAGE_TEST +static void received_cbi_adsc(struct fsg_dev *fsg, struct fsg_buffhd *bh) +{ + struct usb_request *req = fsg->ep0req; + static u8 cbi_reset_cmnd[6] = { + SEND_DIAGNOSTIC, 4, 0xff, 0xff, 0xff, 0xff}; + + /* Error in command transfer? */ + if (req->status || req->length != req->actual || + req->actual < 6 || req->actual > MAX_COMMAND_SIZE) { + + /* Not all controllers allow a protocol stall after + * receiving control-out data, but we'll try anyway. */ + fsg_set_halt(fsg, fsg->ep0); + return; // Wait for reset + } + + /* Is it the special reset command? */ + if (req->actual >= sizeof cbi_reset_cmnd && + memcmp(req->buf, cbi_reset_cmnd, + sizeof cbi_reset_cmnd) == 0) { + + /* Raise an exception to stop the current operation + * and reinitialize our state. */ + DBG(fsg, "cbi reset request\n"); + raise_exception(fsg, FSG_STATE_RESET); + return; + } + + VDBG(fsg, "CB[I] accept device-specific command\n"); + spin_lock(&fsg->lock); + + /* Save the command for later */ + if (fsg->cbbuf_cmnd_size) + WARNING(fsg, "CB[I] overwriting previous command\n"); + fsg->cbbuf_cmnd_size = req->actual; + memcpy(fsg->cbbuf_cmnd, req->buf, fsg->cbbuf_cmnd_size); + + wakeup_thread(fsg); + spin_unlock(&fsg->lock); +} + +#else +static void received_cbi_adsc(struct fsg_dev *fsg, struct fsg_buffhd *bh) +{} +#endif /* CONFIG_USB_FILE_STORAGE_TEST */ + + +static int class_setup_req(struct fsg_dev *fsg, + const struct usb_ctrlrequest *ctrl) +{ + struct usb_request *req = fsg->ep0req; + int value = -EOPNOTSUPP; + u16 w_index = le16_to_cpu(ctrl->wIndex); + u16 w_value = le16_to_cpu(ctrl->wValue); + u16 w_length = le16_to_cpu(ctrl->wLength); + + if (!fsg->config) + return value; + + /* Handle Bulk-only class-specific requests */ + if (transport_is_bbb()) { + switch (ctrl->bRequest) { + + case US_BULK_RESET_REQUEST: + if (ctrl->bRequestType != (USB_DIR_OUT | + USB_TYPE_CLASS | USB_RECIP_INTERFACE)) + break; + if (w_index != 0 || w_value != 0 || w_length != 0) { + value = -EDOM; + break; + } + + /* Raise an exception to stop the current operation + * and reinitialize our state. */ + DBG(fsg, "bulk reset request\n"); + raise_exception(fsg, FSG_STATE_RESET); + value = DELAYED_STATUS; + break; + + case US_BULK_GET_MAX_LUN: + if (ctrl->bRequestType != (USB_DIR_IN | + USB_TYPE_CLASS | USB_RECIP_INTERFACE)) + break; + if (w_index != 0 || w_value != 0 || w_length != 1) { + value = -EDOM; + break; + } + VDBG(fsg, "get max LUN\n"); + *(u8 *) req->buf = fsg->nluns - 1; + value = 1; + break; + } + } + + /* Handle CBI class-specific requests */ + else { + switch (ctrl->bRequest) { + + case USB_CBI_ADSC_REQUEST: + if (ctrl->bRequestType != (USB_DIR_OUT | + USB_TYPE_CLASS | USB_RECIP_INTERFACE)) + break; + if (w_index != 0 || w_value != 0) { + value = -EDOM; + break; + } + if (w_length > MAX_COMMAND_SIZE) { + value = -EOVERFLOW; + break; + } + value = w_length; + fsg->ep0req->context = received_cbi_adsc; + break; + } + } + + if (value == -EOPNOTSUPP) + VDBG(fsg, + "unknown class-specific control req " + "%02x.%02x v%04x i%04x l%u\n", + ctrl->bRequestType, ctrl->bRequest, + le16_to_cpu(ctrl->wValue), w_index, w_length); + return value; +} + + +/*-------------------------------------------------------------------------*/ + +/* Ep0 standard request handlers. These always run in_irq. */ + +static int standard_setup_req(struct fsg_dev *fsg, + const struct usb_ctrlrequest *ctrl) +{ + struct usb_request *req = fsg->ep0req; + int value = -EOPNOTSUPP; + u16 w_index = le16_to_cpu(ctrl->wIndex); + u16 w_value = le16_to_cpu(ctrl->wValue); + + /* Usually this just stores reply data in the pre-allocated ep0 buffer, + * but config change events will also reconfigure hardware. */ + switch (ctrl->bRequest) { + + case USB_REQ_GET_DESCRIPTOR: + if (ctrl->bRequestType != (USB_DIR_IN | USB_TYPE_STANDARD | + USB_RECIP_DEVICE)) + break; + switch (w_value >> 8) { + + case USB_DT_DEVICE: + VDBG(fsg, "get device descriptor\n"); + device_desc.bMaxPacketSize0 = fsg->ep0->maxpacket; + value = sizeof device_desc; + memcpy(req->buf, &device_desc, value); + break; + case USB_DT_DEVICE_QUALIFIER: + VDBG(fsg, "get device qualifier\n"); + if (!gadget_is_dualspeed(fsg->gadget) || + fsg->gadget->speed == USB_SPEED_SUPER) + break; + /* + * Assume ep0 uses the same maxpacket value for both + * speeds + */ + dev_qualifier.bMaxPacketSize0 = fsg->ep0->maxpacket; + value = sizeof dev_qualifier; + memcpy(req->buf, &dev_qualifier, value); + break; + + case USB_DT_OTHER_SPEED_CONFIG: + VDBG(fsg, "get other-speed config descriptor\n"); + if (!gadget_is_dualspeed(fsg->gadget) || + fsg->gadget->speed == USB_SPEED_SUPER) + break; + goto get_config; + case USB_DT_CONFIG: + VDBG(fsg, "get configuration descriptor\n"); +get_config: + value = populate_config_buf(fsg->gadget, + req->buf, + w_value >> 8, + w_value & 0xff); + break; + + case USB_DT_STRING: + VDBG(fsg, "get string descriptor\n"); + + /* wIndex == language code */ + value = usb_gadget_get_string(&fsg_stringtab, + w_value & 0xff, req->buf); + break; + + case USB_DT_BOS: + VDBG(fsg, "get bos descriptor\n"); + + if (gadget_is_superspeed(fsg->gadget)) + value = populate_bos(fsg, req->buf); + break; + } + + break; + + /* One config, two speeds */ + case USB_REQ_SET_CONFIGURATION: + if (ctrl->bRequestType != (USB_DIR_OUT | USB_TYPE_STANDARD | + USB_RECIP_DEVICE)) + break; + VDBG(fsg, "set configuration\n"); + if (w_value == CONFIG_VALUE || w_value == 0) { + fsg->new_config = w_value; + + /* Raise an exception to wipe out previous transaction + * state (queued bufs, etc) and set the new config. */ + raise_exception(fsg, FSG_STATE_CONFIG_CHANGE); + value = DELAYED_STATUS; + } + break; + case USB_REQ_GET_CONFIGURATION: + if (ctrl->bRequestType != (USB_DIR_IN | USB_TYPE_STANDARD | + USB_RECIP_DEVICE)) + break; + VDBG(fsg, "get configuration\n"); + *(u8 *) req->buf = fsg->config; + value = 1; + break; + + case USB_REQ_SET_INTERFACE: + if (ctrl->bRequestType != (USB_DIR_OUT| USB_TYPE_STANDARD | + USB_RECIP_INTERFACE)) + break; + if (fsg->config && w_index == 0) { + + /* Raise an exception to wipe out previous transaction + * state (queued bufs, etc) and install the new + * interface altsetting. */ + raise_exception(fsg, FSG_STATE_INTERFACE_CHANGE); + value = DELAYED_STATUS; + } + break; + case USB_REQ_GET_INTERFACE: + if (ctrl->bRequestType != (USB_DIR_IN | USB_TYPE_STANDARD | + USB_RECIP_INTERFACE)) + break; + if (!fsg->config) + break; + if (w_index != 0) { + value = -EDOM; + break; + } + VDBG(fsg, "get interface\n"); + *(u8 *) req->buf = 0; + value = 1; + break; + + default: + VDBG(fsg, + "unknown control req %02x.%02x v%04x i%04x l%u\n", + ctrl->bRequestType, ctrl->bRequest, + w_value, w_index, le16_to_cpu(ctrl->wLength)); + } + + return value; +} + + +static int fsg_setup(struct usb_gadget *gadget, + const struct usb_ctrlrequest *ctrl) +{ + struct fsg_dev *fsg = get_gadget_data(gadget); + int rc; + int w_length = le16_to_cpu(ctrl->wLength); + + ++fsg->ep0_req_tag; // Record arrival of a new request + fsg->ep0req->context = NULL; + fsg->ep0req->length = 0; + dump_msg(fsg, "ep0-setup", (u8 *) ctrl, sizeof(*ctrl)); + + if ((ctrl->bRequestType & USB_TYPE_MASK) == USB_TYPE_CLASS) + rc = class_setup_req(fsg, ctrl); + else + rc = standard_setup_req(fsg, ctrl); + + /* Respond with data/status or defer until later? */ + if (rc >= 0 && rc != DELAYED_STATUS) { + rc = min(rc, w_length); + fsg->ep0req->length = rc; + fsg->ep0req->zero = rc < w_length; + fsg->ep0req_name = (ctrl->bRequestType & USB_DIR_IN ? + "ep0-in" : "ep0-out"); + rc = ep0_queue(fsg); + } + + /* Device either stalls (rc < 0) or reports success */ + return rc; +} + + +/*-------------------------------------------------------------------------*/ + +/* All the following routines run in process context */ + + +/* Use this for bulk or interrupt transfers, not ep0 */ +static void start_transfer(struct fsg_dev *fsg, struct usb_ep *ep, + struct usb_request *req, int *pbusy, + enum fsg_buffer_state *state) +{ + int rc; + + if (ep == fsg->bulk_in) + dump_msg(fsg, "bulk-in", req->buf, req->length); + else if (ep == fsg->intr_in) + dump_msg(fsg, "intr-in", req->buf, req->length); + + spin_lock_irq(&fsg->lock); + *pbusy = 1; + *state = BUF_STATE_BUSY; + spin_unlock_irq(&fsg->lock); + rc = usb_ep_queue(ep, req, GFP_KERNEL); + if (rc != 0) { + *pbusy = 0; + *state = BUF_STATE_EMPTY; + + /* We can't do much more than wait for a reset */ + + /* Note: currently the net2280 driver fails zero-length + * submissions if DMA is enabled. */ + if (rc != -ESHUTDOWN && !(rc == -EOPNOTSUPP && + req->length == 0)) + WARNING(fsg, "error in submission: %s --> %d\n", + ep->name, rc); + } +} + + +static int sleep_thread(struct fsg_dev *fsg) +{ + int rc = 0; + + /* Wait until a signal arrives or we are woken up */ + for (;;) { + try_to_freeze(); + set_current_state(TASK_INTERRUPTIBLE); + if (signal_pending(current)) { + rc = -EINTR; + break; + } + if (fsg->thread_wakeup_needed) + break; + schedule(); + } + __set_current_state(TASK_RUNNING); + fsg->thread_wakeup_needed = 0; + return rc; +} + + +/*-------------------------------------------------------------------------*/ + +static int do_read(struct fsg_dev *fsg) +{ + struct fsg_lun *curlun = fsg->curlun; + u32 lba; + struct fsg_buffhd *bh; + int rc; + u32 amount_left; + loff_t file_offset, file_offset_tmp; + unsigned int amount; + ssize_t nread; + + /* Get the starting Logical Block Address and check that it's + * not too big */ + if (fsg->cmnd[0] == READ_6) + lba = get_unaligned_be24(&fsg->cmnd[1]); + else { + lba = get_unaligned_be32(&fsg->cmnd[2]); + + /* We allow DPO (Disable Page Out = don't save data in the + * cache) and FUA (Force Unit Access = don't read from the + * cache), but we don't implement them. */ + if ((fsg->cmnd[1] & ~0x18) != 0) { + curlun->sense_data = SS_INVALID_FIELD_IN_CDB; + return -EINVAL; + } + } + if (lba >= curlun->num_sectors) { + curlun->sense_data = SS_LOGICAL_BLOCK_ADDRESS_OUT_OF_RANGE; + return -EINVAL; + } + file_offset = ((loff_t) lba) << curlun->blkbits; + + /* Carry out the file reads */ + amount_left = fsg->data_size_from_cmnd; + if (unlikely(amount_left == 0)) + return -EIO; // No default reply + + for (;;) { + + /* Figure out how much we need to read: + * Try to read the remaining amount. + * But don't read more than the buffer size. + * And don't try to read past the end of the file. + */ + amount = min((unsigned int) amount_left, mod_data.buflen); + amount = min((loff_t) amount, + curlun->file_length - file_offset); + + /* Wait for the next buffer to become available */ + bh = fsg->next_buffhd_to_fill; + while (bh->state != BUF_STATE_EMPTY) { + rc = sleep_thread(fsg); + if (rc) + return rc; + } + + /* If we were asked to read past the end of file, + * end with an empty buffer. */ + if (amount == 0) { + curlun->sense_data = + SS_LOGICAL_BLOCK_ADDRESS_OUT_OF_RANGE; + curlun->sense_data_info = file_offset >> curlun->blkbits; + curlun->info_valid = 1; + bh->inreq->length = 0; + bh->state = BUF_STATE_FULL; + break; + } + + /* Perform the read */ + file_offset_tmp = file_offset; + nread = vfs_read(curlun->filp, + (char __user *) bh->buf, + amount, &file_offset_tmp); + VLDBG(curlun, "file read %u @ %llu -> %d\n", amount, + (unsigned long long) file_offset, + (int) nread); + if (signal_pending(current)) + return -EINTR; + + if (nread < 0) { + LDBG(curlun, "error in file read: %d\n", + (int) nread); + nread = 0; + } else if (nread < amount) { + LDBG(curlun, "partial file read: %d/%u\n", + (int) nread, amount); + nread = round_down(nread, curlun->blksize); + } + file_offset += nread; + amount_left -= nread; + fsg->residue -= nread; + + /* Except at the end of the transfer, nread will be + * equal to the buffer size, which is divisible by the + * bulk-in maxpacket size. + */ + bh->inreq->length = nread; + bh->state = BUF_STATE_FULL; + + /* If an error occurred, report it and its position */ + if (nread < amount) { + curlun->sense_data = SS_UNRECOVERED_READ_ERROR; + curlun->sense_data_info = file_offset >> curlun->blkbits; + curlun->info_valid = 1; + break; + } + + if (amount_left == 0) + break; // No more left to read + + /* Send this buffer and go read some more */ + bh->inreq->zero = 0; + start_transfer(fsg, fsg->bulk_in, bh->inreq, + &bh->inreq_busy, &bh->state); + fsg->next_buffhd_to_fill = bh->next; + } + + return -EIO; // No default reply +} + + +/*-------------------------------------------------------------------------*/ + +static int do_write(struct fsg_dev *fsg) +{ + struct fsg_lun *curlun = fsg->curlun; + u32 lba; + struct fsg_buffhd *bh; + int get_some_more; + u32 amount_left_to_req, amount_left_to_write; + loff_t usb_offset, file_offset, file_offset_tmp; + unsigned int amount; + ssize_t nwritten; + int rc; + + if (curlun->ro) { + curlun->sense_data = SS_WRITE_PROTECTED; + return -EINVAL; + } + spin_lock(&curlun->filp->f_lock); + curlun->filp->f_flags &= ~O_SYNC; // Default is not to wait + spin_unlock(&curlun->filp->f_lock); + + /* Get the starting Logical Block Address and check that it's + * not too big */ + if (fsg->cmnd[0] == WRITE_6) + lba = get_unaligned_be24(&fsg->cmnd[1]); + else { + lba = get_unaligned_be32(&fsg->cmnd[2]); + + /* We allow DPO (Disable Page Out = don't save data in the + * cache) and FUA (Force Unit Access = write directly to the + * medium). We don't implement DPO; we implement FUA by + * performing synchronous output. */ + if ((fsg->cmnd[1] & ~0x18) != 0) { + curlun->sense_data = SS_INVALID_FIELD_IN_CDB; + return -EINVAL; + } + /* FUA */ + if (!curlun->nofua && (fsg->cmnd[1] & 0x08)) { + spin_lock(&curlun->filp->f_lock); + curlun->filp->f_flags |= O_DSYNC; + spin_unlock(&curlun->filp->f_lock); + } + } + if (lba >= curlun->num_sectors) { + curlun->sense_data = SS_LOGICAL_BLOCK_ADDRESS_OUT_OF_RANGE; + return -EINVAL; + } + + /* Carry out the file writes */ + get_some_more = 1; + file_offset = usb_offset = ((loff_t) lba) << curlun->blkbits; + amount_left_to_req = amount_left_to_write = fsg->data_size_from_cmnd; + + while (amount_left_to_write > 0) { + + /* Queue a request for more data from the host */ + bh = fsg->next_buffhd_to_fill; + if (bh->state == BUF_STATE_EMPTY && get_some_more) { + + /* Figure out how much we want to get: + * Try to get the remaining amount, + * but not more than the buffer size. + */ + amount = min(amount_left_to_req, mod_data.buflen); + + /* Beyond the end of the backing file? */ + if (usb_offset >= curlun->file_length) { + get_some_more = 0; + curlun->sense_data = + SS_LOGICAL_BLOCK_ADDRESS_OUT_OF_RANGE; + curlun->sense_data_info = usb_offset >> curlun->blkbits; + curlun->info_valid = 1; + continue; + } + + /* Get the next buffer */ + usb_offset += amount; + fsg->usb_amount_left -= amount; + amount_left_to_req -= amount; + if (amount_left_to_req == 0) + get_some_more = 0; + + /* Except at the end of the transfer, amount will be + * equal to the buffer size, which is divisible by + * the bulk-out maxpacket size. + */ + set_bulk_out_req_length(fsg, bh, amount); + start_transfer(fsg, fsg->bulk_out, bh->outreq, + &bh->outreq_busy, &bh->state); + fsg->next_buffhd_to_fill = bh->next; + continue; + } + + /* Write the received data to the backing file */ + bh = fsg->next_buffhd_to_drain; + if (bh->state == BUF_STATE_EMPTY && !get_some_more) + break; // We stopped early + if (bh->state == BUF_STATE_FULL) { + smp_rmb(); + fsg->next_buffhd_to_drain = bh->next; + bh->state = BUF_STATE_EMPTY; + + /* Did something go wrong with the transfer? */ + if (bh->outreq->status != 0) { + curlun->sense_data = SS_COMMUNICATION_FAILURE; + curlun->sense_data_info = file_offset >> curlun->blkbits; + curlun->info_valid = 1; + break; + } + + amount = bh->outreq->actual; + if (curlun->file_length - file_offset < amount) { + LERROR(curlun, + "write %u @ %llu beyond end %llu\n", + amount, (unsigned long long) file_offset, + (unsigned long long) curlun->file_length); + amount = curlun->file_length - file_offset; + } + + /* Don't accept excess data. The spec doesn't say + * what to do in this case. We'll ignore the error. + */ + amount = min(amount, bh->bulk_out_intended_length); + + /* Don't write a partial block */ + amount = round_down(amount, curlun->blksize); + if (amount == 0) + goto empty_write; + + /* Perform the write */ + file_offset_tmp = file_offset; + nwritten = vfs_write(curlun->filp, + (char __user *) bh->buf, + amount, &file_offset_tmp); + VLDBG(curlun, "file write %u @ %llu -> %d\n", amount, + (unsigned long long) file_offset, + (int) nwritten); + if (signal_pending(current)) + return -EINTR; // Interrupted! + + if (nwritten < 0) { + LDBG(curlun, "error in file write: %d\n", + (int) nwritten); + nwritten = 0; + } else if (nwritten < amount) { + LDBG(curlun, "partial file write: %d/%u\n", + (int) nwritten, amount); + nwritten = round_down(nwritten, curlun->blksize); + } + file_offset += nwritten; + amount_left_to_write -= nwritten; + fsg->residue -= nwritten; + + /* If an error occurred, report it and its position */ + if (nwritten < amount) { + curlun->sense_data = SS_WRITE_ERROR; + curlun->sense_data_info = file_offset >> curlun->blkbits; + curlun->info_valid = 1; + break; + } + + empty_write: + /* Did the host decide to stop early? */ + if (bh->outreq->actual < bh->bulk_out_intended_length) { + fsg->short_packet_received = 1; + break; + } + continue; + } + + /* Wait for something to happen */ + rc = sleep_thread(fsg); + if (rc) + return rc; + } + + return -EIO; // No default reply +} + + +/*-------------------------------------------------------------------------*/ + +static int do_synchronize_cache(struct fsg_dev *fsg) +{ + struct fsg_lun *curlun = fsg->curlun; + int rc; + + /* We ignore the requested LBA and write out all file's + * dirty data buffers. */ + rc = fsg_lun_fsync_sub(curlun); + if (rc) + curlun->sense_data = SS_WRITE_ERROR; + return 0; +} + + +/*-------------------------------------------------------------------------*/ + +static void invalidate_sub(struct fsg_lun *curlun) +{ + struct file *filp = curlun->filp; + struct inode *inode = filp->f_path.dentry->d_inode; + unsigned long rc; + + rc = invalidate_mapping_pages(inode->i_mapping, 0, -1); + VLDBG(curlun, "invalidate_mapping_pages -> %ld\n", rc); +} + +static int do_verify(struct fsg_dev *fsg) +{ + struct fsg_lun *curlun = fsg->curlun; + u32 lba; + u32 verification_length; + struct fsg_buffhd *bh = fsg->next_buffhd_to_fill; + loff_t file_offset, file_offset_tmp; + u32 amount_left; + unsigned int amount; + ssize_t nread; + + /* Get the starting Logical Block Address and check that it's + * not too big */ + lba = get_unaligned_be32(&fsg->cmnd[2]); + if (lba >= curlun->num_sectors) { + curlun->sense_data = SS_LOGICAL_BLOCK_ADDRESS_OUT_OF_RANGE; + return -EINVAL; + } + + /* We allow DPO (Disable Page Out = don't save data in the + * cache) but we don't implement it. */ + if ((fsg->cmnd[1] & ~0x10) != 0) { + curlun->sense_data = SS_INVALID_FIELD_IN_CDB; + return -EINVAL; + } + + verification_length = get_unaligned_be16(&fsg->cmnd[7]); + if (unlikely(verification_length == 0)) + return -EIO; // No default reply + + /* Prepare to carry out the file verify */ + amount_left = verification_length << curlun->blkbits; + file_offset = ((loff_t) lba) << curlun->blkbits; + + /* Write out all the dirty buffers before invalidating them */ + fsg_lun_fsync_sub(curlun); + if (signal_pending(current)) + return -EINTR; + + invalidate_sub(curlun); + if (signal_pending(current)) + return -EINTR; + + /* Just try to read the requested blocks */ + while (amount_left > 0) { + + /* Figure out how much we need to read: + * Try to read the remaining amount, but not more than + * the buffer size. + * And don't try to read past the end of the file. + */ + amount = min((unsigned int) amount_left, mod_data.buflen); + amount = min((loff_t) amount, + curlun->file_length - file_offset); + if (amount == 0) { + curlun->sense_data = + SS_LOGICAL_BLOCK_ADDRESS_OUT_OF_RANGE; + curlun->sense_data_info = file_offset >> curlun->blkbits; + curlun->info_valid = 1; + break; + } + + /* Perform the read */ + file_offset_tmp = file_offset; + nread = vfs_read(curlun->filp, + (char __user *) bh->buf, + amount, &file_offset_tmp); + VLDBG(curlun, "file read %u @ %llu -> %d\n", amount, + (unsigned long long) file_offset, + (int) nread); + if (signal_pending(current)) + return -EINTR; + + if (nread < 0) { + LDBG(curlun, "error in file verify: %d\n", + (int) nread); + nread = 0; + } else if (nread < amount) { + LDBG(curlun, "partial file verify: %d/%u\n", + (int) nread, amount); + nread = round_down(nread, curlun->blksize); + } + if (nread == 0) { + curlun->sense_data = SS_UNRECOVERED_READ_ERROR; + curlun->sense_data_info = file_offset >> curlun->blkbits; + curlun->info_valid = 1; + break; + } + file_offset += nread; + amount_left -= nread; + } + return 0; +} + + +/*-------------------------------------------------------------------------*/ + +static int do_inquiry(struct fsg_dev *fsg, struct fsg_buffhd *bh) +{ + u8 *buf = (u8 *) bh->buf; + + static char vendor_id[] = "Linux "; + static char product_disk_id[] = "File-Stor Gadget"; + static char product_cdrom_id[] = "File-CD Gadget "; + + if (!fsg->curlun) { // Unsupported LUNs are okay + fsg->bad_lun_okay = 1; + memset(buf, 0, 36); + buf[0] = 0x7f; // Unsupported, no device-type + buf[4] = 31; // Additional length + return 36; + } + + memset(buf, 0, 8); + buf[0] = (mod_data.cdrom ? TYPE_ROM : TYPE_DISK); + if (mod_data.removable) + buf[1] = 0x80; + buf[2] = 2; // ANSI SCSI level 2 + buf[3] = 2; // SCSI-2 INQUIRY data format + buf[4] = 31; // Additional length + // No special options + sprintf(buf + 8, "%-8s%-16s%04x", vendor_id, + (mod_data.cdrom ? product_cdrom_id : + product_disk_id), + mod_data.release); + return 36; +} + + +static int do_request_sense(struct fsg_dev *fsg, struct fsg_buffhd *bh) +{ + struct fsg_lun *curlun = fsg->curlun; + u8 *buf = (u8 *) bh->buf; + u32 sd, sdinfo; + int valid; + + /* + * From the SCSI-2 spec., section 7.9 (Unit attention condition): + * + * If a REQUEST SENSE command is received from an initiator + * with a pending unit attention condition (before the target + * generates the contingent allegiance condition), then the + * target shall either: + * a) report any pending sense data and preserve the unit + * attention condition on the logical unit, or, + * b) report the unit attention condition, may discard any + * pending sense data, and clear the unit attention + * condition on the logical unit for that initiator. + * + * FSG normally uses option a); enable this code to use option b). + */ +#if 0 + if (curlun && curlun->unit_attention_data != SS_NO_SENSE) { + curlun->sense_data = curlun->unit_attention_data; + curlun->unit_attention_data = SS_NO_SENSE; + } +#endif + + if (!curlun) { // Unsupported LUNs are okay + fsg->bad_lun_okay = 1; + sd = SS_LOGICAL_UNIT_NOT_SUPPORTED; + sdinfo = 0; + valid = 0; + } else { + sd = curlun->sense_data; + sdinfo = curlun->sense_data_info; + valid = curlun->info_valid << 7; + curlun->sense_data = SS_NO_SENSE; + curlun->sense_data_info = 0; + curlun->info_valid = 0; + } + + memset(buf, 0, 18); + buf[0] = valid | 0x70; // Valid, current error + buf[2] = SK(sd); + put_unaligned_be32(sdinfo, &buf[3]); /* Sense information */ + buf[7] = 18 - 8; // Additional sense length + buf[12] = ASC(sd); + buf[13] = ASCQ(sd); + return 18; +} + + +static int do_read_capacity(struct fsg_dev *fsg, struct fsg_buffhd *bh) +{ + struct fsg_lun *curlun = fsg->curlun; + u32 lba = get_unaligned_be32(&fsg->cmnd[2]); + int pmi = fsg->cmnd[8]; + u8 *buf = (u8 *) bh->buf; + + /* Check the PMI and LBA fields */ + if (pmi > 1 || (pmi == 0 && lba != 0)) { + curlun->sense_data = SS_INVALID_FIELD_IN_CDB; + return -EINVAL; + } + + put_unaligned_be32(curlun->num_sectors - 1, &buf[0]); + /* Max logical block */ + put_unaligned_be32(curlun->blksize, &buf[4]); /* Block length */ + return 8; +} + + +static int do_read_header(struct fsg_dev *fsg, struct fsg_buffhd *bh) +{ + struct fsg_lun *curlun = fsg->curlun; + int msf = fsg->cmnd[1] & 0x02; + u32 lba = get_unaligned_be32(&fsg->cmnd[2]); + u8 *buf = (u8 *) bh->buf; + + if ((fsg->cmnd[1] & ~0x02) != 0) { /* Mask away MSF */ + curlun->sense_data = SS_INVALID_FIELD_IN_CDB; + return -EINVAL; + } + if (lba >= curlun->num_sectors) { + curlun->sense_data = SS_LOGICAL_BLOCK_ADDRESS_OUT_OF_RANGE; + return -EINVAL; + } + + memset(buf, 0, 8); + buf[0] = 0x01; /* 2048 bytes of user data, rest is EC */ + store_cdrom_address(&buf[4], msf, lba); + return 8; +} + + +static int do_read_toc(struct fsg_dev *fsg, struct fsg_buffhd *bh) +{ + struct fsg_lun *curlun = fsg->curlun; + int msf = fsg->cmnd[1] & 0x02; + int start_track = fsg->cmnd[6]; + u8 *buf = (u8 *) bh->buf; + + if ((fsg->cmnd[1] & ~0x02) != 0 || /* Mask away MSF */ + start_track > 1) { + curlun->sense_data = SS_INVALID_FIELD_IN_CDB; + return -EINVAL; + } + + memset(buf, 0, 20); + buf[1] = (20-2); /* TOC data length */ + buf[2] = 1; /* First track number */ + buf[3] = 1; /* Last track number */ + buf[5] = 0x16; /* Data track, copying allowed */ + buf[6] = 0x01; /* Only track is number 1 */ + store_cdrom_address(&buf[8], msf, 0); + + buf[13] = 0x16; /* Lead-out track is data */ + buf[14] = 0xAA; /* Lead-out track number */ + store_cdrom_address(&buf[16], msf, curlun->num_sectors); + return 20; +} + + +static int do_mode_sense(struct fsg_dev *fsg, struct fsg_buffhd *bh) +{ + struct fsg_lun *curlun = fsg->curlun; + int mscmnd = fsg->cmnd[0]; + u8 *buf = (u8 *) bh->buf; + u8 *buf0 = buf; + int pc, page_code; + int changeable_values, all_pages; + int valid_page = 0; + int len, limit; + + if ((fsg->cmnd[1] & ~0x08) != 0) { // Mask away DBD + curlun->sense_data = SS_INVALID_FIELD_IN_CDB; + return -EINVAL; + } + pc = fsg->cmnd[2] >> 6; + page_code = fsg->cmnd[2] & 0x3f; + if (pc == 3) { + curlun->sense_data = SS_SAVING_PARAMETERS_NOT_SUPPORTED; + return -EINVAL; + } + changeable_values = (pc == 1); + all_pages = (page_code == 0x3f); + + /* Write the mode parameter header. Fixed values are: default + * medium type, no cache control (DPOFUA), and no block descriptors. + * The only variable value is the WriteProtect bit. We will fill in + * the mode data length later. */ + memset(buf, 0, 8); + if (mscmnd == MODE_SENSE) { + buf[2] = (curlun->ro ? 0x80 : 0x00); // WP, DPOFUA + buf += 4; + limit = 255; + } else { // MODE_SENSE_10 + buf[3] = (curlun->ro ? 0x80 : 0x00); // WP, DPOFUA + buf += 8; + limit = 65535; // Should really be mod_data.buflen + } + + /* No block descriptors */ + + /* The mode pages, in numerical order. The only page we support + * is the Caching page. */ + if (page_code == 0x08 || all_pages) { + valid_page = 1; + buf[0] = 0x08; // Page code + buf[1] = 10; // Page length + memset(buf+2, 0, 10); // None of the fields are changeable + + if (!changeable_values) { + buf[2] = 0x04; // Write cache enable, + // Read cache not disabled + // No cache retention priorities + put_unaligned_be16(0xffff, &buf[4]); + /* Don't disable prefetch */ + /* Minimum prefetch = 0 */ + put_unaligned_be16(0xffff, &buf[8]); + /* Maximum prefetch */ + put_unaligned_be16(0xffff, &buf[10]); + /* Maximum prefetch ceiling */ + } + buf += 12; + } + + /* Check that a valid page was requested and the mode data length + * isn't too long. */ + len = buf - buf0; + if (!valid_page || len > limit) { + curlun->sense_data = SS_INVALID_FIELD_IN_CDB; + return -EINVAL; + } + + /* Store the mode data length */ + if (mscmnd == MODE_SENSE) + buf0[0] = len - 1; + else + put_unaligned_be16(len - 2, buf0); + return len; +} + + +static int do_start_stop(struct fsg_dev *fsg) +{ + struct fsg_lun *curlun = fsg->curlun; + int loej, start; + + if (!mod_data.removable) { + curlun->sense_data = SS_INVALID_COMMAND; + return -EINVAL; + } + + // int immed = fsg->cmnd[1] & 0x01; + loej = fsg->cmnd[4] & 0x02; + start = fsg->cmnd[4] & 0x01; + +#ifdef CONFIG_USB_FILE_STORAGE_TEST + if ((fsg->cmnd[1] & ~0x01) != 0 || // Mask away Immed + (fsg->cmnd[4] & ~0x03) != 0) { // Mask LoEj, Start + curlun->sense_data = SS_INVALID_FIELD_IN_CDB; + return -EINVAL; + } + + if (!start) { + + /* Are we allowed to unload the media? */ + if (curlun->prevent_medium_removal) { + LDBG(curlun, "unload attempt prevented\n"); + curlun->sense_data = SS_MEDIUM_REMOVAL_PREVENTED; + return -EINVAL; + } + if (loej) { // Simulate an unload/eject + up_read(&fsg->filesem); + down_write(&fsg->filesem); + fsg_lun_close(curlun); + up_write(&fsg->filesem); + down_read(&fsg->filesem); + } + } else { + + /* Our emulation doesn't support mounting; the medium is + * available for use as soon as it is loaded. */ + if (!fsg_lun_is_open(curlun)) { + curlun->sense_data = SS_MEDIUM_NOT_PRESENT; + return -EINVAL; + } + } +#endif + return 0; +} + + +static int do_prevent_allow(struct fsg_dev *fsg) +{ + struct fsg_lun *curlun = fsg->curlun; + int prevent; + + if (!mod_data.removable) { + curlun->sense_data = SS_INVALID_COMMAND; + return -EINVAL; + } + + prevent = fsg->cmnd[4] & 0x01; + if ((fsg->cmnd[4] & ~0x01) != 0) { // Mask away Prevent + curlun->sense_data = SS_INVALID_FIELD_IN_CDB; + return -EINVAL; + } + + if (curlun->prevent_medium_removal && !prevent) + fsg_lun_fsync_sub(curlun); + curlun->prevent_medium_removal = prevent; + return 0; +} + + +static int do_read_format_capacities(struct fsg_dev *fsg, + struct fsg_buffhd *bh) +{ + struct fsg_lun *curlun = fsg->curlun; + u8 *buf = (u8 *) bh->buf; + + buf[0] = buf[1] = buf[2] = 0; + buf[3] = 8; // Only the Current/Maximum Capacity Descriptor + buf += 4; + + put_unaligned_be32(curlun->num_sectors, &buf[0]); + /* Number of blocks */ + put_unaligned_be32(curlun->blksize, &buf[4]); /* Block length */ + buf[4] = 0x02; /* Current capacity */ + return 12; +} + + +static int do_mode_select(struct fsg_dev *fsg, struct fsg_buffhd *bh) +{ + struct fsg_lun *curlun = fsg->curlun; + + /* We don't support MODE SELECT */ + curlun->sense_data = SS_INVALID_COMMAND; + return -EINVAL; +} + + +/*-------------------------------------------------------------------------*/ + +static int halt_bulk_in_endpoint(struct fsg_dev *fsg) +{ + int rc; + + rc = fsg_set_halt(fsg, fsg->bulk_in); + if (rc == -EAGAIN) + VDBG(fsg, "delayed bulk-in endpoint halt\n"); + while (rc != 0) { + if (rc != -EAGAIN) { + WARNING(fsg, "usb_ep_set_halt -> %d\n", rc); + rc = 0; + break; + } + + /* Wait for a short time and then try again */ + if (msleep_interruptible(100) != 0) + return -EINTR; + rc = usb_ep_set_halt(fsg->bulk_in); + } + return rc; +} + +static int wedge_bulk_in_endpoint(struct fsg_dev *fsg) +{ + int rc; + + DBG(fsg, "bulk-in set wedge\n"); + rc = usb_ep_set_wedge(fsg->bulk_in); + if (rc == -EAGAIN) + VDBG(fsg, "delayed bulk-in endpoint wedge\n"); + while (rc != 0) { + if (rc != -EAGAIN) { + WARNING(fsg, "usb_ep_set_wedge -> %d\n", rc); + rc = 0; + break; + } + + /* Wait for a short time and then try again */ + if (msleep_interruptible(100) != 0) + return -EINTR; + rc = usb_ep_set_wedge(fsg->bulk_in); + } + return rc; +} + +static int throw_away_data(struct fsg_dev *fsg) +{ + struct fsg_buffhd *bh; + u32 amount; + int rc; + + while ((bh = fsg->next_buffhd_to_drain)->state != BUF_STATE_EMPTY || + fsg->usb_amount_left > 0) { + + /* Throw away the data in a filled buffer */ + if (bh->state == BUF_STATE_FULL) { + smp_rmb(); + bh->state = BUF_STATE_EMPTY; + fsg->next_buffhd_to_drain = bh->next; + + /* A short packet or an error ends everything */ + if (bh->outreq->actual < bh->bulk_out_intended_length || + bh->outreq->status != 0) { + raise_exception(fsg, FSG_STATE_ABORT_BULK_OUT); + return -EINTR; + } + continue; + } + + /* Try to submit another request if we need one */ + bh = fsg->next_buffhd_to_fill; + if (bh->state == BUF_STATE_EMPTY && fsg->usb_amount_left > 0) { + amount = min(fsg->usb_amount_left, + (u32) mod_data.buflen); + + /* Except at the end of the transfer, amount will be + * equal to the buffer size, which is divisible by + * the bulk-out maxpacket size. + */ + set_bulk_out_req_length(fsg, bh, amount); + start_transfer(fsg, fsg->bulk_out, bh->outreq, + &bh->outreq_busy, &bh->state); + fsg->next_buffhd_to_fill = bh->next; + fsg->usb_amount_left -= amount; + continue; + } + + /* Otherwise wait for something to happen */ + rc = sleep_thread(fsg); + if (rc) + return rc; + } + return 0; +} + + +static int finish_reply(struct fsg_dev *fsg) +{ + struct fsg_buffhd *bh = fsg->next_buffhd_to_fill; + int rc = 0; + + switch (fsg->data_dir) { + case DATA_DIR_NONE: + break; // Nothing to send + + /* If we don't know whether the host wants to read or write, + * this must be CB or CBI with an unknown command. We mustn't + * try to send or receive any data. So stall both bulk pipes + * if we can and wait for a reset. */ + case DATA_DIR_UNKNOWN: + if (mod_data.can_stall) { + fsg_set_halt(fsg, fsg->bulk_out); + rc = halt_bulk_in_endpoint(fsg); + } + break; + + /* All but the last buffer of data must have already been sent */ + case DATA_DIR_TO_HOST: + if (fsg->data_size == 0) + ; // Nothing to send + + /* If there's no residue, simply send the last buffer */ + else if (fsg->residue == 0) { + bh->inreq->zero = 0; + start_transfer(fsg, fsg->bulk_in, bh->inreq, + &bh->inreq_busy, &bh->state); + fsg->next_buffhd_to_fill = bh->next; + } + + /* There is a residue. For CB and CBI, simply mark the end + * of the data with a short packet. However, if we are + * allowed to stall, there was no data at all (residue == + * data_size), and the command failed (invalid LUN or + * sense data is set), then halt the bulk-in endpoint + * instead. */ + else if (!transport_is_bbb()) { + if (mod_data.can_stall && + fsg->residue == fsg->data_size && + (!fsg->curlun || fsg->curlun->sense_data != SS_NO_SENSE)) { + bh->state = BUF_STATE_EMPTY; + rc = halt_bulk_in_endpoint(fsg); + } else { + bh->inreq->zero = 1; + start_transfer(fsg, fsg->bulk_in, bh->inreq, + &bh->inreq_busy, &bh->state); + fsg->next_buffhd_to_fill = bh->next; + } + } + + /* + * For Bulk-only, mark the end of the data with a short + * packet. If we are allowed to stall, halt the bulk-in + * endpoint. (Note: This violates the Bulk-Only Transport + * specification, which requires us to pad the data if we + * don't halt the endpoint. Presumably nobody will mind.) + */ + else { + bh->inreq->zero = 1; + start_transfer(fsg, fsg->bulk_in, bh->inreq, + &bh->inreq_busy, &bh->state); + fsg->next_buffhd_to_fill = bh->next; + if (mod_data.can_stall) + rc = halt_bulk_in_endpoint(fsg); + } + break; + + /* We have processed all we want from the data the host has sent. + * There may still be outstanding bulk-out requests. */ + case DATA_DIR_FROM_HOST: + if (fsg->residue == 0) + ; // Nothing to receive + + /* Did the host stop sending unexpectedly early? */ + else if (fsg->short_packet_received) { + raise_exception(fsg, FSG_STATE_ABORT_BULK_OUT); + rc = -EINTR; + } + + /* We haven't processed all the incoming data. Even though + * we may be allowed to stall, doing so would cause a race. + * The controller may already have ACK'ed all the remaining + * bulk-out packets, in which case the host wouldn't see a + * STALL. Not realizing the endpoint was halted, it wouldn't + * clear the halt -- leading to problems later on. */ +#if 0 + else if (mod_data.can_stall) { + fsg_set_halt(fsg, fsg->bulk_out); + raise_exception(fsg, FSG_STATE_ABORT_BULK_OUT); + rc = -EINTR; + } +#endif + + /* We can't stall. Read in the excess data and throw it + * all away. */ + else + rc = throw_away_data(fsg); + break; + } + return rc; +} + + +static int send_status(struct fsg_dev *fsg) +{ + struct fsg_lun *curlun = fsg->curlun; + struct fsg_buffhd *bh; + int rc; + u8 status = US_BULK_STAT_OK; + u32 sd, sdinfo = 0; + + /* Wait for the next buffer to become available */ + bh = fsg->next_buffhd_to_fill; + while (bh->state != BUF_STATE_EMPTY) { + rc = sleep_thread(fsg); + if (rc) + return rc; + } + + if (curlun) { + sd = curlun->sense_data; + sdinfo = curlun->sense_data_info; + } else if (fsg->bad_lun_okay) + sd = SS_NO_SENSE; + else + sd = SS_LOGICAL_UNIT_NOT_SUPPORTED; + + if (fsg->phase_error) { + DBG(fsg, "sending phase-error status\n"); + status = US_BULK_STAT_PHASE; + sd = SS_INVALID_COMMAND; + } else if (sd != SS_NO_SENSE) { + DBG(fsg, "sending command-failure status\n"); + status = US_BULK_STAT_FAIL; + VDBG(fsg, " sense data: SK x%02x, ASC x%02x, ASCQ x%02x;" + " info x%x\n", + SK(sd), ASC(sd), ASCQ(sd), sdinfo); + } + + if (transport_is_bbb()) { + struct bulk_cs_wrap *csw = bh->buf; + + /* Store and send the Bulk-only CSW */ + csw->Signature = cpu_to_le32(US_BULK_CS_SIGN); + csw->Tag = fsg->tag; + csw->Residue = cpu_to_le32(fsg->residue); + csw->Status = status; + + bh->inreq->length = US_BULK_CS_WRAP_LEN; + bh->inreq->zero = 0; + start_transfer(fsg, fsg->bulk_in, bh->inreq, + &bh->inreq_busy, &bh->state); + + } else if (mod_data.transport_type == USB_PR_CB) { + + /* Control-Bulk transport has no status phase! */ + return 0; + + } else { // USB_PR_CBI + struct interrupt_data *buf = bh->buf; + + /* Store and send the Interrupt data. UFI sends the ASC + * and ASCQ bytes. Everything else sends a Type (which + * is always 0) and the status Value. */ + if (mod_data.protocol_type == USB_SC_UFI) { + buf->bType = ASC(sd); + buf->bValue = ASCQ(sd); + } else { + buf->bType = 0; + buf->bValue = status; + } + fsg->intreq->length = CBI_INTERRUPT_DATA_LEN; + + fsg->intr_buffhd = bh; // Point to the right buffhd + fsg->intreq->buf = bh->inreq->buf; + fsg->intreq->context = bh; + start_transfer(fsg, fsg->intr_in, fsg->intreq, + &fsg->intreq_busy, &bh->state); + } + + fsg->next_buffhd_to_fill = bh->next; + return 0; +} + + +/*-------------------------------------------------------------------------*/ + +/* Check whether the command is properly formed and whether its data size + * and direction agree with the values we already have. */ +static int check_command(struct fsg_dev *fsg, int cmnd_size, + enum data_direction data_dir, unsigned int mask, + int needs_medium, const char *name) +{ + int i; + int lun = fsg->cmnd[1] >> 5; + static const char dirletter[4] = {'u', 'o', 'i', 'n'}; + char hdlen[20]; + struct fsg_lun *curlun; + + /* Adjust the expected cmnd_size for protocol encapsulation padding. + * Transparent SCSI doesn't pad. */ + if (protocol_is_scsi()) + ; + + /* There's some disagreement as to whether RBC pads commands or not. + * We'll play it safe and accept either form. */ + else if (mod_data.protocol_type == USB_SC_RBC) { + if (fsg->cmnd_size == 12) + cmnd_size = 12; + + /* All the other protocols pad to 12 bytes */ + } else + cmnd_size = 12; + + hdlen[0] = 0; + if (fsg->data_dir != DATA_DIR_UNKNOWN) + sprintf(hdlen, ", H%c=%u", dirletter[(int) fsg->data_dir], + fsg->data_size); + VDBG(fsg, "SCSI command: %s; Dc=%d, D%c=%u; Hc=%d%s\n", + name, cmnd_size, dirletter[(int) data_dir], + fsg->data_size_from_cmnd, fsg->cmnd_size, hdlen); + + /* We can't reply at all until we know the correct data direction + * and size. */ + if (fsg->data_size_from_cmnd == 0) + data_dir = DATA_DIR_NONE; + if (fsg->data_dir == DATA_DIR_UNKNOWN) { // CB or CBI + fsg->data_dir = data_dir; + fsg->data_size = fsg->data_size_from_cmnd; + + } else { // Bulk-only + if (fsg->data_size < fsg->data_size_from_cmnd) { + + /* Host data size < Device data size is a phase error. + * Carry out the command, but only transfer as much + * as we are allowed. */ + fsg->data_size_from_cmnd = fsg->data_size; + fsg->phase_error = 1; + } + } + fsg->residue = fsg->usb_amount_left = fsg->data_size; + + /* Conflicting data directions is a phase error */ + if (fsg->data_dir != data_dir && fsg->data_size_from_cmnd > 0) { + fsg->phase_error = 1; + return -EINVAL; + } + + /* Verify the length of the command itself */ + if (cmnd_size != fsg->cmnd_size) { + + /* Special case workaround: There are plenty of buggy SCSI + * implementations. Many have issues with cbw->Length + * field passing a wrong command size. For those cases we + * always try to work around the problem by using the length + * sent by the host side provided it is at least as large + * as the correct command length. + * Examples of such cases would be MS-Windows, which issues + * REQUEST SENSE with cbw->Length == 12 where it should + * be 6, and xbox360 issuing INQUIRY, TEST UNIT READY and + * REQUEST SENSE with cbw->Length == 10 where it should + * be 6 as well. + */ + if (cmnd_size <= fsg->cmnd_size) { + DBG(fsg, "%s is buggy! Expected length %d " + "but we got %d\n", name, + cmnd_size, fsg->cmnd_size); + cmnd_size = fsg->cmnd_size; + } else { + fsg->phase_error = 1; + return -EINVAL; + } + } + + /* Check that the LUN values are consistent */ + if (transport_is_bbb()) { + if (fsg->lun != lun) + DBG(fsg, "using LUN %d from CBW, " + "not LUN %d from CDB\n", + fsg->lun, lun); + } + + /* Check the LUN */ + curlun = fsg->curlun; + if (curlun) { + if (fsg->cmnd[0] != REQUEST_SENSE) { + curlun->sense_data = SS_NO_SENSE; + curlun->sense_data_info = 0; + curlun->info_valid = 0; + } + } else { + fsg->bad_lun_okay = 0; + + /* INQUIRY and REQUEST SENSE commands are explicitly allowed + * to use unsupported LUNs; all others may not. */ + if (fsg->cmnd[0] != INQUIRY && + fsg->cmnd[0] != REQUEST_SENSE) { + DBG(fsg, "unsupported LUN %d\n", fsg->lun); + return -EINVAL; + } + } + + /* If a unit attention condition exists, only INQUIRY and + * REQUEST SENSE commands are allowed; anything else must fail. */ + if (curlun && curlun->unit_attention_data != SS_NO_SENSE && + fsg->cmnd[0] != INQUIRY && + fsg->cmnd[0] != REQUEST_SENSE) { + curlun->sense_data = curlun->unit_attention_data; + curlun->unit_attention_data = SS_NO_SENSE; + return -EINVAL; + } + + /* Check that only command bytes listed in the mask are non-zero */ + fsg->cmnd[1] &= 0x1f; // Mask away the LUN + for (i = 1; i < cmnd_size; ++i) { + if (fsg->cmnd[i] && !(mask & (1 << i))) { + if (curlun) + curlun->sense_data = SS_INVALID_FIELD_IN_CDB; + return -EINVAL; + } + } + + /* If the medium isn't mounted and the command needs to access + * it, return an error. */ + if (curlun && !fsg_lun_is_open(curlun) && needs_medium) { + curlun->sense_data = SS_MEDIUM_NOT_PRESENT; + return -EINVAL; + } + + return 0; +} + +/* wrapper of check_command for data size in blocks handling */ +static int check_command_size_in_blocks(struct fsg_dev *fsg, int cmnd_size, + enum data_direction data_dir, unsigned int mask, + int needs_medium, const char *name) +{ + if (fsg->curlun) + fsg->data_size_from_cmnd <<= fsg->curlun->blkbits; + return check_command(fsg, cmnd_size, data_dir, + mask, needs_medium, name); +} + +static int do_scsi_command(struct fsg_dev *fsg) +{ + struct fsg_buffhd *bh; + int rc; + int reply = -EINVAL; + int i; + static char unknown[16]; + + dump_cdb(fsg); + + /* Wait for the next buffer to become available for data or status */ + bh = fsg->next_buffhd_to_drain = fsg->next_buffhd_to_fill; + while (bh->state != BUF_STATE_EMPTY) { + rc = sleep_thread(fsg); + if (rc) + return rc; + } + fsg->phase_error = 0; + fsg->short_packet_received = 0; + + down_read(&fsg->filesem); // We're using the backing file + switch (fsg->cmnd[0]) { + + case INQUIRY: + fsg->data_size_from_cmnd = fsg->cmnd[4]; + if ((reply = check_command(fsg, 6, DATA_DIR_TO_HOST, + (1<<4), 0, + "INQUIRY")) == 0) + reply = do_inquiry(fsg, bh); + break; + + case MODE_SELECT: + fsg->data_size_from_cmnd = fsg->cmnd[4]; + if ((reply = check_command(fsg, 6, DATA_DIR_FROM_HOST, + (1<<1) | (1<<4), 0, + "MODE SELECT(6)")) == 0) + reply = do_mode_select(fsg, bh); + break; + + case MODE_SELECT_10: + fsg->data_size_from_cmnd = get_unaligned_be16(&fsg->cmnd[7]); + if ((reply = check_command(fsg, 10, DATA_DIR_FROM_HOST, + (1<<1) | (3<<7), 0, + "MODE SELECT(10)")) == 0) + reply = do_mode_select(fsg, bh); + break; + + case MODE_SENSE: + fsg->data_size_from_cmnd = fsg->cmnd[4]; + if ((reply = check_command(fsg, 6, DATA_DIR_TO_HOST, + (1<<1) | (1<<2) | (1<<4), 0, + "MODE SENSE(6)")) == 0) + reply = do_mode_sense(fsg, bh); + break; + + case MODE_SENSE_10: + fsg->data_size_from_cmnd = get_unaligned_be16(&fsg->cmnd[7]); + if ((reply = check_command(fsg, 10, DATA_DIR_TO_HOST, + (1<<1) | (1<<2) | (3<<7), 0, + "MODE SENSE(10)")) == 0) + reply = do_mode_sense(fsg, bh); + break; + + case ALLOW_MEDIUM_REMOVAL: + fsg->data_size_from_cmnd = 0; + if ((reply = check_command(fsg, 6, DATA_DIR_NONE, + (1<<4), 0, + "PREVENT-ALLOW MEDIUM REMOVAL")) == 0) + reply = do_prevent_allow(fsg); + break; + + case READ_6: + i = fsg->cmnd[4]; + fsg->data_size_from_cmnd = (i == 0) ? 256 : i; + if ((reply = check_command_size_in_blocks(fsg, 6, + DATA_DIR_TO_HOST, + (7<<1) | (1<<4), 1, + "READ(6)")) == 0) + reply = do_read(fsg); + break; + + case READ_10: + fsg->data_size_from_cmnd = get_unaligned_be16(&fsg->cmnd[7]); + if ((reply = check_command_size_in_blocks(fsg, 10, + DATA_DIR_TO_HOST, + (1<<1) | (0xf<<2) | (3<<7), 1, + "READ(10)")) == 0) + reply = do_read(fsg); + break; + + case READ_12: + fsg->data_size_from_cmnd = get_unaligned_be32(&fsg->cmnd[6]); + if ((reply = check_command_size_in_blocks(fsg, 12, + DATA_DIR_TO_HOST, + (1<<1) | (0xf<<2) | (0xf<<6), 1, + "READ(12)")) == 0) + reply = do_read(fsg); + break; + + case READ_CAPACITY: + fsg->data_size_from_cmnd = 8; + if ((reply = check_command(fsg, 10, DATA_DIR_TO_HOST, + (0xf<<2) | (1<<8), 1, + "READ CAPACITY")) == 0) + reply = do_read_capacity(fsg, bh); + break; + + case READ_HEADER: + if (!mod_data.cdrom) + goto unknown_cmnd; + fsg->data_size_from_cmnd = get_unaligned_be16(&fsg->cmnd[7]); + if ((reply = check_command(fsg, 10, DATA_DIR_TO_HOST, + (3<<7) | (0x1f<<1), 1, + "READ HEADER")) == 0) + reply = do_read_header(fsg, bh); + break; + + case READ_TOC: + if (!mod_data.cdrom) + goto unknown_cmnd; + fsg->data_size_from_cmnd = get_unaligned_be16(&fsg->cmnd[7]); + if ((reply = check_command(fsg, 10, DATA_DIR_TO_HOST, + (7<<6) | (1<<1), 1, + "READ TOC")) == 0) + reply = do_read_toc(fsg, bh); + break; + + case READ_FORMAT_CAPACITIES: + fsg->data_size_from_cmnd = get_unaligned_be16(&fsg->cmnd[7]); + if ((reply = check_command(fsg, 10, DATA_DIR_TO_HOST, + (3<<7), 1, + "READ FORMAT CAPACITIES")) == 0) + reply = do_read_format_capacities(fsg, bh); + break; + + case REQUEST_SENSE: + fsg->data_size_from_cmnd = fsg->cmnd[4]; + if ((reply = check_command(fsg, 6, DATA_DIR_TO_HOST, + (1<<4), 0, + "REQUEST SENSE")) == 0) + reply = do_request_sense(fsg, bh); + break; + + case START_STOP: + fsg->data_size_from_cmnd = 0; + if ((reply = check_command(fsg, 6, DATA_DIR_NONE, + (1<<1) | (1<<4), 0, + "START-STOP UNIT")) == 0) + reply = do_start_stop(fsg); + break; + + case SYNCHRONIZE_CACHE: + fsg->data_size_from_cmnd = 0; + if ((reply = check_command(fsg, 10, DATA_DIR_NONE, + (0xf<<2) | (3<<7), 1, + "SYNCHRONIZE CACHE")) == 0) + reply = do_synchronize_cache(fsg); + break; + + case TEST_UNIT_READY: + fsg->data_size_from_cmnd = 0; + reply = check_command(fsg, 6, DATA_DIR_NONE, + 0, 1, + "TEST UNIT READY"); + break; + + /* Although optional, this command is used by MS-Windows. We + * support a minimal version: BytChk must be 0. */ + case VERIFY: + fsg->data_size_from_cmnd = 0; + if ((reply = check_command(fsg, 10, DATA_DIR_NONE, + (1<<1) | (0xf<<2) | (3<<7), 1, + "VERIFY")) == 0) + reply = do_verify(fsg); + break; + + case WRITE_6: + i = fsg->cmnd[4]; + fsg->data_size_from_cmnd = (i == 0) ? 256 : i; + if ((reply = check_command_size_in_blocks(fsg, 6, + DATA_DIR_FROM_HOST, + (7<<1) | (1<<4), 1, + "WRITE(6)")) == 0) + reply = do_write(fsg); + break; + + case WRITE_10: + fsg->data_size_from_cmnd = get_unaligned_be16(&fsg->cmnd[7]); + if ((reply = check_command_size_in_blocks(fsg, 10, + DATA_DIR_FROM_HOST, + (1<<1) | (0xf<<2) | (3<<7), 1, + "WRITE(10)")) == 0) + reply = do_write(fsg); + break; + + case WRITE_12: + fsg->data_size_from_cmnd = get_unaligned_be32(&fsg->cmnd[6]); + if ((reply = check_command_size_in_blocks(fsg, 12, + DATA_DIR_FROM_HOST, + (1<<1) | (0xf<<2) | (0xf<<6), 1, + "WRITE(12)")) == 0) + reply = do_write(fsg); + break; + + /* Some mandatory commands that we recognize but don't implement. + * They don't mean much in this setting. It's left as an exercise + * for anyone interested to implement RESERVE and RELEASE in terms + * of Posix locks. */ + case FORMAT_UNIT: + case RELEASE: + case RESERVE: + case SEND_DIAGNOSTIC: + // Fall through + + default: + unknown_cmnd: + fsg->data_size_from_cmnd = 0; + sprintf(unknown, "Unknown x%02x", fsg->cmnd[0]); + if ((reply = check_command(fsg, fsg->cmnd_size, + DATA_DIR_UNKNOWN, ~0, 0, unknown)) == 0) { + fsg->curlun->sense_data = SS_INVALID_COMMAND; + reply = -EINVAL; + } + break; + } + up_read(&fsg->filesem); + + if (reply == -EINTR || signal_pending(current)) + return -EINTR; + + /* Set up the single reply buffer for finish_reply() */ + if (reply == -EINVAL) + reply = 0; // Error reply length + if (reply >= 0 && fsg->data_dir == DATA_DIR_TO_HOST) { + reply = min((u32) reply, fsg->data_size_from_cmnd); + bh->inreq->length = reply; + bh->state = BUF_STATE_FULL; + fsg->residue -= reply; + } // Otherwise it's already set + + return 0; +} + + +/*-------------------------------------------------------------------------*/ + +static int received_cbw(struct fsg_dev *fsg, struct fsg_buffhd *bh) +{ + struct usb_request *req = bh->outreq; + struct bulk_cb_wrap *cbw = req->buf; + + /* Was this a real packet? Should it be ignored? */ + if (req->status || test_bit(IGNORE_BULK_OUT, &fsg->atomic_bitflags)) + return -EINVAL; + + /* Is the CBW valid? */ + if (req->actual != US_BULK_CB_WRAP_LEN || + cbw->Signature != cpu_to_le32( + US_BULK_CB_SIGN)) { + DBG(fsg, "invalid CBW: len %u sig 0x%x\n", + req->actual, + le32_to_cpu(cbw->Signature)); + + /* The Bulk-only spec says we MUST stall the IN endpoint + * (6.6.1), so it's unavoidable. It also says we must + * retain this state until the next reset, but there's + * no way to tell the controller driver it should ignore + * Clear-Feature(HALT) requests. + * + * We aren't required to halt the OUT endpoint; instead + * we can simply accept and discard any data received + * until the next reset. */ + wedge_bulk_in_endpoint(fsg); + set_bit(IGNORE_BULK_OUT, &fsg->atomic_bitflags); + return -EINVAL; + } + + /* Is the CBW meaningful? */ + if (cbw->Lun >= FSG_MAX_LUNS || cbw->Flags & ~US_BULK_FLAG_IN || + cbw->Length <= 0 || cbw->Length > MAX_COMMAND_SIZE) { + DBG(fsg, "non-meaningful CBW: lun = %u, flags = 0x%x, " + "cmdlen %u\n", + cbw->Lun, cbw->Flags, cbw->Length); + + /* We can do anything we want here, so let's stall the + * bulk pipes if we are allowed to. */ + if (mod_data.can_stall) { + fsg_set_halt(fsg, fsg->bulk_out); + halt_bulk_in_endpoint(fsg); + } + return -EINVAL; + } + + /* Save the command for later */ + fsg->cmnd_size = cbw->Length; + memcpy(fsg->cmnd, cbw->CDB, fsg->cmnd_size); + if (cbw->Flags & US_BULK_FLAG_IN) + fsg->data_dir = DATA_DIR_TO_HOST; + else + fsg->data_dir = DATA_DIR_FROM_HOST; + fsg->data_size = le32_to_cpu(cbw->DataTransferLength); + if (fsg->data_size == 0) + fsg->data_dir = DATA_DIR_NONE; + fsg->lun = cbw->Lun; + fsg->tag = cbw->Tag; + return 0; +} + + +static int get_next_command(struct fsg_dev *fsg) +{ + struct fsg_buffhd *bh; + int rc = 0; + + if (transport_is_bbb()) { + + /* Wait for the next buffer to become available */ + bh = fsg->next_buffhd_to_fill; + while (bh->state != BUF_STATE_EMPTY) { + rc = sleep_thread(fsg); + if (rc) + return rc; + } + + /* Queue a request to read a Bulk-only CBW */ + set_bulk_out_req_length(fsg, bh, US_BULK_CB_WRAP_LEN); + start_transfer(fsg, fsg->bulk_out, bh->outreq, + &bh->outreq_busy, &bh->state); + + /* We will drain the buffer in software, which means we + * can reuse it for the next filling. No need to advance + * next_buffhd_to_fill. */ + + /* Wait for the CBW to arrive */ + while (bh->state != BUF_STATE_FULL) { + rc = sleep_thread(fsg); + if (rc) + return rc; + } + smp_rmb(); + rc = received_cbw(fsg, bh); + bh->state = BUF_STATE_EMPTY; + + } else { // USB_PR_CB or USB_PR_CBI + + /* Wait for the next command to arrive */ + while (fsg->cbbuf_cmnd_size == 0) { + rc = sleep_thread(fsg); + if (rc) + return rc; + } + + /* Is the previous status interrupt request still busy? + * The host is allowed to skip reading the status, + * so we must cancel it. */ + if (fsg->intreq_busy) + usb_ep_dequeue(fsg->intr_in, fsg->intreq); + + /* Copy the command and mark the buffer empty */ + fsg->data_dir = DATA_DIR_UNKNOWN; + spin_lock_irq(&fsg->lock); + fsg->cmnd_size = fsg->cbbuf_cmnd_size; + memcpy(fsg->cmnd, fsg->cbbuf_cmnd, fsg->cmnd_size); + fsg->cbbuf_cmnd_size = 0; + spin_unlock_irq(&fsg->lock); + + /* Use LUN from the command */ + fsg->lun = fsg->cmnd[1] >> 5; + } + + /* Update current lun */ + if (fsg->lun >= 0 && fsg->lun < fsg->nluns) + fsg->curlun = &fsg->luns[fsg->lun]; + else + fsg->curlun = NULL; + + return rc; +} + + +/*-------------------------------------------------------------------------*/ + +static int enable_endpoint(struct fsg_dev *fsg, struct usb_ep *ep, + const struct usb_endpoint_descriptor *d) +{ + int rc; + + ep->driver_data = fsg; + ep->desc = d; + rc = usb_ep_enable(ep); + if (rc) + ERROR(fsg, "can't enable %s, result %d\n", ep->name, rc); + return rc; +} + +static int alloc_request(struct fsg_dev *fsg, struct usb_ep *ep, + struct usb_request **preq) +{ + *preq = usb_ep_alloc_request(ep, GFP_ATOMIC); + if (*preq) + return 0; + ERROR(fsg, "can't allocate request for %s\n", ep->name); + return -ENOMEM; +} + +/* + * Reset interface setting and re-init endpoint state (toggle etc). + * Call with altsetting < 0 to disable the interface. The only other + * available altsetting is 0, which enables the interface. + */ +static int do_set_interface(struct fsg_dev *fsg, int altsetting) +{ + int rc = 0; + int i; + const struct usb_endpoint_descriptor *d; + + if (fsg->running) + DBG(fsg, "reset interface\n"); + +reset: + /* Deallocate the requests */ + for (i = 0; i < fsg_num_buffers; ++i) { + struct fsg_buffhd *bh = &fsg->buffhds[i]; + + if (bh->inreq) { + usb_ep_free_request(fsg->bulk_in, bh->inreq); + bh->inreq = NULL; + } + if (bh->outreq) { + usb_ep_free_request(fsg->bulk_out, bh->outreq); + bh->outreq = NULL; + } + } + if (fsg->intreq) { + usb_ep_free_request(fsg->intr_in, fsg->intreq); + fsg->intreq = NULL; + } + + /* Disable the endpoints */ + if (fsg->bulk_in_enabled) { + usb_ep_disable(fsg->bulk_in); + fsg->bulk_in_enabled = 0; + } + if (fsg->bulk_out_enabled) { + usb_ep_disable(fsg->bulk_out); + fsg->bulk_out_enabled = 0; + } + if (fsg->intr_in_enabled) { + usb_ep_disable(fsg->intr_in); + fsg->intr_in_enabled = 0; + } + + fsg->running = 0; + if (altsetting < 0 || rc != 0) + return rc; + + DBG(fsg, "set interface %d\n", altsetting); + + /* Enable the endpoints */ + d = fsg_ep_desc(fsg->gadget, + &fsg_fs_bulk_in_desc, &fsg_hs_bulk_in_desc, + &fsg_ss_bulk_in_desc); + if ((rc = enable_endpoint(fsg, fsg->bulk_in, d)) != 0) + goto reset; + fsg->bulk_in_enabled = 1; + + d = fsg_ep_desc(fsg->gadget, + &fsg_fs_bulk_out_desc, &fsg_hs_bulk_out_desc, + &fsg_ss_bulk_out_desc); + if ((rc = enable_endpoint(fsg, fsg->bulk_out, d)) != 0) + goto reset; + fsg->bulk_out_enabled = 1; + fsg->bulk_out_maxpacket = usb_endpoint_maxp(d); + clear_bit(IGNORE_BULK_OUT, &fsg->atomic_bitflags); + + if (transport_is_cbi()) { + d = fsg_ep_desc(fsg->gadget, + &fsg_fs_intr_in_desc, &fsg_hs_intr_in_desc, + &fsg_ss_intr_in_desc); + if ((rc = enable_endpoint(fsg, fsg->intr_in, d)) != 0) + goto reset; + fsg->intr_in_enabled = 1; + } + + /* Allocate the requests */ + for (i = 0; i < fsg_num_buffers; ++i) { + struct fsg_buffhd *bh = &fsg->buffhds[i]; + + if ((rc = alloc_request(fsg, fsg->bulk_in, &bh->inreq)) != 0) + goto reset; + if ((rc = alloc_request(fsg, fsg->bulk_out, &bh->outreq)) != 0) + goto reset; + bh->inreq->buf = bh->outreq->buf = bh->buf; + bh->inreq->context = bh->outreq->context = bh; + bh->inreq->complete = bulk_in_complete; + bh->outreq->complete = bulk_out_complete; + } + if (transport_is_cbi()) { + if ((rc = alloc_request(fsg, fsg->intr_in, &fsg->intreq)) != 0) + goto reset; + fsg->intreq->complete = intr_in_complete; + } + + fsg->running = 1; + for (i = 0; i < fsg->nluns; ++i) + fsg->luns[i].unit_attention_data = SS_RESET_OCCURRED; + return rc; +} + + +/* + * Change our operational configuration. This code must agree with the code + * that returns config descriptors, and with interface altsetting code. + * + * It's also responsible for power management interactions. Some + * configurations might not work with our current power sources. + * For now we just assume the gadget is always self-powered. + */ +static int do_set_config(struct fsg_dev *fsg, u8 new_config) +{ + int rc = 0; + + /* Disable the single interface */ + if (fsg->config != 0) { + DBG(fsg, "reset config\n"); + fsg->config = 0; + rc = do_set_interface(fsg, -1); + } + + /* Enable the interface */ + if (new_config != 0) { + fsg->config = new_config; + if ((rc = do_set_interface(fsg, 0)) != 0) + fsg->config = 0; // Reset on errors + else + INFO(fsg, "%s config #%d\n", + usb_speed_string(fsg->gadget->speed), + fsg->config); + } + return rc; +} + + +/*-------------------------------------------------------------------------*/ + +static void handle_exception(struct fsg_dev *fsg) +{ + siginfo_t info; + int sig; + int i; + int num_active; + struct fsg_buffhd *bh; + enum fsg_state old_state; + u8 new_config; + struct fsg_lun *curlun; + unsigned int exception_req_tag; + int rc; + + /* Clear the existing signals. Anything but SIGUSR1 is converted + * into a high-priority EXIT exception. */ + for (;;) { + sig = dequeue_signal_lock(current, ¤t->blocked, &info); + if (!sig) + break; + if (sig != SIGUSR1) { + if (fsg->state < FSG_STATE_EXIT) + DBG(fsg, "Main thread exiting on signal\n"); + raise_exception(fsg, FSG_STATE_EXIT); + } + } + + /* Cancel all the pending transfers */ + if (fsg->intreq_busy) + usb_ep_dequeue(fsg->intr_in, fsg->intreq); + for (i = 0; i < fsg_num_buffers; ++i) { + bh = &fsg->buffhds[i]; + if (bh->inreq_busy) + usb_ep_dequeue(fsg->bulk_in, bh->inreq); + if (bh->outreq_busy) + usb_ep_dequeue(fsg->bulk_out, bh->outreq); + } + + /* Wait until everything is idle */ + for (;;) { + num_active = fsg->intreq_busy; + for (i = 0; i < fsg_num_buffers; ++i) { + bh = &fsg->buffhds[i]; + num_active += bh->inreq_busy + bh->outreq_busy; + } + if (num_active == 0) + break; + if (sleep_thread(fsg)) + return; + } + + /* Clear out the controller's fifos */ + if (fsg->bulk_in_enabled) + usb_ep_fifo_flush(fsg->bulk_in); + if (fsg->bulk_out_enabled) + usb_ep_fifo_flush(fsg->bulk_out); + if (fsg->intr_in_enabled) + usb_ep_fifo_flush(fsg->intr_in); + + /* Reset the I/O buffer states and pointers, the SCSI + * state, and the exception. Then invoke the handler. */ + spin_lock_irq(&fsg->lock); + + for (i = 0; i < fsg_num_buffers; ++i) { + bh = &fsg->buffhds[i]; + bh->state = BUF_STATE_EMPTY; + } + fsg->next_buffhd_to_fill = fsg->next_buffhd_to_drain = + &fsg->buffhds[0]; + + exception_req_tag = fsg->exception_req_tag; + new_config = fsg->new_config; + old_state = fsg->state; + + if (old_state == FSG_STATE_ABORT_BULK_OUT) + fsg->state = FSG_STATE_STATUS_PHASE; + else { + for (i = 0; i < fsg->nluns; ++i) { + curlun = &fsg->luns[i]; + curlun->prevent_medium_removal = 0; + curlun->sense_data = curlun->unit_attention_data = + SS_NO_SENSE; + curlun->sense_data_info = 0; + curlun->info_valid = 0; + } + fsg->state = FSG_STATE_IDLE; + } + spin_unlock_irq(&fsg->lock); + + /* Carry out any extra actions required for the exception */ + switch (old_state) { + default: + break; + + case FSG_STATE_ABORT_BULK_OUT: + send_status(fsg); + spin_lock_irq(&fsg->lock); + if (fsg->state == FSG_STATE_STATUS_PHASE) + fsg->state = FSG_STATE_IDLE; + spin_unlock_irq(&fsg->lock); + break; + + case FSG_STATE_RESET: + /* In case we were forced against our will to halt a + * bulk endpoint, clear the halt now. (The SuperH UDC + * requires this.) */ + if (test_and_clear_bit(IGNORE_BULK_OUT, &fsg->atomic_bitflags)) + usb_ep_clear_halt(fsg->bulk_in); + + if (transport_is_bbb()) { + if (fsg->ep0_req_tag == exception_req_tag) + ep0_queue(fsg); // Complete the status stage + + } else if (transport_is_cbi()) + send_status(fsg); // Status by interrupt pipe + + /* Technically this should go here, but it would only be + * a waste of time. Ditto for the INTERFACE_CHANGE and + * CONFIG_CHANGE cases. */ + // for (i = 0; i < fsg->nluns; ++i) + // fsg->luns[i].unit_attention_data = SS_RESET_OCCURRED; + break; + + case FSG_STATE_INTERFACE_CHANGE: + rc = do_set_interface(fsg, 0); + if (fsg->ep0_req_tag != exception_req_tag) + break; + if (rc != 0) // STALL on errors + fsg_set_halt(fsg, fsg->ep0); + else // Complete the status stage + ep0_queue(fsg); + break; + + case FSG_STATE_CONFIG_CHANGE: + rc = do_set_config(fsg, new_config); + if (fsg->ep0_req_tag != exception_req_tag) + break; + if (rc != 0) // STALL on errors + fsg_set_halt(fsg, fsg->ep0); + else // Complete the status stage + ep0_queue(fsg); + break; + + case FSG_STATE_DISCONNECT: + for (i = 0; i < fsg->nluns; ++i) + fsg_lun_fsync_sub(fsg->luns + i); + do_set_config(fsg, 0); // Unconfigured state + break; + + case FSG_STATE_EXIT: + case FSG_STATE_TERMINATED: + do_set_config(fsg, 0); // Free resources + spin_lock_irq(&fsg->lock); + fsg->state = FSG_STATE_TERMINATED; // Stop the thread + spin_unlock_irq(&fsg->lock); + break; + } +} + + +/*-------------------------------------------------------------------------*/ + +static int fsg_main_thread(void *fsg_) +{ + struct fsg_dev *fsg = fsg_; + + /* Allow the thread to be killed by a signal, but set the signal mask + * to block everything but INT, TERM, KILL, and USR1. */ + allow_signal(SIGINT); + allow_signal(SIGTERM); + allow_signal(SIGKILL); + allow_signal(SIGUSR1); + + /* Allow the thread to be frozen */ + set_freezable(); + + /* Arrange for userspace references to be interpreted as kernel + * pointers. That way we can pass a kernel pointer to a routine + * that expects a __user pointer and it will work okay. */ + set_fs(get_ds()); + + /* The main loop */ + while (fsg->state != FSG_STATE_TERMINATED) { + if (exception_in_progress(fsg) || signal_pending(current)) { + handle_exception(fsg); + continue; + } + + if (!fsg->running) { + sleep_thread(fsg); + continue; + } + + if (get_next_command(fsg)) + continue; + + spin_lock_irq(&fsg->lock); + if (!exception_in_progress(fsg)) + fsg->state = FSG_STATE_DATA_PHASE; + spin_unlock_irq(&fsg->lock); + + if (do_scsi_command(fsg) || finish_reply(fsg)) + continue; + + spin_lock_irq(&fsg->lock); + if (!exception_in_progress(fsg)) + fsg->state = FSG_STATE_STATUS_PHASE; + spin_unlock_irq(&fsg->lock); + + if (send_status(fsg)) + continue; + + spin_lock_irq(&fsg->lock); + if (!exception_in_progress(fsg)) + fsg->state = FSG_STATE_IDLE; + spin_unlock_irq(&fsg->lock); + } + + spin_lock_irq(&fsg->lock); + fsg->thread_task = NULL; + spin_unlock_irq(&fsg->lock); + + /* If we are exiting because of a signal, unregister the + * gadget driver. */ + if (test_and_clear_bit(REGISTERED, &fsg->atomic_bitflags)) + usb_gadget_unregister_driver(&fsg_driver); + + /* Let the unbind and cleanup routines know the thread has exited */ + complete_and_exit(&fsg->thread_notifier, 0); +} + + +/*-------------------------------------------------------------------------*/ + + +/* The write permissions and store_xxx pointers are set in fsg_bind() */ +static DEVICE_ATTR(ro, 0444, fsg_show_ro, NULL); +static DEVICE_ATTR(nofua, 0644, fsg_show_nofua, NULL); +static DEVICE_ATTR(file, 0444, fsg_show_file, NULL); + + +/*-------------------------------------------------------------------------*/ + +static void fsg_release(struct kref *ref) +{ + struct fsg_dev *fsg = container_of(ref, struct fsg_dev, ref); + + kfree(fsg->luns); + kfree(fsg); +} + +static void lun_release(struct device *dev) +{ + struct rw_semaphore *filesem = dev_get_drvdata(dev); + struct fsg_dev *fsg = + container_of(filesem, struct fsg_dev, filesem); + + kref_put(&fsg->ref, fsg_release); +} + +static void /* __init_or_exit */ fsg_unbind(struct usb_gadget *gadget) +{ + struct fsg_dev *fsg = get_gadget_data(gadget); + int i; + struct fsg_lun *curlun; + struct usb_request *req = fsg->ep0req; + + DBG(fsg, "unbind\n"); + clear_bit(REGISTERED, &fsg->atomic_bitflags); + + /* If the thread isn't already dead, tell it to exit now */ + if (fsg->state != FSG_STATE_TERMINATED) { + raise_exception(fsg, FSG_STATE_EXIT); + wait_for_completion(&fsg->thread_notifier); + + /* The cleanup routine waits for this completion also */ + complete(&fsg->thread_notifier); + } + + /* Unregister the sysfs attribute files and the LUNs */ + for (i = 0; i < fsg->nluns; ++i) { + curlun = &fsg->luns[i]; + if (curlun->registered) { + device_remove_file(&curlun->dev, &dev_attr_nofua); + device_remove_file(&curlun->dev, &dev_attr_ro); + device_remove_file(&curlun->dev, &dev_attr_file); + fsg_lun_close(curlun); + device_unregister(&curlun->dev); + curlun->registered = 0; + } + } + + /* Free the data buffers */ + for (i = 0; i < fsg_num_buffers; ++i) + kfree(fsg->buffhds[i].buf); + + /* Free the request and buffer for endpoint 0 */ + if (req) { + kfree(req->buf); + usb_ep_free_request(fsg->ep0, req); + } + + set_gadget_data(gadget, NULL); +} + + +static int __init check_parameters(struct fsg_dev *fsg) +{ + int prot; + int gcnum; + + /* Store the default values */ + mod_data.transport_type = USB_PR_BULK; + mod_data.transport_name = "Bulk-only"; + mod_data.protocol_type = USB_SC_SCSI; + mod_data.protocol_name = "Transparent SCSI"; + + /* Some peripheral controllers are known not to be able to + * halt bulk endpoints correctly. If one of them is present, + * disable stalls. + */ + if (gadget_is_at91(fsg->gadget)) + mod_data.can_stall = 0; + + if (mod_data.release == 0xffff) { // Parameter wasn't set + gcnum = usb_gadget_controller_number(fsg->gadget); + if (gcnum >= 0) + mod_data.release = 0x0300 + gcnum; + else { + WARNING(fsg, "controller '%s' not recognized\n", + fsg->gadget->name); + mod_data.release = 0x0399; + } + } + + prot = simple_strtol(mod_data.protocol_parm, NULL, 0); + +#ifdef CONFIG_USB_FILE_STORAGE_TEST + if (strnicmp(mod_data.transport_parm, "BBB", 10) == 0) { + ; // Use default setting + } else if (strnicmp(mod_data.transport_parm, "CB", 10) == 0) { + mod_data.transport_type = USB_PR_CB; + mod_data.transport_name = "Control-Bulk"; + } else if (strnicmp(mod_data.transport_parm, "CBI", 10) == 0) { + mod_data.transport_type = USB_PR_CBI; + mod_data.transport_name = "Control-Bulk-Interrupt"; + } else { + ERROR(fsg, "invalid transport: %s\n", mod_data.transport_parm); + return -EINVAL; + } + + if (strnicmp(mod_data.protocol_parm, "SCSI", 10) == 0 || + prot == USB_SC_SCSI) { + ; // Use default setting + } else if (strnicmp(mod_data.protocol_parm, "RBC", 10) == 0 || + prot == USB_SC_RBC) { + mod_data.protocol_type = USB_SC_RBC; + mod_data.protocol_name = "RBC"; + } else if (strnicmp(mod_data.protocol_parm, "8020", 4) == 0 || + strnicmp(mod_data.protocol_parm, "ATAPI", 10) == 0 || + prot == USB_SC_8020) { + mod_data.protocol_type = USB_SC_8020; + mod_data.protocol_name = "8020i (ATAPI)"; + } else if (strnicmp(mod_data.protocol_parm, "QIC", 3) == 0 || + prot == USB_SC_QIC) { + mod_data.protocol_type = USB_SC_QIC; + mod_data.protocol_name = "QIC-157"; + } else if (strnicmp(mod_data.protocol_parm, "UFI", 10) == 0 || + prot == USB_SC_UFI) { + mod_data.protocol_type = USB_SC_UFI; + mod_data.protocol_name = "UFI"; + } else if (strnicmp(mod_data.protocol_parm, "8070", 4) == 0 || + prot == USB_SC_8070) { + mod_data.protocol_type = USB_SC_8070; + mod_data.protocol_name = "8070i"; + } else { + ERROR(fsg, "invalid protocol: %s\n", mod_data.protocol_parm); + return -EINVAL; + } + + mod_data.buflen &= PAGE_CACHE_MASK; + if (mod_data.buflen <= 0) { + ERROR(fsg, "invalid buflen\n"); + return -ETOOSMALL; + } + +#endif /* CONFIG_USB_FILE_STORAGE_TEST */ + + /* Serial string handling. + * On a real device, the serial string would be loaded + * from permanent storage. */ + if (mod_data.serial) { + const char *ch; + unsigned len = 0; + + /* Sanity check : + * The CB[I] specification limits the serial string to + * 12 uppercase hexadecimal characters. + * BBB need at least 12 uppercase hexadecimal characters, + * with a maximum of 126. */ + for (ch = mod_data.serial; *ch; ++ch) { + ++len; + if ((*ch < '0' || *ch > '9') && + (*ch < 'A' || *ch > 'F')) { /* not uppercase hex */ + WARNING(fsg, + "Invalid serial string character: %c\n", + *ch); + goto no_serial; + } + } + if (len > 126 || + (mod_data.transport_type == USB_PR_BULK && len < 12) || + (mod_data.transport_type != USB_PR_BULK && len > 12)) { + WARNING(fsg, "Invalid serial string length!\n"); + goto no_serial; + } + fsg_strings[FSG_STRING_SERIAL - 1].s = mod_data.serial; + } else { + WARNING(fsg, "No serial-number string provided!\n"); + no_serial: + device_desc.iSerialNumber = 0; + } + + return 0; +} + + +static int __init fsg_bind(struct usb_gadget *gadget) +{ + struct fsg_dev *fsg = the_fsg; + int rc; + int i; + struct fsg_lun *curlun; + struct usb_ep *ep; + struct usb_request *req; + char *pathbuf, *p; + + fsg->gadget = gadget; + set_gadget_data(gadget, fsg); + fsg->ep0 = gadget->ep0; + fsg->ep0->driver_data = fsg; + + if ((rc = check_parameters(fsg)) != 0) + goto out; + + if (mod_data.removable) { // Enable the store_xxx attributes + dev_attr_file.attr.mode = 0644; + dev_attr_file.store = fsg_store_file; + if (!mod_data.cdrom) { + dev_attr_ro.attr.mode = 0644; + dev_attr_ro.store = fsg_store_ro; + } + } + + /* Only for removable media? */ + dev_attr_nofua.attr.mode = 0644; + dev_attr_nofua.store = fsg_store_nofua; + + /* Find out how many LUNs there should be */ + i = mod_data.nluns; + if (i == 0) + i = max(mod_data.num_filenames, 1u); + if (i > FSG_MAX_LUNS) { + ERROR(fsg, "invalid number of LUNs: %d\n", i); + rc = -EINVAL; + goto out; + } + + /* Create the LUNs, open their backing files, and register the + * LUN devices in sysfs. */ + fsg->luns = kzalloc(i * sizeof(struct fsg_lun), GFP_KERNEL); + if (!fsg->luns) { + rc = -ENOMEM; + goto out; + } + fsg->nluns = i; + + for (i = 0; i < fsg->nluns; ++i) { + curlun = &fsg->luns[i]; + curlun->cdrom = !!mod_data.cdrom; + curlun->ro = mod_data.cdrom || mod_data.ro[i]; + curlun->initially_ro = curlun->ro; + curlun->removable = mod_data.removable; + curlun->nofua = mod_data.nofua[i]; + curlun->dev.release = lun_release; + curlun->dev.parent = &gadget->dev; + curlun->dev.driver = &fsg_driver.driver; + dev_set_drvdata(&curlun->dev, &fsg->filesem); + dev_set_name(&curlun->dev,"%s-lun%d", + dev_name(&gadget->dev), i); + + kref_get(&fsg->ref); + rc = device_register(&curlun->dev); + if (rc) { + INFO(fsg, "failed to register LUN%d: %d\n", i, rc); + put_device(&curlun->dev); + goto out; + } + curlun->registered = 1; + + rc = device_create_file(&curlun->dev, &dev_attr_ro); + if (rc) + goto out; + rc = device_create_file(&curlun->dev, &dev_attr_nofua); + if (rc) + goto out; + rc = device_create_file(&curlun->dev, &dev_attr_file); + if (rc) + goto out; + + if (mod_data.file[i] && *mod_data.file[i]) { + rc = fsg_lun_open(curlun, mod_data.file[i]); + if (rc) + goto out; + } else if (!mod_data.removable) { + ERROR(fsg, "no file given for LUN%d\n", i); + rc = -EINVAL; + goto out; + } + } + + /* Find all the endpoints we will use */ + usb_ep_autoconfig_reset(gadget); + ep = usb_ep_autoconfig(gadget, &fsg_fs_bulk_in_desc); + if (!ep) + goto autoconf_fail; + ep->driver_data = fsg; // claim the endpoint + fsg->bulk_in = ep; + + ep = usb_ep_autoconfig(gadget, &fsg_fs_bulk_out_desc); + if (!ep) + goto autoconf_fail; + ep->driver_data = fsg; // claim the endpoint + fsg->bulk_out = ep; + + if (transport_is_cbi()) { + ep = usb_ep_autoconfig(gadget, &fsg_fs_intr_in_desc); + if (!ep) + goto autoconf_fail; + ep->driver_data = fsg; // claim the endpoint + fsg->intr_in = ep; + } + + /* Fix up the descriptors */ + device_desc.idVendor = cpu_to_le16(mod_data.vendor); + device_desc.idProduct = cpu_to_le16(mod_data.product); + device_desc.bcdDevice = cpu_to_le16(mod_data.release); + + i = (transport_is_cbi() ? 3 : 2); // Number of endpoints + fsg_intf_desc.bNumEndpoints = i; + fsg_intf_desc.bInterfaceSubClass = mod_data.protocol_type; + fsg_intf_desc.bInterfaceProtocol = mod_data.transport_type; + fsg_fs_function[i + FSG_FS_FUNCTION_PRE_EP_ENTRIES] = NULL; + + if (gadget_is_dualspeed(gadget)) { + fsg_hs_function[i + FSG_HS_FUNCTION_PRE_EP_ENTRIES] = NULL; + + /* Assume endpoint addresses are the same for both speeds */ + fsg_hs_bulk_in_desc.bEndpointAddress = + fsg_fs_bulk_in_desc.bEndpointAddress; + fsg_hs_bulk_out_desc.bEndpointAddress = + fsg_fs_bulk_out_desc.bEndpointAddress; + fsg_hs_intr_in_desc.bEndpointAddress = + fsg_fs_intr_in_desc.bEndpointAddress; + } + + if (gadget_is_superspeed(gadget)) { + unsigned max_burst; + + fsg_ss_function[i + FSG_SS_FUNCTION_PRE_EP_ENTRIES] = NULL; + + /* Calculate bMaxBurst, we know packet size is 1024 */ + max_burst = min_t(unsigned, mod_data.buflen / 1024, 15); + + /* Assume endpoint addresses are the same for both speeds */ + fsg_ss_bulk_in_desc.bEndpointAddress = + fsg_fs_bulk_in_desc.bEndpointAddress; + fsg_ss_bulk_in_comp_desc.bMaxBurst = max_burst; + + fsg_ss_bulk_out_desc.bEndpointAddress = + fsg_fs_bulk_out_desc.bEndpointAddress; + fsg_ss_bulk_out_comp_desc.bMaxBurst = max_burst; + } + + if (gadget_is_otg(gadget)) + fsg_otg_desc.bmAttributes |= USB_OTG_HNP; + + rc = -ENOMEM; + + /* Allocate the request and buffer for endpoint 0 */ + fsg->ep0req = req = usb_ep_alloc_request(fsg->ep0, GFP_KERNEL); + if (!req) + goto out; + req->buf = kmalloc(EP0_BUFSIZE, GFP_KERNEL); + if (!req->buf) + goto out; + req->complete = ep0_complete; + + /* Allocate the data buffers */ + for (i = 0; i < fsg_num_buffers; ++i) { + struct fsg_buffhd *bh = &fsg->buffhds[i]; + + /* Allocate for the bulk-in endpoint. We assume that + * the buffer will also work with the bulk-out (and + * interrupt-in) endpoint. */ + bh->buf = kmalloc(mod_data.buflen, GFP_KERNEL); + if (!bh->buf) + goto out; + bh->next = bh + 1; + } + fsg->buffhds[fsg_num_buffers - 1].next = &fsg->buffhds[0]; + + /* This should reflect the actual gadget power source */ + usb_gadget_set_selfpowered(gadget); + + snprintf(fsg_string_manufacturer, sizeof fsg_string_manufacturer, + "%s %s with %s", + init_utsname()->sysname, init_utsname()->release, + gadget->name); + + fsg->thread_task = kthread_create(fsg_main_thread, fsg, + "file-storage-gadget"); + if (IS_ERR(fsg->thread_task)) { + rc = PTR_ERR(fsg->thread_task); + goto out; + } + + INFO(fsg, DRIVER_DESC ", version: " DRIVER_VERSION "\n"); + INFO(fsg, "NOTE: This driver is deprecated. " + "Consider using g_mass_storage instead.\n"); + INFO(fsg, "Number of LUNs=%d\n", fsg->nluns); + + pathbuf = kmalloc(PATH_MAX, GFP_KERNEL); + for (i = 0; i < fsg->nluns; ++i) { + curlun = &fsg->luns[i]; + if (fsg_lun_is_open(curlun)) { + p = NULL; + if (pathbuf) { + p = d_path(&curlun->filp->f_path, + pathbuf, PATH_MAX); + if (IS_ERR(p)) + p = NULL; + } + LINFO(curlun, "ro=%d, nofua=%d, file: %s\n", + curlun->ro, curlun->nofua, (p ? p : "(error)")); + } + } + kfree(pathbuf); + + DBG(fsg, "transport=%s (x%02x)\n", + mod_data.transport_name, mod_data.transport_type); + DBG(fsg, "protocol=%s (x%02x)\n", + mod_data.protocol_name, mod_data.protocol_type); + DBG(fsg, "VendorID=x%04x, ProductID=x%04x, Release=x%04x\n", + mod_data.vendor, mod_data.product, mod_data.release); + DBG(fsg, "removable=%d, stall=%d, cdrom=%d, buflen=%u\n", + mod_data.removable, mod_data.can_stall, + mod_data.cdrom, mod_data.buflen); + DBG(fsg, "I/O thread pid: %d\n", task_pid_nr(fsg->thread_task)); + + set_bit(REGISTERED, &fsg->atomic_bitflags); + + /* Tell the thread to start working */ + wake_up_process(fsg->thread_task); + return 0; + +autoconf_fail: + ERROR(fsg, "unable to autoconfigure all endpoints\n"); + rc = -ENOTSUPP; + +out: + fsg->state = FSG_STATE_TERMINATED; // The thread is dead + fsg_unbind(gadget); + complete(&fsg->thread_notifier); + return rc; +} + + +/*-------------------------------------------------------------------------*/ + +static void fsg_suspend(struct usb_gadget *gadget) +{ + struct fsg_dev *fsg = get_gadget_data(gadget); + + DBG(fsg, "suspend\n"); + set_bit(SUSPENDED, &fsg->atomic_bitflags); +} + +static void fsg_resume(struct usb_gadget *gadget) +{ + struct fsg_dev *fsg = get_gadget_data(gadget); + + DBG(fsg, "resume\n"); + clear_bit(SUSPENDED, &fsg->atomic_bitflags); +} + + +/*-------------------------------------------------------------------------*/ + +static struct usb_gadget_driver fsg_driver = { + .max_speed = USB_SPEED_SUPER, + .function = (char *) fsg_string_product, + .unbind = fsg_unbind, + .disconnect = fsg_disconnect, + .setup = fsg_setup, + .suspend = fsg_suspend, + .resume = fsg_resume, + + .driver = { + .name = DRIVER_NAME, + .owner = THIS_MODULE, + // .release = ... + // .suspend = ... + // .resume = ... + }, +}; + + +static int __init fsg_alloc(void) +{ + struct fsg_dev *fsg; + + fsg = kzalloc(sizeof *fsg + + fsg_num_buffers * sizeof *(fsg->buffhds), GFP_KERNEL); + + if (!fsg) + return -ENOMEM; + spin_lock_init(&fsg->lock); + init_rwsem(&fsg->filesem); + kref_init(&fsg->ref); + init_completion(&fsg->thread_notifier); + + the_fsg = fsg; + return 0; +} + + +static int __init fsg_init(void) +{ + int rc; + struct fsg_dev *fsg; + + rc = fsg_num_buffers_validate(); + if (rc != 0) + return rc; + + if ((rc = fsg_alloc()) != 0) + return rc; + fsg = the_fsg; + if ((rc = usb_gadget_probe_driver(&fsg_driver, fsg_bind)) != 0) + kref_put(&fsg->ref, fsg_release); + return rc; +} +module_init(fsg_init); + + +static void __exit fsg_cleanup(void) +{ + struct fsg_dev *fsg = the_fsg; + + /* Unregister the driver iff the thread hasn't already done so */ + if (test_and_clear_bit(REGISTERED, &fsg->atomic_bitflags)) + usb_gadget_unregister_driver(&fsg_driver); + + /* Wait for the thread to finish up */ + wait_for_completion(&fsg->thread_notifier); + + kref_put(&fsg->ref, fsg_release); +} +module_exit(fsg_cleanup); --- linux-raspi2-4.2.0.orig/drivers/usb/gadget/function/f_uac2.c +++ linux-raspi2-4.2.0/drivers/usb/gadget/function/f_uac2.c @@ -975,6 +975,29 @@ "%s:%d Error!\n", __func__, __LINE__); } +static void set_ep_max_packet_size(const struct f_uac2_opts *uac2_opts, + struct usb_endpoint_descriptor *ep_desc, + unsigned int factor, bool is_playback) +{ + int chmask, srate, ssize; + u16 max_packet_size; + + if (is_playback) { + chmask = uac2_opts->p_chmask; + srate = uac2_opts->p_srate; + ssize = uac2_opts->p_ssize; + } else { + chmask = uac2_opts->c_chmask; + srate = uac2_opts->c_srate; + 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(max_packet_size, + le16_to_cpu(ep_desc->wMaxPacketSize))); +} + static int afunc_bind(struct usb_configuration *cfg, struct usb_function *fn) { @@ -1070,10 +1093,14 @@ uac2->p_prm.uac2 = uac2; uac2->c_prm.uac2 = uac2; + /* 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); + hs_epout_desc.bEndpointAddress = fs_epout_desc.bEndpointAddress; - hs_epout_desc.wMaxPacketSize = fs_epout_desc.wMaxPacketSize; hs_epin_desc.bEndpointAddress = fs_epin_desc.bEndpointAddress; - hs_epin_desc.wMaxPacketSize = fs_epin_desc.wMaxPacketSize; ret = usb_assign_descriptors(fn, fs_audio_desc, hs_audio_desc, NULL); if (ret) --- linux-raspi2-4.2.0.orig/drivers/usb/gadget/udc/atmel_usba_udc.c +++ linux-raspi2-4.2.0/drivers/usb/gadget/udc/atmel_usba_udc.c @@ -1634,7 +1634,7 @@ spin_lock(&udc->lock); int_enb = usba_int_enb_get(udc); - status = usba_readl(udc, INT_STA) & int_enb; + status = usba_readl(udc, INT_STA) & (int_enb | USBA_HIGH_SPEED); DBG(DBG_INT, "irq, status=%#08x\n", status); if (status & USBA_DET_SUSPEND) { --- linux-raspi2-4.2.0.orig/drivers/usb/gadget/udc/m66592-udc.c +++ linux-raspi2-4.2.0/drivers/usb/gadget/udc/m66592-udc.c @@ -1052,7 +1052,7 @@ tmp = m66592_read(m66592, M66592_INTSTS0) & M66592_CTSQ; udelay(1); - } while (tmp != M66592_CS_IDST || timeout-- > 0); + } while (tmp != M66592_CS_IDST && timeout-- > 0); if (tmp == M66592_CS_IDST) m66592_bset(m66592, --- linux-raspi2-4.2.0.orig/drivers/usb/gadget/udc/net2280.c +++ linux-raspi2-4.2.0/drivers/usb/gadget/udc/net2280.c @@ -1846,7 +1846,7 @@ for (i = 1; i < 5; i++) { ep = &dev->ep[i]; - writel(0, &ep->cfg->ep_cfg); + writel(i, &ep->cfg->ep_cfg); } /* CSROUT, CSRIN, PCIOUT, PCIIN, STATIN, RCIN */ --- linux-raspi2-4.2.0.orig/drivers/usb/host/Kconfig +++ linux-raspi2-4.2.0/drivers/usb/host/Kconfig @@ -738,6 +738,19 @@ To compile this driver a module, choose M here: the module will be called "hwa-hc". +config USB_DWCOTG + tristate "Synopsis DWC host support" + depends on USB + help + The Synopsis DWC controller is a dual-role + host/peripheral/OTG ("On The Go") USB controllers. + + Enable this option to support this IP in host controller mode. + If unsure, say N. + + To compile this driver as a module, choose M here: the + modules built will be called dwc_otg and dwc_common_port. + config USB_IMX21_HCD tristate "i.MX21 HCD support" depends on ARM && ARCH_MXC --- linux-raspi2-4.2.0.orig/drivers/usb/host/Makefile +++ linux-raspi2-4.2.0/drivers/usb/host/Makefile @@ -70,6 +70,8 @@ obj-$(CONFIG_USB_U132_HCD) += u132-hcd.o obj-$(CONFIG_USB_R8A66597_HCD) += r8a66597-hcd.o obj-$(CONFIG_USB_HWA_HCD) += hwa-hc.o + +obj-$(CONFIG_USB_DWCOTG) += dwc_otg/ dwc_common_port/ obj-$(CONFIG_USB_IMX21_HCD) += imx21-hcd.o obj-$(CONFIG_USB_FSL_MPH_DR_OF) += fsl-mph-dr-of.o obj-$(CONFIG_USB_EHCI_FSL) += ehci-fsl.o --- linux-raspi2-4.2.0.orig/drivers/usb/host/dwc_common_port/Makefile +++ linux-raspi2-4.2.0/drivers/usb/host/dwc_common_port/Makefile @@ -0,0 +1,58 @@ +# +# Makefile for DWC_common library +# + +ifneq ($(KERNELRELEASE),) + +ccflags-y += -DDWC_LINUX +#ccflags-y += -DDEBUG +#ccflags-y += -DDWC_DEBUG_REGS +#ccflags-y += -DDWC_DEBUG_MEMORY + +ccflags-y += -DDWC_LIBMODULE +ccflags-y += -DDWC_CCLIB +#ccflags-y += -DDWC_CRYPTOLIB +ccflags-y += -DDWC_NOTIFYLIB +ccflags-y += -DDWC_UTFLIB + +obj-$(CONFIG_USB_DWCOTG) += dwc_common_port_lib.o +dwc_common_port_lib-objs := dwc_cc.o dwc_modpow.o dwc_dh.o \ + dwc_crypto.o dwc_notifier.o \ + dwc_common_linux.o dwc_mem.o + +kernrelwd := $(subst ., ,$(KERNELRELEASE)) +kernrel3 := $(word 1,$(kernrelwd)).$(word 2,$(kernrelwd)).$(word 3,$(kernrelwd)) + +ifneq ($(kernrel3),2.6.20) +# grayg - I only know that we use ccflags-y in 2.6.31 actually +ccflags-y += $(CPPFLAGS) +endif + +else + +#ifeq ($(KDIR),) +#$(error Must give "KDIR=/path/to/kernel/source" on command line or in environment) +#endif + +ifeq ($(ARCH),) +$(error Must give "ARCH=" on command line or in environment. Also, if \ + cross-compiling, must give "CROSS_COMPILE=/path/to/compiler/plus/tool-prefix-") +endif + +ifeq ($(DOXYGEN),) +DOXYGEN := doxygen +endif + +default: + $(MAKE) -C$(KDIR) M=$(PWD) ARCH=$(ARCH) CROSS_COMPILE=$(CROSS_COMPILE) modules + +docs: $(wildcard *.[hc]) doc/doxygen.cfg + $(DOXYGEN) doc/doxygen.cfg + +tags: $(wildcard *.[hc]) + $(CTAGS) -e $(wildcard *.[hc]) $(wildcard linux/*.[hc]) $(wildcard $(KDIR)/include/linux/usb*.h) + +endif + +clean: + rm -rf *.o *.ko .*.cmd *.mod.c .*.o.d .*.o.tmp modules.order Module.markers Module.symvers .tmp_versions/ --- linux-raspi2-4.2.0.orig/drivers/usb/host/dwc_common_port/Makefile.fbsd +++ linux-raspi2-4.2.0/drivers/usb/host/dwc_common_port/Makefile.fbsd @@ -0,0 +1,17 @@ +CFLAGS += -I/sys/i386/compile/GENERIC -I/sys/i386/include -I/usr/include +CFLAGS += -DDWC_FREEBSD +CFLAGS += -DDEBUG +#CFLAGS += -DDWC_DEBUG_REGS +#CFLAGS += -DDWC_DEBUG_MEMORY + +#CFLAGS += -DDWC_LIBMODULE +#CFLAGS += -DDWC_CCLIB +#CFLAGS += -DDWC_CRYPTOLIB +#CFLAGS += -DDWC_NOTIFYLIB +#CFLAGS += -DDWC_UTFLIB + +KMOD = dwc_common_port_lib +SRCS = dwc_cc.c dwc_modpow.c dwc_dh.c dwc_crypto.c dwc_notifier.c \ + dwc_common_fbsd.c dwc_mem.c + +.include --- linux-raspi2-4.2.0.orig/drivers/usb/host/dwc_common_port/Makefile.linux +++ linux-raspi2-4.2.0/drivers/usb/host/dwc_common_port/Makefile.linux @@ -0,0 +1,49 @@ +# +# Makefile for DWC_common library +# +ifneq ($(KERNELRELEASE),) + +ccflags-y += -DDWC_LINUX +#ccflags-y += -DDEBUG +#ccflags-y += -DDWC_DEBUG_REGS +#ccflags-y += -DDWC_DEBUG_MEMORY + +ccflags-y += -DDWC_LIBMODULE +ccflags-y += -DDWC_CCLIB +ccflags-y += -DDWC_CRYPTOLIB +ccflags-y += -DDWC_NOTIFYLIB +ccflags-y += -DDWC_UTFLIB + +obj-m := dwc_common_port_lib.o +dwc_common_port_lib-objs := dwc_cc.o dwc_modpow.o dwc_dh.o \ + dwc_crypto.o dwc_notifier.o \ + dwc_common_linux.o dwc_mem.o + +else + +ifeq ($(KDIR),) +$(error Must give "KDIR=/path/to/kernel/source" on command line or in environment) +endif + +ifeq ($(ARCH),) +$(error Must give "ARCH=" on command line or in environment. Also, if \ + cross-compiling, must give "CROSS_COMPILE=/path/to/compiler/plus/tool-prefix-") +endif + +ifeq ($(DOXYGEN),) +DOXYGEN := doxygen +endif + +default: + $(MAKE) -C$(KDIR) M=$(PWD) ARCH=$(ARCH) CROSS_COMPILE=$(CROSS_COMPILE) modules + +docs: $(wildcard *.[hc]) doc/doxygen.cfg + $(DOXYGEN) doc/doxygen.cfg + +tags: $(wildcard *.[hc]) + $(CTAGS) -e $(wildcard *.[hc]) $(wildcard linux/*.[hc]) $(wildcard $(KDIR)/include/linux/usb*.h) + +endif + +clean: + rm -rf *.o *.ko .*.cmd *.mod.c .*.o.d .*.o.tmp modules.order Module.markers Module.symvers .tmp_versions/ --- linux-raspi2-4.2.0.orig/drivers/usb/host/dwc_common_port/changes.txt +++ linux-raspi2-4.2.0/drivers/usb/host/dwc_common_port/changes.txt @@ -0,0 +1,174 @@ + +dwc_read_reg32() and friends now take an additional parameter, a pointer to an +IO context struct. The IO context struct should live in an os-dependent struct +in your driver. As an example, the dwc_usb3 driver has an os-dependent struct +named 'os_dep' embedded in the main device struct. So there these calls look +like this: + + dwc_read_reg32(&usb3_dev->os_dep.ioctx, &pcd->dev_global_regs->dcfg); + + dwc_write_reg32(&usb3_dev->os_dep.ioctx, + &pcd->dev_global_regs->dcfg, 0); + +Note that for the existing Linux driver ports, it is not necessary to actually +define the 'ioctx' member in the os-dependent struct. Since Linux does not +require an IO context, its macros for dwc_read_reg32() and friends do not +use the context pointer, so it is optimized away by the compiler. But it is +necessary to add the pointer parameter to all of the call sites, to be ready +for any future ports (such as FreeBSD) which do require an IO context. + + +Similarly, dwc_alloc(), dwc_alloc_atomic(), dwc_strdup(), and dwc_free() now +take an additional parameter, a pointer to a memory context. Examples: + + addr = dwc_alloc(&usb3_dev->os_dep.memctx, size); + + dwc_free(&usb3_dev->os_dep.memctx, addr); + +Again, for the Linux ports, it is not necessary to actually define the memctx +member, but it is necessary to add the pointer parameter to all of the call +sites. + + +Same for dwc_dma_alloc() and dwc_dma_free(). Examples: + + virt_addr = dwc_dma_alloc(&usb3_dev->os_dep.dmactx, size, &phys_addr); + + dwc_dma_free(&usb3_dev->os_dep.dmactx, size, virt_addr, phys_addr); + + +Same for dwc_mutex_alloc() and dwc_mutex_free(). Examples: + + mutex = dwc_mutex_alloc(&usb3_dev->os_dep.mtxctx); + + dwc_mutex_free(&usb3_dev->os_dep.mtxctx, mutex); + + +Same for dwc_spinlock_alloc() and dwc_spinlock_free(). Examples: + + lock = dwc_spinlock_alloc(&usb3_dev->osdep.splctx); + + dwc_spinlock_free(&usb3_dev->osdep.splctx, lock); + + +Same for dwc_timer_alloc(). Example: + + timer = dwc_timer_alloc(&usb3_dev->os_dep.tmrctx, "dwc_usb3_tmr1", + cb_func, cb_data); + + +Same for dwc_waitq_alloc(). Example: + + waitq = dwc_waitq_alloc(&usb3_dev->os_dep.wtqctx); + + +Same for dwc_thread_run(). Example: + + thread = dwc_thread_run(&usb3_dev->os_dep.thdctx, func, + "dwc_usb3_thd1", data); + + +Same for dwc_workq_alloc(). Example: + + workq = dwc_workq_alloc(&usb3_dev->osdep.wkqctx, "dwc_usb3_wkq1"); + + +Same for dwc_task_alloc(). Example: + + task = dwc_task_alloc(&usb3_dev->os_dep.tskctx, "dwc_usb3_tsk1", + cb_func, cb_data); + + +In addition to the context pointer additions, a few core functions have had +other changes made to their parameters: + +The 'flags' parameter to dwc_spinlock_irqsave() and dwc_spinunlock_irqrestore() +has been changed from a uint64_t to a dwc_irqflags_t. + +dwc_thread_should_stop() now takes a 'dwc_thread_t *' parameter, because the +FreeBSD equivalent of that function requires it. + +And, in addition to the context pointer, dwc_task_alloc() also adds a +'char *name' parameter, to be consistent with dwc_thread_run() and +dwc_workq_alloc(), and because the FreeBSD equivalent of that function +requires a unique name. + + +Here is a complete list of the core functions that now take a pointer to a +context as their first parameter: + + dwc_read_reg32 + dwc_read_reg64 + dwc_write_reg32 + dwc_write_reg64 + dwc_modify_reg32 + dwc_modify_reg64 + dwc_alloc + dwc_alloc_atomic + dwc_strdup + dwc_free + dwc_dma_alloc + dwc_dma_free + dwc_mutex_alloc + dwc_mutex_free + dwc_spinlock_alloc + dwc_spinlock_free + dwc_timer_alloc + dwc_waitq_alloc + dwc_thread_run + dwc_workq_alloc + dwc_task_alloc Also adds a 'char *name' as its 2nd parameter + +And here are the core functions that have other changes to their parameters: + + dwc_spinlock_irqsave 'flags' param is now a 'dwc_irqflags_t *' + dwc_spinunlock_irqrestore 'flags' param is now a 'dwc_irqflags_t' + dwc_thread_should_stop Adds a 'dwc_thread_t *' parameter + + + +The changes to the core functions also require some of the other library +functions to change: + + dwc_cc_if_alloc() and dwc_cc_if_free() now take a 'void *memctx' + (for memory allocation) as the 1st param and a 'void *mtxctx' + (for mutex allocation) as the 2nd param. + + dwc_cc_clear(), dwc_cc_add(), dwc_cc_change(), dwc_cc_remove(), + dwc_cc_data_for_save(), and dwc_cc_restore_from_data() now take a + 'void *memctx' as the 1st param. + + dwc_dh_modpow(), dwc_dh_pk(), and dwc_dh_derive_keys() now take a + 'void *memctx' as the 1st param. + + dwc_modpow() now takes a 'void *memctx' as the 1st param. + + dwc_alloc_notification_manager() now takes a 'void *memctx' as the + 1st param and a 'void *wkqctx' (for work queue allocation) as the 2nd + param, and also now returns an integer value that is non-zero if + allocation of its data structures or work queue fails. + + dwc_register_notifier() now takes a 'void *memctx' as the 1st param. + + dwc_memory_debug_start() now takes a 'void *mem_ctx' as the first + param, and also now returns an integer value that is non-zero if + allocation of its data structures fails. + + + +Other miscellaneous changes: + +The DEBUG_MEMORY and DEBUG_REGS #define's have been renamed to +DWC_DEBUG_MEMORY and DWC_DEBUG_REGS. + +The following #define's have been added to allow selectively compiling library +features: + + DWC_CCLIB + DWC_CRYPTOLIB + DWC_NOTIFYLIB + DWC_UTFLIB + +A DWC_LIBMODULE #define has also been added. If this is not defined, then the +module code in dwc_common_linux.c is not compiled in. This allows linking the +library code directly into a driver module, instead of as a standalone module. --- linux-raspi2-4.2.0.orig/drivers/usb/host/dwc_common_port/doc/doxygen.cfg +++ linux-raspi2-4.2.0/drivers/usb/host/dwc_common_port/doc/doxygen.cfg @@ -0,0 +1,270 @@ +# Doxyfile 1.4.5 + +#--------------------------------------------------------------------------- +# Project related configuration options +#--------------------------------------------------------------------------- +PROJECT_NAME = "Synopsys DWC Portability and Common Library for UWB" +PROJECT_NUMBER = +OUTPUT_DIRECTORY = doc +CREATE_SUBDIRS = NO +OUTPUT_LANGUAGE = English +BRIEF_MEMBER_DESC = YES +REPEAT_BRIEF = YES +ABBREVIATE_BRIEF = "The $name class" \ + "The $name widget" \ + "The $name file" \ + is \ + provides \ + specifies \ + contains \ + represents \ + a \ + an \ + the +ALWAYS_DETAILED_SEC = YES +INLINE_INHERITED_MEMB = NO +FULL_PATH_NAMES = NO +STRIP_FROM_PATH = .. +STRIP_FROM_INC_PATH = +SHORT_NAMES = NO +JAVADOC_AUTOBRIEF = YES +MULTILINE_CPP_IS_BRIEF = NO +DETAILS_AT_TOP = YES +INHERIT_DOCS = YES +SEPARATE_MEMBER_PAGES = NO +TAB_SIZE = 8 +ALIASES = +OPTIMIZE_OUTPUT_FOR_C = YES +OPTIMIZE_OUTPUT_JAVA = NO +BUILTIN_STL_SUPPORT = NO +DISTRIBUTE_GROUP_DOC = NO +SUBGROUPING = NO +#--------------------------------------------------------------------------- +# Build related configuration options +#--------------------------------------------------------------------------- +EXTRACT_ALL = NO +EXTRACT_PRIVATE = NO +EXTRACT_STATIC = YES +EXTRACT_LOCAL_CLASSES = NO +EXTRACT_LOCAL_METHODS = NO +HIDE_UNDOC_MEMBERS = NO +HIDE_UNDOC_CLASSES = NO +HIDE_FRIEND_COMPOUNDS = NO +HIDE_IN_BODY_DOCS = NO +INTERNAL_DOCS = NO +CASE_SENSE_NAMES = YES +HIDE_SCOPE_NAMES = NO +SHOW_INCLUDE_FILES = NO +INLINE_INFO = YES +SORT_MEMBER_DOCS = NO +SORT_BRIEF_DOCS = NO +SORT_BY_SCOPE_NAME = NO +GENERATE_TODOLIST = YES +GENERATE_TESTLIST = YES +GENERATE_BUGLIST = YES +GENERATE_DEPRECATEDLIST= YES +ENABLED_SECTIONS = +MAX_INITIALIZER_LINES = 30 +SHOW_USED_FILES = YES +SHOW_DIRECTORIES = YES +FILE_VERSION_FILTER = +#--------------------------------------------------------------------------- +# configuration options related to warning and progress messages +#--------------------------------------------------------------------------- +QUIET = YES +WARNINGS = YES +WARN_IF_UNDOCUMENTED = NO +WARN_IF_DOC_ERROR = YES +WARN_NO_PARAMDOC = YES +WARN_FORMAT = "$file:$line: $text" +WARN_LOGFILE = +#--------------------------------------------------------------------------- +# configuration options related to the input files +#--------------------------------------------------------------------------- +INPUT = . +FILE_PATTERNS = *.c \ + *.cc \ + *.cxx \ + *.cpp \ + *.c++ \ + *.d \ + *.java \ + *.ii \ + *.ixx \ + *.ipp \ + *.i++ \ + *.inl \ + *.h \ + *.hh \ + *.hxx \ + *.hpp \ + *.h++ \ + *.idl \ + *.odl \ + *.cs \ + *.php \ + *.php3 \ + *.inc \ + *.m \ + *.mm \ + *.dox \ + *.py \ + *.C \ + *.CC \ + *.C++ \ + *.II \ + *.I++ \ + *.H \ + *.HH \ + *.H++ \ + *.CS \ + *.PHP \ + *.PHP3 \ + *.M \ + *.MM \ + *.PY +RECURSIVE = NO +EXCLUDE = +EXCLUDE_SYMLINKS = NO +EXCLUDE_PATTERNS = +EXAMPLE_PATH = +EXAMPLE_PATTERNS = * +EXAMPLE_RECURSIVE = NO +IMAGE_PATH = +INPUT_FILTER = +FILTER_PATTERNS = +FILTER_SOURCE_FILES = NO +#--------------------------------------------------------------------------- +# configuration options related to source browsing +#--------------------------------------------------------------------------- +SOURCE_BROWSER = NO +INLINE_SOURCES = NO +STRIP_CODE_COMMENTS = YES +REFERENCED_BY_RELATION = YES +REFERENCES_RELATION = YES +USE_HTAGS = NO +VERBATIM_HEADERS = NO +#--------------------------------------------------------------------------- +# configuration options related to the alphabetical class index +#--------------------------------------------------------------------------- +ALPHABETICAL_INDEX = NO +COLS_IN_ALPHA_INDEX = 5 +IGNORE_PREFIX = +#--------------------------------------------------------------------------- +# configuration options related to the HTML output +#--------------------------------------------------------------------------- +GENERATE_HTML = YES +HTML_OUTPUT = html +HTML_FILE_EXTENSION = .html +HTML_HEADER = +HTML_FOOTER = +HTML_STYLESHEET = +HTML_ALIGN_MEMBERS = YES +GENERATE_HTMLHELP = NO +CHM_FILE = +HHC_LOCATION = +GENERATE_CHI = NO +BINARY_TOC = NO +TOC_EXPAND = NO +DISABLE_INDEX = NO +ENUM_VALUES_PER_LINE = 4 +GENERATE_TREEVIEW = YES +TREEVIEW_WIDTH = 250 +#--------------------------------------------------------------------------- +# configuration options related to the LaTeX output +#--------------------------------------------------------------------------- +GENERATE_LATEX = NO +LATEX_OUTPUT = latex +LATEX_CMD_NAME = latex +MAKEINDEX_CMD_NAME = makeindex +COMPACT_LATEX = NO +PAPER_TYPE = a4wide +EXTRA_PACKAGES = +LATEX_HEADER = +PDF_HYPERLINKS = NO +USE_PDFLATEX = NO +LATEX_BATCHMODE = NO +LATEX_HIDE_INDICES = NO +#--------------------------------------------------------------------------- +# configuration options related to the RTF output +#--------------------------------------------------------------------------- +GENERATE_RTF = NO +RTF_OUTPUT = rtf +COMPACT_RTF = NO +RTF_HYPERLINKS = NO +RTF_STYLESHEET_FILE = +RTF_EXTENSIONS_FILE = +#--------------------------------------------------------------------------- +# configuration options related to the man page output +#--------------------------------------------------------------------------- +GENERATE_MAN = NO +MAN_OUTPUT = man +MAN_EXTENSION = .3 +MAN_LINKS = NO +#--------------------------------------------------------------------------- +# configuration options related to the XML output +#--------------------------------------------------------------------------- +GENERATE_XML = NO +XML_OUTPUT = xml +XML_SCHEMA = +XML_DTD = +XML_PROGRAMLISTING = YES +#--------------------------------------------------------------------------- +# configuration options for the AutoGen Definitions output +#--------------------------------------------------------------------------- +GENERATE_AUTOGEN_DEF = NO +#--------------------------------------------------------------------------- +# configuration options related to the Perl module output +#--------------------------------------------------------------------------- +GENERATE_PERLMOD = NO +PERLMOD_LATEX = NO +PERLMOD_PRETTY = YES +PERLMOD_MAKEVAR_PREFIX = +#--------------------------------------------------------------------------- +# Configuration options related to the preprocessor +#--------------------------------------------------------------------------- +ENABLE_PREPROCESSING = YES +MACRO_EXPANSION = NO +EXPAND_ONLY_PREDEF = NO +SEARCH_INCLUDES = YES +INCLUDE_PATH = +INCLUDE_FILE_PATTERNS = +PREDEFINED = DEBUG DEBUG_MEMORY +EXPAND_AS_DEFINED = +SKIP_FUNCTION_MACROS = YES +#--------------------------------------------------------------------------- +# Configuration::additions related to external references +#--------------------------------------------------------------------------- +TAGFILES = +GENERATE_TAGFILE = +ALLEXTERNALS = NO +EXTERNAL_GROUPS = YES +PERL_PATH = /usr/bin/perl +#--------------------------------------------------------------------------- +# Configuration options related to the dot tool +#--------------------------------------------------------------------------- +CLASS_DIAGRAMS = YES +HIDE_UNDOC_RELATIONS = YES +HAVE_DOT = NO +CLASS_GRAPH = YES +COLLABORATION_GRAPH = YES +GROUP_GRAPHS = YES +UML_LOOK = NO +TEMPLATE_RELATIONS = NO +INCLUDE_GRAPH = NO +INCLUDED_BY_GRAPH = YES +CALL_GRAPH = NO +GRAPHICAL_HIERARCHY = YES +DIRECTORY_GRAPH = YES +DOT_IMAGE_FORMAT = png +DOT_PATH = +DOTFILE_DIRS = +MAX_DOT_GRAPH_DEPTH = 1000 +DOT_TRANSPARENT = NO +DOT_MULTI_TARGETS = NO +GENERATE_LEGEND = YES +DOT_CLEANUP = YES +#--------------------------------------------------------------------------- +# Configuration::additions related to the search engine +#--------------------------------------------------------------------------- +SEARCHENGINE = NO --- linux-raspi2-4.2.0.orig/drivers/usb/host/dwc_common_port/dwc_cc.c +++ linux-raspi2-4.2.0/drivers/usb/host/dwc_common_port/dwc_cc.c @@ -0,0 +1,532 @@ +/* ========================================================================= + * $File: //dwh/usb_iip/dev/software/dwc_common_port_2/dwc_cc.c $ + * $Revision: #4 $ + * $Date: 2010/11/04 $ + * $Change: 1621692 $ + * + * Synopsys Portability Library Software and documentation + * (hereinafter, "Software") is an Unsupported proprietary work of + * Synopsys, Inc. unless otherwise expressly agreed to in writing + * between Synopsys and you. + * + * The Software IS NOT an item of Licensed Software or Licensed Product + * under any End User Software License Agreement or Agreement for + * Licensed Product with Synopsys or any supplement thereto. You are + * permitted to use and redistribute this Software in source and binary + * forms, with or without modification, provided that redistributions + * of source code must retain this notice. You may not view, use, + * disclose, copy or distribute this file or any information contained + * herein except pursuant to this license grant from Synopsys. If you + * do not agree with this notice, including the disclaimer below, then + * you are not authorized to use the Software. + * + * THIS SOFTWARE IS BEING DISTRIBUTED BY SYNOPSYS SOLELY ON AN "AS IS" + * BASIS AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE HEREBY DISCLAIMED. IN NO EVENT SHALL + * SYNOPSYS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY + * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE + * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH + * DAMAGE. + * ========================================================================= */ +#ifdef DWC_CCLIB + +#include "dwc_cc.h" + +typedef struct dwc_cc +{ + uint32_t uid; + uint8_t chid[16]; + uint8_t cdid[16]; + uint8_t ck[16]; + uint8_t *name; + uint8_t length; + DWC_CIRCLEQ_ENTRY(dwc_cc) list_entry; +} dwc_cc_t; + +DWC_CIRCLEQ_HEAD(context_list, dwc_cc); + +/** The main structure for CC management. */ +struct dwc_cc_if +{ + dwc_mutex_t *mutex; + char *filename; + + unsigned is_host:1; + + dwc_notifier_t *notifier; + + struct context_list list; +}; + +#ifdef DEBUG +static inline void dump_bytes(char *name, uint8_t *bytes, int len) +{ + int i; + DWC_PRINTF("%s: ", name); + for (i=0; ilength = length; + cc->name = dwc_alloc(mem_ctx, length); + if (!cc->name) { + dwc_free(mem_ctx, cc); + return NULL; + } + + DWC_MEMCPY(cc->name, name, length); + } + + return cc; +} + +static void free_cc(void *mem_ctx, dwc_cc_t *cc) +{ + if (cc->name) { + dwc_free(mem_ctx, cc->name); + } + dwc_free(mem_ctx, cc); +} + +static uint32_t next_uid(dwc_cc_if_t *cc_if) +{ + uint32_t uid = 0; + dwc_cc_t *cc; + DWC_CIRCLEQ_FOREACH(cc, &cc_if->list, list_entry) { + if (cc->uid > uid) { + uid = cc->uid; + } + } + + if (uid == 0) { + uid = 255; + } + + return uid + 1; +} + +static dwc_cc_t *cc_find(dwc_cc_if_t *cc_if, uint32_t uid) +{ + dwc_cc_t *cc; + DWC_CIRCLEQ_FOREACH(cc, &cc_if->list, list_entry) { + if (cc->uid == uid) { + return cc; + } + } + return NULL; +} + +static unsigned int cc_data_size(dwc_cc_if_t *cc_if) +{ + unsigned int size = 0; + dwc_cc_t *cc; + DWC_CIRCLEQ_FOREACH(cc, &cc_if->list, list_entry) { + size += (48 + 1); + if (cc->name) { + size += cc->length; + } + } + return size; +} + +static uint32_t cc_match_chid(dwc_cc_if_t *cc_if, uint8_t *chid) +{ + uint32_t uid = 0; + dwc_cc_t *cc; + + DWC_CIRCLEQ_FOREACH(cc, &cc_if->list, list_entry) { + if (DWC_MEMCMP(cc->chid, chid, 16) == 0) { + uid = cc->uid; + break; + } + } + return uid; +} +static uint32_t cc_match_cdid(dwc_cc_if_t *cc_if, uint8_t *cdid) +{ + uint32_t uid = 0; + dwc_cc_t *cc; + + DWC_CIRCLEQ_FOREACH(cc, &cc_if->list, list_entry) { + if (DWC_MEMCMP(cc->cdid, cdid, 16) == 0) { + uid = cc->uid; + break; + } + } + return uid; +} + +/* Internal cc_add */ +static int32_t cc_add(void *mem_ctx, dwc_cc_if_t *cc_if, uint8_t *chid, + uint8_t *cdid, uint8_t *ck, uint8_t *name, uint8_t length) +{ + dwc_cc_t *cc; + uint32_t uid; + + if (cc_if->is_host) { + uid = cc_match_cdid(cc_if, cdid); + } + else { + uid = cc_match_chid(cc_if, chid); + } + + if (uid) { + DWC_DEBUGC("Replacing previous connection context id=%d name=%p name_len=%d", uid, name, length); + cc = cc_find(cc_if, uid); + } + else { + cc = alloc_cc(mem_ctx, name, length); + cc->uid = next_uid(cc_if); + DWC_CIRCLEQ_INSERT_TAIL(&cc_if->list, cc, list_entry); + } + + DWC_MEMCPY(&(cc->chid[0]), chid, 16); + DWC_MEMCPY(&(cc->cdid[0]), cdid, 16); + DWC_MEMCPY(&(cc->ck[0]), ck, 16); + + DWC_DEBUGC("Added connection context id=%d name=%p name_len=%d", cc->uid, name, length); + dump_bytes("CHID", cc->chid, 16); + dump_bytes("CDID", cc->cdid, 16); + dump_bytes("CK", cc->ck, 16); + return cc->uid; +} + +/* Internal cc_clear */ +static void cc_clear(void *mem_ctx, dwc_cc_if_t *cc_if) +{ + while (!DWC_CIRCLEQ_EMPTY(&cc_if->list)) { + dwc_cc_t *cc = DWC_CIRCLEQ_FIRST(&cc_if->list); + DWC_CIRCLEQ_REMOVE_INIT(&cc_if->list, cc, list_entry); + free_cc(mem_ctx, cc); + } +} + +dwc_cc_if_t *dwc_cc_if_alloc(void *mem_ctx, void *mtx_ctx, + dwc_notifier_t *notifier, unsigned is_host) +{ + dwc_cc_if_t *cc_if = NULL; + + /* Allocate a common_cc_if structure */ + cc_if = dwc_alloc(mem_ctx, sizeof(dwc_cc_if_t)); + + if (!cc_if) + return NULL; + +#if (defined(DWC_LINUX) && defined(CONFIG_DEBUG_MUTEXES)) + DWC_MUTEX_ALLOC_LINUX_DEBUG(cc_if->mutex); +#else + cc_if->mutex = dwc_mutex_alloc(mtx_ctx); +#endif + if (!cc_if->mutex) { + dwc_free(mem_ctx, cc_if); + return NULL; + } + + DWC_CIRCLEQ_INIT(&cc_if->list); + cc_if->is_host = is_host; + cc_if->notifier = notifier; + return cc_if; +} + +void dwc_cc_if_free(void *mem_ctx, void *mtx_ctx, dwc_cc_if_t *cc_if) +{ +#if (defined(DWC_LINUX) && defined(CONFIG_DEBUG_MUTEXES)) + DWC_MUTEX_FREE(cc_if->mutex); +#else + dwc_mutex_free(mtx_ctx, cc_if->mutex); +#endif + cc_clear(mem_ctx, cc_if); + dwc_free(mem_ctx, cc_if); +} + +static void cc_changed(dwc_cc_if_t *cc_if) +{ + if (cc_if->notifier) { + dwc_notify(cc_if->notifier, DWC_CC_LIST_CHANGED_NOTIFICATION, cc_if); + } +} + +void dwc_cc_clear(void *mem_ctx, dwc_cc_if_t *cc_if) +{ + DWC_MUTEX_LOCK(cc_if->mutex); + cc_clear(mem_ctx, cc_if); + DWC_MUTEX_UNLOCK(cc_if->mutex); + cc_changed(cc_if); +} + +int32_t dwc_cc_add(void *mem_ctx, dwc_cc_if_t *cc_if, uint8_t *chid, + uint8_t *cdid, uint8_t *ck, uint8_t *name, uint8_t length) +{ + uint32_t uid; + + DWC_MUTEX_LOCK(cc_if->mutex); + uid = cc_add(mem_ctx, cc_if, chid, cdid, ck, name, length); + DWC_MUTEX_UNLOCK(cc_if->mutex); + cc_changed(cc_if); + + return uid; +} + +void dwc_cc_change(void *mem_ctx, dwc_cc_if_t *cc_if, int32_t id, uint8_t *chid, + uint8_t *cdid, uint8_t *ck, uint8_t *name, uint8_t length) +{ + dwc_cc_t* cc; + + DWC_DEBUGC("Change connection context %d", id); + + DWC_MUTEX_LOCK(cc_if->mutex); + cc = cc_find(cc_if, id); + if (!cc) { + DWC_ERROR("Uid %d not found in cc list\n", id); + DWC_MUTEX_UNLOCK(cc_if->mutex); + return; + } + + if (chid) { + DWC_MEMCPY(&(cc->chid[0]), chid, 16); + } + if (cdid) { + DWC_MEMCPY(&(cc->cdid[0]), cdid, 16); + } + if (ck) { + DWC_MEMCPY(&(cc->ck[0]), ck, 16); + } + + if (name) { + if (cc->name) { + dwc_free(mem_ctx, cc->name); + } + cc->name = dwc_alloc(mem_ctx, length); + if (!cc->name) { + DWC_ERROR("Out of memory in dwc_cc_change()\n"); + DWC_MUTEX_UNLOCK(cc_if->mutex); + return; + } + cc->length = length; + DWC_MEMCPY(cc->name, name, length); + } + + DWC_MUTEX_UNLOCK(cc_if->mutex); + + cc_changed(cc_if); + + DWC_DEBUGC("Changed connection context id=%d\n", id); + dump_bytes("New CHID", cc->chid, 16); + dump_bytes("New CDID", cc->cdid, 16); + dump_bytes("New CK", cc->ck, 16); +} + +void dwc_cc_remove(void *mem_ctx, dwc_cc_if_t *cc_if, int32_t id) +{ + dwc_cc_t *cc; + + DWC_DEBUGC("Removing connection context %d", id); + + DWC_MUTEX_LOCK(cc_if->mutex); + cc = cc_find(cc_if, id); + if (!cc) { + DWC_ERROR("Uid %d not found in cc list\n", id); + DWC_MUTEX_UNLOCK(cc_if->mutex); + return; + } + + DWC_CIRCLEQ_REMOVE_INIT(&cc_if->list, cc, list_entry); + DWC_MUTEX_UNLOCK(cc_if->mutex); + free_cc(mem_ctx, cc); + + cc_changed(cc_if); +} + +uint8_t *dwc_cc_data_for_save(void *mem_ctx, dwc_cc_if_t *cc_if, unsigned int *length) +{ + uint8_t *buf, *x; + uint8_t zero = 0; + dwc_cc_t *cc; + + DWC_MUTEX_LOCK(cc_if->mutex); + *length = cc_data_size(cc_if); + if (!(*length)) { + DWC_MUTEX_UNLOCK(cc_if->mutex); + return NULL; + } + + DWC_DEBUGC("Creating data for saving (length=%d)", *length); + + buf = dwc_alloc(mem_ctx, *length); + if (!buf) { + *length = 0; + DWC_MUTEX_UNLOCK(cc_if->mutex); + return NULL; + } + + x = buf; + DWC_CIRCLEQ_FOREACH(cc, &cc_if->list, list_entry) { + DWC_MEMCPY(x, cc->chid, 16); + x += 16; + DWC_MEMCPY(x, cc->cdid, 16); + x += 16; + DWC_MEMCPY(x, cc->ck, 16); + x += 16; + if (cc->name) { + DWC_MEMCPY(x, &cc->length, 1); + x += 1; + DWC_MEMCPY(x, cc->name, cc->length); + x += cc->length; + } + else { + DWC_MEMCPY(x, &zero, 1); + x += 1; + } + } + DWC_MUTEX_UNLOCK(cc_if->mutex); + + return buf; +} + +void dwc_cc_restore_from_data(void *mem_ctx, dwc_cc_if_t *cc_if, uint8_t *data, uint32_t length) +{ + uint8_t name_length; + uint8_t *name; + uint8_t *chid; + uint8_t *cdid; + uint8_t *ck; + uint32_t i = 0; + + DWC_MUTEX_LOCK(cc_if->mutex); + cc_clear(mem_ctx, cc_if); + + while (i < length) { + chid = &data[i]; + i += 16; + cdid = &data[i]; + i += 16; + ck = &data[i]; + i += 16; + + name_length = data[i]; + i ++; + + if (name_length) { + name = &data[i]; + i += name_length; + } + else { + name = NULL; + } + + /* check to see if we haven't overflown the buffer */ + if (i > length) { + DWC_ERROR("Data format error while attempting to load CCs " + "(nlen=%d, iter=%d, buflen=%d).\n", name_length, i, length); + break; + } + + cc_add(mem_ctx, cc_if, chid, cdid, ck, name, name_length); + } + DWC_MUTEX_UNLOCK(cc_if->mutex); + + cc_changed(cc_if); +} + +uint32_t dwc_cc_match_chid(dwc_cc_if_t *cc_if, uint8_t *chid) +{ + uint32_t uid = 0; + + DWC_MUTEX_LOCK(cc_if->mutex); + uid = cc_match_chid(cc_if, chid); + DWC_MUTEX_UNLOCK(cc_if->mutex); + return uid; +} +uint32_t dwc_cc_match_cdid(dwc_cc_if_t *cc_if, uint8_t *cdid) +{ + uint32_t uid = 0; + + DWC_MUTEX_LOCK(cc_if->mutex); + uid = cc_match_cdid(cc_if, cdid); + DWC_MUTEX_UNLOCK(cc_if->mutex); + return uid; +} + +uint8_t *dwc_cc_ck(dwc_cc_if_t *cc_if, int32_t id) +{ + uint8_t *ck = NULL; + dwc_cc_t *cc; + + DWC_MUTEX_LOCK(cc_if->mutex); + cc = cc_find(cc_if, id); + if (cc) { + ck = cc->ck; + } + DWC_MUTEX_UNLOCK(cc_if->mutex); + + return ck; + +} + +uint8_t *dwc_cc_chid(dwc_cc_if_t *cc_if, int32_t id) +{ + uint8_t *retval = NULL; + dwc_cc_t *cc; + + DWC_MUTEX_LOCK(cc_if->mutex); + cc = cc_find(cc_if, id); + if (cc) { + retval = cc->chid; + } + DWC_MUTEX_UNLOCK(cc_if->mutex); + + return retval; +} + +uint8_t *dwc_cc_cdid(dwc_cc_if_t *cc_if, int32_t id) +{ + uint8_t *retval = NULL; + dwc_cc_t *cc; + + DWC_MUTEX_LOCK(cc_if->mutex); + cc = cc_find(cc_if, id); + if (cc) { + retval = cc->cdid; + } + DWC_MUTEX_UNLOCK(cc_if->mutex); + + return retval; +} + +uint8_t *dwc_cc_name(dwc_cc_if_t *cc_if, int32_t id, uint8_t *length) +{ + uint8_t *retval = NULL; + dwc_cc_t *cc; + + DWC_MUTEX_LOCK(cc_if->mutex); + *length = 0; + cc = cc_find(cc_if, id); + if (cc) { + *length = cc->length; + retval = cc->name; + } + DWC_MUTEX_UNLOCK(cc_if->mutex); + + return retval; +} + +#endif /* DWC_CCLIB */ --- linux-raspi2-4.2.0.orig/drivers/usb/host/dwc_common_port/dwc_cc.h +++ linux-raspi2-4.2.0/drivers/usb/host/dwc_common_port/dwc_cc.h @@ -0,0 +1,224 @@ +/* ========================================================================= + * $File: //dwh/usb_iip/dev/software/dwc_common_port_2/dwc_cc.h $ + * $Revision: #4 $ + * $Date: 2010/09/28 $ + * $Change: 1596182 $ + * + * Synopsys Portability Library Software and documentation + * (hereinafter, "Software") is an Unsupported proprietary work of + * Synopsys, Inc. unless otherwise expressly agreed to in writing + * between Synopsys and you. + * + * The Software IS NOT an item of Licensed Software or Licensed Product + * under any End User Software License Agreement or Agreement for + * Licensed Product with Synopsys or any supplement thereto. You are + * permitted to use and redistribute this Software in source and binary + * forms, with or without modification, provided that redistributions + * of source code must retain this notice. You may not view, use, + * disclose, copy or distribute this file or any information contained + * herein except pursuant to this license grant from Synopsys. If you + * do not agree with this notice, including the disclaimer below, then + * you are not authorized to use the Software. + * + * THIS SOFTWARE IS BEING DISTRIBUTED BY SYNOPSYS SOLELY ON AN "AS IS" + * BASIS AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE HEREBY DISCLAIMED. IN NO EVENT SHALL + * SYNOPSYS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY + * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE + * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH + * DAMAGE. + * ========================================================================= */ +#ifndef _DWC_CC_H_ +#define _DWC_CC_H_ + +#ifdef __cplusplus +extern "C" { +#endif + +/** @file + * + * This file defines the Context Context library. + * + * The main data structure is dwc_cc_if_t which is returned by either the + * dwc_cc_if_alloc function or returned by the module to the user via a provided + * function. The data structure is opaque and should only be manipulated via the + * functions provied in this API. + * + * It manages a list of connection contexts and operations can be performed to + * add, remove, query, search, and change, those contexts. Additionally, + * a dwc_notifier_t object can be requested from the manager so that + * the user can be notified whenever the context list has changed. + */ + +#include "dwc_os.h" +#include "dwc_list.h" +#include "dwc_notifier.h" + + +/* Notifications */ +#define DWC_CC_LIST_CHANGED_NOTIFICATION "DWC_CC_LIST_CHANGED_NOTIFICATION" + +struct dwc_cc_if; +typedef struct dwc_cc_if dwc_cc_if_t; + + +/** @name Connection Context Operations */ +/** @{ */ + +/** This function allocates memory for a dwc_cc_if_t structure, initializes + * fields to default values, and returns a pointer to the structure or NULL on + * error. */ +extern dwc_cc_if_t *dwc_cc_if_alloc(void *mem_ctx, void *mtx_ctx, + dwc_notifier_t *notifier, unsigned is_host); + +/** Frees the memory for the specified CC structure allocated from + * dwc_cc_if_alloc(). */ +extern void dwc_cc_if_free(void *mem_ctx, void *mtx_ctx, dwc_cc_if_t *cc_if); + +/** Removes all contexts from the connection context list */ +extern void dwc_cc_clear(void *mem_ctx, dwc_cc_if_t *cc_if); + +/** Adds a connection context (CHID, CK, CDID, Name) to the connection context list. + * If a CHID already exists, the CK and name are overwritten. Statistics are + * not overwritten. + * + * @param cc_if The cc_if structure. + * @param chid A pointer to the 16-byte CHID. This value will be copied. + * @param ck A pointer to the 16-byte CK. This value will be copied. + * @param cdid A pointer to the 16-byte CDID. This value will be copied. + * @param name An optional host friendly name as defined in the association model + * spec. Must be a UTF16-LE unicode string. Can be NULL to indicated no name. + * @param length The length othe unicode string. + * @return A unique identifier used to refer to this context that is valid for + * as long as this context is still in the list. */ +extern int32_t dwc_cc_add(void *mem_ctx, dwc_cc_if_t *cc_if, uint8_t *chid, + uint8_t *cdid, uint8_t *ck, uint8_t *name, + uint8_t length); + +/** Changes the CHID, CK, CDID, or Name values of a connection context in the + * list, preserving any accumulated statistics. This would typically be called + * if the host decideds to change the context with a SET_CONNECTION request. + * + * @param cc_if The cc_if structure. + * @param id The identifier of the connection context. + * @param chid A pointer to the 16-byte CHID. This value will be copied. NULL + * indicates no change. + * @param cdid A pointer to the 16-byte CDID. This value will be copied. NULL + * indicates no change. + * @param ck A pointer to the 16-byte CK. This value will be copied. NULL + * indicates no change. + * @param name Host friendly name UTF16-LE. NULL indicates no change. + * @param length Length of name. */ +extern void dwc_cc_change(void *mem_ctx, dwc_cc_if_t *cc_if, int32_t id, + uint8_t *chid, uint8_t *cdid, uint8_t *ck, + uint8_t *name, uint8_t length); + +/** Remove the specified connection context. + * @param cc_if The cc_if structure. + * @param id The identifier of the connection context to remove. */ +extern void dwc_cc_remove(void *mem_ctx, dwc_cc_if_t *cc_if, int32_t id); + +/** Get a binary block of data for the connection context list and attributes. + * This data can be used by the OS specific driver to save the connection + * context list into non-volatile memory. + * + * @param cc_if The cc_if structure. + * @param length Return the length of the data buffer. + * @return A pointer to the data buffer. The memory for this buffer should be + * freed with DWC_FREE() after use. */ +extern uint8_t *dwc_cc_data_for_save(void *mem_ctx, dwc_cc_if_t *cc_if, + unsigned int *length); + +/** Restore the connection context list from the binary data that was previously + * returned from a call to dwc_cc_data_for_save. This can be used by the OS specific + * driver to load a connection context list from non-volatile memory. + * + * @param cc_if The cc_if structure. + * @param data The data bytes as returned from dwc_cc_data_for_save. + * @param length The length of the data. */ +extern void dwc_cc_restore_from_data(void *mem_ctx, dwc_cc_if_t *cc_if, + uint8_t *data, unsigned int length); + +/** Find the connection context from the specified CHID. + * + * @param cc_if The cc_if structure. + * @param chid A pointer to the CHID data. + * @return A non-zero identifier of the connection context if the CHID matches. + * Otherwise returns 0. */ +extern uint32_t dwc_cc_match_chid(dwc_cc_if_t *cc_if, uint8_t *chid); + +/** Find the connection context from the specified CDID. + * + * @param cc_if The cc_if structure. + * @param cdid A pointer to the CDID data. + * @return A non-zero identifier of the connection context if the CHID matches. + * Otherwise returns 0. */ +extern uint32_t dwc_cc_match_cdid(dwc_cc_if_t *cc_if, uint8_t *cdid); + +/** Retrieve the CK from the specified connection context. + * + * @param cc_if The cc_if structure. + * @param id The identifier of the connection context. + * @return A pointer to the CK data. The memory does not need to be freed. */ +extern uint8_t *dwc_cc_ck(dwc_cc_if_t *cc_if, int32_t id); + +/** Retrieve the CHID from the specified connection context. + * + * @param cc_if The cc_if structure. + * @param id The identifier of the connection context. + * @return A pointer to the CHID data. The memory does not need to be freed. */ +extern uint8_t *dwc_cc_chid(dwc_cc_if_t *cc_if, int32_t id); + +/** Retrieve the CDID from the specified connection context. + * + * @param cc_if The cc_if structure. + * @param id The identifier of the connection context. + * @return A pointer to the CDID data. The memory does not need to be freed. */ +extern uint8_t *dwc_cc_cdid(dwc_cc_if_t *cc_if, int32_t id); + +extern uint8_t *dwc_cc_name(dwc_cc_if_t *cc_if, int32_t id, uint8_t *length); + +/** Checks a buffer for non-zero. + * @param id A pointer to a 16 byte buffer. + * @return true if the 16 byte value is non-zero. */ +static inline unsigned dwc_assoc_is_not_zero_id(uint8_t *id) { + int i; + for (i=0; i<16; i++) { + if (id[i]) return 1; + } + return 0; +} + +/** Checks a buffer for zero. + * @param id A pointer to a 16 byte buffer. + * @return true if the 16 byte value is zero. */ +static inline unsigned dwc_assoc_is_zero_id(uint8_t *id) { + return !dwc_assoc_is_not_zero_id(id); +} + +/** Prints an ASCII representation for the 16-byte chid, cdid, or ck, into + * buffer. */ +static inline int dwc_print_id_string(char *buffer, uint8_t *id) { + char *ptr = buffer; + int i; + for (i=0; i<16; i++) { + ptr += DWC_SPRINTF(ptr, "%02x", id[i]); + if (i < 15) { + ptr += DWC_SPRINTF(ptr, " "); + } + } + return ptr - buffer; +} + +/** @} */ + +#ifdef __cplusplus +} +#endif + +#endif /* _DWC_CC_H_ */ --- linux-raspi2-4.2.0.orig/drivers/usb/host/dwc_common_port/dwc_common_fbsd.c +++ linux-raspi2-4.2.0/drivers/usb/host/dwc_common_port/dwc_common_fbsd.c @@ -0,0 +1,1308 @@ +#include "dwc_os.h" +#include "dwc_list.h" + +#ifdef DWC_CCLIB +# include "dwc_cc.h" +#endif + +#ifdef DWC_CRYPTOLIB +# include "dwc_modpow.h" +# include "dwc_dh.h" +# include "dwc_crypto.h" +#endif + +#ifdef DWC_NOTIFYLIB +# include "dwc_notifier.h" +#endif + +/* OS-Level Implementations */ + +/* This is the FreeBSD 7.0 kernel implementation of the DWC platform library. */ + + +/* MISC */ + +void *DWC_MEMSET(void *dest, uint8_t byte, uint32_t size) +{ + return memset(dest, byte, size); +} + +void *DWC_MEMCPY(void *dest, void const *src, uint32_t size) +{ + return memcpy(dest, src, size); +} + +void *DWC_MEMMOVE(void *dest, void *src, uint32_t size) +{ + bcopy(src, dest, size); + return dest; +} + +int DWC_MEMCMP(void *m1, void *m2, uint32_t size) +{ + return memcmp(m1, m2, size); +} + +int DWC_STRNCMP(void *s1, void *s2, uint32_t size) +{ + return strncmp(s1, s2, size); +} + +int DWC_STRCMP(void *s1, void *s2) +{ + return strcmp(s1, s2); +} + +int DWC_STRLEN(char const *str) +{ + return strlen(str); +} + +char *DWC_STRCPY(char *to, char const *from) +{ + return strcpy(to, from); +} + +char *DWC_STRDUP(char const *str) +{ + int len = DWC_STRLEN(str) + 1; + char *new = DWC_ALLOC_ATOMIC(len); + + if (!new) { + return NULL; + } + + DWC_MEMCPY(new, str, len); + return new; +} + +int DWC_ATOI(char *str, int32_t *value) +{ + char *end = NULL; + + *value = strtol(str, &end, 0); + if (*end == '\0') { + return 0; + } + + return -1; +} + +int DWC_ATOUI(char *str, uint32_t *value) +{ + char *end = NULL; + + *value = strtoul(str, &end, 0); + if (*end == '\0') { + return 0; + } + + return -1; +} + + +#ifdef DWC_UTFLIB +/* From usbstring.c */ + +int DWC_UTF8_TO_UTF16LE(uint8_t const *s, uint16_t *cp, unsigned len) +{ + int count = 0; + u8 c; + u16 uchar; + + /* this insists on correct encodings, though not minimal ones. + * BUT it currently rejects legit 4-byte UTF-8 code points, + * which need surrogate pairs. (Unicode 3.1 can use them.) + */ + while (len != 0 && (c = (u8) *s++) != 0) { + if (unlikely(c & 0x80)) { + // 2-byte sequence: + // 00000yyyyyxxxxxx = 110yyyyy 10xxxxxx + if ((c & 0xe0) == 0xc0) { + uchar = (c & 0x1f) << 6; + + c = (u8) *s++; + if ((c & 0xc0) != 0xc0) + goto fail; + c &= 0x3f; + uchar |= c; + + // 3-byte sequence (most CJKV characters): + // zzzzyyyyyyxxxxxx = 1110zzzz 10yyyyyy 10xxxxxx + } else if ((c & 0xf0) == 0xe0) { + uchar = (c & 0x0f) << 12; + + c = (u8) *s++; + if ((c & 0xc0) != 0xc0) + goto fail; + c &= 0x3f; + uchar |= c << 6; + + c = (u8) *s++; + if ((c & 0xc0) != 0xc0) + goto fail; + c &= 0x3f; + uchar |= c; + + /* no bogus surrogates */ + if (0xd800 <= uchar && uchar <= 0xdfff) + goto fail; + + // 4-byte sequence (surrogate pairs, currently rare): + // 11101110wwwwzzzzyy + 110111yyyyxxxxxx + // = 11110uuu 10uuzzzz 10yyyyyy 10xxxxxx + // (uuuuu = wwww + 1) + // FIXME accept the surrogate code points (only) + } else + goto fail; + } else + uchar = c; + put_unaligned (cpu_to_le16 (uchar), cp++); + count++; + len--; + } + return count; +fail: + return -1; +} + +#endif /* DWC_UTFLIB */ + + +/* dwc_debug.h */ + +dwc_bool_t DWC_IN_IRQ(void) +{ +// return in_irq(); + return 0; +} + +dwc_bool_t DWC_IN_BH(void) +{ +// return in_softirq(); + return 0; +} + +void DWC_VPRINTF(char *format, va_list args) +{ + vprintf(format, args); +} + +int DWC_VSNPRINTF(char *str, int size, char *format, va_list args) +{ + return vsnprintf(str, size, format, args); +} + +void DWC_PRINTF(char *format, ...) +{ + va_list args; + + va_start(args, format); + DWC_VPRINTF(format, args); + va_end(args); +} + +int DWC_SPRINTF(char *buffer, char *format, ...) +{ + int retval; + va_list args; + + va_start(args, format); + retval = vsprintf(buffer, format, args); + va_end(args); + return retval; +} + +int DWC_SNPRINTF(char *buffer, int size, char *format, ...) +{ + int retval; + va_list args; + + va_start(args, format); + retval = vsnprintf(buffer, size, format, args); + va_end(args); + return retval; +} + +void __DWC_WARN(char *format, ...) +{ + va_list args; + + va_start(args, format); + DWC_VPRINTF(format, args); + va_end(args); +} + +void __DWC_ERROR(char *format, ...) +{ + va_list args; + + va_start(args, format); + DWC_VPRINTF(format, args); + va_end(args); +} + +void DWC_EXCEPTION(char *format, ...) +{ + va_list args; + + va_start(args, format); + DWC_VPRINTF(format, args); + va_end(args); +// BUG_ON(1); ??? +} + +#ifdef DEBUG +void __DWC_DEBUG(char *format, ...) +{ + va_list args; + + va_start(args, format); + DWC_VPRINTF(format, args); + va_end(args); +} +#endif + + +/* dwc_mem.h */ + +#if 0 +dwc_pool_t *DWC_DMA_POOL_CREATE(uint32_t size, + uint32_t align, + uint32_t alloc) +{ + struct dma_pool *pool = dma_pool_create("Pool", NULL, + size, align, alloc); + return (dwc_pool_t *)pool; +} + +void DWC_DMA_POOL_DESTROY(dwc_pool_t *pool) +{ + dma_pool_destroy((struct dma_pool *)pool); +} + +void *DWC_DMA_POOL_ALLOC(dwc_pool_t *pool, uint64_t *dma_addr) +{ +// return dma_pool_alloc((struct dma_pool *)pool, GFP_KERNEL, dma_addr); + return dma_pool_alloc((struct dma_pool *)pool, M_WAITOK, dma_addr); +} + +void *DWC_DMA_POOL_ZALLOC(dwc_pool_t *pool, uint64_t *dma_addr) +{ + void *vaddr = DWC_DMA_POOL_ALLOC(pool, dma_addr); + memset(..); +} + +void DWC_DMA_POOL_FREE(dwc_pool_t *pool, void *vaddr, void *daddr) +{ + dma_pool_free(pool, vaddr, daddr); +} +#endif + +static void dmamap_cb(void *arg, bus_dma_segment_t *segs, int nseg, int error) +{ + if (error) + return; + *(bus_addr_t *)arg = segs[0].ds_addr; +} + +void *__DWC_DMA_ALLOC(void *dma_ctx, uint32_t size, dwc_dma_t *dma_addr) +{ + dwc_dmactx_t *dma = (dwc_dmactx_t *)dma_ctx; + int error; + + error = bus_dma_tag_create( +#if __FreeBSD_version >= 700000 + bus_get_dma_tag(dma->dev), /* parent */ +#else + NULL, /* parent */ +#endif + 4, 0, /* alignment, bounds */ + BUS_SPACE_MAXADDR_32BIT, /* lowaddr */ + BUS_SPACE_MAXADDR, /* highaddr */ + NULL, NULL, /* filter, filterarg */ + size, /* maxsize */ + 1, /* nsegments */ + size, /* maxsegsize */ + 0, /* flags */ + NULL, /* lockfunc */ + NULL, /* lockarg */ + &dma->dma_tag); + if (error) { + device_printf(dma->dev, "%s: bus_dma_tag_create failed: %d\n", + __func__, error); + goto fail_0; + } + + error = bus_dmamem_alloc(dma->dma_tag, &dma->dma_vaddr, + BUS_DMA_NOWAIT | BUS_DMA_COHERENT, &dma->dma_map); + if (error) { + device_printf(dma->dev, "%s: bus_dmamem_alloc(%ju) failed: %d\n", + __func__, (uintmax_t)size, error); + goto fail_1; + } + + dma->dma_paddr = 0; + error = bus_dmamap_load(dma->dma_tag, dma->dma_map, dma->dma_vaddr, size, + dmamap_cb, &dma->dma_paddr, BUS_DMA_NOWAIT); + if (error || dma->dma_paddr == 0) { + device_printf(dma->dev, "%s: bus_dmamap_load failed: %d\n", + __func__, error); + goto fail_2; + } + + *dma_addr = dma->dma_paddr; + return dma->dma_vaddr; + +fail_2: + bus_dmamap_unload(dma->dma_tag, dma->dma_map); +fail_1: + bus_dmamem_free(dma->dma_tag, dma->dma_vaddr, dma->dma_map); + bus_dma_tag_destroy(dma->dma_tag); +fail_0: + dma->dma_map = NULL; + dma->dma_tag = NULL; + + return NULL; +} + +void __DWC_DMA_FREE(void *dma_ctx, uint32_t size, void *virt_addr, dwc_dma_t dma_addr) +{ + dwc_dmactx_t *dma = (dwc_dmactx_t *)dma_ctx; + + if (dma->dma_tag == NULL) + return; + if (dma->dma_map != NULL) { + bus_dmamap_sync(dma->dma_tag, dma->dma_map, + BUS_DMASYNC_POSTREAD | BUS_DMASYNC_POSTWRITE); + bus_dmamap_unload(dma->dma_tag, dma->dma_map); + bus_dmamem_free(dma->dma_tag, dma->dma_vaddr, dma->dma_map); + dma->dma_map = NULL; + } + + bus_dma_tag_destroy(dma->dma_tag); + dma->dma_tag = NULL; +} + +void *__DWC_ALLOC(void *mem_ctx, uint32_t size) +{ + return malloc(size, M_DEVBUF, M_WAITOK | M_ZERO); +} + +void *__DWC_ALLOC_ATOMIC(void *mem_ctx, uint32_t size) +{ + return malloc(size, M_DEVBUF, M_NOWAIT | M_ZERO); +} + +void __DWC_FREE(void *mem_ctx, void *addr) +{ + free(addr, M_DEVBUF); +} + + +#ifdef DWC_CRYPTOLIB +/* dwc_crypto.h */ + +void DWC_RANDOM_BYTES(uint8_t *buffer, uint32_t length) +{ + get_random_bytes(buffer, length); +} + +int DWC_AES_CBC(uint8_t *message, uint32_t messagelen, uint8_t *key, uint32_t keylen, uint8_t iv[16], uint8_t *out) +{ + struct crypto_blkcipher *tfm; + struct blkcipher_desc desc; + struct scatterlist sgd; + struct scatterlist sgs; + + tfm = crypto_alloc_blkcipher("cbc(aes)", 0, CRYPTO_ALG_ASYNC); + if (tfm == NULL) { + printk("failed to load transform for aes CBC\n"); + return -1; + } + + crypto_blkcipher_setkey(tfm, key, keylen); + crypto_blkcipher_set_iv(tfm, iv, 16); + + sg_init_one(&sgd, out, messagelen); + sg_init_one(&sgs, message, messagelen); + + desc.tfm = tfm; + desc.flags = 0; + + if (crypto_blkcipher_encrypt(&desc, &sgd, &sgs, messagelen)) { + crypto_free_blkcipher(tfm); + DWC_ERROR("AES CBC encryption failed"); + return -1; + } + + crypto_free_blkcipher(tfm); + return 0; +} + +int DWC_SHA256(uint8_t *message, uint32_t len, uint8_t *out) +{ + struct crypto_hash *tfm; + struct hash_desc desc; + struct scatterlist sg; + + tfm = crypto_alloc_hash("sha256", 0, CRYPTO_ALG_ASYNC); + if (IS_ERR(tfm)) { + DWC_ERROR("Failed to load transform for sha256: %ld", PTR_ERR(tfm)); + return 0; + } + desc.tfm = tfm; + desc.flags = 0; + + sg_init_one(&sg, message, len); + crypto_hash_digest(&desc, &sg, len, out); + crypto_free_hash(tfm); + + return 1; +} + +int DWC_HMAC_SHA256(uint8_t *message, uint32_t messagelen, + uint8_t *key, uint32_t keylen, uint8_t *out) +{ + struct crypto_hash *tfm; + struct hash_desc desc; + struct scatterlist sg; + + tfm = crypto_alloc_hash("hmac(sha256)", 0, CRYPTO_ALG_ASYNC); + if (IS_ERR(tfm)) { + DWC_ERROR("Failed to load transform for hmac(sha256): %ld", PTR_ERR(tfm)); + return 0; + } + desc.tfm = tfm; + desc.flags = 0; + + sg_init_one(&sg, message, messagelen); + crypto_hash_setkey(tfm, key, keylen); + crypto_hash_digest(&desc, &sg, messagelen, out); + crypto_free_hash(tfm); + + return 1; +} + +#endif /* DWC_CRYPTOLIB */ + + +/* Byte Ordering Conversions */ + +uint32_t DWC_CPU_TO_LE32(uint32_t *p) +{ +#ifdef __LITTLE_ENDIAN + return *p; +#else + uint8_t *u_p = (uint8_t *)p; + + return (u_p[3] | (u_p[2] << 8) | (u_p[1] << 16) | (u_p[0] << 24)); +#endif +} + +uint32_t DWC_CPU_TO_BE32(uint32_t *p) +{ +#ifdef __BIG_ENDIAN + return *p; +#else + uint8_t *u_p = (uint8_t *)p; + + return (u_p[3] | (u_p[2] << 8) | (u_p[1] << 16) | (u_p[0] << 24)); +#endif +} + +uint32_t DWC_LE32_TO_CPU(uint32_t *p) +{ +#ifdef __LITTLE_ENDIAN + return *p; +#else + uint8_t *u_p = (uint8_t *)p; + + return (u_p[3] | (u_p[2] << 8) | (u_p[1] << 16) | (u_p[0] << 24)); +#endif +} + +uint32_t DWC_BE32_TO_CPU(uint32_t *p) +{ +#ifdef __BIG_ENDIAN + return *p; +#else + uint8_t *u_p = (uint8_t *)p; + + return (u_p[3] | (u_p[2] << 8) | (u_p[1] << 16) | (u_p[0] << 24)); +#endif +} + +uint16_t DWC_CPU_TO_LE16(uint16_t *p) +{ +#ifdef __LITTLE_ENDIAN + return *p; +#else + uint8_t *u_p = (uint8_t *)p; + return (u_p[1] | (u_p[0] << 8)); +#endif +} + +uint16_t DWC_CPU_TO_BE16(uint16_t *p) +{ +#ifdef __BIG_ENDIAN + return *p; +#else + uint8_t *u_p = (uint8_t *)p; + return (u_p[1] | (u_p[0] << 8)); +#endif +} + +uint16_t DWC_LE16_TO_CPU(uint16_t *p) +{ +#ifdef __LITTLE_ENDIAN + return *p; +#else + uint8_t *u_p = (uint8_t *)p; + return (u_p[1] | (u_p[0] << 8)); +#endif +} + +uint16_t DWC_BE16_TO_CPU(uint16_t *p) +{ +#ifdef __BIG_ENDIAN + return *p; +#else + uint8_t *u_p = (uint8_t *)p; + return (u_p[1] | (u_p[0] << 8)); +#endif +} + + +/* Registers */ + +uint32_t DWC_READ_REG32(void *io_ctx, uint32_t volatile *reg) +{ + dwc_ioctx_t *io = (dwc_ioctx_t *)io_ctx; + bus_size_t ior = (bus_size_t)reg; + + return bus_space_read_4(io->iot, io->ioh, ior); +} + +#if 0 +uint64_t DWC_READ_REG64(void *io_ctx, uint64_t volatile *reg) +{ + dwc_ioctx_t *io = (dwc_ioctx_t *)io_ctx; + bus_size_t ior = (bus_size_t)reg; + + return bus_space_read_8(io->iot, io->ioh, ior); +} +#endif + +void DWC_WRITE_REG32(void *io_ctx, uint32_t volatile *reg, uint32_t value) +{ + dwc_ioctx_t *io = (dwc_ioctx_t *)io_ctx; + bus_size_t ior = (bus_size_t)reg; + + bus_space_write_4(io->iot, io->ioh, ior, value); +} + +#if 0 +void DWC_WRITE_REG64(void *io_ctx, uint64_t volatile *reg, uint64_t value) +{ + dwc_ioctx_t *io = (dwc_ioctx_t *)io_ctx; + bus_size_t ior = (bus_size_t)reg; + + bus_space_write_8(io->iot, io->ioh, ior, value); +} +#endif + +void DWC_MODIFY_REG32(void *io_ctx, uint32_t volatile *reg, uint32_t clear_mask, + uint32_t set_mask) +{ + dwc_ioctx_t *io = (dwc_ioctx_t *)io_ctx; + bus_size_t ior = (bus_size_t)reg; + + bus_space_write_4(io->iot, io->ioh, ior, + (bus_space_read_4(io->iot, io->ioh, ior) & + ~clear_mask) | set_mask); +} + +#if 0 +void DWC_MODIFY_REG64(void *io_ctx, uint64_t volatile *reg, uint64_t clear_mask, + uint64_t set_mask) +{ + dwc_ioctx_t *io = (dwc_ioctx_t *)io_ctx; + bus_size_t ior = (bus_size_t)reg; + + bus_space_write_8(io->iot, io->ioh, ior, + (bus_space_read_8(io->iot, io->ioh, ior) & + ~clear_mask) | set_mask); +} +#endif + + +/* Locking */ + +dwc_spinlock_t *DWC_SPINLOCK_ALLOC(void) +{ + struct mtx *sl = DWC_ALLOC(sizeof(*sl)); + + if (!sl) { + DWC_ERROR("Cannot allocate memory for spinlock"); + return NULL; + } + + mtx_init(sl, "dw3spn", NULL, MTX_SPIN); + return (dwc_spinlock_t *)sl; +} + +void DWC_SPINLOCK_FREE(dwc_spinlock_t *lock) +{ + struct mtx *sl = (struct mtx *)lock; + + mtx_destroy(sl); + DWC_FREE(sl); +} + +void DWC_SPINLOCK(dwc_spinlock_t *lock) +{ + mtx_lock_spin((struct mtx *)lock); // ??? +} + +void DWC_SPINUNLOCK(dwc_spinlock_t *lock) +{ + mtx_unlock_spin((struct mtx *)lock); // ??? +} + +void DWC_SPINLOCK_IRQSAVE(dwc_spinlock_t *lock, dwc_irqflags_t *flags) +{ + mtx_lock_spin((struct mtx *)lock); +} + +void DWC_SPINUNLOCK_IRQRESTORE(dwc_spinlock_t *lock, dwc_irqflags_t flags) +{ + mtx_unlock_spin((struct mtx *)lock); +} + +dwc_mutex_t *DWC_MUTEX_ALLOC(void) +{ + struct mtx *m; + dwc_mutex_t *mutex = (dwc_mutex_t *)DWC_ALLOC(sizeof(struct mtx)); + + if (!mutex) { + DWC_ERROR("Cannot allocate memory for mutex"); + return NULL; + } + + m = (struct mtx *)mutex; + mtx_init(m, "dw3mtx", NULL, MTX_DEF); + return mutex; +} + +#if (defined(DWC_LINUX) && defined(CONFIG_DEBUG_MUTEXES)) +#else +void DWC_MUTEX_FREE(dwc_mutex_t *mutex) +{ + mtx_destroy((struct mtx *)mutex); + DWC_FREE(mutex); +} +#endif + +void DWC_MUTEX_LOCK(dwc_mutex_t *mutex) +{ + struct mtx *m = (struct mtx *)mutex; + + mtx_lock(m); +} + +int DWC_MUTEX_TRYLOCK(dwc_mutex_t *mutex) +{ + struct mtx *m = (struct mtx *)mutex; + + return mtx_trylock(m); +} + +void DWC_MUTEX_UNLOCK(dwc_mutex_t *mutex) +{ + struct mtx *m = (struct mtx *)mutex; + + mtx_unlock(m); +} + + +/* Timing */ + +void DWC_UDELAY(uint32_t usecs) +{ + DELAY(usecs); +} + +void DWC_MDELAY(uint32_t msecs) +{ + do { + DELAY(1000); + } while (--msecs); +} + +void DWC_MSLEEP(uint32_t msecs) +{ + struct timeval tv; + + tv.tv_sec = msecs / 1000; + tv.tv_usec = (msecs - tv.tv_sec * 1000) * 1000; + pause("dw3slp", tvtohz(&tv)); +} + +uint32_t DWC_TIME(void) +{ + struct timeval tv; + + microuptime(&tv); // or getmicrouptime? (less precise, but faster) + return tv.tv_sec * 1000 + tv.tv_usec / 1000; +} + + +/* Timers */ + +struct dwc_timer { + struct callout t; + char *name; + dwc_spinlock_t *lock; + dwc_timer_callback_t cb; + void *data; +}; + +dwc_timer_t *DWC_TIMER_ALLOC(char *name, dwc_timer_callback_t cb, void *data) +{ + dwc_timer_t *t = DWC_ALLOC(sizeof(*t)); + + if (!t) { + DWC_ERROR("Cannot allocate memory for timer"); + return NULL; + } + + callout_init(&t->t, 1); + + t->name = DWC_STRDUP(name); + if (!t->name) { + DWC_ERROR("Cannot allocate memory for timer->name"); + goto no_name; + } + + t->lock = DWC_SPINLOCK_ALLOC(); + if (!t->lock) { + DWC_ERROR("Cannot allocate memory for lock"); + goto no_lock; + } + + t->cb = cb; + t->data = data; + + return t; + + no_lock: + DWC_FREE(t->name); + no_name: + DWC_FREE(t); + + return NULL; +} + +void DWC_TIMER_FREE(dwc_timer_t *timer) +{ + callout_stop(&timer->t); + DWC_SPINLOCK_FREE(timer->lock); + DWC_FREE(timer->name); + DWC_FREE(timer); +} + +void DWC_TIMER_SCHEDULE(dwc_timer_t *timer, uint32_t time) +{ + struct timeval tv; + + tv.tv_sec = time / 1000; + tv.tv_usec = (time - tv.tv_sec * 1000) * 1000; + callout_reset(&timer->t, tvtohz(&tv), timer->cb, timer->data); +} + +void DWC_TIMER_CANCEL(dwc_timer_t *timer) +{ + callout_stop(&timer->t); +} + + +/* Wait Queues */ + +struct dwc_waitq { + struct mtx lock; + int abort; +}; + +dwc_waitq_t *DWC_WAITQ_ALLOC(void) +{ + dwc_waitq_t *wq = DWC_ALLOC(sizeof(*wq)); + + if (!wq) { + DWC_ERROR("Cannot allocate memory for waitqueue"); + return NULL; + } + + mtx_init(&wq->lock, "dw3wtq", NULL, MTX_DEF); + wq->abort = 0; + + return wq; +} + +void DWC_WAITQ_FREE(dwc_waitq_t *wq) +{ + mtx_destroy(&wq->lock); + DWC_FREE(wq); +} + +int32_t DWC_WAITQ_WAIT(dwc_waitq_t *wq, dwc_waitq_condition_t cond, void *data) +{ +// intrmask_t ipl; + int result = 0; + + mtx_lock(&wq->lock); +// ipl = splbio(); + + /* Skip the sleep if already aborted or triggered */ + if (!wq->abort && !cond(data)) { +// splx(ipl); + result = msleep(wq, &wq->lock, PCATCH, "dw3wat", 0); // infinite timeout +// ipl = splbio(); + } + + if (result == ERESTART) { // signaled - restart + result = -DWC_E_RESTART; + + } else if (result == EINTR) { // signaled - interrupt + result = -DWC_E_ABORT; + + } else if (wq->abort) { + result = -DWC_E_ABORT; + + } else { + result = 0; + } + + wq->abort = 0; +// splx(ipl); + mtx_unlock(&wq->lock); + return result; +} + +int32_t DWC_WAITQ_WAIT_TIMEOUT(dwc_waitq_t *wq, dwc_waitq_condition_t cond, + void *data, int32_t msecs) +{ + struct timeval tv, tv1, tv2; +// intrmask_t ipl; + int result = 0; + + tv.tv_sec = msecs / 1000; + tv.tv_usec = (msecs - tv.tv_sec * 1000) * 1000; + + mtx_lock(&wq->lock); +// ipl = splbio(); + + /* Skip the sleep if already aborted or triggered */ + if (!wq->abort && !cond(data)) { +// splx(ipl); + getmicrouptime(&tv1); + result = msleep(wq, &wq->lock, PCATCH, "dw3wto", tvtohz(&tv)); + getmicrouptime(&tv2); +// ipl = splbio(); + } + + if (result == 0) { // awoken + if (wq->abort) { + result = -DWC_E_ABORT; + } else { + tv2.tv_usec -= tv1.tv_usec; + if (tv2.tv_usec < 0) { + tv2.tv_usec += 1000000; + tv2.tv_sec--; + } + + tv2.tv_sec -= tv1.tv_sec; + result = tv2.tv_sec * 1000 + tv2.tv_usec / 1000; + result = msecs - result; + if (result <= 0) + result = 1; + } + } else if (result == ERESTART) { // signaled - restart + result = -DWC_E_RESTART; + + } else if (result == EINTR) { // signaled - interrupt + result = -DWC_E_ABORT; + + } else { // timed out + result = -DWC_E_TIMEOUT; + } + + wq->abort = 0; +// splx(ipl); + mtx_unlock(&wq->lock); + return result; +} + +void DWC_WAITQ_TRIGGER(dwc_waitq_t *wq) +{ + wakeup(wq); +} + +void DWC_WAITQ_ABORT(dwc_waitq_t *wq) +{ +// intrmask_t ipl; + + mtx_lock(&wq->lock); +// ipl = splbio(); + wq->abort = 1; + wakeup(wq); +// splx(ipl); + mtx_unlock(&wq->lock); +} + + +/* Threading */ + +struct dwc_thread { + struct proc *proc; + int abort; +}; + +dwc_thread_t *DWC_THREAD_RUN(dwc_thread_function_t func, char *name, void *data) +{ + int retval; + dwc_thread_t *thread = DWC_ALLOC(sizeof(*thread)); + + if (!thread) { + return NULL; + } + + thread->abort = 0; + retval = kthread_create((void (*)(void *))func, data, &thread->proc, + RFPROC | RFNOWAIT, 0, "%s", name); + if (retval) { + DWC_FREE(thread); + return NULL; + } + + return thread; +} + +int DWC_THREAD_STOP(dwc_thread_t *thread) +{ + int retval; + + thread->abort = 1; + retval = tsleep(&thread->abort, 0, "dw3stp", 60 * hz); + + if (retval == 0) { + /* DWC_THREAD_EXIT() will free the thread struct */ + return 0; + } + + /* NOTE: We leak the thread struct if thread doesn't die */ + + if (retval == EWOULDBLOCK) { + return -DWC_E_TIMEOUT; + } + + return -DWC_E_UNKNOWN; +} + +dwc_bool_t DWC_THREAD_SHOULD_STOP(dwc_thread_t *thread) +{ + return thread->abort; +} + +void DWC_THREAD_EXIT(dwc_thread_t *thread) +{ + wakeup(&thread->abort); + DWC_FREE(thread); + kthread_exit(0); +} + + +/* tasklets + - Runs in interrupt context (cannot sleep) + - Each tasklet runs on a single CPU [ How can we ensure this on FreeBSD? Does it matter? ] + - Different tasklets can be running simultaneously on different CPUs [ shouldn't matter ] + */ +struct dwc_tasklet { + struct task t; + dwc_tasklet_callback_t cb; + void *data; +}; + +static void tasklet_callback(void *data, int pending) // what to do with pending ??? +{ + dwc_tasklet_t *task = (dwc_tasklet_t *)data; + + task->cb(task->data); +} + +dwc_tasklet_t *DWC_TASK_ALLOC(char *name, dwc_tasklet_callback_t cb, void *data) +{ + dwc_tasklet_t *task = DWC_ALLOC(sizeof(*task)); + + if (task) { + task->cb = cb; + task->data = data; + TASK_INIT(&task->t, 0, tasklet_callback, task); + } else { + DWC_ERROR("Cannot allocate memory for tasklet"); + } + + return task; +} + +void DWC_TASK_FREE(dwc_tasklet_t *task) +{ + taskqueue_drain(taskqueue_fast, &task->t); // ??? + DWC_FREE(task); +} + +void DWC_TASK_SCHEDULE(dwc_tasklet_t *task) +{ + /* Uses predefined system queue */ + taskqueue_enqueue_fast(taskqueue_fast, &task->t); +} + + +/* workqueues + - Runs in process context (can sleep) + */ +typedef struct work_container { + dwc_work_callback_t cb; + void *data; + dwc_workq_t *wq; + char *name; + int hz; + +#ifdef DEBUG + DWC_CIRCLEQ_ENTRY(work_container) entry; +#endif + struct task task; +} work_container_t; + +#ifdef DEBUG +DWC_CIRCLEQ_HEAD(work_container_queue, work_container); +#endif + +struct dwc_workq { + struct taskqueue *taskq; + dwc_spinlock_t *lock; + dwc_waitq_t *waitq; + int pending; + +#ifdef DEBUG + struct work_container_queue entries; +#endif +}; + +static void do_work(void *data, int pending) // what to do with pending ??? +{ + work_container_t *container = (work_container_t *)data; + dwc_workq_t *wq = container->wq; + dwc_irqflags_t flags; + + if (container->hz) { + pause("dw3wrk", container->hz); + } + + container->cb(container->data); + DWC_DEBUG("Work done: %s, container=%p", container->name, container); + + DWC_SPINLOCK_IRQSAVE(wq->lock, &flags); + +#ifdef DEBUG + DWC_CIRCLEQ_REMOVE(&wq->entries, container, entry); +#endif + if (container->name) + DWC_FREE(container->name); + DWC_FREE(container); + wq->pending--; + DWC_SPINUNLOCK_IRQRESTORE(wq->lock, flags); + DWC_WAITQ_TRIGGER(wq->waitq); +} + +static int work_done(void *data) +{ + dwc_workq_t *workq = (dwc_workq_t *)data; + + return workq->pending == 0; +} + +int DWC_WORKQ_WAIT_WORK_DONE(dwc_workq_t *workq, int timeout) +{ + return DWC_WAITQ_WAIT_TIMEOUT(workq->waitq, work_done, workq, timeout); +} + +dwc_workq_t *DWC_WORKQ_ALLOC(char *name) +{ + dwc_workq_t *wq = DWC_ALLOC(sizeof(*wq)); + + if (!wq) { + DWC_ERROR("Cannot allocate memory for workqueue"); + return NULL; + } + + wq->taskq = taskqueue_create(name, M_NOWAIT, taskqueue_thread_enqueue, &wq->taskq); + if (!wq->taskq) { + DWC_ERROR("Cannot allocate memory for taskqueue"); + goto no_taskq; + } + + wq->pending = 0; + + wq->lock = DWC_SPINLOCK_ALLOC(); + if (!wq->lock) { + DWC_ERROR("Cannot allocate memory for spinlock"); + goto no_lock; + } + + wq->waitq = DWC_WAITQ_ALLOC(); + if (!wq->waitq) { + DWC_ERROR("Cannot allocate memory for waitqueue"); + goto no_waitq; + } + + taskqueue_start_threads(&wq->taskq, 1, PWAIT, "%s taskq", "dw3tsk"); + +#ifdef DEBUG + DWC_CIRCLEQ_INIT(&wq->entries); +#endif + return wq; + + no_waitq: + DWC_SPINLOCK_FREE(wq->lock); + no_lock: + taskqueue_free(wq->taskq); + no_taskq: + DWC_FREE(wq); + + return NULL; +} + +void DWC_WORKQ_FREE(dwc_workq_t *wq) +{ +#ifdef DEBUG + dwc_irqflags_t flags; + + DWC_SPINLOCK_IRQSAVE(wq->lock, &flags); + + if (wq->pending != 0) { + struct work_container *container; + + DWC_ERROR("Destroying work queue with pending work"); + + DWC_CIRCLEQ_FOREACH(container, &wq->entries, entry) { + DWC_ERROR("Work %s still pending", container->name); + } + } + + DWC_SPINUNLOCK_IRQRESTORE(wq->lock, flags); +#endif + DWC_WAITQ_FREE(wq->waitq); + DWC_SPINLOCK_FREE(wq->lock); + taskqueue_free(wq->taskq); + DWC_FREE(wq); +} + +void DWC_WORKQ_SCHEDULE(dwc_workq_t *wq, dwc_work_callback_t cb, void *data, + char *format, ...) +{ + dwc_irqflags_t flags; + work_container_t *container; + static char name[128]; + va_list args; + + va_start(args, format); + DWC_VSNPRINTF(name, 128, format, args); + va_end(args); + + DWC_SPINLOCK_IRQSAVE(wq->lock, &flags); + wq->pending++; + DWC_SPINUNLOCK_IRQRESTORE(wq->lock, flags); + DWC_WAITQ_TRIGGER(wq->waitq); + + container = DWC_ALLOC_ATOMIC(sizeof(*container)); + if (!container) { + DWC_ERROR("Cannot allocate memory for container"); + return; + } + + container->name = DWC_STRDUP(name); + if (!container->name) { + DWC_ERROR("Cannot allocate memory for container->name"); + DWC_FREE(container); + return; + } + + container->cb = cb; + container->data = data; + container->wq = wq; + container->hz = 0; + + DWC_DEBUG("Queueing work: %s, container=%p", container->name, container); + + TASK_INIT(&container->task, 0, do_work, container); + +#ifdef DEBUG + DWC_CIRCLEQ_INSERT_TAIL(&wq->entries, container, entry); +#endif + taskqueue_enqueue_fast(wq->taskq, &container->task); +} + +void DWC_WORKQ_SCHEDULE_DELAYED(dwc_workq_t *wq, dwc_work_callback_t cb, + void *data, uint32_t time, char *format, ...) +{ + dwc_irqflags_t flags; + work_container_t *container; + static char name[128]; + struct timeval tv; + va_list args; + + va_start(args, format); + DWC_VSNPRINTF(name, 128, format, args); + va_end(args); + + DWC_SPINLOCK_IRQSAVE(wq->lock, &flags); + wq->pending++; + DWC_SPINUNLOCK_IRQRESTORE(wq->lock, flags); + DWC_WAITQ_TRIGGER(wq->waitq); + + container = DWC_ALLOC_ATOMIC(sizeof(*container)); + if (!container) { + DWC_ERROR("Cannot allocate memory for container"); + return; + } + + container->name = DWC_STRDUP(name); + if (!container->name) { + DWC_ERROR("Cannot allocate memory for container->name"); + DWC_FREE(container); + return; + } + + container->cb = cb; + container->data = data; + container->wq = wq; + + tv.tv_sec = time / 1000; + tv.tv_usec = (time - tv.tv_sec * 1000) * 1000; + container->hz = tvtohz(&tv); + + DWC_DEBUG("Queueing work: %s, container=%p", container->name, container); + + TASK_INIT(&container->task, 0, do_work, container); + +#ifdef DEBUG + DWC_CIRCLEQ_INSERT_TAIL(&wq->entries, container, entry); +#endif + taskqueue_enqueue_fast(wq->taskq, &container->task); +} + +int DWC_WORKQ_PENDING(dwc_workq_t *wq) +{ + return wq->pending; +} --- linux-raspi2-4.2.0.orig/drivers/usb/host/dwc_common_port/dwc_common_linux.c +++ linux-raspi2-4.2.0/drivers/usb/host/dwc_common_port/dwc_common_linux.c @@ -0,0 +1,1433 @@ +#include +#include +#include +#include + +#ifdef DWC_CCLIB +# include "dwc_cc.h" +#endif + +#ifdef DWC_CRYPTOLIB +# include "dwc_modpow.h" +# include "dwc_dh.h" +# include "dwc_crypto.h" +#endif + +#ifdef DWC_NOTIFYLIB +# include "dwc_notifier.h" +#endif + +/* OS-Level Implementations */ + +/* This is the Linux kernel implementation of the DWC platform library. */ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,24) +# include +#else +# include +#endif + +#include +#include +#include +#include + +#include "dwc_os.h" +#include "dwc_list.h" + + +/* MISC */ + +void *DWC_MEMSET(void *dest, uint8_t byte, uint32_t size) +{ + return memset(dest, byte, size); +} + +void *DWC_MEMCPY(void *dest, void const *src, uint32_t size) +{ + return memcpy(dest, src, size); +} + +void *DWC_MEMMOVE(void *dest, void *src, uint32_t size) +{ + return memmove(dest, src, size); +} + +int DWC_MEMCMP(void *m1, void *m2, uint32_t size) +{ + return memcmp(m1, m2, size); +} + +int DWC_STRNCMP(void *s1, void *s2, uint32_t size) +{ + return strncmp(s1, s2, size); +} + +int DWC_STRCMP(void *s1, void *s2) +{ + return strcmp(s1, s2); +} + +int DWC_STRLEN(char const *str) +{ + return strlen(str); +} + +char *DWC_STRCPY(char *to, char const *from) +{ + return strcpy(to, from); +} + +char *DWC_STRDUP(char const *str) +{ + int len = DWC_STRLEN(str) + 1; + char *new = DWC_ALLOC_ATOMIC(len); + + if (!new) { + return NULL; + } + + DWC_MEMCPY(new, str, len); + return new; +} + +int DWC_ATOI(const char *str, int32_t *value) +{ + char *end = NULL; + + *value = simple_strtol(str, &end, 0); + if (*end == '\0') { + return 0; + } + + return -1; +} + +int DWC_ATOUI(const char *str, uint32_t *value) +{ + char *end = NULL; + + *value = simple_strtoul(str, &end, 0); + if (*end == '\0') { + return 0; + } + + return -1; +} + + +#ifdef DWC_UTFLIB +/* From usbstring.c */ + +int DWC_UTF8_TO_UTF16LE(uint8_t const *s, uint16_t *cp, unsigned len) +{ + int count = 0; + u8 c; + u16 uchar; + + /* this insists on correct encodings, though not minimal ones. + * BUT it currently rejects legit 4-byte UTF-8 code points, + * which need surrogate pairs. (Unicode 3.1 can use them.) + */ + while (len != 0 && (c = (u8) *s++) != 0) { + if (unlikely(c & 0x80)) { + // 2-byte sequence: + // 00000yyyyyxxxxxx = 110yyyyy 10xxxxxx + if ((c & 0xe0) == 0xc0) { + uchar = (c & 0x1f) << 6; + + c = (u8) *s++; + if ((c & 0xc0) != 0xc0) + goto fail; + c &= 0x3f; + uchar |= c; + + // 3-byte sequence (most CJKV characters): + // zzzzyyyyyyxxxxxx = 1110zzzz 10yyyyyy 10xxxxxx + } else if ((c & 0xf0) == 0xe0) { + uchar = (c & 0x0f) << 12; + + c = (u8) *s++; + if ((c & 0xc0) != 0xc0) + goto fail; + c &= 0x3f; + uchar |= c << 6; + + c = (u8) *s++; + if ((c & 0xc0) != 0xc0) + goto fail; + c &= 0x3f; + uchar |= c; + + /* no bogus surrogates */ + if (0xd800 <= uchar && uchar <= 0xdfff) + goto fail; + + // 4-byte sequence (surrogate pairs, currently rare): + // 11101110wwwwzzzzyy + 110111yyyyxxxxxx + // = 11110uuu 10uuzzzz 10yyyyyy 10xxxxxx + // (uuuuu = wwww + 1) + // FIXME accept the surrogate code points (only) + } else + goto fail; + } else + uchar = c; + put_unaligned (cpu_to_le16 (uchar), cp++); + count++; + len--; + } + return count; +fail: + return -1; +} +#endif /* DWC_UTFLIB */ + + +/* dwc_debug.h */ + +dwc_bool_t DWC_IN_IRQ(void) +{ + return in_irq(); +} + +dwc_bool_t DWC_IN_BH(void) +{ + return in_softirq(); +} + +void DWC_VPRINTF(char *format, va_list args) +{ + vprintk(format, args); +} + +int DWC_VSNPRINTF(char *str, int size, char *format, va_list args) +{ + return vsnprintf(str, size, format, args); +} + +void DWC_PRINTF(char *format, ...) +{ + va_list args; + + va_start(args, format); + DWC_VPRINTF(format, args); + va_end(args); +} + +int DWC_SPRINTF(char *buffer, char *format, ...) +{ + int retval; + va_list args; + + va_start(args, format); + retval = vsprintf(buffer, format, args); + va_end(args); + return retval; +} + +int DWC_SNPRINTF(char *buffer, int size, char *format, ...) +{ + int retval; + va_list args; + + va_start(args, format); + retval = vsnprintf(buffer, size, format, args); + va_end(args); + return retval; +} + +void __DWC_WARN(char *format, ...) +{ + va_list args; + + va_start(args, format); + DWC_PRINTF(KERN_WARNING); + DWC_VPRINTF(format, args); + va_end(args); +} + +void __DWC_ERROR(char *format, ...) +{ + va_list args; + + va_start(args, format); + DWC_PRINTF(KERN_ERR); + DWC_VPRINTF(format, args); + va_end(args); +} + +void DWC_EXCEPTION(char *format, ...) +{ + va_list args; + + va_start(args, format); + DWC_PRINTF(KERN_ERR); + DWC_VPRINTF(format, args); + va_end(args); + BUG_ON(1); +} + +#ifdef DEBUG +void __DWC_DEBUG(char *format, ...) +{ + va_list args; + + va_start(args, format); + DWC_PRINTF(KERN_DEBUG); + DWC_VPRINTF(format, args); + va_end(args); +} +#endif + + +/* dwc_mem.h */ + +#if 0 +dwc_pool_t *DWC_DMA_POOL_CREATE(uint32_t size, + uint32_t align, + uint32_t alloc) +{ + struct dma_pool *pool = dma_pool_create("Pool", NULL, + size, align, alloc); + return (dwc_pool_t *)pool; +} + +void DWC_DMA_POOL_DESTROY(dwc_pool_t *pool) +{ + dma_pool_destroy((struct dma_pool *)pool); +} + +void *DWC_DMA_POOL_ALLOC(dwc_pool_t *pool, uint64_t *dma_addr) +{ + return dma_pool_alloc((struct dma_pool *)pool, GFP_KERNEL, dma_addr); +} + +void *DWC_DMA_POOL_ZALLOC(dwc_pool_t *pool, uint64_t *dma_addr) +{ + void *vaddr = DWC_DMA_POOL_ALLOC(pool, dma_addr); + memset(..); +} + +void DWC_DMA_POOL_FREE(dwc_pool_t *pool, void *vaddr, void *daddr) +{ + dma_pool_free(pool, vaddr, daddr); +} +#endif + +void *__DWC_DMA_ALLOC(void *dma_ctx, uint32_t size, dwc_dma_t *dma_addr) +{ +#ifdef xxCOSIM /* Only works for 32-bit cosim */ + void *buf = dma_alloc_coherent(dma_ctx, (size_t)size, dma_addr, GFP_KERNEL); +#else + void *buf = dma_alloc_coherent(dma_ctx, (size_t)size, dma_addr, GFP_KERNEL | GFP_DMA32); +#endif + if (!buf) { + return NULL; + } + + memset(buf, 0, (size_t)size); + return buf; +} + +void *__DWC_DMA_ALLOC_ATOMIC(void *dma_ctx, uint32_t size, dwc_dma_t *dma_addr) +{ + void *buf = dma_alloc_coherent(NULL, (size_t)size, dma_addr, GFP_ATOMIC); + if (!buf) { + return NULL; + } + memset(buf, 0, (size_t)size); + return buf; +} + +void __DWC_DMA_FREE(void *dma_ctx, uint32_t size, void *virt_addr, dwc_dma_t dma_addr) +{ + dma_free_coherent(dma_ctx, size, virt_addr, dma_addr); +} + +void *__DWC_ALLOC(void *mem_ctx, uint32_t size) +{ + return kzalloc(size, GFP_KERNEL); +} + +void *__DWC_ALLOC_ATOMIC(void *mem_ctx, uint32_t size) +{ + return kzalloc(size, GFP_ATOMIC); +} + +void __DWC_FREE(void *mem_ctx, void *addr) +{ + kfree(addr); +} + + +#ifdef DWC_CRYPTOLIB +/* dwc_crypto.h */ + +void DWC_RANDOM_BYTES(uint8_t *buffer, uint32_t length) +{ + get_random_bytes(buffer, length); +} + +int DWC_AES_CBC(uint8_t *message, uint32_t messagelen, uint8_t *key, uint32_t keylen, uint8_t iv[16], uint8_t *out) +{ + struct crypto_blkcipher *tfm; + struct blkcipher_desc desc; + struct scatterlist sgd; + struct scatterlist sgs; + + tfm = crypto_alloc_blkcipher("cbc(aes)", 0, CRYPTO_ALG_ASYNC); + if (tfm == NULL) { + printk("failed to load transform for aes CBC\n"); + return -1; + } + + crypto_blkcipher_setkey(tfm, key, keylen); + crypto_blkcipher_set_iv(tfm, iv, 16); + + sg_init_one(&sgd, out, messagelen); + sg_init_one(&sgs, message, messagelen); + + desc.tfm = tfm; + desc.flags = 0; + + if (crypto_blkcipher_encrypt(&desc, &sgd, &sgs, messagelen)) { + crypto_free_blkcipher(tfm); + DWC_ERROR("AES CBC encryption failed"); + return -1; + } + + crypto_free_blkcipher(tfm); + return 0; +} + +int DWC_SHA256(uint8_t *message, uint32_t len, uint8_t *out) +{ + struct crypto_hash *tfm; + struct hash_desc desc; + struct scatterlist sg; + + tfm = crypto_alloc_hash("sha256", 0, CRYPTO_ALG_ASYNC); + if (IS_ERR(tfm)) { + DWC_ERROR("Failed to load transform for sha256: %ld\n", PTR_ERR(tfm)); + return 0; + } + desc.tfm = tfm; + desc.flags = 0; + + sg_init_one(&sg, message, len); + crypto_hash_digest(&desc, &sg, len, out); + crypto_free_hash(tfm); + + return 1; +} + +int DWC_HMAC_SHA256(uint8_t *message, uint32_t messagelen, + uint8_t *key, uint32_t keylen, uint8_t *out) +{ + struct crypto_hash *tfm; + struct hash_desc desc; + struct scatterlist sg; + + tfm = crypto_alloc_hash("hmac(sha256)", 0, CRYPTO_ALG_ASYNC); + if (IS_ERR(tfm)) { + DWC_ERROR("Failed to load transform for hmac(sha256): %ld\n", PTR_ERR(tfm)); + return 0; + } + desc.tfm = tfm; + desc.flags = 0; + + sg_init_one(&sg, message, messagelen); + crypto_hash_setkey(tfm, key, keylen); + crypto_hash_digest(&desc, &sg, messagelen, out); + crypto_free_hash(tfm); + + return 1; +} +#endif /* DWC_CRYPTOLIB */ + + +/* Byte Ordering Conversions */ + +uint32_t DWC_CPU_TO_LE32(uint32_t *p) +{ +#ifdef __LITTLE_ENDIAN + return *p; +#else + uint8_t *u_p = (uint8_t *)p; + + return (u_p[3] | (u_p[2] << 8) | (u_p[1] << 16) | (u_p[0] << 24)); +#endif +} + +uint32_t DWC_CPU_TO_BE32(uint32_t *p) +{ +#ifdef __BIG_ENDIAN + return *p; +#else + uint8_t *u_p = (uint8_t *)p; + + return (u_p[3] | (u_p[2] << 8) | (u_p[1] << 16) | (u_p[0] << 24)); +#endif +} + +uint32_t DWC_LE32_TO_CPU(uint32_t *p) +{ +#ifdef __LITTLE_ENDIAN + return *p; +#else + uint8_t *u_p = (uint8_t *)p; + + return (u_p[3] | (u_p[2] << 8) | (u_p[1] << 16) | (u_p[0] << 24)); +#endif +} + +uint32_t DWC_BE32_TO_CPU(uint32_t *p) +{ +#ifdef __BIG_ENDIAN + return *p; +#else + uint8_t *u_p = (uint8_t *)p; + + return (u_p[3] | (u_p[2] << 8) | (u_p[1] << 16) | (u_p[0] << 24)); +#endif +} + +uint16_t DWC_CPU_TO_LE16(uint16_t *p) +{ +#ifdef __LITTLE_ENDIAN + return *p; +#else + uint8_t *u_p = (uint8_t *)p; + return (u_p[1] | (u_p[0] << 8)); +#endif +} + +uint16_t DWC_CPU_TO_BE16(uint16_t *p) +{ +#ifdef __BIG_ENDIAN + return *p; +#else + uint8_t *u_p = (uint8_t *)p; + return (u_p[1] | (u_p[0] << 8)); +#endif +} + +uint16_t DWC_LE16_TO_CPU(uint16_t *p) +{ +#ifdef __LITTLE_ENDIAN + return *p; +#else + uint8_t *u_p = (uint8_t *)p; + return (u_p[1] | (u_p[0] << 8)); +#endif +} + +uint16_t DWC_BE16_TO_CPU(uint16_t *p) +{ +#ifdef __BIG_ENDIAN + return *p; +#else + uint8_t *u_p = (uint8_t *)p; + return (u_p[1] | (u_p[0] << 8)); +#endif +} + + +/* Registers */ + +uint32_t DWC_READ_REG32(uint32_t volatile *reg) +{ + return readl(reg); +} + +#if 0 +uint64_t DWC_READ_REG64(uint64_t volatile *reg) +{ +} +#endif + +void DWC_WRITE_REG32(uint32_t volatile *reg, uint32_t value) +{ + writel(value, reg); +} + +#if 0 +void DWC_WRITE_REG64(uint64_t volatile *reg, uint64_t value) +{ +} +#endif + +void DWC_MODIFY_REG32(uint32_t volatile *reg, uint32_t clear_mask, uint32_t set_mask) +{ + writel((readl(reg) & ~clear_mask) | set_mask, reg); +} + +#if 0 +void DWC_MODIFY_REG64(uint64_t volatile *reg, uint64_t clear_mask, uint64_t set_mask) +{ +} +#endif + + +/* Locking */ + +dwc_spinlock_t *DWC_SPINLOCK_ALLOC(void) +{ + spinlock_t *sl = (spinlock_t *)1; + +#if defined(CONFIG_PREEMPT) || defined(CONFIG_SMP) + sl = DWC_ALLOC(sizeof(*sl)); + if (!sl) { + DWC_ERROR("Cannot allocate memory for spinlock\n"); + return NULL; + } + + spin_lock_init(sl); +#endif + return (dwc_spinlock_t *)sl; +} + +void DWC_SPINLOCK_FREE(dwc_spinlock_t *lock) +{ +#if defined(CONFIG_PREEMPT) || defined(CONFIG_SMP) + DWC_FREE(lock); +#endif +} + +void DWC_SPINLOCK(dwc_spinlock_t *lock) +{ +#if defined(CONFIG_PREEMPT) || defined(CONFIG_SMP) + spin_lock((spinlock_t *)lock); +#endif +} + +void DWC_SPINUNLOCK(dwc_spinlock_t *lock) +{ +#if defined(CONFIG_PREEMPT) || defined(CONFIG_SMP) + spin_unlock((spinlock_t *)lock); +#endif +} + +void DWC_SPINLOCK_IRQSAVE(dwc_spinlock_t *lock, dwc_irqflags_t *flags) +{ + dwc_irqflags_t f; + +#if defined(CONFIG_PREEMPT) || defined(CONFIG_SMP) + spin_lock_irqsave((spinlock_t *)lock, f); +#else + local_irq_save(f); +#endif + *flags = f; +} + +void DWC_SPINUNLOCK_IRQRESTORE(dwc_spinlock_t *lock, dwc_irqflags_t flags) +{ +#if defined(CONFIG_PREEMPT) || defined(CONFIG_SMP) + spin_unlock_irqrestore((spinlock_t *)lock, flags); +#else + local_irq_restore(flags); +#endif +} + +dwc_mutex_t *DWC_MUTEX_ALLOC(void) +{ + struct mutex *m; + dwc_mutex_t *mutex = (dwc_mutex_t *)DWC_ALLOC(sizeof(struct mutex)); + + if (!mutex) { + DWC_ERROR("Cannot allocate memory for mutex\n"); + return NULL; + } + + m = (struct mutex *)mutex; + mutex_init(m); + return mutex; +} + +#if (defined(DWC_LINUX) && defined(CONFIG_DEBUG_MUTEXES)) +#else +void DWC_MUTEX_FREE(dwc_mutex_t *mutex) +{ + mutex_destroy((struct mutex *)mutex); + DWC_FREE(mutex); +} +#endif + +void DWC_MUTEX_LOCK(dwc_mutex_t *mutex) +{ + struct mutex *m = (struct mutex *)mutex; + mutex_lock(m); +} + +int DWC_MUTEX_TRYLOCK(dwc_mutex_t *mutex) +{ + struct mutex *m = (struct mutex *)mutex; + return mutex_trylock(m); +} + +void DWC_MUTEX_UNLOCK(dwc_mutex_t *mutex) +{ + struct mutex *m = (struct mutex *)mutex; + mutex_unlock(m); +} + + +/* Timing */ + +void DWC_UDELAY(uint32_t usecs) +{ + udelay(usecs); +} + +void DWC_MDELAY(uint32_t msecs) +{ + mdelay(msecs); +} + +void DWC_MSLEEP(uint32_t msecs) +{ + msleep(msecs); +} + +uint32_t DWC_TIME(void) +{ + return jiffies_to_msecs(jiffies); +} + + +/* Timers */ + +struct dwc_timer { + struct timer_list *t; + char *name; + dwc_timer_callback_t cb; + void *data; + uint8_t scheduled; + dwc_spinlock_t *lock; +}; + +static void timer_callback(unsigned long data) +{ + dwc_timer_t *timer = (dwc_timer_t *)data; + dwc_irqflags_t flags; + + DWC_SPINLOCK_IRQSAVE(timer->lock, &flags); + timer->scheduled = 0; + DWC_SPINUNLOCK_IRQRESTORE(timer->lock, flags); + DWC_DEBUGC("Timer %s callback", timer->name); + timer->cb(timer->data); +} + +dwc_timer_t *DWC_TIMER_ALLOC(char *name, dwc_timer_callback_t cb, void *data) +{ + dwc_timer_t *t = DWC_ALLOC(sizeof(*t)); + + if (!t) { + DWC_ERROR("Cannot allocate memory for timer"); + return NULL; + } + + t->t = DWC_ALLOC(sizeof(*t->t)); + if (!t->t) { + DWC_ERROR("Cannot allocate memory for timer->t"); + goto no_timer; + } + + t->name = DWC_STRDUP(name); + if (!t->name) { + DWC_ERROR("Cannot allocate memory for timer->name"); + goto no_name; + } + +#if (defined(DWC_LINUX) && defined(CONFIG_DEBUG_SPINLOCK)) + DWC_SPINLOCK_ALLOC_LINUX_DEBUG(t->lock); +#else + t->lock = DWC_SPINLOCK_ALLOC(); +#endif + if (!t->lock) { + DWC_ERROR("Cannot allocate memory for lock"); + goto no_lock; + } + + t->scheduled = 0; + t->t->expires = jiffies; + setup_timer(t->t, timer_callback, (unsigned long)t); + + t->cb = cb; + t->data = data; + + return t; + + no_lock: + DWC_FREE(t->name); + no_name: + DWC_FREE(t->t); + no_timer: + DWC_FREE(t); + return NULL; +} + +void DWC_TIMER_FREE(dwc_timer_t *timer) +{ + dwc_irqflags_t flags; + + DWC_SPINLOCK_IRQSAVE(timer->lock, &flags); + + if (timer->scheduled) { + del_timer(timer->t); + timer->scheduled = 0; + } + + DWC_SPINUNLOCK_IRQRESTORE(timer->lock, flags); + DWC_SPINLOCK_FREE(timer->lock); + DWC_FREE(timer->t); + DWC_FREE(timer->name); + DWC_FREE(timer); +} + +void DWC_TIMER_SCHEDULE(dwc_timer_t *timer, uint32_t time) +{ + dwc_irqflags_t flags; + + DWC_SPINLOCK_IRQSAVE(timer->lock, &flags); + + if (!timer->scheduled) { + timer->scheduled = 1; + DWC_DEBUGC("Scheduling timer %s to expire in +%d msec", timer->name, time); + timer->t->expires = jiffies + msecs_to_jiffies(time); + add_timer(timer->t); + } else { + DWC_DEBUGC("Modifying timer %s to expire in +%d msec", timer->name, time); + mod_timer(timer->t, jiffies + msecs_to_jiffies(time)); + } + + DWC_SPINUNLOCK_IRQRESTORE(timer->lock, flags); +} + +void DWC_TIMER_CANCEL(dwc_timer_t *timer) +{ + del_timer(timer->t); +} + + +/* Wait Queues */ + +struct dwc_waitq { + wait_queue_head_t queue; + int abort; +}; + +dwc_waitq_t *DWC_WAITQ_ALLOC(void) +{ + dwc_waitq_t *wq = DWC_ALLOC(sizeof(*wq)); + + if (!wq) { + DWC_ERROR("Cannot allocate memory for waitqueue\n"); + return NULL; + } + + init_waitqueue_head(&wq->queue); + wq->abort = 0; + return wq; +} + +void DWC_WAITQ_FREE(dwc_waitq_t *wq) +{ + DWC_FREE(wq); +} + +int32_t DWC_WAITQ_WAIT(dwc_waitq_t *wq, dwc_waitq_condition_t cond, void *data) +{ + int result = wait_event_interruptible(wq->queue, + cond(data) || wq->abort); + if (result == -ERESTARTSYS) { + wq->abort = 0; + return -DWC_E_RESTART; + } + + if (wq->abort == 1) { + wq->abort = 0; + return -DWC_E_ABORT; + } + + wq->abort = 0; + + if (result == 0) { + return 0; + } + + return -DWC_E_UNKNOWN; +} + +int32_t DWC_WAITQ_WAIT_TIMEOUT(dwc_waitq_t *wq, dwc_waitq_condition_t cond, + void *data, int32_t msecs) +{ + int32_t tmsecs; + int result = wait_event_interruptible_timeout(wq->queue, + cond(data) || wq->abort, + msecs_to_jiffies(msecs)); + if (result == -ERESTARTSYS) { + wq->abort = 0; + return -DWC_E_RESTART; + } + + if (wq->abort == 1) { + wq->abort = 0; + return -DWC_E_ABORT; + } + + wq->abort = 0; + + if (result > 0) { + tmsecs = jiffies_to_msecs(result); + if (!tmsecs) { + return 1; + } + + return tmsecs; + } + + if (result == 0) { + return -DWC_E_TIMEOUT; + } + + return -DWC_E_UNKNOWN; +} + +void DWC_WAITQ_TRIGGER(dwc_waitq_t *wq) +{ + wq->abort = 0; + wake_up_interruptible(&wq->queue); +} + +void DWC_WAITQ_ABORT(dwc_waitq_t *wq) +{ + wq->abort = 1; + wake_up_interruptible(&wq->queue); +} + + +/* Threading */ + +dwc_thread_t *DWC_THREAD_RUN(dwc_thread_function_t func, char *name, void *data) +{ + struct task_struct *thread = kthread_run(func, data, name); + + if (thread == ERR_PTR(-ENOMEM)) { + return NULL; + } + + return (dwc_thread_t *)thread; +} + +int DWC_THREAD_STOP(dwc_thread_t *thread) +{ + return kthread_stop((struct task_struct *)thread); +} + +dwc_bool_t DWC_THREAD_SHOULD_STOP(void) +{ + return kthread_should_stop(); +} + + +/* tasklets + - run in interrupt context (cannot sleep) + - each tasklet runs on a single CPU + - different tasklets can be running simultaneously on different CPUs + */ +struct dwc_tasklet { + struct tasklet_struct t; + dwc_tasklet_callback_t cb; + void *data; +}; + +static void tasklet_callback(unsigned long data) +{ + dwc_tasklet_t *t = (dwc_tasklet_t *)data; + t->cb(t->data); +} + +dwc_tasklet_t *DWC_TASK_ALLOC(char *name, dwc_tasklet_callback_t cb, void *data) +{ + dwc_tasklet_t *t = DWC_ALLOC(sizeof(*t)); + + if (t) { + t->cb = cb; + t->data = data; + tasklet_init(&t->t, tasklet_callback, (unsigned long)t); + } else { + DWC_ERROR("Cannot allocate memory for tasklet\n"); + } + + return t; +} + +void DWC_TASK_FREE(dwc_tasklet_t *task) +{ + DWC_FREE(task); +} + +void DWC_TASK_SCHEDULE(dwc_tasklet_t *task) +{ + tasklet_schedule(&task->t); +} + +void DWC_TASK_HI_SCHEDULE(dwc_tasklet_t *task) +{ + tasklet_hi_schedule(&task->t); +} + + +/* workqueues + - run in process context (can sleep) + */ +typedef struct work_container { + dwc_work_callback_t cb; + void *data; + dwc_workq_t *wq; + char *name; + +#ifdef DEBUG + DWC_CIRCLEQ_ENTRY(work_container) entry; +#endif + struct delayed_work work; +} work_container_t; + +#ifdef DEBUG +DWC_CIRCLEQ_HEAD(work_container_queue, work_container); +#endif + +struct dwc_workq { + struct workqueue_struct *wq; + dwc_spinlock_t *lock; + dwc_waitq_t *waitq; + int pending; + +#ifdef DEBUG + struct work_container_queue entries; +#endif +}; + +static void do_work(struct work_struct *work) +{ + dwc_irqflags_t flags; + struct delayed_work *dw = container_of(work, struct delayed_work, work); + work_container_t *container = container_of(dw, struct work_container, work); + dwc_workq_t *wq = container->wq; + + container->cb(container->data); + +#ifdef DEBUG + DWC_CIRCLEQ_REMOVE(&wq->entries, container, entry); +#endif + DWC_DEBUGC("Work done: %s, container=%p", container->name, container); + if (container->name) { + DWC_FREE(container->name); + } + DWC_FREE(container); + + DWC_SPINLOCK_IRQSAVE(wq->lock, &flags); + wq->pending--; + DWC_SPINUNLOCK_IRQRESTORE(wq->lock, flags); + DWC_WAITQ_TRIGGER(wq->waitq); +} + +static int work_done(void *data) +{ + dwc_workq_t *workq = (dwc_workq_t *)data; + return workq->pending == 0; +} + +int DWC_WORKQ_WAIT_WORK_DONE(dwc_workq_t *workq, int timeout) +{ + return DWC_WAITQ_WAIT_TIMEOUT(workq->waitq, work_done, workq, timeout); +} + +dwc_workq_t *DWC_WORKQ_ALLOC(char *name) +{ + dwc_workq_t *wq = DWC_ALLOC(sizeof(*wq)); + + if (!wq) { + return NULL; + } + + wq->wq = create_singlethread_workqueue(name); + if (!wq->wq) { + goto no_wq; + } + + wq->pending = 0; + +#if (defined(DWC_LINUX) && defined(CONFIG_DEBUG_SPINLOCK)) + DWC_SPINLOCK_ALLOC_LINUX_DEBUG(wq->lock); +#else + wq->lock = DWC_SPINLOCK_ALLOC(); +#endif + if (!wq->lock) { + goto no_lock; + } + + wq->waitq = DWC_WAITQ_ALLOC(); + if (!wq->waitq) { + goto no_waitq; + } + +#ifdef DEBUG + DWC_CIRCLEQ_INIT(&wq->entries); +#endif + return wq; + + no_waitq: + DWC_SPINLOCK_FREE(wq->lock); + no_lock: + destroy_workqueue(wq->wq); + no_wq: + DWC_FREE(wq); + + return NULL; +} + +void DWC_WORKQ_FREE(dwc_workq_t *wq) +{ +#ifdef DEBUG + if (wq->pending != 0) { + struct work_container *wc; + DWC_ERROR("Destroying work queue with pending work"); + DWC_CIRCLEQ_FOREACH(wc, &wq->entries, entry) { + DWC_ERROR("Work %s still pending", wc->name); + } + } +#endif + destroy_workqueue(wq->wq); + DWC_SPINLOCK_FREE(wq->lock); + DWC_WAITQ_FREE(wq->waitq); + DWC_FREE(wq); +} + +void DWC_WORKQ_SCHEDULE(dwc_workq_t *wq, dwc_work_callback_t cb, void *data, + char *format, ...) +{ + dwc_irqflags_t flags; + work_container_t *container; + static char name[128]; + va_list args; + + va_start(args, format); + DWC_VSNPRINTF(name, 128, format, args); + va_end(args); + + DWC_SPINLOCK_IRQSAVE(wq->lock, &flags); + wq->pending++; + DWC_SPINUNLOCK_IRQRESTORE(wq->lock, flags); + DWC_WAITQ_TRIGGER(wq->waitq); + + container = DWC_ALLOC_ATOMIC(sizeof(*container)); + if (!container) { + DWC_ERROR("Cannot allocate memory for container\n"); + return; + } + + container->name = DWC_STRDUP(name); + if (!container->name) { + DWC_ERROR("Cannot allocate memory for container->name\n"); + DWC_FREE(container); + return; + } + + container->cb = cb; + container->data = data; + container->wq = wq; + DWC_DEBUGC("Queueing work: %s, container=%p", container->name, container); + INIT_WORK(&container->work.work, do_work); + +#ifdef DEBUG + DWC_CIRCLEQ_INSERT_TAIL(&wq->entries, container, entry); +#endif + queue_work(wq->wq, &container->work.work); +} + +void DWC_WORKQ_SCHEDULE_DELAYED(dwc_workq_t *wq, dwc_work_callback_t cb, + void *data, uint32_t time, char *format, ...) +{ + dwc_irqflags_t flags; + work_container_t *container; + static char name[128]; + va_list args; + + va_start(args, format); + DWC_VSNPRINTF(name, 128, format, args); + va_end(args); + + DWC_SPINLOCK_IRQSAVE(wq->lock, &flags); + wq->pending++; + DWC_SPINUNLOCK_IRQRESTORE(wq->lock, flags); + DWC_WAITQ_TRIGGER(wq->waitq); + + container = DWC_ALLOC_ATOMIC(sizeof(*container)); + if (!container) { + DWC_ERROR("Cannot allocate memory for container\n"); + return; + } + + container->name = DWC_STRDUP(name); + if (!container->name) { + DWC_ERROR("Cannot allocate memory for container->name\n"); + DWC_FREE(container); + return; + } + + container->cb = cb; + container->data = data; + container->wq = wq; + DWC_DEBUGC("Queueing work: %s, container=%p", container->name, container); + INIT_DELAYED_WORK(&container->work, do_work); + +#ifdef DEBUG + DWC_CIRCLEQ_INSERT_TAIL(&wq->entries, container, entry); +#endif + queue_delayed_work(wq->wq, &container->work, msecs_to_jiffies(time)); +} + +int DWC_WORKQ_PENDING(dwc_workq_t *wq) +{ + return wq->pending; +} + + +#ifdef DWC_LIBMODULE + +#ifdef DWC_CCLIB +/* CC */ +EXPORT_SYMBOL(dwc_cc_if_alloc); +EXPORT_SYMBOL(dwc_cc_if_free); +EXPORT_SYMBOL(dwc_cc_clear); +EXPORT_SYMBOL(dwc_cc_add); +EXPORT_SYMBOL(dwc_cc_remove); +EXPORT_SYMBOL(dwc_cc_change); +EXPORT_SYMBOL(dwc_cc_data_for_save); +EXPORT_SYMBOL(dwc_cc_restore_from_data); +EXPORT_SYMBOL(dwc_cc_match_chid); +EXPORT_SYMBOL(dwc_cc_match_cdid); +EXPORT_SYMBOL(dwc_cc_ck); +EXPORT_SYMBOL(dwc_cc_chid); +EXPORT_SYMBOL(dwc_cc_cdid); +EXPORT_SYMBOL(dwc_cc_name); +#endif /* DWC_CCLIB */ + +#ifdef DWC_CRYPTOLIB +# ifndef CONFIG_MACH_IPMATE +/* Modpow */ +EXPORT_SYMBOL(dwc_modpow); + +/* DH */ +EXPORT_SYMBOL(dwc_dh_modpow); +EXPORT_SYMBOL(dwc_dh_derive_keys); +EXPORT_SYMBOL(dwc_dh_pk); +# endif /* CONFIG_MACH_IPMATE */ + +/* Crypto */ +EXPORT_SYMBOL(dwc_wusb_aes_encrypt); +EXPORT_SYMBOL(dwc_wusb_cmf); +EXPORT_SYMBOL(dwc_wusb_prf); +EXPORT_SYMBOL(dwc_wusb_fill_ccm_nonce); +EXPORT_SYMBOL(dwc_wusb_gen_nonce); +EXPORT_SYMBOL(dwc_wusb_gen_key); +EXPORT_SYMBOL(dwc_wusb_gen_mic); +#endif /* DWC_CRYPTOLIB */ + +/* Notification */ +#ifdef DWC_NOTIFYLIB +EXPORT_SYMBOL(dwc_alloc_notification_manager); +EXPORT_SYMBOL(dwc_free_notification_manager); +EXPORT_SYMBOL(dwc_register_notifier); +EXPORT_SYMBOL(dwc_unregister_notifier); +EXPORT_SYMBOL(dwc_add_observer); +EXPORT_SYMBOL(dwc_remove_observer); +EXPORT_SYMBOL(dwc_notify); +#endif + +/* Memory Debugging Routines */ +#ifdef DWC_DEBUG_MEMORY +EXPORT_SYMBOL(dwc_alloc_debug); +EXPORT_SYMBOL(dwc_alloc_atomic_debug); +EXPORT_SYMBOL(dwc_free_debug); +EXPORT_SYMBOL(dwc_dma_alloc_debug); +EXPORT_SYMBOL(dwc_dma_free_debug); +#endif + +EXPORT_SYMBOL(DWC_MEMSET); +EXPORT_SYMBOL(DWC_MEMCPY); +EXPORT_SYMBOL(DWC_MEMMOVE); +EXPORT_SYMBOL(DWC_MEMCMP); +EXPORT_SYMBOL(DWC_STRNCMP); +EXPORT_SYMBOL(DWC_STRCMP); +EXPORT_SYMBOL(DWC_STRLEN); +EXPORT_SYMBOL(DWC_STRCPY); +EXPORT_SYMBOL(DWC_STRDUP); +EXPORT_SYMBOL(DWC_ATOI); +EXPORT_SYMBOL(DWC_ATOUI); + +#ifdef DWC_UTFLIB +EXPORT_SYMBOL(DWC_UTF8_TO_UTF16LE); +#endif /* DWC_UTFLIB */ + +EXPORT_SYMBOL(DWC_IN_IRQ); +EXPORT_SYMBOL(DWC_IN_BH); +EXPORT_SYMBOL(DWC_VPRINTF); +EXPORT_SYMBOL(DWC_VSNPRINTF); +EXPORT_SYMBOL(DWC_PRINTF); +EXPORT_SYMBOL(DWC_SPRINTF); +EXPORT_SYMBOL(DWC_SNPRINTF); +EXPORT_SYMBOL(__DWC_WARN); +EXPORT_SYMBOL(__DWC_ERROR); +EXPORT_SYMBOL(DWC_EXCEPTION); + +#ifdef DEBUG +EXPORT_SYMBOL(__DWC_DEBUG); +#endif + +EXPORT_SYMBOL(__DWC_DMA_ALLOC); +EXPORT_SYMBOL(__DWC_DMA_ALLOC_ATOMIC); +EXPORT_SYMBOL(__DWC_DMA_FREE); +EXPORT_SYMBOL(__DWC_ALLOC); +EXPORT_SYMBOL(__DWC_ALLOC_ATOMIC); +EXPORT_SYMBOL(__DWC_FREE); + +#ifdef DWC_CRYPTOLIB +EXPORT_SYMBOL(DWC_RANDOM_BYTES); +EXPORT_SYMBOL(DWC_AES_CBC); +EXPORT_SYMBOL(DWC_SHA256); +EXPORT_SYMBOL(DWC_HMAC_SHA256); +#endif + +EXPORT_SYMBOL(DWC_CPU_TO_LE32); +EXPORT_SYMBOL(DWC_CPU_TO_BE32); +EXPORT_SYMBOL(DWC_LE32_TO_CPU); +EXPORT_SYMBOL(DWC_BE32_TO_CPU); +EXPORT_SYMBOL(DWC_CPU_TO_LE16); +EXPORT_SYMBOL(DWC_CPU_TO_BE16); +EXPORT_SYMBOL(DWC_LE16_TO_CPU); +EXPORT_SYMBOL(DWC_BE16_TO_CPU); +EXPORT_SYMBOL(DWC_READ_REG32); +EXPORT_SYMBOL(DWC_WRITE_REG32); +EXPORT_SYMBOL(DWC_MODIFY_REG32); + +#if 0 +EXPORT_SYMBOL(DWC_READ_REG64); +EXPORT_SYMBOL(DWC_WRITE_REG64); +EXPORT_SYMBOL(DWC_MODIFY_REG64); +#endif + +EXPORT_SYMBOL(DWC_SPINLOCK_ALLOC); +EXPORT_SYMBOL(DWC_SPINLOCK_FREE); +EXPORT_SYMBOL(DWC_SPINLOCK); +EXPORT_SYMBOL(DWC_SPINUNLOCK); +EXPORT_SYMBOL(DWC_SPINLOCK_IRQSAVE); +EXPORT_SYMBOL(DWC_SPINUNLOCK_IRQRESTORE); +EXPORT_SYMBOL(DWC_MUTEX_ALLOC); + +#if (!defined(DWC_LINUX) || !defined(CONFIG_DEBUG_MUTEXES)) +EXPORT_SYMBOL(DWC_MUTEX_FREE); +#endif + +EXPORT_SYMBOL(DWC_MUTEX_LOCK); +EXPORT_SYMBOL(DWC_MUTEX_TRYLOCK); +EXPORT_SYMBOL(DWC_MUTEX_UNLOCK); +EXPORT_SYMBOL(DWC_UDELAY); +EXPORT_SYMBOL(DWC_MDELAY); +EXPORT_SYMBOL(DWC_MSLEEP); +EXPORT_SYMBOL(DWC_TIME); +EXPORT_SYMBOL(DWC_TIMER_ALLOC); +EXPORT_SYMBOL(DWC_TIMER_FREE); +EXPORT_SYMBOL(DWC_TIMER_SCHEDULE); +EXPORT_SYMBOL(DWC_TIMER_CANCEL); +EXPORT_SYMBOL(DWC_WAITQ_ALLOC); +EXPORT_SYMBOL(DWC_WAITQ_FREE); +EXPORT_SYMBOL(DWC_WAITQ_WAIT); +EXPORT_SYMBOL(DWC_WAITQ_WAIT_TIMEOUT); +EXPORT_SYMBOL(DWC_WAITQ_TRIGGER); +EXPORT_SYMBOL(DWC_WAITQ_ABORT); +EXPORT_SYMBOL(DWC_THREAD_RUN); +EXPORT_SYMBOL(DWC_THREAD_STOP); +EXPORT_SYMBOL(DWC_THREAD_SHOULD_STOP); +EXPORT_SYMBOL(DWC_TASK_ALLOC); +EXPORT_SYMBOL(DWC_TASK_FREE); +EXPORT_SYMBOL(DWC_TASK_SCHEDULE); +EXPORT_SYMBOL(DWC_WORKQ_WAIT_WORK_DONE); +EXPORT_SYMBOL(DWC_WORKQ_ALLOC); +EXPORT_SYMBOL(DWC_WORKQ_FREE); +EXPORT_SYMBOL(DWC_WORKQ_SCHEDULE); +EXPORT_SYMBOL(DWC_WORKQ_SCHEDULE_DELAYED); +EXPORT_SYMBOL(DWC_WORKQ_PENDING); + +static int dwc_common_port_init_module(void) +{ + int result = 0; + + printk(KERN_DEBUG "Module dwc_common_port init\n" ); + +#ifdef DWC_DEBUG_MEMORY + result = dwc_memory_debug_start(NULL); + if (result) { + printk(KERN_ERR + "dwc_memory_debug_start() failed with error %d\n", + result); + return result; + } +#endif + +#ifdef DWC_NOTIFYLIB + result = dwc_alloc_notification_manager(NULL, NULL); + if (result) { + printk(KERN_ERR + "dwc_alloc_notification_manager() failed with error %d\n", + result); + return result; + } +#endif + return result; +} + +static void dwc_common_port_exit_module(void) +{ + printk(KERN_DEBUG "Module dwc_common_port exit\n" ); + +#ifdef DWC_NOTIFYLIB + dwc_free_notification_manager(); +#endif + +#ifdef DWC_DEBUG_MEMORY + dwc_memory_debug_stop(); +#endif +} + +module_init(dwc_common_port_init_module); +module_exit(dwc_common_port_exit_module); + +MODULE_DESCRIPTION("DWC Common Library - Portable version"); +MODULE_AUTHOR("Synopsys Inc."); +MODULE_LICENSE ("GPL"); + +#endif /* DWC_LIBMODULE */ --- linux-raspi2-4.2.0.orig/drivers/usb/host/dwc_common_port/dwc_common_nbsd.c +++ linux-raspi2-4.2.0/drivers/usb/host/dwc_common_port/dwc_common_nbsd.c @@ -0,0 +1,1275 @@ +#include "dwc_os.h" +#include "dwc_list.h" + +#ifdef DWC_CCLIB +# include "dwc_cc.h" +#endif + +#ifdef DWC_CRYPTOLIB +# include "dwc_modpow.h" +# include "dwc_dh.h" +# include "dwc_crypto.h" +#endif + +#ifdef DWC_NOTIFYLIB +# include "dwc_notifier.h" +#endif + +/* OS-Level Implementations */ + +/* This is the NetBSD 4.0.1 kernel implementation of the DWC platform library. */ + + +/* MISC */ + +void *DWC_MEMSET(void *dest, uint8_t byte, uint32_t size) +{ + return memset(dest, byte, size); +} + +void *DWC_MEMCPY(void *dest, void const *src, uint32_t size) +{ + return memcpy(dest, src, size); +} + +void *DWC_MEMMOVE(void *dest, void *src, uint32_t size) +{ + bcopy(src, dest, size); + return dest; +} + +int DWC_MEMCMP(void *m1, void *m2, uint32_t size) +{ + return memcmp(m1, m2, size); +} + +int DWC_STRNCMP(void *s1, void *s2, uint32_t size) +{ + return strncmp(s1, s2, size); +} + +int DWC_STRCMP(void *s1, void *s2) +{ + return strcmp(s1, s2); +} + +int DWC_STRLEN(char const *str) +{ + return strlen(str); +} + +char *DWC_STRCPY(char *to, char const *from) +{ + return strcpy(to, from); +} + +char *DWC_STRDUP(char const *str) +{ + int len = DWC_STRLEN(str) + 1; + char *new = DWC_ALLOC_ATOMIC(len); + + if (!new) { + return NULL; + } + + DWC_MEMCPY(new, str, len); + return new; +} + +int DWC_ATOI(char *str, int32_t *value) +{ + char *end = NULL; + + /* NetBSD doesn't have 'strtol' in the kernel, but 'strtoul' + * should be equivalent on 2's complement machines + */ + *value = strtoul(str, &end, 0); + if (*end == '\0') { + return 0; + } + + return -1; +} + +int DWC_ATOUI(char *str, uint32_t *value) +{ + char *end = NULL; + + *value = strtoul(str, &end, 0); + if (*end == '\0') { + return 0; + } + + return -1; +} + + +#ifdef DWC_UTFLIB +/* From usbstring.c */ + +int DWC_UTF8_TO_UTF16LE(uint8_t const *s, uint16_t *cp, unsigned len) +{ + int count = 0; + u8 c; + u16 uchar; + + /* this insists on correct encodings, though not minimal ones. + * BUT it currently rejects legit 4-byte UTF-8 code points, + * which need surrogate pairs. (Unicode 3.1 can use them.) + */ + while (len != 0 && (c = (u8) *s++) != 0) { + if (unlikely(c & 0x80)) { + // 2-byte sequence: + // 00000yyyyyxxxxxx = 110yyyyy 10xxxxxx + if ((c & 0xe0) == 0xc0) { + uchar = (c & 0x1f) << 6; + + c = (u8) *s++; + if ((c & 0xc0) != 0xc0) + goto fail; + c &= 0x3f; + uchar |= c; + + // 3-byte sequence (most CJKV characters): + // zzzzyyyyyyxxxxxx = 1110zzzz 10yyyyyy 10xxxxxx + } else if ((c & 0xf0) == 0xe0) { + uchar = (c & 0x0f) << 12; + + c = (u8) *s++; + if ((c & 0xc0) != 0xc0) + goto fail; + c &= 0x3f; + uchar |= c << 6; + + c = (u8) *s++; + if ((c & 0xc0) != 0xc0) + goto fail; + c &= 0x3f; + uchar |= c; + + /* no bogus surrogates */ + if (0xd800 <= uchar && uchar <= 0xdfff) + goto fail; + + // 4-byte sequence (surrogate pairs, currently rare): + // 11101110wwwwzzzzyy + 110111yyyyxxxxxx + // = 11110uuu 10uuzzzz 10yyyyyy 10xxxxxx + // (uuuuu = wwww + 1) + // FIXME accept the surrogate code points (only) + } else + goto fail; + } else + uchar = c; + put_unaligned (cpu_to_le16 (uchar), cp++); + count++; + len--; + } + return count; +fail: + return -1; +} + +#endif /* DWC_UTFLIB */ + + +/* dwc_debug.h */ + +dwc_bool_t DWC_IN_IRQ(void) +{ +// return in_irq(); + return 0; +} + +dwc_bool_t DWC_IN_BH(void) +{ +// return in_softirq(); + return 0; +} + +void DWC_VPRINTF(char *format, va_list args) +{ + vprintf(format, args); +} + +int DWC_VSNPRINTF(char *str, int size, char *format, va_list args) +{ + return vsnprintf(str, size, format, args); +} + +void DWC_PRINTF(char *format, ...) +{ + va_list args; + + va_start(args, format); + DWC_VPRINTF(format, args); + va_end(args); +} + +int DWC_SPRINTF(char *buffer, char *format, ...) +{ + int retval; + va_list args; + + va_start(args, format); + retval = vsprintf(buffer, format, args); + va_end(args); + return retval; +} + +int DWC_SNPRINTF(char *buffer, int size, char *format, ...) +{ + int retval; + va_list args; + + va_start(args, format); + retval = vsnprintf(buffer, size, format, args); + va_end(args); + return retval; +} + +void __DWC_WARN(char *format, ...) +{ + va_list args; + + va_start(args, format); + DWC_VPRINTF(format, args); + va_end(args); +} + +void __DWC_ERROR(char *format, ...) +{ + va_list args; + + va_start(args, format); + DWC_VPRINTF(format, args); + va_end(args); +} + +void DWC_EXCEPTION(char *format, ...) +{ + va_list args; + + va_start(args, format); + DWC_VPRINTF(format, args); + va_end(args); +// BUG_ON(1); ??? +} + +#ifdef DEBUG +void __DWC_DEBUG(char *format, ...) +{ + va_list args; + + va_start(args, format); + DWC_VPRINTF(format, args); + va_end(args); +} +#endif + + +/* dwc_mem.h */ + +#if 0 +dwc_pool_t *DWC_DMA_POOL_CREATE(uint32_t size, + uint32_t align, + uint32_t alloc) +{ + struct dma_pool *pool = dma_pool_create("Pool", NULL, + size, align, alloc); + return (dwc_pool_t *)pool; +} + +void DWC_DMA_POOL_DESTROY(dwc_pool_t *pool) +{ + dma_pool_destroy((struct dma_pool *)pool); +} + +void *DWC_DMA_POOL_ALLOC(dwc_pool_t *pool, uint64_t *dma_addr) +{ +// return dma_pool_alloc((struct dma_pool *)pool, GFP_KERNEL, dma_addr); + return dma_pool_alloc((struct dma_pool *)pool, M_WAITOK, dma_addr); +} + +void *DWC_DMA_POOL_ZALLOC(dwc_pool_t *pool, uint64_t *dma_addr) +{ + void *vaddr = DWC_DMA_POOL_ALLOC(pool, dma_addr); + memset(..); +} + +void DWC_DMA_POOL_FREE(dwc_pool_t *pool, void *vaddr, void *daddr) +{ + dma_pool_free(pool, vaddr, daddr); +} +#endif + +void *__DWC_DMA_ALLOC(void *dma_ctx, uint32_t size, dwc_dma_t *dma_addr) +{ + dwc_dmactx_t *dma = (dwc_dmactx_t *)dma_ctx; + int error; + + error = bus_dmamem_alloc(dma->dma_tag, size, 1, size, dma->segs, + sizeof(dma->segs) / sizeof(dma->segs[0]), + &dma->nsegs, BUS_DMA_NOWAIT); + if (error) { + printf("%s: bus_dmamem_alloc(%ju) failed: %d\n", __func__, + (uintmax_t)size, error); + goto fail_0; + } + + error = bus_dmamem_map(dma->dma_tag, dma->segs, dma->nsegs, size, + (caddr_t *)&dma->dma_vaddr, + BUS_DMA_NOWAIT | BUS_DMA_COHERENT); + if (error) { + printf("%s: bus_dmamem_map failed: %d\n", __func__, error); + goto fail_1; + } + + error = bus_dmamap_create(dma->dma_tag, size, 1, size, 0, + BUS_DMA_NOWAIT, &dma->dma_map); + if (error) { + printf("%s: bus_dmamap_create failed: %d\n", __func__, error); + goto fail_2; + } + + error = bus_dmamap_load(dma->dma_tag, dma->dma_map, dma->dma_vaddr, + size, NULL, BUS_DMA_NOWAIT); + if (error) { + printf("%s: bus_dmamap_load failed: %d\n", __func__, error); + goto fail_3; + } + + dma->dma_paddr = (bus_addr_t)dma->segs[0].ds_addr; + *dma_addr = dma->dma_paddr; + return dma->dma_vaddr; + +fail_3: + bus_dmamap_destroy(dma->dma_tag, dma->dma_map); +fail_2: + bus_dmamem_unmap(dma->dma_tag, dma->dma_vaddr, size); +fail_1: + bus_dmamem_free(dma->dma_tag, dma->segs, dma->nsegs); +fail_0: + dma->dma_map = NULL; + dma->dma_vaddr = NULL; + dma->nsegs = 0; + + return NULL; +} + +void __DWC_DMA_FREE(void *dma_ctx, uint32_t size, void *virt_addr, dwc_dma_t dma_addr) +{ + dwc_dmactx_t *dma = (dwc_dmactx_t *)dma_ctx; + + if (dma->dma_map != NULL) { + bus_dmamap_sync(dma->dma_tag, dma->dma_map, 0, size, + BUS_DMASYNC_POSTREAD | BUS_DMASYNC_POSTWRITE); + bus_dmamap_unload(dma->dma_tag, dma->dma_map); + bus_dmamap_destroy(dma->dma_tag, dma->dma_map); + bus_dmamem_unmap(dma->dma_tag, dma->dma_vaddr, size); + bus_dmamem_free(dma->dma_tag, dma->segs, dma->nsegs); + dma->dma_paddr = 0; + dma->dma_map = NULL; + dma->dma_vaddr = NULL; + dma->nsegs = 0; + } +} + +void *__DWC_ALLOC(void *mem_ctx, uint32_t size) +{ + return malloc(size, M_DEVBUF, M_WAITOK | M_ZERO); +} + +void *__DWC_ALLOC_ATOMIC(void *mem_ctx, uint32_t size) +{ + return malloc(size, M_DEVBUF, M_NOWAIT | M_ZERO); +} + +void __DWC_FREE(void *mem_ctx, void *addr) +{ + free(addr, M_DEVBUF); +} + + +#ifdef DWC_CRYPTOLIB +/* dwc_crypto.h */ + +void DWC_RANDOM_BYTES(uint8_t *buffer, uint32_t length) +{ + get_random_bytes(buffer, length); +} + +int DWC_AES_CBC(uint8_t *message, uint32_t messagelen, uint8_t *key, uint32_t keylen, uint8_t iv[16], uint8_t *out) +{ + struct crypto_blkcipher *tfm; + struct blkcipher_desc desc; + struct scatterlist sgd; + struct scatterlist sgs; + + tfm = crypto_alloc_blkcipher("cbc(aes)", 0, CRYPTO_ALG_ASYNC); + if (tfm == NULL) { + printk("failed to load transform for aes CBC\n"); + return -1; + } + + crypto_blkcipher_setkey(tfm, key, keylen); + crypto_blkcipher_set_iv(tfm, iv, 16); + + sg_init_one(&sgd, out, messagelen); + sg_init_one(&sgs, message, messagelen); + + desc.tfm = tfm; + desc.flags = 0; + + if (crypto_blkcipher_encrypt(&desc, &sgd, &sgs, messagelen)) { + crypto_free_blkcipher(tfm); + DWC_ERROR("AES CBC encryption failed"); + return -1; + } + + crypto_free_blkcipher(tfm); + return 0; +} + +int DWC_SHA256(uint8_t *message, uint32_t len, uint8_t *out) +{ + struct crypto_hash *tfm; + struct hash_desc desc; + struct scatterlist sg; + + tfm = crypto_alloc_hash("sha256", 0, CRYPTO_ALG_ASYNC); + if (IS_ERR(tfm)) { + DWC_ERROR("Failed to load transform for sha256: %ld", PTR_ERR(tfm)); + return 0; + } + desc.tfm = tfm; + desc.flags = 0; + + sg_init_one(&sg, message, len); + crypto_hash_digest(&desc, &sg, len, out); + crypto_free_hash(tfm); + + return 1; +} + +int DWC_HMAC_SHA256(uint8_t *message, uint32_t messagelen, + uint8_t *key, uint32_t keylen, uint8_t *out) +{ + struct crypto_hash *tfm; + struct hash_desc desc; + struct scatterlist sg; + + tfm = crypto_alloc_hash("hmac(sha256)", 0, CRYPTO_ALG_ASYNC); + if (IS_ERR(tfm)) { + DWC_ERROR("Failed to load transform for hmac(sha256): %ld", PTR_ERR(tfm)); + return 0; + } + desc.tfm = tfm; + desc.flags = 0; + + sg_init_one(&sg, message, messagelen); + crypto_hash_setkey(tfm, key, keylen); + crypto_hash_digest(&desc, &sg, messagelen, out); + crypto_free_hash(tfm); + + return 1; +} + +#endif /* DWC_CRYPTOLIB */ + + +/* Byte Ordering Conversions */ + +uint32_t DWC_CPU_TO_LE32(uint32_t *p) +{ +#ifdef __LITTLE_ENDIAN + return *p; +#else + uint8_t *u_p = (uint8_t *)p; + + return (u_p[3] | (u_p[2] << 8) | (u_p[1] << 16) | (u_p[0] << 24)); +#endif +} + +uint32_t DWC_CPU_TO_BE32(uint32_t *p) +{ +#ifdef __BIG_ENDIAN + return *p; +#else + uint8_t *u_p = (uint8_t *)p; + + return (u_p[3] | (u_p[2] << 8) | (u_p[1] << 16) | (u_p[0] << 24)); +#endif +} + +uint32_t DWC_LE32_TO_CPU(uint32_t *p) +{ +#ifdef __LITTLE_ENDIAN + return *p; +#else + uint8_t *u_p = (uint8_t *)p; + + return (u_p[3] | (u_p[2] << 8) | (u_p[1] << 16) | (u_p[0] << 24)); +#endif +} + +uint32_t DWC_BE32_TO_CPU(uint32_t *p) +{ +#ifdef __BIG_ENDIAN + return *p; +#else + uint8_t *u_p = (uint8_t *)p; + + return (u_p[3] | (u_p[2] << 8) | (u_p[1] << 16) | (u_p[0] << 24)); +#endif +} + +uint16_t DWC_CPU_TO_LE16(uint16_t *p) +{ +#ifdef __LITTLE_ENDIAN + return *p; +#else + uint8_t *u_p = (uint8_t *)p; + return (u_p[1] | (u_p[0] << 8)); +#endif +} + +uint16_t DWC_CPU_TO_BE16(uint16_t *p) +{ +#ifdef __BIG_ENDIAN + return *p; +#else + uint8_t *u_p = (uint8_t *)p; + return (u_p[1] | (u_p[0] << 8)); +#endif +} + +uint16_t DWC_LE16_TO_CPU(uint16_t *p) +{ +#ifdef __LITTLE_ENDIAN + return *p; +#else + uint8_t *u_p = (uint8_t *)p; + return (u_p[1] | (u_p[0] << 8)); +#endif +} + +uint16_t DWC_BE16_TO_CPU(uint16_t *p) +{ +#ifdef __BIG_ENDIAN + return *p; +#else + uint8_t *u_p = (uint8_t *)p; + return (u_p[1] | (u_p[0] << 8)); +#endif +} + + +/* Registers */ + +uint32_t DWC_READ_REG32(void *io_ctx, uint32_t volatile *reg) +{ + dwc_ioctx_t *io = (dwc_ioctx_t *)io_ctx; + bus_size_t ior = (bus_size_t)reg; + + return bus_space_read_4(io->iot, io->ioh, ior); +} + +#if 0 +uint64_t DWC_READ_REG64(void *io_ctx, uint64_t volatile *reg) +{ + dwc_ioctx_t *io = (dwc_ioctx_t *)io_ctx; + bus_size_t ior = (bus_size_t)reg; + + return bus_space_read_8(io->iot, io->ioh, ior); +} +#endif + +void DWC_WRITE_REG32(void *io_ctx, uint32_t volatile *reg, uint32_t value) +{ + dwc_ioctx_t *io = (dwc_ioctx_t *)io_ctx; + bus_size_t ior = (bus_size_t)reg; + + bus_space_write_4(io->iot, io->ioh, ior, value); +} + +#if 0 +void DWC_WRITE_REG64(void *io_ctx, uint64_t volatile *reg, uint64_t value) +{ + dwc_ioctx_t *io = (dwc_ioctx_t *)io_ctx; + bus_size_t ior = (bus_size_t)reg; + + bus_space_write_8(io->iot, io->ioh, ior, value); +} +#endif + +void DWC_MODIFY_REG32(void *io_ctx, uint32_t volatile *reg, uint32_t clear_mask, + uint32_t set_mask) +{ + dwc_ioctx_t *io = (dwc_ioctx_t *)io_ctx; + bus_size_t ior = (bus_size_t)reg; + + bus_space_write_4(io->iot, io->ioh, ior, + (bus_space_read_4(io->iot, io->ioh, ior) & + ~clear_mask) | set_mask); +} + +#if 0 +void DWC_MODIFY_REG64(void *io_ctx, uint64_t volatile *reg, uint64_t clear_mask, + uint64_t set_mask) +{ + dwc_ioctx_t *io = (dwc_ioctx_t *)io_ctx; + bus_size_t ior = (bus_size_t)reg; + + bus_space_write_8(io->iot, io->ioh, ior, + (bus_space_read_8(io->iot, io->ioh, ior) & + ~clear_mask) | set_mask); +} +#endif + + +/* Locking */ + +dwc_spinlock_t *DWC_SPINLOCK_ALLOC(void) +{ + struct simplelock *sl = DWC_ALLOC(sizeof(*sl)); + + if (!sl) { + DWC_ERROR("Cannot allocate memory for spinlock"); + return NULL; + } + + simple_lock_init(sl); + return (dwc_spinlock_t *)sl; +} + +void DWC_SPINLOCK_FREE(dwc_spinlock_t *lock) +{ + struct simplelock *sl = (struct simplelock *)lock; + + DWC_FREE(sl); +} + +void DWC_SPINLOCK(dwc_spinlock_t *lock) +{ + simple_lock((struct simplelock *)lock); +} + +void DWC_SPINUNLOCK(dwc_spinlock_t *lock) +{ + simple_unlock((struct simplelock *)lock); +} + +void DWC_SPINLOCK_IRQSAVE(dwc_spinlock_t *lock, dwc_irqflags_t *flags) +{ + simple_lock((struct simplelock *)lock); + *flags = splbio(); +} + +void DWC_SPINUNLOCK_IRQRESTORE(dwc_spinlock_t *lock, dwc_irqflags_t flags) +{ + splx(flags); + simple_unlock((struct simplelock *)lock); +} + +dwc_mutex_t *DWC_MUTEX_ALLOC(void) +{ + dwc_mutex_t *mutex = DWC_ALLOC(sizeof(struct lock)); + + if (!mutex) { + DWC_ERROR("Cannot allocate memory for mutex"); + return NULL; + } + + lockinit((struct lock *)mutex, 0, "dw3mtx", 0, 0); + return mutex; +} + +#if (defined(DWC_LINUX) && defined(CONFIG_DEBUG_MUTEXES)) +#else +void DWC_MUTEX_FREE(dwc_mutex_t *mutex) +{ + DWC_FREE(mutex); +} +#endif + +void DWC_MUTEX_LOCK(dwc_mutex_t *mutex) +{ + lockmgr((struct lock *)mutex, LK_EXCLUSIVE, NULL); +} + +int DWC_MUTEX_TRYLOCK(dwc_mutex_t *mutex) +{ + int status; + + status = lockmgr((struct lock *)mutex, LK_EXCLUSIVE | LK_NOWAIT, NULL); + return status == 0; +} + +void DWC_MUTEX_UNLOCK(dwc_mutex_t *mutex) +{ + lockmgr((struct lock *)mutex, LK_RELEASE, NULL); +} + + +/* Timing */ + +void DWC_UDELAY(uint32_t usecs) +{ + DELAY(usecs); +} + +void DWC_MDELAY(uint32_t msecs) +{ + do { + DELAY(1000); + } while (--msecs); +} + +void DWC_MSLEEP(uint32_t msecs) +{ + struct timeval tv; + + tv.tv_sec = msecs / 1000; + tv.tv_usec = (msecs - tv.tv_sec * 1000) * 1000; + tsleep(&tv, 0, "dw3slp", tvtohz(&tv)); +} + +uint32_t DWC_TIME(void) +{ + struct timeval tv; + + microuptime(&tv); // or getmicrouptime? (less precise, but faster) + return tv.tv_sec * 1000 + tv.tv_usec / 1000; +} + + +/* Timers */ + +struct dwc_timer { + struct callout t; + char *name; + dwc_spinlock_t *lock; + dwc_timer_callback_t cb; + void *data; +}; + +dwc_timer_t *DWC_TIMER_ALLOC(char *name, dwc_timer_callback_t cb, void *data) +{ + dwc_timer_t *t = DWC_ALLOC(sizeof(*t)); + + if (!t) { + DWC_ERROR("Cannot allocate memory for timer"); + return NULL; + } + + callout_init(&t->t); + + t->name = DWC_STRDUP(name); + if (!t->name) { + DWC_ERROR("Cannot allocate memory for timer->name"); + goto no_name; + } + + t->lock = DWC_SPINLOCK_ALLOC(); + if (!t->lock) { + DWC_ERROR("Cannot allocate memory for timer->lock"); + goto no_lock; + } + + t->cb = cb; + t->data = data; + + return t; + + no_lock: + DWC_FREE(t->name); + no_name: + DWC_FREE(t); + + return NULL; +} + +void DWC_TIMER_FREE(dwc_timer_t *timer) +{ + callout_stop(&timer->t); + DWC_SPINLOCK_FREE(timer->lock); + DWC_FREE(timer->name); + DWC_FREE(timer); +} + +void DWC_TIMER_SCHEDULE(dwc_timer_t *timer, uint32_t time) +{ + struct timeval tv; + + tv.tv_sec = time / 1000; + tv.tv_usec = (time - tv.tv_sec * 1000) * 1000; + callout_reset(&timer->t, tvtohz(&tv), timer->cb, timer->data); +} + +void DWC_TIMER_CANCEL(dwc_timer_t *timer) +{ + callout_stop(&timer->t); +} + + +/* Wait Queues */ + +struct dwc_waitq { + struct simplelock lock; + int abort; +}; + +dwc_waitq_t *DWC_WAITQ_ALLOC(void) +{ + dwc_waitq_t *wq = DWC_ALLOC(sizeof(*wq)); + + if (!wq) { + DWC_ERROR("Cannot allocate memory for waitqueue"); + return NULL; + } + + simple_lock_init(&wq->lock); + wq->abort = 0; + + return wq; +} + +void DWC_WAITQ_FREE(dwc_waitq_t *wq) +{ + DWC_FREE(wq); +} + +int32_t DWC_WAITQ_WAIT(dwc_waitq_t *wq, dwc_waitq_condition_t cond, void *data) +{ + int ipl; + int result = 0; + + simple_lock(&wq->lock); + ipl = splbio(); + + /* Skip the sleep if already aborted or triggered */ + if (!wq->abort && !cond(data)) { + splx(ipl); + result = ltsleep(wq, PCATCH, "dw3wat", 0, &wq->lock); // infinite timeout + ipl = splbio(); + } + + if (result == 0) { // awoken + if (wq->abort) { + wq->abort = 0; + result = -DWC_E_ABORT; + } else { + result = 0; + } + + splx(ipl); + simple_unlock(&wq->lock); + } else { + wq->abort = 0; + splx(ipl); + simple_unlock(&wq->lock); + + if (result == ERESTART) { // signaled - restart + result = -DWC_E_RESTART; + } else { // signaled - must be EINTR + result = -DWC_E_ABORT; + } + } + + return result; +} + +int32_t DWC_WAITQ_WAIT_TIMEOUT(dwc_waitq_t *wq, dwc_waitq_condition_t cond, + void *data, int32_t msecs) +{ + struct timeval tv, tv1, tv2; + int ipl; + int result = 0; + + tv.tv_sec = msecs / 1000; + tv.tv_usec = (msecs - tv.tv_sec * 1000) * 1000; + + simple_lock(&wq->lock); + ipl = splbio(); + + /* Skip the sleep if already aborted or triggered */ + if (!wq->abort && !cond(data)) { + splx(ipl); + getmicrouptime(&tv1); + result = ltsleep(wq, PCATCH, "dw3wto", tvtohz(&tv), &wq->lock); + getmicrouptime(&tv2); + ipl = splbio(); + } + + if (result == 0) { // awoken + if (wq->abort) { + wq->abort = 0; + splx(ipl); + simple_unlock(&wq->lock); + result = -DWC_E_ABORT; + } else { + splx(ipl); + simple_unlock(&wq->lock); + + tv2.tv_usec -= tv1.tv_usec; + if (tv2.tv_usec < 0) { + tv2.tv_usec += 1000000; + tv2.tv_sec--; + } + + tv2.tv_sec -= tv1.tv_sec; + result = tv2.tv_sec * 1000 + tv2.tv_usec / 1000; + result = msecs - result; + if (result <= 0) + result = 1; + } + } else { + wq->abort = 0; + splx(ipl); + simple_unlock(&wq->lock); + + if (result == ERESTART) { // signaled - restart + result = -DWC_E_RESTART; + + } else if (result == EINTR) { // signaled - interrupt + result = -DWC_E_ABORT; + + } else { // timed out + result = -DWC_E_TIMEOUT; + } + } + + return result; +} + +void DWC_WAITQ_TRIGGER(dwc_waitq_t *wq) +{ + wakeup(wq); +} + +void DWC_WAITQ_ABORT(dwc_waitq_t *wq) +{ + int ipl; + + simple_lock(&wq->lock); + ipl = splbio(); + wq->abort = 1; + wakeup(wq); + splx(ipl); + simple_unlock(&wq->lock); +} + + +/* Threading */ + +struct dwc_thread { + struct proc *proc; + int abort; +}; + +dwc_thread_t *DWC_THREAD_RUN(dwc_thread_function_t func, char *name, void *data) +{ + int retval; + dwc_thread_t *thread = DWC_ALLOC(sizeof(*thread)); + + if (!thread) { + return NULL; + } + + thread->abort = 0; + retval = kthread_create1((void (*)(void *))func, data, &thread->proc, + "%s", name); + if (retval) { + DWC_FREE(thread); + return NULL; + } + + return thread; +} + +int DWC_THREAD_STOP(dwc_thread_t *thread) +{ + int retval; + + thread->abort = 1; + retval = tsleep(&thread->abort, 0, "dw3stp", 60 * hz); + + if (retval == 0) { + /* DWC_THREAD_EXIT() will free the thread struct */ + return 0; + } + + /* NOTE: We leak the thread struct if thread doesn't die */ + + if (retval == EWOULDBLOCK) { + return -DWC_E_TIMEOUT; + } + + return -DWC_E_UNKNOWN; +} + +dwc_bool_t DWC_THREAD_SHOULD_STOP(dwc_thread_t *thread) +{ + return thread->abort; +} + +void DWC_THREAD_EXIT(dwc_thread_t *thread) +{ + wakeup(&thread->abort); + DWC_FREE(thread); + kthread_exit(0); +} + +/* tasklets + - Runs in interrupt context (cannot sleep) + - Each tasklet runs on a single CPU + - Different tasklets can be running simultaneously on different CPUs + [ On NetBSD there is no corresponding mechanism, drivers don't have bottom- + halves. So we just call the callback directly from DWC_TASK_SCHEDULE() ] + */ +struct dwc_tasklet { + dwc_tasklet_callback_t cb; + void *data; +}; + +static void tasklet_callback(void *data) +{ + dwc_tasklet_t *task = (dwc_tasklet_t *)data; + + task->cb(task->data); +} + +dwc_tasklet_t *DWC_TASK_ALLOC(char *name, dwc_tasklet_callback_t cb, void *data) +{ + dwc_tasklet_t *task = DWC_ALLOC(sizeof(*task)); + + if (task) { + task->cb = cb; + task->data = data; + } else { + DWC_ERROR("Cannot allocate memory for tasklet"); + } + + return task; +} + +void DWC_TASK_FREE(dwc_tasklet_t *task) +{ + DWC_FREE(task); +} + +void DWC_TASK_SCHEDULE(dwc_tasklet_t *task) +{ + tasklet_callback(task); +} + + +/* workqueues + - Runs in process context (can sleep) + */ +typedef struct work_container { + dwc_work_callback_t cb; + void *data; + dwc_workq_t *wq; + char *name; + int hz; + struct work task; +} work_container_t; + +struct dwc_workq { + struct workqueue *taskq; + dwc_spinlock_t *lock; + dwc_waitq_t *waitq; + int pending; + struct work_container *container; +}; + +static void do_work(struct work *task, void *data) +{ + dwc_workq_t *wq = (dwc_workq_t *)data; + work_container_t *container = wq->container; + dwc_irqflags_t flags; + + if (container->hz) { + tsleep(container, 0, "dw3wrk", container->hz); + } + + container->cb(container->data); + DWC_DEBUG("Work done: %s, container=%p", container->name, container); + + DWC_SPINLOCK_IRQSAVE(wq->lock, &flags); + if (container->name) + DWC_FREE(container->name); + DWC_FREE(container); + wq->pending--; + DWC_SPINUNLOCK_IRQRESTORE(wq->lock, flags); + DWC_WAITQ_TRIGGER(wq->waitq); +} + +static int work_done(void *data) +{ + dwc_workq_t *workq = (dwc_workq_t *)data; + + return workq->pending == 0; +} + +int DWC_WORKQ_WAIT_WORK_DONE(dwc_workq_t *workq, int timeout) +{ + return DWC_WAITQ_WAIT_TIMEOUT(workq->waitq, work_done, workq, timeout); +} + +dwc_workq_t *DWC_WORKQ_ALLOC(char *name) +{ + int result; + dwc_workq_t *wq = DWC_ALLOC(sizeof(*wq)); + + if (!wq) { + DWC_ERROR("Cannot allocate memory for workqueue"); + return NULL; + } + + result = workqueue_create(&wq->taskq, name, do_work, wq, 0 /*PWAIT*/, + IPL_BIO, 0); + if (result) { + DWC_ERROR("Cannot create workqueue"); + goto no_taskq; + } + + wq->pending = 0; + + wq->lock = DWC_SPINLOCK_ALLOC(); + if (!wq->lock) { + DWC_ERROR("Cannot allocate memory for spinlock"); + goto no_lock; + } + + wq->waitq = DWC_WAITQ_ALLOC(); + if (!wq->waitq) { + DWC_ERROR("Cannot allocate memory for waitqueue"); + goto no_waitq; + } + + return wq; + + no_waitq: + DWC_SPINLOCK_FREE(wq->lock); + no_lock: + workqueue_destroy(wq->taskq); + no_taskq: + DWC_FREE(wq); + + return NULL; +} + +void DWC_WORKQ_FREE(dwc_workq_t *wq) +{ +#ifdef DEBUG + dwc_irqflags_t flags; + + DWC_SPINLOCK_IRQSAVE(wq->lock, &flags); + + if (wq->pending != 0) { + struct work_container *container = wq->container; + + DWC_ERROR("Destroying work queue with pending work"); + + if (container && container->name) { + DWC_ERROR("Work %s still pending", container->name); + } + } + + DWC_SPINUNLOCK_IRQRESTORE(wq->lock, flags); +#endif + DWC_WAITQ_FREE(wq->waitq); + DWC_SPINLOCK_FREE(wq->lock); + workqueue_destroy(wq->taskq); + DWC_FREE(wq); +} + +void DWC_WORKQ_SCHEDULE(dwc_workq_t *wq, dwc_work_callback_t cb, void *data, + char *format, ...) +{ + dwc_irqflags_t flags; + work_container_t *container; + static char name[128]; + va_list args; + + va_start(args, format); + DWC_VSNPRINTF(name, 128, format, args); + va_end(args); + + DWC_SPINLOCK_IRQSAVE(wq->lock, &flags); + wq->pending++; + DWC_SPINUNLOCK_IRQRESTORE(wq->lock, flags); + DWC_WAITQ_TRIGGER(wq->waitq); + + container = DWC_ALLOC_ATOMIC(sizeof(*container)); + if (!container) { + DWC_ERROR("Cannot allocate memory for container"); + return; + } + + container->name = DWC_STRDUP(name); + if (!container->name) { + DWC_ERROR("Cannot allocate memory for container->name"); + DWC_FREE(container); + return; + } + + container->cb = cb; + container->data = data; + container->wq = wq; + container->hz = 0; + wq->container = container; + + DWC_DEBUG("Queueing work: %s, container=%p", container->name, container); + workqueue_enqueue(wq->taskq, &container->task); +} + +void DWC_WORKQ_SCHEDULE_DELAYED(dwc_workq_t *wq, dwc_work_callback_t cb, + void *data, uint32_t time, char *format, ...) +{ + dwc_irqflags_t flags; + work_container_t *container; + static char name[128]; + struct timeval tv; + va_list args; + + va_start(args, format); + DWC_VSNPRINTF(name, 128, format, args); + va_end(args); + + DWC_SPINLOCK_IRQSAVE(wq->lock, &flags); + wq->pending++; + DWC_SPINUNLOCK_IRQRESTORE(wq->lock, flags); + DWC_WAITQ_TRIGGER(wq->waitq); + + container = DWC_ALLOC_ATOMIC(sizeof(*container)); + if (!container) { + DWC_ERROR("Cannot allocate memory for container"); + return; + } + + container->name = DWC_STRDUP(name); + if (!container->name) { + DWC_ERROR("Cannot allocate memory for container->name"); + DWC_FREE(container); + return; + } + + container->cb = cb; + container->data = data; + container->wq = wq; + tv.tv_sec = time / 1000; + tv.tv_usec = (time - tv.tv_sec * 1000) * 1000; + container->hz = tvtohz(&tv); + wq->container = container; + + DWC_DEBUG("Queueing work: %s, container=%p", container->name, container); + workqueue_enqueue(wq->taskq, &container->task); +} + +int DWC_WORKQ_PENDING(dwc_workq_t *wq) +{ + return wq->pending; +} --- linux-raspi2-4.2.0.orig/drivers/usb/host/dwc_common_port/dwc_crypto.c +++ linux-raspi2-4.2.0/drivers/usb/host/dwc_common_port/dwc_crypto.c @@ -0,0 +1,308 @@ +/* ========================================================================= + * $File: //dwh/usb_iip/dev/software/dwc_common_port_2/dwc_crypto.c $ + * $Revision: #5 $ + * $Date: 2010/09/28 $ + * $Change: 1596182 $ + * + * Synopsys Portability Library Software and documentation + * (hereinafter, "Software") is an Unsupported proprietary work of + * Synopsys, Inc. unless otherwise expressly agreed to in writing + * between Synopsys and you. + * + * The Software IS NOT an item of Licensed Software or Licensed Product + * under any End User Software License Agreement or Agreement for + * Licensed Product with Synopsys or any supplement thereto. You are + * permitted to use and redistribute this Software in source and binary + * forms, with or without modification, provided that redistributions + * of source code must retain this notice. You may not view, use, + * disclose, copy or distribute this file or any information contained + * herein except pursuant to this license grant from Synopsys. If you + * do not agree with this notice, including the disclaimer below, then + * you are not authorized to use the Software. + * + * THIS SOFTWARE IS BEING DISTRIBUTED BY SYNOPSYS SOLELY ON AN "AS IS" + * BASIS AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE HEREBY DISCLAIMED. IN NO EVENT SHALL + * SYNOPSYS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY + * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE + * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH + * DAMAGE. + * ========================================================================= */ + +/** @file + * This file contains the WUSB cryptographic routines. + */ + +#ifdef DWC_CRYPTOLIB + +#include "dwc_crypto.h" +#include "usb.h" + +#ifdef DEBUG +static inline void dump_bytes(char *name, uint8_t *bytes, int len) +{ + int i; + DWC_PRINTF("%s: ", name); + for (i=0; idst == src, then the bytes will be encrypted + * in-place. + * + * @return 0 on success, negative error code on error. + */ +int dwc_wusb_aes_encrypt(u8 *src, u8 *key, u8 *dst) +{ + u8 block_t[16]; + DWC_MEMSET(block_t, 0, 16); + + return DWC_AES_CBC(src, 16, key, 16, block_t, dst); +} + +/** + * The CCM-MAC-FUNCTION described in section 6.5 of the WUSB spec. + * This function takes a data string and returns the encrypted CBC + * Counter-mode MIC. + * + * @param key The 128-bit symmetric key. + * @param nonce The CCM nonce. + * @param label The unique 14-byte ASCII text label. + * @param bytes The byte array to be encrypted. + * @param len Length of the byte array. + * @param result Byte array to receive the 8-byte encrypted MIC. + */ +void dwc_wusb_cmf(u8 *key, u8 *nonce, + char *label, u8 *bytes, int len, u8 *result) +{ + u8 block_m[16]; + u8 block_x[16]; + u8 block_t[8]; + int idx, blkNum; + u16 la = (u16)(len + 14); + + /* Set the AES-128 key */ + //dwc_aes_setkey(tfm, key, 16); + + /* Fill block B0 from flags = 0x59, N, and l(m) = 0 */ + block_m[0] = 0x59; + for (idx = 0; idx < 13; idx++) + block_m[idx + 1] = nonce[idx]; + block_m[14] = 0; + block_m[15] = 0; + + /* Produce the CBC IV */ + dwc_wusb_aes_encrypt(block_m, key, block_x); + show_block(block_m, "CBC IV in: ", "\n", 0); + show_block(block_x, "CBC IV out:", "\n", 0); + + /* Fill block B1 from l(a) = Blen + 14, and A */ + block_x[0] ^= (u8)(la >> 8); + block_x[1] ^= (u8)la; + for (idx = 0; idx < 14; idx++) + block_x[idx + 2] ^= label[idx]; + show_block(block_x, "After xor: ", "b1\n", 16); + + dwc_wusb_aes_encrypt(block_x, key, block_x); + show_block(block_x, "After AES: ", "b1\n", 16); + + idx = 0; + blkNum = 0; + + /* Fill remaining blocks with B */ + while (len-- > 0) { + block_x[idx] ^= *bytes++; + if (++idx >= 16) { + idx = 0; + show_block(block_x, "After xor: ", "\n", blkNum); + dwc_wusb_aes_encrypt(block_x, key, block_x); + show_block(block_x, "After AES: ", "\n", blkNum); + blkNum++; + } + } + + /* Handle partial last block */ + if (idx > 0) { + show_block(block_x, "After xor: ", "\n", blkNum); + dwc_wusb_aes_encrypt(block_x, key, block_x); + show_block(block_x, "After AES: ", "\n", blkNum); + } + + /* Save the MIC tag */ + DWC_MEMCPY(block_t, block_x, 8); + show_block(block_t, "MIC tag : ", NULL, 8); + + /* Fill block A0 from flags = 0x01, N, and counter = 0 */ + block_m[0] = 0x01; + block_m[14] = 0; + block_m[15] = 0; + + /* Encrypt the counter */ + dwc_wusb_aes_encrypt(block_m, key, block_x); + show_block(block_x, "CTR[MIC] : ", NULL, 8); + + /* XOR with MIC tag */ + for (idx = 0; idx < 8; idx++) { + block_t[idx] ^= block_x[idx]; + } + + /* Return result to caller */ + DWC_MEMCPY(result, block_t, 8); + show_block(result, "CCM-MIC : ", NULL, 8); + +} + +/** + * The PRF function described in section 6.5 of the WUSB spec. This function + * concatenates MIC values returned from dwc_cmf() to create a value of + * the requested length. + * + * @param prf_len Length of the PRF function in bits (64, 128, or 256). + * @param key, nonce, label, bytes, len Same as for dwc_cmf(). + * @param result Byte array to receive the result. + */ +void dwc_wusb_prf(int prf_len, u8 *key, + u8 *nonce, char *label, u8 *bytes, int len, u8 *result) +{ + int i; + + nonce[0] = 0; + for (i = 0; i < prf_len >> 6; i++, nonce[0]++) { + dwc_wusb_cmf(key, nonce, label, bytes, len, result); + result += 8; + } +} + +/** + * Fills in CCM Nonce per the WUSB spec. + * + * @param[in] haddr Host address. + * @param[in] daddr Device address. + * @param[in] tkid Session Key(PTK) identifier. + * @param[out] nonce Pointer to where the CCM Nonce output is to be written. + */ +void dwc_wusb_fill_ccm_nonce(uint16_t haddr, uint16_t daddr, uint8_t *tkid, + uint8_t *nonce) +{ + + DWC_DEBUG("%s %x %x\n", __func__, daddr, haddr); + + DWC_MEMSET(&nonce[0], 0, 16); + + DWC_MEMCPY(&nonce[6], tkid, 3); + nonce[9] = daddr & 0xFF; + nonce[10] = (daddr >> 8) & 0xFF; + nonce[11] = haddr & 0xFF; + nonce[12] = (haddr >> 8) & 0xFF; + + dump_bytes("CCM nonce", nonce, 16); +} + +/** + * Generates a 16-byte cryptographic-grade random number for the Host/Device + * Nonce. + */ +void dwc_wusb_gen_nonce(uint16_t addr, uint8_t *nonce) +{ + uint8_t inonce[16]; + uint32_t temp[4]; + + /* Fill in the Nonce */ + DWC_MEMSET(&inonce[0], 0, sizeof(inonce)); + inonce[9] = addr & 0xFF; + inonce[10] = (addr >> 8) & 0xFF; + inonce[11] = inonce[9]; + inonce[12] = inonce[10]; + + /* Collect "randomness samples" */ + DWC_RANDOM_BYTES((uint8_t *)temp, 16); + + dwc_wusb_prf_128((uint8_t *)temp, nonce, + "Random Numbers", (uint8_t *)temp, sizeof(temp), + nonce); +} + +/** + * Generates the Session Key (PTK) and Key Confirmation Key (KCK) per the + * WUSB spec. + * + * @param[in] ccm_nonce Pointer to CCM Nonce. + * @param[in] mk Master Key to derive the session from + * @param[in] hnonce Pointer to Host Nonce. + * @param[in] dnonce Pointer to Device Nonce. + * @param[out] kck Pointer to where the KCK output is to be written. + * @param[out] ptk Pointer to where the PTK output is to be written. + */ +void dwc_wusb_gen_key(uint8_t *ccm_nonce, uint8_t *mk, uint8_t *hnonce, + uint8_t *dnonce, uint8_t *kck, uint8_t *ptk) +{ + uint8_t idata[32]; + uint8_t odata[32]; + + dump_bytes("ck", mk, 16); + dump_bytes("hnonce", hnonce, 16); + dump_bytes("dnonce", dnonce, 16); + + /* The data is the HNonce and DNonce concatenated */ + DWC_MEMCPY(&idata[0], hnonce, 16); + DWC_MEMCPY(&idata[16], dnonce, 16); + + dwc_wusb_prf_256(mk, ccm_nonce, "Pair-wise keys", idata, 32, odata); + + /* Low 16 bytes of the result is the KCK, high 16 is the PTK */ + DWC_MEMCPY(kck, &odata[0], 16); + DWC_MEMCPY(ptk, &odata[16], 16); + + dump_bytes("kck", kck, 16); + dump_bytes("ptk", ptk, 16); +} + +/** + * Generates the Message Integrity Code over the Handshake data per the + * WUSB spec. + * + * @param ccm_nonce Pointer to CCM Nonce. + * @param kck Pointer to Key Confirmation Key. + * @param data Pointer to Handshake data to be checked. + * @param mic Pointer to where the MIC output is to be written. + */ +void dwc_wusb_gen_mic(uint8_t *ccm_nonce, uint8_t *kck, + uint8_t *data, uint8_t *mic) +{ + + dwc_wusb_prf_64(kck, ccm_nonce, "out-of-bandMIC", + data, WUSB_HANDSHAKE_LEN_FOR_MIC, mic); +} + +#endif /* DWC_CRYPTOLIB */ --- linux-raspi2-4.2.0.orig/drivers/usb/host/dwc_common_port/dwc_crypto.h +++ linux-raspi2-4.2.0/drivers/usb/host/dwc_common_port/dwc_crypto.h @@ -0,0 +1,111 @@ +/* ========================================================================= + * $File: //dwh/usb_iip/dev/software/dwc_common_port_2/dwc_crypto.h $ + * $Revision: #3 $ + * $Date: 2010/09/28 $ + * $Change: 1596182 $ + * + * Synopsys Portability Library Software and documentation + * (hereinafter, "Software") is an Unsupported proprietary work of + * Synopsys, Inc. unless otherwise expressly agreed to in writing + * between Synopsys and you. + * + * The Software IS NOT an item of Licensed Software or Licensed Product + * under any End User Software License Agreement or Agreement for + * Licensed Product with Synopsys or any supplement thereto. You are + * permitted to use and redistribute this Software in source and binary + * forms, with or without modification, provided that redistributions + * of source code must retain this notice. You may not view, use, + * disclose, copy or distribute this file or any information contained + * herein except pursuant to this license grant from Synopsys. If you + * do not agree with this notice, including the disclaimer below, then + * you are not authorized to use the Software. + * + * THIS SOFTWARE IS BEING DISTRIBUTED BY SYNOPSYS SOLELY ON AN "AS IS" + * BASIS AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE HEREBY DISCLAIMED. IN NO EVENT SHALL + * SYNOPSYS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY + * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE + * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH + * DAMAGE. + * ========================================================================= */ + +#ifndef _DWC_CRYPTO_H_ +#define _DWC_CRYPTO_H_ + +#ifdef __cplusplus +extern "C" { +#endif + +/** @file + * + * This file contains declarations for the WUSB Cryptographic routines as + * defined in the WUSB spec. They are only to be used internally by the DWC UWB + * modules. + */ + +#include "dwc_os.h" + +int dwc_wusb_aes_encrypt(u8 *src, u8 *key, u8 *dst); + +void dwc_wusb_cmf(u8 *key, u8 *nonce, + char *label, u8 *bytes, int len, u8 *result); +void dwc_wusb_prf(int prf_len, u8 *key, + u8 *nonce, char *label, u8 *bytes, int len, u8 *result); + +/** + * The PRF-64 function described in section 6.5 of the WUSB spec. + * + * @param key, nonce, label, bytes, len, result Same as for dwc_prf(). + */ +static inline void dwc_wusb_prf_64(u8 *key, u8 *nonce, + char *label, u8 *bytes, int len, u8 *result) +{ + dwc_wusb_prf(64, key, nonce, label, bytes, len, result); +} + +/** + * The PRF-128 function described in section 6.5 of the WUSB spec. + * + * @param key, nonce, label, bytes, len, result Same as for dwc_prf(). + */ +static inline void dwc_wusb_prf_128(u8 *key, u8 *nonce, + char *label, u8 *bytes, int len, u8 *result) +{ + dwc_wusb_prf(128, key, nonce, label, bytes, len, result); +} + +/** + * The PRF-256 function described in section 6.5 of the WUSB spec. + * + * @param key, nonce, label, bytes, len, result Same as for dwc_prf(). + */ +static inline void dwc_wusb_prf_256(u8 *key, u8 *nonce, + char *label, u8 *bytes, int len, u8 *result) +{ + dwc_wusb_prf(256, key, nonce, label, bytes, len, result); +} + + +void dwc_wusb_fill_ccm_nonce(uint16_t haddr, uint16_t daddr, uint8_t *tkid, + uint8_t *nonce); +void dwc_wusb_gen_nonce(uint16_t addr, + uint8_t *nonce); + +void dwc_wusb_gen_key(uint8_t *ccm_nonce, uint8_t *mk, + uint8_t *hnonce, uint8_t *dnonce, + uint8_t *kck, uint8_t *ptk); + + +void dwc_wusb_gen_mic(uint8_t *ccm_nonce, uint8_t + *kck, uint8_t *data, uint8_t *mic); + +#ifdef __cplusplus +} +#endif + +#endif /* _DWC_CRYPTO_H_ */ --- linux-raspi2-4.2.0.orig/drivers/usb/host/dwc_common_port/dwc_dh.c +++ linux-raspi2-4.2.0/drivers/usb/host/dwc_common_port/dwc_dh.c @@ -0,0 +1,291 @@ +/* ========================================================================= + * $File: //dwh/usb_iip/dev/software/dwc_common_port_2/dwc_dh.c $ + * $Revision: #3 $ + * $Date: 2010/09/28 $ + * $Change: 1596182 $ + * + * Synopsys Portability Library Software and documentation + * (hereinafter, "Software") is an Unsupported proprietary work of + * Synopsys, Inc. unless otherwise expressly agreed to in writing + * between Synopsys and you. + * + * The Software IS NOT an item of Licensed Software or Licensed Product + * under any End User Software License Agreement or Agreement for + * Licensed Product with Synopsys or any supplement thereto. You are + * permitted to use and redistribute this Software in source and binary + * forms, with or without modification, provided that redistributions + * of source code must retain this notice. You may not view, use, + * disclose, copy or distribute this file or any information contained + * herein except pursuant to this license grant from Synopsys. If you + * do not agree with this notice, including the disclaimer below, then + * you are not authorized to use the Software. + * + * THIS SOFTWARE IS BEING DISTRIBUTED BY SYNOPSYS SOLELY ON AN "AS IS" + * BASIS AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE HEREBY DISCLAIMED. IN NO EVENT SHALL + * SYNOPSYS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY + * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE + * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH + * DAMAGE. + * ========================================================================= */ +#ifdef DWC_CRYPTOLIB + +#ifndef CONFIG_MACH_IPMATE + +#include "dwc_dh.h" +#include "dwc_modpow.h" + +#ifdef DEBUG +/* This function prints out a buffer in the format described in the Association + * Model specification. */ +static void dh_dump(char *str, void *_num, int len) +{ + uint8_t *num = _num; + int i; + DWC_PRINTF("%s\n", str); + for (i = 0; i < len; i ++) { + DWC_PRINTF("%02x", num[i]); + if (((i + 1) % 2) == 0) DWC_PRINTF(" "); + if (((i + 1) % 26) == 0) DWC_PRINTF("\n"); + } + + DWC_PRINTF("\n"); +} +#else +#define dh_dump(_x...) do {; } while(0) +#endif + +/* Constant g value */ +static __u32 dh_g[] = { + 0x02000000, +}; + +/* Constant p value */ +static __u32 dh_p[] = { + 0xFFFFFFFF, 0xFFFFFFFF, 0xA2DA0FC9, 0x34C26821, 0x8B62C6C4, 0xD11CDC80, 0x084E0229, 0x74CC678A, + 0xA6BE0B02, 0x229B133B, 0x79084A51, 0xDD04348E, 0xB31995EF, 0x1B433ACD, 0x6D0A2B30, 0x37145FF2, + 0x6D35E14F, 0x45C2516D, 0x76B585E4, 0xC67E5E62, 0xE9424CF4, 0x6BED37A6, 0xB65CFF0B, 0xEDB706F4, + 0xFB6B38EE, 0xA59F895A, 0x11249FAE, 0xE61F4B7C, 0x51662849, 0x3D5BE4EC, 0xB87C00C2, 0x05BF63A1, + 0x3648DA98, 0x9AD3551C, 0xA83F1669, 0x5FCF24FD, 0x235D6583, 0x96ADA3DC, 0x56F3621C, 0xBB528520, + 0x0729D59E, 0x6D969670, 0x4E350C67, 0x0498BC4A, 0x086C74F1, 0x7C2118CA, 0x465E9032, 0x3BCE362E, + 0x2C779EE3, 0x03860E18, 0xA283279B, 0x8FA207EC, 0xF05DC5B5, 0xC9524C6F, 0xF6CB2BDE, 0x18175895, + 0x7C499539, 0xE56A95EA, 0x1826D215, 0x1005FA98, 0x5A8E7215, 0x2DC4AA8A, 0x0D1733AD, 0x337A5004, + 0xAB2155A8, 0x64BA1CDF, 0x0485FBEC, 0x0AEFDB58, 0x5771EA8A, 0x7D0C065D, 0x850F97B3, 0xC7E4E1A6, + 0x8CAEF5AB, 0xD73309DB, 0xE0948C1E, 0x9D61254A, 0x26D2E3CE, 0x6BEED21A, 0x06FA2FF1, 0x64088AD9, + 0x730276D8, 0x646AC83E, 0x182B1F52, 0x0C207B17, 0x5717E1BB, 0x6C5D617A, 0xC0880977, 0xE246D9BA, + 0xA04FE208, 0x31ABE574, 0xFC5BDB43, 0x8E10FDE0, 0x20D1824B, 0xCAD23AA9, 0xFFFFFFFF, 0xFFFFFFFF, +}; + +static void dh_swap_bytes(void *_in, void *_out, uint32_t len) +{ + uint8_t *in = _in; + uint8_t *out = _out; + int i; + for (i=0; inext = (link); \ + (link)->prev = (link); \ +} while (0) + +#define DWC_LIST_FIRST(link) ((link)->next) +#define DWC_LIST_LAST(link) ((link)->prev) +#define DWC_LIST_END(link) (link) +#define DWC_LIST_NEXT(link) ((link)->next) +#define DWC_LIST_PREV(link) ((link)->prev) +#define DWC_LIST_EMPTY(link) \ + (DWC_LIST_FIRST(link) == DWC_LIST_END(link)) +#define DWC_LIST_ENTRY(link, type, field) \ + (type *)((uint8_t *)(link) - (size_t)(&((type *)0)->field)) + +#if 0 +#define DWC_LIST_INSERT_HEAD(list, link) do { \ + (link)->next = (list)->next; \ + (link)->prev = (list); \ + (list)->next->prev = (link); \ + (list)->next = (link); \ +} while (0) + +#define DWC_LIST_INSERT_TAIL(list, link) do { \ + (link)->next = (list); \ + (link)->prev = (list)->prev; \ + (list)->prev->next = (link); \ + (list)->prev = (link); \ +} while (0) +#else +#define DWC_LIST_INSERT_HEAD(list, link) do { \ + dwc_list_link_t *__next__ = (list)->next; \ + __next__->prev = (link); \ + (link)->next = __next__; \ + (link)->prev = (list); \ + (list)->next = (link); \ +} while (0) + +#define DWC_LIST_INSERT_TAIL(list, link) do { \ + dwc_list_link_t *__prev__ = (list)->prev; \ + (list)->prev = (link); \ + (link)->next = (list); \ + (link)->prev = __prev__; \ + __prev__->next = (link); \ +} while (0) +#endif + +#if 0 +static inline void __list_add(struct list_head *new, + struct list_head *prev, + struct list_head *next) +{ + next->prev = new; + new->next = next; + new->prev = prev; + prev->next = new; +} + +static inline void list_add(struct list_head *new, struct list_head *head) +{ + __list_add(new, head, head->next); +} + +static inline void list_add_tail(struct list_head *new, struct list_head *head) +{ + __list_add(new, head->prev, head); +} + +static inline void __list_del(struct list_head * prev, struct list_head * next) +{ + next->prev = prev; + prev->next = next; +} + +static inline void list_del(struct list_head *entry) +{ + __list_del(entry->prev, entry->next); + entry->next = LIST_POISON1; + entry->prev = LIST_POISON2; +} +#endif + +#define DWC_LIST_REMOVE(link) do { \ + (link)->next->prev = (link)->prev; \ + (link)->prev->next = (link)->next; \ +} while (0) + +#define DWC_LIST_REMOVE_INIT(link) do { \ + DWC_LIST_REMOVE(link); \ + DWC_LIST_INIT(link); \ +} while (0) + +#define DWC_LIST_MOVE_HEAD(list, link) do { \ + DWC_LIST_REMOVE(link); \ + DWC_LIST_INSERT_HEAD(list, link); \ +} while (0) + +#define DWC_LIST_MOVE_TAIL(list, link) do { \ + DWC_LIST_REMOVE(link); \ + DWC_LIST_INSERT_TAIL(list, link); \ +} while (0) + +#define DWC_LIST_FOREACH(var, list) \ + for((var) = DWC_LIST_FIRST(list); \ + (var) != DWC_LIST_END(list); \ + (var) = DWC_LIST_NEXT(var)) + +#define DWC_LIST_FOREACH_SAFE(var, var2, list) \ + for((var) = DWC_LIST_FIRST(list), (var2) = DWC_LIST_NEXT(var); \ + (var) != DWC_LIST_END(list); \ + (var) = (var2), (var2) = DWC_LIST_NEXT(var2)) + +#define DWC_LIST_FOREACH_REVERSE(var, list) \ + for((var) = DWC_LIST_LAST(list); \ + (var) != DWC_LIST_END(list); \ + (var) = DWC_LIST_PREV(var)) + +/* + * Singly-linked List definitions. + */ +#define DWC_SLIST_HEAD(name, type) \ +struct name { \ + struct type *slh_first; /* first element */ \ +} + +#define DWC_SLIST_HEAD_INITIALIZER(head) \ + { NULL } + +#define DWC_SLIST_ENTRY(type) \ +struct { \ + struct type *sle_next; /* next element */ \ +} + +/* + * Singly-linked List access methods. + */ +#define DWC_SLIST_FIRST(head) ((head)->slh_first) +#define DWC_SLIST_END(head) NULL +#define DWC_SLIST_EMPTY(head) (SLIST_FIRST(head) == SLIST_END(head)) +#define DWC_SLIST_NEXT(elm, field) ((elm)->field.sle_next) + +#define DWC_SLIST_FOREACH(var, head, field) \ + for((var) = SLIST_FIRST(head); \ + (var) != SLIST_END(head); \ + (var) = SLIST_NEXT(var, field)) + +#define DWC_SLIST_FOREACH_PREVPTR(var, varp, head, field) \ + for((varp) = &SLIST_FIRST((head)); \ + ((var) = *(varp)) != SLIST_END(head); \ + (varp) = &SLIST_NEXT((var), field)) + +/* + * Singly-linked List functions. + */ +#define DWC_SLIST_INIT(head) { \ + SLIST_FIRST(head) = SLIST_END(head); \ +} + +#define DWC_SLIST_INSERT_AFTER(slistelm, elm, field) do { \ + (elm)->field.sle_next = (slistelm)->field.sle_next; \ + (slistelm)->field.sle_next = (elm); \ +} while (0) + +#define DWC_SLIST_INSERT_HEAD(head, elm, field) do { \ + (elm)->field.sle_next = (head)->slh_first; \ + (head)->slh_first = (elm); \ +} while (0) + +#define DWC_SLIST_REMOVE_NEXT(head, elm, field) do { \ + (elm)->field.sle_next = (elm)->field.sle_next->field.sle_next; \ +} while (0) + +#define DWC_SLIST_REMOVE_HEAD(head, field) do { \ + (head)->slh_first = (head)->slh_first->field.sle_next; \ +} while (0) + +#define DWC_SLIST_REMOVE(head, elm, type, field) do { \ + if ((head)->slh_first == (elm)) { \ + SLIST_REMOVE_HEAD((head), field); \ + } \ + else { \ + struct type *curelm = (head)->slh_first; \ + while( curelm->field.sle_next != (elm) ) \ + curelm = curelm->field.sle_next; \ + curelm->field.sle_next = \ + curelm->field.sle_next->field.sle_next; \ + } \ +} while (0) + +/* + * Simple queue definitions. + */ +#define DWC_SIMPLEQ_HEAD(name, type) \ +struct name { \ + struct type *sqh_first; /* first element */ \ + struct type **sqh_last; /* addr of last next element */ \ +} + +#define DWC_SIMPLEQ_HEAD_INITIALIZER(head) \ + { NULL, &(head).sqh_first } + +#define DWC_SIMPLEQ_ENTRY(type) \ +struct { \ + struct type *sqe_next; /* next element */ \ +} + +/* + * Simple queue access methods. + */ +#define DWC_SIMPLEQ_FIRST(head) ((head)->sqh_first) +#define DWC_SIMPLEQ_END(head) NULL +#define DWC_SIMPLEQ_EMPTY(head) (SIMPLEQ_FIRST(head) == SIMPLEQ_END(head)) +#define DWC_SIMPLEQ_NEXT(elm, field) ((elm)->field.sqe_next) + +#define DWC_SIMPLEQ_FOREACH(var, head, field) \ + for((var) = SIMPLEQ_FIRST(head); \ + (var) != SIMPLEQ_END(head); \ + (var) = SIMPLEQ_NEXT(var, field)) + +/* + * Simple queue functions. + */ +#define DWC_SIMPLEQ_INIT(head) do { \ + (head)->sqh_first = NULL; \ + (head)->sqh_last = &(head)->sqh_first; \ +} while (0) + +#define DWC_SIMPLEQ_INSERT_HEAD(head, elm, field) do { \ + if (((elm)->field.sqe_next = (head)->sqh_first) == NULL) \ + (head)->sqh_last = &(elm)->field.sqe_next; \ + (head)->sqh_first = (elm); \ +} while (0) + +#define DWC_SIMPLEQ_INSERT_TAIL(head, elm, field) do { \ + (elm)->field.sqe_next = NULL; \ + *(head)->sqh_last = (elm); \ + (head)->sqh_last = &(elm)->field.sqe_next; \ +} while (0) + +#define DWC_SIMPLEQ_INSERT_AFTER(head, listelm, elm, field) do { \ + if (((elm)->field.sqe_next = (listelm)->field.sqe_next) == NULL)\ + (head)->sqh_last = &(elm)->field.sqe_next; \ + (listelm)->field.sqe_next = (elm); \ +} while (0) + +#define DWC_SIMPLEQ_REMOVE_HEAD(head, field) do { \ + if (((head)->sqh_first = (head)->sqh_first->field.sqe_next) == NULL) \ + (head)->sqh_last = &(head)->sqh_first; \ +} while (0) + +/* + * Tail queue definitions. + */ +#define DWC_TAILQ_HEAD(name, type) \ +struct name { \ + struct type *tqh_first; /* first element */ \ + struct type **tqh_last; /* addr of last next element */ \ +} + +#define DWC_TAILQ_HEAD_INITIALIZER(head) \ + { NULL, &(head).tqh_first } + +#define DWC_TAILQ_ENTRY(type) \ +struct { \ + struct type *tqe_next; /* next element */ \ + struct type **tqe_prev; /* address of previous next element */ \ +} + +/* + * tail queue access methods + */ +#define DWC_TAILQ_FIRST(head) ((head)->tqh_first) +#define DWC_TAILQ_END(head) NULL +#define DWC_TAILQ_NEXT(elm, field) ((elm)->field.tqe_next) +#define DWC_TAILQ_LAST(head, headname) \ + (*(((struct headname *)((head)->tqh_last))->tqh_last)) +/* XXX */ +#define DWC_TAILQ_PREV(elm, headname, field) \ + (*(((struct headname *)((elm)->field.tqe_prev))->tqh_last)) +#define DWC_TAILQ_EMPTY(head) \ + (DWC_TAILQ_FIRST(head) == DWC_TAILQ_END(head)) + +#define DWC_TAILQ_FOREACH(var, head, field) \ + for ((var) = DWC_TAILQ_FIRST(head); \ + (var) != DWC_TAILQ_END(head); \ + (var) = DWC_TAILQ_NEXT(var, field)) + +#define DWC_TAILQ_FOREACH_REVERSE(var, head, headname, field) \ + for ((var) = DWC_TAILQ_LAST(head, headname); \ + (var) != DWC_TAILQ_END(head); \ + (var) = DWC_TAILQ_PREV(var, headname, field)) + +/* + * Tail queue functions. + */ +#define DWC_TAILQ_INIT(head) do { \ + (head)->tqh_first = NULL; \ + (head)->tqh_last = &(head)->tqh_first; \ +} while (0) + +#define DWC_TAILQ_INSERT_HEAD(head, elm, field) do { \ + if (((elm)->field.tqe_next = (head)->tqh_first) != NULL) \ + (head)->tqh_first->field.tqe_prev = \ + &(elm)->field.tqe_next; \ + else \ + (head)->tqh_last = &(elm)->field.tqe_next; \ + (head)->tqh_first = (elm); \ + (elm)->field.tqe_prev = &(head)->tqh_first; \ +} while (0) + +#define DWC_TAILQ_INSERT_TAIL(head, elm, field) do { \ + (elm)->field.tqe_next = NULL; \ + (elm)->field.tqe_prev = (head)->tqh_last; \ + *(head)->tqh_last = (elm); \ + (head)->tqh_last = &(elm)->field.tqe_next; \ +} while (0) + +#define DWC_TAILQ_INSERT_AFTER(head, listelm, elm, field) do { \ + if (((elm)->field.tqe_next = (listelm)->field.tqe_next) != NULL)\ + (elm)->field.tqe_next->field.tqe_prev = \ + &(elm)->field.tqe_next; \ + else \ + (head)->tqh_last = &(elm)->field.tqe_next; \ + (listelm)->field.tqe_next = (elm); \ + (elm)->field.tqe_prev = &(listelm)->field.tqe_next; \ +} while (0) + +#define DWC_TAILQ_INSERT_BEFORE(listelm, elm, field) do { \ + (elm)->field.tqe_prev = (listelm)->field.tqe_prev; \ + (elm)->field.tqe_next = (listelm); \ + *(listelm)->field.tqe_prev = (elm); \ + (listelm)->field.tqe_prev = &(elm)->field.tqe_next; \ +} while (0) + +#define DWC_TAILQ_REMOVE(head, elm, field) do { \ + if (((elm)->field.tqe_next) != NULL) \ + (elm)->field.tqe_next->field.tqe_prev = \ + (elm)->field.tqe_prev; \ + else \ + (head)->tqh_last = (elm)->field.tqe_prev; \ + *(elm)->field.tqe_prev = (elm)->field.tqe_next; \ +} while (0) + +#define DWC_TAILQ_REPLACE(head, elm, elm2, field) do { \ + if (((elm2)->field.tqe_next = (elm)->field.tqe_next) != NULL) \ + (elm2)->field.tqe_next->field.tqe_prev = \ + &(elm2)->field.tqe_next; \ + else \ + (head)->tqh_last = &(elm2)->field.tqe_next; \ + (elm2)->field.tqe_prev = (elm)->field.tqe_prev; \ + *(elm2)->field.tqe_prev = (elm2); \ +} while (0) + +/* + * Circular queue definitions. + */ +#define DWC_CIRCLEQ_HEAD(name, type) \ +struct name { \ + struct type *cqh_first; /* first element */ \ + struct type *cqh_last; /* last element */ \ +} + +#define DWC_CIRCLEQ_HEAD_INITIALIZER(head) \ + { DWC_CIRCLEQ_END(&head), DWC_CIRCLEQ_END(&head) } + +#define DWC_CIRCLEQ_ENTRY(type) \ +struct { \ + struct type *cqe_next; /* next element */ \ + struct type *cqe_prev; /* previous element */ \ +} + +/* + * Circular queue access methods + */ +#define DWC_CIRCLEQ_FIRST(head) ((head)->cqh_first) +#define DWC_CIRCLEQ_LAST(head) ((head)->cqh_last) +#define DWC_CIRCLEQ_END(head) ((void *)(head)) +#define DWC_CIRCLEQ_NEXT(elm, field) ((elm)->field.cqe_next) +#define DWC_CIRCLEQ_PREV(elm, field) ((elm)->field.cqe_prev) +#define DWC_CIRCLEQ_EMPTY(head) \ + (DWC_CIRCLEQ_FIRST(head) == DWC_CIRCLEQ_END(head)) + +#define DWC_CIRCLEQ_EMPTY_ENTRY(elm, field) (((elm)->field.cqe_next == NULL) && ((elm)->field.cqe_prev == NULL)) + +#define DWC_CIRCLEQ_FOREACH(var, head, field) \ + for((var) = DWC_CIRCLEQ_FIRST(head); \ + (var) != DWC_CIRCLEQ_END(head); \ + (var) = DWC_CIRCLEQ_NEXT(var, field)) + +#define DWC_CIRCLEQ_FOREACH_SAFE(var, var2, head, field) \ + for((var) = DWC_CIRCLEQ_FIRST(head), var2 = DWC_CIRCLEQ_NEXT(var, field); \ + (var) != DWC_CIRCLEQ_END(head); \ + (var) = var2, var2 = DWC_CIRCLEQ_NEXT(var, field)) + +#define DWC_CIRCLEQ_FOREACH_REVERSE(var, head, field) \ + for((var) = DWC_CIRCLEQ_LAST(head); \ + (var) != DWC_CIRCLEQ_END(head); \ + (var) = DWC_CIRCLEQ_PREV(var, field)) + +/* + * Circular queue functions. + */ +#define DWC_CIRCLEQ_INIT(head) do { \ + (head)->cqh_first = DWC_CIRCLEQ_END(head); \ + (head)->cqh_last = DWC_CIRCLEQ_END(head); \ +} while (0) + +#define DWC_CIRCLEQ_INIT_ENTRY(elm, field) do { \ + (elm)->field.cqe_next = NULL; \ + (elm)->field.cqe_prev = NULL; \ +} while (0) + +#define DWC_CIRCLEQ_INSERT_AFTER(head, listelm, elm, field) do { \ + (elm)->field.cqe_next = (listelm)->field.cqe_next; \ + (elm)->field.cqe_prev = (listelm); \ + if ((listelm)->field.cqe_next == DWC_CIRCLEQ_END(head)) \ + (head)->cqh_last = (elm); \ + else \ + (listelm)->field.cqe_next->field.cqe_prev = (elm); \ + (listelm)->field.cqe_next = (elm); \ +} while (0) + +#define DWC_CIRCLEQ_INSERT_BEFORE(head, listelm, elm, field) do { \ + (elm)->field.cqe_next = (listelm); \ + (elm)->field.cqe_prev = (listelm)->field.cqe_prev; \ + if ((listelm)->field.cqe_prev == DWC_CIRCLEQ_END(head)) \ + (head)->cqh_first = (elm); \ + else \ + (listelm)->field.cqe_prev->field.cqe_next = (elm); \ + (listelm)->field.cqe_prev = (elm); \ +} while (0) + +#define DWC_CIRCLEQ_INSERT_HEAD(head, elm, field) do { \ + (elm)->field.cqe_next = (head)->cqh_first; \ + (elm)->field.cqe_prev = DWC_CIRCLEQ_END(head); \ + if ((head)->cqh_last == DWC_CIRCLEQ_END(head)) \ + (head)->cqh_last = (elm); \ + else \ + (head)->cqh_first->field.cqe_prev = (elm); \ + (head)->cqh_first = (elm); \ +} while (0) + +#define DWC_CIRCLEQ_INSERT_TAIL(head, elm, field) do { \ + (elm)->field.cqe_next = DWC_CIRCLEQ_END(head); \ + (elm)->field.cqe_prev = (head)->cqh_last; \ + if ((head)->cqh_first == DWC_CIRCLEQ_END(head)) \ + (head)->cqh_first = (elm); \ + else \ + (head)->cqh_last->field.cqe_next = (elm); \ + (head)->cqh_last = (elm); \ +} while (0) + +#define DWC_CIRCLEQ_REMOVE(head, elm, field) do { \ + if ((elm)->field.cqe_next == DWC_CIRCLEQ_END(head)) \ + (head)->cqh_last = (elm)->field.cqe_prev; \ + else \ + (elm)->field.cqe_next->field.cqe_prev = \ + (elm)->field.cqe_prev; \ + if ((elm)->field.cqe_prev == DWC_CIRCLEQ_END(head)) \ + (head)->cqh_first = (elm)->field.cqe_next; \ + else \ + (elm)->field.cqe_prev->field.cqe_next = \ + (elm)->field.cqe_next; \ +} while (0) + +#define DWC_CIRCLEQ_REMOVE_INIT(head, elm, field) do { \ + DWC_CIRCLEQ_REMOVE(head, elm, field); \ + DWC_CIRCLEQ_INIT_ENTRY(elm, field); \ +} while (0) + +#define DWC_CIRCLEQ_REPLACE(head, elm, elm2, field) do { \ + if (((elm2)->field.cqe_next = (elm)->field.cqe_next) == \ + DWC_CIRCLEQ_END(head)) \ + (head).cqh_last = (elm2); \ + else \ + (elm2)->field.cqe_next->field.cqe_prev = (elm2); \ + if (((elm2)->field.cqe_prev = (elm)->field.cqe_prev) == \ + DWC_CIRCLEQ_END(head)) \ + (head).cqh_first = (elm2); \ + else \ + (elm2)->field.cqe_prev->field.cqe_next = (elm2); \ +} while (0) + +#ifdef __cplusplus +} +#endif + +#endif /* _DWC_LIST_H_ */ --- linux-raspi2-4.2.0.orig/drivers/usb/host/dwc_common_port/dwc_mem.c +++ linux-raspi2-4.2.0/drivers/usb/host/dwc_common_port/dwc_mem.c @@ -0,0 +1,245 @@ +/* Memory Debugging */ +#ifdef DWC_DEBUG_MEMORY + +#include "dwc_os.h" +#include "dwc_list.h" + +struct allocation { + void *addr; + void *ctx; + char *func; + int line; + uint32_t size; + int dma; + DWC_CIRCLEQ_ENTRY(allocation) entry; +}; + +DWC_CIRCLEQ_HEAD(allocation_queue, allocation); + +struct allocation_manager { + void *mem_ctx; + struct allocation_queue allocations; + + /* statistics */ + int num; + int num_freed; + int num_active; + uint32_t total; + uint32_t cur; + uint32_t max; +}; + +static struct allocation_manager *manager = NULL; + +static int add_allocation(void *ctx, uint32_t size, char const *func, int line, void *addr, + int dma) +{ + struct allocation *a; + + DWC_ASSERT(manager != NULL, "manager not allocated"); + + a = __DWC_ALLOC_ATOMIC(manager->mem_ctx, sizeof(*a)); + if (!a) { + return -DWC_E_NO_MEMORY; + } + + a->func = __DWC_ALLOC_ATOMIC(manager->mem_ctx, DWC_STRLEN(func) + 1); + if (!a->func) { + __DWC_FREE(manager->mem_ctx, a); + return -DWC_E_NO_MEMORY; + } + + DWC_MEMCPY(a->func, func, DWC_STRLEN(func) + 1); + a->addr = addr; + a->ctx = ctx; + a->line = line; + a->size = size; + a->dma = dma; + DWC_CIRCLEQ_INSERT_TAIL(&manager->allocations, a, entry); + + /* Update stats */ + manager->num++; + manager->num_active++; + manager->total += size; + manager->cur += size; + + if (manager->max < manager->cur) { + manager->max = manager->cur; + } + + return 0; +} + +static struct allocation *find_allocation(void *ctx, void *addr) +{ + struct allocation *a; + + DWC_CIRCLEQ_FOREACH(a, &manager->allocations, entry) { + if (a->ctx == ctx && a->addr == addr) { + return a; + } + } + + return NULL; +} + +static void free_allocation(void *ctx, void *addr, char const *func, int line) +{ + struct allocation *a = find_allocation(ctx, addr); + + if (!a) { + DWC_ASSERT(0, + "Free of address %p that was never allocated or already freed %s:%d", + addr, func, line); + return; + } + + DWC_CIRCLEQ_REMOVE(&manager->allocations, a, entry); + + manager->num_active--; + manager->num_freed++; + manager->cur -= a->size; + __DWC_FREE(manager->mem_ctx, a->func); + __DWC_FREE(manager->mem_ctx, a); +} + +int dwc_memory_debug_start(void *mem_ctx) +{ + DWC_ASSERT(manager == NULL, "Memory debugging has already started\n"); + + if (manager) { + return -DWC_E_BUSY; + } + + manager = __DWC_ALLOC(mem_ctx, sizeof(*manager)); + if (!manager) { + return -DWC_E_NO_MEMORY; + } + + DWC_CIRCLEQ_INIT(&manager->allocations); + manager->mem_ctx = mem_ctx; + manager->num = 0; + manager->num_freed = 0; + manager->num_active = 0; + manager->total = 0; + manager->cur = 0; + manager->max = 0; + + return 0; +} + +void dwc_memory_debug_stop(void) +{ + struct allocation *a; + + dwc_memory_debug_report(); + + DWC_CIRCLEQ_FOREACH(a, &manager->allocations, entry) { + DWC_ERROR("Memory leaked from %s:%d\n", a->func, a->line); + free_allocation(a->ctx, a->addr, NULL, -1); + } + + __DWC_FREE(manager->mem_ctx, manager); +} + +void dwc_memory_debug_report(void) +{ + struct allocation *a; + + DWC_PRINTF("\n\n\n----------------- Memory Debugging Report -----------------\n\n"); + DWC_PRINTF("Num Allocations = %d\n", manager->num); + DWC_PRINTF("Freed = %d\n", manager->num_freed); + DWC_PRINTF("Active = %d\n", manager->num_active); + DWC_PRINTF("Current Memory Used = %d\n", manager->cur); + DWC_PRINTF("Total Memory Used = %d\n", manager->total); + DWC_PRINTF("Maximum Memory Used at Once = %d\n", manager->max); + DWC_PRINTF("Unfreed allocations:\n"); + + DWC_CIRCLEQ_FOREACH(a, &manager->allocations, entry) { + DWC_PRINTF(" addr=%p, size=%d from %s:%d, DMA=%d\n", + a->addr, a->size, a->func, a->line, a->dma); + } +} + +/* The replacement functions */ +void *dwc_alloc_debug(void *mem_ctx, uint32_t size, char const *func, int line) +{ + void *addr = __DWC_ALLOC(mem_ctx, size); + + if (!addr) { + return NULL; + } + + if (add_allocation(mem_ctx, size, func, line, addr, 0)) { + __DWC_FREE(mem_ctx, addr); + return NULL; + } + + return addr; +} + +void *dwc_alloc_atomic_debug(void *mem_ctx, uint32_t size, char const *func, + int line) +{ + void *addr = __DWC_ALLOC_ATOMIC(mem_ctx, size); + + if (!addr) { + return NULL; + } + + if (add_allocation(mem_ctx, size, func, line, addr, 0)) { + __DWC_FREE(mem_ctx, addr); + return NULL; + } + + return addr; +} + +void dwc_free_debug(void *mem_ctx, void *addr, char const *func, int line) +{ + free_allocation(mem_ctx, addr, func, line); + __DWC_FREE(mem_ctx, addr); +} + +void *dwc_dma_alloc_debug(void *dma_ctx, uint32_t size, dwc_dma_t *dma_addr, + char const *func, int line) +{ + void *addr = __DWC_DMA_ALLOC(dma_ctx, size, dma_addr); + + if (!addr) { + return NULL; + } + + if (add_allocation(dma_ctx, size, func, line, addr, 1)) { + __DWC_DMA_FREE(dma_ctx, size, addr, *dma_addr); + return NULL; + } + + return addr; +} + +void *dwc_dma_alloc_atomic_debug(void *dma_ctx, uint32_t size, + dwc_dma_t *dma_addr, char const *func, int line) +{ + void *addr = __DWC_DMA_ALLOC_ATOMIC(dma_ctx, size, dma_addr); + + if (!addr) { + return NULL; + } + + if (add_allocation(dma_ctx, size, func, line, addr, 1)) { + __DWC_DMA_FREE(dma_ctx, size, addr, *dma_addr); + return NULL; + } + + return addr; +} + +void dwc_dma_free_debug(void *dma_ctx, uint32_t size, void *virt_addr, + dwc_dma_t dma_addr, char const *func, int line) +{ + free_allocation(dma_ctx, virt_addr, func, line); + __DWC_DMA_FREE(dma_ctx, size, virt_addr, dma_addr); +} + +#endif /* DWC_DEBUG_MEMORY */ --- linux-raspi2-4.2.0.orig/drivers/usb/host/dwc_common_port/dwc_modpow.c +++ linux-raspi2-4.2.0/drivers/usb/host/dwc_common_port/dwc_modpow.c @@ -0,0 +1,636 @@ +/* Bignum routines adapted from PUTTY sources. PuTTY copyright notice follows. + * + * PuTTY is copyright 1997-2007 Simon Tatham. + * + * Portions copyright Robert de Bath, Joris van Rantwijk, Delian + * Delchev, Andreas Schultz, Jeroen Massar, Wez Furlong, Nicolas Barry, + * Justin Bradford, Ben Harris, Malcolm Smith, Ahmad Khalifa, Markus + * Kuhn, and CORE SDI S.A. + * + * 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 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. + * + */ +#ifdef DWC_CRYPTOLIB + +#ifndef CONFIG_MACH_IPMATE + +#include "dwc_modpow.h" + +#define BIGNUM_INT_MASK 0xFFFFFFFFUL +#define BIGNUM_TOP_BIT 0x80000000UL +#define BIGNUM_INT_BITS 32 + + +static void *snmalloc(void *mem_ctx, size_t n, size_t size) +{ + void *p; + size *= n; + if (size == 0) size = 1; + p = dwc_alloc(mem_ctx, size); + return p; +} + +#define snewn(ctx, n, type) ((type *)snmalloc((ctx), (n), sizeof(type))) +#define sfree dwc_free + +/* + * Usage notes: + * * Do not call the DIVMOD_WORD macro with expressions such as array + * subscripts, as some implementations object to this (see below). + * * Note that none of the division methods below will cope if the + * quotient won't fit into BIGNUM_INT_BITS. Callers should be careful + * to avoid this case. + * If this condition occurs, in the case of the x86 DIV instruction, + * an overflow exception will occur, which (according to a correspondent) + * will manifest on Windows as something like + * 0xC0000095: Integer overflow + * The C variant won't give the right answer, either. + */ + +#define MUL_WORD(w1, w2) ((BignumDblInt)w1 * w2) + +#if defined __GNUC__ && defined __i386__ +#define DIVMOD_WORD(q, r, hi, lo, w) \ + __asm__("div %2" : \ + "=d" (r), "=a" (q) : \ + "r" (w), "d" (hi), "a" (lo)) +#else +#define DIVMOD_WORD(q, r, hi, lo, w) do { \ + BignumDblInt n = (((BignumDblInt)hi) << BIGNUM_INT_BITS) | lo; \ + q = n / w; \ + r = n % w; \ +} while (0) +#endif + +// q = n / w; +// r = n % w; + +#define BIGNUM_INT_BYTES (BIGNUM_INT_BITS / 8) + +#define BIGNUM_INTERNAL + +static Bignum newbn(void *mem_ctx, int length) +{ + Bignum b = snewn(mem_ctx, length + 1, BignumInt); + //if (!b) + //abort(); /* FIXME */ + DWC_MEMSET(b, 0, (length + 1) * sizeof(*b)); + b[0] = length; + return b; +} + +void freebn(void *mem_ctx, Bignum b) +{ + /* + * Burn the evidence, just in case. + */ + DWC_MEMSET(b, 0, sizeof(b[0]) * (b[0] + 1)); + sfree(mem_ctx, b); +} + +/* + * Compute c = a * b. + * Input is in the first len words of a and b. + * Result is returned in the first 2*len words of c. + */ +static void internal_mul(BignumInt *a, BignumInt *b, + BignumInt *c, int len) +{ + int i, j; + BignumDblInt t; + + for (j = 0; j < 2 * len; j++) + c[j] = 0; + + for (i = len - 1; i >= 0; i--) { + t = 0; + for (j = len - 1; j >= 0; j--) { + t += MUL_WORD(a[i], (BignumDblInt) b[j]); + t += (BignumDblInt) c[i + j + 1]; + c[i + j + 1] = (BignumInt) t; + t = t >> BIGNUM_INT_BITS; + } + c[i] = (BignumInt) t; + } +} + +static void internal_add_shifted(BignumInt *number, + unsigned n, int shift) +{ + int word = 1 + (shift / BIGNUM_INT_BITS); + int bshift = shift % BIGNUM_INT_BITS; + BignumDblInt addend; + + addend = (BignumDblInt)n << bshift; + + while (addend) { + addend += number[word]; + number[word] = (BignumInt) addend & BIGNUM_INT_MASK; + addend >>= BIGNUM_INT_BITS; + word++; + } +} + +/* + * Compute a = a % m. + * Input in first alen words of a and first mlen words of m. + * Output in first alen words of a + * (of which first alen-mlen words will be zero). + * The MSW of m MUST have its high bit set. + * Quotient is accumulated in the `quotient' array, which is a Bignum + * rather than the internal bigendian format. Quotient parts are shifted + * left by `qshift' before adding into quot. + */ +static void internal_mod(BignumInt *a, int alen, + BignumInt *m, int mlen, + BignumInt *quot, int qshift) +{ + BignumInt m0, m1; + unsigned int h; + int i, k; + + m0 = m[0]; + if (mlen > 1) + m1 = m[1]; + else + m1 = 0; + + for (i = 0; i <= alen - mlen; i++) { + BignumDblInt t; + unsigned int q, r, c, ai1; + + if (i == 0) { + h = 0; + } else { + h = a[i - 1]; + a[i - 1] = 0; + } + + if (i == alen - 1) + ai1 = 0; + else + ai1 = a[i + 1]; + + /* Find q = h:a[i] / m0 */ + if (h >= m0) { + /* + * Special case. + * + * To illustrate it, suppose a BignumInt is 8 bits, and + * we are dividing (say) A1:23:45:67 by A1:B2:C3. Then + * our initial division will be 0xA123 / 0xA1, which + * will give a quotient of 0x100 and a divide overflow. + * However, the invariants in this division algorithm + * are not violated, since the full number A1:23:... is + * _less_ than the quotient prefix A1:B2:... and so the + * following correction loop would have sorted it out. + * + * In this situation we set q to be the largest + * quotient we _can_ stomach (0xFF, of course). + */ + q = BIGNUM_INT_MASK; + } else { + /* Macro doesn't want an array subscript expression passed + * into it (see definition), so use a temporary. */ + BignumInt tmplo = a[i]; + DIVMOD_WORD(q, r, h, tmplo, m0); + + /* Refine our estimate of q by looking at + h:a[i]:a[i+1] / m0:m1 */ + t = MUL_WORD(m1, q); + if (t > ((BignumDblInt) r << BIGNUM_INT_BITS) + ai1) { + q--; + t -= m1; + r = (r + m0) & BIGNUM_INT_MASK; /* overflow? */ + if (r >= (BignumDblInt) m0 && + t > ((BignumDblInt) r << BIGNUM_INT_BITS) + ai1) q--; + } + } + + /* Subtract q * m from a[i...] */ + c = 0; + for (k = mlen - 1; k >= 0; k--) { + t = MUL_WORD(q, m[k]); + t += c; + c = (unsigned)(t >> BIGNUM_INT_BITS); + if ((BignumInt) t > a[i + k]) + c++; + a[i + k] -= (BignumInt) t; + } + + /* Add back m in case of borrow */ + if (c != h) { + t = 0; + for (k = mlen - 1; k >= 0; k--) { + t += m[k]; + t += a[i + k]; + a[i + k] = (BignumInt) t; + t = t >> BIGNUM_INT_BITS; + } + q--; + } + if (quot) + internal_add_shifted(quot, q, qshift + BIGNUM_INT_BITS * (alen - mlen - i)); + } +} + +/* + * Compute p % mod. + * The most significant word of mod MUST be non-zero. + * We assume that the result array is the same size as the mod array. + * We optionally write out a quotient if `quotient' is non-NULL. + * We can avoid writing out the result if `result' is NULL. + */ +void bigdivmod(void *mem_ctx, Bignum p, Bignum mod, Bignum result, Bignum quotient) +{ + BignumInt *n, *m; + int mshift; + int plen, mlen, i, j; + + /* Allocate m of size mlen, copy mod to m */ + /* We use big endian internally */ + mlen = mod[0]; + m = snewn(mem_ctx, mlen, BignumInt); + //if (!m) + //abort(); /* FIXME */ + for (j = 0; j < mlen; j++) + m[j] = mod[mod[0] - j]; + + /* Shift m left to make msb bit set */ + for (mshift = 0; mshift < BIGNUM_INT_BITS-1; mshift++) + if ((m[0] << mshift) & BIGNUM_TOP_BIT) + break; + if (mshift) { + for (i = 0; i < mlen - 1; i++) + m[i] = (m[i] << mshift) | (m[i + 1] >> (BIGNUM_INT_BITS - mshift)); + m[mlen - 1] = m[mlen - 1] << mshift; + } + + plen = p[0]; + /* Ensure plen > mlen */ + if (plen <= mlen) + plen = mlen + 1; + + /* Allocate n of size plen, copy p to n */ + n = snewn(mem_ctx, plen, BignumInt); + //if (!n) + //abort(); /* FIXME */ + for (j = 0; j < plen; j++) + n[j] = 0; + for (j = 1; j <= (int)p[0]; j++) + n[plen - j] = p[j]; + + /* Main computation */ + internal_mod(n, plen, m, mlen, quotient, mshift); + + /* Fixup result in case the modulus was shifted */ + if (mshift) { + for (i = plen - mlen - 1; i < plen - 1; i++) + n[i] = (n[i] << mshift) | (n[i + 1] >> (BIGNUM_INT_BITS - mshift)); + n[plen - 1] = n[plen - 1] << mshift; + internal_mod(n, plen, m, mlen, quotient, 0); + for (i = plen - 1; i >= plen - mlen; i--) + n[i] = (n[i] >> mshift) | (n[i - 1] << (BIGNUM_INT_BITS - mshift)); + } + + /* Copy result to buffer */ + if (result) { + for (i = 1; i <= (int)result[0]; i++) { + int j = plen - i; + result[i] = j >= 0 ? n[j] : 0; + } + } + + /* Free temporary arrays */ + for (i = 0; i < mlen; i++) + m[i] = 0; + sfree(mem_ctx, m); + for (i = 0; i < plen; i++) + n[i] = 0; + sfree(mem_ctx, n); +} + +/* + * Simple remainder. + */ +Bignum bigmod(void *mem_ctx, Bignum a, Bignum b) +{ + Bignum r = newbn(mem_ctx, b[0]); + bigdivmod(mem_ctx, a, b, r, NULL); + return r; +} + +/* + * Compute (base ^ exp) % mod. + */ +Bignum dwc_modpow(void *mem_ctx, Bignum base_in, Bignum exp, Bignum mod) +{ + BignumInt *a, *b, *n, *m; + int mshift; + int mlen, i, j; + Bignum base, result; + + /* + * The most significant word of mod needs to be non-zero. It + * should already be, but let's make sure. + */ + //assert(mod[mod[0]] != 0); + + /* + * Make sure the base is smaller than the modulus, by reducing + * it modulo the modulus if not. + */ + base = bigmod(mem_ctx, base_in, mod); + + /* Allocate m of size mlen, copy mod to m */ + /* We use big endian internally */ + mlen = mod[0]; + m = snewn(mem_ctx, mlen, BignumInt); + //if (!m) + //abort(); /* FIXME */ + for (j = 0; j < mlen; j++) + m[j] = mod[mod[0] - j]; + + /* Shift m left to make msb bit set */ + for (mshift = 0; mshift < BIGNUM_INT_BITS - 1; mshift++) + if ((m[0] << mshift) & BIGNUM_TOP_BIT) + break; + if (mshift) { + for (i = 0; i < mlen - 1; i++) + m[i] = + (m[i] << mshift) | (m[i + 1] >> + (BIGNUM_INT_BITS - mshift)); + m[mlen - 1] = m[mlen - 1] << mshift; + } + + /* Allocate n of size mlen, copy base to n */ + n = snewn(mem_ctx, mlen, BignumInt); + //if (!n) + //abort(); /* FIXME */ + i = mlen - base[0]; + for (j = 0; j < i; j++) + n[j] = 0; + for (j = 0; j < base[0]; j++) + n[i + j] = base[base[0] - j]; + + /* Allocate a and b of size 2*mlen. Set a = 1 */ + a = snewn(mem_ctx, 2 * mlen, BignumInt); + //if (!a) + //abort(); /* FIXME */ + b = snewn(mem_ctx, 2 * mlen, BignumInt); + //if (!b) + //abort(); /* FIXME */ + for (i = 0; i < 2 * mlen; i++) + a[i] = 0; + a[2 * mlen - 1] = 1; + + /* Skip leading zero bits of exp. */ + i = 0; + j = BIGNUM_INT_BITS - 1; + while (i < exp[0] && (exp[exp[0] - i] & (1 << j)) == 0) { + j--; + if (j < 0) { + i++; + j = BIGNUM_INT_BITS - 1; + } + } + + /* Main computation */ + while (i < exp[0]) { + while (j >= 0) { + internal_mul(a + mlen, a + mlen, b, mlen); + internal_mod(b, mlen * 2, m, mlen, NULL, 0); + if ((exp[exp[0] - i] & (1 << j)) != 0) { + internal_mul(b + mlen, n, a, mlen); + internal_mod(a, mlen * 2, m, mlen, NULL, 0); + } else { + BignumInt *t; + t = a; + a = b; + b = t; + } + j--; + } + i++; + j = BIGNUM_INT_BITS - 1; + } + + /* Fixup result in case the modulus was shifted */ + if (mshift) { + for (i = mlen - 1; i < 2 * mlen - 1; i++) + a[i] = + (a[i] << mshift) | (a[i + 1] >> + (BIGNUM_INT_BITS - mshift)); + a[2 * mlen - 1] = a[2 * mlen - 1] << mshift; + internal_mod(a, mlen * 2, m, mlen, NULL, 0); + for (i = 2 * mlen - 1; i >= mlen; i--) + a[i] = + (a[i] >> mshift) | (a[i - 1] << + (BIGNUM_INT_BITS - mshift)); + } + + /* Copy result to buffer */ + result = newbn(mem_ctx, mod[0]); + for (i = 0; i < mlen; i++) + result[result[0] - i] = a[i + mlen]; + while (result[0] > 1 && result[result[0]] == 0) + result[0]--; + + /* Free temporary arrays */ + for (i = 0; i < 2 * mlen; i++) + a[i] = 0; + sfree(mem_ctx, a); + for (i = 0; i < 2 * mlen; i++) + b[i] = 0; + sfree(mem_ctx, b); + for (i = 0; i < mlen; i++) + m[i] = 0; + sfree(mem_ctx, m); + for (i = 0; i < mlen; i++) + n[i] = 0; + sfree(mem_ctx, n); + + freebn(mem_ctx, base); + + return result; +} + + +#ifdef UNITTEST + +static __u32 dh_p[] = { + 96, + 0xFFFFFFFF, + 0xFFFFFFFF, + 0xA93AD2CA, + 0x4B82D120, + 0xE0FD108E, + 0x43DB5BFC, + 0x74E5AB31, + 0x08E24FA0, + 0xBAD946E2, + 0x770988C0, + 0x7A615D6C, + 0xBBE11757, + 0x177B200C, + 0x521F2B18, + 0x3EC86A64, + 0xD8760273, + 0xD98A0864, + 0xF12FFA06, + 0x1AD2EE6B, + 0xCEE3D226, + 0x4A25619D, + 0x1E8C94E0, + 0xDB0933D7, + 0xABF5AE8C, + 0xA6E1E4C7, + 0xB3970F85, + 0x5D060C7D, + 0x8AEA7157, + 0x58DBEF0A, + 0xECFB8504, + 0xDF1CBA64, + 0xA85521AB, + 0x04507A33, + 0xAD33170D, + 0x8AAAC42D, + 0x15728E5A, + 0x98FA0510, + 0x15D22618, + 0xEA956AE5, + 0x3995497C, + 0x95581718, + 0xDE2BCBF6, + 0x6F4C52C9, + 0xB5C55DF0, + 0xEC07A28F, + 0x9B2783A2, + 0x180E8603, + 0xE39E772C, + 0x2E36CE3B, + 0x32905E46, + 0xCA18217C, + 0xF1746C08, + 0x4ABC9804, + 0x670C354E, + 0x7096966D, + 0x9ED52907, + 0x208552BB, + 0x1C62F356, + 0xDCA3AD96, + 0x83655D23, + 0xFD24CF5F, + 0x69163FA8, + 0x1C55D39A, + 0x98DA4836, + 0xA163BF05, + 0xC2007CB8, + 0xECE45B3D, + 0x49286651, + 0x7C4B1FE6, + 0xAE9F2411, + 0x5A899FA5, + 0xEE386BFB, + 0xF406B7ED, + 0x0BFF5CB6, + 0xA637ED6B, + 0xF44C42E9, + 0x625E7EC6, + 0xE485B576, + 0x6D51C245, + 0x4FE1356D, + 0xF25F1437, + 0x302B0A6D, + 0xCD3A431B, + 0xEF9519B3, + 0x8E3404DD, + 0x514A0879, + 0x3B139B22, + 0x020BBEA6, + 0x8A67CC74, + 0x29024E08, + 0x80DC1CD1, + 0xC4C6628B, + 0x2168C234, + 0xC90FDAA2, + 0xFFFFFFFF, + 0xFFFFFFFF, +}; + +static __u32 dh_a[] = { + 8, + 0xdf367516, + 0x86459caa, + 0xe2d459a4, + 0xd910dae0, + 0x8a8b5e37, + 0x67ab31c6, + 0xf0b55ea9, + 0x440051d6, +}; + +static __u32 dh_b[] = { + 8, + 0xded92656, + 0xe07a048a, + 0x6fa452cd, + 0x2df89d30, + 0xc75f1b0f, + 0x8ce3578f, + 0x7980a324, + 0x5daec786, +}; + +static __u32 dh_g[] = { + 1, + 2, +}; + +int main(void) +{ + int i; + __u32 *k; + k = dwc_modpow(NULL, dh_g, dh_a, dh_p); + + printf("\n\n"); + for (i=0; i> 16; + printf("%04x %04x ", m, l); + if (!((i + 1)%13)) printf("\n"); + } + printf("\n\n"); + + if ((k[0] == 0x60) && (k[1] == 0x28e490e5) && (k[0x60] == 0x5a0d3d4e)) { + printf("PASS\n\n"); + } + else { + printf("FAIL\n\n"); + } + +} + +#endif /* UNITTEST */ + +#endif /* CONFIG_MACH_IPMATE */ + +#endif /*DWC_CRYPTOLIB */ --- linux-raspi2-4.2.0.orig/drivers/usb/host/dwc_common_port/dwc_modpow.h +++ linux-raspi2-4.2.0/drivers/usb/host/dwc_common_port/dwc_modpow.h @@ -0,0 +1,34 @@ +/* + * dwc_modpow.h + * See dwc_modpow.c for license and changes + */ +#ifndef _DWC_MODPOW_H +#define _DWC_MODPOW_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include "dwc_os.h" + +/** @file + * + * This file defines the module exponentiation function which is only used + * internally by the DWC UWB modules for calculation of PKs during numeric + * association. The routine is taken from the PUTTY, an open source terminal + * emulator. The PUTTY License is preserved in the dwc_modpow.c file. + * + */ + +typedef uint32_t BignumInt; +typedef uint64_t BignumDblInt; +typedef BignumInt *Bignum; + +/* Compute modular exponentiaion */ +extern Bignum dwc_modpow(void *mem_ctx, Bignum base_in, Bignum exp, Bignum mod); + +#ifdef __cplusplus +} +#endif + +#endif /* _LINUX_BIGNUM_H */ --- linux-raspi2-4.2.0.orig/drivers/usb/host/dwc_common_port/dwc_notifier.c +++ linux-raspi2-4.2.0/drivers/usb/host/dwc_common_port/dwc_notifier.c @@ -0,0 +1,319 @@ +#ifdef DWC_NOTIFYLIB + +#include "dwc_notifier.h" +#include "dwc_list.h" + +typedef struct dwc_observer { + void *observer; + dwc_notifier_callback_t callback; + void *data; + char *notification; + DWC_CIRCLEQ_ENTRY(dwc_observer) list_entry; +} observer_t; + +DWC_CIRCLEQ_HEAD(observer_queue, dwc_observer); + +typedef struct dwc_notifier { + void *mem_ctx; + void *object; + struct observer_queue observers; + DWC_CIRCLEQ_ENTRY(dwc_notifier) list_entry; +} notifier_t; + +DWC_CIRCLEQ_HEAD(notifier_queue, dwc_notifier); + +typedef struct manager { + void *mem_ctx; + void *wkq_ctx; + dwc_workq_t *wq; +// dwc_mutex_t *mutex; + struct notifier_queue notifiers; +} manager_t; + +static manager_t *manager = NULL; + +static int create_manager(void *mem_ctx, void *wkq_ctx) +{ + manager = dwc_alloc(mem_ctx, sizeof(manager_t)); + if (!manager) { + return -DWC_E_NO_MEMORY; + } + + DWC_CIRCLEQ_INIT(&manager->notifiers); + + manager->wq = dwc_workq_alloc(wkq_ctx, "DWC Notification WorkQ"); + if (!manager->wq) { + return -DWC_E_NO_MEMORY; + } + + return 0; +} + +static void free_manager(void) +{ + dwc_workq_free(manager->wq); + + /* All notifiers must have unregistered themselves before this module + * can be removed. Hitting this assertion indicates a programmer + * error. */ + DWC_ASSERT(DWC_CIRCLEQ_EMPTY(&manager->notifiers), + "Notification manager being freed before all notifiers have been removed"); + dwc_free(manager->mem_ctx, manager); +} + +#ifdef DEBUG +static void dump_manager(void) +{ + notifier_t *n; + observer_t *o; + + DWC_ASSERT(manager, "Notification manager not found"); + + DWC_DEBUG("List of all notifiers and observers:\n"); + DWC_CIRCLEQ_FOREACH(n, &manager->notifiers, list_entry) { + DWC_DEBUG("Notifier %p has observers:\n", n->object); + DWC_CIRCLEQ_FOREACH(o, &n->observers, list_entry) { + DWC_DEBUG(" %p watching %s\n", o->observer, o->notification); + } + } +} +#else +#define dump_manager(...) +#endif + +static observer_t *alloc_observer(void *mem_ctx, void *observer, char *notification, + dwc_notifier_callback_t callback, void *data) +{ + observer_t *new_observer = dwc_alloc(mem_ctx, sizeof(observer_t)); + + if (!new_observer) { + return NULL; + } + + DWC_CIRCLEQ_INIT_ENTRY(new_observer, list_entry); + new_observer->observer = observer; + new_observer->notification = notification; + new_observer->callback = callback; + new_observer->data = data; + return new_observer; +} + +static void free_observer(void *mem_ctx, observer_t *observer) +{ + dwc_free(mem_ctx, observer); +} + +static notifier_t *alloc_notifier(void *mem_ctx, void *object) +{ + notifier_t *notifier; + + if (!object) { + return NULL; + } + + notifier = dwc_alloc(mem_ctx, sizeof(notifier_t)); + if (!notifier) { + return NULL; + } + + DWC_CIRCLEQ_INIT(¬ifier->observers); + DWC_CIRCLEQ_INIT_ENTRY(notifier, list_entry); + + notifier->mem_ctx = mem_ctx; + notifier->object = object; + return notifier; +} + +static void free_notifier(notifier_t *notifier) +{ + observer_t *observer; + + DWC_CIRCLEQ_FOREACH(observer, ¬ifier->observers, list_entry) { + free_observer(notifier->mem_ctx, observer); + } + + dwc_free(notifier->mem_ctx, notifier); +} + +static notifier_t *find_notifier(void *object) +{ + notifier_t *notifier; + + DWC_ASSERT(manager, "Notification manager not found"); + + if (!object) { + return NULL; + } + + DWC_CIRCLEQ_FOREACH(notifier, &manager->notifiers, list_entry) { + if (notifier->object == object) { + return notifier; + } + } + + return NULL; +} + +int dwc_alloc_notification_manager(void *mem_ctx, void *wkq_ctx) +{ + return create_manager(mem_ctx, wkq_ctx); +} + +void dwc_free_notification_manager(void) +{ + free_manager(); +} + +dwc_notifier_t *dwc_register_notifier(void *mem_ctx, void *object) +{ + notifier_t *notifier; + + DWC_ASSERT(manager, "Notification manager not found"); + + notifier = find_notifier(object); + if (notifier) { + DWC_ERROR("Notifier %p is already registered\n", object); + return NULL; + } + + notifier = alloc_notifier(mem_ctx, object); + if (!notifier) { + return NULL; + } + + DWC_CIRCLEQ_INSERT_TAIL(&manager->notifiers, notifier, list_entry); + + DWC_INFO("Notifier %p registered", object); + dump_manager(); + + return notifier; +} + +void dwc_unregister_notifier(dwc_notifier_t *notifier) +{ + DWC_ASSERT(manager, "Notification manager not found"); + + if (!DWC_CIRCLEQ_EMPTY(¬ifier->observers)) { + observer_t *o; + + DWC_ERROR("Notifier %p has active observers when removing\n", notifier->object); + DWC_CIRCLEQ_FOREACH(o, ¬ifier->observers, list_entry) { + DWC_DEBUGC(" %p watching %s\n", o->observer, o->notification); + } + + DWC_ASSERT(DWC_CIRCLEQ_EMPTY(¬ifier->observers), + "Notifier %p has active observers when removing", notifier); + } + + DWC_CIRCLEQ_REMOVE_INIT(&manager->notifiers, notifier, list_entry); + free_notifier(notifier); + + DWC_INFO("Notifier unregistered"); + dump_manager(); +} + +/* Add an observer to observe the notifier for a particular state, event, or notification. */ +int dwc_add_observer(void *observer, void *object, char *notification, + dwc_notifier_callback_t callback, void *data) +{ + notifier_t *notifier = find_notifier(object); + observer_t *new_observer; + + if (!notifier) { + DWC_ERROR("Notifier %p is not found when adding observer\n", object); + return -DWC_E_INVALID; + } + + new_observer = alloc_observer(notifier->mem_ctx, observer, notification, callback, data); + if (!new_observer) { + return -DWC_E_NO_MEMORY; + } + + DWC_CIRCLEQ_INSERT_TAIL(¬ifier->observers, new_observer, list_entry); + + DWC_INFO("Added observer %p to notifier %p observing notification %s, callback=%p, data=%p", + observer, object, notification, callback, data); + + dump_manager(); + return 0; +} + +int dwc_remove_observer(void *observer) +{ + notifier_t *n; + + DWC_ASSERT(manager, "Notification manager not found"); + + DWC_CIRCLEQ_FOREACH(n, &manager->notifiers, list_entry) { + observer_t *o; + observer_t *o2; + + DWC_CIRCLEQ_FOREACH_SAFE(o, o2, &n->observers, list_entry) { + if (o->observer == observer) { + DWC_CIRCLEQ_REMOVE_INIT(&n->observers, o, list_entry); + DWC_INFO("Removing observer %p from notifier %p watching notification %s:", + o->observer, n->object, o->notification); + free_observer(n->mem_ctx, o); + } + } + } + + dump_manager(); + return 0; +} + +typedef struct callback_data { + void *mem_ctx; + dwc_notifier_callback_t cb; + void *observer; + void *data; + void *object; + char *notification; + void *notification_data; +} cb_data_t; + +static void cb_task(void *data) +{ + cb_data_t *cb = (cb_data_t *)data; + + cb->cb(cb->object, cb->notification, cb->observer, cb->notification_data, cb->data); + dwc_free(cb->mem_ctx, cb); +} + +void dwc_notify(dwc_notifier_t *notifier, char *notification, void *notification_data) +{ + observer_t *o; + + DWC_ASSERT(manager, "Notification manager not found"); + + DWC_CIRCLEQ_FOREACH(o, ¬ifier->observers, list_entry) { + int len = DWC_STRLEN(notification); + + if (DWC_STRLEN(o->notification) != len) { + continue; + } + + if (DWC_STRNCMP(o->notification, notification, len) == 0) { + cb_data_t *cb_data = dwc_alloc(notifier->mem_ctx, sizeof(cb_data_t)); + + if (!cb_data) { + DWC_ERROR("Failed to allocate callback data\n"); + return; + } + + cb_data->mem_ctx = notifier->mem_ctx; + cb_data->cb = o->callback; + cb_data->observer = o->observer; + cb_data->data = o->data; + cb_data->object = notifier->object; + cb_data->notification = notification; + cb_data->notification_data = notification_data; + DWC_DEBUGC("Observer found %p for notification %s\n", o->observer, notification); + DWC_WORKQ_SCHEDULE(manager->wq, cb_task, cb_data, + "Notify callback from %p for Notification %s, to observer %p", + cb_data->object, notification, cb_data->observer); + } + } +} + +#endif /* DWC_NOTIFYLIB */ --- linux-raspi2-4.2.0.orig/drivers/usb/host/dwc_common_port/dwc_notifier.h +++ linux-raspi2-4.2.0/drivers/usb/host/dwc_common_port/dwc_notifier.h @@ -0,0 +1,122 @@ + +#ifndef __DWC_NOTIFIER_H__ +#define __DWC_NOTIFIER_H__ + +#ifdef __cplusplus +extern "C" { +#endif + +#include "dwc_os.h" + +/** @file + * + * A simple implementation of the Observer pattern. Any "module" can + * register as an observer or notifier. The notion of "module" is abstract and + * can mean anything used to identify either an observer or notifier. Usually + * it will be a pointer to a data structure which contains some state, ie an + * object. + * + * Before any notifiers can be added, the global notification manager must be + * brought up with dwc_alloc_notification_manager(). + * dwc_free_notification_manager() will bring it down and free all resources. + * These would typically be called upon module load and unload. The + * notification manager is a single global instance that handles all registered + * observable modules and observers so this should be done only once. + * + * A module can be observable by using Notifications to publicize some general + * information about it's state or operation. It does not care who listens, or + * even if anyone listens, or what they do with the information. The observable + * modules do not need to know any information about it's observers or their + * interface, or their state or data. + * + * Any module can register to emit Notifications. It should publish a list of + * notifications that it can emit and their behavior, such as when they will get + * triggered, and what information will be provided to the observer. Then it + * should register itself as an observable module. See dwc_register_notifier(). + * + * Any module can observe any observable, registered module, provided it has a + * handle to the other module and knows what notifications to observe. See + * dwc_add_observer(). + * + * A function of type dwc_notifier_callback_t is called whenever a notification + * is triggered with one or more observers observing it. This function is + * called in it's own process so it may sleep or block if needed. It is + * guaranteed to be called sometime after the notification has occurred and will + * be called once per each time the notification is triggered. It will NOT be + * called in the same process context used to trigger the notification. + * + * @section Limitiations + * + * Keep in mind that Notifications that can be triggered in rapid sucession may + * schedule too many processes too handle. Be aware of this limitation when + * designing to use notifications, and only add notifications for appropriate + * observable information. + * + * Also Notification callbacks are not synchronous. If you need to synchronize + * the behavior between module/observer you must use other means. And perhaps + * that will mean Notifications are not the proper solution. + */ + +struct dwc_notifier; +typedef struct dwc_notifier dwc_notifier_t; + +/** The callback function must be of this type. + * + * @param object This is the object that is being observed. + * @param notification This is the notification that was triggered. + * @param observer This is the observer + * @param notification_data This is notification-specific data that the notifier + * has included in this notification. The value of this should be published in + * the documentation of the observable module with the notifications. + * @param user_data This is any custom data that the observer provided when + * adding itself as an observer to the notification. */ +typedef void (*dwc_notifier_callback_t)(void *object, char *notification, void *observer, + void *notification_data, void *user_data); + +/** Brings up the notification manager. */ +extern int dwc_alloc_notification_manager(void *mem_ctx, void *wkq_ctx); +/** Brings down the notification manager. */ +extern void dwc_free_notification_manager(void); + +/** This function registers an observable module. A dwc_notifier_t object is + * returned to the observable module. This is an opaque object that is used by + * the observable module to trigger notifications. This object should only be + * accessible to functions that are authorized to trigger notifications for this + * module. Observers do not need this object. */ +extern dwc_notifier_t *dwc_register_notifier(void *mem_ctx, void *object); + +/** This function unregisters an observable module. All observers have to be + * removed prior to unregistration. */ +extern void dwc_unregister_notifier(dwc_notifier_t *notifier); + +/** Add a module as an observer to the observable module. The observable module + * needs to have previously registered with the notification manager. + * + * @param observer The observer module + * @param object The module to observe + * @param notification The notification to observe + * @param callback The callback function to call + * @param user_data Any additional user data to pass into the callback function */ +extern int dwc_add_observer(void *observer, void *object, char *notification, + dwc_notifier_callback_t callback, void *user_data); + +/** Removes the specified observer from all notifications that it is currently + * observing. */ +extern int dwc_remove_observer(void *observer); + +/** This function triggers a Notification. It should be called by the + * observable module, or any module or library which the observable module + * allows to trigger notification on it's behalf. Such as the dwc_cc_t. + * + * dwc_notify is a non-blocking function. Callbacks are scheduled called in + * their own process context for each trigger. Callbacks can be blocking. + * dwc_notify can be called from interrupt context if needed. + * + */ +void dwc_notify(dwc_notifier_t *notifier, char *notification, void *notification_data); + +#ifdef __cplusplus +} +#endif + +#endif /* __DWC_NOTIFIER_H__ */ --- linux-raspi2-4.2.0.orig/drivers/usb/host/dwc_common_port/dwc_os.h +++ linux-raspi2-4.2.0/drivers/usb/host/dwc_common_port/dwc_os.h @@ -0,0 +1,1276 @@ +/* ========================================================================= + * $File: //dwh/usb_iip/dev/software/dwc_common_port_2/dwc_os.h $ + * $Revision: #14 $ + * $Date: 2010/11/04 $ + * $Change: 1621695 $ + * + * Synopsys Portability Library Software and documentation + * (hereinafter, "Software") is an Unsupported proprietary work of + * Synopsys, Inc. unless otherwise expressly agreed to in writing + * between Synopsys and you. + * + * The Software IS NOT an item of Licensed Software or Licensed Product + * under any End User Software License Agreement or Agreement for + * Licensed Product with Synopsys or any supplement thereto. You are + * permitted to use and redistribute this Software in source and binary + * forms, with or without modification, provided that redistributions + * of source code must retain this notice. You may not view, use, + * disclose, copy or distribute this file or any information contained + * herein except pursuant to this license grant from Synopsys. If you + * do not agree with this notice, including the disclaimer below, then + * you are not authorized to use the Software. + * + * THIS SOFTWARE IS BEING DISTRIBUTED BY SYNOPSYS SOLELY ON AN "AS IS" + * BASIS AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE HEREBY DISCLAIMED. IN NO EVENT SHALL + * SYNOPSYS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY + * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE + * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH + * DAMAGE. + * ========================================================================= */ +#ifndef _DWC_OS_H_ +#define _DWC_OS_H_ + +#ifdef __cplusplus +extern "C" { +#endif + +/** @file + * + * DWC portability library, low level os-wrapper functions + * + */ + +/* These basic types need to be defined by some OS header file or custom header + * file for your specific target architecture. + * + * uint8_t, int8_t, uint16_t, int16_t, uint32_t, int32_t, uint64_t, int64_t + * + * Any custom or alternate header file must be added and enabled here. + */ + +#ifdef DWC_LINUX +# include +# ifdef CONFIG_DEBUG_MUTEXES +# include +# endif +# include +# include +# include +#endif + +#if defined(DWC_FREEBSD) || defined(DWC_NETBSD) +# include +#endif + + +/** @name Primitive Types and Values */ + +/** We define a boolean type for consistency. Can be either YES or NO */ +typedef uint8_t dwc_bool_t; +#define YES 1 +#define NO 0 + +#ifdef DWC_LINUX + +/** @name Error Codes */ +#define DWC_E_INVALID EINVAL +#define DWC_E_NO_MEMORY ENOMEM +#define DWC_E_NO_DEVICE ENODEV +#define DWC_E_NOT_SUPPORTED EOPNOTSUPP +#define DWC_E_TIMEOUT ETIMEDOUT +#define DWC_E_BUSY EBUSY +#define DWC_E_AGAIN EAGAIN +#define DWC_E_RESTART ERESTART +#define DWC_E_ABORT ECONNABORTED +#define DWC_E_SHUTDOWN ESHUTDOWN +#define DWC_E_NO_DATA ENODATA +#define DWC_E_DISCONNECT ECONNRESET +#define DWC_E_UNKNOWN EINVAL +#define DWC_E_NO_STREAM_RES ENOSR +#define DWC_E_COMMUNICATION ECOMM +#define DWC_E_OVERFLOW EOVERFLOW +#define DWC_E_PROTOCOL EPROTO +#define DWC_E_IN_PROGRESS EINPROGRESS +#define DWC_E_PIPE EPIPE +#define DWC_E_IO EIO +#define DWC_E_NO_SPACE ENOSPC + +#else + +/** @name Error Codes */ +#define DWC_E_INVALID 1001 +#define DWC_E_NO_MEMORY 1002 +#define DWC_E_NO_DEVICE 1003 +#define DWC_E_NOT_SUPPORTED 1004 +#define DWC_E_TIMEOUT 1005 +#define DWC_E_BUSY 1006 +#define DWC_E_AGAIN 1007 +#define DWC_E_RESTART 1008 +#define DWC_E_ABORT 1009 +#define DWC_E_SHUTDOWN 1010 +#define DWC_E_NO_DATA 1011 +#define DWC_E_DISCONNECT 2000 +#define DWC_E_UNKNOWN 3000 +#define DWC_E_NO_STREAM_RES 4001 +#define DWC_E_COMMUNICATION 4002 +#define DWC_E_OVERFLOW 4003 +#define DWC_E_PROTOCOL 4004 +#define DWC_E_IN_PROGRESS 4005 +#define DWC_E_PIPE 4006 +#define DWC_E_IO 4007 +#define DWC_E_NO_SPACE 4008 + +#endif + + +/** @name Tracing/Logging Functions + * + * These function provide the capability to add tracing, debugging, and error + * messages, as well exceptions as assertions. The WUDEV uses these + * extensively. These could be logged to the main console, the serial port, an + * internal buffer, etc. These functions could also be no-op if they are too + * expensive on your system. By default undefining the DEBUG macro already + * no-ops some of these functions. */ + +/** Returns non-zero if in interrupt context. */ +extern dwc_bool_t DWC_IN_IRQ(void); +#define dwc_in_irq DWC_IN_IRQ + +/** Returns "IRQ" if DWC_IN_IRQ is true. */ +static inline char *dwc_irq(void) { + return DWC_IN_IRQ() ? "IRQ" : ""; +} + +/** Returns non-zero if in bottom-half context. */ +extern dwc_bool_t DWC_IN_BH(void); +#define dwc_in_bh DWC_IN_BH + +/** Returns "BH" if DWC_IN_BH is true. */ +static inline char *dwc_bh(void) { + return DWC_IN_BH() ? "BH" : ""; +} + +/** + * A vprintf() clone. Just call vprintf if you've got it. + */ +extern void DWC_VPRINTF(char *format, va_list args); +#define dwc_vprintf DWC_VPRINTF + +/** + * A vsnprintf() clone. Just call vprintf if you've got it. + */ +extern int DWC_VSNPRINTF(char *str, int size, char *format, va_list args); +#define dwc_vsnprintf DWC_VSNPRINTF + +/** + * printf() clone. Just call printf if you've go it. + */ +extern void DWC_PRINTF(char *format, ...) +/* This provides compiler level static checking of the parameters if you're + * using GCC. */ +#ifdef __GNUC__ + __attribute__ ((format(printf, 1, 2))); +#else + ; +#endif +#define dwc_printf DWC_PRINTF + +/** + * sprintf() clone. Just call sprintf if you've got it. + */ +extern int DWC_SPRINTF(char *string, char *format, ...) +#ifdef __GNUC__ + __attribute__ ((format(printf, 2, 3))); +#else + ; +#endif +#define dwc_sprintf DWC_SPRINTF + +/** + * snprintf() clone. Just call snprintf if you've got it. + */ +extern int DWC_SNPRINTF(char *string, int size, char *format, ...) +#ifdef __GNUC__ + __attribute__ ((format(printf, 3, 4))); +#else + ; +#endif +#define dwc_snprintf DWC_SNPRINTF + +/** + * Prints a WARNING message. On systems that don't differentiate between + * warnings and regular log messages, just print it. Indicates that something + * may be wrong with the driver. Works like printf(). + * + * Use the DWC_WARN macro to call this function. + */ +extern void __DWC_WARN(char *format, ...) +#ifdef __GNUC__ + __attribute__ ((format(printf, 1, 2))); +#else + ; +#endif + +/** + * Prints an error message. On systems that don't differentiate between errors + * and regular log messages, just print it. Indicates that something went wrong + * with the driver. Works like printf(). + * + * Use the DWC_ERROR macro to call this function. + */ +extern void __DWC_ERROR(char *format, ...) +#ifdef __GNUC__ + __attribute__ ((format(printf, 1, 2))); +#else + ; +#endif + +/** + * Prints an exception error message and takes some user-defined action such as + * print out a backtrace or trigger a breakpoint. Indicates that something went + * abnormally wrong with the driver such as programmer error, or other + * exceptional condition. It should not be ignored so even on systems without + * printing capability, some action should be taken to notify the developer of + * it. Works like printf(). + */ +extern void DWC_EXCEPTION(char *format, ...) +#ifdef __GNUC__ + __attribute__ ((format(printf, 1, 2))); +#else + ; +#endif +#define dwc_exception DWC_EXCEPTION + +#ifndef DWC_OTG_DEBUG_LEV +#define DWC_OTG_DEBUG_LEV 0 +#endif + +#ifdef DEBUG +/** + * Prints out a debug message. Used for logging/trace messages. + * + * Use the DWC_DEBUG macro to call this function + */ +extern void __DWC_DEBUG(char *format, ...) +#ifdef __GNUC__ + __attribute__ ((format(printf, 1, 2))); +#else + ; +#endif +#else +#define __DWC_DEBUG printk +#endif + +/** + * Prints out a Debug message. + */ +#define DWC_DEBUG(_format, _args...) __DWC_DEBUG("DEBUG:%s:%s: " _format "\n", \ + __func__, dwc_irq(), ## _args) +#define dwc_debug DWC_DEBUG +/** + * Prints out a Debug message if enabled at compile time. + */ +#if DWC_OTG_DEBUG_LEV > 0 +#define DWC_DEBUGC(_format, _args...) DWC_DEBUG(_format, ##_args ) +#else +#define DWC_DEBUGC(_format, _args...) +#endif +#define dwc_debugc DWC_DEBUGC +/** + * Prints out an informative message. + */ +#define DWC_INFO(_format, _args...) DWC_PRINTF("INFO:%s: " _format "\n", \ + dwc_irq(), ## _args) +#define dwc_info DWC_INFO +/** + * Prints out an informative message if enabled at compile time. + */ +#if DWC_OTG_DEBUG_LEV > 1 +#define DWC_INFOC(_format, _args...) DWC_INFO(_format, ##_args ) +#else +#define DWC_INFOC(_format, _args...) +#endif +#define dwc_infoc DWC_INFOC +/** + * Prints out a warning message. + */ +#define DWC_WARN(_format, _args...) __DWC_WARN("WARN:%s:%s:%d: " _format "\n", \ + dwc_irq(), __func__, __LINE__, ## _args) +#define dwc_warn DWC_WARN +/** + * Prints out an error message. + */ +#define DWC_ERROR(_format, _args...) __DWC_ERROR("ERROR:%s:%s:%d: " _format "\n", \ + dwc_irq(), __func__, __LINE__, ## _args) +#define dwc_error DWC_ERROR + +#define DWC_PROTO_ERROR(_format, _args...) __DWC_WARN("ERROR:%s:%s:%d: " _format "\n", \ + dwc_irq(), __func__, __LINE__, ## _args) +#define dwc_proto_error DWC_PROTO_ERROR + +#ifdef DEBUG +/** Prints out a exception error message if the _expr expression fails. Disabled + * if DEBUG is not enabled. */ +#define DWC_ASSERT(_expr, _format, _args...) do { \ + if (!(_expr)) { DWC_EXCEPTION("%s:%s:%d: " _format "\n", dwc_irq(), \ + __FILE__, __LINE__, ## _args); } \ + } while (0) +#else +#define DWC_ASSERT(_x...) +#endif +#define dwc_assert DWC_ASSERT + + +/** @name Byte Ordering + * The following functions are for conversions between processor's byte ordering + * and specific ordering you want. + */ + +/** Converts 32 bit data in CPU byte ordering to little endian. */ +extern uint32_t DWC_CPU_TO_LE32(uint32_t *p); +#define dwc_cpu_to_le32 DWC_CPU_TO_LE32 + +/** Converts 32 bit data in CPU byte orderint to big endian. */ +extern uint32_t DWC_CPU_TO_BE32(uint32_t *p); +#define dwc_cpu_to_be32 DWC_CPU_TO_BE32 + +/** Converts 32 bit little endian data to CPU byte ordering. */ +extern uint32_t DWC_LE32_TO_CPU(uint32_t *p); +#define dwc_le32_to_cpu DWC_LE32_TO_CPU + +/** Converts 32 bit big endian data to CPU byte ordering. */ +extern uint32_t DWC_BE32_TO_CPU(uint32_t *p); +#define dwc_be32_to_cpu DWC_BE32_TO_CPU + +/** Converts 16 bit data in CPU byte ordering to little endian. */ +extern uint16_t DWC_CPU_TO_LE16(uint16_t *p); +#define dwc_cpu_to_le16 DWC_CPU_TO_LE16 + +/** Converts 16 bit data in CPU byte orderint to big endian. */ +extern uint16_t DWC_CPU_TO_BE16(uint16_t *p); +#define dwc_cpu_to_be16 DWC_CPU_TO_BE16 + +/** Converts 16 bit little endian data to CPU byte ordering. */ +extern uint16_t DWC_LE16_TO_CPU(uint16_t *p); +#define dwc_le16_to_cpu DWC_LE16_TO_CPU + +/** Converts 16 bit bi endian data to CPU byte ordering. */ +extern uint16_t DWC_BE16_TO_CPU(uint16_t *p); +#define dwc_be16_to_cpu DWC_BE16_TO_CPU + + +/** @name Register Read/Write + * + * The following six functions should be implemented to read/write registers of + * 32-bit and 64-bit sizes. All modules use this to read/write register values. + * The reg value is a pointer to the register calculated from the void *base + * variable passed into the driver when it is started. */ + +#ifdef DWC_LINUX +/* Linux doesn't need any extra parameters for register read/write, so we + * just throw away the IO context parameter. + */ +/** Reads the content of a 32-bit register. */ +extern uint32_t DWC_READ_REG32(uint32_t volatile *reg); +#define dwc_read_reg32(_ctx_,_reg_) DWC_READ_REG32(_reg_) + +/** Reads the content of a 64-bit register. */ +extern uint64_t DWC_READ_REG64(uint64_t volatile *reg); +#define dwc_read_reg64(_ctx_,_reg_) DWC_READ_REG64(_reg_) + +/** Writes to a 32-bit register. */ +extern void DWC_WRITE_REG32(uint32_t volatile *reg, uint32_t value); +#define dwc_write_reg32(_ctx_,_reg_,_val_) DWC_WRITE_REG32(_reg_, _val_) + +/** Writes to a 64-bit register. */ +extern void DWC_WRITE_REG64(uint64_t volatile *reg, uint64_t value); +#define dwc_write_reg64(_ctx_,_reg_,_val_) DWC_WRITE_REG64(_reg_, _val_) + +/** + * Modify bit values in a register. Using the + * algorithm: (reg_contents & ~clear_mask) | set_mask. + */ +extern void DWC_MODIFY_REG32(uint32_t volatile *reg, uint32_t clear_mask, uint32_t set_mask); +#define dwc_modify_reg32(_ctx_,_reg_,_cmsk_,_smsk_) DWC_MODIFY_REG32(_reg_,_cmsk_,_smsk_) +extern void DWC_MODIFY_REG64(uint64_t volatile *reg, uint64_t clear_mask, uint64_t set_mask); +#define dwc_modify_reg64(_ctx_,_reg_,_cmsk_,_smsk_) DWC_MODIFY_REG64(_reg_,_cmsk_,_smsk_) + +#endif /* DWC_LINUX */ + +#if defined(DWC_FREEBSD) || defined(DWC_NETBSD) +typedef struct dwc_ioctx { + struct device *dev; + bus_space_tag_t iot; + bus_space_handle_t ioh; +} dwc_ioctx_t; + +/** BSD needs two extra parameters for register read/write, so we pass + * them in using the IO context parameter. + */ +/** Reads the content of a 32-bit register. */ +extern uint32_t DWC_READ_REG32(void *io_ctx, uint32_t volatile *reg); +#define dwc_read_reg32 DWC_READ_REG32 + +/** Reads the content of a 64-bit register. */ +extern uint64_t DWC_READ_REG64(void *io_ctx, uint64_t volatile *reg); +#define dwc_read_reg64 DWC_READ_REG64 + +/** Writes to a 32-bit register. */ +extern void DWC_WRITE_REG32(void *io_ctx, uint32_t volatile *reg, uint32_t value); +#define dwc_write_reg32 DWC_WRITE_REG32 + +/** Writes to a 64-bit register. */ +extern void DWC_WRITE_REG64(void *io_ctx, uint64_t volatile *reg, uint64_t value); +#define dwc_write_reg64 DWC_WRITE_REG64 + +/** + * Modify bit values in a register. Using the + * algorithm: (reg_contents & ~clear_mask) | set_mask. + */ +extern void DWC_MODIFY_REG32(void *io_ctx, uint32_t volatile *reg, uint32_t clear_mask, uint32_t set_mask); +#define dwc_modify_reg32 DWC_MODIFY_REG32 +extern void DWC_MODIFY_REG64(void *io_ctx, uint64_t volatile *reg, uint64_t clear_mask, uint64_t set_mask); +#define dwc_modify_reg64 DWC_MODIFY_REG64 + +#endif /* DWC_FREEBSD || DWC_NETBSD */ + +/** @cond */ + +/** @name Some convenience MACROS used internally. Define DWC_DEBUG_REGS to log the + * register writes. */ + +#ifdef DWC_LINUX + +# ifdef DWC_DEBUG_REGS + +#define dwc_define_read_write_reg_n(_reg,_container_type) \ +static inline uint32_t dwc_read_##_reg##_n(_container_type *container, int num) { \ + return DWC_READ_REG32(&container->regs->_reg[num]); \ +} \ +static inline void dwc_write_##_reg##_n(_container_type *container, int num, uint32_t data) { \ + DWC_DEBUG("WRITING %8s[%d]: %p: %08x", #_reg, num, \ + &(((uint32_t*)container->regs->_reg)[num]), data); \ + DWC_WRITE_REG32(&(((uint32_t*)container->regs->_reg)[num]), data); \ +} + +#define dwc_define_read_write_reg(_reg,_container_type) \ +static inline uint32_t dwc_read_##_reg(_container_type *container) { \ + return DWC_READ_REG32(&container->regs->_reg); \ +} \ +static inline void dwc_write_##_reg(_container_type *container, uint32_t data) { \ + DWC_DEBUG("WRITING %11s: %p: %08x", #_reg, &container->regs->_reg, data); \ + DWC_WRITE_REG32(&container->regs->_reg, data); \ +} + +# else /* DWC_DEBUG_REGS */ + +#define dwc_define_read_write_reg_n(_reg,_container_type) \ +static inline uint32_t dwc_read_##_reg##_n(_container_type *container, int num) { \ + return DWC_READ_REG32(&container->regs->_reg[num]); \ +} \ +static inline void dwc_write_##_reg##_n(_container_type *container, int num, uint32_t data) { \ + DWC_WRITE_REG32(&(((uint32_t*)container->regs->_reg)[num]), data); \ +} + +#define dwc_define_read_write_reg(_reg,_container_type) \ +static inline uint32_t dwc_read_##_reg(_container_type *container) { \ + return DWC_READ_REG32(&container->regs->_reg); \ +} \ +static inline void dwc_write_##_reg(_container_type *container, uint32_t data) { \ + DWC_WRITE_REG32(&container->regs->_reg, data); \ +} + +# endif /* DWC_DEBUG_REGS */ + +#endif /* DWC_LINUX */ + +#if defined(DWC_FREEBSD) || defined(DWC_NETBSD) + +# ifdef DWC_DEBUG_REGS + +#define dwc_define_read_write_reg_n(_reg,_container_type) \ +static inline uint32_t dwc_read_##_reg##_n(void *io_ctx, _container_type *container, int num) { \ + return DWC_READ_REG32(io_ctx, &container->regs->_reg[num]); \ +} \ +static inline void dwc_write_##_reg##_n(void *io_ctx, _container_type *container, int num, uint32_t data) { \ + DWC_DEBUG("WRITING %8s[%d]: %p: %08x", #_reg, num, \ + &(((uint32_t*)container->regs->_reg)[num]), data); \ + DWC_WRITE_REG32(io_ctx, &(((uint32_t*)container->regs->_reg)[num]), data); \ +} + +#define dwc_define_read_write_reg(_reg,_container_type) \ +static inline uint32_t dwc_read_##_reg(void *io_ctx, _container_type *container) { \ + return DWC_READ_REG32(io_ctx, &container->regs->_reg); \ +} \ +static inline void dwc_write_##_reg(void *io_ctx, _container_type *container, uint32_t data) { \ + DWC_DEBUG("WRITING %11s: %p: %08x", #_reg, &container->regs->_reg, data); \ + DWC_WRITE_REG32(io_ctx, &container->regs->_reg, data); \ +} + +# else /* DWC_DEBUG_REGS */ + +#define dwc_define_read_write_reg_n(_reg,_container_type) \ +static inline uint32_t dwc_read_##_reg##_n(void *io_ctx, _container_type *container, int num) { \ + return DWC_READ_REG32(io_ctx, &container->regs->_reg[num]); \ +} \ +static inline void dwc_write_##_reg##_n(void *io_ctx, _container_type *container, int num, uint32_t data) { \ + DWC_WRITE_REG32(io_ctx, &(((uint32_t*)container->regs->_reg)[num]), data); \ +} + +#define dwc_define_read_write_reg(_reg,_container_type) \ +static inline uint32_t dwc_read_##_reg(void *io_ctx, _container_type *container) { \ + return DWC_READ_REG32(io_ctx, &container->regs->_reg); \ +} \ +static inline void dwc_write_##_reg(void *io_ctx, _container_type *container, uint32_t data) { \ + DWC_WRITE_REG32(io_ctx, &container->regs->_reg, data); \ +} + +# endif /* DWC_DEBUG_REGS */ + +#endif /* DWC_FREEBSD || DWC_NETBSD */ + +/** @endcond */ + + +#ifdef DWC_CRYPTOLIB +/** @name Crypto Functions + * + * These are the low-level cryptographic functions used by the driver. */ + +/** Perform AES CBC */ +extern int DWC_AES_CBC(uint8_t *message, uint32_t messagelen, uint8_t *key, uint32_t keylen, uint8_t iv[16], uint8_t *out); +#define dwc_aes_cbc DWC_AES_CBC + +/** Fill the provided buffer with random bytes. These should be cryptographic grade random numbers. */ +extern void DWC_RANDOM_BYTES(uint8_t *buffer, uint32_t length); +#define dwc_random_bytes DWC_RANDOM_BYTES + +/** Perform the SHA-256 hash function */ +extern int DWC_SHA256(uint8_t *message, uint32_t len, uint8_t *out); +#define dwc_sha256 DWC_SHA256 + +/** Calculated the HMAC-SHA256 */ +extern int DWC_HMAC_SHA256(uint8_t *message, uint32_t messagelen, uint8_t *key, uint32_t keylen, uint8_t *out); +#define dwc_hmac_sha256 DWC_HMAC_SHA256 + +#endif /* DWC_CRYPTOLIB */ + + +/** @name Memory Allocation + * + * These function provide access to memory allocation. There are only 2 DMA + * functions and 3 Regular memory functions that need to be implemented. None + * of the memory debugging routines need to be implemented. The allocation + * routines all ZERO the contents of the memory. + * + * Defining DWC_DEBUG_MEMORY turns on memory debugging and statistic gathering. + * This checks for memory leaks, keeping track of alloc/free pairs. It also + * keeps track of how much memory the driver is using at any given time. */ + +#define DWC_PAGE_SIZE 4096 +#define DWC_PAGE_OFFSET(addr) (((uint32_t)addr) & 0xfff) +#define DWC_PAGE_ALIGNED(addr) ((((uint32_t)addr) & 0xfff) == 0) + +#define DWC_INVALID_DMA_ADDR 0x0 + +#ifdef DWC_LINUX +/** Type for a DMA address */ +typedef dma_addr_t dwc_dma_t; +#endif + +#if defined(DWC_FREEBSD) || defined(DWC_NETBSD) +typedef bus_addr_t dwc_dma_t; +#endif + +#ifdef DWC_FREEBSD +typedef struct dwc_dmactx { + struct device *dev; + bus_dma_tag_t dma_tag; + bus_dmamap_t dma_map; + bus_addr_t dma_paddr; + void *dma_vaddr; +} dwc_dmactx_t; +#endif + +#ifdef DWC_NETBSD +typedef struct dwc_dmactx { + struct device *dev; + bus_dma_tag_t dma_tag; + bus_dmamap_t dma_map; + bus_dma_segment_t segs[1]; + int nsegs; + bus_addr_t dma_paddr; + void *dma_vaddr; +} dwc_dmactx_t; +#endif + +/* @todo these functions will be added in the future */ +#if 0 +/** + * Creates a DMA pool from which you can allocate DMA buffers. Buffers + * allocated from this pool will be guaranteed to meet the size, alignment, and + * boundary requirements specified. + * + * @param[in] size Specifies the size of the buffers that will be allocated from + * this pool. + * @param[in] align Specifies the byte alignment requirements of the buffers + * allocated from this pool. Must be a power of 2. + * @param[in] boundary Specifies the N-byte boundary that buffers allocated from + * this pool must not cross. + * + * @returns A pointer to an internal opaque structure which is not to be + * accessed outside of these library functions. Use this handle to specify + * which pools to allocate/free DMA buffers from and also to destroy the pool, + * when you are done with it. + */ +extern dwc_pool_t *DWC_DMA_POOL_CREATE(uint32_t size, uint32_t align, uint32_t boundary); + +/** + * Destroy a DMA pool. All buffers allocated from that pool must be freed first. + */ +extern void DWC_DMA_POOL_DESTROY(dwc_pool_t *pool); + +/** + * Allocate a buffer from the specified DMA pool and zeros its contents. + */ +extern void *DWC_DMA_POOL_ALLOC(dwc_pool_t *pool, uint64_t *dma_addr); + +/** + * Free a previously allocated buffer from the DMA pool. + */ +extern void DWC_DMA_POOL_FREE(dwc_pool_t *pool, void *vaddr, void *daddr); +#endif + +/** Allocates a DMA capable buffer and zeroes its contents. */ +extern void *__DWC_DMA_ALLOC(void *dma_ctx, uint32_t size, dwc_dma_t *dma_addr); + +/** Allocates a DMA capable buffer and zeroes its contents in atomic contest */ +extern void *__DWC_DMA_ALLOC_ATOMIC(void *dma_ctx, uint32_t size, dwc_dma_t *dma_addr); + +/** Frees a previously allocated buffer. */ +extern void __DWC_DMA_FREE(void *dma_ctx, uint32_t size, void *virt_addr, dwc_dma_t dma_addr); + +/** Allocates a block of memory and zeroes its contents. */ +extern void *__DWC_ALLOC(void *mem_ctx, uint32_t size); + +/** Allocates a block of memory and zeroes its contents, in an atomic manner + * which can be used inside interrupt context. The size should be sufficiently + * small, a few KB at most, such that failures are not likely to occur. Can just call + * __DWC_ALLOC if it is atomic. */ +extern void *__DWC_ALLOC_ATOMIC(void *mem_ctx, uint32_t size); + +/** Frees a previously allocated buffer. */ +extern void __DWC_FREE(void *mem_ctx, void *addr); + +#ifndef DWC_DEBUG_MEMORY + +#define DWC_ALLOC(_size_) __DWC_ALLOC(NULL, _size_) +#define DWC_ALLOC_ATOMIC(_size_) __DWC_ALLOC_ATOMIC(NULL, _size_) +#define DWC_FREE(_addr_) __DWC_FREE(NULL, _addr_) + +# ifdef DWC_LINUX +#define DWC_DMA_ALLOC(_size_,_dma_) __DWC_DMA_ALLOC(NULL, _size_, _dma_) +#define DWC_DMA_ALLOC_ATOMIC(_size_,_dma_) __DWC_DMA_ALLOC_ATOMIC(NULL, _size_,_dma_) +#define DWC_DMA_FREE(_size_,_virt_,_dma_) __DWC_DMA_FREE(NULL, _size_, _virt_, _dma_) +# endif + +# if defined(DWC_FREEBSD) || defined(DWC_NETBSD) +#define DWC_DMA_ALLOC __DWC_DMA_ALLOC +#define DWC_DMA_FREE __DWC_DMA_FREE +# endif +extern void *dwc_dma_alloc_atomic_debug(uint32_t size, dwc_dma_t *dma_addr, char const *func, int line); + +#else /* DWC_DEBUG_MEMORY */ + +extern void *dwc_alloc_debug(void *mem_ctx, uint32_t size, char const *func, int line); +extern void *dwc_alloc_atomic_debug(void *mem_ctx, uint32_t size, char const *func, int line); +extern void dwc_free_debug(void *mem_ctx, void *addr, char const *func, int line); +extern void *dwc_dma_alloc_debug(void *dma_ctx, uint32_t size, dwc_dma_t *dma_addr, + char const *func, int line); +extern void *dwc_dma_alloc_atomic_debug(void *dma_ctx, uint32_t size, dwc_dma_t *dma_addr, + char const *func, int line); +extern void dwc_dma_free_debug(void *dma_ctx, uint32_t size, void *virt_addr, + dwc_dma_t dma_addr, char const *func, int line); + +extern int dwc_memory_debug_start(void *mem_ctx); +extern void dwc_memory_debug_stop(void); +extern void dwc_memory_debug_report(void); + +#define DWC_ALLOC(_size_) dwc_alloc_debug(NULL, _size_, __func__, __LINE__) +#define DWC_ALLOC_ATOMIC(_size_) dwc_alloc_atomic_debug(NULL, _size_, \ + __func__, __LINE__) +#define DWC_FREE(_addr_) dwc_free_debug(NULL, _addr_, __func__, __LINE__) + +# ifdef DWC_LINUX +#define DWC_DMA_ALLOC(_size_,_dma_) dwc_dma_alloc_debug(NULL, _size_, \ + _dma_, __func__, __LINE__) +#define DWC_DMA_ALLOC_ATOMIC(_size_,_dma_) dwc_dma_alloc_atomic_debug(NULL, _size_, \ + _dma_, __func__, __LINE__) +#define DWC_DMA_FREE(_size_,_virt_,_dma_) dwc_dma_free_debug(NULL, _size_, \ + _virt_, _dma_, __func__, __LINE__) +# endif + +# if defined(DWC_FREEBSD) || defined(DWC_NETBSD) +#define DWC_DMA_ALLOC(_ctx_,_size_,_dma_) dwc_dma_alloc_debug(_ctx_, _size_, \ + _dma_, __func__, __LINE__) +#define DWC_DMA_FREE(_ctx_,_size_,_virt_,_dma_) dwc_dma_free_debug(_ctx_, _size_, \ + _virt_, _dma_, __func__, __LINE__) +# endif + +#endif /* DWC_DEBUG_MEMORY */ + +#define dwc_alloc(_ctx_,_size_) DWC_ALLOC(_size_) +#define dwc_alloc_atomic(_ctx_,_size_) DWC_ALLOC_ATOMIC(_size_) +#define dwc_free(_ctx_,_addr_) DWC_FREE(_addr_) + +#ifdef DWC_LINUX +/* Linux doesn't need any extra parameters for DMA buffer allocation, so we + * just throw away the DMA context parameter. + */ +#define dwc_dma_alloc(_ctx_,_size_,_dma_) DWC_DMA_ALLOC(_size_, _dma_) +#define dwc_dma_alloc_atomic(_ctx_,_size_,_dma_) DWC_DMA_ALLOC_ATOMIC(_size_, _dma_) +#define dwc_dma_free(_ctx_,_size_,_virt_,_dma_) DWC_DMA_FREE(_size_, _virt_, _dma_) +#endif + +#if defined(DWC_FREEBSD) || defined(DWC_NETBSD) +/** BSD needs several extra parameters for DMA buffer allocation, so we pass + * them in using the DMA context parameter. + */ +#define dwc_dma_alloc DWC_DMA_ALLOC +#define dwc_dma_free DWC_DMA_FREE +#endif + + +/** @name Memory and String Processing */ + +/** memset() clone */ +extern void *DWC_MEMSET(void *dest, uint8_t byte, uint32_t size); +#define dwc_memset DWC_MEMSET + +/** memcpy() clone */ +extern void *DWC_MEMCPY(void *dest, void const *src, uint32_t size); +#define dwc_memcpy DWC_MEMCPY + +/** memmove() clone */ +extern void *DWC_MEMMOVE(void *dest, void *src, uint32_t size); +#define dwc_memmove DWC_MEMMOVE + +/** memcmp() clone */ +extern int DWC_MEMCMP(void *m1, void *m2, uint32_t size); +#define dwc_memcmp DWC_MEMCMP + +/** strcmp() clone */ +extern int DWC_STRCMP(void *s1, void *s2); +#define dwc_strcmp DWC_STRCMP + +/** strncmp() clone */ +extern int DWC_STRNCMP(void *s1, void *s2, uint32_t size); +#define dwc_strncmp DWC_STRNCMP + +/** strlen() clone, for NULL terminated ASCII strings */ +extern int DWC_STRLEN(char const *str); +#define dwc_strlen DWC_STRLEN + +/** strcpy() clone, for NULL terminated ASCII strings */ +extern char *DWC_STRCPY(char *to, const char *from); +#define dwc_strcpy DWC_STRCPY + +/** strdup() clone. If you wish to use memory allocation debugging, this + * implementation of strdup should use the DWC_* memory routines instead of + * calling a predefined strdup. Otherwise the memory allocated by this routine + * will not be seen by the debugging routines. */ +extern char *DWC_STRDUP(char const *str); +#define dwc_strdup(_ctx_,_str_) DWC_STRDUP(_str_) + +/** NOT an atoi() clone. Read the description carefully. Returns an integer + * converted from the string str in base 10 unless the string begins with a "0x" + * in which case it is base 16. String must be a NULL terminated sequence of + * ASCII characters and may optionally begin with whitespace, a + or -, and a + * "0x" prefix if base 16. The remaining characters must be valid digits for + * the number and end with a NULL character. If any invalid characters are + * encountered or it returns with a negative error code and the results of the + * conversion are undefined. On sucess it returns 0. Overflow conditions are + * undefined. An example implementation using atoi() can be referenced from the + * Linux implementation. */ +extern int DWC_ATOI(const char *str, int32_t *value); +#define dwc_atoi DWC_ATOI + +/** Same as above but for unsigned. */ +extern int DWC_ATOUI(const char *str, uint32_t *value); +#define dwc_atoui DWC_ATOUI + +#ifdef DWC_UTFLIB +/** This routine returns a UTF16LE unicode encoded string from a UTF8 string. */ +extern int DWC_UTF8_TO_UTF16LE(uint8_t const *utf8string, uint16_t *utf16string, unsigned len); +#define dwc_utf8_to_utf16le DWC_UTF8_TO_UTF16LE +#endif + + +/** @name Wait queues + * + * Wait queues provide a means of synchronizing between threads or processes. A + * process can block on a waitq if some condition is not true, waiting for it to + * become true. When the waitq is triggered all waiting process will get + * unblocked and the condition will be check again. Waitqs should be triggered + * every time a condition can potentially change.*/ +struct dwc_waitq; + +/** Type for a waitq */ +typedef struct dwc_waitq dwc_waitq_t; + +/** The type of waitq condition callback function. This is called every time + * condition is evaluated. */ +typedef int (*dwc_waitq_condition_t)(void *data); + +/** Allocate a waitq */ +extern dwc_waitq_t *DWC_WAITQ_ALLOC(void); +#define dwc_waitq_alloc(_ctx_) DWC_WAITQ_ALLOC() + +/** Free a waitq */ +extern void DWC_WAITQ_FREE(dwc_waitq_t *wq); +#define dwc_waitq_free DWC_WAITQ_FREE + +/** Check the condition and if it is false, block on the waitq. When unblocked, check the + * condition again. The function returns when the condition becomes true. The return value + * is 0 on condition true, DWC_WAITQ_ABORTED on abort or killed, or DWC_WAITQ_UNKNOWN on error. */ +extern int32_t DWC_WAITQ_WAIT(dwc_waitq_t *wq, dwc_waitq_condition_t cond, void *data); +#define dwc_waitq_wait DWC_WAITQ_WAIT + +/** Check the condition and if it is false, block on the waitq. When unblocked, + * check the condition again. The function returns when the condition become + * true or the timeout has passed. The return value is 0 on condition true or + * DWC_TIMED_OUT on timeout, or DWC_WAITQ_ABORTED, or DWC_WAITQ_UNKNOWN on + * error. */ +extern int32_t DWC_WAITQ_WAIT_TIMEOUT(dwc_waitq_t *wq, dwc_waitq_condition_t cond, + void *data, int32_t msecs); +#define dwc_waitq_wait_timeout DWC_WAITQ_WAIT_TIMEOUT + +/** Trigger a waitq, unblocking all processes. This should be called whenever a condition + * has potentially changed. */ +extern void DWC_WAITQ_TRIGGER(dwc_waitq_t *wq); +#define dwc_waitq_trigger DWC_WAITQ_TRIGGER + +/** Unblock all processes waiting on the waitq with an ABORTED result. */ +extern void DWC_WAITQ_ABORT(dwc_waitq_t *wq); +#define dwc_waitq_abort DWC_WAITQ_ABORT + + +/** @name Threads + * + * A thread must be explicitly stopped. It must check DWC_THREAD_SHOULD_STOP + * whenever it is woken up, and then return. The DWC_THREAD_STOP function + * returns the value from the thread. + */ + +struct dwc_thread; + +/** Type for a thread */ +typedef struct dwc_thread dwc_thread_t; + +/** The thread function */ +typedef int (*dwc_thread_function_t)(void *data); + +/** Create a thread and start it running the thread_function. Returns a handle + * to the thread */ +extern dwc_thread_t *DWC_THREAD_RUN(dwc_thread_function_t func, char *name, void *data); +#define dwc_thread_run(_ctx_,_func_,_name_,_data_) DWC_THREAD_RUN(_func_, _name_, _data_) + +/** Stops a thread. Return the value returned by the thread. Or will return + * DWC_ABORT if the thread never started. */ +extern int DWC_THREAD_STOP(dwc_thread_t *thread); +#define dwc_thread_stop DWC_THREAD_STOP + +/** Signifies to the thread that it must stop. */ +#ifdef DWC_LINUX +/* Linux doesn't need any parameters for kthread_should_stop() */ +extern dwc_bool_t DWC_THREAD_SHOULD_STOP(void); +#define dwc_thread_should_stop(_thrd_) DWC_THREAD_SHOULD_STOP() + +/* No thread_exit function in Linux */ +#define dwc_thread_exit(_thrd_) +#endif + +#if defined(DWC_FREEBSD) || defined(DWC_NETBSD) +/** BSD needs the thread pointer for kthread_suspend_check() */ +extern dwc_bool_t DWC_THREAD_SHOULD_STOP(dwc_thread_t *thread); +#define dwc_thread_should_stop DWC_THREAD_SHOULD_STOP + +/** The thread must call this to exit. */ +extern void DWC_THREAD_EXIT(dwc_thread_t *thread); +#define dwc_thread_exit DWC_THREAD_EXIT +#endif + + +/** @name Work queues + * + * Workqs are used to queue a callback function to be called at some later time, + * in another thread. */ +struct dwc_workq; + +/** Type for a workq */ +typedef struct dwc_workq dwc_workq_t; + +/** The type of the callback function to be called. */ +typedef void (*dwc_work_callback_t)(void *data); + +/** Allocate a workq */ +extern dwc_workq_t *DWC_WORKQ_ALLOC(char *name); +#define dwc_workq_alloc(_ctx_,_name_) DWC_WORKQ_ALLOC(_name_) + +/** Free a workq. All work must be completed before being freed. */ +extern void DWC_WORKQ_FREE(dwc_workq_t *workq); +#define dwc_workq_free DWC_WORKQ_FREE + +/** Schedule a callback on the workq, passing in data. The function will be + * scheduled at some later time. */ +extern void DWC_WORKQ_SCHEDULE(dwc_workq_t *workq, dwc_work_callback_t cb, + void *data, char *format, ...) +#ifdef __GNUC__ + __attribute__ ((format(printf, 4, 5))); +#else + ; +#endif +#define dwc_workq_schedule DWC_WORKQ_SCHEDULE + +/** Schedule a callback on the workq, that will be called until at least + * given number miliseconds have passed. */ +extern void DWC_WORKQ_SCHEDULE_DELAYED(dwc_workq_t *workq, dwc_work_callback_t cb, + void *data, uint32_t time, char *format, ...) +#ifdef __GNUC__ + __attribute__ ((format(printf, 5, 6))); +#else + ; +#endif +#define dwc_workq_schedule_delayed DWC_WORKQ_SCHEDULE_DELAYED + +/** The number of processes in the workq */ +extern int DWC_WORKQ_PENDING(dwc_workq_t *workq); +#define dwc_workq_pending DWC_WORKQ_PENDING + +/** Blocks until all the work in the workq is complete or timed out. Returns < + * 0 on timeout. */ +extern int DWC_WORKQ_WAIT_WORK_DONE(dwc_workq_t *workq, int timeout); +#define dwc_workq_wait_work_done DWC_WORKQ_WAIT_WORK_DONE + + +/** @name Tasklets + * + */ +struct dwc_tasklet; + +/** Type for a tasklet */ +typedef struct dwc_tasklet dwc_tasklet_t; + +/** The type of the callback function to be called */ +typedef void (*dwc_tasklet_callback_t)(void *data); + +/** Allocates a tasklet */ +extern dwc_tasklet_t *DWC_TASK_ALLOC(char *name, dwc_tasklet_callback_t cb, void *data); +#define dwc_task_alloc(_ctx_,_name_,_cb_,_data_) DWC_TASK_ALLOC(_name_, _cb_, _data_) + +/** Frees a tasklet */ +extern void DWC_TASK_FREE(dwc_tasklet_t *task); +#define dwc_task_free DWC_TASK_FREE + +/** Schedules a tasklet to run */ +extern void DWC_TASK_SCHEDULE(dwc_tasklet_t *task); +#define dwc_task_schedule DWC_TASK_SCHEDULE + +extern void DWC_TASK_HI_SCHEDULE(dwc_tasklet_t *task); +#define dwc_task_hi_schedule DWC_TASK_HI_SCHEDULE + +/** @name Timer + * + * Callbacks must be small and atomic. + */ +struct dwc_timer; + +/** Type for a timer */ +typedef struct dwc_timer dwc_timer_t; + +/** The type of the callback function to be called */ +typedef void (*dwc_timer_callback_t)(void *data); + +/** Allocates a timer */ +extern dwc_timer_t *DWC_TIMER_ALLOC(char *name, dwc_timer_callback_t cb, void *data); +#define dwc_timer_alloc(_ctx_,_name_,_cb_,_data_) DWC_TIMER_ALLOC(_name_,_cb_,_data_) + +/** Frees a timer */ +extern void DWC_TIMER_FREE(dwc_timer_t *timer); +#define dwc_timer_free DWC_TIMER_FREE + +/** Schedules the timer to run at time ms from now. And will repeat at every + * repeat_interval msec therafter + * + * Modifies a timer that is still awaiting execution to a new expiration time. + * The mod_time is added to the old time. */ +extern void DWC_TIMER_SCHEDULE(dwc_timer_t *timer, uint32_t time); +#define dwc_timer_schedule DWC_TIMER_SCHEDULE + +/** Disables the timer from execution. */ +extern void DWC_TIMER_CANCEL(dwc_timer_t *timer); +#define dwc_timer_cancel DWC_TIMER_CANCEL + + +/** @name Spinlocks + * + * These locks are used when the work between the lock/unlock is atomic and + * short. Interrupts are also disabled during the lock/unlock and thus they are + * suitable to lock between interrupt/non-interrupt context. They also lock + * between processes if you have multiple CPUs or Preemption. If you don't have + * multiple CPUS or Preemption, then the you can simply implement the + * DWC_SPINLOCK and DWC_SPINUNLOCK to disable and enable interrupts. Because + * the work between the lock/unlock is atomic, the process context will never + * change, and so you never have to lock between processes. */ + +struct dwc_spinlock; + +/** Type for a spinlock */ +typedef struct dwc_spinlock dwc_spinlock_t; + +/** Type for the 'flags' argument to spinlock funtions */ +typedef unsigned long dwc_irqflags_t; + +/** Returns an initialized lock variable. This function should allocate and + * initialize the OS-specific data structure used for locking. This data + * structure is to be used for the DWC_LOCK and DWC_UNLOCK functions and should + * be freed by the DWC_FREE_LOCK when it is no longer used. + * + * For Linux Spinlock Debugging make it macro because the debugging routines use + * the symbol name to determine recursive locking. Using a wrapper function + * makes it falsely think recursive locking occurs. */ +#if defined(DWC_LINUX) && defined(CONFIG_DEBUG_SPINLOCK) +#define DWC_SPINLOCK_ALLOC_LINUX_DEBUG(lock) ({ \ + lock = DWC_ALLOC(sizeof(spinlock_t)); \ + if (lock) { \ + spin_lock_init((spinlock_t *)lock); \ + } \ +}) +#else +extern dwc_spinlock_t *DWC_SPINLOCK_ALLOC(void); +#define dwc_spinlock_alloc(_ctx_) DWC_SPINLOCK_ALLOC() +#endif + +/** Frees an initialized lock variable. */ +extern void DWC_SPINLOCK_FREE(dwc_spinlock_t *lock); +#define dwc_spinlock_free(_ctx_,_lock_) DWC_SPINLOCK_FREE(_lock_) + +/** Disables interrupts and blocks until it acquires the lock. + * + * @param lock Pointer to the spinlock. + * @param flags Unsigned long for irq flags storage. + */ +extern void DWC_SPINLOCK_IRQSAVE(dwc_spinlock_t *lock, dwc_irqflags_t *flags); +#define dwc_spinlock_irqsave DWC_SPINLOCK_IRQSAVE + +/** Re-enables the interrupt and releases the lock. + * + * @param lock Pointer to the spinlock. + * @param flags Unsigned long for irq flags storage. Must be the same as was + * passed into DWC_LOCK. + */ +extern void DWC_SPINUNLOCK_IRQRESTORE(dwc_spinlock_t *lock, dwc_irqflags_t flags); +#define dwc_spinunlock_irqrestore DWC_SPINUNLOCK_IRQRESTORE + +/** Blocks until it acquires the lock. + * + * @param lock Pointer to the spinlock. + */ +extern void DWC_SPINLOCK(dwc_spinlock_t *lock); +#define dwc_spinlock DWC_SPINLOCK + +/** Releases the lock. + * + * @param lock Pointer to the spinlock. + */ +extern void DWC_SPINUNLOCK(dwc_spinlock_t *lock); +#define dwc_spinunlock DWC_SPINUNLOCK + + +/** @name Mutexes + * + * Unlike spinlocks Mutexes lock only between processes and the work between the + * lock/unlock CAN block, therefore it CANNOT be called from interrupt context. + */ + +struct dwc_mutex; + +/** Type for a mutex */ +typedef struct dwc_mutex dwc_mutex_t; + +/* For Linux Mutex Debugging make it inline because the debugging routines use + * the symbol to determine recursive locking. This makes it falsely think + * recursive locking occurs. */ +#if defined(DWC_LINUX) && defined(CONFIG_DEBUG_MUTEXES) +#define DWC_MUTEX_ALLOC_LINUX_DEBUG(__mutexp) ({ \ + __mutexp = (dwc_mutex_t *)DWC_ALLOC(sizeof(struct mutex)); \ + mutex_init((struct mutex *)__mutexp); \ +}) +#endif + +/** Allocate a mutex */ +extern dwc_mutex_t *DWC_MUTEX_ALLOC(void); +#define dwc_mutex_alloc(_ctx_) DWC_MUTEX_ALLOC() + +/* For memory leak debugging when using Linux Mutex Debugging */ +#if defined(DWC_LINUX) && defined(CONFIG_DEBUG_MUTEXES) +#define DWC_MUTEX_FREE(__mutexp) do { \ + mutex_destroy((struct mutex *)__mutexp); \ + DWC_FREE(__mutexp); \ +} while(0) +#else +/** Free a mutex */ +extern void DWC_MUTEX_FREE(dwc_mutex_t *mutex); +#define dwc_mutex_free(_ctx_,_mutex_) DWC_MUTEX_FREE(_mutex_) +#endif + +/** Lock a mutex */ +extern void DWC_MUTEX_LOCK(dwc_mutex_t *mutex); +#define dwc_mutex_lock DWC_MUTEX_LOCK + +/** Non-blocking lock returns 1 on successful lock. */ +extern int DWC_MUTEX_TRYLOCK(dwc_mutex_t *mutex); +#define dwc_mutex_trylock DWC_MUTEX_TRYLOCK + +/** Unlock a mutex */ +extern void DWC_MUTEX_UNLOCK(dwc_mutex_t *mutex); +#define dwc_mutex_unlock DWC_MUTEX_UNLOCK + + +/** @name Time */ + +/** Microsecond delay. + * + * @param usecs Microseconds to delay. + */ +extern void DWC_UDELAY(uint32_t usecs); +#define dwc_udelay DWC_UDELAY + +/** Millisecond delay. + * + * @param msecs Milliseconds to delay. + */ +extern void DWC_MDELAY(uint32_t msecs); +#define dwc_mdelay DWC_MDELAY + +/** Non-busy waiting. + * Sleeps for specified number of milliseconds. + * + * @param msecs Milliseconds to sleep. + */ +extern void DWC_MSLEEP(uint32_t msecs); +#define dwc_msleep DWC_MSLEEP + +/** + * Returns number of milliseconds since boot. + */ +extern uint32_t DWC_TIME(void); +#define dwc_time DWC_TIME + + + + +/* @mainpage DWC Portability and Common Library + * + * This is the documentation for the DWC Portability and Common Library. + * + * @section intro Introduction + * + * The DWC Portability library consists of wrapper calls and data structures to + * all low-level functions which are typically provided by the OS. The WUDEV + * driver uses only these functions. In order to port the WUDEV driver, only + * the functions in this library need to be re-implemented, with the same + * behavior as documented here. + * + * The Common library consists of higher level functions, which rely only on + * calling the functions from the DWC Portability library. These common + * routines are shared across modules. Some of the common libraries need to be + * used directly by the driver programmer when porting WUDEV. Such as the + * parameter and notification libraries. + * + * @section low Portability Library OS Wrapper Functions + * + * Any function starting with DWC and in all CAPS is a low-level OS-wrapper that + * needs to be implemented when porting, for example DWC_MUTEX_ALLOC(). All of + * these functions are included in the dwc_os.h file. + * + * There are many functions here covering a wide array of OS services. Please + * see dwc_os.h for details, and implementation notes for each function. + * + * @section common Common Library Functions + * + * Any function starting with dwc and in all lowercase is a common library + * routine. These functions have a portable implementation and do not need to + * be reimplemented when porting. The common routines can be used by any + * driver, and some must be used by the end user to control the drivers. For + * example, you must use the Parameter common library in order to set the + * parameters in the WUDEV module. + * + * The common libraries consist of the following: + * + * - Connection Contexts - Used internally and can be used by end-user. See dwc_cc.h + * - Parameters - Used internally and can be used by end-user. See dwc_params.h + * - Notifications - Used internally and can be used by end-user. See dwc_notifier.h + * - Lists - Used internally and can be used by end-user. See dwc_list.h + * - Memory Debugging - Used internally and can be used by end-user. See dwc_os.h + * - Modpow - Used internally only. See dwc_modpow.h + * - DH - Used internally only. See dwc_dh.h + * - Crypto - Used internally only. See dwc_crypto.h + * + * + * @section prereq Prerequistes For dwc_os.h + * @subsection types Data Types + * + * The dwc_os.h file assumes that several low-level data types are pre defined for the + * compilation environment. These data types are: + * + * - uint8_t - unsigned 8-bit data type + * - int8_t - signed 8-bit data type + * - uint16_t - unsigned 16-bit data type + * - int16_t - signed 16-bit data type + * - uint32_t - unsigned 32-bit data type + * - int32_t - signed 32-bit data type + * - uint64_t - unsigned 64-bit data type + * - int64_t - signed 64-bit data type + * + * Ensure that these are defined before using dwc_os.h. The easiest way to do + * that is to modify the top of the file to include the appropriate header. + * This is already done for the Linux environment. If the DWC_LINUX macro is + * defined, the correct header will be added. A standard header is + * also used for environments where standard C headers are available. + * + * @subsection stdarg Variable Arguments + * + * Variable arguments are provided by a standard C header . it is + * available in Both the Linux and ANSI C enviornment. An equivalent must be + * provided in your enviornment in order to use dwc_os.h with the debug and + * tracing message functionality. + * + * @subsection thread Threading + * + * WUDEV Core must be run on an operating system that provides for multiple + * threads/processes. Threading can be implemented in many ways, even in + * embedded systems without an operating system. At the bare minimum, the + * system should be able to start any number of processes at any time to handle + * special work. It need not be a pre-emptive system. Process context can + * change upon a call to a blocking function. The hardware interrupt context + * that calls the module's ISR() function must be differentiable from process + * context, even if your processes are impemented via a hardware interrupt. + * Further locking mechanism between process must exist (or be implemented), and + * process context must have a way to disable interrupts for a period of time to + * lock them out. If all of this exists, the functions in dwc_os.h related to + * threading should be able to be implemented with the defined behavior. + * + */ + +#ifdef __cplusplus +} +#endif + +#endif /* _DWC_OS_H_ */ --- linux-raspi2-4.2.0.orig/drivers/usb/host/dwc_common_port/usb.h +++ linux-raspi2-4.2.0/drivers/usb/host/dwc_common_port/usb.h @@ -0,0 +1,946 @@ +/* + * Copyright (c) 1998 The NetBSD Foundation, Inc. + * All rights reserved. + * + * This code is derived from software contributed to The NetBSD Foundation + * by Lennart Augustsson (lennart@augustsson.net) at + * Carlstedt Research & Technology. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. All advertising materials mentioning features or use of this software + * must display the following acknowledgement: + * This product includes software developed by the NetBSD + * Foundation, Inc. and its contributors. + * 4. Neither the name of The NetBSD Foundation nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS + * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +/* Modified by Synopsys, Inc, 12/12/2007 */ + + +#ifndef _USB_H_ +#define _USB_H_ + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * The USB records contain some unaligned little-endian word + * components. The U[SG]ETW macros take care of both the alignment + * and endian problem and should always be used to access non-byte + * values. + */ +typedef u_int8_t uByte; +typedef u_int8_t uWord[2]; +typedef u_int8_t uDWord[4]; + +#define USETW2(w,h,l) ((w)[0] = (u_int8_t)(l), (w)[1] = (u_int8_t)(h)) +#define UCONSTW(x) { (x) & 0xff, ((x) >> 8) & 0xff } +#define UCONSTDW(x) { (x) & 0xff, ((x) >> 8) & 0xff, \ + ((x) >> 16) & 0xff, ((x) >> 24) & 0xff } + +#if 1 +#define UGETW(w) ((w)[0] | ((w)[1] << 8)) +#define USETW(w,v) ((w)[0] = (u_int8_t)(v), (w)[1] = (u_int8_t)((v) >> 8)) +#define UGETDW(w) ((w)[0] | ((w)[1] << 8) | ((w)[2] << 16) | ((w)[3] << 24)) +#define USETDW(w,v) ((w)[0] = (u_int8_t)(v), \ + (w)[1] = (u_int8_t)((v) >> 8), \ + (w)[2] = (u_int8_t)((v) >> 16), \ + (w)[3] = (u_int8_t)((v) >> 24)) +#else +/* + * On little-endian machines that can handle unanliged accesses + * (e.g. i386) these macros can be replaced by the following. + */ +#define UGETW(w) (*(u_int16_t *)(w)) +#define USETW(w,v) (*(u_int16_t *)(w) = (v)) +#define UGETDW(w) (*(u_int32_t *)(w)) +#define USETDW(w,v) (*(u_int32_t *)(w) = (v)) +#endif + +/* + * Macros for accessing UAS IU fields, which are big-endian + */ +#define IUSETW2(w,h,l) ((w)[0] = (u_int8_t)(h), (w)[1] = (u_int8_t)(l)) +#define IUCONSTW(x) { ((x) >> 8) & 0xff, (x) & 0xff } +#define IUCONSTDW(x) { ((x) >> 24) & 0xff, ((x) >> 16) & 0xff, \ + ((x) >> 8) & 0xff, (x) & 0xff } +#define IUGETW(w) (((w)[0] << 8) | (w)[1]) +#define IUSETW(w,v) ((w)[0] = (u_int8_t)((v) >> 8), (w)[1] = (u_int8_t)(v)) +#define IUGETDW(w) (((w)[0] << 24) | ((w)[1] << 16) | ((w)[2] << 8) | (w)[3]) +#define IUSETDW(w,v) ((w)[0] = (u_int8_t)((v) >> 24), \ + (w)[1] = (u_int8_t)((v) >> 16), \ + (w)[2] = (u_int8_t)((v) >> 8), \ + (w)[3] = (u_int8_t)(v)) + +#define UPACKED __attribute__((__packed__)) + +typedef struct { + uByte bmRequestType; + uByte bRequest; + uWord wValue; + uWord wIndex; + uWord wLength; +} UPACKED usb_device_request_t; + +#define UT_GET_DIR(a) ((a) & 0x80) +#define UT_WRITE 0x00 +#define UT_READ 0x80 + +#define UT_GET_TYPE(a) ((a) & 0x60) +#define UT_STANDARD 0x00 +#define UT_CLASS 0x20 +#define UT_VENDOR 0x40 + +#define UT_GET_RECIPIENT(a) ((a) & 0x1f) +#define UT_DEVICE 0x00 +#define UT_INTERFACE 0x01 +#define UT_ENDPOINT 0x02 +#define UT_OTHER 0x03 + +#define UT_READ_DEVICE (UT_READ | UT_STANDARD | UT_DEVICE) +#define UT_READ_INTERFACE (UT_READ | UT_STANDARD | UT_INTERFACE) +#define UT_READ_ENDPOINT (UT_READ | UT_STANDARD | UT_ENDPOINT) +#define UT_WRITE_DEVICE (UT_WRITE | UT_STANDARD | UT_DEVICE) +#define UT_WRITE_INTERFACE (UT_WRITE | UT_STANDARD | UT_INTERFACE) +#define UT_WRITE_ENDPOINT (UT_WRITE | UT_STANDARD | UT_ENDPOINT) +#define UT_READ_CLASS_DEVICE (UT_READ | UT_CLASS | UT_DEVICE) +#define UT_READ_CLASS_INTERFACE (UT_READ | UT_CLASS | UT_INTERFACE) +#define UT_READ_CLASS_OTHER (UT_READ | UT_CLASS | UT_OTHER) +#define UT_READ_CLASS_ENDPOINT (UT_READ | UT_CLASS | UT_ENDPOINT) +#define UT_WRITE_CLASS_DEVICE (UT_WRITE | UT_CLASS | UT_DEVICE) +#define UT_WRITE_CLASS_INTERFACE (UT_WRITE | UT_CLASS | UT_INTERFACE) +#define UT_WRITE_CLASS_OTHER (UT_WRITE | UT_CLASS | UT_OTHER) +#define UT_WRITE_CLASS_ENDPOINT (UT_WRITE | UT_CLASS | UT_ENDPOINT) +#define UT_READ_VENDOR_DEVICE (UT_READ | UT_VENDOR | UT_DEVICE) +#define UT_READ_VENDOR_INTERFACE (UT_READ | UT_VENDOR | UT_INTERFACE) +#define UT_READ_VENDOR_OTHER (UT_READ | UT_VENDOR | UT_OTHER) +#define UT_READ_VENDOR_ENDPOINT (UT_READ | UT_VENDOR | UT_ENDPOINT) +#define UT_WRITE_VENDOR_DEVICE (UT_WRITE | UT_VENDOR | UT_DEVICE) +#define UT_WRITE_VENDOR_INTERFACE (UT_WRITE | UT_VENDOR | UT_INTERFACE) +#define UT_WRITE_VENDOR_OTHER (UT_WRITE | UT_VENDOR | UT_OTHER) +#define UT_WRITE_VENDOR_ENDPOINT (UT_WRITE | UT_VENDOR | UT_ENDPOINT) + +/* Requests */ +#define UR_GET_STATUS 0x00 +#define USTAT_STANDARD_STATUS 0x00 +#define WUSTAT_WUSB_FEATURE 0x01 +#define WUSTAT_CHANNEL_INFO 0x02 +#define WUSTAT_RECEIVED_DATA 0x03 +#define WUSTAT_MAS_AVAILABILITY 0x04 +#define WUSTAT_CURRENT_TRANSMIT_POWER 0x05 +#define UR_CLEAR_FEATURE 0x01 +#define UR_SET_FEATURE 0x03 +#define UR_SET_AND_TEST_FEATURE 0x0c +#define UR_SET_ADDRESS 0x05 +#define UR_GET_DESCRIPTOR 0x06 +#define UDESC_DEVICE 0x01 +#define UDESC_CONFIG 0x02 +#define UDESC_STRING 0x03 +#define UDESC_INTERFACE 0x04 +#define UDESC_ENDPOINT 0x05 +#define UDESC_SS_USB_COMPANION 0x30 +#define UDESC_DEVICE_QUALIFIER 0x06 +#define UDESC_OTHER_SPEED_CONFIGURATION 0x07 +#define UDESC_INTERFACE_POWER 0x08 +#define UDESC_OTG 0x09 +#define WUDESC_SECURITY 0x0c +#define WUDESC_KEY 0x0d +#define WUD_GET_KEY_INDEX(_wValue_) ((_wValue_) & 0xf) +#define WUD_GET_KEY_TYPE(_wValue_) (((_wValue_) & 0x30) >> 4) +#define WUD_KEY_TYPE_ASSOC 0x01 +#define WUD_KEY_TYPE_GTK 0x02 +#define WUD_GET_KEY_ORIGIN(_wValue_) (((_wValue_) & 0x40) >> 6) +#define WUD_KEY_ORIGIN_HOST 0x00 +#define WUD_KEY_ORIGIN_DEVICE 0x01 +#define WUDESC_ENCRYPTION_TYPE 0x0e +#define WUDESC_BOS 0x0f +#define WUDESC_DEVICE_CAPABILITY 0x10 +#define WUDESC_WIRELESS_ENDPOINT_COMPANION 0x11 +#define UDESC_BOS 0x0f +#define UDESC_DEVICE_CAPABILITY 0x10 +#define UDESC_CS_DEVICE 0x21 /* class specific */ +#define UDESC_CS_CONFIG 0x22 +#define UDESC_CS_STRING 0x23 +#define UDESC_CS_INTERFACE 0x24 +#define UDESC_CS_ENDPOINT 0x25 +#define UDESC_HUB 0x29 +#define UR_SET_DESCRIPTOR 0x07 +#define UR_GET_CONFIG 0x08 +#define UR_SET_CONFIG 0x09 +#define UR_GET_INTERFACE 0x0a +#define UR_SET_INTERFACE 0x0b +#define UR_SYNCH_FRAME 0x0c +#define WUR_SET_ENCRYPTION 0x0d +#define WUR_GET_ENCRYPTION 0x0e +#define WUR_SET_HANDSHAKE 0x0f +#define WUR_GET_HANDSHAKE 0x10 +#define WUR_SET_CONNECTION 0x11 +#define WUR_SET_SECURITY_DATA 0x12 +#define WUR_GET_SECURITY_DATA 0x13 +#define WUR_SET_WUSB_DATA 0x14 +#define WUDATA_DRPIE_INFO 0x01 +#define WUDATA_TRANSMIT_DATA 0x02 +#define WUDATA_TRANSMIT_PARAMS 0x03 +#define WUDATA_RECEIVE_PARAMS 0x04 +#define WUDATA_TRANSMIT_POWER 0x05 +#define WUR_LOOPBACK_DATA_WRITE 0x15 +#define WUR_LOOPBACK_DATA_READ 0x16 +#define WUR_SET_INTERFACE_DS 0x17 + +/* Feature numbers */ +#define UF_ENDPOINT_HALT 0 +#define UF_DEVICE_REMOTE_WAKEUP 1 +#define UF_TEST_MODE 2 +#define UF_DEVICE_B_HNP_ENABLE 3 +#define UF_DEVICE_A_HNP_SUPPORT 4 +#define UF_DEVICE_A_ALT_HNP_SUPPORT 5 +#define WUF_WUSB 3 +#define WUF_TX_DRPIE 0x0 +#define WUF_DEV_XMIT_PACKET 0x1 +#define WUF_COUNT_PACKETS 0x2 +#define WUF_CAPTURE_PACKETS 0x3 +#define UF_FUNCTION_SUSPEND 0 +#define UF_U1_ENABLE 48 +#define UF_U2_ENABLE 49 +#define UF_LTM_ENABLE 50 + +/* Class requests from the USB 2.0 hub spec, table 11-15 */ +#define UCR_CLEAR_HUB_FEATURE (0x2000 | UR_CLEAR_FEATURE) +#define UCR_CLEAR_PORT_FEATURE (0x2300 | UR_CLEAR_FEATURE) +#define UCR_GET_HUB_DESCRIPTOR (0xa000 | UR_GET_DESCRIPTOR) +#define UCR_GET_HUB_STATUS (0xa000 | UR_GET_STATUS) +#define UCR_GET_PORT_STATUS (0xa300 | UR_GET_STATUS) +#define UCR_SET_HUB_FEATURE (0x2000 | UR_SET_FEATURE) +#define UCR_SET_PORT_FEATURE (0x2300 | UR_SET_FEATURE) +#define UCR_SET_AND_TEST_PORT_FEATURE (0xa300 | UR_SET_AND_TEST_FEATURE) + +#ifdef _MSC_VER +#include +#endif + +typedef struct { + uByte bLength; + uByte bDescriptorType; + uByte bDescriptorSubtype; +} UPACKED usb_descriptor_t; + +typedef struct { + uByte bLength; + uByte bDescriptorType; +} UPACKED usb_descriptor_header_t; + +typedef struct { + uByte bLength; + uByte bDescriptorType; + uWord bcdUSB; +#define UD_USB_2_0 0x0200 +#define UD_IS_USB2(d) (UGETW((d)->bcdUSB) >= UD_USB_2_0) + uByte bDeviceClass; + uByte bDeviceSubClass; + uByte bDeviceProtocol; + uByte bMaxPacketSize; + /* The fields below are not part of the initial descriptor. */ + uWord idVendor; + uWord idProduct; + uWord bcdDevice; + uByte iManufacturer; + uByte iProduct; + uByte iSerialNumber; + uByte bNumConfigurations; +} UPACKED usb_device_descriptor_t; +#define USB_DEVICE_DESCRIPTOR_SIZE 18 + +typedef struct { + uByte bLength; + uByte bDescriptorType; + uWord wTotalLength; + uByte bNumInterface; + uByte bConfigurationValue; + uByte iConfiguration; +#define UC_ATT_ONE (1 << 7) /* must be set */ +#define UC_ATT_SELFPOWER (1 << 6) /* self powered */ +#define UC_ATT_WAKEUP (1 << 5) /* can wakeup */ +#define UC_ATT_BATTERY (1 << 4) /* battery powered */ + uByte bmAttributes; +#define UC_BUS_POWERED 0x80 +#define UC_SELF_POWERED 0x40 +#define UC_REMOTE_WAKEUP 0x20 + uByte bMaxPower; /* max current in 2 mA units */ +#define UC_POWER_FACTOR 2 +} UPACKED usb_config_descriptor_t; +#define USB_CONFIG_DESCRIPTOR_SIZE 9 + +typedef struct { + uByte bLength; + uByte bDescriptorType; + uByte bInterfaceNumber; + uByte bAlternateSetting; + uByte bNumEndpoints; + uByte bInterfaceClass; + uByte bInterfaceSubClass; + uByte bInterfaceProtocol; + uByte iInterface; +} UPACKED usb_interface_descriptor_t; +#define USB_INTERFACE_DESCRIPTOR_SIZE 9 + +typedef struct { + uByte bLength; + uByte bDescriptorType; + uByte bEndpointAddress; +#define UE_GET_DIR(a) ((a) & 0x80) +#define UE_SET_DIR(a,d) ((a) | (((d)&1) << 7)) +#define UE_DIR_IN 0x80 +#define UE_DIR_OUT 0x00 +#define UE_ADDR 0x0f +#define UE_GET_ADDR(a) ((a) & UE_ADDR) + uByte bmAttributes; +#define UE_XFERTYPE 0x03 +#define UE_CONTROL 0x00 +#define UE_ISOCHRONOUS 0x01 +#define UE_BULK 0x02 +#define UE_INTERRUPT 0x03 +#define UE_GET_XFERTYPE(a) ((a) & UE_XFERTYPE) +#define UE_ISO_TYPE 0x0c +#define UE_ISO_ASYNC 0x04 +#define UE_ISO_ADAPT 0x08 +#define UE_ISO_SYNC 0x0c +#define UE_GET_ISO_TYPE(a) ((a) & UE_ISO_TYPE) + uWord wMaxPacketSize; + uByte bInterval; +} UPACKED usb_endpoint_descriptor_t; +#define USB_ENDPOINT_DESCRIPTOR_SIZE 7 + +typedef struct ss_endpoint_companion_descriptor { + uByte bLength; + uByte bDescriptorType; + uByte bMaxBurst; +#define USSE_GET_MAX_STREAMS(a) ((a) & 0x1f) +#define USSE_SET_MAX_STREAMS(a, b) ((a) | ((b) & 0x1f)) +#define USSE_GET_MAX_PACKET_NUM(a) ((a) & 0x03) +#define USSE_SET_MAX_PACKET_NUM(a, b) ((a) | ((b) & 0x03)) + uByte bmAttributes; + uWord wBytesPerInterval; +} UPACKED ss_endpoint_companion_descriptor_t; +#define USB_SS_ENDPOINT_COMPANION_DESCRIPTOR_SIZE 6 + +typedef struct { + uByte bLength; + uByte bDescriptorType; + uWord bString[127]; +} UPACKED usb_string_descriptor_t; +#define USB_MAX_STRING_LEN 128 +#define USB_LANGUAGE_TABLE 0 /* # of the string language id table */ + +/* Hub specific request */ +#define UR_GET_BUS_STATE 0x02 +#define UR_CLEAR_TT_BUFFER 0x08 +#define UR_RESET_TT 0x09 +#define UR_GET_TT_STATE 0x0a +#define UR_STOP_TT 0x0b + +/* Hub features */ +#define UHF_C_HUB_LOCAL_POWER 0 +#define UHF_C_HUB_OVER_CURRENT 1 +#define UHF_PORT_CONNECTION 0 +#define UHF_PORT_ENABLE 1 +#define UHF_PORT_SUSPEND 2 +#define UHF_PORT_OVER_CURRENT 3 +#define UHF_PORT_RESET 4 +#define UHF_PORT_L1 5 +#define UHF_PORT_POWER 8 +#define UHF_PORT_LOW_SPEED 9 +#define UHF_PORT_HIGH_SPEED 10 +#define UHF_C_PORT_CONNECTION 16 +#define UHF_C_PORT_ENABLE 17 +#define UHF_C_PORT_SUSPEND 18 +#define UHF_C_PORT_OVER_CURRENT 19 +#define UHF_C_PORT_RESET 20 +#define UHF_C_PORT_L1 23 +#define UHF_PORT_TEST 21 +#define UHF_PORT_INDICATOR 22 + +typedef struct { + uByte bDescLength; + uByte bDescriptorType; + uByte bNbrPorts; + uWord wHubCharacteristics; +#define UHD_PWR 0x0003 +#define UHD_PWR_GANGED 0x0000 +#define UHD_PWR_INDIVIDUAL 0x0001 +#define UHD_PWR_NO_SWITCH 0x0002 +#define UHD_COMPOUND 0x0004 +#define UHD_OC 0x0018 +#define UHD_OC_GLOBAL 0x0000 +#define UHD_OC_INDIVIDUAL 0x0008 +#define UHD_OC_NONE 0x0010 +#define UHD_TT_THINK 0x0060 +#define UHD_TT_THINK_8 0x0000 +#define UHD_TT_THINK_16 0x0020 +#define UHD_TT_THINK_24 0x0040 +#define UHD_TT_THINK_32 0x0060 +#define UHD_PORT_IND 0x0080 + uByte bPwrOn2PwrGood; /* delay in 2 ms units */ +#define UHD_PWRON_FACTOR 2 + uByte bHubContrCurrent; + uByte DeviceRemovable[32]; /* max 255 ports */ +#define UHD_NOT_REMOV(desc, i) \ + (((desc)->DeviceRemovable[(i)/8] >> ((i) % 8)) & 1) + /* deprecated */ uByte PortPowerCtrlMask[1]; +} UPACKED usb_hub_descriptor_t; +#define USB_HUB_DESCRIPTOR_SIZE 9 /* includes deprecated PortPowerCtrlMask */ + +typedef struct { + uByte bLength; + uByte bDescriptorType; + uWord bcdUSB; + uByte bDeviceClass; + uByte bDeviceSubClass; + uByte bDeviceProtocol; + uByte bMaxPacketSize0; + uByte bNumConfigurations; + uByte bReserved; +} UPACKED usb_device_qualifier_t; +#define USB_DEVICE_QUALIFIER_SIZE 10 + +typedef struct { + uByte bLength; + uByte bDescriptorType; + uByte bmAttributes; +#define UOTG_SRP 0x01 +#define UOTG_HNP 0x02 +} UPACKED usb_otg_descriptor_t; + +/* OTG feature selectors */ +#define UOTG_B_HNP_ENABLE 3 +#define UOTG_A_HNP_SUPPORT 4 +#define UOTG_A_ALT_HNP_SUPPORT 5 + +typedef struct { + uWord wStatus; +/* Device status flags */ +#define UDS_SELF_POWERED 0x0001 +#define UDS_REMOTE_WAKEUP 0x0002 +/* Endpoint status flags */ +#define UES_HALT 0x0001 +} UPACKED usb_status_t; + +typedef struct { + uWord wHubStatus; +#define UHS_LOCAL_POWER 0x0001 +#define UHS_OVER_CURRENT 0x0002 + uWord wHubChange; +} UPACKED usb_hub_status_t; + +typedef struct { + uWord wPortStatus; +#define UPS_CURRENT_CONNECT_STATUS 0x0001 +#define UPS_PORT_ENABLED 0x0002 +#define UPS_SUSPEND 0x0004 +#define UPS_OVERCURRENT_INDICATOR 0x0008 +#define UPS_RESET 0x0010 +#define UPS_PORT_POWER 0x0100 +#define UPS_LOW_SPEED 0x0200 +#define UPS_HIGH_SPEED 0x0400 +#define UPS_PORT_TEST 0x0800 +#define UPS_PORT_INDICATOR 0x1000 + uWord wPortChange; +#define UPS_C_CONNECT_STATUS 0x0001 +#define UPS_C_PORT_ENABLED 0x0002 +#define UPS_C_SUSPEND 0x0004 +#define UPS_C_OVERCURRENT_INDICATOR 0x0008 +#define UPS_C_PORT_RESET 0x0010 +} UPACKED usb_port_status_t; + +#ifdef _MSC_VER +#include +#endif + +/* Device class codes */ +#define UDCLASS_IN_INTERFACE 0x00 +#define UDCLASS_COMM 0x02 +#define UDCLASS_HUB 0x09 +#define UDSUBCLASS_HUB 0x00 +#define UDPROTO_FSHUB 0x00 +#define UDPROTO_HSHUBSTT 0x01 +#define UDPROTO_HSHUBMTT 0x02 +#define UDCLASS_DIAGNOSTIC 0xdc +#define UDCLASS_WIRELESS 0xe0 +#define UDSUBCLASS_RF 0x01 +#define UDPROTO_BLUETOOTH 0x01 +#define UDCLASS_VENDOR 0xff + +/* Interface class codes */ +#define UICLASS_UNSPEC 0x00 + +#define UICLASS_AUDIO 0x01 +#define UISUBCLASS_AUDIOCONTROL 1 +#define UISUBCLASS_AUDIOSTREAM 2 +#define UISUBCLASS_MIDISTREAM 3 + +#define UICLASS_CDC 0x02 /* communication */ +#define UISUBCLASS_DIRECT_LINE_CONTROL_MODEL 1 +#define UISUBCLASS_ABSTRACT_CONTROL_MODEL 2 +#define UISUBCLASS_TELEPHONE_CONTROL_MODEL 3 +#define UISUBCLASS_MULTICHANNEL_CONTROL_MODEL 4 +#define UISUBCLASS_CAPI_CONTROLMODEL 5 +#define UISUBCLASS_ETHERNET_NETWORKING_CONTROL_MODEL 6 +#define UISUBCLASS_ATM_NETWORKING_CONTROL_MODEL 7 +#define UIPROTO_CDC_AT 1 + +#define UICLASS_HID 0x03 +#define UISUBCLASS_BOOT 1 +#define UIPROTO_BOOT_KEYBOARD 1 + +#define UICLASS_PHYSICAL 0x05 + +#define UICLASS_IMAGE 0x06 + +#define UICLASS_PRINTER 0x07 +#define UISUBCLASS_PRINTER 1 +#define UIPROTO_PRINTER_UNI 1 +#define UIPROTO_PRINTER_BI 2 +#define UIPROTO_PRINTER_1284 3 + +#define UICLASS_MASS 0x08 +#define UISUBCLASS_RBC 1 +#define UISUBCLASS_SFF8020I 2 +#define UISUBCLASS_QIC157 3 +#define UISUBCLASS_UFI 4 +#define UISUBCLASS_SFF8070I 5 +#define UISUBCLASS_SCSI 6 +#define UIPROTO_MASS_CBI_I 0 +#define UIPROTO_MASS_CBI 1 +#define UIPROTO_MASS_BBB_OLD 2 /* Not in the spec anymore */ +#define UIPROTO_MASS_BBB 80 /* 'P' for the Iomega Zip drive */ + +#define UICLASS_HUB 0x09 +#define UISUBCLASS_HUB 0 +#define UIPROTO_FSHUB 0 +#define UIPROTO_HSHUBSTT 0 /* Yes, same as previous */ +#define UIPROTO_HSHUBMTT 1 + +#define UICLASS_CDC_DATA 0x0a +#define UISUBCLASS_DATA 0 +#define UIPROTO_DATA_ISDNBRI 0x30 /* Physical iface */ +#define UIPROTO_DATA_HDLC 0x31 /* HDLC */ +#define UIPROTO_DATA_TRANSPARENT 0x32 /* Transparent */ +#define UIPROTO_DATA_Q921M 0x50 /* Management for Q921 */ +#define UIPROTO_DATA_Q921 0x51 /* Data for Q921 */ +#define UIPROTO_DATA_Q921TM 0x52 /* TEI multiplexer for Q921 */ +#define UIPROTO_DATA_V42BIS 0x90 /* Data compression */ +#define UIPROTO_DATA_Q931 0x91 /* Euro-ISDN */ +#define UIPROTO_DATA_V120 0x92 /* V.24 rate adaption */ +#define UIPROTO_DATA_CAPI 0x93 /* CAPI 2.0 commands */ +#define UIPROTO_DATA_HOST_BASED 0xfd /* Host based driver */ +#define UIPROTO_DATA_PUF 0xfe /* see Prot. Unit Func. Desc.*/ +#define UIPROTO_DATA_VENDOR 0xff /* Vendor specific */ + +#define UICLASS_SMARTCARD 0x0b + +/*#define UICLASS_FIRM_UPD 0x0c*/ + +#define UICLASS_SECURITY 0x0d + +#define UICLASS_DIAGNOSTIC 0xdc + +#define UICLASS_WIRELESS 0xe0 +#define UISUBCLASS_RF 0x01 +#define UIPROTO_BLUETOOTH 0x01 + +#define UICLASS_APPL_SPEC 0xfe +#define UISUBCLASS_FIRMWARE_DOWNLOAD 1 +#define UISUBCLASS_IRDA 2 +#define UIPROTO_IRDA 0 + +#define UICLASS_VENDOR 0xff + +#define USB_HUB_MAX_DEPTH 5 + +/* + * Minimum time a device needs to be powered down to go through + * a power cycle. XXX Are these time in the spec? + */ +#define USB_POWER_DOWN_TIME 200 /* ms */ +#define USB_PORT_POWER_DOWN_TIME 100 /* ms */ + +#if 0 +/* These are the values from the spec. */ +#define USB_PORT_RESET_DELAY 10 /* ms */ +#define USB_PORT_ROOT_RESET_DELAY 50 /* ms */ +#define USB_PORT_RESET_RECOVERY 10 /* ms */ +#define USB_PORT_POWERUP_DELAY 100 /* ms */ +#define USB_SET_ADDRESS_SETTLE 2 /* ms */ +#define USB_RESUME_DELAY (20*5) /* ms */ +#define USB_RESUME_WAIT 10 /* ms */ +#define USB_RESUME_RECOVERY 10 /* ms */ +#define USB_EXTRA_POWER_UP_TIME 0 /* ms */ +#else +/* Allow for marginal (i.e. non-conforming) devices. */ +#define USB_PORT_RESET_DELAY 50 /* ms */ +#define USB_PORT_ROOT_RESET_DELAY 250 /* ms */ +#define USB_PORT_RESET_RECOVERY 250 /* ms */ +#define USB_PORT_POWERUP_DELAY 300 /* ms */ +#define USB_SET_ADDRESS_SETTLE 10 /* ms */ +#define USB_RESUME_DELAY (50*5) /* ms */ +#define USB_RESUME_WAIT 50 /* ms */ +#define USB_RESUME_RECOVERY 50 /* ms */ +#define USB_EXTRA_POWER_UP_TIME 20 /* ms */ +#endif + +#define USB_MIN_POWER 100 /* mA */ +#define USB_MAX_POWER 500 /* mA */ + +#define USB_BUS_RESET_DELAY 100 /* ms XXX?*/ + +#define USB_UNCONFIG_NO 0 +#define USB_UNCONFIG_INDEX (-1) + +/*** ioctl() related stuff ***/ + +struct usb_ctl_request { + int ucr_addr; + usb_device_request_t ucr_request; + void *ucr_data; + int ucr_flags; +#define USBD_SHORT_XFER_OK 0x04 /* allow short reads */ + int ucr_actlen; /* actual length transferred */ +}; + +struct usb_alt_interface { + int uai_config_index; + int uai_interface_index; + int uai_alt_no; +}; + +#define USB_CURRENT_CONFIG_INDEX (-1) +#define USB_CURRENT_ALT_INDEX (-1) + +struct usb_config_desc { + int ucd_config_index; + usb_config_descriptor_t ucd_desc; +}; + +struct usb_interface_desc { + int uid_config_index; + int uid_interface_index; + int uid_alt_index; + usb_interface_descriptor_t uid_desc; +}; + +struct usb_endpoint_desc { + int ued_config_index; + int ued_interface_index; + int ued_alt_index; + int ued_endpoint_index; + usb_endpoint_descriptor_t ued_desc; +}; + +struct usb_full_desc { + int ufd_config_index; + u_int ufd_size; + u_char *ufd_data; +}; + +struct usb_string_desc { + int usd_string_index; + int usd_language_id; + usb_string_descriptor_t usd_desc; +}; + +struct usb_ctl_report_desc { + int ucrd_size; + u_char ucrd_data[1024]; /* filled data size will vary */ +}; + +typedef struct { u_int32_t cookie; } usb_event_cookie_t; + +#define USB_MAX_DEVNAMES 4 +#define USB_MAX_DEVNAMELEN 16 +struct usb_device_info { + u_int8_t udi_bus; + u_int8_t udi_addr; /* device address */ + usb_event_cookie_t udi_cookie; + char udi_product[USB_MAX_STRING_LEN]; + char udi_vendor[USB_MAX_STRING_LEN]; + char udi_release[8]; + u_int16_t udi_productNo; + u_int16_t udi_vendorNo; + u_int16_t udi_releaseNo; + u_int8_t udi_class; + u_int8_t udi_subclass; + u_int8_t udi_protocol; + u_int8_t udi_config; + u_int8_t udi_speed; +#define USB_SPEED_UNKNOWN 0 +#define USB_SPEED_LOW 1 +#define USB_SPEED_FULL 2 +#define USB_SPEED_HIGH 3 +#define USB_SPEED_VARIABLE 4 +#define USB_SPEED_SUPER 5 + int udi_power; /* power consumption in mA, 0 if selfpowered */ + int udi_nports; + char udi_devnames[USB_MAX_DEVNAMES][USB_MAX_DEVNAMELEN]; + u_int8_t udi_ports[16];/* hub only: addresses of devices on ports */ +#define USB_PORT_ENABLED 0xff +#define USB_PORT_SUSPENDED 0xfe +#define USB_PORT_POWERED 0xfd +#define USB_PORT_DISABLED 0xfc +}; + +struct usb_ctl_report { + int ucr_report; + u_char ucr_data[1024]; /* filled data size will vary */ +}; + +struct usb_device_stats { + u_long uds_requests[4]; /* indexed by transfer type UE_* */ +}; + +#define WUSB_MIN_IE 0x80 +#define WUSB_WCTA_IE 0x80 +#define WUSB_WCONNECTACK_IE 0x81 +#define WUSB_WHOSTINFO_IE 0x82 +#define WUHI_GET_CA(_bmAttributes_) ((_bmAttributes_) & 0x3) +#define WUHI_CA_RECONN 0x00 +#define WUHI_CA_LIMITED 0x01 +#define WUHI_CA_ALL 0x03 +#define WUHI_GET_MLSI(_bmAttributes_) (((_bmAttributes_) & 0x38) >> 3) +#define WUSB_WCHCHANGEANNOUNCE_IE 0x83 +#define WUSB_WDEV_DISCONNECT_IE 0x84 +#define WUSB_WHOST_DISCONNECT_IE 0x85 +#define WUSB_WRELEASE_CHANNEL_IE 0x86 +#define WUSB_WWORK_IE 0x87 +#define WUSB_WCHANNEL_STOP_IE 0x88 +#define WUSB_WDEV_KEEPALIVE_IE 0x89 +#define WUSB_WISOCH_DISCARD_IE 0x8A +#define WUSB_WRESETDEVICE_IE 0x8B +#define WUSB_WXMIT_PACKET_ADJUST_IE 0x8C +#define WUSB_MAX_IE 0x8C + +/* Device Notification Types */ + +#define WUSB_DN_MIN 0x01 +#define WUSB_DN_CONNECT 0x01 +# define WUSB_DA_OLDCONN 0x00 +# define WUSB_DA_NEWCONN 0x01 +# define WUSB_DA_SELF_BEACON 0x02 +# define WUSB_DA_DIR_BEACON 0x04 +# define WUSB_DA_NO_BEACON 0x06 +#define WUSB_DN_DISCONNECT 0x02 +#define WUSB_DN_EPRDY 0x03 +#define WUSB_DN_MASAVAILCHANGED 0x04 +#define WUSB_DN_REMOTEWAKEUP 0x05 +#define WUSB_DN_SLEEP 0x06 +#define WUSB_DN_ALIVE 0x07 +#define WUSB_DN_MAX 0x07 + +#ifdef _MSC_VER +#include +#endif + +/* WUSB Handshake Data. Used during the SET/GET HANDSHAKE requests */ +typedef struct wusb_hndshk_data { + uByte bMessageNumber; + uByte bStatus; + uByte tTKID[3]; + uByte bReserved; + uByte CDID[16]; + uByte Nonce[16]; + uByte MIC[8]; +} UPACKED wusb_hndshk_data_t; +#define WUSB_HANDSHAKE_LEN_FOR_MIC 38 + +/* WUSB Connection Context */ +typedef struct wusb_conn_context { + uByte CHID [16]; + uByte CDID [16]; + uByte CK [16]; +} UPACKED wusb_conn_context_t; + +/* WUSB Security Descriptor */ +typedef struct wusb_security_desc { + uByte bLength; + uByte bDescriptorType; + uWord wTotalLength; + uByte bNumEncryptionTypes; +} UPACKED wusb_security_desc_t; + +/* WUSB Encryption Type Descriptor */ +typedef struct wusb_encrypt_type_desc { + uByte bLength; + uByte bDescriptorType; + + uByte bEncryptionType; +#define WUETD_UNSECURE 0 +#define WUETD_WIRED 1 +#define WUETD_CCM_1 2 +#define WUETD_RSA_1 3 + + uByte bEncryptionValue; + uByte bAuthKeyIndex; +} UPACKED wusb_encrypt_type_desc_t; + +/* WUSB Key Descriptor */ +typedef struct wusb_key_desc { + uByte bLength; + uByte bDescriptorType; + uByte tTKID[3]; + uByte bReserved; + uByte KeyData[1]; /* variable length */ +} UPACKED wusb_key_desc_t; + +/* WUSB BOS Descriptor (Binary device Object Store) */ +typedef struct wusb_bos_desc { + uByte bLength; + uByte bDescriptorType; + uWord wTotalLength; + uByte bNumDeviceCaps; +} UPACKED wusb_bos_desc_t; + +#define USB_DEVICE_CAPABILITY_20_EXTENSION 0x02 +typedef struct usb_dev_cap_20_ext_desc { + uByte bLength; + uByte bDescriptorType; + uByte bDevCapabilityType; +#define USB_20_EXT_LPM 0x02 + uDWord bmAttributes; +} UPACKED usb_dev_cap_20_ext_desc_t; + +#define USB_DEVICE_CAPABILITY_SS_USB 0x03 +typedef struct usb_dev_cap_ss_usb { + uByte bLength; + uByte bDescriptorType; + uByte bDevCapabilityType; +#define USB_DC_SS_USB_LTM_CAPABLE 0x02 + uByte bmAttributes; +#define USB_DC_SS_USB_SPEED_SUPPORT_LOW 0x01 +#define USB_DC_SS_USB_SPEED_SUPPORT_FULL 0x02 +#define USB_DC_SS_USB_SPEED_SUPPORT_HIGH 0x04 +#define USB_DC_SS_USB_SPEED_SUPPORT_SS 0x08 + uWord wSpeedsSupported; + uByte bFunctionalitySupport; + uByte bU1DevExitLat; + uWord wU2DevExitLat; +} UPACKED usb_dev_cap_ss_usb_t; + +#define USB_DEVICE_CAPABILITY_CONTAINER_ID 0x04 +typedef struct usb_dev_cap_container_id { + uByte bLength; + uByte bDescriptorType; + uByte bDevCapabilityType; + uByte bReserved; + uByte containerID[16]; +} UPACKED usb_dev_cap_container_id_t; + +/* Device Capability Type Codes */ +#define WUSB_DEVICE_CAPABILITY_WIRELESS_USB 0x01 + +/* Device Capability Descriptor */ +typedef struct wusb_dev_cap_desc { + uByte bLength; + uByte bDescriptorType; + uByte bDevCapabilityType; + uByte caps[1]; /* Variable length */ +} UPACKED wusb_dev_cap_desc_t; + +/* Device Capability Descriptor */ +typedef struct wusb_dev_cap_uwb_desc { + uByte bLength; + uByte bDescriptorType; + uByte bDevCapabilityType; + uByte bmAttributes; + uWord wPHYRates; /* Bitmap */ + uByte bmTFITXPowerInfo; + uByte bmFFITXPowerInfo; + uWord bmBandGroup; + uByte bReserved; +} UPACKED wusb_dev_cap_uwb_desc_t; + +/* Wireless USB Endpoint Companion Descriptor */ +typedef struct wusb_endpoint_companion_desc { + uByte bLength; + uByte bDescriptorType; + uByte bMaxBurst; + uByte bMaxSequence; + uWord wMaxStreamDelay; + uWord wOverTheAirPacketSize; + uByte bOverTheAirInterval; + uByte bmCompAttributes; +} UPACKED wusb_endpoint_companion_desc_t; + +/* Wireless USB Numeric Association M1 Data Structure */ +typedef struct wusb_m1_data { + uByte version; + uWord langId; + uByte deviceFriendlyNameLength; + uByte sha_256_m3[32]; + uByte deviceFriendlyName[256]; +} UPACKED wusb_m1_data_t; + +typedef struct wusb_m2_data { + uByte version; + uWord langId; + uByte hostFriendlyNameLength; + uByte pkh[384]; + uByte hostFriendlyName[256]; +} UPACKED wusb_m2_data_t; + +typedef struct wusb_m3_data { + uByte pkd[384]; + uByte nd; +} UPACKED wusb_m3_data_t; + +typedef struct wusb_m4_data { + uDWord _attributeTypeIdAndLength_1; + uWord associationTypeId; + + uDWord _attributeTypeIdAndLength_2; + uWord associationSubTypeId; + + uDWord _attributeTypeIdAndLength_3; + uDWord length; + + uDWord _attributeTypeIdAndLength_4; + uDWord associationStatus; + + uDWord _attributeTypeIdAndLength_5; + uByte chid[16]; + + uDWord _attributeTypeIdAndLength_6; + uByte cdid[16]; + + uDWord _attributeTypeIdAndLength_7; + uByte bandGroups[2]; +} UPACKED wusb_m4_data_t; + +#ifdef _MSC_VER +#include +#endif + +#ifdef __cplusplus +} +#endif + +#endif /* _USB_H_ */ --- linux-raspi2-4.2.0.orig/drivers/usb/host/dwc_otg/Makefile +++ linux-raspi2-4.2.0/drivers/usb/host/dwc_otg/Makefile @@ -0,0 +1,82 @@ +# +# Makefile for DWC_otg Highspeed USB controller driver +# + +ifneq ($(KERNELRELEASE),) + +# Use the BUS_INTERFACE variable to compile the software for either +# PCI(PCI_INTERFACE) or LM(LM_INTERFACE) bus. +ifeq ($(BUS_INTERFACE),) +# BUS_INTERFACE = -DPCI_INTERFACE +# BUS_INTERFACE = -DLM_INTERFACE + BUS_INTERFACE = -DPLATFORM_INTERFACE +endif + +#ccflags-y += -DDEBUG +#ccflags-y += -DDWC_OTG_DEBUGLEV=1 # reduce common debug msgs + +# Use one of the following flags to compile the software in host-only or +# device-only mode. +#ccflags-y += -DDWC_HOST_ONLY +#ccflags-y += -DDWC_DEVICE_ONLY + +ccflags-y += -Dlinux -DDWC_HS_ELECT_TST +#ccflags-y += -DDWC_EN_ISOC +ccflags-y += -I$(obj)/../dwc_common_port +#ccflags-y += -I$(PORTLIB) +ccflags-y += -DDWC_LINUX +ccflags-y += $(CFI) +ccflags-y += $(BUS_INTERFACE) +#ccflags-y += -DDWC_DEV_SRPCAP + +obj-$(CONFIG_USB_DWCOTG) += dwc_otg.o + +dwc_otg-objs := dwc_otg_driver.o dwc_otg_attr.o +dwc_otg-objs += dwc_otg_cil.o dwc_otg_cil_intr.o +dwc_otg-objs += dwc_otg_pcd_linux.o dwc_otg_pcd.o dwc_otg_pcd_intr.o +dwc_otg-objs += dwc_otg_hcd.o dwc_otg_hcd_linux.o dwc_otg_hcd_intr.o dwc_otg_hcd_queue.o dwc_otg_hcd_ddma.o +dwc_otg-objs += dwc_otg_adp.o +dwc_otg-objs += dwc_otg_fiq_fsm.o +dwc_otg-objs += dwc_otg_fiq_stub.o +ifneq ($(CFI),) +dwc_otg-objs += dwc_otg_cfi.o +endif + +kernrelwd := $(subst ., ,$(KERNELRELEASE)) +kernrel3 := $(word 1,$(kernrelwd)).$(word 2,$(kernrelwd)).$(word 3,$(kernrelwd)) + +ifneq ($(kernrel3),2.6.20) +ccflags-y += $(CPPFLAGS) +endif + +else + +PWD := $(shell pwd) +PORTLIB := $(PWD)/../dwc_common_port + +# Command paths +CTAGS := $(CTAGS) +DOXYGEN := $(DOXYGEN) + +default: portlib + $(MAKE) -C$(KDIR) M=$(PWD) ARCH=$(ARCH) CROSS_COMPILE=$(CROSS_COMPILE) modules + +install: default + $(MAKE) -C$(KDIR) M=$(PORTLIB) modules_install + $(MAKE) -C$(KDIR) M=$(PWD) modules_install + +portlib: + $(MAKE) -C$(KDIR) M=$(PORTLIB) ARCH=$(ARCH) CROSS_COMPILE=$(CROSS_COMPILE) modules + cp $(PORTLIB)/Module.symvers $(PWD)/ + +docs: $(wildcard *.[hc]) doc/doxygen.cfg + $(DOXYGEN) doc/doxygen.cfg + +tags: $(wildcard *.[hc]) + $(CTAGS) -e $(wildcard *.[hc]) $(wildcard linux/*.[hc]) $(wildcard $(KDIR)/include/linux/usb*.h) + + +clean: + rm -rf *.o *.ko .*cmd *.mod.c .tmp_versions Module.symvers + +endif --- linux-raspi2-4.2.0.orig/drivers/usb/host/dwc_otg/doc/doxygen.cfg +++ linux-raspi2-4.2.0/drivers/usb/host/dwc_otg/doc/doxygen.cfg @@ -0,0 +1,224 @@ +# Doxyfile 1.3.9.1 + +#--------------------------------------------------------------------------- +# Project related configuration options +#--------------------------------------------------------------------------- +PROJECT_NAME = "DesignWare USB 2.0 OTG Controller (DWC_otg) Device Driver" +PROJECT_NUMBER = v3.00a +OUTPUT_DIRECTORY = ./doc/ +CREATE_SUBDIRS = NO +OUTPUT_LANGUAGE = English +BRIEF_MEMBER_DESC = YES +REPEAT_BRIEF = YES +ABBREVIATE_BRIEF = "The $name class" \ + "The $name widget" \ + "The $name file" \ + is \ + provides \ + specifies \ + contains \ + represents \ + a \ + an \ + the +ALWAYS_DETAILED_SEC = NO +INLINE_INHERITED_MEMB = NO +FULL_PATH_NAMES = NO +STRIP_FROM_PATH = +STRIP_FROM_INC_PATH = +SHORT_NAMES = NO +JAVADOC_AUTOBRIEF = YES +MULTILINE_CPP_IS_BRIEF = NO +INHERIT_DOCS = YES +DISTRIBUTE_GROUP_DOC = NO +TAB_SIZE = 8 +ALIASES = +OPTIMIZE_OUTPUT_FOR_C = YES +OPTIMIZE_OUTPUT_JAVA = NO +SUBGROUPING = YES +#--------------------------------------------------------------------------- +# Build related configuration options +#--------------------------------------------------------------------------- +EXTRACT_ALL = NO +EXTRACT_PRIVATE = YES +EXTRACT_STATIC = YES +EXTRACT_LOCAL_CLASSES = YES +EXTRACT_LOCAL_METHODS = NO +HIDE_UNDOC_MEMBERS = NO +HIDE_UNDOC_CLASSES = NO +HIDE_FRIEND_COMPOUNDS = NO +HIDE_IN_BODY_DOCS = NO +INTERNAL_DOCS = NO +CASE_SENSE_NAMES = NO +HIDE_SCOPE_NAMES = NO +SHOW_INCLUDE_FILES = YES +INLINE_INFO = YES +SORT_MEMBER_DOCS = NO +SORT_BRIEF_DOCS = NO +SORT_BY_SCOPE_NAME = NO +GENERATE_TODOLIST = YES +GENERATE_TESTLIST = YES +GENERATE_BUGLIST = YES +GENERATE_DEPRECATEDLIST= YES +ENABLED_SECTIONS = +MAX_INITIALIZER_LINES = 30 +SHOW_USED_FILES = YES +SHOW_DIRECTORIES = YES +#--------------------------------------------------------------------------- +# configuration options related to warning and progress messages +#--------------------------------------------------------------------------- +QUIET = YES +WARNINGS = YES +WARN_IF_UNDOCUMENTED = NO +WARN_IF_DOC_ERROR = YES +WARN_FORMAT = "$file:$line: $text" +WARN_LOGFILE = +#--------------------------------------------------------------------------- +# configuration options related to the input files +#--------------------------------------------------------------------------- +INPUT = . +FILE_PATTERNS = *.c \ + *.h \ + ./linux/*.c \ + ./linux/*.h +RECURSIVE = NO +EXCLUDE = ./test/ \ + ./dwc_otg/.AppleDouble/ +EXCLUDE_SYMLINKS = YES +EXCLUDE_PATTERNS = *.mod.* +EXAMPLE_PATH = +EXAMPLE_PATTERNS = * +EXAMPLE_RECURSIVE = NO +IMAGE_PATH = +INPUT_FILTER = +FILTER_PATTERNS = +FILTER_SOURCE_FILES = NO +#--------------------------------------------------------------------------- +# configuration options related to source browsing +#--------------------------------------------------------------------------- +SOURCE_BROWSER = YES +INLINE_SOURCES = NO +STRIP_CODE_COMMENTS = YES +REFERENCED_BY_RELATION = NO +REFERENCES_RELATION = NO +VERBATIM_HEADERS = NO +#--------------------------------------------------------------------------- +# configuration options related to the alphabetical class index +#--------------------------------------------------------------------------- +ALPHABETICAL_INDEX = NO +COLS_IN_ALPHA_INDEX = 5 +IGNORE_PREFIX = +#--------------------------------------------------------------------------- +# configuration options related to the HTML output +#--------------------------------------------------------------------------- +GENERATE_HTML = YES +HTML_OUTPUT = html +HTML_FILE_EXTENSION = .html +HTML_HEADER = +HTML_FOOTER = +HTML_STYLESHEET = +HTML_ALIGN_MEMBERS = YES +GENERATE_HTMLHELP = NO +CHM_FILE = +HHC_LOCATION = +GENERATE_CHI = NO +BINARY_TOC = NO +TOC_EXPAND = NO +DISABLE_INDEX = NO +ENUM_VALUES_PER_LINE = 4 +GENERATE_TREEVIEW = YES +TREEVIEW_WIDTH = 250 +#--------------------------------------------------------------------------- +# configuration options related to the LaTeX output +#--------------------------------------------------------------------------- +GENERATE_LATEX = NO +LATEX_OUTPUT = latex +LATEX_CMD_NAME = latex +MAKEINDEX_CMD_NAME = makeindex +COMPACT_LATEX = NO +PAPER_TYPE = a4wide +EXTRA_PACKAGES = +LATEX_HEADER = +PDF_HYPERLINKS = NO +USE_PDFLATEX = NO +LATEX_BATCHMODE = NO +LATEX_HIDE_INDICES = NO +#--------------------------------------------------------------------------- +# configuration options related to the RTF output +#--------------------------------------------------------------------------- +GENERATE_RTF = NO +RTF_OUTPUT = rtf +COMPACT_RTF = NO +RTF_HYPERLINKS = NO +RTF_STYLESHEET_FILE = +RTF_EXTENSIONS_FILE = +#--------------------------------------------------------------------------- +# configuration options related to the man page output +#--------------------------------------------------------------------------- +GENERATE_MAN = NO +MAN_OUTPUT = man +MAN_EXTENSION = .3 +MAN_LINKS = NO +#--------------------------------------------------------------------------- +# configuration options related to the XML output +#--------------------------------------------------------------------------- +GENERATE_XML = NO +XML_OUTPUT = xml +XML_SCHEMA = +XML_DTD = +XML_PROGRAMLISTING = YES +#--------------------------------------------------------------------------- +# configuration options for the AutoGen Definitions output +#--------------------------------------------------------------------------- +GENERATE_AUTOGEN_DEF = NO +#--------------------------------------------------------------------------- +# configuration options related to the Perl module output +#--------------------------------------------------------------------------- +GENERATE_PERLMOD = NO +PERLMOD_LATEX = NO +PERLMOD_PRETTY = YES +PERLMOD_MAKEVAR_PREFIX = +#--------------------------------------------------------------------------- +# Configuration options related to the preprocessor +#--------------------------------------------------------------------------- +ENABLE_PREPROCESSING = YES +MACRO_EXPANSION = YES +EXPAND_ONLY_PREDEF = YES +SEARCH_INCLUDES = YES +INCLUDE_PATH = +INCLUDE_FILE_PATTERNS = +PREDEFINED = DEVICE_ATTR DWC_EN_ISOC +EXPAND_AS_DEFINED = DWC_OTG_DEVICE_ATTR_BITFIELD_SHOW DWC_OTG_DEVICE_ATTR_BITFIELD_STORE DWC_OTG_DEVICE_ATTR_BITFIELD_RW DWC_OTG_DEVICE_ATTR_BITFIELD_RO DWC_OTG_DEVICE_ATTR_REG_SHOW DWC_OTG_DEVICE_ATTR_REG_STORE DWC_OTG_DEVICE_ATTR_REG32_RW DWC_OTG_DEVICE_ATTR_REG32_RO DWC_EN_ISOC +SKIP_FUNCTION_MACROS = NO +#--------------------------------------------------------------------------- +# Configuration::additions related to external references +#--------------------------------------------------------------------------- +TAGFILES = +GENERATE_TAGFILE = +ALLEXTERNALS = NO +EXTERNAL_GROUPS = YES +PERL_PATH = /usr/bin/perl +#--------------------------------------------------------------------------- +# Configuration options related to the dot tool +#--------------------------------------------------------------------------- +CLASS_DIAGRAMS = YES +HIDE_UNDOC_RELATIONS = YES +HAVE_DOT = NO +CLASS_GRAPH = YES +COLLABORATION_GRAPH = YES +UML_LOOK = NO +TEMPLATE_RELATIONS = NO +INCLUDE_GRAPH = YES +INCLUDED_BY_GRAPH = YES +CALL_GRAPH = NO +GRAPHICAL_HIERARCHY = YES +DOT_IMAGE_FORMAT = png +DOT_PATH = +DOTFILE_DIRS = +MAX_DOT_GRAPH_DEPTH = 1000 +GENERATE_LEGEND = YES +DOT_CLEANUP = YES +#--------------------------------------------------------------------------- +# Configuration::additions related to the search engine +#--------------------------------------------------------------------------- +SEARCHENGINE = NO --- linux-raspi2-4.2.0.orig/drivers/usb/host/dwc_otg/dummy_audio.c +++ linux-raspi2-4.2.0/drivers/usb/host/dwc_otg/dummy_audio.c @@ -0,0 +1,1575 @@ +/* + * zero.c -- Gadget Zero, for USB development + * + * Copyright (C) 2003-2004 David Brownell + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions, and the following disclaimer, + * without modification. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The names of the above-listed copyright holders may not be used + * to endorse or promote products derived from this software without + * specific prior written permission. + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") as published by the Free Software + * Foundation, either version 2 of that License or (at your option) any + * later version. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS + * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + + +/* + * Gadget Zero only needs two bulk endpoints, and is an example of how you + * can write a hardware-agnostic gadget driver running inside a USB device. + * + * Hardware details are visible (see CONFIG_USB_ZERO_* below) but don't + * affect most of the driver. + * + * Use it with the Linux host/master side "usbtest" driver to get a basic + * functional test of your device-side usb stack, or with "usb-skeleton". + * + * It supports two similar configurations. One sinks whatever the usb host + * writes, and in return sources zeroes. The other loops whatever the host + * writes back, so the host can read it. Module options include: + * + * buflen=N default N=4096, buffer size used + * qlen=N default N=32, how many buffers in the loopback queue + * loopdefault default false, list loopback config first + * + * Many drivers will only have one configuration, letting them be much + * simpler if they also don't support high speed operation (like this + * driver does). + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include + +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,21) +# include +#else +# include +#endif + +#include + + +/*-------------------------------------------------------------------------*/ +/*-------------------------------------------------------------------------*/ + + +static int utf8_to_utf16le(const char *s, u16 *cp, unsigned len) +{ + int count = 0; + u8 c; + u16 uchar; + + /* this insists on correct encodings, though not minimal ones. + * BUT it currently rejects legit 4-byte UTF-8 code points, + * which need surrogate pairs. (Unicode 3.1 can use them.) + */ + while (len != 0 && (c = (u8) *s++) != 0) { + if (unlikely(c & 0x80)) { + // 2-byte sequence: + // 00000yyyyyxxxxxx = 110yyyyy 10xxxxxx + if ((c & 0xe0) == 0xc0) { + uchar = (c & 0x1f) << 6; + + c = (u8) *s++; + if ((c & 0xc0) != 0xc0) + goto fail; + c &= 0x3f; + uchar |= c; + + // 3-byte sequence (most CJKV characters): + // zzzzyyyyyyxxxxxx = 1110zzzz 10yyyyyy 10xxxxxx + } else if ((c & 0xf0) == 0xe0) { + uchar = (c & 0x0f) << 12; + + c = (u8) *s++; + if ((c & 0xc0) != 0xc0) + goto fail; + c &= 0x3f; + uchar |= c << 6; + + c = (u8) *s++; + if ((c & 0xc0) != 0xc0) + goto fail; + c &= 0x3f; + uchar |= c; + + /* no bogus surrogates */ + if (0xd800 <= uchar && uchar <= 0xdfff) + goto fail; + + // 4-byte sequence (surrogate pairs, currently rare): + // 11101110wwwwzzzzyy + 110111yyyyxxxxxx + // = 11110uuu 10uuzzzz 10yyyyyy 10xxxxxx + // (uuuuu = wwww + 1) + // FIXME accept the surrogate code points (only) + + } else + goto fail; + } else + uchar = c; + put_unaligned (cpu_to_le16 (uchar), cp++); + count++; + len--; + } + return count; +fail: + return -1; +} + + +/** + * usb_gadget_get_string - fill out a string descriptor + * @table: of c strings encoded using UTF-8 + * @id: string id, from low byte of wValue in get string descriptor + * @buf: at least 256 bytes + * + * Finds the UTF-8 string matching the ID, and converts it into a + * string descriptor in utf16-le. + * Returns length of descriptor (always even) or negative errno + * + * If your driver needs stings in multiple languages, you'll probably + * "switch (wIndex) { ... }" in your ep0 string descriptor logic, + * using this routine after choosing which set of UTF-8 strings to use. + * Note that US-ASCII is a strict subset of UTF-8; any string bytes with + * the eighth bit set will be multibyte UTF-8 characters, not ISO-8859/1 + * characters (which are also widely used in C strings). + */ +int +usb_gadget_get_string (struct usb_gadget_strings *table, int id, u8 *buf) +{ + struct usb_string *s; + int len; + + /* descriptor 0 has the language id */ + if (id == 0) { + buf [0] = 4; + buf [1] = USB_DT_STRING; + buf [2] = (u8) table->language; + buf [3] = (u8) (table->language >> 8); + return 4; + } + for (s = table->strings; s && s->s; s++) + if (s->id == id) + break; + + /* unrecognized: stall. */ + if (!s || !s->s) + return -EINVAL; + + /* string descriptors have length, tag, then UTF16-LE text */ + len = min ((size_t) 126, strlen (s->s)); + memset (buf + 2, 0, 2 * len); /* zero all the bytes */ + len = utf8_to_utf16le(s->s, (u16 *)&buf[2], len); + if (len < 0) + return -EINVAL; + buf [0] = (len + 1) * 2; + buf [1] = USB_DT_STRING; + return buf [0]; +} + + +/*-------------------------------------------------------------------------*/ +/*-------------------------------------------------------------------------*/ + + +/** + * usb_descriptor_fillbuf - fill buffer with descriptors + * @buf: Buffer to be filled + * @buflen: Size of buf + * @src: Array of descriptor pointers, terminated by null pointer. + * + * Copies descriptors into the buffer, returning the length or a + * negative error code if they can't all be copied. Useful when + * assembling descriptors for an associated set of interfaces used + * as part of configuring a composite device; or in other cases where + * sets of descriptors need to be marshaled. + */ +int +usb_descriptor_fillbuf(void *buf, unsigned buflen, + const struct usb_descriptor_header **src) +{ + u8 *dest = buf; + + if (!src) + return -EINVAL; + + /* fill buffer from src[] until null descriptor ptr */ + for (; 0 != *src; src++) { + unsigned len = (*src)->bLength; + + if (len > buflen) + return -EINVAL; + memcpy(dest, *src, len); + buflen -= len; + dest += len; + } + return dest - (u8 *)buf; +} + + +/** + * usb_gadget_config_buf - builts a complete configuration descriptor + * @config: Header for the descriptor, including characteristics such + * as power requirements and number of interfaces. + * @desc: Null-terminated vector of pointers to the descriptors (interface, + * endpoint, etc) defining all functions in this device configuration. + * @buf: Buffer for the resulting configuration descriptor. + * @length: Length of buffer. If this is not big enough to hold the + * entire configuration descriptor, an error code will be returned. + * + * This copies descriptors into the response buffer, building a descriptor + * for that configuration. It returns the buffer length or a negative + * status code. The config.wTotalLength field is set to match the length + * of the result, but other descriptor fields (including power usage and + * interface count) must be set by the caller. + * + * Gadget drivers could use this when constructing a config descriptor + * in response to USB_REQ_GET_DESCRIPTOR. They will need to patch the + * resulting bDescriptorType value if USB_DT_OTHER_SPEED_CONFIG is needed. + */ +int usb_gadget_config_buf( + const struct usb_config_descriptor *config, + void *buf, + unsigned length, + const struct usb_descriptor_header **desc +) +{ + struct usb_config_descriptor *cp = buf; + int len; + + /* config descriptor first */ + if (length < USB_DT_CONFIG_SIZE || !desc) + return -EINVAL; + *cp = *config; + + /* then interface/endpoint/class/vendor/... */ + len = usb_descriptor_fillbuf(USB_DT_CONFIG_SIZE + (u8*)buf, + length - USB_DT_CONFIG_SIZE, desc); + if (len < 0) + return len; + len += USB_DT_CONFIG_SIZE; + if (len > 0xffff) + return -EINVAL; + + /* patch up the config descriptor */ + cp->bLength = USB_DT_CONFIG_SIZE; + cp->bDescriptorType = USB_DT_CONFIG; + cp->wTotalLength = cpu_to_le16(len); + cp->bmAttributes |= USB_CONFIG_ATT_ONE; + return len; +} + +/*-------------------------------------------------------------------------*/ +/*-------------------------------------------------------------------------*/ + + +#define RBUF_LEN (1024*1024) +static int rbuf_start; +static int rbuf_len; +static __u8 rbuf[RBUF_LEN]; + +/*-------------------------------------------------------------------------*/ + +#define DRIVER_VERSION "St Patrick's Day 2004" + +static const char shortname [] = "zero"; +static const char longname [] = "YAMAHA YST-MS35D USB Speaker "; + +static const char source_sink [] = "source and sink data"; +static const char loopback [] = "loop input to output"; + +/*-------------------------------------------------------------------------*/ + +/* + * driver assumes self-powered hardware, and + * has no way for users to trigger remote wakeup. + * + * this version autoconfigures as much as possible, + * which is reasonable for most "bulk-only" drivers. + */ +static const char *EP_IN_NAME; /* source */ +static const char *EP_OUT_NAME; /* sink */ + +/*-------------------------------------------------------------------------*/ + +/* big enough to hold our biggest descriptor */ +#define USB_BUFSIZ 512 + +struct zero_dev { + spinlock_t lock; + struct usb_gadget *gadget; + struct usb_request *req; /* for control responses */ + + /* when configured, we have one of two configs: + * - source data (in to host) and sink it (out from host) + * - or loop it back (out from host back in to host) + */ + u8 config; + struct usb_ep *in_ep, *out_ep; + + /* autoresume timer */ + struct timer_list resume; +}; + +#define xprintk(d,level,fmt,args...) \ + dev_printk(level , &(d)->gadget->dev , fmt , ## args) + +#ifdef DEBUG +#define DBG(dev,fmt,args...) \ + xprintk(dev , KERN_DEBUG , fmt , ## args) +#else +#define DBG(dev,fmt,args...) \ + do { } while (0) +#endif /* DEBUG */ + +#ifdef VERBOSE +#define VDBG DBG +#else +#define VDBG(dev,fmt,args...) \ + do { } while (0) +#endif /* VERBOSE */ + +#define ERROR(dev,fmt,args...) \ + xprintk(dev , KERN_ERR , fmt , ## args) +#define WARN(dev,fmt,args...) \ + xprintk(dev , KERN_WARNING , fmt , ## args) +#define INFO(dev,fmt,args...) \ + xprintk(dev , KERN_INFO , fmt , ## args) + +/*-------------------------------------------------------------------------*/ + +static unsigned buflen = 4096; +static unsigned qlen = 32; +static unsigned pattern = 0; + +module_param (buflen, uint, S_IRUGO|S_IWUSR); +module_param (qlen, uint, S_IRUGO|S_IWUSR); +module_param (pattern, uint, S_IRUGO|S_IWUSR); + +/* + * if it's nonzero, autoresume says how many seconds to wait + * before trying to wake up the host after suspend. + */ +static unsigned autoresume = 0; +module_param (autoresume, uint, 0); + +/* + * Normally the "loopback" configuration is second (index 1) so + * it's not the default. Here's where to change that order, to + * work better with hosts where config changes are problematic. + * Or controllers (like superh) that only support one config. + */ +static int loopdefault = 0; + +module_param (loopdefault, bool, S_IRUGO|S_IWUSR); + +/*-------------------------------------------------------------------------*/ + +/* Thanks to NetChip Technologies for donating this product ID. + * + * DO NOT REUSE THESE IDs with a protocol-incompatible driver!! Ever!! + * Instead: allocate your own, using normal USB-IF procedures. + */ +#ifndef CONFIG_USB_ZERO_HNPTEST +#define DRIVER_VENDOR_NUM 0x0525 /* NetChip */ +#define DRIVER_PRODUCT_NUM 0xa4a0 /* Linux-USB "Gadget Zero" */ +#else +#define DRIVER_VENDOR_NUM 0x1a0a /* OTG test device IDs */ +#define DRIVER_PRODUCT_NUM 0xbadd +#endif + +/*-------------------------------------------------------------------------*/ + +/* + * DESCRIPTORS ... most are static, but strings and (full) + * configuration descriptors are built on demand. + */ + +/* +#define STRING_MANUFACTURER 25 +#define STRING_PRODUCT 42 +#define STRING_SERIAL 101 +*/ +#define STRING_MANUFACTURER 1 +#define STRING_PRODUCT 2 +#define STRING_SERIAL 3 + +#define STRING_SOURCE_SINK 250 +#define STRING_LOOPBACK 251 + +/* + * This device advertises two configurations; these numbers work + * on a pxa250 as well as more flexible hardware. + */ +#define CONFIG_SOURCE_SINK 3 +#define CONFIG_LOOPBACK 2 + +/* +static struct usb_device_descriptor +device_desc = { + .bLength = sizeof device_desc, + .bDescriptorType = USB_DT_DEVICE, + + .bcdUSB = __constant_cpu_to_le16 (0x0200), + .bDeviceClass = USB_CLASS_VENDOR_SPEC, + + .idVendor = __constant_cpu_to_le16 (DRIVER_VENDOR_NUM), + .idProduct = __constant_cpu_to_le16 (DRIVER_PRODUCT_NUM), + .iManufacturer = STRING_MANUFACTURER, + .iProduct = STRING_PRODUCT, + .iSerialNumber = STRING_SERIAL, + .bNumConfigurations = 2, +}; +*/ +static struct usb_device_descriptor +device_desc = { + .bLength = sizeof device_desc, + .bDescriptorType = USB_DT_DEVICE, + .bcdUSB = __constant_cpu_to_le16 (0x0100), + .bDeviceClass = USB_CLASS_PER_INTERFACE, + .bDeviceSubClass = 0, + .bDeviceProtocol = 0, + .bMaxPacketSize0 = 64, + .bcdDevice = __constant_cpu_to_le16 (0x0100), + .idVendor = __constant_cpu_to_le16 (0x0499), + .idProduct = __constant_cpu_to_le16 (0x3002), + .iManufacturer = STRING_MANUFACTURER, + .iProduct = STRING_PRODUCT, + .iSerialNumber = STRING_SERIAL, + .bNumConfigurations = 1, +}; + +static struct usb_config_descriptor +z_config = { + .bLength = sizeof z_config, + .bDescriptorType = USB_DT_CONFIG, + + /* compute wTotalLength on the fly */ + .bNumInterfaces = 2, + .bConfigurationValue = 1, + .iConfiguration = 0, + .bmAttributes = 0x40, + .bMaxPower = 0, /* self-powered */ +}; + + +static struct usb_otg_descriptor +otg_descriptor = { + .bLength = sizeof otg_descriptor, + .bDescriptorType = USB_DT_OTG, + + .bmAttributes = USB_OTG_SRP, +}; + +/* one interface in each configuration */ +#ifdef CONFIG_USB_GADGET_DUALSPEED + +/* + * usb 2.0 devices need to expose both high speed and full speed + * descriptors, unless they only run at full speed. + * + * that means alternate endpoint descriptors (bigger packets) + * and a "device qualifier" ... plus more construction options + * for the config descriptor. + */ + +static struct usb_qualifier_descriptor +dev_qualifier = { + .bLength = sizeof dev_qualifier, + .bDescriptorType = USB_DT_DEVICE_QUALIFIER, + + .bcdUSB = __constant_cpu_to_le16 (0x0200), + .bDeviceClass = USB_CLASS_VENDOR_SPEC, + + .bNumConfigurations = 2, +}; + + +struct usb_cs_as_general_descriptor { + __u8 bLength; + __u8 bDescriptorType; + + __u8 bDescriptorSubType; + __u8 bTerminalLink; + __u8 bDelay; + __u16 wFormatTag; +} __attribute__ ((packed)); + +struct usb_cs_as_format_descriptor { + __u8 bLength; + __u8 bDescriptorType; + + __u8 bDescriptorSubType; + __u8 bFormatType; + __u8 bNrChannels; + __u8 bSubframeSize; + __u8 bBitResolution; + __u8 bSamfreqType; + __u8 tLowerSamFreq[3]; + __u8 tUpperSamFreq[3]; +} __attribute__ ((packed)); + +static const struct usb_interface_descriptor +z_audio_control_if_desc = { + .bLength = sizeof z_audio_control_if_desc, + .bDescriptorType = USB_DT_INTERFACE, + .bInterfaceNumber = 0, + .bAlternateSetting = 0, + .bNumEndpoints = 0, + .bInterfaceClass = USB_CLASS_AUDIO, + .bInterfaceSubClass = 0x1, + .bInterfaceProtocol = 0, + .iInterface = 0, +}; + +static const struct usb_interface_descriptor +z_audio_if_desc = { + .bLength = sizeof z_audio_if_desc, + .bDescriptorType = USB_DT_INTERFACE, + .bInterfaceNumber = 1, + .bAlternateSetting = 0, + .bNumEndpoints = 0, + .bInterfaceClass = USB_CLASS_AUDIO, + .bInterfaceSubClass = 0x2, + .bInterfaceProtocol = 0, + .iInterface = 0, +}; + +static const struct usb_interface_descriptor +z_audio_if_desc2 = { + .bLength = sizeof z_audio_if_desc, + .bDescriptorType = USB_DT_INTERFACE, + .bInterfaceNumber = 1, + .bAlternateSetting = 1, + .bNumEndpoints = 1, + .bInterfaceClass = USB_CLASS_AUDIO, + .bInterfaceSubClass = 0x2, + .bInterfaceProtocol = 0, + .iInterface = 0, +}; + +static const struct usb_cs_as_general_descriptor +z_audio_cs_as_if_desc = { + .bLength = 7, + .bDescriptorType = 0x24, + + .bDescriptorSubType = 0x01, + .bTerminalLink = 0x01, + .bDelay = 0x0, + .wFormatTag = __constant_cpu_to_le16 (0x0001) +}; + + +static const struct usb_cs_as_format_descriptor +z_audio_cs_as_format_desc = { + .bLength = 0xe, + .bDescriptorType = 0x24, + + .bDescriptorSubType = 2, + .bFormatType = 1, + .bNrChannels = 1, + .bSubframeSize = 1, + .bBitResolution = 8, + .bSamfreqType = 0, + .tLowerSamFreq = {0x7e, 0x13, 0x00}, + .tUpperSamFreq = {0xe2, 0xd6, 0x00}, +}; + +static const struct usb_endpoint_descriptor +z_iso_ep = { + .bLength = 0x09, + .bDescriptorType = 0x05, + .bEndpointAddress = 0x04, + .bmAttributes = 0x09, + .wMaxPacketSize = 0x0038, + .bInterval = 0x01, + .bRefresh = 0x00, + .bSynchAddress = 0x00, +}; + +static char z_iso_ep2[] = {0x07, 0x25, 0x01, 0x00, 0x02, 0x00, 0x02}; + +// 9 bytes +static char z_ac_interface_header_desc[] = +{ 0x09, 0x24, 0x01, 0x00, 0x01, 0x2b, 0x00, 0x01, 0x01 }; + +// 12 bytes +static char z_0[] = {0x0c, 0x24, 0x02, 0x01, 0x01, 0x01, 0x00, 0x02, + 0x03, 0x00, 0x00, 0x00}; +// 13 bytes +static char z_1[] = {0x0d, 0x24, 0x06, 0x02, 0x01, 0x02, 0x15, 0x00, + 0x02, 0x00, 0x02, 0x00, 0x00}; +// 9 bytes +static char z_2[] = {0x09, 0x24, 0x03, 0x03, 0x01, 0x03, 0x00, 0x02, + 0x00}; + +static char za_0[] = {0x09, 0x04, 0x01, 0x02, 0x01, 0x01, 0x02, 0x00, + 0x00}; + +static char za_1[] = {0x07, 0x24, 0x01, 0x01, 0x00, 0x01, 0x00}; + +static char za_2[] = {0x0e, 0x24, 0x02, 0x01, 0x02, 0x01, 0x08, 0x00, + 0x7e, 0x13, 0x00, 0xe2, 0xd6, 0x00}; + +static char za_3[] = {0x09, 0x05, 0x04, 0x09, 0x70, 0x00, 0x01, 0x00, + 0x00}; + +static char za_4[] = {0x07, 0x25, 0x01, 0x00, 0x02, 0x00, 0x02}; + +static char za_5[] = {0x09, 0x04, 0x01, 0x03, 0x01, 0x01, 0x02, 0x00, + 0x00}; + +static char za_6[] = {0x07, 0x24, 0x01, 0x01, 0x00, 0x01, 0x00}; + +static char za_7[] = {0x0e, 0x24, 0x02, 0x01, 0x01, 0x02, 0x10, 0x00, + 0x7e, 0x13, 0x00, 0xe2, 0xd6, 0x00}; + +static char za_8[] = {0x09, 0x05, 0x04, 0x09, 0x70, 0x00, 0x01, 0x00, + 0x00}; + +static char za_9[] = {0x07, 0x25, 0x01, 0x00, 0x02, 0x00, 0x02}; + +static char za_10[] = {0x09, 0x04, 0x01, 0x04, 0x01, 0x01, 0x02, 0x00, + 0x00}; + +static char za_11[] = {0x07, 0x24, 0x01, 0x01, 0x00, 0x01, 0x00}; + +static char za_12[] = {0x0e, 0x24, 0x02, 0x01, 0x02, 0x02, 0x10, 0x00, + 0x73, 0x13, 0x00, 0xe2, 0xd6, 0x00}; + +static char za_13[] = {0x09, 0x05, 0x04, 0x09, 0xe0, 0x00, 0x01, 0x00, + 0x00}; + +static char za_14[] = {0x07, 0x25, 0x01, 0x00, 0x02, 0x00, 0x02}; + +static char za_15[] = {0x09, 0x04, 0x01, 0x05, 0x01, 0x01, 0x02, 0x00, + 0x00}; + +static char za_16[] = {0x07, 0x24, 0x01, 0x01, 0x00, 0x01, 0x00}; + +static char za_17[] = {0x0e, 0x24, 0x02, 0x01, 0x01, 0x03, 0x14, 0x00, + 0x7e, 0x13, 0x00, 0xe2, 0xd6, 0x00}; + +static char za_18[] = {0x09, 0x05, 0x04, 0x09, 0xa8, 0x00, 0x01, 0x00, + 0x00}; + +static char za_19[] = {0x07, 0x25, 0x01, 0x00, 0x02, 0x00, 0x02}; + +static char za_20[] = {0x09, 0x04, 0x01, 0x06, 0x01, 0x01, 0x02, 0x00, + 0x00}; + +static char za_21[] = {0x07, 0x24, 0x01, 0x01, 0x00, 0x01, 0x00}; + +static char za_22[] = {0x0e, 0x24, 0x02, 0x01, 0x02, 0x03, 0x14, 0x00, + 0x7e, 0x13, 0x00, 0xe2, 0xd6, 0x00}; + +static char za_23[] = {0x09, 0x05, 0x04, 0x09, 0x50, 0x01, 0x01, 0x00, + 0x00}; + +static char za_24[] = {0x07, 0x25, 0x01, 0x00, 0x02, 0x00, 0x02}; + + + +static const struct usb_descriptor_header *z_function [] = { + (struct usb_descriptor_header *) &z_audio_control_if_desc, + (struct usb_descriptor_header *) &z_ac_interface_header_desc, + (struct usb_descriptor_header *) &z_0, + (struct usb_descriptor_header *) &z_1, + (struct usb_descriptor_header *) &z_2, + (struct usb_descriptor_header *) &z_audio_if_desc, + (struct usb_descriptor_header *) &z_audio_if_desc2, + (struct usb_descriptor_header *) &z_audio_cs_as_if_desc, + (struct usb_descriptor_header *) &z_audio_cs_as_format_desc, + (struct usb_descriptor_header *) &z_iso_ep, + (struct usb_descriptor_header *) &z_iso_ep2, + (struct usb_descriptor_header *) &za_0, + (struct usb_descriptor_header *) &za_1, + (struct usb_descriptor_header *) &za_2, + (struct usb_descriptor_header *) &za_3, + (struct usb_descriptor_header *) &za_4, + (struct usb_descriptor_header *) &za_5, + (struct usb_descriptor_header *) &za_6, + (struct usb_descriptor_header *) &za_7, + (struct usb_descriptor_header *) &za_8, + (struct usb_descriptor_header *) &za_9, + (struct usb_descriptor_header *) &za_10, + (struct usb_descriptor_header *) &za_11, + (struct usb_descriptor_header *) &za_12, + (struct usb_descriptor_header *) &za_13, + (struct usb_descriptor_header *) &za_14, + (struct usb_descriptor_header *) &za_15, + (struct usb_descriptor_header *) &za_16, + (struct usb_descriptor_header *) &za_17, + (struct usb_descriptor_header *) &za_18, + (struct usb_descriptor_header *) &za_19, + (struct usb_descriptor_header *) &za_20, + (struct usb_descriptor_header *) &za_21, + (struct usb_descriptor_header *) &za_22, + (struct usb_descriptor_header *) &za_23, + (struct usb_descriptor_header *) &za_24, + NULL, +}; + +/* maxpacket and other transfer characteristics vary by speed. */ +#define ep_desc(g,hs,fs) (((g)->speed==USB_SPEED_HIGH)?(hs):(fs)) + +#else + +/* if there's no high speed support, maxpacket doesn't change. */ +#define ep_desc(g,hs,fs) fs + +#endif /* !CONFIG_USB_GADGET_DUALSPEED */ + +static char manufacturer [40]; +//static char serial [40]; +static char serial [] = "Ser 00 em"; + +/* static strings, in UTF-8 */ +static struct usb_string strings [] = { + { STRING_MANUFACTURER, manufacturer, }, + { STRING_PRODUCT, longname, }, + { STRING_SERIAL, serial, }, + { STRING_LOOPBACK, loopback, }, + { STRING_SOURCE_SINK, source_sink, }, + { } /* end of list */ +}; + +static struct usb_gadget_strings stringtab = { + .language = 0x0409, /* en-us */ + .strings = strings, +}; + +/* + * config descriptors are also handcrafted. these must agree with code + * that sets configurations, and with code managing interfaces and their + * altsettings. other complexity may come from: + * + * - high speed support, including "other speed config" rules + * - multiple configurations + * - interfaces with alternate settings + * - embedded class or vendor-specific descriptors + * + * this handles high speed, and has a second config that could as easily + * have been an alternate interface setting (on most hardware). + * + * NOTE: to demonstrate (and test) more USB capabilities, this driver + * should include an altsetting to test interrupt transfers, including + * high bandwidth modes at high speed. (Maybe work like Intel's test + * device?) + */ +static int +config_buf (struct usb_gadget *gadget, u8 *buf, u8 type, unsigned index) +{ + int len; + const struct usb_descriptor_header **function; + + function = z_function; + len = usb_gadget_config_buf (&z_config, buf, USB_BUFSIZ, function); + if (len < 0) + return len; + ((struct usb_config_descriptor *) buf)->bDescriptorType = type; + return len; +} + +/*-------------------------------------------------------------------------*/ + +static struct usb_request * +alloc_ep_req (struct usb_ep *ep, unsigned length) +{ + struct usb_request *req; + + req = usb_ep_alloc_request (ep, GFP_ATOMIC); + if (req) { + req->length = length; + req->buf = usb_ep_alloc_buffer (ep, length, + &req->dma, GFP_ATOMIC); + if (!req->buf) { + usb_ep_free_request (ep, req); + req = NULL; + } + } + return req; +} + +static void free_ep_req (struct usb_ep *ep, struct usb_request *req) +{ + if (req->buf) + usb_ep_free_buffer (ep, req->buf, req->dma, req->length); + usb_ep_free_request (ep, req); +} + +/*-------------------------------------------------------------------------*/ + +/* optionally require specific source/sink data patterns */ + +static int +check_read_data ( + struct zero_dev *dev, + struct usb_ep *ep, + struct usb_request *req +) +{ + unsigned i; + u8 *buf = req->buf; + + for (i = 0; i < req->actual; i++, buf++) { + switch (pattern) { + /* all-zeroes has no synchronization issues */ + case 0: + if (*buf == 0) + continue; + break; + /* mod63 stays in sync with short-terminated transfers, + * or otherwise when host and gadget agree on how large + * each usb transfer request should be. resync is done + * with set_interface or set_config. + */ + case 1: + if (*buf == (u8)(i % 63)) + continue; + break; + } + ERROR (dev, "bad OUT byte, buf [%d] = %d\n", i, *buf); + usb_ep_set_halt (ep); + return -EINVAL; + } + return 0; +} + +/*-------------------------------------------------------------------------*/ + +static void zero_reset_config (struct zero_dev *dev) +{ + if (dev->config == 0) + return; + + DBG (dev, "reset config\n"); + + /* just disable endpoints, forcing completion of pending i/o. + * all our completion handlers free their requests in this case. + */ + if (dev->in_ep) { + usb_ep_disable (dev->in_ep); + dev->in_ep = NULL; + } + if (dev->out_ep) { + usb_ep_disable (dev->out_ep); + dev->out_ep = NULL; + } + dev->config = 0; + del_timer (&dev->resume); +} + +#define _write(f, buf, sz) (f->f_op->write(f, buf, sz, &f->f_pos)) + +static void +zero_isoc_complete (struct usb_ep *ep, struct usb_request *req) +{ + struct zero_dev *dev = ep->driver_data; + int status = req->status; + int i, j; + + switch (status) { + + case 0: /* normal completion? */ + //printk ("\nzero ---------------> isoc normal completion %d bytes\n", req->actual); + for (i=0, j=rbuf_start; iactual; i++) { + //printk ("%02x ", ((__u8*)req->buf)[i]); + rbuf[j] = ((__u8*)req->buf)[i]; + j++; + if (j >= RBUF_LEN) j=0; + } + rbuf_start = j; + //printk ("\n\n"); + + if (rbuf_len < RBUF_LEN) { + rbuf_len += req->actual; + if (rbuf_len > RBUF_LEN) { + rbuf_len = RBUF_LEN; + } + } + + break; + + /* this endpoint is normally active while we're configured */ + case -ECONNABORTED: /* hardware forced ep reset */ + case -ECONNRESET: /* request dequeued */ + case -ESHUTDOWN: /* disconnect from host */ + VDBG (dev, "%s gone (%d), %d/%d\n", ep->name, status, + req->actual, req->length); + if (ep == dev->out_ep) + check_read_data (dev, ep, req); + free_ep_req (ep, req); + return; + + case -EOVERFLOW: /* buffer overrun on read means that + * we didn't provide a big enough + * buffer. + */ + default: +#if 1 + DBG (dev, "%s complete --> %d, %d/%d\n", ep->name, + status, req->actual, req->length); +#endif + case -EREMOTEIO: /* short read */ + break; + } + + status = usb_ep_queue (ep, req, GFP_ATOMIC); + if (status) { + ERROR (dev, "kill %s: resubmit %d bytes --> %d\n", + ep->name, req->length, status); + usb_ep_set_halt (ep); + /* FIXME recover later ... somehow */ + } +} + +static struct usb_request * +zero_start_isoc_ep (struct usb_ep *ep, int gfp_flags) +{ + struct usb_request *req; + int status; + + req = alloc_ep_req (ep, 512); + if (!req) + return NULL; + + req->complete = zero_isoc_complete; + + status = usb_ep_queue (ep, req, gfp_flags); + if (status) { + struct zero_dev *dev = ep->driver_data; + + ERROR (dev, "start %s --> %d\n", ep->name, status); + free_ep_req (ep, req); + req = NULL; + } + + return req; +} + +/* change our operational config. this code must agree with the code + * that returns config descriptors, and altsetting code. + * + * it's also responsible for power management interactions. some + * configurations might not work with our current power sources. + * + * note that some device controller hardware will constrain what this + * code can do, perhaps by disallowing more than one configuration or + * by limiting configuration choices (like the pxa2xx). + */ +static int +zero_set_config (struct zero_dev *dev, unsigned number, int gfp_flags) +{ + int result = 0; + struct usb_gadget *gadget = dev->gadget; + const struct usb_endpoint_descriptor *d; + struct usb_ep *ep; + + if (number == dev->config) + return 0; + + zero_reset_config (dev); + + gadget_for_each_ep (ep, gadget) { + + if (strcmp (ep->name, "ep4") == 0) { + + d = (struct usb_endpoint_descripter *)&za_23; // isoc ep desc for audio i/f alt setting 6 + result = usb_ep_enable (ep, d); + + if (result == 0) { + ep->driver_data = dev; + dev->in_ep = ep; + + if (zero_start_isoc_ep (ep, gfp_flags) != 0) { + + dev->in_ep = ep; + continue; + } + + usb_ep_disable (ep); + result = -EIO; + } + } + + } + + dev->config = number; + return result; +} + +/*-------------------------------------------------------------------------*/ + +static void zero_setup_complete (struct usb_ep *ep, struct usb_request *req) +{ + if (req->status || req->actual != req->length) + DBG ((struct zero_dev *) ep->driver_data, + "setup complete --> %d, %d/%d\n", + req->status, req->actual, req->length); +} + +/* + * The setup() callback implements all the ep0 functionality that's + * not handled lower down, in hardware or the hardware driver (like + * device and endpoint feature flags, and their status). It's all + * housekeeping for the gadget function we're implementing. Most of + * the work is in config-specific setup. + */ +static int +zero_setup (struct usb_gadget *gadget, const struct usb_ctrlrequest *ctrl) +{ + struct zero_dev *dev = get_gadget_data (gadget); + struct usb_request *req = dev->req; + int value = -EOPNOTSUPP; + + /* usually this stores reply data in the pre-allocated ep0 buffer, + * but config change events will reconfigure hardware. + */ + req->zero = 0; + switch (ctrl->bRequest) { + + case USB_REQ_GET_DESCRIPTOR: + + switch (ctrl->wValue >> 8) { + + case USB_DT_DEVICE: + value = min (ctrl->wLength, (u16) sizeof device_desc); + memcpy (req->buf, &device_desc, value); + break; +#ifdef CONFIG_USB_GADGET_DUALSPEED + case USB_DT_DEVICE_QUALIFIER: + if (!gadget->is_dualspeed) + break; + value = min (ctrl->wLength, (u16) sizeof dev_qualifier); + memcpy (req->buf, &dev_qualifier, value); + break; + + case USB_DT_OTHER_SPEED_CONFIG: + if (!gadget->is_dualspeed) + break; + // FALLTHROUGH +#endif /* CONFIG_USB_GADGET_DUALSPEED */ + case USB_DT_CONFIG: + value = config_buf (gadget, req->buf, + ctrl->wValue >> 8, + ctrl->wValue & 0xff); + if (value >= 0) + value = min (ctrl->wLength, (u16) value); + break; + + case USB_DT_STRING: + /* wIndex == language code. + * this driver only handles one language, you can + * add string tables for other languages, using + * any UTF-8 characters + */ + value = usb_gadget_get_string (&stringtab, + ctrl->wValue & 0xff, req->buf); + if (value >= 0) { + value = min (ctrl->wLength, (u16) value); + } + break; + } + break; + + /* currently two configs, two speeds */ + case USB_REQ_SET_CONFIGURATION: + if (ctrl->bRequestType != 0) + goto unknown; + + spin_lock (&dev->lock); + value = zero_set_config (dev, ctrl->wValue, GFP_ATOMIC); + spin_unlock (&dev->lock); + break; + case USB_REQ_GET_CONFIGURATION: + if (ctrl->bRequestType != USB_DIR_IN) + goto unknown; + *(u8 *)req->buf = dev->config; + value = min (ctrl->wLength, (u16) 1); + break; + + /* until we add altsetting support, or other interfaces, + * only 0/0 are possible. pxa2xx only supports 0/0 (poorly) + * and already killed pending endpoint I/O. + */ + case USB_REQ_SET_INTERFACE: + + if (ctrl->bRequestType != USB_RECIP_INTERFACE) + goto unknown; + spin_lock (&dev->lock); + if (dev->config) { + u8 config = dev->config; + + /* resets interface configuration, forgets about + * previous transaction state (queued bufs, etc) + * and re-inits endpoint state (toggle etc) + * no response queued, just zero status == success. + * if we had more than one interface we couldn't + * use this "reset the config" shortcut. + */ + zero_reset_config (dev); + zero_set_config (dev, config, GFP_ATOMIC); + value = 0; + } + spin_unlock (&dev->lock); + break; + case USB_REQ_GET_INTERFACE: + if ((ctrl->bRequestType == 0x21) && (ctrl->wIndex == 0x02)) { + value = ctrl->wLength; + break; + } + else { + if (ctrl->bRequestType != (USB_DIR_IN|USB_RECIP_INTERFACE)) + goto unknown; + if (!dev->config) + break; + if (ctrl->wIndex != 0) { + value = -EDOM; + break; + } + *(u8 *)req->buf = 0; + value = min (ctrl->wLength, (u16) 1); + } + break; + + /* + * These are the same vendor-specific requests supported by + * Intel's USB 2.0 compliance test devices. We exceed that + * device spec by allowing multiple-packet requests. + */ + case 0x5b: /* control WRITE test -- fill the buffer */ + if (ctrl->bRequestType != (USB_DIR_OUT|USB_TYPE_VENDOR)) + goto unknown; + if (ctrl->wValue || ctrl->wIndex) + break; + /* just read that many bytes into the buffer */ + if (ctrl->wLength > USB_BUFSIZ) + break; + value = ctrl->wLength; + break; + case 0x5c: /* control READ test -- return the buffer */ + if (ctrl->bRequestType != (USB_DIR_IN|USB_TYPE_VENDOR)) + goto unknown; + if (ctrl->wValue || ctrl->wIndex) + break; + /* expect those bytes are still in the buffer; send back */ + if (ctrl->wLength > USB_BUFSIZ + || ctrl->wLength != req->length) + break; + value = ctrl->wLength; + break; + + case 0x01: // SET_CUR + case 0x02: + case 0x03: + case 0x04: + case 0x05: + value = ctrl->wLength; + break; + case 0x81: + switch (ctrl->wValue) { + case 0x0201: + case 0x0202: + ((u8*)req->buf)[0] = 0x00; + ((u8*)req->buf)[1] = 0xe3; + break; + case 0x0300: + case 0x0500: + ((u8*)req->buf)[0] = 0x00; + break; + } + //((u8*)req->buf)[0] = 0x81; + //((u8*)req->buf)[1] = 0x81; + value = ctrl->wLength; + break; + case 0x82: + switch (ctrl->wValue) { + case 0x0201: + case 0x0202: + ((u8*)req->buf)[0] = 0x00; + ((u8*)req->buf)[1] = 0xc3; + break; + case 0x0300: + case 0x0500: + ((u8*)req->buf)[0] = 0x00; + break; + } + //((u8*)req->buf)[0] = 0x82; + //((u8*)req->buf)[1] = 0x82; + value = ctrl->wLength; + break; + case 0x83: + switch (ctrl->wValue) { + case 0x0201: + case 0x0202: + ((u8*)req->buf)[0] = 0x00; + ((u8*)req->buf)[1] = 0x00; + break; + case 0x0300: + ((u8*)req->buf)[0] = 0x60; + break; + case 0x0500: + ((u8*)req->buf)[0] = 0x18; + break; + } + //((u8*)req->buf)[0] = 0x83; + //((u8*)req->buf)[1] = 0x83; + value = ctrl->wLength; + break; + case 0x84: + switch (ctrl->wValue) { + case 0x0201: + case 0x0202: + ((u8*)req->buf)[0] = 0x00; + ((u8*)req->buf)[1] = 0x01; + break; + case 0x0300: + case 0x0500: + ((u8*)req->buf)[0] = 0x08; + break; + } + //((u8*)req->buf)[0] = 0x84; + //((u8*)req->buf)[1] = 0x84; + value = ctrl->wLength; + break; + case 0x85: + ((u8*)req->buf)[0] = 0x85; + ((u8*)req->buf)[1] = 0x85; + value = ctrl->wLength; + break; + + + default: +unknown: + printk("unknown control req%02x.%02x v%04x i%04x l%d\n", + ctrl->bRequestType, ctrl->bRequest, + ctrl->wValue, ctrl->wIndex, ctrl->wLength); + } + + /* respond with data transfer before status phase? */ + if (value >= 0) { + req->length = value; + req->zero = value < ctrl->wLength + && (value % gadget->ep0->maxpacket) == 0; + value = usb_ep_queue (gadget->ep0, req, GFP_ATOMIC); + if (value < 0) { + DBG (dev, "ep_queue < 0 --> %d\n", value); + req->status = 0; + zero_setup_complete (gadget->ep0, req); + } + } + + /* device either stalls (value < 0) or reports success */ + return value; +} + +static void +zero_disconnect (struct usb_gadget *gadget) +{ + struct zero_dev *dev = get_gadget_data (gadget); + unsigned long flags; + + spin_lock_irqsave (&dev->lock, flags); + zero_reset_config (dev); + + /* a more significant application might have some non-usb + * activities to quiesce here, saving resources like power + * or pushing the notification up a network stack. + */ + spin_unlock_irqrestore (&dev->lock, flags); + + /* next we may get setup() calls to enumerate new connections; + * or an unbind() during shutdown (including removing module). + */ +} + +static void +zero_autoresume (unsigned long _dev) +{ + struct zero_dev *dev = (struct zero_dev *) _dev; + int status; + + /* normally the host would be woken up for something + * more significant than just a timer firing... + */ + if (dev->gadget->speed != USB_SPEED_UNKNOWN) { + status = usb_gadget_wakeup (dev->gadget); + DBG (dev, "wakeup --> %d\n", status); + } +} + +/*-------------------------------------------------------------------------*/ + +static void +zero_unbind (struct usb_gadget *gadget) +{ + struct zero_dev *dev = get_gadget_data (gadget); + + DBG (dev, "unbind\n"); + + /* we've already been disconnected ... no i/o is active */ + if (dev->req) + free_ep_req (gadget->ep0, dev->req); + del_timer_sync (&dev->resume); + kfree (dev); + set_gadget_data (gadget, NULL); +} + +static int +zero_bind (struct usb_gadget *gadget) +{ + struct zero_dev *dev; + //struct usb_ep *ep; + + printk("binding\n"); + /* + * DRIVER POLICY CHOICE: you may want to do this differently. + * One thing to avoid is reusing a bcdDevice revision code + * with different host-visible configurations or behavior + * restrictions -- using ep1in/ep2out vs ep1out/ep3in, etc + */ + //device_desc.bcdDevice = __constant_cpu_to_le16 (0x0201); + + + /* ok, we made sense of the hardware ... */ + dev = kmalloc (sizeof *dev, SLAB_KERNEL); + if (!dev) + return -ENOMEM; + memset (dev, 0, sizeof *dev); + spin_lock_init (&dev->lock); + dev->gadget = gadget; + set_gadget_data (gadget, dev); + + /* preallocate control response and buffer */ + dev->req = usb_ep_alloc_request (gadget->ep0, GFP_KERNEL); + if (!dev->req) + goto enomem; + dev->req->buf = usb_ep_alloc_buffer (gadget->ep0, USB_BUFSIZ, + &dev->req->dma, GFP_KERNEL); + if (!dev->req->buf) + goto enomem; + + dev->req->complete = zero_setup_complete; + + device_desc.bMaxPacketSize0 = gadget->ep0->maxpacket; + +#ifdef CONFIG_USB_GADGET_DUALSPEED + /* assume ep0 uses the same value for both speeds ... */ + dev_qualifier.bMaxPacketSize0 = device_desc.bMaxPacketSize0; + + /* and that all endpoints are dual-speed */ + //hs_source_desc.bEndpointAddress = fs_source_desc.bEndpointAddress; + //hs_sink_desc.bEndpointAddress = fs_sink_desc.bEndpointAddress; +#endif + + usb_gadget_set_selfpowered (gadget); + + init_timer (&dev->resume); + dev->resume.function = zero_autoresume; + dev->resume.data = (unsigned long) dev; + + gadget->ep0->driver_data = dev; + + INFO (dev, "%s, version: " DRIVER_VERSION "\n", longname); + INFO (dev, "using %s, OUT %s IN %s\n", gadget->name, + EP_OUT_NAME, EP_IN_NAME); + + snprintf (manufacturer, sizeof manufacturer, + UTS_SYSNAME " " UTS_RELEASE " with %s", + gadget->name); + + return 0; + +enomem: + zero_unbind (gadget); + return -ENOMEM; +} + +/*-------------------------------------------------------------------------*/ + +static void +zero_suspend (struct usb_gadget *gadget) +{ + struct zero_dev *dev = get_gadget_data (gadget); + + if (gadget->speed == USB_SPEED_UNKNOWN) + return; + + if (autoresume) { + mod_timer (&dev->resume, jiffies + (HZ * autoresume)); + DBG (dev, "suspend, wakeup in %d seconds\n", autoresume); + } else + DBG (dev, "suspend\n"); +} + +static void +zero_resume (struct usb_gadget *gadget) +{ + struct zero_dev *dev = get_gadget_data (gadget); + + DBG (dev, "resume\n"); + del_timer (&dev->resume); +} + + +/*-------------------------------------------------------------------------*/ + +static struct usb_gadget_driver zero_driver = { +#ifdef CONFIG_USB_GADGET_DUALSPEED + .speed = USB_SPEED_HIGH, +#else + .speed = USB_SPEED_FULL, +#endif + .function = (char *) longname, + .bind = zero_bind, + .unbind = zero_unbind, + + .setup = zero_setup, + .disconnect = zero_disconnect, + + .suspend = zero_suspend, + .resume = zero_resume, + + .driver = { + .name = (char *) shortname, + // .shutdown = ... + // .suspend = ... + // .resume = ... + }, +}; + +MODULE_AUTHOR ("David Brownell"); +MODULE_LICENSE ("Dual BSD/GPL"); + +static struct proc_dir_entry *pdir, *pfile; + +static int isoc_read_data (char *page, char **start, + off_t off, int count, + int *eof, void *data) +{ + int i; + static int c = 0; + static int done = 0; + static int s = 0; + +/* + printk ("\ncount: %d\n", count); + printk ("rbuf_start: %d\n", rbuf_start); + printk ("rbuf_len: %d\n", rbuf_len); + printk ("off: %d\n", off); + printk ("start: %p\n\n", *start); +*/ + if (done) { + c = 0; + done = 0; + *eof = 1; + return 0; + } + + if (c == 0) { + if (rbuf_len == RBUF_LEN) + s = rbuf_start; + else s = 0; + } + + for (i=0; i= rbuf_len) { + *eof = 1; + done = 1; + } + + + return i; +} + +static int __init init (void) +{ + + int retval = 0; + + pdir = proc_mkdir("isoc_test", NULL); + if(pdir == NULL) { + retval = -ENOMEM; + printk("Error creating dir\n"); + goto done; + } + pdir->owner = THIS_MODULE; + + pfile = create_proc_read_entry("isoc_data", + 0444, pdir, + isoc_read_data, + NULL); + if (pfile == NULL) { + retval = -ENOMEM; + printk("Error creating file\n"); + goto no_file; + } + pfile->owner = THIS_MODULE; + + return usb_gadget_register_driver (&zero_driver); + + no_file: + remove_proc_entry("isoc_data", NULL); + done: + return retval; +} +module_init (init); + +static void __exit cleanup (void) +{ + + usb_gadget_unregister_driver (&zero_driver); + + remove_proc_entry("isoc_data", pdir); + remove_proc_entry("isoc_test", NULL); +} +module_exit (cleanup); --- linux-raspi2-4.2.0.orig/drivers/usb/host/dwc_otg/dwc_cfi_common.h +++ linux-raspi2-4.2.0/drivers/usb/host/dwc_otg/dwc_cfi_common.h @@ -0,0 +1,142 @@ +/* ========================================================================== + * Synopsys HS OTG Linux Software Driver and documentation (hereinafter, + * "Software") is an Unsupported proprietary work of Synopsys, Inc. unless + * otherwise expressly agreed to in writing between Synopsys and you. + * + * The Software IS NOT an item of Licensed Software or Licensed Product under + * any End User Software License Agreement or Agreement for Licensed Product + * with Synopsys or any supplement thereto. You are permitted to use and + * redistribute this Software in source and binary forms, with or without + * modification, provided that redistributions of source code must retain this + * notice. You may not view, use, disclose, copy or distribute this file or + * any information contained herein except pursuant to this license grant from + * Synopsys. If you do not agree with this notice, including the disclaimer + * below, then you are not authorized to use the Software. + * + * THIS SOFTWARE IS BEING DISTRIBUTED BY SYNOPSYS SOLELY ON AN "AS IS" BASIS + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE HEREBY DISCLAIMED. IN NO EVENT SHALL SYNOPSYS BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH + * DAMAGE. + * ========================================================================== */ + +#if !defined(__DWC_CFI_COMMON_H__) +#define __DWC_CFI_COMMON_H__ + +//#include + +/** + * @file + * + * This file contains the CFI specific common constants, interfaces + * (functions and macros) and structures for Linux. No PCD specific + * data structure or definition is to be included in this file. + * + */ + +/** This is a request for all Core Features */ +#define VEN_CORE_GET_FEATURES 0xB1 + +/** This is a request to get the value of a specific Core Feature */ +#define VEN_CORE_GET_FEATURE 0xB2 + +/** This command allows the host to set the value of a specific Core Feature */ +#define VEN_CORE_SET_FEATURE 0xB3 + +/** This command allows the host to set the default values of + * either all or any specific Core Feature + */ +#define VEN_CORE_RESET_FEATURES 0xB4 + +/** This command forces the PCD to write the deferred values of a Core Features */ +#define VEN_CORE_ACTIVATE_FEATURES 0xB5 + +/** This request reads a DWORD value from a register at the specified offset */ +#define VEN_CORE_READ_REGISTER 0xB6 + +/** This request writes a DWORD value into a register at the specified offset */ +#define VEN_CORE_WRITE_REGISTER 0xB7 + +/** This structure is the header of the Core Features dataset returned to + * the Host + */ +struct cfi_all_features_header { +/** The features header structure length is */ +#define CFI_ALL_FEATURES_HDR_LEN 8 + /** + * The total length of the features dataset returned to the Host + */ + uint16_t wTotalLen; + + /** + * CFI version number inBinary-Coded Decimal (i.e., 1.00 is 100H). + * This field identifies the version of the CFI Specification with which + * the device is compliant. + */ + uint16_t wVersion; + + /** The ID of the Core */ + uint16_t wCoreID; +#define CFI_CORE_ID_UDC 1 +#define CFI_CORE_ID_OTG 2 +#define CFI_CORE_ID_WUDEV 3 + + /** Number of features returned by VEN_CORE_GET_FEATURES request */ + uint16_t wNumFeatures; +} UPACKED; + +typedef struct cfi_all_features_header cfi_all_features_header_t; + +/** This structure is a header of the Core Feature descriptor dataset returned to + * the Host after the VEN_CORE_GET_FEATURES request + */ +struct cfi_feature_desc_header { +#define CFI_FEATURE_DESC_HDR_LEN 8 + + /** The feature ID */ + uint16_t wFeatureID; + + /** Length of this feature descriptor in bytes - including the + * length of the feature name string + */ + uint16_t wLength; + + /** The data length of this feature in bytes */ + uint16_t wDataLength; + + /** + * Attributes of this features + * D0: Access rights + * 0 - Read/Write + * 1 - Read only + */ + uint8_t bmAttributes; +#define CFI_FEATURE_ATTR_RO 1 +#define CFI_FEATURE_ATTR_RW 0 + + /** Length of the feature name in bytes */ + uint8_t bNameLen; + + /** The feature name buffer */ + //uint8_t *name; +} UPACKED; + +typedef struct cfi_feature_desc_header cfi_feature_desc_header_t; + +/** + * This structure describes a NULL terminated string referenced by its id field. + * It is very similar to usb_string structure but has the id field type set to 16-bit. + */ +struct cfi_string { + uint16_t id; + const uint8_t *s; +}; +typedef struct cfi_string cfi_string_t; + +#endif --- linux-raspi2-4.2.0.orig/drivers/usb/host/dwc_otg/dwc_otg_adp.c +++ linux-raspi2-4.2.0/drivers/usb/host/dwc_otg/dwc_otg_adp.c @@ -0,0 +1,854 @@ +/* ========================================================================== + * $File: //dwh/usb_iip/dev/software/otg/linux/drivers/dwc_otg_adp.c $ + * $Revision: #12 $ + * $Date: 2011/10/26 $ + * $Change: 1873028 $ + * + * Synopsys HS OTG Linux Software Driver and documentation (hereinafter, + * "Software") is an Unsupported proprietary work of Synopsys, Inc. unless + * otherwise expressly agreed to in writing between Synopsys and you. + * + * The Software IS NOT an item of Licensed Software or Licensed Product under + * any End User Software License Agreement or Agreement for Licensed Product + * with Synopsys or any supplement thereto. You are permitted to use and + * redistribute this Software in source and binary forms, with or without + * modification, provided that redistributions of source code must retain this + * notice. You may not view, use, disclose, copy or distribute this file or + * any information contained herein except pursuant to this license grant from + * Synopsys. If you do not agree with this notice, including the disclaimer + * below, then you are not authorized to use the Software. + * + * THIS SOFTWARE IS BEING DISTRIBUTED BY SYNOPSYS SOLELY ON AN "AS IS" BASIS + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE HEREBY DISCLAIMED. IN NO EVENT SHALL SYNOPSYS BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH + * DAMAGE. + * ========================================================================== */ + +#include "dwc_os.h" +#include "dwc_otg_regs.h" +#include "dwc_otg_cil.h" +#include "dwc_otg_adp.h" + +/** @file + * + * This file contains the most of the Attach Detect Protocol implementation for + * the driver to support OTG Rev2.0. + * + */ + +void dwc_otg_adp_write_reg(dwc_otg_core_if_t * core_if, uint32_t value) +{ + adpctl_data_t adpctl; + + adpctl.d32 = value; + adpctl.b.ar = 0x2; + + DWC_WRITE_REG32(&core_if->core_global_regs->adpctl, adpctl.d32); + + while (adpctl.b.ar) { + adpctl.d32 = DWC_READ_REG32(&core_if->core_global_regs->adpctl); + } + +} + +/** + * Function is called to read ADP registers + */ +uint32_t dwc_otg_adp_read_reg(dwc_otg_core_if_t * core_if) +{ + adpctl_data_t adpctl; + + adpctl.d32 = 0; + adpctl.b.ar = 0x1; + + DWC_WRITE_REG32(&core_if->core_global_regs->adpctl, adpctl.d32); + + while (adpctl.b.ar) { + adpctl.d32 = DWC_READ_REG32(&core_if->core_global_regs->adpctl); + } + + return adpctl.d32; +} + +/** + * Function is called to read ADPCTL register and filter Write-clear bits + */ +uint32_t dwc_otg_adp_read_reg_filter(dwc_otg_core_if_t * core_if) +{ + adpctl_data_t adpctl; + + adpctl.d32 = dwc_otg_adp_read_reg(core_if); + adpctl.b.adp_tmout_int = 0; + adpctl.b.adp_prb_int = 0; + adpctl.b.adp_tmout_int = 0; + + return adpctl.d32; +} + +/** + * Function is called to write ADP registers + */ +void dwc_otg_adp_modify_reg(dwc_otg_core_if_t * core_if, uint32_t clr, + uint32_t set) +{ + dwc_otg_adp_write_reg(core_if, + (dwc_otg_adp_read_reg(core_if) & (~clr)) | set); +} + +static void adp_sense_timeout(void *ptr) +{ + dwc_otg_core_if_t *core_if = (dwc_otg_core_if_t *) ptr; + core_if->adp.sense_timer_started = 0; + DWC_PRINTF("ADP SENSE TIMEOUT\n"); + if (core_if->adp_enable) { + dwc_otg_adp_sense_stop(core_if); + dwc_otg_adp_probe_start(core_if); + } +} + +/** + * This function is called when the ADP vbus timer expires. Timeout is 1.1s. + */ +static void adp_vbuson_timeout(void *ptr) +{ + gpwrdn_data_t gpwrdn; + dwc_otg_core_if_t *core_if = (dwc_otg_core_if_t *) ptr; + hprt0_data_t hprt0 = {.d32 = 0 }; + pcgcctl_data_t pcgcctl = {.d32 = 0 }; + DWC_PRINTF("%s: 1.1 seconds expire after turning on VBUS\n",__FUNCTION__); + if (core_if) { + core_if->adp.vbuson_timer_started = 0; + /* Turn off vbus */ + hprt0.b.prtpwr = 1; + DWC_MODIFY_REG32(core_if->host_if->hprt0, hprt0.d32, 0); + gpwrdn.d32 = 0; + + /* Power off the core */ + if (core_if->power_down == 2) { + /* Enable Wakeup Logic */ +// gpwrdn.b.wkupactiv = 1; + gpwrdn.b.pmuactv = 0; + gpwrdn.b.pwrdnrstn = 1; + gpwrdn.b.pwrdnclmp = 1; + DWC_MODIFY_REG32(&core_if->core_global_regs->gpwrdn, 0, + gpwrdn.d32); + + /* Suspend the Phy Clock */ + pcgcctl.b.stoppclk = 1; + DWC_MODIFY_REG32(core_if->pcgcctl, 0, pcgcctl.d32); + + /* Switch on VDD */ +// gpwrdn.b.wkupactiv = 1; + gpwrdn.b.pmuactv = 1; + gpwrdn.b.pwrdnrstn = 1; + gpwrdn.b.pwrdnclmp = 1; + DWC_MODIFY_REG32(&core_if->core_global_regs->gpwrdn, 0, + gpwrdn.d32); + } else { + /* Enable Power Down Logic */ + gpwrdn.b.pmuintsel = 1; + gpwrdn.b.pmuactv = 1; + DWC_MODIFY_REG32(&core_if->core_global_regs->gpwrdn, 0, gpwrdn.d32); + } + + /* Power off the core */ + if (core_if->power_down == 2) { + gpwrdn.d32 = 0; + gpwrdn.b.pwrdnswtch = 1; + DWC_MODIFY_REG32(&core_if->core_global_regs->gpwrdn, + gpwrdn.d32, 0); + } + + /* Unmask SRP detected interrupt from Power Down Logic */ + gpwrdn.d32 = 0; + gpwrdn.b.srp_det_msk = 1; + DWC_MODIFY_REG32(&core_if->core_global_regs->gpwrdn, 0, gpwrdn.d32); + + dwc_otg_adp_probe_start(core_if); + dwc_otg_dump_global_registers(core_if); + dwc_otg_dump_host_registers(core_if); + } + +} + +/** + * Start the ADP Initial Probe timer to detect if Port Connected interrupt is + * not asserted within 1.1 seconds. + * + * @param core_if the pointer to core_if strucure. + */ +void dwc_otg_adp_vbuson_timer_start(dwc_otg_core_if_t * core_if) +{ + core_if->adp.vbuson_timer_started = 1; + if (core_if->adp.vbuson_timer) + { + DWC_PRINTF("SCHEDULING VBUSON TIMER\n"); + /* 1.1 secs + 60ms necessary for cil_hcd_start*/ + DWC_TIMER_SCHEDULE(core_if->adp.vbuson_timer, 1160); + } else { + DWC_WARN("VBUSON_TIMER = %p\n",core_if->adp.vbuson_timer); + } +} + +#if 0 +/** + * Masks all DWC OTG core interrupts + * + */ +static void mask_all_interrupts(dwc_otg_core_if_t * core_if) +{ + int i; + gahbcfg_data_t ahbcfg = {.d32 = 0 }; + + /* Mask Host Interrupts */ + + /* Clear and disable HCINTs */ + for (i = 0; i < core_if->core_params->host_channels; i++) { + DWC_WRITE_REG32(&core_if->host_if->hc_regs[i]->hcintmsk, 0); + DWC_WRITE_REG32(&core_if->host_if->hc_regs[i]->hcint, 0xFFFFFFFF); + + } + + /* Clear and disable HAINT */ + DWC_WRITE_REG32(&core_if->host_if->host_global_regs->haintmsk, 0x0000); + DWC_WRITE_REG32(&core_if->host_if->host_global_regs->haint, 0xFFFFFFFF); + + /* Mask Device Interrupts */ + if (!core_if->multiproc_int_enable) { + /* Clear and disable IN Endpoint interrupts */ + DWC_WRITE_REG32(&core_if->dev_if->dev_global_regs->diepmsk, 0); + for (i = 0; i <= core_if->dev_if->num_in_eps; i++) { + DWC_WRITE_REG32(&core_if->dev_if->in_ep_regs[i]-> + diepint, 0xFFFFFFFF); + } + + /* Clear and disable OUT Endpoint interrupts */ + DWC_WRITE_REG32(&core_if->dev_if->dev_global_regs->doepmsk, 0); + for (i = 0; i <= core_if->dev_if->num_out_eps; i++) { + DWC_WRITE_REG32(&core_if->dev_if->out_ep_regs[i]-> + doepint, 0xFFFFFFFF); + } + + /* Clear and disable DAINT */ + DWC_WRITE_REG32(&core_if->dev_if->dev_global_regs->daint, + 0xFFFFFFFF); + DWC_WRITE_REG32(&core_if->dev_if->dev_global_regs->daintmsk, 0); + } else { + for (i = 0; i < core_if->dev_if->num_in_eps; ++i) { + DWC_WRITE_REG32(&core_if->dev_if->dev_global_regs-> + diepeachintmsk[i], 0); + DWC_WRITE_REG32(&core_if->dev_if->in_ep_regs[i]-> + diepint, 0xFFFFFFFF); + } + + for (i = 0; i < core_if->dev_if->num_out_eps; ++i) { + DWC_WRITE_REG32(&core_if->dev_if->dev_global_regs-> + doepeachintmsk[i], 0); + DWC_WRITE_REG32(&core_if->dev_if->out_ep_regs[i]-> + doepint, 0xFFFFFFFF); + } + + DWC_WRITE_REG32(&core_if->dev_if->dev_global_regs->deachintmsk, + 0); + DWC_WRITE_REG32(&core_if->dev_if->dev_global_regs->deachint, + 0xFFFFFFFF); + + } + + /* Disable interrupts */ + ahbcfg.b.glblintrmsk = 1; + DWC_MODIFY_REG32(&core_if->core_global_regs->gahbcfg, ahbcfg.d32, 0); + + /* Disable all interrupts. */ + DWC_WRITE_REG32(&core_if->core_global_regs->gintmsk, 0); + + /* Clear any pending interrupts */ + DWC_WRITE_REG32(&core_if->core_global_regs->gintsts, 0xFFFFFFFF); + + /* Clear any pending OTG Interrupts */ + DWC_WRITE_REG32(&core_if->core_global_regs->gotgint, 0xFFFFFFFF); +} + +/** + * Unmask Port Connection Detected interrupt + * + */ +static void unmask_conn_det_intr(dwc_otg_core_if_t * core_if) +{ + gintmsk_data_t gintmsk = {.d32 = 0,.b.portintr = 1 }; + + DWC_WRITE_REG32(&core_if->core_global_regs->gintmsk, gintmsk.d32); +} +#endif + +/** + * Starts the ADP Probing + * + * @param core_if the pointer to core_if structure. + */ +uint32_t dwc_otg_adp_probe_start(dwc_otg_core_if_t * core_if) +{ + + adpctl_data_t adpctl = {.d32 = 0}; + gpwrdn_data_t gpwrdn; +#if 0 + adpctl_data_t adpctl_int = {.d32 = 0, .b.adp_prb_int = 1, + .b.adp_sns_int = 1, b.adp_tmout_int}; +#endif + dwc_otg_disable_global_interrupts(core_if); + DWC_PRINTF("ADP Probe Start\n"); + core_if->adp.probe_enabled = 1; + + adpctl.b.adpres = 1; + dwc_otg_adp_write_reg(core_if, adpctl.d32); + + while (adpctl.b.adpres) { + adpctl.d32 = dwc_otg_adp_read_reg(core_if); + } + + adpctl.d32 = 0; + gpwrdn.d32 = DWC_READ_REG32(&core_if->core_global_regs->gpwrdn); + + /* In Host mode unmask SRP detected interrupt */ + gpwrdn.d32 = 0; + gpwrdn.b.sts_chngint_msk = 1; + if (!gpwrdn.b.idsts) { + gpwrdn.b.srp_det_msk = 1; + } + DWC_MODIFY_REG32(&core_if->core_global_regs->gpwrdn, 0, gpwrdn.d32); + + adpctl.b.adp_tmout_int_msk = 1; + adpctl.b.adp_prb_int_msk = 1; + adpctl.b.prb_dschg = 1; + adpctl.b.prb_delta = 1; + adpctl.b.prb_per = 1; + adpctl.b.adpen = 1; + adpctl.b.enaprb = 1; + + dwc_otg_adp_write_reg(core_if, adpctl.d32); + DWC_PRINTF("ADP Probe Finish\n"); + return 0; +} + +/** + * Starts the ADP Sense timer to detect if ADP Sense interrupt is not asserted + * within 3 seconds. + * + * @param core_if the pointer to core_if strucure. + */ +void dwc_otg_adp_sense_timer_start(dwc_otg_core_if_t * core_if) +{ + core_if->adp.sense_timer_started = 1; + DWC_TIMER_SCHEDULE(core_if->adp.sense_timer, 3000 /* 3 secs */ ); +} + +/** + * Starts the ADP Sense + * + * @param core_if the pointer to core_if strucure. + */ +uint32_t dwc_otg_adp_sense_start(dwc_otg_core_if_t * core_if) +{ + adpctl_data_t adpctl; + + DWC_PRINTF("ADP Sense Start\n"); + + /* Unmask ADP sense interrupt and mask all other from the core */ + adpctl.d32 = dwc_otg_adp_read_reg_filter(core_if); + adpctl.b.adp_sns_int_msk = 1; + dwc_otg_adp_write_reg(core_if, adpctl.d32); + dwc_otg_disable_global_interrupts(core_if); // vahrama + + /* Set ADP reset bit*/ + adpctl.d32 = dwc_otg_adp_read_reg_filter(core_if); + adpctl.b.adpres = 1; + dwc_otg_adp_write_reg(core_if, adpctl.d32); + + while (adpctl.b.adpres) { + adpctl.d32 = dwc_otg_adp_read_reg(core_if); + } + + adpctl.b.adpres = 0; + adpctl.b.adpen = 1; + adpctl.b.enasns = 1; + dwc_otg_adp_write_reg(core_if, adpctl.d32); + + dwc_otg_adp_sense_timer_start(core_if); + + return 0; +} + +/** + * Stops the ADP Probing + * + * @param core_if the pointer to core_if strucure. + */ +uint32_t dwc_otg_adp_probe_stop(dwc_otg_core_if_t * core_if) +{ + + adpctl_data_t adpctl; + DWC_PRINTF("Stop ADP probe\n"); + core_if->adp.probe_enabled = 0; + core_if->adp.probe_counter = 0; + adpctl.d32 = dwc_otg_adp_read_reg(core_if); + + adpctl.b.adpen = 0; + adpctl.b.adp_prb_int = 1; + adpctl.b.adp_tmout_int = 1; + adpctl.b.adp_sns_int = 1; + dwc_otg_adp_write_reg(core_if, adpctl.d32); + + return 0; +} + +/** + * Stops the ADP Sensing + * + * @param core_if the pointer to core_if strucure. + */ +uint32_t dwc_otg_adp_sense_stop(dwc_otg_core_if_t * core_if) +{ + adpctl_data_t adpctl; + + core_if->adp.sense_enabled = 0; + + adpctl.d32 = dwc_otg_adp_read_reg_filter(core_if); + adpctl.b.enasns = 0; + adpctl.b.adp_sns_int = 1; + dwc_otg_adp_write_reg(core_if, adpctl.d32); + + return 0; +} + +/** + * Called to turn on the VBUS after initial ADP probe in host mode. + * If port power was already enabled in cil_hcd_start function then + * only schedule a timer. + * + * @param core_if the pointer to core_if structure. + */ +void dwc_otg_adp_turnon_vbus(dwc_otg_core_if_t * core_if) +{ + hprt0_data_t hprt0 = {.d32 = 0 }; + hprt0.d32 = dwc_otg_read_hprt0(core_if); + DWC_PRINTF("Turn on VBUS for 1.1s, port power is %d\n", hprt0.b.prtpwr); + + if (hprt0.b.prtpwr == 0) { + hprt0.b.prtpwr = 1; + //DWC_WRITE_REG32(core_if->host_if->hprt0, hprt0.d32); + } + + dwc_otg_adp_vbuson_timer_start(core_if); +} + +/** + * Called right after driver is loaded + * to perform initial actions for ADP + * + * @param core_if the pointer to core_if structure. + * @param is_host - flag for current mode of operation either from GINTSTS or GPWRDN + */ +void dwc_otg_adp_start(dwc_otg_core_if_t * core_if, uint8_t is_host) +{ + gpwrdn_data_t gpwrdn; + + DWC_PRINTF("ADP Initial Start\n"); + core_if->adp.adp_started = 1; + + DWC_WRITE_REG32(&core_if->core_global_regs->gintsts, 0xFFFFFFFF); + dwc_otg_disable_global_interrupts(core_if); + if (is_host) { + DWC_PRINTF("HOST MODE\n"); + /* Enable Power Down Logic Interrupt*/ + gpwrdn.d32 = 0; + gpwrdn.b.pmuintsel = 1; + gpwrdn.b.pmuactv = 1; + DWC_MODIFY_REG32(&core_if->core_global_regs->gpwrdn, 0, gpwrdn.d32); + /* Initialize first ADP probe to obtain Ramp Time value */ + core_if->adp.initial_probe = 1; + dwc_otg_adp_probe_start(core_if); + } else { + gotgctl_data_t gotgctl; + gotgctl.d32 = DWC_READ_REG32(&core_if->core_global_regs->gotgctl); + DWC_PRINTF("DEVICE MODE\n"); + if (gotgctl.b.bsesvld == 0) { + /* Enable Power Down Logic Interrupt*/ + gpwrdn.d32 = 0; + DWC_PRINTF("VBUS is not valid - start ADP probe\n"); + gpwrdn.b.pmuintsel = 1; + gpwrdn.b.pmuactv = 1; + DWC_MODIFY_REG32(&core_if->core_global_regs->gpwrdn, 0, gpwrdn.d32); + core_if->adp.initial_probe = 1; + dwc_otg_adp_probe_start(core_if); + } else { + DWC_PRINTF("VBUS is valid - initialize core as a Device\n"); + core_if->op_state = B_PERIPHERAL; + dwc_otg_core_init(core_if); + dwc_otg_enable_global_interrupts(core_if); + cil_pcd_start(core_if); + dwc_otg_dump_global_registers(core_if); + dwc_otg_dump_dev_registers(core_if); + } + } +} + +void dwc_otg_adp_init(dwc_otg_core_if_t * core_if) +{ + core_if->adp.adp_started = 0; + core_if->adp.initial_probe = 0; + core_if->adp.probe_timer_values[0] = -1; + core_if->adp.probe_timer_values[1] = -1; + core_if->adp.probe_enabled = 0; + core_if->adp.sense_enabled = 0; + core_if->adp.sense_timer_started = 0; + core_if->adp.vbuson_timer_started = 0; + core_if->adp.probe_counter = 0; + core_if->adp.gpwrdn = 0; + core_if->adp.attached = DWC_OTG_ADP_UNKOWN; + /* Initialize timers */ + core_if->adp.sense_timer = + DWC_TIMER_ALLOC("ADP SENSE TIMER", adp_sense_timeout, core_if); + core_if->adp.vbuson_timer = + DWC_TIMER_ALLOC("ADP VBUS ON TIMER", adp_vbuson_timeout, core_if); + if (!core_if->adp.sense_timer || !core_if->adp.vbuson_timer) + { + DWC_ERROR("Could not allocate memory for ADP timers\n"); + } +} + +void dwc_otg_adp_remove(dwc_otg_core_if_t * core_if) +{ + gpwrdn_data_t gpwrdn = { .d32 = 0 }; + gpwrdn.b.pmuintsel = 1; + gpwrdn.b.pmuactv = 1; + DWC_MODIFY_REG32(&core_if->core_global_regs->gpwrdn, gpwrdn.d32, 0); + + if (core_if->adp.probe_enabled) + dwc_otg_adp_probe_stop(core_if); + if (core_if->adp.sense_enabled) + dwc_otg_adp_sense_stop(core_if); + if (core_if->adp.sense_timer_started) + DWC_TIMER_CANCEL(core_if->adp.sense_timer); + if (core_if->adp.vbuson_timer_started) + DWC_TIMER_CANCEL(core_if->adp.vbuson_timer); + DWC_TIMER_FREE(core_if->adp.sense_timer); + DWC_TIMER_FREE(core_if->adp.vbuson_timer); +} + +///////////////////////////////////////////////////////////////////// +////////////// ADP Interrupt Handlers /////////////////////////////// +///////////////////////////////////////////////////////////////////// +/** + * This function sets Ramp Timer values + */ +static uint32_t set_timer_value(dwc_otg_core_if_t * core_if, uint32_t val) +{ + if (core_if->adp.probe_timer_values[0] == -1) { + core_if->adp.probe_timer_values[0] = val; + core_if->adp.probe_timer_values[1] = -1; + return 1; + } else { + core_if->adp.probe_timer_values[1] = + core_if->adp.probe_timer_values[0]; + core_if->adp.probe_timer_values[0] = val; + return 0; + } +} + +/** + * This function compares Ramp Timer values + */ +static uint32_t compare_timer_values(dwc_otg_core_if_t * core_if) +{ + uint32_t diff; + if (core_if->adp.probe_timer_values[0]>=core_if->adp.probe_timer_values[1]) + diff = core_if->adp.probe_timer_values[0]-core_if->adp.probe_timer_values[1]; + else + diff = core_if->adp.probe_timer_values[1]-core_if->adp.probe_timer_values[0]; + if(diff < 2) { + return 0; + } else { + return 1; + } +} + +/** + * This function handles ADP Probe Interrupts + */ +static int32_t dwc_otg_adp_handle_prb_intr(dwc_otg_core_if_t * core_if, + uint32_t val) +{ + adpctl_data_t adpctl = {.d32 = 0 }; + gpwrdn_data_t gpwrdn, temp; + adpctl.d32 = val; + + temp.d32 = DWC_READ_REG32(&core_if->core_global_regs->gpwrdn); + core_if->adp.probe_counter++; + core_if->adp.gpwrdn = DWC_READ_REG32(&core_if->core_global_regs->gpwrdn); + if (adpctl.b.rtim == 0 && !temp.b.idsts){ + DWC_PRINTF("RTIM value is 0\n"); + goto exit; + } + if (set_timer_value(core_if, adpctl.b.rtim) && + core_if->adp.initial_probe) { + core_if->adp.initial_probe = 0; + dwc_otg_adp_probe_stop(core_if); + gpwrdn.d32 = 0; + gpwrdn.b.pmuactv = 1; + gpwrdn.b.pmuintsel = 1; + DWC_MODIFY_REG32(&core_if->core_global_regs->gpwrdn, gpwrdn.d32, 0); + DWC_WRITE_REG32(&core_if->core_global_regs->gintsts, 0xFFFFFFFF); + + /* check which value is for device mode and which for Host mode */ + if (!temp.b.idsts) { /* considered host mode value is 0 */ + /* + * Turn on VBUS after initial ADP probe. + */ + core_if->op_state = A_HOST; + dwc_otg_enable_global_interrupts(core_if); + DWC_SPINUNLOCK(core_if->lock); + cil_hcd_start(core_if); + dwc_otg_adp_turnon_vbus(core_if); + DWC_SPINLOCK(core_if->lock); + } else { + /* + * Initiate SRP after initial ADP probe. + */ + dwc_otg_enable_global_interrupts(core_if); + dwc_otg_initiate_srp(core_if); + } + } else if (core_if->adp.probe_counter > 2){ + gpwrdn.d32 = DWC_READ_REG32(&core_if->core_global_regs->gpwrdn); + if (compare_timer_values(core_if)) { + DWC_PRINTF("Difference in timer values !!! \n"); +// core_if->adp.attached = DWC_OTG_ADP_ATTACHED; + dwc_otg_adp_probe_stop(core_if); + + /* Power on the core */ + if (core_if->power_down == 2) { + gpwrdn.b.pwrdnswtch = 1; + DWC_MODIFY_REG32(&core_if->core_global_regs-> + gpwrdn, 0, gpwrdn.d32); + } + + /* check which value is for device mode and which for Host mode */ + if (!temp.b.idsts) { /* considered host mode value is 0 */ + /* Disable Interrupt from Power Down Logic */ + gpwrdn.d32 = 0; + gpwrdn.b.pmuintsel = 1; + gpwrdn.b.pmuactv = 1; + DWC_MODIFY_REG32(&core_if->core_global_regs-> + gpwrdn, gpwrdn.d32, 0); + + /* + * Initialize the Core for Host mode. + */ + core_if->op_state = A_HOST; + dwc_otg_core_init(core_if); + dwc_otg_enable_global_interrupts(core_if); + cil_hcd_start(core_if); + } else { + gotgctl_data_t gotgctl; + /* Mask SRP detected interrupt from Power Down Logic */ + gpwrdn.d32 = 0; + gpwrdn.b.srp_det_msk = 1; + DWC_MODIFY_REG32(&core_if->core_global_regs-> + gpwrdn, gpwrdn.d32, 0); + + /* Disable Power Down Logic */ + gpwrdn.d32 = 0; + gpwrdn.b.pmuintsel = 1; + gpwrdn.b.pmuactv = 1; + DWC_MODIFY_REG32(&core_if->core_global_regs-> + gpwrdn, gpwrdn.d32, 0); + + /* + * Initialize the Core for Device mode. + */ + core_if->op_state = B_PERIPHERAL; + dwc_otg_core_init(core_if); + dwc_otg_enable_global_interrupts(core_if); + cil_pcd_start(core_if); + + gotgctl.d32 = DWC_READ_REG32(&core_if->core_global_regs->gotgctl); + if (!gotgctl.b.bsesvld) { + dwc_otg_initiate_srp(core_if); + } + } + } + if (core_if->power_down == 2) { + if (gpwrdn.b.bsessvld) { + /* Mask SRP detected interrupt from Power Down Logic */ + gpwrdn.d32 = 0; + gpwrdn.b.srp_det_msk = 1; + DWC_MODIFY_REG32(&core_if->core_global_regs->gpwrdn, gpwrdn.d32, 0); + + /* Disable Power Down Logic */ + gpwrdn.d32 = 0; + gpwrdn.b.pmuactv = 1; + DWC_MODIFY_REG32(&core_if->core_global_regs->gpwrdn, gpwrdn.d32, 0); + + /* + * Initialize the Core for Device mode. + */ + core_if->op_state = B_PERIPHERAL; + dwc_otg_core_init(core_if); + dwc_otg_enable_global_interrupts(core_if); + cil_pcd_start(core_if); + } + } + } +exit: + /* Clear interrupt */ + adpctl.d32 = dwc_otg_adp_read_reg(core_if); + adpctl.b.adp_prb_int = 1; + dwc_otg_adp_write_reg(core_if, adpctl.d32); + + return 0; +} + +/** + * This function hadles ADP Sense Interrupt + */ +static int32_t dwc_otg_adp_handle_sns_intr(dwc_otg_core_if_t * core_if) +{ + adpctl_data_t adpctl; + /* Stop ADP Sense timer */ + DWC_TIMER_CANCEL(core_if->adp.sense_timer); + + /* Restart ADP Sense timer */ + dwc_otg_adp_sense_timer_start(core_if); + + /* Clear interrupt */ + adpctl.d32 = dwc_otg_adp_read_reg(core_if); + adpctl.b.adp_sns_int = 1; + dwc_otg_adp_write_reg(core_if, adpctl.d32); + + return 0; +} + +/** + * This function handles ADP Probe Interrupts + */ +static int32_t dwc_otg_adp_handle_prb_tmout_intr(dwc_otg_core_if_t * core_if, + uint32_t val) +{ + adpctl_data_t adpctl = {.d32 = 0 }; + adpctl.d32 = val; + set_timer_value(core_if, adpctl.b.rtim); + + /* Clear interrupt */ + adpctl.d32 = dwc_otg_adp_read_reg(core_if); + adpctl.b.adp_tmout_int = 1; + dwc_otg_adp_write_reg(core_if, adpctl.d32); + + return 0; +} + +/** + * ADP Interrupt handler. + * + */ +int32_t dwc_otg_adp_handle_intr(dwc_otg_core_if_t * core_if) +{ + int retval = 0; + adpctl_data_t adpctl = {.d32 = 0}; + + adpctl.d32 = dwc_otg_adp_read_reg(core_if); + DWC_PRINTF("ADPCTL = %08x\n",adpctl.d32); + + if (adpctl.b.adp_sns_int & adpctl.b.adp_sns_int_msk) { + DWC_PRINTF("ADP Sense interrupt\n"); + retval |= dwc_otg_adp_handle_sns_intr(core_if); + } + if (adpctl.b.adp_tmout_int & adpctl.b.adp_tmout_int_msk) { + DWC_PRINTF("ADP timeout interrupt\n"); + retval |= dwc_otg_adp_handle_prb_tmout_intr(core_if, adpctl.d32); + } + if (adpctl.b.adp_prb_int & adpctl.b.adp_prb_int_msk) { + DWC_PRINTF("ADP Probe interrupt\n"); + adpctl.b.adp_prb_int = 1; + retval |= dwc_otg_adp_handle_prb_intr(core_if, adpctl.d32); + } + +// dwc_otg_adp_modify_reg(core_if, adpctl.d32, 0); + //dwc_otg_adp_write_reg(core_if, adpctl.d32); + DWC_PRINTF("RETURN FROM ADP ISR\n"); + + return retval; +} + +/** + * + * @param core_if Programming view of DWC_otg controller. + */ +int32_t dwc_otg_adp_handle_srp_intr(dwc_otg_core_if_t * core_if) +{ + +#ifndef DWC_HOST_ONLY + hprt0_data_t hprt0; + gpwrdn_data_t gpwrdn; + DWC_DEBUGPL(DBG_ANY, "++ Power Down Logic Session Request Interrupt++\n"); + + gpwrdn.d32 = DWC_READ_REG32(&core_if->core_global_regs->gpwrdn); + /* check which value is for device mode and which for Host mode */ + if (!gpwrdn.b.idsts) { /* considered host mode value is 0 */ + DWC_PRINTF("SRP: Host mode\n"); + + if (core_if->adp_enable) { + dwc_otg_adp_probe_stop(core_if); + + /* Power on the core */ + if (core_if->power_down == 2) { + gpwrdn.b.pwrdnswtch = 1; + DWC_MODIFY_REG32(&core_if->core_global_regs-> + gpwrdn, 0, gpwrdn.d32); + } + + core_if->op_state = A_HOST; + dwc_otg_core_init(core_if); + dwc_otg_enable_global_interrupts(core_if); + cil_hcd_start(core_if); + } + + /* Turn on the port power bit. */ + hprt0.d32 = dwc_otg_read_hprt0(core_if); + hprt0.b.prtpwr = 1; + DWC_WRITE_REG32(core_if->host_if->hprt0, hprt0.d32); + + /* Start the Connection timer. So a message can be displayed + * if connect does not occur within 10 seconds. */ + cil_hcd_session_start(core_if); + } else { + DWC_PRINTF("SRP: Device mode %s\n", __FUNCTION__); + if (core_if->adp_enable) { + dwc_otg_adp_probe_stop(core_if); + + /* Power on the core */ + if (core_if->power_down == 2) { + gpwrdn.b.pwrdnswtch = 1; + DWC_MODIFY_REG32(&core_if->core_global_regs-> + gpwrdn, 0, gpwrdn.d32); + } + + gpwrdn.d32 = 0; + gpwrdn.b.pmuactv = 0; + DWC_MODIFY_REG32(&core_if->core_global_regs->gpwrdn, 0, + gpwrdn.d32); + + core_if->op_state = B_PERIPHERAL; + dwc_otg_core_init(core_if); + dwc_otg_enable_global_interrupts(core_if); + cil_pcd_start(core_if); + } + } +#endif + return 1; +} --- linux-raspi2-4.2.0.orig/drivers/usb/host/dwc_otg/dwc_otg_adp.h +++ linux-raspi2-4.2.0/drivers/usb/host/dwc_otg/dwc_otg_adp.h @@ -0,0 +1,80 @@ +/* ========================================================================== + * $File: //dwh/usb_iip/dev/software/otg/linux/drivers/dwc_otg_adp.h $ + * $Revision: #7 $ + * $Date: 2011/10/24 $ + * $Change: 1871159 $ + * + * Synopsys HS OTG Linux Software Driver and documentation (hereinafter, + * "Software") is an Unsupported proprietary work of Synopsys, Inc. unless + * otherwise expressly agreed to in writing between Synopsys and you. + * + * The Software IS NOT an item of Licensed Software or Licensed Product under + * any End User Software License Agreement or Agreement for Licensed Product + * with Synopsys or any supplement thereto. You are permitted to use and + * redistribute this Software in source and binary forms, with or without + * modification, provided that redistributions of source code must retain this + * notice. You may not view, use, disclose, copy or distribute this file or + * any information contained herein except pursuant to this license grant from + * Synopsys. If you do not agree with this notice, including the disclaimer + * below, then you are not authorized to use the Software. + * + * THIS SOFTWARE IS BEING DISTRIBUTED BY SYNOPSYS SOLELY ON AN "AS IS" BASIS + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE HEREBY DISCLAIMED. IN NO EVENT SHALL SYNOPSYS BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH + * DAMAGE. + * ========================================================================== */ + +#ifndef __DWC_OTG_ADP_H__ +#define __DWC_OTG_ADP_H__ + +/** + * @file + * + * This file contains the Attach Detect Protocol interfaces and defines + * (functions) and structures for Linux. + * + */ + +#define DWC_OTG_ADP_UNATTACHED 0 +#define DWC_OTG_ADP_ATTACHED 1 +#define DWC_OTG_ADP_UNKOWN 2 + +typedef struct dwc_otg_adp { + uint32_t adp_started; + uint32_t initial_probe; + int32_t probe_timer_values[2]; + uint32_t probe_enabled; + uint32_t sense_enabled; + dwc_timer_t *sense_timer; + uint32_t sense_timer_started; + dwc_timer_t *vbuson_timer; + uint32_t vbuson_timer_started; + uint32_t attached; + uint32_t probe_counter; + uint32_t gpwrdn; +} dwc_otg_adp_t; + +/** + * Attach Detect Protocol functions + */ + +extern void dwc_otg_adp_write_reg(dwc_otg_core_if_t * core_if, uint32_t value); +extern uint32_t dwc_otg_adp_read_reg(dwc_otg_core_if_t * core_if); +extern uint32_t dwc_otg_adp_probe_start(dwc_otg_core_if_t * core_if); +extern uint32_t dwc_otg_adp_sense_start(dwc_otg_core_if_t * core_if); +extern uint32_t dwc_otg_adp_probe_stop(dwc_otg_core_if_t * core_if); +extern uint32_t dwc_otg_adp_sense_stop(dwc_otg_core_if_t * core_if); +extern void dwc_otg_adp_start(dwc_otg_core_if_t * core_if, uint8_t is_host); +extern void dwc_otg_adp_init(dwc_otg_core_if_t * core_if); +extern void dwc_otg_adp_remove(dwc_otg_core_if_t * core_if); +extern int32_t dwc_otg_adp_handle_intr(dwc_otg_core_if_t * core_if); +extern int32_t dwc_otg_adp_handle_srp_intr(dwc_otg_core_if_t * core_if); + +#endif //__DWC_OTG_ADP_H__ --- linux-raspi2-4.2.0.orig/drivers/usb/host/dwc_otg/dwc_otg_attr.c +++ linux-raspi2-4.2.0/drivers/usb/host/dwc_otg/dwc_otg_attr.c @@ -0,0 +1,1210 @@ +/* ========================================================================== + * $File: //dwh/usb_iip/dev/software/otg/linux/drivers/dwc_otg_attr.c $ + * $Revision: #44 $ + * $Date: 2010/11/29 $ + * $Change: 1636033 $ + * + * Synopsys HS OTG Linux Software Driver and documentation (hereinafter, + * "Software") is an Unsupported proprietary work of Synopsys, Inc. unless + * otherwise expressly agreed to in writing between Synopsys and you. + * + * The Software IS NOT an item of Licensed Software or Licensed Product under + * any End User Software License Agreement or Agreement for Licensed Product + * with Synopsys or any supplement thereto. You are permitted to use and + * redistribute this Software in source and binary forms, with or without + * modification, provided that redistributions of source code must retain this + * notice. You may not view, use, disclose, copy or distribute this file or + * any information contained herein except pursuant to this license grant from + * Synopsys. If you do not agree with this notice, including the disclaimer + * below, then you are not authorized to use the Software. + * + * THIS SOFTWARE IS BEING DISTRIBUTED BY SYNOPSYS SOLELY ON AN "AS IS" BASIS + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE HEREBY DISCLAIMED. IN NO EVENT SHALL SYNOPSYS BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH + * DAMAGE. + * ========================================================================== */ + +/** @file + * + * The diagnostic interface will provide access to the controller for + * bringing up the hardware and testing. The Linux driver attributes + * feature will be used to provide the Linux Diagnostic + * Interface. These attributes are accessed through sysfs. + */ + +/** @page "Linux Module Attributes" + * + * The Linux module attributes feature is used to provide the Linux + * Diagnostic Interface. These attributes are accessed through sysfs. + * The diagnostic interface will provide access to the controller for + * bringing up the hardware and testing. + + The following table shows the attributes. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Name Description Access
mode Returns the current mode: 0 for device mode, 1 for host mode Read
hnpcapable Gets or sets the "HNP-capable" bit in the Core USB Configuraton Register. + Read returns the current value. Read/Write
srpcapable Gets or sets the "SRP-capable" bit in the Core USB Configuraton Register. + Read returns the current value. Read/Write
hsic_connect Gets or sets the "HSIC-Connect" bit in the GLPMCFG Register. + Read returns the current value. Read/Write
inv_sel_hsic Gets or sets the "Invert Select HSIC" bit in the GLPMFG Register. + Read returns the current value. Read/Write
hnp Initiates the Host Negotiation Protocol. Read returns the status. Read/Write
srp Initiates the Session Request Protocol. Read returns the status. Read/Write
buspower Gets or sets the Power State of the bus (0 - Off or 1 - On) Read/Write
bussuspend Suspends the USB bus. Read/Write
busconnected Gets the connection status of the bus Read
gotgctl Gets or sets the Core Control Status Register. Read/Write
gusbcfg Gets or sets the Core USB Configuration Register Read/Write
grxfsiz Gets or sets the Receive FIFO Size Register Read/Write
gnptxfsiz Gets or sets the non-periodic Transmit Size Register Read/Write
gpvndctl Gets or sets the PHY Vendor Control Register Read/Write
ggpio Gets the value in the lower 16-bits of the General Purpose IO Register + or sets the upper 16 bits. Read/Write
guid Gets or sets the value of the User ID Register Read/Write
gsnpsid Gets the value of the Synopsys ID Regester Read
devspeed Gets or sets the device speed setting in the DCFG register Read/Write
enumspeed Gets the device enumeration Speed. Read
hptxfsiz Gets the value of the Host Periodic Transmit FIFO Read
hprt0 Gets or sets the value in the Host Port Control and Status Register Read/Write
regoffset Sets the register offset for the next Register Access Read/Write
regvalue Gets or sets the value of the register at the offset in the regoffset attribute. Read/Write
remote_wakeup On read, shows the status of Remote Wakeup. On write, initiates a remote + wakeup of the host. When bit 0 is 1 and Remote Wakeup is enabled, the Remote + Wakeup signalling bit in the Device Control Register is set for 1 + milli-second. Read/Write
rem_wakeup_pwrdn On read, shows the status core - hibernated or not. On write, initiates + a remote wakeup of the device from Hibernation. Read/Write
mode_ch_tim_en This bit is used to enable or disable the host core to wait for 200 PHY + clock cycles at the end of Resume to change the opmode signal to the PHY to 00 + after Suspend or LPM. Read/Write
fr_interval On read, shows the value of HFIR Frame Interval. On write, dynamically + reload HFIR register during runtime. The application can write a value to this + register only after the Port Enable bit of the Host Port Control and Status + register (HPRT.PrtEnaPort) has been set Read/Write
disconnect_us On read, shows the status of disconnect_device_us. On write, sets disconnect_us + which causes soft disconnect for 100us. Applicable only for device mode of operation. Read/Write
regdump Dumps the contents of core registers. Read
spramdump Dumps the contents of core registers. Read
hcddump Dumps the current HCD state. Read
hcd_frrem Shows the average value of the Frame Remaining + field in the Host Frame Number/Frame Remaining register when an SOF interrupt + occurs. This can be used to determine the average interrupt latency. Also + shows the average Frame Remaining value for start_transfer and the "a" and + "b" sample points. The "a" and "b" sample points may be used during debugging + bto determine how long it takes to execute a section of the HCD code. Read
rd_reg_test Displays the time required to read the GNPTXFSIZ register many times + (the output shows the number of times the register is read). + Read
wr_reg_test Displays the time required to write the GNPTXFSIZ register many times + (the output shows the number of times the register is written). + Read
lpm_response Gets or sets lpm_response mode. Applicable only in device mode. + Write
sleep_status Shows sleep status of device. + Read
+ + Example usage: + To get the current mode: + cat /sys/devices/lm0/mode + + To power down the USB: + echo 0 > /sys/devices/lm0/buspower + */ + +#include "dwc_otg_os_dep.h" +#include "dwc_os.h" +#include "dwc_otg_driver.h" +#include "dwc_otg_attr.h" +#include "dwc_otg_core_if.h" +#include "dwc_otg_pcd_if.h" +#include "dwc_otg_hcd_if.h" + +/* + * MACROs for defining sysfs attribute + */ +#ifdef LM_INTERFACE + +#define DWC_OTG_DEVICE_ATTR_BITFIELD_SHOW(_otg_attr_name_,_string_) \ +static ssize_t _otg_attr_name_##_show (struct device *_dev, struct device_attribute *attr, char *buf) \ +{ \ + struct lm_device *lm_dev = container_of(_dev, struct lm_device, dev); \ + dwc_otg_device_t *otg_dev = lm_get_drvdata(lm_dev); \ + uint32_t val; \ + val = dwc_otg_get_##_otg_attr_name_ (otg_dev->core_if); \ + return sprintf (buf, "%s = 0x%x\n", _string_, val); \ +} +#define DWC_OTG_DEVICE_ATTR_BITFIELD_STORE(_otg_attr_name_,_string_) \ +static ssize_t _otg_attr_name_##_store (struct device *_dev, struct device_attribute *attr, \ + const char *buf, size_t count) \ +{ \ + struct lm_device *lm_dev = container_of(_dev, struct lm_device, dev); \ + dwc_otg_device_t *otg_dev = lm_get_drvdata(lm_dev); \ + uint32_t set = simple_strtoul(buf, NULL, 16); \ + dwc_otg_set_##_otg_attr_name_(otg_dev->core_if, set);\ + return count; \ +} + +#elif defined(PCI_INTERFACE) + +#define DWC_OTG_DEVICE_ATTR_BITFIELD_SHOW(_otg_attr_name_,_string_) \ +static ssize_t _otg_attr_name_##_show (struct device *_dev, struct device_attribute *attr, char *buf) \ +{ \ + dwc_otg_device_t *otg_dev = dev_get_drvdata(_dev); \ + uint32_t val; \ + val = dwc_otg_get_##_otg_attr_name_ (otg_dev->core_if); \ + return sprintf (buf, "%s = 0x%x\n", _string_, val); \ +} +#define DWC_OTG_DEVICE_ATTR_BITFIELD_STORE(_otg_attr_name_,_string_) \ +static ssize_t _otg_attr_name_##_store (struct device *_dev, struct device_attribute *attr, \ + const char *buf, size_t count) \ +{ \ + dwc_otg_device_t *otg_dev = dev_get_drvdata(_dev); \ + uint32_t set = simple_strtoul(buf, NULL, 16); \ + dwc_otg_set_##_otg_attr_name_(otg_dev->core_if, set);\ + return count; \ +} + +#elif defined(PLATFORM_INTERFACE) + +#define DWC_OTG_DEVICE_ATTR_BITFIELD_SHOW(_otg_attr_name_,_string_) \ +static ssize_t _otg_attr_name_##_show (struct device *_dev, struct device_attribute *attr, char *buf) \ +{ \ + struct platform_device *platform_dev = \ + container_of(_dev, struct platform_device, dev); \ + dwc_otg_device_t *otg_dev = platform_get_drvdata(platform_dev); \ + uint32_t val; \ + DWC_PRINTF("%s(%p) -> platform_dev %p, otg_dev %p\n", \ + __func__, _dev, platform_dev, otg_dev); \ + val = dwc_otg_get_##_otg_attr_name_ (otg_dev->core_if); \ + return sprintf (buf, "%s = 0x%x\n", _string_, val); \ +} +#define DWC_OTG_DEVICE_ATTR_BITFIELD_STORE(_otg_attr_name_,_string_) \ +static ssize_t _otg_attr_name_##_store (struct device *_dev, struct device_attribute *attr, \ + const char *buf, size_t count) \ +{ \ + struct platform_device *platform_dev = container_of(_dev, struct platform_device, dev); \ + dwc_otg_device_t *otg_dev = platform_get_drvdata(platform_dev); \ + uint32_t set = simple_strtoul(buf, NULL, 16); \ + dwc_otg_set_##_otg_attr_name_(otg_dev->core_if, set);\ + return count; \ +} +#endif + +/* + * MACROs for defining sysfs attribute for 32-bit registers + */ +#ifdef LM_INTERFACE +#define DWC_OTG_DEVICE_ATTR_REG_SHOW(_otg_attr_name_,_string_) \ +static ssize_t _otg_attr_name_##_show (struct device *_dev, struct device_attribute *attr, char *buf) \ +{ \ + struct lm_device *lm_dev = container_of(_dev, struct lm_device, dev); \ + dwc_otg_device_t *otg_dev = lm_get_drvdata(lm_dev); \ + uint32_t val; \ + val = dwc_otg_get_##_otg_attr_name_ (otg_dev->core_if); \ + return sprintf (buf, "%s = 0x%08x\n", _string_, val); \ +} +#define DWC_OTG_DEVICE_ATTR_REG_STORE(_otg_attr_name_,_string_) \ +static ssize_t _otg_attr_name_##_store (struct device *_dev, struct device_attribute *attr, \ + const char *buf, size_t count) \ +{ \ + struct lm_device *lm_dev = container_of(_dev, struct lm_device, dev); \ + dwc_otg_device_t *otg_dev = lm_get_drvdata(lm_dev); \ + uint32_t val = simple_strtoul(buf, NULL, 16); \ + dwc_otg_set_##_otg_attr_name_ (otg_dev->core_if, val); \ + return count; \ +} +#elif defined(PCI_INTERFACE) +#define DWC_OTG_DEVICE_ATTR_REG_SHOW(_otg_attr_name_,_string_) \ +static ssize_t _otg_attr_name_##_show (struct device *_dev, struct device_attribute *attr, char *buf) \ +{ \ + dwc_otg_device_t *otg_dev = dev_get_drvdata(_dev); \ + uint32_t val; \ + val = dwc_otg_get_##_otg_attr_name_ (otg_dev->core_if); \ + return sprintf (buf, "%s = 0x%08x\n", _string_, val); \ +} +#define DWC_OTG_DEVICE_ATTR_REG_STORE(_otg_attr_name_,_string_) \ +static ssize_t _otg_attr_name_##_store (struct device *_dev, struct device_attribute *attr, \ + const char *buf, size_t count) \ +{ \ + dwc_otg_device_t *otg_dev = dev_get_drvdata(_dev); \ + uint32_t val = simple_strtoul(buf, NULL, 16); \ + dwc_otg_set_##_otg_attr_name_ (otg_dev->core_if, val); \ + return count; \ +} + +#elif defined(PLATFORM_INTERFACE) +#include "dwc_otg_dbg.h" +#define DWC_OTG_DEVICE_ATTR_REG_SHOW(_otg_attr_name_,_string_) \ +static ssize_t _otg_attr_name_##_show (struct device *_dev, struct device_attribute *attr, char *buf) \ +{ \ + struct platform_device *platform_dev = container_of(_dev, struct platform_device, dev); \ + dwc_otg_device_t *otg_dev = platform_get_drvdata(platform_dev); \ + uint32_t val; \ + DWC_PRINTF("%s(%p) -> platform_dev %p, otg_dev %p\n", \ + __func__, _dev, platform_dev, otg_dev); \ + val = dwc_otg_get_##_otg_attr_name_ (otg_dev->core_if); \ + return sprintf (buf, "%s = 0x%08x\n", _string_, val); \ +} +#define DWC_OTG_DEVICE_ATTR_REG_STORE(_otg_attr_name_,_string_) \ +static ssize_t _otg_attr_name_##_store (struct device *_dev, struct device_attribute *attr, \ + const char *buf, size_t count) \ +{ \ + struct platform_device *platform_dev = container_of(_dev, struct platform_device, dev); \ + dwc_otg_device_t *otg_dev = platform_get_drvdata(platform_dev); \ + uint32_t val = simple_strtoul(buf, NULL, 16); \ + dwc_otg_set_##_otg_attr_name_ (otg_dev->core_if, val); \ + return count; \ +} + +#endif + +#define DWC_OTG_DEVICE_ATTR_BITFIELD_RW(_otg_attr_name_,_string_) \ +DWC_OTG_DEVICE_ATTR_BITFIELD_SHOW(_otg_attr_name_,_string_) \ +DWC_OTG_DEVICE_ATTR_BITFIELD_STORE(_otg_attr_name_,_string_) \ +DEVICE_ATTR(_otg_attr_name_,0644,_otg_attr_name_##_show,_otg_attr_name_##_store); + +#define DWC_OTG_DEVICE_ATTR_BITFIELD_RO(_otg_attr_name_,_string_) \ +DWC_OTG_DEVICE_ATTR_BITFIELD_SHOW(_otg_attr_name_,_string_) \ +DEVICE_ATTR(_otg_attr_name_,0444,_otg_attr_name_##_show,NULL); + +#define DWC_OTG_DEVICE_ATTR_REG32_RW(_otg_attr_name_,_addr_,_string_) \ +DWC_OTG_DEVICE_ATTR_REG_SHOW(_otg_attr_name_,_string_) \ +DWC_OTG_DEVICE_ATTR_REG_STORE(_otg_attr_name_,_string_) \ +DEVICE_ATTR(_otg_attr_name_,0644,_otg_attr_name_##_show,_otg_attr_name_##_store); + +#define DWC_OTG_DEVICE_ATTR_REG32_RO(_otg_attr_name_,_addr_,_string_) \ +DWC_OTG_DEVICE_ATTR_REG_SHOW(_otg_attr_name_,_string_) \ +DEVICE_ATTR(_otg_attr_name_,0444,_otg_attr_name_##_show,NULL); + +/** @name Functions for Show/Store of Attributes */ +/**@{*/ + +/** + * Helper function returning the otg_device structure of the given device + */ +static dwc_otg_device_t *dwc_otg_drvdev(struct device *_dev) +{ + dwc_otg_device_t *otg_dev; + DWC_OTG_GETDRVDEV(otg_dev, _dev); + return otg_dev; +} + +/** + * Show the register offset of the Register Access. + */ +static ssize_t regoffset_show(struct device *_dev, + struct device_attribute *attr, char *buf) +{ + dwc_otg_device_t *otg_dev = dwc_otg_drvdev(_dev); + return snprintf(buf, sizeof("0xFFFFFFFF\n") + 1, "0x%08x\n", + otg_dev->os_dep.reg_offset); +} + +/** + * Set the register offset for the next Register Access Read/Write + */ +static ssize_t regoffset_store(struct device *_dev, + struct device_attribute *attr, + const char *buf, size_t count) +{ + dwc_otg_device_t *otg_dev = dwc_otg_drvdev(_dev); + uint32_t offset = simple_strtoul(buf, NULL, 16); +#if defined(LM_INTERFACE) || defined(PLATFORM_INTERFACE) + if (offset < SZ_256K) { +#elif defined(PCI_INTERFACE) + if (offset < 0x00040000) { +#endif + otg_dev->os_dep.reg_offset = offset; + } else { + dev_err(_dev, "invalid offset\n"); + } + + return count; +} + +DEVICE_ATTR(regoffset, S_IRUGO | S_IWUSR, regoffset_show, regoffset_store); + +/** + * Show the value of the register at the offset in the reg_offset + * attribute. + */ +static ssize_t regvalue_show(struct device *_dev, + struct device_attribute *attr, char *buf) +{ + dwc_otg_device_t *otg_dev = dwc_otg_drvdev(_dev); + uint32_t val; + volatile uint32_t *addr; + + if (otg_dev->os_dep.reg_offset != 0xFFFFFFFF && 0 != otg_dev->os_dep.base) { + /* Calculate the address */ + addr = (uint32_t *) (otg_dev->os_dep.reg_offset + + (uint8_t *) otg_dev->os_dep.base); + val = DWC_READ_REG32(addr); + return snprintf(buf, + sizeof("Reg@0xFFFFFFFF = 0xFFFFFFFF\n") + 1, + "Reg@0x%06x = 0x%08x\n", otg_dev->os_dep.reg_offset, + val); + } else { + dev_err(_dev, "Invalid offset (0x%0x)\n", otg_dev->os_dep.reg_offset); + return sprintf(buf, "invalid offset\n"); + } +} + +/** + * Store the value in the register at the offset in the reg_offset + * attribute. + * + */ +static ssize_t regvalue_store(struct device *_dev, + struct device_attribute *attr, + const char *buf, size_t count) +{ + dwc_otg_device_t *otg_dev = dwc_otg_drvdev(_dev); + volatile uint32_t *addr; + uint32_t val = simple_strtoul(buf, NULL, 16); + //dev_dbg(_dev, "Offset=0x%08x Val=0x%08x\n", otg_dev->reg_offset, val); + if (otg_dev->os_dep.reg_offset != 0xFFFFFFFF && 0 != otg_dev->os_dep.base) { + /* Calculate the address */ + addr = (uint32_t *) (otg_dev->os_dep.reg_offset + + (uint8_t *) otg_dev->os_dep.base); + DWC_WRITE_REG32(addr, val); + } else { + dev_err(_dev, "Invalid Register Offset (0x%08x)\n", + otg_dev->os_dep.reg_offset); + } + return count; +} + +DEVICE_ATTR(regvalue, S_IRUGO | S_IWUSR, regvalue_show, regvalue_store); + +/* + * Attributes + */ +DWC_OTG_DEVICE_ATTR_BITFIELD_RO(mode, "Mode"); +DWC_OTG_DEVICE_ATTR_BITFIELD_RW(hnpcapable, "HNPCapable"); +DWC_OTG_DEVICE_ATTR_BITFIELD_RW(srpcapable, "SRPCapable"); +DWC_OTG_DEVICE_ATTR_BITFIELD_RW(hsic_connect, "HSIC Connect"); +DWC_OTG_DEVICE_ATTR_BITFIELD_RW(inv_sel_hsic, "Invert Select HSIC"); + +//DWC_OTG_DEVICE_ATTR_BITFIELD_RW(buspower,&(otg_dev->core_if->core_global_regs->gotgctl),(1<<8),8,"Mode"); +//DWC_OTG_DEVICE_ATTR_BITFIELD_RW(bussuspend,&(otg_dev->core_if->core_global_regs->gotgctl),(1<<8),8,"Mode"); +DWC_OTG_DEVICE_ATTR_BITFIELD_RO(busconnected, "Bus Connected"); + +DWC_OTG_DEVICE_ATTR_REG32_RW(gotgctl, 0, "GOTGCTL"); +DWC_OTG_DEVICE_ATTR_REG32_RW(gusbcfg, + &(otg_dev->core_if->core_global_regs->gusbcfg), + "GUSBCFG"); +DWC_OTG_DEVICE_ATTR_REG32_RW(grxfsiz, + &(otg_dev->core_if->core_global_regs->grxfsiz), + "GRXFSIZ"); +DWC_OTG_DEVICE_ATTR_REG32_RW(gnptxfsiz, + &(otg_dev->core_if->core_global_regs->gnptxfsiz), + "GNPTXFSIZ"); +DWC_OTG_DEVICE_ATTR_REG32_RW(gpvndctl, + &(otg_dev->core_if->core_global_regs->gpvndctl), + "GPVNDCTL"); +DWC_OTG_DEVICE_ATTR_REG32_RW(ggpio, + &(otg_dev->core_if->core_global_regs->ggpio), + "GGPIO"); +DWC_OTG_DEVICE_ATTR_REG32_RW(guid, &(otg_dev->core_if->core_global_regs->guid), + "GUID"); +DWC_OTG_DEVICE_ATTR_REG32_RO(gsnpsid, + &(otg_dev->core_if->core_global_regs->gsnpsid), + "GSNPSID"); +DWC_OTG_DEVICE_ATTR_BITFIELD_RW(devspeed, "Device Speed"); +DWC_OTG_DEVICE_ATTR_BITFIELD_RO(enumspeed, "Device Enumeration Speed"); + +DWC_OTG_DEVICE_ATTR_REG32_RO(hptxfsiz, + &(otg_dev->core_if->core_global_regs->hptxfsiz), + "HPTXFSIZ"); +DWC_OTG_DEVICE_ATTR_REG32_RW(hprt0, otg_dev->core_if->host_if->hprt0, "HPRT0"); + +/** + * @todo Add code to initiate the HNP. + */ +/** + * Show the HNP status bit + */ +static ssize_t hnp_show(struct device *_dev, + struct device_attribute *attr, char *buf) +{ + dwc_otg_device_t *otg_dev = dwc_otg_drvdev(_dev); + return sprintf(buf, "HstNegScs = 0x%x\n", + dwc_otg_get_hnpstatus(otg_dev->core_if)); +} + +/** + * Set the HNP Request bit + */ +static ssize_t hnp_store(struct device *_dev, + struct device_attribute *attr, + const char *buf, size_t count) +{ + dwc_otg_device_t *otg_dev = dwc_otg_drvdev(_dev); + uint32_t in = simple_strtoul(buf, NULL, 16); + dwc_otg_set_hnpreq(otg_dev->core_if, in); + return count; +} + +DEVICE_ATTR(hnp, 0644, hnp_show, hnp_store); + +/** + * @todo Add code to initiate the SRP. + */ +/** + * Show the SRP status bit + */ +static ssize_t srp_show(struct device *_dev, + struct device_attribute *attr, char *buf) +{ +#ifndef DWC_HOST_ONLY + dwc_otg_device_t *otg_dev = dwc_otg_drvdev(_dev); + return sprintf(buf, "SesReqScs = 0x%x\n", + dwc_otg_get_srpstatus(otg_dev->core_if)); +#else + return sprintf(buf, "Host Only Mode!\n"); +#endif +} + +/** + * Set the SRP Request bit + */ +static ssize_t srp_store(struct device *_dev, + struct device_attribute *attr, + const char *buf, size_t count) +{ +#ifndef DWC_HOST_ONLY + dwc_otg_device_t *otg_dev = dwc_otg_drvdev(_dev); + dwc_otg_pcd_initiate_srp(otg_dev->pcd); +#endif + return count; +} + +DEVICE_ATTR(srp, 0644, srp_show, srp_store); + +/** + * @todo Need to do more for power on/off? + */ +/** + * Show the Bus Power status + */ +static ssize_t buspower_show(struct device *_dev, + struct device_attribute *attr, char *buf) +{ + dwc_otg_device_t *otg_dev = dwc_otg_drvdev(_dev); + return sprintf(buf, "Bus Power = 0x%x\n", + dwc_otg_get_prtpower(otg_dev->core_if)); +} + +/** + * Set the Bus Power status + */ +static ssize_t buspower_store(struct device *_dev, + struct device_attribute *attr, + const char *buf, size_t count) +{ + dwc_otg_device_t *otg_dev = dwc_otg_drvdev(_dev); + uint32_t on = simple_strtoul(buf, NULL, 16); + dwc_otg_set_prtpower(otg_dev->core_if, on); + return count; +} + +DEVICE_ATTR(buspower, 0644, buspower_show, buspower_store); + +/** + * @todo Need to do more for suspend? + */ +/** + * Show the Bus Suspend status + */ +static ssize_t bussuspend_show(struct device *_dev, + struct device_attribute *attr, char *buf) +{ + dwc_otg_device_t *otg_dev = dwc_otg_drvdev(_dev); + return sprintf(buf, "Bus Suspend = 0x%x\n", + dwc_otg_get_prtsuspend(otg_dev->core_if)); +} + +/** + * Set the Bus Suspend status + */ +static ssize_t bussuspend_store(struct device *_dev, + struct device_attribute *attr, + const char *buf, size_t count) +{ + dwc_otg_device_t *otg_dev = dwc_otg_drvdev(_dev); + uint32_t in = simple_strtoul(buf, NULL, 16); + dwc_otg_set_prtsuspend(otg_dev->core_if, in); + return count; +} + +DEVICE_ATTR(bussuspend, 0644, bussuspend_show, bussuspend_store); + +/** + * Show the Mode Change Ready Timer status + */ +static ssize_t mode_ch_tim_en_show(struct device *_dev, + struct device_attribute *attr, char *buf) +{ + dwc_otg_device_t *otg_dev = dwc_otg_drvdev(_dev); + return sprintf(buf, "Mode Change Ready Timer Enable = 0x%x\n", + dwc_otg_get_mode_ch_tim(otg_dev->core_if)); +} + +/** + * Set the Mode Change Ready Timer status + */ +static ssize_t mode_ch_tim_en_store(struct device *_dev, + struct device_attribute *attr, + const char *buf, size_t count) +{ + dwc_otg_device_t *otg_dev = dwc_otg_drvdev(_dev); + uint32_t in = simple_strtoul(buf, NULL, 16); + dwc_otg_set_mode_ch_tim(otg_dev->core_if, in); + return count; +} + +DEVICE_ATTR(mode_ch_tim_en, 0644, mode_ch_tim_en_show, mode_ch_tim_en_store); + +/** + * Show the value of HFIR Frame Interval bitfield + */ +static ssize_t fr_interval_show(struct device *_dev, + struct device_attribute *attr, char *buf) +{ + dwc_otg_device_t *otg_dev = dwc_otg_drvdev(_dev); + return sprintf(buf, "Frame Interval = 0x%x\n", + dwc_otg_get_fr_interval(otg_dev->core_if)); +} + +/** + * Set the HFIR Frame Interval value + */ +static ssize_t fr_interval_store(struct device *_dev, + struct device_attribute *attr, + const char *buf, size_t count) +{ + dwc_otg_device_t *otg_dev = dwc_otg_drvdev(_dev); + uint32_t in = simple_strtoul(buf, NULL, 10); + dwc_otg_set_fr_interval(otg_dev->core_if, in); + return count; +} + +DEVICE_ATTR(fr_interval, 0644, fr_interval_show, fr_interval_store); + +/** + * Show the status of Remote Wakeup. + */ +static ssize_t remote_wakeup_show(struct device *_dev, + struct device_attribute *attr, char *buf) +{ +#ifndef DWC_HOST_ONLY + dwc_otg_device_t *otg_dev = dwc_otg_drvdev(_dev); + + return sprintf(buf, + "Remote Wakeup Sig = %d Enabled = %d LPM Remote Wakeup = %d\n", + dwc_otg_get_remotewakesig(otg_dev->core_if), + dwc_otg_pcd_get_rmwkup_enable(otg_dev->pcd), + dwc_otg_get_lpm_remotewakeenabled(otg_dev->core_if)); +#else + return sprintf(buf, "Host Only Mode!\n"); +#endif /* DWC_HOST_ONLY */ +} + +/** + * Initiate a remote wakeup of the host. The Device control register + * Remote Wakeup Signal bit is written if the PCD Remote wakeup enable + * flag is set. + * + */ +static ssize_t remote_wakeup_store(struct device *_dev, + struct device_attribute *attr, + const char *buf, size_t count) +{ +#ifndef DWC_HOST_ONLY + dwc_otg_device_t *otg_dev = dwc_otg_drvdev(_dev); + uint32_t val = simple_strtoul(buf, NULL, 16); + + if (val & 1) { + dwc_otg_pcd_remote_wakeup(otg_dev->pcd, 1); + } else { + dwc_otg_pcd_remote_wakeup(otg_dev->pcd, 0); + } +#endif /* DWC_HOST_ONLY */ + return count; +} + +DEVICE_ATTR(remote_wakeup, S_IRUGO | S_IWUSR, remote_wakeup_show, + remote_wakeup_store); + +/** + * Show the whether core is hibernated or not. + */ +static ssize_t rem_wakeup_pwrdn_show(struct device *_dev, + struct device_attribute *attr, char *buf) +{ +#ifndef DWC_HOST_ONLY + dwc_otg_device_t *otg_dev = dwc_otg_drvdev(_dev); + + if (dwc_otg_get_core_state(otg_dev->core_if)) { + DWC_PRINTF("Core is in hibernation\n"); + } else { + DWC_PRINTF("Core is not in hibernation\n"); + } +#endif /* DWC_HOST_ONLY */ + return 0; +} + +extern int dwc_otg_device_hibernation_restore(dwc_otg_core_if_t * core_if, + int rem_wakeup, int reset); + +/** + * Initiate a remote wakeup of the device to exit from hibernation. + */ +static ssize_t rem_wakeup_pwrdn_store(struct device *_dev, + struct device_attribute *attr, + const char *buf, size_t count) +{ +#ifndef DWC_HOST_ONLY + dwc_otg_device_t *otg_dev = dwc_otg_drvdev(_dev); + dwc_otg_device_hibernation_restore(otg_dev->core_if, 1, 0); +#endif + return count; +} + +DEVICE_ATTR(rem_wakeup_pwrdn, S_IRUGO | S_IWUSR, rem_wakeup_pwrdn_show, + rem_wakeup_pwrdn_store); + +static ssize_t disconnect_us(struct device *_dev, + struct device_attribute *attr, + const char *buf, size_t count) +{ + +#ifndef DWC_HOST_ONLY + dwc_otg_device_t *otg_dev = dwc_otg_drvdev(_dev); + uint32_t val = simple_strtoul(buf, NULL, 16); + DWC_PRINTF("The Passed value is %04x\n", val); + + dwc_otg_pcd_disconnect_us(otg_dev->pcd, 50); + +#endif /* DWC_HOST_ONLY */ + return count; +} + +DEVICE_ATTR(disconnect_us, S_IWUSR, 0, disconnect_us); + +/** + * Dump global registers and either host or device registers (depending on the + * current mode of the core). + */ +static ssize_t regdump_show(struct device *_dev, + struct device_attribute *attr, char *buf) +{ + dwc_otg_device_t *otg_dev = dwc_otg_drvdev(_dev); + + dwc_otg_dump_global_registers(otg_dev->core_if); + if (dwc_otg_is_host_mode(otg_dev->core_if)) { + dwc_otg_dump_host_registers(otg_dev->core_if); + } else { + dwc_otg_dump_dev_registers(otg_dev->core_if); + + } + return sprintf(buf, "Register Dump\n"); +} + +DEVICE_ATTR(regdump, S_IRUGO, regdump_show, 0); + +/** + * Dump global registers and either host or device registers (depending on the + * current mode of the core). + */ +static ssize_t spramdump_show(struct device *_dev, + struct device_attribute *attr, char *buf) +{ + dwc_otg_device_t *otg_dev = dwc_otg_drvdev(_dev); + + //dwc_otg_dump_spram(otg_dev->core_if); + + return sprintf(buf, "SPRAM Dump\n"); +} + +DEVICE_ATTR(spramdump, S_IRUGO, spramdump_show, 0); + +/** + * Dump the current hcd state. + */ +static ssize_t hcddump_show(struct device *_dev, + struct device_attribute *attr, char *buf) +{ +#ifndef DWC_DEVICE_ONLY + dwc_otg_device_t *otg_dev = dwc_otg_drvdev(_dev); + dwc_otg_hcd_dump_state(otg_dev->hcd); +#endif /* DWC_DEVICE_ONLY */ + return sprintf(buf, "HCD Dump\n"); +} + +DEVICE_ATTR(hcddump, S_IRUGO, hcddump_show, 0); + +/** + * Dump the average frame remaining at SOF. This can be used to + * determine average interrupt latency. Frame remaining is also shown for + * start transfer and two additional sample points. + */ +static ssize_t hcd_frrem_show(struct device *_dev, + struct device_attribute *attr, char *buf) +{ +#ifndef DWC_DEVICE_ONLY + dwc_otg_device_t *otg_dev = dwc_otg_drvdev(_dev); + + dwc_otg_hcd_dump_frrem(otg_dev->hcd); +#endif /* DWC_DEVICE_ONLY */ + return sprintf(buf, "HCD Dump Frame Remaining\n"); +} + +DEVICE_ATTR(hcd_frrem, S_IRUGO, hcd_frrem_show, 0); + +/** + * Displays the time required to read the GNPTXFSIZ register many times (the + * output shows the number of times the register is read). + */ +#define RW_REG_COUNT 10000000 +#define MSEC_PER_JIFFIE 1000/HZ +static ssize_t rd_reg_test_show(struct device *_dev, + struct device_attribute *attr, char *buf) +{ + dwc_otg_device_t *otg_dev = dwc_otg_drvdev(_dev); + int i; + int time; + int start_jiffies; + + printk("HZ %d, MSEC_PER_JIFFIE %d, loops_per_jiffy %lu\n", + HZ, MSEC_PER_JIFFIE, loops_per_jiffy); + start_jiffies = jiffies; + for (i = 0; i < RW_REG_COUNT; i++) { + dwc_otg_get_gnptxfsiz(otg_dev->core_if); + } + time = jiffies - start_jiffies; + return sprintf(buf, + "Time to read GNPTXFSIZ reg %d times: %d msecs (%d jiffies)\n", + RW_REG_COUNT, time * MSEC_PER_JIFFIE, time); +} + +DEVICE_ATTR(rd_reg_test, S_IRUGO, rd_reg_test_show, 0); + +/** + * Displays the time required to write the GNPTXFSIZ register many times (the + * output shows the number of times the register is written). + */ +static ssize_t wr_reg_test_show(struct device *_dev, + struct device_attribute *attr, char *buf) +{ + dwc_otg_device_t *otg_dev = dwc_otg_drvdev(_dev); + uint32_t reg_val; + int i; + int time; + int start_jiffies; + + printk("HZ %d, MSEC_PER_JIFFIE %d, loops_per_jiffy %lu\n", + HZ, MSEC_PER_JIFFIE, loops_per_jiffy); + reg_val = dwc_otg_get_gnptxfsiz(otg_dev->core_if); + start_jiffies = jiffies; + for (i = 0; i < RW_REG_COUNT; i++) { + dwc_otg_set_gnptxfsiz(otg_dev->core_if, reg_val); + } + time = jiffies - start_jiffies; + return sprintf(buf, + "Time to write GNPTXFSIZ reg %d times: %d msecs (%d jiffies)\n", + RW_REG_COUNT, time * MSEC_PER_JIFFIE, time); +} + +DEVICE_ATTR(wr_reg_test, S_IRUGO, wr_reg_test_show, 0); + +#ifdef CONFIG_USB_DWC_OTG_LPM + +/** +* Show the lpm_response attribute. +*/ +static ssize_t lpmresp_show(struct device *_dev, + struct device_attribute *attr, char *buf) +{ + dwc_otg_device_t *otg_dev = dwc_otg_drvdev(_dev); + + if (!dwc_otg_get_param_lpm_enable(otg_dev->core_if)) + return sprintf(buf, "** LPM is DISABLED **\n"); + + if (!dwc_otg_is_device_mode(otg_dev->core_if)) { + return sprintf(buf, "** Current mode is not device mode\n"); + } + return sprintf(buf, "lpm_response = %d\n", + dwc_otg_get_lpmresponse(otg_dev->core_if)); +} + +/** +* Store the lpm_response attribute. +*/ +static ssize_t lpmresp_store(struct device *_dev, + struct device_attribute *attr, + const char *buf, size_t count) +{ + dwc_otg_device_t *otg_dev = dwc_otg_drvdev(_dev); + uint32_t val = simple_strtoul(buf, NULL, 16); + + if (!dwc_otg_get_param_lpm_enable(otg_dev->core_if)) { + return 0; + } + + if (!dwc_otg_is_device_mode(otg_dev->core_if)) { + return 0; + } + + dwc_otg_set_lpmresponse(otg_dev->core_if, val); + return count; +} + +DEVICE_ATTR(lpm_response, S_IRUGO | S_IWUSR, lpmresp_show, lpmresp_store); + +/** +* Show the sleep_status attribute. +*/ +static ssize_t sleepstatus_show(struct device *_dev, + struct device_attribute *attr, char *buf) +{ + dwc_otg_device_t *otg_dev = dwc_otg_drvdev(_dev); + return sprintf(buf, "Sleep Status = %d\n", + dwc_otg_get_lpm_portsleepstatus(otg_dev->core_if)); +} + +/** + * Store the sleep_status attribure. + */ +static ssize_t sleepstatus_store(struct device *_dev, + struct device_attribute *attr, + const char *buf, size_t count) +{ + dwc_otg_device_t *otg_dev = dwc_otg_drvdev(_dev); + dwc_otg_core_if_t *core_if = otg_dev->core_if; + + if (dwc_otg_get_lpm_portsleepstatus(otg_dev->core_if)) { + if (dwc_otg_is_host_mode(core_if)) { + + DWC_PRINTF("Host initiated resume\n"); + dwc_otg_set_prtresume(otg_dev->core_if, 1); + } + } + + return count; +} + +DEVICE_ATTR(sleep_status, S_IRUGO | S_IWUSR, sleepstatus_show, + sleepstatus_store); + +#endif /* CONFIG_USB_DWC_OTG_LPM_ENABLE */ + +/**@}*/ + +/** + * Create the device files + */ +void dwc_otg_attr_create( +#ifdef LM_INTERFACE + struct lm_device *dev +#elif defined(PCI_INTERFACE) + struct pci_dev *dev +#elif defined(PLATFORM_INTERFACE) + struct platform_device *dev +#endif + ) +{ + int error; + + error = device_create_file(&dev->dev, &dev_attr_regoffset); + error = device_create_file(&dev->dev, &dev_attr_regvalue); + error = device_create_file(&dev->dev, &dev_attr_mode); + error = device_create_file(&dev->dev, &dev_attr_hnpcapable); + error = device_create_file(&dev->dev, &dev_attr_srpcapable); + error = device_create_file(&dev->dev, &dev_attr_hsic_connect); + error = device_create_file(&dev->dev, &dev_attr_inv_sel_hsic); + error = device_create_file(&dev->dev, &dev_attr_hnp); + error = device_create_file(&dev->dev, &dev_attr_srp); + error = device_create_file(&dev->dev, &dev_attr_buspower); + error = device_create_file(&dev->dev, &dev_attr_bussuspend); + error = device_create_file(&dev->dev, &dev_attr_mode_ch_tim_en); + error = device_create_file(&dev->dev, &dev_attr_fr_interval); + error = device_create_file(&dev->dev, &dev_attr_busconnected); + error = device_create_file(&dev->dev, &dev_attr_gotgctl); + error = device_create_file(&dev->dev, &dev_attr_gusbcfg); + error = device_create_file(&dev->dev, &dev_attr_grxfsiz); + error = device_create_file(&dev->dev, &dev_attr_gnptxfsiz); + error = device_create_file(&dev->dev, &dev_attr_gpvndctl); + error = device_create_file(&dev->dev, &dev_attr_ggpio); + error = device_create_file(&dev->dev, &dev_attr_guid); + error = device_create_file(&dev->dev, &dev_attr_gsnpsid); + error = device_create_file(&dev->dev, &dev_attr_devspeed); + error = device_create_file(&dev->dev, &dev_attr_enumspeed); + error = device_create_file(&dev->dev, &dev_attr_hptxfsiz); + error = device_create_file(&dev->dev, &dev_attr_hprt0); + error = device_create_file(&dev->dev, &dev_attr_remote_wakeup); + error = device_create_file(&dev->dev, &dev_attr_rem_wakeup_pwrdn); + error = device_create_file(&dev->dev, &dev_attr_disconnect_us); + error = device_create_file(&dev->dev, &dev_attr_regdump); + error = device_create_file(&dev->dev, &dev_attr_spramdump); + error = device_create_file(&dev->dev, &dev_attr_hcddump); + error = device_create_file(&dev->dev, &dev_attr_hcd_frrem); + error = device_create_file(&dev->dev, &dev_attr_rd_reg_test); + error = device_create_file(&dev->dev, &dev_attr_wr_reg_test); +#ifdef CONFIG_USB_DWC_OTG_LPM + error = device_create_file(&dev->dev, &dev_attr_lpm_response); + error = device_create_file(&dev->dev, &dev_attr_sleep_status); +#endif +} + +/** + * Remove the device files + */ +void dwc_otg_attr_remove( +#ifdef LM_INTERFACE + struct lm_device *dev +#elif defined(PCI_INTERFACE) + struct pci_dev *dev +#elif defined(PLATFORM_INTERFACE) + struct platform_device *dev +#endif + ) +{ + device_remove_file(&dev->dev, &dev_attr_regoffset); + device_remove_file(&dev->dev, &dev_attr_regvalue); + device_remove_file(&dev->dev, &dev_attr_mode); + device_remove_file(&dev->dev, &dev_attr_hnpcapable); + device_remove_file(&dev->dev, &dev_attr_srpcapable); + device_remove_file(&dev->dev, &dev_attr_hsic_connect); + device_remove_file(&dev->dev, &dev_attr_inv_sel_hsic); + device_remove_file(&dev->dev, &dev_attr_hnp); + device_remove_file(&dev->dev, &dev_attr_srp); + device_remove_file(&dev->dev, &dev_attr_buspower); + device_remove_file(&dev->dev, &dev_attr_bussuspend); + device_remove_file(&dev->dev, &dev_attr_mode_ch_tim_en); + device_remove_file(&dev->dev, &dev_attr_fr_interval); + device_remove_file(&dev->dev, &dev_attr_busconnected); + device_remove_file(&dev->dev, &dev_attr_gotgctl); + device_remove_file(&dev->dev, &dev_attr_gusbcfg); + device_remove_file(&dev->dev, &dev_attr_grxfsiz); + device_remove_file(&dev->dev, &dev_attr_gnptxfsiz); + device_remove_file(&dev->dev, &dev_attr_gpvndctl); + device_remove_file(&dev->dev, &dev_attr_ggpio); + device_remove_file(&dev->dev, &dev_attr_guid); + device_remove_file(&dev->dev, &dev_attr_gsnpsid); + device_remove_file(&dev->dev, &dev_attr_devspeed); + device_remove_file(&dev->dev, &dev_attr_enumspeed); + device_remove_file(&dev->dev, &dev_attr_hptxfsiz); + device_remove_file(&dev->dev, &dev_attr_hprt0); + device_remove_file(&dev->dev, &dev_attr_remote_wakeup); + device_remove_file(&dev->dev, &dev_attr_rem_wakeup_pwrdn); + device_remove_file(&dev->dev, &dev_attr_disconnect_us); + device_remove_file(&dev->dev, &dev_attr_regdump); + device_remove_file(&dev->dev, &dev_attr_spramdump); + device_remove_file(&dev->dev, &dev_attr_hcddump); + device_remove_file(&dev->dev, &dev_attr_hcd_frrem); + device_remove_file(&dev->dev, &dev_attr_rd_reg_test); + device_remove_file(&dev->dev, &dev_attr_wr_reg_test); +#ifdef CONFIG_USB_DWC_OTG_LPM + device_remove_file(&dev->dev, &dev_attr_lpm_response); + device_remove_file(&dev->dev, &dev_attr_sleep_status); +#endif +} --- linux-raspi2-4.2.0.orig/drivers/usb/host/dwc_otg/dwc_otg_attr.h +++ linux-raspi2-4.2.0/drivers/usb/host/dwc_otg/dwc_otg_attr.h @@ -0,0 +1,89 @@ +/* ========================================================================== + * $File: //dwh/usb_iip/dev/software/otg/linux/drivers/dwc_otg_attr.h $ + * $Revision: #13 $ + * $Date: 2010/06/21 $ + * $Change: 1532021 $ + * + * Synopsys HS OTG Linux Software Driver and documentation (hereinafter, + * "Software") is an Unsupported proprietary work of Synopsys, Inc. unless + * otherwise expressly agreed to in writing between Synopsys and you. + * + * The Software IS NOT an item of Licensed Software or Licensed Product under + * any End User Software License Agreement or Agreement for Licensed Product + * with Synopsys or any supplement thereto. You are permitted to use and + * redistribute this Software in source and binary forms, with or without + * modification, provided that redistributions of source code must retain this + * notice. You may not view, use, disclose, copy or distribute this file or + * any information contained herein except pursuant to this license grant from + * Synopsys. If you do not agree with this notice, including the disclaimer + * below, then you are not authorized to use the Software. + * + * THIS SOFTWARE IS BEING DISTRIBUTED BY SYNOPSYS SOLELY ON AN "AS IS" BASIS + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE HEREBY DISCLAIMED. IN NO EVENT SHALL SYNOPSYS BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH + * DAMAGE. + * ========================================================================== */ + +#if !defined(__DWC_OTG_ATTR_H__) +#define __DWC_OTG_ATTR_H__ + +/** @file + * This file contains the interface to the Linux device attributes. + */ +extern struct device_attribute dev_attr_regoffset; +extern struct device_attribute dev_attr_regvalue; + +extern struct device_attribute dev_attr_mode; +extern struct device_attribute dev_attr_hnpcapable; +extern struct device_attribute dev_attr_srpcapable; +extern struct device_attribute dev_attr_hnp; +extern struct device_attribute dev_attr_srp; +extern struct device_attribute dev_attr_buspower; +extern struct device_attribute dev_attr_bussuspend; +extern struct device_attribute dev_attr_mode_ch_tim_en; +extern struct device_attribute dev_attr_fr_interval; +extern struct device_attribute dev_attr_busconnected; +extern struct device_attribute dev_attr_gotgctl; +extern struct device_attribute dev_attr_gusbcfg; +extern struct device_attribute dev_attr_grxfsiz; +extern struct device_attribute dev_attr_gnptxfsiz; +extern struct device_attribute dev_attr_gpvndctl; +extern struct device_attribute dev_attr_ggpio; +extern struct device_attribute dev_attr_guid; +extern struct device_attribute dev_attr_gsnpsid; +extern struct device_attribute dev_attr_devspeed; +extern struct device_attribute dev_attr_enumspeed; +extern struct device_attribute dev_attr_hptxfsiz; +extern struct device_attribute dev_attr_hprt0; +#ifdef CONFIG_USB_DWC_OTG_LPM +extern struct device_attribute dev_attr_lpm_response; +extern struct device_attribute devi_attr_sleep_status; +#endif + +void dwc_otg_attr_create( +#ifdef LM_INTERFACE + struct lm_device *dev +#elif defined(PCI_INTERFACE) + struct pci_dev *dev +#elif defined(PLATFORM_INTERFACE) + struct platform_device *dev +#endif + ); + +void dwc_otg_attr_remove( +#ifdef LM_INTERFACE + struct lm_device *dev +#elif defined(PCI_INTERFACE) + struct pci_dev *dev +#elif defined(PLATFORM_INTERFACE) + struct platform_device *dev +#endif + ); +#endif --- linux-raspi2-4.2.0.orig/drivers/usb/host/dwc_otg/dwc_otg_cfi.c +++ linux-raspi2-4.2.0/drivers/usb/host/dwc_otg/dwc_otg_cfi.c @@ -0,0 +1,1876 @@ +/* ========================================================================== + * Synopsys HS OTG Linux Software Driver and documentation (hereinafter, + * "Software") is an Unsupported proprietary work of Synopsys, Inc. unless + * otherwise expressly agreed to in writing between Synopsys and you. + * + * The Software IS NOT an item of Licensed Software or Licensed Product under + * any End User Software License Agreement or Agreement for Licensed Product + * with Synopsys or any supplement thereto. You are permitted to use and + * redistribute this Software in source and binary forms, with or without + * modification, provided that redistributions of source code must retain this + * notice. You may not view, use, disclose, copy or distribute this file or + * any information contained herein except pursuant to this license grant from + * Synopsys. If you do not agree with this notice, including the disclaimer + * below, then you are not authorized to use the Software. + * + * THIS SOFTWARE IS BEING DISTRIBUTED BY SYNOPSYS SOLELY ON AN "AS IS" BASIS + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE HEREBY DISCLAIMED. IN NO EVENT SHALL SYNOPSYS BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH + * DAMAGE. + * ========================================================================== */ + +/** @file + * + * This file contains the most of the CFI(Core Feature Interface) + * implementation for the OTG. + */ + +#ifdef DWC_UTE_CFI + +#include "dwc_otg_pcd.h" +#include "dwc_otg_cfi.h" + +/** This definition should actually migrate to the Portability Library */ +#define DWC_CONSTANT_CPU_TO_LE16(x) (x) + +extern dwc_otg_pcd_ep_t *get_ep_by_addr(dwc_otg_pcd_t * pcd, u16 wIndex); + +static int cfi_core_features_buf(uint8_t * buf, uint16_t buflen); +static int cfi_get_feature_value(uint8_t * buf, uint16_t buflen, + struct dwc_otg_pcd *pcd, + struct cfi_usb_ctrlrequest *ctrl_req); +static int cfi_set_feature_value(struct dwc_otg_pcd *pcd); +static int cfi_ep_get_sg_val(uint8_t * buf, struct dwc_otg_pcd *pcd, + struct cfi_usb_ctrlrequest *req); +static int cfi_ep_get_concat_val(uint8_t * buf, struct dwc_otg_pcd *pcd, + struct cfi_usb_ctrlrequest *req); +static int cfi_ep_get_align_val(uint8_t * buf, struct dwc_otg_pcd *pcd, + struct cfi_usb_ctrlrequest *req); +static int cfi_preproc_reset(struct dwc_otg_pcd *pcd, + struct cfi_usb_ctrlrequest *req); +static void cfi_free_ep_bs_dyn_data(cfi_ep_t * cfiep); + +static uint16_t get_dfifo_size(dwc_otg_core_if_t * core_if); +static int32_t get_rxfifo_size(dwc_otg_core_if_t * core_if, uint16_t wValue); +static int32_t get_txfifo_size(struct dwc_otg_pcd *pcd, uint16_t wValue); + +static uint8_t resize_fifos(dwc_otg_core_if_t * core_if); + +/** This is the header of the all features descriptor */ +static cfi_all_features_header_t all_props_desc_header = { + .wVersion = DWC_CONSTANT_CPU_TO_LE16(0x100), + .wCoreID = DWC_CONSTANT_CPU_TO_LE16(CFI_CORE_ID_OTG), + .wNumFeatures = DWC_CONSTANT_CPU_TO_LE16(9), +}; + +/** This is an array of statically allocated feature descriptors */ +static cfi_feature_desc_header_t prop_descs[] = { + + /* FT_ID_DMA_MODE */ + { + .wFeatureID = DWC_CONSTANT_CPU_TO_LE16(FT_ID_DMA_MODE), + .bmAttributes = CFI_FEATURE_ATTR_RW, + .wDataLength = DWC_CONSTANT_CPU_TO_LE16(1), + }, + + /* FT_ID_DMA_BUFFER_SETUP */ + { + .wFeatureID = DWC_CONSTANT_CPU_TO_LE16(FT_ID_DMA_BUFFER_SETUP), + .bmAttributes = CFI_FEATURE_ATTR_RW, + .wDataLength = DWC_CONSTANT_CPU_TO_LE16(6), + }, + + /* FT_ID_DMA_BUFF_ALIGN */ + { + .wFeatureID = DWC_CONSTANT_CPU_TO_LE16(FT_ID_DMA_BUFF_ALIGN), + .bmAttributes = CFI_FEATURE_ATTR_RW, + .wDataLength = DWC_CONSTANT_CPU_TO_LE16(2), + }, + + /* FT_ID_DMA_CONCAT_SETUP */ + { + .wFeatureID = DWC_CONSTANT_CPU_TO_LE16(FT_ID_DMA_CONCAT_SETUP), + .bmAttributes = CFI_FEATURE_ATTR_RW, + //.wDataLength = DWC_CONSTANT_CPU_TO_LE16(6), + }, + + /* FT_ID_DMA_CIRCULAR */ + { + .wFeatureID = DWC_CONSTANT_CPU_TO_LE16(FT_ID_DMA_CIRCULAR), + .bmAttributes = CFI_FEATURE_ATTR_RW, + .wDataLength = DWC_CONSTANT_CPU_TO_LE16(6), + }, + + /* FT_ID_THRESHOLD_SETUP */ + { + .wFeatureID = DWC_CONSTANT_CPU_TO_LE16(FT_ID_THRESHOLD_SETUP), + .bmAttributes = CFI_FEATURE_ATTR_RW, + .wDataLength = DWC_CONSTANT_CPU_TO_LE16(6), + }, + + /* FT_ID_DFIFO_DEPTH */ + { + .wFeatureID = DWC_CONSTANT_CPU_TO_LE16(FT_ID_DFIFO_DEPTH), + .bmAttributes = CFI_FEATURE_ATTR_RO, + .wDataLength = DWC_CONSTANT_CPU_TO_LE16(2), + }, + + /* FT_ID_TX_FIFO_DEPTH */ + { + .wFeatureID = DWC_CONSTANT_CPU_TO_LE16(FT_ID_TX_FIFO_DEPTH), + .bmAttributes = CFI_FEATURE_ATTR_RW, + .wDataLength = DWC_CONSTANT_CPU_TO_LE16(2), + }, + + /* FT_ID_RX_FIFO_DEPTH */ + { + .wFeatureID = DWC_CONSTANT_CPU_TO_LE16(FT_ID_RX_FIFO_DEPTH), + .bmAttributes = CFI_FEATURE_ATTR_RW, + .wDataLength = DWC_CONSTANT_CPU_TO_LE16(2), + } +}; + +/** The table of feature names */ +cfi_string_t prop_name_table[] = { + {FT_ID_DMA_MODE, "dma_mode"}, + {FT_ID_DMA_BUFFER_SETUP, "buffer_setup"}, + {FT_ID_DMA_BUFF_ALIGN, "buffer_align"}, + {FT_ID_DMA_CONCAT_SETUP, "concat_setup"}, + {FT_ID_DMA_CIRCULAR, "buffer_circular"}, + {FT_ID_THRESHOLD_SETUP, "threshold_setup"}, + {FT_ID_DFIFO_DEPTH, "dfifo_depth"}, + {FT_ID_TX_FIFO_DEPTH, "txfifo_depth"}, + {FT_ID_RX_FIFO_DEPTH, "rxfifo_depth"}, + {} +}; + +/************************************************************************/ + +/** + * Returns the name of the feature by its ID + * or NULL if no featute ID matches. + * + */ +const uint8_t *get_prop_name(uint16_t prop_id, int *len) +{ + cfi_string_t *pstr; + *len = 0; + + for (pstr = prop_name_table; pstr && pstr->s; pstr++) { + if (pstr->id == prop_id) { + *len = DWC_STRLEN(pstr->s); + return pstr->s; + } + } + return NULL; +} + +/** + * This function handles all CFI specific control requests. + * + * Return a negative value to stall the DCE. + */ +int cfi_setup(struct dwc_otg_pcd *pcd, struct cfi_usb_ctrlrequest *ctrl) +{ + int retval = 0; + dwc_otg_pcd_ep_t *ep = NULL; + cfiobject_t *cfi = pcd->cfi; + struct dwc_otg_core_if *coreif = GET_CORE_IF(pcd); + uint16_t wLen = DWC_LE16_TO_CPU(&ctrl->wLength); + uint16_t wValue = DWC_LE16_TO_CPU(&ctrl->wValue); + uint16_t wIndex = DWC_LE16_TO_CPU(&ctrl->wIndex); + uint32_t regaddr = 0; + uint32_t regval = 0; + + /* Save this Control Request in the CFI object. + * The data field will be assigned in the data stage completion CB function. + */ + cfi->ctrl_req = *ctrl; + cfi->ctrl_req.data = NULL; + + cfi->need_gadget_att = 0; + cfi->need_status_in_complete = 0; + + switch (ctrl->bRequest) { + case VEN_CORE_GET_FEATURES: + retval = cfi_core_features_buf(cfi->buf_in.buf, CFI_IN_BUF_LEN); + if (retval >= 0) { + //dump_msg(cfi->buf_in.buf, retval); + ep = &pcd->ep0; + + retval = min((uint16_t) retval, wLen); + /* Transfer this buffer to the host through the EP0-IN EP */ + ep->dwc_ep.dma_addr = cfi->buf_in.addr; + ep->dwc_ep.start_xfer_buff = cfi->buf_in.buf; + ep->dwc_ep.xfer_buff = cfi->buf_in.buf; + ep->dwc_ep.xfer_len = retval; + ep->dwc_ep.xfer_count = 0; + ep->dwc_ep.sent_zlp = 0; + ep->dwc_ep.total_len = ep->dwc_ep.xfer_len; + + pcd->ep0_pending = 1; + dwc_otg_ep0_start_transfer(coreif, &ep->dwc_ep); + } + retval = 0; + break; + + case VEN_CORE_GET_FEATURE: + CFI_INFO("VEN_CORE_GET_FEATURE\n"); + retval = cfi_get_feature_value(cfi->buf_in.buf, CFI_IN_BUF_LEN, + pcd, ctrl); + if (retval >= 0) { + ep = &pcd->ep0; + + retval = min((uint16_t) retval, wLen); + /* Transfer this buffer to the host through the EP0-IN EP */ + ep->dwc_ep.dma_addr = cfi->buf_in.addr; + ep->dwc_ep.start_xfer_buff = cfi->buf_in.buf; + ep->dwc_ep.xfer_buff = cfi->buf_in.buf; + ep->dwc_ep.xfer_len = retval; + ep->dwc_ep.xfer_count = 0; + ep->dwc_ep.sent_zlp = 0; + ep->dwc_ep.total_len = ep->dwc_ep.xfer_len; + + pcd->ep0_pending = 1; + dwc_otg_ep0_start_transfer(coreif, &ep->dwc_ep); + } + CFI_INFO("VEN_CORE_GET_FEATURE=%d\n", retval); + dump_msg(cfi->buf_in.buf, retval); + break; + + case VEN_CORE_SET_FEATURE: + CFI_INFO("VEN_CORE_SET_FEATURE\n"); + /* Set up an XFER to get the data stage of the control request, + * which is the new value of the feature to be modified. + */ + ep = &pcd->ep0; + ep->dwc_ep.is_in = 0; + ep->dwc_ep.dma_addr = cfi->buf_out.addr; + ep->dwc_ep.start_xfer_buff = cfi->buf_out.buf; + ep->dwc_ep.xfer_buff = cfi->buf_out.buf; + ep->dwc_ep.xfer_len = wLen; + ep->dwc_ep.xfer_count = 0; + ep->dwc_ep.sent_zlp = 0; + ep->dwc_ep.total_len = ep->dwc_ep.xfer_len; + + pcd->ep0_pending = 1; + /* Read the control write's data stage */ + dwc_otg_ep0_start_transfer(coreif, &ep->dwc_ep); + retval = 0; + break; + + case VEN_CORE_RESET_FEATURES: + CFI_INFO("VEN_CORE_RESET_FEATURES\n"); + cfi->need_gadget_att = 1; + cfi->need_status_in_complete = 1; + retval = cfi_preproc_reset(pcd, ctrl); + CFI_INFO("VEN_CORE_RESET_FEATURES = (%d)\n", retval); + break; + + case VEN_CORE_ACTIVATE_FEATURES: + CFI_INFO("VEN_CORE_ACTIVATE_FEATURES\n"); + break; + + case VEN_CORE_READ_REGISTER: + CFI_INFO("VEN_CORE_READ_REGISTER\n"); + /* wValue optionally contains the HI WORD of the register offset and + * wIndex contains the LOW WORD of the register offset + */ + if (wValue == 0) { + /* @TODO - MAS - fix the access to the base field */ + regaddr = 0; + //regaddr = (uint32_t) pcd->otg_dev->os_dep.base; + //GET_CORE_IF(pcd)->co + regaddr |= wIndex; + } else { + regaddr = (wValue << 16) | wIndex; + } + + /* Read a 32-bit value of the memory at the regaddr */ + regval = DWC_READ_REG32((uint32_t *) regaddr); + + ep = &pcd->ep0; + dwc_memcpy(cfi->buf_in.buf, ®val, sizeof(uint32_t)); + ep->dwc_ep.is_in = 1; + ep->dwc_ep.dma_addr = cfi->buf_in.addr; + ep->dwc_ep.start_xfer_buff = cfi->buf_in.buf; + ep->dwc_ep.xfer_buff = cfi->buf_in.buf; + ep->dwc_ep.xfer_len = wLen; + ep->dwc_ep.xfer_count = 0; + ep->dwc_ep.sent_zlp = 0; + ep->dwc_ep.total_len = ep->dwc_ep.xfer_len; + + pcd->ep0_pending = 1; + dwc_otg_ep0_start_transfer(coreif, &ep->dwc_ep); + cfi->need_gadget_att = 0; + retval = 0; + break; + + case VEN_CORE_WRITE_REGISTER: + CFI_INFO("VEN_CORE_WRITE_REGISTER\n"); + /* Set up an XFER to get the data stage of the control request, + * which is the new value of the register to be modified. + */ + ep = &pcd->ep0; + ep->dwc_ep.is_in = 0; + ep->dwc_ep.dma_addr = cfi->buf_out.addr; + ep->dwc_ep.start_xfer_buff = cfi->buf_out.buf; + ep->dwc_ep.xfer_buff = cfi->buf_out.buf; + ep->dwc_ep.xfer_len = wLen; + ep->dwc_ep.xfer_count = 0; + ep->dwc_ep.sent_zlp = 0; + ep->dwc_ep.total_len = ep->dwc_ep.xfer_len; + + pcd->ep0_pending = 1; + /* Read the control write's data stage */ + dwc_otg_ep0_start_transfer(coreif, &ep->dwc_ep); + retval = 0; + break; + + default: + retval = -DWC_E_NOT_SUPPORTED; + break; + } + + return retval; +} + +/** + * This function prepares the core features descriptors and copies its + * raw representation into the buffer . + * + * The buffer structure is as follows: + * all_features_header (8 bytes) + * features_#1 (8 bytes + feature name string length) + * features_#2 (8 bytes + feature name string length) + * ..... + * features_#n - where n=the total count of feature descriptors + */ +static int cfi_core_features_buf(uint8_t * buf, uint16_t buflen) +{ + cfi_feature_desc_header_t *prop_hdr = prop_descs; + cfi_feature_desc_header_t *prop; + cfi_all_features_header_t *all_props_hdr = &all_props_desc_header; + cfi_all_features_header_t *tmp; + uint8_t *tmpbuf = buf; + const uint8_t *pname = NULL; + int i, j, namelen = 0, totlen; + + /* Prepare and copy the core features into the buffer */ + CFI_INFO("%s:\n", __func__); + + tmp = (cfi_all_features_header_t *) tmpbuf; + *tmp = *all_props_hdr; + tmpbuf += CFI_ALL_FEATURES_HDR_LEN; + + j = sizeof(prop_descs) / sizeof(cfi_all_features_header_t); + for (i = 0; i < j; i++, prop_hdr++) { + pname = get_prop_name(prop_hdr->wFeatureID, &namelen); + prop = (cfi_feature_desc_header_t *) tmpbuf; + *prop = *prop_hdr; + + prop->bNameLen = namelen; + prop->wLength = + DWC_CONSTANT_CPU_TO_LE16(CFI_FEATURE_DESC_HDR_LEN + + namelen); + + tmpbuf += CFI_FEATURE_DESC_HDR_LEN; + dwc_memcpy(tmpbuf, pname, namelen); + tmpbuf += namelen; + } + + totlen = tmpbuf - buf; + + if (totlen > 0) { + tmp = (cfi_all_features_header_t *) buf; + tmp->wTotalLen = DWC_CONSTANT_CPU_TO_LE16(totlen); + } + + return totlen; +} + +/** + * This function releases all the dynamic memory in the CFI object. + */ +static void cfi_release(cfiobject_t * cfiobj) +{ + cfi_ep_t *cfiep; + dwc_list_link_t *tmp; + + CFI_INFO("%s\n", __func__); + + if (cfiobj->buf_in.buf) { + DWC_DMA_FREE(CFI_IN_BUF_LEN, cfiobj->buf_in.buf, + cfiobj->buf_in.addr); + cfiobj->buf_in.buf = NULL; + } + + if (cfiobj->buf_out.buf) { + DWC_DMA_FREE(CFI_OUT_BUF_LEN, cfiobj->buf_out.buf, + cfiobj->buf_out.addr); + cfiobj->buf_out.buf = NULL; + } + + /* Free the Buffer Setup values for each EP */ + //list_for_each_entry(cfiep, &cfiobj->active_eps, lh) { + DWC_LIST_FOREACH(tmp, &cfiobj->active_eps) { + cfiep = DWC_LIST_ENTRY(tmp, struct cfi_ep, lh); + cfi_free_ep_bs_dyn_data(cfiep); + } +} + +/** + * This function frees the dynamically allocated EP buffer setup data. + */ +static void cfi_free_ep_bs_dyn_data(cfi_ep_t * cfiep) +{ + if (cfiep->bm_sg) { + DWC_FREE(cfiep->bm_sg); + cfiep->bm_sg = NULL; + } + + if (cfiep->bm_align) { + DWC_FREE(cfiep->bm_align); + cfiep->bm_align = NULL; + } + + if (cfiep->bm_concat) { + if (NULL != cfiep->bm_concat->wTxBytes) { + DWC_FREE(cfiep->bm_concat->wTxBytes); + cfiep->bm_concat->wTxBytes = NULL; + } + DWC_FREE(cfiep->bm_concat); + cfiep->bm_concat = NULL; + } +} + +/** + * This function initializes the default values of the features + * for a specific endpoint and should be called only once when + * the EP is enabled first time. + */ +static int cfi_ep_init_defaults(struct dwc_otg_pcd *pcd, cfi_ep_t * cfiep) +{ + int retval = 0; + + cfiep->bm_sg = DWC_ALLOC(sizeof(ddma_sg_buffer_setup_t)); + if (NULL == cfiep->bm_sg) { + CFI_INFO("Failed to allocate memory for SG feature value\n"); + return -DWC_E_NO_MEMORY; + } + dwc_memset(cfiep->bm_sg, 0, sizeof(ddma_sg_buffer_setup_t)); + + /* For the Concatenation feature's default value we do not allocate + * memory for the wTxBytes field - it will be done in the set_feature_value + * request handler. + */ + cfiep->bm_concat = DWC_ALLOC(sizeof(ddma_concat_buffer_setup_t)); + if (NULL == cfiep->bm_concat) { + CFI_INFO + ("Failed to allocate memory for CONCATENATION feature value\n"); + DWC_FREE(cfiep->bm_sg); + return -DWC_E_NO_MEMORY; + } + dwc_memset(cfiep->bm_concat, 0, sizeof(ddma_concat_buffer_setup_t)); + + cfiep->bm_align = DWC_ALLOC(sizeof(ddma_align_buffer_setup_t)); + if (NULL == cfiep->bm_align) { + CFI_INFO + ("Failed to allocate memory for Alignment feature value\n"); + DWC_FREE(cfiep->bm_sg); + DWC_FREE(cfiep->bm_concat); + return -DWC_E_NO_MEMORY; + } + dwc_memset(cfiep->bm_align, 0, sizeof(ddma_align_buffer_setup_t)); + + return retval; +} + +/** + * The callback function that notifies the CFI on the activation of + * an endpoint in the PCD. The following steps are done in this function: + * + * Create a dynamically allocated cfi_ep_t object (a CFI wrapper to the PCD's + * active endpoint) + * Create MAX_DMA_DESCS_PER_EP count DMA Descriptors for the EP + * Set the Buffer Mode to standard + * Initialize the default values for all EP modes (SG, Circular, Concat, Align) + * Add the cfi_ep_t object to the list of active endpoints in the CFI object + */ +static int cfi_ep_enable(struct cfiobject *cfi, struct dwc_otg_pcd *pcd, + struct dwc_otg_pcd_ep *ep) +{ + cfi_ep_t *cfiep; + int retval = -DWC_E_NOT_SUPPORTED; + + CFI_INFO("%s: epname=%s; epnum=0x%02x\n", __func__, + "EP_" /*ep->ep.name */ , ep->desc->bEndpointAddress); + /* MAS - Check whether this endpoint already is in the list */ + cfiep = get_cfi_ep_by_pcd_ep(cfi, ep); + + if (NULL == cfiep) { + /* Allocate a cfi_ep_t object */ + cfiep = DWC_ALLOC(sizeof(cfi_ep_t)); + if (NULL == cfiep) { + CFI_INFO + ("Unable to allocate memory for in function %s\n", + __func__); + return -DWC_E_NO_MEMORY; + } + dwc_memset(cfiep, 0, sizeof(cfi_ep_t)); + + /* Save the dwc_otg_pcd_ep pointer in the cfiep object */ + cfiep->ep = ep; + + /* Allocate the DMA Descriptors chain of MAX_DMA_DESCS_PER_EP count */ + ep->dwc_ep.descs = + DWC_DMA_ALLOC(MAX_DMA_DESCS_PER_EP * + sizeof(dwc_otg_dma_desc_t), + &ep->dwc_ep.descs_dma_addr); + + if (NULL == ep->dwc_ep.descs) { + DWC_FREE(cfiep); + return -DWC_E_NO_MEMORY; + } + + DWC_LIST_INIT(&cfiep->lh); + + /* Set the buffer mode to BM_STANDARD. It will be modified + * when building descriptors for a specific buffer mode */ + ep->dwc_ep.buff_mode = BM_STANDARD; + + /* Create and initialize the default values for this EP's Buffer modes */ + if ((retval = cfi_ep_init_defaults(pcd, cfiep)) < 0) + return retval; + + /* Add the cfi_ep_t object to the CFI object's list of active endpoints */ + DWC_LIST_INSERT_TAIL(&cfi->active_eps, &cfiep->lh); + retval = 0; + } else { /* The sought EP already is in the list */ + CFI_INFO("%s: The sought EP already is in the list\n", + __func__); + } + + return retval; +} + +/** + * This function is called when the data stage of a 3-stage Control Write request + * is complete. + * + */ +static int cfi_ctrl_write_complete(struct cfiobject *cfi, + struct dwc_otg_pcd *pcd) +{ + uint32_t addr, reg_value; + uint16_t wIndex, wValue; + uint8_t bRequest; + uint8_t *buf = cfi->buf_out.buf; + //struct usb_ctrlrequest *ctrl_req = &cfi->ctrl_req_saved; + struct cfi_usb_ctrlrequest *ctrl_req = &cfi->ctrl_req; + int retval = -DWC_E_NOT_SUPPORTED; + + CFI_INFO("%s\n", __func__); + + bRequest = ctrl_req->bRequest; + wIndex = DWC_CONSTANT_CPU_TO_LE16(ctrl_req->wIndex); + wValue = DWC_CONSTANT_CPU_TO_LE16(ctrl_req->wValue); + + /* + * Save the pointer to the data stage in the ctrl_req's field. + * The request should be already saved in the command stage by now. + */ + ctrl_req->data = cfi->buf_out.buf; + cfi->need_status_in_complete = 0; + cfi->need_gadget_att = 0; + + switch (bRequest) { + case VEN_CORE_WRITE_REGISTER: + /* The buffer contains raw data of the new value for the register */ + reg_value = *((uint32_t *) buf); + if (wValue == 0) { + addr = 0; + //addr = (uint32_t) pcd->otg_dev->os_dep.base; + addr += wIndex; + } else { + addr = (wValue << 16) | wIndex; + } + + //writel(reg_value, addr); + + retval = 0; + cfi->need_status_in_complete = 1; + break; + + case VEN_CORE_SET_FEATURE: + /* The buffer contains raw data of the new value of the feature */ + retval = cfi_set_feature_value(pcd); + if (retval < 0) + return retval; + + cfi->need_status_in_complete = 1; + break; + + default: + break; + } + + return retval; +} + +/** + * This function builds the DMA descriptors for the SG buffer mode. + */ +static void cfi_build_sg_descs(struct cfiobject *cfi, cfi_ep_t * cfiep, + dwc_otg_pcd_request_t * req) +{ + struct dwc_otg_pcd_ep *ep = cfiep->ep; + ddma_sg_buffer_setup_t *sgval = cfiep->bm_sg; + struct dwc_otg_dma_desc *desc = cfiep->ep->dwc_ep.descs; + struct dwc_otg_dma_desc *desc_last = cfiep->ep->dwc_ep.descs; + dma_addr_t buff_addr = req->dma; + int i; + uint32_t txsize, off; + + txsize = sgval->wSize; + off = sgval->bOffset; + +// CFI_INFO("%s: %s TXSIZE=0x%08x; OFFSET=0x%08x\n", +// __func__, cfiep->ep->ep.name, txsize, off); + + for (i = 0; i < sgval->bCount; i++) { + desc->status.b.bs = BS_HOST_BUSY; + desc->buf = buff_addr; + desc->status.b.l = 0; + desc->status.b.ioc = 0; + desc->status.b.sp = 0; + desc->status.b.bytes = txsize; + desc->status.b.bs = BS_HOST_READY; + + /* Set the next address of the buffer */ + buff_addr += txsize + off; + desc_last = desc; + desc++; + } + + /* Set the last, ioc and sp bits on the Last DMA Descriptor */ + desc_last->status.b.l = 1; + desc_last->status.b.ioc = 1; + desc_last->status.b.sp = ep->dwc_ep.sent_zlp; + /* Save the last DMA descriptor pointer */ + cfiep->dma_desc_last = desc_last; + cfiep->desc_count = sgval->bCount; +} + +/** + * This function builds the DMA descriptors for the Concatenation buffer mode. + */ +static void cfi_build_concat_descs(struct cfiobject *cfi, cfi_ep_t * cfiep, + dwc_otg_pcd_request_t * req) +{ + struct dwc_otg_pcd_ep *ep = cfiep->ep; + ddma_concat_buffer_setup_t *concatval = cfiep->bm_concat; + struct dwc_otg_dma_desc *desc = cfiep->ep->dwc_ep.descs; + struct dwc_otg_dma_desc *desc_last = cfiep->ep->dwc_ep.descs; + dma_addr_t buff_addr = req->dma; + int i; + uint16_t *txsize; + + txsize = concatval->wTxBytes; + + for (i = 0; i < concatval->hdr.bDescCount; i++) { + desc->buf = buff_addr; + desc->status.b.bs = BS_HOST_BUSY; + desc->status.b.l = 0; + desc->status.b.ioc = 0; + desc->status.b.sp = 0; + desc->status.b.bytes = *txsize; + desc->status.b.bs = BS_HOST_READY; + + txsize++; + /* Set the next address of the buffer */ + buff_addr += UGETW(ep->desc->wMaxPacketSize); + desc_last = desc; + desc++; + } + + /* Set the last, ioc and sp bits on the Last DMA Descriptor */ + desc_last->status.b.l = 1; + desc_last->status.b.ioc = 1; + desc_last->status.b.sp = ep->dwc_ep.sent_zlp; + cfiep->dma_desc_last = desc_last; + cfiep->desc_count = concatval->hdr.bDescCount; +} + +/** + * This function builds the DMA descriptors for the Circular buffer mode + */ +static void cfi_build_circ_descs(struct cfiobject *cfi, cfi_ep_t * cfiep, + dwc_otg_pcd_request_t * req) +{ + /* @todo: MAS - add implementation when this feature needs to be tested */ +} + +/** + * This function builds the DMA descriptors for the Alignment buffer mode + */ +static void cfi_build_align_descs(struct cfiobject *cfi, cfi_ep_t * cfiep, + dwc_otg_pcd_request_t * req) +{ + struct dwc_otg_pcd_ep *ep = cfiep->ep; + ddma_align_buffer_setup_t *alignval = cfiep->bm_align; + struct dwc_otg_dma_desc *desc = cfiep->ep->dwc_ep.descs; + dma_addr_t buff_addr = req->dma; + + desc->status.b.bs = BS_HOST_BUSY; + desc->status.b.l = 1; + desc->status.b.ioc = 1; + desc->status.b.sp = ep->dwc_ep.sent_zlp; + desc->status.b.bytes = req->length; + /* Adjust the buffer alignment */ + desc->buf = (buff_addr + alignval->bAlign); + desc->status.b.bs = BS_HOST_READY; + cfiep->dma_desc_last = desc; + cfiep->desc_count = 1; +} + +/** + * This function builds the DMA descriptors chain for different modes of the + * buffer setup of an endpoint. + */ +static void cfi_build_descriptors(struct cfiobject *cfi, + struct dwc_otg_pcd *pcd, + struct dwc_otg_pcd_ep *ep, + dwc_otg_pcd_request_t * req) +{ + cfi_ep_t *cfiep; + + /* Get the cfiep by the dwc_otg_pcd_ep */ + cfiep = get_cfi_ep_by_pcd_ep(cfi, ep); + if (NULL == cfiep) { + CFI_INFO("%s: Unable to find a matching active endpoint\n", + __func__); + return; + } + + cfiep->xfer_len = req->length; + + /* Iterate through all the DMA descriptors */ + switch (cfiep->ep->dwc_ep.buff_mode) { + case BM_SG: + cfi_build_sg_descs(cfi, cfiep, req); + break; + + case BM_CONCAT: + cfi_build_concat_descs(cfi, cfiep, req); + break; + + case BM_CIRCULAR: + cfi_build_circ_descs(cfi, cfiep, req); + break; + + case BM_ALIGN: + cfi_build_align_descs(cfi, cfiep, req); + break; + + default: + break; + } +} + +/** + * Allocate DMA buffer for different Buffer modes. + */ +static void *cfi_ep_alloc_buf(struct cfiobject *cfi, struct dwc_otg_pcd *pcd, + struct dwc_otg_pcd_ep *ep, dma_addr_t * dma, + unsigned size, gfp_t flags) +{ + return DWC_DMA_ALLOC(size, dma); +} + +/** + * This function initializes the CFI object. + */ +int init_cfi(cfiobject_t * cfiobj) +{ + CFI_INFO("%s\n", __func__); + + /* Allocate a buffer for IN XFERs */ + cfiobj->buf_in.buf = + DWC_DMA_ALLOC(CFI_IN_BUF_LEN, &cfiobj->buf_in.addr); + if (NULL == cfiobj->buf_in.buf) { + CFI_INFO("Unable to allocate buffer for INs\n"); + return -DWC_E_NO_MEMORY; + } + + /* Allocate a buffer for OUT XFERs */ + cfiobj->buf_out.buf = + DWC_DMA_ALLOC(CFI_OUT_BUF_LEN, &cfiobj->buf_out.addr); + if (NULL == cfiobj->buf_out.buf) { + CFI_INFO("Unable to allocate buffer for OUT\n"); + return -DWC_E_NO_MEMORY; + } + + /* Initialize the callback function pointers */ + cfiobj->ops.release = cfi_release; + cfiobj->ops.ep_enable = cfi_ep_enable; + cfiobj->ops.ctrl_write_complete = cfi_ctrl_write_complete; + cfiobj->ops.build_descriptors = cfi_build_descriptors; + cfiobj->ops.ep_alloc_buf = cfi_ep_alloc_buf; + + /* Initialize the list of active endpoints in the CFI object */ + DWC_LIST_INIT(&cfiobj->active_eps); + + return 0; +} + +/** + * This function reads the required feature's current value into the buffer + * + * @retval: Returns negative as error, or the data length of the feature + */ +static int cfi_get_feature_value(uint8_t * buf, uint16_t buflen, + struct dwc_otg_pcd *pcd, + struct cfi_usb_ctrlrequest *ctrl_req) +{ + int retval = -DWC_E_NOT_SUPPORTED; + struct dwc_otg_core_if *coreif = GET_CORE_IF(pcd); + uint16_t dfifo, rxfifo, txfifo; + + switch (ctrl_req->wIndex) { + /* Whether the DDMA is enabled or not */ + case FT_ID_DMA_MODE: + *buf = (coreif->dma_enable && coreif->dma_desc_enable) ? 1 : 0; + retval = 1; + break; + + case FT_ID_DMA_BUFFER_SETUP: + retval = cfi_ep_get_sg_val(buf, pcd, ctrl_req); + break; + + case FT_ID_DMA_BUFF_ALIGN: + retval = cfi_ep_get_align_val(buf, pcd, ctrl_req); + break; + + case FT_ID_DMA_CONCAT_SETUP: + retval = cfi_ep_get_concat_val(buf, pcd, ctrl_req); + break; + + case FT_ID_DMA_CIRCULAR: + CFI_INFO("GetFeature value (FT_ID_DMA_CIRCULAR)\n"); + break; + + case FT_ID_THRESHOLD_SETUP: + CFI_INFO("GetFeature value (FT_ID_THRESHOLD_SETUP)\n"); + break; + + case FT_ID_DFIFO_DEPTH: + dfifo = get_dfifo_size(coreif); + *((uint16_t *) buf) = dfifo; + retval = sizeof(uint16_t); + break; + + case FT_ID_TX_FIFO_DEPTH: + retval = get_txfifo_size(pcd, ctrl_req->wValue); + if (retval >= 0) { + txfifo = retval; + *((uint16_t *) buf) = txfifo; + retval = sizeof(uint16_t); + } + break; + + case FT_ID_RX_FIFO_DEPTH: + retval = get_rxfifo_size(coreif, ctrl_req->wValue); + if (retval >= 0) { + rxfifo = retval; + *((uint16_t *) buf) = rxfifo; + retval = sizeof(uint16_t); + } + break; + } + + return retval; +} + +/** + * This function resets the SG for the specified EP to its default value + */ +static int cfi_reset_sg_val(cfi_ep_t * cfiep) +{ + dwc_memset(cfiep->bm_sg, 0, sizeof(ddma_sg_buffer_setup_t)); + return 0; +} + +/** + * This function resets the Alignment for the specified EP to its default value + */ +static int cfi_reset_align_val(cfi_ep_t * cfiep) +{ + dwc_memset(cfiep->bm_sg, 0, sizeof(ddma_sg_buffer_setup_t)); + return 0; +} + +/** + * This function resets the Concatenation for the specified EP to its default value + * This function will also set the value of the wTxBytes field to NULL after + * freeing the memory previously allocated for this field. + */ +static int cfi_reset_concat_val(cfi_ep_t * cfiep) +{ + /* First we need to free the wTxBytes field */ + if (cfiep->bm_concat->wTxBytes) { + DWC_FREE(cfiep->bm_concat->wTxBytes); + cfiep->bm_concat->wTxBytes = NULL; + } + + dwc_memset(cfiep->bm_concat, 0, sizeof(ddma_concat_buffer_setup_t)); + return 0; +} + +/** + * This function resets all the buffer setups of the specified endpoint + */ +static int cfi_ep_reset_all_setup_vals(cfi_ep_t * cfiep) +{ + cfi_reset_sg_val(cfiep); + cfi_reset_align_val(cfiep); + cfi_reset_concat_val(cfiep); + return 0; +} + +static int cfi_handle_reset_fifo_val(struct dwc_otg_pcd *pcd, uint8_t ep_addr, + uint8_t rx_rst, uint8_t tx_rst) +{ + int retval = -DWC_E_INVALID; + uint16_t tx_siz[15]; + uint16_t rx_siz = 0; + dwc_otg_pcd_ep_t *ep = NULL; + dwc_otg_core_if_t *core_if = GET_CORE_IF(pcd); + dwc_otg_core_params_t *params = GET_CORE_IF(pcd)->core_params; + + if (rx_rst) { + rx_siz = params->dev_rx_fifo_size; + params->dev_rx_fifo_size = GET_CORE_IF(pcd)->init_rxfsiz; + } + + if (tx_rst) { + if (ep_addr == 0) { + int i; + + for (i = 0; i < core_if->hwcfg4.b.num_in_eps; i++) { + tx_siz[i] = + core_if->core_params->dev_tx_fifo_size[i]; + core_if->core_params->dev_tx_fifo_size[i] = + core_if->init_txfsiz[i]; + } + } else { + + ep = get_ep_by_addr(pcd, ep_addr); + + if (NULL == ep) { + CFI_INFO + ("%s: Unable to get the endpoint addr=0x%02x\n", + __func__, ep_addr); + return -DWC_E_INVALID; + } + + tx_siz[0] = + params->dev_tx_fifo_size[ep->dwc_ep.tx_fifo_num - + 1]; + params->dev_tx_fifo_size[ep->dwc_ep.tx_fifo_num - 1] = + GET_CORE_IF(pcd)->init_txfsiz[ep-> + dwc_ep.tx_fifo_num - + 1]; + } + } + + if (resize_fifos(GET_CORE_IF(pcd))) { + retval = 0; + } else { + CFI_INFO + ("%s: Error resetting the feature Reset All(FIFO size)\n", + __func__); + if (rx_rst) { + params->dev_rx_fifo_size = rx_siz; + } + + if (tx_rst) { + if (ep_addr == 0) { + int i; + for (i = 0; i < core_if->hwcfg4.b.num_in_eps; + i++) { + core_if-> + core_params->dev_tx_fifo_size[i] = + tx_siz[i]; + } + } else { + params->dev_tx_fifo_size[ep-> + dwc_ep.tx_fifo_num - + 1] = tx_siz[0]; + } + } + retval = -DWC_E_INVALID; + } + return retval; +} + +static int cfi_handle_reset_all(struct dwc_otg_pcd *pcd, uint8_t addr) +{ + int retval = 0; + cfi_ep_t *cfiep; + cfiobject_t *cfi = pcd->cfi; + dwc_list_link_t *tmp; + + retval = cfi_handle_reset_fifo_val(pcd, addr, 1, 1); + if (retval < 0) { + return retval; + } + + /* If the EP address is known then reset the features for only that EP */ + if (addr) { + cfiep = get_cfi_ep_by_addr(pcd->cfi, addr); + if (NULL == cfiep) { + CFI_INFO("%s: Error getting the EP address 0x%02x\n", + __func__, addr); + return -DWC_E_INVALID; + } + retval = cfi_ep_reset_all_setup_vals(cfiep); + cfiep->ep->dwc_ep.buff_mode = BM_STANDARD; + } + /* Otherwise (wValue == 0), reset all features of all EP's */ + else { + /* Traverse all the active EP's and reset the feature(s) value(s) */ + //list_for_each_entry(cfiep, &cfi->active_eps, lh) { + DWC_LIST_FOREACH(tmp, &cfi->active_eps) { + cfiep = DWC_LIST_ENTRY(tmp, struct cfi_ep, lh); + retval = cfi_ep_reset_all_setup_vals(cfiep); + cfiep->ep->dwc_ep.buff_mode = BM_STANDARD; + if (retval < 0) { + CFI_INFO + ("%s: Error resetting the feature Reset All\n", + __func__); + return retval; + } + } + } + return retval; +} + +static int cfi_handle_reset_dma_buff_setup(struct dwc_otg_pcd *pcd, + uint8_t addr) +{ + int retval = 0; + cfi_ep_t *cfiep; + cfiobject_t *cfi = pcd->cfi; + dwc_list_link_t *tmp; + + /* If the EP address is known then reset the features for only that EP */ + if (addr) { + cfiep = get_cfi_ep_by_addr(pcd->cfi, addr); + if (NULL == cfiep) { + CFI_INFO("%s: Error getting the EP address 0x%02x\n", + __func__, addr); + return -DWC_E_INVALID; + } + retval = cfi_reset_sg_val(cfiep); + } + /* Otherwise (wValue == 0), reset all features of all EP's */ + else { + /* Traverse all the active EP's and reset the feature(s) value(s) */ + //list_for_each_entry(cfiep, &cfi->active_eps, lh) { + DWC_LIST_FOREACH(tmp, &cfi->active_eps) { + cfiep = DWC_LIST_ENTRY(tmp, struct cfi_ep, lh); + retval = cfi_reset_sg_val(cfiep); + if (retval < 0) { + CFI_INFO + ("%s: Error resetting the feature Buffer Setup\n", + __func__); + return retval; + } + } + } + return retval; +} + +static int cfi_handle_reset_concat_val(struct dwc_otg_pcd *pcd, uint8_t addr) +{ + int retval = 0; + cfi_ep_t *cfiep; + cfiobject_t *cfi = pcd->cfi; + dwc_list_link_t *tmp; + + /* If the EP address is known then reset the features for only that EP */ + if (addr) { + cfiep = get_cfi_ep_by_addr(pcd->cfi, addr); + if (NULL == cfiep) { + CFI_INFO("%s: Error getting the EP address 0x%02x\n", + __func__, addr); + return -DWC_E_INVALID; + } + retval = cfi_reset_concat_val(cfiep); + } + /* Otherwise (wValue == 0), reset all features of all EP's */ + else { + /* Traverse all the active EP's and reset the feature(s) value(s) */ + //list_for_each_entry(cfiep, &cfi->active_eps, lh) { + DWC_LIST_FOREACH(tmp, &cfi->active_eps) { + cfiep = DWC_LIST_ENTRY(tmp, struct cfi_ep, lh); + retval = cfi_reset_concat_val(cfiep); + if (retval < 0) { + CFI_INFO + ("%s: Error resetting the feature Concatenation Value\n", + __func__); + return retval; + } + } + } + return retval; +} + +static int cfi_handle_reset_align_val(struct dwc_otg_pcd *pcd, uint8_t addr) +{ + int retval = 0; + cfi_ep_t *cfiep; + cfiobject_t *cfi = pcd->cfi; + dwc_list_link_t *tmp; + + /* If the EP address is known then reset the features for only that EP */ + if (addr) { + cfiep = get_cfi_ep_by_addr(pcd->cfi, addr); + if (NULL == cfiep) { + CFI_INFO("%s: Error getting the EP address 0x%02x\n", + __func__, addr); + return -DWC_E_INVALID; + } + retval = cfi_reset_align_val(cfiep); + } + /* Otherwise (wValue == 0), reset all features of all EP's */ + else { + /* Traverse all the active EP's and reset the feature(s) value(s) */ + //list_for_each_entry(cfiep, &cfi->active_eps, lh) { + DWC_LIST_FOREACH(tmp, &cfi->active_eps) { + cfiep = DWC_LIST_ENTRY(tmp, struct cfi_ep, lh); + retval = cfi_reset_align_val(cfiep); + if (retval < 0) { + CFI_INFO + ("%s: Error resetting the feature Aliignment Value\n", + __func__); + return retval; + } + } + } + return retval; + +} + +static int cfi_preproc_reset(struct dwc_otg_pcd *pcd, + struct cfi_usb_ctrlrequest *req) +{ + int retval = 0; + + switch (req->wIndex) { + case 0: + /* Reset all features */ + retval = cfi_handle_reset_all(pcd, req->wValue & 0xff); + break; + + case FT_ID_DMA_BUFFER_SETUP: + /* Reset the SG buffer setup */ + retval = + cfi_handle_reset_dma_buff_setup(pcd, req->wValue & 0xff); + break; + + case FT_ID_DMA_CONCAT_SETUP: + /* Reset the Concatenation buffer setup */ + retval = cfi_handle_reset_concat_val(pcd, req->wValue & 0xff); + break; + + case FT_ID_DMA_BUFF_ALIGN: + /* Reset the Alignment buffer setup */ + retval = cfi_handle_reset_align_val(pcd, req->wValue & 0xff); + break; + + case FT_ID_TX_FIFO_DEPTH: + retval = + cfi_handle_reset_fifo_val(pcd, req->wValue & 0xff, 0, 1); + pcd->cfi->need_gadget_att = 0; + break; + + case FT_ID_RX_FIFO_DEPTH: + retval = cfi_handle_reset_fifo_val(pcd, 0, 1, 0); + pcd->cfi->need_gadget_att = 0; + break; + default: + break; + } + return retval; +} + +/** + * This function sets a new value for the SG buffer setup. + */ +static int cfi_ep_set_sg_val(uint8_t * buf, struct dwc_otg_pcd *pcd) +{ + uint8_t inaddr, outaddr; + cfi_ep_t *epin, *epout; + ddma_sg_buffer_setup_t *psgval; + uint32_t desccount, size; + + CFI_INFO("%s\n", __func__); + + psgval = (ddma_sg_buffer_setup_t *) buf; + desccount = (uint32_t) psgval->bCount; + size = (uint32_t) psgval->wSize; + + /* Check the DMA descriptor count */ + if ((desccount > MAX_DMA_DESCS_PER_EP) || (desccount == 0)) { + CFI_INFO + ("%s: The count of DMA Descriptors should be between 1 and %d\n", + __func__, MAX_DMA_DESCS_PER_EP); + return -DWC_E_INVALID; + } + + /* Check the DMA descriptor count */ + + if (size == 0) { + + CFI_INFO("%s: The transfer size should be at least 1 byte\n", + __func__); + + return -DWC_E_INVALID; + + } + + inaddr = psgval->bInEndpointAddress; + outaddr = psgval->bOutEndpointAddress; + + epin = get_cfi_ep_by_addr(pcd->cfi, inaddr); + epout = get_cfi_ep_by_addr(pcd->cfi, outaddr); + + if (NULL == epin || NULL == epout) { + CFI_INFO + ("%s: Unable to get the endpoints inaddr=0x%02x outaddr=0x%02x\n", + __func__, inaddr, outaddr); + return -DWC_E_INVALID; + } + + epin->ep->dwc_ep.buff_mode = BM_SG; + dwc_memcpy(epin->bm_sg, psgval, sizeof(ddma_sg_buffer_setup_t)); + + epout->ep->dwc_ep.buff_mode = BM_SG; + dwc_memcpy(epout->bm_sg, psgval, sizeof(ddma_sg_buffer_setup_t)); + + return 0; +} + +/** + * This function sets a new value for the buffer Alignment setup. + */ +static int cfi_ep_set_alignment_val(uint8_t * buf, struct dwc_otg_pcd *pcd) +{ + cfi_ep_t *ep; + uint8_t addr; + ddma_align_buffer_setup_t *palignval; + + palignval = (ddma_align_buffer_setup_t *) buf; + addr = palignval->bEndpointAddress; + + ep = get_cfi_ep_by_addr(pcd->cfi, addr); + + if (NULL == ep) { + CFI_INFO("%s: Unable to get the endpoint addr=0x%02x\n", + __func__, addr); + return -DWC_E_INVALID; + } + + ep->ep->dwc_ep.buff_mode = BM_ALIGN; + dwc_memcpy(ep->bm_align, palignval, sizeof(ddma_align_buffer_setup_t)); + + return 0; +} + +/** + * This function sets a new value for the Concatenation buffer setup. + */ +static int cfi_ep_set_concat_val(uint8_t * buf, struct dwc_otg_pcd *pcd) +{ + uint8_t addr; + cfi_ep_t *ep; + struct _ddma_concat_buffer_setup_hdr *pConcatValHdr; + uint16_t *pVals; + uint32_t desccount; + int i; + uint16_t mps; + + pConcatValHdr = (struct _ddma_concat_buffer_setup_hdr *)buf; + desccount = (uint32_t) pConcatValHdr->bDescCount; + pVals = (uint16_t *) (buf + BS_CONCAT_VAL_HDR_LEN); + + /* Check the DMA descriptor count */ + if (desccount > MAX_DMA_DESCS_PER_EP) { + CFI_INFO("%s: Maximum DMA Descriptor count should be %d\n", + __func__, MAX_DMA_DESCS_PER_EP); + return -DWC_E_INVALID; + } + + addr = pConcatValHdr->bEndpointAddress; + ep = get_cfi_ep_by_addr(pcd->cfi, addr); + if (NULL == ep) { + CFI_INFO("%s: Unable to get the endpoint addr=0x%02x\n", + __func__, addr); + return -DWC_E_INVALID; + } + + mps = UGETW(ep->ep->desc->wMaxPacketSize); + +#if 0 + for (i = 0; i < desccount; i++) { + CFI_INFO("%s: wTxSize[%d]=0x%04x\n", __func__, i, pVals[i]); + } + CFI_INFO("%s: epname=%s; mps=%d\n", __func__, ep->ep->ep.name, mps); +#endif + + /* Check the wTxSizes to be less than or equal to the mps */ + for (i = 0; i < desccount; i++) { + if (pVals[i] > mps) { + CFI_INFO + ("%s: ERROR - the wTxSize[%d] should be <= MPS (wTxSize=%d)\n", + __func__, i, pVals[i]); + return -DWC_E_INVALID; + } + } + + ep->ep->dwc_ep.buff_mode = BM_CONCAT; + dwc_memcpy(ep->bm_concat, pConcatValHdr, BS_CONCAT_VAL_HDR_LEN); + + /* Free the previously allocated storage for the wTxBytes */ + if (ep->bm_concat->wTxBytes) { + DWC_FREE(ep->bm_concat->wTxBytes); + } + + /* Allocate a new storage for the wTxBytes field */ + ep->bm_concat->wTxBytes = + DWC_ALLOC(sizeof(uint16_t) * pConcatValHdr->bDescCount); + if (NULL == ep->bm_concat->wTxBytes) { + CFI_INFO("%s: Unable to allocate memory\n", __func__); + return -DWC_E_NO_MEMORY; + } + + /* Copy the new values into the wTxBytes filed */ + dwc_memcpy(ep->bm_concat->wTxBytes, buf + BS_CONCAT_VAL_HDR_LEN, + sizeof(uint16_t) * pConcatValHdr->bDescCount); + + return 0; +} + +/** + * This function calculates the total of all FIFO sizes + * + * @param core_if Programming view of DWC_otg controller + * + * @return The total of data FIFO sizes. + * + */ +static uint16_t get_dfifo_size(dwc_otg_core_if_t * core_if) +{ + dwc_otg_core_params_t *params = core_if->core_params; + uint16_t dfifo_total = 0; + int i; + + /* The shared RxFIFO size */ + dfifo_total = + params->dev_rx_fifo_size + params->dev_nperio_tx_fifo_size; + + /* Add up each TxFIFO size to the total */ + for (i = 0; i < core_if->hwcfg4.b.num_in_eps; i++) { + dfifo_total += params->dev_tx_fifo_size[i]; + } + + return dfifo_total; +} + +/** + * This function returns Rx FIFO size + * + * @param core_if Programming view of DWC_otg controller + * + * @return The total of data FIFO sizes. + * + */ +static int32_t get_rxfifo_size(dwc_otg_core_if_t * core_if, uint16_t wValue) +{ + switch (wValue >> 8) { + case 0: + return (core_if->pwron_rxfsiz < + 32768) ? core_if->pwron_rxfsiz : 32768; + break; + case 1: + return core_if->core_params->dev_rx_fifo_size; + break; + default: + return -DWC_E_INVALID; + break; + } +} + +/** + * This function returns Tx FIFO size for IN EP + * + * @param core_if Programming view of DWC_otg controller + * + * @return The total of data FIFO sizes. + * + */ +static int32_t get_txfifo_size(struct dwc_otg_pcd *pcd, uint16_t wValue) +{ + dwc_otg_pcd_ep_t *ep; + + ep = get_ep_by_addr(pcd, wValue & 0xff); + + if (NULL == ep) { + CFI_INFO("%s: Unable to get the endpoint addr=0x%02x\n", + __func__, wValue & 0xff); + return -DWC_E_INVALID; + } + + if (!ep->dwc_ep.is_in) { + CFI_INFO + ("%s: No Tx FIFO assingned to the Out endpoint addr=0x%02x\n", + __func__, wValue & 0xff); + return -DWC_E_INVALID; + } + + switch (wValue >> 8) { + case 0: + return (GET_CORE_IF(pcd)->pwron_txfsiz + [ep->dwc_ep.tx_fifo_num - 1] < + 768) ? GET_CORE_IF(pcd)->pwron_txfsiz[ep-> + dwc_ep.tx_fifo_num + - 1] : 32768; + break; + case 1: + return GET_CORE_IF(pcd)->core_params-> + dev_tx_fifo_size[ep->dwc_ep.num - 1]; + break; + default: + return -DWC_E_INVALID; + break; + } +} + +/** + * This function checks if the submitted combination of + * device mode FIFO sizes is possible or not. + * + * @param core_if Programming view of DWC_otg controller + * + * @return 1 if possible, 0 otherwise. + * + */ +static uint8_t check_fifo_sizes(dwc_otg_core_if_t * core_if) +{ + uint16_t dfifo_actual = 0; + dwc_otg_core_params_t *params = core_if->core_params; + uint16_t start_addr = 0; + int i; + + dfifo_actual = + params->dev_rx_fifo_size + params->dev_nperio_tx_fifo_size; + + for (i = 0; i < core_if->hwcfg4.b.num_in_eps; i++) { + dfifo_actual += params->dev_tx_fifo_size[i]; + } + + if (dfifo_actual > core_if->total_fifo_size) { + return 0; + } + + if (params->dev_rx_fifo_size > 32768 || params->dev_rx_fifo_size < 16) + return 0; + + if (params->dev_nperio_tx_fifo_size > 32768 + || params->dev_nperio_tx_fifo_size < 16) + return 0; + + for (i = 0; i < core_if->hwcfg4.b.num_in_eps; i++) { + + if (params->dev_tx_fifo_size[i] > 768 + || params->dev_tx_fifo_size[i] < 4) + return 0; + } + + if (params->dev_rx_fifo_size > core_if->pwron_rxfsiz) + return 0; + start_addr = params->dev_rx_fifo_size; + + if (params->dev_nperio_tx_fifo_size > core_if->pwron_gnptxfsiz) + return 0; + start_addr += params->dev_nperio_tx_fifo_size; + + for (i = 0; i < core_if->hwcfg4.b.num_in_eps; i++) { + + if (params->dev_tx_fifo_size[i] > core_if->pwron_txfsiz[i]) + return 0; + start_addr += params->dev_tx_fifo_size[i]; + } + + return 1; +} + +/** + * This function resizes Device mode FIFOs + * + * @param core_if Programming view of DWC_otg controller + * + * @return 1 if successful, 0 otherwise + * + */ +static uint8_t resize_fifos(dwc_otg_core_if_t * core_if) +{ + int i = 0; + dwc_otg_core_global_regs_t *global_regs = core_if->core_global_regs; + dwc_otg_core_params_t *params = core_if->core_params; + uint32_t rx_fifo_size; + fifosize_data_t nptxfifosize; + fifosize_data_t txfifosize[15]; + + uint32_t rx_fsz_bak; + uint32_t nptxfsz_bak; + uint32_t txfsz_bak[15]; + + uint16_t start_address; + uint8_t retval = 1; + + if (!check_fifo_sizes(core_if)) { + return 0; + } + + /* Configure data FIFO sizes */ + if (core_if->hwcfg2.b.dynamic_fifo && params->enable_dynamic_fifo) { + rx_fsz_bak = DWC_READ_REG32(&global_regs->grxfsiz); + rx_fifo_size = params->dev_rx_fifo_size; + DWC_WRITE_REG32(&global_regs->grxfsiz, rx_fifo_size); + + /* + * Tx FIFOs These FIFOs are numbered from 1 to 15. + * Indexes of the FIFO size module parameters in the + * dev_tx_fifo_size array and the FIFO size registers in + * the dtxfsiz array run from 0 to 14. + */ + + /* Non-periodic Tx FIFO */ + nptxfsz_bak = DWC_READ_REG32(&global_regs->gnptxfsiz); + nptxfifosize.b.depth = params->dev_nperio_tx_fifo_size; + start_address = params->dev_rx_fifo_size; + nptxfifosize.b.startaddr = start_address; + + DWC_WRITE_REG32(&global_regs->gnptxfsiz, nptxfifosize.d32); + + start_address += nptxfifosize.b.depth; + + for (i = 0; i < core_if->hwcfg4.b.num_in_eps; i++) { + txfsz_bak[i] = DWC_READ_REG32(&global_regs->dtxfsiz[i]); + + txfifosize[i].b.depth = params->dev_tx_fifo_size[i]; + txfifosize[i].b.startaddr = start_address; + DWC_WRITE_REG32(&global_regs->dtxfsiz[i], + txfifosize[i].d32); + + start_address += txfifosize[i].b.depth; + } + + /** Check if register values are set correctly */ + if (rx_fifo_size != DWC_READ_REG32(&global_regs->grxfsiz)) { + retval = 0; + } + + if (nptxfifosize.d32 != DWC_READ_REG32(&global_regs->gnptxfsiz)) { + retval = 0; + } + + for (i = 0; i < core_if->hwcfg4.b.num_in_eps; i++) { + if (txfifosize[i].d32 != + DWC_READ_REG32(&global_regs->dtxfsiz[i])) { + retval = 0; + } + } + + /** If register values are not set correctly, reset old values */ + if (retval == 0) { + DWC_WRITE_REG32(&global_regs->grxfsiz, rx_fsz_bak); + + /* Non-periodic Tx FIFO */ + DWC_WRITE_REG32(&global_regs->gnptxfsiz, nptxfsz_bak); + + for (i = 0; i < core_if->hwcfg4.b.num_in_eps; i++) { + DWC_WRITE_REG32(&global_regs->dtxfsiz[i], + txfsz_bak[i]); + } + } + } else { + return 0; + } + + /* Flush the FIFOs */ + dwc_otg_flush_tx_fifo(core_if, 0x10); /* all Tx FIFOs */ + dwc_otg_flush_rx_fifo(core_if); + + return retval; +} + +/** + * This function sets a new value for the buffer Alignment setup. + */ +static int cfi_ep_set_tx_fifo_val(uint8_t * buf, dwc_otg_pcd_t * pcd) +{ + int retval; + uint32_t fsiz; + uint16_t size; + uint16_t ep_addr; + dwc_otg_pcd_ep_t *ep; + dwc_otg_core_params_t *params = GET_CORE_IF(pcd)->core_params; + tx_fifo_size_setup_t *ptxfifoval; + + ptxfifoval = (tx_fifo_size_setup_t *) buf; + ep_addr = ptxfifoval->bEndpointAddress; + size = ptxfifoval->wDepth; + + ep = get_ep_by_addr(pcd, ep_addr); + + CFI_INFO + ("%s: Set Tx FIFO size: endpoint addr=0x%02x, depth=%d, FIFO Num=%d\n", + __func__, ep_addr, size, ep->dwc_ep.tx_fifo_num); + + if (NULL == ep) { + CFI_INFO("%s: Unable to get the endpoint addr=0x%02x\n", + __func__, ep_addr); + return -DWC_E_INVALID; + } + + fsiz = params->dev_tx_fifo_size[ep->dwc_ep.tx_fifo_num - 1]; + params->dev_tx_fifo_size[ep->dwc_ep.tx_fifo_num - 1] = size; + + if (resize_fifos(GET_CORE_IF(pcd))) { + retval = 0; + } else { + CFI_INFO + ("%s: Error setting the feature Tx FIFO Size for EP%d\n", + __func__, ep_addr); + params->dev_tx_fifo_size[ep->dwc_ep.tx_fifo_num - 1] = fsiz; + retval = -DWC_E_INVALID; + } + + return retval; +} + +/** + * This function sets a new value for the buffer Alignment setup. + */ +static int cfi_set_rx_fifo_val(uint8_t * buf, dwc_otg_pcd_t * pcd) +{ + int retval; + uint32_t fsiz; + uint16_t size; + dwc_otg_core_params_t *params = GET_CORE_IF(pcd)->core_params; + rx_fifo_size_setup_t *prxfifoval; + + prxfifoval = (rx_fifo_size_setup_t *) buf; + size = prxfifoval->wDepth; + + fsiz = params->dev_rx_fifo_size; + params->dev_rx_fifo_size = size; + + if (resize_fifos(GET_CORE_IF(pcd))) { + retval = 0; + } else { + CFI_INFO("%s: Error setting the feature Rx FIFO Size\n", + __func__); + params->dev_rx_fifo_size = fsiz; + retval = -DWC_E_INVALID; + } + + return retval; +} + +/** + * This function reads the SG of an EP's buffer setup into the buffer buf + */ +static int cfi_ep_get_sg_val(uint8_t * buf, struct dwc_otg_pcd *pcd, + struct cfi_usb_ctrlrequest *req) +{ + int retval = -DWC_E_INVALID; + uint8_t addr; + cfi_ep_t *ep; + + /* The Low Byte of the wValue contains a non-zero address of the endpoint */ + addr = req->wValue & 0xFF; + if (addr == 0) /* The address should be non-zero */ + return retval; + + ep = get_cfi_ep_by_addr(pcd->cfi, addr); + if (NULL == ep) { + CFI_INFO("%s: Unable to get the endpoint address(0x%02x)\n", + __func__, addr); + return retval; + } + + dwc_memcpy(buf, ep->bm_sg, BS_SG_VAL_DESC_LEN); + retval = BS_SG_VAL_DESC_LEN; + return retval; +} + +/** + * This function reads the Concatenation value of an EP's buffer mode into + * the buffer buf + */ +static int cfi_ep_get_concat_val(uint8_t * buf, struct dwc_otg_pcd *pcd, + struct cfi_usb_ctrlrequest *req) +{ + int retval = -DWC_E_INVALID; + uint8_t addr; + cfi_ep_t *ep; + uint8_t desc_count; + + /* The Low Byte of the wValue contains a non-zero address of the endpoint */ + addr = req->wValue & 0xFF; + if (addr == 0) /* The address should be non-zero */ + return retval; + + ep = get_cfi_ep_by_addr(pcd->cfi, addr); + if (NULL == ep) { + CFI_INFO("%s: Unable to get the endpoint address(0x%02x)\n", + __func__, addr); + return retval; + } + + /* Copy the header to the buffer */ + dwc_memcpy(buf, ep->bm_concat, BS_CONCAT_VAL_HDR_LEN); + /* Advance the buffer pointer by the header size */ + buf += BS_CONCAT_VAL_HDR_LEN; + + desc_count = ep->bm_concat->hdr.bDescCount; + /* Copy alll the wTxBytes to the buffer */ + dwc_memcpy(buf, ep->bm_concat->wTxBytes, sizeof(uid16_t) * desc_count); + + retval = BS_CONCAT_VAL_HDR_LEN + sizeof(uid16_t) * desc_count; + return retval; +} + +/** + * This function reads the buffer Alignment value of an EP's buffer mode into + * the buffer buf + * + * @return The total number of bytes copied to the buffer or negative error code. + */ +static int cfi_ep_get_align_val(uint8_t * buf, struct dwc_otg_pcd *pcd, + struct cfi_usb_ctrlrequest *req) +{ + int retval = -DWC_E_INVALID; + uint8_t addr; + cfi_ep_t *ep; + + /* The Low Byte of the wValue contains a non-zero address of the endpoint */ + addr = req->wValue & 0xFF; + if (addr == 0) /* The address should be non-zero */ + return retval; + + ep = get_cfi_ep_by_addr(pcd->cfi, addr); + if (NULL == ep) { + CFI_INFO("%s: Unable to get the endpoint address(0x%02x)\n", + __func__, addr); + return retval; + } + + dwc_memcpy(buf, ep->bm_align, BS_ALIGN_VAL_HDR_LEN); + retval = BS_ALIGN_VAL_HDR_LEN; + + return retval; +} + +/** + * This function sets a new value for the specified feature + * + * @param pcd A pointer to the PCD object + * + * @return 0 if successful, negative error code otherwise to stall the DCE. + */ +static int cfi_set_feature_value(struct dwc_otg_pcd *pcd) +{ + int retval = -DWC_E_NOT_SUPPORTED; + uint16_t wIndex, wValue; + uint8_t bRequest; + struct dwc_otg_core_if *coreif; + cfiobject_t *cfi = pcd->cfi; + struct cfi_usb_ctrlrequest *ctrl_req; + uint8_t *buf; + ctrl_req = &cfi->ctrl_req; + + buf = pcd->cfi->ctrl_req.data; + + coreif = GET_CORE_IF(pcd); + bRequest = ctrl_req->bRequest; + wIndex = DWC_CONSTANT_CPU_TO_LE16(ctrl_req->wIndex); + wValue = DWC_CONSTANT_CPU_TO_LE16(ctrl_req->wValue); + + /* See which feature is to be modified */ + switch (wIndex) { + case FT_ID_DMA_BUFFER_SETUP: + /* Modify the feature */ + if ((retval = cfi_ep_set_sg_val(buf, pcd)) < 0) + return retval; + + /* And send this request to the gadget */ + cfi->need_gadget_att = 1; + break; + + case FT_ID_DMA_BUFF_ALIGN: + if ((retval = cfi_ep_set_alignment_val(buf, pcd)) < 0) + return retval; + cfi->need_gadget_att = 1; + break; + + case FT_ID_DMA_CONCAT_SETUP: + /* Modify the feature */ + if ((retval = cfi_ep_set_concat_val(buf, pcd)) < 0) + return retval; + cfi->need_gadget_att = 1; + break; + + case FT_ID_DMA_CIRCULAR: + CFI_INFO("FT_ID_DMA_CIRCULAR\n"); + break; + + case FT_ID_THRESHOLD_SETUP: + CFI_INFO("FT_ID_THRESHOLD_SETUP\n"); + break; + + case FT_ID_DFIFO_DEPTH: + CFI_INFO("FT_ID_DFIFO_DEPTH\n"); + break; + + case FT_ID_TX_FIFO_DEPTH: + CFI_INFO("FT_ID_TX_FIFO_DEPTH\n"); + if ((retval = cfi_ep_set_tx_fifo_val(buf, pcd)) < 0) + return retval; + cfi->need_gadget_att = 0; + break; + + case FT_ID_RX_FIFO_DEPTH: + CFI_INFO("FT_ID_RX_FIFO_DEPTH\n"); + if ((retval = cfi_set_rx_fifo_val(buf, pcd)) < 0) + return retval; + cfi->need_gadget_att = 0; + break; + } + + return retval; +} + +#endif //DWC_UTE_CFI --- linux-raspi2-4.2.0.orig/drivers/usb/host/dwc_otg/dwc_otg_cfi.h +++ linux-raspi2-4.2.0/drivers/usb/host/dwc_otg/dwc_otg_cfi.h @@ -0,0 +1,320 @@ +/* ========================================================================== + * Synopsys HS OTG Linux Software Driver and documentation (hereinafter, + * "Software") is an Unsupported proprietary work of Synopsys, Inc. unless + * otherwise expressly agreed to in writing between Synopsys and you. + * + * The Software IS NOT an item of Licensed Software or Licensed Product under + * any End User Software License Agreement or Agreement for Licensed Product + * with Synopsys or any supplement thereto. You are permitted to use and + * redistribute this Software in source and binary forms, with or without + * modification, provided that redistributions of source code must retain this + * notice. You may not view, use, disclose, copy or distribute this file or + * any information contained herein except pursuant to this license grant from + * Synopsys. If you do not agree with this notice, including the disclaimer + * below, then you are not authorized to use the Software. + * + * THIS SOFTWARE IS BEING DISTRIBUTED BY SYNOPSYS SOLELY ON AN "AS IS" BASIS + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE HEREBY DISCLAIMED. IN NO EVENT SHALL SYNOPSYS BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH + * DAMAGE. + * ========================================================================== */ + +#if !defined(__DWC_OTG_CFI_H__) +#define __DWC_OTG_CFI_H__ + +#include "dwc_otg_pcd.h" +#include "dwc_cfi_common.h" + +/** + * @file + * This file contains the CFI related OTG PCD specific common constants, + * interfaces(functions and macros) and data structures.The CFI Protocol is an + * optional interface for internal testing purposes that a DUT may implement to + * support testing of configurable features. + * + */ + +struct dwc_otg_pcd; +struct dwc_otg_pcd_ep; + +/** OTG CFI Features (properties) ID constants */ +/** This is a request for all Core Features */ +#define FT_ID_DMA_MODE 0x0001 +#define FT_ID_DMA_BUFFER_SETUP 0x0002 +#define FT_ID_DMA_BUFF_ALIGN 0x0003 +#define FT_ID_DMA_CONCAT_SETUP 0x0004 +#define FT_ID_DMA_CIRCULAR 0x0005 +#define FT_ID_THRESHOLD_SETUP 0x0006 +#define FT_ID_DFIFO_DEPTH 0x0007 +#define FT_ID_TX_FIFO_DEPTH 0x0008 +#define FT_ID_RX_FIFO_DEPTH 0x0009 + +/**********************************************************/ +#define CFI_INFO_DEF + +#ifdef CFI_INFO_DEF +#define CFI_INFO(fmt...) DWC_PRINTF("CFI: " fmt); +#else +#define CFI_INFO(fmt...) +#endif + +#define min(x,y) ({ \ + x < y ? x : y; }) + +#define max(x,y) ({ \ + x > y ? x : y; }) + +/** + * Descriptor DMA SG Buffer setup structure (SG buffer). This structure is + * also used for setting up a buffer for Circular DDMA. + */ +struct _ddma_sg_buffer_setup { +#define BS_SG_VAL_DESC_LEN 6 + /* The OUT EP address */ + uint8_t bOutEndpointAddress; + /* The IN EP address */ + uint8_t bInEndpointAddress; + /* Number of bytes to put between transfer segments (must be DWORD boundaries) */ + uint8_t bOffset; + /* The number of transfer segments (a DMA descriptors per each segment) */ + uint8_t bCount; + /* Size (in byte) of each transfer segment */ + uint16_t wSize; +} __attribute__ ((packed)); +typedef struct _ddma_sg_buffer_setup ddma_sg_buffer_setup_t; + +/** Descriptor DMA Concatenation Buffer setup structure */ +struct _ddma_concat_buffer_setup_hdr { +#define BS_CONCAT_VAL_HDR_LEN 4 + /* The endpoint for which the buffer is to be set up */ + uint8_t bEndpointAddress; + /* The count of descriptors to be used */ + uint8_t bDescCount; + /* The total size of the transfer */ + uint16_t wSize; +} __attribute__ ((packed)); +typedef struct _ddma_concat_buffer_setup_hdr ddma_concat_buffer_setup_hdr_t; + +/** Descriptor DMA Concatenation Buffer setup structure */ +struct _ddma_concat_buffer_setup { + /* The SG header */ + ddma_concat_buffer_setup_hdr_t hdr; + + /* The XFER sizes pointer (allocated dynamically) */ + uint16_t *wTxBytes; +} __attribute__ ((packed)); +typedef struct _ddma_concat_buffer_setup ddma_concat_buffer_setup_t; + +/** Descriptor DMA Alignment Buffer setup structure */ +struct _ddma_align_buffer_setup { +#define BS_ALIGN_VAL_HDR_LEN 2 + uint8_t bEndpointAddress; + uint8_t bAlign; +} __attribute__ ((packed)); +typedef struct _ddma_align_buffer_setup ddma_align_buffer_setup_t; + +/** Transmit FIFO Size setup structure */ +struct _tx_fifo_size_setup { + uint8_t bEndpointAddress; + uint16_t wDepth; +} __attribute__ ((packed)); +typedef struct _tx_fifo_size_setup tx_fifo_size_setup_t; + +/** Transmit FIFO Size setup structure */ +struct _rx_fifo_size_setup { + uint16_t wDepth; +} __attribute__ ((packed)); +typedef struct _rx_fifo_size_setup rx_fifo_size_setup_t; + +/** + * struct cfi_usb_ctrlrequest - the CFI implementation of the struct usb_ctrlrequest + * This structure encapsulates the standard usb_ctrlrequest and adds a pointer + * to the data returned in the data stage of a 3-stage Control Write requests. + */ +struct cfi_usb_ctrlrequest { + uint8_t bRequestType; + uint8_t bRequest; + uint16_t wValue; + uint16_t wIndex; + uint16_t wLength; + uint8_t *data; +} UPACKED; + +/*---------------------------------------------------------------------------*/ + +/** + * The CFI wrapper of the enabled and activated dwc_otg_pcd_ep structures. + * This structure is used to store the buffer setup data for any + * enabled endpoint in the PCD. + */ +struct cfi_ep { + /* Entry for the list container */ + dwc_list_link_t lh; + /* Pointer to the active PCD endpoint structure */ + struct dwc_otg_pcd_ep *ep; + /* The last descriptor in the chain of DMA descriptors of the endpoint */ + struct dwc_otg_dma_desc *dma_desc_last; + /* The SG feature value */ + ddma_sg_buffer_setup_t *bm_sg; + /* The Circular feature value */ + ddma_sg_buffer_setup_t *bm_circ; + /* The Concatenation feature value */ + ddma_concat_buffer_setup_t *bm_concat; + /* The Alignment feature value */ + ddma_align_buffer_setup_t *bm_align; + /* XFER length */ + uint32_t xfer_len; + /* + * Count of DMA descriptors currently used. + * The total should not exceed the MAX_DMA_DESCS_PER_EP value + * defined in the dwc_otg_cil.h + */ + uint32_t desc_count; +}; +typedef struct cfi_ep cfi_ep_t; + +typedef struct cfi_dma_buff { +#define CFI_IN_BUF_LEN 1024 +#define CFI_OUT_BUF_LEN 1024 + dma_addr_t addr; + uint8_t *buf; +} cfi_dma_buff_t; + +struct cfiobject; + +/** + * This is the interface for the CFI operations. + * + * @param ep_enable Called when any endpoint is enabled and activated. + * @param release Called when the CFI object is released and it needs to correctly + * deallocate the dynamic memory + * @param ctrl_write_complete Called when the data stage of the request is complete + */ +typedef struct cfi_ops { + int (*ep_enable) (struct cfiobject * cfi, struct dwc_otg_pcd * pcd, + struct dwc_otg_pcd_ep * ep); + void *(*ep_alloc_buf) (struct cfiobject * cfi, struct dwc_otg_pcd * pcd, + struct dwc_otg_pcd_ep * ep, dma_addr_t * dma, + unsigned size, gfp_t flags); + void (*release) (struct cfiobject * cfi); + int (*ctrl_write_complete) (struct cfiobject * cfi, + struct dwc_otg_pcd * pcd); + void (*build_descriptors) (struct cfiobject * cfi, + struct dwc_otg_pcd * pcd, + struct dwc_otg_pcd_ep * ep, + dwc_otg_pcd_request_t * req); +} cfi_ops_t; + +struct cfiobject { + cfi_ops_t ops; + struct dwc_otg_pcd *pcd; + struct usb_gadget *gadget; + + /* Buffers used to send/receive CFI-related request data */ + cfi_dma_buff_t buf_in; + cfi_dma_buff_t buf_out; + + /* CFI specific Control request wrapper */ + struct cfi_usb_ctrlrequest ctrl_req; + + /* The list of active EP's in the PCD of type cfi_ep_t */ + dwc_list_link_t active_eps; + + /* This flag shall control the propagation of a specific request + * to the gadget's processing routines. + * 0 - no gadget handling + * 1 - the gadget needs to know about this request (w/o completing a status + * phase - just return a 0 to the _setup callback) + */ + uint8_t need_gadget_att; + + /* Flag indicating whether the status IN phase needs to be + * completed by the PCD + */ + uint8_t need_status_in_complete; +}; +typedef struct cfiobject cfiobject_t; + +#define DUMP_MSG + +#if defined(DUMP_MSG) +static inline void dump_msg(const u8 * buf, unsigned int length) +{ + unsigned int start, num, i; + char line[52], *p; + + if (length >= 512) + return; + + start = 0; + while (length > 0) { + num = min(length, 16u); + p = line; + for (i = 0; i < num; ++i) { + if (i == 8) + *p++ = ' '; + DWC_SPRINTF(p, " %02x", buf[i]); + p += 3; + } + *p = 0; + DWC_DEBUG("%6x: %s\n", start, line); + buf += num; + start += num; + length -= num; + } +} +#else +static inline void dump_msg(const u8 * buf, unsigned int length) +{ +} +#endif + +/** + * This function returns a pointer to cfi_ep_t object with the addr address. + */ +static inline struct cfi_ep *get_cfi_ep_by_addr(struct cfiobject *cfi, + uint8_t addr) +{ + struct cfi_ep *pcfiep; + dwc_list_link_t *tmp; + + DWC_LIST_FOREACH(tmp, &cfi->active_eps) { + pcfiep = DWC_LIST_ENTRY(tmp, struct cfi_ep, lh); + + if (pcfiep->ep->desc->bEndpointAddress == addr) { + return pcfiep; + } + } + + return NULL; +} + +/** + * This function returns a pointer to cfi_ep_t object that matches + * the dwc_otg_pcd_ep object. + */ +static inline struct cfi_ep *get_cfi_ep_by_pcd_ep(struct cfiobject *cfi, + struct dwc_otg_pcd_ep *ep) +{ + struct cfi_ep *pcfiep = NULL; + dwc_list_link_t *tmp; + + DWC_LIST_FOREACH(tmp, &cfi->active_eps) { + pcfiep = DWC_LIST_ENTRY(tmp, struct cfi_ep, lh); + if (pcfiep->ep == ep) { + return pcfiep; + } + } + return NULL; +} + +int cfi_setup(struct dwc_otg_pcd *pcd, struct cfi_usb_ctrlrequest *ctrl); + +#endif /* (__DWC_OTG_CFI_H__) */ --- linux-raspi2-4.2.0.orig/drivers/usb/host/dwc_otg/dwc_otg_cil.c +++ linux-raspi2-4.2.0/drivers/usb/host/dwc_otg/dwc_otg_cil.c @@ -0,0 +1,7141 @@ +/* ========================================================================== + * $File: //dwh/usb_iip/dev/software/otg/linux/drivers/dwc_otg_cil.c $ + * $Revision: #191 $ + * $Date: 2012/08/10 $ + * $Change: 2047372 $ + * + * Synopsys HS OTG Linux Software Driver and documentation (hereinafter, + * "Software") is an Unsupported proprietary work of Synopsys, Inc. unless + * otherwise expressly agreed to in writing between Synopsys and you. + * + * The Software IS NOT an item of Licensed Software or Licensed Product under + * any End User Software License Agreement or Agreement for Licensed Product + * with Synopsys or any supplement thereto. You are permitted to use and + * redistribute this Software in source and binary forms, with or without + * modification, provided that redistributions of source code must retain this + * notice. You may not view, use, disclose, copy or distribute this file or + * any information contained herein except pursuant to this license grant from + * Synopsys. If you do not agree with this notice, including the disclaimer + * below, then you are not authorized to use the Software. + * + * THIS SOFTWARE IS BEING DISTRIBUTED BY SYNOPSYS SOLELY ON AN "AS IS" BASIS + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE HEREBY DISCLAIMED. IN NO EVENT SHALL SYNOPSYS BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH + * DAMAGE. + * ========================================================================== */ + +/** @file + * + * The Core Interface Layer provides basic services for accessing and + * managing the DWC_otg hardware. These services are used by both the + * Host Controller Driver and the Peripheral Controller Driver. + * + * The CIL manages the memory map for the core so that the HCD and PCD + * don't have to do this separately. It also handles basic tasks like + * reading/writing the registers and data FIFOs in the controller. + * Some of the data access functions provide encapsulation of several + * operations required to perform a task, such as writing multiple + * registers to start a transfer. Finally, the CIL performs basic + * services that are not specific to either the host or device modes + * of operation. These services include management of the OTG Host + * Negotiation Protocol (HNP) and Session Request Protocol (SRP). A + * Diagnostic API is also provided to allow testing of the controller + * hardware. + * + * The Core Interface Layer has the following requirements: + * - Provides basic controller operations. + * - Minimal use of OS services. + * - The OS services used will be abstracted by using inline functions + * or macros. + * + */ + +#include "dwc_os.h" +#include "dwc_otg_regs.h" +#include "dwc_otg_cil.h" + +static int dwc_otg_setup_params(dwc_otg_core_if_t * core_if); + +/** + * This function is called to initialize the DWC_otg CSR data + * structures. The register addresses in the device and host + * structures are initialized from the base address supplied by the + * caller. The calling function must make the OS calls to get the + * base address of the DWC_otg controller registers. The core_params + * argument holds the parameters that specify how the core should be + * configured. + * + * @param reg_base_addr Base address of DWC_otg core registers + * + */ +dwc_otg_core_if_t *dwc_otg_cil_init(const uint32_t * reg_base_addr) +{ + dwc_otg_core_if_t *core_if = 0; + dwc_otg_dev_if_t *dev_if = 0; + dwc_otg_host_if_t *host_if = 0; + uint8_t *reg_base = (uint8_t *) reg_base_addr; + int i = 0; + + DWC_DEBUGPL(DBG_CILV, "%s(%p)\n", __func__, reg_base_addr); + + core_if = DWC_ALLOC(sizeof(dwc_otg_core_if_t)); + + if (core_if == NULL) { + DWC_DEBUGPL(DBG_CIL, + "Allocation of dwc_otg_core_if_t failed\n"); + return 0; + } + core_if->core_global_regs = (dwc_otg_core_global_regs_t *) reg_base; + + /* + * Allocate the Device Mode structures. + */ + dev_if = DWC_ALLOC(sizeof(dwc_otg_dev_if_t)); + + if (dev_if == NULL) { + DWC_DEBUGPL(DBG_CIL, "Allocation of dwc_otg_dev_if_t failed\n"); + DWC_FREE(core_if); + return 0; + } + + dev_if->dev_global_regs = + (dwc_otg_device_global_regs_t *) (reg_base + + DWC_DEV_GLOBAL_REG_OFFSET); + + for (i = 0; i < MAX_EPS_CHANNELS; i++) { + dev_if->in_ep_regs[i] = (dwc_otg_dev_in_ep_regs_t *) + (reg_base + DWC_DEV_IN_EP_REG_OFFSET + + (i * DWC_EP_REG_OFFSET)); + + dev_if->out_ep_regs[i] = (dwc_otg_dev_out_ep_regs_t *) + (reg_base + DWC_DEV_OUT_EP_REG_OFFSET + + (i * DWC_EP_REG_OFFSET)); + DWC_DEBUGPL(DBG_CILV, "in_ep_regs[%d]->diepctl=%p\n", + i, &dev_if->in_ep_regs[i]->diepctl); + DWC_DEBUGPL(DBG_CILV, "out_ep_regs[%d]->doepctl=%p\n", + i, &dev_if->out_ep_regs[i]->doepctl); + } + + dev_if->speed = 0; // unknown + + core_if->dev_if = dev_if; + + /* + * Allocate the Host Mode structures. + */ + host_if = DWC_ALLOC(sizeof(dwc_otg_host_if_t)); + + if (host_if == NULL) { + DWC_DEBUGPL(DBG_CIL, + "Allocation of dwc_otg_host_if_t failed\n"); + DWC_FREE(dev_if); + DWC_FREE(core_if); + return 0; + } + + host_if->host_global_regs = (dwc_otg_host_global_regs_t *) + (reg_base + DWC_OTG_HOST_GLOBAL_REG_OFFSET); + + host_if->hprt0 = + (uint32_t *) (reg_base + DWC_OTG_HOST_PORT_REGS_OFFSET); + + for (i = 0; i < MAX_EPS_CHANNELS; i++) { + host_if->hc_regs[i] = (dwc_otg_hc_regs_t *) + (reg_base + DWC_OTG_HOST_CHAN_REGS_OFFSET + + (i * DWC_OTG_CHAN_REGS_OFFSET)); + DWC_DEBUGPL(DBG_CILV, "hc_reg[%d]->hcchar=%p\n", + i, &host_if->hc_regs[i]->hcchar); + } + + host_if->num_host_channels = MAX_EPS_CHANNELS; + core_if->host_if = host_if; + + for (i = 0; i < MAX_EPS_CHANNELS; i++) { + core_if->data_fifo[i] = + (uint32_t *) (reg_base + DWC_OTG_DATA_FIFO_OFFSET + + (i * DWC_OTG_DATA_FIFO_SIZE)); + DWC_DEBUGPL(DBG_CILV, "data_fifo[%d]=0x%08lx\n", + i, (unsigned long)core_if->data_fifo[i]); + } + + core_if->pcgcctl = (uint32_t *) (reg_base + DWC_OTG_PCGCCTL_OFFSET); + + /* Initiate lx_state to L3 disconnected state */ + core_if->lx_state = DWC_OTG_L3; + /* + * Store the contents of the hardware configuration registers here for + * easy access later. + */ + core_if->hwcfg1.d32 = + DWC_READ_REG32(&core_if->core_global_regs->ghwcfg1); + core_if->hwcfg2.d32 = + DWC_READ_REG32(&core_if->core_global_regs->ghwcfg2); + core_if->hwcfg3.d32 = + DWC_READ_REG32(&core_if->core_global_regs->ghwcfg3); + core_if->hwcfg4.d32 = + DWC_READ_REG32(&core_if->core_global_regs->ghwcfg4); + + /* Force host mode to get HPTXFSIZ exact power on value */ + { + gusbcfg_data_t gusbcfg = {.d32 = 0 }; + gusbcfg.d32 = DWC_READ_REG32(&core_if->core_global_regs->gusbcfg); + gusbcfg.b.force_host_mode = 1; + DWC_WRITE_REG32(&core_if->core_global_regs->gusbcfg, gusbcfg.d32); + dwc_mdelay(100); + core_if->hptxfsiz.d32 = + DWC_READ_REG32(&core_if->core_global_regs->hptxfsiz); + gusbcfg.d32 = DWC_READ_REG32(&core_if->core_global_regs->gusbcfg); + gusbcfg.b.force_host_mode = 1; + DWC_WRITE_REG32(&core_if->core_global_regs->gusbcfg, gusbcfg.d32); + dwc_mdelay(100); + } + + DWC_DEBUGPL(DBG_CILV, "hwcfg1=%08x\n", core_if->hwcfg1.d32); + DWC_DEBUGPL(DBG_CILV, "hwcfg2=%08x\n", core_if->hwcfg2.d32); + DWC_DEBUGPL(DBG_CILV, "hwcfg3=%08x\n", core_if->hwcfg3.d32); + DWC_DEBUGPL(DBG_CILV, "hwcfg4=%08x\n", core_if->hwcfg4.d32); + + core_if->hcfg.d32 = + DWC_READ_REG32(&core_if->host_if->host_global_regs->hcfg); + core_if->dcfg.d32 = + DWC_READ_REG32(&core_if->dev_if->dev_global_regs->dcfg); + + DWC_DEBUGPL(DBG_CILV, "hcfg=%08x\n", core_if->hcfg.d32); + DWC_DEBUGPL(DBG_CILV, "dcfg=%08x\n", core_if->dcfg.d32); + + DWC_DEBUGPL(DBG_CILV, "op_mode=%0x\n", core_if->hwcfg2.b.op_mode); + DWC_DEBUGPL(DBG_CILV, "arch=%0x\n", core_if->hwcfg2.b.architecture); + DWC_DEBUGPL(DBG_CILV, "num_dev_ep=%d\n", core_if->hwcfg2.b.num_dev_ep); + DWC_DEBUGPL(DBG_CILV, "num_host_chan=%d\n", + core_if->hwcfg2.b.num_host_chan); + DWC_DEBUGPL(DBG_CILV, "nonperio_tx_q_depth=0x%0x\n", + core_if->hwcfg2.b.nonperio_tx_q_depth); + DWC_DEBUGPL(DBG_CILV, "host_perio_tx_q_depth=0x%0x\n", + core_if->hwcfg2.b.host_perio_tx_q_depth); + DWC_DEBUGPL(DBG_CILV, "dev_token_q_depth=0x%0x\n", + core_if->hwcfg2.b.dev_token_q_depth); + + DWC_DEBUGPL(DBG_CILV, "Total FIFO SZ=%d\n", + core_if->hwcfg3.b.dfifo_depth); + DWC_DEBUGPL(DBG_CILV, "xfer_size_cntr_width=%0x\n", + core_if->hwcfg3.b.xfer_size_cntr_width); + + /* + * Set the SRP sucess bit for FS-I2c + */ + core_if->srp_success = 0; + core_if->srp_timer_started = 0; + + /* + * Create new workqueue and init works + */ + core_if->wq_otg = DWC_WORKQ_ALLOC("dwc_otg"); + if (core_if->wq_otg == 0) { + DWC_WARN("DWC_WORKQ_ALLOC failed\n"); + DWC_FREE(host_if); + DWC_FREE(dev_if); + DWC_FREE(core_if); + return 0; + } + + core_if->snpsid = DWC_READ_REG32(&core_if->core_global_regs->gsnpsid); + + DWC_PRINTF("Core Release: %x.%x%x%x\n", + (core_if->snpsid >> 12 & 0xF), + (core_if->snpsid >> 8 & 0xF), + (core_if->snpsid >> 4 & 0xF), (core_if->snpsid & 0xF)); + + core_if->wkp_timer = DWC_TIMER_ALLOC("Wake Up Timer", + w_wakeup_detected, core_if); + if (core_if->wkp_timer == 0) { + DWC_WARN("DWC_TIMER_ALLOC failed\n"); + DWC_FREE(host_if); + DWC_FREE(dev_if); + DWC_WORKQ_FREE(core_if->wq_otg); + DWC_FREE(core_if); + return 0; + } + + if (dwc_otg_setup_params(core_if)) { + DWC_WARN("Error while setting core params\n"); + } + + core_if->hibernation_suspend = 0; + + /** ADP initialization */ + dwc_otg_adp_init(core_if); + + return core_if; +} + +/** + * This function frees the structures allocated by dwc_otg_cil_init(). + * + * @param core_if The core interface pointer returned from + * dwc_otg_cil_init(). + * + */ +void dwc_otg_cil_remove(dwc_otg_core_if_t * core_if) +{ + dctl_data_t dctl = {.d32 = 0 }; + DWC_DEBUGPL(DBG_CILV, "%s(%p)\n", __func__, core_if); + + /* Disable all interrupts */ + DWC_MODIFY_REG32(&core_if->core_global_regs->gahbcfg, 1, 0); + DWC_WRITE_REG32(&core_if->core_global_regs->gintmsk, 0); + + dctl.b.sftdiscon = 1; + if (core_if->snpsid >= OTG_CORE_REV_3_00a) { + DWC_MODIFY_REG32(&core_if->dev_if->dev_global_regs->dctl, 0, + dctl.d32); + } + + if (core_if->wq_otg) { + DWC_WORKQ_WAIT_WORK_DONE(core_if->wq_otg, 500); + DWC_WORKQ_FREE(core_if->wq_otg); + } + if (core_if->dev_if) { + DWC_FREE(core_if->dev_if); + } + if (core_if->host_if) { + DWC_FREE(core_if->host_if); + } + + /** Remove ADP Stuff */ + dwc_otg_adp_remove(core_if); + if (core_if->core_params) { + DWC_FREE(core_if->core_params); + } + if (core_if->wkp_timer) { + DWC_TIMER_FREE(core_if->wkp_timer); + } + if (core_if->srp_timer) { + DWC_TIMER_FREE(core_if->srp_timer); + } + DWC_FREE(core_if); +} + +/** + * This function enables the controller's Global Interrupt in the AHB Config + * register. + * + * @param core_if Programming view of DWC_otg controller. + */ +void dwc_otg_enable_global_interrupts(dwc_otg_core_if_t * core_if) +{ + gahbcfg_data_t ahbcfg = {.d32 = 0 }; + ahbcfg.b.glblintrmsk = 1; /* Enable interrupts */ + DWC_MODIFY_REG32(&core_if->core_global_regs->gahbcfg, 0, ahbcfg.d32); +} + +/** + * This function disables the controller's Global Interrupt in the AHB Config + * register. + * + * @param core_if Programming view of DWC_otg controller. + */ +void dwc_otg_disable_global_interrupts(dwc_otg_core_if_t * core_if) +{ + gahbcfg_data_t ahbcfg = {.d32 = 0 }; + ahbcfg.b.glblintrmsk = 1; /* Disable interrupts */ + DWC_MODIFY_REG32(&core_if->core_global_regs->gahbcfg, ahbcfg.d32, 0); +} + +/** + * This function initializes the commmon interrupts, used in both + * device and host modes. + * + * @param core_if Programming view of the DWC_otg controller + * + */ +static void dwc_otg_enable_common_interrupts(dwc_otg_core_if_t * core_if) +{ + dwc_otg_core_global_regs_t *global_regs = core_if->core_global_regs; + gintmsk_data_t intr_mask = {.d32 = 0 }; + + /* Clear any pending OTG Interrupts */ + DWC_WRITE_REG32(&global_regs->gotgint, 0xFFFFFFFF); + + /* Clear any pending interrupts */ + DWC_WRITE_REG32(&global_regs->gintsts, 0xFFFFFFFF); + + /* + * Enable the interrupts in the GINTMSK. + */ + intr_mask.b.modemismatch = 1; + intr_mask.b.otgintr = 1; + + if (!core_if->dma_enable) { + intr_mask.b.rxstsqlvl = 1; + } + + intr_mask.b.conidstschng = 1; + intr_mask.b.wkupintr = 1; + intr_mask.b.disconnect = 0; + intr_mask.b.usbsuspend = 1; + intr_mask.b.sessreqintr = 1; +#ifdef CONFIG_USB_DWC_OTG_LPM + if (core_if->core_params->lpm_enable) { + intr_mask.b.lpmtranrcvd = 1; + } +#endif + DWC_WRITE_REG32(&global_regs->gintmsk, intr_mask.d32); +} + +/* + * The restore operation is modified to support Synopsys Emulated Powerdown and + * Hibernation. This function is for exiting from Device mode hibernation by + * Host Initiated Resume/Reset and Device Initiated Remote-Wakeup. + * @param core_if Programming view of DWC_otg controller. + * @param rem_wakeup - indicates whether resume is initiated by Device or Host. + * @param reset - indicates whether resume is initiated by Reset. + */ +int dwc_otg_device_hibernation_restore(dwc_otg_core_if_t * core_if, + int rem_wakeup, int reset) +{ + gpwrdn_data_t gpwrdn = {.d32 = 0 }; + pcgcctl_data_t pcgcctl = {.d32 = 0 }; + dctl_data_t dctl = {.d32 = 0 }; + + int timeout = 2000; + + if (!core_if->hibernation_suspend) { + DWC_PRINTF("Already exited from Hibernation\n"); + return 1; + } + + DWC_DEBUGPL(DBG_PCD, "%s called\n", __FUNCTION__); + /* Switch-on voltage to the core */ + gpwrdn.b.pwrdnswtch = 1; + DWC_MODIFY_REG32(&core_if->core_global_regs->gpwrdn, gpwrdn.d32, 0); + dwc_udelay(10); + + /* Reset core */ + gpwrdn.d32 = 0; + gpwrdn.b.pwrdnrstn = 1; + DWC_MODIFY_REG32(&core_if->core_global_regs->gpwrdn, gpwrdn.d32, 0); + dwc_udelay(10); + + /* Assert Restore signal */ + gpwrdn.d32 = 0; + gpwrdn.b.restore = 1; + DWC_MODIFY_REG32(&core_if->core_global_regs->gpwrdn, 0, gpwrdn.d32); + dwc_udelay(10); + + /* Disable power clamps */ + gpwrdn.d32 = 0; + gpwrdn.b.pwrdnclmp = 1; + DWC_MODIFY_REG32(&core_if->core_global_regs->gpwrdn, gpwrdn.d32, 0); + + if (rem_wakeup) { + dwc_udelay(70); + } + + /* Deassert Reset core */ + gpwrdn.d32 = 0; + gpwrdn.b.pwrdnrstn = 1; + DWC_MODIFY_REG32(&core_if->core_global_regs->gpwrdn, 0, gpwrdn.d32); + dwc_udelay(10); + + /* Disable PMU interrupt */ + gpwrdn.d32 = 0; + gpwrdn.b.pmuintsel = 1; + DWC_MODIFY_REG32(&core_if->core_global_regs->gpwrdn, gpwrdn.d32, 0); + + /* Mask interrupts from gpwrdn */ + gpwrdn.d32 = 0; + gpwrdn.b.connect_det_msk = 1; + gpwrdn.b.srp_det_msk = 1; + gpwrdn.b.disconn_det_msk = 1; + gpwrdn.b.rst_det_msk = 1; + gpwrdn.b.lnstchng_msk = 1; + DWC_MODIFY_REG32(&core_if->core_global_regs->gpwrdn, gpwrdn.d32, 0); + + /* Indicates that we are going out from hibernation */ + core_if->hibernation_suspend = 0; + + /* + * Set Restore Essential Regs bit in PCGCCTL register, restore_mode = 1 + * indicates restore from remote_wakeup + */ + restore_essential_regs(core_if, rem_wakeup, 0); + + /* + * Wait a little for seeing new value of variable hibernation_suspend if + * Restore done interrupt received before polling + */ + dwc_udelay(10); + + if (core_if->hibernation_suspend == 0) { + /* + * Wait For Restore_done Interrupt. This mechanism of polling the + * interrupt is introduced to avoid any possible race conditions + */ + do { + gintsts_data_t gintsts; + gintsts.d32 = + DWC_READ_REG32(&core_if->core_global_regs->gintsts); + if (gintsts.b.restoredone) { + gintsts.d32 = 0; + gintsts.b.restoredone = 1; + DWC_WRITE_REG32(&core_if->core_global_regs-> + gintsts, gintsts.d32); + DWC_PRINTF("Restore Done Interrupt seen\n"); + break; + } + dwc_udelay(10); + } while (--timeout); + if (!timeout) { + DWC_PRINTF("Restore Done interrupt wasn't generated here\n"); + } + } + /* Clear all pending interupts */ + DWC_WRITE_REG32(&core_if->core_global_regs->gintsts, 0xFFFFFFFF); + + /* De-assert Restore */ + gpwrdn.d32 = 0; + gpwrdn.b.restore = 1; + DWC_MODIFY_REG32(&core_if->core_global_regs->gpwrdn, gpwrdn.d32, 0); + dwc_udelay(10); + + if (!rem_wakeup) { + pcgcctl.d32 = 0; + pcgcctl.b.rstpdwnmodule = 1; + DWC_MODIFY_REG32(core_if->pcgcctl, pcgcctl.d32, 0); + } + + /* Restore GUSBCFG and DCFG */ + DWC_WRITE_REG32(&core_if->core_global_regs->gusbcfg, + core_if->gr_backup->gusbcfg_local); + DWC_WRITE_REG32(&core_if->dev_if->dev_global_regs->dcfg, + core_if->dr_backup->dcfg); + + /* De-assert Wakeup Logic */ + gpwrdn.d32 = 0; + gpwrdn.b.pmuactv = 1; + DWC_MODIFY_REG32(&core_if->core_global_regs->gpwrdn, gpwrdn.d32, 0); + dwc_udelay(10); + + if (!rem_wakeup) { + /* Set Device programming done bit */ + dctl.b.pwronprgdone = 1; + DWC_MODIFY_REG32(&core_if->dev_if->dev_global_regs->dctl, 0, dctl.d32); + } else { + /* Start Remote Wakeup Signaling */ + dctl.d32 = core_if->dr_backup->dctl; + dctl.b.rmtwkupsig = 1; + DWC_WRITE_REG32(&core_if->dev_if->dev_global_regs->dctl, dctl.d32); + } + + dwc_mdelay(2); + /* Clear all pending interupts */ + DWC_WRITE_REG32(&core_if->core_global_regs->gintsts, 0xFFFFFFFF); + + /* Restore global registers */ + dwc_otg_restore_global_regs(core_if); + /* Restore device global registers */ + dwc_otg_restore_dev_regs(core_if, rem_wakeup); + + if (rem_wakeup) { + dwc_mdelay(7); + dctl.d32 = 0; + dctl.b.rmtwkupsig = 1; + DWC_MODIFY_REG32(&core_if->dev_if->dev_global_regs->dctl, dctl.d32, 0); + } + + core_if->hibernation_suspend = 0; + /* The core will be in ON STATE */ + core_if->lx_state = DWC_OTG_L0; + DWC_PRINTF("Hibernation recovery completes here\n"); + + return 1; +} + +/* + * The restore operation is modified to support Synopsys Emulated Powerdown and + * Hibernation. This function is for exiting from Host mode hibernation by + * Host Initiated Resume/Reset and Device Initiated Remote-Wakeup. + * @param core_if Programming view of DWC_otg controller. + * @param rem_wakeup - indicates whether resume is initiated by Device or Host. + * @param reset - indicates whether resume is initiated by Reset. + */ +int dwc_otg_host_hibernation_restore(dwc_otg_core_if_t * core_if, + int rem_wakeup, int reset) +{ + gpwrdn_data_t gpwrdn = {.d32 = 0 }; + hprt0_data_t hprt0 = {.d32 = 0 }; + + int timeout = 2000; + + DWC_DEBUGPL(DBG_HCD, "%s called\n", __FUNCTION__); + /* Switch-on voltage to the core */ + gpwrdn.b.pwrdnswtch = 1; + DWC_MODIFY_REG32(&core_if->core_global_regs->gpwrdn, gpwrdn.d32, 0); + dwc_udelay(10); + + /* Reset core */ + gpwrdn.d32 = 0; + gpwrdn.b.pwrdnrstn = 1; + DWC_MODIFY_REG32(&core_if->core_global_regs->gpwrdn, gpwrdn.d32, 0); + dwc_udelay(10); + + /* Assert Restore signal */ + gpwrdn.d32 = 0; + gpwrdn.b.restore = 1; + DWC_MODIFY_REG32(&core_if->core_global_regs->gpwrdn, 0, gpwrdn.d32); + dwc_udelay(10); + + /* Disable power clamps */ + gpwrdn.d32 = 0; + gpwrdn.b.pwrdnclmp = 1; + DWC_MODIFY_REG32(&core_if->core_global_regs->gpwrdn, gpwrdn.d32, 0); + + if (!rem_wakeup) { + dwc_udelay(50); + } + + /* Deassert Reset core */ + gpwrdn.d32 = 0; + gpwrdn.b.pwrdnrstn = 1; + DWC_MODIFY_REG32(&core_if->core_global_regs->gpwrdn, 0, gpwrdn.d32); + dwc_udelay(10); + + /* Disable PMU interrupt */ + gpwrdn.d32 = 0; + gpwrdn.b.pmuintsel = 1; + DWC_MODIFY_REG32(&core_if->core_global_regs->gpwrdn, gpwrdn.d32, 0); + + gpwrdn.d32 = 0; + gpwrdn.b.connect_det_msk = 1; + gpwrdn.b.srp_det_msk = 1; + gpwrdn.b.disconn_det_msk = 1; + gpwrdn.b.rst_det_msk = 1; + gpwrdn.b.lnstchng_msk = 1; + DWC_MODIFY_REG32(&core_if->core_global_regs->gpwrdn, gpwrdn.d32, 0); + + /* Indicates that we are going out from hibernation */ + core_if->hibernation_suspend = 0; + + /* Set Restore Essential Regs bit in PCGCCTL register */ + restore_essential_regs(core_if, rem_wakeup, 1); + + /* Wait a little for seeing new value of variable hibernation_suspend if + * Restore done interrupt received before polling */ + dwc_udelay(10); + + if (core_if->hibernation_suspend == 0) { + /* Wait For Restore_done Interrupt. This mechanism of polling the + * interrupt is introduced to avoid any possible race conditions + */ + do { + gintsts_data_t gintsts; + gintsts.d32 = DWC_READ_REG32(&core_if->core_global_regs->gintsts); + if (gintsts.b.restoredone) { + gintsts.d32 = 0; + gintsts.b.restoredone = 1; + DWC_WRITE_REG32(&core_if->core_global_regs->gintsts, gintsts.d32); + DWC_DEBUGPL(DBG_HCD,"Restore Done Interrupt seen\n"); + break; + } + dwc_udelay(10); + } while (--timeout); + if (!timeout) { + DWC_WARN("Restore Done interrupt wasn't generated\n"); + } + } + + /* Set the flag's value to 0 again after receiving restore done interrupt */ + core_if->hibernation_suspend = 0; + + /* This step is not described in functional spec but if not wait for this + * delay, mismatch interrupts occurred because just after restore core is + * in Device mode(gintsts.curmode == 0) */ + dwc_mdelay(100); + + /* Clear all pending interrupts */ + DWC_WRITE_REG32(&core_if->core_global_regs->gintsts, 0xFFFFFFFF); + + /* De-assert Restore */ + gpwrdn.d32 = 0; + gpwrdn.b.restore = 1; + DWC_MODIFY_REG32(&core_if->core_global_regs->gpwrdn, gpwrdn.d32, 0); + dwc_udelay(10); + + /* Restore GUSBCFG and HCFG */ + DWC_WRITE_REG32(&core_if->core_global_regs->gusbcfg, + core_if->gr_backup->gusbcfg_local); + DWC_WRITE_REG32(&core_if->host_if->host_global_regs->hcfg, + core_if->hr_backup->hcfg_local); + + /* De-assert Wakeup Logic */ + gpwrdn.d32 = 0; + gpwrdn.b.pmuactv = 1; + DWC_MODIFY_REG32(&core_if->core_global_regs->gpwrdn, gpwrdn.d32, 0); + dwc_udelay(10); + + /* Start the Resume operation by programming HPRT0 */ + hprt0.d32 = core_if->hr_backup->hprt0_local; + hprt0.b.prtpwr = 1; + hprt0.b.prtena = 0; + hprt0.b.prtsusp = 0; + DWC_WRITE_REG32(core_if->host_if->hprt0, hprt0.d32); + + DWC_PRINTF("Resume Starts Now\n"); + if (!reset) { // Indicates it is Resume Operation + hprt0.d32 = core_if->hr_backup->hprt0_local; + hprt0.b.prtres = 1; + hprt0.b.prtpwr = 1; + hprt0.b.prtena = 0; + hprt0.b.prtsusp = 0; + DWC_WRITE_REG32(core_if->host_if->hprt0, hprt0.d32); + + if (!rem_wakeup) + hprt0.b.prtres = 0; + /* Wait for Resume time and then program HPRT again */ + dwc_mdelay(100); + DWC_WRITE_REG32(core_if->host_if->hprt0, hprt0.d32); + + } else { // Indicates it is Reset Operation + hprt0.d32 = core_if->hr_backup->hprt0_local; + hprt0.b.prtrst = 1; + hprt0.b.prtpwr = 1; + hprt0.b.prtena = 0; + hprt0.b.prtsusp = 0; + DWC_WRITE_REG32(core_if->host_if->hprt0, hprt0.d32); + /* Wait for Reset time and then program HPRT again */ + dwc_mdelay(60); + hprt0.b.prtrst = 0; + DWC_WRITE_REG32(core_if->host_if->hprt0, hprt0.d32); + } + /* Clear all interrupt status */ + hprt0.d32 = dwc_otg_read_hprt0(core_if); + hprt0.b.prtconndet = 1; + hprt0.b.prtenchng = 1; + DWC_WRITE_REG32(core_if->host_if->hprt0, hprt0.d32); + + /* Clear all pending interupts */ + DWC_WRITE_REG32(&core_if->core_global_regs->gintsts, 0xFFFFFFFF); + + /* Restore global registers */ + dwc_otg_restore_global_regs(core_if); + /* Restore host global registers */ + dwc_otg_restore_host_regs(core_if, reset); + + /* The core will be in ON STATE */ + core_if->lx_state = DWC_OTG_L0; + DWC_PRINTF("Hibernation recovery is complete here\n"); + return 0; +} + +/** Saves some register values into system memory. */ +int dwc_otg_save_global_regs(dwc_otg_core_if_t * core_if) +{ + struct dwc_otg_global_regs_backup *gr; + int i; + + gr = core_if->gr_backup; + if (!gr) { + gr = DWC_ALLOC(sizeof(*gr)); + if (!gr) { + return -DWC_E_NO_MEMORY; + } + core_if->gr_backup = gr; + } + + gr->gotgctl_local = DWC_READ_REG32(&core_if->core_global_regs->gotgctl); + gr->gintmsk_local = DWC_READ_REG32(&core_if->core_global_regs->gintmsk); + gr->gahbcfg_local = DWC_READ_REG32(&core_if->core_global_regs->gahbcfg); + gr->gusbcfg_local = DWC_READ_REG32(&core_if->core_global_regs->gusbcfg); + gr->grxfsiz_local = DWC_READ_REG32(&core_if->core_global_regs->grxfsiz); + gr->gnptxfsiz_local = DWC_READ_REG32(&core_if->core_global_regs->gnptxfsiz); + gr->hptxfsiz_local = DWC_READ_REG32(&core_if->core_global_regs->hptxfsiz); +#ifdef CONFIG_USB_DWC_OTG_LPM + gr->glpmcfg_local = DWC_READ_REG32(&core_if->core_global_regs->glpmcfg); +#endif + gr->gi2cctl_local = DWC_READ_REG32(&core_if->core_global_regs->gi2cctl); + gr->pcgcctl_local = DWC_READ_REG32(core_if->pcgcctl); + gr->gdfifocfg_local = + DWC_READ_REG32(&core_if->core_global_regs->gdfifocfg); + for (i = 0; i < MAX_EPS_CHANNELS; i++) { + gr->dtxfsiz_local[i] = + DWC_READ_REG32(&(core_if->core_global_regs->dtxfsiz[i])); + } + + DWC_DEBUGPL(DBG_ANY, "===========Backing Global registers==========\n"); + DWC_DEBUGPL(DBG_ANY, "Backed up gotgctl = %08x\n", gr->gotgctl_local); + DWC_DEBUGPL(DBG_ANY, "Backed up gintmsk = %08x\n", gr->gintmsk_local); + DWC_DEBUGPL(DBG_ANY, "Backed up gahbcfg = %08x\n", gr->gahbcfg_local); + DWC_DEBUGPL(DBG_ANY, "Backed up gusbcfg = %08x\n", gr->gusbcfg_local); + DWC_DEBUGPL(DBG_ANY, "Backed up grxfsiz = %08x\n", gr->grxfsiz_local); + DWC_DEBUGPL(DBG_ANY, "Backed up gnptxfsiz = %08x\n", + gr->gnptxfsiz_local); + DWC_DEBUGPL(DBG_ANY, "Backed up hptxfsiz = %08x\n", + gr->hptxfsiz_local); +#ifdef CONFIG_USB_DWC_OTG_LPM + DWC_DEBUGPL(DBG_ANY, "Backed up glpmcfg = %08x\n", gr->glpmcfg_local); +#endif + DWC_DEBUGPL(DBG_ANY, "Backed up gi2cctl = %08x\n", gr->gi2cctl_local); + DWC_DEBUGPL(DBG_ANY, "Backed up pcgcctl = %08x\n", gr->pcgcctl_local); + DWC_DEBUGPL(DBG_ANY,"Backed up gdfifocfg = %08x\n",gr->gdfifocfg_local); + + return 0; +} + +/** Saves GINTMSK register before setting the msk bits. */ +int dwc_otg_save_gintmsk_reg(dwc_otg_core_if_t * core_if) +{ + struct dwc_otg_global_regs_backup *gr; + + gr = core_if->gr_backup; + if (!gr) { + gr = DWC_ALLOC(sizeof(*gr)); + if (!gr) { + return -DWC_E_NO_MEMORY; + } + core_if->gr_backup = gr; + } + + gr->gintmsk_local = DWC_READ_REG32(&core_if->core_global_regs->gintmsk); + + DWC_DEBUGPL(DBG_ANY,"=============Backing GINTMSK registers============\n"); + DWC_DEBUGPL(DBG_ANY, "Backed up gintmsk = %08x\n", gr->gintmsk_local); + + return 0; +} + +int dwc_otg_save_dev_regs(dwc_otg_core_if_t * core_if) +{ + struct dwc_otg_dev_regs_backup *dr; + int i; + + dr = core_if->dr_backup; + if (!dr) { + dr = DWC_ALLOC(sizeof(*dr)); + if (!dr) { + return -DWC_E_NO_MEMORY; + } + core_if->dr_backup = dr; + } + + dr->dcfg = DWC_READ_REG32(&core_if->dev_if->dev_global_regs->dcfg); + dr->dctl = DWC_READ_REG32(&core_if->dev_if->dev_global_regs->dctl); + dr->daintmsk = + DWC_READ_REG32(&core_if->dev_if->dev_global_regs->daintmsk); + dr->diepmsk = + DWC_READ_REG32(&core_if->dev_if->dev_global_regs->diepmsk); + dr->doepmsk = + DWC_READ_REG32(&core_if->dev_if->dev_global_regs->doepmsk); + + for (i = 0; i < core_if->dev_if->num_in_eps; ++i) { + dr->diepctl[i] = + DWC_READ_REG32(&core_if->dev_if->in_ep_regs[i]->diepctl); + dr->dieptsiz[i] = + DWC_READ_REG32(&core_if->dev_if->in_ep_regs[i]->dieptsiz); + dr->diepdma[i] = + DWC_READ_REG32(&core_if->dev_if->in_ep_regs[i]->diepdma); + } + + DWC_DEBUGPL(DBG_ANY, + "=============Backing Host registers==============\n"); + DWC_DEBUGPL(DBG_ANY, "Backed up dcfg = %08x\n", dr->dcfg); + DWC_DEBUGPL(DBG_ANY, "Backed up dctl = %08x\n", dr->dctl); + DWC_DEBUGPL(DBG_ANY, "Backed up daintmsk = %08x\n", + dr->daintmsk); + DWC_DEBUGPL(DBG_ANY, "Backed up diepmsk = %08x\n", dr->diepmsk); + DWC_DEBUGPL(DBG_ANY, "Backed up doepmsk = %08x\n", dr->doepmsk); + for (i = 0; i < core_if->dev_if->num_in_eps; ++i) { + DWC_DEBUGPL(DBG_ANY, "Backed up diepctl[%d] = %08x\n", i, + dr->diepctl[i]); + DWC_DEBUGPL(DBG_ANY, "Backed up dieptsiz[%d] = %08x\n", + i, dr->dieptsiz[i]); + DWC_DEBUGPL(DBG_ANY, "Backed up diepdma[%d] = %08x\n", i, + dr->diepdma[i]); + } + + return 0; +} + +int dwc_otg_save_host_regs(dwc_otg_core_if_t * core_if) +{ + struct dwc_otg_host_regs_backup *hr; + int i; + + hr = core_if->hr_backup; + if (!hr) { + hr = DWC_ALLOC(sizeof(*hr)); + if (!hr) { + return -DWC_E_NO_MEMORY; + } + core_if->hr_backup = hr; + } + + hr->hcfg_local = + DWC_READ_REG32(&core_if->host_if->host_global_regs->hcfg); + hr->haintmsk_local = + DWC_READ_REG32(&core_if->host_if->host_global_regs->haintmsk); + for (i = 0; i < dwc_otg_get_param_host_channels(core_if); ++i) { + hr->hcintmsk_local[i] = + DWC_READ_REG32(&core_if->host_if->hc_regs[i]->hcintmsk); + } + hr->hprt0_local = DWC_READ_REG32(core_if->host_if->hprt0); + hr->hfir_local = + DWC_READ_REG32(&core_if->host_if->host_global_regs->hfir); + + DWC_DEBUGPL(DBG_ANY, + "=============Backing Host registers===============\n"); + DWC_DEBUGPL(DBG_ANY, "Backed up hcfg = %08x\n", + hr->hcfg_local); + DWC_DEBUGPL(DBG_ANY, "Backed up haintmsk = %08x\n", hr->haintmsk_local); + for (i = 0; i < dwc_otg_get_param_host_channels(core_if); ++i) { + DWC_DEBUGPL(DBG_ANY, "Backed up hcintmsk[%02d]=%08x\n", i, + hr->hcintmsk_local[i]); + } + DWC_DEBUGPL(DBG_ANY, "Backed up hprt0 = %08x\n", + hr->hprt0_local); + DWC_DEBUGPL(DBG_ANY, "Backed up hfir = %08x\n", + hr->hfir_local); + + return 0; +} + +int dwc_otg_restore_global_regs(dwc_otg_core_if_t *core_if) +{ + struct dwc_otg_global_regs_backup *gr; + int i; + + gr = core_if->gr_backup; + if (!gr) { + return -DWC_E_INVALID; + } + + DWC_WRITE_REG32(&core_if->core_global_regs->gotgctl, gr->gotgctl_local); + DWC_WRITE_REG32(&core_if->core_global_regs->gintmsk, gr->gintmsk_local); + DWC_WRITE_REG32(&core_if->core_global_regs->gusbcfg, gr->gusbcfg_local); + DWC_WRITE_REG32(&core_if->core_global_regs->gahbcfg, gr->gahbcfg_local); + DWC_WRITE_REG32(&core_if->core_global_regs->grxfsiz, gr->grxfsiz_local); + DWC_WRITE_REG32(&core_if->core_global_regs->gnptxfsiz, + gr->gnptxfsiz_local); + DWC_WRITE_REG32(&core_if->core_global_regs->hptxfsiz, + gr->hptxfsiz_local); + DWC_WRITE_REG32(&core_if->core_global_regs->gdfifocfg, + gr->gdfifocfg_local); + for (i = 0; i < MAX_EPS_CHANNELS; i++) { + DWC_WRITE_REG32(&core_if->core_global_regs->dtxfsiz[i], + gr->dtxfsiz_local[i]); + } + + DWC_WRITE_REG32(&core_if->core_global_regs->gintsts, 0xFFFFFFFF); + DWC_WRITE_REG32(core_if->host_if->hprt0, 0x0000100A); + DWC_WRITE_REG32(&core_if->core_global_regs->gahbcfg, + (gr->gahbcfg_local)); + return 0; +} + +int dwc_otg_restore_dev_regs(dwc_otg_core_if_t * core_if, int rem_wakeup) +{ + struct dwc_otg_dev_regs_backup *dr; + int i; + + dr = core_if->dr_backup; + + if (!dr) { + return -DWC_E_INVALID; + } + + if (!rem_wakeup) { + DWC_WRITE_REG32(&core_if->dev_if->dev_global_regs->dctl, + dr->dctl); + } + + DWC_WRITE_REG32(&core_if->dev_if->dev_global_regs->daintmsk, dr->daintmsk); + DWC_WRITE_REG32(&core_if->dev_if->dev_global_regs->diepmsk, dr->diepmsk); + DWC_WRITE_REG32(&core_if->dev_if->dev_global_regs->doepmsk, dr->doepmsk); + + for (i = 0; i < core_if->dev_if->num_in_eps; ++i) { + DWC_WRITE_REG32(&core_if->dev_if->in_ep_regs[i]->dieptsiz, dr->dieptsiz[i]); + DWC_WRITE_REG32(&core_if->dev_if->in_ep_regs[i]->diepdma, dr->diepdma[i]); + DWC_WRITE_REG32(&core_if->dev_if->in_ep_regs[i]->diepctl, dr->diepctl[i]); + } + + return 0; +} + +int dwc_otg_restore_host_regs(dwc_otg_core_if_t * core_if, int reset) +{ + struct dwc_otg_host_regs_backup *hr; + int i; + hr = core_if->hr_backup; + + if (!hr) { + return -DWC_E_INVALID; + } + + DWC_WRITE_REG32(&core_if->host_if->host_global_regs->hcfg, hr->hcfg_local); + //if (!reset) + //{ + // DWC_WRITE_REG32(&core_if->host_if->host_global_regs->hfir, hr->hfir_local); + //} + + DWC_WRITE_REG32(&core_if->host_if->host_global_regs->haintmsk, + hr->haintmsk_local); + for (i = 0; i < dwc_otg_get_param_host_channels(core_if); ++i) { + DWC_WRITE_REG32(&core_if->host_if->hc_regs[i]->hcintmsk, + hr->hcintmsk_local[i]); + } + + return 0; +} + +int restore_lpm_i2c_regs(dwc_otg_core_if_t * core_if) +{ + struct dwc_otg_global_regs_backup *gr; + + gr = core_if->gr_backup; + + /* Restore values for LPM and I2C */ +#ifdef CONFIG_USB_DWC_OTG_LPM + DWC_WRITE_REG32(&core_if->core_global_regs->glpmcfg, gr->glpmcfg_local); +#endif + DWC_WRITE_REG32(&core_if->core_global_regs->gi2cctl, gr->gi2cctl_local); + + return 0; +} + +int restore_essential_regs(dwc_otg_core_if_t * core_if, int rmode, int is_host) +{ + struct dwc_otg_global_regs_backup *gr; + pcgcctl_data_t pcgcctl = {.d32 = 0 }; + gahbcfg_data_t gahbcfg = {.d32 = 0 }; + gusbcfg_data_t gusbcfg = {.d32 = 0 }; + gintmsk_data_t gintmsk = {.d32 = 0 }; + + /* Restore LPM and I2C registers */ + restore_lpm_i2c_regs(core_if); + + /* Set PCGCCTL to 0 */ + DWC_WRITE_REG32(core_if->pcgcctl, 0x00000000); + + gr = core_if->gr_backup; + /* Load restore values for [31:14] bits */ + DWC_WRITE_REG32(core_if->pcgcctl, + ((gr->pcgcctl_local & 0xffffc000) | 0x00020000)); + + /* Umnask global Interrupt in GAHBCFG and restore it */ + gahbcfg.d32 = gr->gahbcfg_local; + gahbcfg.b.glblintrmsk = 1; + DWC_WRITE_REG32(&core_if->core_global_regs->gahbcfg, gahbcfg.d32); + + /* Clear all pending interupts */ + DWC_WRITE_REG32(&core_if->core_global_regs->gintsts, 0xFFFFFFFF); + + /* Unmask restore done interrupt */ + gintmsk.b.restoredone = 1; + DWC_WRITE_REG32(&core_if->core_global_regs->gintmsk, gintmsk.d32); + + /* Restore GUSBCFG and HCFG/DCFG */ + gusbcfg.d32 = core_if->gr_backup->gusbcfg_local; + DWC_WRITE_REG32(&core_if->core_global_regs->gusbcfg, gusbcfg.d32); + + if (is_host) { + hcfg_data_t hcfg = {.d32 = 0 }; + hcfg.d32 = core_if->hr_backup->hcfg_local; + DWC_WRITE_REG32(&core_if->host_if->host_global_regs->hcfg, + hcfg.d32); + + /* Load restore values for [31:14] bits */ + pcgcctl.d32 = gr->pcgcctl_local & 0xffffc000; + pcgcctl.d32 = gr->pcgcctl_local | 0x00020000; + + if (rmode) + pcgcctl.b.restoremode = 1; + DWC_WRITE_REG32(core_if->pcgcctl, pcgcctl.d32); + dwc_udelay(10); + + /* Load restore values for [31:14] bits and set EssRegRestored bit */ + pcgcctl.d32 = gr->pcgcctl_local | 0xffffc000; + pcgcctl.d32 = gr->pcgcctl_local & 0xffffc000; + pcgcctl.b.ess_reg_restored = 1; + if (rmode) + pcgcctl.b.restoremode = 1; + DWC_WRITE_REG32(core_if->pcgcctl, pcgcctl.d32); + } else { + dcfg_data_t dcfg = {.d32 = 0 }; + dcfg.d32 = core_if->dr_backup->dcfg; + DWC_WRITE_REG32(&core_if->dev_if->dev_global_regs->dcfg, dcfg.d32); + + /* Load restore values for [31:14] bits */ + pcgcctl.d32 = gr->pcgcctl_local & 0xffffc000; + pcgcctl.d32 = gr->pcgcctl_local | 0x00020000; + if (!rmode) { + pcgcctl.d32 |= 0x208; + } + DWC_WRITE_REG32(core_if->pcgcctl, pcgcctl.d32); + dwc_udelay(10); + + /* Load restore values for [31:14] bits */ + pcgcctl.d32 = gr->pcgcctl_local & 0xffffc000; + pcgcctl.d32 = gr->pcgcctl_local | 0x00020000; + pcgcctl.b.ess_reg_restored = 1; + if (!rmode) + pcgcctl.d32 |= 0x208; + DWC_WRITE_REG32(core_if->pcgcctl, pcgcctl.d32); + } + + return 0; +} + +/** + * Initializes the FSLSPClkSel field of the HCFG register depending on the PHY + * type. + */ +static void init_fslspclksel(dwc_otg_core_if_t * core_if) +{ + uint32_t val; + hcfg_data_t hcfg; + + if (((core_if->hwcfg2.b.hs_phy_type == 2) && + (core_if->hwcfg2.b.fs_phy_type == 1) && + (core_if->core_params->ulpi_fs_ls)) || + (core_if->core_params->phy_type == DWC_PHY_TYPE_PARAM_FS)) { + /* Full speed PHY */ + val = DWC_HCFG_48_MHZ; + } else { + /* High speed PHY running at full speed or high speed */ + val = DWC_HCFG_30_60_MHZ; + } + + DWC_DEBUGPL(DBG_CIL, "Initializing HCFG.FSLSPClkSel to 0x%1x\n", val); + hcfg.d32 = DWC_READ_REG32(&core_if->host_if->host_global_regs->hcfg); + hcfg.b.fslspclksel = val; + DWC_WRITE_REG32(&core_if->host_if->host_global_regs->hcfg, hcfg.d32); +} + +/** + * Initializes the DevSpd field of the DCFG register depending on the PHY type + * and the enumeration speed of the device. + */ +static void init_devspd(dwc_otg_core_if_t * core_if) +{ + uint32_t val; + dcfg_data_t dcfg; + + if (((core_if->hwcfg2.b.hs_phy_type == 2) && + (core_if->hwcfg2.b.fs_phy_type == 1) && + (core_if->core_params->ulpi_fs_ls)) || + (core_if->core_params->phy_type == DWC_PHY_TYPE_PARAM_FS)) { + /* Full speed PHY */ + val = 0x3; + } else if (core_if->core_params->speed == DWC_SPEED_PARAM_FULL) { + /* High speed PHY running at full speed */ + val = 0x1; + } else { + /* High speed PHY running at high speed */ + val = 0x0; + } + + DWC_DEBUGPL(DBG_CIL, "Initializing DCFG.DevSpd to 0x%1x\n", val); + + dcfg.d32 = DWC_READ_REG32(&core_if->dev_if->dev_global_regs->dcfg); + dcfg.b.devspd = val; + DWC_WRITE_REG32(&core_if->dev_if->dev_global_regs->dcfg, dcfg.d32); +} + +/** + * This function calculates the number of IN EPS + * using GHWCFG1 and GHWCFG2 registers values + * + * @param core_if Programming view of the DWC_otg controller + */ +static uint32_t calc_num_in_eps(dwc_otg_core_if_t * core_if) +{ + uint32_t num_in_eps = 0; + uint32_t num_eps = core_if->hwcfg2.b.num_dev_ep; + uint32_t hwcfg1 = core_if->hwcfg1.d32 >> 3; + uint32_t num_tx_fifos = core_if->hwcfg4.b.num_in_eps; + int i; + + for (i = 0; i < num_eps; ++i) { + if (!(hwcfg1 & 0x1)) + num_in_eps++; + + hwcfg1 >>= 2; + } + + if (core_if->hwcfg4.b.ded_fifo_en) { + num_in_eps = + (num_in_eps > num_tx_fifos) ? num_tx_fifos : num_in_eps; + } + + return num_in_eps; +} + +/** + * This function calculates the number of OUT EPS + * using GHWCFG1 and GHWCFG2 registers values + * + * @param core_if Programming view of the DWC_otg controller + */ +static uint32_t calc_num_out_eps(dwc_otg_core_if_t * core_if) +{ + uint32_t num_out_eps = 0; + uint32_t num_eps = core_if->hwcfg2.b.num_dev_ep; + uint32_t hwcfg1 = core_if->hwcfg1.d32 >> 2; + int i; + + for (i = 0; i < num_eps; ++i) { + if (!(hwcfg1 & 0x1)) + num_out_eps++; + + hwcfg1 >>= 2; + } + return num_out_eps; +} + +/** + * This function initializes the DWC_otg controller registers and + * prepares the core for device mode or host mode operation. + * + * @param core_if Programming view of the DWC_otg controller + * + */ +void dwc_otg_core_init(dwc_otg_core_if_t * core_if) +{ + int i = 0; + dwc_otg_core_global_regs_t *global_regs = core_if->core_global_regs; + dwc_otg_dev_if_t *dev_if = core_if->dev_if; + gahbcfg_data_t ahbcfg = {.d32 = 0 }; + gusbcfg_data_t usbcfg = {.d32 = 0 }; + gi2cctl_data_t i2cctl = {.d32 = 0 }; + + DWC_DEBUGPL(DBG_CILV, "dwc_otg_core_init(%p) regs at %p\n", + core_if, global_regs); + + /* Common Initialization */ + usbcfg.d32 = DWC_READ_REG32(&global_regs->gusbcfg); + + /* Program the ULPI External VBUS bit if needed */ + usbcfg.b.ulpi_ext_vbus_drv = + (core_if->core_params->phy_ulpi_ext_vbus == + DWC_PHY_ULPI_EXTERNAL_VBUS) ? 1 : 0; + + /* Set external TS Dline pulsing */ + usbcfg.b.term_sel_dl_pulse = + (core_if->core_params->ts_dline == 1) ? 1 : 0; + DWC_WRITE_REG32(&global_regs->gusbcfg, usbcfg.d32); + + /* Reset the Controller */ + dwc_otg_core_reset(core_if); + + core_if->adp_enable = core_if->core_params->adp_supp_enable; + core_if->power_down = core_if->core_params->power_down; + core_if->otg_sts = 0; + + /* Initialize parameters from Hardware configuration registers. */ + dev_if->num_in_eps = calc_num_in_eps(core_if); + dev_if->num_out_eps = calc_num_out_eps(core_if); + + DWC_DEBUGPL(DBG_CIL, "num_dev_perio_in_ep=%d\n", + core_if->hwcfg4.b.num_dev_perio_in_ep); + + for (i = 0; i < core_if->hwcfg4.b.num_dev_perio_in_ep; i++) { + dev_if->perio_tx_fifo_size[i] = + DWC_READ_REG32(&global_regs->dtxfsiz[i]) >> 16; + DWC_DEBUGPL(DBG_CIL, "Periodic Tx FIFO SZ #%d=0x%0x\n", + i, dev_if->perio_tx_fifo_size[i]); + } + + for (i = 0; i < core_if->hwcfg4.b.num_in_eps; i++) { + dev_if->tx_fifo_size[i] = + DWC_READ_REG32(&global_regs->dtxfsiz[i]) >> 16; + DWC_DEBUGPL(DBG_CIL, "Tx FIFO SZ #%d=0x%0x\n", + i, dev_if->tx_fifo_size[i]); + } + + core_if->total_fifo_size = core_if->hwcfg3.b.dfifo_depth; + core_if->rx_fifo_size = DWC_READ_REG32(&global_regs->grxfsiz); + core_if->nperio_tx_fifo_size = + DWC_READ_REG32(&global_regs->gnptxfsiz) >> 16; + + DWC_DEBUGPL(DBG_CIL, "Total FIFO SZ=%d\n", core_if->total_fifo_size); + DWC_DEBUGPL(DBG_CIL, "Rx FIFO SZ=%d\n", core_if->rx_fifo_size); + DWC_DEBUGPL(DBG_CIL, "NP Tx FIFO SZ=%d\n", + core_if->nperio_tx_fifo_size); + + /* This programming sequence needs to happen in FS mode before any other + * programming occurs */ + if ((core_if->core_params->speed == DWC_SPEED_PARAM_FULL) && + (core_if->core_params->phy_type == DWC_PHY_TYPE_PARAM_FS)) { + /* If FS mode with FS PHY */ + + /* core_init() is now called on every switch so only call the + * following for the first time through. */ + if (!core_if->phy_init_done) { + core_if->phy_init_done = 1; + DWC_DEBUGPL(DBG_CIL, "FS_PHY detected\n"); + usbcfg.d32 = DWC_READ_REG32(&global_regs->gusbcfg); + usbcfg.b.physel = 1; + DWC_WRITE_REG32(&global_regs->gusbcfg, usbcfg.d32); + + /* Reset after a PHY select */ + dwc_otg_core_reset(core_if); + } + + /* Program DCFG.DevSpd or HCFG.FSLSPclkSel to 48Mhz in FS. Also + * do this on HNP Dev/Host mode switches (done in dev_init and + * host_init). */ + if (dwc_otg_is_host_mode(core_if)) { + init_fslspclksel(core_if); + } else { + init_devspd(core_if); + } + + if (core_if->core_params->i2c_enable) { + DWC_DEBUGPL(DBG_CIL, "FS_PHY Enabling I2c\n"); + /* Program GUSBCFG.OtgUtmifsSel to I2C */ + usbcfg.d32 = DWC_READ_REG32(&global_regs->gusbcfg); + usbcfg.b.otgutmifssel = 1; + DWC_WRITE_REG32(&global_regs->gusbcfg, usbcfg.d32); + + /* Program GI2CCTL.I2CEn */ + i2cctl.d32 = DWC_READ_REG32(&global_regs->gi2cctl); + i2cctl.b.i2cdevaddr = 1; + i2cctl.b.i2cen = 0; + DWC_WRITE_REG32(&global_regs->gi2cctl, i2cctl.d32); + i2cctl.b.i2cen = 1; + DWC_WRITE_REG32(&global_regs->gi2cctl, i2cctl.d32); + } + + } /* endif speed == DWC_SPEED_PARAM_FULL */ + else { + /* High speed PHY. */ + if (!core_if->phy_init_done) { + core_if->phy_init_done = 1; + /* HS PHY parameters. These parameters are preserved + * during soft reset so only program the first time. Do + * a soft reset immediately after setting phyif. */ + + if (core_if->core_params->phy_type == 2) { + /* ULPI interface */ + usbcfg.b.ulpi_utmi_sel = 1; + usbcfg.b.phyif = 0; + usbcfg.b.ddrsel = + core_if->core_params->phy_ulpi_ddr; + } else if (core_if->core_params->phy_type == 1) { + /* UTMI+ interface */ + usbcfg.b.ulpi_utmi_sel = 0; + if (core_if->core_params->phy_utmi_width == 16) { + usbcfg.b.phyif = 1; + + } else { + usbcfg.b.phyif = 0; + } + } else { + DWC_ERROR("FS PHY TYPE\n"); + } + DWC_WRITE_REG32(&global_regs->gusbcfg, usbcfg.d32); + /* Reset after setting the PHY parameters */ + dwc_otg_core_reset(core_if); + } + } + + if ((core_if->hwcfg2.b.hs_phy_type == 2) && + (core_if->hwcfg2.b.fs_phy_type == 1) && + (core_if->core_params->ulpi_fs_ls)) { + DWC_DEBUGPL(DBG_CIL, "Setting ULPI FSLS\n"); + usbcfg.d32 = DWC_READ_REG32(&global_regs->gusbcfg); + usbcfg.b.ulpi_fsls = 1; + usbcfg.b.ulpi_clk_sus_m = 1; + DWC_WRITE_REG32(&global_regs->gusbcfg, usbcfg.d32); + } else { + usbcfg.d32 = DWC_READ_REG32(&global_regs->gusbcfg); + usbcfg.b.ulpi_fsls = 0; + usbcfg.b.ulpi_clk_sus_m = 0; + DWC_WRITE_REG32(&global_regs->gusbcfg, usbcfg.d32); + } + + /* Program the GAHBCFG Register. */ + switch (core_if->hwcfg2.b.architecture) { + + case DWC_SLAVE_ONLY_ARCH: + DWC_DEBUGPL(DBG_CIL, "Slave Only Mode\n"); + ahbcfg.b.nptxfemplvl_txfemplvl = + DWC_GAHBCFG_TXFEMPTYLVL_HALFEMPTY; + ahbcfg.b.ptxfemplvl = DWC_GAHBCFG_TXFEMPTYLVL_HALFEMPTY; + core_if->dma_enable = 0; + core_if->dma_desc_enable = 0; + break; + + case DWC_EXT_DMA_ARCH: + DWC_DEBUGPL(DBG_CIL, "External DMA Mode\n"); + { + uint8_t brst_sz = core_if->core_params->dma_burst_size; + ahbcfg.b.hburstlen = 0; + while (brst_sz > 1) { + ahbcfg.b.hburstlen++; + brst_sz >>= 1; + } + } + core_if->dma_enable = (core_if->core_params->dma_enable != 0); + core_if->dma_desc_enable = + (core_if->core_params->dma_desc_enable != 0); + break; + + case DWC_INT_DMA_ARCH: + DWC_DEBUGPL(DBG_CIL, "Internal DMA Mode\n"); + /* Old value was DWC_GAHBCFG_INT_DMA_BURST_INCR - done for + Host mode ISOC in issue fix - vahrama */ + /* Broadcom had altered to (1<<3)|(0<<0) - WRESP=1, max 4 beats */ + ahbcfg.b.hburstlen = (1<<3)|(0<<0);//DWC_GAHBCFG_INT_DMA_BURST_INCR4; + core_if->dma_enable = (core_if->core_params->dma_enable != 0); + core_if->dma_desc_enable = + (core_if->core_params->dma_desc_enable != 0); + break; + + } + if (core_if->dma_enable) { + if (core_if->dma_desc_enable) { + DWC_PRINTF("Using Descriptor DMA mode\n"); + } else { + DWC_PRINTF("Using Buffer DMA mode\n"); + + } + } else { + DWC_PRINTF("Using Slave mode\n"); + core_if->dma_desc_enable = 0; + } + + if (core_if->core_params->ahb_single) { + ahbcfg.b.ahbsingle = 1; + } + + ahbcfg.b.dmaenable = core_if->dma_enable; + DWC_WRITE_REG32(&global_regs->gahbcfg, ahbcfg.d32); + + core_if->en_multiple_tx_fifo = core_if->hwcfg4.b.ded_fifo_en; + + core_if->pti_enh_enable = core_if->core_params->pti_enable != 0; + core_if->multiproc_int_enable = core_if->core_params->mpi_enable; + DWC_PRINTF("Periodic Transfer Interrupt Enhancement - %s\n", + ((core_if->pti_enh_enable) ? "enabled" : "disabled")); + DWC_PRINTF("Multiprocessor Interrupt Enhancement - %s\n", + ((core_if->multiproc_int_enable) ? "enabled" : "disabled")); + + /* + * Program the GUSBCFG register. + */ + usbcfg.d32 = DWC_READ_REG32(&global_regs->gusbcfg); + + switch (core_if->hwcfg2.b.op_mode) { + case DWC_MODE_HNP_SRP_CAPABLE: + usbcfg.b.hnpcap = (core_if->core_params->otg_cap == + DWC_OTG_CAP_PARAM_HNP_SRP_CAPABLE); + usbcfg.b.srpcap = (core_if->core_params->otg_cap != + DWC_OTG_CAP_PARAM_NO_HNP_SRP_CAPABLE); + break; + + case DWC_MODE_SRP_ONLY_CAPABLE: + usbcfg.b.hnpcap = 0; + usbcfg.b.srpcap = (core_if->core_params->otg_cap != + DWC_OTG_CAP_PARAM_NO_HNP_SRP_CAPABLE); + break; + + case DWC_MODE_NO_HNP_SRP_CAPABLE: + usbcfg.b.hnpcap = 0; + usbcfg.b.srpcap = 0; + break; + + case DWC_MODE_SRP_CAPABLE_DEVICE: + usbcfg.b.hnpcap = 0; + usbcfg.b.srpcap = (core_if->core_params->otg_cap != + DWC_OTG_CAP_PARAM_NO_HNP_SRP_CAPABLE); + break; + + case DWC_MODE_NO_SRP_CAPABLE_DEVICE: + usbcfg.b.hnpcap = 0; + usbcfg.b.srpcap = 0; + break; + + case DWC_MODE_SRP_CAPABLE_HOST: + usbcfg.b.hnpcap = 0; + usbcfg.b.srpcap = (core_if->core_params->otg_cap != + DWC_OTG_CAP_PARAM_NO_HNP_SRP_CAPABLE); + break; + + case DWC_MODE_NO_SRP_CAPABLE_HOST: + usbcfg.b.hnpcap = 0; + usbcfg.b.srpcap = 0; + break; + } + + DWC_WRITE_REG32(&global_regs->gusbcfg, usbcfg.d32); + +#ifdef CONFIG_USB_DWC_OTG_LPM + if (core_if->core_params->lpm_enable) { + glpmcfg_data_t lpmcfg = {.d32 = 0 }; + + /* To enable LPM support set lpm_cap_en bit */ + lpmcfg.b.lpm_cap_en = 1; + + /* Make AppL1Res ACK */ + lpmcfg.b.appl_resp = 1; + + /* Retry 3 times */ + lpmcfg.b.retry_count = 3; + + DWC_MODIFY_REG32(&core_if->core_global_regs->glpmcfg, + 0, lpmcfg.d32); + + } +#endif + if (core_if->core_params->ic_usb_cap) { + gusbcfg_data_t gusbcfg = {.d32 = 0 }; + gusbcfg.b.ic_usb_cap = 1; + DWC_MODIFY_REG32(&core_if->core_global_regs->gusbcfg, + 0, gusbcfg.d32); + } + { + gotgctl_data_t gotgctl = {.d32 = 0 }; + gotgctl.b.otgver = core_if->core_params->otg_ver; + DWC_MODIFY_REG32(&core_if->core_global_regs->gotgctl, 0, + gotgctl.d32); + /* Set OTG version supported */ + core_if->otg_ver = core_if->core_params->otg_ver; + DWC_PRINTF("OTG VER PARAM: %d, OTG VER FLAG: %d\n", + core_if->core_params->otg_ver, core_if->otg_ver); + } + + + /* Enable common interrupts */ + dwc_otg_enable_common_interrupts(core_if); + + /* Do device or host intialization based on mode during PCD + * and HCD initialization */ + if (dwc_otg_is_host_mode(core_if)) { + DWC_DEBUGPL(DBG_ANY, "Host Mode\n"); + core_if->op_state = A_HOST; + } else { + DWC_DEBUGPL(DBG_ANY, "Device Mode\n"); + core_if->op_state = B_PERIPHERAL; +#ifdef DWC_DEVICE_ONLY + dwc_otg_core_dev_init(core_if); +#endif + } +} + +/** + * This function enables the Device mode interrupts. + * + * @param core_if Programming view of DWC_otg controller + */ +void dwc_otg_enable_device_interrupts(dwc_otg_core_if_t * core_if) +{ + gintmsk_data_t intr_mask = {.d32 = 0 }; + dwc_otg_core_global_regs_t *global_regs = core_if->core_global_regs; + + DWC_DEBUGPL(DBG_CIL, "%s()\n", __func__); + + /* Disable all interrupts. */ + DWC_WRITE_REG32(&global_regs->gintmsk, 0); + + /* Clear any pending interrupts */ + DWC_WRITE_REG32(&global_regs->gintsts, 0xFFFFFFFF); + + /* Enable the common interrupts */ + dwc_otg_enable_common_interrupts(core_if); + + /* Enable interrupts */ + intr_mask.b.usbreset = 1; + intr_mask.b.enumdone = 1; + /* Disable Disconnect interrupt in Device mode */ + intr_mask.b.disconnect = 0; + + if (!core_if->multiproc_int_enable) { + intr_mask.b.inepintr = 1; + intr_mask.b.outepintr = 1; + } + + intr_mask.b.erlysuspend = 1; + + if (core_if->en_multiple_tx_fifo == 0) { + intr_mask.b.epmismatch = 1; + } + + //intr_mask.b.incomplisoout = 1; + intr_mask.b.incomplisoin = 1; + +/* Enable the ignore frame number for ISOC xfers - MAS */ +/* Disable to support high bandwith ISOC transfers - manukz */ +#if 0 +#ifdef DWC_UTE_PER_IO + if (core_if->dma_enable) { + if (core_if->dma_desc_enable) { + dctl_data_t dctl1 = {.d32 = 0 }; + dctl1.b.ifrmnum = 1; + DWC_MODIFY_REG32(&core_if->dev_if->dev_global_regs-> + dctl, 0, dctl1.d32); + DWC_DEBUG("----Enabled Ignore frame number (0x%08x)", + DWC_READ_REG32(&core_if->dev_if-> + dev_global_regs->dctl)); + } + } +#endif +#endif +#ifdef DWC_EN_ISOC + if (core_if->dma_enable) { + if (core_if->dma_desc_enable == 0) { + if (core_if->pti_enh_enable) { + dctl_data_t dctl = {.d32 = 0 }; + dctl.b.ifrmnum = 1; + DWC_MODIFY_REG32(&core_if-> + dev_if->dev_global_regs->dctl, + 0, dctl.d32); + } else { + intr_mask.b.incomplisoin = 1; + intr_mask.b.incomplisoout = 1; + } + } + } else { + intr_mask.b.incomplisoin = 1; + intr_mask.b.incomplisoout = 1; + } +#endif /* DWC_EN_ISOC */ + + /** @todo NGS: Should this be a module parameter? */ +#ifdef USE_PERIODIC_EP + intr_mask.b.isooutdrop = 1; + intr_mask.b.eopframe = 1; + intr_mask.b.incomplisoin = 1; + intr_mask.b.incomplisoout = 1; +#endif + + DWC_MODIFY_REG32(&global_regs->gintmsk, intr_mask.d32, intr_mask.d32); + + DWC_DEBUGPL(DBG_CIL, "%s() gintmsk=%0x\n", __func__, + DWC_READ_REG32(&global_regs->gintmsk)); +} + +/** + * This function initializes the DWC_otg controller registers for + * device mode. + * + * @param core_if Programming view of DWC_otg controller + * + */ +void dwc_otg_core_dev_init(dwc_otg_core_if_t * core_if) +{ + int i; + dwc_otg_core_global_regs_t *global_regs = core_if->core_global_regs; + dwc_otg_dev_if_t *dev_if = core_if->dev_if; + dwc_otg_core_params_t *params = core_if->core_params; + dcfg_data_t dcfg = {.d32 = 0 }; + depctl_data_t diepctl = {.d32 = 0 }; + grstctl_t resetctl = {.d32 = 0 }; + uint32_t rx_fifo_size; + fifosize_data_t nptxfifosize; + fifosize_data_t txfifosize; + dthrctl_data_t dthrctl; + fifosize_data_t ptxfifosize; + uint16_t rxfsiz, nptxfsiz; + gdfifocfg_data_t gdfifocfg = {.d32 = 0 }; + hwcfg3_data_t hwcfg3 = {.d32 = 0 }; + + /* Restart the Phy Clock */ + DWC_WRITE_REG32(core_if->pcgcctl, 0); + + /* Device configuration register */ + init_devspd(core_if); + dcfg.d32 = DWC_READ_REG32(&dev_if->dev_global_regs->dcfg); + dcfg.b.descdma = (core_if->dma_desc_enable) ? 1 : 0; + dcfg.b.perfrint = DWC_DCFG_FRAME_INTERVAL_80; + /* Enable Device OUT NAK in case of DDMA mode*/ + if (core_if->core_params->dev_out_nak) { + dcfg.b.endevoutnak = 1; + } + + if (core_if->core_params->cont_on_bna) { + dctl_data_t dctl = {.d32 = 0 }; + dctl.b.encontonbna = 1; + DWC_MODIFY_REG32(&dev_if->dev_global_regs->dctl, 0, dctl.d32); + } + + + DWC_WRITE_REG32(&dev_if->dev_global_regs->dcfg, dcfg.d32); + + /* Configure data FIFO sizes */ + if (core_if->hwcfg2.b.dynamic_fifo && params->enable_dynamic_fifo) { + DWC_DEBUGPL(DBG_CIL, "Total FIFO Size=%d\n", + core_if->total_fifo_size); + DWC_DEBUGPL(DBG_CIL, "Rx FIFO Size=%d\n", + params->dev_rx_fifo_size); + DWC_DEBUGPL(DBG_CIL, "NP Tx FIFO Size=%d\n", + params->dev_nperio_tx_fifo_size); + + /* Rx FIFO */ + DWC_DEBUGPL(DBG_CIL, "initial grxfsiz=%08x\n", + DWC_READ_REG32(&global_regs->grxfsiz)); + +#ifdef DWC_UTE_CFI + core_if->pwron_rxfsiz = DWC_READ_REG32(&global_regs->grxfsiz); + core_if->init_rxfsiz = params->dev_rx_fifo_size; +#endif + rx_fifo_size = params->dev_rx_fifo_size; + DWC_WRITE_REG32(&global_regs->grxfsiz, rx_fifo_size); + + DWC_DEBUGPL(DBG_CIL, "new grxfsiz=%08x\n", + DWC_READ_REG32(&global_regs->grxfsiz)); + + /** Set Periodic Tx FIFO Mask all bits 0 */ + core_if->p_tx_msk = 0; + + /** Set Tx FIFO Mask all bits 0 */ + core_if->tx_msk = 0; + + if (core_if->en_multiple_tx_fifo == 0) { + /* Non-periodic Tx FIFO */ + DWC_DEBUGPL(DBG_CIL, "initial gnptxfsiz=%08x\n", + DWC_READ_REG32(&global_regs->gnptxfsiz)); + + nptxfifosize.b.depth = params->dev_nperio_tx_fifo_size; + nptxfifosize.b.startaddr = params->dev_rx_fifo_size; + + DWC_WRITE_REG32(&global_regs->gnptxfsiz, + nptxfifosize.d32); + + DWC_DEBUGPL(DBG_CIL, "new gnptxfsiz=%08x\n", + DWC_READ_REG32(&global_regs->gnptxfsiz)); + + /**@todo NGS: Fix Periodic FIFO Sizing! */ + /* + * Periodic Tx FIFOs These FIFOs are numbered from 1 to 15. + * Indexes of the FIFO size module parameters in the + * dev_perio_tx_fifo_size array and the FIFO size registers in + * the dptxfsiz array run from 0 to 14. + */ + /** @todo Finish debug of this */ + ptxfifosize.b.startaddr = + nptxfifosize.b.startaddr + nptxfifosize.b.depth; + for (i = 0; i < core_if->hwcfg4.b.num_dev_perio_in_ep; i++) { + ptxfifosize.b.depth = + params->dev_perio_tx_fifo_size[i]; + DWC_DEBUGPL(DBG_CIL, + "initial dtxfsiz[%d]=%08x\n", i, + DWC_READ_REG32(&global_regs->dtxfsiz + [i])); + DWC_WRITE_REG32(&global_regs->dtxfsiz[i], + ptxfifosize.d32); + DWC_DEBUGPL(DBG_CIL, "new dtxfsiz[%d]=%08x\n", + i, + DWC_READ_REG32(&global_regs->dtxfsiz + [i])); + ptxfifosize.b.startaddr += ptxfifosize.b.depth; + } + } else { + /* + * Tx FIFOs These FIFOs are numbered from 1 to 15. + * Indexes of the FIFO size module parameters in the + * dev_tx_fifo_size array and the FIFO size registers in + * the dtxfsiz array run from 0 to 14. + */ + + /* Non-periodic Tx FIFO */ + DWC_DEBUGPL(DBG_CIL, "initial gnptxfsiz=%08x\n", + DWC_READ_REG32(&global_regs->gnptxfsiz)); + +#ifdef DWC_UTE_CFI + core_if->pwron_gnptxfsiz = + (DWC_READ_REG32(&global_regs->gnptxfsiz) >> 16); + core_if->init_gnptxfsiz = + params->dev_nperio_tx_fifo_size; +#endif + nptxfifosize.b.depth = params->dev_nperio_tx_fifo_size; + nptxfifosize.b.startaddr = params->dev_rx_fifo_size; + + DWC_WRITE_REG32(&global_regs->gnptxfsiz, + nptxfifosize.d32); + + DWC_DEBUGPL(DBG_CIL, "new gnptxfsiz=%08x\n", + DWC_READ_REG32(&global_regs->gnptxfsiz)); + + txfifosize.b.startaddr = + nptxfifosize.b.startaddr + nptxfifosize.b.depth; + + for (i = 0; i < core_if->hwcfg4.b.num_in_eps; i++) { + + txfifosize.b.depth = + params->dev_tx_fifo_size[i]; + + DWC_DEBUGPL(DBG_CIL, + "initial dtxfsiz[%d]=%08x\n", + i, + DWC_READ_REG32(&global_regs->dtxfsiz + [i])); + +#ifdef DWC_UTE_CFI + core_if->pwron_txfsiz[i] = + (DWC_READ_REG32 + (&global_regs->dtxfsiz[i]) >> 16); + core_if->init_txfsiz[i] = + params->dev_tx_fifo_size[i]; +#endif + DWC_WRITE_REG32(&global_regs->dtxfsiz[i], + txfifosize.d32); + + DWC_DEBUGPL(DBG_CIL, + "new dtxfsiz[%d]=%08x\n", + i, + DWC_READ_REG32(&global_regs->dtxfsiz + [i])); + + txfifosize.b.startaddr += txfifosize.b.depth; + } + if (core_if->snpsid <= OTG_CORE_REV_2_94a) { + /* Calculating DFIFOCFG for Device mode to include RxFIFO and NPTXFIFO */ + gdfifocfg.d32 = DWC_READ_REG32(&global_regs->gdfifocfg); + hwcfg3.d32 = DWC_READ_REG32(&global_regs->ghwcfg3); + gdfifocfg.b.gdfifocfg = (DWC_READ_REG32(&global_regs->ghwcfg3) >> 16); + DWC_WRITE_REG32(&global_regs->gdfifocfg, gdfifocfg.d32); + rxfsiz = (DWC_READ_REG32(&global_regs->grxfsiz) & 0x0000ffff); + nptxfsiz = (DWC_READ_REG32(&global_regs->gnptxfsiz) >> 16); + gdfifocfg.b.epinfobase = rxfsiz + nptxfsiz; + DWC_WRITE_REG32(&global_regs->gdfifocfg, gdfifocfg.d32); + } + } + + /* Flush the FIFOs */ + dwc_otg_flush_tx_fifo(core_if, 0x10); /* all Tx FIFOs */ + dwc_otg_flush_rx_fifo(core_if); + + /* Flush the Learning Queue. */ + resetctl.b.intknqflsh = 1; + DWC_WRITE_REG32(&core_if->core_global_regs->grstctl, resetctl.d32); + + if (!core_if->core_params->en_multiple_tx_fifo && core_if->dma_enable) { + core_if->start_predict = 0; + for (i = 0; i<= core_if->dev_if->num_in_eps; ++i) { + core_if->nextep_seq[i] = 0xff; // 0xff - EP not active + } + core_if->nextep_seq[0] = 0; + core_if->first_in_nextep_seq = 0; + diepctl.d32 = DWC_READ_REG32(&dev_if->in_ep_regs[0]->diepctl); + diepctl.b.nextep = 0; + DWC_WRITE_REG32(&dev_if->in_ep_regs[0]->diepctl, diepctl.d32); + + /* Update IN Endpoint Mismatch Count by active IN NP EP count + 1 */ + dcfg.d32 = DWC_READ_REG32(&dev_if->dev_global_regs->dcfg); + dcfg.b.epmscnt = 2; + DWC_WRITE_REG32(&dev_if->dev_global_regs->dcfg, dcfg.d32); + + DWC_DEBUGPL(DBG_CILV,"%s first_in_nextep_seq= %2d; nextep_seq[]:\n", + __func__, core_if->first_in_nextep_seq); + for (i=0; i <= core_if->dev_if->num_in_eps; i++) { + DWC_DEBUGPL(DBG_CILV, "%2d ", core_if->nextep_seq[i]); + } + DWC_DEBUGPL(DBG_CILV,"\n"); + } + + /* Clear all pending Device Interrupts */ + /** @todo - if the condition needed to be checked + * or in any case all pending interrutps should be cleared? + */ + if (core_if->multiproc_int_enable) { + for (i = 0; i < core_if->dev_if->num_in_eps; ++i) { + DWC_WRITE_REG32(&dev_if-> + dev_global_regs->diepeachintmsk[i], 0); + } + } + + for (i = 0; i < core_if->dev_if->num_out_eps; ++i) { + DWC_WRITE_REG32(&dev_if-> + dev_global_regs->doepeachintmsk[i], 0); + } + + DWC_WRITE_REG32(&dev_if->dev_global_regs->deachint, 0xFFFFFFFF); + DWC_WRITE_REG32(&dev_if->dev_global_regs->deachintmsk, 0); + } else { + DWC_WRITE_REG32(&dev_if->dev_global_regs->diepmsk, 0); + DWC_WRITE_REG32(&dev_if->dev_global_regs->doepmsk, 0); + DWC_WRITE_REG32(&dev_if->dev_global_regs->daint, 0xFFFFFFFF); + DWC_WRITE_REG32(&dev_if->dev_global_regs->daintmsk, 0); + } + + for (i = 0; i <= dev_if->num_in_eps; i++) { + depctl_data_t depctl; + depctl.d32 = DWC_READ_REG32(&dev_if->in_ep_regs[i]->diepctl); + if (depctl.b.epena) { + depctl.d32 = 0; + depctl.b.epdis = 1; + depctl.b.snak = 1; + } else { + depctl.d32 = 0; + } + + DWC_WRITE_REG32(&dev_if->in_ep_regs[i]->diepctl, depctl.d32); + + DWC_WRITE_REG32(&dev_if->in_ep_regs[i]->dieptsiz, 0); + DWC_WRITE_REG32(&dev_if->in_ep_regs[i]->diepdma, 0); + DWC_WRITE_REG32(&dev_if->in_ep_regs[i]->diepint, 0xFF); + } + + for (i = 0; i <= dev_if->num_out_eps; i++) { + depctl_data_t depctl; + depctl.d32 = DWC_READ_REG32(&dev_if->out_ep_regs[i]->doepctl); + if (depctl.b.epena) { + dctl_data_t dctl = {.d32 = 0 }; + gintmsk_data_t gintsts = {.d32 = 0 }; + doepint_data_t doepint = {.d32 = 0 }; + dctl.b.sgoutnak = 1; + DWC_MODIFY_REG32(&core_if->dev_if->dev_global_regs->dctl, 0, dctl.d32); + do { + dwc_udelay(10); + gintsts.d32 = DWC_READ_REG32(&core_if->core_global_regs->gintsts); + } while (!gintsts.b.goutnakeff); + gintsts.d32 = 0; + gintsts.b.goutnakeff = 1; + DWC_WRITE_REG32(&core_if->core_global_regs->gintsts, gintsts.d32); + + depctl.d32 = 0; + depctl.b.epdis = 1; + depctl.b.snak = 1; + DWC_WRITE_REG32(&core_if->dev_if->out_ep_regs[i]->doepctl, depctl.d32); + do { + dwc_udelay(10); + doepint.d32 = DWC_READ_REG32(&core_if->dev_if-> + out_ep_regs[i]->doepint); + } while (!doepint.b.epdisabled); + + doepint.b.epdisabled = 1; + DWC_WRITE_REG32(&core_if->dev_if->out_ep_regs[i]->doepint, doepint.d32); + + dctl.d32 = 0; + dctl.b.cgoutnak = 1; + DWC_MODIFY_REG32(&core_if->dev_if->dev_global_regs->dctl, 0, dctl.d32); + } else { + depctl.d32 = 0; + } + + DWC_WRITE_REG32(&dev_if->out_ep_regs[i]->doepctl, depctl.d32); + + DWC_WRITE_REG32(&dev_if->out_ep_regs[i]->doeptsiz, 0); + DWC_WRITE_REG32(&dev_if->out_ep_regs[i]->doepdma, 0); + DWC_WRITE_REG32(&dev_if->out_ep_regs[i]->doepint, 0xFF); + } + + if (core_if->en_multiple_tx_fifo && core_if->dma_enable) { + dev_if->non_iso_tx_thr_en = params->thr_ctl & 0x1; + dev_if->iso_tx_thr_en = (params->thr_ctl >> 1) & 0x1; + dev_if->rx_thr_en = (params->thr_ctl >> 2) & 0x1; + + dev_if->rx_thr_length = params->rx_thr_length; + dev_if->tx_thr_length = params->tx_thr_length; + + dev_if->setup_desc_index = 0; + + dthrctl.d32 = 0; + dthrctl.b.non_iso_thr_en = dev_if->non_iso_tx_thr_en; + dthrctl.b.iso_thr_en = dev_if->iso_tx_thr_en; + dthrctl.b.tx_thr_len = dev_if->tx_thr_length; + dthrctl.b.rx_thr_en = dev_if->rx_thr_en; + dthrctl.b.rx_thr_len = dev_if->rx_thr_length; + dthrctl.b.ahb_thr_ratio = params->ahb_thr_ratio; + + DWC_WRITE_REG32(&dev_if->dev_global_regs->dtknqr3_dthrctl, + dthrctl.d32); + + DWC_DEBUGPL(DBG_CIL, + "Non ISO Tx Thr - %d\nISO Tx Thr - %d\nRx Thr - %d\nTx Thr Len - %d\nRx Thr Len - %d\n", + dthrctl.b.non_iso_thr_en, dthrctl.b.iso_thr_en, + dthrctl.b.rx_thr_en, dthrctl.b.tx_thr_len, + dthrctl.b.rx_thr_len); + + } + + dwc_otg_enable_device_interrupts(core_if); + + { + diepmsk_data_t msk = {.d32 = 0 }; + msk.b.txfifoundrn = 1; + if (core_if->multiproc_int_enable) { + DWC_MODIFY_REG32(&dev_if->dev_global_regs-> + diepeachintmsk[0], msk.d32, msk.d32); + } else { + DWC_MODIFY_REG32(&dev_if->dev_global_regs->diepmsk, + msk.d32, msk.d32); + } + } + + if (core_if->multiproc_int_enable) { + /* Set NAK on Babble */ + dctl_data_t dctl = {.d32 = 0 }; + dctl.b.nakonbble = 1; + DWC_MODIFY_REG32(&dev_if->dev_global_regs->dctl, 0, dctl.d32); + } + + if (core_if->snpsid >= OTG_CORE_REV_2_94a) { + dctl_data_t dctl = {.d32 = 0 }; + dctl.d32 = DWC_READ_REG32(&dev_if->dev_global_regs->dctl); + dctl.b.sftdiscon = 0; + DWC_WRITE_REG32(&dev_if->dev_global_regs->dctl, dctl.d32); + } +} + +/** + * This function enables the Host mode interrupts. + * + * @param core_if Programming view of DWC_otg controller + */ +void dwc_otg_enable_host_interrupts(dwc_otg_core_if_t * core_if) +{ + dwc_otg_core_global_regs_t *global_regs = core_if->core_global_regs; + gintmsk_data_t intr_mask = {.d32 = 0 }; + + DWC_DEBUGPL(DBG_CIL, "%s(%p)\n", __func__, core_if); + + /* Disable all interrupts. */ + DWC_WRITE_REG32(&global_regs->gintmsk, 0); + + /* Clear any pending interrupts. */ + DWC_WRITE_REG32(&global_regs->gintsts, 0xFFFFFFFF); + + /* Enable the common interrupts */ + dwc_otg_enable_common_interrupts(core_if); + + /* + * Enable host mode interrupts without disturbing common + * interrupts. + */ + + intr_mask.b.disconnect = 1; + intr_mask.b.portintr = 1; + intr_mask.b.hcintr = 1; + + DWC_MODIFY_REG32(&global_regs->gintmsk, intr_mask.d32, intr_mask.d32); +} + +/** + * This function disables the Host Mode interrupts. + * + * @param core_if Programming view of DWC_otg controller + */ +void dwc_otg_disable_host_interrupts(dwc_otg_core_if_t * core_if) +{ + dwc_otg_core_global_regs_t *global_regs = core_if->core_global_regs; + gintmsk_data_t intr_mask = {.d32 = 0 }; + + DWC_DEBUGPL(DBG_CILV, "%s()\n", __func__); + + /* + * Disable host mode interrupts without disturbing common + * interrupts. + */ + intr_mask.b.sofintr = 1; + intr_mask.b.portintr = 1; + intr_mask.b.hcintr = 1; + intr_mask.b.ptxfempty = 1; + intr_mask.b.nptxfempty = 1; + + DWC_MODIFY_REG32(&global_regs->gintmsk, intr_mask.d32, 0); +} + +/** + * This function initializes the DWC_otg controller registers for + * host mode. + * + * This function flushes the Tx and Rx FIFOs and it flushes any entries in the + * request queues. Host channels are reset to ensure that they are ready for + * performing transfers. + * + * @param core_if Programming view of DWC_otg controller + * + */ +void dwc_otg_core_host_init(dwc_otg_core_if_t * core_if) +{ + dwc_otg_core_global_regs_t *global_regs = core_if->core_global_regs; + dwc_otg_host_if_t *host_if = core_if->host_if; + dwc_otg_core_params_t *params = core_if->core_params; + hprt0_data_t hprt0 = {.d32 = 0 }; + fifosize_data_t nptxfifosize; + fifosize_data_t ptxfifosize; + uint16_t rxfsiz, nptxfsiz, hptxfsiz; + gdfifocfg_data_t gdfifocfg = {.d32 = 0 }; + int i; + hcchar_data_t hcchar; + hcfg_data_t hcfg; + hfir_data_t hfir; + dwc_otg_hc_regs_t *hc_regs; + int num_channels; + gotgctl_data_t gotgctl = {.d32 = 0 }; + + DWC_DEBUGPL(DBG_CILV, "%s(%p)\n", __func__, core_if); + + /* Restart the Phy Clock */ + DWC_WRITE_REG32(core_if->pcgcctl, 0); + + /* Initialize Host Configuration Register */ + init_fslspclksel(core_if); + if (core_if->core_params->speed == DWC_SPEED_PARAM_FULL) { + hcfg.d32 = DWC_READ_REG32(&host_if->host_global_regs->hcfg); + hcfg.b.fslssupp = 1; + DWC_WRITE_REG32(&host_if->host_global_regs->hcfg, hcfg.d32); + + } + + /* This bit allows dynamic reloading of the HFIR register + * during runtime. This bit needs to be programmed during + * initial configuration and its value must not be changed + * during runtime.*/ + if (core_if->core_params->reload_ctl == 1) { + hfir.d32 = DWC_READ_REG32(&host_if->host_global_regs->hfir); + hfir.b.hfirrldctrl = 1; + DWC_WRITE_REG32(&host_if->host_global_regs->hfir, hfir.d32); + } + + if (core_if->core_params->dma_desc_enable) { + uint8_t op_mode = core_if->hwcfg2.b.op_mode; + if (! + (core_if->hwcfg4.b.desc_dma + && (core_if->snpsid >= OTG_CORE_REV_2_90a) + && ((op_mode == DWC_HWCFG2_OP_MODE_HNP_SRP_CAPABLE_OTG) + || (op_mode == DWC_HWCFG2_OP_MODE_SRP_ONLY_CAPABLE_OTG) + || (op_mode == + DWC_HWCFG2_OP_MODE_NO_HNP_SRP_CAPABLE_OTG) + || (op_mode == DWC_HWCFG2_OP_MODE_SRP_CAPABLE_HOST) + || (op_mode == + DWC_HWCFG2_OP_MODE_NO_SRP_CAPABLE_HOST)))) { + + DWC_ERROR("Host can't operate in Descriptor DMA mode.\n" + "Either core version is below 2.90a or " + "GHWCFG2, GHWCFG4 registers' values do not allow Descriptor DMA in host mode.\n" + "To run the driver in Buffer DMA host mode set dma_desc_enable " + "module parameter to 0.\n"); + return; + } + hcfg.d32 = DWC_READ_REG32(&host_if->host_global_regs->hcfg); + hcfg.b.descdma = 1; + DWC_WRITE_REG32(&host_if->host_global_regs->hcfg, hcfg.d32); + } + + /* Configure data FIFO sizes */ + if (core_if->hwcfg2.b.dynamic_fifo && params->enable_dynamic_fifo) { + DWC_DEBUGPL(DBG_CIL, "Total FIFO Size=%d\n", + core_if->total_fifo_size); + DWC_DEBUGPL(DBG_CIL, "Rx FIFO Size=%d\n", + params->host_rx_fifo_size); + DWC_DEBUGPL(DBG_CIL, "NP Tx FIFO Size=%d\n", + params->host_nperio_tx_fifo_size); + DWC_DEBUGPL(DBG_CIL, "P Tx FIFO Size=%d\n", + params->host_perio_tx_fifo_size); + + /* Rx FIFO */ + DWC_DEBUGPL(DBG_CIL, "initial grxfsiz=%08x\n", + DWC_READ_REG32(&global_regs->grxfsiz)); + DWC_WRITE_REG32(&global_regs->grxfsiz, + params->host_rx_fifo_size); + DWC_DEBUGPL(DBG_CIL, "new grxfsiz=%08x\n", + DWC_READ_REG32(&global_regs->grxfsiz)); + + /* Non-periodic Tx FIFO */ + DWC_DEBUGPL(DBG_CIL, "initial gnptxfsiz=%08x\n", + DWC_READ_REG32(&global_regs->gnptxfsiz)); + nptxfifosize.b.depth = params->host_nperio_tx_fifo_size; + nptxfifosize.b.startaddr = params->host_rx_fifo_size; + DWC_WRITE_REG32(&global_regs->gnptxfsiz, nptxfifosize.d32); + DWC_DEBUGPL(DBG_CIL, "new gnptxfsiz=%08x\n", + DWC_READ_REG32(&global_regs->gnptxfsiz)); + + /* Periodic Tx FIFO */ + DWC_DEBUGPL(DBG_CIL, "initial hptxfsiz=%08x\n", + DWC_READ_REG32(&global_regs->hptxfsiz)); + ptxfifosize.b.depth = params->host_perio_tx_fifo_size; + ptxfifosize.b.startaddr = + nptxfifosize.b.startaddr + nptxfifosize.b.depth; + DWC_WRITE_REG32(&global_regs->hptxfsiz, ptxfifosize.d32); + DWC_DEBUGPL(DBG_CIL, "new hptxfsiz=%08x\n", + DWC_READ_REG32(&global_regs->hptxfsiz)); + + if (core_if->en_multiple_tx_fifo + && core_if->snpsid <= OTG_CORE_REV_2_94a) { + /* Global DFIFOCFG calculation for Host mode - include RxFIFO, NPTXFIFO and HPTXFIFO */ + gdfifocfg.d32 = DWC_READ_REG32(&global_regs->gdfifocfg); + rxfsiz = (DWC_READ_REG32(&global_regs->grxfsiz) & 0x0000ffff); + nptxfsiz = (DWC_READ_REG32(&global_regs->gnptxfsiz) >> 16); + hptxfsiz = (DWC_READ_REG32(&global_regs->hptxfsiz) >> 16); + gdfifocfg.b.epinfobase = rxfsiz + nptxfsiz + hptxfsiz; + DWC_WRITE_REG32(&global_regs->gdfifocfg, gdfifocfg.d32); + } + } + + /* TODO - check this */ + /* Clear Host Set HNP Enable in the OTG Control Register */ + gotgctl.b.hstsethnpen = 1; + DWC_MODIFY_REG32(&global_regs->gotgctl, gotgctl.d32, 0); + /* Make sure the FIFOs are flushed. */ + dwc_otg_flush_tx_fifo(core_if, 0x10 /* all TX FIFOs */ ); + dwc_otg_flush_rx_fifo(core_if); + + /* Clear Host Set HNP Enable in the OTG Control Register */ + gotgctl.b.hstsethnpen = 1; + DWC_MODIFY_REG32(&global_regs->gotgctl, gotgctl.d32, 0); + + if (!core_if->core_params->dma_desc_enable) { + /* Flush out any leftover queued requests. */ + num_channels = core_if->core_params->host_channels; + + for (i = 0; i < num_channels; i++) { + hc_regs = core_if->host_if->hc_regs[i]; + hcchar.d32 = DWC_READ_REG32(&hc_regs->hcchar); + hcchar.b.chen = 0; + hcchar.b.chdis = 1; + hcchar.b.epdir = 0; + DWC_WRITE_REG32(&hc_regs->hcchar, hcchar.d32); + } + + /* Halt all channels to put them into a known state. */ + for (i = 0; i < num_channels; i++) { + int count = 0; + hc_regs = core_if->host_if->hc_regs[i]; + hcchar.d32 = DWC_READ_REG32(&hc_regs->hcchar); + hcchar.b.chen = 1; + hcchar.b.chdis = 1; + hcchar.b.epdir = 0; + DWC_WRITE_REG32(&hc_regs->hcchar, hcchar.d32); + DWC_DEBUGPL(DBG_HCDV, "%s: Halt channel %d regs %p\n", __func__, i, hc_regs); + do { + hcchar.d32 = DWC_READ_REG32(&hc_regs->hcchar); + if (++count > 1000) { + DWC_ERROR + ("%s: Unable to clear halt on channel %d (timeout HCCHAR 0x%X @%p)\n", + __func__, i, hcchar.d32, &hc_regs->hcchar); + break; + } + dwc_udelay(1); + } while (hcchar.b.chen); + } + } + + /* Turn on the vbus power. */ + DWC_PRINTF("Init: Port Power? op_state=%d\n", core_if->op_state); + if (core_if->op_state == A_HOST) { + hprt0.d32 = dwc_otg_read_hprt0(core_if); + DWC_PRINTF("Init: Power Port (%d)\n", hprt0.b.prtpwr); + if (hprt0.b.prtpwr == 0) { + hprt0.b.prtpwr = 1; + DWC_WRITE_REG32(host_if->hprt0, hprt0.d32); + } + } + + dwc_otg_enable_host_interrupts(core_if); +} + +/** + * Prepares a host channel for transferring packets to/from a specific + * endpoint. The HCCHARn register is set up with the characteristics specified + * in _hc. Host channel interrupts that may need to be serviced while this + * transfer is in progress are enabled. + * + * @param core_if Programming view of DWC_otg controller + * @param hc Information needed to initialize the host channel + */ +void dwc_otg_hc_init(dwc_otg_core_if_t * core_if, dwc_hc_t * hc) +{ + hcintmsk_data_t hc_intr_mask; + hcchar_data_t hcchar; + hcsplt_data_t hcsplt; + + uint8_t hc_num = hc->hc_num; + dwc_otg_host_if_t *host_if = core_if->host_if; + dwc_otg_hc_regs_t *hc_regs = host_if->hc_regs[hc_num]; + + /* Clear old interrupt conditions for this host channel. */ + hc_intr_mask.d32 = 0xFFFFFFFF; + hc_intr_mask.b.reserved14_31 = 0; + DWC_WRITE_REG32(&hc_regs->hcint, hc_intr_mask.d32); + + /* Enable channel interrupts required for this transfer. */ + hc_intr_mask.d32 = 0; + hc_intr_mask.b.chhltd = 1; + if (core_if->dma_enable) { + /* For Descriptor DMA mode core halts the channel on AHB error. Interrupt is not required */ + if (!core_if->dma_desc_enable) + hc_intr_mask.b.ahberr = 1; + else { + if (hc->ep_type == DWC_OTG_EP_TYPE_ISOC) + hc_intr_mask.b.xfercompl = 1; + } + + if (hc->error_state && !hc->do_split && + hc->ep_type != DWC_OTG_EP_TYPE_ISOC) { + hc_intr_mask.b.ack = 1; + if (hc->ep_is_in) { + hc_intr_mask.b.datatglerr = 1; + if (hc->ep_type != DWC_OTG_EP_TYPE_INTR) { + hc_intr_mask.b.nak = 1; + } + } + } + } else { + switch (hc->ep_type) { + case DWC_OTG_EP_TYPE_CONTROL: + case DWC_OTG_EP_TYPE_BULK: + hc_intr_mask.b.xfercompl = 1; + hc_intr_mask.b.stall = 1; + hc_intr_mask.b.xacterr = 1; + hc_intr_mask.b.datatglerr = 1; + if (hc->ep_is_in) { + hc_intr_mask.b.bblerr = 1; + } else { + hc_intr_mask.b.nak = 1; + hc_intr_mask.b.nyet = 1; + if (hc->do_ping) { + hc_intr_mask.b.ack = 1; + } + } + + if (hc->do_split) { + hc_intr_mask.b.nak = 1; + if (hc->complete_split) { + hc_intr_mask.b.nyet = 1; + } else { + hc_intr_mask.b.ack = 1; + } + } + + if (hc->error_state) { + hc_intr_mask.b.ack = 1; + } + break; + case DWC_OTG_EP_TYPE_INTR: + hc_intr_mask.b.xfercompl = 1; + hc_intr_mask.b.nak = 1; + hc_intr_mask.b.stall = 1; + hc_intr_mask.b.xacterr = 1; + hc_intr_mask.b.datatglerr = 1; + hc_intr_mask.b.frmovrun = 1; + + if (hc->ep_is_in) { + hc_intr_mask.b.bblerr = 1; + } + if (hc->error_state) { + hc_intr_mask.b.ack = 1; + } + if (hc->do_split) { + if (hc->complete_split) { + hc_intr_mask.b.nyet = 1; + } else { + hc_intr_mask.b.ack = 1; + } + } + break; + case DWC_OTG_EP_TYPE_ISOC: + hc_intr_mask.b.xfercompl = 1; + hc_intr_mask.b.frmovrun = 1; + hc_intr_mask.b.ack = 1; + + if (hc->ep_is_in) { + hc_intr_mask.b.xacterr = 1; + hc_intr_mask.b.bblerr = 1; + } + break; + } + } + DWC_WRITE_REG32(&hc_regs->hcintmsk, hc_intr_mask.d32); + + /* + * Program the HCCHARn register with the endpoint characteristics for + * the current transfer. + */ + hcchar.d32 = 0; + hcchar.b.devaddr = hc->dev_addr; + hcchar.b.epnum = hc->ep_num; + hcchar.b.epdir = hc->ep_is_in; + hcchar.b.lspddev = (hc->speed == DWC_OTG_EP_SPEED_LOW); + hcchar.b.eptype = hc->ep_type; + hcchar.b.mps = hc->max_packet; + + DWC_WRITE_REG32(&host_if->hc_regs[hc_num]->hcchar, hcchar.d32); + + DWC_DEBUGPL(DBG_HCDV, "%s: Channel %d, Dev Addr %d, EP #%d\n", + __func__, hc->hc_num, hcchar.b.devaddr, hcchar.b.epnum); + DWC_DEBUGPL(DBG_HCDV, " Is In %d, Is Low Speed %d, EP Type %d, " + "Max Pkt %d, Multi Cnt %d\n", + hcchar.b.epdir, hcchar.b.lspddev, hcchar.b.eptype, + hcchar.b.mps, hcchar.b.multicnt); + + /* + * Program the HCSPLIT register for SPLITs + */ + hcsplt.d32 = 0; + if (hc->do_split) { + DWC_DEBUGPL(DBG_HCDV, "Programming HC %d with split --> %s\n", + hc->hc_num, + hc->complete_split ? "CSPLIT" : "SSPLIT"); + hcsplt.b.compsplt = hc->complete_split; + hcsplt.b.xactpos = hc->xact_pos; + hcsplt.b.hubaddr = hc->hub_addr; + hcsplt.b.prtaddr = hc->port_addr; + DWC_DEBUGPL(DBG_HCDV, "\t comp split %d\n", hc->complete_split); + DWC_DEBUGPL(DBG_HCDV, "\t xact pos %d\n", hc->xact_pos); + DWC_DEBUGPL(DBG_HCDV, "\t hub addr %d\n", hc->hub_addr); + DWC_DEBUGPL(DBG_HCDV, "\t port addr %d\n", hc->port_addr); + DWC_DEBUGPL(DBG_HCDV, "\t is_in %d\n", hc->ep_is_in); + DWC_DEBUGPL(DBG_HCDV, "\t Max Pkt: %d\n", hcchar.b.mps); + DWC_DEBUGPL(DBG_HCDV, "\t xferlen: %d\n", hc->xfer_len); + } + DWC_WRITE_REG32(&host_if->hc_regs[hc_num]->hcsplt, hcsplt.d32); + +} + +/** + * Attempts to halt a host channel. This function should only be called in + * Slave mode or to abort a transfer in either Slave mode or DMA mode. Under + * normal circumstances in DMA mode, the controller halts the channel when the + * transfer is complete or a condition occurs that requires application + * intervention. + * + * In slave mode, checks for a free request queue entry, then sets the Channel + * Enable and Channel Disable bits of the Host Channel Characteristics + * register of the specified channel to intiate the halt. If there is no free + * request queue entry, sets only the Channel Disable bit of the HCCHARn + * register to flush requests for this channel. In the latter case, sets a + * flag to indicate that the host channel needs to be halted when a request + * queue slot is open. + * + * In DMA mode, always sets the Channel Enable and Channel Disable bits of the + * HCCHARn register. The controller ensures there is space in the request + * queue before submitting the halt request. + * + * Some time may elapse before the core flushes any posted requests for this + * host channel and halts. The Channel Halted interrupt handler completes the + * deactivation of the host channel. + * + * @param core_if Controller register interface. + * @param hc Host channel to halt. + * @param halt_status Reason for halting the channel. + */ +void dwc_otg_hc_halt(dwc_otg_core_if_t * core_if, + dwc_hc_t * hc, dwc_otg_halt_status_e halt_status) +{ + gnptxsts_data_t nptxsts; + hptxsts_data_t hptxsts; + hcchar_data_t hcchar; + dwc_otg_hc_regs_t *hc_regs; + dwc_otg_core_global_regs_t *global_regs; + dwc_otg_host_global_regs_t *host_global_regs; + + hc_regs = core_if->host_if->hc_regs[hc->hc_num]; + global_regs = core_if->core_global_regs; + host_global_regs = core_if->host_if->host_global_regs; + + DWC_ASSERT(!(halt_status == DWC_OTG_HC_XFER_NO_HALT_STATUS), + "halt_status = %d\n", halt_status); + + if (halt_status == DWC_OTG_HC_XFER_URB_DEQUEUE || + halt_status == DWC_OTG_HC_XFER_AHB_ERR) { + /* + * Disable all channel interrupts except Ch Halted. The QTD + * and QH state associated with this transfer has been cleared + * (in the case of URB_DEQUEUE), so the channel needs to be + * shut down carefully to prevent crashes. + */ + hcintmsk_data_t hcintmsk; + hcintmsk.d32 = 0; + hcintmsk.b.chhltd = 1; + DWC_WRITE_REG32(&hc_regs->hcintmsk, hcintmsk.d32); + + /* + * Make sure no other interrupts besides halt are currently + * pending. Handling another interrupt could cause a crash due + * to the QTD and QH state. + */ + DWC_WRITE_REG32(&hc_regs->hcint, ~hcintmsk.d32); + + /* + * Make sure the halt status is set to URB_DEQUEUE or AHB_ERR + * even if the channel was already halted for some other + * reason. + */ + hc->halt_status = halt_status; + + hcchar.d32 = DWC_READ_REG32(&hc_regs->hcchar); + if (hcchar.b.chen == 0) { + /* + * The channel is either already halted or it hasn't + * started yet. In DMA mode, the transfer may halt if + * it finishes normally or a condition occurs that + * requires driver intervention. Don't want to halt + * the channel again. In either Slave or DMA mode, + * it's possible that the transfer has been assigned + * to a channel, but not started yet when an URB is + * dequeued. Don't want to halt a channel that hasn't + * started yet. + */ + return; + } + } + if (hc->halt_pending) { + /* + * A halt has already been issued for this channel. This might + * happen when a transfer is aborted by a higher level in + * the stack. + */ +#ifdef DEBUG + DWC_PRINTF + ("*** %s: Channel %d, _hc->halt_pending already set ***\n", + __func__, hc->hc_num); + +#endif + return; + } + + hcchar.d32 = DWC_READ_REG32(&hc_regs->hcchar); + + /* No need to set the bit in DDMA for disabling the channel */ + //TODO check it everywhere channel is disabled + if (!core_if->core_params->dma_desc_enable) + hcchar.b.chen = 1; + hcchar.b.chdis = 1; + + if (!core_if->dma_enable) { + /* Check for space in the request queue to issue the halt. */ + if (hc->ep_type == DWC_OTG_EP_TYPE_CONTROL || + hc->ep_type == DWC_OTG_EP_TYPE_BULK) { + nptxsts.d32 = DWC_READ_REG32(&global_regs->gnptxsts); + if (nptxsts.b.nptxqspcavail == 0) { + hcchar.b.chen = 0; + } + } else { + hptxsts.d32 = + DWC_READ_REG32(&host_global_regs->hptxsts); + if ((hptxsts.b.ptxqspcavail == 0) + || (core_if->queuing_high_bandwidth)) { + hcchar.b.chen = 0; + } + } + } + DWC_WRITE_REG32(&hc_regs->hcchar, hcchar.d32); + + hc->halt_status = halt_status; + + if (hcchar.b.chen) { + hc->halt_pending = 1; + hc->halt_on_queue = 0; + } else { + hc->halt_on_queue = 1; + } + + DWC_DEBUGPL(DBG_HCDV, "%s: Channel %d\n", __func__, hc->hc_num); + DWC_DEBUGPL(DBG_HCDV, " hcchar: 0x%08x\n", hcchar.d32); + DWC_DEBUGPL(DBG_HCDV, " halt_pending: %d\n", hc->halt_pending); + DWC_DEBUGPL(DBG_HCDV, " halt_on_queue: %d\n", hc->halt_on_queue); + DWC_DEBUGPL(DBG_HCDV, " halt_status: %d\n", hc->halt_status); + + return; +} + +/** + * Clears the transfer state for a host channel. This function is normally + * called after a transfer is done and the host channel is being released. + * + * @param core_if Programming view of DWC_otg controller. + * @param hc Identifies the host channel to clean up. + */ +void dwc_otg_hc_cleanup(dwc_otg_core_if_t * core_if, dwc_hc_t * hc) +{ + dwc_otg_hc_regs_t *hc_regs; + + hc->xfer_started = 0; + + /* + * Clear channel interrupt enables and any unhandled channel interrupt + * conditions. + */ + hc_regs = core_if->host_if->hc_regs[hc->hc_num]; + DWC_WRITE_REG32(&hc_regs->hcintmsk, 0); + DWC_WRITE_REG32(&hc_regs->hcint, 0xFFFFFFFF); +#ifdef DEBUG + DWC_TIMER_CANCEL(core_if->hc_xfer_timer[hc->hc_num]); +#endif +} + +/** + * Sets the channel property that indicates in which frame a periodic transfer + * should occur. This is always set to the _next_ frame. This function has no + * effect on non-periodic transfers. + * + * @param core_if Programming view of DWC_otg controller. + * @param hc Identifies the host channel to set up and its properties. + * @param hcchar Current value of the HCCHAR register for the specified host + * channel. + */ +static inline void hc_set_even_odd_frame(dwc_otg_core_if_t * core_if, + dwc_hc_t * hc, hcchar_data_t * hcchar) +{ + if (hc->ep_type == DWC_OTG_EP_TYPE_INTR || + hc->ep_type == DWC_OTG_EP_TYPE_ISOC) { + hfnum_data_t hfnum; + hfnum.d32 = + DWC_READ_REG32(&core_if->host_if->host_global_regs->hfnum); + + /* 1 if _next_ frame is odd, 0 if it's even */ + hcchar->b.oddfrm = (hfnum.b.frnum & 0x1) ? 0 : 1; +#ifdef DEBUG + if (hc->ep_type == DWC_OTG_EP_TYPE_INTR && hc->do_split + && !hc->complete_split) { + switch (hfnum.b.frnum & 0x7) { + case 7: + core_if->hfnum_7_samples++; + core_if->hfnum_7_frrem_accum += hfnum.b.frrem; + break; + case 0: + core_if->hfnum_0_samples++; + core_if->hfnum_0_frrem_accum += hfnum.b.frrem; + break; + default: + core_if->hfnum_other_samples++; + core_if->hfnum_other_frrem_accum += + hfnum.b.frrem; + break; + } + } +#endif + } +} + +#ifdef DEBUG +void hc_xfer_timeout(void *ptr) +{ + hc_xfer_info_t *xfer_info = NULL; + int hc_num = 0; + + if (ptr) + xfer_info = (hc_xfer_info_t *) ptr; + + if (!xfer_info->hc) { + DWC_ERROR("xfer_info->hc = %p\n", xfer_info->hc); + return; + } + + hc_num = xfer_info->hc->hc_num; + DWC_WARN("%s: timeout on channel %d\n", __func__, hc_num); + DWC_WARN(" start_hcchar_val 0x%08x\n", + xfer_info->core_if->start_hcchar_val[hc_num]); +} +#endif + +void ep_xfer_timeout(void *ptr) +{ + ep_xfer_info_t *xfer_info = NULL; + int ep_num = 0; + dctl_data_t dctl = {.d32 = 0 }; + gintsts_data_t gintsts = {.d32 = 0 }; + gintmsk_data_t gintmsk = {.d32 = 0 }; + + if (ptr) + xfer_info = (ep_xfer_info_t *) ptr; + + if (!xfer_info->ep) { + DWC_ERROR("xfer_info->ep = %p\n", xfer_info->ep); + return; + } + + ep_num = xfer_info->ep->num; + DWC_WARN("%s: timeout on endpoit %d\n", __func__, ep_num); + /* Put the sate to 2 as it was time outed */ + xfer_info->state = 2; + + dctl.d32 = + DWC_READ_REG32(&xfer_info->core_if->dev_if->dev_global_regs->dctl); + gintsts.d32 = + DWC_READ_REG32(&xfer_info->core_if->core_global_regs->gintsts); + gintmsk.d32 = + DWC_READ_REG32(&xfer_info->core_if->core_global_regs->gintmsk); + + if (!gintmsk.b.goutnakeff) { + /* Unmask it */ + gintmsk.b.goutnakeff = 1; + DWC_WRITE_REG32(&xfer_info->core_if->core_global_regs->gintmsk, + gintmsk.d32); + + } + + if (!gintsts.b.goutnakeff) { + dctl.b.sgoutnak = 1; + } + DWC_WRITE_REG32(&xfer_info->core_if->dev_if->dev_global_regs->dctl, + dctl.d32); + +} + +void set_pid_isoc(dwc_hc_t * hc) +{ + /* Set up the initial PID for the transfer. */ + if (hc->speed == DWC_OTG_EP_SPEED_HIGH) { + if (hc->ep_is_in) { + if (hc->multi_count == 1) { + hc->data_pid_start = DWC_OTG_HC_PID_DATA0; + } else if (hc->multi_count == 2) { + hc->data_pid_start = DWC_OTG_HC_PID_DATA1; + } else { + hc->data_pid_start = DWC_OTG_HC_PID_DATA2; + } + } else { + if (hc->multi_count == 1) { + hc->data_pid_start = DWC_OTG_HC_PID_DATA0; + } else { + hc->data_pid_start = DWC_OTG_HC_PID_MDATA; + } + } + } else { + hc->data_pid_start = DWC_OTG_HC_PID_DATA0; + } +} + +/** + * This function does the setup for a data transfer for a host channel and + * starts the transfer. May be called in either Slave mode or DMA mode. In + * Slave mode, the caller must ensure that there is sufficient space in the + * request queue and Tx Data FIFO. + * + * For an OUT transfer in Slave mode, it loads a data packet into the + * appropriate FIFO. If necessary, additional data packets will be loaded in + * the Host ISR. + * + * For an IN transfer in Slave mode, a data packet is requested. The data + * packets are unloaded from the Rx FIFO in the Host ISR. If necessary, + * additional data packets are requested in the Host ISR. + * + * For a PING transfer in Slave mode, the Do Ping bit is set in the HCTSIZ + * register along with a packet count of 1 and the channel is enabled. This + * causes a single PING transaction to occur. Other fields in HCTSIZ are + * simply set to 0 since no data transfer occurs in this case. + * + * For a PING transfer in DMA mode, the HCTSIZ register is initialized with + * all the information required to perform the subsequent data transfer. In + * addition, the Do Ping bit is set in the HCTSIZ register. In this case, the + * controller performs the entire PING protocol, then starts the data + * transfer. + * + * @param core_if Programming view of DWC_otg controller. + * @param hc Information needed to initialize the host channel. The xfer_len + * value may be reduced to accommodate the max widths of the XferSize and + * PktCnt fields in the HCTSIZn register. The multi_count value may be changed + * to reflect the final xfer_len value. + */ +void dwc_otg_hc_start_transfer(dwc_otg_core_if_t * core_if, dwc_hc_t * hc) +{ + hcchar_data_t hcchar; + hctsiz_data_t hctsiz; + uint16_t num_packets; + uint32_t max_hc_xfer_size = core_if->core_params->max_transfer_size; + uint16_t max_hc_pkt_count = core_if->core_params->max_packet_count; + dwc_otg_hc_regs_t *hc_regs = core_if->host_if->hc_regs[hc->hc_num]; + + hctsiz.d32 = 0; + + if (hc->do_ping) { + if (!core_if->dma_enable) { + dwc_otg_hc_do_ping(core_if, hc); + hc->xfer_started = 1; + return; + } else { + hctsiz.b.dopng = 1; + } + } + + if (hc->do_split) { + num_packets = 1; + + if (hc->complete_split && !hc->ep_is_in) { + /* For CSPLIT OUT Transfer, set the size to 0 so the + * core doesn't expect any data written to the FIFO */ + hc->xfer_len = 0; + } else if (hc->ep_is_in || (hc->xfer_len > hc->max_packet)) { + hc->xfer_len = hc->max_packet; + } else if (!hc->ep_is_in && (hc->xfer_len > 188)) { + hc->xfer_len = 188; + } + + hctsiz.b.xfersize = hc->xfer_len; + } else { + /* + * Ensure that the transfer length and packet count will fit + * in the widths allocated for them in the HCTSIZn register. + */ + if (hc->ep_type == DWC_OTG_EP_TYPE_INTR || + hc->ep_type == DWC_OTG_EP_TYPE_ISOC) { + /* + * Make sure the transfer size is no larger than one + * (micro)frame's worth of data. (A check was done + * when the periodic transfer was accepted to ensure + * that a (micro)frame's worth of data can be + * programmed into a channel.) + */ + uint32_t max_periodic_len = + hc->multi_count * hc->max_packet; + if (hc->xfer_len > max_periodic_len) { + hc->xfer_len = max_periodic_len; + } else { + } + } else if (hc->xfer_len > max_hc_xfer_size) { + /* Make sure that xfer_len is a multiple of max packet size. */ + hc->xfer_len = max_hc_xfer_size - hc->max_packet + 1; + } + + if (hc->xfer_len > 0) { + num_packets = + (hc->xfer_len + hc->max_packet - + 1) / hc->max_packet; + if (num_packets > max_hc_pkt_count) { + num_packets = max_hc_pkt_count; + hc->xfer_len = num_packets * hc->max_packet; + } + } else { + /* Need 1 packet for transfer length of 0. */ + num_packets = 1; + } + + if (hc->ep_is_in) { + /* Always program an integral # of max packets for IN transfers. */ + hc->xfer_len = num_packets * hc->max_packet; + } + + if (hc->ep_type == DWC_OTG_EP_TYPE_INTR || + hc->ep_type == DWC_OTG_EP_TYPE_ISOC) { + /* + * Make sure that the multi_count field matches the + * actual transfer length. + */ + hc->multi_count = num_packets; + } + + if (hc->ep_type == DWC_OTG_EP_TYPE_ISOC) + set_pid_isoc(hc); + + hctsiz.b.xfersize = hc->xfer_len; + } + + hc->start_pkt_count = num_packets; + hctsiz.b.pktcnt = num_packets; + hctsiz.b.pid = hc->data_pid_start; + DWC_WRITE_REG32(&hc_regs->hctsiz, hctsiz.d32); + + DWC_DEBUGPL(DBG_HCDV, "%s: Channel %d\n", __func__, hc->hc_num); + DWC_DEBUGPL(DBG_HCDV, " Xfer Size: %d\n", hctsiz.b.xfersize); + DWC_DEBUGPL(DBG_HCDV, " Num Pkts: %d\n", hctsiz.b.pktcnt); + DWC_DEBUGPL(DBG_HCDV, " Start PID: %d\n", hctsiz.b.pid); + + if (core_if->dma_enable) { + dwc_dma_t dma_addr; + if (hc->align_buff) { + dma_addr = hc->align_buff; + } else { + dma_addr = ((unsigned long)hc->xfer_buff & 0xffffffff); + } + DWC_WRITE_REG32(&hc_regs->hcdma, dma_addr); + } + + /* Start the split */ + if (hc->do_split) { + hcsplt_data_t hcsplt; + hcsplt.d32 = DWC_READ_REG32(&hc_regs->hcsplt); + hcsplt.b.spltena = 1; + DWC_WRITE_REG32(&hc_regs->hcsplt, hcsplt.d32); + } + + hcchar.d32 = DWC_READ_REG32(&hc_regs->hcchar); + hcchar.b.multicnt = hc->multi_count; + hc_set_even_odd_frame(core_if, hc, &hcchar); +#ifdef DEBUG + core_if->start_hcchar_val[hc->hc_num] = hcchar.d32; + if (hcchar.b.chdis) { + DWC_WARN("%s: chdis set, channel %d, hcchar 0x%08x\n", + __func__, hc->hc_num, hcchar.d32); + } +#endif + + /* Set host channel enable after all other setup is complete. */ + hcchar.b.chen = 1; + hcchar.b.chdis = 0; + DWC_WRITE_REG32(&hc_regs->hcchar, hcchar.d32); + + hc->xfer_started = 1; + hc->requests++; + + if (!core_if->dma_enable && !hc->ep_is_in && hc->xfer_len > 0) { + /* Load OUT packet into the appropriate Tx FIFO. */ + dwc_otg_hc_write_packet(core_if, hc); + } +#ifdef DEBUG + if (hc->ep_type != DWC_OTG_EP_TYPE_INTR) { + DWC_DEBUGPL(DBG_HCDV, "transfer %d from core_if %p\n", + hc->hc_num, core_if);//GRAYG + core_if->hc_xfer_info[hc->hc_num].core_if = core_if; + core_if->hc_xfer_info[hc->hc_num].hc = hc; + + /* Start a timer for this transfer. */ + DWC_TIMER_SCHEDULE(core_if->hc_xfer_timer[hc->hc_num], 10000); + } +#endif +} + +/** + * This function does the setup for a data transfer for a host channel + * and starts the transfer in Descriptor DMA mode. + * + * Initializes HCTSIZ register. For a PING transfer the Do Ping bit is set. + * Sets PID and NTD values. For periodic transfers + * initializes SCHED_INFO field with micro-frame bitmap. + * + * Initializes HCDMA register with descriptor list address and CTD value + * then starts the transfer via enabling the channel. + * + * @param core_if Programming view of DWC_otg controller. + * @param hc Information needed to initialize the host channel. + */ +void dwc_otg_hc_start_transfer_ddma(dwc_otg_core_if_t * core_if, dwc_hc_t * hc) +{ + dwc_otg_hc_regs_t *hc_regs = core_if->host_if->hc_regs[hc->hc_num]; + hcchar_data_t hcchar; + hctsiz_data_t hctsiz; + hcdma_data_t hcdma; + + hctsiz.d32 = 0; + + if (hc->do_ping) + hctsiz.b_ddma.dopng = 1; + + if (hc->ep_type == DWC_OTG_EP_TYPE_ISOC) + set_pid_isoc(hc); + + /* Packet Count and Xfer Size are not used in Descriptor DMA mode */ + hctsiz.b_ddma.pid = hc->data_pid_start; + hctsiz.b_ddma.ntd = hc->ntd - 1; /* 0 - 1 descriptor, 1 - 2 descriptors, etc. */ + hctsiz.b_ddma.schinfo = hc->schinfo; /* Non-zero only for high-speed interrupt endpoints */ + + DWC_DEBUGPL(DBG_HCDV, "%s: Channel %d\n", __func__, hc->hc_num); + DWC_DEBUGPL(DBG_HCDV, " Start PID: %d\n", hctsiz.b.pid); + DWC_DEBUGPL(DBG_HCDV, " NTD: %d\n", hctsiz.b_ddma.ntd); + + DWC_WRITE_REG32(&hc_regs->hctsiz, hctsiz.d32); + + hcdma.d32 = 0; + hcdma.b.dma_addr = ((uint32_t) hc->desc_list_addr) >> 11; + + /* Always start from first descriptor. */ + hcdma.b.ctd = 0; + DWC_WRITE_REG32(&hc_regs->hcdma, hcdma.d32); + + hcchar.d32 = DWC_READ_REG32(&hc_regs->hcchar); + hcchar.b.multicnt = hc->multi_count; + +#ifdef DEBUG + core_if->start_hcchar_val[hc->hc_num] = hcchar.d32; + if (hcchar.b.chdis) { + DWC_WARN("%s: chdis set, channel %d, hcchar 0x%08x\n", + __func__, hc->hc_num, hcchar.d32); + } +#endif + + /* Set host channel enable after all other setup is complete. */ + hcchar.b.chen = 1; + hcchar.b.chdis = 0; + + DWC_WRITE_REG32(&hc_regs->hcchar, hcchar.d32); + + hc->xfer_started = 1; + hc->requests++; + +#ifdef DEBUG + if ((hc->ep_type != DWC_OTG_EP_TYPE_INTR) + && (hc->ep_type != DWC_OTG_EP_TYPE_ISOC)) { + DWC_DEBUGPL(DBG_HCDV, "DMA transfer %d from core_if %p\n", + hc->hc_num, core_if);//GRAYG + core_if->hc_xfer_info[hc->hc_num].core_if = core_if; + core_if->hc_xfer_info[hc->hc_num].hc = hc; + /* Start a timer for this transfer. */ + DWC_TIMER_SCHEDULE(core_if->hc_xfer_timer[hc->hc_num], 10000); + } +#endif + +} + +/** + * This function continues a data transfer that was started by previous call + * to dwc_otg_hc_start_transfer. The caller must ensure there is + * sufficient space in the request queue and Tx Data FIFO. This function + * should only be called in Slave mode. In DMA mode, the controller acts + * autonomously to complete transfers programmed to a host channel. + * + * For an OUT transfer, a new data packet is loaded into the appropriate FIFO + * if there is any data remaining to be queued. For an IN transfer, another + * data packet is always requested. For the SETUP phase of a control transfer, + * this function does nothing. + * + * @return 1 if a new request is queued, 0 if no more requests are required + * for this transfer. + */ +int dwc_otg_hc_continue_transfer(dwc_otg_core_if_t * core_if, dwc_hc_t * hc) +{ + DWC_DEBUGPL(DBG_HCDV, "%s: Channel %d\n", __func__, hc->hc_num); + + if (hc->do_split) { + /* SPLITs always queue just once per channel */ + return 0; + } else if (hc->data_pid_start == DWC_OTG_HC_PID_SETUP) { + /* SETUPs are queued only once since they can't be NAKed. */ + return 0; + } else if (hc->ep_is_in) { + /* + * Always queue another request for other IN transfers. If + * back-to-back INs are issued and NAKs are received for both, + * the driver may still be processing the first NAK when the + * second NAK is received. When the interrupt handler clears + * the NAK interrupt for the first NAK, the second NAK will + * not be seen. So we can't depend on the NAK interrupt + * handler to requeue a NAKed request. Instead, IN requests + * are issued each time this function is called. When the + * transfer completes, the extra requests for the channel will + * be flushed. + */ + hcchar_data_t hcchar; + dwc_otg_hc_regs_t *hc_regs = + core_if->host_if->hc_regs[hc->hc_num]; + + hcchar.d32 = DWC_READ_REG32(&hc_regs->hcchar); + hc_set_even_odd_frame(core_if, hc, &hcchar); + hcchar.b.chen = 1; + hcchar.b.chdis = 0; + DWC_DEBUGPL(DBG_HCDV, " IN xfer: hcchar = 0x%08x\n", + hcchar.d32); + DWC_WRITE_REG32(&hc_regs->hcchar, hcchar.d32); + hc->requests++; + return 1; + } else { + /* OUT transfers. */ + if (hc->xfer_count < hc->xfer_len) { + if (hc->ep_type == DWC_OTG_EP_TYPE_INTR || + hc->ep_type == DWC_OTG_EP_TYPE_ISOC) { + hcchar_data_t hcchar; + dwc_otg_hc_regs_t *hc_regs; + hc_regs = core_if->host_if->hc_regs[hc->hc_num]; + hcchar.d32 = DWC_READ_REG32(&hc_regs->hcchar); + hc_set_even_odd_frame(core_if, hc, &hcchar); + } + + /* Load OUT packet into the appropriate Tx FIFO. */ + dwc_otg_hc_write_packet(core_if, hc); + hc->requests++; + return 1; + } else { + return 0; + } + } +} + +/** + * Starts a PING transfer. This function should only be called in Slave mode. + * The Do Ping bit is set in the HCTSIZ register, then the channel is enabled. + */ +void dwc_otg_hc_do_ping(dwc_otg_core_if_t * core_if, dwc_hc_t * hc) +{ + hcchar_data_t hcchar; + hctsiz_data_t hctsiz; + dwc_otg_hc_regs_t *hc_regs = core_if->host_if->hc_regs[hc->hc_num]; + + DWC_DEBUGPL(DBG_HCDV, "%s: Channel %d\n", __func__, hc->hc_num); + + hctsiz.d32 = 0; + hctsiz.b.dopng = 1; + hctsiz.b.pktcnt = 1; + DWC_WRITE_REG32(&hc_regs->hctsiz, hctsiz.d32); + + hcchar.d32 = DWC_READ_REG32(&hc_regs->hcchar); + hcchar.b.chen = 1; + hcchar.b.chdis = 0; + DWC_WRITE_REG32(&hc_regs->hcchar, hcchar.d32); +} + +/* + * This function writes a packet into the Tx FIFO associated with the Host + * Channel. For a channel associated with a non-periodic EP, the non-periodic + * Tx FIFO is written. For a channel associated with a periodic EP, the + * periodic Tx FIFO is written. This function should only be called in Slave + * mode. + * + * Upon return the xfer_buff and xfer_count fields in _hc are incremented by + * then number of bytes written to the Tx FIFO. + */ +void dwc_otg_hc_write_packet(dwc_otg_core_if_t * core_if, dwc_hc_t * hc) +{ + uint32_t i; + uint32_t remaining_count; + uint32_t byte_count; + uint32_t dword_count; + + uint32_t *data_buff = (uint32_t *) (hc->xfer_buff); + uint32_t *data_fifo = core_if->data_fifo[hc->hc_num]; + + remaining_count = hc->xfer_len - hc->xfer_count; + if (remaining_count > hc->max_packet) { + byte_count = hc->max_packet; + } else { + byte_count = remaining_count; + } + + dword_count = (byte_count + 3) / 4; + + if ((((unsigned long)data_buff) & 0x3) == 0) { + /* xfer_buff is DWORD aligned. */ + for (i = 0; i < dword_count; i++, data_buff++) { + DWC_WRITE_REG32(data_fifo, *data_buff); + } + } else { + /* xfer_buff is not DWORD aligned. */ + for (i = 0; i < dword_count; i++, data_buff++) { + uint32_t data; + data = + (data_buff[0] | data_buff[1] << 8 | data_buff[2] << + 16 | data_buff[3] << 24); + DWC_WRITE_REG32(data_fifo, data); + } + } + + hc->xfer_count += byte_count; + hc->xfer_buff += byte_count; +} + +/** + * Gets the current USB frame number. This is the frame number from the last + * SOF packet. + */ +uint32_t dwc_otg_get_frame_number(dwc_otg_core_if_t * core_if) +{ + dsts_data_t dsts; + dsts.d32 = DWC_READ_REG32(&core_if->dev_if->dev_global_regs->dsts); + + /* read current frame/microframe number from DSTS register */ + return dsts.b.soffn; +} + +/** + * Calculates and gets the frame Interval value of HFIR register according PHY + * type and speed.The application can modify a value of HFIR register only after + * the Port Enable bit of the Host Port Control and Status register + * (HPRT.PrtEnaPort) has been set. +*/ + +uint32_t calc_frame_interval(dwc_otg_core_if_t * core_if) +{ + gusbcfg_data_t usbcfg; + hwcfg2_data_t hwcfg2; + hprt0_data_t hprt0; + int clock = 60; // default value + usbcfg.d32 = DWC_READ_REG32(&core_if->core_global_regs->gusbcfg); + hwcfg2.d32 = DWC_READ_REG32(&core_if->core_global_regs->ghwcfg2); + hprt0.d32 = DWC_READ_REG32(core_if->host_if->hprt0); + if (!usbcfg.b.physel && usbcfg.b.ulpi_utmi_sel && !usbcfg.b.phyif) + clock = 60; + if (usbcfg.b.physel && hwcfg2.b.fs_phy_type == 3) + clock = 48; + if (!usbcfg.b.phylpwrclksel && !usbcfg.b.physel && + !usbcfg.b.ulpi_utmi_sel && usbcfg.b.phyif) + clock = 30; + if (!usbcfg.b.phylpwrclksel && !usbcfg.b.physel && + !usbcfg.b.ulpi_utmi_sel && !usbcfg.b.phyif) + clock = 60; + if (usbcfg.b.phylpwrclksel && !usbcfg.b.physel && + !usbcfg.b.ulpi_utmi_sel && usbcfg.b.phyif) + clock = 48; + if (usbcfg.b.physel && !usbcfg.b.phyif && hwcfg2.b.fs_phy_type == 2) + clock = 48; + if (usbcfg.b.physel && hwcfg2.b.fs_phy_type == 1) + clock = 48; + if (hprt0.b.prtspd == 0) + /* High speed case */ + return 125 * clock; + else + /* FS/LS case */ + return 1000 * clock; +} + +/** + * This function reads a setup packet from the Rx FIFO into the destination + * buffer. This function is called from the Rx Status Queue Level (RxStsQLvl) + * Interrupt routine when a SETUP packet has been received in Slave mode. + * + * @param core_if Programming view of DWC_otg controller. + * @param dest Destination buffer for packet data. + */ +void dwc_otg_read_setup_packet(dwc_otg_core_if_t * core_if, uint32_t * dest) +{ + device_grxsts_data_t status; + /* Get the 8 bytes of a setup transaction data */ + + /* Pop 2 DWORDS off the receive data FIFO into memory */ + dest[0] = DWC_READ_REG32(core_if->data_fifo[0]); + dest[1] = DWC_READ_REG32(core_if->data_fifo[0]); + if (core_if->snpsid >= OTG_CORE_REV_3_00a) { + status.d32 = + DWC_READ_REG32(&core_if->core_global_regs->grxstsp); + DWC_DEBUGPL(DBG_ANY, + "EP:%d BCnt:%d " "pktsts:%x Frame:%d(0x%0x)\n", + status.b.epnum, status.b.bcnt, status.b.pktsts, + status.b.fn, status.b.fn); + } +} + +/** + * This function enables EP0 OUT to receive SETUP packets and configures EP0 + * IN for transmitting packets. It is normally called when the + * "Enumeration Done" interrupt occurs. + * + * @param core_if Programming view of DWC_otg controller. + * @param ep The EP0 data. + */ +void dwc_otg_ep0_activate(dwc_otg_core_if_t * core_if, dwc_ep_t * ep) +{ + dwc_otg_dev_if_t *dev_if = core_if->dev_if; + dsts_data_t dsts; + depctl_data_t diepctl; + depctl_data_t doepctl; + dctl_data_t dctl = {.d32 = 0 }; + + ep->stp_rollover = 0; + /* Read the Device Status and Endpoint 0 Control registers */ + dsts.d32 = DWC_READ_REG32(&dev_if->dev_global_regs->dsts); + diepctl.d32 = DWC_READ_REG32(&dev_if->in_ep_regs[0]->diepctl); + doepctl.d32 = DWC_READ_REG32(&dev_if->out_ep_regs[0]->doepctl); + + /* Set the MPS of the IN EP based on the enumeration speed */ + switch (dsts.b.enumspd) { + case DWC_DSTS_ENUMSPD_HS_PHY_30MHZ_OR_60MHZ: + case DWC_DSTS_ENUMSPD_FS_PHY_30MHZ_OR_60MHZ: + case DWC_DSTS_ENUMSPD_FS_PHY_48MHZ: + diepctl.b.mps = DWC_DEP0CTL_MPS_64; + break; + case DWC_DSTS_ENUMSPD_LS_PHY_6MHZ: + diepctl.b.mps = DWC_DEP0CTL_MPS_8; + break; + } + + DWC_WRITE_REG32(&dev_if->in_ep_regs[0]->diepctl, diepctl.d32); + + /* Enable OUT EP for receive */ + if (core_if->snpsid <= OTG_CORE_REV_2_94a) { + doepctl.b.epena = 1; + DWC_WRITE_REG32(&dev_if->out_ep_regs[0]->doepctl, doepctl.d32); + } +#ifdef VERBOSE + DWC_DEBUGPL(DBG_PCDV, "doepctl0=%0x\n", + DWC_READ_REG32(&dev_if->out_ep_regs[0]->doepctl)); + DWC_DEBUGPL(DBG_PCDV, "diepctl0=%0x\n", + DWC_READ_REG32(&dev_if->in_ep_regs[0]->diepctl)); +#endif + dctl.b.cgnpinnak = 1; + + DWC_MODIFY_REG32(&dev_if->dev_global_regs->dctl, dctl.d32, dctl.d32); + DWC_DEBUGPL(DBG_PCDV, "dctl=%0x\n", + DWC_READ_REG32(&dev_if->dev_global_regs->dctl)); + +} + +/** + * This function activates an EP. The Device EP control register for + * the EP is configured as defined in the ep structure. Note: This + * function is not used for EP0. + * + * @param core_if Programming view of DWC_otg controller. + * @param ep The EP to activate. + */ +void dwc_otg_ep_activate(dwc_otg_core_if_t * core_if, dwc_ep_t * ep) +{ + dwc_otg_dev_if_t *dev_if = core_if->dev_if; + depctl_data_t depctl; + volatile uint32_t *addr; + daint_data_t daintmsk = {.d32 = 0 }; + dcfg_data_t dcfg; + uint8_t i; + + DWC_DEBUGPL(DBG_PCDV, "%s() EP%d-%s\n", __func__, ep->num, + (ep->is_in ? "IN" : "OUT")); + +#ifdef DWC_UTE_PER_IO + ep->xiso_frame_num = 0xFFFFFFFF; + ep->xiso_active_xfers = 0; + ep->xiso_queued_xfers = 0; +#endif + /* Read DEPCTLn register */ + if (ep->is_in == 1) { + addr = &dev_if->in_ep_regs[ep->num]->diepctl; + daintmsk.ep.in = 1 << ep->num; + } else { + addr = &dev_if->out_ep_regs[ep->num]->doepctl; + daintmsk.ep.out = 1 << ep->num; + } + + /* If the EP is already active don't change the EP Control + * register. */ + depctl.d32 = DWC_READ_REG32(addr); + if (!depctl.b.usbactep) { + depctl.b.mps = ep->maxpacket; + depctl.b.eptype = ep->type; + depctl.b.txfnum = ep->tx_fifo_num; + + if (ep->type == DWC_OTG_EP_TYPE_ISOC) { + depctl.b.setd0pid = 1; // ??? + } else { + depctl.b.setd0pid = 1; + } + depctl.b.usbactep = 1; + + /* Update nextep_seq array and EPMSCNT in DCFG*/ + if (!(depctl.b.eptype & 1) && (ep->is_in == 1)) { // NP IN EP + for (i = 0; i <= core_if->dev_if->num_in_eps; i++) { + if (core_if->nextep_seq[i] == core_if->first_in_nextep_seq) + break; + } + core_if->nextep_seq[i] = ep->num; + core_if->nextep_seq[ep->num] = core_if->first_in_nextep_seq; + depctl.b.nextep = core_if->nextep_seq[ep->num]; + dcfg.d32 = DWC_READ_REG32(&dev_if->dev_global_regs->dcfg); + dcfg.b.epmscnt++; + DWC_WRITE_REG32(&dev_if->dev_global_regs->dcfg, dcfg.d32); + + DWC_DEBUGPL(DBG_PCDV, + "%s first_in_nextep_seq= %2d; nextep_seq[]:\n", + __func__, core_if->first_in_nextep_seq); + for (i=0; i <= core_if->dev_if->num_in_eps; i++) { + DWC_DEBUGPL(DBG_PCDV, "%2d\n", + core_if->nextep_seq[i]); + } + + } + + + DWC_WRITE_REG32(addr, depctl.d32); + DWC_DEBUGPL(DBG_PCDV, "DEPCTL=%08x\n", DWC_READ_REG32(addr)); + } + + /* Enable the Interrupt for this EP */ + if (core_if->multiproc_int_enable) { + if (ep->is_in == 1) { + diepmsk_data_t diepmsk = {.d32 = 0 }; + diepmsk.b.xfercompl = 1; + diepmsk.b.timeout = 1; + diepmsk.b.epdisabled = 1; + diepmsk.b.ahberr = 1; + diepmsk.b.intknepmis = 1; + if (!core_if->en_multiple_tx_fifo && core_if->dma_enable) + diepmsk.b.intknepmis = 0; + diepmsk.b.txfifoundrn = 1; //????? + if (ep->type == DWC_OTG_EP_TYPE_ISOC) { + diepmsk.b.nak = 1; + } + + + +/* + if (core_if->dma_desc_enable) { + diepmsk.b.bna = 1; + } +*/ +/* + if (core_if->dma_enable) { + doepmsk.b.nak = 1; + } +*/ + DWC_WRITE_REG32(&dev_if->dev_global_regs-> + diepeachintmsk[ep->num], diepmsk.d32); + + } else { + doepmsk_data_t doepmsk = {.d32 = 0 }; + doepmsk.b.xfercompl = 1; + doepmsk.b.ahberr = 1; + doepmsk.b.epdisabled = 1; + if (ep->type == DWC_OTG_EP_TYPE_ISOC) + doepmsk.b.outtknepdis = 1; + +/* + + if (core_if->dma_desc_enable) { + doepmsk.b.bna = 1; + } +*/ +/* + doepmsk.b.babble = 1; + doepmsk.b.nyet = 1; + doepmsk.b.nak = 1; +*/ + DWC_WRITE_REG32(&dev_if->dev_global_regs-> + doepeachintmsk[ep->num], doepmsk.d32); + } + DWC_MODIFY_REG32(&dev_if->dev_global_regs->deachintmsk, + 0, daintmsk.d32); + } else { + if (ep->type == DWC_OTG_EP_TYPE_ISOC) { + if (ep->is_in) { + diepmsk_data_t diepmsk = {.d32 = 0 }; + diepmsk.b.nak = 1; + DWC_MODIFY_REG32(&dev_if->dev_global_regs->diepmsk, 0, diepmsk.d32); + } else { + doepmsk_data_t doepmsk = {.d32 = 0 }; + doepmsk.b.outtknepdis = 1; + DWC_MODIFY_REG32(&dev_if->dev_global_regs->doepmsk, 0, doepmsk.d32); + } + } + DWC_MODIFY_REG32(&dev_if->dev_global_regs->daintmsk, + 0, daintmsk.d32); + } + + DWC_DEBUGPL(DBG_PCDV, "DAINTMSK=%0x\n", + DWC_READ_REG32(&dev_if->dev_global_regs->daintmsk)); + + ep->stall_clear_flag = 0; + + return; +} + +/** + * This function deactivates an EP. This is done by clearing the USB Active + * EP bit in the Device EP control register. Note: This function is not used + * for EP0. EP0 cannot be deactivated. + * + * @param core_if Programming view of DWC_otg controller. + * @param ep The EP to deactivate. + */ +void dwc_otg_ep_deactivate(dwc_otg_core_if_t * core_if, dwc_ep_t * ep) +{ + depctl_data_t depctl = {.d32 = 0 }; + volatile uint32_t *addr; + daint_data_t daintmsk = {.d32 = 0 }; + dcfg_data_t dcfg; + uint8_t i = 0; + +#ifdef DWC_UTE_PER_IO + ep->xiso_frame_num = 0xFFFFFFFF; + ep->xiso_active_xfers = 0; + ep->xiso_queued_xfers = 0; +#endif + + /* Read DEPCTLn register */ + if (ep->is_in == 1) { + addr = &core_if->dev_if->in_ep_regs[ep->num]->diepctl; + daintmsk.ep.in = 1 << ep->num; + } else { + addr = &core_if->dev_if->out_ep_regs[ep->num]->doepctl; + daintmsk.ep.out = 1 << ep->num; + } + + depctl.d32 = DWC_READ_REG32(addr); + + depctl.b.usbactep = 0; + + /* Update nextep_seq array and EPMSCNT in DCFG*/ + if (!(depctl.b.eptype & 1) && ep->is_in == 1) { // NP EP IN + for (i = 0; i <= core_if->dev_if->num_in_eps; i++) { + if (core_if->nextep_seq[i] == ep->num) + break; + } + core_if->nextep_seq[i] = core_if->nextep_seq[ep->num]; + if (core_if->first_in_nextep_seq == ep->num) + core_if->first_in_nextep_seq = i; + core_if->nextep_seq[ep->num] = 0xff; + depctl.b.nextep = 0; + dcfg.d32 = + DWC_READ_REG32(&core_if->dev_if->dev_global_regs->dcfg); + dcfg.b.epmscnt--; + DWC_WRITE_REG32(&core_if->dev_if->dev_global_regs->dcfg, + dcfg.d32); + + DWC_DEBUGPL(DBG_PCDV, + "%s first_in_nextep_seq= %2d; nextep_seq[]:\n", + __func__, core_if->first_in_nextep_seq); + for (i=0; i <= core_if->dev_if->num_in_eps; i++) { + DWC_DEBUGPL(DBG_PCDV, "%2d\n", core_if->nextep_seq[i]); + } + } + + if (ep->is_in == 1) + depctl.b.txfnum = 0; + + if (core_if->dma_desc_enable) + depctl.b.epdis = 1; + + DWC_WRITE_REG32(addr, depctl.d32); + depctl.d32 = DWC_READ_REG32(addr); + if (core_if->dma_enable && ep->type == DWC_OTG_EP_TYPE_ISOC + && depctl.b.epena) { + depctl_data_t depctl = {.d32 = 0}; + if (ep->is_in) { + diepint_data_t diepint = {.d32 = 0}; + + depctl.b.snak = 1; + DWC_WRITE_REG32(&core_if->dev_if->in_ep_regs[ep->num]-> + diepctl, depctl.d32); + do { + dwc_udelay(10); + diepint.d32 = + DWC_READ_REG32(&core_if-> + dev_if->in_ep_regs[ep->num]-> + diepint); + } while (!diepint.b.inepnakeff); + diepint.b.inepnakeff = 1; + DWC_WRITE_REG32(&core_if->dev_if->in_ep_regs[ep->num]-> + diepint, diepint.d32); + depctl.d32 = 0; + depctl.b.epdis = 1; + DWC_WRITE_REG32(&core_if->dev_if->in_ep_regs[ep->num]-> + diepctl, depctl.d32); + do { + dwc_udelay(10); + diepint.d32 = + DWC_READ_REG32(&core_if-> + dev_if->in_ep_regs[ep->num]-> + diepint); + } while (!diepint.b.epdisabled); + diepint.b.epdisabled = 1; + DWC_WRITE_REG32(&core_if->dev_if->in_ep_regs[ep->num]-> + diepint, diepint.d32); + } else { + dctl_data_t dctl = {.d32 = 0}; + gintmsk_data_t gintsts = {.d32 = 0}; + doepint_data_t doepint = {.d32 = 0}; + dctl.b.sgoutnak = 1; + DWC_MODIFY_REG32(&core_if->dev_if->dev_global_regs-> + dctl, 0, dctl.d32); + do { + dwc_udelay(10); + gintsts.d32 = DWC_READ_REG32(&core_if->core_global_regs->gintsts); + } while (!gintsts.b.goutnakeff); + gintsts.d32 = 0; + gintsts.b.goutnakeff = 1; + DWC_WRITE_REG32(&core_if->core_global_regs->gintsts, gintsts.d32); + + depctl.d32 = 0; + depctl.b.epdis = 1; + depctl.b.snak = 1; + DWC_WRITE_REG32(&core_if->dev_if->out_ep_regs[ep->num]->doepctl, depctl.d32); + do + { + dwc_udelay(10); + doepint.d32 = DWC_READ_REG32(&core_if->dev_if-> + out_ep_regs[ep->num]->doepint); + } while (!doepint.b.epdisabled); + + doepint.b.epdisabled = 1; + DWC_WRITE_REG32(&core_if->dev_if->out_ep_regs[ep->num]->doepint, doepint.d32); + + dctl.d32 = 0; + dctl.b.cgoutnak = 1; + DWC_MODIFY_REG32(&core_if->dev_if->dev_global_regs->dctl, 0, dctl.d32); + } + } + + /* Disable the Interrupt for this EP */ + if (core_if->multiproc_int_enable) { + DWC_MODIFY_REG32(&core_if->dev_if->dev_global_regs->deachintmsk, + daintmsk.d32, 0); + + if (ep->is_in == 1) { + DWC_WRITE_REG32(&core_if->dev_if->dev_global_regs-> + diepeachintmsk[ep->num], 0); + } else { + DWC_WRITE_REG32(&core_if->dev_if->dev_global_regs-> + doepeachintmsk[ep->num], 0); + } + } else { + DWC_MODIFY_REG32(&core_if->dev_if->dev_global_regs->daintmsk, + daintmsk.d32, 0); + } + +} + +/** + * This function initializes dma descriptor chain. + * + * @param core_if Programming view of DWC_otg controller. + * @param ep The EP to start the transfer on. + */ +static void init_dma_desc_chain(dwc_otg_core_if_t * core_if, dwc_ep_t * ep) +{ + dwc_otg_dev_dma_desc_t *dma_desc; + uint32_t offset; + uint32_t xfer_est; + int i; + unsigned maxxfer_local, total_len; + + if (!ep->is_in && ep->type == DWC_OTG_EP_TYPE_INTR && + (ep->maxpacket%4)) { + maxxfer_local = ep->maxpacket; + total_len = ep->xfer_len; + } else { + maxxfer_local = ep->maxxfer; + total_len = ep->total_len; + } + + ep->desc_cnt = (total_len / maxxfer_local) + + ((total_len % maxxfer_local) ? 1 : 0); + + if (!ep->desc_cnt) + ep->desc_cnt = 1; + + if (ep->desc_cnt > MAX_DMA_DESC_CNT) + ep->desc_cnt = MAX_DMA_DESC_CNT; + + dma_desc = ep->desc_addr; + if (maxxfer_local == ep->maxpacket) { + if ((total_len % maxxfer_local) && + (total_len/maxxfer_local < MAX_DMA_DESC_CNT)) { + xfer_est = (ep->desc_cnt - 1) * maxxfer_local + + (total_len % maxxfer_local); + } else + xfer_est = ep->desc_cnt * maxxfer_local; + } else + xfer_est = total_len; + offset = 0; + for (i = 0; i < ep->desc_cnt; ++i) { + /** DMA Descriptor Setup */ + if (xfer_est > maxxfer_local) { + dma_desc->status.b.bs = BS_HOST_BUSY; + dma_desc->status.b.l = 0; + dma_desc->status.b.ioc = 0; + dma_desc->status.b.sp = 0; + dma_desc->status.b.bytes = maxxfer_local; + dma_desc->buf = ep->dma_addr + offset; + dma_desc->status.b.sts = 0; + dma_desc->status.b.bs = BS_HOST_READY; + + xfer_est -= maxxfer_local; + offset += maxxfer_local; + } else { + dma_desc->status.b.bs = BS_HOST_BUSY; + dma_desc->status.b.l = 1; + dma_desc->status.b.ioc = 1; + if (ep->is_in) { + dma_desc->status.b.sp = + (xfer_est % + ep->maxpacket) ? 1 : ((ep-> + sent_zlp) ? 1 : 0); + dma_desc->status.b.bytes = xfer_est; + } else { + if (maxxfer_local == ep->maxpacket) + dma_desc->status.b.bytes = xfer_est; + else + dma_desc->status.b.bytes = + xfer_est + ((4 - (xfer_est & 0x3)) & 0x3); + } + + dma_desc->buf = ep->dma_addr + offset; + dma_desc->status.b.sts = 0; + dma_desc->status.b.bs = BS_HOST_READY; + } + dma_desc++; + } +} +/** + * This function is called when to write ISOC data into appropriate dedicated + * periodic FIFO. + */ +static int32_t write_isoc_tx_fifo(dwc_otg_core_if_t * core_if, dwc_ep_t * dwc_ep) +{ + dwc_otg_dev_if_t *dev_if = core_if->dev_if; + dwc_otg_dev_in_ep_regs_t *ep_regs; + dtxfsts_data_t txstatus = {.d32 = 0 }; + uint32_t len = 0; + int epnum = dwc_ep->num; + int dwords; + + DWC_DEBUGPL(DBG_PCD, "Dedicated TxFifo Empty: %d \n", epnum); + + ep_regs = core_if->dev_if->in_ep_regs[epnum]; + + len = dwc_ep->xfer_len - dwc_ep->xfer_count; + + if (len > dwc_ep->maxpacket) { + len = dwc_ep->maxpacket; + } + + dwords = (len + 3) / 4; + + /* While there is space in the queue and space in the FIFO and + * More data to tranfer, Write packets to the Tx FIFO */ + txstatus.d32 = DWC_READ_REG32(&dev_if->in_ep_regs[epnum]->dtxfsts); + DWC_DEBUGPL(DBG_PCDV, "b4 dtxfsts[%d]=0x%08x\n", epnum, txstatus.d32); + + while (txstatus.b.txfspcavail > dwords && + dwc_ep->xfer_count < dwc_ep->xfer_len && dwc_ep->xfer_len != 0) { + /* Write the FIFO */ + dwc_otg_ep_write_packet(core_if, dwc_ep, 0); + + len = dwc_ep->xfer_len - dwc_ep->xfer_count; + if (len > dwc_ep->maxpacket) { + len = dwc_ep->maxpacket; + } + + dwords = (len + 3) / 4; + txstatus.d32 = + DWC_READ_REG32(&dev_if->in_ep_regs[epnum]->dtxfsts); + DWC_DEBUGPL(DBG_PCDV, "dtxfsts[%d]=0x%08x\n", epnum, + txstatus.d32); + } + + DWC_DEBUGPL(DBG_PCDV, "b4 dtxfsts[%d]=0x%08x\n", epnum, + DWC_READ_REG32(&dev_if->in_ep_regs[epnum]->dtxfsts)); + + return 1; +} +/** + * This function does the setup for a data transfer for an EP and + * starts the transfer. For an IN transfer, the packets will be + * loaded into the appropriate Tx FIFO in the ISR. For OUT transfers, + * the packets are unloaded from the Rx FIFO in the ISR. the ISR. + * + * @param core_if Programming view of DWC_otg controller. + * @param ep The EP to start the transfer on. + */ + +void dwc_otg_ep_start_transfer(dwc_otg_core_if_t * core_if, dwc_ep_t * ep) +{ + depctl_data_t depctl; + deptsiz_data_t deptsiz; + gintmsk_data_t intr_mask = {.d32 = 0 }; + + DWC_DEBUGPL((DBG_PCDV | DBG_CILV), "%s()\n", __func__); + DWC_DEBUGPL(DBG_PCD, "ep%d-%s xfer_len=%d xfer_cnt=%d " + "xfer_buff=%p start_xfer_buff=%p, total_len = %d\n", + ep->num, (ep->is_in ? "IN" : "OUT"), ep->xfer_len, + ep->xfer_count, ep->xfer_buff, ep->start_xfer_buff, + ep->total_len); + /* IN endpoint */ + if (ep->is_in == 1) { + dwc_otg_dev_in_ep_regs_t *in_regs = + core_if->dev_if->in_ep_regs[ep->num]; + + gnptxsts_data_t gtxstatus; + + gtxstatus.d32 = + DWC_READ_REG32(&core_if->core_global_regs->gnptxsts); + + if (core_if->en_multiple_tx_fifo == 0 + && gtxstatus.b.nptxqspcavail == 0 && !core_if->dma_enable) { +#ifdef DEBUG + DWC_PRINTF("TX Queue Full (0x%0x)\n", gtxstatus.d32); +#endif + return; + } + + depctl.d32 = DWC_READ_REG32(&(in_regs->diepctl)); + deptsiz.d32 = DWC_READ_REG32(&(in_regs->dieptsiz)); + + if (ep->maxpacket > ep->maxxfer / MAX_PKT_CNT) + ep->xfer_len += (ep->maxxfer < (ep->total_len - ep->xfer_len)) ? + ep->maxxfer : (ep->total_len - ep->xfer_len); + else + ep->xfer_len += (MAX_PKT_CNT * ep->maxpacket < (ep->total_len - ep->xfer_len)) ? + MAX_PKT_CNT * ep->maxpacket : (ep->total_len - ep->xfer_len); + + + /* Zero Length Packet? */ + if ((ep->xfer_len - ep->xfer_count) == 0) { + deptsiz.b.xfersize = 0; + deptsiz.b.pktcnt = 1; + } else { + /* Program the transfer size and packet count + * as follows: xfersize = N * maxpacket + + * short_packet pktcnt = N + (short_packet + * exist ? 1 : 0) + */ + deptsiz.b.xfersize = ep->xfer_len - ep->xfer_count; + deptsiz.b.pktcnt = + (ep->xfer_len - ep->xfer_count - 1 + + ep->maxpacket) / ep->maxpacket; + if (deptsiz.b.pktcnt > MAX_PKT_CNT) { + deptsiz.b.pktcnt = MAX_PKT_CNT; + deptsiz.b.xfersize = deptsiz.b.pktcnt * ep->maxpacket; + } + if (ep->type == DWC_OTG_EP_TYPE_ISOC) + deptsiz.b.mc = deptsiz.b.pktcnt; + } + + /* Write the DMA register */ + if (core_if->dma_enable) { + if (core_if->dma_desc_enable == 0) { + if (ep->type != DWC_OTG_EP_TYPE_ISOC) + deptsiz.b.mc = 1; + DWC_WRITE_REG32(&in_regs->dieptsiz, + deptsiz.d32); + DWC_WRITE_REG32(&(in_regs->diepdma), + (uint32_t) ep->dma_addr); + } else { +#ifdef DWC_UTE_CFI + /* The descriptor chain should be already initialized by now */ + if (ep->buff_mode != BM_STANDARD) { + DWC_WRITE_REG32(&in_regs->diepdma, + ep->descs_dma_addr); + } else { +#endif + init_dma_desc_chain(core_if, ep); + /** DIEPDMAn Register write */ + DWC_WRITE_REG32(&in_regs->diepdma, + ep->dma_desc_addr); +#ifdef DWC_UTE_CFI + } +#endif + } + } else { + DWC_WRITE_REG32(&in_regs->dieptsiz, deptsiz.d32); + if (ep->type != DWC_OTG_EP_TYPE_ISOC) { + /** + * Enable the Non-Periodic Tx FIFO empty interrupt, + * or the Tx FIFO epmty interrupt in dedicated Tx FIFO mode, + * the data will be written into the fifo by the ISR. + */ + if (core_if->en_multiple_tx_fifo == 0) { + intr_mask.b.nptxfempty = 1; + DWC_MODIFY_REG32 + (&core_if->core_global_regs->gintmsk, + intr_mask.d32, intr_mask.d32); + } else { + /* Enable the Tx FIFO Empty Interrupt for this EP */ + if (ep->xfer_len > 0) { + uint32_t fifoemptymsk = 0; + fifoemptymsk = 1 << ep->num; + DWC_MODIFY_REG32 + (&core_if->dev_if->dev_global_regs->dtknqr4_fifoemptymsk, + 0, fifoemptymsk); + + } + } + } else { + write_isoc_tx_fifo(core_if, ep); + } + } + if (!core_if->core_params->en_multiple_tx_fifo && core_if->dma_enable) + depctl.b.nextep = core_if->nextep_seq[ep->num]; + + if (ep->type == DWC_OTG_EP_TYPE_ISOC) { + dsts_data_t dsts = {.d32 = 0}; + if (ep->bInterval == 1) { + dsts.d32 = + DWC_READ_REG32(&core_if->dev_if-> + dev_global_regs->dsts); + ep->frame_num = dsts.b.soffn + ep->bInterval; + if (ep->frame_num > 0x3FFF) { + ep->frm_overrun = 1; + ep->frame_num &= 0x3FFF; + } else + ep->frm_overrun = 0; + if (ep->frame_num & 0x1) { + depctl.b.setd1pid = 1; + } else { + depctl.b.setd0pid = 1; + } + } + } + /* EP enable, IN data in FIFO */ + depctl.b.cnak = 1; + depctl.b.epena = 1; + DWC_WRITE_REG32(&in_regs->diepctl, depctl.d32); + + } else { + /* OUT endpoint */ + dwc_otg_dev_out_ep_regs_t *out_regs = + core_if->dev_if->out_ep_regs[ep->num]; + + depctl.d32 = DWC_READ_REG32(&(out_regs->doepctl)); + deptsiz.d32 = DWC_READ_REG32(&(out_regs->doeptsiz)); + + if (!core_if->dma_desc_enable) { + if (ep->maxpacket > ep->maxxfer / MAX_PKT_CNT) + ep->xfer_len += (ep->maxxfer < (ep->total_len - ep->xfer_len)) ? + ep->maxxfer : (ep->total_len - ep->xfer_len); + else + ep->xfer_len += (MAX_PKT_CNT * ep->maxpacket < (ep->total_len + - ep->xfer_len)) ? MAX_PKT_CNT * ep->maxpacket : (ep->total_len - ep->xfer_len); + } + + /* Program the transfer size and packet count as follows: + * + * pktcnt = N + * xfersize = N * maxpacket + */ + if ((ep->xfer_len - ep->xfer_count) == 0) { + /* Zero Length Packet */ + deptsiz.b.xfersize = ep->maxpacket; + deptsiz.b.pktcnt = 1; + } else { + deptsiz.b.pktcnt = + (ep->xfer_len - ep->xfer_count + + (ep->maxpacket - 1)) / ep->maxpacket; + if (deptsiz.b.pktcnt > MAX_PKT_CNT) { + deptsiz.b.pktcnt = MAX_PKT_CNT; + } + if (!core_if->dma_desc_enable) { + ep->xfer_len = + deptsiz.b.pktcnt * ep->maxpacket + ep->xfer_count; + } + deptsiz.b.xfersize = ep->xfer_len - ep->xfer_count; + } + + DWC_DEBUGPL(DBG_PCDV, "ep%d xfersize=%d pktcnt=%d\n", + ep->num, deptsiz.b.xfersize, deptsiz.b.pktcnt); + + if (core_if->dma_enable) { + if (!core_if->dma_desc_enable) { + DWC_WRITE_REG32(&out_regs->doeptsiz, + deptsiz.d32); + + DWC_WRITE_REG32(&(out_regs->doepdma), + (uint32_t) ep->dma_addr); + } else { +#ifdef DWC_UTE_CFI + /* The descriptor chain should be already initialized by now */ + if (ep->buff_mode != BM_STANDARD) { + DWC_WRITE_REG32(&out_regs->doepdma, + ep->descs_dma_addr); + } else { +#endif + /** This is used for interrupt out transfers*/ + if (!ep->xfer_len) + ep->xfer_len = ep->total_len; + init_dma_desc_chain(core_if, ep); + + if (core_if->core_params->dev_out_nak) { + if (ep->type == DWC_OTG_EP_TYPE_BULK) { + deptsiz.b.pktcnt = (ep->total_len + + (ep->maxpacket - 1)) / ep->maxpacket; + deptsiz.b.xfersize = ep->total_len; + /* Remember initial value of doeptsiz */ + core_if->start_doeptsiz_val[ep->num] = deptsiz.d32; + DWC_WRITE_REG32(&out_regs->doeptsiz, + deptsiz.d32); + } + } + /** DOEPDMAn Register write */ + DWC_WRITE_REG32(&out_regs->doepdma, + ep->dma_desc_addr); +#ifdef DWC_UTE_CFI + } +#endif + } + } else { + DWC_WRITE_REG32(&out_regs->doeptsiz, deptsiz.d32); + } + + if (ep->type == DWC_OTG_EP_TYPE_ISOC) { + dsts_data_t dsts = {.d32 = 0}; + if (ep->bInterval == 1) { + dsts.d32 = + DWC_READ_REG32(&core_if->dev_if-> + dev_global_regs->dsts); + ep->frame_num = dsts.b.soffn + ep->bInterval; + if (ep->frame_num > 0x3FFF) { + ep->frm_overrun = 1; + ep->frame_num &= 0x3FFF; + } else + ep->frm_overrun = 0; + + if (ep->frame_num & 0x1) { + depctl.b.setd1pid = 1; + } else { + depctl.b.setd0pid = 1; + } + } + } + + /* EP enable */ + depctl.b.cnak = 1; + depctl.b.epena = 1; + + DWC_WRITE_REG32(&out_regs->doepctl, depctl.d32); + + DWC_DEBUGPL(DBG_PCD, "DOEPCTL=%08x DOEPTSIZ=%08x\n", + DWC_READ_REG32(&out_regs->doepctl), + DWC_READ_REG32(&out_regs->doeptsiz)); + DWC_DEBUGPL(DBG_PCD, "DAINTMSK=%08x GINTMSK=%08x\n", + DWC_READ_REG32(&core_if->dev_if->dev_global_regs-> + daintmsk), + DWC_READ_REG32(&core_if->core_global_regs-> + gintmsk)); + + /* Timer is scheduling only for out bulk transfers for + * "Device DDMA OUT NAK Enhancement" feature to inform user + * about received data payload in case of timeout + */ + if (core_if->core_params->dev_out_nak) { + if (ep->type == DWC_OTG_EP_TYPE_BULK) { + core_if->ep_xfer_info[ep->num].core_if = core_if; + core_if->ep_xfer_info[ep->num].ep = ep; + core_if->ep_xfer_info[ep->num].state = 1; + + /* Start a timer for this transfer. */ + DWC_TIMER_SCHEDULE(core_if->ep_xfer_timer[ep->num], 10000); + } + } + } +} + +/** + * This function setup a zero length transfer in Buffer DMA and + * Slave modes for usb requests with zero field set + * + * @param core_if Programming view of DWC_otg controller. + * @param ep The EP to start the transfer on. + * + */ +void dwc_otg_ep_start_zl_transfer(dwc_otg_core_if_t * core_if, dwc_ep_t * ep) +{ + + depctl_data_t depctl; + deptsiz_data_t deptsiz; + gintmsk_data_t intr_mask = {.d32 = 0 }; + + DWC_DEBUGPL((DBG_PCDV | DBG_CILV), "%s()\n", __func__); + DWC_PRINTF("zero length transfer is called\n"); + + /* IN endpoint */ + if (ep->is_in == 1) { + dwc_otg_dev_in_ep_regs_t *in_regs = + core_if->dev_if->in_ep_regs[ep->num]; + + depctl.d32 = DWC_READ_REG32(&(in_regs->diepctl)); + deptsiz.d32 = DWC_READ_REG32(&(in_regs->dieptsiz)); + + deptsiz.b.xfersize = 0; + deptsiz.b.pktcnt = 1; + + /* Write the DMA register */ + if (core_if->dma_enable) { + if (core_if->dma_desc_enable == 0) { + deptsiz.b.mc = 1; + DWC_WRITE_REG32(&in_regs->dieptsiz, + deptsiz.d32); + DWC_WRITE_REG32(&(in_regs->diepdma), + (uint32_t) ep->dma_addr); + } + } else { + DWC_WRITE_REG32(&in_regs->dieptsiz, deptsiz.d32); + /** + * Enable the Non-Periodic Tx FIFO empty interrupt, + * or the Tx FIFO epmty interrupt in dedicated Tx FIFO mode, + * the data will be written into the fifo by the ISR. + */ + if (core_if->en_multiple_tx_fifo == 0) { + intr_mask.b.nptxfempty = 1; + DWC_MODIFY_REG32(&core_if-> + core_global_regs->gintmsk, + intr_mask.d32, intr_mask.d32); + } else { + /* Enable the Tx FIFO Empty Interrupt for this EP */ + if (ep->xfer_len > 0) { + uint32_t fifoemptymsk = 0; + fifoemptymsk = 1 << ep->num; + DWC_MODIFY_REG32(&core_if-> + dev_if->dev_global_regs->dtknqr4_fifoemptymsk, + 0, fifoemptymsk); + } + } + } + + if (!core_if->core_params->en_multiple_tx_fifo && core_if->dma_enable) + depctl.b.nextep = core_if->nextep_seq[ep->num]; + /* EP enable, IN data in FIFO */ + depctl.b.cnak = 1; + depctl.b.epena = 1; + DWC_WRITE_REG32(&in_regs->diepctl, depctl.d32); + + } else { + /* OUT endpoint */ + dwc_otg_dev_out_ep_regs_t *out_regs = + core_if->dev_if->out_ep_regs[ep->num]; + + depctl.d32 = DWC_READ_REG32(&(out_regs->doepctl)); + deptsiz.d32 = DWC_READ_REG32(&(out_regs->doeptsiz)); + + /* Zero Length Packet */ + deptsiz.b.xfersize = ep->maxpacket; + deptsiz.b.pktcnt = 1; + + if (core_if->dma_enable) { + if (!core_if->dma_desc_enable) { + DWC_WRITE_REG32(&out_regs->doeptsiz, + deptsiz.d32); + + DWC_WRITE_REG32(&(out_regs->doepdma), + (uint32_t) ep->dma_addr); + } + } else { + DWC_WRITE_REG32(&out_regs->doeptsiz, deptsiz.d32); + } + + /* EP enable */ + depctl.b.cnak = 1; + depctl.b.epena = 1; + + DWC_WRITE_REG32(&out_regs->doepctl, depctl.d32); + + } +} + +/** + * This function does the setup for a data transfer for EP0 and starts + * the transfer. For an IN transfer, the packets will be loaded into + * the appropriate Tx FIFO in the ISR. For OUT transfers, the packets are + * unloaded from the Rx FIFO in the ISR. + * + * @param core_if Programming view of DWC_otg controller. + * @param ep The EP0 data. + */ +void dwc_otg_ep0_start_transfer(dwc_otg_core_if_t * core_if, dwc_ep_t * ep) +{ + depctl_data_t depctl; + deptsiz0_data_t deptsiz; + gintmsk_data_t intr_mask = {.d32 = 0 }; + dwc_otg_dev_dma_desc_t *dma_desc; + + DWC_DEBUGPL(DBG_PCD, "ep%d-%s xfer_len=%d xfer_cnt=%d " + "xfer_buff=%p start_xfer_buff=%p \n", + ep->num, (ep->is_in ? "IN" : "OUT"), ep->xfer_len, + ep->xfer_count, ep->xfer_buff, ep->start_xfer_buff); + + ep->total_len = ep->xfer_len; + + /* IN endpoint */ + if (ep->is_in == 1) { + dwc_otg_dev_in_ep_regs_t *in_regs = + core_if->dev_if->in_ep_regs[0]; + + gnptxsts_data_t gtxstatus; + + if (core_if->snpsid >= OTG_CORE_REV_3_00a) { + depctl.d32 = DWC_READ_REG32(&in_regs->diepctl); + if (depctl.b.epena) + return; + } + + gtxstatus.d32 = + DWC_READ_REG32(&core_if->core_global_regs->gnptxsts); + + /* If dedicated FIFO every time flush fifo before enable ep*/ + if (core_if->en_multiple_tx_fifo && core_if->snpsid >= OTG_CORE_REV_3_00a) + dwc_otg_flush_tx_fifo(core_if, ep->tx_fifo_num); + + if (core_if->en_multiple_tx_fifo == 0 + && gtxstatus.b.nptxqspcavail == 0 + && !core_if->dma_enable) { +#ifdef DEBUG + deptsiz.d32 = DWC_READ_REG32(&in_regs->dieptsiz); + DWC_DEBUGPL(DBG_PCD, "DIEPCTL0=%0x\n", + DWC_READ_REG32(&in_regs->diepctl)); + DWC_DEBUGPL(DBG_PCD, "DIEPTSIZ0=%0x (sz=%d, pcnt=%d)\n", + deptsiz.d32, + deptsiz.b.xfersize, deptsiz.b.pktcnt); + DWC_PRINTF("TX Queue or FIFO Full (0x%0x)\n", + gtxstatus.d32); +#endif + return; + } + + depctl.d32 = DWC_READ_REG32(&in_regs->diepctl); + deptsiz.d32 = DWC_READ_REG32(&in_regs->dieptsiz); + + /* Zero Length Packet? */ + if (ep->xfer_len == 0) { + deptsiz.b.xfersize = 0; + deptsiz.b.pktcnt = 1; + } else { + /* Program the transfer size and packet count + * as follows: xfersize = N * maxpacket + + * short_packet pktcnt = N + (short_packet + * exist ? 1 : 0) + */ + if (ep->xfer_len > ep->maxpacket) { + ep->xfer_len = ep->maxpacket; + deptsiz.b.xfersize = ep->maxpacket; + } else { + deptsiz.b.xfersize = ep->xfer_len; + } + deptsiz.b.pktcnt = 1; + + } + DWC_DEBUGPL(DBG_PCDV, + "IN len=%d xfersize=%d pktcnt=%d [%08x]\n", + ep->xfer_len, deptsiz.b.xfersize, deptsiz.b.pktcnt, + deptsiz.d32); + + /* Write the DMA register */ + if (core_if->dma_enable) { + if (core_if->dma_desc_enable == 0) { + DWC_WRITE_REG32(&in_regs->dieptsiz, + deptsiz.d32); + + DWC_WRITE_REG32(&(in_regs->diepdma), + (uint32_t) ep->dma_addr); + } else { + dma_desc = core_if->dev_if->in_desc_addr; + + /** DMA Descriptor Setup */ + dma_desc->status.b.bs = BS_HOST_BUSY; + dma_desc->status.b.l = 1; + dma_desc->status.b.ioc = 1; + dma_desc->status.b.sp = + (ep->xfer_len == ep->maxpacket) ? 0 : 1; + dma_desc->status.b.bytes = ep->xfer_len; + dma_desc->buf = ep->dma_addr; + dma_desc->status.b.sts = 0; + dma_desc->status.b.bs = BS_HOST_READY; + + /** DIEPDMA0 Register write */ + DWC_WRITE_REG32(&in_regs->diepdma, + core_if-> + dev_if->dma_in_desc_addr); + } + } else { + DWC_WRITE_REG32(&in_regs->dieptsiz, deptsiz.d32); + } + + if (!core_if->core_params->en_multiple_tx_fifo && core_if->dma_enable) + depctl.b.nextep = core_if->nextep_seq[ep->num]; + /* EP enable, IN data in FIFO */ + depctl.b.cnak = 1; + depctl.b.epena = 1; + DWC_WRITE_REG32(&in_regs->diepctl, depctl.d32); + + /** + * Enable the Non-Periodic Tx FIFO empty interrupt, the + * data will be written into the fifo by the ISR. + */ + if (!core_if->dma_enable) { + if (core_if->en_multiple_tx_fifo == 0) { + intr_mask.b.nptxfempty = 1; + DWC_MODIFY_REG32(&core_if-> + core_global_regs->gintmsk, + intr_mask.d32, intr_mask.d32); + } else { + /* Enable the Tx FIFO Empty Interrupt for this EP */ + if (ep->xfer_len > 0) { + uint32_t fifoemptymsk = 0; + fifoemptymsk |= 1 << ep->num; + DWC_MODIFY_REG32(&core_if-> + dev_if->dev_global_regs->dtknqr4_fifoemptymsk, + 0, fifoemptymsk); + } + } + } + } else { + /* OUT endpoint */ + dwc_otg_dev_out_ep_regs_t *out_regs = + core_if->dev_if->out_ep_regs[0]; + + depctl.d32 = DWC_READ_REG32(&out_regs->doepctl); + deptsiz.d32 = DWC_READ_REG32(&out_regs->doeptsiz); + + /* Program the transfer size and packet count as follows: + * xfersize = N * (maxpacket + 4 - (maxpacket % 4)) + * pktcnt = N */ + /* Zero Length Packet */ + deptsiz.b.xfersize = ep->maxpacket; + deptsiz.b.pktcnt = 1; + if (core_if->snpsid >= OTG_CORE_REV_3_00a) + deptsiz.b.supcnt = 3; + + DWC_DEBUGPL(DBG_PCDV, "len=%d xfersize=%d pktcnt=%d\n", + ep->xfer_len, deptsiz.b.xfersize, deptsiz.b.pktcnt); + + if (core_if->dma_enable) { + if (!core_if->dma_desc_enable) { + DWC_WRITE_REG32(&out_regs->doeptsiz, + deptsiz.d32); + + DWC_WRITE_REG32(&(out_regs->doepdma), + (uint32_t) ep->dma_addr); + } else { + dma_desc = core_if->dev_if->out_desc_addr; + + /** DMA Descriptor Setup */ + dma_desc->status.b.bs = BS_HOST_BUSY; + if (core_if->snpsid >= OTG_CORE_REV_3_00a) { + dma_desc->status.b.mtrf = 0; + dma_desc->status.b.sr = 0; + } + dma_desc->status.b.l = 1; + dma_desc->status.b.ioc = 1; + dma_desc->status.b.bytes = ep->maxpacket; + dma_desc->buf = ep->dma_addr; + dma_desc->status.b.sts = 0; + dma_desc->status.b.bs = BS_HOST_READY; + + /** DOEPDMA0 Register write */ + DWC_WRITE_REG32(&out_regs->doepdma, + core_if->dev_if-> + dma_out_desc_addr); + } + } else { + DWC_WRITE_REG32(&out_regs->doeptsiz, deptsiz.d32); + } + + /* EP enable */ + depctl.b.cnak = 1; + depctl.b.epena = 1; + DWC_WRITE_REG32(&(out_regs->doepctl), depctl.d32); + } +} + +/** + * This function continues control IN transfers started by + * dwc_otg_ep0_start_transfer, when the transfer does not fit in a + * single packet. NOTE: The DIEPCTL0/DOEPCTL0 registers only have one + * bit for the packet count. + * + * @param core_if Programming view of DWC_otg controller. + * @param ep The EP0 data. + */ +void dwc_otg_ep0_continue_transfer(dwc_otg_core_if_t * core_if, dwc_ep_t * ep) +{ + depctl_data_t depctl; + deptsiz0_data_t deptsiz; + gintmsk_data_t intr_mask = {.d32 = 0 }; + dwc_otg_dev_dma_desc_t *dma_desc; + + if (ep->is_in == 1) { + dwc_otg_dev_in_ep_regs_t *in_regs = + core_if->dev_if->in_ep_regs[0]; + gnptxsts_data_t tx_status = {.d32 = 0 }; + + tx_status.d32 = + DWC_READ_REG32(&core_if->core_global_regs->gnptxsts); + /** @todo Should there be check for room in the Tx + * Status Queue. If not remove the code above this comment. */ + + depctl.d32 = DWC_READ_REG32(&in_regs->diepctl); + deptsiz.d32 = DWC_READ_REG32(&in_regs->dieptsiz); + + /* Program the transfer size and packet count + * as follows: xfersize = N * maxpacket + + * short_packet pktcnt = N + (short_packet + * exist ? 1 : 0) + */ + + if (core_if->dma_desc_enable == 0) { + deptsiz.b.xfersize = + (ep->total_len - ep->xfer_count) > + ep->maxpacket ? ep->maxpacket : (ep->total_len - + ep->xfer_count); + deptsiz.b.pktcnt = 1; + if (core_if->dma_enable == 0) { + ep->xfer_len += deptsiz.b.xfersize; + } else { + ep->xfer_len = deptsiz.b.xfersize; + } + DWC_WRITE_REG32(&in_regs->dieptsiz, deptsiz.d32); + } else { + ep->xfer_len = + (ep->total_len - ep->xfer_count) > + ep->maxpacket ? ep->maxpacket : (ep->total_len - + ep->xfer_count); + + dma_desc = core_if->dev_if->in_desc_addr; + + /** DMA Descriptor Setup */ + dma_desc->status.b.bs = BS_HOST_BUSY; + dma_desc->status.b.l = 1; + dma_desc->status.b.ioc = 1; + dma_desc->status.b.sp = + (ep->xfer_len == ep->maxpacket) ? 0 : 1; + dma_desc->status.b.bytes = ep->xfer_len; + dma_desc->buf = ep->dma_addr; + dma_desc->status.b.sts = 0; + dma_desc->status.b.bs = BS_HOST_READY; + + /** DIEPDMA0 Register write */ + DWC_WRITE_REG32(&in_regs->diepdma, + core_if->dev_if->dma_in_desc_addr); + } + + DWC_DEBUGPL(DBG_PCDV, + "IN len=%d xfersize=%d pktcnt=%d [%08x]\n", + ep->xfer_len, deptsiz.b.xfersize, deptsiz.b.pktcnt, + deptsiz.d32); + + /* Write the DMA register */ + if (core_if->hwcfg2.b.architecture == DWC_INT_DMA_ARCH) { + if (core_if->dma_desc_enable == 0) + DWC_WRITE_REG32(&(in_regs->diepdma), + (uint32_t) ep->dma_addr); + } + if (!core_if->core_params->en_multiple_tx_fifo && core_if->dma_enable) + depctl.b.nextep = core_if->nextep_seq[ep->num]; + /* EP enable, IN data in FIFO */ + depctl.b.cnak = 1; + depctl.b.epena = 1; + DWC_WRITE_REG32(&in_regs->diepctl, depctl.d32); + + /** + * Enable the Non-Periodic Tx FIFO empty interrupt, the + * data will be written into the fifo by the ISR. + */ + if (!core_if->dma_enable) { + if (core_if->en_multiple_tx_fifo == 0) { + /* First clear it from GINTSTS */ + intr_mask.b.nptxfempty = 1; + DWC_MODIFY_REG32(&core_if-> + core_global_regs->gintmsk, + intr_mask.d32, intr_mask.d32); + + } else { + /* Enable the Tx FIFO Empty Interrupt for this EP */ + if (ep->xfer_len > 0) { + uint32_t fifoemptymsk = 0; + fifoemptymsk |= 1 << ep->num; + DWC_MODIFY_REG32(&core_if-> + dev_if->dev_global_regs->dtknqr4_fifoemptymsk, + 0, fifoemptymsk); + } + } + } + } else { + dwc_otg_dev_out_ep_regs_t *out_regs = + core_if->dev_if->out_ep_regs[0]; + + depctl.d32 = DWC_READ_REG32(&out_regs->doepctl); + deptsiz.d32 = DWC_READ_REG32(&out_regs->doeptsiz); + + /* Program the transfer size and packet count + * as follows: xfersize = N * maxpacket + + * short_packet pktcnt = N + (short_packet + * exist ? 1 : 0) + */ + deptsiz.b.xfersize = ep->maxpacket; + deptsiz.b.pktcnt = 1; + + if (core_if->dma_desc_enable == 0) { + DWC_WRITE_REG32(&out_regs->doeptsiz, deptsiz.d32); + } else { + dma_desc = core_if->dev_if->out_desc_addr; + + /** DMA Descriptor Setup */ + dma_desc->status.b.bs = BS_HOST_BUSY; + dma_desc->status.b.l = 1; + dma_desc->status.b.ioc = 1; + dma_desc->status.b.bytes = ep->maxpacket; + dma_desc->buf = ep->dma_addr; + dma_desc->status.b.sts = 0; + dma_desc->status.b.bs = BS_HOST_READY; + + /** DOEPDMA0 Register write */ + DWC_WRITE_REG32(&out_regs->doepdma, + core_if->dev_if->dma_out_desc_addr); + } + + DWC_DEBUGPL(DBG_PCDV, + "IN len=%d xfersize=%d pktcnt=%d [%08x]\n", + ep->xfer_len, deptsiz.b.xfersize, deptsiz.b.pktcnt, + deptsiz.d32); + + /* Write the DMA register */ + if (core_if->hwcfg2.b.architecture == DWC_INT_DMA_ARCH) { + if (core_if->dma_desc_enable == 0) + DWC_WRITE_REG32(&(out_regs->doepdma), + (uint32_t) ep->dma_addr); + + } + + /* EP enable, IN data in FIFO */ + depctl.b.cnak = 1; + depctl.b.epena = 1; + DWC_WRITE_REG32(&out_regs->doepctl, depctl.d32); + + } +} + +#ifdef DEBUG +void dump_msg(const u8 * buf, unsigned int length) +{ + unsigned int start, num, i; + char line[52], *p; + + if (length >= 512) + return; + start = 0; + while (length > 0) { + num = length < 16u ? length : 16u; + p = line; + for (i = 0; i < num; ++i) { + if (i == 8) + *p++ = ' '; + DWC_SPRINTF(p, " %02x", buf[i]); + p += 3; + } + *p = 0; + DWC_PRINTF("%6x: %s\n", start, line); + buf += num; + start += num; + length -= num; + } +} +#else +static inline void dump_msg(const u8 * buf, unsigned int length) +{ +} +#endif + +/** + * This function writes a packet into the Tx FIFO associated with the + * EP. For non-periodic EPs the non-periodic Tx FIFO is written. For + * periodic EPs the periodic Tx FIFO associated with the EP is written + * with all packets for the next micro-frame. + * + * @param core_if Programming view of DWC_otg controller. + * @param ep The EP to write packet for. + * @param dma Indicates if DMA is being used. + */ +void dwc_otg_ep_write_packet(dwc_otg_core_if_t * core_if, dwc_ep_t * ep, + int dma) +{ + /** + * The buffer is padded to DWORD on a per packet basis in + * slave/dma mode if the MPS is not DWORD aligned. The last + * packet, if short, is also padded to a multiple of DWORD. + * + * ep->xfer_buff always starts DWORD aligned in memory and is a + * multiple of DWORD in length + * + * ep->xfer_len can be any number of bytes + * + * ep->xfer_count is a multiple of ep->maxpacket until the last + * packet + * + * FIFO access is DWORD */ + + uint32_t i; + uint32_t byte_count; + uint32_t dword_count; + uint32_t *fifo; + uint32_t *data_buff = (uint32_t *) ep->xfer_buff; + + DWC_DEBUGPL((DBG_PCDV | DBG_CILV), "%s(%p,%p)\n", __func__, core_if, + ep); + if (ep->xfer_count >= ep->xfer_len) { + DWC_WARN("%s() No data for EP%d!!!\n", __func__, ep->num); + return; + } + + /* Find the byte length of the packet either short packet or MPS */ + if ((ep->xfer_len - ep->xfer_count) < ep->maxpacket) { + byte_count = ep->xfer_len - ep->xfer_count; + } else { + byte_count = ep->maxpacket; + } + + /* Find the DWORD length, padded by extra bytes as neccessary if MPS + * is not a multiple of DWORD */ + dword_count = (byte_count + 3) / 4; + +#ifdef VERBOSE + dump_msg(ep->xfer_buff, byte_count); +#endif + + /**@todo NGS Where are the Periodic Tx FIFO addresses + * intialized? What should this be? */ + + fifo = core_if->data_fifo[ep->num]; + + DWC_DEBUGPL((DBG_PCDV | DBG_CILV), "fifo=%p buff=%p *p=%08x bc=%d\n", + fifo, data_buff, *data_buff, byte_count); + + if (!dma) { + for (i = 0; i < dword_count; i++, data_buff++) { + DWC_WRITE_REG32(fifo, *data_buff); + } + } + + ep->xfer_count += byte_count; + ep->xfer_buff += byte_count; + ep->dma_addr += byte_count; +} + +/** + * Set the EP STALL. + * + * @param core_if Programming view of DWC_otg controller. + * @param ep The EP to set the stall on. + */ +void dwc_otg_ep_set_stall(dwc_otg_core_if_t * core_if, dwc_ep_t * ep) +{ + depctl_data_t depctl; + volatile uint32_t *depctl_addr; + + DWC_DEBUGPL(DBG_PCD, "%s ep%d-%s\n", __func__, ep->num, + (ep->is_in ? "IN" : "OUT")); + + if (ep->is_in == 1) { + depctl_addr = &(core_if->dev_if->in_ep_regs[ep->num]->diepctl); + depctl.d32 = DWC_READ_REG32(depctl_addr); + + /* set the disable and stall bits */ + if (depctl.b.epena) { + depctl.b.epdis = 1; + } + depctl.b.stall = 1; + DWC_WRITE_REG32(depctl_addr, depctl.d32); + } else { + depctl_addr = &(core_if->dev_if->out_ep_regs[ep->num]->doepctl); + depctl.d32 = DWC_READ_REG32(depctl_addr); + + /* set the stall bit */ + depctl.b.stall = 1; + DWC_WRITE_REG32(depctl_addr, depctl.d32); + } + + DWC_DEBUGPL(DBG_PCD, "DEPCTL=%0x\n", DWC_READ_REG32(depctl_addr)); + + return; +} + +/** + * Clear the EP STALL. + * + * @param core_if Programming view of DWC_otg controller. + * @param ep The EP to clear stall from. + */ +void dwc_otg_ep_clear_stall(dwc_otg_core_if_t * core_if, dwc_ep_t * ep) +{ + depctl_data_t depctl; + volatile uint32_t *depctl_addr; + + DWC_DEBUGPL(DBG_PCD, "%s ep%d-%s\n", __func__, ep->num, + (ep->is_in ? "IN" : "OUT")); + + if (ep->is_in == 1) { + depctl_addr = &(core_if->dev_if->in_ep_regs[ep->num]->diepctl); + } else { + depctl_addr = &(core_if->dev_if->out_ep_regs[ep->num]->doepctl); + } + + depctl.d32 = DWC_READ_REG32(depctl_addr); + + /* clear the stall bits */ + depctl.b.stall = 0; + + /* + * USB Spec 9.4.5: For endpoints using data toggle, regardless + * of whether an endpoint has the Halt feature set, a + * ClearFeature(ENDPOINT_HALT) request always results in the + * data toggle being reinitialized to DATA0. + */ + if (ep->type == DWC_OTG_EP_TYPE_INTR || + ep->type == DWC_OTG_EP_TYPE_BULK) { + depctl.b.setd0pid = 1; /* DATA0 */ + } + + DWC_WRITE_REG32(depctl_addr, depctl.d32); + DWC_DEBUGPL(DBG_PCD, "DEPCTL=%0x\n", DWC_READ_REG32(depctl_addr)); + return; +} + +/** + * This function reads a packet from the Rx FIFO into the destination + * buffer. To read SETUP data use dwc_otg_read_setup_packet. + * + * @param core_if Programming view of DWC_otg controller. + * @param dest Destination buffer for the packet. + * @param bytes Number of bytes to copy to the destination. + */ +void dwc_otg_read_packet(dwc_otg_core_if_t * core_if, + uint8_t * dest, uint16_t bytes) +{ + int i; + int word_count = (bytes + 3) / 4; + + volatile uint32_t *fifo = core_if->data_fifo[0]; + uint32_t *data_buff = (uint32_t *) dest; + + /** + * @todo Account for the case where _dest is not dword aligned. This + * requires reading data from the FIFO into a uint32_t temp buffer, + * then moving it into the data buffer. + */ + + DWC_DEBUGPL((DBG_PCDV | DBG_CILV), "%s(%p,%p,%d)\n", __func__, + core_if, dest, bytes); + + for (i = 0; i < word_count; i++, data_buff++) { + *data_buff = DWC_READ_REG32(fifo); + } + + return; +} + +/** + * This functions reads the device registers and prints them + * + * @param core_if Programming view of DWC_otg controller. + */ +void dwc_otg_dump_dev_registers(dwc_otg_core_if_t * core_if) +{ + int i; + volatile uint32_t *addr; + + DWC_PRINTF("Device Global Registers\n"); + addr = &core_if->dev_if->dev_global_regs->dcfg; + DWC_PRINTF("DCFG @0x%08lX : 0x%08X\n", + (unsigned long)addr, DWC_READ_REG32(addr)); + addr = &core_if->dev_if->dev_global_regs->dctl; + DWC_PRINTF("DCTL @0x%08lX : 0x%08X\n", + (unsigned long)addr, DWC_READ_REG32(addr)); + addr = &core_if->dev_if->dev_global_regs->dsts; + DWC_PRINTF("DSTS @0x%08lX : 0x%08X\n", + (unsigned long)addr, DWC_READ_REG32(addr)); + addr = &core_if->dev_if->dev_global_regs->diepmsk; + DWC_PRINTF("DIEPMSK @0x%08lX : 0x%08X\n", (unsigned long)addr, + DWC_READ_REG32(addr)); + addr = &core_if->dev_if->dev_global_regs->doepmsk; + DWC_PRINTF("DOEPMSK @0x%08lX : 0x%08X\n", (unsigned long)addr, + DWC_READ_REG32(addr)); + addr = &core_if->dev_if->dev_global_regs->daint; + DWC_PRINTF("DAINT @0x%08lX : 0x%08X\n", (unsigned long)addr, + DWC_READ_REG32(addr)); + addr = &core_if->dev_if->dev_global_regs->daintmsk; + DWC_PRINTF("DAINTMSK @0x%08lX : 0x%08X\n", (unsigned long)addr, + DWC_READ_REG32(addr)); + addr = &core_if->dev_if->dev_global_regs->dtknqr1; + DWC_PRINTF("DTKNQR1 @0x%08lX : 0x%08X\n", (unsigned long)addr, + DWC_READ_REG32(addr)); + if (core_if->hwcfg2.b.dev_token_q_depth > 6) { + addr = &core_if->dev_if->dev_global_regs->dtknqr2; + DWC_PRINTF("DTKNQR2 @0x%08lX : 0x%08X\n", + (unsigned long)addr, DWC_READ_REG32(addr)); + } + + addr = &core_if->dev_if->dev_global_regs->dvbusdis; + DWC_PRINTF("DVBUSID @0x%08lX : 0x%08X\n", (unsigned long)addr, + DWC_READ_REG32(addr)); + + addr = &core_if->dev_if->dev_global_regs->dvbuspulse; + DWC_PRINTF("DVBUSPULSE @0x%08lX : 0x%08X\n", + (unsigned long)addr, DWC_READ_REG32(addr)); + + addr = &core_if->dev_if->dev_global_regs->dtknqr3_dthrctl; + DWC_PRINTF("DTKNQR3_DTHRCTL @0x%08lX : 0x%08X\n", + (unsigned long)addr, DWC_READ_REG32(addr)); + + if (core_if->hwcfg2.b.dev_token_q_depth > 22) { + addr = &core_if->dev_if->dev_global_regs->dtknqr4_fifoemptymsk; + DWC_PRINTF("DTKNQR4 @0x%08lX : 0x%08X\n", + (unsigned long)addr, DWC_READ_REG32(addr)); + } + + addr = &core_if->dev_if->dev_global_regs->dtknqr4_fifoemptymsk; + DWC_PRINTF("FIFOEMPMSK @0x%08lX : 0x%08X\n", (unsigned long)addr, + DWC_READ_REG32(addr)); + + if (core_if->hwcfg2.b.multi_proc_int) { + + addr = &core_if->dev_if->dev_global_regs->deachint; + DWC_PRINTF("DEACHINT @0x%08lX : 0x%08X\n", + (unsigned long)addr, DWC_READ_REG32(addr)); + addr = &core_if->dev_if->dev_global_regs->deachintmsk; + DWC_PRINTF("DEACHINTMSK @0x%08lX : 0x%08X\n", + (unsigned long)addr, DWC_READ_REG32(addr)); + + for (i = 0; i <= core_if->dev_if->num_in_eps; i++) { + addr = + &core_if->dev_if-> + dev_global_regs->diepeachintmsk[i]; + DWC_PRINTF("DIEPEACHINTMSK[%d] @0x%08lX : 0x%08X\n", + i, (unsigned long)addr, + DWC_READ_REG32(addr)); + } + + for (i = 0; i <= core_if->dev_if->num_out_eps; i++) { + addr = + &core_if->dev_if-> + dev_global_regs->doepeachintmsk[i]; + DWC_PRINTF("DOEPEACHINTMSK[%d] @0x%08lX : 0x%08X\n", + i, (unsigned long)addr, + DWC_READ_REG32(addr)); + } + } + + for (i = 0; i <= core_if->dev_if->num_in_eps; i++) { + DWC_PRINTF("Device IN EP %d Registers\n", i); + addr = &core_if->dev_if->in_ep_regs[i]->diepctl; + DWC_PRINTF("DIEPCTL @0x%08lX : 0x%08X\n", + (unsigned long)addr, DWC_READ_REG32(addr)); + addr = &core_if->dev_if->in_ep_regs[i]->diepint; + DWC_PRINTF("DIEPINT @0x%08lX : 0x%08X\n", + (unsigned long)addr, DWC_READ_REG32(addr)); + addr = &core_if->dev_if->in_ep_regs[i]->dieptsiz; + DWC_PRINTF("DIETSIZ @0x%08lX : 0x%08X\n", + (unsigned long)addr, DWC_READ_REG32(addr)); + addr = &core_if->dev_if->in_ep_regs[i]->diepdma; + DWC_PRINTF("DIEPDMA @0x%08lX : 0x%08X\n", + (unsigned long)addr, DWC_READ_REG32(addr)); + addr = &core_if->dev_if->in_ep_regs[i]->dtxfsts; + DWC_PRINTF("DTXFSTS @0x%08lX : 0x%08X\n", + (unsigned long)addr, DWC_READ_REG32(addr)); + addr = &core_if->dev_if->in_ep_regs[i]->diepdmab; + DWC_PRINTF("DIEPDMAB @0x%08lX : 0x%08X\n", + (unsigned long)addr, 0 /*DWC_READ_REG32(addr) */ ); + } + + for (i = 0; i <= core_if->dev_if->num_out_eps; i++) { + DWC_PRINTF("Device OUT EP %d Registers\n", i); + addr = &core_if->dev_if->out_ep_regs[i]->doepctl; + DWC_PRINTF("DOEPCTL @0x%08lX : 0x%08X\n", + (unsigned long)addr, DWC_READ_REG32(addr)); + addr = &core_if->dev_if->out_ep_regs[i]->doepint; + DWC_PRINTF("DOEPINT @0x%08lX : 0x%08X\n", + (unsigned long)addr, DWC_READ_REG32(addr)); + addr = &core_if->dev_if->out_ep_regs[i]->doeptsiz; + DWC_PRINTF("DOETSIZ @0x%08lX : 0x%08X\n", + (unsigned long)addr, DWC_READ_REG32(addr)); + addr = &core_if->dev_if->out_ep_regs[i]->doepdma; + DWC_PRINTF("DOEPDMA @0x%08lX : 0x%08X\n", + (unsigned long)addr, DWC_READ_REG32(addr)); + if (core_if->dma_enable) { /* Don't access this register in SLAVE mode */ + addr = &core_if->dev_if->out_ep_regs[i]->doepdmab; + DWC_PRINTF("DOEPDMAB @0x%08lX : 0x%08X\n", + (unsigned long)addr, DWC_READ_REG32(addr)); + } + + } +} + +/** + * This functions reads the SPRAM and prints its content + * + * @param core_if Programming view of DWC_otg controller. + */ +void dwc_otg_dump_spram(dwc_otg_core_if_t * core_if) +{ + volatile uint8_t *addr, *start_addr, *end_addr; + + DWC_PRINTF("SPRAM Data:\n"); + start_addr = (void *)core_if->core_global_regs; + DWC_PRINTF("Base Address: 0x%8lX\n", (unsigned long)start_addr); + start_addr += 0x00028000; + end_addr = (void *)core_if->core_global_regs; + end_addr += 0x000280e0; + + for (addr = start_addr; addr < end_addr; addr += 16) { + DWC_PRINTF + ("0x%8lX:\t%2X %2X %2X %2X %2X %2X %2X %2X %2X %2X %2X %2X %2X %2X %2X %2X\n", + (unsigned long)addr, addr[0], addr[1], addr[2], addr[3], + addr[4], addr[5], addr[6], addr[7], addr[8], addr[9], + addr[10], addr[11], addr[12], addr[13], addr[14], addr[15] + ); + } + + return; +} + +/** + * This function reads the host registers and prints them + * + * @param core_if Programming view of DWC_otg controller. + */ +void dwc_otg_dump_host_registers(dwc_otg_core_if_t * core_if) +{ + int i; + volatile uint32_t *addr; + + DWC_PRINTF("Host Global Registers\n"); + addr = &core_if->host_if->host_global_regs->hcfg; + DWC_PRINTF("HCFG @0x%08lX : 0x%08X\n", + (unsigned long)addr, DWC_READ_REG32(addr)); + addr = &core_if->host_if->host_global_regs->hfir; + DWC_PRINTF("HFIR @0x%08lX : 0x%08X\n", + (unsigned long)addr, DWC_READ_REG32(addr)); + addr = &core_if->host_if->host_global_regs->hfnum; + DWC_PRINTF("HFNUM @0x%08lX : 0x%08X\n", (unsigned long)addr, + DWC_READ_REG32(addr)); + addr = &core_if->host_if->host_global_regs->hptxsts; + DWC_PRINTF("HPTXSTS @0x%08lX : 0x%08X\n", (unsigned long)addr, + DWC_READ_REG32(addr)); + addr = &core_if->host_if->host_global_regs->haint; + DWC_PRINTF("HAINT @0x%08lX : 0x%08X\n", (unsigned long)addr, + DWC_READ_REG32(addr)); + addr = &core_if->host_if->host_global_regs->haintmsk; + DWC_PRINTF("HAINTMSK @0x%08lX : 0x%08X\n", (unsigned long)addr, + DWC_READ_REG32(addr)); + if (core_if->dma_desc_enable) { + addr = &core_if->host_if->host_global_regs->hflbaddr; + DWC_PRINTF("HFLBADDR @0x%08lX : 0x%08X\n", + (unsigned long)addr, DWC_READ_REG32(addr)); + } + + addr = core_if->host_if->hprt0; + DWC_PRINTF("HPRT0 @0x%08lX : 0x%08X\n", (unsigned long)addr, + DWC_READ_REG32(addr)); + + for (i = 0; i < core_if->core_params->host_channels; i++) { + DWC_PRINTF("Host Channel %d Specific Registers\n", i); + addr = &core_if->host_if->hc_regs[i]->hcchar; + DWC_PRINTF("HCCHAR @0x%08lX : 0x%08X\n", + (unsigned long)addr, DWC_READ_REG32(addr)); + addr = &core_if->host_if->hc_regs[i]->hcsplt; + DWC_PRINTF("HCSPLT @0x%08lX : 0x%08X\n", + (unsigned long)addr, DWC_READ_REG32(addr)); + addr = &core_if->host_if->hc_regs[i]->hcint; + DWC_PRINTF("HCINT @0x%08lX : 0x%08X\n", + (unsigned long)addr, DWC_READ_REG32(addr)); + addr = &core_if->host_if->hc_regs[i]->hcintmsk; + DWC_PRINTF("HCINTMSK @0x%08lX : 0x%08X\n", + (unsigned long)addr, DWC_READ_REG32(addr)); + addr = &core_if->host_if->hc_regs[i]->hctsiz; + DWC_PRINTF("HCTSIZ @0x%08lX : 0x%08X\n", + (unsigned long)addr, DWC_READ_REG32(addr)); + addr = &core_if->host_if->hc_regs[i]->hcdma; + DWC_PRINTF("HCDMA @0x%08lX : 0x%08X\n", + (unsigned long)addr, DWC_READ_REG32(addr)); + if (core_if->dma_desc_enable) { + addr = &core_if->host_if->hc_regs[i]->hcdmab; + DWC_PRINTF("HCDMAB @0x%08lX : 0x%08X\n", + (unsigned long)addr, DWC_READ_REG32(addr)); + } + + } + return; +} + +/** + * This function reads the core global registers and prints them + * + * @param core_if Programming view of DWC_otg controller. + */ +void dwc_otg_dump_global_registers(dwc_otg_core_if_t * core_if) +{ + int i, ep_num; + volatile uint32_t *addr; + char *txfsiz; + + DWC_PRINTF("Core Global Registers\n"); + addr = &core_if->core_global_regs->gotgctl; + DWC_PRINTF("GOTGCTL @0x%08lX : 0x%08X\n", (unsigned long)addr, + DWC_READ_REG32(addr)); + addr = &core_if->core_global_regs->gotgint; + DWC_PRINTF("GOTGINT @0x%08lX : 0x%08X\n", (unsigned long)addr, + DWC_READ_REG32(addr)); + addr = &core_if->core_global_regs->gahbcfg; + DWC_PRINTF("GAHBCFG @0x%08lX : 0x%08X\n", (unsigned long)addr, + DWC_READ_REG32(addr)); + addr = &core_if->core_global_regs->gusbcfg; + DWC_PRINTF("GUSBCFG @0x%08lX : 0x%08X\n", (unsigned long)addr, + DWC_READ_REG32(addr)); + addr = &core_if->core_global_regs->grstctl; + DWC_PRINTF("GRSTCTL @0x%08lX : 0x%08X\n", (unsigned long)addr, + DWC_READ_REG32(addr)); + addr = &core_if->core_global_regs->gintsts; + DWC_PRINTF("GINTSTS @0x%08lX : 0x%08X\n", (unsigned long)addr, + DWC_READ_REG32(addr)); + addr = &core_if->core_global_regs->gintmsk; + DWC_PRINTF("GINTMSK @0x%08lX : 0x%08X\n", (unsigned long)addr, + DWC_READ_REG32(addr)); + addr = &core_if->core_global_regs->grxstsr; + DWC_PRINTF("GRXSTSR @0x%08lX : 0x%08X\n", (unsigned long)addr, + DWC_READ_REG32(addr)); + addr = &core_if->core_global_regs->grxfsiz; + DWC_PRINTF("GRXFSIZ @0x%08lX : 0x%08X\n", (unsigned long)addr, + DWC_READ_REG32(addr)); + addr = &core_if->core_global_regs->gnptxfsiz; + DWC_PRINTF("GNPTXFSIZ @0x%08lX : 0x%08X\n", (unsigned long)addr, + DWC_READ_REG32(addr)); + addr = &core_if->core_global_regs->gnptxsts; + DWC_PRINTF("GNPTXSTS @0x%08lX : 0x%08X\n", (unsigned long)addr, + DWC_READ_REG32(addr)); + addr = &core_if->core_global_regs->gi2cctl; + DWC_PRINTF("GI2CCTL @0x%08lX : 0x%08X\n", (unsigned long)addr, + DWC_READ_REG32(addr)); + addr = &core_if->core_global_regs->gpvndctl; + DWC_PRINTF("GPVNDCTL @0x%08lX : 0x%08X\n", (unsigned long)addr, + DWC_READ_REG32(addr)); + addr = &core_if->core_global_regs->ggpio; + DWC_PRINTF("GGPIO @0x%08lX : 0x%08X\n", (unsigned long)addr, + DWC_READ_REG32(addr)); + addr = &core_if->core_global_regs->guid; + DWC_PRINTF("GUID @0x%08lX : 0x%08X\n", + (unsigned long)addr, DWC_READ_REG32(addr)); + addr = &core_if->core_global_regs->gsnpsid; + DWC_PRINTF("GSNPSID @0x%08lX : 0x%08X\n", (unsigned long)addr, + DWC_READ_REG32(addr)); + addr = &core_if->core_global_regs->ghwcfg1; + DWC_PRINTF("GHWCFG1 @0x%08lX : 0x%08X\n", (unsigned long)addr, + DWC_READ_REG32(addr)); + addr = &core_if->core_global_regs->ghwcfg2; + DWC_PRINTF("GHWCFG2 @0x%08lX : 0x%08X\n", (unsigned long)addr, + DWC_READ_REG32(addr)); + addr = &core_if->core_global_regs->ghwcfg3; + DWC_PRINTF("GHWCFG3 @0x%08lX : 0x%08X\n", (unsigned long)addr, + DWC_READ_REG32(addr)); + addr = &core_if->core_global_regs->ghwcfg4; + DWC_PRINTF("GHWCFG4 @0x%08lX : 0x%08X\n", (unsigned long)addr, + DWC_READ_REG32(addr)); + addr = &core_if->core_global_regs->glpmcfg; + DWC_PRINTF("GLPMCFG @0x%08lX : 0x%08X\n", (unsigned long)addr, + DWC_READ_REG32(addr)); + addr = &core_if->core_global_regs->gpwrdn; + DWC_PRINTF("GPWRDN @0x%08lX : 0x%08X\n", (unsigned long)addr, + DWC_READ_REG32(addr)); + addr = &core_if->core_global_regs->gdfifocfg; + DWC_PRINTF("GDFIFOCFG @0x%08lX : 0x%08X\n", (unsigned long)addr, + DWC_READ_REG32(addr)); + addr = &core_if->core_global_regs->adpctl; + DWC_PRINTF("ADPCTL @0x%08lX : 0x%08X\n", (unsigned long)addr, + dwc_otg_adp_read_reg(core_if)); + addr = &core_if->core_global_regs->hptxfsiz; + DWC_PRINTF("HPTXFSIZ @0x%08lX : 0x%08X\n", (unsigned long)addr, + DWC_READ_REG32(addr)); + + if (core_if->en_multiple_tx_fifo == 0) { + ep_num = core_if->hwcfg4.b.num_dev_perio_in_ep; + txfsiz = "DPTXFSIZ"; + } else { + ep_num = core_if->hwcfg4.b.num_in_eps; + txfsiz = "DIENPTXF"; + } + for (i = 0; i < ep_num; i++) { + addr = &core_if->core_global_regs->dtxfsiz[i]; + DWC_PRINTF("%s[%d] @0x%08lX : 0x%08X\n", txfsiz, i + 1, + (unsigned long)addr, DWC_READ_REG32(addr)); + } + addr = core_if->pcgcctl; + DWC_PRINTF("PCGCCTL @0x%08lX : 0x%08X\n", (unsigned long)addr, + DWC_READ_REG32(addr)); +} + +/** + * Flush a Tx FIFO. + * + * @param core_if Programming view of DWC_otg controller. + * @param num Tx FIFO to flush. + */ +void dwc_otg_flush_tx_fifo(dwc_otg_core_if_t * core_if, const int num) +{ + dwc_otg_core_global_regs_t *global_regs = core_if->core_global_regs; + volatile grstctl_t greset = {.d32 = 0 }; + int count = 0; + + DWC_DEBUGPL((DBG_CIL | DBG_PCDV), "Flush Tx FIFO %d\n", num); + + greset.b.txfflsh = 1; + greset.b.txfnum = num; + DWC_WRITE_REG32(&global_regs->grstctl, greset.d32); + + do { + greset.d32 = DWC_READ_REG32(&global_regs->grstctl); + if (++count > 10000) { + DWC_WARN("%s() HANG! GRSTCTL=%0x GNPTXSTS=0x%08x\n", + __func__, greset.d32, + DWC_READ_REG32(&global_regs->gnptxsts)); + break; + } + dwc_udelay(1); + } while (greset.b.txfflsh == 1); + + /* Wait for 3 PHY Clocks */ + dwc_udelay(1); +} + +/** + * Flush Rx FIFO. + * + * @param core_if Programming view of DWC_otg controller. + */ +void dwc_otg_flush_rx_fifo(dwc_otg_core_if_t * core_if) +{ + dwc_otg_core_global_regs_t *global_regs = core_if->core_global_regs; + volatile grstctl_t greset = {.d32 = 0 }; + int count = 0; + + DWC_DEBUGPL((DBG_CIL | DBG_PCDV), "%s\n", __func__); + /* + * + */ + greset.b.rxfflsh = 1; + DWC_WRITE_REG32(&global_regs->grstctl, greset.d32); + + do { + greset.d32 = DWC_READ_REG32(&global_regs->grstctl); + if (++count > 10000) { + DWC_WARN("%s() HANG! GRSTCTL=%0x\n", __func__, + greset.d32); + break; + } + dwc_udelay(1); + } while (greset.b.rxfflsh == 1); + + /* Wait for 3 PHY Clocks */ + dwc_udelay(1); +} + +/** + * Do core a soft reset of the core. Be careful with this because it + * resets all the internal state machines of the core. + */ +void dwc_otg_core_reset(dwc_otg_core_if_t * core_if) +{ + dwc_otg_core_global_regs_t *global_regs = core_if->core_global_regs; + volatile grstctl_t greset = {.d32 = 0 }; + int count = 0; + + DWC_DEBUGPL(DBG_CILV, "%s\n", __func__); + /* Wait for AHB master IDLE state. */ + do { + dwc_udelay(10); + greset.d32 = DWC_READ_REG32(&global_regs->grstctl); + if (++count > 100000) { + DWC_WARN("%s() HANG! AHB Idle GRSTCTL=%0x\n", __func__, + greset.d32); + return; + } + } + while (greset.b.ahbidle == 0); + + /* Core Soft Reset */ + count = 0; + greset.b.csftrst = 1; + DWC_WRITE_REG32(&global_regs->grstctl, greset.d32); + do { + greset.d32 = DWC_READ_REG32(&global_regs->grstctl); + if (++count > 10000) { + DWC_WARN("%s() HANG! Soft Reset GRSTCTL=%0x\n", + __func__, greset.d32); + break; + } + dwc_udelay(1); + } + while (greset.b.csftrst == 1); + + /* Wait for 3 PHY Clocks */ + dwc_mdelay(100); +} + +uint8_t dwc_otg_is_device_mode(dwc_otg_core_if_t * _core_if) +{ + return (dwc_otg_mode(_core_if) != DWC_HOST_MODE); +} + +uint8_t dwc_otg_is_host_mode(dwc_otg_core_if_t * _core_if) +{ + return (dwc_otg_mode(_core_if) == DWC_HOST_MODE); +} + +/** + * Register HCD callbacks. The callbacks are used to start and stop + * the HCD for interrupt processing. + * + * @param core_if Programming view of DWC_otg controller. + * @param cb the HCD callback structure. + * @param p pointer to be passed to callback function (usb_hcd*). + */ +void dwc_otg_cil_register_hcd_callbacks(dwc_otg_core_if_t * core_if, + dwc_otg_cil_callbacks_t * cb, void *p) +{ + core_if->hcd_cb = cb; + cb->p = p; +} + +/** + * Register PCD callbacks. The callbacks are used to start and stop + * the PCD for interrupt processing. + * + * @param core_if Programming view of DWC_otg controller. + * @param cb the PCD callback structure. + * @param p pointer to be passed to callback function (pcd*). + */ +void dwc_otg_cil_register_pcd_callbacks(dwc_otg_core_if_t * core_if, + dwc_otg_cil_callbacks_t * cb, void *p) +{ + core_if->pcd_cb = cb; + cb->p = p; +} + +#ifdef DWC_EN_ISOC + +/** + * This function writes isoc data per 1 (micro)frame into tx fifo + * + * @param core_if Programming view of DWC_otg controller. + * @param ep The EP to start the transfer on. + * + */ +void write_isoc_frame_data(dwc_otg_core_if_t * core_if, dwc_ep_t * ep) +{ + dwc_otg_dev_in_ep_regs_t *ep_regs; + dtxfsts_data_t txstatus = {.d32 = 0 }; + uint32_t len = 0; + uint32_t dwords; + + ep->xfer_len = ep->data_per_frame; + ep->xfer_count = 0; + + ep_regs = core_if->dev_if->in_ep_regs[ep->num]; + + len = ep->xfer_len - ep->xfer_count; + + if (len > ep->maxpacket) { + len = ep->maxpacket; + } + + dwords = (len + 3) / 4; + + /* While there is space in the queue and space in the FIFO and + * More data to tranfer, Write packets to the Tx FIFO */ + txstatus.d32 = + DWC_READ_REG32(&core_if->dev_if->in_ep_regs[ep->num]->dtxfsts); + DWC_DEBUGPL(DBG_PCDV, "b4 dtxfsts[%d]=0x%08x\n", ep->num, txstatus.d32); + + while (txstatus.b.txfspcavail > dwords && + ep->xfer_count < ep->xfer_len && ep->xfer_len != 0) { + /* Write the FIFO */ + dwc_otg_ep_write_packet(core_if, ep, 0); + + len = ep->xfer_len - ep->xfer_count; + if (len > ep->maxpacket) { + len = ep->maxpacket; + } + + dwords = (len + 3) / 4; + txstatus.d32 = + DWC_READ_REG32(&core_if->dev_if->in_ep_regs[ep->num]-> + dtxfsts); + DWC_DEBUGPL(DBG_PCDV, "dtxfsts[%d]=0x%08x\n", ep->num, + txstatus.d32); + } +} + +/** + * This function initializes a descriptor chain for Isochronous transfer + * + * @param core_if Programming view of DWC_otg controller. + * @param ep The EP to start the transfer on. + * + */ +void dwc_otg_iso_ep_start_frm_transfer(dwc_otg_core_if_t * core_if, + dwc_ep_t * ep) +{ + deptsiz_data_t deptsiz = {.d32 = 0 }; + depctl_data_t depctl = {.d32 = 0 }; + dsts_data_t dsts = {.d32 = 0 }; + volatile uint32_t *addr; + + if (ep->is_in) { + addr = &core_if->dev_if->in_ep_regs[ep->num]->diepctl; + } else { + addr = &core_if->dev_if->out_ep_regs[ep->num]->doepctl; + } + + ep->xfer_len = ep->data_per_frame; + ep->xfer_count = 0; + ep->xfer_buff = ep->cur_pkt_addr; + ep->dma_addr = ep->cur_pkt_dma_addr; + + if (ep->is_in) { + /* Program the transfer size and packet count + * as follows: xfersize = N * maxpacket + + * short_packet pktcnt = N + (short_packet + * exist ? 1 : 0) + */ + deptsiz.b.xfersize = ep->xfer_len; + deptsiz.b.pktcnt = + (ep->xfer_len - 1 + ep->maxpacket) / ep->maxpacket; + deptsiz.b.mc = deptsiz.b.pktcnt; + DWC_WRITE_REG32(&core_if->dev_if->in_ep_regs[ep->num]->dieptsiz, + deptsiz.d32); + + /* Write the DMA register */ + if (core_if->dma_enable) { + DWC_WRITE_REG32(& + (core_if->dev_if->in_ep_regs[ep->num]-> + diepdma), (uint32_t) ep->dma_addr); + } + } else { + deptsiz.b.pktcnt = + (ep->xfer_len + (ep->maxpacket - 1)) / ep->maxpacket; + deptsiz.b.xfersize = deptsiz.b.pktcnt * ep->maxpacket; + + DWC_WRITE_REG32(&core_if->dev_if-> + out_ep_regs[ep->num]->doeptsiz, deptsiz.d32); + + if (core_if->dma_enable) { + DWC_WRITE_REG32(& + (core_if->dev_if-> + out_ep_regs[ep->num]->doepdma), + (uint32_t) ep->dma_addr); + } + } + + /** Enable endpoint, clear nak */ + + depctl.d32 = 0; + if (ep->bInterval == 1) { + dsts.d32 = + DWC_READ_REG32(&core_if->dev_if->dev_global_regs->dsts); + ep->next_frame = dsts.b.soffn + ep->bInterval; + + if (ep->next_frame & 0x1) { + depctl.b.setd1pid = 1; + } else { + depctl.b.setd0pid = 1; + } + } else { + ep->next_frame += ep->bInterval; + + if (ep->next_frame & 0x1) { + depctl.b.setd1pid = 1; + } else { + depctl.b.setd0pid = 1; + } + } + depctl.b.epena = 1; + depctl.b.cnak = 1; + + DWC_MODIFY_REG32(addr, 0, depctl.d32); + depctl.d32 = DWC_READ_REG32(addr); + + if (ep->is_in && core_if->dma_enable == 0) { + write_isoc_frame_data(core_if, ep); + } + +} +#endif /* DWC_EN_ISOC */ + +static void dwc_otg_set_uninitialized(int32_t * p, int size) +{ + int i; + for (i = 0; i < size; i++) { + p[i] = -1; + } +} + +static int dwc_otg_param_initialized(int32_t val) +{ + return val != -1; +} + +static int dwc_otg_setup_params(dwc_otg_core_if_t * core_if) +{ + int i; + core_if->core_params = DWC_ALLOC(sizeof(*core_if->core_params)); + if (!core_if->core_params) { + return -DWC_E_NO_MEMORY; + } + dwc_otg_set_uninitialized((int32_t *) core_if->core_params, + sizeof(*core_if->core_params) / + sizeof(int32_t)); + DWC_PRINTF("Setting default values for core params\n"); + dwc_otg_set_param_otg_cap(core_if, dwc_param_otg_cap_default); + dwc_otg_set_param_dma_enable(core_if, dwc_param_dma_enable_default); + dwc_otg_set_param_dma_desc_enable(core_if, + dwc_param_dma_desc_enable_default); + dwc_otg_set_param_opt(core_if, dwc_param_opt_default); + dwc_otg_set_param_dma_burst_size(core_if, + dwc_param_dma_burst_size_default); + dwc_otg_set_param_host_support_fs_ls_low_power(core_if, + dwc_param_host_support_fs_ls_low_power_default); + dwc_otg_set_param_enable_dynamic_fifo(core_if, + dwc_param_enable_dynamic_fifo_default); + dwc_otg_set_param_data_fifo_size(core_if, + dwc_param_data_fifo_size_default); + dwc_otg_set_param_dev_rx_fifo_size(core_if, + dwc_param_dev_rx_fifo_size_default); + dwc_otg_set_param_dev_nperio_tx_fifo_size(core_if, + dwc_param_dev_nperio_tx_fifo_size_default); + dwc_otg_set_param_host_rx_fifo_size(core_if, + dwc_param_host_rx_fifo_size_default); + dwc_otg_set_param_host_nperio_tx_fifo_size(core_if, + dwc_param_host_nperio_tx_fifo_size_default); + dwc_otg_set_param_host_perio_tx_fifo_size(core_if, + dwc_param_host_perio_tx_fifo_size_default); + dwc_otg_set_param_max_transfer_size(core_if, + dwc_param_max_transfer_size_default); + dwc_otg_set_param_max_packet_count(core_if, + dwc_param_max_packet_count_default); + dwc_otg_set_param_host_channels(core_if, + dwc_param_host_channels_default); + dwc_otg_set_param_dev_endpoints(core_if, + dwc_param_dev_endpoints_default); + dwc_otg_set_param_phy_type(core_if, dwc_param_phy_type_default); + dwc_otg_set_param_speed(core_if, dwc_param_speed_default); + dwc_otg_set_param_host_ls_low_power_phy_clk(core_if, + dwc_param_host_ls_low_power_phy_clk_default); + dwc_otg_set_param_phy_ulpi_ddr(core_if, dwc_param_phy_ulpi_ddr_default); + dwc_otg_set_param_phy_ulpi_ext_vbus(core_if, + dwc_param_phy_ulpi_ext_vbus_default); + dwc_otg_set_param_phy_utmi_width(core_if, + dwc_param_phy_utmi_width_default); + dwc_otg_set_param_ts_dline(core_if, dwc_param_ts_dline_default); + dwc_otg_set_param_i2c_enable(core_if, dwc_param_i2c_enable_default); + dwc_otg_set_param_ulpi_fs_ls(core_if, dwc_param_ulpi_fs_ls_default); + dwc_otg_set_param_en_multiple_tx_fifo(core_if, + dwc_param_en_multiple_tx_fifo_default); + for (i = 0; i < 15; i++) { + dwc_otg_set_param_dev_perio_tx_fifo_size(core_if, + dwc_param_dev_perio_tx_fifo_size_default, + i); + } + + for (i = 0; i < 15; i++) { + dwc_otg_set_param_dev_tx_fifo_size(core_if, + dwc_param_dev_tx_fifo_size_default, + i); + } + dwc_otg_set_param_thr_ctl(core_if, dwc_param_thr_ctl_default); + dwc_otg_set_param_mpi_enable(core_if, dwc_param_mpi_enable_default); + dwc_otg_set_param_pti_enable(core_if, dwc_param_pti_enable_default); + dwc_otg_set_param_lpm_enable(core_if, dwc_param_lpm_enable_default); + dwc_otg_set_param_ic_usb_cap(core_if, dwc_param_ic_usb_cap_default); + dwc_otg_set_param_tx_thr_length(core_if, + dwc_param_tx_thr_length_default); + dwc_otg_set_param_rx_thr_length(core_if, + dwc_param_rx_thr_length_default); + dwc_otg_set_param_ahb_thr_ratio(core_if, + dwc_param_ahb_thr_ratio_default); + dwc_otg_set_param_power_down(core_if, dwc_param_power_down_default); + dwc_otg_set_param_reload_ctl(core_if, dwc_param_reload_ctl_default); + dwc_otg_set_param_dev_out_nak(core_if, dwc_param_dev_out_nak_default); + dwc_otg_set_param_cont_on_bna(core_if, dwc_param_cont_on_bna_default); + dwc_otg_set_param_ahb_single(core_if, dwc_param_ahb_single_default); + dwc_otg_set_param_otg_ver(core_if, dwc_param_otg_ver_default); + dwc_otg_set_param_adp_enable(core_if, dwc_param_adp_enable_default); + DWC_PRINTF("Finished setting default values for core params\n"); + + return 0; +} + +uint8_t dwc_otg_is_dma_enable(dwc_otg_core_if_t * core_if) +{ + return core_if->dma_enable; +} + +/* Checks if the parameter is outside of its valid range of values */ +#define DWC_OTG_PARAM_TEST(_param_, _low_, _high_) \ + (((_param_) < (_low_)) || \ + ((_param_) > (_high_))) + +/* Parameter access functions */ +int dwc_otg_set_param_otg_cap(dwc_otg_core_if_t * core_if, int32_t val) +{ + int valid; + int retval = 0; + if (DWC_OTG_PARAM_TEST(val, 0, 2)) { + DWC_WARN("Wrong value for otg_cap parameter\n"); + DWC_WARN("otg_cap parameter must be 0,1 or 2\n"); + retval = -DWC_E_INVALID; + goto out; + } + + valid = 1; + switch (val) { + case DWC_OTG_CAP_PARAM_HNP_SRP_CAPABLE: + if (core_if->hwcfg2.b.op_mode != + DWC_HWCFG2_OP_MODE_HNP_SRP_CAPABLE_OTG) + valid = 0; + break; + case DWC_OTG_CAP_PARAM_SRP_ONLY_CAPABLE: + if ((core_if->hwcfg2.b.op_mode != + DWC_HWCFG2_OP_MODE_HNP_SRP_CAPABLE_OTG) + && (core_if->hwcfg2.b.op_mode != + DWC_HWCFG2_OP_MODE_SRP_ONLY_CAPABLE_OTG) + && (core_if->hwcfg2.b.op_mode != + DWC_HWCFG2_OP_MODE_SRP_CAPABLE_DEVICE) + && (core_if->hwcfg2.b.op_mode != + DWC_HWCFG2_OP_MODE_SRP_CAPABLE_HOST)) { + valid = 0; + } + break; + case DWC_OTG_CAP_PARAM_NO_HNP_SRP_CAPABLE: + /* always valid */ + break; + } + if (!valid) { + if (dwc_otg_param_initialized(core_if->core_params->otg_cap)) { + DWC_ERROR + ("%d invalid for otg_cap paremter. Check HW configuration.\n", + val); + } + val = + (((core_if->hwcfg2.b.op_mode == + DWC_HWCFG2_OP_MODE_HNP_SRP_CAPABLE_OTG) + || (core_if->hwcfg2.b.op_mode == + DWC_HWCFG2_OP_MODE_SRP_ONLY_CAPABLE_OTG) + || (core_if->hwcfg2.b.op_mode == + DWC_HWCFG2_OP_MODE_SRP_CAPABLE_DEVICE) + || (core_if->hwcfg2.b.op_mode == + DWC_HWCFG2_OP_MODE_SRP_CAPABLE_HOST)) ? + DWC_OTG_CAP_PARAM_SRP_ONLY_CAPABLE : + DWC_OTG_CAP_PARAM_NO_HNP_SRP_CAPABLE); + retval = -DWC_E_INVALID; + } + + core_if->core_params->otg_cap = val; +out: + return retval; +} + +int32_t dwc_otg_get_param_otg_cap(dwc_otg_core_if_t * core_if) +{ + return core_if->core_params->otg_cap; +} + +int dwc_otg_set_param_opt(dwc_otg_core_if_t * core_if, int32_t val) +{ + if (DWC_OTG_PARAM_TEST(val, 0, 1)) { + DWC_WARN("Wrong value for opt parameter\n"); + return -DWC_E_INVALID; + } + core_if->core_params->opt = val; + return 0; +} + +int32_t dwc_otg_get_param_opt(dwc_otg_core_if_t * core_if) +{ + return core_if->core_params->opt; +} + +int dwc_otg_set_param_dma_enable(dwc_otg_core_if_t * core_if, int32_t val) +{ + int retval = 0; + if (DWC_OTG_PARAM_TEST(val, 0, 1)) { + DWC_WARN("Wrong value for dma enable\n"); + return -DWC_E_INVALID; + } + + if ((val == 1) && (core_if->hwcfg2.b.architecture == 0)) { + if (dwc_otg_param_initialized(core_if->core_params->dma_enable)) { + DWC_ERROR + ("%d invalid for dma_enable paremter. Check HW configuration.\n", + val); + } + val = 0; + retval = -DWC_E_INVALID; + } + + core_if->core_params->dma_enable = val; + if (val == 0) { + dwc_otg_set_param_dma_desc_enable(core_if, 0); + } + return retval; +} + +int32_t dwc_otg_get_param_dma_enable(dwc_otg_core_if_t * core_if) +{ + return core_if->core_params->dma_enable; +} + +int dwc_otg_set_param_dma_desc_enable(dwc_otg_core_if_t * core_if, int32_t val) +{ + int retval = 0; + if (DWC_OTG_PARAM_TEST(val, 0, 1)) { + DWC_WARN("Wrong value for dma_enable\n"); + DWC_WARN("dma_desc_enable must be 0 or 1\n"); + return -DWC_E_INVALID; + } + + if ((val == 1) + && ((dwc_otg_get_param_dma_enable(core_if) == 0) + || (core_if->hwcfg4.b.desc_dma == 0))) { + if (dwc_otg_param_initialized + (core_if->core_params->dma_desc_enable)) { + DWC_ERROR + ("%d invalid for dma_desc_enable paremter. Check HW configuration.\n", + val); + } + val = 0; + retval = -DWC_E_INVALID; + } + core_if->core_params->dma_desc_enable = val; + return retval; +} + +int32_t dwc_otg_get_param_dma_desc_enable(dwc_otg_core_if_t * core_if) +{ + return core_if->core_params->dma_desc_enable; +} + +int dwc_otg_set_param_host_support_fs_ls_low_power(dwc_otg_core_if_t * core_if, + int32_t val) +{ + if (DWC_OTG_PARAM_TEST(val, 0, 1)) { + DWC_WARN("Wrong value for host_support_fs_low_power\n"); + DWC_WARN("host_support_fs_low_power must be 0 or 1\n"); + return -DWC_E_INVALID; + } + core_if->core_params->host_support_fs_ls_low_power = val; + return 0; +} + +int32_t dwc_otg_get_param_host_support_fs_ls_low_power(dwc_otg_core_if_t * + core_if) +{ + return core_if->core_params->host_support_fs_ls_low_power; +} + +int dwc_otg_set_param_enable_dynamic_fifo(dwc_otg_core_if_t * core_if, + int32_t val) +{ + int retval = 0; + if (DWC_OTG_PARAM_TEST(val, 0, 1)) { + DWC_WARN("Wrong value for enable_dynamic_fifo\n"); + DWC_WARN("enable_dynamic_fifo must be 0 or 1\n"); + return -DWC_E_INVALID; + } + + if ((val == 1) && (core_if->hwcfg2.b.dynamic_fifo == 0)) { + if (dwc_otg_param_initialized + (core_if->core_params->enable_dynamic_fifo)) { + DWC_ERROR + ("%d invalid for enable_dynamic_fifo paremter. Check HW configuration.\n", + val); + } + val = 0; + retval = -DWC_E_INVALID; + } + core_if->core_params->enable_dynamic_fifo = val; + return retval; +} + +int32_t dwc_otg_get_param_enable_dynamic_fifo(dwc_otg_core_if_t * core_if) +{ + return core_if->core_params->enable_dynamic_fifo; +} + +int dwc_otg_set_param_data_fifo_size(dwc_otg_core_if_t * core_if, int32_t val) +{ + int retval = 0; + if (DWC_OTG_PARAM_TEST(val, 32, 32768)) { + DWC_WARN("Wrong value for data_fifo_size\n"); + DWC_WARN("data_fifo_size must be 32-32768\n"); + return -DWC_E_INVALID; + } + + if (val > core_if->hwcfg3.b.dfifo_depth) { + if (dwc_otg_param_initialized + (core_if->core_params->data_fifo_size)) { + DWC_ERROR + ("%d invalid for data_fifo_size parameter. Check HW configuration.\n", + val); + } + val = core_if->hwcfg3.b.dfifo_depth; + retval = -DWC_E_INVALID; + } + + core_if->core_params->data_fifo_size = val; + return retval; +} + +int32_t dwc_otg_get_param_data_fifo_size(dwc_otg_core_if_t * core_if) +{ + return core_if->core_params->data_fifo_size; +} + +int dwc_otg_set_param_dev_rx_fifo_size(dwc_otg_core_if_t * core_if, int32_t val) +{ + int retval = 0; + if (DWC_OTG_PARAM_TEST(val, 16, 32768)) { + DWC_WARN("Wrong value for dev_rx_fifo_size\n"); + DWC_WARN("dev_rx_fifo_size must be 16-32768\n"); + return -DWC_E_INVALID; + } + + if (val > DWC_READ_REG32(&core_if->core_global_regs->grxfsiz)) { + if (dwc_otg_param_initialized(core_if->core_params->dev_rx_fifo_size)) { + DWC_WARN("%d invalid for dev_rx_fifo_size parameter\n", val); + } + val = DWC_READ_REG32(&core_if->core_global_regs->grxfsiz); + retval = -DWC_E_INVALID; + } + + core_if->core_params->dev_rx_fifo_size = val; + return retval; +} + +int32_t dwc_otg_get_param_dev_rx_fifo_size(dwc_otg_core_if_t * core_if) +{ + return core_if->core_params->dev_rx_fifo_size; +} + +int dwc_otg_set_param_dev_nperio_tx_fifo_size(dwc_otg_core_if_t * core_if, + int32_t val) +{ + int retval = 0; + + if (DWC_OTG_PARAM_TEST(val, 16, 32768)) { + DWC_WARN("Wrong value for dev_nperio_tx_fifo\n"); + DWC_WARN("dev_nperio_tx_fifo must be 16-32768\n"); + return -DWC_E_INVALID; + } + + if (val > (DWC_READ_REG32(&core_if->core_global_regs->gnptxfsiz) >> 16)) { + if (dwc_otg_param_initialized + (core_if->core_params->dev_nperio_tx_fifo_size)) { + DWC_ERROR + ("%d invalid for dev_nperio_tx_fifo_size. Check HW configuration.\n", + val); + } + val = + (DWC_READ_REG32(&core_if->core_global_regs->gnptxfsiz) >> + 16); + retval = -DWC_E_INVALID; + } + + core_if->core_params->dev_nperio_tx_fifo_size = val; + return retval; +} + +int32_t dwc_otg_get_param_dev_nperio_tx_fifo_size(dwc_otg_core_if_t * core_if) +{ + return core_if->core_params->dev_nperio_tx_fifo_size; +} + +int dwc_otg_set_param_host_rx_fifo_size(dwc_otg_core_if_t * core_if, + int32_t val) +{ + int retval = 0; + + if (DWC_OTG_PARAM_TEST(val, 16, 32768)) { + DWC_WARN("Wrong value for host_rx_fifo_size\n"); + DWC_WARN("host_rx_fifo_size must be 16-32768\n"); + return -DWC_E_INVALID; + } + + if (val > DWC_READ_REG32(&core_if->core_global_regs->grxfsiz)) { + if (dwc_otg_param_initialized + (core_if->core_params->host_rx_fifo_size)) { + DWC_ERROR + ("%d invalid for host_rx_fifo_size. Check HW configuration.\n", + val); + } + val = DWC_READ_REG32(&core_if->core_global_regs->grxfsiz); + retval = -DWC_E_INVALID; + } + + core_if->core_params->host_rx_fifo_size = val; + return retval; + +} + +int32_t dwc_otg_get_param_host_rx_fifo_size(dwc_otg_core_if_t * core_if) +{ + return core_if->core_params->host_rx_fifo_size; +} + +int dwc_otg_set_param_host_nperio_tx_fifo_size(dwc_otg_core_if_t * core_if, + int32_t val) +{ + int retval = 0; + + if (DWC_OTG_PARAM_TEST(val, 16, 32768)) { + DWC_WARN("Wrong value for host_nperio_tx_fifo_size\n"); + DWC_WARN("host_nperio_tx_fifo_size must be 16-32768\n"); + return -DWC_E_INVALID; + } + + if (val > (DWC_READ_REG32(&core_if->core_global_regs->gnptxfsiz) >> 16)) { + if (dwc_otg_param_initialized + (core_if->core_params->host_nperio_tx_fifo_size)) { + DWC_ERROR + ("%d invalid for host_nperio_tx_fifo_size. Check HW configuration.\n", + val); + } + val = + (DWC_READ_REG32(&core_if->core_global_regs->gnptxfsiz) >> + 16); + retval = -DWC_E_INVALID; + } + + core_if->core_params->host_nperio_tx_fifo_size = val; + return retval; +} + +int32_t dwc_otg_get_param_host_nperio_tx_fifo_size(dwc_otg_core_if_t * core_if) +{ + return core_if->core_params->host_nperio_tx_fifo_size; +} + +int dwc_otg_set_param_host_perio_tx_fifo_size(dwc_otg_core_if_t * core_if, + int32_t val) +{ + int retval = 0; + if (DWC_OTG_PARAM_TEST(val, 16, 32768)) { + DWC_WARN("Wrong value for host_perio_tx_fifo_size\n"); + DWC_WARN("host_perio_tx_fifo_size must be 16-32768\n"); + return -DWC_E_INVALID; + } + + if (val > ((core_if->hptxfsiz.d32) >> 16)) { + if (dwc_otg_param_initialized + (core_if->core_params->host_perio_tx_fifo_size)) { + DWC_ERROR + ("%d invalid for host_perio_tx_fifo_size. Check HW configuration.\n", + val); + } + val = (core_if->hptxfsiz.d32) >> 16; + retval = -DWC_E_INVALID; + } + + core_if->core_params->host_perio_tx_fifo_size = val; + return retval; +} + +int32_t dwc_otg_get_param_host_perio_tx_fifo_size(dwc_otg_core_if_t * core_if) +{ + return core_if->core_params->host_perio_tx_fifo_size; +} + +int dwc_otg_set_param_max_transfer_size(dwc_otg_core_if_t * core_if, + int32_t val) +{ + int retval = 0; + + if (DWC_OTG_PARAM_TEST(val, 2047, 524288)) { + DWC_WARN("Wrong value for max_transfer_size\n"); + DWC_WARN("max_transfer_size must be 2047-524288\n"); + return -DWC_E_INVALID; + } + + if (val >= (1 << (core_if->hwcfg3.b.xfer_size_cntr_width + 11))) { + if (dwc_otg_param_initialized + (core_if->core_params->max_transfer_size)) { + DWC_ERROR + ("%d invalid for max_transfer_size. Check HW configuration.\n", + val); + } + val = + ((1 << (core_if->hwcfg3.b.packet_size_cntr_width + 11)) - + 1); + retval = -DWC_E_INVALID; + } + + core_if->core_params->max_transfer_size = val; + return retval; +} + +int32_t dwc_otg_get_param_max_transfer_size(dwc_otg_core_if_t * core_if) +{ + return core_if->core_params->max_transfer_size; +} + +int dwc_otg_set_param_max_packet_count(dwc_otg_core_if_t * core_if, int32_t val) +{ + int retval = 0; + + if (DWC_OTG_PARAM_TEST(val, 15, 511)) { + DWC_WARN("Wrong value for max_packet_count\n"); + DWC_WARN("max_packet_count must be 15-511\n"); + return -DWC_E_INVALID; + } + + if (val > (1 << (core_if->hwcfg3.b.packet_size_cntr_width + 4))) { + if (dwc_otg_param_initialized + (core_if->core_params->max_packet_count)) { + DWC_ERROR + ("%d invalid for max_packet_count. Check HW configuration.\n", + val); + } + val = + ((1 << (core_if->hwcfg3.b.packet_size_cntr_width + 4)) - 1); + retval = -DWC_E_INVALID; + } + + core_if->core_params->max_packet_count = val; + return retval; +} + +int32_t dwc_otg_get_param_max_packet_count(dwc_otg_core_if_t * core_if) +{ + return core_if->core_params->max_packet_count; +} + +int dwc_otg_set_param_host_channels(dwc_otg_core_if_t * core_if, int32_t val) +{ + int retval = 0; + + if (DWC_OTG_PARAM_TEST(val, 1, 16)) { + DWC_WARN("Wrong value for host_channels\n"); + DWC_WARN("host_channels must be 1-16\n"); + return -DWC_E_INVALID; + } + + if (val > (core_if->hwcfg2.b.num_host_chan + 1)) { + if (dwc_otg_param_initialized + (core_if->core_params->host_channels)) { + DWC_ERROR + ("%d invalid for host_channels. Check HW configurations.\n", + val); + } + val = (core_if->hwcfg2.b.num_host_chan + 1); + retval = -DWC_E_INVALID; + } + + core_if->core_params->host_channels = val; + return retval; +} + +int32_t dwc_otg_get_param_host_channels(dwc_otg_core_if_t * core_if) +{ + return core_if->core_params->host_channels; +} + +int dwc_otg_set_param_dev_endpoints(dwc_otg_core_if_t * core_if, int32_t val) +{ + int retval = 0; + + if (DWC_OTG_PARAM_TEST(val, 1, 15)) { + DWC_WARN("Wrong value for dev_endpoints\n"); + DWC_WARN("dev_endpoints must be 1-15\n"); + return -DWC_E_INVALID; + } + + if (val > (core_if->hwcfg2.b.num_dev_ep)) { + if (dwc_otg_param_initialized + (core_if->core_params->dev_endpoints)) { + DWC_ERROR + ("%d invalid for dev_endpoints. Check HW configurations.\n", + val); + } + val = core_if->hwcfg2.b.num_dev_ep; + retval = -DWC_E_INVALID; + } + + core_if->core_params->dev_endpoints = val; + return retval; +} + +int32_t dwc_otg_get_param_dev_endpoints(dwc_otg_core_if_t * core_if) +{ + return core_if->core_params->dev_endpoints; +} + +int dwc_otg_set_param_phy_type(dwc_otg_core_if_t * core_if, int32_t val) +{ + int retval = 0; + int valid = 0; + + if (DWC_OTG_PARAM_TEST(val, 0, 2)) { + DWC_WARN("Wrong value for phy_type\n"); + DWC_WARN("phy_type must be 0,1 or 2\n"); + return -DWC_E_INVALID; + } +#ifndef NO_FS_PHY_HW_CHECKS + if ((val == DWC_PHY_TYPE_PARAM_UTMI) && + ((core_if->hwcfg2.b.hs_phy_type == 1) || + (core_if->hwcfg2.b.hs_phy_type == 3))) { + valid = 1; + } else if ((val == DWC_PHY_TYPE_PARAM_ULPI) && + ((core_if->hwcfg2.b.hs_phy_type == 2) || + (core_if->hwcfg2.b.hs_phy_type == 3))) { + valid = 1; + } else if ((val == DWC_PHY_TYPE_PARAM_FS) && + (core_if->hwcfg2.b.fs_phy_type == 1)) { + valid = 1; + } + if (!valid) { + if (dwc_otg_param_initialized(core_if->core_params->phy_type)) { + DWC_ERROR + ("%d invalid for phy_type. Check HW configurations.\n", + val); + } + if (core_if->hwcfg2.b.hs_phy_type) { + if ((core_if->hwcfg2.b.hs_phy_type == 3) || + (core_if->hwcfg2.b.hs_phy_type == 1)) { + val = DWC_PHY_TYPE_PARAM_UTMI; + } else { + val = DWC_PHY_TYPE_PARAM_ULPI; + } + } + retval = -DWC_E_INVALID; + } +#endif + core_if->core_params->phy_type = val; + return retval; +} + +int32_t dwc_otg_get_param_phy_type(dwc_otg_core_if_t * core_if) +{ + return core_if->core_params->phy_type; +} + +int dwc_otg_set_param_speed(dwc_otg_core_if_t * core_if, int32_t val) +{ + int retval = 0; + if (DWC_OTG_PARAM_TEST(val, 0, 1)) { + DWC_WARN("Wrong value for speed parameter\n"); + DWC_WARN("max_speed parameter must be 0 or 1\n"); + return -DWC_E_INVALID; + } + if ((val == 0) + && dwc_otg_get_param_phy_type(core_if) == DWC_PHY_TYPE_PARAM_FS) { + if (dwc_otg_param_initialized(core_if->core_params->speed)) { + DWC_ERROR + ("%d invalid for speed paremter. Check HW configuration.\n", + val); + } + val = + (dwc_otg_get_param_phy_type(core_if) == + DWC_PHY_TYPE_PARAM_FS ? 1 : 0); + retval = -DWC_E_INVALID; + } + core_if->core_params->speed = val; + return retval; +} + +int32_t dwc_otg_get_param_speed(dwc_otg_core_if_t * core_if) +{ + return core_if->core_params->speed; +} + +int dwc_otg_set_param_host_ls_low_power_phy_clk(dwc_otg_core_if_t * core_if, + int32_t val) +{ + int retval = 0; + + if (DWC_OTG_PARAM_TEST(val, 0, 1)) { + DWC_WARN + ("Wrong value for host_ls_low_power_phy_clk parameter\n"); + DWC_WARN("host_ls_low_power_phy_clk must be 0 or 1\n"); + return -DWC_E_INVALID; + } + + if ((val == DWC_HOST_LS_LOW_POWER_PHY_CLK_PARAM_48MHZ) + && (dwc_otg_get_param_phy_type(core_if) == DWC_PHY_TYPE_PARAM_FS)) { + if (dwc_otg_param_initialized + (core_if->core_params->host_ls_low_power_phy_clk)) { + DWC_ERROR + ("%d invalid for host_ls_low_power_phy_clk. Check HW configuration.\n", + val); + } + val = + (dwc_otg_get_param_phy_type(core_if) == + DWC_PHY_TYPE_PARAM_FS) ? + DWC_HOST_LS_LOW_POWER_PHY_CLK_PARAM_6MHZ : + DWC_HOST_LS_LOW_POWER_PHY_CLK_PARAM_48MHZ; + retval = -DWC_E_INVALID; + } + + core_if->core_params->host_ls_low_power_phy_clk = val; + return retval; +} + +int32_t dwc_otg_get_param_host_ls_low_power_phy_clk(dwc_otg_core_if_t * core_if) +{ + return core_if->core_params->host_ls_low_power_phy_clk; +} + +int dwc_otg_set_param_phy_ulpi_ddr(dwc_otg_core_if_t * core_if, int32_t val) +{ + if (DWC_OTG_PARAM_TEST(val, 0, 1)) { + DWC_WARN("Wrong value for phy_ulpi_ddr\n"); + DWC_WARN("phy_upli_ddr must be 0 or 1\n"); + return -DWC_E_INVALID; + } + + core_if->core_params->phy_ulpi_ddr = val; + return 0; +} + +int32_t dwc_otg_get_param_phy_ulpi_ddr(dwc_otg_core_if_t * core_if) +{ + return core_if->core_params->phy_ulpi_ddr; +} + +int dwc_otg_set_param_phy_ulpi_ext_vbus(dwc_otg_core_if_t * core_if, + int32_t val) +{ + if (DWC_OTG_PARAM_TEST(val, 0, 1)) { + DWC_WARN("Wrong valaue for phy_ulpi_ext_vbus\n"); + DWC_WARN("phy_ulpi_ext_vbus must be 0 or 1\n"); + return -DWC_E_INVALID; + } + + core_if->core_params->phy_ulpi_ext_vbus = val; + return 0; +} + +int32_t dwc_otg_get_param_phy_ulpi_ext_vbus(dwc_otg_core_if_t * core_if) +{ + return core_if->core_params->phy_ulpi_ext_vbus; +} + +int dwc_otg_set_param_phy_utmi_width(dwc_otg_core_if_t * core_if, int32_t val) +{ + if (DWC_OTG_PARAM_TEST(val, 8, 8) && DWC_OTG_PARAM_TEST(val, 16, 16)) { + DWC_WARN("Wrong valaue for phy_utmi_width\n"); + DWC_WARN("phy_utmi_width must be 8 or 16\n"); + return -DWC_E_INVALID; + } + + core_if->core_params->phy_utmi_width = val; + return 0; +} + +int32_t dwc_otg_get_param_phy_utmi_width(dwc_otg_core_if_t * core_if) +{ + return core_if->core_params->phy_utmi_width; +} + +int dwc_otg_set_param_ulpi_fs_ls(dwc_otg_core_if_t * core_if, int32_t val) +{ + if (DWC_OTG_PARAM_TEST(val, 0, 1)) { + DWC_WARN("Wrong valaue for ulpi_fs_ls\n"); + DWC_WARN("ulpi_fs_ls must be 0 or 1\n"); + return -DWC_E_INVALID; + } + + core_if->core_params->ulpi_fs_ls = val; + return 0; +} + +int32_t dwc_otg_get_param_ulpi_fs_ls(dwc_otg_core_if_t * core_if) +{ + return core_if->core_params->ulpi_fs_ls; +} + +int dwc_otg_set_param_ts_dline(dwc_otg_core_if_t * core_if, int32_t val) +{ + if (DWC_OTG_PARAM_TEST(val, 0, 1)) { + DWC_WARN("Wrong valaue for ts_dline\n"); + DWC_WARN("ts_dline must be 0 or 1\n"); + return -DWC_E_INVALID; + } + + core_if->core_params->ts_dline = val; + return 0; +} + +int32_t dwc_otg_get_param_ts_dline(dwc_otg_core_if_t * core_if) +{ + return core_if->core_params->ts_dline; +} + +int dwc_otg_set_param_i2c_enable(dwc_otg_core_if_t * core_if, int32_t val) +{ + int retval = 0; + if (DWC_OTG_PARAM_TEST(val, 0, 1)) { + DWC_WARN("Wrong valaue for i2c_enable\n"); + DWC_WARN("i2c_enable must be 0 or 1\n"); + return -DWC_E_INVALID; + } +#ifndef NO_FS_PHY_HW_CHECK + if (val == 1 && core_if->hwcfg3.b.i2c == 0) { + if (dwc_otg_param_initialized(core_if->core_params->i2c_enable)) { + DWC_ERROR + ("%d invalid for i2c_enable. Check HW configuration.\n", + val); + } + val = 0; + retval = -DWC_E_INVALID; + } +#endif + + core_if->core_params->i2c_enable = val; + return retval; +} + +int32_t dwc_otg_get_param_i2c_enable(dwc_otg_core_if_t * core_if) +{ + return core_if->core_params->i2c_enable; +} + +int dwc_otg_set_param_dev_perio_tx_fifo_size(dwc_otg_core_if_t * core_if, + int32_t val, int fifo_num) +{ + int retval = 0; + + if (DWC_OTG_PARAM_TEST(val, 4, 768)) { + DWC_WARN("Wrong value for dev_perio_tx_fifo_size\n"); + DWC_WARN("dev_perio_tx_fifo_size must be 4-768\n"); + return -DWC_E_INVALID; + } + + if (val > + (DWC_READ_REG32(&core_if->core_global_regs->dtxfsiz[fifo_num]))) { + if (dwc_otg_param_initialized + (core_if->core_params->dev_perio_tx_fifo_size[fifo_num])) { + DWC_ERROR + ("`%d' invalid for parameter `dev_perio_fifo_size_%d'. Check HW configuration.\n", + val, fifo_num); + } + val = (DWC_READ_REG32(&core_if->core_global_regs->dtxfsiz[fifo_num])); + retval = -DWC_E_INVALID; + } + + core_if->core_params->dev_perio_tx_fifo_size[fifo_num] = val; + return retval; +} + +int32_t dwc_otg_get_param_dev_perio_tx_fifo_size(dwc_otg_core_if_t * core_if, + int fifo_num) +{ + return core_if->core_params->dev_perio_tx_fifo_size[fifo_num]; +} + +int dwc_otg_set_param_en_multiple_tx_fifo(dwc_otg_core_if_t * core_if, + int32_t val) +{ + int retval = 0; + if (DWC_OTG_PARAM_TEST(val, 0, 1)) { + DWC_WARN("Wrong valaue for en_multiple_tx_fifo,\n"); + DWC_WARN("en_multiple_tx_fifo must be 0 or 1\n"); + return -DWC_E_INVALID; + } + + if (val == 1 && core_if->hwcfg4.b.ded_fifo_en == 0) { + if (dwc_otg_param_initialized + (core_if->core_params->en_multiple_tx_fifo)) { + DWC_ERROR + ("%d invalid for parameter en_multiple_tx_fifo. Check HW configuration.\n", + val); + } + val = 0; + retval = -DWC_E_INVALID; + } + + core_if->core_params->en_multiple_tx_fifo = val; + return retval; +} + +int32_t dwc_otg_get_param_en_multiple_tx_fifo(dwc_otg_core_if_t * core_if) +{ + return core_if->core_params->en_multiple_tx_fifo; +} + +int dwc_otg_set_param_dev_tx_fifo_size(dwc_otg_core_if_t * core_if, int32_t val, + int fifo_num) +{ + int retval = 0; + + if (DWC_OTG_PARAM_TEST(val, 4, 768)) { + DWC_WARN("Wrong value for dev_tx_fifo_size\n"); + DWC_WARN("dev_tx_fifo_size must be 4-768\n"); + return -DWC_E_INVALID; + } + + if (val > + (DWC_READ_REG32(&core_if->core_global_regs->dtxfsiz[fifo_num]))) { + if (dwc_otg_param_initialized + (core_if->core_params->dev_tx_fifo_size[fifo_num])) { + DWC_ERROR + ("`%d' invalid for parameter `dev_tx_fifo_size_%d'. Check HW configuration.\n", + val, fifo_num); + } + val = (DWC_READ_REG32(&core_if->core_global_regs->dtxfsiz[fifo_num])); + retval = -DWC_E_INVALID; + } + + core_if->core_params->dev_tx_fifo_size[fifo_num] = val; + return retval; +} + +int32_t dwc_otg_get_param_dev_tx_fifo_size(dwc_otg_core_if_t * core_if, + int fifo_num) +{ + return core_if->core_params->dev_tx_fifo_size[fifo_num]; +} + +int dwc_otg_set_param_thr_ctl(dwc_otg_core_if_t * core_if, int32_t val) +{ + int retval = 0; + + if (DWC_OTG_PARAM_TEST(val, 0, 7)) { + DWC_WARN("Wrong value for thr_ctl\n"); + DWC_WARN("thr_ctl must be 0-7\n"); + return -DWC_E_INVALID; + } + + if ((val != 0) && + (!dwc_otg_get_param_dma_enable(core_if) || + !core_if->hwcfg4.b.ded_fifo_en)) { + if (dwc_otg_param_initialized(core_if->core_params->thr_ctl)) { + DWC_ERROR + ("%d invalid for parameter thr_ctl. Check HW configuration.\n", + val); + } + val = 0; + retval = -DWC_E_INVALID; + } + + core_if->core_params->thr_ctl = val; + return retval; +} + +int32_t dwc_otg_get_param_thr_ctl(dwc_otg_core_if_t * core_if) +{ + return core_if->core_params->thr_ctl; +} + +int dwc_otg_set_param_lpm_enable(dwc_otg_core_if_t * core_if, int32_t val) +{ + int retval = 0; + + if (DWC_OTG_PARAM_TEST(val, 0, 1)) { + DWC_WARN("Wrong value for lpm_enable\n"); + DWC_WARN("lpm_enable must be 0 or 1\n"); + return -DWC_E_INVALID; + } + + if (val && !core_if->hwcfg3.b.otg_lpm_en) { + if (dwc_otg_param_initialized(core_if->core_params->lpm_enable)) { + DWC_ERROR + ("%d invalid for parameter lpm_enable. Check HW configuration.\n", + val); + } + val = 0; + retval = -DWC_E_INVALID; + } + + core_if->core_params->lpm_enable = val; + return retval; +} + +int32_t dwc_otg_get_param_lpm_enable(dwc_otg_core_if_t * core_if) +{ + return core_if->core_params->lpm_enable; +} + +int dwc_otg_set_param_tx_thr_length(dwc_otg_core_if_t * core_if, int32_t val) +{ + if (DWC_OTG_PARAM_TEST(val, 8, 128)) { + DWC_WARN("Wrong valaue for tx_thr_length\n"); + DWC_WARN("tx_thr_length must be 8 - 128\n"); + return -DWC_E_INVALID; + } + + core_if->core_params->tx_thr_length = val; + return 0; +} + +int32_t dwc_otg_get_param_tx_thr_length(dwc_otg_core_if_t * core_if) +{ + return core_if->core_params->tx_thr_length; +} + +int dwc_otg_set_param_rx_thr_length(dwc_otg_core_if_t * core_if, int32_t val) +{ + if (DWC_OTG_PARAM_TEST(val, 8, 128)) { + DWC_WARN("Wrong valaue for rx_thr_length\n"); + DWC_WARN("rx_thr_length must be 8 - 128\n"); + return -DWC_E_INVALID; + } + + core_if->core_params->rx_thr_length = val; + return 0; +} + +int32_t dwc_otg_get_param_rx_thr_length(dwc_otg_core_if_t * core_if) +{ + return core_if->core_params->rx_thr_length; +} + +int dwc_otg_set_param_dma_burst_size(dwc_otg_core_if_t * core_if, int32_t val) +{ + if (DWC_OTG_PARAM_TEST(val, 1, 1) && + DWC_OTG_PARAM_TEST(val, 4, 4) && + DWC_OTG_PARAM_TEST(val, 8, 8) && + DWC_OTG_PARAM_TEST(val, 16, 16) && + DWC_OTG_PARAM_TEST(val, 32, 32) && + DWC_OTG_PARAM_TEST(val, 64, 64) && + DWC_OTG_PARAM_TEST(val, 128, 128) && + DWC_OTG_PARAM_TEST(val, 256, 256)) { + DWC_WARN("`%d' invalid for parameter `dma_burst_size'\n", val); + return -DWC_E_INVALID; + } + core_if->core_params->dma_burst_size = val; + return 0; +} + +int32_t dwc_otg_get_param_dma_burst_size(dwc_otg_core_if_t * core_if) +{ + return core_if->core_params->dma_burst_size; +} + +int dwc_otg_set_param_pti_enable(dwc_otg_core_if_t * core_if, int32_t val) +{ + int retval = 0; + if (DWC_OTG_PARAM_TEST(val, 0, 1)) { + DWC_WARN("`%d' invalid for parameter `pti_enable'\n", val); + return -DWC_E_INVALID; + } + if (val && (core_if->snpsid < OTG_CORE_REV_2_72a)) { + if (dwc_otg_param_initialized(core_if->core_params->pti_enable)) { + DWC_ERROR + ("%d invalid for parameter pti_enable. Check HW configuration.\n", + val); + } + retval = -DWC_E_INVALID; + val = 0; + } + core_if->core_params->pti_enable = val; + return retval; +} + +int32_t dwc_otg_get_param_pti_enable(dwc_otg_core_if_t * core_if) +{ + return core_if->core_params->pti_enable; +} + +int dwc_otg_set_param_mpi_enable(dwc_otg_core_if_t * core_if, int32_t val) +{ + int retval = 0; + if (DWC_OTG_PARAM_TEST(val, 0, 1)) { + DWC_WARN("`%d' invalid for parameter `mpi_enable'\n", val); + return -DWC_E_INVALID; + } + if (val && (core_if->hwcfg2.b.multi_proc_int == 0)) { + if (dwc_otg_param_initialized(core_if->core_params->mpi_enable)) { + DWC_ERROR + ("%d invalid for parameter mpi_enable. Check HW configuration.\n", + val); + } + retval = -DWC_E_INVALID; + val = 0; + } + core_if->core_params->mpi_enable = val; + return retval; +} + +int32_t dwc_otg_get_param_mpi_enable(dwc_otg_core_if_t * core_if) +{ + return core_if->core_params->mpi_enable; +} + +int dwc_otg_set_param_adp_enable(dwc_otg_core_if_t * core_if, int32_t val) +{ + int retval = 0; + if (DWC_OTG_PARAM_TEST(val, 0, 1)) { + DWC_WARN("`%d' invalid for parameter `adp_enable'\n", val); + return -DWC_E_INVALID; + } + if (val && (core_if->hwcfg3.b.adp_supp == 0)) { + if (dwc_otg_param_initialized + (core_if->core_params->adp_supp_enable)) { + DWC_ERROR + ("%d invalid for parameter adp_enable. Check HW configuration.\n", + val); + } + retval = -DWC_E_INVALID; + val = 0; + } + core_if->core_params->adp_supp_enable = val; + /*Set OTG version 2.0 in case of enabling ADP*/ + if (val) + dwc_otg_set_param_otg_ver(core_if, 1); + + return retval; +} + +int32_t dwc_otg_get_param_adp_enable(dwc_otg_core_if_t * core_if) +{ + return core_if->core_params->adp_supp_enable; +} + +int dwc_otg_set_param_ic_usb_cap(dwc_otg_core_if_t * core_if, int32_t val) +{ + int retval = 0; + if (DWC_OTG_PARAM_TEST(val, 0, 1)) { + DWC_WARN("`%d' invalid for parameter `ic_usb_cap'\n", val); + DWC_WARN("ic_usb_cap must be 0 or 1\n"); + return -DWC_E_INVALID; + } + + if (val && (core_if->hwcfg2.b.otg_enable_ic_usb == 0)) { + if (dwc_otg_param_initialized(core_if->core_params->ic_usb_cap)) { + DWC_ERROR + ("%d invalid for parameter ic_usb_cap. Check HW configuration.\n", + val); + } + retval = -DWC_E_INVALID; + val = 0; + } + core_if->core_params->ic_usb_cap = val; + return retval; +} + +int32_t dwc_otg_get_param_ic_usb_cap(dwc_otg_core_if_t * core_if) +{ + return core_if->core_params->ic_usb_cap; +} + +int dwc_otg_set_param_ahb_thr_ratio(dwc_otg_core_if_t * core_if, int32_t val) +{ + int retval = 0; + int valid = 1; + + if (DWC_OTG_PARAM_TEST(val, 0, 3)) { + DWC_WARN("`%d' invalid for parameter `ahb_thr_ratio'\n", val); + DWC_WARN("ahb_thr_ratio must be 0 - 3\n"); + return -DWC_E_INVALID; + } + + if (val + && (core_if->snpsid < OTG_CORE_REV_2_81a + || !dwc_otg_get_param_thr_ctl(core_if))) { + valid = 0; + } else if (val + && ((dwc_otg_get_param_tx_thr_length(core_if) / (1 << val)) < + 4)) { + valid = 0; + } + if (valid == 0) { + if (dwc_otg_param_initialized + (core_if->core_params->ahb_thr_ratio)) { + DWC_ERROR + ("%d invalid for parameter ahb_thr_ratio. Check HW configuration.\n", + val); + } + retval = -DWC_E_INVALID; + val = 0; + } + + core_if->core_params->ahb_thr_ratio = val; + return retval; +} + +int32_t dwc_otg_get_param_ahb_thr_ratio(dwc_otg_core_if_t * core_if) +{ + return core_if->core_params->ahb_thr_ratio; +} + +int dwc_otg_set_param_power_down(dwc_otg_core_if_t * core_if, int32_t val) +{ + int retval = 0; + int valid = 1; + hwcfg4_data_t hwcfg4 = {.d32 = 0 }; + hwcfg4.d32 = DWC_READ_REG32(&core_if->core_global_regs->ghwcfg4); + + if (DWC_OTG_PARAM_TEST(val, 0, 3)) { + DWC_WARN("`%d' invalid for parameter `power_down'\n", val); + DWC_WARN("power_down must be 0 - 2\n"); + return -DWC_E_INVALID; + } + + if ((val == 2) && (core_if->snpsid < OTG_CORE_REV_2_91a)) { + valid = 0; + } + if ((val == 3) + && ((core_if->snpsid < OTG_CORE_REV_3_00a) + || (hwcfg4.b.xhiber == 0))) { + valid = 0; + } + if (valid == 0) { + if (dwc_otg_param_initialized(core_if->core_params->power_down)) { + DWC_ERROR + ("%d invalid for parameter power_down. Check HW configuration.\n", + val); + } + retval = -DWC_E_INVALID; + val = 0; + } + core_if->core_params->power_down = val; + return retval; +} + +int32_t dwc_otg_get_param_power_down(dwc_otg_core_if_t * core_if) +{ + return core_if->core_params->power_down; +} + +int dwc_otg_set_param_reload_ctl(dwc_otg_core_if_t * core_if, int32_t val) +{ + int retval = 0; + int valid = 1; + + if (DWC_OTG_PARAM_TEST(val, 0, 1)) { + DWC_WARN("`%d' invalid for parameter `reload_ctl'\n", val); + DWC_WARN("reload_ctl must be 0 or 1\n"); + return -DWC_E_INVALID; + } + + if ((val == 1) && (core_if->snpsid < OTG_CORE_REV_2_92a)) { + valid = 0; + } + if (valid == 0) { + if (dwc_otg_param_initialized(core_if->core_params->reload_ctl)) { + DWC_ERROR("%d invalid for parameter reload_ctl." + "Check HW configuration.\n", val); + } + retval = -DWC_E_INVALID; + val = 0; + } + core_if->core_params->reload_ctl = val; + return retval; +} + +int32_t dwc_otg_get_param_reload_ctl(dwc_otg_core_if_t * core_if) +{ + return core_if->core_params->reload_ctl; +} + +int dwc_otg_set_param_dev_out_nak(dwc_otg_core_if_t * core_if, int32_t val) +{ + int retval = 0; + int valid = 1; + + if (DWC_OTG_PARAM_TEST(val, 0, 1)) { + DWC_WARN("`%d' invalid for parameter `dev_out_nak'\n", val); + DWC_WARN("dev_out_nak must be 0 or 1\n"); + return -DWC_E_INVALID; + } + + if ((val == 1) && ((core_if->snpsid < OTG_CORE_REV_2_93a) || + !(core_if->core_params->dma_desc_enable))) { + valid = 0; + } + if (valid == 0) { + if (dwc_otg_param_initialized(core_if->core_params->dev_out_nak)) { + DWC_ERROR("%d invalid for parameter dev_out_nak." + "Check HW configuration.\n", val); + } + retval = -DWC_E_INVALID; + val = 0; + } + core_if->core_params->dev_out_nak = val; + return retval; +} + +int32_t dwc_otg_get_param_dev_out_nak(dwc_otg_core_if_t * core_if) +{ + return core_if->core_params->dev_out_nak; +} + +int dwc_otg_set_param_cont_on_bna(dwc_otg_core_if_t * core_if, int32_t val) +{ + int retval = 0; + int valid = 1; + + if (DWC_OTG_PARAM_TEST(val, 0, 1)) { + DWC_WARN("`%d' invalid for parameter `cont_on_bna'\n", val); + DWC_WARN("cont_on_bna must be 0 or 1\n"); + return -DWC_E_INVALID; + } + + if ((val == 1) && ((core_if->snpsid < OTG_CORE_REV_2_94a) || + !(core_if->core_params->dma_desc_enable))) { + valid = 0; + } + if (valid == 0) { + if (dwc_otg_param_initialized(core_if->core_params->cont_on_bna)) { + DWC_ERROR("%d invalid for parameter cont_on_bna." + "Check HW configuration.\n", val); + } + retval = -DWC_E_INVALID; + val = 0; + } + core_if->core_params->cont_on_bna = val; + return retval; +} + +int32_t dwc_otg_get_param_cont_on_bna(dwc_otg_core_if_t * core_if) +{ + return core_if->core_params->cont_on_bna; +} + +int dwc_otg_set_param_ahb_single(dwc_otg_core_if_t * core_if, int32_t val) +{ + int retval = 0; + int valid = 1; + + if (DWC_OTG_PARAM_TEST(val, 0, 1)) { + DWC_WARN("`%d' invalid for parameter `ahb_single'\n", val); + DWC_WARN("ahb_single must be 0 or 1\n"); + return -DWC_E_INVALID; + } + + if ((val == 1) && (core_if->snpsid < OTG_CORE_REV_2_94a)) { + valid = 0; + } + if (valid == 0) { + if (dwc_otg_param_initialized(core_if->core_params->ahb_single)) { + DWC_ERROR("%d invalid for parameter ahb_single." + "Check HW configuration.\n", val); + } + retval = -DWC_E_INVALID; + val = 0; + } + core_if->core_params->ahb_single = val; + return retval; +} + +int32_t dwc_otg_get_param_ahb_single(dwc_otg_core_if_t * core_if) +{ + return core_if->core_params->ahb_single; +} + +int dwc_otg_set_param_otg_ver(dwc_otg_core_if_t * core_if, int32_t val) +{ + int retval = 0; + + if (DWC_OTG_PARAM_TEST(val, 0, 1)) { + DWC_WARN("`%d' invalid for parameter `otg_ver'\n", val); + DWC_WARN + ("otg_ver must be 0(for OTG 1.3 support) or 1(for OTG 2.0 support)\n"); + return -DWC_E_INVALID; + } + + core_if->core_params->otg_ver = val; + return retval; +} + +int32_t dwc_otg_get_param_otg_ver(dwc_otg_core_if_t * core_if) +{ + return core_if->core_params->otg_ver; +} + +uint32_t dwc_otg_get_hnpstatus(dwc_otg_core_if_t * core_if) +{ + gotgctl_data_t otgctl; + otgctl.d32 = DWC_READ_REG32(&core_if->core_global_regs->gotgctl); + return otgctl.b.hstnegscs; +} + +uint32_t dwc_otg_get_srpstatus(dwc_otg_core_if_t * core_if) +{ + gotgctl_data_t otgctl; + otgctl.d32 = DWC_READ_REG32(&core_if->core_global_regs->gotgctl); + return otgctl.b.sesreqscs; +} + +void dwc_otg_set_hnpreq(dwc_otg_core_if_t * core_if, uint32_t val) +{ + if(core_if->otg_ver == 0) { + gotgctl_data_t otgctl; + otgctl.d32 = DWC_READ_REG32(&core_if->core_global_regs->gotgctl); + otgctl.b.hnpreq = val; + DWC_WRITE_REG32(&core_if->core_global_regs->gotgctl, otgctl.d32); + } else { + core_if->otg_sts = val; + } +} + +uint32_t dwc_otg_get_gsnpsid(dwc_otg_core_if_t * core_if) +{ + return core_if->snpsid; +} + +uint32_t dwc_otg_get_mode(dwc_otg_core_if_t * core_if) +{ + gintsts_data_t gintsts; + gintsts.d32 = DWC_READ_REG32(&core_if->core_global_regs->gintsts); + return gintsts.b.curmode; +} + +uint32_t dwc_otg_get_hnpcapable(dwc_otg_core_if_t * core_if) +{ + gusbcfg_data_t usbcfg; + usbcfg.d32 = DWC_READ_REG32(&core_if->core_global_regs->gusbcfg); + return usbcfg.b.hnpcap; +} + +void dwc_otg_set_hnpcapable(dwc_otg_core_if_t * core_if, uint32_t val) +{ + gusbcfg_data_t usbcfg; + usbcfg.d32 = DWC_READ_REG32(&core_if->core_global_regs->gusbcfg); + usbcfg.b.hnpcap = val; + DWC_WRITE_REG32(&core_if->core_global_regs->gusbcfg, usbcfg.d32); +} + +uint32_t dwc_otg_get_srpcapable(dwc_otg_core_if_t * core_if) +{ + gusbcfg_data_t usbcfg; + usbcfg.d32 = DWC_READ_REG32(&core_if->core_global_regs->gusbcfg); + return usbcfg.b.srpcap; +} + +void dwc_otg_set_srpcapable(dwc_otg_core_if_t * core_if, uint32_t val) +{ + gusbcfg_data_t usbcfg; + usbcfg.d32 = DWC_READ_REG32(&core_if->core_global_regs->gusbcfg); + usbcfg.b.srpcap = val; + DWC_WRITE_REG32(&core_if->core_global_regs->gusbcfg, usbcfg.d32); +} + +uint32_t dwc_otg_get_devspeed(dwc_otg_core_if_t * core_if) +{ + dcfg_data_t dcfg; + /* originally: dcfg.d32 = DWC_READ_REG32(&core_if->dev_if->dev_global_regs->dcfg); */ + + dcfg.d32 = -1; //GRAYG + DWC_DEBUGPL(DBG_CILV, "%s - core_if(%p)\n", __func__, core_if); + if (NULL == core_if) + DWC_ERROR("reg request with NULL core_if\n"); + DWC_DEBUGPL(DBG_CILV, "%s - core_if(%p)->dev_if(%p)\n", __func__, + core_if, core_if->dev_if); + if (NULL == core_if->dev_if) + DWC_ERROR("reg request with NULL dev_if\n"); + DWC_DEBUGPL(DBG_CILV, "%s - core_if(%p)->dev_if(%p)->" + "dev_global_regs(%p)\n", __func__, + core_if, core_if->dev_if, + core_if->dev_if->dev_global_regs); + if (NULL == core_if->dev_if->dev_global_regs) + DWC_ERROR("reg request with NULL dev_global_regs\n"); + else { + DWC_DEBUGPL(DBG_CILV, "%s - &core_if(%p)->dev_if(%p)->" + "dev_global_regs(%p)->dcfg = %p\n", __func__, + core_if, core_if->dev_if, + core_if->dev_if->dev_global_regs, + &core_if->dev_if->dev_global_regs->dcfg); + dcfg.d32 = DWC_READ_REG32(&core_if->dev_if->dev_global_regs->dcfg); + } + return dcfg.b.devspd; +} + +void dwc_otg_set_devspeed(dwc_otg_core_if_t * core_if, uint32_t val) +{ + dcfg_data_t dcfg; + dcfg.d32 = DWC_READ_REG32(&core_if->dev_if->dev_global_regs->dcfg); + dcfg.b.devspd = val; + DWC_WRITE_REG32(&core_if->dev_if->dev_global_regs->dcfg, dcfg.d32); +} + +uint32_t dwc_otg_get_busconnected(dwc_otg_core_if_t * core_if) +{ + hprt0_data_t hprt0; + hprt0.d32 = DWC_READ_REG32(core_if->host_if->hprt0); + return hprt0.b.prtconnsts; +} + +uint32_t dwc_otg_get_enumspeed(dwc_otg_core_if_t * core_if) +{ + dsts_data_t dsts; + dsts.d32 = DWC_READ_REG32(&core_if->dev_if->dev_global_regs->dsts); + return dsts.b.enumspd; +} + +uint32_t dwc_otg_get_prtpower(dwc_otg_core_if_t * core_if) +{ + hprt0_data_t hprt0; + hprt0.d32 = DWC_READ_REG32(core_if->host_if->hprt0); + return hprt0.b.prtpwr; + +} + +uint32_t dwc_otg_get_core_state(dwc_otg_core_if_t * core_if) +{ + return core_if->hibernation_suspend; +} + +void dwc_otg_set_prtpower(dwc_otg_core_if_t * core_if, uint32_t val) +{ + hprt0_data_t hprt0; + hprt0.d32 = dwc_otg_read_hprt0(core_if); + hprt0.b.prtpwr = val; + DWC_WRITE_REG32(core_if->host_if->hprt0, hprt0.d32); +} + +uint32_t dwc_otg_get_prtsuspend(dwc_otg_core_if_t * core_if) +{ + hprt0_data_t hprt0; + hprt0.d32 = DWC_READ_REG32(core_if->host_if->hprt0); + return hprt0.b.prtsusp; + +} + +void dwc_otg_set_prtsuspend(dwc_otg_core_if_t * core_if, uint32_t val) +{ + hprt0_data_t hprt0; + hprt0.d32 = dwc_otg_read_hprt0(core_if); + hprt0.b.prtsusp = val; + DWC_WRITE_REG32(core_if->host_if->hprt0, hprt0.d32); +} + +uint32_t dwc_otg_get_fr_interval(dwc_otg_core_if_t * core_if) +{ + hfir_data_t hfir; + hfir.d32 = DWC_READ_REG32(&core_if->host_if->host_global_regs->hfir); + return hfir.b.frint; + +} + +void dwc_otg_set_fr_interval(dwc_otg_core_if_t * core_if, uint32_t val) +{ + hfir_data_t hfir; + uint32_t fram_int; + fram_int = calc_frame_interval(core_if); + hfir.d32 = DWC_READ_REG32(&core_if->host_if->host_global_regs->hfir); + if (!core_if->core_params->reload_ctl) { + DWC_WARN("\nCannot reload HFIR register.HFIR.HFIRRldCtrl bit is" + "not set to 1.\nShould load driver with reload_ctl=1" + " module parameter\n"); + return; + } + switch (fram_int) { + case 3750: + if ((val < 3350) || (val > 4150)) { + DWC_WARN("HFIR interval for HS core and 30 MHz" + "clock freq should be from 3350 to 4150\n"); + return; + } + break; + case 30000: + if ((val < 26820) || (val > 33180)) { + DWC_WARN("HFIR interval for FS/LS core and 30 MHz" + "clock freq should be from 26820 to 33180\n"); + return; + } + break; + case 6000: + if ((val < 5360) || (val > 6640)) { + DWC_WARN("HFIR interval for HS core and 48 MHz" + "clock freq should be from 5360 to 6640\n"); + return; + } + break; + case 48000: + if ((val < 42912) || (val > 53088)) { + DWC_WARN("HFIR interval for FS/LS core and 48 MHz" + "clock freq should be from 42912 to 53088\n"); + return; + } + break; + case 7500: + if ((val < 6700) || (val > 8300)) { + DWC_WARN("HFIR interval for HS core and 60 MHz" + "clock freq should be from 6700 to 8300\n"); + return; + } + break; + case 60000: + if ((val < 53640) || (val > 65536)) { + DWC_WARN("HFIR interval for FS/LS core and 60 MHz" + "clock freq should be from 53640 to 65536\n"); + return; + } + break; + default: + DWC_WARN("Unknown frame interval\n"); + return; + break; + + } + hfir.b.frint = val; + DWC_WRITE_REG32(&core_if->host_if->host_global_regs->hfir, hfir.d32); +} + +uint32_t dwc_otg_get_mode_ch_tim(dwc_otg_core_if_t * core_if) +{ + hcfg_data_t hcfg; + hcfg.d32 = DWC_READ_REG32(&core_if->host_if->host_global_regs->hcfg); + return hcfg.b.modechtimen; + +} + +void dwc_otg_set_mode_ch_tim(dwc_otg_core_if_t * core_if, uint32_t val) +{ + hcfg_data_t hcfg; + hcfg.d32 = DWC_READ_REG32(&core_if->host_if->host_global_regs->hcfg); + hcfg.b.modechtimen = val; + DWC_WRITE_REG32(&core_if->host_if->host_global_regs->hcfg, hcfg.d32); +} + +void dwc_otg_set_prtresume(dwc_otg_core_if_t * core_if, uint32_t val) +{ + hprt0_data_t hprt0; + hprt0.d32 = dwc_otg_read_hprt0(core_if); + hprt0.b.prtres = val; + DWC_WRITE_REG32(core_if->host_if->hprt0, hprt0.d32); +} + +uint32_t dwc_otg_get_remotewakesig(dwc_otg_core_if_t * core_if) +{ + dctl_data_t dctl; + dctl.d32 = DWC_READ_REG32(&core_if->dev_if->dev_global_regs->dctl); + return dctl.b.rmtwkupsig; +} + +uint32_t dwc_otg_get_lpm_portsleepstatus(dwc_otg_core_if_t * core_if) +{ + glpmcfg_data_t lpmcfg; + lpmcfg.d32 = DWC_READ_REG32(&core_if->core_global_regs->glpmcfg); + + DWC_ASSERT(! + ((core_if->lx_state == DWC_OTG_L1) ^ lpmcfg.b.prt_sleep_sts), + "lx_state = %d, lmpcfg.prt_sleep_sts = %d\n", + core_if->lx_state, lpmcfg.b.prt_sleep_sts); + + return lpmcfg.b.prt_sleep_sts; +} + +uint32_t dwc_otg_get_lpm_remotewakeenabled(dwc_otg_core_if_t * core_if) +{ + glpmcfg_data_t lpmcfg; + lpmcfg.d32 = DWC_READ_REG32(&core_if->core_global_regs->glpmcfg); + return lpmcfg.b.rem_wkup_en; +} + +uint32_t dwc_otg_get_lpmresponse(dwc_otg_core_if_t * core_if) +{ + glpmcfg_data_t lpmcfg; + lpmcfg.d32 = DWC_READ_REG32(&core_if->core_global_regs->glpmcfg); + return lpmcfg.b.appl_resp; +} + +void dwc_otg_set_lpmresponse(dwc_otg_core_if_t * core_if, uint32_t val) +{ + glpmcfg_data_t lpmcfg; + lpmcfg.d32 = DWC_READ_REG32(&core_if->core_global_regs->glpmcfg); + lpmcfg.b.appl_resp = val; + DWC_WRITE_REG32(&core_if->core_global_regs->glpmcfg, lpmcfg.d32); +} + +uint32_t dwc_otg_get_hsic_connect(dwc_otg_core_if_t * core_if) +{ + glpmcfg_data_t lpmcfg; + lpmcfg.d32 = DWC_READ_REG32(&core_if->core_global_regs->glpmcfg); + return lpmcfg.b.hsic_connect; +} + +void dwc_otg_set_hsic_connect(dwc_otg_core_if_t * core_if, uint32_t val) +{ + glpmcfg_data_t lpmcfg; + lpmcfg.d32 = DWC_READ_REG32(&core_if->core_global_regs->glpmcfg); + lpmcfg.b.hsic_connect = val; + DWC_WRITE_REG32(&core_if->core_global_regs->glpmcfg, lpmcfg.d32); +} + +uint32_t dwc_otg_get_inv_sel_hsic(dwc_otg_core_if_t * core_if) +{ + glpmcfg_data_t lpmcfg; + lpmcfg.d32 = DWC_READ_REG32(&core_if->core_global_regs->glpmcfg); + return lpmcfg.b.inv_sel_hsic; + +} + +void dwc_otg_set_inv_sel_hsic(dwc_otg_core_if_t * core_if, uint32_t val) +{ + glpmcfg_data_t lpmcfg; + lpmcfg.d32 = DWC_READ_REG32(&core_if->core_global_regs->glpmcfg); + lpmcfg.b.inv_sel_hsic = val; + DWC_WRITE_REG32(&core_if->core_global_regs->glpmcfg, lpmcfg.d32); +} + +uint32_t dwc_otg_get_gotgctl(dwc_otg_core_if_t * core_if) +{ + return DWC_READ_REG32(&core_if->core_global_regs->gotgctl); +} + +void dwc_otg_set_gotgctl(dwc_otg_core_if_t * core_if, uint32_t val) +{ + DWC_WRITE_REG32(&core_if->core_global_regs->gotgctl, val); +} + +uint32_t dwc_otg_get_gusbcfg(dwc_otg_core_if_t * core_if) +{ + return DWC_READ_REG32(&core_if->core_global_regs->gusbcfg); +} + +void dwc_otg_set_gusbcfg(dwc_otg_core_if_t * core_if, uint32_t val) +{ + DWC_WRITE_REG32(&core_if->core_global_regs->gusbcfg, val); +} + +uint32_t dwc_otg_get_grxfsiz(dwc_otg_core_if_t * core_if) +{ + return DWC_READ_REG32(&core_if->core_global_regs->grxfsiz); +} + +void dwc_otg_set_grxfsiz(dwc_otg_core_if_t * core_if, uint32_t val) +{ + DWC_WRITE_REG32(&core_if->core_global_regs->grxfsiz, val); +} + +uint32_t dwc_otg_get_gnptxfsiz(dwc_otg_core_if_t * core_if) +{ + return DWC_READ_REG32(&core_if->core_global_regs->gnptxfsiz); +} + +void dwc_otg_set_gnptxfsiz(dwc_otg_core_if_t * core_if, uint32_t val) +{ + DWC_WRITE_REG32(&core_if->core_global_regs->gnptxfsiz, val); +} + +uint32_t dwc_otg_get_gpvndctl(dwc_otg_core_if_t * core_if) +{ + return DWC_READ_REG32(&core_if->core_global_regs->gpvndctl); +} + +void dwc_otg_set_gpvndctl(dwc_otg_core_if_t * core_if, uint32_t val) +{ + DWC_WRITE_REG32(&core_if->core_global_regs->gpvndctl, val); +} + +uint32_t dwc_otg_get_ggpio(dwc_otg_core_if_t * core_if) +{ + return DWC_READ_REG32(&core_if->core_global_regs->ggpio); +} + +void dwc_otg_set_ggpio(dwc_otg_core_if_t * core_if, uint32_t val) +{ + DWC_WRITE_REG32(&core_if->core_global_regs->ggpio, val); +} + +uint32_t dwc_otg_get_hprt0(dwc_otg_core_if_t * core_if) +{ + return DWC_READ_REG32(core_if->host_if->hprt0); + +} + +void dwc_otg_set_hprt0(dwc_otg_core_if_t * core_if, uint32_t val) +{ + DWC_WRITE_REG32(core_if->host_if->hprt0, val); +} + +uint32_t dwc_otg_get_guid(dwc_otg_core_if_t * core_if) +{ + return DWC_READ_REG32(&core_if->core_global_regs->guid); +} + +void dwc_otg_set_guid(dwc_otg_core_if_t * core_if, uint32_t val) +{ + DWC_WRITE_REG32(&core_if->core_global_regs->guid, val); +} + +uint32_t dwc_otg_get_hptxfsiz(dwc_otg_core_if_t * core_if) +{ + return DWC_READ_REG32(&core_if->core_global_regs->hptxfsiz); +} + +uint16_t dwc_otg_get_otg_version(dwc_otg_core_if_t * core_if) +{ + return ((core_if->otg_ver == 1) ? (uint16_t)0x0200 : (uint16_t)0x0103); +} + +/** + * Start the SRP timer to detect when the SRP does not complete within + * 6 seconds. + * + * @param core_if the pointer to core_if strucure. + */ +void dwc_otg_pcd_start_srp_timer(dwc_otg_core_if_t * core_if) +{ + core_if->srp_timer_started = 1; + DWC_TIMER_SCHEDULE(core_if->srp_timer, 6000 /* 6 secs */ ); +} + +void dwc_otg_initiate_srp(dwc_otg_core_if_t * core_if) +{ + uint32_t *addr = (uint32_t *) & (core_if->core_global_regs->gotgctl); + gotgctl_data_t mem; + gotgctl_data_t val; + + val.d32 = DWC_READ_REG32(addr); + if (val.b.sesreq) { + DWC_ERROR("Session Request Already active!\n"); + return; + } + + DWC_INFO("Session Request Initated\n"); //NOTICE + mem.d32 = DWC_READ_REG32(addr); + mem.b.sesreq = 1; + DWC_WRITE_REG32(addr, mem.d32); + + /* Start the SRP timer */ + dwc_otg_pcd_start_srp_timer(core_if); + return; +} --- linux-raspi2-4.2.0.orig/drivers/usb/host/dwc_otg/dwc_otg_cil.h +++ linux-raspi2-4.2.0/drivers/usb/host/dwc_otg/dwc_otg_cil.h @@ -0,0 +1,1464 @@ +/* ========================================================================== + * $File: //dwh/usb_iip/dev/software/otg/linux/drivers/dwc_otg_cil.h $ + * $Revision: #123 $ + * $Date: 2012/08/10 $ + * $Change: 2047372 $ + * + * Synopsys HS OTG Linux Software Driver and documentation (hereinafter, + * "Software") is an Unsupported proprietary work of Synopsys, Inc. unless + * otherwise expressly agreed to in writing between Synopsys and you. + * + * The Software IS NOT an item of Licensed Software or Licensed Product under + * any End User Software License Agreement or Agreement for Licensed Product + * with Synopsys or any supplement thereto. You are permitted to use and + * redistribute this Software in source and binary forms, with or without + * modification, provided that redistributions of source code must retain this + * notice. You may not view, use, disclose, copy or distribute this file or + * any information contained herein except pursuant to this license grant from + * Synopsys. If you do not agree with this notice, including the disclaimer + * below, then you are not authorized to use the Software. + * + * THIS SOFTWARE IS BEING DISTRIBUTED BY SYNOPSYS SOLELY ON AN "AS IS" BASIS + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE HEREBY DISCLAIMED. IN NO EVENT SHALL SYNOPSYS BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH + * DAMAGE. + * ========================================================================== */ + +#if !defined(__DWC_CIL_H__) +#define __DWC_CIL_H__ + +#include "dwc_list.h" +#include "dwc_otg_dbg.h" +#include "dwc_otg_regs.h" + +#include "dwc_otg_core_if.h" +#include "dwc_otg_adp.h" + +/** + * @file + * This file contains the interface to the Core Interface Layer. + */ + +#ifdef DWC_UTE_CFI + +#define MAX_DMA_DESCS_PER_EP 256 + +/** + * Enumeration for the data buffer mode + */ +typedef enum _data_buffer_mode { + BM_STANDARD = 0, /* data buffer is in normal mode */ + BM_SG = 1, /* data buffer uses the scatter/gather mode */ + BM_CONCAT = 2, /* data buffer uses the concatenation mode */ + BM_CIRCULAR = 3, /* data buffer uses the circular DMA mode */ + BM_ALIGN = 4 /* data buffer is in buffer alignment mode */ +} data_buffer_mode_e; +#endif //DWC_UTE_CFI + +/** Macros defined for DWC OTG HW Release version */ + +#define OTG_CORE_REV_2_60a 0x4F54260A +#define OTG_CORE_REV_2_71a 0x4F54271A +#define OTG_CORE_REV_2_72a 0x4F54272A +#define OTG_CORE_REV_2_80a 0x4F54280A +#define OTG_CORE_REV_2_81a 0x4F54281A +#define OTG_CORE_REV_2_90a 0x4F54290A +#define OTG_CORE_REV_2_91a 0x4F54291A +#define OTG_CORE_REV_2_92a 0x4F54292A +#define OTG_CORE_REV_2_93a 0x4F54293A +#define OTG_CORE_REV_2_94a 0x4F54294A +#define OTG_CORE_REV_3_00a 0x4F54300A + +/** + * Information for each ISOC packet. + */ +typedef struct iso_pkt_info { + uint32_t offset; + uint32_t length; + int32_t status; +} iso_pkt_info_t; + +/** + * The dwc_ep structure represents the state of a single + * endpoint when acting in device mode. It contains the data items + * needed for an endpoint to be activated and transfer packets. + */ +typedef struct dwc_ep { + /** EP number used for register address lookup */ + uint8_t num; + /** EP direction 0 = OUT */ + unsigned is_in:1; + /** EP active. */ + unsigned active:1; + + /** + * Periodic Tx FIFO # for IN EPs For INTR EP set to 0 to use non-periodic + * Tx FIFO. If dedicated Tx FIFOs are enabled Tx FIFO # FOR IN EPs*/ + unsigned tx_fifo_num:4; + /** EP type: 0 - Control, 1 - ISOC, 2 - BULK, 3 - INTR */ + unsigned type:2; +#define DWC_OTG_EP_TYPE_CONTROL 0 +#define DWC_OTG_EP_TYPE_ISOC 1 +#define DWC_OTG_EP_TYPE_BULK 2 +#define DWC_OTG_EP_TYPE_INTR 3 + + /** DATA start PID for INTR and BULK EP */ + unsigned data_pid_start:1; + /** Frame (even/odd) for ISOC EP */ + unsigned even_odd_frame:1; + /** Max Packet bytes */ + unsigned maxpacket:11; + + /** Max Transfer size */ + uint32_t maxxfer; + + /** @name Transfer state */ + /** @{ */ + + /** + * Pointer to the beginning of the transfer buffer -- do not modify + * during transfer. + */ + + dwc_dma_t dma_addr; + + dwc_dma_t dma_desc_addr; + dwc_otg_dev_dma_desc_t *desc_addr; + + uint8_t *start_xfer_buff; + /** pointer to the transfer buffer */ + uint8_t *xfer_buff; + /** Number of bytes to transfer */ + unsigned xfer_len:19; + /** Number of bytes transferred. */ + unsigned xfer_count:19; + /** Sent ZLP */ + unsigned sent_zlp:1; + /** Total len for control transfer */ + unsigned total_len:19; + + /** stall clear flag */ + unsigned stall_clear_flag:1; + + /** SETUP pkt cnt rollover flag for EP0 out*/ + unsigned stp_rollover; + +#ifdef DWC_UTE_CFI + /* The buffer mode */ + data_buffer_mode_e buff_mode; + + /* The chain of DMA descriptors. + * MAX_DMA_DESCS_PER_EP will be allocated for each active EP. + */ + dwc_otg_dma_desc_t *descs; + + /* The DMA address of the descriptors chain start */ + dma_addr_t descs_dma_addr; + /** This variable stores the length of the last enqueued request */ + uint32_t cfi_req_len; +#endif //DWC_UTE_CFI + +/** Max DMA Descriptor count for any EP */ +#define MAX_DMA_DESC_CNT 256 + /** Allocated DMA Desc count */ + uint32_t desc_cnt; + + /** bInterval */ + uint32_t bInterval; + /** Next frame num to setup next ISOC transfer */ + uint32_t frame_num; + /** Indicates SOF number overrun in DSTS */ + uint8_t frm_overrun; + +#ifdef DWC_UTE_PER_IO + /** Next frame num for which will be setup DMA Desc */ + uint32_t xiso_frame_num; + /** bInterval */ + uint32_t xiso_bInterval; + /** Count of currently active transfers - shall be either 0 or 1 */ + int xiso_active_xfers; + int xiso_queued_xfers; +#endif +#ifdef DWC_EN_ISOC + /** + * Variables specific for ISOC EPs + * + */ + /** DMA addresses of ISOC buffers */ + dwc_dma_t dma_addr0; + dwc_dma_t dma_addr1; + + dwc_dma_t iso_dma_desc_addr; + dwc_otg_dev_dma_desc_t *iso_desc_addr; + + /** pointer to the transfer buffers */ + uint8_t *xfer_buff0; + uint8_t *xfer_buff1; + + /** number of ISOC Buffer is processing */ + uint32_t proc_buf_num; + /** Interval of ISOC Buffer processing */ + uint32_t buf_proc_intrvl; + /** Data size for regular frame */ + uint32_t data_per_frame; + + /* todo - pattern data support is to be implemented in the future */ + /** Data size for pattern frame */ + uint32_t data_pattern_frame; + /** Frame number of pattern data */ + uint32_t sync_frame; + + /** bInterval */ + uint32_t bInterval; + /** ISO Packet number per frame */ + uint32_t pkt_per_frm; + /** Next frame num for which will be setup DMA Desc */ + uint32_t next_frame; + /** Number of packets per buffer processing */ + uint32_t pkt_cnt; + /** Info for all isoc packets */ + iso_pkt_info_t *pkt_info; + /** current pkt number */ + uint32_t cur_pkt; + /** current pkt number */ + uint8_t *cur_pkt_addr; + /** current pkt number */ + uint32_t cur_pkt_dma_addr; +#endif /* DWC_EN_ISOC */ + +/** @} */ +} dwc_ep_t; + +/* + * Reasons for halting a host channel. + */ +typedef enum dwc_otg_halt_status { + DWC_OTG_HC_XFER_NO_HALT_STATUS, + DWC_OTG_HC_XFER_COMPLETE, + DWC_OTG_HC_XFER_URB_COMPLETE, + DWC_OTG_HC_XFER_ACK, + DWC_OTG_HC_XFER_NAK, + DWC_OTG_HC_XFER_NYET, + DWC_OTG_HC_XFER_STALL, + DWC_OTG_HC_XFER_XACT_ERR, + DWC_OTG_HC_XFER_FRAME_OVERRUN, + DWC_OTG_HC_XFER_BABBLE_ERR, + DWC_OTG_HC_XFER_DATA_TOGGLE_ERR, + DWC_OTG_HC_XFER_AHB_ERR, + DWC_OTG_HC_XFER_PERIODIC_INCOMPLETE, + DWC_OTG_HC_XFER_URB_DEQUEUE +} dwc_otg_halt_status_e; + +/** + * Host channel descriptor. This structure represents the state of a single + * host channel when acting in host mode. It contains the data items needed to + * transfer packets to an endpoint via a host channel. + */ +typedef struct dwc_hc { + /** Host channel number used for register address lookup */ + uint8_t hc_num; + + /** Device to access */ + unsigned dev_addr:7; + + /** EP to access */ + unsigned ep_num:4; + + /** EP direction. 0: OUT, 1: IN */ + unsigned ep_is_in:1; + + /** + * EP speed. + * One of the following values: + * - DWC_OTG_EP_SPEED_LOW + * - DWC_OTG_EP_SPEED_FULL + * - DWC_OTG_EP_SPEED_HIGH + */ + unsigned speed:2; +#define DWC_OTG_EP_SPEED_LOW 0 +#define DWC_OTG_EP_SPEED_FULL 1 +#define DWC_OTG_EP_SPEED_HIGH 2 + + /** + * Endpoint type. + * One of the following values: + * - DWC_OTG_EP_TYPE_CONTROL: 0 + * - DWC_OTG_EP_TYPE_ISOC: 1 + * - DWC_OTG_EP_TYPE_BULK: 2 + * - DWC_OTG_EP_TYPE_INTR: 3 + */ + unsigned ep_type:2; + + /** Max packet size in bytes */ + unsigned max_packet:11; + + /** + * PID for initial transaction. + * 0: DATA0,
+ * 1: DATA2,
+ * 2: DATA1,
+ * 3: MDATA (non-Control EP), + * SETUP (Control EP) + */ + unsigned data_pid_start:2; +#define DWC_OTG_HC_PID_DATA0 0 +#define DWC_OTG_HC_PID_DATA2 1 +#define DWC_OTG_HC_PID_DATA1 2 +#define DWC_OTG_HC_PID_MDATA 3 +#define DWC_OTG_HC_PID_SETUP 3 + + /** Number of periodic transactions per (micro)frame */ + unsigned multi_count:2; + + /** @name Transfer State */ + /** @{ */ + + /** Pointer to the current transfer buffer position. */ + uint8_t *xfer_buff; + /** + * In Buffer DMA mode this buffer will be used + * if xfer_buff is not DWORD aligned. + */ + dwc_dma_t align_buff; + /** Total number of bytes to transfer. */ + uint32_t xfer_len; + /** Number of bytes transferred so far. */ + uint32_t xfer_count; + /** Packet count at start of transfer.*/ + uint16_t start_pkt_count; + + /** + * Flag to indicate whether the transfer has been started. Set to 1 if + * it has been started, 0 otherwise. + */ + uint8_t xfer_started; + + /** + * Set to 1 to indicate that a PING request should be issued on this + * channel. If 0, process normally. + */ + uint8_t do_ping; + + /** + * Set to 1 to indicate that the error count for this transaction is + * non-zero. Set to 0 if the error count is 0. + */ + uint8_t error_state; + + /** + * Set to 1 to indicate that this channel should be halted the next + * time a request is queued for the channel. This is necessary in + * slave mode if no request queue space is available when an attempt + * is made to halt the channel. + */ + uint8_t halt_on_queue; + + /** + * Set to 1 if the host channel has been halted, but the core is not + * finished flushing queued requests. Otherwise 0. + */ + uint8_t halt_pending; + + /** + * Reason for halting the host channel. + */ + dwc_otg_halt_status_e halt_status; + + /* + * Split settings for the host channel + */ + uint8_t do_split; /**< Enable split for the channel */ + uint8_t complete_split; /**< Enable complete split */ + uint8_t hub_addr; /**< Address of high speed hub */ + + uint8_t port_addr; /**< Port of the low/full speed device */ + /** Split transaction position + * One of the following values: + * - DWC_HCSPLIT_XACTPOS_MID + * - DWC_HCSPLIT_XACTPOS_BEGIN + * - DWC_HCSPLIT_XACTPOS_END + * - DWC_HCSPLIT_XACTPOS_ALL */ + uint8_t xact_pos; + + /** Set when the host channel does a short read. */ + uint8_t short_read; + + /** + * Number of requests issued for this channel since it was assigned to + * the current transfer (not counting PINGs). + */ + uint8_t requests; + + /** + * Queue Head for the transfer being processed by this channel. + */ + struct dwc_otg_qh *qh; + + /** @} */ + + /** Entry in list of host channels. */ + DWC_CIRCLEQ_ENTRY(dwc_hc) hc_list_entry; + + /** @name Descriptor DMA support */ + /** @{ */ + + /** Number of Transfer Descriptors */ + uint16_t ntd; + + /** Descriptor List DMA address */ + dwc_dma_t desc_list_addr; + + /** Scheduling micro-frame bitmap. */ + uint8_t schinfo; + + /** @} */ +} dwc_hc_t; + +/** + * The following parameters may be specified when starting the module. These + * parameters define how the DWC_otg controller should be configured. + */ +typedef struct dwc_otg_core_params { + int32_t opt; + + /** + * Specifies the OTG capabilities. The driver will automatically + * detect the value for this parameter if none is specified. + * 0 - HNP and SRP capable (default) + * 1 - SRP Only capable + * 2 - No HNP/SRP capable + */ + int32_t otg_cap; + + /** + * Specifies whether to use slave or DMA mode for accessing the data + * FIFOs. The driver will automatically detect the value for this + * parameter if none is specified. + * 0 - Slave + * 1 - DMA (default, if available) + */ + int32_t dma_enable; + + /** + * When DMA mode is enabled specifies whether to use address DMA or DMA + * Descriptor mode for accessing the data FIFOs in device mode. The driver + * will automatically detect the value for this if none is specified. + * 0 - address DMA + * 1 - DMA Descriptor(default, if available) + */ + int32_t dma_desc_enable; + /** The DMA Burst size (applicable only for External DMA + * Mode). 1, 4, 8 16, 32, 64, 128, 256 (default 32) + */ + int32_t dma_burst_size; /* Translate this to GAHBCFG values */ + + /** + * Specifies the maximum speed of operation in host and device mode. + * The actual speed depends on the speed of the attached device and + * the value of phy_type. The actual speed depends on the speed of the + * attached device. + * 0 - High Speed (default) + * 1 - Full Speed + */ + int32_t speed; + /** Specifies whether low power mode is supported when attached + * to a Full Speed or Low Speed device in host mode. + * 0 - Don't support low power mode (default) + * 1 - Support low power mode + */ + int32_t host_support_fs_ls_low_power; + + /** Specifies the PHY clock rate in low power mode when connected to a + * Low Speed device in host mode. This parameter is applicable only if + * HOST_SUPPORT_FS_LS_LOW_POWER is enabled. If PHY_TYPE is set to FS + * then defaults to 6 MHZ otherwise 48 MHZ. + * + * 0 - 48 MHz + * 1 - 6 MHz + */ + int32_t host_ls_low_power_phy_clk; + + /** + * 0 - Use cC FIFO size parameters + * 1 - Allow dynamic FIFO sizing (default) + */ + int32_t enable_dynamic_fifo; + + /** Total number of 4-byte words in the data FIFO memory. This + * memory includes the Rx FIFO, non-periodic Tx FIFO, and periodic + * Tx FIFOs. + * 32 to 32768 (default 8192) + * Note: The total FIFO memory depth in the FPGA configuration is 8192. + */ + int32_t data_fifo_size; + + /** Number of 4-byte words in the Rx FIFO in device mode when dynamic + * FIFO sizing is enabled. + * 16 to 32768 (default 1064) + */ + int32_t dev_rx_fifo_size; + + /** Number of 4-byte words in the non-periodic Tx FIFO in device mode + * when dynamic FIFO sizing is enabled. + * 16 to 32768 (default 1024) + */ + int32_t dev_nperio_tx_fifo_size; + + /** Number of 4-byte words in each of the periodic Tx FIFOs in device + * mode when dynamic FIFO sizing is enabled. + * 4 to 768 (default 256) + */ + uint32_t dev_perio_tx_fifo_size[MAX_PERIO_FIFOS]; + + /** Number of 4-byte words in the Rx FIFO in host mode when dynamic + * FIFO sizing is enabled. + * 16 to 32768 (default 1024) + */ + int32_t host_rx_fifo_size; + + /** Number of 4-byte words in the non-periodic Tx FIFO in host mode + * when Dynamic FIFO sizing is enabled in the core. + * 16 to 32768 (default 1024) + */ + int32_t host_nperio_tx_fifo_size; + + /** Number of 4-byte words in the host periodic Tx FIFO when dynamic + * FIFO sizing is enabled. + * 16 to 32768 (default 1024) + */ + int32_t host_perio_tx_fifo_size; + + /** The maximum transfer size supported in bytes. + * 2047 to 65,535 (default 65,535) + */ + int32_t max_transfer_size; + + /** The maximum number of packets in a transfer. + * 15 to 511 (default 511) + */ + int32_t max_packet_count; + + /** The number of host channel registers to use. + * 1 to 16 (default 12) + * Note: The FPGA configuration supports a maximum of 12 host channels. + */ + int32_t host_channels; + + /** The number of endpoints in addition to EP0 available for device + * mode operations. + * 1 to 15 (default 6 IN and OUT) + * Note: The FPGA configuration supports a maximum of 6 IN and OUT + * endpoints in addition to EP0. + */ + int32_t dev_endpoints; + + /** + * Specifies the type of PHY interface to use. By default, the driver + * will automatically detect the phy_type. + * + * 0 - Full Speed PHY + * 1 - UTMI+ (default) + * 2 - ULPI + */ + int32_t phy_type; + + /** + * Specifies the UTMI+ Data Width. This parameter is + * applicable for a PHY_TYPE of UTMI+ or ULPI. (For a ULPI + * PHY_TYPE, this parameter indicates the data width between + * the MAC and the ULPI Wrapper.) Also, this parameter is + * applicable only if the OTG_HSPHY_WIDTH cC parameter was set + * to "8 and 16 bits", meaning that the core has been + * configured to work at either data path width. + * + * 8 or 16 bits (default 16) + */ + int32_t phy_utmi_width; + + /** + * Specifies whether the ULPI operates at double or single + * data rate. This parameter is only applicable if PHY_TYPE is + * ULPI. + * + * 0 - single data rate ULPI interface with 8 bit wide data + * bus (default) + * 1 - double data rate ULPI interface with 4 bit wide data + * bus + */ + int32_t phy_ulpi_ddr; + + /** + * Specifies whether to use the internal or external supply to + * drive the vbus with a ULPI phy. + */ + int32_t phy_ulpi_ext_vbus; + + /** + * Specifies whether to use the I2Cinterface for full speed PHY. This + * parameter is only applicable if PHY_TYPE is FS. + * 0 - No (default) + * 1 - Yes + */ + int32_t i2c_enable; + + int32_t ulpi_fs_ls; + + int32_t ts_dline; + + /** + * Specifies whether dedicated transmit FIFOs are + * enabled for non periodic IN endpoints in device mode + * 0 - No + * 1 - Yes + */ + int32_t en_multiple_tx_fifo; + + /** Number of 4-byte words in each of the Tx FIFOs in device + * mode when dynamic FIFO sizing is enabled. + * 4 to 768 (default 256) + */ + uint32_t dev_tx_fifo_size[MAX_TX_FIFOS]; + + /** Thresholding enable flag- + * bit 0 - enable non-ISO Tx thresholding + * bit 1 - enable ISO Tx thresholding + * bit 2 - enable Rx thresholding + */ + uint32_t thr_ctl; + + /** Thresholding length for Tx + * FIFOs in 32 bit DWORDs + */ + uint32_t tx_thr_length; + + /** Thresholding length for Rx + * FIFOs in 32 bit DWORDs + */ + uint32_t rx_thr_length; + + /** + * Specifies whether LPM (Link Power Management) support is enabled + */ + int32_t lpm_enable; + + /** Per Transfer Interrupt + * mode enable flag + * 1 - Enabled + * 0 - Disabled + */ + int32_t pti_enable; + + /** Multi Processor Interrupt + * mode enable flag + * 1 - Enabled + * 0 - Disabled + */ + int32_t mpi_enable; + + /** IS_USB Capability + * 1 - Enabled + * 0 - Disabled + */ + int32_t ic_usb_cap; + + /** AHB Threshold Ratio + * 2'b00 AHB Threshold = MAC Threshold + * 2'b01 AHB Threshold = 1/2 MAC Threshold + * 2'b10 AHB Threshold = 1/4 MAC Threshold + * 2'b11 AHB Threshold = 1/8 MAC Threshold + */ + int32_t ahb_thr_ratio; + + /** ADP Support + * 1 - Enabled + * 0 - Disabled + */ + int32_t adp_supp_enable; + + /** HFIR Reload Control + * 0 - The HFIR cannot be reloaded dynamically. + * 1 - Allow dynamic reloading of the HFIR register during runtime. + */ + int32_t reload_ctl; + + /** DCFG: Enable device Out NAK + * 0 - The core does not set NAK after Bulk Out transfer complete. + * 1 - The core sets NAK after Bulk OUT transfer complete. + */ + int32_t dev_out_nak; + + /** DCFG: Enable Continue on BNA + * After receiving BNA interrupt the core disables the endpoint,when the + * endpoint is re-enabled by the application the core starts processing + * 0 - from the DOEPDMA descriptor + * 1 - from the descriptor which received the BNA. + */ + int32_t cont_on_bna; + + /** GAHBCFG: AHB Single Support + * This bit when programmed supports SINGLE transfers for remainder + * data in a transfer for DMA mode of operation. + * 0 - in this case the remainder data will be sent using INCR burst size. + * 1 - in this case the remainder data will be sent using SINGLE burst size. + */ + int32_t ahb_single; + + /** Core Power down mode + * 0 - No Power Down is enabled + * 1 - Reserved + * 2 - Complete Power Down (Hibernation) + */ + int32_t power_down; + + /** OTG revision supported + * 0 - OTG 1.3 revision + * 1 - OTG 2.0 revision + */ + int32_t otg_ver; + +} dwc_otg_core_params_t; + +#ifdef DEBUG +struct dwc_otg_core_if; +typedef struct hc_xfer_info { + struct dwc_otg_core_if *core_if; + dwc_hc_t *hc; +} hc_xfer_info_t; +#endif + +typedef struct ep_xfer_info { + struct dwc_otg_core_if *core_if; + dwc_ep_t *ep; + uint8_t state; +} ep_xfer_info_t; +/* + * Device States + */ +typedef enum dwc_otg_lx_state { + /** On state */ + DWC_OTG_L0, + /** LPM sleep state*/ + DWC_OTG_L1, + /** USB suspend state*/ + DWC_OTG_L2, + /** Off state*/ + DWC_OTG_L3 +} dwc_otg_lx_state_e; + +struct dwc_otg_global_regs_backup { + uint32_t gotgctl_local; + uint32_t gintmsk_local; + uint32_t gahbcfg_local; + uint32_t gusbcfg_local; + uint32_t grxfsiz_local; + uint32_t gnptxfsiz_local; +#ifdef CONFIG_USB_DWC_OTG_LPM + uint32_t glpmcfg_local; +#endif + uint32_t gi2cctl_local; + uint32_t hptxfsiz_local; + uint32_t pcgcctl_local; + uint32_t gdfifocfg_local; + uint32_t dtxfsiz_local[MAX_EPS_CHANNELS]; + uint32_t gpwrdn_local; + uint32_t xhib_pcgcctl; + uint32_t xhib_gpwrdn; +}; + +struct dwc_otg_host_regs_backup { + uint32_t hcfg_local; + uint32_t haintmsk_local; + uint32_t hcintmsk_local[MAX_EPS_CHANNELS]; + uint32_t hprt0_local; + uint32_t hfir_local; +}; + +struct dwc_otg_dev_regs_backup { + uint32_t dcfg; + uint32_t dctl; + uint32_t daintmsk; + uint32_t diepmsk; + uint32_t doepmsk; + uint32_t diepctl[MAX_EPS_CHANNELS]; + uint32_t dieptsiz[MAX_EPS_CHANNELS]; + uint32_t diepdma[MAX_EPS_CHANNELS]; +}; +/** + * The dwc_otg_core_if structure contains information needed to manage + * the DWC_otg controller acting in either host or device mode. It + * represents the programming view of the controller as a whole. + */ +struct dwc_otg_core_if { + /** Parameters that define how the core should be configured.*/ + dwc_otg_core_params_t *core_params; + + /** Core Global registers starting at offset 000h. */ + dwc_otg_core_global_regs_t *core_global_regs; + + /** Device-specific information */ + dwc_otg_dev_if_t *dev_if; + /** Host-specific information */ + dwc_otg_host_if_t *host_if; + + /** Value from SNPSID register */ + uint32_t snpsid; + + /* + * Set to 1 if the core PHY interface bits in USBCFG have been + * initialized. + */ + uint8_t phy_init_done; + + /* + * SRP Success flag, set by srp success interrupt in FS I2C mode + */ + uint8_t srp_success; + uint8_t srp_timer_started; + /** Timer for SRP. If it expires before SRP is successful + * clear the SRP. */ + dwc_timer_t *srp_timer; + +#ifdef DWC_DEV_SRPCAP + /* This timer is needed to power on the hibernated host core if SRP is not + * initiated on connected SRP capable device for limited period of time + */ + uint8_t pwron_timer_started; + dwc_timer_t *pwron_timer; +#endif + /* Common configuration information */ + /** Power and Clock Gating Control Register */ + volatile uint32_t *pcgcctl; +#define DWC_OTG_PCGCCTL_OFFSET 0xE00 + + /** Push/pop addresses for endpoints or host channels.*/ + uint32_t *data_fifo[MAX_EPS_CHANNELS]; +#define DWC_OTG_DATA_FIFO_OFFSET 0x1000 +#define DWC_OTG_DATA_FIFO_SIZE 0x1000 + + /** Total RAM for FIFOs (Bytes) */ + uint16_t total_fifo_size; + /** Size of Rx FIFO (Bytes) */ + uint16_t rx_fifo_size; + /** Size of Non-periodic Tx FIFO (Bytes) */ + uint16_t nperio_tx_fifo_size; + + /** 1 if DMA is enabled, 0 otherwise. */ + uint8_t dma_enable; + + /** 1 if DMA descriptor is enabled, 0 otherwise. */ + uint8_t dma_desc_enable; + + /** 1 if PTI Enhancement mode is enabled, 0 otherwise. */ + uint8_t pti_enh_enable; + + /** 1 if MPI Enhancement mode is enabled, 0 otherwise. */ + uint8_t multiproc_int_enable; + + /** 1 if dedicated Tx FIFOs are enabled, 0 otherwise. */ + uint8_t en_multiple_tx_fifo; + + /** Set to 1 if multiple packets of a high-bandwidth transfer is in + * process of being queued */ + uint8_t queuing_high_bandwidth; + + /** Hardware Configuration -- stored here for convenience.*/ + hwcfg1_data_t hwcfg1; + hwcfg2_data_t hwcfg2; + hwcfg3_data_t hwcfg3; + hwcfg4_data_t hwcfg4; + fifosize_data_t hptxfsiz; + + /** Host and Device Configuration -- stored here for convenience.*/ + hcfg_data_t hcfg; + dcfg_data_t dcfg; + + /** The operational State, during transations + * (a_host>>a_peripherial and b_device=>b_host) this may not + * match the core but allows the software to determine + * transitions. + */ + uint8_t op_state; + + /** + * Set to 1 if the HCD needs to be restarted on a session request + * interrupt. This is required if no connector ID status change has + * occurred since the HCD was last disconnected. + */ + uint8_t restart_hcd_on_session_req; + + /** HCD callbacks */ + /** A-Device is a_host */ +#define A_HOST (1) + /** A-Device is a_suspend */ +#define A_SUSPEND (2) + /** A-Device is a_peripherial */ +#define A_PERIPHERAL (3) + /** B-Device is operating as a Peripheral. */ +#define B_PERIPHERAL (4) + /** B-Device is operating as a Host. */ +#define B_HOST (5) + + /** HCD callbacks */ + struct dwc_otg_cil_callbacks *hcd_cb; + /** PCD callbacks */ + struct dwc_otg_cil_callbacks *pcd_cb; + + /** Device mode Periodic Tx FIFO Mask */ + uint32_t p_tx_msk; + /** Device mode Periodic Tx FIFO Mask */ + uint32_t tx_msk; + + /** Workqueue object used for handling several interrupts */ + dwc_workq_t *wq_otg; + + /** Timer object used for handling "Wakeup Detected" Interrupt */ + dwc_timer_t *wkp_timer; + /** This arrays used for debug purposes for DEV OUT NAK enhancement */ + uint32_t start_doeptsiz_val[MAX_EPS_CHANNELS]; + ep_xfer_info_t ep_xfer_info[MAX_EPS_CHANNELS]; + dwc_timer_t *ep_xfer_timer[MAX_EPS_CHANNELS]; +#ifdef DEBUG + uint32_t start_hcchar_val[MAX_EPS_CHANNELS]; + + hc_xfer_info_t hc_xfer_info[MAX_EPS_CHANNELS]; + dwc_timer_t *hc_xfer_timer[MAX_EPS_CHANNELS]; + + uint32_t hfnum_7_samples; + uint64_t hfnum_7_frrem_accum; + uint32_t hfnum_0_samples; + uint64_t hfnum_0_frrem_accum; + uint32_t hfnum_other_samples; + uint64_t hfnum_other_frrem_accum; +#endif + +#ifdef DWC_UTE_CFI + uint16_t pwron_rxfsiz; + uint16_t pwron_gnptxfsiz; + uint16_t pwron_txfsiz[15]; + + uint16_t init_rxfsiz; + uint16_t init_gnptxfsiz; + uint16_t init_txfsiz[15]; +#endif + + /** Lx state of device */ + dwc_otg_lx_state_e lx_state; + + /** Saved Core Global registers */ + struct dwc_otg_global_regs_backup *gr_backup; + /** Saved Host registers */ + struct dwc_otg_host_regs_backup *hr_backup; + /** Saved Device registers */ + struct dwc_otg_dev_regs_backup *dr_backup; + + /** Power Down Enable */ + uint32_t power_down; + + /** ADP support Enable */ + uint32_t adp_enable; + + /** ADP structure object */ + dwc_otg_adp_t adp; + + /** hibernation/suspend flag */ + int hibernation_suspend; + + /** Device mode extended hibernation flag */ + int xhib; + + /** OTG revision supported */ + uint32_t otg_ver; + + /** OTG status flag used for HNP polling */ + uint8_t otg_sts; + + /** Pointer to either hcd->lock or pcd->lock */ + dwc_spinlock_t *lock; + + /** Start predict NextEP based on Learning Queue if equal 1, + * also used as counter of disabled NP IN EP's */ + uint8_t start_predict; + + /** NextEp sequence, including EP0: nextep_seq[] = EP if non-periodic and + * active, 0xff otherwise */ + uint8_t nextep_seq[MAX_EPS_CHANNELS]; + + /** Index of fisrt EP in nextep_seq array which should be re-enabled **/ + uint8_t first_in_nextep_seq; + + /** Frame number while entering to ISR - needed for ISOCs **/ + uint32_t frame_num; + +}; + +#ifdef DEBUG +/* + * This function is called when transfer is timed out. + */ +extern void hc_xfer_timeout(void *ptr); +#endif + +/* + * This function is called when transfer is timed out on endpoint. + */ +extern void ep_xfer_timeout(void *ptr); + +/* + * The following functions are functions for works + * using during handling some interrupts + */ +extern void w_conn_id_status_change(void *p); + +extern void w_wakeup_detected(void *p); + +/** Saves global register values into system memory. */ +extern int dwc_otg_save_global_regs(dwc_otg_core_if_t * core_if); +/** Saves device register values into system memory. */ +extern int dwc_otg_save_dev_regs(dwc_otg_core_if_t * core_if); +/** Saves host register values into system memory. */ +extern int dwc_otg_save_host_regs(dwc_otg_core_if_t * core_if); +/** Restore global register values. */ +extern int dwc_otg_restore_global_regs(dwc_otg_core_if_t * core_if); +/** Restore host register values. */ +extern int dwc_otg_restore_host_regs(dwc_otg_core_if_t * core_if, int reset); +/** Restore device register values. */ +extern int dwc_otg_restore_dev_regs(dwc_otg_core_if_t * core_if, + int rem_wakeup); +extern int restore_lpm_i2c_regs(dwc_otg_core_if_t * core_if); +extern int restore_essential_regs(dwc_otg_core_if_t * core_if, int rmode, + int is_host); + +extern int dwc_otg_host_hibernation_restore(dwc_otg_core_if_t * core_if, + int restore_mode, int reset); +extern int dwc_otg_device_hibernation_restore(dwc_otg_core_if_t * core_if, + int rem_wakeup, int reset); + +/* + * The following functions support initialization of the CIL driver component + * and the DWC_otg controller. + */ +extern void dwc_otg_core_host_init(dwc_otg_core_if_t * _core_if); +extern void dwc_otg_core_dev_init(dwc_otg_core_if_t * _core_if); + +/** @name Device CIL Functions + * The following functions support managing the DWC_otg controller in device + * mode. + */ +/**@{*/ +extern void dwc_otg_wakeup(dwc_otg_core_if_t * _core_if); +extern void dwc_otg_read_setup_packet(dwc_otg_core_if_t * _core_if, + uint32_t * _dest); +extern uint32_t dwc_otg_get_frame_number(dwc_otg_core_if_t * _core_if); +extern void dwc_otg_ep0_activate(dwc_otg_core_if_t * _core_if, dwc_ep_t * _ep); +extern void dwc_otg_ep_activate(dwc_otg_core_if_t * _core_if, dwc_ep_t * _ep); +extern void dwc_otg_ep_deactivate(dwc_otg_core_if_t * _core_if, dwc_ep_t * _ep); +extern void dwc_otg_ep_start_transfer(dwc_otg_core_if_t * _core_if, + dwc_ep_t * _ep); +extern void dwc_otg_ep_start_zl_transfer(dwc_otg_core_if_t * _core_if, + dwc_ep_t * _ep); +extern void dwc_otg_ep0_start_transfer(dwc_otg_core_if_t * _core_if, + dwc_ep_t * _ep); +extern void dwc_otg_ep0_continue_transfer(dwc_otg_core_if_t * _core_if, + dwc_ep_t * _ep); +extern void dwc_otg_ep_write_packet(dwc_otg_core_if_t * _core_if, + dwc_ep_t * _ep, int _dma); +extern void dwc_otg_ep_set_stall(dwc_otg_core_if_t * _core_if, dwc_ep_t * _ep); +extern void dwc_otg_ep_clear_stall(dwc_otg_core_if_t * _core_if, + dwc_ep_t * _ep); +extern void dwc_otg_enable_device_interrupts(dwc_otg_core_if_t * _core_if); + +#ifdef DWC_EN_ISOC +extern void dwc_otg_iso_ep_start_frm_transfer(dwc_otg_core_if_t * core_if, + dwc_ep_t * ep); +extern void dwc_otg_iso_ep_start_buf_transfer(dwc_otg_core_if_t * core_if, + dwc_ep_t * ep); +#endif /* DWC_EN_ISOC */ +/**@}*/ + +/** @name Host CIL Functions + * The following functions support managing the DWC_otg controller in host + * mode. + */ +/**@{*/ +extern void dwc_otg_hc_init(dwc_otg_core_if_t * _core_if, dwc_hc_t * _hc); +extern void dwc_otg_hc_halt(dwc_otg_core_if_t * _core_if, + dwc_hc_t * _hc, dwc_otg_halt_status_e _halt_status); +extern void dwc_otg_hc_cleanup(dwc_otg_core_if_t * _core_if, dwc_hc_t * _hc); +extern void dwc_otg_hc_start_transfer(dwc_otg_core_if_t * _core_if, + dwc_hc_t * _hc); +extern int dwc_otg_hc_continue_transfer(dwc_otg_core_if_t * _core_if, + dwc_hc_t * _hc); +extern void dwc_otg_hc_do_ping(dwc_otg_core_if_t * _core_if, dwc_hc_t * _hc); +extern void dwc_otg_hc_write_packet(dwc_otg_core_if_t * _core_if, + dwc_hc_t * _hc); +extern void dwc_otg_enable_host_interrupts(dwc_otg_core_if_t * _core_if); +extern void dwc_otg_disable_host_interrupts(dwc_otg_core_if_t * _core_if); + +extern void dwc_otg_hc_start_transfer_ddma(dwc_otg_core_if_t * core_if, + dwc_hc_t * hc); + +extern uint32_t calc_frame_interval(dwc_otg_core_if_t * core_if); + +/* Macro used to clear one channel interrupt */ +#define clear_hc_int(_hc_regs_, _intr_) \ +do { \ + hcint_data_t hcint_clear = {.d32 = 0}; \ + hcint_clear.b._intr_ = 1; \ + DWC_WRITE_REG32(&(_hc_regs_)->hcint, hcint_clear.d32); \ +} while (0) + +/* + * Macro used to disable one channel interrupt. Channel interrupts are + * disabled when the channel is halted or released by the interrupt handler. + * There is no need to handle further interrupts of that type until the + * channel is re-assigned. In fact, subsequent handling may cause crashes + * because the channel structures are cleaned up when the channel is released. + */ +#define disable_hc_int(_hc_regs_, _intr_) \ +do { \ + hcintmsk_data_t hcintmsk = {.d32 = 0}; \ + hcintmsk.b._intr_ = 1; \ + DWC_MODIFY_REG32(&(_hc_regs_)->hcintmsk, hcintmsk.d32, 0); \ +} while (0) + +/** + * This function Reads HPRT0 in preparation to modify. It keeps the + * WC bits 0 so that if they are read as 1, they won't clear when you + * write it back + */ +static inline uint32_t dwc_otg_read_hprt0(dwc_otg_core_if_t * _core_if) +{ + hprt0_data_t hprt0; + hprt0.d32 = DWC_READ_REG32(_core_if->host_if->hprt0); + hprt0.b.prtena = 0; + hprt0.b.prtconndet = 0; + hprt0.b.prtenchng = 0; + hprt0.b.prtovrcurrchng = 0; + return hprt0.d32; +} + +/**@}*/ + +/** @name Common CIL Functions + * The following functions support managing the DWC_otg controller in either + * device or host mode. + */ +/**@{*/ + +extern void dwc_otg_read_packet(dwc_otg_core_if_t * core_if, + uint8_t * dest, uint16_t bytes); + +extern void dwc_otg_flush_tx_fifo(dwc_otg_core_if_t * _core_if, const int _num); +extern void dwc_otg_flush_rx_fifo(dwc_otg_core_if_t * _core_if); +extern void dwc_otg_core_reset(dwc_otg_core_if_t * _core_if); + +/** + * This function returns the Core Interrupt register. + */ +static inline uint32_t dwc_otg_read_core_intr(dwc_otg_core_if_t * core_if) +{ + return (DWC_READ_REG32(&core_if->core_global_regs->gintsts) & + DWC_READ_REG32(&core_if->core_global_regs->gintmsk)); +} + +/** + * This function returns the OTG Interrupt register. + */ +static inline uint32_t dwc_otg_read_otg_intr(dwc_otg_core_if_t * core_if) +{ + return (DWC_READ_REG32(&core_if->core_global_regs->gotgint)); +} + +/** + * This function reads the Device All Endpoints Interrupt register and + * returns the IN endpoint interrupt bits. + */ +static inline uint32_t dwc_otg_read_dev_all_in_ep_intr(dwc_otg_core_if_t * + core_if) +{ + + uint32_t v; + + if (core_if->multiproc_int_enable) { + v = DWC_READ_REG32(&core_if->dev_if-> + dev_global_regs->deachint) & + DWC_READ_REG32(&core_if-> + dev_if->dev_global_regs->deachintmsk); + } else { + v = DWC_READ_REG32(&core_if->dev_if->dev_global_regs->daint) & + DWC_READ_REG32(&core_if->dev_if->dev_global_regs->daintmsk); + } + return (v & 0xffff); +} + +/** + * This function reads the Device All Endpoints Interrupt register and + * returns the OUT endpoint interrupt bits. + */ +static inline uint32_t dwc_otg_read_dev_all_out_ep_intr(dwc_otg_core_if_t * + core_if) +{ + uint32_t v; + + if (core_if->multiproc_int_enable) { + v = DWC_READ_REG32(&core_if->dev_if-> + dev_global_regs->deachint) & + DWC_READ_REG32(&core_if-> + dev_if->dev_global_regs->deachintmsk); + } else { + v = DWC_READ_REG32(&core_if->dev_if->dev_global_regs->daint) & + DWC_READ_REG32(&core_if->dev_if->dev_global_regs->daintmsk); + } + + return ((v & 0xffff0000) >> 16); +} + +/** + * This function returns the Device IN EP Interrupt register + */ +static inline uint32_t dwc_otg_read_dev_in_ep_intr(dwc_otg_core_if_t * core_if, + dwc_ep_t * ep) +{ + dwc_otg_dev_if_t *dev_if = core_if->dev_if; + uint32_t v, msk, emp; + + if (core_if->multiproc_int_enable) { + msk = + DWC_READ_REG32(&dev_if-> + dev_global_regs->diepeachintmsk[ep->num]); + emp = + DWC_READ_REG32(&dev_if-> + dev_global_regs->dtknqr4_fifoemptymsk); + msk |= ((emp >> ep->num) & 0x1) << 7; + v = DWC_READ_REG32(&dev_if->in_ep_regs[ep->num]->diepint) & msk; + } else { + msk = DWC_READ_REG32(&dev_if->dev_global_regs->diepmsk); + emp = + DWC_READ_REG32(&dev_if-> + dev_global_regs->dtknqr4_fifoemptymsk); + msk |= ((emp >> ep->num) & 0x1) << 7; + v = DWC_READ_REG32(&dev_if->in_ep_regs[ep->num]->diepint) & msk; + } + + return v; +} + +/** + * This function returns the Device OUT EP Interrupt register + */ +static inline uint32_t dwc_otg_read_dev_out_ep_intr(dwc_otg_core_if_t * + _core_if, dwc_ep_t * _ep) +{ + dwc_otg_dev_if_t *dev_if = _core_if->dev_if; + uint32_t v; + doepmsk_data_t msk = {.d32 = 0 }; + + if (_core_if->multiproc_int_enable) { + msk.d32 = + DWC_READ_REG32(&dev_if-> + dev_global_regs->doepeachintmsk[_ep->num]); + if (_core_if->pti_enh_enable) { + msk.b.pktdrpsts = 1; + } + v = DWC_READ_REG32(&dev_if-> + out_ep_regs[_ep->num]->doepint) & msk.d32; + } else { + msk.d32 = DWC_READ_REG32(&dev_if->dev_global_regs->doepmsk); + if (_core_if->pti_enh_enable) { + msk.b.pktdrpsts = 1; + } + v = DWC_READ_REG32(&dev_if-> + out_ep_regs[_ep->num]->doepint) & msk.d32; + } + return v; +} + +/** + * This function returns the Host All Channel Interrupt register + */ +static inline uint32_t dwc_otg_read_host_all_channels_intr(dwc_otg_core_if_t * + _core_if) +{ + return (DWC_READ_REG32(&_core_if->host_if->host_global_regs->haint)); +} + +static inline uint32_t dwc_otg_read_host_channel_intr(dwc_otg_core_if_t * + _core_if, dwc_hc_t * _hc) +{ + return (DWC_READ_REG32 + (&_core_if->host_if->hc_regs[_hc->hc_num]->hcint)); +} + +/** + * This function returns the mode of the operation, host or device. + * + * @return 0 - Device Mode, 1 - Host Mode + */ +static inline uint32_t dwc_otg_mode(dwc_otg_core_if_t * _core_if) +{ + return (DWC_READ_REG32(&_core_if->core_global_regs->gintsts) & 0x1); +} + +/**@}*/ + +/** + * DWC_otg CIL callback structure. This structure allows the HCD and + * PCD to register functions used for starting and stopping the PCD + * and HCD for role change on for a DRD. + */ +typedef struct dwc_otg_cil_callbacks { + /** Start function for role change */ + int (*start) (void *_p); + /** Stop Function for role change */ + int (*stop) (void *_p); + /** Disconnect Function for role change */ + int (*disconnect) (void *_p); + /** Resume/Remote wakeup Function */ + int (*resume_wakeup) (void *_p); + /** Suspend function */ + int (*suspend) (void *_p); + /** Session Start (SRP) */ + int (*session_start) (void *_p); +#ifdef CONFIG_USB_DWC_OTG_LPM + /** Sleep (switch to L0 state) */ + int (*sleep) (void *_p); +#endif + /** Pointer passed to start() and stop() */ + void *p; +} dwc_otg_cil_callbacks_t; + +extern void dwc_otg_cil_register_pcd_callbacks(dwc_otg_core_if_t * _core_if, + dwc_otg_cil_callbacks_t * _cb, + void *_p); +extern void dwc_otg_cil_register_hcd_callbacks(dwc_otg_core_if_t * _core_if, + dwc_otg_cil_callbacks_t * _cb, + void *_p); + +void dwc_otg_initiate_srp(dwc_otg_core_if_t * core_if); + +////////////////////////////////////////////////////////////////////// +/** Start the HCD. Helper function for using the HCD callbacks. + * + * @param core_if Programming view of DWC_otg controller. + */ +static inline void cil_hcd_start(dwc_otg_core_if_t * core_if) +{ + if (core_if->hcd_cb && core_if->hcd_cb->start) { + core_if->hcd_cb->start(core_if->hcd_cb->p); + } +} + +/** Stop the HCD. Helper function for using the HCD callbacks. + * + * @param core_if Programming view of DWC_otg controller. + */ +static inline void cil_hcd_stop(dwc_otg_core_if_t * core_if) +{ + if (core_if->hcd_cb && core_if->hcd_cb->stop) { + core_if->hcd_cb->stop(core_if->hcd_cb->p); + } +} + +/** Disconnect the HCD. Helper function for using the HCD callbacks. + * + * @param core_if Programming view of DWC_otg controller. + */ +static inline void cil_hcd_disconnect(dwc_otg_core_if_t * core_if) +{ + if (core_if->hcd_cb && core_if->hcd_cb->disconnect) { + core_if->hcd_cb->disconnect(core_if->hcd_cb->p); + } +} + +/** Inform the HCD the a New Session has begun. Helper function for + * using the HCD callbacks. + * + * @param core_if Programming view of DWC_otg controller. + */ +static inline void cil_hcd_session_start(dwc_otg_core_if_t * core_if) +{ + if (core_if->hcd_cb && core_if->hcd_cb->session_start) { + core_if->hcd_cb->session_start(core_if->hcd_cb->p); + } +} + +#ifdef CONFIG_USB_DWC_OTG_LPM +/** + * Inform the HCD about LPM sleep. + * Helper function for using the HCD callbacks. + * + * @param core_if Programming view of DWC_otg controller. + */ +static inline void cil_hcd_sleep(dwc_otg_core_if_t * core_if) +{ + if (core_if->hcd_cb && core_if->hcd_cb->sleep) { + core_if->hcd_cb->sleep(core_if->hcd_cb->p); + } +} +#endif + +/** Resume the HCD. Helper function for using the HCD callbacks. + * + * @param core_if Programming view of DWC_otg controller. + */ +static inline void cil_hcd_resume(dwc_otg_core_if_t * core_if) +{ + if (core_if->hcd_cb && core_if->hcd_cb->resume_wakeup) { + core_if->hcd_cb->resume_wakeup(core_if->hcd_cb->p); + } +} + +/** Start the PCD. Helper function for using the PCD callbacks. + * + * @param core_if Programming view of DWC_otg controller. + */ +static inline void cil_pcd_start(dwc_otg_core_if_t * core_if) +{ + if (core_if->pcd_cb && core_if->pcd_cb->start) { + core_if->pcd_cb->start(core_if->pcd_cb->p); + } +} + +/** Stop the PCD. Helper function for using the PCD callbacks. + * + * @param core_if Programming view of DWC_otg controller. + */ +static inline void cil_pcd_stop(dwc_otg_core_if_t * core_if) +{ + if (core_if->pcd_cb && core_if->pcd_cb->stop) { + core_if->pcd_cb->stop(core_if->pcd_cb->p); + } +} + +/** Suspend the PCD. Helper function for using the PCD callbacks. + * + * @param core_if Programming view of DWC_otg controller. + */ +static inline void cil_pcd_suspend(dwc_otg_core_if_t * core_if) +{ + if (core_if->pcd_cb && core_if->pcd_cb->suspend) { + core_if->pcd_cb->suspend(core_if->pcd_cb->p); + } +} + +/** Resume the PCD. Helper function for using the PCD callbacks. + * + * @param core_if Programming view of DWC_otg controller. + */ +static inline void cil_pcd_resume(dwc_otg_core_if_t * core_if) +{ + if (core_if->pcd_cb && core_if->pcd_cb->resume_wakeup) { + core_if->pcd_cb->resume_wakeup(core_if->pcd_cb->p); + } +} + +////////////////////////////////////////////////////////////////////// + +#endif --- linux-raspi2-4.2.0.orig/drivers/usb/host/dwc_otg/dwc_otg_cil_intr.c +++ linux-raspi2-4.2.0/drivers/usb/host/dwc_otg/dwc_otg_cil_intr.c @@ -0,0 +1,1594 @@ +/* ========================================================================== + * $File: //dwh/usb_iip/dev/software/otg/linux/drivers/dwc_otg_cil_intr.c $ + * $Revision: #32 $ + * $Date: 2012/08/10 $ + * $Change: 2047372 $ + * + * Synopsys HS OTG Linux Software Driver and documentation (hereinafter, + * "Software") is an Unsupported proprietary work of Synopsys, Inc. unless + * otherwise expressly agreed to in writing between Synopsys and you. + * + * The Software IS NOT an item of Licensed Software or Licensed Product under + * any End User Software License Agreement or Agreement for Licensed Product + * with Synopsys or any supplement thereto. You are permitted to use and + * redistribute this Software in source and binary forms, with or without + * modification, provided that redistributions of source code must retain this + * notice. You may not view, use, disclose, copy or distribute this file or + * any information contained herein except pursuant to this license grant from + * Synopsys. If you do not agree with this notice, including the disclaimer + * below, then you are not authorized to use the Software. + * + * THIS SOFTWARE IS BEING DISTRIBUTED BY SYNOPSYS SOLELY ON AN "AS IS" BASIS + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE HEREBY DISCLAIMED. IN NO EVENT SHALL SYNOPSYS BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH + * DAMAGE. + * ========================================================================== */ + +/** @file + * + * The Core Interface Layer provides basic services for accessing and + * managing the DWC_otg hardware. These services are used by both the + * Host Controller Driver and the Peripheral Controller Driver. + * + * This file contains the Common Interrupt handlers. + */ +#include "dwc_os.h" +#include "dwc_otg_regs.h" +#include "dwc_otg_cil.h" +#include "dwc_otg_driver.h" +#include "dwc_otg_pcd.h" +#include "dwc_otg_hcd.h" + +#ifdef DEBUG +inline const char *op_state_str(dwc_otg_core_if_t * core_if) +{ + return (core_if->op_state == A_HOST ? "a_host" : + (core_if->op_state == A_SUSPEND ? "a_suspend" : + (core_if->op_state == A_PERIPHERAL ? "a_peripheral" : + (core_if->op_state == B_PERIPHERAL ? "b_peripheral" : + (core_if->op_state == B_HOST ? "b_host" : "unknown"))))); +} +#endif + +/** This function will log a debug message + * + * @param core_if Programming view of DWC_otg controller. + */ +int32_t dwc_otg_handle_mode_mismatch_intr(dwc_otg_core_if_t * core_if) +{ + gintsts_data_t gintsts; + DWC_WARN("Mode Mismatch Interrupt: currently in %s mode\n", + dwc_otg_mode(core_if) ? "Host" : "Device"); + + /* Clear interrupt */ + gintsts.d32 = 0; + gintsts.b.modemismatch = 1; + DWC_WRITE_REG32(&core_if->core_global_regs->gintsts, gintsts.d32); + return 1; +} + +/** + * This function handles the OTG Interrupts. It reads the OTG + * Interrupt Register (GOTGINT) to determine what interrupt has + * occurred. + * + * @param core_if Programming view of DWC_otg controller. + */ +int32_t dwc_otg_handle_otg_intr(dwc_otg_core_if_t * core_if) +{ + dwc_otg_core_global_regs_t *global_regs = core_if->core_global_regs; + gotgint_data_t gotgint; + gotgctl_data_t gotgctl; + gintmsk_data_t gintmsk; + gpwrdn_data_t gpwrdn; + + gotgint.d32 = DWC_READ_REG32(&global_regs->gotgint); + gotgctl.d32 = DWC_READ_REG32(&global_regs->gotgctl); + DWC_DEBUGPL(DBG_CIL, "++OTG Interrupt gotgint=%0x [%s]\n", gotgint.d32, + op_state_str(core_if)); + + if (gotgint.b.sesenddet) { + DWC_DEBUGPL(DBG_ANY, " ++OTG Interrupt: " + "Session End Detected++ (%s)\n", + op_state_str(core_if)); + gotgctl.d32 = DWC_READ_REG32(&global_regs->gotgctl); + + if (core_if->op_state == B_HOST) { + cil_pcd_start(core_if); + core_if->op_state = B_PERIPHERAL; + } else { + /* If not B_HOST and Device HNP still set. HNP + * Did not succeed!*/ + if (gotgctl.b.devhnpen) { + DWC_DEBUGPL(DBG_ANY, "Session End Detected\n"); + __DWC_ERROR("Device Not Connected/Responding!\n"); + } + + /* If Session End Detected the B-Cable has + * been disconnected. */ + /* Reset PCD and Gadget driver to a + * clean state. */ + core_if->lx_state = DWC_OTG_L0; + DWC_SPINUNLOCK(core_if->lock); + cil_pcd_stop(core_if); + DWC_SPINLOCK(core_if->lock); + + if (core_if->adp_enable) { + if (core_if->power_down == 2) { + gpwrdn.d32 = 0; + gpwrdn.b.pwrdnswtch = 1; + DWC_MODIFY_REG32(&core_if-> + core_global_regs-> + gpwrdn, gpwrdn.d32, 0); + } + + gpwrdn.d32 = 0; + gpwrdn.b.pmuintsel = 1; + gpwrdn.b.pmuactv = 1; + DWC_MODIFY_REG32(&core_if->core_global_regs-> + gpwrdn, 0, gpwrdn.d32); + + dwc_otg_adp_sense_start(core_if); + } + } + + gotgctl.d32 = 0; + gotgctl.b.devhnpen = 1; + DWC_MODIFY_REG32(&global_regs->gotgctl, gotgctl.d32, 0); + } + if (gotgint.b.sesreqsucstschng) { + DWC_DEBUGPL(DBG_ANY, " ++OTG Interrupt: " + "Session Reqeust Success Status Change++\n"); + gotgctl.d32 = DWC_READ_REG32(&global_regs->gotgctl); + if (gotgctl.b.sesreqscs) { + + if ((core_if->core_params->phy_type == + DWC_PHY_TYPE_PARAM_FS) && (core_if->core_params->i2c_enable)) { + core_if->srp_success = 1; + } else { + DWC_SPINUNLOCK(core_if->lock); + cil_pcd_resume(core_if); + DWC_SPINLOCK(core_if->lock); + /* Clear Session Request */ + gotgctl.d32 = 0; + gotgctl.b.sesreq = 1; + DWC_MODIFY_REG32(&global_regs->gotgctl, + gotgctl.d32, 0); + } + } + } + if (gotgint.b.hstnegsucstschng) { + /* Print statements during the HNP interrupt handling + * can cause it to fail.*/ + gotgctl.d32 = DWC_READ_REG32(&global_regs->gotgctl); + /* WA for 3.00a- HW is not setting cur_mode, even sometimes + * this does not help*/ + if (core_if->snpsid >= OTG_CORE_REV_3_00a) + dwc_udelay(100); + if (gotgctl.b.hstnegscs) { + if (dwc_otg_is_host_mode(core_if)) { + core_if->op_state = B_HOST; + /* + * Need to disable SOF interrupt immediately. + * When switching from device to host, the PCD + * interrupt handler won't handle the + * interrupt if host mode is already set. The + * HCD interrupt handler won't get called if + * the HCD state is HALT. This means that the + * interrupt does not get handled and Linux + * complains loudly. + */ + gintmsk.d32 = 0; + gintmsk.b.sofintr = 1; + DWC_MODIFY_REG32(&global_regs->gintmsk, + gintmsk.d32, 0); + /* Call callback function with spin lock released */ + DWC_SPINUNLOCK(core_if->lock); + cil_pcd_stop(core_if); + /* + * Initialize the Core for Host mode. + */ + cil_hcd_start(core_if); + DWC_SPINLOCK(core_if->lock); + core_if->op_state = B_HOST; + } + } else { + gotgctl.d32 = 0; + gotgctl.b.hnpreq = 1; + gotgctl.b.devhnpen = 1; + DWC_MODIFY_REG32(&global_regs->gotgctl, gotgctl.d32, 0); + DWC_DEBUGPL(DBG_ANY, "HNP Failed\n"); + __DWC_ERROR("Device Not Connected/Responding\n"); + } + } + if (gotgint.b.hstnegdet) { + /* The disconnect interrupt is set at the same time as + * Host Negotiation Detected. During the mode + * switch all interrupts are cleared so the disconnect + * interrupt handler will not get executed. + */ + DWC_DEBUGPL(DBG_ANY, " ++OTG Interrupt: " + "Host Negotiation Detected++ (%s)\n", + (dwc_otg_is_host_mode(core_if) ? "Host" : + "Device")); + if (dwc_otg_is_device_mode(core_if)) { + DWC_DEBUGPL(DBG_ANY, "a_suspend->a_peripheral (%d)\n", + core_if->op_state); + DWC_SPINUNLOCK(core_if->lock); + cil_hcd_disconnect(core_if); + cil_pcd_start(core_if); + DWC_SPINLOCK(core_if->lock); + core_if->op_state = A_PERIPHERAL; + } else { + /* + * Need to disable SOF interrupt immediately. When + * switching from device to host, the PCD interrupt + * handler won't handle the interrupt if host mode is + * already set. The HCD interrupt handler won't get + * called if the HCD state is HALT. This means that + * the interrupt does not get handled and Linux + * complains loudly. + */ + gintmsk.d32 = 0; + gintmsk.b.sofintr = 1; + DWC_MODIFY_REG32(&global_regs->gintmsk, gintmsk.d32, 0); + DWC_SPINUNLOCK(core_if->lock); + cil_pcd_stop(core_if); + cil_hcd_start(core_if); + DWC_SPINLOCK(core_if->lock); + core_if->op_state = A_HOST; + } + } + if (gotgint.b.adevtoutchng) { + DWC_DEBUGPL(DBG_ANY, " ++OTG Interrupt: " + "A-Device Timeout Change++\n"); + } + if (gotgint.b.debdone) { + DWC_DEBUGPL(DBG_ANY, " ++OTG Interrupt: " "Debounce Done++\n"); + } + + /* Clear GOTGINT */ + DWC_WRITE_REG32(&core_if->core_global_regs->gotgint, gotgint.d32); + + return 1; +} + +void w_conn_id_status_change(void *p) +{ + dwc_otg_core_if_t *core_if = p; + uint32_t count = 0; + gotgctl_data_t gotgctl = {.d32 = 0 }; + + gotgctl.d32 = DWC_READ_REG32(&core_if->core_global_regs->gotgctl); + DWC_DEBUGPL(DBG_CIL, "gotgctl=%0x\n", gotgctl.d32); + DWC_DEBUGPL(DBG_CIL, "gotgctl.b.conidsts=%d\n", gotgctl.b.conidsts); + + /* B-Device connector (Device Mode) */ + if (gotgctl.b.conidsts) { + /* Wait for switch to device mode. */ + while (!dwc_otg_is_device_mode(core_if)) { + DWC_PRINTF("Waiting for Peripheral Mode, Mode=%s\n", + (dwc_otg_is_host_mode(core_if) ? "Host" : + "Peripheral")); + dwc_mdelay(100); + if (++count > 10000) + break; + } + DWC_ASSERT(++count < 10000, + "Connection id status change timed out"); + core_if->op_state = B_PERIPHERAL; + dwc_otg_core_init(core_if); + dwc_otg_enable_global_interrupts(core_if); + cil_pcd_start(core_if); + } else { + /* A-Device connector (Host Mode) */ + while (!dwc_otg_is_host_mode(core_if)) { + DWC_PRINTF("Waiting for Host Mode, Mode=%s\n", + (dwc_otg_is_host_mode(core_if) ? "Host" : + "Peripheral")); + dwc_mdelay(100); + if (++count > 10000) + break; + } + DWC_ASSERT(++count < 10000, + "Connection id status change timed out"); + core_if->op_state = A_HOST; + /* + * Initialize the Core for Host mode. + */ + dwc_otg_core_init(core_if); + dwc_otg_enable_global_interrupts(core_if); + cil_hcd_start(core_if); + } +} + +/** + * This function handles the Connector ID Status Change Interrupt. It + * reads the OTG Interrupt Register (GOTCTL) to determine whether this + * is a Device to Host Mode transition or a Host Mode to Device + * Transition. + * + * This only occurs when the cable is connected/removed from the PHY + * connector. + * + * @param core_if Programming view of DWC_otg controller. + */ +int32_t dwc_otg_handle_conn_id_status_change_intr(dwc_otg_core_if_t * core_if) +{ + + /* + * Need to disable SOF interrupt immediately. If switching from device + * to host, the PCD interrupt handler won't handle the interrupt if + * host mode is already set. The HCD interrupt handler won't get + * called if the HCD state is HALT. This means that the interrupt does + * not get handled and Linux complains loudly. + */ + gintmsk_data_t gintmsk = {.d32 = 0 }; + gintsts_data_t gintsts = {.d32 = 0 }; + + gintmsk.b.sofintr = 1; + DWC_MODIFY_REG32(&core_if->core_global_regs->gintmsk, gintmsk.d32, 0); + + DWC_DEBUGPL(DBG_CIL, + " ++Connector ID Status Change Interrupt++ (%s)\n", + (dwc_otg_is_host_mode(core_if) ? "Host" : "Device")); + + DWC_SPINUNLOCK(core_if->lock); + + /* + * Need to schedule a work, as there are possible DELAY function calls + * Release lock before scheduling workq as it holds spinlock during scheduling + */ + + DWC_WORKQ_SCHEDULE(core_if->wq_otg, w_conn_id_status_change, + core_if, "connection id status change"); + DWC_SPINLOCK(core_if->lock); + + /* Set flag and clear interrupt */ + gintsts.b.conidstschng = 1; + DWC_WRITE_REG32(&core_if->core_global_regs->gintsts, gintsts.d32); + + return 1; +} + +/** + * This interrupt indicates that a device is initiating the Session + * Request Protocol to request the host to turn on bus power so a new + * session can begin. The handler responds by turning on bus power. If + * the DWC_otg controller is in low power mode, the handler brings the + * controller out of low power mode before turning on bus power. + * + * @param core_if Programming view of DWC_otg controller. + */ +int32_t dwc_otg_handle_session_req_intr(dwc_otg_core_if_t * core_if) +{ + gintsts_data_t gintsts; + +#ifndef DWC_HOST_ONLY + DWC_DEBUGPL(DBG_ANY, "++Session Request Interrupt++\n"); + + if (dwc_otg_is_device_mode(core_if)) { + DWC_PRINTF("SRP: Device mode\n"); + } else { + hprt0_data_t hprt0; + DWC_PRINTF("SRP: Host mode\n"); + + /* Turn on the port power bit. */ + hprt0.d32 = dwc_otg_read_hprt0(core_if); + hprt0.b.prtpwr = 1; + DWC_WRITE_REG32(core_if->host_if->hprt0, hprt0.d32); + + /* Start the Connection timer. So a message can be displayed + * if connect does not occur within 10 seconds. */ + cil_hcd_session_start(core_if); + } +#endif + + /* Clear interrupt */ + gintsts.d32 = 0; + gintsts.b.sessreqintr = 1; + DWC_WRITE_REG32(&core_if->core_global_regs->gintsts, gintsts.d32); + + return 1; +} + +void w_wakeup_detected(void *p) +{ + dwc_otg_core_if_t *core_if = (dwc_otg_core_if_t *) p; + /* + * Clear the Resume after 70ms. (Need 20 ms minimum. Use 70 ms + * so that OPT tests pass with all PHYs). + */ + hprt0_data_t hprt0 = {.d32 = 0 }; +#if 0 + pcgcctl_data_t pcgcctl = {.d32 = 0 }; + /* Restart the Phy Clock */ + pcgcctl.b.stoppclk = 1; + DWC_MODIFY_REG32(core_if->pcgcctl, pcgcctl.d32, 0); + dwc_udelay(10); +#endif //0 + hprt0.d32 = dwc_otg_read_hprt0(core_if); + DWC_DEBUGPL(DBG_ANY, "Resume: HPRT0=%0x\n", hprt0.d32); +// dwc_mdelay(70); + hprt0.b.prtres = 0; /* Resume */ + DWC_WRITE_REG32(core_if->host_if->hprt0, hprt0.d32); + DWC_DEBUGPL(DBG_ANY, "Clear Resume: HPRT0=%0x\n", + DWC_READ_REG32(core_if->host_if->hprt0)); + + cil_hcd_resume(core_if); + + /** Change to L0 state*/ + core_if->lx_state = DWC_OTG_L0; +} + +/** + * This interrupt indicates that the DWC_otg controller has detected a + * resume or remote wakeup sequence. If the DWC_otg controller is in + * low power mode, the handler must brings the controller out of low + * power mode. The controller automatically begins resume + * signaling. The handler schedules a time to stop resume signaling. + */ +int32_t dwc_otg_handle_wakeup_detected_intr(dwc_otg_core_if_t * core_if) +{ + gintsts_data_t gintsts; + + DWC_DEBUGPL(DBG_ANY, + "++Resume and Remote Wakeup Detected Interrupt++\n"); + + DWC_PRINTF("%s lxstate = %d\n", __func__, core_if->lx_state); + + if (dwc_otg_is_device_mode(core_if)) { + dctl_data_t dctl = {.d32 = 0 }; + DWC_DEBUGPL(DBG_PCD, "DSTS=0x%0x\n", + DWC_READ_REG32(&core_if->dev_if->dev_global_regs-> + dsts)); + if (core_if->lx_state == DWC_OTG_L2) { +#ifdef PARTIAL_POWER_DOWN + if (core_if->hwcfg4.b.power_optimiz) { + pcgcctl_data_t power = {.d32 = 0 }; + + power.d32 = DWC_READ_REG32(core_if->pcgcctl); + DWC_DEBUGPL(DBG_CIL, "PCGCCTL=%0x\n", + power.d32); + + power.b.stoppclk = 0; + DWC_WRITE_REG32(core_if->pcgcctl, power.d32); + + power.b.pwrclmp = 0; + DWC_WRITE_REG32(core_if->pcgcctl, power.d32); + + power.b.rstpdwnmodule = 0; + DWC_WRITE_REG32(core_if->pcgcctl, power.d32); + } +#endif + /* Clear the Remote Wakeup Signaling */ + dctl.b.rmtwkupsig = 1; + DWC_MODIFY_REG32(&core_if->dev_if->dev_global_regs-> + dctl, dctl.d32, 0); + + DWC_SPINUNLOCK(core_if->lock); + if (core_if->pcd_cb && core_if->pcd_cb->resume_wakeup) { + core_if->pcd_cb->resume_wakeup(core_if->pcd_cb->p); + } + DWC_SPINLOCK(core_if->lock); + } else { + glpmcfg_data_t lpmcfg; + lpmcfg.d32 = + DWC_READ_REG32(&core_if->core_global_regs->glpmcfg); + lpmcfg.b.hird_thres &= (~(1 << 4)); + DWC_WRITE_REG32(&core_if->core_global_regs->glpmcfg, + lpmcfg.d32); + } + /** Change to L0 state*/ + core_if->lx_state = DWC_OTG_L0; + } else { + if (core_if->lx_state != DWC_OTG_L1) { + pcgcctl_data_t pcgcctl = {.d32 = 0 }; + + /* Restart the Phy Clock */ + pcgcctl.b.stoppclk = 1; + DWC_MODIFY_REG32(core_if->pcgcctl, pcgcctl.d32, 0); + DWC_TIMER_SCHEDULE(core_if->wkp_timer, 71); + } else { + /** Change to L0 state*/ + core_if->lx_state = DWC_OTG_L0; + } + } + + /* Clear interrupt */ + gintsts.d32 = 0; + gintsts.b.wkupintr = 1; + DWC_WRITE_REG32(&core_if->core_global_regs->gintsts, gintsts.d32); + + return 1; +} + +/** + * This interrupt indicates that the Wakeup Logic has detected a + * Device disconnect. + */ +static int32_t dwc_otg_handle_pwrdn_disconnect_intr(dwc_otg_core_if_t *core_if) +{ + gpwrdn_data_t gpwrdn = { .d32 = 0 }; + gpwrdn_data_t gpwrdn_temp = { .d32 = 0 }; + gpwrdn_temp.d32 = DWC_READ_REG32(&core_if->core_global_regs->gpwrdn); + + DWC_PRINTF("%s called\n", __FUNCTION__); + + if (!core_if->hibernation_suspend) { + DWC_PRINTF("Already exited from Hibernation\n"); + return 1; + } + + /* Switch on the voltage to the core */ + gpwrdn.b.pwrdnswtch = 1; + DWC_MODIFY_REG32(&core_if->core_global_regs->gpwrdn, gpwrdn.d32, 0); + dwc_udelay(10); + + /* Reset the core */ + gpwrdn.d32 = 0; + gpwrdn.b.pwrdnrstn = 1; + DWC_MODIFY_REG32(&core_if->core_global_regs->gpwrdn, gpwrdn.d32, 0); + dwc_udelay(10); + + /* Disable power clamps*/ + gpwrdn.d32 = 0; + gpwrdn.b.pwrdnclmp = 1; + DWC_MODIFY_REG32(&core_if->core_global_regs->gpwrdn, gpwrdn.d32, 0); + + /* Remove reset the core signal */ + gpwrdn.d32 = 0; + gpwrdn.b.pwrdnrstn = 1; + DWC_MODIFY_REG32(&core_if->core_global_regs->gpwrdn, 0, gpwrdn.d32); + dwc_udelay(10); + + /* Disable PMU interrupt */ + gpwrdn.d32 = 0; + gpwrdn.b.pmuintsel = 1; + DWC_MODIFY_REG32(&core_if->core_global_regs->gpwrdn, gpwrdn.d32, 0); + + core_if->hibernation_suspend = 0; + + /* Disable PMU */ + gpwrdn.d32 = 0; + gpwrdn.b.pmuactv = 1; + DWC_MODIFY_REG32(&core_if->core_global_regs->gpwrdn, gpwrdn.d32, 0); + dwc_udelay(10); + + if (gpwrdn_temp.b.idsts) { + core_if->op_state = B_PERIPHERAL; + dwc_otg_core_init(core_if); + dwc_otg_enable_global_interrupts(core_if); + cil_pcd_start(core_if); + } else { + core_if->op_state = A_HOST; + dwc_otg_core_init(core_if); + dwc_otg_enable_global_interrupts(core_if); + cil_hcd_start(core_if); + } + + return 1; +} + +/** + * This interrupt indicates that the Wakeup Logic has detected a + * remote wakeup sequence. + */ +static int32_t dwc_otg_handle_pwrdn_wakeup_detected_intr(dwc_otg_core_if_t * core_if) +{ + gpwrdn_data_t gpwrdn = {.d32 = 0 }; + DWC_DEBUGPL(DBG_ANY, + "++Powerdown Remote Wakeup Detected Interrupt++\n"); + + if (!core_if->hibernation_suspend) { + DWC_PRINTF("Already exited from Hibernation\n"); + return 1; + } + + gpwrdn.d32 = DWC_READ_REG32(&core_if->core_global_regs->gpwrdn); + if (gpwrdn.b.idsts) { // Device Mode + if ((core_if->power_down == 2) + && (core_if->hibernation_suspend == 1)) { + dwc_otg_device_hibernation_restore(core_if, 0, 0); + } + } else { + if ((core_if->power_down == 2) + && (core_if->hibernation_suspend == 1)) { + dwc_otg_host_hibernation_restore(core_if, 1, 0); + } + } + return 1; +} + +static int32_t dwc_otg_handle_pwrdn_idsts_change(dwc_otg_device_t *otg_dev) +{ + gpwrdn_data_t gpwrdn = {.d32 = 0 }; + gpwrdn_data_t gpwrdn_temp = {.d32 = 0 }; + dwc_otg_core_if_t *core_if = otg_dev->core_if; + + DWC_DEBUGPL(DBG_ANY, "%s called\n", __FUNCTION__); + gpwrdn_temp.d32 = DWC_READ_REG32(&core_if->core_global_regs->gpwrdn); + if (core_if->power_down == 2) { + if (!core_if->hibernation_suspend) { + DWC_PRINTF("Already exited from Hibernation\n"); + return 1; + } + DWC_DEBUGPL(DBG_ANY, "Exit from hibernation on ID sts change\n"); + /* Switch on the voltage to the core */ + gpwrdn.b.pwrdnswtch = 1; + DWC_MODIFY_REG32(&core_if->core_global_regs->gpwrdn, gpwrdn.d32, 0); + dwc_udelay(10); + + /* Reset the core */ + gpwrdn.d32 = 0; + gpwrdn.b.pwrdnrstn = 1; + DWC_MODIFY_REG32(&core_if->core_global_regs->gpwrdn, gpwrdn.d32, 0); + dwc_udelay(10); + + /* Disable power clamps */ + gpwrdn.d32 = 0; + gpwrdn.b.pwrdnclmp = 1; + DWC_MODIFY_REG32(&core_if->core_global_regs->gpwrdn, gpwrdn.d32, 0); + + /* Remove reset the core signal */ + gpwrdn.d32 = 0; + gpwrdn.b.pwrdnrstn = 1; + DWC_MODIFY_REG32(&core_if->core_global_regs->gpwrdn, 0, gpwrdn.d32); + dwc_udelay(10); + + /* Disable PMU interrupt */ + gpwrdn.d32 = 0; + gpwrdn.b.pmuintsel = 1; + DWC_MODIFY_REG32(&core_if->core_global_regs->gpwrdn, gpwrdn.d32, 0); + + /*Indicates that we are exiting from hibernation */ + core_if->hibernation_suspend = 0; + + /* Disable PMU */ + gpwrdn.d32 = 0; + gpwrdn.b.pmuactv = 1; + DWC_MODIFY_REG32(&core_if->core_global_regs->gpwrdn, gpwrdn.d32, 0); + dwc_udelay(10); + + gpwrdn.d32 = core_if->gr_backup->gpwrdn_local; + if (gpwrdn.b.dis_vbus == 1) { + gpwrdn.d32 = 0; + gpwrdn.b.dis_vbus = 1; + DWC_MODIFY_REG32(&core_if->core_global_regs->gpwrdn, gpwrdn.d32, 0); + } + + if (gpwrdn_temp.b.idsts) { + core_if->op_state = B_PERIPHERAL; + dwc_otg_core_init(core_if); + dwc_otg_enable_global_interrupts(core_if); + cil_pcd_start(core_if); + } else { + core_if->op_state = A_HOST; + dwc_otg_core_init(core_if); + dwc_otg_enable_global_interrupts(core_if); + cil_hcd_start(core_if); + } + } + + if (core_if->adp_enable) { + uint8_t is_host = 0; + DWC_SPINUNLOCK(core_if->lock); + /* Change the core_if's lock to hcd/pcd lock depend on mode? */ +#ifndef DWC_HOST_ONLY + if (gpwrdn_temp.b.idsts) + core_if->lock = otg_dev->pcd->lock; +#endif +#ifndef DWC_DEVICE_ONLY + if (!gpwrdn_temp.b.idsts) { + core_if->lock = otg_dev->hcd->lock; + is_host = 1; + } +#endif + DWC_PRINTF("RESTART ADP\n"); + if (core_if->adp.probe_enabled) + dwc_otg_adp_probe_stop(core_if); + if (core_if->adp.sense_enabled) + dwc_otg_adp_sense_stop(core_if); + if (core_if->adp.sense_timer_started) + DWC_TIMER_CANCEL(core_if->adp.sense_timer); + if (core_if->adp.vbuson_timer_started) + DWC_TIMER_CANCEL(core_if->adp.vbuson_timer); + core_if->adp.probe_timer_values[0] = -1; + core_if->adp.probe_timer_values[1] = -1; + core_if->adp.sense_timer_started = 0; + core_if->adp.vbuson_timer_started = 0; + core_if->adp.probe_counter = 0; + core_if->adp.gpwrdn = 0; + + /* Disable PMU and restart ADP */ + gpwrdn_temp.d32 = 0; + gpwrdn_temp.b.pmuactv = 1; + gpwrdn_temp.b.pmuintsel = 1; + DWC_MODIFY_REG32(&core_if->core_global_regs->gpwrdn, gpwrdn.d32, 0); + DWC_PRINTF("Check point 1\n"); + dwc_mdelay(110); + dwc_otg_adp_start(core_if, is_host); + DWC_SPINLOCK(core_if->lock); + } + + + return 1; +} + +static int32_t dwc_otg_handle_pwrdn_session_change(dwc_otg_core_if_t * core_if) +{ + gpwrdn_data_t gpwrdn = {.d32 = 0 }; + int32_t otg_cap_param = core_if->core_params->otg_cap; + DWC_DEBUGPL(DBG_ANY, "%s called\n", __FUNCTION__); + + gpwrdn.d32 = DWC_READ_REG32(&core_if->core_global_regs->gpwrdn); + if (core_if->power_down == 2) { + if (!core_if->hibernation_suspend) { + DWC_PRINTF("Already exited from Hibernation\n"); + return 1; + } + + if ((otg_cap_param != DWC_OTG_CAP_PARAM_HNP_SRP_CAPABLE || + otg_cap_param != DWC_OTG_CAP_PARAM_SRP_ONLY_CAPABLE) && + gpwrdn.b.bsessvld == 0) { + /* Save gpwrdn register for further usage if stschng interrupt */ + core_if->gr_backup->gpwrdn_local = + DWC_READ_REG32(&core_if->core_global_regs->gpwrdn); + /*Exit from ISR and wait for stschng interrupt with bsessvld = 1 */ + return 1; + } + + /* Switch on the voltage to the core */ + gpwrdn.d32 = 0; + gpwrdn.b.pwrdnswtch = 1; + DWC_MODIFY_REG32(&core_if->core_global_regs->gpwrdn, gpwrdn.d32, 0); + dwc_udelay(10); + + /* Reset the core */ + gpwrdn.d32 = 0; + gpwrdn.b.pwrdnrstn = 1; + DWC_MODIFY_REG32(&core_if->core_global_regs->gpwrdn, gpwrdn.d32, 0); + dwc_udelay(10); + + /* Disable power clamps */ + gpwrdn.d32 = 0; + gpwrdn.b.pwrdnclmp = 1; + DWC_MODIFY_REG32(&core_if->core_global_regs->gpwrdn, gpwrdn.d32, 0); + + /* Remove reset the core signal */ + gpwrdn.d32 = 0; + gpwrdn.b.pwrdnrstn = 1; + DWC_MODIFY_REG32(&core_if->core_global_regs->gpwrdn, 0, gpwrdn.d32); + dwc_udelay(10); + + /* Disable PMU interrupt */ + gpwrdn.d32 = 0; + gpwrdn.b.pmuintsel = 1; + DWC_MODIFY_REG32(&core_if->core_global_regs->gpwrdn, gpwrdn.d32, 0); + dwc_udelay(10); + + /*Indicates that we are exiting from hibernation */ + core_if->hibernation_suspend = 0; + + /* Disable PMU */ + gpwrdn.d32 = 0; + gpwrdn.b.pmuactv = 1; + DWC_MODIFY_REG32(&core_if->core_global_regs->gpwrdn, gpwrdn.d32, 0); + dwc_udelay(10); + + core_if->op_state = B_PERIPHERAL; + dwc_otg_core_init(core_if); + dwc_otg_enable_global_interrupts(core_if); + cil_pcd_start(core_if); + + if (otg_cap_param == DWC_OTG_CAP_PARAM_HNP_SRP_CAPABLE || + otg_cap_param == DWC_OTG_CAP_PARAM_SRP_ONLY_CAPABLE) { + /* + * Initiate SRP after initial ADP probe. + */ + dwc_otg_initiate_srp(core_if); + } + } + + return 1; +} +/** + * This interrupt indicates that the Wakeup Logic has detected a + * status change either on IDDIG or BSessVld. + */ +static uint32_t dwc_otg_handle_pwrdn_stschng_intr(dwc_otg_device_t *otg_dev) +{ + int retval; + gpwrdn_data_t gpwrdn = {.d32 = 0 }; + gpwrdn_data_t gpwrdn_temp = {.d32 = 0 }; + dwc_otg_core_if_t *core_if = otg_dev->core_if; + + DWC_PRINTF("%s called\n", __FUNCTION__); + + if (core_if->power_down == 2) { + if (core_if->hibernation_suspend <= 0) { + DWC_PRINTF("Already exited from Hibernation\n"); + return 1; + } else + gpwrdn_temp.d32 = core_if->gr_backup->gpwrdn_local; + + } else { + gpwrdn_temp.d32 = core_if->adp.gpwrdn; + } + + gpwrdn.d32 = DWC_READ_REG32(&core_if->core_global_regs->gpwrdn); + + if (gpwrdn.b.idsts ^ gpwrdn_temp.b.idsts) { + retval = dwc_otg_handle_pwrdn_idsts_change(otg_dev); + } else if (gpwrdn.b.bsessvld ^ gpwrdn_temp.b.bsessvld) { + retval = dwc_otg_handle_pwrdn_session_change(core_if); + } + + return retval; +} + +/** + * This interrupt indicates that the Wakeup Logic has detected a + * SRP. + */ +static int32_t dwc_otg_handle_pwrdn_srp_intr(dwc_otg_core_if_t * core_if) +{ + gpwrdn_data_t gpwrdn = {.d32 = 0 }; + + DWC_PRINTF("%s called\n", __FUNCTION__); + + if (!core_if->hibernation_suspend) { + DWC_PRINTF("Already exited from Hibernation\n"); + return 1; + } +#ifdef DWC_DEV_SRPCAP + if (core_if->pwron_timer_started) { + core_if->pwron_timer_started = 0; + DWC_TIMER_CANCEL(core_if->pwron_timer); + } +#endif + + /* Switch on the voltage to the core */ + gpwrdn.b.pwrdnswtch = 1; + DWC_MODIFY_REG32(&core_if->core_global_regs->gpwrdn, gpwrdn.d32, 0); + dwc_udelay(10); + + /* Reset the core */ + gpwrdn.d32 = 0; + gpwrdn.b.pwrdnrstn = 1; + DWC_MODIFY_REG32(&core_if->core_global_regs->gpwrdn, gpwrdn.d32, 0); + dwc_udelay(10); + + /* Disable power clamps */ + gpwrdn.d32 = 0; + gpwrdn.b.pwrdnclmp = 1; + DWC_MODIFY_REG32(&core_if->core_global_regs->gpwrdn, gpwrdn.d32, 0); + + /* Remove reset the core signal */ + gpwrdn.d32 = 0; + gpwrdn.b.pwrdnrstn = 1; + DWC_MODIFY_REG32(&core_if->core_global_regs->gpwrdn, 0, gpwrdn.d32); + dwc_udelay(10); + + /* Disable PMU interrupt */ + gpwrdn.d32 = 0; + gpwrdn.b.pmuintsel = 1; + DWC_MODIFY_REG32(&core_if->core_global_regs->gpwrdn, gpwrdn.d32, 0); + + /* Indicates that we are exiting from hibernation */ + core_if->hibernation_suspend = 0; + + /* Disable PMU */ + gpwrdn.d32 = 0; + gpwrdn.b.pmuactv = 1; + DWC_MODIFY_REG32(&core_if->core_global_regs->gpwrdn, gpwrdn.d32, 0); + dwc_udelay(10); + + /* Programm Disable VBUS to 0 */ + gpwrdn.d32 = 0; + gpwrdn.b.dis_vbus = 1; + DWC_MODIFY_REG32(&core_if->core_global_regs->gpwrdn, gpwrdn.d32, 0); + + /*Initialize the core as Host */ + core_if->op_state = A_HOST; + dwc_otg_core_init(core_if); + dwc_otg_enable_global_interrupts(core_if); + cil_hcd_start(core_if); + + return 1; +} + +/** This interrupt indicates that restore command after Hibernation + * was completed by the core. */ +int32_t dwc_otg_handle_restore_done_intr(dwc_otg_core_if_t * core_if) +{ + pcgcctl_data_t pcgcctl; + DWC_DEBUGPL(DBG_ANY, "++Restore Done Interrupt++\n"); + + //TODO De-assert restore signal. 8.a + pcgcctl.d32 = DWC_READ_REG32(core_if->pcgcctl); + if (pcgcctl.b.restoremode == 1) { + gintmsk_data_t gintmsk = {.d32 = 0 }; + /* + * If restore mode is Remote Wakeup, + * unmask Remote Wakeup interrupt. + */ + gintmsk.b.wkupintr = 1; + DWC_MODIFY_REG32(&core_if->core_global_regs->gintmsk, + 0, gintmsk.d32); + } + + return 1; +} + +/** + * This interrupt indicates that a device has been disconnected from + * the root port. + */ +int32_t dwc_otg_handle_disconnect_intr(dwc_otg_core_if_t * core_if) +{ + gintsts_data_t gintsts; + + DWC_DEBUGPL(DBG_ANY, "++Disconnect Detected Interrupt++ (%s) %s\n", + (dwc_otg_is_host_mode(core_if) ? "Host" : "Device"), + op_state_str(core_if)); + +/** @todo Consolidate this if statement. */ +#ifndef DWC_HOST_ONLY + if (core_if->op_state == B_HOST) { + /* If in device mode Disconnect and stop the HCD, then + * start the PCD. */ + DWC_SPINUNLOCK(core_if->lock); + cil_hcd_disconnect(core_if); + cil_pcd_start(core_if); + DWC_SPINLOCK(core_if->lock); + core_if->op_state = B_PERIPHERAL; + } else if (dwc_otg_is_device_mode(core_if)) { + gotgctl_data_t gotgctl = {.d32 = 0 }; + gotgctl.d32 = + DWC_READ_REG32(&core_if->core_global_regs->gotgctl); + if (gotgctl.b.hstsethnpen == 1) { + /* Do nothing, if HNP in process the OTG + * interrupt "Host Negotiation Detected" + * interrupt will do the mode switch. + */ + } else if (gotgctl.b.devhnpen == 0) { + /* If in device mode Disconnect and stop the HCD, then + * start the PCD. */ + DWC_SPINUNLOCK(core_if->lock); + cil_hcd_disconnect(core_if); + cil_pcd_start(core_if); + DWC_SPINLOCK(core_if->lock); + core_if->op_state = B_PERIPHERAL; + } else { + DWC_DEBUGPL(DBG_ANY, "!a_peripheral && !devhnpen\n"); + } + } else { + if (core_if->op_state == A_HOST) { + /* A-Cable still connected but device disconnected. */ + cil_hcd_disconnect(core_if); + if (core_if->adp_enable) { + gpwrdn_data_t gpwrdn = { .d32 = 0 }; + cil_hcd_stop(core_if); + /* Enable Power Down Logic */ + gpwrdn.b.pmuintsel = 1; + gpwrdn.b.pmuactv = 1; + DWC_MODIFY_REG32(&core_if->core_global_regs-> + gpwrdn, 0, gpwrdn.d32); + dwc_otg_adp_probe_start(core_if); + + /* Power off the core */ + if (core_if->power_down == 2) { + gpwrdn.d32 = 0; + gpwrdn.b.pwrdnswtch = 1; + DWC_MODIFY_REG32 + (&core_if->core_global_regs->gpwrdn, + gpwrdn.d32, 0); + } + } + } + } +#endif + /* Change to L3(OFF) state */ + core_if->lx_state = DWC_OTG_L3; + + gintsts.d32 = 0; + gintsts.b.disconnect = 1; + DWC_WRITE_REG32(&core_if->core_global_regs->gintsts, gintsts.d32); + return 1; +} + +/** + * This interrupt indicates that SUSPEND state has been detected on + * the USB. + * + * For HNP the USB Suspend interrupt signals the change from + * "a_peripheral" to "a_host". + * + * When power management is enabled the core will be put in low power + * mode. + */ +int32_t dwc_otg_handle_usb_suspend_intr(dwc_otg_core_if_t * core_if) +{ + dsts_data_t dsts; + gintsts_data_t gintsts; + dcfg_data_t dcfg; + + DWC_DEBUGPL(DBG_ANY, "USB SUSPEND\n"); + + if (dwc_otg_is_device_mode(core_if)) { + /* Check the Device status register to determine if the Suspend + * state is active. */ + dsts.d32 = + DWC_READ_REG32(&core_if->dev_if->dev_global_regs->dsts); + DWC_DEBUGPL(DBG_PCD, "DSTS=0x%0x\n", dsts.d32); + DWC_DEBUGPL(DBG_PCD, "DSTS.Suspend Status=%d " + "HWCFG4.power Optimize=%d\n", + dsts.b.suspsts, core_if->hwcfg4.b.power_optimiz); + +#ifdef PARTIAL_POWER_DOWN +/** @todo Add a module parameter for power management. */ + + if (dsts.b.suspsts && core_if->hwcfg4.b.power_optimiz) { + pcgcctl_data_t power = {.d32 = 0 }; + DWC_DEBUGPL(DBG_CIL, "suspend\n"); + + power.b.pwrclmp = 1; + DWC_WRITE_REG32(core_if->pcgcctl, power.d32); + + power.b.rstpdwnmodule = 1; + DWC_MODIFY_REG32(core_if->pcgcctl, 0, power.d32); + + power.b.stoppclk = 1; + DWC_MODIFY_REG32(core_if->pcgcctl, 0, power.d32); + + } else { + DWC_DEBUGPL(DBG_ANY, "disconnect?\n"); + } +#endif + /* PCD callback for suspend. Release the lock inside of callback function */ + cil_pcd_suspend(core_if); + if (core_if->power_down == 2) + { + dcfg.d32 = DWC_READ_REG32(&core_if->dev_if->dev_global_regs->dcfg); + DWC_DEBUGPL(DBG_ANY,"lx_state = %08x\n",core_if->lx_state); + DWC_DEBUGPL(DBG_ANY," device address = %08d\n",dcfg.b.devaddr); + + if (core_if->lx_state != DWC_OTG_L3 && dcfg.b.devaddr) { + pcgcctl_data_t pcgcctl = {.d32 = 0 }; + gpwrdn_data_t gpwrdn = {.d32 = 0 }; + gusbcfg_data_t gusbcfg = {.d32 = 0 }; + + /* Change to L2(suspend) state */ + core_if->lx_state = DWC_OTG_L2; + + /* Clear interrupt in gintsts */ + gintsts.d32 = 0; + gintsts.b.usbsuspend = 1; + DWC_WRITE_REG32(&core_if->core_global_regs-> + gintsts, gintsts.d32); + DWC_PRINTF("Start of hibernation completed\n"); + dwc_otg_save_global_regs(core_if); + dwc_otg_save_dev_regs(core_if); + + gusbcfg.d32 = + DWC_READ_REG32(&core_if->core_global_regs-> + gusbcfg); + if (gusbcfg.b.ulpi_utmi_sel == 1) { + /* ULPI interface */ + /* Suspend the Phy Clock */ + pcgcctl.d32 = 0; + pcgcctl.b.stoppclk = 1; + DWC_MODIFY_REG32(core_if->pcgcctl, 0, + pcgcctl.d32); + dwc_udelay(10); + gpwrdn.b.pmuactv = 1; + DWC_MODIFY_REG32(&core_if-> + core_global_regs-> + gpwrdn, 0, gpwrdn.d32); + } else { + /* UTMI+ Interface */ + gpwrdn.b.pmuactv = 1; + DWC_MODIFY_REG32(&core_if-> + core_global_regs-> + gpwrdn, 0, gpwrdn.d32); + dwc_udelay(10); + pcgcctl.b.stoppclk = 1; + DWC_MODIFY_REG32(core_if->pcgcctl, 0, + pcgcctl.d32); + dwc_udelay(10); + } + + /* Set flag to indicate that we are in hibernation */ + core_if->hibernation_suspend = 1; + /* Enable interrupts from wake up logic */ + gpwrdn.d32 = 0; + gpwrdn.b.pmuintsel = 1; + DWC_MODIFY_REG32(&core_if->core_global_regs-> + gpwrdn, 0, gpwrdn.d32); + dwc_udelay(10); + + /* Unmask device mode interrupts in GPWRDN */ + gpwrdn.d32 = 0; + gpwrdn.b.rst_det_msk = 1; + gpwrdn.b.lnstchng_msk = 1; + gpwrdn.b.sts_chngint_msk = 1; + DWC_MODIFY_REG32(&core_if->core_global_regs-> + gpwrdn, 0, gpwrdn.d32); + dwc_udelay(10); + + /* Enable Power Down Clamp */ + gpwrdn.d32 = 0; + gpwrdn.b.pwrdnclmp = 1; + DWC_MODIFY_REG32(&core_if->core_global_regs-> + gpwrdn, 0, gpwrdn.d32); + dwc_udelay(10); + + /* Switch off VDD */ + gpwrdn.d32 = 0; + gpwrdn.b.pwrdnswtch = 1; + DWC_MODIFY_REG32(&core_if->core_global_regs-> + gpwrdn, 0, gpwrdn.d32); + + /* Save gpwrdn register for further usage if stschng interrupt */ + core_if->gr_backup->gpwrdn_local = + DWC_READ_REG32(&core_if->core_global_regs->gpwrdn); + DWC_PRINTF("Hibernation completed\n"); + + return 1; + } + } else if (core_if->power_down == 3) { + pcgcctl_data_t pcgcctl = {.d32 = 0 }; + dcfg.d32 = DWC_READ_REG32(&core_if->dev_if->dev_global_regs->dcfg); + DWC_DEBUGPL(DBG_ANY, "lx_state = %08x\n",core_if->lx_state); + DWC_DEBUGPL(DBG_ANY, " device address = %08d\n",dcfg.b.devaddr); + + if (core_if->lx_state != DWC_OTG_L3 && dcfg.b.devaddr) { + DWC_DEBUGPL(DBG_ANY, "Start entering to extended hibernation\n"); + core_if->xhib = 1; + + /* Clear interrupt in gintsts */ + gintsts.d32 = 0; + gintsts.b.usbsuspend = 1; + DWC_WRITE_REG32(&core_if->core_global_regs-> + gintsts, gintsts.d32); + + dwc_otg_save_global_regs(core_if); + dwc_otg_save_dev_regs(core_if); + + /* Wait for 10 PHY clocks */ + dwc_udelay(10); + + /* Program GPIO register while entering to xHib */ + DWC_WRITE_REG32(&core_if->core_global_regs->ggpio, 0x1); + + pcgcctl.b.enbl_extnd_hiber = 1; + DWC_MODIFY_REG32(core_if->pcgcctl, 0, pcgcctl.d32); + DWC_MODIFY_REG32(core_if->pcgcctl, 0, pcgcctl.d32); + + pcgcctl.d32 = 0; + pcgcctl.b.extnd_hiber_pwrclmp = 1; + DWC_MODIFY_REG32(core_if->pcgcctl, 0, pcgcctl.d32); + + pcgcctl.d32 = 0; + pcgcctl.b.extnd_hiber_switch = 1; + core_if->gr_backup->xhib_gpwrdn = DWC_READ_REG32(&core_if->core_global_regs->gpwrdn); + core_if->gr_backup->xhib_pcgcctl = DWC_READ_REG32(core_if->pcgcctl) | pcgcctl.d32; + DWC_MODIFY_REG32(core_if->pcgcctl, 0, pcgcctl.d32); + + DWC_DEBUGPL(DBG_ANY, "Finished entering to extended hibernation\n"); + + return 1; + } + } + } else { + if (core_if->op_state == A_PERIPHERAL) { + DWC_DEBUGPL(DBG_ANY, "a_peripheral->a_host\n"); + /* Clear the a_peripheral flag, back to a_host. */ + DWC_SPINUNLOCK(core_if->lock); + cil_pcd_stop(core_if); + cil_hcd_start(core_if); + DWC_SPINLOCK(core_if->lock); + core_if->op_state = A_HOST; + } + } + + /* Change to L2(suspend) state */ + core_if->lx_state = DWC_OTG_L2; + + /* Clear interrupt */ + gintsts.d32 = 0; + gintsts.b.usbsuspend = 1; + DWC_WRITE_REG32(&core_if->core_global_regs->gintsts, gintsts.d32); + + return 1; +} + +static int32_t dwc_otg_handle_xhib_exit_intr(dwc_otg_core_if_t * core_if) +{ + gpwrdn_data_t gpwrdn = {.d32 = 0 }; + pcgcctl_data_t pcgcctl = {.d32 = 0 }; + gahbcfg_data_t gahbcfg = {.d32 = 0 }; + + dwc_udelay(10); + + /* Program GPIO register while entering to xHib */ + DWC_WRITE_REG32(&core_if->core_global_regs->ggpio, 0x0); + + pcgcctl.d32 = core_if->gr_backup->xhib_pcgcctl; + pcgcctl.b.extnd_hiber_pwrclmp = 0; + DWC_WRITE_REG32(core_if->pcgcctl, pcgcctl.d32); + dwc_udelay(10); + + gpwrdn.d32 = core_if->gr_backup->xhib_gpwrdn; + gpwrdn.b.restore = 1; + DWC_WRITE_REG32(&core_if->core_global_regs->gpwrdn, gpwrdn.d32); + dwc_udelay(10); + + restore_lpm_i2c_regs(core_if); + + pcgcctl.d32 = core_if->gr_backup->pcgcctl_local & (0x3FFFF << 14); + pcgcctl.b.max_xcvrselect = 1; + pcgcctl.b.ess_reg_restored = 0; + pcgcctl.b.extnd_hiber_switch = 0; + pcgcctl.b.extnd_hiber_pwrclmp = 0; + pcgcctl.b.enbl_extnd_hiber = 1; + DWC_WRITE_REG32(core_if->pcgcctl, pcgcctl.d32); + + gahbcfg.d32 = core_if->gr_backup->gahbcfg_local; + gahbcfg.b.glblintrmsk = 1; + DWC_WRITE_REG32(&core_if->core_global_regs->gahbcfg, gahbcfg.d32); + + DWC_WRITE_REG32(&core_if->core_global_regs->gintsts, 0xFFFFFFFF); + DWC_WRITE_REG32(&core_if->core_global_regs->gintmsk, 0x1 << 16); + + DWC_WRITE_REG32(&core_if->core_global_regs->gusbcfg, + core_if->gr_backup->gusbcfg_local); + DWC_WRITE_REG32(&core_if->dev_if->dev_global_regs->dcfg, + core_if->dr_backup->dcfg); + + pcgcctl.d32 = 0; + pcgcctl.d32 = core_if->gr_backup->pcgcctl_local & (0x3FFFF << 14); + pcgcctl.b.max_xcvrselect = 1; + pcgcctl.d32 |= 0x608; + DWC_WRITE_REG32(core_if->pcgcctl, pcgcctl.d32); + dwc_udelay(10); + + pcgcctl.d32 = 0; + pcgcctl.d32 = core_if->gr_backup->pcgcctl_local & (0x3FFFF << 14); + pcgcctl.b.max_xcvrselect = 1; + pcgcctl.b.ess_reg_restored = 1; + pcgcctl.b.enbl_extnd_hiber = 1; + pcgcctl.b.rstpdwnmodule = 1; + pcgcctl.b.restoremode = 1; + DWC_WRITE_REG32(core_if->pcgcctl, pcgcctl.d32); + + DWC_DEBUGPL(DBG_ANY, "%s called\n", __FUNCTION__); + + return 1; +} + +#ifdef CONFIG_USB_DWC_OTG_LPM +/** + * This function hadles LPM transaction received interrupt. + */ +static int32_t dwc_otg_handle_lpm_intr(dwc_otg_core_if_t * core_if) +{ + glpmcfg_data_t lpmcfg; + gintsts_data_t gintsts; + + if (!core_if->core_params->lpm_enable) { + DWC_PRINTF("Unexpected LPM interrupt\n"); + } + + lpmcfg.d32 = DWC_READ_REG32(&core_if->core_global_regs->glpmcfg); + DWC_PRINTF("LPM config register = 0x%08x\n", lpmcfg.d32); + + if (dwc_otg_is_host_mode(core_if)) { + cil_hcd_sleep(core_if); + } else { + lpmcfg.b.hird_thres |= (1 << 4); + DWC_WRITE_REG32(&core_if->core_global_regs->glpmcfg, + lpmcfg.d32); + } + + /* Examine prt_sleep_sts after TL1TokenTetry period max (10 us) */ + dwc_udelay(10); + lpmcfg.d32 = DWC_READ_REG32(&core_if->core_global_regs->glpmcfg); + if (lpmcfg.b.prt_sleep_sts) { + /* Save the current state */ + core_if->lx_state = DWC_OTG_L1; + } + + /* Clear interrupt */ + gintsts.d32 = 0; + gintsts.b.lpmtranrcvd = 1; + DWC_WRITE_REG32(&core_if->core_global_regs->gintsts, gintsts.d32); + return 1; +} +#endif /* CONFIG_USB_DWC_OTG_LPM */ + +/** + * This function returns the Core Interrupt register. + */ +static inline uint32_t dwc_otg_read_common_intr(dwc_otg_core_if_t * core_if, gintmsk_data_t *reenable_gintmsk, dwc_otg_hcd_t *hcd) +{ + gahbcfg_data_t gahbcfg = {.d32 = 0 }; + gintsts_data_t gintsts; + gintmsk_data_t gintmsk; + gintmsk_data_t gintmsk_common = {.d32 = 0 }; + gintmsk_common.b.wkupintr = 1; + gintmsk_common.b.sessreqintr = 1; + gintmsk_common.b.conidstschng = 1; + gintmsk_common.b.otgintr = 1; + gintmsk_common.b.modemismatch = 1; + gintmsk_common.b.disconnect = 1; + gintmsk_common.b.usbsuspend = 1; +#ifdef CONFIG_USB_DWC_OTG_LPM + gintmsk_common.b.lpmtranrcvd = 1; +#endif + gintmsk_common.b.restoredone = 1; + if(dwc_otg_is_device_mode(core_if)) + { + /** @todo: The port interrupt occurs while in device + * mode. Added code to CIL to clear the interrupt for now! + */ + gintmsk_common.b.portintr = 1; + } + gintsts.d32 = DWC_READ_REG32(&core_if->core_global_regs->gintsts); + gintmsk.d32 = DWC_READ_REG32(&core_if->core_global_regs->gintmsk); + if(fiq_enable) { + local_fiq_disable(); + /* Pull in the interrupts that the FIQ has masked */ + gintmsk.d32 |= ~(hcd->fiq_state->gintmsk_saved.d32); + gintmsk.d32 |= gintmsk_common.d32; + /* for the upstairs function to reenable - have to read it here in case FIQ triggers again */ + reenable_gintmsk->d32 = gintmsk.d32; + local_fiq_enable(); + } + + gahbcfg.d32 = DWC_READ_REG32(&core_if->core_global_regs->gahbcfg); + +#ifdef DEBUG + /* if any common interrupts set */ + if (gintsts.d32 & gintmsk_common.d32) { + DWC_DEBUGPL(DBG_ANY, "common_intr: gintsts=%08x gintmsk=%08x\n", + gintsts.d32, gintmsk.d32); + } +#endif + if (!fiq_enable){ + if (gahbcfg.b.glblintrmsk) + return ((gintsts.d32 & gintmsk.d32) & gintmsk_common.d32); + else + return 0; + } else { + /* Our IRQ kicker is no longer the USB hardware, it's the MPHI interface. + * Can't trust the global interrupt mask bit in this case. + */ + return ((gintsts.d32 & gintmsk.d32) & gintmsk_common.d32); + } + +} + +/* MACRO for clearing interupt bits in GPWRDN register */ +#define CLEAR_GPWRDN_INTR(__core_if,__intr) \ +do { \ + gpwrdn_data_t gpwrdn = {.d32=0}; \ + gpwrdn.b.__intr = 1; \ + DWC_MODIFY_REG32(&__core_if->core_global_regs->gpwrdn, \ + 0, gpwrdn.d32); \ +} while (0) + +/** + * Common interrupt handler. + * + * The common interrupts are those that occur in both Host and Device mode. + * This handler handles the following interrupts: + * - Mode Mismatch Interrupt + * - Disconnect Interrupt + * - OTG Interrupt + * - Connector ID Status Change Interrupt + * - Session Request Interrupt. + * - Resume / Remote Wakeup Detected Interrupt. + * - LPM Transaction Received Interrupt + * - ADP Transaction Received Interrupt + * + */ +int32_t dwc_otg_handle_common_intr(void *dev) +{ + int retval = 0; + gintsts_data_t gintsts; + gintmsk_data_t gintmsk_reenable = { .d32 = 0 }; + gpwrdn_data_t gpwrdn = {.d32 = 0 }; + dwc_otg_device_t *otg_dev = dev; + dwc_otg_core_if_t *core_if = otg_dev->core_if; + gpwrdn.d32 = DWC_READ_REG32(&core_if->core_global_regs->gpwrdn); + if (dwc_otg_is_device_mode(core_if)) + core_if->frame_num = dwc_otg_get_frame_number(core_if); + + if (core_if->lock) + DWC_SPINLOCK(core_if->lock); + + if (core_if->power_down == 3 && core_if->xhib == 1) { + DWC_DEBUGPL(DBG_ANY, "Exiting from xHIB state\n"); + retval |= dwc_otg_handle_xhib_exit_intr(core_if); + core_if->xhib = 2; + if (core_if->lock) + DWC_SPINUNLOCK(core_if->lock); + + return retval; + } + + if (core_if->hibernation_suspend <= 0) { + /* read_common will have to poke the FIQ's saved mask. We must then clear this mask at the end + * of this handler - god only knows why it's done like this + */ + gintsts.d32 = dwc_otg_read_common_intr(core_if, &gintmsk_reenable, otg_dev->hcd); + + if (gintsts.b.modemismatch) { + retval |= dwc_otg_handle_mode_mismatch_intr(core_if); + } + if (gintsts.b.otgintr) { + retval |= dwc_otg_handle_otg_intr(core_if); + } + if (gintsts.b.conidstschng) { + retval |= + dwc_otg_handle_conn_id_status_change_intr(core_if); + } + if (gintsts.b.disconnect) { + retval |= dwc_otg_handle_disconnect_intr(core_if); + } + if (gintsts.b.sessreqintr) { + retval |= dwc_otg_handle_session_req_intr(core_if); + } + if (gintsts.b.wkupintr) { + retval |= dwc_otg_handle_wakeup_detected_intr(core_if); + } + if (gintsts.b.usbsuspend) { + retval |= dwc_otg_handle_usb_suspend_intr(core_if); + } +#ifdef CONFIG_USB_DWC_OTG_LPM + if (gintsts.b.lpmtranrcvd) { + retval |= dwc_otg_handle_lpm_intr(core_if); + } +#endif + if (gintsts.b.restoredone) { + gintsts.d32 = 0; + if (core_if->power_down == 2) + core_if->hibernation_suspend = -1; + else if (core_if->power_down == 3 && core_if->xhib == 2) { + gpwrdn_data_t gpwrdn = {.d32 = 0 }; + pcgcctl_data_t pcgcctl = {.d32 = 0 }; + dctl_data_t dctl = {.d32 = 0 }; + + DWC_WRITE_REG32(&core_if->core_global_regs-> + gintsts, 0xFFFFFFFF); + + DWC_DEBUGPL(DBG_ANY, + "RESTORE DONE generated\n"); + + gpwrdn.b.restore = 1; + DWC_MODIFY_REG32(&core_if->core_global_regs->gpwrdn, gpwrdn.d32, 0); + dwc_udelay(10); + + pcgcctl.b.rstpdwnmodule = 1; + DWC_MODIFY_REG32(core_if->pcgcctl, pcgcctl.d32, 0); + + DWC_WRITE_REG32(&core_if->core_global_regs->gusbcfg, core_if->gr_backup->gusbcfg_local); + DWC_WRITE_REG32(&core_if->dev_if->dev_global_regs->dcfg, core_if->dr_backup->dcfg); + DWC_WRITE_REG32(&core_if->dev_if->dev_global_regs->dctl, core_if->dr_backup->dctl); + dwc_udelay(50); + + dctl.b.pwronprgdone = 1; + DWC_MODIFY_REG32(&core_if->dev_if->dev_global_regs->dctl, 0, dctl.d32); + dwc_udelay(10); + + dwc_otg_restore_global_regs(core_if); + dwc_otg_restore_dev_regs(core_if, 0); + + dctl.d32 = 0; + dctl.b.pwronprgdone = 1; + DWC_MODIFY_REG32(&core_if->dev_if->dev_global_regs->dctl, dctl.d32, 0); + dwc_udelay(10); + + pcgcctl.d32 = 0; + pcgcctl.b.enbl_extnd_hiber = 1; + DWC_MODIFY_REG32(core_if->pcgcctl, pcgcctl.d32, 0); + + /* The core will be in ON STATE */ + core_if->lx_state = DWC_OTG_L0; + core_if->xhib = 0; + + DWC_SPINUNLOCK(core_if->lock); + if (core_if->pcd_cb && core_if->pcd_cb->resume_wakeup) { + core_if->pcd_cb->resume_wakeup(core_if->pcd_cb->p); + } + DWC_SPINLOCK(core_if->lock); + + } + + gintsts.b.restoredone = 1; + DWC_WRITE_REG32(&core_if->core_global_regs->gintsts,gintsts.d32); + DWC_PRINTF(" --Restore done interrupt received-- \n"); + retval |= 1; + } + if (gintsts.b.portintr && dwc_otg_is_device_mode(core_if)) { + /* The port interrupt occurs while in device mode with HPRT0 + * Port Enable/Disable. + */ + gintsts.d32 = 0; + gintsts.b.portintr = 1; + DWC_WRITE_REG32(&core_if->core_global_regs->gintsts,gintsts.d32); + retval |= 1; + gintmsk_reenable.b.portintr = 1; + + } + /* Did we actually handle anything? if so, unmask the interrupt */ +// fiq_print(FIQDBG_INT, otg_dev->hcd->fiq_state, "CILOUT %1d", retval); +// fiq_print(FIQDBG_INT, otg_dev->hcd->fiq_state, "%08x", gintsts.d32); +// fiq_print(FIQDBG_INT, otg_dev->hcd->fiq_state, "%08x", gintmsk_reenable.d32); + if (retval && fiq_enable) { + DWC_WRITE_REG32(&core_if->core_global_regs->gintmsk, gintmsk_reenable.d32); + } + + } else { + DWC_DEBUGPL(DBG_ANY, "gpwrdn=%08x\n", gpwrdn.d32); + + if (gpwrdn.b.disconn_det && gpwrdn.b.disconn_det_msk) { + CLEAR_GPWRDN_INTR(core_if, disconn_det); + if (gpwrdn.b.linestate == 0) { + dwc_otg_handle_pwrdn_disconnect_intr(core_if); + } else { + DWC_PRINTF("Disconnect detected while linestate is not 0\n"); + } + + retval |= 1; + } + if (gpwrdn.b.lnstschng && gpwrdn.b.lnstchng_msk) { + CLEAR_GPWRDN_INTR(core_if, lnstschng); + /* remote wakeup from hibernation */ + if (gpwrdn.b.linestate == 2 || gpwrdn.b.linestate == 1) { + dwc_otg_handle_pwrdn_wakeup_detected_intr(core_if); + } else { + DWC_PRINTF("gpwrdn.linestate = %d\n", gpwrdn.b.linestate); + } + retval |= 1; + } + if (gpwrdn.b.rst_det && gpwrdn.b.rst_det_msk) { + CLEAR_GPWRDN_INTR(core_if, rst_det); + if (gpwrdn.b.linestate == 0) { + DWC_PRINTF("Reset detected\n"); + retval |= dwc_otg_device_hibernation_restore(core_if, 0, 1); + } + } + if (gpwrdn.b.srp_det && gpwrdn.b.srp_det_msk) { + CLEAR_GPWRDN_INTR(core_if, srp_det); + dwc_otg_handle_pwrdn_srp_intr(core_if); + retval |= 1; + } + } + /* Handle ADP interrupt here */ + if (gpwrdn.b.adp_int) { + DWC_PRINTF("ADP interrupt\n"); + CLEAR_GPWRDN_INTR(core_if, adp_int); + dwc_otg_adp_handle_intr(core_if); + retval |= 1; + } + if (gpwrdn.b.sts_chngint && gpwrdn.b.sts_chngint_msk) { + DWC_PRINTF("STS CHNG interrupt asserted\n"); + CLEAR_GPWRDN_INTR(core_if, sts_chngint); + dwc_otg_handle_pwrdn_stschng_intr(otg_dev); + + retval |= 1; + } + if (core_if->lock) + DWC_SPINUNLOCK(core_if->lock); + return retval; +} --- linux-raspi2-4.2.0.orig/drivers/usb/host/dwc_otg/dwc_otg_core_if.h +++ linux-raspi2-4.2.0/drivers/usb/host/dwc_otg/dwc_otg_core_if.h @@ -0,0 +1,705 @@ +/* ========================================================================== + * $File: //dwh/usb_iip/dev/software/otg/linux/drivers/dwc_otg_core_if.h $ + * $Revision: #13 $ + * $Date: 2012/08/10 $ + * $Change: 2047372 $ + * + * Synopsys HS OTG Linux Software Driver and documentation (hereinafter, + * "Software") is an Unsupported proprietary work of Synopsys, Inc. unless + * otherwise expressly agreed to in writing between Synopsys and you. + * + * The Software IS NOT an item of Licensed Software or Licensed Product under + * any End User Software License Agreement or Agreement for Licensed Product + * with Synopsys or any supplement thereto. You are permitted to use and + * redistribute this Software in source and binary forms, with or without + * modification, provided that redistributions of source code must retain this + * notice. You may not view, use, disclose, copy or distribute this file or + * any information contained herein except pursuant to this license grant from + * Synopsys. If you do not agree with this notice, including the disclaimer + * below, then you are not authorized to use the Software. + * + * THIS SOFTWARE IS BEING DISTRIBUTED BY SYNOPSYS SOLELY ON AN "AS IS" BASIS + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE HEREBY DISCLAIMED. IN NO EVENT SHALL SYNOPSYS BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH + * DAMAGE. + * ========================================================================== */ +#if !defined(__DWC_CORE_IF_H__) +#define __DWC_CORE_IF_H__ + +#include "dwc_os.h" + +/** @file + * This file defines DWC_OTG Core API + */ + +struct dwc_otg_core_if; +typedef struct dwc_otg_core_if dwc_otg_core_if_t; + +/** Maximum number of Periodic FIFOs */ +#define MAX_PERIO_FIFOS 15 +/** Maximum number of Periodic FIFOs */ +#define MAX_TX_FIFOS 15 + +/** Maximum number of Endpoints/HostChannels */ +#define MAX_EPS_CHANNELS 16 + +extern dwc_otg_core_if_t *dwc_otg_cil_init(const uint32_t * _reg_base_addr); +extern void dwc_otg_core_init(dwc_otg_core_if_t * _core_if); +extern void dwc_otg_cil_remove(dwc_otg_core_if_t * _core_if); + +extern void dwc_otg_enable_global_interrupts(dwc_otg_core_if_t * _core_if); +extern void dwc_otg_disable_global_interrupts(dwc_otg_core_if_t * _core_if); + +extern uint8_t dwc_otg_is_device_mode(dwc_otg_core_if_t * _core_if); +extern uint8_t dwc_otg_is_host_mode(dwc_otg_core_if_t * _core_if); + +extern uint8_t dwc_otg_is_dma_enable(dwc_otg_core_if_t * core_if); + +/** This function should be called on every hardware interrupt. */ +extern int32_t dwc_otg_handle_common_intr(void *otg_dev); + +/** @name OTG Core Parameters */ +/** @{ */ + +/** + * Specifies the OTG capabilities. The driver will automatically + * detect the value for this parameter if none is specified. + * 0 - HNP and SRP capable (default) + * 1 - SRP Only capable + * 2 - No HNP/SRP capable + */ +extern int dwc_otg_set_param_otg_cap(dwc_otg_core_if_t * core_if, int32_t val); +extern int32_t dwc_otg_get_param_otg_cap(dwc_otg_core_if_t * core_if); +#define DWC_OTG_CAP_PARAM_HNP_SRP_CAPABLE 0 +#define DWC_OTG_CAP_PARAM_SRP_ONLY_CAPABLE 1 +#define DWC_OTG_CAP_PARAM_NO_HNP_SRP_CAPABLE 2 +#define dwc_param_otg_cap_default DWC_OTG_CAP_PARAM_HNP_SRP_CAPABLE + +extern int dwc_otg_set_param_opt(dwc_otg_core_if_t * core_if, int32_t val); +extern int32_t dwc_otg_get_param_opt(dwc_otg_core_if_t * core_if); +#define dwc_param_opt_default 1 + +/** + * Specifies whether to use slave or DMA mode for accessing the data + * FIFOs. The driver will automatically detect the value for this + * parameter if none is specified. + * 0 - Slave + * 1 - DMA (default, if available) + */ +extern int dwc_otg_set_param_dma_enable(dwc_otg_core_if_t * core_if, + int32_t val); +extern int32_t dwc_otg_get_param_dma_enable(dwc_otg_core_if_t * core_if); +#define dwc_param_dma_enable_default 1 + +/** + * When DMA mode is enabled specifies whether to use + * address DMA or DMA Descritor mode for accessing the data + * FIFOs in device mode. The driver will automatically detect + * the value for this parameter if none is specified. + * 0 - address DMA + * 1 - DMA Descriptor(default, if available) + */ +extern int dwc_otg_set_param_dma_desc_enable(dwc_otg_core_if_t * core_if, + int32_t val); +extern int32_t dwc_otg_get_param_dma_desc_enable(dwc_otg_core_if_t * core_if); +//#define dwc_param_dma_desc_enable_default 1 +#define dwc_param_dma_desc_enable_default 0 // Broadcom BCM2708 + +/** The DMA Burst size (applicable only for External DMA + * Mode). 1, 4, 8 16, 32, 64, 128, 256 (default 32) + */ +extern int dwc_otg_set_param_dma_burst_size(dwc_otg_core_if_t * core_if, + int32_t val); +extern int32_t dwc_otg_get_param_dma_burst_size(dwc_otg_core_if_t * core_if); +#define dwc_param_dma_burst_size_default 32 + +/** + * Specifies the maximum speed of operation in host and device mode. + * The actual speed depends on the speed of the attached device and + * the value of phy_type. The actual speed depends on the speed of the + * attached device. + * 0 - High Speed (default) + * 1 - Full Speed + */ +extern int dwc_otg_set_param_speed(dwc_otg_core_if_t * core_if, int32_t val); +extern int32_t dwc_otg_get_param_speed(dwc_otg_core_if_t * core_if); +#define dwc_param_speed_default 0 +#define DWC_SPEED_PARAM_HIGH 0 +#define DWC_SPEED_PARAM_FULL 1 + +/** Specifies whether low power mode is supported when attached + * to a Full Speed or Low Speed device in host mode. + * 0 - Don't support low power mode (default) + * 1 - Support low power mode + */ +extern int dwc_otg_set_param_host_support_fs_ls_low_power(dwc_otg_core_if_t * + core_if, int32_t val); +extern int32_t dwc_otg_get_param_host_support_fs_ls_low_power(dwc_otg_core_if_t + * core_if); +#define dwc_param_host_support_fs_ls_low_power_default 0 + +/** Specifies the PHY clock rate in low power mode when connected to a + * Low Speed device in host mode. This parameter is applicable only if + * HOST_SUPPORT_FS_LS_LOW_POWER is enabled. If PHY_TYPE is set to FS + * then defaults to 6 MHZ otherwise 48 MHZ. + * + * 0 - 48 MHz + * 1 - 6 MHz + */ +extern int dwc_otg_set_param_host_ls_low_power_phy_clk(dwc_otg_core_if_t * + core_if, int32_t val); +extern int32_t dwc_otg_get_param_host_ls_low_power_phy_clk(dwc_otg_core_if_t * + core_if); +#define dwc_param_host_ls_low_power_phy_clk_default 0 +#define DWC_HOST_LS_LOW_POWER_PHY_CLK_PARAM_48MHZ 0 +#define DWC_HOST_LS_LOW_POWER_PHY_CLK_PARAM_6MHZ 1 + +/** + * 0 - Use cC FIFO size parameters + * 1 - Allow dynamic FIFO sizing (default) + */ +extern int dwc_otg_set_param_enable_dynamic_fifo(dwc_otg_core_if_t * core_if, + int32_t val); +extern int32_t dwc_otg_get_param_enable_dynamic_fifo(dwc_otg_core_if_t * + core_if); +#define dwc_param_enable_dynamic_fifo_default 1 + +/** Total number of 4-byte words in the data FIFO memory. This + * memory includes the Rx FIFO, non-periodic Tx FIFO, and periodic + * Tx FIFOs. + * 32 to 32768 (default 8192) + * Note: The total FIFO memory depth in the FPGA configuration is 8192. + */ +extern int dwc_otg_set_param_data_fifo_size(dwc_otg_core_if_t * core_if, + int32_t val); +extern int32_t dwc_otg_get_param_data_fifo_size(dwc_otg_core_if_t * core_if); +//#define dwc_param_data_fifo_size_default 8192 +#define dwc_param_data_fifo_size_default 0xFF0 // Broadcom BCM2708 + +/** Number of 4-byte words in the Rx FIFO in device mode when dynamic + * FIFO sizing is enabled. + * 16 to 32768 (default 1064) + */ +extern int dwc_otg_set_param_dev_rx_fifo_size(dwc_otg_core_if_t * core_if, + int32_t val); +extern int32_t dwc_otg_get_param_dev_rx_fifo_size(dwc_otg_core_if_t * core_if); +#define dwc_param_dev_rx_fifo_size_default 1064 + +/** Number of 4-byte words in the non-periodic Tx FIFO in device mode + * when dynamic FIFO sizing is enabled. + * 16 to 32768 (default 1024) + */ +extern int dwc_otg_set_param_dev_nperio_tx_fifo_size(dwc_otg_core_if_t * + core_if, int32_t val); +extern int32_t dwc_otg_get_param_dev_nperio_tx_fifo_size(dwc_otg_core_if_t * + core_if); +#define dwc_param_dev_nperio_tx_fifo_size_default 1024 + +/** Number of 4-byte words in each of the periodic Tx FIFOs in device + * mode when dynamic FIFO sizing is enabled. + * 4 to 768 (default 256) + */ +extern int dwc_otg_set_param_dev_perio_tx_fifo_size(dwc_otg_core_if_t * core_if, + int32_t val, int fifo_num); +extern int32_t dwc_otg_get_param_dev_perio_tx_fifo_size(dwc_otg_core_if_t * + core_if, int fifo_num); +#define dwc_param_dev_perio_tx_fifo_size_default 256 + +/** Number of 4-byte words in the Rx FIFO in host mode when dynamic + * FIFO sizing is enabled. + * 16 to 32768 (default 1024) + */ +extern int dwc_otg_set_param_host_rx_fifo_size(dwc_otg_core_if_t * core_if, + int32_t val); +extern int32_t dwc_otg_get_param_host_rx_fifo_size(dwc_otg_core_if_t * core_if); +//#define dwc_param_host_rx_fifo_size_default 1024 +#define dwc_param_host_rx_fifo_size_default 774 // Broadcom BCM2708 + +/** Number of 4-byte words in the non-periodic Tx FIFO in host mode + * when Dynamic FIFO sizing is enabled in the core. + * 16 to 32768 (default 1024) + */ +extern int dwc_otg_set_param_host_nperio_tx_fifo_size(dwc_otg_core_if_t * + core_if, int32_t val); +extern int32_t dwc_otg_get_param_host_nperio_tx_fifo_size(dwc_otg_core_if_t * + core_if); +//#define dwc_param_host_nperio_tx_fifo_size_default 1024 +#define dwc_param_host_nperio_tx_fifo_size_default 0x100 // Broadcom BCM2708 + +/** Number of 4-byte words in the host periodic Tx FIFO when dynamic + * FIFO sizing is enabled. + * 16 to 32768 (default 1024) + */ +extern int dwc_otg_set_param_host_perio_tx_fifo_size(dwc_otg_core_if_t * + core_if, int32_t val); +extern int32_t dwc_otg_get_param_host_perio_tx_fifo_size(dwc_otg_core_if_t * + core_if); +//#define dwc_param_host_perio_tx_fifo_size_default 1024 +#define dwc_param_host_perio_tx_fifo_size_default 0x200 // Broadcom BCM2708 + +/** The maximum transfer size supported in bytes. + * 2047 to 65,535 (default 65,535) + */ +extern int dwc_otg_set_param_max_transfer_size(dwc_otg_core_if_t * core_if, + int32_t val); +extern int32_t dwc_otg_get_param_max_transfer_size(dwc_otg_core_if_t * core_if); +#define dwc_param_max_transfer_size_default 65535 + +/** The maximum number of packets in a transfer. + * 15 to 511 (default 511) + */ +extern int dwc_otg_set_param_max_packet_count(dwc_otg_core_if_t * core_if, + int32_t val); +extern int32_t dwc_otg_get_param_max_packet_count(dwc_otg_core_if_t * core_if); +#define dwc_param_max_packet_count_default 511 + +/** The number of host channel registers to use. + * 1 to 16 (default 12) + * Note: The FPGA configuration supports a maximum of 12 host channels. + */ +extern int dwc_otg_set_param_host_channels(dwc_otg_core_if_t * core_if, + int32_t val); +extern int32_t dwc_otg_get_param_host_channels(dwc_otg_core_if_t * core_if); +//#define dwc_param_host_channels_default 12 +#define dwc_param_host_channels_default 8 // Broadcom BCM2708 + +/** The number of endpoints in addition to EP0 available for device + * mode operations. + * 1 to 15 (default 6 IN and OUT) + * Note: The FPGA configuration supports a maximum of 6 IN and OUT + * endpoints in addition to EP0. + */ +extern int dwc_otg_set_param_dev_endpoints(dwc_otg_core_if_t * core_if, + int32_t val); +extern int32_t dwc_otg_get_param_dev_endpoints(dwc_otg_core_if_t * core_if); +#define dwc_param_dev_endpoints_default 6 + +/** + * Specifies the type of PHY interface to use. By default, the driver + * will automatically detect the phy_type. + * + * 0 - Full Speed PHY + * 1 - UTMI+ (default) + * 2 - ULPI + */ +extern int dwc_otg_set_param_phy_type(dwc_otg_core_if_t * core_if, int32_t val); +extern int32_t dwc_otg_get_param_phy_type(dwc_otg_core_if_t * core_if); +#define DWC_PHY_TYPE_PARAM_FS 0 +#define DWC_PHY_TYPE_PARAM_UTMI 1 +#define DWC_PHY_TYPE_PARAM_ULPI 2 +#define dwc_param_phy_type_default DWC_PHY_TYPE_PARAM_UTMI + +/** + * Specifies the UTMI+ Data Width. This parameter is + * applicable for a PHY_TYPE of UTMI+ or ULPI. (For a ULPI + * PHY_TYPE, this parameter indicates the data width between + * the MAC and the ULPI Wrapper.) Also, this parameter is + * applicable only if the OTG_HSPHY_WIDTH cC parameter was set + * to "8 and 16 bits", meaning that the core has been + * configured to work at either data path width. + * + * 8 or 16 bits (default 16) + */ +extern int dwc_otg_set_param_phy_utmi_width(dwc_otg_core_if_t * core_if, + int32_t val); +extern int32_t dwc_otg_get_param_phy_utmi_width(dwc_otg_core_if_t * core_if); +//#define dwc_param_phy_utmi_width_default 16 +#define dwc_param_phy_utmi_width_default 8 // Broadcom BCM2708 + +/** + * Specifies whether the ULPI operates at double or single + * data rate. This parameter is only applicable if PHY_TYPE is + * ULPI. + * + * 0 - single data rate ULPI interface with 8 bit wide data + * bus (default) + * 1 - double data rate ULPI interface with 4 bit wide data + * bus + */ +extern int dwc_otg_set_param_phy_ulpi_ddr(dwc_otg_core_if_t * core_if, + int32_t val); +extern int32_t dwc_otg_get_param_phy_ulpi_ddr(dwc_otg_core_if_t * core_if); +#define dwc_param_phy_ulpi_ddr_default 0 + +/** + * Specifies whether to use the internal or external supply to + * drive the vbus with a ULPI phy. + */ +extern int dwc_otg_set_param_phy_ulpi_ext_vbus(dwc_otg_core_if_t * core_if, + int32_t val); +extern int32_t dwc_otg_get_param_phy_ulpi_ext_vbus(dwc_otg_core_if_t * core_if); +#define DWC_PHY_ULPI_INTERNAL_VBUS 0 +#define DWC_PHY_ULPI_EXTERNAL_VBUS 1 +#define dwc_param_phy_ulpi_ext_vbus_default DWC_PHY_ULPI_INTERNAL_VBUS + +/** + * Specifies whether to use the I2Cinterface for full speed PHY. This + * parameter is only applicable if PHY_TYPE is FS. + * 0 - No (default) + * 1 - Yes + */ +extern int dwc_otg_set_param_i2c_enable(dwc_otg_core_if_t * core_if, + int32_t val); +extern int32_t dwc_otg_get_param_i2c_enable(dwc_otg_core_if_t * core_if); +#define dwc_param_i2c_enable_default 0 + +extern int dwc_otg_set_param_ulpi_fs_ls(dwc_otg_core_if_t * core_if, + int32_t val); +extern int32_t dwc_otg_get_param_ulpi_fs_ls(dwc_otg_core_if_t * core_if); +#define dwc_param_ulpi_fs_ls_default 0 + +extern int dwc_otg_set_param_ts_dline(dwc_otg_core_if_t * core_if, int32_t val); +extern int32_t dwc_otg_get_param_ts_dline(dwc_otg_core_if_t * core_if); +#define dwc_param_ts_dline_default 0 + +/** + * Specifies whether dedicated transmit FIFOs are + * enabled for non periodic IN endpoints in device mode + * 0 - No + * 1 - Yes + */ +extern int dwc_otg_set_param_en_multiple_tx_fifo(dwc_otg_core_if_t * core_if, + int32_t val); +extern int32_t dwc_otg_get_param_en_multiple_tx_fifo(dwc_otg_core_if_t * + core_if); +#define dwc_param_en_multiple_tx_fifo_default 1 + +/** Number of 4-byte words in each of the Tx FIFOs in device + * mode when dynamic FIFO sizing is enabled. + * 4 to 768 (default 256) + */ +extern int dwc_otg_set_param_dev_tx_fifo_size(dwc_otg_core_if_t * core_if, + int fifo_num, int32_t val); +extern int32_t dwc_otg_get_param_dev_tx_fifo_size(dwc_otg_core_if_t * core_if, + int fifo_num); +#define dwc_param_dev_tx_fifo_size_default 768 + +/** Thresholding enable flag- + * bit 0 - enable non-ISO Tx thresholding + * bit 1 - enable ISO Tx thresholding + * bit 2 - enable Rx thresholding + */ +extern int dwc_otg_set_param_thr_ctl(dwc_otg_core_if_t * core_if, int32_t val); +extern int32_t dwc_otg_get_thr_ctl(dwc_otg_core_if_t * core_if, int fifo_num); +#define dwc_param_thr_ctl_default 0 + +/** Thresholding length for Tx + * FIFOs in 32 bit DWORDs + */ +extern int dwc_otg_set_param_tx_thr_length(dwc_otg_core_if_t * core_if, + int32_t val); +extern int32_t dwc_otg_get_tx_thr_length(dwc_otg_core_if_t * core_if); +#define dwc_param_tx_thr_length_default 64 + +/** Thresholding length for Rx + * FIFOs in 32 bit DWORDs + */ +extern int dwc_otg_set_param_rx_thr_length(dwc_otg_core_if_t * core_if, + int32_t val); +extern int32_t dwc_otg_get_rx_thr_length(dwc_otg_core_if_t * core_if); +#define dwc_param_rx_thr_length_default 64 + +/** + * Specifies whether LPM (Link Power Management) support is enabled + */ +extern int dwc_otg_set_param_lpm_enable(dwc_otg_core_if_t * core_if, + int32_t val); +extern int32_t dwc_otg_get_param_lpm_enable(dwc_otg_core_if_t * core_if); +#define dwc_param_lpm_enable_default 1 + +/** + * Specifies whether PTI enhancement is enabled + */ +extern int dwc_otg_set_param_pti_enable(dwc_otg_core_if_t * core_if, + int32_t val); +extern int32_t dwc_otg_get_param_pti_enable(dwc_otg_core_if_t * core_if); +#define dwc_param_pti_enable_default 0 + +/** + * Specifies whether MPI enhancement is enabled + */ +extern int dwc_otg_set_param_mpi_enable(dwc_otg_core_if_t * core_if, + int32_t val); +extern int32_t dwc_otg_get_param_mpi_enable(dwc_otg_core_if_t * core_if); +#define dwc_param_mpi_enable_default 0 + +/** + * Specifies whether ADP capability is enabled + */ +extern int dwc_otg_set_param_adp_enable(dwc_otg_core_if_t * core_if, + int32_t val); +extern int32_t dwc_otg_get_param_adp_enable(dwc_otg_core_if_t * core_if); +#define dwc_param_adp_enable_default 0 + +/** + * Specifies whether IC_USB capability is enabled + */ + +extern int dwc_otg_set_param_ic_usb_cap(dwc_otg_core_if_t * core_if, + int32_t val); +extern int32_t dwc_otg_get_param_ic_usb_cap(dwc_otg_core_if_t * core_if); +#define dwc_param_ic_usb_cap_default 0 + +extern int dwc_otg_set_param_ahb_thr_ratio(dwc_otg_core_if_t * core_if, + int32_t val); +extern int32_t dwc_otg_get_param_ahb_thr_ratio(dwc_otg_core_if_t * core_if); +#define dwc_param_ahb_thr_ratio_default 0 + +extern int dwc_otg_set_param_power_down(dwc_otg_core_if_t * core_if, + int32_t val); +extern int32_t dwc_otg_get_param_power_down(dwc_otg_core_if_t * core_if); +#define dwc_param_power_down_default 0 + +extern int dwc_otg_set_param_reload_ctl(dwc_otg_core_if_t * core_if, + int32_t val); +extern int32_t dwc_otg_get_param_reload_ctl(dwc_otg_core_if_t * core_if); +#define dwc_param_reload_ctl_default 0 + +extern int dwc_otg_set_param_dev_out_nak(dwc_otg_core_if_t * core_if, + int32_t val); +extern int32_t dwc_otg_get_param_dev_out_nak(dwc_otg_core_if_t * core_if); +#define dwc_param_dev_out_nak_default 0 + +extern int dwc_otg_set_param_cont_on_bna(dwc_otg_core_if_t * core_if, + int32_t val); +extern int32_t dwc_otg_get_param_cont_on_bna(dwc_otg_core_if_t * core_if); +#define dwc_param_cont_on_bna_default 0 + +extern int dwc_otg_set_param_ahb_single(dwc_otg_core_if_t * core_if, + int32_t val); +extern int32_t dwc_otg_get_param_ahb_single(dwc_otg_core_if_t * core_if); +#define dwc_param_ahb_single_default 0 + +extern int dwc_otg_set_param_otg_ver(dwc_otg_core_if_t * core_if, int32_t val); +extern int32_t dwc_otg_get_param_otg_ver(dwc_otg_core_if_t * core_if); +#define dwc_param_otg_ver_default 0 + +/** @} */ + +/** @name Access to registers and bit-fields */ + +/** + * Dump core registers and SPRAM + */ +extern void dwc_otg_dump_dev_registers(dwc_otg_core_if_t * _core_if); +extern void dwc_otg_dump_spram(dwc_otg_core_if_t * _core_if); +extern void dwc_otg_dump_host_registers(dwc_otg_core_if_t * _core_if); +extern void dwc_otg_dump_global_registers(dwc_otg_core_if_t * _core_if); + +/** + * Get host negotiation status. + */ +extern uint32_t dwc_otg_get_hnpstatus(dwc_otg_core_if_t * core_if); + +/** + * Get srp status + */ +extern uint32_t dwc_otg_get_srpstatus(dwc_otg_core_if_t * core_if); + +/** + * Set hnpreq bit in the GOTGCTL register. + */ +extern void dwc_otg_set_hnpreq(dwc_otg_core_if_t * core_if, uint32_t val); + +/** + * Get Content of SNPSID register. + */ +extern uint32_t dwc_otg_get_gsnpsid(dwc_otg_core_if_t * core_if); + +/** + * Get current mode. + * Returns 0 if in device mode, and 1 if in host mode. + */ +extern uint32_t dwc_otg_get_mode(dwc_otg_core_if_t * core_if); + +/** + * Get value of hnpcapable field in the GUSBCFG register + */ +extern uint32_t dwc_otg_get_hnpcapable(dwc_otg_core_if_t * core_if); +/** + * Set value of hnpcapable field in the GUSBCFG register + */ +extern void dwc_otg_set_hnpcapable(dwc_otg_core_if_t * core_if, uint32_t val); + +/** + * Get value of srpcapable field in the GUSBCFG register + */ +extern uint32_t dwc_otg_get_srpcapable(dwc_otg_core_if_t * core_if); +/** + * Set value of srpcapable field in the GUSBCFG register + */ +extern void dwc_otg_set_srpcapable(dwc_otg_core_if_t * core_if, uint32_t val); + +/** + * Get value of devspeed field in the DCFG register + */ +extern uint32_t dwc_otg_get_devspeed(dwc_otg_core_if_t * core_if); +/** + * Set value of devspeed field in the DCFG register + */ +extern void dwc_otg_set_devspeed(dwc_otg_core_if_t * core_if, uint32_t val); + +/** + * Get the value of busconnected field from the HPRT0 register + */ +extern uint32_t dwc_otg_get_busconnected(dwc_otg_core_if_t * core_if); + +/** + * Gets the device enumeration Speed. + */ +extern uint32_t dwc_otg_get_enumspeed(dwc_otg_core_if_t * core_if); + +/** + * Get value of prtpwr field from the HPRT0 register + */ +extern uint32_t dwc_otg_get_prtpower(dwc_otg_core_if_t * core_if); + +/** + * Get value of flag indicating core state - hibernated or not + */ +extern uint32_t dwc_otg_get_core_state(dwc_otg_core_if_t * core_if); + +/** + * Set value of prtpwr field from the HPRT0 register + */ +extern void dwc_otg_set_prtpower(dwc_otg_core_if_t * core_if, uint32_t val); + +/** + * Get value of prtsusp field from the HPRT0 regsiter + */ +extern uint32_t dwc_otg_get_prtsuspend(dwc_otg_core_if_t * core_if); +/** + * Set value of prtpwr field from the HPRT0 register + */ +extern void dwc_otg_set_prtsuspend(dwc_otg_core_if_t * core_if, uint32_t val); + +/** + * Get value of ModeChTimEn field from the HCFG regsiter + */ +extern uint32_t dwc_otg_get_mode_ch_tim(dwc_otg_core_if_t * core_if); +/** + * Set value of ModeChTimEn field from the HCFG regsiter + */ +extern void dwc_otg_set_mode_ch_tim(dwc_otg_core_if_t * core_if, uint32_t val); + +/** + * Get value of Fram Interval field from the HFIR regsiter + */ +extern uint32_t dwc_otg_get_fr_interval(dwc_otg_core_if_t * core_if); +/** + * Set value of Frame Interval field from the HFIR regsiter + */ +extern void dwc_otg_set_fr_interval(dwc_otg_core_if_t * core_if, uint32_t val); + +/** + * Set value of prtres field from the HPRT0 register + *FIXME Remove? + */ +extern void dwc_otg_set_prtresume(dwc_otg_core_if_t * core_if, uint32_t val); + +/** + * Get value of rmtwkupsig bit in DCTL register + */ +extern uint32_t dwc_otg_get_remotewakesig(dwc_otg_core_if_t * core_if); + +/** + * Get value of prt_sleep_sts field from the GLPMCFG register + */ +extern uint32_t dwc_otg_get_lpm_portsleepstatus(dwc_otg_core_if_t * core_if); + +/** + * Get value of rem_wkup_en field from the GLPMCFG register + */ +extern uint32_t dwc_otg_get_lpm_remotewakeenabled(dwc_otg_core_if_t * core_if); + +/** + * Get value of appl_resp field from the GLPMCFG register + */ +extern uint32_t dwc_otg_get_lpmresponse(dwc_otg_core_if_t * core_if); +/** + * Set value of appl_resp field from the GLPMCFG register + */ +extern void dwc_otg_set_lpmresponse(dwc_otg_core_if_t * core_if, uint32_t val); + +/** + * Get value of hsic_connect field from the GLPMCFG register + */ +extern uint32_t dwc_otg_get_hsic_connect(dwc_otg_core_if_t * core_if); +/** + * Set value of hsic_connect field from the GLPMCFG register + */ +extern void dwc_otg_set_hsic_connect(dwc_otg_core_if_t * core_if, uint32_t val); + +/** + * Get value of inv_sel_hsic field from the GLPMCFG register. + */ +extern uint32_t dwc_otg_get_inv_sel_hsic(dwc_otg_core_if_t * core_if); +/** + * Set value of inv_sel_hsic field from the GLPMFG register. + */ +extern void dwc_otg_set_inv_sel_hsic(dwc_otg_core_if_t * core_if, uint32_t val); + +/* + * Some functions for accessing registers + */ + +/** + * GOTGCTL register + */ +extern uint32_t dwc_otg_get_gotgctl(dwc_otg_core_if_t * core_if); +extern void dwc_otg_set_gotgctl(dwc_otg_core_if_t * core_if, uint32_t val); + +/** + * GUSBCFG register + */ +extern uint32_t dwc_otg_get_gusbcfg(dwc_otg_core_if_t * core_if); +extern void dwc_otg_set_gusbcfg(dwc_otg_core_if_t * core_if, uint32_t val); + +/** + * GRXFSIZ register + */ +extern uint32_t dwc_otg_get_grxfsiz(dwc_otg_core_if_t * core_if); +extern void dwc_otg_set_grxfsiz(dwc_otg_core_if_t * core_if, uint32_t val); + +/** + * GNPTXFSIZ register + */ +extern uint32_t dwc_otg_get_gnptxfsiz(dwc_otg_core_if_t * core_if); +extern void dwc_otg_set_gnptxfsiz(dwc_otg_core_if_t * core_if, uint32_t val); + +extern uint32_t dwc_otg_get_gpvndctl(dwc_otg_core_if_t * core_if); +extern void dwc_otg_set_gpvndctl(dwc_otg_core_if_t * core_if, uint32_t val); + +/** + * GGPIO register + */ +extern uint32_t dwc_otg_get_ggpio(dwc_otg_core_if_t * core_if); +extern void dwc_otg_set_ggpio(dwc_otg_core_if_t * core_if, uint32_t val); + +/** + * GUID register + */ +extern uint32_t dwc_otg_get_guid(dwc_otg_core_if_t * core_if); +extern void dwc_otg_set_guid(dwc_otg_core_if_t * core_if, uint32_t val); + +/** + * HPRT0 register + */ +extern uint32_t dwc_otg_get_hprt0(dwc_otg_core_if_t * core_if); +extern void dwc_otg_set_hprt0(dwc_otg_core_if_t * core_if, uint32_t val); + +/** + * GHPTXFSIZE + */ +extern uint32_t dwc_otg_get_hptxfsiz(dwc_otg_core_if_t * core_if); + +/** @} */ + +#endif /* __DWC_CORE_IF_H__ */ --- linux-raspi2-4.2.0.orig/drivers/usb/host/dwc_otg/dwc_otg_dbg.h +++ linux-raspi2-4.2.0/drivers/usb/host/dwc_otg/dwc_otg_dbg.h @@ -0,0 +1,117 @@ +/* ========================================================================== + * + * Synopsys HS OTG Linux Software Driver and documentation (hereinafter, + * "Software") is an Unsupported proprietary work of Synopsys, Inc. unless + * otherwise expressly agreed to in writing between Synopsys and you. + * + * The Software IS NOT an item of Licensed Software or Licensed Product under + * any End User Software License Agreement or Agreement for Licensed Product + * with Synopsys or any supplement thereto. You are permitted to use and + * redistribute this Software in source and binary forms, with or without + * modification, provided that redistributions of source code must retain this + * notice. You may not view, use, disclose, copy or distribute this file or + * any information contained herein except pursuant to this license grant from + * Synopsys. If you do not agree with this notice, including the disclaimer + * below, then you are not authorized to use the Software. + * + * THIS SOFTWARE IS BEING DISTRIBUTED BY SYNOPSYS SOLELY ON AN "AS IS" BASIS + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE HEREBY DISCLAIMED. IN NO EVENT SHALL SYNOPSYS BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH + * DAMAGE. + * ========================================================================== */ + +#ifndef __DWC_OTG_DBG_H__ +#define __DWC_OTG_DBG_H__ + +/** @file + * This file defines debug levels. + * Debugging support vanishes in non-debug builds. + */ + +/** + * The Debug Level bit-mask variable. + */ +extern uint32_t g_dbg_lvl; +/** + * Set the Debug Level variable. + */ +static inline uint32_t SET_DEBUG_LEVEL(const uint32_t new) +{ + uint32_t old = g_dbg_lvl; + g_dbg_lvl = new; + return old; +} + +#define DBG_USER (0x1) +/** When debug level has the DBG_CIL bit set, display CIL Debug messages. */ +#define DBG_CIL (0x2) +/** When debug level has the DBG_CILV bit set, display CIL Verbose debug + * messages */ +#define DBG_CILV (0x20) +/** When debug level has the DBG_PCD bit set, display PCD (Device) debug + * messages */ +#define DBG_PCD (0x4) +/** When debug level has the DBG_PCDV set, display PCD (Device) Verbose debug + * messages */ +#define DBG_PCDV (0x40) +/** When debug level has the DBG_HCD bit set, display Host debug messages */ +#define DBG_HCD (0x8) +/** When debug level has the DBG_HCDV bit set, display Verbose Host debug + * messages */ +#define DBG_HCDV (0x80) +/** When debug level has the DBG_HCD_URB bit set, display enqueued URBs in host + * mode. */ +#define DBG_HCD_URB (0x800) +/** When debug level has the DBG_HCDI bit set, display host interrupt + * messages. */ +#define DBG_HCDI (0x1000) + +/** When debug level has any bit set, display debug messages */ +#define DBG_ANY (0xFF) + +/** All debug messages off */ +#define DBG_OFF 0 + +/** Prefix string for DWC_DEBUG print macros. */ +#define USB_DWC "DWC_otg: " + +/** + * Print a debug message when the Global debug level variable contains + * the bit defined in lvl. + * + * @param[in] lvl - Debug level, use one of the DBG_ constants above. + * @param[in] x - like printf + * + * Example:

+ * + * DWC_DEBUGPL( DBG_ANY, "%s(%p)\n", __func__, _reg_base_addr); + * + *
+ * results in:
+ * + * usb-DWC_otg: dwc_otg_cil_init(ca867000) + * + */ +#ifdef DEBUG + +# define DWC_DEBUGPL(lvl, x...) do{ if ((lvl)&g_dbg_lvl)__DWC_DEBUG(USB_DWC x ); }while(0) +# define DWC_DEBUGP(x...) DWC_DEBUGPL(DBG_ANY, x ) + +# define CHK_DEBUG_LEVEL(level) ((level) & g_dbg_lvl) + +#else + +# define DWC_DEBUGPL(lvl, x...) do{}while(0) +# define DWC_DEBUGP(x...) + +# define CHK_DEBUG_LEVEL(level) (0) + +#endif /*DEBUG*/ +#endif --- linux-raspi2-4.2.0.orig/drivers/usb/host/dwc_otg/dwc_otg_driver.c +++ linux-raspi2-4.2.0/drivers/usb/host/dwc_otg/dwc_otg_driver.c @@ -0,0 +1,1757 @@ +/* ========================================================================== + * $File: //dwh/usb_iip/dev/software/otg/linux/drivers/dwc_otg_driver.c $ + * $Revision: #92 $ + * $Date: 2012/08/10 $ + * $Change: 2047372 $ + * + * Synopsys HS OTG Linux Software Driver and documentation (hereinafter, + * "Software") is an Unsupported proprietary work of Synopsys, Inc. unless + * otherwise expressly agreed to in writing between Synopsys and you. + * + * The Software IS NOT an item of Licensed Software or Licensed Product under + * any End User Software License Agreement or Agreement for Licensed Product + * with Synopsys or any supplement thereto. You are permitted to use and + * redistribute this Software in source and binary forms, with or without + * modification, provided that redistributions of source code must retain this + * notice. You may not view, use, disclose, copy or distribute this file or + * any information contained herein except pursuant to this license grant from + * Synopsys. If you do not agree with this notice, including the disclaimer + * below, then you are not authorized to use the Software. + * + * THIS SOFTWARE IS BEING DISTRIBUTED BY SYNOPSYS SOLELY ON AN "AS IS" BASIS + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE HEREBY DISCLAIMED. IN NO EVENT SHALL SYNOPSYS BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH + * DAMAGE. + * ========================================================================== */ + +/** @file + * The dwc_otg_driver module provides the initialization and cleanup entry + * points for the DWC_otg driver. This module will be dynamically installed + * after Linux is booted using the insmod command. When the module is + * installed, the dwc_otg_driver_init function is called. When the module is + * removed (using rmmod), the dwc_otg_driver_cleanup function is called. + * + * This module also defines a data structure for the dwc_otg_driver, which is + * used in conjunction with the standard ARM lm_device structure. These + * structures allow the OTG driver to comply with the standard Linux driver + * model in which devices and drivers are registered with a bus driver. This + * has the benefit that Linux can expose attributes of the driver and device + * in its special sysfs file system. Users can then read or write files in + * this file system to perform diagnostics on the driver components or the + * device. + */ + +#include "dwc_otg_os_dep.h" +#include "dwc_os.h" +#include "dwc_otg_dbg.h" +#include "dwc_otg_driver.h" +#include "dwc_otg_attr.h" +#include "dwc_otg_core_if.h" +#include "dwc_otg_pcd_if.h" +#include "dwc_otg_hcd_if.h" +#include "dwc_otg_fiq_fsm.h" + +#define DWC_DRIVER_VERSION "3.00a 10-AUG-2012" +#define DWC_DRIVER_DESC "HS OTG USB Controller driver" + +bool microframe_schedule=true; + +static const char dwc_driver_name[] = "dwc_otg"; + + +extern int pcd_init( +#ifdef LM_INTERFACE + struct lm_device *_dev +#elif defined(PCI_INTERFACE) + struct pci_dev *_dev +#elif defined(PLATFORM_INTERFACE) + struct platform_device *dev +#endif + ); +extern int hcd_init( +#ifdef LM_INTERFACE + struct lm_device *_dev +#elif defined(PCI_INTERFACE) + struct pci_dev *_dev +#elif defined(PLATFORM_INTERFACE) + struct platform_device *dev +#endif + ); + +extern int pcd_remove( +#ifdef LM_INTERFACE + struct lm_device *_dev +#elif defined(PCI_INTERFACE) + struct pci_dev *_dev +#elif defined(PLATFORM_INTERFACE) + struct platform_device *_dev +#endif + ); + +extern void hcd_remove( +#ifdef LM_INTERFACE + struct lm_device *_dev +#elif defined(PCI_INTERFACE) + struct pci_dev *_dev +#elif defined(PLATFORM_INTERFACE) + struct platform_device *_dev +#endif + ); + +extern void dwc_otg_adp_start(dwc_otg_core_if_t * core_if, uint8_t is_host); + +/*-------------------------------------------------------------------------*/ +/* Encapsulate the module parameter settings */ + +struct dwc_otg_driver_module_params { + int32_t opt; + int32_t otg_cap; + int32_t dma_enable; + int32_t dma_desc_enable; + int32_t dma_burst_size; + int32_t speed; + int32_t host_support_fs_ls_low_power; + int32_t host_ls_low_power_phy_clk; + int32_t enable_dynamic_fifo; + int32_t data_fifo_size; + int32_t dev_rx_fifo_size; + int32_t dev_nperio_tx_fifo_size; + uint32_t dev_perio_tx_fifo_size[MAX_PERIO_FIFOS]; + int32_t host_rx_fifo_size; + int32_t host_nperio_tx_fifo_size; + int32_t host_perio_tx_fifo_size; + int32_t max_transfer_size; + int32_t max_packet_count; + int32_t host_channels; + int32_t dev_endpoints; + int32_t phy_type; + int32_t phy_utmi_width; + int32_t phy_ulpi_ddr; + int32_t phy_ulpi_ext_vbus; + int32_t i2c_enable; + int32_t ulpi_fs_ls; + int32_t ts_dline; + int32_t en_multiple_tx_fifo; + uint32_t dev_tx_fifo_size[MAX_TX_FIFOS]; + uint32_t thr_ctl; + uint32_t tx_thr_length; + uint32_t rx_thr_length; + int32_t pti_enable; + int32_t mpi_enable; + int32_t lpm_enable; + int32_t ic_usb_cap; + int32_t ahb_thr_ratio; + int32_t power_down; + int32_t reload_ctl; + int32_t dev_out_nak; + int32_t cont_on_bna; + int32_t ahb_single; + int32_t otg_ver; + int32_t adp_enable; +}; + +static struct dwc_otg_driver_module_params dwc_otg_module_params = { + .opt = -1, + .otg_cap = -1, + .dma_enable = -1, + .dma_desc_enable = -1, + .dma_burst_size = -1, + .speed = -1, + .host_support_fs_ls_low_power = -1, + .host_ls_low_power_phy_clk = -1, + .enable_dynamic_fifo = -1, + .data_fifo_size = -1, + .dev_rx_fifo_size = -1, + .dev_nperio_tx_fifo_size = -1, + .dev_perio_tx_fifo_size = { + /* dev_perio_tx_fifo_size_1 */ + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1 + /* 15 */ + }, + .host_rx_fifo_size = -1, + .host_nperio_tx_fifo_size = -1, + .host_perio_tx_fifo_size = -1, + .max_transfer_size = -1, + .max_packet_count = -1, + .host_channels = -1, + .dev_endpoints = -1, + .phy_type = -1, + .phy_utmi_width = -1, + .phy_ulpi_ddr = -1, + .phy_ulpi_ext_vbus = -1, + .i2c_enable = -1, + .ulpi_fs_ls = -1, + .ts_dline = -1, + .en_multiple_tx_fifo = -1, + .dev_tx_fifo_size = { + /* dev_tx_fifo_size */ + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1 + /* 15 */ + }, + .thr_ctl = -1, + .tx_thr_length = -1, + .rx_thr_length = -1, + .pti_enable = -1, + .mpi_enable = -1, + .lpm_enable = 0, + .ic_usb_cap = -1, + .ahb_thr_ratio = -1, + .power_down = -1, + .reload_ctl = -1, + .dev_out_nak = -1, + .cont_on_bna = -1, + .ahb_single = -1, + .otg_ver = -1, + .adp_enable = -1, +}; + +//Global variable to switch the fiq fix on or off +bool fiq_enable = 1; +// Global variable to enable the split transaction fix +bool fiq_fsm_enable = true; +//Bulk split-transaction NAK holdoff in microframes +uint16_t nak_holdoff = 8; + +unsigned short fiq_fsm_mask = 0x07; + +/** + * This function shows the Driver Version. + */ +static ssize_t version_show(struct device_driver *dev, char *buf) +{ + return snprintf(buf, sizeof(DWC_DRIVER_VERSION) + 2, "%s\n", + DWC_DRIVER_VERSION); +} + +static DRIVER_ATTR(version, S_IRUGO, version_show, NULL); + +/** + * Global Debug Level Mask. + */ +uint32_t g_dbg_lvl = 0; /* OFF */ + +/** + * This function shows the driver Debug Level. + */ +static ssize_t dbg_level_show(struct device_driver *drv, char *buf) +{ + return sprintf(buf, "0x%0x\n", g_dbg_lvl); +} + +/** + * This function stores the driver Debug Level. + */ +static ssize_t dbg_level_store(struct device_driver *drv, const char *buf, + size_t count) +{ + g_dbg_lvl = simple_strtoul(buf, NULL, 16); + return count; +} + +static DRIVER_ATTR(debuglevel, S_IRUGO | S_IWUSR, dbg_level_show, + dbg_level_store); + +/** + * This function is called during module intialization + * to pass module parameters to the DWC_OTG CORE. + */ +static int set_parameters(dwc_otg_core_if_t * core_if) +{ + int retval = 0; + int i; + + if (dwc_otg_module_params.otg_cap != -1) { + retval += + dwc_otg_set_param_otg_cap(core_if, + dwc_otg_module_params.otg_cap); + } + if (dwc_otg_module_params.dma_enable != -1) { + retval += + dwc_otg_set_param_dma_enable(core_if, + dwc_otg_module_params. + dma_enable); + } + if (dwc_otg_module_params.dma_desc_enable != -1) { + retval += + dwc_otg_set_param_dma_desc_enable(core_if, + dwc_otg_module_params. + dma_desc_enable); + } + if (dwc_otg_module_params.opt != -1) { + retval += + dwc_otg_set_param_opt(core_if, dwc_otg_module_params.opt); + } + if (dwc_otg_module_params.dma_burst_size != -1) { + retval += + dwc_otg_set_param_dma_burst_size(core_if, + dwc_otg_module_params. + dma_burst_size); + } + if (dwc_otg_module_params.host_support_fs_ls_low_power != -1) { + retval += + dwc_otg_set_param_host_support_fs_ls_low_power(core_if, + dwc_otg_module_params. + host_support_fs_ls_low_power); + } + if (dwc_otg_module_params.enable_dynamic_fifo != -1) { + retval += + dwc_otg_set_param_enable_dynamic_fifo(core_if, + dwc_otg_module_params. + enable_dynamic_fifo); + } + if (dwc_otg_module_params.data_fifo_size != -1) { + retval += + dwc_otg_set_param_data_fifo_size(core_if, + dwc_otg_module_params. + data_fifo_size); + } + if (dwc_otg_module_params.dev_rx_fifo_size != -1) { + retval += + dwc_otg_set_param_dev_rx_fifo_size(core_if, + dwc_otg_module_params. + dev_rx_fifo_size); + } + if (dwc_otg_module_params.dev_nperio_tx_fifo_size != -1) { + retval += + dwc_otg_set_param_dev_nperio_tx_fifo_size(core_if, + dwc_otg_module_params. + dev_nperio_tx_fifo_size); + } + if (dwc_otg_module_params.host_rx_fifo_size != -1) { + retval += + dwc_otg_set_param_host_rx_fifo_size(core_if, + dwc_otg_module_params.host_rx_fifo_size); + } + if (dwc_otg_module_params.host_nperio_tx_fifo_size != -1) { + retval += + dwc_otg_set_param_host_nperio_tx_fifo_size(core_if, + dwc_otg_module_params. + host_nperio_tx_fifo_size); + } + if (dwc_otg_module_params.host_perio_tx_fifo_size != -1) { + retval += + dwc_otg_set_param_host_perio_tx_fifo_size(core_if, + dwc_otg_module_params. + host_perio_tx_fifo_size); + } + if (dwc_otg_module_params.max_transfer_size != -1) { + retval += + dwc_otg_set_param_max_transfer_size(core_if, + dwc_otg_module_params. + max_transfer_size); + } + if (dwc_otg_module_params.max_packet_count != -1) { + retval += + dwc_otg_set_param_max_packet_count(core_if, + dwc_otg_module_params. + max_packet_count); + } + if (dwc_otg_module_params.host_channels != -1) { + retval += + dwc_otg_set_param_host_channels(core_if, + dwc_otg_module_params. + host_channels); + } + if (dwc_otg_module_params.dev_endpoints != -1) { + retval += + dwc_otg_set_param_dev_endpoints(core_if, + dwc_otg_module_params. + dev_endpoints); + } + if (dwc_otg_module_params.phy_type != -1) { + retval += + dwc_otg_set_param_phy_type(core_if, + dwc_otg_module_params.phy_type); + } + if (dwc_otg_module_params.speed != -1) { + retval += + dwc_otg_set_param_speed(core_if, + dwc_otg_module_params.speed); + } + if (dwc_otg_module_params.host_ls_low_power_phy_clk != -1) { + retval += + dwc_otg_set_param_host_ls_low_power_phy_clk(core_if, + dwc_otg_module_params. + host_ls_low_power_phy_clk); + } + if (dwc_otg_module_params.phy_ulpi_ddr != -1) { + retval += + dwc_otg_set_param_phy_ulpi_ddr(core_if, + dwc_otg_module_params. + phy_ulpi_ddr); + } + if (dwc_otg_module_params.phy_ulpi_ext_vbus != -1) { + retval += + dwc_otg_set_param_phy_ulpi_ext_vbus(core_if, + dwc_otg_module_params. + phy_ulpi_ext_vbus); + } + if (dwc_otg_module_params.phy_utmi_width != -1) { + retval += + dwc_otg_set_param_phy_utmi_width(core_if, + dwc_otg_module_params. + phy_utmi_width); + } + if (dwc_otg_module_params.ulpi_fs_ls != -1) { + retval += + dwc_otg_set_param_ulpi_fs_ls(core_if, + dwc_otg_module_params.ulpi_fs_ls); + } + if (dwc_otg_module_params.ts_dline != -1) { + retval += + dwc_otg_set_param_ts_dline(core_if, + dwc_otg_module_params.ts_dline); + } + if (dwc_otg_module_params.i2c_enable != -1) { + retval += + dwc_otg_set_param_i2c_enable(core_if, + dwc_otg_module_params. + i2c_enable); + } + if (dwc_otg_module_params.en_multiple_tx_fifo != -1) { + retval += + dwc_otg_set_param_en_multiple_tx_fifo(core_if, + dwc_otg_module_params. + en_multiple_tx_fifo); + } + for (i = 0; i < 15; i++) { + if (dwc_otg_module_params.dev_perio_tx_fifo_size[i] != -1) { + retval += + dwc_otg_set_param_dev_perio_tx_fifo_size(core_if, + dwc_otg_module_params. + dev_perio_tx_fifo_size + [i], i); + } + } + + for (i = 0; i < 15; i++) { + if (dwc_otg_module_params.dev_tx_fifo_size[i] != -1) { + retval += dwc_otg_set_param_dev_tx_fifo_size(core_if, + dwc_otg_module_params. + dev_tx_fifo_size + [i], i); + } + } + if (dwc_otg_module_params.thr_ctl != -1) { + retval += + dwc_otg_set_param_thr_ctl(core_if, + dwc_otg_module_params.thr_ctl); + } + if (dwc_otg_module_params.mpi_enable != -1) { + retval += + dwc_otg_set_param_mpi_enable(core_if, + dwc_otg_module_params. + mpi_enable); + } + if (dwc_otg_module_params.pti_enable != -1) { + retval += + dwc_otg_set_param_pti_enable(core_if, + dwc_otg_module_params. + pti_enable); + } + if (dwc_otg_module_params.lpm_enable != -1) { + retval += + dwc_otg_set_param_lpm_enable(core_if, + dwc_otg_module_params. + lpm_enable); + } + if (dwc_otg_module_params.ic_usb_cap != -1) { + retval += + dwc_otg_set_param_ic_usb_cap(core_if, + dwc_otg_module_params. + ic_usb_cap); + } + if (dwc_otg_module_params.tx_thr_length != -1) { + retval += + dwc_otg_set_param_tx_thr_length(core_if, + dwc_otg_module_params.tx_thr_length); + } + if (dwc_otg_module_params.rx_thr_length != -1) { + retval += + dwc_otg_set_param_rx_thr_length(core_if, + dwc_otg_module_params. + rx_thr_length); + } + if (dwc_otg_module_params.ahb_thr_ratio != -1) { + retval += + dwc_otg_set_param_ahb_thr_ratio(core_if, + dwc_otg_module_params.ahb_thr_ratio); + } + if (dwc_otg_module_params.power_down != -1) { + retval += + dwc_otg_set_param_power_down(core_if, + dwc_otg_module_params.power_down); + } + if (dwc_otg_module_params.reload_ctl != -1) { + retval += + dwc_otg_set_param_reload_ctl(core_if, + dwc_otg_module_params.reload_ctl); + } + + if (dwc_otg_module_params.dev_out_nak != -1) { + retval += + dwc_otg_set_param_dev_out_nak(core_if, + dwc_otg_module_params.dev_out_nak); + } + + if (dwc_otg_module_params.cont_on_bna != -1) { + retval += + dwc_otg_set_param_cont_on_bna(core_if, + dwc_otg_module_params.cont_on_bna); + } + + if (dwc_otg_module_params.ahb_single != -1) { + retval += + dwc_otg_set_param_ahb_single(core_if, + dwc_otg_module_params.ahb_single); + } + + if (dwc_otg_module_params.otg_ver != -1) { + retval += + dwc_otg_set_param_otg_ver(core_if, + dwc_otg_module_params.otg_ver); + } + if (dwc_otg_module_params.adp_enable != -1) { + retval += + dwc_otg_set_param_adp_enable(core_if, + dwc_otg_module_params. + adp_enable); + } + return retval; +} + +/** + * This function is the top level interrupt handler for the Common + * (Device and host modes) interrupts. + */ +static irqreturn_t dwc_otg_common_irq(int irq, void *dev) +{ + int32_t retval = IRQ_NONE; + + retval = dwc_otg_handle_common_intr(dev); + if (retval != 0) { + S3C2410X_CLEAR_EINTPEND(); + } + return IRQ_RETVAL(retval); +} + +/** + * This function is called when a lm_device is unregistered with the + * dwc_otg_driver. This happens, for example, when the rmmod command is + * executed. The device may or may not be electrically present. If it is + * present, the driver stops device processing. Any resources used on behalf + * of this device are freed. + * + * @param _dev + */ +#ifdef LM_INTERFACE +#define REM_RETVAL(n) +static void dwc_otg_driver_remove( struct lm_device *_dev ) +{ dwc_otg_device_t *otg_dev = lm_get_drvdata(_dev); +#elif defined(PCI_INTERFACE) +#define REM_RETVAL(n) +static void dwc_otg_driver_remove( struct pci_dev *_dev ) +{ dwc_otg_device_t *otg_dev = pci_get_drvdata(_dev); +#elif defined(PLATFORM_INTERFACE) +#define REM_RETVAL(n) n +static int dwc_otg_driver_remove( struct platform_device *_dev ) +{ dwc_otg_device_t *otg_dev = platform_get_drvdata(_dev); +#endif + + DWC_DEBUGPL(DBG_ANY, "%s(%p) otg_dev %p\n", __func__, _dev, otg_dev); + + if (!otg_dev) { + /* Memory allocation for the dwc_otg_device failed. */ + DWC_DEBUGPL(DBG_ANY, "%s: otg_dev NULL!\n", __func__); + return REM_RETVAL(-ENOMEM); + } +#ifndef DWC_DEVICE_ONLY + if (otg_dev->hcd) { + hcd_remove(_dev); + } else { + DWC_DEBUGPL(DBG_ANY, "%s: otg_dev->hcd NULL!\n", __func__); + return REM_RETVAL(-EINVAL); + } +#endif + +#ifndef DWC_HOST_ONLY + if (otg_dev->pcd) { + pcd_remove(_dev); + } else { + DWC_DEBUGPL(DBG_ANY, "%s: otg_dev->pcd NULL!\n", __func__); + return REM_RETVAL(-EINVAL); + } +#endif + /* + * Free the IRQ + */ + if (otg_dev->common_irq_installed) { +#ifdef PLATFORM_INTERFACE + free_irq(platform_get_irq(_dev, 0), otg_dev); +#else + free_irq(_dev->irq, otg_dev); +#endif + } else { + DWC_DEBUGPL(DBG_ANY, "%s: There is no installed irq!\n", __func__); + return REM_RETVAL(-ENXIO); + } + + if (otg_dev->core_if) { + dwc_otg_cil_remove(otg_dev->core_if); + } else { + DWC_DEBUGPL(DBG_ANY, "%s: otg_dev->core_if NULL!\n", __func__); + return REM_RETVAL(-ENXIO); + } + + /* + * Remove the device attributes + */ + dwc_otg_attr_remove(_dev); + + /* + * Return the memory. + */ + if (otg_dev->os_dep.base) { + iounmap(otg_dev->os_dep.base); + } + DWC_FREE(otg_dev); + + /* + * Clear the drvdata pointer. + */ +#ifdef LM_INTERFACE + lm_set_drvdata(_dev, 0); +#elif defined(PCI_INTERFACE) + release_mem_region(otg_dev->os_dep.rsrc_start, + otg_dev->os_dep.rsrc_len); + pci_set_drvdata(_dev, 0); +#elif defined(PLATFORM_INTERFACE) + platform_set_drvdata(_dev, 0); +#endif + return REM_RETVAL(0); +} + +/** + * This function is called when an lm_device is bound to a + * dwc_otg_driver. It creates the driver components required to + * control the device (CIL, HCD, and PCD) and it initializes the + * device. The driver components are stored in a dwc_otg_device + * structure. A reference to the dwc_otg_device is saved in the + * lm_device. This allows the driver to access the dwc_otg_device + * structure on subsequent calls to driver methods for this device. + * + * @param _dev Bus device + */ +static int dwc_otg_driver_probe( +#ifdef LM_INTERFACE + struct lm_device *_dev +#elif defined(PCI_INTERFACE) + struct pci_dev *_dev, + const struct pci_device_id *id +#elif defined(PLATFORM_INTERFACE) + struct platform_device *_dev +#endif + ) +{ + int retval = 0; + dwc_otg_device_t *dwc_otg_device; + int devirq; + + dev_dbg(&_dev->dev, "dwc_otg_driver_probe(%p)\n", _dev); +#ifdef LM_INTERFACE + dev_dbg(&_dev->dev, "start=0x%08x\n", (unsigned)_dev->resource.start); +#elif defined(PCI_INTERFACE) + if (!id) { + DWC_ERROR("Invalid pci_device_id %p", id); + return -EINVAL; + } + + if (!_dev || (pci_enable_device(_dev) < 0)) { + DWC_ERROR("Invalid pci_device %p", _dev); + return -ENODEV; + } + dev_dbg(&_dev->dev, "start=0x%08x\n", (unsigned)pci_resource_start(_dev,0)); + /* other stuff needed as well? */ + +#elif defined(PLATFORM_INTERFACE) + dev_dbg(&_dev->dev, "start=0x%08x (len 0x%x)\n", + (unsigned)_dev->resource->start, + (unsigned)(_dev->resource->end - _dev->resource->start)); +#endif + + dwc_otg_device = DWC_ALLOC(sizeof(dwc_otg_device_t)); + + if (!dwc_otg_device) { + dev_err(&_dev->dev, "kmalloc of dwc_otg_device failed\n"); + return -ENOMEM; + } + + memset(dwc_otg_device, 0, sizeof(*dwc_otg_device)); + dwc_otg_device->os_dep.reg_offset = 0xFFFFFFFF; + dwc_otg_device->os_dep.platformdev = _dev; + + /* + * Map the DWC_otg Core memory into virtual address space. + */ +#ifdef LM_INTERFACE + dwc_otg_device->os_dep.base = ioremap(_dev->resource.start, SZ_256K); + + if (!dwc_otg_device->os_dep.base) { + dev_err(&_dev->dev, "ioremap() failed\n"); + DWC_FREE(dwc_otg_device); + return -ENOMEM; + } + dev_dbg(&_dev->dev, "base=0x%08x\n", + (unsigned)dwc_otg_device->os_dep.base); +#elif defined(PCI_INTERFACE) + _dev->current_state = PCI_D0; + _dev->dev.power.power_state = PMSG_ON; + + if (!_dev->irq) { + DWC_ERROR("Found HC with no IRQ. Check BIOS/PCI %s setup!", + pci_name(_dev)); + iounmap(dwc_otg_device->os_dep.base); + DWC_FREE(dwc_otg_device); + return -ENODEV; + } + + dwc_otg_device->os_dep.rsrc_start = pci_resource_start(_dev, 0); + dwc_otg_device->os_dep.rsrc_len = pci_resource_len(_dev, 0); + DWC_DEBUGPL(DBG_ANY, "PCI resource: start=%08x, len=%08x\n", + (unsigned)dwc_otg_device->os_dep.rsrc_start, + (unsigned)dwc_otg_device->os_dep.rsrc_len); + if (!request_mem_region + (dwc_otg_device->os_dep.rsrc_start, dwc_otg_device->os_dep.rsrc_len, + "dwc_otg")) { + dev_dbg(&_dev->dev, "error requesting memory\n"); + iounmap(dwc_otg_device->os_dep.base); + DWC_FREE(dwc_otg_device); + return -EFAULT; + } + + dwc_otg_device->os_dep.base = + ioremap_nocache(dwc_otg_device->os_dep.rsrc_start, + dwc_otg_device->os_dep.rsrc_len); + if (dwc_otg_device->os_dep.base == NULL) { + dev_dbg(&_dev->dev, "error mapping memory\n"); + release_mem_region(dwc_otg_device->os_dep.rsrc_start, + dwc_otg_device->os_dep.rsrc_len); + iounmap(dwc_otg_device->os_dep.base); + DWC_FREE(dwc_otg_device); + return -EFAULT; + } + dev_dbg(&_dev->dev, "base=0x%p (before adjust) \n", + dwc_otg_device->os_dep.base); + dwc_otg_device->os_dep.base = (char *)dwc_otg_device->os_dep.base; + dev_dbg(&_dev->dev, "base=0x%p (after adjust) \n", + dwc_otg_device->os_dep.base); + dev_dbg(&_dev->dev, "%s: mapped PA 0x%x to VA 0x%p\n", __func__, + (unsigned)dwc_otg_device->os_dep.rsrc_start, + dwc_otg_device->os_dep.base); + + pci_set_master(_dev); + pci_set_drvdata(_dev, dwc_otg_device); +#elif defined(PLATFORM_INTERFACE) + DWC_DEBUGPL(DBG_ANY,"Platform resource: start=%08x, len=%08x\n", + _dev->resource->start, + _dev->resource->end - _dev->resource->start + 1); +#if 1 + if (!request_mem_region(_dev->resource[0].start, + _dev->resource[0].end - _dev->resource[0].start + 1, + "dwc_otg")) { + dev_dbg(&_dev->dev, "error reserving mapped memory\n"); + retval = -EFAULT; + goto fail; + } + + dwc_otg_device->os_dep.base = ioremap_nocache(_dev->resource[0].start, + _dev->resource[0].end - + _dev->resource[0].start+1); + if (fiq_enable) + { + if (!request_mem_region(_dev->resource[1].start, + _dev->resource[1].end - _dev->resource[1].start + 1, + "dwc_otg")) { + dev_dbg(&_dev->dev, "error reserving mapped memory\n"); + retval = -EFAULT; + goto fail; + } + + dwc_otg_device->os_dep.mphi_base = ioremap_nocache(_dev->resource[1].start, + _dev->resource[1].end - + _dev->resource[1].start + 1); + } + +#else + { + struct map_desc desc = { + .virtual = IO_ADDRESS((unsigned)_dev->resource->start), + .pfn = __phys_to_pfn((unsigned)_dev->resource->start), + .length = SZ_128K, + .type = MT_DEVICE + }; + iotable_init(&desc, 1); + dwc_otg_device->os_dep.base = (void *)desc.virtual; + } +#endif + if (!dwc_otg_device->os_dep.base) { + dev_err(&_dev->dev, "ioremap() failed\n"); + retval = -ENOMEM; + goto fail; + } + dev_dbg(&_dev->dev, "base=0x%08x\n", + (unsigned)dwc_otg_device->os_dep.base); +#endif + + /* + * Initialize driver data to point to the global DWC_otg + * Device structure. + */ +#ifdef LM_INTERFACE + lm_set_drvdata(_dev, dwc_otg_device); +#elif defined(PLATFORM_INTERFACE) + platform_set_drvdata(_dev, dwc_otg_device); +#endif + dev_dbg(&_dev->dev, "dwc_otg_device=0x%p\n", dwc_otg_device); + + dwc_otg_device->core_if = dwc_otg_cil_init(dwc_otg_device->os_dep.base); + DWC_DEBUGPL(DBG_HCDV, "probe of device %p given core_if %p\n", + dwc_otg_device, dwc_otg_device->core_if);//GRAYG + + if (!dwc_otg_device->core_if) { + dev_err(&_dev->dev, "CIL initialization failed!\n"); + retval = -ENOMEM; + goto fail; + } + + dev_dbg(&_dev->dev, "Calling get_gsnpsid\n"); + /* + * Attempt to ensure this device is really a DWC_otg Controller. + * Read and verify the SNPSID register contents. The value should be + * 0x45F42XXX or 0x45F42XXX, which corresponds to either "OT2" or "OTG3", + * as in "OTG version 2.XX" or "OTG version 3.XX". + */ + + if (((dwc_otg_get_gsnpsid(dwc_otg_device->core_if) & 0xFFFFF000) != 0x4F542000) && + ((dwc_otg_get_gsnpsid(dwc_otg_device->core_if) & 0xFFFFF000) != 0x4F543000)) { + dev_err(&_dev->dev, "Bad value for SNPSID: 0x%08x\n", + dwc_otg_get_gsnpsid(dwc_otg_device->core_if)); + retval = -EINVAL; + goto fail; + } + + /* + * Validate parameter values. + */ + dev_dbg(&_dev->dev, "Calling set_parameters\n"); + if (set_parameters(dwc_otg_device->core_if)) { + retval = -EINVAL; + goto fail; + } + + /* + * Create Device Attributes in sysfs + */ + dev_dbg(&_dev->dev, "Calling attr_create\n"); + dwc_otg_attr_create(_dev); + + /* + * Disable the global interrupt until all the interrupt + * handlers are installed. + */ + dev_dbg(&_dev->dev, "Calling disable_global_interrupts\n"); + dwc_otg_disable_global_interrupts(dwc_otg_device->core_if); + + /* + * Install the interrupt handler for the common interrupts before + * enabling common interrupts in core_init below. + */ + +#if defined(PLATFORM_INTERFACE) + devirq = platform_get_irq(_dev, fiq_enable ? 0 : 1); +#else + devirq = _dev->irq; +#endif + DWC_DEBUGPL(DBG_CIL, "registering (common) handler for irq%d\n", + devirq); + dev_dbg(&_dev->dev, "Calling request_irq(%d)\n", devirq); + retval = request_irq(devirq, dwc_otg_common_irq, + IRQF_SHARED, + "dwc_otg", dwc_otg_device); + if (retval) { + DWC_ERROR("request of irq%d failed\n", devirq); + retval = -EBUSY; + goto fail; + } else { + dwc_otg_device->common_irq_installed = 1; + } + +#ifndef IRQF_TRIGGER_LOW +#if defined(LM_INTERFACE) || defined(PLATFORM_INTERFACE) + dev_dbg(&_dev->dev, "Calling set_irq_type\n"); + set_irq_type(devirq, +#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,30)) + IRQT_LOW +#else + IRQ_TYPE_LEVEL_LOW +#endif + ); +#endif +#endif /*IRQF_TRIGGER_LOW*/ + + /* + * Initialize the DWC_otg core. + */ + dev_dbg(&_dev->dev, "Calling dwc_otg_core_init\n"); + dwc_otg_core_init(dwc_otg_device->core_if); + +#ifndef DWC_HOST_ONLY + /* + * Initialize the PCD + */ + dev_dbg(&_dev->dev, "Calling pcd_init\n"); + retval = pcd_init(_dev); + if (retval != 0) { + DWC_ERROR("pcd_init failed\n"); + dwc_otg_device->pcd = NULL; + goto fail; + } +#endif +#ifndef DWC_DEVICE_ONLY + /* + * Initialize the HCD + */ + dev_dbg(&_dev->dev, "Calling hcd_init\n"); + retval = hcd_init(_dev); + if (retval != 0) { + DWC_ERROR("hcd_init failed\n"); + dwc_otg_device->hcd = NULL; + goto fail; + } +#endif + /* Recover from drvdata having been overwritten by hcd_init() */ +#ifdef LM_INTERFACE + lm_set_drvdata(_dev, dwc_otg_device); +#elif defined(PLATFORM_INTERFACE) + platform_set_drvdata(_dev, dwc_otg_device); +#elif defined(PCI_INTERFACE) + pci_set_drvdata(_dev, dwc_otg_device); + dwc_otg_device->os_dep.pcidev = _dev; +#endif + + /* + * Enable the global interrupt after all the interrupt + * handlers are installed if there is no ADP support else + * perform initial actions required for Internal ADP logic. + */ + if (!dwc_otg_get_param_adp_enable(dwc_otg_device->core_if)) { + dev_dbg(&_dev->dev, "Calling enable_global_interrupts\n"); + dwc_otg_enable_global_interrupts(dwc_otg_device->core_if); + dev_dbg(&_dev->dev, "Done\n"); + } else + dwc_otg_adp_start(dwc_otg_device->core_if, + dwc_otg_is_host_mode(dwc_otg_device->core_if)); + + return 0; + +fail: + dwc_otg_driver_remove(_dev); + return retval; +} + +/** + * This structure defines the methods to be called by a bus driver + * during the lifecycle of a device on that bus. Both drivers and + * devices are registered with a bus driver. The bus driver matches + * devices to drivers based on information in the device and driver + * structures. + * + * The probe function is called when the bus driver matches a device + * to this driver. The remove function is called when a device is + * unregistered with the bus driver. + */ +#ifdef LM_INTERFACE +static struct lm_driver dwc_otg_driver = { + .drv = {.name = (char *)dwc_driver_name,}, + .probe = dwc_otg_driver_probe, + .remove = dwc_otg_driver_remove, + // 'suspend' and 'resume' absent +}; +#elif defined(PCI_INTERFACE) +static const struct pci_device_id pci_ids[] = { { + PCI_DEVICE(0x16c3, 0xabcd), + .driver_data = + (unsigned long)0xdeadbeef, + }, { /* end: all zeroes */ } +}; + +MODULE_DEVICE_TABLE(pci, pci_ids); + +/* pci driver glue; this is a "new style" PCI driver module */ +static struct pci_driver dwc_otg_driver = { + .name = "dwc_otg", + .id_table = pci_ids, + + .probe = dwc_otg_driver_probe, + .remove = dwc_otg_driver_remove, + + .driver = { + .name = (char *)dwc_driver_name, + }, +}; +#elif defined(PLATFORM_INTERFACE) +static struct platform_device_id platform_ids[] = { + { + .name = "bcm2708_usb", + .driver_data = (kernel_ulong_t) 0xdeadbeef, + }, + { /* end: all zeroes */ } +}; +MODULE_DEVICE_TABLE(platform, platform_ids); + +static const struct of_device_id dwc_otg_of_match_table[] = { + { .compatible = "brcm,bcm2708-usb", }, + {}, +}; +MODULE_DEVICE_TABLE(of, dwc_otg_of_match_table); + +static struct platform_driver dwc_otg_driver = { + .driver = { + .name = (char *)dwc_driver_name, + .of_match_table = dwc_otg_of_match_table, + }, + .id_table = platform_ids, + + .probe = dwc_otg_driver_probe, + .remove = dwc_otg_driver_remove, + // no 'shutdown', 'suspend', 'resume', 'suspend_late' or 'resume_early' +}; +#endif + +/** + * This function is called when the dwc_otg_driver is installed with the + * insmod command. It registers the dwc_otg_driver structure with the + * appropriate bus driver. This will cause the dwc_otg_driver_probe function + * to be called. In addition, the bus driver will automatically expose + * attributes defined for the device and driver in the special sysfs file + * system. + * + * @return + */ +static int __init dwc_otg_driver_init(void) +{ + int retval = 0; + int error; + struct device_driver *drv; + + if(fiq_fsm_enable && !fiq_enable) { + printk(KERN_WARNING "dwc_otg: fiq_fsm_enable was set without fiq_enable! Correcting.\n"); + fiq_enable = 1; + } + + printk(KERN_INFO "%s: version %s (%s bus)\n", dwc_driver_name, + DWC_DRIVER_VERSION, +#ifdef LM_INTERFACE + "logicmodule"); + retval = lm_driver_register(&dwc_otg_driver); + drv = &dwc_otg_driver.drv; +#elif defined(PCI_INTERFACE) + "pci"); + retval = pci_register_driver(&dwc_otg_driver); + drv = &dwc_otg_driver.driver; +#elif defined(PLATFORM_INTERFACE) + "platform"); + retval = platform_driver_register(&dwc_otg_driver); + drv = &dwc_otg_driver.driver; +#endif + if (retval < 0) { + printk(KERN_ERR "%s retval=%d\n", __func__, retval); + return retval; + } + printk(KERN_DEBUG "dwc_otg: FIQ %s\n", fiq_enable ? "enabled":"disabled"); + printk(KERN_DEBUG "dwc_otg: NAK holdoff %s\n", nak_holdoff ? "enabled":"disabled"); + printk(KERN_DEBUG "dwc_otg: FIQ split-transaction FSM %s\n", fiq_fsm_enable ? "enabled":"disabled"); + + error = driver_create_file(drv, &driver_attr_version); +#ifdef DEBUG + error = driver_create_file(drv, &driver_attr_debuglevel); +#endif + return retval; +} + +module_init(dwc_otg_driver_init); + +/** + * This function is called when the driver is removed from the kernel + * with the rmmod command. The driver unregisters itself with its bus + * driver. + * + */ +static void __exit dwc_otg_driver_cleanup(void) +{ + printk(KERN_DEBUG "dwc_otg_driver_cleanup()\n"); + +#ifdef LM_INTERFACE + driver_remove_file(&dwc_otg_driver.drv, &driver_attr_debuglevel); + driver_remove_file(&dwc_otg_driver.drv, &driver_attr_version); + lm_driver_unregister(&dwc_otg_driver); +#elif defined(PCI_INTERFACE) + driver_remove_file(&dwc_otg_driver.driver, &driver_attr_debuglevel); + driver_remove_file(&dwc_otg_driver.driver, &driver_attr_version); + pci_unregister_driver(&dwc_otg_driver); +#elif defined(PLATFORM_INTERFACE) + driver_remove_file(&dwc_otg_driver.driver, &driver_attr_debuglevel); + driver_remove_file(&dwc_otg_driver.driver, &driver_attr_version); + platform_driver_unregister(&dwc_otg_driver); +#endif + + printk(KERN_INFO "%s module removed\n", dwc_driver_name); +} + +module_exit(dwc_otg_driver_cleanup); + +MODULE_DESCRIPTION(DWC_DRIVER_DESC); +MODULE_AUTHOR("Synopsys Inc."); +MODULE_LICENSE("GPL"); + +module_param_named(otg_cap, dwc_otg_module_params.otg_cap, int, 0444); +MODULE_PARM_DESC(otg_cap, "OTG Capabilities 0=HNP&SRP 1=SRP Only 2=None"); +module_param_named(opt, dwc_otg_module_params.opt, int, 0444); +MODULE_PARM_DESC(opt, "OPT Mode"); +module_param_named(dma_enable, dwc_otg_module_params.dma_enable, int, 0444); +MODULE_PARM_DESC(dma_enable, "DMA Mode 0=Slave 1=DMA enabled"); + +module_param_named(dma_desc_enable, dwc_otg_module_params.dma_desc_enable, int, + 0444); +MODULE_PARM_DESC(dma_desc_enable, + "DMA Desc Mode 0=Address DMA 1=DMA Descriptor enabled"); + +module_param_named(dma_burst_size, dwc_otg_module_params.dma_burst_size, int, + 0444); +MODULE_PARM_DESC(dma_burst_size, + "DMA Burst Size 1, 4, 8, 16, 32, 64, 128, 256"); +module_param_named(speed, dwc_otg_module_params.speed, int, 0444); +MODULE_PARM_DESC(speed, "Speed 0=High Speed 1=Full Speed"); +module_param_named(host_support_fs_ls_low_power, + dwc_otg_module_params.host_support_fs_ls_low_power, int, + 0444); +MODULE_PARM_DESC(host_support_fs_ls_low_power, + "Support Low Power w/FS or LS 0=Support 1=Don't Support"); +module_param_named(host_ls_low_power_phy_clk, + dwc_otg_module_params.host_ls_low_power_phy_clk, int, 0444); +MODULE_PARM_DESC(host_ls_low_power_phy_clk, + "Low Speed Low Power Clock 0=48Mhz 1=6Mhz"); +module_param_named(enable_dynamic_fifo, + dwc_otg_module_params.enable_dynamic_fifo, int, 0444); +MODULE_PARM_DESC(enable_dynamic_fifo, "0=cC Setting 1=Allow Dynamic Sizing"); +module_param_named(data_fifo_size, dwc_otg_module_params.data_fifo_size, int, + 0444); +MODULE_PARM_DESC(data_fifo_size, + "Total number of words in the data FIFO memory 32-32768"); +module_param_named(dev_rx_fifo_size, dwc_otg_module_params.dev_rx_fifo_size, + int, 0444); +MODULE_PARM_DESC(dev_rx_fifo_size, "Number of words in the Rx FIFO 16-32768"); +module_param_named(dev_nperio_tx_fifo_size, + dwc_otg_module_params.dev_nperio_tx_fifo_size, int, 0444); +MODULE_PARM_DESC(dev_nperio_tx_fifo_size, + "Number of words in the non-periodic Tx FIFO 16-32768"); +module_param_named(dev_perio_tx_fifo_size_1, + dwc_otg_module_params.dev_perio_tx_fifo_size[0], int, 0444); +MODULE_PARM_DESC(dev_perio_tx_fifo_size_1, + "Number of words in the periodic Tx FIFO 4-768"); +module_param_named(dev_perio_tx_fifo_size_2, + dwc_otg_module_params.dev_perio_tx_fifo_size[1], int, 0444); +MODULE_PARM_DESC(dev_perio_tx_fifo_size_2, + "Number of words in the periodic Tx FIFO 4-768"); +module_param_named(dev_perio_tx_fifo_size_3, + dwc_otg_module_params.dev_perio_tx_fifo_size[2], int, 0444); +MODULE_PARM_DESC(dev_perio_tx_fifo_size_3, + "Number of words in the periodic Tx FIFO 4-768"); +module_param_named(dev_perio_tx_fifo_size_4, + dwc_otg_module_params.dev_perio_tx_fifo_size[3], int, 0444); +MODULE_PARM_DESC(dev_perio_tx_fifo_size_4, + "Number of words in the periodic Tx FIFO 4-768"); +module_param_named(dev_perio_tx_fifo_size_5, + dwc_otg_module_params.dev_perio_tx_fifo_size[4], int, 0444); +MODULE_PARM_DESC(dev_perio_tx_fifo_size_5, + "Number of words in the periodic Tx FIFO 4-768"); +module_param_named(dev_perio_tx_fifo_size_6, + dwc_otg_module_params.dev_perio_tx_fifo_size[5], int, 0444); +MODULE_PARM_DESC(dev_perio_tx_fifo_size_6, + "Number of words in the periodic Tx FIFO 4-768"); +module_param_named(dev_perio_tx_fifo_size_7, + dwc_otg_module_params.dev_perio_tx_fifo_size[6], int, 0444); +MODULE_PARM_DESC(dev_perio_tx_fifo_size_7, + "Number of words in the periodic Tx FIFO 4-768"); +module_param_named(dev_perio_tx_fifo_size_8, + dwc_otg_module_params.dev_perio_tx_fifo_size[7], int, 0444); +MODULE_PARM_DESC(dev_perio_tx_fifo_size_8, + "Number of words in the periodic Tx FIFO 4-768"); +module_param_named(dev_perio_tx_fifo_size_9, + dwc_otg_module_params.dev_perio_tx_fifo_size[8], int, 0444); +MODULE_PARM_DESC(dev_perio_tx_fifo_size_9, + "Number of words in the periodic Tx FIFO 4-768"); +module_param_named(dev_perio_tx_fifo_size_10, + dwc_otg_module_params.dev_perio_tx_fifo_size[9], int, 0444); +MODULE_PARM_DESC(dev_perio_tx_fifo_size_10, + "Number of words in the periodic Tx FIFO 4-768"); +module_param_named(dev_perio_tx_fifo_size_11, + dwc_otg_module_params.dev_perio_tx_fifo_size[10], int, 0444); +MODULE_PARM_DESC(dev_perio_tx_fifo_size_11, + "Number of words in the periodic Tx FIFO 4-768"); +module_param_named(dev_perio_tx_fifo_size_12, + dwc_otg_module_params.dev_perio_tx_fifo_size[11], int, 0444); +MODULE_PARM_DESC(dev_perio_tx_fifo_size_12, + "Number of words in the periodic Tx FIFO 4-768"); +module_param_named(dev_perio_tx_fifo_size_13, + dwc_otg_module_params.dev_perio_tx_fifo_size[12], int, 0444); +MODULE_PARM_DESC(dev_perio_tx_fifo_size_13, + "Number of words in the periodic Tx FIFO 4-768"); +module_param_named(dev_perio_tx_fifo_size_14, + dwc_otg_module_params.dev_perio_tx_fifo_size[13], int, 0444); +MODULE_PARM_DESC(dev_perio_tx_fifo_size_14, + "Number of words in the periodic Tx FIFO 4-768"); +module_param_named(dev_perio_tx_fifo_size_15, + dwc_otg_module_params.dev_perio_tx_fifo_size[14], int, 0444); +MODULE_PARM_DESC(dev_perio_tx_fifo_size_15, + "Number of words in the periodic Tx FIFO 4-768"); +module_param_named(host_rx_fifo_size, dwc_otg_module_params.host_rx_fifo_size, + int, 0444); +MODULE_PARM_DESC(host_rx_fifo_size, "Number of words in the Rx FIFO 16-32768"); +module_param_named(host_nperio_tx_fifo_size, + dwc_otg_module_params.host_nperio_tx_fifo_size, int, 0444); +MODULE_PARM_DESC(host_nperio_tx_fifo_size, + "Number of words in the non-periodic Tx FIFO 16-32768"); +module_param_named(host_perio_tx_fifo_size, + dwc_otg_module_params.host_perio_tx_fifo_size, int, 0444); +MODULE_PARM_DESC(host_perio_tx_fifo_size, + "Number of words in the host periodic Tx FIFO 16-32768"); +module_param_named(max_transfer_size, dwc_otg_module_params.max_transfer_size, + int, 0444); +/** @todo Set the max to 512K, modify checks */ +MODULE_PARM_DESC(max_transfer_size, + "The maximum transfer size supported in bytes 2047-65535"); +module_param_named(max_packet_count, dwc_otg_module_params.max_packet_count, + int, 0444); +MODULE_PARM_DESC(max_packet_count, + "The maximum number of packets in a transfer 15-511"); +module_param_named(host_channels, dwc_otg_module_params.host_channels, int, + 0444); +MODULE_PARM_DESC(host_channels, + "The number of host channel registers to use 1-16"); +module_param_named(dev_endpoints, dwc_otg_module_params.dev_endpoints, int, + 0444); +MODULE_PARM_DESC(dev_endpoints, + "The number of endpoints in addition to EP0 available for device mode 1-15"); +module_param_named(phy_type, dwc_otg_module_params.phy_type, int, 0444); +MODULE_PARM_DESC(phy_type, "0=Reserved 1=UTMI+ 2=ULPI"); +module_param_named(phy_utmi_width, dwc_otg_module_params.phy_utmi_width, int, + 0444); +MODULE_PARM_DESC(phy_utmi_width, "Specifies the UTMI+ Data Width 8 or 16 bits"); +module_param_named(phy_ulpi_ddr, dwc_otg_module_params.phy_ulpi_ddr, int, 0444); +MODULE_PARM_DESC(phy_ulpi_ddr, + "ULPI at double or single data rate 0=Single 1=Double"); +module_param_named(phy_ulpi_ext_vbus, dwc_otg_module_params.phy_ulpi_ext_vbus, + int, 0444); +MODULE_PARM_DESC(phy_ulpi_ext_vbus, + "ULPI PHY using internal or external vbus 0=Internal"); +module_param_named(i2c_enable, dwc_otg_module_params.i2c_enable, int, 0444); +MODULE_PARM_DESC(i2c_enable, "FS PHY Interface"); +module_param_named(ulpi_fs_ls, dwc_otg_module_params.ulpi_fs_ls, int, 0444); +MODULE_PARM_DESC(ulpi_fs_ls, "ULPI PHY FS/LS mode only"); +module_param_named(ts_dline, dwc_otg_module_params.ts_dline, int, 0444); +MODULE_PARM_DESC(ts_dline, "Term select Dline pulsing for all PHYs"); +module_param_named(debug, g_dbg_lvl, int, 0444); +MODULE_PARM_DESC(debug, ""); + +module_param_named(en_multiple_tx_fifo, + dwc_otg_module_params.en_multiple_tx_fifo, int, 0444); +MODULE_PARM_DESC(en_multiple_tx_fifo, + "Dedicated Non Periodic Tx FIFOs 0=disabled 1=enabled"); +module_param_named(dev_tx_fifo_size_1, + dwc_otg_module_params.dev_tx_fifo_size[0], int, 0444); +MODULE_PARM_DESC(dev_tx_fifo_size_1, "Number of words in the Tx FIFO 4-768"); +module_param_named(dev_tx_fifo_size_2, + dwc_otg_module_params.dev_tx_fifo_size[1], int, 0444); +MODULE_PARM_DESC(dev_tx_fifo_size_2, "Number of words in the Tx FIFO 4-768"); +module_param_named(dev_tx_fifo_size_3, + dwc_otg_module_params.dev_tx_fifo_size[2], int, 0444); +MODULE_PARM_DESC(dev_tx_fifo_size_3, "Number of words in the Tx FIFO 4-768"); +module_param_named(dev_tx_fifo_size_4, + dwc_otg_module_params.dev_tx_fifo_size[3], int, 0444); +MODULE_PARM_DESC(dev_tx_fifo_size_4, "Number of words in the Tx FIFO 4-768"); +module_param_named(dev_tx_fifo_size_5, + dwc_otg_module_params.dev_tx_fifo_size[4], int, 0444); +MODULE_PARM_DESC(dev_tx_fifo_size_5, "Number of words in the Tx FIFO 4-768"); +module_param_named(dev_tx_fifo_size_6, + dwc_otg_module_params.dev_tx_fifo_size[5], int, 0444); +MODULE_PARM_DESC(dev_tx_fifo_size_6, "Number of words in the Tx FIFO 4-768"); +module_param_named(dev_tx_fifo_size_7, + dwc_otg_module_params.dev_tx_fifo_size[6], int, 0444); +MODULE_PARM_DESC(dev_tx_fifo_size_7, "Number of words in the Tx FIFO 4-768"); +module_param_named(dev_tx_fifo_size_8, + dwc_otg_module_params.dev_tx_fifo_size[7], int, 0444); +MODULE_PARM_DESC(dev_tx_fifo_size_8, "Number of words in the Tx FIFO 4-768"); +module_param_named(dev_tx_fifo_size_9, + dwc_otg_module_params.dev_tx_fifo_size[8], int, 0444); +MODULE_PARM_DESC(dev_tx_fifo_size_9, "Number of words in the Tx FIFO 4-768"); +module_param_named(dev_tx_fifo_size_10, + dwc_otg_module_params.dev_tx_fifo_size[9], int, 0444); +MODULE_PARM_DESC(dev_tx_fifo_size_10, "Number of words in the Tx FIFO 4-768"); +module_param_named(dev_tx_fifo_size_11, + dwc_otg_module_params.dev_tx_fifo_size[10], int, 0444); +MODULE_PARM_DESC(dev_tx_fifo_size_11, "Number of words in the Tx FIFO 4-768"); +module_param_named(dev_tx_fifo_size_12, + dwc_otg_module_params.dev_tx_fifo_size[11], int, 0444); +MODULE_PARM_DESC(dev_tx_fifo_size_12, "Number of words in the Tx FIFO 4-768"); +module_param_named(dev_tx_fifo_size_13, + dwc_otg_module_params.dev_tx_fifo_size[12], int, 0444); +MODULE_PARM_DESC(dev_tx_fifo_size_13, "Number of words in the Tx FIFO 4-768"); +module_param_named(dev_tx_fifo_size_14, + dwc_otg_module_params.dev_tx_fifo_size[13], int, 0444); +MODULE_PARM_DESC(dev_tx_fifo_size_14, "Number of words in the Tx FIFO 4-768"); +module_param_named(dev_tx_fifo_size_15, + dwc_otg_module_params.dev_tx_fifo_size[14], int, 0444); +MODULE_PARM_DESC(dev_tx_fifo_size_15, "Number of words in the Tx FIFO 4-768"); + +module_param_named(thr_ctl, dwc_otg_module_params.thr_ctl, int, 0444); +MODULE_PARM_DESC(thr_ctl, + "Thresholding enable flag bit 0 - non ISO Tx thr., 1 - ISO Tx thr., 2 - Rx thr.- bit 0=disabled 1=enabled"); +module_param_named(tx_thr_length, dwc_otg_module_params.tx_thr_length, int, + 0444); +MODULE_PARM_DESC(tx_thr_length, "Tx Threshold length in 32 bit DWORDs"); +module_param_named(rx_thr_length, dwc_otg_module_params.rx_thr_length, int, + 0444); +MODULE_PARM_DESC(rx_thr_length, "Rx Threshold length in 32 bit DWORDs"); + +module_param_named(pti_enable, dwc_otg_module_params.pti_enable, int, 0444); +module_param_named(mpi_enable, dwc_otg_module_params.mpi_enable, int, 0444); +module_param_named(lpm_enable, dwc_otg_module_params.lpm_enable, int, 0444); +MODULE_PARM_DESC(lpm_enable, "LPM Enable 0=LPM Disabled 1=LPM Enabled"); +module_param_named(ic_usb_cap, dwc_otg_module_params.ic_usb_cap, int, 0444); +MODULE_PARM_DESC(ic_usb_cap, + "IC_USB Capability 0=IC_USB Disabled 1=IC_USB Enabled"); +module_param_named(ahb_thr_ratio, dwc_otg_module_params.ahb_thr_ratio, int, + 0444); +MODULE_PARM_DESC(ahb_thr_ratio, "AHB Threshold Ratio"); +module_param_named(power_down, dwc_otg_module_params.power_down, int, 0444); +MODULE_PARM_DESC(power_down, "Power Down Mode"); +module_param_named(reload_ctl, dwc_otg_module_params.reload_ctl, int, 0444); +MODULE_PARM_DESC(reload_ctl, "HFIR Reload Control"); +module_param_named(dev_out_nak, dwc_otg_module_params.dev_out_nak, int, 0444); +MODULE_PARM_DESC(dev_out_nak, "Enable Device OUT NAK"); +module_param_named(cont_on_bna, dwc_otg_module_params.cont_on_bna, int, 0444); +MODULE_PARM_DESC(cont_on_bna, "Enable Enable Continue on BNA"); +module_param_named(ahb_single, dwc_otg_module_params.ahb_single, int, 0444); +MODULE_PARM_DESC(ahb_single, "Enable AHB Single Support"); +module_param_named(adp_enable, dwc_otg_module_params.adp_enable, int, 0444); +MODULE_PARM_DESC(adp_enable, "ADP Enable 0=ADP Disabled 1=ADP Enabled"); +module_param_named(otg_ver, dwc_otg_module_params.otg_ver, int, 0444); +MODULE_PARM_DESC(otg_ver, "OTG revision supported 0=OTG 1.3 1=OTG 2.0"); +module_param(microframe_schedule, bool, 0444); +MODULE_PARM_DESC(microframe_schedule, "Enable the microframe scheduler"); + +module_param(fiq_enable, bool, 0444); +MODULE_PARM_DESC(fiq_enable, "Enable the FIQ"); +module_param(nak_holdoff, ushort, 0644); +MODULE_PARM_DESC(nak_holdoff, "Throttle duration for bulk split-transaction endpoints on a NAK. Default 8"); +module_param(fiq_fsm_enable, bool, 0444); +MODULE_PARM_DESC(fiq_fsm_enable, "Enable the FIQ to perform split transactions as defined by fiq_fsm_mask"); +module_param(fiq_fsm_mask, ushort, 0444); +MODULE_PARM_DESC(fiq_fsm_mask, "Bitmask of transactions to perform in the FIQ.\n" + "Bit 0 : Non-periodic split transactions\n" + "Bit 1 : Periodic split transactions\n" + "Bit 2 : High-speed multi-transfer isochronous\n" + "All other bits should be set 0."); + + +/** @page "Module Parameters" + * + * The following parameters may be specified when starting the module. + * These parameters define how the DWC_otg controller should be + * configured. Parameter values are passed to the CIL initialization + * function dwc_otg_cil_init + * + * Example: modprobe dwc_otg speed=1 otg_cap=1 + * + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +*/ --- linux-raspi2-4.2.0.orig/drivers/usb/host/dwc_otg/dwc_otg_driver.h +++ linux-raspi2-4.2.0/drivers/usb/host/dwc_otg/dwc_otg_driver.h @@ -0,0 +1,86 @@ +/* ========================================================================== + * $File: //dwh/usb_iip/dev/software/otg/linux/drivers/dwc_otg_driver.h $ + * $Revision: #19 $ + * $Date: 2010/11/15 $ + * $Change: 1627671 $ + * + * Synopsys HS OTG Linux Software Driver and documentation (hereinafter, + * "Software") is an Unsupported proprietary work of Synopsys, Inc. unless + * otherwise expressly agreed to in writing between Synopsys and you. + * + * The Software IS NOT an item of Licensed Software or Licensed Product under + * any End User Software License Agreement or Agreement for Licensed Product + * with Synopsys or any supplement thereto. You are permitted to use and + * redistribute this Software in source and binary forms, with or without + * modification, provided that redistributions of source code must retain this + * notice. You may not view, use, disclose, copy or distribute this file or + * any information contained herein except pursuant to this license grant from + * Synopsys. If you do not agree with this notice, including the disclaimer + * below, then you are not authorized to use the Software. + * + * THIS SOFTWARE IS BEING DISTRIBUTED BY SYNOPSYS SOLELY ON AN "AS IS" BASIS + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE HEREBY DISCLAIMED. IN NO EVENT SHALL SYNOPSYS BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH + * DAMAGE. + * ========================================================================== */ + +#ifndef __DWC_OTG_DRIVER_H__ +#define __DWC_OTG_DRIVER_H__ + +/** @file + * This file contains the interface to the Linux driver. + */ +#include "dwc_otg_os_dep.h" +#include "dwc_otg_core_if.h" + +/* Type declarations */ +struct dwc_otg_pcd; +struct dwc_otg_hcd; + +/** + * This structure is a wrapper that encapsulates the driver components used to + * manage a single DWC_otg controller. + */ +typedef struct dwc_otg_device { + /** Structure containing OS-dependent stuff. KEEP THIS STRUCT AT THE + * VERY BEGINNING OF THE DEVICE STRUCT. OSes such as FreeBSD and NetBSD + * require this. */ + struct os_dependent os_dep; + + /** Pointer to the core interface structure. */ + dwc_otg_core_if_t *core_if; + + /** Pointer to the PCD structure. */ + struct dwc_otg_pcd *pcd; + + /** Pointer to the HCD structure. */ + struct dwc_otg_hcd *hcd; + + /** Flag to indicate whether the common IRQ handler is installed. */ + uint8_t common_irq_installed; + +} dwc_otg_device_t; + +/*We must clear S3C24XX_EINTPEND external interrupt register + * because after clearing in this register trigerred IRQ from + * H/W core in kernel interrupt can be occured again before OTG + * handlers clear all IRQ sources of Core registers because of + * timing latencies and Low Level IRQ Type. + */ +#ifdef CONFIG_MACH_IPMATE +#define S3C2410X_CLEAR_EINTPEND() \ +do { \ + __raw_writel(1UL << 11,S3C24XX_EINTPEND); \ +} while (0) +#else +#define S3C2410X_CLEAR_EINTPEND() do { } while (0) +#endif + +#endif --- linux-raspi2-4.2.0.orig/drivers/usb/host/dwc_otg/dwc_otg_fiq_fsm.c +++ linux-raspi2-4.2.0/drivers/usb/host/dwc_otg/dwc_otg_fiq_fsm.c @@ -0,0 +1,1355 @@ +/* + * dwc_otg_fiq_fsm.c - The finite state machine FIQ + * + * Copyright (c) 2013 Raspberry Pi Foundation + * + * Author: Jonathan Bell + * All rights reserved. + * + * 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. + * * Neither the name of Raspberry Pi nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * This FIQ implements functionality that performs split transactions on + * the dwc_otg hardware without any outside intervention. A split transaction + * is "queued" by nominating a specific host channel to perform the entirety + * of a split transaction. This FIQ will then perform the microframe-precise + * scheduling required in each phase of the transaction until completion. + * + * The FIQ functionality is glued into the Synopsys driver via the entry point + * in the FSM enqueue function, and at the exit point in handling a HC interrupt + * for a FSM-enabled channel. + * + * NB: Large parts of this implementation have architecture-specific code. + * For porting this functionality to other ARM machines, the minimum is required: + * - An interrupt controller allowing the top-level dwc USB interrupt to be routed + * to the FIQ + * - A method of forcing a software generated interrupt from FIQ mode that then + * triggers an IRQ entry (with the dwc USB handler called by this IRQ number) + * - Guaranteed interrupt routing such that both the FIQ and SGI occur on the same + * processor core - there is no locking between the FIQ and IRQ (aside from + * local_fiq_disable) + * + */ + +#include "dwc_otg_fiq_fsm.h" + + +char buffer[1000*16]; +int wptr; +void notrace _fiq_print(enum fiq_debug_level dbg_lvl, volatile struct fiq_state *state, char *fmt, ...) +{ + enum fiq_debug_level dbg_lvl_req = FIQDBG_ERR; + va_list args; + char text[17]; + hfnum_data_t hfnum = { .d32 = FIQ_READ(state->dwc_regs_base + 0x408) }; + + if((dbg_lvl & dbg_lvl_req) || dbg_lvl == FIQDBG_ERR) + { + snprintf(text, 9, " %4d:%1u ", hfnum.b.frnum/8, hfnum.b.frnum & 7); + va_start(args, fmt); + vsnprintf(text+8, 9, fmt, args); + va_end(args); + + memcpy(buffer + wptr, text, 16); + wptr = (wptr + 16) % sizeof(buffer); + } +} + +/** + * fiq_fsm_spin_lock() - ARMv6+ bare bones spinlock + * Must be called with local interrupts and FIQ disabled. + */ +#if defined(CONFIG_ARCH_BCM2709) && defined(CONFIG_SMP) +inline void fiq_fsm_spin_lock(fiq_lock_t *lock) +{ + unsigned long tmp; + uint32_t newval; + fiq_lock_t lockval; + smp_mb__before_spinlock(); + /* Nested locking, yay. If we are on the same CPU as the fiq, then the disable + * will be sufficient. If we are on a different CPU, then the lock protects us. */ + prefetchw(&lock->slock); + asm volatile ( + "1: ldrex %0, [%3]\n" + " add %1, %0, %4\n" + " strex %2, %1, [%3]\n" + " teq %2, #0\n" + " bne 1b" + : "=&r" (lockval), "=&r" (newval), "=&r" (tmp) + : "r" (&lock->slock), "I" (1 << 16) + : "cc"); + + while (lockval.tickets.next != lockval.tickets.owner) { + wfe(); + lockval.tickets.owner = ACCESS_ONCE(lock->tickets.owner); + } + smp_mb(); +} +#else +inline void fiq_fsm_spin_lock(fiq_lock_t *lock) { } +#endif + +/** + * fiq_fsm_spin_unlock() - ARMv6+ bare bones spinunlock + */ +#if defined(CONFIG_ARCH_BCM2709) && defined(CONFIG_SMP) +inline void fiq_fsm_spin_unlock(fiq_lock_t *lock) +{ + smp_mb(); + lock->tickets.owner++; + dsb_sev(); +} +#else +inline void fiq_fsm_spin_unlock(fiq_lock_t *lock) { } +#endif + +/** + * fiq_fsm_restart_channel() - Poke channel enable bit for a split transaction + * @channel: channel to re-enable + */ +static void fiq_fsm_restart_channel(struct fiq_state *st, int n, int force) +{ + hcchar_data_t hcchar = { .d32 = FIQ_READ(st->dwc_regs_base + HC_START + (HC_OFFSET * n) + HCCHAR) }; + + hcchar.b.chen = 0; + if (st->channel[n].hcchar_copy.b.eptype & 0x1) { + hfnum_data_t hfnum = { .d32 = FIQ_READ(st->dwc_regs_base + HFNUM) }; + /* Hardware bug workaround: update the ssplit index */ + if (st->channel[n].hcsplt_copy.b.spltena) + st->channel[n].expected_uframe = (hfnum.b.frnum + 1) & 0x3FFF; + + hcchar.b.oddfrm = (hfnum.b.frnum & 0x1) ? 0 : 1; + } + + FIQ_WRITE(st->dwc_regs_base + HC_START + (HC_OFFSET * n) + HCCHAR, hcchar.d32); + hcchar.d32 = FIQ_READ(st->dwc_regs_base + HC_START + (HC_OFFSET * n) + HCCHAR); + hcchar.b.chen = 1; + + FIQ_WRITE(st->dwc_regs_base + HC_START + (HC_OFFSET * n) + HCCHAR, hcchar.d32); + fiq_print(FIQDBG_INT, st, "HCGO %01d %01d", n, force); +} + +/** + * fiq_fsm_setup_csplit() - Prepare a host channel for a CSplit transaction stage + * @st: Pointer to the channel's state + * @n : channel number + * + * Change host channel registers to perform a complete-split transaction. Being mindful of the + * endpoint direction, set control regs up correctly. + */ +static void notrace fiq_fsm_setup_csplit(struct fiq_state *st, int n) +{ + hcsplt_data_t hcsplt = { .d32 = FIQ_READ(st->dwc_regs_base + HC_START + (HC_OFFSET * n) + HCSPLT) }; + hctsiz_data_t hctsiz = { .d32 = FIQ_READ(st->dwc_regs_base + HC_START + (HC_OFFSET * n) + HCTSIZ) }; + + hcsplt.b.compsplt = 1; + if (st->channel[n].hcchar_copy.b.epdir == 1) { + // If IN, the CSPLIT result contains the data or a hub handshake. hctsiz = maxpacket. + hctsiz.b.xfersize = st->channel[n].hctsiz_copy.b.xfersize; + } else { + // If OUT, the CSPLIT result contains handshake only. + hctsiz.b.xfersize = 0; + } + FIQ_WRITE(st->dwc_regs_base + HC_START + (HC_OFFSET * n) + HCSPLT, hcsplt.d32); + FIQ_WRITE(st->dwc_regs_base + HC_START + (HC_OFFSET * n) + HCTSIZ, hctsiz.d32); + mb(); +} + +static inline int notrace fiq_get_xfer_len(struct fiq_state *st, int n) +{ + /* The xfersize register is a bit wonky. For IN transfers, it decrements by the packet size. */ + hctsiz_data_t hctsiz = { .d32 = FIQ_READ(st->dwc_regs_base + HC_START + (HC_OFFSET * n) + HCTSIZ) }; + + if (st->channel[n].hcchar_copy.b.epdir == 0) { + return st->channel[n].hctsiz_copy.b.xfersize; + } else { + return st->channel[n].hctsiz_copy.b.xfersize - hctsiz.b.xfersize; + } + +} + + +/** + * fiq_increment_dma_buf() - update DMA address for bounce buffers after a CSPLIT + * + * Of use only for IN periodic transfers. + */ +static int notrace fiq_increment_dma_buf(struct fiq_state *st, int num_channels, int n) +{ + hcdma_data_t hcdma; + int i = st->channel[n].dma_info.index; + int len; + struct fiq_dma_blob *blob = (struct fiq_dma_blob *) st->dma_base; + + len = fiq_get_xfer_len(st, n); + fiq_print(FIQDBG_INT, st, "LEN: %03d", len); + st->channel[n].dma_info.slot_len[i] = len; + i++; + if (i > 6) + BUG(); + + hcdma.d32 = (dma_addr_t) &blob->channel[n].index[i].buf[0]; + FIQ_WRITE(st->dwc_regs_base + HC_DMA + (HC_OFFSET * n), hcdma.d32); + st->channel[n].dma_info.index = i; + return 0; +} + +/** + * fiq_reload_hctsiz() - for IN transactions, reset HCTSIZ + */ +static void notrace fiq_fsm_reload_hctsiz(struct fiq_state *st, int n) +{ + hctsiz_data_t hctsiz = { .d32 = FIQ_READ(st->dwc_regs_base + HC_START + (HC_OFFSET * n) + HCTSIZ) }; + hctsiz.b.xfersize = st->channel[n].hctsiz_copy.b.xfersize; + hctsiz.b.pktcnt = 1; + FIQ_WRITE(st->dwc_regs_base + HC_START + (HC_OFFSET * n) + HCTSIZ, hctsiz.d32); +} + +/** + * fiq_iso_out_advance() - update DMA address and split position bits + * for isochronous OUT transactions. + * + * Returns 1 if this is the last packet queued, 0 otherwise. Split-ALL and + * Split-BEGIN states are not handled - this is done when the transaction was queued. + * + * This function must only be called from the FIQ_ISO_OUT_ACTIVE state. + */ +static int notrace fiq_iso_out_advance(struct fiq_state *st, int num_channels, int n) +{ + hcsplt_data_t hcsplt; + hctsiz_data_t hctsiz; + hcdma_data_t hcdma; + struct fiq_dma_blob *blob = (struct fiq_dma_blob *) st->dma_base; + int last = 0; + int i = st->channel[n].dma_info.index; + + fiq_print(FIQDBG_INT, st, "ADV %01d %01d ", n, i); + i++; + if (i == 4) + last = 1; + if (st->channel[n].dma_info.slot_len[i+1] == 255) + last = 1; + + /* New DMA address - address of bounce buffer referred to in index */ + hcdma.d32 = (uint32_t) &blob->channel[n].index[i].buf[0]; + //hcdma.d32 = FIQ_READ(st->dwc_regs_base + HC_DMA + (HC_OFFSET * n)); + //hcdma.d32 += st->channel[n].dma_info.slot_len[i]; + fiq_print(FIQDBG_INT, st, "LAST: %01d ", last); + fiq_print(FIQDBG_INT, st, "LEN: %03d", st->channel[n].dma_info.slot_len[i]); + hcsplt.d32 = FIQ_READ(st->dwc_regs_base + HC_START + (HC_OFFSET * n) + HCSPLT); + hctsiz.d32 = FIQ_READ(st->dwc_regs_base + HC_START + (HC_OFFSET * n) + HCTSIZ); + hcsplt.b.xactpos = (last) ? ISOC_XACTPOS_END : ISOC_XACTPOS_MID; + /* Set up new packet length */ + hctsiz.b.pktcnt = 1; + hctsiz.b.xfersize = st->channel[n].dma_info.slot_len[i]; + fiq_print(FIQDBG_INT, st, "%08x", hctsiz.d32); + + st->channel[n].dma_info.index++; + FIQ_WRITE(st->dwc_regs_base + HC_START + (HC_OFFSET * n) + HCSPLT, hcsplt.d32); + FIQ_WRITE(st->dwc_regs_base + HC_START + (HC_OFFSET * n) + HCTSIZ, hctsiz.d32); + FIQ_WRITE(st->dwc_regs_base + HC_DMA + (HC_OFFSET * n), hcdma.d32); + return last; +} + +/** + * fiq_fsm_tt_next_isoc() - queue next pending isochronous out start-split on a TT + * + * Despite the limitations of the DWC core, we can force a microframe pipeline of + * isochronous OUT start-split transactions while waiting for a corresponding other-type + * of endpoint to finish its CSPLITs. TTs have big periodic buffers therefore it + * is very unlikely that filling the start-split FIFO will cause data loss. + * This allows much better interleaving of transactions in an order-independent way- + * there is no requirement to prioritise isochronous, just a state-space search has + * to be performed on each periodic start-split complete interrupt. + */ +static int notrace fiq_fsm_tt_next_isoc(struct fiq_state *st, int num_channels, int n) +{ + int hub_addr = st->channel[n].hub_addr; + int port_addr = st->channel[n].port_addr; + int i, poked = 0; + for (i = 0; i < num_channels; i++) { + if (i == n || st->channel[i].fsm == FIQ_PASSTHROUGH) + continue; + if (st->channel[i].hub_addr == hub_addr && + st->channel[i].port_addr == port_addr) { + switch (st->channel[i].fsm) { + case FIQ_PER_ISO_OUT_PENDING: + if (st->channel[i].nrpackets == 1) { + st->channel[i].fsm = FIQ_PER_ISO_OUT_LAST; + } else { + st->channel[i].fsm = FIQ_PER_ISO_OUT_ACTIVE; + } + fiq_fsm_restart_channel(st, i, 0); + poked = 1; + break; + + default: + break; + } + } + if (poked) + break; + } + return poked; +} + +/** + * fiq_fsm_tt_in_use() - search for host channels using this TT + * @n: Channel to use as reference + * + */ +int notrace noinline fiq_fsm_tt_in_use(struct fiq_state *st, int num_channels, int n) +{ + int hub_addr = st->channel[n].hub_addr; + int port_addr = st->channel[n].port_addr; + int i, in_use = 0; + for (i = 0; i < num_channels; i++) { + if (i == n || st->channel[i].fsm == FIQ_PASSTHROUGH) + continue; + switch (st->channel[i].fsm) { + /* TT is reserved for channels that are in the middle of a periodic + * split transaction. + */ + case FIQ_PER_SSPLIT_STARTED: + case FIQ_PER_CSPLIT_WAIT: + case FIQ_PER_CSPLIT_NYET1: + //case FIQ_PER_CSPLIT_POLL: + case FIQ_PER_ISO_OUT_ACTIVE: + case FIQ_PER_ISO_OUT_LAST: + if (st->channel[i].hub_addr == hub_addr && + st->channel[i].port_addr == port_addr) { + in_use = 1; + } + break; + default: + break; + } + if (in_use) + break; + } + return in_use; +} + +/** + * fiq_fsm_more_csplits() - determine whether additional CSPLITs need + * to be issued for this IN transaction. + * + * We cannot tell the inbound PID of a data packet due to hardware limitations. + * we need to make an educated guess as to whether we need to queue another CSPLIT + * or not. A no-brainer is when we have received enough data to fill the endpoint + * size, but for endpoints that give variable-length data then we have to resort + * to heuristics. + * + * We also return whether this is the last CSPLIT to be queued, again based on + * heuristics. This is to allow a 1-uframe overlap of periodic split transactions. + * Note: requires at least 1 CSPLIT to have been performed prior to being called. + */ + +/* + * We need some way of guaranteeing if a returned periodic packet of size X + * has a DATA0 PID. + * The heuristic value of 144 bytes assumes that the received data has maximal + * bit-stuffing and the clock frequency of the transmitting device is at the lowest + * permissible limit. If the transfer length results in a final packet size + * 144 < p <= 188, then an erroneous CSPLIT will be issued. + * Also used to ensure that an endpoint will nominally only return a single + * complete-split worth of data. + */ +#define DATA0_PID_HEURISTIC 144 + +static int notrace noinline fiq_fsm_more_csplits(struct fiq_state *state, int n, int *probably_last) +{ + + int i; + int total_len = 0; + int more_needed = 1; + struct fiq_channel_state *st = &state->channel[n]; + + for (i = 0; i < st->dma_info.index; i++) { + total_len += st->dma_info.slot_len[i]; + } + + *probably_last = 0; + + if (st->hcchar_copy.b.eptype == 0x3) { + /* + * An interrupt endpoint will take max 2 CSPLITs. if we are receiving data + * then this is definitely the last CSPLIT. + */ + *probably_last = 1; + } else { + /* Isoc IN. This is a bit risky if we are the first transaction: + * we may have been held off slightly. */ + if (i > 1 && st->dma_info.slot_len[st->dma_info.index-1] <= DATA0_PID_HEURISTIC) { + more_needed = 0; + } + /* If in the next uframe we will receive enough data to fill the endpoint, + * then only issue 1 more csplit. + */ + if (st->hctsiz_copy.b.xfersize - total_len <= DATA0_PID_HEURISTIC) + *probably_last = 1; + } + + if (total_len >= st->hctsiz_copy.b.xfersize || + i == 6 || total_len == 0) + /* Note: due to bit stuffing it is possible to have > 6 CSPLITs for + * a single endpoint. Accepting more would completely break our scheduling mechanism though + * - in these extreme cases we will pass through a truncated packet. + */ + more_needed = 0; + + return more_needed; +} + +/** + * fiq_fsm_too_late() - Test transaction for lateness + * + * If a SSPLIT for a large IN transaction is issued too late in a frame, + * the hub will disable the port to the device and respond with ERR handshakes. + * The hub status endpoint will not reflect this change. + * Returns 1 if we will issue a SSPLIT that will result in a device babble. + */ +int notrace fiq_fsm_too_late(struct fiq_state *st, int n) +{ + int uframe; + hfnum_data_t hfnum = { .d32 = FIQ_READ(st->dwc_regs_base + HFNUM) }; + uframe = hfnum.b.frnum & 0x7; + if ((uframe < 6) && (st->channel[n].nrpackets + 1 + uframe > 7)) { + return 1; + } else { + return 0; + } +} + + +/** + * fiq_fsm_start_next_periodic() - A half-arsed attempt at a microframe pipeline + * + * Search pending transactions in the start-split pending state and queue them. + * Don't queue packets in uframe .5 (comes out in .6) (USB2.0 11.18.4). + * Note: we specifically don't do isochronous OUT transactions first because better + * use of the TT's start-split fifo can be achieved by pipelining an IN before an OUT. + */ +static void notrace noinline fiq_fsm_start_next_periodic(struct fiq_state *st, int num_channels) +{ + int n; + hfnum_data_t hfnum = { .d32 = FIQ_READ(st->dwc_regs_base + HFNUM) }; + if ((hfnum.b.frnum & 0x7) == 5) + return; + for (n = 0; n < num_channels; n++) { + if (st->channel[n].fsm == FIQ_PER_SSPLIT_QUEUED) { + /* Check to see if any other transactions are using this TT */ + if(!fiq_fsm_tt_in_use(st, num_channels, n)) { + if (!fiq_fsm_too_late(st, n)) { + st->channel[n].fsm = FIQ_PER_SSPLIT_STARTED; + fiq_print(FIQDBG_INT, st, "NEXTPER "); + fiq_fsm_restart_channel(st, n, 0); + } else { + st->channel[n].fsm = FIQ_PER_SPLIT_TIMEOUT; + } + break; + } + } + } + for (n = 0; n < num_channels; n++) { + if (st->channel[n].fsm == FIQ_PER_ISO_OUT_PENDING) { + if (!fiq_fsm_tt_in_use(st, num_channels, n)) { + fiq_print(FIQDBG_INT, st, "NEXTISO "); + st->channel[n].fsm = FIQ_PER_ISO_OUT_ACTIVE; + fiq_fsm_restart_channel(st, n, 0); + break; + } + } + } +} + +/** + * fiq_fsm_update_hs_isoc() - update isochronous frame and transfer data + * @state: Pointer to fiq_state + * @n: Channel transaction is active on + * @hcint: Copy of host channel interrupt register + * + * Returns 0 if there are no more transactions for this HC to do, 1 + * otherwise. + */ +static int notrace noinline fiq_fsm_update_hs_isoc(struct fiq_state *state, int n, hcint_data_t hcint) +{ + struct fiq_channel_state *st = &state->channel[n]; + int xfer_len = 0, nrpackets = 0; + hcdma_data_t hcdma; + fiq_print(FIQDBG_INT, state, "HSISO %02d", n); + + xfer_len = fiq_get_xfer_len(state, n); + st->hs_isoc_info.iso_desc[st->hs_isoc_info.index].actual_length = xfer_len; + + st->hs_isoc_info.iso_desc[st->hs_isoc_info.index].status = hcint.d32; + + st->hs_isoc_info.index++; + if (st->hs_isoc_info.index == st->hs_isoc_info.nrframes) { + return 0; + } + + /* grab the next DMA address offset from the array */ + hcdma.d32 = st->hcdma_copy.d32 + st->hs_isoc_info.iso_desc[st->hs_isoc_info.index].offset; + FIQ_WRITE(state->dwc_regs_base + HC_DMA + (HC_OFFSET * n), hcdma.d32); + + /* We need to set multi_count. This is a bit tricky - has to be set per-transaction as + * the core needs to be told to send the correct number. Caution: for IN transfers, + * this is always set to the maximum size of the endpoint. */ + xfer_len = st->hs_isoc_info.iso_desc[st->hs_isoc_info.index].length; + /* Integer divide in a FIQ: fun. FIXME: make this not suck */ + nrpackets = (xfer_len + st->hcchar_copy.b.mps - 1) / st->hcchar_copy.b.mps; + if (nrpackets == 0) + nrpackets = 1; + st->hcchar_copy.b.multicnt = nrpackets; + st->hctsiz_copy.b.pktcnt = nrpackets; + + /* Initial PID also needs to be set */ + if (st->hcchar_copy.b.epdir == 0) { + st->hctsiz_copy.b.xfersize = xfer_len; + switch (st->hcchar_copy.b.multicnt) { + case 1: + st->hctsiz_copy.b.pid = DWC_PID_DATA0; + break; + case 2: + case 3: + st->hctsiz_copy.b.pid = DWC_PID_MDATA; + break; + } + + } else { + switch (st->hcchar_copy.b.multicnt) { + st->hctsiz_copy.b.xfersize = nrpackets * st->hcchar_copy.b.mps; + case 1: + st->hctsiz_copy.b.pid = DWC_PID_DATA0; + break; + case 2: + st->hctsiz_copy.b.pid = DWC_PID_DATA1; + break; + case 3: + st->hctsiz_copy.b.pid = DWC_PID_DATA2; + break; + } + } + FIQ_WRITE(state->dwc_regs_base + HC_START + (HC_OFFSET * n) + HCTSIZ, st->hctsiz_copy.d32); + FIQ_WRITE(state->dwc_regs_base + HC_START + (HC_OFFSET * n) + HCCHAR, st->hcchar_copy.d32); + /* Channel is enabled on hcint handler exit */ + fiq_print(FIQDBG_INT, state, "HSISOOUT"); + return 1; +} + + +/** + * fiq_fsm_do_sof() - FSM start-of-frame interrupt handler + * @state: Pointer to the state struct passed from banked FIQ mode registers. + * @num_channels: set according to the DWC hardware configuration + * + * The SOF handler in FSM mode has two functions + * 1. Hold off SOF from causing schedule advancement in IRQ context if there's + * nothing to do + * 2. Advance certain FSM states that require either a microframe delay, or a microframe + * of holdoff. + * + * The second part is architecture-specific to mach-bcm2835 - + * a sane interrupt controller would have a mask register for ARM interrupt sources + * to be promoted to the nFIQ line, but it doesn't. Instead a single interrupt + * number (USB) can be enabled. This means that certain parts of the USB specification + * that require "wait a little while, then issue another packet" cannot be fulfilled with + * the timing granularity required to achieve optimal throughout. The workaround is to use + * the SOF "timer" (125uS) to perform this task. + */ +static int notrace noinline fiq_fsm_do_sof(struct fiq_state *state, int num_channels) +{ + hfnum_data_t hfnum = { .d32 = FIQ_READ(state->dwc_regs_base + HFNUM) }; + int n; + int kick_irq = 0; + + if ((hfnum.b.frnum & 0x7) == 1) { + /* We cannot issue csplits for transactions in the last frame past (n+1).1 + * Check to see if there are any transactions that are stale. + * Boot them out. + */ + for (n = 0; n < num_channels; n++) { + switch (state->channel[n].fsm) { + case FIQ_PER_CSPLIT_WAIT: + case FIQ_PER_CSPLIT_NYET1: + case FIQ_PER_CSPLIT_POLL: + case FIQ_PER_CSPLIT_LAST: + /* Check if we are no longer in the same full-speed frame. */ + if (((state->channel[n].expected_uframe & 0x3FFF) & ~0x7) < + (hfnum.b.frnum & ~0x7)) + state->channel[n].fsm = FIQ_PER_SPLIT_TIMEOUT; + break; + default: + break; + } + } + } + + for (n = 0; n < num_channels; n++) { + switch (state->channel[n].fsm) { + + case FIQ_NP_SSPLIT_RETRY: + case FIQ_NP_IN_CSPLIT_RETRY: + case FIQ_NP_OUT_CSPLIT_RETRY: + fiq_fsm_restart_channel(state, n, 0); + break; + + case FIQ_HS_ISOC_SLEEPING: + /* Is it time to wake this channel yet? */ + if (--state->channel[n].uframe_sleeps == 0) { + state->channel[n].fsm = FIQ_HS_ISOC_TURBO; + fiq_fsm_restart_channel(state, n, 0); + } + break; + + case FIQ_PER_SSPLIT_QUEUED: + if ((hfnum.b.frnum & 0x7) == 5) + break; + if(!fiq_fsm_tt_in_use(state, num_channels, n)) { + if (!fiq_fsm_too_late(state, n)) { + fiq_print(FIQDBG_INT, state, "SOF GO %01d", n); + fiq_fsm_restart_channel(state, n, 0); + state->channel[n].fsm = FIQ_PER_SSPLIT_STARTED; + } else { + /* Transaction cannot be started without risking a device babble error */ + state->channel[n].fsm = FIQ_PER_SPLIT_TIMEOUT; + state->haintmsk_saved.b2.chint &= ~(1 << n); + FIQ_WRITE(state->dwc_regs_base + HC_START + (HC_OFFSET * n) + HCINTMSK, 0); + kick_irq |= 1; + } + } + break; + + case FIQ_PER_ISO_OUT_PENDING: + /* Ordinarily, this should be poked after the SSPLIT + * complete interrupt for a competing transfer on the same + * TT. Doesn't happen for aborted transactions though. + */ + if ((hfnum.b.frnum & 0x7) >= 5) + break; + if (!fiq_fsm_tt_in_use(state, num_channels, n)) { + /* Hardware bug. SOF can sometimes occur after the channel halt interrupt + * that caused this. + */ + fiq_fsm_restart_channel(state, n, 0); + fiq_print(FIQDBG_INT, state, "SOF ISOC"); + if (state->channel[n].nrpackets == 1) { + state->channel[n].fsm = FIQ_PER_ISO_OUT_LAST; + } else { + state->channel[n].fsm = FIQ_PER_ISO_OUT_ACTIVE; + } + } + break; + + case FIQ_PER_CSPLIT_WAIT: + /* we are guaranteed to be in this state if and only if the SSPLIT interrupt + * occurred when the bus transaction occurred. The SOF interrupt reversal bug + * will utterly bugger this up though. + */ + if (hfnum.b.frnum != state->channel[n].expected_uframe) { + fiq_print(FIQDBG_INT, state, "SOFCS %d ", n); + state->channel[n].fsm = FIQ_PER_CSPLIT_POLL; + fiq_fsm_restart_channel(state, n, 0); + fiq_fsm_start_next_periodic(state, num_channels); + + } + break; + + case FIQ_PER_SPLIT_TIMEOUT: + case FIQ_DEQUEUE_ISSUED: + /* Ugly: we have to force a HCD interrupt. + * Poke the mask for the channel in question. + * We will take a fake SOF because of this, but + * that's OK. + */ + state->haintmsk_saved.b2.chint &= ~(1 << n); + FIQ_WRITE(state->dwc_regs_base + HC_START + (HC_OFFSET * n) + HCINTMSK, 0); + kick_irq |= 1; + break; + + default: + break; + } + } + + if (state->kick_np_queues || + dwc_frame_num_le(state->next_sched_frame, hfnum.b.frnum)) + kick_irq |= 1; + + return !kick_irq; +} + + +/** + * fiq_fsm_do_hcintr() - FSM host channel interrupt handler + * @state: Pointer to the FIQ state struct + * @num_channels: Number of channels as per hardware config + * @n: channel for which HAINT(i) was raised + * + * An important property is that only the CHHLT interrupt is unmasked. Unfortunately, AHBerr is as well. + */ +static int notrace noinline fiq_fsm_do_hcintr(struct fiq_state *state, int num_channels, int n) +{ + hcint_data_t hcint; + hcintmsk_data_t hcintmsk; + hcint_data_t hcint_probe; + hcchar_data_t hcchar; + int handled = 0; + int restart = 0; + int last_csplit = 0; + int start_next_periodic = 0; + struct fiq_channel_state *st = &state->channel[n]; + hfnum_data_t hfnum; + + hcint.d32 = FIQ_READ(state->dwc_regs_base + HC_START + (HC_OFFSET * n) + HCINT); + hcintmsk.d32 = FIQ_READ(state->dwc_regs_base + HC_START + (HC_OFFSET * n) + HCINTMSK); + hcint_probe.d32 = hcint.d32 & hcintmsk.d32; + + if (st->fsm != FIQ_PASSTHROUGH) { + fiq_print(FIQDBG_INT, state, "HC%01d ST%02d", n, st->fsm); + fiq_print(FIQDBG_INT, state, "%08x", hcint.d32); + } + + switch (st->fsm) { + + case FIQ_PASSTHROUGH: + case FIQ_DEQUEUE_ISSUED: + /* doesn't belong to us, kick it upstairs */ + break; + + case FIQ_PASSTHROUGH_ERRORSTATE: + /* We are here to emulate the error recovery mechanism of the dwc HCD. + * Several interrupts are unmasked if a previous transaction failed - it's + * death for the FIQ to attempt to handle them as the channel isn't halted. + * Emulate what the HCD does in this situation: mask and continue. + * The FSM has no other state setup so this has to be handled out-of-band. + */ + fiq_print(FIQDBG_ERR, state, "ERRST %02d", n); + if (hcint_probe.b.nak || hcint_probe.b.ack || hcint_probe.b.datatglerr) { + fiq_print(FIQDBG_ERR, state, "RESET %02d", n); + /* In some random cases we can get a NAK interrupt coincident with a Xacterr + * interrupt, after the device has disappeared. + */ + if (!hcint.b.xacterr) + st->nr_errors = 0; + hcintmsk.b.nak = 0; + hcintmsk.b.ack = 0; + hcintmsk.b.datatglerr = 0; + FIQ_WRITE(state->dwc_regs_base + HC_START + (HC_OFFSET * n) + HCINTMSK, hcintmsk.d32); + return 1; + } + if (hcint_probe.b.chhltd) { + fiq_print(FIQDBG_ERR, state, "CHHLT %02d", n); + fiq_print(FIQDBG_ERR, state, "%08x", hcint.d32); + return 0; + } + break; + + /* Non-periodic state groups */ + case FIQ_NP_SSPLIT_STARTED: + case FIQ_NP_SSPLIT_RETRY: + /* Got a HCINT for a NP SSPLIT. Expected ACK / NAK / fail */ + if (hcint.b.ack) { + /* SSPLIT complete. For OUT, the data has been sent. For IN, the LS transaction + * will start shortly. SOF needs to kick the transaction to prevent a NYET flood. + */ + if(st->hcchar_copy.b.epdir == 1) + st->fsm = FIQ_NP_IN_CSPLIT_RETRY; + else + st->fsm = FIQ_NP_OUT_CSPLIT_RETRY; + st->nr_errors = 0; + handled = 1; + fiq_fsm_setup_csplit(state, n); + } else if (hcint.b.nak) { + // No buffer space in TT. Retry on a uframe boundary. + st->fsm = FIQ_NP_SSPLIT_RETRY; + handled = 1; + } else if (hcint.b.xacterr) { + // The only other one we care about is xacterr. This implies HS bus error - retry. + st->nr_errors++; + st->fsm = FIQ_NP_SSPLIT_RETRY; + if (st->nr_errors >= 3) { + st->fsm = FIQ_NP_SPLIT_HS_ABORTED; + } else { + handled = 1; + restart = 1; + } + } else { + st->fsm = FIQ_NP_SPLIT_LS_ABORTED; + handled = 0; + restart = 0; + } + break; + + case FIQ_NP_IN_CSPLIT_RETRY: + /* Received a CSPLIT done interrupt. + * Expected Data/NAK/STALL/NYET for IN. + */ + if (hcint.b.xfercomp) { + /* For IN, data is present. */ + st->fsm = FIQ_NP_SPLIT_DONE; + } else if (hcint.b.nak) { + /* no endpoint data. Punt it upstairs */ + st->fsm = FIQ_NP_SPLIT_DONE; + } else if (hcint.b.nyet) { + /* CSPLIT NYET - retry on a uframe boundary. */ + handled = 1; + st->nr_errors = 0; + } else if (hcint.b.datatglerr) { + /* data toggle errors do not set the xfercomp bit. */ + st->fsm = FIQ_NP_SPLIT_LS_ABORTED; + } else if (hcint.b.xacterr) { + /* HS error. Retry immediate */ + st->fsm = FIQ_NP_IN_CSPLIT_RETRY; + st->nr_errors++; + if (st->nr_errors >= 3) { + st->fsm = FIQ_NP_SPLIT_HS_ABORTED; + } else { + handled = 1; + restart = 1; + } + } else if (hcint.b.stall || hcint.b.bblerr) { + /* A STALL implies either a LS bus error or a genuine STALL. */ + st->fsm = FIQ_NP_SPLIT_LS_ABORTED; + } else { + /* Hardware bug. It's possible in some cases to + * get a channel halt with nothing else set when + * the response was a NYET. Treat as local 3-strikes retry. + */ + hcint_data_t hcint_test = hcint; + hcint_test.b.chhltd = 0; + if (!hcint_test.d32) { + st->nr_errors++; + if (st->nr_errors >= 3) { + st->fsm = FIQ_NP_SPLIT_HS_ABORTED; + } else { + handled = 1; + } + } else { + /* Bail out if something unexpected happened */ + st->fsm = FIQ_NP_SPLIT_HS_ABORTED; + } + } + break; + + case FIQ_NP_OUT_CSPLIT_RETRY: + /* Received a CSPLIT done interrupt. + * Expected ACK/NAK/STALL/NYET/XFERCOMP for OUT.*/ + if (hcint.b.xfercomp) { + st->fsm = FIQ_NP_SPLIT_DONE; + } else if (hcint.b.nak) { + // The HCD will implement the holdoff on frame boundaries. + st->fsm = FIQ_NP_SPLIT_DONE; + } else if (hcint.b.nyet) { + // Hub still processing. + st->fsm = FIQ_NP_OUT_CSPLIT_RETRY; + handled = 1; + st->nr_errors = 0; + //restart = 1; + } else if (hcint.b.xacterr) { + /* HS error. retry immediate */ + st->fsm = FIQ_NP_OUT_CSPLIT_RETRY; + st->nr_errors++; + if (st->nr_errors >= 3) { + st->fsm = FIQ_NP_SPLIT_HS_ABORTED; + } else { + handled = 1; + restart = 1; + } + } else if (hcint.b.stall) { + /* LS bus error or genuine stall */ + st->fsm = FIQ_NP_SPLIT_LS_ABORTED; + } else { + /* + * Hardware bug. It's possible in some cases to get a + * channel halt with nothing else set when the response was a NYET. + * Treat as local 3-strikes retry. + */ + hcint_data_t hcint_test = hcint; + hcint_test.b.chhltd = 0; + if (!hcint_test.d32) { + st->nr_errors++; + if (st->nr_errors >= 3) { + st->fsm = FIQ_NP_SPLIT_HS_ABORTED; + } else { + handled = 1; + } + } else { + // Something unexpected happened. AHBerror or babble perhaps. Let the IRQ deal with it. + st->fsm = FIQ_NP_SPLIT_HS_ABORTED; + } + } + break; + + /* Periodic split states (except isoc out) */ + case FIQ_PER_SSPLIT_STARTED: + /* Expect an ACK or failure for SSPLIT */ + if (hcint.b.ack) { + /* + * SSPLIT transfer complete interrupt - the generation of this interrupt is fraught with bugs. + * For a packet queued in microframe n-3 to appear in n-2, if the channel is enabled near the EOF1 + * point for microframe n-3, the packet will not appear on the bus until microframe n. + * Additionally, the generation of the actual interrupt is dodgy. For a packet appearing on the bus + * in microframe n, sometimes the interrupt is generated immediately. Sometimes, it appears in n+1 + * coincident with SOF for n+1. + * SOF is also buggy. It can sometimes be raised AFTER the first bus transaction has taken place. + * These appear to be caused by timing/clock crossing bugs within the core itself. + * State machine workaround. + */ + hfnum.d32 = FIQ_READ(state->dwc_regs_base + HFNUM); + hcchar.d32 = FIQ_READ(state->dwc_regs_base + HC_START + (HC_OFFSET * n) + HCCHAR); + fiq_fsm_setup_csplit(state, n); + /* Poke the oddfrm bit. If we are equivalent, we received the interrupt at the correct + * time. If not, then we're in the next SOF. + */ + if ((hfnum.b.frnum & 0x1) == hcchar.b.oddfrm) { + fiq_print(FIQDBG_INT, state, "CSWAIT %01d", n); + st->expected_uframe = hfnum.b.frnum; + st->fsm = FIQ_PER_CSPLIT_WAIT; + } else { + fiq_print(FIQDBG_INT, state, "CSPOL %01d", n); + /* For isochronous IN endpoints, + * we need to hold off if we are expecting a lot of data */ + if (st->hcchar_copy.b.mps < DATA0_PID_HEURISTIC) { + start_next_periodic = 1; + } + /* Danger will robinson: we are in a broken state. If our first interrupt after + * this is a NYET, it will be delayed by 1 uframe and result in an unrecoverable + * lag. Unmask the NYET interrupt. + */ + st->expected_uframe = (hfnum.b.frnum + 1) & 0x3FFF; + st->fsm = FIQ_PER_CSPLIT_BROKEN_NYET1; + restart = 1; + } + handled = 1; + } else if (hcint.b.xacterr) { + /* 3-strikes retry is enabled, we have hit our max nr_errors */ + st->fsm = FIQ_PER_SPLIT_HS_ABORTED; + start_next_periodic = 1; + } else { + st->fsm = FIQ_PER_SPLIT_HS_ABORTED; + start_next_periodic = 1; + } + /* We can now queue the next isochronous OUT transaction, if one is pending. */ + if(fiq_fsm_tt_next_isoc(state, num_channels, n)) { + fiq_print(FIQDBG_INT, state, "NEXTISO "); + } + break; + + case FIQ_PER_CSPLIT_NYET1: + /* First CSPLIT attempt was a NYET. If we get a subsequent NYET, + * we are too late and the TT has dropped its CSPLIT fifo. + */ + hfnum.d32 = FIQ_READ(state->dwc_regs_base + HFNUM); + hcchar.d32 = FIQ_READ(state->dwc_regs_base + HC_START + (HC_OFFSET * n) + HCCHAR); + start_next_periodic = 1; + if (hcint.b.nak) { + st->fsm = FIQ_PER_SPLIT_DONE; + } else if (hcint.b.xfercomp) { + fiq_increment_dma_buf(state, num_channels, n); + st->fsm = FIQ_PER_CSPLIT_POLL; + st->nr_errors = 0; + if (fiq_fsm_more_csplits(state, n, &last_csplit)) { + handled = 1; + restart = 1; + if (!last_csplit) + start_next_periodic = 0; + } else { + st->fsm = FIQ_PER_SPLIT_DONE; + } + } else if (hcint.b.nyet) { + /* Doh. Data lost. */ + st->fsm = FIQ_PER_SPLIT_NYET_ABORTED; + } else if (hcint.b.xacterr || hcint.b.stall || hcint.b.bblerr) { + st->fsm = FIQ_PER_SPLIT_LS_ABORTED; + } else { + st->fsm = FIQ_PER_SPLIT_HS_ABORTED; + } + break; + + case FIQ_PER_CSPLIT_BROKEN_NYET1: + /* + * we got here because our host channel is in the delayed-interrupt + * state and we cannot take a NYET interrupt any later than when it + * occurred. Disable then re-enable the channel if this happens to force + * CSPLITs to occur at the right time. + */ + hfnum.d32 = FIQ_READ(state->dwc_regs_base + HFNUM); + hcchar.d32 = FIQ_READ(state->dwc_regs_base + HC_START + (HC_OFFSET * n) + HCCHAR); + fiq_print(FIQDBG_INT, state, "BROK: %01d ", n); + if (hcint.b.nak) { + st->fsm = FIQ_PER_SPLIT_DONE; + start_next_periodic = 1; + } else if (hcint.b.xfercomp) { + fiq_increment_dma_buf(state, num_channels, n); + if (fiq_fsm_more_csplits(state, n, &last_csplit)) { + st->fsm = FIQ_PER_CSPLIT_POLL; + handled = 1; + restart = 1; + start_next_periodic = 1; + /* Reload HCTSIZ for the next transfer */ + fiq_fsm_reload_hctsiz(state, n); + if (!last_csplit) + start_next_periodic = 0; + } else { + st->fsm = FIQ_PER_SPLIT_DONE; + } + } else if (hcint.b.nyet) { + st->fsm = FIQ_PER_SPLIT_NYET_ABORTED; + start_next_periodic = 1; + } else if (hcint.b.xacterr || hcint.b.stall || hcint.b.bblerr) { + /* Local 3-strikes retry is handled by the core. This is a ERR response.*/ + st->fsm = FIQ_PER_SPLIT_LS_ABORTED; + } else { + st->fsm = FIQ_PER_SPLIT_HS_ABORTED; + } + break; + + case FIQ_PER_CSPLIT_POLL: + hfnum.d32 = FIQ_READ(state->dwc_regs_base + HFNUM); + hcchar.d32 = FIQ_READ(state->dwc_regs_base + HC_START + (HC_OFFSET * n) + HCCHAR); + start_next_periodic = 1; + if (hcint.b.nak) { + st->fsm = FIQ_PER_SPLIT_DONE; + } else if (hcint.b.xfercomp) { + fiq_increment_dma_buf(state, num_channels, n); + if (fiq_fsm_more_csplits(state, n, &last_csplit)) { + handled = 1; + restart = 1; + /* Reload HCTSIZ for the next transfer */ + fiq_fsm_reload_hctsiz(state, n); + if (!last_csplit) + start_next_periodic = 0; + } else { + st->fsm = FIQ_PER_SPLIT_DONE; + } + } else if (hcint.b.nyet) { + /* Are we a NYET after the first data packet? */ + if (st->nrpackets == 0) { + st->fsm = FIQ_PER_CSPLIT_NYET1; + handled = 1; + restart = 1; + } else { + /* We got a NYET when polling CSPLITs. Can happen + * if our heuristic fails, or if someone disables us + * for any significant length of time. + */ + if (st->nr_errors >= 3) { + st->fsm = FIQ_PER_SPLIT_NYET_ABORTED; + } else { + st->fsm = FIQ_PER_SPLIT_DONE; + } + } + } else if (hcint.b.xacterr || hcint.b.stall || hcint.b.bblerr) { + /* For xacterr, Local 3-strikes retry is handled by the core. This is a ERR response.*/ + st->fsm = FIQ_PER_SPLIT_LS_ABORTED; + } else { + st->fsm = FIQ_PER_SPLIT_HS_ABORTED; + } + break; + + case FIQ_HS_ISOC_TURBO: + if (fiq_fsm_update_hs_isoc(state, n, hcint)) { + /* more transactions to come */ + handled = 1; + fiq_print(FIQDBG_INT, state, "HSISO M "); + /* For strided transfers, put ourselves to sleep */ + if (st->hs_isoc_info.stride > 1) { + st->uframe_sleeps = st->hs_isoc_info.stride - 1; + st->fsm = FIQ_HS_ISOC_SLEEPING; + } else { + restart = 1; + } + } else { + st->fsm = FIQ_HS_ISOC_DONE; + fiq_print(FIQDBG_INT, state, "HSISO F "); + } + break; + + case FIQ_HS_ISOC_ABORTED: + /* This abort is called by the driver rewriting the state mid-transaction + * which allows the dequeue mechanism to work more effectively. + */ + break; + + case FIQ_PER_ISO_OUT_ACTIVE: + if (hcint.b.ack) { + if(fiq_iso_out_advance(state, num_channels, n)) { + /* last OUT transfer */ + st->fsm = FIQ_PER_ISO_OUT_LAST; + /* + * Assuming the periodic FIFO in the dwc core + * actually does its job properly, we can queue + * the next ssplit now and in theory, the wire + * transactions will be in-order. + */ + // No it doesn't. It appears to process requests in host channel order. + //start_next_periodic = 1; + } + handled = 1; + restart = 1; + } else { + /* + * Isochronous transactions carry on regardless. Log the error + * and continue. + */ + //explode += 1; + st->nr_errors++; + if(fiq_iso_out_advance(state, num_channels, n)) { + st->fsm = FIQ_PER_ISO_OUT_LAST; + //start_next_periodic = 1; + } + handled = 1; + restart = 1; + } + break; + + case FIQ_PER_ISO_OUT_LAST: + if (hcint.b.ack) { + /* All done here */ + st->fsm = FIQ_PER_ISO_OUT_DONE; + } else { + st->fsm = FIQ_PER_ISO_OUT_DONE; + st->nr_errors++; + } + start_next_periodic = 1; + break; + + case FIQ_PER_SPLIT_TIMEOUT: + /* SOF kicked us because we overran. */ + start_next_periodic = 1; + break; + + default: + break; + } + + if (handled) { + FIQ_WRITE(state->dwc_regs_base + HC_START + (HC_OFFSET * n) + HCINT, hcint.d32); + } else { + /* Copy the regs into the state so the IRQ knows what to do */ + st->hcint_copy.d32 = hcint.d32; + } + + if (restart) { + /* Restart always implies handled. */ + if (restart == 2) { + /* For complete-split INs, the show must go on. + * Force a channel restart */ + fiq_fsm_restart_channel(state, n, 1); + } else { + fiq_fsm_restart_channel(state, n, 0); + } + } + if (start_next_periodic) { + fiq_fsm_start_next_periodic(state, num_channels); + } + if (st->fsm != FIQ_PASSTHROUGH) + fiq_print(FIQDBG_INT, state, "FSMOUT%02d", st->fsm); + + return handled; +} + + +/** + * dwc_otg_fiq_fsm() - Flying State Machine (monster) FIQ + * @state: pointer to state struct passed from the banked FIQ mode registers. + * @num_channels: set according to the DWC hardware configuration + * @dma: pointer to DMA bounce buffers for split transaction slots + * + * The FSM FIQ performs the low-level tasks that normally would be performed by the microcode + * inside an EHCI or similar host controller regarding split transactions. The DWC core + * interrupts each and every time a split transaction packet is received or sent successfully. + * This results in either an interrupt storm when everything is working "properly", or + * the interrupt latency of the system in general breaks time-sensitive periodic split + * transactions. Pushing the low-level, but relatively easy state machine work into the FIQ + * solves these problems. + * + * Return: void + */ +void notrace dwc_otg_fiq_fsm(struct fiq_state *state, int num_channels) +{ + gintsts_data_t gintsts, gintsts_handled; + gintmsk_data_t gintmsk; + //hfnum_data_t hfnum; + haint_data_t haint, haint_handled; + haintmsk_data_t haintmsk; + int kick_irq = 0; + + gintsts_handled.d32 = 0; + haint_handled.d32 = 0; + + fiq_fsm_spin_lock(&state->lock); + gintsts.d32 = FIQ_READ(state->dwc_regs_base + GINTSTS); + gintmsk.d32 = FIQ_READ(state->dwc_regs_base + GINTMSK); + gintsts.d32 &= gintmsk.d32; + + if (gintsts.b.sofintr) { + /* For FSM mode, SOF is required to keep the state machine advance for + * certain stages of the periodic pipeline. It's death to mask this + * interrupt in that case. + */ + + if (!fiq_fsm_do_sof(state, num_channels)) { + /* Kick IRQ once. Queue advancement means that all pending transactions + * will get serviced when the IRQ finally executes. + */ + if (state->gintmsk_saved.b.sofintr == 1) + kick_irq |= 1; + state->gintmsk_saved.b.sofintr = 0; + } + gintsts_handled.b.sofintr = 1; + } + + if (gintsts.b.hcintr) { + int i; + haint.d32 = FIQ_READ(state->dwc_regs_base + HAINT); + haintmsk.d32 = FIQ_READ(state->dwc_regs_base + HAINTMSK); + haint.d32 &= haintmsk.d32; + haint_handled.d32 = 0; + for (i=0; ihaintmsk_saved.b2.chint &= ~(1 << i); + } else { + /* do_hcintr cleaned up after itself, but clear haint */ + haint_handled.b2.chint |= (1 << i); + } + } + } + + if (haint_handled.b2.chint) { + FIQ_WRITE(state->dwc_regs_base + HAINT, haint_handled.d32); + } + + if (haintmsk.d32 != (haintmsk.d32 & state->haintmsk_saved.d32)) { + /* + * This is necessary to avoid multiple retriggers of the MPHI in the case + * where interrupts are held off and HCINTs start to pile up. + * Only wake up the IRQ if a new interrupt came in, was not handled and was + * masked. + */ + haintmsk.d32 &= state->haintmsk_saved.d32; + FIQ_WRITE(state->dwc_regs_base + HAINTMSK, haintmsk.d32); + kick_irq |= 1; + } + /* Top-Level interrupt - always handled because it's level-sensitive */ + gintsts_handled.b.hcintr = 1; + } + + + /* Clear the bits in the saved register that were not handled but were triggered. */ + state->gintmsk_saved.d32 &= ~(gintsts.d32 & ~gintsts_handled.d32); + + /* FIQ didn't handle something - mask has changed - write new mask */ + if (gintmsk.d32 != (gintmsk.d32 & state->gintmsk_saved.d32)) { + gintmsk.d32 &= state->gintmsk_saved.d32; + gintmsk.b.sofintr = 1; + FIQ_WRITE(state->dwc_regs_base + GINTMSK, gintmsk.d32); +// fiq_print(FIQDBG_INT, state, "KICKGINT"); +// fiq_print(FIQDBG_INT, state, "%08x", gintmsk.d32); +// fiq_print(FIQDBG_INT, state, "%08x", state->gintmsk_saved.d32); + kick_irq |= 1; + } + + if (gintsts_handled.d32) { + /* Only applies to edge-sensitive bits in GINTSTS */ + FIQ_WRITE(state->dwc_regs_base + GINTSTS, gintsts_handled.d32); + } + + /* We got an interrupt, didn't handle it. */ + if (kick_irq) { + state->mphi_int_count++; + FIQ_WRITE(state->mphi_regs.outdda, (int) state->dummy_send); + FIQ_WRITE(state->mphi_regs.outddb, (1<<29)); + + } + state->fiq_done++; + mb(); + fiq_fsm_spin_unlock(&state->lock); +} + + +/** + * dwc_otg_fiq_nop() - FIQ "lite" + * @state: pointer to state struct passed from the banked FIQ mode registers. + * + * The "nop" handler does not intervene on any interrupts other than SOF. + * It is limited in scope to deciding at each SOF if the IRQ SOF handler (which deals + * with non-periodic/periodic queues) needs to be kicked. + * + * This is done to hold off the SOF interrupt, which occurs at a rate of 8000 per second. + * + * Return: void + */ +void notrace dwc_otg_fiq_nop(struct fiq_state *state) +{ + gintsts_data_t gintsts, gintsts_handled; + gintmsk_data_t gintmsk; + hfnum_data_t hfnum; + + fiq_fsm_spin_lock(&state->lock); + hfnum.d32 = FIQ_READ(state->dwc_regs_base + HFNUM); + gintsts.d32 = FIQ_READ(state->dwc_regs_base + GINTSTS); + gintmsk.d32 = FIQ_READ(state->dwc_regs_base + GINTMSK); + gintsts.d32 &= gintmsk.d32; + gintsts_handled.d32 = 0; + + if (gintsts.b.sofintr) { + if (!state->kick_np_queues && + dwc_frame_num_gt(state->next_sched_frame, hfnum.b.frnum)) { + /* SOF handled, no work to do, just ACK interrupt */ + gintsts_handled.b.sofintr = 1; + } else { + /* Kick IRQ */ + state->gintmsk_saved.b.sofintr = 0; + } + } + + /* Reset handled interrupts */ + if(gintsts_handled.d32) { + FIQ_WRITE(state->dwc_regs_base + GINTSTS, gintsts_handled.d32); + } + + /* Clear the bits in the saved register that were not handled but were triggered. */ + state->gintmsk_saved.d32 &= ~(gintsts.d32 & ~gintsts_handled.d32); + + /* We got an interrupt, didn't handle it and want to mask it */ + if (~(state->gintmsk_saved.d32)) { + state->mphi_int_count++; + gintmsk.d32 &= state->gintmsk_saved.d32; + FIQ_WRITE(state->dwc_regs_base + GINTMSK, gintmsk.d32); + /* Force a clear before another dummy send */ + FIQ_WRITE(state->mphi_regs.intstat, (1<<29)); + FIQ_WRITE(state->mphi_regs.outdda, (int) state->dummy_send); + FIQ_WRITE(state->mphi_regs.outddb, (1<<29)); + + } + state->fiq_done++; + mb(); + fiq_fsm_spin_unlock(&state->lock); +} --- linux-raspi2-4.2.0.orig/drivers/usb/host/dwc_otg/dwc_otg_fiq_fsm.h +++ linux-raspi2-4.2.0/drivers/usb/host/dwc_otg/dwc_otg_fiq_fsm.h @@ -0,0 +1,370 @@ +/* + * dwc_otg_fiq_fsm.h - Finite state machine FIQ header definitions + * + * Copyright (c) 2013 Raspberry Pi Foundation + * + * Author: Jonathan Bell + * All rights reserved. + * + * 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. + * * Neither the name of Raspberry Pi nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * This FIQ implements functionality that performs split transactions on + * the dwc_otg hardware without any outside intervention. A split transaction + * is "queued" by nominating a specific host channel to perform the entirety + * of a split transaction. This FIQ will then perform the microframe-precise + * scheduling required in each phase of the transaction until completion. + * + * The FIQ functionality has been surgically implanted into the Synopsys + * vendor-provided driver. + * + */ + +#ifndef DWC_OTG_FIQ_FSM_H_ +#define DWC_OTG_FIQ_FSM_H_ + +#include "dwc_otg_regs.h" +#include "dwc_otg_cil.h" +#include "dwc_otg_hcd.h" +#include +#include +#include +#include + +#if 0 +#define FLAME_ON(x) \ +do { \ + int gpioreg; \ + \ + gpioreg = readl(__io_address(0x20200000+0x8)); \ + gpioreg &= ~(7 << (x-20)*3); \ + gpioreg |= 0x1 << (x-20)*3; \ + writel(gpioreg, __io_address(0x20200000+0x8)); \ + \ + writel(1< 1, SOF wakes up the isochronous FSM */ + FIQ_HS_ISOC_SLEEPING = 24, + FIQ_HS_ISOC_DONE = 25, + FIQ_HS_ISOC_ABORTED = 26, + FIQ_DEQUEUE_ISSUED = 30, + FIQ_TEST = 32, +}; + +struct fiq_stack { + int magic1; + uint8_t stack[2048]; + int magic2; +}; + + +/** + * struct fiq_dma_info - DMA bounce buffer utilisation information (per-channel) + * @index: Number of slots reported used for IN transactions / number of slots + * transmitted for an OUT transaction + * @slot_len[6]: Number of actual transfer bytes in each slot (255 if unused) + * + * Split transaction transfers can have variable length depending on other bus + * traffic. The OTG core DMA engine requires 4-byte aligned addresses therefore + * each transaction needs a guaranteed aligned address. A maximum of 6 split transfers + * can happen per-frame. + */ +struct fiq_dma_info { + u8 index; + u8 slot_len[6]; +}; + +struct __attribute__((packed)) fiq_split_dma_slot { + u8 buf[188]; +}; + +struct fiq_dma_channel { + struct __attribute__((packed)) fiq_split_dma_slot index[6]; +}; + +struct fiq_dma_blob { + struct __attribute__((packed)) fiq_dma_channel channel[0]; +}; + +/** + * struct fiq_hs_isoc_info - USB2.0 isochronous data + * @iso_frame: Pointer to the array of OTG URB iso_frame_descs. + * @nrframes: Total length of iso_frame_desc array + * @index: Current index (FIQ-maintained) + * @stride: Interval in uframes between HS isoc transactions + */ +struct fiq_hs_isoc_info { + struct dwc_otg_hcd_iso_packet_desc *iso_desc; + unsigned int nrframes; + unsigned int index; + unsigned int stride; +}; + +/** + * struct fiq_channel_state - FIQ state machine storage + * @fsm: Current state of the channel as understood by the FIQ + * @nr_errors: Number of transaction errors on this split-transaction + * @hub_addr: SSPLIT/CSPLIT destination hub + * @port_addr: SSPLIT/CSPLIT destination port - always 1 if single TT hub + * @nrpackets: For isoc OUT, the number of split-OUT packets to transmit. For + * split-IN, number of CSPLIT data packets that were received. + * @hcchar_copy: + * @hcsplt_copy: + * @hcintmsk_copy: + * @hctsiz_copy: Copies of the host channel registers. + * For use as scratch, or for returning state. + * + * The fiq_channel_state is state storage between interrupts for a host channel. The + * FSM state is stored here. Members of this structure must only be set up by the + * driver prior to enabling the FIQ for this host channel, and not touched until the FIQ + * has updated the state to either a COMPLETE state group or ABORT state group. + */ + +struct fiq_channel_state { + enum fiq_fsm_state fsm; + unsigned int nr_errors; + unsigned int hub_addr; + unsigned int port_addr; + /* Hardware bug workaround: sometimes channel halt interrupts are + * delayed until the next SOF. Keep track of when we expected to get interrupted. */ + unsigned int expected_uframe; + /* number of uframes remaining (for interval > 1 HS isoc transfers) before next transfer */ + unsigned int uframe_sleeps; + /* in/out for communicating number of dma buffers used, or number of ISOC to do */ + unsigned int nrpackets; + struct fiq_dma_info dma_info; + struct fiq_hs_isoc_info hs_isoc_info; + /* Copies of HC registers - in/out communication from/to IRQ handler + * and for ease of channel setup. A bit of mungeing is performed - for + * example the hctsiz.b.maxp is _always_ the max packet size of the endpoint. + */ + hcchar_data_t hcchar_copy; + hcsplt_data_t hcsplt_copy; + hcint_data_t hcint_copy; + hcintmsk_data_t hcintmsk_copy; + hctsiz_data_t hctsiz_copy; + hcdma_data_t hcdma_copy; +}; + +/** + * struct fiq_state - top-level FIQ state machine storage + * @mphi_regs: virtual address of the MPHI peripheral register file + * @dwc_regs_base: virtual address of the base of the DWC core register file + * @dma_base: physical address for the base of the DMA bounce buffers + * @dummy_send: Scratch area for sending a fake message to the MPHI peripheral + * @gintmsk_saved: Top-level mask of interrupts that the FIQ has not handled. + * Used for determining which interrupts fired to set off the IRQ handler. + * @haintmsk_saved: Mask of interrupts from host channels that the FIQ did not handle internally. + * @np_count: Non-periodic transactions in the active queue + * @np_sent: Count of non-periodic transactions that have completed + * @next_sched_frame: For periodic transactions handled by the driver's SOF-driven queuing mechanism, + * this is the next frame on which a SOF interrupt is required. Used to hold off + * passing SOF through to the driver until necessary. + * @channel[n]: Per-channel FIQ state. Allocated during init depending on the number of host + * channels configured into the core logic. + * + * This is passed as the first argument to the dwc_otg_fiq_fsm top-level FIQ handler from the asm stub. + * It contains top-level state information. + */ +struct fiq_state { + fiq_lock_t lock; + mphi_regs_t mphi_regs; + void *dwc_regs_base; + dma_addr_t dma_base; + struct fiq_dma_blob *fiq_dmab; + void *dummy_send; + gintmsk_data_t gintmsk_saved; + haintmsk_data_t haintmsk_saved; + int mphi_int_count; + unsigned int fiq_done; + unsigned int kick_np_queues; + unsigned int next_sched_frame; +#ifdef FIQ_DEBUG + char * buffer; + unsigned int bufsiz; +#endif + struct fiq_channel_state channel[0]; +}; + +extern void fiq_fsm_spin_lock(fiq_lock_t *lock); + +extern void fiq_fsm_spin_unlock(fiq_lock_t *lock); + +extern int fiq_fsm_too_late(struct fiq_state *st, int n); + +extern int fiq_fsm_tt_in_use(struct fiq_state *st, int num_channels, int n); + +extern void dwc_otg_fiq_fsm(struct fiq_state *state, int num_channels); + +extern void dwc_otg_fiq_nop(struct fiq_state *state); + +#endif /* DWC_OTG_FIQ_FSM_H_ */ --- linux-raspi2-4.2.0.orig/drivers/usb/host/dwc_otg/dwc_otg_fiq_stub.S +++ linux-raspi2-4.2.0/drivers/usb/host/dwc_otg/dwc_otg_fiq_stub.S @@ -0,0 +1,80 @@ +/* + * dwc_otg_fiq_fsm.S - assembly stub for the FSM FIQ + * + * Copyright (c) 2013 Raspberry Pi Foundation + * + * Author: Jonathan Bell + * All rights reserved. + * + * 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. + * * Neither the name of Raspberry Pi nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + + +#include +#include + + +.text + +.global _dwc_otg_fiq_stub_end; + +/** + * _dwc_otg_fiq_stub() - entry copied to the FIQ vector page to allow + * a C-style function call with arguments from the FIQ banked registers. + * r0 = &hcd->fiq_state + * r1 = &hcd->num_channels + * r2 = &hcd->dma_buffers + * Tramples: r0, r1, r2, r4, fp, ip + */ + +ENTRY(_dwc_otg_fiq_stub) + /* Stash unbanked regs - SP will have been set up for us */ + mov ip, sp; + stmdb sp!, {r0-r12, lr}; +#ifdef FIQ_DEBUG + // Cycle profiling - read cycle counter at start + mrc p15, 0, r5, c15, c12, 1; +#endif + /* r11 = fp, don't trample it */ + mov r4, fp; + /* set EABI frame size */ + sub fp, ip, #512; + + /* for fiq NOP mode - just need state */ + mov r0, r8; + /* r9 = num_channels */ + mov r1, r9; + /* r10 = struct *dma_bufs */ +// mov r2, r10; + + /* r4 = &fiq_c_function */ + blx r4; +#ifdef FIQ_DEBUG + mrc p15, 0, r4, c15, c12, 1; + subs r5, r5, r4; + // r5 is now the cycle count time for executing the FIQ. Store it somewhere? +#endif + ldmia sp!, {r0-r12, lr}; + subs pc, lr, #4; +_dwc_otg_fiq_stub_end: +END(_dwc_otg_fiq_stub) --- linux-raspi2-4.2.0.orig/drivers/usb/host/dwc_otg/dwc_otg_hcd.c +++ linux-raspi2-4.2.0/drivers/usb/host/dwc_otg/dwc_otg_hcd.c @@ -0,0 +1,4257 @@ + +/* ========================================================================== + * $File: //dwh/usb_iip/dev/software/otg/linux/drivers/dwc_otg_hcd.c $ + * $Revision: #104 $ + * $Date: 2011/10/24 $ + * $Change: 1871159 $ + * + * Synopsys HS OTG Linux Software Driver and documentation (hereinafter, + * "Software") is an Unsupported proprietary work of Synopsys, Inc. unless + * otherwise expressly agreed to in writing between Synopsys and you. + * + * The Software IS NOT an item of Licensed Software or Licensed Product under + * any End User Software License Agreement or Agreement for Licensed Product + * with Synopsys or any supplement thereto. You are permitted to use and + * redistribute this Software in source and binary forms, with or without + * modification, provided that redistributions of source code must retain this + * notice. You may not view, use, disclose, copy or distribute this file or + * any information contained herein except pursuant to this license grant from + * Synopsys. If you do not agree with this notice, including the disclaimer + * below, then you are not authorized to use the Software. + * + * THIS SOFTWARE IS BEING DISTRIBUTED BY SYNOPSYS SOLELY ON AN "AS IS" BASIS + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE HEREBY DISCLAIMED. IN NO EVENT SHALL SYNOPSYS BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH + * DAMAGE. + * ========================================================================== */ +#ifndef DWC_DEVICE_ONLY + +/** @file + * This file implements HCD Core. All code in this file is portable and doesn't + * use any OS specific functions. + * Interface provided by HCD Core is defined in + * header file. + */ + +#include +#include + +#include "dwc_otg_hcd.h" +#include "dwc_otg_regs.h" +#include "dwc_otg_fiq_fsm.h" + +extern bool microframe_schedule; +extern uint16_t fiq_fsm_mask, nak_holdoff; + +//#define DEBUG_HOST_CHANNELS +#ifdef DEBUG_HOST_CHANNELS +static int last_sel_trans_num_per_scheduled = 0; +static int last_sel_trans_num_nonper_scheduled = 0; +static int last_sel_trans_num_avail_hc_at_start = 0; +static int last_sel_trans_num_avail_hc_at_end = 0; +#endif /* DEBUG_HOST_CHANNELS */ + + +dwc_otg_hcd_t *dwc_otg_hcd_alloc_hcd(void) +{ + return DWC_ALLOC(sizeof(dwc_otg_hcd_t)); +} + +/** + * Connection timeout function. An OTG host is required to display a + * message if the device does not connect within 10 seconds. + */ +void dwc_otg_hcd_connect_timeout(void *ptr) +{ + DWC_DEBUGPL(DBG_HCDV, "%s(%p)\n", __func__, ptr); + DWC_PRINTF("Connect Timeout\n"); + __DWC_ERROR("Device Not Connected/Responding\n"); +} + +#if defined(DEBUG) +static void dump_channel_info(dwc_otg_hcd_t * hcd, dwc_otg_qh_t * qh) +{ + if (qh->channel != NULL) { + dwc_hc_t *hc = qh->channel; + dwc_list_link_t *item; + dwc_otg_qh_t *qh_item; + int num_channels = hcd->core_if->core_params->host_channels; + int i; + + dwc_otg_hc_regs_t *hc_regs; + hcchar_data_t hcchar; + hcsplt_data_t hcsplt; + hctsiz_data_t hctsiz; + uint32_t hcdma; + + hc_regs = hcd->core_if->host_if->hc_regs[hc->hc_num]; + hcchar.d32 = DWC_READ_REG32(&hc_regs->hcchar); + hcsplt.d32 = DWC_READ_REG32(&hc_regs->hcsplt); + hctsiz.d32 = DWC_READ_REG32(&hc_regs->hctsiz); + hcdma = DWC_READ_REG32(&hc_regs->hcdma); + + DWC_PRINTF(" Assigned to channel %p:\n", hc); + DWC_PRINTF(" hcchar 0x%08x, hcsplt 0x%08x\n", hcchar.d32, + hcsplt.d32); + DWC_PRINTF(" hctsiz 0x%08x, hcdma 0x%08x\n", hctsiz.d32, + hcdma); + DWC_PRINTF(" dev_addr: %d, ep_num: %d, ep_is_in: %d\n", + hc->dev_addr, hc->ep_num, hc->ep_is_in); + DWC_PRINTF(" ep_type: %d\n", hc->ep_type); + DWC_PRINTF(" max_packet: %d\n", hc->max_packet); + DWC_PRINTF(" data_pid_start: %d\n", hc->data_pid_start); + DWC_PRINTF(" xfer_started: %d\n", hc->xfer_started); + DWC_PRINTF(" halt_status: %d\n", hc->halt_status); + DWC_PRINTF(" xfer_buff: %p\n", hc->xfer_buff); + DWC_PRINTF(" xfer_len: %d\n", hc->xfer_len); + DWC_PRINTF(" qh: %p\n", hc->qh); + DWC_PRINTF(" NP inactive sched:\n"); + DWC_LIST_FOREACH(item, &hcd->non_periodic_sched_inactive) { + qh_item = + DWC_LIST_ENTRY(item, dwc_otg_qh_t, qh_list_entry); + DWC_PRINTF(" %p\n", qh_item); + } + DWC_PRINTF(" NP active sched:\n"); + DWC_LIST_FOREACH(item, &hcd->non_periodic_sched_active) { + qh_item = + DWC_LIST_ENTRY(item, dwc_otg_qh_t, qh_list_entry); + DWC_PRINTF(" %p\n", qh_item); + } + DWC_PRINTF(" Channels: \n"); + for (i = 0; i < num_channels; i++) { + dwc_hc_t *hc = hcd->hc_ptr_array[i]; + DWC_PRINTF(" %2d: %p\n", i, hc); + } + } +} +#else +#define dump_channel_info(hcd, qh) +#endif /* DEBUG */ + +/** + * Work queue function for starting the HCD when A-Cable is connected. + * The hcd_start() must be called in a process context. + */ +static void hcd_start_func(void *_vp) +{ + dwc_otg_hcd_t *hcd = (dwc_otg_hcd_t *) _vp; + + DWC_DEBUGPL(DBG_HCDV, "%s() %p\n", __func__, hcd); + if (hcd) { + hcd->fops->start(hcd); + } +} + +static void del_xfer_timers(dwc_otg_hcd_t * hcd) +{ +#ifdef DEBUG + int i; + int num_channels = hcd->core_if->core_params->host_channels; + for (i = 0; i < num_channels; i++) { + DWC_TIMER_CANCEL(hcd->core_if->hc_xfer_timer[i]); + } +#endif +} + +static void del_timers(dwc_otg_hcd_t * hcd) +{ + del_xfer_timers(hcd); + DWC_TIMER_CANCEL(hcd->conn_timer); +} + +/** + * Processes all the URBs in a single list of QHs. Completes them with + * -ESHUTDOWN and frees the QTD. + */ +static void kill_urbs_in_qh_list(dwc_otg_hcd_t * hcd, dwc_list_link_t * qh_list) +{ + dwc_list_link_t *qh_item, *qh_tmp; + dwc_otg_qh_t *qh; + dwc_otg_qtd_t *qtd, *qtd_tmp; + + DWC_LIST_FOREACH_SAFE(qh_item, qh_tmp, qh_list) { + qh = DWC_LIST_ENTRY(qh_item, dwc_otg_qh_t, qh_list_entry); + DWC_CIRCLEQ_FOREACH_SAFE(qtd, qtd_tmp, + &qh->qtd_list, qtd_list_entry) { + qtd = DWC_CIRCLEQ_FIRST(&qh->qtd_list); + if (qtd->urb != NULL) { + hcd->fops->complete(hcd, qtd->urb->priv, + qtd->urb, -DWC_E_SHUTDOWN); + dwc_otg_hcd_qtd_remove_and_free(hcd, qtd, qh); + } + + } + if(qh->channel) { + /* Using hcchar.chen == 1 is not a reliable test. + * It is possible that the channel has already halted + * but not yet been through the IRQ handler. + */ + dwc_otg_hc_halt(hcd->core_if, qh->channel, + DWC_OTG_HC_XFER_URB_DEQUEUE); + if(microframe_schedule) + hcd->available_host_channels++; + qh->channel = NULL; + } + dwc_otg_hcd_qh_remove(hcd, qh); + } +} + +/** + * Responds with an error status of ESHUTDOWN to all URBs in the non-periodic + * and periodic schedules. The QTD associated with each URB is removed from + * the schedule and freed. This function may be called when a disconnect is + * detected or when the HCD is being stopped. + */ +static void kill_all_urbs(dwc_otg_hcd_t * hcd) +{ + kill_urbs_in_qh_list(hcd, &hcd->non_periodic_sched_inactive); + kill_urbs_in_qh_list(hcd, &hcd->non_periodic_sched_active); + kill_urbs_in_qh_list(hcd, &hcd->periodic_sched_inactive); + kill_urbs_in_qh_list(hcd, &hcd->periodic_sched_ready); + kill_urbs_in_qh_list(hcd, &hcd->periodic_sched_assigned); + kill_urbs_in_qh_list(hcd, &hcd->periodic_sched_queued); +} + +/** + * Start the connection timer. An OTG host is required to display a + * message if the device does not connect within 10 seconds. The + * timer is deleted if a port connect interrupt occurs before the + * timer expires. + */ +static void dwc_otg_hcd_start_connect_timer(dwc_otg_hcd_t * hcd) +{ + DWC_TIMER_SCHEDULE(hcd->conn_timer, 10000 /* 10 secs */ ); +} + +/** + * HCD Callback function for disconnect of the HCD. + * + * @param p void pointer to the struct usb_hcd + */ +static int32_t dwc_otg_hcd_session_start_cb(void *p) +{ + dwc_otg_hcd_t *dwc_otg_hcd; + DWC_DEBUGPL(DBG_HCDV, "%s(%p)\n", __func__, p); + dwc_otg_hcd = p; + dwc_otg_hcd_start_connect_timer(dwc_otg_hcd); + return 1; +} + +/** + * HCD Callback function for starting the HCD when A-Cable is + * connected. + * + * @param p void pointer to the struct usb_hcd + */ +static int32_t dwc_otg_hcd_start_cb(void *p) +{ + dwc_otg_hcd_t *dwc_otg_hcd = p; + dwc_otg_core_if_t *core_if; + hprt0_data_t hprt0; + + core_if = dwc_otg_hcd->core_if; + + if (core_if->op_state == B_HOST) { + /* + * Reset the port. During a HNP mode switch the reset + * needs to occur within 1ms and have a duration of at + * least 50ms. + */ + hprt0.d32 = dwc_otg_read_hprt0(core_if); + hprt0.b.prtrst = 1; + DWC_WRITE_REG32(core_if->host_if->hprt0, hprt0.d32); + } + DWC_WORKQ_SCHEDULE_DELAYED(core_if->wq_otg, + hcd_start_func, dwc_otg_hcd, 50, + "start hcd"); + + return 1; +} + +/** + * HCD Callback function for disconnect of the HCD. + * + * @param p void pointer to the struct usb_hcd + */ +static int32_t dwc_otg_hcd_disconnect_cb(void *p) +{ + gintsts_data_t intr; + dwc_otg_hcd_t *dwc_otg_hcd = p; + + /* + * Set status flags for the hub driver. + */ + dwc_otg_hcd->flags.b.port_connect_status_change = 1; + dwc_otg_hcd->flags.b.port_connect_status = 0; + if(fiq_enable) + local_fiq_disable(); + /* + * Shutdown any transfers in process by clearing the Tx FIFO Empty + * interrupt mask and status bits and disabling subsequent host + * channel interrupts. + */ + intr.d32 = 0; + intr.b.nptxfempty = 1; + intr.b.ptxfempty = 1; + intr.b.hcintr = 1; + DWC_MODIFY_REG32(&dwc_otg_hcd->core_if->core_global_regs->gintmsk, + intr.d32, 0); + DWC_MODIFY_REG32(&dwc_otg_hcd->core_if->core_global_regs->gintsts, + intr.d32, 0); + + del_timers(dwc_otg_hcd); + + /* + * Turn off the vbus power only if the core has transitioned to device + * mode. If still in host mode, need to keep power on to detect a + * reconnection. + */ + if (dwc_otg_is_device_mode(dwc_otg_hcd->core_if)) { + if (dwc_otg_hcd->core_if->op_state != A_SUSPEND) { + hprt0_data_t hprt0 = {.d32 = 0 }; + DWC_PRINTF("Disconnect: PortPower off\n"); + hprt0.b.prtpwr = 0; + DWC_WRITE_REG32(dwc_otg_hcd->core_if->host_if->hprt0, + hprt0.d32); + } + + dwc_otg_disable_host_interrupts(dwc_otg_hcd->core_if); + } + + /* Respond with an error status to all URBs in the schedule. */ + kill_all_urbs(dwc_otg_hcd); + + if (dwc_otg_is_host_mode(dwc_otg_hcd->core_if)) { + /* Clean up any host channels that were in use. */ + int num_channels; + int i; + dwc_hc_t *channel; + dwc_otg_hc_regs_t *hc_regs; + hcchar_data_t hcchar; + + num_channels = dwc_otg_hcd->core_if->core_params->host_channels; + + if (!dwc_otg_hcd->core_if->dma_enable) { + /* Flush out any channel requests in slave mode. */ + for (i = 0; i < num_channels; i++) { + channel = dwc_otg_hcd->hc_ptr_array[i]; + if (DWC_CIRCLEQ_EMPTY_ENTRY + (channel, hc_list_entry)) { + hc_regs = + dwc_otg_hcd->core_if-> + host_if->hc_regs[i]; + hcchar.d32 = + DWC_READ_REG32(&hc_regs->hcchar); + if (hcchar.b.chen) { + hcchar.b.chen = 0; + hcchar.b.chdis = 1; + hcchar.b.epdir = 0; + DWC_WRITE_REG32 + (&hc_regs->hcchar, + hcchar.d32); + } + } + } + } + + for (i = 0; i < num_channels; i++) { + channel = dwc_otg_hcd->hc_ptr_array[i]; + if (DWC_CIRCLEQ_EMPTY_ENTRY(channel, hc_list_entry)) { + hc_regs = + dwc_otg_hcd->core_if->host_if->hc_regs[i]; + hcchar.d32 = DWC_READ_REG32(&hc_regs->hcchar); + if (hcchar.b.chen) { + /* Halt the channel. */ + hcchar.b.chdis = 1; + DWC_WRITE_REG32(&hc_regs->hcchar, + hcchar.d32); + } + + dwc_otg_hc_cleanup(dwc_otg_hcd->core_if, + channel); + DWC_CIRCLEQ_INSERT_TAIL + (&dwc_otg_hcd->free_hc_list, channel, + hc_list_entry); + /* + * Added for Descriptor DMA to prevent channel double cleanup + * in release_channel_ddma(). Which called from ep_disable + * when device disconnect. + */ + channel->qh = NULL; + } + } + if(fiq_fsm_enable) { + for(i=0; i < 128; i++) { + dwc_otg_hcd->hub_port[i] = 0; + } + } + + } + + if(fiq_enable) + local_fiq_enable(); + + if (dwc_otg_hcd->fops->disconnect) { + dwc_otg_hcd->fops->disconnect(dwc_otg_hcd); + } + + return 1; +} + +/** + * HCD Callback function for stopping the HCD. + * + * @param p void pointer to the struct usb_hcd + */ +static int32_t dwc_otg_hcd_stop_cb(void *p) +{ + dwc_otg_hcd_t *dwc_otg_hcd = p; + + DWC_DEBUGPL(DBG_HCDV, "%s(%p)\n", __func__, p); + dwc_otg_hcd_stop(dwc_otg_hcd); + return 1; +} + +#ifdef CONFIG_USB_DWC_OTG_LPM +/** + * HCD Callback function for sleep of HCD. + * + * @param p void pointer to the struct usb_hcd + */ +static int dwc_otg_hcd_sleep_cb(void *p) +{ + dwc_otg_hcd_t *hcd = p; + + dwc_otg_hcd_free_hc_from_lpm(hcd); + + return 0; +} +#endif + + +/** + * HCD Callback function for Remote Wakeup. + * + * @param p void pointer to the struct usb_hcd + */ +static int dwc_otg_hcd_rem_wakeup_cb(void *p) +{ + dwc_otg_hcd_t *hcd = p; + + if (hcd->core_if->lx_state == DWC_OTG_L2) { + hcd->flags.b.port_suspend_change = 1; + } +#ifdef CONFIG_USB_DWC_OTG_LPM + else { + hcd->flags.b.port_l1_change = 1; + } +#endif + return 0; +} + +/** + * Halts the DWC_otg host mode operations in a clean manner. USB transfers are + * stopped. + */ +void dwc_otg_hcd_stop(dwc_otg_hcd_t * hcd) +{ + hprt0_data_t hprt0 = {.d32 = 0 }; + + DWC_DEBUGPL(DBG_HCD, "DWC OTG HCD STOP\n"); + + /* + * The root hub should be disconnected before this function is called. + * The disconnect will clear the QTD lists (via ..._hcd_urb_dequeue) + * and the QH lists (via ..._hcd_endpoint_disable). + */ + + /* Turn off all host-specific interrupts. */ + dwc_otg_disable_host_interrupts(hcd->core_if); + + /* Turn off the vbus power */ + DWC_PRINTF("PortPower off\n"); + hprt0.b.prtpwr = 0; + DWC_WRITE_REG32(hcd->core_if->host_if->hprt0, hprt0.d32); + dwc_mdelay(1); +} + +int dwc_otg_hcd_urb_enqueue(dwc_otg_hcd_t * hcd, + dwc_otg_hcd_urb_t * dwc_otg_urb, void **ep_handle, + int atomic_alloc) +{ + int retval = 0; + uint8_t needs_scheduling = 0; + dwc_otg_transaction_type_e tr_type; + dwc_otg_qtd_t *qtd; + gintmsk_data_t intr_mask = {.d32 = 0 }; + hprt0_data_t hprt0 = { .d32 = 0 }; + +#ifdef DEBUG /* integrity checks (Broadcom) */ + if (NULL == hcd->core_if) { + DWC_ERROR("**** DWC OTG HCD URB Enqueue - HCD has NULL core_if\n"); + /* No longer connected. */ + return -DWC_E_INVALID; + } +#endif + if (!hcd->flags.b.port_connect_status) { + /* No longer connected. */ + DWC_ERROR("Not connected\n"); + return -DWC_E_NO_DEVICE; + } + + /* Some core configurations cannot support LS traffic on a FS root port */ + if ((hcd->fops->speed(hcd, dwc_otg_urb->priv) == USB_SPEED_LOW) && + (hcd->core_if->hwcfg2.b.fs_phy_type == 1) && + (hcd->core_if->hwcfg2.b.hs_phy_type == 1)) { + hprt0.d32 = DWC_READ_REG32(hcd->core_if->host_if->hprt0); + if (hprt0.b.prtspd == DWC_HPRT0_PRTSPD_FULL_SPEED) { + return -DWC_E_NO_DEVICE; + } + } + + qtd = dwc_otg_hcd_qtd_create(dwc_otg_urb, atomic_alloc); + if (qtd == NULL) { + DWC_ERROR("DWC OTG HCD URB Enqueue failed creating QTD\n"); + return -DWC_E_NO_MEMORY; + } +#ifdef DEBUG /* integrity checks (Broadcom) */ + if (qtd->urb == NULL) { + DWC_ERROR("**** DWC OTG HCD URB Enqueue created QTD with no URBs\n"); + return -DWC_E_NO_MEMORY; + } + if (qtd->urb->priv == NULL) { + DWC_ERROR("**** DWC OTG HCD URB Enqueue created QTD URB with no URB handle\n"); + return -DWC_E_NO_MEMORY; + } +#endif + intr_mask.d32 = DWC_READ_REG32(&hcd->core_if->core_global_regs->gintmsk); + if(!intr_mask.b.sofintr || fiq_enable) needs_scheduling = 1; + if((((dwc_otg_qh_t *)ep_handle)->ep_type == UE_BULK) && !(qtd->urb->flags & URB_GIVEBACK_ASAP)) + /* Do not schedule SG transactions until qtd has URB_GIVEBACK_ASAP set */ + needs_scheduling = 0; + + retval = dwc_otg_hcd_qtd_add(qtd, hcd, (dwc_otg_qh_t **) ep_handle, atomic_alloc); + // creates a new queue in ep_handle if it doesn't exist already + if (retval < 0) { + DWC_ERROR("DWC OTG HCD URB Enqueue failed adding QTD. " + "Error status %d\n", retval); + dwc_otg_hcd_qtd_free(qtd); + return retval; + } + + if(needs_scheduling) { + tr_type = dwc_otg_hcd_select_transactions(hcd); + if (tr_type != DWC_OTG_TRANSACTION_NONE) { + dwc_otg_hcd_queue_transactions(hcd, tr_type); + } + } + return retval; +} + +int dwc_otg_hcd_urb_dequeue(dwc_otg_hcd_t * hcd, + dwc_otg_hcd_urb_t * dwc_otg_urb) +{ + dwc_otg_qh_t *qh; + dwc_otg_qtd_t *urb_qtd; + BUG_ON(!hcd); + BUG_ON(!dwc_otg_urb); + +#ifdef DEBUG /* integrity checks (Broadcom) */ + + if (hcd == NULL) { + DWC_ERROR("**** DWC OTG HCD URB Dequeue has NULL HCD\n"); + return -DWC_E_INVALID; + } + if (dwc_otg_urb == NULL) { + DWC_ERROR("**** DWC OTG HCD URB Dequeue has NULL URB\n"); + return -DWC_E_INVALID; + } + if (dwc_otg_urb->qtd == NULL) { + DWC_ERROR("**** DWC OTG HCD URB Dequeue with NULL QTD\n"); + return -DWC_E_INVALID; + } + urb_qtd = dwc_otg_urb->qtd; + BUG_ON(!urb_qtd); + if (urb_qtd->qh == NULL) { + DWC_ERROR("**** DWC OTG HCD URB Dequeue with QTD with NULL Q handler\n"); + return -DWC_E_INVALID; + } +#else + urb_qtd = dwc_otg_urb->qtd; + BUG_ON(!urb_qtd); +#endif + qh = urb_qtd->qh; + BUG_ON(!qh); + if (CHK_DEBUG_LEVEL(DBG_HCDV | DBG_HCD_URB)) { + if (urb_qtd->in_process) { + dump_channel_info(hcd, qh); + } + } +#ifdef DEBUG /* integrity checks (Broadcom) */ + if (hcd->core_if == NULL) { + DWC_ERROR("**** DWC OTG HCD URB Dequeue HCD has NULL core_if\n"); + return -DWC_E_INVALID; + } +#endif + if (urb_qtd->in_process && qh->channel) { + /* The QTD is in process (it has been assigned to a channel). */ + if (hcd->flags.b.port_connect_status) { + int n = qh->channel->hc_num; + /* + * If still connected (i.e. in host mode), halt the + * channel so it can be used for other transfers. If + * no longer connected, the host registers can't be + * written to halt the channel since the core is in + * device mode. + */ + /* In FIQ FSM mode, we need to shut down carefully. + * The FIQ may attempt to restart a disabled channel */ + if (fiq_fsm_enable && (hcd->fiq_state->channel[n].fsm != FIQ_PASSTHROUGH)) { + qh->channel->halt_status = DWC_OTG_HC_XFER_URB_DEQUEUE; + qh->channel->halt_pending = 1; + hcd->fiq_state->channel[n].fsm = FIQ_DEQUEUE_ISSUED; + } else { + dwc_otg_hc_halt(hcd->core_if, qh->channel, + DWC_OTG_HC_XFER_URB_DEQUEUE); + } + } + } + + /* + * Free the QTD and clean up the associated QH. Leave the QH in the + * schedule if it has any remaining QTDs. + */ + + DWC_DEBUGPL(DBG_HCD, "DWC OTG HCD URB Dequeue - " + "delete %sQueue handler\n", + hcd->core_if->dma_desc_enable?"DMA ":""); + if (!hcd->core_if->dma_desc_enable) { + uint8_t b = urb_qtd->in_process; + dwc_otg_hcd_qtd_remove_and_free(hcd, urb_qtd, qh); + if (b) { + dwc_otg_hcd_qh_deactivate(hcd, qh, 0); + qh->channel = NULL; + } else if (DWC_CIRCLEQ_EMPTY(&qh->qtd_list)) { + dwc_otg_hcd_qh_remove(hcd, qh); + } + } else { + dwc_otg_hcd_qtd_remove_and_free(hcd, urb_qtd, qh); + } + return 0; +} + +int dwc_otg_hcd_endpoint_disable(dwc_otg_hcd_t * hcd, void *ep_handle, + int retry) +{ + dwc_otg_qh_t *qh = (dwc_otg_qh_t *) ep_handle; + int retval = 0; + dwc_irqflags_t flags; + + if (retry < 0) { + retval = -DWC_E_INVALID; + goto done; + } + + if (!qh) { + retval = -DWC_E_INVALID; + goto done; + } + + DWC_SPINLOCK_IRQSAVE(hcd->lock, &flags); + + while (!DWC_CIRCLEQ_EMPTY(&qh->qtd_list) && retry) { + DWC_SPINUNLOCK_IRQRESTORE(hcd->lock, flags); + retry--; + dwc_msleep(5); + DWC_SPINLOCK_IRQSAVE(hcd->lock, &flags); + } + + dwc_otg_hcd_qh_remove(hcd, qh); + + DWC_SPINUNLOCK_IRQRESTORE(hcd->lock, flags); + /* + * Split dwc_otg_hcd_qh_remove_and_free() into qh_remove + * and qh_free to prevent stack dump on DWC_DMA_FREE() with + * irq_disabled (spinlock_irqsave) in dwc_otg_hcd_desc_list_free() + * and dwc_otg_hcd_frame_list_alloc(). + */ + dwc_otg_hcd_qh_free(hcd, qh); + +done: + return retval; +} + +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,30) +int dwc_otg_hcd_endpoint_reset(dwc_otg_hcd_t * hcd, void *ep_handle) +{ + int retval = 0; + dwc_otg_qh_t *qh = (dwc_otg_qh_t *) ep_handle; + if (!qh) + return -DWC_E_INVALID; + + qh->data_toggle = DWC_OTG_HC_PID_DATA0; + return retval; +} +#endif + +/** + * HCD Callback structure for handling mode switching. + */ +static dwc_otg_cil_callbacks_t hcd_cil_callbacks = { + .start = dwc_otg_hcd_start_cb, + .stop = dwc_otg_hcd_stop_cb, + .disconnect = dwc_otg_hcd_disconnect_cb, + .session_start = dwc_otg_hcd_session_start_cb, + .resume_wakeup = dwc_otg_hcd_rem_wakeup_cb, +#ifdef CONFIG_USB_DWC_OTG_LPM + .sleep = dwc_otg_hcd_sleep_cb, +#endif + .p = 0, +}; + +/** + * Reset tasklet function + */ +static void reset_tasklet_func(void *data) +{ + dwc_otg_hcd_t *dwc_otg_hcd = (dwc_otg_hcd_t *) data; + dwc_otg_core_if_t *core_if = dwc_otg_hcd->core_if; + hprt0_data_t hprt0; + + DWC_DEBUGPL(DBG_HCDV, "USB RESET tasklet called\n"); + + hprt0.d32 = dwc_otg_read_hprt0(core_if); + hprt0.b.prtrst = 1; + DWC_WRITE_REG32(core_if->host_if->hprt0, hprt0.d32); + dwc_mdelay(60); + + hprt0.b.prtrst = 0; + DWC_WRITE_REG32(core_if->host_if->hprt0, hprt0.d32); + dwc_otg_hcd->flags.b.port_reset_change = 1; +} + +static void completion_tasklet_func(void *ptr) +{ + dwc_otg_hcd_t *hcd = (dwc_otg_hcd_t *) ptr; + struct urb *urb; + urb_tq_entry_t *item; + dwc_irqflags_t flags; + + /* This could just be spin_lock_irq */ + DWC_SPINLOCK_IRQSAVE(hcd->lock, &flags); + while (!DWC_TAILQ_EMPTY(&hcd->completed_urb_list)) { + item = DWC_TAILQ_FIRST(&hcd->completed_urb_list); + urb = item->urb; + DWC_TAILQ_REMOVE(&hcd->completed_urb_list, item, + urb_tq_entries); + DWC_SPINUNLOCK_IRQRESTORE(hcd->lock, flags); + DWC_FREE(item); + + usb_hcd_giveback_urb(hcd->priv, urb, urb->status); + + + DWC_SPINLOCK_IRQSAVE(hcd->lock, &flags); + } + DWC_SPINUNLOCK_IRQRESTORE(hcd->lock, flags); + return; +} + +static void qh_list_free(dwc_otg_hcd_t * hcd, dwc_list_link_t * qh_list) +{ + dwc_list_link_t *item; + dwc_otg_qh_t *qh; + dwc_irqflags_t flags; + + if (!qh_list->next) { + /* The list hasn't been initialized yet. */ + return; + } + /* + * Hold spinlock here. Not needed in that case if bellow + * function is being called from ISR + */ + DWC_SPINLOCK_IRQSAVE(hcd->lock, &flags); + /* Ensure there are no QTDs or URBs left. */ + kill_urbs_in_qh_list(hcd, qh_list); + DWC_SPINUNLOCK_IRQRESTORE(hcd->lock, flags); + + DWC_LIST_FOREACH(item, qh_list) { + qh = DWC_LIST_ENTRY(item, dwc_otg_qh_t, qh_list_entry); + dwc_otg_hcd_qh_remove_and_free(hcd, qh); + } +} + +/** + * Exit from Hibernation if Host did not detect SRP from connected SRP capable + * Device during SRP time by host power up. + */ +void dwc_otg_hcd_power_up(void *ptr) +{ + gpwrdn_data_t gpwrdn = {.d32 = 0 }; + dwc_otg_core_if_t *core_if = (dwc_otg_core_if_t *) ptr; + + DWC_PRINTF("%s called\n", __FUNCTION__); + + if (!core_if->hibernation_suspend) { + DWC_PRINTF("Already exited from Hibernation\n"); + return; + } + + /* Switch on the voltage to the core */ + gpwrdn.b.pwrdnswtch = 1; + DWC_MODIFY_REG32(&core_if->core_global_regs->gpwrdn, gpwrdn.d32, 0); + dwc_udelay(10); + + /* Reset the core */ + gpwrdn.d32 = 0; + gpwrdn.b.pwrdnrstn = 1; + DWC_MODIFY_REG32(&core_if->core_global_regs->gpwrdn, gpwrdn.d32, 0); + dwc_udelay(10); + + /* Disable power clamps */ + gpwrdn.d32 = 0; + gpwrdn.b.pwrdnclmp = 1; + DWC_MODIFY_REG32(&core_if->core_global_regs->gpwrdn, gpwrdn.d32, 0); + + /* Remove reset the core signal */ + gpwrdn.d32 = 0; + gpwrdn.b.pwrdnrstn = 1; + DWC_MODIFY_REG32(&core_if->core_global_regs->gpwrdn, 0, gpwrdn.d32); + dwc_udelay(10); + + /* Disable PMU interrupt */ + gpwrdn.d32 = 0; + gpwrdn.b.pmuintsel = 1; + DWC_MODIFY_REG32(&core_if->core_global_regs->gpwrdn, gpwrdn.d32, 0); + + core_if->hibernation_suspend = 0; + + /* Disable PMU */ + gpwrdn.d32 = 0; + gpwrdn.b.pmuactv = 1; + DWC_MODIFY_REG32(&core_if->core_global_regs->gpwrdn, gpwrdn.d32, 0); + dwc_udelay(10); + + /* Enable VBUS */ + gpwrdn.d32 = 0; + gpwrdn.b.dis_vbus = 1; + DWC_MODIFY_REG32(&core_if->core_global_regs->gpwrdn, gpwrdn.d32, 0); + + core_if->op_state = A_HOST; + dwc_otg_core_init(core_if); + dwc_otg_enable_global_interrupts(core_if); + cil_hcd_start(core_if); +} + +void dwc_otg_cleanup_fiq_channel(dwc_otg_hcd_t *hcd, uint32_t num) +{ + struct fiq_channel_state *st = &hcd->fiq_state->channel[num]; + struct fiq_dma_blob *blob = hcd->fiq_dmab; + int i; + + st->fsm = FIQ_PASSTHROUGH; + st->hcchar_copy.d32 = 0; + st->hcsplt_copy.d32 = 0; + st->hcint_copy.d32 = 0; + st->hcintmsk_copy.d32 = 0; + st->hctsiz_copy.d32 = 0; + st->hcdma_copy.d32 = 0; + st->nr_errors = 0; + st->hub_addr = 0; + st->port_addr = 0; + st->expected_uframe = 0; + st->nrpackets = 0; + st->dma_info.index = 0; + for (i = 0; i < 6; i++) + st->dma_info.slot_len[i] = 255; + st->hs_isoc_info.index = 0; + st->hs_isoc_info.iso_desc = NULL; + st->hs_isoc_info.nrframes = 0; + + DWC_MEMSET(&blob->channel[num].index[0], 0x6b, 1128); +} + +/** + * Frees secondary storage associated with the dwc_otg_hcd structure contained + * in the struct usb_hcd field. + */ +static void dwc_otg_hcd_free(dwc_otg_hcd_t * dwc_otg_hcd) +{ + int i; + + DWC_DEBUGPL(DBG_HCD, "DWC OTG HCD FREE\n"); + + del_timers(dwc_otg_hcd); + + /* Free memory for QH/QTD lists */ + qh_list_free(dwc_otg_hcd, &dwc_otg_hcd->non_periodic_sched_inactive); + qh_list_free(dwc_otg_hcd, &dwc_otg_hcd->non_periodic_sched_active); + qh_list_free(dwc_otg_hcd, &dwc_otg_hcd->periodic_sched_inactive); + qh_list_free(dwc_otg_hcd, &dwc_otg_hcd->periodic_sched_ready); + qh_list_free(dwc_otg_hcd, &dwc_otg_hcd->periodic_sched_assigned); + qh_list_free(dwc_otg_hcd, &dwc_otg_hcd->periodic_sched_queued); + + /* Free memory for the host channels. */ + for (i = 0; i < MAX_EPS_CHANNELS; i++) { + dwc_hc_t *hc = dwc_otg_hcd->hc_ptr_array[i]; + +#ifdef DEBUG + if (dwc_otg_hcd->core_if->hc_xfer_timer[i]) { + DWC_TIMER_FREE(dwc_otg_hcd->core_if->hc_xfer_timer[i]); + } +#endif + if (hc != NULL) { + DWC_DEBUGPL(DBG_HCDV, "HCD Free channel #%i, hc=%p\n", + i, hc); + DWC_FREE(hc); + } + } + + if (dwc_otg_hcd->core_if->dma_enable) { + if (dwc_otg_hcd->status_buf_dma) { + DWC_DMA_FREE(DWC_OTG_HCD_STATUS_BUF_SIZE, + dwc_otg_hcd->status_buf, + dwc_otg_hcd->status_buf_dma); + } + } else if (dwc_otg_hcd->status_buf != NULL) { + DWC_FREE(dwc_otg_hcd->status_buf); + } + DWC_SPINLOCK_FREE(dwc_otg_hcd->channel_lock); + DWC_SPINLOCK_FREE(dwc_otg_hcd->lock); + /* Set core_if's lock pointer to NULL */ + dwc_otg_hcd->core_if->lock = NULL; + + DWC_TIMER_FREE(dwc_otg_hcd->conn_timer); + DWC_TASK_FREE(dwc_otg_hcd->reset_tasklet); + DWC_TASK_FREE(dwc_otg_hcd->completion_tasklet); + DWC_FREE(dwc_otg_hcd->fiq_state); + +#ifdef DWC_DEV_SRPCAP + if (dwc_otg_hcd->core_if->power_down == 2 && + dwc_otg_hcd->core_if->pwron_timer) { + DWC_TIMER_FREE(dwc_otg_hcd->core_if->pwron_timer); + } +#endif + DWC_FREE(dwc_otg_hcd); +} + +int init_hcd_usecs(dwc_otg_hcd_t *_hcd); + +int dwc_otg_hcd_init(dwc_otg_hcd_t * hcd, dwc_otg_core_if_t * core_if) +{ + int retval = 0; + int num_channels; + int i; + dwc_hc_t *channel; + +#if (defined(DWC_LINUX) && defined(CONFIG_DEBUG_SPINLOCK)) + DWC_SPINLOCK_ALLOC_LINUX_DEBUG(hcd->lock); + DWC_SPINLOCK_ALLOC_LINUX_DEBUG(hcd->channel_lock); +#else + hcd->lock = DWC_SPINLOCK_ALLOC(); + hcd->channel_lock = DWC_SPINLOCK_ALLOC(); +#endif + DWC_DEBUGPL(DBG_HCDV, "init of HCD %p given core_if %p\n", + hcd, core_if); + if (!hcd->lock) { + DWC_ERROR("Could not allocate lock for pcd"); + DWC_FREE(hcd); + retval = -DWC_E_NO_MEMORY; + goto out; + } + hcd->core_if = core_if; + + /* Register the HCD CIL Callbacks */ + dwc_otg_cil_register_hcd_callbacks(hcd->core_if, + &hcd_cil_callbacks, hcd); + + /* Initialize the non-periodic schedule. */ + DWC_LIST_INIT(&hcd->non_periodic_sched_inactive); + DWC_LIST_INIT(&hcd->non_periodic_sched_active); + + /* Initialize the periodic schedule. */ + DWC_LIST_INIT(&hcd->periodic_sched_inactive); + DWC_LIST_INIT(&hcd->periodic_sched_ready); + DWC_LIST_INIT(&hcd->periodic_sched_assigned); + DWC_LIST_INIT(&hcd->periodic_sched_queued); + DWC_TAILQ_INIT(&hcd->completed_urb_list); + /* + * Create a host channel descriptor for each host channel implemented + * in the controller. Initialize the channel descriptor array. + */ + DWC_CIRCLEQ_INIT(&hcd->free_hc_list); + num_channels = hcd->core_if->core_params->host_channels; + DWC_MEMSET(hcd->hc_ptr_array, 0, sizeof(hcd->hc_ptr_array)); + for (i = 0; i < num_channels; i++) { + channel = DWC_ALLOC(sizeof(dwc_hc_t)); + if (channel == NULL) { + retval = -DWC_E_NO_MEMORY; + DWC_ERROR("%s: host channel allocation failed\n", + __func__); + dwc_otg_hcd_free(hcd); + goto out; + } + channel->hc_num = i; + hcd->hc_ptr_array[i] = channel; +#ifdef DEBUG + hcd->core_if->hc_xfer_timer[i] = + DWC_TIMER_ALLOC("hc timer", hc_xfer_timeout, + &hcd->core_if->hc_xfer_info[i]); +#endif + DWC_DEBUGPL(DBG_HCDV, "HCD Added channel #%d, hc=%p\n", i, + channel); + } + + if (fiq_enable) { + hcd->fiq_state = DWC_ALLOC(sizeof(struct fiq_state) + (sizeof(struct fiq_channel_state) * num_channels)); + if (!hcd->fiq_state) { + retval = -DWC_E_NO_MEMORY; + DWC_ERROR("%s: cannot allocate fiq_state structure\n", __func__); + dwc_otg_hcd_free(hcd); + goto out; + } + DWC_MEMSET(hcd->fiq_state, 0, (sizeof(struct fiq_state) + (sizeof(struct fiq_channel_state) * num_channels))); + + for (i = 0; i < num_channels; i++) { + hcd->fiq_state->channel[i].fsm = FIQ_PASSTHROUGH; + } + hcd->fiq_state->dummy_send = DWC_ALLOC_ATOMIC(16); + + hcd->fiq_stack = DWC_ALLOC(sizeof(struct fiq_stack)); + if (!hcd->fiq_stack) { + retval = -DWC_E_NO_MEMORY; + DWC_ERROR("%s: cannot allocate fiq_stack structure\n", __func__); + dwc_otg_hcd_free(hcd); + goto out; + } + hcd->fiq_stack->magic1 = 0xDEADBEEF; + hcd->fiq_stack->magic2 = 0xD00DFEED; + hcd->fiq_state->gintmsk_saved.d32 = ~0; + hcd->fiq_state->haintmsk_saved.b2.chint = ~0; + + /* This bit is terrible and uses no API, but necessary. The FIQ has no concept of DMA pools + * (and if it did, would be a lot slower). This allocates a chunk of memory (~9kiB for 8 host channels) + * for use as transaction bounce buffers in a 2-D array. Our access into this chunk is done by some + * moderately readable array casts. + */ + hcd->fiq_dmab = DWC_DMA_ALLOC((sizeof(struct fiq_dma_channel) * num_channels), &hcd->fiq_state->dma_base); + DWC_WARN("FIQ DMA bounce buffers: virt = 0x%08x dma = 0x%08x len=%d", + (unsigned int)hcd->fiq_dmab, (unsigned int)hcd->fiq_state->dma_base, + sizeof(struct fiq_dma_channel) * num_channels); + + DWC_MEMSET(hcd->fiq_dmab, 0x6b, 9024); + + /* pointer for debug in fiq_print */ + hcd->fiq_state->fiq_dmab = hcd->fiq_dmab; + if (fiq_fsm_enable) { + int i; + for (i=0; i < hcd->core_if->core_params->host_channels; i++) { + dwc_otg_cleanup_fiq_channel(hcd, i); + } + DWC_PRINTF("FIQ FSM acceleration enabled for :\n%s%s%s%s", + (fiq_fsm_mask & 0x1) ? "Non-periodic Split Transactions\n" : "", + (fiq_fsm_mask & 0x2) ? "Periodic Split Transactions\n" : "", + (fiq_fsm_mask & 0x4) ? "High-Speed Isochronous Endpoints\n" : "", + (fiq_fsm_mask & 0x8) ? "Interrupt/Control Split Transaction hack enabled\n" : ""); + } + } + + /* Initialize the Connection timeout timer. */ + hcd->conn_timer = DWC_TIMER_ALLOC("Connection timer", + dwc_otg_hcd_connect_timeout, 0); + + printk(KERN_DEBUG "dwc_otg: Microframe scheduler %s\n", microframe_schedule ? "enabled":"disabled"); + if (microframe_schedule) + init_hcd_usecs(hcd); + + /* Initialize reset tasklet. */ + hcd->reset_tasklet = DWC_TASK_ALLOC("reset_tasklet", reset_tasklet_func, hcd); + + hcd->completion_tasklet = DWC_TASK_ALLOC("completion_tasklet", + completion_tasklet_func, hcd); +#ifdef DWC_DEV_SRPCAP + if (hcd->core_if->power_down == 2) { + /* Initialize Power on timer for Host power up in case hibernation */ + hcd->core_if->pwron_timer = DWC_TIMER_ALLOC("PWRON TIMER", + dwc_otg_hcd_power_up, core_if); + } +#endif + + /* + * Allocate space for storing data on status transactions. Normally no + * data is sent, but this space acts as a bit bucket. This must be + * done after usb_add_hcd since that function allocates the DMA buffer + * pool. + */ + if (hcd->core_if->dma_enable) { + hcd->status_buf = + DWC_DMA_ALLOC(DWC_OTG_HCD_STATUS_BUF_SIZE, + &hcd->status_buf_dma); + } else { + hcd->status_buf = DWC_ALLOC(DWC_OTG_HCD_STATUS_BUF_SIZE); + } + if (!hcd->status_buf) { + retval = -DWC_E_NO_MEMORY; + DWC_ERROR("%s: status_buf allocation failed\n", __func__); + dwc_otg_hcd_free(hcd); + goto out; + } + + hcd->otg_port = 1; + hcd->frame_list = NULL; + hcd->frame_list_dma = 0; + hcd->periodic_qh_count = 0; + + DWC_MEMSET(hcd->hub_port, 0, sizeof(hcd->hub_port)); +#ifdef FIQ_DEBUG + DWC_MEMSET(hcd->hub_port_alloc, -1, sizeof(hcd->hub_port_alloc)); +#endif + +out: + return retval; +} + +void dwc_otg_hcd_remove(dwc_otg_hcd_t * hcd) +{ + /* Turn off all host-specific interrupts. */ + dwc_otg_disable_host_interrupts(hcd->core_if); + + dwc_otg_hcd_free(hcd); +} + +/** + * Initializes dynamic portions of the DWC_otg HCD state. + */ +static void dwc_otg_hcd_reinit(dwc_otg_hcd_t * hcd) +{ + int num_channels; + int i; + dwc_hc_t *channel; + dwc_hc_t *channel_tmp; + + hcd->flags.d32 = 0; + + hcd->non_periodic_qh_ptr = &hcd->non_periodic_sched_active; + if (!microframe_schedule) { + hcd->non_periodic_channels = 0; + hcd->periodic_channels = 0; + } else { + hcd->available_host_channels = hcd->core_if->core_params->host_channels; + } + /* + * Put all channels in the free channel list and clean up channel + * states. + */ + DWC_CIRCLEQ_FOREACH_SAFE(channel, channel_tmp, + &hcd->free_hc_list, hc_list_entry) { + DWC_CIRCLEQ_REMOVE(&hcd->free_hc_list, channel, hc_list_entry); + } + + num_channels = hcd->core_if->core_params->host_channels; + for (i = 0; i < num_channels; i++) { + channel = hcd->hc_ptr_array[i]; + DWC_CIRCLEQ_INSERT_TAIL(&hcd->free_hc_list, channel, + hc_list_entry); + dwc_otg_hc_cleanup(hcd->core_if, channel); + } + + /* Initialize the DWC core for host mode operation. */ + dwc_otg_core_host_init(hcd->core_if); + + /* Set core_if's lock pointer to the hcd->lock */ + hcd->core_if->lock = hcd->lock; +} + +/** + * Assigns transactions from a QTD to a free host channel and initializes the + * host channel to perform the transactions. The host channel is removed from + * the free list. + * + * @param hcd The HCD state structure. + * @param qh Transactions from the first QTD for this QH are selected and + * assigned to a free host channel. + */ +static void assign_and_init_hc(dwc_otg_hcd_t * hcd, dwc_otg_qh_t * qh) +{ + dwc_hc_t *hc; + dwc_otg_qtd_t *qtd; + dwc_otg_hcd_urb_t *urb; + void* ptr = NULL; + uint32_t intr_enable; + unsigned long flags; + gintmsk_data_t gintmsk = { .d32 = 0, }; + + qtd = DWC_CIRCLEQ_FIRST(&qh->qtd_list); + + urb = qtd->urb; + + DWC_DEBUGPL(DBG_HCDV, "%s(%p,%p) - urb %x, actual_length %d\n", __func__, hcd, qh, (unsigned int)urb, urb->actual_length); + + if (((urb->actual_length < 0) || (urb->actual_length > urb->length)) && !dwc_otg_hcd_is_pipe_in(&urb->pipe_info)) + urb->actual_length = urb->length; + + + hc = DWC_CIRCLEQ_FIRST(&hcd->free_hc_list); + + /* Remove the host channel from the free list. */ + DWC_CIRCLEQ_REMOVE_INIT(&hcd->free_hc_list, hc, hc_list_entry); + + qh->channel = hc; + + qtd->in_process = 1; + + /* + * Use usb_pipedevice to determine device address. This address is + * 0 before the SET_ADDRESS command and the correct address afterward. + */ + hc->dev_addr = dwc_otg_hcd_get_dev_addr(&urb->pipe_info); + hc->ep_num = dwc_otg_hcd_get_ep_num(&urb->pipe_info); + hc->speed = qh->dev_speed; + hc->max_packet = dwc_max_packet(qh->maxp); + + hc->xfer_started = 0; + hc->halt_status = DWC_OTG_HC_XFER_NO_HALT_STATUS; + hc->error_state = (qtd->error_count > 0); + hc->halt_on_queue = 0; + hc->halt_pending = 0; + hc->requests = 0; + + /* + * The following values may be modified in the transfer type section + * below. The xfer_len value may be reduced when the transfer is + * started to accommodate the max widths of the XferSize and PktCnt + * fields in the HCTSIZn register. + */ + + hc->ep_is_in = (dwc_otg_hcd_is_pipe_in(&urb->pipe_info) != 0); + if (hc->ep_is_in) { + hc->do_ping = 0; + } else { + hc->do_ping = qh->ping_state; + } + + hc->data_pid_start = qh->data_toggle; + hc->multi_count = 1; + + if (hcd->core_if->dma_enable) { + hc->xfer_buff = (uint8_t *) urb->dma + urb->actual_length; + + /* For non-dword aligned case */ + if (((unsigned long)hc->xfer_buff & 0x3) + && !hcd->core_if->dma_desc_enable) { + ptr = (uint8_t *) urb->buf + urb->actual_length; + } + } else { + hc->xfer_buff = (uint8_t *) urb->buf + urb->actual_length; + } + hc->xfer_len = urb->length - urb->actual_length; + hc->xfer_count = 0; + + /* + * Set the split attributes + */ + hc->do_split = 0; + if (qh->do_split) { + uint32_t hub_addr, port_addr; + hc->do_split = 1; + hc->xact_pos = qtd->isoc_split_pos; + /* We don't need to do complete splits anymore */ +// if(fiq_fsm_enable) + if (0) + hc->complete_split = qtd->complete_split = 0; + else + hc->complete_split = qtd->complete_split; + + hcd->fops->hub_info(hcd, urb->priv, &hub_addr, &port_addr); + hc->hub_addr = (uint8_t) hub_addr; + hc->port_addr = (uint8_t) port_addr; + } + + switch (dwc_otg_hcd_get_pipe_type(&urb->pipe_info)) { + case UE_CONTROL: + hc->ep_type = DWC_OTG_EP_TYPE_CONTROL; + switch (qtd->control_phase) { + case DWC_OTG_CONTROL_SETUP: + DWC_DEBUGPL(DBG_HCDV, " Control setup transaction\n"); + hc->do_ping = 0; + hc->ep_is_in = 0; + hc->data_pid_start = DWC_OTG_HC_PID_SETUP; + if (hcd->core_if->dma_enable) { + hc->xfer_buff = (uint8_t *) urb->setup_dma; + } else { + hc->xfer_buff = (uint8_t *) urb->setup_packet; + } + hc->xfer_len = 8; + ptr = NULL; + break; + case DWC_OTG_CONTROL_DATA: + DWC_DEBUGPL(DBG_HCDV, " Control data transaction\n"); + hc->data_pid_start = qtd->data_toggle; + break; + case DWC_OTG_CONTROL_STATUS: + /* + * Direction is opposite of data direction or IN if no + * data. + */ + DWC_DEBUGPL(DBG_HCDV, " Control status transaction\n"); + if (urb->length == 0) { + hc->ep_is_in = 1; + } else { + hc->ep_is_in = + dwc_otg_hcd_is_pipe_out(&urb->pipe_info); + } + if (hc->ep_is_in) { + hc->do_ping = 0; + } + + hc->data_pid_start = DWC_OTG_HC_PID_DATA1; + + hc->xfer_len = 0; + if (hcd->core_if->dma_enable) { + hc->xfer_buff = (uint8_t *) hcd->status_buf_dma; + } else { + hc->xfer_buff = (uint8_t *) hcd->status_buf; + } + ptr = NULL; + break; + } + break; + case UE_BULK: + hc->ep_type = DWC_OTG_EP_TYPE_BULK; + break; + case UE_INTERRUPT: + hc->ep_type = DWC_OTG_EP_TYPE_INTR; + break; + case UE_ISOCHRONOUS: + { + struct dwc_otg_hcd_iso_packet_desc *frame_desc; + + hc->ep_type = DWC_OTG_EP_TYPE_ISOC; + + if (hcd->core_if->dma_desc_enable) + break; + + frame_desc = &urb->iso_descs[qtd->isoc_frame_index]; + + frame_desc->status = 0; + + if (hcd->core_if->dma_enable) { + hc->xfer_buff = (uint8_t *) urb->dma; + } else { + hc->xfer_buff = (uint8_t *) urb->buf; + } + hc->xfer_buff += + frame_desc->offset + qtd->isoc_split_offset; + hc->xfer_len = + frame_desc->length - qtd->isoc_split_offset; + + /* For non-dword aligned buffers */ + if (((unsigned long)hc->xfer_buff & 0x3) + && hcd->core_if->dma_enable) { + ptr = + (uint8_t *) urb->buf + frame_desc->offset + + qtd->isoc_split_offset; + } else + ptr = NULL; + + if (hc->xact_pos == DWC_HCSPLIT_XACTPOS_ALL) { + if (hc->xfer_len <= 188) { + hc->xact_pos = DWC_HCSPLIT_XACTPOS_ALL; + } else { + hc->xact_pos = + DWC_HCSPLIT_XACTPOS_BEGIN; + } + } + } + break; + } + /* non DWORD-aligned buffer case */ + if (ptr) { + uint32_t buf_size; + if (hc->ep_type != DWC_OTG_EP_TYPE_ISOC) { + buf_size = hcd->core_if->core_params->max_transfer_size; + } else { + buf_size = 4096; + } + if (!qh->dw_align_buf) { + qh->dw_align_buf = DWC_DMA_ALLOC_ATOMIC(buf_size, + &qh->dw_align_buf_dma); + if (!qh->dw_align_buf) { + DWC_ERROR + ("%s: Failed to allocate memory to handle " + "non-dword aligned buffer case\n", + __func__); + return; + } + } + if (!hc->ep_is_in) { + dwc_memcpy(qh->dw_align_buf, ptr, hc->xfer_len); + } + hc->align_buff = qh->dw_align_buf_dma; + } else { + hc->align_buff = 0; + } + + if (hc->ep_type == DWC_OTG_EP_TYPE_INTR || + hc->ep_type == DWC_OTG_EP_TYPE_ISOC) { + /* + * This value may be modified when the transfer is started to + * reflect the actual transfer length. + */ + hc->multi_count = dwc_hb_mult(qh->maxp); + } + + if (hcd->core_if->dma_desc_enable) + hc->desc_list_addr = qh->desc_list_dma; + + dwc_otg_hc_init(hcd->core_if, hc); + + local_irq_save(flags); + + if (fiq_enable) { + local_fiq_disable(); + fiq_fsm_spin_lock(&hcd->fiq_state->lock); + } + + /* Enable the top level host channel interrupt. */ + intr_enable = (1 << hc->hc_num); + DWC_MODIFY_REG32(&hcd->core_if->host_if->host_global_regs->haintmsk, 0, intr_enable); + + /* Make sure host channel interrupts are enabled. */ + gintmsk.b.hcintr = 1; + DWC_MODIFY_REG32(&hcd->core_if->core_global_regs->gintmsk, 0, gintmsk.d32); + + if (fiq_enable) { + fiq_fsm_spin_unlock(&hcd->fiq_state->lock); + local_fiq_enable(); + } + + local_irq_restore(flags); + hc->qh = qh; +} + + +/** + * fiq_fsm_transaction_suitable() - Test a QH for compatibility with the FIQ + * @qh: pointer to the endpoint's queue head + * + * Transaction start/end control flow is grafted onto the existing dwc_otg + * mechanisms, to avoid spaghettifying the functions more than they already are. + * This function's eligibility check is altered by debug parameter. + * + * Returns: 0 for unsuitable, 1 implies the FIQ can be enabled for this transaction. + */ + +int fiq_fsm_transaction_suitable(dwc_otg_qh_t *qh) +{ + if (qh->do_split) { + switch (qh->ep_type) { + case UE_CONTROL: + case UE_BULK: + if (fiq_fsm_mask & (1 << 0)) + return 1; + break; + case UE_INTERRUPT: + case UE_ISOCHRONOUS: + if (fiq_fsm_mask & (1 << 1)) + return 1; + break; + default: + break; + } + } else if (qh->ep_type == UE_ISOCHRONOUS) { + if (fiq_fsm_mask & (1 << 2)) { + /* HS ISOCH support. We test for compatibility: + * - DWORD aligned buffers + * - Must be at least 2 transfers (otherwise pointless to use the FIQ) + * If yes, then the fsm enqueue function will handle the state machine setup. + */ + dwc_otg_qtd_t *qtd = DWC_CIRCLEQ_FIRST(&qh->qtd_list); + dwc_otg_hcd_urb_t *urb = qtd->urb; + struct dwc_otg_hcd_iso_packet_desc (*iso_descs)[0] = &urb->iso_descs; + int nr_iso_frames = urb->packet_count; + int i; + uint32_t ptr; + + if (nr_iso_frames < 2) + return 0; + for (i = 0; i < nr_iso_frames; i++) { + ptr = urb->dma + iso_descs[i]->offset; + if (ptr & 0x3) { + printk_ratelimited("%s: Non-Dword aligned isochronous frame offset." + " Cannot queue FIQ-accelerated transfer to device %d endpoint %d\n", + __FUNCTION__, qh->channel->dev_addr, qh->channel->ep_num); + return 0; + } + } + return 1; + } + } + return 0; +} + +/** + * fiq_fsm_setup_periodic_dma() - Set up DMA bounce buffers + * @hcd: Pointer to the dwc_otg_hcd struct + * @qh: Pointer to the endpoint's queue head + * + * Periodic split transactions are transmitted modulo 188 bytes. + * This necessitates slicing data up into buckets for isochronous out + * and fixing up the DMA address for all IN transfers. + * + * Returns 1 if the DMA bounce buffers have been used, 0 if the default + * HC buffer has been used. + */ +int fiq_fsm_setup_periodic_dma(dwc_otg_hcd_t *hcd, struct fiq_channel_state *st, dwc_otg_qh_t *qh) + { + int frame_length, i = 0; + uint8_t *ptr = NULL; + dwc_hc_t *hc = qh->channel; + struct fiq_dma_blob *blob; + struct dwc_otg_hcd_iso_packet_desc *frame_desc; + + for (i = 0; i < 6; i++) { + st->dma_info.slot_len[i] = 255; + } + st->dma_info.index = 0; + i = 0; + if (hc->ep_is_in) { + /* + * Set dma_regs to bounce buffer. FIQ will update the + * state depending on transaction progress. + */ + blob = (struct fiq_dma_blob *) hcd->fiq_state->dma_base; + st->hcdma_copy.d32 = (uint32_t) &blob->channel[hc->hc_num].index[0].buf[0]; + /* Calculate the max number of CSPLITS such that the FIQ can time out + * a transaction if it fails. + */ + frame_length = st->hcchar_copy.b.mps; + do { + i++; + frame_length -= 188; + } while (frame_length >= 0); + st->nrpackets = i; + return 1; + } else { + if (qh->ep_type == UE_ISOCHRONOUS) { + + dwc_otg_qtd_t *qtd = DWC_CIRCLEQ_FIRST(&qh->qtd_list); + + frame_desc = &qtd->urb->iso_descs[qtd->isoc_frame_index]; + frame_length = frame_desc->length; + + /* Virtual address for bounce buffers */ + blob = hcd->fiq_dmab; + + ptr = qtd->urb->buf + frame_desc->offset; + if (frame_length == 0) { + /* + * for isochronous transactions, we must still transmit a packet + * even if the length is zero. + */ + st->dma_info.slot_len[0] = 0; + st->nrpackets = 1; + } else { + do { + if (frame_length <= 188) { + dwc_memcpy(&blob->channel[hc->hc_num].index[i].buf[0], ptr, frame_length); + st->dma_info.slot_len[i] = frame_length; + ptr += frame_length; + } else { + dwc_memcpy(&blob->channel[hc->hc_num].index[i].buf[0], ptr, 188); + st->dma_info.slot_len[i] = 188; + ptr += 188; + } + i++; + frame_length -= 188; + } while (frame_length > 0); + st->nrpackets = i; + } + ptr = qtd->urb->buf + frame_desc->offset; + /* Point the HC at the DMA address of the bounce buffers */ + blob = (struct fiq_dma_blob *) hcd->fiq_state->dma_base; + st->hcdma_copy.d32 = (uint32_t) &blob->channel[hc->hc_num].index[0].buf[0]; + + /* fixup xfersize to the actual packet size */ + st->hctsiz_copy.b.pid = 0; + st->hctsiz_copy.b.xfersize = st->dma_info.slot_len[0]; + return 1; + } else { + /* For interrupt, single OUT packet required, goes in the SSPLIT from hc_buff. */ + return 0; + } + } +} + +/* + * Pushing a periodic request into the queue near the EOF1 point + * in a microframe causes erroneous behaviour (frmovrun) interrupt. + * Usually, the request goes out on the bus causing a transfer but + * the core does not transfer the data to memory. + * This guard interval (in number of 60MHz clocks) is required which + * must cater for CPU latency between reading the value and enabling + * the channel. + */ +#define PERIODIC_FRREM_BACKOFF 1000 + +int fiq_fsm_queue_isoc_transaction(dwc_otg_hcd_t *hcd, dwc_otg_qh_t *qh) +{ + dwc_hc_t *hc = qh->channel; + dwc_otg_hc_regs_t *hc_regs = hcd->core_if->host_if->hc_regs[hc->hc_num]; + dwc_otg_qtd_t *qtd = DWC_CIRCLEQ_FIRST(&qh->qtd_list); + int frame; + struct fiq_channel_state *st = &hcd->fiq_state->channel[hc->hc_num]; + int xfer_len, nrpackets; + hcdma_data_t hcdma; + hfnum_data_t hfnum; + + if (st->fsm != FIQ_PASSTHROUGH) + return 0; + + st->nr_errors = 0; + + st->hcchar_copy.d32 = 0; + st->hcchar_copy.b.mps = hc->max_packet; + st->hcchar_copy.b.epdir = hc->ep_is_in; + st->hcchar_copy.b.devaddr = hc->dev_addr; + st->hcchar_copy.b.epnum = hc->ep_num; + st->hcchar_copy.b.eptype = hc->ep_type; + + st->hcintmsk_copy.b.chhltd = 1; + + frame = dwc_otg_hcd_get_frame_number(hcd); + st->hcchar_copy.b.oddfrm = (frame & 0x1) ? 0 : 1; + + st->hcchar_copy.b.lspddev = 0; + /* Enable the channel later as a final register write. */ + + st->hcsplt_copy.d32 = 0; + + st->hs_isoc_info.iso_desc = (struct dwc_otg_hcd_iso_packet_desc *) &qtd->urb->iso_descs; + st->hs_isoc_info.nrframes = qtd->urb->packet_count; + /* grab the next DMA address offset from the array */ + st->hcdma_copy.d32 = qtd->urb->dma; + hcdma.d32 = st->hcdma_copy.d32 + st->hs_isoc_info.iso_desc[0].offset; + + /* We need to set multi_count. This is a bit tricky - has to be set per-transaction as + * the core needs to be told to send the correct number. Caution: for IN transfers, + * this is always set to the maximum size of the endpoint. */ + xfer_len = st->hs_isoc_info.iso_desc[0].length; + nrpackets = (xfer_len + st->hcchar_copy.b.mps - 1) / st->hcchar_copy.b.mps; + if (nrpackets == 0) + nrpackets = 1; + st->hcchar_copy.b.multicnt = nrpackets; + st->hctsiz_copy.b.pktcnt = nrpackets; + + /* Initial PID also needs to be set */ + if (st->hcchar_copy.b.epdir == 0) { + st->hctsiz_copy.b.xfersize = xfer_len; + switch (st->hcchar_copy.b.multicnt) { + case 1: + st->hctsiz_copy.b.pid = DWC_PID_DATA0; + break; + case 2: + case 3: + st->hctsiz_copy.b.pid = DWC_PID_MDATA; + break; + } + + } else { + st->hctsiz_copy.b.xfersize = nrpackets * st->hcchar_copy.b.mps; + switch (st->hcchar_copy.b.multicnt) { + case 1: + st->hctsiz_copy.b.pid = DWC_PID_DATA0; + break; + case 2: + st->hctsiz_copy.b.pid = DWC_PID_DATA1; + break; + case 3: + st->hctsiz_copy.b.pid = DWC_PID_DATA2; + break; + } + } + + st->hs_isoc_info.stride = qh->interval; + st->uframe_sleeps = 0; + + fiq_print(FIQDBG_INT, hcd->fiq_state, "FSMQ %01d ", hc->hc_num); + fiq_print(FIQDBG_INT, hcd->fiq_state, "%08x", st->hcchar_copy.d32); + fiq_print(FIQDBG_INT, hcd->fiq_state, "%08x", st->hctsiz_copy.d32); + fiq_print(FIQDBG_INT, hcd->fiq_state, "%08x", st->hcdma_copy.d32); + hfnum.d32 = DWC_READ_REG32(&hcd->core_if->host_if->host_global_regs->hfnum); + local_fiq_disable(); + fiq_fsm_spin_lock(&hcd->fiq_state->lock); + DWC_WRITE_REG32(&hc_regs->hctsiz, st->hctsiz_copy.d32); + DWC_WRITE_REG32(&hc_regs->hcsplt, st->hcsplt_copy.d32); + DWC_WRITE_REG32(&hc_regs->hcdma, st->hcdma_copy.d32); + DWC_WRITE_REG32(&hc_regs->hcchar, st->hcchar_copy.d32); + DWC_WRITE_REG32(&hc_regs->hcintmsk, st->hcintmsk_copy.d32); + if (hfnum.b.frrem < PERIODIC_FRREM_BACKOFF) { + /* Prevent queueing near EOF1. Bad things happen if a periodic + * split transaction is queued very close to EOF. SOF interrupt handler + * will wake this channel at the next interrupt. + */ + st->fsm = FIQ_HS_ISOC_SLEEPING; + st->uframe_sleeps = 1; + } else { + st->fsm = FIQ_HS_ISOC_TURBO; + st->hcchar_copy.b.chen = 1; + DWC_WRITE_REG32(&hc_regs->hcchar, st->hcchar_copy.d32); + } + mb(); + st->hcchar_copy.b.chen = 0; + fiq_fsm_spin_unlock(&hcd->fiq_state->lock); + local_fiq_enable(); + return 0; +} + + +/** + * fiq_fsm_queue_split_transaction() - Set up a host channel and FIQ state + * @hcd: Pointer to the dwc_otg_hcd struct + * @qh: Pointer to the endpoint's queue head + * + * This overrides the dwc_otg driver's normal method of queueing a transaction. + * Called from dwc_otg_hcd_queue_transactions(), this performs specific setup + * for the nominated host channel. + * + * For periodic transfers, it also peeks at the FIQ state to see if an immediate + * start is possible. If not, then the FIQ is left to start the transfer. + */ +int fiq_fsm_queue_split_transaction(dwc_otg_hcd_t *hcd, dwc_otg_qh_t *qh) +{ + int start_immediate = 1, i; + hfnum_data_t hfnum; + dwc_hc_t *hc = qh->channel; + dwc_otg_hc_regs_t *hc_regs = hcd->core_if->host_if->hc_regs[hc->hc_num]; + /* Program HC registers, setup FIQ_state, examine FIQ if periodic, start transfer (not if uframe 5) */ + int hub_addr, port_addr, frame, uframe; + struct fiq_channel_state *st = &hcd->fiq_state->channel[hc->hc_num]; + + if (st->fsm != FIQ_PASSTHROUGH) + return 0; + st->nr_errors = 0; + + st->hcchar_copy.d32 = 0; + st->hcchar_copy.b.mps = hc->max_packet; + st->hcchar_copy.b.epdir = hc->ep_is_in; + st->hcchar_copy.b.devaddr = hc->dev_addr; + st->hcchar_copy.b.epnum = hc->ep_num; + st->hcchar_copy.b.eptype = hc->ep_type; + if (hc->ep_type & 0x1) { + if (hc->ep_is_in) + st->hcchar_copy.b.multicnt = 3; + else + /* Docs say set this to 1, but driver sets to 0! */ + st->hcchar_copy.b.multicnt = 0; + } else { + st->hcchar_copy.b.multicnt = 1; + st->hcchar_copy.b.oddfrm = 0; + } + st->hcchar_copy.b.lspddev = (hc->speed == DWC_OTG_EP_SPEED_LOW) ? 1 : 0; + /* Enable the channel later as a final register write. */ + + st->hcsplt_copy.d32 = 0; + if(qh->do_split) { + hcd->fops->hub_info(hcd, DWC_CIRCLEQ_FIRST(&qh->qtd_list)->urb->priv, &hub_addr, &port_addr); + st->hcsplt_copy.b.compsplt = 0; + st->hcsplt_copy.b.spltena = 1; + // XACTPOS is for isoc-out only but needs initialising anyway. + st->hcsplt_copy.b.xactpos = ISOC_XACTPOS_ALL; + if((qh->ep_type == DWC_OTG_EP_TYPE_ISOC) && (!qh->ep_is_in)) { + /* For packetsize 0 < L < 188, ISOC_XACTPOS_ALL. + * for longer than this, ISOC_XACTPOS_BEGIN and the FIQ + * will update as necessary. + */ + if (hc->xfer_len > 188) { + st->hcsplt_copy.b.xactpos = ISOC_XACTPOS_BEGIN; + } + } + st->hcsplt_copy.b.hubaddr = (uint8_t) hub_addr; + st->hcsplt_copy.b.prtaddr = (uint8_t) port_addr; + st->hub_addr = hub_addr; + st->port_addr = port_addr; + } + + st->hctsiz_copy.d32 = 0; + st->hctsiz_copy.b.dopng = 0; + st->hctsiz_copy.b.pid = hc->data_pid_start; + + if (hc->ep_is_in || (hc->xfer_len > hc->max_packet)) { + hc->xfer_len = hc->max_packet; + } else if (!hc->ep_is_in && (hc->xfer_len > 188)) { + hc->xfer_len = 188; + } + st->hctsiz_copy.b.xfersize = hc->xfer_len; + + st->hctsiz_copy.b.pktcnt = 1; + + if (hc->ep_type & 0x1) { + /* + * For potentially multi-packet transfers, must use the DMA bounce buffers. For IN transfers, + * the DMA address is the address of the first 188byte slot buffer in the bounce buffer array. + * For multi-packet OUT transfers, we need to copy the data into the bounce buffer array so the FIQ can punt + * the right address out as necessary. hc->xfer_buff and hc->xfer_len have already been set + * in assign_and_init_hc(), but this is for the eventual transaction completion only. The FIQ + * must not touch internal driver state. + */ + if(!fiq_fsm_setup_periodic_dma(hcd, st, qh)) { + if (hc->align_buff) { + st->hcdma_copy.d32 = hc->align_buff; + } else { + st->hcdma_copy.d32 = ((unsigned long) hc->xfer_buff & 0xFFFFFFFF); + } + } + } else { + if (hc->align_buff) { + st->hcdma_copy.d32 = hc->align_buff; + } else { + st->hcdma_copy.d32 = ((unsigned long) hc->xfer_buff & 0xFFFFFFFF); + } + } + /* The FIQ depends upon no other interrupts being enabled except channel halt. + * Fixup channel interrupt mask. */ + st->hcintmsk_copy.d32 = 0; + st->hcintmsk_copy.b.chhltd = 1; + st->hcintmsk_copy.b.ahberr = 1; + + /* Hack courtesy of FreeBSD: apparently forcing Interrupt Split transactions + * as Control puts the transfer into the non-periodic request queue and the + * non-periodic handler in the hub. Makes things lots easier. + */ + if ((fiq_fsm_mask & 0x8) && hc->ep_type == UE_INTERRUPT) { + st->hcchar_copy.b.multicnt = 0; + st->hcchar_copy.b.oddfrm = 0; + st->hcchar_copy.b.eptype = UE_CONTROL; + if (hc->align_buff) { + st->hcdma_copy.d32 = hc->align_buff; + } else { + st->hcdma_copy.d32 = ((unsigned long) hc->xfer_buff & 0xFFFFFFFF); + } + } + DWC_WRITE_REG32(&hc_regs->hcdma, st->hcdma_copy.d32); + DWC_WRITE_REG32(&hc_regs->hctsiz, st->hctsiz_copy.d32); + DWC_WRITE_REG32(&hc_regs->hcsplt, st->hcsplt_copy.d32); + DWC_WRITE_REG32(&hc_regs->hcchar, st->hcchar_copy.d32); + DWC_WRITE_REG32(&hc_regs->hcintmsk, st->hcintmsk_copy.d32); + + local_fiq_disable(); + fiq_fsm_spin_lock(&hcd->fiq_state->lock); + + if (hc->ep_type & 0x1) { + hfnum.d32 = DWC_READ_REG32(&hcd->core_if->host_if->host_global_regs->hfnum); + frame = (hfnum.b.frnum & ~0x7) >> 3; + uframe = hfnum.b.frnum & 0x7; + if (hfnum.b.frrem < PERIODIC_FRREM_BACKOFF) { + /* Prevent queueing near EOF1. Bad things happen if a periodic + * split transaction is queued very close to EOF. + */ + start_immediate = 0; + } else if (uframe == 5) { + start_immediate = 0; + } else if (hc->ep_type == UE_ISOCHRONOUS && !hc->ep_is_in) { + start_immediate = 0; + } else if (hc->ep_is_in && fiq_fsm_too_late(hcd->fiq_state, hc->hc_num)) { + start_immediate = 0; + } else { + /* Search through all host channels to determine if a transaction + * is currently in progress */ + for (i = 0; i < hcd->core_if->core_params->host_channels; i++) { + if (i == hc->hc_num || hcd->fiq_state->channel[i].fsm == FIQ_PASSTHROUGH) + continue; + switch (hcd->fiq_state->channel[i].fsm) { + /* TT is reserved for channels that are in the middle of a periodic + * split transaction. + */ + case FIQ_PER_SSPLIT_STARTED: + case FIQ_PER_CSPLIT_WAIT: + case FIQ_PER_CSPLIT_NYET1: + case FIQ_PER_CSPLIT_POLL: + case FIQ_PER_ISO_OUT_ACTIVE: + case FIQ_PER_ISO_OUT_LAST: + if (hcd->fiq_state->channel[i].hub_addr == hub_addr && + hcd->fiq_state->channel[i].port_addr == port_addr) { + start_immediate = 0; + } + break; + default: + break; + } + if (!start_immediate) + break; + } + } + } + if ((fiq_fsm_mask & 0x8) && hc->ep_type == UE_INTERRUPT) + start_immediate = 1; + + fiq_print(FIQDBG_INT, hcd->fiq_state, "FSMQ %01d %01d", hc->hc_num, start_immediate); + fiq_print(FIQDBG_INT, hcd->fiq_state, "%08d", hfnum.b.frrem); + //fiq_print(FIQDBG_INT, hcd->fiq_state, "H:%02dP:%02d", hub_addr, port_addr); + //fiq_print(FIQDBG_INT, hcd->fiq_state, "%08x", st->hctsiz_copy.d32); + //fiq_print(FIQDBG_INT, hcd->fiq_state, "%08x", st->hcdma_copy.d32); + switch (hc->ep_type) { + case UE_CONTROL: + case UE_BULK: + st->fsm = FIQ_NP_SSPLIT_STARTED; + break; + case UE_ISOCHRONOUS: + if (hc->ep_is_in) { + if (start_immediate) { + st->fsm = FIQ_PER_SSPLIT_STARTED; + } else { + st->fsm = FIQ_PER_SSPLIT_QUEUED; + } + } else { + if (start_immediate) { + /* Single-isoc OUT packets don't require FIQ involvement */ + if (st->nrpackets == 1) { + st->fsm = FIQ_PER_ISO_OUT_LAST; + } else { + st->fsm = FIQ_PER_ISO_OUT_ACTIVE; + } + } else { + st->fsm = FIQ_PER_ISO_OUT_PENDING; + } + } + break; + case UE_INTERRUPT: + if (fiq_fsm_mask & 0x8) { + st->fsm = FIQ_NP_SSPLIT_STARTED; + } else if (start_immediate) { + st->fsm = FIQ_PER_SSPLIT_STARTED; + } else { + st->fsm = FIQ_PER_SSPLIT_QUEUED; + } + default: + break; + } + if (start_immediate) { + /* Set the oddfrm bit as close as possible to actual queueing */ + frame = dwc_otg_hcd_get_frame_number(hcd); + st->expected_uframe = (frame + 1) & 0x3FFF; + st->hcchar_copy.b.oddfrm = (frame & 0x1) ? 0 : 1; + st->hcchar_copy.b.chen = 1; + DWC_WRITE_REG32(&hc_regs->hcchar, st->hcchar_copy.d32); + } + mb(); + fiq_fsm_spin_unlock(&hcd->fiq_state->lock); + local_fiq_enable(); + return 0; +} + + +/** + * This function selects transactions from the HCD transfer schedule and + * assigns them to available host channels. It is called from HCD interrupt + * handler functions. + * + * @param hcd The HCD state structure. + * + * @return The types of new transactions that were assigned to host channels. + */ +dwc_otg_transaction_type_e dwc_otg_hcd_select_transactions(dwc_otg_hcd_t * hcd) +{ + dwc_list_link_t *qh_ptr; + dwc_otg_qh_t *qh; + int num_channels; + dwc_irqflags_t flags; + dwc_spinlock_t *channel_lock = hcd->channel_lock; + dwc_otg_transaction_type_e ret_val = DWC_OTG_TRANSACTION_NONE; + +#ifdef DEBUG_HOST_CHANNELS + last_sel_trans_num_per_scheduled = 0; + last_sel_trans_num_nonper_scheduled = 0; + last_sel_trans_num_avail_hc_at_start = hcd->available_host_channels; +#endif /* DEBUG_HOST_CHANNELS */ + + /* Process entries in the periodic ready list. */ + qh_ptr = DWC_LIST_FIRST(&hcd->periodic_sched_ready); + + while (qh_ptr != &hcd->periodic_sched_ready && + !DWC_CIRCLEQ_EMPTY(&hcd->free_hc_list)) { + + qh = DWC_LIST_ENTRY(qh_ptr, dwc_otg_qh_t, qh_list_entry); + + if (microframe_schedule) { + // Make sure we leave one channel for non periodic transactions. + DWC_SPINLOCK_IRQSAVE(channel_lock, &flags); + if (hcd->available_host_channels <= 1) { + DWC_SPINUNLOCK_IRQRESTORE(channel_lock, flags); + break; + } + hcd->available_host_channels--; + DWC_SPINUNLOCK_IRQRESTORE(channel_lock, flags); +#ifdef DEBUG_HOST_CHANNELS + last_sel_trans_num_per_scheduled++; +#endif /* DEBUG_HOST_CHANNELS */ + } + qh = DWC_LIST_ENTRY(qh_ptr, dwc_otg_qh_t, qh_list_entry); + assign_and_init_hc(hcd, qh); + + /* + * Move the QH from the periodic ready schedule to the + * periodic assigned schedule. + */ + qh_ptr = DWC_LIST_NEXT(qh_ptr); + DWC_SPINLOCK_IRQSAVE(channel_lock, &flags); + DWC_LIST_MOVE_HEAD(&hcd->periodic_sched_assigned, + &qh->qh_list_entry); + DWC_SPINUNLOCK_IRQRESTORE(channel_lock, flags); + } + + /* + * Process entries in the inactive portion of the non-periodic + * schedule. Some free host channels may not be used if they are + * reserved for periodic transfers. + */ + qh_ptr = hcd->non_periodic_sched_inactive.next; + num_channels = hcd->core_if->core_params->host_channels; + while (qh_ptr != &hcd->non_periodic_sched_inactive && + (microframe_schedule || hcd->non_periodic_channels < + num_channels - hcd->periodic_channels) && + !DWC_CIRCLEQ_EMPTY(&hcd->free_hc_list)) { + + qh = DWC_LIST_ENTRY(qh_ptr, dwc_otg_qh_t, qh_list_entry); + /* + * Check to see if this is a NAK'd retransmit, in which case ignore for retransmission + * we hold off on bulk retransmissions to reduce NAK interrupt overhead for full-speed + * cheeky devices that just hold off using NAKs + */ + if (fiq_enable && nak_holdoff && qh->do_split) { + if (qh->nak_frame != 0xffff) { + uint16_t next_frame = dwc_frame_num_inc(qh->nak_frame, (qh->ep_type == UE_BULK) ? nak_holdoff : 8); + uint16_t frame = dwc_otg_hcd_get_frame_number(hcd); + if (dwc_frame_num_le(frame, next_frame)) { + if(dwc_frame_num_le(next_frame, hcd->fiq_state->next_sched_frame)) { + hcd->fiq_state->next_sched_frame = next_frame; + } + qh_ptr = DWC_LIST_NEXT(qh_ptr); + continue; + } else { + qh->nak_frame = 0xFFFF; + } + } + } + + if (microframe_schedule) { + DWC_SPINLOCK_IRQSAVE(channel_lock, &flags); + if (hcd->available_host_channels < 1) { + DWC_SPINUNLOCK_IRQRESTORE(channel_lock, flags); + break; + } + hcd->available_host_channels--; + DWC_SPINUNLOCK_IRQRESTORE(channel_lock, flags); +#ifdef DEBUG_HOST_CHANNELS + last_sel_trans_num_nonper_scheduled++; +#endif /* DEBUG_HOST_CHANNELS */ + } + + assign_and_init_hc(hcd, qh); + + /* + * Move the QH from the non-periodic inactive schedule to the + * non-periodic active schedule. + */ + qh_ptr = DWC_LIST_NEXT(qh_ptr); + DWC_SPINLOCK_IRQSAVE(channel_lock, &flags); + DWC_LIST_MOVE_HEAD(&hcd->non_periodic_sched_active, + &qh->qh_list_entry); + DWC_SPINUNLOCK_IRQRESTORE(channel_lock, flags); + + + if (!microframe_schedule) + hcd->non_periodic_channels++; + } + /* we moved a non-periodic QH to the active schedule. If the inactive queue is empty, + * stop the FIQ from kicking us. We could potentially still have elements here if we + * ran out of host channels. + */ + if (fiq_enable) { + if (DWC_LIST_EMPTY(&hcd->non_periodic_sched_inactive)) { + hcd->fiq_state->kick_np_queues = 0; + } else { + /* For each entry remaining in the NP inactive queue, + * if this a NAK'd retransmit then don't set the kick flag. + */ + if(nak_holdoff) { + DWC_LIST_FOREACH(qh_ptr, &hcd->non_periodic_sched_inactive) { + qh = DWC_LIST_ENTRY(qh_ptr, dwc_otg_qh_t, qh_list_entry); + if (qh->nak_frame == 0xFFFF) { + hcd->fiq_state->kick_np_queues = 1; + } + } + } + } + } + if(!DWC_LIST_EMPTY(&hcd->periodic_sched_assigned)) + ret_val |= DWC_OTG_TRANSACTION_PERIODIC; + + if(!DWC_LIST_EMPTY(&hcd->non_periodic_sched_active)) + ret_val |= DWC_OTG_TRANSACTION_NON_PERIODIC; + + +#ifdef DEBUG_HOST_CHANNELS + last_sel_trans_num_avail_hc_at_end = hcd->available_host_channels; +#endif /* DEBUG_HOST_CHANNELS */ + return ret_val; +} + +/** + * Attempts to queue a single transaction request for a host channel + * associated with either a periodic or non-periodic transfer. This function + * assumes that there is space available in the appropriate request queue. For + * an OUT transfer or SETUP transaction in Slave mode, it checks whether space + * is available in the appropriate Tx FIFO. + * + * @param hcd The HCD state structure. + * @param hc Host channel descriptor associated with either a periodic or + * non-periodic transfer. + * @param fifo_dwords_avail Number of DWORDs available in the periodic Tx + * FIFO for periodic transfers or the non-periodic Tx FIFO for non-periodic + * transfers. + * + * @return 1 if a request is queued and more requests may be needed to + * complete the transfer, 0 if no more requests are required for this + * transfer, -1 if there is insufficient space in the Tx FIFO. + */ +static int queue_transaction(dwc_otg_hcd_t * hcd, + dwc_hc_t * hc, uint16_t fifo_dwords_avail) +{ + int retval; + + if (hcd->core_if->dma_enable) { + if (hcd->core_if->dma_desc_enable) { + if (!hc->xfer_started + || (hc->ep_type == DWC_OTG_EP_TYPE_ISOC)) { + dwc_otg_hcd_start_xfer_ddma(hcd, hc->qh); + hc->qh->ping_state = 0; + } + } else if (!hc->xfer_started) { + if (fiq_fsm_enable && hc->error_state) { + hcd->fiq_state->channel[hc->hc_num].nr_errors = + DWC_CIRCLEQ_FIRST(&hc->qh->qtd_list)->error_count; + hcd->fiq_state->channel[hc->hc_num].fsm = + FIQ_PASSTHROUGH_ERRORSTATE; + } + dwc_otg_hc_start_transfer(hcd->core_if, hc); + hc->qh->ping_state = 0; + } + retval = 0; + } else if (hc->halt_pending) { + /* Don't queue a request if the channel has been halted. */ + retval = 0; + } else if (hc->halt_on_queue) { + dwc_otg_hc_halt(hcd->core_if, hc, hc->halt_status); + retval = 0; + } else if (hc->do_ping) { + if (!hc->xfer_started) { + dwc_otg_hc_start_transfer(hcd->core_if, hc); + } + retval = 0; + } else if (!hc->ep_is_in || hc->data_pid_start == DWC_OTG_HC_PID_SETUP) { + if ((fifo_dwords_avail * 4) >= hc->max_packet) { + if (!hc->xfer_started) { + dwc_otg_hc_start_transfer(hcd->core_if, hc); + retval = 1; + } else { + retval = + dwc_otg_hc_continue_transfer(hcd->core_if, + hc); + } + } else { + retval = -1; + } + } else { + if (!hc->xfer_started) { + dwc_otg_hc_start_transfer(hcd->core_if, hc); + retval = 1; + } else { + retval = dwc_otg_hc_continue_transfer(hcd->core_if, hc); + } + } + + return retval; +} + +/** + * Processes periodic channels for the next frame and queues transactions for + * these channels to the DWC_otg controller. After queueing transactions, the + * Periodic Tx FIFO Empty interrupt is enabled if there are more transactions + * to queue as Periodic Tx FIFO or request queue space becomes available. + * Otherwise, the Periodic Tx FIFO Empty interrupt is disabled. + */ +static void process_periodic_channels(dwc_otg_hcd_t * hcd) +{ + hptxsts_data_t tx_status; + dwc_list_link_t *qh_ptr; + dwc_otg_qh_t *qh; + int status = 0; + int no_queue_space = 0; + int no_fifo_space = 0; + + dwc_otg_host_global_regs_t *host_regs; + host_regs = hcd->core_if->host_if->host_global_regs; + + DWC_DEBUGPL(DBG_HCDV, "Queue periodic transactions\n"); +#ifdef DEBUG + tx_status.d32 = DWC_READ_REG32(&host_regs->hptxsts); + DWC_DEBUGPL(DBG_HCDV, + " P Tx Req Queue Space Avail (before queue): %d\n", + tx_status.b.ptxqspcavail); + DWC_DEBUGPL(DBG_HCDV, " P Tx FIFO Space Avail (before queue): %d\n", + tx_status.b.ptxfspcavail); +#endif + + qh_ptr = hcd->periodic_sched_assigned.next; + while (qh_ptr != &hcd->periodic_sched_assigned) { + tx_status.d32 = DWC_READ_REG32(&host_regs->hptxsts); + if (tx_status.b.ptxqspcavail == 0) { + no_queue_space = 1; + break; + } + + qh = DWC_LIST_ENTRY(qh_ptr, dwc_otg_qh_t, qh_list_entry); + + // Do not send a split start transaction any later than frame .6 + // Note, we have to schedule a periodic in .5 to make it go in .6 + if(fiq_fsm_enable && qh->do_split && ((dwc_otg_hcd_get_frame_number(hcd) + 1) & 7) > 6) + { + qh_ptr = qh_ptr->next; + hcd->fiq_state->next_sched_frame = dwc_otg_hcd_get_frame_number(hcd) | 7; + continue; + } + + if (fiq_fsm_enable && fiq_fsm_transaction_suitable(qh)) { + if (qh->do_split) + fiq_fsm_queue_split_transaction(hcd, qh); + else + fiq_fsm_queue_isoc_transaction(hcd, qh); + } else { + + /* + * Set a flag if we're queueing high-bandwidth in slave mode. + * The flag prevents any halts to get into the request queue in + * the middle of multiple high-bandwidth packets getting queued. + */ + if (!hcd->core_if->dma_enable && qh->channel->multi_count > 1) { + hcd->core_if->queuing_high_bandwidth = 1; + } + status = queue_transaction(hcd, qh->channel, + tx_status.b.ptxfspcavail); + if (status < 0) { + no_fifo_space = 1; + break; + } + } + + /* + * In Slave mode, stay on the current transfer until there is + * nothing more to do or the high-bandwidth request count is + * reached. In DMA mode, only need to queue one request. The + * controller automatically handles multiple packets for + * high-bandwidth transfers. + */ + if (hcd->core_if->dma_enable || status == 0 || + qh->channel->requests == qh->channel->multi_count) { + qh_ptr = qh_ptr->next; + /* + * Move the QH from the periodic assigned schedule to + * the periodic queued schedule. + */ + DWC_LIST_MOVE_HEAD(&hcd->periodic_sched_queued, + &qh->qh_list_entry); + + /* done queuing high bandwidth */ + hcd->core_if->queuing_high_bandwidth = 0; + } + } + + if (!hcd->core_if->dma_enable) { + dwc_otg_core_global_regs_t *global_regs; + gintmsk_data_t intr_mask = {.d32 = 0 }; + + global_regs = hcd->core_if->core_global_regs; + intr_mask.b.ptxfempty = 1; +#ifdef DEBUG + tx_status.d32 = DWC_READ_REG32(&host_regs->hptxsts); + DWC_DEBUGPL(DBG_HCDV, + " P Tx Req Queue Space Avail (after queue): %d\n", + tx_status.b.ptxqspcavail); + DWC_DEBUGPL(DBG_HCDV, + " P Tx FIFO Space Avail (after queue): %d\n", + tx_status.b.ptxfspcavail); +#endif + if (!DWC_LIST_EMPTY(&hcd->periodic_sched_assigned) || + no_queue_space || no_fifo_space) { + /* + * May need to queue more transactions as the request + * queue or Tx FIFO empties. Enable the periodic Tx + * FIFO empty interrupt. (Always use the half-empty + * level to ensure that new requests are loaded as + * soon as possible.) + */ + DWC_MODIFY_REG32(&global_regs->gintmsk, 0, + intr_mask.d32); + } else { + /* + * Disable the Tx FIFO empty interrupt since there are + * no more transactions that need to be queued right + * now. This function is called from interrupt + * handlers to queue more transactions as transfer + * states change. + */ + DWC_MODIFY_REG32(&global_regs->gintmsk, intr_mask.d32, + 0); + } + } +} + +/** + * Processes active non-periodic channels and queues transactions for these + * channels to the DWC_otg controller. After queueing transactions, the NP Tx + * FIFO Empty interrupt is enabled if there are more transactions to queue as + * NP Tx FIFO or request queue space becomes available. Otherwise, the NP Tx + * FIFO Empty interrupt is disabled. + */ +static void process_non_periodic_channels(dwc_otg_hcd_t * hcd) +{ + gnptxsts_data_t tx_status; + dwc_list_link_t *orig_qh_ptr; + dwc_otg_qh_t *qh; + int status; + int no_queue_space = 0; + int no_fifo_space = 0; + int more_to_do = 0; + + dwc_otg_core_global_regs_t *global_regs = + hcd->core_if->core_global_regs; + + DWC_DEBUGPL(DBG_HCDV, "Queue non-periodic transactions\n"); +#ifdef DEBUG + tx_status.d32 = DWC_READ_REG32(&global_regs->gnptxsts); + DWC_DEBUGPL(DBG_HCDV, + " NP Tx Req Queue Space Avail (before queue): %d\n", + tx_status.b.nptxqspcavail); + DWC_DEBUGPL(DBG_HCDV, " NP Tx FIFO Space Avail (before queue): %d\n", + tx_status.b.nptxfspcavail); +#endif + /* + * Keep track of the starting point. Skip over the start-of-list + * entry. + */ + if (hcd->non_periodic_qh_ptr == &hcd->non_periodic_sched_active) { + hcd->non_periodic_qh_ptr = hcd->non_periodic_qh_ptr->next; + } + orig_qh_ptr = hcd->non_periodic_qh_ptr; + + /* + * Process once through the active list or until no more space is + * available in the request queue or the Tx FIFO. + */ + do { + tx_status.d32 = DWC_READ_REG32(&global_regs->gnptxsts); + if (!hcd->core_if->dma_enable && tx_status.b.nptxqspcavail == 0) { + no_queue_space = 1; + break; + } + + qh = DWC_LIST_ENTRY(hcd->non_periodic_qh_ptr, dwc_otg_qh_t, + qh_list_entry); + + if(fiq_fsm_enable && fiq_fsm_transaction_suitable(qh)) { + fiq_fsm_queue_split_transaction(hcd, qh); + } else { + status = queue_transaction(hcd, qh->channel, + tx_status.b.nptxfspcavail); + + if (status > 0) { + more_to_do = 1; + } else if (status < 0) { + no_fifo_space = 1; + break; + } + } + /* Advance to next QH, skipping start-of-list entry. */ + hcd->non_periodic_qh_ptr = hcd->non_periodic_qh_ptr->next; + if (hcd->non_periodic_qh_ptr == &hcd->non_periodic_sched_active) { + hcd->non_periodic_qh_ptr = + hcd->non_periodic_qh_ptr->next; + } + + } while (hcd->non_periodic_qh_ptr != orig_qh_ptr); + + if (!hcd->core_if->dma_enable) { + gintmsk_data_t intr_mask = {.d32 = 0 }; + intr_mask.b.nptxfempty = 1; + +#ifdef DEBUG + tx_status.d32 = DWC_READ_REG32(&global_regs->gnptxsts); + DWC_DEBUGPL(DBG_HCDV, + " NP Tx Req Queue Space Avail (after queue): %d\n", + tx_status.b.nptxqspcavail); + DWC_DEBUGPL(DBG_HCDV, + " NP Tx FIFO Space Avail (after queue): %d\n", + tx_status.b.nptxfspcavail); +#endif + if (more_to_do || no_queue_space || no_fifo_space) { + /* + * May need to queue more transactions as the request + * queue or Tx FIFO empties. Enable the non-periodic + * Tx FIFO empty interrupt. (Always use the half-empty + * level to ensure that new requests are loaded as + * soon as possible.) + */ + DWC_MODIFY_REG32(&global_regs->gintmsk, 0, + intr_mask.d32); + } else { + /* + * Disable the Tx FIFO empty interrupt since there are + * no more transactions that need to be queued right + * now. This function is called from interrupt + * handlers to queue more transactions as transfer + * states change. + */ + DWC_MODIFY_REG32(&global_regs->gintmsk, intr_mask.d32, + 0); + } + } +} + +/** + * This function processes the currently active host channels and queues + * transactions for these channels to the DWC_otg controller. It is called + * from HCD interrupt handler functions. + * + * @param hcd The HCD state structure. + * @param tr_type The type(s) of transactions to queue (non-periodic, + * periodic, or both). + */ +void dwc_otg_hcd_queue_transactions(dwc_otg_hcd_t * hcd, + dwc_otg_transaction_type_e tr_type) +{ +#ifdef DEBUG_SOF + DWC_DEBUGPL(DBG_HCD, "Queue Transactions\n"); +#endif + /* Process host channels associated with periodic transfers. */ + if ((tr_type == DWC_OTG_TRANSACTION_PERIODIC || + tr_type == DWC_OTG_TRANSACTION_ALL) && + !DWC_LIST_EMPTY(&hcd->periodic_sched_assigned)) { + + process_periodic_channels(hcd); + } + + /* Process host channels associated with non-periodic transfers. */ + if (tr_type == DWC_OTG_TRANSACTION_NON_PERIODIC || + tr_type == DWC_OTG_TRANSACTION_ALL) { + if (!DWC_LIST_EMPTY(&hcd->non_periodic_sched_active)) { + process_non_periodic_channels(hcd); + } else { + /* + * Ensure NP Tx FIFO empty interrupt is disabled when + * there are no non-periodic transfers to process. + */ + gintmsk_data_t gintmsk = {.d32 = 0 }; + gintmsk.b.nptxfempty = 1; + + if (fiq_enable) { + local_fiq_disable(); + fiq_fsm_spin_lock(&hcd->fiq_state->lock); + DWC_MODIFY_REG32(&hcd->core_if->core_global_regs->gintmsk, gintmsk.d32, 0); + fiq_fsm_spin_unlock(&hcd->fiq_state->lock); + local_fiq_enable(); + } else { + DWC_MODIFY_REG32(&hcd->core_if->core_global_regs->gintmsk, gintmsk.d32, 0); + } + } + } +} + +#ifdef DWC_HS_ELECT_TST +/* + * Quick and dirty hack to implement the HS Electrical Test + * SINGLE_STEP_GET_DEVICE_DESCRIPTOR feature. + * + * This code was copied from our userspace app "hset". It sends a + * Get Device Descriptor control sequence in two parts, first the + * Setup packet by itself, followed some time later by the In and + * Ack packets. Rather than trying to figure out how to add this + * functionality to the normal driver code, we just hijack the + * hardware, using these two function to drive the hardware + * directly. + */ + +static dwc_otg_core_global_regs_t *global_regs; +static dwc_otg_host_global_regs_t *hc_global_regs; +static dwc_otg_hc_regs_t *hc_regs; +static uint32_t *data_fifo; + +static void do_setup(void) +{ + gintsts_data_t gintsts; + hctsiz_data_t hctsiz; + hcchar_data_t hcchar; + haint_data_t haint; + hcint_data_t hcint; + + /* Enable HAINTs */ + DWC_WRITE_REG32(&hc_global_regs->haintmsk, 0x0001); + + /* Enable HCINTs */ + DWC_WRITE_REG32(&hc_regs->hcintmsk, 0x04a3); + + /* Read GINTSTS */ + gintsts.d32 = DWC_READ_REG32(&global_regs->gintsts); + + /* Read HAINT */ + haint.d32 = DWC_READ_REG32(&hc_global_regs->haint); + + /* Read HCINT */ + hcint.d32 = DWC_READ_REG32(&hc_regs->hcint); + + /* Read HCCHAR */ + hcchar.d32 = DWC_READ_REG32(&hc_regs->hcchar); + + /* Clear HCINT */ + DWC_WRITE_REG32(&hc_regs->hcint, hcint.d32); + + /* Clear HAINT */ + DWC_WRITE_REG32(&hc_global_regs->haint, haint.d32); + + /* Clear GINTSTS */ + DWC_WRITE_REG32(&global_regs->gintsts, gintsts.d32); + + /* Read GINTSTS */ + gintsts.d32 = DWC_READ_REG32(&global_regs->gintsts); + + /* + * Send Setup packet (Get Device Descriptor) + */ + + /* Make sure channel is disabled */ + hcchar.d32 = DWC_READ_REG32(&hc_regs->hcchar); + if (hcchar.b.chen) { + hcchar.b.chdis = 1; +// hcchar.b.chen = 1; + DWC_WRITE_REG32(&hc_regs->hcchar, hcchar.d32); + //sleep(1); + dwc_mdelay(1000); + + /* Read GINTSTS */ + gintsts.d32 = DWC_READ_REG32(&global_regs->gintsts); + + /* Read HAINT */ + haint.d32 = DWC_READ_REG32(&hc_global_regs->haint); + + /* Read HCINT */ + hcint.d32 = DWC_READ_REG32(&hc_regs->hcint); + + /* Read HCCHAR */ + hcchar.d32 = DWC_READ_REG32(&hc_regs->hcchar); + + /* Clear HCINT */ + DWC_WRITE_REG32(&hc_regs->hcint, hcint.d32); + + /* Clear HAINT */ + DWC_WRITE_REG32(&hc_global_regs->haint, haint.d32); + + /* Clear GINTSTS */ + DWC_WRITE_REG32(&global_regs->gintsts, gintsts.d32); + + hcchar.d32 = DWC_READ_REG32(&hc_regs->hcchar); + } + + /* Set HCTSIZ */ + hctsiz.d32 = 0; + hctsiz.b.xfersize = 8; + hctsiz.b.pktcnt = 1; + hctsiz.b.pid = DWC_OTG_HC_PID_SETUP; + DWC_WRITE_REG32(&hc_regs->hctsiz, hctsiz.d32); + + /* Set HCCHAR */ + hcchar.d32 = DWC_READ_REG32(&hc_regs->hcchar); + hcchar.b.eptype = DWC_OTG_EP_TYPE_CONTROL; + hcchar.b.epdir = 0; + hcchar.b.epnum = 0; + hcchar.b.mps = 8; + hcchar.b.chen = 1; + DWC_WRITE_REG32(&hc_regs->hcchar, hcchar.d32); + + /* Fill FIFO with Setup data for Get Device Descriptor */ + data_fifo = (uint32_t *) ((char *)global_regs + 0x1000); + DWC_WRITE_REG32(data_fifo++, 0x01000680); + DWC_WRITE_REG32(data_fifo++, 0x00080000); + + gintsts.d32 = DWC_READ_REG32(&global_regs->gintsts); + + /* Wait for host channel interrupt */ + do { + gintsts.d32 = DWC_READ_REG32(&global_regs->gintsts); + } while (gintsts.b.hcintr == 0); + + /* Disable HCINTs */ + DWC_WRITE_REG32(&hc_regs->hcintmsk, 0x0000); + + /* Disable HAINTs */ + DWC_WRITE_REG32(&hc_global_regs->haintmsk, 0x0000); + + /* Read HAINT */ + haint.d32 = DWC_READ_REG32(&hc_global_regs->haint); + + /* Read HCINT */ + hcint.d32 = DWC_READ_REG32(&hc_regs->hcint); + + /* Read HCCHAR */ + hcchar.d32 = DWC_READ_REG32(&hc_regs->hcchar); + + /* Clear HCINT */ + DWC_WRITE_REG32(&hc_regs->hcint, hcint.d32); + + /* Clear HAINT */ + DWC_WRITE_REG32(&hc_global_regs->haint, haint.d32); + + /* Clear GINTSTS */ + DWC_WRITE_REG32(&global_regs->gintsts, gintsts.d32); + + /* Read GINTSTS */ + gintsts.d32 = DWC_READ_REG32(&global_regs->gintsts); +} + +static void do_in_ack(void) +{ + gintsts_data_t gintsts; + hctsiz_data_t hctsiz; + hcchar_data_t hcchar; + haint_data_t haint; + hcint_data_t hcint; + host_grxsts_data_t grxsts; + + /* Enable HAINTs */ + DWC_WRITE_REG32(&hc_global_regs->haintmsk, 0x0001); + + /* Enable HCINTs */ + DWC_WRITE_REG32(&hc_regs->hcintmsk, 0x04a3); + + /* Read GINTSTS */ + gintsts.d32 = DWC_READ_REG32(&global_regs->gintsts); + + /* Read HAINT */ + haint.d32 = DWC_READ_REG32(&hc_global_regs->haint); + + /* Read HCINT */ + hcint.d32 = DWC_READ_REG32(&hc_regs->hcint); + + /* Read HCCHAR */ + hcchar.d32 = DWC_READ_REG32(&hc_regs->hcchar); + + /* Clear HCINT */ + DWC_WRITE_REG32(&hc_regs->hcint, hcint.d32); + + /* Clear HAINT */ + DWC_WRITE_REG32(&hc_global_regs->haint, haint.d32); + + /* Clear GINTSTS */ + DWC_WRITE_REG32(&global_regs->gintsts, gintsts.d32); + + /* Read GINTSTS */ + gintsts.d32 = DWC_READ_REG32(&global_regs->gintsts); + + /* + * Receive Control In packet + */ + + /* Make sure channel is disabled */ + hcchar.d32 = DWC_READ_REG32(&hc_regs->hcchar); + if (hcchar.b.chen) { + hcchar.b.chdis = 1; + hcchar.b.chen = 1; + DWC_WRITE_REG32(&hc_regs->hcchar, hcchar.d32); + //sleep(1); + dwc_mdelay(1000); + + /* Read GINTSTS */ + gintsts.d32 = DWC_READ_REG32(&global_regs->gintsts); + + /* Read HAINT */ + haint.d32 = DWC_READ_REG32(&hc_global_regs->haint); + + /* Read HCINT */ + hcint.d32 = DWC_READ_REG32(&hc_regs->hcint); + + /* Read HCCHAR */ + hcchar.d32 = DWC_READ_REG32(&hc_regs->hcchar); + + /* Clear HCINT */ + DWC_WRITE_REG32(&hc_regs->hcint, hcint.d32); + + /* Clear HAINT */ + DWC_WRITE_REG32(&hc_global_regs->haint, haint.d32); + + /* Clear GINTSTS */ + DWC_WRITE_REG32(&global_regs->gintsts, gintsts.d32); + + hcchar.d32 = DWC_READ_REG32(&hc_regs->hcchar); + } + + /* Set HCTSIZ */ + hctsiz.d32 = 0; + hctsiz.b.xfersize = 8; + hctsiz.b.pktcnt = 1; + hctsiz.b.pid = DWC_OTG_HC_PID_DATA1; + DWC_WRITE_REG32(&hc_regs->hctsiz, hctsiz.d32); + + /* Set HCCHAR */ + hcchar.d32 = DWC_READ_REG32(&hc_regs->hcchar); + hcchar.b.eptype = DWC_OTG_EP_TYPE_CONTROL; + hcchar.b.epdir = 1; + hcchar.b.epnum = 0; + hcchar.b.mps = 8; + hcchar.b.chen = 1; + DWC_WRITE_REG32(&hc_regs->hcchar, hcchar.d32); + + gintsts.d32 = DWC_READ_REG32(&global_regs->gintsts); + + /* Wait for receive status queue interrupt */ + do { + gintsts.d32 = DWC_READ_REG32(&global_regs->gintsts); + } while (gintsts.b.rxstsqlvl == 0); + + /* Read RXSTS */ + grxsts.d32 = DWC_READ_REG32(&global_regs->grxstsp); + + /* Clear RXSTSQLVL in GINTSTS */ + gintsts.d32 = 0; + gintsts.b.rxstsqlvl = 1; + DWC_WRITE_REG32(&global_regs->gintsts, gintsts.d32); + + switch (grxsts.b.pktsts) { + case DWC_GRXSTS_PKTSTS_IN: + /* Read the data into the host buffer */ + if (grxsts.b.bcnt > 0) { + int i; + int word_count = (grxsts.b.bcnt + 3) / 4; + + data_fifo = (uint32_t *) ((char *)global_regs + 0x1000); + + for (i = 0; i < word_count; i++) { + (void)DWC_READ_REG32(data_fifo++); + } + } + break; + + default: + break; + } + + gintsts.d32 = DWC_READ_REG32(&global_regs->gintsts); + + /* Wait for receive status queue interrupt */ + do { + gintsts.d32 = DWC_READ_REG32(&global_regs->gintsts); + } while (gintsts.b.rxstsqlvl == 0); + + /* Read RXSTS */ + grxsts.d32 = DWC_READ_REG32(&global_regs->grxstsp); + + /* Clear RXSTSQLVL in GINTSTS */ + gintsts.d32 = 0; + gintsts.b.rxstsqlvl = 1; + DWC_WRITE_REG32(&global_regs->gintsts, gintsts.d32); + + switch (grxsts.b.pktsts) { + case DWC_GRXSTS_PKTSTS_IN_XFER_COMP: + break; + + default: + break; + } + + gintsts.d32 = DWC_READ_REG32(&global_regs->gintsts); + + /* Wait for host channel interrupt */ + do { + gintsts.d32 = DWC_READ_REG32(&global_regs->gintsts); + } while (gintsts.b.hcintr == 0); + + /* Read HAINT */ + haint.d32 = DWC_READ_REG32(&hc_global_regs->haint); + + /* Read HCINT */ + hcint.d32 = DWC_READ_REG32(&hc_regs->hcint); + + /* Read HCCHAR */ + hcchar.d32 = DWC_READ_REG32(&hc_regs->hcchar); + + /* Clear HCINT */ + DWC_WRITE_REG32(&hc_regs->hcint, hcint.d32); + + /* Clear HAINT */ + DWC_WRITE_REG32(&hc_global_regs->haint, haint.d32); + + /* Clear GINTSTS */ + DWC_WRITE_REG32(&global_regs->gintsts, gintsts.d32); + + /* Read GINTSTS */ + gintsts.d32 = DWC_READ_REG32(&global_regs->gintsts); + +// usleep(100000); +// mdelay(100); + dwc_mdelay(1); + + /* + * Send handshake packet + */ + + /* Read HAINT */ + haint.d32 = DWC_READ_REG32(&hc_global_regs->haint); + + /* Read HCINT */ + hcint.d32 = DWC_READ_REG32(&hc_regs->hcint); + + /* Read HCCHAR */ + hcchar.d32 = DWC_READ_REG32(&hc_regs->hcchar); + + /* Clear HCINT */ + DWC_WRITE_REG32(&hc_regs->hcint, hcint.d32); + + /* Clear HAINT */ + DWC_WRITE_REG32(&hc_global_regs->haint, haint.d32); + + /* Clear GINTSTS */ + DWC_WRITE_REG32(&global_regs->gintsts, gintsts.d32); + + /* Read GINTSTS */ + gintsts.d32 = DWC_READ_REG32(&global_regs->gintsts); + + /* Make sure channel is disabled */ + hcchar.d32 = DWC_READ_REG32(&hc_regs->hcchar); + if (hcchar.b.chen) { + hcchar.b.chdis = 1; + hcchar.b.chen = 1; + DWC_WRITE_REG32(&hc_regs->hcchar, hcchar.d32); + //sleep(1); + dwc_mdelay(1000); + + /* Read GINTSTS */ + gintsts.d32 = DWC_READ_REG32(&global_regs->gintsts); + + /* Read HAINT */ + haint.d32 = DWC_READ_REG32(&hc_global_regs->haint); + + /* Read HCINT */ + hcint.d32 = DWC_READ_REG32(&hc_regs->hcint); + + /* Read HCCHAR */ + hcchar.d32 = DWC_READ_REG32(&hc_regs->hcchar); + + /* Clear HCINT */ + DWC_WRITE_REG32(&hc_regs->hcint, hcint.d32); + + /* Clear HAINT */ + DWC_WRITE_REG32(&hc_global_regs->haint, haint.d32); + + /* Clear GINTSTS */ + DWC_WRITE_REG32(&global_regs->gintsts, gintsts.d32); + + hcchar.d32 = DWC_READ_REG32(&hc_regs->hcchar); + } + + /* Set HCTSIZ */ + hctsiz.d32 = 0; + hctsiz.b.xfersize = 0; + hctsiz.b.pktcnt = 1; + hctsiz.b.pid = DWC_OTG_HC_PID_DATA1; + DWC_WRITE_REG32(&hc_regs->hctsiz, hctsiz.d32); + + /* Set HCCHAR */ + hcchar.d32 = DWC_READ_REG32(&hc_regs->hcchar); + hcchar.b.eptype = DWC_OTG_EP_TYPE_CONTROL; + hcchar.b.epdir = 0; + hcchar.b.epnum = 0; + hcchar.b.mps = 8; + hcchar.b.chen = 1; + DWC_WRITE_REG32(&hc_regs->hcchar, hcchar.d32); + + gintsts.d32 = DWC_READ_REG32(&global_regs->gintsts); + + /* Wait for host channel interrupt */ + do { + gintsts.d32 = DWC_READ_REG32(&global_regs->gintsts); + } while (gintsts.b.hcintr == 0); + + /* Disable HCINTs */ + DWC_WRITE_REG32(&hc_regs->hcintmsk, 0x0000); + + /* Disable HAINTs */ + DWC_WRITE_REG32(&hc_global_regs->haintmsk, 0x0000); + + /* Read HAINT */ + haint.d32 = DWC_READ_REG32(&hc_global_regs->haint); + + /* Read HCINT */ + hcint.d32 = DWC_READ_REG32(&hc_regs->hcint); + + /* Read HCCHAR */ + hcchar.d32 = DWC_READ_REG32(&hc_regs->hcchar); + + /* Clear HCINT */ + DWC_WRITE_REG32(&hc_regs->hcint, hcint.d32); + + /* Clear HAINT */ + DWC_WRITE_REG32(&hc_global_regs->haint, haint.d32); + + /* Clear GINTSTS */ + DWC_WRITE_REG32(&global_regs->gintsts, gintsts.d32); + + /* Read GINTSTS */ + gintsts.d32 = DWC_READ_REG32(&global_regs->gintsts); +} +#endif + +/** Handles hub class-specific requests. */ +int dwc_otg_hcd_hub_control(dwc_otg_hcd_t * dwc_otg_hcd, + uint16_t typeReq, + uint16_t wValue, + uint16_t wIndex, uint8_t * buf, uint16_t wLength) +{ + int retval = 0; + + dwc_otg_core_if_t *core_if = dwc_otg_hcd->core_if; + usb_hub_descriptor_t *hub_desc; + hprt0_data_t hprt0 = {.d32 = 0 }; + + uint32_t port_status; + + switch (typeReq) { + case UCR_CLEAR_HUB_FEATURE: + DWC_DEBUGPL(DBG_HCD, "DWC OTG HCD HUB CONTROL - " + "ClearHubFeature 0x%x\n", wValue); + switch (wValue) { + case UHF_C_HUB_LOCAL_POWER: + case UHF_C_HUB_OVER_CURRENT: + /* Nothing required here */ + break; + default: + retval = -DWC_E_INVALID; + DWC_ERROR("DWC OTG HCD - " + "ClearHubFeature request %xh unknown\n", + wValue); + } + break; + case UCR_CLEAR_PORT_FEATURE: +#ifdef CONFIG_USB_DWC_OTG_LPM + if (wValue != UHF_PORT_L1) +#endif + if (!wIndex || wIndex > 1) + goto error; + + switch (wValue) { + case UHF_PORT_ENABLE: + DWC_DEBUGPL(DBG_ANY, "DWC OTG HCD HUB CONTROL - " + "ClearPortFeature USB_PORT_FEAT_ENABLE\n"); + hprt0.d32 = dwc_otg_read_hprt0(core_if); + hprt0.b.prtena = 1; + DWC_WRITE_REG32(core_if->host_if->hprt0, hprt0.d32); + break; + case UHF_PORT_SUSPEND: + DWC_DEBUGPL(DBG_HCD, "DWC OTG HCD HUB CONTROL - " + "ClearPortFeature USB_PORT_FEAT_SUSPEND\n"); + + if (core_if->power_down == 2) { + dwc_otg_host_hibernation_restore(core_if, 0, 0); + } else { + DWC_WRITE_REG32(core_if->pcgcctl, 0); + dwc_mdelay(5); + + hprt0.d32 = dwc_otg_read_hprt0(core_if); + hprt0.b.prtres = 1; + DWC_WRITE_REG32(core_if->host_if->hprt0, hprt0.d32); + hprt0.b.prtsusp = 0; + /* Clear Resume bit */ + dwc_mdelay(100); + hprt0.b.prtres = 0; + DWC_WRITE_REG32(core_if->host_if->hprt0, hprt0.d32); + } + break; +#ifdef CONFIG_USB_DWC_OTG_LPM + case UHF_PORT_L1: + { + pcgcctl_data_t pcgcctl = {.d32 = 0 }; + glpmcfg_data_t lpmcfg = {.d32 = 0 }; + + lpmcfg.d32 = + DWC_READ_REG32(&core_if-> + core_global_regs->glpmcfg); + lpmcfg.b.en_utmi_sleep = 0; + lpmcfg.b.hird_thres &= (~(1 << 4)); + lpmcfg.b.prt_sleep_sts = 1; + DWC_WRITE_REG32(&core_if-> + core_global_regs->glpmcfg, + lpmcfg.d32); + + /* Clear Enbl_L1Gating bit. */ + pcgcctl.b.enbl_sleep_gating = 1; + DWC_MODIFY_REG32(core_if->pcgcctl, pcgcctl.d32, + 0); + + dwc_mdelay(5); + + hprt0.d32 = dwc_otg_read_hprt0(core_if); + hprt0.b.prtres = 1; + DWC_WRITE_REG32(core_if->host_if->hprt0, + hprt0.d32); + /* This bit will be cleared in wakeup interrupt handle */ + break; + } +#endif + case UHF_PORT_POWER: + DWC_DEBUGPL(DBG_HCD, "DWC OTG HCD HUB CONTROL - " + "ClearPortFeature USB_PORT_FEAT_POWER\n"); + hprt0.d32 = dwc_otg_read_hprt0(core_if); + hprt0.b.prtpwr = 0; + DWC_WRITE_REG32(core_if->host_if->hprt0, hprt0.d32); + break; + case UHF_PORT_INDICATOR: + DWC_DEBUGPL(DBG_HCD, "DWC OTG HCD HUB CONTROL - " + "ClearPortFeature USB_PORT_FEAT_INDICATOR\n"); + /* Port inidicator not supported */ + break; + case UHF_C_PORT_CONNECTION: + /* Clears drivers internal connect status change + * flag */ + DWC_DEBUGPL(DBG_HCD, "DWC OTG HCD HUB CONTROL - " + "ClearPortFeature USB_PORT_FEAT_C_CONNECTION\n"); + dwc_otg_hcd->flags.b.port_connect_status_change = 0; + break; + case UHF_C_PORT_RESET: + /* Clears the driver's internal Port Reset Change + * flag */ + DWC_DEBUGPL(DBG_HCD, "DWC OTG HCD HUB CONTROL - " + "ClearPortFeature USB_PORT_FEAT_C_RESET\n"); + dwc_otg_hcd->flags.b.port_reset_change = 0; + break; + case UHF_C_PORT_ENABLE: + /* Clears the driver's internal Port + * Enable/Disable Change flag */ + DWC_DEBUGPL(DBG_HCD, "DWC OTG HCD HUB CONTROL - " + "ClearPortFeature USB_PORT_FEAT_C_ENABLE\n"); + dwc_otg_hcd->flags.b.port_enable_change = 0; + break; + case UHF_C_PORT_SUSPEND: + /* Clears the driver's internal Port Suspend + * Change flag, which is set when resume signaling on + * the host port is complete */ + DWC_DEBUGPL(DBG_HCD, "DWC OTG HCD HUB CONTROL - " + "ClearPortFeature USB_PORT_FEAT_C_SUSPEND\n"); + dwc_otg_hcd->flags.b.port_suspend_change = 0; + break; +#ifdef CONFIG_USB_DWC_OTG_LPM + case UHF_C_PORT_L1: + dwc_otg_hcd->flags.b.port_l1_change = 0; + break; +#endif + case UHF_C_PORT_OVER_CURRENT: + DWC_DEBUGPL(DBG_HCD, "DWC OTG HCD HUB CONTROL - " + "ClearPortFeature USB_PORT_FEAT_C_OVER_CURRENT\n"); + dwc_otg_hcd->flags.b.port_over_current_change = 0; + break; + default: + retval = -DWC_E_INVALID; + DWC_ERROR("DWC OTG HCD - " + "ClearPortFeature request %xh " + "unknown or unsupported\n", wValue); + } + break; + case UCR_GET_HUB_DESCRIPTOR: + DWC_DEBUGPL(DBG_HCD, "DWC OTG HCD HUB CONTROL - " + "GetHubDescriptor\n"); + hub_desc = (usb_hub_descriptor_t *) buf; + hub_desc->bDescLength = 9; + hub_desc->bDescriptorType = 0x29; + hub_desc->bNbrPorts = 1; + USETW(hub_desc->wHubCharacteristics, 0x08); + hub_desc->bPwrOn2PwrGood = 1; + hub_desc->bHubContrCurrent = 0; + hub_desc->DeviceRemovable[0] = 0; + hub_desc->DeviceRemovable[1] = 0xff; + break; + case UCR_GET_HUB_STATUS: + DWC_DEBUGPL(DBG_HCD, "DWC OTG HCD HUB CONTROL - " + "GetHubStatus\n"); + DWC_MEMSET(buf, 0, 4); + break; + case UCR_GET_PORT_STATUS: + DWC_DEBUGPL(DBG_HCD, "DWC OTG HCD HUB CONTROL - " + "GetPortStatus wIndex = 0x%04x FLAGS=0x%08x\n", + wIndex, dwc_otg_hcd->flags.d32); + if (!wIndex || wIndex > 1) + goto error; + + port_status = 0; + + if (dwc_otg_hcd->flags.b.port_connect_status_change) + port_status |= (1 << UHF_C_PORT_CONNECTION); + + if (dwc_otg_hcd->flags.b.port_enable_change) + port_status |= (1 << UHF_C_PORT_ENABLE); + + if (dwc_otg_hcd->flags.b.port_suspend_change) + port_status |= (1 << UHF_C_PORT_SUSPEND); + + if (dwc_otg_hcd->flags.b.port_l1_change) + port_status |= (1 << UHF_C_PORT_L1); + + if (dwc_otg_hcd->flags.b.port_reset_change) { + port_status |= (1 << UHF_C_PORT_RESET); + } + + if (dwc_otg_hcd->flags.b.port_over_current_change) { + DWC_WARN("Overcurrent change detected\n"); + port_status |= (1 << UHF_C_PORT_OVER_CURRENT); + } + + if (!dwc_otg_hcd->flags.b.port_connect_status) { + /* + * The port is disconnected, which means the core is + * either in device mode or it soon will be. Just + * return 0's for the remainder of the port status + * since the port register can't be read if the core + * is in device mode. + */ + *((__le32 *) buf) = dwc_cpu_to_le32(&port_status); + break; + } + + hprt0.d32 = DWC_READ_REG32(core_if->host_if->hprt0); + DWC_DEBUGPL(DBG_HCDV, " HPRT0: 0x%08x\n", hprt0.d32); + + if (hprt0.b.prtconnsts) + port_status |= (1 << UHF_PORT_CONNECTION); + + if (hprt0.b.prtena) + port_status |= (1 << UHF_PORT_ENABLE); + + if (hprt0.b.prtsusp) + port_status |= (1 << UHF_PORT_SUSPEND); + + if (hprt0.b.prtovrcurract) + port_status |= (1 << UHF_PORT_OVER_CURRENT); + + if (hprt0.b.prtrst) + port_status |= (1 << UHF_PORT_RESET); + + if (hprt0.b.prtpwr) + port_status |= (1 << UHF_PORT_POWER); + + if (hprt0.b.prtspd == DWC_HPRT0_PRTSPD_HIGH_SPEED) + port_status |= (1 << UHF_PORT_HIGH_SPEED); + else if (hprt0.b.prtspd == DWC_HPRT0_PRTSPD_LOW_SPEED) + port_status |= (1 << UHF_PORT_LOW_SPEED); + + if (hprt0.b.prttstctl) + port_status |= (1 << UHF_PORT_TEST); + if (dwc_otg_get_lpm_portsleepstatus(dwc_otg_hcd->core_if)) { + port_status |= (1 << UHF_PORT_L1); + } + /* + For Synopsys HW emulation of Power down wkup_control asserts the + hreset_n and prst_n on suspned. This causes the HPRT0 to be zero. + We intentionally tell the software that port is in L2Suspend state. + Only for STE. + */ + if ((core_if->power_down == 2) + && (core_if->hibernation_suspend == 1)) { + port_status |= (1 << UHF_PORT_SUSPEND); + } + /* USB_PORT_FEAT_INDICATOR unsupported always 0 */ + + *((__le32 *) buf) = dwc_cpu_to_le32(&port_status); + + break; + case UCR_SET_HUB_FEATURE: + DWC_DEBUGPL(DBG_HCD, "DWC OTG HCD HUB CONTROL - " + "SetHubFeature\n"); + /* No HUB features supported */ + break; + case UCR_SET_PORT_FEATURE: + if (wValue != UHF_PORT_TEST && (!wIndex || wIndex > 1)) + goto error; + + if (!dwc_otg_hcd->flags.b.port_connect_status) { + /* + * The port is disconnected, which means the core is + * either in device mode or it soon will be. Just + * return without doing anything since the port + * register can't be written if the core is in device + * mode. + */ + break; + } + + switch (wValue) { + case UHF_PORT_SUSPEND: + DWC_DEBUGPL(DBG_HCD, "DWC OTG HCD HUB CONTROL - " + "SetPortFeature - USB_PORT_FEAT_SUSPEND\n"); + if (dwc_otg_hcd_otg_port(dwc_otg_hcd) != wIndex) { + goto error; + } + if (core_if->power_down == 2) { + int timeout = 300; + dwc_irqflags_t flags; + pcgcctl_data_t pcgcctl = {.d32 = 0 }; + gpwrdn_data_t gpwrdn = {.d32 = 0 }; + gusbcfg_data_t gusbcfg = {.d32 = 0 }; +#ifdef DWC_DEV_SRPCAP + int32_t otg_cap_param = core_if->core_params->otg_cap; +#endif + DWC_PRINTF("Preparing for complete power-off\n"); + + /* Save registers before hibernation */ + dwc_otg_save_global_regs(core_if); + dwc_otg_save_host_regs(core_if); + + hprt0.d32 = dwc_otg_read_hprt0(core_if); + hprt0.b.prtsusp = 1; + hprt0.b.prtena = 0; + DWC_WRITE_REG32(core_if->host_if->hprt0, hprt0.d32); + /* Spin hprt0.b.prtsusp to became 1 */ + do { + hprt0.d32 = dwc_otg_read_hprt0(core_if); + if (hprt0.b.prtsusp) { + break; + } + dwc_mdelay(1); + } while (--timeout); + if (!timeout) { + DWC_WARN("Suspend wasn't genereted\n"); + } + dwc_udelay(10); + + /* + * We need to disable interrupts to prevent servicing of any IRQ + * during going to hibernation + */ + DWC_SPINLOCK_IRQSAVE(dwc_otg_hcd->lock, &flags); + core_if->lx_state = DWC_OTG_L2; +#ifdef DWC_DEV_SRPCAP + hprt0.d32 = dwc_otg_read_hprt0(core_if); + hprt0.b.prtpwr = 0; + hprt0.b.prtena = 0; + DWC_WRITE_REG32(core_if->host_if->hprt0, + hprt0.d32); +#endif + gusbcfg.d32 = + DWC_READ_REG32(&core_if->core_global_regs-> + gusbcfg); + if (gusbcfg.b.ulpi_utmi_sel == 1) { + /* ULPI interface */ + /* Suspend the Phy Clock */ + pcgcctl.d32 = 0; + pcgcctl.b.stoppclk = 1; + DWC_MODIFY_REG32(core_if->pcgcctl, 0, + pcgcctl.d32); + dwc_udelay(10); + gpwrdn.b.pmuactv = 1; + DWC_MODIFY_REG32(&core_if-> + core_global_regs-> + gpwrdn, 0, gpwrdn.d32); + } else { + /* UTMI+ Interface */ + gpwrdn.b.pmuactv = 1; + DWC_MODIFY_REG32(&core_if-> + core_global_regs-> + gpwrdn, 0, gpwrdn.d32); + dwc_udelay(10); + pcgcctl.b.stoppclk = 1; + DWC_MODIFY_REG32(core_if->pcgcctl, 0, pcgcctl.d32); + dwc_udelay(10); + } +#ifdef DWC_DEV_SRPCAP + gpwrdn.d32 = 0; + gpwrdn.b.dis_vbus = 1; + DWC_MODIFY_REG32(&core_if->core_global_regs-> + gpwrdn, 0, gpwrdn.d32); +#endif + gpwrdn.d32 = 0; + gpwrdn.b.pmuintsel = 1; + DWC_MODIFY_REG32(&core_if->core_global_regs-> + gpwrdn, 0, gpwrdn.d32); + dwc_udelay(10); + + gpwrdn.d32 = 0; +#ifdef DWC_DEV_SRPCAP + gpwrdn.b.srp_det_msk = 1; +#endif + gpwrdn.b.disconn_det_msk = 1; + gpwrdn.b.lnstchng_msk = 1; + gpwrdn.b.sts_chngint_msk = 1; + DWC_MODIFY_REG32(&core_if->core_global_regs-> + gpwrdn, 0, gpwrdn.d32); + dwc_udelay(10); + + /* Enable Power Down Clamp and all interrupts in GPWRDN */ + gpwrdn.d32 = 0; + gpwrdn.b.pwrdnclmp = 1; + DWC_MODIFY_REG32(&core_if->core_global_regs-> + gpwrdn, 0, gpwrdn.d32); + dwc_udelay(10); + + /* Switch off VDD */ + gpwrdn.d32 = 0; + gpwrdn.b.pwrdnswtch = 1; + DWC_MODIFY_REG32(&core_if->core_global_regs-> + gpwrdn, 0, gpwrdn.d32); + +#ifdef DWC_DEV_SRPCAP + if (otg_cap_param == DWC_OTG_CAP_PARAM_HNP_SRP_CAPABLE) + { + core_if->pwron_timer_started = 1; + DWC_TIMER_SCHEDULE(core_if->pwron_timer, 6000 /* 6 secs */ ); + } +#endif + /* Save gpwrdn register for further usage if stschng interrupt */ + core_if->gr_backup->gpwrdn_local = + DWC_READ_REG32(&core_if->core_global_regs->gpwrdn); + + /* Set flag to indicate that we are in hibernation */ + core_if->hibernation_suspend = 1; + DWC_SPINUNLOCK_IRQRESTORE(dwc_otg_hcd->lock,flags); + + DWC_PRINTF("Host hibernation completed\n"); + // Exit from case statement + break; + + } + if (dwc_otg_hcd_otg_port(dwc_otg_hcd) == wIndex && + dwc_otg_hcd->fops->get_b_hnp_enable(dwc_otg_hcd)) { + gotgctl_data_t gotgctl = {.d32 = 0 }; + gotgctl.b.hstsethnpen = 1; + DWC_MODIFY_REG32(&core_if->core_global_regs-> + gotgctl, 0, gotgctl.d32); + core_if->op_state = A_SUSPEND; + } + hprt0.d32 = dwc_otg_read_hprt0(core_if); + hprt0.b.prtsusp = 1; + DWC_WRITE_REG32(core_if->host_if->hprt0, hprt0.d32); + { + dwc_irqflags_t flags; + /* Update lx_state */ + DWC_SPINLOCK_IRQSAVE(dwc_otg_hcd->lock, &flags); + core_if->lx_state = DWC_OTG_L2; + DWC_SPINUNLOCK_IRQRESTORE(dwc_otg_hcd->lock, flags); + } + /* Suspend the Phy Clock */ + { + pcgcctl_data_t pcgcctl = {.d32 = 0 }; + pcgcctl.b.stoppclk = 1; + DWC_MODIFY_REG32(core_if->pcgcctl, 0, + pcgcctl.d32); + dwc_udelay(10); + } + + /* For HNP the bus must be suspended for at least 200ms. */ + if (dwc_otg_hcd->fops->get_b_hnp_enable(dwc_otg_hcd)) { + pcgcctl_data_t pcgcctl = {.d32 = 0 }; + pcgcctl.b.stoppclk = 1; + DWC_MODIFY_REG32(core_if->pcgcctl, pcgcctl.d32, 0); + dwc_mdelay(200); + } + + /** @todo - check how sw can wait for 1 sec to check asesvld??? */ +#if 0 //vahrama !!!!!!!!!!!!!!!!!! + if (core_if->adp_enable) { + gotgctl_data_t gotgctl = {.d32 = 0 }; + gpwrdn_data_t gpwrdn; + + while (gotgctl.b.asesvld == 1) { + gotgctl.d32 = + DWC_READ_REG32(&core_if-> + core_global_regs-> + gotgctl); + dwc_mdelay(100); + } + + /* Enable Power Down Logic */ + gpwrdn.d32 = 0; + gpwrdn.b.pmuactv = 1; + DWC_MODIFY_REG32(&core_if->core_global_regs-> + gpwrdn, 0, gpwrdn.d32); + + /* Unmask SRP detected interrupt from Power Down Logic */ + gpwrdn.d32 = 0; + gpwrdn.b.srp_det_msk = 1; + DWC_MODIFY_REG32(&core_if->core_global_regs-> + gpwrdn, 0, gpwrdn.d32); + + dwc_otg_adp_probe_start(core_if); + } +#endif + break; + case UHF_PORT_POWER: + DWC_DEBUGPL(DBG_HCD, "DWC OTG HCD HUB CONTROL - " + "SetPortFeature - USB_PORT_FEAT_POWER\n"); + hprt0.d32 = dwc_otg_read_hprt0(core_if); + hprt0.b.prtpwr = 1; + DWC_WRITE_REG32(core_if->host_if->hprt0, hprt0.d32); + break; + case UHF_PORT_RESET: + if ((core_if->power_down == 2) + && (core_if->hibernation_suspend == 1)) { + /* If we are going to exit from Hibernated + * state via USB RESET. + */ + dwc_otg_host_hibernation_restore(core_if, 0, 1); + } else { + hprt0.d32 = dwc_otg_read_hprt0(core_if); + + DWC_DEBUGPL(DBG_HCD, + "DWC OTG HCD HUB CONTROL - " + "SetPortFeature - USB_PORT_FEAT_RESET\n"); + { + pcgcctl_data_t pcgcctl = {.d32 = 0 }; + pcgcctl.b.enbl_sleep_gating = 1; + pcgcctl.b.stoppclk = 1; + DWC_MODIFY_REG32(core_if->pcgcctl, pcgcctl.d32, 0); + DWC_WRITE_REG32(core_if->pcgcctl, 0); + } +#ifdef CONFIG_USB_DWC_OTG_LPM + { + glpmcfg_data_t lpmcfg; + lpmcfg.d32 = + DWC_READ_REG32(&core_if->core_global_regs->glpmcfg); + if (lpmcfg.b.prt_sleep_sts) { + lpmcfg.b.en_utmi_sleep = 0; + lpmcfg.b.hird_thres &= (~(1 << 4)); + DWC_WRITE_REG32 + (&core_if->core_global_regs->glpmcfg, + lpmcfg.d32); + dwc_mdelay(1); + } + } +#endif + hprt0.d32 = dwc_otg_read_hprt0(core_if); + /* Clear suspend bit if resetting from suspended state. */ + hprt0.b.prtsusp = 0; + /* When B-Host the Port reset bit is set in + * the Start HCD Callback function, so that + * the reset is started within 1ms of the HNP + * success interrupt. */ + if (!dwc_otg_hcd_is_b_host(dwc_otg_hcd)) { + hprt0.b.prtpwr = 1; + hprt0.b.prtrst = 1; + DWC_PRINTF("Indeed it is in host mode hprt0 = %08x\n",hprt0.d32); + DWC_WRITE_REG32(core_if->host_if->hprt0, + hprt0.d32); + } + /* Clear reset bit in 10ms (FS/LS) or 50ms (HS) */ + dwc_mdelay(60); + hprt0.b.prtrst = 0; + DWC_WRITE_REG32(core_if->host_if->hprt0, hprt0.d32); + core_if->lx_state = DWC_OTG_L0; /* Now back to the on state */ + } + break; +#ifdef DWC_HS_ELECT_TST + case UHF_PORT_TEST: + { + uint32_t t; + gintmsk_data_t gintmsk; + + t = (wIndex >> 8); /* MSB wIndex USB */ + DWC_DEBUGPL(DBG_HCD, + "DWC OTG HCD HUB CONTROL - " + "SetPortFeature - USB_PORT_FEAT_TEST %d\n", + t); + DWC_WARN("USB_PORT_FEAT_TEST %d\n", t); + if (t < 6) { + hprt0.d32 = dwc_otg_read_hprt0(core_if); + hprt0.b.prttstctl = t; + DWC_WRITE_REG32(core_if->host_if->hprt0, + hprt0.d32); + } else { + /* Setup global vars with reg addresses (quick and + * dirty hack, should be cleaned up) + */ + global_regs = core_if->core_global_regs; + hc_global_regs = + core_if->host_if->host_global_regs; + hc_regs = + (dwc_otg_hc_regs_t *) ((char *) + global_regs + + 0x500); + data_fifo = + (uint32_t *) ((char *)global_regs + + 0x1000); + + if (t == 6) { /* HS_HOST_PORT_SUSPEND_RESUME */ + /* Save current interrupt mask */ + gintmsk.d32 = + DWC_READ_REG32 + (&global_regs->gintmsk); + + /* Disable all interrupts while we muck with + * the hardware directly + */ + DWC_WRITE_REG32(&global_regs->gintmsk, 0); + + /* 15 second delay per the test spec */ + dwc_mdelay(15000); + + /* Drive suspend on the root port */ + hprt0.d32 = + dwc_otg_read_hprt0(core_if); + hprt0.b.prtsusp = 1; + hprt0.b.prtres = 0; + DWC_WRITE_REG32(core_if->host_if->hprt0, hprt0.d32); + + /* 15 second delay per the test spec */ + dwc_mdelay(15000); + + /* Drive resume on the root port */ + hprt0.d32 = + dwc_otg_read_hprt0(core_if); + hprt0.b.prtsusp = 0; + hprt0.b.prtres = 1; + DWC_WRITE_REG32(core_if->host_if->hprt0, hprt0.d32); + dwc_mdelay(100); + + /* Clear the resume bit */ + hprt0.b.prtres = 0; + DWC_WRITE_REG32(core_if->host_if->hprt0, hprt0.d32); + + /* Restore interrupts */ + DWC_WRITE_REG32(&global_regs->gintmsk, gintmsk.d32); + } else if (t == 7) { /* SINGLE_STEP_GET_DEVICE_DESCRIPTOR setup */ + /* Save current interrupt mask */ + gintmsk.d32 = + DWC_READ_REG32 + (&global_regs->gintmsk); + + /* Disable all interrupts while we muck with + * the hardware directly + */ + DWC_WRITE_REG32(&global_regs->gintmsk, 0); + + /* 15 second delay per the test spec */ + dwc_mdelay(15000); + + /* Send the Setup packet */ + do_setup(); + + /* 15 second delay so nothing else happens for awhile */ + dwc_mdelay(15000); + + /* Restore interrupts */ + DWC_WRITE_REG32(&global_regs->gintmsk, gintmsk.d32); + } else if (t == 8) { /* SINGLE_STEP_GET_DEVICE_DESCRIPTOR execute */ + /* Save current interrupt mask */ + gintmsk.d32 = + DWC_READ_REG32 + (&global_regs->gintmsk); + + /* Disable all interrupts while we muck with + * the hardware directly + */ + DWC_WRITE_REG32(&global_regs->gintmsk, 0); + + /* Send the Setup packet */ + do_setup(); + + /* 15 second delay so nothing else happens for awhile */ + dwc_mdelay(15000); + + /* Send the In and Ack packets */ + do_in_ack(); + + /* 15 second delay so nothing else happens for awhile */ + dwc_mdelay(15000); + + /* Restore interrupts */ + DWC_WRITE_REG32(&global_regs->gintmsk, gintmsk.d32); + } + } + break; + } +#endif /* DWC_HS_ELECT_TST */ + + case UHF_PORT_INDICATOR: + DWC_DEBUGPL(DBG_HCD, "DWC OTG HCD HUB CONTROL - " + "SetPortFeature - USB_PORT_FEAT_INDICATOR\n"); + /* Not supported */ + break; + default: + retval = -DWC_E_INVALID; + DWC_ERROR("DWC OTG HCD - " + "SetPortFeature request %xh " + "unknown or unsupported\n", wValue); + break; + } + break; +#ifdef CONFIG_USB_DWC_OTG_LPM + case UCR_SET_AND_TEST_PORT_FEATURE: + if (wValue != UHF_PORT_L1) { + goto error; + } + { + int portnum, hird, devaddr, remwake; + glpmcfg_data_t lpmcfg; + uint32_t time_usecs; + gintsts_data_t gintsts; + gintmsk_data_t gintmsk; + + if (!dwc_otg_get_param_lpm_enable(core_if)) { + goto error; + } + if (wValue != UHF_PORT_L1 || wLength != 1) { + goto error; + } + /* Check if the port currently is in SLEEP state */ + lpmcfg.d32 = + DWC_READ_REG32(&core_if->core_global_regs->glpmcfg); + if (lpmcfg.b.prt_sleep_sts) { + DWC_INFO("Port is already in sleep mode\n"); + buf[0] = 0; /* Return success */ + break; + } + + portnum = wIndex & 0xf; + hird = (wIndex >> 4) & 0xf; + devaddr = (wIndex >> 8) & 0x7f; + remwake = (wIndex >> 15); + + if (portnum != 1) { + retval = -DWC_E_INVALID; + DWC_WARN + ("Wrong port number(%d) in SetandTestPortFeature request\n", + portnum); + break; + } + + DWC_PRINTF + ("SetandTestPortFeature request: portnum = %d, hird = %d, devaddr = %d, rewake = %d\n", + portnum, hird, devaddr, remwake); + /* Disable LPM interrupt */ + gintmsk.d32 = 0; + gintmsk.b.lpmtranrcvd = 1; + DWC_MODIFY_REG32(&core_if->core_global_regs->gintmsk, + gintmsk.d32, 0); + + if (dwc_otg_hcd_send_lpm + (dwc_otg_hcd, devaddr, hird, remwake)) { + retval = -DWC_E_INVALID; + break; + } + + time_usecs = 10 * (lpmcfg.b.retry_count + 1); + /* We will consider timeout if time_usecs microseconds pass, + * and we don't receive LPM transaction status. + * After receiving non-error responce(ACK/NYET/STALL) from device, + * core will set lpmtranrcvd bit. + */ + do { + gintsts.d32 = + DWC_READ_REG32(&core_if->core_global_regs->gintsts); + if (gintsts.b.lpmtranrcvd) { + break; + } + dwc_udelay(1); + } while (--time_usecs); + /* lpm_int bit will be cleared in LPM interrupt handler */ + + /* Now fill status + * 0x00 - Success + * 0x10 - NYET + * 0x11 - Timeout + */ + if (!gintsts.b.lpmtranrcvd) { + buf[0] = 0x3; /* Completion code is Timeout */ + dwc_otg_hcd_free_hc_from_lpm(dwc_otg_hcd); + } else { + lpmcfg.d32 = + DWC_READ_REG32(&core_if->core_global_regs->glpmcfg); + if (lpmcfg.b.lpm_resp == 0x3) { + /* ACK responce from the device */ + buf[0] = 0x00; /* Success */ + } else if (lpmcfg.b.lpm_resp == 0x2) { + /* NYET responce from the device */ + buf[0] = 0x2; + } else { + /* Otherwise responce with Timeout */ + buf[0] = 0x3; + } + } + DWC_PRINTF("Device responce to LPM trans is %x\n", + lpmcfg.b.lpm_resp); + DWC_MODIFY_REG32(&core_if->core_global_regs->gintmsk, 0, + gintmsk.d32); + + break; + } +#endif /* CONFIG_USB_DWC_OTG_LPM */ + default: +error: + retval = -DWC_E_INVALID; + DWC_WARN("DWC OTG HCD - " + "Unknown hub control request type or invalid typeReq: %xh wIndex: %xh wValue: %xh\n", + typeReq, wIndex, wValue); + break; + } + + return retval; +} + +#ifdef CONFIG_USB_DWC_OTG_LPM +/** Returns index of host channel to perform LPM transaction. */ +int dwc_otg_hcd_get_hc_for_lpm_tran(dwc_otg_hcd_t * hcd, uint8_t devaddr) +{ + dwc_otg_core_if_t *core_if = hcd->core_if; + dwc_hc_t *hc; + hcchar_data_t hcchar; + gintmsk_data_t gintmsk = {.d32 = 0 }; + + if (DWC_CIRCLEQ_EMPTY(&hcd->free_hc_list)) { + DWC_PRINTF("No free channel to select for LPM transaction\n"); + return -1; + } + + hc = DWC_CIRCLEQ_FIRST(&hcd->free_hc_list); + + /* Mask host channel interrupts. */ + gintmsk.b.hcintr = 1; + DWC_MODIFY_REG32(&core_if->core_global_regs->gintmsk, gintmsk.d32, 0); + + /* Fill fields that core needs for LPM transaction */ + hcchar.b.devaddr = devaddr; + hcchar.b.epnum = 0; + hcchar.b.eptype = DWC_OTG_EP_TYPE_CONTROL; + hcchar.b.mps = 64; + hcchar.b.lspddev = (hc->speed == DWC_OTG_EP_SPEED_LOW); + hcchar.b.epdir = 0; /* OUT */ + DWC_WRITE_REG32(&core_if->host_if->hc_regs[hc->hc_num]->hcchar, + hcchar.d32); + + /* Remove the host channel from the free list. */ + DWC_CIRCLEQ_REMOVE_INIT(&hcd->free_hc_list, hc, hc_list_entry); + + DWC_PRINTF("hcnum = %d devaddr = %d\n", hc->hc_num, devaddr); + + return hc->hc_num; +} + +/** Release hc after performing LPM transaction */ +void dwc_otg_hcd_free_hc_from_lpm(dwc_otg_hcd_t * hcd) +{ + dwc_hc_t *hc; + glpmcfg_data_t lpmcfg; + uint8_t hc_num; + + lpmcfg.d32 = DWC_READ_REG32(&hcd->core_if->core_global_regs->glpmcfg); + hc_num = lpmcfg.b.lpm_chan_index; + + hc = hcd->hc_ptr_array[hc_num]; + + DWC_PRINTF("Freeing channel %d after LPM\n", hc_num); + /* Return host channel to free list */ + DWC_CIRCLEQ_INSERT_TAIL(&hcd->free_hc_list, hc, hc_list_entry); +} + +int dwc_otg_hcd_send_lpm(dwc_otg_hcd_t * hcd, uint8_t devaddr, uint8_t hird, + uint8_t bRemoteWake) +{ + glpmcfg_data_t lpmcfg; + pcgcctl_data_t pcgcctl = {.d32 = 0 }; + int channel; + + channel = dwc_otg_hcd_get_hc_for_lpm_tran(hcd, devaddr); + if (channel < 0) { + return channel; + } + + pcgcctl.b.enbl_sleep_gating = 1; + DWC_MODIFY_REG32(hcd->core_if->pcgcctl, 0, pcgcctl.d32); + + /* Read LPM config register */ + lpmcfg.d32 = DWC_READ_REG32(&hcd->core_if->core_global_regs->glpmcfg); + + /* Program LPM transaction fields */ + lpmcfg.b.rem_wkup_en = bRemoteWake; + lpmcfg.b.hird = hird; + lpmcfg.b.hird_thres = 0x1c; + lpmcfg.b.lpm_chan_index = channel; + lpmcfg.b.en_utmi_sleep = 1; + /* Program LPM config register */ + DWC_WRITE_REG32(&hcd->core_if->core_global_regs->glpmcfg, lpmcfg.d32); + + /* Send LPM transaction */ + lpmcfg.b.send_lpm = 1; + DWC_WRITE_REG32(&hcd->core_if->core_global_regs->glpmcfg, lpmcfg.d32); + + return 0; +} + +#endif /* CONFIG_USB_DWC_OTG_LPM */ + +int dwc_otg_hcd_is_status_changed(dwc_otg_hcd_t * hcd, int port) +{ + int retval; + + if (port != 1) { + return -DWC_E_INVALID; + } + + retval = (hcd->flags.b.port_connect_status_change || + hcd->flags.b.port_reset_change || + hcd->flags.b.port_enable_change || + hcd->flags.b.port_suspend_change || + hcd->flags.b.port_over_current_change); +#ifdef DEBUG + if (retval) { + DWC_DEBUGPL(DBG_HCD, "DWC OTG HCD HUB STATUS DATA:" + " Root port status changed\n"); + DWC_DEBUGPL(DBG_HCDV, " port_connect_status_change: %d\n", + hcd->flags.b.port_connect_status_change); + DWC_DEBUGPL(DBG_HCDV, " port_reset_change: %d\n", + hcd->flags.b.port_reset_change); + DWC_DEBUGPL(DBG_HCDV, " port_enable_change: %d\n", + hcd->flags.b.port_enable_change); + DWC_DEBUGPL(DBG_HCDV, " port_suspend_change: %d\n", + hcd->flags.b.port_suspend_change); + DWC_DEBUGPL(DBG_HCDV, " port_over_current_change: %d\n", + hcd->flags.b.port_over_current_change); + } +#endif + return retval; +} + +int dwc_otg_hcd_get_frame_number(dwc_otg_hcd_t * dwc_otg_hcd) +{ + hfnum_data_t hfnum; + hfnum.d32 = + DWC_READ_REG32(&dwc_otg_hcd->core_if->host_if->host_global_regs-> + hfnum); + +#ifdef DEBUG_SOF + DWC_DEBUGPL(DBG_HCDV, "DWC OTG HCD GET FRAME NUMBER %d\n", + hfnum.b.frnum); +#endif + return hfnum.b.frnum; +} + +int dwc_otg_hcd_start(dwc_otg_hcd_t * hcd, + struct dwc_otg_hcd_function_ops *fops) +{ + int retval = 0; + + hcd->fops = fops; + if (!dwc_otg_is_device_mode(hcd->core_if) && + (!hcd->core_if->adp_enable || hcd->core_if->adp.adp_started)) { + dwc_otg_hcd_reinit(hcd); + } else { + retval = -DWC_E_NO_DEVICE; + } + + return retval; +} + +void *dwc_otg_hcd_get_priv_data(dwc_otg_hcd_t * hcd) +{ + return hcd->priv; +} + +void dwc_otg_hcd_set_priv_data(dwc_otg_hcd_t * hcd, void *priv_data) +{ + hcd->priv = priv_data; +} + +uint32_t dwc_otg_hcd_otg_port(dwc_otg_hcd_t * hcd) +{ + return hcd->otg_port; +} + +uint32_t dwc_otg_hcd_is_b_host(dwc_otg_hcd_t * hcd) +{ + uint32_t is_b_host; + if (hcd->core_if->op_state == B_HOST) { + is_b_host = 1; + } else { + is_b_host = 0; + } + + return is_b_host; +} + +dwc_otg_hcd_urb_t *dwc_otg_hcd_urb_alloc(dwc_otg_hcd_t * hcd, + int iso_desc_count, int atomic_alloc) +{ + dwc_otg_hcd_urb_t *dwc_otg_urb; + uint32_t size; + + size = + sizeof(*dwc_otg_urb) + + iso_desc_count * sizeof(struct dwc_otg_hcd_iso_packet_desc); + if (atomic_alloc) + dwc_otg_urb = DWC_ALLOC_ATOMIC(size); + else + dwc_otg_urb = DWC_ALLOC(size); + + if (dwc_otg_urb) + dwc_otg_urb->packet_count = iso_desc_count; + else { + DWC_ERROR("**** DWC OTG HCD URB alloc - " + "%salloc of %db failed\n", + atomic_alloc?"atomic ":"", size); + } + return dwc_otg_urb; +} + +void dwc_otg_hcd_urb_set_pipeinfo(dwc_otg_hcd_urb_t * dwc_otg_urb, + uint8_t dev_addr, uint8_t ep_num, + uint8_t ep_type, uint8_t ep_dir, uint16_t mps) +{ + dwc_otg_hcd_fill_pipe(&dwc_otg_urb->pipe_info, dev_addr, ep_num, + ep_type, ep_dir, mps); +#if 0 + DWC_PRINTF + ("addr = %d, ep_num = %d, ep_dir = 0x%x, ep_type = 0x%x, mps = %d\n", + dev_addr, ep_num, ep_dir, ep_type, mps); +#endif +} + +void dwc_otg_hcd_urb_set_params(dwc_otg_hcd_urb_t * dwc_otg_urb, + void *urb_handle, void *buf, dwc_dma_t dma, + uint32_t buflen, void *setup_packet, + dwc_dma_t setup_dma, uint32_t flags, + uint16_t interval) +{ + dwc_otg_urb->priv = urb_handle; + dwc_otg_urb->buf = buf; + dwc_otg_urb->dma = dma; + dwc_otg_urb->length = buflen; + dwc_otg_urb->setup_packet = setup_packet; + dwc_otg_urb->setup_dma = setup_dma; + dwc_otg_urb->flags = flags; + dwc_otg_urb->interval = interval; + dwc_otg_urb->status = -DWC_E_IN_PROGRESS; +} + +uint32_t dwc_otg_hcd_urb_get_status(dwc_otg_hcd_urb_t * dwc_otg_urb) +{ + return dwc_otg_urb->status; +} + +uint32_t dwc_otg_hcd_urb_get_actual_length(dwc_otg_hcd_urb_t * dwc_otg_urb) +{ + return dwc_otg_urb->actual_length; +} + +uint32_t dwc_otg_hcd_urb_get_error_count(dwc_otg_hcd_urb_t * dwc_otg_urb) +{ + return dwc_otg_urb->error_count; +} + +void dwc_otg_hcd_urb_set_iso_desc_params(dwc_otg_hcd_urb_t * dwc_otg_urb, + int desc_num, uint32_t offset, + uint32_t length) +{ + dwc_otg_urb->iso_descs[desc_num].offset = offset; + dwc_otg_urb->iso_descs[desc_num].length = length; +} + +uint32_t dwc_otg_hcd_urb_get_iso_desc_status(dwc_otg_hcd_urb_t * dwc_otg_urb, + int desc_num) +{ + return dwc_otg_urb->iso_descs[desc_num].status; +} + +uint32_t dwc_otg_hcd_urb_get_iso_desc_actual_length(dwc_otg_hcd_urb_t * + dwc_otg_urb, int desc_num) +{ + return dwc_otg_urb->iso_descs[desc_num].actual_length; +} + +int dwc_otg_hcd_is_bandwidth_allocated(dwc_otg_hcd_t * hcd, void *ep_handle) +{ + int allocated = 0; + dwc_otg_qh_t *qh = (dwc_otg_qh_t *) ep_handle; + + if (qh) { + if (!DWC_LIST_EMPTY(&qh->qh_list_entry)) { + allocated = 1; + } + } + return allocated; +} + +int dwc_otg_hcd_is_bandwidth_freed(dwc_otg_hcd_t * hcd, void *ep_handle) +{ + dwc_otg_qh_t *qh = (dwc_otg_qh_t *) ep_handle; + int freed = 0; + DWC_ASSERT(qh, "qh is not allocated\n"); + + if (DWC_LIST_EMPTY(&qh->qh_list_entry)) { + freed = 1; + } + + return freed; +} + +uint8_t dwc_otg_hcd_get_ep_bandwidth(dwc_otg_hcd_t * hcd, void *ep_handle) +{ + dwc_otg_qh_t *qh = (dwc_otg_qh_t *) ep_handle; + DWC_ASSERT(qh, "qh is not allocated\n"); + return qh->usecs; +} + +void dwc_otg_hcd_dump_state(dwc_otg_hcd_t * hcd) +{ +#ifdef DEBUG + int num_channels; + int i; + gnptxsts_data_t np_tx_status; + hptxsts_data_t p_tx_status; + + num_channels = hcd->core_if->core_params->host_channels; + DWC_PRINTF("\n"); + DWC_PRINTF + ("************************************************************\n"); + DWC_PRINTF("HCD State:\n"); + DWC_PRINTF(" Num channels: %d\n", num_channels); + for (i = 0; i < num_channels; i++) { + dwc_hc_t *hc = hcd->hc_ptr_array[i]; + DWC_PRINTF(" Channel %d:\n", i); + DWC_PRINTF(" dev_addr: %d, ep_num: %d, ep_is_in: %d\n", + hc->dev_addr, hc->ep_num, hc->ep_is_in); + DWC_PRINTF(" speed: %d\n", hc->speed); + DWC_PRINTF(" ep_type: %d\n", hc->ep_type); + DWC_PRINTF(" max_packet: %d\n", hc->max_packet); + DWC_PRINTF(" data_pid_start: %d\n", hc->data_pid_start); + DWC_PRINTF(" multi_count: %d\n", hc->multi_count); + DWC_PRINTF(" xfer_started: %d\n", hc->xfer_started); + DWC_PRINTF(" xfer_buff: %p\n", hc->xfer_buff); + DWC_PRINTF(" xfer_len: %d\n", hc->xfer_len); + DWC_PRINTF(" xfer_count: %d\n", hc->xfer_count); + DWC_PRINTF(" halt_on_queue: %d\n", hc->halt_on_queue); + DWC_PRINTF(" halt_pending: %d\n", hc->halt_pending); + DWC_PRINTF(" halt_status: %d\n", hc->halt_status); + DWC_PRINTF(" do_split: %d\n", hc->do_split); + DWC_PRINTF(" complete_split: %d\n", hc->complete_split); + DWC_PRINTF(" hub_addr: %d\n", hc->hub_addr); + DWC_PRINTF(" port_addr: %d\n", hc->port_addr); + DWC_PRINTF(" xact_pos: %d\n", hc->xact_pos); + DWC_PRINTF(" requests: %d\n", hc->requests); + DWC_PRINTF(" qh: %p\n", hc->qh); + if (hc->xfer_started) { + hfnum_data_t hfnum; + hcchar_data_t hcchar; + hctsiz_data_t hctsiz; + hcint_data_t hcint; + hcintmsk_data_t hcintmsk; + hfnum.d32 = + DWC_READ_REG32(&hcd->core_if-> + host_if->host_global_regs->hfnum); + hcchar.d32 = + DWC_READ_REG32(&hcd->core_if->host_if-> + hc_regs[i]->hcchar); + hctsiz.d32 = + DWC_READ_REG32(&hcd->core_if->host_if-> + hc_regs[i]->hctsiz); + hcint.d32 = + DWC_READ_REG32(&hcd->core_if->host_if-> + hc_regs[i]->hcint); + hcintmsk.d32 = + DWC_READ_REG32(&hcd->core_if->host_if-> + hc_regs[i]->hcintmsk); + DWC_PRINTF(" hfnum: 0x%08x\n", hfnum.d32); + DWC_PRINTF(" hcchar: 0x%08x\n", hcchar.d32); + DWC_PRINTF(" hctsiz: 0x%08x\n", hctsiz.d32); + DWC_PRINTF(" hcint: 0x%08x\n", hcint.d32); + DWC_PRINTF(" hcintmsk: 0x%08x\n", hcintmsk.d32); + } + if (hc->xfer_started && hc->qh) { + dwc_otg_qtd_t *qtd; + dwc_otg_hcd_urb_t *urb; + + DWC_CIRCLEQ_FOREACH(qtd, &hc->qh->qtd_list, qtd_list_entry) { + if (!qtd->in_process) + break; + + urb = qtd->urb; + DWC_PRINTF(" URB Info:\n"); + DWC_PRINTF(" qtd: %p, urb: %p\n", qtd, urb); + if (urb) { + DWC_PRINTF(" Dev: %d, EP: %d %s\n", + dwc_otg_hcd_get_dev_addr(&urb-> + pipe_info), + dwc_otg_hcd_get_ep_num(&urb-> + pipe_info), + dwc_otg_hcd_is_pipe_in(&urb-> + pipe_info) ? + "IN" : "OUT"); + DWC_PRINTF(" Max packet size: %d\n", + dwc_otg_hcd_get_mps(&urb-> + pipe_info)); + DWC_PRINTF(" transfer_buffer: %p\n", + urb->buf); + DWC_PRINTF(" transfer_dma: %p\n", + (void *)urb->dma); + DWC_PRINTF(" transfer_buffer_length: %d\n", + urb->length); + DWC_PRINTF(" actual_length: %d\n", + urb->actual_length); + } + } + } + } + DWC_PRINTF(" non_periodic_channels: %d\n", hcd->non_periodic_channels); + DWC_PRINTF(" periodic_channels: %d\n", hcd->periodic_channels); + DWC_PRINTF(" periodic_usecs: %d\n", hcd->periodic_usecs); + np_tx_status.d32 = + DWC_READ_REG32(&hcd->core_if->core_global_regs->gnptxsts); + DWC_PRINTF(" NP Tx Req Queue Space Avail: %d\n", + np_tx_status.b.nptxqspcavail); + DWC_PRINTF(" NP Tx FIFO Space Avail: %d\n", + np_tx_status.b.nptxfspcavail); + p_tx_status.d32 = + DWC_READ_REG32(&hcd->core_if->host_if->host_global_regs->hptxsts); + DWC_PRINTF(" P Tx Req Queue Space Avail: %d\n", + p_tx_status.b.ptxqspcavail); + DWC_PRINTF(" P Tx FIFO Space Avail: %d\n", p_tx_status.b.ptxfspcavail); + dwc_otg_hcd_dump_frrem(hcd); + dwc_otg_dump_global_registers(hcd->core_if); + dwc_otg_dump_host_registers(hcd->core_if); + DWC_PRINTF + ("************************************************************\n"); + DWC_PRINTF("\n"); +#endif +} + +#ifdef DEBUG +void dwc_print_setup_data(uint8_t * setup) +{ + int i; + if (CHK_DEBUG_LEVEL(DBG_HCD)) { + DWC_PRINTF("Setup Data = MSB "); + for (i = 7; i >= 0; i--) + DWC_PRINTF("%02x ", setup[i]); + DWC_PRINTF("\n"); + DWC_PRINTF(" bmRequestType Tranfer = %s\n", + (setup[0] & 0x80) ? "Device-to-Host" : + "Host-to-Device"); + DWC_PRINTF(" bmRequestType Type = "); + switch ((setup[0] & 0x60) >> 5) { + case 0: + DWC_PRINTF("Standard\n"); + break; + case 1: + DWC_PRINTF("Class\n"); + break; + case 2: + DWC_PRINTF("Vendor\n"); + break; + case 3: + DWC_PRINTF("Reserved\n"); + break; + } + DWC_PRINTF(" bmRequestType Recipient = "); + switch (setup[0] & 0x1f) { + case 0: + DWC_PRINTF("Device\n"); + break; + case 1: + DWC_PRINTF("Interface\n"); + break; + case 2: + DWC_PRINTF("Endpoint\n"); + break; + case 3: + DWC_PRINTF("Other\n"); + break; + default: + DWC_PRINTF("Reserved\n"); + break; + } + DWC_PRINTF(" bRequest = 0x%0x\n", setup[1]); + DWC_PRINTF(" wValue = 0x%0x\n", *((uint16_t *) & setup[2])); + DWC_PRINTF(" wIndex = 0x%0x\n", *((uint16_t *) & setup[4])); + DWC_PRINTF(" wLength = 0x%0x\n\n", *((uint16_t *) & setup[6])); + } +} +#endif + +void dwc_otg_hcd_dump_frrem(dwc_otg_hcd_t * hcd) +{ +#if 0 + DWC_PRINTF("Frame remaining at SOF:\n"); + DWC_PRINTF(" samples %u, accum %llu, avg %llu\n", + hcd->frrem_samples, hcd->frrem_accum, + (hcd->frrem_samples > 0) ? + hcd->frrem_accum / hcd->frrem_samples : 0); + + DWC_PRINTF("\n"); + DWC_PRINTF("Frame remaining at start_transfer (uframe 7):\n"); + DWC_PRINTF(" samples %u, accum %llu, avg %llu\n", + hcd->core_if->hfnum_7_samples, + hcd->core_if->hfnum_7_frrem_accum, + (hcd->core_if->hfnum_7_samples > + 0) ? hcd->core_if->hfnum_7_frrem_accum / + hcd->core_if->hfnum_7_samples : 0); + DWC_PRINTF("Frame remaining at start_transfer (uframe 0):\n"); + DWC_PRINTF(" samples %u, accum %llu, avg %llu\n", + hcd->core_if->hfnum_0_samples, + hcd->core_if->hfnum_0_frrem_accum, + (hcd->core_if->hfnum_0_samples > + 0) ? hcd->core_if->hfnum_0_frrem_accum / + hcd->core_if->hfnum_0_samples : 0); + DWC_PRINTF("Frame remaining at start_transfer (uframe 1-6):\n"); + DWC_PRINTF(" samples %u, accum %llu, avg %llu\n", + hcd->core_if->hfnum_other_samples, + hcd->core_if->hfnum_other_frrem_accum, + (hcd->core_if->hfnum_other_samples > + 0) ? hcd->core_if->hfnum_other_frrem_accum / + hcd->core_if->hfnum_other_samples : 0); + + DWC_PRINTF("\n"); + DWC_PRINTF("Frame remaining at sample point A (uframe 7):\n"); + DWC_PRINTF(" samples %u, accum %llu, avg %llu\n", + hcd->hfnum_7_samples_a, hcd->hfnum_7_frrem_accum_a, + (hcd->hfnum_7_samples_a > 0) ? + hcd->hfnum_7_frrem_accum_a / hcd->hfnum_7_samples_a : 0); + DWC_PRINTF("Frame remaining at sample point A (uframe 0):\n"); + DWC_PRINTF(" samples %u, accum %llu, avg %llu\n", + hcd->hfnum_0_samples_a, hcd->hfnum_0_frrem_accum_a, + (hcd->hfnum_0_samples_a > 0) ? + hcd->hfnum_0_frrem_accum_a / hcd->hfnum_0_samples_a : 0); + DWC_PRINTF("Frame remaining at sample point A (uframe 1-6):\n"); + DWC_PRINTF(" samples %u, accum %llu, avg %llu\n", + hcd->hfnum_other_samples_a, hcd->hfnum_other_frrem_accum_a, + (hcd->hfnum_other_samples_a > 0) ? + hcd->hfnum_other_frrem_accum_a / + hcd->hfnum_other_samples_a : 0); + + DWC_PRINTF("\n"); + DWC_PRINTF("Frame remaining at sample point B (uframe 7):\n"); + DWC_PRINTF(" samples %u, accum %llu, avg %llu\n", + hcd->hfnum_7_samples_b, hcd->hfnum_7_frrem_accum_b, + (hcd->hfnum_7_samples_b > 0) ? + hcd->hfnum_7_frrem_accum_b / hcd->hfnum_7_samples_b : 0); + DWC_PRINTF("Frame remaining at sample point B (uframe 0):\n"); + DWC_PRINTF(" samples %u, accum %llu, avg %llu\n", + hcd->hfnum_0_samples_b, hcd->hfnum_0_frrem_accum_b, + (hcd->hfnum_0_samples_b > 0) ? + hcd->hfnum_0_frrem_accum_b / hcd->hfnum_0_samples_b : 0); + DWC_PRINTF("Frame remaining at sample point B (uframe 1-6):\n"); + DWC_PRINTF(" samples %u, accum %llu, avg %llu\n", + hcd->hfnum_other_samples_b, hcd->hfnum_other_frrem_accum_b, + (hcd->hfnum_other_samples_b > 0) ? + hcd->hfnum_other_frrem_accum_b / + hcd->hfnum_other_samples_b : 0); +#endif +} + +#endif /* DWC_DEVICE_ONLY */ --- linux-raspi2-4.2.0.orig/drivers/usb/host/dwc_otg/dwc_otg_hcd.h +++ linux-raspi2-4.2.0/drivers/usb/host/dwc_otg/dwc_otg_hcd.h @@ -0,0 +1,862 @@ +/* ========================================================================== + * $File: //dwh/usb_iip/dev/software/otg/linux/drivers/dwc_otg_hcd.h $ + * $Revision: #58 $ + * $Date: 2011/09/15 $ + * $Change: 1846647 $ + * + * Synopsys HS OTG Linux Software Driver and documentation (hereinafter, + * "Software") is an Unsupported proprietary work of Synopsys, Inc. unless + * otherwise expressly agreed to in writing between Synopsys and you. + * + * The Software IS NOT an item of Licensed Software or Licensed Product under + * any End User Software License Agreement or Agreement for Licensed Product + * with Synopsys or any supplement thereto. You are permitted to use and + * redistribute this Software in source and binary forms, with or without + * modification, provided that redistributions of source code must retain this + * notice. You may not view, use, disclose, copy or distribute this file or + * any information contained herein except pursuant to this license grant from + * Synopsys. If you do not agree with this notice, including the disclaimer + * below, then you are not authorized to use the Software. + * + * THIS SOFTWARE IS BEING DISTRIBUTED BY SYNOPSYS SOLELY ON AN "AS IS" BASIS + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE HEREBY DISCLAIMED. IN NO EVENT SHALL SYNOPSYS BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH + * DAMAGE. + * ========================================================================== */ +#ifndef DWC_DEVICE_ONLY +#ifndef __DWC_HCD_H__ +#define __DWC_HCD_H__ + +#include "dwc_otg_os_dep.h" +#include "usb.h" +#include "dwc_otg_hcd_if.h" +#include "dwc_otg_core_if.h" +#include "dwc_list.h" +#include "dwc_otg_cil.h" +#include "dwc_otg_fiq_fsm.h" + + +/** + * @file + * + * This file contains the structures, constants, and interfaces for + * the Host Contoller Driver (HCD). + * + * The Host Controller Driver (HCD) is responsible for translating requests + * from the USB Driver into the appropriate actions on the DWC_otg controller. + * It isolates the USBD from the specifics of the controller by providing an + * API to the USBD. + */ + +struct dwc_otg_hcd_pipe_info { + uint8_t dev_addr; + uint8_t ep_num; + uint8_t pipe_type; + uint8_t pipe_dir; + uint16_t mps; +}; + +struct dwc_otg_hcd_iso_packet_desc { + uint32_t offset; + uint32_t length; + uint32_t actual_length; + uint32_t status; +}; + +struct dwc_otg_qtd; + +struct dwc_otg_hcd_urb { + void *priv; + struct dwc_otg_qtd *qtd; + void *buf; + dwc_dma_t dma; + void *setup_packet; + dwc_dma_t setup_dma; + uint32_t length; + uint32_t actual_length; + uint32_t status; + uint32_t error_count; + uint32_t packet_count; + uint32_t flags; + uint16_t interval; + struct dwc_otg_hcd_pipe_info pipe_info; + struct dwc_otg_hcd_iso_packet_desc iso_descs[0]; +}; + +static inline uint8_t dwc_otg_hcd_get_ep_num(struct dwc_otg_hcd_pipe_info *pipe) +{ + return pipe->ep_num; +} + +static inline uint8_t dwc_otg_hcd_get_pipe_type(struct dwc_otg_hcd_pipe_info + *pipe) +{ + return pipe->pipe_type; +} + +static inline uint16_t dwc_otg_hcd_get_mps(struct dwc_otg_hcd_pipe_info *pipe) +{ + return pipe->mps; +} + +static inline uint8_t dwc_otg_hcd_get_dev_addr(struct dwc_otg_hcd_pipe_info + *pipe) +{ + return pipe->dev_addr; +} + +static inline uint8_t dwc_otg_hcd_is_pipe_isoc(struct dwc_otg_hcd_pipe_info + *pipe) +{ + return (pipe->pipe_type == UE_ISOCHRONOUS); +} + +static inline uint8_t dwc_otg_hcd_is_pipe_int(struct dwc_otg_hcd_pipe_info + *pipe) +{ + return (pipe->pipe_type == UE_INTERRUPT); +} + +static inline uint8_t dwc_otg_hcd_is_pipe_bulk(struct dwc_otg_hcd_pipe_info + *pipe) +{ + return (pipe->pipe_type == UE_BULK); +} + +static inline uint8_t dwc_otg_hcd_is_pipe_control(struct dwc_otg_hcd_pipe_info + *pipe) +{ + return (pipe->pipe_type == UE_CONTROL); +} + +static inline uint8_t dwc_otg_hcd_is_pipe_in(struct dwc_otg_hcd_pipe_info *pipe) +{ + return (pipe->pipe_dir == UE_DIR_IN); +} + +static inline uint8_t dwc_otg_hcd_is_pipe_out(struct dwc_otg_hcd_pipe_info + *pipe) +{ + return (!dwc_otg_hcd_is_pipe_in(pipe)); +} + +static inline void dwc_otg_hcd_fill_pipe(struct dwc_otg_hcd_pipe_info *pipe, + uint8_t devaddr, uint8_t ep_num, + uint8_t pipe_type, uint8_t pipe_dir, + uint16_t mps) +{ + pipe->dev_addr = devaddr; + pipe->ep_num = ep_num; + pipe->pipe_type = pipe_type; + pipe->pipe_dir = pipe_dir; + pipe->mps = mps; +} + +/** + * Phases for control transfers. + */ +typedef enum dwc_otg_control_phase { + DWC_OTG_CONTROL_SETUP, + DWC_OTG_CONTROL_DATA, + DWC_OTG_CONTROL_STATUS +} dwc_otg_control_phase_e; + +/** Transaction types. */ +typedef enum dwc_otg_transaction_type { + DWC_OTG_TRANSACTION_NONE = 0, + DWC_OTG_TRANSACTION_PERIODIC = 1, + DWC_OTG_TRANSACTION_NON_PERIODIC = 2, + DWC_OTG_TRANSACTION_ALL = DWC_OTG_TRANSACTION_PERIODIC + DWC_OTG_TRANSACTION_NON_PERIODIC +} dwc_otg_transaction_type_e; + +struct dwc_otg_qh; + +/** + * A Queue Transfer Descriptor (QTD) holds the state of a bulk, control, + * interrupt, or isochronous transfer. A single QTD is created for each URB + * (of one of these types) submitted to the HCD. The transfer associated with + * a QTD may require one or multiple transactions. + * + * A QTD is linked to a Queue Head, which is entered in either the + * non-periodic or periodic schedule for execution. When a QTD is chosen for + * execution, some or all of its transactions may be executed. After + * execution, the state of the QTD is updated. The QTD may be retired if all + * its transactions are complete or if an error occurred. Otherwise, it + * remains in the schedule so more transactions can be executed later. + */ +typedef struct dwc_otg_qtd { + /** + * Determines the PID of the next data packet for the data phase of + * control transfers. Ignored for other transfer types.
+ * One of the following values: + * - DWC_OTG_HC_PID_DATA0 + * - DWC_OTG_HC_PID_DATA1 + */ + uint8_t data_toggle; + + /** Current phase for control transfers (Setup, Data, or Status). */ + dwc_otg_control_phase_e control_phase; + + /** Keep track of the current split type + * for FS/LS endpoints on a HS Hub */ + uint8_t complete_split; + + /** How many bytes transferred during SSPLIT OUT */ + uint32_t ssplit_out_xfer_count; + + /** + * Holds the number of bus errors that have occurred for a transaction + * within this transfer. + */ + uint8_t error_count; + + /** + * Index of the next frame descriptor for an isochronous transfer. A + * frame descriptor describes the buffer position and length of the + * data to be transferred in the next scheduled (micro)frame of an + * isochronous transfer. It also holds status for that transaction. + * The frame index starts at 0. + */ + uint16_t isoc_frame_index; + + /** Position of the ISOC split on full/low speed */ + uint8_t isoc_split_pos; + + /** Position of the ISOC split in the buffer for the current frame */ + uint16_t isoc_split_offset; + + /** URB for this transfer */ + struct dwc_otg_hcd_urb *urb; + + struct dwc_otg_qh *qh; + + /** This list of QTDs */ + DWC_CIRCLEQ_ENTRY(dwc_otg_qtd) qtd_list_entry; + + /** Indicates if this QTD is currently processed by HW. */ + uint8_t in_process; + + /** Number of DMA descriptors for this QTD */ + uint8_t n_desc; + + /** + * Last activated frame(packet) index. + * Used in Descriptor DMA mode only. + */ + uint16_t isoc_frame_index_last; + +} dwc_otg_qtd_t; + +DWC_CIRCLEQ_HEAD(dwc_otg_qtd_list, dwc_otg_qtd); + +/** + * A Queue Head (QH) holds the static characteristics of an endpoint and + * maintains a list of transfers (QTDs) for that endpoint. A QH structure may + * be entered in either the non-periodic or periodic schedule. + */ +typedef struct dwc_otg_qh { + /** + * Endpoint type. + * One of the following values: + * - UE_CONTROL + * - UE_BULK + * - UE_INTERRUPT + * - UE_ISOCHRONOUS + */ + uint8_t ep_type; + uint8_t ep_is_in; + + /** wMaxPacketSize Field of Endpoint Descriptor. */ + uint16_t maxp; + + /** + * Device speed. + * One of the following values: + * - DWC_OTG_EP_SPEED_LOW + * - DWC_OTG_EP_SPEED_FULL + * - DWC_OTG_EP_SPEED_HIGH + */ + uint8_t dev_speed; + + /** + * Determines the PID of the next data packet for non-control + * transfers. Ignored for control transfers.
+ * One of the following values: + * - DWC_OTG_HC_PID_DATA0 + * - DWC_OTG_HC_PID_DATA1 + */ + uint8_t data_toggle; + + /** Ping state if 1. */ + uint8_t ping_state; + + /** + * List of QTDs for this QH. + */ + struct dwc_otg_qtd_list qtd_list; + + /** Host channel currently processing transfers for this QH. */ + struct dwc_hc *channel; + + /** Full/low speed endpoint on high-speed hub requires split. */ + uint8_t do_split; + + /** @name Periodic schedule information */ + /** @{ */ + + /** Bandwidth in microseconds per (micro)frame. */ + uint16_t usecs; + + /** Interval between transfers in (micro)frames. */ + uint16_t interval; + + /** + * (micro)frame to initialize a periodic transfer. The transfer + * executes in the following (micro)frame. + */ + uint16_t sched_frame; + + /* + ** Frame a NAK was received on this queue head, used to minimise NAK retransmission + */ + uint16_t nak_frame; + + /** (micro)frame at which last start split was initialized. */ + uint16_t start_split_frame; + + /** @} */ + + /** + * Used instead of original buffer if + * it(physical address) is not dword-aligned. + */ + uint8_t *dw_align_buf; + dwc_dma_t dw_align_buf_dma; + + /** Entry for QH in either the periodic or non-periodic schedule. */ + dwc_list_link_t qh_list_entry; + + /** @name Descriptor DMA support */ + /** @{ */ + + /** Descriptor List. */ + dwc_otg_host_dma_desc_t *desc_list; + + /** Descriptor List physical address. */ + dwc_dma_t desc_list_dma; + + /** + * Xfer Bytes array. + * Each element corresponds to a descriptor and indicates + * original XferSize size value for the descriptor. + */ + uint32_t *n_bytes; + + /** Actual number of transfer descriptors in a list. */ + uint16_t ntd; + + /** First activated isochronous transfer descriptor index. */ + uint8_t td_first; + /** Last activated isochronous transfer descriptor index. */ + uint8_t td_last; + + /** @} */ + + + uint16_t speed; + uint16_t frame_usecs[8]; + + uint32_t skip_count; +} dwc_otg_qh_t; + +DWC_CIRCLEQ_HEAD(hc_list, dwc_hc); + +typedef struct urb_tq_entry { + struct urb *urb; + DWC_TAILQ_ENTRY(urb_tq_entry) urb_tq_entries; +} urb_tq_entry_t; + +DWC_TAILQ_HEAD(urb_list, urb_tq_entry); + +/** + * This structure holds the state of the HCD, including the non-periodic and + * periodic schedules. + */ +struct dwc_otg_hcd { + /** The DWC otg device pointer */ + struct dwc_otg_device *otg_dev; + /** DWC OTG Core Interface Layer */ + dwc_otg_core_if_t *core_if; + + /** Function HCD driver callbacks */ + struct dwc_otg_hcd_function_ops *fops; + + /** Internal DWC HCD Flags */ + volatile union dwc_otg_hcd_internal_flags { + uint32_t d32; + struct { + unsigned port_connect_status_change:1; + unsigned port_connect_status:1; + unsigned port_reset_change:1; + unsigned port_enable_change:1; + unsigned port_suspend_change:1; + unsigned port_over_current_change:1; + unsigned port_l1_change:1; + unsigned reserved:26; + } b; + } flags; + + /** + * Inactive items in the non-periodic schedule. This is a list of + * Queue Heads. Transfers associated with these Queue Heads are not + * currently assigned to a host channel. + */ + dwc_list_link_t non_periodic_sched_inactive; + + /** + * Active items in the non-periodic schedule. This is a list of + * Queue Heads. Transfers associated with these Queue Heads are + * currently assigned to a host channel. + */ + dwc_list_link_t non_periodic_sched_active; + + /** + * Pointer to the next Queue Head to process in the active + * non-periodic schedule. + */ + dwc_list_link_t *non_periodic_qh_ptr; + + /** + * Inactive items in the periodic schedule. This is a list of QHs for + * periodic transfers that are _not_ scheduled for the next frame. + * Each QH in the list has an interval counter that determines when it + * needs to be scheduled for execution. This scheduling mechanism + * allows only a simple calculation for periodic bandwidth used (i.e. + * must assume that all periodic transfers may need to execute in the + * same frame). However, it greatly simplifies scheduling and should + * be sufficient for the vast majority of OTG hosts, which need to + * connect to a small number of peripherals at one time. + * + * Items move from this list to periodic_sched_ready when the QH + * interval counter is 0 at SOF. + */ + dwc_list_link_t periodic_sched_inactive; + + /** + * List of periodic QHs that are ready for execution in the next + * frame, but have not yet been assigned to host channels. + * + * Items move from this list to periodic_sched_assigned as host + * channels become available during the current frame. + */ + dwc_list_link_t periodic_sched_ready; + + /** + * List of periodic QHs to be executed in the next frame that are + * assigned to host channels. + * + * Items move from this list to periodic_sched_queued as the + * transactions for the QH are queued to the DWC_otg controller. + */ + dwc_list_link_t periodic_sched_assigned; + + /** + * List of periodic QHs that have been queued for execution. + * + * Items move from this list to either periodic_sched_inactive or + * periodic_sched_ready when the channel associated with the transfer + * is released. If the interval for the QH is 1, the item moves to + * periodic_sched_ready because it must be rescheduled for the next + * frame. Otherwise, the item moves to periodic_sched_inactive. + */ + dwc_list_link_t periodic_sched_queued; + + /** + * Total bandwidth claimed so far for periodic transfers. This value + * is in microseconds per (micro)frame. The assumption is that all + * periodic transfers may occur in the same (micro)frame. + */ + uint16_t periodic_usecs; + + /** + * Total bandwidth claimed so far for all periodic transfers + * in a frame. + * This will include a mixture of HS and FS transfers. + * Units are microseconds per (micro)frame. + * We have a budget per frame and have to schedule + * transactions accordingly. + * Watch out for the fact that things are actually scheduled for the + * "next frame". + */ + uint16_t frame_usecs[8]; + + + /** + * Frame number read from the core at SOF. The value ranges from 0 to + * DWC_HFNUM_MAX_FRNUM. + */ + uint16_t frame_number; + + /** + * Count of periodic QHs, if using several eps. For SOF enable/disable. + */ + uint16_t periodic_qh_count; + + /** + * Free host channels in the controller. This is a list of + * dwc_hc_t items. + */ + struct hc_list free_hc_list; + /** + * Number of host channels assigned to periodic transfers. Currently + * assuming that there is a dedicated host channel for each periodic + * transaction and at least one host channel available for + * non-periodic transactions. + */ + int periodic_channels; /* microframe_schedule==0 */ + + /** + * Number of host channels assigned to non-periodic transfers. + */ + int non_periodic_channels; /* microframe_schedule==0 */ + + /** + * Number of host channels assigned to non-periodic transfers. + */ + int available_host_channels; + + /** + * Array of pointers to the host channel descriptors. Allows accessing + * a host channel descriptor given the host channel number. This is + * useful in interrupt handlers. + */ + struct dwc_hc *hc_ptr_array[MAX_EPS_CHANNELS]; + + /** + * Buffer to use for any data received during the status phase of a + * control transfer. Normally no data is transferred during the status + * phase. This buffer is used as a bit bucket. + */ + uint8_t *status_buf; + + /** + * DMA address for status_buf. + */ + dma_addr_t status_buf_dma; +#define DWC_OTG_HCD_STATUS_BUF_SIZE 64 + + /** + * Connection timer. An OTG host must display a message if the device + * does not connect. Started when the VBus power is turned on via + * sysfs attribute "buspower". + */ + dwc_timer_t *conn_timer; + + /* Tasket to do a reset */ + dwc_tasklet_t *reset_tasklet; + + dwc_tasklet_t *completion_tasklet; + struct urb_list completed_urb_list; + + /* */ + dwc_spinlock_t *lock; + dwc_spinlock_t *channel_lock; + /** + * Private data that could be used by OS wrapper. + */ + void *priv; + + uint8_t otg_port; + + /** Frame List */ + uint32_t *frame_list; + + /** Hub - Port assignment */ + int hub_port[128]; +#ifdef FIQ_DEBUG + int hub_port_alloc[2048]; +#endif + + /** Frame List DMA address */ + dma_addr_t frame_list_dma; + + struct fiq_stack *fiq_stack; + struct fiq_state *fiq_state; + + /** Virtual address for split transaction DMA bounce buffers */ + struct fiq_dma_blob *fiq_dmab; + +#ifdef DEBUG + uint32_t frrem_samples; + uint64_t frrem_accum; + + uint32_t hfnum_7_samples_a; + uint64_t hfnum_7_frrem_accum_a; + uint32_t hfnum_0_samples_a; + uint64_t hfnum_0_frrem_accum_a; + uint32_t hfnum_other_samples_a; + uint64_t hfnum_other_frrem_accum_a; + + uint32_t hfnum_7_samples_b; + uint64_t hfnum_7_frrem_accum_b; + uint32_t hfnum_0_samples_b; + uint64_t hfnum_0_frrem_accum_b; + uint32_t hfnum_other_samples_b; + uint64_t hfnum_other_frrem_accum_b; +#endif +}; + +/** @name Transaction Execution Functions */ +/** @{ */ +extern dwc_otg_transaction_type_e dwc_otg_hcd_select_transactions(dwc_otg_hcd_t + * hcd); +extern void dwc_otg_hcd_queue_transactions(dwc_otg_hcd_t * hcd, + dwc_otg_transaction_type_e tr_type); + +int dwc_otg_hcd_allocate_port(dwc_otg_hcd_t * hcd, dwc_otg_qh_t *qh); +void dwc_otg_hcd_release_port(dwc_otg_hcd_t * dwc_otg_hcd, dwc_otg_qh_t *qh); + +extern int fiq_fsm_queue_transaction(dwc_otg_hcd_t *hcd, dwc_otg_qh_t *qh); +extern int fiq_fsm_transaction_suitable(dwc_otg_qh_t *qh); +extern void dwc_otg_cleanup_fiq_channel(dwc_otg_hcd_t *hcd, uint32_t num); + +/** @} */ + +/** @name Interrupt Handler Functions */ +/** @{ */ +extern int32_t dwc_otg_hcd_handle_intr(dwc_otg_hcd_t * dwc_otg_hcd); +extern int32_t dwc_otg_hcd_handle_sof_intr(dwc_otg_hcd_t * dwc_otg_hcd); +extern int32_t dwc_otg_hcd_handle_rx_status_q_level_intr(dwc_otg_hcd_t * + dwc_otg_hcd); +extern int32_t dwc_otg_hcd_handle_np_tx_fifo_empty_intr(dwc_otg_hcd_t * + dwc_otg_hcd); +extern int32_t dwc_otg_hcd_handle_perio_tx_fifo_empty_intr(dwc_otg_hcd_t * + dwc_otg_hcd); +extern int32_t dwc_otg_hcd_handle_incomplete_periodic_intr(dwc_otg_hcd_t * + dwc_otg_hcd); +extern int32_t dwc_otg_hcd_handle_port_intr(dwc_otg_hcd_t * dwc_otg_hcd); +extern int32_t dwc_otg_hcd_handle_conn_id_status_change_intr(dwc_otg_hcd_t * + dwc_otg_hcd); +extern int32_t dwc_otg_hcd_handle_disconnect_intr(dwc_otg_hcd_t * dwc_otg_hcd); +extern int32_t dwc_otg_hcd_handle_hc_intr(dwc_otg_hcd_t * dwc_otg_hcd); +extern int32_t dwc_otg_hcd_handle_hc_n_intr(dwc_otg_hcd_t * dwc_otg_hcd, + uint32_t num); +extern int32_t dwc_otg_hcd_handle_session_req_intr(dwc_otg_hcd_t * dwc_otg_hcd); +extern int32_t dwc_otg_hcd_handle_wakeup_detected_intr(dwc_otg_hcd_t * + dwc_otg_hcd); +/** @} */ + +/** @name Schedule Queue Functions */ +/** @{ */ + +/* Implemented in dwc_otg_hcd_queue.c */ +extern dwc_otg_qh_t *dwc_otg_hcd_qh_create(dwc_otg_hcd_t * hcd, + dwc_otg_hcd_urb_t * urb, int atomic_alloc); +extern void dwc_otg_hcd_qh_free(dwc_otg_hcd_t * hcd, dwc_otg_qh_t * qh); +extern int dwc_otg_hcd_qh_add(dwc_otg_hcd_t * hcd, dwc_otg_qh_t * qh); +extern void dwc_otg_hcd_qh_remove(dwc_otg_hcd_t * hcd, dwc_otg_qh_t * qh); +extern void dwc_otg_hcd_qh_deactivate(dwc_otg_hcd_t * hcd, dwc_otg_qh_t * qh, + int sched_csplit); + +/** Remove and free a QH */ +static inline void dwc_otg_hcd_qh_remove_and_free(dwc_otg_hcd_t * hcd, + dwc_otg_qh_t * qh) +{ + dwc_irqflags_t flags; + DWC_SPINLOCK_IRQSAVE(hcd->lock, &flags); + dwc_otg_hcd_qh_remove(hcd, qh); + DWC_SPINUNLOCK_IRQRESTORE(hcd->lock, flags); + dwc_otg_hcd_qh_free(hcd, qh); +} + +/** Allocates memory for a QH structure. + * @return Returns the memory allocate or NULL on error. */ +static inline dwc_otg_qh_t *dwc_otg_hcd_qh_alloc(int atomic_alloc) +{ + if (atomic_alloc) + return (dwc_otg_qh_t *) DWC_ALLOC_ATOMIC(sizeof(dwc_otg_qh_t)); + else + return (dwc_otg_qh_t *) DWC_ALLOC(sizeof(dwc_otg_qh_t)); +} + +extern dwc_otg_qtd_t *dwc_otg_hcd_qtd_create(dwc_otg_hcd_urb_t * urb, + int atomic_alloc); +extern void dwc_otg_hcd_qtd_init(dwc_otg_qtd_t * qtd, dwc_otg_hcd_urb_t * urb); +extern int dwc_otg_hcd_qtd_add(dwc_otg_qtd_t * qtd, dwc_otg_hcd_t * dwc_otg_hcd, + dwc_otg_qh_t ** qh, int atomic_alloc); + +/** Allocates memory for a QTD structure. + * @return Returns the memory allocate or NULL on error. */ +static inline dwc_otg_qtd_t *dwc_otg_hcd_qtd_alloc(int atomic_alloc) +{ + if (atomic_alloc) + return (dwc_otg_qtd_t *) DWC_ALLOC_ATOMIC(sizeof(dwc_otg_qtd_t)); + else + return (dwc_otg_qtd_t *) DWC_ALLOC(sizeof(dwc_otg_qtd_t)); +} + +/** Frees the memory for a QTD structure. QTD should already be removed from + * list. + * @param qtd QTD to free.*/ +static inline void dwc_otg_hcd_qtd_free(dwc_otg_qtd_t * qtd) +{ + DWC_FREE(qtd); +} + +/** Removes a QTD from list. + * @param hcd HCD instance. + * @param qtd QTD to remove from list. + * @param qh QTD belongs to. + */ +static inline void dwc_otg_hcd_qtd_remove(dwc_otg_hcd_t * hcd, + dwc_otg_qtd_t * qtd, + dwc_otg_qh_t * qh) +{ + DWC_CIRCLEQ_REMOVE(&qh->qtd_list, qtd, qtd_list_entry); +} + +/** Remove and free a QTD + * Need to disable IRQ and hold hcd lock while calling this function out of + * interrupt servicing chain */ +static inline void dwc_otg_hcd_qtd_remove_and_free(dwc_otg_hcd_t * hcd, + dwc_otg_qtd_t * qtd, + dwc_otg_qh_t * qh) +{ + dwc_otg_hcd_qtd_remove(hcd, qtd, qh); + dwc_otg_hcd_qtd_free(qtd); +} + +/** @} */ + +/** @name Descriptor DMA Supporting Functions */ +/** @{ */ + +extern void dwc_otg_hcd_start_xfer_ddma(dwc_otg_hcd_t * hcd, dwc_otg_qh_t * qh); +extern void dwc_otg_hcd_complete_xfer_ddma(dwc_otg_hcd_t * hcd, + dwc_hc_t * hc, + dwc_otg_hc_regs_t * hc_regs, + dwc_otg_halt_status_e halt_status); + +extern int dwc_otg_hcd_qh_init_ddma(dwc_otg_hcd_t * hcd, dwc_otg_qh_t * qh); +extern void dwc_otg_hcd_qh_free_ddma(dwc_otg_hcd_t * hcd, dwc_otg_qh_t * qh); + +/** @} */ + +/** @name Internal Functions */ +/** @{ */ +dwc_otg_qh_t *dwc_urb_to_qh(dwc_otg_hcd_urb_t * urb); +/** @} */ + +#ifdef CONFIG_USB_DWC_OTG_LPM +extern int dwc_otg_hcd_get_hc_for_lpm_tran(dwc_otg_hcd_t * hcd, + uint8_t devaddr); +extern void dwc_otg_hcd_free_hc_from_lpm(dwc_otg_hcd_t * hcd); +#endif + +/** Gets the QH that contains the list_head */ +#define dwc_list_to_qh(_list_head_ptr_) container_of(_list_head_ptr_, dwc_otg_qh_t, qh_list_entry) + +/** Gets the QTD that contains the list_head */ +#define dwc_list_to_qtd(_list_head_ptr_) container_of(_list_head_ptr_, dwc_otg_qtd_t, qtd_list_entry) + +/** Check if QH is non-periodic */ +#define dwc_qh_is_non_per(_qh_ptr_) ((_qh_ptr_->ep_type == UE_BULK) || \ + (_qh_ptr_->ep_type == UE_CONTROL)) + +/** High bandwidth multiplier as encoded in highspeed endpoint descriptors */ +#define dwc_hb_mult(wMaxPacketSize) (1 + (((wMaxPacketSize) >> 11) & 0x03)) + +/** Packet size for any kind of endpoint descriptor */ +#define dwc_max_packet(wMaxPacketSize) ((wMaxPacketSize) & 0x07ff) + +/** + * Returns true if _frame1 is less than or equal to _frame2. The comparison is + * done modulo DWC_HFNUM_MAX_FRNUM. This accounts for the rollover of the + * frame number when the max frame number is reached. + */ +static inline int dwc_frame_num_le(uint16_t frame1, uint16_t frame2) +{ + return ((frame2 - frame1) & DWC_HFNUM_MAX_FRNUM) <= + (DWC_HFNUM_MAX_FRNUM >> 1); +} + +/** + * Returns true if _frame1 is greater than _frame2. The comparison is done + * modulo DWC_HFNUM_MAX_FRNUM. This accounts for the rollover of the frame + * number when the max frame number is reached. + */ +static inline int dwc_frame_num_gt(uint16_t frame1, uint16_t frame2) +{ + return (frame1 != frame2) && + (((frame1 - frame2) & DWC_HFNUM_MAX_FRNUM) < + (DWC_HFNUM_MAX_FRNUM >> 1)); +} + +/** + * Increments _frame by the amount specified by _inc. The addition is done + * modulo DWC_HFNUM_MAX_FRNUM. Returns the incremented value. + */ +static inline uint16_t dwc_frame_num_inc(uint16_t frame, uint16_t inc) +{ + return (frame + inc) & DWC_HFNUM_MAX_FRNUM; +} + +static inline uint16_t dwc_full_frame_num(uint16_t frame) +{ + return (frame & DWC_HFNUM_MAX_FRNUM) >> 3; +} + +static inline uint16_t dwc_micro_frame_num(uint16_t frame) +{ + return frame & 0x7; +} + +void dwc_otg_hcd_save_data_toggle(dwc_hc_t * hc, + dwc_otg_hc_regs_t * hc_regs, + dwc_otg_qtd_t * qtd); + +#ifdef DEBUG +/** + * Macro to sample the remaining PHY clocks left in the current frame. This + * may be used during debugging to determine the average time it takes to + * execute sections of code. There are two possible sample points, "a" and + * "b", so the _letter argument must be one of these values. + * + * To dump the average sample times, read the "hcd_frrem" sysfs attribute. For + * example, "cat /sys/devices/lm0/hcd_frrem". + */ +#define dwc_sample_frrem(_hcd, _qh, _letter) \ +{ \ + hfnum_data_t hfnum; \ + dwc_otg_qtd_t *qtd; \ + qtd = list_entry(_qh->qtd_list.next, dwc_otg_qtd_t, qtd_list_entry); \ + if (usb_pipeint(qtd->urb->pipe) && _qh->start_split_frame != 0 && !qtd->complete_split) { \ + hfnum.d32 = DWC_READ_REG32(&_hcd->core_if->host_if->host_global_regs->hfnum); \ + switch (hfnum.b.frnum & 0x7) { \ + case 7: \ + _hcd->hfnum_7_samples_##_letter++; \ + _hcd->hfnum_7_frrem_accum_##_letter += hfnum.b.frrem; \ + break; \ + case 0: \ + _hcd->hfnum_0_samples_##_letter++; \ + _hcd->hfnum_0_frrem_accum_##_letter += hfnum.b.frrem; \ + break; \ + default: \ + _hcd->hfnum_other_samples_##_letter++; \ + _hcd->hfnum_other_frrem_accum_##_letter += hfnum.b.frrem; \ + break; \ + } \ + } \ +} +#else +#define dwc_sample_frrem(_hcd, _qh, _letter) +#endif +#endif +#endif /* DWC_DEVICE_ONLY */ --- linux-raspi2-4.2.0.orig/drivers/usb/host/dwc_otg/dwc_otg_hcd_ddma.c +++ linux-raspi2-4.2.0/drivers/usb/host/dwc_otg/dwc_otg_hcd_ddma.c @@ -0,0 +1,1132 @@ +/*========================================================================== + * $File: //dwh/usb_iip/dev/software/otg/linux/drivers/dwc_otg_hcd_ddma.c $ + * $Revision: #10 $ + * $Date: 2011/10/20 $ + * $Change: 1869464 $ + * + * Synopsys HS OTG Linux Software Driver and documentation (hereinafter, + * "Software") is an Unsupported proprietary work of Synopsys, Inc. unless + * otherwise expressly agreed to in writing between Synopsys and you. + * + * The Software IS NOT an item of Licensed Software or Licensed Product under + * any End User Software License Agreement or Agreement for Licensed Product + * with Synopsys or any supplement thereto. You are permitted to use and + * redistribute this Software in source and binary forms, with or without + * modification, provided that redistributions of source code must retain this + * notice. You may not view, use, disclose, copy or distribute this file or + * any information contained herein except pursuant to this license grant from + * Synopsys. If you do not agree with this notice, including the disclaimer + * below, then you are not authorized to use the Software. + * + * THIS SOFTWARE IS BEING DISTRIBUTED BY SYNOPSYS SOLELY ON AN "AS IS" BASIS + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE HEREBY DISCLAIMED. IN NO EVENT SHALL SYNOPSYS BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH + * DAMAGE. + * ========================================================================== */ +#ifndef DWC_DEVICE_ONLY + +/** @file + * This file contains Descriptor DMA support implementation for host mode. + */ + +#include "dwc_otg_hcd.h" +#include "dwc_otg_regs.h" + +extern bool microframe_schedule; + +static inline uint8_t frame_list_idx(uint16_t frame) +{ + return (frame & (MAX_FRLIST_EN_NUM - 1)); +} + +static inline uint16_t desclist_idx_inc(uint16_t idx, uint16_t inc, uint8_t speed) +{ + return (idx + inc) & + (((speed == + DWC_OTG_EP_SPEED_HIGH) ? MAX_DMA_DESC_NUM_HS_ISOC : + MAX_DMA_DESC_NUM_GENERIC) - 1); +} + +static inline uint16_t desclist_idx_dec(uint16_t idx, uint16_t inc, uint8_t speed) +{ + return (idx - inc) & + (((speed == + DWC_OTG_EP_SPEED_HIGH) ? MAX_DMA_DESC_NUM_HS_ISOC : + MAX_DMA_DESC_NUM_GENERIC) - 1); +} + +static inline uint16_t max_desc_num(dwc_otg_qh_t * qh) +{ + return (((qh->ep_type == UE_ISOCHRONOUS) + && (qh->dev_speed == DWC_OTG_EP_SPEED_HIGH)) + ? MAX_DMA_DESC_NUM_HS_ISOC : MAX_DMA_DESC_NUM_GENERIC); +} +static inline uint16_t frame_incr_val(dwc_otg_qh_t * qh) +{ + return ((qh->dev_speed == DWC_OTG_EP_SPEED_HIGH) + ? ((qh->interval + 8 - 1) / 8) + : qh->interval); +} + +static int desc_list_alloc(dwc_otg_qh_t * qh) +{ + int retval = 0; + + qh->desc_list = (dwc_otg_host_dma_desc_t *) + DWC_DMA_ALLOC(sizeof(dwc_otg_host_dma_desc_t) * max_desc_num(qh), + &qh->desc_list_dma); + + if (!qh->desc_list) { + retval = -DWC_E_NO_MEMORY; + DWC_ERROR("%s: DMA descriptor list allocation failed\n", __func__); + + } + + dwc_memset(qh->desc_list, 0x00, + sizeof(dwc_otg_host_dma_desc_t) * max_desc_num(qh)); + + qh->n_bytes = + (uint32_t *) DWC_ALLOC(sizeof(uint32_t) * max_desc_num(qh)); + + if (!qh->n_bytes) { + retval = -DWC_E_NO_MEMORY; + DWC_ERROR + ("%s: Failed to allocate array for descriptors' size actual values\n", + __func__); + + } + return retval; + +} + +static void desc_list_free(dwc_otg_qh_t * qh) +{ + if (qh->desc_list) { + DWC_DMA_FREE(max_desc_num(qh), qh->desc_list, + qh->desc_list_dma); + qh->desc_list = NULL; + } + + if (qh->n_bytes) { + DWC_FREE(qh->n_bytes); + qh->n_bytes = NULL; + } +} + +static int frame_list_alloc(dwc_otg_hcd_t * hcd) +{ + int retval = 0; + if (hcd->frame_list) + return 0; + + hcd->frame_list = DWC_DMA_ALLOC(4 * MAX_FRLIST_EN_NUM, + &hcd->frame_list_dma); + if (!hcd->frame_list) { + retval = -DWC_E_NO_MEMORY; + DWC_ERROR("%s: Frame List allocation failed\n", __func__); + } + + dwc_memset(hcd->frame_list, 0x00, 4 * MAX_FRLIST_EN_NUM); + + return retval; +} + +static void frame_list_free(dwc_otg_hcd_t * hcd) +{ + if (!hcd->frame_list) + return; + + DWC_DMA_FREE(4 * MAX_FRLIST_EN_NUM, hcd->frame_list, hcd->frame_list_dma); + hcd->frame_list = NULL; +} + +static void per_sched_enable(dwc_otg_hcd_t * hcd, uint16_t fr_list_en) +{ + + hcfg_data_t hcfg; + + hcfg.d32 = DWC_READ_REG32(&hcd->core_if->host_if->host_global_regs->hcfg); + + if (hcfg.b.perschedena) { + /* already enabled */ + return; + } + + DWC_WRITE_REG32(&hcd->core_if->host_if->host_global_regs->hflbaddr, + hcd->frame_list_dma); + + switch (fr_list_en) { + case 64: + hcfg.b.frlisten = 3; + break; + case 32: + hcfg.b.frlisten = 2; + break; + case 16: + hcfg.b.frlisten = 1; + break; + case 8: + hcfg.b.frlisten = 0; + break; + default: + break; + } + + hcfg.b.perschedena = 1; + + DWC_DEBUGPL(DBG_HCD, "Enabling Periodic schedule\n"); + DWC_WRITE_REG32(&hcd->core_if->host_if->host_global_regs->hcfg, hcfg.d32); + +} + +static void per_sched_disable(dwc_otg_hcd_t * hcd) +{ + hcfg_data_t hcfg; + + hcfg.d32 = DWC_READ_REG32(&hcd->core_if->host_if->host_global_regs->hcfg); + + if (!hcfg.b.perschedena) { + /* already disabled */ + return; + } + hcfg.b.perschedena = 0; + + DWC_DEBUGPL(DBG_HCD, "Disabling Periodic schedule\n"); + DWC_WRITE_REG32(&hcd->core_if->host_if->host_global_regs->hcfg, hcfg.d32); +} + +/* + * Activates/Deactivates FrameList entries for the channel + * based on endpoint servicing period. + */ +void update_frame_list(dwc_otg_hcd_t * hcd, dwc_otg_qh_t * qh, uint8_t enable) +{ + uint16_t i, j, inc; + dwc_hc_t *hc = NULL; + + if (!qh->channel) { + DWC_ERROR("qh->channel = %p", qh->channel); + return; + } + + if (!hcd) { + DWC_ERROR("------hcd = %p", hcd); + return; + } + + if (!hcd->frame_list) { + DWC_ERROR("-------hcd->frame_list = %p", hcd->frame_list); + return; + } + + hc = qh->channel; + inc = frame_incr_val(qh); + if (qh->ep_type == UE_ISOCHRONOUS) + i = frame_list_idx(qh->sched_frame); + else + i = 0; + + j = i; + do { + if (enable) + hcd->frame_list[j] |= (1 << hc->hc_num); + else + hcd->frame_list[j] &= ~(1 << hc->hc_num); + j = (j + inc) & (MAX_FRLIST_EN_NUM - 1); + } + while (j != i); + if (!enable) + return; + hc->schinfo = 0; + if (qh->channel->speed == DWC_OTG_EP_SPEED_HIGH) { + j = 1; + /* TODO - check this */ + inc = (8 + qh->interval - 1) / qh->interval; + for (i = 0; i < inc; i++) { + hc->schinfo |= j; + j = j << qh->interval; + } + } else { + hc->schinfo = 0xff; + } +} + +#if 1 +void dump_frame_list(dwc_otg_hcd_t * hcd) +{ + int i = 0; + DWC_PRINTF("--FRAME LIST (hex) --\n"); + for (i = 0; i < MAX_FRLIST_EN_NUM; i++) { + DWC_PRINTF("%x\t", hcd->frame_list[i]); + if (!(i % 8) && i) + DWC_PRINTF("\n"); + } + DWC_PRINTF("\n----\n"); + +} +#endif + +static void release_channel_ddma(dwc_otg_hcd_t * hcd, dwc_otg_qh_t * qh) +{ + dwc_irqflags_t flags; + dwc_spinlock_t *channel_lock = hcd->channel_lock; + + dwc_hc_t *hc = qh->channel; + if (dwc_qh_is_non_per(qh)) { + DWC_SPINLOCK_IRQSAVE(channel_lock, &flags); + if (!microframe_schedule) + hcd->non_periodic_channels--; + else + hcd->available_host_channels++; + DWC_SPINUNLOCK_IRQRESTORE(channel_lock, flags); + } else + update_frame_list(hcd, qh, 0); + + /* + * The condition is added to prevent double cleanup try in case of device + * disconnect. See channel cleanup in dwc_otg_hcd_disconnect_cb(). + */ + if (hc->qh) { + dwc_otg_hc_cleanup(hcd->core_if, hc); + DWC_CIRCLEQ_INSERT_TAIL(&hcd->free_hc_list, hc, hc_list_entry); + hc->qh = NULL; + } + + qh->channel = NULL; + qh->ntd = 0; + + if (qh->desc_list) { + dwc_memset(qh->desc_list, 0x00, + sizeof(dwc_otg_host_dma_desc_t) * max_desc_num(qh)); + } +} + +/** + * Initializes a QH structure's Descriptor DMA related members. + * Allocates memory for descriptor list. + * On first periodic QH, allocates memory for FrameList + * and enables periodic scheduling. + * + * @param hcd The HCD state structure for the DWC OTG controller. + * @param qh The QH to init. + * + * @return 0 if successful, negative error code otherwise. + */ +int dwc_otg_hcd_qh_init_ddma(dwc_otg_hcd_t * hcd, dwc_otg_qh_t * qh) +{ + int retval = 0; + + if (qh->do_split) { + DWC_ERROR("SPLIT Transfers are not supported in Descriptor DMA.\n"); + return -1; + } + + retval = desc_list_alloc(qh); + + if ((retval == 0) + && (qh->ep_type == UE_ISOCHRONOUS || qh->ep_type == UE_INTERRUPT)) { + if (!hcd->frame_list) { + retval = frame_list_alloc(hcd); + /* Enable periodic schedule on first periodic QH */ + if (retval == 0) + per_sched_enable(hcd, MAX_FRLIST_EN_NUM); + } + } + + qh->ntd = 0; + + return retval; +} + +/** + * Frees descriptor list memory associated with the QH. + * If QH is periodic and the last, frees FrameList memory + * and disables periodic scheduling. + * + * @param hcd The HCD state structure for the DWC OTG controller. + * @param qh The QH to init. + */ +void dwc_otg_hcd_qh_free_ddma(dwc_otg_hcd_t * hcd, dwc_otg_qh_t * qh) +{ + desc_list_free(qh); + + /* + * Channel still assigned due to some reasons. + * Seen on Isoc URB dequeue. Channel halted but no subsequent + * ChHalted interrupt to release the channel. Afterwards + * when it comes here from endpoint disable routine + * channel remains assigned. + */ + if (qh->channel) + release_channel_ddma(hcd, qh); + + if ((qh->ep_type == UE_ISOCHRONOUS || qh->ep_type == UE_INTERRUPT) + && (microframe_schedule || !hcd->periodic_channels) && hcd->frame_list) { + + per_sched_disable(hcd); + frame_list_free(hcd); + } +} + +static uint8_t frame_to_desc_idx(dwc_otg_qh_t * qh, uint16_t frame_idx) +{ + if (qh->dev_speed == DWC_OTG_EP_SPEED_HIGH) { + /* + * Descriptor set(8 descriptors) index + * which is 8-aligned. + */ + return (frame_idx & ((MAX_DMA_DESC_NUM_HS_ISOC / 8) - 1)) * 8; + } else { + return (frame_idx & (MAX_DMA_DESC_NUM_GENERIC - 1)); + } +} + +/* + * Determine starting frame for Isochronous transfer. + * Few frames skipped to prevent race condition with HC. + */ +static uint8_t calc_starting_frame(dwc_otg_hcd_t * hcd, dwc_otg_qh_t * qh, + uint8_t * skip_frames) +{ + uint16_t frame = 0; + hcd->frame_number = dwc_otg_hcd_get_frame_number(hcd); + + /* sched_frame is always frame number(not uFrame) both in FS and HS !! */ + + /* + * skip_frames is used to limit activated descriptors number + * to avoid the situation when HC services the last activated + * descriptor firstly. + * Example for FS: + * Current frame is 1, scheduled frame is 3. Since HC always fetches the descriptor + * corresponding to curr_frame+1, the descriptor corresponding to frame 2 + * will be fetched. If the number of descriptors is max=64 (or greather) the + * list will be fully programmed with Active descriptors and it is possible + * case(rare) that the latest descriptor(considering rollback) corresponding + * to frame 2 will be serviced first. HS case is more probable because, in fact, + * up to 11 uframes(16 in the code) may be skipped. + */ + if (qh->dev_speed == DWC_OTG_EP_SPEED_HIGH) { + /* + * Consider uframe counter also, to start xfer asap. + * If half of the frame elapsed skip 2 frames otherwise + * just 1 frame. + * Starting descriptor index must be 8-aligned, so + * if the current frame is near to complete the next one + * is skipped as well. + */ + + if (dwc_micro_frame_num(hcd->frame_number) >= 5) { + *skip_frames = 2 * 8; + frame = dwc_frame_num_inc(hcd->frame_number, *skip_frames); + } else { + *skip_frames = 1 * 8; + frame = dwc_frame_num_inc(hcd->frame_number, *skip_frames); + } + + frame = dwc_full_frame_num(frame); + } else { + /* + * Two frames are skipped for FS - the current and the next. + * But for descriptor programming, 1 frame(descriptor) is enough, + * see example above. + */ + *skip_frames = 1; + frame = dwc_frame_num_inc(hcd->frame_number, 2); + } + + return frame; +} + +/* + * Calculate initial descriptor index for isochronous transfer + * based on scheduled frame. + */ +static uint8_t recalc_initial_desc_idx(dwc_otg_hcd_t * hcd, dwc_otg_qh_t * qh) +{ + uint16_t frame = 0, fr_idx, fr_idx_tmp; + uint8_t skip_frames = 0; + /* + * With current ISOC processing algorithm the channel is being + * released when no more QTDs in the list(qh->ntd == 0). + * Thus this function is called only when qh->ntd == 0 and qh->channel == 0. + * + * So qh->channel != NULL branch is not used and just not removed from the + * source file. It is required for another possible approach which is, + * do not disable and release the channel when ISOC session completed, + * just move QH to inactive schedule until new QTD arrives. + * On new QTD, the QH moved back to 'ready' schedule, + * starting frame and therefore starting desc_index are recalculated. + * In this case channel is released only on ep_disable. + */ + + /* Calculate starting descriptor index. For INTERRUPT endpoint it is always 0. */ + if (qh->channel) { + frame = calc_starting_frame(hcd, qh, &skip_frames); + /* + * Calculate initial descriptor index based on FrameList current bitmap + * and servicing period. + */ + fr_idx_tmp = frame_list_idx(frame); + fr_idx = + (MAX_FRLIST_EN_NUM + frame_list_idx(qh->sched_frame) - + fr_idx_tmp) + % frame_incr_val(qh); + fr_idx = (fr_idx + fr_idx_tmp) % MAX_FRLIST_EN_NUM; + } else { + qh->sched_frame = calc_starting_frame(hcd, qh, &skip_frames); + fr_idx = frame_list_idx(qh->sched_frame); + } + + qh->td_first = qh->td_last = frame_to_desc_idx(qh, fr_idx); + + return skip_frames; +} + +#define ISOC_URB_GIVEBACK_ASAP + +#define MAX_ISOC_XFER_SIZE_FS 1023 +#define MAX_ISOC_XFER_SIZE_HS 3072 +#define DESCNUM_THRESHOLD 4 + +static void init_isoc_dma_desc(dwc_otg_hcd_t * hcd, dwc_otg_qh_t * qh, + uint8_t skip_frames) +{ + struct dwc_otg_hcd_iso_packet_desc *frame_desc; + dwc_otg_qtd_t *qtd; + dwc_otg_host_dma_desc_t *dma_desc; + uint16_t idx, inc, n_desc, ntd_max, max_xfer_size; + + idx = qh->td_last; + inc = qh->interval; + n_desc = 0; + + ntd_max = (max_desc_num(qh) + qh->interval - 1) / qh->interval; + if (skip_frames && !qh->channel) + ntd_max = ntd_max - skip_frames / qh->interval; + + max_xfer_size = + (qh->dev_speed == + DWC_OTG_EP_SPEED_HIGH) ? MAX_ISOC_XFER_SIZE_HS : + MAX_ISOC_XFER_SIZE_FS; + + DWC_CIRCLEQ_FOREACH(qtd, &qh->qtd_list, qtd_list_entry) { + while ((qh->ntd < ntd_max) + && (qtd->isoc_frame_index_last < + qtd->urb->packet_count)) { + + dma_desc = &qh->desc_list[idx]; + dwc_memset(dma_desc, 0x00, sizeof(dwc_otg_host_dma_desc_t)); + + frame_desc = &qtd->urb->iso_descs[qtd->isoc_frame_index_last]; + + if (frame_desc->length > max_xfer_size) + qh->n_bytes[idx] = max_xfer_size; + else + qh->n_bytes[idx] = frame_desc->length; + dma_desc->status.b_isoc.n_bytes = qh->n_bytes[idx]; + dma_desc->status.b_isoc.a = 1; + dma_desc->status.b_isoc.sts = 0; + + dma_desc->buf = qtd->urb->dma + frame_desc->offset; + + qh->ntd++; + + qtd->isoc_frame_index_last++; + +#ifdef ISOC_URB_GIVEBACK_ASAP + /* + * Set IOC for each descriptor corresponding to the + * last frame of the URB. + */ + if (qtd->isoc_frame_index_last == + qtd->urb->packet_count) + dma_desc->status.b_isoc.ioc = 1; + +#endif + idx = desclist_idx_inc(idx, inc, qh->dev_speed); + n_desc++; + + } + qtd->in_process = 1; + } + + qh->td_last = idx; + +#ifdef ISOC_URB_GIVEBACK_ASAP + /* Set IOC for the last descriptor if descriptor list is full */ + if (qh->ntd == ntd_max) { + idx = desclist_idx_dec(qh->td_last, inc, qh->dev_speed); + qh->desc_list[idx].status.b_isoc.ioc = 1; + } +#else + /* + * Set IOC bit only for one descriptor. + * Always try to be ahead of HW processing, + * i.e. on IOC generation driver activates next descriptors but + * core continues to process descriptors followed the one with IOC set. + */ + + if (n_desc > DESCNUM_THRESHOLD) { + /* + * Move IOC "up". Required even if there is only one QTD + * in the list, cause QTDs migth continue to be queued, + * but during the activation it was only one queued. + * Actually more than one QTD might be in the list if this function called + * from XferCompletion - QTDs was queued during HW processing of the previous + * descriptor chunk. + */ + idx = dwc_desclist_idx_dec(idx, inc * ((qh->ntd + 1) / 2), qh->dev_speed); + } else { + /* + * Set the IOC for the latest descriptor + * if either number of descriptor is not greather than threshold + * or no more new descriptors activated. + */ + idx = dwc_desclist_idx_dec(qh->td_last, inc, qh->dev_speed); + } + + qh->desc_list[idx].status.b_isoc.ioc = 1; +#endif +} + +static void init_non_isoc_dma_desc(dwc_otg_hcd_t * hcd, dwc_otg_qh_t * qh) +{ + + dwc_hc_t *hc; + dwc_otg_host_dma_desc_t *dma_desc; + dwc_otg_qtd_t *qtd; + int num_packets, len, n_desc = 0; + + hc = qh->channel; + + /* + * Start with hc->xfer_buff initialized in + * assign_and_init_hc(), then if SG transfer consists of multiple URBs, + * this pointer re-assigned to the buffer of the currently processed QTD. + * For non-SG request there is always one QTD active. + */ + + DWC_CIRCLEQ_FOREACH(qtd, &qh->qtd_list, qtd_list_entry) { + + if (n_desc) { + /* SG request - more than 1 QTDs */ + hc->xfer_buff = (uint8_t *)qtd->urb->dma + qtd->urb->actual_length; + hc->xfer_len = qtd->urb->length - qtd->urb->actual_length; + } + + qtd->n_desc = 0; + + do { + dma_desc = &qh->desc_list[n_desc]; + len = hc->xfer_len; + + if (len > MAX_DMA_DESC_SIZE) + len = MAX_DMA_DESC_SIZE - hc->max_packet + 1; + + if (hc->ep_is_in) { + if (len > 0) { + num_packets = (len + hc->max_packet - 1) / hc->max_packet; + } else { + /* Need 1 packet for transfer length of 0. */ + num_packets = 1; + } + /* Always program an integral # of max packets for IN transfers. */ + len = num_packets * hc->max_packet; + } + + dma_desc->status.b.n_bytes = len; + + qh->n_bytes[n_desc] = len; + + if ((qh->ep_type == UE_CONTROL) + && (qtd->control_phase == DWC_OTG_CONTROL_SETUP)) + dma_desc->status.b.sup = 1; /* Setup Packet */ + + dma_desc->status.b.a = 1; /* Active descriptor */ + dma_desc->status.b.sts = 0; + + dma_desc->buf = + ((unsigned long)hc->xfer_buff & 0xffffffff); + + /* + * Last descriptor(or single) of IN transfer + * with actual size less than MaxPacket. + */ + if (len > hc->xfer_len) { + hc->xfer_len = 0; + } else { + hc->xfer_buff += len; + hc->xfer_len -= len; + } + + qtd->n_desc++; + n_desc++; + } + while ((hc->xfer_len > 0) && (n_desc != MAX_DMA_DESC_NUM_GENERIC)); + + + qtd->in_process = 1; + + if (qh->ep_type == UE_CONTROL) + break; + + if (n_desc == MAX_DMA_DESC_NUM_GENERIC) + break; + } + + if (n_desc) { + /* Request Transfer Complete interrupt for the last descriptor */ + qh->desc_list[n_desc - 1].status.b.ioc = 1; + /* End of List indicator */ + qh->desc_list[n_desc - 1].status.b.eol = 1; + + hc->ntd = n_desc; + } +} + +/** + * For Control and Bulk endpoints initializes descriptor list + * and starts the transfer. + * + * For Interrupt and Isochronous endpoints initializes descriptor list + * then updates FrameList, marking appropriate entries as active. + * In case of Isochronous, the starting descriptor index is calculated based + * on the scheduled frame, but only on the first transfer descriptor within a session. + * Then starts the transfer via enabling the channel. + * For Isochronous endpoint the channel is not halted on XferComplete + * interrupt so remains assigned to the endpoint(QH) until session is done. + * + * @param hcd The HCD state structure for the DWC OTG controller. + * @param qh The QH to init. + * + * @return 0 if successful, negative error code otherwise. + */ +void dwc_otg_hcd_start_xfer_ddma(dwc_otg_hcd_t * hcd, dwc_otg_qh_t * qh) +{ + /* Channel is already assigned */ + dwc_hc_t *hc = qh->channel; + uint8_t skip_frames = 0; + + switch (hc->ep_type) { + case DWC_OTG_EP_TYPE_CONTROL: + case DWC_OTG_EP_TYPE_BULK: + init_non_isoc_dma_desc(hcd, qh); + + dwc_otg_hc_start_transfer_ddma(hcd->core_if, hc); + break; + case DWC_OTG_EP_TYPE_INTR: + init_non_isoc_dma_desc(hcd, qh); + + update_frame_list(hcd, qh, 1); + + dwc_otg_hc_start_transfer_ddma(hcd->core_if, hc); + break; + case DWC_OTG_EP_TYPE_ISOC: + + if (!qh->ntd) + skip_frames = recalc_initial_desc_idx(hcd, qh); + + init_isoc_dma_desc(hcd, qh, skip_frames); + + if (!hc->xfer_started) { + + update_frame_list(hcd, qh, 1); + + /* + * Always set to max, instead of actual size. + * Otherwise ntd will be changed with + * channel being enabled. Not recommended. + * + */ + hc->ntd = max_desc_num(qh); + /* Enable channel only once for ISOC */ + dwc_otg_hc_start_transfer_ddma(hcd->core_if, hc); + } + + break; + default: + + break; + } +} + +static void complete_isoc_xfer_ddma(dwc_otg_hcd_t * hcd, + dwc_hc_t * hc, + dwc_otg_hc_regs_t * hc_regs, + dwc_otg_halt_status_e halt_status) +{ + struct dwc_otg_hcd_iso_packet_desc *frame_desc; + dwc_otg_qtd_t *qtd, *qtd_tmp; + dwc_otg_qh_t *qh; + dwc_otg_host_dma_desc_t *dma_desc; + uint16_t idx, remain; + uint8_t urb_compl; + + qh = hc->qh; + idx = qh->td_first; + + if (hc->halt_status == DWC_OTG_HC_XFER_URB_DEQUEUE) { + DWC_CIRCLEQ_FOREACH_SAFE(qtd, qtd_tmp, &hc->qh->qtd_list, qtd_list_entry) + qtd->in_process = 0; + return; + } else if ((halt_status == DWC_OTG_HC_XFER_AHB_ERR) || + (halt_status == DWC_OTG_HC_XFER_BABBLE_ERR)) { + /* + * Channel is halted in these error cases. + * Considered as serious issues. + * Complete all URBs marking all frames as failed, + * irrespective whether some of the descriptors(frames) succeeded or no. + * Pass error code to completion routine as well, to + * update urb->status, some of class drivers might use it to stop + * queing transfer requests. + */ + int err = (halt_status == DWC_OTG_HC_XFER_AHB_ERR) + ? (-DWC_E_IO) + : (-DWC_E_OVERFLOW); + + DWC_CIRCLEQ_FOREACH_SAFE(qtd, qtd_tmp, &hc->qh->qtd_list, qtd_list_entry) { + for (idx = 0; idx < qtd->urb->packet_count; idx++) { + frame_desc = &qtd->urb->iso_descs[idx]; + frame_desc->status = err; + } + hcd->fops->complete(hcd, qtd->urb->priv, qtd->urb, err); + dwc_otg_hcd_qtd_remove_and_free(hcd, qtd, qh); + } + return; + } + + DWC_CIRCLEQ_FOREACH_SAFE(qtd, qtd_tmp, &hc->qh->qtd_list, qtd_list_entry) { + + if (!qtd->in_process) + break; + + urb_compl = 0; + + do { + + dma_desc = &qh->desc_list[idx]; + + frame_desc = &qtd->urb->iso_descs[qtd->isoc_frame_index]; + remain = hc->ep_is_in ? dma_desc->status.b_isoc.n_bytes : 0; + + if (dma_desc->status.b_isoc.sts == DMA_DESC_STS_PKTERR) { + /* + * XactError or, unable to complete all the transactions + * in the scheduled micro-frame/frame, + * both indicated by DMA_DESC_STS_PKTERR. + */ + qtd->urb->error_count++; + frame_desc->actual_length = qh->n_bytes[idx] - remain; + frame_desc->status = -DWC_E_PROTOCOL; + } else { + /* Success */ + + frame_desc->actual_length = qh->n_bytes[idx] - remain; + frame_desc->status = 0; + } + + if (++qtd->isoc_frame_index == qtd->urb->packet_count) { + /* + * urb->status is not used for isoc transfers here. + * The individual frame_desc status are used instead. + */ + + hcd->fops->complete(hcd, qtd->urb->priv, qtd->urb, 0); + dwc_otg_hcd_qtd_remove_and_free(hcd, qtd, qh); + + /* + * This check is necessary because urb_dequeue can be called + * from urb complete callback(sound driver example). + * All pending URBs are dequeued there, so no need for + * further processing. + */ + if (hc->halt_status == DWC_OTG_HC_XFER_URB_DEQUEUE) { + return; + } + + urb_compl = 1; + + } + + qh->ntd--; + + /* Stop if IOC requested descriptor reached */ + if (dma_desc->status.b_isoc.ioc) { + idx = desclist_idx_inc(idx, qh->interval, hc->speed); + goto stop_scan; + } + + idx = desclist_idx_inc(idx, qh->interval, hc->speed); + + if (urb_compl) + break; + } + while (idx != qh->td_first); + } +stop_scan: + qh->td_first = idx; +} + +uint8_t update_non_isoc_urb_state_ddma(dwc_otg_hcd_t * hcd, + dwc_hc_t * hc, + dwc_otg_qtd_t * qtd, + dwc_otg_host_dma_desc_t * dma_desc, + dwc_otg_halt_status_e halt_status, + uint32_t n_bytes, uint8_t * xfer_done) +{ + + uint16_t remain = hc->ep_is_in ? dma_desc->status.b.n_bytes : 0; + dwc_otg_hcd_urb_t *urb = qtd->urb; + + if (halt_status == DWC_OTG_HC_XFER_AHB_ERR) { + urb->status = -DWC_E_IO; + return 1; + } + if (dma_desc->status.b.sts == DMA_DESC_STS_PKTERR) { + switch (halt_status) { + case DWC_OTG_HC_XFER_STALL: + urb->status = -DWC_E_PIPE; + break; + case DWC_OTG_HC_XFER_BABBLE_ERR: + urb->status = -DWC_E_OVERFLOW; + break; + case DWC_OTG_HC_XFER_XACT_ERR: + urb->status = -DWC_E_PROTOCOL; + break; + default: + DWC_ERROR("%s: Unhandled descriptor error status (%d)\n", __func__, + halt_status); + break; + } + return 1; + } + + if (dma_desc->status.b.a == 1) { + DWC_DEBUGPL(DBG_HCDV, + "Active descriptor encountered on channel %d\n", + hc->hc_num); + return 0; + } + + if (hc->ep_type == DWC_OTG_EP_TYPE_CONTROL) { + if (qtd->control_phase == DWC_OTG_CONTROL_DATA) { + urb->actual_length += n_bytes - remain; + if (remain || urb->actual_length == urb->length) { + /* + * For Control Data stage do not set urb->status=0 to prevent + * URB callback. Set it when Status phase done. See below. + */ + *xfer_done = 1; + } + + } else if (qtd->control_phase == DWC_OTG_CONTROL_STATUS) { + urb->status = 0; + *xfer_done = 1; + } + /* No handling for SETUP stage */ + } else { + /* BULK and INTR */ + urb->actual_length += n_bytes - remain; + if (remain || urb->actual_length == urb->length) { + urb->status = 0; + *xfer_done = 1; + } + } + + return 0; +} + +static void complete_non_isoc_xfer_ddma(dwc_otg_hcd_t * hcd, + dwc_hc_t * hc, + dwc_otg_hc_regs_t * hc_regs, + dwc_otg_halt_status_e halt_status) +{ + dwc_otg_hcd_urb_t *urb = NULL; + dwc_otg_qtd_t *qtd, *qtd_tmp; + dwc_otg_qh_t *qh; + dwc_otg_host_dma_desc_t *dma_desc; + uint32_t n_bytes, n_desc, i; + uint8_t failed = 0, xfer_done; + + n_desc = 0; + + qh = hc->qh; + + if (hc->halt_status == DWC_OTG_HC_XFER_URB_DEQUEUE) { + DWC_CIRCLEQ_FOREACH_SAFE(qtd, qtd_tmp, &hc->qh->qtd_list, qtd_list_entry) { + qtd->in_process = 0; + } + return; + } + + DWC_CIRCLEQ_FOREACH_SAFE(qtd, qtd_tmp, &qh->qtd_list, qtd_list_entry) { + + urb = qtd->urb; + + n_bytes = 0; + xfer_done = 0; + + for (i = 0; i < qtd->n_desc; i++) { + dma_desc = &qh->desc_list[n_desc]; + + n_bytes = qh->n_bytes[n_desc]; + + failed = + update_non_isoc_urb_state_ddma(hcd, hc, qtd, + dma_desc, + halt_status, n_bytes, + &xfer_done); + + if (failed + || (xfer_done + && (urb->status != -DWC_E_IN_PROGRESS))) { + + hcd->fops->complete(hcd, urb->priv, urb, + urb->status); + dwc_otg_hcd_qtd_remove_and_free(hcd, qtd, qh); + + if (failed) + goto stop_scan; + } else if (qh->ep_type == UE_CONTROL) { + if (qtd->control_phase == DWC_OTG_CONTROL_SETUP) { + if (urb->length > 0) { + qtd->control_phase = DWC_OTG_CONTROL_DATA; + } else { + qtd->control_phase = DWC_OTG_CONTROL_STATUS; + } + DWC_DEBUGPL(DBG_HCDV, " Control setup transaction done\n"); + } else if (qtd->control_phase == DWC_OTG_CONTROL_DATA) { + if (xfer_done) { + qtd->control_phase = DWC_OTG_CONTROL_STATUS; + DWC_DEBUGPL(DBG_HCDV, " Control data transfer done\n"); + } else if (i + 1 == qtd->n_desc) { + /* + * Last descriptor for Control data stage which is + * not completed yet. + */ + dwc_otg_hcd_save_data_toggle(hc, hc_regs, qtd); + } + } + } + + n_desc++; + } + + } + +stop_scan: + + if (qh->ep_type != UE_CONTROL) { + /* + * Resetting the data toggle for bulk + * and interrupt endpoints in case of stall. See handle_hc_stall_intr() + */ + if (halt_status == DWC_OTG_HC_XFER_STALL) + qh->data_toggle = DWC_OTG_HC_PID_DATA0; + else + dwc_otg_hcd_save_data_toggle(hc, hc_regs, qtd); + } + + if (halt_status == DWC_OTG_HC_XFER_COMPLETE) { + hcint_data_t hcint; + hcint.d32 = DWC_READ_REG32(&hc_regs->hcint); + if (hcint.b.nyet) { + /* + * Got a NYET on the last transaction of the transfer. It + * means that the endpoint should be in the PING state at the + * beginning of the next transfer. + */ + qh->ping_state = 1; + clear_hc_int(hc_regs, nyet); + } + + } + +} + +/** + * This function is called from interrupt handlers. + * Scans the descriptor list, updates URB's status and + * calls completion routine for the URB if it's done. + * Releases the channel to be used by other transfers. + * In case of Isochronous endpoint the channel is not halted until + * the end of the session, i.e. QTD list is empty. + * If periodic channel released the FrameList is updated accordingly. + * + * Calls transaction selection routines to activate pending transfers. + * + * @param hcd The HCD state structure for the DWC OTG controller. + * @param hc Host channel, the transfer is completed on. + * @param hc_regs Host channel registers. + * @param halt_status Reason the channel is being halted, + * or just XferComplete for isochronous transfer + */ +void dwc_otg_hcd_complete_xfer_ddma(dwc_otg_hcd_t * hcd, + dwc_hc_t * hc, + dwc_otg_hc_regs_t * hc_regs, + dwc_otg_halt_status_e halt_status) +{ + uint8_t continue_isoc_xfer = 0; + dwc_otg_transaction_type_e tr_type; + dwc_otg_qh_t *qh = hc->qh; + + if (hc->ep_type == DWC_OTG_EP_TYPE_ISOC) { + + complete_isoc_xfer_ddma(hcd, hc, hc_regs, halt_status); + + /* Release the channel if halted or session completed */ + if (halt_status != DWC_OTG_HC_XFER_COMPLETE || + DWC_CIRCLEQ_EMPTY(&qh->qtd_list)) { + + /* Halt the channel if session completed */ + if (halt_status == DWC_OTG_HC_XFER_COMPLETE) { + dwc_otg_hc_halt(hcd->core_if, hc, halt_status); + } + + release_channel_ddma(hcd, qh); + dwc_otg_hcd_qh_remove(hcd, qh); + } else { + /* Keep in assigned schedule to continue transfer */ + DWC_LIST_MOVE_HEAD(&hcd->periodic_sched_assigned, + &qh->qh_list_entry); + continue_isoc_xfer = 1; + + } + /** @todo Consider the case when period exceeds FrameList size. + * Frame Rollover interrupt should be used. + */ + } else { + /* Scan descriptor list to complete the URB(s), then release the channel */ + complete_non_isoc_xfer_ddma(hcd, hc, hc_regs, halt_status); + + release_channel_ddma(hcd, qh); + dwc_otg_hcd_qh_remove(hcd, qh); + + if (!DWC_CIRCLEQ_EMPTY(&qh->qtd_list)) { + /* Add back to inactive non-periodic schedule on normal completion */ + dwc_otg_hcd_qh_add(hcd, qh); + } + + } + tr_type = dwc_otg_hcd_select_transactions(hcd); + if (tr_type != DWC_OTG_TRANSACTION_NONE || continue_isoc_xfer) { + if (continue_isoc_xfer) { + if (tr_type == DWC_OTG_TRANSACTION_NONE) { + tr_type = DWC_OTG_TRANSACTION_PERIODIC; + } else if (tr_type == DWC_OTG_TRANSACTION_NON_PERIODIC) { + tr_type = DWC_OTG_TRANSACTION_ALL; + } + } + dwc_otg_hcd_queue_transactions(hcd, tr_type); + } +} + +#endif /* DWC_DEVICE_ONLY */ --- linux-raspi2-4.2.0.orig/drivers/usb/host/dwc_otg/dwc_otg_hcd_if.h +++ linux-raspi2-4.2.0/drivers/usb/host/dwc_otg/dwc_otg_hcd_if.h @@ -0,0 +1,417 @@ +/* ========================================================================== + * $File: //dwh/usb_iip/dev/software/otg/linux/drivers/dwc_otg_hcd_if.h $ + * $Revision: #12 $ + * $Date: 2011/10/26 $ + * $Change: 1873028 $ + * + * Synopsys HS OTG Linux Software Driver and documentation (hereinafter, + * "Software") is an Unsupported proprietary work of Synopsys, Inc. unless + * otherwise expressly agreed to in writing between Synopsys and you. + * + * The Software IS NOT an item of Licensed Software or Licensed Product under + * any End User Software License Agreement or Agreement for Licensed Product + * with Synopsys or any supplement thereto. You are permitted to use and + * redistribute this Software in source and binary forms, with or without + * modification, provided that redistributions of source code must retain this + * notice. You may not view, use, disclose, copy or distribute this file or + * any information contained herein except pursuant to this license grant from + * Synopsys. If you do not agree with this notice, including the disclaimer + * below, then you are not authorized to use the Software. + * + * THIS SOFTWARE IS BEING DISTRIBUTED BY SYNOPSYS SOLELY ON AN "AS IS" BASIS + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE HEREBY DISCLAIMED. IN NO EVENT SHALL SYNOPSYS BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH + * DAMAGE. + * ========================================================================== */ +#ifndef DWC_DEVICE_ONLY +#ifndef __DWC_HCD_IF_H__ +#define __DWC_HCD_IF_H__ + +#include "dwc_otg_core_if.h" + +/** @file + * This file defines DWC_OTG HCD Core API. + */ + +struct dwc_otg_hcd; +typedef struct dwc_otg_hcd dwc_otg_hcd_t; + +struct dwc_otg_hcd_urb; +typedef struct dwc_otg_hcd_urb dwc_otg_hcd_urb_t; + +/** @name HCD Function Driver Callbacks */ +/** @{ */ + +/** This function is called whenever core switches to host mode. */ +typedef int (*dwc_otg_hcd_start_cb_t) (dwc_otg_hcd_t * hcd); + +/** This function is called when device has been disconnected */ +typedef int (*dwc_otg_hcd_disconnect_cb_t) (dwc_otg_hcd_t * hcd); + +/** Wrapper provides this function to HCD to core, so it can get hub information to which device is connected */ +typedef int (*dwc_otg_hcd_hub_info_from_urb_cb_t) (dwc_otg_hcd_t * hcd, + void *urb_handle, + uint32_t * hub_addr, + uint32_t * port_addr); +/** Via this function HCD core gets device speed */ +typedef int (*dwc_otg_hcd_speed_from_urb_cb_t) (dwc_otg_hcd_t * hcd, + void *urb_handle); + +/** This function is called when urb is completed */ +typedef int (*dwc_otg_hcd_complete_urb_cb_t) (dwc_otg_hcd_t * hcd, + void *urb_handle, + dwc_otg_hcd_urb_t * dwc_otg_urb, + int32_t status); + +/** Via this function HCD core gets b_hnp_enable parameter */ +typedef int (*dwc_otg_hcd_get_b_hnp_enable) (dwc_otg_hcd_t * hcd); + +struct dwc_otg_hcd_function_ops { + dwc_otg_hcd_start_cb_t start; + dwc_otg_hcd_disconnect_cb_t disconnect; + dwc_otg_hcd_hub_info_from_urb_cb_t hub_info; + dwc_otg_hcd_speed_from_urb_cb_t speed; + dwc_otg_hcd_complete_urb_cb_t complete; + dwc_otg_hcd_get_b_hnp_enable get_b_hnp_enable; +}; +/** @} */ + +/** @name HCD Core API */ +/** @{ */ +/** This function allocates dwc_otg_hcd structure and returns pointer on it. */ +extern dwc_otg_hcd_t *dwc_otg_hcd_alloc_hcd(void); + +/** This function should be called to initiate HCD Core. + * + * @param hcd The HCD + * @param core_if The DWC_OTG Core + * + * Returns -DWC_E_NO_MEMORY if no enough memory. + * Returns 0 on success + */ +extern int dwc_otg_hcd_init(dwc_otg_hcd_t * hcd, dwc_otg_core_if_t * core_if); + +/** Frees HCD + * + * @param hcd The HCD + */ +extern void dwc_otg_hcd_remove(dwc_otg_hcd_t * hcd); + +/** This function should be called on every hardware interrupt. + * + * @param dwc_otg_hcd The HCD + * + * Returns non zero if interrupt is handled + * Return 0 if interrupt is not handled + */ +extern int32_t dwc_otg_hcd_handle_intr(dwc_otg_hcd_t * dwc_otg_hcd); + +/** This function is used to handle the fast interrupt + * + */ +extern void __attribute__ ((naked)) dwc_otg_hcd_handle_fiq(void); + +/** + * Returns private data set by + * dwc_otg_hcd_set_priv_data function. + * + * @param hcd The HCD + */ +extern void *dwc_otg_hcd_get_priv_data(dwc_otg_hcd_t * hcd); + +/** + * Set private data. + * + * @param hcd The HCD + * @param priv_data pointer to be stored in private data + */ +extern void dwc_otg_hcd_set_priv_data(dwc_otg_hcd_t * hcd, void *priv_data); + +/** + * This function initializes the HCD Core. + * + * @param hcd The HCD + * @param fops The Function Driver Operations data structure containing pointers to all callbacks. + * + * Returns -DWC_E_NO_DEVICE if Core is currently is in device mode. + * Returns 0 on success + */ +extern int dwc_otg_hcd_start(dwc_otg_hcd_t * hcd, + struct dwc_otg_hcd_function_ops *fops); + +/** + * Halts the DWC_otg host mode operations in a clean manner. USB transfers are + * stopped. + * + * @param hcd The HCD + */ +extern void dwc_otg_hcd_stop(dwc_otg_hcd_t * hcd); + +/** + * Handles hub class-specific requests. + * + * @param dwc_otg_hcd The HCD + * @param typeReq Request Type + * @param wValue wValue from control request + * @param wIndex wIndex from control request + * @param buf data buffer + * @param wLength data buffer length + * + * Returns -DWC_E_INVALID if invalid argument is passed + * Returns 0 on success + */ +extern int dwc_otg_hcd_hub_control(dwc_otg_hcd_t * dwc_otg_hcd, + uint16_t typeReq, uint16_t wValue, + uint16_t wIndex, uint8_t * buf, + uint16_t wLength); + +/** + * Returns otg port number. + * + * @param hcd The HCD + */ +extern uint32_t dwc_otg_hcd_otg_port(dwc_otg_hcd_t * hcd); + +/** + * Returns OTG version - either 1.3 or 2.0. + * + * @param core_if The core_if structure pointer + */ +extern uint16_t dwc_otg_get_otg_version(dwc_otg_core_if_t * core_if); + +/** + * Returns 1 if currently core is acting as B host, and 0 otherwise. + * + * @param hcd The HCD + */ +extern uint32_t dwc_otg_hcd_is_b_host(dwc_otg_hcd_t * hcd); + +/** + * Returns current frame number. + * + * @param hcd The HCD + */ +extern int dwc_otg_hcd_get_frame_number(dwc_otg_hcd_t * hcd); + +/** + * Dumps hcd state. + * + * @param hcd The HCD + */ +extern void dwc_otg_hcd_dump_state(dwc_otg_hcd_t * hcd); + +/** + * Dump the average frame remaining at SOF. This can be used to + * determine average interrupt latency. Frame remaining is also shown for + * start transfer and two additional sample points. + * Currently this function is not implemented. + * + * @param hcd The HCD + */ +extern void dwc_otg_hcd_dump_frrem(dwc_otg_hcd_t * hcd); + +/** + * Sends LPM transaction to the local device. + * + * @param hcd The HCD + * @param devaddr Device Address + * @param hird Host initiated resume duration + * @param bRemoteWake Value of bRemoteWake field in LPM transaction + * + * Returns negative value if sending LPM transaction was not succeeded. + * Returns 0 on success. + */ +extern int dwc_otg_hcd_send_lpm(dwc_otg_hcd_t * hcd, uint8_t devaddr, + uint8_t hird, uint8_t bRemoteWake); + +/* URB interface */ + +/** + * Allocates memory for dwc_otg_hcd_urb structure. + * Allocated memory should be freed by call of DWC_FREE. + * + * @param hcd The HCD + * @param iso_desc_count Count of ISOC descriptors + * @param atomic_alloc Specefies whether to perform atomic allocation. + */ +extern dwc_otg_hcd_urb_t *dwc_otg_hcd_urb_alloc(dwc_otg_hcd_t * hcd, + int iso_desc_count, + int atomic_alloc); + +/** + * Set pipe information in URB. + * + * @param hcd_urb DWC_OTG URB + * @param devaddr Device Address + * @param ep_num Endpoint Number + * @param ep_type Endpoint Type + * @param ep_dir Endpoint Direction + * @param mps Max Packet Size + */ +extern void dwc_otg_hcd_urb_set_pipeinfo(dwc_otg_hcd_urb_t * hcd_urb, + uint8_t devaddr, uint8_t ep_num, + uint8_t ep_type, uint8_t ep_dir, + uint16_t mps); + +/* Transfer flags */ +#define URB_GIVEBACK_ASAP 0x1 +#define URB_SEND_ZERO_PACKET 0x2 + +/** + * Sets dwc_otg_hcd_urb parameters. + * + * @param urb DWC_OTG URB allocated by dwc_otg_hcd_urb_alloc function. + * @param urb_handle Unique handle for request, this will be passed back + * to function driver in completion callback. + * @param buf The buffer for the data + * @param dma The DMA buffer for the data + * @param buflen Transfer length + * @param sp Buffer for setup data + * @param sp_dma DMA address of setup data buffer + * @param flags Transfer flags + * @param interval Polling interval for interrupt or isochronous transfers. + */ +extern void dwc_otg_hcd_urb_set_params(dwc_otg_hcd_urb_t * urb, + void *urb_handle, void *buf, + dwc_dma_t dma, uint32_t buflen, void *sp, + dwc_dma_t sp_dma, uint32_t flags, + uint16_t interval); + +/** Gets status from dwc_otg_hcd_urb + * + * @param dwc_otg_urb DWC_OTG URB + */ +extern uint32_t dwc_otg_hcd_urb_get_status(dwc_otg_hcd_urb_t * dwc_otg_urb); + +/** Gets actual length from dwc_otg_hcd_urb + * + * @param dwc_otg_urb DWC_OTG URB + */ +extern uint32_t dwc_otg_hcd_urb_get_actual_length(dwc_otg_hcd_urb_t * + dwc_otg_urb); + +/** Gets error count from dwc_otg_hcd_urb. Only for ISOC URBs + * + * @param dwc_otg_urb DWC_OTG URB + */ +extern uint32_t dwc_otg_hcd_urb_get_error_count(dwc_otg_hcd_urb_t * + dwc_otg_urb); + +/** Set ISOC descriptor offset and length + * + * @param dwc_otg_urb DWC_OTG URB + * @param desc_num ISOC descriptor number + * @param offset Offset from beginig of buffer. + * @param length Transaction length + */ +extern void dwc_otg_hcd_urb_set_iso_desc_params(dwc_otg_hcd_urb_t * dwc_otg_urb, + int desc_num, uint32_t offset, + uint32_t length); + +/** Get status of ISOC descriptor, specified by desc_num + * + * @param dwc_otg_urb DWC_OTG URB + * @param desc_num ISOC descriptor number + */ +extern uint32_t dwc_otg_hcd_urb_get_iso_desc_status(dwc_otg_hcd_urb_t * + dwc_otg_urb, int desc_num); + +/** Get actual length of ISOC descriptor, specified by desc_num + * + * @param dwc_otg_urb DWC_OTG URB + * @param desc_num ISOC descriptor number + */ +extern uint32_t dwc_otg_hcd_urb_get_iso_desc_actual_length(dwc_otg_hcd_urb_t * + dwc_otg_urb, + int desc_num); + +/** Queue URB. After transfer is completes, the complete callback will be called with the URB status + * + * @param dwc_otg_hcd The HCD + * @param dwc_otg_urb DWC_OTG URB + * @param ep_handle Out parameter for returning endpoint handle + * @param atomic_alloc Flag to do atomic allocation if needed + * + * Returns -DWC_E_NO_DEVICE if no device is connected. + * Returns -DWC_E_NO_MEMORY if there is no enough memory. + * Returns 0 on success. + */ +extern int dwc_otg_hcd_urb_enqueue(dwc_otg_hcd_t * dwc_otg_hcd, + dwc_otg_hcd_urb_t * dwc_otg_urb, + void **ep_handle, int atomic_alloc); + +/** De-queue the specified URB + * + * @param dwc_otg_hcd The HCD + * @param dwc_otg_urb DWC_OTG URB + */ +extern int dwc_otg_hcd_urb_dequeue(dwc_otg_hcd_t * dwc_otg_hcd, + dwc_otg_hcd_urb_t * dwc_otg_urb); + +/** Frees resources in the DWC_otg controller related to a given endpoint. + * Any URBs for the endpoint must already be dequeued. + * + * @param hcd The HCD + * @param ep_handle Endpoint handle, returned by dwc_otg_hcd_urb_enqueue function + * @param retry Number of retries if there are queued transfers. + * + * Returns -DWC_E_INVALID if invalid arguments are passed. + * Returns 0 on success + */ +extern int dwc_otg_hcd_endpoint_disable(dwc_otg_hcd_t * hcd, void *ep_handle, + int retry); + +/* Resets the data toggle in qh structure. This function can be called from + * usb_clear_halt routine. + * + * @param hcd The HCD + * @param ep_handle Endpoint handle, returned by dwc_otg_hcd_urb_enqueue function + * + * Returns -DWC_E_INVALID if invalid arguments are passed. + * Returns 0 on success + */ +extern int dwc_otg_hcd_endpoint_reset(dwc_otg_hcd_t * hcd, void *ep_handle); + +/** Returns 1 if status of specified port is changed and 0 otherwise. + * + * @param hcd The HCD + * @param port Port number + */ +extern int dwc_otg_hcd_is_status_changed(dwc_otg_hcd_t * hcd, int port); + +/** Call this function to check if bandwidth was allocated for specified endpoint. + * Only for ISOC and INTERRUPT endpoints. + * + * @param hcd The HCD + * @param ep_handle Endpoint handle + */ +extern int dwc_otg_hcd_is_bandwidth_allocated(dwc_otg_hcd_t * hcd, + void *ep_handle); + +/** Call this function to check if bandwidth was freed for specified endpoint. + * + * @param hcd The HCD + * @param ep_handle Endpoint handle + */ +extern int dwc_otg_hcd_is_bandwidth_freed(dwc_otg_hcd_t * hcd, void *ep_handle); + +/** Returns bandwidth allocated for specified endpoint in microseconds. + * Only for ISOC and INTERRUPT endpoints. + * + * @param hcd The HCD + * @param ep_handle Endpoint handle + */ +extern uint8_t dwc_otg_hcd_get_ep_bandwidth(dwc_otg_hcd_t * hcd, + void *ep_handle); + +/** @} */ + +#endif /* __DWC_HCD_IF_H__ */ +#endif /* DWC_DEVICE_ONLY */ --- linux-raspi2-4.2.0.orig/drivers/usb/host/dwc_otg/dwc_otg_hcd_intr.c +++ linux-raspi2-4.2.0/drivers/usb/host/dwc_otg/dwc_otg_hcd_intr.c @@ -0,0 +1,2714 @@ +/* ========================================================================== + * $File: //dwh/usb_iip/dev/software/otg/linux/drivers/dwc_otg_hcd_intr.c $ + * $Revision: #89 $ + * $Date: 2011/10/20 $ + * $Change: 1869487 $ + * + * Synopsys HS OTG Linux Software Driver and documentation (hereinafter, + * "Software") is an Unsupported proprietary work of Synopsys, Inc. unless + * otherwise expressly agreed to in writing between Synopsys and you. + * + * The Software IS NOT an item of Licensed Software or Licensed Product under + * any End User Software License Agreement or Agreement for Licensed Product + * with Synopsys or any supplement thereto. You are permitted to use and + * redistribute this Software in source and binary forms, with or without + * modification, provided that redistributions of source code must retain this + * notice. You may not view, use, disclose, copy or distribute this file or + * any information contained herein except pursuant to this license grant from + * Synopsys. If you do not agree with this notice, including the disclaimer + * below, then you are not authorized to use the Software. + * + * THIS SOFTWARE IS BEING DISTRIBUTED BY SYNOPSYS SOLELY ON AN "AS IS" BASIS + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE HEREBY DISCLAIMED. IN NO EVENT SHALL SYNOPSYS BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH + * DAMAGE. + * ========================================================================== */ +#ifndef DWC_DEVICE_ONLY + +#include "dwc_otg_hcd.h" +#include "dwc_otg_regs.h" + +#include +#include + + +extern bool microframe_schedule; + +/** @file + * This file contains the implementation of the HCD Interrupt handlers. + */ + +int fiq_done, int_done; + +#ifdef FIQ_DEBUG +char buffer[1000*16]; +int wptr; +void notrace _fiq_print(FIQDBG_T dbg_lvl, char *fmt, ...) +{ + FIQDBG_T dbg_lvl_req = FIQDBG_PORTHUB; + va_list args; + char text[17]; + hfnum_data_t hfnum = { .d32 = FIQ_READ(dwc_regs_base + 0x408) }; + + if(dbg_lvl & dbg_lvl_req || dbg_lvl == FIQDBG_ERR) + { + local_fiq_disable(); + snprintf(text, 9, "%4d%d:%d ", hfnum.b.frnum/8, hfnum.b.frnum%8, 8 - hfnum.b.frrem/937); + va_start(args, fmt); + vsnprintf(text+8, 9, fmt, args); + va_end(args); + + memcpy(buffer + wptr, text, 16); + wptr = (wptr + 16) % sizeof(buffer); + local_fiq_enable(); + } +} +#endif + +/** This function handles interrupts for the HCD. */ +int32_t dwc_otg_hcd_handle_intr(dwc_otg_hcd_t * dwc_otg_hcd) +{ + int retval = 0; + static int last_time; + dwc_otg_core_if_t *core_if = dwc_otg_hcd->core_if; + gintsts_data_t gintsts; + gintmsk_data_t gintmsk; + hfnum_data_t hfnum; + haintmsk_data_t haintmsk; + +#ifdef DEBUG + dwc_otg_core_global_regs_t *global_regs = core_if->core_global_regs; + +#endif + + gintsts.d32 = DWC_READ_REG32(&core_if->core_global_regs->gintsts); + gintmsk.d32 = DWC_READ_REG32(&core_if->core_global_regs->gintmsk); + + /* Exit from ISR if core is hibernated */ + if (core_if->hibernation_suspend == 1) { + goto exit_handler_routine; + } + DWC_SPINLOCK(dwc_otg_hcd->lock); + /* Check if HOST Mode */ + if (dwc_otg_is_host_mode(core_if)) { + if (fiq_enable) { + local_fiq_disable(); + fiq_fsm_spin_lock(&dwc_otg_hcd->fiq_state->lock); + /* Pull in from the FIQ's disabled mask */ + gintmsk.d32 = gintmsk.d32 | ~(dwc_otg_hcd->fiq_state->gintmsk_saved.d32); + dwc_otg_hcd->fiq_state->gintmsk_saved.d32 = ~0; + } + + if (fiq_fsm_enable && ( 0x0000FFFF & ~(dwc_otg_hcd->fiq_state->haintmsk_saved.b2.chint))) { + gintsts.b.hcintr = 1; + } + + /* Danger will robinson: fake a SOF if necessary */ + if (fiq_fsm_enable && (dwc_otg_hcd->fiq_state->gintmsk_saved.b.sofintr == 1)) { + gintsts.b.sofintr = 1; + } + gintsts.d32 &= gintmsk.d32; + + if (fiq_enable) { + fiq_fsm_spin_unlock(&dwc_otg_hcd->fiq_state->lock); + local_fiq_enable(); + } + + if (!gintsts.d32) { + goto exit_handler_routine; + } + +#ifdef DEBUG + // We should be OK doing this because the common interrupts should already have been serviced + /* Don't print debug message in the interrupt handler on SOF */ +#ifndef DEBUG_SOF + if (gintsts.d32 != DWC_SOF_INTR_MASK) +#endif + DWC_DEBUGPL(DBG_HCDI, "\n"); +#endif + +#ifdef DEBUG +#ifndef DEBUG_SOF + if (gintsts.d32 != DWC_SOF_INTR_MASK) +#endif + DWC_DEBUGPL(DBG_HCDI, + "DWC OTG HCD Interrupt Detected gintsts&gintmsk=0x%08x core_if=%p\n", + gintsts.d32, core_if); +#endif + hfnum.d32 = DWC_READ_REG32(&dwc_otg_hcd->core_if->host_if->host_global_regs->hfnum); + if (gintsts.b.sofintr) { + retval |= dwc_otg_hcd_handle_sof_intr(dwc_otg_hcd); + } + + if (gintsts.b.rxstsqlvl) { + retval |= + dwc_otg_hcd_handle_rx_status_q_level_intr + (dwc_otg_hcd); + } + if (gintsts.b.nptxfempty) { + retval |= + dwc_otg_hcd_handle_np_tx_fifo_empty_intr + (dwc_otg_hcd); + } + if (gintsts.b.i2cintr) { + /** @todo Implement i2cintr handler. */ + } + if (gintsts.b.portintr) { + + gintmsk_data_t gintmsk = { .b.portintr = 1}; + retval |= dwc_otg_hcd_handle_port_intr(dwc_otg_hcd); + if (fiq_enable) { + local_fiq_disable(); + fiq_fsm_spin_lock(&dwc_otg_hcd->fiq_state->lock); + DWC_MODIFY_REG32(&dwc_otg_hcd->core_if->core_global_regs->gintmsk, 0, gintmsk.d32); + fiq_fsm_spin_unlock(&dwc_otg_hcd->fiq_state->lock); + local_fiq_enable(); + } else { + DWC_MODIFY_REG32(&dwc_otg_hcd->core_if->core_global_regs->gintmsk, 0, gintmsk.d32); + } + } + if (gintsts.b.hcintr) { + retval |= dwc_otg_hcd_handle_hc_intr(dwc_otg_hcd); + } + if (gintsts.b.ptxfempty) { + retval |= + dwc_otg_hcd_handle_perio_tx_fifo_empty_intr + (dwc_otg_hcd); + } +#ifdef DEBUG +#ifndef DEBUG_SOF + if (gintsts.d32 != DWC_SOF_INTR_MASK) +#endif + { + DWC_DEBUGPL(DBG_HCDI, + "DWC OTG HCD Finished Servicing Interrupts\n"); + DWC_DEBUGPL(DBG_HCDV, "DWC OTG HCD gintsts=0x%08x\n", + DWC_READ_REG32(&global_regs->gintsts)); + DWC_DEBUGPL(DBG_HCDV, "DWC OTG HCD gintmsk=0x%08x\n", + DWC_READ_REG32(&global_regs->gintmsk)); + } +#endif + +#ifdef DEBUG +#ifndef DEBUG_SOF + if (gintsts.d32 != DWC_SOF_INTR_MASK) +#endif + DWC_DEBUGPL(DBG_HCDI, "\n"); +#endif + + } + +exit_handler_routine: + if (fiq_enable) { + gintmsk_data_t gintmsk_new; + haintmsk_data_t haintmsk_new; + local_fiq_disable(); + fiq_fsm_spin_lock(&dwc_otg_hcd->fiq_state->lock); + gintmsk_new.d32 = *(volatile uint32_t *)&dwc_otg_hcd->fiq_state->gintmsk_saved.d32; + if(fiq_fsm_enable) + haintmsk_new.d32 = *(volatile uint32_t *)&dwc_otg_hcd->fiq_state->haintmsk_saved.d32; + else + haintmsk_new.d32 = 0x0000FFFF; + + /* The FIQ could have sneaked another interrupt in. If so, don't clear MPHI */ + if ((gintmsk_new.d32 == ~0) && (haintmsk_new.d32 == 0x0000FFFF)) { + DWC_WRITE_REG32(dwc_otg_hcd->fiq_state->mphi_regs.intstat, (1<<16)); + if (dwc_otg_hcd->fiq_state->mphi_int_count >= 50) { + fiq_print(FIQDBG_INT, dwc_otg_hcd->fiq_state, "MPHI CLR"); + DWC_WRITE_REG32(dwc_otg_hcd->fiq_state->mphi_regs.ctrl, ((1<<31) + (1<<16))); + while (!(DWC_READ_REG32(dwc_otg_hcd->fiq_state->mphi_regs.ctrl) & (1 << 17))) + ; + DWC_WRITE_REG32(dwc_otg_hcd->fiq_state->mphi_regs.ctrl, (1<<31)); + dwc_otg_hcd->fiq_state->mphi_int_count = 0; + } + int_done++; + } + haintmsk.d32 = DWC_READ_REG32(&core_if->host_if->host_global_regs->haintmsk); + /* Re-enable interrupts that the FIQ masked (first time round) */ + FIQ_WRITE(dwc_otg_hcd->fiq_state->dwc_regs_base + GINTMSK, gintmsk.d32); + fiq_fsm_spin_unlock(&dwc_otg_hcd->fiq_state->lock); + local_fiq_enable(); + + if ((jiffies / HZ) > last_time) { + //dwc_otg_qh_t *qh; + //dwc_list_link_t *cur; + /* Once a second output the fiq and irq numbers, useful for debug */ + last_time = jiffies / HZ; + // DWC_WARN("np_kick=%d AHC=%d sched_frame=%d cur_frame=%d int_done=%d fiq_done=%d", + // dwc_otg_hcd->fiq_state->kick_np_queues, dwc_otg_hcd->available_host_channels, + // dwc_otg_hcd->fiq_state->next_sched_frame, hfnum.b.frnum, int_done, dwc_otg_hcd->fiq_state->fiq_done); + //printk(KERN_WARNING "Periodic queues:\n"); + } + } + + DWC_SPINUNLOCK(dwc_otg_hcd->lock); + return retval; +} + +#ifdef DWC_TRACK_MISSED_SOFS + +#warning Compiling code to track missed SOFs +#define FRAME_NUM_ARRAY_SIZE 1000 +/** + * This function is for debug only. + */ +static inline void track_missed_sofs(uint16_t curr_frame_number) +{ + static uint16_t frame_num_array[FRAME_NUM_ARRAY_SIZE]; + static uint16_t last_frame_num_array[FRAME_NUM_ARRAY_SIZE]; + static int frame_num_idx = 0; + static uint16_t last_frame_num = DWC_HFNUM_MAX_FRNUM; + static int dumped_frame_num_array = 0; + + if (frame_num_idx < FRAME_NUM_ARRAY_SIZE) { + if (((last_frame_num + 1) & DWC_HFNUM_MAX_FRNUM) != + curr_frame_number) { + frame_num_array[frame_num_idx] = curr_frame_number; + last_frame_num_array[frame_num_idx++] = last_frame_num; + } + } else if (!dumped_frame_num_array) { + int i; + DWC_PRINTF("Frame Last Frame\n"); + DWC_PRINTF("----- ----------\n"); + for (i = 0; i < FRAME_NUM_ARRAY_SIZE; i++) { + DWC_PRINTF("0x%04x 0x%04x\n", + frame_num_array[i], last_frame_num_array[i]); + } + dumped_frame_num_array = 1; + } + last_frame_num = curr_frame_number; +} +#endif + +/** + * Handles the start-of-frame interrupt in host mode. Non-periodic + * transactions may be queued to the DWC_otg controller for the current + * (micro)frame. Periodic transactions may be queued to the controller for the + * next (micro)frame. + */ +int32_t dwc_otg_hcd_handle_sof_intr(dwc_otg_hcd_t * hcd) +{ + hfnum_data_t hfnum; + gintsts_data_t gintsts = { .d32 = 0 }; + dwc_list_link_t *qh_entry; + dwc_otg_qh_t *qh; + dwc_otg_transaction_type_e tr_type; + int did_something = 0; + int32_t next_sched_frame = -1; + + hfnum.d32 = + DWC_READ_REG32(&hcd->core_if->host_if->host_global_regs->hfnum); + +#ifdef DEBUG_SOF + DWC_DEBUGPL(DBG_HCD, "--Start of Frame Interrupt--\n"); +#endif + hcd->frame_number = hfnum.b.frnum; + +#ifdef DEBUG + hcd->frrem_accum += hfnum.b.frrem; + hcd->frrem_samples++; +#endif + +#ifdef DWC_TRACK_MISSED_SOFS + track_missed_sofs(hcd->frame_number); +#endif + /* Determine whether any periodic QHs should be executed. */ + qh_entry = DWC_LIST_FIRST(&hcd->periodic_sched_inactive); + while (qh_entry != &hcd->periodic_sched_inactive) { + qh = DWC_LIST_ENTRY(qh_entry, dwc_otg_qh_t, qh_list_entry); + qh_entry = qh_entry->next; + if (dwc_frame_num_le(qh->sched_frame, hcd->frame_number)) { + + /* + * Move QH to the ready list to be executed next + * (micro)frame. + */ + DWC_LIST_MOVE_HEAD(&hcd->periodic_sched_ready, + &qh->qh_list_entry); + + did_something = 1; + } + else + { + if(next_sched_frame < 0 || dwc_frame_num_le(qh->sched_frame, next_sched_frame)) + { + next_sched_frame = qh->sched_frame; + } + } + } + if (fiq_enable) + hcd->fiq_state->next_sched_frame = next_sched_frame; + + tr_type = dwc_otg_hcd_select_transactions(hcd); + if (tr_type != DWC_OTG_TRANSACTION_NONE) { + dwc_otg_hcd_queue_transactions(hcd, tr_type); + did_something = 1; + } + + /* Clear interrupt - but do not trample on the FIQ sof */ + if (!fiq_fsm_enable) { + gintsts.b.sofintr = 1; + DWC_WRITE_REG32(&hcd->core_if->core_global_regs->gintsts, gintsts.d32); + } + return 1; +} + +/** Handles the Rx Status Queue Level Interrupt, which indicates that there is at + * least one packet in the Rx FIFO. The packets are moved from the FIFO to + * memory if the DWC_otg controller is operating in Slave mode. */ +int32_t dwc_otg_hcd_handle_rx_status_q_level_intr(dwc_otg_hcd_t * dwc_otg_hcd) +{ + host_grxsts_data_t grxsts; + dwc_hc_t *hc = NULL; + + DWC_DEBUGPL(DBG_HCD, "--RxStsQ Level Interrupt--\n"); + + grxsts.d32 = + DWC_READ_REG32(&dwc_otg_hcd->core_if->core_global_regs->grxstsp); + + hc = dwc_otg_hcd->hc_ptr_array[grxsts.b.chnum]; + if (!hc) { + DWC_ERROR("Unable to get corresponding channel\n"); + return 0; + } + + /* Packet Status */ + DWC_DEBUGPL(DBG_HCDV, " Ch num = %d\n", grxsts.b.chnum); + DWC_DEBUGPL(DBG_HCDV, " Count = %d\n", grxsts.b.bcnt); + DWC_DEBUGPL(DBG_HCDV, " DPID = %d, hc.dpid = %d\n", grxsts.b.dpid, + hc->data_pid_start); + DWC_DEBUGPL(DBG_HCDV, " PStatus = %d\n", grxsts.b.pktsts); + + switch (grxsts.b.pktsts) { + case DWC_GRXSTS_PKTSTS_IN: + /* Read the data into the host buffer. */ + if (grxsts.b.bcnt > 0) { + dwc_otg_read_packet(dwc_otg_hcd->core_if, + hc->xfer_buff, grxsts.b.bcnt); + + /* Update the HC fields for the next packet received. */ + hc->xfer_count += grxsts.b.bcnt; + hc->xfer_buff += grxsts.b.bcnt; + } + + case DWC_GRXSTS_PKTSTS_IN_XFER_COMP: + case DWC_GRXSTS_PKTSTS_DATA_TOGGLE_ERR: + case DWC_GRXSTS_PKTSTS_CH_HALTED: + /* Handled in interrupt, just ignore data */ + break; + default: + DWC_ERROR("RX_STS_Q Interrupt: Unknown status %d\n", + grxsts.b.pktsts); + break; + } + + return 1; +} + +/** This interrupt occurs when the non-periodic Tx FIFO is half-empty. More + * data packets may be written to the FIFO for OUT transfers. More requests + * may be written to the non-periodic request queue for IN transfers. This + * interrupt is enabled only in Slave mode. */ +int32_t dwc_otg_hcd_handle_np_tx_fifo_empty_intr(dwc_otg_hcd_t * dwc_otg_hcd) +{ + DWC_DEBUGPL(DBG_HCD, "--Non-Periodic TxFIFO Empty Interrupt--\n"); + dwc_otg_hcd_queue_transactions(dwc_otg_hcd, + DWC_OTG_TRANSACTION_NON_PERIODIC); + return 1; +} + +/** This interrupt occurs when the periodic Tx FIFO is half-empty. More data + * packets may be written to the FIFO for OUT transfers. More requests may be + * written to the periodic request queue for IN transfers. This interrupt is + * enabled only in Slave mode. */ +int32_t dwc_otg_hcd_handle_perio_tx_fifo_empty_intr(dwc_otg_hcd_t * dwc_otg_hcd) +{ + DWC_DEBUGPL(DBG_HCD, "--Periodic TxFIFO Empty Interrupt--\n"); + dwc_otg_hcd_queue_transactions(dwc_otg_hcd, + DWC_OTG_TRANSACTION_PERIODIC); + return 1; +} + +/** There are multiple conditions that can cause a port interrupt. This function + * determines which interrupt conditions have occurred and handles them + * appropriately. */ +int32_t dwc_otg_hcd_handle_port_intr(dwc_otg_hcd_t * dwc_otg_hcd) +{ + int retval = 0; + hprt0_data_t hprt0; + hprt0_data_t hprt0_modify; + + hprt0.d32 = DWC_READ_REG32(dwc_otg_hcd->core_if->host_if->hprt0); + hprt0_modify.d32 = DWC_READ_REG32(dwc_otg_hcd->core_if->host_if->hprt0); + + /* Clear appropriate bits in HPRT0 to clear the interrupt bit in + * GINTSTS */ + + hprt0_modify.b.prtena = 0; + hprt0_modify.b.prtconndet = 0; + hprt0_modify.b.prtenchng = 0; + hprt0_modify.b.prtovrcurrchng = 0; + + /* Port Connect Detected + * Set flag and clear if detected */ + if (dwc_otg_hcd->core_if->hibernation_suspend == 1) { + // Dont modify port status if we are in hibernation state + hprt0_modify.b.prtconndet = 1; + hprt0_modify.b.prtenchng = 1; + DWC_WRITE_REG32(dwc_otg_hcd->core_if->host_if->hprt0, hprt0_modify.d32); + hprt0.d32 = DWC_READ_REG32(dwc_otg_hcd->core_if->host_if->hprt0); + return retval; + } + + if (hprt0.b.prtconndet) { + /** @todo - check if steps performed in 'else' block should be perfromed regardles adp */ + if (dwc_otg_hcd->core_if->adp_enable && + dwc_otg_hcd->core_if->adp.vbuson_timer_started == 1) { + DWC_PRINTF("PORT CONNECT DETECTED ----------------\n"); + DWC_TIMER_CANCEL(dwc_otg_hcd->core_if->adp.vbuson_timer); + dwc_otg_hcd->core_if->adp.vbuson_timer_started = 0; + /* TODO - check if this is required, as + * host initialization was already performed + * after initial ADP probing + */ + /*dwc_otg_hcd->core_if->adp.vbuson_timer_started = 0; + dwc_otg_core_init(dwc_otg_hcd->core_if); + dwc_otg_enable_global_interrupts(dwc_otg_hcd->core_if); + cil_hcd_start(dwc_otg_hcd->core_if);*/ + } else { + + DWC_DEBUGPL(DBG_HCD, "--Port Interrupt HPRT0=0x%08x " + "Port Connect Detected--\n", hprt0.d32); + dwc_otg_hcd->flags.b.port_connect_status_change = 1; + dwc_otg_hcd->flags.b.port_connect_status = 1; + hprt0_modify.b.prtconndet = 1; + + /* B-Device has connected, Delete the connection timer. */ + DWC_TIMER_CANCEL(dwc_otg_hcd->conn_timer); + } + /* The Hub driver asserts a reset when it sees port connect + * status change flag */ + retval |= 1; + } + + /* Port Enable Changed + * Clear if detected - Set internal flag if disabled */ + if (hprt0.b.prtenchng) { + DWC_DEBUGPL(DBG_HCD, " --Port Interrupt HPRT0=0x%08x " + "Port Enable Changed--\n", hprt0.d32); + hprt0_modify.b.prtenchng = 1; + if (hprt0.b.prtena == 1) { + hfir_data_t hfir; + int do_reset = 0; + dwc_otg_core_params_t *params = + dwc_otg_hcd->core_if->core_params; + dwc_otg_core_global_regs_t *global_regs = + dwc_otg_hcd->core_if->core_global_regs; + dwc_otg_host_if_t *host_if = + dwc_otg_hcd->core_if->host_if; + + /* Every time when port enables calculate + * HFIR.FrInterval + */ + hfir.d32 = DWC_READ_REG32(&host_if->host_global_regs->hfir); + hfir.b.frint = calc_frame_interval(dwc_otg_hcd->core_if); + DWC_WRITE_REG32(&host_if->host_global_regs->hfir, hfir.d32); + + /* Check if we need to adjust the PHY clock speed for + * low power and adjust it */ + if (params->host_support_fs_ls_low_power) { + gusbcfg_data_t usbcfg; + + usbcfg.d32 = + DWC_READ_REG32(&global_regs->gusbcfg); + + if (hprt0.b.prtspd == DWC_HPRT0_PRTSPD_LOW_SPEED + || hprt0.b.prtspd == + DWC_HPRT0_PRTSPD_FULL_SPEED) { + /* + * Low power + */ + hcfg_data_t hcfg; + if (usbcfg.b.phylpwrclksel == 0) { + /* Set PHY low power clock select for FS/LS devices */ + usbcfg.b.phylpwrclksel = 1; + DWC_WRITE_REG32 + (&global_regs->gusbcfg, + usbcfg.d32); + do_reset = 1; + } + + hcfg.d32 = + DWC_READ_REG32 + (&host_if->host_global_regs->hcfg); + + if (hprt0.b.prtspd == + DWC_HPRT0_PRTSPD_LOW_SPEED + && params->host_ls_low_power_phy_clk + == + DWC_HOST_LS_LOW_POWER_PHY_CLK_PARAM_6MHZ) + { + /* 6 MHZ */ + DWC_DEBUGPL(DBG_CIL, + "FS_PHY programming HCFG to 6 MHz (Low Power)\n"); + if (hcfg.b.fslspclksel != + DWC_HCFG_6_MHZ) { + hcfg.b.fslspclksel = + DWC_HCFG_6_MHZ; + DWC_WRITE_REG32 + (&host_if->host_global_regs->hcfg, + hcfg.d32); + do_reset = 1; + } + } else { + /* 48 MHZ */ + DWC_DEBUGPL(DBG_CIL, + "FS_PHY programming HCFG to 48 MHz ()\n"); + if (hcfg.b.fslspclksel != + DWC_HCFG_48_MHZ) { + hcfg.b.fslspclksel = + DWC_HCFG_48_MHZ; + DWC_WRITE_REG32 + (&host_if->host_global_regs->hcfg, + hcfg.d32); + do_reset = 1; + } + } + } else { + /* + * Not low power + */ + if (usbcfg.b.phylpwrclksel == 1) { + usbcfg.b.phylpwrclksel = 0; + DWC_WRITE_REG32 + (&global_regs->gusbcfg, + usbcfg.d32); + do_reset = 1; + } + } + + if (do_reset) { + DWC_TASK_SCHEDULE(dwc_otg_hcd->reset_tasklet); + } + } + + if (!do_reset) { + /* Port has been enabled set the reset change flag */ + dwc_otg_hcd->flags.b.port_reset_change = 1; + } + } else { + dwc_otg_hcd->flags.b.port_enable_change = 1; + } + retval |= 1; + } + + /** Overcurrent Change Interrupt */ + if (hprt0.b.prtovrcurrchng) { + DWC_DEBUGPL(DBG_HCD, " --Port Interrupt HPRT0=0x%08x " + "Port Overcurrent Changed--\n", hprt0.d32); + dwc_otg_hcd->flags.b.port_over_current_change = 1; + hprt0_modify.b.prtovrcurrchng = 1; + retval |= 1; + } + + /* Clear Port Interrupts */ + DWC_WRITE_REG32(dwc_otg_hcd->core_if->host_if->hprt0, hprt0_modify.d32); + + return retval; +} + +/** This interrupt indicates that one or more host channels has a pending + * interrupt. There are multiple conditions that can cause each host channel + * interrupt. This function determines which conditions have occurred for each + * host channel interrupt and handles them appropriately. */ +int32_t dwc_otg_hcd_handle_hc_intr(dwc_otg_hcd_t * dwc_otg_hcd) +{ + int i; + int retval = 0; + haint_data_t haint = { .d32 = 0 } ; + + /* Clear appropriate bits in HCINTn to clear the interrupt bit in + * GINTSTS */ + + if (!fiq_fsm_enable) + haint.d32 = dwc_otg_read_host_all_channels_intr(dwc_otg_hcd->core_if); + + // Overwrite with saved interrupts from fiq handler + if(fiq_fsm_enable) + { + /* check the mask? */ + local_fiq_disable(); + fiq_fsm_spin_lock(&dwc_otg_hcd->fiq_state->lock); + haint.b2.chint |= ~(dwc_otg_hcd->fiq_state->haintmsk_saved.b2.chint); + dwc_otg_hcd->fiq_state->haintmsk_saved.b2.chint = ~0; + fiq_fsm_spin_unlock(&dwc_otg_hcd->fiq_state->lock); + local_fiq_enable(); + } + + for (i = 0; i < dwc_otg_hcd->core_if->core_params->host_channels; i++) { + if (haint.b2.chint & (1 << i)) { + retval |= dwc_otg_hcd_handle_hc_n_intr(dwc_otg_hcd, i); + } + } + + return retval; +} + +/** + * Gets the actual length of a transfer after the transfer halts. _halt_status + * holds the reason for the halt. + * + * For IN transfers where halt_status is DWC_OTG_HC_XFER_COMPLETE, + * *short_read is set to 1 upon return if less than the requested + * number of bytes were transferred. Otherwise, *short_read is set to 0 upon + * return. short_read may also be NULL on entry, in which case it remains + * unchanged. + */ +static uint32_t get_actual_xfer_length(dwc_hc_t * hc, + dwc_otg_hc_regs_t * hc_regs, + dwc_otg_qtd_t * qtd, + dwc_otg_halt_status_e halt_status, + int *short_read) +{ + hctsiz_data_t hctsiz; + uint32_t length; + + if (short_read != NULL) { + *short_read = 0; + } + hctsiz.d32 = DWC_READ_REG32(&hc_regs->hctsiz); + + if (halt_status == DWC_OTG_HC_XFER_COMPLETE) { + if (hc->ep_is_in) { + length = hc->xfer_len - hctsiz.b.xfersize; + if (short_read != NULL) { + *short_read = (hctsiz.b.xfersize != 0); + } + } else if (hc->qh->do_split) { + //length = split_out_xfersize[hc->hc_num]; + length = qtd->ssplit_out_xfer_count; + } else { + length = hc->xfer_len; + } + } else { + /* + * Must use the hctsiz.pktcnt field to determine how much data + * has been transferred. This field reflects the number of + * packets that have been transferred via the USB. This is + * always an integral number of packets if the transfer was + * halted before its normal completion. (Can't use the + * hctsiz.xfersize field because that reflects the number of + * bytes transferred via the AHB, not the USB). + */ + length = + (hc->start_pkt_count - hctsiz.b.pktcnt) * hc->max_packet; + } + + return length; +} + +/** + * Updates the state of the URB after a Transfer Complete interrupt on the + * host channel. Updates the actual_length field of the URB based on the + * number of bytes transferred via the host channel. Sets the URB status + * if the data transfer is finished. + * + * @return 1 if the data transfer specified by the URB is completely finished, + * 0 otherwise. + */ +static int update_urb_state_xfer_comp(dwc_hc_t * hc, + dwc_otg_hc_regs_t * hc_regs, + dwc_otg_hcd_urb_t * urb, + dwc_otg_qtd_t * qtd) +{ + int xfer_done = 0; + int short_read = 0; + + int xfer_length; + + xfer_length = get_actual_xfer_length(hc, hc_regs, qtd, + DWC_OTG_HC_XFER_COMPLETE, + &short_read); + + /* non DWORD-aligned buffer case handling. */ + if (hc->align_buff && xfer_length && hc->ep_is_in) { + dwc_memcpy(urb->buf + urb->actual_length, hc->qh->dw_align_buf, + xfer_length); + } + + urb->actual_length += xfer_length; + + if (xfer_length && (hc->ep_type == DWC_OTG_EP_TYPE_BULK) && + (urb->flags & URB_SEND_ZERO_PACKET) + && (urb->actual_length == urb->length) + && !(urb->length % hc->max_packet)) { + xfer_done = 0; + } else if (short_read || urb->actual_length >= urb->length) { + xfer_done = 1; + urb->status = 0; + } + +#ifdef DEBUG + { + hctsiz_data_t hctsiz; + hctsiz.d32 = DWC_READ_REG32(&hc_regs->hctsiz); + DWC_DEBUGPL(DBG_HCDV, "DWC_otg: %s: %s, channel %d\n", + __func__, (hc->ep_is_in ? "IN" : "OUT"), + hc->hc_num); + DWC_DEBUGPL(DBG_HCDV, " hc->xfer_len %d\n", hc->xfer_len); + DWC_DEBUGPL(DBG_HCDV, " hctsiz.xfersize %d\n", + hctsiz.b.xfersize); + DWC_DEBUGPL(DBG_HCDV, " urb->transfer_buffer_length %d\n", + urb->length); + DWC_DEBUGPL(DBG_HCDV, " urb->actual_length %d\n", + urb->actual_length); + DWC_DEBUGPL(DBG_HCDV, " short_read %d, xfer_done %d\n", + short_read, xfer_done); + } +#endif + + return xfer_done; +} + +/* + * Save the starting data toggle for the next transfer. The data toggle is + * saved in the QH for non-control transfers and it's saved in the QTD for + * control transfers. + */ +void dwc_otg_hcd_save_data_toggle(dwc_hc_t * hc, + dwc_otg_hc_regs_t * hc_regs, dwc_otg_qtd_t * qtd) +{ + hctsiz_data_t hctsiz; + hctsiz.d32 = DWC_READ_REG32(&hc_regs->hctsiz); + + if (hc->ep_type != DWC_OTG_EP_TYPE_CONTROL) { + dwc_otg_qh_t *qh = hc->qh; + if (hctsiz.b.pid == DWC_HCTSIZ_DATA0) { + qh->data_toggle = DWC_OTG_HC_PID_DATA0; + } else { + qh->data_toggle = DWC_OTG_HC_PID_DATA1; + } + } else { + if (hctsiz.b.pid == DWC_HCTSIZ_DATA0) { + qtd->data_toggle = DWC_OTG_HC_PID_DATA0; + } else { + qtd->data_toggle = DWC_OTG_HC_PID_DATA1; + } + } +} + +/** + * Updates the state of an Isochronous URB when the transfer is stopped for + * any reason. The fields of the current entry in the frame descriptor array + * are set based on the transfer state and the input _halt_status. Completes + * the Isochronous URB if all the URB frames have been completed. + * + * @return DWC_OTG_HC_XFER_COMPLETE if there are more frames remaining to be + * transferred in the URB. Otherwise return DWC_OTG_HC_XFER_URB_COMPLETE. + */ +static dwc_otg_halt_status_e +update_isoc_urb_state(dwc_otg_hcd_t * hcd, + dwc_hc_t * hc, + dwc_otg_hc_regs_t * hc_regs, + dwc_otg_qtd_t * qtd, dwc_otg_halt_status_e halt_status) +{ + dwc_otg_hcd_urb_t *urb = qtd->urb; + dwc_otg_halt_status_e ret_val = halt_status; + struct dwc_otg_hcd_iso_packet_desc *frame_desc; + + frame_desc = &urb->iso_descs[qtd->isoc_frame_index]; + switch (halt_status) { + case DWC_OTG_HC_XFER_COMPLETE: + frame_desc->status = 0; + frame_desc->actual_length = + get_actual_xfer_length(hc, hc_regs, qtd, halt_status, NULL); + + /* non DWORD-aligned buffer case handling. */ + if (hc->align_buff && frame_desc->actual_length && hc->ep_is_in) { + dwc_memcpy(urb->buf + frame_desc->offset + qtd->isoc_split_offset, + hc->qh->dw_align_buf, frame_desc->actual_length); + } + + break; + case DWC_OTG_HC_XFER_FRAME_OVERRUN: + urb->error_count++; + if (hc->ep_is_in) { + frame_desc->status = -DWC_E_NO_STREAM_RES; + } else { + frame_desc->status = -DWC_E_COMMUNICATION; + } + frame_desc->actual_length = 0; + break; + case DWC_OTG_HC_XFER_BABBLE_ERR: + urb->error_count++; + frame_desc->status = -DWC_E_OVERFLOW; + /* Don't need to update actual_length in this case. */ + break; + case DWC_OTG_HC_XFER_XACT_ERR: + urb->error_count++; + frame_desc->status = -DWC_E_PROTOCOL; + frame_desc->actual_length = + get_actual_xfer_length(hc, hc_regs, qtd, halt_status, NULL); + + /* non DWORD-aligned buffer case handling. */ + if (hc->align_buff && frame_desc->actual_length && hc->ep_is_in) { + dwc_memcpy(urb->buf + frame_desc->offset + qtd->isoc_split_offset, + hc->qh->dw_align_buf, frame_desc->actual_length); + } + /* Skip whole frame */ + if (hc->qh->do_split && (hc->ep_type == DWC_OTG_EP_TYPE_ISOC) && + hc->ep_is_in && hcd->core_if->dma_enable) { + qtd->complete_split = 0; + qtd->isoc_split_offset = 0; + } + + break; + default: + DWC_ASSERT(1, "Unhandled _halt_status (%d)\n", halt_status); + break; + } + if (++qtd->isoc_frame_index == urb->packet_count) { + /* + * urb->status is not used for isoc transfers. + * The individual frame_desc statuses are used instead. + */ + hcd->fops->complete(hcd, urb->priv, urb, 0); + ret_val = DWC_OTG_HC_XFER_URB_COMPLETE; + } else { + ret_val = DWC_OTG_HC_XFER_COMPLETE; + } + return ret_val; +} + +/** + * Frees the first QTD in the QH's list if free_qtd is 1. For non-periodic + * QHs, removes the QH from the active non-periodic schedule. If any QTDs are + * still linked to the QH, the QH is added to the end of the inactive + * non-periodic schedule. For periodic QHs, removes the QH from the periodic + * schedule if no more QTDs are linked to the QH. + */ +static void deactivate_qh(dwc_otg_hcd_t * hcd, dwc_otg_qh_t * qh, int free_qtd) +{ + int continue_split = 0; + dwc_otg_qtd_t *qtd; + + DWC_DEBUGPL(DBG_HCDV, " %s(%p,%p,%d)\n", __func__, hcd, qh, free_qtd); + + qtd = DWC_CIRCLEQ_FIRST(&qh->qtd_list); + + if (qtd->complete_split) { + continue_split = 1; + } else if (qtd->isoc_split_pos == DWC_HCSPLIT_XACTPOS_MID || + qtd->isoc_split_pos == DWC_HCSPLIT_XACTPOS_END) { + continue_split = 1; + } + + if (free_qtd) { + dwc_otg_hcd_qtd_remove_and_free(hcd, qtd, qh); + continue_split = 0; + } + + qh->channel = NULL; + dwc_otg_hcd_qh_deactivate(hcd, qh, continue_split); +} + +/** + * Releases a host channel for use by other transfers. Attempts to select and + * queue more transactions since at least one host channel is available. + * + * @param hcd The HCD state structure. + * @param hc The host channel to release. + * @param qtd The QTD associated with the host channel. This QTD may be freed + * if the transfer is complete or an error has occurred. + * @param halt_status Reason the channel is being released. This status + * determines the actions taken by this function. + */ +static void release_channel(dwc_otg_hcd_t * hcd, + dwc_hc_t * hc, + dwc_otg_qtd_t * qtd, + dwc_otg_halt_status_e halt_status) +{ + dwc_otg_transaction_type_e tr_type; + int free_qtd; + dwc_irqflags_t flags; + dwc_spinlock_t *channel_lock = hcd->channel_lock; + + int hog_port = 0; + + DWC_DEBUGPL(DBG_HCDV, " %s: channel %d, halt_status %d, xfer_len %d\n", + __func__, hc->hc_num, halt_status, hc->xfer_len); + + if(fiq_fsm_enable && hc->do_split) { + if(!hc->ep_is_in && hc->ep_type == UE_ISOCHRONOUS) { + if(hc->xact_pos == DWC_HCSPLIT_XACTPOS_MID || + hc->xact_pos == DWC_HCSPLIT_XACTPOS_BEGIN) { + hog_port = 0; + } + } + } + + switch (halt_status) { + case DWC_OTG_HC_XFER_URB_COMPLETE: + free_qtd = 1; + break; + case DWC_OTG_HC_XFER_AHB_ERR: + case DWC_OTG_HC_XFER_STALL: + case DWC_OTG_HC_XFER_BABBLE_ERR: + free_qtd = 1; + break; + case DWC_OTG_HC_XFER_XACT_ERR: + if (qtd->error_count >= 3) { + DWC_DEBUGPL(DBG_HCDV, + " Complete URB with transaction error\n"); + free_qtd = 1; + qtd->urb->status = -DWC_E_PROTOCOL; + hcd->fops->complete(hcd, qtd->urb->priv, + qtd->urb, -DWC_E_PROTOCOL); + } else { + free_qtd = 0; + } + break; + case DWC_OTG_HC_XFER_URB_DEQUEUE: + /* + * The QTD has already been removed and the QH has been + * deactivated. Don't want to do anything except release the + * host channel and try to queue more transfers. + */ + goto cleanup; + case DWC_OTG_HC_XFER_NO_HALT_STATUS: + free_qtd = 0; + break; + case DWC_OTG_HC_XFER_PERIODIC_INCOMPLETE: + DWC_DEBUGPL(DBG_HCDV, + " Complete URB with I/O error\n"); + free_qtd = 1; + qtd->urb->status = -DWC_E_IO; + hcd->fops->complete(hcd, qtd->urb->priv, + qtd->urb, -DWC_E_IO); + break; + default: + free_qtd = 0; + break; + } + + deactivate_qh(hcd, hc->qh, free_qtd); + +cleanup: + /* + * Release the host channel for use by other transfers. The cleanup + * function clears the channel interrupt enables and conditions, so + * there's no need to clear the Channel Halted interrupt separately. + */ + if (fiq_fsm_enable && hcd->fiq_state->channel[hc->hc_num].fsm != FIQ_PASSTHROUGH) + dwc_otg_cleanup_fiq_channel(hcd, hc->hc_num); + dwc_otg_hc_cleanup(hcd->core_if, hc); + DWC_CIRCLEQ_INSERT_TAIL(&hcd->free_hc_list, hc, hc_list_entry); + + if (!microframe_schedule) { + switch (hc->ep_type) { + case DWC_OTG_EP_TYPE_CONTROL: + case DWC_OTG_EP_TYPE_BULK: + hcd->non_periodic_channels--; + break; + + default: + /* + * Don't release reservations for periodic channels here. + * That's done when a periodic transfer is descheduled (i.e. + * when the QH is removed from the periodic schedule). + */ + break; + } + } else { + + DWC_SPINLOCK_IRQSAVE(channel_lock, &flags); + hcd->available_host_channels++; + fiq_print(FIQDBG_INT, hcd->fiq_state, "AHC = %d ", hcd->available_host_channels); + DWC_SPINUNLOCK_IRQRESTORE(channel_lock, flags); + } + + /* Try to queue more transfers now that there's a free channel. */ + tr_type = dwc_otg_hcd_select_transactions(hcd); + if (tr_type != DWC_OTG_TRANSACTION_NONE) { + dwc_otg_hcd_queue_transactions(hcd, tr_type); + } +} + +/** + * Halts a host channel. If the channel cannot be halted immediately because + * the request queue is full, this function ensures that the FIFO empty + * interrupt for the appropriate queue is enabled so that the halt request can + * be queued when there is space in the request queue. + * + * This function may also be called in DMA mode. In that case, the channel is + * simply released since the core always halts the channel automatically in + * DMA mode. + */ +static void halt_channel(dwc_otg_hcd_t * hcd, + dwc_hc_t * hc, + dwc_otg_qtd_t * qtd, dwc_otg_halt_status_e halt_status) +{ + if (hcd->core_if->dma_enable) { + release_channel(hcd, hc, qtd, halt_status); + return; + } + + /* Slave mode processing... */ + dwc_otg_hc_halt(hcd->core_if, hc, halt_status); + + if (hc->halt_on_queue) { + gintmsk_data_t gintmsk = {.d32 = 0 }; + dwc_otg_core_global_regs_t *global_regs; + global_regs = hcd->core_if->core_global_regs; + + if (hc->ep_type == DWC_OTG_EP_TYPE_CONTROL || + hc->ep_type == DWC_OTG_EP_TYPE_BULK) { + /* + * Make sure the Non-periodic Tx FIFO empty interrupt + * is enabled so that the non-periodic schedule will + * be processed. + */ + gintmsk.b.nptxfempty = 1; + if (fiq_enable) { + local_fiq_disable(); + fiq_fsm_spin_lock(&hcd->fiq_state->lock); + DWC_MODIFY_REG32(&global_regs->gintmsk, 0, gintmsk.d32); + fiq_fsm_spin_unlock(&hcd->fiq_state->lock); + local_fiq_enable(); + } else { + DWC_MODIFY_REG32(&global_regs->gintmsk, 0, gintmsk.d32); + } + } else { + /* + * Move the QH from the periodic queued schedule to + * the periodic assigned schedule. This allows the + * halt to be queued when the periodic schedule is + * processed. + */ + DWC_LIST_MOVE_HEAD(&hcd->periodic_sched_assigned, + &hc->qh->qh_list_entry); + + /* + * Make sure the Periodic Tx FIFO Empty interrupt is + * enabled so that the periodic schedule will be + * processed. + */ + gintmsk.b.ptxfempty = 1; + if (fiq_enable) { + local_fiq_disable(); + fiq_fsm_spin_lock(&hcd->fiq_state->lock); + DWC_MODIFY_REG32(&global_regs->gintmsk, 0, gintmsk.d32); + fiq_fsm_spin_unlock(&hcd->fiq_state->lock); + local_fiq_enable(); + } else { + DWC_MODIFY_REG32(&global_regs->gintmsk, 0, gintmsk.d32); + } + } + } +} + +/** + * Performs common cleanup for non-periodic transfers after a Transfer + * Complete interrupt. This function should be called after any endpoint type + * specific handling is finished to release the host channel. + */ +static void complete_non_periodic_xfer(dwc_otg_hcd_t * hcd, + dwc_hc_t * hc, + dwc_otg_hc_regs_t * hc_regs, + dwc_otg_qtd_t * qtd, + dwc_otg_halt_status_e halt_status) +{ + hcint_data_t hcint; + + qtd->error_count = 0; + + hcint.d32 = DWC_READ_REG32(&hc_regs->hcint); + if (hcint.b.nyet) { + /* + * Got a NYET on the last transaction of the transfer. This + * means that the endpoint should be in the PING state at the + * beginning of the next transfer. + */ + hc->qh->ping_state = 1; + clear_hc_int(hc_regs, nyet); + } + + /* + * Always halt and release the host channel to make it available for + * more transfers. There may still be more phases for a control + * transfer or more data packets for a bulk transfer at this point, + * but the host channel is still halted. A channel will be reassigned + * to the transfer when the non-periodic schedule is processed after + * the channel is released. This allows transactions to be queued + * properly via dwc_otg_hcd_queue_transactions, which also enables the + * Tx FIFO Empty interrupt if necessary. + */ + if (hc->ep_is_in) { + /* + * IN transfers in Slave mode require an explicit disable to + * halt the channel. (In DMA mode, this call simply releases + * the channel.) + */ + halt_channel(hcd, hc, qtd, halt_status); + } else { + /* + * The channel is automatically disabled by the core for OUT + * transfers in Slave mode. + */ + release_channel(hcd, hc, qtd, halt_status); + } +} + +/** + * Performs common cleanup for periodic transfers after a Transfer Complete + * interrupt. This function should be called after any endpoint type specific + * handling is finished to release the host channel. + */ +static void complete_periodic_xfer(dwc_otg_hcd_t * hcd, + dwc_hc_t * hc, + dwc_otg_hc_regs_t * hc_regs, + dwc_otg_qtd_t * qtd, + dwc_otg_halt_status_e halt_status) +{ + hctsiz_data_t hctsiz; + qtd->error_count = 0; + + hctsiz.d32 = DWC_READ_REG32(&hc_regs->hctsiz); + if (!hc->ep_is_in || hctsiz.b.pktcnt == 0) { + /* Core halts channel in these cases. */ + release_channel(hcd, hc, qtd, halt_status); + } else { + /* Flush any outstanding requests from the Tx queue. */ + halt_channel(hcd, hc, qtd, halt_status); + } +} + +static int32_t handle_xfercomp_isoc_split_in(dwc_otg_hcd_t * hcd, + dwc_hc_t * hc, + dwc_otg_hc_regs_t * hc_regs, + dwc_otg_qtd_t * qtd) +{ + uint32_t len; + struct dwc_otg_hcd_iso_packet_desc *frame_desc; + frame_desc = &qtd->urb->iso_descs[qtd->isoc_frame_index]; + + len = get_actual_xfer_length(hc, hc_regs, qtd, + DWC_OTG_HC_XFER_COMPLETE, NULL); + + if (!len) { + qtd->complete_split = 0; + qtd->isoc_split_offset = 0; + return 0; + } + frame_desc->actual_length += len; + + if (hc->align_buff && len) + dwc_memcpy(qtd->urb->buf + frame_desc->offset + + qtd->isoc_split_offset, hc->qh->dw_align_buf, len); + qtd->isoc_split_offset += len; + + if (frame_desc->length == frame_desc->actual_length) { + frame_desc->status = 0; + qtd->isoc_frame_index++; + qtd->complete_split = 0; + qtd->isoc_split_offset = 0; + } + + if (qtd->isoc_frame_index == qtd->urb->packet_count) { + hcd->fops->complete(hcd, qtd->urb->priv, qtd->urb, 0); + release_channel(hcd, hc, qtd, DWC_OTG_HC_XFER_URB_COMPLETE); + } else { + release_channel(hcd, hc, qtd, DWC_OTG_HC_XFER_NO_HALT_STATUS); + } + + return 1; /* Indicates that channel released */ +} + +/** + * Handles a host channel Transfer Complete interrupt. This handler may be + * called in either DMA mode or Slave mode. + */ +static int32_t handle_hc_xfercomp_intr(dwc_otg_hcd_t * hcd, + dwc_hc_t * hc, + dwc_otg_hc_regs_t * hc_regs, + dwc_otg_qtd_t * qtd) +{ + int urb_xfer_done; + dwc_otg_halt_status_e halt_status = DWC_OTG_HC_XFER_COMPLETE; + dwc_otg_hcd_urb_t *urb = qtd->urb; + int pipe_type = dwc_otg_hcd_get_pipe_type(&urb->pipe_info); + + DWC_DEBUGPL(DBG_HCDI, "--Host Channel %d Interrupt: " + "Transfer Complete--\n", hc->hc_num); + + if (hcd->core_if->dma_desc_enable) { + dwc_otg_hcd_complete_xfer_ddma(hcd, hc, hc_regs, halt_status); + if (pipe_type == UE_ISOCHRONOUS) { + /* Do not disable the interrupt, just clear it */ + clear_hc_int(hc_regs, xfercomp); + return 1; + } + goto handle_xfercomp_done; + } + + /* + * Handle xfer complete on CSPLIT. + */ + + if (hc->qh->do_split) { + if ((hc->ep_type == DWC_OTG_EP_TYPE_ISOC) && hc->ep_is_in + && hcd->core_if->dma_enable) { + if (qtd->complete_split + && handle_xfercomp_isoc_split_in(hcd, hc, hc_regs, + qtd)) + goto handle_xfercomp_done; + } else { + qtd->complete_split = 0; + } + } + + /* Update the QTD and URB states. */ + switch (pipe_type) { + case UE_CONTROL: + switch (qtd->control_phase) { + case DWC_OTG_CONTROL_SETUP: + if (urb->length > 0) { + qtd->control_phase = DWC_OTG_CONTROL_DATA; + } else { + qtd->control_phase = DWC_OTG_CONTROL_STATUS; + } + DWC_DEBUGPL(DBG_HCDV, + " Control setup transaction done\n"); + halt_status = DWC_OTG_HC_XFER_COMPLETE; + break; + case DWC_OTG_CONTROL_DATA:{ + urb_xfer_done = + update_urb_state_xfer_comp(hc, hc_regs, urb, + qtd); + if (urb_xfer_done) { + qtd->control_phase = + DWC_OTG_CONTROL_STATUS; + DWC_DEBUGPL(DBG_HCDV, + " Control data transfer done\n"); + } else { + dwc_otg_hcd_save_data_toggle(hc, hc_regs, qtd); + } + halt_status = DWC_OTG_HC_XFER_COMPLETE; + break; + } + case DWC_OTG_CONTROL_STATUS: + DWC_DEBUGPL(DBG_HCDV, " Control transfer complete\n"); + if (urb->status == -DWC_E_IN_PROGRESS) { + urb->status = 0; + } + hcd->fops->complete(hcd, urb->priv, urb, urb->status); + halt_status = DWC_OTG_HC_XFER_URB_COMPLETE; + break; + } + + complete_non_periodic_xfer(hcd, hc, hc_regs, qtd, halt_status); + break; + case UE_BULK: + DWC_DEBUGPL(DBG_HCDV, " Bulk transfer complete\n"); + urb_xfer_done = + update_urb_state_xfer_comp(hc, hc_regs, urb, qtd); + if (urb_xfer_done) { + hcd->fops->complete(hcd, urb->priv, urb, urb->status); + halt_status = DWC_OTG_HC_XFER_URB_COMPLETE; + } else { + halt_status = DWC_OTG_HC_XFER_COMPLETE; + } + + dwc_otg_hcd_save_data_toggle(hc, hc_regs, qtd); + complete_non_periodic_xfer(hcd, hc, hc_regs, qtd, halt_status); + break; + case UE_INTERRUPT: + DWC_DEBUGPL(DBG_HCDV, " Interrupt transfer complete\n"); + urb_xfer_done = + update_urb_state_xfer_comp(hc, hc_regs, urb, qtd); + + /* + * Interrupt URB is done on the first transfer complete + * interrupt. + */ + if (urb_xfer_done) { + hcd->fops->complete(hcd, urb->priv, urb, urb->status); + halt_status = DWC_OTG_HC_XFER_URB_COMPLETE; + } else { + halt_status = DWC_OTG_HC_XFER_COMPLETE; + } + + dwc_otg_hcd_save_data_toggle(hc, hc_regs, qtd); + complete_periodic_xfer(hcd, hc, hc_regs, qtd, halt_status); + break; + case UE_ISOCHRONOUS: + DWC_DEBUGPL(DBG_HCDV, " Isochronous transfer complete\n"); + if (qtd->isoc_split_pos == DWC_HCSPLIT_XACTPOS_ALL) { + halt_status = + update_isoc_urb_state(hcd, hc, hc_regs, qtd, + DWC_OTG_HC_XFER_COMPLETE); + } + complete_periodic_xfer(hcd, hc, hc_regs, qtd, halt_status); + break; + } + +handle_xfercomp_done: + disable_hc_int(hc_regs, xfercompl); + + return 1; +} + +/** + * Handles a host channel STALL interrupt. This handler may be called in + * either DMA mode or Slave mode. + */ +static int32_t handle_hc_stall_intr(dwc_otg_hcd_t * hcd, + dwc_hc_t * hc, + dwc_otg_hc_regs_t * hc_regs, + dwc_otg_qtd_t * qtd) +{ + dwc_otg_hcd_urb_t *urb = qtd->urb; + int pipe_type = dwc_otg_hcd_get_pipe_type(&urb->pipe_info); + + DWC_DEBUGPL(DBG_HCD, "--Host Channel %d Interrupt: " + "STALL Received--\n", hc->hc_num); + + if (hcd->core_if->dma_desc_enable) { + dwc_otg_hcd_complete_xfer_ddma(hcd, hc, hc_regs, DWC_OTG_HC_XFER_STALL); + goto handle_stall_done; + } + + if (pipe_type == UE_CONTROL) { + hcd->fops->complete(hcd, urb->priv, urb, -DWC_E_PIPE); + } + + if (pipe_type == UE_BULK || pipe_type == UE_INTERRUPT) { + hcd->fops->complete(hcd, urb->priv, urb, -DWC_E_PIPE); + /* + * USB protocol requires resetting the data toggle for bulk + * and interrupt endpoints when a CLEAR_FEATURE(ENDPOINT_HALT) + * setup command is issued to the endpoint. Anticipate the + * CLEAR_FEATURE command since a STALL has occurred and reset + * the data toggle now. + */ + hc->qh->data_toggle = 0; + } + + halt_channel(hcd, hc, qtd, DWC_OTG_HC_XFER_STALL); + +handle_stall_done: + disable_hc_int(hc_regs, stall); + + return 1; +} + +/* + * Updates the state of the URB when a transfer has been stopped due to an + * abnormal condition before the transfer completes. Modifies the + * actual_length field of the URB to reflect the number of bytes that have + * actually been transferred via the host channel. + */ +static void update_urb_state_xfer_intr(dwc_hc_t * hc, + dwc_otg_hc_regs_t * hc_regs, + dwc_otg_hcd_urb_t * urb, + dwc_otg_qtd_t * qtd, + dwc_otg_halt_status_e halt_status) +{ + uint32_t bytes_transferred = get_actual_xfer_length(hc, hc_regs, qtd, + halt_status, NULL); + /* non DWORD-aligned buffer case handling. */ + if (hc->align_buff && bytes_transferred && hc->ep_is_in) { + dwc_memcpy(urb->buf + urb->actual_length, hc->qh->dw_align_buf, + bytes_transferred); + } + + urb->actual_length += bytes_transferred; + +#ifdef DEBUG + { + hctsiz_data_t hctsiz; + hctsiz.d32 = DWC_READ_REG32(&hc_regs->hctsiz); + DWC_DEBUGPL(DBG_HCDV, "DWC_otg: %s: %s, channel %d\n", + __func__, (hc->ep_is_in ? "IN" : "OUT"), + hc->hc_num); + DWC_DEBUGPL(DBG_HCDV, " hc->start_pkt_count %d\n", + hc->start_pkt_count); + DWC_DEBUGPL(DBG_HCDV, " hctsiz.pktcnt %d\n", hctsiz.b.pktcnt); + DWC_DEBUGPL(DBG_HCDV, " hc->max_packet %d\n", hc->max_packet); + DWC_DEBUGPL(DBG_HCDV, " bytes_transferred %d\n", + bytes_transferred); + DWC_DEBUGPL(DBG_HCDV, " urb->actual_length %d\n", + urb->actual_length); + DWC_DEBUGPL(DBG_HCDV, " urb->transfer_buffer_length %d\n", + urb->length); + } +#endif +} + +/** + * Handles a host channel NAK interrupt. This handler may be called in either + * DMA mode or Slave mode. + */ +static int32_t handle_hc_nak_intr(dwc_otg_hcd_t * hcd, + dwc_hc_t * hc, + dwc_otg_hc_regs_t * hc_regs, + dwc_otg_qtd_t * qtd) +{ + DWC_DEBUGPL(DBG_HCDI, "--Host Channel %d Interrupt: " + "NAK Received--\n", hc->hc_num); + + /* + * When we get bulk NAKs then remember this so we holdoff on this qh until + * the beginning of the next frame + */ + switch(dwc_otg_hcd_get_pipe_type(&qtd->urb->pipe_info)) { + case UE_BULK: + case UE_CONTROL: + if (nak_holdoff && qtd->qh->do_split) + hc->qh->nak_frame = dwc_otg_hcd_get_frame_number(hcd); + } + + /* + * Handle NAK for IN/OUT SSPLIT/CSPLIT transfers, bulk, control, and + * interrupt. Re-start the SSPLIT transfer. + */ + if (hc->do_split) { + if (hc->complete_split) { + qtd->error_count = 0; + } + qtd->complete_split = 0; + halt_channel(hcd, hc, qtd, DWC_OTG_HC_XFER_NAK); + goto handle_nak_done; + } + + switch (dwc_otg_hcd_get_pipe_type(&qtd->urb->pipe_info)) { + case UE_CONTROL: + case UE_BULK: + if (hcd->core_if->dma_enable && hc->ep_is_in) { + /* + * NAK interrupts are enabled on bulk/control IN + * transfers in DMA mode for the sole purpose of + * resetting the error count after a transaction error + * occurs. The core will continue transferring data. + * Disable other interrupts unmasked for the same + * reason. + */ + disable_hc_int(hc_regs, datatglerr); + disable_hc_int(hc_regs, ack); + qtd->error_count = 0; + goto handle_nak_done; + } + + /* + * NAK interrupts normally occur during OUT transfers in DMA + * or Slave mode. For IN transfers, more requests will be + * queued as request queue space is available. + */ + qtd->error_count = 0; + + if (!hc->qh->ping_state) { + update_urb_state_xfer_intr(hc, hc_regs, + qtd->urb, qtd, + DWC_OTG_HC_XFER_NAK); + dwc_otg_hcd_save_data_toggle(hc, hc_regs, qtd); + + if (hc->speed == DWC_OTG_EP_SPEED_HIGH) + hc->qh->ping_state = 1; + } + + /* + * Halt the channel so the transfer can be re-started from + * the appropriate point or the PING protocol will + * start/continue. + */ + halt_channel(hcd, hc, qtd, DWC_OTG_HC_XFER_NAK); + break; + case UE_INTERRUPT: + qtd->error_count = 0; + halt_channel(hcd, hc, qtd, DWC_OTG_HC_XFER_NAK); + break; + case UE_ISOCHRONOUS: + /* Should never get called for isochronous transfers. */ + DWC_ASSERT(1, "NACK interrupt for ISOC transfer\n"); + break; + } + +handle_nak_done: + disable_hc_int(hc_regs, nak); + + return 1; +} + +/** + * Handles a host channel ACK interrupt. This interrupt is enabled when + * performing the PING protocol in Slave mode, when errors occur during + * either Slave mode or DMA mode, and during Start Split transactions. + */ +static int32_t handle_hc_ack_intr(dwc_otg_hcd_t * hcd, + dwc_hc_t * hc, + dwc_otg_hc_regs_t * hc_regs, + dwc_otg_qtd_t * qtd) +{ + DWC_DEBUGPL(DBG_HCDI, "--Host Channel %d Interrupt: " + "ACK Received--\n", hc->hc_num); + + if (hc->do_split) { + /* + * Handle ACK on SSPLIT. + * ACK should not occur in CSPLIT. + */ + if (!hc->ep_is_in && hc->data_pid_start != DWC_OTG_HC_PID_SETUP) { + qtd->ssplit_out_xfer_count = hc->xfer_len; + } + if (!(hc->ep_type == DWC_OTG_EP_TYPE_ISOC && !hc->ep_is_in)) { + /* Don't need complete for isochronous out transfers. */ + qtd->complete_split = 1; + } + + /* ISOC OUT */ + if (hc->ep_type == DWC_OTG_EP_TYPE_ISOC && !hc->ep_is_in) { + switch (hc->xact_pos) { + case DWC_HCSPLIT_XACTPOS_ALL: + break; + case DWC_HCSPLIT_XACTPOS_END: + qtd->isoc_split_pos = DWC_HCSPLIT_XACTPOS_ALL; + qtd->isoc_split_offset = 0; + break; + case DWC_HCSPLIT_XACTPOS_BEGIN: + case DWC_HCSPLIT_XACTPOS_MID: + /* + * For BEGIN or MID, calculate the length for + * the next microframe to determine the correct + * SSPLIT token, either MID or END. + */ + { + struct dwc_otg_hcd_iso_packet_desc + *frame_desc; + + frame_desc = + &qtd->urb-> + iso_descs[qtd->isoc_frame_index]; + qtd->isoc_split_offset += 188; + + if ((frame_desc->length - + qtd->isoc_split_offset) <= 188) { + qtd->isoc_split_pos = + DWC_HCSPLIT_XACTPOS_END; + } else { + qtd->isoc_split_pos = + DWC_HCSPLIT_XACTPOS_MID; + } + + } + break; + } + } else { + halt_channel(hcd, hc, qtd, DWC_OTG_HC_XFER_ACK); + } + } else { + /* + * An unmasked ACK on a non-split DMA transaction is + * for the sole purpose of resetting error counts. Disable other + * interrupts unmasked for the same reason. + */ + if(hcd->core_if->dma_enable) { + disable_hc_int(hc_regs, datatglerr); + disable_hc_int(hc_regs, nak); + } + qtd->error_count = 0; + + if (hc->qh->ping_state) { + hc->qh->ping_state = 0; + /* + * Halt the channel so the transfer can be re-started + * from the appropriate point. This only happens in + * Slave mode. In DMA mode, the ping_state is cleared + * when the transfer is started because the core + * automatically executes the PING, then the transfer. + */ + halt_channel(hcd, hc, qtd, DWC_OTG_HC_XFER_ACK); + } + } + + /* + * If the ACK occurred when _not_ in the PING state, let the channel + * continue transferring data after clearing the error count. + */ + + disable_hc_int(hc_regs, ack); + + return 1; +} + +/** + * Handles a host channel NYET interrupt. This interrupt should only occur on + * Bulk and Control OUT endpoints and for complete split transactions. If a + * NYET occurs at the same time as a Transfer Complete interrupt, it is + * handled in the xfercomp interrupt handler, not here. This handler may be + * called in either DMA mode or Slave mode. + */ +static int32_t handle_hc_nyet_intr(dwc_otg_hcd_t * hcd, + dwc_hc_t * hc, + dwc_otg_hc_regs_t * hc_regs, + dwc_otg_qtd_t * qtd) +{ + DWC_DEBUGPL(DBG_HCDI, "--Host Channel %d Interrupt: " + "NYET Received--\n", hc->hc_num); + + /* + * NYET on CSPLIT + * re-do the CSPLIT immediately on non-periodic + */ + if (hc->do_split && hc->complete_split) { + if (hc->ep_is_in && (hc->ep_type == DWC_OTG_EP_TYPE_ISOC) + && hcd->core_if->dma_enable) { + qtd->complete_split = 0; + qtd->isoc_split_offset = 0; + if (++qtd->isoc_frame_index == qtd->urb->packet_count) { + hcd->fops->complete(hcd, qtd->urb->priv, qtd->urb, 0); + release_channel(hcd, hc, qtd, DWC_OTG_HC_XFER_URB_COMPLETE); + } + else + release_channel(hcd, hc, qtd, DWC_OTG_HC_XFER_NO_HALT_STATUS); + goto handle_nyet_done; + } + + if (hc->ep_type == DWC_OTG_EP_TYPE_INTR || + hc->ep_type == DWC_OTG_EP_TYPE_ISOC) { + int frnum = dwc_otg_hcd_get_frame_number(hcd); + + // With the FIQ running we only ever see the failed NYET + if (dwc_full_frame_num(frnum) != + dwc_full_frame_num(hc->qh->sched_frame) || + fiq_fsm_enable) { + /* + * No longer in the same full speed frame. + * Treat this as a transaction error. + */ +#if 0 + /** @todo Fix system performance so this can + * be treated as an error. Right now complete + * splits cannot be scheduled precisely enough + * due to other system activity, so this error + * occurs regularly in Slave mode. + */ + qtd->error_count++; +#endif + qtd->complete_split = 0; + halt_channel(hcd, hc, qtd, + DWC_OTG_HC_XFER_XACT_ERR); + /** @todo add support for isoc release */ + goto handle_nyet_done; + } + } + + halt_channel(hcd, hc, qtd, DWC_OTG_HC_XFER_NYET); + goto handle_nyet_done; + } + + hc->qh->ping_state = 1; + qtd->error_count = 0; + + update_urb_state_xfer_intr(hc, hc_regs, qtd->urb, qtd, + DWC_OTG_HC_XFER_NYET); + dwc_otg_hcd_save_data_toggle(hc, hc_regs, qtd); + + /* + * Halt the channel and re-start the transfer so the PING + * protocol will start. + */ + halt_channel(hcd, hc, qtd, DWC_OTG_HC_XFER_NYET); + +handle_nyet_done: + disable_hc_int(hc_regs, nyet); + return 1; +} + +/** + * Handles a host channel babble interrupt. This handler may be called in + * either DMA mode or Slave mode. + */ +static int32_t handle_hc_babble_intr(dwc_otg_hcd_t * hcd, + dwc_hc_t * hc, + dwc_otg_hc_regs_t * hc_regs, + dwc_otg_qtd_t * qtd) +{ + DWC_DEBUGPL(DBG_HCDI, "--Host Channel %d Interrupt: " + "Babble Error--\n", hc->hc_num); + + if (hcd->core_if->dma_desc_enable) { + dwc_otg_hcd_complete_xfer_ddma(hcd, hc, hc_regs, + DWC_OTG_HC_XFER_BABBLE_ERR); + goto handle_babble_done; + } + + if (hc->ep_type != DWC_OTG_EP_TYPE_ISOC) { + hcd->fops->complete(hcd, qtd->urb->priv, + qtd->urb, -DWC_E_OVERFLOW); + halt_channel(hcd, hc, qtd, DWC_OTG_HC_XFER_BABBLE_ERR); + } else { + dwc_otg_halt_status_e halt_status; + halt_status = update_isoc_urb_state(hcd, hc, hc_regs, qtd, + DWC_OTG_HC_XFER_BABBLE_ERR); + halt_channel(hcd, hc, qtd, halt_status); + } + +handle_babble_done: + disable_hc_int(hc_regs, bblerr); + return 1; +} + +/** + * Handles a host channel AHB error interrupt. This handler is only called in + * DMA mode. + */ +static int32_t handle_hc_ahberr_intr(dwc_otg_hcd_t * hcd, + dwc_hc_t * hc, + dwc_otg_hc_regs_t * hc_regs, + dwc_otg_qtd_t * qtd) +{ + hcchar_data_t hcchar; + hcsplt_data_t hcsplt; + hctsiz_data_t hctsiz; + uint32_t hcdma; + char *pipetype, *speed; + + dwc_otg_hcd_urb_t *urb = qtd->urb; + + DWC_DEBUGPL(DBG_HCDI, "--Host Channel %d Interrupt: " + "AHB Error--\n", hc->hc_num); + + hcchar.d32 = DWC_READ_REG32(&hc_regs->hcchar); + hcsplt.d32 = DWC_READ_REG32(&hc_regs->hcsplt); + hctsiz.d32 = DWC_READ_REG32(&hc_regs->hctsiz); + hcdma = DWC_READ_REG32(&hc_regs->hcdma); + + DWC_ERROR("AHB ERROR, Channel %d\n", hc->hc_num); + DWC_ERROR(" hcchar 0x%08x, hcsplt 0x%08x\n", hcchar.d32, hcsplt.d32); + DWC_ERROR(" hctsiz 0x%08x, hcdma 0x%08x\n", hctsiz.d32, hcdma); + DWC_DEBUGPL(DBG_HCD, "DWC OTG HCD URB Enqueue\n"); + DWC_ERROR(" Device address: %d\n", + dwc_otg_hcd_get_dev_addr(&urb->pipe_info)); + DWC_ERROR(" Endpoint: %d, %s\n", + dwc_otg_hcd_get_ep_num(&urb->pipe_info), + (dwc_otg_hcd_is_pipe_in(&urb->pipe_info) ? "IN" : "OUT")); + + switch (dwc_otg_hcd_get_pipe_type(&urb->pipe_info)) { + case UE_CONTROL: + pipetype = "CONTROL"; + break; + case UE_BULK: + pipetype = "BULK"; + break; + case UE_INTERRUPT: + pipetype = "INTERRUPT"; + break; + case UE_ISOCHRONOUS: + pipetype = "ISOCHRONOUS"; + break; + default: + pipetype = "UNKNOWN"; + break; + } + + DWC_ERROR(" Endpoint type: %s\n", pipetype); + + switch (hc->speed) { + case DWC_OTG_EP_SPEED_HIGH: + speed = "HIGH"; + break; + case DWC_OTG_EP_SPEED_FULL: + speed = "FULL"; + break; + case DWC_OTG_EP_SPEED_LOW: + speed = "LOW"; + break; + default: + speed = "UNKNOWN"; + break; + }; + + DWC_ERROR(" Speed: %s\n", speed); + + DWC_ERROR(" Max packet size: %d\n", + dwc_otg_hcd_get_mps(&urb->pipe_info)); + DWC_ERROR(" Data buffer length: %d\n", urb->length); + DWC_ERROR(" Transfer buffer: %p, Transfer DMA: %p\n", + urb->buf, (void *)urb->dma); + DWC_ERROR(" Setup buffer: %p, Setup DMA: %p\n", + urb->setup_packet, (void *)urb->setup_dma); + DWC_ERROR(" Interval: %d\n", urb->interval); + + /* Core haltes the channel for Descriptor DMA mode */ + if (hcd->core_if->dma_desc_enable) { + dwc_otg_hcd_complete_xfer_ddma(hcd, hc, hc_regs, + DWC_OTG_HC_XFER_AHB_ERR); + goto handle_ahberr_done; + } + + hcd->fops->complete(hcd, urb->priv, urb, -DWC_E_IO); + + /* + * Force a channel halt. Don't call halt_channel because that won't + * write to the HCCHARn register in DMA mode to force the halt. + */ + dwc_otg_hc_halt(hcd->core_if, hc, DWC_OTG_HC_XFER_AHB_ERR); +handle_ahberr_done: + disable_hc_int(hc_regs, ahberr); + return 1; +} + +/** + * Handles a host channel transaction error interrupt. This handler may be + * called in either DMA mode or Slave mode. + */ +static int32_t handle_hc_xacterr_intr(dwc_otg_hcd_t * hcd, + dwc_hc_t * hc, + dwc_otg_hc_regs_t * hc_regs, + dwc_otg_qtd_t * qtd) +{ + DWC_DEBUGPL(DBG_HCDI, "--Host Channel %d Interrupt: " + "Transaction Error--\n", hc->hc_num); + + if (hcd->core_if->dma_desc_enable) { + dwc_otg_hcd_complete_xfer_ddma(hcd, hc, hc_regs, + DWC_OTG_HC_XFER_XACT_ERR); + goto handle_xacterr_done; + } + + switch (dwc_otg_hcd_get_pipe_type(&qtd->urb->pipe_info)) { + case UE_CONTROL: + case UE_BULK: + qtd->error_count++; + if (!hc->qh->ping_state) { + + update_urb_state_xfer_intr(hc, hc_regs, + qtd->urb, qtd, + DWC_OTG_HC_XFER_XACT_ERR); + dwc_otg_hcd_save_data_toggle(hc, hc_regs, qtd); + if (!hc->ep_is_in && hc->speed == DWC_OTG_EP_SPEED_HIGH) { + hc->qh->ping_state = 1; + } + } + + /* + * Halt the channel so the transfer can be re-started from + * the appropriate point or the PING protocol will start. + */ + halt_channel(hcd, hc, qtd, DWC_OTG_HC_XFER_XACT_ERR); + break; + case UE_INTERRUPT: + qtd->error_count++; + if (hc->do_split && hc->complete_split) { + qtd->complete_split = 0; + } + halt_channel(hcd, hc, qtd, DWC_OTG_HC_XFER_XACT_ERR); + break; + case UE_ISOCHRONOUS: + { + dwc_otg_halt_status_e halt_status; + halt_status = + update_isoc_urb_state(hcd, hc, hc_regs, qtd, + DWC_OTG_HC_XFER_XACT_ERR); + + halt_channel(hcd, hc, qtd, halt_status); + } + break; + } +handle_xacterr_done: + disable_hc_int(hc_regs, xacterr); + + return 1; +} + +/** + * Handles a host channel frame overrun interrupt. This handler may be called + * in either DMA mode or Slave mode. + */ +static int32_t handle_hc_frmovrun_intr(dwc_otg_hcd_t * hcd, + dwc_hc_t * hc, + dwc_otg_hc_regs_t * hc_regs, + dwc_otg_qtd_t * qtd) +{ + DWC_DEBUGPL(DBG_HCDI, "--Host Channel %d Interrupt: " + "Frame Overrun--\n", hc->hc_num); + + switch (dwc_otg_hcd_get_pipe_type(&qtd->urb->pipe_info)) { + case UE_CONTROL: + case UE_BULK: + break; + case UE_INTERRUPT: + halt_channel(hcd, hc, qtd, DWC_OTG_HC_XFER_FRAME_OVERRUN); + break; + case UE_ISOCHRONOUS: + { + dwc_otg_halt_status_e halt_status; + halt_status = + update_isoc_urb_state(hcd, hc, hc_regs, qtd, + DWC_OTG_HC_XFER_FRAME_OVERRUN); + + halt_channel(hcd, hc, qtd, halt_status); + } + break; + } + + disable_hc_int(hc_regs, frmovrun); + + return 1; +} + +/** + * Handles a host channel data toggle error interrupt. This handler may be + * called in either DMA mode or Slave mode. + */ +static int32_t handle_hc_datatglerr_intr(dwc_otg_hcd_t * hcd, + dwc_hc_t * hc, + dwc_otg_hc_regs_t * hc_regs, + dwc_otg_qtd_t * qtd) +{ + DWC_DEBUGPL(DBG_HCDI, "--Host Channel %d Interrupt: " + "Data Toggle Error on %s transfer--\n", + hc->hc_num, (hc->ep_is_in ? "IN" : "OUT")); + + /* Data toggles on split transactions cause the hc to halt. + * restart transfer */ + if(hc->qh->do_split) + { + qtd->error_count++; + dwc_otg_hcd_save_data_toggle(hc, hc_regs, qtd); + update_urb_state_xfer_intr(hc, hc_regs, + qtd->urb, qtd, DWC_OTG_HC_XFER_XACT_ERR); + halt_channel(hcd, hc, qtd, DWC_OTG_HC_XFER_XACT_ERR); + } else if (hc->ep_is_in) { + /* An unmasked data toggle error on a non-split DMA transaction is + * for the sole purpose of resetting error counts. Disable other + * interrupts unmasked for the same reason. + */ + if(hcd->core_if->dma_enable) { + disable_hc_int(hc_regs, ack); + disable_hc_int(hc_regs, nak); + } + qtd->error_count = 0; + } + + disable_hc_int(hc_regs, datatglerr); + + return 1; +} + +#ifdef DEBUG +/** + * This function is for debug only. It checks that a valid halt status is set + * and that HCCHARn.chdis is clear. If there's a problem, corrective action is + * taken and a warning is issued. + * @return 1 if halt status is ok, 0 otherwise. + */ +static inline int halt_status_ok(dwc_otg_hcd_t * hcd, + dwc_hc_t * hc, + dwc_otg_hc_regs_t * hc_regs, + dwc_otg_qtd_t * qtd) +{ + hcchar_data_t hcchar; + hctsiz_data_t hctsiz; + hcint_data_t hcint; + hcintmsk_data_t hcintmsk; + hcsplt_data_t hcsplt; + + if (hc->halt_status == DWC_OTG_HC_XFER_NO_HALT_STATUS) { + /* + * This code is here only as a check. This condition should + * never happen. Ignore the halt if it does occur. + */ + hcchar.d32 = DWC_READ_REG32(&hc_regs->hcchar); + hctsiz.d32 = DWC_READ_REG32(&hc_regs->hctsiz); + hcint.d32 = DWC_READ_REG32(&hc_regs->hcint); + hcintmsk.d32 = DWC_READ_REG32(&hc_regs->hcintmsk); + hcsplt.d32 = DWC_READ_REG32(&hc_regs->hcsplt); + DWC_WARN + ("%s: hc->halt_status == DWC_OTG_HC_XFER_NO_HALT_STATUS, " + "channel %d, hcchar 0x%08x, hctsiz 0x%08x, " + "hcint 0x%08x, hcintmsk 0x%08x, " + "hcsplt 0x%08x, qtd->complete_split %d\n", __func__, + hc->hc_num, hcchar.d32, hctsiz.d32, hcint.d32, + hcintmsk.d32, hcsplt.d32, qtd->complete_split); + + DWC_WARN("%s: no halt status, channel %d, ignoring interrupt\n", + __func__, hc->hc_num); + DWC_WARN("\n"); + clear_hc_int(hc_regs, chhltd); + return 0; + } + + /* + * This code is here only as a check. hcchar.chdis should + * never be set when the halt interrupt occurs. Halt the + * channel again if it does occur. + */ + hcchar.d32 = DWC_READ_REG32(&hc_regs->hcchar); + if (hcchar.b.chdis) { + DWC_WARN("%s: hcchar.chdis set unexpectedly, " + "hcchar 0x%08x, trying to halt again\n", + __func__, hcchar.d32); + clear_hc_int(hc_regs, chhltd); + hc->halt_pending = 0; + halt_channel(hcd, hc, qtd, hc->halt_status); + return 0; + } + + return 1; +} +#endif + +/** + * Handles a host Channel Halted interrupt in DMA mode. This handler + * determines the reason the channel halted and proceeds accordingly. + */ +static void handle_hc_chhltd_intr_dma(dwc_otg_hcd_t * hcd, + dwc_hc_t * hc, + dwc_otg_hc_regs_t * hc_regs, + dwc_otg_qtd_t * qtd) +{ + int out_nak_enh = 0; + hcint_data_t hcint; + hcintmsk_data_t hcintmsk; + /* For core with OUT NAK enhancement, the flow for high- + * speed CONTROL/BULK OUT is handled a little differently. + */ + if (hcd->core_if->snpsid >= OTG_CORE_REV_2_71a) { + if (hc->speed == DWC_OTG_EP_SPEED_HIGH && !hc->ep_is_in && + (hc->ep_type == DWC_OTG_EP_TYPE_CONTROL || + hc->ep_type == DWC_OTG_EP_TYPE_BULK)) { + out_nak_enh = 1; + } + } + + if (hc->halt_status == DWC_OTG_HC_XFER_URB_DEQUEUE || + (hc->halt_status == DWC_OTG_HC_XFER_AHB_ERR + && !hcd->core_if->dma_desc_enable)) { + /* + * Just release the channel. A dequeue can happen on a + * transfer timeout. In the case of an AHB Error, the channel + * was forced to halt because there's no way to gracefully + * recover. + */ + if (hcd->core_if->dma_desc_enable) + dwc_otg_hcd_complete_xfer_ddma(hcd, hc, hc_regs, + hc->halt_status); + else + release_channel(hcd, hc, qtd, hc->halt_status); + return; + } + + /* Read the HCINTn register to determine the cause for the halt. */ + + hcint.d32 = DWC_READ_REG32(&hc_regs->hcint); + hcintmsk.d32 = DWC_READ_REG32(&hc_regs->hcintmsk); + + if (hcint.b.xfercomp) { + /** @todo This is here because of a possible hardware bug. Spec + * says that on SPLIT-ISOC OUT transfers in DMA mode that a HALT + * interrupt w/ACK bit set should occur, but I only see the + * XFERCOMP bit, even with it masked out. This is a workaround + * for that behavior. Should fix this when hardware is fixed. + */ + if (hc->ep_type == DWC_OTG_EP_TYPE_ISOC && !hc->ep_is_in) { + handle_hc_ack_intr(hcd, hc, hc_regs, qtd); + } + handle_hc_xfercomp_intr(hcd, hc, hc_regs, qtd); + } else if (hcint.b.stall) { + handle_hc_stall_intr(hcd, hc, hc_regs, qtd); + } else if (hcint.b.xacterr && !hcd->core_if->dma_desc_enable) { + if (out_nak_enh) { + if (hcint.b.nyet || hcint.b.nak || hcint.b.ack) { + DWC_DEBUGPL(DBG_HCD, "XactErr with NYET/NAK/ACK\n"); + qtd->error_count = 0; + } else { + DWC_DEBUGPL(DBG_HCD, "XactErr without NYET/NAK/ACK\n"); + } + } + + /* + * Must handle xacterr before nak or ack. Could get a xacterr + * at the same time as either of these on a BULK/CONTROL OUT + * that started with a PING. The xacterr takes precedence. + */ + handle_hc_xacterr_intr(hcd, hc, hc_regs, qtd); + } else if (hcint.b.xcs_xact && hcd->core_if->dma_desc_enable) { + handle_hc_xacterr_intr(hcd, hc, hc_regs, qtd); + } else if (hcint.b.ahberr && hcd->core_if->dma_desc_enable) { + handle_hc_ahberr_intr(hcd, hc, hc_regs, qtd); + } else if (hcint.b.bblerr) { + handle_hc_babble_intr(hcd, hc, hc_regs, qtd); + } else if (hcint.b.frmovrun) { + handle_hc_frmovrun_intr(hcd, hc, hc_regs, qtd); + } else if (hcint.b.datatglerr) { + handle_hc_datatglerr_intr(hcd, hc, hc_regs, qtd); + } else if (!out_nak_enh) { + if (hcint.b.nyet) { + /* + * Must handle nyet before nak or ack. Could get a nyet at the + * same time as either of those on a BULK/CONTROL OUT that + * started with a PING. The nyet takes precedence. + */ + handle_hc_nyet_intr(hcd, hc, hc_regs, qtd); + } else if (hcint.b.nak && !hcintmsk.b.nak) { + /* + * If nak is not masked, it's because a non-split IN transfer + * is in an error state. In that case, the nak is handled by + * the nak interrupt handler, not here. Handle nak here for + * BULK/CONTROL OUT transfers, which halt on a NAK to allow + * rewinding the buffer pointer. + */ + handle_hc_nak_intr(hcd, hc, hc_regs, qtd); + } else if (hcint.b.ack && !hcintmsk.b.ack) { + /* + * If ack is not masked, it's because a non-split IN transfer + * is in an error state. In that case, the ack is handled by + * the ack interrupt handler, not here. Handle ack here for + * split transfers. Start splits halt on ACK. + */ + handle_hc_ack_intr(hcd, hc, hc_regs, qtd); + } else { + if (hc->ep_type == DWC_OTG_EP_TYPE_INTR || + hc->ep_type == DWC_OTG_EP_TYPE_ISOC) { + /* + * A periodic transfer halted with no other channel + * interrupts set. Assume it was halted by the core + * because it could not be completed in its scheduled + * (micro)frame. + */ +#ifdef DEBUG + DWC_PRINTF + ("%s: Halt channel %d (assume incomplete periodic transfer)\n", + __func__, hc->hc_num); +#endif + halt_channel(hcd, hc, qtd, + DWC_OTG_HC_XFER_PERIODIC_INCOMPLETE); + } else { + DWC_ERROR + ("%s: Channel %d, DMA Mode -- ChHltd set, but reason " + "for halting is unknown, hcint 0x%08x, intsts 0x%08x\n", + __func__, hc->hc_num, hcint.d32, + DWC_READ_REG32(&hcd-> + core_if->core_global_regs-> + gintsts)); + /* Failthrough: use 3-strikes rule */ + qtd->error_count++; + dwc_otg_hcd_save_data_toggle(hc, hc_regs, qtd); + update_urb_state_xfer_intr(hc, hc_regs, + qtd->urb, qtd, DWC_OTG_HC_XFER_XACT_ERR); + halt_channel(hcd, hc, qtd, DWC_OTG_HC_XFER_XACT_ERR); + } + + } + } else { + DWC_PRINTF("NYET/NAK/ACK/other in non-error case, 0x%08x\n", + hcint.d32); + /* Failthrough: use 3-strikes rule */ + qtd->error_count++; + dwc_otg_hcd_save_data_toggle(hc, hc_regs, qtd); + update_urb_state_xfer_intr(hc, hc_regs, + qtd->urb, qtd, DWC_OTG_HC_XFER_XACT_ERR); + halt_channel(hcd, hc, qtd, DWC_OTG_HC_XFER_XACT_ERR); + } +} + +/** + * Handles a host channel Channel Halted interrupt. + * + * In slave mode, this handler is called only when the driver specifically + * requests a halt. This occurs during handling other host channel interrupts + * (e.g. nak, xacterr, stall, nyet, etc.). + * + * In DMA mode, this is the interrupt that occurs when the core has finished + * processing a transfer on a channel. Other host channel interrupts (except + * ahberr) are disabled in DMA mode. + */ +static int32_t handle_hc_chhltd_intr(dwc_otg_hcd_t * hcd, + dwc_hc_t * hc, + dwc_otg_hc_regs_t * hc_regs, + dwc_otg_qtd_t * qtd) +{ + DWC_DEBUGPL(DBG_HCDI, "--Host Channel %d Interrupt: " + "Channel Halted--\n", hc->hc_num); + + if (hcd->core_if->dma_enable) { + handle_hc_chhltd_intr_dma(hcd, hc, hc_regs, qtd); + } else { +#ifdef DEBUG + if (!halt_status_ok(hcd, hc, hc_regs, qtd)) { + return 1; + } +#endif + release_channel(hcd, hc, qtd, hc->halt_status); + } + + return 1; +} + + +/** + * dwc_otg_fiq_unmangle_isoc() - Update the iso_frame_desc structure on + * FIQ transfer completion + * @hcd: Pointer to dwc_otg_hcd struct + * @num: Host channel number + * + * 1. Un-mangle the status as recorded in each iso_frame_desc status + * 2. Copy it from the dwc_otg_urb into the real URB + */ +void dwc_otg_fiq_unmangle_isoc(dwc_otg_hcd_t *hcd, dwc_otg_qh_t *qh, dwc_otg_qtd_t *qtd, uint32_t num) +{ + struct dwc_otg_hcd_urb *dwc_urb = qtd->urb; + int nr_frames = dwc_urb->packet_count; + int i; + hcint_data_t frame_hcint; + + for (i = 0; i < nr_frames; i++) { + frame_hcint.d32 = dwc_urb->iso_descs[i].status; + if (frame_hcint.b.xfercomp) { + dwc_urb->iso_descs[i].status = 0; + dwc_urb->actual_length += dwc_urb->iso_descs[i].actual_length; + } else if (frame_hcint.b.frmovrun) { + if (qh->ep_is_in) + dwc_urb->iso_descs[i].status = -DWC_E_NO_STREAM_RES; + else + dwc_urb->iso_descs[i].status = -DWC_E_COMMUNICATION; + dwc_urb->error_count++; + dwc_urb->iso_descs[i].actual_length = 0; + } else if (frame_hcint.b.xacterr) { + dwc_urb->iso_descs[i].status = -DWC_E_PROTOCOL; + dwc_urb->error_count++; + dwc_urb->iso_descs[i].actual_length = 0; + } else if (frame_hcint.b.bblerr) { + dwc_urb->iso_descs[i].status = -DWC_E_OVERFLOW; + dwc_urb->error_count++; + dwc_urb->iso_descs[i].actual_length = 0; + } else { + /* Something went wrong */ + dwc_urb->iso_descs[i].status = -1; + dwc_urb->iso_descs[i].actual_length = 0; + dwc_urb->error_count++; + } + } + qh->sched_frame = dwc_frame_num_inc(qh->sched_frame, qh->interval * (nr_frames - 1)); + + //printk_ratelimited(KERN_INFO "%s: HS isochronous of %d/%d frames with %d errors complete\n", + // __FUNCTION__, i, dwc_urb->packet_count, dwc_urb->error_count); +} + +/** + * dwc_otg_fiq_unsetup_per_dma() - Remove data from bounce buffers for split transactions + * @hcd: Pointer to dwc_otg_hcd struct + * @num: Host channel number + * + * Copies data from the FIQ bounce buffers into the URB's transfer buffer. Does not modify URB state. + * Returns total length of data or -1 if the buffers were not used. + * + */ +int dwc_otg_fiq_unsetup_per_dma(dwc_otg_hcd_t *hcd, dwc_otg_qh_t *qh, dwc_otg_qtd_t *qtd, uint32_t num) +{ + dwc_hc_t *hc = qh->channel; + struct fiq_dma_blob *blob = hcd->fiq_dmab; + struct fiq_channel_state *st = &hcd->fiq_state->channel[num]; + uint8_t *ptr = NULL; + int index = 0, len = 0; + int i = 0; + if (hc->ep_is_in) { + /* Copy data out of the DMA bounce buffers to the URB's buffer. + * The align_buf is ignored as this is ignored on FSM enqueue. */ + ptr = qtd->urb->buf; + if (qh->ep_type == UE_ISOCHRONOUS) { + /* Isoc IN transactions - grab the offset of the iso_frame_desc into the URB transfer buffer */ + index = qtd->isoc_frame_index; + ptr += qtd->urb->iso_descs[index].offset; + } else { + /* Need to increment by actual_length for interrupt IN */ + ptr += qtd->urb->actual_length; + } + + for (i = 0; i < st->dma_info.index; i++) { + len += st->dma_info.slot_len[i]; + dwc_memcpy(ptr, &blob->channel[num].index[i].buf[0], st->dma_info.slot_len[i]); + ptr += st->dma_info.slot_len[i]; + } + return len; + } else { + /* OUT endpoints - nothing to do. */ + return -1; + } + +} +/** + * dwc_otg_hcd_handle_hc_fsm() - handle an unmasked channel interrupt + * from a channel handled in the FIQ + * @hcd: Pointer to dwc_otg_hcd struct + * @num: Host channel number + * + * If a host channel interrupt was received by the IRQ and this was a channel + * used by the FIQ, the execution flow for transfer completion is substantially + * different from the normal (messy) path. This function and its friends handles + * channel cleanup and transaction completion from a FIQ transaction. + */ +void dwc_otg_hcd_handle_hc_fsm(dwc_otg_hcd_t *hcd, uint32_t num) +{ + struct fiq_channel_state *st = &hcd->fiq_state->channel[num]; + dwc_hc_t *hc = hcd->hc_ptr_array[num]; + dwc_otg_qtd_t *qtd = DWC_CIRCLEQ_FIRST(&hc->qh->qtd_list); + dwc_otg_qh_t *qh = hc->qh; + dwc_otg_hc_regs_t *hc_regs = hcd->core_if->host_if->hc_regs[num]; + hcint_data_t hcint = hcd->fiq_state->channel[num].hcint_copy; + int hostchannels = 0; + fiq_print(FIQDBG_INT, hcd->fiq_state, "OUT %01d %01d ", num , st->fsm); + + hostchannels = hcd->available_host_channels; + switch (st->fsm) { + case FIQ_TEST: + break; + + case FIQ_DEQUEUE_ISSUED: + /* hc_halt was called. QTD no longer exists. */ + /* TODO: for a nonperiodic split transaction, need to issue a + * CLEAR_TT_BUFFER hub command if we were in the start-split phase. + */ + release_channel(hcd, hc, NULL, hc->halt_status); + break; + + case FIQ_NP_SPLIT_DONE: + /* Nonperiodic transaction complete. */ + if (!hc->ep_is_in) { + qtd->ssplit_out_xfer_count = hc->xfer_len; + } + if (hcint.b.xfercomp) { + handle_hc_xfercomp_intr(hcd, hc, hc_regs, qtd); + } else if (hcint.b.nak) { + handle_hc_nak_intr(hcd, hc, hc_regs, qtd); + } + break; + + case FIQ_NP_SPLIT_HS_ABORTED: + /* A HS abort is a 3-strikes on the HS bus at any point in the transaction. + * Normally a CLEAR_TT_BUFFER hub command would be required: we can't do that + * because there's no guarantee which order a non-periodic split happened in. + * We could end up clearing a perfectly good transaction out of the buffer. + */ + if (hcint.b.xacterr) { + qtd->error_count += st->nr_errors; + handle_hc_xacterr_intr(hcd, hc, hc_regs, qtd); + } else if (hcint.b.ahberr) { + handle_hc_ahberr_intr(hcd, hc, hc_regs, qtd); + } else { + local_fiq_disable(); + BUG(); + } + break; + + case FIQ_NP_SPLIT_LS_ABORTED: + /* A few cases can cause this - either an unknown state on a SSPLIT or + * STALL/data toggle error response on a CSPLIT */ + if (hcint.b.stall) { + handle_hc_stall_intr(hcd, hc, hc_regs, qtd); + } else if (hcint.b.datatglerr) { + handle_hc_datatglerr_intr(hcd, hc, hc_regs, qtd); + } else if (hcint.b.bblerr) { + handle_hc_babble_intr(hcd, hc, hc_regs, qtd); + } else if (hcint.b.ahberr) { + handle_hc_ahberr_intr(hcd, hc, hc_regs, qtd); + } else { + local_fiq_disable(); + BUG(); + } + break; + + case FIQ_PER_SPLIT_DONE: + /* Isoc IN or Interrupt IN/OUT */ + + /* Flow control here is different from the normal execution by the driver. + * We need to completely ignore most of the driver's method of handling + * split transactions and do it ourselves. + */ + if (hc->ep_type == UE_INTERRUPT) { + if (hcint.b.nak) { + handle_hc_nak_intr(hcd, hc, hc_regs, qtd); + } else if (hc->ep_is_in) { + int len; + len = dwc_otg_fiq_unsetup_per_dma(hcd, hc->qh, qtd, num); + //printk(KERN_NOTICE "FIQ Transaction: hc=%d len=%d urb_len = %d\n", num, len, qtd->urb->length); + qtd->urb->actual_length += len; + if (qtd->urb->actual_length >= qtd->urb->length) { + qtd->urb->status = 0; + hcd->fops->complete(hcd, qtd->urb->priv, qtd->urb, qtd->urb->status); + release_channel(hcd, hc, qtd, DWC_OTG_HC_XFER_URB_COMPLETE); + } else { + /* Interrupt transfer not complete yet - is it a short read? */ + if (len < hc->max_packet) { + /* Interrupt transaction complete */ + qtd->urb->status = 0; + hcd->fops->complete(hcd, qtd->urb->priv, qtd->urb, qtd->urb->status); + release_channel(hcd, hc, qtd, DWC_OTG_HC_XFER_URB_COMPLETE); + } else { + /* Further transactions required */ + release_channel(hcd, hc, qtd, DWC_OTG_HC_XFER_COMPLETE); + } + } + } else { + /* Interrupt OUT complete. */ + dwc_otg_hcd_save_data_toggle(hc, hc_regs, qtd); + qtd->urb->actual_length += hc->xfer_len; + if (qtd->urb->actual_length >= qtd->urb->length) { + qtd->urb->status = 0; + hcd->fops->complete(hcd, qtd->urb->priv, qtd->urb, qtd->urb->status); + release_channel(hcd, hc, qtd, DWC_OTG_HC_XFER_URB_COMPLETE); + } else { + release_channel(hcd, hc, qtd, DWC_OTG_HC_XFER_COMPLETE); + } + } + } else { + /* ISOC IN complete. */ + struct dwc_otg_hcd_iso_packet_desc *frame_desc = &qtd->urb->iso_descs[qtd->isoc_frame_index]; + int len = 0; + /* Record errors, update qtd. */ + if (st->nr_errors) { + frame_desc->actual_length = 0; + frame_desc->status = -DWC_E_PROTOCOL; + } else { + frame_desc->status = 0; + /* Unswizzle dma */ + len = dwc_otg_fiq_unsetup_per_dma(hcd, qh, qtd, num); + frame_desc->actual_length = len; + } + qtd->isoc_frame_index++; + if (qtd->isoc_frame_index == qtd->urb->packet_count) { + hcd->fops->complete(hcd, qtd->urb->priv, qtd->urb, 0); + release_channel(hcd, hc, qtd, DWC_OTG_HC_XFER_URB_COMPLETE); + } else { + release_channel(hcd, hc, qtd, DWC_OTG_HC_XFER_COMPLETE); + } + } + break; + + case FIQ_PER_ISO_OUT_DONE: { + struct dwc_otg_hcd_iso_packet_desc *frame_desc = &qtd->urb->iso_descs[qtd->isoc_frame_index]; + /* Record errors, update qtd. */ + if (st->nr_errors) { + frame_desc->actual_length = 0; + frame_desc->status = -DWC_E_PROTOCOL; + } else { + frame_desc->status = 0; + frame_desc->actual_length = frame_desc->length; + } + qtd->isoc_frame_index++; + qtd->isoc_split_offset = 0; + if (qtd->isoc_frame_index == qtd->urb->packet_count) { + hcd->fops->complete(hcd, qtd->urb->priv, qtd->urb, 0); + release_channel(hcd, hc, qtd, DWC_OTG_HC_XFER_URB_COMPLETE); + } else { + release_channel(hcd, hc, qtd, DWC_OTG_HC_XFER_COMPLETE); + } + } + break; + + case FIQ_PER_SPLIT_NYET_ABORTED: + /* Doh. lost the data. */ + printk_ratelimited(KERN_INFO "Transfer to device %d endpoint 0x%x frame %d failed " + "- FIQ reported NYET. Data may have been lost.\n", + hc->dev_addr, hc->ep_num, dwc_otg_hcd_get_frame_number(hcd) >> 3); + if (hc->ep_type == UE_ISOCHRONOUS) { + struct dwc_otg_hcd_iso_packet_desc *frame_desc = &qtd->urb->iso_descs[qtd->isoc_frame_index]; + /* Record errors, update qtd. */ + frame_desc->actual_length = 0; + frame_desc->status = -DWC_E_PROTOCOL; + qtd->isoc_frame_index++; + qtd->isoc_split_offset = 0; + if (qtd->isoc_frame_index == qtd->urb->packet_count) { + hcd->fops->complete(hcd, qtd->urb->priv, qtd->urb, 0); + release_channel(hcd, hc, qtd, DWC_OTG_HC_XFER_URB_COMPLETE); + } else { + release_channel(hcd, hc, qtd, DWC_OTG_HC_XFER_COMPLETE); + } + } else { + release_channel(hcd, hc, qtd, DWC_OTG_HC_XFER_NO_HALT_STATUS); + } + break; + + case FIQ_HS_ISOC_DONE: + /* The FIQ has performed a whole pile of isochronous transactions. + * The status is recorded as the interrupt state should the transaction + * fail. + */ + dwc_otg_fiq_unmangle_isoc(hcd, qh, qtd, num); + hcd->fops->complete(hcd, qtd->urb->priv, qtd->urb, 0); + release_channel(hcd, hc, qtd, DWC_OTG_HC_XFER_URB_COMPLETE); + break; + + case FIQ_PER_SPLIT_LS_ABORTED: + if (hcint.b.xacterr) { + /* Hub has responded with an ERR packet. Device + * has been unplugged or the port has been disabled. + * TODO: need to issue a reset to the hub port. */ + qtd->error_count += 3; + handle_hc_xacterr_intr(hcd, hc, hc_regs, qtd); + } else if (hcint.b.stall) { + handle_hc_stall_intr(hcd, hc, hc_regs, qtd); + } else if (hcint.b.bblerr) { + handle_hc_babble_intr(hcd, hc, hc_regs, qtd); + } else { + printk_ratelimited(KERN_INFO "Transfer to device %d endpoint 0x%x failed " + "- FIQ reported FSM=%d. Data may have been lost.\n", + st->fsm, hc->dev_addr, hc->ep_num); + release_channel(hcd, hc, qtd, DWC_OTG_HC_XFER_NO_HALT_STATUS); + } + break; + + case FIQ_PER_SPLIT_HS_ABORTED: + /* Either the SSPLIT phase suffered transaction errors or something + * unexpected happened. + */ + qtd->error_count += 3; + handle_hc_xacterr_intr(hcd, hc, hc_regs, qtd); + release_channel(hcd, hc, qtd, DWC_OTG_HC_XFER_NO_HALT_STATUS); + break; + + case FIQ_PER_SPLIT_TIMEOUT: + /* Couldn't complete in the nominated frame */ + printk(KERN_INFO "Transfer to device %d endpoint 0x%x frame %d failed " + "- FIQ timed out. Data may have been lost.\n", + hc->dev_addr, hc->ep_num, dwc_otg_hcd_get_frame_number(hcd) >> 3); + if (hc->ep_type == UE_ISOCHRONOUS) { + struct dwc_otg_hcd_iso_packet_desc *frame_desc = &qtd->urb->iso_descs[qtd->isoc_frame_index]; + /* Record errors, update qtd. */ + frame_desc->actual_length = 0; + if (hc->ep_is_in) { + frame_desc->status = -DWC_E_NO_STREAM_RES; + } else { + frame_desc->status = -DWC_E_COMMUNICATION; + } + qtd->isoc_frame_index++; + if (qtd->isoc_frame_index == qtd->urb->packet_count) { + hcd->fops->complete(hcd, qtd->urb->priv, qtd->urb, 0); + release_channel(hcd, hc, qtd, DWC_OTG_HC_XFER_URB_COMPLETE); + } else { + release_channel(hcd, hc, qtd, DWC_OTG_HC_XFER_COMPLETE); + } + } else { + release_channel(hcd, hc, qtd, DWC_OTG_HC_XFER_NO_HALT_STATUS); + } + break; + + default: + DWC_WARN("Unexpected state received on hc=%d fsm=%d on transfer to device %d ep 0x%x", + hc->hc_num, st->fsm, hc->dev_addr, hc->ep_num); + qtd->error_count++; + release_channel(hcd, hc, qtd, DWC_OTG_HC_XFER_NO_HALT_STATUS); + } + return; +} + +/** Handles interrupt for a specific Host Channel */ +int32_t dwc_otg_hcd_handle_hc_n_intr(dwc_otg_hcd_t * dwc_otg_hcd, uint32_t num) +{ + int retval = 0; + hcint_data_t hcint; + hcintmsk_data_t hcintmsk; + dwc_hc_t *hc; + dwc_otg_hc_regs_t *hc_regs; + dwc_otg_qtd_t *qtd; + + DWC_DEBUGPL(DBG_HCDV, "--Host Channel Interrupt--, Channel %d\n", num); + + hc = dwc_otg_hcd->hc_ptr_array[num]; + hc_regs = dwc_otg_hcd->core_if->host_if->hc_regs[num]; + if(hc->halt_status == DWC_OTG_HC_XFER_URB_DEQUEUE) { + /* We are responding to a channel disable. Driver + * state is cleared - our qtd has gone away. + */ + release_channel(dwc_otg_hcd, hc, NULL, hc->halt_status); + return 1; + } + qtd = DWC_CIRCLEQ_FIRST(&hc->qh->qtd_list); + + /* + * FSM mode: Check to see if this is a HC interrupt from a channel handled by the FIQ. + * Execution path is fundamentally different for the channels after a FIQ has completed + * a split transaction. + */ + if (fiq_fsm_enable) { + switch (dwc_otg_hcd->fiq_state->channel[num].fsm) { + case FIQ_PASSTHROUGH: + break; + case FIQ_PASSTHROUGH_ERRORSTATE: + /* Hook into the error count */ + fiq_print(FIQDBG_ERR, dwc_otg_hcd->fiq_state, "HCDERR%02d", num); + if (!dwc_otg_hcd->fiq_state->channel[num].nr_errors) { + qtd->error_count = 0; + fiq_print(FIQDBG_ERR, dwc_otg_hcd->fiq_state, "RESET "); + } + break; + default: + dwc_otg_hcd_handle_hc_fsm(dwc_otg_hcd, num); + return 1; + } + } + + hcint.d32 = DWC_READ_REG32(&hc_regs->hcint); + hcintmsk.d32 = DWC_READ_REG32(&hc_regs->hcintmsk); + hcint.d32 = hcint.d32 & hcintmsk.d32; + if (!dwc_otg_hcd->core_if->dma_enable) { + if (hcint.b.chhltd && hcint.d32 != 0x2) { + hcint.b.chhltd = 0; + } + } + + if (hcint.b.xfercomp) { + retval |= + handle_hc_xfercomp_intr(dwc_otg_hcd, hc, hc_regs, qtd); + /* + * If NYET occurred at same time as Xfer Complete, the NYET is + * handled by the Xfer Complete interrupt handler. Don't want + * to call the NYET interrupt handler in this case. + */ + hcint.b.nyet = 0; + } + if (hcint.b.chhltd) { + retval |= handle_hc_chhltd_intr(dwc_otg_hcd, hc, hc_regs, qtd); + } + if (hcint.b.ahberr) { + retval |= handle_hc_ahberr_intr(dwc_otg_hcd, hc, hc_regs, qtd); + } + if (hcint.b.stall) { + retval |= handle_hc_stall_intr(dwc_otg_hcd, hc, hc_regs, qtd); + } + if (hcint.b.nak) { + retval |= handle_hc_nak_intr(dwc_otg_hcd, hc, hc_regs, qtd); + } + if (hcint.b.ack) { + if(!hcint.b.chhltd) + retval |= handle_hc_ack_intr(dwc_otg_hcd, hc, hc_regs, qtd); + } + if (hcint.b.nyet) { + retval |= handle_hc_nyet_intr(dwc_otg_hcd, hc, hc_regs, qtd); + } + if (hcint.b.xacterr) { + retval |= handle_hc_xacterr_intr(dwc_otg_hcd, hc, hc_regs, qtd); + } + if (hcint.b.bblerr) { + retval |= handle_hc_babble_intr(dwc_otg_hcd, hc, hc_regs, qtd); + } + if (hcint.b.frmovrun) { + retval |= + handle_hc_frmovrun_intr(dwc_otg_hcd, hc, hc_regs, qtd); + } + if (hcint.b.datatglerr) { + retval |= + handle_hc_datatglerr_intr(dwc_otg_hcd, hc, hc_regs, qtd); + } + + return retval; +} +#endif /* DWC_DEVICE_ONLY */ --- linux-raspi2-4.2.0.orig/drivers/usb/host/dwc_otg/dwc_otg_hcd_linux.c +++ linux-raspi2-4.2.0/drivers/usb/host/dwc_otg/dwc_otg_hcd_linux.c @@ -0,0 +1,1004 @@ + +/* ========================================================================== + * $File: //dwh/usb_iip/dev/software/otg/linux/drivers/dwc_otg_hcd_linux.c $ + * $Revision: #20 $ + * $Date: 2011/10/26 $ + * $Change: 1872981 $ + * + * Synopsys HS OTG Linux Software Driver and documentation (hereinafter, + * "Software") is an Unsupported proprietary work of Synopsys, Inc. unless + * otherwise expressly agreed to in writing between Synopsys and you. + * + * The Software IS NOT an item of Licensed Software or Licensed Product under + * any End User Software License Agreement or Agreement for Licensed Product + * with Synopsys or any supplement thereto. You are permitted to use and + * redistribute this Software in source and binary forms, with or without + * modification, provided that redistributions of source code must retain this + * notice. You may not view, use, disclose, copy or distribute this file or + * any information contained herein except pursuant to this license grant from + * Synopsys. If you do not agree with this notice, including the disclaimer + * below, then you are not authorized to use the Software. + * + * THIS SOFTWARE IS BEING DISTRIBUTED BY SYNOPSYS SOLELY ON AN "AS IS" BASIS + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE HEREBY DISCLAIMED. IN NO EVENT SHALL SYNOPSYS BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH + * DAMAGE. + * ========================================================================== */ +#ifndef DWC_DEVICE_ONLY + +/** + * @file + * + * This file contains the implementation of the HCD. In Linux, the HCD + * implements the hc_driver API. + */ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,35) +#include <../drivers/usb/core/hcd.h> +#else +#include +#endif +#include + +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,30)) +#define USB_URB_EP_LINKING 1 +#else +#define USB_URB_EP_LINKING 0 +#endif + +#include "dwc_otg_hcd_if.h" +#include "dwc_otg_dbg.h" +#include "dwc_otg_driver.h" +#include "dwc_otg_hcd.h" + +extern unsigned char _dwc_otg_fiq_stub, _dwc_otg_fiq_stub_end; + +/** + * Gets the endpoint number from a _bEndpointAddress argument. The endpoint is + * qualified with its direction (possible 32 endpoints per device). + */ +#define dwc_ep_addr_to_endpoint(_bEndpointAddress_) ((_bEndpointAddress_ & USB_ENDPOINT_NUMBER_MASK) | \ + ((_bEndpointAddress_ & USB_DIR_IN) != 0) << 4) + +static const char dwc_otg_hcd_name[] = "dwc_otg_hcd"; + +extern bool fiq_enable; + +/** @name Linux HC Driver API Functions */ +/** @{ */ +/* manage i/o requests, device state */ +static int dwc_otg_urb_enqueue(struct usb_hcd *hcd, +#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,28) + struct usb_host_endpoint *ep, +#endif + struct urb *urb, gfp_t mem_flags); + +#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,30) +#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,28) +static int dwc_otg_urb_dequeue(struct usb_hcd *hcd, struct urb *urb); +#endif +#else /* kernels at or post 2.6.30 */ +static int dwc_otg_urb_dequeue(struct usb_hcd *hcd, + struct urb *urb, int status); +#endif /* LINUX_VERSION_CODE < KERNEL_VERSION(2,6,30) */ + +static void endpoint_disable(struct usb_hcd *hcd, struct usb_host_endpoint *ep); +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,30) +static void endpoint_reset(struct usb_hcd *hcd, struct usb_host_endpoint *ep); +#endif +static irqreturn_t dwc_otg_hcd_irq(struct usb_hcd *hcd); +extern int hcd_start(struct usb_hcd *hcd); +extern void hcd_stop(struct usb_hcd *hcd); +static int get_frame_number(struct usb_hcd *hcd); +extern int hub_status_data(struct usb_hcd *hcd, char *buf); +extern int hub_control(struct usb_hcd *hcd, + u16 typeReq, + u16 wValue, u16 wIndex, char *buf, u16 wLength); + +struct wrapper_priv_data { + dwc_otg_hcd_t *dwc_otg_hcd; +}; + +/** @} */ + +static struct hc_driver dwc_otg_hc_driver = { + + .description = dwc_otg_hcd_name, + .product_desc = "DWC OTG Controller", + .hcd_priv_size = sizeof(struct wrapper_priv_data), + + .irq = dwc_otg_hcd_irq, + + .flags = HCD_MEMORY | HCD_USB2, + + //.reset = + .start = hcd_start, + //.suspend = + //.resume = + .stop = hcd_stop, + + .urb_enqueue = dwc_otg_urb_enqueue, + .urb_dequeue = dwc_otg_urb_dequeue, + .endpoint_disable = endpoint_disable, +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,30) + .endpoint_reset = endpoint_reset, +#endif + .get_frame_number = get_frame_number, + + .hub_status_data = hub_status_data, + .hub_control = hub_control, + //.bus_suspend = + //.bus_resume = +}; + +/** Gets the dwc_otg_hcd from a struct usb_hcd */ +static inline dwc_otg_hcd_t *hcd_to_dwc_otg_hcd(struct usb_hcd *hcd) +{ + struct wrapper_priv_data *p; + p = (struct wrapper_priv_data *)(hcd->hcd_priv); + return p->dwc_otg_hcd; +} + +/** Gets the struct usb_hcd that contains a dwc_otg_hcd_t. */ +static inline struct usb_hcd *dwc_otg_hcd_to_hcd(dwc_otg_hcd_t * dwc_otg_hcd) +{ + return dwc_otg_hcd_get_priv_data(dwc_otg_hcd); +} + +/** Gets the usb_host_endpoint associated with an URB. */ +inline struct usb_host_endpoint *dwc_urb_to_endpoint(struct urb *urb) +{ + struct usb_device *dev = urb->dev; + int ep_num = usb_pipeendpoint(urb->pipe); + + if (usb_pipein(urb->pipe)) + return dev->ep_in[ep_num]; + else + return dev->ep_out[ep_num]; +} + +static int _disconnect(dwc_otg_hcd_t * hcd) +{ + struct usb_hcd *usb_hcd = dwc_otg_hcd_to_hcd(hcd); + + usb_hcd->self.is_b_host = 0; + return 0; +} + +static int _start(dwc_otg_hcd_t * hcd) +{ + struct usb_hcd *usb_hcd = dwc_otg_hcd_to_hcd(hcd); + + usb_hcd->self.is_b_host = dwc_otg_hcd_is_b_host(hcd); + hcd_start(usb_hcd); + + return 0; +} + +static int _hub_info(dwc_otg_hcd_t * hcd, void *urb_handle, uint32_t * hub_addr, + uint32_t * port_addr) +{ + struct urb *urb = (struct urb *)urb_handle; + struct usb_bus *bus; +#if 1 //GRAYG - temporary + if (NULL == urb_handle) + DWC_ERROR("**** %s - NULL URB handle\n", __func__);//GRAYG + if (NULL == urb->dev) + DWC_ERROR("**** %s - URB has no device\n", __func__);//GRAYG + if (NULL == port_addr) + DWC_ERROR("**** %s - NULL port_address\n", __func__);//GRAYG +#endif + if (urb->dev->tt) { + if (NULL == urb->dev->tt->hub) { + DWC_ERROR("**** %s - (URB's transactor has no TT - giving no hub)\n", + __func__); //GRAYG + //*hub_addr = (u8)usb_pipedevice(urb->pipe); //GRAYG + *hub_addr = 0; //GRAYG + // we probably shouldn't have a transaction translator if + // there's no associated hub? + } else { + bus = hcd_to_bus(dwc_otg_hcd_to_hcd(hcd)); + if (urb->dev->tt->hub == bus->root_hub) + *hub_addr = 0; + else + *hub_addr = urb->dev->tt->hub->devnum; + } + *port_addr = urb->dev->tt->multi ? urb->dev->ttport : 1; + } else { + *hub_addr = 0; + *port_addr = urb->dev->ttport; + } + return 0; +} + +static int _speed(dwc_otg_hcd_t * hcd, void *urb_handle) +{ + struct urb *urb = (struct urb *)urb_handle; + return urb->dev->speed; +} + +static int _get_b_hnp_enable(dwc_otg_hcd_t * hcd) +{ + struct usb_hcd *usb_hcd = dwc_otg_hcd_to_hcd(hcd); + return usb_hcd->self.b_hnp_enable; +} + +static void allocate_bus_bandwidth(struct usb_hcd *hcd, uint32_t bw, + struct urb *urb) +{ + hcd_to_bus(hcd)->bandwidth_allocated += bw / urb->interval; + if (usb_pipetype(urb->pipe) == PIPE_ISOCHRONOUS) { + hcd_to_bus(hcd)->bandwidth_isoc_reqs++; + } else { + hcd_to_bus(hcd)->bandwidth_int_reqs++; + } +} + +static void free_bus_bandwidth(struct usb_hcd *hcd, uint32_t bw, + struct urb *urb) +{ + hcd_to_bus(hcd)->bandwidth_allocated -= bw / urb->interval; + if (usb_pipetype(urb->pipe) == PIPE_ISOCHRONOUS) { + hcd_to_bus(hcd)->bandwidth_isoc_reqs--; + } else { + hcd_to_bus(hcd)->bandwidth_int_reqs--; + } +} + +/** + * Sets the final status of an URB and returns it to the device driver. Any + * required cleanup of the URB is performed. The HCD lock should be held on + * entry. + */ +static int _complete(dwc_otg_hcd_t * hcd, void *urb_handle, + dwc_otg_hcd_urb_t * dwc_otg_urb, int32_t status) +{ + struct urb *urb = (struct urb *)urb_handle; + urb_tq_entry_t *new_entry; + int rc = 0; + if (CHK_DEBUG_LEVEL(DBG_HCDV | DBG_HCD_URB)) { + DWC_PRINTF("%s: urb %p, device %d, ep %d %s, status=%d\n", + __func__, urb, usb_pipedevice(urb->pipe), + usb_pipeendpoint(urb->pipe), + usb_pipein(urb->pipe) ? "IN" : "OUT", status); + if (usb_pipetype(urb->pipe) == PIPE_ISOCHRONOUS) { + int i; + for (i = 0; i < urb->number_of_packets; i++) { + DWC_PRINTF(" ISO Desc %d status: %d\n", + i, urb->iso_frame_desc[i].status); + } + } + } + new_entry = DWC_ALLOC_ATOMIC(sizeof(urb_tq_entry_t)); + urb->actual_length = dwc_otg_hcd_urb_get_actual_length(dwc_otg_urb); + /* Convert status value. */ + switch (status) { + case -DWC_E_PROTOCOL: + status = -EPROTO; + break; + case -DWC_E_IN_PROGRESS: + status = -EINPROGRESS; + break; + case -DWC_E_PIPE: + status = -EPIPE; + break; + case -DWC_E_IO: + status = -EIO; + break; + case -DWC_E_TIMEOUT: + status = -ETIMEDOUT; + break; + case -DWC_E_OVERFLOW: + status = -EOVERFLOW; + break; + case -DWC_E_SHUTDOWN: + status = -ESHUTDOWN; + break; + default: + if (status) { + DWC_PRINTF("Uknown urb status %d\n", status); + + } + } + + if (usb_pipetype(urb->pipe) == PIPE_ISOCHRONOUS) { + int i; + + urb->error_count = dwc_otg_hcd_urb_get_error_count(dwc_otg_urb); + for (i = 0; i < urb->number_of_packets; ++i) { + urb->iso_frame_desc[i].actual_length = + dwc_otg_hcd_urb_get_iso_desc_actual_length + (dwc_otg_urb, i); + urb->iso_frame_desc[i].status = + dwc_otg_hcd_urb_get_iso_desc_status(dwc_otg_urb, i); + } + } + + urb->status = status; + urb->hcpriv = NULL; + if (!status) { + if ((urb->transfer_flags & URB_SHORT_NOT_OK) && + (urb->actual_length < urb->transfer_buffer_length)) { + urb->status = -EREMOTEIO; + } + } + + if ((usb_pipetype(urb->pipe) == PIPE_ISOCHRONOUS) || + (usb_pipetype(urb->pipe) == PIPE_INTERRUPT)) { + struct usb_host_endpoint *ep = dwc_urb_to_endpoint(urb); + if (ep) { + free_bus_bandwidth(dwc_otg_hcd_to_hcd(hcd), + dwc_otg_hcd_get_ep_bandwidth(hcd, + ep->hcpriv), + urb); + } + } + DWC_FREE(dwc_otg_urb); + if (!new_entry) { + DWC_ERROR("dwc_otg_hcd: complete: cannot allocate URB TQ entry\n"); + urb->status = -EPROTO; + /* don't schedule the tasklet - + * directly return the packet here with error. */ +#if USB_URB_EP_LINKING + usb_hcd_unlink_urb_from_ep(dwc_otg_hcd_to_hcd(hcd), urb); +#endif +#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,28) + usb_hcd_giveback_urb(dwc_otg_hcd_to_hcd(hcd), urb); +#else + usb_hcd_giveback_urb(dwc_otg_hcd_to_hcd(hcd), urb, urb->status); +#endif + } else { + new_entry->urb = urb; +#if USB_URB_EP_LINKING + rc = usb_hcd_check_unlink_urb(dwc_otg_hcd_to_hcd(hcd), urb, urb->status); + if(0 == rc) { + usb_hcd_unlink_urb_from_ep(dwc_otg_hcd_to_hcd(hcd), urb); + } +#endif + if(0 == rc) { + DWC_TAILQ_INSERT_TAIL(&hcd->completed_urb_list, new_entry, + urb_tq_entries); + DWC_TASK_HI_SCHEDULE(hcd->completion_tasklet); + } + } + return 0; +} + +static struct dwc_otg_hcd_function_ops hcd_fops = { + .start = _start, + .disconnect = _disconnect, + .hub_info = _hub_info, + .speed = _speed, + .complete = _complete, + .get_b_hnp_enable = _get_b_hnp_enable, +}; + +static struct fiq_handler fh = { + .name = "usb_fiq", +}; + +static void hcd_init_fiq(void *cookie) +{ + dwc_otg_device_t *otg_dev = cookie; + dwc_otg_hcd_t *dwc_otg_hcd = otg_dev->hcd; + struct pt_regs regs; + + if (claim_fiq(&fh)) { + DWC_ERROR("Can't claim FIQ"); + BUG(); + } + DWC_WARN("FIQ on core %d at 0x%08x", + smp_processor_id(), + (fiq_fsm_enable ? (int)&dwc_otg_fiq_fsm : (int)&dwc_otg_fiq_nop)); + DWC_WARN("FIQ ASM at 0x%08x length %d", (int)&_dwc_otg_fiq_stub, (int)(&_dwc_otg_fiq_stub_end - &_dwc_otg_fiq_stub)); + set_fiq_handler((void *) &_dwc_otg_fiq_stub, &_dwc_otg_fiq_stub_end - &_dwc_otg_fiq_stub); + memset(®s,0,sizeof(regs)); + + regs.ARM_r8 = (long) dwc_otg_hcd->fiq_state; + if (fiq_fsm_enable) { + regs.ARM_r9 = dwc_otg_hcd->core_if->core_params->host_channels; + //regs.ARM_r10 = dwc_otg_hcd->dma; + regs.ARM_fp = (long) dwc_otg_fiq_fsm; + } else { + regs.ARM_fp = (long) dwc_otg_fiq_nop; + } + + regs.ARM_sp = (long) dwc_otg_hcd->fiq_stack + (sizeof(struct fiq_stack) - 4); + +// __show_regs(®s); + set_fiq_regs(®s); + + //Set the mphi periph to the required registers + dwc_otg_hcd->fiq_state->mphi_regs.base = otg_dev->os_dep.mphi_base; + dwc_otg_hcd->fiq_state->mphi_regs.ctrl = otg_dev->os_dep.mphi_base + 0x4c; + dwc_otg_hcd->fiq_state->mphi_regs.outdda = otg_dev->os_dep.mphi_base + 0x28; + dwc_otg_hcd->fiq_state->mphi_regs.outddb = otg_dev->os_dep.mphi_base + 0x2c; + dwc_otg_hcd->fiq_state->mphi_regs.intstat = otg_dev->os_dep.mphi_base + 0x50; + dwc_otg_hcd->fiq_state->dwc_regs_base = otg_dev->os_dep.base; + DWC_WARN("MPHI regs_base at 0x%08x", (int)dwc_otg_hcd->fiq_state->mphi_regs.base); + //Enable mphi peripheral + writel((1<<31),dwc_otg_hcd->fiq_state->mphi_regs.ctrl); +#ifdef DEBUG + if (readl(dwc_otg_hcd->fiq_state->mphi_regs.ctrl) & 0x80000000) + DWC_WARN("MPHI periph has been enabled"); + else + DWC_WARN("MPHI periph has NOT been enabled"); +#endif + // Enable FIQ interrupt from USB peripheral +#ifdef CONFIG_ARCH_BCM2835 + enable_fiq(platform_get_irq(otg_dev->os_dep.platformdev, 1)); +#else +#ifdef CONFIG_MULTI_IRQ_HANDLER + if (otg_dev->os_dep.platformdev->dev.of_node) + enable_fiq(platform_get_irq(otg_dev->os_dep.platformdev, 1)); + else +#endif + enable_fiq(INTERRUPT_VC_USB); +#endif + local_fiq_enable(); +} + +/** + * Initializes the HCD. This function allocates memory for and initializes the + * static parts of the usb_hcd and dwc_otg_hcd structures. It also registers the + * USB bus with the core and calls the hc_driver->start() function. It returns + * a negative error on failure. + */ +int hcd_init(dwc_bus_dev_t *_dev) +{ + struct usb_hcd *hcd = NULL; + dwc_otg_hcd_t *dwc_otg_hcd = NULL; + dwc_otg_device_t *otg_dev = DWC_OTG_BUSDRVDATA(_dev); + int retval = 0; + u64 dmamask; + + DWC_DEBUGPL(DBG_HCD, "DWC OTG HCD INIT otg_dev=%p\n", otg_dev); + + /* Set device flags indicating whether the HCD supports DMA. */ + if (dwc_otg_is_dma_enable(otg_dev->core_if)) + dmamask = DMA_BIT_MASK(32); + else + dmamask = 0; + +#if defined(LM_INTERFACE) || defined(PLATFORM_INTERFACE) + dma_set_mask(&_dev->dev, dmamask); + dma_set_coherent_mask(&_dev->dev, dmamask); +#elif defined(PCI_INTERFACE) + pci_set_dma_mask(_dev, dmamask); + pci_set_consistent_dma_mask(_dev, dmamask); +#endif + + /* + * Allocate memory for the base HCD plus the DWC OTG HCD. + * Initialize the base HCD. + */ +#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,30) + hcd = usb_create_hcd(&dwc_otg_hc_driver, &_dev->dev, _dev->dev.bus_id); +#else + hcd = usb_create_hcd(&dwc_otg_hc_driver, &_dev->dev, dev_name(&_dev->dev)); + hcd->has_tt = 1; +// hcd->uses_new_polling = 1; +// hcd->poll_rh = 0; +#endif + if (!hcd) { + retval = -ENOMEM; + goto error1; + } + + hcd->regs = otg_dev->os_dep.base; + + + /* Initialize the DWC OTG HCD. */ + dwc_otg_hcd = dwc_otg_hcd_alloc_hcd(); + if (!dwc_otg_hcd) { + goto error2; + } + ((struct wrapper_priv_data *)(hcd->hcd_priv))->dwc_otg_hcd = + dwc_otg_hcd; + otg_dev->hcd = dwc_otg_hcd; + + if (dwc_otg_hcd_init(dwc_otg_hcd, otg_dev->core_if)) { + goto error2; + } + + if (fiq_enable) { + if (num_online_cpus() > 1) { + /* bcm2709: can run the FIQ on a separate core to IRQs */ + smp_call_function_single(1, hcd_init_fiq, otg_dev, 1); + } else { + smp_call_function_single(0, hcd_init_fiq, otg_dev, 1); + } + } + + otg_dev->hcd->otg_dev = otg_dev; + hcd->self.otg_port = dwc_otg_hcd_otg_port(dwc_otg_hcd); +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,33) //don't support for LM(with 2.6.20.1 kernel) +#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,35) //version field absent later + hcd->self.otg_version = dwc_otg_get_otg_version(otg_dev->core_if); +#endif + /* Don't support SG list at this point */ + hcd->self.sg_tablesize = 0; +#endif + /* + * Finish generic HCD initialization and start the HCD. This function + * allocates the DMA buffer pool, registers the USB bus, requests the + * IRQ line, and calls hcd_start method. + */ +#ifdef PLATFORM_INTERFACE + retval = usb_add_hcd(hcd, platform_get_irq(_dev, fiq_enable ? 0 : 1), IRQF_SHARED); +#else + retval = usb_add_hcd(hcd, _dev->irq, IRQF_SHARED); +#endif + if (retval < 0) { + goto error2; + } + + dwc_otg_hcd_set_priv_data(dwc_otg_hcd, hcd); + return 0; + +error2: + usb_put_hcd(hcd); +error1: + return retval; +} + +/** + * Removes the HCD. + * Frees memory and resources associated with the HCD and deregisters the bus. + */ +void hcd_remove(dwc_bus_dev_t *_dev) +{ + dwc_otg_device_t *otg_dev = DWC_OTG_BUSDRVDATA(_dev); + dwc_otg_hcd_t *dwc_otg_hcd; + struct usb_hcd *hcd; + + DWC_DEBUGPL(DBG_HCD, "DWC OTG HCD REMOVE otg_dev=%p\n", otg_dev); + + if (!otg_dev) { + DWC_DEBUGPL(DBG_ANY, "%s: otg_dev NULL!\n", __func__); + return; + } + + dwc_otg_hcd = otg_dev->hcd; + + if (!dwc_otg_hcd) { + DWC_DEBUGPL(DBG_ANY, "%s: otg_dev->hcd NULL!\n", __func__); + return; + } + + hcd = dwc_otg_hcd_to_hcd(dwc_otg_hcd); + + if (!hcd) { + DWC_DEBUGPL(DBG_ANY, + "%s: dwc_otg_hcd_to_hcd(dwc_otg_hcd) NULL!\n", + __func__); + return; + } + usb_remove_hcd(hcd); + dwc_otg_hcd_set_priv_data(dwc_otg_hcd, NULL); + dwc_otg_hcd_remove(dwc_otg_hcd); + usb_put_hcd(hcd); +} + +/* ========================================================================= + * Linux HC Driver Functions + * ========================================================================= */ + +/** Initializes the DWC_otg controller and its root hub and prepares it for host + * mode operation. Activates the root port. Returns 0 on success and a negative + * error code on failure. */ +int hcd_start(struct usb_hcd *hcd) +{ + dwc_otg_hcd_t *dwc_otg_hcd = hcd_to_dwc_otg_hcd(hcd); + struct usb_bus *bus; + + DWC_DEBUGPL(DBG_HCD, "DWC OTG HCD START\n"); + bus = hcd_to_bus(hcd); + + hcd->state = HC_STATE_RUNNING; + if (dwc_otg_hcd_start(dwc_otg_hcd, &hcd_fops)) { + return 0; + } + + /* Initialize and connect root hub if one is not already attached */ + if (bus->root_hub) { + DWC_DEBUGPL(DBG_HCD, "DWC OTG HCD Has Root Hub\n"); + /* Inform the HUB driver to resume. */ + usb_hcd_resume_root_hub(hcd); + } + + return 0; +} + +/** + * Halts the DWC_otg host mode operations in a clean manner. USB transfers are + * stopped. + */ +void hcd_stop(struct usb_hcd *hcd) +{ + dwc_otg_hcd_t *dwc_otg_hcd = hcd_to_dwc_otg_hcd(hcd); + + dwc_otg_hcd_stop(dwc_otg_hcd); +} + +/** Returns the current frame number. */ +static int get_frame_number(struct usb_hcd *hcd) +{ + hprt0_data_t hprt0; + dwc_otg_hcd_t *dwc_otg_hcd = hcd_to_dwc_otg_hcd(hcd); + hprt0.d32 = DWC_READ_REG32(dwc_otg_hcd->core_if->host_if->hprt0); + if (hprt0.b.prtspd == DWC_HPRT0_PRTSPD_HIGH_SPEED) + return dwc_otg_hcd_get_frame_number(dwc_otg_hcd) >> 3; + else + return dwc_otg_hcd_get_frame_number(dwc_otg_hcd); +} + +#ifdef DEBUG +static void dump_urb_info(struct urb *urb, char *fn_name) +{ + DWC_PRINTF("%s, urb %p\n", fn_name, urb); + DWC_PRINTF(" Device address: %d\n", usb_pipedevice(urb->pipe)); + DWC_PRINTF(" Endpoint: %d, %s\n", usb_pipeendpoint(urb->pipe), + (usb_pipein(urb->pipe) ? "IN" : "OUT")); + DWC_PRINTF(" Endpoint type: %s\n", ( { + char *pipetype; + switch (usb_pipetype(urb->pipe)) { +case PIPE_CONTROL: +pipetype = "CONTROL"; break; case PIPE_BULK: +pipetype = "BULK"; break; case PIPE_INTERRUPT: +pipetype = "INTERRUPT"; break; case PIPE_ISOCHRONOUS: +pipetype = "ISOCHRONOUS"; break; default: + pipetype = "UNKNOWN"; break;}; + pipetype;} + )) ; + DWC_PRINTF(" Speed: %s\n", ( { + char *speed; switch (urb->dev->speed) { +case USB_SPEED_HIGH: +speed = "HIGH"; break; case USB_SPEED_FULL: +speed = "FULL"; break; case USB_SPEED_LOW: +speed = "LOW"; break; default: + speed = "UNKNOWN"; break;}; + speed;} + )) ; + DWC_PRINTF(" Max packet size: %d\n", + usb_maxpacket(urb->dev, urb->pipe, usb_pipeout(urb->pipe))); + DWC_PRINTF(" Data buffer length: %d\n", urb->transfer_buffer_length); + DWC_PRINTF(" Transfer buffer: %p, Transfer DMA: %p\n", + urb->transfer_buffer, (void *)urb->transfer_dma); + DWC_PRINTF(" Setup buffer: %p, Setup DMA: %p\n", + urb->setup_packet, (void *)urb->setup_dma); + DWC_PRINTF(" Interval: %d\n", urb->interval); + if (usb_pipetype(urb->pipe) == PIPE_ISOCHRONOUS) { + int i; + for (i = 0; i < urb->number_of_packets; i++) { + DWC_PRINTF(" ISO Desc %d:\n", i); + DWC_PRINTF(" offset: %d, length %d\n", + urb->iso_frame_desc[i].offset, + urb->iso_frame_desc[i].length); + } + } +} +#endif + +/** Starts processing a USB transfer request specified by a USB Request Block + * (URB). mem_flags indicates the type of memory allocation to use while + * processing this URB. */ +static int dwc_otg_urb_enqueue(struct usb_hcd *hcd, +#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,28) + struct usb_host_endpoint *ep, +#endif + struct urb *urb, gfp_t mem_flags) +{ + int retval = 0; +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,28) + struct usb_host_endpoint *ep = urb->ep; +#endif + dwc_irqflags_t irqflags; + void **ref_ep_hcpriv = &ep->hcpriv; + dwc_otg_hcd_t *dwc_otg_hcd = hcd_to_dwc_otg_hcd(hcd); + dwc_otg_hcd_urb_t *dwc_otg_urb; + int i; + int alloc_bandwidth = 0; + uint8_t ep_type = 0; + uint32_t flags = 0; + void *buf; + +#ifdef DEBUG + if (CHK_DEBUG_LEVEL(DBG_HCDV | DBG_HCD_URB)) { + dump_urb_info(urb, "dwc_otg_urb_enqueue"); + } +#endif + + if (!urb->transfer_buffer && urb->transfer_buffer_length) + return -EINVAL; + + if ((usb_pipetype(urb->pipe) == PIPE_ISOCHRONOUS) + || (usb_pipetype(urb->pipe) == PIPE_INTERRUPT)) { + if (!dwc_otg_hcd_is_bandwidth_allocated + (dwc_otg_hcd, ref_ep_hcpriv)) { + alloc_bandwidth = 1; + } + } + + switch (usb_pipetype(urb->pipe)) { + case PIPE_CONTROL: + ep_type = USB_ENDPOINT_XFER_CONTROL; + break; + case PIPE_ISOCHRONOUS: + ep_type = USB_ENDPOINT_XFER_ISOC; + break; + case PIPE_BULK: + ep_type = USB_ENDPOINT_XFER_BULK; + break; + case PIPE_INTERRUPT: + ep_type = USB_ENDPOINT_XFER_INT; + break; + default: + DWC_WARN("Wrong EP type - %d\n", usb_pipetype(urb->pipe)); + } + + /* # of packets is often 0 - do we really need to call this then? */ + dwc_otg_urb = dwc_otg_hcd_urb_alloc(dwc_otg_hcd, + urb->number_of_packets, + mem_flags == GFP_ATOMIC ? 1 : 0); + + if(dwc_otg_urb == NULL) + return -ENOMEM; + + if (!dwc_otg_urb && urb->number_of_packets) + return -ENOMEM; + + dwc_otg_hcd_urb_set_pipeinfo(dwc_otg_urb, usb_pipedevice(urb->pipe), + usb_pipeendpoint(urb->pipe), ep_type, + usb_pipein(urb->pipe), + usb_maxpacket(urb->dev, urb->pipe, + !(usb_pipein(urb->pipe)))); + + buf = urb->transfer_buffer; + if (hcd->self.uses_dma && !buf && urb->transfer_buffer_length) { + /* + * Calculate virtual address from physical address, + * because some class driver may not fill transfer_buffer. + * In Buffer DMA mode virual address is used, + * when handling non DWORD aligned buffers. + */ + buf = (void *)__bus_to_virt((unsigned long)urb->transfer_dma); + dev_warn_once(&urb->dev->dev, + "USB transfer_buffer was NULL, will use __bus_to_virt(%pad)=%p\n", + &urb->transfer_dma, buf); + } + + if (!(urb->transfer_flags & URB_NO_INTERRUPT)) + flags |= URB_GIVEBACK_ASAP; + if (urb->transfer_flags & URB_ZERO_PACKET) + flags |= URB_SEND_ZERO_PACKET; + + dwc_otg_hcd_urb_set_params(dwc_otg_urb, urb, buf, + urb->transfer_dma, + urb->transfer_buffer_length, + urb->setup_packet, + urb->setup_dma, flags, urb->interval); + + for (i = 0; i < urb->number_of_packets; ++i) { + dwc_otg_hcd_urb_set_iso_desc_params(dwc_otg_urb, i, + urb-> + iso_frame_desc[i].offset, + urb-> + iso_frame_desc[i].length); + } + + DWC_SPINLOCK_IRQSAVE(dwc_otg_hcd->lock, &irqflags); + urb->hcpriv = dwc_otg_urb; +#if USB_URB_EP_LINKING + retval = usb_hcd_link_urb_to_ep(hcd, urb); + if (0 == retval) +#endif + { + retval = dwc_otg_hcd_urb_enqueue(dwc_otg_hcd, dwc_otg_urb, + /*(dwc_otg_qh_t **)*/ + ref_ep_hcpriv, 1); + if (0 == retval) { + if (alloc_bandwidth) { + allocate_bus_bandwidth(hcd, + dwc_otg_hcd_get_ep_bandwidth( + dwc_otg_hcd, *ref_ep_hcpriv), + urb); + } + } else { + DWC_DEBUGPL(DBG_HCD, "DWC OTG dwc_otg_hcd_urb_enqueue failed rc %d\n", retval); +#if USB_URB_EP_LINKING + usb_hcd_unlink_urb_from_ep(hcd, urb); +#endif + DWC_FREE(dwc_otg_urb); + urb->hcpriv = NULL; + if (retval == -DWC_E_NO_DEVICE) + retval = -ENODEV; + } + } +#if USB_URB_EP_LINKING + else + { + DWC_FREE(dwc_otg_urb); + urb->hcpriv = NULL; + } +#endif + DWC_SPINUNLOCK_IRQRESTORE(dwc_otg_hcd->lock, irqflags); + return retval; +} + +/** Aborts/cancels a USB transfer request. Always returns 0 to indicate + * success. */ +#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,28) +static int dwc_otg_urb_dequeue(struct usb_hcd *hcd, struct urb *urb) +#else +static int dwc_otg_urb_dequeue(struct usb_hcd *hcd, struct urb *urb, int status) +#endif +{ + dwc_irqflags_t flags; + dwc_otg_hcd_t *dwc_otg_hcd; + int rc; + + DWC_DEBUGPL(DBG_HCD, "DWC OTG HCD URB Dequeue\n"); + + dwc_otg_hcd = hcd_to_dwc_otg_hcd(hcd); + +#ifdef DEBUG + if (CHK_DEBUG_LEVEL(DBG_HCDV | DBG_HCD_URB)) { + dump_urb_info(urb, "dwc_otg_urb_dequeue"); + } +#endif + + DWC_SPINLOCK_IRQSAVE(dwc_otg_hcd->lock, &flags); + rc = usb_hcd_check_unlink_urb(hcd, urb, status); + if (0 == rc) { + if(urb->hcpriv != NULL) { + dwc_otg_hcd_urb_dequeue(dwc_otg_hcd, + (dwc_otg_hcd_urb_t *)urb->hcpriv); + + DWC_FREE(urb->hcpriv); + urb->hcpriv = NULL; + } + } + + if (0 == rc) { + /* Higher layer software sets URB status. */ +#if USB_URB_EP_LINKING + usb_hcd_unlink_urb_from_ep(hcd, urb); +#endif + DWC_SPINUNLOCK_IRQRESTORE(dwc_otg_hcd->lock, flags); + + +#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,28) + usb_hcd_giveback_urb(hcd, urb); +#else + usb_hcd_giveback_urb(hcd, urb, status); +#endif + if (CHK_DEBUG_LEVEL(DBG_HCDV | DBG_HCD_URB)) { + DWC_PRINTF("Called usb_hcd_giveback_urb() \n"); + DWC_PRINTF(" 1urb->status = %d\n", urb->status); + } + DWC_DEBUGPL(DBG_HCD, "DWC OTG HCD URB Dequeue OK\n"); + } else { + DWC_SPINUNLOCK_IRQRESTORE(dwc_otg_hcd->lock, flags); + DWC_DEBUGPL(DBG_HCD, "DWC OTG HCD URB Dequeue failed - rc %d\n", + rc); + } + + return rc; +} + +/* Frees resources in the DWC_otg controller related to a given endpoint. Also + * clears state in the HCD related to the endpoint. Any URBs for the endpoint + * must already be dequeued. */ +static void endpoint_disable(struct usb_hcd *hcd, struct usb_host_endpoint *ep) +{ + dwc_otg_hcd_t *dwc_otg_hcd = hcd_to_dwc_otg_hcd(hcd); + + DWC_DEBUGPL(DBG_HCD, + "DWC OTG HCD EP DISABLE: _bEndpointAddress=0x%02x, " + "endpoint=%d\n", ep->desc.bEndpointAddress, + dwc_ep_addr_to_endpoint(ep->desc.bEndpointAddress)); + dwc_otg_hcd_endpoint_disable(dwc_otg_hcd, ep->hcpriv, 250); + ep->hcpriv = NULL; +} + +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,30) +/* Resets endpoint specific parameter values, in current version used to reset + * the data toggle(as a WA). This function can be called from usb_clear_halt routine */ +static void endpoint_reset(struct usb_hcd *hcd, struct usb_host_endpoint *ep) +{ + dwc_irqflags_t flags; + struct usb_device *udev = NULL; + int epnum = usb_endpoint_num(&ep->desc); + int is_out = usb_endpoint_dir_out(&ep->desc); + int is_control = usb_endpoint_xfer_control(&ep->desc); + dwc_otg_hcd_t *dwc_otg_hcd = hcd_to_dwc_otg_hcd(hcd); + struct device *dev = DWC_OTG_OS_GETDEV(dwc_otg_hcd->otg_dev->os_dep); + + if (dev) + udev = to_usb_device(dev); + else + return; + + DWC_DEBUGPL(DBG_HCD, "DWC OTG HCD EP RESET: Endpoint Num=0x%02d\n", epnum); + + DWC_SPINLOCK_IRQSAVE(dwc_otg_hcd->lock, &flags); + usb_settoggle(udev, epnum, is_out, 0); + if (is_control) + usb_settoggle(udev, epnum, !is_out, 0); + + if (ep->hcpriv) { + dwc_otg_hcd_endpoint_reset(dwc_otg_hcd, ep->hcpriv); + } + DWC_SPINUNLOCK_IRQRESTORE(dwc_otg_hcd->lock, flags); +} +#endif + +/** Handles host mode interrupts for the DWC_otg controller. Returns IRQ_NONE if + * there was no interrupt to handle. Returns IRQ_HANDLED if there was a valid + * interrupt. + * + * This function is called by the USB core when an interrupt occurs */ +static irqreturn_t dwc_otg_hcd_irq(struct usb_hcd *hcd) +{ + dwc_otg_hcd_t *dwc_otg_hcd = hcd_to_dwc_otg_hcd(hcd); + int32_t retval = dwc_otg_hcd_handle_intr(dwc_otg_hcd); + if (retval != 0) { + S3C2410X_CLEAR_EINTPEND(); + } + return IRQ_RETVAL(retval); +} + +/** Creates Status Change bitmap for the root hub and root port. The bitmap is + * returned in buf. Bit 0 is the status change indicator for the root hub. Bit 1 + * is the status change indicator for the single root port. Returns 1 if either + * change indicator is 1, otherwise returns 0. */ +int hub_status_data(struct usb_hcd *hcd, char *buf) +{ + dwc_otg_hcd_t *dwc_otg_hcd = hcd_to_dwc_otg_hcd(hcd); + + buf[0] = 0; + buf[0] |= (dwc_otg_hcd_is_status_changed(dwc_otg_hcd, 1)) << 1; + + return (buf[0] != 0); +} + +/** Handles hub class-specific requests. */ +int hub_control(struct usb_hcd *hcd, + u16 typeReq, u16 wValue, u16 wIndex, char *buf, u16 wLength) +{ + int retval; + + retval = dwc_otg_hcd_hub_control(hcd_to_dwc_otg_hcd(hcd), + typeReq, wValue, wIndex, buf, wLength); + + switch (retval) { + case -DWC_E_INVALID: + retval = -EINVAL; + break; + } + + return retval; +} + +#endif /* DWC_DEVICE_ONLY */ --- linux-raspi2-4.2.0.orig/drivers/usb/host/dwc_otg/dwc_otg_hcd_queue.c +++ linux-raspi2-4.2.0/drivers/usb/host/dwc_otg/dwc_otg_hcd_queue.c @@ -0,0 +1,957 @@ +/* ========================================================================== + * $File: //dwh/usb_iip/dev/software/otg/linux/drivers/dwc_otg_hcd_queue.c $ + * $Revision: #44 $ + * $Date: 2011/10/26 $ + * $Change: 1873028 $ + * + * Synopsys HS OTG Linux Software Driver and documentation (hereinafter, + * "Software") is an Unsupported proprietary work of Synopsys, Inc. unless + * otherwise expressly agreed to in writing between Synopsys and you. + * + * The Software IS NOT an item of Licensed Software or Licensed Product under + * any End User Software License Agreement or Agreement for Licensed Product + * with Synopsys or any supplement thereto. You are permitted to use and + * redistribute this Software in source and binary forms, with or without + * modification, provided that redistributions of source code must retain this + * notice. You may not view, use, disclose, copy or distribute this file or + * any information contained herein except pursuant to this license grant from + * Synopsys. If you do not agree with this notice, including the disclaimer + * below, then you are not authorized to use the Software. + * + * THIS SOFTWARE IS BEING DISTRIBUTED BY SYNOPSYS SOLELY ON AN "AS IS" BASIS + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE HEREBY DISCLAIMED. IN NO EVENT SHALL SYNOPSYS BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH + * DAMAGE. + * ========================================================================== */ +#ifndef DWC_DEVICE_ONLY + +/** + * @file + * + * This file contains the functions to manage Queue Heads and Queue + * Transfer Descriptors. + */ + +#include "dwc_otg_hcd.h" +#include "dwc_otg_regs.h" + +extern bool microframe_schedule; + +/** + * Free each QTD in the QH's QTD-list then free the QH. QH should already be + * removed from a list. QTD list should already be empty if called from URB + * Dequeue. + * + * @param hcd HCD instance. + * @param qh The QH to free. + */ +void dwc_otg_hcd_qh_free(dwc_otg_hcd_t * hcd, dwc_otg_qh_t * qh) +{ + dwc_otg_qtd_t *qtd, *qtd_tmp; + dwc_irqflags_t flags; + + /* Free each QTD in the QTD list */ + DWC_SPINLOCK_IRQSAVE(hcd->lock, &flags); + DWC_CIRCLEQ_FOREACH_SAFE(qtd, qtd_tmp, &qh->qtd_list, qtd_list_entry) { + DWC_CIRCLEQ_REMOVE(&qh->qtd_list, qtd, qtd_list_entry); + dwc_otg_hcd_qtd_free(qtd); + } + + if (hcd->core_if->dma_desc_enable) { + dwc_otg_hcd_qh_free_ddma(hcd, qh); + } else if (qh->dw_align_buf) { + uint32_t buf_size; + if (qh->ep_type == UE_ISOCHRONOUS) { + buf_size = 4096; + } else { + buf_size = hcd->core_if->core_params->max_transfer_size; + } + DWC_DMA_FREE(buf_size, qh->dw_align_buf, qh->dw_align_buf_dma); + } + + DWC_FREE(qh); + DWC_SPINUNLOCK_IRQRESTORE(hcd->lock, flags); + return; +} + +#define BitStuffTime(bytecount) ((8 * 7* bytecount) / 6) +#define HS_HOST_DELAY 5 /* nanoseconds */ +#define FS_LS_HOST_DELAY 1000 /* nanoseconds */ +#define HUB_LS_SETUP 333 /* nanoseconds */ +#define NS_TO_US(ns) ((ns + 500) / 1000) + /* convert & round nanoseconds to microseconds */ + +static uint32_t calc_bus_time(int speed, int is_in, int is_isoc, int bytecount) +{ + unsigned long retval; + + switch (speed) { + case USB_SPEED_HIGH: + if (is_isoc) { + retval = + ((38 * 8 * 2083) + + (2083 * (3 + BitStuffTime(bytecount)))) / 1000 + + HS_HOST_DELAY; + } else { + retval = + ((55 * 8 * 2083) + + (2083 * (3 + BitStuffTime(bytecount)))) / 1000 + + HS_HOST_DELAY; + } + break; + case USB_SPEED_FULL: + if (is_isoc) { + retval = + (8354 * (31 + 10 * BitStuffTime(bytecount))) / 1000; + if (is_in) { + retval = 7268 + FS_LS_HOST_DELAY + retval; + } else { + retval = 6265 + FS_LS_HOST_DELAY + retval; + } + } else { + retval = + (8354 * (31 + 10 * BitStuffTime(bytecount))) / 1000; + retval = 9107 + FS_LS_HOST_DELAY + retval; + } + break; + case USB_SPEED_LOW: + if (is_in) { + retval = + (67667 * (31 + 10 * BitStuffTime(bytecount))) / + 1000; + retval = + 64060 + (2 * HUB_LS_SETUP) + FS_LS_HOST_DELAY + + retval; + } else { + retval = + (66700 * (31 + 10 * BitStuffTime(bytecount))) / + 1000; + retval = + 64107 + (2 * HUB_LS_SETUP) + FS_LS_HOST_DELAY + + retval; + } + break; + default: + DWC_WARN("Unknown device speed\n"); + retval = -1; + } + + return NS_TO_US(retval); +} + +/** + * Initializes a QH structure. + * + * @param hcd The HCD state structure for the DWC OTG controller. + * @param qh The QH to init. + * @param urb Holds the information about the device/endpoint that we need + * to initialize the QH. + */ +#define SCHEDULE_SLOP 10 +void qh_init(dwc_otg_hcd_t * hcd, dwc_otg_qh_t * qh, dwc_otg_hcd_urb_t * urb) +{ + char *speed, *type; + int dev_speed; + uint32_t hub_addr, hub_port; + + dwc_memset(qh, 0, sizeof(dwc_otg_qh_t)); + + /* Initialize QH */ + qh->ep_type = dwc_otg_hcd_get_pipe_type(&urb->pipe_info); + qh->ep_is_in = dwc_otg_hcd_is_pipe_in(&urb->pipe_info) ? 1 : 0; + + qh->data_toggle = DWC_OTG_HC_PID_DATA0; + qh->maxp = dwc_otg_hcd_get_mps(&urb->pipe_info); + DWC_CIRCLEQ_INIT(&qh->qtd_list); + DWC_LIST_INIT(&qh->qh_list_entry); + qh->channel = NULL; + + /* FS/LS Enpoint on HS Hub + * NOT virtual root hub */ + dev_speed = hcd->fops->speed(hcd, urb->priv); + + hcd->fops->hub_info(hcd, urb->priv, &hub_addr, &hub_port); + qh->do_split = 0; + if (microframe_schedule) + qh->speed = dev_speed; + + qh->nak_frame = 0xffff; + + if (((dev_speed == USB_SPEED_LOW) || + (dev_speed == USB_SPEED_FULL)) && + (hub_addr != 0 && hub_addr != 1)) { + DWC_DEBUGPL(DBG_HCD, + "QH init: EP %d: TT found at hub addr %d, for port %d\n", + dwc_otg_hcd_get_ep_num(&urb->pipe_info), hub_addr, + hub_port); + qh->do_split = 1; + qh->skip_count = 0; + } + + if (qh->ep_type == UE_INTERRUPT || qh->ep_type == UE_ISOCHRONOUS) { + /* Compute scheduling parameters once and save them. */ + hprt0_data_t hprt; + + /** @todo Account for split transfers in the bus time. */ + int bytecount = + dwc_hb_mult(qh->maxp) * dwc_max_packet(qh->maxp); + + qh->usecs = + calc_bus_time((qh->do_split ? USB_SPEED_HIGH : dev_speed), + qh->ep_is_in, (qh->ep_type == UE_ISOCHRONOUS), + bytecount); + /* Start in a slightly future (micro)frame. */ + qh->sched_frame = dwc_frame_num_inc(hcd->frame_number, + SCHEDULE_SLOP); + qh->interval = urb->interval; + +#if 0 + /* Increase interrupt polling rate for debugging. */ + if (qh->ep_type == UE_INTERRUPT) { + qh->interval = 8; + } +#endif + hprt.d32 = DWC_READ_REG32(hcd->core_if->host_if->hprt0); + if ((hprt.b.prtspd == DWC_HPRT0_PRTSPD_HIGH_SPEED) && + ((dev_speed == USB_SPEED_LOW) || + (dev_speed == USB_SPEED_FULL))) { + qh->interval *= 8; + qh->sched_frame |= 0x7; + qh->start_split_frame = qh->sched_frame; + } + + } + + DWC_DEBUGPL(DBG_HCD, "DWC OTG HCD QH Initialized\n"); + DWC_DEBUGPL(DBG_HCDV, "DWC OTG HCD QH - qh = %p\n", qh); + DWC_DEBUGPL(DBG_HCDV, "DWC OTG HCD QH - Device Address = %d\n", + dwc_otg_hcd_get_dev_addr(&urb->pipe_info)); + DWC_DEBUGPL(DBG_HCDV, "DWC OTG HCD QH - Endpoint %d, %s\n", + dwc_otg_hcd_get_ep_num(&urb->pipe_info), + dwc_otg_hcd_is_pipe_in(&urb->pipe_info) ? "IN" : "OUT"); + switch (dev_speed) { + case USB_SPEED_LOW: + qh->dev_speed = DWC_OTG_EP_SPEED_LOW; + speed = "low"; + break; + case USB_SPEED_FULL: + qh->dev_speed = DWC_OTG_EP_SPEED_FULL; + speed = "full"; + break; + case USB_SPEED_HIGH: + qh->dev_speed = DWC_OTG_EP_SPEED_HIGH; + speed = "high"; + break; + default: + speed = "?"; + break; + } + DWC_DEBUGPL(DBG_HCDV, "DWC OTG HCD QH - Speed = %s\n", speed); + + switch (qh->ep_type) { + case UE_ISOCHRONOUS: + type = "isochronous"; + break; + case UE_INTERRUPT: + type = "interrupt"; + break; + case UE_CONTROL: + type = "control"; + break; + case UE_BULK: + type = "bulk"; + break; + default: + type = "?"; + break; + } + + DWC_DEBUGPL(DBG_HCDV, "DWC OTG HCD QH - Type = %s\n", type); + +#ifdef DEBUG + if (qh->ep_type == UE_INTERRUPT) { + DWC_DEBUGPL(DBG_HCDV, "DWC OTG HCD QH - usecs = %d\n", + qh->usecs); + DWC_DEBUGPL(DBG_HCDV, "DWC OTG HCD QH - interval = %d\n", + qh->interval); + } +#endif + +} + +/** + * This function allocates and initializes a QH. + * + * @param hcd The HCD state structure for the DWC OTG controller. + * @param urb Holds the information about the device/endpoint that we need + * to initialize the QH. + * @param atomic_alloc Flag to do atomic allocation if needed + * + * @return Returns pointer to the newly allocated QH, or NULL on error. */ +dwc_otg_qh_t *dwc_otg_hcd_qh_create(dwc_otg_hcd_t * hcd, + dwc_otg_hcd_urb_t * urb, int atomic_alloc) +{ + dwc_otg_qh_t *qh; + + /* Allocate memory */ + /** @todo add memflags argument */ + qh = dwc_otg_hcd_qh_alloc(atomic_alloc); + if (qh == NULL) { + DWC_ERROR("qh allocation failed"); + return NULL; + } + + qh_init(hcd, qh, urb); + + if (hcd->core_if->dma_desc_enable + && (dwc_otg_hcd_qh_init_ddma(hcd, qh) < 0)) { + dwc_otg_hcd_qh_free(hcd, qh); + return NULL; + } + + return qh; +} + +/* microframe_schedule=0 start */ + +/** + * Checks that a channel is available for a periodic transfer. + * + * @return 0 if successful, negative error code otherise. + */ +static int periodic_channel_available(dwc_otg_hcd_t * hcd) +{ + /* + * Currently assuming that there is a dedicated host channnel for each + * periodic transaction plus at least one host channel for + * non-periodic transactions. + */ + int status; + int num_channels; + + num_channels = hcd->core_if->core_params->host_channels; + if ((hcd->periodic_channels + hcd->non_periodic_channels < num_channels) + && (hcd->periodic_channels < num_channels - 1)) { + status = 0; + } else { + DWC_INFO("%s: Total channels: %d, Periodic: %d, Non-periodic: %d\n", + __func__, num_channels, hcd->periodic_channels, hcd->non_periodic_channels); //NOTICE + status = -DWC_E_NO_SPACE; + } + + return status; +} + +/** + * Checks that there is sufficient bandwidth for the specified QH in the + * periodic schedule. For simplicity, this calculation assumes that all the + * transfers in the periodic schedule may occur in the same (micro)frame. + * + * @param hcd The HCD state structure for the DWC OTG controller. + * @param qh QH containing periodic bandwidth required. + * + * @return 0 if successful, negative error code otherwise. + */ +static int check_periodic_bandwidth(dwc_otg_hcd_t * hcd, dwc_otg_qh_t * qh) +{ + int status; + int16_t max_claimed_usecs; + + status = 0; + + if ((qh->dev_speed == DWC_OTG_EP_SPEED_HIGH) || qh->do_split) { + /* + * High speed mode. + * Max periodic usecs is 80% x 125 usec = 100 usec. + */ + + max_claimed_usecs = 100 - qh->usecs; + } else { + /* + * Full speed mode. + * Max periodic usecs is 90% x 1000 usec = 900 usec. + */ + max_claimed_usecs = 900 - qh->usecs; + } + + if (hcd->periodic_usecs > max_claimed_usecs) { + DWC_INFO("%s: already claimed usecs %d, required usecs %d\n", __func__, hcd->periodic_usecs, qh->usecs); //NOTICE + status = -DWC_E_NO_SPACE; + } + + return status; +} + +/* microframe_schedule=0 end */ + +/** + * Microframe scheduler + * track the total use in hcd->frame_usecs + * keep each qh use in qh->frame_usecs + * when surrendering the qh then donate the time back + */ +const unsigned short max_uframe_usecs[]={ 100, 100, 100, 100, 100, 100, 30, 0 }; + +/* + * called from dwc_otg_hcd.c:dwc_otg_hcd_init + */ +int init_hcd_usecs(dwc_otg_hcd_t *_hcd) +{ + int i; + for (i=0; i<8; i++) { + _hcd->frame_usecs[i] = max_uframe_usecs[i]; + } + return 0; +} + +static int find_single_uframe(dwc_otg_hcd_t * _hcd, dwc_otg_qh_t * _qh) +{ + int i; + unsigned short utime; + int t_left; + int ret; + int done; + + ret = -1; + utime = _qh->usecs; + t_left = utime; + i = 0; + done = 0; + while (done == 0) { + /* At the start _hcd->frame_usecs[i] = max_uframe_usecs[i]; */ + if (utime <= _hcd->frame_usecs[i]) { + _hcd->frame_usecs[i] -= utime; + _qh->frame_usecs[i] += utime; + t_left -= utime; + ret = i; + done = 1; + return ret; + } else { + i++; + if (i == 8) { + done = 1; + ret = -1; + } + } + } + return ret; + } + +/* + * use this for FS apps that can span multiple uframes + */ +static int find_multi_uframe(dwc_otg_hcd_t * _hcd, dwc_otg_qh_t * _qh) +{ + int i; + int j; + unsigned short utime; + int t_left; + int ret; + int done; + unsigned short xtime; + + ret = -1; + utime = _qh->usecs; + t_left = utime; + i = 0; + done = 0; +loop: + while (done == 0) { + if(_hcd->frame_usecs[i] <= 0) { + i++; + if (i == 8) { + done = 1; + ret = -1; + } + goto loop; + } + + /* + * we need n consecutive slots + * so use j as a start slot j plus j+1 must be enough time (for now) + */ + xtime= _hcd->frame_usecs[i]; + for (j = i+1 ; j < 8 ; j++ ) { + /* + * if we add this frame remaining time to xtime we may + * be OK, if not we need to test j for a complete frame + */ + if ((xtime+_hcd->frame_usecs[j]) < utime) { + if (_hcd->frame_usecs[j] < max_uframe_usecs[j]) { + j = 8; + ret = -1; + continue; + } + } + if (xtime >= utime) { + ret = i; + j = 8; /* stop loop with a good value ret */ + continue; + } + /* add the frame time to x time */ + xtime += _hcd->frame_usecs[j]; + /* we must have a fully available next frame or break */ + if ((xtime < utime) + && (_hcd->frame_usecs[j] == max_uframe_usecs[j])) { + ret = -1; + j = 8; /* stop loop with a bad value ret */ + continue; + } + } + if (ret >= 0) { + t_left = utime; + for (j = i; (t_left>0) && (j < 8); j++ ) { + t_left -= _hcd->frame_usecs[j]; + if ( t_left <= 0 ) { + _qh->frame_usecs[j] += _hcd->frame_usecs[j] + t_left; + _hcd->frame_usecs[j]= -t_left; + ret = i; + done = 1; + } else { + _qh->frame_usecs[j] += _hcd->frame_usecs[j]; + _hcd->frame_usecs[j] = 0; + } + } + } else { + i++; + if (i == 8) { + done = 1; + ret = -1; + } + } + } + return ret; +} + +static int find_uframe(dwc_otg_hcd_t * _hcd, dwc_otg_qh_t * _qh) +{ + int ret; + ret = -1; + + if (_qh->speed == USB_SPEED_HIGH) { + /* if this is a hs transaction we need a full frame */ + ret = find_single_uframe(_hcd, _qh); + } else { + /* if this is a fs transaction we may need a sequence of frames */ + ret = find_multi_uframe(_hcd, _qh); + } + return ret; +} + +/** + * Checks that the max transfer size allowed in a host channel is large enough + * to handle the maximum data transfer in a single (micro)frame for a periodic + * transfer. + * + * @param hcd The HCD state structure for the DWC OTG controller. + * @param qh QH for a periodic endpoint. + * + * @return 0 if successful, negative error code otherwise. + */ +static int check_max_xfer_size(dwc_otg_hcd_t * hcd, dwc_otg_qh_t * qh) +{ + int status; + uint32_t max_xfer_size; + uint32_t max_channel_xfer_size; + + status = 0; + + max_xfer_size = dwc_max_packet(qh->maxp) * dwc_hb_mult(qh->maxp); + max_channel_xfer_size = hcd->core_if->core_params->max_transfer_size; + + if (max_xfer_size > max_channel_xfer_size) { + DWC_INFO("%s: Periodic xfer length %d > " "max xfer length for channel %d\n", + __func__, max_xfer_size, max_channel_xfer_size); //NOTICE + status = -DWC_E_NO_SPACE; + } + + return status; +} + + + +/** + * Schedules an interrupt or isochronous transfer in the periodic schedule. + * + * @param hcd The HCD state structure for the DWC OTG controller. + * @param qh QH for the periodic transfer. The QH should already contain the + * scheduling information. + * + * @return 0 if successful, negative error code otherwise. + */ +static int schedule_periodic(dwc_otg_hcd_t * hcd, dwc_otg_qh_t * qh) +{ + int status = 0; + + if (microframe_schedule) { + int frame; + status = find_uframe(hcd, qh); + frame = -1; + if (status == 0) { + frame = 7; + } else { + if (status > 0 ) + frame = status-1; + } + + /* Set the new frame up */ + if (frame > -1) { + qh->sched_frame &= ~0x7; + qh->sched_frame |= (frame & 7); + } + + if (status != -1) + status = 0; + } else { + status = periodic_channel_available(hcd); + if (status) { + DWC_INFO("%s: No host channel available for periodic " "transfer.\n", __func__); //NOTICE + return status; + } + + status = check_periodic_bandwidth(hcd, qh); + } + if (status) { + DWC_INFO("%s: Insufficient periodic bandwidth for " + "periodic transfer.\n", __func__); + return status; + } + status = check_max_xfer_size(hcd, qh); + if (status) { + DWC_INFO("%s: Channel max transfer size too small " + "for periodic transfer.\n", __func__); + return status; + } + + if (hcd->core_if->dma_desc_enable) { + /* Don't rely on SOF and start in ready schedule */ + DWC_LIST_INSERT_TAIL(&hcd->periodic_sched_ready, &qh->qh_list_entry); + } + else { + if(fiq_enable && (DWC_LIST_EMPTY(&hcd->periodic_sched_inactive) || dwc_frame_num_le(qh->sched_frame, hcd->fiq_state->next_sched_frame))) + { + hcd->fiq_state->next_sched_frame = qh->sched_frame; + + } + /* Always start in the inactive schedule. */ + DWC_LIST_INSERT_TAIL(&hcd->periodic_sched_inactive, &qh->qh_list_entry); + } + + if (!microframe_schedule) { + /* Reserve the periodic channel. */ + hcd->periodic_channels++; + } + + /* Update claimed usecs per (micro)frame. */ + hcd->periodic_usecs += qh->usecs; + + return status; +} + + +/** + * This function adds a QH to either the non periodic or periodic schedule if + * it is not already in the schedule. If the QH is already in the schedule, no + * action is taken. + * + * @return 0 if successful, negative error code otherwise. + */ +int dwc_otg_hcd_qh_add(dwc_otg_hcd_t * hcd, dwc_otg_qh_t * qh) +{ + int status = 0; + gintmsk_data_t intr_mask = {.d32 = 0 }; + + if (!DWC_LIST_EMPTY(&qh->qh_list_entry)) { + /* QH already in a schedule. */ + return status; + } + + /* Add the new QH to the appropriate schedule */ + if (dwc_qh_is_non_per(qh)) { + /* Always start in the inactive schedule. */ + DWC_LIST_INSERT_TAIL(&hcd->non_periodic_sched_inactive, + &qh->qh_list_entry); + //hcd->fiq_state->kick_np_queues = 1; + } else { + status = schedule_periodic(hcd, qh); + if ( !hcd->periodic_qh_count ) { + intr_mask.b.sofintr = 1; + if (fiq_enable) { + local_fiq_disable(); + fiq_fsm_spin_lock(&hcd->fiq_state->lock); + DWC_MODIFY_REG32(&hcd->core_if->core_global_regs->gintmsk, intr_mask.d32, intr_mask.d32); + fiq_fsm_spin_unlock(&hcd->fiq_state->lock); + local_fiq_enable(); + } else { + DWC_MODIFY_REG32(&hcd->core_if->core_global_regs->gintmsk, intr_mask.d32, intr_mask.d32); + } + } + hcd->periodic_qh_count++; + } + + return status; +} + +/** + * Removes an interrupt or isochronous transfer from the periodic schedule. + * + * @param hcd The HCD state structure for the DWC OTG controller. + * @param qh QH for the periodic transfer. + */ +static void deschedule_periodic(dwc_otg_hcd_t * hcd, dwc_otg_qh_t * qh) +{ + int i; + DWC_LIST_REMOVE_INIT(&qh->qh_list_entry); + + /* Update claimed usecs per (micro)frame. */ + hcd->periodic_usecs -= qh->usecs; + + if (!microframe_schedule) { + /* Release the periodic channel reservation. */ + hcd->periodic_channels--; + } else { + for (i = 0; i < 8; i++) { + hcd->frame_usecs[i] += qh->frame_usecs[i]; + qh->frame_usecs[i] = 0; + } + } +} + +/** + * Removes a QH from either the non-periodic or periodic schedule. Memory is + * not freed. + * + * @param hcd The HCD state structure. + * @param qh QH to remove from schedule. */ +void dwc_otg_hcd_qh_remove(dwc_otg_hcd_t * hcd, dwc_otg_qh_t * qh) +{ + gintmsk_data_t intr_mask = {.d32 = 0 }; + + if (DWC_LIST_EMPTY(&qh->qh_list_entry)) { + /* QH is not in a schedule. */ + return; + } + + if (dwc_qh_is_non_per(qh)) { + if (hcd->non_periodic_qh_ptr == &qh->qh_list_entry) { + hcd->non_periodic_qh_ptr = + hcd->non_periodic_qh_ptr->next; + } + DWC_LIST_REMOVE_INIT(&qh->qh_list_entry); + //if (!DWC_LIST_EMPTY(&hcd->non_periodic_sched_inactive)) + // hcd->fiq_state->kick_np_queues = 1; + } else { + deschedule_periodic(hcd, qh); + hcd->periodic_qh_count--; + if( !hcd->periodic_qh_count && !fiq_fsm_enable ) { + intr_mask.b.sofintr = 1; + if (fiq_enable) { + local_fiq_disable(); + fiq_fsm_spin_lock(&hcd->fiq_state->lock); + DWC_MODIFY_REG32(&hcd->core_if->core_global_regs->gintmsk, intr_mask.d32, 0); + fiq_fsm_spin_unlock(&hcd->fiq_state->lock); + local_fiq_enable(); + } else { + DWC_MODIFY_REG32(&hcd->core_if->core_global_regs->gintmsk, intr_mask.d32, 0); + } + } + } +} + +/** + * Deactivates a QH. For non-periodic QHs, removes the QH from the active + * non-periodic schedule. The QH is added to the inactive non-periodic + * schedule if any QTDs are still attached to the QH. + * + * For periodic QHs, the QH is removed from the periodic queued schedule. If + * there are any QTDs still attached to the QH, the QH is added to either the + * periodic inactive schedule or the periodic ready schedule and its next + * scheduled frame is calculated. The QH is placed in the ready schedule if + * the scheduled frame has been reached already. Otherwise it's placed in the + * inactive schedule. If there are no QTDs attached to the QH, the QH is + * completely removed from the periodic schedule. + */ +void dwc_otg_hcd_qh_deactivate(dwc_otg_hcd_t * hcd, dwc_otg_qh_t * qh, + int sched_next_periodic_split) +{ + if (dwc_qh_is_non_per(qh)) { + dwc_otg_hcd_qh_remove(hcd, qh); + if (!DWC_CIRCLEQ_EMPTY(&qh->qtd_list)) { + /* Add back to inactive non-periodic schedule. */ + dwc_otg_hcd_qh_add(hcd, qh); + //hcd->fiq_state->kick_np_queues = 1; + } + } else { + uint16_t frame_number = dwc_otg_hcd_get_frame_number(hcd); + + if (qh->do_split) { + /* Schedule the next continuing periodic split transfer */ + if (sched_next_periodic_split) { + + qh->sched_frame = frame_number; + + if (dwc_frame_num_le(frame_number, + dwc_frame_num_inc + (qh->start_split_frame, + 1))) { + /* + * Allow one frame to elapse after start + * split microframe before scheduling + * complete split, but DONT if we are + * doing the next start split in the + * same frame for an ISOC out. + */ + if ((qh->ep_type != UE_ISOCHRONOUS) || + (qh->ep_is_in != 0)) { + qh->sched_frame = + dwc_frame_num_inc(qh->sched_frame, 1); + } + } + } else { + qh->sched_frame = + dwc_frame_num_inc(qh->start_split_frame, + qh->interval); + if (dwc_frame_num_le + (qh->sched_frame, frame_number)) { + qh->sched_frame = frame_number; + } + qh->sched_frame |= 0x7; + qh->start_split_frame = qh->sched_frame; + } + } else { + qh->sched_frame = + dwc_frame_num_inc(qh->sched_frame, qh->interval); + if (dwc_frame_num_le(qh->sched_frame, frame_number)) { + qh->sched_frame = frame_number; + } + } + + if (DWC_CIRCLEQ_EMPTY(&qh->qtd_list)) { + dwc_otg_hcd_qh_remove(hcd, qh); + } else { + /* + * Remove from periodic_sched_queued and move to + * appropriate queue. + */ + if ((microframe_schedule && dwc_frame_num_le(qh->sched_frame, frame_number)) || + (!microframe_schedule && qh->sched_frame == frame_number)) { + DWC_LIST_MOVE_HEAD(&hcd->periodic_sched_ready, + &qh->qh_list_entry); + } else { + if(fiq_enable && !dwc_frame_num_le(hcd->fiq_state->next_sched_frame, qh->sched_frame)) + { + hcd->fiq_state->next_sched_frame = qh->sched_frame; + } + + DWC_LIST_MOVE_HEAD + (&hcd->periodic_sched_inactive, + &qh->qh_list_entry); + } + } + } +} + +/** + * This function allocates and initializes a QTD. + * + * @param urb The URB to create a QTD from. Each URB-QTD pair will end up + * pointing to each other so each pair should have a unique correlation. + * @param atomic_alloc Flag to do atomic alloc if needed + * + * @return Returns pointer to the newly allocated QTD, or NULL on error. */ +dwc_otg_qtd_t *dwc_otg_hcd_qtd_create(dwc_otg_hcd_urb_t * urb, int atomic_alloc) +{ + dwc_otg_qtd_t *qtd; + + qtd = dwc_otg_hcd_qtd_alloc(atomic_alloc); + if (qtd == NULL) { + return NULL; + } + + dwc_otg_hcd_qtd_init(qtd, urb); + return qtd; +} + +/** + * Initializes a QTD structure. + * + * @param qtd The QTD to initialize. + * @param urb The URB to use for initialization. */ +void dwc_otg_hcd_qtd_init(dwc_otg_qtd_t * qtd, dwc_otg_hcd_urb_t * urb) +{ + dwc_memset(qtd, 0, sizeof(dwc_otg_qtd_t)); + qtd->urb = urb; + if (dwc_otg_hcd_get_pipe_type(&urb->pipe_info) == UE_CONTROL) { + /* + * The only time the QTD data toggle is used is on the data + * phase of control transfers. This phase always starts with + * DATA1. + */ + qtd->data_toggle = DWC_OTG_HC_PID_DATA1; + qtd->control_phase = DWC_OTG_CONTROL_SETUP; + } + + /* start split */ + qtd->complete_split = 0; + qtd->isoc_split_pos = DWC_HCSPLIT_XACTPOS_ALL; + qtd->isoc_split_offset = 0; + qtd->in_process = 0; + + /* Store the qtd ptr in the urb to reference what QTD. */ + urb->qtd = qtd; + return; +} + +/** + * This function adds a QTD to the QTD-list of a QH. It will find the correct + * QH to place the QTD into. If it does not find a QH, then it will create a + * new QH. If the QH to which the QTD is added is not currently scheduled, it + * is placed into the proper schedule based on its EP type. + * HCD lock must be held and interrupts must be disabled on entry + * + * @param[in] qtd The QTD to add + * @param[in] hcd The DWC HCD structure + * @param[out] qh out parameter to return queue head + * @param atomic_alloc Flag to do atomic alloc if needed + * + * @return 0 if successful, negative error code otherwise. + */ +int dwc_otg_hcd_qtd_add(dwc_otg_qtd_t * qtd, + dwc_otg_hcd_t * hcd, dwc_otg_qh_t ** qh, int atomic_alloc) +{ + int retval = 0; + dwc_otg_hcd_urb_t *urb = qtd->urb; + + /* + * Get the QH which holds the QTD-list to insert to. Create QH if it + * doesn't exist. + */ + if (*qh == NULL) { + *qh = dwc_otg_hcd_qh_create(hcd, urb, atomic_alloc); + if (*qh == NULL) { + retval = -DWC_E_NO_MEMORY; + goto done; + } else { + if (fiq_enable) + hcd->fiq_state->kick_np_queues = 1; + } + } + retval = dwc_otg_hcd_qh_add(hcd, *qh); + if (retval == 0) { + DWC_CIRCLEQ_INSERT_TAIL(&((*qh)->qtd_list), qtd, + qtd_list_entry); + qtd->qh = *qh; + } +done: + + return retval; +} + +#endif /* DWC_DEVICE_ONLY */ --- linux-raspi2-4.2.0.orig/drivers/usb/host/dwc_otg/dwc_otg_os_dep.h +++ linux-raspi2-4.2.0/drivers/usb/host/dwc_otg/dwc_otg_os_dep.h @@ -0,0 +1,188 @@ +#ifndef _DWC_OS_DEP_H_ +#define _DWC_OS_DEP_H_ + +/** + * @file + * + * This file contains OS dependent structures. + * + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,20) +# include +#endif + +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,21) +# include +#else +# include +#endif + +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,24) +# include +#else +# include +#endif + +#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,20) +# include +#endif + +#ifdef PCI_INTERFACE +# include +#endif + +#ifdef LM_INTERFACE +# include +# include +# include +# include +# if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,30)) +# include +# include +# include +# include +# else +/* in 2.6.31, at least, we seem to have lost the generic LM infrastructure - + here we assume that the machine architecture provides definitions + in its own header +*/ +# include +# include +# endif +#endif + +#ifdef PLATFORM_INTERFACE +#include +#include +#endif + +/** The OS page size */ +#define DWC_OS_PAGE_SIZE PAGE_SIZE + +#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,14) +typedef int gfp_t; +#endif + +#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,18) +# define IRQF_SHARED SA_SHIRQ +#endif + +typedef struct os_dependent { + /** Base address returned from ioremap() */ + void *base; + + /** Register offset for Diagnostic API */ + uint32_t reg_offset; + + /** Base address for MPHI peripheral */ + void *mphi_base; + +#ifdef LM_INTERFACE + struct lm_device *lmdev; +#elif defined(PCI_INTERFACE) + struct pci_dev *pcidev; + + /** Start address of a PCI region */ + resource_size_t rsrc_start; + + /** Length address of a PCI region */ + resource_size_t rsrc_len; +#elif defined(PLATFORM_INTERFACE) + struct platform_device *platformdev; +#endif + +} os_dependent_t; + +#ifdef __cplusplus +} +#endif + + + +/* Type for the our device on the chosen bus */ +#if defined(LM_INTERFACE) +typedef struct lm_device dwc_bus_dev_t; +#elif defined(PCI_INTERFACE) +typedef struct pci_dev dwc_bus_dev_t; +#elif defined(PLATFORM_INTERFACE) +typedef struct platform_device dwc_bus_dev_t; +#endif + +/* Helper macro to retrieve drvdata from the device on the chosen bus */ +#if defined(LM_INTERFACE) +#define DWC_OTG_BUSDRVDATA(_dev) lm_get_drvdata(_dev) +#elif defined(PCI_INTERFACE) +#define DWC_OTG_BUSDRVDATA(_dev) pci_get_drvdata(_dev) +#elif defined(PLATFORM_INTERFACE) +#define DWC_OTG_BUSDRVDATA(_dev) platform_get_drvdata(_dev) +#endif + +/** + * Helper macro returning the otg_device structure of a given struct device + * + * c.f. static dwc_otg_device_t *dwc_otg_drvdev(struct device *_dev) + */ +#ifdef LM_INTERFACE +#define DWC_OTG_GETDRVDEV(_var, _dev) do { \ + struct lm_device *lm_dev = \ + container_of(_dev, struct lm_device, dev); \ + _var = lm_get_drvdata(lm_dev); \ + } while (0) + +#elif defined(PCI_INTERFACE) +#define DWC_OTG_GETDRVDEV(_var, _dev) do { \ + _var = dev_get_drvdata(_dev); \ + } while (0) + +#elif defined(PLATFORM_INTERFACE) +#define DWC_OTG_GETDRVDEV(_var, _dev) do { \ + struct platform_device *platform_dev = \ + container_of(_dev, struct platform_device, dev); \ + _var = platform_get_drvdata(platform_dev); \ + } while (0) +#endif + + +/** + * Helper macro returning the struct dev of the given struct os_dependent + * + * c.f. static struct device *dwc_otg_getdev(struct os_dependent *osdep) + */ +#ifdef LM_INTERFACE +#define DWC_OTG_OS_GETDEV(_osdep) \ + ((_osdep).lmdev == NULL? NULL: &(_osdep).lmdev->dev) +#elif defined(PCI_INTERFACE) +#define DWC_OTG_OS_GETDEV(_osdep) \ + ((_osdep).pci_dev == NULL? NULL: &(_osdep).pci_dev->dev) +#elif defined(PLATFORM_INTERFACE) +#define DWC_OTG_OS_GETDEV(_osdep) \ + ((_osdep).platformdev == NULL? NULL: &(_osdep).platformdev->dev) +#endif + + + + +#endif /* _DWC_OS_DEP_H_ */ --- linux-raspi2-4.2.0.orig/drivers/usb/host/dwc_otg/dwc_otg_pcd.c +++ linux-raspi2-4.2.0/drivers/usb/host/dwc_otg/dwc_otg_pcd.c @@ -0,0 +1,2712 @@ +/* ========================================================================== + * $File: //dwh/usb_iip/dev/software/otg/linux/drivers/dwc_otg_pcd.c $ + * $Revision: #101 $ + * $Date: 2012/08/10 $ + * $Change: 2047372 $ + * + * Synopsys HS OTG Linux Software Driver and documentation (hereinafter, + * "Software") is an Unsupported proprietary work of Synopsys, Inc. unless + * otherwise expressly agreed to in writing between Synopsys and you. + * + * The Software IS NOT an item of Licensed Software or Licensed Product under + * any End User Software License Agreement or Agreement for Licensed Product + * with Synopsys or any supplement thereto. You are permitted to use and + * redistribute this Software in source and binary forms, with or without + * modification, provided that redistributions of source code must retain this + * notice. You may not view, use, disclose, copy or distribute this file or + * any information contained herein except pursuant to this license grant from + * Synopsys. If you do not agree with this notice, including the disclaimer + * below, then you are not authorized to use the Software. + * + * THIS SOFTWARE IS BEING DISTRIBUTED BY SYNOPSYS SOLELY ON AN "AS IS" BASIS + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE HEREBY DISCLAIMED. IN NO EVENT SHALL SYNOPSYS BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH + * DAMAGE. + * ========================================================================== */ +#ifndef DWC_HOST_ONLY + +/** @file + * This file implements PCD Core. All code in this file is portable and doesn't + * use any OS specific functions. + * PCD Core provides Interface, defined in + * header file, which can be used to implement OS specific PCD interface. + * + * An important function of the PCD is managing interrupts generated + * by the DWC_otg controller. The implementation of the DWC_otg device + * mode interrupt service routines is in dwc_otg_pcd_intr.c. + * + * @todo Add Device Mode test modes (Test J mode, Test K mode, etc). + * @todo Does it work when the request size is greater than DEPTSIZ + * transfer size + * + */ + +#include "dwc_otg_pcd.h" + +#ifdef DWC_UTE_CFI +#include "dwc_otg_cfi.h" + +extern int init_cfi(cfiobject_t * cfiobj); +#endif + +/** + * Choose endpoint from ep arrays using usb_ep structure. + */ +static dwc_otg_pcd_ep_t *get_ep_from_handle(dwc_otg_pcd_t * pcd, void *handle) +{ + int i; + if (pcd->ep0.priv == handle) { + return &pcd->ep0; + } + for (i = 0; i < MAX_EPS_CHANNELS - 1; i++) { + if (pcd->in_ep[i].priv == handle) + return &pcd->in_ep[i]; + if (pcd->out_ep[i].priv == handle) + return &pcd->out_ep[i]; + } + + return NULL; +} + +/** + * This function completes a request. It call's the request call back. + */ +void dwc_otg_request_done(dwc_otg_pcd_ep_t * ep, dwc_otg_pcd_request_t * req, + int32_t status) +{ + unsigned stopped = ep->stopped; + + DWC_DEBUGPL(DBG_PCDV, "%s(ep %p req %p)\n", __func__, ep, req); + DWC_CIRCLEQ_REMOVE_INIT(&ep->queue, req, queue_entry); + + /* don't modify queue heads during completion callback */ + ep->stopped = 1; + /* spin_unlock/spin_lock now done in fops->complete() */ + ep->pcd->fops->complete(ep->pcd, ep->priv, req->priv, status, + req->actual); + + if (ep->pcd->request_pending > 0) { + --ep->pcd->request_pending; + } + + ep->stopped = stopped; + DWC_FREE(req); +} + +/** + * This function terminates all the requsts in the EP request queue. + */ +void dwc_otg_request_nuke(dwc_otg_pcd_ep_t * ep) +{ + dwc_otg_pcd_request_t *req; + + ep->stopped = 1; + + /* called with irqs blocked?? */ + while (!DWC_CIRCLEQ_EMPTY(&ep->queue)) { + req = DWC_CIRCLEQ_FIRST(&ep->queue); + dwc_otg_request_done(ep, req, -DWC_E_SHUTDOWN); + } +} + +void dwc_otg_pcd_start(dwc_otg_pcd_t * pcd, + const struct dwc_otg_pcd_function_ops *fops) +{ + pcd->fops = fops; +} + +/** + * PCD Callback function for initializing the PCD when switching to + * device mode. + * + * @param p void pointer to the dwc_otg_pcd_t + */ +static int32_t dwc_otg_pcd_start_cb(void *p) +{ + dwc_otg_pcd_t *pcd = (dwc_otg_pcd_t *) p; + dwc_otg_core_if_t *core_if = GET_CORE_IF(pcd); + + /* + * Initialized the Core for Device mode. + */ + if (dwc_otg_is_device_mode(core_if)) { + dwc_otg_core_dev_init(core_if); + /* Set core_if's lock pointer to the pcd->lock */ + core_if->lock = pcd->lock; + } + return 1; +} + +/** CFI-specific buffer allocation function for EP */ +#ifdef DWC_UTE_CFI +uint8_t *cfiw_ep_alloc_buffer(dwc_otg_pcd_t * pcd, void *pep, dwc_dma_t * addr, + size_t buflen, int flags) +{ + dwc_otg_pcd_ep_t *ep; + ep = get_ep_from_handle(pcd, pep); + if (!ep) { + DWC_WARN("bad ep\n"); + return -DWC_E_INVALID; + } + + return pcd->cfi->ops.ep_alloc_buf(pcd->cfi, pcd, ep, addr, buflen, + flags); +} +#else +uint8_t *cfiw_ep_alloc_buffer(dwc_otg_pcd_t * pcd, void *pep, dwc_dma_t * addr, + size_t buflen, int flags); +#endif + +/** + * PCD Callback function for notifying the PCD when resuming from + * suspend. + * + * @param p void pointer to the dwc_otg_pcd_t + */ +static int32_t dwc_otg_pcd_resume_cb(void *p) +{ + dwc_otg_pcd_t *pcd = (dwc_otg_pcd_t *) p; + + if (pcd->fops->resume) { + pcd->fops->resume(pcd); + } + + /* Stop the SRP timeout timer. */ + if ((GET_CORE_IF(pcd)->core_params->phy_type != DWC_PHY_TYPE_PARAM_FS) + || (!GET_CORE_IF(pcd)->core_params->i2c_enable)) { + if (GET_CORE_IF(pcd)->srp_timer_started) { + GET_CORE_IF(pcd)->srp_timer_started = 0; + DWC_TIMER_CANCEL(GET_CORE_IF(pcd)->srp_timer); + } + } + return 1; +} + +/** + * PCD Callback function for notifying the PCD device is suspended. + * + * @param p void pointer to the dwc_otg_pcd_t + */ +static int32_t dwc_otg_pcd_suspend_cb(void *p) +{ + dwc_otg_pcd_t *pcd = (dwc_otg_pcd_t *) p; + + if (pcd->fops->suspend) { + DWC_SPINUNLOCK(pcd->lock); + pcd->fops->suspend(pcd); + DWC_SPINLOCK(pcd->lock); + } + + return 1; +} + +/** + * PCD Callback function for stopping the PCD when switching to Host + * mode. + * + * @param p void pointer to the dwc_otg_pcd_t + */ +static int32_t dwc_otg_pcd_stop_cb(void *p) +{ + dwc_otg_pcd_t *pcd = (dwc_otg_pcd_t *) p; + extern void dwc_otg_pcd_stop(dwc_otg_pcd_t * _pcd); + + dwc_otg_pcd_stop(pcd); + return 1; +} + +/** + * PCD Callback structure for handling mode switching. + */ +static dwc_otg_cil_callbacks_t pcd_callbacks = { + .start = dwc_otg_pcd_start_cb, + .stop = dwc_otg_pcd_stop_cb, + .suspend = dwc_otg_pcd_suspend_cb, + .resume_wakeup = dwc_otg_pcd_resume_cb, + .p = 0, /* Set at registration */ +}; + +/** + * This function allocates a DMA Descriptor chain for the Endpoint + * buffer to be used for a transfer to/from the specified endpoint. + */ +dwc_otg_dev_dma_desc_t *dwc_otg_ep_alloc_desc_chain(dwc_dma_t * dma_desc_addr, + uint32_t count) +{ + return DWC_DMA_ALLOC_ATOMIC(count * sizeof(dwc_otg_dev_dma_desc_t), + dma_desc_addr); +} + +/** + * This function frees a DMA Descriptor chain that was allocated by ep_alloc_desc. + */ +void dwc_otg_ep_free_desc_chain(dwc_otg_dev_dma_desc_t * desc_addr, + uint32_t dma_desc_addr, uint32_t count) +{ + DWC_DMA_FREE(count * sizeof(dwc_otg_dev_dma_desc_t), desc_addr, + dma_desc_addr); +} + +#ifdef DWC_EN_ISOC + +/** + * This function initializes a descriptor chain for Isochronous transfer + * + * @param core_if Programming view of DWC_otg controller. + * @param dwc_ep The EP to start the transfer on. + * + */ +void dwc_otg_iso_ep_start_ddma_transfer(dwc_otg_core_if_t * core_if, + dwc_ep_t * dwc_ep) +{ + + dsts_data_t dsts = {.d32 = 0 }; + depctl_data_t depctl = {.d32 = 0 }; + volatile uint32_t *addr; + int i, j; + uint32_t len; + + if (dwc_ep->is_in) + dwc_ep->desc_cnt = dwc_ep->buf_proc_intrvl / dwc_ep->bInterval; + else + dwc_ep->desc_cnt = + dwc_ep->buf_proc_intrvl * dwc_ep->pkt_per_frm / + dwc_ep->bInterval; + + /** Allocate descriptors for double buffering */ + dwc_ep->iso_desc_addr = + dwc_otg_ep_alloc_desc_chain(&dwc_ep->iso_dma_desc_addr, + dwc_ep->desc_cnt * 2); + if (dwc_ep->desc_addr) { + DWC_WARN("%s, can't allocate DMA descriptor chain\n", __func__); + return; + } + + dsts.d32 = DWC_READ_REG32(&core_if->dev_if->dev_global_regs->dsts); + + /** ISO OUT EP */ + if (dwc_ep->is_in == 0) { + dev_dma_desc_sts_t sts = {.d32 = 0 }; + dwc_otg_dev_dma_desc_t *dma_desc = dwc_ep->iso_desc_addr; + dma_addr_t dma_ad; + uint32_t data_per_desc; + dwc_otg_dev_out_ep_regs_t *out_regs = + core_if->dev_if->out_ep_regs[dwc_ep->num]; + int offset; + + addr = &core_if->dev_if->out_ep_regs[dwc_ep->num]->doepctl; + dma_ad = (dma_addr_t) DWC_READ_REG32(&(out_regs->doepdma)); + + /** Buffer 0 descriptors setup */ + dma_ad = dwc_ep->dma_addr0; + + sts.b_iso_out.bs = BS_HOST_READY; + sts.b_iso_out.rxsts = 0; + sts.b_iso_out.l = 0; + sts.b_iso_out.sp = 0; + sts.b_iso_out.ioc = 0; + sts.b_iso_out.pid = 0; + sts.b_iso_out.framenum = 0; + + offset = 0; + for (i = 0; i < dwc_ep->desc_cnt - dwc_ep->pkt_per_frm; + i += dwc_ep->pkt_per_frm) { + + for (j = 0; j < dwc_ep->pkt_per_frm; ++j) { + uint32_t len = (j + 1) * dwc_ep->maxpacket; + if (len > dwc_ep->data_per_frame) + data_per_desc = + dwc_ep->data_per_frame - + j * dwc_ep->maxpacket; + else + data_per_desc = dwc_ep->maxpacket; + len = data_per_desc % 4; + if (len) + data_per_desc += 4 - len; + + sts.b_iso_out.rxbytes = data_per_desc; + dma_desc->buf = dma_ad; + dma_desc->status.d32 = sts.d32; + + offset += data_per_desc; + dma_desc++; + dma_ad += data_per_desc; + } + } + + for (j = 0; j < dwc_ep->pkt_per_frm - 1; ++j) { + uint32_t len = (j + 1) * dwc_ep->maxpacket; + if (len > dwc_ep->data_per_frame) + data_per_desc = + dwc_ep->data_per_frame - + j * dwc_ep->maxpacket; + else + data_per_desc = dwc_ep->maxpacket; + len = data_per_desc % 4; + if (len) + data_per_desc += 4 - len; + sts.b_iso_out.rxbytes = data_per_desc; + dma_desc->buf = dma_ad; + dma_desc->status.d32 = sts.d32; + + offset += data_per_desc; + dma_desc++; + dma_ad += data_per_desc; + } + + sts.b_iso_out.ioc = 1; + len = (j + 1) * dwc_ep->maxpacket; + if (len > dwc_ep->data_per_frame) + data_per_desc = + dwc_ep->data_per_frame - j * dwc_ep->maxpacket; + else + data_per_desc = dwc_ep->maxpacket; + len = data_per_desc % 4; + if (len) + data_per_desc += 4 - len; + sts.b_iso_out.rxbytes = data_per_desc; + + dma_desc->buf = dma_ad; + dma_desc->status.d32 = sts.d32; + dma_desc++; + + /** Buffer 1 descriptors setup */ + sts.b_iso_out.ioc = 0; + dma_ad = dwc_ep->dma_addr1; + + offset = 0; + for (i = 0; i < dwc_ep->desc_cnt - dwc_ep->pkt_per_frm; + i += dwc_ep->pkt_per_frm) { + for (j = 0; j < dwc_ep->pkt_per_frm; ++j) { + uint32_t len = (j + 1) * dwc_ep->maxpacket; + if (len > dwc_ep->data_per_frame) + data_per_desc = + dwc_ep->data_per_frame - + j * dwc_ep->maxpacket; + else + data_per_desc = dwc_ep->maxpacket; + len = data_per_desc % 4; + if (len) + data_per_desc += 4 - len; + + data_per_desc = + sts.b_iso_out.rxbytes = data_per_desc; + dma_desc->buf = dma_ad; + dma_desc->status.d32 = sts.d32; + + offset += data_per_desc; + dma_desc++; + dma_ad += data_per_desc; + } + } + for (j = 0; j < dwc_ep->pkt_per_frm - 1; ++j) { + data_per_desc = + ((j + 1) * dwc_ep->maxpacket > + dwc_ep->data_per_frame) ? dwc_ep->data_per_frame - + j * dwc_ep->maxpacket : dwc_ep->maxpacket; + data_per_desc += + (data_per_desc % 4) ? (4 - data_per_desc % 4) : 0; + sts.b_iso_out.rxbytes = data_per_desc; + dma_desc->buf = dma_ad; + dma_desc->status.d32 = sts.d32; + + offset += data_per_desc; + dma_desc++; + dma_ad += data_per_desc; + } + + sts.b_iso_out.ioc = 1; + sts.b_iso_out.l = 1; + data_per_desc = + ((j + 1) * dwc_ep->maxpacket > + dwc_ep->data_per_frame) ? dwc_ep->data_per_frame - + j * dwc_ep->maxpacket : dwc_ep->maxpacket; + data_per_desc += + (data_per_desc % 4) ? (4 - data_per_desc % 4) : 0; + sts.b_iso_out.rxbytes = data_per_desc; + + dma_desc->buf = dma_ad; + dma_desc->status.d32 = sts.d32; + + dwc_ep->next_frame = 0; + + /** Write dma_ad into DOEPDMA register */ + DWC_WRITE_REG32(&(out_regs->doepdma), + (uint32_t) dwc_ep->iso_dma_desc_addr); + + } + /** ISO IN EP */ + else { + dev_dma_desc_sts_t sts = {.d32 = 0 }; + dwc_otg_dev_dma_desc_t *dma_desc = dwc_ep->iso_desc_addr; + dma_addr_t dma_ad; + dwc_otg_dev_in_ep_regs_t *in_regs = + core_if->dev_if->in_ep_regs[dwc_ep->num]; + unsigned int frmnumber; + fifosize_data_t txfifosize, rxfifosize; + + txfifosize.d32 = + DWC_READ_REG32(&core_if->dev_if->in_ep_regs[dwc_ep->num]-> + dtxfsts); + rxfifosize.d32 = + DWC_READ_REG32(&core_if->core_global_regs->grxfsiz); + + addr = &core_if->dev_if->in_ep_regs[dwc_ep->num]->diepctl; + + dma_ad = dwc_ep->dma_addr0; + + dsts.d32 = + DWC_READ_REG32(&core_if->dev_if->dev_global_regs->dsts); + + sts.b_iso_in.bs = BS_HOST_READY; + sts.b_iso_in.txsts = 0; + sts.b_iso_in.sp = + (dwc_ep->data_per_frame % dwc_ep->maxpacket) ? 1 : 0; + sts.b_iso_in.ioc = 0; + sts.b_iso_in.pid = dwc_ep->pkt_per_frm; + + frmnumber = dwc_ep->next_frame; + + sts.b_iso_in.framenum = frmnumber; + sts.b_iso_in.txbytes = dwc_ep->data_per_frame; + sts.b_iso_in.l = 0; + + /** Buffer 0 descriptors setup */ + for (i = 0; i < dwc_ep->desc_cnt - 1; i++) { + dma_desc->buf = dma_ad; + dma_desc->status.d32 = sts.d32; + dma_desc++; + + dma_ad += dwc_ep->data_per_frame; + sts.b_iso_in.framenum += dwc_ep->bInterval; + } + + sts.b_iso_in.ioc = 1; + dma_desc->buf = dma_ad; + dma_desc->status.d32 = sts.d32; + ++dma_desc; + + /** Buffer 1 descriptors setup */ + sts.b_iso_in.ioc = 0; + dma_ad = dwc_ep->dma_addr1; + + for (i = 0; i < dwc_ep->desc_cnt - dwc_ep->pkt_per_frm; + i += dwc_ep->pkt_per_frm) { + dma_desc->buf = dma_ad; + dma_desc->status.d32 = sts.d32; + dma_desc++; + + dma_ad += dwc_ep->data_per_frame; + sts.b_iso_in.framenum += dwc_ep->bInterval; + + sts.b_iso_in.ioc = 0; + } + sts.b_iso_in.ioc = 1; + sts.b_iso_in.l = 1; + + dma_desc->buf = dma_ad; + dma_desc->status.d32 = sts.d32; + + dwc_ep->next_frame = sts.b_iso_in.framenum + dwc_ep->bInterval; + + /** Write dma_ad into diepdma register */ + DWC_WRITE_REG32(&(in_regs->diepdma), + (uint32_t) dwc_ep->iso_dma_desc_addr); + } + /** Enable endpoint, clear nak */ + depctl.d32 = 0; + depctl.b.epena = 1; + depctl.b.usbactep = 1; + depctl.b.cnak = 1; + + DWC_MODIFY_REG32(addr, depctl.d32, depctl.d32); + depctl.d32 = DWC_READ_REG32(addr); +} + +/** + * This function initializes a descriptor chain for Isochronous transfer + * + * @param core_if Programming view of DWC_otg controller. + * @param ep The EP to start the transfer on. + * + */ +void dwc_otg_iso_ep_start_buf_transfer(dwc_otg_core_if_t * core_if, + dwc_ep_t * ep) +{ + depctl_data_t depctl = {.d32 = 0 }; + volatile uint32_t *addr; + + if (ep->is_in) { + addr = &core_if->dev_if->in_ep_regs[ep->num]->diepctl; + } else { + addr = &core_if->dev_if->out_ep_regs[ep->num]->doepctl; + } + + if (core_if->dma_enable == 0 || core_if->dma_desc_enable != 0) { + return; + } else { + deptsiz_data_t deptsiz = {.d32 = 0 }; + + ep->xfer_len = + ep->data_per_frame * ep->buf_proc_intrvl / ep->bInterval; + ep->pkt_cnt = + (ep->xfer_len - 1 + ep->maxpacket) / ep->maxpacket; + ep->xfer_count = 0; + ep->xfer_buff = + (ep->proc_buf_num) ? ep->xfer_buff1 : ep->xfer_buff0; + ep->dma_addr = + (ep->proc_buf_num) ? ep->dma_addr1 : ep->dma_addr0; + + if (ep->is_in) { + /* Program the transfer size and packet count + * as follows: xfersize = N * maxpacket + + * short_packet pktcnt = N + (short_packet + * exist ? 1 : 0) + */ + deptsiz.b.mc = ep->pkt_per_frm; + deptsiz.b.xfersize = ep->xfer_len; + deptsiz.b.pktcnt = + (ep->xfer_len - 1 + ep->maxpacket) / ep->maxpacket; + DWC_WRITE_REG32(&core_if->dev_if->in_ep_regs[ep->num]-> + dieptsiz, deptsiz.d32); + + /* Write the DMA register */ + DWC_WRITE_REG32(& + (core_if->dev_if->in_ep_regs[ep->num]-> + diepdma), (uint32_t) ep->dma_addr); + + } else { + deptsiz.b.pktcnt = + (ep->xfer_len + (ep->maxpacket - 1)) / + ep->maxpacket; + deptsiz.b.xfersize = deptsiz.b.pktcnt * ep->maxpacket; + + DWC_WRITE_REG32(&core_if->dev_if->out_ep_regs[ep->num]-> + doeptsiz, deptsiz.d32); + + /* Write the DMA register */ + DWC_WRITE_REG32(& + (core_if->dev_if->out_ep_regs[ep->num]-> + doepdma), (uint32_t) ep->dma_addr); + + } + /** Enable endpoint, clear nak */ + depctl.d32 = 0; + depctl.b.epena = 1; + depctl.b.cnak = 1; + + DWC_MODIFY_REG32(addr, depctl.d32, depctl.d32); + } +} + +/** + * This function does the setup for a data transfer for an EP and + * starts the transfer. For an IN transfer, the packets will be + * loaded into the appropriate Tx FIFO in the ISR. For OUT transfers, + * the packets are unloaded from the Rx FIFO in the ISR. + * + * @param core_if Programming view of DWC_otg controller. + * @param ep The EP to start the transfer on. + */ + +static void dwc_otg_iso_ep_start_transfer(dwc_otg_core_if_t * core_if, + dwc_ep_t * ep) +{ + if (core_if->dma_enable) { + if (core_if->dma_desc_enable) { + if (ep->is_in) { + ep->desc_cnt = ep->pkt_cnt / ep->pkt_per_frm; + } else { + ep->desc_cnt = ep->pkt_cnt; + } + dwc_otg_iso_ep_start_ddma_transfer(core_if, ep); + } else { + if (core_if->pti_enh_enable) { + dwc_otg_iso_ep_start_buf_transfer(core_if, ep); + } else { + ep->cur_pkt_addr = + (ep->proc_buf_num) ? ep->xfer_buff1 : ep-> + xfer_buff0; + ep->cur_pkt_dma_addr = + (ep->proc_buf_num) ? ep->dma_addr1 : ep-> + dma_addr0; + dwc_otg_iso_ep_start_frm_transfer(core_if, ep); + } + } + } else { + ep->cur_pkt_addr = + (ep->proc_buf_num) ? ep->xfer_buff1 : ep->xfer_buff0; + ep->cur_pkt_dma_addr = + (ep->proc_buf_num) ? ep->dma_addr1 : ep->dma_addr0; + dwc_otg_iso_ep_start_frm_transfer(core_if, ep); + } +} + +/** + * This function stops transfer for an EP and + * resets the ep's variables. + * + * @param core_if Programming view of DWC_otg controller. + * @param ep The EP to start the transfer on. + */ + +void dwc_otg_iso_ep_stop_transfer(dwc_otg_core_if_t * core_if, dwc_ep_t * ep) +{ + depctl_data_t depctl = {.d32 = 0 }; + volatile uint32_t *addr; + + if (ep->is_in == 1) { + addr = &core_if->dev_if->in_ep_regs[ep->num]->diepctl; + } else { + addr = &core_if->dev_if->out_ep_regs[ep->num]->doepctl; + } + + /* disable the ep */ + depctl.d32 = DWC_READ_REG32(addr); + + depctl.b.epdis = 1; + depctl.b.snak = 1; + + DWC_WRITE_REG32(addr, depctl.d32); + + if (core_if->dma_desc_enable && + ep->iso_desc_addr && ep->iso_dma_desc_addr) { + dwc_otg_ep_free_desc_chain(ep->iso_desc_addr, + ep->iso_dma_desc_addr, + ep->desc_cnt * 2); + } + + /* reset varibales */ + ep->dma_addr0 = 0; + ep->dma_addr1 = 0; + ep->xfer_buff0 = 0; + ep->xfer_buff1 = 0; + ep->data_per_frame = 0; + ep->data_pattern_frame = 0; + ep->sync_frame = 0; + ep->buf_proc_intrvl = 0; + ep->bInterval = 0; + ep->proc_buf_num = 0; + ep->pkt_per_frm = 0; + ep->pkt_per_frm = 0; + ep->desc_cnt = 0; + ep->iso_desc_addr = 0; + ep->iso_dma_desc_addr = 0; +} + +int dwc_otg_pcd_iso_ep_start(dwc_otg_pcd_t * pcd, void *ep_handle, + uint8_t * buf0, uint8_t * buf1, dwc_dma_t dma0, + dwc_dma_t dma1, int sync_frame, int dp_frame, + int data_per_frame, int start_frame, + int buf_proc_intrvl, void *req_handle, + int atomic_alloc) +{ + dwc_otg_pcd_ep_t *ep; + dwc_irqflags_t flags = 0; + dwc_ep_t *dwc_ep; + int32_t frm_data; + dsts_data_t dsts; + dwc_otg_core_if_t *core_if; + + ep = get_ep_from_handle(pcd, ep_handle); + + if (!ep || !ep->desc || ep->dwc_ep.num == 0) { + DWC_WARN("bad ep\n"); + return -DWC_E_INVALID; + } + + DWC_SPINLOCK_IRQSAVE(pcd->lock, &flags); + core_if = GET_CORE_IF(pcd); + dwc_ep = &ep->dwc_ep; + + if (ep->iso_req_handle) { + DWC_WARN("ISO request in progress\n"); + } + + dwc_ep->dma_addr0 = dma0; + dwc_ep->dma_addr1 = dma1; + + dwc_ep->xfer_buff0 = buf0; + dwc_ep->xfer_buff1 = buf1; + + dwc_ep->data_per_frame = data_per_frame; + + /** @todo - pattern data support is to be implemented in the future */ + dwc_ep->data_pattern_frame = dp_frame; + dwc_ep->sync_frame = sync_frame; + + dwc_ep->buf_proc_intrvl = buf_proc_intrvl; + + dwc_ep->bInterval = 1 << (ep->desc->bInterval - 1); + + dwc_ep->proc_buf_num = 0; + + dwc_ep->pkt_per_frm = 0; + frm_data = ep->dwc_ep.data_per_frame; + while (frm_data > 0) { + dwc_ep->pkt_per_frm++; + frm_data -= ep->dwc_ep.maxpacket; + } + + dsts.d32 = DWC_READ_REG32(&core_if->dev_if->dev_global_regs->dsts); + + if (start_frame == -1) { + dwc_ep->next_frame = dsts.b.soffn + 1; + if (dwc_ep->bInterval != 1) { + dwc_ep->next_frame = + dwc_ep->next_frame + (dwc_ep->bInterval - 1 - + dwc_ep->next_frame % + dwc_ep->bInterval); + } + } else { + dwc_ep->next_frame = start_frame; + } + + if (!core_if->pti_enh_enable) { + dwc_ep->pkt_cnt = + dwc_ep->buf_proc_intrvl * dwc_ep->pkt_per_frm / + dwc_ep->bInterval; + } else { + dwc_ep->pkt_cnt = + (dwc_ep->data_per_frame * + (dwc_ep->buf_proc_intrvl / dwc_ep->bInterval) + - 1 + dwc_ep->maxpacket) / dwc_ep->maxpacket; + } + + if (core_if->dma_desc_enable) { + dwc_ep->desc_cnt = + dwc_ep->buf_proc_intrvl * dwc_ep->pkt_per_frm / + dwc_ep->bInterval; + } + + if (atomic_alloc) { + dwc_ep->pkt_info = + DWC_ALLOC_ATOMIC(sizeof(iso_pkt_info_t) * dwc_ep->pkt_cnt); + } else { + dwc_ep->pkt_info = + DWC_ALLOC(sizeof(iso_pkt_info_t) * dwc_ep->pkt_cnt); + } + if (!dwc_ep->pkt_info) { + DWC_SPINUNLOCK_IRQRESTORE(pcd->lock, flags); + return -DWC_E_NO_MEMORY; + } + if (core_if->pti_enh_enable) { + dwc_memset(dwc_ep->pkt_info, 0, + sizeof(iso_pkt_info_t) * dwc_ep->pkt_cnt); + } + + dwc_ep->cur_pkt = 0; + ep->iso_req_handle = req_handle; + + DWC_SPINUNLOCK_IRQRESTORE(pcd->lock, flags); + dwc_otg_iso_ep_start_transfer(core_if, dwc_ep); + return 0; +} + +int dwc_otg_pcd_iso_ep_stop(dwc_otg_pcd_t * pcd, void *ep_handle, + void *req_handle) +{ + dwc_irqflags_t flags = 0; + dwc_otg_pcd_ep_t *ep; + dwc_ep_t *dwc_ep; + + ep = get_ep_from_handle(pcd, ep_handle); + if (!ep || !ep->desc || ep->dwc_ep.num == 0) { + DWC_WARN("bad ep\n"); + return -DWC_E_INVALID; + } + dwc_ep = &ep->dwc_ep; + + dwc_otg_iso_ep_stop_transfer(GET_CORE_IF(pcd), dwc_ep); + + DWC_FREE(dwc_ep->pkt_info); + DWC_SPINLOCK_IRQSAVE(pcd->lock, &flags); + if (ep->iso_req_handle != req_handle) { + DWC_SPINUNLOCK_IRQRESTORE(pcd->lock, flags); + return -DWC_E_INVALID; + } + + DWC_SPINUNLOCK_IRQRESTORE(pcd->lock, flags); + + ep->iso_req_handle = 0; + return 0; +} + +/** + * This function is used for perodical data exchnage between PCD and gadget drivers. + * for Isochronous EPs + * + * - Every time a sync period completes this function is called to + * perform data exchange between PCD and gadget + */ +void dwc_otg_iso_buffer_done(dwc_otg_pcd_t * pcd, dwc_otg_pcd_ep_t * ep, + void *req_handle) +{ + int i; + dwc_ep_t *dwc_ep; + + dwc_ep = &ep->dwc_ep; + + DWC_SPINUNLOCK(ep->pcd->lock); + pcd->fops->isoc_complete(pcd, ep->priv, ep->iso_req_handle, + dwc_ep->proc_buf_num ^ 0x1); + DWC_SPINLOCK(ep->pcd->lock); + + for (i = 0; i < dwc_ep->pkt_cnt; ++i) { + dwc_ep->pkt_info[i].status = 0; + dwc_ep->pkt_info[i].offset = 0; + dwc_ep->pkt_info[i].length = 0; + } +} + +int dwc_otg_pcd_get_iso_packet_count(dwc_otg_pcd_t * pcd, void *ep_handle, + void *iso_req_handle) +{ + dwc_otg_pcd_ep_t *ep; + dwc_ep_t *dwc_ep; + + ep = get_ep_from_handle(pcd, ep_handle); + if (!ep->desc || ep->dwc_ep.num == 0) { + DWC_WARN("bad ep\n"); + return -DWC_E_INVALID; + } + dwc_ep = &ep->dwc_ep; + + return dwc_ep->pkt_cnt; +} + +void dwc_otg_pcd_get_iso_packet_params(dwc_otg_pcd_t * pcd, void *ep_handle, + void *iso_req_handle, int packet, + int *status, int *actual, int *offset) +{ + dwc_otg_pcd_ep_t *ep; + dwc_ep_t *dwc_ep; + + ep = get_ep_from_handle(pcd, ep_handle); + if (!ep) + DWC_WARN("bad ep\n"); + + dwc_ep = &ep->dwc_ep; + + *status = dwc_ep->pkt_info[packet].status; + *actual = dwc_ep->pkt_info[packet].length; + *offset = dwc_ep->pkt_info[packet].offset; +} + +#endif /* DWC_EN_ISOC */ + +static void dwc_otg_pcd_init_ep(dwc_otg_pcd_t * pcd, dwc_otg_pcd_ep_t * pcd_ep, + uint32_t is_in, uint32_t ep_num) +{ + /* Init EP structure */ + pcd_ep->desc = 0; + pcd_ep->pcd = pcd; + pcd_ep->stopped = 1; + pcd_ep->queue_sof = 0; + + /* Init DWC ep structure */ + pcd_ep->dwc_ep.is_in = is_in; + pcd_ep->dwc_ep.num = ep_num; + pcd_ep->dwc_ep.active = 0; + pcd_ep->dwc_ep.tx_fifo_num = 0; + /* Control until ep is actvated */ + pcd_ep->dwc_ep.type = DWC_OTG_EP_TYPE_CONTROL; + pcd_ep->dwc_ep.maxpacket = MAX_PACKET_SIZE; + pcd_ep->dwc_ep.dma_addr = 0; + pcd_ep->dwc_ep.start_xfer_buff = 0; + pcd_ep->dwc_ep.xfer_buff = 0; + pcd_ep->dwc_ep.xfer_len = 0; + pcd_ep->dwc_ep.xfer_count = 0; + pcd_ep->dwc_ep.sent_zlp = 0; + pcd_ep->dwc_ep.total_len = 0; + pcd_ep->dwc_ep.desc_addr = 0; + pcd_ep->dwc_ep.dma_desc_addr = 0; + DWC_CIRCLEQ_INIT(&pcd_ep->queue); +} + +/** + * Initialize ep's + */ +static void dwc_otg_pcd_reinit(dwc_otg_pcd_t * pcd) +{ + int i; + uint32_t hwcfg1; + dwc_otg_pcd_ep_t *ep; + int in_ep_cntr, out_ep_cntr; + uint32_t num_in_eps = (GET_CORE_IF(pcd))->dev_if->num_in_eps; + uint32_t num_out_eps = (GET_CORE_IF(pcd))->dev_if->num_out_eps; + + /** + * Initialize the EP0 structure. + */ + ep = &pcd->ep0; + dwc_otg_pcd_init_ep(pcd, ep, 0, 0); + + in_ep_cntr = 0; + hwcfg1 = (GET_CORE_IF(pcd))->hwcfg1.d32 >> 3; + for (i = 1; in_ep_cntr < num_in_eps; i++) { + if ((hwcfg1 & 0x1) == 0) { + dwc_otg_pcd_ep_t *ep = &pcd->in_ep[in_ep_cntr]; + in_ep_cntr++; + /** + * @todo NGS: Add direction to EP, based on contents + * of HWCFG1. Need a copy of HWCFG1 in pcd structure? + * sprintf(";r + */ + dwc_otg_pcd_init_ep(pcd, ep, 1 /* IN */ , i); + + DWC_CIRCLEQ_INIT(&ep->queue); + } + hwcfg1 >>= 2; + } + + out_ep_cntr = 0; + hwcfg1 = (GET_CORE_IF(pcd))->hwcfg1.d32 >> 2; + for (i = 1; out_ep_cntr < num_out_eps; i++) { + if ((hwcfg1 & 0x1) == 0) { + dwc_otg_pcd_ep_t *ep = &pcd->out_ep[out_ep_cntr]; + out_ep_cntr++; + /** + * @todo NGS: Add direction to EP, based on contents + * of HWCFG1. Need a copy of HWCFG1 in pcd structure? + * sprintf(";r + */ + dwc_otg_pcd_init_ep(pcd, ep, 0 /* OUT */ , i); + DWC_CIRCLEQ_INIT(&ep->queue); + } + hwcfg1 >>= 2; + } + + pcd->ep0state = EP0_DISCONNECT; + pcd->ep0.dwc_ep.maxpacket = MAX_EP0_SIZE; + pcd->ep0.dwc_ep.type = DWC_OTG_EP_TYPE_CONTROL; +} + +/** + * This function is called when the SRP timer expires. The SRP should + * complete within 6 seconds. + */ +static void srp_timeout(void *ptr) +{ + gotgctl_data_t gotgctl; + dwc_otg_core_if_t *core_if = (dwc_otg_core_if_t *) ptr; + volatile uint32_t *addr = &core_if->core_global_regs->gotgctl; + + gotgctl.d32 = DWC_READ_REG32(addr); + + core_if->srp_timer_started = 0; + + if (core_if->adp_enable) { + if (gotgctl.b.bsesvld == 0) { + gpwrdn_data_t gpwrdn = {.d32 = 0 }; + DWC_PRINTF("SRP Timeout BSESSVLD = 0\n"); + /* Power off the core */ + if (core_if->power_down == 2) { + gpwrdn.b.pwrdnswtch = 1; + DWC_MODIFY_REG32(&core_if-> + core_global_regs->gpwrdn, + gpwrdn.d32, 0); + } + + gpwrdn.d32 = 0; + gpwrdn.b.pmuintsel = 1; + gpwrdn.b.pmuactv = 1; + DWC_MODIFY_REG32(&core_if->core_global_regs->gpwrdn, 0, + gpwrdn.d32); + dwc_otg_adp_probe_start(core_if); + } else { + DWC_PRINTF("SRP Timeout BSESSVLD = 1\n"); + core_if->op_state = B_PERIPHERAL; + dwc_otg_core_init(core_if); + dwc_otg_enable_global_interrupts(core_if); + cil_pcd_start(core_if); + } + } + + if ((core_if->core_params->phy_type == DWC_PHY_TYPE_PARAM_FS) && + (core_if->core_params->i2c_enable)) { + DWC_PRINTF("SRP Timeout\n"); + + if ((core_if->srp_success) && (gotgctl.b.bsesvld)) { + if (core_if->pcd_cb && core_if->pcd_cb->resume_wakeup) { + core_if->pcd_cb->resume_wakeup(core_if->pcd_cb->p); + } + + /* Clear Session Request */ + gotgctl.d32 = 0; + gotgctl.b.sesreq = 1; + DWC_MODIFY_REG32(&core_if->core_global_regs->gotgctl, + gotgctl.d32, 0); + + core_if->srp_success = 0; + } else { + __DWC_ERROR("Device not connected/responding\n"); + gotgctl.b.sesreq = 0; + DWC_WRITE_REG32(addr, gotgctl.d32); + } + } else if (gotgctl.b.sesreq) { + DWC_PRINTF("SRP Timeout\n"); + + __DWC_ERROR("Device not connected/responding\n"); + gotgctl.b.sesreq = 0; + DWC_WRITE_REG32(addr, gotgctl.d32); + } else { + DWC_PRINTF(" SRP GOTGCTL=%0x\n", gotgctl.d32); + } +} + +/** + * Tasklet + * + */ +extern void start_next_request(dwc_otg_pcd_ep_t * ep); + +static void start_xfer_tasklet_func(void *data) +{ + dwc_otg_pcd_t *pcd = (dwc_otg_pcd_t *) data; + dwc_otg_core_if_t *core_if = GET_CORE_IF(pcd); + + int i; + depctl_data_t diepctl; + + DWC_DEBUGPL(DBG_PCDV, "Start xfer tasklet\n"); + + diepctl.d32 = DWC_READ_REG32(&core_if->dev_if->in_ep_regs[0]->diepctl); + + if (pcd->ep0.queue_sof) { + pcd->ep0.queue_sof = 0; + start_next_request(&pcd->ep0); + // break; + } + + for (i = 0; i < core_if->dev_if->num_in_eps; i++) { + depctl_data_t diepctl; + diepctl.d32 = + DWC_READ_REG32(&core_if->dev_if->in_ep_regs[i]->diepctl); + + if (pcd->in_ep[i].queue_sof) { + pcd->in_ep[i].queue_sof = 0; + start_next_request(&pcd->in_ep[i]); + // break; + } + } + + return; +} + +/** + * This function initialized the PCD portion of the driver. + * + */ +dwc_otg_pcd_t *dwc_otg_pcd_init(dwc_otg_core_if_t * core_if) +{ + dwc_otg_pcd_t *pcd = NULL; + dwc_otg_dev_if_t *dev_if; + int i; + + /* + * Allocate PCD structure + */ + pcd = DWC_ALLOC(sizeof(dwc_otg_pcd_t)); + + if (pcd == NULL) { + return NULL; + } + +#if (defined(DWC_LINUX) && defined(CONFIG_DEBUG_SPINLOCK)) + DWC_SPINLOCK_ALLOC_LINUX_DEBUG(pcd->lock); +#else + pcd->lock = DWC_SPINLOCK_ALLOC(); +#endif + DWC_DEBUGPL(DBG_HCDV, "Init of PCD %p given core_if %p\n", + pcd, core_if);//GRAYG + if (!pcd->lock) { + DWC_ERROR("Could not allocate lock for pcd"); + DWC_FREE(pcd); + return NULL; + } + /* Set core_if's lock pointer to hcd->lock */ + core_if->lock = pcd->lock; + pcd->core_if = core_if; + + dev_if = core_if->dev_if; + dev_if->isoc_ep = NULL; + + if (core_if->hwcfg4.b.ded_fifo_en) { + DWC_PRINTF("Dedicated Tx FIFOs mode\n"); + } else { + DWC_PRINTF("Shared Tx FIFO mode\n"); + } + + /* + * Initialized the Core for Device mode here if there is nod ADP support. + * Otherwise it will be done later in dwc_otg_adp_start routine. + */ + if (dwc_otg_is_device_mode(core_if) /*&& !core_if->adp_enable*/) { + dwc_otg_core_dev_init(core_if); + } + + /* + * Register the PCD Callbacks. + */ + dwc_otg_cil_register_pcd_callbacks(core_if, &pcd_callbacks, pcd); + + /* + * Initialize the DMA buffer for SETUP packets + */ + if (GET_CORE_IF(pcd)->dma_enable) { + pcd->setup_pkt = + DWC_DMA_ALLOC(sizeof(*pcd->setup_pkt) * 5, + &pcd->setup_pkt_dma_handle); + if (pcd->setup_pkt == NULL) { + DWC_FREE(pcd); + return NULL; + } + + pcd->status_buf = + DWC_DMA_ALLOC(sizeof(uint16_t), + &pcd->status_buf_dma_handle); + if (pcd->status_buf == NULL) { + DWC_DMA_FREE(sizeof(*pcd->setup_pkt) * 5, + pcd->setup_pkt, pcd->setup_pkt_dma_handle); + DWC_FREE(pcd); + return NULL; + } + + if (GET_CORE_IF(pcd)->dma_desc_enable) { + dev_if->setup_desc_addr[0] = + dwc_otg_ep_alloc_desc_chain + (&dev_if->dma_setup_desc_addr[0], 1); + dev_if->setup_desc_addr[1] = + dwc_otg_ep_alloc_desc_chain + (&dev_if->dma_setup_desc_addr[1], 1); + dev_if->in_desc_addr = + dwc_otg_ep_alloc_desc_chain + (&dev_if->dma_in_desc_addr, 1); + dev_if->out_desc_addr = + dwc_otg_ep_alloc_desc_chain + (&dev_if->dma_out_desc_addr, 1); + pcd->data_terminated = 0; + + if (dev_if->setup_desc_addr[0] == 0 + || dev_if->setup_desc_addr[1] == 0 + || dev_if->in_desc_addr == 0 + || dev_if->out_desc_addr == 0) { + + if (dev_if->out_desc_addr) + dwc_otg_ep_free_desc_chain + (dev_if->out_desc_addr, + dev_if->dma_out_desc_addr, 1); + if (dev_if->in_desc_addr) + dwc_otg_ep_free_desc_chain + (dev_if->in_desc_addr, + dev_if->dma_in_desc_addr, 1); + if (dev_if->setup_desc_addr[1]) + dwc_otg_ep_free_desc_chain + (dev_if->setup_desc_addr[1], + dev_if->dma_setup_desc_addr[1], 1); + if (dev_if->setup_desc_addr[0]) + dwc_otg_ep_free_desc_chain + (dev_if->setup_desc_addr[0], + dev_if->dma_setup_desc_addr[0], 1); + + DWC_DMA_FREE(sizeof(*pcd->setup_pkt) * 5, + pcd->setup_pkt, + pcd->setup_pkt_dma_handle); + DWC_DMA_FREE(sizeof(*pcd->status_buf), + pcd->status_buf, + pcd->status_buf_dma_handle); + + DWC_FREE(pcd); + + return NULL; + } + } + } else { + pcd->setup_pkt = DWC_ALLOC(sizeof(*pcd->setup_pkt) * 5); + if (pcd->setup_pkt == NULL) { + DWC_FREE(pcd); + return NULL; + } + + pcd->status_buf = DWC_ALLOC(sizeof(uint16_t)); + if (pcd->status_buf == NULL) { + DWC_FREE(pcd->setup_pkt); + DWC_FREE(pcd); + return NULL; + } + } + + dwc_otg_pcd_reinit(pcd); + + /* Allocate the cfi object for the PCD */ +#ifdef DWC_UTE_CFI + pcd->cfi = DWC_ALLOC(sizeof(cfiobject_t)); + if (NULL == pcd->cfi) + goto fail; + if (init_cfi(pcd->cfi)) { + CFI_INFO("%s: Failed to init the CFI object\n", __func__); + goto fail; + } +#endif + + /* Initialize tasklets */ + pcd->start_xfer_tasklet = DWC_TASK_ALLOC("xfer_tasklet", + start_xfer_tasklet_func, pcd); + pcd->test_mode_tasklet = DWC_TASK_ALLOC("test_mode_tasklet", + do_test_mode, pcd); + + /* Initialize SRP timer */ + core_if->srp_timer = DWC_TIMER_ALLOC("SRP TIMER", srp_timeout, core_if); + + if (core_if->core_params->dev_out_nak) { + /** + * Initialize xfer timeout timer. Implemented for + * 2.93a feature "Device DDMA OUT NAK Enhancement" + */ + for(i = 0; i < MAX_EPS_CHANNELS; i++) { + pcd->core_if->ep_xfer_timer[i] = + DWC_TIMER_ALLOC("ep timer", ep_xfer_timeout, + &pcd->core_if->ep_xfer_info[i]); + } + } + + return pcd; +#ifdef DWC_UTE_CFI +fail: +#endif + if (pcd->setup_pkt) + DWC_FREE(pcd->setup_pkt); + if (pcd->status_buf) + DWC_FREE(pcd->status_buf); +#ifdef DWC_UTE_CFI + if (pcd->cfi) + DWC_FREE(pcd->cfi); +#endif + if (pcd) + DWC_FREE(pcd); + return NULL; + +} + +/** + * Remove PCD specific data + */ +void dwc_otg_pcd_remove(dwc_otg_pcd_t * pcd) +{ + dwc_otg_dev_if_t *dev_if = GET_CORE_IF(pcd)->dev_if; + int i; + if (pcd->core_if->core_params->dev_out_nak) { + for (i = 0; i < MAX_EPS_CHANNELS; i++) { + DWC_TIMER_CANCEL(pcd->core_if->ep_xfer_timer[i]); + pcd->core_if->ep_xfer_info[i].state = 0; + } + } + + if (GET_CORE_IF(pcd)->dma_enable) { + DWC_DMA_FREE(sizeof(*pcd->setup_pkt) * 5, pcd->setup_pkt, + pcd->setup_pkt_dma_handle); + DWC_DMA_FREE(sizeof(uint16_t), pcd->status_buf, + pcd->status_buf_dma_handle); + if (GET_CORE_IF(pcd)->dma_desc_enable) { + dwc_otg_ep_free_desc_chain(dev_if->setup_desc_addr[0], + dev_if->dma_setup_desc_addr + [0], 1); + dwc_otg_ep_free_desc_chain(dev_if->setup_desc_addr[1], + dev_if->dma_setup_desc_addr + [1], 1); + dwc_otg_ep_free_desc_chain(dev_if->in_desc_addr, + dev_if->dma_in_desc_addr, 1); + dwc_otg_ep_free_desc_chain(dev_if->out_desc_addr, + dev_if->dma_out_desc_addr, + 1); + } + } else { + DWC_FREE(pcd->setup_pkt); + DWC_FREE(pcd->status_buf); + } + DWC_SPINLOCK_FREE(pcd->lock); + /* Set core_if's lock pointer to NULL */ + pcd->core_if->lock = NULL; + + DWC_TASK_FREE(pcd->start_xfer_tasklet); + DWC_TASK_FREE(pcd->test_mode_tasklet); + if (pcd->core_if->core_params->dev_out_nak) { + for (i = 0; i < MAX_EPS_CHANNELS; i++) { + if (pcd->core_if->ep_xfer_timer[i]) { + DWC_TIMER_FREE(pcd->core_if->ep_xfer_timer[i]); + } + } + } + +/* Release the CFI object's dynamic memory */ +#ifdef DWC_UTE_CFI + if (pcd->cfi->ops.release) { + pcd->cfi->ops.release(pcd->cfi); + } +#endif + + DWC_FREE(pcd); +} + +/** + * Returns whether registered pcd is dual speed or not + */ +uint32_t dwc_otg_pcd_is_dualspeed(dwc_otg_pcd_t * pcd) +{ + dwc_otg_core_if_t *core_if = GET_CORE_IF(pcd); + + if ((core_if->core_params->speed == DWC_SPEED_PARAM_FULL) || + ((core_if->hwcfg2.b.hs_phy_type == 2) && + (core_if->hwcfg2.b.fs_phy_type == 1) && + (core_if->core_params->ulpi_fs_ls))) { + return 0; + } + + return 1; +} + +/** + * Returns whether registered pcd is OTG capable or not + */ +uint32_t dwc_otg_pcd_is_otg(dwc_otg_pcd_t * pcd) +{ + dwc_otg_core_if_t *core_if = GET_CORE_IF(pcd); + gusbcfg_data_t usbcfg = {.d32 = 0 }; + + usbcfg.d32 = DWC_READ_REG32(&core_if->core_global_regs->gusbcfg); + if (!usbcfg.b.srpcap || !usbcfg.b.hnpcap) { + return 0; + } + + return 1; +} + +/** + * This function assigns periodic Tx FIFO to an periodic EP + * in shared Tx FIFO mode + */ +static uint32_t assign_tx_fifo(dwc_otg_core_if_t * core_if) +{ + uint32_t TxMsk = 1; + int i; + + for (i = 0; i < core_if->hwcfg4.b.num_in_eps; ++i) { + if ((TxMsk & core_if->tx_msk) == 0) { + core_if->tx_msk |= TxMsk; + return i + 1; + } + TxMsk <<= 1; + } + return 0; +} + +/** + * This function assigns periodic Tx FIFO to an periodic EP + * in shared Tx FIFO mode + */ +static uint32_t assign_perio_tx_fifo(dwc_otg_core_if_t * core_if) +{ + uint32_t PerTxMsk = 1; + int i; + for (i = 0; i < core_if->hwcfg4.b.num_dev_perio_in_ep; ++i) { + if ((PerTxMsk & core_if->p_tx_msk) == 0) { + core_if->p_tx_msk |= PerTxMsk; + return i + 1; + } + PerTxMsk <<= 1; + } + return 0; +} + +/** + * This function releases periodic Tx FIFO + * in shared Tx FIFO mode + */ +static void release_perio_tx_fifo(dwc_otg_core_if_t * core_if, + uint32_t fifo_num) +{ + core_if->p_tx_msk = + (core_if->p_tx_msk & (1 << (fifo_num - 1))) ^ core_if->p_tx_msk; +} + +/** + * This function releases periodic Tx FIFO + * in shared Tx FIFO mode + */ +static void release_tx_fifo(dwc_otg_core_if_t * core_if, uint32_t fifo_num) +{ + core_if->tx_msk = + (core_if->tx_msk & (1 << (fifo_num - 1))) ^ core_if->tx_msk; +} + +/** + * This function is being called from gadget + * to enable PCD endpoint. + */ +int dwc_otg_pcd_ep_enable(dwc_otg_pcd_t * pcd, + const uint8_t * ep_desc, void *usb_ep) +{ + int num, dir; + dwc_otg_pcd_ep_t *ep = NULL; + const usb_endpoint_descriptor_t *desc; + dwc_irqflags_t flags; + fifosize_data_t dptxfsiz = {.d32 = 0 }; + gdfifocfg_data_t gdfifocfg = {.d32 = 0 }; + gdfifocfg_data_t gdfifocfgbase = {.d32 = 0 }; + int retval = 0; + int i, epcount; + + desc = (const usb_endpoint_descriptor_t *)ep_desc; + + if (!desc) { + pcd->ep0.priv = usb_ep; + ep = &pcd->ep0; + retval = -DWC_E_INVALID; + goto out; + } + + num = UE_GET_ADDR(desc->bEndpointAddress); + dir = UE_GET_DIR(desc->bEndpointAddress); + + if (!desc->wMaxPacketSize) { + DWC_WARN("bad maxpacketsize\n"); + retval = -DWC_E_INVALID; + goto out; + } + + if (dir == UE_DIR_IN) { + epcount = pcd->core_if->dev_if->num_in_eps; + for (i = 0; i < epcount; i++) { + if (num == pcd->in_ep[i].dwc_ep.num) { + ep = &pcd->in_ep[i]; + break; + } + } + } else { + epcount = pcd->core_if->dev_if->num_out_eps; + for (i = 0; i < epcount; i++) { + if (num == pcd->out_ep[i].dwc_ep.num) { + ep = &pcd->out_ep[i]; + break; + } + } + } + + if (!ep) { + DWC_WARN("bad address\n"); + retval = -DWC_E_INVALID; + goto out; + } + + DWC_SPINLOCK_IRQSAVE(pcd->lock, &flags); + + ep->desc = desc; + ep->priv = usb_ep; + + /* + * Activate the EP + */ + ep->stopped = 0; + + ep->dwc_ep.is_in = (dir == UE_DIR_IN); + ep->dwc_ep.maxpacket = UGETW(desc->wMaxPacketSize); + + ep->dwc_ep.type = desc->bmAttributes & UE_XFERTYPE; + + if (ep->dwc_ep.is_in) { + if (!GET_CORE_IF(pcd)->en_multiple_tx_fifo) { + ep->dwc_ep.tx_fifo_num = 0; + + if (ep->dwc_ep.type == UE_ISOCHRONOUS) { + /* + * if ISOC EP then assign a Periodic Tx FIFO. + */ + ep->dwc_ep.tx_fifo_num = + assign_perio_tx_fifo(GET_CORE_IF(pcd)); + } + } else { + /* + * if Dedicated FIFOs mode is on then assign a Tx FIFO. + */ + ep->dwc_ep.tx_fifo_num = + assign_tx_fifo(GET_CORE_IF(pcd)); + } + + /* Calculating EP info controller base address */ + if (ep->dwc_ep.tx_fifo_num + && GET_CORE_IF(pcd)->en_multiple_tx_fifo) { + gdfifocfg.d32 = + DWC_READ_REG32(&GET_CORE_IF(pcd)-> + core_global_regs->gdfifocfg); + gdfifocfgbase.d32 = gdfifocfg.d32 >> 16; + dptxfsiz.d32 = + (DWC_READ_REG32 + (&GET_CORE_IF(pcd)->core_global_regs-> + dtxfsiz[ep->dwc_ep.tx_fifo_num - 1]) >> 16); + gdfifocfg.b.epinfobase = + gdfifocfgbase.d32 + dptxfsiz.d32; + if (GET_CORE_IF(pcd)->snpsid <= OTG_CORE_REV_2_94a) { + DWC_WRITE_REG32(&GET_CORE_IF(pcd)-> + core_global_regs->gdfifocfg, + gdfifocfg.d32); + } + } + } + /* Set initial data PID. */ + if (ep->dwc_ep.type == UE_BULK) { + ep->dwc_ep.data_pid_start = 0; + } + + /* Alloc DMA Descriptors */ + if (GET_CORE_IF(pcd)->dma_desc_enable) { +#ifndef DWC_UTE_PER_IO + if (ep->dwc_ep.type != UE_ISOCHRONOUS) { +#endif + ep->dwc_ep.desc_addr = + dwc_otg_ep_alloc_desc_chain(&ep-> + dwc_ep.dma_desc_addr, + MAX_DMA_DESC_CNT); + if (!ep->dwc_ep.desc_addr) { + DWC_WARN("%s, can't allocate DMA descriptor\n", + __func__); + retval = -DWC_E_SHUTDOWN; + DWC_SPINUNLOCK_IRQRESTORE(pcd->lock, flags); + goto out; + } +#ifndef DWC_UTE_PER_IO + } +#endif + } + + DWC_DEBUGPL(DBG_PCD, "Activate %s: type=%d, mps=%d desc=%p\n", + (ep->dwc_ep.is_in ? "IN" : "OUT"), + ep->dwc_ep.type, ep->dwc_ep.maxpacket, ep->desc); +#ifdef DWC_UTE_PER_IO + ep->dwc_ep.xiso_bInterval = 1 << (ep->desc->bInterval - 1); +#endif + if (ep->dwc_ep.type == DWC_OTG_EP_TYPE_ISOC) { + ep->dwc_ep.bInterval = 1 << (ep->desc->bInterval - 1); + ep->dwc_ep.frame_num = 0xFFFFFFFF; + } + + dwc_otg_ep_activate(GET_CORE_IF(pcd), &ep->dwc_ep); + +#ifdef DWC_UTE_CFI + if (pcd->cfi->ops.ep_enable) { + pcd->cfi->ops.ep_enable(pcd->cfi, pcd, ep); + } +#endif + + DWC_SPINUNLOCK_IRQRESTORE(pcd->lock, flags); + +out: + return retval; +} + +/** + * This function is being called from gadget + * to disable PCD endpoint. + */ +int dwc_otg_pcd_ep_disable(dwc_otg_pcd_t * pcd, void *ep_handle) +{ + dwc_otg_pcd_ep_t *ep; + dwc_irqflags_t flags; + dwc_otg_dev_dma_desc_t *desc_addr; + dwc_dma_t dma_desc_addr; + gdfifocfg_data_t gdfifocfgbase = {.d32 = 0 }; + gdfifocfg_data_t gdfifocfg = {.d32 = 0 }; + fifosize_data_t dptxfsiz = {.d32 = 0 }; + + ep = get_ep_from_handle(pcd, ep_handle); + + if (!ep || !ep->desc) { + DWC_DEBUGPL(DBG_PCD, "bad ep address\n"); + return -DWC_E_INVALID; + } + + DWC_SPINLOCK_IRQSAVE(pcd->lock, &flags); + + dwc_otg_request_nuke(ep); + + dwc_otg_ep_deactivate(GET_CORE_IF(pcd), &ep->dwc_ep); + if (pcd->core_if->core_params->dev_out_nak) { + DWC_TIMER_CANCEL(pcd->core_if->ep_xfer_timer[ep->dwc_ep.num]); + pcd->core_if->ep_xfer_info[ep->dwc_ep.num].state = 0; + } + ep->desc = NULL; + ep->stopped = 1; + + gdfifocfg.d32 = + DWC_READ_REG32(&GET_CORE_IF(pcd)->core_global_regs->gdfifocfg); + gdfifocfgbase.d32 = gdfifocfg.d32 >> 16; + + if (ep->dwc_ep.is_in) { + if (GET_CORE_IF(pcd)->en_multiple_tx_fifo) { + /* Flush the Tx FIFO */ + dwc_otg_flush_tx_fifo(GET_CORE_IF(pcd), + ep->dwc_ep.tx_fifo_num); + } + release_perio_tx_fifo(GET_CORE_IF(pcd), ep->dwc_ep.tx_fifo_num); + release_tx_fifo(GET_CORE_IF(pcd), ep->dwc_ep.tx_fifo_num); + if (GET_CORE_IF(pcd)->en_multiple_tx_fifo) { + /* Decreasing EPinfo Base Addr */ + dptxfsiz.d32 = + (DWC_READ_REG32 + (&GET_CORE_IF(pcd)-> + core_global_regs->dtxfsiz[ep->dwc_ep.tx_fifo_num-1]) >> 16); + gdfifocfg.b.epinfobase = gdfifocfgbase.d32 - dptxfsiz.d32; + if (GET_CORE_IF(pcd)->snpsid <= OTG_CORE_REV_2_94a) { + DWC_WRITE_REG32(&GET_CORE_IF(pcd)->core_global_regs->gdfifocfg, + gdfifocfg.d32); + } + } + } + + /* Free DMA Descriptors */ + if (GET_CORE_IF(pcd)->dma_desc_enable) { + if (ep->dwc_ep.type != UE_ISOCHRONOUS) { + desc_addr = ep->dwc_ep.desc_addr; + dma_desc_addr = ep->dwc_ep.dma_desc_addr; + + /* Cannot call dma_free_coherent() with IRQs disabled */ + DWC_SPINUNLOCK_IRQRESTORE(pcd->lock, flags); + dwc_otg_ep_free_desc_chain(desc_addr, dma_desc_addr, + MAX_DMA_DESC_CNT); + + goto out_unlocked; + } + } + DWC_SPINUNLOCK_IRQRESTORE(pcd->lock, flags); + +out_unlocked: + DWC_DEBUGPL(DBG_PCD, "%d %s disabled\n", ep->dwc_ep.num, + ep->dwc_ep.is_in ? "IN" : "OUT"); + return 0; + +} + +/******************************************************************************/ +#ifdef DWC_UTE_PER_IO + +/** + * Free the request and its extended parts + * + */ +void dwc_pcd_xiso_ereq_free(dwc_otg_pcd_ep_t * ep, dwc_otg_pcd_request_t * req) +{ + DWC_FREE(req->ext_req.per_io_frame_descs); + DWC_FREE(req); +} + +/** + * Start the next request in the endpoint's queue. + * + */ +int dwc_otg_pcd_xiso_start_next_request(dwc_otg_pcd_t * pcd, + dwc_otg_pcd_ep_t * ep) +{ + int i; + dwc_otg_pcd_request_t *req = NULL; + dwc_ep_t *dwcep = NULL; + struct dwc_iso_xreq_port *ereq = NULL; + struct dwc_iso_pkt_desc_port *ddesc_iso; + uint16_t nat; + depctl_data_t diepctl; + + dwcep = &ep->dwc_ep; + + if (dwcep->xiso_active_xfers > 0) { +#if 0 //Disable this to decrease s/w overhead that is crucial for Isoc transfers + DWC_WARN("There are currently active transfers for EP%d \ + (active=%d; queued=%d)", dwcep->num, dwcep->xiso_active_xfers, + dwcep->xiso_queued_xfers); +#endif + return 0; + } + + nat = UGETW(ep->desc->wMaxPacketSize); + nat = (nat >> 11) & 0x03; + + if (!DWC_CIRCLEQ_EMPTY(&ep->queue)) { + req = DWC_CIRCLEQ_FIRST(&ep->queue); + ereq = &req->ext_req; + ep->stopped = 0; + + /* Get the frame number */ + dwcep->xiso_frame_num = + dwc_otg_get_frame_number(GET_CORE_IF(pcd)); + DWC_DEBUG("FRM_NUM=%d", dwcep->xiso_frame_num); + + ddesc_iso = ereq->per_io_frame_descs; + + if (dwcep->is_in) { + /* Setup DMA Descriptor chain for IN Isoc request */ + for (i = 0; i < ereq->pio_pkt_count; i++) { + //if ((i % (nat + 1)) == 0) + if ( i > 0 ) + dwcep->xiso_frame_num = + (dwcep->xiso_bInterval + + dwcep->xiso_frame_num) & 0x3FFF; + dwcep->desc_addr[i].buf = + req->dma + ddesc_iso[i].offset; + dwcep->desc_addr[i].status.b_iso_in.txbytes = + ddesc_iso[i].length; + dwcep->desc_addr[i].status.b_iso_in.framenum = + dwcep->xiso_frame_num; + dwcep->desc_addr[i].status.b_iso_in.bs = + BS_HOST_READY; + dwcep->desc_addr[i].status.b_iso_in.txsts = 0; + dwcep->desc_addr[i].status.b_iso_in.sp = + (ddesc_iso[i].length % + dwcep->maxpacket) ? 1 : 0; + dwcep->desc_addr[i].status.b_iso_in.ioc = 0; + dwcep->desc_addr[i].status.b_iso_in.pid = nat + 1; + dwcep->desc_addr[i].status.b_iso_in.l = 0; + + /* Process the last descriptor */ + if (i == ereq->pio_pkt_count - 1) { + dwcep->desc_addr[i].status.b_iso_in.ioc = 1; + dwcep->desc_addr[i].status.b_iso_in.l = 1; + } + } + + /* Setup and start the transfer for this endpoint */ + dwcep->xiso_active_xfers++; + DWC_WRITE_REG32(&GET_CORE_IF(pcd)->dev_if-> + in_ep_regs[dwcep->num]->diepdma, + dwcep->dma_desc_addr); + diepctl.d32 = 0; + diepctl.b.epena = 1; + diepctl.b.cnak = 1; + DWC_MODIFY_REG32(&GET_CORE_IF(pcd)->dev_if-> + in_ep_regs[dwcep->num]->diepctl, 0, + diepctl.d32); + } else { + /* Setup DMA Descriptor chain for OUT Isoc request */ + for (i = 0; i < ereq->pio_pkt_count; i++) { + //if ((i % (nat + 1)) == 0) + dwcep->xiso_frame_num = (dwcep->xiso_bInterval + + dwcep->xiso_frame_num) & 0x3FFF; + dwcep->desc_addr[i].buf = + req->dma + ddesc_iso[i].offset; + dwcep->desc_addr[i].status.b_iso_out.rxbytes = + ddesc_iso[i].length; + dwcep->desc_addr[i].status.b_iso_out.framenum = + dwcep->xiso_frame_num; + dwcep->desc_addr[i].status.b_iso_out.bs = + BS_HOST_READY; + dwcep->desc_addr[i].status.b_iso_out.rxsts = 0; + dwcep->desc_addr[i].status.b_iso_out.sp = + (ddesc_iso[i].length % + dwcep->maxpacket) ? 1 : 0; + dwcep->desc_addr[i].status.b_iso_out.ioc = 0; + dwcep->desc_addr[i].status.b_iso_out.pid = nat + 1; + dwcep->desc_addr[i].status.b_iso_out.l = 0; + + /* Process the last descriptor */ + if (i == ereq->pio_pkt_count - 1) { + dwcep->desc_addr[i].status.b_iso_out.ioc = 1; + dwcep->desc_addr[i].status.b_iso_out.l = 1; + } + } + + /* Setup and start the transfer for this endpoint */ + dwcep->xiso_active_xfers++; + DWC_WRITE_REG32(&GET_CORE_IF(pcd)-> + dev_if->out_ep_regs[dwcep->num]-> + doepdma, dwcep->dma_desc_addr); + diepctl.d32 = 0; + diepctl.b.epena = 1; + diepctl.b.cnak = 1; + DWC_MODIFY_REG32(&GET_CORE_IF(pcd)-> + dev_if->out_ep_regs[dwcep->num]-> + doepctl, 0, diepctl.d32); + } + + } else { + ep->stopped = 1; + } + + return 0; +} + +/** + * - Remove the request from the queue + */ +void complete_xiso_ep(dwc_otg_pcd_ep_t * ep) +{ + dwc_otg_pcd_request_t *req = NULL; + struct dwc_iso_xreq_port *ereq = NULL; + struct dwc_iso_pkt_desc_port *ddesc_iso = NULL; + dwc_ep_t *dwcep = NULL; + int i; + + //DWC_DEBUG(); + dwcep = &ep->dwc_ep; + + /* Get the first pending request from the queue */ + if (!DWC_CIRCLEQ_EMPTY(&ep->queue)) { + req = DWC_CIRCLEQ_FIRST(&ep->queue); + if (!req) { + DWC_PRINTF("complete_ep 0x%p, req = NULL!\n", ep); + return; + } + dwcep->xiso_active_xfers--; + dwcep->xiso_queued_xfers--; + /* Remove this request from the queue */ + DWC_CIRCLEQ_REMOVE_INIT(&ep->queue, req, queue_entry); + } else { + DWC_PRINTF("complete_ep 0x%p, ep->queue empty!\n", ep); + return; + } + + ep->stopped = 1; + ereq = &req->ext_req; + ddesc_iso = ereq->per_io_frame_descs; + + if (dwcep->xiso_active_xfers < 0) { + DWC_WARN("EP#%d (xiso_active_xfers=%d)", dwcep->num, + dwcep->xiso_active_xfers); + } + + /* Fill the Isoc descs of portable extended req from dma descriptors */ + for (i = 0; i < ereq->pio_pkt_count; i++) { + if (dwcep->is_in) { /* IN endpoints */ + ddesc_iso[i].actual_length = ddesc_iso[i].length - + dwcep->desc_addr[i].status.b_iso_in.txbytes; + ddesc_iso[i].status = + dwcep->desc_addr[i].status.b_iso_in.txsts; + } else { /* OUT endpoints */ + ddesc_iso[i].actual_length = ddesc_iso[i].length - + dwcep->desc_addr[i].status.b_iso_out.rxbytes; + ddesc_iso[i].status = + dwcep->desc_addr[i].status.b_iso_out.rxsts; + } + } + + DWC_SPINUNLOCK(ep->pcd->lock); + + /* Call the completion function in the non-portable logic */ + ep->pcd->fops->xisoc_complete(ep->pcd, ep->priv, req->priv, 0, + &req->ext_req); + + DWC_SPINLOCK(ep->pcd->lock); + + /* Free the request - specific freeing needed for extended request object */ + dwc_pcd_xiso_ereq_free(ep, req); + + /* Start the next request */ + dwc_otg_pcd_xiso_start_next_request(ep->pcd, ep); + + return; +} + +/** + * Create and initialize the Isoc pkt descriptors of the extended request. + * + */ +static int dwc_otg_pcd_xiso_create_pkt_descs(dwc_otg_pcd_request_t * req, + void *ereq_nonport, + int atomic_alloc) +{ + struct dwc_iso_xreq_port *ereq = NULL; + struct dwc_iso_xreq_port *req_mapped = NULL; + struct dwc_iso_pkt_desc_port *ipds = NULL; /* To be created in this function */ + uint32_t pkt_count; + int i; + + ereq = &req->ext_req; + req_mapped = (struct dwc_iso_xreq_port *)ereq_nonport; + pkt_count = req_mapped->pio_pkt_count; + + /* Create the isoc descs */ + if (atomic_alloc) { + ipds = DWC_ALLOC_ATOMIC(sizeof(*ipds) * pkt_count); + } else { + ipds = DWC_ALLOC(sizeof(*ipds) * pkt_count); + } + + if (!ipds) { + DWC_ERROR("Failed to allocate isoc descriptors"); + return -DWC_E_NO_MEMORY; + } + + /* Initialize the extended request fields */ + ereq->per_io_frame_descs = ipds; + ereq->error_count = 0; + ereq->pio_alloc_pkt_count = pkt_count; + ereq->pio_pkt_count = pkt_count; + ereq->tr_sub_flags = req_mapped->tr_sub_flags; + + /* Init the Isoc descriptors */ + for (i = 0; i < pkt_count; i++) { + ipds[i].length = req_mapped->per_io_frame_descs[i].length; + ipds[i].offset = req_mapped->per_io_frame_descs[i].offset; + ipds[i].status = req_mapped->per_io_frame_descs[i].status; /* 0 */ + ipds[i].actual_length = + req_mapped->per_io_frame_descs[i].actual_length; + } + + return 0; +} + +static void prn_ext_request(struct dwc_iso_xreq_port *ereq) +{ + struct dwc_iso_pkt_desc_port *xfd = NULL; + int i; + + DWC_DEBUG("per_io_frame_descs=%p", ereq->per_io_frame_descs); + DWC_DEBUG("tr_sub_flags=%d", ereq->tr_sub_flags); + DWC_DEBUG("error_count=%d", ereq->error_count); + DWC_DEBUG("pio_alloc_pkt_count=%d", ereq->pio_alloc_pkt_count); + DWC_DEBUG("pio_pkt_count=%d", ereq->pio_pkt_count); + DWC_DEBUG("res=%d", ereq->res); + + for (i = 0; i < ereq->pio_pkt_count; i++) { + xfd = &ereq->per_io_frame_descs[0]; + DWC_DEBUG("FD #%d", i); + + DWC_DEBUG("xfd->actual_length=%d", xfd->actual_length); + DWC_DEBUG("xfd->length=%d", xfd->length); + DWC_DEBUG("xfd->offset=%d", xfd->offset); + DWC_DEBUG("xfd->status=%d", xfd->status); + } +} + +/** + * + */ +int dwc_otg_pcd_xiso_ep_queue(dwc_otg_pcd_t * pcd, void *ep_handle, + uint8_t * buf, dwc_dma_t dma_buf, uint32_t buflen, + int zero, void *req_handle, int atomic_alloc, + void *ereq_nonport) +{ + dwc_otg_pcd_request_t *req = NULL; + dwc_otg_pcd_ep_t *ep; + dwc_irqflags_t flags; + int res; + + ep = get_ep_from_handle(pcd, ep_handle); + if (!ep) { + DWC_WARN("bad ep\n"); + return -DWC_E_INVALID; + } + + /* We support this extension only for DDMA mode */ + if (ep->dwc_ep.type == DWC_OTG_EP_TYPE_ISOC) + if (!GET_CORE_IF(pcd)->dma_desc_enable) + return -DWC_E_INVALID; + + /* Create a dwc_otg_pcd_request_t object */ + if (atomic_alloc) { + req = DWC_ALLOC_ATOMIC(sizeof(*req)); + } else { + req = DWC_ALLOC(sizeof(*req)); + } + + if (!req) { + return -DWC_E_NO_MEMORY; + } + + /* Create the Isoc descs for this request which shall be the exact match + * of the structure sent to us from the non-portable logic */ + res = + dwc_otg_pcd_xiso_create_pkt_descs(req, ereq_nonport, atomic_alloc); + if (res) { + DWC_WARN("Failed to init the Isoc descriptors"); + DWC_FREE(req); + return res; + } + + DWC_SPINLOCK_IRQSAVE(pcd->lock, &flags); + + DWC_CIRCLEQ_INIT_ENTRY(req, queue_entry); + req->buf = buf; + req->dma = dma_buf; + req->length = buflen; + req->sent_zlp = zero; + req->priv = req_handle; + + //DWC_SPINLOCK_IRQSAVE(pcd->lock, &flags); + ep->dwc_ep.dma_addr = dma_buf; + ep->dwc_ep.start_xfer_buff = buf; + ep->dwc_ep.xfer_buff = buf; + ep->dwc_ep.xfer_len = 0; + ep->dwc_ep.xfer_count = 0; + ep->dwc_ep.sent_zlp = 0; + ep->dwc_ep.total_len = buflen; + + /* Add this request to the tail */ + DWC_CIRCLEQ_INSERT_TAIL(&ep->queue, req, queue_entry); + ep->dwc_ep.xiso_queued_xfers++; + +//DWC_DEBUG("CP_0"); +//DWC_DEBUG("req->ext_req.tr_sub_flags=%d", req->ext_req.tr_sub_flags); +//prn_ext_request((struct dwc_iso_xreq_port *) ereq_nonport); +//prn_ext_request(&req->ext_req); + + //DWC_SPINUNLOCK_IRQRESTORE(pcd->lock, flags); + + /* If the req->status == ASAP then check if there is any active transfer + * for this endpoint. If no active transfers, then get the first entry + * from the queue and start that transfer + */ + if (req->ext_req.tr_sub_flags == DWC_EREQ_TF_ASAP) { + res = dwc_otg_pcd_xiso_start_next_request(pcd, ep); + if (res) { + DWC_WARN("Failed to start the next Isoc transfer"); + DWC_SPINUNLOCK_IRQRESTORE(pcd->lock, flags); + DWC_FREE(req); + return res; + } + } + + DWC_SPINUNLOCK_IRQRESTORE(pcd->lock, flags); + return 0; +} + +#endif +/* END ifdef DWC_UTE_PER_IO ***************************************************/ +int dwc_otg_pcd_ep_queue(dwc_otg_pcd_t * pcd, void *ep_handle, + uint8_t * buf, dwc_dma_t dma_buf, uint32_t buflen, + int zero, void *req_handle, int atomic_alloc) +{ + dwc_irqflags_t flags; + dwc_otg_pcd_request_t *req; + dwc_otg_pcd_ep_t *ep; + uint32_t max_transfer; + + ep = get_ep_from_handle(pcd, ep_handle); + if (!ep || (!ep->desc && ep->dwc_ep.num != 0)) { + DWC_WARN("bad ep\n"); + return -DWC_E_INVALID; + } + + if (atomic_alloc) { + req = DWC_ALLOC_ATOMIC(sizeof(*req)); + } else { + req = DWC_ALLOC(sizeof(*req)); + } + + if (!req) { + return -DWC_E_NO_MEMORY; + } + DWC_CIRCLEQ_INIT_ENTRY(req, queue_entry); + if (!GET_CORE_IF(pcd)->core_params->opt) { + if (ep->dwc_ep.num != 0) { + DWC_ERROR("queue req %p, len %d buf %p\n", + req_handle, buflen, buf); + } + } + + req->buf = buf; + req->dma = dma_buf; + req->length = buflen; + req->sent_zlp = zero; + req->priv = req_handle; + req->dw_align_buf = NULL; + if ((dma_buf & 0x3) && GET_CORE_IF(pcd)->dma_enable + && !GET_CORE_IF(pcd)->dma_desc_enable) + req->dw_align_buf = DWC_DMA_ALLOC(buflen, + &req->dw_align_buf_dma); + DWC_SPINLOCK_IRQSAVE(pcd->lock, &flags); + + /* + * After adding request to the queue for IN ISOC wait for In Token Received + * when TX FIFO is empty interrupt and for OUT ISOC wait for OUT Token + * Received when EP is disabled interrupt to obtain starting microframe + * (odd/even) start transfer + */ + if (ep->dwc_ep.type == DWC_OTG_EP_TYPE_ISOC) { + if (req != 0) { + depctl_data_t depctl = {.d32 = + DWC_READ_REG32(&pcd->core_if->dev_if-> + in_ep_regs[ep->dwc_ep.num]-> + diepctl) }; + ++pcd->request_pending; + + DWC_CIRCLEQ_INSERT_TAIL(&ep->queue, req, queue_entry); + if (ep->dwc_ep.is_in) { + depctl.b.cnak = 1; + DWC_WRITE_REG32(&pcd->core_if->dev_if-> + in_ep_regs[ep->dwc_ep.num]-> + diepctl, depctl.d32); + } + + DWC_SPINUNLOCK_IRQRESTORE(pcd->lock, flags); + } + return 0; + } + + /* + * For EP0 IN without premature status, zlp is required? + */ + if (ep->dwc_ep.num == 0 && ep->dwc_ep.is_in) { + DWC_DEBUGPL(DBG_PCDV, "%d-OUT ZLP\n", ep->dwc_ep.num); + //_req->zero = 1; + } + + /* Start the transfer */ + if (DWC_CIRCLEQ_EMPTY(&ep->queue) && !ep->stopped) { + /* EP0 Transfer? */ + if (ep->dwc_ep.num == 0) { + switch (pcd->ep0state) { + case EP0_IN_DATA_PHASE: + DWC_DEBUGPL(DBG_PCD, + "%s ep0: EP0_IN_DATA_PHASE\n", + __func__); + break; + + case EP0_OUT_DATA_PHASE: + DWC_DEBUGPL(DBG_PCD, + "%s ep0: EP0_OUT_DATA_PHASE\n", + __func__); + if (pcd->request_config) { + /* Complete STATUS PHASE */ + ep->dwc_ep.is_in = 1; + pcd->ep0state = EP0_IN_STATUS_PHASE; + } + break; + + case EP0_IN_STATUS_PHASE: + DWC_DEBUGPL(DBG_PCD, + "%s ep0: EP0_IN_STATUS_PHASE\n", + __func__); + break; + + default: + DWC_DEBUGPL(DBG_ANY, "ep0: odd state %d\n", + pcd->ep0state); + DWC_SPINUNLOCK_IRQRESTORE(pcd->lock, flags); + return -DWC_E_SHUTDOWN; + } + + ep->dwc_ep.dma_addr = dma_buf; + ep->dwc_ep.start_xfer_buff = buf; + ep->dwc_ep.xfer_buff = buf; + ep->dwc_ep.xfer_len = buflen; + ep->dwc_ep.xfer_count = 0; + ep->dwc_ep.sent_zlp = 0; + ep->dwc_ep.total_len = ep->dwc_ep.xfer_len; + + if (zero) { + if ((ep->dwc_ep.xfer_len % + ep->dwc_ep.maxpacket == 0) + && (ep->dwc_ep.xfer_len != 0)) { + ep->dwc_ep.sent_zlp = 1; + } + + } + + dwc_otg_ep0_start_transfer(GET_CORE_IF(pcd), + &ep->dwc_ep); + } // non-ep0 endpoints + else { +#ifdef DWC_UTE_CFI + if (ep->dwc_ep.buff_mode != BM_STANDARD) { + /* store the request length */ + ep->dwc_ep.cfi_req_len = buflen; + pcd->cfi->ops.build_descriptors(pcd->cfi, pcd, + ep, req); + } else { +#endif + max_transfer = + GET_CORE_IF(ep->pcd)->core_params-> + max_transfer_size; + + /* Setup and start the Transfer */ + if (req->dw_align_buf){ + if (ep->dwc_ep.is_in) + dwc_memcpy(req->dw_align_buf, + buf, buflen); + ep->dwc_ep.dma_addr = + req->dw_align_buf_dma; + ep->dwc_ep.start_xfer_buff = + req->dw_align_buf; + ep->dwc_ep.xfer_buff = + req->dw_align_buf; + } else { + ep->dwc_ep.dma_addr = dma_buf; + ep->dwc_ep.start_xfer_buff = buf; + ep->dwc_ep.xfer_buff = buf; + } + ep->dwc_ep.xfer_len = 0; + ep->dwc_ep.xfer_count = 0; + ep->dwc_ep.sent_zlp = 0; + ep->dwc_ep.total_len = buflen; + + ep->dwc_ep.maxxfer = max_transfer; + if (GET_CORE_IF(pcd)->dma_desc_enable) { + uint32_t out_max_xfer = + DDMA_MAX_TRANSFER_SIZE - + (DDMA_MAX_TRANSFER_SIZE % 4); + if (ep->dwc_ep.is_in) { + if (ep->dwc_ep.maxxfer > + DDMA_MAX_TRANSFER_SIZE) { + ep->dwc_ep.maxxfer = + DDMA_MAX_TRANSFER_SIZE; + } + } else { + if (ep->dwc_ep.maxxfer > + out_max_xfer) { + ep->dwc_ep.maxxfer = + out_max_xfer; + } + } + } + if (ep->dwc_ep.maxxfer < ep->dwc_ep.total_len) { + ep->dwc_ep.maxxfer -= + (ep->dwc_ep.maxxfer % + ep->dwc_ep.maxpacket); + } + + if (zero) { + if ((ep->dwc_ep.total_len % + ep->dwc_ep.maxpacket == 0) + && (ep->dwc_ep.total_len != 0)) { + ep->dwc_ep.sent_zlp = 1; + } + } +#ifdef DWC_UTE_CFI + } +#endif + dwc_otg_ep_start_transfer(GET_CORE_IF(pcd), + &ep->dwc_ep); + } + } + + if (req != 0) { + ++pcd->request_pending; + DWC_CIRCLEQ_INSERT_TAIL(&ep->queue, req, queue_entry); + if (ep->dwc_ep.is_in && ep->stopped + && !(GET_CORE_IF(pcd)->dma_enable)) { + /** @todo NGS Create a function for this. */ + diepmsk_data_t diepmsk = {.d32 = 0 }; + diepmsk.b.intktxfemp = 1; + if (GET_CORE_IF(pcd)->multiproc_int_enable) { + DWC_MODIFY_REG32(&GET_CORE_IF(pcd)-> + dev_if->dev_global_regs->diepeachintmsk + [ep->dwc_ep.num], 0, + diepmsk.d32); + } else { + DWC_MODIFY_REG32(&GET_CORE_IF(pcd)-> + dev_if->dev_global_regs-> + diepmsk, 0, diepmsk.d32); + } + + } + } + DWC_SPINUNLOCK_IRQRESTORE(pcd->lock, flags); + + return 0; +} + +int dwc_otg_pcd_ep_dequeue(dwc_otg_pcd_t * pcd, void *ep_handle, + void *req_handle) +{ + dwc_irqflags_t flags; + dwc_otg_pcd_request_t *req; + dwc_otg_pcd_ep_t *ep; + + ep = get_ep_from_handle(pcd, ep_handle); + if (!ep || (!ep->desc && ep->dwc_ep.num != 0)) { + DWC_WARN("bad argument\n"); + return -DWC_E_INVALID; + } + + DWC_SPINLOCK_IRQSAVE(pcd->lock, &flags); + + /* make sure it's actually queued on this endpoint */ + DWC_CIRCLEQ_FOREACH(req, &ep->queue, queue_entry) { + if (req->priv == (void *)req_handle) { + break; + } + } + + if (req->priv != (void *)req_handle) { + DWC_SPINUNLOCK_IRQRESTORE(pcd->lock, flags); + return -DWC_E_INVALID; + } + + if (!DWC_CIRCLEQ_EMPTY_ENTRY(req, queue_entry)) { + dwc_otg_request_done(ep, req, -DWC_E_RESTART); + } else { + req = NULL; + } + + DWC_SPINUNLOCK_IRQRESTORE(pcd->lock, flags); + + return req ? 0 : -DWC_E_SHUTDOWN; + +} + +/** + * dwc_otg_pcd_ep_wedge - sets the halt feature and ignores clear requests + * + * Use this to stall an endpoint and ignore CLEAR_FEATURE(HALT_ENDPOINT) + * requests. If the gadget driver clears the halt status, it will + * automatically unwedge the endpoint. + * + * Returns zero on success, else negative DWC error code. + */ +int dwc_otg_pcd_ep_wedge(dwc_otg_pcd_t * pcd, void *ep_handle) +{ + dwc_otg_pcd_ep_t *ep; + dwc_irqflags_t flags; + int retval = 0; + + ep = get_ep_from_handle(pcd, ep_handle); + + if ((!ep->desc && ep != &pcd->ep0) || + (ep->desc && (ep->desc->bmAttributes == UE_ISOCHRONOUS))) { + DWC_WARN("%s, bad ep\n", __func__); + return -DWC_E_INVALID; + } + + DWC_SPINLOCK_IRQSAVE(pcd->lock, &flags); + if (!DWC_CIRCLEQ_EMPTY(&ep->queue)) { + DWC_WARN("%d %s XFer In process\n", ep->dwc_ep.num, + ep->dwc_ep.is_in ? "IN" : "OUT"); + retval = -DWC_E_AGAIN; + } else { + /* This code needs to be reviewed */ + if (ep->dwc_ep.is_in == 1 && GET_CORE_IF(pcd)->dma_desc_enable) { + dtxfsts_data_t txstatus; + fifosize_data_t txfifosize; + + txfifosize.d32 = + DWC_READ_REG32(&GET_CORE_IF(pcd)-> + core_global_regs->dtxfsiz[ep->dwc_ep. + tx_fifo_num]); + txstatus.d32 = + DWC_READ_REG32(&GET_CORE_IF(pcd)-> + dev_if->in_ep_regs[ep->dwc_ep.num]-> + dtxfsts); + + if (txstatus.b.txfspcavail < txfifosize.b.depth) { + DWC_WARN("%s() Data In Tx Fifo\n", __func__); + retval = -DWC_E_AGAIN; + } else { + if (ep->dwc_ep.num == 0) { + pcd->ep0state = EP0_STALL; + } + + ep->stopped = 1; + dwc_otg_ep_set_stall(GET_CORE_IF(pcd), + &ep->dwc_ep); + } + } else { + if (ep->dwc_ep.num == 0) { + pcd->ep0state = EP0_STALL; + } + + ep->stopped = 1; + dwc_otg_ep_set_stall(GET_CORE_IF(pcd), &ep->dwc_ep); + } + } + + DWC_SPINUNLOCK_IRQRESTORE(pcd->lock, flags); + + return retval; +} + +int dwc_otg_pcd_ep_halt(dwc_otg_pcd_t * pcd, void *ep_handle, int value) +{ + dwc_otg_pcd_ep_t *ep; + dwc_irqflags_t flags; + int retval = 0; + + ep = get_ep_from_handle(pcd, ep_handle); + + if (!ep || (!ep->desc && ep != &pcd->ep0) || + (ep->desc && (ep->desc->bmAttributes == UE_ISOCHRONOUS))) { + DWC_WARN("%s, bad ep\n", __func__); + return -DWC_E_INVALID; + } + + DWC_SPINLOCK_IRQSAVE(pcd->lock, &flags); + if (!DWC_CIRCLEQ_EMPTY(&ep->queue)) { + DWC_WARN("%d %s XFer In process\n", ep->dwc_ep.num, + ep->dwc_ep.is_in ? "IN" : "OUT"); + retval = -DWC_E_AGAIN; + } else if (value == 0) { + dwc_otg_ep_clear_stall(GET_CORE_IF(pcd), &ep->dwc_ep); + } else if (value == 1) { + if (ep->dwc_ep.is_in == 1 && GET_CORE_IF(pcd)->dma_desc_enable) { + dtxfsts_data_t txstatus; + fifosize_data_t txfifosize; + + txfifosize.d32 = + DWC_READ_REG32(&GET_CORE_IF(pcd)->core_global_regs-> + dtxfsiz[ep->dwc_ep.tx_fifo_num]); + txstatus.d32 = + DWC_READ_REG32(&GET_CORE_IF(pcd)->dev_if-> + in_ep_regs[ep->dwc_ep.num]->dtxfsts); + + if (txstatus.b.txfspcavail < txfifosize.b.depth) { + DWC_WARN("%s() Data In Tx Fifo\n", __func__); + retval = -DWC_E_AGAIN; + } else { + if (ep->dwc_ep.num == 0) { + pcd->ep0state = EP0_STALL; + } + + ep->stopped = 1; + dwc_otg_ep_set_stall(GET_CORE_IF(pcd), + &ep->dwc_ep); + } + } else { + if (ep->dwc_ep.num == 0) { + pcd->ep0state = EP0_STALL; + } + + ep->stopped = 1; + dwc_otg_ep_set_stall(GET_CORE_IF(pcd), &ep->dwc_ep); + } + } else if (value == 2) { + ep->dwc_ep.stall_clear_flag = 0; + } else if (value == 3) { + ep->dwc_ep.stall_clear_flag = 1; + } + + DWC_SPINUNLOCK_IRQRESTORE(pcd->lock, flags); + + return retval; +} + +/** + * This function initiates remote wakeup of the host from suspend state. + */ +void dwc_otg_pcd_rem_wkup_from_suspend(dwc_otg_pcd_t * pcd, int set) +{ + dctl_data_t dctl = { 0 }; + dwc_otg_core_if_t *core_if = GET_CORE_IF(pcd); + dsts_data_t dsts; + + dsts.d32 = DWC_READ_REG32(&core_if->dev_if->dev_global_regs->dsts); + if (!dsts.b.suspsts) { + DWC_WARN("Remote wakeup while is not in suspend state\n"); + } + /* Check if DEVICE_REMOTE_WAKEUP feature enabled */ + if (pcd->remote_wakeup_enable) { + if (set) { + + if (core_if->adp_enable) { + gpwrdn_data_t gpwrdn; + + dwc_otg_adp_probe_stop(core_if); + + /* Mask SRP detected interrupt from Power Down Logic */ + gpwrdn.d32 = 0; + gpwrdn.b.srp_det_msk = 1; + DWC_MODIFY_REG32(&core_if-> + core_global_regs->gpwrdn, + gpwrdn.d32, 0); + + /* Disable Power Down Logic */ + gpwrdn.d32 = 0; + gpwrdn.b.pmuactv = 1; + DWC_MODIFY_REG32(&core_if-> + core_global_regs->gpwrdn, + gpwrdn.d32, 0); + + /* + * Initialize the Core for Device mode. + */ + core_if->op_state = B_PERIPHERAL; + dwc_otg_core_init(core_if); + dwc_otg_enable_global_interrupts(core_if); + cil_pcd_start(core_if); + + dwc_otg_initiate_srp(core_if); + } + + dctl.b.rmtwkupsig = 1; + DWC_MODIFY_REG32(&core_if->dev_if->dev_global_regs-> + dctl, 0, dctl.d32); + DWC_DEBUGPL(DBG_PCD, "Set Remote Wakeup\n"); + + dwc_mdelay(2); + DWC_MODIFY_REG32(&core_if->dev_if->dev_global_regs-> + dctl, dctl.d32, 0); + DWC_DEBUGPL(DBG_PCD, "Clear Remote Wakeup\n"); + } + } else { + DWC_DEBUGPL(DBG_PCD, "Remote Wakeup is disabled\n"); + } +} + +#ifdef CONFIG_USB_DWC_OTG_LPM +/** + * This function initiates remote wakeup of the host from L1 sleep state. + */ +void dwc_otg_pcd_rem_wkup_from_sleep(dwc_otg_pcd_t * pcd, int set) +{ + glpmcfg_data_t lpmcfg; + dwc_otg_core_if_t *core_if = GET_CORE_IF(pcd); + + lpmcfg.d32 = DWC_READ_REG32(&core_if->core_global_regs->glpmcfg); + + /* Check if we are in L1 state */ + if (!lpmcfg.b.prt_sleep_sts) { + DWC_DEBUGPL(DBG_PCD, "Device is not in sleep state\n"); + return; + } + + /* Check if host allows remote wakeup */ + if (!lpmcfg.b.rem_wkup_en) { + DWC_DEBUGPL(DBG_PCD, "Host does not allow remote wakeup\n"); + return; + } + + /* Check if Resume OK */ + if (!lpmcfg.b.sleep_state_resumeok) { + DWC_DEBUGPL(DBG_PCD, "Sleep state resume is not OK\n"); + return; + } + + lpmcfg.d32 = DWC_READ_REG32(&core_if->core_global_regs->glpmcfg); + lpmcfg.b.en_utmi_sleep = 0; + lpmcfg.b.hird_thres &= (~(1 << 4)); + DWC_WRITE_REG32(&core_if->core_global_regs->glpmcfg, lpmcfg.d32); + + if (set) { + dctl_data_t dctl = {.d32 = 0 }; + dctl.b.rmtwkupsig = 1; + /* Set RmtWkUpSig bit to start remote wakup signaling. + * Hardware will automatically clear this bit. + */ + DWC_MODIFY_REG32(&core_if->dev_if->dev_global_regs->dctl, + 0, dctl.d32); + DWC_DEBUGPL(DBG_PCD, "Set Remote Wakeup\n"); + } + +} +#endif + +/** + * Performs remote wakeup. + */ +void dwc_otg_pcd_remote_wakeup(dwc_otg_pcd_t * pcd, int set) +{ + dwc_otg_core_if_t *core_if = GET_CORE_IF(pcd); + dwc_irqflags_t flags; + if (dwc_otg_is_device_mode(core_if)) { + DWC_SPINLOCK_IRQSAVE(pcd->lock, &flags); +#ifdef CONFIG_USB_DWC_OTG_LPM + if (core_if->lx_state == DWC_OTG_L1) { + dwc_otg_pcd_rem_wkup_from_sleep(pcd, set); + } else { +#endif + dwc_otg_pcd_rem_wkup_from_suspend(pcd, set); +#ifdef CONFIG_USB_DWC_OTG_LPM + } +#endif + DWC_SPINUNLOCK_IRQRESTORE(pcd->lock, flags); + } + return; +} + +void dwc_otg_pcd_disconnect_us(dwc_otg_pcd_t * pcd, int no_of_usecs) +{ + dwc_otg_core_if_t *core_if = GET_CORE_IF(pcd); + dctl_data_t dctl = { 0 }; + + if (dwc_otg_is_device_mode(core_if)) { + dctl.b.sftdiscon = 1; + DWC_PRINTF("Soft disconnect for %d useconds\n",no_of_usecs); + DWC_MODIFY_REG32(&core_if->dev_if->dev_global_regs->dctl, 0, dctl.d32); + dwc_udelay(no_of_usecs); + DWC_MODIFY_REG32(&core_if->dev_if->dev_global_regs->dctl, dctl.d32,0); + + } else{ + DWC_PRINTF("NOT SUPPORTED IN HOST MODE\n"); + } + return; + +} + +int dwc_otg_pcd_wakeup(dwc_otg_pcd_t * pcd) +{ + dsts_data_t dsts; + gotgctl_data_t gotgctl; + + /* + * This function starts the Protocol if no session is in progress. If + * a session is already in progress, but the device is suspended, + * remote wakeup signaling is started. + */ + + /* Check if valid session */ + gotgctl.d32 = + DWC_READ_REG32(&(GET_CORE_IF(pcd)->core_global_regs->gotgctl)); + if (gotgctl.b.bsesvld) { + /* Check if suspend state */ + dsts.d32 = + DWC_READ_REG32(& + (GET_CORE_IF(pcd)->dev_if-> + dev_global_regs->dsts)); + if (dsts.b.suspsts) { + dwc_otg_pcd_remote_wakeup(pcd, 1); + } + } else { + dwc_otg_pcd_initiate_srp(pcd); + } + + return 0; + +} + +/** + * Start the SRP timer to detect when the SRP does not complete within + * 6 seconds. + * + * @param pcd the pcd structure. + */ +void dwc_otg_pcd_initiate_srp(dwc_otg_pcd_t * pcd) +{ + dwc_irqflags_t flags; + DWC_SPINLOCK_IRQSAVE(pcd->lock, &flags); + dwc_otg_initiate_srp(GET_CORE_IF(pcd)); + DWC_SPINUNLOCK_IRQRESTORE(pcd->lock, flags); +} + +int dwc_otg_pcd_get_frame_number(dwc_otg_pcd_t * pcd) +{ + return dwc_otg_get_frame_number(GET_CORE_IF(pcd)); +} + +int dwc_otg_pcd_is_lpm_enabled(dwc_otg_pcd_t * pcd) +{ + return GET_CORE_IF(pcd)->core_params->lpm_enable; +} + +uint32_t get_b_hnp_enable(dwc_otg_pcd_t * pcd) +{ + return pcd->b_hnp_enable; +} + +uint32_t get_a_hnp_support(dwc_otg_pcd_t * pcd) +{ + return pcd->a_hnp_support; +} + +uint32_t get_a_alt_hnp_support(dwc_otg_pcd_t * pcd) +{ + return pcd->a_alt_hnp_support; +} + +int dwc_otg_pcd_get_rmwkup_enable(dwc_otg_pcd_t * pcd) +{ + return pcd->remote_wakeup_enable; +} + +#endif /* DWC_HOST_ONLY */ --- linux-raspi2-4.2.0.orig/drivers/usb/host/dwc_otg/dwc_otg_pcd.h +++ linux-raspi2-4.2.0/drivers/usb/host/dwc_otg/dwc_otg_pcd.h @@ -0,0 +1,266 @@ +/* ========================================================================== + * $File: //dwh/usb_iip/dev/software/otg/linux/drivers/dwc_otg_pcd.h $ + * $Revision: #48 $ + * $Date: 2012/08/10 $ + * $Change: 2047372 $ + * + * Synopsys HS OTG Linux Software Driver and documentation (hereinafter, + * "Software") is an Unsupported proprietary work of Synopsys, Inc. unless + * otherwise expressly agreed to in writing between Synopsys and you. + * + * The Software IS NOT an item of Licensed Software or Licensed Product under + * any End User Software License Agreement or Agreement for Licensed Product + * with Synopsys or any supplement thereto. You are permitted to use and + * redistribute this Software in source and binary forms, with or without + * modification, provided that redistributions of source code must retain this + * notice. You may not view, use, disclose, copy or distribute this file or + * any information contained herein except pursuant to this license grant from + * Synopsys. If you do not agree with this notice, including the disclaimer + * below, then you are not authorized to use the Software. + * + * THIS SOFTWARE IS BEING DISTRIBUTED BY SYNOPSYS SOLELY ON AN "AS IS" BASIS + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE HEREBY DISCLAIMED. IN NO EVENT SHALL SYNOPSYS BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH + * DAMAGE. + * ========================================================================== */ +#ifndef DWC_HOST_ONLY +#if !defined(__DWC_PCD_H__) +#define __DWC_PCD_H__ + +#include "dwc_otg_os_dep.h" +#include "usb.h" +#include "dwc_otg_cil.h" +#include "dwc_otg_pcd_if.h" +struct cfiobject; + +/** + * @file + * + * This file contains the structures, constants, and interfaces for + * the Perpherial Contoller Driver (PCD). + * + * The Peripheral Controller Driver (PCD) for Linux will implement the + * Gadget API, so that the existing Gadget drivers can be used. For + * the Mass Storage Function driver the File-backed USB Storage Gadget + * (FBS) driver will be used. The FBS driver supports the + * Control-Bulk (CB), Control-Bulk-Interrupt (CBI), and Bulk-Only + * transports. + * + */ + +/** Invalid DMA Address */ +#define DWC_DMA_ADDR_INVALID (~(dwc_dma_t)0) + +/** Max Transfer size for any EP */ +#define DDMA_MAX_TRANSFER_SIZE 65535 + +/** + * Get the pointer to the core_if from the pcd pointer. + */ +#define GET_CORE_IF( _pcd ) (_pcd->core_if) + +/** + * States of EP0. + */ +typedef enum ep0_state { + EP0_DISCONNECT, /* no host */ + EP0_IDLE, + EP0_IN_DATA_PHASE, + EP0_OUT_DATA_PHASE, + EP0_IN_STATUS_PHASE, + EP0_OUT_STATUS_PHASE, + EP0_STALL, +} ep0state_e; + +/** Fordward declaration.*/ +struct dwc_otg_pcd; + +/** DWC_otg iso request structure. + * + */ +typedef struct usb_iso_request dwc_otg_pcd_iso_request_t; + +#ifdef DWC_UTE_PER_IO + +/** + * This shall be the exact analogy of the same type structure defined in the + * usb_gadget.h. Each descriptor contains + */ +struct dwc_iso_pkt_desc_port { + uint32_t offset; + uint32_t length; /* expected length */ + uint32_t actual_length; + uint32_t status; +}; + +struct dwc_iso_xreq_port { + /** transfer/submission flag */ + uint32_t tr_sub_flags; + /** Start the request ASAP */ +#define DWC_EREQ_TF_ASAP 0x00000002 + /** Just enqueue the request w/o initiating a transfer */ +#define DWC_EREQ_TF_ENQUEUE 0x00000004 + + /** + * count of ISO packets attached to this request - shall + * not exceed the pio_alloc_pkt_count + */ + uint32_t pio_pkt_count; + /** count of ISO packets allocated for this request */ + uint32_t pio_alloc_pkt_count; + /** number of ISO packet errors */ + uint32_t error_count; + /** reserved for future extension */ + uint32_t res; + /** Will be allocated and freed in the UTE gadget and based on the CFC value */ + struct dwc_iso_pkt_desc_port *per_io_frame_descs; +}; +#endif +/** DWC_otg request structure. + * This structure is a list of requests. + */ +typedef struct dwc_otg_pcd_request { + void *priv; + void *buf; + dwc_dma_t dma; + uint32_t length; + uint32_t actual; + unsigned sent_zlp:1; + /** + * Used instead of original buffer if + * it(physical address) is not dword-aligned. + **/ + uint8_t *dw_align_buf; + dwc_dma_t dw_align_buf_dma; + + DWC_CIRCLEQ_ENTRY(dwc_otg_pcd_request) queue_entry; +#ifdef DWC_UTE_PER_IO + struct dwc_iso_xreq_port ext_req; + //void *priv_ereq_nport; /* */ +#endif +} dwc_otg_pcd_request_t; + +DWC_CIRCLEQ_HEAD(req_list, dwc_otg_pcd_request); + +/** PCD EP structure. + * This structure describes an EP, there is an array of EPs in the PCD + * structure. + */ +typedef struct dwc_otg_pcd_ep { + /** USB EP Descriptor */ + const usb_endpoint_descriptor_t *desc; + + /** queue of dwc_otg_pcd_requests. */ + struct req_list queue; + unsigned stopped:1; + unsigned disabling:1; + unsigned dma:1; + unsigned queue_sof:1; + +#ifdef DWC_EN_ISOC + /** ISOC req handle passed */ + void *iso_req_handle; +#endif //_EN_ISOC_ + + /** DWC_otg ep data. */ + dwc_ep_t dwc_ep; + + /** Pointer to PCD */ + struct dwc_otg_pcd *pcd; + + void *priv; +} dwc_otg_pcd_ep_t; + +/** DWC_otg PCD Structure. + * This structure encapsulates the data for the dwc_otg PCD. + */ +struct dwc_otg_pcd { + const struct dwc_otg_pcd_function_ops *fops; + /** The DWC otg device pointer */ + struct dwc_otg_device *otg_dev; + /** Core Interface */ + dwc_otg_core_if_t *core_if; + /** State of EP0 */ + ep0state_e ep0state; + /** EP0 Request is pending */ + unsigned ep0_pending:1; + /** Indicates when SET CONFIGURATION Request is in process */ + unsigned request_config:1; + /** The state of the Remote Wakeup Enable. */ + unsigned remote_wakeup_enable:1; + /** The state of the B-Device HNP Enable. */ + unsigned b_hnp_enable:1; + /** The state of A-Device HNP Support. */ + unsigned a_hnp_support:1; + /** The state of the A-Device Alt HNP support. */ + unsigned a_alt_hnp_support:1; + /** Count of pending Requests */ + unsigned request_pending; + + /** SETUP packet for EP0 + * This structure is allocated as a DMA buffer on PCD initialization + * with enough space for up to 3 setup packets. + */ + union { + usb_device_request_t req; + uint32_t d32[2]; + } *setup_pkt; + + dwc_dma_t setup_pkt_dma_handle; + + /* Additional buffer and flag for CTRL_WR premature case */ + uint8_t *backup_buf; + unsigned data_terminated; + + /** 2-byte dma buffer used to return status from GET_STATUS */ + uint16_t *status_buf; + dwc_dma_t status_buf_dma_handle; + + /** EP0 */ + dwc_otg_pcd_ep_t ep0; + + /** Array of IN EPs. */ + dwc_otg_pcd_ep_t in_ep[MAX_EPS_CHANNELS - 1]; + /** Array of OUT EPs. */ + dwc_otg_pcd_ep_t out_ep[MAX_EPS_CHANNELS - 1]; + /** number of valid EPs in the above array. */ +// unsigned num_eps : 4; + dwc_spinlock_t *lock; + + /** Tasklet to defer starting of TEST mode transmissions until + * Status Phase has been completed. + */ + dwc_tasklet_t *test_mode_tasklet; + + /** Tasklet to delay starting of xfer in DMA mode */ + dwc_tasklet_t *start_xfer_tasklet; + + /** The test mode to enter when the tasklet is executed. */ + unsigned test_mode; + /** The cfi_api structure that implements most of the CFI API + * and OTG specific core configuration functionality + */ +#ifdef DWC_UTE_CFI + struct cfiobject *cfi; +#endif + +}; + +//FIXME this functions should be static, and this prototypes should be removed +extern void dwc_otg_request_nuke(dwc_otg_pcd_ep_t * ep); +extern void dwc_otg_request_done(dwc_otg_pcd_ep_t * ep, + dwc_otg_pcd_request_t * req, int32_t status); + +void dwc_otg_iso_buffer_done(dwc_otg_pcd_t * pcd, dwc_otg_pcd_ep_t * ep, + void *req_handle); + +extern void do_test_mode(void *data); +#endif +#endif /* DWC_HOST_ONLY */ --- linux-raspi2-4.2.0.orig/drivers/usb/host/dwc_otg/dwc_otg_pcd_if.h +++ linux-raspi2-4.2.0/drivers/usb/host/dwc_otg/dwc_otg_pcd_if.h @@ -0,0 +1,360 @@ +/* ========================================================================== + * $File: //dwh/usb_iip/dev/software/otg/linux/drivers/dwc_otg_pcd_if.h $ + * $Revision: #11 $ + * $Date: 2011/10/26 $ + * $Change: 1873028 $ + * + * Synopsys HS OTG Linux Software Driver and documentation (hereinafter, + * "Software") is an Unsupported proprietary work of Synopsys, Inc. unless + * otherwise expressly agreed to in writing between Synopsys and you. + * + * The Software IS NOT an item of Licensed Software or Licensed Product under + * any End User Software License Agreement or Agreement for Licensed Product + * with Synopsys or any supplement thereto. You are permitted to use and + * redistribute this Software in source and binary forms, with or without + * modification, provided that redistributions of source code must retain this + * notice. You may not view, use, disclose, copy or distribute this file or + * any information contained herein except pursuant to this license grant from + * Synopsys. If you do not agree with this notice, including the disclaimer + * below, then you are not authorized to use the Software. + * + * THIS SOFTWARE IS BEING DISTRIBUTED BY SYNOPSYS SOLELY ON AN "AS IS" BASIS + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE HEREBY DISCLAIMED. IN NO EVENT SHALL SYNOPSYS BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH + * DAMAGE. + * ========================================================================== */ +#ifndef DWC_HOST_ONLY + +#if !defined(__DWC_PCD_IF_H__) +#define __DWC_PCD_IF_H__ + +//#include "dwc_os.h" +#include "dwc_otg_core_if.h" + +/** @file + * This file defines DWC_OTG PCD Core API. + */ + +struct dwc_otg_pcd; +typedef struct dwc_otg_pcd dwc_otg_pcd_t; + +/** Maxpacket size for EP0 */ +#define MAX_EP0_SIZE 64 +/** Maxpacket size for any EP */ +#define MAX_PACKET_SIZE 1024 + +/** @name Function Driver Callbacks */ +/** @{ */ + +/** This function will be called whenever a previously queued request has + * completed. The status value will be set to -DWC_E_SHUTDOWN to indicated a + * failed or aborted transfer, or -DWC_E_RESTART to indicate the device was reset, + * or -DWC_E_TIMEOUT to indicate it timed out, or -DWC_E_INVALID to indicate invalid + * parameters. */ +typedef int (*dwc_completion_cb_t) (dwc_otg_pcd_t * pcd, void *ep_handle, + void *req_handle, int32_t status, + uint32_t actual); +/** + * This function will be called whenever a previousle queued ISOC request has + * completed. Count of ISOC packets could be read using dwc_otg_pcd_get_iso_packet_count + * function. + * The status of each ISOC packet could be read using dwc_otg_pcd_get_iso_packet_* + * functions. + */ +typedef int (*dwc_isoc_completion_cb_t) (dwc_otg_pcd_t * pcd, void *ep_handle, + void *req_handle, int proc_buf_num); +/** This function should handle any SETUP request that cannot be handled by the + * PCD Core. This includes most GET_DESCRIPTORs, SET_CONFIGS, Any + * class-specific requests, etc. The function must non-blocking. + * + * Returns 0 on success. + * Returns -DWC_E_NOT_SUPPORTED if the request is not supported. + * Returns -DWC_E_INVALID if the setup request had invalid parameters or bytes. + * Returns -DWC_E_SHUTDOWN on any other error. */ +typedef int (*dwc_setup_cb_t) (dwc_otg_pcd_t * pcd, uint8_t * bytes); +/** This is called whenever the device has been disconnected. The function + * driver should take appropriate action to clean up all pending requests in the + * PCD Core, remove all endpoints (except ep0), and initialize back to reset + * state. */ +typedef int (*dwc_disconnect_cb_t) (dwc_otg_pcd_t * pcd); +/** This function is called when device has been connected. */ +typedef int (*dwc_connect_cb_t) (dwc_otg_pcd_t * pcd, int speed); +/** This function is called when device has been suspended */ +typedef int (*dwc_suspend_cb_t) (dwc_otg_pcd_t * pcd); +/** This function is called when device has received LPM tokens, i.e. + * device has been sent to sleep state. */ +typedef int (*dwc_sleep_cb_t) (dwc_otg_pcd_t * pcd); +/** This function is called when device has been resumed + * from suspend(L2) or L1 sleep state. */ +typedef int (*dwc_resume_cb_t) (dwc_otg_pcd_t * pcd); +/** This function is called whenever hnp params has been changed. + * User can call get_b_hnp_enable, get_a_hnp_support, get_a_alt_hnp_support functions + * to get hnp parameters. */ +typedef int (*dwc_hnp_params_changed_cb_t) (dwc_otg_pcd_t * pcd); +/** This function is called whenever USB RESET is detected. */ +typedef int (*dwc_reset_cb_t) (dwc_otg_pcd_t * pcd); + +typedef int (*cfi_setup_cb_t) (dwc_otg_pcd_t * pcd, void *ctrl_req_bytes); + +/** + * + * @param ep_handle Void pointer to the usb_ep structure + * @param ereq_port Pointer to the extended request structure created in the + * portable part. + */ +typedef int (*xiso_completion_cb_t) (dwc_otg_pcd_t * pcd, void *ep_handle, + void *req_handle, int32_t status, + void *ereq_port); +/** Function Driver Ops Data Structure */ +struct dwc_otg_pcd_function_ops { + dwc_connect_cb_t connect; + dwc_disconnect_cb_t disconnect; + dwc_setup_cb_t setup; + dwc_completion_cb_t complete; + dwc_isoc_completion_cb_t isoc_complete; + dwc_suspend_cb_t suspend; + dwc_sleep_cb_t sleep; + dwc_resume_cb_t resume; + dwc_reset_cb_t reset; + dwc_hnp_params_changed_cb_t hnp_changed; + cfi_setup_cb_t cfi_setup; +#ifdef DWC_UTE_PER_IO + xiso_completion_cb_t xisoc_complete; +#endif +}; +/** @} */ + +/** @name Function Driver Functions */ +/** @{ */ + +/** Call this function to get pointer on dwc_otg_pcd_t, + * this pointer will be used for all PCD API functions. + * + * @param core_if The DWC_OTG Core + */ +extern dwc_otg_pcd_t *dwc_otg_pcd_init(dwc_otg_core_if_t * core_if); + +/** Frees PCD allocated by dwc_otg_pcd_init + * + * @param pcd The PCD + */ +extern void dwc_otg_pcd_remove(dwc_otg_pcd_t * pcd); + +/** Call this to bind the function driver to the PCD Core. + * + * @param pcd Pointer on dwc_otg_pcd_t returned by dwc_otg_pcd_init function. + * @param fops The Function Driver Ops data structure containing pointers to all callbacks. + */ +extern void dwc_otg_pcd_start(dwc_otg_pcd_t * pcd, + const struct dwc_otg_pcd_function_ops *fops); + +/** Enables an endpoint for use. This function enables an endpoint in + * the PCD. The endpoint is described by the ep_desc which has the + * same format as a USB ep descriptor. The ep_handle parameter is used to refer + * to the endpoint from other API functions and in callbacks. Normally this + * should be called after a SET_CONFIGURATION/SET_INTERFACE to configure the + * core for that interface. + * + * Returns -DWC_E_INVALID if invalid parameters were passed. + * Returns -DWC_E_SHUTDOWN if any other error ocurred. + * Returns 0 on success. + * + * @param pcd The PCD + * @param ep_desc Endpoint descriptor + * @param usb_ep Handle on endpoint, that will be used to identify endpoint. + */ +extern int dwc_otg_pcd_ep_enable(dwc_otg_pcd_t * pcd, + const uint8_t * ep_desc, void *usb_ep); + +/** Disable the endpoint referenced by ep_handle. + * + * Returns -DWC_E_INVALID if invalid parameters were passed. + * Returns -DWC_E_SHUTDOWN if any other error occurred. + * Returns 0 on success. */ +extern int dwc_otg_pcd_ep_disable(dwc_otg_pcd_t * pcd, void *ep_handle); + +/** Queue a data transfer request on the endpoint referenced by ep_handle. + * After the transfer is completes, the complete callback will be called with + * the request status. + * + * @param pcd The PCD + * @param ep_handle The handle of the endpoint + * @param buf The buffer for the data + * @param dma_buf The DMA buffer for the data + * @param buflen The length of the data transfer + * @param zero Specifies whether to send zero length last packet. + * @param req_handle Set this handle to any value to use to reference this + * request in the ep_dequeue function or from the complete callback + * @param atomic_alloc If driver need to perform atomic allocations + * for internal data structures. + * + * Returns -DWC_E_INVALID if invalid parameters were passed. + * Returns -DWC_E_SHUTDOWN if any other error ocurred. + * Returns 0 on success. */ +extern int dwc_otg_pcd_ep_queue(dwc_otg_pcd_t * pcd, void *ep_handle, + uint8_t * buf, dwc_dma_t dma_buf, + uint32_t buflen, int zero, void *req_handle, + int atomic_alloc); +#ifdef DWC_UTE_PER_IO +/** + * + * @param ereq_nonport Pointer to the extended request part of the + * usb_request structure defined in usb_gadget.h file. + */ +extern int dwc_otg_pcd_xiso_ep_queue(dwc_otg_pcd_t * pcd, void *ep_handle, + uint8_t * buf, dwc_dma_t dma_buf, + uint32_t buflen, int zero, + void *req_handle, int atomic_alloc, + void *ereq_nonport); + +#endif + +/** De-queue the specified data transfer that has not yet completed. + * + * Returns -DWC_E_INVALID if invalid parameters were passed. + * Returns -DWC_E_SHUTDOWN if any other error ocurred. + * Returns 0 on success. */ +extern int dwc_otg_pcd_ep_dequeue(dwc_otg_pcd_t * pcd, void *ep_handle, + void *req_handle); + +/** Halt (STALL) an endpoint or clear it. + * + * Returns -DWC_E_INVALID if invalid parameters were passed. + * Returns -DWC_E_SHUTDOWN if any other error ocurred. + * Returns -DWC_E_AGAIN if the STALL cannot be sent and must be tried again later + * Returns 0 on success. */ +extern int dwc_otg_pcd_ep_halt(dwc_otg_pcd_t * pcd, void *ep_handle, int value); + +/** This function */ +extern int dwc_otg_pcd_ep_wedge(dwc_otg_pcd_t * pcd, void *ep_handle); + +/** This function should be called on every hardware interrupt */ +extern int32_t dwc_otg_pcd_handle_intr(dwc_otg_pcd_t * pcd); + +/** This function returns current frame number */ +extern int dwc_otg_pcd_get_frame_number(dwc_otg_pcd_t * pcd); + +/** + * Start isochronous transfers on the endpoint referenced by ep_handle. + * For isochronous transfers duble buffering is used. + * After processing each of buffers comlete callback will be called with + * status for each transaction. + * + * @param pcd The PCD + * @param ep_handle The handle of the endpoint + * @param buf0 The virtual address of first data buffer + * @param buf1 The virtual address of second data buffer + * @param dma0 The DMA address of first data buffer + * @param dma1 The DMA address of second data buffer + * @param sync_frame Data pattern frame number + * @param dp_frame Data size for pattern frame + * @param data_per_frame Data size for regular frame + * @param start_frame Frame number to start transfers, if -1 then start transfers ASAP. + * @param buf_proc_intrvl Interval of ISOC Buffer processing + * @param req_handle Handle of ISOC request + * @param atomic_alloc Specefies whether to perform atomic allocation for + * internal data structures. + * + * Returns -DWC_E_NO_MEMORY if there is no enough memory. + * Returns -DWC_E_INVALID if incorrect arguments are passed to the function. + * Returns -DW_E_SHUTDOWN for any other error. + * Returns 0 on success + */ +extern int dwc_otg_pcd_iso_ep_start(dwc_otg_pcd_t * pcd, void *ep_handle, + uint8_t * buf0, uint8_t * buf1, + dwc_dma_t dma0, dwc_dma_t dma1, + int sync_frame, int dp_frame, + int data_per_frame, int start_frame, + int buf_proc_intrvl, void *req_handle, + int atomic_alloc); + +/** Stop ISOC transfers on endpoint referenced by ep_handle. + * + * @param pcd The PCD + * @param ep_handle The handle of the endpoint + * @param req_handle Handle of ISOC request + * + * Returns -DWC_E_INVALID if incorrect arguments are passed to the function + * Returns 0 on success + */ +int dwc_otg_pcd_iso_ep_stop(dwc_otg_pcd_t * pcd, void *ep_handle, + void *req_handle); + +/** Get ISOC packet status. + * + * @param pcd The PCD + * @param ep_handle The handle of the endpoint + * @param iso_req_handle Isochronoush request handle + * @param packet Number of packet + * @param status Out parameter for returning status + * @param actual Out parameter for returning actual length + * @param offset Out parameter for returning offset + * + */ +extern void dwc_otg_pcd_get_iso_packet_params(dwc_otg_pcd_t * pcd, + void *ep_handle, + void *iso_req_handle, int packet, + int *status, int *actual, + int *offset); + +/** Get ISOC packet count. + * + * @param pcd The PCD + * @param ep_handle The handle of the endpoint + * @param iso_req_handle + */ +extern int dwc_otg_pcd_get_iso_packet_count(dwc_otg_pcd_t * pcd, + void *ep_handle, + void *iso_req_handle); + +/** This function starts the SRP Protocol if no session is in progress. If + * a session is already in progress, but the device is suspended, + * remote wakeup signaling is started. + */ +extern int dwc_otg_pcd_wakeup(dwc_otg_pcd_t * pcd); + +/** This function returns 1 if LPM support is enabled, and 0 otherwise. */ +extern int dwc_otg_pcd_is_lpm_enabled(dwc_otg_pcd_t * pcd); + +/** This function returns 1 if remote wakeup is allowed and 0, otherwise. */ +extern int dwc_otg_pcd_get_rmwkup_enable(dwc_otg_pcd_t * pcd); + +/** Initiate SRP */ +extern void dwc_otg_pcd_initiate_srp(dwc_otg_pcd_t * pcd); + +/** Starts remote wakeup signaling. */ +extern void dwc_otg_pcd_remote_wakeup(dwc_otg_pcd_t * pcd, int set); + +/** Starts micorsecond soft disconnect. */ +extern void dwc_otg_pcd_disconnect_us(dwc_otg_pcd_t * pcd, int no_of_usecs); +/** This function returns whether device is dualspeed.*/ +extern uint32_t dwc_otg_pcd_is_dualspeed(dwc_otg_pcd_t * pcd); + +/** This function returns whether device is otg. */ +extern uint32_t dwc_otg_pcd_is_otg(dwc_otg_pcd_t * pcd); + +/** These functions allow to get hnp parameters */ +extern uint32_t get_b_hnp_enable(dwc_otg_pcd_t * pcd); +extern uint32_t get_a_hnp_support(dwc_otg_pcd_t * pcd); +extern uint32_t get_a_alt_hnp_support(dwc_otg_pcd_t * pcd); + +/** CFI specific Interface functions */ +/** Allocate a cfi buffer */ +extern uint8_t *cfiw_ep_alloc_buffer(dwc_otg_pcd_t * pcd, void *pep, + dwc_dma_t * addr, size_t buflen, + int flags); + +/******************************************************************************/ + +/** @} */ + +#endif /* __DWC_PCD_IF_H__ */ + +#endif /* DWC_HOST_ONLY */ --- linux-raspi2-4.2.0.orig/drivers/usb/host/dwc_otg/dwc_otg_pcd_intr.c +++ linux-raspi2-4.2.0/drivers/usb/host/dwc_otg/dwc_otg_pcd_intr.c @@ -0,0 +1,5147 @@ +/* ========================================================================== + * $File: //dwh/usb_iip/dev/software/otg/linux/drivers/dwc_otg_pcd_intr.c $ + * $Revision: #116 $ + * $Date: 2012/08/10 $ + * $Change: 2047372 $ + * + * Synopsys HS OTG Linux Software Driver and documentation (hereinafter, + * "Software") is an Unsupported proprietary work of Synopsys, Inc. unless + * otherwise expressly agreed to in writing between Synopsys and you. + * + * The Software IS NOT an item of Licensed Software or Licensed Product under + * any End User Software License Agreement or Agreement for Licensed Product + * with Synopsys or any supplement thereto. You are permitted to use and + * redistribute this Software in source and binary forms, with or without + * modification, provided that redistributions of source code must retain this + * notice. You may not view, use, disclose, copy or distribute this file or + * any information contained herein except pursuant to this license grant from + * Synopsys. If you do not agree with this notice, including the disclaimer + * below, then you are not authorized to use the Software. + * + * THIS SOFTWARE IS BEING DISTRIBUTED BY SYNOPSYS SOLELY ON AN "AS IS" BASIS + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE HEREBY DISCLAIMED. IN NO EVENT SHALL SYNOPSYS BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH + * DAMAGE. + * ========================================================================== */ +#ifndef DWC_HOST_ONLY + +#include "dwc_otg_pcd.h" + +#ifdef DWC_UTE_CFI +#include "dwc_otg_cfi.h" +#endif + +#ifdef DWC_UTE_PER_IO +extern void complete_xiso_ep(dwc_otg_pcd_ep_t * ep); +#endif +//#define PRINT_CFI_DMA_DESCS + +#define DEBUG_EP0 + +/** + * This function updates OTG. + */ +static void dwc_otg_pcd_update_otg(dwc_otg_pcd_t * pcd, const unsigned reset) +{ + + if (reset) { + pcd->b_hnp_enable = 0; + pcd->a_hnp_support = 0; + pcd->a_alt_hnp_support = 0; + } + + if (pcd->fops->hnp_changed) { + pcd->fops->hnp_changed(pcd); + } +} + +/** @file + * This file contains the implementation of the PCD Interrupt handlers. + * + * The PCD handles the device interrupts. Many conditions can cause a + * device interrupt. When an interrupt occurs, the device interrupt + * service routine determines the cause of the interrupt and + * dispatches handling to the appropriate function. These interrupt + * handling functions are described below. + * All interrupt registers are processed from LSB to MSB. + */ + +/** + * This function prints the ep0 state for debug purposes. + */ +static inline void print_ep0_state(dwc_otg_pcd_t * pcd) +{ +#ifdef DEBUG + char str[40]; + + switch (pcd->ep0state) { + case EP0_DISCONNECT: + dwc_strcpy(str, "EP0_DISCONNECT"); + break; + case EP0_IDLE: + dwc_strcpy(str, "EP0_IDLE"); + break; + case EP0_IN_DATA_PHASE: + dwc_strcpy(str, "EP0_IN_DATA_PHASE"); + break; + case EP0_OUT_DATA_PHASE: + dwc_strcpy(str, "EP0_OUT_DATA_PHASE"); + break; + case EP0_IN_STATUS_PHASE: + dwc_strcpy(str, "EP0_IN_STATUS_PHASE"); + break; + case EP0_OUT_STATUS_PHASE: + dwc_strcpy(str, "EP0_OUT_STATUS_PHASE"); + break; + case EP0_STALL: + dwc_strcpy(str, "EP0_STALL"); + break; + default: + dwc_strcpy(str, "EP0_INVALID"); + } + + DWC_DEBUGPL(DBG_ANY, "%s(%d)\n", str, pcd->ep0state); +#endif +} + +/** + * This function calculate the size of the payload in the memory + * for out endpoints and prints size for debug purposes(used in + * 2.93a DevOutNak feature). + */ +static inline void print_memory_payload(dwc_otg_pcd_t * pcd, dwc_ep_t * ep) +{ +#ifdef DEBUG + deptsiz_data_t deptsiz_init = {.d32 = 0 }; + deptsiz_data_t deptsiz_updt = {.d32 = 0 }; + int pack_num; + unsigned payload; + + deptsiz_init.d32 = pcd->core_if->start_doeptsiz_val[ep->num]; + deptsiz_updt.d32 = + DWC_READ_REG32(&pcd->core_if->dev_if-> + out_ep_regs[ep->num]->doeptsiz); + /* Payload will be */ + payload = deptsiz_init.b.xfersize - deptsiz_updt.b.xfersize; + /* Packet count is decremented every time a packet + * is written to the RxFIFO not in to the external memory + * So, if payload == 0, then it means no packet was sent to ext memory*/ + pack_num = (!payload) ? 0 : (deptsiz_init.b.pktcnt - deptsiz_updt.b.pktcnt); + DWC_DEBUGPL(DBG_PCDV, + "Payload for EP%d-%s\n", + ep->num, (ep->is_in ? "IN" : "OUT")); + DWC_DEBUGPL(DBG_PCDV, + "Number of transfered bytes = 0x%08x\n", payload); + DWC_DEBUGPL(DBG_PCDV, + "Number of transfered packets = %d\n", pack_num); +#endif +} + + +#ifdef DWC_UTE_CFI +static inline void print_desc(struct dwc_otg_dma_desc *ddesc, + const uint8_t * epname, int descnum) +{ + CFI_INFO + ("%s DMA_DESC(%d) buf=0x%08x bytes=0x%04x; sp=0x%x; l=0x%x; sts=0x%02x; bs=0x%02x\n", + epname, descnum, ddesc->buf, ddesc->status.b.bytes, + ddesc->status.b.sp, ddesc->status.b.l, ddesc->status.b.sts, + ddesc->status.b.bs); +} +#endif + +/** + * This function returns pointer to in ep struct with number ep_num + */ +static inline dwc_otg_pcd_ep_t *get_in_ep(dwc_otg_pcd_t * pcd, uint32_t ep_num) +{ + int i; + int num_in_eps = GET_CORE_IF(pcd)->dev_if->num_in_eps; + if (ep_num == 0) { + return &pcd->ep0; + } else { + for (i = 0; i < num_in_eps; ++i) { + if (pcd->in_ep[i].dwc_ep.num == ep_num) + return &pcd->in_ep[i]; + } + return 0; + } +} + +/** + * This function returns pointer to out ep struct with number ep_num + */ +static inline dwc_otg_pcd_ep_t *get_out_ep(dwc_otg_pcd_t * pcd, uint32_t ep_num) +{ + int i; + int num_out_eps = GET_CORE_IF(pcd)->dev_if->num_out_eps; + if (ep_num == 0) { + return &pcd->ep0; + } else { + for (i = 0; i < num_out_eps; ++i) { + if (pcd->out_ep[i].dwc_ep.num == ep_num) + return &pcd->out_ep[i]; + } + return 0; + } +} + +/** + * This functions gets a pointer to an EP from the wIndex address + * value of the control request. + */ +dwc_otg_pcd_ep_t *get_ep_by_addr(dwc_otg_pcd_t * pcd, u16 wIndex) +{ + dwc_otg_pcd_ep_t *ep; + uint32_t ep_num = UE_GET_ADDR(wIndex); + + if (ep_num == 0) { + ep = &pcd->ep0; + } else if (UE_GET_DIR(wIndex) == UE_DIR_IN) { /* in ep */ + ep = &pcd->in_ep[ep_num - 1]; + } else { + ep = &pcd->out_ep[ep_num - 1]; + } + + return ep; +} + +/** + * This function checks the EP request queue, if the queue is not + * empty the next request is started. + */ +void start_next_request(dwc_otg_pcd_ep_t * ep) +{ + dwc_otg_pcd_request_t *req = 0; + uint32_t max_transfer = + GET_CORE_IF(ep->pcd)->core_params->max_transfer_size; + +#ifdef DWC_UTE_CFI + struct dwc_otg_pcd *pcd; + pcd = ep->pcd; +#endif + + if (!DWC_CIRCLEQ_EMPTY(&ep->queue)) { + req = DWC_CIRCLEQ_FIRST(&ep->queue); + +#ifdef DWC_UTE_CFI + if (ep->dwc_ep.buff_mode != BM_STANDARD) { + ep->dwc_ep.cfi_req_len = req->length; + pcd->cfi->ops.build_descriptors(pcd->cfi, pcd, ep, req); + } else { +#endif + /* Setup and start the Transfer */ + if (req->dw_align_buf) { + ep->dwc_ep.dma_addr = req->dw_align_buf_dma; + ep->dwc_ep.start_xfer_buff = req->dw_align_buf; + ep->dwc_ep.xfer_buff = req->dw_align_buf; + } else { + ep->dwc_ep.dma_addr = req->dma; + ep->dwc_ep.start_xfer_buff = req->buf; + ep->dwc_ep.xfer_buff = req->buf; + } + ep->dwc_ep.sent_zlp = 0; + ep->dwc_ep.total_len = req->length; + ep->dwc_ep.xfer_len = 0; + ep->dwc_ep.xfer_count = 0; + + ep->dwc_ep.maxxfer = max_transfer; + if (GET_CORE_IF(ep->pcd)->dma_desc_enable) { + uint32_t out_max_xfer = DDMA_MAX_TRANSFER_SIZE + - (DDMA_MAX_TRANSFER_SIZE % 4); + if (ep->dwc_ep.is_in) { + if (ep->dwc_ep.maxxfer > + DDMA_MAX_TRANSFER_SIZE) { + ep->dwc_ep.maxxfer = + DDMA_MAX_TRANSFER_SIZE; + } + } else { + if (ep->dwc_ep.maxxfer > out_max_xfer) { + ep->dwc_ep.maxxfer = + out_max_xfer; + } + } + } + if (ep->dwc_ep.maxxfer < ep->dwc_ep.total_len) { + ep->dwc_ep.maxxfer -= + (ep->dwc_ep.maxxfer % ep->dwc_ep.maxpacket); + } + if (req->sent_zlp) { + if ((ep->dwc_ep.total_len % + ep->dwc_ep.maxpacket == 0) + && (ep->dwc_ep.total_len != 0)) { + ep->dwc_ep.sent_zlp = 1; + } + + } +#ifdef DWC_UTE_CFI + } +#endif + dwc_otg_ep_start_transfer(GET_CORE_IF(ep->pcd), &ep->dwc_ep); + } else if (ep->dwc_ep.type == DWC_OTG_EP_TYPE_ISOC) { + DWC_PRINTF("There are no more ISOC requests \n"); + ep->dwc_ep.frame_num = 0xFFFFFFFF; + } +} + +/** + * This function handles the SOF Interrupts. At this time the SOF + * Interrupt is disabled. + */ +int32_t dwc_otg_pcd_handle_sof_intr(dwc_otg_pcd_t * pcd) +{ + dwc_otg_core_if_t *core_if = GET_CORE_IF(pcd); + + gintsts_data_t gintsts; + + DWC_DEBUGPL(DBG_PCD, "SOF\n"); + + /* Clear interrupt */ + gintsts.d32 = 0; + gintsts.b.sofintr = 1; + DWC_WRITE_REG32(&core_if->core_global_regs->gintsts, gintsts.d32); + + return 1; +} + +/** + * This function handles the Rx Status Queue Level Interrupt, which + * indicates that there is a least one packet in the Rx FIFO. The + * packets are moved from the FIFO to memory, where they will be + * processed when the Endpoint Interrupt Register indicates Transfer + * Complete or SETUP Phase Done. + * + * Repeat the following until the Rx Status Queue is empty: + * -# Read the Receive Status Pop Register (GRXSTSP) to get Packet + * info + * -# If Receive FIFO is empty then skip to step Clear the interrupt + * and exit + * -# If SETUP Packet call dwc_otg_read_setup_packet to copy the + * SETUP data to the buffer + * -# If OUT Data Packet call dwc_otg_read_packet to copy the data + * to the destination buffer + */ +int32_t dwc_otg_pcd_handle_rx_status_q_level_intr(dwc_otg_pcd_t * pcd) +{ + dwc_otg_core_if_t *core_if = GET_CORE_IF(pcd); + dwc_otg_core_global_regs_t *global_regs = core_if->core_global_regs; + gintmsk_data_t gintmask = {.d32 = 0 }; + device_grxsts_data_t status; + dwc_otg_pcd_ep_t *ep; + gintsts_data_t gintsts; +#ifdef DEBUG + static char *dpid_str[] = { "D0", "D2", "D1", "MDATA" }; +#endif + + //DWC_DEBUGPL(DBG_PCDV, "%s(%p)\n", __func__, _pcd); + /* Disable the Rx Status Queue Level interrupt */ + gintmask.b.rxstsqlvl = 1; + DWC_MODIFY_REG32(&global_regs->gintmsk, gintmask.d32, 0); + + /* Get the Status from the top of the FIFO */ + status.d32 = DWC_READ_REG32(&global_regs->grxstsp); + + DWC_DEBUGPL(DBG_PCD, "EP:%d BCnt:%d DPID:%s " + "pktsts:%x Frame:%d(0x%0x)\n", + status.b.epnum, status.b.bcnt, + dpid_str[status.b.dpid], + status.b.pktsts, status.b.fn, status.b.fn); + /* Get pointer to EP structure */ + ep = get_out_ep(pcd, status.b.epnum); + + switch (status.b.pktsts) { + case DWC_DSTS_GOUT_NAK: + DWC_DEBUGPL(DBG_PCDV, "Global OUT NAK\n"); + break; + case DWC_STS_DATA_UPDT: + DWC_DEBUGPL(DBG_PCDV, "OUT Data Packet\n"); + if (status.b.bcnt && ep->dwc_ep.xfer_buff) { + /** @todo NGS Check for buffer overflow? */ + dwc_otg_read_packet(core_if, + ep->dwc_ep.xfer_buff, + status.b.bcnt); + ep->dwc_ep.xfer_count += status.b.bcnt; + ep->dwc_ep.xfer_buff += status.b.bcnt; + } + break; + case DWC_STS_XFER_COMP: + DWC_DEBUGPL(DBG_PCDV, "OUT Complete\n"); + break; + case DWC_DSTS_SETUP_COMP: +#ifdef DEBUG_EP0 + DWC_DEBUGPL(DBG_PCDV, "Setup Complete\n"); +#endif + break; + case DWC_DSTS_SETUP_UPDT: + dwc_otg_read_setup_packet(core_if, pcd->setup_pkt->d32); +#ifdef DEBUG_EP0 + DWC_DEBUGPL(DBG_PCD, + "SETUP PKT: %02x.%02x v%04x i%04x l%04x\n", + pcd->setup_pkt->req.bmRequestType, + pcd->setup_pkt->req.bRequest, + UGETW(pcd->setup_pkt->req.wValue), + UGETW(pcd->setup_pkt->req.wIndex), + UGETW(pcd->setup_pkt->req.wLength)); +#endif + ep->dwc_ep.xfer_count += status.b.bcnt; + break; + default: + DWC_DEBUGPL(DBG_PCDV, "Invalid Packet Status (0x%0x)\n", + status.b.pktsts); + break; + } + + /* Enable the Rx Status Queue Level interrupt */ + DWC_MODIFY_REG32(&global_regs->gintmsk, 0, gintmask.d32); + /* Clear interrupt */ + gintsts.d32 = 0; + gintsts.b.rxstsqlvl = 1; + DWC_WRITE_REG32(&global_regs->gintsts, gintsts.d32); + + //DWC_DEBUGPL(DBG_PCDV, "EXIT: %s\n", __func__); + return 1; +} + +/** + * This function examines the Device IN Token Learning Queue to + * determine the EP number of the last IN token received. This + * implementation is for the Mass Storage device where there are only + * 2 IN EPs (Control-IN and BULK-IN). + * + * The EP numbers for the first six IN Tokens are in DTKNQR1 and there + * are 8 EP Numbers in each of the other possible DTKNQ Registers. + * + * @param core_if Programming view of DWC_otg controller. + * + */ +static inline int get_ep_of_last_in_token(dwc_otg_core_if_t * core_if) +{ + dwc_otg_device_global_regs_t *dev_global_regs = + core_if->dev_if->dev_global_regs; + const uint32_t TOKEN_Q_DEPTH = core_if->hwcfg2.b.dev_token_q_depth; + /* Number of Token Queue Registers */ + const int DTKNQ_REG_CNT = (TOKEN_Q_DEPTH + 7) / 8; + dtknq1_data_t dtknqr1; + uint32_t in_tkn_epnums[4]; + int ndx = 0; + int i = 0; + volatile uint32_t *addr = &dev_global_regs->dtknqr1; + int epnum = 0; + + //DWC_DEBUGPL(DBG_PCD,"dev_token_q_depth=%d\n",TOKEN_Q_DEPTH); + + /* Read the DTKNQ Registers */ + for (i = 0; i < DTKNQ_REG_CNT; i++) { + in_tkn_epnums[i] = DWC_READ_REG32(addr); + DWC_DEBUGPL(DBG_PCDV, "DTKNQR%d=0x%08x\n", i + 1, + in_tkn_epnums[i]); + if (addr == &dev_global_regs->dvbusdis) { + addr = &dev_global_regs->dtknqr3_dthrctl; + } else { + ++addr; + } + + } + + /* Copy the DTKNQR1 data to the bit field. */ + dtknqr1.d32 = in_tkn_epnums[0]; + /* Get the EP numbers */ + in_tkn_epnums[0] = dtknqr1.b.epnums0_5; + ndx = dtknqr1.b.intknwptr - 1; + + //DWC_DEBUGPL(DBG_PCDV,"ndx=%d\n",ndx); + if (ndx == -1) { + /** @todo Find a simpler way to calculate the max + * queue position.*/ + int cnt = TOKEN_Q_DEPTH; + if (TOKEN_Q_DEPTH <= 6) { + cnt = TOKEN_Q_DEPTH - 1; + } else if (TOKEN_Q_DEPTH <= 14) { + cnt = TOKEN_Q_DEPTH - 7; + } else if (TOKEN_Q_DEPTH <= 22) { + cnt = TOKEN_Q_DEPTH - 15; + } else { + cnt = TOKEN_Q_DEPTH - 23; + } + epnum = (in_tkn_epnums[DTKNQ_REG_CNT - 1] >> (cnt * 4)) & 0xF; + } else { + if (ndx <= 5) { + epnum = (in_tkn_epnums[0] >> (ndx * 4)) & 0xF; + } else if (ndx <= 13) { + ndx -= 6; + epnum = (in_tkn_epnums[1] >> (ndx * 4)) & 0xF; + } else if (ndx <= 21) { + ndx -= 14; + epnum = (in_tkn_epnums[2] >> (ndx * 4)) & 0xF; + } else if (ndx <= 29) { + ndx -= 22; + epnum = (in_tkn_epnums[3] >> (ndx * 4)) & 0xF; + } + } + //DWC_DEBUGPL(DBG_PCD,"epnum=%d\n",epnum); + return epnum; +} + +/** + * This interrupt occurs when the non-periodic Tx FIFO is half-empty. + * The active request is checked for the next packet to be loaded into + * the non-periodic Tx FIFO. + */ +int32_t dwc_otg_pcd_handle_np_tx_fifo_empty_intr(dwc_otg_pcd_t * pcd) +{ + dwc_otg_core_if_t *core_if = GET_CORE_IF(pcd); + dwc_otg_core_global_regs_t *global_regs = core_if->core_global_regs; + dwc_otg_dev_in_ep_regs_t *ep_regs; + gnptxsts_data_t txstatus = {.d32 = 0 }; + gintsts_data_t gintsts; + + int epnum = 0; + dwc_otg_pcd_ep_t *ep = 0; + uint32_t len = 0; + int dwords; + + /* Get the epnum from the IN Token Learning Queue. */ + epnum = get_ep_of_last_in_token(core_if); + ep = get_in_ep(pcd, epnum); + + DWC_DEBUGPL(DBG_PCD, "NP TxFifo Empty: %d \n", epnum); + + ep_regs = core_if->dev_if->in_ep_regs[epnum]; + + len = ep->dwc_ep.xfer_len - ep->dwc_ep.xfer_count; + if (len > ep->dwc_ep.maxpacket) { + len = ep->dwc_ep.maxpacket; + } + dwords = (len + 3) / 4; + + /* While there is space in the queue and space in the FIFO and + * More data to tranfer, Write packets to the Tx FIFO */ + txstatus.d32 = DWC_READ_REG32(&global_regs->gnptxsts); + DWC_DEBUGPL(DBG_PCDV, "b4 GNPTXSTS=0x%08x\n", txstatus.d32); + + while (txstatus.b.nptxqspcavail > 0 && + txstatus.b.nptxfspcavail > dwords && + ep->dwc_ep.xfer_count < ep->dwc_ep.xfer_len) { + /* Write the FIFO */ + dwc_otg_ep_write_packet(core_if, &ep->dwc_ep, 0); + len = ep->dwc_ep.xfer_len - ep->dwc_ep.xfer_count; + + if (len > ep->dwc_ep.maxpacket) { + len = ep->dwc_ep.maxpacket; + } + + dwords = (len + 3) / 4; + txstatus.d32 = DWC_READ_REG32(&global_regs->gnptxsts); + DWC_DEBUGPL(DBG_PCDV, "GNPTXSTS=0x%08x\n", txstatus.d32); + } + + DWC_DEBUGPL(DBG_PCDV, "GNPTXSTS=0x%08x\n", + DWC_READ_REG32(&global_regs->gnptxsts)); + + /* Clear interrupt */ + gintsts.d32 = 0; + gintsts.b.nptxfempty = 1; + DWC_WRITE_REG32(&global_regs->gintsts, gintsts.d32); + + return 1; +} + +/** + * This function is called when dedicated Tx FIFO Empty interrupt occurs. + * The active request is checked for the next packet to be loaded into + * apropriate Tx FIFO. + */ +static int32_t write_empty_tx_fifo(dwc_otg_pcd_t * pcd, uint32_t epnum) +{ + dwc_otg_core_if_t *core_if = GET_CORE_IF(pcd); + dwc_otg_dev_if_t *dev_if = core_if->dev_if; + dwc_otg_dev_in_ep_regs_t *ep_regs; + dtxfsts_data_t txstatus = {.d32 = 0 }; + dwc_otg_pcd_ep_t *ep = 0; + uint32_t len = 0; + int dwords; + + ep = get_in_ep(pcd, epnum); + + DWC_DEBUGPL(DBG_PCD, "Dedicated TxFifo Empty: %d \n", epnum); + + ep_regs = core_if->dev_if->in_ep_regs[epnum]; + + len = ep->dwc_ep.xfer_len - ep->dwc_ep.xfer_count; + + if (len > ep->dwc_ep.maxpacket) { + len = ep->dwc_ep.maxpacket; + } + + dwords = (len + 3) / 4; + + /* While there is space in the queue and space in the FIFO and + * More data to tranfer, Write packets to the Tx FIFO */ + txstatus.d32 = DWC_READ_REG32(&dev_if->in_ep_regs[epnum]->dtxfsts); + DWC_DEBUGPL(DBG_PCDV, "b4 dtxfsts[%d]=0x%08x\n", epnum, txstatus.d32); + + while (txstatus.b.txfspcavail > dwords && + ep->dwc_ep.xfer_count < ep->dwc_ep.xfer_len && + ep->dwc_ep.xfer_len != 0) { + /* Write the FIFO */ + dwc_otg_ep_write_packet(core_if, &ep->dwc_ep, 0); + + len = ep->dwc_ep.xfer_len - ep->dwc_ep.xfer_count; + if (len > ep->dwc_ep.maxpacket) { + len = ep->dwc_ep.maxpacket; + } + + dwords = (len + 3) / 4; + txstatus.d32 = + DWC_READ_REG32(&dev_if->in_ep_regs[epnum]->dtxfsts); + DWC_DEBUGPL(DBG_PCDV, "dtxfsts[%d]=0x%08x\n", epnum, + txstatus.d32); + } + + DWC_DEBUGPL(DBG_PCDV, "b4 dtxfsts[%d]=0x%08x\n", epnum, + DWC_READ_REG32(&dev_if->in_ep_regs[epnum]->dtxfsts)); + + return 1; +} + +/** + * This function is called when the Device is disconnected. It stops + * any active requests and informs the Gadget driver of the + * disconnect. + */ +void dwc_otg_pcd_stop(dwc_otg_pcd_t * pcd) +{ + int i, num_in_eps, num_out_eps; + dwc_otg_pcd_ep_t *ep; + + gintmsk_data_t intr_mask = {.d32 = 0 }; + + DWC_SPINLOCK(pcd->lock); + + num_in_eps = GET_CORE_IF(pcd)->dev_if->num_in_eps; + num_out_eps = GET_CORE_IF(pcd)->dev_if->num_out_eps; + + DWC_DEBUGPL(DBG_PCDV, "%s() \n", __func__); + /* don't disconnect drivers more than once */ + if (pcd->ep0state == EP0_DISCONNECT) { + DWC_DEBUGPL(DBG_ANY, "%s() Already Disconnected\n", __func__); + DWC_SPINUNLOCK(pcd->lock); + return; + } + pcd->ep0state = EP0_DISCONNECT; + + /* Reset the OTG state. */ + dwc_otg_pcd_update_otg(pcd, 1); + + /* Disable the NP Tx Fifo Empty Interrupt. */ + intr_mask.b.nptxfempty = 1; + DWC_MODIFY_REG32(&GET_CORE_IF(pcd)->core_global_regs->gintmsk, + intr_mask.d32, 0); + + /* Flush the FIFOs */ + /**@todo NGS Flush Periodic FIFOs */ + dwc_otg_flush_tx_fifo(GET_CORE_IF(pcd), 0x10); + dwc_otg_flush_rx_fifo(GET_CORE_IF(pcd)); + + /* prevent new request submissions, kill any outstanding requests */ + ep = &pcd->ep0; + dwc_otg_request_nuke(ep); + /* prevent new request submissions, kill any outstanding requests */ + for (i = 0; i < num_in_eps; i++) { + dwc_otg_pcd_ep_t *ep = &pcd->in_ep[i]; + dwc_otg_request_nuke(ep); + } + /* prevent new request submissions, kill any outstanding requests */ + for (i = 0; i < num_out_eps; i++) { + dwc_otg_pcd_ep_t *ep = &pcd->out_ep[i]; + dwc_otg_request_nuke(ep); + } + + /* report disconnect; the driver is already quiesced */ + if (pcd->fops->disconnect) { + DWC_SPINUNLOCK(pcd->lock); + pcd->fops->disconnect(pcd); + DWC_SPINLOCK(pcd->lock); + } + DWC_SPINUNLOCK(pcd->lock); +} + +/** + * This interrupt indicates that ... + */ +int32_t dwc_otg_pcd_handle_i2c_intr(dwc_otg_pcd_t * pcd) +{ + gintmsk_data_t intr_mask = {.d32 = 0 }; + gintsts_data_t gintsts; + + DWC_PRINTF("INTERRUPT Handler not implemented for %s\n", "i2cintr"); + intr_mask.b.i2cintr = 1; + DWC_MODIFY_REG32(&GET_CORE_IF(pcd)->core_global_regs->gintmsk, + intr_mask.d32, 0); + + /* Clear interrupt */ + gintsts.d32 = 0; + gintsts.b.i2cintr = 1; + DWC_WRITE_REG32(&GET_CORE_IF(pcd)->core_global_regs->gintsts, + gintsts.d32); + return 1; +} + +/** + * This interrupt indicates that ... + */ +int32_t dwc_otg_pcd_handle_early_suspend_intr(dwc_otg_pcd_t * pcd) +{ + gintsts_data_t gintsts; +#if defined(VERBOSE) + DWC_PRINTF("Early Suspend Detected\n"); +#endif + + /* Clear interrupt */ + gintsts.d32 = 0; + gintsts.b.erlysuspend = 1; + DWC_WRITE_REG32(&GET_CORE_IF(pcd)->core_global_regs->gintsts, + gintsts.d32); + return 1; +} + +/** + * This function configures EPO to receive SETUP packets. + * + * @todo NGS: Update the comments from the HW FS. + * + * -# Program the following fields in the endpoint specific registers + * for Control OUT EP 0, in order to receive a setup packet + * - DOEPTSIZ0.Packet Count = 3 (To receive up to 3 back to back + * setup packets) + * - DOEPTSIZE0.Transfer Size = 24 Bytes (To receive up to 3 back + * to back setup packets) + * - In DMA mode, DOEPDMA0 Register with a memory address to + * store any setup packets received + * + * @param core_if Programming view of DWC_otg controller. + * @param pcd Programming view of the PCD. + */ +static inline void ep0_out_start(dwc_otg_core_if_t * core_if, + dwc_otg_pcd_t * pcd) +{ + dwc_otg_dev_if_t *dev_if = core_if->dev_if; + deptsiz0_data_t doeptsize0 = {.d32 = 0 }; + dwc_otg_dev_dma_desc_t *dma_desc; + depctl_data_t doepctl = {.d32 = 0 }; + +#ifdef VERBOSE + DWC_DEBUGPL(DBG_PCDV, "%s() doepctl0=%0x\n", __func__, + DWC_READ_REG32(&dev_if->out_ep_regs[0]->doepctl)); +#endif + if (core_if->snpsid >= OTG_CORE_REV_3_00a) { + doepctl.d32 = DWC_READ_REG32(&dev_if->out_ep_regs[0]->doepctl); + if (doepctl.b.epena) { + return; + } + } + + doeptsize0.b.supcnt = 3; + doeptsize0.b.pktcnt = 1; + doeptsize0.b.xfersize = 8 * 3; + + if (core_if->dma_enable) { + if (!core_if->dma_desc_enable) { + /** put here as for Hermes mode deptisz register should not be written */ + DWC_WRITE_REG32(&dev_if->out_ep_regs[0]->doeptsiz, + doeptsize0.d32); + + /** @todo dma needs to handle multiple setup packets (up to 3) */ + DWC_WRITE_REG32(&dev_if->out_ep_regs[0]->doepdma, + pcd->setup_pkt_dma_handle); + } else { + dev_if->setup_desc_index = + (dev_if->setup_desc_index + 1) & 1; + dma_desc = + dev_if->setup_desc_addr[dev_if->setup_desc_index]; + + /** DMA Descriptor Setup */ + dma_desc->status.b.bs = BS_HOST_BUSY; + if (core_if->snpsid >= OTG_CORE_REV_3_00a) { + dma_desc->status.b.sr = 0; + dma_desc->status.b.mtrf = 0; + } + dma_desc->status.b.l = 1; + dma_desc->status.b.ioc = 1; + dma_desc->status.b.bytes = pcd->ep0.dwc_ep.maxpacket; + dma_desc->buf = pcd->setup_pkt_dma_handle; + dma_desc->status.b.sts = 0; + dma_desc->status.b.bs = BS_HOST_READY; + + /** DOEPDMA0 Register write */ + DWC_WRITE_REG32(&dev_if->out_ep_regs[0]->doepdma, + dev_if->dma_setup_desc_addr + [dev_if->setup_desc_index]); + } + + } else { + /** put here as for Hermes mode deptisz register should not be written */ + DWC_WRITE_REG32(&dev_if->out_ep_regs[0]->doeptsiz, + doeptsize0.d32); + } + + /** DOEPCTL0 Register write cnak will be set after setup interrupt */ + doepctl.d32 = 0; + doepctl.b.epena = 1; + if (core_if->snpsid <= OTG_CORE_REV_2_94a) { + doepctl.b.cnak = 1; + DWC_WRITE_REG32(&dev_if->out_ep_regs[0]->doepctl, doepctl.d32); + } else { + DWC_MODIFY_REG32(&dev_if->out_ep_regs[0]->doepctl, 0, doepctl.d32); + } + +#ifdef VERBOSE + DWC_DEBUGPL(DBG_PCDV, "doepctl0=%0x\n", + DWC_READ_REG32(&dev_if->out_ep_regs[0]->doepctl)); + DWC_DEBUGPL(DBG_PCDV, "diepctl0=%0x\n", + DWC_READ_REG32(&dev_if->in_ep_regs[0]->diepctl)); +#endif +} + +/** + * This interrupt occurs when a USB Reset is detected. When the USB + * Reset Interrupt occurs the device state is set to DEFAULT and the + * EP0 state is set to IDLE. + * -# Set the NAK bit for all OUT endpoints (DOEPCTLn.SNAK = 1) + * -# Unmask the following interrupt bits + * - DAINTMSK.INEP0 = 1 (Control 0 IN endpoint) + * - DAINTMSK.OUTEP0 = 1 (Control 0 OUT endpoint) + * - DOEPMSK.SETUP = 1 + * - DOEPMSK.XferCompl = 1 + * - DIEPMSK.XferCompl = 1 + * - DIEPMSK.TimeOut = 1 + * -# Program the following fields in the endpoint specific registers + * for Control OUT EP 0, in order to receive a setup packet + * - DOEPTSIZ0.Packet Count = 3 (To receive up to 3 back to back + * setup packets) + * - DOEPTSIZE0.Transfer Size = 24 Bytes (To receive up to 3 back + * to back setup packets) + * - In DMA mode, DOEPDMA0 Register with a memory address to + * store any setup packets received + * At this point, all the required initialization, except for enabling + * the control 0 OUT endpoint is done, for receiving SETUP packets. + */ +int32_t dwc_otg_pcd_handle_usb_reset_intr(dwc_otg_pcd_t * pcd) +{ + dwc_otg_core_if_t *core_if = GET_CORE_IF(pcd); + dwc_otg_dev_if_t *dev_if = core_if->dev_if; + depctl_data_t doepctl = {.d32 = 0 }; + depctl_data_t diepctl = {.d32 = 0 }; + daint_data_t daintmsk = {.d32 = 0 }; + doepmsk_data_t doepmsk = {.d32 = 0 }; + diepmsk_data_t diepmsk = {.d32 = 0 }; + dcfg_data_t dcfg = {.d32 = 0 }; + grstctl_t resetctl = {.d32 = 0 }; + dctl_data_t dctl = {.d32 = 0 }; + int i = 0; + gintsts_data_t gintsts; + pcgcctl_data_t power = {.d32 = 0 }; + + power.d32 = DWC_READ_REG32(core_if->pcgcctl); + if (power.b.stoppclk) { + power.d32 = 0; + power.b.stoppclk = 1; + DWC_MODIFY_REG32(core_if->pcgcctl, power.d32, 0); + + power.b.pwrclmp = 1; + DWC_MODIFY_REG32(core_if->pcgcctl, power.d32, 0); + + power.b.rstpdwnmodule = 1; + DWC_MODIFY_REG32(core_if->pcgcctl, power.d32, 0); + } + + core_if->lx_state = DWC_OTG_L0; + + DWC_PRINTF("USB RESET\n"); +#ifdef DWC_EN_ISOC + for (i = 1; i < 16; ++i) { + dwc_otg_pcd_ep_t *ep; + dwc_ep_t *dwc_ep; + ep = get_in_ep(pcd, i); + if (ep != 0) { + dwc_ep = &ep->dwc_ep; + dwc_ep->next_frame = 0xffffffff; + } + } +#endif /* DWC_EN_ISOC */ + + /* reset the HNP settings */ + dwc_otg_pcd_update_otg(pcd, 1); + + /* Clear the Remote Wakeup Signalling */ + dctl.b.rmtwkupsig = 1; + DWC_MODIFY_REG32(&core_if->dev_if->dev_global_regs->dctl, dctl.d32, 0); + + /* Set NAK for all OUT EPs */ + doepctl.b.snak = 1; + for (i = 0; i <= dev_if->num_out_eps; i++) { + DWC_WRITE_REG32(&dev_if->out_ep_regs[i]->doepctl, doepctl.d32); + } + + /* Flush the NP Tx FIFO */ + dwc_otg_flush_tx_fifo(core_if, 0x10); + /* Flush the Learning Queue */ + resetctl.b.intknqflsh = 1; + DWC_WRITE_REG32(&core_if->core_global_regs->grstctl, resetctl.d32); + + if (!core_if->core_params->en_multiple_tx_fifo && core_if->dma_enable) { + core_if->start_predict = 0; + for (i = 0; i<= core_if->dev_if->num_in_eps; ++i) { + core_if->nextep_seq[i] = 0xff; // 0xff - EP not active + } + core_if->nextep_seq[0] = 0; + core_if->first_in_nextep_seq = 0; + diepctl.d32 = DWC_READ_REG32(&dev_if->in_ep_regs[0]->diepctl); + diepctl.b.nextep = 0; + DWC_WRITE_REG32(&dev_if->in_ep_regs[0]->diepctl, diepctl.d32); + + /* Update IN Endpoint Mismatch Count by active IN NP EP count + 1 */ + dcfg.d32 = DWC_READ_REG32(&dev_if->dev_global_regs->dcfg); + dcfg.b.epmscnt = 2; + DWC_WRITE_REG32(&dev_if->dev_global_regs->dcfg, dcfg.d32); + + DWC_DEBUGPL(DBG_PCDV, + "%s first_in_nextep_seq= %2d; nextep_seq[]:\n", + __func__, core_if->first_in_nextep_seq); + for (i=0; i <= core_if->dev_if->num_in_eps; i++) { + DWC_DEBUGPL(DBG_PCDV, "%2d\n", core_if->nextep_seq[i]); + } + } + + if (core_if->multiproc_int_enable) { + daintmsk.b.inep0 = 1; + daintmsk.b.outep0 = 1; + DWC_WRITE_REG32(&dev_if->dev_global_regs->deachintmsk, + daintmsk.d32); + + doepmsk.b.setup = 1; + doepmsk.b.xfercompl = 1; + doepmsk.b.ahberr = 1; + doepmsk.b.epdisabled = 1; + + if ((core_if->dma_desc_enable) || + (core_if->dma_enable + && core_if->snpsid >= OTG_CORE_REV_3_00a)) { + doepmsk.b.stsphsercvd = 1; + } + if (core_if->dma_desc_enable) + doepmsk.b.bna = 1; +/* + doepmsk.b.babble = 1; + doepmsk.b.nyet = 1; + + if (core_if->dma_enable) { + doepmsk.b.nak = 1; + } +*/ + DWC_WRITE_REG32(&dev_if->dev_global_regs->doepeachintmsk[0], + doepmsk.d32); + + diepmsk.b.xfercompl = 1; + diepmsk.b.timeout = 1; + diepmsk.b.epdisabled = 1; + diepmsk.b.ahberr = 1; + diepmsk.b.intknepmis = 1; + if (!core_if->en_multiple_tx_fifo && core_if->dma_enable) + diepmsk.b.intknepmis = 0; + +/* if (core_if->dma_desc_enable) { + diepmsk.b.bna = 1; + } +*/ +/* + if (core_if->dma_enable) { + diepmsk.b.nak = 1; + } +*/ + DWC_WRITE_REG32(&dev_if->dev_global_regs->diepeachintmsk[0], + diepmsk.d32); + } else { + daintmsk.b.inep0 = 1; + daintmsk.b.outep0 = 1; + DWC_WRITE_REG32(&dev_if->dev_global_regs->daintmsk, + daintmsk.d32); + + doepmsk.b.setup = 1; + doepmsk.b.xfercompl = 1; + doepmsk.b.ahberr = 1; + doepmsk.b.epdisabled = 1; + + if ((core_if->dma_desc_enable) || + (core_if->dma_enable + && core_if->snpsid >= OTG_CORE_REV_3_00a)) { + doepmsk.b.stsphsercvd = 1; + } + if (core_if->dma_desc_enable) + doepmsk.b.bna = 1; + DWC_WRITE_REG32(&dev_if->dev_global_regs->doepmsk, doepmsk.d32); + + diepmsk.b.xfercompl = 1; + diepmsk.b.timeout = 1; + diepmsk.b.epdisabled = 1; + diepmsk.b.ahberr = 1; + if (!core_if->en_multiple_tx_fifo && core_if->dma_enable) + diepmsk.b.intknepmis = 0; +/* + if (core_if->dma_desc_enable) { + diepmsk.b.bna = 1; + } +*/ + + DWC_WRITE_REG32(&dev_if->dev_global_regs->diepmsk, diepmsk.d32); + } + + /* Reset Device Address */ + dcfg.d32 = DWC_READ_REG32(&dev_if->dev_global_regs->dcfg); + dcfg.b.devaddr = 0; + DWC_WRITE_REG32(&dev_if->dev_global_regs->dcfg, dcfg.d32); + + /* setup EP0 to receive SETUP packets */ + if (core_if->snpsid <= OTG_CORE_REV_2_94a) + ep0_out_start(core_if, pcd); + + /* Clear interrupt */ + gintsts.d32 = 0; + gintsts.b.usbreset = 1; + DWC_WRITE_REG32(&core_if->core_global_regs->gintsts, gintsts.d32); + + return 1; +} + +/** + * Get the device speed from the device status register and convert it + * to USB speed constant. + * + * @param core_if Programming view of DWC_otg controller. + */ +static int get_device_speed(dwc_otg_core_if_t * core_if) +{ + dsts_data_t dsts; + int speed = 0; + dsts.d32 = DWC_READ_REG32(&core_if->dev_if->dev_global_regs->dsts); + + switch (dsts.b.enumspd) { + case DWC_DSTS_ENUMSPD_HS_PHY_30MHZ_OR_60MHZ: + speed = USB_SPEED_HIGH; + break; + case DWC_DSTS_ENUMSPD_FS_PHY_30MHZ_OR_60MHZ: + case DWC_DSTS_ENUMSPD_FS_PHY_48MHZ: + speed = USB_SPEED_FULL; + break; + + case DWC_DSTS_ENUMSPD_LS_PHY_6MHZ: + speed = USB_SPEED_LOW; + break; + } + + return speed; +} + +/** + * Read the device status register and set the device speed in the + * data structure. + * Set up EP0 to receive SETUP packets by calling dwc_ep0_activate. + */ +int32_t dwc_otg_pcd_handle_enum_done_intr(dwc_otg_pcd_t * pcd) +{ + dwc_otg_pcd_ep_t *ep0 = &pcd->ep0; + gintsts_data_t gintsts; + gusbcfg_data_t gusbcfg; + dwc_otg_core_global_regs_t *global_regs = + GET_CORE_IF(pcd)->core_global_regs; + uint8_t utmi16b, utmi8b; + int speed; + DWC_DEBUGPL(DBG_PCD, "SPEED ENUM\n"); + + if (GET_CORE_IF(pcd)->snpsid >= OTG_CORE_REV_2_60a) { + utmi16b = 6; //vahrama old value was 6; + utmi8b = 9; + } else { + utmi16b = 4; + utmi8b = 8; + } + dwc_otg_ep0_activate(GET_CORE_IF(pcd), &ep0->dwc_ep); + if (GET_CORE_IF(pcd)->snpsid >= OTG_CORE_REV_3_00a) { + ep0_out_start(GET_CORE_IF(pcd), pcd); + } + +#ifdef DEBUG_EP0 + print_ep0_state(pcd); +#endif + + if (pcd->ep0state == EP0_DISCONNECT) { + pcd->ep0state = EP0_IDLE; + } else if (pcd->ep0state == EP0_STALL) { + pcd->ep0state = EP0_IDLE; + } + + pcd->ep0state = EP0_IDLE; + + ep0->stopped = 0; + + speed = get_device_speed(GET_CORE_IF(pcd)); + pcd->fops->connect(pcd, speed); + + /* Set USB turnaround time based on device speed and PHY interface. */ + gusbcfg.d32 = DWC_READ_REG32(&global_regs->gusbcfg); + if (speed == USB_SPEED_HIGH) { + if (GET_CORE_IF(pcd)->hwcfg2.b.hs_phy_type == + DWC_HWCFG2_HS_PHY_TYPE_ULPI) { + /* ULPI interface */ + gusbcfg.b.usbtrdtim = 9; + } + if (GET_CORE_IF(pcd)->hwcfg2.b.hs_phy_type == + DWC_HWCFG2_HS_PHY_TYPE_UTMI) { + /* UTMI+ interface */ + if (GET_CORE_IF(pcd)->hwcfg4.b.utmi_phy_data_width == 0) { + gusbcfg.b.usbtrdtim = utmi8b; + } else if (GET_CORE_IF(pcd)->hwcfg4. + b.utmi_phy_data_width == 1) { + gusbcfg.b.usbtrdtim = utmi16b; + } else if (GET_CORE_IF(pcd)-> + core_params->phy_utmi_width == 8) { + gusbcfg.b.usbtrdtim = utmi8b; + } else { + gusbcfg.b.usbtrdtim = utmi16b; + } + } + if (GET_CORE_IF(pcd)->hwcfg2.b.hs_phy_type == + DWC_HWCFG2_HS_PHY_TYPE_UTMI_ULPI) { + /* UTMI+ OR ULPI interface */ + if (gusbcfg.b.ulpi_utmi_sel == 1) { + /* ULPI interface */ + gusbcfg.b.usbtrdtim = 9; + } else { + /* UTMI+ interface */ + if (GET_CORE_IF(pcd)-> + core_params->phy_utmi_width == 16) { + gusbcfg.b.usbtrdtim = utmi16b; + } else { + gusbcfg.b.usbtrdtim = utmi8b; + } + } + } + } else { + /* Full or low speed */ + gusbcfg.b.usbtrdtim = 9; + } + DWC_WRITE_REG32(&global_regs->gusbcfg, gusbcfg.d32); + + /* Clear interrupt */ + gintsts.d32 = 0; + gintsts.b.enumdone = 1; + DWC_WRITE_REG32(&GET_CORE_IF(pcd)->core_global_regs->gintsts, + gintsts.d32); + return 1; +} + +/** + * This interrupt indicates that the ISO OUT Packet was dropped due to + * Rx FIFO full or Rx Status Queue Full. If this interrupt occurs + * read all the data from the Rx FIFO. + */ +int32_t dwc_otg_pcd_handle_isoc_out_packet_dropped_intr(dwc_otg_pcd_t * pcd) +{ + gintmsk_data_t intr_mask = {.d32 = 0 }; + gintsts_data_t gintsts; + + DWC_WARN("INTERRUPT Handler not implemented for %s\n", + "ISOC Out Dropped"); + + intr_mask.b.isooutdrop = 1; + DWC_MODIFY_REG32(&GET_CORE_IF(pcd)->core_global_regs->gintmsk, + intr_mask.d32, 0); + + /* Clear interrupt */ + gintsts.d32 = 0; + gintsts.b.isooutdrop = 1; + DWC_WRITE_REG32(&GET_CORE_IF(pcd)->core_global_regs->gintsts, + gintsts.d32); + + return 1; +} + +/** + * This interrupt indicates the end of the portion of the micro-frame + * for periodic transactions. If there is a periodic transaction for + * the next frame, load the packets into the EP periodic Tx FIFO. + */ +int32_t dwc_otg_pcd_handle_end_periodic_frame_intr(dwc_otg_pcd_t * pcd) +{ + gintmsk_data_t intr_mask = {.d32 = 0 }; + gintsts_data_t gintsts; + DWC_PRINTF("INTERRUPT Handler not implemented for %s\n", "EOP"); + + intr_mask.b.eopframe = 1; + DWC_MODIFY_REG32(&GET_CORE_IF(pcd)->core_global_regs->gintmsk, + intr_mask.d32, 0); + + /* Clear interrupt */ + gintsts.d32 = 0; + gintsts.b.eopframe = 1; + DWC_WRITE_REG32(&GET_CORE_IF(pcd)->core_global_regs->gintsts, + gintsts.d32); + + return 1; +} + +/** + * This interrupt indicates that EP of the packet on the top of the + * non-periodic Tx FIFO does not match EP of the IN Token received. + * + * The "Device IN Token Queue" Registers are read to determine the + * order the IN Tokens have been received. The non-periodic Tx FIFO + * is flushed, so it can be reloaded in the order seen in the IN Token + * Queue. + */ +int32_t dwc_otg_pcd_handle_ep_mismatch_intr(dwc_otg_pcd_t * pcd) +{ + gintsts_data_t gintsts; + dwc_otg_core_if_t *core_if = GET_CORE_IF(pcd); + dctl_data_t dctl; + gintmsk_data_t intr_mask = {.d32 = 0 }; + + if (!core_if->en_multiple_tx_fifo && core_if->dma_enable) { + core_if->start_predict = 1; + + DWC_DEBUGPL(DBG_PCDV, "%s(%p)\n", __func__, core_if); + + gintsts.d32 = DWC_READ_REG32(&core_if->core_global_regs->gintsts); + if (!gintsts.b.ginnakeff) { + /* Disable EP Mismatch interrupt */ + intr_mask.d32 = 0; + intr_mask.b.epmismatch = 1; + DWC_MODIFY_REG32(&core_if->core_global_regs->gintmsk, intr_mask.d32, 0); + /* Enable the Global IN NAK Effective Interrupt */ + intr_mask.d32 = 0; + intr_mask.b.ginnakeff = 1; + DWC_MODIFY_REG32(&core_if->core_global_regs->gintmsk, 0, intr_mask.d32); + /* Set the global non-periodic IN NAK handshake */ + dctl.d32 = DWC_READ_REG32(&core_if->dev_if->dev_global_regs->dctl); + dctl.b.sgnpinnak = 1; + DWC_WRITE_REG32(&core_if->dev_if->dev_global_regs->dctl, dctl.d32); + } else { + DWC_PRINTF("gintsts.b.ginnakeff = 1! dctl.b.sgnpinnak not set\n"); + } + /* Disabling of all EP's will be done in dwc_otg_pcd_handle_in_nak_effective() + * handler after Global IN NAK Effective interrupt will be asserted */ + } + /* Clear interrupt */ + gintsts.d32 = 0; + gintsts.b.epmismatch = 1; + DWC_WRITE_REG32(&core_if->core_global_regs->gintsts, gintsts.d32); + + return 1; +} + +/** + * This interrupt is valid only in DMA mode. This interrupt indicates that the + * core has stopped fetching data for IN endpoints due to the unavailability of + * TxFIFO space or Request Queue space. This interrupt is used by the + * application for an endpoint mismatch algorithm. + * + * @param pcd The PCD + */ +int32_t dwc_otg_pcd_handle_ep_fetsusp_intr(dwc_otg_pcd_t * pcd) +{ + gintsts_data_t gintsts; + gintmsk_data_t gintmsk_data; + dctl_data_t dctl; + dwc_otg_core_if_t *core_if = GET_CORE_IF(pcd); + DWC_DEBUGPL(DBG_PCDV, "%s(%p)\n", __func__, core_if); + + /* Clear the global non-periodic IN NAK handshake */ + dctl.d32 = 0; + dctl.b.cgnpinnak = 1; + DWC_MODIFY_REG32(&core_if->dev_if->dev_global_regs->dctl, dctl.d32, dctl.d32); + + /* Mask GINTSTS.FETSUSP interrupt */ + gintmsk_data.d32 = DWC_READ_REG32(&core_if->core_global_regs->gintmsk); + gintmsk_data.b.fetsusp = 0; + DWC_WRITE_REG32(&core_if->core_global_regs->gintmsk, gintmsk_data.d32); + + /* Clear interrupt */ + gintsts.d32 = 0; + gintsts.b.fetsusp = 1; + DWC_WRITE_REG32(&core_if->core_global_regs->gintsts, gintsts.d32); + + return 1; +} +/** + * This funcion stalls EP0. + */ +static inline void ep0_do_stall(dwc_otg_pcd_t * pcd, const int err_val) +{ + dwc_otg_pcd_ep_t *ep0 = &pcd->ep0; + usb_device_request_t *ctrl = &pcd->setup_pkt->req; + DWC_WARN("req %02x.%02x protocol STALL; err %d\n", + ctrl->bmRequestType, ctrl->bRequest, err_val); + + ep0->dwc_ep.is_in = 1; + dwc_otg_ep_set_stall(GET_CORE_IF(pcd), &ep0->dwc_ep); + pcd->ep0.stopped = 1; + pcd->ep0state = EP0_IDLE; + ep0_out_start(GET_CORE_IF(pcd), pcd); +} + +/** + * This functions delegates the setup command to the gadget driver. + */ +static inline void do_gadget_setup(dwc_otg_pcd_t * pcd, + usb_device_request_t * ctrl) +{ + int ret = 0; + DWC_SPINUNLOCK(pcd->lock); + ret = pcd->fops->setup(pcd, (uint8_t *) ctrl); + DWC_SPINLOCK(pcd->lock); + if (ret < 0) { + ep0_do_stall(pcd, ret); + } + + /** @todo This is a g_file_storage gadget driver specific + * workaround: a DELAYED_STATUS result from the fsg_setup + * routine will result in the gadget queueing a EP0 IN status + * phase for a two-stage control transfer. Exactly the same as + * a SET_CONFIGURATION/SET_INTERFACE except that this is a class + * specific request. Need a generic way to know when the gadget + * driver will queue the status phase. Can we assume when we + * call the gadget driver setup() function that it will always + * queue and require the following flag? Need to look into + * this. + */ + + if (ret == 256 + 999) { + pcd->request_config = 1; + } +} + +#ifdef DWC_UTE_CFI +/** + * This functions delegates the CFI setup commands to the gadget driver. + * This function will return a negative value to indicate a failure. + */ +static inline int cfi_gadget_setup(dwc_otg_pcd_t * pcd, + struct cfi_usb_ctrlrequest *ctrl_req) +{ + int ret = 0; + + if (pcd->fops && pcd->fops->cfi_setup) { + DWC_SPINUNLOCK(pcd->lock); + ret = pcd->fops->cfi_setup(pcd, ctrl_req); + DWC_SPINLOCK(pcd->lock); + if (ret < 0) { + ep0_do_stall(pcd, ret); + return ret; + } + } + + return ret; +} +#endif + +/** + * This function starts the Zero-Length Packet for the IN status phase + * of a 2 stage control transfer. + */ +static inline void do_setup_in_status_phase(dwc_otg_pcd_t * pcd) +{ + dwc_otg_pcd_ep_t *ep0 = &pcd->ep0; + if (pcd->ep0state == EP0_STALL) { + return; + } + + pcd->ep0state = EP0_IN_STATUS_PHASE; + + /* Prepare for more SETUP Packets */ + DWC_DEBUGPL(DBG_PCD, "EP0 IN ZLP\n"); + if ((GET_CORE_IF(pcd)->snpsid >= OTG_CORE_REV_3_00a) + && (pcd->core_if->dma_desc_enable) + && (ep0->dwc_ep.xfer_count < ep0->dwc_ep.total_len)) { + DWC_DEBUGPL(DBG_PCDV, + "Data terminated wait next packet in out_desc_addr\n"); + pcd->backup_buf = phys_to_virt(ep0->dwc_ep.dma_addr); + pcd->data_terminated = 1; + } + ep0->dwc_ep.xfer_len = 0; + ep0->dwc_ep.xfer_count = 0; + ep0->dwc_ep.is_in = 1; + ep0->dwc_ep.dma_addr = pcd->setup_pkt_dma_handle; + dwc_otg_ep0_start_transfer(GET_CORE_IF(pcd), &ep0->dwc_ep); + + /* Prepare for more SETUP Packets */ + //ep0_out_start(GET_CORE_IF(pcd), pcd); +} + +/** + * This function starts the Zero-Length Packet for the OUT status phase + * of a 2 stage control transfer. + */ +static inline void do_setup_out_status_phase(dwc_otg_pcd_t * pcd) +{ + dwc_otg_pcd_ep_t *ep0 = &pcd->ep0; + if (pcd->ep0state == EP0_STALL) { + DWC_DEBUGPL(DBG_PCD, "EP0 STALLED\n"); + return; + } + pcd->ep0state = EP0_OUT_STATUS_PHASE; + + DWC_DEBUGPL(DBG_PCD, "EP0 OUT ZLP\n"); + ep0->dwc_ep.xfer_len = 0; + ep0->dwc_ep.xfer_count = 0; + ep0->dwc_ep.is_in = 0; + ep0->dwc_ep.dma_addr = pcd->setup_pkt_dma_handle; + dwc_otg_ep0_start_transfer(GET_CORE_IF(pcd), &ep0->dwc_ep); + + /* Prepare for more SETUP Packets */ + if (GET_CORE_IF(pcd)->dma_enable == 0) { + ep0_out_start(GET_CORE_IF(pcd), pcd); + } +} + +/** + * Clear the EP halt (STALL) and if pending requests start the + * transfer. + */ +static inline void pcd_clear_halt(dwc_otg_pcd_t * pcd, dwc_otg_pcd_ep_t * ep) +{ + if (ep->dwc_ep.stall_clear_flag == 0) + dwc_otg_ep_clear_stall(GET_CORE_IF(pcd), &ep->dwc_ep); + + /* Reactive the EP */ + dwc_otg_ep_activate(GET_CORE_IF(pcd), &ep->dwc_ep); + if (ep->stopped) { + ep->stopped = 0; + /* If there is a request in the EP queue start it */ + + /** @todo FIXME: this causes an EP mismatch in DMA mode. + * epmismatch not yet implemented. */ + + /* + * Above fixme is solved by implmenting a tasklet to call the + * start_next_request(), outside of interrupt context at some + * time after the current time, after a clear-halt setup packet. + * Still need to implement ep mismatch in the future if a gadget + * ever uses more than one endpoint at once + */ + ep->queue_sof = 1; + DWC_TASK_SCHEDULE(pcd->start_xfer_tasklet); + } + /* Start Control Status Phase */ + do_setup_in_status_phase(pcd); +} + +/** + * This function is called when the SET_FEATURE TEST_MODE Setup packet + * is sent from the host. The Device Control register is written with + * the Test Mode bits set to the specified Test Mode. This is done as + * a tasklet so that the "Status" phase of the control transfer + * completes before transmitting the TEST packets. + * + * @todo This has not been tested since the tasklet struct was put + * into the PCD struct! + * + */ +void do_test_mode(void *data) +{ + dctl_data_t dctl; + dwc_otg_pcd_t *pcd = (dwc_otg_pcd_t *) data; + dwc_otg_core_if_t *core_if = GET_CORE_IF(pcd); + int test_mode = pcd->test_mode; + +// DWC_WARN("%s() has not been tested since being rewritten!\n", __func__); + + dctl.d32 = DWC_READ_REG32(&core_if->dev_if->dev_global_regs->dctl); + switch (test_mode) { + case 1: // TEST_J + dctl.b.tstctl = 1; + break; + + case 2: // TEST_K + dctl.b.tstctl = 2; + break; + + case 3: // TEST_SE0_NAK + dctl.b.tstctl = 3; + break; + + case 4: // TEST_PACKET + dctl.b.tstctl = 4; + break; + + case 5: // TEST_FORCE_ENABLE + dctl.b.tstctl = 5; + break; + } + DWC_WRITE_REG32(&core_if->dev_if->dev_global_regs->dctl, dctl.d32); +} + +/** + * This function process the GET_STATUS Setup Commands. + */ +static inline void do_get_status(dwc_otg_pcd_t * pcd) +{ + usb_device_request_t ctrl = pcd->setup_pkt->req; + dwc_otg_pcd_ep_t *ep; + dwc_otg_pcd_ep_t *ep0 = &pcd->ep0; + uint16_t *status = pcd->status_buf; + dwc_otg_core_if_t *core_if = GET_CORE_IF(pcd); + +#ifdef DEBUG_EP0 + DWC_DEBUGPL(DBG_PCD, + "GET_STATUS %02x.%02x v%04x i%04x l%04x\n", + ctrl.bmRequestType, ctrl.bRequest, + UGETW(ctrl.wValue), UGETW(ctrl.wIndex), + UGETW(ctrl.wLength)); +#endif + + switch (UT_GET_RECIPIENT(ctrl.bmRequestType)) { + case UT_DEVICE: + if(UGETW(ctrl.wIndex) == 0xF000) { /* OTG Status selector */ + DWC_PRINTF("wIndex - %d\n", UGETW(ctrl.wIndex)); + DWC_PRINTF("OTG VERSION - %d\n", core_if->otg_ver); + DWC_PRINTF("OTG CAP - %d, %d\n", + core_if->core_params->otg_cap, + DWC_OTG_CAP_PARAM_HNP_SRP_CAPABLE); + if (core_if->otg_ver == 1 + && core_if->core_params->otg_cap == + DWC_OTG_CAP_PARAM_HNP_SRP_CAPABLE) { + uint8_t *otgsts = (uint8_t*)pcd->status_buf; + *otgsts = (core_if->otg_sts & 0x1); + pcd->ep0_pending = 1; + ep0->dwc_ep.start_xfer_buff = + (uint8_t *) otgsts; + ep0->dwc_ep.xfer_buff = (uint8_t *) otgsts; + ep0->dwc_ep.dma_addr = + pcd->status_buf_dma_handle; + ep0->dwc_ep.xfer_len = 1; + ep0->dwc_ep.xfer_count = 0; + ep0->dwc_ep.total_len = ep0->dwc_ep.xfer_len; + dwc_otg_ep0_start_transfer(GET_CORE_IF(pcd), + &ep0->dwc_ep); + return; + } else { + ep0_do_stall(pcd, -DWC_E_NOT_SUPPORTED); + return; + } + break; + } else { + *status = 0x1; /* Self powered */ + *status |= pcd->remote_wakeup_enable << 1; + break; + } + case UT_INTERFACE: + *status = 0; + break; + + case UT_ENDPOINT: + ep = get_ep_by_addr(pcd, UGETW(ctrl.wIndex)); + if (ep == 0 || UGETW(ctrl.wLength) > 2) { + ep0_do_stall(pcd, -DWC_E_NOT_SUPPORTED); + return; + } + /** @todo check for EP stall */ + *status = ep->stopped; + break; + } + pcd->ep0_pending = 1; + ep0->dwc_ep.start_xfer_buff = (uint8_t *) status; + ep0->dwc_ep.xfer_buff = (uint8_t *) status; + ep0->dwc_ep.dma_addr = pcd->status_buf_dma_handle; + ep0->dwc_ep.xfer_len = 2; + ep0->dwc_ep.xfer_count = 0; + ep0->dwc_ep.total_len = ep0->dwc_ep.xfer_len; + dwc_otg_ep0_start_transfer(GET_CORE_IF(pcd), &ep0->dwc_ep); +} + +/** + * This function process the SET_FEATURE Setup Commands. + */ +static inline void do_set_feature(dwc_otg_pcd_t * pcd) +{ + dwc_otg_core_if_t *core_if = GET_CORE_IF(pcd); + dwc_otg_core_global_regs_t *global_regs = core_if->core_global_regs; + usb_device_request_t ctrl = pcd->setup_pkt->req; + dwc_otg_pcd_ep_t *ep = 0; + int32_t otg_cap_param = core_if->core_params->otg_cap; + gotgctl_data_t gotgctl = {.d32 = 0 }; + + DWC_DEBUGPL(DBG_PCD, "SET_FEATURE:%02x.%02x v%04x i%04x l%04x\n", + ctrl.bmRequestType, ctrl.bRequest, + UGETW(ctrl.wValue), UGETW(ctrl.wIndex), + UGETW(ctrl.wLength)); + DWC_DEBUGPL(DBG_PCD, "otg_cap=%d\n", otg_cap_param); + + switch (UT_GET_RECIPIENT(ctrl.bmRequestType)) { + case UT_DEVICE: + switch (UGETW(ctrl.wValue)) { + case UF_DEVICE_REMOTE_WAKEUP: + pcd->remote_wakeup_enable = 1; + break; + + case UF_TEST_MODE: + /* Setup the Test Mode tasklet to do the Test + * Packet generation after the SETUP Status + * phase has completed. */ + + /** @todo This has not been tested since the + * tasklet struct was put into the PCD + * struct! */ + pcd->test_mode = UGETW(ctrl.wIndex) >> 8; + DWC_TASK_SCHEDULE(pcd->test_mode_tasklet); + break; + + case UF_DEVICE_B_HNP_ENABLE: + DWC_DEBUGPL(DBG_PCDV, + "SET_FEATURE: USB_DEVICE_B_HNP_ENABLE\n"); + + /* dev may initiate HNP */ + if (otg_cap_param == DWC_OTG_CAP_PARAM_HNP_SRP_CAPABLE) { + pcd->b_hnp_enable = 1; + dwc_otg_pcd_update_otg(pcd, 0); + DWC_DEBUGPL(DBG_PCD, "Request B HNP\n"); + /**@todo Is the gotgctl.devhnpen cleared + * by a USB Reset? */ + gotgctl.b.devhnpen = 1; + gotgctl.b.hnpreq = 1; + DWC_WRITE_REG32(&global_regs->gotgctl, + gotgctl.d32); + } else { + ep0_do_stall(pcd, -DWC_E_NOT_SUPPORTED); + return; + } + break; + + case UF_DEVICE_A_HNP_SUPPORT: + /* RH port supports HNP */ + DWC_DEBUGPL(DBG_PCDV, + "SET_FEATURE: USB_DEVICE_A_HNP_SUPPORT\n"); + if (otg_cap_param == DWC_OTG_CAP_PARAM_HNP_SRP_CAPABLE) { + pcd->a_hnp_support = 1; + dwc_otg_pcd_update_otg(pcd, 0); + } else { + ep0_do_stall(pcd, -DWC_E_NOT_SUPPORTED); + return; + } + break; + + case UF_DEVICE_A_ALT_HNP_SUPPORT: + /* other RH port does */ + DWC_DEBUGPL(DBG_PCDV, + "SET_FEATURE: USB_DEVICE_A_ALT_HNP_SUPPORT\n"); + if (otg_cap_param == DWC_OTG_CAP_PARAM_HNP_SRP_CAPABLE) { + pcd->a_alt_hnp_support = 1; + dwc_otg_pcd_update_otg(pcd, 0); + } else { + ep0_do_stall(pcd, -DWC_E_NOT_SUPPORTED); + return; + } + break; + + default: + ep0_do_stall(pcd, -DWC_E_NOT_SUPPORTED); + return; + + } + do_setup_in_status_phase(pcd); + break; + + case UT_INTERFACE: + do_gadget_setup(pcd, &ctrl); + break; + + case UT_ENDPOINT: + if (UGETW(ctrl.wValue) == UF_ENDPOINT_HALT) { + ep = get_ep_by_addr(pcd, UGETW(ctrl.wIndex)); + if (ep == 0) { + ep0_do_stall(pcd, -DWC_E_NOT_SUPPORTED); + return; + } + ep->stopped = 1; + dwc_otg_ep_set_stall(core_if, &ep->dwc_ep); + } + do_setup_in_status_phase(pcd); + break; + } +} + +/** + * This function process the CLEAR_FEATURE Setup Commands. + */ +static inline void do_clear_feature(dwc_otg_pcd_t * pcd) +{ + usb_device_request_t ctrl = pcd->setup_pkt->req; + dwc_otg_pcd_ep_t *ep = 0; + + DWC_DEBUGPL(DBG_PCD, + "CLEAR_FEATURE:%02x.%02x v%04x i%04x l%04x\n", + ctrl.bmRequestType, ctrl.bRequest, + UGETW(ctrl.wValue), UGETW(ctrl.wIndex), + UGETW(ctrl.wLength)); + + switch (UT_GET_RECIPIENT(ctrl.bmRequestType)) { + case UT_DEVICE: + switch (UGETW(ctrl.wValue)) { + case UF_DEVICE_REMOTE_WAKEUP: + pcd->remote_wakeup_enable = 0; + break; + + case UF_TEST_MODE: + /** @todo Add CLEAR_FEATURE for TEST modes. */ + break; + + default: + ep0_do_stall(pcd, -DWC_E_NOT_SUPPORTED); + return; + } + do_setup_in_status_phase(pcd); + break; + + case UT_ENDPOINT: + ep = get_ep_by_addr(pcd, UGETW(ctrl.wIndex)); + if (ep == 0) { + ep0_do_stall(pcd, -DWC_E_NOT_SUPPORTED); + return; + } + + pcd_clear_halt(pcd, ep); + + break; + } +} + +/** + * This function process the SET_ADDRESS Setup Commands. + */ +static inline void do_set_address(dwc_otg_pcd_t * pcd) +{ + dwc_otg_dev_if_t *dev_if = GET_CORE_IF(pcd)->dev_if; + usb_device_request_t ctrl = pcd->setup_pkt->req; + + if (ctrl.bmRequestType == UT_DEVICE) { + dcfg_data_t dcfg = {.d32 = 0 }; + +#ifdef DEBUG_EP0 +// DWC_DEBUGPL(DBG_PCDV, "SET_ADDRESS:%d\n", ctrl.wValue); +#endif + dcfg.b.devaddr = UGETW(ctrl.wValue); + DWC_MODIFY_REG32(&dev_if->dev_global_regs->dcfg, 0, dcfg.d32); + do_setup_in_status_phase(pcd); + } +} + +/** + * This function processes SETUP commands. In Linux, the USB Command + * processing is done in two places - the first being the PCD and the + * second in the Gadget Driver (for example, the File-Backed Storage + * Gadget Driver). + * + *
Parameter NameMeaning
otg_capSpecifies the OTG capabilities. The driver will automatically detect the + value for this parameter if none is specified. + - 0: HNP and SRP capable (default, if available) + - 1: SRP Only capable + - 2: No HNP/SRP capable +
dma_enableSpecifies whether to use slave or DMA mode for accessing the data FIFOs. + The driver will automatically detect the value for this parameter if none is + specified. + - 0: Slave + - 1: DMA (default, if available) +
dma_burst_sizeThe DMA Burst size (applicable only for External DMA Mode). + - Values: 1, 4, 8 16, 32, 64, 128, 256 (default 32) +
speedSpecifies the maximum speed of operation in host and device mode. The + actual speed depends on the speed of the attached device and the value of + phy_type. + - 0: High Speed (default) + - 1: Full Speed +
host_support_fs_ls_low_powerSpecifies whether low power mode is supported when attached to a Full + Speed or Low Speed device in host mode. + - 0: Don't support low power mode (default) + - 1: Support low power mode +
host_ls_low_power_phy_clkSpecifies the PHY clock rate in low power mode when connected to a Low + Speed device in host mode. This parameter is applicable only if + HOST_SUPPORT_FS_LS_LOW_POWER is enabled. + - 0: 48 MHz (default) + - 1: 6 MHz +
enable_dynamic_fifo Specifies whether FIFOs may be resized by the driver software. + - 0: Use cC FIFO size parameters + - 1: Allow dynamic FIFO sizing (default) +
data_fifo_sizeTotal number of 4-byte words in the data FIFO memory. This memory + includes the Rx FIFO, non-periodic Tx FIFO, and periodic Tx FIFOs. + - Values: 32 to 32768 (default 8192) + + Note: The total FIFO memory depth in the FPGA configuration is 8192. +
dev_rx_fifo_sizeNumber of 4-byte words in the Rx FIFO in device mode when dynamic + FIFO sizing is enabled. + - Values: 16 to 32768 (default 1064) +
dev_nperio_tx_fifo_sizeNumber of 4-byte words in the non-periodic Tx FIFO in device mode when + dynamic FIFO sizing is enabled. + - Values: 16 to 32768 (default 1024) +
dev_perio_tx_fifo_size_n (n = 1 to 15)Number of 4-byte words in each of the periodic Tx FIFOs in device mode + when dynamic FIFO sizing is enabled. + - Values: 4 to 768 (default 256) +
host_rx_fifo_sizeNumber of 4-byte words in the Rx FIFO in host mode when dynamic FIFO + sizing is enabled. + - Values: 16 to 32768 (default 1024) +
host_nperio_tx_fifo_sizeNumber of 4-byte words in the non-periodic Tx FIFO in host mode when + dynamic FIFO sizing is enabled in the core. + - Values: 16 to 32768 (default 1024) +
host_perio_tx_fifo_sizeNumber of 4-byte words in the host periodic Tx FIFO when dynamic FIFO + sizing is enabled. + - Values: 16 to 32768 (default 1024) +
max_transfer_sizeThe maximum transfer size supported in bytes. + - Values: 2047 to 65,535 (default 65,535) +
max_packet_countThe maximum number of packets in a transfer. + - Values: 15 to 511 (default 511) +
host_channelsThe number of host channel registers to use. + - Values: 1 to 16 (default 12) + + Note: The FPGA configuration supports a maximum of 12 host channels. +
dev_endpointsThe number of endpoints in addition to EP0 available for device mode + operations. + - Values: 1 to 15 (default 6 IN and OUT) + + Note: The FPGA configuration supports a maximum of 6 IN and OUT endpoints in + addition to EP0. +
phy_typeSpecifies the type of PHY interface to use. By default, the driver will + automatically detect the phy_type. + - 0: Full Speed + - 1: UTMI+ (default, if available) + - 2: ULPI +
phy_utmi_widthSpecifies the UTMI+ Data Width. This parameter is applicable for a + phy_type of UTMI+. Also, this parameter is applicable only if the + OTG_HSPHY_WIDTH cC parameter was set to "8 and 16 bits", meaning that the + core has been configured to work at either data path width. + - Values: 8 or 16 bits (default 16) +
phy_ulpi_ddrSpecifies whether the ULPI operates at double or single data rate. This + parameter is only applicable if phy_type is ULPI. + - 0: single data rate ULPI interface with 8 bit wide data bus (default) + - 1: double data rate ULPI interface with 4 bit wide data bus +
i2c_enableSpecifies whether to use the I2C interface for full speed PHY. This + parameter is only applicable if PHY_TYPE is FS. + - 0: Disabled (default) + - 1: Enabled +
ulpi_fs_lsSpecifies whether to use ULPI FS/LS mode only. + - 0: Disabled (default) + - 1: Enabled +
ts_dlineSpecifies whether term select D-Line pulsing for all PHYs is enabled. + - 0: Disabled (default) + - 1: Enabled +
en_multiple_tx_fifoSpecifies whether dedicatedto tx fifos are enabled for non periodic IN EPs. + The driver will automatically detect the value for this parameter if none is + specified. + - 0: Disabled + - 1: Enabled (default, if available) +
dev_tx_fifo_size_n (n = 1 to 15)Number of 4-byte words in each of the Tx FIFOs in device mode + when dynamic FIFO sizing is enabled. + - Values: 4 to 768 (default 256) +
tx_thr_lengthTransmit Threshold length in 32 bit double words + - Values: 8 to 128 (default 64) +
rx_thr_lengthReceive Threshold length in 32 bit double words + - Values: 8 to 128 (default 64) +
thr_ctlSpecifies whether to enable Thresholding for Device mode. Bits 0, 1, 2 of + this parmater specifies if thresholding is enabled for non-Iso Tx, Iso Tx and + Rx transfers accordingly. + The driver will automatically detect the value for this parameter if none is + specified. + - Values: 0 to 7 (default 0) + Bit values indicate: + - 0: Thresholding disabled + - 1: Thresholding enabled +
dma_desc_enableSpecifies whether to enable Descriptor DMA mode. + The driver will automatically detect the value for this parameter if none is + specified. + - 0: Descriptor DMA disabled + - 1: Descriptor DMA (default, if available) +
mpi_enableSpecifies whether to enable MPI enhancement mode. + The driver will automatically detect the value for this parameter if none is + specified. + - 0: MPI disabled (default) + - 1: MPI enable +
pti_enableSpecifies whether to enable PTI enhancement support. + The driver will automatically detect the value for this parameter if none is + specified. + - 0: PTI disabled (default) + - 1: PTI enable +
lpm_enableSpecifies whether to enable LPM support. + The driver will automatically detect the value for this parameter if none is + specified. + - 0: LPM disabled + - 1: LPM enable (default, if available) +
ic_usb_capSpecifies whether to enable IC_USB capability. + The driver will automatically detect the value for this parameter if none is + specified. + - 0: IC_USB disabled (default, if available) + - 1: IC_USB enable +
ahb_thr_ratioSpecifies AHB Threshold ratio. + - Values: 0 to 3 (default 0) +
power_downSpecifies Power Down(Hibernation) Mode. + The driver will automatically detect the value for this parameter if none is + specified. + - 0: Power Down disabled (default) + - 2: Power Down enabled +
reload_ctlSpecifies whether dynamic reloading of the HFIR register is allowed during + run time. The driver will automatically detect the value for this parameter if + none is specified. In case the HFIR value is reloaded when HFIR.RldCtrl == 1'b0 + the core might misbehave. + - 0: Reload Control disabled (default) + - 1: Reload Control enabled +
dev_out_nakSpecifies whether Device OUT NAK enhancement enabled or no. + The driver will automatically detect the value for this parameter if + none is specified. This parameter is valid only when OTG_EN_DESC_DMA == 1b1. + - 0: The core does not set NAK after Bulk OUT transfer complete (default) + - 1: The core sets NAK after Bulk OUT transfer complete +
cont_on_bnaSpecifies whether Enable Continue on BNA enabled or no. + After receiving BNA interrupt the core disables the endpoint,when the + endpoint is re-enabled by the application the + - 0: Core starts processing from the DOEPDMA descriptor (default) + - 1: Core starts processing from the descriptor which received the BNA. + This parameter is valid only when OTG_EN_DESC_DMA == 1b1. +
ahb_singleThis bit when programmed supports SINGLE transfers for remainder data + in a transfer for DMA mode of operation. + - 0: The remainder data will be sent using INCR burst size (default) + - 1: The remainder data will be sent using SINGLE burst size. +
adp_enableSpecifies whether ADP feature is enabled. + The driver will automatically detect the value for this parameter if none is + specified. + - 0: ADP feature disabled (default) + - 1: ADP feature enabled +
otg_verSpecifies whether OTG is performing as USB OTG Revision 2.0 or Revision 1.3 + USB OTG device. + - 0: OTG 2.0 support disabled (default) + - 1: OTG 2.0 support enabled +
+ * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + *
Command Driver Description
GET_STATUS PCD Command is processed as + * defined in chapter 9 of the USB 2.0 Specification chapter 9 + *
CLEAR_FEATURE PCD The Device and Endpoint + * requests are the ENDPOINT_HALT feature is procesed, all others the + * interface requests are ignored.
SET_FEATURE PCD The Device and Endpoint + * requests are processed by the PCD. Interface requests are passed + * to the Gadget Driver.
SET_ADDRESS PCD Program the DCFG reg, + * with device address received
GET_DESCRIPTOR Gadget Driver Return the + * requested descriptor
SET_DESCRIPTOR Gadget Driver Optional - + * not implemented by any of the existing Gadget Drivers.
SET_CONFIGURATION Gadget Driver Disable + * all EPs and enable EPs for new configuration.
GET_CONFIGURATION Gadget Driver Return + * the current configuration
SET_INTERFACE Gadget Driver Disable all + * EPs and enable EPs for new configuration.
GET_INTERFACE Gadget Driver Return the + * current interface.
SYNC_FRAME PCD Display debug + * message.
+ * + * When the SETUP Phase Done interrupt occurs, the PCD SETUP commands are + * processed by pcd_setup. Calling the Function Driver's setup function from + * pcd_setup processes the gadget SETUP commands. + */ +static inline void pcd_setup(dwc_otg_pcd_t * pcd) +{ + dwc_otg_core_if_t *core_if = GET_CORE_IF(pcd); + dwc_otg_dev_if_t *dev_if = core_if->dev_if; + usb_device_request_t ctrl = pcd->setup_pkt->req; + dwc_otg_pcd_ep_t *ep0 = &pcd->ep0; + + deptsiz0_data_t doeptsize0 = {.d32 = 0 }; + +#ifdef DWC_UTE_CFI + int retval = 0; + struct cfi_usb_ctrlrequest cfi_req; +#endif + + doeptsize0.d32 = DWC_READ_REG32(&dev_if->out_ep_regs[0]->doeptsiz); + + /** In BDMA more then 1 setup packet is not supported till 3.00a */ + if (core_if->dma_enable && core_if->dma_desc_enable == 0 + && (doeptsize0.b.supcnt < 2) + && (core_if->snpsid < OTG_CORE_REV_2_94a)) { + DWC_ERROR + ("\n\n----------- CANNOT handle > 1 setup packet in DMA mode\n\n"); + } + if ((core_if->snpsid >= OTG_CORE_REV_3_00a) + && (core_if->dma_enable == 1) && (core_if->dma_desc_enable == 0)) { + ctrl = + (pcd->setup_pkt + + (3 - doeptsize0.b.supcnt - 1 + + ep0->dwc_ep.stp_rollover))->req; + } +#ifdef DEBUG_EP0 + DWC_DEBUGPL(DBG_PCD, "SETUP %02x.%02x v%04x i%04x l%04x\n", + ctrl.bmRequestType, ctrl.bRequest, + UGETW(ctrl.wValue), UGETW(ctrl.wIndex), + UGETW(ctrl.wLength)); +#endif + + /* Clean up the request queue */ + dwc_otg_request_nuke(ep0); + ep0->stopped = 0; + + if (ctrl.bmRequestType & UE_DIR_IN) { + ep0->dwc_ep.is_in = 1; + pcd->ep0state = EP0_IN_DATA_PHASE; + } else { + ep0->dwc_ep.is_in = 0; + pcd->ep0state = EP0_OUT_DATA_PHASE; + } + + if (UGETW(ctrl.wLength) == 0) { + ep0->dwc_ep.is_in = 1; + pcd->ep0state = EP0_IN_STATUS_PHASE; + } + + if (UT_GET_TYPE(ctrl.bmRequestType) != UT_STANDARD) { + +#ifdef DWC_UTE_CFI + DWC_MEMCPY(&cfi_req, &ctrl, sizeof(usb_device_request_t)); + + //printk(KERN_ALERT "CFI: req_type=0x%02x; req=0x%02x\n", + ctrl.bRequestType, ctrl.bRequest); + if (UT_GET_TYPE(cfi_req.bRequestType) == UT_VENDOR) { + if (cfi_req.bRequest > 0xB0 && cfi_req.bRequest < 0xBF) { + retval = cfi_setup(pcd, &cfi_req); + if (retval < 0) { + ep0_do_stall(pcd, retval); + pcd->ep0_pending = 0; + return; + } + + /* if need gadget setup then call it and check the retval */ + if (pcd->cfi->need_gadget_att) { + retval = + cfi_gadget_setup(pcd, + &pcd-> + cfi->ctrl_req); + if (retval < 0) { + pcd->ep0_pending = 0; + return; + } + } + + if (pcd->cfi->need_status_in_complete) { + do_setup_in_status_phase(pcd); + } + return; + } + } +#endif + + /* handle non-standard (class/vendor) requests in the gadget driver */ + do_gadget_setup(pcd, &ctrl); + return; + } + + /** @todo NGS: Handle bad setup packet? */ + +/////////////////////////////////////////// +//// --- Standard Request handling --- //// + + switch (ctrl.bRequest) { + case UR_GET_STATUS: + do_get_status(pcd); + break; + + case UR_CLEAR_FEATURE: + do_clear_feature(pcd); + break; + + case UR_SET_FEATURE: + do_set_feature(pcd); + break; + + case UR_SET_ADDRESS: + do_set_address(pcd); + break; + + case UR_SET_INTERFACE: + case UR_SET_CONFIG: +// _pcd->request_config = 1; /* Configuration changed */ + do_gadget_setup(pcd, &ctrl); + break; + + case UR_SYNCH_FRAME: + do_gadget_setup(pcd, &ctrl); + break; + + default: + /* Call the Gadget Driver's setup functions */ + do_gadget_setup(pcd, &ctrl); + break; + } +} + +/** + * This function completes the ep0 control transfer. + */ +static int32_t ep0_complete_request(dwc_otg_pcd_ep_t * ep) +{ + dwc_otg_core_if_t *core_if = GET_CORE_IF(ep->pcd); + dwc_otg_dev_if_t *dev_if = core_if->dev_if; + dwc_otg_dev_in_ep_regs_t *in_ep_regs = + dev_if->in_ep_regs[ep->dwc_ep.num]; +#ifdef DEBUG_EP0 + dwc_otg_dev_out_ep_regs_t *out_ep_regs = + dev_if->out_ep_regs[ep->dwc_ep.num]; +#endif + deptsiz0_data_t deptsiz; + dev_dma_desc_sts_t desc_sts; + dwc_otg_pcd_request_t *req; + int is_last = 0; + dwc_otg_pcd_t *pcd = ep->pcd; + +#ifdef DWC_UTE_CFI + struct cfi_usb_ctrlrequest *ctrlreq; + int retval = -DWC_E_NOT_SUPPORTED; +#endif + + desc_sts.b.bytes = 0; + + if (pcd->ep0_pending && DWC_CIRCLEQ_EMPTY(&ep->queue)) { + if (ep->dwc_ep.is_in) { +#ifdef DEBUG_EP0 + DWC_DEBUGPL(DBG_PCDV, "Do setup OUT status phase\n"); +#endif + do_setup_out_status_phase(pcd); + } else { +#ifdef DEBUG_EP0 + DWC_DEBUGPL(DBG_PCDV, "Do setup IN status phase\n"); +#endif + +#ifdef DWC_UTE_CFI + ctrlreq = &pcd->cfi->ctrl_req; + + if (UT_GET_TYPE(ctrlreq->bRequestType) == UT_VENDOR) { + if (ctrlreq->bRequest > 0xB0 + && ctrlreq->bRequest < 0xBF) { + + /* Return if the PCD failed to handle the request */ + if ((retval = + pcd->cfi->ops. + ctrl_write_complete(pcd->cfi, + pcd)) < 0) { + CFI_INFO + ("ERROR setting a new value in the PCD(%d)\n", + retval); + ep0_do_stall(pcd, retval); + pcd->ep0_pending = 0; + return 0; + } + + /* If the gadget needs to be notified on the request */ + if (pcd->cfi->need_gadget_att == 1) { + //retval = do_gadget_setup(pcd, &pcd->cfi->ctrl_req); + retval = + cfi_gadget_setup(pcd, + &pcd->cfi-> + ctrl_req); + + /* Return from the function if the gadget failed to process + * the request properly - this should never happen !!! + */ + if (retval < 0) { + CFI_INFO + ("ERROR setting a new value in the gadget(%d)\n", + retval); + pcd->ep0_pending = 0; + return 0; + } + } + + CFI_INFO("%s: RETVAL=%d\n", __func__, + retval); + /* If we hit here then the PCD and the gadget has properly + * handled the request - so send the ZLP IN to the host. + */ + /* @todo: MAS - decide whether we need to start the setup + * stage based on the need_setup value of the cfi object + */ + do_setup_in_status_phase(pcd); + pcd->ep0_pending = 0; + return 1; + } + } +#endif + + do_setup_in_status_phase(pcd); + } + pcd->ep0_pending = 0; + return 1; + } + + if (DWC_CIRCLEQ_EMPTY(&ep->queue)) { + return 0; + } + req = DWC_CIRCLEQ_FIRST(&ep->queue); + + if (pcd->ep0state == EP0_OUT_STATUS_PHASE + || pcd->ep0state == EP0_IN_STATUS_PHASE) { + is_last = 1; + } else if (ep->dwc_ep.is_in) { + deptsiz.d32 = DWC_READ_REG32(&in_ep_regs->dieptsiz); + if (core_if->dma_desc_enable != 0) + desc_sts = dev_if->in_desc_addr->status; +#ifdef DEBUG_EP0 + DWC_DEBUGPL(DBG_PCDV, "%d len=%d xfersize=%d pktcnt=%d\n", + ep->dwc_ep.num, ep->dwc_ep.xfer_len, + deptsiz.b.xfersize, deptsiz.b.pktcnt); +#endif + + if (((core_if->dma_desc_enable == 0) + && (deptsiz.b.xfersize == 0)) + || ((core_if->dma_desc_enable != 0) + && (desc_sts.b.bytes == 0))) { + req->actual = ep->dwc_ep.xfer_count; + /* Is a Zero Len Packet needed? */ + if (req->sent_zlp) { +#ifdef DEBUG_EP0 + DWC_DEBUGPL(DBG_PCD, "Setup Rx ZLP\n"); +#endif + req->sent_zlp = 0; + } + do_setup_out_status_phase(pcd); + } + } else { + /* ep0-OUT */ +#ifdef DEBUG_EP0 + deptsiz.d32 = DWC_READ_REG32(&out_ep_regs->doeptsiz); + DWC_DEBUGPL(DBG_PCDV, "%d len=%d xsize=%d pktcnt=%d\n", + ep->dwc_ep.num, ep->dwc_ep.xfer_len, + deptsiz.b.xfersize, deptsiz.b.pktcnt); +#endif + req->actual = ep->dwc_ep.xfer_count; + + /* Is a Zero Len Packet needed? */ + if (req->sent_zlp) { +#ifdef DEBUG_EP0 + DWC_DEBUGPL(DBG_PCDV, "Setup Tx ZLP\n"); +#endif + req->sent_zlp = 0; + } + /* For older cores do setup in status phase in Slave/BDMA modes, + * starting from 3.00 do that only in slave, and for DMA modes + * just re-enable ep 0 OUT here*/ + if (core_if->dma_enable == 0 + || (core_if->dma_desc_enable == 0 + && core_if->snpsid <= OTG_CORE_REV_2_94a)) { + do_setup_in_status_phase(pcd); + } else if (core_if->snpsid >= OTG_CORE_REV_3_00a) { + DWC_DEBUGPL(DBG_PCDV, + "Enable out ep before in status phase\n"); + ep0_out_start(core_if, pcd); + } + } + + /* Complete the request */ + if (is_last) { + dwc_otg_request_done(ep, req, 0); + ep->dwc_ep.start_xfer_buff = 0; + ep->dwc_ep.xfer_buff = 0; + ep->dwc_ep.xfer_len = 0; + return 1; + } + return 0; +} + +#ifdef DWC_UTE_CFI +/** + * This function calculates traverses all the CFI DMA descriptors and + * and accumulates the bytes that are left to be transfered. + * + * @return The total bytes left to transfered, or a negative value as failure + */ +static inline int cfi_calc_desc_residue(dwc_otg_pcd_ep_t * ep) +{ + int32_t ret = 0; + int i; + struct dwc_otg_dma_desc *ddesc = NULL; + struct cfi_ep *cfiep; + + /* See if the pcd_ep has its respective cfi_ep mapped */ + cfiep = get_cfi_ep_by_pcd_ep(ep->pcd->cfi, ep); + if (!cfiep) { + CFI_INFO("%s: Failed to find ep\n", __func__); + return -1; + } + + ddesc = ep->dwc_ep.descs; + + for (i = 0; (i < cfiep->desc_count) && (i < MAX_DMA_DESCS_PER_EP); i++) { + +#if defined(PRINT_CFI_DMA_DESCS) + print_desc(ddesc, ep->ep.name, i); +#endif + ret += ddesc->status.b.bytes; + ddesc++; + } + + if (ret) + CFI_INFO("!!!!!!!!!! WARNING (%s) - residue=%d\n", __func__, + ret); + + return ret; +} +#endif + +/** + * This function completes the request for the EP. If there are + * additional requests for the EP in the queue they will be started. + */ +static void complete_ep(dwc_otg_pcd_ep_t * ep) +{ + dwc_otg_core_if_t *core_if = GET_CORE_IF(ep->pcd); + dwc_otg_dev_if_t *dev_if = core_if->dev_if; + dwc_otg_dev_in_ep_regs_t *in_ep_regs = + dev_if->in_ep_regs[ep->dwc_ep.num]; + deptsiz_data_t deptsiz; + dev_dma_desc_sts_t desc_sts; + dwc_otg_pcd_request_t *req = 0; + dwc_otg_dev_dma_desc_t *dma_desc; + uint32_t byte_count = 0; + int is_last = 0; + int i; + + DWC_DEBUGPL(DBG_PCDV, "%s() %d-%s\n", __func__, ep->dwc_ep.num, + (ep->dwc_ep.is_in ? "IN" : "OUT")); + + /* Get any pending requests */ + if (!DWC_CIRCLEQ_EMPTY(&ep->queue)) { + req = DWC_CIRCLEQ_FIRST(&ep->queue); + if (!req) { + DWC_PRINTF("complete_ep 0x%p, req = NULL!\n", ep); + return; + } + } else { + DWC_PRINTF("complete_ep 0x%p, ep->queue empty!\n", ep); + return; + } + + DWC_DEBUGPL(DBG_PCD, "Requests %d\n", ep->pcd->request_pending); + + if (ep->dwc_ep.is_in) { + deptsiz.d32 = DWC_READ_REG32(&in_ep_regs->dieptsiz); + + if (core_if->dma_enable) { + if (core_if->dma_desc_enable == 0) { + if (deptsiz.b.xfersize == 0 + && deptsiz.b.pktcnt == 0) { + byte_count = + ep->dwc_ep.xfer_len - + ep->dwc_ep.xfer_count; + + ep->dwc_ep.xfer_buff += byte_count; + ep->dwc_ep.dma_addr += byte_count; + ep->dwc_ep.xfer_count += byte_count; + + DWC_DEBUGPL(DBG_PCDV, + "%d-%s len=%d xfersize=%d pktcnt=%d\n", + ep->dwc_ep.num, + (ep->dwc_ep. + is_in ? "IN" : "OUT"), + ep->dwc_ep.xfer_len, + deptsiz.b.xfersize, + deptsiz.b.pktcnt); + + if (ep->dwc_ep.xfer_len < + ep->dwc_ep.total_len) { + dwc_otg_ep_start_transfer + (core_if, &ep->dwc_ep); + } else if (ep->dwc_ep.sent_zlp) { + /* + * This fragment of code should initiate 0 + * length transfer in case if it is queued + * a transfer with size divisible to EPs max + * packet size and with usb_request zero field + * is set, which means that after data is transfered, + * it is also should be transfered + * a 0 length packet at the end. For Slave and + * Buffer DMA modes in this case SW has + * to initiate 2 transfers one with transfer size, + * and the second with 0 size. For Descriptor + * DMA mode SW is able to initiate a transfer, + * which will handle all the packets including + * the last 0 length. + */ + ep->dwc_ep.sent_zlp = 0; + dwc_otg_ep_start_zl_transfer + (core_if, &ep->dwc_ep); + } else { + is_last = 1; + } + } else { + if (ep->dwc_ep.type == + DWC_OTG_EP_TYPE_ISOC) { + req->actual = 0; + dwc_otg_request_done(ep, req, 0); + + ep->dwc_ep.start_xfer_buff = 0; + ep->dwc_ep.xfer_buff = 0; + ep->dwc_ep.xfer_len = 0; + + /* If there is a request in the queue start it. */ + start_next_request(ep); + } else + DWC_WARN + ("Incomplete transfer (%d - %s [siz=%d pkt=%d])\n", + ep->dwc_ep.num, + (ep->dwc_ep.is_in ? "IN" : "OUT"), + deptsiz.b.xfersize, + deptsiz.b.pktcnt); + } + } else { + dma_desc = ep->dwc_ep.desc_addr; + byte_count = 0; + ep->dwc_ep.sent_zlp = 0; + +#ifdef DWC_UTE_CFI + CFI_INFO("%s: BUFFER_MODE=%d\n", __func__, + ep->dwc_ep.buff_mode); + if (ep->dwc_ep.buff_mode != BM_STANDARD) { + int residue; + + residue = cfi_calc_desc_residue(ep); + if (residue < 0) + return; + + byte_count = residue; + } else { +#endif + for (i = 0; i < ep->dwc_ep.desc_cnt; + ++i) { + desc_sts = dma_desc->status; + byte_count += desc_sts.b.bytes; + dma_desc++; + } +#ifdef DWC_UTE_CFI + } +#endif + if (byte_count == 0) { + ep->dwc_ep.xfer_count = + ep->dwc_ep.total_len; + is_last = 1; + } else { + DWC_WARN("Incomplete transfer\n"); + } + } + } else { + if (deptsiz.b.xfersize == 0 && deptsiz.b.pktcnt == 0) { + DWC_DEBUGPL(DBG_PCDV, + "%d-%s len=%d xfersize=%d pktcnt=%d\n", + ep->dwc_ep.num, + ep->dwc_ep.is_in ? "IN" : "OUT", + ep->dwc_ep.xfer_len, + deptsiz.b.xfersize, + deptsiz.b.pktcnt); + + /* Check if the whole transfer was completed, + * if no, setup transfer for next portion of data + */ + if (ep->dwc_ep.xfer_len < ep->dwc_ep.total_len) { + dwc_otg_ep_start_transfer(core_if, + &ep->dwc_ep); + } else if (ep->dwc_ep.sent_zlp) { + /* + * This fragment of code should initiate 0 + * length trasfer in case if it is queued + * a trasfer with size divisible to EPs max + * packet size and with usb_request zero field + * is set, which means that after data is transfered, + * it is also should be transfered + * a 0 length packet at the end. For Slave and + * Buffer DMA modes in this case SW has + * to initiate 2 transfers one with transfer size, + * and the second with 0 size. For Desriptor + * DMA mode SW is able to initiate a transfer, + * which will handle all the packets including + * the last 0 legth. + */ + ep->dwc_ep.sent_zlp = 0; + dwc_otg_ep_start_zl_transfer(core_if, + &ep->dwc_ep); + } else { + is_last = 1; + } + } else { + DWC_WARN + ("Incomplete transfer (%d-%s [siz=%d pkt=%d])\n", + ep->dwc_ep.num, + (ep->dwc_ep.is_in ? "IN" : "OUT"), + deptsiz.b.xfersize, deptsiz.b.pktcnt); + } + } + } else { + dwc_otg_dev_out_ep_regs_t *out_ep_regs = + dev_if->out_ep_regs[ep->dwc_ep.num]; + desc_sts.d32 = 0; + if (core_if->dma_enable) { + if (core_if->dma_desc_enable) { + dma_desc = ep->dwc_ep.desc_addr; + byte_count = 0; + ep->dwc_ep.sent_zlp = 0; + +#ifdef DWC_UTE_CFI + CFI_INFO("%s: BUFFER_MODE=%d\n", __func__, + ep->dwc_ep.buff_mode); + if (ep->dwc_ep.buff_mode != BM_STANDARD) { + int residue; + residue = cfi_calc_desc_residue(ep); + if (residue < 0) + return; + byte_count = residue; + } else { +#endif + + for (i = 0; i < ep->dwc_ep.desc_cnt; + ++i) { + desc_sts = dma_desc->status; + byte_count += desc_sts.b.bytes; + dma_desc++; + } + +#ifdef DWC_UTE_CFI + } +#endif + /* Checking for interrupt Out transfers with not + * dword aligned mps sizes + */ + if (ep->dwc_ep.type == DWC_OTG_EP_TYPE_INTR && + (ep->dwc_ep.maxpacket%4)) { + ep->dwc_ep.xfer_count = + ep->dwc_ep.total_len - byte_count; + if ((ep->dwc_ep.xfer_len % + ep->dwc_ep.maxpacket) + && (ep->dwc_ep.xfer_len / + ep->dwc_ep.maxpacket < + MAX_DMA_DESC_CNT)) + ep->dwc_ep.xfer_len -= + (ep->dwc_ep.desc_cnt - + 1) * ep->dwc_ep.maxpacket + + ep->dwc_ep.xfer_len % + ep->dwc_ep.maxpacket; + else + ep->dwc_ep.xfer_len -= + ep->dwc_ep.desc_cnt * + ep->dwc_ep.maxpacket; + if (ep->dwc_ep.xfer_len > 0) { + dwc_otg_ep_start_transfer + (core_if, &ep->dwc_ep); + } else { + is_last = 1; + } + } else { + ep->dwc_ep.xfer_count = + ep->dwc_ep.total_len - byte_count + + ((4 - + (ep->dwc_ep. + total_len & 0x3)) & 0x3); + is_last = 1; + } + } else { + deptsiz.d32 = 0; + deptsiz.d32 = + DWC_READ_REG32(&out_ep_regs->doeptsiz); + + byte_count = (ep->dwc_ep.xfer_len - + ep->dwc_ep.xfer_count - + deptsiz.b.xfersize); + ep->dwc_ep.xfer_buff += byte_count; + ep->dwc_ep.dma_addr += byte_count; + ep->dwc_ep.xfer_count += byte_count; + + /* Check if the whole transfer was completed, + * if no, setup transfer for next portion of data + */ + if (ep->dwc_ep.xfer_len < ep->dwc_ep.total_len) { + dwc_otg_ep_start_transfer(core_if, + &ep->dwc_ep); + } else if (ep->dwc_ep.sent_zlp) { + /* + * This fragment of code should initiate 0 + * length trasfer in case if it is queued + * a trasfer with size divisible to EPs max + * packet size and with usb_request zero field + * is set, which means that after data is transfered, + * it is also should be transfered + * a 0 length packet at the end. For Slave and + * Buffer DMA modes in this case SW has + * to initiate 2 transfers one with transfer size, + * and the second with 0 size. For Desriptor + * DMA mode SW is able to initiate a transfer, + * which will handle all the packets including + * the last 0 legth. + */ + ep->dwc_ep.sent_zlp = 0; + dwc_otg_ep_start_zl_transfer(core_if, + &ep->dwc_ep); + } else { + is_last = 1; + } + } + } else { + /* Check if the whole transfer was completed, + * if no, setup transfer for next portion of data + */ + if (ep->dwc_ep.xfer_len < ep->dwc_ep.total_len) { + dwc_otg_ep_start_transfer(core_if, &ep->dwc_ep); + } else if (ep->dwc_ep.sent_zlp) { + /* + * This fragment of code should initiate 0 + * length transfer in case if it is queued + * a transfer with size divisible to EPs max + * packet size and with usb_request zero field + * is set, which means that after data is transfered, + * it is also should be transfered + * a 0 length packet at the end. For Slave and + * Buffer DMA modes in this case SW has + * to initiate 2 transfers one with transfer size, + * and the second with 0 size. For Descriptor + * DMA mode SW is able to initiate a transfer, + * which will handle all the packets including + * the last 0 length. + */ + ep->dwc_ep.sent_zlp = 0; + dwc_otg_ep_start_zl_transfer(core_if, + &ep->dwc_ep); + } else { + is_last = 1; + } + } + + DWC_DEBUGPL(DBG_PCDV, + "addr %p, %d-%s len=%d cnt=%d xsize=%d pktcnt=%d\n", + &out_ep_regs->doeptsiz, ep->dwc_ep.num, + ep->dwc_ep.is_in ? "IN" : "OUT", + ep->dwc_ep.xfer_len, ep->dwc_ep.xfer_count, + deptsiz.b.xfersize, deptsiz.b.pktcnt); + } + + /* Complete the request */ + if (is_last) { +#ifdef DWC_UTE_CFI + if (ep->dwc_ep.buff_mode != BM_STANDARD) { + req->actual = ep->dwc_ep.cfi_req_len - byte_count; + } else { +#endif + req->actual = ep->dwc_ep.xfer_count; +#ifdef DWC_UTE_CFI + } +#endif + if (req->dw_align_buf) { + if (!ep->dwc_ep.is_in) { + dwc_memcpy(req->buf, req->dw_align_buf, req->length); + } + DWC_DMA_FREE(req->length, req->dw_align_buf, + req->dw_align_buf_dma); + } + + dwc_otg_request_done(ep, req, 0); + + ep->dwc_ep.start_xfer_buff = 0; + ep->dwc_ep.xfer_buff = 0; + ep->dwc_ep.xfer_len = 0; + + /* If there is a request in the queue start it. */ + start_next_request(ep); + } +} + +#ifdef DWC_EN_ISOC + +/** + * This function BNA interrupt for Isochronous EPs + * + */ +static void dwc_otg_pcd_handle_iso_bna(dwc_otg_pcd_ep_t * ep) +{ + dwc_ep_t *dwc_ep = &ep->dwc_ep; + volatile uint32_t *addr; + depctl_data_t depctl = {.d32 = 0 }; + dwc_otg_pcd_t *pcd = ep->pcd; + dwc_otg_dev_dma_desc_t *dma_desc; + int i; + + dma_desc = + dwc_ep->iso_desc_addr + dwc_ep->desc_cnt * (dwc_ep->proc_buf_num); + + if (dwc_ep->is_in) { + dev_dma_desc_sts_t sts = {.d32 = 0 }; + for (i = 0; i < dwc_ep->desc_cnt; ++i, ++dma_desc) { + sts.d32 = dma_desc->status.d32; + sts.b_iso_in.bs = BS_HOST_READY; + dma_desc->status.d32 = sts.d32; + } + } else { + dev_dma_desc_sts_t sts = {.d32 = 0 }; + for (i = 0; i < dwc_ep->desc_cnt; ++i, ++dma_desc) { + sts.d32 = dma_desc->status.d32; + sts.b_iso_out.bs = BS_HOST_READY; + dma_desc->status.d32 = sts.d32; + } + } + + if (dwc_ep->is_in == 0) { + addr = + &GET_CORE_IF(pcd)->dev_if->out_ep_regs[dwc_ep-> + num]->doepctl; + } else { + addr = + &GET_CORE_IF(pcd)->dev_if->in_ep_regs[dwc_ep->num]->diepctl; + } + depctl.b.epena = 1; + DWC_MODIFY_REG32(addr, depctl.d32, depctl.d32); +} + +/** + * This function sets latest iso packet information(non-PTI mode) + * + * @param core_if Programming view of DWC_otg controller. + * @param ep The EP to start the transfer on. + * + */ +void set_current_pkt_info(dwc_otg_core_if_t * core_if, dwc_ep_t * ep) +{ + deptsiz_data_t deptsiz = {.d32 = 0 }; + dma_addr_t dma_addr; + uint32_t offset; + + if (ep->proc_buf_num) + dma_addr = ep->dma_addr1; + else + dma_addr = ep->dma_addr0; + + if (ep->is_in) { + deptsiz.d32 = + DWC_READ_REG32(&core_if->dev_if-> + in_ep_regs[ep->num]->dieptsiz); + offset = ep->data_per_frame; + } else { + deptsiz.d32 = + DWC_READ_REG32(&core_if->dev_if-> + out_ep_regs[ep->num]->doeptsiz); + offset = + ep->data_per_frame + + (0x4 & (0x4 - (ep->data_per_frame & 0x3))); + } + + if (!deptsiz.b.xfersize) { + ep->pkt_info[ep->cur_pkt].length = ep->data_per_frame; + ep->pkt_info[ep->cur_pkt].offset = + ep->cur_pkt_dma_addr - dma_addr; + ep->pkt_info[ep->cur_pkt].status = 0; + } else { + ep->pkt_info[ep->cur_pkt].length = ep->data_per_frame; + ep->pkt_info[ep->cur_pkt].offset = + ep->cur_pkt_dma_addr - dma_addr; + ep->pkt_info[ep->cur_pkt].status = -DWC_E_NO_DATA; + } + ep->cur_pkt_addr += offset; + ep->cur_pkt_dma_addr += offset; + ep->cur_pkt++; +} + +/** + * This function sets latest iso packet information(DDMA mode) + * + * @param core_if Programming view of DWC_otg controller. + * @param dwc_ep The EP to start the transfer on. + * + */ +static void set_ddma_iso_pkts_info(dwc_otg_core_if_t * core_if, + dwc_ep_t * dwc_ep) +{ + dwc_otg_dev_dma_desc_t *dma_desc; + dev_dma_desc_sts_t sts = {.d32 = 0 }; + iso_pkt_info_t *iso_packet; + uint32_t data_per_desc; + uint32_t offset; + int i, j; + + iso_packet = dwc_ep->pkt_info; + + /** Reinit closed DMA Descriptors*/ + /** ISO OUT EP */ + if (dwc_ep->is_in == 0) { + dma_desc = + dwc_ep->iso_desc_addr + + dwc_ep->desc_cnt * dwc_ep->proc_buf_num; + offset = 0; + + for (i = 0; i < dwc_ep->desc_cnt - dwc_ep->pkt_per_frm; + i += dwc_ep->pkt_per_frm) { + for (j = 0; j < dwc_ep->pkt_per_frm; ++j) { + data_per_desc = + ((j + 1) * dwc_ep->maxpacket > + dwc_ep-> + data_per_frame) ? dwc_ep->data_per_frame - + j * dwc_ep->maxpacket : dwc_ep->maxpacket; + data_per_desc += + (data_per_desc % 4) ? (4 - + data_per_desc % + 4) : 0; + + sts.d32 = dma_desc->status.d32; + + /* Write status in iso_packet_decsriptor */ + iso_packet->status = + sts.b_iso_out.rxsts + + (sts.b_iso_out.bs ^ BS_DMA_DONE); + if (iso_packet->status) { + iso_packet->status = -DWC_E_NO_DATA; + } + + /* Received data length */ + if (!sts.b_iso_out.rxbytes) { + iso_packet->length = + data_per_desc - + sts.b_iso_out.rxbytes; + } else { + iso_packet->length = + data_per_desc - + sts.b_iso_out.rxbytes + (4 - + dwc_ep->data_per_frame + % 4); + } + + iso_packet->offset = offset; + + offset += data_per_desc; + dma_desc++; + iso_packet++; + } + } + + for (j = 0; j < dwc_ep->pkt_per_frm - 1; ++j) { + data_per_desc = + ((j + 1) * dwc_ep->maxpacket > + dwc_ep->data_per_frame) ? dwc_ep->data_per_frame - + j * dwc_ep->maxpacket : dwc_ep->maxpacket; + data_per_desc += + (data_per_desc % 4) ? (4 - data_per_desc % 4) : 0; + + sts.d32 = dma_desc->status.d32; + + /* Write status in iso_packet_decsriptor */ + iso_packet->status = + sts.b_iso_out.rxsts + + (sts.b_iso_out.bs ^ BS_DMA_DONE); + if (iso_packet->status) { + iso_packet->status = -DWC_E_NO_DATA; + } + + /* Received data length */ + iso_packet->length = + dwc_ep->data_per_frame - sts.b_iso_out.rxbytes; + + iso_packet->offset = offset; + + offset += data_per_desc; + iso_packet++; + dma_desc++; + } + + sts.d32 = dma_desc->status.d32; + + /* Write status in iso_packet_decsriptor */ + iso_packet->status = + sts.b_iso_out.rxsts + (sts.b_iso_out.bs ^ BS_DMA_DONE); + if (iso_packet->status) { + iso_packet->status = -DWC_E_NO_DATA; + } + /* Received data length */ + if (!sts.b_iso_out.rxbytes) { + iso_packet->length = + dwc_ep->data_per_frame - sts.b_iso_out.rxbytes; + } else { + iso_packet->length = + dwc_ep->data_per_frame - sts.b_iso_out.rxbytes + + (4 - dwc_ep->data_per_frame % 4); + } + + iso_packet->offset = offset; + } else { +/** ISO IN EP */ + + dma_desc = + dwc_ep->iso_desc_addr + + dwc_ep->desc_cnt * dwc_ep->proc_buf_num; + + for (i = 0; i < dwc_ep->desc_cnt - 1; i++) { + sts.d32 = dma_desc->status.d32; + + /* Write status in iso packet descriptor */ + iso_packet->status = + sts.b_iso_in.txsts + + (sts.b_iso_in.bs ^ BS_DMA_DONE); + if (iso_packet->status != 0) { + iso_packet->status = -DWC_E_NO_DATA; + + } + /* Bytes has been transfered */ + iso_packet->length = + dwc_ep->data_per_frame - sts.b_iso_in.txbytes; + + dma_desc++; + iso_packet++; + } + + sts.d32 = dma_desc->status.d32; + while (sts.b_iso_in.bs == BS_DMA_BUSY) { + sts.d32 = dma_desc->status.d32; + } + + /* Write status in iso packet descriptor ??? do be done with ERROR codes */ + iso_packet->status = + sts.b_iso_in.txsts + (sts.b_iso_in.bs ^ BS_DMA_DONE); + if (iso_packet->status != 0) { + iso_packet->status = -DWC_E_NO_DATA; + } + + /* Bytes has been transfered */ + iso_packet->length = + dwc_ep->data_per_frame - sts.b_iso_in.txbytes; + } +} + +/** + * This function reinitialize DMA Descriptors for Isochronous transfer + * + * @param core_if Programming view of DWC_otg controller. + * @param dwc_ep The EP to start the transfer on. + * + */ +static void reinit_ddma_iso_xfer(dwc_otg_core_if_t * core_if, dwc_ep_t * dwc_ep) +{ + int i, j; + dwc_otg_dev_dma_desc_t *dma_desc; + dma_addr_t dma_ad; + volatile uint32_t *addr; + dev_dma_desc_sts_t sts = {.d32 = 0 }; + uint32_t data_per_desc; + + if (dwc_ep->is_in == 0) { + addr = &core_if->dev_if->out_ep_regs[dwc_ep->num]->doepctl; + } else { + addr = &core_if->dev_if->in_ep_regs[dwc_ep->num]->diepctl; + } + + if (dwc_ep->proc_buf_num == 0) { + /** Buffer 0 descriptors setup */ + dma_ad = dwc_ep->dma_addr0; + } else { + /** Buffer 1 descriptors setup */ + dma_ad = dwc_ep->dma_addr1; + } + + /** Reinit closed DMA Descriptors*/ + /** ISO OUT EP */ + if (dwc_ep->is_in == 0) { + dma_desc = + dwc_ep->iso_desc_addr + + dwc_ep->desc_cnt * dwc_ep->proc_buf_num; + + sts.b_iso_out.bs = BS_HOST_READY; + sts.b_iso_out.rxsts = 0; + sts.b_iso_out.l = 0; + sts.b_iso_out.sp = 0; + sts.b_iso_out.ioc = 0; + sts.b_iso_out.pid = 0; + sts.b_iso_out.framenum = 0; + + for (i = 0; i < dwc_ep->desc_cnt - dwc_ep->pkt_per_frm; + i += dwc_ep->pkt_per_frm) { + for (j = 0; j < dwc_ep->pkt_per_frm; ++j) { + data_per_desc = + ((j + 1) * dwc_ep->maxpacket > + dwc_ep-> + data_per_frame) ? dwc_ep->data_per_frame - + j * dwc_ep->maxpacket : dwc_ep->maxpacket; + data_per_desc += + (data_per_desc % 4) ? (4 - + data_per_desc % + 4) : 0; + sts.b_iso_out.rxbytes = data_per_desc; + dma_desc->buf = dma_ad; + dma_desc->status.d32 = sts.d32; + + dma_ad += data_per_desc; + dma_desc++; + } + } + + for (j = 0; j < dwc_ep->pkt_per_frm - 1; ++j) { + + data_per_desc = + ((j + 1) * dwc_ep->maxpacket > + dwc_ep->data_per_frame) ? dwc_ep->data_per_frame - + j * dwc_ep->maxpacket : dwc_ep->maxpacket; + data_per_desc += + (data_per_desc % 4) ? (4 - data_per_desc % 4) : 0; + sts.b_iso_out.rxbytes = data_per_desc; + + dma_desc->buf = dma_ad; + dma_desc->status.d32 = sts.d32; + + dma_desc++; + dma_ad += data_per_desc; + } + + sts.b_iso_out.ioc = 1; + sts.b_iso_out.l = dwc_ep->proc_buf_num; + + data_per_desc = + ((j + 1) * dwc_ep->maxpacket > + dwc_ep->data_per_frame) ? dwc_ep->data_per_frame - + j * dwc_ep->maxpacket : dwc_ep->maxpacket; + data_per_desc += + (data_per_desc % 4) ? (4 - data_per_desc % 4) : 0; + sts.b_iso_out.rxbytes = data_per_desc; + + dma_desc->buf = dma_ad; + dma_desc->status.d32 = sts.d32; + } else { +/** ISO IN EP */ + + dma_desc = + dwc_ep->iso_desc_addr + + dwc_ep->desc_cnt * dwc_ep->proc_buf_num; + + sts.b_iso_in.bs = BS_HOST_READY; + sts.b_iso_in.txsts = 0; + sts.b_iso_in.sp = 0; + sts.b_iso_in.ioc = 0; + sts.b_iso_in.pid = dwc_ep->pkt_per_frm; + sts.b_iso_in.framenum = dwc_ep->next_frame; + sts.b_iso_in.txbytes = dwc_ep->data_per_frame; + sts.b_iso_in.l = 0; + + for (i = 0; i < dwc_ep->desc_cnt - 1; i++) { + dma_desc->buf = dma_ad; + dma_desc->status.d32 = sts.d32; + + sts.b_iso_in.framenum += dwc_ep->bInterval; + dma_ad += dwc_ep->data_per_frame; + dma_desc++; + } + + sts.b_iso_in.ioc = 1; + sts.b_iso_in.l = dwc_ep->proc_buf_num; + + dma_desc->buf = dma_ad; + dma_desc->status.d32 = sts.d32; + + dwc_ep->next_frame = + sts.b_iso_in.framenum + dwc_ep->bInterval * 1; + } + dwc_ep->proc_buf_num = (dwc_ep->proc_buf_num ^ 1) & 0x1; +} + +/** + * This function is to handle Iso EP transfer complete interrupt + * in case Iso out packet was dropped + * + * @param core_if Programming view of DWC_otg controller. + * @param dwc_ep The EP for wihich transfer complete was asserted + * + */ +static uint32_t handle_iso_out_pkt_dropped(dwc_otg_core_if_t * core_if, + dwc_ep_t * dwc_ep) +{ + uint32_t dma_addr; + uint32_t drp_pkt; + uint32_t drp_pkt_cnt; + deptsiz_data_t deptsiz = {.d32 = 0 }; + depctl_data_t depctl = {.d32 = 0 }; + int i; + + deptsiz.d32 = + DWC_READ_REG32(&core_if->dev_if-> + out_ep_regs[dwc_ep->num]->doeptsiz); + + drp_pkt = dwc_ep->pkt_cnt - deptsiz.b.pktcnt; + drp_pkt_cnt = dwc_ep->pkt_per_frm - (drp_pkt % dwc_ep->pkt_per_frm); + + /* Setting dropped packets status */ + for (i = 0; i < drp_pkt_cnt; ++i) { + dwc_ep->pkt_info[drp_pkt].status = -DWC_E_NO_DATA; + drp_pkt++; + deptsiz.b.pktcnt--; + } + + if (deptsiz.b.pktcnt > 0) { + deptsiz.b.xfersize = + dwc_ep->xfer_len - (dwc_ep->pkt_cnt - + deptsiz.b.pktcnt) * dwc_ep->maxpacket; + } else { + deptsiz.b.xfersize = 0; + deptsiz.b.pktcnt = 0; + } + + DWC_WRITE_REG32(&core_if->dev_if->out_ep_regs[dwc_ep->num]->doeptsiz, + deptsiz.d32); + + if (deptsiz.b.pktcnt > 0) { + if (dwc_ep->proc_buf_num) { + dma_addr = + dwc_ep->dma_addr1 + dwc_ep->xfer_len - + deptsiz.b.xfersize; + } else { + dma_addr = + dwc_ep->dma_addr0 + dwc_ep->xfer_len - + deptsiz.b.xfersize;; + } + + DWC_WRITE_REG32(&core_if->dev_if-> + out_ep_regs[dwc_ep->num]->doepdma, dma_addr); + + /** Re-enable endpoint, clear nak */ + depctl.d32 = 0; + depctl.b.epena = 1; + depctl.b.cnak = 1; + + DWC_MODIFY_REG32(&core_if->dev_if-> + out_ep_regs[dwc_ep->num]->doepctl, depctl.d32, + depctl.d32); + return 0; + } else { + return 1; + } +} + +/** + * This function sets iso packets information(PTI mode) + * + * @param core_if Programming view of DWC_otg controller. + * @param ep The EP to start the transfer on. + * + */ +static uint32_t set_iso_pkts_info(dwc_otg_core_if_t * core_if, dwc_ep_t * ep) +{ + int i, j; + dma_addr_t dma_ad; + iso_pkt_info_t *packet_info = ep->pkt_info; + uint32_t offset; + uint32_t frame_data; + deptsiz_data_t deptsiz; + + if (ep->proc_buf_num == 0) { + /** Buffer 0 descriptors setup */ + dma_ad = ep->dma_addr0; + } else { + /** Buffer 1 descriptors setup */ + dma_ad = ep->dma_addr1; + } + + if (ep->is_in) { + deptsiz.d32 = + DWC_READ_REG32(&core_if->dev_if->in_ep_regs[ep->num]-> + dieptsiz); + } else { + deptsiz.d32 = + DWC_READ_REG32(&core_if->dev_if->out_ep_regs[ep->num]-> + doeptsiz); + } + + if (!deptsiz.b.xfersize) { + offset = 0; + for (i = 0; i < ep->pkt_cnt; i += ep->pkt_per_frm) { + frame_data = ep->data_per_frame; + for (j = 0; j < ep->pkt_per_frm; ++j) { + + /* Packet status - is not set as initially + * it is set to 0 and if packet was sent + successfully, status field will remain 0*/ + + /* Bytes has been transfered */ + packet_info->length = + (ep->maxpacket < + frame_data) ? ep->maxpacket : frame_data; + + /* Received packet offset */ + packet_info->offset = offset; + offset += packet_info->length; + frame_data -= packet_info->length; + + packet_info++; + } + } + return 1; + } else { + /* This is a workaround for in case of Transfer Complete with + * PktDrpSts interrupts merging - in this case Transfer complete + * interrupt for Isoc Out Endpoint is asserted without PktDrpSts + * set and with DOEPTSIZ register non zero. Investigations showed, + * that this happens when Out packet is dropped, but because of + * interrupts merging during first interrupt handling PktDrpSts + * bit is cleared and for next merged interrupts it is not reset. + * In this case SW hadles the interrupt as if PktDrpSts bit is set. + */ + if (ep->is_in) { + return 1; + } else { + return handle_iso_out_pkt_dropped(core_if, ep); + } + } +} + +/** + * This function is to handle Iso EP transfer complete interrupt + * + * @param pcd The PCD + * @param ep The EP for which transfer complete was asserted + * + */ +static void complete_iso_ep(dwc_otg_pcd_t * pcd, dwc_otg_pcd_ep_t * ep) +{ + dwc_otg_core_if_t *core_if = GET_CORE_IF(ep->pcd); + dwc_ep_t *dwc_ep = &ep->dwc_ep; + uint8_t is_last = 0; + + if (ep->dwc_ep.next_frame == 0xffffffff) { + DWC_WARN("Next frame is not set!\n"); + return; + } + + if (core_if->dma_enable) { + if (core_if->dma_desc_enable) { + set_ddma_iso_pkts_info(core_if, dwc_ep); + reinit_ddma_iso_xfer(core_if, dwc_ep); + is_last = 1; + } else { + if (core_if->pti_enh_enable) { + if (set_iso_pkts_info(core_if, dwc_ep)) { + dwc_ep->proc_buf_num = + (dwc_ep->proc_buf_num ^ 1) & 0x1; + dwc_otg_iso_ep_start_buf_transfer + (core_if, dwc_ep); + is_last = 1; + } + } else { + set_current_pkt_info(core_if, dwc_ep); + if (dwc_ep->cur_pkt >= dwc_ep->pkt_cnt) { + is_last = 1; + dwc_ep->cur_pkt = 0; + dwc_ep->proc_buf_num = + (dwc_ep->proc_buf_num ^ 1) & 0x1; + if (dwc_ep->proc_buf_num) { + dwc_ep->cur_pkt_addr = + dwc_ep->xfer_buff1; + dwc_ep->cur_pkt_dma_addr = + dwc_ep->dma_addr1; + } else { + dwc_ep->cur_pkt_addr = + dwc_ep->xfer_buff0; + dwc_ep->cur_pkt_dma_addr = + dwc_ep->dma_addr0; + } + + } + dwc_otg_iso_ep_start_frm_transfer(core_if, + dwc_ep); + } + } + } else { + set_current_pkt_info(core_if, dwc_ep); + if (dwc_ep->cur_pkt >= dwc_ep->pkt_cnt) { + is_last = 1; + dwc_ep->cur_pkt = 0; + dwc_ep->proc_buf_num = (dwc_ep->proc_buf_num ^ 1) & 0x1; + if (dwc_ep->proc_buf_num) { + dwc_ep->cur_pkt_addr = dwc_ep->xfer_buff1; + dwc_ep->cur_pkt_dma_addr = dwc_ep->dma_addr1; + } else { + dwc_ep->cur_pkt_addr = dwc_ep->xfer_buff0; + dwc_ep->cur_pkt_dma_addr = dwc_ep->dma_addr0; + } + + } + dwc_otg_iso_ep_start_frm_transfer(core_if, dwc_ep); + } + if (is_last) + dwc_otg_iso_buffer_done(pcd, ep, ep->iso_req_handle); +} +#endif /* DWC_EN_ISOC */ + +/** + * This function handle BNA interrupt for Non Isochronous EPs + * + */ +static void dwc_otg_pcd_handle_noniso_bna(dwc_otg_pcd_ep_t * ep) +{ + dwc_ep_t *dwc_ep = &ep->dwc_ep; + volatile uint32_t *addr; + depctl_data_t depctl = {.d32 = 0 }; + dwc_otg_pcd_t *pcd = ep->pcd; + dwc_otg_dev_dma_desc_t *dma_desc; + dev_dma_desc_sts_t sts = {.d32 = 0 }; + dwc_otg_core_if_t *core_if = ep->pcd->core_if; + int i, start; + + if (!dwc_ep->desc_cnt) + DWC_WARN("Ep%d %s Descriptor count = %d \n", dwc_ep->num, + (dwc_ep->is_in ? "IN" : "OUT"), dwc_ep->desc_cnt); + + if (core_if->core_params->cont_on_bna && !dwc_ep->is_in + && dwc_ep->type != DWC_OTG_EP_TYPE_CONTROL) { + uint32_t doepdma; + dwc_otg_dev_out_ep_regs_t *out_regs = + core_if->dev_if->out_ep_regs[dwc_ep->num]; + doepdma = DWC_READ_REG32(&(out_regs->doepdma)); + start = (doepdma - dwc_ep->dma_desc_addr)/sizeof(dwc_otg_dev_dma_desc_t); + dma_desc = &(dwc_ep->desc_addr[start]); + } else { + start = 0; + dma_desc = dwc_ep->desc_addr; + } + + + for (i = start; i < dwc_ep->desc_cnt; ++i, ++dma_desc) { + sts.d32 = dma_desc->status.d32; + sts.b.bs = BS_HOST_READY; + dma_desc->status.d32 = sts.d32; + } + + if (dwc_ep->is_in == 0) { + addr = + &GET_CORE_IF(pcd)->dev_if->out_ep_regs[dwc_ep->num]-> + doepctl; + } else { + addr = + &GET_CORE_IF(pcd)->dev_if->in_ep_regs[dwc_ep->num]->diepctl; + } + depctl.b.epena = 1; + depctl.b.cnak = 1; + DWC_MODIFY_REG32(addr, 0, depctl.d32); +} + +/** + * This function handles EP0 Control transfers. + * + * The state of the control transfers are tracked in + * ep0state. + */ +static void handle_ep0(dwc_otg_pcd_t * pcd) +{ + dwc_otg_core_if_t *core_if = GET_CORE_IF(pcd); + dwc_otg_pcd_ep_t *ep0 = &pcd->ep0; + dev_dma_desc_sts_t desc_sts; + deptsiz0_data_t deptsiz; + uint32_t byte_count; + +#ifdef DEBUG_EP0 + DWC_DEBUGPL(DBG_PCDV, "%s()\n", __func__); + print_ep0_state(pcd); +#endif + +// DWC_PRINTF("HANDLE EP0\n"); + + switch (pcd->ep0state) { + case EP0_DISCONNECT: + break; + + case EP0_IDLE: + pcd->request_config = 0; + + pcd_setup(pcd); + break; + + case EP0_IN_DATA_PHASE: +#ifdef DEBUG_EP0 + DWC_DEBUGPL(DBG_PCD, "DATA_IN EP%d-%s: type=%d, mps=%d\n", + ep0->dwc_ep.num, (ep0->dwc_ep.is_in ? "IN" : "OUT"), + ep0->dwc_ep.type, ep0->dwc_ep.maxpacket); +#endif + + if (core_if->dma_enable != 0) { + /* + * For EP0 we can only program 1 packet at a time so we + * need to do the make calculations after each complete. + * Call write_packet to make the calculations, as in + * slave mode, and use those values to determine if we + * can complete. + */ + if (core_if->dma_desc_enable == 0) { + deptsiz.d32 = + DWC_READ_REG32(&core_if-> + dev_if->in_ep_regs[0]-> + dieptsiz); + byte_count = + ep0->dwc_ep.xfer_len - deptsiz.b.xfersize; + } else { + desc_sts = + core_if->dev_if->in_desc_addr->status; + byte_count = + ep0->dwc_ep.xfer_len - desc_sts.b.bytes; + } + ep0->dwc_ep.xfer_count += byte_count; + ep0->dwc_ep.xfer_buff += byte_count; + ep0->dwc_ep.dma_addr += byte_count; + } + if (ep0->dwc_ep.xfer_count < ep0->dwc_ep.total_len) { + dwc_otg_ep0_continue_transfer(GET_CORE_IF(pcd), + &ep0->dwc_ep); + DWC_DEBUGPL(DBG_PCD, "CONTINUE TRANSFER\n"); + } else if (ep0->dwc_ep.sent_zlp) { + dwc_otg_ep0_continue_transfer(GET_CORE_IF(pcd), + &ep0->dwc_ep); + ep0->dwc_ep.sent_zlp = 0; + DWC_DEBUGPL(DBG_PCD, "CONTINUE TRANSFER sent zlp\n"); + } else { + ep0_complete_request(ep0); + DWC_DEBUGPL(DBG_PCD, "COMPLETE TRANSFER\n"); + } + break; + case EP0_OUT_DATA_PHASE: +#ifdef DEBUG_EP0 + DWC_DEBUGPL(DBG_PCD, "DATA_OUT EP%d-%s: type=%d, mps=%d\n", + ep0->dwc_ep.num, (ep0->dwc_ep.is_in ? "IN" : "OUT"), + ep0->dwc_ep.type, ep0->dwc_ep.maxpacket); +#endif + if (core_if->dma_enable != 0) { + if (core_if->dma_desc_enable == 0) { + deptsiz.d32 = + DWC_READ_REG32(&core_if-> + dev_if->out_ep_regs[0]-> + doeptsiz); + byte_count = + ep0->dwc_ep.maxpacket - deptsiz.b.xfersize; + } else { + desc_sts = + core_if->dev_if->out_desc_addr->status; + byte_count = + ep0->dwc_ep.maxpacket - desc_sts.b.bytes; + } + ep0->dwc_ep.xfer_count += byte_count; + ep0->dwc_ep.xfer_buff += byte_count; + ep0->dwc_ep.dma_addr += byte_count; + } + if (ep0->dwc_ep.xfer_count < ep0->dwc_ep.total_len) { + dwc_otg_ep0_continue_transfer(GET_CORE_IF(pcd), + &ep0->dwc_ep); + DWC_DEBUGPL(DBG_PCD, "CONTINUE TRANSFER\n"); + } else if (ep0->dwc_ep.sent_zlp) { + dwc_otg_ep0_continue_transfer(GET_CORE_IF(pcd), + &ep0->dwc_ep); + ep0->dwc_ep.sent_zlp = 0; + DWC_DEBUGPL(DBG_PCD, "CONTINUE TRANSFER sent zlp\n"); + } else { + ep0_complete_request(ep0); + DWC_DEBUGPL(DBG_PCD, "COMPLETE TRANSFER\n"); + } + break; + + case EP0_IN_STATUS_PHASE: + case EP0_OUT_STATUS_PHASE: + DWC_DEBUGPL(DBG_PCD, "CASE: EP0_STATUS\n"); + ep0_complete_request(ep0); + pcd->ep0state = EP0_IDLE; + ep0->stopped = 1; + ep0->dwc_ep.is_in = 0; /* OUT for next SETUP */ + + /* Prepare for more SETUP Packets */ + if (core_if->dma_enable) { + ep0_out_start(core_if, pcd); + } + break; + + case EP0_STALL: + DWC_ERROR("EP0 STALLed, should not get here pcd_setup()\n"); + break; + } +#ifdef DEBUG_EP0 + print_ep0_state(pcd); +#endif +} + +/** + * Restart transfer + */ +static void restart_transfer(dwc_otg_pcd_t * pcd, const uint32_t epnum) +{ + dwc_otg_core_if_t *core_if; + dwc_otg_dev_if_t *dev_if; + deptsiz_data_t dieptsiz = {.d32 = 0 }; + dwc_otg_pcd_ep_t *ep; + + ep = get_in_ep(pcd, epnum); + +#ifdef DWC_EN_ISOC + if (ep->dwc_ep.type == DWC_OTG_EP_TYPE_ISOC) { + return; + } +#endif /* DWC_EN_ISOC */ + + core_if = GET_CORE_IF(pcd); + dev_if = core_if->dev_if; + + dieptsiz.d32 = DWC_READ_REG32(&dev_if->in_ep_regs[epnum]->dieptsiz); + + DWC_DEBUGPL(DBG_PCD, "xfer_buff=%p xfer_count=%0x xfer_len=%0x" + " stopped=%d\n", ep->dwc_ep.xfer_buff, + ep->dwc_ep.xfer_count, ep->dwc_ep.xfer_len, ep->stopped); + /* + * If xfersize is 0 and pktcnt in not 0, resend the last packet. + */ + if (dieptsiz.b.pktcnt && dieptsiz.b.xfersize == 0 && + ep->dwc_ep.start_xfer_buff != 0) { + if (ep->dwc_ep.total_len <= ep->dwc_ep.maxpacket) { + ep->dwc_ep.xfer_count = 0; + ep->dwc_ep.xfer_buff = ep->dwc_ep.start_xfer_buff; + ep->dwc_ep.xfer_len = ep->dwc_ep.xfer_count; + } else { + ep->dwc_ep.xfer_count -= ep->dwc_ep.maxpacket; + /* convert packet size to dwords. */ + ep->dwc_ep.xfer_buff -= ep->dwc_ep.maxpacket; + ep->dwc_ep.xfer_len = ep->dwc_ep.xfer_count; + } + ep->stopped = 0; + DWC_DEBUGPL(DBG_PCD, "xfer_buff=%p xfer_count=%0x " + "xfer_len=%0x stopped=%d\n", + ep->dwc_ep.xfer_buff, + ep->dwc_ep.xfer_count, ep->dwc_ep.xfer_len, + ep->stopped); + if (epnum == 0) { + dwc_otg_ep0_start_transfer(core_if, &ep->dwc_ep); + } else { + dwc_otg_ep_start_transfer(core_if, &ep->dwc_ep); + } + } +} + +/* + * This function create new nextep sequnce based on Learn Queue. + * + * @param core_if Programming view of DWC_otg controller + */ +void predict_nextep_seq( dwc_otg_core_if_t * core_if) +{ + dwc_otg_device_global_regs_t *dev_global_regs = + core_if->dev_if->dev_global_regs; + const uint32_t TOKEN_Q_DEPTH = core_if->hwcfg2.b.dev_token_q_depth; + /* Number of Token Queue Registers */ + const int DTKNQ_REG_CNT = (TOKEN_Q_DEPTH + 7) / 8; + dtknq1_data_t dtknqr1; + uint32_t in_tkn_epnums[4]; + uint8_t seqnum[MAX_EPS_CHANNELS]; + uint8_t intkn_seq[TOKEN_Q_DEPTH]; + grstctl_t resetctl = {.d32 = 0 }; + uint8_t temp; + int ndx = 0; + int start = 0; + int end = 0; + int sort_done = 0; + int i = 0; + volatile uint32_t *addr = &dev_global_regs->dtknqr1; + + + DWC_DEBUGPL(DBG_PCD,"dev_token_q_depth=%d\n",TOKEN_Q_DEPTH); + + /* Read the DTKNQ Registers */ + for (i = 0; i < DTKNQ_REG_CNT; i++) { + in_tkn_epnums[i] = DWC_READ_REG32(addr); + DWC_DEBUGPL(DBG_PCDV, "DTKNQR%d=0x%08x\n", i + 1, + in_tkn_epnums[i]); + if (addr == &dev_global_regs->dvbusdis) { + addr = &dev_global_regs->dtknqr3_dthrctl; + } else { + ++addr; + } + + } + + /* Copy the DTKNQR1 data to the bit field. */ + dtknqr1.d32 = in_tkn_epnums[0]; + if (dtknqr1.b.wrap_bit) { + ndx = dtknqr1.b.intknwptr; + end = ndx -1; + if (end < 0) + end = TOKEN_Q_DEPTH -1; + } else { + ndx = 0; + end = dtknqr1.b.intknwptr -1; + if (end < 0) + end = 0; + } + start = ndx; + + /* Fill seqnum[] by initial values: EP number + 31 */ + for (i=0; i <= core_if->dev_if->num_in_eps; i++) { + seqnum[i] = i +31; + } + + /* Fill intkn_seq[] from in_tkn_epnums[0] */ + for (i=0; i < 6; i++) + intkn_seq[i] = (in_tkn_epnums[0] >> ((7-i) * 4)) & 0xf; + + if (TOKEN_Q_DEPTH > 6) { + /* Fill intkn_seq[] from in_tkn_epnums[1] */ + for (i=6; i < 14; i++) + intkn_seq[i] = + (in_tkn_epnums[1] >> ((7 - (i - 6)) * 4)) & 0xf; + } + + if (TOKEN_Q_DEPTH > 14) { + /* Fill intkn_seq[] from in_tkn_epnums[1] */ + for (i=14; i < 22; i++) + intkn_seq[i] = + (in_tkn_epnums[2] >> ((7 - (i - 14)) * 4)) & 0xf; + } + + if (TOKEN_Q_DEPTH > 22) { + /* Fill intkn_seq[] from in_tkn_epnums[1] */ + for (i=22; i < 30; i++) + intkn_seq[i] = + (in_tkn_epnums[3] >> ((7 - (i - 22)) * 4)) & 0xf; + } + + DWC_DEBUGPL(DBG_PCDV, "%s start=%d end=%d intkn_seq[]:\n", __func__, + start, end); + for (i=0; idev_if->num_in_eps; i++) { + if (core_if->nextep_seq[i] == 0xff ) + seqnum[i] = 0xff; + } + + /* Sort seqnum[] */ + sort_done = 0; + while (!sort_done) { + sort_done = 1; + for (i=0; idev_if->num_in_eps; i++) { + if (seqnum[i] > seqnum[i+1]) { + temp = seqnum[i]; + seqnum[i] = seqnum[i+1]; + seqnum[i+1] = temp; + sort_done = 0; + } + } + } + + ndx = start + seqnum[0]; + if (ndx >= TOKEN_Q_DEPTH) + ndx = ndx % TOKEN_Q_DEPTH; + core_if->first_in_nextep_seq = intkn_seq[ndx]; + + /* Update seqnum[] by EP numbers */ + for (i=0; i<=core_if->dev_if->num_in_eps; i++) { + ndx = start + i; + if (seqnum[i] < 31) { + ndx = start + seqnum[i]; + if (ndx >= TOKEN_Q_DEPTH) + ndx = ndx % TOKEN_Q_DEPTH; + seqnum[i] = intkn_seq[ndx]; + } else { + if (seqnum[i] < 0xff) { + seqnum[i] = seqnum[i] - 31; + } else { + break; + } + } + } + + /* Update nextep_seq[] based on seqnum[] */ + for (i=0; idev_if->num_in_eps; i++) { + if (seqnum[i] != 0xff) { + if (seqnum[i+1] != 0xff) { + core_if->nextep_seq[seqnum[i]] = seqnum[i+1]; + } else { + core_if->nextep_seq[seqnum[i]] = core_if->first_in_nextep_seq; + break; + } + } else { + break; + } + } + + DWC_DEBUGPL(DBG_PCDV, "%s first_in_nextep_seq= %2d; nextep_seq[]:\n", + __func__, core_if->first_in_nextep_seq); + for (i=0; i <= core_if->dev_if->num_in_eps; i++) { + DWC_DEBUGPL(DBG_PCDV,"%2d\n", core_if->nextep_seq[i]); + } + + /* Flush the Learning Queue */ + resetctl.d32 = DWC_READ_REG32(&core_if->core_global_regs->grstctl); + resetctl.b.intknqflsh = 1; + DWC_WRITE_REG32(&core_if->core_global_regs->grstctl, resetctl.d32); + + +} + +/** + * handle the IN EP disable interrupt. + */ +static inline void handle_in_ep_disable_intr(dwc_otg_pcd_t * pcd, + const uint32_t epnum) +{ + dwc_otg_core_if_t *core_if = GET_CORE_IF(pcd); + dwc_otg_dev_if_t *dev_if = core_if->dev_if; + deptsiz_data_t dieptsiz = {.d32 = 0 }; + dctl_data_t dctl = {.d32 = 0 }; + dwc_otg_pcd_ep_t *ep; + dwc_ep_t *dwc_ep; + gintmsk_data_t gintmsk_data; + depctl_data_t depctl; + uint32_t diepdma; + uint32_t remain_to_transfer = 0; + uint8_t i; + uint32_t xfer_size; + + ep = get_in_ep(pcd, epnum); + dwc_ep = &ep->dwc_ep; + + if (dwc_ep->type == DWC_OTG_EP_TYPE_ISOC) { + dwc_otg_flush_tx_fifo(core_if, dwc_ep->tx_fifo_num); + complete_ep(ep); + return; + } + + DWC_DEBUGPL(DBG_PCD, "diepctl%d=%0x\n", epnum, + DWC_READ_REG32(&dev_if->in_ep_regs[epnum]->diepctl)); + dieptsiz.d32 = DWC_READ_REG32(&dev_if->in_ep_regs[epnum]->dieptsiz); + depctl.d32 = DWC_READ_REG32(&dev_if->in_ep_regs[epnum]->diepctl); + + DWC_DEBUGPL(DBG_ANY, "pktcnt=%d size=%d\n", + dieptsiz.b.pktcnt, dieptsiz.b.xfersize); + + if ((core_if->start_predict == 0) || (depctl.b.eptype & 1)) { + if (ep->stopped) { + if (core_if->en_multiple_tx_fifo) + /* Flush the Tx FIFO */ + dwc_otg_flush_tx_fifo(core_if, dwc_ep->tx_fifo_num); + /* Clear the Global IN NP NAK */ + dctl.d32 = 0; + dctl.b.cgnpinnak = 1; + DWC_MODIFY_REG32(&dev_if->dev_global_regs->dctl, dctl.d32, dctl.d32); + /* Restart the transaction */ + if (dieptsiz.b.pktcnt != 0 || dieptsiz.b.xfersize != 0) { + restart_transfer(pcd, epnum); + } + } else { + /* Restart the transaction */ + if (dieptsiz.b.pktcnt != 0 || dieptsiz.b.xfersize != 0) { + restart_transfer(pcd, epnum); + } + DWC_DEBUGPL(DBG_ANY, "STOPPED!!!\n"); + } + return; + } + + if (core_if->start_predict > 2) { // NP IN EP + core_if->start_predict--; + return; + } + + core_if->start_predict--; + + if (core_if->start_predict == 1) { // All NP IN Ep's disabled now + + predict_nextep_seq(core_if); + + /* Update all active IN EP's NextEP field based of nextep_seq[] */ + for ( i = 0; i <= core_if->dev_if->num_in_eps; i++) { + depctl.d32 = + DWC_READ_REG32(&dev_if->in_ep_regs[i]->diepctl); + if (core_if->nextep_seq[i] != 0xff) { // Active NP IN EP + depctl.b.nextep = core_if->nextep_seq[i]; + DWC_WRITE_REG32(&dev_if->in_ep_regs[i]->diepctl, depctl.d32); + } + } + /* Flush Shared NP TxFIFO */ + dwc_otg_flush_tx_fifo(core_if, 0); + /* Rewind buffers */ + if (!core_if->dma_desc_enable) { + i = core_if->first_in_nextep_seq; + do { + ep = get_in_ep(pcd, i); + dieptsiz.d32 = DWC_READ_REG32(&dev_if->in_ep_regs[i]->dieptsiz); + xfer_size = ep->dwc_ep.total_len - ep->dwc_ep.xfer_count; + if (xfer_size > ep->dwc_ep.maxxfer) + xfer_size = ep->dwc_ep.maxxfer; + depctl.d32 = DWC_READ_REG32(&dev_if->in_ep_regs[i]->diepctl); + if (dieptsiz.b.pktcnt != 0) { + if (xfer_size == 0) { + remain_to_transfer = 0; + } else { + if ((xfer_size % ep->dwc_ep.maxpacket) == 0) { + remain_to_transfer = + dieptsiz.b.pktcnt * ep->dwc_ep.maxpacket; + } else { + remain_to_transfer = ((dieptsiz.b.pktcnt -1) * ep->dwc_ep.maxpacket) + + (xfer_size % ep->dwc_ep.maxpacket); + } + } + diepdma = DWC_READ_REG32(&dev_if->in_ep_regs[i]->diepdma); + dieptsiz.b.xfersize = remain_to_transfer; + DWC_WRITE_REG32(&dev_if->in_ep_regs[i]->dieptsiz, dieptsiz.d32); + diepdma = ep->dwc_ep.dma_addr + (xfer_size - remain_to_transfer); + DWC_WRITE_REG32(&dev_if->in_ep_regs[i]->diepdma, diepdma); + } + i = core_if->nextep_seq[i]; + } while (i != core_if->first_in_nextep_seq); + } else { // dma_desc_enable + DWC_PRINTF("%s Learning Queue not supported in DDMA\n", __func__); + } + + /* Restart transfers in predicted sequences */ + i = core_if->first_in_nextep_seq; + do { + dieptsiz.d32 = DWC_READ_REG32(&dev_if->in_ep_regs[i]->dieptsiz); + depctl.d32 = DWC_READ_REG32(&dev_if->in_ep_regs[i]->diepctl); + if (dieptsiz.b.pktcnt != 0) { + depctl.d32 = DWC_READ_REG32(&dev_if->in_ep_regs[i]->diepctl); + depctl.b.epena = 1; + depctl.b.cnak = 1; + DWC_WRITE_REG32(&dev_if->in_ep_regs[i]->diepctl, depctl.d32); + } + i = core_if->nextep_seq[i]; + } while (i != core_if->first_in_nextep_seq); + + /* Clear the global non-periodic IN NAK handshake */ + dctl.d32 = 0; + dctl.b.cgnpinnak = 1; + DWC_MODIFY_REG32(&dev_if->dev_global_regs->dctl, dctl.d32, dctl.d32); + + /* Unmask EP Mismatch interrupt */ + gintmsk_data.d32 = 0; + gintmsk_data.b.epmismatch = 1; + DWC_MODIFY_REG32(&core_if->core_global_regs->gintmsk, 0, gintmsk_data.d32); + + core_if->start_predict = 0; + + } +} + +/** + * Handler for the IN EP timeout handshake interrupt. + */ +static inline void handle_in_ep_timeout_intr(dwc_otg_pcd_t * pcd, + const uint32_t epnum) +{ + dwc_otg_core_if_t *core_if = GET_CORE_IF(pcd); + dwc_otg_dev_if_t *dev_if = core_if->dev_if; + +#ifdef DEBUG + deptsiz_data_t dieptsiz = {.d32 = 0 }; + uint32_t num = 0; +#endif + dctl_data_t dctl = {.d32 = 0 }; + dwc_otg_pcd_ep_t *ep; + + gintmsk_data_t intr_mask = {.d32 = 0 }; + + ep = get_in_ep(pcd, epnum); + + /* Disable the NP Tx Fifo Empty Interrrupt */ + if (!core_if->dma_enable) { + intr_mask.b.nptxfempty = 1; + DWC_MODIFY_REG32(&core_if->core_global_regs->gintmsk, + intr_mask.d32, 0); + } + /** @todo NGS Check EP type. + * Implement for Periodic EPs */ + /* + * Non-periodic EP + */ + /* Enable the Global IN NAK Effective Interrupt */ + intr_mask.b.ginnakeff = 1; + DWC_MODIFY_REG32(&core_if->core_global_regs->gintmsk, 0, intr_mask.d32); + + /* Set Global IN NAK */ + dctl.b.sgnpinnak = 1; + DWC_MODIFY_REG32(&dev_if->dev_global_regs->dctl, dctl.d32, dctl.d32); + + ep->stopped = 1; + +#ifdef DEBUG + dieptsiz.d32 = DWC_READ_REG32(&dev_if->in_ep_regs[num]->dieptsiz); + DWC_DEBUGPL(DBG_ANY, "pktcnt=%d size=%d\n", + dieptsiz.b.pktcnt, dieptsiz.b.xfersize); +#endif + +#ifdef DISABLE_PERIODIC_EP + /* + * Set the NAK bit for this EP to + * start the disable process. + */ + diepctl.d32 = 0; + diepctl.b.snak = 1; + DWC_MODIFY_REG32(&dev_if->in_ep_regs[num]->diepctl, diepctl.d32, + diepctl.d32); + ep->disabling = 1; + ep->stopped = 1; +#endif +} + +/** + * Handler for the IN EP NAK interrupt. + */ +static inline int32_t handle_in_ep_nak_intr(dwc_otg_pcd_t * pcd, + const uint32_t epnum) +{ + /** @todo implement ISR */ + dwc_otg_core_if_t *core_if; + diepmsk_data_t intr_mask = {.d32 = 0 }; + + DWC_PRINTF("INTERRUPT Handler not implemented for %s\n", "IN EP NAK"); + core_if = GET_CORE_IF(pcd); + intr_mask.b.nak = 1; + + if (core_if->multiproc_int_enable) { + DWC_MODIFY_REG32(&core_if->dev_if->dev_global_regs-> + diepeachintmsk[epnum], intr_mask.d32, 0); + } else { + DWC_MODIFY_REG32(&core_if->dev_if->dev_global_regs->diepmsk, + intr_mask.d32, 0); + } + + return 1; +} + +/** + * Handler for the OUT EP Babble interrupt. + */ +static inline int32_t handle_out_ep_babble_intr(dwc_otg_pcd_t * pcd, + const uint32_t epnum) +{ + /** @todo implement ISR */ + dwc_otg_core_if_t *core_if; + doepmsk_data_t intr_mask = {.d32 = 0 }; + + DWC_PRINTF("INTERRUPT Handler not implemented for %s\n", + "OUT EP Babble"); + core_if = GET_CORE_IF(pcd); + intr_mask.b.babble = 1; + + if (core_if->multiproc_int_enable) { + DWC_MODIFY_REG32(&core_if->dev_if->dev_global_regs-> + doepeachintmsk[epnum], intr_mask.d32, 0); + } else { + DWC_MODIFY_REG32(&core_if->dev_if->dev_global_regs->doepmsk, + intr_mask.d32, 0); + } + + return 1; +} + +/** + * Handler for the OUT EP NAK interrupt. + */ +static inline int32_t handle_out_ep_nak_intr(dwc_otg_pcd_t * pcd, + const uint32_t epnum) +{ + /** @todo implement ISR */ + dwc_otg_core_if_t *core_if; + doepmsk_data_t intr_mask = {.d32 = 0 }; + + DWC_DEBUGPL(DBG_ANY, "INTERRUPT Handler not implemented for %s\n", "OUT EP NAK"); + core_if = GET_CORE_IF(pcd); + intr_mask.b.nak = 1; + + if (core_if->multiproc_int_enable) { + DWC_MODIFY_REG32(&core_if->dev_if->dev_global_regs-> + doepeachintmsk[epnum], intr_mask.d32, 0); + } else { + DWC_MODIFY_REG32(&core_if->dev_if->dev_global_regs->doepmsk, + intr_mask.d32, 0); + } + + return 1; +} + +/** + * Handler for the OUT EP NYET interrupt. + */ +static inline int32_t handle_out_ep_nyet_intr(dwc_otg_pcd_t * pcd, + const uint32_t epnum) +{ + /** @todo implement ISR */ + dwc_otg_core_if_t *core_if; + doepmsk_data_t intr_mask = {.d32 = 0 }; + + DWC_PRINTF("INTERRUPT Handler not implemented for %s\n", "OUT EP NYET"); + core_if = GET_CORE_IF(pcd); + intr_mask.b.nyet = 1; + + if (core_if->multiproc_int_enable) { + DWC_MODIFY_REG32(&core_if->dev_if->dev_global_regs-> + doepeachintmsk[epnum], intr_mask.d32, 0); + } else { + DWC_MODIFY_REG32(&core_if->dev_if->dev_global_regs->doepmsk, + intr_mask.d32, 0); + } + + return 1; +} + +/** + * This interrupt indicates that an IN EP has a pending Interrupt. + * The sequence for handling the IN EP interrupt is shown below: + * -# Read the Device All Endpoint Interrupt register + * -# Repeat the following for each IN EP interrupt bit set (from + * LSB to MSB). + * -# Read the Device Endpoint Interrupt (DIEPINTn) register + * -# If "Transfer Complete" call the request complete function + * -# If "Endpoint Disabled" complete the EP disable procedure. + * -# If "AHB Error Interrupt" log error + * -# If "Time-out Handshake" log error + * -# If "IN Token Received when TxFIFO Empty" write packet to Tx + * FIFO. + * -# If "IN Token EP Mismatch" (disable, this is handled by EP + * Mismatch Interrupt) + */ +static int32_t dwc_otg_pcd_handle_in_ep_intr(dwc_otg_pcd_t * pcd) +{ +#define CLEAR_IN_EP_INTR(__core_if,__epnum,__intr) \ +do { \ + diepint_data_t diepint = {.d32=0}; \ + diepint.b.__intr = 1; \ + DWC_WRITE_REG32(&__core_if->dev_if->in_ep_regs[__epnum]->diepint, \ + diepint.d32); \ +} while (0) + + dwc_otg_core_if_t *core_if = GET_CORE_IF(pcd); + dwc_otg_dev_if_t *dev_if = core_if->dev_if; + diepint_data_t diepint = {.d32 = 0 }; + depctl_data_t depctl = {.d32 = 0 }; + uint32_t ep_intr; + uint32_t epnum = 0; + dwc_otg_pcd_ep_t *ep; + dwc_ep_t *dwc_ep; + gintmsk_data_t intr_mask = {.d32 = 0 }; + + DWC_DEBUGPL(DBG_PCDV, "%s(%p)\n", __func__, pcd); + + /* Read in the device interrupt bits */ + ep_intr = dwc_otg_read_dev_all_in_ep_intr(core_if); + + /* Service the Device IN interrupts for each endpoint */ + while (ep_intr) { + if (ep_intr & 0x1) { + uint32_t empty_msk; + /* Get EP pointer */ + ep = get_in_ep(pcd, epnum); + dwc_ep = &ep->dwc_ep; + + depctl.d32 = + DWC_READ_REG32(&dev_if->in_ep_regs[epnum]->diepctl); + empty_msk = + DWC_READ_REG32(&dev_if-> + dev_global_regs->dtknqr4_fifoemptymsk); + + DWC_DEBUGPL(DBG_PCDV, + "IN EP INTERRUPT - %d\nepmty_msk - %8x diepctl - %8x\n", + epnum, empty_msk, depctl.d32); + + DWC_DEBUGPL(DBG_PCD, + "EP%d-%s: type=%d, mps=%d\n", + dwc_ep->num, (dwc_ep->is_in ? "IN" : "OUT"), + dwc_ep->type, dwc_ep->maxpacket); + + diepint.d32 = + dwc_otg_read_dev_in_ep_intr(core_if, dwc_ep); + + DWC_DEBUGPL(DBG_PCDV, + "EP %d Interrupt Register - 0x%x\n", epnum, + diepint.d32); + /* Transfer complete */ + if (diepint.b.xfercompl) { + /* Disable the NP Tx FIFO Empty + * Interrupt */ + if (core_if->en_multiple_tx_fifo == 0) { + intr_mask.b.nptxfempty = 1; + DWC_MODIFY_REG32 + (&core_if->core_global_regs->gintmsk, + intr_mask.d32, 0); + } else { + /* Disable the Tx FIFO Empty Interrupt for this EP */ + uint32_t fifoemptymsk = + 0x1 << dwc_ep->num; + DWC_MODIFY_REG32(&core_if-> + dev_if->dev_global_regs->dtknqr4_fifoemptymsk, + fifoemptymsk, 0); + } + /* Clear the bit in DIEPINTn for this interrupt */ + CLEAR_IN_EP_INTR(core_if, epnum, xfercompl); + + /* Complete the transfer */ + if (epnum == 0) { + handle_ep0(pcd); + } +#ifdef DWC_EN_ISOC + else if (dwc_ep->type == DWC_OTG_EP_TYPE_ISOC) { + if (!ep->stopped) + complete_iso_ep(pcd, ep); + } +#endif /* DWC_EN_ISOC */ +#ifdef DWC_UTE_PER_IO + else if (dwc_ep->type == DWC_OTG_EP_TYPE_ISOC) { + if (!ep->stopped) + complete_xiso_ep(ep); + } +#endif /* DWC_UTE_PER_IO */ + else { + if (dwc_ep->type == DWC_OTG_EP_TYPE_ISOC && + dwc_ep->bInterval > 1) { + dwc_ep->frame_num += dwc_ep->bInterval; + if (dwc_ep->frame_num > 0x3FFF) + { + dwc_ep->frm_overrun = 1; + dwc_ep->frame_num &= 0x3FFF; + } else + dwc_ep->frm_overrun = 0; + } + complete_ep(ep); + if(diepint.b.nak) + CLEAR_IN_EP_INTR(core_if, epnum, nak); + } + } + /* Endpoint disable */ + if (diepint.b.epdisabled) { + DWC_DEBUGPL(DBG_ANY, "EP%d IN disabled\n", + epnum); + handle_in_ep_disable_intr(pcd, epnum); + + /* Clear the bit in DIEPINTn for this interrupt */ + CLEAR_IN_EP_INTR(core_if, epnum, epdisabled); + } + /* AHB Error */ + if (diepint.b.ahberr) { + DWC_ERROR("EP%d IN AHB Error\n", epnum); + /* Clear the bit in DIEPINTn for this interrupt */ + CLEAR_IN_EP_INTR(core_if, epnum, ahberr); + } + /* TimeOUT Handshake (non-ISOC IN EPs) */ + if (diepint.b.timeout) { + DWC_ERROR("EP%d IN Time-out\n", epnum); + handle_in_ep_timeout_intr(pcd, epnum); + + CLEAR_IN_EP_INTR(core_if, epnum, timeout); + } + /** IN Token received with TxF Empty */ + if (diepint.b.intktxfemp) { + DWC_DEBUGPL(DBG_ANY, + "EP%d IN TKN TxFifo Empty\n", + epnum); + if (!ep->stopped && epnum != 0) { + + diepmsk_data_t diepmsk = {.d32 = 0 }; + diepmsk.b.intktxfemp = 1; + + if (core_if->multiproc_int_enable) { + DWC_MODIFY_REG32 + (&dev_if->dev_global_regs->diepeachintmsk + [epnum], diepmsk.d32, 0); + } else { + DWC_MODIFY_REG32 + (&dev_if->dev_global_regs->diepmsk, + diepmsk.d32, 0); + } + } else if (core_if->dma_desc_enable + && epnum == 0 + && pcd->ep0state == + EP0_OUT_STATUS_PHASE) { + // EP0 IN set STALL + depctl.d32 = + DWC_READ_REG32(&dev_if->in_ep_regs + [epnum]->diepctl); + + /* set the disable and stall bits */ + if (depctl.b.epena) { + depctl.b.epdis = 1; + } + depctl.b.stall = 1; + DWC_WRITE_REG32(&dev_if->in_ep_regs + [epnum]->diepctl, + depctl.d32); + } + CLEAR_IN_EP_INTR(core_if, epnum, intktxfemp); + } + /** IN Token Received with EP mismatch */ + if (diepint.b.intknepmis) { + DWC_DEBUGPL(DBG_ANY, + "EP%d IN TKN EP Mismatch\n", epnum); + CLEAR_IN_EP_INTR(core_if, epnum, intknepmis); + } + /** IN Endpoint NAK Effective */ + if (diepint.b.inepnakeff) { + DWC_DEBUGPL(DBG_ANY, + "EP%d IN EP NAK Effective\n", + epnum); + /* Periodic EP */ + if (ep->disabling) { + depctl.d32 = 0; + depctl.b.snak = 1; + depctl.b.epdis = 1; + DWC_MODIFY_REG32(&dev_if->in_ep_regs + [epnum]->diepctl, + depctl.d32, + depctl.d32); + } + CLEAR_IN_EP_INTR(core_if, epnum, inepnakeff); + + } + + /** IN EP Tx FIFO Empty Intr */ + if (diepint.b.emptyintr) { + DWC_DEBUGPL(DBG_ANY, + "EP%d Tx FIFO Empty Intr \n", + epnum); + write_empty_tx_fifo(pcd, epnum); + + CLEAR_IN_EP_INTR(core_if, epnum, emptyintr); + + } + + /** IN EP BNA Intr */ + if (diepint.b.bna) { + CLEAR_IN_EP_INTR(core_if, epnum, bna); + if (core_if->dma_desc_enable) { +#ifdef DWC_EN_ISOC + if (dwc_ep->type == + DWC_OTG_EP_TYPE_ISOC) { + /* + * This checking is performed to prevent first "false" BNA + * handling occuring right after reconnect + */ + if (dwc_ep->next_frame != + 0xffffffff) + dwc_otg_pcd_handle_iso_bna(ep); + } else +#endif /* DWC_EN_ISOC */ + { + dwc_otg_pcd_handle_noniso_bna(ep); + } + } + } + /* NAK Interrutp */ + if (diepint.b.nak) { + DWC_DEBUGPL(DBG_ANY, "EP%d IN NAK Interrupt\n", + epnum); + if (ep->dwc_ep.type == DWC_OTG_EP_TYPE_ISOC) { + depctl_data_t depctl; + if (ep->dwc_ep.frame_num == 0xFFFFFFFF) { + ep->dwc_ep.frame_num = core_if->frame_num; + if (ep->dwc_ep.bInterval > 1) { + depctl.d32 = 0; + depctl.d32 = DWC_READ_REG32(&dev_if->in_ep_regs[epnum]->diepctl); + if (ep->dwc_ep.frame_num & 0x1) { + depctl.b.setd1pid = 1; + depctl.b.setd0pid = 0; + } else { + depctl.b.setd0pid = 1; + depctl.b.setd1pid = 0; + } + DWC_WRITE_REG32(&dev_if->in_ep_regs[epnum]->diepctl, depctl.d32); + } + start_next_request(ep); + } + ep->dwc_ep.frame_num += ep->dwc_ep.bInterval; + if (dwc_ep->frame_num > 0x3FFF) { + dwc_ep->frm_overrun = 1; + dwc_ep->frame_num &= 0x3FFF; + } else + dwc_ep->frm_overrun = 0; + } + + CLEAR_IN_EP_INTR(core_if, epnum, nak); + } + } + epnum++; + ep_intr >>= 1; + } + + return 1; +#undef CLEAR_IN_EP_INTR +} + +/** + * This interrupt indicates that an OUT EP has a pending Interrupt. + * The sequence for handling the OUT EP interrupt is shown below: + * -# Read the Device All Endpoint Interrupt register + * -# Repeat the following for each OUT EP interrupt bit set (from + * LSB to MSB). + * -# Read the Device Endpoint Interrupt (DOEPINTn) register + * -# If "Transfer Complete" call the request complete function + * -# If "Endpoint Disabled" complete the EP disable procedure. + * -# If "AHB Error Interrupt" log error + * -# If "Setup Phase Done" process Setup Packet (See Standard USB + * Command Processing) + */ +static int32_t dwc_otg_pcd_handle_out_ep_intr(dwc_otg_pcd_t * pcd) +{ +#define CLEAR_OUT_EP_INTR(__core_if,__epnum,__intr) \ +do { \ + doepint_data_t doepint = {.d32=0}; \ + doepint.b.__intr = 1; \ + DWC_WRITE_REG32(&__core_if->dev_if->out_ep_regs[__epnum]->doepint, \ + doepint.d32); \ +} while (0) + + dwc_otg_core_if_t *core_if = GET_CORE_IF(pcd); + uint32_t ep_intr; + doepint_data_t doepint = {.d32 = 0 }; + uint32_t epnum = 0; + dwc_otg_pcd_ep_t *ep; + dwc_ep_t *dwc_ep; + dctl_data_t dctl = {.d32 = 0 }; + gintmsk_data_t gintmsk = {.d32 = 0 }; + + + DWC_DEBUGPL(DBG_PCDV, "%s()\n", __func__); + + /* Read in the device interrupt bits */ + ep_intr = dwc_otg_read_dev_all_out_ep_intr(core_if); + + while (ep_intr) { + if (ep_intr & 0x1) { + /* Get EP pointer */ + ep = get_out_ep(pcd, epnum); + dwc_ep = &ep->dwc_ep; + +#ifdef VERBOSE + DWC_DEBUGPL(DBG_PCDV, + "EP%d-%s: type=%d, mps=%d\n", + dwc_ep->num, (dwc_ep->is_in ? "IN" : "OUT"), + dwc_ep->type, dwc_ep->maxpacket); +#endif + doepint.d32 = + dwc_otg_read_dev_out_ep_intr(core_if, dwc_ep); + /* Moved this interrupt upper due to core deffect of asserting + * OUT EP 0 xfercompl along with stsphsrcvd in BDMA */ + if (doepint.b.stsphsercvd) { + deptsiz0_data_t deptsiz; + CLEAR_OUT_EP_INTR(core_if, epnum, stsphsercvd); + deptsiz.d32 = + DWC_READ_REG32(&core_if->dev_if-> + out_ep_regs[0]->doeptsiz); + if (core_if->snpsid >= OTG_CORE_REV_3_00a + && core_if->dma_enable + && core_if->dma_desc_enable == 0 + && doepint.b.xfercompl + && deptsiz.b.xfersize == 24) { + CLEAR_OUT_EP_INTR(core_if, epnum, + xfercompl); + doepint.b.xfercompl = 0; + ep0_out_start(core_if, pcd); + } + if ((core_if->dma_desc_enable) || + (core_if->dma_enable + && core_if->snpsid >= + OTG_CORE_REV_3_00a)) { + do_setup_in_status_phase(pcd); + } + } + /* Transfer complete */ + if (doepint.b.xfercompl) { + + if (epnum == 0) { + /* Clear the bit in DOEPINTn for this interrupt */ + CLEAR_OUT_EP_INTR(core_if, epnum, xfercompl); + if (core_if->snpsid >= OTG_CORE_REV_3_00a) { + DWC_DEBUGPL(DBG_PCDV, "DOEPINT=%x doepint=%x\n", + DWC_READ_REG32(&core_if->dev_if->out_ep_regs[0]->doepint), + doepint.d32); + DWC_DEBUGPL(DBG_PCDV, "DOEPCTL=%x \n", + DWC_READ_REG32(&core_if->dev_if->out_ep_regs[0]->doepctl)); + + if (core_if->snpsid >= OTG_CORE_REV_3_00a + && core_if->dma_enable == 0) { + doepint_data_t doepint; + doepint.d32 = DWC_READ_REG32(&core_if->dev_if-> + out_ep_regs[0]->doepint); + if (pcd->ep0state == EP0_IDLE && doepint.b.sr) { + CLEAR_OUT_EP_INTR(core_if, epnum, sr); + goto exit_xfercompl; + } + } + /* In case of DDMA look at SR bit to go to the Data Stage */ + if (core_if->dma_desc_enable) { + dev_dma_desc_sts_t status = {.d32 = 0}; + if (pcd->ep0state == EP0_IDLE) { + status.d32 = core_if->dev_if->setup_desc_addr[core_if-> + dev_if->setup_desc_index]->status.d32; + if(pcd->data_terminated) { + pcd->data_terminated = 0; + status.d32 = core_if->dev_if->out_desc_addr->status.d32; + dwc_memcpy(&pcd->setup_pkt->req, pcd->backup_buf, 8); + } + if (status.b.sr) { + if (doepint.b.setup) { + DWC_DEBUGPL(DBG_PCDV, "DMA DESC EP0_IDLE SR=1 setup=1\n"); + /* Already started data stage, clear setup */ + CLEAR_OUT_EP_INTR(core_if, epnum, setup); + doepint.b.setup = 0; + handle_ep0(pcd); + /* Prepare for more setup packets */ + if (pcd->ep0state == EP0_IN_STATUS_PHASE || + pcd->ep0state == EP0_IN_DATA_PHASE) { + ep0_out_start(core_if, pcd); + } + + goto exit_xfercompl; + } else { + /* Prepare for more setup packets */ + DWC_DEBUGPL(DBG_PCDV, + "EP0_IDLE SR=1 setup=0 new setup comes\n"); + ep0_out_start(core_if, pcd); + } + } + } else { + dwc_otg_pcd_request_t *req; + dev_dma_desc_sts_t status = {.d32 = 0}; + diepint_data_t diepint0; + diepint0.d32 = DWC_READ_REG32(&core_if->dev_if-> + in_ep_regs[0]->diepint); + + if (pcd->ep0state == EP0_STALL || pcd->ep0state == EP0_DISCONNECT) { + DWC_ERROR("EP0 is stalled/disconnected\n"); + } + + /* Clear IN xfercompl if set */ + if (diepint0.b.xfercompl && (pcd->ep0state == EP0_IN_STATUS_PHASE + || pcd->ep0state == EP0_IN_DATA_PHASE)) { + DWC_WRITE_REG32(&core_if->dev_if-> + in_ep_regs[0]->diepint, diepint0.d32); + } + + status.d32 = core_if->dev_if->setup_desc_addr[core_if-> + dev_if->setup_desc_index]->status.d32; + + if (ep->dwc_ep.xfer_count != ep->dwc_ep.total_len + && (pcd->ep0state == EP0_OUT_DATA_PHASE)) + status.d32 = core_if->dev_if->out_desc_addr->status.d32; + if (pcd->ep0state == EP0_OUT_STATUS_PHASE) + status.d32 = core_if->dev_if-> + out_desc_addr->status.d32; + + if (status.b.sr) { + if (DWC_CIRCLEQ_EMPTY(&ep->queue)) { + DWC_DEBUGPL(DBG_PCDV, "Request queue empty!!\n"); + } else { + DWC_DEBUGPL(DBG_PCDV, "complete req!!\n"); + req = DWC_CIRCLEQ_FIRST(&ep->queue); + if (ep->dwc_ep.xfer_count != ep->dwc_ep.total_len && + pcd->ep0state == EP0_OUT_DATA_PHASE) { + /* Read arrived setup packet from req->buf */ + dwc_memcpy(&pcd->setup_pkt->req, + req->buf + ep->dwc_ep.xfer_count, 8); + } + req->actual = ep->dwc_ep.xfer_count; + dwc_otg_request_done(ep, req, -ECONNRESET); + ep->dwc_ep.start_xfer_buff = 0; + ep->dwc_ep.xfer_buff = 0; + ep->dwc_ep.xfer_len = 0; + } + pcd->ep0state = EP0_IDLE; + if (doepint.b.setup) { + DWC_DEBUGPL(DBG_PCDV, "EP0_IDLE SR=1 setup=1\n"); + /* Data stage started, clear setup */ + CLEAR_OUT_EP_INTR(core_if, epnum, setup); + doepint.b.setup = 0; + handle_ep0(pcd); + /* Prepare for setup packets if ep0in was enabled*/ + if (pcd->ep0state == EP0_IN_STATUS_PHASE) { + ep0_out_start(core_if, pcd); + } + + goto exit_xfercompl; + } else { + /* Prepare for more setup packets */ + DWC_DEBUGPL(DBG_PCDV, + "EP0_IDLE SR=1 setup=0 new setup comes 2\n"); + ep0_out_start(core_if, pcd); + } + } + } + } + if (core_if->snpsid >= OTG_CORE_REV_2_94a && core_if->dma_enable + && core_if->dma_desc_enable == 0) { + doepint_data_t doepint_temp = {.d32 = 0}; + deptsiz0_data_t doeptsize0 = {.d32 = 0 }; + doepint_temp.d32 = DWC_READ_REG32(&core_if->dev_if-> + out_ep_regs[ep->dwc_ep.num]->doepint); + doeptsize0.d32 = DWC_READ_REG32(&core_if->dev_if-> + out_ep_regs[ep->dwc_ep.num]->doeptsiz); + if (pcd->ep0state == EP0_IDLE) { + if (doepint_temp.b.sr) { + CLEAR_OUT_EP_INTR(core_if, epnum, sr); + } + doepint.d32 = DWC_READ_REG32(&core_if->dev_if-> + out_ep_regs[0]->doepint); + if (doeptsize0.b.supcnt == 3) { + DWC_DEBUGPL(DBG_ANY, "Rolling over!!!!!!!\n"); + ep->dwc_ep.stp_rollover = 1; + } + if (doepint.b.setup) { +retry: + /* Already started data stage, clear setup */ + CLEAR_OUT_EP_INTR(core_if, epnum, setup); + doepint.b.setup = 0; + handle_ep0(pcd); + ep->dwc_ep.stp_rollover = 0; + /* Prepare for more setup packets */ + if (pcd->ep0state == EP0_IN_STATUS_PHASE || + pcd->ep0state == EP0_IN_DATA_PHASE) { + ep0_out_start(core_if, pcd); + } + goto exit_xfercompl; + } else { + /* Prepare for more setup packets */ + DWC_DEBUGPL(DBG_ANY, + "EP0_IDLE SR=1 setup=0 new setup comes\n"); + doepint.d32 = DWC_READ_REG32(&core_if->dev_if-> + out_ep_regs[0]->doepint); + if(doepint.b.setup) + goto retry; + ep0_out_start(core_if, pcd); + } + } else { + dwc_otg_pcd_request_t *req; + diepint_data_t diepint0 = {.d32 = 0}; + doepint_data_t doepint_temp = {.d32 = 0}; + depctl_data_t diepctl0; + diepint0.d32 = DWC_READ_REG32(&core_if->dev_if-> + in_ep_regs[0]->diepint); + diepctl0.d32 = DWC_READ_REG32(&core_if->dev_if-> + in_ep_regs[0]->diepctl); + + if (pcd->ep0state == EP0_IN_DATA_PHASE + || pcd->ep0state == EP0_IN_STATUS_PHASE) { + if (diepint0.b.xfercompl) { + DWC_WRITE_REG32(&core_if->dev_if-> + in_ep_regs[0]->diepint, diepint0.d32); + } + if (diepctl0.b.epena) { + diepint_data_t diepint = {.d32 = 0}; + diepctl0.b.snak = 1; + DWC_WRITE_REG32(&core_if->dev_if-> + in_ep_regs[0]->diepctl, diepctl0.d32); + do { + dwc_udelay(10); + diepint.d32 = DWC_READ_REG32(&core_if->dev_if-> + in_ep_regs[0]->diepint); + } while (!diepint.b.inepnakeff); + diepint.b.inepnakeff = 1; + DWC_WRITE_REG32(&core_if->dev_if-> + in_ep_regs[0]->diepint, diepint.d32); + diepctl0.d32 = 0; + diepctl0.b.epdis = 1; + DWC_WRITE_REG32(&core_if->dev_if->in_ep_regs[0]->diepctl, + diepctl0.d32); + do { + dwc_udelay(10); + diepint.d32 = DWC_READ_REG32(&core_if->dev_if-> + in_ep_regs[0]->diepint); + } while (!diepint.b.epdisabled); + diepint.b.epdisabled = 1; + DWC_WRITE_REG32(&core_if->dev_if->in_ep_regs[0]->diepint, + diepint.d32); + } + } + doepint_temp.d32 = DWC_READ_REG32(&core_if->dev_if-> + out_ep_regs[ep->dwc_ep.num]->doepint); + if (doepint_temp.b.sr) { + CLEAR_OUT_EP_INTR(core_if, epnum, sr); + if (DWC_CIRCLEQ_EMPTY(&ep->queue)) { + DWC_DEBUGPL(DBG_PCDV, "Request queue empty!!\n"); + } else { + DWC_DEBUGPL(DBG_PCDV, "complete req!!\n"); + req = DWC_CIRCLEQ_FIRST(&ep->queue); + if (ep->dwc_ep.xfer_count != ep->dwc_ep.total_len && + pcd->ep0state == EP0_OUT_DATA_PHASE) { + /* Read arrived setup packet from req->buf */ + dwc_memcpy(&pcd->setup_pkt->req, + req->buf + ep->dwc_ep.xfer_count, 8); + } + req->actual = ep->dwc_ep.xfer_count; + dwc_otg_request_done(ep, req, -ECONNRESET); + ep->dwc_ep.start_xfer_buff = 0; + ep->dwc_ep.xfer_buff = 0; + ep->dwc_ep.xfer_len = 0; + } + pcd->ep0state = EP0_IDLE; + if (doepint.b.setup) { + DWC_DEBUGPL(DBG_PCDV, "EP0_IDLE SR=1 setup=1\n"); + /* Data stage started, clear setup */ + CLEAR_OUT_EP_INTR(core_if, epnum, setup); + doepint.b.setup = 0; + handle_ep0(pcd); + /* Prepare for setup packets if ep0in was enabled*/ + if (pcd->ep0state == EP0_IN_STATUS_PHASE) { + ep0_out_start(core_if, pcd); + } + goto exit_xfercompl; + } else { + /* Prepare for more setup packets */ + DWC_DEBUGPL(DBG_PCDV, + "EP0_IDLE SR=1 setup=0 new setup comes 2\n"); + ep0_out_start(core_if, pcd); + } + } + } + } + if (core_if->dma_enable == 0 || pcd->ep0state != EP0_IDLE) + handle_ep0(pcd); +exit_xfercompl: + DWC_DEBUGPL(DBG_PCDV, "DOEPINT=%x doepint=%x\n", + dwc_otg_read_dev_out_ep_intr(core_if, dwc_ep), doepint.d32); + } else { + if (core_if->dma_desc_enable == 0 + || pcd->ep0state != EP0_IDLE) + handle_ep0(pcd); + } +#ifdef DWC_EN_ISOC + } else if (dwc_ep->type == DWC_OTG_EP_TYPE_ISOC) { + if (doepint.b.pktdrpsts == 0) { + /* Clear the bit in DOEPINTn for this interrupt */ + CLEAR_OUT_EP_INTR(core_if, + epnum, + xfercompl); + complete_iso_ep(pcd, ep); + } else { + + doepint_data_t doepint = {.d32 = 0 }; + doepint.b.xfercompl = 1; + doepint.b.pktdrpsts = 1; + DWC_WRITE_REG32 + (&core_if->dev_if->out_ep_regs + [epnum]->doepint, + doepint.d32); + if (handle_iso_out_pkt_dropped + (core_if, dwc_ep)) { + complete_iso_ep(pcd, + ep); + } + } +#endif /* DWC_EN_ISOC */ +#ifdef DWC_UTE_PER_IO + } else if (dwc_ep->type == DWC_OTG_EP_TYPE_ISOC) { + CLEAR_OUT_EP_INTR(core_if, epnum, xfercompl); + if (!ep->stopped) + complete_xiso_ep(ep); +#endif /* DWC_UTE_PER_IO */ + } else { + /* Clear the bit in DOEPINTn for this interrupt */ + CLEAR_OUT_EP_INTR(core_if, epnum, + xfercompl); + + if (core_if->core_params->dev_out_nak) { + DWC_TIMER_CANCEL(pcd->core_if->ep_xfer_timer[epnum]); + pcd->core_if->ep_xfer_info[epnum].state = 0; +#ifdef DEBUG + print_memory_payload(pcd, dwc_ep); +#endif + } + complete_ep(ep); + } + + } + + /* Endpoint disable */ + if (doepint.b.epdisabled) { + + /* Clear the bit in DOEPINTn for this interrupt */ + CLEAR_OUT_EP_INTR(core_if, epnum, epdisabled); + if (core_if->core_params->dev_out_nak) { +#ifdef DEBUG + print_memory_payload(pcd, dwc_ep); +#endif + /* In case of timeout condition */ + if (core_if->ep_xfer_info[epnum].state == 2) { + dctl.d32 = DWC_READ_REG32(&core_if->dev_if-> + dev_global_regs->dctl); + dctl.b.cgoutnak = 1; + DWC_WRITE_REG32(&core_if->dev_if->dev_global_regs->dctl, + dctl.d32); + /* Unmask goutnakeff interrupt which was masked + * during handle nak out interrupt */ + gintmsk.b.goutnakeff = 1; + DWC_MODIFY_REG32(&core_if->core_global_regs->gintmsk, + 0, gintmsk.d32); + + complete_ep(ep); + } + } + if (ep->dwc_ep.type == DWC_OTG_EP_TYPE_ISOC) + { + dctl_data_t dctl; + gintmsk_data_t intr_mask = {.d32 = 0}; + dwc_otg_pcd_request_t *req = 0; + + dctl.d32 = DWC_READ_REG32(&core_if->dev_if-> + dev_global_regs->dctl); + dctl.b.cgoutnak = 1; + DWC_WRITE_REG32(&core_if->dev_if->dev_global_regs->dctl, + dctl.d32); + + intr_mask.d32 = 0; + intr_mask.b.incomplisoout = 1; + + /* Get any pending requests */ + if (!DWC_CIRCLEQ_EMPTY(&ep->queue)) { + req = DWC_CIRCLEQ_FIRST(&ep->queue); + if (!req) { + DWC_PRINTF("complete_ep 0x%p, req = NULL!\n", ep); + } else { + dwc_otg_request_done(ep, req, 0); + start_next_request(ep); + } + } else { + DWC_PRINTF("complete_ep 0x%p, ep->queue empty!\n", ep); + } + } + } + /* AHB Error */ + if (doepint.b.ahberr) { + DWC_ERROR("EP%d OUT AHB Error\n", epnum); + DWC_ERROR("EP%d DEPDMA=0x%08x \n", + epnum, core_if->dev_if->out_ep_regs[epnum]->doepdma); + CLEAR_OUT_EP_INTR(core_if, epnum, ahberr); + } + /* Setup Phase Done (contorl EPs) */ + if (doepint.b.setup) { +#ifdef DEBUG_EP0 + DWC_DEBUGPL(DBG_PCD, "EP%d SETUP Done\n", epnum); +#endif + CLEAR_OUT_EP_INTR(core_if, epnum, setup); + + handle_ep0(pcd); + } + + /** OUT EP BNA Intr */ + if (doepint.b.bna) { + CLEAR_OUT_EP_INTR(core_if, epnum, bna); + if (core_if->dma_desc_enable) { +#ifdef DWC_EN_ISOC + if (dwc_ep->type == + DWC_OTG_EP_TYPE_ISOC) { + /* + * This checking is performed to prevent first "false" BNA + * handling occuring right after reconnect + */ + if (dwc_ep->next_frame != + 0xffffffff) + dwc_otg_pcd_handle_iso_bna(ep); + } else +#endif /* DWC_EN_ISOC */ + { + dwc_otg_pcd_handle_noniso_bna(ep); + } + } + } + /* Babble Interrupt */ + if (doepint.b.babble) { + DWC_DEBUGPL(DBG_ANY, "EP%d OUT Babble\n", + epnum); + handle_out_ep_babble_intr(pcd, epnum); + + CLEAR_OUT_EP_INTR(core_if, epnum, babble); + } + if (doepint.b.outtknepdis) { + DWC_DEBUGPL(DBG_ANY, "EP%d OUT Token received when EP is \ + disabled\n",epnum); + if (ep->dwc_ep.type == DWC_OTG_EP_TYPE_ISOC) { + doepmsk_data_t doepmsk = {.d32 = 0}; + ep->dwc_ep.frame_num = core_if->frame_num; + if (ep->dwc_ep.bInterval > 1) { + depctl_data_t depctl; + depctl.d32 = DWC_READ_REG32(&core_if->dev_if-> + out_ep_regs[epnum]->doepctl); + if (ep->dwc_ep.frame_num & 0x1) { + depctl.b.setd1pid = 1; + depctl.b.setd0pid = 0; + } else { + depctl.b.setd0pid = 1; + depctl.b.setd1pid = 0; + } + DWC_WRITE_REG32(&core_if->dev_if-> + out_ep_regs[epnum]->doepctl, depctl.d32); + } + start_next_request(ep); + doepmsk.b.outtknepdis = 1; + DWC_MODIFY_REG32(&core_if->dev_if->dev_global_regs->doepmsk, + doepmsk.d32, 0); + } + CLEAR_OUT_EP_INTR(core_if, epnum, outtknepdis); + } + + /* NAK Interrutp */ + if (doepint.b.nak) { + DWC_DEBUGPL(DBG_ANY, "EP%d OUT NAK\n", epnum); + handle_out_ep_nak_intr(pcd, epnum); + + CLEAR_OUT_EP_INTR(core_if, epnum, nak); + } + /* NYET Interrutp */ + if (doepint.b.nyet) { + DWC_DEBUGPL(DBG_ANY, "EP%d OUT NYET\n", epnum); + handle_out_ep_nyet_intr(pcd, epnum); + + CLEAR_OUT_EP_INTR(core_if, epnum, nyet); + } + } + + epnum++; + ep_intr >>= 1; + } + + return 1; + +#undef CLEAR_OUT_EP_INTR +} +static int drop_transfer(uint32_t trgt_fr, uint32_t curr_fr, uint8_t frm_overrun) +{ + int retval = 0; + if(!frm_overrun && curr_fr >= trgt_fr) + retval = 1; + else if (frm_overrun + && (curr_fr >= trgt_fr && ((curr_fr - trgt_fr) < 0x3FFF / 2))) + retval = 1; + return retval; +} +/** + * Incomplete ISO IN Transfer Interrupt. + * This interrupt indicates one of the following conditions occurred + * while transmitting an ISOC transaction. + * - Corrupted IN Token for ISOC EP. + * - Packet not complete in FIFO. + * The follow actions will be taken: + * -# Determine the EP + * -# Set incomplete flag in dwc_ep structure + * -# Disable EP; when "Endpoint Disabled" interrupt is received + * Flush FIFO + */ +int32_t dwc_otg_pcd_handle_incomplete_isoc_in_intr(dwc_otg_pcd_t * pcd) +{ + gintsts_data_t gintsts; + +#ifdef DWC_EN_ISOC + dwc_otg_dev_if_t *dev_if; + deptsiz_data_t deptsiz = {.d32 = 0 }; + depctl_data_t depctl = {.d32 = 0 }; + dsts_data_t dsts = {.d32 = 0 }; + dwc_ep_t *dwc_ep; + int i; + + dev_if = GET_CORE_IF(pcd)->dev_if; + + for (i = 1; i <= dev_if->num_in_eps; ++i) { + dwc_ep = &pcd->in_ep[i].dwc_ep; + if (dwc_ep->active && dwc_ep->type == DWC_OTG_EP_TYPE_ISOC) { + deptsiz.d32 = + DWC_READ_REG32(&dev_if->in_ep_regs[i]->dieptsiz); + depctl.d32 = + DWC_READ_REG32(&dev_if->in_ep_regs[i]->diepctl); + + if (depctl.b.epdis && deptsiz.d32) { + set_current_pkt_info(GET_CORE_IF(pcd), dwc_ep); + if (dwc_ep->cur_pkt >= dwc_ep->pkt_cnt) { + dwc_ep->cur_pkt = 0; + dwc_ep->proc_buf_num = + (dwc_ep->proc_buf_num ^ 1) & 0x1; + + if (dwc_ep->proc_buf_num) { + dwc_ep->cur_pkt_addr = + dwc_ep->xfer_buff1; + dwc_ep->cur_pkt_dma_addr = + dwc_ep->dma_addr1; + } else { + dwc_ep->cur_pkt_addr = + dwc_ep->xfer_buff0; + dwc_ep->cur_pkt_dma_addr = + dwc_ep->dma_addr0; + } + + } + + dsts.d32 = + DWC_READ_REG32(&GET_CORE_IF(pcd)->dev_if-> + dev_global_regs->dsts); + dwc_ep->next_frame = dsts.b.soffn; + + dwc_otg_iso_ep_start_frm_transfer(GET_CORE_IF + (pcd), + dwc_ep); + } + } + } + +#else + depctl_data_t depctl = {.d32 = 0 }; + dwc_ep_t *dwc_ep; + dwc_otg_dev_if_t *dev_if; + int i; + dev_if = GET_CORE_IF(pcd)->dev_if; + + DWC_DEBUGPL(DBG_PCD,"Incomplete ISO IN \n"); + + for (i = 1; i <= dev_if->num_in_eps; ++i) { + dwc_ep = &pcd->in_ep[i-1].dwc_ep; + depctl.d32 = + DWC_READ_REG32(&dev_if->in_ep_regs[i]->diepctl); + if (depctl.b.epena && dwc_ep->type == DWC_OTG_EP_TYPE_ISOC) { + if (drop_transfer(dwc_ep->frame_num, GET_CORE_IF(pcd)->frame_num, + dwc_ep->frm_overrun)) + { + depctl.d32 = + DWC_READ_REG32(&dev_if->in_ep_regs[i]->diepctl); + depctl.b.snak = 1; + depctl.b.epdis = 1; + DWC_MODIFY_REG32(&dev_if->in_ep_regs[i]->diepctl, depctl.d32, depctl.d32); + } + } + } + + /*intr_mask.b.incomplisoin = 1; + DWC_MODIFY_REG32(&GET_CORE_IF(pcd)->core_global_regs->gintmsk, + intr_mask.d32, 0); */ +#endif //DWC_EN_ISOC + + /* Clear interrupt */ + gintsts.d32 = 0; + gintsts.b.incomplisoin = 1; + DWC_WRITE_REG32(&GET_CORE_IF(pcd)->core_global_regs->gintsts, + gintsts.d32); + + return 1; +} + +/** + * Incomplete ISO OUT Transfer Interrupt. + * + * This interrupt indicates that the core has dropped an ISO OUT + * packet. The following conditions can be the cause: + * - FIFO Full, the entire packet would not fit in the FIFO. + * - CRC Error + * - Corrupted Token + * The follow actions will be taken: + * -# Determine the EP + * -# Set incomplete flag in dwc_ep structure + * -# Read any data from the FIFO + * -# Disable EP. When "Endpoint Disabled" interrupt is received + * re-enable EP. + */ +int32_t dwc_otg_pcd_handle_incomplete_isoc_out_intr(dwc_otg_pcd_t * pcd) +{ + + gintsts_data_t gintsts; + +#ifdef DWC_EN_ISOC + dwc_otg_dev_if_t *dev_if; + deptsiz_data_t deptsiz = {.d32 = 0 }; + depctl_data_t depctl = {.d32 = 0 }; + dsts_data_t dsts = {.d32 = 0 }; + dwc_ep_t *dwc_ep; + int i; + + dev_if = GET_CORE_IF(pcd)->dev_if; + + for (i = 1; i <= dev_if->num_out_eps; ++i) { + dwc_ep = &pcd->in_ep[i].dwc_ep; + if (pcd->out_ep[i].dwc_ep.active && + pcd->out_ep[i].dwc_ep.type == DWC_OTG_EP_TYPE_ISOC) { + deptsiz.d32 = + DWC_READ_REG32(&dev_if->out_ep_regs[i]->doeptsiz); + depctl.d32 = + DWC_READ_REG32(&dev_if->out_ep_regs[i]->doepctl); + + if (depctl.b.epdis && deptsiz.d32) { + set_current_pkt_info(GET_CORE_IF(pcd), + &pcd->out_ep[i].dwc_ep); + if (dwc_ep->cur_pkt >= dwc_ep->pkt_cnt) { + dwc_ep->cur_pkt = 0; + dwc_ep->proc_buf_num = + (dwc_ep->proc_buf_num ^ 1) & 0x1; + + if (dwc_ep->proc_buf_num) { + dwc_ep->cur_pkt_addr = + dwc_ep->xfer_buff1; + dwc_ep->cur_pkt_dma_addr = + dwc_ep->dma_addr1; + } else { + dwc_ep->cur_pkt_addr = + dwc_ep->xfer_buff0; + dwc_ep->cur_pkt_dma_addr = + dwc_ep->dma_addr0; + } + + } + + dsts.d32 = + DWC_READ_REG32(&GET_CORE_IF(pcd)->dev_if-> + dev_global_regs->dsts); + dwc_ep->next_frame = dsts.b.soffn; + + dwc_otg_iso_ep_start_frm_transfer(GET_CORE_IF + (pcd), + dwc_ep); + } + } + } +#else + /** @todo implement ISR */ + gintmsk_data_t intr_mask = {.d32 = 0 }; + dwc_otg_core_if_t *core_if; + deptsiz_data_t deptsiz = {.d32 = 0 }; + depctl_data_t depctl = {.d32 = 0 }; + dctl_data_t dctl = {.d32 = 0 }; + dwc_ep_t *dwc_ep = NULL; + int i; + core_if = GET_CORE_IF(pcd); + + for (i = 0; i < core_if->dev_if->num_out_eps; ++i) { + dwc_ep = &pcd->out_ep[i].dwc_ep; + depctl.d32 = + DWC_READ_REG32(&core_if->dev_if->out_ep_regs[dwc_ep->num]->doepctl); + if (depctl.b.epena && depctl.b.dpid == (core_if->frame_num & 0x1)) { + core_if->dev_if->isoc_ep = dwc_ep; + deptsiz.d32 = + DWC_READ_REG32(&core_if->dev_if->out_ep_regs[dwc_ep->num]->doeptsiz); + break; + } + } + dctl.d32 = DWC_READ_REG32(&core_if->dev_if->dev_global_regs->dctl); + gintsts.d32 = DWC_READ_REG32(&core_if->core_global_regs->gintsts); + intr_mask.d32 = DWC_READ_REG32(&core_if->core_global_regs->gintmsk); + + if (!intr_mask.b.goutnakeff) { + /* Unmask it */ + intr_mask.b.goutnakeff = 1; + DWC_WRITE_REG32(&core_if->core_global_regs->gintmsk, intr_mask.d32); + } + if (!gintsts.b.goutnakeff) { + dctl.b.sgoutnak = 1; + } + DWC_WRITE_REG32(&core_if->dev_if->dev_global_regs->dctl, dctl.d32); + + depctl.d32 = DWC_READ_REG32(&core_if->dev_if->out_ep_regs[dwc_ep->num]->doepctl); + if (depctl.b.epena) { + depctl.b.epdis = 1; + depctl.b.snak = 1; + } + DWC_WRITE_REG32(&core_if->dev_if->out_ep_regs[dwc_ep->num]->doepctl, depctl.d32); + + intr_mask.d32 = 0; + intr_mask.b.incomplisoout = 1; + +#endif /* DWC_EN_ISOC */ + + /* Clear interrupt */ + gintsts.d32 = 0; + gintsts.b.incomplisoout = 1; + DWC_WRITE_REG32(&GET_CORE_IF(pcd)->core_global_regs->gintsts, + gintsts.d32); + + return 1; +} + +/** + * This function handles the Global IN NAK Effective interrupt. + * + */ +int32_t dwc_otg_pcd_handle_in_nak_effective(dwc_otg_pcd_t * pcd) +{ + dwc_otg_dev_if_t *dev_if = GET_CORE_IF(pcd)->dev_if; + depctl_data_t diepctl = {.d32 = 0 }; + gintmsk_data_t intr_mask = {.d32 = 0 }; + gintsts_data_t gintsts; + dwc_otg_core_if_t *core_if = GET_CORE_IF(pcd); + int i; + + DWC_DEBUGPL(DBG_PCD, "Global IN NAK Effective\n"); + + /* Disable all active IN EPs */ + for (i = 0; i <= dev_if->num_in_eps; i++) { + diepctl.d32 = DWC_READ_REG32(&dev_if->in_ep_regs[i]->diepctl); + if (!(diepctl.b.eptype & 1) && diepctl.b.epena) { + if (core_if->start_predict > 0) + core_if->start_predict++; + diepctl.b.epdis = 1; + diepctl.b.snak = 1; + DWC_WRITE_REG32(&dev_if->in_ep_regs[i]->diepctl, diepctl.d32); + } + } + + + /* Disable the Global IN NAK Effective Interrupt */ + intr_mask.b.ginnakeff = 1; + DWC_MODIFY_REG32(&GET_CORE_IF(pcd)->core_global_regs->gintmsk, + intr_mask.d32, 0); + + /* Clear interrupt */ + gintsts.d32 = 0; + gintsts.b.ginnakeff = 1; + DWC_WRITE_REG32(&GET_CORE_IF(pcd)->core_global_regs->gintsts, + gintsts.d32); + + return 1; +} + +/** + * OUT NAK Effective. + * + */ +int32_t dwc_otg_pcd_handle_out_nak_effective(dwc_otg_pcd_t * pcd) +{ + dwc_otg_dev_if_t *dev_if = GET_CORE_IF(pcd)->dev_if; + gintmsk_data_t intr_mask = {.d32 = 0 }; + gintsts_data_t gintsts; + depctl_data_t doepctl; + int i; + + /* Disable the Global OUT NAK Effective Interrupt */ + intr_mask.b.goutnakeff = 1; + DWC_MODIFY_REG32(&GET_CORE_IF(pcd)->core_global_regs->gintmsk, + intr_mask.d32, 0); + + /* If DEV OUT NAK enabled*/ + if (pcd->core_if->core_params->dev_out_nak) { + /* Run over all out endpoints to determine the ep number on + * which the timeout has happened + */ + for (i = 0; i <= dev_if->num_out_eps; i++) { + if ( pcd->core_if->ep_xfer_info[i].state == 2 ) + break; + } + if (i > dev_if->num_out_eps) { + dctl_data_t dctl; + dctl.d32 = + DWC_READ_REG32(&dev_if->dev_global_regs->dctl); + dctl.b.cgoutnak = 1; + DWC_WRITE_REG32(&dev_if->dev_global_regs->dctl, + dctl.d32); + goto out; + } + + /* Disable the endpoint */ + doepctl.d32 = DWC_READ_REG32(&dev_if->out_ep_regs[i]->doepctl); + if (doepctl.b.epena) { + doepctl.b.epdis = 1; + doepctl.b.snak = 1; + } + DWC_WRITE_REG32(&dev_if->out_ep_regs[i]->doepctl, doepctl.d32); + return 1; + } + /* We come here from Incomplete ISO OUT handler */ + if (dev_if->isoc_ep) { + dwc_ep_t *dwc_ep = (dwc_ep_t *)dev_if->isoc_ep; + uint32_t epnum = dwc_ep->num; + doepint_data_t doepint; + doepint.d32 = + DWC_READ_REG32(&dev_if->out_ep_regs[dwc_ep->num]->doepint); + dev_if->isoc_ep = NULL; + doepctl.d32 = + DWC_READ_REG32(&dev_if->out_ep_regs[epnum]->doepctl); + DWC_PRINTF("Before disable DOEPCTL = %08x\n", doepctl.d32); + if (doepctl.b.epena) { + doepctl.b.epdis = 1; + doepctl.b.snak = 1; + } + DWC_WRITE_REG32(&dev_if->out_ep_regs[epnum]->doepctl, + doepctl.d32); + return 1; + } else + DWC_PRINTF("INTERRUPT Handler not implemented for %s\n", + "Global OUT NAK Effective\n"); + +out: + /* Clear interrupt */ + gintsts.d32 = 0; + gintsts.b.goutnakeff = 1; + DWC_WRITE_REG32(&GET_CORE_IF(pcd)->core_global_regs->gintsts, + gintsts.d32); + + return 1; +} + +/** + * PCD interrupt handler. + * + * The PCD handles the device interrupts. Many conditions can cause a + * device interrupt. When an interrupt occurs, the device interrupt + * service routine determines the cause of the interrupt and + * dispatches handling to the appropriate function. These interrupt + * handling functions are described below. + * + * All interrupt registers are processed from LSB to MSB. + * + */ +int32_t dwc_otg_pcd_handle_intr(dwc_otg_pcd_t * pcd) +{ + dwc_otg_core_if_t *core_if = GET_CORE_IF(pcd); +#ifdef VERBOSE + dwc_otg_core_global_regs_t *global_regs = core_if->core_global_regs; +#endif + gintsts_data_t gintr_status; + int32_t retval = 0; + + /* Exit from ISR if core is hibernated */ + if (core_if->hibernation_suspend == 1) { + return retval; + } +#ifdef VERBOSE + DWC_DEBUGPL(DBG_ANY, "%s() gintsts=%08x gintmsk=%08x\n", + __func__, + DWC_READ_REG32(&global_regs->gintsts), + DWC_READ_REG32(&global_regs->gintmsk)); +#endif + + if (dwc_otg_is_device_mode(core_if)) { + DWC_SPINLOCK(pcd->lock); +#ifdef VERBOSE + DWC_DEBUGPL(DBG_PCDV, "%s() gintsts=%08x gintmsk=%08x\n", + __func__, + DWC_READ_REG32(&global_regs->gintsts), + DWC_READ_REG32(&global_regs->gintmsk)); +#endif + + gintr_status.d32 = dwc_otg_read_core_intr(core_if); + + DWC_DEBUGPL(DBG_PCDV, "%s: gintsts&gintmsk=%08x\n", + __func__, gintr_status.d32); + + if (gintr_status.b.sofintr) { + retval |= dwc_otg_pcd_handle_sof_intr(pcd); + } + if (gintr_status.b.rxstsqlvl) { + retval |= + dwc_otg_pcd_handle_rx_status_q_level_intr(pcd); + } + if (gintr_status.b.nptxfempty) { + retval |= dwc_otg_pcd_handle_np_tx_fifo_empty_intr(pcd); + } + if (gintr_status.b.goutnakeff) { + retval |= dwc_otg_pcd_handle_out_nak_effective(pcd); + } + if (gintr_status.b.i2cintr) { + retval |= dwc_otg_pcd_handle_i2c_intr(pcd); + } + if (gintr_status.b.erlysuspend) { + retval |= dwc_otg_pcd_handle_early_suspend_intr(pcd); + } + if (gintr_status.b.usbreset) { + retval |= dwc_otg_pcd_handle_usb_reset_intr(pcd); + } + if (gintr_status.b.enumdone) { + retval |= dwc_otg_pcd_handle_enum_done_intr(pcd); + } + if (gintr_status.b.isooutdrop) { + retval |= + dwc_otg_pcd_handle_isoc_out_packet_dropped_intr + (pcd); + } + if (gintr_status.b.eopframe) { + retval |= + dwc_otg_pcd_handle_end_periodic_frame_intr(pcd); + } + if (gintr_status.b.inepint) { + if (!core_if->multiproc_int_enable) { + retval |= dwc_otg_pcd_handle_in_ep_intr(pcd); + } + } + if (gintr_status.b.outepintr) { + if (!core_if->multiproc_int_enable) { + retval |= dwc_otg_pcd_handle_out_ep_intr(pcd); + } + } + if (gintr_status.b.epmismatch) { + retval |= dwc_otg_pcd_handle_ep_mismatch_intr(pcd); + } + if (gintr_status.b.fetsusp) { + retval |= dwc_otg_pcd_handle_ep_fetsusp_intr(pcd); + } + if (gintr_status.b.ginnakeff) { + retval |= dwc_otg_pcd_handle_in_nak_effective(pcd); + } + if (gintr_status.b.incomplisoin) { + retval |= + dwc_otg_pcd_handle_incomplete_isoc_in_intr(pcd); + } + if (gintr_status.b.incomplisoout) { + retval |= + dwc_otg_pcd_handle_incomplete_isoc_out_intr(pcd); + } + + /* In MPI mode Device Endpoints interrupts are asserted + * without setting outepintr and inepint bits set, so these + * Interrupt handlers are called without checking these bit-fields + */ + if (core_if->multiproc_int_enable) { + retval |= dwc_otg_pcd_handle_in_ep_intr(pcd); + retval |= dwc_otg_pcd_handle_out_ep_intr(pcd); + } +#ifdef VERBOSE + DWC_DEBUGPL(DBG_PCDV, "%s() gintsts=%0x\n", __func__, + DWC_READ_REG32(&global_regs->gintsts)); +#endif + DWC_SPINUNLOCK(pcd->lock); + } + return retval; +} + +#endif /* DWC_HOST_ONLY */ --- linux-raspi2-4.2.0.orig/drivers/usb/host/dwc_otg/dwc_otg_pcd_linux.c +++ linux-raspi2-4.2.0/drivers/usb/host/dwc_otg/dwc_otg_pcd_linux.c @@ -0,0 +1,1360 @@ + /* ========================================================================== + * $File: //dwh/usb_iip/dev/software/otg/linux/drivers/dwc_otg_pcd_linux.c $ + * $Revision: #21 $ + * $Date: 2012/08/10 $ + * $Change: 2047372 $ + * + * Synopsys HS OTG Linux Software Driver and documentation (hereinafter, + * "Software") is an Unsupported proprietary work of Synopsys, Inc. unless + * otherwise expressly agreed to in writing between Synopsys and you. + * + * The Software IS NOT an item of Licensed Software or Licensed Product under + * any End User Software License Agreement or Agreement for Licensed Product + * with Synopsys or any supplement thereto. You are permitted to use and + * redistribute this Software in source and binary forms, with or without + * modification, provided that redistributions of source code must retain this + * notice. You may not view, use, disclose, copy or distribute this file or + * any information contained herein except pursuant to this license grant from + * Synopsys. If you do not agree with this notice, including the disclaimer + * below, then you are not authorized to use the Software. + * + * THIS SOFTWARE IS BEING DISTRIBUTED BY SYNOPSYS SOLELY ON AN "AS IS" BASIS + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE HEREBY DISCLAIMED. IN NO EVENT SHALL SYNOPSYS BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH + * DAMAGE. + * ========================================================================== */ +#ifndef DWC_HOST_ONLY + +/** @file + * This file implements the Peripheral Controller Driver. + * + * The Peripheral Controller Driver (PCD) is responsible for + * translating requests from the Function Driver into the appropriate + * actions on the DWC_otg controller. It isolates the Function Driver + * from the specifics of the controller by providing an API to the + * Function Driver. + * + * The Peripheral Controller Driver for Linux will implement the + * Gadget API, so that the existing Gadget drivers can be used. + * (Gadget Driver is the Linux terminology for a Function Driver.) + * + * The Linux Gadget API is defined in the header file + * . The USB EP operations API is + * defined in the structure usb_ep_ops and the USB + * Controller API is defined in the structure + * usb_gadget_ops. + * + */ + +#include "dwc_otg_os_dep.h" +#include "dwc_otg_pcd_if.h" +#include "dwc_otg_pcd.h" +#include "dwc_otg_driver.h" +#include "dwc_otg_dbg.h" + +extern bool fiq_enable; + +static struct gadget_wrapper { + dwc_otg_pcd_t *pcd; + + struct usb_gadget gadget; + struct usb_gadget_driver *driver; + + struct usb_ep ep0; + struct usb_ep in_ep[16]; + struct usb_ep out_ep[16]; + +} *gadget_wrapper; + +/* Display the contents of the buffer */ +extern void dump_msg(const u8 * buf, unsigned int length); +/** + * Get the dwc_otg_pcd_ep_t* from usb_ep* pointer - NULL in case + * if the endpoint is not found + */ +static struct dwc_otg_pcd_ep *ep_from_handle(dwc_otg_pcd_t * pcd, void *handle) +{ + int i; + if (pcd->ep0.priv == handle) { + return &pcd->ep0; + } + + for (i = 0; i < MAX_EPS_CHANNELS - 1; i++) { + if (pcd->in_ep[i].priv == handle) + return &pcd->in_ep[i]; + if (pcd->out_ep[i].priv == handle) + return &pcd->out_ep[i]; + } + + return NULL; +} + +/* USB Endpoint Operations */ +/* + * The following sections briefly describe the behavior of the Gadget + * API endpoint operations implemented in the DWC_otg driver + * software. Detailed descriptions of the generic behavior of each of + * these functions can be found in the Linux header file + * include/linux/usb_gadget.h. + * + * The Gadget API provides wrapper functions for each of the function + * pointers defined in usb_ep_ops. The Gadget Driver calls the wrapper + * function, which then calls the underlying PCD function. The + * following sections are named according to the wrapper + * functions. Within each section, the corresponding DWC_otg PCD + * function name is specified. + * + */ + +/** + * This function is called by the Gadget Driver for each EP to be + * configured for the current configuration (SET_CONFIGURATION). + * + * This function initializes the dwc_otg_ep_t data structure, and then + * calls dwc_otg_ep_activate. + */ +static int ep_enable(struct usb_ep *usb_ep, + const struct usb_endpoint_descriptor *ep_desc) +{ + int retval; + + DWC_DEBUGPL(DBG_PCDV, "%s(%p,%p)\n", __func__, usb_ep, ep_desc); + + if (!usb_ep || !ep_desc || ep_desc->bDescriptorType != USB_DT_ENDPOINT) { + DWC_WARN("%s, bad ep or descriptor\n", __func__); + return -EINVAL; + } + if (usb_ep == &gadget_wrapper->ep0) { + DWC_WARN("%s, bad ep(0)\n", __func__); + return -EINVAL; + } + + /* Check FIFO size? */ + if (!ep_desc->wMaxPacketSize) { + DWC_WARN("%s, bad %s maxpacket\n", __func__, usb_ep->name); + return -ERANGE; + } + + if (!gadget_wrapper->driver || + gadget_wrapper->gadget.speed == USB_SPEED_UNKNOWN) { + DWC_WARN("%s, bogus device state\n", __func__); + return -ESHUTDOWN; + } + + /* Delete after check - MAS */ +#if 0 + nat = (uint32_t) ep_desc->wMaxPacketSize; + printk(KERN_ALERT "%s: nat (before) =%d\n", __func__, nat); + nat = (nat >> 11) & 0x03; + printk(KERN_ALERT "%s: nat (after) =%d\n", __func__, nat); +#endif + retval = dwc_otg_pcd_ep_enable(gadget_wrapper->pcd, + (const uint8_t *)ep_desc, + (void *)usb_ep); + if (retval) { + DWC_WARN("dwc_otg_pcd_ep_enable failed\n"); + return -EINVAL; + } + + usb_ep->maxpacket = le16_to_cpu(ep_desc->wMaxPacketSize); + + return 0; +} + +/** + * This function is called when an EP is disabled due to disconnect or + * change in configuration. Any pending requests will terminate with a + * status of -ESHUTDOWN. + * + * This function modifies the dwc_otg_ep_t data structure for this EP, + * and then calls dwc_otg_ep_deactivate. + */ +static int ep_disable(struct usb_ep *usb_ep) +{ + int retval; + + DWC_DEBUGPL(DBG_PCDV, "%s(%p)\n", __func__, usb_ep); + if (!usb_ep) { + DWC_DEBUGPL(DBG_PCD, "%s, %s not enabled\n", __func__, + usb_ep ? usb_ep->name : NULL); + return -EINVAL; + } + + retval = dwc_otg_pcd_ep_disable(gadget_wrapper->pcd, usb_ep); + if (retval) { + retval = -EINVAL; + } + + return retval; +} + +/** + * This function allocates a request object to use with the specified + * endpoint. + * + * @param ep The endpoint to be used with with the request + * @param gfp_flags the GFP_* flags to use. + */ +static struct usb_request *dwc_otg_pcd_alloc_request(struct usb_ep *ep, + gfp_t gfp_flags) +{ + struct usb_request *usb_req; + + DWC_DEBUGPL(DBG_PCDV, "%s(%p,%d)\n", __func__, ep, gfp_flags); + if (0 == ep) { + DWC_WARN("%s() %s\n", __func__, "Invalid EP!\n"); + return 0; + } + usb_req = kmalloc(sizeof(*usb_req), gfp_flags); + if (0 == usb_req) { + DWC_WARN("%s() %s\n", __func__, "request allocation failed!\n"); + return 0; + } + memset(usb_req, 0, sizeof(*usb_req)); + usb_req->dma = DWC_DMA_ADDR_INVALID; + + return usb_req; +} + +/** + * This function frees a request object. + * + * @param ep The endpoint associated with the request + * @param req The request being freed + */ +static void dwc_otg_pcd_free_request(struct usb_ep *ep, struct usb_request *req) +{ + DWC_DEBUGPL(DBG_PCDV, "%s(%p,%p)\n", __func__, ep, req); + + if (0 == ep || 0 == req) { + DWC_WARN("%s() %s\n", __func__, + "Invalid ep or req argument!\n"); + return; + } + + kfree(req); +} + +#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,28) +/** + * This function allocates an I/O buffer to be used for a transfer + * to/from the specified endpoint. + * + * @param usb_ep The endpoint to be used with with the request + * @param bytes The desired number of bytes for the buffer + * @param dma Pointer to the buffer's DMA address; must be valid + * @param gfp_flags the GFP_* flags to use. + * @return address of a new buffer or null is buffer could not be allocated. + */ +static void *dwc_otg_pcd_alloc_buffer(struct usb_ep *usb_ep, unsigned bytes, + dma_addr_t * dma, gfp_t gfp_flags) +{ + void *buf; + dwc_otg_pcd_t *pcd = 0; + + pcd = gadget_wrapper->pcd; + + DWC_DEBUGPL(DBG_PCDV, "%s(%p,%d,%p,%0x)\n", __func__, usb_ep, bytes, + dma, gfp_flags); + + /* Check dword alignment */ + if ((bytes & 0x3UL) != 0) { + DWC_WARN("%s() Buffer size is not a multiple of" + "DWORD size (%d)", __func__, bytes); + } + + buf = dma_alloc_coherent(NULL, bytes, dma, gfp_flags); + + /* Check dword alignment */ + if (((int)buf & 0x3UL) != 0) { + DWC_WARN("%s() Buffer is not DWORD aligned (%p)", + __func__, buf); + } + + return buf; +} + +/** + * This function frees an I/O buffer that was allocated by alloc_buffer. + * + * @param usb_ep the endpoint associated with the buffer + * @param buf address of the buffer + * @param dma The buffer's DMA address + * @param bytes The number of bytes of the buffer + */ +static void dwc_otg_pcd_free_buffer(struct usb_ep *usb_ep, void *buf, + dma_addr_t dma, unsigned bytes) +{ + dwc_otg_pcd_t *pcd = 0; + + pcd = gadget_wrapper->pcd; + + DWC_DEBUGPL(DBG_PCDV, "%s(%p,%0x,%d)\n", __func__, buf, dma, bytes); + + dma_free_coherent(NULL, bytes, buf, dma); +} +#endif + +/** + * This function is used to submit an I/O Request to an EP. + * + * - When the request completes the request's completion callback + * is called to return the request to the driver. + * - An EP, except control EPs, may have multiple requests + * pending. + * - Once submitted the request cannot be examined or modified. + * - Each request is turned into one or more packets. + * - A BULK EP can queue any amount of data; the transfer is + * packetized. + * - Zero length Packets are specified with the request 'zero' + * flag. + */ +static int ep_queue(struct usb_ep *usb_ep, struct usb_request *usb_req, + gfp_t gfp_flags) +{ + dwc_otg_pcd_t *pcd; + struct dwc_otg_pcd_ep *ep = NULL; + int retval = 0, is_isoc_ep = 0; + dma_addr_t dma_addr = DWC_DMA_ADDR_INVALID; + + DWC_DEBUGPL(DBG_PCDV, "%s(%p,%p,%d)\n", + __func__, usb_ep, usb_req, gfp_flags); + + if (!usb_req || !usb_req->complete || !usb_req->buf) { + DWC_WARN("bad params\n"); + return -EINVAL; + } + + if (!usb_ep) { + DWC_WARN("bad ep\n"); + return -EINVAL; + } + + pcd = gadget_wrapper->pcd; + if (!gadget_wrapper->driver || + gadget_wrapper->gadget.speed == USB_SPEED_UNKNOWN) { + DWC_DEBUGPL(DBG_PCDV, "gadget.speed=%d\n", + gadget_wrapper->gadget.speed); + DWC_WARN("bogus device state\n"); + return -ESHUTDOWN; + } + + DWC_DEBUGPL(DBG_PCD, "%s queue req %p, len %d buf %p\n", + usb_ep->name, usb_req, usb_req->length, usb_req->buf); + + usb_req->status = -EINPROGRESS; + usb_req->actual = 0; + + ep = ep_from_handle(pcd, usb_ep); + if (ep == NULL) + is_isoc_ep = 0; + else + is_isoc_ep = (ep->dwc_ep.type == DWC_OTG_EP_TYPE_ISOC) ? 1 : 0; +#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,28) + dma_addr = usb_req->dma; +#else + if (GET_CORE_IF(pcd)->dma_enable) { + dwc_otg_device_t *otg_dev = gadget_wrapper->pcd->otg_dev; + struct device *dev = NULL; + + if (otg_dev != NULL) + dev = DWC_OTG_OS_GETDEV(otg_dev->os_dep); + + if (usb_req->length != 0 && + usb_req->dma == DWC_DMA_ADDR_INVALID) { + dma_addr = dma_map_single(dev, usb_req->buf, + usb_req->length, + ep->dwc_ep.is_in ? + DMA_TO_DEVICE: + DMA_FROM_DEVICE); + } + } +#endif + +#ifdef DWC_UTE_PER_IO + if (is_isoc_ep == 1) { + retval = dwc_otg_pcd_xiso_ep_queue(pcd, usb_ep, usb_req->buf, dma_addr, + usb_req->length, usb_req->zero, usb_req, + gfp_flags == GFP_ATOMIC ? 1 : 0, &usb_req->ext_req); + if (retval) + return -EINVAL; + + return 0; + } +#endif + retval = dwc_otg_pcd_ep_queue(pcd, usb_ep, usb_req->buf, dma_addr, + usb_req->length, usb_req->zero, usb_req, + gfp_flags == GFP_ATOMIC ? 1 : 0); + if (retval) { + return -EINVAL; + } + + return 0; +} + +/** + * This function cancels an I/O request from an EP. + */ +static int ep_dequeue(struct usb_ep *usb_ep, struct usb_request *usb_req) +{ + DWC_DEBUGPL(DBG_PCDV, "%s(%p,%p)\n", __func__, usb_ep, usb_req); + + if (!usb_ep || !usb_req) { + DWC_WARN("bad argument\n"); + return -EINVAL; + } + if (!gadget_wrapper->driver || + gadget_wrapper->gadget.speed == USB_SPEED_UNKNOWN) { + DWC_WARN("bogus device state\n"); + return -ESHUTDOWN; + } + if (dwc_otg_pcd_ep_dequeue(gadget_wrapper->pcd, usb_ep, usb_req)) { + return -EINVAL; + } + + return 0; +} + +/** + * usb_ep_set_halt stalls an endpoint. + * + * usb_ep_clear_halt clears an endpoint halt and resets its data + * toggle. + * + * Both of these functions are implemented with the same underlying + * function. The behavior depends on the value argument. + * + * @param[in] usb_ep the Endpoint to halt or clear halt. + * @param[in] value + * - 0 means clear_halt. + * - 1 means set_halt, + * - 2 means clear stall lock flag. + * - 3 means set stall lock flag. + */ +static int ep_halt(struct usb_ep *usb_ep, int value) +{ + int retval = 0; + + DWC_DEBUGPL(DBG_PCD, "HALT %s %d\n", usb_ep->name, value); + + if (!usb_ep) { + DWC_WARN("bad ep\n"); + return -EINVAL; + } + + retval = dwc_otg_pcd_ep_halt(gadget_wrapper->pcd, usb_ep, value); + if (retval == -DWC_E_AGAIN) { + return -EAGAIN; + } else if (retval) { + retval = -EINVAL; + } + + return retval; +} + +//#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,30)) +#if 0 +/** + * ep_wedge: sets the halt feature and ignores clear requests + * + * @usb_ep: the endpoint being wedged + * + * Use this to stall an endpoint and ignore CLEAR_FEATURE(HALT_ENDPOINT) + * requests. If the gadget driver clears the halt status, it will + * automatically unwedge the endpoint. + * + * Returns zero on success, else negative errno. * + * Check usb_ep_set_wedge() at "usb_gadget.h" for details + */ +static int ep_wedge(struct usb_ep *usb_ep) +{ + int retval = 0; + + DWC_DEBUGPL(DBG_PCD, "WEDGE %s\n", usb_ep->name); + + if (!usb_ep) { + DWC_WARN("bad ep\n"); + return -EINVAL; + } + + retval = dwc_otg_pcd_ep_wedge(gadget_wrapper->pcd, usb_ep); + if (retval == -DWC_E_AGAIN) { + retval = -EAGAIN; + } else if (retval) { + retval = -EINVAL; + } + + return retval; +} +#endif + +#ifdef DWC_EN_ISOC +/** + * This function is used to submit an ISOC Transfer Request to an EP. + * + * - Every time a sync period completes the request's completion callback + * is called to provide data to the gadget driver. + * - Once submitted the request cannot be modified. + * - Each request is turned into periodic data packets untill ISO + * Transfer is stopped.. + */ +static int iso_ep_start(struct usb_ep *usb_ep, struct usb_iso_request *req, + gfp_t gfp_flags) +{ + int retval = 0; + + if (!req || !req->process_buffer || !req->buf0 || !req->buf1) { + DWC_WARN("bad params\n"); + return -EINVAL; + } + + if (!usb_ep) { + DWC_PRINTF("bad params\n"); + return -EINVAL; + } + + req->status = -EINPROGRESS; + + retval = + dwc_otg_pcd_iso_ep_start(gadget_wrapper->pcd, usb_ep, req->buf0, + req->buf1, req->dma0, req->dma1, + req->sync_frame, req->data_pattern_frame, + req->data_per_frame, + req-> + flags & USB_REQ_ISO_ASAP ? -1 : + req->start_frame, req->buf_proc_intrvl, + req, gfp_flags == GFP_ATOMIC ? 1 : 0); + + if (retval) { + return -EINVAL; + } + + return retval; +} + +/** + * This function stops ISO EP Periodic Data Transfer. + */ +static int iso_ep_stop(struct usb_ep *usb_ep, struct usb_iso_request *req) +{ + int retval = 0; + if (!usb_ep) { + DWC_WARN("bad ep\n"); + } + + if (!gadget_wrapper->driver || + gadget_wrapper->gadget.speed == USB_SPEED_UNKNOWN) { + DWC_DEBUGPL(DBG_PCDV, "gadget.speed=%d\n", + gadget_wrapper->gadget.speed); + DWC_WARN("bogus device state\n"); + } + + dwc_otg_pcd_iso_ep_stop(gadget_wrapper->pcd, usb_ep, req); + if (retval) { + retval = -EINVAL; + } + + return retval; +} + +static struct usb_iso_request *alloc_iso_request(struct usb_ep *ep, + int packets, gfp_t gfp_flags) +{ + struct usb_iso_request *pReq = NULL; + uint32_t req_size; + + req_size = sizeof(struct usb_iso_request); + req_size += + (2 * packets * (sizeof(struct usb_gadget_iso_packet_descriptor))); + + pReq = kmalloc(req_size, gfp_flags); + if (!pReq) { + DWC_WARN("Can't allocate Iso Request\n"); + return 0; + } + pReq->iso_packet_desc0 = (void *)(pReq + 1); + + pReq->iso_packet_desc1 = pReq->iso_packet_desc0 + packets; + + return pReq; +} + +static void free_iso_request(struct usb_ep *ep, struct usb_iso_request *req) +{ + kfree(req); +} + +static struct usb_isoc_ep_ops dwc_otg_pcd_ep_ops = { + .ep_ops = { + .enable = ep_enable, + .disable = ep_disable, + + .alloc_request = dwc_otg_pcd_alloc_request, + .free_request = dwc_otg_pcd_free_request, + +#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,28) + .alloc_buffer = dwc_otg_pcd_alloc_buffer, + .free_buffer = dwc_otg_pcd_free_buffer, +#endif + + .queue = ep_queue, + .dequeue = ep_dequeue, + + .set_halt = ep_halt, + .fifo_status = 0, + .fifo_flush = 0, + }, + .iso_ep_start = iso_ep_start, + .iso_ep_stop = iso_ep_stop, + .alloc_iso_request = alloc_iso_request, + .free_iso_request = free_iso_request, +}; + +#else + + int (*enable) (struct usb_ep *ep, + const struct usb_endpoint_descriptor *desc); + int (*disable) (struct usb_ep *ep); + + struct usb_request *(*alloc_request) (struct usb_ep *ep, + gfp_t gfp_flags); + void (*free_request) (struct usb_ep *ep, struct usb_request *req); + + int (*queue) (struct usb_ep *ep, struct usb_request *req, + gfp_t gfp_flags); + int (*dequeue) (struct usb_ep *ep, struct usb_request *req); + + int (*set_halt) (struct usb_ep *ep, int value); + int (*set_wedge) (struct usb_ep *ep); + + int (*fifo_status) (struct usb_ep *ep); + void (*fifo_flush) (struct usb_ep *ep); +static struct usb_ep_ops dwc_otg_pcd_ep_ops = { + .enable = ep_enable, + .disable = ep_disable, + + .alloc_request = dwc_otg_pcd_alloc_request, + .free_request = dwc_otg_pcd_free_request, + +#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,28) + .alloc_buffer = dwc_otg_pcd_alloc_buffer, + .free_buffer = dwc_otg_pcd_free_buffer, +#else + /* .set_wedge = ep_wedge, */ + .set_wedge = NULL, /* uses set_halt instead */ +#endif + + .queue = ep_queue, + .dequeue = ep_dequeue, + + .set_halt = ep_halt, + .fifo_status = 0, + .fifo_flush = 0, + +}; + +#endif /* _EN_ISOC_ */ +/* Gadget Operations */ +/** + * The following gadget operations will be implemented in the DWC_otg + * PCD. Functions in the API that are not described below are not + * implemented. + * + * The Gadget API provides wrapper functions for each of the function + * pointers defined in usb_gadget_ops. The Gadget Driver calls the + * wrapper function, which then calls the underlying PCD function. The + * following sections are named according to the wrapper functions + * (except for ioctl, which doesn't have a wrapper function). Within + * each section, the corresponding DWC_otg PCD function name is + * specified. + * + */ + +/** + *Gets the USB Frame number of the last SOF. + */ +static int get_frame_number(struct usb_gadget *gadget) +{ + struct gadget_wrapper *d; + + DWC_DEBUGPL(DBG_PCDV, "%s(%p)\n", __func__, gadget); + + if (gadget == 0) { + return -ENODEV; + } + + d = container_of(gadget, struct gadget_wrapper, gadget); + return dwc_otg_pcd_get_frame_number(d->pcd); +} + +#ifdef CONFIG_USB_DWC_OTG_LPM +static int test_lpm_enabled(struct usb_gadget *gadget) +{ + struct gadget_wrapper *d; + + d = container_of(gadget, struct gadget_wrapper, gadget); + + return dwc_otg_pcd_is_lpm_enabled(d->pcd); +} +#endif + +/** + * Initiates Session Request Protocol (SRP) to wakeup the host if no + * session is in progress. If a session is already in progress, but + * the device is suspended, remote wakeup signaling is started. + * + */ +static int wakeup(struct usb_gadget *gadget) +{ + struct gadget_wrapper *d; + + DWC_DEBUGPL(DBG_PCDV, "%s(%p)\n", __func__, gadget); + + if (gadget == 0) { + return -ENODEV; + } else { + d = container_of(gadget, struct gadget_wrapper, gadget); + } + dwc_otg_pcd_wakeup(d->pcd); + return 0; +} + +static const struct usb_gadget_ops dwc_otg_pcd_ops = { + .get_frame = get_frame_number, + .wakeup = wakeup, +#ifdef CONFIG_USB_DWC_OTG_LPM + .lpm_support = test_lpm_enabled, +#endif + // current versions must always be self-powered +}; + +static int _setup(dwc_otg_pcd_t * pcd, uint8_t * bytes) +{ + int retval = -DWC_E_NOT_SUPPORTED; + if (gadget_wrapper->driver && gadget_wrapper->driver->setup) { + retval = gadget_wrapper->driver->setup(&gadget_wrapper->gadget, + (struct usb_ctrlrequest + *)bytes); + } + + if (retval == -ENOTSUPP) { + retval = -DWC_E_NOT_SUPPORTED; + } else if (retval < 0) { + retval = -DWC_E_INVALID; + } + + return retval; +} + +#ifdef DWC_EN_ISOC +static int _isoc_complete(dwc_otg_pcd_t * pcd, void *ep_handle, + void *req_handle, int proc_buf_num) +{ + int i, packet_count; + struct usb_gadget_iso_packet_descriptor *iso_packet = 0; + struct usb_iso_request *iso_req = req_handle; + + if (proc_buf_num) { + iso_packet = iso_req->iso_packet_desc1; + } else { + iso_packet = iso_req->iso_packet_desc0; + } + packet_count = + dwc_otg_pcd_get_iso_packet_count(pcd, ep_handle, req_handle); + for (i = 0; i < packet_count; ++i) { + int status; + int actual; + int offset; + dwc_otg_pcd_get_iso_packet_params(pcd, ep_handle, req_handle, + i, &status, &actual, &offset); + switch (status) { + case -DWC_E_NO_DATA: + status = -ENODATA; + break; + default: + if (status) { + DWC_PRINTF("unknown status in isoc packet\n"); + } + + } + iso_packet[i].status = status; + iso_packet[i].offset = offset; + iso_packet[i].actual_length = actual; + } + + iso_req->status = 0; + iso_req->process_buffer(ep_handle, iso_req); + + return 0; +} +#endif /* DWC_EN_ISOC */ + +#ifdef DWC_UTE_PER_IO +/** + * Copy the contents of the extended request to the Linux usb_request's + * extended part and call the gadget's completion. + * + * @param pcd Pointer to the pcd structure + * @param ep_handle Void pointer to the usb_ep structure + * @param req_handle Void pointer to the usb_request structure + * @param status Request status returned from the portable logic + * @param ereq_port Void pointer to the extended request structure + * created in the the portable part that contains the + * results of the processed iso packets. + */ +static int _xisoc_complete(dwc_otg_pcd_t * pcd, void *ep_handle, + void *req_handle, int32_t status, void *ereq_port) +{ + struct dwc_ute_iso_req_ext *ereqorg = NULL; + struct dwc_iso_xreq_port *ereqport = NULL; + struct dwc_ute_iso_packet_descriptor *desc_org = NULL; + int i; + struct usb_request *req; + //struct dwc_ute_iso_packet_descriptor * + //int status = 0; + + req = (struct usb_request *)req_handle; + ereqorg = &req->ext_req; + ereqport = (struct dwc_iso_xreq_port *)ereq_port; + desc_org = ereqorg->per_io_frame_descs; + + if (req && req->complete) { + /* Copy the request data from the portable logic to our request */ + for (i = 0; i < ereqport->pio_pkt_count; i++) { + desc_org[i].actual_length = + ereqport->per_io_frame_descs[i].actual_length; + desc_org[i].status = + ereqport->per_io_frame_descs[i].status; + } + + switch (status) { + case -DWC_E_SHUTDOWN: + req->status = -ESHUTDOWN; + break; + case -DWC_E_RESTART: + req->status = -ECONNRESET; + break; + case -DWC_E_INVALID: + req->status = -EINVAL; + break; + case -DWC_E_TIMEOUT: + req->status = -ETIMEDOUT; + break; + default: + req->status = status; + } + + /* And call the gadget's completion */ + req->complete(ep_handle, req); + } + + return 0; +} +#endif /* DWC_UTE_PER_IO */ + +static int _complete(dwc_otg_pcd_t * pcd, void *ep_handle, + void *req_handle, int32_t status, uint32_t actual) +{ + struct usb_request *req = (struct usb_request *)req_handle; +#if LINUX_VERSION_CODE > KERNEL_VERSION(2,6,27) + struct dwc_otg_pcd_ep *ep = NULL; +#endif + + if (req && req->complete) { + switch (status) { + case -DWC_E_SHUTDOWN: + req->status = -ESHUTDOWN; + break; + case -DWC_E_RESTART: + req->status = -ECONNRESET; + break; + case -DWC_E_INVALID: + req->status = -EINVAL; + break; + case -DWC_E_TIMEOUT: + req->status = -ETIMEDOUT; + break; + default: + req->status = status; + + } + + req->actual = actual; + DWC_SPINUNLOCK(pcd->lock); + req->complete(ep_handle, req); + DWC_SPINLOCK(pcd->lock); + } +#if LINUX_VERSION_CODE > KERNEL_VERSION(2,6,27) + ep = ep_from_handle(pcd, ep_handle); + if (GET_CORE_IF(pcd)->dma_enable) { + if (req->length != 0) { + dwc_otg_device_t *otg_dev = gadget_wrapper->pcd->otg_dev; + struct device *dev = NULL; + + if (otg_dev != NULL) + dev = DWC_OTG_OS_GETDEV(otg_dev->os_dep); + + dma_unmap_single(dev, req->dma, req->length, + ep->dwc_ep.is_in ? + DMA_TO_DEVICE: DMA_FROM_DEVICE); + } + } +#endif + + return 0; +} + +static int _connect(dwc_otg_pcd_t * pcd, int speed) +{ + gadget_wrapper->gadget.speed = speed; + return 0; +} + +static int _disconnect(dwc_otg_pcd_t * pcd) +{ + if (gadget_wrapper->driver && gadget_wrapper->driver->disconnect) { + gadget_wrapper->driver->disconnect(&gadget_wrapper->gadget); + } + return 0; +} + +static int _resume(dwc_otg_pcd_t * pcd) +{ + if (gadget_wrapper->driver && gadget_wrapper->driver->resume) { + gadget_wrapper->driver->resume(&gadget_wrapper->gadget); + } + + return 0; +} + +static int _suspend(dwc_otg_pcd_t * pcd) +{ + if (gadget_wrapper->driver && gadget_wrapper->driver->suspend) { + gadget_wrapper->driver->suspend(&gadget_wrapper->gadget); + } + return 0; +} + +/** + * This function updates the otg values in the gadget structure. + */ +static int _hnp_changed(dwc_otg_pcd_t * pcd) +{ + + if (!gadget_wrapper->gadget.is_otg) + return 0; + + gadget_wrapper->gadget.b_hnp_enable = get_b_hnp_enable(pcd); + gadget_wrapper->gadget.a_hnp_support = get_a_hnp_support(pcd); + gadget_wrapper->gadget.a_alt_hnp_support = get_a_alt_hnp_support(pcd); + return 0; +} + +static int _reset(dwc_otg_pcd_t * pcd) +{ + return 0; +} + +#ifdef DWC_UTE_CFI +static int _cfi_setup(dwc_otg_pcd_t * pcd, void *cfi_req) +{ + int retval = -DWC_E_INVALID; + if (gadget_wrapper->driver->cfi_feature_setup) { + retval = + gadget_wrapper->driver-> + cfi_feature_setup(&gadget_wrapper->gadget, + (struct cfi_usb_ctrlrequest *)cfi_req); + } + + return retval; +} +#endif + +static const struct dwc_otg_pcd_function_ops fops = { + .complete = _complete, +#ifdef DWC_EN_ISOC + .isoc_complete = _isoc_complete, +#endif + .setup = _setup, + .disconnect = _disconnect, + .connect = _connect, + .resume = _resume, + .suspend = _suspend, + .hnp_changed = _hnp_changed, + .reset = _reset, +#ifdef DWC_UTE_CFI + .cfi_setup = _cfi_setup, +#endif +#ifdef DWC_UTE_PER_IO + .xisoc_complete = _xisoc_complete, +#endif +}; + +/** + * This function is the top level PCD interrupt handler. + */ +static irqreturn_t dwc_otg_pcd_irq(int irq, void *dev) +{ + dwc_otg_pcd_t *pcd = dev; + int32_t retval = IRQ_NONE; + + retval = dwc_otg_pcd_handle_intr(pcd); + if (retval != 0) { + S3C2410X_CLEAR_EINTPEND(); + } + return IRQ_RETVAL(retval); +} + +/** + * This function initialized the usb_ep structures to there default + * state. + * + * @param d Pointer on gadget_wrapper. + */ +void gadget_add_eps(struct gadget_wrapper *d) +{ + static const char *names[] = { + + "ep0", + "ep1in", + "ep2in", + "ep3in", + "ep4in", + "ep5in", + "ep6in", + "ep7in", + "ep8in", + "ep9in", + "ep10in", + "ep11in", + "ep12in", + "ep13in", + "ep14in", + "ep15in", + "ep1out", + "ep2out", + "ep3out", + "ep4out", + "ep5out", + "ep6out", + "ep7out", + "ep8out", + "ep9out", + "ep10out", + "ep11out", + "ep12out", + "ep13out", + "ep14out", + "ep15out" + }; + + int i; + struct usb_ep *ep; + int8_t dev_endpoints; + + DWC_DEBUGPL(DBG_PCDV, "%s\n", __func__); + + INIT_LIST_HEAD(&d->gadget.ep_list); + d->gadget.ep0 = &d->ep0; + d->gadget.speed = USB_SPEED_UNKNOWN; + + INIT_LIST_HEAD(&d->gadget.ep0->ep_list); + + /** + * Initialize the EP0 structure. + */ + ep = &d->ep0; + + /* Init the usb_ep structure. */ + ep->name = names[0]; + ep->ops = (struct usb_ep_ops *)&dwc_otg_pcd_ep_ops; + + /** + * @todo NGS: What should the max packet size be set to + * here? Before EP type is set? + */ + ep->maxpacket = MAX_PACKET_SIZE; + dwc_otg_pcd_ep_enable(d->pcd, NULL, ep); + + list_add_tail(&ep->ep_list, &d->gadget.ep_list); + + /** + * Initialize the EP structures. + */ + dev_endpoints = d->pcd->core_if->dev_if->num_in_eps; + + for (i = 0; i < dev_endpoints; i++) { + ep = &d->in_ep[i]; + + /* Init the usb_ep structure. */ + ep->name = names[d->pcd->in_ep[i].dwc_ep.num]; + ep->ops = (struct usb_ep_ops *)&dwc_otg_pcd_ep_ops; + + /** + * @todo NGS: What should the max packet size be set to + * here? Before EP type is set? + */ + ep->maxpacket = MAX_PACKET_SIZE; + list_add_tail(&ep->ep_list, &d->gadget.ep_list); + } + + dev_endpoints = d->pcd->core_if->dev_if->num_out_eps; + + for (i = 0; i < dev_endpoints; i++) { + ep = &d->out_ep[i]; + + /* Init the usb_ep structure. */ + ep->name = names[15 + d->pcd->out_ep[i].dwc_ep.num]; + ep->ops = (struct usb_ep_ops *)&dwc_otg_pcd_ep_ops; + + /** + * @todo NGS: What should the max packet size be set to + * here? Before EP type is set? + */ + ep->maxpacket = MAX_PACKET_SIZE; + + list_add_tail(&ep->ep_list, &d->gadget.ep_list); + } + + /* remove ep0 from the list. There is a ep0 pointer. */ + list_del_init(&d->ep0.ep_list); + + d->ep0.maxpacket = MAX_EP0_SIZE; +} + +/** + * This function releases the Gadget device. + * required by device_unregister(). + * + * @todo Should this do something? Should it free the PCD? + */ +static void dwc_otg_pcd_gadget_release(struct device *dev) +{ + DWC_DEBUGPL(DBG_PCDV, "%s(%p)\n", __func__, dev); +} + +static struct gadget_wrapper *alloc_wrapper(dwc_bus_dev_t *_dev) +{ + static char pcd_name[] = "dwc_otg_pcd"; + dwc_otg_device_t *otg_dev = DWC_OTG_BUSDRVDATA(_dev); + struct gadget_wrapper *d; + int retval; + + d = DWC_ALLOC(sizeof(*d)); + if (d == NULL) { + return NULL; + } + + memset(d, 0, sizeof(*d)); + + d->gadget.name = pcd_name; + d->pcd = otg_dev->pcd; + +#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,30) + strcpy(d->gadget.dev.bus_id, "gadget"); +#else + dev_set_name(&d->gadget.dev, "%s", "gadget"); +#endif + + d->gadget.dev.parent = &_dev->dev; + d->gadget.dev.release = dwc_otg_pcd_gadget_release; + d->gadget.ops = &dwc_otg_pcd_ops; + d->gadget.max_speed = dwc_otg_pcd_is_dualspeed(otg_dev->pcd) ? USB_SPEED_HIGH:USB_SPEED_FULL; + d->gadget.is_otg = dwc_otg_pcd_is_otg(otg_dev->pcd); + + d->driver = 0; + /* Register the gadget device */ + retval = device_register(&d->gadget.dev); + if (retval != 0) { + DWC_ERROR("device_register failed\n"); + DWC_FREE(d); + return NULL; + } + + return d; +} + +static void free_wrapper(struct gadget_wrapper *d) +{ + if (d->driver) { + /* should have been done already by driver model core */ + DWC_WARN("driver '%s' is still registered\n", + d->driver->driver.name); + usb_gadget_unregister_driver(d->driver); + } + + device_unregister(&d->gadget.dev); + DWC_FREE(d); +} + +/** + * This function initialized the PCD portion of the driver. + * + */ +int pcd_init(dwc_bus_dev_t *_dev) +{ + dwc_otg_device_t *otg_dev = DWC_OTG_BUSDRVDATA(_dev); + int retval = 0; + + DWC_DEBUGPL(DBG_PCDV, "%s(%p) otg_dev=%p\n", __func__, _dev, otg_dev); + + otg_dev->pcd = dwc_otg_pcd_init(otg_dev->core_if); + + if (!otg_dev->pcd) { + DWC_ERROR("dwc_otg_pcd_init failed\n"); + return -ENOMEM; + } + + otg_dev->pcd->otg_dev = otg_dev; + gadget_wrapper = alloc_wrapper(_dev); + + /* + * Initialize EP structures + */ + gadget_add_eps(gadget_wrapper); + /* + * Setup interupt handler + */ +#ifdef PLATFORM_INTERFACE + DWC_DEBUGPL(DBG_ANY, "registering handler for irq%d\n", + platform_get_irq(_dev, fiq_enable ? 0 : 1)); + retval = request_irq(platform_get_irq(_dev, fiq_enable ? 0 : 1), dwc_otg_pcd_irq, + IRQF_SHARED, gadget_wrapper->gadget.name, + otg_dev->pcd); + if (retval != 0) { + DWC_ERROR("request of irq%d failed\n", + platform_get_irq(_dev, fiq_enable ? 0 : 1)); + free_wrapper(gadget_wrapper); + return -EBUSY; + } +#else + DWC_DEBUGPL(DBG_ANY, "registering handler for irq%d\n", + _dev->irq); + retval = request_irq(_dev->irq, dwc_otg_pcd_irq, + IRQF_SHARED | IRQF_DISABLED, + gadget_wrapper->gadget.name, otg_dev->pcd); + if (retval != 0) { + DWC_ERROR("request of irq%d failed\n", _dev->irq); + free_wrapper(gadget_wrapper); + return -EBUSY; + } +#endif + + dwc_otg_pcd_start(gadget_wrapper->pcd, &fops); + + return retval; +} + +/** + * Cleanup the PCD. + */ +void pcd_remove(dwc_bus_dev_t *_dev) +{ + dwc_otg_device_t *otg_dev = DWC_OTG_BUSDRVDATA(_dev); + dwc_otg_pcd_t *pcd = otg_dev->pcd; + + DWC_DEBUGPL(DBG_PCDV, "%s(%p) otg_dev %p\n", __func__, _dev, otg_dev); + + /* + * Free the IRQ + */ +#ifdef PLATFORM_INTERFACE + free_irq(platform_get_irq(_dev, 0), pcd); +#else + free_irq(_dev->irq, pcd); +#endif + dwc_otg_pcd_remove(otg_dev->pcd); + free_wrapper(gadget_wrapper); + otg_dev->pcd = 0; +} + +/** + * This function registers a gadget driver with the PCD. + * + * When a driver is successfully registered, it will receive control + * requests including set_configuration(), which enables non-control + * requests. then usb traffic follows until a disconnect is reported. + * then a host may connect again, or the driver might get unbound. + * + * @param driver The driver being registered + * @param bind The bind function of gadget driver + */ + +int usb_gadget_probe_driver(struct usb_gadget_driver *driver) +{ + int retval; + + DWC_DEBUGPL(DBG_PCD, "registering gadget driver '%s'\n", + driver->driver.name); + + if (!driver || driver->max_speed == USB_SPEED_UNKNOWN || + !driver->bind || + !driver->unbind || !driver->disconnect || !driver->setup) { + DWC_DEBUGPL(DBG_PCDV, "EINVAL\n"); + return -EINVAL; + } + if (gadget_wrapper == 0) { + DWC_DEBUGPL(DBG_PCDV, "ENODEV\n"); + return -ENODEV; + } + if (gadget_wrapper->driver != 0) { + DWC_DEBUGPL(DBG_PCDV, "EBUSY (%p)\n", gadget_wrapper->driver); + return -EBUSY; + } + + /* hook up the driver */ + gadget_wrapper->driver = driver; + gadget_wrapper->gadget.dev.driver = &driver->driver; + + DWC_DEBUGPL(DBG_PCD, "bind to driver %s\n", driver->driver.name); + retval = driver->bind(&gadget_wrapper->gadget, gadget_wrapper->driver); + if (retval) { + DWC_ERROR("bind to driver %s --> error %d\n", + driver->driver.name, retval); + gadget_wrapper->driver = 0; + gadget_wrapper->gadget.dev.driver = 0; + return retval; + } + DWC_DEBUGPL(DBG_ANY, "registered gadget driver '%s'\n", + driver->driver.name); + return 0; +} +EXPORT_SYMBOL(usb_gadget_probe_driver); + +/** + * This function unregisters a gadget driver + * + * @param driver The driver being unregistered + */ +int usb_gadget_unregister_driver(struct usb_gadget_driver *driver) +{ + //DWC_DEBUGPL(DBG_PCDV,"%s(%p)\n", __func__, _driver); + + if (gadget_wrapper == 0) { + DWC_DEBUGPL(DBG_ANY, "%s Return(%d): s_pcd==0\n", __func__, + -ENODEV); + return -ENODEV; + } + if (driver == 0 || driver != gadget_wrapper->driver) { + DWC_DEBUGPL(DBG_ANY, "%s Return(%d): driver?\n", __func__, + -EINVAL); + return -EINVAL; + } + + driver->unbind(&gadget_wrapper->gadget); + gadget_wrapper->driver = 0; + + DWC_DEBUGPL(DBG_ANY, "unregistered driver '%s'\n", driver->driver.name); + return 0; +} + +EXPORT_SYMBOL(usb_gadget_unregister_driver); + +#endif /* DWC_HOST_ONLY */ --- linux-raspi2-4.2.0.orig/drivers/usb/host/dwc_otg/dwc_otg_regs.h +++ linux-raspi2-4.2.0/drivers/usb/host/dwc_otg/dwc_otg_regs.h @@ -0,0 +1,2550 @@ +/* ========================================================================== + * $File: //dwh/usb_iip/dev/software/otg/linux/drivers/dwc_otg_regs.h $ + * $Revision: #98 $ + * $Date: 2012/08/10 $ + * $Change: 2047372 $ + * + * Synopsys HS OTG Linux Software Driver and documentation (hereinafter, + * "Software") is an Unsupported proprietary work of Synopsys, Inc. unless + * otherwise expressly agreed to in writing between Synopsys and you. + * + * The Software IS NOT an item of Licensed Software or Licensed Product under + * any End User Software License Agreement or Agreement for Licensed Product + * with Synopsys or any supplement thereto. You are permitted to use and + * redistribute this Software in source and binary forms, with or without + * modification, provided that redistributions of source code must retain this + * notice. You may not view, use, disclose, copy or distribute this file or + * any information contained herein except pursuant to this license grant from + * Synopsys. If you do not agree with this notice, including the disclaimer + * below, then you are not authorized to use the Software. + * + * THIS SOFTWARE IS BEING DISTRIBUTED BY SYNOPSYS SOLELY ON AN "AS IS" BASIS + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE HEREBY DISCLAIMED. IN NO EVENT SHALL SYNOPSYS BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH + * DAMAGE. + * ========================================================================== */ + +#ifndef __DWC_OTG_REGS_H__ +#define __DWC_OTG_REGS_H__ + +#include "dwc_otg_core_if.h" + +/** + * @file + * + * This file contains the data structures for accessing the DWC_otg core registers. + * + * The application interfaces with the HS OTG core by reading from and + * writing to the Control and Status Register (CSR) space through the + * AHB Slave interface. These registers are 32 bits wide, and the + * addresses are 32-bit-block aligned. + * CSRs are classified as follows: + * - Core Global Registers + * - Device Mode Registers + * - Device Global Registers + * - Device Endpoint Specific Registers + * - Host Mode Registers + * - Host Global Registers + * - Host Port CSRs + * - Host Channel Specific Registers + * + * Only the Core Global registers can be accessed in both Device and + * Host modes. When the HS OTG core is operating in one mode, either + * Device or Host, the application must not access registers from the + * other mode. When the core switches from one mode to another, the + * registers in the new mode of operation must be reprogrammed as they + * would be after a power-on reset. + */ + +/****************************************************************************/ +/** DWC_otg Core registers . + * The dwc_otg_core_global_regs structure defines the size + * and relative field offsets for the Core Global registers. + */ +typedef struct dwc_otg_core_global_regs { + /** OTG Control and Status Register. Offset: 000h */ + volatile uint32_t gotgctl; + /** OTG Interrupt Register. Offset: 004h */ + volatile uint32_t gotgint; + /**Core AHB Configuration Register. Offset: 008h */ + volatile uint32_t gahbcfg; + +#define DWC_GLBINTRMASK 0x0001 +#define DWC_DMAENABLE 0x0020 +#define DWC_NPTXEMPTYLVL_EMPTY 0x0080 +#define DWC_NPTXEMPTYLVL_HALFEMPTY 0x0000 +#define DWC_PTXEMPTYLVL_EMPTY 0x0100 +#define DWC_PTXEMPTYLVL_HALFEMPTY 0x0000 + + /**Core USB Configuration Register. Offset: 00Ch */ + volatile uint32_t gusbcfg; + /**Core Reset Register. Offset: 010h */ + volatile uint32_t grstctl; + /**Core Interrupt Register. Offset: 014h */ + volatile uint32_t gintsts; + /**Core Interrupt Mask Register. Offset: 018h */ + volatile uint32_t gintmsk; + /**Receive Status Queue Read Register (Read Only). Offset: 01Ch */ + volatile uint32_t grxstsr; + /**Receive Status Queue Read & POP Register (Read Only). Offset: 020h*/ + volatile uint32_t grxstsp; + /**Receive FIFO Size Register. Offset: 024h */ + volatile uint32_t grxfsiz; + /**Non Periodic Transmit FIFO Size Register. Offset: 028h */ + volatile uint32_t gnptxfsiz; + /**Non Periodic Transmit FIFO/Queue Status Register (Read + * Only). Offset: 02Ch */ + volatile uint32_t gnptxsts; + /**I2C Access Register. Offset: 030h */ + volatile uint32_t gi2cctl; + /**PHY Vendor Control Register. Offset: 034h */ + volatile uint32_t gpvndctl; + /**General Purpose Input/Output Register. Offset: 038h */ + volatile uint32_t ggpio; + /**User ID Register. Offset: 03Ch */ + volatile uint32_t guid; + /**Synopsys ID Register (Read Only). Offset: 040h */ + volatile uint32_t gsnpsid; + /**User HW Config1 Register (Read Only). Offset: 044h */ + volatile uint32_t ghwcfg1; + /**User HW Config2 Register (Read Only). Offset: 048h */ + volatile uint32_t ghwcfg2; +#define DWC_SLAVE_ONLY_ARCH 0 +#define DWC_EXT_DMA_ARCH 1 +#define DWC_INT_DMA_ARCH 2 + +#define DWC_MODE_HNP_SRP_CAPABLE 0 +#define DWC_MODE_SRP_ONLY_CAPABLE 1 +#define DWC_MODE_NO_HNP_SRP_CAPABLE 2 +#define DWC_MODE_SRP_CAPABLE_DEVICE 3 +#define DWC_MODE_NO_SRP_CAPABLE_DEVICE 4 +#define DWC_MODE_SRP_CAPABLE_HOST 5 +#define DWC_MODE_NO_SRP_CAPABLE_HOST 6 + + /**User HW Config3 Register (Read Only). Offset: 04Ch */ + volatile uint32_t ghwcfg3; + /**User HW Config4 Register (Read Only). Offset: 050h*/ + volatile uint32_t ghwcfg4; + /** Core LPM Configuration register Offset: 054h*/ + volatile uint32_t glpmcfg; + /** Global PowerDn Register Offset: 058h */ + volatile uint32_t gpwrdn; + /** Global DFIFO SW Config Register Offset: 05Ch */ + volatile uint32_t gdfifocfg; + /** ADP Control Register Offset: 060h */ + volatile uint32_t adpctl; + /** Reserved Offset: 064h-0FFh */ + volatile uint32_t reserved39[39]; + /** Host Periodic Transmit FIFO Size Register. Offset: 100h */ + volatile uint32_t hptxfsiz; + /** Device Periodic Transmit FIFO#n Register if dedicated fifos are disabled, + otherwise Device Transmit FIFO#n Register. + * Offset: 104h + (FIFO_Number-1)*04h, 1 <= FIFO Number <= 15 (1<=n<=15). */ + volatile uint32_t dtxfsiz[15]; +} dwc_otg_core_global_regs_t; + +/** + * This union represents the bit fields of the Core OTG Control + * and Status Register (GOTGCTL). Set the bits using the bit + * fields then write the d32 value to the register. + */ +typedef union gotgctl_data { + /** raw register data */ + uint32_t d32; + /** register bits */ + struct { + unsigned sesreqscs:1; + unsigned sesreq:1; + unsigned vbvalidoven:1; + unsigned vbvalidovval:1; + unsigned avalidoven:1; + unsigned avalidovval:1; + unsigned bvalidoven:1; + unsigned bvalidovval:1; + unsigned hstnegscs:1; + unsigned hnpreq:1; + unsigned hstsethnpen:1; + unsigned devhnpen:1; + unsigned reserved12_15:4; + unsigned conidsts:1; + unsigned dbnctime:1; + unsigned asesvld:1; + unsigned bsesvld:1; + unsigned otgver:1; + unsigned reserved1:1; + unsigned multvalidbc:5; + unsigned chirpen:1; + unsigned reserved28_31:4; + } b; +} gotgctl_data_t; + +/** + * This union represents the bit fields of the Core OTG Interrupt Register + * (GOTGINT). Set/clear the bits using the bit fields then write the d32 + * value to the register. + */ +typedef union gotgint_data { + /** raw register data */ + uint32_t d32; + /** register bits */ + struct { + /** Current Mode */ + unsigned reserved0_1:2; + + /** Session End Detected */ + unsigned sesenddet:1; + + unsigned reserved3_7:5; + + /** Session Request Success Status Change */ + unsigned sesreqsucstschng:1; + /** Host Negotiation Success Status Change */ + unsigned hstnegsucstschng:1; + + unsigned reserved10_16:7; + + /** Host Negotiation Detected */ + unsigned hstnegdet:1; + /** A-Device Timeout Change */ + unsigned adevtoutchng:1; + /** Debounce Done */ + unsigned debdone:1; + /** Multi-Valued input changed */ + unsigned mvic:1; + + unsigned reserved31_21:11; + + } b; +} gotgint_data_t; + +/** + * This union represents the bit fields of the Core AHB Configuration + * Register (GAHBCFG). Set/clear the bits using the bit fields then + * write the d32 value to the register. + */ +typedef union gahbcfg_data { + /** raw register data */ + uint32_t d32; + /** register bits */ + struct { + unsigned glblintrmsk:1; +#define DWC_GAHBCFG_GLBINT_ENABLE 1 + + unsigned hburstlen:4; +#define DWC_GAHBCFG_INT_DMA_BURST_SINGLE 0 +#define DWC_GAHBCFG_INT_DMA_BURST_INCR 1 +#define DWC_GAHBCFG_INT_DMA_BURST_INCR4 3 +#define DWC_GAHBCFG_INT_DMA_BURST_INCR8 5 +#define DWC_GAHBCFG_INT_DMA_BURST_INCR16 7 + + unsigned dmaenable:1; +#define DWC_GAHBCFG_DMAENABLE 1 + unsigned reserved:1; + unsigned nptxfemplvl_txfemplvl:1; + unsigned ptxfemplvl:1; +#define DWC_GAHBCFG_TXFEMPTYLVL_EMPTY 1 +#define DWC_GAHBCFG_TXFEMPTYLVL_HALFEMPTY 0 + unsigned reserved9_20:12; + unsigned remmemsupp:1; + unsigned notialldmawrit:1; + unsigned ahbsingle:1; + unsigned reserved24_31:8; + } b; +} gahbcfg_data_t; + +/** + * This union represents the bit fields of the Core USB Configuration + * Register (GUSBCFG). Set the bits using the bit fields then write + * the d32 value to the register. + */ +typedef union gusbcfg_data { + /** raw register data */ + uint32_t d32; + /** register bits */ + struct { + unsigned toutcal:3; + unsigned phyif:1; + unsigned ulpi_utmi_sel:1; + unsigned fsintf:1; + unsigned physel:1; + unsigned ddrsel:1; + unsigned srpcap:1; + unsigned hnpcap:1; + unsigned usbtrdtim:4; + unsigned reserved1:1; + unsigned phylpwrclksel:1; + unsigned otgutmifssel:1; + unsigned ulpi_fsls:1; + unsigned ulpi_auto_res:1; + unsigned ulpi_clk_sus_m:1; + unsigned ulpi_ext_vbus_drv:1; + unsigned ulpi_int_vbus_indicator:1; + unsigned term_sel_dl_pulse:1; + unsigned indicator_complement:1; + unsigned indicator_pass_through:1; + unsigned ulpi_int_prot_dis:1; + unsigned ic_usb_cap:1; + unsigned ic_traffic_pull_remove:1; + unsigned tx_end_delay:1; + unsigned force_host_mode:1; + unsigned force_dev_mode:1; + unsigned reserved31:1; + } b; +} gusbcfg_data_t; + +/** + * This union represents the bit fields of the Core Reset Register + * (GRSTCTL). Set/clear the bits using the bit fields then write the + * d32 value to the register. + */ +typedef union grstctl_data { + /** raw register data */ + uint32_t d32; + /** register bits */ + struct { + /** Core Soft Reset (CSftRst) (Device and Host) + * + * The application can flush the control logic in the + * entire core using this bit. This bit resets the + * pipelines in the AHB Clock domain as well as the + * PHY Clock domain. + * + * The state machines are reset to an IDLE state, the + * control bits in the CSRs are cleared, all the + * transmit FIFOs and the receive FIFO are flushed. + * + * The status mask bits that control the generation of + * the interrupt, are cleared, to clear the + * interrupt. The interrupt status bits are not + * cleared, so the application can get the status of + * any events that occurred in the core after it has + * set this bit. + * + * Any transactions on the AHB are terminated as soon + * as possible following the protocol. Any + * transactions on the USB are terminated immediately. + * + * The configuration settings in the CSRs are + * unchanged, so the software doesn't have to + * reprogram these registers (Device + * Configuration/Host Configuration/Core System + * Configuration/Core PHY Configuration). + * + * The application can write to this bit, any time it + * wants to reset the core. This is a self clearing + * bit and the core clears this bit after all the + * necessary logic is reset in the core, which may + * take several clocks, depending on the current state + * of the core. + */ + unsigned csftrst:1; + /** Hclk Soft Reset + * + * The application uses this bit to reset the control logic in + * the AHB clock domain. Only AHB clock domain pipelines are + * reset. + */ + unsigned hsftrst:1; + /** Host Frame Counter Reset (Host Only)
+ * + * The application can reset the (micro)frame number + * counter inside the core, using this bit. When the + * (micro)frame counter is reset, the subsequent SOF + * sent out by the core, will have a (micro)frame + * number of 0. + */ + unsigned hstfrm:1; + /** In Token Sequence Learning Queue Flush + * (INTknQFlsh) (Device Only) + */ + unsigned intknqflsh:1; + /** RxFIFO Flush (RxFFlsh) (Device and Host) + * + * The application can flush the entire Receive FIFO + * using this bit. The application must first + * ensure that the core is not in the middle of a + * transaction. The application should write into + * this bit, only after making sure that neither the + * DMA engine is reading from the RxFIFO nor the MAC + * is writing the data in to the FIFO. The + * application should wait until the bit is cleared + * before performing any other operations. This bit + * will takes 8 clocks (slowest of PHY or AHB clock) + * to clear. + */ + unsigned rxfflsh:1; + /** TxFIFO Flush (TxFFlsh) (Device and Host). + * + * This bit is used to selectively flush a single or + * all transmit FIFOs. The application must first + * ensure that the core is not in the middle of a + * transaction. The application should write into + * this bit, only after making sure that neither the + * DMA engine is writing into the TxFIFO nor the MAC + * is reading the data out of the FIFO. The + * application should wait until the core clears this + * bit, before performing any operations. This bit + * will takes 8 clocks (slowest of PHY or AHB clock) + * to clear. + */ + unsigned txfflsh:1; + + /** TxFIFO Number (TxFNum) (Device and Host). + * + * This is the FIFO number which needs to be flushed, + * using the TxFIFO Flush bit. This field should not + * be changed until the TxFIFO Flush bit is cleared by + * the core. + * - 0x0 : Non Periodic TxFIFO Flush + * - 0x1 : Periodic TxFIFO #1 Flush in device mode + * or Periodic TxFIFO in host mode + * - 0x2 : Periodic TxFIFO #2 Flush in device mode. + * - ... + * - 0xF : Periodic TxFIFO #15 Flush in device mode + * - 0x10: Flush all the Transmit NonPeriodic and + * Transmit Periodic FIFOs in the core + */ + unsigned txfnum:5; + /** Reserved */ + unsigned reserved11_29:19; + /** DMA Request Signal. Indicated DMA request is in + * probress. Used for debug purpose. */ + unsigned dmareq:1; + /** AHB Master Idle. Indicates the AHB Master State + * Machine is in IDLE condition. */ + unsigned ahbidle:1; + } b; +} grstctl_t; + +/** + * This union represents the bit fields of the Core Interrupt Mask + * Register (GINTMSK). Set/clear the bits using the bit fields then + * write the d32 value to the register. + */ +typedef union gintmsk_data { + /** raw register data */ + uint32_t d32; + /** register bits */ + struct { + unsigned reserved0:1; + unsigned modemismatch:1; + unsigned otgintr:1; + unsigned sofintr:1; + unsigned rxstsqlvl:1; + unsigned nptxfempty:1; + unsigned ginnakeff:1; + unsigned goutnakeff:1; + unsigned ulpickint:1; + unsigned i2cintr:1; + unsigned erlysuspend:1; + unsigned usbsuspend:1; + unsigned usbreset:1; + unsigned enumdone:1; + unsigned isooutdrop:1; + unsigned eopframe:1; + unsigned restoredone:1; + unsigned epmismatch:1; + unsigned inepintr:1; + unsigned outepintr:1; + unsigned incomplisoin:1; + unsigned incomplisoout:1; + unsigned fetsusp:1; + unsigned resetdet:1; + unsigned portintr:1; + unsigned hcintr:1; + unsigned ptxfempty:1; + unsigned lpmtranrcvd:1; + unsigned conidstschng:1; + unsigned disconnect:1; + unsigned sessreqintr:1; + unsigned wkupintr:1; + } b; +} gintmsk_data_t; +/** + * This union represents the bit fields of the Core Interrupt Register + * (GINTSTS). Set/clear the bits using the bit fields then write the + * d32 value to the register. + */ +typedef union gintsts_data { + /** raw register data */ + uint32_t d32; +#define DWC_SOF_INTR_MASK 0x0008 + /** register bits */ + struct { +#define DWC_HOST_MODE 1 + unsigned curmode:1; + unsigned modemismatch:1; + unsigned otgintr:1; + unsigned sofintr:1; + unsigned rxstsqlvl:1; + unsigned nptxfempty:1; + unsigned ginnakeff:1; + unsigned goutnakeff:1; + unsigned ulpickint:1; + unsigned i2cintr:1; + unsigned erlysuspend:1; + unsigned usbsuspend:1; + unsigned usbreset:1; + unsigned enumdone:1; + unsigned isooutdrop:1; + unsigned eopframe:1; + unsigned restoredone:1; + unsigned epmismatch:1; + unsigned inepint:1; + unsigned outepintr:1; + unsigned incomplisoin:1; + unsigned incomplisoout:1; + unsigned fetsusp:1; + unsigned resetdet:1; + unsigned portintr:1; + unsigned hcintr:1; + unsigned ptxfempty:1; + unsigned lpmtranrcvd:1; + unsigned conidstschng:1; + unsigned disconnect:1; + unsigned sessreqintr:1; + unsigned wkupintr:1; + } b; +} gintsts_data_t; + +/** + * This union represents the bit fields in the Device Receive Status Read and + * Pop Registers (GRXSTSR, GRXSTSP) Read the register into the d32 + * element then read out the bits using the bit elements. + */ +typedef union device_grxsts_data { + /** raw register data */ + uint32_t d32; + /** register bits */ + struct { + unsigned epnum:4; + unsigned bcnt:11; + unsigned dpid:2; + +#define DWC_STS_DATA_UPDT 0x2 // OUT Data Packet +#define DWC_STS_XFER_COMP 0x3 // OUT Data Transfer Complete + +#define DWC_DSTS_GOUT_NAK 0x1 // Global OUT NAK +#define DWC_DSTS_SETUP_COMP 0x4 // Setup Phase Complete +#define DWC_DSTS_SETUP_UPDT 0x6 // SETUP Packet + unsigned pktsts:4; + unsigned fn:4; + unsigned reserved25_31:7; + } b; +} device_grxsts_data_t; + +/** + * This union represents the bit fields in the Host Receive Status Read and + * Pop Registers (GRXSTSR, GRXSTSP) Read the register into the d32 + * element then read out the bits using the bit elements. + */ +typedef union host_grxsts_data { + /** raw register data */ + uint32_t d32; + /** register bits */ + struct { + unsigned chnum:4; + unsigned bcnt:11; + unsigned dpid:2; + + unsigned pktsts:4; +#define DWC_GRXSTS_PKTSTS_IN 0x2 +#define DWC_GRXSTS_PKTSTS_IN_XFER_COMP 0x3 +#define DWC_GRXSTS_PKTSTS_DATA_TOGGLE_ERR 0x5 +#define DWC_GRXSTS_PKTSTS_CH_HALTED 0x7 + + unsigned reserved21_31:11; + } b; +} host_grxsts_data_t; + +/** + * This union represents the bit fields in the FIFO Size Registers (HPTXFSIZ, + * GNPTXFSIZ, DPTXFSIZn, DIEPTXFn). Read the register into the d32 element + * then read out the bits using the bit elements. + */ +typedef union fifosize_data { + /** raw register data */ + uint32_t d32; + /** register bits */ + struct { + unsigned startaddr:16; + unsigned depth:16; + } b; +} fifosize_data_t; + +/** + * This union represents the bit fields in the Non-Periodic Transmit + * FIFO/Queue Status Register (GNPTXSTS). Read the register into the + * d32 element then read out the bits using the bit + * elements. + */ +typedef union gnptxsts_data { + /** raw register data */ + uint32_t d32; + /** register bits */ + struct { + unsigned nptxfspcavail:16; + unsigned nptxqspcavail:8; + /** Top of the Non-Periodic Transmit Request Queue + * - bit 24 - Terminate (Last entry for the selected + * channel/EP) + * - bits 26:25 - Token Type + * - 2'b00 - IN/OUT + * - 2'b01 - Zero Length OUT + * - 2'b10 - PING/Complete Split + * - 2'b11 - Channel Halt + * - bits 30:27 - Channel/EP Number + */ + unsigned nptxqtop_terminate:1; + unsigned nptxqtop_token:2; + unsigned nptxqtop_chnep:4; + unsigned reserved:1; + } b; +} gnptxsts_data_t; + +/** + * This union represents the bit fields in the Transmit + * FIFO Status Register (DTXFSTS). Read the register into the + * d32 element then read out the bits using the bit + * elements. + */ +typedef union dtxfsts_data { + /** raw register data */ + uint32_t d32; + /** register bits */ + struct { + unsigned txfspcavail:16; + unsigned reserved:16; + } b; +} dtxfsts_data_t; + +/** + * This union represents the bit fields in the I2C Control Register + * (I2CCTL). Read the register into the d32 element then read out the + * bits using the bit elements. + */ +typedef union gi2cctl_data { + /** raw register data */ + uint32_t d32; + /** register bits */ + struct { + unsigned rwdata:8; + unsigned regaddr:8; + unsigned addr:7; + unsigned i2cen:1; + unsigned ack:1; + unsigned i2csuspctl:1; + unsigned i2cdevaddr:2; + unsigned i2cdatse0:1; + unsigned reserved:1; + unsigned rw:1; + unsigned bsydne:1; + } b; +} gi2cctl_data_t; + +/** + * This union represents the bit fields in the PHY Vendor Control Register + * (GPVNDCTL). Read the register into the d32 element then read out the + * bits using the bit elements. + */ +typedef union gpvndctl_data { + /** raw register data */ + uint32_t d32; + /** register bits */ + struct { + unsigned regdata:8; + unsigned vctrl:8; + unsigned regaddr16_21:6; + unsigned regwr:1; + unsigned reserved23_24:2; + unsigned newregreq:1; + unsigned vstsbsy:1; + unsigned vstsdone:1; + unsigned reserved28_30:3; + unsigned disulpidrvr:1; + } b; +} gpvndctl_data_t; + +/** + * This union represents the bit fields in the General Purpose + * Input/Output Register (GGPIO). + * Read the register into the d32 element then read out the + * bits using the bit elements. + */ +typedef union ggpio_data { + /** raw register data */ + uint32_t d32; + /** register bits */ + struct { + unsigned gpi:16; + unsigned gpo:16; + } b; +} ggpio_data_t; + +/** + * This union represents the bit fields in the User ID Register + * (GUID). Read the register into the d32 element then read out the + * bits using the bit elements. + */ +typedef union guid_data { + /** raw register data */ + uint32_t d32; + /** register bits */ + struct { + unsigned rwdata:32; + } b; +} guid_data_t; + +/** + * This union represents the bit fields in the Synopsys ID Register + * (GSNPSID). Read the register into the d32 element then read out the + * bits using the bit elements. + */ +typedef union gsnpsid_data { + /** raw register data */ + uint32_t d32; + /** register bits */ + struct { + unsigned rwdata:32; + } b; +} gsnpsid_data_t; + +/** + * This union represents the bit fields in the User HW Config1 + * Register. Read the register into the d32 element then read + * out the bits using the bit elements. + */ +typedef union hwcfg1_data { + /** raw register data */ + uint32_t d32; + /** register bits */ + struct { + unsigned ep_dir0:2; + unsigned ep_dir1:2; + unsigned ep_dir2:2; + unsigned ep_dir3:2; + unsigned ep_dir4:2; + unsigned ep_dir5:2; + unsigned ep_dir6:2; + unsigned ep_dir7:2; + unsigned ep_dir8:2; + unsigned ep_dir9:2; + unsigned ep_dir10:2; + unsigned ep_dir11:2; + unsigned ep_dir12:2; + unsigned ep_dir13:2; + unsigned ep_dir14:2; + unsigned ep_dir15:2; + } b; +} hwcfg1_data_t; + +/** + * This union represents the bit fields in the User HW Config2 + * Register. Read the register into the d32 element then read + * out the bits using the bit elements. + */ +typedef union hwcfg2_data { + /** raw register data */ + uint32_t d32; + /** register bits */ + struct { + /* GHWCFG2 */ + unsigned op_mode:3; +#define DWC_HWCFG2_OP_MODE_HNP_SRP_CAPABLE_OTG 0 +#define DWC_HWCFG2_OP_MODE_SRP_ONLY_CAPABLE_OTG 1 +#define DWC_HWCFG2_OP_MODE_NO_HNP_SRP_CAPABLE_OTG 2 +#define DWC_HWCFG2_OP_MODE_SRP_CAPABLE_DEVICE 3 +#define DWC_HWCFG2_OP_MODE_NO_SRP_CAPABLE_DEVICE 4 +#define DWC_HWCFG2_OP_MODE_SRP_CAPABLE_HOST 5 +#define DWC_HWCFG2_OP_MODE_NO_SRP_CAPABLE_HOST 6 + + unsigned architecture:2; + unsigned point2point:1; + unsigned hs_phy_type:2; +#define DWC_HWCFG2_HS_PHY_TYPE_NOT_SUPPORTED 0 +#define DWC_HWCFG2_HS_PHY_TYPE_UTMI 1 +#define DWC_HWCFG2_HS_PHY_TYPE_ULPI 2 +#define DWC_HWCFG2_HS_PHY_TYPE_UTMI_ULPI 3 + + unsigned fs_phy_type:2; + unsigned num_dev_ep:4; + unsigned num_host_chan:4; + unsigned perio_ep_supported:1; + unsigned dynamic_fifo:1; + unsigned multi_proc_int:1; + unsigned reserved21:1; + unsigned nonperio_tx_q_depth:2; + unsigned host_perio_tx_q_depth:2; + unsigned dev_token_q_depth:5; + unsigned otg_enable_ic_usb:1; + } b; +} hwcfg2_data_t; + +/** + * This union represents the bit fields in the User HW Config3 + * Register. Read the register into the d32 element then read + * out the bits using the bit elements. + */ +typedef union hwcfg3_data { + /** raw register data */ + uint32_t d32; + /** register bits */ + struct { + /* GHWCFG3 */ + unsigned xfer_size_cntr_width:4; + unsigned packet_size_cntr_width:3; + unsigned otg_func:1; + unsigned i2c:1; + unsigned vendor_ctrl_if:1; + unsigned optional_features:1; + unsigned synch_reset_type:1; + unsigned adp_supp:1; + unsigned otg_enable_hsic:1; + unsigned bc_support:1; + unsigned otg_lpm_en:1; + unsigned dfifo_depth:16; + } b; +} hwcfg3_data_t; + +/** + * This union represents the bit fields in the User HW Config4 + * Register. Read the register into the d32 element then read + * out the bits using the bit elements. + */ +typedef union hwcfg4_data { + /** raw register data */ + uint32_t d32; + /** register bits */ + struct { + unsigned num_dev_perio_in_ep:4; + unsigned power_optimiz:1; + unsigned min_ahb_freq:1; + unsigned hiber:1; + unsigned xhiber:1; + unsigned reserved:6; + unsigned utmi_phy_data_width:2; + unsigned num_dev_mode_ctrl_ep:4; + unsigned iddig_filt_en:1; + unsigned vbus_valid_filt_en:1; + unsigned a_valid_filt_en:1; + unsigned b_valid_filt_en:1; + unsigned session_end_filt_en:1; + unsigned ded_fifo_en:1; + unsigned num_in_eps:4; + unsigned desc_dma:1; + unsigned desc_dma_dyn:1; + } b; +} hwcfg4_data_t; + +/** + * This union represents the bit fields of the Core LPM Configuration + * Register (GLPMCFG). Set the bits using bit fields then write + * the d32 value to the register. + */ +typedef union glpmctl_data { + /** raw register data */ + uint32_t d32; + /** register bits */ + struct { + /** LPM-Capable (LPMCap) (Device and Host) + * The application uses this bit to control + * the DWC_otg core LPM capabilities. + */ + unsigned lpm_cap_en:1; + /** LPM response programmed by application (AppL1Res) (Device) + * Handshake response to LPM token pre-programmed + * by device application software. + */ + unsigned appl_resp:1; + /** Host Initiated Resume Duration (HIRD) (Device and Host) + * In Host mode this field indicates the value of HIRD + * to be sent in an LPM transaction. + * In Device mode this field is updated with the + * Received LPM Token HIRD bmAttribute + * when an ACK/NYET/STALL response is sent + * to an LPM transaction. + */ + unsigned hird:4; + /** RemoteWakeEnable (bRemoteWake) (Device and Host) + * In Host mode this bit indicates the value of remote + * wake up to be sent in wIndex field of LPM transaction. + * In Device mode this field is updated with the + * Received LPM Token bRemoteWake bmAttribute + * when an ACK/NYET/STALL response is sent + * to an LPM transaction. + */ + unsigned rem_wkup_en:1; + /** Enable utmi_sleep_n (EnblSlpM) (Device and Host) + * The application uses this bit to control + * the utmi_sleep_n assertion to the PHY when in L1 state. + */ + unsigned en_utmi_sleep:1; + /** HIRD Threshold (HIRD_Thres) (Device and Host) + */ + unsigned hird_thres:5; + /** LPM Response (CoreL1Res) (Device and Host) + * In Host mode this bit contains handsake response to + * LPM transaction. + * In Device mode the response of the core to + * LPM transaction received is reflected in these two bits. + - 0x0 : ERROR (No handshake response) + - 0x1 : STALL + - 0x2 : NYET + - 0x3 : ACK + */ + unsigned lpm_resp:2; + /** Port Sleep Status (SlpSts) (Device and Host) + * This bit is set as long as a Sleep condition + * is present on the USB bus. + */ + unsigned prt_sleep_sts:1; + /** Sleep State Resume OK (L1ResumeOK) (Device and Host) + * Indicates that the application or host + * can start resume from Sleep state. + */ + unsigned sleep_state_resumeok:1; + /** LPM channel Index (LPM_Chnl_Indx) (Host) + * The channel number on which the LPM transaction + * has to be applied while sending + * an LPM transaction to the local device. + */ + unsigned lpm_chan_index:4; + /** LPM Retry Count (LPM_Retry_Cnt) (Host) + * Number host retries that would be performed + * if the device response was not valid response. + */ + unsigned retry_count:3; + /** Send LPM Transaction (SndLPM) (Host) + * When set by application software, + * an LPM transaction containing two tokens + * is sent. + */ + unsigned send_lpm:1; + /** LPM Retry status (LPM_RetryCnt_Sts) (Host) + * Number of LPM Host Retries still remaining + * to be transmitted for the current LPM sequence + */ + unsigned retry_count_sts:3; + unsigned reserved28_29:2; + /** In host mode once this bit is set, the host + * configures to drive the HSIC Idle state on the bus. + * It then waits for the device to initiate the Connect sequence. + * In device mode once this bit is set, the device waits for + * the HSIC Idle line state on the bus. Upon receving the Idle + * line state, it initiates the HSIC Connect sequence. + */ + unsigned hsic_connect:1; + /** This bit overrides and functionally inverts + * the if_select_hsic input port signal. + */ + unsigned inv_sel_hsic:1; + } b; +} glpmcfg_data_t; + +/** + * This union represents the bit fields of the Core ADP Timer, Control and + * Status Register (ADPTIMCTLSTS). Set the bits using bit fields then write + * the d32 value to the register. + */ +typedef union adpctl_data { + /** raw register data */ + uint32_t d32; + /** register bits */ + struct { + /** Probe Discharge (PRB_DSCHG) + * These bits set the times for TADP_DSCHG. + * These bits are defined as follows: + * 2'b00 - 4 msec + * 2'b01 - 8 msec + * 2'b10 - 16 msec + * 2'b11 - 32 msec + */ + unsigned prb_dschg:2; + /** Probe Delta (PRB_DELTA) + * These bits set the resolution for RTIM value. + * The bits are defined in units of 32 kHz clock cycles as follows: + * 2'b00 - 1 cycles + * 2'b01 - 2 cycles + * 2'b10 - 3 cycles + * 2'b11 - 4 cycles + * For example if this value is chosen to 2'b01, it means that RTIM + * increments for every 3(three) 32Khz clock cycles. + */ + unsigned prb_delta:2; + /** Probe Period (PRB_PER) + * These bits sets the TADP_PRD as shown in Figure 4 as follows: + * 2'b00 - 0.625 to 0.925 sec (typical 0.775 sec) + * 2'b01 - 1.25 to 1.85 sec (typical 1.55 sec) + * 2'b10 - 1.9 to 2.6 sec (typical 2.275 sec) + * 2'b11 - Reserved + */ + unsigned prb_per:2; + /** These bits capture the latest time it took for VBUS to ramp from + * VADP_SINK to VADP_PRB. + * 0x000 - 1 cycles + * 0x001 - 2 cycles + * 0x002 - 3 cycles + * etc + * 0x7FF - 2048 cycles + * A time of 1024 cycles at 32 kHz corresponds to a time of 32 msec. + */ + unsigned rtim:11; + /** Enable Probe (EnaPrb) + * When programmed to 1'b1, the core performs a probe operation. + * This bit is valid only if OTG_Ver = 1'b1. + */ + unsigned enaprb:1; + /** Enable Sense (EnaSns) + * When programmed to 1'b1, the core performs a Sense operation. + * This bit is valid only if OTG_Ver = 1'b1. + */ + unsigned enasns:1; + /** ADP Reset (ADPRes) + * When set, ADP controller is reset. + * This bit is valid only if OTG_Ver = 1'b1. + */ + unsigned adpres:1; + /** ADP Enable (ADPEn) + * When set, the core performs either ADP probing or sensing + * based on EnaPrb or EnaSns. + * This bit is valid only if OTG_Ver = 1'b1. + */ + unsigned adpen:1; + /** ADP Probe Interrupt (ADP_PRB_INT) + * When this bit is set, it means that the VBUS + * voltage is greater than VADP_PRB or VADP_PRB is reached. + * This bit is valid only if OTG_Ver = 1'b1. + */ + unsigned adp_prb_int:1; + /** + * ADP Sense Interrupt (ADP_SNS_INT) + * When this bit is set, it means that the VBUS voltage is greater than + * VADP_SNS value or VADP_SNS is reached. + * This bit is valid only if OTG_Ver = 1'b1. + */ + unsigned adp_sns_int:1; + /** ADP Tomeout Interrupt (ADP_TMOUT_INT) + * This bit is relevant only for an ADP probe. + * When this bit is set, it means that the ramp time has + * completed ie ADPCTL.RTIM has reached its terminal value + * of 0x7FF. This is a debug feature that allows software + * to read the ramp time after each cycle. + * This bit is valid only if OTG_Ver = 1'b1. + */ + unsigned adp_tmout_int:1; + /** ADP Probe Interrupt Mask (ADP_PRB_INT_MSK) + * When this bit is set, it unmasks the interrupt due to ADP_PRB_INT. + * This bit is valid only if OTG_Ver = 1'b1. + */ + unsigned adp_prb_int_msk:1; + /** ADP Sense Interrupt Mask (ADP_SNS_INT_MSK) + * When this bit is set, it unmasks the interrupt due to ADP_SNS_INT. + * This bit is valid only if OTG_Ver = 1'b1. + */ + unsigned adp_sns_int_msk:1; + /** ADP Timoeout Interrupt Mask (ADP_TMOUT_MSK) + * When this bit is set, it unmasks the interrupt due to ADP_TMOUT_INT. + * This bit is valid only if OTG_Ver = 1'b1. + */ + unsigned adp_tmout_int_msk:1; + /** Access Request + * 2'b00 - Read/Write Valid (updated by the core) + * 2'b01 - Read + * 2'b00 - Write + * 2'b00 - Reserved + */ + unsigned ar:2; + /** Reserved */ + unsigned reserved29_31:3; + } b; +} adpctl_data_t; + +//////////////////////////////////////////// +// Device Registers +/** + * Device Global Registers. Offsets 800h-BFFh + * + * The following structures define the size and relative field offsets + * for the Device Mode Registers. + * + * These registers are visible only in Device mode and must not be + * accessed in Host mode, as the results are unknown. + */ +typedef struct dwc_otg_dev_global_regs { + /** Device Configuration Register. Offset 800h */ + volatile uint32_t dcfg; + /** Device Control Register. Offset: 804h */ + volatile uint32_t dctl; + /** Device Status Register (Read Only). Offset: 808h */ + volatile uint32_t dsts; + /** Reserved. Offset: 80Ch */ + uint32_t unused; + /** Device IN Endpoint Common Interrupt Mask + * Register. Offset: 810h */ + volatile uint32_t diepmsk; + /** Device OUT Endpoint Common Interrupt Mask + * Register. Offset: 814h */ + volatile uint32_t doepmsk; + /** Device All Endpoints Interrupt Register. Offset: 818h */ + volatile uint32_t daint; + /** Device All Endpoints Interrupt Mask Register. Offset: + * 81Ch */ + volatile uint32_t daintmsk; + /** Device IN Token Queue Read Register-1 (Read Only). + * Offset: 820h */ + volatile uint32_t dtknqr1; + /** Device IN Token Queue Read Register-2 (Read Only). + * Offset: 824h */ + volatile uint32_t dtknqr2; + /** Device VBUS discharge Register. Offset: 828h */ + volatile uint32_t dvbusdis; + /** Device VBUS Pulse Register. Offset: 82Ch */ + volatile uint32_t dvbuspulse; + /** Device IN Token Queue Read Register-3 (Read Only). / + * Device Thresholding control register (Read/Write) + * Offset: 830h */ + volatile uint32_t dtknqr3_dthrctl; + /** Device IN Token Queue Read Register-4 (Read Only). / + * Device IN EPs empty Inr. Mask Register (Read/Write) + * Offset: 834h */ + volatile uint32_t dtknqr4_fifoemptymsk; + /** Device Each Endpoint Interrupt Register (Read Only). / + * Offset: 838h */ + volatile uint32_t deachint; + /** Device Each Endpoint Interrupt mask Register (Read/Write). / + * Offset: 83Ch */ + volatile uint32_t deachintmsk; + /** Device Each In Endpoint Interrupt mask Register (Read/Write). / + * Offset: 840h */ + volatile uint32_t diepeachintmsk[MAX_EPS_CHANNELS]; + /** Device Each Out Endpoint Interrupt mask Register (Read/Write). / + * Offset: 880h */ + volatile uint32_t doepeachintmsk[MAX_EPS_CHANNELS]; +} dwc_otg_device_global_regs_t; + +/** + * This union represents the bit fields in the Device Configuration + * Register. Read the register into the d32 member then + * set/clear the bits using the bit elements. Write the + * d32 member to the dcfg register. + */ +typedef union dcfg_data { + /** raw register data */ + uint32_t d32; + /** register bits */ + struct { + /** Device Speed */ + unsigned devspd:2; + /** Non Zero Length Status OUT Handshake */ + unsigned nzstsouthshk:1; +#define DWC_DCFG_SEND_STALL 1 + + unsigned ena32khzs:1; + /** Device Addresses */ + unsigned devaddr:7; + /** Periodic Frame Interval */ + unsigned perfrint:2; +#define DWC_DCFG_FRAME_INTERVAL_80 0 +#define DWC_DCFG_FRAME_INTERVAL_85 1 +#define DWC_DCFG_FRAME_INTERVAL_90 2 +#define DWC_DCFG_FRAME_INTERVAL_95 3 + + /** Enable Device OUT NAK for bulk in DDMA mode */ + unsigned endevoutnak:1; + + unsigned reserved14_17:4; + /** In Endpoint Mis-match count */ + unsigned epmscnt:5; + /** Enable Descriptor DMA in Device mode */ + unsigned descdma:1; + unsigned perschintvl:2; + unsigned resvalid:6; + } b; +} dcfg_data_t; + +/** + * This union represents the bit fields in the Device Control + * Register. Read the register into the d32 member then + * set/clear the bits using the bit elements. + */ +typedef union dctl_data { + /** raw register data */ + uint32_t d32; + /** register bits */ + struct { + /** Remote Wakeup */ + unsigned rmtwkupsig:1; + /** Soft Disconnect */ + unsigned sftdiscon:1; + /** Global Non-Periodic IN NAK Status */ + unsigned gnpinnaksts:1; + /** Global OUT NAK Status */ + unsigned goutnaksts:1; + /** Test Control */ + unsigned tstctl:3; + /** Set Global Non-Periodic IN NAK */ + unsigned sgnpinnak:1; + /** Clear Global Non-Periodic IN NAK */ + unsigned cgnpinnak:1; + /** Set Global OUT NAK */ + unsigned sgoutnak:1; + /** Clear Global OUT NAK */ + unsigned cgoutnak:1; + /** Power-On Programming Done */ + unsigned pwronprgdone:1; + /** Reserved */ + unsigned reserved:1; + /** Global Multi Count */ + unsigned gmc:2; + /** Ignore Frame Number for ISOC EPs */ + unsigned ifrmnum:1; + /** NAK on Babble */ + unsigned nakonbble:1; + /** Enable Continue on BNA */ + unsigned encontonbna:1; + + unsigned reserved18_31:14; + } b; +} dctl_data_t; + +/** + * This union represents the bit fields in the Device Status + * Register. Read the register into the d32 member then + * set/clear the bits using the bit elements. + */ +typedef union dsts_data { + /** raw register data */ + uint32_t d32; + /** register bits */ + struct { + /** Suspend Status */ + unsigned suspsts:1; + /** Enumerated Speed */ + unsigned enumspd:2; +#define DWC_DSTS_ENUMSPD_HS_PHY_30MHZ_OR_60MHZ 0 +#define DWC_DSTS_ENUMSPD_FS_PHY_30MHZ_OR_60MHZ 1 +#define DWC_DSTS_ENUMSPD_LS_PHY_6MHZ 2 +#define DWC_DSTS_ENUMSPD_FS_PHY_48MHZ 3 + /** Erratic Error */ + unsigned errticerr:1; + unsigned reserved4_7:4; + /** Frame or Microframe Number of the received SOF */ + unsigned soffn:14; + unsigned reserved22_31:10; + } b; +} dsts_data_t; + +/** + * This union represents the bit fields in the Device IN EP Interrupt + * Register and the Device IN EP Common Mask Register. + * + * - Read the register into the d32 member then set/clear the + * bits using the bit elements. + */ +typedef union diepint_data { + /** raw register data */ + uint32_t d32; + /** register bits */ + struct { + /** Transfer complete mask */ + unsigned xfercompl:1; + /** Endpoint disable mask */ + unsigned epdisabled:1; + /** AHB Error mask */ + unsigned ahberr:1; + /** TimeOUT Handshake mask (non-ISOC EPs) */ + unsigned timeout:1; + /** IN Token received with TxF Empty mask */ + unsigned intktxfemp:1; + /** IN Token Received with EP mismatch mask */ + unsigned intknepmis:1; + /** IN Endpoint NAK Effective mask */ + unsigned inepnakeff:1; + /** Reserved */ + unsigned emptyintr:1; + + unsigned txfifoundrn:1; + + /** BNA Interrupt mask */ + unsigned bna:1; + + unsigned reserved10_12:3; + /** BNA Interrupt mask */ + unsigned nak:1; + + unsigned reserved14_31:18; + } b; +} diepint_data_t; + +/** + * This union represents the bit fields in the Device IN EP + * Common/Dedicated Interrupt Mask Register. + */ +typedef union diepint_data diepmsk_data_t; + +/** + * This union represents the bit fields in the Device OUT EP Interrupt + * Registerand Device OUT EP Common Interrupt Mask Register. + * + * - Read the register into the d32 member then set/clear the + * bits using the bit elements. + */ +typedef union doepint_data { + /** raw register data */ + uint32_t d32; + /** register bits */ + struct { + /** Transfer complete */ + unsigned xfercompl:1; + /** Endpoint disable */ + unsigned epdisabled:1; + /** AHB Error */ + unsigned ahberr:1; + /** Setup Phase Done (contorl EPs) */ + unsigned setup:1; + /** OUT Token Received when Endpoint Disabled */ + unsigned outtknepdis:1; + + unsigned stsphsercvd:1; + /** Back-to-Back SETUP Packets Received */ + unsigned back2backsetup:1; + + unsigned reserved7:1; + /** OUT packet Error */ + unsigned outpkterr:1; + /** BNA Interrupt */ + unsigned bna:1; + + unsigned reserved10:1; + /** Packet Drop Status */ + unsigned pktdrpsts:1; + /** Babble Interrupt */ + unsigned babble:1; + /** NAK Interrupt */ + unsigned nak:1; + /** NYET Interrupt */ + unsigned nyet:1; + /** Bit indicating setup packet received */ + unsigned sr:1; + + unsigned reserved16_31:16; + } b; +} doepint_data_t; + +/** + * This union represents the bit fields in the Device OUT EP + * Common/Dedicated Interrupt Mask Register. + */ +typedef union doepint_data doepmsk_data_t; + +/** + * This union represents the bit fields in the Device All EP Interrupt + * and Mask Registers. + * - Read the register into the d32 member then set/clear the + * bits using the bit elements. + */ +typedef union daint_data { + /** raw register data */ + uint32_t d32; + /** register bits */ + struct { + /** IN Endpoint bits */ + unsigned in:16; + /** OUT Endpoint bits */ + unsigned out:16; + } ep; + struct { + /** IN Endpoint bits */ + unsigned inep0:1; + unsigned inep1:1; + unsigned inep2:1; + unsigned inep3:1; + unsigned inep4:1; + unsigned inep5:1; + unsigned inep6:1; + unsigned inep7:1; + unsigned inep8:1; + unsigned inep9:1; + unsigned inep10:1; + unsigned inep11:1; + unsigned inep12:1; + unsigned inep13:1; + unsigned inep14:1; + unsigned inep15:1; + /** OUT Endpoint bits */ + unsigned outep0:1; + unsigned outep1:1; + unsigned outep2:1; + unsigned outep3:1; + unsigned outep4:1; + unsigned outep5:1; + unsigned outep6:1; + unsigned outep7:1; + unsigned outep8:1; + unsigned outep9:1; + unsigned outep10:1; + unsigned outep11:1; + unsigned outep12:1; + unsigned outep13:1; + unsigned outep14:1; + unsigned outep15:1; + } b; +} daint_data_t; + +/** + * This union represents the bit fields in the Device IN Token Queue + * Read Registers. + * - Read the register into the d32 member. + * - READ-ONLY Register + */ +typedef union dtknq1_data { + /** raw register data */ + uint32_t d32; + /** register bits */ + struct { + /** In Token Queue Write Pointer */ + unsigned intknwptr:5; + /** Reserved */ + unsigned reserved05_06:2; + /** write pointer has wrapped. */ + unsigned wrap_bit:1; + /** EP Numbers of IN Tokens 0 ... 4 */ + unsigned epnums0_5:24; + } b; +} dtknq1_data_t; + +/** + * This union represents Threshold control Register + * - Read and write the register into the d32 member. + * - READ-WRITABLE Register + */ +typedef union dthrctl_data { + /** raw register data */ + uint32_t d32; + /** register bits */ + struct { + /** non ISO Tx Thr. Enable */ + unsigned non_iso_thr_en:1; + /** ISO Tx Thr. Enable */ + unsigned iso_thr_en:1; + /** Tx Thr. Length */ + unsigned tx_thr_len:9; + /** AHB Threshold ratio */ + unsigned ahb_thr_ratio:2; + /** Reserved */ + unsigned reserved13_15:3; + /** Rx Thr. Enable */ + unsigned rx_thr_en:1; + /** Rx Thr. Length */ + unsigned rx_thr_len:9; + unsigned reserved26:1; + /** Arbiter Parking Enable*/ + unsigned arbprken:1; + /** Reserved */ + unsigned reserved28_31:4; + } b; +} dthrctl_data_t; + +/** + * Device Logical IN Endpoint-Specific Registers. Offsets + * 900h-AFCh + * + * There will be one set of endpoint registers per logical endpoint + * implemented. + * + * These registers are visible only in Device mode and must not be + * accessed in Host mode, as the results are unknown. + */ +typedef struct dwc_otg_dev_in_ep_regs { + /** Device IN Endpoint Control Register. Offset:900h + + * (ep_num * 20h) + 00h */ + volatile uint32_t diepctl; + /** Reserved. Offset:900h + (ep_num * 20h) + 04h */ + uint32_t reserved04; + /** Device IN Endpoint Interrupt Register. Offset:900h + + * (ep_num * 20h) + 08h */ + volatile uint32_t diepint; + /** Reserved. Offset:900h + (ep_num * 20h) + 0Ch */ + uint32_t reserved0C; + /** Device IN Endpoint Transfer Size + * Register. Offset:900h + (ep_num * 20h) + 10h */ + volatile uint32_t dieptsiz; + /** Device IN Endpoint DMA Address Register. Offset:900h + + * (ep_num * 20h) + 14h */ + volatile uint32_t diepdma; + /** Device IN Endpoint Transmit FIFO Status Register. Offset:900h + + * (ep_num * 20h) + 18h */ + volatile uint32_t dtxfsts; + /** Device IN Endpoint DMA Buffer Register. Offset:900h + + * (ep_num * 20h) + 1Ch */ + volatile uint32_t diepdmab; +} dwc_otg_dev_in_ep_regs_t; + +/** + * Device Logical OUT Endpoint-Specific Registers. Offsets: + * B00h-CFCh + * + * There will be one set of endpoint registers per logical endpoint + * implemented. + * + * These registers are visible only in Device mode and must not be + * accessed in Host mode, as the results are unknown. + */ +typedef struct dwc_otg_dev_out_ep_regs { + /** Device OUT Endpoint Control Register. Offset:B00h + + * (ep_num * 20h) + 00h */ + volatile uint32_t doepctl; + /** Reserved. Offset:B00h + (ep_num * 20h) + 04h */ + uint32_t reserved04; + /** Device OUT Endpoint Interrupt Register. Offset:B00h + + * (ep_num * 20h) + 08h */ + volatile uint32_t doepint; + /** Reserved. Offset:B00h + (ep_num * 20h) + 0Ch */ + uint32_t reserved0C; + /** Device OUT Endpoint Transfer Size Register. Offset: + * B00h + (ep_num * 20h) + 10h */ + volatile uint32_t doeptsiz; + /** Device OUT Endpoint DMA Address Register. Offset:B00h + * + (ep_num * 20h) + 14h */ + volatile uint32_t doepdma; + /** Reserved. Offset:B00h + * (ep_num * 20h) + 18h */ + uint32_t unused; + /** Device OUT Endpoint DMA Buffer Register. Offset:B00h + * + (ep_num * 20h) + 1Ch */ + uint32_t doepdmab; +} dwc_otg_dev_out_ep_regs_t; + +/** + * This union represents the bit fields in the Device EP Control + * Register. Read the register into the d32 member then + * set/clear the bits using the bit elements. + */ +typedef union depctl_data { + /** raw register data */ + uint32_t d32; + /** register bits */ + struct { + /** Maximum Packet Size + * IN/OUT EPn + * IN/OUT EP0 - 2 bits + * 2'b00: 64 Bytes + * 2'b01: 32 + * 2'b10: 16 + * 2'b11: 8 */ + unsigned mps:11; +#define DWC_DEP0CTL_MPS_64 0 +#define DWC_DEP0CTL_MPS_32 1 +#define DWC_DEP0CTL_MPS_16 2 +#define DWC_DEP0CTL_MPS_8 3 + + /** Next Endpoint + * IN EPn/IN EP0 + * OUT EPn/OUT EP0 - reserved */ + unsigned nextep:4; + + /** USB Active Endpoint */ + unsigned usbactep:1; + + /** Endpoint DPID (INTR/Bulk IN and OUT endpoints) + * This field contains the PID of the packet going to + * be received or transmitted on this endpoint. The + * application should program the PID of the first + * packet going to be received or transmitted on this + * endpoint , after the endpoint is + * activated. Application use the SetD1PID and + * SetD0PID fields of this register to program either + * D0 or D1 PID. + * + * The encoding for this field is + * - 0: D0 + * - 1: D1 + */ + unsigned dpid:1; + + /** NAK Status */ + unsigned naksts:1; + + /** Endpoint Type + * 2'b00: Control + * 2'b01: Isochronous + * 2'b10: Bulk + * 2'b11: Interrupt */ + unsigned eptype:2; + + /** Snoop Mode + * OUT EPn/OUT EP0 + * IN EPn/IN EP0 - reserved */ + unsigned snp:1; + + /** Stall Handshake */ + unsigned stall:1; + + /** Tx Fifo Number + * IN EPn/IN EP0 + * OUT EPn/OUT EP0 - reserved */ + unsigned txfnum:4; + + /** Clear NAK */ + unsigned cnak:1; + /** Set NAK */ + unsigned snak:1; + /** Set DATA0 PID (INTR/Bulk IN and OUT endpoints) + * Writing to this field sets the Endpoint DPID (DPID) + * field in this register to DATA0. Set Even + * (micro)frame (SetEvenFr) (ISO IN and OUT Endpoints) + * Writing to this field sets the Even/Odd + * (micro)frame (EO_FrNum) field to even (micro) + * frame. + */ + unsigned setd0pid:1; + /** Set DATA1 PID (INTR/Bulk IN and OUT endpoints) + * Writing to this field sets the Endpoint DPID (DPID) + * field in this register to DATA1 Set Odd + * (micro)frame (SetOddFr) (ISO IN and OUT Endpoints) + * Writing to this field sets the Even/Odd + * (micro)frame (EO_FrNum) field to odd (micro) frame. + */ + unsigned setd1pid:1; + + /** Endpoint Disable */ + unsigned epdis:1; + /** Endpoint Enable */ + unsigned epena:1; + } b; +} depctl_data_t; + +/** + * This union represents the bit fields in the Device EP Transfer + * Size Register. Read the register into the d32 member then + * set/clear the bits using the bit elements. + */ +typedef union deptsiz_data { + /** raw register data */ + uint32_t d32; + /** register bits */ + struct { + /** Transfer size */ + unsigned xfersize:19; +/** Max packet count for EP (pow(2,10)-1) */ +#define MAX_PKT_CNT 1023 + /** Packet Count */ + unsigned pktcnt:10; + /** Multi Count - Periodic IN endpoints */ + unsigned mc:2; + unsigned reserved:1; + } b; +} deptsiz_data_t; + +/** + * This union represents the bit fields in the Device EP 0 Transfer + * Size Register. Read the register into the d32 member then + * set/clear the bits using the bit elements. + */ +typedef union deptsiz0_data { + /** raw register data */ + uint32_t d32; + /** register bits */ + struct { + /** Transfer size */ + unsigned xfersize:7; + /** Reserved */ + unsigned reserved7_18:12; + /** Packet Count */ + unsigned pktcnt:2; + /** Reserved */ + unsigned reserved21_28:8; + /**Setup Packet Count (DOEPTSIZ0 Only) */ + unsigned supcnt:2; + unsigned reserved31; + } b; +} deptsiz0_data_t; + +///////////////////////////////////////////////// +// DMA Descriptor Specific Structures +// + +/** Buffer status definitions */ + +#define BS_HOST_READY 0x0 +#define BS_DMA_BUSY 0x1 +#define BS_DMA_DONE 0x2 +#define BS_HOST_BUSY 0x3 + +/** Receive/Transmit status definitions */ + +#define RTS_SUCCESS 0x0 +#define RTS_BUFFLUSH 0x1 +#define RTS_RESERVED 0x2 +#define RTS_BUFERR 0x3 + +/** + * This union represents the bit fields in the DMA Descriptor + * status quadlet. Read the quadlet into the d32 member then + * set/clear the bits using the bit, b_iso_out and + * b_iso_in elements. + */ +typedef union dev_dma_desc_sts { + /** raw register data */ + uint32_t d32; + /** quadlet bits */ + struct { + /** Received number of bytes */ + unsigned bytes:16; + /** NAK bit - only for OUT EPs */ + unsigned nak:1; + unsigned reserved17_22:6; + /** Multiple Transfer - only for OUT EPs */ + unsigned mtrf:1; + /** Setup Packet received - only for OUT EPs */ + unsigned sr:1; + /** Interrupt On Complete */ + unsigned ioc:1; + /** Short Packet */ + unsigned sp:1; + /** Last */ + unsigned l:1; + /** Receive Status */ + unsigned sts:2; + /** Buffer Status */ + unsigned bs:2; + } b; + +//#ifdef DWC_EN_ISOC + /** iso out quadlet bits */ + struct { + /** Received number of bytes */ + unsigned rxbytes:11; + + unsigned reserved11:1; + /** Frame Number */ + unsigned framenum:11; + /** Received ISO Data PID */ + unsigned pid:2; + /** Interrupt On Complete */ + unsigned ioc:1; + /** Short Packet */ + unsigned sp:1; + /** Last */ + unsigned l:1; + /** Receive Status */ + unsigned rxsts:2; + /** Buffer Status */ + unsigned bs:2; + } b_iso_out; + + /** iso in quadlet bits */ + struct { + /** Transmited number of bytes */ + unsigned txbytes:12; + /** Frame Number */ + unsigned framenum:11; + /** Transmited ISO Data PID */ + unsigned pid:2; + /** Interrupt On Complete */ + unsigned ioc:1; + /** Short Packet */ + unsigned sp:1; + /** Last */ + unsigned l:1; + /** Transmit Status */ + unsigned txsts:2; + /** Buffer Status */ + unsigned bs:2; + } b_iso_in; +//#endif /* DWC_EN_ISOC */ +} dev_dma_desc_sts_t; + +/** + * DMA Descriptor structure + * + * DMA Descriptor structure contains two quadlets: + * Status quadlet and Data buffer pointer. + */ +typedef struct dwc_otg_dev_dma_desc { + /** DMA Descriptor status quadlet */ + dev_dma_desc_sts_t status; + /** DMA Descriptor data buffer pointer */ + uint32_t buf; +} dwc_otg_dev_dma_desc_t; + +/** + * The dwc_otg_dev_if structure contains information needed to manage + * the DWC_otg controller acting in device mode. It represents the + * programming view of the device-specific aspects of the controller. + */ +typedef struct dwc_otg_dev_if { + /** Pointer to device Global registers. + * Device Global Registers starting at offset 800h + */ + dwc_otg_device_global_regs_t *dev_global_regs; +#define DWC_DEV_GLOBAL_REG_OFFSET 0x800 + + /** + * Device Logical IN Endpoint-Specific Registers 900h-AFCh + */ + dwc_otg_dev_in_ep_regs_t *in_ep_regs[MAX_EPS_CHANNELS]; +#define DWC_DEV_IN_EP_REG_OFFSET 0x900 +#define DWC_EP_REG_OFFSET 0x20 + + /** Device Logical OUT Endpoint-Specific Registers B00h-CFCh */ + dwc_otg_dev_out_ep_regs_t *out_ep_regs[MAX_EPS_CHANNELS]; +#define DWC_DEV_OUT_EP_REG_OFFSET 0xB00 + + /* Device configuration information */ + uint8_t speed; /**< Device Speed 0: Unknown, 1: LS, 2:FS, 3: HS */ + uint8_t num_in_eps; /**< Number # of Tx EP range: 0-15 exept ep0 */ + uint8_t num_out_eps; /**< Number # of Rx EP range: 0-15 exept ep 0*/ + + /** Size of periodic FIFOs (Bytes) */ + uint16_t perio_tx_fifo_size[MAX_PERIO_FIFOS]; + + /** Size of Tx FIFOs (Bytes) */ + uint16_t tx_fifo_size[MAX_TX_FIFOS]; + + /** Thresholding enable flags and length varaiables **/ + uint16_t rx_thr_en; + uint16_t iso_tx_thr_en; + uint16_t non_iso_tx_thr_en; + + uint16_t rx_thr_length; + uint16_t tx_thr_length; + + /** + * Pointers to the DMA Descriptors for EP0 Control + * transfers (virtual and physical) + */ + + /** 2 descriptors for SETUP packets */ + dwc_dma_t dma_setup_desc_addr[2]; + dwc_otg_dev_dma_desc_t *setup_desc_addr[2]; + + /** Pointer to Descriptor with latest SETUP packet */ + dwc_otg_dev_dma_desc_t *psetup; + + /** Index of current SETUP handler descriptor */ + uint32_t setup_desc_index; + + /** Descriptor for Data In or Status In phases */ + dwc_dma_t dma_in_desc_addr; + dwc_otg_dev_dma_desc_t *in_desc_addr; + + /** Descriptor for Data Out or Status Out phases */ + dwc_dma_t dma_out_desc_addr; + dwc_otg_dev_dma_desc_t *out_desc_addr; + + /** Setup Packet Detected - if set clear NAK when queueing */ + uint32_t spd; + /** Isoc ep pointer on which incomplete happens */ + void *isoc_ep; + +} dwc_otg_dev_if_t; + +///////////////////////////////////////////////// +// Host Mode Register Structures +// +/** + * The Host Global Registers structure defines the size and relative + * field offsets for the Host Mode Global Registers. Host Global + * Registers offsets 400h-7FFh. +*/ +typedef struct dwc_otg_host_global_regs { + /** Host Configuration Register. Offset: 400h */ + volatile uint32_t hcfg; + /** Host Frame Interval Register. Offset: 404h */ + volatile uint32_t hfir; + /** Host Frame Number / Frame Remaining Register. Offset: 408h */ + volatile uint32_t hfnum; + /** Reserved. Offset: 40Ch */ + uint32_t reserved40C; + /** Host Periodic Transmit FIFO/ Queue Status Register. Offset: 410h */ + volatile uint32_t hptxsts; + /** Host All Channels Interrupt Register. Offset: 414h */ + volatile uint32_t haint; + /** Host All Channels Interrupt Mask Register. Offset: 418h */ + volatile uint32_t haintmsk; + /** Host Frame List Base Address Register . Offset: 41Ch */ + volatile uint32_t hflbaddr; +} dwc_otg_host_global_regs_t; + +/** + * This union represents the bit fields in the Host Configuration Register. + * Read the register into the d32 member then set/clear the bits using + * the bit elements. Write the d32 member to the hcfg register. + */ +typedef union hcfg_data { + /** raw register data */ + uint32_t d32; + + /** register bits */ + struct { + /** FS/LS Phy Clock Select */ + unsigned fslspclksel:2; +#define DWC_HCFG_30_60_MHZ 0 +#define DWC_HCFG_48_MHZ 1 +#define DWC_HCFG_6_MHZ 2 + + /** FS/LS Only Support */ + unsigned fslssupp:1; + unsigned reserved3_6:4; + /** Enable 32-KHz Suspend Mode */ + unsigned ena32khzs:1; + /** Resume Validation Periiod */ + unsigned resvalid:8; + unsigned reserved16_22:7; + /** Enable Scatter/gather DMA in Host mode */ + unsigned descdma:1; + /** Frame List Entries */ + unsigned frlisten:2; + /** Enable Periodic Scheduling */ + unsigned perschedena:1; + unsigned reserved27_30:4; + unsigned modechtimen:1; + } b; +} hcfg_data_t; + +/** + * This union represents the bit fields in the Host Frame Remaing/Number + * Register. + */ +typedef union hfir_data { + /** raw register data */ + uint32_t d32; + + /** register bits */ + struct { + unsigned frint:16; + unsigned hfirrldctrl:1; + unsigned reserved:15; + } b; +} hfir_data_t; + +/** + * This union represents the bit fields in the Host Frame Remaing/Number + * Register. + */ +typedef union hfnum_data { + /** raw register data */ + uint32_t d32; + + /** register bits */ + struct { + unsigned frnum:16; +#define DWC_HFNUM_MAX_FRNUM 0x3FFF + unsigned frrem:16; + } b; +} hfnum_data_t; + +typedef union hptxsts_data { + /** raw register data */ + uint32_t d32; + + /** register bits */ + struct { + unsigned ptxfspcavail:16; + unsigned ptxqspcavail:8; + /** Top of the Periodic Transmit Request Queue + * - bit 24 - Terminate (last entry for the selected channel) + * - bits 26:25 - Token Type + * - 2'b00 - Zero length + * - 2'b01 - Ping + * - 2'b10 - Disable + * - bits 30:27 - Channel Number + * - bit 31 - Odd/even microframe + */ + unsigned ptxqtop_terminate:1; + unsigned ptxqtop_token:2; + unsigned ptxqtop_chnum:4; + unsigned ptxqtop_odd:1; + } b; +} hptxsts_data_t; + +/** + * This union represents the bit fields in the Host Port Control and Status + * Register. Read the register into the d32 member then set/clear the + * bits using the bit elements. Write the d32 member to the + * hprt0 register. + */ +typedef union hprt0_data { + /** raw register data */ + uint32_t d32; + /** register bits */ + struct { + unsigned prtconnsts:1; + unsigned prtconndet:1; + unsigned prtena:1; + unsigned prtenchng:1; + unsigned prtovrcurract:1; + unsigned prtovrcurrchng:1; + unsigned prtres:1; + unsigned prtsusp:1; + unsigned prtrst:1; + unsigned reserved9:1; + unsigned prtlnsts:2; + unsigned prtpwr:1; + unsigned prttstctl:4; + unsigned prtspd:2; +#define DWC_HPRT0_PRTSPD_HIGH_SPEED 0 +#define DWC_HPRT0_PRTSPD_FULL_SPEED 1 +#define DWC_HPRT0_PRTSPD_LOW_SPEED 2 + unsigned reserved19_31:13; + } b; +} hprt0_data_t; + +/** + * This union represents the bit fields in the Host All Interrupt + * Register. + */ +typedef union haint_data { + /** raw register data */ + uint32_t d32; + /** register bits */ + struct { + unsigned ch0:1; + unsigned ch1:1; + unsigned ch2:1; + unsigned ch3:1; + unsigned ch4:1; + unsigned ch5:1; + unsigned ch6:1; + unsigned ch7:1; + unsigned ch8:1; + unsigned ch9:1; + unsigned ch10:1; + unsigned ch11:1; + unsigned ch12:1; + unsigned ch13:1; + unsigned ch14:1; + unsigned ch15:1; + unsigned reserved:16; + } b; + + struct { + unsigned chint:16; + unsigned reserved:16; + } b2; +} haint_data_t; + +/** + * This union represents the bit fields in the Host All Interrupt + * Register. + */ +typedef union haintmsk_data { + /** raw register data */ + uint32_t d32; + /** register bits */ + struct { + unsigned ch0:1; + unsigned ch1:1; + unsigned ch2:1; + unsigned ch3:1; + unsigned ch4:1; + unsigned ch5:1; + unsigned ch6:1; + unsigned ch7:1; + unsigned ch8:1; + unsigned ch9:1; + unsigned ch10:1; + unsigned ch11:1; + unsigned ch12:1; + unsigned ch13:1; + unsigned ch14:1; + unsigned ch15:1; + unsigned reserved:16; + } b; + + struct { + unsigned chint:16; + unsigned reserved:16; + } b2; +} haintmsk_data_t; + +/** + * Host Channel Specific Registers. 500h-5FCh + */ +typedef struct dwc_otg_hc_regs { + /** Host Channel 0 Characteristic Register. Offset: 500h + (chan_num * 20h) + 00h */ + volatile uint32_t hcchar; + /** Host Channel 0 Split Control Register. Offset: 500h + (chan_num * 20h) + 04h */ + volatile uint32_t hcsplt; + /** Host Channel 0 Interrupt Register. Offset: 500h + (chan_num * 20h) + 08h */ + volatile uint32_t hcint; + /** Host Channel 0 Interrupt Mask Register. Offset: 500h + (chan_num * 20h) + 0Ch */ + volatile uint32_t hcintmsk; + /** Host Channel 0 Transfer Size Register. Offset: 500h + (chan_num * 20h) + 10h */ + volatile uint32_t hctsiz; + /** Host Channel 0 DMA Address Register. Offset: 500h + (chan_num * 20h) + 14h */ + volatile uint32_t hcdma; + volatile uint32_t reserved; + /** Host Channel 0 DMA Buffer Address Register. Offset: 500h + (chan_num * 20h) + 1Ch */ + volatile uint32_t hcdmab; +} dwc_otg_hc_regs_t; + +/** + * This union represents the bit fields in the Host Channel Characteristics + * Register. Read the register into the d32 member then set/clear the + * bits using the bit elements. Write the d32 member to the + * hcchar register. + */ +typedef union hcchar_data { + /** raw register data */ + uint32_t d32; + + /** register bits */ + struct { + /** Maximum packet size in bytes */ + unsigned mps:11; + + /** Endpoint number */ + unsigned epnum:4; + + /** 0: OUT, 1: IN */ + unsigned epdir:1; + + unsigned reserved:1; + + /** 0: Full/high speed device, 1: Low speed device */ + unsigned lspddev:1; + + /** 0: Control, 1: Isoc, 2: Bulk, 3: Intr */ + unsigned eptype:2; + + /** Packets per frame for periodic transfers. 0 is reserved. */ + unsigned multicnt:2; + + /** Device address */ + unsigned devaddr:7; + + /** + * Frame to transmit periodic transaction. + * 0: even, 1: odd + */ + unsigned oddfrm:1; + + /** Channel disable */ + unsigned chdis:1; + + /** Channel enable */ + unsigned chen:1; + } b; +} hcchar_data_t; + +typedef union hcsplt_data { + /** raw register data */ + uint32_t d32; + + /** register bits */ + struct { + /** Port Address */ + unsigned prtaddr:7; + + /** Hub Address */ + unsigned hubaddr:7; + + /** Transaction Position */ + unsigned xactpos:2; +#define DWC_HCSPLIT_XACTPOS_MID 0 +#define DWC_HCSPLIT_XACTPOS_END 1 +#define DWC_HCSPLIT_XACTPOS_BEGIN 2 +#define DWC_HCSPLIT_XACTPOS_ALL 3 + + /** Do Complete Split */ + unsigned compsplt:1; + + /** Reserved */ + unsigned reserved:14; + + /** Split Enble */ + unsigned spltena:1; + } b; +} hcsplt_data_t; + +/** + * This union represents the bit fields in the Host All Interrupt + * Register. + */ +typedef union hcint_data { + /** raw register data */ + uint32_t d32; + /** register bits */ + struct { + /** Transfer Complete */ + unsigned xfercomp:1; + /** Channel Halted */ + unsigned chhltd:1; + /** AHB Error */ + unsigned ahberr:1; + /** STALL Response Received */ + unsigned stall:1; + /** NAK Response Received */ + unsigned nak:1; + /** ACK Response Received */ + unsigned ack:1; + /** NYET Response Received */ + unsigned nyet:1; + /** Transaction Err */ + unsigned xacterr:1; + /** Babble Error */ + unsigned bblerr:1; + /** Frame Overrun */ + unsigned frmovrun:1; + /** Data Toggle Error */ + unsigned datatglerr:1; + /** Buffer Not Available (only for DDMA mode) */ + unsigned bna:1; + /** Exessive transaction error (only for DDMA mode) */ + unsigned xcs_xact:1; + /** Frame List Rollover interrupt */ + unsigned frm_list_roll:1; + /** Reserved */ + unsigned reserved14_31:18; + } b; +} hcint_data_t; + +/** + * This union represents the bit fields in the Host Channel Interrupt Mask + * Register. Read the register into the d32 member then set/clear the + * bits using the bit elements. Write the d32 member to the + * hcintmsk register. + */ +typedef union hcintmsk_data { + /** raw register data */ + uint32_t d32; + + /** register bits */ + struct { + unsigned xfercompl:1; + unsigned chhltd:1; + unsigned ahberr:1; + unsigned stall:1; + unsigned nak:1; + unsigned ack:1; + unsigned nyet:1; + unsigned xacterr:1; + unsigned bblerr:1; + unsigned frmovrun:1; + unsigned datatglerr:1; + unsigned bna:1; + unsigned xcs_xact:1; + unsigned frm_list_roll:1; + unsigned reserved14_31:18; + } b; +} hcintmsk_data_t; + +/** + * This union represents the bit fields in the Host Channel Transfer Size + * Register. Read the register into the d32 member then set/clear the + * bits using the bit elements. Write the d32 member to the + * hcchar register. + */ + +typedef union hctsiz_data { + /** raw register data */ + uint32_t d32; + + /** register bits */ + struct { + /** Total transfer size in bytes */ + unsigned xfersize:19; + + /** Data packets to transfer */ + unsigned pktcnt:10; + + /** + * Packet ID for next data packet + * 0: DATA0 + * 1: DATA2 + * 2: DATA1 + * 3: MDATA (non-Control), SETUP (Control) + */ + unsigned pid:2; +#define DWC_HCTSIZ_DATA0 0 +#define DWC_HCTSIZ_DATA1 2 +#define DWC_HCTSIZ_DATA2 1 +#define DWC_HCTSIZ_MDATA 3 +#define DWC_HCTSIZ_SETUP 3 + + /** Do PING protocol when 1 */ + unsigned dopng:1; + } b; + + /** register bits */ + struct { + /** Scheduling information */ + unsigned schinfo:8; + + /** Number of transfer descriptors. + * Max value: + * 64 in general, + * 256 only for HS isochronous endpoint. + */ + unsigned ntd:8; + + /** Data packets to transfer */ + unsigned reserved16_28:13; + + /** + * Packet ID for next data packet + * 0: DATA0 + * 1: DATA2 + * 2: DATA1 + * 3: MDATA (non-Control) + */ + unsigned pid:2; + + /** Do PING protocol when 1 */ + unsigned dopng:1; + } b_ddma; +} hctsiz_data_t; + +/** + * This union represents the bit fields in the Host DMA Address + * Register used in Descriptor DMA mode. + */ +typedef union hcdma_data { + /** raw register data */ + uint32_t d32; + /** register bits */ + struct { + unsigned reserved0_2:3; + /** Current Transfer Descriptor. Not used for ISOC */ + unsigned ctd:8; + /** Start Address of Descriptor List */ + unsigned dma_addr:21; + } b; +} hcdma_data_t; + +/** + * This union represents the bit fields in the DMA Descriptor + * status quadlet for host mode. Read the quadlet into the d32 member then + * set/clear the bits using the bit elements. + */ +typedef union host_dma_desc_sts { + /** raw register data */ + uint32_t d32; + /** quadlet bits */ + + /* for non-isochronous */ + struct { + /** Number of bytes */ + unsigned n_bytes:17; + /** QTD offset to jump when Short Packet received - only for IN EPs */ + unsigned qtd_offset:6; + /** + * Set to request the core to jump to alternate QTD if + * Short Packet received - only for IN EPs + */ + unsigned a_qtd:1; + /** + * Setup Packet bit. When set indicates that buffer contains + * setup packet. + */ + unsigned sup:1; + /** Interrupt On Complete */ + unsigned ioc:1; + /** End of List */ + unsigned eol:1; + unsigned reserved27:1; + /** Rx/Tx Status */ + unsigned sts:2; +#define DMA_DESC_STS_PKTERR 1 + unsigned reserved30:1; + /** Active Bit */ + unsigned a:1; + } b; + /* for isochronous */ + struct { + /** Number of bytes */ + unsigned n_bytes:12; + unsigned reserved12_24:13; + /** Interrupt On Complete */ + unsigned ioc:1; + unsigned reserved26_27:2; + /** Rx/Tx Status */ + unsigned sts:2; + unsigned reserved30:1; + /** Active Bit */ + unsigned a:1; + } b_isoc; +} host_dma_desc_sts_t; + +#define MAX_DMA_DESC_SIZE 131071 +#define MAX_DMA_DESC_NUM_GENERIC 64 +#define MAX_DMA_DESC_NUM_HS_ISOC 256 +#define MAX_FRLIST_EN_NUM 64 +/** + * Host-mode DMA Descriptor structure + * + * DMA Descriptor structure contains two quadlets: + * Status quadlet and Data buffer pointer. + */ +typedef struct dwc_otg_host_dma_desc { + /** DMA Descriptor status quadlet */ + host_dma_desc_sts_t status; + /** DMA Descriptor data buffer pointer */ + uint32_t buf; +} dwc_otg_host_dma_desc_t; + +/** OTG Host Interface Structure. + * + * The OTG Host Interface Structure structure contains information + * needed to manage the DWC_otg controller acting in host mode. It + * represents the programming view of the host-specific aspects of the + * controller. + */ +typedef struct dwc_otg_host_if { + /** Host Global Registers starting at offset 400h.*/ + dwc_otg_host_global_regs_t *host_global_regs; +#define DWC_OTG_HOST_GLOBAL_REG_OFFSET 0x400 + + /** Host Port 0 Control and Status Register */ + volatile uint32_t *hprt0; +#define DWC_OTG_HOST_PORT_REGS_OFFSET 0x440 + + /** Host Channel Specific Registers at offsets 500h-5FCh. */ + dwc_otg_hc_regs_t *hc_regs[MAX_EPS_CHANNELS]; +#define DWC_OTG_HOST_CHAN_REGS_OFFSET 0x500 +#define DWC_OTG_CHAN_REGS_OFFSET 0x20 + + /* Host configuration information */ + /** Number of Host Channels (range: 1-16) */ + uint8_t num_host_channels; + /** Periodic EPs supported (0: no, 1: yes) */ + uint8_t perio_eps_supported; + /** Periodic Tx FIFO Size (Only 1 host periodic Tx FIFO) */ + uint16_t perio_tx_fifo_size; + +} dwc_otg_host_if_t; + +/** + * This union represents the bit fields in the Power and Clock Gating Control + * Register. Read the register into the d32 member then set/clear the + * bits using the bit elements. + */ +typedef union pcgcctl_data { + /** raw register data */ + uint32_t d32; + + /** register bits */ + struct { + /** Stop Pclk */ + unsigned stoppclk:1; + /** Gate Hclk */ + unsigned gatehclk:1; + /** Power Clamp */ + unsigned pwrclmp:1; + /** Reset Power Down Modules */ + unsigned rstpdwnmodule:1; + /** Reserved */ + unsigned reserved:1; + /** Enable Sleep Clock Gating (Enbl_L1Gating) */ + unsigned enbl_sleep_gating:1; + /** PHY In Sleep (PhySleep) */ + unsigned phy_in_sleep:1; + /** Deep Sleep*/ + unsigned deep_sleep:1; + unsigned resetaftsusp:1; + unsigned restoremode:1; + unsigned enbl_extnd_hiber:1; + unsigned extnd_hiber_pwrclmp:1; + unsigned extnd_hiber_switch:1; + unsigned ess_reg_restored:1; + unsigned prt_clk_sel:2; + unsigned port_power:1; + unsigned max_xcvrselect:2; + unsigned max_termsel:1; + unsigned mac_dev_addr:7; + unsigned p2hd_dev_enum_spd:2; + unsigned p2hd_prt_spd:2; + unsigned if_dev_mode:1; + } b; +} pcgcctl_data_t; + +/** + * This union represents the bit fields in the Global Data FIFO Software + * Configuration Register. Read the register into the d32 member then + * set/clear the bits using the bit elements. + */ +typedef union gdfifocfg_data { + /* raw register data */ + uint32_t d32; + /** register bits */ + struct { + /** OTG Data FIFO depth */ + unsigned gdfifocfg:16; + /** Start address of EP info controller */ + unsigned epinfobase:16; + } b; +} gdfifocfg_data_t; + +/** + * This union represents the bit fields in the Global Power Down Register + * Register. Read the register into the d32 member then set/clear the + * bits using the bit elements. + */ +typedef union gpwrdn_data { + /* raw register data */ + uint32_t d32; + + /** register bits */ + struct { + /** PMU Interrupt Select */ + unsigned pmuintsel:1; + /** PMU Active */ + unsigned pmuactv:1; + /** Restore */ + unsigned restore:1; + /** Power Down Clamp */ + unsigned pwrdnclmp:1; + /** Power Down Reset */ + unsigned pwrdnrstn:1; + /** Power Down Switch */ + unsigned pwrdnswtch:1; + /** Disable VBUS */ + unsigned dis_vbus:1; + /** Line State Change */ + unsigned lnstschng:1; + /** Line state change mask */ + unsigned lnstchng_msk:1; + /** Reset Detected */ + unsigned rst_det:1; + /** Reset Detect mask */ + unsigned rst_det_msk:1; + /** Disconnect Detected */ + unsigned disconn_det:1; + /** Disconnect Detect mask */ + unsigned disconn_det_msk:1; + /** Connect Detected*/ + unsigned connect_det:1; + /** Connect Detected Mask*/ + unsigned connect_det_msk:1; + /** SRP Detected */ + unsigned srp_det:1; + /** SRP Detect mask */ + unsigned srp_det_msk:1; + /** Status Change Interrupt */ + unsigned sts_chngint:1; + /** Status Change Interrupt Mask */ + unsigned sts_chngint_msk:1; + /** Line State */ + unsigned linestate:2; + /** Indicates current mode(status of IDDIG signal) */ + unsigned idsts:1; + /** B Session Valid signal status*/ + unsigned bsessvld:1; + /** ADP Event Detected */ + unsigned adp_int:1; + /** Multi Valued ID pin */ + unsigned mult_val_id_bc:5; + /** Reserved 24_31 */ + unsigned reserved29_31:3; + } b; +} gpwrdn_data_t; + +#endif --- linux-raspi2-4.2.0.orig/drivers/usb/host/dwc_otg/test/Makefile +++ linux-raspi2-4.2.0/drivers/usb/host/dwc_otg/test/Makefile @@ -0,0 +1,16 @@ + +PERL=/usr/bin/perl +PL_TESTS=test_sysfs.pl test_mod_param.pl + +.PHONY : test +test : perl_tests + +perl_tests : + @echo + @echo Running perl tests + @for test in $(PL_TESTS); do \ + if $(PERL) ./$$test ; then \ + echo "=======> $$test, PASSED" ; \ + else echo "=======> $$test, FAILED" ; \ + fi \ + done --- linux-raspi2-4.2.0.orig/drivers/usb/host/dwc_otg/test/dwc_otg_test.pm +++ linux-raspi2-4.2.0/drivers/usb/host/dwc_otg/test/dwc_otg_test.pm @@ -0,0 +1,337 @@ +package dwc_otg_test; + +use strict; +use Exporter (); + +use vars qw(@ISA @EXPORT +$sysfsdir $paramdir $errors $params +); + +@ISA = qw(Exporter); + +# +# Globals +# +$sysfsdir = "/sys/devices/lm0"; +$paramdir = "/sys/module/dwc_otg"; +$errors = 0; + +$params = [ + { + NAME => "otg_cap", + DEFAULT => 0, + ENUM => [], + LOW => 0, + HIGH => 2 + }, + { + NAME => "dma_enable", + DEFAULT => 0, + ENUM => [], + LOW => 0, + HIGH => 1 + }, + { + NAME => "dma_burst_size", + DEFAULT => 32, + ENUM => [1, 4, 8, 16, 32, 64, 128, 256], + LOW => 1, + HIGH => 256 + }, + { + NAME => "host_speed", + DEFAULT => 0, + ENUM => [], + LOW => 0, + HIGH => 1 + }, + { + NAME => "host_support_fs_ls_low_power", + DEFAULT => 0, + ENUM => [], + LOW => 0, + HIGH => 1 + }, + { + NAME => "host_ls_low_power_phy_clk", + DEFAULT => 0, + ENUM => [], + LOW => 0, + HIGH => 1 + }, + { + NAME => "dev_speed", + DEFAULT => 0, + ENUM => [], + LOW => 0, + HIGH => 1 + }, + { + NAME => "enable_dynamic_fifo", + DEFAULT => 1, + ENUM => [], + LOW => 0, + HIGH => 1 + }, + { + NAME => "data_fifo_size", + DEFAULT => 8192, + ENUM => [], + LOW => 32, + HIGH => 32768 + }, + { + NAME => "dev_rx_fifo_size", + DEFAULT => 1064, + ENUM => [], + LOW => 16, + HIGH => 32768 + }, + { + NAME => "dev_nperio_tx_fifo_size", + DEFAULT => 1024, + ENUM => [], + LOW => 16, + HIGH => 32768 + }, + { + NAME => "dev_perio_tx_fifo_size_1", + DEFAULT => 256, + ENUM => [], + LOW => 4, + HIGH => 768 + }, + { + NAME => "dev_perio_tx_fifo_size_2", + DEFAULT => 256, + ENUM => [], + LOW => 4, + HIGH => 768 + }, + { + NAME => "dev_perio_tx_fifo_size_3", + DEFAULT => 256, + ENUM => [], + LOW => 4, + HIGH => 768 + }, + { + NAME => "dev_perio_tx_fifo_size_4", + DEFAULT => 256, + ENUM => [], + LOW => 4, + HIGH => 768 + }, + { + NAME => "dev_perio_tx_fifo_size_5", + DEFAULT => 256, + ENUM => [], + LOW => 4, + HIGH => 768 + }, + { + NAME => "dev_perio_tx_fifo_size_6", + DEFAULT => 256, + ENUM => [], + LOW => 4, + HIGH => 768 + }, + { + NAME => "dev_perio_tx_fifo_size_7", + DEFAULT => 256, + ENUM => [], + LOW => 4, + HIGH => 768 + }, + { + NAME => "dev_perio_tx_fifo_size_8", + DEFAULT => 256, + ENUM => [], + LOW => 4, + HIGH => 768 + }, + { + NAME => "dev_perio_tx_fifo_size_9", + DEFAULT => 256, + ENUM => [], + LOW => 4, + HIGH => 768 + }, + { + NAME => "dev_perio_tx_fifo_size_10", + DEFAULT => 256, + ENUM => [], + LOW => 4, + HIGH => 768 + }, + { + NAME => "dev_perio_tx_fifo_size_11", + DEFAULT => 256, + ENUM => [], + LOW => 4, + HIGH => 768 + }, + { + NAME => "dev_perio_tx_fifo_size_12", + DEFAULT => 256, + ENUM => [], + LOW => 4, + HIGH => 768 + }, + { + NAME => "dev_perio_tx_fifo_size_13", + DEFAULT => 256, + ENUM => [], + LOW => 4, + HIGH => 768 + }, + { + NAME => "dev_perio_tx_fifo_size_14", + DEFAULT => 256, + ENUM => [], + LOW => 4, + HIGH => 768 + }, + { + NAME => "dev_perio_tx_fifo_size_15", + DEFAULT => 256, + ENUM => [], + LOW => 4, + HIGH => 768 + }, + { + NAME => "host_rx_fifo_size", + DEFAULT => 1024, + ENUM => [], + LOW => 16, + HIGH => 32768 + }, + { + NAME => "host_nperio_tx_fifo_size", + DEFAULT => 1024, + ENUM => [], + LOW => 16, + HIGH => 32768 + }, + { + NAME => "host_perio_tx_fifo_size", + DEFAULT => 1024, + ENUM => [], + LOW => 16, + HIGH => 32768 + }, + { + NAME => "max_transfer_size", + DEFAULT => 65535, + ENUM => [], + LOW => 2047, + HIGH => 65535 + }, + { + NAME => "max_packet_count", + DEFAULT => 511, + ENUM => [], + LOW => 15, + HIGH => 511 + }, + { + NAME => "host_channels", + DEFAULT => 12, + ENUM => [], + LOW => 1, + HIGH => 16 + }, + { + NAME => "dev_endpoints", + DEFAULT => 6, + ENUM => [], + LOW => 1, + HIGH => 15 + }, + { + NAME => "phy_type", + DEFAULT => 1, + ENUM => [], + LOW => 0, + HIGH => 2 + }, + { + NAME => "phy_utmi_width", + DEFAULT => 16, + ENUM => [8, 16], + LOW => 8, + HIGH => 16 + }, + { + NAME => "phy_ulpi_ddr", + DEFAULT => 0, + ENUM => [], + LOW => 0, + HIGH => 1 + }, + ]; + + +# +# +sub check_arch { + $_ = `uname -m`; + chomp; + unless (m/armv4tl/) { + warn "# \n# Can't execute on $_. Run on integrator platform.\n# \n"; + return 0; + } + return 1; +} + +# +# +sub load_module { + my $params = shift; + print "\nRemoving Module\n"; + system "rmmod dwc_otg"; + print "Loading Module\n"; + if ($params ne "") { + print "Module Parameters: $params\n"; + } + if (system("modprobe dwc_otg $params")) { + warn "Unable to load module\n"; + return 0; + } + return 1; +} + +# +# +sub test_status { + my $arg = shift; + + print "\n"; + + if (defined $arg) { + warn "WARNING: $arg\n"; + } + + if ($errors > 0) { + warn "TEST FAILED with $errors errors\n"; + return 0; + } else { + print "TEST PASSED\n"; + return 0 if (defined $arg); + } + return 1; +} + +# +# +@EXPORT = qw( +$sysfsdir +$paramdir +$params +$errors +check_arch +load_module +test_status +); + +1; --- linux-raspi2-4.2.0.orig/drivers/usb/host/dwc_otg/test/test_mod_param.pl +++ linux-raspi2-4.2.0/drivers/usb/host/dwc_otg/test/test_mod_param.pl @@ -0,0 +1,133 @@ +#!/usr/bin/perl -w +# +# Run this program on the integrator. +# +# - Tests module parameter default values. +# - Tests setting of valid module parameter values via modprobe. +# - Tests invalid module parameter values. +# ----------------------------------------------------------------------------- +use strict; +use dwc_otg_test; + +check_arch() or die; + +# +# +sub test { + my ($param,$expected) = @_; + my $value = get($param); + + if ($value == $expected) { + print "$param = $value, okay\n"; + } + + else { + warn "ERROR: value of $param != $expected, $value\n"; + $errors ++; + } +} + +# +# +sub get { + my $param = shift; + my $tmp = `cat $paramdir/$param`; + chomp $tmp; + return $tmp; +} + +# +# +sub test_main { + + print "\nTesting Module Parameters\n"; + + load_module("") or die; + + # Test initial values + print "\nTesting Default Values\n"; + foreach (@{$params}) { + test ($_->{NAME}, $_->{DEFAULT}); + } + + # Test low value + print "\nTesting Low Value\n"; + my $cmd_params = ""; + foreach (@{$params}) { + $cmd_params = $cmd_params . "$_->{NAME}=$_->{LOW} "; + } + load_module($cmd_params) or die; + + foreach (@{$params}) { + test ($_->{NAME}, $_->{LOW}); + } + + # Test high value + print "\nTesting High Value\n"; + $cmd_params = ""; + foreach (@{$params}) { + $cmd_params = $cmd_params . "$_->{NAME}=$_->{HIGH} "; + } + load_module($cmd_params) or die; + + foreach (@{$params}) { + test ($_->{NAME}, $_->{HIGH}); + } + + # Test Enum + print "\nTesting Enumerated\n"; + foreach (@{$params}) { + if (defined $_->{ENUM}) { + my $value; + foreach $value (@{$_->{ENUM}}) { + $cmd_params = "$_->{NAME}=$value"; + load_module($cmd_params) or die; + test ($_->{NAME}, $value); + } + } + } + + # Test Invalid Values + print "\nTesting Invalid Values\n"; + $cmd_params = ""; + foreach (@{$params}) { + $cmd_params = $cmd_params . sprintf "$_->{NAME}=%d ", $_->{LOW}-1; + } + load_module($cmd_params) or die; + + foreach (@{$params}) { + test ($_->{NAME}, $_->{DEFAULT}); + } + + $cmd_params = ""; + foreach (@{$params}) { + $cmd_params = $cmd_params . sprintf "$_->{NAME}=%d ", $_->{HIGH}+1; + } + load_module($cmd_params) or die; + + foreach (@{$params}) { + test ($_->{NAME}, $_->{DEFAULT}); + } + + print "\nTesting Enumerated\n"; + foreach (@{$params}) { + if (defined $_->{ENUM}) { + my $value; + foreach $value (@{$_->{ENUM}}) { + $value = $value + 1; + $cmd_params = "$_->{NAME}=$value"; + load_module($cmd_params) or die; + test ($_->{NAME}, $_->{DEFAULT}); + $value = $value - 2; + $cmd_params = "$_->{NAME}=$value"; + load_module($cmd_params) or die; + test ($_->{NAME}, $_->{DEFAULT}); + } + } + } + + test_status() or die; +} + +test_main(); +0; --- linux-raspi2-4.2.0.orig/drivers/usb/host/dwc_otg/test/test_sysfs.pl +++ linux-raspi2-4.2.0/drivers/usb/host/dwc_otg/test/test_sysfs.pl @@ -0,0 +1,193 @@ +#!/usr/bin/perl -w +# +# Run this program on the integrator +# - Tests select sysfs attributes. +# - Todo ... test more attributes, hnp/srp, buspower/bussuspend, etc. +# ----------------------------------------------------------------------------- +use strict; +use dwc_otg_test; + +check_arch() or die; + +# +# +sub test { + my ($attr,$expected) = @_; + my $string = get($attr); + + if ($string eq $expected) { + printf("$attr = $string, okay\n"); + } + else { + warn "ERROR: value of $attr != $expected, $string\n"; + $errors ++; + } +} + +# +# +sub set { + my ($reg, $value) = @_; + system "echo $value > $sysfsdir/$reg"; +} + +# +# +sub get { + my $attr = shift; + my $string = `cat $sysfsdir/$attr`; + chomp $string; + if ($string =~ m/\s\=\s/) { + my $tmp; + ($tmp, $string) = split /\s=\s/, $string; + } + return $string; +} + +# +# +sub test_main { + print("\nTesting Sysfs Attributes\n"); + + load_module("") or die; + + # Test initial values of regoffset/regvalue/guid/gsnpsid + print("\nTesting Default Values\n"); + + test("regoffset", "0xffffffff"); + test("regvalue", "invalid offset"); + test("guid", "0x12345678"); # this will fail if it has been changed + test("gsnpsid", "0x4f54200a"); + + # Test operation of regoffset/regvalue + print("\nTesting regoffset\n"); + set('regoffset', '5a5a5a5a'); + test("regoffset", "0xffffffff"); + + set('regoffset', '0'); + test("regoffset", "0x00000000"); + + set('regoffset', '40000'); + test("regoffset", "0x00000000"); + + set('regoffset', '3ffff'); + test("regoffset", "0x0003ffff"); + + set('regoffset', '1'); + test("regoffset", "0x00000001"); + + print("\nTesting regvalue\n"); + set('regoffset', '3c'); + test("regvalue", "0x12345678"); + set('regvalue', '5a5a5a5a'); + test("regvalue", "0x5a5a5a5a"); + set('regvalue','a5a5a5a5'); + test("regvalue", "0xa5a5a5a5"); + set('guid','12345678'); + + # Test HNP Capable + print("\nTesting HNP Capable bit\n"); + set('hnpcapable', '1'); + test("hnpcapable", "0x1"); + set('hnpcapable','0'); + test("hnpcapable", "0x0"); + + set('regoffset','0c'); + + my $old = get('gusbcfg'); + print("setting hnpcapable\n"); + set('hnpcapable', '1'); + test("hnpcapable", "0x1"); + test('gusbcfg', sprintf "0x%08x", (oct ($old) | (1<<9))); + test('regvalue', sprintf "0x%08x", (oct ($old) | (1<<9))); + + $old = get('gusbcfg'); + print("clearing hnpcapable\n"); + set('hnpcapable', '0'); + test("hnpcapable", "0x0"); + test ('gusbcfg', sprintf "0x%08x", oct ($old) & (~(1<<9))); + test ('regvalue', sprintf "0x%08x", oct ($old) & (~(1<<9))); + + # Test SRP Capable + print("\nTesting SRP Capable bit\n"); + set('srpcapable', '1'); + test("srpcapable", "0x1"); + set('srpcapable','0'); + test("srpcapable", "0x0"); + + set('regoffset','0c'); + + $old = get('gusbcfg'); + print("setting srpcapable\n"); + set('srpcapable', '1'); + test("srpcapable", "0x1"); + test('gusbcfg', sprintf "0x%08x", (oct ($old) | (1<<8))); + test('regvalue', sprintf "0x%08x", (oct ($old) | (1<<8))); + + $old = get('gusbcfg'); + print("clearing srpcapable\n"); + set('srpcapable', '0'); + test("srpcapable", "0x0"); + test('gusbcfg', sprintf "0x%08x", oct ($old) & (~(1<<8))); + test('regvalue', sprintf "0x%08x", oct ($old) & (~(1<<8))); + + # Test GGPIO + print("\nTesting GGPIO\n"); + set('ggpio','5a5a5a5a'); + test('ggpio','0x5a5a0000'); + set('ggpio','a5a5a5a5'); + test('ggpio','0xa5a50000'); + set('ggpio','11110000'); + test('ggpio','0x11110000'); + set('ggpio','00001111'); + test('ggpio','0x00000000'); + + # Test DEVSPEED + print("\nTesting DEVSPEED\n"); + set('regoffset','800'); + $old = get('regvalue'); + set('devspeed','0'); + test('devspeed','0x0'); + test('regvalue',sprintf("0x%08x", oct($old) & ~(0x3))); + set('devspeed','1'); + test('devspeed','0x1'); + test('regvalue',sprintf("0x%08x", oct($old) & ~(0x3) | 1)); + set('devspeed','2'); + test('devspeed','0x2'); + test('regvalue',sprintf("0x%08x", oct($old) & ~(0x3) | 2)); + set('devspeed','3'); + test('devspeed','0x3'); + test('regvalue',sprintf("0x%08x", oct($old) & ~(0x3) | 3)); + set('devspeed','4'); + test('devspeed','0x0'); + test('regvalue',sprintf("0x%08x", oct($old) & ~(0x3))); + set('devspeed','5'); + test('devspeed','0x1'); + test('regvalue',sprintf("0x%08x", oct($old) & ~(0x3) | 1)); + + + # mode Returns the current mode:0 for device mode1 for host mode Read + # hnp Initiate the Host Negotiation Protocol. Read returns the status. Read/Write + # srp Initiate the Session Request Protocol. Read returns the status. Read/Write + # buspower Get or Set the Power State of the bus (0 - Off or 1 - On) Read/Write + # bussuspend Suspend the USB bus. Read/Write + # busconnected Get the connection status of the bus Read + + # gotgctl Get or set the Core Control Status Register. Read/Write + ## gusbcfg Get or set the Core USB Configuration Register Read/Write + # grxfsiz Get or set the Receive FIFO Size Register Read/Write + # gnptxfsiz Get or set the non-periodic Transmit Size Register Read/Write + # gpvndctl Get or set the PHY Vendor Control Register Read/Write + ## ggpio Get the value in the lower 16-bits of the General Purpose IO Register or Set the upper 16 bits. Read/Write + ## guid Get or set the value of the User ID Register Read/Write + ## gsnpsid Get the value of the Synopsys ID Regester Read + ## devspeed Get or set the device speed setting in the DCFG register Read/Write + # enumspeed Gets the device enumeration Speed. Read + # hptxfsiz Get the value of the Host Periodic Transmit FIFO Read + # hprt0 Get or Set the value in the Host Port Control and Status Register Read/Write + + test_status("TEST NYI") or die; +} + +test_main(); +0; --- linux-raspi2-4.2.0.orig/drivers/usb/host/ehci-fsl.c +++ linux-raspi2-4.2.0/drivers/usb/host/ehci-fsl.c @@ -129,6 +129,15 @@ if (pdata->have_sysif_regs && pdata->controller_ver < FSL_USB_VER_1_6) setbits32(hcd->regs + FSL_SOC_USB_CTRL, 0x4); + /* + * Enable UTMI phy and program PTS field in UTMI mode before asserting + * controller reset for USB Controller version 2.5 + */ + if (pdata->has_fsl_erratum_a007792) { + writel_be(CTRL_UTMI_PHY_EN, hcd->regs + FSL_SOC_USB_CTRL); + writel(PORT_PTS_UTMI, hcd->regs + FSL_SOC_USB_PORTSC1); + } + /* Don't need to set host mode here. It will be done by tdi_reset() */ retval = usb_add_hcd(hcd, irq, IRQF_SHARED); @@ -261,6 +270,10 @@ out_be32(non_ehci + FSL_SOC_USB_SNOOP2, 0x80000000 | SNOOP_SIZE_2GB); } + /* Deal with USB erratum A-005275 */ + if (pdata->has_fsl_erratum_a005275 == 1) + ehci->has_fsl_hs_errata = 1; + if ((pdata->operating_mode == FSL_USB2_DR_HOST) || (pdata->operating_mode == FSL_USB2_DR_OTG)) if (ehci_fsl_setup_phy(hcd, pdata->phy_mode, 0)) --- linux-raspi2-4.2.0.orig/drivers/usb/host/ehci-hub.c +++ linux-raspi2-4.2.0/drivers/usb/host/ehci-hub.c @@ -1221,6 +1221,13 @@ */ ehci->reset_done [wIndex] = jiffies + msecs_to_jiffies (50); + + /* + * Force full-speed connect for FSL high-speed + * erratum; disable HS Chirp by setting PFSC bit + */ + if (ehci_has_fsl_hs_errata(ehci)) + temp |= (1 << PORTSC_FSL_PFSC); } ehci_writel(ehci, temp, status_reg); break; --- linux-raspi2-4.2.0.orig/drivers/usb/host/ehci-orion.c +++ linux-raspi2-4.2.0/drivers/usb/host/ehci-orion.c @@ -224,7 +224,8 @@ priv->phy = devm_phy_optional_get(&pdev->dev, "usb"); if (IS_ERR(priv->phy)) { err = PTR_ERR(priv->phy); - goto err_phy_get; + if (err != -ENOSYS) + goto err_phy_get; } else { err = phy_init(priv->phy); if (err) --- linux-raspi2-4.2.0.orig/drivers/usb/host/ehci-sysfs.c +++ linux-raspi2-4.2.0/drivers/usb/host/ehci-sysfs.c @@ -29,7 +29,7 @@ int count = PAGE_SIZE; char *ptr = buf; - ehci = hcd_to_ehci(bus_to_hcd(dev_get_drvdata(dev))); + ehci = hcd_to_ehci(dev_get_drvdata(dev)); nports = HCS_N_PORTS(ehci->hcs_params); for (index = 0; index < nports; ++index) { @@ -54,7 +54,7 @@ struct ehci_hcd *ehci; int portnum, new_owner; - ehci = hcd_to_ehci(bus_to_hcd(dev_get_drvdata(dev))); + ehci = hcd_to_ehci(dev_get_drvdata(dev)); new_owner = PORT_OWNER; /* Owned by companion */ if (sscanf(buf, "%d", &portnum) != 1) return -EINVAL; @@ -85,7 +85,7 @@ struct ehci_hcd *ehci; int n; - ehci = hcd_to_ehci(bus_to_hcd(dev_get_drvdata(dev))); + ehci = hcd_to_ehci(dev_get_drvdata(dev)); n = scnprintf(buf, PAGE_SIZE, "%d\n", ehci->uframe_periodic_max); return n; } @@ -101,7 +101,7 @@ unsigned long flags; ssize_t ret; - ehci = hcd_to_ehci(bus_to_hcd(dev_get_drvdata(dev))); + ehci = hcd_to_ehci(dev_get_drvdata(dev)); if (kstrtouint(buf, 0, &uframe_periodic_max) < 0) return -EINVAL; --- linux-raspi2-4.2.0.orig/drivers/usb/host/ehci.h +++ linux-raspi2-4.2.0/drivers/usb/host/ehci.h @@ -215,6 +215,7 @@ /* SILICON QUIRKS */ unsigned no_selective_suspend:1; unsigned has_fsl_port_bug:1; /* FreeScale */ + unsigned has_fsl_hs_errata:1; /* Freescale HS quirk */ unsigned big_endian_mmio:1; unsigned big_endian_desc:1; unsigned big_endian_capbase:1; @@ -686,6 +687,17 @@ #define ehci_has_fsl_portno_bug(e) (0) #endif +#define PORTSC_FSL_PFSC 24 /* Port Force Full-Speed Connect */ + +#if defined(CONFIG_PPC_85xx) +/* Some Freescale processors have an erratum (USB A-005275) in which + * incoming packets get corrupted in HS mode + */ +#define ehci_has_fsl_hs_errata(e) ((e)->has_fsl_hs_errata) +#else +#define ehci_has_fsl_hs_errata(e) (0) +#endif + /* * While most USB host controllers implement their registers in * little-endian format, a minority (celleb companion chip) implement --- linux-raspi2-4.2.0.orig/drivers/usb/host/fsl-mph-dr-of.c +++ linux-raspi2-4.2.0/drivers/usb/host/fsl-mph-dr-of.c @@ -214,6 +214,16 @@ pdata->phy_mode = determine_usb_phy(prop); pdata->controller_ver = usb_get_ver_info(np); + /* Activate Erratum by reading property in device tree */ + if (of_get_property(np, "fsl,usb-erratum-a007792", NULL)) + pdata->has_fsl_erratum_a007792 = 1; + else + pdata->has_fsl_erratum_a007792 = 0; + if (of_get_property(np, "fsl,usb-erratum-a005275", NULL)) + pdata->has_fsl_erratum_a005275 = 1; + else + pdata->has_fsl_erratum_a005275 = 0; + if (pdata->have_sysif_regs) { if (pdata->controller_ver < 0) { dev_warn(&ofdev->dev, "Could not get controller version\n"); --- linux-raspi2-4.2.0.orig/drivers/usb/host/xhci-mem.c +++ linux-raspi2-4.2.0/drivers/usb/host/xhci-mem.c @@ -1498,10 +1498,10 @@ * use Event Data TRBs, and we don't chain in a link TRB on short * transfers, we're basically dividing by 1. * - * xHCI 1.0 specification indicates that the Average TRB Length should - * be set to 8 for control endpoints. + * xHCI 1.0 and 1.1 specification indicates that the Average TRB Length + * should be set to 8 for control endpoints. */ - if (usb_endpoint_xfer_control(&ep->desc) && xhci->hci_version == 0x100) + if (usb_endpoint_xfer_control(&ep->desc) && xhci->hci_version >= 0x100) ep_ctx->tx_info |= cpu_to_le32(AVG_TRB_LENGTH_FOR_EP(8)); else ep_ctx->tx_info |= @@ -1792,8 +1792,7 @@ int size; int i, j, num_ports; - if (timer_pending(&xhci->cmd_timer)) - del_timer_sync(&xhci->cmd_timer); + del_timer_sync(&xhci->cmd_timer); /* Free the Event Ring Segment Table and the actual Event Ring */ size = sizeof(struct xhci_erst_entry)*(xhci->erst.num_entries); @@ -2321,6 +2320,10 @@ INIT_LIST_HEAD(&xhci->cmd_list); + /* init command timeout timer */ + setup_timer(&xhci->cmd_timer, xhci_handle_command_timeout, + (unsigned long)xhci); + page_size = readl(&xhci->op_regs->page_size); xhci_dbg_trace(xhci, trace_xhci_dbg_init, "Supported page size register = 0x%x", page_size); @@ -2505,10 +2508,6 @@ "Wrote ERST address to ir_set 0."); xhci_print_ir_set(xhci, 0); - /* init command timeout timer */ - setup_timer(&xhci->cmd_timer, xhci_handle_command_timeout, - (unsigned long)xhci); - /* * XXX: Might need to set the Interrupter Moderation Register to * something other than the default (~1ms minimum between interrupts). --- linux-raspi2-4.2.0.orig/drivers/usb/host/xhci-pci.c +++ linux-raspi2-4.2.0/drivers/usb/host/xhci-pci.c @@ -147,6 +147,7 @@ if (pdev->vendor == PCI_VENDOR_ID_INTEL && pdev->device == PCI_DEVICE_ID_INTEL_LYNXPOINT_LP_XHCI) { xhci->quirks |= XHCI_SPURIOUS_REBOOT; + xhci->quirks |= XHCI_SPURIOUS_WAKEUP; } if (pdev->vendor == PCI_VENDOR_ID_INTEL && (pdev->device == PCI_DEVICE_ID_INTEL_SUNRISEPOINT_LP_XHCI || @@ -180,51 +181,6 @@ "QUIRK: Resetting on resume"); } -/* - * In some Intel xHCI controllers, in order to get D3 working, - * through a vendor specific SSIC CONFIG register at offset 0x883c, - * SSIC PORT need to be marked as "unused" before putting xHCI - * into D3. After D3 exit, the SSIC port need to be marked as "used". - * Without this change, xHCI might not enter D3 state. - * Make sure PME works on some Intel xHCI controllers by writing 1 to clear - * the Internal PME flag bit in vendor specific PMCTRL register at offset 0x80a4 - */ -static void xhci_pme_quirk(struct usb_hcd *hcd, bool suspend) -{ - struct xhci_hcd *xhci = hcd_to_xhci(hcd); - struct pci_dev *pdev = to_pci_dev(hcd->self.controller); - u32 val; - void __iomem *reg; - - if (pdev->vendor == PCI_VENDOR_ID_INTEL && - pdev->device == PCI_DEVICE_ID_INTEL_CHERRYVIEW_XHCI) { - - reg = (void __iomem *) xhci->cap_regs + PORT2_SSIC_CONFIG_REG2; - - /* Notify SSIC that SSIC profile programming is not done */ - val = readl(reg) & ~PROG_DONE; - writel(val, reg); - - /* Mark SSIC port as unused(suspend) or used(resume) */ - val = readl(reg); - if (suspend) - val |= SSIC_PORT_UNUSED; - else - val &= ~SSIC_PORT_UNUSED; - writel(val, reg); - - /* Notify SSIC that SSIC profile programming is done */ - val = readl(reg) | PROG_DONE; - writel(val, reg); - readl(reg); - } - - reg = (void __iomem *) xhci->cap_regs + 0x80a4; - val = readl(reg); - writel(val | BIT(28), reg); - readl(reg); -} - #ifdef CONFIG_ACPI static void xhci_pme_acpi_rtd3_enable(struct pci_dev *dev) { @@ -345,6 +301,51 @@ } #ifdef CONFIG_PM +/* + * In some Intel xHCI controllers, in order to get D3 working, + * through a vendor specific SSIC CONFIG register at offset 0x883c, + * SSIC PORT need to be marked as "unused" before putting xHCI + * into D3. After D3 exit, the SSIC port need to be marked as "used". + * Without this change, xHCI might not enter D3 state. + * Make sure PME works on some Intel xHCI controllers by writing 1 to clear + * the Internal PME flag bit in vendor specific PMCTRL register at offset 0x80a4 + */ +static void xhci_pme_quirk(struct usb_hcd *hcd, bool suspend) +{ + struct xhci_hcd *xhci = hcd_to_xhci(hcd); + struct pci_dev *pdev = to_pci_dev(hcd->self.controller); + u32 val; + void __iomem *reg; + + if (pdev->vendor == PCI_VENDOR_ID_INTEL && + pdev->device == PCI_DEVICE_ID_INTEL_CHERRYVIEW_XHCI) { + + reg = (void __iomem *) xhci->cap_regs + PORT2_SSIC_CONFIG_REG2; + + /* Notify SSIC that SSIC profile programming is not done */ + val = readl(reg) & ~PROG_DONE; + writel(val, reg); + + /* Mark SSIC port as unused(suspend) or used(resume) */ + val = readl(reg); + if (suspend) + val |= SSIC_PORT_UNUSED; + else + val &= ~SSIC_PORT_UNUSED; + writel(val, reg); + + /* Notify SSIC that SSIC profile programming is done */ + val = readl(reg) | PROG_DONE; + writel(val, reg); + readl(reg); + } + + reg = (void __iomem *) xhci->cap_regs + 0x80a4; + val = readl(reg); + writel(val | BIT(28), reg); + readl(reg); +} + static int xhci_pci_suspend(struct usb_hcd *hcd, bool do_wakeup) { struct xhci_hcd *xhci = hcd_to_xhci(hcd); --- linux-raspi2-4.2.0.orig/drivers/usb/host/xhci-ring.c +++ linux-raspi2-4.2.0/drivers/usb/host/xhci-ring.c @@ -302,6 +302,15 @@ ret = xhci_handshake(&xhci->op_regs->cmd_ring, CMD_RING_RUNNING, 0, 5 * 1000 * 1000); if (ret < 0) { + /* we are about to kill xhci, give it one more chance */ + xhci_write_64(xhci, temp_64 | CMD_RING_ABORT, + &xhci->op_regs->cmd_ring); + udelay(1000); + ret = xhci_handshake(&xhci->op_regs->cmd_ring, + CMD_RING_RUNNING, 0, 3 * 1000 * 1000); + if (ret == 0) + return 0; + xhci_err(xhci, "Stopped the command ring failed, " "maybe the host is dead\n"); xhci->xhc_state |= XHCI_STATE_DYING; @@ -2230,6 +2239,7 @@ u32 trb_comp_code; int ret = 0; int td_num = 0; + bool handling_skipped_tds = false; slot_id = TRB_TO_SLOT_ID(le32_to_cpu(event->flags)); xdev = xhci->devs[slot_id]; @@ -2363,6 +2373,10 @@ ep->skip = true; xhci_dbg(xhci, "Miss service interval error, set skip flag\n"); goto cleanup; + case COMP_PING_ERR: + ep->skip = true; + xhci_dbg(xhci, "No Ping response error, Skip one Isoc TD\n"); + goto cleanup; default: if (xhci_is_vendor_info_code(xhci, trb_comp_code)) { status = 0; @@ -2499,13 +2513,18 @@ ep, &status); cleanup: + + + handling_skipped_tds = ep->skip && + trb_comp_code != COMP_MISSED_INT && + trb_comp_code != COMP_PING_ERR; + /* - * Do not update event ring dequeue pointer if ep->skip is set. - * Will roll back to continue process missed tds. + * Do not update event ring dequeue pointer if we're in a loop + * processing missed tds. */ - if (trb_comp_code == COMP_MISSED_INT || !ep->skip) { + if (!handling_skipped_tds) inc_deq(xhci, xhci->event_ring); - } if (ret) { urb = td->urb; @@ -2540,7 +2559,7 @@ * Process them as short transfer until reach the td pointed by * the event. */ - } while (ep->skip && trb_comp_code != COMP_MISSED_INT); + } while (handling_skipped_tds); return 0; } @@ -3041,9 +3060,11 @@ struct xhci_td *td; struct scatterlist *sg; int num_sgs; - int trb_buff_len, this_sg_len, running_total; + int trb_buff_len, this_sg_len, running_total, ret; unsigned int total_packet_count; + bool zero_length_needed; bool first_trb; + int last_trb_num; u64 addr; bool more_trbs_coming; @@ -3059,13 +3080,27 @@ total_packet_count = DIV_ROUND_UP(urb->transfer_buffer_length, usb_endpoint_maxp(&urb->ep->desc)); - trb_buff_len = prepare_transfer(xhci, xhci->devs[slot_id], + ret = prepare_transfer(xhci, xhci->devs[slot_id], ep_index, urb->stream_id, num_trbs, urb, 0, mem_flags); - if (trb_buff_len < 0) - return trb_buff_len; + if (ret < 0) + return ret; urb_priv = urb->hcpriv; + + /* Deal with URB_ZERO_PACKET - need one more td/trb */ + zero_length_needed = urb->transfer_flags & URB_ZERO_PACKET && + urb_priv->length == 2; + if (zero_length_needed) { + num_trbs++; + xhci_dbg(xhci, "Creating zero length td.\n"); + ret = prepare_transfer(xhci, xhci->devs[slot_id], + ep_index, urb->stream_id, + 1, urb, 1, mem_flags); + if (ret < 0) + return ret; + } + td = urb_priv->td[0]; /* @@ -3095,6 +3130,7 @@ trb_buff_len = urb->transfer_buffer_length; first_trb = true; + last_trb_num = zero_length_needed ? 2 : 1; /* Queue the first TRB, even if it's zero-length */ do { u32 field = 0; @@ -3112,12 +3148,15 @@ /* Chain all the TRBs together; clear the chain bit in the last * TRB to indicate it's the last TRB in the chain. */ - if (num_trbs > 1) { + if (num_trbs > last_trb_num) { field |= TRB_CHAIN; - } else { - /* FIXME - add check for ZERO_PACKET flag before this */ + } else if (num_trbs == last_trb_num) { td->last_trb = ep_ring->enqueue; field |= TRB_IOC; + } else if (zero_length_needed && num_trbs == 1) { + trb_buff_len = 0; + urb_priv->td[1]->last_trb = ep_ring->enqueue; + field |= TRB_IOC; } /* Only set interrupt on short packet for IN endpoints */ @@ -3179,7 +3218,7 @@ if (running_total + trb_buff_len > urb->transfer_buffer_length) trb_buff_len = urb->transfer_buffer_length - running_total; - } while (running_total < urb->transfer_buffer_length); + } while (num_trbs > 0); check_trb_math(urb, num_trbs, running_total); giveback_first_trb(xhci, slot_id, ep_index, urb->stream_id, @@ -3197,7 +3236,9 @@ int num_trbs; struct xhci_generic_trb *start_trb; bool first_trb; + int last_trb_num; bool more_trbs_coming; + bool zero_length_needed; int start_cycle; u32 field, length_field; @@ -3228,7 +3269,6 @@ num_trbs++; running_total += TRB_MAX_BUFF_SIZE; } - /* FIXME: this doesn't deal with URB_ZERO_PACKET - need one more */ ret = prepare_transfer(xhci, xhci->devs[slot_id], ep_index, urb->stream_id, @@ -3237,6 +3277,20 @@ return ret; urb_priv = urb->hcpriv; + + /* Deal with URB_ZERO_PACKET - need one more td/trb */ + zero_length_needed = urb->transfer_flags & URB_ZERO_PACKET && + urb_priv->length == 2; + if (zero_length_needed) { + num_trbs++; + xhci_dbg(xhci, "Creating zero length td.\n"); + ret = prepare_transfer(xhci, xhci->devs[slot_id], + ep_index, urb->stream_id, + 1, urb, 1, mem_flags); + if (ret < 0) + return ret; + } + td = urb_priv->td[0]; /* @@ -3258,7 +3312,7 @@ trb_buff_len = urb->transfer_buffer_length; first_trb = true; - + last_trb_num = zero_length_needed ? 2 : 1; /* Queue the first TRB, even if it's zero-length */ do { u32 remainder = 0; @@ -3275,12 +3329,15 @@ /* Chain all the TRBs together; clear the chain bit in the last * TRB to indicate it's the last TRB in the chain. */ - if (num_trbs > 1) { + if (num_trbs > last_trb_num) { field |= TRB_CHAIN; - } else { - /* FIXME - add check for ZERO_PACKET flag before this */ + } else if (num_trbs == last_trb_num) { td->last_trb = ep_ring->enqueue; field |= TRB_IOC; + } else if (zero_length_needed && num_trbs == 1) { + trb_buff_len = 0; + urb_priv->td[1]->last_trb = ep_ring->enqueue; + field |= TRB_IOC; } /* Only set interrupt on short packet for IN endpoints */ @@ -3318,7 +3375,7 @@ trb_buff_len = urb->transfer_buffer_length - running_total; if (trb_buff_len > TRB_MAX_BUFF_SIZE) trb_buff_len = TRB_MAX_BUFF_SIZE; - } while (running_total < urb->transfer_buffer_length); + } while (num_trbs > 0); check_trb_math(urb, num_trbs, running_total); giveback_first_trb(xhci, slot_id, ep_index, urb->stream_id, @@ -3385,8 +3442,8 @@ if (start_cycle == 0) field |= 0x1; - /* xHCI 1.0 6.4.1.2.1: Transfer Type field */ - if (xhci->hci_version == 0x100) { + /* xHCI 1.0/1.1 6.4.1.2.1: Transfer Type field */ + if (xhci->hci_version >= 0x100) { if (urb->transfer_buffer_length > 0) { if (setup->bRequestType & USB_DIR_IN) field |= TRB_TX_TYPE(TRB_DATA_IN); --- linux-raspi2-4.2.0.orig/drivers/usb/host/xhci.c +++ linux-raspi2-4.2.0/drivers/usb/host/xhci.c @@ -146,7 +146,8 @@ "waited %u microseconds.\n", XHCI_MAX_HALT_USEC); if (!ret) - xhci->xhc_state &= ~XHCI_STATE_HALTED; + xhci->xhc_state &= ~(XHCI_STATE_HALTED | XHCI_STATE_DYING); + return ret; } @@ -174,6 +175,16 @@ command |= CMD_RESET; writel(command, &xhci->op_regs->command); + /* Existing Intel xHCI controllers require a delay of 1 mS, + * after setting the CMD_RESET bit, and before accessing any + * HC registers. This allows the HC to complete the + * reset operation and be ready for HC register access. + * Without this delay, the subsequent HC register access, + * may result in a system hang very rarely. + */ + if (xhci->quirks & XHCI_INTEL_HOST) + udelay(1000); + ret = xhci_handshake(&xhci->op_regs->command, CMD_RESET, 0, 10 * 1000 * 1000); if (ret) @@ -654,15 +665,6 @@ } EXPORT_SYMBOL_GPL(xhci_run); -static void xhci_only_stop_hcd(struct usb_hcd *hcd) -{ - struct xhci_hcd *xhci = hcd_to_xhci(hcd); - - spin_lock_irq(&xhci->lock); - xhci_halt(xhci); - spin_unlock_irq(&xhci->lock); -} - /* * Stop xHCI driver. * @@ -677,12 +679,14 @@ u32 temp; struct xhci_hcd *xhci = hcd_to_xhci(hcd); - if (!usb_hcd_is_primary_hcd(hcd)) { - xhci_only_stop_hcd(xhci->shared_hcd); + if (xhci->xhc_state & XHCI_STATE_HALTED) return; - } + mutex_lock(&xhci->mutex); spin_lock_irq(&xhci->lock); + xhci->xhc_state |= XHCI_STATE_HALTED; + xhci->cmd_ring_state = CMD_RING_STATE_STOPPED; + /* Make sure the xHC is halted for a USB3 roothub * (xhci_stop() could be called as part of failed init). */ @@ -717,6 +721,7 @@ xhci_dbg_trace(xhci, trace_xhci_dbg_init, "xhci_stop completed - status = %x", readl(&xhci->op_regs->status)); + mutex_unlock(&xhci->mutex); } /* @@ -1340,6 +1345,11 @@ if (usb_endpoint_xfer_isoc(&urb->ep->desc)) size = urb->number_of_packets; + else if (usb_endpoint_is_bulk_out(&urb->ep->desc) && + urb->transfer_buffer_length > 0 && + urb->transfer_flags & URB_ZERO_PACKET && + !(urb->transfer_buffer_length % usb_endpoint_maxp(&urb->ep->desc))) + size = 2; else size = 1; @@ -3788,6 +3798,9 @@ mutex_lock(&xhci->mutex); + if (xhci->xhc_state) /* dying or halted */ + goto out; + if (!udev->slot_id) { xhci_dbg_trace(xhci, trace_xhci_dbg_address, "Bad Slot ID %d", udev->slot_id); --- linux-raspi2-4.2.0.orig/drivers/usb/misc/chaoskey.c +++ linux-raspi2-4.2.0/drivers/usb/misc/chaoskey.c @@ -472,7 +472,7 @@ if (this_time > max) this_time = max; - memcpy(data, dev->buf, this_time); + memcpy(data, dev->buf + dev->used, this_time); dev->used += this_time; --- linux-raspi2-4.2.0.orig/drivers/usb/musb/musb_core.c +++ linux-raspi2-4.2.0/drivers/usb/musb/musb_core.c @@ -132,7 +132,7 @@ /*-------------------------------------------------------------------------*/ #ifndef CONFIG_BLACKFIN -static int musb_ulpi_read(struct usb_phy *phy, u32 offset) +static int musb_ulpi_read(struct usb_phy *phy, u32 reg) { void __iomem *addr = phy->io_priv; int i = 0; @@ -151,7 +151,7 @@ * ULPICarKitControlDisableUTMI after clearing POWER_SUSPENDM. */ - musb_writeb(addr, MUSB_ULPI_REG_ADDR, (u8)offset); + musb_writeb(addr, MUSB_ULPI_REG_ADDR, (u8)reg); musb_writeb(addr, MUSB_ULPI_REG_CONTROL, MUSB_ULPI_REG_REQ | MUSB_ULPI_RDN_WR); @@ -176,7 +176,7 @@ return ret; } -static int musb_ulpi_write(struct usb_phy *phy, u32 offset, u32 data) +static int musb_ulpi_write(struct usb_phy *phy, u32 val, u32 reg) { void __iomem *addr = phy->io_priv; int i = 0; @@ -191,8 +191,8 @@ power &= ~MUSB_POWER_SUSPENDM; musb_writeb(addr, MUSB_POWER, power); - musb_writeb(addr, MUSB_ULPI_REG_ADDR, (u8)offset); - musb_writeb(addr, MUSB_ULPI_REG_DATA, (u8)data); + musb_writeb(addr, MUSB_ULPI_REG_ADDR, (u8)reg); + musb_writeb(addr, MUSB_ULPI_REG_DATA, (u8)val); musb_writeb(addr, MUSB_ULPI_REG_CONTROL, MUSB_ULPI_REG_REQ); while (!(musb_readb(addr, MUSB_ULPI_REG_CONTROL) --- linux-raspi2-4.2.0.orig/drivers/usb/musb/musb_cppi41.c +++ linux-raspi2-4.2.0/drivers/usb/musb/musb_cppi41.c @@ -614,7 +614,7 @@ { struct musb *musb = controller->musb; struct device *dev = musb->controller; - struct device_node *np = dev->of_node; + struct device_node *np = dev->parent->of_node; struct cppi41_dma_channel *cppi41_channel; int count; int i; @@ -664,7 +664,7 @@ musb_dma->status = MUSB_DMA_STATUS_FREE; musb_dma->max_len = SZ_4M; - dc = dma_request_slave_channel(dev, str); + dc = dma_request_slave_channel(dev->parent, str); if (!dc) { dev_err(dev, "Failed to request %s.\n", str); ret = -EPROBE_DEFER; @@ -695,7 +695,7 @@ struct cppi41_dma_controller *controller; int ret = 0; - if (!musb->controller->of_node) { + if (!musb->controller->parent->of_node) { dev_err(musb->controller, "Need DT for the DMA engine.\n"); return NULL; } --- linux-raspi2-4.2.0.orig/drivers/usb/musb/musb_dsps.c +++ linux-raspi2-4.2.0/drivers/usb/musb/musb_dsps.c @@ -225,8 +225,11 @@ dsps_writel(reg_base, wrp->epintr_set, epmask); dsps_writel(reg_base, wrp->coreintr_set, coremask); - /* start polling for ID change. */ - mod_timer(&glue->timer, jiffies + msecs_to_jiffies(wrp->poll_timeout)); + /* start polling for ID change in dual-role idle mode */ + if (musb->xceiv->otg->state == OTG_STATE_B_IDLE && + musb->port_mode == MUSB_PORT_MODE_DUAL_ROLE) + mod_timer(&glue->timer, jiffies + + msecs_to_jiffies(wrp->poll_timeout)); dsps_musb_try_idle(musb, 0); } --- linux-raspi2-4.2.0.orig/drivers/usb/phy/phy-fsl-usb.c +++ linux-raspi2-4.2.0/drivers/usb/phy/phy-fsl-usb.c @@ -75,7 +75,7 @@ .otg_port = 1, }; -#ifdef CONFIG_PPC32 +#ifdef CONFIG_PPC static u32 _fsl_readl_be(const unsigned __iomem *p) { return in_be32(p); @@ -105,7 +105,7 @@ #else #define fsl_readl(addr) readl(addr) #define fsl_writel(val, addr) writel(val, addr) -#endif /* CONFIG_PPC32 */ +#endif /* CONFIG_PPC */ int write_ulpi(u8 addr, u8 data) { @@ -879,6 +879,7 @@ if (pdata->init && pdata->init(pdev) != 0) return -EINVAL; +#ifdef CONFIG_PPC if (pdata->big_endian_mmio) { _fsl_readl = _fsl_readl_be; _fsl_writel = _fsl_writel_be; @@ -886,6 +887,7 @@ _fsl_readl = _fsl_readl_le; _fsl_writel = _fsl_writel_le; } +#endif /* request irq */ p_otg->irq = platform_get_irq(pdev, 0); --- linux-raspi2-4.2.0.orig/drivers/usb/phy/phy-generic.c +++ linux-raspi2-4.2.0/drivers/usb/phy/phy-generic.c @@ -230,7 +230,8 @@ clk_rate = pdata->clk_rate; needs_vcc = pdata->needs_vcc; if (gpio_is_valid(pdata->gpio_reset)) { - err = devm_gpio_request_one(dev, pdata->gpio_reset, 0, + err = devm_gpio_request_one(dev, pdata->gpio_reset, + GPIOF_ACTIVE_LOW, dev_name(dev)); if (!err) nop->gpiod_reset = --- linux-raspi2-4.2.0.orig/drivers/usb/serial/ftdi_sio.c +++ linux-raspi2-4.2.0/drivers/usb/serial/ftdi_sio.c @@ -605,6 +605,10 @@ { USB_DEVICE(FTDI_VID, FTDI_NT_ORIONLXM_PID), .driver_info = (kernel_ulong_t)&ftdi_jtag_quirk }, { USB_DEVICE(FTDI_VID, FTDI_SYNAPSE_SS200_PID) }, + { USB_DEVICE(FTDI_VID, FTDI_CUSTOMWARE_MINIPLEX_PID) }, + { USB_DEVICE(FTDI_VID, FTDI_CUSTOMWARE_MINIPLEX2_PID) }, + { USB_DEVICE(FTDI_VID, FTDI_CUSTOMWARE_MINIPLEX2WI_PID) }, + { USB_DEVICE(FTDI_VID, FTDI_CUSTOMWARE_MINIPLEX3_PID) }, /* * ELV devices: */ --- linux-raspi2-4.2.0.orig/drivers/usb/serial/ftdi_sio_ids.h +++ linux-raspi2-4.2.0/drivers/usb/serial/ftdi_sio_ids.h @@ -568,6 +568,14 @@ */ #define FTDI_SYNAPSE_SS200_PID 0x9090 /* SS200 - SNAP Stick 200 */ +/* + * CustomWare / ShipModul NMEA multiplexers product ids (FTDI_VID) + */ +#define FTDI_CUSTOMWARE_MINIPLEX_PID 0xfd48 /* MiniPlex first generation NMEA Multiplexer */ +#define FTDI_CUSTOMWARE_MINIPLEX2_PID 0xfd49 /* MiniPlex-USB and MiniPlex-2 series */ +#define FTDI_CUSTOMWARE_MINIPLEX2WI_PID 0xfd4a /* MiniPlex-2Wi */ +#define FTDI_CUSTOMWARE_MINIPLEX3_PID 0xfd4b /* MiniPlex-3 series */ + /********************************/ /** third-party VID/PID combos **/ --- linux-raspi2-4.2.0.orig/drivers/usb/serial/option.c +++ linux-raspi2-4.2.0/drivers/usb/serial/option.c @@ -162,6 +162,7 @@ #define NOVATELWIRELESS_PRODUCT_HSPA_EMBEDDED_HIGHSPEED 0x9001 #define NOVATELWIRELESS_PRODUCT_E362 0x9010 #define NOVATELWIRELESS_PRODUCT_E371 0x9011 +#define NOVATELWIRELESS_PRODUCT_U620L 0x9022 #define NOVATELWIRELESS_PRODUCT_G2 0xA010 #define NOVATELWIRELESS_PRODUCT_MC551 0xB001 @@ -278,6 +279,10 @@ #define ZTE_PRODUCT_MF622 0x0001 #define ZTE_PRODUCT_MF628 0x0015 #define ZTE_PRODUCT_MF626 0x0031 +#define ZTE_PRODUCT_ZM8620_X 0x0396 +#define ZTE_PRODUCT_ME3620_MBIM 0x0426 +#define ZTE_PRODUCT_ME3620_X 0x1432 +#define ZTE_PRODUCT_ME3620_L 0x1433 #define ZTE_PRODUCT_AC2726 0xfff1 #define ZTE_PRODUCT_MG880 0xfffd #define ZTE_PRODUCT_CDMA_TECH 0xfffe @@ -353,6 +358,7 @@ /* This is the 4G XS Stick W14 a.k.a. Mobilcom Debitel Surf-Stick * * It seems to contain a Qualcomm QSC6240/6290 chipset */ #define FOUR_G_SYSTEMS_PRODUCT_W14 0x9603 +#define FOUR_G_SYSTEMS_PRODUCT_W100 0x9b01 /* iBall 3.5G connect wireless modem */ #define IBALL_3_5G_CONNECT 0x9605 @@ -518,6 +524,11 @@ .sendsetup = BIT(0) | BIT(1), }; +static const struct option_blacklist_info four_g_w100_blacklist = { + .sendsetup = BIT(1) | BIT(2), + .reserved = BIT(3), +}; + static const struct option_blacklist_info alcatel_x200_blacklist = { .sendsetup = BIT(0) | BIT(1), .reserved = BIT(4), @@ -544,6 +555,18 @@ .sendsetup = BIT(1) | BIT(2) | BIT(3), }; +static const struct option_blacklist_info zte_me3620_mbim_blacklist = { + .reserved = BIT(2) | BIT(3) | BIT(4), +}; + +static const struct option_blacklist_info zte_me3620_xl_blacklist = { + .reserved = BIT(3) | BIT(4) | BIT(5), +}; + +static const struct option_blacklist_info zte_zm8620_x_blacklist = { + .reserved = BIT(3) | BIT(4) | BIT(5), +}; + static const struct option_blacklist_info huawei_cdc12_blacklist = { .reserved = BIT(1) | BIT(2), }; @@ -1044,6 +1067,7 @@ { USB_DEVICE_AND_INTERFACE_INFO(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_MC551, 0xff, 0xff, 0xff) }, { USB_DEVICE_AND_INTERFACE_INFO(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_E362, 0xff, 0xff, 0xff) }, { USB_DEVICE_AND_INTERFACE_INFO(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_E371, 0xff, 0xff, 0xff) }, + { USB_DEVICE_AND_INTERFACE_INFO(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_U620L, 0xff, 0x00, 0x00) }, { USB_DEVICE(AMOI_VENDOR_ID, AMOI_PRODUCT_H01) }, { USB_DEVICE(AMOI_VENDOR_ID, AMOI_PRODUCT_H01A) }, @@ -1591,6 +1615,14 @@ .driver_info = (kernel_ulong_t)&zte_ad3812_z_blacklist }, { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, ZTE_PRODUCT_MC2716, 0xff, 0xff, 0xff), .driver_info = (kernel_ulong_t)&zte_mc2716_z_blacklist }, + { USB_DEVICE(ZTE_VENDOR_ID, ZTE_PRODUCT_ME3620_L), + .driver_info = (kernel_ulong_t)&zte_me3620_xl_blacklist }, + { USB_DEVICE(ZTE_VENDOR_ID, ZTE_PRODUCT_ME3620_MBIM), + .driver_info = (kernel_ulong_t)&zte_me3620_mbim_blacklist }, + { USB_DEVICE(ZTE_VENDOR_ID, ZTE_PRODUCT_ME3620_X), + .driver_info = (kernel_ulong_t)&zte_me3620_xl_blacklist }, + { USB_DEVICE(ZTE_VENDOR_ID, ZTE_PRODUCT_ZM8620_X), + .driver_info = (kernel_ulong_t)&zte_zm8620_x_blacklist }, { USB_VENDOR_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0xff, 0x02, 0x01) }, { USB_VENDOR_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0xff, 0x02, 0x05) }, { USB_VENDOR_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0xff, 0x86, 0x10) }, @@ -1629,6 +1661,9 @@ { USB_DEVICE(LONGCHEER_VENDOR_ID, FOUR_G_SYSTEMS_PRODUCT_W14), .driver_info = (kernel_ulong_t)&four_g_w14_blacklist }, + { USB_DEVICE(LONGCHEER_VENDOR_ID, FOUR_G_SYSTEMS_PRODUCT_W100), + .driver_info = (kernel_ulong_t)&four_g_w100_blacklist + }, { USB_DEVICE_INTERFACE_CLASS(LONGCHEER_VENDOR_ID, SPEEDUP_PRODUCT_SU9800, 0xff) }, { USB_DEVICE(LONGCHEER_VENDOR_ID, ZOOM_PRODUCT_4597) }, { USB_DEVICE(LONGCHEER_VENDOR_ID, IBALL_3_5G_CONNECT) }, --- linux-raspi2-4.2.0.orig/drivers/usb/serial/pl2303.c +++ linux-raspi2-4.2.0/drivers/usb/serial/pl2303.c @@ -362,21 +362,38 @@ static speed_t pl2303_encode_baud_rate_divisor(unsigned char buf[4], speed_t baud) { - unsigned int tmp; + unsigned int baseline, mantissa, exponent; /* * Apparently the formula is: - * baudrate = 12M * 32 / (2^buf[1]) / buf[0] + * baudrate = 12M * 32 / (mantissa * 4^exponent) + * where + * mantissa = buf[8:0] + * exponent = buf[11:9] */ - tmp = 12000000 * 32 / baud; + baseline = 12000000 * 32; + mantissa = baseline / baud; + if (mantissa == 0) + mantissa = 1; /* Avoid dividing by zero if baud > 32*12M. */ + exponent = 0; + while (mantissa >= 512) { + if (exponent < 7) { + mantissa >>= 2; /* divide by 4 */ + exponent++; + } else { + /* Exponent is maxed. Trim mantissa and leave. */ + mantissa = 511; + break; + } + } + buf[3] = 0x80; buf[2] = 0; - buf[1] = (tmp >= 256); - while (tmp >= 256) { - tmp >>= 2; - buf[1] <<= 1; - } - buf[0] = tmp; + buf[1] = exponent << 1 | mantissa >> 8; + buf[0] = mantissa & 0xff; + + /* Calculate and return the exact baud rate. */ + baud = (baseline / mantissa) >> (exponent << 1); return baud; } --- linux-raspi2-4.2.0.orig/drivers/usb/serial/qcserial.c +++ linux-raspi2-4.2.0/drivers/usb/serial/qcserial.c @@ -22,6 +22,8 @@ #define DRIVER_AUTHOR "Qualcomm Inc" #define DRIVER_DESC "Qualcomm USB Serial driver" +#define QUECTEL_EC20_PID 0x9215 + /* standard device layouts supported by this driver */ enum qcserial_layouts { QCSERIAL_G2K = 0, /* Gobi 2000 */ @@ -139,6 +141,7 @@ {USB_DEVICE(0x0AF0, 0x8120)}, /* Option GTM681W */ /* non-Gobi Sierra Wireless devices */ + {DEVICE_SWI(0x03f0, 0x4e1d)}, /* HP lt4111 LTE/EV-DO/HSPA+ Gobi 4G Module */ {DEVICE_SWI(0x0f3d, 0x68a2)}, /* Sierra Wireless MC7700 */ {DEVICE_SWI(0x114f, 0x68a2)}, /* Sierra Wireless MC7750 */ {DEVICE_SWI(0x1199, 0x68a2)}, /* Sierra Wireless MC7710 */ @@ -152,6 +155,8 @@ {DEVICE_SWI(0x1199, 0x9056)}, /* Sierra Wireless Modem */ {DEVICE_SWI(0x1199, 0x9060)}, /* Sierra Wireless Modem */ {DEVICE_SWI(0x1199, 0x9061)}, /* Sierra Wireless Modem */ + {DEVICE_SWI(0x1199, 0x9070)}, /* Sierra Wireless MC74xx/EM74xx */ + {DEVICE_SWI(0x1199, 0x9071)}, /* Sierra Wireless MC74xx/EM74xx */ {DEVICE_SWI(0x413c, 0x81a2)}, /* Dell Wireless 5806 Gobi(TM) 4G LTE Mobile Broadband Card */ {DEVICE_SWI(0x413c, 0x81a3)}, /* Dell Wireless 5570 HSPA+ (42Mbps) Mobile Broadband Card */ {DEVICE_SWI(0x413c, 0x81a4)}, /* Dell Wireless 5570e HSPA+ (42Mbps) Mobile Broadband Card */ @@ -166,6 +171,38 @@ }; MODULE_DEVICE_TABLE(usb, id_table); +static int handle_quectel_ec20(struct device *dev, int ifnum) +{ + int altsetting = 0; + + /* + * Quectel EC20 Mini PCIe LTE module layout: + * 0: DM/DIAG (use libqcdm from ModemManager for communication) + * 1: NMEA + * 2: AT-capable modem port + * 3: Modem interface + * 4: NDIS + */ + switch (ifnum) { + case 0: + dev_dbg(dev, "Quectel EC20 DM/DIAG interface found\n"); + break; + case 1: + dev_dbg(dev, "Quectel EC20 NMEA GPS interface found\n"); + break; + case 2: + case 3: + dev_dbg(dev, "Quectel EC20 Modem port found\n"); + break; + case 4: + /* Don't claim the QMI/net interface */ + altsetting = -1; + break; + } + + return altsetting; +} + static int qcprobe(struct usb_serial *serial, const struct usb_device_id *id) { struct usb_host_interface *intf = serial->interface->cur_altsetting; @@ -175,6 +212,10 @@ __u8 ifnum; int altsetting = -1; + /* we only support vendor specific functions */ + if (intf->desc.bInterfaceClass != USB_CLASS_VENDOR_SPEC) + goto done; + nintf = serial->dev->actconfig->desc.bNumInterfaces; dev_dbg(dev, "Num Interfaces = %d\n", nintf); ifnum = intf->desc.bInterfaceNumber; @@ -234,6 +275,12 @@ altsetting = -1; break; case QCSERIAL_G2K: + /* handle non-standard layouts */ + if (nintf == 5 && id->idProduct == QUECTEL_EC20_PID) { + altsetting = handle_quectel_ec20(dev, ifnum); + goto done; + } + /* * Gobi 2K+ USB layout: * 0: QMI/net @@ -294,29 +341,39 @@ break; case QCSERIAL_HWI: /* - * Huawei layout: - * 0: AT-capable modem port - * 1: DM/DIAG - * 2: AT-capable modem port - * 3: CCID-compatible PCSC interface - * 4: QMI/net - * 5: NMEA + * Huawei devices map functions by subclass + protocol + * instead of interface numbers. The protocol identify + * a specific function, while the subclass indicate a + * specific firmware source + * + * This is a blacklist of functions known to be + * non-serial. The rest are assumed to be serial and + * will be handled by this driver */ - switch (ifnum) { - case 0: - case 2: - dev_dbg(dev, "Modem port found\n"); - break; - case 1: - dev_dbg(dev, "DM/DIAG interface found\n"); - break; - case 5: - dev_dbg(dev, "NMEA GPS interface found\n"); - break; - default: - /* don't claim any unsupported interface */ + switch (intf->desc.bInterfaceProtocol) { + /* QMI combined (qmi_wwan) */ + case 0x07: + case 0x37: + case 0x67: + /* QMI data (qmi_wwan) */ + case 0x08: + case 0x38: + case 0x68: + /* QMI control (qmi_wwan) */ + case 0x09: + case 0x39: + case 0x69: + /* NCM like (huawei_cdc_ncm) */ + case 0x16: + case 0x46: + case 0x76: altsetting = -1; break; + default: + dev_dbg(dev, "Huawei type serial port found (%02x/%02x/%02x)\n", + intf->desc.bInterfaceClass, + intf->desc.bInterfaceSubClass, + intf->desc.bInterfaceProtocol); } break; default: --- linux-raspi2-4.2.0.orig/drivers/usb/serial/symbolserial.c +++ linux-raspi2-4.2.0/drivers/usb/serial/symbolserial.c @@ -94,7 +94,7 @@ static int symbol_open(struct tty_struct *tty, struct usb_serial_port *port) { - struct symbol_private *priv = usb_get_serial_data(port->serial); + struct symbol_private *priv = usb_get_serial_port_data(port); unsigned long flags; int result = 0; @@ -120,7 +120,7 @@ static void symbol_throttle(struct tty_struct *tty) { struct usb_serial_port *port = tty->driver_data; - struct symbol_private *priv = usb_get_serial_data(port->serial); + struct symbol_private *priv = usb_get_serial_port_data(port); spin_lock_irq(&priv->lock); priv->throttled = true; @@ -130,7 +130,7 @@ static void symbol_unthrottle(struct tty_struct *tty) { struct usb_serial_port *port = tty->driver_data; - struct symbol_private *priv = usb_get_serial_data(port->serial); + struct symbol_private *priv = usb_get_serial_port_data(port); int result; bool was_throttled; --- linux-raspi2-4.2.0.orig/drivers/usb/serial/ti_usb_3410_5052.c +++ linux-raspi2-4.2.0/drivers/usb/serial/ti_usb_3410_5052.c @@ -159,6 +159,7 @@ { USB_DEVICE(ABBOTT_VENDOR_ID, ABBOTT_STEREO_PLUG_ID) }, { USB_DEVICE(ABBOTT_VENDOR_ID, ABBOTT_STRIP_PORT_ID) }, { USB_DEVICE(TI_VENDOR_ID, FRI2_PRODUCT_ID) }, + { USB_DEVICE(HONEYWELL_VENDOR_ID, HONEYWELL_HGI80_PRODUCT_ID) }, { } /* terminator */ }; @@ -191,6 +192,7 @@ { USB_DEVICE(ABBOTT_VENDOR_ID, ABBOTT_PRODUCT_ID) }, { USB_DEVICE(ABBOTT_VENDOR_ID, ABBOTT_STRIP_PORT_ID) }, { USB_DEVICE(TI_VENDOR_ID, FRI2_PRODUCT_ID) }, + { USB_DEVICE(HONEYWELL_VENDOR_ID, HONEYWELL_HGI80_PRODUCT_ID) }, { } /* terminator */ }; --- linux-raspi2-4.2.0.orig/drivers/usb/serial/ti_usb_3410_5052.h +++ linux-raspi2-4.2.0/drivers/usb/serial/ti_usb_3410_5052.h @@ -56,6 +56,10 @@ #define ABBOTT_PRODUCT_ID ABBOTT_STEREO_PLUG_ID #define ABBOTT_STRIP_PORT_ID 0x3420 +/* Honeywell vendor and product IDs */ +#define HONEYWELL_VENDOR_ID 0x10ac +#define HONEYWELL_HGI80_PRODUCT_ID 0x0102 /* Honeywell HGI80 */ + /* Commands */ #define TI_GET_VERSION 0x01 #define TI_GET_PORT_STATUS 0x02 --- linux-raspi2-4.2.0.orig/drivers/usb/serial/whiteheat.c +++ linux-raspi2-4.2.0/drivers/usb/serial/whiteheat.c @@ -80,6 +80,8 @@ static int whiteheat_firmware_attach(struct usb_serial *serial); /* function prototypes for the Connect Tech WhiteHEAT serial converter */ +static int whiteheat_probe(struct usb_serial *serial, + const struct usb_device_id *id); static int whiteheat_attach(struct usb_serial *serial); static void whiteheat_release(struct usb_serial *serial); static int whiteheat_port_probe(struct usb_serial_port *port); @@ -116,6 +118,7 @@ .description = "Connect Tech - WhiteHEAT", .id_table = id_table_std, .num_ports = 4, + .probe = whiteheat_probe, .attach = whiteheat_attach, .release = whiteheat_release, .port_probe = whiteheat_port_probe, @@ -217,6 +220,34 @@ /***************************************************************************** * Connect Tech's White Heat serial driver functions *****************************************************************************/ + +static int whiteheat_probe(struct usb_serial *serial, + const struct usb_device_id *id) +{ + struct usb_host_interface *iface_desc; + struct usb_endpoint_descriptor *endpoint; + size_t num_bulk_in = 0; + size_t num_bulk_out = 0; + size_t min_num_bulk; + unsigned int i; + + iface_desc = serial->interface->cur_altsetting; + + for (i = 0; i < iface_desc->desc.bNumEndpoints; i++) { + endpoint = &iface_desc->endpoint[i].desc; + if (usb_endpoint_is_bulk_in(endpoint)) + ++num_bulk_in; + if (usb_endpoint_is_bulk_out(endpoint)) + ++num_bulk_out; + } + + min_num_bulk = COMMAND_PORT + 1; + if (num_bulk_in < min_num_bulk || num_bulk_out < min_num_bulk) + return -ENODEV; + + return 0; +} + static int whiteheat_attach(struct usb_serial *serial) { struct usb_serial_port *command_port; --- linux-raspi2-4.2.0.orig/drivers/usb/storage/unusual_devs.h +++ linux-raspi2-4.2.0/drivers/usb/storage/unusual_devs.h @@ -1262,6 +1262,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. * The entry is needed so usb-storage can bind to it's mass-storage --- linux-raspi2-4.2.0.orig/drivers/vfio/platform/vfio_platform_common.c +++ linux-raspi2-4.2.0/drivers/vfio/platform/vfio_platform_common.c @@ -307,17 +307,17 @@ return -ENOTTY; } -static ssize_t vfio_platform_read_mmio(struct vfio_platform_region reg, +static ssize_t vfio_platform_read_mmio(struct vfio_platform_region *reg, char __user *buf, size_t count, loff_t off) { unsigned int done = 0; - if (!reg.ioaddr) { - reg.ioaddr = - ioremap_nocache(reg.addr, reg.size); + if (!reg->ioaddr) { + reg->ioaddr = + ioremap_nocache(reg->addr, reg->size); - if (!reg.ioaddr) + if (!reg->ioaddr) return -ENOMEM; } @@ -327,7 +327,7 @@ if (count >= 4 && !(off % 4)) { u32 val; - val = ioread32(reg.ioaddr + off); + val = ioread32(reg->ioaddr + off); if (copy_to_user(buf, &val, 4)) goto err; @@ -335,7 +335,7 @@ } else if (count >= 2 && !(off % 2)) { u16 val; - val = ioread16(reg.ioaddr + off); + val = ioread16(reg->ioaddr + off); if (copy_to_user(buf, &val, 2)) goto err; @@ -343,7 +343,7 @@ } else { u8 val; - val = ioread8(reg.ioaddr + off); + val = ioread8(reg->ioaddr + off); if (copy_to_user(buf, &val, 1)) goto err; @@ -376,7 +376,7 @@ return -EINVAL; if (vdev->regions[index].type & VFIO_PLATFORM_REGION_TYPE_MMIO) - return vfio_platform_read_mmio(vdev->regions[index], + return vfio_platform_read_mmio(&vdev->regions[index], buf, count, off); else if (vdev->regions[index].type & VFIO_PLATFORM_REGION_TYPE_PIO) return -EINVAL; /* not implemented */ @@ -384,17 +384,17 @@ return -EINVAL; } -static ssize_t vfio_platform_write_mmio(struct vfio_platform_region reg, +static ssize_t vfio_platform_write_mmio(struct vfio_platform_region *reg, const char __user *buf, size_t count, loff_t off) { unsigned int done = 0; - if (!reg.ioaddr) { - reg.ioaddr = - ioremap_nocache(reg.addr, reg.size); + if (!reg->ioaddr) { + reg->ioaddr = + ioremap_nocache(reg->addr, reg->size); - if (!reg.ioaddr) + if (!reg->ioaddr) return -ENOMEM; } @@ -406,7 +406,7 @@ if (copy_from_user(&val, buf, 4)) goto err; - iowrite32(val, reg.ioaddr + off); + iowrite32(val, reg->ioaddr + off); filled = 4; } else if (count >= 2 && !(off % 2)) { @@ -414,7 +414,7 @@ if (copy_from_user(&val, buf, 2)) goto err; - iowrite16(val, reg.ioaddr + off); + iowrite16(val, reg->ioaddr + off); filled = 2; } else { @@ -422,7 +422,7 @@ if (copy_from_user(&val, buf, 1)) goto err; - iowrite8(val, reg.ioaddr + off); + iowrite8(val, reg->ioaddr + off); filled = 1; } @@ -452,7 +452,7 @@ return -EINVAL; if (vdev->regions[index].type & VFIO_PLATFORM_REGION_TYPE_MMIO) - return vfio_platform_write_mmio(vdev->regions[index], + return vfio_platform_write_mmio(&vdev->regions[index], buf, count, off); else if (vdev->regions[index].type & VFIO_PLATFORM_REGION_TYPE_PIO) return -EINVAL; /* not implemented */ --- linux-raspi2-4.2.0.orig/drivers/vfio/vfio.c +++ linux-raspi2-4.2.0/drivers/vfio/vfio.c @@ -692,11 +692,12 @@ static struct vfio_device *vfio_device_get_from_name(struct vfio_group *group, char *buf) { - struct vfio_device *device; + struct vfio_device *it, *device = NULL; mutex_lock(&group->device_lock); - list_for_each_entry(device, &group->device_list, group_next) { - if (!strcmp(dev_name(device->dev), buf)) { + list_for_each_entry(it, &group->device_list, group_next) { + if (!strcmp(dev_name(it->dev), buf)) { + device = it; vfio_device_get(device); break; } --- linux-raspi2-4.2.0.orig/drivers/video/console/fbcon.c +++ linux-raspi2-4.2.0/drivers/video/console/fbcon.c @@ -1093,6 +1093,7 @@ con_copy_unimap(vc, svc); ops = info->fbcon_par; + ops->cur_blink_jiffies = msecs_to_jiffies(vc->vc_cur_blink_ms); p->con_rotate = initial_rotation; set_blitting_type(vc, info); --- linux-raspi2-4.2.0.orig/drivers/video/fbdev/Kconfig +++ linux-raspi2-4.2.0/drivers/video/fbdev/Kconfig @@ -224,6 +224,20 @@ comment "Frame buffer hardware drivers" depends on FB +config FB_BCM2708 + tristate "BCM2708 framebuffer support" + depends on FB && RASPBERRYPI_FIRMWARE + select FB_CFB_FILLRECT + select FB_CFB_COPYAREA + select FB_CFB_IMAGEBLIT + help + This framebuffer device driver is for the BCM2708 framebuffer. + + If you want to compile this as a module (=code which can be + inserted into and removed from the running kernel), say M + here and read . The module + will be called bcm2708_fb. + config FB_GRVGA tristate "Aeroflex Gaisler framebuffer support" depends on FB && SPARC @@ -2475,3 +2489,16 @@ help This driver implements support for the Solomon SSD1307 OLED controller over I2C. + +config FB_RPISENSE + tristate "Raspberry Pi Sense HAT framebuffer" + depends on FB + select MFD_RPISENSE_CORE + select FB_SYS_FOPS + select FB_SYS_FILLRECT + select FB_SYS_COPYAREA + select FB_SYS_IMAGEBLIT + select FB_DEFERRED_IO + + help + This is the framebuffer driver for the Raspberry Pi Sense HAT --- linux-raspi2-4.2.0.orig/drivers/video/fbdev/Makefile +++ linux-raspi2-4.2.0/drivers/video/fbdev/Makefile @@ -12,6 +12,7 @@ obj-$(CONFIG_FB_WMT_GE_ROPS) += wmt_ge_rops.o # Hardware specific drivers go first +obj-$(CONFIG_FB_BCM2708) += bcm2708_fb.o obj-$(CONFIG_FB_AMIGA) += amifb.o c2p_planar.o obj-$(CONFIG_FB_ARC) += arcfb.o obj-$(CONFIG_FB_CLPS711X) += clps711x-fb.o @@ -148,6 +149,7 @@ obj-$(CONFIG_FB_MXS) += mxsfb.o obj-$(CONFIG_FB_SSD1307) += ssd1307fb.o obj-$(CONFIG_FB_SIMPLE) += simplefb.o +obj-$(CONFIG_FB_RPISENSE) += rpisense-fb.o # the test framebuffer is last obj-$(CONFIG_FB_VIRTUAL) += vfb.o --- linux-raspi2-4.2.0.orig/drivers/video/fbdev/bcm2708_fb.c +++ linux-raspi2-4.2.0/drivers/video/fbdev/bcm2708_fb.c @@ -0,0 +1,847 @@ +/* + * linux/drivers/video/bcm2708_fb.c + * + * Copyright (C) 2010 Broadcom + * + * This file is subject to the terms and conditions of the GNU General Public + * License. See the file COPYING in the main directory of this archive + * for more details. + * + * Broadcom simple framebuffer driver + * + * This file is derived from cirrusfb.c + * Copyright 1999-2001 Jeff Garzik + * + */ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +//#define BCM2708_FB_DEBUG +#define MODULE_NAME "bcm2708_fb" + +#ifdef BCM2708_FB_DEBUG +#define print_debug(fmt,...) pr_debug("%s:%s:%d: "fmt, MODULE_NAME, __func__, __LINE__, ##__VA_ARGS__) +#else +#define print_debug(fmt,...) +#endif + +/* This is limited to 16 characters when displayed by X startup */ +static const char *bcm2708_name = "BCM2708 FB"; + +#define DRIVER_NAME "bcm2708_fb" + +static int fbwidth = 800; /* module parameter */ +static int fbheight = 480; /* module parameter */ +static int fbdepth = 16; /* module parameter */ +static int fbswap = 0; /* module parameter */ + +static u32 dma_busy_wait_threshold = 1<<15; +module_param(dma_busy_wait_threshold, int, 0644); +MODULE_PARM_DESC(dma_busy_wait_threshold, "Busy-wait for DMA completion below this area"); + +struct fb_alloc_tags { + struct rpi_firmware_property_tag_header tag1; + u32 xres, yres; + struct rpi_firmware_property_tag_header tag2; + u32 xres_virtual, yres_virtual; + struct rpi_firmware_property_tag_header tag3; + u32 bpp; + struct rpi_firmware_property_tag_header tag4; + u32 xoffset, yoffset; + struct rpi_firmware_property_tag_header tag5; + u32 base, screen_size; + struct rpi_firmware_property_tag_header tag6; + u32 pitch; +}; + +struct bcm2708_fb_stats { + struct debugfs_regset32 regset; + u32 dma_copies; + u32 dma_irqs; +}; + +struct bcm2708_fb { + struct fb_info fb; + struct platform_device *dev; + struct rpi_firmware *fw; + u32 cmap[16]; + u32 gpu_cmap[256]; + int dma_chan; + int dma_irq; + void __iomem *dma_chan_base; + void *cb_base; /* DMA control blocks */ + dma_addr_t cb_handle; + struct dentry *debugfs_dir; + wait_queue_head_t dma_waitq; + struct bcm2708_fb_stats stats; + unsigned long fb_bus_address; +}; + +#define to_bcm2708(info) container_of(info, struct bcm2708_fb, fb) + +static void bcm2708_fb_debugfs_deinit(struct bcm2708_fb *fb) +{ + debugfs_remove_recursive(fb->debugfs_dir); + fb->debugfs_dir = NULL; +} + +static int bcm2708_fb_debugfs_init(struct bcm2708_fb *fb) +{ + static struct debugfs_reg32 stats_registers[] = { + { + "dma_copies", + offsetof(struct bcm2708_fb_stats, dma_copies) + }, + { + "dma_irqs", + offsetof(struct bcm2708_fb_stats, dma_irqs) + }, + }; + + fb->debugfs_dir = debugfs_create_dir(DRIVER_NAME, NULL); + if (!fb->debugfs_dir) { + pr_warn("%s: could not create debugfs entry\n", + __func__); + return -EFAULT; + } + + fb->stats.regset.regs = stats_registers; + fb->stats.regset.nregs = ARRAY_SIZE(stats_registers); + fb->stats.regset.base = &fb->stats; + + if (!debugfs_create_regset32( + "stats", 0444, fb->debugfs_dir, &fb->stats.regset)) { + pr_warn("%s: could not create statistics registers\n", + __func__); + goto fail; + } + return 0; + +fail: + bcm2708_fb_debugfs_deinit(fb); + return -EFAULT; +} + +static int bcm2708_fb_set_bitfields(struct fb_var_screeninfo *var) +{ + int ret = 0; + + memset(&var->transp, 0, sizeof(var->transp)); + + var->red.msb_right = 0; + var->green.msb_right = 0; + var->blue.msb_right = 0; + + switch (var->bits_per_pixel) { + case 1: + case 2: + case 4: + case 8: + var->red.length = var->bits_per_pixel; + var->red.offset = 0; + var->green.length = var->bits_per_pixel; + var->green.offset = 0; + var->blue.length = var->bits_per_pixel; + var->blue.offset = 0; + break; + case 16: + var->red.length = 5; + var->blue.length = 5; + /* + * Green length can be 5 or 6 depending whether + * we're operating in RGB555 or RGB565 mode. + */ + if (var->green.length != 5 && var->green.length != 6) + var->green.length = 6; + break; + case 24: + var->red.length = 8; + var->blue.length = 8; + var->green.length = 8; + break; + case 32: + var->red.length = 8; + var->green.length = 8; + var->blue.length = 8; + var->transp.length = 8; + break; + default: + ret = -EINVAL; + break; + } + + /* + * >= 16bpp displays have separate colour component bitfields + * encoded in the pixel data. Calculate their position from + * the bitfield length defined above. + */ + if (ret == 0 && var->bits_per_pixel >= 24 && fbswap) { + var->blue.offset = 0; + var->green.offset = var->blue.offset + var->blue.length; + var->red.offset = var->green.offset + var->green.length; + var->transp.offset = var->red.offset + var->red.length; + } else if (ret == 0 && var->bits_per_pixel >= 24) { + var->red.offset = 0; + var->green.offset = var->red.offset + var->red.length; + var->blue.offset = var->green.offset + var->green.length; + var->transp.offset = var->blue.offset + var->blue.length; + } else if (ret == 0 && var->bits_per_pixel >= 16) { + var->blue.offset = 0; + var->green.offset = var->blue.offset + var->blue.length; + var->red.offset = var->green.offset + var->green.length; + var->transp.offset = var->red.offset + var->red.length; + } + + return ret; +} + +static int bcm2708_fb_check_var(struct fb_var_screeninfo *var, + struct fb_info *info) +{ + /* info input, var output */ + int yres; + + /* info input, var output */ + print_debug("bcm2708_fb_check_var info(%p) %dx%d (%dx%d), %d, %d\n", info, + info->var.xres, info->var.yres, info->var.xres_virtual, + info->var.yres_virtual, (int)info->screen_size, + info->var.bits_per_pixel); + print_debug("bcm2708_fb_check_var var(%p) %dx%d (%dx%d), %d\n", var, + var->xres, var->yres, var->xres_virtual, var->yres_virtual, + var->bits_per_pixel); + + if (!var->bits_per_pixel) + var->bits_per_pixel = 16; + + if (bcm2708_fb_set_bitfields(var) != 0) { + pr_err("bcm2708_fb_check_var: invalid bits_per_pixel %d\n", + var->bits_per_pixel); + return -EINVAL; + } + + + if (var->xres_virtual < var->xres) + var->xres_virtual = var->xres; + /* use highest possible virtual resolution */ + if (var->yres_virtual == -1) { + var->yres_virtual = 480; + + pr_err + ("bcm2708_fb_check_var: virtual resolution set to maximum of %dx%d\n", + var->xres_virtual, var->yres_virtual); + } + if (var->yres_virtual < var->yres) + var->yres_virtual = var->yres; + + if (var->xoffset < 0) + var->xoffset = 0; + if (var->yoffset < 0) + var->yoffset = 0; + + /* truncate xoffset and yoffset to maximum if too high */ + if (var->xoffset > var->xres_virtual - var->xres) + var->xoffset = var->xres_virtual - var->xres - 1; + if (var->yoffset > var->yres_virtual - var->yres) + var->yoffset = var->yres_virtual - var->yres - 1; + + return 0; +} + +static int bcm2708_fb_set_par(struct fb_info *info) +{ + struct bcm2708_fb *fb = to_bcm2708(info); + struct fb_alloc_tags fbinfo = { + .tag1 = { RPI_FIRMWARE_FRAMEBUFFER_SET_PHYSICAL_WIDTH_HEIGHT, + 8, 0, }, + .xres = info->var.xres, + .yres = info->var.yres, + .tag2 = { RPI_FIRMWARE_FRAMEBUFFER_SET_VIRTUAL_WIDTH_HEIGHT, + 8, 0, }, + .xres_virtual = info->var.xres_virtual, + .yres_virtual = info->var.yres_virtual, + .tag3 = { RPI_FIRMWARE_FRAMEBUFFER_SET_DEPTH, 4, 0 }, + .bpp = info->var.bits_per_pixel, + .tag4 = { RPI_FIRMWARE_FRAMEBUFFER_SET_VIRTUAL_OFFSET, 8, 0 }, + .xoffset = info->var.xoffset, + .yoffset = info->var.yoffset, + .tag5 = { RPI_FIRMWARE_FRAMEBUFFER_ALLOCATE, 8, 0 }, + .base = 0, + .screen_size = 0, + .tag6 = { RPI_FIRMWARE_FRAMEBUFFER_GET_PITCH, 4, 0 }, + .pitch = 0, + }; + int ret; + + print_debug("bcm2708_fb_set_par info(%p) %dx%d (%dx%d), %d, %d\n", info, + info->var.xres, info->var.yres, info->var.xres_virtual, + info->var.yres_virtual, (int)info->screen_size, + info->var.bits_per_pixel); + + ret = rpi_firmware_property_list(fb->fw, &fbinfo, sizeof(fbinfo)); + if (ret) { + dev_err(info->device, + "Failed to allocate GPU framebuffer (%d)\n", ret); + return ret; + } + + if (info->var.bits_per_pixel <= 8) + fb->fb.fix.visual = FB_VISUAL_PSEUDOCOLOR; + else + fb->fb.fix.visual = FB_VISUAL_TRUECOLOR; + + fb->fb.fix.line_length = fbinfo.pitch; + fbinfo.base |= 0x40000000; + fb->fb_bus_address = fbinfo.base; + fbinfo.base &= ~0xc0000000; + fb->fb.fix.smem_start = fbinfo.base; + fb->fb.fix.smem_len = fbinfo.pitch * fbinfo.yres_virtual; + fb->fb.screen_size = fbinfo.screen_size; + if (fb->fb.screen_base) + iounmap(fb->fb.screen_base); + fb->fb.screen_base = ioremap_wc(fbinfo.base, fb->fb.screen_size); + if (!fb->fb.screen_base) { + /* the console may currently be locked */ + console_trylock(); + console_unlock(); + dev_err(info->device, "Failed to set screen_base\n"); + return -ENOMEM; + } + + print_debug + ("BCM2708FB: start = %p,%p width=%d, height=%d, bpp=%d, pitch=%d size=%d\n", + (void *)fb->fb.screen_base, (void *)fb->fb_bus_address, + fbinfo.xres, fbinfo.yres, fbinfo.bpp, + fbinfo.pitch, (int)fb->fb.screen_size); + + return 0; +} + +static inline u32 convert_bitfield(int val, struct fb_bitfield *bf) +{ + unsigned int mask = (1 << bf->length) - 1; + + return (val >> (16 - bf->length) & mask) << bf->offset; +} + + +static int bcm2708_fb_setcolreg(unsigned int regno, unsigned int red, + unsigned int green, unsigned int blue, + unsigned int transp, struct fb_info *info) +{ + struct bcm2708_fb *fb = to_bcm2708(info); + + /*print_debug("BCM2708FB: setcolreg %d:(%02x,%02x,%02x,%02x) %x\n", regno, red, green, blue, transp, fb->fb.fix.visual);*/ + if (fb->fb.var.bits_per_pixel <= 8) { + if (regno < 256) { + /* blue [23:16], green [15:8], red [7:0] */ + fb->gpu_cmap[regno] = ((red >> 8) & 0xff) << 0 | + ((green >> 8) & 0xff) << 8 | + ((blue >> 8) & 0xff) << 16; + } + /* Hack: we need to tell GPU the palette has changed, but currently bcm2708_fb_set_par takes noticable time when called for every (256) colour */ + /* So just call it for what looks like the last colour in a list for now. */ + if (regno == 15 || regno == 255) { + struct packet { + u32 offset; + u32 length; + u32 cmap[256]; + } *packet; + int ret; + + packet = kmalloc(sizeof(*packet), GFP_KERNEL); + if (!packet) + return -ENOMEM; + packet->offset = 0; + packet->length = regno + 1; + memcpy(packet->cmap, fb->gpu_cmap, sizeof(packet->cmap)); + ret = rpi_firmware_property(fb->fw, RPI_FIRMWARE_FRAMEBUFFER_SET_PALETTE, + packet, (2 + packet->length) * sizeof(u32)); + if (ret || packet->offset) + dev_err(info->device, "Failed to set palette (%d,%u)\n", + ret, packet->offset); + kfree(packet); + } + } else if (regno < 16) { + fb->cmap[regno] = convert_bitfield(transp, &fb->fb.var.transp) | + convert_bitfield(blue, &fb->fb.var.blue) | + convert_bitfield(green, &fb->fb.var.green) | + convert_bitfield(red, &fb->fb.var.red); + } + return regno > 255; +} + +static int bcm2708_fb_blank(int blank_mode, struct fb_info *info) +{ + struct bcm2708_fb *fb = to_bcm2708(info); + u32 value; + int ret; + + switch (blank_mode) { + case FB_BLANK_UNBLANK: + value = 0; + break; + case FB_BLANK_NORMAL: + case FB_BLANK_VSYNC_SUSPEND: + case FB_BLANK_HSYNC_SUSPEND: + case FB_BLANK_POWERDOWN: + value = 1; + break; + default: + return -EINVAL; + } + + ret = rpi_firmware_property(fb->fw, RPI_FIRMWARE_FRAMEBUFFER_BLANK, + &value, sizeof(value)); + if (ret) + dev_err(info->device, "bcm2708_fb_blank(%d) failed: %d\n", + blank_mode, ret); + + return ret; +} + +static int bcm2708_fb_pan_display(struct fb_var_screeninfo *var, struct fb_info *info) +{ + s32 result; + info->var.xoffset = var->xoffset; + info->var.yoffset = var->yoffset; + result = bcm2708_fb_set_par(info); + if (result != 0) + pr_err("bcm2708_fb_pan_display(%d,%d) returns=%d\n", var->xoffset, var->yoffset, result); + return result; +} + +static int bcm2708_ioctl(struct fb_info *info, unsigned int cmd, unsigned long arg) +{ + struct bcm2708_fb *fb = to_bcm2708(info); + u32 dummy = 0; + int ret; + + switch (cmd) { + case FBIO_WAITFORVSYNC: + ret = rpi_firmware_property(fb->fw, + RPI_FIRMWARE_FRAMEBUFFER_SET_VSYNC, + &dummy, sizeof(dummy)); + break; + default: + dev_err(info->device, "Unknown ioctl 0x%x\n", cmd); + return -EINVAL; + } + + if (ret) + dev_err(info->device, "ioctl 0x%x failed (%d)\n", cmd, ret); + + return ret; +} +static void bcm2708_fb_fillrect(struct fb_info *info, + const struct fb_fillrect *rect) +{ + /* (is called) print_debug("bcm2708_fb_fillrect\n"); */ + cfb_fillrect(info, rect); +} + +/* A helper function for configuring dma control block */ +static void set_dma_cb(struct bcm2708_dma_cb *cb, + int burst_size, + dma_addr_t dst, + int dst_stride, + dma_addr_t src, + int src_stride, + int w, + int h) +{ + cb->info = BCM2708_DMA_BURST(burst_size) | BCM2708_DMA_S_WIDTH | + BCM2708_DMA_S_INC | BCM2708_DMA_D_WIDTH | + BCM2708_DMA_D_INC | BCM2708_DMA_TDMODE; + cb->dst = dst; + cb->src = src; + /* + * This is not really obvious from the DMA documentation, + * but the top 16 bits must be programmmed to "height -1" + * and not "height" in 2D mode. + */ + cb->length = ((h - 1) << 16) | w; + cb->stride = ((dst_stride - w) << 16) | (u16)(src_stride - w); + cb->pad[0] = 0; + cb->pad[1] = 0; +} + +static void bcm2708_fb_copyarea(struct fb_info *info, + const struct fb_copyarea *region) +{ + struct bcm2708_fb *fb = to_bcm2708(info); + struct bcm2708_dma_cb *cb = fb->cb_base; + int bytes_per_pixel = (info->var.bits_per_pixel + 7) >> 3; + /* Channel 0 supports larger bursts and is a bit faster */ + int burst_size = (fb->dma_chan == 0) ? 8 : 2; + int pixels = region->width * region->height; + + /* Fallback to cfb_copyarea() if we don't like something */ + if (in_atomic() || + bytes_per_pixel > 4 || + info->var.xres * info->var.yres > 1920 * 1200 || + region->width <= 0 || region->width > info->var.xres || + region->height <= 0 || region->height > info->var.yres || + region->sx < 0 || region->sx >= info->var.xres || + region->sy < 0 || region->sy >= info->var.yres || + region->dx < 0 || region->dx >= info->var.xres || + region->dy < 0 || region->dy >= info->var.yres || + region->sx + region->width > info->var.xres || + region->dx + region->width > info->var.xres || + region->sy + region->height > info->var.yres || + region->dy + region->height > info->var.yres) { + cfb_copyarea(info, region); + return; + } + + if (region->dy == region->sy && region->dx > region->sx) { + /* + * A difficult case of overlapped copy. Because DMA can't + * copy individual scanlines in backwards direction, we need + * two-pass processing. We do it by programming a chain of dma + * control blocks in the first 16K part of the buffer and use + * the remaining 48K as the intermediate temporary scratch + * buffer. The buffer size is sufficient to handle up to + * 1920x1200 resolution at 32bpp pixel depth. + */ + int y; + dma_addr_t control_block_pa = fb->cb_handle; + dma_addr_t scratchbuf = fb->cb_handle + 16 * 1024; + int scanline_size = bytes_per_pixel * region->width; + int scanlines_per_cb = (64 * 1024 - 16 * 1024) / scanline_size; + + for (y = 0; y < region->height; y += scanlines_per_cb) { + dma_addr_t src = + fb->fb_bus_address + + bytes_per_pixel * region->sx + + (region->sy + y) * fb->fb.fix.line_length; + dma_addr_t dst = + fb->fb_bus_address + + bytes_per_pixel * region->dx + + (region->dy + y) * fb->fb.fix.line_length; + + if (region->height - y < scanlines_per_cb) + scanlines_per_cb = region->height - y; + + set_dma_cb(cb, burst_size, scratchbuf, scanline_size, + src, fb->fb.fix.line_length, + scanline_size, scanlines_per_cb); + control_block_pa += sizeof(struct bcm2708_dma_cb); + cb->next = control_block_pa; + cb++; + + set_dma_cb(cb, burst_size, dst, fb->fb.fix.line_length, + scratchbuf, scanline_size, + scanline_size, scanlines_per_cb); + control_block_pa += sizeof(struct bcm2708_dma_cb); + cb->next = control_block_pa; + cb++; + } + /* move the pointer back to the last dma control block */ + cb--; + } else { + /* A single dma control block is enough. */ + int sy, dy, stride; + if (region->dy <= region->sy) { + /* processing from top to bottom */ + dy = region->dy; + sy = region->sy; + stride = fb->fb.fix.line_length; + } else { + /* processing from bottom to top */ + dy = region->dy + region->height - 1; + sy = region->sy + region->height - 1; + stride = -fb->fb.fix.line_length; + } + set_dma_cb(cb, burst_size, + fb->fb_bus_address + dy * fb->fb.fix.line_length + + bytes_per_pixel * region->dx, + stride, + fb->fb_bus_address + sy * fb->fb.fix.line_length + + bytes_per_pixel * region->sx, + stride, + region->width * bytes_per_pixel, + region->height); + } + + /* end of dma control blocks chain */ + cb->next = 0; + + + if (pixels < dma_busy_wait_threshold) { + bcm_dma_start(fb->dma_chan_base, fb->cb_handle); + bcm_dma_wait_idle(fb->dma_chan_base); + } else { + void __iomem *dma_chan = fb->dma_chan_base; + cb->info |= BCM2708_DMA_INT_EN; + bcm_dma_start(fb->dma_chan_base, fb->cb_handle); + while (bcm_dma_is_busy(dma_chan)) { + wait_event_interruptible( + fb->dma_waitq, + !bcm_dma_is_busy(dma_chan)); + } + fb->stats.dma_irqs++; + } + fb->stats.dma_copies++; +} + +static void bcm2708_fb_imageblit(struct fb_info *info, + const struct fb_image *image) +{ + /* (is called) print_debug("bcm2708_fb_imageblit\n"); */ + cfb_imageblit(info, image); +} + +static irqreturn_t bcm2708_fb_dma_irq(int irq, void *cxt) +{ + struct bcm2708_fb *fb = cxt; + + /* FIXME: should read status register to check if this is + * actually interrupting us or not, in case this interrupt + * ever becomes shared amongst several DMA channels + * + * readl(dma_chan_base + BCM2708_DMA_CS) & BCM2708_DMA_IRQ; + */ + + /* acknowledge the interrupt */ + writel(BCM2708_DMA_INT, fb->dma_chan_base + BCM2708_DMA_CS); + + wake_up(&fb->dma_waitq); + return IRQ_HANDLED; +} + +static struct fb_ops bcm2708_fb_ops = { + .owner = THIS_MODULE, + .fb_check_var = bcm2708_fb_check_var, + .fb_set_par = bcm2708_fb_set_par, + .fb_setcolreg = bcm2708_fb_setcolreg, + .fb_blank = bcm2708_fb_blank, + .fb_fillrect = bcm2708_fb_fillrect, + .fb_copyarea = bcm2708_fb_copyarea, + .fb_imageblit = bcm2708_fb_imageblit, + .fb_pan_display = bcm2708_fb_pan_display, + .fb_ioctl = bcm2708_ioctl, +}; + +static int bcm2708_fb_register(struct bcm2708_fb *fb) +{ + int ret; + + fb->fb.fbops = &bcm2708_fb_ops; + fb->fb.flags = FBINFO_FLAG_DEFAULT | FBINFO_HWACCEL_COPYAREA; + fb->fb.pseudo_palette = fb->cmap; + + strncpy(fb->fb.fix.id, bcm2708_name, sizeof(fb->fb.fix.id)); + fb->fb.fix.type = FB_TYPE_PACKED_PIXELS; + fb->fb.fix.type_aux = 0; + fb->fb.fix.xpanstep = 1; + fb->fb.fix.ypanstep = 1; + fb->fb.fix.ywrapstep = 0; + fb->fb.fix.accel = FB_ACCEL_NONE; + + fb->fb.var.xres = fbwidth; + fb->fb.var.yres = fbheight; + fb->fb.var.xres_virtual = fbwidth; + fb->fb.var.yres_virtual = fbheight; + fb->fb.var.bits_per_pixel = fbdepth; + fb->fb.var.vmode = FB_VMODE_NONINTERLACED; + fb->fb.var.activate = FB_ACTIVATE_NOW; + fb->fb.var.nonstd = 0; + fb->fb.var.height = -1; /* height of picture in mm */ + fb->fb.var.width = -1; /* width of picture in mm */ + fb->fb.var.accel_flags = 0; + + fb->fb.monspecs.hfmin = 0; + fb->fb.monspecs.hfmax = 100000; + fb->fb.monspecs.vfmin = 0; + fb->fb.monspecs.vfmax = 400; + fb->fb.monspecs.dclkmin = 1000000; + fb->fb.monspecs.dclkmax = 100000000; + + bcm2708_fb_set_bitfields(&fb->fb.var); + init_waitqueue_head(&fb->dma_waitq); + + /* + * Allocate colourmap. + */ + + fb_set_var(&fb->fb, &fb->fb.var); + ret = bcm2708_fb_set_par(&fb->fb); + if (ret) + return ret; + + print_debug("BCM2708FB: registering framebuffer (%dx%d@%d) (%d)\n", fbwidth, + fbheight, fbdepth, fbswap); + + ret = register_framebuffer(&fb->fb); + print_debug("BCM2708FB: register framebuffer (%d)\n", ret); + if (ret == 0) + goto out; + + print_debug("BCM2708FB: cannot register framebuffer (%d)\n", ret); +out: + return ret; +} + +static int bcm2708_fb_probe(struct platform_device *dev) +{ + struct device_node *fw_np; + struct rpi_firmware *fw; + struct bcm2708_fb *fb; + int ret; + + fw_np = of_parse_phandle(dev->dev.of_node, "firmware", 0); +/* Remove comment when booting without Device Tree is no longer supported + if (!fw_np) { + dev_err(&dev->dev, "Missing firmware node\n"); + return -ENOENT; + } +*/ + fw = rpi_firmware_get(fw_np); + if (!fw) + return -EPROBE_DEFER; + + fb = kzalloc(sizeof(struct bcm2708_fb), GFP_KERNEL); + if (!fb) { + dev_err(&dev->dev, + "could not allocate new bcm2708_fb struct\n"); + ret = -ENOMEM; + goto free_region; + } + + fb->fw = fw; + bcm2708_fb_debugfs_init(fb); + + fb->cb_base = dma_alloc_writecombine(&dev->dev, SZ_64K, + &fb->cb_handle, GFP_KERNEL); + if (!fb->cb_base) { + dev_err(&dev->dev, "cannot allocate DMA CBs\n"); + ret = -ENOMEM; + goto free_fb; + } + + pr_info("BCM2708FB: allocated DMA memory %08x\n", + fb->cb_handle); + + ret = bcm_dma_chan_alloc(BCM_DMA_FEATURE_BULK, + &fb->dma_chan_base, &fb->dma_irq); + if (ret < 0) { + dev_err(&dev->dev, "couldn't allocate a DMA channel\n"); + goto free_cb; + } + fb->dma_chan = ret; + + ret = request_irq(fb->dma_irq, bcm2708_fb_dma_irq, + 0, "bcm2708_fb dma", fb); + if (ret) { + pr_err("%s: failed to request DMA irq\n", __func__); + goto free_dma_chan; + } + + + pr_info("BCM2708FB: allocated DMA channel %d @ %p\n", + fb->dma_chan, fb->dma_chan_base); + + fb->dev = dev; + fb->fb.device = &dev->dev; + + ret = bcm2708_fb_register(fb); + if (ret == 0) { + platform_set_drvdata(dev, fb); + goto out; + } + +free_dma_chan: + bcm_dma_chan_free(fb->dma_chan); +free_cb: + dma_free_writecombine(&dev->dev, SZ_64K, fb->cb_base, fb->cb_handle); +free_fb: + kfree(fb); +free_region: + dev_err(&dev->dev, "probe failed, err %d\n", ret); +out: + return ret; +} + +static int bcm2708_fb_remove(struct platform_device *dev) +{ + struct bcm2708_fb *fb = platform_get_drvdata(dev); + + platform_set_drvdata(dev, NULL); + + if (fb->fb.screen_base) + iounmap(fb->fb.screen_base); + unregister_framebuffer(&fb->fb); + + dma_free_writecombine(&dev->dev, SZ_64K, fb->cb_base, fb->cb_handle); + bcm_dma_chan_free(fb->dma_chan); + + bcm2708_fb_debugfs_deinit(fb); + + free_irq(fb->dma_irq, fb); + + kfree(fb); + + return 0; +} + +static const struct of_device_id bcm2708_fb_of_match_table[] = { + { .compatible = "brcm,bcm2708-fb", }, + {}, +}; +MODULE_DEVICE_TABLE(of, bcm2708_fb_of_match_table); + +static struct platform_driver bcm2708_fb_driver = { + .probe = bcm2708_fb_probe, + .remove = bcm2708_fb_remove, + .driver = { + .name = DRIVER_NAME, + .owner = THIS_MODULE, + .of_match_table = bcm2708_fb_of_match_table, + }, +}; + +static int __init bcm2708_fb_init(void) +{ + return platform_driver_register(&bcm2708_fb_driver); +} + +module_init(bcm2708_fb_init); + +static void __exit bcm2708_fb_exit(void) +{ + platform_driver_unregister(&bcm2708_fb_driver); +} + +module_exit(bcm2708_fb_exit); + +module_param(fbwidth, int, 0644); +module_param(fbheight, int, 0644); +module_param(fbdepth, int, 0644); +module_param(fbswap, int, 0644); + +MODULE_DESCRIPTION("BCM2708 framebuffer driver"); +MODULE_LICENSE("GPL"); + +MODULE_PARM_DESC(fbwidth, "Width of ARM Framebuffer"); +MODULE_PARM_DESC(fbheight, "Height of ARM Framebuffer"); +MODULE_PARM_DESC(fbdepth, "Bit depth of ARM Framebuffer"); +MODULE_PARM_DESC(fbswap, "Swap order of red and blue in 24 and 32 bit modes"); --- linux-raspi2-4.2.0.orig/drivers/video/fbdev/core/cfbimgblt.c +++ linux-raspi2-4.2.0/drivers/video/fbdev/core/cfbimgblt.c @@ -28,6 +28,11 @@ * * Also need to add code to deal with cards endians that are different than * the native cpu endians. I also need to deal with MSB position in the word. + * Modified by Harm Hanemaaijer (fgenfb@yahoo.com) 2013: + * - Provide optimized versions of fast_imageblit for 16 and 32bpp that are + * significantly faster than the previous implementation. + * - Simplify the fast/slow_imageblit selection code, avoiding integer + * divides. */ #include #include @@ -262,6 +267,133 @@ } } +/* + * Optimized fast_imageblit for bpp == 16. ppw = 2, bit_mask = 3 folded + * into the code, main loop unrolled. + */ + +static inline void fast_imageblit16(const struct fb_image *image, + struct fb_info *p, u8 __iomem * dst1, + u32 fgcolor, u32 bgcolor) +{ + u32 fgx = fgcolor, bgx = bgcolor; + u32 spitch = (image->width + 7) / 8; + u32 end_mask, eorx; + const char *s = image->data, *src; + u32 __iomem *dst; + const u32 *tab = NULL; + int i, j, k; + + tab = fb_be_math(p) ? cfb_tab16_be : cfb_tab16_le; + + fgx <<= 16; + bgx <<= 16; + fgx |= fgcolor; + bgx |= bgcolor; + + eorx = fgx ^ bgx; + k = image->width / 2; + + for (i = image->height; i--;) { + dst = (u32 __iomem *) dst1; + src = s; + + j = k; + while (j >= 4) { + u8 bits = *src; + end_mask = tab[(bits >> 6) & 3]; + FB_WRITEL((end_mask & eorx) ^ bgx, dst++); + end_mask = tab[(bits >> 4) & 3]; + FB_WRITEL((end_mask & eorx) ^ bgx, dst++); + end_mask = tab[(bits >> 2) & 3]; + FB_WRITEL((end_mask & eorx) ^ bgx, dst++); + end_mask = tab[bits & 3]; + FB_WRITEL((end_mask & eorx) ^ bgx, dst++); + src++; + j -= 4; + } + if (j != 0) { + u8 bits = *src; + end_mask = tab[(bits >> 6) & 3]; + FB_WRITEL((end_mask & eorx) ^ bgx, dst++); + if (j >= 2) { + end_mask = tab[(bits >> 4) & 3]; + FB_WRITEL((end_mask & eorx) ^ bgx, dst++); + if (j == 3) { + end_mask = tab[(bits >> 2) & 3]; + FB_WRITEL((end_mask & eorx) ^ bgx, dst); + } + } + } + dst1 += p->fix.line_length; + s += spitch; + } +} + +/* + * Optimized fast_imageblit for bpp == 32. ppw = 1, bit_mask = 1 folded + * into the code, main loop unrolled. + */ + +static inline void fast_imageblit32(const struct fb_image *image, + struct fb_info *p, u8 __iomem * dst1, + u32 fgcolor, u32 bgcolor) +{ + u32 fgx = fgcolor, bgx = bgcolor; + u32 spitch = (image->width + 7) / 8; + u32 end_mask, eorx; + const char *s = image->data, *src; + u32 __iomem *dst; + const u32 *tab = NULL; + int i, j, k; + + tab = cfb_tab32; + + eorx = fgx ^ bgx; + k = image->width; + + for (i = image->height; i--;) { + dst = (u32 __iomem *) dst1; + src = s; + + j = k; + while (j >= 8) { + u8 bits = *src; + end_mask = tab[(bits >> 7) & 1]; + FB_WRITEL((end_mask & eorx) ^ bgx, dst++); + end_mask = tab[(bits >> 6) & 1]; + FB_WRITEL((end_mask & eorx) ^ bgx, dst++); + end_mask = tab[(bits >> 5) & 1]; + FB_WRITEL((end_mask & eorx) ^ bgx, dst++); + end_mask = tab[(bits >> 4) & 1]; + FB_WRITEL((end_mask & eorx) ^ bgx, dst++); + end_mask = tab[(bits >> 3) & 1]; + FB_WRITEL((end_mask & eorx) ^ bgx, dst++); + end_mask = tab[(bits >> 2) & 1]; + FB_WRITEL((end_mask & eorx) ^ bgx, dst++); + end_mask = tab[(bits >> 1) & 1]; + FB_WRITEL((end_mask & eorx) ^ bgx, dst++); + end_mask = tab[bits & 1]; + FB_WRITEL((end_mask & eorx) ^ bgx, dst++); + src++; + j -= 8; + } + if (j != 0) { + u32 bits = (u32) * src; + while (j > 1) { + end_mask = tab[(bits >> 7) & 1]; + FB_WRITEL((end_mask & eorx) ^ bgx, dst++); + bits <<= 1; + j--; + } + end_mask = tab[(bits >> 7) & 1]; + FB_WRITEL((end_mask & eorx) ^ bgx, dst); + } + dst1 += p->fix.line_length; + s += spitch; + } +} + void cfb_imageblit(struct fb_info *p, const struct fb_image *image) { u32 fgcolor, bgcolor, start_index, bitstart, pitch_index = 0; @@ -294,11 +426,21 @@ bgcolor = image->bg_color; } - if (32 % bpp == 0 && !start_index && !pitch_index && - ((width & (32/bpp-1)) == 0) && - bpp >= 8 && bpp <= 32) - fast_imageblit(image, p, dst1, fgcolor, bgcolor); - else + if (!start_index && !pitch_index) { + if (bpp == 32) + fast_imageblit32(image, p, dst1, fgcolor, + bgcolor); + else if (bpp == 16 && (width & 1) == 0) + fast_imageblit16(image, p, dst1, fgcolor, + bgcolor); + else if (bpp == 8 && (width & 3) == 0) + fast_imageblit(image, p, dst1, fgcolor, + bgcolor); + else + slow_imageblit(image, p, dst1, fgcolor, + bgcolor, + start_index, pitch_index); + } else slow_imageblit(image, p, dst1, fgcolor, bgcolor, start_index, pitch_index); } else --- linux-raspi2-4.2.0.orig/drivers/video/fbdev/core/fbmem.c +++ linux-raspi2-4.2.0/drivers/video/fbdev/core/fbmem.c @@ -1084,6 +1084,25 @@ } EXPORT_SYMBOL(fb_blank); +static int fb_copyarea_user(struct fb_info *info, + struct fb_copyarea *copy) +{ + int ret = 0; + if (!lock_fb_info(info)) + return -ENODEV; + if (copy->dx + copy->width > info->var.xres || + copy->sx + copy->width > info->var.xres || + copy->dy + copy->height > info->var.yres || + copy->sy + copy->height > info->var.yres) { + ret = -EINVAL; + goto out; + } + info->fbops->fb_copyarea(info, copy); +out: + unlock_fb_info(info); + return ret; +} + static long do_fb_ioctl(struct fb_info *info, unsigned int cmd, unsigned long arg) { @@ -1094,6 +1113,7 @@ struct fb_cmap cmap_from; struct fb_cmap_user cmap; struct fb_event event; + struct fb_copyarea copy; void __user *argp = (void __user *)arg; long ret = 0; @@ -1211,6 +1231,15 @@ unlock_fb_info(info); console_unlock(); break; + case FBIOCOPYAREA: + if (info->flags & FBINFO_HWACCEL_COPYAREA) { + /* only provide this ioctl if it is accelerated */ + if (copy_from_user(©, argp, sizeof(copy))) + return -EFAULT; + ret = fb_copyarea_user(info, ©); + break; + } + /* fall through */ default: if (!lock_fb_info(info)) return -ENODEV; @@ -1365,6 +1394,7 @@ case FBIOPAN_DISPLAY: case FBIOGET_CON2FBMAP: case FBIOPUT_CON2FBMAP: + case FBIOCOPYAREA: arg = (unsigned long) compat_ptr(arg); case FBIOBLANK: ret = do_fb_ioctl(info, cmd, arg); --- linux-raspi2-4.2.0.orig/drivers/video/fbdev/hyperv_fb.c +++ linux-raspi2-4.2.0/drivers/video/fbdev/hyperv_fb.c @@ -213,7 +213,7 @@ struct hvfb_par { struct fb_info *info; - struct resource mem; + struct resource *mem; bool fb_ready; /* fb device is ready */ struct completion wait; u32 synthvid_version; @@ -677,26 +677,18 @@ /* Get framebuffer memory from Hyper-V video pci space */ -static int hvfb_getmem(struct fb_info *info) +static int hvfb_getmem(struct hv_device *hdev, struct fb_info *info) { struct hvfb_par *par = info->par; struct pci_dev *pdev = NULL; void __iomem *fb_virt; int gen2vm = efi_enabled(EFI_BOOT); + resource_size_t pot_start, pot_end; int ret; - par->mem.name = KBUILD_MODNAME; - par->mem.flags = IORESOURCE_MEM | IORESOURCE_BUSY; if (gen2vm) { - ret = allocate_resource(&hyperv_mmio, &par->mem, - screen_fb_size, - 0, -1, - screen_fb_size, - NULL, NULL); - if (ret != 0) { - pr_err("Unable to allocate framebuffer memory\n"); - return -ENODEV; - } + pot_start = 0; + pot_end = -1; } else { pdev = pci_get_device(PCI_VENDOR_ID_MICROSOFT, PCI_DEVICE_ID_HYPERV_VIDEO, NULL); @@ -709,16 +701,18 @@ pci_resource_len(pdev, 0) < screen_fb_size) goto err1; - par->mem.end = pci_resource_end(pdev, 0); - par->mem.start = par->mem.end - screen_fb_size + 1; - ret = request_resource(&pdev->resource[0], &par->mem); - if (ret != 0) { - pr_err("Unable to request framebuffer memory\n"); - goto err1; - } + pot_end = pci_resource_end(pdev, 0); + pot_start = pot_end - screen_fb_size + 1; + } + + ret = vmbus_allocate_mmio(&par->mem, hdev, pot_start, pot_end, + screen_fb_size, 0x100000, true); + if (ret != 0) { + pr_err("Unable to allocate framebuffer memory\n"); + goto err1; } - fb_virt = ioremap(par->mem.start, screen_fb_size); + fb_virt = ioremap(par->mem->start, screen_fb_size); if (!fb_virt) goto err2; @@ -736,7 +730,7 @@ info->apertures->ranges[0].size = pci_resource_len(pdev, 0); } - info->fix.smem_start = par->mem.start; + info->fix.smem_start = par->mem->start; info->fix.smem_len = screen_fb_size; info->screen_base = fb_virt; info->screen_size = screen_fb_size; @@ -749,7 +743,8 @@ err3: iounmap(fb_virt); err2: - release_resource(&par->mem); + release_mem_region(par->mem->start, screen_fb_size); + par->mem = NULL; err1: if (!gen2vm) pci_dev_put(pdev); @@ -763,7 +758,8 @@ struct hvfb_par *par = info->par; iounmap(info->screen_base); - release_resource(&par->mem); + release_mem_region(par->mem->start, screen_fb_size); + par->mem = NULL; } @@ -794,7 +790,7 @@ goto error1; } - ret = hvfb_getmem(info); + ret = hvfb_getmem(hdev, info); if (ret) { pr_err("No memory for framebuffer\n"); goto error2; --- linux-raspi2-4.2.0.orig/drivers/video/fbdev/rpisense-fb.c +++ linux-raspi2-4.2.0/drivers/video/fbdev/rpisense-fb.c @@ -0,0 +1,293 @@ +/* + * Raspberry Pi Sense HAT framebuffer driver + * http://raspberrypi.org + * + * Copyright (C) 2015 Raspberry Pi + * + * Author: Serge Schneider + * + * 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. + * + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include + +static bool lowlight; +module_param(lowlight, bool, 0); +MODULE_PARM_DESC(lowlight, "Reduce LED matrix brightness to one third"); + +struct rpisense *rpisense; + +struct rpisense_fb_param { + char __iomem *vmem; + u8 *vmem_work; + u32 vmemsize; + u8 *gamma; +}; + +static u8 gamma_default[32] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, + 0x02, 0x02, 0x03, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0E, 0x0F, 0x11, + 0x12, 0x14, 0x15, 0x17, 0x19, 0x1B, 0x1D, 0x1F,}; + +static u8 gamma_low[32] = {0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, + 0x03, 0x03, 0x03, 0x04, 0x04, 0x05, 0x05, 0x06, + 0x06, 0x07, 0x07, 0x08, 0x08, 0x09, 0x0A, 0x0A,}; + +static u8 gamma_user[32]; + +static struct rpisense_fb_param rpisense_fb_param = { + .vmem = NULL, + .vmemsize = 128, + .gamma = gamma_default, +}; + +static struct fb_deferred_io rpisense_fb_defio; + +static struct fb_fix_screeninfo rpisense_fb_fix = { + .id = "RPi-Sense FB", + .type = FB_TYPE_PACKED_PIXELS, + .visual = FB_VISUAL_TRUECOLOR, + .xpanstep = 0, + .ypanstep = 0, + .ywrapstep = 0, + .accel = FB_ACCEL_NONE, + .line_length = 16, +}; + +static struct fb_var_screeninfo rpisense_fb_var = { + .xres = 8, + .yres = 8, + .xres_virtual = 8, + .yres_virtual = 8, + .bits_per_pixel = 16, + .red = {11, 5, 0}, + .green = {5, 6, 0}, + .blue = {0, 5, 0}, +}; + +static ssize_t rpisense_fb_write(struct fb_info *info, + const char __user *buf, size_t count, + loff_t *ppos) +{ + ssize_t res = fb_sys_write(info, buf, count, ppos); + + schedule_delayed_work(&info->deferred_work, rpisense_fb_defio.delay); + return res; +} + +static void rpisense_fb_fillrect(struct fb_info *info, + const struct fb_fillrect *rect) +{ + sys_fillrect(info, rect); + schedule_delayed_work(&info->deferred_work, rpisense_fb_defio.delay); +} + +static void rpisense_fb_copyarea(struct fb_info *info, + const struct fb_copyarea *area) +{ + sys_copyarea(info, area); + schedule_delayed_work(&info->deferred_work, rpisense_fb_defio.delay); +} + +static void rpisense_fb_imageblit(struct fb_info *info, + const struct fb_image *image) +{ + sys_imageblit(info, image); + schedule_delayed_work(&info->deferred_work, rpisense_fb_defio.delay); +} + +static void rpisense_fb_deferred_io(struct fb_info *info, + struct list_head *pagelist) +{ + int i; + int j; + u8 *vmem_work = rpisense_fb_param.vmem_work; + u16 *mem = (u16 *)rpisense_fb_param.vmem; + u8 *gamma = rpisense_fb_param.gamma; + + vmem_work[0] = 0; + for (j = 0; j < 8; j++) { + for (i = 0; i < 8; i++) { + vmem_work[(j * 24) + i + 1] = + gamma[(mem[(j * 8) + i] >> 11) & 0x1F]; + vmem_work[(j * 24) + (i + 8) + 1] = + gamma[(mem[(j * 8) + i] >> 6) & 0x1F]; + vmem_work[(j * 24) + (i + 16) + 1] = + gamma[(mem[(j * 8) + i]) & 0x1F]; + } + } + rpisense_block_write(rpisense, vmem_work, 193); +} + +static struct fb_deferred_io rpisense_fb_defio = { + .delay = HZ/100, + .deferred_io = rpisense_fb_deferred_io, +}; + +static int rpisense_fb_ioctl(struct fb_info *info, unsigned int cmd, + unsigned long arg) +{ + switch (cmd) { + case SENSEFB_FBIOGET_GAMMA: + if (copy_to_user((void __user *) arg, rpisense_fb_param.gamma, + sizeof(u8[32]))) + return -EFAULT; + return 0; + case SENSEFB_FBIOSET_GAMMA: + if (copy_from_user(gamma_user, (void __user *)arg, + sizeof(u8[32]))) + return -EFAULT; + rpisense_fb_param.gamma = gamma_user; + schedule_delayed_work(&info->deferred_work, + rpisense_fb_defio.delay); + return 0; + case SENSEFB_FBIORESET_GAMMA: + switch (arg) { + case 0: + rpisense_fb_param.gamma = gamma_default; + break; + case 1: + rpisense_fb_param.gamma = gamma_low; + break; + case 2: + rpisense_fb_param.gamma = gamma_user; + break; + default: + return -EINVAL; + } + schedule_delayed_work(&info->deferred_work, + rpisense_fb_defio.delay); + break; + default: + return -EINVAL; + } + return 0; +} + +static struct fb_ops rpisense_fb_ops = { + .owner = THIS_MODULE, + .fb_read = fb_sys_read, + .fb_write = rpisense_fb_write, + .fb_fillrect = rpisense_fb_fillrect, + .fb_copyarea = rpisense_fb_copyarea, + .fb_imageblit = rpisense_fb_imageblit, + .fb_ioctl = rpisense_fb_ioctl, +}; + +static int rpisense_fb_probe(struct platform_device *pdev) +{ + struct fb_info *info; + int ret = -ENOMEM; + struct rpisense_fb *rpisense_fb; + + rpisense = rpisense_get_dev(); + rpisense_fb = &rpisense->framebuffer; + + rpisense_fb_param.vmem = vzalloc(rpisense_fb_param.vmemsize); + if (!rpisense_fb_param.vmem) + return ret; + + rpisense_fb_param.vmem_work = devm_kmalloc(&pdev->dev, 193, GFP_KERNEL); + if (!rpisense_fb_param.vmem_work) + goto err_malloc; + + info = framebuffer_alloc(0, &pdev->dev); + if (!info) { + dev_err(&pdev->dev, "Could not allocate framebuffer.\n"); + goto err_malloc; + } + rpisense_fb->info = info; + + rpisense_fb_fix.smem_start = (unsigned long)rpisense_fb_param.vmem; + rpisense_fb_fix.smem_len = rpisense_fb_param.vmemsize; + + info->fbops = &rpisense_fb_ops; + info->fix = rpisense_fb_fix; + info->var = rpisense_fb_var; + info->fbdefio = &rpisense_fb_defio; + info->flags = FBINFO_FLAG_DEFAULT | FBINFO_VIRTFB; + info->screen_base = rpisense_fb_param.vmem; + info->screen_size = rpisense_fb_param.vmemsize; + + if (lowlight) + rpisense_fb_param.gamma = gamma_low; + + fb_deferred_io_init(info); + + ret = register_framebuffer(info); + if (ret < 0) { + dev_err(&pdev->dev, "Could not register framebuffer.\n"); + goto err_fballoc; + } + + fb_info(info, "%s frame buffer device\n", info->fix.id); + schedule_delayed_work(&info->deferred_work, rpisense_fb_defio.delay); + return 0; +err_fballoc: + framebuffer_release(info); +err_malloc: + vfree(rpisense_fb_param.vmem); + return ret; +} + +static int rpisense_fb_remove(struct platform_device *pdev) +{ + struct rpisense_fb *rpisense_fb = &rpisense->framebuffer; + struct fb_info *info = rpisense_fb->info; + + if (info) { + unregister_framebuffer(info); + fb_deferred_io_cleanup(info); + framebuffer_release(info); + vfree(rpisense_fb_param.vmem); + } + + return 0; +} + +#ifdef CONFIG_OF +static const struct of_device_id rpisense_fb_id[] = { + { .compatible = "rpi,rpi-sense-fb" }, + { }, +}; +MODULE_DEVICE_TABLE(of, rpisense_fb_id); +#endif + +static struct platform_device_id rpisense_fb_device_id[] = { + { .name = "rpi-sense-fb" }, + { }, +}; +MODULE_DEVICE_TABLE(platform, rpisense_fb_device_id); + +static struct platform_driver rpisense_fb_driver = { + .probe = rpisense_fb_probe, + .remove = rpisense_fb_remove, + .driver = { + .name = "rpi-sense-fb", + .owner = THIS_MODULE, + }, +}; + +module_platform_driver(rpisense_fb_driver); + +MODULE_DESCRIPTION("Raspberry Pi Sense HAT framebuffer driver"); +MODULE_AUTHOR("Serge Schneider "); +MODULE_LICENSE("GPL"); + --- linux-raspi2-4.2.0.orig/drivers/video/logo/logo_linux_clut224.ppm +++ linux-raspi2-4.2.0/drivers/video/logo/logo_linux_clut224.ppm @@ -1,1604 +1,883 @@ P3 -# Standard 224-color Linux logo -80 80 +63 80 255 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 6 6 6 6 6 6 10 10 10 10 10 10 - 10 10 10 6 6 6 6 6 6 6 6 6 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 6 6 6 10 10 10 14 14 14 - 22 22 22 26 26 26 30 30 30 34 34 34 - 30 30 30 30 30 30 26 26 26 18 18 18 - 14 14 14 10 10 10 6 6 6 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 1 0 0 1 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 6 6 6 14 14 14 26 26 26 42 42 42 - 54 54 54 66 66 66 78 78 78 78 78 78 - 78 78 78 74 74 74 66 66 66 54 54 54 - 42 42 42 26 26 26 18 18 18 10 10 10 - 6 6 6 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 1 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 10 10 10 - 22 22 22 42 42 42 66 66 66 86 86 86 - 66 66 66 38 38 38 38 38 38 22 22 22 - 26 26 26 34 34 34 54 54 54 66 66 66 - 86 86 86 70 70 70 46 46 46 26 26 26 - 14 14 14 6 6 6 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 1 0 0 1 0 0 1 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 10 10 10 26 26 26 - 50 50 50 82 82 82 58 58 58 6 6 6 - 2 2 6 2 2 6 2 2 6 2 2 6 - 2 2 6 2 2 6 2 2 6 2 2 6 - 6 6 6 54 54 54 86 86 86 66 66 66 - 38 38 38 18 18 18 6 6 6 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 6 6 6 22 22 22 50 50 50 - 78 78 78 34 34 34 2 2 6 2 2 6 - 2 2 6 2 2 6 2 2 6 2 2 6 - 2 2 6 2 2 6 2 2 6 2 2 6 - 2 2 6 2 2 6 6 6 6 70 70 70 - 78 78 78 46 46 46 22 22 22 6 6 6 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 1 0 0 1 0 0 1 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 6 6 6 18 18 18 42 42 42 82 82 82 - 26 26 26 2 2 6 2 2 6 2 2 6 - 2 2 6 2 2 6 2 2 6 2 2 6 - 2 2 6 2 2 6 2 2 6 14 14 14 - 46 46 46 34 34 34 6 6 6 2 2 6 - 42 42 42 78 78 78 42 42 42 18 18 18 - 6 6 6 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 1 0 0 0 0 0 1 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 10 10 10 30 30 30 66 66 66 58 58 58 - 2 2 6 2 2 6 2 2 6 2 2 6 - 2 2 6 2 2 6 2 2 6 2 2 6 - 2 2 6 2 2 6 2 2 6 26 26 26 - 86 86 86 101 101 101 46 46 46 10 10 10 - 2 2 6 58 58 58 70 70 70 34 34 34 - 10 10 10 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 1 0 0 1 0 0 1 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 14 14 14 42 42 42 86 86 86 10 10 10 - 2 2 6 2 2 6 2 2 6 2 2 6 - 2 2 6 2 2 6 2 2 6 2 2 6 - 2 2 6 2 2 6 2 2 6 30 30 30 - 94 94 94 94 94 94 58 58 58 26 26 26 - 2 2 6 6 6 6 78 78 78 54 54 54 - 22 22 22 6 6 6 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 6 6 6 - 22 22 22 62 62 62 62 62 62 2 2 6 - 2 2 6 2 2 6 2 2 6 2 2 6 - 2 2 6 2 2 6 2 2 6 2 2 6 - 2 2 6 2 2 6 2 2 6 26 26 26 - 54 54 54 38 38 38 18 18 18 10 10 10 - 2 2 6 2 2 6 34 34 34 82 82 82 - 38 38 38 14 14 14 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 1 0 0 1 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 6 6 6 - 30 30 30 78 78 78 30 30 30 2 2 6 - 2 2 6 2 2 6 2 2 6 2 2 6 - 2 2 6 2 2 6 2 2 6 2 2 6 - 2 2 6 2 2 6 2 2 6 10 10 10 - 10 10 10 2 2 6 2 2 6 2 2 6 - 2 2 6 2 2 6 2 2 6 78 78 78 - 50 50 50 18 18 18 6 6 6 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 1 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 10 10 10 - 38 38 38 86 86 86 14 14 14 2 2 6 - 2 2 6 2 2 6 2 2 6 2 2 6 - 2 2 6 2 2 6 2 2 6 2 2 6 - 2 2 6 2 2 6 2 2 6 2 2 6 - 2 2 6 2 2 6 2 2 6 2 2 6 - 2 2 6 2 2 6 2 2 6 54 54 54 - 66 66 66 26 26 26 6 6 6 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 1 0 0 1 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 14 14 14 - 42 42 42 82 82 82 2 2 6 2 2 6 - 2 2 6 6 6 6 10 10 10 2 2 6 - 2 2 6 2 2 6 2 2 6 2 2 6 - 2 2 6 2 2 6 2 2 6 6 6 6 - 14 14 14 10 10 10 2 2 6 2 2 6 - 2 2 6 2 2 6 2 2 6 18 18 18 - 82 82 82 34 34 34 10 10 10 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 1 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 14 14 14 - 46 46 46 86 86 86 2 2 6 2 2 6 - 6 6 6 6 6 6 22 22 22 34 34 34 - 6 6 6 2 2 6 2 2 6 2 2 6 - 2 2 6 2 2 6 18 18 18 34 34 34 - 10 10 10 50 50 50 22 22 22 2 2 6 - 2 2 6 2 2 6 2 2 6 10 10 10 - 86 86 86 42 42 42 14 14 14 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 1 0 0 1 0 0 1 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 14 14 14 - 46 46 46 86 86 86 2 2 6 2 2 6 - 38 38 38 116 116 116 94 94 94 22 22 22 - 22 22 22 2 2 6 2 2 6 2 2 6 - 14 14 14 86 86 86 138 138 138 162 162 162 -154 154 154 38 38 38 26 26 26 6 6 6 - 2 2 6 2 2 6 2 2 6 2 2 6 - 86 86 86 46 46 46 14 14 14 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 14 14 14 - 46 46 46 86 86 86 2 2 6 14 14 14 -134 134 134 198 198 198 195 195 195 116 116 116 - 10 10 10 2 2 6 2 2 6 6 6 6 -101 98 89 187 187 187 210 210 210 218 218 218 -214 214 214 134 134 134 14 14 14 6 6 6 - 2 2 6 2 2 6 2 2 6 2 2 6 - 86 86 86 50 50 50 18 18 18 6 6 6 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 1 0 0 0 - 0 0 1 0 0 1 0 0 1 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 14 14 14 - 46 46 46 86 86 86 2 2 6 54 54 54 -218 218 218 195 195 195 226 226 226 246 246 246 - 58 58 58 2 2 6 2 2 6 30 30 30 -210 210 210 253 253 253 174 174 174 123 123 123 -221 221 221 234 234 234 74 74 74 2 2 6 - 2 2 6 2 2 6 2 2 6 2 2 6 - 70 70 70 58 58 58 22 22 22 6 6 6 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 14 14 14 - 46 46 46 82 82 82 2 2 6 106 106 106 -170 170 170 26 26 26 86 86 86 226 226 226 -123 123 123 10 10 10 14 14 14 46 46 46 -231 231 231 190 190 190 6 6 6 70 70 70 - 90 90 90 238 238 238 158 158 158 2 2 6 - 2 2 6 2 2 6 2 2 6 2 2 6 - 70 70 70 58 58 58 22 22 22 6 6 6 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 1 0 0 0 - 0 0 1 0 0 1 0 0 1 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 14 14 14 - 42 42 42 86 86 86 6 6 6 116 116 116 -106 106 106 6 6 6 70 70 70 149 149 149 -128 128 128 18 18 18 38 38 38 54 54 54 -221 221 221 106 106 106 2 2 6 14 14 14 - 46 46 46 190 190 190 198 198 198 2 2 6 - 2 2 6 2 2 6 2 2 6 2 2 6 - 74 74 74 62 62 62 22 22 22 6 6 6 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 1 0 0 0 - 0 0 1 0 0 0 0 0 1 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 14 14 14 - 42 42 42 94 94 94 14 14 14 101 101 101 -128 128 128 2 2 6 18 18 18 116 116 116 -118 98 46 121 92 8 121 92 8 98 78 10 -162 162 162 106 106 106 2 2 6 2 2 6 - 2 2 6 195 195 195 195 195 195 6 6 6 - 2 2 6 2 2 6 2 2 6 2 2 6 - 74 74 74 62 62 62 22 22 22 6 6 6 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 1 0 0 1 - 0 0 1 0 0 0 0 0 1 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 10 10 10 - 38 38 38 90 90 90 14 14 14 58 58 58 -210 210 210 26 26 26 54 38 6 154 114 10 -226 170 11 236 186 11 225 175 15 184 144 12 -215 174 15 175 146 61 37 26 9 2 2 6 - 70 70 70 246 246 246 138 138 138 2 2 6 - 2 2 6 2 2 6 2 2 6 2 2 6 - 70 70 70 66 66 66 26 26 26 6 6 6 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 10 10 10 - 38 38 38 86 86 86 14 14 14 10 10 10 -195 195 195 188 164 115 192 133 9 225 175 15 -239 182 13 234 190 10 232 195 16 232 200 30 -245 207 45 241 208 19 232 195 16 184 144 12 -218 194 134 211 206 186 42 42 42 2 2 6 - 2 2 6 2 2 6 2 2 6 2 2 6 - 50 50 50 74 74 74 30 30 30 6 6 6 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 10 10 10 - 34 34 34 86 86 86 14 14 14 2 2 6 -121 87 25 192 133 9 219 162 10 239 182 13 -236 186 11 232 195 16 241 208 19 244 214 54 -246 218 60 246 218 38 246 215 20 241 208 19 -241 208 19 226 184 13 121 87 25 2 2 6 - 2 2 6 2 2 6 2 2 6 2 2 6 - 50 50 50 82 82 82 34 34 34 10 10 10 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 10 10 10 - 34 34 34 82 82 82 30 30 30 61 42 6 -180 123 7 206 145 10 230 174 11 239 182 13 -234 190 10 238 202 15 241 208 19 246 218 74 -246 218 38 246 215 20 246 215 20 246 215 20 -226 184 13 215 174 15 184 144 12 6 6 6 - 2 2 6 2 2 6 2 2 6 2 2 6 - 26 26 26 94 94 94 42 42 42 14 14 14 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 10 10 10 - 30 30 30 78 78 78 50 50 50 104 69 6 -192 133 9 216 158 10 236 178 12 236 186 11 -232 195 16 241 208 19 244 214 54 245 215 43 -246 215 20 246 215 20 241 208 19 198 155 10 -200 144 11 216 158 10 156 118 10 2 2 6 - 2 2 6 2 2 6 2 2 6 2 2 6 - 6 6 6 90 90 90 54 54 54 18 18 18 - 6 6 6 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 10 10 10 - 30 30 30 78 78 78 46 46 46 22 22 22 -137 92 6 210 162 10 239 182 13 238 190 10 -238 202 15 241 208 19 246 215 20 246 215 20 -241 208 19 203 166 17 185 133 11 210 150 10 -216 158 10 210 150 10 102 78 10 2 2 6 - 6 6 6 54 54 54 14 14 14 2 2 6 - 2 2 6 62 62 62 74 74 74 30 30 30 - 10 10 10 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 10 10 10 - 34 34 34 78 78 78 50 50 50 6 6 6 - 94 70 30 139 102 15 190 146 13 226 184 13 -232 200 30 232 195 16 215 174 15 190 146 13 -168 122 10 192 133 9 210 150 10 213 154 11 -202 150 34 182 157 106 101 98 89 2 2 6 - 2 2 6 78 78 78 116 116 116 58 58 58 - 2 2 6 22 22 22 90 90 90 46 46 46 - 18 18 18 6 6 6 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 10 10 10 - 38 38 38 86 86 86 50 50 50 6 6 6 -128 128 128 174 154 114 156 107 11 168 122 10 -198 155 10 184 144 12 197 138 11 200 144 11 -206 145 10 206 145 10 197 138 11 188 164 115 -195 195 195 198 198 198 174 174 174 14 14 14 - 2 2 6 22 22 22 116 116 116 116 116 116 - 22 22 22 2 2 6 74 74 74 70 70 70 - 30 30 30 10 10 10 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 6 6 6 18 18 18 - 50 50 50 101 101 101 26 26 26 10 10 10 -138 138 138 190 190 190 174 154 114 156 107 11 -197 138 11 200 144 11 197 138 11 192 133 9 -180 123 7 190 142 34 190 178 144 187 187 187 -202 202 202 221 221 221 214 214 214 66 66 66 - 2 2 6 2 2 6 50 50 50 62 62 62 - 6 6 6 2 2 6 10 10 10 90 90 90 - 50 50 50 18 18 18 6 6 6 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 10 10 10 34 34 34 - 74 74 74 74 74 74 2 2 6 6 6 6 -144 144 144 198 198 198 190 190 190 178 166 146 -154 121 60 156 107 11 156 107 11 168 124 44 -174 154 114 187 187 187 190 190 190 210 210 210 -246 246 246 253 253 253 253 253 253 182 182 182 - 6 6 6 2 2 6 2 2 6 2 2 6 - 2 2 6 2 2 6 2 2 6 62 62 62 - 74 74 74 34 34 34 14 14 14 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 10 10 10 22 22 22 54 54 54 - 94 94 94 18 18 18 2 2 6 46 46 46 -234 234 234 221 221 221 190 190 190 190 190 190 -190 190 190 187 187 187 187 187 187 190 190 190 -190 190 190 195 195 195 214 214 214 242 242 242 -253 253 253 253 253 253 253 253 253 253 253 253 - 82 82 82 2 2 6 2 2 6 2 2 6 - 2 2 6 2 2 6 2 2 6 14 14 14 - 86 86 86 54 54 54 22 22 22 6 6 6 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 6 6 6 18 18 18 46 46 46 90 90 90 - 46 46 46 18 18 18 6 6 6 182 182 182 -253 253 253 246 246 246 206 206 206 190 190 190 -190 190 190 190 190 190 190 190 190 190 190 190 -206 206 206 231 231 231 250 250 250 253 253 253 -253 253 253 253 253 253 253 253 253 253 253 253 -202 202 202 14 14 14 2 2 6 2 2 6 - 2 2 6 2 2 6 2 2 6 2 2 6 - 42 42 42 86 86 86 42 42 42 18 18 18 - 6 6 6 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 6 6 6 - 14 14 14 38 38 38 74 74 74 66 66 66 - 2 2 6 6 6 6 90 90 90 250 250 250 -253 253 253 253 253 253 238 238 238 198 198 198 -190 190 190 190 190 190 195 195 195 221 221 221 -246 246 246 253 253 253 253 253 253 253 253 253 -253 253 253 253 253 253 253 253 253 253 253 253 -253 253 253 82 82 82 2 2 6 2 2 6 - 2 2 6 2 2 6 2 2 6 2 2 6 - 2 2 6 78 78 78 70 70 70 34 34 34 - 14 14 14 6 6 6 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 14 14 14 - 34 34 34 66 66 66 78 78 78 6 6 6 - 2 2 6 18 18 18 218 218 218 253 253 253 -253 253 253 253 253 253 253 253 253 246 246 246 -226 226 226 231 231 231 246 246 246 253 253 253 -253 253 253 253 253 253 253 253 253 253 253 253 -253 253 253 253 253 253 253 253 253 253 253 253 -253 253 253 178 178 178 2 2 6 2 2 6 - 2 2 6 2 2 6 2 2 6 2 2 6 - 2 2 6 18 18 18 90 90 90 62 62 62 - 30 30 30 10 10 10 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 10 10 10 26 26 26 - 58 58 58 90 90 90 18 18 18 2 2 6 - 2 2 6 110 110 110 253 253 253 253 253 253 -253 253 253 253 253 253 253 253 253 253 253 253 -250 250 250 253 253 253 253 253 253 253 253 253 -253 253 253 253 253 253 253 253 253 253 253 253 -253 253 253 253 253 253 253 253 253 253 253 253 -253 253 253 231 231 231 18 18 18 2 2 6 - 2 2 6 2 2 6 2 2 6 2 2 6 - 2 2 6 2 2 6 18 18 18 94 94 94 - 54 54 54 26 26 26 10 10 10 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 6 6 6 22 22 22 50 50 50 - 90 90 90 26 26 26 2 2 6 2 2 6 - 14 14 14 195 195 195 250 250 250 253 253 253 -253 253 253 253 253 253 253 253 253 253 253 253 -253 253 253 253 253 253 253 253 253 253 253 253 -253 253 253 253 253 253 253 253 253 253 253 253 -253 253 253 253 253 253 253 253 253 253 253 253 -250 250 250 242 242 242 54 54 54 2 2 6 - 2 2 6 2 2 6 2 2 6 2 2 6 - 2 2 6 2 2 6 2 2 6 38 38 38 - 86 86 86 50 50 50 22 22 22 6 6 6 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 6 6 6 14 14 14 38 38 38 82 82 82 - 34 34 34 2 2 6 2 2 6 2 2 6 - 42 42 42 195 195 195 246 246 246 253 253 253 -253 253 253 253 253 253 253 253 253 250 250 250 -242 242 242 242 242 242 250 250 250 253 253 253 -253 253 253 253 253 253 253 253 253 253 253 253 -253 253 253 250 250 250 246 246 246 238 238 238 -226 226 226 231 231 231 101 101 101 6 6 6 - 2 2 6 2 2 6 2 2 6 2 2 6 - 2 2 6 2 2 6 2 2 6 2 2 6 - 38 38 38 82 82 82 42 42 42 14 14 14 - 6 6 6 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 10 10 10 26 26 26 62 62 62 66 66 66 - 2 2 6 2 2 6 2 2 6 6 6 6 - 70 70 70 170 170 170 206 206 206 234 234 234 -246 246 246 250 250 250 250 250 250 238 238 238 -226 226 226 231 231 231 238 238 238 250 250 250 -250 250 250 250 250 250 246 246 246 231 231 231 -214 214 214 206 206 206 202 202 202 202 202 202 -198 198 198 202 202 202 182 182 182 18 18 18 - 2 2 6 2 2 6 2 2 6 2 2 6 - 2 2 6 2 2 6 2 2 6 2 2 6 - 2 2 6 62 62 62 66 66 66 30 30 30 - 10 10 10 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 14 14 14 42 42 42 82 82 82 18 18 18 - 2 2 6 2 2 6 2 2 6 10 10 10 - 94 94 94 182 182 182 218 218 218 242 242 242 -250 250 250 253 253 253 253 253 253 250 250 250 -234 234 234 253 253 253 253 253 253 253 253 253 -253 253 253 253 253 253 253 253 253 246 246 246 -238 238 238 226 226 226 210 210 210 202 202 202 -195 195 195 195 195 195 210 210 210 158 158 158 - 6 6 6 14 14 14 50 50 50 14 14 14 - 2 2 6 2 2 6 2 2 6 2 2 6 - 2 2 6 6 6 6 86 86 86 46 46 46 - 18 18 18 6 6 6 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 6 6 6 - 22 22 22 54 54 54 70 70 70 2 2 6 - 2 2 6 10 10 10 2 2 6 22 22 22 -166 166 166 231 231 231 250 250 250 253 253 253 -253 253 253 253 253 253 253 253 253 250 250 250 -242 242 242 253 253 253 253 253 253 253 253 253 -253 253 253 253 253 253 253 253 253 253 253 253 -253 253 253 253 253 253 253 253 253 246 246 246 -231 231 231 206 206 206 198 198 198 226 226 226 - 94 94 94 2 2 6 6 6 6 38 38 38 - 30 30 30 2 2 6 2 2 6 2 2 6 - 2 2 6 2 2 6 62 62 62 66 66 66 - 26 26 26 10 10 10 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 10 10 10 - 30 30 30 74 74 74 50 50 50 2 2 6 - 26 26 26 26 26 26 2 2 6 106 106 106 -238 238 238 253 253 253 253 253 253 253 253 253 -253 253 253 253 253 253 253 253 253 253 253 253 -253 253 253 253 253 253 253 253 253 253 253 253 -253 253 253 253 253 253 253 253 253 253 253 253 -253 253 253 253 253 253 253 253 253 253 253 253 -253 253 253 246 246 246 218 218 218 202 202 202 -210 210 210 14 14 14 2 2 6 2 2 6 - 30 30 30 22 22 22 2 2 6 2 2 6 - 2 2 6 2 2 6 18 18 18 86 86 86 - 42 42 42 14 14 14 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 14 14 14 - 42 42 42 90 90 90 22 22 22 2 2 6 - 42 42 42 2 2 6 18 18 18 218 218 218 -253 253 253 253 253 253 253 253 253 253 253 253 -253 253 253 253 253 253 253 253 253 253 253 253 -253 253 253 253 253 253 253 253 253 253 253 253 -253 253 253 253 253 253 253 253 253 253 253 253 -253 253 253 253 253 253 253 253 253 253 253 253 -253 253 253 253 253 253 250 250 250 221 221 221 -218 218 218 101 101 101 2 2 6 14 14 14 - 18 18 18 38 38 38 10 10 10 2 2 6 - 2 2 6 2 2 6 2 2 6 78 78 78 - 58 58 58 22 22 22 6 6 6 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 6 6 6 18 18 18 - 54 54 54 82 82 82 2 2 6 26 26 26 - 22 22 22 2 2 6 123 123 123 253 253 253 -253 253 253 253 253 253 253 253 253 253 253 253 -253 253 253 253 253 253 253 253 253 253 253 253 -253 253 253 253 253 253 253 253 253 253 253 253 -253 253 253 253 253 253 253 253 253 253 253 253 -253 253 253 253 253 253 253 253 253 253 253 253 -253 253 253 253 253 253 253 253 253 250 250 250 -238 238 238 198 198 198 6 6 6 38 38 38 - 58 58 58 26 26 26 38 38 38 2 2 6 - 2 2 6 2 2 6 2 2 6 46 46 46 - 78 78 78 30 30 30 10 10 10 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 10 10 10 30 30 30 - 74 74 74 58 58 58 2 2 6 42 42 42 - 2 2 6 22 22 22 231 231 231 253 253 253 -253 253 253 253 253 253 253 253 253 253 253 253 -253 253 253 253 253 253 253 253 253 250 250 250 -253 253 253 253 253 253 253 253 253 253 253 253 -253 253 253 253 253 253 253 253 253 253 253 253 -253 253 253 253 253 253 253 253 253 253 253 253 -253 253 253 253 253 253 253 253 253 253 253 253 -253 253 253 246 246 246 46 46 46 38 38 38 - 42 42 42 14 14 14 38 38 38 14 14 14 - 2 2 6 2 2 6 2 2 6 6 6 6 - 86 86 86 46 46 46 14 14 14 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 6 6 6 14 14 14 42 42 42 - 90 90 90 18 18 18 18 18 18 26 26 26 - 2 2 6 116 116 116 253 253 253 253 253 253 -253 253 253 253 253 253 253 253 253 253 253 253 -253 253 253 253 253 253 250 250 250 238 238 238 -253 253 253 253 253 253 253 253 253 253 253 253 -253 253 253 253 253 253 253 253 253 253 253 253 -253 253 253 253 253 253 253 253 253 253 253 253 -253 253 253 253 253 253 253 253 253 253 253 253 -253 253 253 253 253 253 94 94 94 6 6 6 - 2 2 6 2 2 6 10 10 10 34 34 34 - 2 2 6 2 2 6 2 2 6 2 2 6 - 74 74 74 58 58 58 22 22 22 6 6 6 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 10 10 10 26 26 26 66 66 66 - 82 82 82 2 2 6 38 38 38 6 6 6 - 14 14 14 210 210 210 253 253 253 253 253 253 -253 253 253 253 253 253 253 253 253 253 253 253 -253 253 253 253 253 253 246 246 246 242 242 242 -253 253 253 253 253 253 253 253 253 253 253 253 -253 253 253 253 253 253 253 253 253 253 253 253 -253 253 253 253 253 253 253 253 253 253 253 253 -253 253 253 253 253 253 253 253 253 253 253 253 -253 253 253 253 253 253 144 144 144 2 2 6 - 2 2 6 2 2 6 2 2 6 46 46 46 - 2 2 6 2 2 6 2 2 6 2 2 6 - 42 42 42 74 74 74 30 30 30 10 10 10 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 6 6 6 14 14 14 42 42 42 90 90 90 - 26 26 26 6 6 6 42 42 42 2 2 6 - 74 74 74 250 250 250 253 253 253 253 253 253 -253 253 253 253 253 253 253 253 253 253 253 253 -253 253 253 253 253 253 242 242 242 242 242 242 -253 253 253 253 253 253 253 253 253 253 253 253 -253 253 253 253 253 253 253 253 253 253 253 253 -253 253 253 253 253 253 253 253 253 253 253 253 -253 253 253 253 253 253 253 253 253 253 253 253 -253 253 253 253 253 253 182 182 182 2 2 6 - 2 2 6 2 2 6 2 2 6 46 46 46 - 2 2 6 2 2 6 2 2 6 2 2 6 - 10 10 10 86 86 86 38 38 38 10 10 10 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 10 10 10 26 26 26 66 66 66 82 82 82 - 2 2 6 22 22 22 18 18 18 2 2 6 -149 149 149 253 253 253 253 253 253 253 253 253 -253 253 253 253 253 253 253 253 253 253 253 253 -253 253 253 253 253 253 234 234 234 242 242 242 -253 253 253 253 253 253 253 253 253 253 253 253 -253 253 253 253 253 253 253 253 253 253 253 253 -253 253 253 253 253 253 253 253 253 253 253 253 -253 253 253 253 253 253 253 253 253 253 253 253 -253 253 253 253 253 253 206 206 206 2 2 6 - 2 2 6 2 2 6 2 2 6 38 38 38 - 2 2 6 2 2 6 2 2 6 2 2 6 - 6 6 6 86 86 86 46 46 46 14 14 14 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 6 6 6 - 18 18 18 46 46 46 86 86 86 18 18 18 - 2 2 6 34 34 34 10 10 10 6 6 6 -210 210 210 253 253 253 253 253 253 253 253 253 -253 253 253 253 253 253 253 253 253 253 253 253 -253 253 253 253 253 253 234 234 234 242 242 242 -253 253 253 253 253 253 253 253 253 253 253 253 -253 253 253 253 253 253 253 253 253 253 253 253 -253 253 253 253 253 253 253 253 253 253 253 253 -253 253 253 253 253 253 253 253 253 253 253 253 -253 253 253 253 253 253 221 221 221 6 6 6 - 2 2 6 2 2 6 6 6 6 30 30 30 - 2 2 6 2 2 6 2 2 6 2 2 6 - 2 2 6 82 82 82 54 54 54 18 18 18 - 6 6 6 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 10 10 10 - 26 26 26 66 66 66 62 62 62 2 2 6 - 2 2 6 38 38 38 10 10 10 26 26 26 -238 238 238 253 253 253 253 253 253 253 253 253 -253 253 253 253 253 253 253 253 253 253 253 253 -253 253 253 253 253 253 231 231 231 238 238 238 -253 253 253 253 253 253 253 253 253 253 253 253 -253 253 253 253 253 253 253 253 253 253 253 253 -253 253 253 253 253 253 253 253 253 253 253 253 -253 253 253 253 253 253 253 253 253 253 253 253 -253 253 253 253 253 253 231 231 231 6 6 6 - 2 2 6 2 2 6 10 10 10 30 30 30 - 2 2 6 2 2 6 2 2 6 2 2 6 - 2 2 6 66 66 66 58 58 58 22 22 22 - 6 6 6 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 10 10 10 - 38 38 38 78 78 78 6 6 6 2 2 6 - 2 2 6 46 46 46 14 14 14 42 42 42 -246 246 246 253 253 253 253 253 253 253 253 253 -253 253 253 253 253 253 253 253 253 253 253 253 -253 253 253 253 253 253 231 231 231 242 242 242 -253 253 253 253 253 253 253 253 253 253 253 253 -253 253 253 253 253 253 253 253 253 253 253 253 -253 253 253 253 253 253 253 253 253 253 253 253 -253 253 253 253 253 253 253 253 253 253 253 253 -253 253 253 253 253 253 234 234 234 10 10 10 - 2 2 6 2 2 6 22 22 22 14 14 14 - 2 2 6 2 2 6 2 2 6 2 2 6 - 2 2 6 66 66 66 62 62 62 22 22 22 - 6 6 6 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 6 6 6 18 18 18 - 50 50 50 74 74 74 2 2 6 2 2 6 - 14 14 14 70 70 70 34 34 34 62 62 62 -250 250 250 253 253 253 253 253 253 253 253 253 -253 253 253 253 253 253 253 253 253 253 253 253 -253 253 253 253 253 253 231 231 231 246 246 246 -253 253 253 253 253 253 253 253 253 253 253 253 -253 253 253 253 253 253 253 253 253 253 253 253 -253 253 253 253 253 253 253 253 253 253 253 253 -253 253 253 253 253 253 253 253 253 253 253 253 -253 253 253 253 253 253 234 234 234 14 14 14 - 2 2 6 2 2 6 30 30 30 2 2 6 - 2 2 6 2 2 6 2 2 6 2 2 6 - 2 2 6 66 66 66 62 62 62 22 22 22 - 6 6 6 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 6 6 6 18 18 18 - 54 54 54 62 62 62 2 2 6 2 2 6 - 2 2 6 30 30 30 46 46 46 70 70 70 -250 250 250 253 253 253 253 253 253 253 253 253 -253 253 253 253 253 253 253 253 253 253 253 253 -253 253 253 253 253 253 231 231 231 246 246 246 -253 253 253 253 253 253 253 253 253 253 253 253 -253 253 253 253 253 253 253 253 253 253 253 253 -253 253 253 253 253 253 253 253 253 253 253 253 -253 253 253 253 253 253 253 253 253 253 253 253 -253 253 253 253 253 253 226 226 226 10 10 10 - 2 2 6 6 6 6 30 30 30 2 2 6 - 2 2 6 2 2 6 2 2 6 2 2 6 - 2 2 6 66 66 66 58 58 58 22 22 22 - 6 6 6 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 6 6 6 22 22 22 - 58 58 58 62 62 62 2 2 6 2 2 6 - 2 2 6 2 2 6 30 30 30 78 78 78 -250 250 250 253 253 253 253 253 253 253 253 253 -253 253 253 253 253 253 253 253 253 253 253 253 -253 253 253 253 253 253 231 231 231 246 246 246 -253 253 253 253 253 253 253 253 253 253 253 253 -253 253 253 253 253 253 253 253 253 253 253 253 -253 253 253 253 253 253 253 253 253 253 253 253 -253 253 253 253 253 253 253 253 253 253 253 253 -253 253 253 253 253 253 206 206 206 2 2 6 - 22 22 22 34 34 34 18 14 6 22 22 22 - 26 26 26 18 18 18 6 6 6 2 2 6 - 2 2 6 82 82 82 54 54 54 18 18 18 - 6 6 6 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 6 6 6 26 26 26 - 62 62 62 106 106 106 74 54 14 185 133 11 -210 162 10 121 92 8 6 6 6 62 62 62 -238 238 238 253 253 253 253 253 253 253 253 253 -253 253 253 253 253 253 253 253 253 253 253 253 -253 253 253 253 253 253 231 231 231 246 246 246 -253 253 253 253 253 253 253 253 253 253 253 253 -253 253 253 253 253 253 253 253 253 253 253 253 -253 253 253 253 253 253 253 253 253 253 253 253 -253 253 253 253 253 253 253 253 253 253 253 253 -253 253 253 253 253 253 158 158 158 18 18 18 - 14 14 14 2 2 6 2 2 6 2 2 6 - 6 6 6 18 18 18 66 66 66 38 38 38 - 6 6 6 94 94 94 50 50 50 18 18 18 - 6 6 6 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 6 6 6 - 10 10 10 10 10 10 18 18 18 38 38 38 - 78 78 78 142 134 106 216 158 10 242 186 14 -246 190 14 246 190 14 156 118 10 10 10 10 - 90 90 90 238 238 238 253 253 253 253 253 253 -253 253 253 253 253 253 253 253 253 253 253 253 -253 253 253 253 253 253 231 231 231 250 250 250 -253 253 253 253 253 253 253 253 253 253 253 253 -253 253 253 253 253 253 253 253 253 253 253 253 -253 253 253 253 253 253 253 253 253 253 253 253 -253 253 253 253 253 253 253 253 253 246 230 190 -238 204 91 238 204 91 181 142 44 37 26 9 - 2 2 6 2 2 6 2 2 6 2 2 6 - 2 2 6 2 2 6 38 38 38 46 46 46 - 26 26 26 106 106 106 54 54 54 18 18 18 - 6 6 6 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 6 6 6 14 14 14 22 22 22 - 30 30 30 38 38 38 50 50 50 70 70 70 -106 106 106 190 142 34 226 170 11 242 186 14 -246 190 14 246 190 14 246 190 14 154 114 10 - 6 6 6 74 74 74 226 226 226 253 253 253 -253 253 253 253 253 253 253 253 253 253 253 253 -253 253 253 253 253 253 231 231 231 250 250 250 -253 253 253 253 253 253 253 253 253 253 253 253 -253 253 253 253 253 253 253 253 253 253 253 253 -253 253 253 253 253 253 253 253 253 253 253 253 -253 253 253 253 253 253 253 253 253 228 184 62 -241 196 14 241 208 19 232 195 16 38 30 10 - 2 2 6 2 2 6 2 2 6 2 2 6 - 2 2 6 6 6 6 30 30 30 26 26 26 -203 166 17 154 142 90 66 66 66 26 26 26 - 6 6 6 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 6 6 6 18 18 18 38 38 38 58 58 58 - 78 78 78 86 86 86 101 101 101 123 123 123 -175 146 61 210 150 10 234 174 13 246 186 14 -246 190 14 246 190 14 246 190 14 238 190 10 -102 78 10 2 2 6 46 46 46 198 198 198 -253 253 253 253 253 253 253 253 253 253 253 253 -253 253 253 253 253 253 234 234 234 242 242 242 -253 253 253 253 253 253 253 253 253 253 253 253 -253 253 253 253 253 253 253 253 253 253 253 253 -253 253 253 253 253 253 253 253 253 253 253 253 -253 253 253 253 253 253 253 253 253 224 178 62 -242 186 14 241 196 14 210 166 10 22 18 6 - 2 2 6 2 2 6 2 2 6 2 2 6 - 2 2 6 2 2 6 6 6 6 121 92 8 -238 202 15 232 195 16 82 82 82 34 34 34 - 10 10 10 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 14 14 14 38 38 38 70 70 70 154 122 46 -190 142 34 200 144 11 197 138 11 197 138 11 -213 154 11 226 170 11 242 186 14 246 190 14 -246 190 14 246 190 14 246 190 14 246 190 14 -225 175 15 46 32 6 2 2 6 22 22 22 -158 158 158 250 250 250 253 253 253 253 253 253 -253 253 253 253 253 253 253 253 253 253 253 253 -253 253 253 253 253 253 253 253 253 253 253 253 -253 253 253 253 253 253 253 253 253 253 253 253 -253 253 253 253 253 253 253 253 253 253 253 253 -253 253 253 250 250 250 242 242 242 224 178 62 -239 182 13 236 186 11 213 154 11 46 32 6 - 2 2 6 2 2 6 2 2 6 2 2 6 - 2 2 6 2 2 6 61 42 6 225 175 15 -238 190 10 236 186 11 112 100 78 42 42 42 - 14 14 14 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 6 6 6 - 22 22 22 54 54 54 154 122 46 213 154 11 -226 170 11 230 174 11 226 170 11 226 170 11 -236 178 12 242 186 14 246 190 14 246 190 14 -246 190 14 246 190 14 246 190 14 246 190 14 -241 196 14 184 144 12 10 10 10 2 2 6 - 6 6 6 116 116 116 242 242 242 253 253 253 -253 253 253 253 253 253 253 253 253 253 253 253 -253 253 253 253 253 253 253 253 253 253 253 253 -253 253 253 253 253 253 253 253 253 253 253 253 -253 253 253 253 253 253 253 253 253 253 253 253 -253 253 253 231 231 231 198 198 198 214 170 54 -236 178 12 236 178 12 210 150 10 137 92 6 - 18 14 6 2 2 6 2 2 6 2 2 6 - 6 6 6 70 47 6 200 144 11 236 178 12 -239 182 13 239 182 13 124 112 88 58 58 58 - 22 22 22 6 6 6 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 10 10 10 - 30 30 30 70 70 70 180 133 36 226 170 11 -239 182 13 242 186 14 242 186 14 246 186 14 -246 190 14 246 190 14 246 190 14 246 190 14 -246 190 14 246 190 14 246 190 14 246 190 14 -246 190 14 232 195 16 98 70 6 2 2 6 - 2 2 6 2 2 6 66 66 66 221 221 221 -253 253 253 253 253 253 253 253 253 253 253 253 -253 253 253 253 253 253 253 253 253 253 253 253 -253 253 253 253 253 253 253 253 253 253 253 253 -253 253 253 253 253 253 253 253 253 253 253 253 -253 253 253 206 206 206 198 198 198 214 166 58 -230 174 11 230 174 11 216 158 10 192 133 9 -163 110 8 116 81 8 102 78 10 116 81 8 -167 114 7 197 138 11 226 170 11 239 182 13 -242 186 14 242 186 14 162 146 94 78 78 78 - 34 34 34 14 14 14 6 6 6 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 6 6 6 - 30 30 30 78 78 78 190 142 34 226 170 11 -239 182 13 246 190 14 246 190 14 246 190 14 -246 190 14 246 190 14 246 190 14 246 190 14 -246 190 14 246 190 14 246 190 14 246 190 14 -246 190 14 241 196 14 203 166 17 22 18 6 - 2 2 6 2 2 6 2 2 6 38 38 38 -218 218 218 253 253 253 253 253 253 253 253 253 -253 253 253 253 253 253 253 253 253 253 253 253 -253 253 253 253 253 253 253 253 253 253 253 253 -253 253 253 253 253 253 253 253 253 253 253 253 -250 250 250 206 206 206 198 198 198 202 162 69 -226 170 11 236 178 12 224 166 10 210 150 10 -200 144 11 197 138 11 192 133 9 197 138 11 -210 150 10 226 170 11 242 186 14 246 190 14 -246 190 14 246 186 14 225 175 15 124 112 88 - 62 62 62 30 30 30 14 14 14 6 6 6 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 10 10 10 - 30 30 30 78 78 78 174 135 50 224 166 10 -239 182 13 246 190 14 246 190 14 246 190 14 -246 190 14 246 190 14 246 190 14 246 190 14 -246 190 14 246 190 14 246 190 14 246 190 14 -246 190 14 246 190 14 241 196 14 139 102 15 - 2 2 6 2 2 6 2 2 6 2 2 6 - 78 78 78 250 250 250 253 253 253 253 253 253 -253 253 253 253 253 253 253 253 253 253 253 253 -253 253 253 253 253 253 253 253 253 253 253 253 -253 253 253 253 253 253 253 253 253 253 253 253 -250 250 250 214 214 214 198 198 198 190 150 46 -219 162 10 236 178 12 234 174 13 224 166 10 -216 158 10 213 154 11 213 154 11 216 158 10 -226 170 11 239 182 13 246 190 14 246 190 14 -246 190 14 246 190 14 242 186 14 206 162 42 -101 101 101 58 58 58 30 30 30 14 14 14 - 6 6 6 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 10 10 10 - 30 30 30 74 74 74 174 135 50 216 158 10 -236 178 12 246 190 14 246 190 14 246 190 14 -246 190 14 246 190 14 246 190 14 246 190 14 -246 190 14 246 190 14 246 190 14 246 190 14 -246 190 14 246 190 14 241 196 14 226 184 13 - 61 42 6 2 2 6 2 2 6 2 2 6 - 22 22 22 238 238 238 253 253 253 253 253 253 -253 253 253 253 253 253 253 253 253 253 253 253 -253 253 253 253 253 253 253 253 253 253 253 253 -253 253 253 253 253 253 253 253 253 253 253 253 -253 253 253 226 226 226 187 187 187 180 133 36 -216 158 10 236 178 12 239 182 13 236 178 12 -230 174 11 226 170 11 226 170 11 230 174 11 -236 178 12 242 186 14 246 190 14 246 190 14 -246 190 14 246 190 14 246 186 14 239 182 13 -206 162 42 106 106 106 66 66 66 34 34 34 - 14 14 14 6 6 6 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 6 6 6 - 26 26 26 70 70 70 163 133 67 213 154 11 -236 178 12 246 190 14 246 190 14 246 190 14 -246 190 14 246 190 14 246 190 14 246 190 14 -246 190 14 246 190 14 246 190 14 246 190 14 -246 190 14 246 190 14 246 190 14 241 196 14 -190 146 13 18 14 6 2 2 6 2 2 6 - 46 46 46 246 246 246 253 253 253 253 253 253 -253 253 253 253 253 253 253 253 253 253 253 253 -253 253 253 253 253 253 253 253 253 253 253 253 -253 253 253 253 253 253 253 253 253 253 253 253 -253 253 253 221 221 221 86 86 86 156 107 11 -216 158 10 236 178 12 242 186 14 246 186 14 -242 186 14 239 182 13 239 182 13 242 186 14 -242 186 14 246 186 14 246 190 14 246 190 14 -246 190 14 246 190 14 246 190 14 246 190 14 -242 186 14 225 175 15 142 122 72 66 66 66 - 30 30 30 10 10 10 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 6 6 6 - 26 26 26 70 70 70 163 133 67 210 150 10 -236 178 12 246 190 14 246 190 14 246 190 14 -246 190 14 246 190 14 246 190 14 246 190 14 -246 190 14 246 190 14 246 190 14 246 190 14 -246 190 14 246 190 14 246 190 14 246 190 14 -232 195 16 121 92 8 34 34 34 106 106 106 -221 221 221 253 253 253 253 253 253 253 253 253 -253 253 253 253 253 253 253 253 253 253 253 253 -253 253 253 253 253 253 253 253 253 253 253 253 -253 253 253 253 253 253 253 253 253 253 253 253 -242 242 242 82 82 82 18 14 6 163 110 8 -216 158 10 236 178 12 242 186 14 246 190 14 -246 190 14 246 190 14 246 190 14 246 190 14 -246 190 14 246 190 14 246 190 14 246 190 14 -246 190 14 246 190 14 246 190 14 246 190 14 -246 190 14 246 190 14 242 186 14 163 133 67 - 46 46 46 18 18 18 6 6 6 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 10 10 10 - 30 30 30 78 78 78 163 133 67 210 150 10 -236 178 12 246 186 14 246 190 14 246 190 14 -246 190 14 246 190 14 246 190 14 246 190 14 -246 190 14 246 190 14 246 190 14 246 190 14 -246 190 14 246 190 14 246 190 14 246 190 14 -241 196 14 215 174 15 190 178 144 253 253 253 -253 253 253 253 253 253 253 253 253 253 253 253 -253 253 253 253 253 253 253 253 253 253 253 253 -253 253 253 253 253 253 253 253 253 253 253 253 -253 253 253 253 253 253 253 253 253 218 218 218 - 58 58 58 2 2 6 22 18 6 167 114 7 -216 158 10 236 178 12 246 186 14 246 190 14 -246 190 14 246 190 14 246 190 14 246 190 14 -246 190 14 246 190 14 246 190 14 246 190 14 -246 190 14 246 190 14 246 190 14 246 190 14 -246 190 14 246 186 14 242 186 14 190 150 46 - 54 54 54 22 22 22 6 6 6 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 14 14 14 - 38 38 38 86 86 86 180 133 36 213 154 11 -236 178 12 246 186 14 246 190 14 246 190 14 -246 190 14 246 190 14 246 190 14 246 190 14 -246 190 14 246 190 14 246 190 14 246 190 14 -246 190 14 246 190 14 246 190 14 246 190 14 -246 190 14 232 195 16 190 146 13 214 214 214 -253 253 253 253 253 253 253 253 253 253 253 253 -253 253 253 253 253 253 253 253 253 253 253 253 -253 253 253 253 253 253 253 253 253 253 253 253 -253 253 253 250 250 250 170 170 170 26 26 26 - 2 2 6 2 2 6 37 26 9 163 110 8 -219 162 10 239 182 13 246 186 14 246 190 14 -246 190 14 246 190 14 246 190 14 246 190 14 -246 190 14 246 190 14 246 190 14 246 190 14 -246 190 14 246 190 14 246 190 14 246 190 14 -246 186 14 236 178 12 224 166 10 142 122 72 - 46 46 46 18 18 18 6 6 6 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 6 6 6 18 18 18 - 50 50 50 109 106 95 192 133 9 224 166 10 -242 186 14 246 190 14 246 190 14 246 190 14 -246 190 14 246 190 14 246 190 14 246 190 14 -246 190 14 246 190 14 246 190 14 246 190 14 -246 190 14 246 190 14 246 190 14 246 190 14 -242 186 14 226 184 13 210 162 10 142 110 46 -226 226 226 253 253 253 253 253 253 253 253 253 -253 253 253 253 253 253 253 253 253 253 253 253 -253 253 253 253 253 253 253 253 253 253 253 253 -198 198 198 66 66 66 2 2 6 2 2 6 - 2 2 6 2 2 6 50 34 6 156 107 11 -219 162 10 239 182 13 246 186 14 246 190 14 -246 190 14 246 190 14 246 190 14 246 190 14 -246 190 14 246 190 14 246 190 14 246 190 14 -246 190 14 246 190 14 246 190 14 242 186 14 -234 174 13 213 154 11 154 122 46 66 66 66 - 30 30 30 10 10 10 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 6 6 6 22 22 22 - 58 58 58 154 121 60 206 145 10 234 174 13 -242 186 14 246 186 14 246 190 14 246 190 14 -246 190 14 246 190 14 246 190 14 246 190 14 -246 190 14 246 190 14 246 190 14 246 190 14 -246 190 14 246 190 14 246 190 14 246 190 14 -246 186 14 236 178 12 210 162 10 163 110 8 - 61 42 6 138 138 138 218 218 218 250 250 250 -253 253 253 253 253 253 253 253 253 250 250 250 -242 242 242 210 210 210 144 144 144 66 66 66 - 6 6 6 2 2 6 2 2 6 2 2 6 - 2 2 6 2 2 6 61 42 6 163 110 8 -216 158 10 236 178 12 246 190 14 246 190 14 -246 190 14 246 190 14 246 190 14 246 190 14 -246 190 14 246 190 14 246 190 14 246 190 14 -246 190 14 239 182 13 230 174 11 216 158 10 -190 142 34 124 112 88 70 70 70 38 38 38 - 18 18 18 6 6 6 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 6 6 6 22 22 22 - 62 62 62 168 124 44 206 145 10 224 166 10 -236 178 12 239 182 13 242 186 14 242 186 14 -246 186 14 246 190 14 246 190 14 246 190 14 -246 190 14 246 190 14 246 190 14 246 190 14 -246 190 14 246 190 14 246 190 14 246 190 14 -246 190 14 236 178 12 216 158 10 175 118 6 - 80 54 7 2 2 6 6 6 6 30 30 30 - 54 54 54 62 62 62 50 50 50 38 38 38 - 14 14 14 2 2 6 2 2 6 2 2 6 - 2 2 6 2 2 6 2 2 6 2 2 6 - 2 2 6 6 6 6 80 54 7 167 114 7 -213 154 11 236 178 12 246 190 14 246 190 14 -246 190 14 246 190 14 246 190 14 246 190 14 -246 190 14 242 186 14 239 182 13 239 182 13 -230 174 11 210 150 10 174 135 50 124 112 88 - 82 82 82 54 54 54 34 34 34 18 18 18 - 6 6 6 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 6 6 6 18 18 18 - 50 50 50 158 118 36 192 133 9 200 144 11 -216 158 10 219 162 10 224 166 10 226 170 11 -230 174 11 236 178 12 239 182 13 239 182 13 -242 186 14 246 186 14 246 190 14 246 190 14 -246 190 14 246 190 14 246 190 14 246 190 14 -246 186 14 230 174 11 210 150 10 163 110 8 -104 69 6 10 10 10 2 2 6 2 2 6 - 2 2 6 2 2 6 2 2 6 2 2 6 - 2 2 6 2 2 6 2 2 6 2 2 6 - 2 2 6 2 2 6 2 2 6 2 2 6 - 2 2 6 6 6 6 91 60 6 167 114 7 -206 145 10 230 174 11 242 186 14 246 190 14 -246 190 14 246 190 14 246 186 14 242 186 14 -239 182 13 230 174 11 224 166 10 213 154 11 -180 133 36 124 112 88 86 86 86 58 58 58 - 38 38 38 22 22 22 10 10 10 6 6 6 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 14 14 14 - 34 34 34 70 70 70 138 110 50 158 118 36 -167 114 7 180 123 7 192 133 9 197 138 11 -200 144 11 206 145 10 213 154 11 219 162 10 -224 166 10 230 174 11 239 182 13 242 186 14 -246 186 14 246 186 14 246 186 14 246 186 14 -239 182 13 216 158 10 185 133 11 152 99 6 -104 69 6 18 14 6 2 2 6 2 2 6 - 2 2 6 2 2 6 2 2 6 2 2 6 - 2 2 6 2 2 6 2 2 6 2 2 6 - 2 2 6 2 2 6 2 2 6 2 2 6 - 2 2 6 6 6 6 80 54 7 152 99 6 -192 133 9 219 162 10 236 178 12 239 182 13 -246 186 14 242 186 14 239 182 13 236 178 12 -224 166 10 206 145 10 192 133 9 154 121 60 - 94 94 94 62 62 62 42 42 42 22 22 22 - 14 14 14 6 6 6 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 6 6 6 - 18 18 18 34 34 34 58 58 58 78 78 78 -101 98 89 124 112 88 142 110 46 156 107 11 -163 110 8 167 114 7 175 118 6 180 123 7 -185 133 11 197 138 11 210 150 10 219 162 10 -226 170 11 236 178 12 236 178 12 234 174 13 -219 162 10 197 138 11 163 110 8 130 83 6 - 91 60 6 10 10 10 2 2 6 2 2 6 - 18 18 18 38 38 38 38 38 38 38 38 38 - 38 38 38 38 38 38 38 38 38 38 38 38 - 38 38 38 38 38 38 26 26 26 2 2 6 - 2 2 6 6 6 6 70 47 6 137 92 6 -175 118 6 200 144 11 219 162 10 230 174 11 -234 174 13 230 174 11 219 162 10 210 150 10 -192 133 9 163 110 8 124 112 88 82 82 82 - 50 50 50 30 30 30 14 14 14 6 6 6 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 6 6 6 14 14 14 22 22 22 34 34 34 - 42 42 42 58 58 58 74 74 74 86 86 86 -101 98 89 122 102 70 130 98 46 121 87 25 -137 92 6 152 99 6 163 110 8 180 123 7 -185 133 11 197 138 11 206 145 10 200 144 11 -180 123 7 156 107 11 130 83 6 104 69 6 - 50 34 6 54 54 54 110 110 110 101 98 89 - 86 86 86 82 82 82 78 78 78 78 78 78 - 78 78 78 78 78 78 78 78 78 78 78 78 - 78 78 78 82 82 82 86 86 86 94 94 94 -106 106 106 101 101 101 86 66 34 124 80 6 -156 107 11 180 123 7 192 133 9 200 144 11 -206 145 10 200 144 11 192 133 9 175 118 6 -139 102 15 109 106 95 70 70 70 42 42 42 - 22 22 22 10 10 10 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 6 6 6 10 10 10 - 14 14 14 22 22 22 30 30 30 38 38 38 - 50 50 50 62 62 62 74 74 74 90 90 90 -101 98 89 112 100 78 121 87 25 124 80 6 -137 92 6 152 99 6 152 99 6 152 99 6 -138 86 6 124 80 6 98 70 6 86 66 30 -101 98 89 82 82 82 58 58 58 46 46 46 - 38 38 38 34 34 34 34 34 34 34 34 34 - 34 34 34 34 34 34 34 34 34 34 34 34 - 34 34 34 34 34 34 38 38 38 42 42 42 - 54 54 54 82 82 82 94 86 76 91 60 6 -134 86 6 156 107 11 167 114 7 175 118 6 -175 118 6 167 114 7 152 99 6 121 87 25 -101 98 89 62 62 62 34 34 34 18 18 18 - 6 6 6 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 6 6 6 6 6 6 10 10 10 - 18 18 18 22 22 22 30 30 30 42 42 42 - 50 50 50 66 66 66 86 86 86 101 98 89 -106 86 58 98 70 6 104 69 6 104 69 6 -104 69 6 91 60 6 82 62 34 90 90 90 - 62 62 62 38 38 38 22 22 22 14 14 14 - 10 10 10 10 10 10 10 10 10 10 10 10 - 10 10 10 10 10 10 6 6 6 10 10 10 - 10 10 10 10 10 10 10 10 10 14 14 14 - 22 22 22 42 42 42 70 70 70 89 81 66 - 80 54 7 104 69 6 124 80 6 137 92 6 -134 86 6 116 81 8 100 82 52 86 86 86 - 58 58 58 30 30 30 14 14 14 6 6 6 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 6 6 6 10 10 10 14 14 14 - 18 18 18 26 26 26 38 38 38 54 54 54 - 70 70 70 86 86 86 94 86 76 89 81 66 - 89 81 66 86 86 86 74 74 74 50 50 50 - 30 30 30 14 14 14 6 6 6 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 6 6 6 18 18 18 34 34 34 58 58 58 - 82 82 82 89 81 66 89 81 66 89 81 66 - 94 86 66 94 86 76 74 74 74 50 50 50 - 26 26 26 14 14 14 6 6 6 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 6 6 6 6 6 6 14 14 14 18 18 18 - 30 30 30 38 38 38 46 46 46 54 54 54 - 50 50 50 42 42 42 30 30 30 18 18 18 - 10 10 10 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 6 6 6 14 14 14 26 26 26 - 38 38 38 50 50 50 58 58 58 58 58 58 - 54 54 54 42 42 42 30 30 30 18 18 18 - 10 10 10 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 6 6 6 - 6 6 6 10 10 10 14 14 14 18 18 18 - 18 18 18 14 14 14 10 10 10 6 6 6 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 6 6 6 - 14 14 14 18 18 18 22 22 22 22 22 22 - 18 18 18 14 14 14 10 10 10 6 6 6 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 1 0 +0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 +0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 +10 15 3 2 3 1 12 18 4 42 61 14 19 27 6 11 16 4 +38 55 13 10 15 3 3 4 1 10 15 3 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 3 1 +12 18 4 1 1 0 23 34 8 31 45 11 10 15 3 32 47 11 +34 49 12 3 4 1 3 4 1 3 4 1 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 10 15 3 29 42 10 26 37 9 12 18 4 +55 80 19 81 118 28 55 80 19 92 132 31 106 153 36 69 100 23 +100 144 34 80 116 27 42 61 14 81 118 28 23 34 8 27 40 9 +15 21 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 1 1 0 29 42 10 15 21 5 50 72 17 +74 107 25 45 64 15 102 148 35 80 116 27 84 121 28 111 160 38 +69 100 23 65 94 22 81 118 28 29 42 10 17 25 6 29 42 10 +23 34 8 2 3 1 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 4 1 +15 21 5 15 21 5 34 49 12 101 146 34 111 161 38 97 141 33 +97 141 33 119 172 41 117 170 40 116 167 40 118 170 40 118 171 40 +117 169 40 118 170 40 111 160 38 118 170 40 96 138 32 89 128 30 +81 118 28 11 16 4 10 15 3 1 1 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +3 4 1 3 4 1 34 49 12 101 146 34 79 115 27 111 160 38 +114 165 39 113 163 39 118 170 40 117 169 40 118 171 40 117 169 40 +116 167 40 119 172 41 113 163 39 92 132 31 105 151 36 113 163 39 +75 109 26 19 27 6 16 23 5 11 16 4 0 1 0 0 0 0 +0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 10 15 3 +80 116 27 106 153 36 105 151 36 114 165 39 118 170 40 118 171 40 +118 171 40 117 169 40 117 169 40 117 169 40 117 169 40 117 169 40 +117 169 40 117 169 40 117 170 40 117 169 40 118 170 40 118 170 40 +117 170 40 75 109 26 75 109 26 34 49 12 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 4 1 +64 92 22 65 94 22 100 144 34 118 171 40 118 170 40 117 169 40 +117 169 40 117 169 40 117 169 40 117 169 40 117 169 40 117 169 40 +117 169 40 117 169 40 117 169 40 118 171 41 118 170 40 117 169 40 +109 158 37 105 151 36 104 150 35 47 69 16 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +42 61 14 115 167 39 118 170 40 117 169 40 117 169 40 117 169 40 +117 170 40 117 170 40 117 169 40 117 169 40 117 169 40 117 169 40 +117 169 40 117 169 40 117 169 40 117 169 40 117 169 40 117 169 40 +117 169 40 117 169 40 118 170 40 96 138 32 17 25 6 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 47 69 16 +114 165 39 117 168 40 117 170 40 117 169 40 117 169 40 117 169 40 +117 169 40 117 169 40 117 169 40 117 169 40 117 169 40 117 169 40 +117 169 40 117 169 40 118 170 40 117 169 40 117 169 40 117 169 40 +117 170 40 119 172 41 96 138 32 12 18 4 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 10 15 3 +32 47 11 105 151 36 118 170 40 117 169 40 117 169 40 116 168 40 +109 157 37 111 160 38 117 169 40 118 171 40 117 169 40 117 169 40 +117 169 40 117 169 40 117 169 40 117 169 40 117 169 40 117 169 40 +117 169 40 117 169 40 117 169 40 118 171 40 69 100 23 2 3 1 +0 0 0 0 0 0 0 0 0 0 0 0 19 27 6 101 146 34 +118 171 40 117 169 40 117 169 40 117 169 40 117 169 40 117 169 40 +117 169 40 117 169 40 117 169 40 117 169 40 117 169 40 117 170 40 +118 171 40 115 166 39 107 154 36 111 161 38 117 169 40 117 169 40 +117 169 40 118 171 40 75 109 26 19 27 6 2 3 1 0 0 0 +0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16 23 5 +89 128 30 117 169 40 117 169 40 117 169 40 117 169 40 117 169 40 +111 160 38 92 132 31 79 115 27 96 138 32 115 166 39 119 171 41 +117 169 40 117 169 40 117 169 40 117 169 40 117 169 40 117 169 40 +117 169 40 117 169 40 117 169 40 118 170 40 109 157 37 26 37 9 +0 0 0 0 0 0 0 0 0 0 0 0 64 92 22 118 171 40 +117 169 40 117 169 40 117 169 40 117 169 40 117 169 40 117 169 40 +117 169 40 117 169 40 117 169 40 118 170 40 118 171 40 109 157 37 +89 128 30 81 118 28 100 144 34 115 166 39 117 169 40 117 169 40 +117 169 40 117 170 40 113 163 39 60 86 20 1 1 0 0 0 0 +0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +27 40 9 96 138 32 118 170 40 117 169 40 117 169 40 117 169 40 +117 170 40 117 169 40 101 146 34 67 96 23 55 80 19 84 121 28 +113 163 39 119 171 41 117 169 40 117 169 40 117 169 40 117 169 40 +117 169 40 117 169 40 117 169 40 117 169 40 119 171 41 65 94 22 +0 0 0 0 0 0 0 0 0 15 21 5 101 146 34 118 171 40 +117 169 40 117 169 40 117 169 40 117 169 40 117 169 40 117 169 40 +117 169 40 118 170 40 118 171 40 104 150 35 69 100 23 53 76 18 +81 118 28 111 160 38 118 170 40 117 169 40 117 169 40 117 169 40 +117 169 40 114 165 39 69 100 23 10 15 3 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 +31 45 11 77 111 26 117 169 40 117 169 40 117 169 40 117 169 40 +117 169 40 117 169 40 118 170 40 116 168 40 92 132 31 47 69 16 +38 55 13 81 118 28 113 163 39 119 171 41 117 169 40 117 169 40 +117 169 40 117 169 40 117 169 40 117 169 40 118 171 41 92 132 31 +10 15 3 0 0 0 0 0 0 36 52 12 115 166 39 117 169 40 +117 169 40 117 169 40 117 169 40 117 169 40 117 169 40 118 170 40 +118 171 40 102 148 35 64 92 22 34 49 12 65 94 22 106 153 36 +118 171 40 117 170 40 117 169 40 117 169 40 117 169 40 117 169 40 +118 170 40 107 154 36 55 80 19 15 21 5 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +29 42 10 101 146 34 118 171 40 117 169 40 117 169 40 117 169 40 +117 169 40 117 169 40 117 169 40 117 169 40 118 171 40 113 163 39 +75 109 26 27 40 9 36 52 12 89 128 30 116 167 40 118 171 40 +117 169 40 117 169 40 117 169 40 117 169 40 118 170 40 104 150 35 +16 23 5 0 0 0 0 0 0 53 76 18 118 171 40 117 169 40 +117 169 40 117 169 40 117 169 40 117 169 40 119 171 41 109 157 37 +67 96 23 23 34 8 42 61 14 96 138 32 118 170 40 118 170 40 +117 169 40 117 169 40 117 169 40 117 169 40 117 169 40 117 169 40 +117 169 40 117 169 40 74 107 25 10 15 3 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 31 45 11 101 146 34 118 170 40 117 169 40 117 169 40 +117 169 40 117 169 40 117 169 40 117 169 40 117 169 40 117 169 40 +119 171 41 102 148 35 47 69 16 14 20 5 50 72 17 102 148 35 +118 171 40 117 169 40 117 169 40 117 169 40 118 170 40 102 148 35 +15 21 5 0 0 0 0 0 0 50 72 17 118 170 40 117 169 40 +117 169 40 117 169 40 118 170 40 116 167 40 84 121 28 27 40 9 +19 27 6 74 107 25 114 165 39 118 171 40 117 169 40 117 169 40 +117 169 40 117 169 40 117 169 40 117 169 40 117 169 40 117 169 40 +117 169 40 75 109 26 10 15 4 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 38 55 13 102 148 35 118 171 40 117 169 40 117 169 40 +117 169 40 117 169 40 117 169 40 117 169 40 117 169 40 117 169 40 +117 169 40 118 170 40 115 167 39 77 111 26 17 25 6 19 27 6 +77 111 26 115 166 39 118 170 40 117 169 40 119 172 41 81 118 28 +3 4 1 0 0 0 0 0 0 27 40 9 111 160 38 118 170 40 +117 169 40 118 171 40 105 151 36 50 72 17 10 15 3 38 55 13 +100 144 34 118 171 40 117 169 40 117 169 40 117 169 40 117 169 40 +117 169 40 117 169 40 117 169 40 117 169 40 117 169 40 117 169 40 +117 169 40 79 115 27 15 21 5 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 10 15 3 64 92 22 111 160 38 117 169 40 117 169 40 +117 169 40 117 169 40 117 169 40 117 169 40 117 169 40 117 169 40 +117 169 40 117 169 40 117 169 40 118 171 40 96 138 32 32 47 11 +3 4 1 50 72 17 107 154 36 120 173 41 105 151 36 31 45 11 +0 0 0 0 0 0 0 0 0 3 4 1 65 94 22 117 169 40 +118 170 40 89 128 30 26 37 9 3 4 1 60 86 20 111 161 38 +118 171 40 117 169 40 117 169 40 117 169 40 117 169 40 117 169 40 +117 169 40 117 169 40 117 169 40 117 169 40 117 169 40 117 169 40 +97 141 33 36 52 12 1 1 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 14 20 5 75 109 26 117 168 40 117 169 40 +117 169 40 117 169 40 117 169 40 117 169 40 117 169 40 117 169 40 +117 169 40 117 169 40 117 169 40 117 169 40 118 171 40 107 154 36 +45 64 15 2 3 1 31 45 11 75 109 26 32 47 11 0 1 0 +0 0 0 0 0 0 0 0 0 0 0 0 10 15 3 55 80 19 +65 94 22 11 16 4 11 16 4 75 109 26 116 168 40 118 170 40 +117 169 40 117 169 40 117 169 40 117 169 40 117 169 40 117 169 40 +117 169 40 117 169 40 117 169 40 117 169 40 118 170 40 107 154 36 +47 69 16 3 4 1 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 12 18 4 69 100 23 111 161 38 118 171 40 +117 169 40 117 169 40 117 169 40 117 169 40 117 169 40 117 169 40 +117 169 40 117 169 40 117 169 40 117 169 40 117 169 40 118 170 40 +111 160 38 50 72 17 2 3 1 2 3 1 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 +1 1 0 12 18 4 81 118 28 118 170 40 117 169 40 117 169 40 +117 169 40 117 169 40 117 169 40 117 169 40 117 169 40 117 169 40 +117 169 40 117 169 40 117 169 40 117 170 40 118 171 40 101 146 34 +42 61 14 2 3 1 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 3 4 1 36 52 12 89 128 30 +117 169 40 117 169 40 117 169 40 117 169 40 117 169 40 117 169 40 +117 169 40 117 169 40 117 169 40 117 169 40 117 169 40 117 169 40 +118 171 41 101 146 34 14 20 5 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 47 69 16 118 170 40 117 169 40 117 169 40 117 169 40 +117 169 40 117 169 40 117 169 40 117 169 40 117 169 40 117 169 40 +117 169 40 117 169 40 117 170 40 111 160 38 69 100 23 19 27 6 +0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 11 16 4 69 100 23 +115 167 39 119 172 41 117 169 40 117 169 40 117 169 40 117 169 40 +117 169 40 117 169 40 117 169 40 117 169 40 117 169 40 117 169 40 +119 172 41 75 109 26 3 4 1 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 23 34 8 106 153 36 118 170 40 117 169 40 117 169 40 +117 169 40 117 169 40 117 169 40 117 169 40 117 169 40 117 169 40 +117 169 40 118 170 40 119 172 41 105 151 36 42 61 14 2 3 1 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 15 21 5 +45 64 15 80 116 27 114 165 39 118 170 40 117 169 40 117 169 40 +117 169 40 117 169 40 117 169 40 117 169 40 117 169 40 119 172 41 +97 141 33 20 30 7 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 1 1 0 53 76 18 114 165 39 118 171 40 117 169 40 +117 169 40 117 169 40 117 169 40 117 169 40 117 169 40 117 169 40 +118 171 40 104 150 35 64 92 22 31 45 11 10 15 3 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 36 52 12 97 141 33 109 158 37 113 163 39 116 168 40 +117 169 40 117 170 40 118 170 40 119 172 41 115 167 39 84 121 28 +23 34 8 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 3 4 1 50 72 17 102 148 35 118 171 40 +119 171 41 118 170 40 117 169 40 117 169 40 115 166 39 111 161 38 +109 157 37 79 115 27 12 18 4 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 3 4 1 15 21 5 23 34 8 45 64 15 106 153 36 +116 167 40 111 160 38 101 146 34 79 115 27 42 61 14 10 15 3 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 1 1 0 20 30 7 60 86 20 +89 128 30 106 153 36 113 163 39 117 169 40 84 121 28 29 42 10 +19 27 6 10 15 3 2 3 1 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 16 23 5 38 55 13 +36 52 12 26 37 9 12 18 4 2 3 1 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 1 0 0 19 2 7 52 5 18 +78 7 27 88 8 31 81 7 29 56 5 19 25 2 9 3 0 1 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +3 4 1 19 27 6 31 45 11 38 55 13 32 47 11 3 4 1 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 0 1 +9 0 3 12 1 4 9 0 3 4 0 1 0 0 0 0 0 0 +0 0 0 0 0 0 28 3 10 99 9 35 156 14 55 182 16 64 +189 17 66 190 17 67 189 17 66 184 17 65 166 15 58 118 13 41 +45 4 16 3 0 1 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 11 1 4 52 5 18 101 9 35 134 12 47 +151 14 53 154 14 54 151 14 53 113 10 40 11 1 4 0 0 0 +3 0 1 67 6 24 159 14 56 190 17 67 190 17 67 188 17 66 +188 17 66 188 17 66 188 17 66 188 17 66 190 17 67 191 17 67 +174 16 61 101 9 35 14 1 5 0 0 0 35 3 12 108 10 38 +122 11 43 122 11 43 112 10 39 87 8 30 50 5 17 13 1 5 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +3 0 1 56 5 19 141 13 49 182 16 64 191 17 67 191 17 67 +190 17 67 190 17 67 191 17 67 113 10 40 3 0 1 1 0 0 +79 7 28 180 16 63 190 17 67 188 17 66 188 17 66 188 17 66 +188 17 66 188 17 66 188 17 66 188 17 66 188 17 66 188 17 66 +189 17 66 188 17 66 122 11 43 11 1 4 41 4 14 176 16 62 +191 17 67 191 17 67 191 17 67 190 17 67 181 16 63 146 13 51 +75 7 26 10 1 4 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7 1 2 +90 8 32 178 16 62 191 17 67 188 17 66 188 17 66 188 17 66 +188 17 66 190 17 67 141 13 49 22 2 8 0 0 0 41 4 14 +173 16 61 190 17 67 188 17 66 188 17 66 188 17 66 188 17 66 +188 17 66 188 17 66 188 17 66 188 17 66 188 17 66 188 17 66 +188 17 66 188 17 66 188 17 66 88 8 31 1 0 0 89 8 31 +185 17 65 189 17 66 188 17 66 188 17 66 189 17 66 191 17 67 +186 17 65 124 11 43 25 2 9 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 2 0 1 89 8 31 +184 17 65 189 17 66 188 17 66 188 17 66 188 17 66 188 17 66 +190 17 67 151 14 53 34 3 12 0 0 0 0 0 0 79 7 28 +190 17 67 188 17 66 188 17 66 188 17 66 188 17 66 188 17 66 +188 17 66 188 17 66 188 17 66 188 17 66 188 17 66 188 17 66 +188 17 66 188 17 66 191 17 67 146 13 51 9 1 3 7 1 2 +108 10 38 187 17 66 189 17 66 188 17 66 188 17 66 188 17 66 +188 17 66 190 17 67 141 13 49 22 2 8 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 52 5 18 176 16 62 +189 17 66 188 17 66 188 17 66 188 17 66 188 17 66 190 17 67 +151 14 53 38 3 13 0 0 0 0 0 0 0 0 0 50 5 17 +180 16 63 189 17 66 188 17 66 188 17 66 188 17 66 188 17 66 +188 17 66 188 17 66 188 17 66 188 17 66 188 17 66 188 17 66 +188 17 66 188 17 66 191 17 67 141 13 49 7 1 3 0 0 0 +11 1 4 112 10 39 187 17 66 189 17 66 188 17 66 188 17 66 +188 17 66 188 17 66 190 17 67 113 10 40 5 0 2 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 7 1 3 132 12 46 191 17 67 +188 17 66 188 17 66 188 17 66 188 17 66 190 17 67 146 13 51 +35 3 12 0 0 0 0 0 0 0 0 0 0 0 0 5 0 2 +101 9 35 185 17 65 190 17 67 188 17 66 188 17 66 188 17 66 +188 17 66 188 17 66 188 17 66 188 17 66 188 17 66 188 17 66 +188 17 66 190 17 67 180 16 63 67 6 24 0 0 0 0 0 0 +0 0 0 11 1 4 108 10 38 186 17 65 189 17 66 188 17 66 +188 17 66 188 17 66 189 17 66 180 16 63 56 5 19 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 44 4 15 177 16 62 189 17 66 +188 17 66 188 17 66 189 17 66 189 17 66 134 12 47 28 3 10 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +8 1 3 79 7 28 159 14 56 188 17 66 191 17 67 190 17 67 +189 17 66 189 17 66 189 17 66 189 17 66 190 17 67 191 17 67 +188 17 66 158 14 55 72 7 25 4 0 1 0 0 0 0 0 0 +0 0 0 0 0 0 8 1 3 95 9 33 182 16 64 189 17 67 +188 17 66 188 17 66 188 17 66 191 17 67 122 11 43 3 0 1 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 88 8 31 190 17 67 188 17 66 +188 17 66 189 17 66 185 17 65 113 10 40 18 2 6 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 1 0 0 24 2 8 77 7 27 124 11 43 154 14 54 +168 15 59 173 16 61 173 16 61 168 15 59 154 14 54 124 11 43 +77 7 27 22 2 8 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 5 0 2 77 7 27 173 16 61 +190 17 67 188 17 66 188 17 66 190 17 67 164 15 57 23 2 8 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 1 0 0 118 13 41 191 17 67 188 17 66 +190 17 67 174 16 61 87 8 30 8 1 3 0 0 0 0 0 0 +0 0 0 0 0 0 10 1 4 29 3 10 40 4 14 36 3 13 +18 2 6 2 0 1 0 0 0 0 0 0 3 0 1 14 1 5 +26 2 9 33 3 11 32 3 11 25 2 9 13 1 5 3 0 1 +0 0 0 14 1 5 56 5 19 95 9 33 109 10 38 101 9 35 +77 7 27 35 3 12 5 0 2 0 0 0 1 0 0 56 5 19 +156 14 55 190 17 67 188 17 66 188 17 66 182 16 64 50 5 17 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 5 0 2 134 12 47 191 17 67 189 17 66 +151 14 53 52 5 18 2 0 1 0 0 0 0 0 0 1 0 0 +28 3 10 90 8 32 146 13 51 170 15 60 178 16 62 174 16 61 +158 14 55 112 10 39 40 4 14 1 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 0 1 +56 5 19 146 13 51 183 17 64 191 17 67 191 17 67 191 17 67 +188 17 66 173 16 61 122 11 43 41 4 14 1 0 0 0 0 0 +30 3 10 124 11 43 185 17 65 190 17 67 187 17 66 67 6 24 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 6 1 2 134 12 47 168 15 59 99 9 35 +21 2 7 0 0 0 0 0 0 0 0 0 6 1 2 77 7 27 +162 15 57 190 17 67 191 17 67 189 17 66 189 17 66 189 17 66 +190 17 67 191 17 67 169 15 59 75 7 26 3 0 1 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 2 0 1 79 7 28 +178 16 62 191 17 67 188 17 66 188 17 66 188 17 66 188 17 66 +188 17 66 189 17 66 191 17 67 170 15 60 79 7 28 5 0 2 +0 0 0 10 1 3 78 7 27 159 14 56 188 17 66 75 7 26 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 1 0 0 35 3 12 29 3 10 2 0 1 +0 0 0 0 0 0 0 0 0 9 1 3 101 9 35 183 17 64 +190 17 67 188 17 66 188 17 66 188 17 66 188 17 66 188 17 66 +188 17 66 188 17 66 190 17 67 178 16 63 67 6 23 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 52 5 18 174 16 61 +190 17 67 188 17 66 188 17 66 188 17 66 188 17 66 188 17 66 +188 17 66 188 17 66 188 17 66 190 17 67 182 16 64 89 8 31 +4 0 1 0 0 0 0 0 0 25 2 9 73 7 26 31 3 11 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 4 0 1 98 9 34 187 17 66 189 17 66 +188 17 66 188 17 66 188 17 66 188 17 66 188 17 66 188 17 66 +188 17 66 188 17 66 188 17 66 190 17 67 158 14 55 25 2 9 +0 0 0 0 0 0 0 0 0 8 1 3 134 12 47 191 17 67 +188 17 66 188 17 66 188 17 66 188 17 66 188 17 66 188 17 66 +188 17 66 188 17 66 188 17 66 188 17 66 189 17 66 180 16 63 +68 6 24 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 6 1 2 19 2 7 3 0 1 0 0 0 0 0 0 +0 0 0 0 0 0 65 6 23 180 16 63 189 17 66 188 17 66 +188 17 66 188 17 66 188 17 66 188 17 66 188 17 66 188 17 66 +188 17 66 188 17 66 188 17 66 188 17 66 189 17 66 83 8 29 +0 0 0 0 0 0 0 0 0 41 4 14 177 16 62 189 17 66 +188 17 66 188 17 66 188 17 66 188 17 66 188 17 66 188 17 66 +188 17 66 188 17 66 188 17 66 188 17 66 188 17 66 190 17 67 +159 14 56 28 3 10 0 0 0 0 0 0 0 0 0 23 2 8 +41 4 14 5 0 2 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +23 2 8 113 10 40 159 14 56 65 6 23 0 0 0 0 0 0 +0 0 0 16 1 6 146 13 51 191 17 67 188 17 66 188 17 66 +188 17 66 188 17 66 188 17 66 188 17 66 188 17 66 188 17 66 +188 17 66 188 17 66 188 17 66 188 17 66 191 17 67 132 12 46 +5 0 2 0 0 0 0 0 0 77 7 27 189 17 66 188 17 66 +188 17 66 188 17 66 188 17 66 188 17 66 188 17 66 188 17 66 +188 17 66 188 17 66 188 17 66 188 17 66 188 17 66 188 17 66 +190 17 67 98 9 34 0 0 0 0 0 0 12 1 4 134 12 47 +178 16 63 108 10 38 16 1 6 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 30 3 10 +141 13 49 190 17 67 191 17 67 134 12 47 6 1 2 0 0 0 +0 0 0 68 6 24 186 17 65 188 17 66 188 17 66 188 17 66 +188 17 66 188 17 66 188 17 66 188 17 66 188 17 66 188 17 66 +188 17 66 188 17 66 188 17 66 188 17 66 190 17 67 156 14 55 +14 1 5 0 0 0 0 0 0 98 9 34 191 17 67 188 17 66 +188 17 66 188 17 66 188 17 66 188 17 66 188 17 66 188 17 66 +188 17 66 188 17 66 188 17 66 188 17 66 188 17 66 188 17 66 +190 17 67 156 14 55 19 2 7 0 0 0 47 4 16 181 16 63 +190 17 67 189 17 66 126 14 44 17 2 6 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 16 1 6 134 12 47 +191 17 67 188 17 66 190 17 67 162 15 57 19 2 7 0 0 0 +3 0 1 123 11 43 191 17 67 188 17 66 188 17 66 188 17 66 +188 17 66 188 17 66 188 17 66 188 17 66 188 17 66 188 17 66 +188 17 66 188 17 66 188 17 66 188 17 66 190 17 67 163 15 57 +20 2 7 0 0 0 0 0 0 101 9 35 191 17 67 188 17 66 +188 17 66 188 17 66 188 17 66 188 17 66 188 17 66 188 17 66 +188 17 66 188 17 66 188 17 66 188 17 66 188 17 66 188 17 66 +188 17 66 182 16 64 52 5 18 0 0 0 73 7 26 188 17 66 +188 17 66 188 17 66 189 17 66 109 10 38 5 0 2 0 0 0 +0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 95 9 33 189 17 66 +188 17 66 188 17 66 189 17 66 171 15 60 29 3 10 0 0 0 +16 1 6 156 14 55 190 17 67 188 17 66 188 17 66 188 17 66 +188 17 66 188 17 66 188 17 66 188 17 66 188 17 66 188 17 66 +188 17 66 188 17 66 188 17 66 188 17 66 190 17 67 158 14 55 +17 2 6 0 0 0 0 0 0 85 8 30 190 17 67 188 17 66 +188 17 66 188 17 66 188 17 66 188 17 66 188 17 66 188 17 66 +188 17 66 188 17 66 188 17 66 188 17 66 188 17 66 188 17 66 +188 17 66 189 17 66 81 7 29 0 0 0 85 8 30 190 17 67 +188 17 66 188 17 66 189 17 66 180 16 63 56 5 19 0 0 0 +0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 25 2 9 162 15 57 190 17 67 +188 17 66 188 17 66 189 17 66 173 16 61 31 3 11 0 0 0 +30 3 10 171 15 60 189 17 66 188 17 66 188 17 66 188 17 66 +188 17 66 188 17 66 188 17 66 188 17 66 188 17 66 188 17 66 +188 17 66 188 17 66 188 17 66 188 17 66 191 17 67 141 13 49 +7 1 2 0 0 0 0 0 0 56 5 19 183 17 64 188 17 66 +188 17 66 188 17 66 188 17 66 188 17 66 188 17 66 188 17 66 +188 17 66 188 17 66 188 17 66 188 17 66 188 17 66 188 17 66 +188 17 66 191 17 67 98 9 34 0 0 0 88 8 31 190 17 67 +188 17 66 188 17 66 188 17 66 191 17 67 124 11 43 5 0 2 +0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 68 6 24 187 17 66 188 17 66 +188 17 66 188 17 66 189 17 66 170 15 60 28 3 10 0 0 0 +34 3 12 174 16 61 189 17 66 188 17 66 188 17 66 188 17 66 +188 17 66 188 17 66 188 17 66 188 17 66 188 17 66 188 17 66 +188 17 66 188 17 66 188 17 66 188 17 66 191 17 67 101 9 35 +0 0 0 0 0 0 0 0 0 21 2 7 159 14 56 190 17 67 +188 17 66 188 17 66 188 17 66 188 17 66 188 17 66 188 17 66 +188 17 66 188 17 66 188 17 66 188 17 66 188 17 66 188 17 66 +188 17 66 191 17 67 98 9 34 0 0 0 81 7 29 189 17 66 +188 17 66 188 17 66 188 17 66 189 17 66 168 15 59 28 3 10 +0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 109 10 38 191 17 67 188 17 66 +188 17 66 188 17 66 190 17 67 163 15 57 21 2 7 0 0 0 +26 2 9 168 15 59 189 17 66 188 17 66 188 17 66 188 17 66 +188 17 66 188 17 66 188 17 66 188 17 66 188 17 66 188 17 66 +188 17 66 188 17 66 188 17 66 189 17 66 180 16 63 47 4 16 +0 0 0 0 0 0 0 0 0 0 0 0 108 10 38 190 17 67 +188 17 66 188 17 66 188 17 66 188 17 66 188 17 66 188 17 66 +188 17 66 188 17 66 188 17 66 188 17 66 188 17 66 188 17 66 +188 17 66 189 17 66 78 7 27 0 0 0 68 6 24 187 17 66 +188 17 66 188 17 66 188 17 66 188 17 66 183 17 64 56 5 19 +0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 3 0 1 131 12 46 191 17 67 188 17 66 +188 17 66 188 17 66 190 17 67 151 14 53 12 1 4 0 0 0 +11 1 4 146 13 51 190 17 67 188 17 66 188 17 66 188 17 66 +188 17 66 188 17 66 188 17 66 188 17 66 188 17 66 188 17 66 +188 17 66 188 17 66 188 17 66 191 17 67 126 14 44 7 1 2 +0 0 0 0 0 0 0 0 0 0 0 0 32 3 11 164 15 58 +190 17 67 188 17 66 188 17 66 188 17 66 188 17 66 188 17 66 +188 17 66 188 17 66 188 17 66 188 17 66 188 17 66 188 17 66 +189 17 66 178 16 62 44 4 15 0 0 0 50 5 17 182 16 64 +188 17 66 188 17 66 188 17 66 188 17 66 188 17 66 72 7 25 +0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 5 0 2 134 12 47 191 17 67 188 17 66 +188 17 66 188 17 66 191 17 67 131 12 46 3 0 1 0 0 0 +0 0 0 101 9 35 190 17 67 188 17 66 188 17 66 188 17 66 +188 17 66 188 17 66 188 17 66 188 17 66 188 17 66 188 17 66 +188 17 66 188 17 66 190 17 67 170 15 60 44 4 15 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 77 7 27 +183 17 64 189 17 66 188 17 66 188 17 66 188 17 66 188 17 66 +188 17 66 188 17 66 188 17 66 188 17 66 188 17 66 188 17 66 +191 17 67 134 12 47 9 1 3 0 0 0 31 3 11 171 15 60 +189 17 66 188 17 66 188 17 66 188 17 66 188 17 66 72 7 25 +0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 2 0 1 124 11 43 191 17 67 188 17 66 +188 17 66 188 17 66 191 17 67 101 9 35 0 0 0 0 0 0 +0 0 0 35 3 12 168 15 59 190 17 67 188 17 66 188 17 66 +188 17 66 188 17 66 188 17 66 188 17 66 188 17 66 188 17 66 +188 17 66 189 17 66 182 16 64 77 7 27 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6 1 2 +99 9 35 185 17 65 189 17 66 188 17 66 188 17 66 188 17 66 +188 17 66 188 17 66 188 17 66 188 17 66 188 17 66 189 17 66 +177 16 62 56 5 19 0 0 0 0 0 0 13 1 5 151 14 53 +190 17 67 188 17 66 188 17 66 188 17 66 185 17 65 56 5 19 +0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 99 9 35 191 17 67 188 17 66 +188 17 66 188 17 66 186 17 65 65 6 23 0 0 0 0 0 0 +0 0 0 0 0 0 79 7 28 182 16 64 190 17 67 188 17 66 +188 17 66 188 17 66 188 17 66 188 17 66 188 17 66 188 17 66 +191 17 67 177 16 62 83 8 29 4 0 1 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +8 1 3 89 8 31 175 16 62 191 17 67 189 17 66 188 17 66 +188 17 66 188 17 66 188 17 66 188 17 66 190 17 67 181 16 63 +85 8 30 3 0 1 0 0 0 0 0 0 1 0 0 118 13 41 +191 17 67 188 17 66 188 17 66 189 17 66 173 16 61 34 3 12 +0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 56 5 19 183 17 64 188 17 66 +188 17 66 189 17 66 169 15 59 30 3 10 0 0 0 0 0 0 +0 0 0 0 0 0 5 0 2 83 8 29 173 16 61 191 17 67 +190 17 67 189 17 66 189 17 66 190 17 67 191 17 67 187 17 66 +151 14 53 56 5 19 3 0 1 0 0 0 16 1 6 50 5 17 +79 7 28 95 9 33 95 9 33 75 7 26 41 4 14 10 1 4 +0 0 0 2 0 1 50 5 17 132 12 46 178 16 62 190 17 67 +191 17 67 191 17 67 191 17 67 186 17 65 154 14 54 68 6 24 +4 0 1 0 0 0 0 0 0 0 0 0 0 0 0 72 7 25 +187 17 66 188 17 66 188 17 66 191 17 67 141 13 49 9 1 3 +0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 14 1 5 151 14 53 190 17 67 +188 17 66 191 17 67 131 12 46 5 0 2 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 2 0 1 44 4 15 113 10 40 +156 14 55 173 16 61 174 16 61 164 15 58 134 12 47 77 7 27 +18 2 6 0 0 0 16 1 6 85 8 30 151 14 53 182 16 64 +189 17 66 191 17 67 190 17 67 188 17 66 177 16 62 141 13 49 +68 6 24 8 1 3 0 0 0 8 1 3 44 4 15 88 8 31 +113 10 40 122 11 43 108 10 38 67 6 24 20 2 7 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 28 3 10 +166 15 58 190 17 67 188 17 66 187 17 66 79 7 28 0 0 0 +0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 73 7 26 185 17 65 +189 17 66 184 17 65 65 6 23 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 1 +17 2 6 32 3 11 34 3 12 22 2 8 6 1 2 0 0 0 +0 0 0 38 3 13 141 13 49 188 17 66 190 17 67 188 17 66 +188 17 66 188 17 66 188 17 66 188 17 66 189 17 66 191 17 67 +184 17 65 122 11 43 21 2 7 0 0 0 0 0 0 0 0 0 +0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 +108 10 38 191 17 67 191 17 67 141 13 49 16 1 6 0 0 0 +0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 8 1 3 112 10 39 +186 17 65 124 11 43 10 1 4 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +36 3 13 156 14 55 191 17 67 188 17 66 188 17 66 188 17 66 +188 17 66 188 17 66 188 17 66 188 17 66 188 17 66 188 17 66 +189 17 66 190 17 67 134 12 47 18 2 6 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 7 1 2 41 4 14 75 7 26 66 5 23 19 2 7 +26 2 9 144 13 50 154 14 54 40 4 14 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 13 1 5 +56 5 19 19 2 7 0 0 0 7 1 2 29 3 10 35 3 12 +19 2 7 2 0 1 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 13 1 5 +134 12 47 191 17 67 188 17 66 188 17 66 188 17 66 188 17 66 +188 17 66 188 17 66 188 17 66 188 17 66 188 17 66 188 17 66 +188 17 66 188 17 66 189 17 67 108 10 38 3 0 1 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 +40 4 14 124 11 43 177 16 62 188 17 66 187 17 66 144 13 50 +24 2 8 17 2 6 22 2 8 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 19 2 7 122 11 43 171 15 60 175 16 62 +159 14 56 112 10 39 40 4 14 2 0 1 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 72 7 25 +186 17 65 188 17 66 188 17 66 188 17 66 188 17 66 188 17 66 +188 17 66 188 17 66 188 17 66 188 17 66 188 17 66 188 17 66 +188 17 66 188 17 66 189 17 66 174 16 61 41 4 14 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 3 0 1 72 7 25 +168 15 59 191 17 67 189 17 66 188 17 66 188 17 66 190 17 67 +95 9 33 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 95 9 33 191 17 67 189 17 66 189 17 66 +190 17 67 191 17 67 171 15 60 90 8 32 12 1 4 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 5 0 2 132 12 46 +191 17 67 188 17 66 188 17 66 188 17 66 188 17 66 188 17 66 +188 17 66 188 17 66 188 17 66 188 17 66 188 17 66 188 17 66 +188 17 66 188 17 66 188 17 66 190 17 67 98 9 34 0 0 0 +0 0 0 0 0 0 0 0 0 5 0 2 88 8 31 180 16 63 +190 17 67 188 17 66 188 17 66 188 17 66 188 17 66 191 17 67 +146 13 51 11 1 4 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 9 1 3 144 13 50 191 17 67 188 17 66 188 17 66 +188 17 66 188 17 66 189 17 66 187 17 66 123 11 43 20 2 7 +0 0 0 0 0 0 0 0 0 0 0 0 21 2 7 163 15 57 +190 17 67 188 17 66 188 17 66 188 17 66 188 17 66 188 17 66 +188 17 66 188 17 66 188 17 66 188 17 66 188 17 66 188 17 66 +188 17 66 188 17 66 188 17 66 191 17 67 134 12 47 5 0 2 +0 0 0 0 0 0 3 0 1 88 8 31 182 16 64 189 17 66 +188 17 66 188 17 66 188 17 66 188 17 66 188 17 66 189 17 66 +171 15 60 31 3 11 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 20 2 7 162 15 57 190 17 67 188 17 66 188 17 66 +188 17 66 188 17 66 188 17 66 188 17 66 190 17 67 132 12 46 +20 2 7 0 0 0 0 0 0 0 0 0 32 3 11 173 16 61 +189 17 66 188 17 66 188 17 66 188 17 66 188 17 66 188 17 66 +188 17 66 188 17 66 188 17 66 188 17 66 188 17 66 188 17 66 +188 17 66 188 17 66 188 17 66 190 17 67 151 14 53 12 1 4 +0 0 0 0 0 0 72 7 25 180 16 63 189 17 66 188 17 66 +188 17 66 188 17 66 188 17 66 188 17 66 188 17 66 188 17 66 +181 16 63 47 4 16 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 21 2 7 163 15 57 190 17 67 188 17 66 188 17 66 +188 17 66 188 17 66 188 17 66 188 17 66 188 17 66 190 17 67 +122 11 43 9 1 3 0 0 0 0 0 0 30 3 10 171 15 60 +189 17 66 188 17 66 188 17 66 188 17 66 188 17 66 188 17 66 +188 17 66 188 17 66 188 17 66 188 17 66 188 17 66 188 17 66 +188 17 66 188 17 66 188 17 66 190 17 67 146 13 51 10 1 4 +0 0 0 38 3 13 166 15 58 190 17 67 188 17 66 188 17 66 +188 17 66 188 17 66 188 17 66 188 17 66 188 17 66 188 17 66 +183 17 64 52 5 18 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 13 1 5 154 14 54 190 17 67 188 17 66 188 17 66 +188 17 66 188 17 66 188 17 66 188 17 66 188 17 66 188 17 66 +186 17 65 79 7 28 0 0 0 0 0 0 14 1 5 156 14 54 +190 17 67 188 17 66 188 17 66 188 17 66 188 17 66 188 17 66 +188 17 66 188 17 66 188 17 66 188 17 66 188 17 66 188 17 66 +188 17 66 188 17 66 188 17 66 191 17 67 124 11 43 2 0 1 +5 0 2 122 11 43 191 17 67 188 17 66 188 17 66 188 17 66 +188 17 66 188 17 66 188 17 66 188 17 66 188 17 66 188 17 66 +182 16 64 47 4 16 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 3 0 1 126 14 44 191 17 67 188 17 66 188 17 66 +188 17 66 188 17 66 188 17 66 188 17 66 188 17 66 188 17 66 +190 17 67 158 14 55 23 2 8 0 0 0 1 0 0 113 10 40 +191 17 67 188 17 66 188 17 66 188 17 66 188 17 66 188 17 66 +188 17 66 188 17 66 188 17 66 188 17 66 188 17 66 188 17 66 +188 17 66 188 17 66 188 17 66 188 17 66 78 7 27 0 0 0 +47 4 16 177 16 62 189 17 66 188 17 66 188 17 66 188 17 66 +188 17 66 188 17 66 188 17 66 188 17 66 188 17 66 189 17 66 +173 16 61 34 3 12 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 85 8 30 189 17 66 188 17 66 188 17 66 +188 17 66 188 17 66 188 17 66 188 17 66 188 17 66 188 17 66 +188 17 66 188 17 66 79 7 28 0 0 0 0 0 0 47 4 16 +175 16 62 189 17 66 188 17 66 188 17 66 188 17 66 188 17 66 +188 17 66 188 17 66 188 17 66 188 17 66 188 17 66 188 17 66 +188 17 66 188 17 66 190 17 67 156 14 55 22 2 8 0 0 0 +109 10 38 191 17 67 188 17 66 188 17 66 188 17 66 188 17 66 +188 17 66 188 17 66 188 17 66 188 17 66 188 17 66 190 17 67 +151 14 53 13 1 5 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 35 3 12 173 16 61 189 17 66 188 17 66 +188 17 66 188 17 66 188 17 66 188 17 66 188 17 66 188 17 66 +188 17 66 191 17 67 134 12 47 7 1 2 0 0 0 3 0 1 +99 9 35 188 17 66 189 17 66 188 17 66 188 17 66 188 17 66 +188 17 66 188 17 66 188 17 66 188 17 66 188 17 66 188 17 66 +188 17 66 189 17 66 181 16 63 68 6 24 0 0 0 18 2 6 +156 14 55 190 17 67 188 17 66 188 17 66 188 17 66 188 17 66 +188 17 66 188 17 66 188 17 66 188 17 66 188 17 66 190 17 67 +101 9 35 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 3 0 1 118 13 41 191 17 67 188 17 66 +188 17 66 188 17 66 188 17 66 188 17 66 188 17 66 188 17 66 +188 17 66 189 17 66 168 15 59 28 3 10 0 0 0 0 0 0 +12 1 4 113 10 40 187 17 66 189 17 67 188 17 66 188 17 66 +188 17 66 188 17 66 188 17 66 188 17 66 188 17 66 188 17 66 +190 17 67 180 16 63 88 8 31 4 0 1 0 0 0 47 4 16 +180 16 63 189 17 66 188 17 66 188 17 66 188 17 66 188 17 66 +188 17 66 188 17 66 188 17 66 188 17 66 190 17 67 168 15 59 +36 3 13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 38 3 13 164 15 58 190 17 67 +188 17 66 188 17 66 188 17 66 188 17 66 188 17 66 188 17 66 +188 17 66 188 17 66 182 16 64 50 5 17 0 0 0 0 0 0 +0 0 0 11 1 4 90 8 32 169 15 59 190 17 67 190 17 67 +189 17 66 189 17 66 189 17 66 189 17 66 191 17 67 189 17 66 +158 14 55 68 6 24 4 0 1 0 0 0 0 0 0 73 7 26 +188 17 66 188 17 66 188 17 66 188 17 66 188 17 66 188 17 66 +188 17 66 188 17 66 188 17 66 189 17 66 185 17 65 83 8 29 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 65 6 23 174 16 61 +190 17 67 188 17 66 188 17 66 188 17 66 188 17 66 188 17 66 +188 17 66 188 17 66 185 17 65 56 5 19 0 0 0 0 0 0 +0 0 0 0 0 0 2 0 1 35 3 12 99 9 35 146 13 51 +170 15 60 177 16 62 177 16 62 166 15 58 141 13 49 85 8 30 +24 2 8 0 0 0 0 0 0 0 0 0 0 0 0 85 8 30 +190 17 67 188 17 66 188 17 66 188 17 66 188 17 66 188 17 66 +188 17 66 188 17 66 188 17 66 189 17 66 112 10 39 8 1 3 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 68 6 24 +170 15 60 191 17 67 188 17 66 188 17 66 188 17 66 188 17 66 +188 17 66 188 17 66 182 16 64 50 5 17 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 11 1 4 +28 3 10 40 4 14 38 3 13 25 2 9 8 1 3 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 78 7 27 +189 17 66 188 17 66 188 17 66 188 17 66 188 17 66 188 17 66 +188 17 66 189 17 66 187 17 66 113 10 40 14 1 5 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 +47 4 16 141 13 49 186 17 65 191 17 67 190 17 67 189 17 66 +189 17 66 191 17 67 156 14 55 20 2 7 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 44 4 15 +178 16 62 190 17 67 188 17 66 188 17 66 188 17 66 190 17 67 +191 17 67 173 16 61 90 8 32 10 1 4 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 14 1 5 68 6 24 131 12 46 162 15 57 174 16 61 +171 15 60 146 13 51 56 5 19 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 3 0 1 14 1 5 29 3 10 +41 4 14 47 4 16 50 5 17 45 4 16 34 3 12 18 2 6 +5 0 2 0 0 0 0 0 0 0 0 0 0 0 0 5 0 2 +90 8 32 169 15 59 185 17 65 187 17 66 182 16 64 163 15 57 +113 10 40 41 4 14 2 0 1 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 5 0 2 21 2 7 34 3 12 +29 3 10 11 1 4 0 0 0 0 0 0 0 0 0 0 0 0 +3 0 1 32 3 11 79 7 28 124 11 43 154 14 54 171 15 60 +180 16 63 182 16 64 182 16 64 180 16 63 174 16 61 159 14 56 +132 12 46 88 8 31 34 3 12 3 0 1 0 0 0 0 0 0 +3 0 1 29 3 10 56 5 19 65 6 23 50 5 17 23 2 8 +3 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 25 2 9 +109 10 38 169 15 59 189 17 66 191 17 67 190 17 67 189 17 66 +189 17 66 188 17 66 188 17 66 188 17 66 189 17 66 190 17 67 +191 17 67 190 17 67 171 15 60 98 9 34 10 1 3 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 14 1 5 141 13 49 +191 17 67 189 17 66 188 17 66 188 17 66 188 17 66 188 17 66 +188 17 66 188 17 66 188 17 66 188 17 66 188 17 66 188 17 66 +188 17 66 188 17 66 189 17 67 186 17 65 65 6 23 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 23 2 8 166 15 58 +190 17 67 188 17 66 188 17 66 188 17 66 188 17 66 188 17 66 +188 17 66 188 17 66 188 17 66 188 17 66 188 17 66 188 17 66 +188 17 66 188 17 66 189 17 66 176 16 62 45 4 16 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 83 8 29 +183 17 64 189 17 66 188 17 66 188 17 66 188 17 66 188 17 66 +188 17 66 188 17 66 188 17 66 188 17 66 188 17 66 188 17 66 +188 17 66 189 17 66 185 17 65 95 9 33 3 0 1 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5 0 2 +85 8 30 176 16 62 191 17 67 188 17 66 188 17 66 188 17 66 +188 17 66 188 17 66 188 17 66 188 17 66 188 17 66 188 17 66 +191 17 67 180 16 63 95 9 33 7 1 3 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +2 0 1 52 5 18 141 13 49 185 17 65 191 17 67 189 17 67 +189 17 66 188 17 66 188 17 66 189 17 66 191 17 67 187 17 66 +146 13 51 56 5 19 4 0 1 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 14 1 5 68 6 24 131 12 46 166 15 58 +180 16 63 183 17 64 180 16 63 168 15 59 134 12 47 75 7 26 +17 2 6 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 5 0 2 24 2 8 +44 4 15 52 5 18 45 4 16 26 2 9 6 1 2 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 --- linux-raspi2-4.2.0.orig/drivers/w1/masters/w1-gpio.c +++ linux-raspi2-4.2.0/drivers/w1/masters/w1-gpio.c @@ -23,6 +23,19 @@ #include "../w1.h" #include "../w1_int.h" +static int w1_gpio_pullup = 0; +static int w1_gpio_pullup_orig = 0; +module_param_named(pullup, w1_gpio_pullup, int, 0); +MODULE_PARM_DESC(pullup, "Enable parasitic power (power on data) mode"); +static int w1_gpio_pullup_pin = -1; +static int w1_gpio_pullup_pin_orig = -1; +module_param_named(extpullup, w1_gpio_pullup_pin, int, 0); +MODULE_PARM_DESC(extpullup, "GPIO external pullup pin number"); +static int w1_gpio_pin = -1; +static int w1_gpio_pin_orig = -1; +module_param_named(gpiopin, w1_gpio_pin, int, 0); +MODULE_PARM_DESC(gpiopin, "GPIO pin number"); + static u8 w1_gpio_set_pullup(void *data, int delay) { struct w1_gpio_platform_data *pdata = data; @@ -67,6 +80,16 @@ return gpio_get_value(pdata->pin) ? 1 : 0; } +static void w1_gpio_bitbang_pullup(void *data, u8 on) +{ + struct w1_gpio_platform_data *pdata = data; + + if (on) + gpio_direction_output(pdata->pin, 1); + else + gpio_direction_input(pdata->pin); +} + #if defined(CONFIG_OF) static const struct of_device_id w1_gpio_dt_ids[] = { { .compatible = "w1-gpio" }, @@ -80,6 +103,7 @@ struct w1_gpio_platform_data *pdata = dev_get_platdata(&pdev->dev); struct device_node *np = pdev->dev.of_node; int gpio; + u32 value; pdata = devm_kzalloc(&pdev->dev, sizeof(*pdata), GFP_KERNEL); if (!pdata) @@ -88,6 +112,9 @@ if (of_get_property(np, "linux,open-drain", NULL)) pdata->is_open_drain = 1; + if (of_property_read_u32(np, "rpi,parasitic-power", &value) == 0) + pdata->parasitic_power = (value != 0); + gpio = of_get_gpio(np, 0); if (gpio < 0) { if (gpio != -EPROBE_DEFER) @@ -103,7 +130,7 @@ if (gpio == -EPROBE_DEFER) return gpio; /* ignore other errors as the pullup gpio is optional */ - pdata->ext_pullup_enable_pin = gpio; + pdata->ext_pullup_enable_pin = (gpio >= 0) ? gpio : -1; pdev->dev.platform_data = pdata; @@ -113,13 +140,15 @@ static int w1_gpio_probe(struct platform_device *pdev) { struct w1_bus_master *master; - struct w1_gpio_platform_data *pdata; + struct w1_gpio_platform_data *pdata = pdev->dev.platform_data; int err; - if (of_have_populated_dt()) { - err = w1_gpio_probe_dt(pdev); - if (err < 0) - return err; + if(pdata == NULL) { + if (of_have_populated_dt()) { + err = w1_gpio_probe_dt(pdev); + if (err < 0) + return err; + } } pdata = dev_get_platdata(&pdev->dev); @@ -136,6 +165,22 @@ return -ENOMEM; } + w1_gpio_pin_orig = pdata->pin; + w1_gpio_pullup_pin_orig = pdata->ext_pullup_enable_pin; + w1_gpio_pullup_orig = pdata->parasitic_power; + + if(gpio_is_valid(w1_gpio_pin)) { + pdata->pin = w1_gpio_pin; + pdata->ext_pullup_enable_pin = -1; + pdata->parasitic_power = -1; + } + pdata->parasitic_power |= w1_gpio_pullup; + if(gpio_is_valid(w1_gpio_pullup_pin)) { + pdata->ext_pullup_enable_pin = w1_gpio_pullup_pin; + } + + dev_info(&pdev->dev, "gpio pin %d, external pullup pin %d, parasitic power %d\n", pdata->pin, pdata->ext_pullup_enable_pin, pdata->parasitic_power); + err = devm_gpio_request(&pdev->dev, pdata->pin, "w1"); if (err) { dev_err(&pdev->dev, "gpio_request (pin) failed\n"); @@ -165,6 +210,14 @@ master->set_pullup = w1_gpio_set_pullup; } + if (pdata->parasitic_power) { + if (pdata->is_open_drain) + printk(KERN_ERR "w1-gpio 'pullup'(parasitic power) " + "option doesn't work with open drain GPIO\n"); + else + master->bitbang_pullup = w1_gpio_bitbang_pullup; + } + err = w1_add_master_device(master); if (err) { dev_err(&pdev->dev, "w1_add_master device failed\n"); @@ -195,6 +248,10 @@ w1_remove_master_device(master); + pdata->pin = w1_gpio_pin_orig; + pdata->ext_pullup_enable_pin = w1_gpio_pullup_pin_orig; + pdata->parasitic_power = w1_gpio_pullup_orig; + return 0; } --- linux-raspi2-4.2.0.orig/drivers/w1/w1.h +++ linux-raspi2-4.2.0/drivers/w1/w1.h @@ -171,6 +171,12 @@ u8 (*set_pullup)(void *, int); + /** + * Turns the pullup on/off in bitbanging mode, takes an on/off argument. + * @return -1=Error, 0=completed + */ + void (*bitbang_pullup) (void *, u8); + void (*search)(void *, struct w1_master *, u8, w1_slave_found_callback); }; --- linux-raspi2-4.2.0.orig/drivers/w1/w1_int.c +++ linux-raspi2-4.2.0/drivers/w1/w1_int.c @@ -123,6 +123,20 @@ return(-EINVAL); } + /* bitbanging hardware uses bitbang_pullup, other hardware uses set_pullup + * and takes care of timing itself */ + if (!master->write_byte && !master->touch_bit && master->set_pullup) { + printk(KERN_ERR "w1_add_master_device: set_pullup requires " + "write_byte or touch_bit, disabling\n"); + master->set_pullup = NULL; + } + + if (master->set_pullup && master->bitbang_pullup) { + printk(KERN_ERR "w1_add_master_device: set_pullup should not " + "be set when bitbang_pullup is used, disabling\n"); + master->set_pullup = NULL; + } + /* Lock until the device is added (or not) to w1_masters. */ mutex_lock(&w1_mlock); /* Search for the first available id (starting at 1). */ --- linux-raspi2-4.2.0.orig/drivers/w1/w1_io.c +++ linux-raspi2-4.2.0/drivers/w1/w1_io.c @@ -134,10 +134,22 @@ static void w1_post_write(struct w1_master *dev) { if (dev->pullup_duration) { - if (dev->enable_pullup && dev->bus_master->set_pullup) - dev->bus_master->set_pullup(dev->bus_master->data, 0); - else + if (dev->enable_pullup) { + if (dev->bus_master->set_pullup) { + dev->bus_master->set_pullup(dev-> + bus_master->data, + 0); + } else if (dev->bus_master->bitbang_pullup) { + dev->bus_master-> + bitbang_pullup(dev->bus_master->data, 1); msleep(dev->pullup_duration); + dev->bus_master-> + bitbang_pullup(dev->bus_master->data, 0); + } + } else { + msleep(dev->pullup_duration); + } + dev->pullup_duration = 0; } } --- linux-raspi2-4.2.0.orig/drivers/watchdog/Kconfig +++ linux-raspi2-4.2.0/drivers/watchdog/Kconfig @@ -473,6 +473,12 @@ To compile this driver as a module, choose M here: the module will be called retu_wdt. +config BCM2708_WDT + tristate "BCM2708 Watchdog" + depends on ARCH_BCM2708 || ARCH_BCM2709 + help + Enables BCM2708 watchdog support. + config MOXART_WDT tristate "MOXART watchdog" depends on ARCH_MOXART @@ -797,7 +803,8 @@ tristate "Intel TCO Timer/Watchdog" depends on (X86 || IA64) && PCI select WATCHDOG_CORE - select LPC_ICH + select LPC_ICH if !EXPERT + select I2C_I801 if !EXPERT ---help--- Hardware driver for the intel TCO timer based watchdog devices. These drivers are included in the Intel 82801 I/O Controller @@ -1260,7 +1267,7 @@ config BCM2835_WDT tristate "Broadcom BCM2835 hardware watchdog" - depends on ARCH_BCM2835 + depends on ARCH_BCM2835 || ARCH_BCM2708 || ARCH_BCM2709 select WATCHDOG_CORE help Watchdog driver for the built in watchdog hardware in Broadcom --- linux-raspi2-4.2.0.orig/drivers/watchdog/Makefile +++ linux-raspi2-4.2.0/drivers/watchdog/Makefile @@ -56,6 +56,7 @@ obj-$(CONFIG_IMX2_WDT) += imx2_wdt.o obj-$(CONFIG_UX500_WATCHDOG) += ux500_wdt.o obj-$(CONFIG_RETU_WATCHDOG) += retu_wdt.o +obj-$(CONFIG_BCM2708_WDT) += bcm2708_wdog.o obj-$(CONFIG_BCM2835_WDT) += bcm2835_wdt.o obj-$(CONFIG_MOXART_WDT) += moxart_wdt.o obj-$(CONFIG_SIRFSOC_WATCHDOG) += sirfsoc_wdt.o --- linux-raspi2-4.2.0.orig/drivers/watchdog/bcm2708_wdog.c +++ linux-raspi2-4.2.0/drivers/watchdog/bcm2708_wdog.c @@ -0,0 +1,382 @@ +/* + * Broadcom BCM2708 watchdog driver. + * + * (c) Copyright 2010 Broadcom Europe 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; either version + * 2 of the License, or (at your option) any later version. + * + * BCM2708 watchdog driver. Loosely based on wdt driver. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#define SECS_TO_WDOG_TICKS(x) ((x) << 16) +#define WDOG_TICKS_TO_SECS(x) ((x) >> 16) + +static unsigned long wdog_is_open; +static uint32_t wdog_ticks; /* Ticks to load into wdog timer */ +static char expect_close; + +/* + * Module parameters + */ + +#define WD_TIMO 10 /* Default heartbeat = 60 seconds */ +static int heartbeat = WD_TIMO; /* Heartbeat in seconds */ + +module_param(heartbeat, int, 0); +MODULE_PARM_DESC(heartbeat, + "Watchdog heartbeat in seconds. (0 < heartbeat < 65536, default=" + __MODULE_STRING(WD_TIMO) ")"); + +static int nowayout = WATCHDOG_NOWAYOUT; +module_param(nowayout, int, 0); +MODULE_PARM_DESC(nowayout, + "Watchdog cannot be stopped once started (default=" + __MODULE_STRING(WATCHDOG_NOWAYOUT) ")"); + +static DEFINE_SPINLOCK(wdog_lock); + +/** + * Start the watchdog driver. + */ + +static int wdog_start(unsigned long timeout) +{ + uint32_t cur; + unsigned long flags; + spin_lock_irqsave(&wdog_lock, flags); + + /* enable the watchdog */ + iowrite32(PM_PASSWORD | (timeout & PM_WDOG_TIME_SET), + __io_address(PM_WDOG)); + cur = ioread32(__io_address(PM_RSTC)); + iowrite32(PM_PASSWORD | (cur & PM_RSTC_WRCFG_CLR) | + PM_RSTC_WRCFG_FULL_RESET, __io_address(PM_RSTC)); + + spin_unlock_irqrestore(&wdog_lock, flags); + return 0; +} + +/** + * Stop the watchdog driver. + */ + +static int wdog_stop(void) +{ + iowrite32(PM_PASSWORD | PM_RSTC_RESET, __io_address(PM_RSTC)); + printk(KERN_INFO "watchdog stopped\n"); + return 0; +} + +/** + * Reload counter one with the watchdog heartbeat. We don't bother + * reloading the cascade counter. + */ + +static void wdog_ping(void) +{ + wdog_start(wdog_ticks); +} + +/** + * @t: the new heartbeat value that needs to be set. + * + * Set a new heartbeat value for the watchdog device. If the heartbeat + * value is incorrect we keep the old value and return -EINVAL. If + * successful we return 0. + */ + +static int wdog_set_heartbeat(int t) +{ + if (t < 1 || t > WDOG_TICKS_TO_SECS(PM_WDOG_TIME_SET)) + return -EINVAL; + + heartbeat = t; + wdog_ticks = SECS_TO_WDOG_TICKS(t); + return 0; +} + +/** + * @file: file handle to the watchdog + * @buf: buffer to write (unused as data does not matter here + * @count: count of bytes + * @ppos: pointer to the position to write. No seeks allowed + * + * A write to a watchdog device is defined as a keepalive signal. + * + * if 'nowayout' is set then normally a close() is ignored. But + * if you write 'V' first then the close() will stop the timer. + */ + +static ssize_t wdog_write(struct file *file, const char __user *buf, + size_t count, loff_t *ppos) +{ + if (count) { + if (!nowayout) { + size_t i; + + /* In case it was set long ago */ + expect_close = 0; + + for (i = 0; i != count; i++) { + char c; + if (get_user(c, buf + i)) + return -EFAULT; + if (c == 'V') + expect_close = 42; + } + } + wdog_ping(); + } + return count; +} + +static int wdog_get_status(void) +{ + unsigned long flags; + int status = 0; + spin_lock_irqsave(&wdog_lock, flags); + /* FIXME: readback reset reason */ + spin_unlock_irqrestore(&wdog_lock, flags); + return status; +} + +static uint32_t wdog_get_remaining(void) +{ + uint32_t ret = ioread32(__io_address(PM_WDOG)); + return ret & PM_WDOG_TIME_SET; +} + +/** + * @file: file handle to the device + * @cmd: watchdog command + * @arg: argument pointer + * + * The watchdog API defines a common set of functions for all watchdogs + * according to their available features. We only actually usefully support + * querying capabilities and current status. + */ + +static long wdog_ioctl(struct file *file, unsigned int cmd, unsigned long arg) +{ + void __user *argp = (void __user *)arg; + int __user *p = argp; + int new_heartbeat; + int status; + int options; + uint32_t remaining; + + struct watchdog_info ident = { + .options = WDIOF_SETTIMEOUT| + WDIOF_MAGICCLOSE| + WDIOF_KEEPALIVEPING, + .firmware_version = 1, + .identity = "BCM2708", + }; + + switch (cmd) { + case WDIOC_GETSUPPORT: + return copy_to_user(argp, &ident, sizeof(ident)) ? -EFAULT : 0; + case WDIOC_GETSTATUS: + status = wdog_get_status(); + return put_user(status, p); + case WDIOC_GETBOOTSTATUS: + return put_user(0, p); + case WDIOC_KEEPALIVE: + wdog_ping(); + return 0; + case WDIOC_SETTIMEOUT: + if (get_user(new_heartbeat, p)) + return -EFAULT; + if (wdog_set_heartbeat(new_heartbeat)) + return -EINVAL; + wdog_ping(); + /* Fall */ + case WDIOC_GETTIMEOUT: + return put_user(heartbeat, p); + case WDIOC_GETTIMELEFT: + remaining = WDOG_TICKS_TO_SECS(wdog_get_remaining()); + return put_user(remaining, p); + case WDIOC_SETOPTIONS: + if (get_user(options, p)) + return -EFAULT; + if (options & WDIOS_DISABLECARD) + wdog_stop(); + if (options & WDIOS_ENABLECARD) + wdog_start(wdog_ticks); + return 0; + default: + return -ENOTTY; + } +} + +/** + * @inode: inode of device + * @file: file handle to device + * + * The watchdog device has been opened. The watchdog device is single + * open and on opening we load the counters. + */ + +static int wdog_open(struct inode *inode, struct file *file) +{ + if (test_and_set_bit(0, &wdog_is_open)) + return -EBUSY; + /* + * Activate + */ + wdog_start(wdog_ticks); + return nonseekable_open(inode, file); +} + +/** + * @inode: inode to board + * @file: file handle to board + * + * The watchdog has a configurable API. There is a religious dispute + * between people who want their watchdog to be able to shut down and + * those who want to be sure if the watchdog manager dies the machine + * reboots. In the former case we disable the counters, in the latter + * case you have to open it again very soon. + */ + +static int wdog_release(struct inode *inode, struct file *file) +{ + if (expect_close == 42) { + wdog_stop(); + } else { + printk(KERN_CRIT + "wdt: WDT device closed unexpectedly. WDT will not stop!\n"); + wdog_ping(); + } + clear_bit(0, &wdog_is_open); + expect_close = 0; + return 0; +} + +/** + * @this: our notifier block + * @code: the event being reported + * @unused: unused + * + * Our notifier is called on system shutdowns. Turn the watchdog + * off so that it does not fire during the next reboot. + */ + +static int wdog_notify_sys(struct notifier_block *this, unsigned long code, + void *unused) +{ + if (code == SYS_DOWN || code == SYS_HALT) + wdog_stop(); + return NOTIFY_DONE; +} + +/* + * Kernel Interfaces + */ + + +static const struct file_operations wdog_fops = { + .owner = THIS_MODULE, + .llseek = no_llseek, + .write = wdog_write, + .unlocked_ioctl = wdog_ioctl, + .open = wdog_open, + .release = wdog_release, +}; + +static struct miscdevice wdog_miscdev = { + .minor = WATCHDOG_MINOR, + .name = "watchdog", + .fops = &wdog_fops, +}; + +/* + * The WDT card needs to learn about soft shutdowns in order to + * turn the timebomb registers off. + */ + +static struct notifier_block wdog_notifier = { + .notifier_call = wdog_notify_sys, +}; + +/** + * cleanup_module: + * + * Unload the watchdog. You cannot do this with any file handles open. + * If your watchdog is set to continue ticking on close and you unload + * it, well it keeps ticking. We won't get the interrupt but the board + * will not touch PC memory so all is fine. You just have to load a new + * module in 60 seconds or reboot. + */ + +static void __exit wdog_exit(void) +{ + misc_deregister(&wdog_miscdev); + unregister_reboot_notifier(&wdog_notifier); +} + +static int __init wdog_init(void) +{ + int ret; + + /* Check that the heartbeat value is within it's range; + if not reset to the default */ + if (wdog_set_heartbeat(heartbeat)) { + wdog_set_heartbeat(WD_TIMO); + printk(KERN_INFO "bcm2708_wdog: heartbeat value must be " + "0 < heartbeat < %d, using %d\n", + WDOG_TICKS_TO_SECS(PM_WDOG_TIME_SET), + WD_TIMO); + } + + ret = register_reboot_notifier(&wdog_notifier); + if (ret) { + printk(KERN_ERR + "wdt: cannot register reboot notifier (err=%d)\n", ret); + goto out_reboot; + } + + ret = misc_register(&wdog_miscdev); + if (ret) { + printk(KERN_ERR + "wdt: cannot register miscdev on minor=%d (err=%d)\n", + WATCHDOG_MINOR, ret); + goto out_misc; + } + + printk(KERN_INFO "bcm2708 watchdog, heartbeat=%d sec (nowayout=%d)\n", + heartbeat, nowayout); + return 0; + +out_misc: + unregister_reboot_notifier(&wdog_notifier); +out_reboot: + return ret; +} + +module_init(wdog_init); +module_exit(wdog_exit); + +MODULE_AUTHOR("Luke Diamand"); +MODULE_DESCRIPTION("Driver for BCM2708 watchdog"); +MODULE_ALIAS_MISCDEV(WATCHDOG_MINOR); +MODULE_ALIAS_MISCDEV(TEMP_MINOR); +MODULE_LICENSE("GPL"); --- linux-raspi2-4.2.0.orig/drivers/watchdog/bcm2835_wdt.c +++ linux-raspi2-4.2.0/drivers/watchdog/bcm2835_wdt.c @@ -36,6 +36,13 @@ #define PM_RSTC_WRCFG_FULL_RESET 0x00000020 #define PM_RSTC_RESET 0x00000102 +/* + * The Raspberry Pi firmware uses the RSTS register to know which partiton + * to boot from. The partiton value is spread into bits 0, 2, 4, 6, 8, 10. + * Partiton 63 is a special partition used by the firmware to indicate halt. + */ +#define PM_RSTS_RASPBERRYPI_HALT 0x555 + #define SECS_TO_WDOG_TICKS(x) ((x) << 16) #define WDOG_TICKS_TO_SECS(x) ((x) >> 16) @@ -151,8 +158,7 @@ * hard reset. */ val = readl_relaxed(wdt->base + PM_RSTS); - val &= PM_RSTC_WRCFG_CLR; - val |= PM_PASSWORD | PM_RSTS_HADWRH_SET; + val |= PM_PASSWORD | PM_RSTS_RASPBERRYPI_HALT; writel_relaxed(val, wdt->base + PM_RSTS); /* Continue with normal reset mechanism */ --- linux-raspi2-4.2.0.orig/drivers/watchdog/iTCO_wdt.c +++ linux-raspi2-4.2.0/drivers/watchdog/iTCO_wdt.c @@ -66,8 +66,7 @@ #include /* For spin_lock/spin_unlock/... */ #include /* For copy_to_user/put_user/... */ #include /* For inb/outb/... */ -#include -#include +#include #include "iTCO_vendor.h" @@ -146,59 +145,67 @@ return iTCO_wdt_private.iTCO_version == 3 ? ticks : (ticks * 6) / 10; } +static inline u32 no_reboot_bit(void) +{ + u32 enable_bit; + + switch (iTCO_wdt_private.iTCO_version) { + case 3: + enable_bit = 0x00000010; + break; + case 2: + enable_bit = 0x00000020; + break; + case 4: + case 1: + default: + enable_bit = 0x00000002; + break; + } + + return enable_bit; +} + static void iTCO_wdt_set_NO_REBOOT_bit(void) { u32 val32; /* Set the NO_REBOOT bit: this disables reboots */ - if (iTCO_wdt_private.iTCO_version == 3) { - val32 = readl(iTCO_wdt_private.gcs_pmc); - val32 |= 0x00000010; - writel(val32, iTCO_wdt_private.gcs_pmc); - } else if (iTCO_wdt_private.iTCO_version == 2) { + if (iTCO_wdt_private.iTCO_version >= 2) { val32 = readl(iTCO_wdt_private.gcs_pmc); - val32 |= 0x00000020; + val32 |= no_reboot_bit(); writel(val32, iTCO_wdt_private.gcs_pmc); } else if (iTCO_wdt_private.iTCO_version == 1) { pci_read_config_dword(iTCO_wdt_private.pdev, 0xd4, &val32); - val32 |= 0x00000002; + val32 |= no_reboot_bit(); pci_write_config_dword(iTCO_wdt_private.pdev, 0xd4, val32); } } static int iTCO_wdt_unset_NO_REBOOT_bit(void) { - int ret = 0; - u32 val32; + u32 enable_bit = no_reboot_bit(); + u32 val32 = 0; /* Unset the NO_REBOOT bit: this enables reboots */ - if (iTCO_wdt_private.iTCO_version == 3) { - val32 = readl(iTCO_wdt_private.gcs_pmc); - val32 &= 0xffffffef; - writel(val32, iTCO_wdt_private.gcs_pmc); - - val32 = readl(iTCO_wdt_private.gcs_pmc); - if (val32 & 0x00000010) - ret = -EIO; - } else if (iTCO_wdt_private.iTCO_version == 2) { + if (iTCO_wdt_private.iTCO_version >= 2) { val32 = readl(iTCO_wdt_private.gcs_pmc); - val32 &= 0xffffffdf; + val32 &= ~enable_bit; writel(val32, iTCO_wdt_private.gcs_pmc); val32 = readl(iTCO_wdt_private.gcs_pmc); - if (val32 & 0x00000020) - ret = -EIO; } else if (iTCO_wdt_private.iTCO_version == 1) { pci_read_config_dword(iTCO_wdt_private.pdev, 0xd4, &val32); - val32 &= 0xfffffffd; + val32 &= ~enable_bit; pci_write_config_dword(iTCO_wdt_private.pdev, 0xd4, val32); pci_read_config_dword(iTCO_wdt_private.pdev, 0xd4, &val32); - if (val32 & 0x00000002) - ret = -EIO; } - return ret; /* returns: 0 = OK, -EIO = Error */ + if (val32 & enable_bit) + return -EIO; + + return 0; } static int iTCO_wdt_start(struct watchdog_device *wd_dev) @@ -418,9 +425,9 @@ { int ret = -ENODEV; unsigned long val32; - struct lpc_ich_info *ich_info = dev_get_platdata(&dev->dev); + struct itco_wdt_platform_data *pdata = dev_get_platdata(&dev->dev); - if (!ich_info) + if (!pdata) goto out; spin_lock_init(&iTCO_wdt_private.io_lock); @@ -435,7 +442,7 @@ if (!iTCO_wdt_private.smi_res) goto out; - iTCO_wdt_private.iTCO_version = ich_info->iTCO_version; + iTCO_wdt_private.iTCO_version = pdata->version; iTCO_wdt_private.dev = dev; iTCO_wdt_private.pdev = to_pci_dev(dev->dev.parent); @@ -501,15 +508,24 @@ } pr_info("Found a %s TCO device (Version=%d, TCOBASE=0x%04llx)\n", - ich_info->name, ich_info->iTCO_version, (u64)TCOBASE); + pdata->name, pdata->version, (u64)TCOBASE); /* Clear out the (probably old) status */ - if (iTCO_wdt_private.iTCO_version == 3) { + switch (iTCO_wdt_private.iTCO_version) { + case 4: + outw(0x0008, TCO1_STS); /* Clear the Time Out Status bit */ + outw(0x0002, TCO2_STS); /* Clear SECOND_TO_STS bit */ + break; + case 3: outl(0x20008, TCO1_STS); - } else { + break; + case 2: + case 1: + default: outw(0x0008, TCO1_STS); /* Clear the Time Out Status bit */ outw(0x0002, TCO2_STS); /* Clear SECOND_TO_STS bit */ outw(0x0004, TCO2_STS); /* Clear BOOT_STS bit */ + break; } iTCO_wdt_watchdog_dev.bootstatus = 0; --- linux-raspi2-4.2.0.orig/drivers/watchdog/imgpdc_wdt.c +++ linux-raspi2-4.2.0/drivers/watchdog/imgpdc_wdt.c @@ -316,6 +316,7 @@ { struct pdc_wdt_dev *pdc_wdt = platform_get_drvdata(pdev); + unregister_restart_handler(&pdc_wdt->restart_handler); pdc_wdt_stop(&pdc_wdt->wdt_dev); watchdog_unregister_device(&pdc_wdt->wdt_dev); clk_disable_unprepare(pdc_wdt->wdt_clk); --- linux-raspi2-4.2.0.orig/drivers/watchdog/sunxi_wdt.c +++ linux-raspi2-4.2.0/drivers/watchdog/sunxi_wdt.c @@ -184,7 +184,7 @@ /* Set system reset function */ reg = readl(wdt_base + regs->wdt_cfg); reg &= ~(regs->wdt_reset_mask); - reg |= ~(regs->wdt_reset_val); + reg |= regs->wdt_reset_val; writel(reg, wdt_base + regs->wdt_cfg); /* Enable watchdog */ --- linux-raspi2-4.2.0.orig/drivers/xen/events/events_base.c +++ linux-raspi2-4.2.0/drivers/xen/events/events_base.c @@ -39,6 +39,7 @@ #include #include #include +#include #include #include #endif @@ -420,7 +421,7 @@ return xen_allocate_irq_dynamic(); /* Legacy IRQ descriptors are already allocated by the arch. */ - if (gsi < NR_IRQS_LEGACY) + if (gsi < nr_legacy_irqs()) irq = gsi; else irq = irq_alloc_desc_at(gsi, -1); @@ -446,7 +447,7 @@ kfree(info); /* Legacy IRQ descriptors are managed by the arch. */ - if (irq < NR_IRQS_LEGACY) + if (irq < nr_legacy_irqs()) return; irq_free_desc(irq); --- linux-raspi2-4.2.0.orig/drivers/xen/preempt.c +++ linux-raspi2-4.2.0/drivers/xen/preempt.c @@ -31,7 +31,7 @@ asmlinkage __visible void xen_maybe_preempt_hcall(void) { if (unlikely(__this_cpu_read(xen_in_preemptible_hcall) - && should_resched())) { + && need_resched())) { /* * Clear flag as we may be rescheduled on a different * cpu. --- linux-raspi2-4.2.0.orig/drivers/xen/xen-pciback/pciback.h +++ linux-raspi2-4.2.0/drivers/xen/xen-pciback/pciback.h @@ -37,6 +37,7 @@ struct xen_pci_sharedinfo *sh_info; unsigned long flags; struct work_struct op_work; + struct xen_pci_op op; }; struct xen_pcibk_dev_data { --- linux-raspi2-4.2.0.orig/drivers/xen/xen-pciback/pciback_ops.c +++ linux-raspi2-4.2.0/drivers/xen/xen-pciback/pciback_ops.c @@ -70,6 +70,13 @@ enable ? "enable" : "disable"); if (enable) { + /* + * The MSI or MSI-X should not have an IRQ handler. Otherwise + * if the guest terminates we BUG_ON in free_msi_irqs. + */ + if (dev->msi_enabled || dev->msix_enabled) + goto out; + rc = request_irq(dev_data->irq, xen_pcibk_guest_interrupt, IRQF_SHARED, dev_data->irq_name, dev); @@ -144,7 +151,12 @@ if (unlikely(verbose_request)) printk(KERN_DEBUG DRV_NAME ": %s: enable MSI\n", pci_name(dev)); - status = pci_enable_msi(dev); + if (dev->msi_enabled) + status = -EALREADY; + else if (dev->msix_enabled) + status = -ENXIO; + else + status = pci_enable_msi(dev); if (status) { pr_warn_ratelimited("%s: error enabling MSI for guest %u: err %d\n", @@ -173,20 +185,23 @@ int xen_pcibk_disable_msi(struct xen_pcibk_device *pdev, struct pci_dev *dev, struct xen_pci_op *op) { - struct xen_pcibk_dev_data *dev_data; - if (unlikely(verbose_request)) printk(KERN_DEBUG DRV_NAME ": %s: disable MSI\n", pci_name(dev)); - pci_disable_msi(dev); + if (dev->msi_enabled) { + struct xen_pcibk_dev_data *dev_data; + + pci_disable_msi(dev); + + dev_data = pci_get_drvdata(dev); + if (dev_data) + dev_data->ack_intr = 1; + } op->value = dev->irq ? xen_pirq_from_irq(dev->irq) : 0; if (unlikely(verbose_request)) printk(KERN_DEBUG DRV_NAME ": %s: MSI: %d\n", pci_name(dev), op->value); - dev_data = pci_get_drvdata(dev); - if (dev_data) - dev_data->ack_intr = 1; return 0; } @@ -197,13 +212,26 @@ struct xen_pcibk_dev_data *dev_data; int i, result; struct msix_entry *entries; + u16 cmd; if (unlikely(verbose_request)) printk(KERN_DEBUG DRV_NAME ": %s: enable MSI-X\n", pci_name(dev)); + if (op->value > SH_INFO_MAX_VEC) return -EINVAL; + if (dev->msix_enabled) + return -EALREADY; + + /* + * PCI_COMMAND_MEMORY must be enabled, otherwise we may not be able + * to access the BARs where the MSI-X entries reside. + */ + pci_read_config_word(dev, PCI_COMMAND, &cmd); + if (dev->msi_enabled || !(cmd & PCI_COMMAND_MEMORY)) + return -ENXIO; + entries = kmalloc(op->value * sizeof(*entries), GFP_KERNEL); if (entries == NULL) return -ENOMEM; @@ -245,23 +273,27 @@ int xen_pcibk_disable_msix(struct xen_pcibk_device *pdev, struct pci_dev *dev, struct xen_pci_op *op) { - struct xen_pcibk_dev_data *dev_data; if (unlikely(verbose_request)) printk(KERN_DEBUG DRV_NAME ": %s: disable MSI-X\n", pci_name(dev)); - pci_disable_msix(dev); + if (dev->msix_enabled) { + struct xen_pcibk_dev_data *dev_data; + + pci_disable_msix(dev); + + dev_data = pci_get_drvdata(dev); + if (dev_data) + dev_data->ack_intr = 1; + } /* * SR-IOV devices (which don't have any legacy IRQ) have * an undefined IRQ value of zero. */ op->value = dev->irq ? xen_pirq_from_irq(dev->irq) : 0; if (unlikely(verbose_request)) - printk(KERN_DEBUG DRV_NAME ": %s: MSI-X: %d\n", pci_name(dev), - op->value); - dev_data = pci_get_drvdata(dev); - if (dev_data) - dev_data->ack_intr = 1; + printk(KERN_DEBUG DRV_NAME ": %s: MSI-X: %d\n", + pci_name(dev), op->value); return 0; } #endif @@ -298,9 +330,11 @@ 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->sh_info->op; + struct xen_pci_op *op = &pdev->op; int test_intx = 0; + *op = pdev->sh_info->op; + barrier(); dev = xen_pcibk_get_pci_dev(pdev, op->domain, op->bus, op->devfn); if (dev == NULL) @@ -342,6 +376,17 @@ if ((dev_data->enable_intx != test_intx)) xen_pcibk_control_isr(dev, 0 /* no reset */); } + pdev->sh_info->op.err = op->err; + pdev->sh_info->op.value = op->value; +#ifdef CONFIG_PCI_MSI + if (op->cmd == XEN_PCI_OP_enable_msix && op->err == 0) { + unsigned int i; + + for (i = 0; i < op->value; i++) + pdev->sh_info->op.msix_entries[i].vector = + op->msix_entries[i].vector; + } +#endif /* Tell the driver domain that we're done. */ wmb(); clear_bit(_XEN_PCIF_active, (unsigned long *)&pdev->sh_info->flags); --- linux-raspi2-4.2.0.orig/drivers/xen/xen-scsiback.c +++ linux-raspi2-4.2.0/drivers/xen/xen-scsiback.c @@ -727,7 +727,7 @@ if (!pending_req) return 1; - ring_req = *RING_GET_REQUEST(ring, rc); + RING_COPY_REQUEST(ring, rc, &ring_req); ring->req_cons = ++rc; err = prepare_pending_reqs(info, &ring_req, pending_req); --- linux-raspi2-4.2.0.orig/dropped.txt +++ linux-raspi2-4.2.0/dropped.txt @@ -0,0 +1,11 @@ +UBUNTU: SAUCE: (no-up) dell-wmi: Demote unknown WMI event message to pr_debug +UBUNTU: SAUCE: (no-up) arm64: dts: Add X-Gene reboot driver dts node +UBUNTU: SAUCE: (no-up) Add documentation for generic SYSCON reboot driver. +UBUNTU: SAUCE: fix perf_regs definitions for arm64 +UBUNTU: SAUCE: aufs3 -- (no-up) aufs3-mmap.patch +Revert "UBUNTU: SAUCE: aufs3 -- (no-up) aufs3-mmap.patch" +UBUNTU: SAUCE: aufs3 -- (no-up) aufs3-mmap.patch +UBUNTU: SAUCE: aufs3 -- avoid aufs3-mmap.patch include hell for arm64 +UBUNTU: SAUCE: (no-up) irqchip:gic: change access of gicc_ctrl register to read modify write. +UBUNTU: SAUCE: (no-up) PCI: Increase BAR size quirk for IBM ipr SAS Crocodile adapters + --- linux-raspi2-4.2.0.orig/firmware/Makefile +++ linux-raspi2-4.2.0/firmware/Makefile @@ -20,80 +20,32 @@ # accurate. In the latter case it doesn't matter -- it'll use $(fw-shipped-all). # But be aware that the config file might not be included at all. -ifdef CONFIG_ACENIC_OMIT_TIGON_I -acenic-objs := acenic/tg2.bin -fw-shipped- += acenic/tg1.bin -else -acenic-objs := acenic/tg1.bin acenic/tg2.bin -endif -fw-shipped-$(CONFIG_ACENIC) += $(acenic-objs) -fw-shipped-$(CONFIG_ADAPTEC_STARFIRE) += adaptec/starfire_rx.bin \ - adaptec/starfire_tx.bin -fw-shipped-$(CONFIG_ATARI_DSP56K) += dsp56k/bootstrap.bin -fw-shipped-$(CONFIG_ATM_AMBASSADOR) += atmsar11.fw -fw-shipped-$(CONFIG_BNX2X) += bnx2x/bnx2x-e1-6.2.9.0.fw \ - bnx2x/bnx2x-e1h-6.2.9.0.fw \ - bnx2x/bnx2x-e2-6.2.9.0.fw -fw-shipped-$(CONFIG_BNX2) += bnx2/bnx2-mips-09-6.2.1a.fw \ - bnx2/bnx2-rv2p-09-6.0.17.fw \ - bnx2/bnx2-rv2p-09ax-6.0.17.fw \ - bnx2/bnx2-mips-06-6.2.1.fw \ - bnx2/bnx2-rv2p-06-6.0.15.fw -fw-shipped-$(CONFIG_CASSINI) += sun/cassini.bin -fw-shipped-$(CONFIG_CHELSIO_T3) += cxgb3/t3b_psram-1.1.0.bin \ - cxgb3/t3c_psram-1.1.0.bin \ - cxgb3/ael2005_opt_edc.bin \ - cxgb3/ael2005_twx_edc.bin \ - cxgb3/ael2020_twx_edc.bin -fw-shipped-$(CONFIG_DRM_MGA) += matrox/g200_warp.fw matrox/g400_warp.fw -fw-shipped-$(CONFIG_DRM_R128) += r128/r128_cce.bin -fw-shipped-$(CONFIG_DRM_RADEON) += radeon/R100_cp.bin radeon/R200_cp.bin \ - radeon/R300_cp.bin radeon/R420_cp.bin \ - radeon/RS690_cp.bin radeon/RS600_cp.bin \ - radeon/R520_cp.bin \ - radeon/R600_pfp.bin radeon/R600_me.bin \ - radeon/RV610_pfp.bin radeon/RV610_me.bin \ - radeon/RV630_pfp.bin radeon/RV630_me.bin \ - radeon/RV620_pfp.bin radeon/RV620_me.bin \ - radeon/RV635_pfp.bin radeon/RV635_me.bin \ - radeon/RV670_pfp.bin radeon/RV670_me.bin \ - radeon/RS780_pfp.bin radeon/RS780_me.bin \ - radeon/RV770_pfp.bin radeon/RV770_me.bin \ - radeon/RV730_pfp.bin radeon/RV730_me.bin \ - radeon/RV710_pfp.bin radeon/RV710_me.bin -fw-shipped-$(CONFIG_DVB_AV7110) += av7110/bootcode.bin -fw-shipped-$(CONFIG_DVB_TTUSB_BUDGET) += ttusb-budget/dspbootcode.bin +fw-shipped-$(CONFIG_BNX2X) += bnx2x/bnx2x-e1-7.10.51.0.fw \ + bnx2x/bnx2x-e1h-7.10.51.0.fw \ + bnx2x/bnx2x-e2-7.10.51.0.fw +fw-shipped-$(CONFIG_BNX2) += 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 fw-shipped-$(CONFIG_E100) += e100/d101m_ucode.bin e100/d101s_ucode.bin \ e100/d102e_ucode.bin -fw-shipped-$(CONFIG_MYRI_SBUS) += myricom/lanai.bin -fw-shipped-$(CONFIG_PCMCIA_PCNET) += cis/LA-PCM.cis cis/PCMLM28.cis \ - cis/DP83903.cis cis/NE2K.cis \ - cis/tamarack.cis cis/PE-200.cis \ - cis/PE520.cis -fw-shipped-$(CONFIG_PCMCIA_3C589) += cis/3CXEM556.cis -fw-shipped-$(CONFIG_PCMCIA_3C574) += cis/3CCFEM556.cis -fw-shipped-$(CONFIG_SERIAL_8250_CS) += cis/MT5634ZLX.cis cis/RS-COM-2P.cis \ - cis/COMpad2.cis cis/COMpad4.cis \ - cis/SW_555_SER.cis cis/SW_7xx_SER.cis \ - cis/SW_8xx_SER.cis -fw-shipped-$(CONFIG_PCMCIA_SMC91C92) += ositech/Xilinx7OD.bin -fw-shipped-$(CONFIG_SCSI_ADVANSYS) += advansys/mcode.bin advansys/38C1600.bin \ - advansys/3550.bin advansys/38C0800.bin +fw-shipped-$(CONFIG_PCMCIA_PCNET) += + +fw-shipped-$(CONFIG_PCMCIA_3C589) += +fw-shipped-$(CONFIG_PCMCIA_3C574) += +fw-shipped-$(CONFIG_SERIAL_8250_CS) += + fw-shipped-$(CONFIG_SCSI_QLOGIC_1280) += qlogic/1040.bin qlogic/1280.bin \ qlogic/12160.bin fw-shipped-$(CONFIG_SCSI_QLOGICPTI) += qlogic/isp1000.bin fw-shipped-$(CONFIG_INFINIBAND_QIB) += qlogic/sd7220.fw fw-shipped-$(CONFIG_SND_KORG1212) += korg/k1212.dsp -fw-shipped-$(CONFIG_SND_MAESTRO3) += ess/maestro3_assp_kernel.fw \ - ess/maestro3_assp_minisrc.fw fw-shipped-$(CONFIG_SND_SB16_CSP) += sb16/mulaw_main.csp sb16/alaw_main.csp \ sb16/ima_adpcm_init.csp \ sb16/ima_adpcm_playback.csp \ sb16/ima_adpcm_capture.csp -fw-shipped-$(CONFIG_SND_YMFPCI) += yamaha/ds1_ctrl.fw yamaha/ds1_dsp.fw \ - yamaha/ds1e_ctrl.fw fw-shipped-$(CONFIG_SND_WAVEFRONT) += yamaha/yss225_registers.bin -fw-shipped-$(CONFIG_TEHUTI) += tehuti/bdx.bin fw-shipped-$(CONFIG_TIGON3) += tigon/tg3.bin tigon/tg3_tso.bin \ tigon/tg3_tso5.bin fw-shipped-$(CONFIG_TYPHOON) += 3com/typhoon.bin @@ -101,40 +53,8 @@ emi26/bitstream.fw fw-shipped-$(CONFIG_USB_EMI62) += emi62/loader.fw emi62/bitstream.fw \ emi62/spdif.fw emi62/midi.fw -fw-shipped-$(CONFIG_USB_KAWETH) += kaweth/new_code.bin kaweth/trigger_code.bin \ - kaweth/new_code_fix.bin \ - kaweth/trigger_code_fix.bin -ifdef CONFIG_FIRMWARE_IN_KERNEL -fw-shipped-$(CONFIG_USB_SERIAL_KEYSPAN_MPR) += keyspan/mpr.fw -fw-shipped-$(CONFIG_USB_SERIAL_KEYSPAN_USA18X) += keyspan/usa18x.fw -fw-shipped-$(CONFIG_USB_SERIAL_KEYSPAN_USA19) += keyspan/usa19.fw -fw-shipped-$(CONFIG_USB_SERIAL_KEYSPAN_USA19QI) += keyspan/usa19qi.fw -fw-shipped-$(CONFIG_USB_SERIAL_KEYSPAN_USA19QW) += keyspan/usa19qw.fw -fw-shipped-$(CONFIG_USB_SERIAL_KEYSPAN_USA19W) += keyspan/usa19w.fw -fw-shipped-$(CONFIG_USB_SERIAL_KEYSPAN_USA28) += keyspan/usa28.fw -fw-shipped-$(CONFIG_USB_SERIAL_KEYSPAN_USA28XA) += keyspan/usa28xa.fw -fw-shipped-$(CONFIG_USB_SERIAL_KEYSPAN_USA28XB) += keyspan/usa28xb.fw -fw-shipped-$(CONFIG_USB_SERIAL_KEYSPAN_USA28X) += keyspan/usa28x.fw -fw-shipped-$(CONFIG_USB_SERIAL_KEYSPAN_USA49W) += keyspan/usa49w.fw -fw-shipped-$(CONFIG_USB_SERIAL_KEYSPAN_USA49WLC) += keyspan/usa49wlc.fw -else -fw-shipped- += keyspan/mpr.fw keyspan/usa18x.fw keyspan/usa19.fw \ - keyspan/usa19qi.fw keyspan/usa19qw.fw keyspan/usa19w.fw \ - keyspan/usa28.fw keyspan/usa28xa.fw keyspan/usa28xb.fw \ - keyspan/usa28x.fw keyspan/usa49w.fw keyspan/usa49wlc.fw -endif -fw-shipped-$(CONFIG_USB_SERIAL_TI) += ti_3410.fw ti_5052.fw \ - mts_cdma.fw mts_gsm.fw mts_edge.fw -fw-shipped-$(CONFIG_USB_SERIAL_EDGEPORT) += edgeport/boot.fw edgeport/boot2.fw \ - edgeport/down.fw edgeport/down2.fw -fw-shipped-$(CONFIG_USB_SERIAL_EDGEPORT_TI) += edgeport/down3.bin fw-shipped-$(CONFIG_USB_SERIAL_WHITEHEAT) += whiteheat_loader.fw whiteheat.fw \ # whiteheat_loader_debug.fw -fw-shipped-$(CONFIG_USB_SERIAL_KEYSPAN_PDA) += keyspan_pda/keyspan_pda.fw -fw-shipped-$(CONFIG_USB_SERIAL_XIRCOM) += keyspan_pda/xircom_pgs.fw -fw-shipped-$(CONFIG_USB_VICAM) += vicam/firmware.fw -fw-shipped-$(CONFIG_VIDEO_CPIA2) += cpia2/stv0672_vp4.bin -fw-shipped-$(CONFIG_YAM) += yam/1200.bin yam/9600.bin fw-shipped-all := $(fw-shipped-y) $(fw-shipped-m) $(fw-shipped-) --- linux-raspi2-4.2.0.orig/firmware/WHENCE +++ linux-raspi2-4.2.0/firmware/WHENCE @@ -619,16 +619,6 @@ -------------------------------------------------------------------------- -Driver: MYRI_SBUS - MyriCOM Gigabit Ethernet - -File: myricom/lanai.bin - -Licence: Unknown - -Found in hex form in kernel source. - --------------------------------------------------------------------------- - Driver: bnx2x: Broadcom Everest File: bnx2x/bnx2x-e1-6.2.9.0.fw --- linux-raspi2-4.2.0.orig/firmware/bnx2/bnx2-mips-06-6.2.3.fw.ihex +++ linux-raspi2-4.2.0/firmware/bnx2/bnx2-mips-06-6.2.3.fw.ihex @@ -0,0 +1,5804 @@ +:10000000080001180800000000004A68000000C84D +:1000100000000000000000000000000008004A6826 +:100020000000001400004B30080000A00800000091 +:100030000000569400004B44080058200000008443 +:100040000000A1D808005694000001580000A25CEE +:100050000800321008000000000072F00000A3B495 +:10006000000000000000000000000000080072F026 +:1000700000000024000116A40800049008000400F9 +:10008000000017D4000116C80000000000000000A6 +:100090000000000000000000000000000000000060 +:1000A000080000A80800000000003BFC00012E9C96 +:1000B0000000000000000000000000000000000040 +:1000C00000000000000000000A00004600000000E0 +:1000D000000000000000000D636F6D362E322E33DD +:1000E0000000000006020302000000000000000300 +:1000F000000000C800000032000000030000000003 +:1001000000000000000000000000000000000000EF +:1001100000000010000001360000EA600000000549 +:1001200000000000000000000000000000000008C7 +:1001300000000000000000000000000000000000BF +:1001400000000000000000000000000000000000AF +:10015000000000000000000000000000000000009F +:10016000000000020000000000000000000000008D +:10017000000000000000000000000000000000007F +:10018000000000000000000000000010000000005F +:10019000000000000000000000000000000000005F +:1001A000000000000000000000000000000000004F +:1001B000000000000000000000000000000000003F +:1001C000000000000000000000000000000000002F +:1001D000000000000000000000000000000000001F +:1001E0000000000010000003000000000000000DEF +:1001F0000000000D3C02080024424AA03C03080015 +:1002000024634B9CAC4000000043202B1480FFFD76 +:10021000244200043C1D080037BD7FFC03A0F021F0 +:100220003C100800261001183C1C0800279C4AA01E +:100230000E000168000000000000000D27470100CB +:1002400090E3000B2402001A94E5000814620028D1 +:10025000000020218CE200003C0308008C63004475 +:1002600094E60014000211C20002104030A4000203 +:10027000005A10212463000130A50004A446008028 +:100280003C010800AC23004410A000190004202BFE +:100290008F4202B804410008240400013C02080017 +:1002A0008C420060244200013C010800AC22006046 +:1002B00003E00008008010218CE2002094E3001687 +:1002C00000002021AF4202808CE20004A743028498 +:1002D000AF4202883C021000AF4202B83C02080064 +:1002E0008C42005C244200013C010800AC22005C0E +:1002F00003E00008008010212747010090E3000B75 +:100300002402000394E50008146200280000202164 +:100310008CE200003C0308008C63004494E6001467 +:10032000000211C20002104030A40002005A102145 +:100330002463000130A50004A44600803C010800AD +:10034000AC23004410A000190004202B8F4202B8F7 +:1003500004410008240400013C0208008C420060B3 +:10036000244200013C010800AC22006003E00008C8 +:10037000008010218CE2002094E300160000202170 +:10038000AF4202808CE20004A7430284AF4202889D +:100390003C021000AF4202B83C0208008C42005CF4 +:1003A000244200013C010800AC22005C03E000088C +:1003B000008010218F4301002402010050620003DD +:1003C000000311C20000000D000311C20002104022 +:1003D000005A1021A440008003E000080000102112 +:1003E0009362000003E00008AF80000003E0000813 +:1003F0000000102103E00008000010212402010089 +:1004000014820008000000003C0208008C4200FC3E +:10041000244200013C010800AC2200FC0A0000DD7F +:1004200030A200203C0208008C42008424420001DB +:100430003C010800AC22008430A2002010400008DB +:1004400030A300103C0208008C4201082442000145 +:100450003C010800AC22010803E000080000000095 +:1004600010600008000000003C0208008C420104FB +:10047000244200013C010800AC22010403E0000812 +:10048000000000003C0208008C42010024420001F0 +:100490003C010800AC22010003E00008000000005D +:1004A00027BDFFE8AFBF0010274401009483000878 +:1004B000306200041040001B306600028F4202B818 +:1004C00004410008240500013C0208008C42006041 +:1004D000244200013C010800AC2200600A0001290E +:1004E0008FBF00108C82002094830016000028210A +:1004F000AF4202808C820004A7430284AF4202888C +:100500003C021000AF4202B83C0208008C42005C82 +:10051000244200013C010800AC22005C0A000129D1 +:100520008FBF001010C00006006028218F4401001A +:100530000E0000CD000000000A0001282405000183 +:100540008F8200088F4301045043000700002821D8 +:100550008F4401000E0000CD000000008F42010416 +:10056000AF820008000028218FBF001000A01021DA +:1005700003E0000827BD001827BDFFE8AFBF001447 +:10058000AFB00010974201083043700024022000F1 +:100590001062000B286220011440002F000010217F +:1005A00024024000106200250000000024026000C8 +:1005B00010620026000010210A0001658FBF0014A0 +:1005C00027500100920200091040001A2403000184 +:1005D0003C0208008C420020104000160000182148 +:1005E0000E00049300000000960300083C0608007B +:1005F00094C64B5E8E0400188F8200209605000C76 +:1006000000031C0000661825AC440000AC45000443 +:1006100024040001AC400008AC40000CAC400010C9 +:10062000AC400014AC4000180E0004B8AC43001CF1 +:10063000000018210A000164006010210E0003254B +:10064000000000000A000164000010210E000EE905 +:1006500000000000000010218FBF00148FB00010B8 +:1006600003E0000827BD001827BDFFE0AFB2001867 +:100670003C036010AFBF001CAFB10014AFB000105E +:100680008C6450002402FF7F3C1A800000822024EA +:100690003484380C24020037AC6450003C1208004B +:1006A00026524AD8AF42000824020C80AF420024F0 +:1006B0003C1B80083C06080024C60324024010218D +:1006C0002404001D2484FFFFAC4600000481FFFDCC +:1006D000244200043C020800244204B03C0108000B +:1006E000AC224AE03C020800244202303C010800EF +:1006F000AC224AE43C020800244201743C03080096 +:100700002463032C3C040800248403D83C0508001F +:1007100024A538F03C010800AC224B403C02080004 +:10072000244202EC3C010800AC264B243C010800AA +:10073000AC254B343C010800AC234B3C3C01080089 +:10074000AC244B443C010800AC224B483C0108005F +:10075000AC234ADC3C010800AC204AE83C0108001C +:10076000AC204AEC3C010800AC204AF03C010800F7 +:10077000AC204AF43C010800AC204AF83C010800D7 +:10078000AC204AFC3C010800AC204B003C010800B6 +:10079000AC244B043C010800AC204B083C01080091 +:1007A000AC204B0C3C010800AC204B103C01080075 +:1007B000AC204B143C010800AC204B183C01080055 +:1007C000AC264B1C3C010800AC264B203C01080029 +:1007D000AC254B303C010800AC234B380E000623FF +:1007E000000000003C028000344200708C42000097 +:1007F000AF8200143C0308008C6300208F82000449 +:10080000104300043C0280000E00045BAF83000430 +:100810003C028000344600703C0308008C6300A05A +:100820003C0208008C4200A4104300048F84001492 +:100830003C010800AC2300A4A743009E8CCA000022 +:100840003C0308008C6300BC3C0208008C4200B8EA +:100850000144202300641821000040210064202B63 +:1008600000481021004410213C010800AC2300BCCA +:100870003C010800AC2200B88F5100003222000772 +:100880001040FFDCAF8A00148CC600003C05080055 +:100890008CA500BC3C0408008C8400B800CA30233E +:1008A00000A628210000102100A6302B0082202164 +:1008B00000862021322700013C010800AC2500BC45 +:1008C0003C010800AC2400B810E0001F32220002F6 +:1008D0008F420100AF4200208F420104AF4200A8C6 +:1008E0009342010B0E0000C6305000FF2E02001E86 +:1008F00054400004001010800E0000C90A000213CA +:1009000000000000005210218C4200000040F80955 +:1009100000000000104000053C0240008F4301042D +:100920003C026020AC4300143C024000AF4201385E +:100930003C0208008C420034244200013C010800C3 +:10094000AC220034322200021040000E3222000499 +:100950008F4201400E0000C6AF4200200E000295FB +:10096000000000003C024000AF4201783C02080059 +:100970008C420038244200013C010800AC220038BF +:10098000322200041040FF983C0280008F42018018 +:100990000E0000C6AF4200208F43018024020F00EA +:1009A00014620005000000008F420188A742009CED +:1009B0000A0002483C0240009362000024030050F9 +:1009C000304200FF144300083C0240000E00027B4E +:1009D00000000000544000043C0240000E000D7571 +:1009E000000000003C024000AF4201B83C02080099 +:1009F0008C42003C244200013C010800AC22003C37 +:100A00000A0001C83C0280003C0290003442000110 +:100A100000822025AF4400208F4200200440FFFECA +:100A20000000000003E00008000000003C0280001D +:100A3000344200010082202503E00008AF4400207A +:100A400027BDFFE0AFB10014AFB0001000808821D7 +:100A5000AFBF00180E00025030B000FF9362007D5F +:100A60000220202102028025A370007D8F70007477 +:100A70003C0280000E000259020280241600000988 +:100A80008FBF00188F4201F80440FFFE24020002CD +:100A9000AF5101C0A34201C43C021000AF4201F8B3 +:100AA0008FBF00188FB100148FB0001003E0000852 +:100AB00027BD002027BDFFE8AFBF0010974201848B +:100AC0008F440188304202001040000500002821B8 +:100AD0000E000FAA000000000A00028D240500018C +:100AE0003C02FF0004800005008218243C02040040 +:100AF000506200019362003E240500018FBF001088 +:100B000000A0102103E0000827BD0018A360002208 +:100B10008F4401400A00025E2405000127BDFFE862 +:100B2000AFBF0014AFB0001093620000304400FF6C +:100B300038830020388200300003182B0002102B6D +:100B40000062182410600003240200501482008008 +:100B50008FBF001493620005304200011040007CFA +:100B60008FBF0014934201482443FFFF2C6200050D +:100B7000104000788FB00010000310803C03080084 +:100B800024634A68004310218C42000000400008A2 +:100B9000000000000E0002508F4401408F70000CD6 +:100BA0008F4201441602000224020001AF62000CD1 +:100BB0000E0002598F4401408F420144145000043A +:100BC0008FBF00148FB000100A000F2027BD00183F +:100BD0008F62000C0A0003040000000097620010FE +:100BE0008F4301443042FFFF1462001A00000000EE +:100BF00024020001A76200108F4202380443001053 +:100C00008F4201403C02003F3446F0003C0560004A +:100C10003C04FFC08CA22BBC0044182400461024C6 +:100C20000002130200031D82106200390000000060 +:100C30008F4202380440FFF7000000008F4201405D +:100C4000AF4202003C021000AF4202380A00032209 +:100C50008FBF0014976200100A0003040000000018 +:100C60000E0002508F440140976200128F430144EE +:100C70003050FFFF1603000224020001A762001299 +:100C80000E0002598F4401408F42014416020004B5 +:100C90008FBF00148FB000100A00029127BD00180A +:100CA000976200120A00030400000000976200141B +:100CB0008F4301443042FFFF14620006240200010A +:100CC0008FBF00148FB00010A76200140A00124AF0 +:100CD00027BD0018976200141440001D8FBF001438 +:100CE0000A00031C00000000976200168F430144B5 +:100CF0003042FFFF1462000B240200018FBF00147A +:100D00008FB00010A76200160A000B1227BD001852 +:100D10009742007824420004A76200100A000322D0 +:100D20008FBF001497620016240300013042FFFFBA +:100D3000144300078FBF00143C0208008C4200706F +:100D4000244200013C010800AC2200708FBF001457 +:100D50008FB0001003E0000827BD001827BDFFE892 +:100D6000AFBF0014AFB000108F50010093620000BD +:100D700093430109304400FF2402001F106200A5C4 +:100D80002862002010400018240200382862000A5F +:100D90001040000C2402000B286200081040002CB8 +:100DA00000000000046000E52862000214400028F2 +:100DB00024020006106200268FBF00140A00041FE0 +:100DC0008FB000101062005E2862000B144000DC3F +:100DD0008FBF00142402000E106200738FB0001049 +:100DE0000A00041F00000000106200C028620039E1 +:100DF0001040000A2402008024020036106200CA5B +:100E000028620037104000B424020035106200C18F +:100E10008FBF00140A00041F8FB000101062002B57 +:100E20002862008110400006240200C82402003914 +:100E3000106200B48FBF00140A00041F8FB00010AE +:100E4000106200998FBF00140A00041F8FB00010B9 +:100E50003C0208008C420020104000B98FBF0014F3 +:100E60000E000493000000008F4201008F830020D9 +:100E70009745010C97460108AC6200008F420104BF +:100E80003C04080094844B5E00052C00AC62000416 +:100E90008F4201180006340000C43025AC620008FF +:100EA0008F42011C24040001AC62000C9342010A31 +:100EB00000A22825AC650010AC600014AC600018DE +:100EC000AC66001C0A0003F58FBF00143C0208004A +:100ED0008C4200201040009A8FBF00140E00049333 +:100EE00000000000974401083C03080094634B5E37 +:100EF0009745010C000422029746010E8F820020C4 +:100F0000000426000083202500052C003C030080FF +:100F100000A6282500832025AC400000AC4000043A +:100F2000AC400008AC40000CAC450010AC400014D4 +:100F3000AC400018AC44001C0A0003F42404000177 +:100F40009742010C14400015000000009362000558 +:100F50003042001014400011000000000E0002504A +:100F6000020020219362000502002021344200107B +:100F70000E000259A36200059362000024030020C2 +:100F8000304200FF1043006D020020218FBF00148B +:100F90008FB000100A000FC027BD00180000000D20 +:100FA0000A00041E8FBF00143C0208008C4200207F +:100FB000104000638FBF00140E0004930000000077 +:100FC0008F4201048F8300209744010C3C050800E8 +:100FD00094A54B5EAC6200009762002C00042400D4 +:100FE0003042FFFF008220253C02400E00A228254F +:100FF000AC640004AC600008AC60000CAC60001095 +:10100000AC600014AC600018AC65001C0A0003F46E +:10101000240400010E00025002002021A7600008F5 +:101020000E00025902002021020020210E00025E63 +:10103000240500013C0208008C42002010400040C2 +:101040008FBF00140E000493000000009742010CB3 +:101050008F8300203C05080094A54B5E000214001D +:10106000AC700000AC620004AC6000088F64004CFF +:101070003C02401F00A22825AC64000C8F62005087 +:1010800024040001AC6200108F620054AC620014B2 +:10109000AC600018AC65001C8FBF00148FB000104E +:1010A0000A0004B827BD0018240200205082002541 +:1010B0008FB000100E000F0A020020211040002007 +:1010C0008FBF0014020020218FB0001000002821E3 +:1010D0000A00025E27BD0018020020218FBF001405 +:1010E0008FB000100A00058027BD00189745010C3D +:1010F000020020218FBF00148FB000100A0005A04D +:1011000027BD0018020020218FB000100A0005C57D +:1011100027BD00189345010D020020218FB000105B +:101120000A00060F27BD0018020020218FBF0014FF +:101130008FB000100A0005EB27BD00188FBF001408 +:101140008FB0001003E0000827BD00188F4202781E +:101150000440FFFE2402000234840080AF440240B9 +:10116000A34202443C02100003E00008AF420278B0 +:101170003C04080094844B6A3C0208008C424B7487 +:101180003083FFFF000318C000431021AF42003C32 +:101190003C0208008C424B70AF4200383C020050C9 +:1011A00034420008AF4200300000000000000000A0 +:1011B000000000008F420000304200201040FFFD80 +:1011C000000000008F4204003C010800AC224B608C +:1011D0008F4204043C010800AC224B643C02002016 +:1011E000AF420030000000003C02080094424B680F +:1011F0003C03080094634B6C3C05080094A54B6EBF +:1012000024840001004310213083FFFF3C010800CB +:10121000A4224B683C010800A4244B6A1465000317 +:10122000000000003C010800A4204B6A03E0000815 +:10123000000000003C05000A27BDFFE80345282107 +:101240003C04080024844B50AFBF00100E00051D65 +:101250002406000A3C02080094424B523C0308005A +:1012600094634B6E3042000F244200030043180485 +:1012700024027FFF0043102B10400002AF83001CAC +:101280000000000D0E00042A000000003C020800CF +:1012900094424B5A8FBF001027BD001803E000088E +:1012A000A74200A23C02000A034210219443000618 +:1012B0003C02080094424B5A3C010800A4234B56C0 +:1012C000004310238F83001C00021400000214034B +:1012D0000043102B03E000083842000127BDFFE85F +:1012E000AFBF00103C02000A0342102194420006E6 +:1012F0003C010800A4224B560E00047700000000B9 +:101300005440FFF93C02000A8FBF001003E00008C0 +:1013100027BD001827BDFFE8AFBF00100E000477FF +:101320000000000010400003000000000E000485D3 +:10133000000000003C0208008C424B608FBF001090 +:1013400027430400AF4200383C0208008C424B6443 +:1013500027BD0018AF830020AF42003C3C020005CF +:10136000AF42003003E00008AF8000188F82001801 +:101370003C0300060002114000431025AF4200303C +:101380000000000000000000000000008F4200008C +:10139000304200101040FFFD27420400AF820020C1 +:1013A00003E00008AF8000183C0608008CC64B64C0 +:1013B0008F8500188F8300203C02080094424B5A0E +:1013C00027BDFFE024A50001246300202442000182 +:1013D00024C70020AFB10014AFB00010AFBF001899 +:1013E000AF850018AF8300203C010800A4224B5AAF +:1013F000309000FF3C010800AC274B6404C100089A +:101400000000882104E00006000000003C02080003 +:101410008C424B60244200013C010800AC224B602E +:101420003C02080094424B5A3C03080094634B680A +:101430000010202B004310262C42000100441025F0 +:10144000144000048F830018240200101462000F5F +:10145000000000000E0004A9241100013C03080054 +:1014600094634B5A3C02080094424B681462000398 +:10147000000000000E00042A000000001600000317 +:10148000000000000E000493000000003C03080070 +:1014900094634B5E3C02080094424B5C2463000161 +:1014A0003064FFFF3C010800A4234B5E148200035C +:1014B000000000003C010800A4204B5E1200000662 +:1014C000000000003C02080094424B5AA74200A2D0 +:1014D0000A00050B022010210E0004770000000016 +:1014E00010400004022010210E00048500000000BE +:1014F000022010218FBF00188FB100148FB0001090 +:1015000003E0000827BD00203084FFFF30A5FFFF67 +:101510000000182110800007000000003082000148 +:101520001040000200042042006518210A00051343 +:101530000005284003E000080060102110C00006EC +:1015400024C6FFFF8CA2000024A50004AC8200008A +:101550000A00051D2484000403E0000800000000C8 +:1015600010A0000824A3FFFFAC86000000000000CC +:10157000000000002402FFFF2463FFFF1462FFFA53 +:101580002484000403E0000800000000240200019D +:10159000AF62000CA7620010A7620012A7620014DD +:1015A00003E00008A76200163082007F034210218A +:1015B0003C08000E004818213C0208008C42002024 +:1015C00027BDFFD82407FF80AFB3001CAFB20018BF +:1015D000AFB10014AFB00010AFBF00200080802179 +:1015E00030B100FF0087202430D200FF1040002FD0 +:1015F00000009821AF44002C9062000024030050AA +:10160000304200FF1443000E000000003C020800BE +:101610008C4200E00202102100471024AF42002C4F +:101620003C0208008C4200E0020210213042007FA0 +:101630000342102100481021944200D43053FFFF90 +:101640000E000493000000003C02080094424B5E30 +:101650008F8300200011340000C2302500122C00BE +:101660003C02400000C2302534A50001AC700000EF +:101670008FBF0020AC6000048FB20018AC7300086C +:101680008FB10014AC60000C8FB3001CAC6500106F +:101690008FB00010AC60001424040001AC6000188E +:1016A00027BD00280A0004B8AC66001C8FBF0020CC +:1016B0008FB3001C8FB200188FB100148FB00010D0 +:1016C00003E0000827BD00289343010F2402001007 +:1016D0001062000E2865001110A0000724020012FD +:1016E000240200082405003A1062000600003021A0 +:1016F00003E0000800000000240500351462FFFC30 +:10170000000030210A000538000000008F420074FC +:1017100024420FA003E00008AF62000C27BDFFE8E1 +:10172000AFBF00100E00025E240500018FBF001045 +:1017300024020001A762001227BD00182402000144 +:1017400003E00008A360002227BDFFE0AFB1001452 +:10175000AFB00010AFBF001830B1FFFF0E00025055 +:10176000008080219362003F24030004304200FF88 +:101770001443000C02002021122000082402000A59 +:101780000E00053100000000936200052403FFFEF7 +:1017900000431024A362000524020012A362003F4C +:1017A000020020210E000259A360008116200003D0 +:1017B000020020210E0005950000000002002021FB +:1017C000322600FF8FBF00188FB100148FB00010B9 +:1017D000240500380A00053827BD002027BDFFE09A +:1017E000AFBF001CAFB20018AFB10014AFB0001013 +:1017F0000E000250008080210E0005310000000024 +:101800009362003F24120018305100FF123200038F +:101810000200202124020012A362003F936200050F +:101820002403FFFE004310240E000259A3620005AA +:10183000020020212405002016320007000030217C +:101840008FBF001C8FB200188FB100148FB0001032 +:101850000A00025E27BD00208FBF001C8FB2001857 +:101860008FB100148FB00010240500390A0005382C +:1018700027BD002027BDFFE8AFB00010AFBF0014A8 +:101880009742010C2405003600808021144000108E +:10189000304600FF0E00025000000000240200123B +:1018A000A362003F93620005344200100E00053130 +:1018B000A36200050E00025902002021020020212F +:1018C0000E00025E240500200A000604000000004D +:1018D0000E000538000000000E000250020020211A +:1018E000936200232403FF9F020020210043102461 +:1018F0008FBF00148FB00010A36200230A000259AA +:1019000027BD001827BDFFE0AFBF0018AFB100141E +:10191000AFB0001030B100FF0E00025000808021F7 +:10192000240200120E000531A362003F0E0002598E +:101930000200202102002021022030218FBF001848 +:101940008FB100148FB00010240500350A0005384F +:1019500027BD0020A380002C03E00008A380002DF9 +:101960008F4202780440FFFE8F820034AF42024073 +:1019700024020002A34202443C02100003E00008DB +:10198000AF4202783C0360008C6254003042000891 +:101990001440FFFD000000008C625408AF82000C70 +:1019A00024020052AC605408AC645430AC6254342D +:1019B0002402000803E00008AC6254003C0260000E +:1019C0008C42540030420008104000053C03600087 +:1019D0008C625400304200081440FFFD00000000FB +:1019E0008F83000C3C02600003E00008AC43540805 +:1019F00090A3000024020005008040213063003FD6 +:101A000000004821146200050000502190A2001C33 +:101A100094A3001E304900FF306AFFFFAD00000CA8 +:101A2000AD000010AD000024950200148D05001CCF +:101A30008D0400183042FFFF0049102300021100FE +:101A4000000237C3004038210086202300A2102B5B +:101A50000082202300A72823AD05001CAD04001838 +:101A6000A5090014A5090020A50A001603E0000836 +:101A7000A50A00228F4201F80440FFFE2402000262 +:101A8000AF4401C0A34201C43C02100003E00008BF +:101A9000AF4201F83C0208008C4200B427BDFFE8C9 +:101AA000AFBF001424420001AFB000103C01080099 +:101AB000AC2200B48F4300243C02001F30AA00FF78 +:101AC0003442FF8030D800FF006280240080F8217B +:101AD00030EF00FF1158003B01405821240CFF80DB +:101AE0003C19000A3163007F000310C00003194055 +:101AF000006218213C0208008C4200DC25680001CD +:101B0000310D007F03E21021004310213043007F9C +:101B100003431821004C102400794821AF420024CF +:101B20008D220024016C1824006C7026AD22000C5C +:101B30008D220024310800FFAD22001095220014F0 +:101B4000952300208D27001C3042FFFF3063FFFFEC +:101B50008D2600180043102300021100000227C345 +:101B60000040282100C4302300E2102B00C23023A3 +:101B700000E53823AD27001CAD2600189522002073 +:101B8000A522001495220022154B000AA52200165A +:101B90008D2300248D220008254600013145008058 +:101BA0001462000430C4007F108F000238AA008045 +:101BB00000C0502151AF000131C800FF1518FFC906 +:101BC000010058218F8400343082007F03421821A5 +:101BD0003C02000A006218212402FF8000822024B7 +:101BE000AF440024A06A0079A06A00838C62005090 +:101BF0008F840034AC6200708C6500743C027FFFFF +:101C00003442FFFF00A228240E00066BAC6500746E +:101C1000AF5000248FBF00148FB0001003E0000805 +:101C200027BD001827BDFFC0AFBE0038AFB70034D6 +:101C3000AFB5002CAFB20020AFB1001CAFB00018A0 +:101C4000AFBF003CAFB60030AFB40028AFB3002444 +:101C50008F4500248F4600288F43002C3C02001F34 +:101C60003442FF800062182400C230240080A82182 +:101C7000AFA3001400A2F0240E00062FAFA60010A0 +:101C80003C0208008C4200E02410FF8003608821A1 +:101C900002A2102100501024AF4200243C02080090 +:101CA0008C4200E002A210213042007F0342182142 +:101CB0003C02000A00629021924200D293630084A9 +:101CC000305700FF306300FF24020001106200342F +:101CD000036020212402000214620036000000008C +:101CE0000E001216024028219223008392220083C4 +:101CF0003063007F3042007F000210C000031940B3 +:101D0000006218213C0208008C4200DC02A2102173 +:101D10000043382100F01024AF42002892250078BB +:101D20009224008330E2007F034218213C02000C21 +:101D300014850007006280212402FFFFA24200F107 +:101D40002402FFFFA64200F20A0007272402FFFF39 +:101D500096020020A24200F196020022A64200F262 +:101D60008E020024AE4200F492220083A24200F0D0 +:101D70008E4200C8AE4200FC8E4200C4AE4200F863 +:101D80008E220050AE4201008E4200CCAE420104D1 +:101D9000922200853042003F0A0007823442004010 +:101DA0000E00123902402821922200850A00078283 +:101DB0003042003F936200852403FFDF3042003F42 +:101DC000A36200859362008500431024A36200850E +:101DD0009363008393620078307400FF304200FF09 +:101DE00010540036240AFF803C0C000C3283007F24 +:101DF000000310C000031940006218213C020800D3 +:101E00008C4200DC268800013109007F02A21021EB +:101E10000043382130E2007F0342182100EA1024F9 +:101E2000AF420028006C80218E020024028A182410 +:101E3000006A5826AE02000C8E020024310800FF12 +:101E4000AE02001096020014960300208E07001CBC +:101E50003042FFFF3063FFFF8E060018004310235F +:101E600000021100000227C30040282100C43023D3 +:101E700000E2102B00C2302300E53823AE07001C1F +:101E8000AE06001896020020A60200149602002258 +:101E9000A602001692220079304200FF105400077B +:101EA0000000000051370001316800FF92220078E5 +:101EB000304200FF1448FFCD0100A0219222008390 +:101EC000A22200798E2200500A0007E2AE220070A2 +:101ED000A22200858E22004C2405FF80AE42010C18 +:101EE0009222008534420020A2220085924200D135 +:101EF0003C0308008C6300DC305400FF3C02080007 +:101F00008C4200E400143140001420C002A31821C8 +:101F100000C4202102A210210064382100461021B3 +:101F20000045182400E52824AF450028AF43002CC5 +:101F30003042007F924400D030E3007F03422821EA +:101F4000034318213C02000C006280213C02000E79 +:101F5000309600FF00A298211296002A000000008F +:101F60008E02000C02002021026028211040002572 +:101F7000261000280E00064A000000009262000DA4 +:101F800026830001307400FF3042007FA262000D02 +:101F90002404FF801697FFF0267300203C020800FF +:101FA0008C4200DC0000A02102A210210044102479 +:101FB000AF4200283C0208008C4200E43C030800C9 +:101FC0008C6300DC02A2102100441024AF42002CDC +:101FD0003C0208008C4200E402A318213063007F19 +:101FE00002A210213042007F034220210343182126 +:101FF0003C02000C006280213C02000E0A0007A493 +:10200000008298218E4200D8AE2200508E4200D825 +:10201000AE22007092250083924600D19223008365 +:10202000924400D12402FF8000A228243063007F64 +:10203000308400FF00A628250064182A10600002E2 +:1020400030A500FF38A50080A2250083A2250079D5 +:102050000E00063D000000009222007E02A020211A +:10206000A222007A8E2300743C027FFF3442FFFFDD +:10207000006218240E00066BAE2300748FA20010BD +:10208000AF5E00248FBF003CAF4200288FBE0038F7 +:102090008FA200148FB700348FB600308FB5002C9C +:1020A0008FB400288FB300248FB200208FB1001CA2 +:1020B0008FB0001827BD004003E00008AF42002C9D +:1020C00090A2000024420001A0A200003C030800EE +:1020D0008C6300F4304200FF1443000F0080302175 +:1020E000A0A000003C0208008C4200E48F84003471 +:1020F000008220213082007F034218213C02000C24 +:10210000006218212402FF8000822024ACC300005A +:1021100003E00008AF4400288C8200002442002025 +:1021200003E00008AC82000094C200003C080800F4 +:10213000950800CA30E7FFFF008048210102102106 +:10214000A4C2000094C200003042FFFF00E2102B46 +:1021500054400001A4C7000094A200003C03080002 +:102160008C6300CC24420001A4A2000094A20000D1 +:102170003042FFFF544300078F8600280107102BD1 +:10218000A4A000005440000101003821A4C70000B1 +:102190008F8600288CC4001CAF44003C94A2000031 +:1021A0008F43003C3042FFFF000210C00062182144 +:1021B000AF43003C8F42003C008220231880000483 +:1021C000000000008CC200180A00084324420001ED +:1021D0008CC20018AF4200383C020050344200105C +:1021E000AF420030000000000000000000000000CE +:1021F0008F420000304200201040FFFD0000000030 +:102200008F420404AD2200048F420400AD2200007E +:102210003C020020AF42003003E000080000000054 +:1022200027BDFFE0AFB20018AFB10014AFB000108F +:10223000AFBF001C94C2000000C080213C12080007 +:10224000965200C624420001A60200009603000038 +:1022500094E2000000E03021144300058FB100300B +:102260000E000818024038210A000875000000001E +:102270008C8300048C820004244200400461000727 +:10228000AC8200048C8200040440000400000000C2 +:102290008C82000024420001AC8200009602000003 +:1022A0003042FFFF50520001A600000096220000BD +:1022B00024420001A62200008F82002896230000FD +:1022C00094420016144300048FBF001C2402000136 +:1022D000A62200008FBF001C8FB200188FB100141F +:1022E0008FB0001003E0000827BD00208F89002870 +:1022F00027BDFFE0AFBF00188D220028274804004B +:1023000030E700FFAF4200388D22002CAF8800304C +:10231000AF42003C3C020005AF420030000000002C +:1023200000000000000000000000000000000000AD +:10233000000000008C82000C8C82000CAD020000BA +:102340008C820010AD0200048C820018AD020008DF +:102350008C82001CAD02000C8CA20014AD02001097 +:102360008C820020AD02001490820005304200FFF4 +:1023700000021200AD0200188CA20018AD02001C71 +:102380008CA2000CAD0200208CA20010AD02002433 +:102390008CA2001CAD0200288CA20020AD02002CF3 +:1023A000AD060030AD000034978300263402FFFFF5 +:1023B00014620002006020213404FFFF10E00011CD +:1023C000AD04003895230036952400362402000120 +:1023D0003063FFFF000318C20069182190650040B8 +:1023E000308400070082100400451025A0620040E0 +:1023F0008F820028944200563042FFFF0A0008DC1A +:10240000AD02003C952300369524003624020001DD +:102410003063FFFF000318C2006918219065004077 +:1024200030840007008210040002102700451024A9 +:10243000A0620040AD00003C000000000000000071 +:10244000000000003C02000634420040AF42003071 +:102450000000000000000000000000008F420000AB +:10246000304200101040FFFD8F860028AF880030FA +:1024700024C2005624C7003C24C4002824C50032CE +:1024800024C600360E000856AFA200108FBF0018F9 +:1024900003E0000827BD00208F8300243C060800CD +:1024A0008CC600E88F82003430633FFF0003198040 +:1024B00000461021004310212403FF803046007F96 +:1024C00000431024AF420028034618213C02000CB0 +:1024D0000062302190C2000D30A500FF00003821BD +:1024E00034420010A0C2000D8F8900288F8A00247A +:1024F00095230036000A13823048000324020001AD +:10250000A4C3000E1102000B2902000210400005B6 +:10251000240200021100000C240300010A0009201B +:102520000000182111020006000000000A00092026 +:10253000000018218CC2002C0A000920244300014D +:102540008CC20014244300018CC200180043102BDD +:1025500050400009240700012402002714A20003B0 +:10256000000000000A00092C240700019522003E0B +:1025700024420001A522003E000A138230430003DA +:102580002C62000210400009008028211460000421 +:102590000000000094C200360A00093C3046FFFFEC +:1025A0008CC600380A00093C008028210000302138 +:1025B0003C04080024844B780A00088900000000CD +:1025C000274901008D22000C9523000601202021BF +:1025D000000216023046003F3063FFFF240200274E +:1025E00000C0282128C7002810C2000EAF83002495 +:1025F00010E00008240200312402002110C200096A +:102600002402002510C200079382002D0A00095BF6 +:102610000000000010C200059382002D0A00095B33 +:10262000000000000A0008F4000000000A0006266E +:102630000000000095230006912400058D25000C64 +:102640008D2600108D2700188D28001C8D29002054 +:10265000244200013C010800A4234B7E3C010800F9 +:10266000A0244B7D3C010800AC254B843C010800B4 +:10267000AC264B883C010800AC274B903C0108007D +:10268000AC284B943C010800AC294B9803E00008AF +:10269000A382002D8F87002827BDFFC0AFB3003471 +:1026A000AFB20030AFB1002CAFB00028AFBF0038E0 +:1026B0003C0208008C4200D094E3003030B0FFFFB1 +:1026C000005010073045FFFF3063FFFF00C0982126 +:1026D000A7A200103C110800963100C614A3000602 +:1026E0003092FFFF8CE2002424420030AF42003CD5 +:1026F0000A0009948CE2002094E200323042FFFF8D +:1027000054A2000827A400188CE2002C24420030B8 +:10271000AF42003C8CE20028AF4200380A0009A218 +:102720008F84002827A5001027A60020022038212A +:102730000E000818A7A000208FA200182442003025 +:10274000AF4200388FA2001CAF42003C8F840028AB +:102750003C020005AF42003094820034274304005D +:102760003042FFFF0202102B14400007AF830030FD +:1027700094820054948300340202102100431023F9 +:102780000A0009B63043FFFF94830054948200345A +:102790000223182100501023006218233063FFFF2A +:1027A000948200163042FFFF144300030000000033 +:1027B0000A0009C424030001948200163042FFFF7E +:1027C0000043102B104000058F82003094820016C9 +:1027D000006210233043FFFF8F820030AC530000B3 +:1027E000AC400004AC520008AC43000C3C020006B4 +:1027F00034420010AF420030000000000000000032 +:10280000000000008F420000304200101040FFFD29 +:10281000001018C2006418219065004032040007BF +:10282000240200018FBF00388FB300348FB2003014 +:102830008FB1002C8FB000280082100400451025B5 +:1028400027BD004003E00008A062004027BDFFA8AC +:10285000AFB60050AFB5004CAFB40048AFB30044C2 +:10286000AFB1003CAFBF0054AFB20040AFB00038D2 +:102870008C9000003C0208008C4200E88F860034F7 +:10288000960300022413FF8000C2302130633FFF13 +:102890000003198000C3382100F3102490B2000017 +:1028A000AF42002C9203000230E2007F034230214D +:1028B0003C02000E00C28821306300C024020040A8 +:1028C0000080A82100A0B021146200260000A021F1 +:1028D0008E3400388E2200181440000224020001B9 +:1028E000AE2200189202000D304200201440001564 +:1028F0008F8200343C0308008C6300DC001238C077 +:10290000001231400043102100C730210046382119 +:1029100030E300073C02008030E6007800C230253A +:102920000343182100F31024AF4208002463090078 +:10293000AF4608108E2200188C6300080043102157 +:10294000AE2200188E22002C8E2300182442000193 +:102950000062182B1060003D000000000A000A7899 +:1029600000000000920300022402FFC00043102474 +:10297000304200FF1440000524020001AE2200187E +:10298000962200360A000A613054FFFF8E2200149E +:1029900024420001AE22001892020000000216003C +:1029A0000002160304410029000000009602000204 +:1029B00027A4001000802821A7A20016960200027A +:1029C00024070001000030213042FFFFAF820024C5 +:1029D0000E000889AFA0001C960300023C0408000A +:1029E0008C8400E88F82003430633FFF000319803D +:1029F00000441021004310213043007F3C05000CAF +:102A00000053102403431821AF4200280065182109 +:102A10009062000D001221403042007FA062000D44 +:102A20003C0308008C6300E48F82003400431021D3 +:102A30000044382130E2007F03421021004510217C +:102A400000F31824AF430028AEA200009222000D2C +:102A5000304200101040001302A020218F83002874 +:102A60008EA40000028030219462003E2442FFFFC9 +:102A7000A462003E948400029625000E3084FFFF7D +:102A80000E00097330A5FFFF8F82002894430034A5 +:102A90009622000E1443000302A02021240200010C +:102AA000A382002C02C028210E0007FE00000000B7 +:102AB0008FBF00548FB600508FB5004C8FB40048C4 +:102AC0008FB300448FB200408FB1003C8FB000380C +:102AD00003E0000827BD00588F82002827BDFFD0E3 +:102AE000AFB40028AFB20020AFBF002CAFB30024BA +:102AF000AFB1001CAFB00018904400D0904300D19B +:102B00000000A021309200FFA3A30010306300FF5B +:102B10008C5100D88C5300DC1072002B2402000171 +:102B20003C0308008C6300E493A400108F820034FF +:102B30002406FF800004214000431021004410219E +:102B40003043007F00461024AF4200280343182181 +:102B50003C02000C006218218C62000427A40014BF +:102B600027A50010022280210270102304400015C6 +:102B7000AFA300149062000D00C21024304200FF89 +:102B800014400007020088219062000D344200408A +:102B90000E0007FEA062000D0A000ABD93A20010FD +:102BA0000E0009E1241400018F830028AC7000D8C6 +:102BB00093A20010A06200D193A200101452FFD87B +:102BC0000000000024020001168200048FBF002CC8 +:102BD0000E000626000000008FBF002C8FB40028D6 +:102BE0008FB300248FB200208FB1001C8FB000186B +:102BF00003E0000827BD003027BDFFD8AFB3001C9D +:102C0000AFB20018AFB10014AFB00010AFBF0020DA +:102C10000080982100E0802130B1FFFF0E00049376 +:102C200030D200FF000000000000000000000000A3 +:102C30008F820020AC510000AC520004AC5300085D +:102C4000AC40000CAC400010AC400014AC4000188C +:102C50003C03080094634B5E02038025AC50001CCB +:102C6000000000000000000000000000240400013B +:102C70008FBF00208FB3001C8FB200188FB10014DB +:102C80008FB000100A0004B827BD002827BDFFE858 +:102C9000AFB00010AFBF001430A5FFFF30C600FF7B +:102CA0000080802124020C80AF420024000000003C +:102CB0000000000000000000000000000000000014 +:102CC0000E000ACC000000003C040800248400E050 +:102CD0008C8200002403FF808FBF001402021021A9 +:102CE00000431024AF4200248C8200003C03000A01 +:102CF000020280213210007F035010218FB000109B +:102D00000043102127BD001803E00008AF8200280F +:102D100027BDFFE8AFBF00108F4401403C0308000F +:102D20008C6300E02402FF80AF840034008318210C +:102D300000621024AF4200243C02000803424021FC +:102D4000950500023063007F3C02000A034318210E +:102D50000062182130A5FFFF3402FFFF0000302180 +:102D60003C07602010A20006AF8300282402FFFF6A +:102D7000A5020002946500D40E000AF130A5FFFF01 +:102D80008FBF001024020C8027BD001803E000084C +:102D9000AF4200243C020008034240219502000299 +:102DA0003C0A0800954A00C63046FFFF14C00007E1 +:102DB0003402FFFF8F8200288F8400343C0760209C +:102DC000944500D40A000B5A30A5FFFF10C200241E +:102DD0008F87002894E2005494E400163045FFFFEA +:102DE00000A6102300A6182B3089FFFF10600004F6 +:102DF0003044FFFF00C51023012210233044FFFFA1 +:102E0000008A102B1040000C012A1023240200011C +:102E1000A50200162402FFFFA502000294E500D4DB +:102E20008F8400340000302130A5FFFF3C07602074 +:102E30000A000AF1000000000044102A10400008B7 +:102E4000000000009502001630420001104000040E +:102E5000000000009742007E24420014A5020016E4 +:102E600003E00008000000008F84002827BDFFE079 +:102E7000AFBF0018948200349483003E1060001AA3 +:102E80003048FFFF9383002C2402000114620027C6 +:102E90008FBF00188F820028000818C23108000771 +:102EA000006218212447003A244900542444002099 +:102EB000244500302446003490620040304200FF38 +:102EC0000102100730420001104000168FBF0018A9 +:102ED0000E000856AFA900108F82002894420034DB +:102EE0000A000B733048FFFF94830036948200344D +:102EF0001043000E8FBF001894820036A482003465 +:102F000094820056A48200548C82002CAC8200244F +:102F100094820032A48200309482003CA482003A61 +:102F20008FBF00180A000B3327BD002003E0000804 +:102F300027BD002027BDFFE8AFBF00108F4A01006A +:102F40003C0508008CA500E03C02080090424B8440 +:102F50003C0C0800958C4B7E01452821304B003FEE +:102F600030A2007F03424021396900323C02000A4E +:102F70003963003F2C630001010240212D2900012B +:102F80002402FF8000A2282401234825AF8A0034B0 +:102F900000801821AF450024000030210080282146 +:102FA00024070001AF8800283C04080024844B78E3 +:102FB000AF8C002415200007A380002D24020020E0 +:102FC0005562000F006020213402FFFF5582000C83 +:102FD000006020212402002015620005000000008E +:102FE0008C6300142402FFFF106200070000000041 +:102FF0000E000889000000000A000BD0000000004D +:103000000E0008F4016028210E000B68000000008B +:103010008FBF001024020C8027BD001803E00008B9 +:10302000AF4200243C0208008C4200E027BDFFA014 +:10303000AFB1003C008210212411FF80AFBE0058C8 +:10304000AFB70054AFB20040AFB00038AFBF005CC4 +:10305000AFB60050AFB5004CAFB40048AFB30044BA +:10306000005110248F4800248F4900288F470028E2 +:10307000AF4200243C0208008C4200E00080902116 +:1030800024060006008210213042007F03421821EE +:103090003C02000A006280213C02001F3442FF8093 +:1030A00000E2382427A40010260500F00122F024B5 +:1030B0000102B8240E00051DAFA700308FA2001832 +:1030C000AE0200C48FA2001CAE0200C88FA2002472 +:1030D000AE0200CC93A40010920300D12402FF8022 +:1030E0000082102400431025304900FF3083007F08 +:1030F0003122007F0062102A10400004000310C03B +:1031000001311026304900FF000310C000031940B0 +:10311000006218213C0208008C4200DC920400D2BC +:10312000024210210043102100511024AF42002818 +:1031300093A300103063007F000310C00003194008 +:10314000006218213C0208008C4200DC024210217F +:10315000004310213042007F034218213C02000C42 +:10316000006240218FA300142402FFFF1062003090 +:10317000309500FF93A2001195030014304400FF26 +:103180003063FFFF0064182B1060000D000000008A +:10319000950400148D07001C8D0600183084FFFF75 +:1031A00000442023000421000000102100E4382105 +:1031B00000E4202B00C230210A000C4A00C4302158 +:1031C000950400148D07001C8D0600183084FFFF45 +:1031D000008220230004210000001021008018211B +:1031E00000C2302300E4202B00C4302300E3382346 +:1031F000AD07001CAD06001893A20011A502001433 +:1032000097A20012A50200168FA20014AD020010B2 +:103210008FA20014AD02000C93A20011A5020020A1 +:1032200097A20012A50200228FA20014AD02002472 +:103230002406FF80024610243256007FAF4200244D +:10324000035618213C02000A006280218E02004CC5 +:103250008FA200203124007F000428C0AE0200505D +:103260008FA200200004214000852821AE020070BA +:1032700093A2001001208821A202008393A20010D3 +:10328000A2020079920200853042003FA20200852E +:103290003C0208008C4200DC024210210045102153 +:1032A00000461024AF42002C3C0208008C4200E48F +:1032B0003C0308008C6300DC024210210044102112 +:1032C00000461024AF4200283C0208008C4200E473 +:1032D00002431821006518210242102100441021E8 +:1032E0003042007F3063007F93A50010034220210D +:1032F000034318213C02000E006240213C02000CF6 +:1033000010B1008C008248213233007F1660001912 +:103310002404FF803C0208008C4200DC02421021A1 +:1033200000441024AF42002C3C0208008C4200E410 +:103330003C0308008C6300DC02421021004410248E +:10334000AF4200283C0208008C4200E402431821EE +:103350003063007F024210213042007F034220216F +:10336000034318213C02000E006240213C02000C85 +:10337000008248219124000D2414FF8000001021B8 +:1033800000942025A124000D950400029505001449 +:103390008D07001C3084FFFF30A5FFFF8D0600184D +:1033A000008520230004210000E4382100C23021E0 +:1033B00000E4202B00C43021AD07001CAD0600182E +:1033C00095020002A5020014A50000168D02000857 +:1033D000AD0200108D020008AD02000C9502000243 +:1033E000A5020020A50000228D020008AD020024E5 +:1033F0009122000D30420040104000422622000180 +:103400003C0208008C4200E0A3B300283C10000AF4 +:103410000242102100541024AF4200243C02080054 +:103420008C4200E0A380002C27A4002C0242102133 +:103430003042007F03421821007018218C6200D8AE +:103440008D26000427A50028AFA9002C00461021D6 +:10345000AC6200D80E0009E1AF83002893A30028D6 +:103460008F8200280E000626A04300D10E000B68B4 +:103470000000000002541024AF4200243C02080067 +:103480008C4200DC00132940001320C000A420213E +:10349000024210210044102100541024AF42002C9D +:1034A0003C0208008C4200E43C0308008C6300DC12 +:1034B00003563021024210210045102100541024EF +:1034C000AF4200283C0208008C4200E4024318216D +:1034D0000064182102421021004510213042007F73 +:1034E0003063007F03422021034318213C02000E79 +:1034F000006240213C02000C00D080210082482163 +:10350000262200013043007F14750005304400FF7F +:103510002403FF800223102400431026304400FFC0 +:1035200093A2001000808821250800281444FF760B +:103530002529002093A400108FA300142402FFFF6C +:103540001062000A308900FF2482000124830001F8 +:103550003042007F14550005306900FF2403FF80CE +:103560000083102400431026304900FF92020078A7 +:10357000305300FF11330032012088213C02080043 +:103580008C4200DC3225007F000520C00005294068 +:1035900000A42021024210212406FF8000441021B3 +:1035A00000461024AF42002C3C0308008C6300DC72 +:1035B0003C0208008C4200E4024318210242102120 +:1035C0000045102100641821004610243063007F5C +:1035D000AF420028034318213C02000E0062402144 +:1035E0003C0208008C4200E48D06000C0100202102 +:1035F00002421021004510213042007F0342182171 +:103600003C02000C0062482110C0000D012028215E +:103610000E00064A000000002402FF800222182447 +:1036200026240001006228263082007F1455000203 +:10363000308300FF30A300FF1473FFD000608821A7 +:103640008E0300743C027FFF3442FFFF00621824A7 +:10365000AE0300740E00066B02402021AF57002419 +:103660008FA20030AF5E00288FBF005C8FBE005875 +:103670008FB700548FB600508FB5004C8FB4004800 +:103680008FB300448FB200408FB1003C8FB0003840 +:1036900027BD006003E00008AF42002C27BDFFD823 +:1036A000AFB1001CAFBF0020AFB000182751018898 +:1036B000922200032408FF803C03000A3047007F69 +:1036C000A3A700108F4601803C0208008C4200E056 +:1036D000AF86003400C2282100A81024AF42002485 +:1036E0009224000030A2007F0342102100431021E9 +:1036F000AF8200283084007F24020002148200255B +:10370000000719403C0208008C4200E400C210216E +:103710000043282130A2007F0342182100A8102472 +:10372000AF4200283C02000C006218219062000D9C +:10373000AFA3001400481025A062000D8FA3001451 +:103740009062000D304200405040006A8FBF002060 +:103750008F860028A380002C27A400148CC200D8D8 +:103760008C63000427A50010004310210E0009E11E +:10377000ACC200D893A300108F8200280E0006264A +:10378000A04300D10E000B68000000000A000E0BE1 +:103790008FBF00200E00062F00C020210E00063D26 +:1037A000000000003C020008034280219223000137 +:1037B0009202007B1443004F8FBF00209222000032 +:1037C0003044007F24020004108200172882000584 +:1037D00010400006240200052402000310820007A6 +:1037E0008FB1001C0A000E0C0000000010820012B5 +:1037F0008FBF00200A000E0C8FB1001C92050083C1 +:10380000920600788E0700748F84003430A500FF84 +:1038100000073E0230C600FF0E00067330E7007F4F +:103820000A000E0B8FBF00200E000BD78F840034D0 +:103830000A000E0B8FBF002024020C80AF42002430 +:103840009202003E30420040104000200000000084 +:103850009202003E00021600000216030441000618 +:10386000000000008F8400340E0005A024050093A2 +:103870000A000E0B8FBF00209202003F24030018A5 +:10388000304200FF1443000C8F84003424050039BB +:103890000E000538000030210E0002508F840034E5 +:1038A00024020012A202003F0E0002598F8400344D +:1038B0000A000E0B8FBF0020240500360E000538CD +:1038C000000030210A000E0B8FBF00200E000250B6 +:1038D0008F8400349202000534420020A2020005C9 +:1038E0000E0002598F8400340E000FC08F84003404 +:1038F0008FBF00208FB1001C8FB0001824020C80F5 +:1039000027BD002803E00008AF42002427BDFFE8E0 +:10391000AFB00010AFBF001427430100946200084D +:103920000002140000021403044100020000802180 +:103930002410000194620008304200801040001AF8 +:10394000020010219462000830422000104000164E +:10395000020010218C6300183C021C2D344219ED2A +:10396000240600061062000F3C0760213C0208009C +:103970008C4200D4104000078F8200288F830028DB +:10398000906200623042000F34420040A062006248 +:103990008F8200288F840034944500D40E000AF1F1 +:1039A00030A5FFFF020010218FBF00148FB0001060 +:1039B00003E0000827BD001827BDFFE0AFB10014E9 +:1039C000AFB00010A380002CAFBF00188F450100DE +:1039D0003C0308008C6300E02402FF80AF850034C4 +:1039E00000A318213064007F0344202100621824C2 +:1039F0003C02000A00822021AF430024275001002E +:103A00008E0200148C8300DCAF8400280043102356 +:103A100018400004000088218E0200140E000A8461 +:103A2000AC8200DC9202000B24030002304200FF53 +:103A30001443002F0000000096020008304300FFEE +:103A40002402008214620005240200840E00093E54 +:103A5000000000000A000E97000000001462000938 +:103A6000240200818F8200288F8400343C0760216B +:103A7000944500D49206000530A5FFFF0A000E868B +:103A800030C600FF14620027000000009202000A06 +:103A9000304300FF306200201040000430620040DC +:103AA0008F8400340A000E82240600401040000477 +:103AB000000316008F8400340A000E8224060041A1 +:103AC00000021603044100178F84003424060042CC +:103AD0008F8200283C076019944500D430A5FFFF71 +:103AE0000E000AF1000000000A000E97000000001E +:103AF0009202000B24030016304200FF1043000620 +:103B0000000000009202000B24030017304200FF67 +:103B100014430004000000000E000E11000000001D +:103B2000004088210E000B68000000009202000A8D +:103B3000304200081040000624020C808F850028C7 +:103B40003C0400080E0011EE0344202124020C80E6 +:103B5000AF4200248FBF0018022010218FB0001048 +:103B60008FB1001403E0000827BD002027BDFFE847 +:103B7000AFBF0014AFB000108F5000243C0308000A +:103B80008C6300E08F4501002402FF8000A3182110 +:103B90003064007F03442021006218243C02000AA4 +:103BA00000822021AF850034AF4300249082006260 +:103BB000AF8400283042000F34420050A0820062DF +:103BC0003C02001F3442FF800E00062602028024C1 +:103BD000AF5000248FBF00148FB0001003E0000826 +:103BE00027BD00183C0208008C4200201040001D38 +:103BF0002745010090A300093C0200080342202150 +:103C000024020018546200033C0200080A000ED887 +:103C10002402000803422021240200161462000539 +:103C20002402001724020012A082003F0A000EE2C4 +:103C300094A700085462000694A700089362000548 +:103C40002403FFFE00431024A362000594A700088C +:103C500090A6001B8CA4000094A500060A000ACCC4 +:103C600000073C0003E000080000000027440100BA +:103C700094820008304500FF38A3008238A20084F7 +:103C80002C6300012C420001006218251060000620 +:103C9000240200839382002D1040000D00000000DC +:103CA0000A000B9B0000000014A2000524A2FF8064 +:103CB0008F4301043C02602003E00008AC43001481 +:103CC000304200FF2C420002104000032402002278 +:103CD0000A000E3C0000000014A2000300000000D7 +:103CE0000A000EA9000000000A000EC70000000034 +:103CF0009363007E9362007A144300090000202140 +:103D00009362000024030050304200FF144300047B +:103D1000240400019362007E24420001A362007E1D +:103D200003E00008008010218F4201F80440FFFEEC +:103D300024020002AF4401C0A34201C43C021000AF +:103D400003E00008AF4201F827BDFFE8AFBF001055 +:103D50009362003F2403000A304200FF14430046F0 +:103D6000000000008F6300548F62004C1062007DE1 +:103D7000036030219362000024030050304200FFB2 +:103D80001443002F000000008F4401403C02080053 +:103D90008C4200E02403FF800082102100431024A5 +:103DA000AF4200243C0208008C4200E08F650054C2 +:103DB0003C03000A008220213084007F034410214C +:103DC00000431021AC4501089762003C8F63004C12 +:103DD0003042FFFF0002104000621821AF63005C18 +:103DE0008F6300548F64004C9762003C006418237A +:103DF0003042FFFF00031843000210400043102A26 +:103E000010400006000000008F6200548F63004CD9 +:103E1000004310230A000F58000210439762003C31 +:103E20003042FFFF00021040ACC2006424020001D7 +:103E3000A0C0007CA0C2008424020C80AF420024F9 +:103E40000E000F0A8F440140104000478FBF001042 +:103E50008F4301408F4201F80440FFFE240200021C +:103E6000AF4301C0A34201C43C021000AF4201F8BD +:103E70000A000FA88FBF00109362003F24030010B8 +:103E8000304200FF14430004000000008F44014052 +:103E90000A000F94000028219362003F24030016BB +:103EA000304200FF1443000424020014A362003FC8 +:103EB0000A000FA2000000008F62004C8F630050C8 +:103EC00000431023044100288FBF0010936200813B +:103ED00024420001A3620081936200812C4200040D +:103EE00014400010000000009362003F240300040F +:103EF000304200FF14430006000000008F440140E0 +:103F00008FBF0010240500930A0005A027BD0018EC +:103F10008F440140240500938FBF00100A00060F54 +:103F200027BD00188F4401400E0002500000000021 +:103F30008F6200542442FFFFAF6200548F62005032 +:103F40002442FFFFAF6200500E0002598F4401402F +:103F50008F4401408FBF0010240500040A00025E58 +:103F600027BD00188FBF001003E0000827BD001810 +:103F70008F4201889363007E00021402304400FFE8 +:103F8000306300FF1464000D0000000093620080A5 +:103F9000304200FF1044000900000000A3640080CC +:103FA0009362000024030050304200FF14430004D9 +:103FB000000000000A0006D78F440180A36400803F +:103FC00003E000080000000027BDFFE8AFB00010CC +:103FD000AFBF00149362000524030030304200306C +:103FE00014430089008080213C0208008C4200209C +:103FF00010400080020020210E0004930000000009 +:104000008F850020ACB000009362003E9363003FB8 +:10401000304200FF00021200306300FF0043102511 +:10402000ACA2000493620082000216000002160394 +:1040300004410005000000003C0308008C630048B8 +:104040000A000FE6000000009362003E304200408C +:10405000144000030000182193620081304300FFE8 +:104060009362008200031E00304200FF0002140031 +:1040700000621825ACA300088F620040ACA2000CBF +:104080008F620048ACA200108F62004CACA20014FA +:104090008F6200508F63004C0043102304410003E3 +:1040A000000000000A000FFA8F62004C8F6200507F +:1040B000ACA200183C02080094424B5E3C03C00BCB +:1040C00000002021004310250E0004B8ACA2001C03 +:1040D0008F6200548F840020AC8200008F620058F1 +:1040E000AC8200048F62005CAC8200088F620060CA +:1040F0008F43007400431021AC82000C8F62006477 +:10410000AC820010976300689762006A00031C008D +:104110003042FFFF00621825AC83001493620082D6 +:1041200024030080304200FF14430003000000001D +:104130000A00102EAC8000188F63000C24020001CE +:104140001062000E2402FFFF9362003E30420040E6 +:104150001440000A2402FFFF8F63000C8F4200749A +:10416000006218233C020800006210241440000280 +:10417000000028210060282100051043AC820018AF +:104180003C02080094424B5E3C03C00C000020211E +:10419000004310258F8300200E0004B8AC62001C81 +:1041A0008F6200188F8300203C05080094A54B5EA9 +:1041B00024040001AC620000AC6000048F66006C57 +:1041C0003C02400D00A22825AC6600088F6200DC8E +:1041D000AC62000CAC600010936200050002160097 +:1041E000AC620014AC6000180E0004B8AC65001C92 +:1041F000020020218FBF00148FB00010A3600005C3 +:104200000A00042127BD00188FBF00148FB00010D2 +:1042100003E0000827BD00189742007C30C600FF6D +:10422000A08600843047FFFF2402000514C2000B63 +:1042300024E3465090A201122C42000710400007D0 +:1042400024E30A0090A30112240200140062100467 +:1042500000E210210A0010663047FFFF3067FFFFC1 +:1042600003E00008A4870014AC87004C8CA201086E +:104270000080402100A0482100E2102330C600FF4A +:104280001840000393AA001324E2FFFCACA201082B +:1042900030C2000110400008000000008D020050F4 +:1042A00000E2102304410013240600058D0200548F +:1042B00010E20010000000008D02005414E2001A09 +:1042C000000000003C0208008C4200D83042002070 +:1042D0001040000A2402000191030078910200833B +:1042E000144300062402000101002021012028219E +:1042F000240600040A00105400000000A1000084FD +:1043000011400009A50200148F4301008F4201F8FB +:104310000440FFFE24020002AF4301C0A34201C4D7 +:104320003C021000AF4201F803E00008000000006A +:1043300027BDFFE88FA90028AFBF001000804021F3 +:1043400000E918231860007330C600FFA080007CCD +:10435000A08000818CA2010800E210230440004DDF +:10436000000000008C8200509483003C8C84006428 +:10437000004748233063FFFF012318210083202BCF +:1043800010800004000000008D0200640A0010B7D5 +:1043900000E210219502003C3042FFFF0122102173 +:1043A00000E21021AD02005C9502003C8D03005C30 +:1043B0003042FFFF0002104000E210210043102BAA +:1043C00010400003000000000A0010C68D02005CCF +:1043D0009502003C3042FFFF0002104000E2102135 +:1043E000AD02005CA1000084AD07004C8CA2010866 +:1043F00000E210231840000224E2FFFCACA20108F6 +:1044000030C200011040000A000000008D02005080 +:1044100000E2102304410004010020218D02005419 +:1044200014E20003000000000A0010E82406000562 +:104430008D02005414E200478FBF00103C020800B8 +:104440008C4200D8304200201040000A24020001B3 +:1044500091030078910200831443000624020001B6 +:1044600001002021240600048FBF00100A00105410 +:1044700027BD0018A1000084A50200148F4301008D +:104480008F4201F80440FFFE240200020A00110DD1 +:10449000000000008C82005C004910230043102BB8 +:1044A00054400001AC87005C9502003C3042FFFFA5 +:1044B0000062102B14400007240200029502003C09 +:1044C0008D03005C3042FFFF00621821AD03005CE9 +:1044D00024020002AD07004CA10200840E000F0A66 +:1044E0008F4401001040001B8FBF00108F4301005C +:1044F0008F4201F80440FFFE24020002AF4301C0D6 +:10450000A34201C43C021000AF4201F80A0011238B +:104510008FBF001030C200101040000E8FBF00107F +:104520008C83005C9482003C006918233042FFFFBA +:10453000006218213C023FFF3444FFFF0083102B30 +:10454000544000010080182101231021AD02005CBD +:104550008FBF001003E0000827BD001827BDFFE84B +:104560008FAA0028AFBF00100080402100EA482336 +:104570001920002130C600FF8C83005C8C8200640F +:10458000006A18230043102B5040001000691821C6 +:1045900094A2011001221021A4A2011094A20110E2 +:1045A0003042FFFF0043102B1440000A3C023FFF43 +:1045B00094A2011000431023A4A201109482003C95 +:1045C0003042FFFF0A00114200621821A4A001102E +:1045D0003C023FFF3444FFFF0083102B5440000196 +:1045E0000080182100671021AD02005CA100007C52 +:1045F0000A00118AA100008130C200101040003C66 +:10460000000000008C820050004A1023184000383F +:10461000000000009082007C24420001A082007C07 +:104620009082007C3C0308008C630024304200FF31 +:104630000043102B1440005C8FBF00108CA20108B7 +:1046400000E2102318400058000000008C83005442 +:104650009482003C006A18233042FFFF0003184395 +:10466000000210400043102A104000050000000026 +:104670008C820054004A10230A001171000210437A +:104680009482003C3042FFFF00021040AD02006403 +:104690009502003C8D0400649503003C3042FFFF0E +:1046A00000021040008220213063FFFF00831821A8 +:1046B00001431021AD02005C8D020054ACA2010840 +:1046C00024020002A10200840E000F0A8F440100A0 +:1046D000104000358FBF00108F4301008F4201F85A +:1046E0000440FFFE240200020A0011B30000000093 +:1046F000AD07004C8CA2010800E210231840000214 +:1047000024E2FFFCACA2010830C200011040000A04 +:10471000000000008D02005000E21023044100045C +:10472000010020218D02005414E20003000000006B +:104730000A0011AA240600058D02005414E2001A92 +:104740008FBF00103C0208008C4200D8304200208D +:104750001040000A240200019103007891020083B6 +:104760001443000624020001010020212406000455 +:104770008FBF00100A00105427BD0018A10000844C +:10478000A50200148F4301008F4201F80440FFFE90 +:1047900024020002AF4301C0A34201C43C02100046 +:1047A000AF4201F88FBF001003E0000827BD0018DA +:1047B0008FAA00108C8200500080402130C600FF7C +:1047C000004A102300A048211840000700E01821EB +:1047D00024020001A0800084A0A00112A482001481 +:1047E0000A001125AFAA0010A0800081AD07004C7F +:1047F0008CA2010800E210231840000224E2FFFC12 +:10480000ACA2010830C20001104000080000000006 +:104810008D0200500062102304410013240600059D +:104820008D02005410620010000000008D02005440 +:1048300014620011000000003C0208008C4200D805 +:10484000304200201040000A240200019103007849 +:10485000910200831443000624020001010020217C +:1048600001202821240600040A0010540000000042 +:10487000A1000084A502001403E00008000000006D +:1048800027BDFFE0AFBF0018274201009046000A95 +:104890008C4800148C8B004C9082008430C900FF3F +:1048A00001681823304A00FF1C60001A2D460006DC +:1048B000240200010142100410C00016304300031E +:1048C000012030210100382114600007304C000C19 +:1048D00015800009304200301440000B8FBF0018D3 +:1048E0000A001214000000000E001125AFAB0010EA +:1048F0000A0012148FBF00180E00109AAFAB001000 +:104900000A0012148FBF0018AFAB00100E0011BACE +:10491000AFAA00148FBF001803E0000827BD0020D5 +:1049200024020003A08200848C82005403E000086B +:10493000ACA201083C0200080342182190620081E9 +:10494000240600433C07601924420001A062008154 +:10495000906300813C0208008C4200C0306300FF7D +:10496000146200102403FF803C0208008C4200E027 +:104970000082102100431024AF4200243C020800B2 +:104980008C4200E03C03000A008210213042007F8C +:104990000342102100431021944500D40A000AF17B +:1049A00030A5FFFF03E000080000000027BDFFE086 +:1049B000AFBF0018AFB10014AFB000108F4201803C +:1049C0000080802100A088210E00121B00402021C1 +:1049D000A20000848E0200548FBF00188FB0001018 +:1049E000AE2201088FB1001403E0000827BD0020AB +:1049F00027BDFFE03C020008AFB00010AFBF0018B9 +:104A0000AFB10014034280218F5101409203008412 +:104A10008E0400508E02004C14820040306600FF6D +:104A20003C0208008C4200E02403FF800222102197 +:104A300000431024AF4200243C0208008C4200E0F6 +:104A40009744007C92050081022210213042007FB1 +:104A5000034218213C02000A0062182114A0000B36 +:104A60003084FFFF2402000554C20014248205DCB8 +:104A70009062011224420001A062011224020C8003 +:104A8000AF4200240A00127324020005A060011244 +:104A90002402000514C20009248205DC9202008170 +:104AA0002C4200075040000524820A009203008136 +:104AB0002402001400621004008210213044FFFF21 +:104AC000A60400140E00121B022020219602003CB6 +:104AD0008E03004C022020213042FFFF00021040D4 +:104AE000006218210E000250AE03005C9202007DAD +:104AF00002202021344200400E000259A202007D13 +:104B00008F4201F80440FFFE24020002AF5101C0B1 +:104B1000A34201C43C021000AF4201F88FBF00184D +:104B20008FB100148FB0001003E0000827BD0020F3 +:104B300008000ACC08000B1408000B9808000BE4CE +:104B400008000C200A0000280000000000000000FF +:104B50000000000D6370362E322E3300000000007E +:104B60000602030400000000000000000000000036 +:104B70000000000000000000000000000000000035 +:104B80000000000000000000000000000000002005 +:104B90000000000000000000000000000000000015 +:104BA0000000000000000000000000000000000005 +:104BB00000000000000000000000000000000001F4 +:104BC0000000002B000000000000000400030D4066 +:104BD00000000000000000000000000000000000D5 +:104BE00000000000000000001000000300000000B2 +:104BF0000000000D0000000D3C020800244258A4F3 +:104C00003C03080024635F70AC4000000043202B8D +:104C10001480FFFD244200043C1D080037BD7FFCCA +:104C200003A0F0213C100800261000A03C1C080046 +:104C3000279C58A40E0001AC000000000000000DED +:104C400027BDFFE83C096018AFBF00108D2C500055 +:104C5000240DFF7F24080031018D5824356A380C5B +:104C600024070C003C1A8000AD2A50003C04800A46 +:104C7000AF4800083C1B8008AF4700240E00091510 +:104C8000AF8400100E0008D8000000000E000825B8 +:104C9000000000000E001252000000003C046016EC +:104CA0008C8500003C06FFFF3C02535300A61824ED +:104CB0001062004734867C0094C201F2A780002C69 +:104CC00010400003A78000CC38581E1EA798002C67 +:104CD00094C201F810400004978300CC38591E1E7E +:104CE000A79900CC978300CC2C7F006753E000018C +:104CF000240300669784002C2C82040114400002D7 +:104D000000602821240404003C0760008CE904387A +:104D10002403103C3128FFFF1103001F30B9FFFFAF +:104D200057200010A38000CE24020050A38200CEA2 +:104D3000939F00CE53E0000FA78500CCA78000CC46 +:104D4000978500CC8FBF0010A780002CA78000346F +:104D5000A78000E63C010800AC25008003E00008C5 +:104D600027BD0018939F00CE57E0FFF5A78000CC29 +:104D7000A78500CC978500CC8FBF0010A784002C9E +:104D8000A7800034A78000E63C010800AC25008025 +:104D900003E0000827BD0018A38000CE8CCB003CA8 +:104DA000316A00011140000E0000000030A7FFFF33 +:104DB00010E0FFDE240200508CCC00C831860001D8 +:104DC00014C0FFDC939F00CE0A00007A2402005139 +:104DD0008C8F00043C0E60000A00005D01EE302163 +:104DE0008CEF0808240D5708000F740211CD000441 +:104DF00030B8FFFF240500660A00007B240404008D +:104E00001700FFCC939F00CE0A00007A24020050C6 +:104E10008F8600103089FFFF000939408CC30010D5 +:104E20003C08005000E82025AF4300388CC5001432 +:104E300027420400AF82001CAF45003CAF44003065 +:104E40000000000000000000000000000000000062 +:104E50000000000000000000000000000000000052 +:104E60008F4B0000316A00201140FFFD0000000060 +:104E700003E00008000000008F840010948A001AEC +:104E80008C8700243149FFFF000940C000E8302131 +:104E9000AF46003C8C8500248F43003C00A31023C8 +:104EA00018400029000000008C8B002025620001C2 +:104EB0003C0D005035AC0008AF420038AF4C00301C +:104EC00000000000000000000000000000000000E2 +:104ED00000000000000000000000000000000000D2 +:104EE0008F4F000031EE002011C0FFFD00000000D8 +:104EF0008F4A04003C080020AC8A00108F4904044B +:104F0000AC890014AF4800300000000094860018FF +:104F10009487001C00C71821A48300189485001AE8 +:104F200024A20001A482001A9498001A9499001EE9 +:104F3000133800030000000003E000080000000038 +:104F400003E00008A480001A8C8200200A0000DC24 +:104F50003C0D00500A0000CD000000003C0308009A +:104F60008C6300208F82001827BDFFE810620008C4 +:104F7000AFBF00100E000104AF8300183C0308000F +:104F80008C63002024040001106400048F89001049 +:104F90008FBF001003E0000827BD00188FBF00106E +:104FA0003C076012A520000A9528000A34E500108D +:104FB00027BD00183106FFFF03E00008ACA60090F3 +:104FC0003C0208008C42002027BDFFC8AFBF003460 +:104FD000AFBE0030AFB7002CAFB60028AFB500248D +:104FE000AFB40020AFB3001CAFB20018AFB10014D3 +:104FF00010400050AFB000108F840010948600065F +:105000009483000A00C3282330B6FFFF12C0004A71 +:105010008FBF003494890018948A000A012A402323 +:105020003102FFFF02C2382B14E0000202C020212F +:10503000004020212C8C0005158000020080A0215A +:10504000241400040E0000B3028020218F8700107A +:1050500002809821AF80001494ED000A028088211C +:105060001280004E31B2FFFF3C1770003C1540002B +:105070003C1E60008F8F001C8DEE000001D71824AD +:10508000507500500220202102A3802B160000350D +:105090003C182000507800470220202124100001F5 +:1050A0008F83001414600039029158230230F823D2 +:1050B0000250C82133F1FFFF1620FFEE3332FFFF0D +:1050C0008F8700103C110020AF510030000000001D +:1050D00094E6000A3C1E601237D5001002662821B3 +:1050E000A4E5000A94E2000A94F2000A94F400187D +:1050F0003057FFFF1292003BAEB700908CED0014CA +:105100008CE400100013714001AE4021000E5FC31B +:10511000010E502B008B4821012A1821ACE8001405 +:10512000ACE3001002D3382330F6FFFF16C0FFB9FE +:105130008F8400108FBF00348FBE00308FB7002CDB +:105140008FB600288FB500248FB400208FB3001CC9 +:105150008FB200188FB100148FB0001003E0000868 +:1051600027BD0038107E001B000000001477FFCC24 +:10517000241000010E00159B000000008F83001416 +:105180001060FFCB0230F823029158238F87001064 +:10519000017020210A0001973093FFFF8F830014D4 +:1051A0001460FFCB3C110020AF5100300A000163B6 +:1051B000000000000E00077D024028210A00015770 +:1051C000004080210E00033A024028210A000157C6 +:1051D000004080210E001463022020210A000157A4 +:1051E000004080210E0000CD000000000A0001797F +:1051F00002D3382327BDFFE8AFB00010AFBF0014C3 +:105200000E00003F000000003C028000345000709F +:105210000A0001BA8E0600008F4F000039EE00012F +:1052200031C20001104000248F8600A88E070000C4 +:105230003C0C08008D8C003C3C0908008D2900388E +:1052400000E66823018D28210000502100AD302B9D +:10525000012A4021010620213C010800AC25003C28 +:10526000AF8700A83C010800AC2400380E000106FE +:10527000000000003C0308008C6300701060FFE633 +:10528000006020213C0508008CA500683C06080051 +:105290008CC6006C0E00152A000000003C010800BE +:1052A000AC2000708F4F000039EE000131C20001C8 +:1052B0001440FFDE8F8600A88E0A00008F8B00A8A6 +:1052C0003C0508008CA5003C3C0408008C84003898 +:1052D000014B482300A938210082182100E9402B06 +:1052E000006810213C010800AC27003C3C0108008C +:1052F000AC2200388F5F01002419FF0024180C0035 +:1053000003F9202410980012AF840000AF4400205D +:10531000936D0000240C002031A600FF10CC001279 +:10532000240E005010CE00043C194000AF59013843 +:105330000A0001B3000000000E0011C800000000C8 +:105340003C194000AF5901380A0001B300000000C9 +:105350000E00011F000000003C194000AF59013849 +:105360000A0001B3000000008F58010000802821CE +:10537000330F00FF01E020210E0002F1AF8F000487 +:105380003C194000AF5901380A0001B30000000089 +:1053900000A4102B2403000110400009000030215C +:1053A0000005284000A4102B04A0000300031840AF +:1053B0005440FFFC000528405060000A0004182BF0 +:1053C0000085382B54E000040003184200C3302548 +:1053D00000852023000318421460FFF900052842CD +:1053E0000004182B03E0000800C310218F4201B80D +:1053F0000440FFFE00000000AF4401803C031000A9 +:1054000024040040AF450184A3440188A3460189D8 +:10541000A747018A03E00008AF4301B83084FFFFCB +:105420000080382130A5FFFF000020210A00022A59 +:10543000240600803087FFFF8CA40000240600387B +:105440000A00022A000028218F8300388F8600304E +:105450001066000B008040213C07080024E75A1822 +:10546000000328C000A710218C4400002463000121 +:10547000108800053063000F5466FFFA000328C04F +:1054800003E00008000010213C07080024E75A1C34 +:1054900000A7302103E000088CC200003C0390000C +:1054A0003462000100822025AF4400208F45002097 +:1054B00004A0FFFE0000000003E000080000000060 +:1054C0003C038000346200010082202503E00008D4 +:1054D000AF44002027BDFFE0AFB100143091FFFFC3 +:1054E000AFB00010AFBF00181220001300A0802141 +:1054F0008CA2000024040002240601401040000F8A +:10550000004028210E000C5C00000000000010216B +:10551000AE000000022038218FBF00188FB10014A8 +:105520008FB0001000402021000028210000302111 +:105530000A00022A27BD00208CA200000220382188 +:105540008FBF00188FB100148FB0001000402021D1 +:1055500000002821000030210A00022A27BD002077 +:1055600000A010213087FFFF8CA500048C440000B0 +:105570000A00022A2406000627BDFFE0AFB0001093 +:10558000AFBF0018AFB100149363003E00808021CC +:105590000080282130620040000020211040000FD0 +:1055A0008E1100000E000851022020219367000098 +:1055B0002404005030E500FF50A400128E0F0000BC +:1055C000022020218FBF00188FB100148FB000106F +:1055D000A762013C0A00091127BD00200E000287C6 +:1055E000000000000E0008510220202193670000F7 +:1055F0002404005030E500FF14A4FFF20220202113 +:105600008E0F00003C1008008E1000503C0D000C66 +:10561000240BFF8001F05021314E007F01DA602120 +:10562000018D4021014B4824AF4900280220202150 +:105630008FBF00188FB100148FB00010A50200D6E4 +:1056400027BD00200A000911AF8800D027BDFFE068 +:10565000AFBF0018AFB10014AFB0001093660001E7 +:10566000008080210E00025630D1000493640005B2 +:10567000001029C2A765000034830040A363000521 +:105680000E00025F020020210E00091302002021FB +:1056900024020001AF62000C02002821A762001062 +:1056A00024040002A762001224060140A76200142D +:1056B0000E000C5CA76200161620000F8FBF0018AA +:1056C000978C00343C0B08008D6B00782588FFFF19 +:1056D0003109FFFF256A0001012A382B10E000067E +:1056E000A78800343C0F6006240E001635ED00102C +:1056F000ADAE00508FBF00188FB100148FB00010F6 +:1057000003E0000827BD002027BDFFE0AFB1001473 +:10571000AFBF0018AFB0001000A088211080000AB1 +:105720003C03600024020080108200120000000090 +:105730000000000D8FBF00188FB100148FB0001053 +:1057400003E0000827BD00208C682BF80500FFFE51 +:1057500000000000AC712BC08FBF00188FB1001487 +:105760008FB000103C09100027BD002003E00008A6 +:10577000AC692BF80E00025600A0202193650005AD +:10578000022020210E00025F30B000FF2403003E03 +:105790001603FFE7000000008F4401780480FFFE3D +:1057A000240700073C061000AF51014002202021D1 +:1057B000A34701448FBF00188FB100148FB00010B1 +:1057C000AF4601780A0002C227BD002027BDFFE8CE +:1057D000AFBF0014AFB000108F50002000000000D9 +:1057E0000E000913AF440020AF5000208FBF0014FB +:1057F0008FB0001003E0000827BD00183084FFFFC1 +:10580000008038212406003500A020210A00022A49 +:10581000000028213084FFFF008038212406003654 +:1058200000A020210A00022A0000282127BDFFD065 +:10583000AFB3001C3093FFFFAFB50024AFB2001828 +:10584000AFBF0028AFB40020AFB10014AFB000105C +:1058500030B5FFFF12600027000090218F90001CE0 +:105860008E0300003C0680002402004000033E023C +:1058700000032C0230E4007F006688241482001D9F +:1058800030A500FF8F8300282C68000A510000100B +:105890008F910014000358803C0C0800258C56940E +:1058A000016C50218D49000001200008000000001B +:1058B00002B210213045FFFF0E000236240400849E +:1058C000162000028F90001CAF8000288F910014DA +:1058D000260C002026430001018080213072FFFF4A +:1058E00016200004AF8C001C0253502B1540FFDC27 +:1058F00000000000024010218FBF00288FB5002457 +:105900008FB400208FB3001C8FB200188FB1001429 +:105910008FB0001003E0000827BD0030240E0034D3 +:1059200014AE00F9000000009203000E241F168040 +:105930003C07000CA36300219202000D0347C8211D +:105940003C066000A3620020961100123C0A7FFF13 +:10595000354CFFFFA771003C960B00102403000597 +:105960003168FFFFAF6800848E05001CAF5F002820 +:105970008F3800008CC4444803057826008F3021FE +:10598000AF66004C8F69004C24CE00013C057F00BF +:10599000AF6900508F740050AF740054AF66007050 +:1059A000AF6E00588F6D005824140050AF6D005C2E +:1059B000A3600023AF6C0064A36300378E02001461 +:1059C000AF6200488F710048AF7100248E0B001841 +:1059D000AF6B006C9208000CA3680036937F003E0A +:1059E00037F90020A379003E8F78007403058024E6 +:1059F000360F4000AF6F007493640000308900FFE1 +:105A0000513402452404FF803C04080024845A9841 +:105A10000E00028D000000003C1008008E105A9805 +:105A20000E00025602002021240600042407000173 +:105A3000A366007D020020210E00025FA36700051F +:105A40008F5F017807E0FFFE240B0002AF5001409A +:105A5000A34B01448F90001C3C081000AF48017814 +:105A60000A000362AF8000282CAD003751A0FF98D8 +:105A70008F9100140005A0803C180800271856BC20 +:105A8000029878218DEE000001C00008000000009F +:105A90002418000614B80011000000003C0808009B +:105AA0008D085A9824040005AF4800208E1F001866 +:105AB000AF7F00188F79004CAF79001C8F650050C4 +:105AC000122000C0AF6500700A000362AF84002896 +:105AD0002406000710A60083240300063C050800E6 +:105AE00024A55A980E000264240400818F90001CA3 +:105AF0000011102B0A000362AF8200282407000463 +:105B000014A7FFF6240500503C1808008F185A9877 +:105B1000AF5800208E0F0008AF6F00408E090008BC +:105B2000AF6900448E14000CAF7400488E0E001054 +:105B3000AF6E004C8E0D0010AF6D00848E0A001405 +:105B4000AF6A00508E0C0018AF6C00548E04001C1D +:105B5000AF64005893630000306B00FF116501D8FB +:105B6000000000008F7400488F6900400289702394 +:105B700005C000042404008C1620FFDE240200036C +:105B8000240400823C05080024A55A980E000287D0 +:105B9000000000008F90001C000010210A0003622A +:105BA000AF820028240F000514AFFFCC240520008D +:105BB0003C0708008CE75A98AF4700208E06000487 +:105BC000AF66005C9208000824100008A36800215A +:105BD0008F9F001C93F90009A37900208F86001C79 +:105BE00090D8000A330400FF10900011000000005C +:105BF0002885000914A0006924020002240A00205C +:105C0000108A000B34058000288D002115A00008A3 +:105C100024054000240E0040108E00053C050001C4 +:105C200024140080109400023C050002240540006A +:105C30008F7800743C19FF00031980240205782531 +:105C4000AF6F007490C4000BA36400818F84001CAC +:105C50009489000C11200192000000009490000C27 +:105C60002406FFBF24050004A770003C908F000E9F +:105C7000A36F003E8F84001C9089000FA369003F32 +:105C80008F8B001C8D6E00108F54007401D468231C +:105C9000AF6D00608D6A0014AF6A0064956C0018E7 +:105CA000A76C00689563001AA763006A8D62001CE8 +:105CB000AF62006C9167000EA367003E9368003EE0 +:105CC0000106F8241220014BA37F003E8F90001C98 +:105CD0000A000362AF8500282407002214A7FF7F73 +:105CE000240300073C0B08008D6B5A981220000C0F +:105CF000AF4B00200A000362AF830028240C00335E +:105D000010AC0014240A00283C05080024A55A9869 +:105D10000E00023C240400810A0003EB8F90001C5B +:105D20003C04080024845A980E00028D00000000F4 +:105D30009363000024110050306200FF10510135C0 +:105D4000000000008F90001C000018210A00036270 +:105D5000AF8300283C0D08008DAD5A9824040081C3 +:105D6000AF4D00203C05080024A55A980E00023CC7 +:105D7000A36A00348F90001C240200090A00036209 +:105D8000AF82002802B288213225FFFF0E000236C2 +:105D9000240400840A0003628F90001C1082FFA478 +:105DA00024050400288B000311600170240C0004FA +:105DB000240300015483FF9E240540000A00043B95 +:105DC000240501003C04080024845A988F62004C8A +:105DD0000E00028D8F6300508F90001C0000202168 +:105DE0000A000362AF8400288E1000042404008A95 +:105DF000AF50002093790005333800021700015F8F +:105E0000020028219368002302002821311F00206E +:105E100017E0015A2404008D9367003F2406001206 +:105E200030E200FF10460155240400810E000256A6 +:105E30000200202193630023240500040200202196 +:105E4000346B0042A36B00230E00025FA365007D4C +:105E50008F4401780480FFFE240A0002AF50014005 +:105E6000A34A01448F90001C3C0C1000AF4C0178F9 +:105E70000A0003EC0011102B8E1000042404008A89 +:105E8000AF500020936E000531CD000215A0001622 +:105E900002002821936F003F2414000402002821EF +:105EA00031E900FF11340010240400810E00025675 +:105EB000020020219362002324080012241FFFFE09 +:105EC00034460020A3660023A368003F93790005B1 +:105ED00002002021033FC0240E00025FA3780005CA +:105EE00002002821000020210E00033400000000E1 +:105EF0000A0003EB8F90001C8E1000043C03000886 +:105F00000343A021AF500020928B000024050050D5 +:105F1000316400FF10850161240700880200202100 +:105F2000000028210E00022A2406000E928D000097 +:105F3000240EFF800200282101AE8025A2900000DF +:105F4000240400040E000C5C240600300A0003EB5D +:105F50008F90001C8E0800043C14080026945A9868 +:105F60003C010800AC285A98AF480020921F00035B +:105F700033F9000413200002240200122402000658 +:105F8000A362003F920B001B2404FFC03165003F59 +:105F900000A43825A367003E9206000330C200012A +:105FA00014400132000000008E020008AE8200089A +:105FB0003C0208008C425AA010400131000249C244 +:105FC000A76900088E14000C240C0001240300149F +:105FD000AF74002C8E0E0010AF6E0030960D0016C0 +:105FE000A76D0038960A0014A76A003AAF6C000C3F +:105FF000A76C0010A76C0012A76C0014A76C001609 +:1060000012200136A3630034920F000331F0000226 +:106010002E1100018F90001C262200080A00036246 +:10602000AF8200288E0400043C0E0008034E30218D +:10603000AF4400208E05000890CD0000240C0050D5 +:1060400031AA00FF114C00862407008824060009AD +:106050000E00022A000000000A0003EB8F90001CD3 +:106060008E04001C0E00024100000000104000F4ED +:10607000004050218F89001C240700890140202105 +:106080008D25001C240600010E00022A00000000DD +:106090000A0003EB8F90001C960D00023C140800D0 +:1060A00026945A9831AA0004514000B83C10600070 +:1060B0008E0E001C3C010800AC2E5A98AF4E0020FA +:1060C000920700102408001430E200FF144800D6A4 +:1060D00000000000960B00023163000114600165AE +:1060E000000000008E020004AE8200083C1408008C +:1060F0008E945AA01280015B000000008F7400741F +:106100003C0380002404000102835825AF6B007417 +:10611000A3600005AF64000C3C0708008CE75AA0A0 +:106120008F86001CA7640010000711C2A76400122C +:10613000A7640014A7640016A76200088CC80008B2 +:1061400024040002AF68002C8CC5000CAF65003041 +:1061500090DF0010A37F00348F99001C9330001152 +:10616000A37000358F98001C930F0012A36F0036A8 +:106170008F89001C912E0013A36E00378F90001C96 +:10618000960D0014A76D0038960A0016A76A003A0B +:106190008E0C0018AF6C00245620FDCCAF84002874 +:1061A0003C05080024A55A980E0002640000202136 +:1061B0008F90001C0A0004A7000020218E1000040C +:1061C00024070081AF500020936900233134001070 +:1061D000128000170000000002002021000028218A +:1061E0002406001F0E00022A000000000A0003EB34 +:1061F0008F90001C3C05080024A55A980E000287C9 +:10620000240400828F90001C000028210A000362F1 +:10621000AF8500283C0408008C845A980E0014E8CE +:10622000000000008F90001C0A000482000018216A +:106230000E00025602002021937800230200202144 +:10624000370F00100E00025FA36F002300003821FB +:1062500002002021000028210A0005A82406001FB2 +:10626000920F000C31E90001112000030000000032 +:106270009618000EA4D8002C921F000C33F90002CF +:1062800013200005000038218E0200149608001229 +:10629000ACC2001CA4C8001A0A0005432406000969 +:1062A0003C05080024A55A980E0002872404008BA0 +:1062B0008F90001C0011282B0A000362AF85002874 +:1062C000AF6000843C0A08008D4A5A983C0D0800D3 +:1062D0008DAD0050240CFF803C02000C014D1821B4 +:1062E000006C2024AF4400288E070014306B007F20 +:1062F000017A282100A2C821AF2700D88E060014F9 +:10630000AF9900D0AF2600DC8E080010251FFFFEDD +:106310000A000408AF3F01083C0508008CA55A9804 +:106320003C1908008F39005024CCFFFE00B9C02171 +:1063300003047824AF4F00283C1408008E945A9828 +:106340003C0908008D2900500289702131CD007F61 +:1063500001BA502101478021AE0600D8AF9000D08D +:10636000AE0000DC0A0003B1AE0C0108548CFE3014 +:10637000240540000A00043B240510000E00032EF3 +:10638000000000000A0003EB8F90001C8E0F442CCD +:106390003C186C62370979703C010800AC205A98AF +:1063A00015E9000824050140979F00349786002CCA +:1063B0000280282103E6C82B132000112404009238 +:1063C000240501400E000C7A240400023C01080060 +:1063D000AC225A98AF4200203C0508008CA55A9880 +:1063E00010A00005240400830E00084500000000F2 +:1063F00010400009240400833C05080024A55A9895 +:106400000E000264000000008F90001C0011202B81 +:106410000A000362AF8400280E0008490000000053 +:106420000A00055F8F90001C0E00084D0000000060 +:106430003C05080024A55A980A00062F2404008B66 +:10644000240400040E000C7A240500301440002AB5 +:10645000004050218F89001C240700830140202127 +:106460008D25001C0A000551240600018E04000839 +:106470000E000241000000000A00051BAE82000869 +:106480003C05080024A55A980E00023C240400870D +:106490008F90001C0A0005360011102B8F830038E6 +:1064A0008F8600301066FE9D000038213C070800F2 +:1064B00024E75A1C000320C0008728218CAC000070 +:1064C00011900061246A00013143000F5466FFFA05 +:1064D000000320C00A0004F6000038213C05080033 +:1064E00024A55A980E000287240400828F90001C75 +:1064F0000A000536000010213C0B0008034B202148 +:106500002403005024070001AF420020A0830000B4 +:10651000A08700018F82001C90480004A08800180A +:106520008F85001C90A60005A08600198F9F001C77 +:1065300093F90006A099001A8F90001C921800078A +:10654000A098001B8F94001C928F0008A08F001C45 +:106550008F89001C912E0009A08E001D8F8D001CBC +:1065600091AC000AA08C001E8F8B001C3C0C080014 +:10657000258C5A1C9163000B3C0B0800256B5A18A4 +:10658000A083001F8F87001C90E8000CA0880020CB +:106590008F82001C9045000D24024646A0850021F4 +:1065A0008F86001C90DF000EA09F00228F99001C98 +:1065B0009330000FA09000238F98001C93140010BC +:1065C000A09400248F8F001C91E90011A089002560 +:1065D0008F89001C8F8E00308F900038952D00140D +:1065E000000E18C025C80001A48D002895270016AC +:1065F000006C3021006BC821A487002A9525001863 +:106600003108000FA485002CA482002E8D3F001CB1 +:10661000ACCA0000AF88003011100006AF3F000088 +:10662000000038218D25001C014020210A00055161 +:1066300024060001250C00013184000F00003821E0 +:106640000A0006B8AF8400383C07080024E75A184F +:106650000087302100003821ACA000000A0004F6B9 +:10666000ACC000003C05080024A55A980A00062F7B +:10667000240400878E0400040E0002410000000084 +:106680000A00056AAE8200083084FFFF30C600FFB2 +:106690008F4201B80440FFFE00064400010430258B +:1066A0003C07200000C720253C031000AF400180BC +:1066B000AF450184AF44018803E00008AF4301B84F +:1066C00027BDFFE8AFB00010AFBF00143C0760006B +:1066D000240600021080000600A080210010102B6C +:1066E0008FBF00148FB0001003E0000827BD001812 +:1066F0003C09600EAD2000348CE5201C8F82001C0C +:106700002408FFFC00A81824ACE3201C0E0006D1CE +:106710008C45000C0010102B8FBF00148FB00010A0 +:1067200003E0000827BD00183C02600E344701005A +:1067300024090018274A040000000000000000009F +:10674000000000003C06005034C30200AF44003893 +:10675000AF45003CAF430030014018218F4B000093 +:10676000316800201100FFFD2406007F2408FFFF90 +:106770008C6C000024C6FFFF24630004ACEC000016 +:1067800014C8FFFB24E70004000000000000000024 +:10679000000000003C0F0020AF4F00300000000060 +:1067A00024AD020001A5702B2529FFFF008E2021BA +:1067B0001520FFE101A0282103E0000800000000EF +:1067C00027BDFFE0AFB10014AFBF0018AFB000109D +:1067D0003C05600E8CA20034008088211440000625 +:1067E0003C0460008C87201C2408FFFC00E8302457 +:1067F00034C30001AC83201C8F8B001C24090001D2 +:10680000ACA90034956900028D6500148D70000CF0 +:106810002D2400818D6700048D660008108000071C +:106820008D6A00102D2C00041580000E30CE00075C +:10683000312D000311A0000B000000002404008B88 +:10684000020028210E0006D1240600030011102B9F +:106850008FBF00188FB100148FB0001003E0000844 +:1068600027BD002015C0FFF62404008B3C03002048 +:10687000AF4300300000000024020001AF8200148A +:106880000000000000000000000000003C1F01505C +:10689000013FC825253800033C0F600EAF47003884 +:1068A00000181882AF46003C35E8003CAF59003074 +:1068B000274704008F4400003086002010C0FFFDF1 +:1068C00000000000106000082466FFFF2403FFFFA3 +:1068D0008CEB000024C6FFFF24E70004AD0B000092 +:1068E00014C3FFFB250800043C08600EAD09003806 +:1068F0000000000000000000000000003C07002035 +:10690000AF470030000000000E0006F901402021D2 +:1069100002002821000020210E0006D124060003D9 +:106920000011102B8FBF00188FB100148FB0001012 +:1069300003E0000827BD002027BDFFE0AFB200182C +:106940003092FFFFAFB10014AFBF001CAFB000101A +:106950001640000D000088210A0007AA022010211D +:1069600024050001508500278CE5000C0000000D77 +:10697000262300013071FFFF24E200200232382B71 +:1069800010E00019AF82001C8F8200141440001622 +:106990008F87001C3C0670003C0320008CE5000043 +:1069A00000A62024148300108F84003C00054402BC +:1069B0003C09800000A980241480FFE9310600FF13 +:1069C0002CCA00095140FFEB262300010006688015 +:1069D0003C0E080025CE579801AE60218D8B00003B +:1069E0000160000800000000022010218FBF001C81 +:1069F0008FB200188FB100148FB0001003E00008B0 +:106A000027BD00200E0006D1240400841600FFD804 +:106A10008F87001C0A00078BAF80003C90EF0002BC +:106A200000002021240600090E0006D1000F2E00D0 +:106A30008F87001C0010102B0A00078BAF82003CD0 +:106A4000020028210E0006DF240400018F87001CAD +:106A50000A00078BAF82003C020028210E0006DFEF +:106A6000000020210A0007C38F87001C0E00071FAB +:106A7000020020210A0007C38F87001C30B0FFFFEF +:106A8000001019C08F5801B80700FFFE3C1F2004FA +:106A90003C191000AF430180AF400184AF5F018813 +:106AA000AF5901B80A00078C262300013082FFFF8E +:106AB00014400003000018210004240224030010E5 +:106AC000308500FF14A000053087000F2466000801 +:106AD0000004220230C300FF3087000F14E00005DD +:106AE000308900032468000400042102310300FF00 +:106AF0003089000315200005388B0001246A00024C +:106B000000042082314300FF388B00013164000112 +:106B100010800002246C0001318300FF03E00008B4 +:106B200000601021308BFFFF000B394230E600FF80 +:106B30003C09080025295998000640800109602178 +:106B40008D8700003164001F240A0001008A1804A8 +:106B500030A500FF00E3202514A000020003102749 +:106B600000E22024240F000100CF700401096821F5 +:106B7000000E282714800005ADA400008F86000CAD +:106B800000A6102403E00008AF82000C8F88000CE0 +:106B900001C8102503E00008AF82000C3C06001F6E +:106BA0003C0360003084FFFF34C5FF8024020020D6 +:106BB000AC602008AC60200CAC602010AC652014E8 +:106BC000AC642018AC62200000000000000000004F +:106BD00003E000080000000027BDFFE82402FFFFDB +:106BE000AFBF0010AF82000C000020213C0608005F +:106BF00024C659982405FFFF248900010004408021 +:106C00003124FFFF010618212C87002014E0FFFA31 +:106C1000AC6500000E0008160000202124020001CF +:106C20003C04600024050020AC822018AC852000C4 +:106C3000000000000000000000000000244A0001E5 +:106C40003142FFFF2C46040014C0FFF78FBF001035 +:106C500003E0000827BD00188F8300082C620400A1 +:106C600003E00008384200018F830008246200011D +:106C700003E00008AF8200088F8300082462FFFF52 +:106C800003E00008AF82000827BDFFE0AFB10014A9 +:106C9000AFBF0018AFB000108F6B00303C06600033 +:106CA00000808821ACCB20088F6A002C3C02800039 +:106CB00024030008ACCA200C9769003A9768003892 +:106CC00000092C003107FFFF00A72025ACC42010CD +:106CD000ACC22014ACC32000000000000000000083 +:106CE000000000003C0360008C6D200031AC000807 +:106CF0001580FFF9000000008C6E201405C00020F4 +:106D0000000000000E0007DA8F84000C00024080B3 +:106D10003C09080025295998010938218CE4000014 +:106D20000E0007DA00028140020220213090FFFFAE +:106D3000020020210E0007F8000028213C0C8000F2 +:106D4000022C58253210FFFF3C116000240A00205D +:106D5000AE2B2014AE302018AE2A20000000000018 +:106D60000000000000000000020010218FBF00188A +:106D70008FB100148FB0001003E0000827BD002081 +:106D80008C6620143C02001F3443FF803C1FFFE848 +:106D900000C3C02437F9080003198021001079C20C +:106DA0003C0C8000022C582531F0FFFF3C116000A4 +:106DB000240A0020AE2B2014AE302018AE2A20006A +:106DC0000000000000000000000000000200102190 +:106DD0008FBF00188FB100148FB0001003E00008BF +:106DE00027BD002027BDFFE8AFB000103402FFFF31 +:106DF0003090FFFFAFBF00141202000602002021F6 +:106E00000E00081600000000020020210E0007F806 +:106E1000240500018F8400088FBF00148FB000107C +:106E20002483FFFF27BD001803E00008AF8300089C +:106E3000000439C230E6003F00043B42000718401E +:106E4000240210002CC4002024C8FFE0AF42002C14 +:106E5000246300011480000330A900FF00071840DC +:106E6000310600FF0003608024080001019A5821C8 +:106E70003C0A000E00C82804016A382111200005D0 +:106E8000000530278CE900000125302503E00008CB +:106E9000ACE600008CEE000001C6682403E00008A8 +:106EA000ACED000027BDFFE8AFBF0014AFB000108D +:106EB0003C0460008C8508083403F00030A2F00028 +:106EC00050430006240200018C8708083404E000C7 +:106ED00030E6F00010C4001E24020002AF82004021 +:106EE0003C1060003C0A0200AE0A0814240910009D +:106EF0003C08000E8E03440003482021AF49002CBB +:106F0000240501200E000CC0000030218F830040BA +:106F1000106000043C021691240B0001106B000E5F +:106F20003C023D2C344F0090AE0F44088FBF00143C +:106F30008FB000103C0C6000240E10003C0D0200CD +:106F400027BD0018AD8E442003E00008AD8D081069 +:106F50000A0008E7AF8000403C0218DA344F009086 +:106F6000AE0F44088FBF00148FB000103C0C6000BF +:106F7000240E10003C0D020027BD0018AD8E4420E9 +:106F800003E00008AD8D08100A0008BB24050001CD +:106F90000A0008BB000028213C08080025085DA461 +:106FA0002404FFFF010018212402001E2442FFFFD9 +:106FB000AC6400000441FFFD246300043C070800AA +:106FC00024E75E208CE5FFFC2404001C240600015D +:106FD000308A001F0146480424840001000910275C +:106FE0002C8300201460FFFA00A22824ACE5FFFCEB +:106FF0003C05666634A4616E3C06080024C65EE06B +:10700000AF840058AF88009C2404FFFF00C0182103 +:107010002402001F2442FFFFAC6400000441FFFD76 +:10702000246300043C0766663C05080024A55EA0B6 +:10703000AF86004834E6616EAF8600982404FFFFF7 +:1070400000A018212402000F2442FFFFAC640000BE +:107050000441FFFD246300043C0B66663C06080007 +:1070600024C65E203568616EAF8500A4AF880070CD +:107070002404FFFF00C018212402001F2442FFFF48 +:10708000AC6400000441FFFD246300043C0D66660F +:107090003C0A0800254A5F6035AC616EAF860090FF +:1070A000AF8C005C2404FFFF014018212402000380 +:1070B0002442FFFFAC6400000441FFFD2463000490 +:1070C0003C09080025295F708D27FFFC2404000679 +:1070D000240500013099001F0325C0042484000109 +:1070E000001878272C8E002015C0FFFA00EF3824F6 +:1070F000AD27FFFC3C09666624030400240403DC7E +:1071000024050200240600663522616E3C08080052 +:1071100025085AA4AF820074AF830044AF83006C8B +:10712000AF830050AF830084AF8A008CAF840064CB +:10713000AF85004CAF860054AF840078AF85006007 +:10714000AF86008001001821240200022442FFFFC4 +:10715000AC6000000441FFFD24630004240400032C +:107160002403000C3C0A0800254A5AB0AF8A006884 +:107170000A00098E2405FFFF000418802484000102 +:10718000006858212C8700C014E0FFFBAD650000AB +:107190003C0E666635CD616E240C17A024081800DD +:1071A000AF8D0088AF8C009403E00008AF88007CAE +:1071B0002484007F000421C200004021000030210F +:1071C00000003821000028210A0009A5AF8400A092 +:1071D0001060000624E7000100C4302124A500014E +:1071E0002CC20BF51440FFFA2CA300663C090800E2 +:1071F00025295F6001201821240200032442FFFF9B +:10720000AC6000000441FFFD2463000410E0001A9C +:1072100024E3FFFF0003294210A0000A0000202100 +:107220002406FFFF3C03080024635F602484000100 +:107230000085502BAC660000250800011540FFFBBF +:107240002463000430E2001F10400008000868803A +:10725000240C0001004C38040008588001692821E2 +:1072600024E6FFFF03E00008ACA6000001A94021CE +:107270002409FFFFAD09000003E000080000000042 +:10728000AF4400283C04000C034420210005288260 +:107290000A000CC000003021000421803C03600083 +:1072A000AC6410080000000000052980AC65100CDB +:1072B0000000000003E000088C62100C27BDFFE80E +:1072C0000080282124040038AFBF00140E0009D527 +:1072D000AFB0001024040E00AF4400283C10000C96 +:1072E00003502021240500100E000CC000003021A6 +:1072F00003501021AC400000AC40000424040038CE +:107300008FBF00148FB0001024053FFF27BD001869 +:107310000A0009D58C430000000421803C03600072 +:10732000AC641008000000008C62100C03E0000840 +:107330000002118227BDFFC8AFB400208F940068FF +:10734000AFBE0030AFB7002CAFB600280000B821A8 +:107350000080B021241E00C0AFBF0034AFB50024B0 +:10736000AFB3001CAFB20018AFB10014AFB0001043 +:107370000A000A12AFA5003C504000018F9400683B +:1073800027DEFFFF13C00028269400048E92000021 +:107390003C03080024635DA01240FFF70283102B1A +:1073A0003C04080024845AA4028410230002A8C0CC +:1073B000000098210A000A212411000100118840D0 +:1073C000122000260000000002B380210251282470 +:1073D0000200202110A0FFF9267300010E0009DE33 +:1073E000000000000016684032EC000101AC2021D2 +:1073F0000E0009D5020028218F89009426F700018C +:107400008FA6003C3AEB0001316A00012528FFFFFE +:107410000011382702CAB021AF88009416E6FFE7B2 +:1074200002479024AE92000002E010218FBF00348A +:107430008FBE00308FB7002C8FB600288FB5002488 +:107440008FB400208FB3001C8FB200188FB10014CE +:107450008FB0001003E0000827BD00383C0E080084 +:1074600025CE5DA0028E102B0A000A0DAE92000000 +:1074700027BDFFD8AFB10014AFB00010AFBF0020E0 +:10748000AFB3001CAFB2001800A0882110A0001FED +:10749000000480403C13080026735AA40A000A5ACC +:1074A0002412000112200019261000010E0009F517 +:1074B00002002021000231422444FFA0000618806F +:1074C0003045001F2C8217A1007318212631FFFFC1 +:1074D0001040FFF400B230048C690000020020214B +:1074E00024053FFF012640241500FFEE0126382524 +:1074F0000E0009D5AC6700008F8A009426100001A9 +:10750000254700011620FFE9AF8700948FBF0020B8 +:107510008FB3001C8FB200188FB100148FB0001011 +:1075200003E0000827BD00288F85009C00805821BB +:107530000000402100004821240A001F3C0C0800E4 +:10754000258C5E1C3C0D080025AD5DA48CA60000BA +:1075500050C000140000402100AD1023000238C0CC +:10756000240300010A000A930000202115000003F3 +:1075700000E410212448202400004821252900018E +:10758000512B00132506DFDC106000062484000167 +:1075900000C3702415C0FFF5000318400A000A91CB +:1075A0000000402110AC002624A300040060282124 +:1075B000254AFFFF1540FFE5AF85009C512B0004D5 +:1075C0002506DFDC0000402103E000080100102157 +:1075D0000006614230C5001F000C50803C070800C7 +:1075E00024E75DA424040001014730211120000F8D +:1075F00000A420043C05080024A55E20148000059A +:107600002529FFFF24C6000410C50011000000005A +:10761000240400018CCF00000004C0270004204097 +:1076200001F868241520FFF5ACCD00008F99007893 +:1076300001001021032B482303E00008AF890078E4 +:107640003C05080024A55DA40A000A9B0000402117 +:107650003C06080024C65DA40A000AB42404000104 +:10766000308800FF240200021102000A24030003F4 +:107670001103005C8F8900A4240400041104005F3E +:1076800024050005110500670000182103E000082B +:10769000006010218F8900483C0C0800258C5EE0BA +:1076A0003C04080024845F60240300201060000F65 +:1076B00000005821240D0002240E00033C0F080096 +:1076C00025EF5EE08D27000014E0000B30F9FFFF8E +:1076D000252900040124C02B53000001018048210A +:1076E0002463FFFF5460FFF88D270000016018211C +:1076F00003E0000800601021132000323C0500FF69 +:1077000030E200FF004030211040004200005021D4 +:1077100024050001000020210005C84000A6C02467 +:1077200017000003332500FF14A0FFFB2484000191 +:10773000012CC023001828C000AA6021008C502111 +:107740003144001F240C0001008C18040003102792 +:1077500000E23024110D0041AD260000110E004C56 +:10776000000A1840110D00368F87006C510E00562C +:107770008F8C0060240D0004110D005A8F8E008440 +:10778000240E0005150EFFDA01601821240B1430B9 +:1077900011400006000018218F8400A0246300011E +:1077A000006A402B1500FFFD016458218F8A00807C +:1077B000AF89008C016018212549FFFF0A000AEB00 +:1077C000AF89008000E52024000736021080FFD03A +:1077D000240A001800075402314600FF0A000AF389 +:1077E000240A00103C0C0800258C5EA03C04080014 +:1077F00024845EE00A000ADA240300103C0C08002E +:10780000258C5E203C04080024845EA00A000AD96E +:107810008F89009000071A02306600FF0A000AF301 +:10782000240A00088F89008C3C0C0800258C5F60BE +:107830003C04080024845F700A000ADA2403000470 +:10784000000A4080250B003024E6FFFF016018216C +:10785000AF8900480A000AEBAF86006C000AC982B3 +:10786000001978803C07080024E75EA001E720218A +:10787000000A18428C8F00003079001F032C380456 +:107880000007C02701F860240A000B08AC8C000038 +:10789000000331420006288000AF28213062001F1B +:1078A0008CB8000024630001004CC804000321428E +:1078B000001938270004108003073024004F2021CE +:1078C0000A000B4CACA60000000A68C025AB0032D1 +:1078D000258AFFFF01601821AF8900A40A000AEB86 +:1078E000AF8A0060254B1030AF89009001601821ED +:1078F00025C9FFFF0A000AEBAF8900843086000724 +:107900002CC2000610400014000000000006408059 +:107910003C030800246357BC010338218CE40000B9 +:1079200000800008000000002409000310A9000ED8 +:1079300000000000240A000510AA000B000000004F +:10794000240B000110AB0008000000008F8C00A089 +:1079500010AC00050000000003E00008000010214A +:107960000A000A7900A020210A000AC700C02021CD +:1079700027BDFFE8308400FF240300021083000BC2 +:10798000AFBF0010240600031086003A240800044C +:1079900010880068240E0005108E007F2CAF143074 +:1079A0008FBF001003E0000827BD00182CA2003094 +:1079B0001440FFFC8FBF001024A5FFD0000531C28A +:1079C000000668803C07080024E75EE001A730213C +:1079D0008CC900000005288230AC001F240B000178 +:1079E000018B50048F840048012A4025ACC8000058 +:1079F0008C83000050600001AF8600488F98006CB7 +:107A000030AE000124A6FFFF270F000115C00002C1 +:107A1000AF8F006C24A600010006414200082080C0 +:107A2000008718218C79000030C2001F2406000155 +:107A30000046F804033F382410E0FFDA8FBF00103F +:107A40000005C182001870803C0F080025EF5EA081 +:107A500001CF48218D2B00000005684231A5001F91 +:107A600000A66004016C502527BD001803E0000843 +:107A7000AD2A00002CA7003014E0FFCA8FBF001011 +:107A800030B900071723FFC724A8FFCE00086A02F9 +:107A9000000D60803C0B0800256B5EA0018B30213F +:107AA0008CC40000000828C230AA001F240800016E +:107AB000014848048F8200A400891825ACC3000047 +:107AC0008C5F000053E00001AF8600A40005704009 +:107AD000000E7942000F28803C04080024845EE0F8 +:107AE00000A418218C6B000025DF000131CD001FA0 +:107AF000001F514201A86004016C4825000A108053 +:107B0000AC690000004428218CA600008F9800601A +:107B100033F9001F8FBF00100328380400C77825F1 +:107B2000270E000127BD0018ACAF000003E00008DD +:107B3000AF8E006024A5EFD02CB804001300FF998D +:107B40008FBF001000053142000658803C0A080033 +:107B5000254A5E20016A30218CC4000030A3001F3A +:107B600024090001006910048F9900900082F82513 +:107B7000ACDF00008F27000050E00001AF860090CE +:107B80008F8D00848FBF001027BD001825AC000129 +:107B900003E00008AF8C008415E0FF828FBF001067 +:107BA0008F8600A0000610400046F821001F21002B +:107BB00003E4C8210019384024F8143000B8402BE1 +:107BC0001100FF788FBF001024A4EBD00E00021329 +:107BD00000C0282100027942000F70803C0D08008F +:107BE00025AD5F6001CD20218C8B0000304C001F43 +:107BF00024060001018618048F89008C016350253A +:107C0000AC8A00008D25000050A00001AF84008CDC +:107C10008F9800808FBF001027BD00182708000133 +:107C200003E00008AF88008030A5000724030003AC +:107C300010A3001028A2000414400008240700022A +:107C40002403000410A300152408000510A8000F49 +:107C50008F8500A003E000080000000014A7FFFDCE +:107C60000080282114C3FFFB240400020A000B8BB0 +:107C700000000000240900050080282110C9FFFB36 +:107C80002404000303E000080000000014C5FFF115 +:107C9000008028210A000B8B24040005240A00011F +:107CA0000080282110CAFFF12404000403E000082A +:107CB0000000000027BDFFE0AFB00010000581C24A +:107CC0002603FFD024C5003F2C6223D024C6007FAA +:107CD000AFB20018AFB10014AFBF001C309100FF6D +:107CE000000691C2000529820200202110400008F0 +:107CF0002403FFFF0E000A4B0000000002002021B9 +:107D0000022028210E000C390240302100001821E9 +:107D10008FBF001C8FB200188FB100148FB00010FD +:107D20000060102103E0000827BD002027BDFFD818 +:107D300024A2007FAFB3001CAFB20018000299C2AA +:107D4000309200FF24A3003F02402021026028213E +:107D5000AFB10014AFB00010AFBF00200E000B6E2B +:107D60000003898200408021004020210220282138 +:107D700014400009000018218FBF00208FB3001CA1 +:107D80008FB200188FB100148FB000100060102166 +:107D900003E0000827BD00280E0009FC00000000D9 +:107DA00000402821020020211051FFF3001019C0CB +:107DB0000E000A4B00000000020020210240282192 +:107DC0000E000C39026030218FBF00208FB3001CE1 +:107DD0008FB200188FB100148FB00010000018216E +:107DE0000060102103E0000827BD00283084FFFF59 +:107DF00030A5FFFF1080000700001821308200012D +:107E00001040000200042042006518211480FFFB8E +:107E10000005284003E000080060102110C00007A2 +:107E2000000000008CA2000024C6FFFF24A500046F +:107E3000AC82000014C0FFFB2484000403E00008AF +:107E40000000000010A0000824A3FFFFAC86000083 +:107E500000000000000000002402FFFF2463FFFF79 +:107E60001462FFFA2484000403E00008000000000C +:107E700030A5FFFF8F4201B80440FFFE3C076015AC +:107E800000A730253C031000AF440180AF400184BF +:107E9000AF46018803E00008AF4301B88F8500D0EA +:107EA0002C864000008018218CA700840087102BAE +:107EB00014400010000000008CA800842D06400033 +:107EC00050C0000F240340008CAA0084008A482B75 +:107ED000512000018CA3008400035A42000B208033 +:107EE0003C05080024A558200085182103E000085F +:107EF0008C62000014C0FFF4000000002403400066 +:107F000000035A42000B20803C05080024A558209D +:107F10000085182103E000088C6200008F8300D0E8 +:107F2000906600D024C50001A06500D08F8500D0E8 +:107F3000906400D090A200D210440017000000000E +:107F4000936C00788F8B00BC318A00FFA16A000C13 +:107F500025490001938700C4312200FF3048007F8B +:107F60001107000B00026827A36200788F4E01788A +:107F700005C0FFFE8F9900B0241800023C0F1000CE +:107F8000AF590140A358014403E00008AF4F017806 +:107F90000A000D0931A20080A0A000D00A000CFF49 +:107FA000000000008F8700D027BDFFC8AFBF0030A2 +:107FB000AFB7002CAFB60028AFB50024AFB4002097 +:107FC000AFB3001CAFB20018AFB10014AFB00010D7 +:107FD00094E300E094E200E2104300D72405FFFFA1 +:107FE0003C047FFF3497FFFF2415FF800A000DF04B +:107FF0003C16000E108A00D18FBF00308F9100B068 +:108000003C1808008F18005C001230C0001291402C +:108010000311702101D57824AF4F002C94EC00E2BD +:1080200031CD007F01BA5821318A7FFF0176482186 +:10803000000A804002091021945300003C08080007 +:108040008D0800580246C02132733FFF001319808B +:10805000010320210224282130BF007F03FAC82118 +:1080600000B5A024AF54002C0336A0218E87001049 +:108070008E8F003003785821256D008800EF702323 +:10808000240C0002AE8E0010AF8D00ACA16C0088F5 +:10809000976A003C8E8400308F9100AC0E000CD6A5 +:1080A0003150FFFF00024B80020940253C02420094 +:1080B00001022025AE2400048E8300048F8D00ACC5 +:1080C0008E860000240E0008ADA3001CADA600188B +:1080D000ADA0000CADA00010929F000A33F900FF84 +:1080E000A5B90014968500083C1F000CA5A5001634 +:1080F0009298000A331100FFA5B100209690000865 +:1081000024180005A5B00022ADA00024928F000B1A +:108110002410C00031E700FFA5A70002A1AE0001B6 +:108120008E8C00308F8B00AC8F8400B0AD6C00085B +:108130003C0A08008D4A005401444821013540247E +:10814000AF4800283C0208008C4200540044302113 +:1081500030C3007F007AC821033F282102458821CF +:10816000AF9100BCAF8500C0A23800008F8A00BC70 +:108170002403FFBF2418FFDF954F000201F03824CD +:1081800000F37025A54E0002914D000231AC003F76 +:10819000358B0040A14B00028F8600BC8F8900D038 +:1081A000ACC000048D28007C3C098000ACC80008ED +:1081B00090C4000D3082007FA0C2000D8F8500BCEE +:1081C00090BF000D03E3C824A0B9000D8F9100BC3F +:1081D0009233000D02789024A232000D8E9000346C +:1081E0008F8B00BCAD7000108E87002C8E8F0030FE +:1081F00000EF7023AD6E0014916D001831AC007F5C +:10820000A16C00188F9F00BC8E8A00308FE8001888 +:10821000015720240109302400C41025AFE20018C2 +:108220009283000AA3E3001C969900088F8500BC86 +:108230008F9800D0A4B9001E8E9000308E8400303C +:108240000E0002138F0500848F8500D0000291403C +:108250000002990090AF00BC0253882100403021F9 +:1082600031E7000210E0000302118021000290803B +:108270000212802190B900BC3327000410E00002F4 +:108280000006F880021F80218E9800308F8B00BC82 +:1082900024068000330F0003000F702331CD00034C +:1082A000020D6021AD6C000494A400E294AA00E2E7 +:1082B00094B000E231497FFF2522000130537FFF57 +:1082C0000206182400734025A4A800E294A400E24A +:1082D0003C1408008E94006030917FFF123400221D +:1082E000000000000E000CF6000000008F8700D098 +:1082F0000000282194F300E094F000E21213000F34 +:108300008FBF003090E900D090E800D1313200FFFB +:10831000310400FF0244302B14C0FF36264A00010E +:1083200090EE00D2264B000131CD00FF008D602180 +:10833000158BFF338F9100B08FBF00308FB7002CAB +:108340008FB600288FB500248FB400208FB3001C97 +:108350008FB200188FB100148FB0001000A0102150 +:1083600003E0000827BD003894A300E20066402423 +:10837000A4A800E290A400E290B900E2309100FFCE +:108380000011A1C20014F827001F39C03332007F4A +:10839000024730250A000DE8A0A600E23084FFFF66 +:1083A00030A5FFFFAF440018AF45001C03E00008F4 +:1083B0008F42001427BDFFB8AFB000208F9000D0CF +:1083C0003084FFFFAFA40010AFBF0044AFBE004039 +:1083D000AFB7003CAFB60038AFB50034AFB4003033 +:1083E000AFB3002CAFB20028AFB10024A7A0001893 +:1083F000920600D1920500D030C400FF30A300FFE8 +:108400000064102B10400122AFA00014920900D08C +:108410008FB50010312800FF0088382324F4FFFFB7 +:108420000014882B0015982B02339024524001260B +:108430008FB40014961E0012961F00108FB7001004 +:1084400003DFC823001714000019C400000224032E +:108450000018140302E2B02A52C00001004020219B +:108460000284282B10A0000200801821028018210D +:1084700000033C0000071C033064FFFF2C8600094A +:1084800014C000020060B821241700088E0A0008FA +:10849000001769808E09000C31ABFFFF3C0C001007 +:1084A000016C402527520400AF4A0038AF9200B853 +:1084B000AF49003CAF480030000000000000000061 +:1084C00000000000000000000000000000000000AC +:1084D00000000000000000008F4F000031EE00207F +:1084E00011C0FFFD0017982A027110240A000E83A4 +:1084F0000000B02155E001019258000131130080C5 +:10850000126001CF012020219655001232A5FFFFF5 +:108510000E000CCBA7B500188F9000D00291A023BD +:1085200026CD00018F9100B8000DB4000016B403F1 +:108530002638004002D7582A0014882B2405000151 +:108540000300902101711024AF9800B8AFA500146A +:10855000104001BC8F8900B03C0C08008D8C005489 +:10856000240BFF80921E00D001895021014B28244A +:10857000921900D0AF4500288E4700103C08080033 +:108580008D0800583C1808008F18005430E33FFF56 +:108590000003218001043021012658212402FF809C +:1085A0000162F824920C00D0AF5F002C92480000CA +:1085B00033D100FF333500FF0309982100117140CA +:1085C000001578C0326D007F01CF382101BA282113 +:1085D000318300FF3164007F3C0A000C00AA88212F +:1085E0000367F02100033140009A10213108003F59 +:1085F0003C1F000E00D1C021005F982127D90088C0 +:108600002D150008AF9100C0AF9900ACAF9800BC29 +:10861000AF9300B412A0018A00008821240E00014B +:10862000010E4004310D005D11A0FFB2310F0002B8 +:108630008E4A00283C0300803C04FFEFAE6A000035 +:108640008E450024A260000A3488FFFFAE65000456 +:108650009247002C3C1FFF9F37FEFFFFA267000CD4 +:108660008E62000C3C180040A267000B00433025CE +:1086700000C8C824033E88240238A825AE75000C23 +:108680008E490004AE6000183C0F00FFAE69001474 +:108690008E4D002C35EEFFFF8F8B00B001AE6024B5 +:1086A000AE6C00108E470008A660000896450012C8 +:1086B000AE6700208E42000C30B03FFF00105180AA +:1086C000AE6200248E5E0014014B182130A400011C +:1086D000AE7E00288E590018000331C2000443808A +:1086E000AE79002C8E51001C00C8F821A67F001C1A +:1086F000AE710030965800028E550020A678001EFC +:10870000AE75003492490033313000045600000544 +:10871000925000008F8C00D08D8B007CAE6B0030AF +:10872000925000008F8F00BCA1F00000924E0033E9 +:1087300031CD000251A00007925E00018F8900BC7C +:108740002418FF80913100000311A825A1350000F5 +:10875000925E00018F9900BC2409FFBF240BFFDF4C +:10876000A33E00018F9500BC92B8000D3311007F2D +:10877000A2B1000D8F8E00BC91D0000D02097824AB +:10878000A1CF000D8F8800BC8E6D0014910A000DE2 +:108790002DAC0001000C2940014B382400E51825C0 +:1087A000A103000D964200128F8800BC8F8700D075 +:1087B000A50200028E45000490FF00BC30A4000317 +:1087C0000004302330DE000300BE102133F9000224 +:1087D00017200002244400342444003090E200BCFE +:1087E00000A2302430DF000417E0000224830004DC +:1087F000008018218F8F00AC24090002AD03000413 +:10880000A1E90000924E003F8F8D00ACA1AE0001A7 +:108810008F9500AC924C003F8E440004A6AC000241 +:10882000976B003C0E000CD63170FFFF00025380A6 +:10883000020A38253C05420000E51825AEA30004D5 +:108840008F8600AC8E480038ACC800188E440034C7 +:10885000ACC4001CACC0000CACC00010A4C0001420 +:10886000A4C00016A4C00020A4C00022ACC00024F4 +:108870008E6400145080000124040001ACC4000880 +:108880000E000CF6241100010A000E768F9000D025 +:10889000920F00D2920E00D08FB5001031EB00FF86 +:1088A00031CD00FF008D6023016C50212554FFFF66 +:1088B0000014882B0015982B023390241640FEDDFF +:1088C000000000008FB400148FBF00448FBE004032 +:1088D0003A8200018FB7003C8FB600388FB5003464 +:1088E0008FB400308FB3002C8FB200288FB10024DA +:1088F0008FB0002003E0000827BD0048331100209E +:10890000122000EF24150001921E00BC241F00015C +:108910000000A82133D900011320000DAFBF001CB7 +:108920008E4400148E0800840088102B144000022E +:10893000008030218E0600848E03006400C3A82BC3 +:1089400016A0000200C020218E0400640080A8212F +:108950008E4700148E05006400E5302B14C0000221 +:1089600000E020218E0400640095F02313C0000471 +:108970008FAC001C240A0002AFAA001C8FAC001CA4 +:10898000028C582B156000A8000018218E4F00386B +:108990008E6D000C3C0E0080AE6F00008E4A0034DD +:1089A0003C10FF9F01AE5825AE6A00049246003F7E +:1089B000360CFFFF016C38243C0500203C03FFEF20 +:1089C000A266000B00E510253468FFFF8F8700B812 +:1089D0000048F8243C04000803E4C825AE79000CE4 +:1089E0008CF80014AE60001802BE7821AE78001436 +:1089F0008CF10018AE71001C8CE90008AE690024EF +:108A00008CEE000CAE6F002CAE600028AE6E002025 +:108A1000A6600038A660003A8CED001401B58023F2 +:108A2000021E902312400011AE72001090EA003D29 +:108A30008E6500048E640000000A310000A6C82183 +:108A4000000010210326402B0082F82103E8C021FA +:108A5000AE790004AE78000090F1003DA271000AEA +:108A60008F8900B895320006A67200088F9800AC76 +:108A70002419000202A02021A31900009769003CDC +:108A80008F9200AC0E000CD63131FFFF00027B80CC +:108A90008F8500B8022F68253C0E420001AE80256C +:108AA000AE5000048F8400AC8CAC0038AC8C001845 +:108AB0008CAB0034AC8B001CAC80000CAC80001084 +:108AC000A4800014A4800016A4800020A4800022AA +:108AD000AC80002490A7003FA487000212A00135BB +:108AE0002403000153C0000290A2003D90A2003E6A +:108AF00024480001A08800018F9F00ACAFF500085A +:108B00008F8300D024070034906600BC30C500027B +:108B100050A00001240700308F9200B88F8A00BC5B +:108B2000906D00BC924B00002412C00032A50003DF +:108B3000A14B00008F8600B88F8800BC240200047F +:108B400090C400010045182330790003A1040001FE +:108B50008F8A00BC8F9F00B800F53821955800021D +:108B600097E9001200F9382103128824312F3FFFC2 +:108B7000022F7025A54E00029150000231A800047A +:108B8000320C003F358B0040A14B000212A00002C6 +:108B90008F8500BC00E838218F8E00D0ACA7000480 +:108BA000240BFFBF8DCD007C2EA400012403FFDF2A +:108BB000ACAD000890B0000D00044140320C007FC5 +:108BC000A0AC000D8F8600BC90CA000D014B102494 +:108BD000A0C2000D8F8700BC90E5000D00A3F82413 +:108BE00003E8C825A0F9000D8F9100B88F8D00BC57 +:108BF0008E380020ADB800108E290024ADA90014D5 +:108C00008E2F0028ADAF00188E2E002C0E000CF613 +:108C1000ADAE001C8FB0001C240C0002120C00EE44 +:108C20008F9000D08FA3001C006088211460000288 +:108C30000060A8210000A02156A0FE390291A023C7 +:108C40000014882B8FA90010960700103C1E0020EE +:108C50000136402302C750213112FFFFA60A00103F +:108C6000AFB20010AF5E0030000000009617001099 +:108C7000961300121277008F000000008E05000C82 +:108C80008E0B00080016698000AD7021000DC7C36F +:108C900001CDA82B0178782101F56021AE0E000CE2 +:108CA000AE0C00088FB300100013B82B02378024DD +:108CB0001200FF048F9000D00A000E3C000000005C +:108CC0008E4D0038A6600008240B0003AE6D000036 +:108CD0008E500034A260000A8F9800B8AE70000475 +:108CE0003C0500809311003FA26B000C8E6F000CBE +:108CF0003C0EFF9FA271000B01E5102535CCFFFF54 +:108D00003C03FFEF8F9200B8004C30243464FFFF27 +:108D100000C4F824AE7F000C8E590014964800124F +:108D20008F8A00B0AE7900108E490014AE60001832 +:108D3000AE600020AE690014AE6000248E470018BB +:108D400031093FFF0009F180AE6700288E4D000811 +:108D500003CA802131180001AE6D00308E4F000C27 +:108D60008F8C00AC001089C200185B80022B282178 +:108D7000240E0002A665001CA6600036AE6F002C13 +:108D8000A18E00009763003C8F8A00AC3C04420037 +:108D90003062FFFF00443025AD4600048F9F00B8CD +:108DA000240700012411C0008FF30038240600348A +:108DB000AD5300188FF90034AD59001CAD40000CC4 +:108DC000AD400010A5400014A5400016A5400020AD +:108DD000A5400022AD400024A5550002A147000196 +:108DE0008F9E00AC8F8800B88F9200BCAFD5000872 +:108DF000910D0000A24D00008F9000B88F8B00BC39 +:108E000092180001A17800018F8400BC94850002B3 +:108E100000B1782401E97025A48E0002908C000234 +:108E20003183003FA08300028F8300D08F8400BC79 +:108E3000906200BC305300025260000124060030F2 +:108E4000AC8600048C6F007C2403FFBF02A0882145 +:108E5000AC8F0008908E000D31CC007FA08C000DEF +:108E60008F8600BC90C2000D00432024A0C4000DDA +:108E70008F8900BC913F000D37F90020A139000D0A +:108E80008F8800B88F9300BC8D070020AE6700105C +:108E90008D0A0024AE6A00148D1E0028AE7E0018D4 +:108EA0008D12002C0E000CF6AE72001C0A00103D54 +:108EB0008F9000D0960E00148E03000431CCFFFF7B +:108EC000000C10C000622021AF44003C8E1F000443 +:108ED0008F46003C03E6C8231B20003C0000000036 +:108EE0008E0F000025E200013C05001034B500089B +:108EF000AF420038AF550030000000000000000015 +:108F00000000000000000000000000000000000061 +:108F100000000000000000008F580000330B00200C +:108F20001160FFFD000000008F5304003C0D002085 +:108F3000AE1300088F570404AE17000CAF4D00307D +:108F4000000000003C0608008CC600442416000106 +:108F500010D600BD00000000961F00123C0508005E +:108F60008CA5004000BFC821A61900129609001464 +:108F700025270001A6070014960A00143144FFFFBC +:108F80005486FF498FB30010A60000140E000E1681 +:108F900030A5FFFF3C0408008C84002496030012D7 +:108FA0000044102300623023A60600120A00105964 +:108FB0008FB30010A08300018F8200AC2404000155 +:108FC000AC4400080A000FF08F8300D08E0200002E +:108FD0000A0010EA3C0500108F8200C08FA7001C19 +:108FE000921800D0920B00D0920E00D0331100FFE7 +:108FF000316900FF00117940000928C001E56021B6 +:1090000031C300FF036C50210003314000C2C8216E +:10901000255F0088AF9F00ACAF9900BCA1470088D6 +:109020009768003C03C020218F9100AC0E000CD645 +:109030003110FFFF00026B80020DC0253C0442008E +:109040008F8D00B803045825AE2B00048DA900387D +:109050008F8B00AC0000882100118100AD690018E1 +:109060008DAF00343C087FFF3504FFFFAD6F001C5F +:1090700091AC003E8D65001C8D660018000C190037 +:10908000000C770200A33821020E102500E3F82B14 +:1090900000C2C821033F5021AD67001CAD6A001813 +:1090A000AD60000CAD60001091B8003E24050005D5 +:1090B00003C45024A578001495A9000403C02021FE +:1090C000A569001691AF003EA56F002095B1000480 +:1090D000A5710022AD60002491AE003FA56E000294 +:1090E00091B0003E91AC003D01901023244300015B +:1090F000A16300018F8600AC8F9F00BCACDE00082E +:10910000A3E500008F9000BC8F9900B82405FFBF35 +:1091100096070002973800120247782433093FFF70 +:1091200001E98825A6110002921200022418FFDF2F +:10913000324E003F35CD0040A20D00028F8600BCAC +:109140008F8C00D02412FFFFACC000048D8B007CFC +:109150003C0C8000ACCB000890C2000D3043007F77 +:10916000A0C3000D8F8700BC90FF000D03E5C8244D +:10917000A0F9000D8F9100BC9229000D01387824D0 +:10918000A22F000D8F9000BCAE120010AE1500147F +:10919000920E00182415FF8002AE6825A20D00185B +:1091A0008F8500BC8F8300B88CAB0018016C102435 +:1091B000004A3025ACA600189068003EA0A8001C0C +:1091C0008F9F00B88F8700BC8F9800D097F900045C +:1091D000A4F9001E0E0002138F0500848F8600D0B4 +:1091E000000279400002490090D200BC01E98821C8 +:1091F000004028213255000212A0000303D1202193 +:109200000002A8800095202190CD00BC31B200045E +:109210001240000333DF0003000540800088202156 +:10922000240600048F9E00BC00DFC8233327000300 +:1092300000875021AFCA00040E000CF6A665003866 +:109240000A0010388F9000D0961E00123C080800CB +:109250008D080024011E9021A61200120A00105948 +:109260008FB3001027BDFFE03C1808008F18005096 +:10927000AFB00010AFBF0018AFB10014AF8400B0A2 +:1092800093710074030478212410FF8031EE007F75 +:109290003225007F01F0582401DA68213C0C000AD5 +:1092A000A38500C401AC2821AF4B002494A9001071 +:1092B0009768000690A600620080382124020030E2 +:1092C0000109202330C300F0AF8500D010620019DF +:1092D0003090FFFF90AE0062240DFFF0240A005092 +:1092E00001AE6024318B00FF116A002F00000000E6 +:1092F00016000007241F0C00AF5F00248FB100147C +:109300008FBF00188FB0001003E0000827BD0020B9 +:109310000E000E1C02002021241F0C00AF5F002451 +:109320008FB100148FBF00188FB0001003E0000849 +:1093300027BD002094A200E094A400E290BF011396 +:10934000008218263079FFFF33E700C014E00009DF +:109350002F31000116000038000000005620FFE603 +:10936000241F0C000E000D18000000000A0011ED73 +:10937000241F0C001620FFDE000000000E000D1858 +:10938000000000001440FFDC241F0C001600002227 +:109390008F8300D0906901133122003FA062011336 +:1093A0000A0011ED241F0C0094AF00D48F8600D466 +:1093B00000E02821240400050E000C5C31F0FFFFC2 +:1093C0001440000524030003979100E600001821D3 +:1093D0002625FFFFA78500E68F5801B80700FFFE8E +:1093E0003C196013AF400180241F0C00AF50018472 +:1093F000007938253C101000AF4701888FB1001468 +:10940000AF5001B8AF5F00248FB000108FBF0018BD +:1094100003E0000827BD00200E000E1C02002021E2 +:109420005040FFB5241F0C008F8300D090690113BA +:109430000A0012163122003F0E000E1C02002021ED +:109440001440FFAD241F0C00122000078F8300D0B2 +:10945000906801133106003F34C20040A06201133E +:109460000A0011ED241F0C000E000D180000000072 +:109470005040FFA1241F0C008F8300D0906801137F +:109480003106003F0A00124634C20040AF9B00C8BC +:1094900003E00008AF8000EC3089FFFF0009404284 +:1094A0002D020041000921801440000200095040B3 +:1094B00024080040000830C0000811400046582130 +:1094C000256701A800E2C821272F007F2418FF800C +:1094D00001F818240064302100CA702125CC00FF57 +:1094E000240DFF00018D202425650088240A0088B2 +:1094F0003C010800AC2A004C3C010800AC2500509F +:10950000AF8400D43C010800AC2900603C01080095 +:10951000AC2800643C010800AC2700543C01080062 +:10952000AC2300583C010800AC26005C03E00008B6 +:1095300000000000308300FF30C6FFFF30E400FF72 +:109540008F4201B80440FFFE00034C00012438257F +:109550003C08600000E820253C031000AF45018076 +:10956000AF460184AF44018803E00008AF4301B86F +:109570008F86001C3C096012352700108CCB00043C +:109580003C0C600E35850010316A00062D48000144 +:10959000ACE800C48CC40004ACA431808CC20008C8 +:1095A00094C30002ACA2318403E00008A78300E466 +:1095B0003C0308008C6300508F8400E88F86001CF9 +:1095C0002402FF800064C0210302C824AF59002890 +:1095D0008CCD00043305007F00BA78213C0E000CCE +:1095E00001EE2821ACAD00588CC80008AF8500D032 +:1095F0003C076012ACA8005C8CCC001034E8001072 +:10960000ACAC000C8CCB000CACAB000894AA0014E2 +:109610003C0208008C42004425490001A4A9001422 +:1096200094A400143083FFFF106200178F8400D0D1 +:109630003C0A08008D4A0040A4AA00128CCE0018F3 +:10964000AC8E00248CCD0014AC8D00208CC700188B +:10965000AC87002C8CCC001424060001AC8C0028B4 +:109660008D0B00BC5166001A8D0200B48D0200B84B +:10967000A482003A948F003AA48F003C948800D4CE +:1096800003E000083102FFFF3C0908008D29002497 +:10969000A4A000148F8400D0A4A900128CCE0018BE +:1096A000AC8E00248CCD0014AC8D00208CC700182B +:1096B000AC87002C8CCC001424060001AC8C002854 +:1096C0008D0B00BC5566FFEA8D0200B88D0200B418 +:1096D000A482003A948F003AA48F003C948800D46E +:1096E00003E000083102FFFF8F86001C3C0C0800DD +:1096F0008D8C0050240BFF808CCD00083C03000CA7 +:10970000000D51C0018A4021010B4824AF8A00E8B6 +:10971000AF49002890C700073105007F00BA10212B +:109720000043282130E4000410800039AF8500D0C8 +:1097300090CF000731EE000811C000380000000093 +:109740008CD9000C8CC400140324C02B13000030EF +:10975000000000008CC2000CACA200648CCD00188C +:109760002402FFF8ACAD00688CCC0010ACAC0080DB +:109770008CCB000CACAB00848CCA001CACAA007C67 +:1097800090A900BC01224024A0A800BC90C30007FF +:109790003067000810E000048F8500D090AF00BC57 +:1097A00035EE0001A0AE00BC90D9000733380001AF +:1097B000130000088F8300D08F8700D0240400346A +:1097C00090E800BC35030002A0E300BC8F8300D00A +:1097D000AC6400C090C900073126000210C000052B +:1097E00000000000906A00BC35420004A06200BC8A +:1097F0008F8300D09065011330AD003FA06D011341 +:109800008F8C00D0958B00D403E000083162FFFFFD +:109810008CC200140A001305000000000A001306A1 +:10982000ACA0006427BDFFD8AFB000108F90001C23 +:10983000AFBF0024AFB40020AFB20018AFB1001426 +:10984000AFB3001C9613000E3C07600A3C14600680 +:109850003264FFFF369300100E00125534F40410EA +:109860008F8400D43C11600E0E00099B363100102D +:10987000920E00153C0708008CE700603C12601255 +:1098800031CD000FA38D00F08E0E00048E0D000868 +:1098900096080012961F00109619001A9618001EBE +:1098A000960F001C310CFFFF33EBFFFF332AFFFF45 +:1098B0003309FFFF31E6FFFF3C010800AC2B0040FD +:1098C0003C010800AC2C00243C010800AC2A0044F8 +:1098D000AE293178AE26317C92020015960300162F +:1098E00036520010304400FF3065FFFF3C06080090 +:1098F0008CC60064AE243188AE4500B492080014D2 +:1099000096190018241F0001011FC004332FFFFF08 +:109910003C0508008CA50058AE5800B8AE4F00BCFE +:10992000920C0014AF8E00D8AF8D00DC318B00FF9D +:10993000AE4B00C0920A0015AE670048AE66004C00 +:10994000314900FFAE4900C8AE65007C3C03080009 +:109950008C6300503C0408008C84004C3C080800D8 +:109960008D0800543C0208008C42005C8FBF00242C +:10997000AE6300808FB00010AE8300748FB3001C04 +:10998000AE22319CAE4200DCAE2731A0AE2631A41F +:10999000AE24318CAE233190AE283194AE2531986F +:1099A000AE870050AE860054AE8500708FB10014B3 +:1099B000AE4700E0AE4600E4AE4400CCAE4300D07B +:1099C000AE4800D4AE4500D88FB400208FB2001846 +:1099D00003E0000827BD002827BDFFE0AFB1001459 +:1099E000AFBF0018241100010E000845AFB00010F1 +:1099F00010510005978400E6978300CC0083102B5C +:109A0000144000088F8500D4240700028FBF00187F +:109A10008FB100148FB0001000E0102103E00008A7 +:109A200027BD00200E000C7A24040005AF8200E858 +:109A30001040FFF6240700020E0008498F90001C1A +:109A4000979F00E68F9900E88F8D00C827EF0001EF +:109A5000240E0050AF590020A78F00E6A1AE0000F1 +:109A60003C0C08008D8C00648F8600C8240A80009E +:109A7000000C5E00ACCB0074A4C0000694C9000AC0 +:109A8000241FFF803C0D000C012AC024A4D8000A2A +:109A900090C8000A24182000011F1825A0C3000A3E +:109AA0008F8700C8A0E000788F8500C800003821AB +:109AB000A0A000833C0208008C4200508F8400E884 +:109AC0000044782101FFC824AF590028960B0002FA +:109AD00031EE007F01DA6021018D3021A4CB00D46A +:109AE000960A0002AF8600D03C0E000425492401EE +:109AF000A4C900E68E080004ACC800048E03000868 +:109B0000ACC30000A4C00010A4C00014A0C000D0CA +:109B10008F8500D02403FFBFA0A000D13C04080023 +:109B20008C8400648F8200D0A04400D28E1F000C71 +:109B30008F8A00D0978F00E4AD5F001C8E19001053 +:109B400024100030AD590018A5400030A551005434 +:109B5000A5510056A54F0016AD4E0068AD580080C7 +:109B6000AD580084914D006231AC000F358B001070 +:109B7000A14B00628F8600D090C900633128007F1E +:109B8000A0C800638F8400D02406FFFF9085006387 +:109B900000A31024A08200638F9100D000E0102168 +:109BA000923F00BC37F90001A23900BC8F8A00D077 +:109BB000938F00F0AD580064AD5000C0914E00D3BB +:109BC000000F690031CC000F018D5825A14B00D347 +:109BD0008F8500D08F8900DCACA900E88F8800D881 +:109BE0008FBF00188FB100148FB0001027BD002068 +:109BF000ACA800ECA4A600D6A4A000E0A4A000E2BB +:109C000003E000080000000027BDFFE0AFB0001037 +:109C10008F90001CAFB10014AFBF00188E19000464 +:109C20003C1808008F180050240FFF80001989C0CD +:109C30000238702131CD007F01CF602401BA50215C +:109C40003C0B000CAF4C0028014B4021950900D47F +:109C5000950400D68E0700043131FFFFAF8800D095 +:109C60000E000913000721C08E0600048F8300C870 +:109C7000000629C0AF4500209064003E30820040BD +:109C8000144000068F8400D0341FFFFF948300D659 +:109C90003062FFFF145F000400000000948400D6CF +:109CA0000E0008A83084FFFF8E050004022030213A +:109CB0008FBF00188FB100148FB000102404002251 +:109CC00000003821000529C00A00127C27BD0020B1 +:109CD00027BDFFE0AFB100143091FFFFAFB000101F +:109CE000AFBF00181220001D000080218F86001CCD +:109CF0008CC500002403000600053F020005140285 +:109D000030E4000714830015304500FF2CA800063E +:109D10001100004D000558803C0C0800258C57D4DC +:109D2000016C50218D490000012000080000000056 +:109D30008F8E00EC240D000111CD005900000000B1 +:109D4000260B00013170FFFF24CA00200211202BD6 +:109D5000014030211480FFE6AF8A001C0200102170 +:109D60008FBF00188FB100148FB0001003E00008FF +:109D700027BD0020938700CE14E00038240400148F +:109D80000E001338000000008F86001C2402000122 +:109D90000A00147FAF8200EC8F8900EC24080002D7 +:109DA0001128003B2404001300002821000030216A +:109DB000240700010E00127C000000000A00147F3E +:109DC0008F86001C8F8700EC2405000214E5FFF647 +:109DD000240400120E0012E9000000008F8500E844 +:109DE00000403021240400120E00127C00003821B3 +:109DF0000A00147F8F86001C8F8300EC241F000351 +:109E0000147FFFD0260B00010E00129B0000000003 +:109E10008F8500E800403021240200022404001055 +:109E200000003821AF8200EC0E00127C0000000020 +:109E30000A00147F8F86001C8F8F00EC240600021E +:109E400011E6000B0000000024040010000028218F +:109E5000000030210A00149C240700010000282182 +:109E60000E00127C000030210A00147F8F86001C37 +:109E70000E0013A500000000144000128F99001C72 +:109E80008F86001C240200030A00147FAF8200ECBE +:109E90000E001431000000000A00147F8F86001CA1 +:109EA0000E00128B000000002402000224040014A3 +:109EB0000000282100003021000038210A0014B9D8 +:109EC000AF8200EC004038212404001097380002D3 +:109ED000000028210E00127C3306FFFF0A00147FC9 +:109EE0008F86001C8F8400C83C077FFF34E6FFFF8D +:109EF0008C8500742402000100A61824AC83007431 +:109F000003E00008A082000510A000362CA200800B +:109F1000274A04003C0B000524090080104000077C +:109F20002408008030A6000F00C540212D030081C9 +:109F30001460000200A0482124080080AF4B0030CC +:109F400000000000000000000000000011000009F7 +:109F500000003821014030218C8D000024E70004EE +:109F600000E8602BACCD0000248400041580FFFACB +:109F700024C60004000000000000000000000000F3 +:109F80003C0E0006010E3825AF47003000000000EF +:109F900000000000000000008F4F000031E80010BA +:109FA0001100FFFD000000008F42003C8F43003C89 +:109FB0000049C8210323C02B130000040000000047 +:109FC0008F4C003825860001AF4600388F47003C93 +:109FD00000A9282300E96821AF4D003C14A0FFCE62 +:109FE0002CA2008003E000080000000027BDFFD085 +:109FF0003C020002AFB100143C11000CAF45003828 +:10A00000AFB3001CAF46003C00809821AF42003047 +:10A0100024050088AF44002803512021AFBF002849 +:10A02000AFB50024AFB40020AFB200180E0014F199 +:10A03000AFB000103C1F08008FFF004C3C18080018 +:10A040008F1800642410FF8003F3A82132B9007F29 +:10A0500002B078240018A0C0033A70210018914083 +:10A0600001D12021AF4F00280E0014F10254282105 +:10A070003C0D08008DAD00502405012001B358218E +:10A08000316C007F01705024019A48210131202158 +:10A090000E0014F1AF4A00283C0808008D08005457 +:10A0A0003C0508008CA500640113382130E6007FD0 +:10A0B00000F0182400DA202100912021AF4300286D +:10A0C0000E0014F1000529403C0208008C420058A3 +:10A0D0003C1008008E1000601200001C0053882104 +:10A0E0002415FF800A0015743C14000C3226007FF2 +:10A0F0000235182400DA202102402821AF4300282D +:10A10000009420210E0014F12610FFC01200000F51 +:10A11000023288212E05004110A0FFF42412100005 +:10A120003226007F001091800235182400DA2021A9 +:10A1300002402821AF430028009420210E0014F192 +:10A14000000080211600FFF3023288213C0B08003A +:10A150008D6B005C240AFF802405000201734021FE +:10A16000010A4824AF4900283C0408009484006296 +:10A170003110007F021A88213C07000C0E000CAA47 +:10A180000227982100402821026020218FBF00284B +:10A190008FB500248FB400208FB3001C8FB200183D +:10A1A0008FB100148FB000100A0014F127BD0030E9 +:10A1B0008F83001C8C62000410400003000000002C +:10A1C00003E00008000000008C6400108C650008AB +:10A1D0000A00152A8C66000C000000000000001B1D +:10A1E0000000000F0000000A000000080000000648 +:10A1F000000000050000000500000004000000044D +:10A200000000000300000003000000030000000342 +:10A210000000000300000002000000020000000235 +:10A220000000000200000002000000020000000226 +:10A230000000000200000002000000020000000216 +:10A240000000000200000002000000020000000206 +:10A2500000000001000000010000000108000F24C0 +:10A2600008000D6C08000FB80800106008000F4CC3 +:10A2700008000F8C0800119408000D88080011B820 +:10A2800008000DD8080015540800151C08000D889A +:10A2900008000D8808000D880800124008001240D0 +:10A2A00008000D8808000D88080014E008000D88DB +:10A2B00008000D8808000D8808000D88080013B4F8 +:10A2C00008000D8808000D8808000D8808000D881A +:10A2D00008000D8808000D8808000D8808000D880A +:10A2E00008000D8808000D8808000D8808000D88FA +:10A2F00008000D8808000D8808000FAC08000D88C4 +:10A3000008000D880800167808000D8808000D88E0 +:10A3100008000D8808000D8808000D8808000D88C9 +:10A3200008000D8808000D8808000D8808000D88B9 +:10A3300008000D8808000D8808000D8808000D88A9 +:10A3400008000D8808000D8808000D88080014100A +:10A3500008000D8808000D8808001334080012A4B6 +:10A3600008001E2C08001EFC08001F1408001F28EF +:10A3700008001F3808001E2C08001E2C08001E2C88 +:10A3800008001ED808002E1408002E1C08002DE41A +:10A3900008002DF008002DFC08002E08080052F4DB +:10A3A000080052B40800528008005254080052308D +:10A3B000080051EC0A000C840000000000000000BE +:10A3C0000000000D727870362E322E33000000002F +:10A3D000060203030000000000000001000000006E +:10A3E000000000000000000000000000000000006D +:10A3F000000000000000000000000000000000005D +:10A40000000000000000000000000000000000004C +:10A41000000000000000000000000000000000003C +:10A42000000000000000000000000000000000002C +:10A43000000000000000000000000000000000001C +:10A44000000000000000000000000000000000000C +:10A4500000000000000000000000000000000000FC +:10A4600000000000000000000000000000000000EC +:10A4700000000000000000000000000000000000DC +:10A4800000000000000000000000000000000000CC +:10A4900000000000000000000000000000000000BC +:10A4A00000000000000000000000000000000000AC +:10A4B000000000000000000000000000000000009C +:10A4C000000000000000000000000000000000008C +:10A4D000000000000000000000000000000000007C +:10A4E000000000000000000000000000000000006C +:10A4F000000000000000000000000000000000005C +:10A50000000000000000000000000000000000004B +:10A51000000000000000000000000000000000003B +:10A52000000000000000000000000000000000002B +:10A53000000000000000000000000000000000001B +:10A54000000000000000000000000000000000000B +:10A5500000000000000000000000000000000000FB +:10A5600000000000000000000000000000000000EB +:10A5700000000000000000000000000000000000DB +:10A5800000000000000000000000000000000000CB +:10A5900000000000000000000000000000000000BB +:10A5A00000000000000000000000000000000000AB +:10A5B000000000000000000000000000000000009B +:10A5C000000000000000000000000000000000008B +:10A5D000000000000000000000000000000000007B +:10A5E000000000000000000000000000000000006B +:10A5F000000000000000000000000000000000005B +:10A60000000000000000000000000000000000004A +:10A61000000000000000000000000000000000003A +:10A62000000000000000000000000000000000002A +:10A63000000000000000000000000000000000001A +:10A64000000000000000000000000000000000000A +:10A6500000000000000000000000000000000000FA +:10A6600000000000000000000000000000000000EA +:10A6700000000000000000000000000000000000DA +:10A6800000000000000000000000000000000000CA +:10A6900000000000000000000000000000000000BA +:10A6A00000000000000000000000000000000000AA +:10A6B000000000000000000000000000000000009A +:10A6C000000000000000000000000000000000008A +:10A6D000000000000000000000000000000000007A +:10A6E000000000000000000000000000000000006A +:10A6F000000000000000000000000000000000005A +:10A700000000000000000000000000000000000049 +:10A710000000000000000000000000000000000039 +:10A720000000000000000000000000000000000029 +:10A730000000000000000000000000000000000019 +:10A740000000000000000000000000000000000009 +:10A7500000000000000000000000000000000000F9 +:10A7600000000000000000000000000000000000E9 +:10A7700000000000000000000000000000000000D9 +:10A7800000000000000000000000000000000000C9 +:10A7900000000000000000000000000000000000B9 +:10A7A00000000000000000000000000000000000A9 +:10A7B0000000000000000000000000000000000099 +:10A7C0000000000000000000000000000000000089 +:10A7D0000000000000000000000000000000000079 +:10A7E0000000000000000000000000000000000069 +:10A7F0000000000000000000000000000000000059 +:10A800000000000000000000000000000000000048 +:10A810000000000000000000000000000000000038 +:10A820000000000000000000000000000000000028 +:10A830000000000000000000000000000000000018 +:10A840000000000000000000000000000000000008 +:10A8500000000000000000000000000000000000F8 +:10A8600000000000000000000000000000000000E8 +:10A8700000000000000000000000000000000000D8 +:10A8800000000000000000000000000000000000C8 +:10A8900000000000000000000000000000000000B8 +:10A8A00000000000000000000000000000000000A8 +:10A8B0000000000000000000000000000000000098 +:10A8C0000000000000000000000000000000000088 +:10A8D0000000000000000000000000000000000078 +:10A8E0000000000000000000000000000000000068 +:10A8F0000000000000000000000000000000000058 +:10A900000000000000000000000000000000000047 +:10A910000000000000000000000000000000000037 +:10A920000000000000000000000000000000000027 +:10A930000000000000000000000000000000000017 +:10A940000000000000000000000000000000000007 +:10A9500000000000000000000000000000000000F7 +:10A9600000000000000000000000000000000000E7 +:10A9700000000000000000000000000000000000D7 +:10A9800000000000000000000000000000000000C7 +:10A9900000000000000000000000000000000000B7 +:10A9A00000000000000000000000000000000000A7 +:10A9B0000000000000000000000000000000000097 +:10A9C0000000000000000000000000000000000087 +:10A9D0000000000000000000000000000000000077 +:10A9E0000000000000000000000000000000000067 +:10A9F0000000000000000000000000000000000057 +:10AA00000000000000000000000000000000000046 +:10AA10000000000000000000000000000000000036 +:10AA20000000000000000000000000000000000026 +:10AA30000000000000000000000000000000000016 +:10AA40000000000000000000000000000000000006 +:10AA500000000000000000000000000000000000F6 +:10AA600000000000000000000000000000000000E6 +:10AA700000000000000000000000000000000000D6 +:10AA800000000000000000000000000000000000C6 +:10AA900000000000000000000000000000000000B6 +:10AAA00000000000000000000000000000000000A6 +:10AAB0000000000000000000000000000000000096 +:10AAC0000000000000000000000000000000000086 +:10AAD0000000000000000000000000000000000076 +:10AAE0000000000000000000000000000000000066 +:10AAF0000000000000000000000000000000000056 +:10AB00000000000000000000000000000000000045 +:10AB10000000000000000000000000000000000035 +:10AB20000000000000000000000000000000000025 +:10AB30000000000000000000000000000000000015 +:10AB40000000000000000000000000000000000005 +:10AB500000000000000000000000000000000000F5 +:10AB600000000000000000000000000000000000E5 +:10AB700000000000000000000000000000000000D5 +:10AB800000000000000000000000000000000000C5 +:10AB900000000000000000000000000000000000B5 +:10ABA00000000000000000000000000000000000A5 +:10ABB0000000000000000000000000000000000095 +:10ABC0000000000000000000000000000000000085 +:10ABD0000000000000000000000000000000000075 +:10ABE0000000000000000000000000000000000065 +:10ABF0000000000000000000000000000000000055 +:10AC00000000000000000000000000000000000044 +:10AC10000000000000000000000000000000000034 +:10AC20000000000000000000000000000000000024 +:10AC30000000000000000000000000000000000014 +:10AC40000000000000000000000000000000000004 +:10AC500000000000000000000000000000000000F4 +:10AC600000000000000000000000000000000000E4 +:10AC700000000000000000000000000000000000D4 +:10AC800000000000000000000000000000000000C4 +:10AC900000000000000000000000000000000000B4 +:10ACA00000000000000000000000000000000000A4 +:10ACB0000000000000000000000000000000000094 +:10ACC0000000000000000000000000000000000084 +:10ACD0000000000000000000000000000000000074 +:10ACE0000000000000000000000000000000000064 +:10ACF0000000000000000000000000000000000054 +:10AD00000000000000000000000000000000000043 +:10AD10000000000000000000000000000000000033 +:10AD20000000000000000000000000000000000023 +:10AD30000000000000000000000000000000000013 +:10AD40000000000000000000000000000000000003 +:10AD500000000000000000000000000000000000F3 +:10AD600000000000000000000000000000000000E3 +:10AD700000000000000000000000000000000000D3 +:10AD800000000000000000000000000000000000C3 +:10AD900000000000000000000000000000000000B3 +:10ADA00000000000000000000000000000000000A3 +:10ADB0000000000000000000000000000000000093 +:10ADC0000000000000000000000000000000000083 +:10ADD0000000000000000000000000000000000073 +:10ADE0000000000000000000000000000000000063 +:10ADF0000000000000000000000000000000000053 +:10AE00000000000000000000000000000000000042 +:10AE10000000000000000000000000000000000032 +:10AE20000000000000000000000000000000000022 +:10AE30000000000000000000000000000000000012 +:10AE40000000000000000000000000000000000002 +:10AE500000000000000000000000000000000000F2 +:10AE600000000000000000000000000000000000E2 +:10AE700000000000000000000000000000000000D2 +:10AE800000000000000000000000000000000000C2 +:10AE900000000000000000000000000000000000B2 +:10AEA00000000000000000000000000000000000A2 +:10AEB0000000000000000000000000000000000092 +:10AEC0000000000000000000000000000000000082 +:10AED0000000000000000000000000000000000072 +:10AEE0000000000000000000000000000000000062 +:10AEF0000000000000000000000000000000000052 +:10AF00000000000000000000000000000000000041 +:10AF10000000000000000000000000000000000031 +:10AF20000000000000000000000000000000000021 +:10AF30000000000000000000000000000000000011 +:10AF40000000000000000000000000000000000001 +:10AF500000000000000000000000000000000000F1 +:10AF600000000000000000000000000000000000E1 +:10AF700000000000000000000000000000000000D1 +:10AF800000000000000000000000000000000000C1 +:10AF900000000000000000000000000000000000B1 +:10AFA00000000000000000000000000000000000A1 +:10AFB0000000000000000000000000000000000091 +:10AFC0000000000000000000000000000000000081 +:10AFD0000000000000000000000000000000000071 +:10AFE0000000000000000000000000000000000061 +:10AFF0000000000000000000000000000000000051 +:10B000000000000000000000000000000000000040 +:10B010000000000000000000000000000000000030 +:10B020000000000000000000000000000000000020 +:10B030000000000000000000000000000000000010 +:10B040000000000000000000000000000000000000 +:10B0500000000000000000000000000000000000F0 +:10B0600000000000000000000000000000000000E0 +:10B0700000000000000000000000000000000000D0 +:10B0800000000000000000000000000000000000C0 +:10B0900000000000000000000000000000000000B0 +:10B0A00000000000000000000000000000000000A0 +:10B0B0000000000000000000000000000000000090 +:10B0C0000000000000000000000000000000000080 +:10B0D0000000000000000000000000000000000070 +:10B0E0000000000000000000000000000000000060 +:10B0F0000000000000000000000000000000000050 +:10B10000000000000000000000000000000000003F +:10B11000000000000000000000000000000000002F +:10B12000000000000000000000000000000000001F +:10B13000000000000000000000000000000000000F +:10B1400000000000000000000000000000000000FF +:10B1500000000000000000000000000000000000EF +:10B1600000000000000000000000000000000000DF +:10B1700000000000000000000000000000000000CF +:10B1800000000000000000000000000000000000BF +:10B1900000000000000000000000000000000000AF +:10B1A000000000000000000000000000000000009F +:10B1B000000000000000000000000000000000008F +:10B1C000000000000000000000000000000000007F +:10B1D000000000000000000000000000000000006F +:10B1E000000000000000000000000000000000005F +:10B1F000000000000000000000000000000000004F +:10B20000000000000000000000000000000000003E +:10B21000000000000000000000000000000000002E +:10B22000000000000000000000000000000000001E +:10B23000000000000000000000000000000000000E +:10B2400000000000000000000000000000000000FE +:10B2500000000000000000000000000000000000EE +:10B2600000000000000000000000000000000000DE +:10B2700000000000000000000000000000000000CE +:10B2800000000000000000000000000000000000BE +:10B2900000000000000000000000000000000000AE +:10B2A000000000000000000000000000000000009E +:10B2B000000000000000000000000000000000008E +:10B2C000000000000000000000000000000000007E +:10B2D000000000000000000000000000000000006E +:10B2E000000000000000000000000000000000005E +:10B2F000000000000000000000000000000000004E +:10B30000000000000000000000000000000000003D +:10B31000000000000000000000000000000000002D +:10B32000000000000000000000000000000000001D +:10B33000000000000000000000000000000000000D +:10B3400000000000000000000000000000000000FD +:10B3500000000000000000000000000000000000ED +:10B3600000000000000000000000000000000000DD +:10B3700000000000000000000000000000000000CD +:10B3800000000000000000000000000000000000BD +:10B3900000000000000000000000000000000000AD +:10B3A000000000000000000000000000000000009D +:10B3B000000000000000000000000000000000008D +:10B3C000000000000000000000000000000000007D +:10B3D000000000000000000000000000000000006D +:10B3E000000000000000000000000000000000005D +:10B3F000000000000000000000000000000000004D +:10B40000000000000000000000000000000000003C +:10B41000000000000000000000000000000000002C +:10B42000000000000000000000000000000000001C +:10B43000000000000000000000000000000000000C +:10B4400000000000000000000000000000000000FC +:10B4500000000000000000000000000000000000EC +:10B4600000000000000000000000000000000000DC +:10B4700000000000000000000000000000000000CC +:10B4800000000000000000000000000000000000BC +:10B4900000000000000000000000000000000000AC +:10B4A000000000000000000000000000000000009C +:10B4B000000000000000000000000000000000008C +:10B4C000000000000000000000000000000000007C +:10B4D000000000000000000000000000000000006C +:10B4E000000000000000000000000000000000005C +:10B4F000000000000000000000000000000000004C +:10B50000000000000000000000000000000000003B +:10B51000000000000000000000000000000000002B +:10B52000000000000000000000000000000000001B +:10B53000000000000000000000000000000000000B +:10B5400000000000000000000000000000000000FB +:10B5500000000000000000000000000000000000EB +:10B5600000000000000000000000000000000000DB +:10B5700000000000000000000000000000000000CB +:10B5800000000000000000000000000000000000BB +:10B5900000000000000000000000000000000000AB +:10B5A000000000000000000000000000000000009B +:10B5B000000000000000000000000000000000008B +:10B5C000000000000000000000000000000000007B +:10B5D000000000000000000000000000000000006B +:10B5E000000000000000000000000000000000005B +:10B5F000000000000000000000000000000000004B +:10B60000000000000000000000000000000000003A +:10B61000000000000000000000000000000000002A +:10B62000000000000000000000000000000000001A +:10B63000000000000000000000000000000000000A +:10B6400000000000000000000000000000000000FA +:10B6500000000000000000000000000000000000EA +:10B6600000000000000000000000000000000000DA +:10B6700000000000000000000000000000000000CA +:10B6800000000000000000000000000000000000BA +:10B6900000000000000000000000000000000000AA +:10B6A000000000000000000000000000000000009A +:10B6B000000000000000000000000000000000008A +:10B6C000000000000000000000000000000000007A +:10B6D000000000000000000000000000000000006A +:10B6E000000000000000000000000000000000005A +:10B6F000000000000000000000000000000000004A +:10B700000000000000000000000000000000000039 +:10B710000000000000000000000000000000000029 +:10B720000000000000000000000000000000000019 +:10B730000000000000000000000000000000000009 +:10B7400000000000000000000000000000000000F9 +:10B7500000000000000000000000000000000000E9 +:10B7600000000000000000000000000000000000D9 +:10B7700000000000000000000000000000000000C9 +:10B7800000000000000000000000000000000000B9 +:10B7900000000000000000000000000000000000A9 +:10B7A0000000000000000000000000000000000099 +:10B7B0000000000000000000000000000000000089 +:10B7C0000000000000000000000000000000000079 +:10B7D0000000000000000000000000000000000069 +:10B7E0000000000000000000000000000000000059 +:10B7F0000000000000000000000000000000000049 +:10B800000000000000000000000000000000000038 +:10B810000000000000000000000000000000000028 +:10B820000000000000000000000000000000000018 +:10B830000000000000000000000000000000000008 +:10B8400000000000000000000000000000000000F8 +:10B8500000000000000000000000000000000000E8 +:10B8600000000000000000000000000000000000D8 +:10B8700000000000000000000000000000000000C8 +:10B8800000000000000000000000000000000000B8 +:10B8900000000000000000000000000000000000A8 +:10B8A0000000000000000000000000000000000098 +:10B8B0000000000000000000000000000000000088 +:10B8C0000000000000000000000000000000000078 +:10B8D0000000000000000000000000000000000068 +:10B8E0000000000000000000000000000000000058 +:10B8F0000000000000000000000000000000000048 +:10B900000000000000000000000000000000000037 +:10B910000000000000000000000000000000000027 +:10B920000000000000000000000000000000000017 +:10B930000000000000000000000000000000000007 +:10B9400000000000000000000000000000000000F7 +:10B9500000000000000000000000000000000000E7 +:10B9600000000000000000000000000000000000D7 +:10B9700000000000000000000000000000000000C7 +:10B9800000000000000000000000000000000000B7 +:10B9900000000000000000000000000000000000A7 +:10B9A0000000000000000000000000000000000097 +:10B9B0000000000000000000000000000000000087 +:10B9C0000000000000000000000000000000000077 +:10B9D0000000000000000000000000000000000067 +:10B9E0000000000000000000000000000000000057 +:10B9F0000000000000000000000000000000000047 +:10BA00000000000000000000000000000000000036 +:10BA10000000000000000000000000000000000026 +:10BA20000000000000000000000000000000000016 +:10BA30000000000000000000000000000000000006 +:10BA400000000000000000000000000000000000F6 +:10BA500000000000000000000000000000000000E6 +:10BA600000000000000000000000000000000000D6 +:10BA700000000000000000000000000000000000C6 +:10BA800000000000000000000000000000000000B6 +:10BA900000000000000000000000000000000000A6 +:10BAA0000000000000000000000000000000000096 +:10BAB0000000000000000000000000000000000086 +:10BAC0000000000000000000000000000000000076 +:10BAD0000000000000000000000000000000000066 +:10BAE0000000000000000000000000000000000056 +:10BAF0000000000000000000000000000000000046 +:10BB00000000000000000000000000000000000035 +:10BB10000000000000000000000000000000000025 +:10BB20000000000000000000000000000000000015 +:10BB30000000000000000000000000000000000005 +:10BB400000000000000000000000000000000000F5 +:10BB500000000000000000000000000000000000E5 +:10BB600000000000000000000000000000000000D5 +:10BB700000000000000000000000000000000000C5 +:10BB800000000000000000000000000000000000B5 +:10BB900000000000000000000000000000000000A5 +:10BBA0000000000000000000000000000000000095 +:10BBB0000000000000000000000000000000000085 +:10BBC0000000000000000000000000000000000075 +:10BBD0000000000000000000000000000000000065 +:10BBE0000000000000000000000000000000000055 +:10BBF0000000000000000000000000000000000045 +:10BC00000000000000000000000000000000000034 +:10BC10000000000000000000000000000000000024 +:10BC20000000000000000000000000000000000014 +:10BC30000000000000000000000000000000000004 +:10BC400000000000000000000000000000000000F4 +:10BC500000000000000000000000000000000000E4 +:10BC600000000000000000000000000000000000D4 +:10BC700000000000000000000000000000000000C4 +:10BC800000000000000000000000000000000000B4 +:10BC900000000000000000000000000000000000A4 +:10BCA0000000000000000000000000000000000094 +:10BCB0000000000000000000000000000000000084 +:10BCC0000000000000000000000000000000000074 +:10BCD0000000000000000000000000000000000064 +:10BCE0000000000000000000000000000000000054 +:10BCF0000000000000000000000000000000000044 +:10BD00000000000000000000000000000000000033 +:10BD10000000000000000000000000000000000023 +:10BD20000000000000000000000000000000000013 +:10BD30000000000000000000000000000000000003 +:10BD400000000000000000000000000000000000F3 +:10BD500000000000000000000000000000000000E3 +:10BD600000000000000000000000000000000000D3 +:10BD700000000000000000000000000000000000C3 +:10BD800000000000000000000000000000000000B3 +:10BD900000000000000000000000000000000000A3 +:10BDA0000000000000000000000000000000000093 +:10BDB0000000000000000000000000000000000083 +:10BDC0000000000000000000000000000000000073 +:10BDD0000000000000000000000000000000000063 +:10BDE0000000000000000000000000000000000053 +:10BDF0000000000000000000000000000000000043 +:10BE00000000000000000000000000000000000032 +:10BE10000000000000000000000000000000000022 +:10BE20000000000000000000000000000000000012 +:10BE30000000000000000000000000000000000002 +:10BE400000000000000000000000000000000000F2 +:10BE500000000000000000000000000000000000E2 +:10BE600000000000000000000000000000000000D2 +:10BE700000000000000000000000000000000000C2 +:10BE800000000000000000000000000000000000B2 +:10BE900000000000000000000000000000000000A2 +:10BEA0000000000000000000000000000000000092 +:10BEB0000000000000000000000000000000000082 +:10BEC0000000000000000000000000000000000072 +:10BED0000000000000000000000000000000000062 +:10BEE0000000000000000000000000000000000052 +:10BEF0000000000000000000000000000000000042 +:10BF00000000000000000000000000000000000031 +:10BF10000000000000000000000000000000000021 +:10BF20000000000000000000000000000000000011 +:10BF30000000000000000000000000000000000001 +:10BF400000000000000000000000000000000000F1 +:10BF500000000000000000000000000000000000E1 +:10BF600000000000000000000000000000000000D1 +:10BF700000000000000000000000000000000000C1 +:10BF800000000000000000000000000000000000B1 +:10BF900000000000000000000000000000000000A1 +:10BFA0000000000000000000000000000000000091 +:10BFB0000000000000000000000000000000000081 +:10BFC0000000000000000000000000000000000071 +:10BFD0000000000000000000000000000000000061 +:10BFE0000000000000000000000000000000000051 +:10BFF0000000000000000000000000000000000041 +:10C000000000000000000000000000000000000030 +:10C010000000000000000000000000000000000020 +:10C020000000000000000000000000000000000010 +:10C030000000000000000000000000000000000000 +:10C0400000000000000000000000000000000000F0 +:10C0500000000000000000000000000000000000E0 +:10C0600000000000000000000000000000000000D0 +:10C0700000000000000000000000000000000000C0 +:10C0800000000000000000000000000000000000B0 +:10C0900000000000000000000000000000000000A0 +:10C0A0000000000000000000000000000000000090 +:10C0B0000000000000000000000000000000000080 +:10C0C0000000000000000000000000000000000070 +:10C0D0000000000000000000000000000000000060 +:10C0E0000000000000000000000000000000000050 +:10C0F0000000000000000000000000000000000040 +:10C10000000000000000000000000000000000002F +:10C11000000000000000000000000000000000001F +:10C12000000000000000000000000000000000000F +:10C1300000000000000000000000000000000000FF +:10C1400000000000000000000000000000000000EF +:10C1500000000000000000000000000000000000DF +:10C1600000000000000000000000000000000000CF +:10C1700000000000000000000000000000000000BF +:10C1800000000000000000000000000000000000AF +:10C19000000000000000000000000000000000009F +:10C1A000000000000000000000000000000000008F +:10C1B000000000000000000000000000000000007F +:10C1C000000000000000000000000000000000006F +:10C1D000000000000000000000000000000000005F +:10C1E000000000000000000000000000000000004F +:10C1F000000000000000000000000000000000003F +:10C20000000000000000000000000000000000002E +:10C21000000000000000000000000000000000001E +:10C22000000000000000000000000000000000000E +:10C2300000000000000000000000000000000000FE +:10C2400000000000000000000000000000000000EE +:10C2500000000000000000000000000000000000DE +:10C2600000000000000000000000000000000000CE +:10C2700000000000000000000000000000000000BE +:10C2800000000000000000000000000000000000AE +:10C29000000000000000000000000000000000009E +:10C2A000000000000000000000000000000000008E +:10C2B000000000000000000000000000000000007E +:10C2C000000000000000000000000000000000006E +:10C2D000000000000000000000000000000000005E +:10C2E000000000000000000000000000000000004E +:10C2F000000000000000000000000000000000003E +:10C30000000000000000000000000000000000002D +:10C31000000000000000000000000000000000001D +:10C32000000000000000000000000000000000000D +:10C3300000000000000000000000000000000000FD +:10C3400000000000000000000000000000000000ED +:10C3500000000000000000000000000000000000DD +:10C3600000000000000000000000000000000000CD +:10C3700000000000000000000000000000000000BD +:10C3800000000000000000000000000000000000AD +:10C39000000000000000000000000000000000009D +:10C3A000000000000000000000000000000000008D +:10C3B000000000000000000000000000000000007D +:10C3C000000000000000000000000000000000006D +:10C3D000000000000000000000000000000000005D +:10C3E000000000000000000000000000000000004D +:10C3F000000000000000000000000000000000003D +:10C40000000000000000000000000000000000002C +:10C41000000000000000000000000000000000001C +:10C42000000000000000000000000000000000000C +:10C4300000000000000000000000000000000000FC +:10C4400000000000000000000000000000000000EC +:10C4500000000000000000000000000000000000DC +:10C4600000000000000000000000000000000000CC +:10C4700000000000000000000000000000000000BC +:10C4800000000000000000000000000000000000AC +:10C49000000000000000000000000000000000009C +:10C4A000000000000000000000000000000000008C +:10C4B000000000000000000000000000000000007C +:10C4C000000000000000000000000000000000006C +:10C4D000000000000000000000000000000000005C +:10C4E000000000000000000000000000000000004C +:10C4F000000000000000000000000000000000003C +:10C50000000000000000000000000000000000002B +:10C51000000000000000000000000000000000001B +:10C52000000000000000000000000000000000000B +:10C5300000000000000000000000000000000000FB +:10C5400000000000000000000000000000000000EB +:10C5500000000000000000000000000000000000DB +:10C5600000000000000000000000000000000000CB +:10C5700000000000000000000000000000000000BB +:10C5800000000000000000000000000000000000AB +:10C59000000000000000000000000000000000009B +:10C5A000000000000000000000000000000000008B +:10C5B000000000000000000000000000000000007B +:10C5C000000000000000000000000000000000006B +:10C5D000000000000000000000000000000000005B +:10C5E000000000000000000000000000000000004B +:10C5F000000000000000000000000000000000003B +:10C60000000000000000000000000000000000002A +:10C61000000000000000000000000000000000001A +:10C62000000000000000000000000000000000000A +:10C6300000000000000000000000000000000000FA +:10C6400000000000000000000000000000000000EA +:10C6500000000000000000000000000000000000DA +:10C6600000000000000000000000000000000000CA +:10C6700000000000000000000000000000000000BA +:10C6800000000000000000000000000000000000AA +:10C69000000000000000000000000000000000009A +:10C6A000000000000000000000000000000000008A +:10C6B000000000000000000000000000000000007A +:10C6C000000000000000000000000000000000006A +:10C6D000000000000000000000000000000000005A +:10C6E000000000000000000000000000000000004A +:10C6F000000000000000000000000000000000003A +:10C700000000000000000000000000000000000029 +:10C710000000000000000000000000000000000019 +:10C720000000000000000000000000000000000009 +:10C7300000000000000000000000000000000000F9 +:10C7400000000000000000000000000000000000E9 +:10C7500000000000000000000000000000000000D9 +:10C7600000000000000000000000000000000000C9 +:10C7700000000000000000000000000000000000B9 +:10C7800000000000000000000000000000000000A9 +:10C790000000000000000000000000000000000099 +:10C7A0000000000000000000000000000000000089 +:10C7B0000000000000000000000000000000000079 +:10C7C0000000000000000000000000000000000069 +:10C7D0000000000000000000000000000000000059 +:10C7E0000000000000000000000000000000000049 +:10C7F0000000000000000000000000000000000039 +:10C800000000000000000000000000000000000028 +:10C810000000000000000000000000000000000018 +:10C820000000000000000000000000000000000008 +:10C8300000000000000000000000000000000000F8 +:10C8400000000000000000000000000000000000E8 +:10C8500000000000000000000000000000000000D8 +:10C8600000000000000000000000000000000000C8 +:10C8700000000000000000000000000000000000B8 +:10C8800000000000000000000000000000000000A8 +:10C890000000000000000000000000000000000098 +:10C8A0000000000000000000000000000000000088 +:10C8B0000000000000000000000000000000000078 +:10C8C0000000000000000000000000000000000068 +:10C8D0000000000000000000000000000000000058 +:10C8E0000000000000000000000000000000000048 +:10C8F0000000000000000000000000000000000038 +:10C900000000000000000000000000000000000027 +:10C910000000000000000000000000000000000017 +:10C920000000000000000000000000000000000007 +:10C9300000000000000000000000000000000000F7 +:10C9400000000000000000000000000000000000E7 +:10C9500000000000000000000000000000000000D7 +:10C9600000000000000000000000000000000000C7 +:10C9700000000000000000000000000000000000B7 +:10C9800000000000000000000000000000000000A7 +:10C990000000000000000000000000000000000097 +:10C9A0000000000000000000000000000000000087 +:10C9B0000000000000000000000000000000000077 +:10C9C0000000000000000000000000000000000067 +:10C9D0000000000000000000000000000000000057 +:10C9E0000000000000000000000000000000000047 +:10C9F0000000000000000000000000000000000037 +:10CA00000000000000000000000000000000000026 +:10CA10000000000000000000000000000000000016 +:10CA20000000000000000000000000000000000006 +:10CA300000000000000000000000000000000000F6 +:10CA400000000000000000000000000000000000E6 +:10CA500000000000000000000000000000000000D6 +:10CA600000000000000000000000000000000000C6 +:10CA700000000000000000000000000000000000B6 +:10CA800000000000000000000000000000000000A6 +:10CA90000000000000000000000000000000000096 +:10CAA0000000000000000000000000000000000086 +:10CAB0000000000000000000000000000000000076 +:10CAC0000000000000000000000000000000000066 +:10CAD0000000000000000000000000000000000056 +:10CAE0000000000000000000000000000000000046 +:10CAF0000000000000000000000000000000000036 +:10CB00000000000000000000000000000000000025 +:10CB10000000000000000000000000000000000015 +:10CB20000000000000000000000000000000000005 +:10CB300000000000000000000000000000000000F5 +:10CB400000000000000000000000000000000000E5 +:10CB500000000000000000000000000000000000D5 +:10CB600000000000000000000000000000000000C5 +:10CB700000000000000000000000000000000000B5 +:10CB800000000000000000000000000000000000A5 +:10CB90000000000000000000000000000000000095 +:10CBA0000000000000000000000000000000000085 +:10CBB0000000000000000000000000000000000075 +:10CBC0000000000000000000000000000000000065 +:10CBD0000000000000000000000000000000000055 +:10CBE0000000000000000000000000000000000045 +:10CBF0000000000000000000000000000000000035 +:10CC00000000000000000000000000000000000024 +:10CC10000000000000000000000000000000000014 +:10CC20000000000000000000000000000000000004 +:10CC300000000000000000000000000000000000F4 +:10CC400000000000000000000000000000000000E4 +:10CC500000000000000000000000000000000000D4 +:10CC600000000000000000000000000000000000C4 +:10CC700000000000000000000000000000000000B4 +:10CC800000000000000000000000000000000000A4 +:10CC90000000000000000000000000000000000094 +:10CCA0000000000000000000000000000000000084 +:10CCB0000000000000000000000000000000000074 +:10CCC0000000000000000000000000000000000064 +:10CCD0000000000000000000000000000000000054 +:10CCE0000000000000000000000000000000000044 +:10CCF0000000000000000000000000000000000034 +:10CD00000000000000000000000000000000000023 +:10CD10000000000000000000000000000000000013 +:10CD20000000000000000000000000000000000003 +:10CD300000000000000000000000000000000000F3 +:10CD400000000000000000000000000000000000E3 +:10CD500000000000000000000000000000000000D3 +:10CD600000000000000000000000000000000000C3 +:10CD700000000000000000000000000000000000B3 +:10CD800000000000000000000000000000000000A3 +:10CD90000000000000000000000000000000000093 +:10CDA0000000000000000000000000000000000083 +:10CDB0000000000000000000000000000000000073 +:10CDC0000000000000000000000000000000000063 +:10CDD0000000000000000000000000000000000053 +:10CDE0000000000000000000000000000000000043 +:10CDF0000000000000000000000000000000000033 +:10CE00000000000000000000000000000000000022 +:10CE10000000000000000000000000000000000012 +:10CE20000000000000000000000000000000000002 +:10CE300000000000000000000000000000000000F2 +:10CE400000000000000000000000000000000000E2 +:10CE500000000000000000000000000000000000D2 +:10CE600000000000000000000000000000000000C2 +:10CE700000000000000000000000000000000000B2 +:10CE800000000000000000000000000000000000A2 +:10CE90000000000000000000000000000000000092 +:10CEA0000000000000000000000000000000000082 +:10CEB0000000000000000000000000000000000072 +:10CEC0000000000000000000000000000000000062 +:10CED0000000000000000000000000000000000052 +:10CEE0000000000000000000000000000000000042 +:10CEF0000000000000000000000000000000000032 +:10CF00000000000000000000000000000000000021 +:10CF10000000000000000000000000000000000011 +:10CF20000000000000000000000000000000000001 +:10CF300000000000000000000000000000000000F1 +:10CF400000000000000000000000000000000000E1 +:10CF500000000000000000000000000000000000D1 +:10CF600000000000000000000000000000000000C1 +:10CF700000000000000000000000000000000000B1 +:10CF800000000000000000000000000000000000A1 +:10CF90000000000000000000000000000000000091 +:10CFA0000000000000000000000000000000000081 +:10CFB0000000000000000000000000000000000071 +:10CFC0000000000000000000000000000000000061 +:10CFD0000000000000000000000000000000000051 +:10CFE0000000000000000000000000000000000041 +:10CFF0000000000000000000000000000000000031 +:10D000000000000000000000000000000000000020 +:10D010000000000000000000000000000000000010 +:10D020000000000000000000000000000000000000 +:10D0300000000000000000000000000000000000F0 +:10D0400000000000000000000000000000000000E0 +:10D0500000000000000000000000000000000000D0 +:10D0600000000000000000000000000000000000C0 +:10D0700000000000000000000000000000000000B0 +:10D0800000000000000000000000000000000000A0 +:10D090000000000000000000000000000000000090 +:10D0A0000000000000000000000000000000000080 +:10D0B0000000000000000000000000000000000070 +:10D0C0000000000000000000000000000000000060 +:10D0D0000000000000000000000000000000000050 +:10D0E0000000000000000000000000000000000040 +:10D0F0000000000000000000000000000000000030 +:10D10000000000000000000000000000000000001F +:10D11000000000000000000000000000000000000F +:10D1200000000000000000000000000000000000FF +:10D1300000000000000000000000000000000000EF +:10D1400000000000000000000000000000000000DF +:10D1500000000000000000000000000000000000CF +:10D1600000000000000000000000000000000000BF +:10D1700000000000000000000000000000000000AF +:10D18000000000000000000000000000000000009F +:10D19000000000000000000000000000000000008F +:10D1A000000000000000000000000000000000007F +:10D1B000000000000000000000000000000000006F +:10D1C000000000000000000000000000000000005F +:10D1D000000000000000000000000000000000004F +:10D1E000000000000000000000000000000000003F +:10D1F000000000000000000000000000000000002F +:10D20000000000000000000000000000000000001E +:10D21000000000000000000000000000000000000E +:10D2200000000000000000000000000000000000FE +:10D2300000000000000000000000000000000000EE +:10D2400000000000000000000000000000000000DE +:10D2500000000000000000000000000000000000CE +:10D2600000000000000000000000000000000000BE +:10D2700000000000000000000000000000000000AE +:10D28000000000000000000000000000000000009E +:10D29000000000000000000000000000000000008E +:10D2A000000000000000000000000000000000007E +:10D2B000000000000000000000000000000000006E +:10D2C000000000000000000000000000000000005E +:10D2D000000000000000000000000000000000004E +:10D2E000000000000000000000000000000000003E +:10D2F000000000000000000000000000000000002E +:10D30000000000000000000000000000000000001D +:10D31000000000000000000000000000000000000D +:10D3200000000000000000000000000000000000FD +:10D3300000000000000000000000000000000000ED +:10D3400000000000000000000000000000000000DD +:10D3500000000000000000000000000000000000CD +:10D3600000000000000000000000000000000000BD +:10D3700000000000000000000000000000000000AD +:10D38000000000000000000000000000000000009D +:10D39000000000000000000000000000000000008D +:10D3A000000000000000000000000000000000007D +:10D3B000000000000000000000000000000000006D +:10D3C000000000000000000000000000000000005D +:10D3D000000000000000000000000000000000004D +:10D3E000000000000000000000000000000000003D +:10D3F000000000000000000000000000000000002D +:10D40000000000000000000000000000000000001C +:10D41000000000000000000000000000000000000C +:10D4200000000000000000000000000000000000FC +:10D4300000000000000000000000000000000000EC +:10D4400000000000000000000000000000000000DC +:10D4500000000000000000000000000000000000CC +:10D4600000000000000000000000000000000000BC +:10D4700000000000000000000000000000000000AC +:10D48000000000000000000000000000000000009C +:10D49000000000000000000000000000000000008C +:10D4A000000000000000000000000000000000007C +:10D4B000000000000000000000000000000000006C +:10D4C000000000000000000000000000000000005C +:10D4D000000000000000000000000000000000004C +:10D4E000000000000000000000000000000000003C +:10D4F000000000000000000000000000000000002C +:10D50000000000000000000000000000000000001B +:10D51000000000000000000000000000000000000B +:10D5200000000000000000000000000000000000FB +:10D5300000000000000000000000000000000000EB +:10D5400000000000000000000000000000000000DB +:10D5500000000000000000000000000000000000CB +:10D5600000000000000000000000000000000000BB +:10D5700000000000000000000000000000000000AB +:10D58000000000000000000000000000000000009B +:10D59000000000000000008000000000000000000B +:10D5A000000000000000000000000000000000007B +:10D5B00000000000000000000000000A0000000061 +:10D5C0000000000000000000100000030000000048 +:10D5D0000000000D0000000D3C02080024427340D2 +:10D5E0003C030800246377CCAC4000000043202BB0 +:10D5F0001480FFFD244200043C1D080037BD7FFC61 +:10D6000003A0F0213C100800261032103C1C08003A +:10D61000279C73400E0010FE000000000000000D6B +:10D6200030A5FFFF30C600FF274301808F4201B8BD +:10D630000440FFFE24020002AC640000A465000860 +:10D64000A066000AA062000B3C021000AC67001844 +:10D6500003E00008AF4201B83C0360008C624FF861 +:10D660000440FFFE3C020200AC644FC0AC624FC4F9 +:10D670003C02100003E00008AC624FF89482000CFA +:10D680002486001400A0382100021302000210803A +:10D690000082402100C8102B1040005700000000FD +:10D6A00090C300002C6200095040005190C200015C +:10D6B000000310803C030800246372F00043102133 +:10D6C0008C420000004000080000000090C30001F0 +:10D6D0002402000A1462003A000000000106102330 +:10D6E0002C42000A1440003624C600028CE20000DE +:10D6F00034420100ACE2000090C2000090C300017F +:10D7000090C4000290C5000300031C000002160034 +:10D710000043102500042200004410250045102578 +:10D7200024C60004ACE2000490C2000090C30001D3 +:10D7300090C4000290C500030002160000031C0004 +:10D740000043102500042200004410250045102548 +:10D7500024C600040A000CB8ACE2000890C3000123 +:10D76000240200041462001624C6000290C20000C5 +:10D7700090C400018CE30000000212000044102558 +:10D780003463000424C60002ACE2000C0A000CB8AA +:10D79000ACE3000090C300012402000314620008FF +:10D7A00024C600028CE2000090C3000024C60001E1 +:10D7B00034420008A0E300100A000CB8ACE20000FC +:10D7C00003E000082402000190C3000124020002CB +:10D7D0001062000224C40002010020210A000CB8DB +:10D7E000008030210A000CB824C6000190C200015C +:10D7F0000A000CB800C2302103E00008000010212C +:10D8000027BDFFE8AFBF0014AFB000100E00130239 +:10D8100000808021936200052403FFFE0200202186 +:10D82000004310248FBF00148FB00010A3620005C6 +:10D830000A00130B27BD001827BDFFE8AFB000108A +:10D84000AFBF00140E000F3C0080802193620000E7 +:10D8500024030050304200FF14430004240201005E +:10D86000AF4201800A000D3002002021AF4001804C +:10D87000020020218FBF00148FB000100A000FE7B4 +:10D8800027BD001827BDFF80AFBE0078AFB700747A +:10D89000AFB20060AFBF007CAFB60070AFB5006C38 +:10D8A000AFB40068AFB30064AFB1005CAFB0005874 +:10D8B0008F5001283C0208008C4231A02403FF80D5 +:10D8C0009365003F0202102100431024AF42002460 +:10D8D0003C0208008C4231A09364000530B200FF86 +:10D8E000020210213042007F034218210004202749 +:10D8F0003C02000A0062182130840001AF8300144A +:10D900000000F0210000B82114800053AFA00050A7 +:10D9100093430116934401128F450104306300FFC5 +:10D920003C020001308400FF00A2282403431021A0 +:10D9300003441821245640002467400014A001CD60 +:10D940002402000193620000304300FF2402002003 +:10D950001062000524020050106200060000000062 +:10D960000A000D74000000000000000D0A000D7D8B +:10D97000AFA000303C1E080027DE738C0A000D7D2E +:10D98000AFA000303C0208008C4200DC24420001C1 +:10D990003C010800AC2200DC0E00139F00000000D8 +:10D9A0000A000F318FBF007C8F4201043C0300202E +:10D9B00092D3000D004310240002202B00042140CC +:10D9C000AFA400308F4301043C02004000621824E1 +:10D9D000146000023485004000802821326200205B +:10D9E000AFA500301440000234A6008000A0302112 +:10D9F00010C0000BAFA6003093C500088F67004C25 +:10DA00000200202100052B0034A5008130A5F08103 +:10DA10000E000C9B30C600FF0A000F2E0000000015 +:10DA20009362003E304200401040000F2402000488 +:10DA300056420007240200120200202100E02821A3 +:10DA40000E0013F702C030210A000F318FBF007C97 +:10DA500016420005000000000E000D2100002021EC +:10DA60000A000F318FBF007C9743011A96C4000E45 +:10DA700093620035326500043075FFFF00442004D6 +:10DA8000AFA400548ED1000410A000158ED400085D +:10DA90009362003E3042004010400007000000004A +:10DAA0000E0013E0022020211040000D00000000B5 +:10DAB0000A000F2E000000008F6200440222102393 +:10DAC0000440016A000000008F6200480222102317 +:10DAD00004410166240400160A000E218FC20004CE +:10DAE0008F6200480222102304400008000000005A +:10DAF0003C0208008C423100244200013C01080035 +:10DB0000AC2231000A000F23000000008F620040A9 +:10DB100002221023184000128F8400143C020800D7 +:10DB20008C423100327300FC0000A8212442000125 +:10DB30003C010800AC2231008F6300409482011C3C +:10DB4000022318233042FFFF0043102A50400010E8 +:10DB50002402000C8F6200400A000DF20222102302 +:10DB60009483011C9762003C0043102B1040000678 +:10DB7000000000009482011C00551023A482011CA7 +:10DB80000A000DF72402000CA480011C2402000CE2 +:10DB9000AFA200308F620040005120231880000D9A +:10DBA00002A4102A1440012600000000149500066B +:10DBB00002A410233A620001304200011440012007 +:10DBC0000000000002A41023022488210A000E098C +:10DBD0003055FFFF00002021326200021040001A81 +:10DBE000326200109362003E30420040504000110B +:10DBF0008FC200040E00130202002021240200182C +:10DC0000A362003F936200052403FFFE020020216F +:10DC1000004310240E00130BA362000524040039F6 +:10DC2000000028210E0013C9240600180A000F3036 +:10DC300024020001240400170040F809000000003D +:10DC40000A000F302402000110400108000000000B +:10DC50008F63004C8F620054028210231C4001032A +:10DC600002831023044200010060A021AFA4001829 +:10DC7000AFB10010AFB50014934201208F65004092 +:10DC80009763003C304200FF034210210044102102 +:10DC90008FA400543063FFFF244240000083182B00 +:10DCA0008FA40030AFA20020AFA50028008320255C +:10DCB000AFA40030AFA50024AFA0002CAFB4003457 +:10DCC0009362003E30420008504000118FC20000B5 +:10DCD00002C0202127A500380E000CB2AFA00038EA +:10DCE0005440000B8FC200008FA200383042010068 +:10DCF000504000078FC200008FA3003C8F6200607D +:10DD00000062102304430001AF6300608FC2000073 +:10DD10000040F80927A400108FA200303042000212 +:10DD200054400001327300FE9362003E30420040D6 +:10DD3000104000378FA200248F6200541682001A10 +:10DD40003262000124020014124200102A4200151F +:10DD500010400006240200162402000C12420007A4 +:10DD6000326200010A000E7D000000001242000530 +:10DD7000326200010A000E7D000000000A000E78E9 +:10DD80002417000E0A000E78241700100A000E7CDB +:10DD900024170012936200232403FFBD00431024C4 +:10DDA000A362002332620001104000198FA20024F8 +:10DDB0002402000C1242000E2A42000D1040000600 +:10DDC0002402000E2402000A124200078FA200243F +:10DDD0000A000E9524420001124200088FA200247E +:10DDE0000A000E95244200010A000E932417000831 +:10DDF0002402000E16E20002241700162417001059 +:10DE00008FA2002424420001AFA200248FA200248C +:10DE10008FA300148F76004000431021AF620040B2 +:10DE20008F8200149442011C104000090000000081 +:10DE30008F6200488F6400409763003C00441023C9 +:10DE40003063FFFF0043102A104000088FA20054E7 +:10DE5000936400368F6300403402FFFC008210049C +:10DE600000621821AF6300488FA200548FA60030D3 +:10DE70000282902130C200081040000E0000000015 +:10DE80008F6200581642000430C600FF9742011A04 +:10DE90005040000134C6001093C500088FA700341D +:10DEA0000200202100052B0034A500800E000C9BF1 +:10DEB00030A5F0808F620040005610231840001BF0 +:10DEC0008FA200183C0208008C42319830420010AA +:10DED0001040000D24020001976200681440000AFF +:10DEE000240200018F8200149442011C1440000699 +:10DEF00024020001A76200689742007A244200646D +:10DF00000A000EE9A7620012A76200120E001302B7 +:10DF1000020020219362007D2403000102002021E1 +:10DF2000344200010A000EE7AFA300501840000A77 +:10DF3000000000000E001302020020219362007D09 +:10DF40002403000102002021AFA30050344200044A +:10DF50000E00130BA362007D9362003E304200402E +:10DF60001440000C326200011040000A0000000062 +:10DF70008F6300408FC20004240400182463000152 +:10DF80000040F809AF6300408FA200300A000F3054 +:10DF9000304200048F620058105200100000000050 +:10DFA0008F620018022210231C4000082404000184 +:10DFB0008F62001816220009000000008F62001C0A +:10DFC000028210230440000500000000AF720058D8 +:10DFD000AFA40050AF710018AF74001C12E0000B2A +:10DFE0008FA200500E00130202002021A377003FF1 +:10DFF0000E00130B0200202102E030212404003720 +:10E000000E0013C9000028218FA200501040000309 +:10E01000000000000E000CA90200202112A0000543 +:10E02000000018218FA2003030420004504000113F +:10E0300000601021240300010A000F30006010214D +:10E040000E001302020020219362007D02002021B5 +:10E05000344200040E00130BA362007D0E000CA9D5 +:10E06000020020210A000F3024020001AF400044CA +:10E07000240200018FBF007C8FBE00788FB7007430 +:10E080008FB600708FB5006C8FB400688FB30064DA +:10E090008FB200608FB1005C8FB0005803E00008C1 +:10E0A00027BD00808F4201B80440FFFE2402080013 +:10E0B000AF4201B803E00008000000003C02000885 +:10E0C00003421021944200483084FFFF2484001250 +:10E0D0003045FFFF10A0001700A4102B10400016C1 +:10E0E00024020003934201202403001AA343018B5E +:10E0F000304200FF2446FFFE8F82000000A6182B4E +:10E100003863000100021382004310241040000510 +:10E110008F84000434820001A746019403E00008C4 +:10E12000AF8200042402FFFE0082102403E00008F6 +:10E13000AF8200042402000303E00008A342018B25 +:10E1400027BDFFE0AFB10014AFB00010AFBF0018A3 +:10E1500030B0FFFF30D1FFFF8F4201B80440FFFE17 +:10E1600000000000AF440180AF4400200E000F42C9 +:10E17000020020218F8300008F840004A750019AA1 +:10E18000A750018EA74301908F8300083082800042 +:10E19000AF4301A8A75101881040000E8F820004F0 +:10E1A00093420116304200FC24420004005A102120 +:10E1B0008C4240003042FFFF144000068F82000472 +:10E1C0003C02FFFF34427FFF00821024AF82000434 +:10E1D0008F8200042403BFFF00431024A74201A63E +:10E1E0009743010C8F42010400031C003042FFFFE3 +:10E1F00000621825AF4301AC3C021000AF4201B8E9 +:10E200008FBF00188FB100148FB0001003E000081A +:10E2100027BD00208F470070934201128F830000BA +:10E2200027BDFFF0304200FF00022882306201006B +:10E23000000030211040004324A40003306240005D +:10E24000104000103062200000041080005A10219D +:10E250008C43400024A4000400041080AFA30000FD +:10E26000005A10218C424000AFA2000493420116D4 +:10E27000304200FC005A10218C4240000A000FC0BE +:10E28000AFA200081040002F0000302100041080D1 +:10E29000005A10218C43400024A400040004108084 +:10E2A000AFA30000005A10218C424000AFA000082C +:10E2B000AFA200048FA80008000030210000202138 +:10E2C000240A00083C0908002529010003A41021A4 +:10E2D000148A000300042A001100000A0000000054 +:10E2E00090420000248400012C83000C00A2102125 +:10E2F00000021080004910218C4200001460FFF3DE +:10E3000000C230263C0408008C8431048F42007027 +:10E310002C83002010600009004738233C030800CC +:10E32000246331080004108000431021248300017D +:10E33000AC4700003C010800AC233104AF86000864 +:10E340002406000100C0102103E0000827BD0010D2 +:10E350003C0208008C42003827BDFFD0AFB5002436 +:10E36000AFB40020AFB10014AFBF0028AFB3001CA2 +:10E37000AFB20018AFB00010000088213C150800B3 +:10E3800026B50038144000022454FFFF0000A021ED +:10E390009742010E8F8400003042FFFF308340001F +:10E3A0001060000A245200043C0200200082102465 +:10E3B00050400007308280008F8200042403BFFF9A +:10E3C000008318240A0010103442100030828000AC +:10E3D0001040000A3C020020008210241040000778 +:10E3E0008F8200043C03FFFF34637FFF0083182407 +:10E3F00034428000AF820004AF8300000E000F980B +:10E400000000000014400007000000009743011EB8 +:10E410009742011C3063FFFF0002140000621825C0 +:10E42000AF8300089742010C8F4340003045FFFF47 +:10E430003402FFFF14620003000000000A001028ED +:10E44000241100208F42400030420100544000015E +:10E45000241100108F8400003082100050400014FE +:10E4600036310001308200201440000B3C021000C5 +:10E47000008210245040000E363100013C030E0093 +:10E480003C020DFF008318243442FFFF0043102B91 +:10E4900050400007363100013C0208008C42002C3D +:10E4A000244200013C010800AC22002C363100055A +:10E4B0003C0608008CC6003454C000238F85000041 +:10E4C0008F820004304240005440001F8F850000BE +:10E4D0003C021F01008210243C0310005443001A28 +:10E4E0008F85000030A20200144000178F850000C5 +:10E4F0003250FFFF363100028F4201B80440FFFE68 +:10E5000000000000AF400180020020210E000F42F9 +:10E51000AF4000208F8300042402BFFFA750019A60 +:10E52000006218248F820000A750018EA751018835 +:10E53000A74301A6A74201903C021000AF4201B8D8 +:10E540000A0010F5000010213C02100000A2102467 +:10E550001040003A0000000010C0000F0000000052 +:10E5600030A201001040000C3C0302003C020F00EE +:10E5700000A2102410430008000000008F82000851 +:10E58000005410240055102190420004244200043D +:10E590000A00109F000221C00000000000051602C2 +:10E5A0003050000F3A0300022E4203EF38420001C0 +:10E5B0002C6300010062182414600073240200011F +:10E5C0003C0308008C6300D02E06000C386200016A +:10E5D0002C4200010046102414400015001021C0F8 +:10E5E0002602FFFC2C4200045440001100002021B0 +:10E5F000386200022C420001004610241040000343 +:10E60000000512420A00109F000020210010182B64 +:10E610000043102450400006001021C000002021BB +:10E620003245FFFF0E000F633226FFFB001021C0B2 +:10E630003245FFFF0A0010F2362600028F424000EA +:10E640003C0308008C630024304201001040004667 +:10E6500030620001322200043070000D14400002CC +:10E660002413000424130002000512C238420001E2 +:10E670002E4303EF304200013863000100431025B0 +:10E68000104000033231FFFB2402FFFB0202802412 +:10E6900010C000183202000130A201001040001525 +:10E6A000320200013C020F0000A210243C030200D1 +:10E6B0001043000F8F8200082403FFFE0203802412 +:10E6C00000541024005510219042000402333025DC +:10E6D0002442000412000002000221C03226FFFF83 +:10E6E0000E000F633245FFFF1200002700001021CB +:10E6F000320200011040000D320200042402000129 +:10E7000012020002023330253226FFFF00002021D2 +:10E710000E000F633245FFFF2402FFFE0202802439 +:10E7200012000019000010213202000410400016EF +:10E7300024020001240200041202000202333025E8 +:10E740003226FFFF3245FFFF0E000F632404010055 +:10E750002402FFFB020280241200000B00001021A3 +:10E760000A0010F5240200011040000700001021EB +:10E770003245FFFF36260002000020210E000F6305 +:10E7800000000000000010218FBF00288FB500247A +:10E790008FB400208FB3001C8FB200188FB100140B +:10E7A0008FB0001003E0000827BD003027BDFFD068 +:10E7B000AFB000103C04600CAFBF002CAFB6002817 +:10E7C000AFB50024AFB40020AFB3001CAFB2001847 +:10E7D000AFB100148C8250002403FF7F3C1A8000EC +:10E7E000004310243442380CAC8250002402000351 +:10E7F0003C106000AF4200088E0208083C1B8008F5 +:10E800003C010800AC2000203042FFF038420010EC +:10E810002C4200010E001B8DAF8200183C04FFFF4C +:10E820003C020400348308063442000CAE0219484E +:10E83000AE03194C3C0560168E0219808CA30000B3 +:10E840003442020000641824AE0219803C02535383 +:10E850001462000334A47C008CA200040050202128 +:10E860008C82007C8C830078AF820010AF83000C18 +:10E870008F55000032A200031040FFFD32A20001BC +:10E880001040013D32A200028F420128AF42002019 +:10E890008F4201048F430100AF8200000E000F3C45 +:10E8A000AF8300043C0208008C4200C01040000806 +:10E8B0008F8400003C0208008C4200C42442000106 +:10E8C0003C010800AC2200C40A00126900000000EC +:10E8D0003C020010008210241440010C8F830004BD +:10E8E0003C0208008C4200203C0308008C63003886 +:10E8F00000008821244200013C010800AC220020D5 +:10E900003C16080026D60038146000022474FFFF6D +:10E910000000A0219742010E308340003042FFFFEB +:10E920001060000A245200043C02002000821024DF +:10E9300050400007308280008F8200042403BFFF14 +:10E94000008318240A0011703442100030828000C5 +:10E950001040000A3C0200200082102410400007F2 +:10E960008F8200043C03FFFF34637FFF0083182481 +:10E9700034428000AF820004AF8300000E000F9885 +:10E980000000000014400007000000009743011E33 +:10E990009742011C3063FFFF00021400006218253B +:10E9A000AF8300089742010C8F4340003045FFFFC2 +:10E9B0003402FFFF14620003000000000A00118807 +:10E9C000241100208F4240003042010054400001D9 +:10E9D000241100108F840000308210005040001479 +:10E9E00036310001308200201440000B3C02100040 +:10E9F000008210245040000E363100013C030E000E +:10EA00003C020DFF008318243442FFFF0043102B0B +:10EA100050400007363100013C0208008C42002CB7 +:10EA2000244200013C010800AC22002C36310005D4 +:10EA30003C0608008CC6003454C000238F850000BB +:10EA40008F820004304240005440001F8F85000038 +:10EA50003C021F01008210243C0310005443001AA2 +:10EA60008F85000030A20200144000178F8500003F +:10EA70003250FFFF363100028F4201B80440FFFEE2 +:10EA800000000000AF400180020020210E000F4274 +:10EA9000AF4000208F8300042402BFFFA750019ADB +:10EAA000006218248F820000A750018EA7510188B0 +:10EAB000A74301A6A74201903C021000AF4201B853 +:10EAC0000A001267000010213C02100000A210246E +:10EAD0001040003A0000000010C0000F00000000CD +:10EAE00030A201001040000C3C0302003C020F0069 +:10EAF00000A2102410430008000000008F820008CC +:10EB000000541024005610219042000424420004B6 +:10EB10000A0011FF000221C00000000000051602DB +:10EB20003050000F3A0300022E4203EF384200013A +:10EB30002C63000100621824146000852402000187 +:10EB40003C0308008C6300D02E06000C38620001E4 +:10EB50002C4200010046102414400015001021C072 +:10EB60002602FFFC2C42000454400011000020212A +:10EB7000386200022C42000100461024504000037D +:10EB8000000512420A0011FF000020210010182B7E +:10EB90000043102450400006001021C00000202136 +:10EBA0003245FFFF0E000F633226FFFB001021C02D +:10EBB0003245FFFF0A001252362600028F42400003 +:10EBC0003C0308008C6300243042010010400046E2 +:10EBD00030620001322200043070000D1440000247 +:10EBE0002413000424130002000512C2384200015D +:10EBF0002E4303EF3042000138630001004310252B +:10EC0000104000033231FFFB2402FFFB020280248C +:10EC100010C000183202000130A20100104000159F +:10EC2000320200013C020F0000A210243C0302004B +:10EC30001043000F8F8200082403FFFE020380248C +:10EC40000054102400561021904200040233302555 +:10EC50002442000412000002000221C03226FFFFFD +:10EC60000E000F633245FFFF120000390000102133 +:10EC7000320200011040000D3202000424020001A3 +:10EC800012020002023330253226FFFF000020214D +:10EC90000E000F633245FFFF2402FFFE02028024B4 +:10ECA0001200002B00001021320200041040002846 +:10ECB0002402000124020004120200020233302563 +:10ECC0003226FFFF3245FFFF0E000F6324040100D0 +:10ECD0002402FFFB020280241200001D000010210C +:10ECE0000A001267240200015040001900001021A0 +:10ECF0003245FFFF36260002000020210E000F6380 +:10ED0000000000000A001267000010212402BFFF6B +:10ED1000006210241040000800000000240287FF59 +:10ED200000621024144000083C020060008210249D +:10ED300010400005000000000E000D34000000002F +:10ED40000A001267000000000E0012C70000000059 +:10ED5000104000063C0240008F4301243C0260202A +:10ED6000AC430014000000003C024000AF420138F8 +:10ED70000000000032A200021040FEBD00000000B2 +:10ED80008F4201403C044000AF4200208F430148C5 +:10ED90003C02700000621824106400420000000071 +:10EDA0000083102B144000063C0260003C0220004F +:10EDB000106200073C0240000A0012C3000000007D +:10EDC0001062003C3C0240000A0012C30000000038 +:10EDD0008F4501408F4601448F42014800021402D2 +:10EDE000304300FF240200041462000A274401801B +:10EDF0008F4201B80440FFFE2402001CAC850000D5 +:10EE0000A082000B3C021000AF4201B80A0012C3FE +:10EE10003C0240002402000914620012000616029F +:10EE2000000229C0AF4500208F4201B80440FFFE18 +:10EE30002402000124030003AF450180A343018B9A +:10EE4000A740018EA740019AA7400190AF4001A8BA +:10EE5000A7420188A74201A6AF4001AC3C021000C6 +:10EE6000AF4201B88F4201B80440FFFE000000002D +:10EE7000AC8500008F42014800021402A482000801 +:10EE800024020002A082000B8F420148A4820010DD +:10EE90003C021000AC860024AF4201B80A0012C345 +:10EEA0003C0240000E001310000000000A0012C3D4 +:10EEB0003C0240000E001BC2000000003C0240006B +:10EEC000AF420178000000000A00112F000000008E +:10EED0008F4201003042003E144000112402000124 +:10EEE000AF4000488F420100304207C0104000058B +:10EEF00000000000AF40004CAF40005003E00008AD +:10EF000024020001AF400054AF4000408F42010096 +:10EF10003042380054400001AF4000442402000158 +:10EF200003E00008000000008F4201B80440FFFE2B +:10EF300024020001AF440180AF400184A74501884D +:10EF4000A342018A24020002A342018B9742014A94 +:10EF500014C00004A7420190AF4001A40A0012EFC0 +:10EF60003C0210008F420144AF4201A43C02100059 +:10EF7000AF4001A803E00008AF4201B88F4201B8DA +:10EF80000440FFFE24020002AF440180AF4401842C +:10EF9000A7450188A342018AA342018B9742014AF7 +:10EFA000A7420190AF4001A48F420144AF4201A8A3 +:10EFB0003C02100003E00008AF4201B83C029000A0 +:10EFC0003442000100822025AF4400208F420020FF +:10EFD0000440FFFE0000000003E000080000000005 +:10EFE0003C028000344200010082202503E000083A +:10EFF000AF44002027BDFFE8AFBF0014AFB0001042 +:10F000008F50014093430149934201489344014882 +:10F01000306300FF304200FF00021200006228252A +:10F020002402001910620076308400802862001AE1 +:10F030001040001C24020020240200081062007707 +:10F04000286200091040000E2402000B2402000177 +:10F0500010620034286200025040000524020006BD +:10F0600050600034020020210A00139A00000000C2 +:10F0700010620030020020210A00139A00000000F4 +:10F080001062003B2862000C504000022402000E77 +:10F090002402000910620056020020210A00139A7F +:10F0A0000000000010620056286200211040000F8E +:10F0B000240200382402001C106200582862001D3F +:10F0C000104000062402001F2402001B1062004CA6 +:10F0D000000000000A00139A000000001062004ABD +:10F0E000020020210A00139A00000000106200456F +:10F0F0002862003910400007240200802462FFCB00 +:10F100002C42000210400045020020210A00139604 +:10F110000000302110620009000000000A00139A6C +:10F12000000000001480003D020020210A0013901E +:10F130008FBF00140A001396240600018F4201B805 +:10F140000440FFFE24020002A342018BA745018870 +:10F150009742014AA74201908F420144A74201927F +:10F160003C021000AF4201B80A00139C8FBF00148C +:10F170009742014A144000290000000093620005F4 +:10F180003042000414400025000000000E0013026D +:10F190000200202193620005020020213442000475 +:10F1A0000E00130BA36200059362000530420004B9 +:10F1B00014400002000000000000000D93620000F7 +:10F1C00024030020304200FF14430014000000001C +:10F1D0008F4201B80440FFFE24020005AF500180B9 +:10F1E000A342018B3C0210000A00139AAF4201B8FF +:10F1F0008FBF00148FB000100A0012F227BD001854 +:10F200000000000D02002021000030218FBF0014FB +:10F210008FB000100A0012DD27BD00180000000D9D +:10F220008FBF00148FB0001003E0000827BD001846 +:10F2300027BDFFE8AFBF00100E000F3C000000002C +:10F24000AF4001808FBF0010000020210A000FE7AF +:10F2500027BD00183084FFFF30A5FFFF00001821F4 +:10F260001080000700000000308200011040000202 +:10F2700000042042006518210A0013AB0005284055 +:10F2800003E000080060102110C0000624C6FFFF44 +:10F290008CA2000024A50004AC8200000A0013B573 +:10F2A0002484000403E000080000000010A000080F +:10F2B00024A3FFFFAC860000000000000000000057 +:10F2C0002402FFFF2463FFFF1462FFFA248400047A +:10F2D00003E0000800000000308300FF30A500FFBD +:10F2E00030C600FF274701808F4201B80440FFFE6F +:10F2F000000000008F42012834634000ACE20000AF +:10F3000024020001ACE00004A4E30008A0E2000A2B +:10F3100024020002A0E2000B3C021000A4E5001051 +:10F32000ACE00024ACE00028A4E6001203E00008F2 +:10F33000AF4201B827BDFFE8AFBF00109362003FA6 +:10F3400024030012304200FF1043000D00803021E2 +:10F350008F620044008210230440000A8FBF001017 +:10F360008F620048240400390000282100C21023C5 +:10F3700004410004240600120E0013C9000000001E +:10F380008FBF00102402000103E0000827BD001811 +:10F3900027BDFFC8AFB20030AFB1002CAFBF003403 +:10F3A000AFB0002890C5000D0080902130A400105F +:10F3B0001080000B00C088218CC300088F620054AD +:10F3C0001062000730A20005144000B524040001BB +:10F3D0000E000D21000020210A0014BB0040202156 +:10F3E00030A200051040000930A30012108000ACCC +:10F3F000240400018E2300088F620054146200A9C7 +:10F400008FBF00340A00142C240400382402001298 +:10F41000146200A3240400010220202127A500106B +:10F420000E000CB2AFA000101040001102402021CD +:10F430008E220008AF620084AF6000400E0013020D +:10F44000000000009362007D024020213442002031 +:10F450000E00130BA362007D0E000CA902402021B8 +:10F46000240400382405008D0A0014B82406001274 +:10F470009362003E304200081040000F8FA200103F +:10F4800030420100104000078FA300148F6200601B +:10F490000062102304430008AF6300600A001441B7 +:10F4A00000000000AF6000609362003E2403FFF79D +:10F4B00000431024A362003E9362003E30420008E5 +:10F4C000144000022406000300003021936200343F +:10F4D000936300378F640084304200FF306300FF85 +:10F4E00000661821000318800043282100A4202B67 +:10F4F0001080000B000000009763003C8F620084C6 +:10F500003063FFFF004510230062182B14600004D5 +:10F51000000000008F6200840A00145D0045802313 +:10F520009762003C3050FFFF8FA300103062000450 +:10F5300010400004000628808FA2001C0A001465F9 +:10F540000202102B2E02021850400003240202185F +:10F550000A00146E020510233063000410600003DB +:10F56000004510238FA2001C00451023004080217D +:10F570002C42008054400001241000800E00130231 +:10F580000240202124020001AF62000C9362003E81 +:10F59000001020403042007FA362003E8E22000413 +:10F5A00024420001AF620040A770003C8F6200500F +:10F5B0009623000E00431021AF6200588F62005066 +:10F5C00000441021AF62005C8E220004AF6200187C +:10F5D0008E220008AF62001C8FA20010304200088B +:10F5E0005440000A93A20020A360003693620036C4 +:10F5F0002403FFDFA36200359362003E0043102422 +:10F60000A362003E0A0014988E220008A36200350F +:10F610008E220008AF62004C8F6200248F6300408E +:10F6200000431021AF6200489362000024030050A1 +:10F63000304200FF144300122403FF803C02080004 +:10F640008C4231A00242102100431024AF42002816 +:10F650003C0208008C4231A08E2400083C03000CC0 +:10F66000024210213042007F03421021004310214A +:10F67000AC4400D88E230008AF820014AC4300DCF9 +:10F680000E00130B02402021240400380000282122 +:10F690002406000A0E0013C9000000002404000123 +:10F6A0008FBF00348FB200308FB1002C8FB0002894 +:10F6B0000080102103E0000827BD003827BDFFF8B7 +:10F6C00027420180AFA20000308A00FF8F4201B8BC +:10F6D0000440FFFE000000008F4601283C020800A5 +:10F6E0008C4231A02403FF80AF86004800C2102165 +:10F6F00000431024AF4200243C0208008C4231A099 +:10F700008FA900008FA8000000C210213042007FA6 +:10F71000034218213C02000A00621821946400D4BC +:10F720008FA700008FA5000024020002AF83001401 +:10F73000A0A2000B8FA30000354260003084FFFFC1 +:10F74000A4E200083C021000AD260000AD04000455 +:10F75000AC60002427BD0008AF4201B803E00008F8 +:10F76000240200018F88003C938200288F830014BC +:10F770003C07080024E7779800481023304200FF38 +:10F78000304900FC246500888F860040304A000321 +:10F790001120000900002021248200048CA3000015 +:10F7A000304400FF0089102AACE3000024A50004C7 +:10F7B0001440FFF924E70004114000090000202153 +:10F7C0002482000190A30000304400FF008A102B27 +:10F7D000A0E3000024A500011440FFF924E7000184 +:10F7E00030C20003144000048F85003C3102000346 +:10F7F0001040000D0000000010A0000900002021B2 +:10F800002482000190C30000304400FF0085102BCB +:10F81000A0E3000024C600011440FFF924E7000122 +:10F8200003E00008000000001100FFFD000020219F +:10F83000248200048CC30000304400FF0088102B99 +:10F84000ACE3000024C600041440FFF924E70004E0 +:10F8500003E00008000000008F83003C9382002832 +:10F8600030C600FF30A500FF00431023304300FFE7 +:10F870008F820014008038210043102114C0000240 +:10F88000244800880083382130E20003144000053A +:10F8900030A2000314400003306200031040000D4A +:10F8A0000000000010A000090000202124820001B7 +:10F8B00090E30000304400FF0085102BA1030000FE +:10F8C00024E700011440FFF92508000103E00008C7 +:10F8D0000000000010A0FFFD000020212482000491 +:10F8E0008CE30000304400FF0085102BAD030000C6 +:10F8F00024E700041440FFF92508000403E0000891 +:10F90000000000000080482130AAFFFF30C600FF41 +:10F9100030E7FFFF274801808F4201B80440FFFE17 +:10F920008F820048AD0200008F420124AD02000426 +:10F930008D220020A5070008A102000A240200165B +:10F94000A102000B934301208D2200088D240004A6 +:10F95000306300FF004310219783003A00441021D8 +:10F960008D250024004310233C0308008C6331A044 +:10F970008F840014A502000C246300E82402FFFF1A +:10F98000A50A000EA5030010A5060012AD0500187B +:10F99000AD020024948201142403FFF73042FFFFDC +:10F9A000AD0200288C820118AD02002C3C02100030 +:10F9B000AD000030AF4201B88D220020004310247A +:10F9C00003E00008AD2200208F82001430E7FFFF23 +:10F9D00000804821904200D330A5FFFF30C600FFD1 +:10F9E0000002110030420F0000E238252748018054 +:10F9F0008F4201B80440FFFE8F820048AD02000034 +:10FA00008F420124AD0200048D220020A5070008CA +:10FA1000A102000A24020017A102000B9343012057 +:10FA20008D2200088D240004306300FF0043102164 +:10FA30009783003A004410218F8400140043102360 +:10FA40003C0308008C6331A0A502000CA505000E44 +:10FA5000246300E8A5030010A5060012AD00001401 +:10FA60008D220024AD0200188C82005CAD02001CC7 +:10FA70008C820058AD0200202402FFFFAD0200245A +:10FA8000948200E63042FFFFAD02002894820060BD +:10FA9000948300BE30427FFF3063FFFF00021200FC +:10FAA00000431021AD02002C3C021000AD000030DC +:10FAB000AF4201B8948200BE2403FFF700A21021D8 +:10FAC000A48200BE8D2200200043102403E0000821 +:10FAD000AD220020274301808F4201B80440FFFE81 +:10FAE0008F8200249442001C3042FFFF000211C0AC +:10FAF000AC62000024020019A062000B3C0210005E +:10FB0000AC60003003E00008AF4201B88F87002CE2 +:10FB100030C300FF8F4201B80440FFFE8F820048CF +:10FB200034636000ACA2000093820044A0A20005F0 +:10FB30008CE20010A4A20006A4A300088C8200207E +:10FB40002403FFF7A0A2000A24020002A0A2000BD7 +:10FB50008CE20000ACA200108CE20004ACA2001405 +:10FB60008CE2001CACA200248CE20020ACA2002895 +:10FB70008CE2002CACA2002C8C820024ACA20018D9 +:10FB80003C021000AF4201B88C82002000431024D8 +:10FB900003E00008AC8200208F86001427BDFFE838 +:10FBA000AFBF0014AFB0001090C20063304200201D +:10FBB0001040000830A500FF8CC2007C2403FFDF4A +:10FBC00024420001ACC2007C90C2006300431024B8 +:10FBD000A0C2006310A000238F830014275001806F +:10FBE000020028210E0015D6240600828F82001400 +:10FBF000904200633042004050400019A38000440E +:10FC00008F83002C8F4201B80440FFFE8F82004892 +:10FC1000AE02000024026082A60200082402000254 +:10FC2000A202000B8C620008AE0200108C62000C75 +:10FC3000AE0200148C620014AE0200188C62001830 +:10FC4000AE0200248C620024AE0200288C620028E0 +:10FC5000AE02002C3C021000AF4201B8A380004469 +:10FC60008F8300148FBF00148FB000109062006368 +:10FC700027BD00183042007FA06200639782003ADF +:10FC80008F86003C8F850014938300280046102344 +:10FC9000A782003AA4A000E490A400638F820040F1 +:10FCA000AF83003C2403FFBF0046102100832024C3 +:10FCB000AF820040A0A400638F820014A04000BD6A +:10FCC0008F82001403E00008A44000BE8F8A001455 +:10FCD00027BDFFE0AFB10014AFB000108F88003C2B +:10FCE000AFBF00189389001C954200E430D100FF9B +:10FCF0000109182B0080802130AC00FF3047FFFF46 +:10FD00000000582114600003310600FF012030215B +:10FD1000010958239783003A0068102B1440003CD7 +:10FD20000000000014680007240200018E02002079 +:10FD30002403FFFB34E7800000431024AE020020C0 +:10FD40002402000134E70880158200053165FFFFB9 +:10FD50000E001554020020210A00169102002021F5 +:10FD60000E001585020020218F8400482743018062 +:10FD70008F4201B80440FFFE24020018AC6400006A +:10FD8000A062000B8F840014948200E6A46200102D +:10FD90003C021000AC600030AF4201B894820060B9 +:10FDA00024420001A4820060948200603C030800A9 +:10FDB0008C63318830427FFF5443000F02002021C2 +:10FDC000948200602403800000431024A482006019 +:10FDD0009082006090830060304200FF000211C2F8 +:10FDE00000021027000211C03063007F0062182556 +:10FDF000A083006002002021022028218FBF00186C +:10FE00008FB100148FB000100A0015F927BD002033 +:10FE1000914200632403FF8000431025A142006348 +:10FE20009782003A3048FFFF110000209383001CA6 +:10FE30008F840014004B1023304600FF948300E4AD +:10FE40002402EFFF0168282B00621824A48300E439 +:10FE500014A000038E020020010058210000302170 +:10FE60002403FFFB34E7800000431024AE0200208F +:10FE700024020001158200053165FFFF0E001554B4 +:10FE8000020020210A0016B99783003A0E0015855A +:10FE9000020020219783003A8F82003CA780003A1D +:10FEA00000431023AF82003C9383001C8F82001418 +:10FEB0008FBF00188FB100148FB0001027BD002035 +:10FEC00003E00008A04300BD938200442403000126 +:10FED00027BDFFE8004330042C420020AFB00010E3 +:10FEE000AFBF00142410FFFE10400005274501801D +:10FEF0003C0208008C4231900A0016D600461024BD +:10FF00003C0208008C423194004610241440000743 +:10FF1000240600848F8300142410FFFF9062006287 +:10FF20003042000F34420040A06200620E0015D63D +:10FF300000000000020010218FBF00148FB00010DD +:10FF400003E0000827BD00188F83002427BDFFE0D1 +:10FF5000AFB20018AFB10014AFB00010AFBF001CBB +:10FF60009062000D00A0902130D100FF3042007F50 +:10FF7000A062000D8F8500148E4300180080802140 +:10FF80008CA2007C146200052402000E90A2006383 +:10FF9000344200200A0016FFA0A200630E0016C51E +:10FFA000A38200442403FFFF104300472404FFFF03 +:10FFB00052200045000020218E4300003C0200102A +:10FFC00000621024504000043C020008020020217E +:10FFD0000A00170E24020015006210245040000988 +:10FFE0008E45000002002021240200140E0016C5D8 +:10FFF000A38200442403FFFF104300332404FFFFC7 +:020000021000EC +:100000008E4500003C02000200A2102410400016A1 +:100010003C0200048F8600248CC200148CC30010A4 +:100020008CC40014004310230044102B50400005E2 +:10003000020020218E43002C8CC2001010620003AD +:10004000020020210A00173F240200123C02000493 +:1000500000A210245040001C00002021020020219A +:100060000A00173F2402001300A2102410400006CB +:100070008F8300248C620010504000130000202168 +:100080000A001739020020218C6200105040000441 +:100090008E42002C020020210A00173F240200118A +:1000A00050400009000020210200202124020017F6 +:1000B0000E0016C5A38200442403FFFF1043000274 +:1000C0002404FFFF000020218FBF001C8FB2001806 +:1000D0008FB100148FB000100080102103E00008E1 +:1000E00027BD00208F83001427BDFFD8AFB40020A8 +:1000F000AFB3001CAFB20018AFB10014AFB0001026 +:10010000AFBF0024906200638F91002C2412FFFF88 +:100110003442004092250000A06200638E2200104D +:100120000080982130B0003F105200060360A021EB +:100130002402000D0E0016C5A38200441052005484 +:100140002404FFFF8F8300148E2200188C63007C30 +:1001500010430007026020212402000E0E0016C585 +:10016000A38200442403FFFF104300492404FFFF3F +:1001700024040020120400048F83001490620063A2 +:1001800034420020A06200638F85003410A000205C +:1001900000000000560400048F8200140260202139 +:1001A0000A0017902402000A9683000A9442006015 +:1001B0003042FFFF144300048F8200202404FFFD1F +:1001C0000A0017B7AF82003C3C0208008C42318C19 +:1001D0000045102B14400006026020210000282159 +:1001E0000E001646240600010A0017B70000202161 +:1001F0002402002D0E0016C5A38200442403FFFF35 +:10020000104300232404FFFF0A0017B70000202139 +:10021000160400058F8400148E2300142402FFFFAF +:100220005062001802602021948200602442000184 +:10023000A4820060948200603C0308008C633188D3 +:1002400030427FFF5443000F0260202194820060FF +:100250002403800000431024A48200609082006088 +:1002600090830060304200FF000211C2000210279C +:10027000000211C03063007F00621825A083006077 +:10028000026020210E0015F9240500010000202144 +:100290008FBF00248FB400208FB3001C8FB20018D2 +:1002A0008FB100148FB000100080102103E000080F +:1002B00027BD00288F83001427BDFFE8AFB00010D2 +:1002C000AFBF0014906200638F87002C00808021F4 +:1002D000344200408CE60010A06200633C0308003A +:1002E0008C6331B030C23FFF0043102B1040004EF2 +:1002F0008F8500302402FF8090A3000D004310245E +:10030000304200FF504000490200202100061382C5 +:10031000304800032402000255020044020020215C +:1003200094A2001C8F85001424030023A4A20114AE +:100330008CE60000000616023042003F1043001019 +:100340003C0300838CE300188CA2007C1062000642 +:100350002402000E0E0016C5A38200442403FFFFF2 +:10036000104300382404FFFF8F8300149062006361 +:1003700034420020A06200630A0017FC8F8300242F +:1003800000C31024144300078F83002490A200624E +:100390003042000F34420020A0A20062A38800383F +:1003A0008F8300249062000D3042007FA062000D18 +:1003B0008F83003410600018020020218F840030E9 +:1003C0008C8200100043102B1040000924020018FA +:1003D000020020210E0016C5A38200442403FFFF63 +:1003E000104300182404FFFF0A00182400002021F5 +:1003F0008C820010240500010200202100431023FC +:100400008F830024240600010E001646AC62001003 +:100410000A001824000020210E0015F9240500010F +:100420000A00182400002021020020212402000DCF +:100430008FBF00148FB0001027BD00180A0016C52A +:10044000A38200448FBF00148FB0001000801021E1 +:1004500003E0000827BD001827BDFFC8AFB2002089 +:10046000AFBF0034AFB60030AFB5002CAFB400283A +:10047000AFB30024AFB1001CAFB000188F46012805 +:100480003C0308008C6331A02402FF80AF86004843 +:1004900000C318213065007F03452821006218241D +:1004A0003C02000AAF43002400A2282190A200626F +:1004B00000809021AF850014304200FF000211023D +:1004C000A382003890A200BC304200021440000217 +:1004D00024030034240300308F820014A3830028F7 +:1004E000938300388C4200C0A3800044AF82003C5C +:1004F000240200041062031C8F84003C8E4400041C +:10050000508003198F84003C8E4200103083FFFF1F +:10051000A784003A106002FFAF8200408F8400146D +:100520002403FF809082006300621024304200FFA9 +:10053000144002CF9785003A9383003824020002CA +:1005400030B6FFFF14620005000088219382002866 +:100550002403FFFD0A001B19AF82003C8F82003C80 +:1005600002C2102B144002A18F8400400E0014EC34 +:1005700000000000938300283C040800248477983E +:10058000240200341462002EAF84002C3C0A0800C0 +:100590008D4A77C82402FFFFAFA2001000803821E7 +:1005A0002405002F3C09080025297398240800FF22 +:1005B0002406FFFF90E2000024A3FFFF00062202B2 +:1005C00000C21026304200FF0002108000491021B6 +:1005D0008C420000306500FF24E7000114A8FFF5FD +:1005E0000082302600061027AFA20014AFA2001030 +:1005F0000000282127A7001027A6001400C51023FB +:100600009044000324A2000100A71821304500FFF8 +:100610002CA200041440FFF9A06400008FA2001077 +:100620001142000724020005024020210E0016C5D9 +:10063000A38200442403FFFF104300642404FFFF4F +:100640003C0208009042779C104000098F82001401 +:10065000024020212402000C0E0016C5A382004493 +:100660002403FFFF104300592404FFFF8F8200146E +:10067000A380001C3C0308008C63779C8C440080A2 +:100680003C0200FF3442FFFF006218240083202B4D +:1006900010800008AF83003402402021240200199A +:1006A0000E0016C5A38200442403FFFF1043004739 +:1006B0002404FFFF8F87003C9782003A8F85003427 +:1006C000AF8700200047202310A0003BA784003AFA +:1006D0008F86001430A200030002102390C300BCD8 +:1006E0003050000300B0282100031882307300014D +:1006F0000013108000A228213C0308008C6331A065 +:100700008F8200483084FFFF0085202B004310219A +:1007100010800011244200888F84002C1082000E6B +:100720003C033F013C0208008C42779800431024B0 +:100730003C0325001443000630E500FF8C820000D6 +:10074000ACC200888C8200100A0018E9ACC2009884 +:100750000E001529000030219382001C8F850014A3 +:100760008F830040020238218F82003CA387001C47 +:1007700094A400E4006218218F82003434841000B5 +:10078000AF83004000503021A4A400E41260000EAA +:10079000AF86003C24E20004A382001C94A200E483 +:1007A00024C30004AF83003C34422000A4A200E430 +:1007B0000A001906000020218F820040AF80003C13 +:1007C00000471021AF820040000020212414FFFFC9 +:1007D000109402112403FFFF3C0808008D0877A83D +:1007E0003C0208008C4231B03C03080090637798CB +:1007F00031043FFF0082102B1040001B3067003F88 +:100800003C0208008C4231A88F83004800042180FC +:1008100000621821006418213062007F0342282101 +:100820003C02000C00A228213C020080344200015E +:100830003066007800C230252402FF800062102458 +:10084000AF42002830640007AF4208048F820014D2 +:100850000344202124840940AF460814AF850024B6 +:10086000AF840030AC4301189383003824020003A6 +:10087000146201CF240200012402002610E201D1FB +:1008800028E2002710400013240200322402002234 +:1008900010E201CC28E200231040000824020024CA +:1008A0002402002010E201B82402002110E20147D6 +:1008B000024020210A001AFB2402000B10E201C1B1 +:1008C0002402002510E20010024020210A001AFB39 +:1008D0002402000B10E201AE28E2003310400006B3 +:1008E0002402003F2402003110E2009A024020213D +:1008F0000A001AFB2402000B10E201A5024020218D +:100900000A001AFB2402000B8F90002C3C03080005 +:100910008C6331B08F8500308E0400100000A82158 +:100920008CB3001430823FFF0043102B8CB10020A9 +:100930005040018F0240202190A3000D2402FF802F +:1009400000431024304200FF504001890240202122 +:10095000000413823042000314400185024020212C +:1009600094A3001C8F8200148E040028A443011459 +:100970008CA20010026218231064000302402021A0 +:100980000A00197C2402001F8F82003400621021AB +:100990000262102B104000088F83002402402021A7 +:1009A000240200180E0016C5A382004410540174DE +:1009B0002404FFFF8F8300248F8400348C62001096 +:1009C0000224882100441023AC6200108F8200149E +:1009D000AC7100208C4200680051102B10400009BF +:1009E0008F830030024020212402001D0E0016C516 +:1009F000A38200442403FFFF104301612404FFFF8E +:100A00008F8300308E0200248C6300241043000783 +:100A1000024020212402001C0E0016C5A3820044BF +:100A20002403FFFF104301562404FFFF8F8400249A +:100A30008C82002424420001AC8200241233000482 +:100A40008F8200148C4200685622000E8E02000035 +:100A50008E0200003C030080004310241440000D6F +:100A60002402001A024020210E0016C5A382004471 +:100A70002403FFFF104301422404FFFF0A0019BAB8 +:100A80008E0200143C0300800043102450400003F9 +:100A90008E020014AC8000208E0200142411FFFF8F +:100AA0001051000E3C0308003C0208008C423190BB +:100AB000004310242403001B14400007A3830044B8 +:100AC0000E0016C5024020211051012D2404FFFF05 +:100AD0000A0019CB8E030000A38000448E0300009F +:100AE0003C02000100621024104000123C02008011 +:100AF0000062102414400008024020212402001A41 +:100B00000E0016C5A38200442403FFFF1043011CFE +:100B10002404FFFF02402021020028210E0016E5D8 +:100B2000240600012403FFFF104301152404FFFFE6 +:100B3000241500018F83002402A0302102402021CF +:100B40009462003624050001244200010A001ADFE5 +:100B5000A46200368F90002C3C0308008C6331B0F7 +:100B60008E13001032623FFF0043102B10400089AB +:100B70008F8400302402FF809083000D00431024F6 +:100B8000304200FF104000842402000D0013138245 +:100B900030420003240300011443007F2402000DAF +:100BA0009082000D30420008544000048F820034CF +:100BB000024020210A001A102402002450400004A0 +:100BC0008E03000C024020210A001A102402002784 +:100BD0008C82002054620006024020218E0300080F +:100BE0008C820024506200098E02001402402021F1 +:100BF000240200200E0016C5A38200441054007188 +:100C00002403FFFF0A001A458F8400242411FFFFEC +:100C1000145100048F860014024020210A001A405B +:100C2000240200258E0300188CC2007C1062000391 +:100C30002402000E0A001A40024020218E030024E4 +:100C40008C82002810620003240200210A001A404E +:100C5000024020218E0500288C82002C10A2000367 +:100C60002402001F0A001A40024020218E03002C9B +:100C700014600003240200230A001A4002402021CD +:100C80008CC200680043102B104000032402002691 +:100C90000A001A40024020218C82001400651821AD +:100CA0000043102B104000088F84002402402021B4 +:100CB000240200220E0016C5A382004410510041F8 +:100CC0002403FFFF8F8400242403FFF79082000D8C +:100CD00000431024A082000D8F8600143C030800FE +:100CE0008C6331AC8F82004894C400E08F8500246F +:100CF0000043102130847FFF000420400044102175 +:100D00003043007F034320213C03000E0083202159 +:100D10002403FF8000431024AF42002CA493000062 +:100D20008CA2002824420001ACA200288CA2002C36 +:100D30008E03002C00431021ACA2002C8E02002C4C +:100D4000ACA200308E020014ACA2003494A2003A8F +:100D500024420001A4A2003A94C600E03C0208002C +:100D60008C4231B024C4000130837FFF1462000F35 +:100D700000803021240280000082302430C2FFFF36 +:100D8000000213C2304200FF000210270A001A7E40 +:100D9000000233C02402000D024020210E0016C5BF +:100DA000A38200440A001A84004018218F82001494 +:100DB00002402021240500010E0015F9A44600E0A0 +:100DC000000018210A001B16006088218F90002C5B +:100DD0003C0308008C6331B08E05001030A23FFF49 +:100DE0000043102B104000612402FF808F840030EC +:100DF0009083000D00431024304200FF5040005CFF +:100E0000024020218F8200341040000B0005138225 +:100E10008F8200149763000A944200603042FFFF03 +:100E200014430005000513828F8200202404FFFD77 +:100E30000A001AF3AF82003C304200031440000E57 +:100E40000000000092020002104000058E03002402 +:100E500050600015920300030A001AAF02402021DF +:100E60008C82002450620010920300030240202173 +:100E70000A001AB72402000F9082000D30420008C9 +:100E80005440000992030003024020212402001074 +:100E90000E0016C5A38200442403FFFF1043003850 +:100EA0002404FFFF92030003240200025462000C9A +:100EB000920200038F820034544000099202000322 +:100EC000024020212402002C0E0016C5A3820044FB +:100ED0002403FFFF1043002A2404FFFF92020003B3 +:100EE0000200282102402021384600102CC60001B3 +:100EF0002C4200010E0016E5004630252410FFFFAD +:100F00001050001F2404FFFF8F8300341060001373 +:100F1000024020213C0208008C42318C0043102BFF +:100F200014400007000000000000282124060001F2 +:100F30000E001646000000000A001AF300002021EF +:100F40002402002D0E0016C5A38200441050000C90 +:100F50002404FFFF0A001AF3000020210E0015F9F7 +:100F6000240500010A001AF300002021024020217C +:100F70002402000D0E0016C5A3820044004020216B +:100F80000A001B16008088211514000E00000000C6 +:100F90000E00174C024020210A001B160040882139 +:100FA0000E0016C5A38200440A001B1600408821CB +:100FB00014620017022018212402002314E2000505 +:100FC0002402000B0E0017C0024020210A001B164D +:100FD0000040882102402021A38200440E0016C553 +:100FE0002411FFFF0A001B170220182130A500FF63 +:100FF0000E001529240600019783003A8F82003CD9 +:10100000A780003A00431023AF82003C0220182141 +:101010001220003E9782003A2402FFFD5462003EF7 +:101020008E4300208E4200048F830014005610234C +:10103000AE420004906200633042007FA062006311 +:101040008E4200208F840014A780003A34420002B0 +:10105000AE420020A48000E4908200632403FFBF1E +:1010600000431024A08200630A001B598E43002015 +:101070009082006300621024304200FF1040002381 +:101080009782003A90820088908300BD2485008872 +:101090003042003F2444FFE02C820020A383001C48 +:1010A00010400019AF85002C2402000100821804B2 +:1010B000306200191440000C3C02800034420002EF +:1010C000006210241440000B306200201040000F1A +:1010D0009782003A90A600010240202124050001D9 +:1010E0000A001B5330C60001024020210A001B5297 +:1010F00024050001024020210000282124060001CF +:101100000E001646000000009782003A1440FD04CD +:101110008F8400148E4300203062000410400012BF +:101120008F84003C2402FFFB00621024AE420020AA +:10113000274301808F4201B80440FFFE8F820048A0 +:10114000AC6200008F420124AC6200042402608380 +:10115000A462000824020002A062000B3C021000FE +:10116000AF4201B88F84003C8F8300148FBF0034DE +:101170008FB600308FB5002C8FB400288FB30024B9 +:101180008FB200208FB1001C8FB000182402000124 +:1011900027BD003803E00008AC6400C030A500FFA4 +:1011A0002403000124A900010069102B1040000C49 +:1011B00000004021240A000100A31023004A380443 +:1011C00024630001308200010069302B10400002CE +:1011D000000420420107402554C0FFF800A310235B +:1011E00003E00008010010213C020800244260A432 +:1011F0003C010800AC22738C3C02080024425308D6 +:101200003C010800AC2273902402000627BDFFE0D9 +:101210003C010800A02273943C021EDCAFB200180F +:10122000AFB10014AFBF001CAFB0001034526F411B +:1012300000008821240500080E001B7A02202021CE +:10124000001180803C07080024E773980002160014 +:1012500002071821AC6200000000282124A200012E +:101260003045FFFF8C6200002CA6000804410002FC +:10127000000220400092202614C0FFF8AC64000059 +:10128000020780218E0400000E001B7A2405002036 +:10129000262300013071FFFF2E2301001460FFE5BB +:1012A000AE0200008FBF001C8FB200188FB1001477 +:1012B0008FB0001003E0000827BD002027BDFFD835 +:1012C000AFB3001CAFB20018AFBF0020AFB1001425 +:1012D000AFB000108F5101408F48014800089402C0 +:1012E000324300FF311300FF8F4201B80440FFFE7C +:1012F00027500180AE1100008F420144AE0200046D +:1013000024020002A6120008A202000B240200140C +:10131000AE1300241062002528620015104000085A +:101320002402001524020010106200302402001272 +:10133000106200098FBF00200A001CB58FB3001C8B +:101340001062007024020022106200378FBF00205C +:101350000A001CB58FB3001C3C0208008C4231A06F +:101360002403FF800222102100431024AF420024F6 +:101370003C0208008C4231A0022210213042007F42 +:10138000034218213C02000A00621821166000BCCA +:10139000AF830014906200623042000F344200308C +:1013A000A06200620A001CB48FBF00203C046000F1 +:1013B0008C832C083C02F0033442FFFF00621824A7 +:1013C000AC832C083C0208008C4231A08C832C0892 +:1013D000244200740002108200021480006218256A +:1013E000AC832C080A001CB48FBF00203C0208000C +:1013F0008C4231A02403FF800222102100431024DC +:10140000AF4200243C0208008C4231A03C03000A99 +:10141000022210213042007F03421021004310219C +:101420000A001CB3AF8200143C0208008C4231A0B9 +:101430002405FF800222102100451024AF42002421 +:101440003C0208008C4231A0022210213042007F71 +:10145000034218213C02000A0062182190620063D6 +:1014600000A21024304200FF10400085AF8300141A +:1014700024620088944300123C0208008C4231A888 +:1014800030633FFF00031980022210210043102126 +:101490003043007F03432021004510243C03000C0F +:1014A00000832021AF4200289082000D00A210246A +:1014B000304200FF10400072AF8400249082000D83 +:1014C000304200101440006F8FBF00200E0015C87E +:1014D000000000008F4201B80440FFFE0000000041 +:1014E000AE1100008F420144AE020004240200024B +:1014F000A6120008A202000BAE1300240A001CB4BE +:101500008FBF00202406FF8002261024AF42002057 +:101510003C0208008C4231A031043FFF00042180CE +:101520000222102100461024AF4200243C03080090 +:101530008C6331A83C0208008C4231A03227007F26 +:101540000223182102221021006418213042007F5A +:101550003064007F034228213C02000A0066182400 +:1015600000A22821034420213C02000C00822021FB +:10157000AF4300283C020008034718210062902175 +:10158000AF850014AF8400240E0015C8010080212F +:101590008F4201B80440FFFE8F8200248F84001424 +:1015A000274501809042000DACB10000A4B00006B8 +:1015B000000216000002160300021027000237C2C4 +:1015C00014C00016248200889442001232033FFFA8 +:1015D00030423FFF14430012240260829083006374 +:1015E0002402FF8000431024304200FF5040000CD2 +:1015F00024026082908200623042000F3442004038 +:10160000A082006224026084A4A200082402000DCB +:10161000A0A200050A001C9E3C0227002402608252 +:10162000A4A20008A0A000053C02270000061C00A0 +:101630000062182524020002A0A2000BACA3001037 +:10164000ACA00014ACA00024ACA00028ACA0002CDE +:101650008E42004C8F840024ACA200189083000DB1 +:101660002402FF8000431024304200FF1040000598 +:101670008FBF00209082000D3042007FA082000DBD +:101680008FBF00208FB3001C8FB200188FB10014E1 +:101690008FB000103C02100027BD002803E00008B6 +:1016A000AF4201B80800343008003430080033A8D5 +:1016B000080033E0080034140800343808003438D7 +:1016C00008003438080033180A0001240000000024 +:1016D000000000000000000D747061362E322E33C1 +:1016E00000000000060203010000000000000000EE +:1016F00000000000000000000000000000000000EA +:1017000000000000000000000000000000000000D9 +:1017100000000000000000000000000000000000C9 +:1017200000000000000000000000000000000000B9 +:1017300000000000000000000000000000000000A9 +:101740000000000000000000000000000000000099 +:101750000000000000000000000000001000000376 +:10176000000000000000000D0000000D3C02080019 +:1017700024421C003C03080024632094AC40000079 +:101780000043202B1480FFFD244200043C1D080070 +:1017900037BD2FFC03A0F0213C1008002610049058 +:1017A0003C1C0800279C1C000E00015C000000008F +:1017B0000000000D3084FFFF308200078F85001885 +:1017C00010400002248300073064FFF800853021B8 +:1017D00030C41FFF03441821247B4000AF85001C48 +:1017E000AF84001803E00008AF4400843084FFFF9A +:1017F000308200078F8500208F860028104000026D +:10180000248300073064FFF8008520210086182B10 +:1018100014600002AF8500240086202303442821A1 +:1018200034068000AF840020AF44008000A6202151 +:1018300003E00008AF84003827BDFFD8AFB3001C19 +:10184000AFB20018AFB00010AFBF0024AFB400209B +:10185000AFB100143C0860088D1450002418FF7FBD +:101860003C1A8000029898243672380CAD12500051 +:101870008F5100083C07601C3C08600036300001B6 +:10188000AF500008AF800018AF400080AF40008428 +:101890008CE600088D0F08083C0760168CEC0000F1 +:1018A00031EEFFF039CA00103C0DFFFF340B800011 +:1018B0003C030080034B48212D440001018D282466 +:1018C0003C0253533C010800AC230420AF8900388C +:1018D000AF860028AF840010275B400014A20003ED +:1018E00034E37C008CF90004032818218C7F007CF1 +:1018F0008C6500783C0280003C0B08008D6B048CEA +:101900003C0A08008D4A048834520070AF85003CC0 +:10191000AF9F00403C13080026731C440240A021E6 +:101920008E4800008F46000038C30001306400017B +:1019300010800017AF880034028048218D2F0000EE +:101940003C0508008CA5045C3C1808008F1804585E +:1019500001E8102300A280210000C8210202402BD0 +:1019600003198821022838213C010800AC30045CAE +:101970003C010800AC2704588F4E000039CD00010F +:1019800031AC00011580FFED01E04021AF8F003444 +:101990008E5100003C0708008CE7045C3C0D0800F9 +:1019A0008DAD04580228802300F0602100007021D2 +:1019B0000190302B01AE1821006620213C01080067 +:1019C000AC2C045C3C010800AC2404588F46010890 +:1019D0008F47010030C92000AF860000AF87000CA0 +:1019E0001120000A00C040213C1808008F18042C68 +:1019F000270800013C010800AC28042C3C184000DA +:101A0000AF5801380A000196000000009749010410 +:101A100000002821014550213122FFFF0162582199 +:101A20000162F82B015F502130D902003C0108000F +:101A3000AC2B048C3C010800AC2A0488172000154C +:101A400024040F0010E400130000000024080D001F +:101A500010E8023B30CD000611A0FFE93C18400021 +:101A6000936E00002409001031C400F01089027147 +:101A700024020070108202E58F880014250F0001F7 +:101A8000AF8F00143C184000AF5801380A0001968F +:101A900000000000974C01041180FFD93C18400061 +:101AA00030C34000146000A1000000008F460178A0 +:101AB00004C0FFFE8F87003824100800240F0008A0 +:101AC0008CE30008AF500178A74F0140A7400142C6 +:101AD000974E01048F86000031C9FFFF30CD000111 +:101AE00011A002E1012040212531FFFE241800024F +:101AF000A75801463228FFFFA75101483C190800AA +:101B00008F39043C172002D08F8C000C30DF00206E +:101B100017E00002240400092404000130C20C0074 +:101B2000240504005045000134840004A744014A00 +:101B30003C1108008E3104203C1800483C10000184 +:101B40000238182530CF00020070282511E000046B +:101B5000000018213C19010000B9282524030001C8 +:101B600030DF000453E00005AF8300083C0600109E +:101B700000A6282524030001AF830008AF4510000C +:101B80000000000000000000000000000000000055 +:101B90008F83000810600023000000008F451000B4 +:101BA00004A1FFFE000000001060001E0000000005 +:101BB0008F4410003C0C0020008C102410400019B1 +:101BC0008F8E000031CD000211A000160000000031 +:101BD000974F101415E000130000000097591008EB +:101BE0003338FFFF271100060011188200033080F0 +:101BF00000C7282132300001322300031200032CD9 +:101C00008CA200000000000D00C7F821AFE2000028 +:101C10003C0508008CA5043024A600013C01080006 +:101C2000AC2604308F6D00003402FFFFAF8D00043E +:101C30008CEC0000118202A6000020218CED000037 +:101C400031AC01001180028A000000003C02080053 +:101C50008C4204743C0308008C63044C3C1F080055 +:101C60008FFF04703C1808008F1804480048382182 +:101C70000068802100E8282B03E430210208402B73 +:101C80000304882100C57021022878213C01080046 +:101C9000AC30044C3C010800AC2F04483C01080067 +:101CA000AC2704743C010800AC2E04708F8400182B +:101CB0000120302131290007249F000833F91FFF3C +:101CC00003594021AF84001CAF990018251B400028 +:101CD000AF590084112000038F83002024C2000725 +:101CE0003046FFF88F84002800C3282100A4302B41 +:101CF00014C00002AF83002400A428230345602100 +:101D0000340D8000018D10213C0F1000AF850020A4 +:101D1000AF820038AF450080AF4F01788F88001444 +:101D2000250F00010A0001EFAF8F00148F62000839 +:101D30008F670000240500300007760231C300F0F1 +:101D4000106500A7240F0040546FFF4C8F880014CB +:101D50008F4B01780560FFFE0000000030CA0200D2 +:101D600015400003000612820000000D00061282DA +:101D7000304D0003000D4900012D18210003808023 +:101D8000020D402100086080019380218E1F000019 +:101D900017E00002000000000000000D8F6E00043C +:101DA00005C202BD92070006920E000592020004D1 +:101DB0003C090001000E18800070F8218FED00181A +:101DC000277100082448000501A96021000830821D +:101DD000AFEC0018022020210E00059E26050014FD +:101DE000920A00068F7900043C0B7FFF000A2080D6 +:101DF000009178218DF800043566FFFF0326282422 +:101E000003053821ADE70004920E0005920D000491 +:101E1000960C0008000E10800051C8218F2300008E +:101E2000974901043C07FFFF006758243128FFFF52 +:101E3000010DF82103EC50233144FFFF01643025EC +:101E4000AF260000920300072418000110780275E5 +:101E5000240F0003106F0285000000008E050010A3 +:101E60002419000AA7590140A7450142921800040D +:101E70008F860000240F0001A7580144A7400146A7 +:101E80009747010430D100023C050041A7470148B3 +:101E900000001821A74F014A1220000330CB000494 +:101EA0003C0501412403000151600005AF83000897 +:101EB0003C06001000A6282524030001AF8300087B +:101EC000AF4510000000000000000000000000000E +:101ED000000000008F8A000811400004000000008C +:101EE0008F4410000481FFFE000000008F6B000093 +:101EF000920800043C1108008E310444AF8B0004AA +:101F000097590104311800FF3C0E08008DCE0440A3 +:101F10003325FFFF0305382102276021000010212F +:101F2000250F000A31E8FFFF0187482B01C2682115 +:101F300001A9F821311000073C010800AC2C044431 +:101F40003C010800AC3F0440120000038F8C0018D5 +:101F50002506000730C8FFF8010C682131BF1FFFBC +:101F6000AF8C001CAF9F0018AF5F00849744010442 +:101F7000035F80213084FFFF308A00071140000397 +:101F8000261B4000248900073124FFF88F8200209F +:101F90008F850028008220210085702B15C000024B +:101FA000AF820024008520233C0B08008D6B048C3D +:101FB0003C0A08008D4A04880344882134038000C9 +:101FC000022310213C0F1000AF840020AF820038A4 +:101FD000AF440080AF4F01780A0002968F8800144A +:101FE0008F5001780600FFFE30D10200162000035A +:101FF000000612820000000D00061282305F00030E +:10200000001F1900007F302100062080009FC8219A +:1020100000194880013380218E180000130000024F +:10202000000000000000000D8F6C000C058001FB1B +:102030008F870038240E0001AE0E00008CE30008EC +:10204000A20000078F65000400055402314D00FF17 +:1020500025A80005000830822CCB00411560000245 +:10206000A20A00040000000D8F7800043C03FFFF6B +:1020700000E02821330BFFFF256C000B000C1082C1 +:1020800000022080008748218D3F000026040014B4 +:10209000A618000803E3C8240E00059EAD39000011 +:1020A0008F4F01083C11100001F1382410E001AB02 +:1020B00000000000974D01049208000725AAFFECDC +:1020C000350600023144FFFFA2060007960600080D +:1020D0002CC7001354E0000592030007921100077B +:1020E000362F0001A20F00079203000724180001F9 +:1020F000107801C224090003106901D58F880038C7 +:1021000030CBFFFF257100020011788331E400FF1E +:1021100000042880A20F000500A848218D2D000092 +:10212000974A01043C0EFFFF01AEF8243143FFFF44 +:10213000006B1023244CFFFE03ECC825AD390000D2 +:10214000920600053C03FFF63462FFFF30D800FF23 +:102150000018388000F08821922F00143C04FF7F83 +:102160003487FFFF31EE000F01C65821316500FFB3 +:1021700000055080015068218DAC00200148F821F5 +:10218000A20B00060182C824AE0C000CAFF9000CB3 +:10219000920900068E11000C032778240009C080E4 +:1021A0000310702195C60026030828210227202449 +:1021B000AE04000CADCF0020ADC60024ACA60010CC +:1021C0008F8800003C0B08008D6B048C3C0A0800D3 +:1021D0008D4A0488241F001024190002A75F0140C3 +:1021E000A7400142A7400144A7590146974901046D +:1021F00024070001310600022538FFFEA7580148D8 +:102200003C050009A747014A10C00003000018213F +:102210003C05010924030001310C00045180000534 +:10222000AF8300083C08001000A828252403000103 +:10223000AF830008AF451000000000000000000060 +:1022400000000000000000009205000424AE00021F +:1022500031CD0007000D182330620007AE020010D8 +:102260008F90000812000004000000008F4F100043 +:1022700005E1FFFE000000008F7100008F8E001846 +:102280003C0308008C630444AF91000497450104AB +:1022900025CF001031E61FFF30A2FFFFAF8E001CDC +:1022A000AF860018AF4600842449FFFE3C0C0800AE +:1022B0008D8C0440974D010401208021000947C303 +:1022C0000070C02131A9FFFF0310F82B0188C8213D +:1022D000033F202103463821313100073C0108002B +:1022E000AC3804443C010800AC2404401220000334 +:1022F00024FB40002527000730E9FFF88F860020E7 +:102300008F8400280126382100E4C02B170000022A +:10231000AF86002400E438230347202134198000CD +:10232000009910213C0F1000AF870020AF820038C9 +:10233000AF470080AF4F01780A0002968F880014E3 +:102340009747010410E0FDAE3C1840008F5801781B +:102350000700FFFE30C5400010A000033C1F00082E +:102360000000000D3C1F0008AF5F01402410080072 +:102370008F860000AF5001789744010430D90001E6 +:10238000132000ED3086FFFF24CCFFFE240D000259 +:10239000A74D0146A74C01488F9100182408000D55 +:1023A000A748014A8F630000262F000831E21FFF73 +:1023B0000342702130C90007AF830004AF91001CB5 +:1023C000AF82001800C03821AF4200841120000302 +:1023D00025DB400024D800073307FFF88F85002055 +:1023E0008F84002800E5302100C4382B14E000025F +:1023F000AF85002400C430238F8400140346F821E5 +:10240000340C8000AF86002003EC8021AF460080B2 +:10241000249900013C0610003C184000AF460178AA +:10242000AF900038AF990014AF5801380A000196F8 +:10243000000000008F630000975101043067FFFF28 +:102440003228FFFF8F4F017805E0FFFE30EC0007D8 +:10245000000CF82333F0000724F9FFFE2404000ADF +:10246000A7440140A7500142A7590144A740014693 +:10247000A74801488F45010830B800201700000226 +:10248000240300092403000130CD0002A743014AC0 +:102490003C04004111A00003000018213C0401414C +:1024A0002403000130C9000451200005AF83000857 +:1024B0003C0600100086202524030001AF8300089D +:1024C000AF44100000000000000000000000000009 +:1024D000000000008F8E000811C000040000000002 +:1024E0008F4210000441FFFE000000008F7F0000BB +:1024F000276400088F91003CAF9F0004948500087A +:102500009490000A9499000C30AFFFFF0010C400B3 +:102510003323FFFF11F100A6030320253C0E080022 +:102520008DCE04443C0C08008D8C044000E88821CA +:102530002626FFFE01C628210000682100A6F82BF0 +:10254000018D2021009F80213C010800AC2504441E +:102550003C010800AC30044024E200083042FFFF98 +:102560003047000710E000038F830018244F000756 +:1025700031E2FFF83106FFFF30C800070043802139 +:1025800032191FFF0359C021AF83001CAF990018F7 +:10259000271B4000AF590084110000038F8C0020DE +:1025A00024C5000730A6FFF88F84002800CC28211E +:1025B00000A4F82B17E00002AF8C002400A428230D +:1025C000AF850020AF4500803C0408008C840434B3 +:1025D00003454821340E8000012E6821108000053B +:1025E000AF8D0038939100172406000E12260011BB +:1025F0002407043F3C021000AF4201788F8800148A +:10260000250F00010A0001EFAF8F00140E0005C472 +:1026100000E020218F8800143C0B08008D6B048C97 +:102620003C0A08008D4A0488250F00010A0001EFCA +:10263000AF8F00143C021000A7470148AF42017859 +:102640000A0004CE8F88001424040F001184003D7A +:1026500030CE002015C0000224030009240300012D +:102660000A00021AA743014A0A00020DA7400146C8 +:1026700094EF000894F1000A94F0000C8F8C003C59 +:10268000001174003207FFFF31EDFFFF11AC00377E +:1026900001C720253C1808008F1804443C0F08008F +:1026A0008DEF0440000080210308682101A8382B29 +:1026B00001F0702101C760213C010800AC2D0444E9 +:1026C0003C010800AC2C04400A00027A8F840018F8 +:1026D0003C0208008C42047C3C0308008C630454D8 +:1026E0003C1F08008FFF04783C1808008F18045026 +:1026F000004838210068802100E8282B03E43021BD +:102700000208402B0304882100C57021022878218B +:102710003C010800AC3004543C010800AC2F0450CC +:102720003C010800AC27047C3C010800AC2E047876 +:102730000A00027A8F840018A74001460A00043577 +:102740008F91001830CD002015A0FFC52403000D87 +:10275000240300050A00021AA743014A974E010408 +:1027600025C5FFF00A00038130A4FFFF8F980040C9 +:102770001498FFC8000010213C0508008CA5046CCB +:102780003C1F08008FFF046800A8C8210328302BD5 +:1027900003E22021008640213C010800AC39046C92 +:1027A0003C010800AC2804680A00027A8F840018F3 +:1027B0008F8C0040148CFF5900E8C8213C18080099 +:1027C0008F18046C3C1108008E3104682723FFFE2B +:1027D00003034821000010210123302B0222702125 +:1027E00001C668213C010800AC29046C3C010800CA +:1027F000AC2D04680A0004A524E200088F88003884 +:102800003C03FFFF8D02000C0043F82403E4C825BD +:10281000AD19000C0A00038F30CBFFFF0A0003C381 +:10282000AE000000974A0104920400048E26000CBA +:10283000014458212579FFF200C7C0243325FFFF4A +:1028400003053825AE27000C0A0002E68E050010AD +:102850003C0DFFFF8D0A0010014D582401646025D6 +:10286000AD0C00100A00038F30CBFFFF974301042B +:10287000920E00048E290010006E1021244DFFEEF0 +:102880000127602431A8FFFF0188F825AE3F001022 +:102890000A0002E68E0500108E0F000CAE0000004C +:1028A00000078880023028210A0002B8ACAF00205F +:1028B0001460000D3058FFFF3C04FFFF0044682403 +:1028C00001A47026000E602B000D102B004CF82484 +:1028D00013E00002000000000000000D8CAF0000BB +:1028E0000A00025001E410253B03FFFF0003882B80 +:1028F0000018802B0211202410800002000000002C +:102900000000000D8CB900000A0002503722FFFFC2 +:102910003084FFFF30A5FFFF108000070000182162 +:10292000308200011040000200042042006518219E +:102930001480FFFB0005284003E000080060102120 +:1029400010C00007000000008CA2000024C6FFFF9A +:1029500024A50004AC82000014C0FFFB2484000402 +:1029600003E000080000000010A0000824A3FFFFFF +:10297000AC86000000000000000000002402FFFF01 +:102980002463FFFF1462FFFA2484000403E00008BC +:1029900000000000308EFFFF30D8FFFF00057C00F4 +:1029A00001F8602539CDFFFF01AC5021014C582BB7 +:1029B000014B4821000944023127FFFF00E8302184 +:1029C0000006240230C5FFFF00A418213862FFFF73 +:1029D00003E000083042FFFF3C0C08008D8C0484AB +:1029E000240BFF8027BDFFD001845021014B4824D8 +:1029F000AF4900203C0808008D080484AFB20020D5 +:102A0000AFB00018AFBF0028AFB30024AFB1001CB7 +:102A1000936600040104382130E4007F009A1021FD +:102A20003C0300080043902130C500200360802152 +:102A30003C080111277B000814A000022646007004 +:102A40002646006C9213000497510104920F000473 +:102A50003267000F322EFFFF31ED004001C72823FF +:102A600011A0000500004821925900BC3338000431 +:102A70001700009000000000924300BC307F00046B +:102A800013E0000F0000000010A0000D0000000087 +:102A9000960E0002240AFF8000A7602125CDFFFECC +:102AA000A74D1016920B0004014B2024308200FF2A +:102AB00010400085010C40253C0F0400010F40250B +:102AC0008F5301780660FFFE2404000AA7440140EA +:102AD000960D00022404000931AC0007000C5823B5 +:102AE000316A0007A74A0142960200022443FFFE12 +:102AF000A7430144A7400146975F0104A75F01482F +:102B00008F590108333800205300000124040001CC +:102B1000920F000431EE001015C000023483001043 +:102B200000801821A743014A0000000000000000B7 +:102B30000000000000000000AF481000000000008E +:102B40000000000000000000000000008F51100095 +:102B50000621FFFE3113FFFF12600003000000009A +:102B60008F481018ACC8000096030006307FFFFFA6 +:102B700027F900020019988200138880023B302157 +:102B80008CD800001520005700183402920300046E +:102B90002405FF8000A3F82433F100FF1220002C4D +:102BA00000000000924700BC30F2000212400028F2 +:102BB00000000000974B100C2562FFFEA742101684 +:102BC000000000003C0A040035490030AF49100005 +:102BD00000000000000000000000000000000000F5 +:102BE0008F4C10000581FFFE000000009749100C7B +:102BF0008F51101C00C020213127FFFF24F200302C +:102C0000001218820003288000BBF8213226FFFF43 +:102C1000AFF100000E0005B300112C020013C880B4 +:102C2000033B98218E78000000027400AFB80010BA +:102C30008FA80010310FFFFFAFAF00108FA400105E +:102C400001C46825AFAD00108FA60010AE6600006D +:102C500097730008976D000A9766000C8F8A003CF6 +:102C6000000D5C0030CCFFFF3262FFFF104A0036DF +:102C7000016C2025960600023C10100024D30008A9 +:102C80000E00013B3264FFFF974C01040E00014926 +:102C90003184FFFFAF5001788FBF00288FB300242D +:102CA0008FB200208FB1001C8FB0001803E0000825 +:102CB00027BD003010A0FF700000000024A5FFFC1D +:102CC0000A0005EC240900048CD10000AF51101853 +:102CD0008F5301780660FF7A2404000A0A00060177 +:102CE0000000000000A7C8218F8800388F4E101CFC +:102CF0000019C0820018788001E82021AC8E000005 +:102D0000000E2C0200C020210E0005B331C6FFFFCB +:102D1000023B28218CAD000000025400004030210D +:102D2000AFAD00108FAC0010318BFFFFAFAB0010C8 +:102D30008FA2001001424825AFA900108FA70010F4 +:102D40000A000631ACA700008F8F0040148FFFC926 +:102D50000000000097420104960B00023C050800A9 +:102D60008CA5046C3049FFFF316AFFFF3C1108005D +:102D70008E310468012A382124F2FFFE00B240217E +:102D80000012FFC30112C82B023FC02103192021EA +:102D90003C010800AC28046C3C010800AC24046829 +:102DA0000A00066B0000000000A4102B1040000970 +:102DB000240300010005284000A4102B04A00003F8 +:102DC000000318405440FFFC000528401060000735 +:102DD000000000000085302B14C0000200031842E0 +:102DE000008520231460FFFB0005284203E0000853 +:102DF000008010218F85002C27BDFFE800053027BB +:102E00002CC300012CA400020083102510400003F5 +:102E1000AFBF00102405007FAF85002C00052827D8 +:102E200030A5FFFF0E000592240426F58F830030A5 +:102E3000240402BD004030210083382B10E000093B +:102E400024050001000420400083102B04800003AF +:102E5000000528405440FFFC0004204010A000085A +:102E600000C350210064402B1500000200052842D9 +:102E70000064182314A0FFFB0004204200C350216B +:102E80008FBF0010000A4C02312200FF27BD00183E +:102E9000AF8A002C03E00008AF8900300A00002A46 +:102EA00000000000000000000000000D7478703683 +:102EB0002E322E3300000000060203000000000046 +:102EC000000001360000EA60000000000000000081 +:102ED00000000000000000000000000000000000F2 +:102EE00000000000000000000000000000000000E2 +:102EF00000000000000000000000000000000016BC +:102F000000000000000000000000000000000000C1 +:102F100000000000000000000000000000000000B1 +:102F200000000000000000000000000000000000A1 +:102F3000000000000000138800000000000005DC15 +:102F4000000000000000000010000003000000006E +:102F50000000000D0000000D3C02080024423C204F +:102F60003C03080024633DD4AC4000000043202B08 +:102F70001480FFFD244200043C1D080037BD7FFC87 +:102F800003A0F0213C100800261000A83C1C0800FB +:102F9000279C3C200E0002BA000000000000000D3B +:102FA0008F8300383C088000350700708CE50000F6 +:102FB000008330253C02900000C22025AF85003000 +:102FC000AF4400208F4900200520FFFE3C03800015 +:102FD000346200708C4500008F8600303C19080078 +:102FE0008F39007C3C0E08008DCE007800A620238F +:102FF00003245821000078210164682B01CF60214F +:10300000018D50213C010800AC2B007C3C010800E4 +:10301000AC2A007803E00008000000000A0000412C +:10302000240400018F8400383C05800034A2000194 +:103030000082182503E00008AF43002003E00008E9 +:10304000000010213084FFFF30A5FFFF1080000733 +:1030500000001821308200011040000200042042CC +:10306000006518211480FFFB0005284003E00008DC +:103070000060102110C00007000000008CA20000BA +:1030800024C6FFFF24A50004AC82000014C0FFFB8F +:103090002484000403E000080000000010A00008E1 +:1030A00024A3FFFFAC860000000000000000000029 +:1030B0002402FFFF2463FFFF1462FFFA248400044C +:1030C00003E0000800000000308AFFFF93A800130F +:1030D000A74A014497490E1630C600FF3C02100073 +:1030E000A7490146AF450148A3460152A748015AE6 +:1030F000AF4701608FA400188FA30014A7440158A4 +:10310000AF43015403E00008AF42017803E0000838 +:10311000000000003C038000346200708C49000015 +:103120008F8800002484000727BDFFF83084FFF853 +:10313000AF890030974D008A31ACFFFFAFAC000083 +:103140008FAB0000016850232547FFFF30E61FFFCB +:1031500000C4282B14A0FFF73C0C8000358B0070B6 +:103160008D6A00003C0708008CE700843C060800DC +:103170008CC6008000081082014918230002788064 +:1031800000E370210000202101C3C82B00C4C0212E +:1031900001FA4021031948212502400027BD0008FB +:1031A0003C010800AC2E00843C010800AC290080E2 +:1031B00003E00008000000008F8200002486000762 +:1031C00030C5FFF800A2182130641FFF03E000089B +:1031D000AF8400008F8700388F8A004027BDFFB87A +:1031E0008F860044AFB60040AFBF0044AFB5003C8F +:1031F000AFB40038AFB30034AFB20030AFB1002C81 +:10320000AFB000288F4501048D4900ACAF47008066 +:103210008CC8002000A938230000B021AF480E1050 +:103220008F440E1000004821AF440E148CC20024BD +:10323000AF420E188F430E18AF430E1C10E001254D +:103240002D230001936B0008116000D400000000E2 +:10325000976E001031CDFFFF00ED602B158000CF81 +:103260000000000097700010320FFFFFAF4F0E00FC +:103270008F520000325100081220FFFD00000000B4 +:1032800097540E088F460E043285FFFF30B30001BD +:1032900012600132000000000000000D30B8A040B4 +:1032A00024150040131500C030A9A0001120012DE5 +:1032B00000000000937F000813E0000800000000F9 +:1032C00097630010306BFFFF00CB402B1100000311 +:1032D00030AC00401180012300000000A785003CB5 +:1032E000AF8600349366000800E02821AFA70020D5 +:1032F00014C0012427B30020AF60000C9782003C6B +:103300003047400014E00002240300162403000E9E +:1033100024194007A363000AAF790014938A003E82 +:103320008F740014315800070018AA4002959025A8 +:10333000AF7200149784003C8F700014309100101D +:1033400002117825AF6F0014978E003C31CD000834 +:1033500011A00147000028218F6700143C021000D3 +:103360003C0C810000E22825AF65001497460E0A48 +:103370002408000E3405FFFC30C3FFFF006C582505 +:10338000AF6B0004A3680002937F000A27E90004E2 +:10339000A369000A9786003C9363000A30CC1F00A3 +:1033A000000C598301634021251F0028A37F0009D9 +:1033B00097490E0CA769001093790009272A00028B +:1033C000315800070018A82332B10007A371000B81 +:1033D00093740009976400108F910034978F003C1C +:1033E000329200FF024480210205702131ED00403D +:1033F00011A0000531C4FFFF0091282B3C12800072 +:1034000010A000140000A0210224382B14E0011B9E +:103410008FA500208F4D0E14AF4D0E108F420E1C45 +:10342000AF420E18AF440E008F4F000031EE00087F +:1034300011C0FFFD0000000097540E080080882195 +:1034400000009021A794003C8F500E04241400012A +:10345000AF900034976400103095FFFF8E68000035 +:103460000111F82317E00009AE7F00008F650014FA +:103470008F8B004434A60040AF6600148F4C0E10B2 +:10348000AD6C00208F430E18AD63002493670008D5 +:1034900014E000D2000000000E00009E2404001082 +:1034A0008F8900483C08320000402821312600FF67 +:1034B0000006FC0003E8502525390001AF990048BB +:1034C000AC4A0000937800099370000A330400FFAF +:1034D00000047400320F00FF01CF6825AC4D0004DA +:1034E0008F820048064000EAACA20008ACA0000CA5 +:1034F0009783003C306B0008156000022628000608 +:1035000026280002974E0E148F450E1C8F6700046C +:10351000936D000231C4FFFF31A200FFAFA2001083 +:103520008F6C0014AFA800180E00008BAFAC001415 +:10353000240400100E0000C7000000008E7200007E +:1035400016400005000000008F6400142405FFBF32 +:1035500000859824AF7300148F79000C033538214F +:10356000AF67000C9375000816A00008000000006B +:1035700012800006000000008F7F00143C0BEFFF5C +:103580003568FFFE03E84824AF690014A3740008FF +:103590008FA500200A00024602202021AF470E001E +:1035A0000A0000F5000000008F5901780720FFFE97 +:1035B000241F08008F840000AF5F0178974B008ABA +:1035C000316AFFFF014448232528FFFF31021FFF16 +:1035D0002C4300081460FFF9000000008F8E0048A3 +:1035E0008F8D003800C048210344202125C60001EA +:1035F000240C0F00AF86004800E9382324864000E1 +:1036000031CA00FF11AC0005240800019391003E6F +:103610003230000700107A4035E80001000AAC00A3 +:103620003C18010002B8A025AC9440008F930048DC +:1036300030B2003630A40008ACD3000410800097EC +:1036400001123025974E0E0A8F8D00003C0281003A +:1036500031CCFFFF25AB0008018240253C03100060 +:1036600031651FFF25390006241F000EAF48016099 +:1036700000C33025A75F015AAF850000A759015844 +:1036800014E0000A8F93003824120F0052720002D7 +:103690002416000134C600408F580E108F94004449 +:1036A000AE9800208F550E18AE9500248F450E144D +:1036B000AF4501448F590E1CAF590148A34A01522E +:1036C0003C0A1000AF460154AF4A017814E0FEDD19 +:1036D0002D2300010076A025128000178FBF004423 +:1036E0008F84003824160F0010960084000000001C +:1036F0008F45017804A0FFFE24150F001095006E81 +:10370000000000008F470E14240202403C1F1000EE +:10371000AF4701448F440E1CAF440148A3400152FF +:10372000A740015AAF400160A7400158AF42015481 +:10373000AF5F01788FBF00448FB600408FB5003C6B +:103740008FB400388FB300348FB200308FB1002CAB +:103750008FB0002803E0000827BD004814C0FED049 +:1037600030B8A0408F420E148F84004400004821DE +:10377000AC8200208F510E1CAC9100240A00020E76 +:103780002D2300018F910034978A003C3C12800069 +:103790000220A821315800401700FF300000A0216E +:1037A000976900108F9200343139FFFF13320035D2 +:1037B00000002021008048211480FEA000A03821B4 +:1037C0008F420E148F840044AC8200208F510E1C57 +:1037D000AC9100240A00020E2D230001936A000917 +:1037E0009378000B315000FF330F00FF020F702160 +:1037F00025C2000A3050FFFF0E00009E020020216B +:103800008F8600483C1F410024CD0001AF8D004849 +:10381000936C000930C600FF00064400318300FFAE +:10382000246B0002010B4825013FC825AC5900005C +:103830008F67000C97440E1400F22825AC45000455 +:103840008F450E1C8F670004936A00023084FFFFCF +:10385000315800FFAFB800108F6F0014AFB10018DF +:103860000E00008BAFAF00140A0001A60200202159 +:10387000AF6000040A00013EA36000020A00024695 +:1038800000002021000090210A0001702414000192 +:103890003C1280000A000195ACB2000C8F91000030 +:1038A00025240002A744015826300008320F1FFFCC +:1038B0000A0001F9AF8F0000AF40014C1120002C2D +:1038C000000000008F590E10AF5901448F430E18AD +:1038D000240200403C1F1000AF430148A3400152A6 +:1038E000A740015AAF400160A7400158AF420154C0 +:1038F000AF5F01780A0002278FBF00441120000645 +:103900000000000097460E0830CC004015800002F1 +:10391000000000000000000D8F4D017805A0FFFEA3 +:103920000000000097530E103C120500240E2000EA +:10393000326AFFFF0152C025AF58014C8F4F0E1461 +:103940003C021000AF4F01448F500E1CAF50014895 +:10395000A34001528F840038A740015AAF40016054 +:10396000A7400158AF4E01540A000215AF4201783A +:103970008F490E14AF4901448F430E1C0A00028E7A +:10398000240200403C0E20FF27BDFFE03C1A8000CF +:103990003C0F800835CDFFFDAFBF001CAFB2001853 +:1039A000AFB10014AFB00010AF8F0040AF4D0E00AC +:1039B0000000000000000000000000000000000007 +:1039C000000000003C0C00FF358BFFFDAF4B0E00EC +:1039D0003C0660048CC95000240AFF7F3C11600043 +:1039E000012A40243507380CACC750008E24043817 +:1039F00024050009AF4500083083FFFF38622F71AE +:103A00002450C0B3AF8000480E000068AF800000B3 +:103A100052000001AE20442C0E0004353C11800001 +:103A20000E000ED9363000708F8A00403C1208001C +:103A300026523C88020088218E0800008F5F00001B +:103A40003BF900013338000113000017AF88003044 +:103A5000022048218D2700003C0F08008DEF006CEC +:103A60003C0C08008D8C006800E8C02301F8282178 +:103A70000000682100B8302B018D582101664021DB +:103A80003C010800AC25006C3C010800AC28006833 +:103A90008F44000038830001306200011440FFEDC4 +:103AA00000E04021AF8700308E0C00003C0508008C +:103AB0008CA5006C3C0408008C84006801883023CD +:103AC00000A638210000102100E6402B00821821BA +:103AD0000068F8213C010800AC27006C3C0108009C +:103AE000AC3F00688F49010025590088AF99004418 +:103AF000AF890038AF4900208E070000AF87003043 +:103B00008F4D017805A0FFFE000000008E0600002A +:103B10003C0B08008D6B00743C0408008C84007022 +:103B200000C728230165F8210000102103E5402B80 +:103B30000082382100E8C821240908003C0108005F +:103B4000AC3F00743C010800AC390070AF4901780B +:103B500093580108A398003E938F003E31EE000178 +:103B600015C000158F830038240E0D00106E00194B +:103B7000240F0F00106F001D00000000915900007D +:103B800024180050332900FF113800043C1F400066 +:103B9000AF5F01380A0002E7000000000E00090EC6 +:103BA000000000008F8A00403C1F4000AF5F0138DA +:103BB0000A0002E700000000938D003E31AC0006D1 +:103BC000000C51000E0000CE0152D8210A00034320 +:103BD0008F8A00403C1B0800277B3D080E0000CE6A +:103BE000000000000A0003438F8A00403C1B0800CD +:103BF000277B3D280E0000CE000000000A00034392 +:103C00008F8A004090AA00018FAB00108CAC00108E +:103C10003C0300FF8D680004AD6C00208CAD0014E7 +:103C200000E060213462FFFFAD6D00248CA7001816 +:103C30003C09FF000109C024AD6700288CAE001CC0 +:103C40000182C82403197825AD6F0004AD6E002CE5 +:103C50008CAD0008314A00FFAD6D001C94A9000234 +:103C60003128FFFFAD68001090A70000A56000029A +:103C7000A1600004A167000090A30002306200FF71 +:103C80000002198210600005240500011065000E75 +:103C90000000000003E00008A16A00018CD80028A1 +:103CA000354A0080AD7800188CCF0014AD6F001439 +:103CB0008CCE0030AD6E00088CC4002CA16A0001CF +:103CC00003E00008AD64000C8CCD001CAD6D001845 +:103CD0008CC90014AD6900148CC80024AD680008BC +:103CE0008CC70020AD67000C8CC200148C8300646C +:103CF0000043C82B13200007000000008CC20014F2 +:103D0000144CFFE400000000354A008003E0000886 +:103D1000A16A00018C8200640A000399000000007F +:103D200090AA000027BDFFF88FA9001CA3AA0000DD +:103D30008FAE00003C0FFF808FA8001835E2FFFF18 +:103D40008CCD002C01C26024AFAC0000A120000487 +:103D500000E06021A7A000028FB800008D270004BA +:103D60000188182100A0582100C05021006D28268C +:103D70003C06FF7F3C0F00FF2CAD000135EEFFFF3E +:103D800034D9FFFF3C02FF0003193024000D1DC091 +:103D9000010EC82400E2C02400C370250319782551 +:103DA000AD2E0000AD2F00048D450024AFAE000005 +:103DB000AD2500088D4D00202405FFFFAD2D000C22 +:103DC000956800023107FFFFAD27001091660018CB +:103DD00030C200FF000219C2506000018D4500345E +:103DE000AD2500148D67000827BD0008AD27001C15 +:103DF0008C8B00CCAD2C0028AD20002CAD2B0024EA +:103E0000AD20001803E00008AD20002027BDFFE032 +:103E1000AFB20018AFB10014AFB00010AFBF001CBC +:103E20009098000000C088213C0D00FF330F007FF8 +:103E3000A0CF0000908E000135ACFFFF3C0AFF00D0 +:103E4000A0CE000194A6001EA22000048CAB00149A +:103E50008E29000400A08021016C2824012A40241E +:103E60000080902101052025A6260002AE24000432 +:103E700026050020262400080E00007624060002F5 +:103E800092470000260500282624001400071E0083 +:103E90000003160324060004044000032403FFFF6C +:103EA000965900023323FFFF0E000076AE23001068 +:103EB000262400248FBF001C8FB200188FB100147D +:103EC0008FB0001024050003000030210A0000809C +:103ED00027BD002027BDFFD8AFB1001CAFB0001830 +:103EE000AFBF002090A80000240200018FB0003C6A +:103EF0003103003F00808821106200148FAA00382F +:103F0000240B0005506B0016AFAA001000A0202162 +:103F100000C028210E0003DC02003021922400BCE6 +:103F2000308300021060000326060030ACC00000A1 +:103F300024C600048FBF00208FB1001C8FB0001872 +:103F400000C0102103E0000827BD002801403821EF +:103F50000E00035AAFB000100A0004200000000059 +:103F60000E0003A1AFB000140A00042000000000FE +:103F70003C02000A034218213C04080024843D6CE2 +:103F80002405001A000030210A000080AF8300548D +:103F90003C038000346200708C48000000A058216F +:103FA00000C04821308A00FFAF8800308F4401787C +:103FB0000480FFFE3C0C8000358600708CC500003C +:103FC0003C0308008C6300743C1808008F180070D4 +:103FD00000A82023006468210000C82101A4782BD8 +:103FE0000319702101CF60213C010800AC2D007441 +:103FF0003C010800AC2C00708F480E14AF480144FF +:10400000AF47014CA34A0152A74B01589346010800 +:1040100030C5000854A0000135291000934B090059 +:1040200024070050316A00FF11470007000000001C +:104030008F450E1CAF450148AF4901543C091000A3 +:1040400003E00008AF490178934D010831A800084A +:104050001100001000000000934F010831EE001025 +:1040600051C00001352900083C04080090843DD06F +:10407000A34401508F4309A4AF4301488F4209A0D4 +:10408000AF420144AF4901543C09100003E000086D +:10409000AF4901783C1908008F393D8C333800084E +:1040A0005700FFF1352900080A00047300000000E2 +:1040B00024070040AF470814AF4008108F4209445E +:1040C0008F4309508F4409548F45095C8F46094C32 +:1040D000AF820064AF830050AF84004CAF85005CBA +:1040E00003E00008AF8600609346010930C5007FF9 +:1040F000000518C0000521400083102103E00008DE +:10410000244200883C09080091293D9124A800021E +:104110003C05110000093C0000E8302500C51825C9 +:1041200024820008AC83000003E00008AC80000497 +:104130009347010B8F4A002C974F09083C18000E3B +:104140000358482131EEFFFF000E41C0AF48002C5C +:1041500097430908952C001A008040212403000190 +:10416000318BFFFFAC8B00008D2D001C00A058216F +:1041700000C06021AC8D00048D24002030E7004099 +:10418000AD04000891220019304400031083004858 +:104190002885000214A00062240600021086005642 +:1041A00024190003109900660000000010E0003A96 +:1041B000000000003C07080094E73D8624E200016F +:1041C000934F0934934709219525002A31EE00FFCA +:1041D000000E488230ED00FF978700580009360036 +:1041E000000D1C003044FFFF00C310250044C02513 +:1041F00000A778213C19400003197025000F4C00DE +:10420000AD090004AD0E0000934D09203C030006EB +:1042100025090014000D360000C32025AD04000858 +:104220008F59092C24E5000130A27FFFAD19000C45 +:104230008F580930A782005825020028AD180010B9 +:104240008F4F0938AD0F0014AD2B00048F4E09407D +:10425000AD2E0008934D09373C05080090A53D9010 +:104260008F4409488F46094031A700FF00EC182110 +:10427000008678230003C7000005CC0003196025E1 +:1042800031E8FFFC01885825AD2B000CAD20001053 +:1042900003E00008AF4A002C3C0D080095AD3D86B8 +:1042A0003C0E080095CE3D800A0004C901AE1021E5 +:1042B0003C05080094A53D8A3C06080094C63D8054 +:1042C0003C18080097183D7C952E002400A6782104 +:1042D00001F86823000E240025A2FFF200821825B1 +:1042E00024190800AD03000CAD190014AD00001036 +:1042F0000A0004C4250800189526002495250028E6 +:104300000006C40000057C00370E810035ED080072 +:10431000AD0E000CAD0D00100A0004C425080014F9 +:104320001480FFA200000000952400240004140063 +:1043300034430800AD03000C0A0004C42508001033 +:104340003C03080094633D8A3C05080094A53D8029 +:104350003C06080094C63D7C953900249538002819 +:10436000006520210086782300196C000018740075 +:1043700025E2FFEE01C2202535A3810024190800A3 +:10438000AD03000CAD040010AD190018AD00001411 +:104390000A0004C42508001C03E00008240201F4FC +:1043A00027BDFFE8AFB00010AFBF00140E000060E3 +:1043B0000080802124050040AF4508148F83005001 +:1043C0008F84004C8F85005C0070182100641023DE +:1043D00018400004AF830050AF6300548F66005450 +:1043E000AF86004C1200000C000000008F440074E7 +:1043F000936800813409FA002D07000710E00005DA +:1044000000891021936C0081240B01F4018B50046E +:1044100001441021AF62000C8F4E095C01C5682376 +:1044200019A000048FBF00148F4F095CAF8F005C90 +:104430008FBF00148FB000100A00006227BD001863 +:104440008F8400648F8300508F82004CAF640044DF +:10445000AF63005003E00008AF6200543C038000EB +:10446000346200708C43000027BDFFF8308700FFE6 +:1044700030A900FF30C800FFAF8300308F440178BF +:104480000480FFFE3C028000345900708F38000029 +:10449000A3A700033C0708008CE700748FAC000062 +:1044A0003C0608008CC60070030378233C0E7FFF97 +:1044B00000EFC82135CDFFFF00005021018D2824D9 +:1044C00000CA1821000847C0032F202B00A8102580 +:1044D0000064C021AFA200003C010800AC390074A8 +:1044E0003C010800AC380070934F010AA3A0000201 +:1044F0003C0E80FFA3AF00018FAC0000312B007F8A +:1045000035CDFFFF018D4824000B5600012A4025C0 +:10451000240730002406FF803C05100027BD00085A +:10452000AF48014CAF470154A7400158A346015280 +:1045300003E00008AF45017827BDFFE8AFBF0014D6 +:10454000AFB000108F6500743C068000309000FF13 +:1045500000A620250E000060AF6400749363000580 +:10456000346200080E000062A362000502002021F0 +:104570008FBF00148FB00010240500052406000131 +:104580000A00057027BD001827BDFFE03C0380002E +:10459000AFB00010AFBF0018AFB1001434620070AC +:1045A0008C470000309000FF30A800FFAF8700303C +:1045B0008F4401780480FFFE3C18800037110070A2 +:1045C0008E2F00003C0D08008DAD00743C0A0800E1 +:1045D0008D4A007001E7702301AE282100005821A8 +:1045E00000AE302B014B4821012638213C01080048 +:1045F000AC250074000088213C010800AC27007045 +:104600001100000F000000008F6200742619FFFFE8 +:104610003208007F0002FE0233E5007F150000062D +:10462000332200FF2407FF800207202624A3FFFF78 +:1046300000838025320200FF0040802124111008F1 +:104640000E000060000000008F49081831250004AA +:1046500014A0FFFD3218007F001878C000187140C8 +:1046600001CF682125AC0088AF4C0818274A098083 +:104670008D4B0020AF4B01448D460024AF460148CE +:10468000A35001500E000062A740015802201021E3 +:104690008FBF00188FB100148FB0001003E0000826 +:1046A00027BD002027BDFFE8308400FFAFBF00100A +:1046B0000E0005BB30A500FF8F8300508FBF001098 +:1046C000344500402404FF903C02100027BD001830 +:1046D000AF43014CA3440152AF45015403E000082D +:1046E000AF4201789343093E306200081040000D4C +:1046F0003C0901013528080AAC8800008F47007486 +:10470000AC8700043C06080090C63D9030C5001000 +:1047100050A00006AC8000088F6A0060AC8A0008D8 +:104720002484000C03E00008008010210A00062207 +:104730002484000C27BDFFE8AFBF0014AFB0001009 +:104740009346093F00A050210005288000853823AA +:1047500030C200FF240300063C09080095293D866D +:1047600024E8FFD824050004104300372406000283 +:104770009750093C3C0F020400063400320EFFFF44 +:1047800001CF6825AC8D0000934C093E318B002091 +:104790001160000800000000934309363C02010349 +:1047A000345F0300307900FF033FC0252405000873 +:1047B000AC98000493430934935909210005F88209 +:1047C000306200FF0002C082332F00FF00186E002D +:1047D000000F740001AE6025018920253C094000CE +:1047E00000898025ACF0FFD8934309378F4F0948E3 +:1047F0008F580940306200FF004AC821033F7021F2 +:1048000001F86023000E6F0001A650253185FFFCE2 +:10481000001F58800145482501683821AD09002056 +:104820000E00006024F00028240400040E00006242 +:10483000A364003F020010218FBF00148FB000104E +:1048400003E0000827BD00180A0006352406001200 +:1048500027BDFFD024090010AFB60028AFB5002453 +:10486000AFB40020AFB10014AFB000103C0108009D +:10487000A0293D90AFBF002CAFB3001CAFB2001811 +:1048800097480908309400FF3C02000E3107FFFFF3 +:10489000000731C0AF46002C974409089344010B30 +:1048A00030B500FF03428021308300300000B0218A +:1048B0001060012500008821240C00043C01080040 +:1048C000A02C3D90934B093E000B5600000A2E038E +:1048D00004A0016000000000AF400048934F010BAE +:1048E00031EE002011C00006000000009358093E80 +:1048F00000189E0000139603064001890000000086 +:104900009344010B30830040106000038F930050EC +:104910008F8200502453FFFF9347093E30E6000882 +:1049200014C0000224120003000090219619002CEC +:1049300093580934934F0937A7990058330C00FF57 +:1049400031EE00FF024E6821000D5880016C5021AD +:10495000015140213C010800A4283D869205001821 +:1049600030A900FF010918213C010800A4233D885B +:104970009211001816200002000000000000000D37 +:104980003C010800A4233D8A3C010800A4203D808E +:104990003C010800A4203D7C935F010B3063FFFFC6 +:1049A00033F00040120000022464000A2464000B6B +:1049B0003091FFFF0E00009E022020219358010B32 +:1049C0003C08080095083D8A0040202100185982C3 +:1049D000316700010E00049A01072821934C010B56 +:1049E0008F4B002C974E09083C0F000E034F4021BF +:1049F00031CDFFFF000D51C0AF4A002C974309088D +:104A00009505001A004038212404000130A9FFFF59 +:104A1000AC4900008D06001C00404821318A00404E +:104A2000AC4600048D020020ACE20008910300199E +:104A300030630003106400EC28790002172001188D +:104A4000241000021070010C241F0003107F011EAF +:104A500000000000114000DE000000003C090800DA +:104A600095293D8625220001935F0934934E092143 +:104A70009504002A33F900FF0019C08231CF00FFEE +:104A8000978E005800184600000F6C00010D80251D +:104A90003045FFFF02051025008E50213C034000E9 +:104AA00000433025000A6400ACEC0004ACE60000D2 +:104AB000935F09203C19000624EC0014001FC60077 +:104AC00003197825ACEF00088F48092C25CD00018B +:104AD00031A57FFFACE8000C8F500930A785005846 +:104AE00024E80028ACF000108F4409380100802130 +:104AF000ACE40014AD9300048F530940AD9300085B +:104B0000934A09373C19080093393D908F4309486F +:104B10008F460940314200FF0052F82100667023A1 +:104B2000001F7F000019C40001F8282531CDFFFCCB +:104B300000AD2025AD84000CAD800010AF4B002CE3 +:104B4000934B093E317300081260000D3C060101D1 +:104B500034CC080AACEC00288F530074AD13000469 +:104B60003C0B0800916B3D903167001050E0000352 +:104B7000AD0000088F6A0060AD0A00082510000C27 +:104B800012C0003D000000009343093F24160006B8 +:104B900024060004306200FF105600C924070002FA +:104BA0009758093C3C0F0204330DFFFF01AF40252D +:104BB000AE0800009345093E30A400201080000894 +:104BC00000000000935309363C0B0103357F0300BE +:104BD000327900FF033F7025AE0E00042406000862 +:104BE000934F093493480921312AFFFF31ED00FF2B +:104BF000000D1082310300FF0002B60000032C00FC +:104C000002C56025018A9825001220803C094000D9 +:104C10000204502302695825AD4BFFD8935F093732 +:104C20008F4F09488F58094033F900FF0332702134 +:104C30000006B08201D668210007440001F828234D +:104C4000000D1F000068302530A2FFFC2547FFD86B +:104C500000C260250016808002074821ACEC0020CD +:104C6000253000280E00006024120004A372003FCB +:104C70000E000062000000009347010B30F200407C +:104C8000124000053C1900FF8E180000372EFFFF70 +:104C9000030E3024AE0600000E0000C702202021C3 +:104CA0003C10080092103D90321100031220000FBA +:104CB00002A028218F89005025330001AF930050B6 +:104CC000AF7300508F6B00540173F8231BE0000298 +:104CD000026020218F640054AF6400548F4C007434 +:104CE000258401F4AF64000C02A028210280202159 +:104CF000A76000680E0005BB3C1410008F850050B3 +:104D000034550006AF45014C8F8A00488FBF002CF8 +:104D10008FB3001C25560001AF9600488FB20018D3 +:104D2000A34A01528FB60028AF5501548FB1001429 +:104D3000AF5401788FB500248FB400208FB00010DD +:104D400003E0000827BD00309358093E00189E007C +:104D500000139603064200362411000293440923EF +:104D6000308300021060FEDD8F8600608F8200506D +:104D700014C2FEDA000000000E0000600000000017 +:104D80009369003F24070016312800FF1107000C2B +:104D9000240500083C0C0800918C3D90358B0001E7 +:104DA0003C010800A02B3D90936A003F314300FF77 +:104DB00010650065240D000A106D005E2402000CD1 +:104DC0000E000062000000000A00069000000000D3 +:104DD0003C09080095293D863C0A0800954A3D801B +:104DE0000A0006F3012A10213C09080095293D8A92 +:104DF0003C04080094843D803C06080094C63D7C39 +:104E000095030024012410210046F8230003CC0060 +:104E100027F0FFF20330C025240F0800ACF8000C87 +:104E2000ACEF0014ACE000100A0006EE24E7001816 +:104E30003C010800A0313D90935F093E241600011B +:104E400033F900201720FEA5241100080A0006905F +:104E5000241100048F6E00848F4D094011A0FE9E26 +:104E6000AF8E0050240F00143C010800A02F3D908D +:104E70000A00068F00000000950E0024950D002802 +:104E8000000E6400000D2C003589810034A6080056 +:104E9000ACE9000CACE600100A0006EE24E70014B2 +:104EA0001460FEEC000000009502002400021C00CB +:104EB00034640800ACE4000C0A0006EE24E700109D +:104EC0000A000741240700123C02080094423D8A70 +:104ED0003C06080094C63D803C03080094633D7C7A +:104EE00095100024951900280046F82103E3C023FB +:104EF00000106C0000197400270FFFEE01CF282569 +:104F000035AC8100ACEC000CACE5001024070800C7 +:104F1000AD2700182527001C0A0006EEAD2000145E +:104F20008F7F004CAF7F00548F7900540A000699A0 +:104F3000AF790050A362003F0E0000620000000045 +:104F40000A00069000000000240200140A0008274E +:104F5000A362003F27BDFFE8308400FFAFBF001011 +:104F60000E0005BB30A500FF9378007E9379007F8B +:104F7000936E00809368007A332F00FF001866005C +:104F8000000F6C0031CB00FF018D4825000B520053 +:104F90008FBF0010012A3825310600FF344470000D +:104FA00000E628252402FF813C03100027BD0018DD +:104FB000AF45014CAF440154A342015203E0000845 +:104FC000AF43017827BDFFD8AFB20018AFB10014CE +:104FD000AFB00010AFBF0020AFB3001C9342010977 +:104FE000308600FF30B000FF000618C23204000215 +:104FF0003071000114800005305200FF93670005F6 +:1050000030E5000810A0000D30C80010024020213B +:105010000E0005A702202821240400018FBF0020D4 +:105020008FB3001C8FB200188FB100148FB0001026 +:105030000080102103E0000827BD00281500003281 +:105040000000000093430109000028213062007F26 +:10505000000220C00002F94003E49821267900886C +:10506000033B98218E7800248E6F0008130F0046B2 +:10507000000000008F640084241800020004FD82F8 +:1050800033F900031338007C0000000093660083AE +:10509000934A0109514600043205007C10A00060CB +:1050A000000000003205007C14A0005302402021C3 +:1050B00016200006320400018E7F00248F5901045F +:1050C00017F9FFD600002021320400011080000AE9 +:1050D000024020218F4209408F9300641053000644 +:1050E000000000000E00066D022028218F430940B9 +:1050F000AF630044024020210E0006020220282156 +:105100000A000860240400013C0908008D2900649D +:10511000252600013C010800AC26006416000012A0 +:10512000000000008F6D00843C0E00C001AE6024C2 +:1051300015800005024020210E00082E02202821A3 +:105140000A00086024040001240500040E00057014 +:1051500024060001024020210E00082E02202821F2 +:105160000A000860240400010E000041240400012C +:10517000936B007D020B50250E000062A36A007D38 +:105180000A0008A38F6D00848F6600748F480104A5 +:105190008E67002400064E021507FFB63126007FF9 +:1051A000936B008326440001308A007F1146004340 +:1051B000316300FF5464FFB08F6400842645000112 +:1051C00030B1007F30A200FF122600042405000148 +:1051D000004090210A00087624110001240FFF806E +:1051E000024F702401CF9026324200FF00409021F0 +:1051F0000A000876241100010E00066D0220282105 +:10520000321800301300FFAA321000820240202121 +:105210000E0005A7022028210A00086024040001CE +:105220008F6E00743C0F80002405000301CF902591 +:10523000AF72007493710083240600010E000570A4 +:10524000322400FF0E00004124040001936D007D14 +:10525000020D60250E000062A36C007D3C0B08006F +:105260008D6B0054257000013C010800AC300054E7 +:105270000A000860240400018F6800743C09800063 +:105280002405000401093825AF6700749363008387 +:10529000240600010E000570306400FF0E0000417E +:1052A000240400019362007D020298250E00006232 +:1052B000A373007D0A00086024040001324D0080C1 +:1052C00039AC0080546CFF6C8F6400840A0008C9FC +:1052D0002645000127BDFFC83C0A0008AFBF0030CB +:1052E000AFB5002CAFB40028AFB30024AFB200209C +:1052F000AFB1001CAFB00018034AD8212409004008 +:10530000AF490814AF4008108F4209448F43095039 +:105310008F4609548F47095C8F48094C9344010814 +:105320009345010BAF820064308400FF30A500FF7D +:10533000AF830050AF86004CAF87005C0E00084A78 +:10534000AF8800601440017D8FBF0030A760006807 +:10535000934D0900240B00503C15080026B53D482C +:1053600031AC00FF3C12080026523D58118B00035F +:10537000000000000000A8210000902193510109C5 +:105380008F9F005024040010322E007F000E68C052 +:10539000000E6140018D282124B40088AF54081804 +:1053A0008F4901048F4A09A43C0B000E034BC02116 +:1053B000012A10233C010800AC223D6C8F430958A0 +:1053C0003C010800A0243D9097470908007F302346 +:1053D0003C010800AC263D7030E8FFFF0008C9C062 +:1053E0003C010800AC3F3D94AF59002C974209089E +:1053F0009710002C8EB10000930F001803749821B1 +:10540000A7900058AF9300440220F80931F000FF44 +:10541000304E000215C001B2304F000111E0014FC3 +:10542000000000009343093E3066000814C00002EB +:10543000241400030000A0218F5809A424130001A4 +:105440003C010800AC383D98934F0934935109371B +:1054500031EC00FF322E00FF028E6821000D288003 +:1054600000AC5021015058213C010800A42B3D887C +:105470003C010800A42A3D8693490934312200FFEB +:1054800002022021249000103C010800A4303D8439 +:10549000240700068F9F00503C010800AC273D8C7C +:1054A0008F88005C8F59095800008021011F282334 +:1054B00004A00149033F20230480014700A4302BAE +:1054C00010C00149000000003C010800AC253D70FF +:1054D0008E4200000040F809000000003043000246 +:1054E000146000F80040882130440001548000100E +:1054F0008E4200043C0908008D293D743C0AC0001E +:10550000012A8025AF500E008F45000030AB000807 +:105510001160FFFD00000000974D0E0824100001EF +:10552000A78D003C8F4C0E04AF8C00348E420004DB +:105530000040F8090000000002228825322E0002F7 +:1055400015C00180000000003C09080095293D7C41 +:105550003C06080094C63D883C0A0800954A3D7EFA +:105560003C1908008F393D74012660213C18080061 +:105570008F183D983C03080094633D92018A2021D6 +:105580008F4E09400329F821248F000203E32821CC +:10559000031968213C010800A42C3D8AAF8E0064E9 +:1055A0003C010800AC2D3D983C010800A4253D803D +:1055B0000E00009E31E4FFFF8F870048004020214D +:1055C0003C010800A0273D918E42000824E800011C +:1055D000AF8800480040F809000000009344010B28 +:1055E0008F4C002C974A09083C0B000E034B4021BE +:1055F0003149FFFF000919C08F8B0050AF43002CC9 +:10560000974309089506001A00403821308A004067 +:1056100030DFFFFFAC5F00008D19001C0040482107 +:10562000AC5900048D180020AC580008910F0019E7 +:1056300031E30003107300F0000000002862000254 +:105640001440010924050002106500FD240D00032B +:10565000106D010D00000000114000D90000000095 +:105660003C0A0800954A3D8625420001934D0934C5 +:1056700093580921950E002A31A300FF00032082D0 +:10568000331F00FF9798005800047E00001FCC00D5 +:1056900001F940253049FFFF0109102501D83021CB +:1056A0003C0540000045502500066C00ACED0004B0 +:1056B000ACEA0000934309203C04000624ED0014EA +:1056C0000003FE0003E4C825ACF900088F49092C4B +:1056D000270F000131EE7FFFACE9000C8F48093045 +:1056E000A78E005824E90028ACE800108F4509383F +:1056F00001204021ACE50014ADAB00048F4209400D +:10570000ADA20008934B09373C1F080093FF3D9062 +:105710008F4309488F4A0940316600FF00D4202199 +:10572000006A78230004C700001FCC000319282555 +:1057300031EEFFFC00AE1025ADA2000CADA00010B4 +:10574000AF4C002C934C093E318B00085160000F88 +:105750008E58000C3C06010134CA080AACEA002845 +:105760008F4B0074AD2B00043C0C0800918C3D90D5 +:105770003187001050E00003AD2000088F62006008 +:10578000AD2200082528000C8E58000C0300F809F3 +:10579000010020213C19080097393D8A3C1F080070 +:1057A00097FF3D7E033F782125E900020E0000C7E8 +:1057B0003124FFFF3C0E08008DCE3D6C3C080800F4 +:1057C0008D083D7401C828233C010800AC253D6CC0 +:1057D00014A00006000000003C0308008C633D8C10 +:1057E000346400403C010800AC243D8C1200007081 +:1057F0008F8C00448F470E108F900044AE0700201E +:105800008F4D0E18AE0D00243C10080096103D8000 +:105810000E0000600000000024020040AF420814A7 +:105820008F8600508F8A004C00D01821006A5823C0 +:1058300019600004AF830050AF6300548F650054BB +:10584000AF85004C1200000C000000008F44007473 +:10585000936800813409FA002D0E000711C000057D +:1058600000891821937F0081241901F403F9780439 +:1058700001E41821AF63000C8F44095C8F83005C46 +:105880000083C0231B000003000000008F50095C50 +:10589000AF90005C0E000062000000008F8C005092 +:1058A0008E4700103C010800AC2C3D9400E0F80944 +:1058B000000000003C0D08008DAD3D6C55A0FEF5CC +:1058C000240700068F450024975909088F8B006430 +:1058D0008F9400503C0F001F978200588F86005411 +:1058E0008F93004C3328FFFF35E9FF8000A9502437 +:1058F000000871C032320100AF4E0024A4C2002C57 +:10590000AF4A0024AF6B0044AF740050AF73005433 +:105910001640008032380010570000868EA4000424 +:10592000322300405460001B8EB100088EB0000C82 +:105930000200F809000000008FBF00308FB5002C76 +:105940008FB400288FB300248FB200208FB1001CC9 +:105950008FB0001803E0000827BD00389347010905 +:105960008F8800380007FE0003E8C825AF59008083 +:105970008F5809A08F5309A4AFB80010AF580E1468 +:105980008FB40010AF540E10AF530E1C0A00096202 +:10599000AF530E180220F809000000008EB0000C72 +:1059A0000200F809000000000A000AA88FBF0030BA +:1059B000A5800020A59300220A000A5BAD93002475 +:1059C0003C09080095293D863C06080094C63D80A8 +:1059D0000A0009F4012610213C010800AC203D70AA +:1059E0000A00098E8E4200003C010800AC243D7084 +:1059F0000A00098E8E4200003C03080094633D8A31 +:105A00003C04080094843D803C1F080097FF3D7CC7 +:105A1000951800240064C821033F782300186C0007 +:105A200025EEFFF201AE2825AC45000C240208004B +:105A3000ACE20014ACE000100A0009EF24E7001803 +:105A400095060024950900280006240000091C0082 +:105A5000349F810034790800ACFF000CACF90010D1 +:105A60000A0009EF24E700141460FEFB00000000A8 +:105A70009518002400187C0035EE0800ACEE000CF0 +:105A80000A0009EF24E700103C07080094E73D8076 +:105A90003C04080094843D8A3C03080094633D7CE8 +:105AA00095190024951800280087F82103E378232E +:105AB0002407080000192C0000186C0025EEFFEEEA +:105AC00001AE302534A28100AD2700182527001C27 +:105AD000AD22000CAD2600100A0009EFAD20001425 +:105AE00093520109000028210E000602324400FFF3 +:105AF0008FBF00308FB5002C8FB400288FB30024E7 +:105B00008FB200208FB1001C8FB0001803E0000896 +:105B100027BD0038935F010933E400FF0E00066DD6 +:105B200000002821323800105300FF7E322300404D +:105B30008EA400040080F809000000000A000AA2F8 +:105B4000322300401200FF5F000000008F540E144B +:105B50008F920044AE5400208F530E1C0A000A8A14 +:105B6000AE5300248F82001C008040213C040100C1 +:105B70009047008530E3002010600009000000001D +:105B80003C0708008CE73D948F83001800E3202336 +:105B9000048000089389000414E30003010020211D +:105BA00003E00008008010213C04010003E000082D +:105BB000008010211120000B006738238F8C0020FB +:105BC00024090034918B00BC316A0002514000016D +:105BD0002409003000E9682B15A0FFF10100202105 +:105BE00000E938232419FFFC00B9C02400F9782407 +:105BF00000F8702B15C0FFEA01E8202130C2000335 +:105C00000002182314C00012306900030000302184 +:105C100000A9702101C6682100ED602B1180FFE012 +:105C20003C0401002D2F00010006482B01053821FE +:105C300001E9302414C0FFDA24E4FFFC2419FFFC3E +:105C400000B9C0240308202103E0000800801021CF +:105C50008F8B002024060004916A00BC31440004AC +:105C60001480FFEC00A970210A000B5E00003021B7 +:105C700027BDFFE8AFBF00108F460100934A01091E +:105C80003C1F08008FFF00902407FF80314F00FF6A +:105C900031E8007F0008614003E6C821032CC021E1 +:105CA00027090120012770243C010800A02F3DD0C6 +:105CB000AF4E080C3C0D08008DAD00903C040080F8 +:105CC0003482000301A65821016C182124650120AB +:105CD00030AA007801424025AF48081C3C1F08004C +:105CE0008FFF00908F88004003E6C0213319000722 +:105CF00003074824033A7821AF49002825E909C061 +:105D0000952E00023C0D08008DAD008C3C0A080069 +:105D10008D4A009031CC3FFF01A61821000C59801C +:105D2000006B282100A72024AF44002C95220002FC +:105D30003C1F08008FFF008C9107008530593FFF02 +:105D400003E678210019C1800146702101F868211D +:105D500031CC007F31AB007F019A2821017A50219C +:105D60003C03000C3C04000E00A328210144102138 +:105D700030E6002027470980AF82002CAF88001C46 +:105D8000AF890024AF85002010C00006AF8700282F +:105D90008D0200508CA4010C0044302318C0007701 +:105DA00000000000910C0085240DFFDF018D3824D8 +:105DB000A10700858F8B001C8F8900248F87002806 +:105DC0008D65004CAF850018912F000D31EE00203D +:105DD00011C000170000000024090001A38900047D +:105DE000AF80000C8CE400248F85000C240A00088E +:105DF000AF800008AF8000103C010800A42A3D7E5F +:105E00003C010800A4203D920E000B32000030211E +:105E10008F8500248FBF0010AF82001490A8000D62 +:105E200027BD00180008394203E0000830E20001F5 +:105E3000913F00022418000133F900FF001921826C +:105E400010980039240800021088005B8F86002C0F +:105E50008CE5002414A0001B8F9F002091220000DD +:105E6000240A00053046003F10CA00472404000100 +:105E70008F860008A3840004AF860010AF86000C54 +:105E80008CE400248F85000C240A00083C010800E3 +:105E9000A42A3D7E3C010800A4203D920E000B3256 +:105EA000000000008F8500248FBF0010AF82001417 +:105EB00090A8000D27BD00180008394203E0000833 +:105EC00030E200018CF800088CF900248FEE00C449 +:105ED000A38000048CE40024AF8E000C8F85000C9E +:105EE0008F86000803197823240A0008AF8F00105A +:105EF0003C010800A42A3D7E3C010800A4203D92FC +:105F00000E000B32000000008F8500248FBF0010B0 +:105F1000AF82001490A8000D27BD00180008394278 +:105F200003E0000830E20001912300003062003FEE +:105F3000104400278F8500208CE400241480002169 +:105F4000000000008D2E00183C187FFF8F85002078 +:105F5000370FFFFF01CF1824AF8300088F9F000881 +:105F60008CA8008403E8C82B1720000203E020213E +:105F70008CA400840A000BEDAF8400088CA3010CF4 +:105F80000A000BCBAF8300188D2C00188F860008F9 +:105F90003C0D7FFF8F89002035A3FFFF018358242C +:105FA00024040001AF8B0010AD2000CCA3840004BA +:105FB0000A000BF9AF86000C8CCA00140A000BED26 +:105FC000AF8A00088CA300C80A000C30AF83000819 +:105FD0008F84002C8CAC00648C8D0014018D582BA8 +:105FE00011600004000000008CA200640A000C3064 +:105FF000AF8200088C8200140A000C30AF820008C7 +:106000008F85000C27BDFFE0AFBF0018AFB10014B3 +:1060100014A00007AFB000108F86002424020005F2 +:1060200090C400003083003F106200B68F840020CF +:106030008F91000800A080218F8C00283C0508006B +:106040008CA53D708D8B000431663FFF00C5502B41 +:106050005540000100C02821938D000411A0007359 +:1060600000B0F82B8F98002024040034930F00BC5C +:1060700031EE000251C000012404003000A4C82BFE +:10608000172000D10000000000A4282300B0F82B46 +:106090003C010800A4243D7C17E000680200202198 +:1060A0003C0308008C633D6C0083102B54400001BE +:1060B000008018218F8800243C010800AC233D7427 +:1060C000000048219104000D308300205060000141 +:1060D0008F490E188F8300140123382B10E00059CC +:1060E000000000003C0408008C843D7400895821A5 +:1060F000006B502B114000560090602B006930233C +:1061000000C020213C010800AC263D7412000003B1 +:10611000241FFFFC1090008A32270003009FC82430 +:106120003C010800AC393D743C010800A4203D92BC +:106130008F84000C120400078F830020AF910008A9 +:10614000020020218C7100CCAF90000C26300001A1 +:10615000AC7000CC3C0208008C423D748F8A001069 +:10616000240700180082202301422823AF84000C5A +:1061700010800002AF850010240700108F86001CDD +:106180003C010800A0273D902407004090CC0085EA +:10619000318B00C0116700408F8D001414A00015D2 +:1061A00000002021934A01098F420974314500FF04 +:1061B0000002260224A300013090007F3071007F8E +:1061C0001230007A2407FF80A0C300833C09080036 +:1061D0008D293D8C8F880024240D0002352C000869 +:1061E0003C010800A02D3DD13C010800AC2C3D8CA9 +:1061F00024040010910E000D31C6002010C00005CF +:1062000000801821240800013C010800AC283D74DE +:10621000348300018FBF00188FB100148FB00010BD +:106220000060102103E0000827BD00203C010800A9 +:10623000A4203D7C13E0FF9A020020210A000C817B +:1062400000A020213C0408008C843D740090602B49 +:106250001180FFAE000000003C0F080095EF3D7C70 +:1062600001E4702101C6682B11A000072C820004F4 +:106270003C1F60008FF954043338003F1700FFE5DE +:10628000240300422C8200041040FFA0240300429B +:106290000A000CDF8FBF0018152DFFC000000000A2 +:1062A0008CDF00743C0380002405FF8003E3C825D5 +:1062B000ACD9007490D80085240E0004240400108A +:1062C000330F003F01E54025A0C800858F880024DA +:1062D0003C010800A02E3DD1240300019106000DD1 +:1062E00030C9002015200003000000003C03080016 +:1062F0008C633D743C010800AC233D6C0A000CD655 +:10630000000000008F8700108C88008400E8282B94 +:1063100014A0000200E088218C910084240900016F +:10632000A38900048F440E18022028210E000B328E +:1063300002203021022080210A000C67AF82001465 +:1063400000071823306600033C010800A4263D9294 +:10635000122000058F8C0020918B00BC316A000454 +:106360001540001524CD00043C0F080095EF3D9228 +:1063700001E4702100AE302B50C0FF6E8F84000C02 +:106380002C85000514A0FFA32403004230980003CD +:1063900017000002009818232483FFFC3C0108002A +:1063A000AC233D740A000CA30000000000A7582491 +:1063B0000A000CCB016718263C010800A42D3D9271 +:1063C0000A000D33000000003C010800AC203D74C1 +:1063D0000A000CDE240300428F83001014600007C3 +:1063E000000010218F88002424050005910600007C +:1063F00030C400FF108500030000000003E0000827 +:1064000000000000910A0018314900FF000939C25C +:1064100014E0FFFA8F85001C3C04080094843D7C46 +:106420003C0308008C633D943C1908008F393D748F +:106430003C0F080095EF3D920064C0218CAD0054E4 +:106440000319702101CF6021018D58231960001DAF +:1064500000000000910E001C8F8C002C974B0E103A +:1064600031CD00FF8D850004016D30238D88000043 +:1064700030CEFFFF000E510000AAC82100003821D5 +:1064800001072021032A182B0083C021AD990004A5 +:10649000AD980000918F000A01CF6821A18D000AFC +:1064A0008F88002C974B0E12A50B0008950A003818 +:1064B00025490001A50900389107000D34E60008C0 +:1064C000A106000D03E000080000000027BDFFE06A +:1064D000938700048F8F00248FAD00143C0E7FFF44 +:1064E0008F89000C35C8FFFFAFBF001CAFB000188C +:1064F00001A8182491EA000D000717C03C1FBFFF38 +:10650000006258252D2E00018F90001837F9FFFFEB +:106510003C1808008F183D943C0F080095EF3D8A09 +:1065200001796824000E47803C07EFFF3C05F0FF2F +:1065300001A818253149002034E2FFFF34ACFFFFE9 +:106540000310582327A500102406000225EA0002A4 +:1065500000621824008080211520000200004021E4 +:106560008F480E1CA7AA0012056000372407000000 +:1065700030FF00FF001FCF008F8B001C00793825F3 +:10658000AFA70014916F00853C08080091083D9169 +:106590003C18DFFF31EE00C0370AFFFF000E182B5A +:1065A0003C1F080097FF3D8400EA6824A3A800115F +:1065B0000003174001A248258FB90010AFA90014AD +:1065C0003C0A0800914A3D93A7BF00168FA800140B +:1065D000032CC0243C0B01003C0F0FFF030B1825BC +:1065E0003147000335EEFFFF010C68240007160059 +:1065F000006EF8243C09700001A2C82503E9582563 +:10660000AFB90014AFAB00100E000076A3A00015C8 +:106610008F8C0024260200089186000D30C40020D3 +:10662000108000068FBF001C3C05080094A53D802B +:1066300024B0FFFF3C010800A4303D808FB000185B +:1066400003E0000827BD00208F9800140118502B8C +:106650005540FFC7240700010A000DB630FF00FFB8 +:106660009382000427BDFFE0AFBF00181040000F69 +:10667000008050218F880024240B00058F8900089A +:10668000910700008F8400200100282130E3003FA3 +:106690008F86002C106B000800003821AFA9001075 +:1066A0000E00040EAFAA0014A38000048FBF0018D0 +:1066B00003E0000827BD00208D1900183C0F0800DA +:1066C0008DEF3D748F9800103C027FFF8D08001401 +:1066D000345FFFFF033F682401F8702101AE60239F +:1066E00001883821AFA900100E00040EAFAA0014D3 +:1066F0000A000E04A38000048F8700243C050800D4 +:1067000094A53D923C0208008C423D8C90E6000D21 +:106710000005240030C300201060002C00444025F8 +:106720008F85001C00006021240B000190A30085D0 +:1067300000004821240A00013C0F800035EE007063 +:106740008DC70000AF8700308F5801780700FFFE2B +:106750003C038000347900708F3800003C0508004D +:106760008CA500743C0D08008DAD007003077823E4 +:1067700000AF38210000102100EF302B01A22021B2 +:10678000008618213C010800AC2700743C01080079 +:10679000AC230070AF4B01483C1908008F393D9481 +:1067A000A7490144A74A0146AF59014C3C0B0800D8 +:1067B000916B3D91A34B0152AF4801543C0810002E +:1067C000A74C015803E00008AF4801788F4B0E1C1E +:1067D0003C0A08008D4A3D7497490E16974D0E14D9 +:1067E00001456021312AFFFF0A000E2731A9FFFF72 +:1067F0008F8300249064000D308200201040002917 +:10680000000000000000482100005021000040214D +:106810003C07800034EB00708D670000AF870030CC +:106820008F4C01780580FFFE3C0D800035AC007078 +:106830008D8B00003C0508008CA500743C0408000A +:106840008C8400700167302300A67821000010219D +:1068500001E6C82B0082C021031970213C01080009 +:10686000AC2F00743C010800AC2E0070AF49014809 +:106870003C0D08008DAD3D94A7480144240900401B +:10688000A74A01463C081000240AFF91AF4D014C75 +:10689000A34A0152AF490154A740015803E0000840 +:1068A000AF4801788F490E1897460E1297450E1083 +:1068B00030CAFFFF0A000E5D30A8FFFF8F8300245F +:1068C00027BDFFF89064000D308200201040003A90 +:1068D00000000000240B000100004821240A0001F0 +:1068E0003C088000350700708CE30000AF83003067 +:1068F0008F4C01780580FFFE3C0E80003C040800B0 +:1069000090843DD035C700708CEC00003C05080039 +:106910008CA50074A3A400033C1908008F390070F3 +:106920008FAD00000183302300A638210000102124 +:106930000322782100E6C02B01F8602101AE40253A +:10694000AFA800003C010800AC2700743C0108001F +:10695000AC2C00709346010A3C04080090843DD1A1 +:10696000A3A00002A3A600018FA300003C0580FFA6 +:106970003099007F34A2FFFF006278240019C6001E +:1069800001F87025240D3000AF4E014C27BD0008E2 +:10699000AF4D0154A7400158AF4B0148A7490144EE +:1069A000A74A01463C091000240AFF80A34A01526D +:1069B00003E00008AF4901788F4B0E1897460E127E +:1069C00097450E1030CAFFFF0A000E9130A9FFFF55 +:1069D0008F85001C2402008090A40085308300C0B5 +:1069E000106200058F8600208F8800088F87000CBA +:1069F000ACC800C8ACC700C403E000080000000039 +:106A00003C0A0800254A39543C09080025293A2047 +:106A10003C08080025082DD43C07080024E73B3437 +:106A20003C06080024C637C43C05080024A5353CB4 +:106A30003C040800248431643C0308002463385C6F +:106A40003C020800244236303C010800AC2A3D508C +:106A50003C010800AC293D4C3C010800AC283D48F5 +:106A60003C010800AC273D543C010800AC263D64C5 +:106A70003C010800AC253D5C3C010800AC243D58BD +:106A80003C010800AC233D683C010800AC223D609D +:086A900003E000080000000013 +:00000001FF --- linux-raspi2-4.2.0.orig/firmware/bnx2/bnx2-mips-09-6.2.1b.fw.ihex +++ linux-raspi2-4.2.0/firmware/bnx2/bnx2-mips-09-6.2.1b.fw.ihex @@ -0,0 +1,6496 @@ +:10000000080001180800000000005594000000C816 +:1000100000000000000000000000000008005594EF +:10002000000000380000565C080000A00800000036 +:100030000000574400005694080059200000008436 +:100040000000ADD808005744000001C00000AE5CBD +:100050000800321008000000000092580000B01C98 +:10006000000000000000000000000000080092589E +:100070000000033C000142740800049008000400E2 +:10008000000012FC000145B000000000000000006C +:1000900000000000080016FC00000004000158AC3D +:1000A000080000A80800000000003D00000158B052 +:1000B00000000000000000000000000008003D00FB +:1000C00000000030000195B00A000046000000006A +:1000D000000000000000000D636F6D362E322E31DF +:1000E00062000000060201020000000000000003A0 +:1000F000000000C800000032000000030000000003 +:1001000000000000000000000000000000000000EF +:1001100000000010000001360000EA600000000549 +:1001200000000000000000000000000000000008C7 +:1001300000000000000000000000000000000000BF +:1001400000000000000000000000000000000000AF +:10015000000000000000000000000000000000009F +:10016000000000020000000000000000000000008D +:10017000000000000000000000000000000000007F +:10018000000000000000000000000010000000005F +:10019000000000000000000000000000000000005F +:1001A000000000000000000000000000000000004F +:1001B000000000000000000000000000000000003F +:1001C000000000000000000000000000000000002F +:1001D000000000000000000000000000000000001F +:1001E0000000000010000003000000000000000DEF +:1001F0000000000D3C020800244256083C030800A1 +:1002000024635754AC4000000043202B1480FFFDB2 +:10021000244200043C1D080037BD9FFC03A0F021D0 +:100220003C100800261001183C1C0800279C5608AA +:100230000E000256000000000000000D27BDFFB4B4 +:10024000AFA10000AFA20004AFA30008AFA4000C50 +:10025000AFA50010AFA60014AFA70018AFA8001CF0 +:10026000AFA90020AFAA0024AFAB0028AFAC002C90 +:10027000AFAD0030AFAE0034AFAF0038AFB8003C28 +:10028000AFB90040AFBC0044AFBF00480E001544FA +:10029000000000008FBF00488FBC00448FB90040B1 +:1002A0008FB8003C8FAF00388FAE00348FAD003078 +:1002B0008FAC002C8FAB00288FAA00248FA90020C0 +:1002C0008FA8001C8FA700188FA600148FA5001000 +:1002D0008FA4000C8FA300088FA200048FA1000040 +:1002E00027BD004C3C1B60108F7A5030377B502864 +:1002F00003400008AF7A00008F82002427BDFFE092 +:10030000AFB00010AFBF0018AFB100148C42000CAA +:100310003C1080008E110100104000348FBF001887 +:100320000E000D84000000008F85002024047FFF54 +:100330000091202BACB100008E030104960201084D +:1003400000031C003042FFFF00621825ACA300042C +:100350009202010A96030114304200FF3063FFFF4E +:100360000002140000431025ACA200089603010C03 +:100370009602010E00031C003042FFFF00621825A8 +:10038000ACA3000C960301109602011200031C009E +:100390003042FFFF00621825ACA300108E02011846 +:1003A000ACA200148E02011CACA20018148000083C +:1003B0008F820024978200003C0420050044182509 +:1003C00024420001ACA3001C0A0000C6A782000062 +:1003D0003C0340189442001E00431025ACA2001CB0 +:1003E0000E000DB8240400018FBF00188FB1001457 +:1003F0008FB000100000102103E0000827BD00208E +:100400003C0780008CE202B834E50100044100089A +:10041000240300013C0208008C42006024420001D9 +:100420003C010800AC22006003E0000800601021DD +:100430003C0208008C42005C8CA4002094A30016AF +:100440008CA6000494A5000E24420001ACE40280B6 +:100450002463FFFC3C010800AC22005C3C0210005D +:10046000A4E30284A4E5028600001821ACE6028819 +:10047000ACE202B803E000080060102127BDFFE0F5 +:100480003C028000AFB0001034420100AFBF001C3E +:10049000AFB20018AFB100148C43000094450008BF +:1004A0002462FE002C42038110400003000381C23D +:1004B0000A00010226100004240201001462000553 +:1004C0003C1180003C02800890420004305000FF44 +:1004D0003C11800036320100964300143202000FB6 +:1004E00000021500004310253C0308008C63004403 +:1004F00030A40004AE220080246300013C01080007 +:10050000AC2300441080000730A200028FBF001C03 +:100510008FB200188FB100148FB000100A0000CE07 +:1005200027BD00201040002D0000182130A20080BF +:1005300010400005362200708E44001C0E000C672F +:10054000240500A0362200708C4400008F82000C2D +:10055000008210232C43012C10600004AF82001095 +:10056000240300010A000145AF84000C8E42000400 +:100570003C036020AF84000CAC6200143C02080015 +:100580008C42005850400015000018218C62000475 +:10059000240301FE304203FF144300100000182121 +:1005A0002E020004104000032E0200080A00014041 +:1005B0000000802114400003000000000A000140F8 +:1005C0002610FFF90000000D2402000202021004B0 +:1005D0003C036000AC626914000018218FBF001C4E +:1005E0008FB200188FB100148FB00010006010217E +:1005F00003E0000827BD00203C0480008C8301003C +:1006000024020100506200033C0280080000000D3B +:100610003C02800890430004000010213063000F6A +:1006200000031D0003E00008AC8300800004188074 +:100630002782FF9C00621821000410C00044102390 +:100640008C640000000210C03C030800246356E4E0 +:10065000004310213C038000AC64009003E00008DC +:10066000AF8200243C0208008C42011410400019A3 +:100670003084400030A2007F000231C03C02020002 +:100680001080001400A218253C026020AC43001426 +:100690003C0408008C8456B83C0308008C630110AD +:1006A0003C02800024050900AC4500200086202182 +:1006B000246300013C028008AC4400643C01080053 +:1006C000AC2301103C010800AC2456B803E000083C +:1006D000000000003C02602003E00008AC4500146C +:1006E00003E000080000102103E0000800001021D2 +:1006F00030A2000810400008240201003C0208005B +:100700008C42010C244200013C010800AC22010C87 +:1007100003E0000800000000148200080000000050 +:100720003C0208008C4200FC244200013C0108000D +:10073000AC2200FC0A0001A330A200203C02080009 +:100740008C420084244200013C010800AC22008459 +:1007500030A200201040000830A200103C02080027 +:100760008C420108244200013C010800AC2201082F +:1007700003E0000800000000104000080000000036 +:100780003C0208008C420104244200013C010800A4 +:10079000AC22010403E00008000000003C02080055 +:1007A0008C420100244200013C010800AC220100FF +:1007B00003E000080000000027BDFFE0AFB1001417 +:1007C0003C118000AFB20018AFBF001CAFB00010EA +:1007D0003632010096500008320200041040000733 +:1007E000320300028FBF001C8FB200188FB10014BB +:1007F0008FB000100A0000CE27BD00201060000B53 +:10080000020028218E2401000E00018A0000000051 +:100810003202008010400003240500A10E000C6786 +:100820008E44001C0A0001E3240200018E2301040F +:100830008F82000810430006020028218E24010048 +:100840000E00018A000000008E220104AF82000821 +:10085000000010218FBF001C8FB200188FB1001450 +:100860008FB0001003E0000827BD00202C82000498 +:1008700014400002000018212483FFFD240200021E +:10088000006210043C03600003E00008AC626914DD +:1008900027BDFFE0AFBF001CAFB20018AFB100141E +:1008A000AFB000103C048000948201083043700017 +:1008B000240220001062000A2862200154400052E5 +:1008C0008FBF001C24024000106200482402600018 +:1008D0001062004A8FBF001C0A0002518FB200183C +:1008E00034820100904300098C5000189451000C90 +:1008F000240200091062001C0000902128620009F7 +:10090000144000218F8200242402000A5062001249 +:10091000323100FF2402000B1062000F00000000C3 +:100920002402000C146200188F8200243C0208008C +:100930008C4256B824030900AC83002000501021DB +:100940003C038008AC6200643C010800AC2256B84D +:100950000A0002508FBF001C0E0001E900102602A1 +:100960000A0002308F8200240E0001E900102602E6 +:100970003C0380089462001A8C72000C3042FFFF26 +:10098000020280258F8200248C42000C5040001E01 +:100990008FBF001C0E000D84000000003C02800090 +:1009A00034420100944300088F82002400031C009D +:1009B0009444001E8F82002000641825AC50000073 +:1009C00024040001AC510004AC520008AC40000CFF +:1009D000AC400010AC400014AC4000180E000DB844 +:1009E000AC43001C0A0002508FBF001C0E000440E4 +:1009F000000000000A0002508FBF001C0E000C9F78 +:100A0000000000008FBF001C8FB200188FB10014CF +:100A10008FB000100000102103E0000827BD002067 +:100A200027BDFFD8AFB400203C036010AFBF002447 +:100A3000AFB3001CAFB20018AFB10014AFB00010DC +:100A40008C6450002402FF7F3C1408002694563822 +:100A5000008220243484380CAC6450003C028000B6 +:100A6000240300370E0014B0AC4300083C07080014 +:100A700024E70618028010212404001D2484FFFFAF +:100A8000AC4700000481FFFD244200043C02080042 +:100A9000244207C83C010800AC2256403C02080032 +:100AA000244202303C030800246306203C04080072 +:100AB000248403B43C05080024A506F03C06080085 +:100AC00024C62C9C3C010800AC2256803C02080045 +:100AD000244205303C010800AC2756843C01080044 +:100AE000AC2656943C010800AC23569C3C010800FF +:100AF000AC2456A03C010800AC2556A43C010800DB +:100B0000AC2256A83C010800AC23563C3C0108002E +:100B1000AC2456443C010800AC2056603C0108005F +:100B2000AC2556643C010800AC2056703C0108001E +:100B3000AC27567C3C010800AC2656903C010800CE +:100B4000AC2356980E00056E00000000AF80000C2C +:100B50003C0280008C5300008F8300043C0208009C +:100B60008C420020106200213262000700008821C0 +:100B70002792FF9C3C100800261056E43C02080017 +:100B80008C42002024050001022518040043202483 +:100B90008F820004004310245044000C26310001D1 +:100BA00010800008AF9000248E4300003C028000BB +:100BB000AC4300900E000D4BAE05000C0A0002C1C4 +:100BC00026310001AE00000C263100012E22000269 +:100BD000261000381440FFE9265200043C020800A9 +:100BE0008C420020AF820004326200071040FFD91F +:100BF0003C028000326200011040002D326200028F +:100C00003C0580008CA2010000002021ACA2002045 +:100C10008CA301042C42078110400008ACA300A85B +:100C200094A2010824032000304270001443000302 +:100C30003C02800890420005304400FF0E0001593C +:100C4000000000003C0280009042010B304300FF96 +:100C50002C62001E54400004000310800E00018628 +:100C60000A0002EC00000000005410218C42000039 +:100C70000040F80900000000104000043C02800021 +:100C80008C4301043C026020AC4300143C02080089 +:100C90008C4200343C0440003C03800024420001AC +:100CA000AC6401383C010800AC220034326200021E +:100CB00010400010326200043C1080008E0201409F +:100CC000000020210E000159AE0200200E00038317 +:100CD000000000003C024000AE0201783C02080027 +:100CE0008C420038244200013C010800AC2200384C +:100CF000326200041040FF973C0280003C108000EC +:100D00008E020180000020210E000159AE02002059 +:100D10008E03018024020F00546200073C02800809 +:100D20008E0201883C0300E03042FFFF00431025A3 +:100D30000A000328AE020080344200809042000086 +:100D400024030050304200FF14430007000000005D +:100D50000E000362000000001440000300000000C9 +:100D60000E000971000000003C0208008C42003CAB +:100D70003C0440003C03800024420001AC6401B804 +:100D80003C010800AC22003C0A0002A33C028000A7 +:100D90003C02900034420001008220253C02800089 +:100DA000AC4400203C0380008C6200200440FFFE25 +:100DB0000000000003E00008000000003C0280008A +:100DC000344300010083202503E00008AC440020E8 +:100DD00027BDFFE0AFB10014AFB000100080882144 +:100DE000AFBF00180E00033230B000FF8F83FF94B6 +:100DF000022020219062002502028025A07000259B +:100E00008C7000183C0280000E00033D020280241A +:100E10001600000B8FBF00183C0480008C8201F884 +:100E20000440FFFE348201C024030002AC510000E4 +:100E3000A04300043C021000AC8201F88FBF0018F0 +:100E40008FB100148FB0001003E0000827BD002010 +:100E500027BDFFE83C028000AFBF00103442018094 +:100E6000944300048C4400083063020010600005C5 +:100E7000000028210E00100C000000000A0003787A +:100E8000240500013C02FF000480000700821824B2 +:100E90003C02040014620004240500018F82FF94C8 +:100EA00090420008240500018FBF001000A010210F +:100EB00003E0000827BD00188F82FF982405000179 +:100EC000A040001A3C028000344201400A00034264 +:100ED0008C4400008F85FF9427BDFFE0AFBF001C4E +:100EE000AFB20018AFB10014AFB0001090A2000074 +:100EF000304400FF38830020388200300003182B74 +:100F00000002102B0062182410600003240200501D +:100F1000148200A88FBF001C90A20005304200017F +:100F2000104000A48FBF001C3C02800034420140EE +:100F3000904200082443FFFF2C6200051040009EF1 +:100F40008FB20018000310803C030800246355ACE6 +:100F5000004310218C420000004000080000000007 +:100F60003C028000345101400E0003328E24000008 +:100F70008F92FF948E2200048E50000C1602000205 +:100F800024020001AE42000C0E00033D8E2400003E +:100F90008E220004145000068FBF001C8FB2001870 +:100FA0008FB100148FB000100A000F7827BD002009 +:100FB0008E42000C0A000419000000003C0480006E +:100FC0003482014094A300108C4200043063FFFF80 +:100FD0001443001C0000000024020001A4A2001021 +:100FE0008C8202380441000F3C0380003C02003F29 +:100FF0003448F0003C0760003C06FFC08CE22BBC8C +:1010000000461824004810240002130200031D8229 +:10101000106200583C0280008C8202380440FFF7C6 +:101020003C038000346201408C44000034620200C2 +:10103000AC4400003C021000AC6202380A00043BE1 +:101040008FBF001C94A200100A00041900000000C9 +:10105000240200201482000F3C0280003C03800028 +:1010600094A20012346301408C6300043042FFFFFD +:10107000146200050000000024020001A4A2001276 +:101080000A0004028FBF001C94A200120A00041977 +:1010900000000000345101400E0003328E24000095 +:1010A0008F92FF948E230004964200123050FFFF6F +:1010B0001603000224020001A64200120E00033DA6 +:1010C0008E2400008E220004160200068FBF001C32 +:1010D0008FB200188FB100148FB000100A00037C8B +:1010E00027BD0020964200120A00041900000000EB +:1010F0003C03800094A20014346301408C6300041C +:101100003042FFFF14620008240200018FBF001C60 +:101110008FB200188FB100148FB00010A4A2001479 +:101120000A00146327BD002094A20014144000217B +:101130008FBF001C0A000435000000003C03800043 +:1011400094A20016346301408C6300043042FFFF18 +:101150001462000D240200018FBF001C8FB2001822 +:101160008FB100148FB00010A4A200160A000B1457 +:1011700027BD00209442007824420004A4A200105D +:101180000A00043B8FBF001C94A200162403000138 +:101190003042FFFF144300078FBF001C3C020800D1 +:1011A0008C420070244200013C010800AC22007017 +:1011B0008FBF001C8FB200188FB100148FB00010C9 +:1011C00003E0000827BD002027BDFFD8AFB20018FC +:1011D0008F92FF94AFB10014AFBF0020AFB3001CDB +:1011E000AFB000103C028000345101008C5001006F +:1011F0009242000092230009304400FF2402001FA5 +:10120000106200AB28620020104000192402003850 +:101210002862000A1040000D2402000B286200081A +:101220001040002E8F820024046001042862000216 +:101230001440002A8F820024240200061062002637 +:101240008FBF00200A00055F8FB3001C1062006092 +:101250002862000B144000FA8FBF00202402000E09 +:10126000106200788F8200240A00055F8FB3001C93 +:10127000106200D2286200391040000A2402008067 +:1012800024020036106200E528620037104000C3D7 +:1012900024020035106200D98FBF00200A00055FCC +:1012A0008FB3001C1062002D2862008110400006E0 +:1012B000240200C824020039106200C98FBF002038 +:1012C0000A00055F8FB3001C106200A28FBF0020D0 +:1012D0000A00055F8FB3001C8F8200248C42000C33 +:1012E000104000D78FBF00200E000D8400000000CA +:1012F0003C038000346301008C6200008F85002075 +:10130000946700089466000CACA200008C64000492 +:101310008F82002400063400ACA400049448001E10 +:101320008C62001800073C0000E83825ACA20008D9 +:101330008C62001C24040001ACA2000C9062000A24 +:1013400000C23025ACA60010ACA00014ACA0001860 +:10135000ACA7001C0A00051D8FBF00208F8200244F +:101360008C42000C104000B68FBF00200E000D8490 +:10137000000000008F820024962400089625000CAF +:101380009443001E000422029626000E8F82002045 +:10139000000426000083202500052C003C0300806B +:1013A00000A6282500832025AC400000AC400004A6 +:1013B000AC400008AC40000CAC450010AC40001440 +:1013C000AC400018AC44001C0A00051C24040001B9 +:1013D0009622000C14400018000000009242000504 +:1013E0003042001014400014000000000E000332D0 +:1013F0000200202192420005020020213442001008 +:101400000E00033DA242000592420000240300208A +:10141000304200FF10430089020020218FBF0020CE +:101420008FB3001C8FB200188FB100148FB0001062 +:101430000A00107527BD00280000000D0A00055E97 +:101440008FBF00208C42000C1040007D8FBF002019 +:101450000E000D84000000008E2200048F84002006 +:101460009623000CAC8200003C0280089445002CBE +:101470008F82002400031C0030A5FFFF9446001E4D +:101480003C02400E0065182500C23025AC830004E4 +:10149000AC800008AC80000CAC800010AC80001464 +:1014A000AC800018AC86001C0A00051C2404000156 +:1014B0000E000332020020218F93FF9802002021AA +:1014C0000E00033DA660000C020020210E00034226 +:1014D000240500018F8200248C42000C104000582B +:1014E0008FBF00200E000D84000000009622000C2B +:1014F0008F83002000021400AC700000AC62000476 +:10150000AC6000088E4400388F820024AC64000C6C +:101510008E46003C9445001E3C02401FAC66001005 +:1015200000A228258E62000424040001AC6200148D +:10153000AC600018AC65001C8FBF00208FB3001C8E +:101540008FB200188FB100148FB000100A000DB8D0 +:1015500027BD0028240200201082003A8FB3001C0F +:101560000E000F5E00000000104000358FBF00200D +:101570003C0480008C8201F80440FFFE348201C0EC +:1015800024030002AC500000A04300043C02100001 +:10159000AC8201F80A00055E8FBF00200200202106 +:1015A0008FBF00208FB3001C8FB200188FB10014C2 +:1015B0008FB000100A000EA727BD00289625000C4A +:1015C000020020218FBF00208FB3001C8FB20018B3 +:1015D0008FB100148FB000100A000ECC27BD002878 +:1015E000020020218FB3001C8FB200188FB10014AD +:1015F0008FB000100A000EF727BD00289225000DBD +:10160000020020218FB3001C8FB200188FB100148C +:101610008FB000100A000F4827BD002802002021CB +:101620008FBF00208FB3001C8FB200188FB1001441 +:101630008FB000100A000F1F27BD00288FBF0020A9 +:101640008FB3001C8FB200188FB100148FB0001040 +:1016500003E0000827BD00283C0580008CA202782A +:101660000440FFFE34A2024024030002AC44000008 +:10167000A04300043C02100003E00008ACA2027882 +:10168000A380001803E00008A38000193C03800039 +:101690008C6202780440FFFE8F82001CAC62024024 +:1016A00024020002A06202443C02100003E0000891 +:1016B000AC6202783C02600003E000088C425404F3 +:1016C0009083003024020005008040213063003FF9 +:1016D0000000482114620005000050219082004C57 +:1016E0009483004E304900FF306AFFFFAD00000CCC +:1016F000AD000010AD000024950200148D05001C03 +:101700008D0400183042FFFF004910230002110031 +:10171000000237C3004038210086202300A2102B8E +:101720000082202300A72823AD05001CAD0400186B +:10173000A5090014A5090020A50A001603E0000869 +:10174000A50A002203E000080000000027BDFFD822 +:10175000AFB200183C128008AFB40020AFB3001C39 +:10176000AFB10014AFBF0024AFB00010365101007C +:101770003C0260008C4254049222000C3C1408008D +:10178000929400F7304300FF2402000110620032FF +:101790000080982124020002146200353650008037 +:1017A0000E00143D000000009202004C2403FF8054 +:1017B0003C0480003042007F000211C024420240FD +:1017C0000262102100431824AC8300949245000863 +:1017D0009204004C3042007F3C03800614850007D1 +:1017E000004380212402FFFFA22200112402FFFFF8 +:1017F000A62200120A0005D22402FFFF9602002052 +:10180000A222001196020022A62200128E020024BB +:101810003C048008AE2200143485008090A2004C65 +:1018200034830100A06200108CA2003CAC6200185E +:101830008C820068AC6200F48C820064AC6200F0C0 +:101840008C82006CAC6200F824020001A0A2006847 +:101850000A0005EE3C0480080E001456000000004B +:1018600036420080A04000680A0005EE3C04800873 +:10187000A2000068A20000690A0006293C02800854 +:10188000348300808C62003834850100AC62006CC7 +:1018900024020001A062006990A200D59083000894 +:1018A000305100FF3072007F12320019001111C058 +:1018B00024420240026210212403FF8000431824C6 +:1018C0003C048000AC8300943042007F3C038006DF +:1018D000004380218E02000C1040000D02002021E8 +:1018E0000E00057E0000000026220001305100FF9E +:1018F0009203003C023410260002102B0002102339 +:101900003063007F022288240A0005F8A203003C0D +:101910003C088008350401008C8200E03507008017 +:10192000ACE2003C8C8200E0AD02000090E5004C8F +:10193000908600D590E3004C908400D52402FF806F +:1019400000A228243063007F308400FF00A62825F1 +:101950000064182A1060000230A500FF38A500803E +:10196000A0E5004CA10500093C0280089043000E50 +:10197000344400803C058000A043000A8C8300189A +:101980003C027FFF3442FFFF00621824AC83001842 +:101990008CA201F80440FFFE00000000ACB301C0BF +:1019A0008FBF00248FB400208FB3001C8FB20018AB +:1019B0008FB100148FB0001024020002A0A201C455 +:1019C00027BD00283C02100003E00008ACA201F88B +:1019D00090A2000024420001A0A200003C030800E5 +:1019E0008C6300F4304200FF144300020080302179 +:1019F000A0A0000090A200008F84001C000211C073 +:101A00002442024024830040008220212402FF80DF +:101A1000008220243063007F3C02800A006218218B +:101A20003C028000AC44002403E00008ACC300008A +:101A300094820006908300058C85000C8C86001033 +:101A40008C8700188C88001C8C8400203C010800C6 +:101A5000A42256C63C010800A02356C53C0108003C +:101A6000AC2556CC3C010800AC2656D03C01080001 +:101A7000AC2756D83C010800AC2856DC3C010800D5 +:101A8000AC2456E003E00008000000003C0280089F +:101A9000344201008C4400343C038000346504006F +:101AA000AC6400388C420038AF850028AC62003C42 +:101AB0003C020005AC6200300000000000000000A5 +:101AC00003E00008000000003C020006308400FF34 +:101AD000008220253C028000AC4400300000000061 +:101AE00000000000000000003C0380008C62000049 +:101AF000304200101040FFFD3462040003E0000893 +:101B0000AF82002894C200003C080800950800CA73 +:101B100030E7FFFF0080482101021021A4C200002D +:101B200094C200003042FFFF00E2102B544000013D +:101B3000A4C7000094A200003C0308008C6300CC02 +:101B400024420001A4A2000094A200003042FFFF42 +:101B5000144300073C0280080107102BA4A00000DA +:101B60005440000101003821A4C700003C02800855 +:101B7000344601008CC3002894A200003C0480007D +:101B80003042FFFE000210C000621021AC82003C17 +:101B90008C82003C006218231860000400000000E2 +:101BA0008CC200240A0006BA244200018CC2002420 +:101BB000AC8200383C020050344200103C038000EC +:101BC000AC620030000000000000000000000000D7 +:101BD0008C620000304200201040FFFD0000000039 +:101BE00094A200003C04800030420001000210C0BA +:101BF000004410218C430400AD2300008C420404F7 +:101C0000AD2200043C02002003E00008AC8200305A +:101C100027BDFFE0AFB20018AFB10014AFB00010A5 +:101C2000AFBF001C94C2000000C080213C1208001D +:101C3000965200C624420001A6020000960300004E +:101C400094E2000000E03021144300058FB1003021 +:101C50000E00068F024038210A0006F10000000045 +:101C60008C8300048C82000424420040046100073D +:101C7000AC8200048C8200040440000400000000D8 +:101C80008C82000024420001AC8200009602000019 +:101C90003042FFFF50520001A600000096220000D3 +:101CA00024420001A62200003C02800834420100C8 +:101CB000962300009442003C144300048FBF001C94 +:101CC00024020001A62200008FBF001C8FB2001862 +:101CD0008FB100148FB0001003E0000827BD002072 +:101CE00027BDFFE03C028008AFBF0018344201006E +:101CF0008C4800343C03800034690400AC68003830 +:101D00008C42003830E700FFAF890028AC62003C0D +:101D10003C020005AC620030000000000000000042 +:101D200000000000000000000000000000000000B3 +:101D30008C82000C8C82000C97830016AD22000070 +:101D40008C82001000604021AD2200048C820018BB +:101D5000AD2200088C82001CAD22000C8CA2001465 +:101D6000AD2200108C820020AD220014908200056C +:101D7000304200FF00021200AD2200188CA20018B1 +:101D8000AD22001C8CA2000CAD2200208CA2001001 +:101D9000AD2200248CA2001CAD2200288CA20020C1 +:101DA000AD22002C3402FFFFAD260030AD20003400 +:101DB000506200013408FFFFAD28003850E00011E8 +:101DC0003C0280083C048008348401009482005066 +:101DD0003042FFFFAD22003C9483004494850044D0 +:101DE000240200013063FFFF000318C200641821C1 +:101DF0009064006430A5000700A210040A00075C8C +:101E00000044102534420100AD20003C94430044BE +:101E1000944400443063FFFF000318C2006218219D +:101E200030840007906500642402000100821004E1 +:101E30000002102700451024A0620064000000008A +:101E400000000000000000003C0200063442004098 +:101E50003C038000AC620030000000000000000085 +:101E6000000000008C620000304200101040FFFDB6 +:101E70003C06800834C201503463040034C7014A70 +:101E800034C4013434C5014034C60144AFA200104B +:101E90000E0006D2AF8300288FBF001803E00008B1 +:101EA00027BD00208F8300143C0608008CC600E884 +:101EB0008F82001C30633FFF000319800046102111 +:101EC000004310212403FF80004318243C068000B7 +:101ED000ACC300283042007F3C03800C004330211B +:101EE00090C2000D30A500FF0000382134420010E0 +:101EF000A0C2000D8F8900143C028008344201000A +:101F00009443004400091382304800032402000176 +:101F1000A4C3000E1102000B2902000210400005AC +:101F2000240200021100000C240300010A0007A48F +:101F30000000182111020006000000000A0007A49A +:101F4000000018218CC2002C0A0007A424430001C1 +:101F50008CC20014244300018CC200180043102BD3 +:101F60005040000A240700012402002714A20003A5 +:101F70003C0380080A0007B1240700013463010014 +:101F80009462004C24420001A462004C00091382B8 +:101F9000304300032C620002104000090080282119 +:101FA000146000040000000094C200340A0007C15D +:101FB0003046FFFF8CC600380A0007C10080282188 +:101FC000000030213C040800248456C00A000706A3 +:101FD0000000000027BDFF90AFB60068AFB50064F9 +:101FE000AFB40060AFB3005CAFB20058AFB1005403 +:101FF000AFBF006CAFB000508C9000000080B021EB +:102000003C0208008C4200E8960400328F83001CDA +:102010002414FF8030843FFF0062182100042180D7 +:1020200000641821007410243C13800000A090214B +:1020300090A50000AE620028920400323C02800CA1 +:102040003063007F00628821308400C02402004099 +:10205000148200320000A8218E3500388E2200182C +:102060001440000224020001AE2200189202003C3B +:10207000304200201440000E8F83001C000511C068 +:102080002442024000621821306400783C02008043 +:102090000082202500741824AE630800AE64081086 +:1020A0008E2200188E03000800431021AE22001873 +:1020B0008E22002C8E230018244200010062182B6F +:1020C0001060004300000000924200002442000122 +:1020D000A24200003C0308008C6300F4304200FF81 +:1020E00050430001A2400000924200008F84001C77 +:1020F000000211C024420240248300403063007F6C +:10210000008220213C02800A0094202400621821D1 +:10211000AE6400240A0008D2AEC30000920300326D +:102120002402FFC000431024304200FF1440000589 +:1021300024020001AE220018962200340A00084250 +:102140003055FFFF8E22001424420001AE220018F9 +:102150009202003000021600000216030441001C27 +:10216000000000009602003227A400100080282101 +:10217000A7A20016960200320000302124070001B9 +:102180003042FFFFAF8200140E000706AFA0001C14 +:10219000960200328F83001C3C0408008C8400E807 +:1021A00030423FFF000211800064182100621821B4 +:1021B00000741024AE62002C3063007F3C02800E5D +:1021C000006218219062000D3042007FA062000D75 +:1021D0009222000D304200105040007892420000E0 +:1021E0003C028008344401009482004C8EC30000FD +:1021F0003C130800967300C62442FFFFA482004CE3 +:10220000946200329623000E3054FFFF3070FFFFBF +:102210003C0308008C6300D000701807A7A30038A7 +:102220009482003E3063FFFF3042FFFF14620007DC +:10223000000000008C8200303C038000244200300B +:10224000AC62003C0A00086A8C82002C9482004038 +:102250003042FFFF5462000927A400408C820038FE +:102260003C03800024420030AC62003C8C8200348D +:10227000AC6200380A0008793C03800027A50038CA +:1022800027A60048026038210E00068FA7A000484C +:102290008FA300403C02800024630030AC43003830 +:1022A0008FA30044AC43003C3C0380003C0200058B +:1022B000AC6200303C028008344401009482004249 +:1022C000346304003042FFFF0202102B1440000769 +:1022D000AF8300289482004E9483004202021021B2 +:1022E000004310230A00088F3043FFFF9483004E01 +:1022F00094820042026318210050102300621823C8 +:102300003063FFFF3C028008344401009482003CAB +:102310003042FFFF14430003000000000A00089F42 +:10232000240300019482003C3042FFFF0062102B26 +:10233000144000058F8200289482003C0062102324 +:102340003043FFFF8F820028AC550000AC400004F2 +:10235000AC540008AC43000C3C02000634420010B0 +:102360003C038000AC620030000000000000000070 +:10237000000000008C620000304200101040FFFDA1 +:102380003C04800834840100001018C20064182145 +:102390009065006432020007240600010046100424 +:1023A00000451025A0620064948300429622000E2E +:1023B00050430001A386001892420000244200010D +:1023C000A24200003C0308008C6300F4304200FF8E +:1023D00050430001A2400000924200008F84001C84 +:1023E000000211C0244202402483004000822021C8 +:1023F0002402FF80008220243063007F3C02800A98 +:10240000006218213C028000AC440024AEC30000EE +:102410008FBF006C8FB600688FB500648FB400600A +:102420008FB3005C8FB200588FB100548FB0005052 +:1024300003E0000827BD007027BDFFD8AFB3001C24 +:10244000AFB20018AFB10014AFB00010AFBF0020A2 +:102450000080982100E0802130B1FFFF0E000D8444 +:1024600030D200FF0000000000000000000000006B +:102470008F8200208F830024AC510000AC520004F6 +:10248000AC530008AC40000CAC400010AC40001451 +:10249000AC4000189463001E02038025AC50001C61 +:1024A0000000000000000000000000002404000103 +:1024B0008FBF00208FB3001C8FB200188FB10014A3 +:1024C0008FB000100A000DB827BD002830A5FFFF0F +:1024D0000A0008DC30C600FF3C02800834430100DB +:1024E0009462000E3C080800950800C63046FFFFC5 +:1024F00014C000043402FFFF946500EA0A000929B1 +:102500008F84001C10C20027000000009462004E5F +:102510009464003C3045FFFF00A6102300A6182B52 +:102520003087FFFF106000043044FFFF00C5102318 +:1025300000E210233044FFFF0088102B1040000EF3 +:1025400000E810233C028008344401002403000109 +:1025500034420080A44300162402FFFFA482000E30 +:10256000948500EA8F84001C0000302130A5FFFF15 +:102570000A0009013C0760200044102A10400009AD +:102580003C0280083443008094620016304200010F +:10259000104000043C0280009442007E244200145B +:1025A000A462001603E000080000000027BDFFE061 +:1025B0003C028008AFBF001CAFB0001834420100DD +:1025C000944300429442004C104000193068FFFFD1 +:1025D0009383001824020001146200298FBF001C9D +:1025E0003C06800834D00100000810C200501021C1 +:1025F000904200643103000734C70148304200FFB5 +:10260000006210073042000134C9014E34C4012C6D +:1026100034C5013E1040001634C601420E0006D2F9 +:10262000AFA90010960200420A0009463048FFFF99 +:102630003C028008344401009483004494820042A8 +:102640001043000F8FBF001C94820044A4820042FC +:1026500094820050A482004E8C820038AC820030FC +:1026600094820040A482003E9482004AA4820048E2 +:102670008FBF001C8FB000180A00090427BD00207E +:102680008FB0001803E0000827BD002027BDFFA081 +:10269000AFB1004C3C118000AFBF0058AFB3005445 +:1026A000AFB20050AFB000483626018890C2000398 +:1026B0003044007FA3A400108E32018090C200003D +:1026C0003043007F240200031062003BAF92001CE5 +:1026D00028620004104000062402000424020002C4 +:1026E000106200098FBF00580A000B0F8FB300540F +:1026F0001062004D240200051062014E8FBF005889 +:102700000A000B0F8FB30054000411C002421021C5 +:102710002404FF8024420240004410242643004049 +:10272000AE2200243063007F3C02800A0062182140 +:102730009062003CAFA3003C00441025A062003C26 +:102740008FA3003C9062003C304200401040016C7E +:102750008FBF00583C108008A3800018361001007D +:102760008E0200E08C63003427A4003C27A50010F3 +:10277000004310210E0007C3AE0200E093A2001038 +:102780003C038000A20200D58C6202780440FFFE68 +:102790008F82001CAC62024024020002A06202444C +:1027A0003C021000AC6202780E0009390000000003 +:1027B0000A000B0E8FBF00583C05800890C3000133 +:1027C00090A2000B1443014E8FBF005834A4008028 +:1027D0008C8200189082004C90A200083C0260009D +:1027E0008C4254048C8300183C027FFF3442FFFF6C +:1027F000006218243C0208008C4200B4AC8300182C +:102800003C038000244200013C010800AC2200B4DB +:102810008C6201F80440FFFE8F82001CAC6201C094 +:102820000A000AD6240200023C10800890C300016E +:102830009202000B144301328FBF005827A40018E6 +:1028400036050110240600033C0260008C4254044B +:102850000E000E470000000027A40028360501F0F6 +:102860000E000E47240600038FA200283603010045 +:10287000AE0200648FA2002CAE0200688FA200306E +:10288000AE02006C93A40018906300D52402FF8070 +:102890000082102400431025304900FF3084007F5F +:1028A0003122007F0082102A544000013929008023 +:1028B000000411C0244202402403FF800242102180 +:1028C00000431024AE220094264200403042007F94 +:1028D0003C038006004340218FA3001C2402FFFF1D +:1028E000AFA800403C130800927300F71062003359 +:1028F00093A2001995030014304400FF3063FFFFDA +:102900000064182B106000100000000095040014F3 +:102910008D07001C8D0600183084FFFF0044202323 +:102920000004210000E438210000102100E4202BE5 +:1029300000C2302100C43021AD07001CAD060018D4 +:102940000A000A2F93A20019950400148D07001C99 +:102950008D0600183084FFFF008220230004210030 +:10296000000010210080182100C2302300E4202B39 +:1029700000C4302300E33823AD07001CAD06001867 +:1029800093A200198FA30040A462001497A2001A1A +:10299000A46200168FA2001CAC6200108FA2001C63 +:1029A000AC62000C93A20019A462002097A2001A46 +:1029B000A46200228FA2001CAC6200243C048008A8 +:1029C000348300808C6200388FA20020012088218F +:1029D000AC62003C8FA20020AC82000093A20018E1 +:1029E000A062004C93A20018A0820009A0600068B9 +:1029F00093A20018105100512407FF803229007F54 +:102A0000000911C024420240024210213046007FDA +:102A10003C03800000471024AC6200943C02800616 +:102A200000C2302190C2003CAFA60040000020212F +:102A300000471025A0C2003C8FA80040950200026C +:102A4000950300148D07001C3042FFFF3063FFFF29 +:102A50008D060018004310230002110000E2382107 +:102A600000E2102B00C4302100C23021AD07001C51 +:102A7000AD06001895020002A5020014A50000167C +:102A80008D020008AD0200108D020008AD02000C9E +:102A900095020002A5020020A50000228D02000878 +:102AA000AD0200249102003C304200401040001A68 +:102AB000262200013C108008A3A90038A38000183A +:102AC000361001008E0200E08D03003427A4004080 +:102AD00027A50038004310210E0007C3AE0200E016 +:102AE00093A200383C038000A20200D58C620278D9 +:102AF0000440FFFE8F82001CAC62024024020002F0 +:102B0000A06202443C021000AC6202780E00093957 +:102B100000000000262200013043007F14730004EF +:102B2000004020212403FF8002231024004320269C +:102B300093A200180A000A4B309100FF93A40018DA +:102B40008FA3001C2402FFFF1062000A308900FFDF +:102B500024820001248300013042007F14530005C9 +:102B6000306900FF2403FF800083102400431026F7 +:102B7000304900FF3C028008904200080120882173 +:102B8000305000FF123000193222007F000211C0C5 +:102B900002421021244202402403FF8000431824F3 +:102BA0003C048000AC8300943042007F3C038006EC +:102BB000004310218C43000C004020211060000BCA +:102BC000AFA200400E00057E000000002623000199 +:102BD0002405FF803062007F145300020225202468 +:102BE000008518260A000AAF307100FF3C048008F7 +:102BF000348400808C8300183C027FFF3442FFFF46 +:102C000000621824AC8300183C0380008C6201F839 +:102C10000440FFFE00000000AC7201C0240200026C +:102C2000A06201C43C021000AC6201F80A000B0E65 +:102C30008FBF00583C04800890C300019082000BB5 +:102C40001443002F8FBF0058349000809202000878 +:102C500030420040104000200000000092020008B6 +:102C60000002160000021603044100050240202164 +:102C70000E000ECC240500930A000B0E8FBF0058E7 +:102C80009202000924030018304200FF1443000D93 +:102C900002402021240500390E000E64000030217E +:102CA0000E0003328F84001C8F82FF9424030012D5 +:102CB000A04300090E00033D8F84001C0A000B0E88 +:102CC0008FBF0058240500360E000E64000030212E +:102CD0000A000B0E8FBF00580E0003320240202165 +:102CE000920200058F84001C344200200E00033D38 +:102CF000A20200050E0010758F84001C8FBF0058C3 +:102D00008FB300548FB200508FB1004C8FB0004889 +:102D100003E0000827BD00603C0280083445010044 +:102D20003C0280008C42014094A3000E0000302140 +:102D300000402021AF82001C3063FFFF3402FFFF00 +:102D4000106200063C0760202402FFFFA4A2000ED0 +:102D500094A500EA0A00090130A5FFFF03E000087E +:102D60000000000027BDFFC83C0280003C06800830 +:102D7000AFB5002CAFB1001CAFBF0030AFB400281E +:102D8000AFB30024AFB20020AFB00018345101003F +:102D900034C501008C4301008E2200148CA400E491 +:102DA0000000A821AF83001C0044102318400052EB +:102DB000A38000188E22001400005021ACA200E471 +:102DC00090C3000890A200D53073007FA3A200102A +:102DD0008CB200E08CB400E4304200FF1053003BA2 +:102DE00093A200108F83001C2407FF80000211C0F3 +:102DF0000062102124420240246300400047102456 +:102E00003063007F3C0980003C08800A006818217C +:102E1000AD2200248C62003427A4001427A50010E2 +:102E2000024280210290102304400028AFA3001426 +:102E30009062003C00E21024304200FF1440001970 +:102E4000020090219062003C34420040A062003CAD +:102E50008F86001C93A3001024C200403042007FE4 +:102E6000004828213C0208008C4200F42463000141 +:102E7000306400FF14820002A3A30010A3A000107E +:102E800093A20010AFA50014000211C0244202401A +:102E900000C2102100471024AD2200240A000B4577 +:102EA00093A200100E0007C3000000003C0280083F +:102EB00034420100AC5000E093A30010240A00014A +:102EC000A04300D50A000B4593A200102402000184 +:102ED000154200093C0380008C6202780440FFFE2A +:102EE0008F82001CAC62024024020002A0620244F5 +:102EF0003C021000AC6202789222000B2403000214 +:102F0000304200FF144300720000000096220008C7 +:102F1000304300FF24020082146200402402008437 +:102F20003C028000344901008D22000C95230006EC +:102F3000000216023063FFFF3045003F24020027E5 +:102F400010A2000FAF83001428A200281040000830 +:102F5000240200312402002110A2000924020025CD +:102F600010A20007938200190A000BBD00000000A8 +:102F700010A20007938200190A000BBD0000000098 +:102F80000E000777012020210A000C3D0000000000 +:102F90003C0380008C6202780440FFFE8F82001C9C +:102FA000AC62024024020002A06202443C02100013 +:102FB000AC6202780A000C3D000000009523000678 +:102FC000912400058D25000C8D2600108D270018FA +:102FD0008D28001C8D290020244200013C0108009E +:102FE000A42356C63C010800A02456C53C01080095 +:102FF000AC2556CC3C010800AC2656D03C0108005C +:10300000AC2756D83C010800AC2856DC3C0108002F +:10301000AC2956E00A000C3DA38200191462000A94 +:10302000240200813C02800834420100944500EAF9 +:10303000922600058F84001C30A5FFFF30C600FFDC +:103040000A000BFE3C0760211462005C00000000D7 +:103050009222000A304300FF306200201040000737 +:10306000306200403C02800834420100944500EA8E +:103070008F84001C0A000BFC24060040104000074F +:10308000000316003C02800834420100944500EA27 +:103090008F84001C0A000BFC24060041000216036A +:1030A000044100463C02800834420100944500EA95 +:1030B0008F84001C2406004230A5FFFF3C076019E6 +:1030C0000E000901000000000A000C3D0000000095 +:1030D0009222000B24040016304200FF1044000628 +:1030E0003C0680009222000B24030017304200FFB0 +:1030F000144300320000000034C5010090A2000B10 +:10310000304200FF1444000B000080218CA20020FC +:103110008CA400202403FF800043102400021140EF +:103120003084007F004410253C032000004310251C +:10313000ACC2083094A2000800021400000214037C +:10314000044200012410000194A2000830420080D3 +:103150005040001A0200A82194A20008304220002A +:10316000504000160200A8218CA300183C021C2D20 +:10317000344219ED106200110200A8213C0208003F +:103180008C4200D4104000053C0280082403000457 +:1031900034420100A04300FC3C028008344201009C +:1031A000944500EA8F84001C2406000630A5FFFF2A +:1031B0000E0009013C0760210200A8210E00093918 +:1031C000000000009222000A304200081040000473 +:1031D00002A010210E0013790000000002A01021AF +:1031E0008FBF00308FB5002C8FB400288FB3002420 +:1031F0008FB200208FB1001C8FB0001803E00008D0 +:1032000027BD00382402FF80008220243C02900069 +:1032100034420007008220253C028000AC4400209C +:103220003C0380008C6200200440FFFE0000000090 +:1032300003E00008000000003C0380002402FF803F +:10324000008220243462000700822025AC64002024 +:103250008C6200200440FFFE0000000003E0000834 +:103260000000000027BDFFD8AFB3001CAFB10014B1 +:10327000AFB00010AFBF0020AFB200183C1180000B +:103280003C0280088E32002034530100AE2400201E +:10329000966300EA000514003C074000004738250B +:1032A00000A08021000030210E0009013065FFFFE1 +:1032B000240200A1160200022402FFFFA2620009FC +:1032C000AE3200208FBF00208FB3001C8FB20018D9 +:1032D0008FB100148FB0001003E0000827BD002854 +:1032E0003C0280082403000527BDFFE834420100AA +:1032F000A04300FCAFBF00103C0280008C420100E4 +:10330000240500A1004020210E000C67AF82001CA4 +:103310003C0380008C6202780440FFFE8F82001C18 +:103320008FBF001027BD0018AC62024024020002CB +:10333000A06202443C021000AC62027803E0000884 +:103340000000000027BDFFE83C068000AFBF001072 +:1033500034C7010094E20008304400FF3883008243 +:10336000388200842C6300012C4200010062182581 +:103370001060002D24020083938200195040003B0E +:103380008FBF00103C020800904256CC8CC4010054 +:103390003C06080094C656C63045003F38A30032AC +:1033A00038A2003F2C6300012C4200010062182566 +:1033B000AF84001CAF860014A380001914600007BE +:1033C00000E020212402002014A2001200000000CE +:1033D0003402FFFF14C2000F00000000240200208E +:1033E00014A2000500E028218CE300142402FFFF52 +:1033F0005062000B8FBF00103C040800248456C0AC +:10340000000030210E000706240700010A000CD638 +:103410008FBF00100E000777000000008FBF001064 +:103420000A00093927BD001814820004240200850F +:103430008CC501040A000CE1000020211482000662 +:103440002482FF808CC50104240440008FBF00103B +:103450000A00016727BD0018304200FF2C4200021D +:1034600010400004240200228FBF00100A000B2726 +:1034700027BD0018148200048F8200248FBF001023 +:103480000A000C8627BD00188C42000C1040001E5C +:1034900000E0282190E300092402001814620003D0 +:1034A000240200160A000CFC240300081462000722 +:1034B00024020017240300123C02800834420080DA +:1034C000A04300090A000D0994A7000854620007F0 +:1034D00094A700088F82FF942404FFFE9043000508 +:1034E00000641824A043000594A7000890A6001BC0 +:1034F0008CA4000094A500068FBF001000073C00BC +:103500000A0008DC27BD00188FBF001003E0000888 +:1035100027BD00188F8500243C04800094A2002A57 +:103520008CA30034000230C02402FFF000C210243B +:1035300000621821AC83003C8CA200303C03800068 +:10354000AC8200383C02005034420010AC620030C3 +:103550000000000000000000000000008C6200007D +:10356000304200201040FFFD30C20008104000062D +:103570003C0280008C620408ACA200208C62040C27 +:103580000A000D34ACA200248C430400ACA300203C +:103590008C420404ACA200243C0300203C028000C6 +:1035A000AC4300303C0480008C8200300043102487 +:1035B0001440FFFD8F8600243C020040AC820030A6 +:1035C00094C3002A94C2002894C4002C94C5002EF1 +:1035D00024630001004410213064FFFFA4C20028CE +:1035E00014850002A4C3002AA4C0002A03E0000836 +:1035F000000000008F84002427BDFFE83C05800404 +:1036000024840010AFBF00100E000E472406000AED +:103610008F840024948200129483002E3042000F85 +:10362000244200030043180424027FFF0043102BB0 +:1036300010400002AC8300000000000D0E000D13CE +:10364000000000008F8300248FBF001027BD0018EA +:10365000946200149463001A3042000F00021500B7 +:10366000006218253C02800003E00008AC4300A083 +:103670008F8300243C028004944400069462001A64 +:103680008C650000A4640016004410233042FFFF44 +:103690000045102B03E00008384200018F8400240D +:1036A0003C0780049486001A8C85000094E2000692 +:1036B000A482001694E3000600C310233042FFFFEB +:1036C0000045102B384200011440FFF8A483001677 +:1036D00003E00008000000008F8400243C02800406 +:1036E000944200069483001A8C850000A482001680 +:1036F000006210233042FFFF0045102B38420001CA +:103700005040000D8F850024006030213C0780046C +:1037100094E20006A482001694E3000600C310237E +:103720003042FFFF0045102B384200011440FFF8E3 +:10373000A48300168F8500243C03800034620400BB +:103740008CA40020AF820020AC6400388CA200243E +:10375000AC62003C3C020005AC62003003E00008B3 +:10376000ACA000048F8400243C0300068C8200047B +:1037700000021140004310253C038000AC62003081 +:103780000000000000000000000000008C6200004B +:10379000304200101040FFFD34620400AC80000491 +:1037A00003E00008AF8200208F86002427BDFFE0E1 +:1037B000AFB10014AFB00010AFBF00188CC300044D +:1037C0008CC500248F820020309000FF94C4001A22 +:1037D00024630001244200202484000124A7002047 +:1037E000ACC30004AF820020A4C4001AACC70024FC +:1037F00004A100060000882104E2000594C2001A1A +:103800008CC2002024420001ACC2002094C2001AE5 +:1038100094C300282E040001004310262C4200010E +:10382000004410245040000594C2001A24020001F4 +:10383000ACC2000894C2001A94C300280010202BC8 +:10384000004310262C4200010044102514400007BC +:10385000000000008CC20008144000042402001084 +:103860008CC300041462000F8F8500240E000DA786 +:10387000241100018F820024944300289442001AEE +:1038800014430003000000000E000D1300000000B0 +:10389000160000048F8500240E000D840000000037 +:1038A0008F85002494A2001E94A4001C24420001D1 +:1038B0003043FFFF14640002A4A2001EA4A0001E57 +:1038C0001200000A3C02800494A2001494A3001A7F +:1038D0003042000F00021500006218253C028000F3 +:1038E000AC4300A00A000E1EACA0000894420006E3 +:1038F00094A3001A8CA40000A4A200160062102356 +:103900003042FFFF0044102B384200011040000DF0 +:1039100002201021006030213C07800494E2000660 +:10392000A4A2001694E3000600C310233042FFFF58 +:103930000044102B384200011440FFF8A4A30016E5 +:10394000022010218FBF00188FB100148FB000101B +:1039500003E0000827BD002003E00008000000008D +:103960008F82002C3C03000600021140004310250A +:103970003C038000AC62003000000000000000004A +:10398000000000008C620000304200101040FFFD7B +:1039900034620400AF82002803E00008AF80002CEE +:1039A00003E000080000102103E000080000000010 +:1039B0003084FFFF30A5FFFF0000182110800007B2 +:1039C000000000003082000110400002000420428C +:1039D000006518210A000E3D0005284003E000089C +:1039E0000060102110C0000624C6FFFF8CA200005A +:1039F00024A50004AC8200000A000E4724840004C1 +:103A000003E000080000000010A0000824A3FFFF4E +:103A1000AC86000000000000000000002402FFFF50 +:103A20002463FFFF1462FFFA2484000403E000080B +:103A3000000000003C0280083442008024030001A2 +:103A4000AC43000CA4430010A4430012A443001490 +:103A500003E00008A44300168F82002427BDFFD88E +:103A6000AFB3001CAFB20018AFB10014AFB000107C +:103A7000AFBF00208C47000C248200802409FF8007 +:103A80003C08800E3043007F008080213C0A80008B +:103A9000004920240068182130B100FF30D200FF17 +:103AA00010E000290000982126020100AD44002CFE +:103AB000004928243042007F004820219062000005 +:103AC00024030050304200FF1443000400000000B3 +:103AD000AD45002C948200EA3053FFFF0E000D84A8 +:103AE000000000008F8200248F83002000112C0032 +:103AF0009442001E001224003484000100A22825F4 +:103B00003C02400000A22825AC7000008FBF0020BE +:103B1000AC6000048FB20018AC7300088FB10014C1 +:103B2000AC60000C8FB3001CAC6400108FB00010B0 +:103B3000AC60001424040001AC60001827BD00280C +:103B40000A000DB8AC65001C8FBF00208FB3001CAD +:103B50008FB200188FB100148FB0001003E000087E +:103B600027BD00283C06800034C201009043000FAE +:103B7000240200101062000E2865001110A000073A +:103B800024020012240200082405003A10620006F4 +:103B90000000302103E0000800000000240500358B +:103BA0001462FFFC000030210A000E6400000000D7 +:103BB0008CC200748F83FF9424420FA003E000089E +:103BC000AC62000C27BDFFE8AFBF00100E0003423F +:103BD000240500013C0480088FBF0010240200016E +:103BE00034830080A462001227BD00182402000163 +:103BF00003E00008A080001A27BDFFE0AFB2001864 +:103C0000AFB10014AFB00010AFBF001C30B2FFFF67 +:103C10000E000332008088213C028008345000806E +:103C20009202000924030004304200FF1443000CF8 +:103C30003C028008124000082402000A0E000E5BBD +:103C400000000000920200052403FFFE0043102440 +:103C5000A202000524020012A20200093C02800810 +:103C600034420080022020210E00033DA0400027A6 +:103C700016400003022020210E000EBF00000000AD +:103C800002202021324600FF8FBF001C8FB2001897 +:103C90008FB100148FB00010240500380A000E64A4 +:103CA00027BD002027BDFFE0AFBF001CAFB200184A +:103CB000AFB10014AFB000100E00033200808021BD +:103CC0000E000E5B000000003C02800834450080BE +:103CD00090A2000924120018305100FF1232000394 +:103CE0000200202124020012A0A2000990A20005D7 +:103CF0002403FFFE004310240E00033DA0A2000594 +:103D00000200202124050020163200070000302187 +:103D10008FBF001C8FB200188FB100148FB000103D +:103D20000A00034227BD00208FBF001C8FB200187D +:103D30008FB100148FB00010240500390A000E6402 +:103D400027BD002027BDFFE83C028000AFB0001077 +:103D5000AFBF0014344201009442000C2405003629 +:103D60000080802114400012304600FF0E00033214 +:103D7000000000003C02800834420080240300124E +:103D8000A043000990430005346300100E000E5B51 +:103D9000A04300050E00033D020020210200202167 +:103DA0000E000342240500200A000F3C0000000022 +:103DB0000E000E64000000000E00033202002021FD +:103DC0003C0280089043001B2405FF9F0200202135 +:103DD000006518248FBF00148FB00010A043001B93 +:103DE0000A00033D27BD001827BDFFE0AFBF001844 +:103DF000AFB10014AFB0001030B100FF0E000332BD +:103E0000008080213C02800824030012344200809C +:103E10000E000E5BA04300090E00033D02002021AE +:103E200002002021022030218FBF00188FB1001422 +:103E30008FB00010240500350A000E6427BD002055 +:103E40003C0480089083000E9082000A1443000B0B +:103E5000000028218F82FF942403005024050001D4 +:103E600090420000304200FF1443000400000000B4 +:103E70009082000E24420001A082000E03E00008A0 +:103E800000A010213C0380008C6201F80440FFFE7A +:103E900024020002AC6401C0A06201C43C02100014 +:103EA00003E00008AC6201F827BDFFE0AFB20018E4 +:103EB0003C128008AFB10014AFBF001CAFB00010BF +:103EC00036510080922200092403000A304200FF8C +:103ED0001443003E000000008E4300048E22003890 +:103EE000506200808FBF001C92220000240300500B +:103EF000304200FF144300253C0280008C42014008 +:103F00008E4300043642010002202821AC43001CED +:103F10009622005C8E2300383042FFFF00021040E2 +:103F200000621821AE23001C8E4300048E2400384A +:103F30009622005C006418233042FFFF0003184300 +:103F4000000210400043102A10400006000000004C +:103F50008E4200048E230038004310230A000FAA6B +:103F6000000220439622005C3042FFFF0002204006 +:103F70003C0280083443010034420080ACA4002C91 +:103F8000A040002424020001A062000C0E000F5E7D +:103F900000000000104000538FBF001C3C02800056 +:103FA0008C4401403C0380008C6201F80440FFFE19 +:103FB00024020002AC6401C0A06201C43C021000F3 +:103FC000AC6201F80A0010078FBF001C92220009A2 +:103FD00024030010304200FF144300043C02800020 +:103FE0008C4401400A000FEE0000282192220009B3 +:103FF00024030016304200FF14430006240200147C +:10400000A22200093C0280008C4401400A001001F9 +:104010008FBF001C8E2200388E23003C00431023EB +:10402000044100308FBF001C92220027244200016F +:10403000A2220027922200272C42000414400016DE +:104040003C1080009222000924030004304200FF4B +:10405000144300093C0280008C4401408FBF001CC7 +:104060008FB200188FB100148FB000102405009398 +:104070000A000ECC27BD00208C440140240500938B +:104080008FBF001C8FB200188FB100148FB00010CA +:104090000A000F4827BD00208E0401400E000332A5 +:1040A000000000008E4200042442FFFFAE420004E4 +:1040B0008E22003C2442FFFFAE22003C0E00033D56 +:1040C0008E0401408E0401408FBF001C8FB2001887 +:1040D0008FB100148FB00010240500040A000342C1 +:1040E00027BD00208FB200188FB100148FB00010D0 +:1040F00003E0000827BD00203C0680008CC2018838 +:104100003C038008346500809063000E00021402B6 +:10411000304400FF306300FF1464000E3C0280084E +:1041200090A20026304200FF104400098F82FF94C5 +:10413000A0A400262403005090420000304200FF5B +:1041400014430006000000000A0005A18CC4018091 +:104150003C02800834420080A044002603E00008AE +:104160000000000027BDFFE030E700FFAFB20018FD +:10417000AFBF001CAFB10014AFB0001000809021A1 +:1041800014E0000630C600FF000000000000000D33 +:10419000000000000A001060240001163C038008A3 +:1041A0009062000E304200FF14460023346200800B +:1041B00090420026304200FF1446001F000000001D +:1041C0009062000F304200FF1446001B0000000008 +:1041D0009062000A304200FF144600038F90FF9463 +:1041E0000000000D8F90FF948F82FF983C1180009B +:1041F000AE05003CAC450000A066000A0E0003328C +:104200008E240100A20000240E00033D8E24010034 +:104210003C0380008C6201F80440FFFE240200028F +:10422000AC7201C0A06201C43C021000AC6201F893 +:104230000A0010618FBF001C000000000000000D8C +:10424000000000002400013F8FBF001C8FB2001847 +:104250008FB100148FB0001003E0000827BD0020CC +:104260008F83FF943C0280008C44010034420100A3 +:104270008C65003C9046001B0A00102724070001B3 +:104280003C0280089043000E9042000A0043102632 +:10429000304200FF03E000080002102B27BDFFE0C2 +:1042A0003C028008AFB10014AFB00010AFBF0018DF +:1042B0003450008092020005240300303042003068 +:1042C00014430085008088218F8200248C42000CDA +:1042D000104000828FBF00180E000D840000000007 +:1042E0008F860020ACD100009202000892030009E2 +:1042F000304200FF00021200306300FF004310252F +:10430000ACC200049202004D000216000002160327 +:1043100004410005000000003C0308008C630048D5 +:104320000A00109F3C1080089202000830420040B2 +:10433000144000030000182192020027304300FFC0 +:104340003C108008361100809222004D00031E00B0 +:10435000304200FF0002140000621825ACC30008C0 +:104360008E2400308F820024ACC4000C8E250034D3 +:104370009443001E3C02C00BACC50010006218251F +:104380008E22003800002021ACC200148E22003C96 +:10439000ACC200180E000DB8ACC3001C8E020004A5 +:1043A0008F8400203C058000AC8200008E2200201B +:1043B000AC8200048E22001CAC8200088E220058C1 +:1043C0008CA3007400431021AC82000C8E22002CC0 +:1043D000AC8200108E2200408E23004400021400A4 +:1043E00000431025AC8200149222004D240300806B +:1043F000304200FF1443000400000000AC800018AD +:104400000A0010E38F8200248E23000C2402000196 +:104410001062000E2402FFFF92220008304200408A +:104420001440000A2402FFFF8E23000C8CA20074AB +:10443000006218233C0208000062102414400002AD +:10444000000028210060282100051043AC820018DC +:104450008F820024000020219443001E3C02C00CE7 +:10446000006218258F8200200E000DB8AC43001C9E +:104470003C038008346201008C4200008F850020DC +:10448000346300808FBF0018ACA20000ACA0000411 +:104490008C6400488F8200248FB10014ACA4000803 +:1044A000ACA0000CACA00010906300059446001E68 +:1044B0003C02400D00031E0000C23025ACA30014D6 +:1044C0008FB00010ACA0001824040001ACA6001CA2 +:1044D0000A000DB827BD00208FBF00188FB100144F +:1044E0008FB0001003E0000827BD00203C028000D0 +:1044F0009443007C3C02800834460100308400FF75 +:104500003065FFFF2402000524A34650A0C4000C20 +:104510005482000C3065FFFF90C2000D2C42000752 +:104520001040000724A30A0090C3000D24020014C9 +:104530000062100400A210210A00111F3045FFFF85 +:104540003065FFFF3C0280083442008003E0000831 +:10455000A44500143C03800834680080AD05003891 +:10456000346701008CE2001C308400FF00A210239D +:104570001840000330C600FF24A2FFFCACE2001C80 +:1045800030820001504000083C0380088D02003C4E +:1045900000A2102304410012240400058C620004D0 +:1045A00010A2000F3C0380088C62000414A2001EBD +:1045B000000000003C0208008C4200D8304200207D +:1045C000104000093C0280083462008090630008BB +:1045D0009042004C144300043C0280082404000470 +:1045E0000A00110900000000344300803442010039 +:1045F000A040000C24020001A462001410C0000AB4 +:104600003C0280008C4401003C0380008C6201F875 +:104610000440FFFE24020002AC6401C0A06201C499 +:104620003C021000AC6201F803E00008000000004A +:1046300027BDFFE800A61823AFBF00101860008058 +:10464000308800FF3C02800834470080A0E000244E +:1046500034440100A0E000278C82001C00A210233B +:1046600004400056000000008CE2003C94E3005C33 +:104670008CE4002C004530233063FFFF00C3182179 +:104680000083202B1080000400E018218CE2002C15 +:104690000A00117800A2102194E2005C3042FFFF72 +:1046A00000C2102100A21021AC62001C3C02800854 +:1046B000344400809482005C8C83001C3042FFFFF5 +:1046C0000002104000A210210043102B10400004F3 +:1046D000000000008C82001C0A00118B3C06800840 +:1046E0009482005C3042FFFF0002104000A21021C3 +:1046F0003C06800834C3010034C70080AC82001C33 +:10470000A060000CACE500388C62001C00A21023F5 +:104710001840000224A2FFFCAC62001C3102000120 +:10472000104000083C0380088CE2003C00A21023EB +:1047300004410012240400058CC2000410A20010E1 +:104740008FBF00108C62000414A2004F8FBF0010B6 +:104750003C0208008C4200D8304200201040000A81 +:104760003C02800834620080906300089042004C54 +:10477000144300053C028008240400048FBF00108D +:104780000A00110927BD001834430080344201009B +:10479000A040000C24020001A46200143C0280002E +:1047A0008C4401003C0380008C6201F80440FFFE51 +:1047B000240200020A0011D8000000008CE2001C54 +:1047C000004610230043102B54400001ACE5001CB0 +:1047D00094E2005C3042FFFF0062102B144000079F +:1047E0002402000294E2005C8CE3001C3042FFFFD4 +:1047F00000621821ACE3001C24020002ACE5003882 +:104800000E000F5EA082000C1040001F8FBF001032 +:104810003C0280008C4401003C0380008C6201F863 +:104820000440FFFE24020002AC6401C0A06201C487 +:104830003C021000AC6201F80A0011F08FBF0010BA +:1048400031020010104000108FBF00103C028008A1 +:10485000344500808CA3001C94A2005C00661823E1 +:104860003042FFFF006218213C023FFF3444FFFF4B +:104870000083102B544000010080182100C3102138 +:10488000ACA2001C8FBF001003E0000827BD001879 +:1048900027BDFFE800C0402100A63023AFBF0010B5 +:1048A00018C00026308A00FF3C028008344900808E +:1048B0008D24001C8D23002C008820230064182BDD +:1048C0001060000F344701008CE2002000461021E8 +:1048D000ACE200208CE200200044102B1440000BBE +:1048E0003C023FFF8CE2002000441023ACE2002099 +:1048F0009522005C3042FFFF0A0012100082202146 +:10490000ACE00020008620213C023FFF3443FFFF43 +:104910000064102B54400001006020213C028008FC +:104920003442008000851821AC43001CA0400024C4 +:10493000A04000270A0012623C03800831420010A8 +:10494000104000433C0380083C06800834C40080CB +:104950008C82003C004810235840003E34660080A2 +:104960009082002424420001A0820024908200242E +:104970003C0308008C630024304200FF0043102BEE +:10498000144000688FBF001034C201008C42001C2C +:1049900000A2102318400063000000008CC3000434 +:1049A0009482005C006818233042FFFF0003184324 +:1049B000000210400043102A1040000500000000D3 +:1049C0008CC20004004810230A0012450002104364 +:1049D0009482005C3042FFFF000210403C068008D9 +:1049E000AC82002C34C5008094A2005C8CA4002C06 +:1049F00094A3005C3042FFFF00021040008220219F +:104A00003063FFFF0083202101041021ACA2001CB1 +:104A10008CC2000434C60100ACC2001C2402000297 +:104A20000E000F5EA0C2000C1040003E8FBF0010B1 +:104A30003C0280008C4401003C0380008C6201F841 +:104A40000440FFFE240200020A001292000000004F +:104A500034660080ACC50038346401008C82001CD0 +:104A600000A210231840000224A2FFFCAC82001C0C +:104A7000314200015040000A3C0380088CC2003CD7 +:104A800000A2102304430014240400058C620004D7 +:104A900014A200033C0380080A00128424040005C9 +:104AA0008C62000414A2001F8FBF00103C0208009B +:104AB0008C4200D8304200201040000A3C0280089E +:104AC00034620080906300089042004C144300055B +:104AD0003C028008240400048FBF00100A00110962 +:104AE00027BD00183443008034420100A040000C70 +:104AF00024020001A46200143C0280008C440100E6 +:104B00003C0380008C6201F80440FFFE2402000296 +:104B1000AC6401C0A06201C43C021000AC6201F8A8 +:104B20008FBF001003E0000827BD001827BDFFE875 +:104B30003C0A8008AFBF0010354900808D22003C40 +:104B400000C04021308400FF004610231840009D23 +:104B500030E700FF354701002402000100A63023A2 +:104B6000A0E0000CA0E0000DA522001418C0002455 +:104B7000308200108D23001C8D22002C0068182329 +:104B80000043102B1040000F000000008CE20020BA +:104B900000461021ACE200208CE200200043102BE4 +:104BA0001440000B3C023FFF8CE200200043102326 +:104BB000ACE200209522005C3042FFFF0A0012C1E7 +:104BC00000621821ACE00020006618213C023FFF83 +:104BD0003446FFFF00C3102B5440000100C01821D1 +:104BE0003C0280083442008000651821AC43001C60 +:104BF000A0400024A04000270A00130F3C038008B7 +:104C0000104000403C0380088D22003C00481023E7 +:104C10005840003D34670080912200242442000166 +:104C2000A1220024912200243C0308008C6300246C +:104C3000304200FF0043102B1440009A8FBF001039 +:104C40008CE2001C00A21023184000960000000017 +:104C50008D4300049522005C006818233042FFFF5A +:104C600000031843000210400043102A10400005C2 +:104C7000012020218D420004004810230A0012F276 +:104C8000000210439522005C3042FFFF00021040FA +:104C90003C068008AC82002C34C5008094A2005CE5 +:104CA0008CA4002C94A3005C3042FFFF0002104053 +:104CB000008220213063FFFF0083182101031021AF +:104CC000ACA2001C8CC2000434C60100ACC2001CA3 +:104CD000240200020E000F5EA0C2000C1040007102 +:104CE0008FBF00103C0280008C4401003C03800018 +:104CF0008C6201F80440FFFE240200020A0013390E +:104D00000000000034670080ACE500383466010024 +:104D10008CC2001C00A210231840000224A2FFFC39 +:104D2000ACC2001C30820001504000083C038008E7 +:104D30008CE2003C00A2102304430051240400052F +:104D40008C62000410A2003E3C0380088C620004C8 +:104D500054A200548FBF00103C0208008C4200D8BF +:104D600030420020104000063C028008346200807F +:104D7000906300089042004C104300403C028008C1 +:104D80003443008034420100A040000C24020001A2 +:104D9000A46200143C0280008C4401003C038000AB +:104DA0008C6201F80440FFFE24020002AC6401C0E2 +:104DB000A06201C43C021000AC6201F80A00137743 +:104DC0008FBF001024020005A120002714E2000A72 +:104DD0003C038008354301009062000D2C42000620 +:104DE000504000053C0380089062000D2442000101 +:104DF000A062000D3C03800834670080ACE50038F9 +:104E0000346601008CC2001C00A21023184000026E +:104E100024A2FFFCACC2001C308200015040000AFA +:104E20003C0380088CE2003C00A2102304410014E3 +:104E3000240400058C62000414A200033C038008D3 +:104E40000A00136E240400058C62000414A20015ED +:104E50008FBF00103C0208008C4200D83042002076 +:104E60001040000A3C028008346200809063000811 +:104E70009042004C144300053C02800824040004C6 +:104E80008FBF00100A00110927BD001834430080AD +:104E900034420100A040000C24020001A46200146E +:104EA0008FBF001003E0000827BD00183C0B8008EE +:104EB00027BDFFE83C028000AFBF00103442010074 +:104EC000356A00809044000A356901008C45001461 +:104ED0008D4800389123000C308400FF0105102319 +:104EE0001C4000B3306700FF2CE20006504000B1C8 +:104EF0008FBF00102402000100E2300430C2000322 +:104F00005440000800A8302330C2000C144000A117 +:104F100030C20030144000A38FBF00100A00143BC1 +:104F20000000000018C00024308200108D43001CD7 +:104F30008D42002C006818230043102B1040000FF6 +:104F4000000000008D22002000461021AD2200202C +:104F50008D2200200043102B1440000B3C023FFF29 +:104F60008D22002000431023AD2200209542005CDA +:104F70003042FFFF0A0013AF00621821AD2000206D +:104F8000006618213C023FFF3446FFFF00C3102B90 +:104F90005440000100C018213C02800834420080C7 +:104FA00000651821AC43001CA0400024A04000274D +:104FB0000A0013FD3C038008104000403C038008B9 +:104FC0008D42003C004810231840003D34670080AB +:104FD0009142002424420001A14200249142002475 +:104FE0003C0308008C630024304200FF0043102B78 +:104FF000144000708FBF00108D22001C00A21023EF +:105000001840006C000000008D6300049542005CB5 +:10501000006818233042FFFF0003184300021040CD +:105020000043102A10400005014020218D62000439 +:10503000004810230A0013E0000210439542005C70 +:105040003042FFFF000210403C068008AC82002C7A +:1050500034C5008094A2005C8CA4002C94A3005C56 +:105060003042FFFF00021040008220213063FFFF2A +:105070000083182101031021ACA2001C8CC2000483 +:1050800034C60100ACC2001C240200020E000F5EF8 +:10509000A0C2000C104000478FBF00103C028000EF +:1050A0008C4401003C0380008C6201F80440FFFE48 +:1050B000240200020A00142D000000003467008062 +:1050C000ACE50038346601008CC2001C00A210233D +:1050D0001840000224A2FFFCACC2001C3082000178 +:1050E0005040000A3C0380088CE2003C00A21023E0 +:1050F00004430014240400058C62000414A200037D +:105100003C0380080A00141F240400058C6200047C +:1051100014A200288FBF00103C0208008C4200D867 +:10512000304200201040000A3C02800834620080B7 +:10513000906300089042004C144300053C02800834 +:10514000240400048FBF00100A00110927BD0018B5 +:105150003443008034420100A040000C24020001CE +:10516000A46200143C0280008C4401003C038000D7 +:105170008C6201F80440FFFE24020002AC6401C00E +:10518000A06201C43C021000AC6201F80A00143BAA +:105190008FBF00108FBF0010010030210A00115A8C +:1051A00027BD0018010030210A00129927BD001800 +:1051B0008FBF001003E0000827BD00183C038008E3 +:1051C0003464010024020003A082000C8C620004FD +:1051D00003E00008AC82001C3C05800834A300807A +:1051E0009062002734A501002406004324420001F8 +:1051F000A0620027906300273C0208008C42004810 +:10520000306300FF146200043C07602194A500EAAB +:105210000A00090130A5FFFF03E0000800000000BC +:1052200027BDFFE8AFBF00103C0280000E00144411 +:105230008C4401803C02800834430100A060000CD3 +:105240008C4200048FBF001027BD001803E0000847 +:10525000AC62001C27BDFFE03C028008AFBF001815 +:10526000AFB10014AFB000103445008034460100E7 +:105270003C0880008D09014090C3000C8CA4003CC8 +:105280008CA200381482003B306700FF9502007C3E +:1052900090A30027146000093045FFFF2402000599 +:1052A00054E200083C04800890C2000D2442000132 +:1052B000A0C2000D0A00147F3C048008A0C0000DAD +:1052C0003C048008348201009042000C2403000555 +:1052D000304200FF1443000A24A205DC348300801E +:1052E000906200272C4200075040000524A20A00CB +:1052F00090630027240200140062100400A2102111 +:105300003C108008361000803045FFFF012020212E +:105310000E001444A60500149602005C8E030038AB +:105320003C1180003042FFFF000210400062182153 +:10533000AE03001C0E0003328E24014092020025B1 +:1053400034420040A20200250E00033D8E2401409D +:105350008E2401403C0380008C6201F80440FFFE73 +:1053600024020002AC6401C0A06201C43C0210002F +:10537000AC6201F88FBF00188FB100148FB000101D +:1053800003E0000827BD00203C0360103C02080039 +:1053900024420174AC62502C8C6250003C048000AA +:1053A00034420080AC6250003C0208002442547C2D +:1053B0003C010800AC2256003C020800244254384C +:1053C0003C010800AC2256043C020002AC840008F8 +:1053D000AC82000C03E000082402000100A0302190 +:1053E0003C1C0800279C56083C0200023C050400B7 +:1053F00000852826008220260004102B2CA5000101 +:105400002C840001000210803C0308002463560035 +:105410000085202500431821108000030000102182 +:10542000AC6600002402000103E000080000000058 +:105430003C1C0800279C56083C0200023C05040066 +:1054400000852826008220260004102B2CA50001B0 +:105450002C840001000210803C03080024635600E5 +:105460000085202500431821108000050000102130 +:105470003C02080024425438AC62000024020001BF +:1054800003E00008000000003C0200023C030400AE +:1054900000821026008318262C4200012C63000194 +:1054A000004310251040000B000028213C1C080080 +:1054B000279C56083C0380008C62000824050001EC +:1054C00000431025AC6200088C62000C00441025DB +:1054D000AC62000C03E0000800A010213C1C080096 +:1054E000279C56083C0580008CA3000C0004202754 +:1054F000240200010064182403E00008ACA3000C9F +:105500003C020002148200063C0560008CA208D018 +:105510002403FFFE0043102403E00008ACA208D0DF +:105520003C02040014820005000000008CA208D098 +:105530002403FFFD00431024ACA208D003E00008C0 +:10554000000000003C02601A344200108C430080CE +:1055500027BDFFF88C440084AFA3000093A3000094 +:10556000240200041462001AAFA4000493A20001F4 +:105570001040000797A300023062FFFC3C0380004C +:10558000004310218C4200000A001536AFA200042F +:105590003062FFFC3C03800000431021AC4400005B +:1055A000A3A000003C0560008CA208D02403FFFEED +:1055B0003C04601A00431024ACA208D08FA300045E +:1055C0008FA2000034840010AC830084AC82008081 +:1055D00003E0000827BD000827BDFFE8AFBF0010AB +:1055E0003C1C0800279C56083C0280008C43000CA1 +:1055F0008C420004004318243C0200021060001496 +:10560000006228243C0204003C04000210A00005B3 +:10561000006210243C0208008C4256000A00155B10 +:1056200000000000104000073C0404003C02080099 +:105630008C4256040040F809000000000A00156082 +:10564000000000000000000D3C1C0800279C5608CC +:105650008FBF001003E0000827BD0018800802403B +:1056600080080100800800808008000000000C8095 +:105670000000320008000E9808000EF408000F88A1 +:1056800008001028080010748008010080080080BD +:10569000800800000A000028000000000000000050 +:1056A0000000000D6370362E322E316200000000C3 +:1056B00006020104000000000000000000000000DD +:1056C000000000000000000038003C000000000066 +:1056D00000000000000000000000000000000020AA +:1056E00000000000000000000000000000000000BA +:1056F00000000000000000000000000000000000AA +:10570000000000000000000021003800000000013F +:105710000000002B000000000000000400030D400A +:105720000000000000000000000000000000000079 +:105730000000000000000000100000030000000056 +:105740000000000D0000000D3C020800244259AC8E +:105750003C03080024635BF4AC4000000043202BB2 +:105760001480FFFD244200043C1D080037BD9FFC4F +:1057700003A0F0213C100800261000A03C1C0800EB +:10578000279C59AC0E0002F6000000000000000D3E +:1057900027BDFFB4AFA10000AFA20004AFA3000873 +:1057A000AFA4000CAFA50010AFA60014AFA700185F +:1057B000AFA8001CAFA90020AFAA0024AFAB0028FF +:1057C000AFAC002CAFAD0030AFAE0034AFAF00389F +:1057D000AFB8003CAFB90040AFBC0044AFBF004819 +:1057E0000E000820000000008FBF00488FBC00445E +:1057F0008FB900408FB8003C8FAF00388FAE0034B7 +:105800008FAD00308FAC002C8FAB00288FAA002406 +:105810008FA900208FA8001C8FA700188FA6001446 +:105820008FA500108FA4000C8FA300088FA2000486 +:105830008FA1000027BD004C3C1B60188F7A5030B0 +:10584000377B502803400008AF7A000000A01821E1 +:1058500000801021008028213C0460003C0760008B +:105860002406000810600006348420788C42000072 +:10587000ACE220088C63000003E00008ACE3200CDD +:105880000A000F8100000000240300403C02600079 +:1058900003E00008AC4320003C0760008F86000452 +:1058A0008CE520740086102100A2182B14600007DC +:1058B000000028218F8AFDA024050001A1440013C7 +:1058C0008F89000401244021AF88000403E0000810 +:1058D00000A010218F84FDA08F8500049086001306 +:1058E00030C300FF00A31023AF82000403E00008D0 +:1058F000A08000138F84FDA027BDFFE8AFB000108B +:10590000AFBF001490890011908700112402002875 +:10591000312800FF3906002830E300FF2485002CE1 +:105920002CD00001106200162484001C0E00006EB2 +:10593000000000008F8FFDA03C05600024020204DF +:1059400095EE003E95ED003C000E5C0031ACFFFF93 +:10595000016C5025ACAA2010520000012402000462 +:10596000ACA22000000000000000000000000000C9 +:105970008FBF00148FB0001003E0000827BD00188F +:105980000A0000A6000028218F85FDA027BDFFD8B2 +:10599000AFBF0020AFB3001CAFB20018AFB100140E +:1059A000AFB000100080982190A4001124B0001C1A +:1059B00024B1002C308300FF386200280E000090D4 +:1059C0002C5200010E00009800000000020020216F +:1059D0001240000202202821000028210E00006E43 +:1059E000000000008F8DFDA03C0880003C05600099 +:1059F00095AC003E95AB003C02683025000C4C0095 +:105A0000316AFFFF012A3825ACA7201024020202C8 +:105A1000ACA6201452400001240200028FBF0020D7 +:105A20008FB3001C8FB200188FB100148FB000101C +:105A300027BD002803E00008ACA2200027BDFFE03E +:105A4000AFB20018AFB10014AFB00010AFBF001C70 +:105A50003C1160008E2320748F82000430D0FFFF41 +:105A600030F2FFFF1062000C2406008F0E00006E63 +:105A7000000000003C06801F0010440034C5FF00F9 +:105A80000112382524040002AE2720100000302126 +:105A9000AE252014AE2420008FBF001C8FB200184A +:105AA0008FB100148FB0001000C0102103E0000877 +:105AB00027BD002027BDFFE0AFB0001030D0FFFFB2 +:105AC000AFBF0018AFB100140E00006E30F1FFFF41 +:105AD00000102400009180253C036000AC70201071 +:105AE0008FBF00188FB100148FB000102402000483 +:105AF000AC62200027BD002003E000080000102158 +:105B000027BDFFE03C046018AFBF0018AFB1001420 +:105B1000AFB000108C8850002403FF7F34028071E6 +:105B20000103382434E5380C241F00313C1980006F +:105B3000AC8550003C11800AAC8253BCAF3F0008DA +:105B40000E00054CAF9100400E00050A3C116000AC +:105B50000E00007D000000008E3008083C0F570941 +:105B60002418FFF00218602435EEE00035EDF00057 +:105B7000018E5026018D58262D4600012D69000109 +:105B8000AF86004C0E000D09AF8900503C06601630 +:105B90008CC700003C0860148D0500A03C03FFFF8B +:105BA00000E320243C02535300052FC2108200550D +:105BB00034D07C00960201F2A780006C10400003F4 +:105BC000A780007C384B1E1EA78B006C960201F844 +:105BD000104000048F8D0050384C1E1EA78C007C96 +:105BE0008F8D005011A000058F83004C240E0020E3 +:105BF000A78E007CA78E006C8F83004C1060000580 +:105C00009785007C240F0020A78F007CA78F006C55 +:105C10009785007C2CB8008153000001240500808A +:105C20009784006C2C91040152200001240404008C +:105C30001060000B3C0260008FBF00188FB1001491 +:105C40008FB0001027BD0020A784006CA785007CC2 +:105C5000A380007EA780007403E00008A780009264 +:105C60008C4704382419103C30FFFFFF13F9000360 +:105C700030A8FFFF1100004624030050A380007EDF +:105C80009386007E50C00024A785007CA780007CFE +:105C90009798007CA780006CA7800074A780009272 +:105CA0003C010800AC3800800E00078700000000AF +:105CB0003C0F60008DED0808240EFFF03C0B600ED9 +:105CC000260C0388356A00100000482100002821B6 +:105CD00001AE20243C105709AF8C0010AF8A004859 +:105CE000AF89001810900023AF8500148FBF0018F3 +:105CF0008FB100148FB0001027BD002003E0000812 +:105D0000AF80005400055080014648218D260004D4 +:105D10000A00014800D180219798007CA784006C7C +:105D2000A7800074A78000923C010800AC38008076 +:105D30000E000787000000003C0F60008DED080892 +:105D4000240EFFF03C0B600E260C0388356A001011 +:105D5000000048210000282101AE20243C105709F2 +:105D6000AF8C0010AF8A0048AF8900181490FFDF95 +:105D7000AF85001424110001AF9100548FBF0018AB +:105D80008FB100148FB0001003E0000827BD002081 +:105D90000A00017BA383007E3083FFFF8F880040D1 +:105DA0008F87003C000321403C0580003C020050EE +:105DB000008248253C0660003C0A010034AC040027 +:105DC0008CCD08E001AA58241160000500000000F5 +:105DD0008CCF08E024E7000101EA7025ACCE08E092 +:105DE0008D19001001805821ACB900388D180014AD +:105DF000ACB8003CACA9003000000000000000007E +:105E00000000000000000000000000000000000092 +:105E100000000000000000003C0380008C640000D3 +:105E2000308200201040FFFD3C0F60008DED08E047 +:105E30003C0E010001AE18241460FFE100000000D8 +:105E4000AF87003C03E00008AF8B00588F8500400F +:105E5000240BFFF03C06800094A7001A8CA90024B4 +:105E600030ECFFFF000C38C000EB5024012A402129 +:105E7000ACC8003C8CA400248CC3003C00831023DD +:105E800018400033000000008CAD002025A2000166 +:105E90003C0F0050ACC2003835EE00103C068000CC +:105EA000ACCE003000000000000000000000000048 +:105EB00000000000000000000000000000000000E2 +:105EC000000000003C0480008C9900003338002062 +:105ED0001300FFFD30E20008104000173C0980006D +:105EE0008C880408ACA800108C83040CACA30014AC +:105EF0003C1900203C188000AF19003094AE001807 +:105F000094AF001C01CF3021A4A6001894AD001A54 +:105F100025A70001A4A7001A94AB001A94AC001E98 +:105F2000118B00030000000003E0000800000000E7 +:105F300003E00008A4A0001A8D2A0400ACAA0010F7 +:105F40008D240404ACA400140A0002183C1900209B +:105F50008CA200200A0002003C0F00500A0001EE53 +:105F60000000000027BDFFE8AFBF00100E000232A6 +:105F7000000000008F8900408FBF00103C038000AC +:105F8000A520000A9528000A9527000427BD0018BF +:105F90003105FFFF30E6000F0006150000A22025A6 +:105FA00003E00008AC6400803C0508008CA50020DC +:105FB0008F83000C27BDFFE8AFB00010AFBF001407 +:105FC00010A300100000802124040001020430040A +:105FD00000A6202400C3102450440006261000010F +:105FE000001018802787FDA41480000A006718217C +:105FF000261000012E0900025520FFF38F83000CAC +:10600000AF85000C8FBF00148FB0001003E00008B4 +:1060100027BD00188C6800003C058000ACA8002457 +:106020000E000234261000013C0508008CA500205B +:106030000A0002592E0900022405000100851804F7 +:106040003C0408008C84002027BDFFC8AFBF00348B +:1060500000831024AFBE0030AFB7002CAFB60028CD +:10606000AFB50024AFB40020AFB3001CAFB200182E +:10607000AFB1001410400051AFB000108F84004049 +:10608000948700069488000A00E8302330D5FFFF8B +:1060900012A0004B8FBF0034948B0018948C000A20 +:1060A000016C50233142FFFF02A2482B1520000251 +:1060B00002A02021004020212C8F000515E00002C5 +:1060C00000809821241300040E0001C102602021E9 +:1060D0008F87004002609021AF80004494F4000A52 +:1060E000026080211260004E3291FFFF3C1670006A +:1060F0003C1440003C1E20003C1760008F99005863 +:106100008F380000031618241074004F0283F82BF8 +:1061100017E0003600000000107E00478F86004424 +:1061200014C0003A2403000102031023022320219B +:106130003050FFFF1600FFF13091FFFF8F870040C6 +:106140003C1100203C108000AE11003094EB000A9E +:106150003C178000024B5021A4EA000A94E9000A8F +:1061600094E800043123FFFF3106000F00062D00E4 +:106170000065F025AEFE008094F3000A94F6001846 +:1061800012D30036001221408CFF00148CF4001052 +:1061900003E468210000C02101A4782B029870213B +:1061A00001CF6021ACED0014ACEC001002B238233A +:1061B00030F5FFFF16A0FFB88F8400408FBF00347A +:1061C0008FBE00308FB7002C8FB600288FB500240B +:1061D0008FB400208FB3001C8FB200188FB1001451 +:1061E0008FB0001003E0000827BD00381477FFCC03 +:1061F0008F8600440E000EE202002021004018218C +:106200008F86004410C0FFC9020310230270702360 +:106210008F87004001C368210A0002E431B2FFFF0A +:106220008F86004414C0FFC93C1100203C10800040 +:106230000A0002AEAE1100300E00046602002021FA +:106240000A0002DB00401821020020210E0009395B +:10625000022028210A0002DB004018210E0001EE76 +:10626000000000000A0002C702B2382327BDFFC8A1 +:10627000AFB7002CAFB60028AFB50024AFB40020F4 +:10628000AFB3001CAFB20018AFB10014AFB0001034 +:10629000AFBF00300E00011B241300013C047FFF40 +:1062A0003C0380083C0220003C010800AC20007048 +:1062B0003496FFFF34770080345200033C1512C03F +:1062C000241400013C1080002411FF800E000245C0 +:1062D000000000008F8700488F8B00188F89001402 +:1062E0008CEA00EC8CE800E8014B302B01092823F4 +:1062F00000A6102314400006014B18231440000E82 +:106300003C05800002A3602B1180000B0000000000 +:106310003C0560008CEE00EC8CED00E88CA4180CC1 +:10632000AF8E001804800053AF8D00148F8F0010C3 +:10633000ADF400003C0580008CBF00003BF900017B +:10634000333800011700FFE13C0380008C6201003C +:1063500024060C0010460009000000008C680100B3 +:106360002D043080548000103C0480008C690100B2 +:106370002D2331811060000C3C0480008CAA0100A8 +:1063800011460004000020218CA6010024C5FF81D5 +:1063900030A400FF8E0B01000E000269AE0B00243A +:1063A0000A00034F3C0480008C8D01002DAC3300AB +:1063B00011800022000000003C0708008CE70098D4 +:1063C00024EE00013C010800AC2E00983C04800043 +:1063D0008C8201001440000300000000566000148D +:1063E0003C0440008C9F01008C9801000000982123 +:1063F00003F1C82400193940330F007F00EF7025E6 +:1064000001D26825AC8D08308C8C01008C85010090 +:10641000258B0100017130240006514030A3007F1C +:106420000143482501324025AC8808303C04400037 +:10643000AE0401380A00030E000000008C99010030 +:10644000240F0020AC99002092F80000330300FFD5 +:10645000106F000C241F0050547FFFDD3C048000AF +:106460008C8401000E00154E000000000A00034F4E +:106470003C04800000963824ACA7180C0A000327BF +:106480008F8F00108C8501000E0008F72404008017 +:106490000A00034F3C04800000A4102B24030001D9 +:1064A00010400009000030210005284000A4102BF6 +:1064B00004A00003000318405440FFFC00052840DE +:1064C0005060000A0004182B0085382B54E00004AB +:1064D0000003184200C33025008520230003184222 +:1064E0001460FFF9000528420004182B03E000089F +:1064F00000C310213084FFFF30C600FF3C0780003E +:106500008CE201B80440FFFE00064C000124302557 +:106510003C08200000C820253C031000ACE00180AE +:10652000ACE50184ACE4018803E00008ACE301B809 +:106530003C0660008CC5201C2402FFF03083020062 +:10654000308601001060000E00A2282434A500014E +:106550003087300010E0000530830C0034A50004C3 +:106560003C04600003E00008AC85201C1060FFFDC7 +:106570003C04600034A5000803E00008AC85201C42 +:1065800054C0FFF334A500020A0003B03087300086 +:1065900027BDFFE8AFB00010AFBF00143C0760009C +:1065A000240600021080001100A080218F83005873 +:1065B0000E0003A78C6400188F8200580000202171 +:1065C000240600018C45000C0E000398000000001A +:1065D0001600000224020003000010218FBF0014E7 +:1065E0008FB0001003E0000827BD00188CE8201CC5 +:1065F0002409FFF001092824ACE5201C8F870058EE +:106600000A0003CD8CE5000C3C02600E00804021A6 +:1066100034460100240900180000000000000000BA +:10662000000000003C0A00503C0380003547020097 +:10663000AC68003834640400AC65003CAC670030E2 +:106640008C6C0000318B00201160FFFD2407FFFFE0 +:106650002403007F8C8D00002463FFFF248400044A +:10666000ACCD00001467FFFB24C60004000000004E +:10667000000000000000000024A402000085282B78 +:106680003C0300203C0E80002529FFFF010540212E +:10669000ADC300301520FFE00080282103E0000892 +:1066A000000000008F82005827BDFFD8AFB3001C48 +:1066B000AFBF0020AFB20018AFB10014AFB00010F0 +:1066C00094460002008098218C5200182CC300814F +:1066D0008C4800048C4700088C51000C8C49001039 +:1066E000106000078C4A00142CC4000414800013AE +:1066F00030EB000730C5000310A0001000000000C0 +:106700002410008B02002021022028210E00039873 +:10671000240600031660000224020003000010217A +:106720008FBF00208FB3001C8FB200188FB10014F0 +:106730008FB0001003E0000827BD00281560FFF1AE +:106740002410008B3C0C80003C030020241F00011F +:10675000AD830030AF9F0044000000000000000047 +:10676000000000002419FFF024D8000F031978243A +:106770003C1000D0AD88003801F0702524CD000316 +:106780003C08600EAD87003C35850400AD8E0030BE +:10679000000D38823504003C3C0380008C6B000007 +:1067A000316200201040FFFD0000000010E00008F2 +:1067B00024E3FFFF2407FFFF8CA800002463FFFFF2 +:1067C00024A50004AC8800001467FFFB24840004A7 +:1067D0003C05600EACA60038000000000000000080 +:1067E000000000008F8600543C0400203C0780001D +:1067F000ACE4003054C000060120202102402021DA +:106800000E0003A7000080210A00041D02002021C1 +:106810000E0003DD01402821024020210E0003A7C5 +:10682000000080210A00041D0200202127BDFFE096 +:10683000AFB200183092FFFFAFB10014AFBF001C21 +:10684000AFB000101640000D000088210A0004932C +:106850000220102124050003508500278CE5000C40 +:106860000000000D262800013111FFFF24E2002066 +:106870000232802B12000019AF8200588F82004430 +:10688000144000168F8700583C0670003C0320001F +:106890008CE5000000A62024148300108F84006083 +:1068A000000544023C09800000A980241480FFE90F +:1068B000310600FF2CCA000B5140FFEB26280001D7 +:1068C000000668803C0E080025CE575801AE6021B6 +:1068D0008D8B0000016000080000000002201021E4 +:1068E0008FBF001C8FB200188FB100148FB0001042 +:1068F00003E0000827BD00200E0003982404008454 +:106900001600FFD88F8700580A000474AF8000601B +:10691000020028210E0003BF240400018F870058C5 +:106920000A000474AF820060020028210E0003BF39 +:10693000000020210A0004A38F8700580E000404E1 +:10694000020020218F8700580A000474AF82006083 +:1069500030AFFFFF000F19C03C0480008C9001B8DD +:106960000600FFFE3C1920043C181000AC83018097 +:10697000AC800184AC990188AC9801B80A00047518 +:106980002628000190E2000390E30002000020218D +:106990000002FE0000033A0000FF2825240600083C +:1069A0000E000398000000001600FFDC2402000324 +:1069B0008F870058000010210A000474AF82006025 +:1069C00090E8000200002021240600090A0004C308 +:1069D00000082E0090E4000C240900FF308500FF21 +:1069E00010A900150000302190F9000290F8000372 +:1069F000308F00FF94EB000400196E000018740043 +:106A0000000F62000186202501AE5025014B28258C +:106A10003084FF8B0A0004C32406000A90E30002BE +:106A200090FF0004000020210003360000DF28252D +:106A30000A0004C32406000B0A0004D52406008BB8 +:106A4000000449C23127003F000443423C02800059 +:106A500000082040240316802CE60020AC43002CC4 +:106A600024EAFFE02482000114C0000330A900FFE3 +:106A700000801021314700FF000260803C0D800043 +:106A8000240A0001018D20213C0B000E00EA28049D +:106A9000008B302111200005000538278CCE000026 +:106AA00001C5382503E00008ACC700008CD8000001 +:106AB0000307782403E00008ACCF000027BDFFE007 +:106AC000AFB10014AFB00010AFBF00183C076000BA +:106AD0008CE408083402F0003C1160003083F000C0 +:106AE000240501C03C04800E000030211062000625 +:106AF000241000018CEA08083149F0003928E00030 +:106B00000008382B000780403C0D0200AE2D081411 +:106B1000240C16803C0B80008E2744000E000F8B47 +:106B2000AD6C002C120000043C02169124050001FB +:106B3000120500103C023D2C345800E0AE384408E9 +:106B40003C1108008E31007C8FBF00183C066000AD +:106B500000118540360F16808FB100148FB00010E1 +:106B60003C0E020027BD0020ACCF442003E000080B +:106B7000ACCE08103C0218DA345800E0AE384408B5 +:106B80003C1108008E31007C8FBF00183C0660006D +:106B900000118540360F16808FB100148FB00010A1 +:106BA0003C0E020027BD0020ACCF442003E00008CB +:106BB000ACCE08100A0004EB240500010A0004EB27 +:106BC0000000282124020400A7820024A780001CC2 +:106BD000000020213C06080024C65A582405FFFF67 +:106BE00024890001000440803124FFFF01061821A0 +:106BF0002C87002014E0FFFAAC6500002404040098 +:106C0000A7840026A780001E000020213C06080063 +:106C100024C65AD82405FFFF248D0001000460809B +:106C200031A4FFFF018658212C8A00201540FFFA6D +:106C3000AD650000A7800028A7800020A780002263 +:106C4000000020213C06080024C65B582405FFFFF5 +:106C5000249900010004C0803324FFFF030678213B +:106C60002C8E000415C0FFFAADE500003C05600065 +:106C70008CA73D002403E08F00E31024344601403C +:106C800003E00008ACA63D002487007F000731C266 +:106C900024C5FFFF000518C2246400013082FFFFF5 +:106CA000000238C0A78400303C010800AC27003047 +:106CB000AF80002C0000282100002021000030219E +:106CC0002489000100A728213124FFFF2CA81701E7 +:106CD000110000032C8300801460FFF924C600011A +:106CE00000C02821AF86002C10C0001DA786002AF6 +:106CF00024CAFFFF000A11423C08080025085B581F +:106D00001040000A00002021004030212407FFFF2E +:106D1000248E00010004688031C4FFFF01A86021B7 +:106D20000086582B1560FFFAAD87000030A2001FC7 +:106D30005040000800043080240300010043C804D0 +:106D400000041080004878212738FFFF03E0000886 +:106D5000ADF8000000C820212405FFFFAC8500002D +:106D600003E000080000000030A5FFFF30C6FFFF71 +:106D700030A8001F0080602130E700FF0005294295 +:106D80000000502110C0001D24090001240B000147 +:106D900025180001010B2004330800FF0126782686 +:106DA000390E00202DED00012DC2000101A2182591 +:106DB0001060000D014450250005C880032C4021BF +:106DC0000100182110E0000F000A20278D040000A8 +:106DD000008A1825AD03000024AD00010000402109 +:106DE0000000502131A5FFFF252E000131C9FFFF12 +:106DF00000C9102B1040FFE72518000103E0000830 +:106E0000000000008D0A0000014440240A0005D162 +:106E1000AC68000027BDFFE830A5FFFF30C6FFFFCC +:106E2000AFB00010AFBF001430E7FFFF00005021EB +:106E30003410FFFF0000602124AF001F00C0482174 +:106E4000241800012419002005E0001601E010219B +:106E50000002F943019F682A0009702B01AE40240B +:106E600011000017000C18800064102110E00005CC +:106E70008C4B000000F840040008382301675824B8 +:106E800000003821154000410000402155600016E7 +:106E90003169FFFF258B0001316CFFFF05E1FFEC3D +:106EA00001E0102124A2003E0002F943019F682A5C +:106EB0000009702B01AE40241500FFEB000C188078 +:106EC000154600053402FFFF020028210E0005B51B +:106ED00000003821020010218FBF00148FB0001075 +:106EE00003E0000827BD00181520000301601821E9 +:106EF000000B1C0224080010306A00FF154000053A +:106F0000306E000F250D000800031A0231A800FFA3 +:106F1000306E000F15C00005307F000325100004FF +:106F200000031902320800FF307F000317E000055C +:106F3000386900012502000200031882304800FF72 +:106F4000386900013123000110600004310300FFA3 +:106F5000250A0001314800FF310300FF000C6940A1 +:106F600001A34021240A000110CAFFD53110FFFF00 +:106F7000246E000131C800FF1119FFC638C9000195 +:106F80002D1F002053E0001C258B0001240D000163 +:106F90000A000648240E002051460017258B0001E8 +:106FA00025090001312800FF2D0900205120001281 +:106FB000258B000125430001010D5004014B1024D5 +:106FC000250900011440FFF4306AFFFF3127FFFF5D +:106FD00010EE000C2582FFFF304CFFFF0000502117 +:106FE0003410FFFF312800FF2D0900205520FFF24B +:106FF00025430001258B0001014648260A000602B0 +:10700000316CFFFF00003821000050210A000654B7 +:107010003410FFFF27BDFFD8AFB0001030F0FFFFE6 +:10702000AFB10014001039423211FFE000071080A8 +:10703000AFB3001C00B1282330D3FFFFAFB200185C +:1070400030A5FFFF00809021026030210044202104 +:10705000AFBF00200E0005E03207001F022288218A +:107060003403FFFF0240202102002821026030216A +:1070700000003821104300093231FFFF02201021A7 +:107080008FBF00208FB3001C8FB200188FB1001487 +:107090008FB0001003E0000827BD00280E0005E0B7 +:1070A0000000000000408821022010218FBF002036 +:1070B0008FB3001C8FB200188FB100148FB0001076 +:1070C00003E0000827BD0028000424003C03600002 +:1070D000AC603D0810A00002348210063482101605 +:1070E00003E00008AC623D0427BDFFE0AFB0001034 +:1070F000309000FF2E020006AFBF001810400008BD +:10710000AFB10014001030803C03080024635784A2 +:1071100000C328218CA400000080000800000000AB +:10712000000020218FBF00188FB100148FB0001015 +:107130000080102103E0000827BD00209791002A5D +:1071400016200051000020213C020800904200332C +:107150000A0006BB00000000978D002615A0003134 +:10716000000020210A0006BB2402000897870024A3 +:1071700014E0001A00001821006020212402000100 +:107180001080FFE98FBF0018000429C2004530219C +:1071900000A6582B1160FFE43C0880003C0720004B +:1071A000000569C001A76025AD0C00203C038008E4 +:1071B0002402001F2442FFFFAC6000000441FFFDD9 +:1071C0002463000424A5000100A6702B15C0FFF560 +:1071D000000569C00A0006A58FBF00189787001C2C +:1071E0003C04080024845A58240504000E0006605C +:1071F00024060001978B002424440001308AFFFFFD +:107200002569FFFF2D48040000402821150000409B +:10721000A789002424AC3800000C19C00A0006B964 +:10722000A780001C9787001E3C04080024845AD8BD +:10723000240504000E00066024060001979900262C +:10724000244400013098FFFF272FFFFF2F0E04007A +:107250000040882115C0002CA78F0026A780001EA3 +:107260003A020003262401003084FFFF0E00068D41 +:107270002C4500010011F8C027F00100001021C0CA +:107280000A0006BB240200089785002E978700227B +:107290003C04080024845B580E00066024060001AC +:1072A0009787002A8F89002C2445000130A8FFFF12 +:1072B00024E3FFFF0109302B0040802114C0001897 +:1072C000A783002AA7800022978500300E000F7543 +:1072D00002002021244A05003144FFFF0E00068DE4 +:1072E000240500013C05080094A500320E000F752E +:1072F00002002021244521003C0208009042003376 +:107300000A0006BB000521C00A0006F3A784001E80 +:1073100024AC3800000C19C00A0006B9A784001C70 +:107320000A00070DA7850022308400FF27BDFFE873 +:107330002C820006AFBF0014AFB000101040001543 +:1073400000A03821000440803C0308002463579CBF +:10735000010328218CA40000008000080000000028 +:1073600024CC007F000751C2000C59C23170FFFFCE +:107370002547C40030E5FFFF2784001C02003021B0 +:107380000E0005B52407000197860028020620217B +:10739000A78400288FBF00148FB0001003E00008FE +:1073A00027BD00183C0508008CA50030000779C2F5 +:1073B0000E00038125E4DF003045FFFF3C04080098 +:1073C00024845B58240600010E0005B52407000143 +:1073D000978E002A8FBF00148FB0001025CD0001BA +:1073E00027BD001803E00008A78D002A0007C9C2C6 +:1073F0002738FF00001878C231F0FFFF3C04080076 +:1074000024845AD802002821240600010E0005B564 +:1074100024070001978D0026260E0100000E84002F +:1074200025AC00013C0B6000A78C0026AD603D0838 +:1074300036040006000030213C0760008CE23D0469 +:10744000305F000617E0FFFD24C9000100061B00A5 +:10745000312600FF006440252CC50004ACE83D0443 +:1074600014A0FFF68FBF00148FB0001003E00008D7 +:1074700027BD0018000751C22549C8002406000195 +:10748000240700013C04080024845A580E0005B566 +:107490003125FFFF978700248FBF00148FB00010A5 +:1074A00024E6000127BD001803E00008A786002499 +:1074B0003C0660183C090800252900FCACC9502C8A +:1074C0008CC850003C0580003C020002350700805B +:1074D000ACC750003C04080024841FE03C030800B3 +:1074E00024631F98ACA50008ACA2000C3C01080066 +:1074F000AC2459A43C010800AC2359A803E00008BF +:107500002402000100A030213C1C0800279C59AC3B +:107510003C0C04003C0B0002008B3826008C4026FB +:107520002CE200010007502B2D050001000A4880C5 +:107530003C030800246359A4004520250123182199 +:107540001080000300001021AC660000240200013E +:1075500003E00008000000003C1C0800279C59AC18 +:107560003C0B04003C0A0002008A3026008B3826BF +:107570002CC200010006482B2CE5000100094080C8 +:107580003C030800246359A4004520250103182169 +:1075900010800005000010213C0C0800258C1F986D +:1075A000AC6C00002402000103E0000800000000B1 +:1075B0003C0900023C080400008830260089382677 +:1075C0002CC30001008028212CE400010083102539 +:1075D0001040000B000030213C1C0800279C59ACD7 +:1075E0003C0A80008D4E00082406000101CA68256F +:1075F000AD4D00088D4C000C01855825AD4B000C9D +:1076000003E0000800C010213C1C0800279C59AC76 +:107610003C0580008CA6000C0004202724020001F9 +:1076200000C4182403E00008ACA3000C3C020002D4 +:107630001082000B3C0560003C070400108700032B +:107640000000000003E00008000000008CA908D042 +:10765000240AFFFD012A402403E00008ACA808D05A +:107660008CA408D02406FFFE0086182403E000083E +:10767000ACA308D03C05601A34A600108CC300806F +:1076800027BDFFF88CC50084AFA3000093A40000C1 +:107690002402001010820003AFA5000403E00008DC +:1076A00027BD000893A7000114E0001497AC000266 +:1076B00097B800023C0F8000330EFFFC01CF682119 +:1076C000ADA50000A3A000003C0660008CC708D058 +:1076D0002408FFFE3C04601A00E82824ACC508D04A +:1076E0008FA300048FA200003499001027BD00086A +:1076F000AF22008003E00008AF2300843C0B800031 +:10770000318AFFFC014B48218D2800000A00080C3B +:10771000AFA8000427BDFFE8AFBF00103C1C080065 +:10772000279C59AC3C0580008CA4000C8CA2000462 +:107730003C0300020044282410A0000A00A31824DF +:107740003C0604003C0400021460000900A610245A +:107750001440000F3C0404000000000D3C1C080015 +:10776000279C59AC8FBF001003E0000827BD00180C +:107770003C0208008C4259A40040F80900000000B7 +:107780003C1C0800279C59AC0A0008358FBF00102C +:107790003C0208008C4259A80040F8090000000093 +:1077A0000A00083B000000003C0880008D0201B880 +:1077B0000440FFFE35090180AD2400003C031000A9 +:1077C00024040040AD250004A1240008A1260009DE +:1077D000A527000A03E00008AD0301B83084FFFFCD +:1077E0000080382130A5FFFF000020210A00084555 +:1077F000240600803087FFFF8CA400002406003898 +:107800000A000845000028218F8300788F860070C9 +:107810001066000B008040213C07080024E75B68ED +:10782000000328C000A710218C440000246300013D +:10783000108800053063000F5466FFFA000328C06B +:1078400003E00008000010213C07080024E75B6CFF +:1078500000A7302103E000088CC200003C03900028 +:1078600034620001008220253C038000AC640020CB +:107870008C65002004A0FFFE0000000003E000086B +:10788000000000003C0280003443000100832025FA +:1078900003E00008AC44002027BDFFE0AFB10014B6 +:1078A0003091FFFFAFB00010AFBF001812200013DF +:1078B00000A080218CA20000240400022406020003 +:1078C0001040000F004028210E0007250000000096 +:1078D00000001021AE000000022038218FBF0018E8 +:1078E0008FB100148FB0001000402021000028212B +:1078F000000030210A00084527BD00208CA20000AE +:10790000022038218FBF00188FB100148FB00010F3 +:107910000040202100002821000030210A000845F5 +:1079200027BD002000A010213087FFFF8CA5000498 +:107930008C4400000A000845240600068F83FD9C45 +:1079400027BDFFE8AFBF0014AFB00010906700087C +:10795000008010210080282130E600400000202116 +:1079600010C000088C5000000E0000BD0200202155 +:10797000020020218FBF00148FB000100A000548BC +:1079800027BD00180E0008A4000000000E0000BD76 +:1079900002002021020020218FBF00148FB00010B0 +:1079A0000A00054827BD001827BDFFE0AFB0001052 +:1079B0008F90FD9CAFBF001CAFB20018AFB1001498 +:1079C00092060001008088210E00087230D2000467 +:1079D00092040005001129C2A6050000348300406E +:1079E000A20300050E00087C022020210E00054A9B +:1079F0000220202124020001AE02000C02202821D6 +:107A0000A602001024040002A602001224060200AE +:107A1000A60200140E000725A60200161640000F4D +:107A20008FBF001C978C00743C0B08008D6B007896 +:107A30002588FFFF3109FFFF256A0001012A382B45 +:107A400010E00006A78800743C0F6006240E0016A4 +:107A500035ED0010ADAE00508FBF001C8FB2001886 +:107A60008FB100148FB0001003E0000827BD002084 +:107A700027BDFFE0AFB10014AFBF0018AFB00010DA +:107A80001080000400A088212402008010820007DA +:107A9000000000000000000D8FBF00188FB100141F +:107AA0008FB0001003E0000827BD00200E00087210 +:107AB00000A020218F86FD9C0220202190C500057A +:107AC0000E00087C30B000FF2403003E1603FFF1D7 +:107AD0003C0680008CC401780480FFFE34C801405D +:107AE000240900073C071000AD11000002202021EE +:107AF000A10900048FBF00188FB100148FB00010CF +:107B0000ACC701780A0008C527BD002027BDFFE0EB +:107B1000AFB00010AFBF0018AFB100143C10800030 +:107B20008E110020000000000E00054AAE04002067 +:107B3000AE1100208FBF00188FB100148FB000105D +:107B400003E0000827BD00203084FFFF00803821BB +:107B50002406003500A020210A0008450000282145 +:107B60003084FFFF008038212406003600A0202149 +:107B70000A0008450000282127BDFFD0AFB500242A +:107B80003095FFFFAFB60028AFB40020AFBF002C88 +:107B9000AFB3001CAFB20018AFB10014AFB000100B +:107BA00030B6FFFF12A000270000A0218F920058DE +:107BB0008E4300003C0680002402004000033E0289 +:107BC00000032C0230E4007F006698241482001D1C +:107BD00030A500FF8F8300682C68000A1100001098 +:107BE0008F8D0044000358803C0C0800258C57B84A +:107BF000016C50218D4900000120000800000000A8 +:107C000002D4302130C5FFFF0E0008522404008446 +:107C1000166000028F920058AF8000688F8D00447C +:107C20002659002026980001032090213314FFFFDD +:107C300015A00004AF9900580295202B1480FFDC9A +:107C400000000000028010218FBF002C8FB600289A +:107C50008FB500248FB400208FB3001C8FB20018A2 +:107C60008FB100148FB0001003E0000827BD003072 +:107C70002407003414A70149000000009247000EB9 +:107C80008F9FFDA08F90FD9C24181600A3E700197C +:107C90009242000D3C0880003C07800CA3E20018D3 +:107CA000964A00123C0D60003C117FFFA60A005C62 +:107CB000964400103623FFFF240200053099FFFF91 +:107CC000AE1900548E46001CAD1800288CEF000041 +:107CD0008DAE444801E6482601C93021AE06003881 +:107CE0008E05003824CB00013C0E7F00AE05003C21 +:107CF0008E0C003CAFEC0004AE0B00208E13002075 +:107D0000AE13001CA3E0001BAE03002CA3E2001284 +:107D10008E4A001424130050AE0A00348E0400343E +:107D2000AFE400148E590018AE1900489258000CA8 +:107D3000A218004E920D000835AF0020A20F0008D7 +:107D40008E090018012E282434AC4000AE0C001817 +:107D5000920B0000317200FF1253027F2403FF8058 +:107D60003C04080024845BE80E0008AA0000000020 +:107D70003C1108008E315BE80E00087202202021C1 +:107D80002405000424080001A2050025022020216A +:107D90000E00087CA20800053C0580008CB001782C +:107DA0000600FFFE8F92005834AE0140240F0002FF +:107DB0003C091000ADD10000A1CF0004ACA90178AE +:107DC0000A000962AF8000682CAD003751A0FF9413 +:107DD0008F8D0044000580803C110800263157E05B +:107DE000021178218DEE000001C0000800000000A3 +:107DF0002411000414B1008C3C0780003C080800EA +:107E00008D085BE88F86FD9CACE800208E4500085D +:107E10008F99FDA0240D0050ACC500308E4C000899 +:107E2000ACCC00508E4B000CACCB00348E43001019 +:107E3000ACC300388E4A0010ACCA00548E42001405 +:107E4000ACC2003C8E5F0018AF3F00048E50001C97 +:107E5000ACD0002090C40000309800FF130D024AFF +:107E6000000000008CC400348CD00030009030231F +:107E700004C000F12404008C126000EE2402000310 +:107E80000A000962AF8200682419000514B900666F +:107E90003C0580003C0808008D085BE88F86FD9C4F +:107EA000ACA800208E4C00048F8AFDA0240720007F +:107EB000ACCC001C924B000824120008A14B001906 +:107EC0008F82005890430009A14300188F85005805 +:107ED00090BF000A33E400FF1092001028890009C7 +:107EE000152000BA240E0002240D0020108D000B76 +:107EF000340780002898002117000008240740005C +:107F000024100040109000053C0700012419008057 +:107F1000109900023C070002240740008CC20018A0 +:107F20003C03FF00004350240147F825ACDF001854 +:107F300090B2000BA0D200278F8300589464000CED +:107F4000108001FE000000009467000C3C1F8000C0 +:107F50002405FFBFA4C7005C9063000E2407000443 +:107F6000A0C300088F820058904A000FA0CA0009E1 +:107F70008F8900588D3200108FE400740244C823AA +:107F8000ACD900588D300014ACD0002C95380018B6 +:107F9000330DFFFFACCD00409531001A322FFFFFAB +:107FA000ACCF00448D2E001CACCE00489128000EB2 +:107FB000A0C8000890CC000801855824126001B6C2 +:107FC000A0CB00088F9200580A000962AF870068B2 +:107FD0002406000614A600143C0E80003C0F080086 +:107FE0008DEF5BE88F85FD98ADCF00208E4900189E +:107FF0008F86FD9C8F8BFDA0ACA900008CC800383B +:1080000024040005ACA800048CCC003C1260008164 +:10801000AD6C00000A000962AF84006824110007FB +:1080200010B1004B240400063C05080024A55BE8C1 +:108030000E000881240400818F9200580013102B39 +:108040000A000962AF820068241F002314BFFFF6F4 +:108050003C0C80003C0508008CA55BE88F8BFDA0E4 +:10806000AD8500208F91FD9C8E4600042564002084 +:1080700026450014AE260028240600030E000F81BA +:10808000257000308F87005802002021240600034D +:108090000E000F8124E500083C04080024845BE8FE +:1080A0000E0008AA0000000092230000240A0050DD +:1080B000306200FF544AFFE18F9200580E000F6CAF +:1080C000000000000A000A6A8F920058240800335A +:1080D00014A800323C0380003C1108008E315BE89C +:1080E0008F8FFDA0AC7100208E420008240D002867 +:1080F0008F89FD9CADE200308E4A000C24060009F9 +:10810000ADEA00348E5F0010ADFF00388E440014DD +:10811000ADE400208E590018ADF900248E58001CE3 +:10812000ADF80028A1ED00118E4E00041260003160 +:10813000AD2E00288F9200580A000962AF860068B1 +:10814000240D002214ADFFB8000000002404000735 +:108150003C1008008E105BE83C188000AF10002037 +:108160005660FEAEAF8400683C04080024845BE8DF +:108170000E0008AA241300508F84FD9C90920000EA +:10818000325900FF1333014B000000008F9200585A +:10819000000020210A000962AF8400683C05080045 +:1081A00024A55BE80E000858240400810A000A6A2E +:1081B0008F92005802D498213265FFFF0E000852BA +:1081C000240400840A0009628F920058108EFF5325 +:1081D000240704002887000310E00179241100041B +:1081E000240F0001548FFF4D240740000A000A228B +:1081F000240701003C05080024A55BE80E0008A444 +:10820000240400828F920058000030210A00096285 +:10821000AF8600683C04080024845BE88CC2003808 +:108220000E0008AA8CC3003C8F9200580A000AC0B6 +:1082300000002021240400823C05080024A55BE8FE +:108240000E0008A4000000008F92005800001021CA +:108250000A000962AF8200688E5000048F91FD9C75 +:108260003C078000ACF00020922C00050200282181 +:10827000318B0002156001562404008A8F92FDA004 +:108280002404008D9245001B30A6002014C001502C +:1082900002002821922E00092408001231C900FF93 +:1082A0001128014B240400810E00087202002021D5 +:1082B0009258001B240F000402002021370D0042B9 +:1082C000A24D001B0E00087CA22F00253C0580005B +:1082D0008CA401780480FFFE34B90140241F000201 +:1082E000AF300000A33F00048F9200583C101000F4 +:1082F000ACB001780A000A6B0013102B8E500004FA +:108300008F91FD9C3C038000AC700020922A0005F8 +:108310000200282131420002144000172404008A80 +:10832000922C00092412000402002821318B00FF46 +:1083300011720011240400810E0008720200202135 +:108340008F89FDA0240800122405FFFE912F001B39 +:108350000200202135EE0020A12E001BA2280009DA +:108360009226000500C538240E00087CA2270005CF +:1083700002002821000020210E0009330000000027 +:108380000A000A6A8F9200588E4C00043C07800055 +:108390003C10080026105BE8ACEC00203C01080013 +:1083A000AC2C5BE8924B0003317100041220013BBE +:1083B0008F84FD9C24020006A0820009924F001BBE +:1083C000240EFFC031E9003F012E4025A08800089F +:1083D0009245000330A6000114C0013200000000E5 +:1083E0008E420008AE0200083C0208008C425BF09E +:1083F000104001318F90FDA0000219C28F8DFD9CAD +:10840000A603000C8E4A000C24180001240400145A +:10841000AE0A002C8E420010AE02001C965F0016C1 +:10842000A61F003C96590014A619003EADB8000CDA +:10843000A5B80010A5B80012A5B80014A5B800167C +:1084400012600144A2040011925100033232000272 +:108450002E5300018F920058266200080A0009621C +:10846000AF8200688E4400043C1980003C068008FE +:10847000AF2400208E45000890D80000240D005045 +:10848000331100FF122D009C2407008824060009E8 +:108490000E000845000000000A000A6A8F9200588A +:1084A0008E5000043C0980003C118008AD30002053 +:1084B0009228000024050050310400FF10850110AF +:1084C0002407008802002021000028210E00084512 +:1084D0002406000E922D00002418FF80020028219F +:1084E00001B8802524040004240600300E0007256E +:1084F000A23000000A000A6A8F9200588E500004D1 +:108500008F91FDA03C028000AC500020923F001BE8 +:1085100033F900101320006C240700810200202191 +:10852000000028212406001F0E000845000000005E +:108530000A000A6A8F9200588E44001C0E00085DE3 +:1085400000000000104000E3004048218F880058E0 +:1085500024070089012020218D05001C240600012C +:108560000E000845000000000A000A6A8F920058B9 +:10857000964900023C10080026105BE831280004F0 +:10858000110000973C0460008E4E001C3C0F8000E0 +:10859000ADEE00203C010800AC2E5BE896470002DF +:1085A00030E40001148000E6000000008E42000468 +:1085B000AE0200083C1008008E105BF0120000ECC8 +:1085C0003C0F80008F92FD9C241000018E4E0018FD +:1085D0008F8DFDA08F9FFD9801CF4825AE490018D3 +:1085E000A2400005AE50000C3C0808008D085BF06E +:1085F0008F840058A6500010000839C2A6500012FF +:10860000A6500014A6500016A5A7000C8C8C0008DC +:108610008F8B00588F8A0058ADAC002C8D63000CF6 +:1086200024070002ADA3001C91460010A1A6001172 +:108630008F82005890450011A3E500088F990058DB +:1086400093380012A258004E8F910058922F0013B9 +:10865000A1AF00128F920058964E0014A5AE003CB8 +:1086600096490016A5A9003E8E480018ADA8001432 +:108670005660FD6AAF8700683C05080024A55BE8EA +:108680000E000881000020218F9200580000382140 +:108690000A000962AF8700683C05080024A55BE872 +:1086A0000E0008A4240400828F9200580A000A4D8C +:1086B000000038210E000F6C000000008F9200585F +:1086C0000A000AC0000020210E00087202002021CA +:1086D0009223001B02002021346A00100E00087C47 +:1086E000A22A001B000038210200202100002821BE +:1086F0000A000BA52406001F9242000C305F000107 +:1087000013E0000300000000964A000EA4CA002CEB +:10871000924B000C316300025060000600003821CB +:108720008E470014964C0012ACC7001CA4CC001A53 +:10873000000038210A000B7F240600093C050800D0 +:1087400024A55BE80E0008A42404008B8F92005837 +:108750000A000A4D0013382B3C0C08008D8C5BE896 +:1087600024DFFFFE25930100326B007F016790211B +:1087700002638824AD110028AE4600E0AE4000E45C +:108780000A0009B3AE5F001CACC000543C0D0800E9 +:108790008DAD5BE83C18800C37090100ACED00287A +:1087A0008E510014AD3100E08E4F0014AD2F00E467 +:1087B0008E4E001025C7FFFE0A0009F4AD27001CED +:1087C0005491FDD6240740000A000A222407100015 +:1087D0000E00092D000000000A000A6A8F9200585E +:1087E0008C83442C3C12DEAD3651BEEF3C010800B8 +:1087F000AC205BE810710062000000003C196C6264 +:1088000037387970147800082404000297850074C2 +:108810009782006C2404009200A2F82B13E0001948 +:1088200002002821240400020E00069524050200FF +:108830003C068000ACC200203C010800AC225BE892 +:108840001040000D8F8C0058240A002824040003D7 +:10885000918B0010316300FF546A00012404000171 +:108860000E0000810000000010400004240400837A +:108870000A000BC28F920058240400833C050800B4 +:1088800024A55BE80E000881000000008F920058CC +:108890000013382B0A000962AF8700680A000B49F1 +:1088A000240200128E4400080E00085D0000000043 +:1088B0000A000B55AE0200083C05080024A55BE841 +:1088C0000E000858240400878F9200580A000B728B +:1088D0000013102B240400040E000695240500301C +:1088E0001440002A004048218F8800582407008344 +:1088F000012020218D05001C0A000BB32406000175 +:108900008F8300788F8600701066FEEE000038219D +:108910003C07080024E75B6C000320C00087282187 +:108920008CAE000011D0005D246F000131E3000F18 +:108930005466FFFA000320C00A000B8C00003821A7 +:108940008E4400040E00085D000000000A000BC801 +:10895000AE0200083C05080024A55BE80E0008A450 +:10896000240400828F9200580A000B72000010212C +:108970003C05080024A55BE80A000C7C2404008761 +:108980008C83442C0A000C5B3C196C628F88005865 +:108990003C0780083C0C8000240B0050240A000196 +:1089A000AD820020A0EB0000A0EA000191030004CA +:1089B000A0E3001891040005A0E400199106000648 +:1089C0003C04080024845B6CA0E6001A91020007B6 +:1089D0003C06080024C65B68A0E2001B9105000865 +:1089E000A0E5001C911F0009A0FF001D9119000ABD +:1089F000A0F9001E9118000BA0F8001F9112000CA6 +:108A0000A0F200209111000DA0F100219110000EA4 +:108A1000A0F00022910F000FA0EF0023910E001094 +:108A2000A0EE0024910D0011A0ED0025950C00147E +:108A3000A4EC0028950B00168F8A00708F920078A6 +:108A4000A4EB002A95030018000A10C02545000178 +:108A5000A4E3002C8D1F001C0044C0210046C82147 +:108A600030A5000FAF3F0000AF09000010B20006B4 +:108A7000AF850070000038218D05001C01202021E9 +:108A80000A000BB32406000124AD000131A7000F3A +:108A9000AF8700780A000CF9000038213C06080076 +:108AA00024C65B680086902100003821ACA000003D +:108AB0000A000B8CAE4000003C0482013C036000C5 +:108AC00034820E02AC603D68AF80009803E000087D +:108AD000AC623D6C27BDFFE8AFB000103090FFFFE7 +:108AE000001018422C620041AFBF00141440000275 +:108AF00024040080240300403C010800AC300060E6 +:108B00003C010800AC2300640E000F7500602821B2 +:108B1000244802BF2409FF8001092824001039805D +:108B2000001030408FBF00148FB0001000A720212C +:108B300000861821AF8300803C010800AC25005856 +:108B40003C010800AC24005C03E0000827BD0018CD +:108B5000308300FF30C6FFFF30E400FF3C08800098 +:108B60008D0201B80440FFFE000354000144382583 +:108B70003C09600000E920253C031000AD050180A0 +:108B8000AD060184AD04018803E00008AD0301B81F +:108B90008F8500583C0A6012354800108CAC0004E8 +:108BA0003C0D600E35A60010318B00062D690001CA +:108BB000AD0900C48CA70004ACC731808CA20008AA +:108BC00094A40002ACC231848CA3001C0460000396 +:108BD000A784009003E00008000000008CAF00189C +:108BE000ACCF31D08CAE001C03E00008ACCE31D449 +:108BF0008F8500588F87FF288F86FF308CAE00044A +:108C00003C0F601235E80010ACEE00788CAD000827 +:108C1000ACED007C8CAC0010ACCC004C8CAB000CF0 +:108C2000ACCB004894CA00543C0208008C4200447B +:108C300025490001A4C9005494C400543083FFFFA7 +:108C400010620017000000003C0208008C42004047 +:108C5000A4C200528CA30018ACE300308CA2001414 +:108C6000ACE2002C8CB90018ACF900388CB80014B8 +:108C700024050001ACF800348D0600BC50C5001975 +:108C80008D0200B48D0200B8A4E2004894E40048CC +:108C9000A4E4004A94E800EA03E000083102FFFF80 +:108CA0003C0208008C420024A4C00054A4C200521C +:108CB0008CA30018ACE300308CA20014ACE2002CB2 +:108CC0008CB90018ACF900388CB8001424050001E8 +:108CD000ACF800348D0600BC54C5FFEB8D0200B823 +:108CE0008D0200B4A4E2004894E40048A4E4004AE1 +:108CF00094E800EA03E000083102FFFF8F86005885 +:108D00003C0480008CC900088CC80008000929C0F8 +:108D1000000839C0AC87002090C30007306200040F +:108D20001040003EAF85009490CB0007316A0008E8 +:108D30001140003D8F87FF2C8CCD000C8CCE001491 +:108D400001AE602B11800036000000008CC2000CC8 +:108D5000ACE200708CCB00188F85FF288F88FF3025 +:108D6000ACEB00748CCA00102402FFF8ACAA00D847 +:108D70008CC9000CAD0900608CC4001CACA400D0F0 +:108D800090E3007C0062C824A0F9007C90D8000722 +:108D9000330F000811E000040000000090ED007C9B +:108DA00035AC0001A0EC007C90CF000731EE000153 +:108DB00011C000060000000090E3007C241800347D +:108DC00034790002A0F9007CACB800DC90C2000746 +:108DD0003046000210C000040000000090E8007C53 +:108DE00035040004A0E4007C90ED007D3C0B600E97 +:108DF000356A001031AC003FA0EC007D8D4931D4C4 +:108E00003127000110E00002240E0001A0AE00098D +:108E100094AF00EA03E0000831E2FFFF8F87FF2CE8 +:108E20000A000DAF8CC200140A000DB0ACE0007057 +:108E30008F8C005827BDFFD8AFB3001CAFB200180D +:108E4000AFB00010AFBF0020AFB10014918F00157C +:108E50003C13600E3673001031EB000FA38B009CA7 +:108E60008D8F00048D8B0008959F0012959900103E +:108E70009584001A9598001E958E001C33EDFFFF17 +:108E8000332AFFFF3089FFFF3308FFFF31C7FFFFA1 +:108E90003C010800AC2D00243C010800AC29004432 +:108EA0003C010800AC2A0040AE683178AE67317CE6 +:108EB00091850015959100163C12601236520010F3 +:108EC00030A200FF3230FFFFAE623188AE5000B4F6 +:108ED00091830014959F0018240600010066C804C1 +:108EE00033F8FFFFAE5900B8AE5800BC918E0014A5 +:108EF000AF8F00843C08600631CD00FFAE4D00C04E +:108F0000918A00159584000E3C07600A314900FFE4 +:108F1000AF8B00883084FFFFAE4900C835110010C8 +:108F20000E000D1034F004103C0208008C4200606A +:108F30003C0308008C6300643C0608008CC60058A3 +:108F40003C0508008CA5005C8F8400808FBF00204A +:108F5000AE23004CAE65319CAE030054AE4500DC40 +:108F6000AE6231A0AE6331A4AE663198AE22004845 +:108F70008FB3001CAE0200508FB10014AE4200E06F +:108F8000AE4300E4AE4600D88FB000108FB2001898 +:108F90000A00057D27BD0028978500929783007CF5 +:108FA00027BDFFE8AFB0001000A3102BAFBF001427 +:108FB000240400058F900058104000552409000239 +:108FC0000E0006958F850080AF8200942404000374 +:108FD0001040004F240900023C0680000E00008172 +:108FE000ACC2002024070001240820001040004DDE +:108FF00024040005978E00928F8AFF2C24090050CC +:1090000025C50001A7850092A14900003C0D08007C +:109010008DAD0064240380008F84FF28000D66005E +:10902000AD4C0018A5400006954B000A8F85FF3017 +:109030002402FF8001633024A546000A915F000AE4 +:109040000000482103E2C825A159000AA0A0000899 +:10905000A140004CA08000D5961800029783009094 +:109060003C020004A49800EA960F00022418FFBFF7 +:1090700025EE2401A48E00BE8E0D0004ACAD00448C +:109080008E0C0008ACAC0040A4A00050A4A000547A +:109090008E0B000C240C0030AC8B00288E060010C8 +:1090A000AC860024A480003EA487004EA487005014 +:1090B000A483003CAD420074AC8800D8ACA800602A +:1090C000A08700FC909F00D433F9007FA09900D4C2 +:1090D000909000D402187824A08F00D4914E007C88 +:1090E00035CD0001A14D007C938B009CAD480070F4 +:1090F000AC8C00DCA08B00D68F8800888F87008422 +:10910000AC8800C4AC8700C8A5400078A540007AB0 +:109110008FBF00148FB000100120102103E0000861 +:1091200027BD00188F8500940E0007258F860080CC +:109130000A000E9F2409000227BDFFE0AFB0001017 +:109140008F900058AFB10014AFBF00188E09000413 +:109150000E00054A000921C08E0800048F84FF28F4 +:109160008F82FF30000839C03C068000ACC7002069 +:10917000948500EA904300131460001C30B1FFFF97 +:109180008F8CFF2C918B0008316A00401540000B3A +:10919000000000008E0D0004022030218FBF001857 +:1091A0008FB100148FB00010240400220000382179 +:1091B000000D29C00A000D2F27BD00200E000098C9 +:1091C000000000008E0D0004022030218FBF001827 +:1091D0008FB100148FB00010240400220000382149 +:1091E000000D29C00A000D2F27BD00200E000090A1 +:1091F000000000008E0D0004022030218FBF0018F7 +:109200008FB100148FB00010240400220000382118 +:10921000000D29C00A000D2F27BD002027BDFFE04B +:10922000AFB200183092FFFFAFB00010AFBF001C0C +:10923000AFB100141240001E000080218F8600583C +:109240008CC500002403000600053F02000514023F +:1092500030E4000714830016304500FF2CA80006F8 +:1092600011000040000558803C0C0800258C58BCBB +:10927000016C50218D490000012000080000000011 +:109280008F8E0098240D000111CD005024020002A1 +:10929000AF820098260900013130FFFF24C800206A +:1092A0000212202B010030211480FFE5AF88005806 +:1092B000020010218FBF001C8FB200188FB1001464 +:1092C0008FB0001003E0000827BD00209387007EC8 +:1092D00054E00034000030210E000DE700000000D3 +:1092E0008F8600580A000EFF240200018F87009825 +:1092F0002405000210E50031240400130000282199 +:1093000000003021240700010E000D2F0000000096 +:109310000A000F008F8600588F83009824020002F5 +:109320001462FFF6240400120E000D9A00000000E3 +:109330008F85009400403021240400120E000D2F70 +:10934000000038210A000F008F8600588F83009894 +:109350002411000310710029241F0002107FFFCE8A +:1093600026090001240400100000282100003021FB +:109370000A000F1D240700018F91009824060002A7 +:109380001626FFF9240400100E000E410000000014 +:10939000144000238F9800588F8600580A000EFF53 +:1093A00024020003240400140E000D2F00002821C5 +:1093B0008F8600580A000EFF240200020E000EA93C +:1093C000000000000A000F008F8600580E000D3FBD +:1093D00000000000241900022404001400002821C9 +:1093E0000000302100003821AF9900980E000D2FA9 +:1093F000000000000A000F008F8600580E000D5775 +:10940000000000008F8500942419000200403021E4 +:1094100024040010000038210A000F56AF9900986C +:109420000040382124040010970F0002000028217A +:109430000E000D2F31E6FFFF8F8600580A000F0047 +:10944000AF9100988F84FF2C3C077FFF34E6FFFF2D +:109450008C8500182402000100A61824AC83001893 +:1094600003E00008A08200053084FFFF30A5FFFF65 +:109470001080000700001821308200011040000217 +:1094800000042042006518211480FFFB00052840DD +:1094900003E000080060102110C000070000000079 +:1094A0008CA2000024C6FFFF24A50004AC820000AB +:1094B00014C0FFFB2484000403E000080000000047 +:1094C00010A0000824A3FFFFAC86000000000000ED +:1094D000000000002402FFFF2463FFFF1462FFFA74 +:1094E0002484000403E0000800000000000411C010 +:1094F00003E000082442024027BDFFE8AFB000109F +:1095000000808021AFBF00140E000F9600A0202124 +:1095100000504821240AFF808FBF00148FB0001034 +:10952000012A30243127007F3C08800A3C042100B6 +:1095300000E8102100C428253C03800027BD001846 +:10954000AC650024AF820038AC400000AC6500245C +:1095500003E00008AC4000403C0D08008DAD005811 +:1095600000056180240AFF8001A45821016C482174 +:10957000012A30243127007F3C08800C3C04210064 +:1095800000E8102100C428253C038000AC650028B9 +:10959000AF82003403E00008AC40002430A5FFFF98 +:1095A0003C0680008CC201B80440FFFE3C086015F8 +:1095B00000A838253C031000ACC40180ACC0018475 +:1095C000ACC7018803E00008ACC301B83C0D08003B +:1095D0008DAD005800056180240AFF8001A4582148 +:1095E000016C4021010A4824000931403107007F05 +:1095F00000C728253C04200000A418253C02800058 +:10960000AC43083003E00008AF80003427BDFFE81A +:10961000AFB0001000808021AFBF00140E000F9685 +:1096200000A0202100504821240BFF80012B502452 +:10963000000A39403128007F3C0620008FBF00140B +:109640008FB0001000E8282534C2000100A21825C0 +:109650003C04800027BD0018AC83083003E00008FC +:10966000AF8000383C0580088CA700603C0680086D +:109670000087102B144000112C8340008CA8006040 +:109680002D0340001060000F240340008CC90060CF +:109690000089282B14A00002008018218CC30060D0 +:1096A00000035A42000B30803C0A0800254A59202A +:1096B00000CA202103E000088C8200001460FFF340 +:1096C0002403400000035A42000B30803C0A08008B +:1096D000254A592000CA202103E000088C8200009E +:1096E0003C05800890A60008938400AB24C20001CA +:1096F000304200FF3043007F1064000C0002382726 +:10970000A0A200083C0480008C85017804A0FFFE24 +:109710008F8A00A0240900023C081000AC8A014096 +:10972000A089014403E00008AC8801780A00101BFE +:1097300030E2008027BDFFD8AFB200188F9200A49E +:10974000AFBF0020AFB3001CAFB00010AFB100142A +:109750008F9300348E5900283C1000803C0EFFEFA0 +:10976000AE7900008E580024A260000A35CDFFFFBC +:10977000AE7800049251002C3C0BFF9F356AFFFF2E +:10978000A271000C8E6F000C3C080040A271000B0F +:1097900001F06025018D4824012A382400E8302595 +:1097A000AE66000C8E450004AE6000183C0400FF5D +:1097B000AE6500148E43002C3482FFFFA6600008C3 +:1097C0000062F824AE7F00108E5900088F9000A030 +:1097D000964E0012AE7900208E51000C31D83FFF1A +:1097E00000187980AE7100248E4D001401F06021C4 +:1097F00031CB0001AE6D00288E4A0018000C41C22A +:10980000000B4B80AE6A002C8E46001C01093821EB +:10981000A667001CAE660030964500028E4400200C +:10982000A665001EAE64003492430033306200042B +:1098300054400006924700003C0280083443010077 +:109840008C7F00D0AE7F0030924700008F860038BA +:10985000A0C700309245003330A4000250800007BA +:10986000925100018F880038240BFF80910A00304C +:10987000014B4825A1090030925100018F9000381A +:10988000240CFFBF2404FFDFA21100318F8D0038AC +:109890003C1880083711008091AF003C31EE007F0A +:1098A000A1AE003C8F890038912B003C016C502404 +:1098B000A12A003C8F9F00388E68001493E6003C7C +:1098C0002D0700010007114000C4282400A218251C +:1098D000A3E3003C8F87003896590012A4F90032A8 +:1098E0008E450004922E007C30B0000300107823D7 +:1098F00031ED000300AD102131CC000215800002D3 +:1099000024460034244600303C0280083443008062 +:10991000907F007C00BFC824333800041700000289 +:1099200024C2000400C010218F98003824190002BE +:10993000ACE20034A3190000924F003F8F8E003834 +:109940003C0C8008358B0080A1CF00018F9100383E +:10995000924D003F8E440004A62D0002956A005CE3 +:109960000E000FF43150FFFF00024B800209382532 +:109970003C08420000E82825AE2500048E4400384B +:109980008F850038ACA400188E460034ACA6001CAD +:10999000ACA0000CACA00010A4A00014A4A0001661 +:1099A000A4A00020A4A00022ACA000248E62001479 +:1099B00050400001240200018FBF00208FB3001C23 +:1099C0008FB200188FB100148FB00010ACA2000845 +:1099D0000A00101327BD002827BDFFC83C058008DA +:1099E00034A40080AFBF0034AFBE0030AFB7002C4E +:1099F000AFB60028AFB50024AFB40020AFB3001C51 +:109A0000AFB20018AFB10014AFB00010948300786B +:109A10009482007A104300512405FFFF0080F0215A +:109A20000A0011230080B821108B004D8FBF003435 +:109A30008F8600A03C1808008F18005C2411FF805E +:109A40003C1680000306782101F18024AED0002C62 +:109A500096EE007A31EC007F3C0D800E31CB7FFF1B +:109A6000018D5021000B4840012AA82196A4000036 +:109A70003C0808008D0800582405FF8030953FFF02 +:109A800001061821001539800067C8210325F82434 +:109A90003C02010003E290253338007F3C11800C2A +:109AA000AED20028031190219250000D320F000415 +:109AB00011E0003702E0982196E3007A96E8007AF8 +:109AC00096E5007A2404800031077FFF24E300013B +:109AD00030627FFF00A4F82403E2C825A6F9007ACB +:109AE00096E6007A3C1408008E94006030D67FFF22 +:109AF00012D400C1000000008E5800188F8400A00E +:109B000002A028212713FFFF0E000FCEAE53002C1A +:109B100097D5007897D4007A12950010000028217C +:109B20003C098008352401003C0A8008914800085F +:109B3000908700D53114007F30E400FF0284302B81 +:109B400014C0FFB9268B0001938E00AB268C000158 +:109B5000008E682115ACFFB78F8600A08FBF003440 +:109B60008FBE00308FB7002C8FB600288FB5002431 +:109B70008FB400208FB3001C8FB200188FB1001477 +:109B80008FB0001000A0102103E0000827BD0038AE +:109B900000C020210E000F99028028218E4B00105A +:109BA0008E4C00308F84003824090002016C502351 +:109BB000AE4A0010A089000096E3005C8E4400309D +:109BC0008F9100380E000FF43070FFFF00024380C9 +:109BD000020838253C02420000E22825AE25000498 +:109BE0008E5F00048F8A00388E590000240B000815 +:109BF000AD5F001CAD590018AD40000CAD40001029 +:109C00009246000A240400052408C00030D000FF5A +:109C1000A550001496580008A55800169251000A45 +:109C20003C188008322F00FFA54F0020964E0008F8 +:109C300037110100A54E0022AD400024924D000BCB +:109C400031AC00FFA54C0002A14B00018E49003051 +:109C50008F830038240BFFBFAC690008A06400307C +:109C60008F9000382403FFDF9607003200E8282495 +:109C700000B51025A6020032921F003233F9003FD2 +:109C800037260040A20600328F8C0038AD800034A9 +:109C90008E2F00D0AD8F0038918E003C3C0F7FFF9F +:109CA00031CD007FA18D003C8F84003835EEFFFF61 +:109CB000908A003C014B4824A089003C8F850038E5 +:109CC00090A8003C01033824A0A7003C8E42003439 +:109CD0008F9100383C038008AE2200408E59002C42 +:109CE0008E5F0030033F3023AE26004492300048A0 +:109CF0003218007FA23800488F8800388E4D00301F +:109D00008D0C004801AE582401965024014B482583 +:109D1000AD0900489244000AA104004C964700088F +:109D20008F850038A4A7004E8E5000308E4400303E +:109D30000E0003818C65006092F9007C0002F940FE +:109D4000004028210002110003E2302133360002D6 +:109D500012C00003020680210005B0800216802197 +:109D6000926D007C31B30004126000020005708027 +:109D7000020E80218E4B00308F8800382405800031 +:109D8000316A0003000A4823312400030204182129 +:109D9000AD03003496E4007A96F0007A96F1007AEA +:109DA00032027FFF2447000130FF7FFF0225C824D5 +:109DB000033F3025A6E6007A96F8007A3C120800A8 +:109DC0008E520060330F7FFF11F200180000000078 +:109DD0008F8400A00E000FCE02A028218F8400A047 +:109DE0000E000FDE028028210E001013000000007C +:109DF0000A00111F0000000096F1007A022480245E +:109E0000A6F0007A92EF007A92EB007A31EE00FF32 +:109E1000000E69C2000D6027000C51C03169007F3F +:109E2000012A20250A001119A2E4007A96E6007A98 +:109E300000C5C024A6F8007A92EF007A92F3007A67 +:109E400031F200FF001271C2000E6827000DB1C090 +:109E5000326C007F01962825A2E5007A0A0011D015 +:109E60008F8400A03C0380003084FFFF30A5FFFFFB +:109E7000AC640018AC65001C03E000088C620014A0 +:109E800027BDFFA03C068008AFBF005CAFBE0058F6 +:109E9000AFB70054AFB60050AFB5004CAFB40048F8 +:109EA000AFB30044AFB20040AFB1003CAFB0003838 +:109EB00034C80100910500D590C700083084FFFF29 +:109EC00030A500FF30E2007F0045182AAFA4001043 +:109ED000A7A00018A7A0002610600055AFA000148E +:109EE00090CA00083149007F00A9302324D3FFFF26 +:109EF0000013802B8FB400100014902B02128824C2 +:109F0000522000888FB300143C03800894790052DB +:109F1000947E00508FB60010033EC0230018BC0092 +:109F2000001714030016FC0002C2A82A16A00002A3 +:109F3000001F2C030040282100133C0000072403CD +:109F400000A4102A5440000100A020212885000907 +:109F500014A000020080A021241400083C0C8008FA +:109F60008D860048001459808D88004C3C03800089 +:109F70003169FFFF3C0A0010012A202534710400DA +:109F8000AC660038AF9100A4AC68003CAC64003013 +:109F900000000000000000000000000000000000C1 +:109FA00000000000000000000000000000000000B1 +:109FB0008C6E000031CD002011A0FFFD0014782A26 +:109FC00001F01024104000390000A8213C16800840 +:109FD00092D700083C1280008E44010032F6007FC8 +:109FE0000E000F9902C028218E3900108E44010006 +:109FF0000000902133373FFF0E000FB102E028210F +:10A00000923800003302003F2C500008520000102C +:10A0100000008821000210803C030800246358E4FB +:10A020000043F8218FFE000003C00008000000007C +:10A0300090CF0008938C00AB31EE007F00AE682318 +:10A04000018D58210A0012172573FFFF0000882197 +:10A050003C1E80008FC401000E000FCE02E02821BC +:10A060008FC401000E000FDE02C028211220000F55 +:10A070000013802B8F8B00A426A400010004AC00E9 +:10A08000027298230015AC032578004002B4B02A70 +:10A090000013802B241700010300882102D0102414 +:10A0A000AF9800A41440FFC9AFB700143C07800864 +:10A0B00094E200508FAE00103C05800002A288217F +:10A0C0003C060020A4F10050ACA6003094F40050EF +:10A0D00094EF005201D51823306CFFFF11F4001EDD +:10A0E000AFAC00108CEF004C001561808CF500487F +:10A0F00001EC28210000202100AC582B02A4C02133 +:10A10000030BB021ACE5004CACF600488FB4001056 +:10A110000014902B021288241620FF7C3C03800838 +:10A120008FB300148FBF005C8FBE00583A620001ED +:10A130008FB700548FB600508FB5004C8FB40048D5 +:10A140008FB300448FB200408FB1003C8FB0003815 +:10A1500003E0000827BD006094FE00548CF2004428 +:10A1600033C9FFFE0009C8C00259F821ACBF003C4A +:10A170008CE800448CAD003C010D50231940003B9D +:10A18000000000008CF7004026E20001ACA200387D +:10A190003C05005034A700103C038000AC67003041 +:10A1A00000000000000000000000000000000000AF +:10A1B000000000000000000000000000000000009F +:10A1C0008C7800003316002012C0FFFD3C1180087F +:10A1D000962200543C1580003C068008304E000159 +:10A1E000000E18C0007578218DEC04003C070800B3 +:10A1F0008CE700443C040020ACCC00488DF40404FF +:10A20000240B0001ACD4004C10EB0260AEA4003073 +:10A21000963900523C0508008CA5004000B99021F9 +:10A22000A6320052963F005427ED0001A62D00549F +:10A230009626005430C4FFFF5487FF2F8FB40010C0 +:10A2400030A5FFFF0E0011F4A62000543C070800C3 +:10A250008CE70024963E00520047B82303D74823DA +:10A26000A62900520A0012198FB400108CE2004097 +:10A270000A0012BE00000000922400012407000121 +:10A280003085007F14A7001C97AD00268E2B00148C +:10A29000240CC000316A3FFF01AC48243C06080092 +:10A2A0008CC60060012A402531043FFF0086882BC0 +:10A2B00012200011A7A800263C0508008CA5005814 +:10A2C0008F9100A0000439802402FF8000B1182182 +:10A2D0000067F82103E2F02433F8007F3C1280008D +:10A2E0003C19800EAE5E002C0319702191D0000D38 +:10A2F000360F0004A1CF000D0E001028241200011B +:10A30000241100013C1E80008FC401000E000FCEFE +:10A3100002E028218FC401000E000FDE02C02821B8 +:10A320001620FF558F8B00A40A0012860013802B85 +:10A330008F8600A490C80001310400201080019194 +:10A34000241000013C048008348B0080916A007C5A +:10A350008F9E0034AFA0002C314900011120000F66 +:10A36000AFB000288CCD00148C8E006001AE602B45 +:10A370001580000201A038218C8700603C188008FD +:10A38000370300808C70007000F0782B15E000021D +:10A3900000E020218C640070AFA4002C3C028008F7 +:10A3A000344500808CD200148CBF0070025FC82B33 +:10A3B00017200002024020218CA400708FA7002CDF +:10A3C0000087182310600003AFA3003024050002AB +:10A3D000AFA500288FA400280264882B162000BA9D +:10A3E000000018218CD000388FCE000C3C0F00806C +:10A3F000AFD000008CCD00343C0CFF9F01CF58251E +:10A40000AFCD000490CA003F3586FFFF01662024CF +:10A410003C0900203C08FFEFA3CA000B0089382547 +:10A420003511FFFF00F118243C0500088F8700A4B8 +:10A430000065C825AFD9000C8CE20014AFC000182D +:10A440008FA60030AFC200148CF800188FB0002C1B +:10A450003C1FFFFBAFD8001C8CEF000837F2FFFF5A +:10A4600003326824AFCF00248CEC000C020670216C +:10A47000AFCD000CA7C00038A7C0003AAFCE002C6B +:10A48000AFCC0020AFC000288CEA00148FAB002CAA +:10A49000014B48230126402311000011AFC80010D2 +:10A4A00090EB003D8FC900048FC80000000B5100E5 +:10A4B000012A28210000102100AA882B010218215E +:10A4C0000071F821AFC50004AFDF000090F2003D3D +:10A4D000A3D2000A8F9900A497380006A7D80008D5 +:10A4E0008F910038240800023C038008A228000055 +:10A4F0003465008094BF005C8FA4002C33F0FFFF14 +:10A500000E000FF48F9200380002CB808F8500A4DC +:10A51000021978253C18420001F87025AE4E00045F +:10A520008F8400388CAD0038AC8D00188CAC0034B2 +:10A53000AC8C001CAC80000CAC800010A48000141B +:10A54000A4800016A4800020A4800022AC800024F7 +:10A5500090A6003F8FA7002CA486000250E0019235 +:10A56000240700018FA200305040000290A2003D5D +:10A5700090A2003E244A0001A08A00018F84003886 +:10A580008FA9002CAC8900083C128008364D008051 +:10A5900091AC007C3186000214C000022407003414 +:10A5A000240700308F8500A43C198008373F0080C5 +:10A5B00090B0000093F9007C240E0004A0900030BD +:10A5C0008F8F00A48FB8002C8F8D003891F200017E +:10A5D0003304000301C46023A1B200318F8E003820 +:10A5E0008F8600A42402C00095CA003294C90012CC +:10A5F0008FAB002C0142402431233FFF010388250B +:10A60000A5D1003291D000323185000300EBF82152 +:10A610003218003F370F0040A1CF00328FA4002C2A +:10A6200003E5382133280004108000028F850038AC +:10A6300000E838213C0A8008ACA700343549010005 +:10A640008D2800D08FA3002C2419FFBFACA80038A0 +:10A6500090B1003C2C640001240FFFDF3227007F03 +:10A66000A0A7003C8F98003800049140931F003C45 +:10A6700003F98024A310003C8F8C0038918E003C9D +:10A6800001CF682401B23025A186003C8F8900A447 +:10A690008F8800388D2B0020AD0B00408D220024C8 +:10A6A000AD0200448D2A0028AD0A00488D23002CFD +:10A6B0000E001013AD03004C8FB1002824070002D8 +:10A6C000122700118FA300280003282B00058023E8 +:10A6D0000270982400608021006090210A00126FAF +:10A6E0000010882B962900128F8400A00000902172 +:10A6F0003125FFFFA7A900180E000FC22411000189 +:10A700000A00131D3C1E80003C0B80003C12800898 +:10A710008D640100924900088F92FF340E000F995A +:10A720003125007F8F9900388FA700288FA4003033 +:10A73000A3270000965F005C33F0FFFF0E000FF4CC +:10A740008F91003800026B80020D80253C0842008A +:10A750008F8D00A402085025AE2A00048DA5003874 +:10A760008F8A003800007821000F1100AD450018D5 +:10A770008DB800343C047FFF3488FFFFAD58001CC7 +:10A7800091A6003E8D4C001C8D4900180006190052 +:10A79000000677020183C821004E58250323882B29 +:10A7A000012B382100F1F821AD59001CAD5F0018D4 +:10A7B000AD40000CAD40001091B0003E8FA40030C1 +:10A7C00024090005A550001495A500042419C00013 +:10A7D00000884024A545001691B8003EA5580020E9 +:10A7E00095AF0004A54F0022AD40002491AE003F7C +:10A7F000A54E000291A6003E91AC003D01861023BB +:10A80000244B0001A14B00018F9100388FA3003031 +:10A810003C028008344B0100AE230008A22900301E +:10A820008F8C00388F8700A4959F003294F000121F +:10A830002407FFBF033FC02432053FFF03057825EF +:10A84000A58F0032918E00322418FFDF31CD003FFA +:10A8500035A60040A18600328F910038240DFFFFFD +:10A86000240CFF80AE2000348D6A00D0AE2A003860 +:10A870009223003C3069007FA229003C8F90003871 +:10A880003C0380009219003C0327F824A21F003CDF +:10A890008F8E003891C5003C00B87824A1CF003CD1 +:10A8A0008F8A00383C0E8008AD4D00408FA6002CEA +:10A8B000AD46004491420048004C5825A14B004849 +:10A8C0008F9000388F9900A48E09004801238824B6 +:10A8D00002283825AE070048933F003EA21F004CD7 +:10A8E0008F9800A48F8F003897050004A5E5004ECF +:10A8F0000E0003818DC500609246007C8FAC003055 +:10A9000000026940000291000040282130CB000283 +:10A9100001B21021156000AA018230213C0E80088E +:10A9200035C20080904C007C31830004106000032D +:10A930008FB900300005788000CF3021241F00043B +:10A940008F910038332D000303ED8023320800037C +:10A9500000C85021AE2A00343C188000A7C500383A +:10A960003C0680088F04010090DE00080E000FDE18 +:10A9700033C5007F0E001013000000000A00140D04 +:10A980008FA300288F9800348CC90038241F00033F +:10A99000A7000008AF0900008CC50034A300000A1E +:10A9A0008F9900A4AF0500043C080080932D003F60 +:10A9B000A31F000C8F0A000C3C02FF9FA30D000B8D +:10A9C0000148F0253451FFFF3C12FFEF8F9900A49E +:10A9D00003D170243646FFFF01C61824AF03000CD4 +:10A9E0008F2C0014972900128F8400A0AF0C001048 +:10A9F0008F2F0014AF000018AF000020AF0F00141D +:10AA0000AF0000248F270018312F3FFF000F59801F +:10AA1000AF0700288F2500080164F821312D0001BF +:10AA2000AF0500308F31000C8F920038001F51C2EB +:10AA3000000D438001481021241E00023C068008BE +:10AA4000A702001CA7000034AF11002CA25E00007A +:10AA500034D20080964E005C8F9900383C0342004F +:10AA600031CCFFFF01833825AF2700048F8B00A472 +:10AA7000240500012402C0008D640038240700343E +:10AA8000AF2400188D690034AF29001CAF20000CE2 +:10AA9000AF200010A7200014A7200016A720002038 +:10AAA000A7200022AF200024A7300002A325000128 +:10AAB0008F8800388F9F00A4AD10000893ED000030 +:10AAC000A10D00308F8A00A48F98003891510001A9 +:10AAD000A31100318F8B0038957E003203C27024A1 +:10AAE00001CF6025A56C0032916300323064003FD5 +:10AAF000A16400329249007C3125000214A00002BA +:10AB00008F840038240700303C198008AC8700345B +:10AB1000373201008E5F00D0240AFFBF020090216F +:10AB2000AC9F0038908D003C31A8007FA088003C8D +:10AB30008F9E003893C2003C004A8824A3D1003C79 +:10AB40008F8300380010882B9066003C34CE0020A4 +:10AB5000A06E003C8F8400A48F9800388C8C00205D +:10AB6000AF0C00408C8F0024AF0F00448C8700286E +:10AB7000AF0700488C8B002CAF0B004C0E0010135D +:10AB80003C1E80000A0012700000000094C80052B1 +:10AB90003C0A08008D4A002401488821A4D10052B3 +:10ABA0000A0012198FB40010A08700018F840038AA +:10ABB000240B0001AC8B00080A0013BE3C12800875 +:10ABC000000520800A0014A200C4302127BDFFE048 +:10ABD0003C0D8008AFB20018AFB00010AFBF001C32 +:10ABE000AFB1001435B200808E4C001835A80100BA +:10ABF000964B000695A70050910900FC000C5602E8 +:10AC0000016728233143007F312600FF240200031F +:10AC1000AF8300A8AF8400A010C2001B30B0FFFFBC +:10AC2000910600FC2412000530C200FF10520033D0 +:10AC300000000000160000098FBF001C8FB2001832 +:10AC40008FB100148FB00010240D0C003C0C80005C +:10AC500027BD002003E00008AD8D00240E0011FB8D +:10AC6000020020218FBF001C8FB200188FB100148A +:10AC70008FB00010240D0C003C0C800027BD00207C +:10AC800003E00008AD8D0024965800789651007AB4 +:10AC9000924E007D0238782631E8FFFF31C400C0B3 +:10ACA000148000092D11000116000037000000007B +:10ACB0005620FFE28FBF001C0E0010D100000000E4 +:10ACC0000A00156A8FBF001C1620FFDA0000000082 +:10ACD0000E0010D1000000001440FFD88FBF001CF0 +:10ACE0001600002200000000925F007D33E2003F6A +:10ACF000A242007D0A00156A8FBF001C950900EA78 +:10AD00008F86008000802821240400050E0007257E +:10AD10003130FFFF978300923C0480002465FFFFE1 +:10AD2000A78500928C8A01B80540FFFE0000000054 +:10AD3000AC8001808FBF001CAC9001848FB20018E2 +:10AD40008FB100148FB000103C0760133C0B100053 +:10AD5000240D0C003C0C800027BD0020AC8701882E +:10AD6000AC8B01B803E00008AD8D00240E0011FB90 +:10AD7000020020215040FFB18FBF001C925F007D78 +:10AD80000A00159733E2003F0E0011FB020020215C +:10AD90001440FFAA8FBF001C122000070000000013 +:10ADA0009259007D3330003F36020040A242007DC0 +:10ADB0000A00156A8FBF001C0E0010D100000000B1 +:10ADC0005040FF9E8FBF001C9259007D3330003FE2 +:10ADD0000A0015C636020040000000000000001BFB +:10ADE0000000000F0000000A00000008000000063C +:10ADF0000000000500000005000000040000000441 +:10AE00000000000300000003000000030000000336 +:10AE10000000000300000002000000020000000229 +:10AE2000000000020000000200000002000000021A +:10AE3000000000020000000200000002000000020A +:10AE400000000002000000020000000200000002FA +:10AE50000000000100000001000000018008010066 +:10AE6000800800808008000000000C000000308096 +:10AE7000080011D00800127C08001294080012A8E3 +:10AE8000080012BC080011D0080011D0080012F010 +:10AE90000800132C080013400800138808001A8CBF +:10AEA00008001A8C08001AC408001AC408001AD82E +:10AEB00008001AA808001D0008001CCC08001D5836 +:10AEC00008001D5808001DE008001D108008024001 +:10AED000080027340800256C0800275C080027F4C8 +:10AEE0000800293C0800298808002AAC080029B479 +:10AEF00008002A38080025DC08002EDC08002EA4F3 +:10AF000008002588080025880800258808002B20CF +:10AF100008002B20080025880800258808002DD06F +:10AF2000080025880800258808002588080025884D +:10AF300008002E0C080025880800258808002588B0 +:10AF4000080025880800258808002588080025882D +:10AF5000080025880800258808002588080025881D +:10AF6000080025880800258808002588080029A8E9 +:10AF7000080025880800258808002E680800258814 +:10AF800008002588080025880800258808002588ED +:10AF900008002588080025880800258808002588DD +:10AFA00008002588080025880800258808002588CD +:10AFB00008002588080025880800258808002588BD +:10AFC00008002CF4080025880800258808002C6853 +:10AFD00008002BC408003CE408003CB808003C848E +:10AFE00008003C5808003C3808003BEC8008010091 +:10AFF00080080080800800008008008008004C6401 +:10B0000008004C9C08004BE408004C6408004C64A9 +:10B01000080049B808004C64080050500A000C842D +:10B0200000000000000000000000000D7278703683 +:10B030002E322E31620000000602010300000000E3 +:10B0400000000001000000000000000000000000FF +:10B0500000000000000000000000000000000000F0 +:10B0600000000000000000000000000000000000E0 +:10B0700000000000000000000000000000000000D0 +:10B0800000000000000000000000000000000000C0 +:10B0900000000000000000000000000000000000B0 +:10B0A00000000000000000000000000000000000A0 +:10B0B0000000000000000000000000000000000090 +:10B0C0000000000000000000000000000000000080 +:10B0D0000000000000000000000000000000000070 +:10B0E0000000000000000000000000000000000060 +:10B0F0000000000000000000000000000000000050 +:10B10000000000000000000000000000000000003F +:10B11000000000000000000000000000000000002F +:10B12000000000000000000000000000000000001F +:10B13000000000000000000000000000000000000F +:10B1400000000000000000000000000000000000FF +:10B1500000000000000000000000000000000000EF +:10B1600000000000000000000000000000000000DF +:10B1700000000000000000000000000000000000CF +:10B1800000000000000000000000000000000000BF +:10B1900000000000000000000000000000000000AF +:10B1A000000000000000000000000000000000009F +:10B1B000000000000000000000000000000000008F +:10B1C000000000000000000000000000000000007F +:10B1D000000000000000000000000000000000006F +:10B1E000000000000000000000000000000000005F +:10B1F000000000000000000000000000000000004F +:10B20000000000000000000000000000000000003E +:10B21000000000000000000000000000000000002E +:10B22000000000000000000000000000000000001E +:10B23000000000000000000000000000000000000E +:10B2400000000000000000000000000000000000FE +:10B2500000000000000000000000000000000000EE +:10B2600000000000000000000000000000000000DE +:10B2700000000000000000000000000000000000CE +:10B2800000000000000000000000000000000000BE +:10B2900000000000000000000000000000000000AE +:10B2A000000000000000000000000000000000009E +:10B2B000000000000000000000000000000000008E +:10B2C000000000000000000000000000000000007E +:10B2D000000000000000000000000000000000006E +:10B2E000000000000000000000000000000000005E +:10B2F000000000000000000000000000000000004E +:10B30000000000000000000000000000000000003D +:10B31000000000000000000000000000000000002D +:10B32000000000000000000000000000000000001D +:10B33000000000000000000000000000000000000D +:10B3400000000000000000000000000000000000FD +:10B3500000000000000000000000000000000000ED +:10B3600000000000000000000000000000000000DD +:10B3700000000000000000000000000000000000CD +:10B3800000000000000000000000000000000000BD +:10B3900000000000000000000000000000000000AD +:10B3A000000000000000000000000000000000009D +:10B3B000000000000000000000000000000000008D +:10B3C000000000000000000000000000000000007D +:10B3D000000000000000000000000000000000006D +:10B3E000000000000000000000000000000000005D +:10B3F000000000000000000000000000000000004D +:10B40000000000000000000000000000000000003C +:10B41000000000000000000000000000000000002C +:10B42000000000000000000000000000000000001C +:10B43000000000000000000000000000000000000C +:10B4400000000000000000000000000000000000FC +:10B4500000000000000000000000000000000000EC +:10B4600000000000000000000000000000000000DC +:10B4700000000000000000000000000000000000CC +:10B4800000000000000000000000000000000000BC +:10B4900000000000000000000000000000000000AC +:10B4A000000000000000000000000000000000009C +:10B4B000000000000000000000000000000000008C +:10B4C000000000000000000000000000000000007C +:10B4D000000000000000000000000000000000006C +:10B4E000000000000000000000000000000000005C +:10B4F000000000000000000000000000000000004C +:10B50000000000000000000000000000000000003B +:10B51000000000000000000000000000000000002B +:10B52000000000000000000000000000000000001B +:10B53000000000000000000000000000000000000B +:10B5400000000000000000000000000000000000FB +:10B5500000000000000000000000000000000000EB +:10B5600000000000000000000000000000000000DB +:10B5700000000000000000000000000000000000CB +:10B5800000000000000000000000000000000000BB +:10B5900000000000000000000000000000000000AB +:10B5A000000000000000000000000000000000009B +:10B5B000000000000000000000000000000000008B +:10B5C000000000000000000000000000000000007B +:10B5D000000000000000000000000000000000006B +:10B5E000000000000000000000000000000000005B +:10B5F000000000000000000000000000000000004B +:10B60000000000000000000000000000000000003A +:10B61000000000000000000000000000000000002A +:10B62000000000000000000000000000000000001A +:10B63000000000000000000000000000000000000A +:10B6400000000000000000000000000000000000FA +:10B6500000000000000000000000000000000000EA +:10B6600000000000000000000000000000000000DA +:10B6700000000000000000000000000000000000CA +:10B6800000000000000000000000000000000000BA +:10B6900000000000000000000000000000000000AA +:10B6A000000000000000000000000000000000009A +:10B6B000000000000000000000000000000000008A +:10B6C000000000000000000000000000000000007A +:10B6D000000000000000000000000000000000006A +:10B6E000000000000000000000000000000000005A +:10B6F000000000000000000000000000000000004A +:10B700000000000000000000000000000000000039 +:10B710000000000000000000000000000000000029 +:10B720000000000000000000000000000000000019 +:10B730000000000000000000000000000000000009 +:10B7400000000000000000000000000000000000F9 +:10B7500000000000000000000000000000000000E9 +:10B7600000000000000000000000000000000000D9 +:10B7700000000000000000000000000000000000C9 +:10B7800000000000000000000000000000000000B9 +:10B7900000000000000000000000000000000000A9 +:10B7A0000000000000000000000000000000000099 +:10B7B0000000000000000000000000000000000089 +:10B7C0000000000000000000000000000000000079 +:10B7D0000000000000000000000000000000000069 +:10B7E0000000000000000000000000000000000059 +:10B7F0000000000000000000000000000000000049 +:10B800000000000000000000000000000000000038 +:10B810000000000000000000000000000000000028 +:10B820000000000000000000000000000000000018 +:10B830000000000000000000000000000000000008 +:10B8400000000000000000000000000000000000F8 +:10B8500000000000000000000000000000000000E8 +:10B8600000000000000000000000000000000000D8 +:10B8700000000000000000000000000000000000C8 +:10B8800000000000000000000000000000000000B8 +:10B8900000000000000000000000000000000000A8 +:10B8A0000000000000000000000000000000000098 +:10B8B0000000000000000000000000000000000088 +:10B8C0000000000000000000000000000000000078 +:10B8D0000000000000000000000000000000000068 +:10B8E0000000000000000000000000000000000058 +:10B8F0000000000000000000000000000000000048 +:10B900000000000000000000000000000000000037 +:10B910000000000000000000000000000000000027 +:10B920000000000000000000000000000000000017 +:10B930000000000000000000000000000000000007 +:10B9400000000000000000000000000000000000F7 +:10B9500000000000000000000000000000000000E7 +:10B9600000000000000000000000000000000000D7 +:10B9700000000000000000000000000000000000C7 +:10B9800000000000000000000000000000000000B7 +:10B9900000000000000000000000000000000000A7 +:10B9A0000000000000000000000000000000000097 +:10B9B0000000000000000000000000000000000087 +:10B9C0000000000000000000000000000000000077 +:10B9D0000000000000000000000000000000000067 +:10B9E0000000000000000000000000000000000057 +:10B9F0000000000000000000000000000000000047 +:10BA00000000000000000000000000000000000036 +:10BA10000000000000000000000000000000000026 +:10BA20000000000000000000000000000000000016 +:10BA30000000000000000000000000000000000006 +:10BA400000000000000000000000000000000000F6 +:10BA500000000000000000000000000000000000E6 +:10BA600000000000000000000000000000000000D6 +:10BA700000000000000000000000000000000000C6 +:10BA800000000000000000000000000000000000B6 +:10BA900000000000000000000000000000000000A6 +:10BAA0000000000000000000000000000000000096 +:10BAB0000000000000000000000000000000000086 +:10BAC0000000000000000000000000000000000076 +:10BAD0000000000000000000000000000000000066 +:10BAE0000000000000000000000000000000000056 +:10BAF0000000000000000000000000000000000046 +:10BB00000000000000000000000000000000000035 +:10BB10000000000000000000000000000000000025 +:10BB20000000000000000000000000000000000015 +:10BB30000000000000000000000000000000000005 +:10BB400000000000000000000000000000000000F5 +:10BB500000000000000000000000000000000000E5 +:10BB600000000000000000000000000000000000D5 +:10BB700000000000000000000000000000000000C5 +:10BB800000000000000000000000000000000000B5 +:10BB900000000000000000000000000000000000A5 +:10BBA0000000000000000000000000000000000095 +:10BBB0000000000000000000000000000000000085 +:10BBC0000000000000000000000000000000000075 +:10BBD0000000000000000000000000000000000065 +:10BBE0000000000000000000000000000000000055 +:10BBF0000000000000000000000000000000000045 +:10BC00000000000000000000000000000000000034 +:10BC10000000000000000000000000000000000024 +:10BC20000000000000000000000000000000000014 +:10BC30000000000000000000000000000000000004 +:10BC400000000000000000000000000000000000F4 +:10BC500000000000000000000000000000000000E4 +:10BC600000000000000000000000000000000000D4 +:10BC700000000000000000000000000000000000C4 +:10BC800000000000000000000000000000000000B4 +:10BC900000000000000000000000000000000000A4 +:10BCA0000000000000000000000000000000000094 +:10BCB0000000000000000000000000000000000084 +:10BCC0000000000000000000000000000000000074 +:10BCD0000000000000000000000000000000000064 +:10BCE0000000000000000000000000000000000054 +:10BCF0000000000000000000000000000000000044 +:10BD00000000000000000000000000000000000033 +:10BD10000000000000000000000000000000000023 +:10BD20000000000000000000000000000000000013 +:10BD30000000000000000000000000000000000003 +:10BD400000000000000000000000000000000000F3 +:10BD500000000000000000000000000000000000E3 +:10BD600000000000000000000000000000000000D3 +:10BD700000000000000000000000000000000000C3 +:10BD800000000000000000000000000000000000B3 +:10BD900000000000000000000000000000000000A3 +:10BDA0000000000000000000000000000000000093 +:10BDB0000000000000000000000000000000000083 +:10BDC0000000000000000000000000000000000073 +:10BDD0000000000000000000000000000000000063 +:10BDE0000000000000000000000000000000000053 +:10BDF0000000000000000000000000000000000043 +:10BE00000000000000000000000000000000000032 +:10BE10000000000000000000000000000000000022 +:10BE20000000000000000000000000000000000012 +:10BE30000000000000000000000000000000000002 +:10BE400000000000000000000000000000000000F2 +:10BE500000000000000000000000000000000000E2 +:10BE600000000000000000000000000000000000D2 +:10BE700000000000000000000000000000000000C2 +:10BE800000000000000000000000000000000000B2 +:10BE900000000000000000000000000000000000A2 +:10BEA0000000000000000000000000000000000092 +:10BEB0000000000000000000000000000000000082 +:10BEC0000000000000000000000000000000000072 +:10BED0000000000000000000000000000000000062 +:10BEE0000000000000000000000000000000000052 +:10BEF0000000000000000000000000000000000042 +:10BF00000000000000000000000000000000000031 +:10BF10000000000000000000000000000000000021 +:10BF20000000000000000000000000000000000011 +:10BF30000000000000000000000000000000000001 +:10BF400000000000000000000000000000000000F1 +:10BF500000000000000000000000000000000000E1 +:10BF600000000000000000000000000000000000D1 +:10BF700000000000000000000000000000000000C1 +:10BF800000000000000000000000000000000000B1 +:10BF900000000000000000000000000000000000A1 +:10BFA0000000000000000000000000000000000091 +:10BFB0000000000000000000000000000000000081 +:10BFC0000000000000000000000000000000000071 +:10BFD0000000000000000000000000000000000061 +:10BFE0000000000000000000000000000000000051 +:10BFF0000000000000000000000000000000000041 +:10C000000000000000000000000000000000000030 +:10C010000000000000000000000000000000000020 +:10C020000000000000000000000000000000000010 +:10C030000000000000000000000000000000000000 +:10C0400000000000000000000000000000000000F0 +:10C0500000000000000000000000000000000000E0 +:10C0600000000000000000000000000000000000D0 +:10C0700000000000000000000000000000000000C0 +:10C0800000000000000000000000000000000000B0 +:10C0900000000000000000000000000000000000A0 +:10C0A0000000000000000000000000000000000090 +:10C0B0000000000000000000000000000000000080 +:10C0C0000000000000000000000000000000000070 +:10C0D0000000000000000000000000000000000060 +:10C0E0000000000000000000000000000000000050 +:10C0F0000000000000000000000000000000000040 +:10C10000000000000000000000000000000000002F +:10C11000000000000000000000000000000000001F +:10C12000000000000000000000000000000000000F +:10C1300000000000000000000000000000000000FF +:10C1400000000000000000000000000000000000EF +:10C1500000000000000000000000000000000000DF +:10C1600000000000000000000000000000000000CF +:10C1700000000000000000000000000000000000BF +:10C1800000000000000000000000000000000000AF +:10C19000000000000000000000000000000000009F +:10C1A000000000000000000000000000000000008F +:10C1B000000000000000000000000000000000007F +:10C1C000000000000000000000000000000000006F +:10C1D000000000000000000000000000000000005F +:10C1E000000000000000000000000000000000004F +:10C1F000000000000000000000000000000000003F +:10C20000000000000000000000000000000000002E +:10C21000000000000000000000000000000000001E +:10C22000000000000000000000000000000000000E +:10C2300000000000000000000000000000000000FE +:10C2400000000000000000000000000000000000EE +:10C2500000000000000000000000000000000000DE +:10C2600000000000000000000000000000000000CE +:10C2700000000000000000000000000000000000BE +:10C2800000000000000000000000000000000000AE +:10C29000000000000000000000000000000000009E +:10C2A000000000000000000000000000000000008E +:10C2B000000000000000000000000000000000007E +:10C2C000000000000000000000000000000000006E +:10C2D000000000000000000000000000000000005E +:10C2E000000000000000000000000000000000004E +:10C2F000000000000000000000000000000000003E +:10C30000000000000000000000000000000000002D +:10C31000000000000000000000000000000000001D +:10C32000000000000000000000000000000000000D +:10C3300000000000000000000000000000000000FD +:10C3400000000000000000000000000000000000ED +:10C3500000000000000000000000000000000000DD +:10C3600000000000000000000000000000000000CD +:10C3700000000000000000000000000000000000BD +:10C3800000000000000000000000000000000000AD +:10C39000000000000000000000000000000000009D +:10C3A000000000000000000000000000000000008D +:10C3B000000000000000000000000000000000007D +:10C3C000000000000000000000000000000000006D +:10C3D000000000000000000000000000000000005D +:10C3E000000000000000000000000000000000004D +:10C3F000000000000000000000000000000000003D +:10C40000000000000000000000000000000000002C +:10C41000000000000000000000000000000000001C +:10C42000000000000000000000000000000000000C +:10C4300000000000000000000000000000000000FC +:10C4400000000000000000000000000000000000EC +:10C4500000000000000000000000000000000000DC +:10C4600000000000000000000000000000000000CC +:10C4700000000000000000000000000000000000BC +:10C4800000000000000000000000000000000000AC +:10C49000000000000000000000000000000000009C +:10C4A000000000000000000000000000000000008C +:10C4B000000000000000000000000000000000007C +:10C4C000000000000000000000000000000000006C +:10C4D000000000000000000000000000000000005C +:10C4E000000000000000000000000000000000004C +:10C4F000000000000000000000000000000000003C +:10C50000000000000000000000000000000000002B +:10C51000000000000000000000000000000000001B +:10C52000000000000000000000000000000000000B +:10C5300000000000000000000000000000000000FB +:10C5400000000000000000000000000000000000EB +:10C5500000000000000000000000000000000000DB +:10C5600000000000000000000000000000000000CB +:10C5700000000000000000000000000000000000BB +:10C5800000000000000000000000000000000000AB +:10C59000000000000000000000000000000000009B +:10C5A000000000000000000000000000000000008B +:10C5B000000000000000000000000000000000007B +:10C5C000000000000000000000000000000000006B +:10C5D000000000000000000000000000000000005B +:10C5E000000000000000000000000000000000004B +:10C5F000000000000000000000000000000000003B +:10C60000000000000000000000000000000000002A +:10C61000000000000000000000000000000000001A +:10C62000000000000000000000000000000000000A +:10C6300000000000000000000000000000000000FA +:10C6400000000000000000000000000000000000EA +:10C6500000000000000000000000000000000000DA +:10C6600000000000000000000000000000000000CA +:10C6700000000000000000000000000000000000BA +:10C6800000000000000000000000000000000000AA +:10C69000000000000000000000000000000000009A +:10C6A000000000000000000000000000000000008A +:10C6B000000000000000000000000000000000007A +:10C6C000000000000000000000000000000000006A +:10C6D000000000000000000000000000000000005A +:10C6E000000000000000000000000000000000004A +:10C6F000000000000000000000000000000000003A +:10C700000000000000000000000000000000000029 +:10C710000000000000000000000000000000000019 +:10C720000000000000000000000000000000000009 +:10C7300000000000000000000000000000000000F9 +:10C7400000000000000000000000000000000000E9 +:10C7500000000000000000000000000000000000D9 +:10C7600000000000000000000000000000000000C9 +:10C7700000000000000000000000000000000000B9 +:10C7800000000000000000000000000000000000A9 +:10C790000000000000000000000000000000000099 +:10C7A0000000000000000000000000000000000089 +:10C7B0000000000000000000000000000000000079 +:10C7C0000000000000000000000000000000000069 +:10C7D0000000000000000000000000000000000059 +:10C7E0000000000000000000000000000000000049 +:10C7F0000000000000000000000000000000000039 +:10C800000000000000000000000000000000000028 +:10C810000000000000000000000000000000000018 +:10C820000000000000000000000000000000000008 +:10C8300000000000000000000000000000000000F8 +:10C8400000000000000000000000000000000000E8 +:10C8500000000000000000000000000000000000D8 +:10C8600000000000000000000000000000000000C8 +:10C8700000000000000000000000000000000000B8 +:10C8800000000000000000000000000000000000A8 +:10C890000000000000000000000000000000000098 +:10C8A0000000000000000000000000000000000088 +:10C8B0000000000000000000000000000000000078 +:10C8C0000000000000000000000000000000000068 +:10C8D0000000000000000000000000000000000058 +:10C8E0000000000000000000000000000000000048 +:10C8F0000000000000000000000000000000000038 +:10C900000000000000000000000000000000000027 +:10C910000000000000000000000000000000000017 +:10C920000000000000000000000000000000000007 +:10C9300000000000000000000000000000000000F7 +:10C9400000000000000000000000000000000000E7 +:10C9500000000000000000000000000000000000D7 +:10C9600000000000000000000000000000000000C7 +:10C9700000000000000000000000000000000000B7 +:10C9800000000000000000000000000000000000A7 +:10C990000000000000000000000000000000000097 +:10C9A0000000000000000000000000000000000087 +:10C9B0000000000000000000000000000000000077 +:10C9C0000000000000000000000000000000000067 +:10C9D0000000000000000000000000000000000057 +:10C9E0000000000000000000000000000000000047 +:10C9F0000000000000000000000000000000000037 +:10CA00000000000000000000000000000000000026 +:10CA10000000000000000000000000000000000016 +:10CA20000000000000000000000000000000000006 +:10CA300000000000000000000000000000000000F6 +:10CA400000000000000000000000000000000000E6 +:10CA500000000000000000000000000000000000D6 +:10CA600000000000000000000000000000000000C6 +:10CA700000000000000000000000000000000000B6 +:10CA800000000000000000000000000000000000A6 +:10CA90000000000000000000000000000000000096 +:10CAA0000000000000000000000000000000000086 +:10CAB0000000000000000000000000000000000076 +:10CAC0000000000000000000000000000000000066 +:10CAD0000000000000000000000000000000000056 +:10CAE0000000000000000000000000000000000046 +:10CAF0000000000000000000000000000000000036 +:10CB00000000000000000000000000000000000025 +:10CB10000000000000000000000000000000000015 +:10CB20000000000000000000000000000000000005 +:10CB300000000000000000000000000000000000F5 +:10CB400000000000000000000000000000000000E5 +:10CB500000000000000000000000000000000000D5 +:10CB600000000000000000000000000000000000C5 +:10CB700000000000000000000000000000000000B5 +:10CB800000000000000000000000000000000000A5 +:10CB90000000000000000000000000000000000095 +:10CBA0000000000000000000000000000000000085 +:10CBB0000000000000000000000000000000000075 +:10CBC0000000000000000000000000000000000065 +:10CBD0000000000000000000000000000000000055 +:10CBE0000000000000000000000000000000000045 +:10CBF0000000000000000000000000000000000035 +:10CC00000000000000000000000000000000000024 +:10CC10000000000000000000000000000000000014 +:10CC20000000000000000000000000000000000004 +:10CC300000000000000000000000000000000000F4 +:10CC400000000000000000000000000000000000E4 +:10CC500000000000000000000000000000000000D4 +:10CC600000000000000000000000000000000000C4 +:10CC700000000000000000000000000000000000B4 +:10CC800000000000000000000000000000000000A4 +:10CC90000000000000000000000000000000000094 +:10CCA0000000000000000000000000000000000084 +:10CCB0000000000000000000000000000000000074 +:10CCC0000000000000000000000000000000000064 +:10CCD0000000000000000000000000000000000054 +:10CCE0000000000000000000000000000000000044 +:10CCF0000000000000000000000000000000000034 +:10CD00000000000000000000000000000000000023 +:10CD10000000000000000000000000000000000013 +:10CD20000000000000000000000000000000000003 +:10CD300000000000000000000000000000000000F3 +:10CD400000000000000000000000000000000000E3 +:10CD500000000000000000000000000000000000D3 +:10CD600000000000000000000000000000000000C3 +:10CD700000000000000000000000000000000000B3 +:10CD800000000000000000000000000000000000A3 +:10CD90000000000000000000000000000000000093 +:10CDA0000000000000000000000000000000000083 +:10CDB0000000000000000000000000000000000073 +:10CDC0000000000000000000000000000000000063 +:10CDD0000000000000000000000000000000000053 +:10CDE0000000000000000000000000000000000043 +:10CDF0000000000000000000000000000000000033 +:10CE00000000000000000000000000000000000022 +:10CE10000000000000000000000000000000000012 +:10CE20000000000000000000000000000000000002 +:10CE300000000000000000000000000000000000F2 +:10CE400000000000000000000000000000000000E2 +:10CE500000000000000000000000000000000000D2 +:10CE600000000000000000000000000000000000C2 +:10CE700000000000000000000000000000000000B2 +:10CE800000000000000000000000000000000000A2 +:10CE90000000000000000000000000000000000092 +:10CEA0000000000000000000000000000000000082 +:10CEB0000000000000000000000000000000000072 +:10CEC0000000000000000000000000000000000062 +:10CED0000000000000000000000000000000000052 +:10CEE0000000000000000000000000000000000042 +:10CEF0000000000000000000000000000000000032 +:10CF00000000000000000000000000000000000021 +:10CF10000000000000000000000000000000000011 +:10CF20000000000000000000000000000000000001 +:10CF300000000000000000000000000000000000F1 +:10CF400000000000000000000000000000000000E1 +:10CF500000000000000000000000000000000000D1 +:10CF600000000000000000000000000000000000C1 +:10CF700000000000000000000000000000000000B1 +:10CF800000000000000000000000000000000000A1 +:10CF90000000000000000000000000000000000091 +:10CFA0000000000000000000000000000000000081 +:10CFB0000000000000000000000000000000000071 +:10CFC0000000000000000000000000000000000061 +:10CFD0000000000000000000000000000000000051 +:10CFE0000000000000000000000000000000000041 +:10CFF0000000000000000000000000000000000031 +:10D000000000000000000000000000000000000020 +:10D010000000000000000000000000000000000010 +:10D020000000000000000000000000000000000000 +:10D0300000000000000000000000000000000000F0 +:10D0400000000000000000000000000000000000E0 +:10D0500000000000000000000000000000000000D0 +:10D0600000000000000000000000000000000000C0 +:10D0700000000000000000000000000000000000B0 +:10D0800000000000000000000000000000000000A0 +:10D090000000000000000000000000000000000090 +:10D0A0000000000000000000000000000000000080 +:10D0B0000000000000000000000000000000000070 +:10D0C0000000000000000000000000000000000060 +:10D0D0000000000000000000000000000000000050 +:10D0E0000000000000000000000000000000000040 +:10D0F0000000000000000000000000000000000030 +:10D10000000000000000000000000000000000001F +:10D11000000000000000000000000000000000000F +:10D1200000000000000000000000000000000000FF +:10D1300000000000000000000000000000000000EF +:10D1400000000000000000000000000000000000DF +:10D1500000000000000000000000000000000000CF +:10D1600000000000000000000000000000000000BF +:10D1700000000000000000000000000000000000AF +:10D18000000000000000000000000000000000009F +:10D19000000000000000000000000000000000008F +:10D1A000000000000000000000000000000000007F +:10D1B000000000000000000000000000000000006F +:10D1C000000000000000000000000000000000005F +:10D1D000000000000000000000000000000000004F +:10D1E000000000000000000000000000000000003F +:10D1F000000000000000000000000000000000002F +:10D20000000000000000000000000000000000001E +:10D21000000000000000000000000000000000000E +:10D2200000000000000000000000000000000000FE +:10D2300000000000000000000000000000000000EE +:10D2400000000000000000000000000000000000DE +:10D2500000000000000000000000000000000000CE +:10D2600000000000000000000000000000000000BE +:10D2700000000000000000000000000000000000AE +:10D28000000000000000000000000000000000009E +:10D29000000000000000000000000000000000008E +:10D2A000000000000000000000000000000000007E +:10D2B000000000000000000000000000000000006E +:10D2C000000000000000000000000000000000005E +:10D2D000000000000000000000000000000000004E +:10D2E000000000000000000000000000000000003E +:10D2F000000000000000000000000000000000002E +:10D30000000000000000000000000000000000001D +:10D31000000000000000000000000000000000000D +:10D3200000000000000000000000000000000000FD +:10D3300000000000000000000000000000000000ED +:10D3400000000000000000000000000000000000DD +:10D3500000000000000000000000000000000000CD +:10D3600000000000000000000000000000000000BD +:10D3700000000000000000000000000000000000AD +:10D38000000000000000000000000000000000009D +:10D39000000000000000000000000000000000008D +:10D3A000000000000000000000000000000000007D +:10D3B000000000000000000000000000000000006D +:10D3C000000000000000000000000000000000005D +:10D3D000000000000000000000000000000000004D +:10D3E000000000000000000000000000000000003D +:10D3F000000000000000000000000000000000002D +:10D40000000000000000000000000000000000001C +:10D41000000000000000000000000000000000000C +:10D4200000000000000000000000000000000000FC +:10D4300000000000000000000000000000000000EC +:10D4400000000000000000000000000000000000DC +:10D4500000000000000000000000000000000000CC +:10D4600000000000000000000000000000000000BC +:10D4700000000000000000000000000000000000AC +:10D48000000000000000000000000000000000009C +:10D49000000000000000000000000000000000008C +:10D4A000000000000000000000000000000000007C +:10D4B000000000000000000000000000000000006C +:10D4C000000000000000000000000000000000005C +:10D4D000000000000000000000000000000000004C +:10D4E000000000000000000000000000000000003C +:10D4F000000000000000000000000000000000002C +:10D50000000000000000000000000000000000001B +:10D51000000000000000000000000000000000000B +:10D5200000000000000000000000000000000000FB +:10D5300000000000000000000000000000000000EB +:10D5400000000000000000000000000000000000DB +:10D5500000000000000000000000000000000000CB +:10D5600000000000000000000000000000000000BB +:10D5700000000000000000000000000000000000AB +:10D58000000000000000000000000000000000009B +:10D59000000000000000000000000000000000008B +:10D5A000000000000000000000000000000000007B +:10D5B000000000000000000000000000000000006B +:10D5C000000000000000000000000000000000005B +:10D5D000000000000000000000000000000000004B +:10D5E000000000000000000000000000000000003B +:10D5F000000000000000000000000000000000002B +:10D60000000000000000000000000000000000001A +:10D61000000000000000000000000000000000000A +:10D6200000000000000000000000000000000000FA +:10D6300000000000000000000000000000000000EA +:10D6400000000000000000000000000000000000DA +:10D6500000000000000000000000000000000000CA +:10D6600000000000000000000000000000000000BA +:10D6700000000000000000000000000000000000AA +:10D68000000000000000000000000000000000009A +:10D69000000000000000000000000000000000008A +:10D6A000000000000000000000000000000000007A +:10D6B000000000000000000000000000000000006A +:10D6C000000000000000000000000000000000005A +:10D6D000000000000000000000000000000000004A +:10D6E000000000000000000000000000000000003A +:10D6F000000000000000000000000000000000002A +:10D700000000000000000000000000000000000019 +:10D710000000000000000000000000000000000009 +:10D7200000000000000000000000000000000000F9 +:10D7300000000000000000000000000000000000E9 +:10D7400000000000000000000000000000000000D9 +:10D7500000000000000000000000000000000000C9 +:10D7600000000000000000000000000000000000B9 +:10D7700000000000000000000000000000000000A9 +:10D780000000000000000000000000000000000099 +:10D790000000000000000000000000000000000089 +:10D7A0000000000000000000000000000000000079 +:10D7B0000000000000000000000000000000000069 +:10D7C0000000000000000000000000000000000059 +:10D7D0000000000000000000000000000000000049 +:10D7E0000000000000000000000000000000000039 +:10D7F0000000000000000000000000000000000029 +:10D800000000000000000000000000000000000018 +:10D810000000000000000000000000000000000008 +:10D8200000000000000000000000000000000000F8 +:10D8300000000000000000000000000000000000E8 +:10D8400000000000000000000000000000000000D8 +:10D8500000000000000000000000000000000000C8 +:10D8600000000000000000000000000000000000B8 +:10D8700000000000000000000000000000000000A8 +:10D880000000000000000000000000000000000098 +:10D890000000000000000000000000000000000088 +:10D8A0000000000000000000000000000000000078 +:10D8B0000000000000000000000000000000000068 +:10D8C0000000000000000000000000000000000058 +:10D8D0000000000000000000000000000000000048 +:10D8E0000000000000000000000000000000000038 +:10D8F0000000000000000000000000000000000028 +:10D900000000000000000000000000000000000017 +:10D910000000000000000000000000000000000007 +:10D9200000000000000000000000000000000000F7 +:10D9300000000000000000000000000000000000E7 +:10D9400000000000000000000000000000000000D7 +:10D9500000000000000000000000000000000000C7 +:10D9600000000000000000000000000000000000B7 +:10D9700000000000000000000000000000000000A7 +:10D980000000000000000000000000000000000097 +:10D990000000000000000000000000000000000087 +:10D9A0000000000000000000000000000000000077 +:10D9B0000000000000000000000000000000000067 +:10D9C0000000000000000000000000000000000057 +:10D9D0000000000000000000000000000000000047 +:10D9E0000000000000000000000000000000000037 +:10D9F0000000000000000000000000000000000027 +:10DA00000000000000000000000000000000000016 +:10DA10000000000000000000000000000000000006 +:10DA200000000000000000000000000000000000F6 +:10DA300000000000000000000000000000000000E6 +:10DA400000000000000000000000000000000000D6 +:10DA500000000000000000000000000000000000C6 +:10DA600000000000000000000000000000000000B6 +:10DA700000000000000000000000000000000000A6 +:10DA80000000000000000000000000000000000096 +:10DA90000000000000000000000000000000000086 +:10DAA0000000000000000000000000000000000076 +:10DAB0000000000000000000000000000000000066 +:10DAC0000000000000000000000000000000000056 +:10DAD0000000000000000000000000000000000046 +:10DAE0000000000000000000000000000000000036 +:10DAF0000000000000000000000000000000000026 +:10DB00000000000000000000000000000000000015 +:10DB10000000000000000000000000000000000005 +:10DB200000000000000000000000000000000000F5 +:10DB300000000000000000000000000000000000E5 +:10DB400000000000000000000000000000000000D5 +:10DB500000000000000000000000000000000000C5 +:10DB600000000000000000000000000000000000B5 +:10DB700000000000000000000000000000000000A5 +:10DB80000000000000000000000000000000000095 +:10DB90000000000000000000000000000000000085 +:10DBA0000000000000000000000000000000000075 +:10DBB0000000000000000000000000000000000065 +:10DBC0000000000000000000000000000000000055 +:10DBD0000000000000000000000000000000000045 +:10DBE0000000000000000000000000000000000035 +:10DBF0000000000000000000000000000000000025 +:10DC00000000000000000000000000000000000014 +:10DC10000000000000000000000000000000000004 +:10DC200000000000000000000000000000000000F4 +:10DC300000000000000000000000000000000000E4 +:10DC400000000000000000000000000000000000D4 +:10DC500000000000000000000000000000000000C4 +:10DC600000000000000000000000000000000000B4 +:10DC700000000000000000000000000000000000A4 +:10DC80000000000000000000000000000000000094 +:10DC90000000000000000000000000000000000084 +:10DCA0000000000000000000000000000000000074 +:10DCB0000000000000000000000000000000000064 +:10DCC0000000000000000000000000000000000054 +:10DCD0000000000000000000000000000000000044 +:10DCE0000000000000000000000000000000000034 +:10DCF0000000000000000000000000000000000024 +:10DD00000000000000000000000000000000000013 +:10DD10000000000000000000000000000000000003 +:10DD200000000000000000000000000000000000F3 +:10DD300000000000000000000000000000000000E3 +:10DD400000000000000000000000000000000000D3 +:10DD500000000000000000000000000000000000C3 +:10DD600000000000000000000000000000000000B3 +:10DD700000000000000000000000000000000000A3 +:10DD80000000000000000000000000000000000093 +:10DD90000000000000000000000000000000000083 +:10DDA0000000000000000000000000000000000073 +:10DDB0000000000000000000000000000000000063 +:10DDC0000000000000000000000000000000000053 +:10DDD0000000000000000000000000000000000043 +:10DDE0000000000000000000000000000000000033 +:10DDF0000000000000000000000000000000000023 +:10DE00000000000000000000000000000000000012 +:10DE10000000000000000000000000000000000002 +:10DE200000000000000000000000000000000000F2 +:10DE300000000000000000000000000000000000E2 +:10DE400000000000000000000000000000000000D2 +:10DE500000000000000000000000000000000000C2 +:10DE600000000000000000000000000000000000B2 +:10DE700000000000000000000000000000000000A2 +:10DE80000000000000000000000000000000000092 +:10DE90000000000000000000000000000000000082 +:10DEA0000000000000000000000000000000000072 +:10DEB0000000000000000000000000000000000062 +:10DEC0000000000000000000000000000000000052 +:10DED0000000000000000000000000000000000042 +:10DEE0000000000000000000000000000000000032 +:10DEF0000000000000000000000000000000000022 +:10DF00000000000000000000000000000000000011 +:10DF10000000000000000000000000000000000001 +:10DF200000000000000000000000000000000000F1 +:10DF300000000000000000000000000000000000E1 +:10DF400000000000000000000000000000000000D1 +:10DF500000000000000000000000000000000000C1 +:10DF600000000000000000000000000000000000B1 +:10DF700000000000000000000000000000000000A1 +:10DF80000000000000000000000000000000000091 +:10DF90000000000000000000000000000000000081 +:10DFA0000000000000000000000000000000000071 +:10DFB0000000000000000000000000000000000061 +:10DFC0000000000000000000000000000000000051 +:10DFD0000000000000000000000000000000000041 +:10DFE0000000000000000000000000000000000031 +:10DFF0000000000000000000000000000000000021 +:10E000000000000000000000000000000000000010 +:10E010000000000000000000000000000000000000 +:10E0200000000000000000000000000000000000F0 +:10E0300000000000000000000000000000000000E0 +:10E0400000000000000000000000000000000000D0 +:10E0500000000000000000000000000000000000C0 +:10E0600000000000000000000000000000000000B0 +:10E0700000000000000000000000000000000000A0 +:10E080000000000000000000000000000000000090 +:10E090000000000000000000000000000000000080 +:10E0A0000000000000000000000000000000000070 +:10E0B0000000000000000000000000000000000060 +:10E0C0000000000000000000000000000000000050 +:10E0D0000000000000000000000000000000000040 +:10E0E0000000000000000000000000000000000030 +:10E0F0000000000000000000000000000000000020 +:10E10000000000000000000000000000000000000F +:10E1100000000000000000000000000000000000FF +:10E1200000000000000000000000000000000000EF +:10E1300000000000000000000000000000000000DF +:10E1400000000000000000000000000000000000CF +:10E1500000000000000000000000000000000000BF +:10E1600000000000000000000000000000000000AF +:10E17000000000000000000000000000000000009F +:10E18000000000000000000000000000000000008F +:10E19000000000000000000000000000000000007F +:10E1A000000000000000000000000000000000006F +:10E1B000000000000000000000000000000000005F +:10E1C000000000000000000000000000000000004F +:10E1D000000000000000000000000000000000003F +:10E1E000000000000000000000000000000000002F +:10E1F000000000000000000000000000000000809F +:10E20000000000000000000000000000000000000E +:10E2100000000000000000000000000000000000FE +:10E220000000000A000000000000000000000000E4 +:10E2300010000003000000000000000D0000000DB1 +:10E240003C020801244295C03C030801246397FC6A +:10E25000AC4000000043202B1480FFFD244200044A +:10E260003C1D080037BD9FFC03A0F0213C100800B6 +:10E27000261032103C1C0801279C95C00E0012BECF +:10E28000000000000000000D3C02800030A5FFFFF0 +:10E2900030C600FF344301803C0880008D0901B87E +:10E2A0000520FFFE00000000AC6400002404000212 +:10E2B000A4650008A066000AA064000BAC67001803 +:10E2C0003C03100003E00008AD0301B83C0560000A +:10E2D0008CA24FF80440FFFE00000000ACA44FC029 +:10E2E0003C0310003C040200ACA44FC403E000084F +:10E2F000ACA34FF89486000C00A050212488001491 +:10E3000000062B0200051080004448210109182B4B +:10E310001060001100000000910300002C6400094F +:10E320005080000991190001000360803C0D080134 +:10E3300025AD9258018D58218D67000000E000083E +:10E340000000000091190001011940210109302B42 +:10E3500054C0FFF29103000003E000080000102108 +:10E360000A000CCC25080001910F0001240E000AC0 +:10E3700015EE00400128C8232F38000A1700003D81 +:10E38000250D00028D580000250F0006370E0100F4 +:10E39000AD4E0000910C000291AB000191A400026F +:10E3A00091A60003000C2E00000B3C0000A71025D6 +:10E3B00000041A000043C8250326C025AD580004F8 +:10E3C000910E000691ED000191E7000291E5000336 +:10E3D000000E5E00000D6400016C30250007220075 +:10E3E00000C41025004518252508000A0A000CCC99 +:10E3F000AD430008910F000125040002240800022B +:10E4000055E80001012020210A000CCC00804021A9 +:10E41000910C0001240B0003158B00160000000076 +:10E420008D580000910E000225080003370D0008EA +:10E43000A14E00100A000CCCAD4D00009119000156 +:10E44000240F0004172F000B0000000091070002AA +:10E45000910400038D43000000072A0000A410254A +:10E460003466000425080004AD42000C0A000CCC00 +:10E47000AD46000003E000082402000127BDFFE8CC +:10E48000AFBF0014AFB000100E00164E0080802108 +:10E490003C0480083485008090A600052403FFFE1C +:10E4A0000200202100C310248FBF00148FB0001081 +:10E4B000A0A200050A00165827BD001827BDFFE8D6 +:10E4C000AFB00010AFBF00140E000FD40080802149 +:10E4D0003C06800834C5008090A40000240200504F +:10E4E000308300FF106200073C09800002002021F9 +:10E4F0008FBF00148FB00010AD2001800A00108F74 +:10E5000027BD0018240801003C07800002002021DC +:10E510008FBF00148FB00010ACE801800A00108F8C +:10E5200027BD001827BDFF783C058008AFBE0080DE +:10E53000AFB7007CAFB3006CAFB10064AFBF008475 +:10E54000AFB60078AFB50074AFB40070AFB200687A +:10E55000AFB0006034A600803C0580008CB201287A +:10E5600090C400098CA701043C020001309100FF17 +:10E5700000E218240000B8210000F021106000071C +:10E58000000098213C0908008D2931F02413000176 +:10E59000252800013C010800AC2831F0ACA0008423 +:10E5A00090CC0005000C5827316A0001154000721C +:10E5B000AFA0005090CD00002406002031A400FF41 +:10E5C00010860018240E0050108E009300000000EA +:10E5D0003C1008008E1000DC260F00013C010800F2 +:10E5E000AC2F00DC0E0016C7000000000040182110 +:10E5F0008FBF00848FBE00808FB7007C8FB60078FD +:10E600008FB500748FB400708FB3006C8FB2006848 +:10E610008FB100648FB000600060102103E000083B +:10E6200027BD00880000000D3C1F8000AFA0003017 +:10E6300097E501168FE201043C04002030B9FFFF8A +:10E64000004438240007182B00033140AFA60030E7 +:10E650008FF5010437F80C003C1600400338802188 +:10E6600002B6A02434C40040128000479215000D69 +:10E6700032A800201500000234860080008030217E +:10E6800014C0009FAFA600303C0D800835A6008066 +:10E6900090CC0008318B0040516000063C06800899 +:10E6A000240E0004122E00A8240F0012122F003294 +:10E6B0003C06800834C401003C0280009447011AE3 +:10E6C0009619000E909F00088E18000830E3FFFF97 +:10E6D00003F9B00432B40004AFB6005CAFA3005835 +:10E6E0008E1600041280002EAFB8005434C3008090 +:10E6F000906800083105004014A0002500000000CB +:10E700008C70005002D090230640000500000000ED +:10E710008C71003402D1A82306A201678EE20008A2 +:10E72000126000063C1280003C1508008EB531F4E2 +:10E7300026B600013C010800AC3631F4AE4000447E +:10E74000240300018FBF00848FBE00808FB7007C40 +:10E750008FB600788FB500748FB400708FB3006CE3 +:10E760008FB200688FB100648FB00060006010212C +:10E7700003E0000827BD00880E000D2800002021BE +:10E780000A000D75004018210A000D9500C02021D7 +:10E790000E00171702C020211440FFE10000000006 +:10E7A0003C0B8008356400808C8A003402CA482300 +:10E7B0000520001D000000003C1E08008FDE310017 +:10E7C00027D700013C010800AC3731001260000679 +:10E7D000024020213C1408008E9431F42690000160 +:10E7E0003C010800AC3031F40E00164E3C1E80088F +:10E7F00037CD008091B700250240202136EE00047D +:10E800000E001658A1AE00250E000CAC02402021CF +:10E810000A000DCA240300013C17080126F796C020 +:10E820000A000D843C1F80008C86003002C66023E5 +:10E830001980000C2419000C908F004F3C14080024 +:10E840008E94310032B500FC35ED0001268E0001BA +:10E850003C010800AC2E3100A08D004FAFA0005845 +:10E860002419000CAFB900308C9800300316A02397 +:10E870001A80010B8FA300580074F82A17E0FFD309 +:10E88000000000001074002A8FA5005802D4B021A7 +:10E8900000B410233044FFFFAFA4005832A8000298 +:10E8A0001100002E32AB00103C15800836B00080FD +:10E8B0009216000832D30040526000FB8EE200083E +:10E8C0000E00164E02402021240A0018A20A000958 +:10E8D000921100052409FFFE024020210229902404 +:10E8E0000E001658A2120005240400390000282149 +:10E8F0000E0016F2240600180A000DCA24030001B7 +:10E9000092FE000C3C0A800835490080001EBB00C6 +:10E910008D27003836F10081024020213225F08118 +:10E920000E000C9B30C600FF0A000DC10000000065 +:10E930003AA7000130E300011460FFA402D4B02123 +:10E940000A000E1D00000000024020210E001734B6 +:10E95000020028210A000D75004018211160FF7087 +:10E960003C0F80083C0D800835EE00808DC40038D7 +:10E970008FA300548DA60004006660231D80FF68ED +:10E98000000000000064C02307020001AFA400548F +:10E990003C1F08008FFF31E433F9000113200015FC +:10E9A0008FAC00583C07800094E3011A10600012FD +:10E9B0003C0680080E00216A024020213C03080129 +:10E9C000906396F13064000214800145000000005D +:10E9D000306C0004118000078FAC0058306600FBDB +:10E9E0003C010801A02696F132B500FCAFA000580A +:10E9F0008FAC00583C06800834D30080AFB40018B8 +:10EA0000AFB60010AFAC00143C088000950B01209D +:10EA10008E6F0030966A005C8FA3005C8FBF003061 +:10EA20003169FFFF3144FFFF8FAE005401341021E4 +:10EA3000350540000064382B0045C82103E7C02598 +:10EA4000AFB90020AFAF0028AFB80030AFAF00249F +:10EA5000AFA0002CAFAE0034926D000831B40008B6 +:10EA6000168000BB020020218EE200040040F8095D +:10EA700027A400108FAF003031F300025660000170 +:10EA800032B500FE3C048008349F008093F90008F2 +:10EA900033380040530000138FA400248C850004F9 +:10EAA0008FA7005410A700D52404001432B0000131 +:10EAB0001200000C8FA400242414000C1234011A3C +:10EAC0002A2D000D11A001022413000E240E000AAD +:10EAD000522E0001241E00088FAF002425E40001FF +:10EAE000AFA400248FAA00143C0B80083565008079 +:10EAF000008A48218CB10030ACA9003090A4004EAF +:10EB00008CA700303408FFFF0088180400E3F821C8 +:10EB1000ACBF00348FA600308FB900548FB8005CB2 +:10EB200030C200081040000B033898218CAC002044 +:10EB3000119300D330C600FF92EE000C8FA7003473 +:10EB400002402021000E6B0035B400800E000C9BAB +:10EB50003285F0803C028008345000808E0F0030F7 +:10EB600001F1302318C00097264800803C070800B8 +:10EB70008CE731E42404FF80010418243118007F5D +:10EB80003C1F80003C19800430F10001AFE300908D +:10EB900012200006031928213C030801906396F116 +:10EBA00030690008152000C6306A00F73C10800864 +:10EBB00036040080908C004F318B000115600042BC +:10EBC000000000003C0608008CC6319830CE0010D2 +:10EBD00051C0004230F9000190AF006B55E0003F9A +:10EBE00030F9000124180001A0B8006B3C1180002E +:10EBF0009622007A24470064A48700123C0D800806 +:10EC000035A5008090B40008329000401600000442 +:10EC10003C03800832AE000115C0008B00000000EC +:10EC2000346400808C86002010D3000A3463010015 +:10EC30008C67000002C7782319E000978FBF00544B +:10EC4000AC93002024130001AC760000AFB3005059 +:10EC5000AC7F000417C0004E000000008FA90050D8 +:10EC60001520000B000000003C030801906396F1A2 +:10EC7000306A00011140002E8FAB0058306400FE56 +:10EC80003C010801A02496F10A000D75000018212E +:10EC90000E000CAC024020210A000F1300000000FF +:10ECA0000A000E200000A0210040F80924040017EB +:10ECB0000A000DCA240300010040F80924040016CC +:10ECC0000A000DCA240300019094004F240DFFFE9A +:10ECD000028D2824A085004F30F900011320000682 +:10ECE0003C0480083C030801906396F1307F0010DB +:10ECF00017E00051306800EF34900080240A0001D2 +:10ED0000024020210E00164EA60A00129203002592 +:10ED100024090001AFA90050346200010240202103 +:10ED20000E001658A20200250A000EF93C0D8008BC +:10ED30001160FE83000018218FA5003030AC000464 +:10ED40001180FE2C8FBF00840A000DCB240300012C +:10ED500027A500380E000CB6AFA000385440FF4382 +:10ED60008EE200048FB40038329001005200FF3F61 +:10ED70008EE200048FA3003C8E6E0058006E682364 +:10ED800005A3FF39AE6300580A000E948EE200041A +:10ED90000E00164E024020213C038008346800809B +:10EDA000024020210E001658A11E000903C0302188 +:10EDB000240400370E0016F2000028210A000F116B +:10EDC0008FA900508FAB00185960FF8D3C0D800853 +:10EDD0000E00164E02402021920C00252405000151 +:10EDE000AFA5005035820004024020210E001658C5 +:10EDF000A20200250A000EF93C0D800812240059D9 +:10EE00002A2300151060004D240900162408000C68 +:10EE10005628FF2732B000013C0A8008914C001BA5 +:10EE20002406FFBD241E000E01865824A14B001BA2 +:10EE30000A000EA532B000013C010801A02896F19D +:10EE40000A000EF93C0D80088CB500308EFE0008DB +:10EE50002404001826B6000103C0F809ACB600303F +:10EE60003C030801906396F13077000116E0FF81C2 +:10EE7000306A00018FB200300A000D753243000481 +:10EE80003C1080009605011A50A0FF2B34C60010DC +:10EE90000A000EC892EE000C8C6200001456FF6D42 +:10EEA000000000008C7800048FB9005403388823D8 +:10EEB0000621FF638FBF00540A000F0E0000000000 +:10EEC0003C010801A02A96F10A000F3030F9000138 +:10EED0001633FF028FAF00240A000EB0241E00106C +:10EEE0000E00164E024020213C0B80083568008041 +:10EEF00091090025240A0001AFAA0050353300040F +:10EF0000024020210E001658A11300253C050801DF +:10EF100090A596F130A200FD3C010801A02296F1D7 +:10EF20000A000E6D004018212411000E53D1FEEA94 +:10EF3000241E00100A000EAF241E00165629FEDC07 +:10EF400032B000013C0A8008914C001B2406FFBD32 +:10EF5000241E001001865824A14B001B0A000EA598 +:10EF600032B000010A000EA4241E00123C038000EF +:10EF70008C6201B80440FFFE24040800AC6401B8B0 +:10EF800003E000080000000030A5FFFF30C6FFFFCF +:10EF90003C0780008CE201B80440FFFE34EA0180A7 +:10EFA000AD440000ACE400203C0480089483004899 +:10EFB0003068FFFF11000016AF88000824AB001274 +:10EFC000010B482B512000133C04800034EF01005A +:10EFD00095EE00208F890000240D001A31CCFFFF30 +:10EFE00031274000A14D000B10E000362583FFFEC5 +:10EFF0000103C02B170000348F9900048F88000490 +:10F00000A5430014350700010A001003AF87000470 +:10F010003C04800024030003348201808F890000B7 +:10F020008F870004A043000B3C088000350C018052 +:10F03000A585000EA585001A8F85000C30EB800099 +:10F04000A5890010AD850028A58600081160000F75 +:10F050008F85001435190100972A00163158FFFCDE +:10F06000270F000401E870218DCD400031A6FFFF7D +:10F0700014C000072403BFFF3C02FFFF34487FFF9A +:10F0800000E83824AF8700048F8500142403BFFFF5 +:10F090003C04800000E3582434830180A46B0026E4 +:10F0A000AC69002C10A0000300054C02A465001000 +:10F0B000A46900263C071000AC8701B803E00008F3 +:10F0C000000000008F990004240AFFFE032A382460 +:10F0D0000A001003AF87000427BDFFE88FA20028B5 +:10F0E00030A5FFFF30C6FFFFAFBF0010AF87000C99 +:10F0F000AF820014AF8000040E000FDBAF80000071 +:10F100008FBF001027BD001803E00008AF80001477 +:10F110003C06800034C4007034C701008C8A0000B3 +:10F1200090E500128F84000027BDFFF030A300FFA0 +:10F13000000318823082400010400037246500032D +:10F140000005C8800326C0218F0E4000246F0004F4 +:10F15000000F6880AFAE000001A660218D8B4000DB +:10F16000AFAB000494E900163128FFFC01063821FA +:10F170008CE64000AFA600088FA9000800003021EF +:10F18000000028213C07080024E701000A0010675E +:10F19000240800089059000024A500012CAC000CA4 +:10F1A0000079C0210018788001E770218DCD000022 +:10F1B0001180000600CD302603A5102114A8FFF50C +:10F1C00000051A005520FFF4905900003C0480000F +:10F1D000348700703C0508008CA531048CE30000E6 +:10F1E0002CA2002010400009006A38230005488046 +:10F1F0003C0B0800256B3108012B402124AA00019B +:10F20000AD0700003C010800AC2A310400C0102109 +:10F2100003E0000827BD0010308220001040000BE2 +:10F2200000055880016648218D24400024680004B0 +:10F2300000083880AFA4000000E618218C6540006B +:10F24000AFA000080A001057AFA500040000000D91 +:10F250000A0010588FA9000827BDFFE03C07800076 +:10F2600034E60100AFBF001CAFB20018AFB100140C +:10F27000AFB0001094C5000E8F87000030A4FFFFD0 +:10F280002483000430E2400010400010AF830028C7 +:10F290003C09002000E940241100000D30EC800002 +:10F2A0008F8A0004240BBFFF00EB38243543100085 +:10F2B000AF87000030F220001640000B3C1900041C +:10F2C000241FFFBF0A0010B7007F102430EC80001D +:10F2D000158000423C0E002030F220001240FFF862 +:10F2E0008F8300043C19000400F9C0241300FFF5CB +:10F2F000241FFFBF34620040AF82000430E20100EF +:10F300001040001130F010008F83002C10600006B8 +:10F310003C0F80003C05002000E52024148000C044 +:10F320003C0800043C0F800035EE010095CD001E26 +:10F3300095CC001C31AAFFFF000C5C00014B482556 +:10F34000AF89000C30F010001200000824110001F9 +:10F3500030F100201620008B3C18100000F890249B +:10F36000164000823C040C002411000130E801002A +:10F370001500000B3C0900018F85000430A94000F6 +:10F38000152000073C0900013C0C1F0100EC58242B +:10F390003C0A1000116A01183C1080003C09000171 +:10F3A00000E9302410C000173C0B10003C18080086 +:10F3B0008F1800243307000214E0014024030001E9 +:10F3C0008FBF001C8FB200188FB100148FB00010D7 +:10F3D0000060102103E0000827BD002000EE682433 +:10F3E00011A0FFBE30F220008F8F00043C11FFFF00 +:10F3F00036307FFF00F0382435E380000A0010A685 +:10F40000AF87000000EB102450400065AF8000245F +:10F410008F8C002C3C0D0F0000ED18241580008807 +:10F42000AF83001030E8010011000086938F0010B8 +:10F430003C0A0200106A00833C1280003650010032 +:10F44000920500139789002A3626000230AF00FF8C +:10F4500025EE0004000E19C03C0480008C9801B811 +:10F460000700FFFE34880180AD0300003C198008CE +:10F47000AC830020973100483225FFFF10A0015CCB +:10F48000AF8500082523001200A3F82B53E0015993 +:10F490008F850004348D010095AC00202402001AF1 +:10F4A00030E44000318BFFFFA102000B108001927D +:10F4B0002563FFFE00A3502B154001908F8F0004A1 +:10F4C000A50300148F88000435050001AF850004F2 +:10F4D0003C08800035190180A729000EA729001AD1 +:10F4E0008F89000C30B18000A7270010AF290028B9 +:10F4F000A72600081220000E3C04800035020100FF +:10F50000944C0016318BFFFC256400040088182100 +:10F510008C7F400033E6FFFF14C000053C048000F0 +:10F520003C0AFFFF354D7FFF00AD2824AF85000466 +:10F53000240EBFFF00AE402434850180A4A800261D +:10F54000ACA7002C3C071000AC8701B800001821C4 +:10F550008FBF001C8FB200188FB100148FB0001045 +:10F560000060102103E0000827BD00203C020BFFD3 +:10F5700000E41824345FFFFF03E3C82B5320FF7B14 +:10F58000241100013C0608008CC6002C24C5000193 +:10F590003C010800AC25002C0A0010D42411000501 +:10F5A0008F85002410A0002FAF80001090A30000D2 +:10F5B000146000792419000310A0002A30E601002D +:10F5C00010C000CC8F860010241F000210DF00C97D +:10F5D0008F8B000C3C0708008CE7003824E4FFFF09 +:10F5E00014E0000201641824000018213C0D0800FA +:10F5F00025AD0038006D1021904C00048F85002847 +:10F6000025830004000321C030A5FFFF3626000239 +:10F610000E000FDB000000000A00114D0000182151 +:10F6200000E8302414C0FF403C0F80000E00103D65 +:10F63000000000008F8700000A0010CAAF82000C93 +:10F64000938F00103C18080127189640000F90C0B7 +:10F6500002588021AF9000248F85002414A0FFD38E +:10F66000AF8F00103C0480008C86400030C5010044 +:10F6700010A000BC322300043C0C08008D8C002438 +:10F6800024120004106000C23190000D3C04800080 +:10F690008C8D40003402FFFF11A201003231FFFBCC +:10F6A0008C884000310A01005540000124110010EF +:10F6B00030EE080011C000BE2419FFFB8F9800280F +:10F6C0002F0F03EF51E000010219802430E90100FF +:10F6D00011200014320800018F87002C14E000FB79 +:10F6E0008F8C000C3C05800034AB0100917F00132F +:10F6F00033E300FF246A00042403FFFE0203802496 +:10F70000000A21C012000002023230253226FFFF1B +:10F710000E000FDB9785002A1200FF290000182138 +:10F72000320800011100000D32180004240E0001FF +:10F73000120E0002023230253226FFFF9785002A82 +:10F740000E000FDB00002021240FFFFE020F80249B +:10F750001200FF1B00001821321800045300FF188C +:10F760002403000102323025241200045612000145 +:10F770003226FFFF9785002A0E000FDB24040100CC +:10F780002419FFFB021988241220FF0D0000182104 +:10F790000A0010E9240300011079009C00003021C8 +:10F7A00090AD00012402000211A200BE30EA004028 +:10F7B00090B90001241800011338007F30E900409F +:10F7C0008CA600049785002A00C020210E000FDBC4 +:10F7D0003626000200004021010018218FBF001CC6 +:10F7E0008FB200188FB100148FB00010006010218C +:10F7F00003E0000827BD0020360F010095EE000C45 +:10F8000031CD020015A0FEE63C0900013C1880083D +:10F81000971200489789002A362600023248FFFFD7 +:10F82000AF8800083C0380008C7101B80620FFFE01 +:10F83000346A0180AD4000001100008E3C0F800052 +:10F84000253F0012011FC82B1320008B240E00033C +:10F85000346C0100958B00202402001A30E4400033 +:10F860003163FFFFA142000B108000A72463FFFE5D +:10F870000103682B15A000A52408FFFE34A5000194 +:10F88000A5430014AF8500043C0480002412BFFF90 +:10F8900000B2802434850180A4A9000EA4A9001A16 +:10F8A000A4A60008A4B00026A4A700103C071000DE +:10F8B000AC8701B80A00114D000018213C038000FC +:10F8C00034640100949F000E3C1908008F3900D861 +:10F8D0002404008033E5FFFF273100013C010800CC +:10F8E000AC3100D80E000FDB240600030A00114DD6 +:10F8F00000001821240A000210CA00598F85002830 +:10F900003C0308008C6300D0240E0001106E005EE2 +:10F910002CCF000C24D2FFFC2E5000041600002136 +:10F9200000002021241800021078001B2CD9000CA4 +:10F9300024DFFFF82FE900041520FF330000202109 +:10F9400030EB020051600004000621C054C00022C8 +:10F9500030A5FFFF000621C030A5FFFF0A00117D82 +:10F96000362600023C0908008D29002431300001B0 +:10F970005200FEF7000018219785002A3626000263 +:10F980000E000FDB000020210A00114D000018219D +:10F990000A00119C241200021320FFE624DFFFF866 +:10F9A0000000202130A5FFFF0A00117D362600024D +:10F9B0000A0011AC021980245120FF828CA6000499 +:10F9C0003C05080190A5964110A0FF7E2408000187 +:10F9D0000A0011F0010018210E000FDB3226000191 +:10F9E0008F8600108F8500280A00124F000621C064 +:10F9F0008F8500043C18800024120003371001801A +:10FA0000A212000B0A00112E3C08800090A30001F6 +:10FA1000241100011071FF70240800012409000264 +:10FA20005069000430E60040240800010A0011F08B +:10FA30000100182150C0FFFD240800013C0C80008B +:10FA4000358B01009563001094A40002307FFFFF06 +:10FA5000509FFF62010018210A001284240800014F +:10FA60002CA803EF1100FE56240300010A001239EE +:10FA700000000000240E000335EA0180A14E000BB7 +:10FA80000A00121C3C04800011E0FFA2000621C005 +:10FA900030A5FFFF0A00117D362600020A0011A5DD +:10FAA000241100201140FFC63C1280003650010096 +:10FAB000960F001094AE000231E80FFF15C8FFC08A +:10FAC000000000000A0011E690B900013C060800A1 +:10FAD0008CC6003824C4FFFF14C00002018418241F +:10FAE000000018213C0D080025AD0038006D1021E4 +:10FAF0000A0011B6904300048F8F0004240EFFFE0D +:10FB00000A00112C01EE28242408FFFE0A00121A14 +:10FB100000A8282427BDFFC8AFB00010AFBF003435 +:10FB20003C10600CAFBE0030AFB7002CAFB6002861 +:10FB3000AFB50024AFB40020AFB3001CAFB20018C3 +:10FB4000AFB100148E0E5000240FFF7F3C068000E2 +:10FB500001CF682435AC380C240B0003AE0C5000E8 +:10FB6000ACCB00083C010800AC2000200E001819A6 +:10FB7000000000003C0A0010354980513C06601628 +:10FB8000AE09537C8CC700003C0860148D0500A0B2 +:10FB90003C03FFFF00E320243C02535300051FC237 +:10FBA0001482000634C57C000003A08002869821E0 +:10FBB0008E7200043C116000025128218CBF007C31 +:10FBC0008CA200783C1E600037C420203C05080150 +:10FBD00024A59288AF820018AF9F001C0E0016DD8E +:10FBE0002406000A3C190001273996403C01080010 +:10FBF000AC3931DC0E0020DDAF8000148FD708084F +:10FC00002418FFF03C15570902F8B02412D502F56C +:10FC100024040001AF80002C3C1480003697018042 +:10FC20003C1E080127DE9644369301008E900000AA +:10FC30003205000310A0FFFD3207000110E000882C +:10FC4000320600028E7100283C048000AE91002034 +:10FC50008E6500048E66000000A0382100C040219F +:10FC60008C8301B80460FFFE3C0B0010240A0800DE +:10FC700000AB4824AC8A01B8552000E0240BBFFF3C +:10FC80009675000E3C1208008E52002030AC4000E9 +:10FC900032AFFFFF264E000125ED00043C010800B5 +:10FCA000AC2E0020118000E8AF8D00283C18002009 +:10FCB00000B8B02412C000E530B980002408BFFFAE +:10FCC00000A8382434C81000AF87000030E62000B8 +:10FCD00010C000E92409FFBF3C03000400E328240E +:10FCE00010A00002010910243502004030EA010092 +:10FCF00011400010AF8200048F8B002C11600007B0 +:10FD00003C0D002000ED6024118000043C0F000435 +:10FD100000EF702411C00239000000009668001E38 +:10FD20009678001C3115FFFF0018B40002B690252C +:10FD3000AF92000C30F910001320001324150001BD +:10FD400030FF002017E0000A3C04100000E41024FB +:10FD50001040000D3C0A0C003C090BFF00EA18247F +:10FD60003525FFFF00A3302B10C0000830ED010047 +:10FD70003C0C08008D8C002C24150005258B0001FF +:10FD80003C010800AC2B002C30ED010015A0000B4D +:10FD90003C0500018F85000430AE400055C00007CF +:10FDA0003C0500013C161F0100F690243C0F10009A +:10FDB000124F01CE000000003C05000100E5302498 +:10FDC00010C000AF3C0C10003C1F08008FFF002447 +:10FDD00033E90002152000712403000100601021A6 +:10FDE000104000083C0680003C08800035180100E7 +:10FDF0008F0F00243C056020ACAF00140000000011 +:10FE00003C0680003C194000ACD9013800000000DD +:10FE10005220001332060002262B0140262C0080BF +:10FE2000240EFF80016E2024018E6824000D1940ED +:10FE3000318A007F0004A9403172007F3C16200007 +:10FE400036C20002006A482502B2382500E2882541 +:10FE50000122F825ACDF0830ACD1083032060002B0 +:10FE600010C0FF723C188000370501408CA80000CC +:10FE700024100040AF08002090AF000831E300706C +:10FE8000107000D428790041532000082405006038 +:10FE9000241100201071000E3C0A40003C09800033 +:10FEA000AD2A01780A001304000000001465FFFB6E +:10FEB0003C0A40000E001FFA000000003C0A40000F +:10FEC0003C098000AD2A01780A00130400000000FC +:10FED00090A90009241F00048CA70000312800FF0E +:10FEE000111F01B22503FFFA2C7200061240001404 +:10FEF0003C0680008CA9000494A4000A310500FF90 +:10FF000000095E022D6A00083086FFFF15400002DE +:10FF10002567000424070003240C000910AC01FA33 +:10FF200028AD000A11A001DE2410000A240E0008EA +:10FF300010AE0028000731C000C038213C06800008 +:10FF40008CD501B806A0FFFE34D20180AE47000078 +:10FF500034CB0140916E0008240300023C0A4000AB +:10FF600031C400FF00046A0001A86025A64C000807 +:10FF7000A243000B9562000A3C0810003C09800077 +:10FF8000A64200108D670004AE470024ACC801B83B +:10FF9000AD2A01780A001304000000003C0A80002A +:10FFA000354401009483000E3C0208008C4200D8C6 +:10FFB000240400803065FFFF245500013C01080047 +:10FFC000AC3500D80E000FDB240600030A001370C6 +:10FFD000000018210009320230D900FF2418000166 +:10FFE0001738FFD5000731C08F910020262200016D +:10FFF000AF8200200A0013C800C0382100CB2024A3 +:020000021000EC +:10000000AF85000010800008AF860004240D87FF34 +:1000100000CD6024158000083C0E006000AE302446 +:1000200010C00005000000000E000D42000000009E +:100030000A001371000000000E0016050000000009 +:100040000A0013710000000030B980005320FF1F28 +:10005000AF8500003C02002000A2F82453E0FF1B03 +:10006000AF8500003C07FFFF34E47FFF00A4382485 +:100070000A00132B34C880000A001334010910242D +:1000800000EC58245160005AAF8000248F8D002C62 +:100090003C0E0F0000EE182415A00075AF83001071 +:1000A00030EF010011E00073939800103C12020041 +:1000B000107200703C06800034D9010093280013B0 +:1000C0009789002A36A60002311800FF271600047F +:1000D000001619C03C0480008C8501B804A0FFFE06 +:1000E00034880180AD0300003C158008AC830020FB +:1000F00096BF004833E5FFFF10A001BCAF850008A4 +:100100002523001200A3102B504001B98F85000455 +:10011000348D010095AC0020240B001A30E440001F +:10012000318AFFFFA10B000B108001BA2543FFFEAF +:1001300000A3702B15C001B88F9600048F8F0004A8 +:10014000A503001435E50001AF8500043C088000DC +:1001500035150180A6A9000EA6A9001A8F89000CEA +:1001600030BF8000A6A70010AEA90028A6A60008F0 +:1001700013E0000F3C0F8000350C0100958B00163A +:10018000316AFFFC25440004008818218C6240007D +:100190003046FFFF14C000072416BFFF3C0EFFFFD0 +:1001A00035CD7FFF00AD2824AF8500043C0F8000D3 +:1001B0002416BFFF00B6902435E50180A4B20026C6 +:1001C000ACA7002C3C071000ADE701B80A00137083 +:1001D000000018210E00165D000000003C0A4000DF +:1001E0003C098000AD2A01780A00130400000000D9 +:1001F0008F85002410A00027AF80001090A300007E +:10020000106000742409000310690101000030210E +:1002100090AE0001240D000211CD014230EF0040EC +:1002200090A90001241F0001113F000930E20040A5 +:100230008CA600049785002A00C020210E000FDB49 +:1002400036A60002000040210A00137001001821A8 +:100250005040FFF88CA600043C07080190E7964147 +:1002600010E0FFF4240800010A00137001001821B7 +:10027000939800103C1F080127FF96400018C8C043 +:10028000033F4021AF8800248F85002414A0FFDBAA +:10029000AF9800103C0480008C86400030C50100FF +:1002A00010A0008732AB00043C0C08008D8C0024A9 +:1002B00024160004156000033192000D241600027C +:1002C0003C0480008C8E4000340DFFFF11CD0113E3 +:1002D00032B5FFFB8C984000330F010055E0000160 +:1002E0002415001030E80800110000382409FFFB35 +:1002F0008F9F00282FF903EF53200001024990241B +:1003000030E2010010400014325F00018F87002CA2 +:1003100014E0010E8F8C000C3C0480003486010038 +:1003200090C5001330AA00FF25430004000321C03C +:100330002419FFFE025990241240000202B6302513 +:1003400032A6FFFF0E000FDB9785002A1240FEA3A6 +:1003500000001821325F000113E0000D3247000455 +:10036000240900011249000202B6302532A6FFFF1F +:100370009785002A0E000FDB000020212402FFFEDB +:10038000024290241240FE950000182132470004DA +:1003900050E0FE922403000102B63025241600042A +:1003A0005656000132A6FFFF9785002A0E000FDB8C +:1003B000240401002403FFFB0243A82412A0FE87AB +:1003C000000018210A001370240300010A0014B968 +:1003D0000249902410A0FFAF30E5010010A00017E3 +:1003E0008F8600102403000210C300148F84000CB9 +:1003F0003C0608008CC6003824CAFFFF14C0000267 +:10040000008A1024000010213C0E080025CE003880 +:10041000004E682191AC00048F850028258B0004D4 +:10042000000B21C030A5FFFF36A600020E000FDB37 +:10043000000000000A00137000001821240F0002C1 +:1004400010CF0088241600013C0308008C6300D004 +:100450001076008D8F85002824D9FFFC2F280004FA +:100460001500006300002021241F0002107F005DA2 +:100470002CC9000C24C3FFF82C6200041440FFE9CF +:100480000000202130EA020051400004000621C093 +:1004900054C0000530A5FFFF000621C030A5FFFFB6 +:1004A0000A00150436A600020E000FDB32A600017A +:1004B0008F8600108F8500280A001520000621C0B5 +:1004C0003C0A08008D4A0024315200015240FE438C +:1004D000000018219785002A36A600020E000FDBC7 +:1004E000000020210A001370000018219668000CFB +:1004F000311802005700FE313C0500013C1F800806 +:1005000097F900489789002A36A600023328FFFF92 +:10051000AF8800083C0380008C7501B806A0FFFE80 +:100520003C04800034820180AC400000110000B621 +:1005300024180003252A0012010A182B106000B2AB +:1005400000000000966F00203C0E8000240D001A71 +:1005500031ECFFFF35CA018030EB4000A14D000BAC +:10056000116000B02583FFFE0103902B164000AE02 +:100570002416FFFE34A50001A5430014AF85000436 +:100580002419BFFF00B94024A6E9000EA6E9001A0D +:10059000A6E60008A6E80026A6E700103C07100023 +:1005A000AE8701B80A001370000018213C048000D7 +:1005B0008C8201B80440FFFE349601802415001C93 +:1005C000AEC70000A2D5000B3C071000AC8701B8F5 +:1005D0003C0A40003C098000AD2A01780A0013045F +:1005E000000000005120FFA424C3FFF800002021D8 +:1005F00030A5FFFF0A00150436A600020E00103DCC +:10060000000000008F8700000A001346AF82000C34 +:1006100090A30001241500011075FF0B24080001B0 +:10062000240600021066000430E2004024080001A5 +:100630000A001370010018215040FFFD240800013A +:100640003C0C8000358B0100956A001094A40002D8 +:100650003143FFFF5083FDE1010018210A00158599 +:10066000240800018F8500282CB203EF1240FDDB27 +:10067000240300013C0308008C6300D02416000111 +:100680001476FF7624D9FFFC2CD8000C1300FF72DF +:10069000000621C030A5FFFF0A00150436A600029F +:1006A00010B00037240F000B14AFFE23000731C039 +:1006B000312600FF00065600000A4E0305220047BF +:1006C00030C6007F0006F8C03C16080126D69640CA +:1006D00003F68021A2000001A20000003C0F600090 +:1006E0008DF918202405000100C588040011302769 +:1006F0000326C024000731C000C03821ADF81820FF +:100700000A0013C8A60000028F850020000731C030 +:1007100024A2FFFF0A0013F6AF8200200A0014B2E1 +:100720002415002011E0FECC3C1980003728010080 +:100730009518001094B6000233120FFF16D2FEC6B1 +:10074000000000000A00148290A900013C0B080080 +:100750008D6B0038256DFFFF15600002018D1024A0 +:10076000000010213C080800250800380048C0217E +:10077000930F000425EE00040A0014C5000E21C0EA +:1007800000065202241F00FF115FFDEB000731C07D +:10079000000A20C03C0E080125CE9640008EA821FC +:1007A000009E602100095C02240D00013C076000EE +:1007B000A2AD0000AD860000A2AB00018CF21820B3 +:1007C00024030001014310040242B025ACF61820B6 +:1007D00000C038210A0013C8A6A900020A0015AA01 +:1007E000AF8000200A0012FFAF84002C8F85000428 +:1007F0003C1980002408000337380180A308000B4F +:100800000A00144D3C088000A2F8000B0A00155A9B +:100810002419BFFF8F9600042412FFFE0A00144B18 +:1008200002D228242416FFFE0A00155800B62824F8 +:100830003C038000346401008C85000030A2003E3F +:100840001440000800000000AC6000488C870000E5 +:1008500030E607C010C0000500000000AC60004C8E +:10086000AC60005003E0000824020001AC600054BA +:10087000AC6000408C880000310438001080FFF923 +:10088000000000002402000103E00008AC60004406 +:100890003C0380008C6201B80440FFFE3467018095 +:1008A000ACE4000024080001ACE00004A4E500086A +:1008B00024050002A0E8000A34640140A0E5000B12 +:1008C0009483000A14C00008A4E30010ACE00024E4 +:1008D0003C07800034E901803C041000AD20002872 +:1008E00003E00008ACE401B88C8600043C0410006E +:1008F000ACE600243C07800034E90180AD200028EC +:1009000003E00008ACE401B83C0680008CC201B8EA +:100910000440FFFE34C7018024090002ACE400005B +:10092000ACE40004A4E50008A0E9000A34C50140D5 +:10093000A0E9000B94A8000A3C041000A4E80010F1 +:10094000ACE000248CA30004ACE3002803E0000822 +:10095000ACC401B83C039000346200010082202541 +:100960003C038000AC6400208C65002004A0FFFEE6 +:100970000000000003E00008000000003C028000CE +:10098000344300010083202503E00008AC4400202C +:1009900027BDFFE03C098000AFBF0018AFB10014D5 +:1009A000AFB00010352801408D10000091040009FF +:1009B0009107000891050008308400FF30E600FF31 +:1009C00000061A002C820081008330251040002A86 +:1009D00030A50080000460803C0D080125AD92B078 +:1009E000018D58218D6A00000140000800000000C0 +:1009F0003C038000346201409445000A14A0001EAC +:100A00008F91FCC09227000530E6000414C0001A44 +:100A1000000000000E00164E02002021922A000560 +:100A200002002021354900040E001658A2290005B5 +:100A30009228000531040004148000020000000028 +:100A40000000000D922D0000240B002031AC00FFAF +:100A5000158B00093C0580008CAE01B805C0FFFE77 +:100A600034B10180AE3000003C0F100024100005AE +:100A7000A230000BACAF01B80000000D8FBF001812 +:100A80008FB100148FB0001003E0000827BD0020D4 +:100A90000200202100C028218FBF00188FB1001450 +:100AA0008FB00010240600010A00161D27BD00208B +:100AB0000000000D0200202100C028218FBF001877 +:100AC0008FB100148FB00010000030210A00161DF5 +:100AD00027BD002014A0FFE8000000000200202134 +:100AE0008FBF00188FB100148FB0001000C02821F4 +:100AF0000A00163B27BD00203C0780008CEE01B8A1 +:100B000005C0FFFE34F00180241F0002A21F000B6D +:100B100034F80140A60600089719000A3C0F10009F +:100B2000A61900108F110004A6110012ACEF01B835 +:100B30000A0016998FBF001827BDFFE8AFBF00104D +:100B40000E000FD4000000003C0280008FBF001098 +:100B500000002021AC4001800A00108F27BD001842 +:100B60003084FFFF30A5FFFF108000070000182130 +:100B7000308200011040000200042042006518216C +:100B80001480FFFB0005284003E0000800601021EE +:100B900010C00007000000008CA2000024C6FFFF68 +:100BA00024A50004AC82000014C0FFFB24840004D0 +:100BB00003E000080000000010A0000824A3FFFFCD +:100BC000AC86000000000000000000002402FFFFCF +:100BD0002463FFFF1462FFFA2484000403E000088A +:100BE000000000003C03800027BDFFF83462018054 +:100BF000AFA20000308C00FF30AD00FF30CE00FF10 +:100C00003C0B80008D6401B80480FFFE00000000F2 +:100C10008FA900008D6801288FAA00008FA700000F +:100C20008FA400002405000124020002A085000A10 +:100C30008FA30000359940003C051000A062000B16 +:100C40008FB800008FAC00008FA600008FAF0000AF +:100C500027BD0008AD280000AD400004AD80002491 +:100C6000ACC00028A4F90008A70D0010A5EE0012E2 +:100C700003E00008AD6501B83C06800827BDFFE829 +:100C800034C50080AFBF001090A7000924020012F5 +:100C900030E300FF1062000B008030218CA8005070 +:100CA00000882023048000088FBF00108CAA003425 +:100CB000240400390000282100CA4823052000052B +:100CC000240600128FBF00102402000103E0000878 +:100CD00027BD00180E0016F2000000008FBF0010A4 +:100CE0002402000103E0000827BD001827BDFFC84B +:100CF000AFB20030AFB00028AFBF0034AFB1002CAE +:100D000000A0802190A5000D30A6001010C000109A +:100D1000008090213C0280088C4400048E0300086F +:100D20001064000C30A7000530A6000510C0009329 +:100D3000240400018FBF00348FB200308FB1002C2B +:100D40008FB000280080102103E0000827BD003884 +:100D500030A7000510E0000F30AB001210C00006F5 +:100D6000240400013C0980088E0800088D25000439 +:100D70005105009C240400388FBF00348FB200302E +:100D80008FB1002C8FB000280080102103E00008F4 +:100D900027BD0038240A0012156AFFE6240400016A +:100DA0000200202127A500100E000CB6AFA00010F5 +:100DB0001440007C3C19800837240080909800087B +:100DC000331100081220000A8FA7001030FF010025 +:100DD00013E000A48FA300148C8600580066102333 +:100DE000044000043C0A8008AC8300588FA7001020 +:100DF0003C0A800835480080910900083124000829 +:100E00001480000224080003000040213C1F8008D9 +:100E100093F1001193F9001237E600808CCC005456 +:100E2000333800FF03087821322D00FF000F708057 +:100E300001AE282100AC582B1160006F00000000AB +:100E400094CA005C8CC900543144FFFF0125102373 +:100E50000082182B14600068000000008CCB005446 +:100E60000165182330EC00041180006C000830800C +:100E70008FA8001C0068102B1040006230ED0004A9 +:100E8000006610232C46008010C00002004088211C +:100E9000241100800E00164E024020213C0D8008D7 +:100EA00035A6008024070001ACC7000C90C80008DC +:100EB0000011484035A70100310C007FA0CC00088C +:100EC0008E05000424AB0001ACCB0030A4D1005C43 +:100ED0008CCA003C9602000E01422021ACC40020C6 +:100EE0008CC3003C0069F821ACDF001C8E190004A3 +:100EF000ACF900008E180008ACF800048FB10010A7 +:100F0000322F000855E0004793A60020A0C0004EF5 +:100F100090D8004E2411FFDFA0F8000890CF000801 +:100F200001F17024A0CE00088E0500083C0B80085B +:100F300035690080AD2500388D6A00148D2200309F +:100F40002419005001422021AD24003491230000D7 +:100F5000307F00FF13F90036264F01000E001658AF +:100F60000240202124040038000028210E0016F23F +:100F70002406000A0A001757240400010E000D2859 +:100F8000000020218FBF00348FB200308FB1002CC1 +:100F90008FB00028004020210080102103E00008CD +:100FA00027BD00388E0E00083C0F800835F0008009 +:100FB000AE0E005402402021AE0000300E00164E4E +:100FC00000000000920D00250240202135AC0020D9 +:100FD0000E001658A20C00250E000CAC0240202179 +:100FE000240400382405008D0E0016F22406001299 +:100FF0000A0017572404000194C5005C0A001792E8 +:1010000030A3FFFF2407021811A0FF9E00E6102363 +:101010008FAE001C0A00179A01C610230A0017970A +:101020002C620218A0E600080A0017C48E0500080A +:101030002406FF8001E6C0243C118000AE38002861 +:101040008E0D000831E7007F3C0E800C00EE602121 +:10105000AD8D00E08E080008AF8C00380A0017D074 +:10106000AD8800E4AC800058908500082403FFF7A9 +:1010700000A33824A08700080A0017758FA7001066 +:101080003C05080024A560A83C04080024846FF4F3 +:101090003C020800244260B0240300063C01080121 +:1010A000AC2596C03C010801AC2496C43C01080163 +:1010B000AC2296C83C010801A02396CC03E00008AE +:1010C0000000000003E00008240200013C02800050 +:1010D000308800FF344701803C0680008CC301B893 +:1010E0000460FFFE000000008CC501282418FF806A +:1010F0003C0D800A24AF010001F8702431EC007F20 +:10110000ACCE0024018D2021ACE50000948B00EAD8 +:101110003509600024080002316AFFFFACEA0004D0 +:1011200024020001A4E90008A0E8000BACE00024C0 +:101130003C071000ACC701B8AF84003803E00008DA +:10114000AF85006C938800488F8900608F820038DB +:1011500030C600FF0109382330E900FF01221821C1 +:1011600030A500FF2468008810C000020124382147 +:101170000080382130E400031480000330AA00030B +:101180001140000D312B000310A0000900001021B8 +:1011900090ED0000244E000131C200FF0045602B9D +:1011A000A10D000024E700011580FFF925080001CA +:1011B00003E00008000000001560FFF300000000DD +:1011C00010A0FFFB000010218CF80000245900043F +:1011D000332200FF0045782BAD18000024E70004FF +:1011E00015E0FFF92508000403E0000800000000F6 +:1011F00093850048938800588F8700600004320070 +:101200003103007F00E5102B30C47F001040000F39 +:10121000006428258F8400383C0980008C8A00EC0B +:10122000AD2A00A43C03800000A35825AC6B00A0AD +:101230008C6C00A00580FFFE000000008C6D00ACEF +:10124000AC8D00EC03E000088C6200A80A00188254 +:101250008F840038938800593C0280000080502120 +:10126000310300FEA383005930ABFFFF30CC00FFF9 +:1012700030E7FFFF344801803C0980008D2401B82D +:101280000480FFFE8F8D006C24180016AD0D000049 +:101290008D2201248F8D0038AD0200048D5900206D +:1012A000A5070008240201C4A119000AA118000B17 +:1012B000952F01208D4E00088D4700049783005C18 +:1012C0008D59002401CF302100C7282100A32023FD +:1012D0002418FFFFA504000CA50B000EA5020010AA +:1012E000A50C0012AD190018AD18002495AF00E848 +:1012F0003C0B10002407FFF731EEFFFFAD0E002876 +:101300008DAC0084AD0C002CAD2B01B88D460020B7 +:1013100000C7282403E00008AD4500208F8800386E +:101320000080582130E7FFFF910900D63C02800081 +:1013300030A5FFFF312400FF00041A00006750258C +:1013400030C600FF344701803C0980008D2C01B875 +:101350000580FFFE8F82006C240F0017ACE20000B6 +:101360008D390124ACF900048D780020A4EA00082E +:10137000241901C4A0F8000AA0EF000B9523012056 +:101380008D6E00088D6D00049784005C01C35021B0 +:10139000014D602101841023A4E2000CA4E5000E9D +:1013A000A4F90010A4E60012ACE000148D7800242B +:1013B000240DFFFFACF800188D0F007CACEF001C73 +:1013C0008D0E00783C0F1000ACEE0020ACED002438 +:1013D000950A00BE240DFFF73146FFFFACE600285A +:1013E000950C00809504008231837FFF0003CA00C2 +:1013F0003082FFFF0322C021ACF8002CAD2F01B8D2 +:10140000950E00828D6A002000AE3021014D282407 +:10141000A506008203E00008AD6500203C028000C4 +:10142000344501803C0480008C8301B80460FFFED9 +:101430008F8A0044240600199549001C3128FFFFBB +:10144000000839C0ACA70000A0A6000B3C051000A6 +:1014500003E00008AC8501B88F87004C0080402174 +:1014600030C400FF3C0680008CC201B80440FFFE7F +:101470008F89006C9383006834996000ACA90000E8 +:10148000A0A300058CE20010240F00022403FFF744 +:10149000A4A20006A4B900088D180020A0B8000A74 +:1014A000A0AF000B8CEE0000ACAE00108CED000481 +:1014B000ACAD00148CEC001CACAC00248CEB002018 +:1014C000ACAB00288CEA002C3C071000ACAA002C26 +:1014D0008D090024ACA90018ACC701B88D05002007 +:1014E00000A3202403E00008AD0400208F8600380C +:1014F00027BDFFE0AFB10014AFBF0018AFB00010C0 +:1015000090C300D430A500FF3062002010400008D6 +:10151000008088218CCB00D02409FFDF256A0001E0 +:10152000ACCA00D090C800D401093824A0C700D4A8 +:1015300014A000403C0C80008F840038908700D4B9 +:101540002418FFBF2406FFEF30E3007FA08300D400 +:10155000979F005C8F8200608F8D003803E2C82364 +:10156000A799005CA5A000BC91AF00D401F870243D +:10157000A1AE00D48F8C0038A18000D78F8A0038AC +:10158000A5400082AD4000EC914500D400A658244F +:10159000A14B00D48F9000348F8400609786005C4C +:1015A0000204282110C0000FAF850034A38000582A +:1015B0003C0780008E2C000894ED01208E2B000447 +:1015C000018D5021014B8021020620233086FFFF30 +:1015D00030C8000F3909000131310001162000091F +:1015E000A3880058938600488FBF00188FB100145D +:1015F0008FB0001027BD0020AF85006403E0000815 +:10160000AF86006000C870238FBF00189386004823 +:101610008FB100148FB0001034EF0C00010F28219F +:1016200027BD0020ACEE0084AF85006403E0000815 +:10163000AF86006035900180020028210E00190F4E +:10164000240600828F840038908600D430C5004084 +:1016500050A0FFBAA38000688F85004C3C06800034 +:101660008CCD01B805A0FFFE8F89006C2408608234 +:1016700024070002AE090000A6080008A207000B1C +:101680008CA300083C0E1000AE0300108CA2000CCE +:10169000AE0200148CBF0014AE1F00188CB90018E5 +:1016A000AE1900248CB80024AE1800288CAF002896 +:1016B000AE0F002CACCE01B80A001948A380006818 +:1016C0008F8A003827BDFFE0AFB10014AFB0001023 +:1016D0008F880060AFBF00189389003C954200BC22 +:1016E00030D100FF0109182B0080802130AC00FFB1 +:1016F0003047FFFF0000582114600003310600FF4F +:1017000001203021010958239783005C0068202BB9 +:101710001480002700000000106800562419000102 +:101720001199006334E708803165FFFF0E0018C08F +:10173000020020218F83006C3C07800034E601808A +:101740003C0580008CAB01B80560FFFE240A001840 +:101750008F840038ACC30000A0CA000B948900BE7F +:101760003C081000A4C90010ACC00030ACA801B8FF +:101770009482008024430001A4830080949F008011 +:101780003C0608008CC6318833EC7FFF1186005E72 +:101790000000000002002021022028218FBF001835 +:1017A0008FB100148FB000100A00193427BD00203B +:1017B000914400D42403FF8000838825A15100D4E4 +:1017C0009784005C3088FFFF51000023938C003C1D +:1017D0008F8500382402EFFF008B782394AE00BC85 +:1017E0000168502B31E900FF01C26824A4AD00BCA0 +:1017F00051400039010058213C1F800037E60100AC +:101800008CD800043C190001031940245500000144 +:1018100034E740008E0A00202403FFFB241100015E +:1018200001432024AE0400201191002D34E78000F4 +:1018300002002021012030210E0018C03165FFFF79 +:101840009787005C8F890060A780005C0127802358 +:10185000AF900060938C003C8F8B00388FBF0018D6 +:101860008FB100148FB0001027BD002003E00008E6 +:10187000A16C00D73C0D800035AA01008D48000402 +:101880003C0900010109282454A0000134E740006C +:101890008E0F00202418FFFB34E7800001F870242D +:1018A00024190001AE0E00201599FF9F34E708802F +:1018B000020020210E00188E3165FFFF020020215A +:1018C000022028218FBF00188FB100148FB00010A4 +:1018D0000A00193427BD00200A0019F7000048212A +:1018E00002002021012030210E00188E3165FFFFFB +:1018F0009787005C8F890060A780005C01278023A8 +:101900000A001A0EAF900060948C0080241F8000A3 +:10191000019F3024A4860080908B0080908F0080EF +:10192000316700FF0007C9C20019C027001871C045 +:1019300031ED007F01AE2825A08500800A0019DF67 +:1019400002002021938500682403000127BDFFE8E1 +:1019500000A330042CA20020AFB00010AFBF0014D1 +:1019600000C01821104000132410FFFE3C0708009F +:101970008CE7319000E610243C088000350501809A +:1019800014400005240600848F890038240A0004CE +:101990002410FFFFA12A00FC0E00190F0000000018 +:1019A000020010218FBF00148FB0001003E0000868 +:1019B00027BD00183C0608008CC631940A001A574F +:1019C00000C310248F87004427BDFFE0AFB200188A +:1019D000AFB10014AFB00010AFBF001C30D000FF9B +:1019E00090E6000D00A088210080902130C5007F86 +:1019F000A0E5000D8F8500388E2300188CA200D042 +:101A00001062002E240A000E0E001A4AA38A0068F3 +:101A10002409FFFF104900222404FFFF5200002088 +:101A2000000020218E2600003C0C001000CC582421 +:101A3000156000393C0E000800CE682455A0003F18 +:101A4000024020213C18000200D880241200001F10 +:101A50003C0A00048F8700448CE200148CE30010E1 +:101A60008CE500140043F82303E5C82B1320000580 +:101A7000024020218E24002C8CF1001010910031A6 +:101A80000240202124020012A38200680E001A4A9C +:101A90002412FFFF105200022404FFFF0000202147 +:101AA0008FBF001C8FB200188FB100148FB00010D0 +:101AB0000080102103E0000827BD002090A800D47A +:101AC000350400200A001A80A0A400D400CA4824CB +:101AD0001520000B8F8B00448F8D00448DAC0010BF +:101AE0001580000B024020218E2E002C51C0FFECEF +:101AF00000002021024020210A001A9B2402001726 +:101B00008D66001050C0FFE6000020210240202119 +:101B10000A001A9B24020011024020212402001511 +:101B20000E001A4AA3820068240FFFFF104FFFDC4B +:101B30002404FFFF0A001A8A8E2600000A001AC138 +:101B4000240200143C08000400C8382450E0FFD4EC +:101B500000002021024020210A001A9B24020013C9 +:101B60008F85003827BDFFD8AFB3001CAFB2001877 +:101B7000AFB10014AFB00010AFBF002090A700D4E9 +:101B80008F90004C2412FFFF34E2004092060000C8 +:101B9000A0A200D48E0300100080982110720006CD +:101BA00030D1003F2408000D0E001A4AA3880068B7 +:101BB000105200252404FFFF8F8A00388E09001878 +:101BC0008D4400D01124000702602021240C000E57 +:101BD0000E001A4AA38C0068240BFFFF104B001A5A +:101BE0002404FFFF24040020122400048F8D0038F9 +:101BF00091AF00D435EE0020A1AE00D48F85005403 +:101C000010A00019000000001224004A8F9800382C +:101C10008F92FCC0971000809651000A5230004805 +:101C20008F9300403C1F08008FFF318C03E5C82BC9 +:101C30001720001E02602021000028210E0019A993 +:101C400024060001000020218FBF00208FB3001C5C +:101C50008FB200188FB100148FB0001000801021D7 +:101C600003E0000827BD00285224002A8E05001436 +:101C70008F840038948A008025490001A48900805F +:101C8000948800803C0208008C42318831077FFF35 +:101C900010E2000E00000000026020210E00193446 +:101CA000240500010A001B0B000020212402002D46 +:101CB0000E001A4AA38200682403FFFF1443FFE1C9 +:101CC0002404FFFF0A001B0C8FBF002094990080A2 +:101CD000241F800024050001033FC024A498008035 +:101CE00090920080908E0080325100FF001181C2DE +:101CF00000107827000F69C031CC007F018D582576 +:101D0000A08B00800E001934026020210A001B0BFA +:101D1000000020212406FFFF54A6FFD68F84003840 +:101D2000026020210E001934240500010A001B0B5B +:101D300000002021026020210A001B252402000A45 +:101D40002404FFFD0A001B0BAF9300608F8800384E +:101D500027BDFFE8AFB00010AFBF0014910A00D458 +:101D60008F87004C00808021354900408CE60010B0 +:101D7000A10900D43C0208008C4231B030C53FFFBD +:101D800000A2182B106000078F850050240DFF80E3 +:101D900090AE000D01AE6024318B00FF156000088D +:101DA0000006C382020020212403000D8FBF00140F +:101DB0008FB0001027BD00180A001A4AA3830068DC +:101DC00033060003240F000254CFFFF70200202146 +:101DD00094A2001C8F85003824190023A4A200E8D7 +:101DE0008CE8000000081E02307F003F13F9003528 +:101DF0003C0A00838CE800188CA600D0110600086D +:101E0000000000002405000E0E001A4AA385006899 +:101E10002407FFFF104700182404FFFF8F850038B8 +:101E200090A900D435240020A0A400D48F8C0044B5 +:101E3000918E000D31CD007FA18D000D8F83005458 +:101E40001060001C020020218F8400508C9800102C +:101E50000303782B11E0000D241900180200202143 +:101E6000A39900680E001A4A2410FFFF10500002C8 +:101E70002404FFFF000020218FBF00148FB000104A +:101E80000080102103E0000827BD00188C86001098 +:101E90008F9F00440200202100C31023AFE20010F6 +:101EA000240500010E0019A9240600010A001B9751 +:101EB000000020210E001934240500010A001B97A0 +:101EC00000002021010A5824156AFFD98F8C004494 +:101ED000A0A600FC0A001B84A386005A30A500FFC0 +:101EE0002406000124A9000100C9102B1040000C99 +:101EF00000004021240A000100A61823308B0001B5 +:101F000024C60001006A3804000420421160000267 +:101F100000C9182B010740251460FFF800A61823FC +:101F200003E000080100102127BDFFD8AFB0001862 +:101F30008F90004CAFB1001CAFBF00202403FFFF07 +:101F40002411002FAFA30010920600002405000802 +:101F500026100001006620260E001BB0308400FF12 +:101F600000021E003C021EDC34466F410A001BD8F2 +:101F70000000102110A00009008018212445000154 +:101F800030A2FFFF2C4500080461FFFA0003204047 +:101F90000086202614A0FFF9008018210E001BB037 +:101FA000240500208FA300102629FFFF313100FFF8 +:101FB00000034202240700FF1627FFE20102182651 +:101FC00000035027AFAA0014AFAA00100000302170 +:101FD00027A8001027A7001400E6782391ED00033E +:101FE00024CE000100C8602131C600FF2CCB0004C4 +:101FF0001560FFF9A18D00008FA200108FBF002097 +:102000008FB1001C8FB0001803E0000827BD002826 +:1020100027BDFFD0AFB3001CAFB00010AFBF00288A +:10202000AFB50024AFB40020AFB20018AFB10014B8 +:102030003C0C80008D880128240FFF803C06800A1C +:1020400025100100250B0080020F68243205007F57 +:10205000016F7024AD8E009000A62821AD8D002464 +:1020600090A600FC3169007F3C0A8004012A1821F7 +:10207000A386005A9067007C00809821AF830030CF +:1020800030E20002AF88006CAF85003800A0182154 +:10209000144000022404003424040030A3840048C7 +:1020A0008C7200DC30D100FF24040004AF92006089 +:1020B00012240004A38000688E7400041680001EA1 +:1020C0003C0880009386005930C7000110E0000FE3 +:1020D0008F9300608CB000848CA800842404FF805F +:1020E000020410240002F940310A007F03EA482567 +:1020F0003C0C2000012C902530CD00FE3C038000DC +:10210000AC720830A38D00598F9300608FBF0028F8 +:102110008FB50024ACB300DC8FB400208FB3001C5B +:102120008FB200188FB100148FB00010240200018C +:1021300003E0000827BD00308E7F000895020120D3 +:102140008E67001003E2C8213326FFFF30D8000F4E +:1021500033150001AF87003416A00058A39800582B +:1021600035090C000309382100D81823AD03008479 +:10217000AF8700648E6A00043148FFFF1100007EC3 +:10218000A78A005C90AC00D42407FF8000EC3024C8 +:1021900030CB00FF1560004B9786005C938E005A91 +:1021A000240D000230D5FFFF11CD02A20000A021B6 +:1021B0008F85006002A5802B160000BC9388004824 +:1021C0003C11800096240120310400FF1485008812 +:1021D0008F8400648F9800343312000356400085CA +:1021E00030A500FF8F900064310C00FF24060034FE +:1021F00011860095AF90004C9204000414800118E1 +:102200008F8E0038A380003C8E0D00048DC800D84E +:102210003C0600FF34CCFFFF01AC30240106182B34 +:1022200014600120AF8600548F8700609798005C8F +:10223000AF8700400307402310C000C7A788005C99 +:102240008F91003030C3000300035823922A007C92 +:102250003171000302261021000A20823092000111 +:102260000012488000492821311FFFFF03E5C82BD9 +:10227000132001208F8800388F8500348F880064F8 +:102280001105025A3C0E3F018E0600003C0C250051 +:1022900000CE682411AC01638F84004C30E500FF50 +:1022A0000E00184A000030218F8800388F870060A8 +:1022B0008F8500340A001DB78F8600540A001C5613 +:1022C000AF87006490A400D400E48024320200FFB1 +:1022D000104000169386005990A6008890AE00D753 +:1022E00024A8008830D4003F2686FFE02CD10020AF +:1022F000A38E003C1220000CAF88004C240B000180 +:1023000000CB20043095001916A0012B3C0680005C +:1023100034CF0002008FC0241700022E3099002015 +:1023200017200234000000009386005930CB0001D2 +:102330001160000F9788005C8CBF00848CA900841A +:10234000240AFF8003EA6024000C19403132007F28 +:10235000007238253C0D200000EDC82530D800FE65 +:102360003C0F8000ADF90830A39800599788005CB5 +:102370001500FF84000000008E630020306200041E +:102380001040FF51938600592404FFFB0064802411 +:102390003C038000AE700020346601808C7301B86D +:1023A0000660FFFE8F98006C347501003C1400013C +:1023B000ACD800008C6B012424076085ACCB0004F2 +:1023C0008EAE000401D488245220000124076083CB +:1023D00024190002A4C700083C0F1000A0D9000B6C +:1023E0003C068000ACCF01B80A001C2B9386005934 +:1023F00030A500FF0E00184A240600018F88006CEB +:102400003C05800034A90900250201889388004812 +:10241000304A0007304B00783C0340802407FF809F +:102420000163C825014980210047F824310C00FFD1 +:1024300024060034ACBF0800AF90004CACB90810C3 +:102440005586FF6E920400048F8400388E11003090 +:10245000908E00D431CD001015A000108F83006045 +:102460002C6F000515E000E400000000909800D4F7 +:102470002465FFFC331200101640000830A400FF52 +:102480008F9F00648F99003413F90004388700018E +:1024900030E20001144001C8000000000E001BC320 +:1024A000000000000A001DF8000000008F84006496 +:1024B00030C500FF0E00184A24060001939800481A +:1024C000240B0034130B00A08F8500388F8600602A +:1024D0009783005C306EFFFF00CE8823AF910060D1 +:1024E000A780005C1280FF90028018212414FFFD59 +:1024F0005474FFA28E6300208E6A00042403FFBF81 +:102500002408FFEF0155F823AE7F000490AC00D4FF +:102510003189007FA0A900D48E7200208F8F0038EF +:10252000A780005C364D0002AE6D0020A5E000BC27 +:1025300091E500D400A3C824A1F900D48F950038F8 +:10254000AEA000EC92B800D403085824A2AB00D48B +:102550000A001CD78F8500388F910034AF8000604F +:1025600002275821AF8B0034000020212403FFFFF5 +:10257000108301B48F8500388E0C00103C0D0800CC +:102580008DAD31B09208000031843FFF008D802B6B +:1025900012000023310D003F3C1908008F3931A88B +:1025A0008F9F006C000479802408FF80033F202166 +:1025B000008FC821938500590328F8243C06008029 +:1025C0003C0F800034D80001001F91403331007F60 +:1025D0008F8600380251502535EE0940332B0078A4 +:1025E000333000073C0310003C02800C017890253A +:1025F000020E48210143C0250222382134AE0001D9 +:10260000ADFF0804AF890050ADF20814AF87004455 +:10261000ADFF0028ACD90084ADF80830A38E005976 +:102620009383005A24070003106700272407000142 +:102630001467FFAC8F8500382411002311B1008589 +:1026400000000000240E000B026020210E001A4A38 +:10265000A38E00680040A0210A001D328F8500383B +:1026600002602021240B000C0E001A4AA38B006884 +:10267000240AFFFF104AFFBD2404FFFF8F8E00389D +:10268000A380003C8E0D00048DC800D83C0600FFDE +:1026900034CCFFFF01AC30240106182B1060FEE2A1 +:1026A000AF86005402602021241200190E001A4A3D +:1026B000A3920068240FFFFF104FFFAC2404FFFF1C +:1026C0000A001C838F86005425A3FFE02C74002091 +:1026D0001280FFDD240E000B000328803C1108014E +:1026E000263194B400B148218D2D000001A00008CE +:1026F000000000008F85003400A710219385003C66 +:10270000AF82003402251821A383003C951F00BC32 +:102710000226282137F91000A51900BC5240FF926B +:10272000AF850060246A0004A38A003C950900BCC0 +:1027300024A40004AF84006035322000A51200BC40 +:102740000A001D54000020218F8600602CC800055F +:102750001500FF609783005C3065FFFF00C5C8234C +:102760002F2F000511E00003306400FF24CDFFFC93 +:1027700031A400FF8F8900648F920034113200046D +:10278000389F000133EC0001158001380000000083 +:102790008F840038908700D434E60010A08600D4DF +:1027A0008F8500388F8600609783005CACA000ECBA +:1027B0000A001D2F306EFFFF8CB500848CB400849E +:1027C0003C04100002A7302400068940328E007FAE +:1027D000022E8025020410253C08800024050001FB +:1027E00002602021240600010E0019A9AD02083064 +:1027F0000A001CC38F8500388C8200EC1222FE7EFA +:102800000260202124090005A38900680E001A4AED +:102810002411FFFF1451FE782404FFFF0A001D5508 +:102820002403FFFF8F8F004C8F8800388DF8000045 +:10283000AD1800888DE70010AD0700988F87006005 +:102840000A001DB78F8600542406FFFF118600057D +:10285000000000000E001B4C026020210A001D8FAA +:102860000040A0210E001AD1026020210A001D8F15 +:102870000040A0218F90004C3C0208008C4231B0F7 +:102880008E110010322C3FFF0182282B10A0000C6B +:10289000240BFF808F85005090A3000D01637024EE +:1028A00031CA00FF1140000702602021001143825D +:1028B000310600032418000110D8010600000000B2 +:1028C000026020212403000D0E001A4AA383006831 +:1028D000004020218F8500380A001D320080A02191 +:1028E0008F90004C3C0A08008D4A31B08F85005013 +:1028F0008E0400100000A0218CB1001430823FFF34 +:10290000004A602B8CB200205180FFEE0260202133 +:1029100090B8000D240BFF800178702431C300FFB4 +:102920005060FFE80260202100044382310600036A +:1029300014C0FFE40260202194BF001C8F9900386E +:102940008E060028A73F00E88CAF0010022F20233E +:1029500014C4013A026020218F83005400C368210F +:10296000022D382B14E00136240200188F8A00440F +:102970008F820030024390218D4B00100163702341 +:10298000AD4E0010AD5200208C4C00740192282BEB +:1029900014A0015F026020218F8400508E08002463 +:1029A0008C86002411060007026020212419001CD7 +:1029B0000E001A4AA3990068240FFFFF104FFFC5AD +:1029C0002404FFFF8F8400448C87002424FF00012F +:1029D000AC9F00241251012F8F8D00308DB10074F7 +:1029E0001232012C3C0B00808E0E000001CB5024D3 +:1029F00015400075000000008E0300142411FFFF35 +:102A0000107100073C0808003C0608008CC6319095 +:102A100000C8C0241300015202602021A380006876 +:102A20008E0300003C19000100792024108000135F +:102A30003C1F0080007FA02416800009020028218E +:102A4000026020212411001A0E001A4AA391006886 +:102A50002407FFFF1047FF9F2404FFFF02002821E7 +:102A6000026020210E001A6A240600012410FFFFD4 +:102A70001050FF982404FFFF241400018F8D0044A0 +:102A8000026020210280302195A900342405000134 +:102A9000253200010E0019A9A5B200340000202142 +:102AA0008F8500380A001D320080A0218F90004CD5 +:102AB0003C1408008E9431B08E07001030E53FFFC3 +:102AC00000B4C82B132000618F8600502412FF80B1 +:102AD00090C9000D0249682431A400FF5080005CB9 +:102AE000026020218F8C00541180000700078B8228 +:102AF0008F8500388F82FCC094BF0080944A000A02 +:102B0000515F00F78F8600403227000314E0006415 +:102B100000000000920E000211C000D8000000006A +:102B20008E0B0024156000D902602021920400035E +:102B300024190002308500FF14B90005308900FF18 +:102B40008F940054128000EA240D002C308900FF7D +:102B5000392C00102D8400012D3200010244302553 +:102B6000020028210E001A6A026020212410FFFFB3 +:102B7000105000BF8F8500388F830054106000D341 +:102B8000240500013C0A08008D4A318C0143F82BD2 +:102B900017E000B22402002D02602021000028214D +:102BA0000E0019A9240600018F85003800001821A5 +:102BB0000A001D320060A0210E0018750000000000 +:102BC0000A001DF800000000AC8000200A001E78FA +:102BD0008E03001400002821026020210E0019A994 +:102BE000240600010A001CC38F8500380A001DB7A7 +:102BF0008F8800388CAA00848CAC00843C031000C1 +:102C00000147F824001F91403189007F024968255F +:102C100001A32825ACC50830910700012405000157 +:102C2000026020210E0019A930E600010A001CC331 +:102C30008F850038938F00482403FFFD0A001D3460 +:102C4000AF8F00600A001D342403FFFF02602021C3 +:102C50002410000D0E001A4AA390006800401821AD +:102C60008F8500380A001D320060A0210E00187503 +:102C7000000000009783005C8F86006000402021E8 +:102C80003070FFFF00D010232C4A00051140FE11C8 +:102C90008F850038ACA400EC0A001D2F306EFFFFBA +:102CA00090CF000D31E300085460FFA192040003AF +:102CB00002602021240200100E001A4AA38200683C +:102CC0002403FFFF5443FF9A920400030A001F12DB +:102CD0008F85003890A4000D308F000811E000951A +:102CE0008F990054572000A6026020218E1F000CEF +:102CF0008CB4002057F40005026020218E0D0008DE +:102D00008CA7002411A7003A026020212402002091 +:102D1000A38200680E001A4A2412FFFF1052FEED33 +:102D20002404FFFF8F9F00442402FFF73C14800E11 +:102D300093EA000D2419FF803C03800001423824EF +:102D4000A3E7000D8F9F00303C0908008D2931ACAE +:102D50008F8C006C97F200788F870044012C302113 +:102D6000324D7FFF000D204000C4782131E5007F07 +:102D700000B4C02101F94024AC68002CA711000068 +:102D80008CEB0028256E0001ACEE00288CEA002CAC +:102D90008E02002C01426021ACEC002C8E09002C2C +:102DA000ACE900308E120014ACF2003494ED003A1D +:102DB00025A40001A4E4003A97E600783C1108003D +:102DC0008E3131B024C3000130707FFF1211005CDE +:102DD000006030218F8F0030026020212405000127 +:102DE0000E001934A5E600780A001EA1000020217B +:102DF0008E0900142412FFFF1132006B8F8A0038F5 +:102E00008E0200188D4C00D0144C00650260202109 +:102E10008E0B00248CAE0028116E005B2402002172 +:102E20000E001A4AA38200681452FFBE2404FFFF5A +:102E30008F8500380A001D320080A0212402001F67 +:102E40000E001A4AA38200682409FFFF1049FEA160 +:102E50002404FFFF0A001E548F83005402602021C7 +:102E60000E001A4AA38200681450FF508F85003864 +:102E70002403FFFF0A001D320060A0218CD800242B +:102E80008E0800241118FF29026020210A001F2744 +:102E90002402000F8E0900003C05008001259024CB +:102EA0001640FF492402001A026020210E001A4A2F +:102EB000A3820068240CFFFF144CFECF2404FFFF04 +:102EC0008F8500380A001D320080A0210E001934C1 +:102ED000026020218F8500380A001EE500001821BD +:102EE0002403FFFD0060A0210A001D32AF860060B0 +:102EF000026020210E001A4AA38D00682403FFFF00 +:102F00001043FF588F8500380A001ECC920400033E +:102F10002418001D0E001A4AA39800682403FFFF1E +:102F20001443FE9D2404FFFF8F8500380A001D32E4 +:102F30000080A021026020210A001F3D24020024FD +:102F4000240880000068C024330BFFFF000B73C20D +:102F500031D000FF001088270A001F6E001133C017 +:102F6000240F001B0E001A4AA38F00681451FEACF8 +:102F70002404FFFF8F8500380A001D320080A02145 +:102F80000A001F3D240200278E0600288CA3002C77 +:102F900010C30008026020210A001F812402001FC4 +:102FA0000A001F812402000E026020210A001F81F6 +:102FB000240200258E04002C1080000D8F8F00301D +:102FC0008DE800740104C02B5700000C0260202122 +:102FD0008CB900140086A0210334282B10A0FF52C6 +:102FE0008F9F0044026020210A001F8124020022DA +:102FF000026020210A001F81240200230A001F8191 +:103000002402002627BDFFD8AFB3001CAFB10014C7 +:10301000AFBF0020AFB20018AFB000103C0280007C +:103020008C5201408C4B01483C048000000B8C0208 +:10303000322300FF317300FF8C8501B804A0FFFE2E +:1030400034900180AE1200008C8701442464FFF0AC +:10305000240600022C830013AE070004A61100080A +:10306000A206000BAE1300241060004F8FBF00209B +:10307000000448803C0A0801254A9534012A402171 +:103080008D04000000800008000000003C030800E0 +:103090008C6331A831693FFF00099980007280215B +:1030A000021370212405FF80264D0100264C00806C +:1030B0003C02800031B1007F3198007F31CA007F2F +:1030C0003C1F800A3C1980043C0F800C01C5202461 +:1030D00001A5302401853824014F1821AC46002475 +:1030E000023F402103194821AC470090AC4400281E +:1030F000AF830044AF880038AF8900300E0019005C +:10310000016080213C0380008C6B01B80560FFFEEC +:103110008F8700448F8600383465018090E8000D69 +:10312000ACB20000A4B0000600082600000416039C +:1031300000029027001227C21080008124C200885C +:10314000241F6082A4BF0008A0A000052402000282 +:10315000A0A2000B8F8B0030000424003C08270045 +:1031600000889025ACB20010ACA00014ACA00024E4 +:10317000ACA00028ACA0002C8D6900382413FF807F +:10318000ACA9001890E3000D02638024320500FF13 +:1031900010A000058FBF002090ED000D31AC007F26 +:1031A000A0EC000D8FBF00208FB3001C8FB2001861 +:1031B0008FB100148FB000103C0A10003C0E80004C +:1031C00027BD002803E00008ADCA01B8265F010052 +:1031D0002405FF8033F8007F3C06800003E5782457 +:1031E0003C19800A03192021ACCF0024908E00D412 +:1031F00000AE682431AC00FF11800024AF84003899 +:10320000248E008895CD00123C0C08008D8C31A8CE +:1032100031AB3FFF01924821000B5180012A402130 +:1032200001052024ACC400283107007F3C06800C37 +:1032300000E620219083000D00A31024304500FFFC +:1032400010A0FFD8AF8400449098000D330F0010F9 +:1032500015E0FFD58FBF00200E0019000000000010 +:103260003C0380008C7901B80720FFFE00000000BD +:10327000AE1200008C7F0144AE1F0004A6110008AE +:1032800024110002A211000BAE1300243C1308010C +:10329000927396F0327000015200FFC38FBF00207E +:1032A0000E002146024020210A0020638FBF00202B +:1032B0003C1260008E452C083C03F0033462FFFF93 +:1032C00000A2F824AE5F2C088E582C083C1901C0CF +:1032D00003199825AE532C080A0020638FBF0020E5 +:1032E000264D010031AF007F3C10800A240EFF8084 +:1032F00001F0282101AE60243C0B8000AD6C00245D +:103300001660FFA8AF85003824110003A0B100FCAF +:103310000A0020638FBF002026480100310A007F89 +:103320003C0B800A2409FF80014B30210109202435 +:103330003C078000ACE400240A002062AF8600381D +:10334000944E0012320C3FFF31CD3FFF15ACFF7D94 +:10335000241F608290D900D42418FF800319782498 +:1033600031EA00FF1140FF7700000000240700044D +:10337000A0C700FC8F870044241160842406000D40 +:10338000A4B10008A0A600050A00204D24020002F6 +:103390003C040001248496DC24030014240200FE73 +:1033A0003C010800AC2431EC3C010800AC2331E8BE +:1033B0003C010801A42296F83C040801248496F8F4 +:1033C0000000182100643021A0C300042463000120 +:1033D0002C6500FF54A0FFFC006430213C0708006E +:1033E00024E7010003E00008AF87007800A058211F +:1033F000008048210000102114A00012000050217C +:103400000A002142000000003C010801A42096F8B7 +:103410003C05080194A596F88F8200783C0C0801C1 +:10342000258C96F800E2182100AC2021014B302BAE +:10343000A089000400001021A460000810C0003919 +:10344000010048218F8600780009384000E94021BA +:103450000008388000E6282190A8000B90B9000AE7 +:103460000008204000881021000218800066C0215A +:10347000A319000A8F85007800E5782191EE000AF3 +:1034800091E6000B000E684001AE6021000C208028 +:1034900000851021A046000B3C030801906396F2C2 +:1034A000106000222462FFFF8F8300383C01080176 +:1034B000A02296F2906C00FF118000040000000032 +:1034C000906E00FF25CDFFFFA06D00FF3C190801A5 +:1034D000973996F8272300013078FFFF2F0F00FF60 +:1034E00011E0FFC9254A00013C010801A42396F818 +:1034F0003C05080194A596F88F8200783C0C0801E1 +:10350000258C96F800E2182100AC2021014B302BCD +:10351000A089000400001021A460000814C0FFC9A5 +:103520000100482103E000080000000003E000085B +:103530002402000227BDFFE0248501002407FF804C +:10354000AFB00010AFBF0018AFB1001400A718242F +:103550003C10800030A4007F3C06800A00862821B1 +:103560008E110024AE03002490A200FF1440000836 +:10357000AF850038A0A000098FBF0018AE1100244D +:103580008FB100148FB0001003E0000827BD0020A9 +:1035900090A900FD90A800FF312400FF0E0020F448 +:1035A000310500FF8F8500388FBF0018A0A00009EB +:1035B000AE1100248FB100148FB0001003E000089A +:1035C00027BD002027BDFFD0AFB20020AFB1001C47 +:1035D000AFB00018AFBF002CAFB40028AFB30024C9 +:1035E0003C0980009533011635320C00952F011AE5 +:1035F0003271FFFF023280218E08000431EEFFFF9E +:10360000248B0100010E6821240CFF8025A5FFFFFB +:10361000016C50243166007F3C07800AAD2A0024EB +:1036200000C73021AF850074AF8800703C010801ED +:10363000A02096F190C300090200D02100809821BB +:10364000306300FF2862000510400048AF86003854 +:10365000286400021480008E24140001240D00054B +:103660003C010801A02D96D590CC00FD3C0108013D +:10367000A02096D63C010801A02096D790CB000A46 +:10368000240AFF80318500FF014B4824312700FFC9 +:1036900010E0000C000058213C12800836510080D8 +:1036A0008E2F00308CD0005C01F0702305C0018E9D +:1036B0008F87007090D4000A3284007FA0C4000A73 +:1036C0008F8600383C118008363000808E0F003025 +:1036D0008F87007000EF702319C000EE000000001B +:1036E00090D4000924120002328400FF1092024795 +:1036F000000000008CC2005800E2F82327F9FFFF09 +:103700001B2001300000000090C5000924080004BF +:1037100030A300FF10680057240A00013C01080193 +:10372000A02A96D590C900FF252700013C01080179 +:10373000A02796D43C030801906396D52406000583 +:103740001066006A2C780005130000C40000902168 +:103750000003F8803C0408012484958003E4C82118 +:103760008F25000000A0000800000000241800FFC2 +:103770001078005C0000000090CC000A90CA00099C +:103780003C080801910896F13187008000EA48253D +:103790003C010801A02996DC90C500FD3C140801FD +:1037A000929496F2311100013C010801A02596DDAA +:1037B00090DF00FE3C010801A03F96DE90D200FFA2 +:1037C0003C010801A03296DF8CD900543C0108016D +:1037D000AC3996E08CD000583C010801AC3096E43E +:1037E0008CC3005C3C010801AC3496EC3C01080140 +:1037F000AC2396E8162000088FBF002C8FB4002859 +:103800008FB300248FB200208FB1001C8FB000183E +:1038100003E0000827BD00303C1180009624010E13 +:103820000E000FD43094FFFF3C0B08018D6B96F413 +:103830000260382102802821AE2B01803C13080150 +:103840008E7396D401602021240600830E00102F71 +:10385000AFB300108FBF002C8FB400288FB30024AB +:103860008FB200208FB1001C8FB0001803E0000859 +:1038700027BD00303C1808008F1831FC270F0001CD +:103880003C010800AC2F31FC0A0021D700000000E9 +:103890001474FFB900000000A0C000FF3C05080040 +:1038A0008CA531E43C0308008C6331E03C02080045 +:1038B0008C4232048F99003834A80001241F000282 +:1038C0003C010801AC2396F43C010801A02896F0C5 +:1038D0003C010801A02296F3A33F00090A002190B1 +:1038E0008F8600380E002146000000000A0021D714 +:1038F0008F8600383C1F080193FF96D424190001DD +:1039000013F902298F8700703C100801921096D895 +:103910003C06080190C696D610C000050200A02102 +:103920003C040801908496D9109001E48F870078B8 +:10393000001088408F9F0078023048210009C8801D +:10394000033F702195D80008270F0001A5CF00087C +:103950003C040801908496D93C05080190A596D6B0 +:103960000E0020F4000000008F8700780230202134 +:103970000004308000C720218C8500048F820074F1 +:1039800000A2402305020006AC8200048C8A0000DD +:103990008F830070014310235C400001AC83000062 +:1039A0008F86003890CB00FF2D6C00025580002DD3 +:1039B000241400010230F821001F40800107282153 +:1039C00090B9000B8CAE00040019C0400319782197 +:1039D000000F1880006710218C4D000001AE882375 +:1039E0002630FFFF5E00001F241400018C440004F9 +:1039F0008CAA0000008A482319200019240E000414 +:103A00003C010801A02E96D590AD000B8CAB0004B4 +:103A1000000D8840022D80210010108000471021E9 +:103A20008C44000401646023058202009443000872 +:103A300090DF00FE90B9000B33E500FF54B900049D +:103A40000107A021A0D400FE8F8700780107A021E4 +:103A50009284000B0E0020F4240500018F860038AC +:103A600024140001125400962E500001160000424A +:103A70003C08FFFF241900021659FF3F0000000018 +:103A8000A0C000FF8F860038A0D200090A0021D70D +:103A90008F86003890C700092404000230E300FF3D +:103AA0001064016F24090004106901528F880074AA +:103AB0008CCE0054010E682325B10001062001754B +:103AC000241800043C010801A03896D53C010801E7 +:103AD000A02096D490D400FD90D200FF2E4F00027B +:103AE00015E0FF14328400FF000438408F8900780D +:103AF00090DF00FF00E41021000220800089C8212F +:103B00002FE500029324000B14A0FF0A24070002F3 +:103B100000041840006480210010588001692821A9 +:103B20008CAC0004010C50230540FF020000000093 +:103B30003C030801906396D614600005246F0001D1 +:103B40003C010801A02496D93C010801A02796D782 +:103B50003C010801A02F96D690CE00FF24E700017B +:103B600031CD00FF01A7882B1220FFE990A4000BA4 +:103B70000A0021C6000000003C0508018CA596D46F +:103B80003C12000400A8F82413F2000624020005E9 +:103B90003C090801912996D5152000022402000352 +:103BA000240200053C010801A02296F190C700FF05 +:103BB00014E0012024020002A0C200090A0021D75B +:103BC0008F86003890CC00FF1180FEDA240A0001B5 +:103BD0008F8C00748F890078240F00030180682186 +:103BE0001160001E240E0002000540400105A021C6 +:103BF00000142080008990218E51000401918023BF +:103C00000600FECC000000003C020801904296D65F +:103C100014400005245800013C010801A02A96D751 +:103C20003C010801A02596D93C010801A03896D690 +:103C300090DF00FF010510210002C88033E500FF7E +:103C4000254A00010329202100AA402B1500FEB9B6 +:103C50009085000B1560FFE50005404000054040E1 +:103C600001051821000310803C010801A02A96D408 +:103C70003C010801A02596D8004918218C64000455 +:103C800000E4F82327F9FFFF1F20FFE900000000F0 +:103C90008C63000000E358230560013A01A38823E8 +:103CA00010E301170184C0231B00FEA200000000E6 +:103CB0003C010801A02E96D50A002305240B000123 +:103CC000240E0004A0CE00093C0D08008DAD31F893 +:103CD0008F86003825A200013C010800AC2231F893 +:103CE0000A0021D7000000008CD9005C00F9C02335 +:103CF0001F00FE7B000000008CDF005C10FFFF65F2 +:103D00008F8400748CC3005C008340232502000173 +:103D10001C40FF60000000008CC9005C248700018B +:103D200000E9282B10A0FE943C0D80008DAB01040F +:103D30003C0C0001016C50241140FE8F2402001045 +:103D40003C010801A02296F10A0021D700000000E2 +:103D50008F9100748F86003826220001ACC2005C6F +:103D60000A002292241400018F8700382404FF8067 +:103D70000000882190E9000A241400010124302564 +:103D8000A0E6000A3C05080190A596D63C0408016F +:103D9000908496D90E0020F4000000008F86003831 +:103DA0008F85007890C800FD310700FF0007404074 +:103DB0000107F821001FC0800305C8219323000BD1 +:103DC000A0C300FD8F8500788F8600380305602131 +:103DD000918F000B000F704001CF6821000D808093 +:103DE000020510218C4B0000ACCB00548D840004E4 +:103DF0008F83007400645023194000022482000164 +:103E00002462000101074821ACC2005C0009308037 +:103E100000C5402100E02021240500010E0020F40F +:103E20009110000B8F86003890C500FF10A0FF0C8A +:103E3000001070408F85007801D06821000D10803F +:103E4000004558218D6400008F8C0074018450233C +:103E50002547000104E0FF02263100013C03080170 +:103E6000906396D62E2F0002247800013C010801B1 +:103E7000A03896D63C010801A03496D711E0FEF890 +:103E8000020038210A002365000740408F84003873 +:103E90008F8300748C85005800A340230502FE9A8E +:103EA000AC8300580A00223B000000003C070801D8 +:103EB00090E796F2240200FF10E200BE8F860038E1 +:103EC0003C110801963196FA3C030801246396F8E8 +:103ED000262500013230FFFF30ABFFFF02036021D7 +:103EE0002D6A00FF1540008D918700043C010801F8 +:103EF000A42096FA8F88003800074840012728211F +:103F0000911800FF000530802405000127140001EE +:103F1000A11400FF3C120801925296F28F8800789B +:103F20008F8E0070264F000100C820213C0108013F +:103F3000A02F96F2AC8E00008F8D0074A48500082F +:103F4000AC8D00043C030801906396D414600077A4 +:103F5000000090213C010801A02596D4A087000B09 +:103F60008F8C007800CC5021A147000A8F82003846 +:103F7000A04700FD8F840038A08700FE8F860038A0 +:103F80008F9F0070ACDF00548F990074ACD900583B +:103F90008F8D00780127C02100185880016DA02165 +:103FA000928F000A000F704001CF18210003888013 +:103FB000022D8021A207000B8F8600780166602108 +:103FC000918A000B000A1040004A2021000428803A +:103FD00000A64021A107000A3C07800834E90080C0 +:103FE0008D2200308F860038ACC2005C0A0022921D +:103FF0002414000190CA00FF1540FEAD8F880074A4 +:10400000A0C400090A0021D78F860038A0C000FD97 +:104010008F98003824060001A30000FE3C0108012F +:10402000A02696D53C010801A02096D40A0021C6FE +:104030000000000090CB00FF3C040801908496F340 +:10404000316C00FF0184502B1540000F2402000347 +:1040500024020004A0C200090A0021D78F8600387C +:1040600090C3000A2410FF8002035824316C00FF23 +:104070001180FDC1000000003C010801A02096D580 +:104080000A0021C600000000A0C200090A0021D7D2 +:104090008F86003890D4000A2412FF8002544824EE +:1040A000312800FF1500FFF4240200083C0108013C +:1040B000A02296F10A0021D70000000000108840DD +:1040C0008F8B0070023018210003688001A7202127 +:1040D000AC8B00008F8A0074240C0001A48C0008B3 +:1040E000AC8A00043C05080190A596D62402000184 +:1040F00010A2FE1E24A5FFFF0A0022519084000B8F +:104100000184A0231A80FD8B000000003C010801FF +:10411000A02E96D50A002305240B00013C010801BE +:10412000A42596FA0A0023B78F880038240B0001D3 +:10413000106B00228F9800388F85003890BF00FFE9 +:1041400033F900FF1079002B000000003C1F08012C +:1041500093FF96D8001FC840033FC0210018A080DD +:104160000288782191EE000AA08E000A8F8D0078D7 +:104170003C030801906396D800CD88210A0023DD16 +:10418000A223000B263000010600003101A4902379 +:104190000640002B240200033C010801A02F96D505 +:1041A0000A002305240B00018F8900380A00223BF6 +:1041B000AD2700540A00229124120001931400FD3F +:1041C000A094000B8F8800388F8F0078910E00FE2E +:1041D00000CF6821A1AE000A8F910038A22700FD10 +:1041E0008F8300708F900038AE0300540A0023DEE6 +:1041F0008F8D007890B000FEA090000A8F8B003861 +:104200008F8C0078916A00FD00CC1021A04A000B31 +:104210008F840038A08700FE8F8600748F85003859 +:10422000ACA600580A0023DE8F8D007894B80008F1 +:10423000ACA40004030378210A002285A4AF00087F +:104240003C010801A02296D50A0021C6000000000A +:1042500090CF0009240D000431EE00FF11CDFD8543 +:10426000240200013C010801A02296D50A0021C6C3 +:1042700000000000080033440800334408003420E4 +:10428000080033F4080033D8080033280800332826 +:10429000080033280800334C8008010080080080A3 +:1042A000800800005F865437E4AC62CC50103A4579 +:1042B00036621985BF14C0E81BC27A1E84F4B55655 +:1042C000094EA6FE7DDA01E7C04D748108005A74DC +:1042D00008005AB808005A5C08005A5C08005A5C8A +:1042E00008005A5C08005A7408005A5C08005A5CBE +:1042F00008005AC008005A5C080059D408005A5CEB +:1043000008005A5C08005AC008005A5C08005A5C51 +:1043100008005A5C08005A5C08005A5C08005A5CA5 +:1043200008005A5C08005A5C08005A5C08005A5C95 +:1043300008005A9408005A5C08005A9408005A5C15 +:1043400008005A5C08005A5C08005A9808005A9401 +:1043500008005A5C08005A5C08005A5C08005A5C65 +:1043600008005A5C08005A5C08005A5C08005A5C55 +:1043700008005A5C08005A5C08005A5C08005A5C45 +:1043800008005A5C08005A5C08005A5C08005A5C35 +:1043900008005A5C08005A5C08005A5C08005A5C25 +:1043A00008005A9808005A9808005A5C08005A9861 +:1043B00008005A5C08005A5C08005A5C08005A5C05 +:1043C00008005A5C08005A5C08005A5C08005A5CF5 +:1043D00008005A5C08005A5C08005A5C08005A5CE5 +:1043E00008005A5C08005A5C08005A5C08005A5CD5 +:1043F00008005A5C08005A5C08005A5C08005A5CC5 +:1044000008005A5C08005A5C08005A5C08005A5CB4 +:1044100008005A5C08005A5C08005A5C08005A5CA4 +:1044200008005A5C08005A5C08005A5C08005A5C94 +:1044300008005A5C08005A5C08005A5C08005A5C84 +:1044400008005A5C08005A5C08005A5C08005A5C74 +:1044500008005A5C08005A5C08005A5C08005A5C64 +:1044600008005A5C08005A5C08005A5C08005A5C54 +:1044700008005A5C08005A5C08005A5C08005A5C44 +:1044800008005A5C08005A5C08005A5C08005A5C34 +:1044900008005A5C08005A5C08005A5C08005A5C24 +:1044A00008005A5C08005A5C08005A5C08005A5C14 +:1044B00008005A5C08005A5C08005A5C08005A5C04 +:1044C00008005A5C08005A5C08005A5C08005ADC74 +:1044D0000800782C08007A900800783808007628C0 +:1044E00008007838080078C4080078380800762872 +:1044F0000800762808007628080076280800762824 +:104500000800762808007628080076280800762813 +:1045100008007628080078580800784808007628AF +:1045200008007628080076280800762808007628F3 +:1045300008007628080076280800762808007628E3 +:1045400008007628080076280800762808007848B1 +:10455000080082FC08008188080082C40800818865 +:104560000800829408008070080081880800818813 +:1045700008008188080081880800818808008188F7 +:1045800008008188080081880800818808008188E7 +:104590000800818808008188080081B008008D34F7 +:1045A00008008E9008008E70080088D808008D4C96 +:1045B0000A00012400000000000000000000000DBF +:1045C000747061362E322E31620000000602010145 +:1045D00000000000000000000000000000000000DB +:1045E00000000000000000000000000000000000CB +:1045F00000000000000000000000000000000000BB +:1046000000000000000000000000000000000000AA +:10461000000000000000000000000000000000009A +:10462000000000000000000000000000000000008A +:10463000000000000000000000000000000000007A +:104640000000000010000003000000000000000D4A +:104650000000000D3C020800244217203C03080023 +:1046600024632A10AC4000000043202B1480FFFD7F +:10467000244200043C1D080037BD2FFC03A0F0219C +:104680003C100800261004903C1C0800279C1720B2 +:104690000E000262000000000000000D2402FF80F6 +:1046A00027BDFFE000821024AFB00010AF42002011 +:1046B000AFBF0018AFB10014936500043084007FD1 +:1046C000034418213C0200080062182130A5002094 +:1046D000036080213C080111277B000814A0000220 +:1046E0002466005C2466005892020004974301048B +:1046F000920400043047000F3063FFFF3084004015 +:10470000006728231080000900004821920200055C +:1047100030420004104000050000000010A000031B +:104720000000000024A5FFFC2409000492020005FB +:1047300030420004104000120000000010A00010E1 +:10474000000000009602000200A72021010440257D +:104750002442FFFEA7421016920300042402FF80A9 +:1047600000431024304200FF104000033C020400CC +:104770000A000174010240258CC20000AF421018EB +:104780008F4201780440FFFE2402000AA742014044 +:1047900096020002240400093042000700021023A0 +:1047A00030420007A7420142960200022442FFFE67 +:1047B000A7420144A740014697420104A74201488D +:1047C0008F420108304200205040000124040001C3 +:1047D00092020004304200101440000234830010A2 +:1047E00000801821A743014A0000000000000000DB +:1047F0000000000000000000AF48100000000000B2 +:104800000000000000000000000000008F421000C7 +:104810000441FFFE3102FFFF1040000700000000CE +:1048200092020004304200401440000300000000E7 +:104830008F421018ACC20000960200063042FFFF03 +:10484000244200020002104300021040036288214B +:10485000962200001120000D3044FFFF00A7102118 +:104860008F8300388F45101C0002108200021080D8 +:1048700000431021AC45000030A6FFFF0E00058D5F +:1048800000052C0200402021A62200009203000413 +:104890002402FF8000431024304200FF1040001F1C +:1048A0000000000092020005304200021040001B90 +:1048B000000000009742100C2442FFFEA742101691 +:1048C000000000003C02040034420030AF421000FF +:1048D00000000000000000000000000000000000D8 +:1048E0008F4210000441FFFE000000009742100CB0 +:1048F0008F45101C3042FFFF24420030000210821E +:1049000000021080005B1021AC45000030A6FFFFC4 +:104910000E00058D00052C02A62200009604000260 +:10492000248400080E0001E93084FFFF974401044D +:104930000E0001F73084FFFF8FBF00188FB1001405 +:104940008FB000103C02100027BD002003E00008DB +:10495000AF4201783084FFFF308200078F8500244A +:1049600010400002248300073064FFF800A41021E7 +:1049700030421FFF03421821247B4000AF850028EE +:10498000AF82002403E00008AF4200843084FFFFC0 +:104990003082000F8F85002C8F860034104000027B +:1049A0002483000F3064FFF000A410210046182B70 +:1049B000AF8500300046202314600002AF82002C37 +:1049C000AF84002C8F82002C340480000342182115 +:1049D00000641821AF83003803E00008AF42008074 +:1049E0008F820014104000088F8200048F82FFDC49 +:1049F000144000058F8200043C02FFBF3442FFFFD9 +:104A0000008220248F82000430430006240200022A +:104A10001062000F3C0201012C62000350400005AF +:104A2000240200041060000F3C0200010A00023062 +:104A30000000000010620005240200061462000C51 +:104A40003C0201110A000229008210253C020011DB +:104A500000821025AF421000240200010A0002303B +:104A6000AF82000C00821025AF421000AF80000C16 +:104A700000000000000000000000000003E000084B +:104A8000000000008F82000C1040000400000000B5 +:104A90008F4210000441FFFE0000000003E0000808 +:104AA000000000008F8200102443F800000231C291 +:104AB00024C2FFF02C6303011060000300021042C7 +:104AC0000A000257AC8200008F85001800C5102B29 +:104AD0001440000B0000182100C5102324470001DA +:104AE0008F82001C00A210212442FFFF0046102BE1 +:104AF000544000042402FFFF0A000257AC87000064 +:104B00002402FFFF0A000260AC8200008C820000D9 +:104B10000002194000621821000318800062182169 +:104B2000000318803C0208002442175C0062182130 +:104B300003E000080060102127BDFFD8AFBF0020B0 +:104B4000AFB1001CAFB000183C0460088C8250006C +:104B50002403FF7F3C066000004310243442380CDD +:104B6000AC8250008CC24C1C3C1A80000002160221 +:104B70003042000F10400007AF82001C8CC34C1C59 +:104B80003C02001F3442FC0000621824000319C2DA +:104B9000AF8300188F420008275B400034420001B9 +:104BA000AF420008AF8000243C02601CAF40008090 +:104BB000AF4000848C4500088CC308083402800094 +:104BC000034220212402FFF0006218243C020080EE +:104BD0003C010800AC2204203C025709AF84003895 +:104BE00014620004AF850034240200010A0002921E +:104BF000AF820014AF8000148F42000038420001E1 +:104C0000304200011440FFFC8F8200141040001657 +:104C10000000000097420104104000058F8300004F +:104C2000146000072462FFFF0A0002A72C62000A3A +:104C30002C620010504000048F83000024620001A9 +:104C4000AF8200008F8300002C62000A1440000332 +:104C50002C6200070A0002AEAF80FFDC10400002A9 +:104C600024020001AF82FFDC8F4301088F44010062 +:104C700030622000AF83000410400008AF840010B1 +:104C80003C0208008C42042C244200013C01080034 +:104C9000AC22042C0A00058A3C0240003065020068 +:104CA00014A0000324020F001482026024020D00ED +:104CB00097420104104002C83C02400030624000AC +:104CC000144000AD8F8200388C4400088F42017878 +:104CD0000440FFFE24020800AF42017824020008CD +:104CE000A7420140A7400142974201048F8400047B +:104CF0003051FFFF30820001104000070220802168 +:104D00002623FFFE240200023070FFFFA742014667 +:104D10000A0002DBA7430148A74001463C02080005 +:104D20008C42043C1440000D8F8300103082002020 +:104D30001440000224030009240300010060202124 +:104D40008F830010240209005062000134840004A3 +:104D5000A744014A0A0002F60000000024020F00E6 +:104D60001462000530820020144000062403000D68 +:104D70000A0002F524030005144000022403000980 +:104D800024030001A743014A3C0208008C4204208E +:104D90003C0400480E00020C004420250E000235A1 +:104DA000000000008F82000C1040003E0000000058 +:104DB0008F4210003C0300200043102410400039B3 +:104DC0008F820004304200021040003600000000D4 +:104DD000974210141440003300000000974210085E +:104DE0008F8800383042FFFF2442000600021882FC +:104DF0000003388000E83021304300018CC40000FB +:104E000010600004304200030000000D0A00033768 +:104E100000E81021544000103084FFFF3C05FFFFE4 +:104E200000852024008518260003182B0004102B71 +:104E300000431024104000050000000000000000A6 +:104E40000000000D00000000240002228CC20000BF +:104E50000A000336004520253883FFFF0003182B86 +:104E60000004102B00431024104000050000000037 +:104E7000000000000000000D000000002400022BD4 +:104E80008CC200003444FFFF00E81021AC44000055 +:104E90003C0208008C420430244200013C0108001E +:104EA000AC2204308F6200008F840038AF8200088B +:104EB0008C8300003402FFFF1462000F00001021F9 +:104EC0003C0508008CA504543C0408008C84045064 +:104ED00000B0282100B0302B008220210086202144 +:104EE0003C010800AC2504543C010800AC240450EB +:104EF0000A000580240400088C8200003042010072 +:104F00001040000F000010213C0508008CA5044C47 +:104F10003C0408008C84044800B0282100B0302BE9 +:104F200000822021008620213C010800AC25044C91 +:104F30003C010800AC2404480A0005802404000851 +:104F40003C0508008CA504443C0408008C84044003 +:104F500000B0282100B0302B0082202100862021C3 +:104F60003C010800AC2504443C010800AC2404408A +:104F70000A000580240400088F6200088F62000088 +:104F800000021602304300F02402003010620005D7 +:104F900024020040106200E08F8200200A00058891 +:104FA0002442000114A000050000000000000000E1 +:104FB0000000000D00000000240002568F4201781E +:104FC0000440FFFE000000000E00023D27A4001078 +:104FD0001440000500408021000000000000000D8A +:104FE000000000002400025D8E0200001040000559 +:104FF00000000000000000000000000D00000000A4 +:10500000240002608F62000C0443000324020001AC +:105010000A00042EAE000000AE0200008F820038AD +:105020008C480008A20000078F65000C8F64000404 +:1050300030A3FFFF0004240200852023308200FFFC +:105040000043102124420005000230832CC200815D +:10505000A605000A14400005A20400040000000098 +:105060000000000D00000000240002788F85003849 +:105070000E0005AB260400148F6200048F43010864 +:10508000A60200083C02100000621824106000080C +:105090000000000097420104920300072442FFEC45 +:1050A000346300023045FFFF0A0003C3A203000778 +:1050B000974201042442FFF03045FFFF96060008A6 +:1050C0002CC200135440000592030007920200070F +:1050D00034420001A20200079203000724020001EB +:1050E00010620005240200031062000B8F8200385A +:1050F0000A0003E030C6FFFF8F8200383C04FFFF48 +:105100008C43000C0064182400651825AC43000C87 +:105110000A0003E030C6FFFF3C04FFFF8C43001091 +:105120000064182400651825AC43001030C6FFFF4A +:1051300024C2000200021083A20200058F830038FF +:10514000304200FF00021080004328218CA800009C +:105150008CA2000024030004000217021443001272 +:1051600000000000974201043C03FFFF01031824E4 +:105170003042FFFF004610232442FFFE006240251C +:10518000ACA8000092030005306200FF000210800E +:1051900000501021904200143042000F00431021B3 +:1051A0000A000415A20200068CA400049742010420 +:1051B0009603000A3088FFFF3042FFFF00461023AD +:1051C0002442FFD60002140001024025ACA80004CE +:1051D000920200079204000524630028000318834C +:1051E0000064182134420004A2030006A202000752 +:1051F0008F8200042403FFFB34420002004310248A +:10520000AF820004920300068F87003800031880E5 +:10521000007010218C4400203C02FFF63442FFFF56 +:105220000082402400671821AE04000CAC68000C1A +:10523000920500063C03FF7F8E02000C00052880CB +:1052400000B020213463FFFF01033024948800263E +:1052500000A7282100431024AE02000CAC860020D9 +:10526000AC880024ACA8001024020010A742014022 +:1052700024020002A7400142A7400144A742014680 +:10528000974201043C0400082442FFFEA742014863 +:10529000240200010E00020CA742014A9603000AF4 +:1052A0009202000400431021244200023042000711 +:1052B00000021023304200070E000235AE0200103B +:1052C0008F6200003C0308008C6304442404001037 +:1052D000AF820008974201043042FFFF2442FFFEE4 +:1052E00000403821000237C33C0208008C420440D1 +:1052F000006718210067282B004610210045102167 +:105300003C010800AC2304443C010800AC220440EA +:105310000A0005150000000014A0000500000000B0 +:10532000000000000000000D000000002400030A3F +:105330008F4201780440FFFE000000000E00023D95 +:1053400027A4001414400005004080210000000044 +:105350000000000D00000000240003118E02000078 +:105360005440000692020007000000000000000DFB +:10537000000000002400031C9202000730420004D9 +:10538000104000058F8200042403FFFB344200021A +:1053900000431024AF8200048F620004044300081D +:1053A00092020007920200068E03000CAE0000007D +:1053B0000002108000501021AC4300209202000730 +:1053C00030420004544000099602000A920200058F +:1053D0003C03000100021080005010218C46001890 +:1053E00000C33021AC4600189602000A9206000461 +:1053F000277100080220202100C2302124C60005A8 +:10540000260500140E0005AB00063082920400064B +:105410008F6500043C027FFF000420800091202162 +:105420008C8300043442FFFF00A228240065182169 +:10543000AC8300049202000792040005920300046A +:10544000304200041040001496070008308400FF2A +:1054500000042080009120218C86000497420104E2 +:105460009605000A306300FF3042FFFF0043102121 +:105470000045102130E3FFFF004310232442FFD8F2 +:1054800030C6FFFF0002140000C23025AC860004C5 +:105490000A0004C992030007308500FF0005288038 +:1054A00000B128218CA4000097420104306300FF62 +:1054B0003042FFFF00431021004710233C03FFFF51 +:1054C000008320243042FFFF00822025ACA400008E +:1054D0009203000724020001106200060000000091 +:1054E0002402000310620011000000000A0004EC16 +:1054F0008E03001097420104920300049605000AEF +:105500008E24000C00431021004510212442FFF29C +:105510003C03FFFF008320243042FFFF0082202550 +:10552000AE24000C0A0004EC8E0300109742010424 +:10553000920300049605000A8E24001000431021F7 +:10554000004510212442FFEE3C03FFFF008320248E +:105550003042FFFF00822025AE2400108E03001091 +:105560002402000AA7420140A74301429603000A11 +:10557000920200043C04004000431021A742014471 +:10558000A740014697420104A742014824020001B6 +:105590000E00020CA742014A0E0002350000000076 +:1055A0008F6200009203000400002021AF820008F7 +:1055B000974201049606000A3042FFFF006218215C +:1055C000006028213C0308008C6304443C0208006E +:1055D0008C42044000651821004410210065382BDE +:1055E000004710213C010800AC2304443C010800A2 +:1055F000AC22044092040004008620212484000A86 +:105600003084FFFF0E0001E9000000009744010410 +:105610003084FFFF0E0001F7000000003C02100084 +:10562000AF4201780A0005878F820020148200278C +:105630003062000697420104104000673C024000BF +:105640003062400010400005000000000000000033 +:105650000000000D00000000240004208F420178AB +:105660000440FFFE24020800AF4201782402000833 +:10567000A7420140A74001428F82000497430104E2 +:1056800030420001104000073070FFFF2603FFFE8C +:1056900024020002A7420146A74301480A00053F31 +:1056A0002402000DA74001462402000DA742014A32 +:1056B0008F62000024040008AF8200080E0001E998 +:1056C000000000000A0005190200202110400042DD +:1056D0003C02400093620000304300F024020010BE +:1056E0001062000524020070106200358F820020D5 +:1056F0000A000588244200018F62000097430104DC +:105700003050FFFF3071FFFF8F4201780440FFFEF1 +:105710003202000700021023304200072403000A6F +:105720002604FFFEA7430140A7420142A7440144CB +:10573000A7400146A75101488F420108304200208E +:10574000144000022403000924030001A743014A76 +:105750000E00020C3C0400400E0002350000000068 +:105760003C0708008CE70444021110212442FFFE8C +:105770003C0608008CC604400040182100E3382194 +:10578000000010218F65000000E3402B00C2302193 +:105790002604000800C830213084FFFFAF850008D0 +:1057A0003C010800AC2704443C010800AC2604403E +:1057B0000E0001E9000000000A0005190220202166 +:1057C0000E00013B000000008F82002024420001F7 +:1057D000AF8200203C024000AF4201380A00029232 +:1057E000000000003084FFFF30C6FFFF00052C00E2 +:1057F00000A628253882FFFF004510210045282BF0 +:105800000045102100021C023042FFFF004310211E +:1058100000021C023042FFFF004310213842FFFF0C +:1058200003E000083042FFFF3084FFFF30A5FFFF98 +:1058300000001821108000070000000030820001E5 +:105840001040000200042042006518210A0005A152 +:105850000005284003E000080060102110C0000689 +:1058600024C6FFFF8CA2000024A50004AC82000027 +:105870000A0005AB2484000403E0000800000000D7 +:1058800010A0000824A3FFFFAC8600000000000069 +:10589000000000002402FFFF2463FFFF1462FFFAF0 +:1058A0002484000403E00008000000000000000160 +:1058B0000A00002A00000000000000000000000DA7 +:1058C000747870362E322E3162000000060201001C +:1058D00000000000000001360000EA600000000047 +:1058E00000000000000000000000000000000000B8 +:1058F00000000000000000000000000000000000A8 +:105900000000000000000000000000000000000097 +:105910000000001600000000000000000000000071 +:105920000000000000000000000000000000000077 +:105930000000000000000000000000000000000067 +:1059400000000000000000000000138800000000BC +:10595000000005DC00000000000000001000000353 +:10596000000000000000000D0000000D3C020800D7 +:1059700024423D683C0308002463401CAC40000006 +:105980000043202B1480FFFD244200043C1D08002E +:1059900037BD7FFC03A0F0213C100800261000A8B2 +:1059A0003C1C0800279C3D680E00044E00000000CF +:1059B0000000000D27BDFFB4AFA10000AFA200049E +:1059C000AFA30008AFA4000CAFA50010AFA6001451 +:1059D000AFA70018AFA8001CAFA90020AFAA0024F1 +:1059E000AFAB0028AFAC002CAFAD0030AFAE003491 +:1059F000AFAF0038AFB8003CAFB90040AFBC004417 +:105A0000AFBF00480E000591000000008FBF0048A6 +:105A10008FBC00448FB900408FB8003C8FAF003876 +:105A20008FAE00348FAD00308FAC002C8FAB0028D0 +:105A30008FAA00248FA900208FA8001C8FA7001810 +:105A40008FA600148FA500108FA4000C8FA3000850 +:105A50008FA200048FA1000027BD004C3C1B6004F6 +:105A60008F7A5030377B502803400008AF7A00000F +:105A70008F86003C3C0390003C0280000086282575 +:105A800000A32025AC4400203C0380008C6700204C +:105A900004E0FFFE0000000003E00008000000003A +:105AA0000A000070240400018F85003C3C04800043 +:105AB0003483000100A3102503E00008AC8200201D +:105AC00003E00008000010213084FFFF30A5FFFF35 +:105AD00010800007000018213082000110400002F1 +:105AE00000042042006518211480FFFB00052840B7 +:105AF00003E000080060102110C000070000000053 +:105B00008CA2000024C6FFFF24A50004AC82000084 +:105B100014C0FFFB2484000403E000080000000020 +:105B200010A0000824A3FFFFAC86000000000000C6 +:105B3000000000002402FFFF2463FFFF1462FFFA4D +:105B40002484000403E000080000000090AA003153 +:105B50008FAB00108CAC00403C0300FF8D6800044C +:105B6000AD6C00208CAD004400E060213462FFFF8A +:105B7000AD6D00248CA700483C09FF000109C0243A +:105B8000AD6700288CAE004C0182C824031978252B +:105B9000AD6F0004AD6E002C8CAD0038314A00FFB3 +:105BA000AD6D001C94A900323128FFFFAD680010D4 +:105BB00090A70030A5600002A1600004A16700006A +:105BC00090A30032306200FF0002198210600005CD +:105BD000240500011065000E0000000003E000082D +:105BE000A16A00018CD80028354A0080AD780018E1 +:105BF0008CCF0014AD6F00148CCE0030AD6E000859 +:105C00008CC4002CA16A000103E00008AD64000C04 +:105C10008CCD001CAD6D00188CC90014AD6900144A +:105C20008CC80024AD6800088CC70020AD67000C4C +:105C30008CC200148C8300700043C82B1320000713 +:105C4000000000008CC20014144CFFE400000000AF +:105C5000354A008003E00008A16A00018C820070D0 +:105C60000A0000E6000000009089003027BDFFF820 +:105C70008FA8001CA3A900008FA300003C0DFF808B +:105C800035A2FFFF8CAC002C00625824AFAB0000A3 +:105C9000A100000400C05821A7A000028D06000446 +:105CA00000A048210167C8218FA500000080502175 +:105CB0003C18FF7F032C20263C0E00FF2C8C00019B +:105CC000370FFFFF35CDFFFF3C02FF0000AFC824B8 +:105CD00000EDC02400C27824000C1DC003236825F9 +:105CE00001F87025AD0D0000AD0E00048D240024D8 +:105CF000AFAD0000AD0400088D2C00202404FFFF90 +:105D0000AD0C000C9547003230E6FFFFAD060010E9 +:105D10009145004830A200FF000219C25060000106 +:105D20008D240034AD0400148D4700388FAA00186C +:105D300027BD0008AD0B0028AD0A0024AD07001CEC +:105D4000AD00002CAD00001803E00008AD000020FD +:105D500027BDFFE0AFB20018AFB10014AFB0001024 +:105D6000AFBF001C9098003000C088213C0D00FFA0 +:105D7000330F007FA0CF0000908E003135ACFFFFC5 +:105D80003C0AFF00A0CE000194A6001EA220000441 +:105D90008CAB00148E29000400A08021016C282403 +:105DA000012A40240080902101052025A62600021A +:105DB000AE24000426050020262400080E000092D0 +:105DC00024060002924700302605002826240014ED +:105DD00000071E000003160324060004044000030D +:105DE0002403FFFF965900323323FFFF0E00009279 +:105DF000AE230010262400248FBF001C8FB2001891 +:105E00008FB100148FB00010240500030000302172 +:105E10000A00009C27BD002027BDFFD8AFB1001CA1 +:105E2000AFB00018AFBF002090A9003024020001DD +:105E300000E050213123003F00A040218FB00040FE +:105E40000080882100C04821106200148FA700380C +:105E5000240B000500A0202100C02821106B001396 +:105E6000020030210E000128000000009225007C75 +:105E700030A400021080000326030030AE00003082 +:105E8000260300348FBF00208FB1001C8FB0001894 +:105E90000060102103E0000827BD00280E0000A7C5 +:105EA000AFB000100A00016F000000008FA3003C9B +:105EB000010020210120282101403021AFA3001042 +:105EC0000E0000EEAFB000140A00016F00000000E9 +:105ED0003C06800034C20E008C4400108F850044C4 +:105EE000ACA400208C43001803E00008ACA30024FD +:105EF0003C06800034C20E008C4400148F850044A0 +:105F0000ACA400208C43001C03E00008ACA30024D8 +:105F10009382000C1040001B2483000F2404FFF028 +:105F20000064382410E00019978B00109784000E4D +:105F30009389000D3C0A601C0A0001AC01644023F7 +:105F400001037021006428231126000231C2FFFFE3 +:105F500030A2FFFF0047302B50C0000E00E4482164 +:105F60008D4D000C31A3FFFF00036400000C2C03D7 +:105F700004A1FFF30000302130637FFF0A0001A479 +:105F80002406000103E00008000000009784000ED2 +:105F900000E448213123FFFF3168FFFF0068382B00 +:105FA00054E0FFF8A783000E938A000D114000050E +:105FB000240F0001006BC023A380000D03E0000844 +:105FC000A798000E006BC023A38F000D03E000080C +:105FD000A798000E03E000080000000027BDFFE8BE +:105FE000AFB000103C10800036030140308BFFFF43 +:105FF00093AA002BAFBF0014A46B000436040E005C +:106000009488001630C600FF8FA90030A4680006EF +:10601000AC650008A0660012A46A001AAC670020F4 +:106020008FA5002CA4690018012020210E000198E2 +:10603000AC6500143C021000AE0201788FBF001462 +:106040008FB0001003E0000827BD00188F85000006 +:106050002484000727BDFFF83084FFF83C06800049 +:1060600094CB008A316AFFFFAFAA00008FA900001D +:10607000012540232507FFFF30E31FFF0064102B9D +:106080001440FFF700056882000D288034CC4000E2 +:1060900000AC102103E0000827BD00088F8200003B +:1060A0002486000730C5FFF800A2182130641FFFC6 +:1060B00003E00008AF8400008F87003C8F84004419 +:1060C00027BDFFB0AFB70044AFB40038AFB1002C6C +:1060D000AFBF0048AFB60040AFB5003CAFB300342F +:1060E000AFB20030AFB000283C0B80008C8600249B +:1060F000AD6700808C8A002035670E00356901008D +:10610000ACEA00108C8800248D2500040000B82122 +:10611000ACE800188CE3001000A688230000A02142 +:10612000ACE300148CE20018ACE2001C122000FE6C +:1061300000E0B021936C0008118000F40000000022 +:10614000976F001031EEFFFF022E682B15A000EFB5 +:1061500000000000977200103250FFFFAED0000028 +:106160003C0380008C740000329300081260FFFD35 +:106170000000000096D800088EC700043305FFFF1A +:1061800030B5000112A000E4000000000000000D86 +:1061900030BFA0402419004013F9011B30B4A00007 +:1061A000128000DF000000009373000812600008F6 +:1061B00000000000976D001031ACFFFF00EC202BB9 +:1061C0001080000330AE004011C000D50000000078 +:1061D000A7850040AF87003893630008022028217C +:1061E000AFB10020146000F527B40020AF60000CB0 +:1061F000978F004031F14000162000022403001662 +:106200002403000E24054007A363000AAF650014B1 +:10621000938A00428F70001431550001001512401E +:1062200002024825AF690014979F00408F78001440 +:1062300033F9001003194025AF680014979200400D +:106240003247000810E0016E000000008F67001464 +:106250003C1210003C11800000F27825AF6F001452 +:1062600036230E00946E000A3C0D81002406000EB9 +:1062700031CCFFFF018D2025AF640004A36600022E +:106280009373000A3406FFFC266B0004A36B000A1C +:1062900097980040330820001100015F00000000C3 +:1062A0003C05800034A90E00979900409538000CF9 +:1062B00097870040001940423312C00031030003A9 +:1062C00000127B0330F11000006F6825001172038B +:1062D00001AE6025000C20C0A76400129793004017 +:1062E000936A000A001359823175003C02AA1021FA +:1062F0002450003CA3700009953F000C33F93FFF88 +:10630000A779001097700012936900090130F821F5 +:1063100027E5000230B900070019C0233308000741 +:10632000A368000B9371000997720012976F001019 +:10633000322700FF8F910038978D004000F218211E +:10634000006F702101C6602131A6004010C0000519 +:106350003185FFFF00B1102B3C1280001040001768 +:10636000000098210225A82B56A0013E8FA50020F1 +:106370003C048000348A0E008D5300143C068000DB +:10638000AD5300108D4B001CAD4B0018AD45000007 +:106390008CCD000031AC00081180FFFD34CE0E0022 +:1063A00095C3000800A0882100009021A783004029 +:1063B0008DC6000424130001AF860038976F0010CB +:1063C00031F5FFFF8E9F000003F1282310A0011F6D +:1063D000AE85000093620008144000DD000000005C +:1063E0000E0001E7240400108F900048004028218F +:1063F0003C023200320600FF000654000142F8253C +:1064000026090001AF890048ACBF0000937900095C +:1064100097780012936F000A332800FF3303FFFFC1 +:106420000103382100076C0031EE00FF01AE60254A +:10643000ACAC00048F840048978B0040316A200088 +:106440001140010AACA4000897640012308BFFFFD2 +:1064500006400108ACAB000C978E004031C5000827 +:1064600014A0000226280006262800023C1F8000F7 +:1064700037E70E0094F900148CE5001C8F670004C8 +:10648000937800023324FFFF330300FFAFA3001013 +:106490008F6F0014AFA800180E0001CBAFAF00142F +:1064A000240400100E0001FB000000008E9200008A +:1064B00016400005000000008F7800142403FFBF81 +:1064C0000303A024AF7400148F67000C00F5C821EB +:1064D000AF79000C9375000816A0000800000000BA +:1064E00012600006000000008F6800143C0AEFFFF5 +:1064F0003549FFFE0109F824AF7F0014A37300089B +:106500008FA500200A00034F02202021AED10000F9 +:106510000A00022D3C03800014E0FF1E30BFA040A3 +:106520000E0001900000A0212E9100010237B0253D +:1065300012C000188FBF00488F87003C24170F003F +:1065400010F700D43C0680008CD901780720FFFEAC +:10655000241F0F0010FF00F634CA0E008D560014E1 +:1065600034C7014024080240ACF600048D49001CE9 +:106570003C141000ACE90008A0E00012A4E0001AEE +:10658000ACE00020A4E00018ACE80014ACD4017822 +:106590008FBF00488FB700448FB600408FB5003CD6 +:1065A0008FB400388FB300348FB200308FB1002C1D +:1065B0008FB0002803E0000827BD00508F910038FD +:1065C000978800403C1280000220A821310700403B +:1065D00014E0FF7C00009821977900108F9200381A +:1065E0003338FFFF131200A8000020210080A021F3 +:1065F000108000F300A088211620FECE00000000CD +:106600000A00031F2E9100013C0380008C62017878 +:106610000440FFFE240808008F860000AC68017863 +:106620003C038000946D008A31ACFFFF0186582343 +:10663000256AFFFF31441FFF2C8900081520FFF950 +:10664000000000008F8F0048347040008F83003CB2 +:1066500000E0A021240E0F0025E70001AF870048CD +:1066600000D03021023488233C08800031F500FF3F +:10667000106E0005240700019398004233130001B7 +:106680000013924036470001001524003C0A010027 +:10669000008A4825ACC900008F82004830BF003610 +:1066A00030B90008ACC200041320009900FF9825FF +:1066B00035120E009650000A8F8700003C0F8100B3 +:1066C0003203FFFF24ED000835060140006F60250E +:1066D0003C0E100031AB1FFF269200062405000E71 +:1066E000ACCC0020026E9825A4C5001AAF8B000028 +:1066F000A4D20018162000083C1080008F89003CAE +:1067000024020F00512200022417000136730040BA +:106710000E0001883C10800036060E008CCB001461 +:10672000360A014002402021AD4B00048CC5001CFC +:10673000AD450008A1550012AD5300140E0001989C +:106740003C151000AE1501780A000352000000004D +:10675000936F0009976E0012936D000B31E500FFF7 +:1067600000AE202131AC00FF008C80212602000AFF +:106770003050FFFF0E0001E7020020218F86004805 +:106780003C0341003C05800024CB0001AF8B004856 +:10679000936A00099769001230C600FF315F00FF5D +:1067A0003128FFFF03E8382124F900020006C40065 +:1067B0000319782501E37025AC4E00008F6D000CA5 +:1067C00034A40E00948B001401B26025AC4C00047C +:1067D0008C85001C8F670004936A00023164FFFF00 +:1067E000314900FFAFA900108F680014AFB1001845 +:1067F0000E0001CBAFA800140A0002FD0200202108 +:10680000AF600004A36000029798004033082000A6 +:106810001500FEA300003021A760001297840040FD +:10682000936B000A3C10800030931F0000135183CB +:10683000014BA82126A20028A362000936090E00F8 +:10684000953F000C0A000295A77F00108F7000147E +:10685000360900400E000188AF6900140A0002C921 +:10686000000000000A00034F000020210641FEFA4C +:10687000ACA0000C8CAC000C3C0D8000018D902570 +:106880000A0002EAACB2000C000090210A0002C526 +:1068900024130001128000073C028000344B0E00DC +:1068A0009566000830D300401260004900000000E7 +:1068B0003C0680008CD001780600FFFE34C50E0037 +:1068C00094B500103C03050034CC014032B8FFFF02 +:1068D00003039025AD92000C8CAF0014240D200012 +:1068E0003C041000AD8F00048CAE001CAD8E00087F +:1068F000A1800012A580001AAD800020A58000189C +:10690000AD8D0014ACC401780A0003263C0680005B +:106910008F9F0000351801402692000227F90008D9 +:1069200033281FFFA71200180A000391AF88000048 +:106930003C02800034450140ACA0000C1280001BDA +:1069400034530E0034510E008E370010ACB70004E3 +:106950008E2400183C0B8000ACA400083570014068 +:1069600024040040A20000128FBF0048A600001AB5 +:106970008FB70044AE0000208FB60040A60000187C +:106980008FB5003CAE0400148FB400388FB30034D0 +:106990008FB200308FB1002C8FB000283C02100065 +:1069A00027BD005003E00008AD6201788E66001438 +:1069B000ACA600048E64001C0A00042A3C0B800074 +:1069C0000E0001902E9100010A0003200237B0252D +:1069D000000000000000000D00000000240003691A +:1069E0000A0004013C06800027BDFFD8AFBF00208D +:1069F0003C0980003C1F20FFAFB200183C0760003C +:106A000035320E002402001037F9FFFDACE23008E9 +:106A1000AFB3001CAFB10014AFB00010AE5900000E +:106A20000000000000000000000000000000000066 +:106A3000000000003C1800FF3713FFFDAE530000BC +:106A40003C0B60048D7050002411FF7F3C0E00024F +:106A50000211782435EC380C35CD0109ACED4C1819 +:106A6000240A0009AD6C50008CE80438AD2A0008F7 +:106A7000AD2000148CE54C1C3106FFFF38C42F718B +:106A800000051E023062000F2486C0B310400007CC +:106A9000AF8200088CE54C1C3C09001F3528FC0027 +:106AA00000A81824000321C2AF8400048CF1080858 +:106AB0003C0F57092412F0000232702435F0001008 +:106AC00001D0602601CF68262DAA00012D8B000180 +:106AD000014B382550E00009A380000C3C1F601CCE +:106AE0008FF8000824190001A399000C33137C00CF +:106AF000A7930010A780000EA380000DAF80004870 +:106B000014C00003AF8000003C066000ACC0442C01 +:106B10000E0005B93C1080000E000F1A361101005E +:106B20003C12080026523DD03C13080026733E500C +:106B30008E03000038640001308200011440FFFC25 +:106B40003C0B800A8E2600002407FF8024C90240E7 +:106B5000312A007F014B402101272824AE06002066 +:106B6000AF880044AE0500243C048000AF86003CA2 +:106B70008C8C01780580FFFE24180800922F0008F5 +:106B8000AC980178A38F0042938E004231CD000172 +:106B900011A0000F24050D0024DFF8002FF90301D8 +:106BA0001320001C000629C224A4FFF00004104298 +:106BB000000231400E00020200D2D8213C02400007 +:106BC0003C068000ACC201380A0004A000000000AE +:106BD00010C50023240D0F0010CD00273C1F800896 +:106BE00037F9008093380000240E0050330F00FF67 +:106BF00015EEFFF33C0240000E000A3600000000D4 +:106C00003C0240003C068000ACC201380A0004A0EF +:106C1000000000008F83000400A3402B1500000B30 +:106C20008F8B0008006B50212547FFFF00E5482BA4 +:106C30001520000600A36023000C19400E0002027C +:106C40000073D8210A0004C43C0240000000000D7B +:106C50000E000202000000000A0004C43C024000D2 +:106C60003C1B0800277B3F500E0002020000000082 +:106C70000A0004C43C0240003C1B0800277B3F7014 +:106C80000E000202000000000A0004C43C024000A2 +:106C90003C0660043C09080025290104ACC9502CBD +:106CA0008CC850003C0580003C0200023507008083 +:106CB000ACC750003C040800248415A43C03080021 +:106CC0002463155CACA50008ACA2000C3C010800D4 +:106CD000AC243D603C010800AC233D6403E00008A7 +:106CE0002402000100A030213C1C0800279C3D68C4 +:106CF0003C0C04003C0B0002008B3826008C402624 +:106D00002CE200010007502B2D050001000A4880ED +:106D10003C03080024633D60004520250123182121 +:106D20001080000300001021AC6600002402000166 +:106D300003E00008000000003C1C0800279C3D68A0 +:106D40003C0B04003C0A0002008A3026008B3826E7 +:106D50002CC200010006482B2CE5000100094080F0 +:106D60003C03080024633D600045202501031821F1 +:106D700010800005000010213C0C0800258C155CDB +:106D8000AC6C00002402000103E0000800000000D9 +:106D90003C0900023C08040000883026008938269F +:106DA0002CC30001008028212CE400010083102561 +:106DB0001040000B000030213C1C0800279C3D685F +:106DC0003C0A80008D4E00082406000101CA682597 +:106DD000AD4D00088D4C000C01855825AD4B000CC5 +:106DE00003E0000800C010213C1C0800279C3D68FF +:106DF0003C0580008CA6000C000420272402000122 +:106E000000C4182403E00008ACA3000C3C020002FC +:106E10001082000B3C0560003C0704001087000353 +:106E20000000000003E00008000000008CA908D06A +:106E3000240AFFFD012A402403E00008ACA808D082 +:106E40008CA408D02406FFFE0086182403E0000866 +:106E5000ACA308D03C05601A34A600108CC3008097 +:106E600027BDFFF88CC50084AFA3000093A40000E9 +:106E70002402000110820003AFA5000403E0000813 +:106E800027BD000893A7000114E0001497AC00028E +:106E900097B800023C0F8000330EFFFC01CF682141 +:106EA000ADA50000A3A000003C0660008CC708D080 +:106EB0002408FFFE3C04601A00E82824ACC508D072 +:106EC0008FA300048FA200003499001027BD000892 +:106ED000AF22008003E00008AF2300843C0B800059 +:106EE000318AFFFC014B48218D2800000A00057DF6 +:106EF000AFA8000427BDFFE8AFBF00103C1C08008E +:106F0000279C3D683C0580008CA4000C8CA20004EA +:106F10003C0300020044282410A0000A00A3182407 +:106F20003C0604003C0400021460000900A6102482 +:106F30001440000F3C0404000000000D3C1C08003D +:106F4000279C3D688FBF001003E0000827BD001894 +:106F50003C0208008C423D600040F809000000003F +:106F60003C1C0800279C3D680A0005A68FBF001046 +:106F70003C0208008C423D640040F809000000001B +:106F80000A0005AC00000000000411C003E0000886 +:106F9000244202403C04080024843FB42405001A23 +:106FA0000A00009C0000302127BDFFE0AFB00010B8 +:106FB0003C108000AFBF0018AFB1001436110100C3 +:106FC000922200090E0005B63044007F8E3F00007B +:106FD0008F89003C3C0F008003E26021258800403F +:106FE0000049F821240DFF80310E00783198007897 +:106FF00035F9000135F100020319382501D1482582 +:10700000010D302403ED5824018D2824240A00406A +:1070100024040080240300C0AE0B0024AE0008103E +:10702000AE0A0814AE040818AE03081CAE05080426 +:10703000AE070820AE060808AE0908243609090084 +:107040009539000C3605098033ED007F3338FFFF9A +:10705000001889C0AE110800AE0F0828952C000C4E +:107060008FBF00188FB10014318BFFFF000B51C090 +:10707000AE0A002C8CA400508FB000108CA3003CF2 +:107080008D2700048CA8001C8CA600383C0E800ABA +:1070900001AE102127BD0020AF820044AF84005014 +:1070A000AF830054AF87004CAF88005C03E000085A +:1070B000AF8600603C09080091293FD924A800024E +:1070C0003C05110000093C0000E8302500C51825EA +:1070D00024820008AC83000003E00008AC800004B8 +:1070E0003C098000352309009128010B906A0011AA +:1070F0002402002800804821314700FF00A07021B1 +:1071000000C068213108004010E20002340C86DD26 +:10711000240C08003C0A800035420A9A944700007B +:10712000354B0A9C35460AA030F9FFFFAD39000007 +:107130008D780000354B0A8024040001AD3800042E +:107140008CCF0000AD2F00089165001930A300031B +:107150001064009028640002148000AF240500022F +:107160001065009E240F0003106F00B435450AA47B +:10717000240A0800118A0048000000005100003D68 +:107180003C0B80003C0480003483090090670012AF +:1071900030E200FF004D7821000FC8802724000155 +:1071A0003C0A8000354F090091E50019354C0980F3 +:1071B0008D87002830A300FF0003150000475825E5 +:1071C0000004C4003C19600001793025370806FF2F +:1071D000AD260000AD2800048DEA002C25280028EB +:1071E000AD2A00088DEC0030AD2C000C8DE500348C +:1071F000AD2500108DE400383C05800034AC093C1E +:10720000AD2400148DE3001CAD2300188DE7002091 +:10721000AD27001C8DE20024AD2200208DF900284E +:1072200034A20100AD3900248D830000AD0E0004AE +:1072300034B90900AD0300008C47000C250200148E +:10724000AD070008932B00123C04080090843FD83F +:10725000AD000010317800FF030D302100064F0013 +:1072600000047C00012F702535CDFFFC03E00008F1 +:10727000AD0D000C35780900930600123C0508009E +:1072800094A53FC830C800FF010D5021000A60805E +:107290000A00063C018520211500005B000000006B +:1072A0003C08080095083FCE3C06080094C63FC83D +:1072B000010610213C0B800035790900933800113C +:1072C000932A001935660A80330800FF94CF002AFC +:1072D00000086082314500FF978A0058000C1E00AC +:1072E000000524003047FFFF006410250047C0253B +:1072F00001EA30213C0B4000030B402500066400EE +:10730000AD280000AD2C0004932500183C030006B6 +:107310002528001400053E0000E31025AD220008DA +:107320008F24002C3C05800034AC093CAD24000CBB +:107330008F38001C34A20100254F0001AD38001029 +:107340008D830000AD0E000431EB7FFFAD03000024 +:107350008C47000C34B90900A78B0058AD07000812 +:10736000932B00123C04080090843FD8250200149F +:10737000317800FF030D302100064F0000047C002F +:10738000012F702535CDFFFCAD00001003E0000893 +:10739000AD0D000C3C02080094423FD23C050800B1 +:1073A00094A53FC835440AA43C07080094E73FC4AD +:1073B000948B00000045C8210327C023000B1C004C +:1073C0002706FFF200665025AD2A000CAD20001004 +:1073D000AD2C00140A00063025290018354F0AA4E8 +:1073E00095E50000956400280005140000043C00A9 +:1073F0003459810000EC5825AD39000CAD2B00103C +:107400000A000630252900143C0C0800958C3FCE5C +:107410000A000681258200015460FF56240A0800F4 +:1074200035580AA49706000000061C00006C502581 +:10743000AD2A000C0A000630252900103C03080084 +:1074400094633FD23C07080094E73FC83C0F080014 +:1074500095EF3FC494A4000095790028006710219F +:10746000004F582300041C00001934002578FFEE5B +:1074700000D87825346A8100AD2A000CAD2F0010A9 +:10748000AD200014AD2C00180A0006302529001C80 +:1074900003E00008240207D027BDFFE0AFB20018C8 +:1074A000AFB10014AFB00010AFBF001C0E00007CE5 +:1074B000008088218F8800548F87004C3C0580080D +:1074C00034B20080011128213C1080002402008089 +:1074D000240300C000A72023AE0208183C06800841 +:1074E000AE03081C18800004AF850054ACC500042E +:1074F0008CC90004AF89004C1220000936040980B1 +:107500000E0006F800000000924C00278E0B00745D +:1075100001825004014B3021AE46000C3604098034 +:107520008C8E001C8F8F005C01CF682319A0000493 +:107530008FBF001C8C90001CAF90005C8FBF001CA4 +:107540008FB200188FB100148FB000100A00007EB7 +:1075500027BD00208F8600508F8300548F82004CFF +:107560003C05800834A40080AC860050AC83003C0D +:1075700003E00008ACA200043C0308008C63005444 +:1075800027BDFFF8308400FF2462000130A500FF12 +:107590003C010800AC22005430C600FF3C078000CC +:1075A0008CE801780500FFFE3C0C7FFFA3A40003DC +:1075B0008FAA0000358BFFFF014B4824000627C02F +:1075C00001244025AFA8000034E201009043000AE6 +:1075D000A3A000023C1980FFA3A300018FAF00000D +:1075E00030AE007F3738FFFF01F86024000E6E00D8 +:1075F0003C0A002034E50140018D58253549200022 +:107600002406FF803C04100027BD0008ACAB000C32 +:10761000ACA90014A4A00018A0A6001203E0000862 +:10762000ACE40178308800FF30A700FF3C03800005 +:107630008C6201780440FFFE3C0C8000358A0A0011 +:107640008D4B00203584014035850980AC8B0004CA +:107650008D4900240007302B00061540AC89000836 +:10766000A088001090A3004CA083002D03E0000828 +:10767000A480001827BDFFE8308400FFAFBF0010D2 +:107680000E00075D30A500FF8F8300548FBF0010F0 +:107690003C06800034C50140344700402404FF907C +:1076A0003C02100027BD0018ACA3000CA0A40012DF +:1076B000ACA7001403E00008ACC2017827BDFFE0CE +:1076C0003C088008AFBF001CAFB20018AFB1001477 +:1076D000AFB00010351000808E0600183C07800007 +:1076E000309200FF00C72025AE0400180E00007C79 +:1076F00030B100FF92030005346200080E00007EE6 +:10770000A2020005024020210E000771022028215C +:10771000024020218FBF001C8FB200188FB10014CF +:107720008FB0001024050005240600010A0007326E +:1077300027BD00203C05800034A309809066000826 +:1077400030C200081040000F3C0A01013549080A08 +:10775000AC8900008CA80074AC8800043C070800C9 +:1077600090E73FD830E5001050A00008AC8000083A +:107770003C0D800835AC00808D8B0058AC8B000828 +:107780002484000C03E00008008010210A0007B5E3 +:107790002484000C27BDFFE83C098000AFB0001036 +:1077A000AFBF00143526098090C8000924020006E6 +:1077B00000A05821310300FF3527090000808021F7 +:1077C000240500041062007B2408000294CF005CB2 +:1077D0003C0E020431EDFFFF01AE6025AE0C00004F +:1077E00090CA00083144002010800008000000000A +:1077F00090C2004E3C1F010337F90300305800FFD0 +:107800000319302524050008AE06000490F9001184 +:1078100090E6001290E40011333800FF00187082E7 +:1078200030CF00FF01CF5021014B6821308900FF8C +:1078300031AAFFFF39230028000A60801460002C61 +:10784000020C482390E400123C198000372F0100FD +:10785000308C00FF018B1821000310800045F821B7 +:10786000001F8400360706FFAD270004373F0900DC +:1078700093EC001193EE0012372609800005C082B8 +:107880008DE4000C8CC5003431CD00FF01AB10211C +:107890000058182100A4F8230008840000033F00CA +:1078A00000F0302533F9FFFF318F00FC00D970253F +:1078B0000158202101E9682100045080ADAE000C80 +:1078C0000E00007C012A80213C088008240B000463 +:1078D000350500800E00007EA0AB000902001021DB +:1078E0008FBF00148FB0001003E0000827BD001800 +:1078F00090EC001190E300193C18080097183FCE57 +:10790000318200FF0002F882307000FF001FCE00BD +:1079100000103C000327302500D870253C0F4000A4 +:1079200001CF68253C198000AD2D0000373F0900CC +:1079300093EC001193EE0012372F010037260980D7 +:107940000005C0828DE4000C8CC5003431CD00FFF1 +:1079500001AB10210058182100A4F823000884006E +:1079600000033F0000F0302533F9FFFF318F00FCAA +:1079700000D970250158202101E9682100045080B8 +:10798000ADAE000C0E00007C012A80213C0880086E +:10799000240B0004350500800E00007EA0AB00091A +:1079A000020010218FBF00148FB0001003E0000808 +:1079B00027BD00180A0007C72408001227BDFFD002 +:1079C0003C038000AFB60028AFB50024AFB4002060 +:1079D000AFB10014AFBF002CAFB3001CAFB20018A2 +:1079E000AFB000103467010090E6000B309400FF48 +:1079F00030B500FF30C200300000B02110400099C7 +:107A000000008821346409809088000800082E0056 +:107A100000051E03046000C0240400048F86005487 +:107A20003C010800A0243FD83C0C8000AD800048F9 +:107A30003C048000348E010091CD000B31A5002064 +:107A400010A000073C078000349309809272000860 +:107A50000012860000107E0305E000C43C1F800871 +:107A600034EC0100918A000B34EB09809169000825 +:107A7000314400400004402B3123000800C8982303 +:107A80001460000224120003000090213C108000CA +:107A900036180A8036040900970E002C90830011D6 +:107AA0009089001293050018307F00FF312800FFF5 +:107AB000024810210002C880930D0018033F78216E +:107AC00001F1302130B100FF00D11821A78E0058FC +:107AD0003C010800A4263FCE3C010800A4233FD06F +:107AE00015A00002000000000000000D920B010B29 +:107AF0003065FFFF3C010800A4233FD2316A0040FB +:107B00003C010800A4203FC83C010800A4203FC459 +:107B10001140000224A4000A24A4000B3091FFFFAE +:107B20000E0001E7022020219206010B3C0C080008 +:107B3000958C3FD2004020210006698231A70001C8 +:107B40000E00060101872821004020210260282123 +:107B50000E00060C024030210E0007A1004020213B +:107B600016C00069004020219212010B32560040DD +:107B700012C000053C0500FF8C93000034AEFFFFEF +:107B8000026E8024AC9000000E0001FB0220202138 +:107B90003C0F080091EF3FD831F10003122000168E +:107BA0003C1380088F8200543C09800835280080EF +:107BB000245F0001AD1F003C3C0580088CB9000427 +:107BC00003E02021033FC0231B000002AF9F0054AD +:107BD0008CA400040E0006F8ACA400043C0780004E +:107BE0008CEB00743C04800834830080004B5021EF +:107BF000AC6A000C3C1380083670008002802021A3 +:107C000002A02821A200006B0E00075D3C1480003A +:107C10008F920054368C0140AD92000C8F86004844 +:107C20003C151000344D000624D60001AF960048E4 +:107C30008FBF002CA18600128FB60028AD8D0014D6 +:107C40008FB3001CAE9501788FB200188FB5002459 +:107C50008FB400208FB100148FB0001003E0000833 +:107C600027BD003034640980908F0008000F760033 +:107C7000000E6E0305A00033347F090093F8001B4B +:107C8000241900103C010800A0393FD8331300022A +:107C90001260FF678F8600548F8200601446FF6574 +:107CA0003C0480000E00007C000000003C048008C2 +:107CB0003485008090A8000924060016310300FFD7 +:107CC0001066000D0000000090AB00093C070800A2 +:107CD00090E73FD824090008316400FF34EA00012E +:107CE0003C010800A02A3FD81089002F240C000A6C +:107CF000108C00282402000C0E00007E0000000002 +:107D00000A0008608F8600540E0007B9024028213F +:107D10000A0008AE004020213C0B8008356A008034 +:107D20008D4600548CE9000C1120FF3DAF860054B5 +:107D3000240700143C010800A0273FD80A00085F70 +:107D40003C0C800090910008241200023C010800C5 +:107D5000A0323FD8323000201200000B2416000160 +:107D60008F8600540A0008602411000837F800804C +:107D70008F020038AFE200048FF90004AF19003C15 +:107D80000A00086C3C0780008F8600540A000860D7 +:107D900024110004A0A200090E00007E00000000D3 +:107DA0000A0008608F860054240200140A00093A71 +:107DB000A0A2000927BDFFE8AFB000103C10800072 +:107DC000AFBF001436020100904400090E00075DA9 +:107DD000240500013C0480089099000E3483008043 +:107DE000909F000F906F00269089000A33F800FFE3 +:107DF00000196E000018740031EC00FF01AE502530 +:107E0000000C5A00014B3825312800FF3603014091 +:107E10003445600000E830252402FF813C04100056 +:107E2000AC66000C8FBF0014AC650014A062001299 +:107E3000AE0401788FB0001003E0000827BD0018E1 +:107E400027BDFFE8308400FFAFBF00100E00075DC4 +:107E500030A500FF3C05800034A4014034470040B9 +:107E60002406FF92AC870014A08600128F83005472 +:107E70008FBF00103C02100027BD0018AC83000C1F +:107E800003E00008ACA2017827BDFFD8AFB0001016 +:107E9000308400FF30B000FF3C058000AFB100141B +:107EA000AFBF0020AFB3001CAFB20018000410C277 +:107EB00034A60100320300023051000114600007B3 +:107EC00090D200093C098008353300809268000593 +:107ED0003107000810E0000C308A00100240202119 +:107EE0000E00078302202821240200018FBF0020FA +:107EF0008FB3001C8FB200188FB100148FB0001028 +:107F000003E0000827BD00281540003434A50A000E +:107F10008CB800248CAF0008130F004B00003821F0 +:107F20003C0D800835B30080926C00682406000286 +:107F3000318B00FF116600843C06800034C20100D2 +:107F40009263004C90590009307F00FF53F9000400 +:107F50003213007C10E00069000000003213007C46 +:107F60005660005C0240202116200009320D0001FD +:107F70003C0C800035840100358B0A008D6500249F +:107F80008C86000414A6FFD900001021320D0001D8 +:107F900011A0000E024020213C1880003710010083 +:107FA0008E0F000C8F8E005011EE000800000000B4 +:107FB0000E000843022028218E19000C3C1F800867 +:107FC00037F00080AE190050024020210E000771EA +:107FD000022028210A00098F240200013C05080024 +:107FE0008CA5006424A400013C010800AC240064BA +:107FF0001600000D00000000022028210E0007716D +:1080000002402021926E0068240C000231CD00FF56 +:1080100011AC0022024020210E00094100000000A6 +:108020000A00098F240200010E00007024040001E0 +:10803000926B0025020B30250E00007EA266002503 +:108040000A0009D3022028218E6200188CDF000468 +:108050008CB9002400021E0217F9FFB13065007FC1 +:108060009268004C264400013093007F1265004066 +:10807000310300FF1464FFAB3C0D8008264700016C +:1080800030F1007F30E200FF1225000B24070001D1 +:10809000004090210A00099C2411000124050004DD +:1080A0000E000732240600010E0009410000000006 +:1080B0000A00098F240200012405FF8002452024C4 +:1080C00000859026324200FF004090210A00099C62 +:1080D000241100010E00084302202821320700303D +:1080E00010E0FFA132100082024020210E00078321 +:1080F000022028210A00098F240200018E6900183D +:108100000240202102202821012640250E0009647A +:10811000AE6800189264004C240500032406000198 +:108120000E000732308400FF0E00007024040001AE +:1081300092710025021150250E00007EA26A0025D2 +:108140000A00098F240200018E6F00183C1880007D +:108150000240202101F87025022028210E0007711D +:10816000AE6E00189264004C0A000A1B240500043D +:10817000324A0080394900801469FF6A3C0D80084A +:108180000A0009F42647000127BDFFC0AFB0001860 +:108190003C108000AFBF0038AFB70034AFB600303E +:1081A000AFB5002CAFB40028AFB30024AFB20020AD +:1081B0000E0005BEAFB1001C360201009045000B59 +:1081C0000E00097690440008144000E78FBF003885 +:1081D0003C08800835070080A0E0006B3606098067 +:1081E00090C50000240300503C17080026F73F907C +:1081F00030A400FF3C13080026733FA01083000347 +:108200003C1080000000B82100009821241F0010BD +:108210003611010036120A00361509808E580024E6 +:108220008E3400048EAF00208F8C00543C01080077 +:10823000A03F3FD836190A80972B002C8EF60000FD +:10824000932A00180298702301EC68233C0108006F +:10825000AC2E3FB43C010800AC2D3FB83C010800F7 +:10826000AC2C3FDCA78B005802C0F809315400FF4A +:1082700030490002152000E930420001504000C49E +:108280009227000992A90008312800081500000271 +:10829000241500030000A8213C0A80003543090092 +:1082A00035440A008C8D00249072001190700012E9 +:1082B000907F0011325900FF321100FF02B11021EE +:1082C0000002C08033EF00FF0319B021028F70213C +:1082D00002D4602125CB00103C010800A4363FCE1B +:1082E0003C010800AC2D3FE03C010800A42C3FD02D +:1082F0003C010800A42B3FCC3556010035540980C1 +:1083000035510E008F8700548F89005C8E850020C8 +:1083100024080006012730233C010800AC283FD484 +:1083200000A7282304C000B50000902104A000B3DA +:1083300000C5502B114000B5000000003C010800B2 +:10834000AC263FB88E6200000040F8090000000033 +:108350003046000214C0007400408021304B000100 +:10836000556000118E6200043C0D08008DAD3FBCCD +:108370003C0EC0003C04800001AE6025AE2C000025 +:108380008C980000330F000811E0FFFD0000000092 +:10839000963F000824120001A79F00408E39000478 +:1083A000AF9900388E6200040040F8090000000018 +:1083B0000202802532030002146000B300000000B6 +:1083C0003C09080095293FC43C06080094C63FD0EC +:1083D0003C0A0800954A3FC63C0708008CE73FBCB2 +:1083E000012670213C0308008C633FE03C08080034 +:1083F00095083FDA01CA20218ED9000C00E9282116 +:10840000249F000200A878210067C02133E4FFFF09 +:10841000AF9900503C010800AC383FE03C01080037 +:10842000A42F3FC83C010800A42E3FD20E0001E754 +:10843000000000008F8D0048004020213C01080012 +:10844000A02D3FD98E62000825AC0001AF8C0048FA +:108450000040F809000000008F85005402A0302180 +:108460000E00060C004020210E0007A10040202134 +:108470008E6B000C0160F809004020213C0A0800C6 +:10848000954A3FD23C06080094C63FC601464821A3 +:10849000252800020E0001FB3104FFFF3C05080007 +:1084A0008CA53FB43C0708008CE73FBC00A7202305 +:1084B0003C010800AC243FB414800006000000001A +:1084C0003C0208008C423FD4344B00403C01080081 +:1084D000AC2B3FD4124000438F8E00448E2D0010F1 +:1084E0008F920044AE4D00208E2C0018AE4C00241C +:1084F0003C04080094843FC80E0006FA0000000007 +:108500008F9F00548E6700103C010800AC3F3FDC99 +:1085100000E0F809000000003C1908008F393FB462 +:108520001720FF798F870054979300583C11800ED5 +:10853000321601000E000729A633002C16C0004594 +:10854000320300105460004C8EE5000432080040F5 +:108550005500001D8EF000088EE4000C0080F80924 +:10856000000000008FBF00388FB700348FB6003096 +:108570008FB5002C8FB400288FB300248FB2002059 +:108580008FB1001C8FB0001803E0000827BD004029 +:108590008F86003C36110E0000072E0000A6202515 +:1085A000AE0400808E4300208E500024AFA3001044 +:1085B000AE2300148FB20010AE320010AE30001C9B +:1085C0000A000A75AE3000180200F8090000000029 +:1085D0008EE4000C0080F809000000000A000B2E59 +:1085E0008FBF003824180001240F0001A5C000200F +:1085F000A5D800220A000B10ADCF00243C010800D2 +:10860000AC203FB80A000AA68E6200003C010800B8 +:10861000AC253FB80A000AA68E6200009224000929 +:108620000E000771000028218FBF00388FB700347B +:108630008FB600308FB5002C8FB400288FB3002484 +:108640008FB200208FB1001C8FB0001803E000082B +:1086500027BD00403C1480009295010900002821AC +:108660000E00084332A400FF320300105060FFB830 +:10867000320800408EE5000400A0F8090000000068 +:108680000A000B28320800405240FFA89793005878 +:108690008E3400148F930044AE7400208E35001C7D +:1086A000AE7500240A000B1F979300588F820014A8 +:1086B0000004218003E00008008210213C078008AC +:1086C00034E200809043006900804021106000097E +:1086D0003C0401003C0708008CE73FDC8F8300303E +:1086E00000E32023048000089389001C14E30003A6 +:1086F0000100202103E00008008010213C0401005B +:1087000003E00008008010211120000B00673823CF +:108710003C0D800035AC0980918B007C316A0002F1 +:10872000114000202409003400E9702B15C0FFF12E +:108730000100202100E938232403FFFC00A3C82402 +:1087400000E3C02400F9782B15E0FFEA030820219C +:1087500030C400030004102314C000143049000387 +:108760000000302100A9782101E6702100EE682B7D +:1087700011A0FFE03C0401002D3800010006C82BC9 +:10878000010548210319382414E0FFDA2524FFFCF1 +:108790002402FFFC00A218240068202103E0000846 +:1087A000008010210A000B9E240900303C0C800040 +:1087B0003586098090CB007C316A00041540FFE9C2 +:1087C000240600040A000BAD000030213C03080021 +:1087D0008C63005C8F82001827BDFFE0AFBF0018DC +:1087E000AFB1001410620005AFB00010000329C043 +:1087F00024A40280AF840014AF8300183C108000D2 +:1088000036020A0094450032361101000E000B7F3B +:1088100030A43FFF8E240000241FFF803C11008005 +:108820000082C021031F60243309007F000CC9406F +:1088300003294025330E0078362F00033C0D10002D +:10884000010D502501CF5825AE0C002836080980AF +:10885000AE0C080CAE0B082CAE0A08309103006970 +:108860003C06800C0126382110600006AF870034DA +:108870008D09003C8D03006C0123382318E0008231 +:10888000000000003C0B8008356A00803C1080002E +:10889000A1400069360609808CC200383C06800081 +:1088A00034C50A0090A8003C310C00201180001A49 +:1088B000AF820030240D00013C0E800035D10A004B +:1088C000A38D001CAF8000248E2400248F850024FB +:1088D000240D0008AF800020AF8000283C01080074 +:1088E000A42D3FC63C010800A4203FDA0E000B83F4 +:1088F000000030219228003C8FBF00188FB1001477 +:108900008FB0001000086142AF82002C27BD00200C +:1089100003E000083182000190B80032240E00010B +:10892000330F00FF000F2182108E00412419000236 +:108930001099006434C40AC03C03800034640A0007 +:108940008C8F002415E0001E34660900909F0030D3 +:108950002418000533F9003F1338004E24030001AA +:108960008F860020A383001CAF860028AF860024DA +:108970003C0E800035D10A008E2400248F8500240F +:10898000240D00083C010800A42D3FC63C0108004E +:10899000A4203FDA0E000B83000000009228003C68 +:1089A0008FBF00188FB100148FB000100008614213 +:1089B000AF82002C27BD002003E0000831820001B7 +:1089C0008C8A00088C8B00248CD000643C0E8000C4 +:1089D00035D10A00014B2823AF900024A380001C4E +:1089E000AF8500288E2400248F8600208F850024E8 +:1089F000240D00083C010800A42D3FC63C010800DE +:108A0000A4203FDA0E000B83000000009228003CF7 +:108A10008FBF00188FB100148FB0001000086142A2 +:108A2000AF82002C27BD002003E000083182000146 +:108A300090A200303051003F5224002834C50AC0B3 +:108A40008CB000241600002234CB09008CA600480C +:108A50003C0A7FFF3545FFFF00C510243C0E800017 +:108A6000AF82002035C509008F8800208CAD0060E2 +:108A7000010D602B15800002010020218CA40060F4 +:108A80000A000C22AF8400208D02006C0A000BFC4F +:108A90003C0680008C8200488F8600203C097FFFC6 +:108AA0003527FFFF004788243C0480082403000189 +:108AB000AF910028AC80006CA383001C0A000C302E +:108AC000AF8600248C9F00140A000C22AF9F002068 +:108AD0008D6200680A000C6C3C0E800034C4098072 +:108AE0008C8900708CA300140123382B10E0000443 +:108AF000000000008C8200700A000C6C3C0E8000AC +:108B00008CA200140A000C6C3C0E80008F8500249F +:108B100027BDFFE0AFBF0018AFB1001414A00008DC +:108B2000AFB000103C04800034870A0090E60030AB +:108B30002402000530C3003F106200B934840900EC +:108B40008F91002000A080213C048000348E0A0018 +:108B50008DCD00043C0608008CC63FB831A73FFF0E +:108B600000E6602B5580000100E03021938F001C4F +:108B700011E0007800D0282B349F098093F9007C05 +:108B800033380002130000792403003400C3102B93 +:108B9000144000D90000000000C3302300D0282B6F +:108BA0003C010800A4233FC414A0006E0200182159 +:108BB0003C0408008C843FB40064402B5500000145 +:108BC000006020213C05800034A90A00912A003C65 +:108BD0003C010800AC243FBC31430020146000037A +:108BE0000000482134AB0E008D6900188F88002CDE +:108BF0000128202B1080005F000000003C050800C9 +:108C00008CA53FBC00A96821010D602B1180005C80 +:108C100000B0702B0109382300E028213C01080036 +:108C2000AC273FBC12000003240AFFFC10B0008DEB +:108C30003224000300AA18243C010800A4203FDAD3 +:108C40003C010800AC233FBC006028218F84002435 +:108C5000120400063C0B80088D6C006C0200202181 +:108C6000AF91002025900001AD70006C8F8D002821 +:108C700000858823AF91002401A52023AF8400281C +:108C80001220000224070018240700103C18800856 +:108C90003706008090CF00683C010800A0273FD82D +:108CA0002407000131EE00FF11C70047000000005B +:108CB00014800018000028213C06800034D109806F +:108CC00034CD010091A600098E2C001824C40001A7 +:108CD000000C86023205007F308B007F1165007F1B +:108CE0002407FF803C19800837290080A124004C0C +:108CF0003C0808008D083FD4241800023C010800FD +:108D0000A0384019350F00083C010800AC2F3FD4B3 +:108D1000240500103C02800034440A009083003C8B +:108D2000307F002013E0000500A02021240A00016C +:108D30003C010800AC2A3FBC34A400018FBF0018DE +:108D40008FB100148FB000100080102103E00008E4 +:108D500027BD00203C010800A4203FC410A0FF94C0 +:108D6000020018210A000CC000C018210A000CB72C +:108D7000240300303C0508008CA53FBC00B0702BDC +:108D800011C0FFA8000000003C19080097393FC43B +:108D90000325C0210307782B11E000072CAA00044B +:108DA0003C0360008C625404305F003F17E0FFE337 +:108DB000240400422CAA00041140FF9A240400421B +:108DC0000A000D248FBF00181528FFB9000000000D +:108DD0008CCA00183C1F800024020002015F182585 +:108DE000ACC3001837F90A00A0C200689329003C00 +:108DF0002404000400A01021312800203C010800B8 +:108E0000A0244019110000022405001024020001D2 +:108E10003C010800AC223FB40A000D1A3C0280005D +:108E20008F8800288C8900600109282B14A000027B +:108E3000010088218C9100603C048000348B0E007E +:108E40008D640018240A000102202821022030210C +:108E5000A38A001C0E000B83022080210A000CA6AE +:108E6000AF82002C00045823122000073164000355 +:108E70003C0E800035C7098090ED007C31AC0004C9 +:108E800015800019248F00043C010800A4243FDA57 +:108E90003C1F080097FF3FDA03E5C82100D9C02B2B +:108EA0001300FF6B8F8400242CA6000514C0FFA3C1 +:108EB0002404004230A200031440000200A2182340 +:108EC00024A3FFFC3C010800AC233FBC3C0108008C +:108ED000A4203FDA0A000CE70060282100C77024B4 +:108EE0000A000D0D01C720263C010800A42F3FDA1F +:108EF0000A000D78000000003C010800AC203FBCD7 +:108F00000A000D23240400428F8300283C058000C2 +:108F100034AA0A00146000060000102191470030B6 +:108F20002406000530E400FF108600030000000066 +:108F300003E0000800000000914B0048316900FF89 +:108F4000000941C21500FFFA3C0680083C040800F5 +:108F500094843FC43C0308008C633FDC3C19080048 +:108F60008F393FBC3C0F080095EF3FDA0064C02109 +:108F70008CCD00040319702101CF602134AB0E00A9 +:108F8000018D282318A0001D00000000914F004C07 +:108F90008F8C0034956D001031EE00FF8D89000438 +:108FA00001AE30238D8A000030CEFFFF000E290075 +:108FB0000125C82100003821014720210325182B55 +:108FC0000083C021AD990004AD980000918F000A84 +:108FD00001CF6821A18D000A956500128F8A0034A7 +:108FE000A5450008954B003825690001A5490038C2 +:108FF0009148000D35070008A147000D03E0000867 +:109000000000000027BDFFD8AFB000189388001CF7 +:109010008FB000143C0A80003C197FFF8F8700242A +:109020003738FFFFAFBF0020AFB1001C355F0A002B +:109030000218182493EB003C00087FC03C02BFFFDD +:10904000006F60252CF000013449FFFF3C1F080031 +:109050008FFF3FDC8F9900303C18080097183FD2F3 +:1090600001897824001047803C07EFFF3C05F0FFA2 +:1090700001E818253C1180003169002034E2FFFF2F +:1090800034ADFFFF362E098027A50010240600020C +:1090900003F96023270B0002354A0E0000621824F2 +:1090A0000080802115200002000040218D48001C16 +:1090B000A7AB0012058000392407000030E800FF4C +:1090C00000083F00006758253C028008AFAB001441 +:1090D000344F008091EA00683C08080091083FD9AD +:1090E0003C09DFFF352CFFFF000AF82B3C0208008B +:1090F00094423FCCA3A80011016CC024001FCF40B4 +:10910000031918258FA70010AFA300143C0C08000A +:10911000918C3FDBA7A200168FAB001400ED482412 +:109120003C0F01003C0A0FFF012FC82531980003B6 +:10913000355FFFFF016D40243C027000033F38247F +:1091400000181E0000E2482501037825AFAF001487 +:10915000AFA9001091CC007C0E000092A3AC0015CA +:10916000362D0A0091A6003C30C400201080000675 +:10917000260200083C11080096313FC8262EFFFF4A +:109180003C010800A42E3FC88FBF00208FB1001CF7 +:109190008FB0001803E0000827BD00288F8B002C3B +:1091A000010B502B5540FFC5240700010A000E0497 +:1091B00030E800FF9383001C3C02800027BDFFD8ED +:1091C00034480A0000805021AFBF002034460AC056 +:1091D000010028211060000E3444098091070030FE +:1091E000240B00058F89002030EC003F118B000B11 +:1091F00000003821AFA900103C0B80088D69006C7D +:10920000AFAA00180E00015AAFA90014A380001CD9 +:109210008FBF002003E0000827BD00288D1F0048F5 +:109220003C1808008F183FBC8F9900283C027FFF34 +:109230008D0800443443FFFFAFA900103C0B8008A9 +:109240008D69006C03E370240319782101CF682332 +:1092500001A83821AFAA00180E00015AAFA90014C6 +:109260000A000E58A380001C3C05800034A60A00AA +:1092700090C7003C3C06080094C63FDA3C02080058 +:109280008C423FD430E30020000624001060001E12 +:10929000004438253C0880083505008090A300680C +:1092A00000004821240800010000282124040001B6 +:1092B0003C0680008CCD017805A0FFFE34CF014034 +:1092C000ADE800083C0208008C423FDCA5E5000444 +:1092D000A5E40006ADE2000C3C04080090843FD9F0 +:1092E0003C03800834790080A1E40012ADE700144B +:1092F000A5E900189338004C3C0E1000A1F8002D91 +:1093000003E00008ACCE017834A90E008D28001CC3 +:109310003C0C08008D8C3FBC952B0016952A001440 +:10932000018648213164FFFF0A000E803145FFFFAE +:109330003C04800034830A009065003C30A2002089 +:109340001040001934870E00000040210000382131 +:10935000000020213C0680008CC901780520FFFE1A +:1093600034CA014034CF010091EB0009AD48000838 +:109370003C0E08008DCE3FDC240DFF91240C0040F4 +:109380003C081000A5440004A5470006AD4E000CA3 +:10939000A14D0012AD4C0014A5400018A14B002DAA +:1093A00003E00008ACC801788CE8001894E60012CD +:1093B00094E4001030C7FFFF0A000EA93084FFFFBD +:1093C0003C04800034830A009065003C30A20020F9 +:1093D0001040002727BDFFF82409000100003821B4 +:1093E000240800013C0680008CCA01780540FFFE7D +:1093F0003C0280FF34C40100908D00093C0C080041 +:10940000918C4019A3AD00038FAB00003185007F24 +:109410003459FFFF01665025AFAA00009083000A6F +:10942000A3A0000200057E00A3A300018FB80000E6 +:1094300034CB0140240C30000319702401CF68257F +:10944000AD6D000C27BD0008AD6C0014A5600018C0 +:10945000AD690008A56700042409FF80A56800061F +:109460003C081000A169001203E00008ACC80178B4 +:1094700034870E008CE9001894E6001294E4001082 +:1094800030C8FFFF0A000ECD3087FFFF27BDFFE089 +:10949000AFB100143C118000AFB00010AFBF001896 +:1094A00036380A00970F0032363001000E000B7F6D +:1094B00031E43FFF8E0E0000240DFF803C042000AD +:1094C00001C25821016D6024000C4940316A007FBF +:1094D000012A4025010438253C048008AE270830C5 +:1094E0003486008090C500682403000230A200FF8B +:1094F000104300048F9F00208F990024AC9F0068C8 +:10950000AC9900648FBF00188FB100148FB00010A9 +:1095100003E0000827BD00203C0A0800254A3A80E5 +:109520003C09080025293B103C08080025082F1C91 +:109530003C07080024E73BDC3C06080024C639044D +:109540003C05080024A536583C0408002484325CFD +:109550003C030800246339B83C0208002442375415 +:109560003C010800AC2A3F983C010800AC293F941C +:109570003C010800AC283F903C010800AC273F9C10 +:109580003C010800AC263FAC3C010800AC253FA4E0 +:109590003C010800AC243FA03C010800AC233FB0D4 +:1095A0003C010800AC223FA803E0000800000000D6 +:1095B00080000940800009008008010080080080C8 +:1095C00080080000800E00008008008080080000F5 +:1095D00080000A8080000A00800009808000090065 +:00000001FF --- linux-raspi2-4.2.0.orig/firmware/bnx2/bnx2-rv2p-09-6.0.17.fw.ihex +++ linux-raspi2-4.2.0/firmware/bnx2/bnx2-rv2p-09-6.0.17.fw.ihex @@ -3,8 +3,7 @@ :1000200000000000000000000000000000000000D0 :1000300000000E88000009500000000500000000CC :1000400000000000000000000000000000000000B0 -:080050000000000000000000A8 -:0800580000000010B180000659 +:10005000000000000000000000000010B180000659 :100060000000001F05060011000000080500FFFF4A :10007000000000180002000000000008050000FF5A :10008000000000180002000000000008AC000001A1 @@ -382,11 +381,3 @@ :1017C0000000000C2980000000000010001F000035 :0817D000000000188000FE3546 :00000001FF -/* - * This file contains firmware data derived from proprietary unpublished - * source code, Copyright (c) 2004 - 2009 Broadcom Corporation. - * - * Permission is hereby granted for the distribution of this firmware data - * in hexadecimal or equivalent format, provided this copyright notice is - * accompanying it. - */ --- linux-raspi2-4.2.0.orig/firmware/bnx2/bnx2-rv2p-09ax-6.0.17.fw.ihex +++ linux-raspi2-4.2.0/firmware/bnx2/bnx2-rv2p-09ax-6.0.17.fw.ihex @@ -3,8 +3,7 @@ :1000200000000000000000000000000000000000D0 :1000300000001010000009C80000000500000000CA :1000400000000000000000000000000000000000B0 -:080050000000000000000000A8 -:0800580000000010B180000659 +:10005000000000000000000000000010B180000659 :100060000000001F03060011000000080500FFFF4C :10007000000000180002000000000008050000FF5A :10008000000000180002000000000008AC000001A1 @@ -155,8 +154,7 @@ :100990000000001091D40000000000080500005580 :1009A000000000188000FF360000000C29800001C4 :1009B0000000000C1F800001000000082A00000752 -:0809C000000000188000FEDEBB -:0809C80000000010B1800004E2 +:1009C000000000188000FEDE00000010B18000046E :1009D0000000001F0306001100000008050000FFD2 :1009E0000000001800020000000000002A000000C3 :1009F00000000010B1D400000000001091DE0000E3 @@ -415,11 +413,3 @@ :1019C00000000010001F00000000000C6BD7000199 :0819D000000000188000FE0475 :00000001FF -/* - * This file contains firmware data derived from proprietary unpublished - * source code, Copyright (c) 2004 - 2009 Broadcom Corporation. - * - * Permission is hereby granted for the distribution of this firmware data - * in hexadecimal or equivalent format, provided this copyright notice is - * accompanying it. - */ --- linux-raspi2-4.2.0.orig/firmware/bnx2x/bnx2x-e1-7.10.51.0.fw.ihex +++ linux-raspi2-4.2.0/firmware/bnx2x/bnx2x-e1-7.10.51.0.fw.ihex @@ -0,0 +1,10278 @@ +:100000000000164800000068000005D8000016B87F +:10001000000031D400001C980000006C00004E70FD +:10002000000082C400004EE0000000A00000D1A843 +:10003000000095DC0000D25000000088000168300C +:10004000000042C0000168C00000008C0001AB88C5 +:100050000000C3F00001AC180000120C0002701088 +:100060000000000400028220020600DC0000000103 +:100070000306100002000000010600D80000000086 +:100080000306020000030200020600DC000000007C +:1000900002060068000000B80206007800000114A3 +:1000A000010600B800000000010600C800000000C2 +:1000B0000206006C000000B80206007C000001147B +:1000C000010600BC00000000010600CC000000009A +:1000D000020D004400000032030D004C0004020336 +:1000E000040D005C00000004030D008C00110207E9 +:1000F000020D015C00000001030D01640002021802 +:10010000020D020400000001030D020C0003021A9C +:10011000030D02200002021D040D028000000012E7 +:10012000030D03000018021F040D03600000000C03 +:10013000040D400000000A00030D0004000F023708 +:10014000020D01140000000D020D01180000002D29 +:100150000310100000030246021010100000026499 +:10016000071011000010024908101140000000089B +:100170000710116000100259081011A000000018AB +:1001800007101800020002690210101000000000A1 +:1001900004104C0000000100021040280000001074 +:1001A000031040400002046902104058002800007B +:1001B000021040840084924A02104058000000005F +:1001C000030C20080003046B030C201C0004046EC5 +:1001D000030C203800110472040C207C0000004F36 +:1001E000030C21B800110483040C21FC0000000F53 +:1001F000030C223800040494010C22480000000083 +:10020000010C224C00000000010C225000000000F4 +:10021000010C225400000000010C225800000000D4 +:10022000010C225C00000000010C226000000000B4 +:10023000010C226400000000010C22680000000094 +:10024000010C226C00000000010C22700000000074 +:10025000010C227400000000010C22780000000054 +:10026000010C227C00000000020C24BC00000001F4 +:100270000A00000100000001020C2000000003E859 +:100280000A00000100000002020C20000000000A29 +:100290000A00000100000004020C20000000000120 +:1002A0000520040000850000062007800010049847 +:1002B000042200000000160004228000000000401C +:1002C00004223BD000000008042248000000000681 +:1002D000032248180004049A042248280000000C55 +:1002E000032248580004049E042248680000000CC1 +:1002F00003224898000404A2042248A80000000C2D +:10030000032248D8000404A6042248E80000000C98 +:1003100003224918000404AA042249280000000C02 +:1003200003224958000404AE042249680000000C6E +:1003300003224998000404B2042249A80000000CDA +:10034000032249D8000404B6042249E80000000C46 +:1003500003224A18000404BA04224A280000000CB0 +:1003600003224A58000404BE04224A680000000C1C +:1003700003224A98000404C204224AA80000000C88 +:1003800003224AD8000404C604224AE80000000CF4 +:1003900003224B18000404CA04224B280000000C5E +:1003A00003224B58000404CE04224B680000000CCA +:1003B00003224B98000404D204224BA80000000C36 +:1003C00003224BD8000404D604224BE80000000CA2 +:1003D00003224C18000404DA04224C280000000C0C +:1003E00003224C58000404DE04224C680000000C78 +:1003F00003224C98000404E204224CA80000000CE4 +:1004000003224CD8000404E604224CE80000000C4F +:1004100003224D18000404EA04224D280000000CB9 +:1004200003224D58000404EE04224D680000000C25 +:1004300003224D98000404F204224DA80000000C91 +:1004400003224DD8000404F604224DE80000000CFD +:1004500003224E18000404FA04224E280000000C67 +:1004600003224E58000404FE04224E680000000CD3 +:1004700003224E980004050204224EA80000000C3E +:1004800003224ED80004050604224EE80000000CAA +:1004900003224F180004050A04224F280000000C14 +:1004A00003224F580004050E04224F680000000C80 +:1004B00003224F980004051204224FA80000000CEC +:1004C00003224FD80004051604224FE8000000065E +:1004D000032251980004051A022380000000001036 +:1004E00002238040000000120223808000000030C0 +:1004F000022380C00000000E022383800007A12099 +:10050000022383C0000001F402238BC0000000011D +:100510000A00000200000001022383000007A1205E +:1005200002238340000001F40A00000200000002E0 +:10053000022383000000138802238340000000058B +:100540000A000002000000040223830000000138BA +:1005500002238340000000000524000033820000D5 +:10056000052480000F390CE106249CB06AD0051EDA +:100570000120000000000000012000040000000035 +:1005800001200008000000000120000C0000000015 +:1005900001200010000000000120001400000000F5 +:1005A00003200020001A0520032000A40002053AC1 +:1005B000022002240000000002200234000000009B +:1005C0000220024C00000000022002E40000FFFFB5 +:1005D000082020000000080004221400000000028F +:1005E00004221490000000300422390000000010A2 +:1005F0000422510800000002042251A80000000655 +:1006000004221408000000020422155000000030EB +:1006100004223940000000100422511000000002A2 +:10062000042251C00000000604102400000000E075 +:100630000310201C0002053C021020C00000000135 +:10064000031020040002053E02170008000000020B +:100650000217002C000000030317003800020540B9 +:100660000317004400060542031700600005054813 +:10067000031700780002054D021700040000000F68 +:100680000410806800000004021080000000108048 +:1006900004108040000000020410802800000002C6 +:1006A0000210803800000010031080400002054F47 +:1006B00002108050000000000210810000000000C5 +:1006C000041081200000000202108008000002B522 +:1006D0000210801000000000021081080001FFFFDE +:1006E000041082000000004A041081400000000253 +:1006F0000210800000001A80041090000000002406 +:10070000041091200000004A041093700000004A79 +:10071000041095C00000004A021080040000108000 +:100720000410804800000002041080300000000225 +:100730000210803C000000100310804800020551A8 +:10074000021080540000000002108104000000002C +:1007500004108128000000020210800C000002B585 +:1007600002108014000000000210810C0001FFFF45 +:10077000041084000000004A0410814800000002B8 +:100780000210800400001A800410909000000024E1 +:10079000041092480000004A041094980000004A97 +:1007A000041096E80000004A0200A468000AFFDC7A +:1007B0000200A280000000010300A294000405537F +:1007C0000200A4FCFF000000030100B40002055772 +:1007D000020100DC000000010301010000020559D4 +:1007E0000201007C003000000201008400000028AB +:1007F0000201008C00000000020101300000000432 +:10080000040101380000001102010328000000006B +:100810000201055400000030020100C40000000184 +:10082000020100CC00000001020100F800000001FC +:10083000020100F000000001020100800030000011 +:100840000201008800000028020100900000000062 +:1008500002010134000000040401017C00000011C9 +:100860000201032C000000000201056400000030BA +:10087000020100C800000001020100D000000001D8 +:10088000020100FC00000001020100F40000000170 +:1008900002140000000000010214000C000000011E +:1008A000031400400002055B0214000C000000006D +:1008B00002140000000000000214006C00000000A0 +:1008C00002140004000000010214003000000001C6 +:1008D00002140004000000000214005C000000008C +:1008E000021400080000000102140034000000019E +:1008F0000214000800000000021400600000000064 +:10090000030400040012055D030400540003056F96 +:100910000204007000000004030400780004057263 +:1009200004040088000000050304009C0003057611 +:10093000040400A800000004030400B800050579C1 +:10094000040400CC00000004030400DC0004057E65 +:10095000040400EC00000004010401240000000075 +:1009600001040128000000000104012C0000000027 +:100970000104013000000000020401340000000FF7 +:1009800003120490002205820212052000000002DA +:1009900002120388000000640212039000000008A5 +:1009A0000312039C000305A4021203BC0000000410 +:1009B000021203C400000004021203D00000000071 +:1009C000021203DC000000000212036C00000001B0 +:1009D000021203680000003F031201BC003C05A79F +:1009E000031202B0000205E303120324000205E52E +:1009F000021201B00000000107103800000505E7F1 +:100A000007103C00000505EC07103C20000505F12F +:100A100003168030000805F602168054000000021C +:100A200003168060000505FE0416807400000007B0 +:100A300003168090000206030316809C000506053D +:100A4000041680B000000007031680CC0008060AD8 +:100A5000021680F000000007041680F40000000C6D +:100A60000316812400040612041681340000000CD1 +:100A700003168164003B0616041682500000000431 +:100A80000316826000020651041682680000000806 +:100A90000316828800080653041682A80000000A84 +:100AA00002168804000000040316880C0010065B80 +:100AB000021680EC000000FF030404080014066B1B +:100AC000030500440002067F030500500004068170 +:100AD0000405006000000004030500900013068573 +:100AE00002050114000000010305011C0002069824 +:100AF00002050204000000010305020C0002069A30 +:100B00000305021C0003069C040502400000000AC5 +:100B1000030502800020069F0405400000000D0030 +:100B200003050004001006BF020500E00000000EEF +:100B3000020500E40000002E04164024000000021C +:100B400003164030000306CF021640440000002088 +:100B5000021640700000001C02164208000000014E +:100B6000021642100000000102164220000000019F +:100B70000216422800000001021642300000000167 +:100B80000216423800000001021642600000000117 +:100B90000A000001000000010216401C0003D09072 +:100BA0000A000001000000020216401C000009C4F7 +:100BB0000A000001000000040216401C0000009C16 +:100BC0000216400000000001021640D8000000019B +:100BD00003164008000306D202164240000000003F +:100BE0000216424800000000081642700000000291 +:100BF0000216425000000000021642580000000099 +:100C0000081642800000000203042008000406D5F4 +:100C10000304201C000406D90404203800000080CE +:100C200003042238000406DD01042248000000000D +:100C30000104224C000000000104225000000000CA +:100C400001042254000000000104225800000000AA +:100C50000104225C0000000001042260000000008A +:100C6000010422640000000001042268000000006A +:100C70000104226C0000000001042270000000004A +:100C8000010422740000000001042278000000002A +:100C90000104227C00000000020424BC00000001CA +:100CA0000A0000010000000102042000000003E827 +:100CB0000A00000100000002020420000000000AF7 +:100CC0000A000001000000040204200000000001EE +:100CD00005180400006A000006180760001406E109 +:100CE000041A000000001600041A800000000040F2 +:100CF000031A08B0000206E3031A19C8000206E549 +:100D0000031A2FC0000406E7041A2FD000000006C3 +:100D1000031A2FE8000206EB031A300003F906ED70 +:100D2000041A3FE400000007031A487000040AE6B2 +:100D3000021B800000000034021B804000000018ED +:100D4000021B80800000000C021B80C000000020FD +:100D5000021B83800007A120021B83C0000001F456 +:100D6000021B8BC0000000010A000002000000010D +:100D7000021B83000007A120021B8340000001F436 +:100D80000A00000200000002021B8300000013881A +:100D9000021B8340000000050A000002000000045E +:100DA000021B830000000138021B8340000000008A +:100DB000051C00002D110000051C8000344F0B4560 +:100DC000051D000021601859061D4DE056440AEA31 +:100DD00001180000000000000118000400000000DD +:100DE00001180008000000000118000C00000000BD +:100DF000011800100000000001180014000000009D +:100E000003180020001A0AEC031800A400020B06C5 +:100E10000218022400000000021802340000000042 +:100E20000218024C00000000021802E4000000FF5B +:100E30000818100000000400041A08000000000256 +:100E4000041A082000000012041A09C0000000481B +:100E5000041A250000000010041A2580000000126A +:100E6000041A261000000012031A2FB000020B080B +:100E7000041A400000000006041A4030000000027E +:100E8000041A482000000002031A4C5000020B0A0A +:100E9000041A081000000002041A0868000000127A +:100EA000041A0AE000000048041A2540000000105F +:100EB000041A25C800000012041A26580000001267 +:100EC000031A2FB800020B0C041A40180000000689 +:100ED000041A403800000002041A482800000002EA +:100EE000031A4C5800020B0E020E004C0000003298 +:100EF000030E005400040B10040E006400000004F4 +:100F0000030E009400130B14020E014400000001B4 +:100F1000030E014C00020B27020E02040000000128 +:100F2000030E020C00020B29030E021C00040B2B03 +:100F3000030E0280001B0B2F040E02EC00000017B2 +:100F4000040E200000000800030E000400110B4AEC +:100F5000020E01100000000F020E01140000002F0D +:100F6000020C100000000028030C400800040B5B7A +:100F7000030C401C00040B5F030C403800020B63A1 +:100F8000040C40400000005E020C41B8000000016B +:100F9000040C41BC0000001F030C423800040B6528 +:100FA000010C424800000000010C424C000000000F +:100FB000010C425000000000010C425400000000EF +:100FC000010C425800000000010C425C00000000CF +:100FD000010C426000000000010C426400000000AF +:100FE000010C426800000000010C426C000000008F +:100FF000010C427000000000010C4274000000006F +:10100000010C427800000000010C427C000000004E +:10101000010C428000000000020C44C000000001EE +:101020000A00000100000001020C4000000003E87B +:101030000A00000100000002020C40000000000A4B +:101040000A00000100000004020C40000000000142 +:1010500005300400009E00000630076800130B698D +:10106000043200000000160004328000000000403E +:101070000332183000020B6B03322E7000040B6D2C +:101080000432508000000008033250A000020B71AF +:10109000023380000000001A023380400000004E3E +:1010A0000233808000000010023380C00000002066 +:1010B000023383800007A120023383C0000001F4C3 +:1010C00002338BC0000000010A0000020000000192 +:1010D000023383000007A12002338340000001F4A3 +:1010E0000A0000020000000202338300000013889F +:1010F00002338340000000050A00000200000004E3 +:1011000002338300000001380233834000000000F6 +:101110000534000036DE00000534800031090DB8CA +:10112000053500002DF019FB0635680053000B73E0 +:101130000130000000000000013000040000000049 +:1011400001300008000000000130000C0000000029 +:101150000130001000000000013000140000000009 +:1011600003300020001A0B75033000A400020B8F1F +:1011700002300224000000000230023400000000AF +:101180000230024C00000000023002E40000FFFFC9 +:10119000083020000000080004322DE000000002AA +:1011A00004324000000000D8043246C00000012094 +:1011B000043250C80000002404322DE80000000270 +:1011C00004324360000000D804324B40000001208C +:1011D000043251580000002402020058000000327E +:1011E0000302006000040B91040200700000000480 +:1011F000030200A0000E0B95030200DC00070BA306 +:10120000020200FC000000060202012000000000B3 +:101210000202013400000002020201B000000001DD +:101220000202020C000000010302021400020BAAD9 +:1012300002020404000000010302040C00020BACD3 +:101240000302041C00040BAE03020480001F0BB257 +:10125000040204FC000000130402800000002000CF +:101260000302000400140BD102020108000000C8B0 +:101270000202011800000002020201C40000000086 +:10128000020201CC00000000020201D400000002B2 +:10129000020201DC00000002020201E4000000FF83 +:1012A000020201EC000000FF0202010C000000C875 +:1012B0000202011C00000002020201C8000000003E +:1012C000020201D000000000020201D8000000026A +:1012D000020201E000000002020201E8000000FF3B +:1012E000020201F0000000FF0216100000000028BA +:1012F0000316600800030BE50316601C00040BE8EE +:1013000003166038000D0BEC0416606C000000132F +:10131000031660B800020BF9041660C00000003E1E +:10132000021661B800000001041661BC0000001F35 +:101330000316623800040BFB01166248000000002F +:101340000116624C0000000001166250000000000F +:1013500001166254000000000116625800000000EF +:101360000116625C000000000116626000000000CF +:1013700001166264000000000116626800000000AF +:101380000116626C0000000001166270000000008F +:10139000011662740000000001166278000000006F +:1013A0000116627C00000000021664BC000000010F +:1013B0000A0000010000000102166000000003E8BE +:1013C0000A00000100000002021660000000000A8E +:1013D0000A00000100000004021660000000000185 +:1013E00005280400008A00000628076800130BFF88 +:1013F000042A000000001600042A800000000040BB +:10140000032A250000020C01032A296000040C03B2 +:10141000032A2F4800020C07032A336800020C0934 +:10142000032A392000020C0B032A393000020C0D6C +:10143000032A3AC800020C0F042A3AD00000000622 +:10144000032A3B9800020C11032A3C2000040C13D1 +:10145000022A3CD000000000022B800000000000A7 +:10146000022B804000000018022B80800000000C3E +:10147000022B80C000000066022B83800007A120A1 +:10148000022B83C0000001F4022B8BC0000000017E +:101490000A00000200000001022B83000007A120C7 +:1014A000022B8340000001F40A0000020000000249 +:1014B000022B830000001388022B834000000005EC +:1014C0000A00000200000004022B83000000013823 +:1014D000022B8340000000000A00000100000020F1 +:1014E000022A3CD400000000052C000036FC00005D +:1014F000052C80003A1A0DBF052D00003B131C4639 +:10150000052D800017C12B0B062DB06049F40C1778 +:101510000128000000000000012800040000000075 +:1015200001280008000000000128000C0000000055 +:101530000128001000000000012800140000000035 +:1015400003280020001A0C19032800A400020C3301 +:1015500002280224000000000228023400000000DB +:101560000228024C00000000022802E40000FFFFF5 +:101570000828200000000800042A3910000000029A +:10158000042A393800000020042A3A3800000010EC +:10159000032A3AE800020C35032A3AF800100C3707 +:1015A000042A3C3000000002042A5000000000021F +:1015B000042A501000000002042A502000000002FB +:1015C000042A503000000002022A504000000000AF +:1015D000042A50480000000E042A391800000002B6 +:1015E000042A39B800000020042A3A7800000010CC +:1015F000032A3AF000020C47032A3B3800100C493A +:10160000042A3C3800000002042A500800000002AE +:10161000042A501800000002042A5028000000028A +:10162000042A503800000002022A50440000000042 +:10163000042A50800000000E0400A00000000016E4 +:101640000300A06C00060C590400A08400000005F3 +:101650000200A0980FE000000400A09C000000140D +:101660000300A0EC00080C5F0400A22C00000004A2 +:101670000200A060000003070300A10C00060C6735 +:101680000400A124000000050200A1380FE00000C2 +:101690000400A13C000000140300A18C00080C6DA4 +:1016A0000400A23C000000040200A0640000030744 +:1016B000000000000000000000000000000000002A +:1016C000000000000000000000000000000000001A +:1016D000000000000000000000000000000000000A +:1016E0000000000000000005000500090009000DD1 +:1016F00000000000000000000000000000000000EA +:1017000000000000000000000000000000000000D9 +:10171000000D001B001B001C001C001D0000000031 +:1017200000000000000000000000000000000000B9 +:10173000000000000000000000000000001D002567 +:101740000000000000000000000000000000000099 +:101750000000000000000000000000000000000089 +:1017600000000000000000000025002B0000000029 +:101770000000000000000000000000000000000069 +:101780000000000000000000000000000000000059 +:1017900000000000002B00470000000000000000D7 +:1017A0000000000000000000000000000000000039 +:1017B0000000000000000000000000000000000029 +:1017C000004700AE00AE00B300B300B80000000058 +:1017D0000000000000000000000000000000000009 +:1017E00000000000000000000000000000000000F9 +:1017F00000000000000000000000000000000000E9 +:1018000000000000000000000000000000000000D8 +:10181000000000000000000000B800BC0000000054 +:1018200000000000000000000000000000000000B8 +:1018300000000000000000000000000000000000A8 +:101840000000000000BC00C3000000000000000019 +:101850000000000000000000000000000000000088 +:101860000000000000000000000000000000000078 +:1018700000C300C400C400D600D600E80000000089 +:101880000000000000000000000000000000000058 +:101890000000000000000000000000000000000048 +:1018A0000000000000000000000000000000000038 +:1018B0000000000000000000000000000000000028 +:1018C000000000000000000000E800EC0000000044 +:1018D0000000000000000000000000000000000008 +:1018E00000000000000000000000000000000000F8 +:1018F0000000000000EC00EF00EF00FA00FA010524 +:1019000000000000000000000000000000000000D7 +:1019100000000000000000000000000000000000C7 +:101920000105010B010B010F010F01130000000065 +:1019300000000000000000000000000000000000A7 +:101940000000000000000000000000000000000097 +:101950000000000000000000000000000000000087 +:101960000000000000000000000000000000000077 +:10197000000000000000000001130123000000002F +:101980000000000000000000000000000000000057 +:101990000000000000000000000000000000000047 +:1019A00000000000012301320000000000000000E0 +:1019B0000000000000000000000000000000000027 +:1019C0000000000000000000000000000000000017 +:1019D000013201350000000000000000000000009E +:1019E00000000000000000000000000000000000F7 +:1019F0000000000000000000000000000135014A66 +:101A000000000000000000000000000000000000D6 +:101A100000000000000000000000000000000000C6 +:101A20000000000000000000014A014B000000001F +:101A300000000000000000000000000000000000A6 +:101A40000000000000000000000000000000000096 +:101A500000000000014B0158015801590159015A79 +:101A60000000000000000000000000000000000076 +:101A70000000000000000000000000000000000066 +:101A8000015A016E016E01710171017400000000C4 +:101A90000000000000000000000000000000000046 +:101AA0000000000000000000000000000174018D33 +:101AB0000000000000000000000000000000000026 +:101AC0000000000000000000000000000000000016 +:101AD0000000000000000000018D01BA01BA01C53C +:101AE00001C501D00000000000000000000000005F +:101AF00000000000000000000000000000000000E6 +:101B00000000000001D001DD01DD01DE01DE01DFAA +:101B100000000000000000000000000000000000C5 +:101B200000000000000000000000000000000000B5 +:101B300001DF01E0000000000000000000000000E4 +:101B40000000000000000000000000000000000095 +:101B500000000000000000000000000001E001FDA6 +:101B60000000000000000000000000000000000075 +:101B70000000000000000000000000000000000065 +:101B8000000000000000000001FD02260226022ADB +:101B9000022A022E000000000000000000000000E9 +:101BA0000000000000000000000000000000000035 +:101BB00000000000022E024002400248024802508B +:101BC0000000000000000000000000000000000015 +:101BD0000000000000000000000000000000000005 +:101BE0000250025100000000000000000000000050 +:101BF00000000000000000000000000000000000E5 +:101C00000000000000000000000000000251026F10 +:101C100000000000000000000000000000000000C4 +:101C200000000000000000000000000000000000B4 +:101C30000000000000000000026F02A202A202AE3B +:101C400002AE02BA00000000000000000000000028 +:101C50000000000000000000000000000000000084 +:101C60000000000002BA02BB02BB02C202C202C9EB +:101C70000000000000000000000000000000000064 +:101C80000000000000000000000000000000000054 +:101C900000000000000000000000200000004000E4 +:101CA00000006000000080000000A0000000C000F4 +:101CB0000000E000000100000001200000014000E1 +:101CC00000016000000180000001A0000001C000D0 +:101CD0000001E000000200000002200000024000BD +:101CE00000026000000280000002A0000002C000AC +:101CF0000002E00000030000000320000003400099 +:101D000000036000000380000003A0000003C00087 +:101D10000003E00000040000000420000004400074 +:101D200000046000000480000004A0000004C00063 +:101D30000004E00000050000000520000005400050 +:101D400000056000000580000005A0000005C0003F +:101D50000005E0000006000000062000000640002C +:101D600000066000000680000006A0000006C0001B +:101D70000006E00000070000000720000007400008 +:101D800000076000000780000007A0000007C000F7 +:101D90000007E000000800000008200000084000E4 +:101DA00000086000000880000008A0000008C000D3 +:101DB0000008E000000900000009200000094000C0 +:101DC00000096000000980000009A0000009C000AF +:101DD0000009E000000A0000000A2000000A40009C +:101DE000000A6000000A8000000AA000000AC0008B +:101DF000000AE000000B0000000B2000000B400078 +:101E0000000B6000000B8000000BA000000BC00066 +:101E1000000BE000000C0000000C2000000C400053 +:101E2000000C6000000C8000000CA000000CC00042 +:101E3000000CE000000D0000000D2000000D40002F +:101E4000000D6000000D8000000DA000000DC0001E +:101E5000000DE000000E0000000E2000000E40000B +:101E6000000E6000000E8000000EA000000EC000FA +:101E7000000EE000000F0000000F2000000F4000E7 +:101E8000000F6000000F8000000FA000000FC000D6 +:101E9000000FE000001000000010200000104000C3 +:101EA00000106000001080000010A0000010C000B2 +:101EB0000010E0000011000000112000001140009F +:101EC00000116000001180000011A0000011C0008E +:101ED0000011E0000012000000122000001240007B +:101EE00000126000001280000012A0000012C0006A +:101EF0000012E00000130000001320000013400057 +:101F000000136000001380000013A0000013C00045 +:101F10000013E00000140000001420000014400032 +:101F200000146000001480000014A0000014C00021 +:101F30000014E0000015000000152000001540000E +:101F400000156000001580000015A0000015C000FD +:101F50000015E000001600000016200000164000EA +:101F600000166000001680000016A0000016C000D9 +:101F70000016E000001700000017200000174000C6 +:101F800000176000001780000017A0000017C000B5 +:101F90000017E000001800000018200000184000A2 +:101FA00000186000001880000018A0000018C00091 +:101FB0000018E0000019000000192000001940007E +:101FC00000196000001980000019A0000019C0006D +:101FD0000019E000001A0000001A2000001A40005A +:101FE000001A6000001A8000001AA000001AC00049 +:101FF000001AE000001B0000001B2000001B400036 +:10200000001B6000001B8000001BA000001BC00024 +:10201000001BE000001C0000001C2000001C400011 +:10202000001C6000001C8000001CA000001CC00000 +:10203000001CE000001D0000001D2000001D4000ED +:10204000001D6000001D8000001DA000001DC000DC +:10205000001DE000001E0000001E2000001E4000C9 +:10206000001E6000001E8000001EA000001EC000B8 +:10207000001EE000001F0000001F2000001F4000A5 +:10208000001F6000001F8000001FA000001FC00094 +:10209000001FE00000200000002020000020400081 +:1020A00000206000002080000020A0000020C00070 +:1020B0000020E0000021000000212000002140005D +:1020C00000216000002180000021A0000021C0004C +:1020D0000021E00000220000002220000022400039 +:1020E00000226000002280000022A0000022C00028 +:1020F0000022E00000230000002320000023400015 +:1021000000236000002380000023A0000023C00003 +:102110000023E000002400000024200000244000F0 +:1021200000246000002480000024A0000024C000DF +:102130000024E000002500000025200000254000CC +:1021400000256000002580000025A0000025C000BB +:102150000025E000002600000026200000264000A8 +:1021600000266000002680000026A0000026C00097 +:102170000026E00000270000002720000027400084 +:1021800000276000002780000027A0000027C00073 +:102190000027E00000280000002820000028400060 +:1021A00000286000002880000028A0000028C0004F +:1021B0000028E0000029000000292000002940003C +:1021C00000296000002980000029A0000029C0002B +:1021D0000029E000002A0000002A2000002A400018 +:1021E000002A6000002A8000002AA000002AC00007 +:1021F000002AE000002B0000002B2000002B4000F4 +:10220000002B6000002B8000002BA000002BC000E2 +:10221000002BE000002C0000002C2000002C4000CF +:10222000002C6000002C8000002CA000002CC000BE +:10223000002CE000002D0000002D2000002D4000AB +:10224000002D6000002D8000002DA000002DC0009A +:10225000002DE000002E0000002E2000002E400087 +:10226000002E6000002E8000002EA000002EC00076 +:10227000002EE000002F0000002F2000002F400063 +:10228000002F6000002F8000002FA000002FC00052 +:10229000002FE0000030000000302000003040003F +:1022A00000306000003080000030A0000030C0002E +:1022B0000030E0000031000000312000003140001B +:1022C00000316000003180000031A0000031C0000A +:1022D0000031E000003200000032200000324000F7 +:1022E00000326000003280000032A0000032C000E6 +:1022F0000032E000003300000033200000334000D3 +:1023000000336000003380000033A0000033C000C1 +:102310000033E000003400000034200000344000AE +:1023200000346000003480000034A0000034C0009D +:102330000034E0000035000000352000003540008A +:1023400000356000003580000035A0000035C00079 +:102350000035E00000360000003620000036400066 +:1023600000366000003680000036A0000036C00055 +:102370000036E00000370000003720000037400042 +:1023800000376000003780000037A0000037C00031 +:102390000037E0000038000000382000003840001E +:1023A00000386000003880000038A0000038C0000D +:1023B0000038E000003900000039200000394000FA +:1023C00000396000003980000039A0000039C000E9 +:1023D0000039E000003A0000003A2000003A4000D6 +:1023E000003A6000003A8000003AA000003AC000C5 +:1023F000003AE000003B0000003B2000003B4000B2 +:10240000003B6000003B8000003BA000003BC000A0 +:10241000003BE000003C0000003C2000003C40008D +:10242000003C6000003C8000003CA000003CC0007C +:10243000003CE000003D0000003D2000003D400069 +:10244000003D6000003D8000003DA000003DC00058 +:10245000003DE000003E0000003E2000003E400045 +:10246000003E6000003E8000003EA000003EC00034 +:10247000003EE000003F0000003F2000003F400021 +:10248000003F6000003F8000003FA000003FC00010 +:10249000003FE000003FE00100000000000001FFFD +:1024A0000000020000000001000000020000000027 +:1024B000000000080215002002150020081000008E +:1024C00000000033000000020000000000000005D2 +:1024D00000000005000000000000000000000002F5 +:1024E00000000003000000020000000100000004E2 +:1024F00000000002000000020000000100000002D5 +:102500000000002000000040000000400000000328 +:102510000000001800002000000040C000006180A2 +:10252000000082400000A3000000C3C00000E4805F +:102530000001054000012600000146C0000167803F +:10254000000188400001A9000001C9C00001EA8023 +:1025500000020B4000022C0000024CC000026D8003 +:1025600000028E400002AF000002CFC00002F080E7 +:102570000000114000000001000000010000000107 +:102580000000000100000001000000010000000147 +:102590000000000100000001000000010000000137 +:1025A0000000000100000001000000010000000127 +:1025B0000003D0000000003D00000001000D0000FD +:1025C000000700D000028140000B81680002022059 +:1025D00000010240000F025000010340000C000007 +:1025E000000800C000028140000B81680002022048 +:1025F0000001024000070250000202C0001000006B +:102600000008010000028180000B81A80002026026 +:1026100000018280000E8298000803800000000004 +:102620000000000000028000000B8028000200E093 +:10263000000101000000811000000118FFFFFFF3FE +:1026400001AFFFFF000000000000000000000000DC +:10265000000000000000000000000000FFFFFFF18C +:1026600000EFFFFF0000000000000000000000007D +:10267000000000000001000000000000FFFFFFF666 +:10268000005FFFFF000000000000000000000000ED +:10269000000000000002000000000000FFFFF40640 +:1026A0001CBFFFFF00000005000000000000001438 +:1026B000000000000004000000000000FFFFFFF227 +:1026C000004FFFFF000000000000000000000000BD +:1026D000000000000008000000000000FFFFFFFAFB +:1026E000002FFFFF000000000000000000000000BD +:1026F000000000000010000000000000FFFFFFF7D6 +:1027000001EFFFFF000000000000000000000000DB +:10271000000000000020000000000000FFFFFFF5A7 +:10272000002FFFFF0000000000000000000000007C +:10273000000000000040000000000000FFFFFFF369 +:10274000018FFFFF000000000000000000000000FB +:10275000000000000000000000000000FFFFFFF18B +:10276000010FFFFF0000000000000000000000005B +:10277000000000000001000000000000FFFFFFF665 +:10278000005FFFFF000000000000000000000000EC +:10279000000000000002000000000000FFFFF4063F +:1027A0001CBFFFFF00000005000000000000001437 +:1027B000000000000004000000000000FFFFFFF226 +:1027C000004FFFFF000000000000000000000000BC +:1027D000000000000008000000000000FFFFFFFAFA +:1027E000002FFFFF000000000000000000000000BC +:1027F000000000000010000000000000FFFFFFF7D5 +:1028000000EFFFFF000000000000000000000000DB +:10281000000000000020000000000000FFFFFFF5A6 +:10282000004FFFFF0000000000000000000000005B +:10283000000000000040000000000000FFFFFFFF5C +:1028400000CFFFFF0000000000000000000000CCEF +:10285000000000000000000000000000FFFFFFFF7C +:1028600000CFFFFF0000000000000000000000CCCF +:10287000000000000001000000000000FFFFFFFF5B +:1028800000CFFFFF0000000000000000000000CCAF +:10289000000000000002000000000000FFFFFFFF3A +:1028A00000CFFFFF0000000000000000000000CC8F +:1028B000000000000004000000000000FFFFFFFF18 +:1028C00000CFFFFF0000000000000000000000CC6F +:1028D000000000000008000000000000FFFFFFFFF4 +:1028E00000CFFFFF0000000000000000000000CC4F +:1028F000000000000010000000000000FFFFFFFFCC +:1029000000CFFFFF0000000000000000000000CC2E +:10291000000000000020000000000000FFFFFFFF9B +:1029200000CFFFFF0000000000000000000000CC0E +:10293000000000000040000000000000FFFFFFF367 +:10294000020FFFFF00000000000000000000000078 +:10295000000000000000000000000000FFFFFFF189 +:10296000010FFFFF00000000000000000000000059 +:10297000000000000001000000000000FFFFFFF663 +:10298000005FFFFF000000000000000000000000EA +:10299000000000000002000000000000FFFFF4063D +:1029A0001CBFFFFF00000005000000000000001435 +:1029B000000000000004000000000000FFFFFFF224 +:1029C000004FFFFF000000000000000000000000BA +:1029D000000000000008000000000000FFFFFF8A68 +:1029E000042FFFFF000000000000000000000000B6 +:1029F000000000000010000000000000FFFFFF9733 +:102A000005CFFFFF000000000000000000000000F4 +:102A1000000000000020000000000000FFFFFFF5A4 +:102A2000010FFFFF00000000000000000000000098 +:102A3000000000000040000000000000FFFFFFF366 +:102A4000000FFFFF00000000000000000000000079 +:102A5000000000000000000000000000FFFFFFF188 +:102A6000000FFFFF00000000000000000000000059 +:102A7000000000000001000000000000FFFFFFF662 +:102A8000005FFFFF000000000000000000000000E9 +:102A9000000000000002000000000000FFFFF4063C +:102AA0001CBFFFFF00000005000000000000001434 +:102AB000000000000004000000000000FFFFFFF223 +:102AC000004FFFFF000000000000000000000000B9 +:102AD000000000000008000000000000FFFFFFFAF7 +:102AE000002FFFFF000000000000000000000000B9 +:102AF000000000000010000000000000FFFFFF9732 +:102B0000040FFFFF000000000000000000000000B4 +:102B1000000000000020000000000000FFFFFFF5A3 +:102B2000000FFFFF00000000000000000000000098 +:102B3000000000000040000000000000FFFFFFFF59 +:102B400000CFFFFF0000000000000000000000CCEC +:102B5000000000000000000000000000FFFFFFFF79 +:102B600000CFFFFF0000000000000000000000CCCC +:102B7000000000000001000000000000FFFFFFFF58 +:102B800000CFFFFF0000000000000000000000CCAC +:102B9000000000000002000000000000FFFFFFFF37 +:102BA00000CFFFFF0000000000000000000000CC8C +:102BB000000000000004000000000000FFFFFFFF15 +:102BC00000CFFFFF0000000000000000000000CC6C +:102BD000000000000008000000000000FFFFFFFFF1 +:102BE00000CFFFFF0000000000000000000000CC4C +:102BF000000000000010000000000000FFFFFFFFC9 +:102C000000CFFFFF0000000000000000000000CC2B +:102C1000000000000020000000000000FFFFFFFF98 +:102C200000CFFFFF0000000000000000000000CC0B +:102C3000000000000040000000000000FFFFFFFF58 +:102C400000CFFFFF0000000000000000000000CCEB +:102C5000000000000000000000000000FFFFFFFF78 +:102C600000CFFFFF0000000000000000000000CCCB +:102C7000000000000001000000000000FFFFFFFF57 +:102C800000CFFFFF0000000000000000000000CCAB +:102C9000000000000002000000000000FFFFFFFF36 +:102CA00000CFFFFF0000000000000000000000CC8B +:102CB000000000000004000000000000FFFFFFFF14 +:102CC00000CFFFFF0000000000000000000000CC6B +:102CD000000000000008000000000000FFFFFFFFF0 +:102CE00000CFFFFF0000000000000000000000CC4B +:102CF000000000000010000000000000FFFFFFFFC8 +:102D000000CFFFFF0000000000000000000000CC2A +:102D1000000000000020000000000000FFFFFFFF97 +:102D200000CFFFFF0000000000000000000000CC0A +:102D3000000000000040000000000000FFFFFFFF57 +:102D400000CFFFFF0000000000000000000000CCEA +:102D5000000000000000000000000000FFFFFFFF77 +:102D600000CFFFFF0000000000000000000000CCCA +:102D7000000000000001000000000000FFFFFFFF56 +:102D800000CFFFFF0000000000000000000000CCAA +:102D9000000000000002000000000000FFFFFFFF35 +:102DA00000CFFFFF0000000000000000000000CC8A +:102DB000000000000004000000000000FFFFFFFF13 +:102DC00000CFFFFF0000000000000000000000CC6A +:102DD000000000000008000000000000FFFFFFFFEF +:102DE00000CFFFFF0000000000000000000000CC4A +:102DF000000000000010000000000000FFFFFFFFC7 +:102E000000CFFFFF0000000000000000000000CC29 +:102E1000000000000020000000000000FFFFFFFF96 +:102E200000CFFFFF0000000000000000000000CC09 +:102E30000000000000400000000000000000020050 +:102E400000003DFF00000A1100000A0000000A0413 +:102E50000000FFFF0000FFFF0000FFFF0000FFFF7A +:102E600000000020000000210000002200000023DC +:102E700000000024000000250000002600000027BC +:102E800000000028000000290000002A0000002B9C +:102E90000000002C0000002D0000002E0000002F7C +:102EA000000000100000000100000001000000010F +:102EB000000000010000000100000001000000010E +:102EC00000000001000000010000000100000001FE +:102ED00000000001000000010000000100000001EE +:102EE000000000010000000107FFFFFF0000003F9D +:102EF00007FFFFFF0000000F00007FF800007FF8D1 +:102F00000000FF1C0FFFFFFF0000FF1C0FFFFFFF73 +:102F10000000FF1C0FFFFFFF0000FF1C0FFFFFFF63 +:102F20000000FF1C0FFFFFFF0000FF1C0FFFFFFF53 +:102F30000000FF1C0FFFFFFF0000FF1C0FFFFFFF43 +:102F40000000FF1C0FFFFFFF0000FF1C0FFFFFFF33 +:102F50000000FF1C0FFFFFFF0000FF1C0FFFFFFF23 +:102F60000000FF1C0FFFFFFF0000FF1C0FFFFFFF13 +:102F70000000FF1C0FFFFFFF0000FF1C0FFFFFFF03 +:102F80000000FF1C0FFFFFFF0000FF1C0FFFFFFFF3 +:102F90000000FF1C0FFFFFFF0000FF1C0FFFFFFFE3 +:102FA0000000FF1C0FFFFFFF0000FF1C0FFFFFFFD3 +:102FB0000000FF1C0FFFFFFF0000FF1C0FFFFFFFC3 +:102FC0000000FF1C0FFFFFFF0000FF1C0FFFFFFFB3 +:102FD0000000FF1C0FFFFFFF0000FF1C0FFFFFFFA3 +:102FE0000000FF1C0FFFFFFF0000FF1C0FFFFFFF93 +:102FF0000000FF1C0FFFFFFF0000FF1C0FFFFFFF83 +:103000000000FF1C0FFFFFFF0000FF1C0FFFFFFF72 +:103010000000FF1C0FFFFFFF0000FF1C0FFFFFFF62 +:103020000000FF1C0FFFFFFF0000FF1C0FFFFFFF52 +:103030000000FF1C0FFFFFFF0000FF1C0FFFFFFF42 +:103040000000FF1C0FFFFFFF0000FF1C0FFFFFFF32 +:103050000000FF1C0FFFFFFF0000FF1C0FFFFFFF22 +:103060000000FF1C0FFFFFFF0000FF1C0FFFFFFF12 +:103070000000FF1C0FFFFFFF0000FF1C0FFFFFFF02 +:103080000000FF1C0FFFFFFF0000FF1C0FFFFFFFF2 +:103090000000FF1C0FFFFFFF0000FF1C0FFFFFFFE2 +:1030A0000000FF1C0FFFFFFF0000FF1C0FFFFFFFD2 +:1030B0000000FF1C0FFFFFFF0000FF1C0FFFFFFFC2 +:1030C0000000FF1C0FFFFFFF0000FF1C0FFFFFFFB2 +:1030D0000000FF1C0FFFFFFF0000FF1C0FFFFFFFA2 +:1030E0000000FF1C0FFFFFFF0000FF1C0FFFFFFF92 +:1030F0000000FF1C0FFFFFFF0000FF1C0FFFFFFF82 +:103100000000FF00000000000000FF0000000000C1 +:103110000000031200003500000000010000000262 +:103120000000000300000000000000040000000197 +:10313000000000000000000100000004000000008A +:10314000000000010000000300000000000000017A +:103150000000000400000000000000010000000367 +:10316000000000000000000100000004000000005A +:103170000000000400000003000000000000000048 +:1031800000003FFF000003FF0000000000000001FE +:103190000000000100000001007C10040000000499 +:1031A00000000000000000020000009000000090FD +:1031B00000800090081000000000008A00000080DD +:1031C000000000810000008000000006000007D021 +:1031D0000000076C0000FFFF0000FFFF0000FFFF82 +:1031E0000000FFFF071D291100000000009C0424BF +:1031F00000000000000000010000000100000001CC +:10320000000000010000000100007FFF000000FF3F +:10321000000000FF000000FF000000FF000000FFB2 +:10322000000000FF000000FF000000FF0000003E63 +:10323000000000000000003F0000003F0000003FD1 +:10324000000000000000003F0000003F0000003FC1 +:103250000000000F00000043000000000000000616 +:1032600000000000121700002217000032170000B3 +:103270001215000022150000321500000210000097 +:10328000001000001010000020100000301000009E +:10329000001000001214000022140000321400007C +:1032A00000E38340FFFFFFFFFFFFFFFFFFFFFFFF84 +:1032B000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1E +:1032C000FFFFFFFFF0003000FFFFFFFFFFFFFFFFEA +:1032D000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE +:1032E000FFFFFFFFFFFF3328FFFF3338FFFFFFFF24 +:1032F000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDE +:10330000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCD +:10331000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBD +:10332000FFFFFFFF00003C1000000008000000004D +:103330000000000000000040000018080000080322 +:103340000000080300000040000000030000080324 +:103350000000080300000803000100030000080348 +:103360000000080300000003000000030000000349 +:103370000000000300000003000000030000000341 +:103380000000000300000003000000030000000331 +:103390000000000300000003000000030000000321 +:1033A000000024030000002F0000000900000019A5 +:1033B00000000184000001830000030600000019E2 +:1033C00000000006000003060000030600000306DC +:1033D00000000C8600000306000003060000000643 +:1033E00000000006000000060000000600000006C5 +:1033F00000000006000000060000000600000006B5 +:1034000000000006000000060000000600000006A4 +:103410000000000600000006000003060000001384 +:1034200000000006000010040000100400106440BA +:1034300000106440000000000000000000000000D8 +:10344000000000000000200000000000000000005C +:10345000000000000000000000002000000000004C +:10346000000000000000000000000000000020003C +:103470000000007C0000003D0000003F0000009CB8 +:1034800000000006000000050000000A0000000522 +:1034900000000140000001400000000000000000AA +:1034A000000000C00000013F00007FFF0000004856 +:1034B000000000480000000000000000000000487C +:1034C00000000004000000040000000400000004EC +:1034D00000000004000000040000000400000004DC +:1034E00000000004000000090000000B0000000ABA +:1034F00000000004000000090000000B0000000AAA +:1035000000000001000000010000000100000001B7 +:1035100000000001000000010000000100000001A7 +:103520000000000100000001000000010000000197 +:1035300000000004000000090000000B0000000A69 +:103540000000000100000001000000010000000177 +:103550000000000100000001000000010000000167 +:103560000000000100000001000000010000000157 +:1035700000000004000000090000000B0000000A29 +:103580000000000000000000000008000000020031 +:10359000000001FF00000400000000000000000027 +:1035A0001E491E491E491E490E490E490E490E4923 +:1035B000FFFFFFFF00000000FFFFFFFF0000000013 +:1035C000000025E400008000000000130FFF0FFF43 +:1035D00000000000000000000FFF0FFF10001000AF +:1035E000100010002000200020002000800080003B +:1035F00080008000400040004000400000000000CB +:10360000000000010101010101200101200101016F +:10361000010110010101010101200101200101014D +:10362000010110012001010101011001010101014D +:10363000012001012001010101011001010101012D +:1036400001200101000001230000012300000123EB +:1036500000000123000001230000012300000123DA +:1036600000000123000001230000012300000123CA +:1036700000000123000001230000012300000123BA +:1036800000000123000001230000012300000123AA +:1036900000000123000000200000003200000007AD +:1036A00000000007000000000000000802150020D4 +:1036B0000215002000000030081000000000003358 +:1036C0000000003000000031000000020000000592 +:1036D00000000006000000020000000200000000E0 +:1036E00000000005000000020000000200000002CF +:1036F00000000001000000060000000100000002C0 +:103700000000004000000040000000200000001306 +:103710000000002000010000000204C00003098036 +:1037200000040E4000051300000617C000071C80AF +:103730000008214000092600000A2AC0000B2F8043 +:10374000000C3440000D3900000E3DC0000F4280D7 +:103750000010474000114C00001250C0001355806B +:1037600000145A4000155F00001663C000176880FF +:1037700000186D4000197200001A76C0001B7B8093 +:10378000001C8040001D8500001E89C0001F8E8027 +:103790000000934000000001000000010000000153 +:1037A0000000000100000001000000010000000115 +:1037B0000000000100000001000000010000000105 +:1037C00000000001000000010000000100000001F5 +:1037D00000000001000000080000000C00000010C4 +:1037E00000000001000000010000000100000211C3 +:1037F0000000020000000204000002190000FFFFA8 +:103800000000FFFF0000FFFF0000FFFF07FFFFFFBA +:103810000000003F07FFFFFF0000000F00007FF8DF +:1038200000007FF800000000140AFF000000000004 +:1038300000000001002010010000000001008600CF +:1038400000000100000000010000000000008602EE +:1038500000000000000000000000000000008604DE +:1038600000000000000000000000000000008606CC +:1038700000000000000000000000000000008608BA +:103880000000000000000000000000000000860AA8 +:103890000000000000000000000000000000860C96 +:1038A0000000000000000000000000000000860E84 +:1038B0000000000000000000000000000000861072 +:1038C0000000000000000000000000000000861260 +:1038D000000000000000000000000000000086144E +:1038E000000000000000000000000000000086163C +:1038F000000000000000000000000000000086182A +:103900000000000000000000000000000000861A17 +:103910000000000000000000000000000000861C05 +:103920000000000000000000000000000000861EF3 +:1039300000000000000000000000000000008620E1 +:1039400000000000000000000000000000008622CF +:1039500000000000000000000000000000008624BD +:1039600000000000000000000000000000008626AB +:103970000000000000000000000000000000862899 +:103980000000000000000000000000000000862A87 +:103990000000000000000000000000000000862C75 +:1039A0000000000000000000000000000000862E63 +:1039B0000000000000000000000000000000863051 +:1039C000000000000000000000000000000086323F +:1039D000000000000000000000000000000086342D +:1039E000000000000000000000000000000086361B +:1039F0000000000000000000000000000000863809 +:103A00000000000000000000000000000000863AF6 +:103A10000000000000000000000000000000863CE4 +:103A20000000000000000000000000000000863ED2 +:103A300000000000000000000000000000008640C0 +:103A400000000000000000000000000000008642AE +:103A5000000000000000000000000000000086449C +:103A6000000000000000000000000000000086468A +:103A70000000000000000000000000000000864878 +:103A80000000000000000000000000000000864A66 +:103A90000000000000000000000000000000864C54 +:103AA0000000000000000000000000000000864E42 +:103AB0000000000000000000000000000000865030 +:103AC000000000000000000000000000000086521E +:103AD000000000000000000000000000000086540C +:103AE00000000000000000000000000000008656FA +:103AF00000000000000000000000000000008658E8 +:103B00000000000000000000000000000000865AD5 +:103B10000000000000000000000000000000865CC3 +:103B20000000000000000000000000000000865EB1 +:103B3000000000000000000000000000000086609F +:103B4000000000000000000000000000000086628D +:103B5000000000000000000000000000000086647B +:103B60000000000000000000000000000000866669 +:103B70000000000000000000000000000000866857 +:103B80000000000000000000000000000000866A45 +:103B90000000000000000000000000000000866C33 +:103BA0000000000000000000000000000000866E21 +:103BB000000000000000000000000000000086700F +:103BC00000000000000000000000000000008672FD +:103BD00000000000000000000000000000008674EB +:103BE00000000000000000000000000000008676D9 +:103BF00000000000000000000000000000008678C7 +:103C00000000000000000000000000000000867AB4 +:103C10000000000000000000000000000000867CA2 +:103C20000000000000000000000000000000867E90 +:103C3000000000000000000000000000000086807E +:103C4000000000000000000000000000000086826C +:103C5000000000000000000000000000000086845A +:103C60000000000000000000000000000000868648 +:103C70000000000000000000000000000000868836 +:103C80000000000000000000000000000000868A24 +:103C90000000000000000000000000000000868C12 +:103CA0000000000000000000000000000000868E00 +:103CB00000000000000000000000000000008690EE +:103CC00000000000000000000000000000008692DC +:103CD00000000000000000000000000000008694CA +:103CE00000000000000000000000000000008696B8 +:103CF00000000000000000000000000000008698A6 +:103D00000000000000000000000000000000869A93 +:103D10000000000000000000000000000000869C81 +:103D20000000000000000000000000000000869E6F +:103D3000000000000000000000000000000086A05D +:103D4000000000000000000000000000000086A24B +:103D5000000000000000000000000000000086A439 +:103D6000000000000000000000000000000086A627 +:103D7000000000000000000000000000000086A815 +:103D8000000000000000000000000000000086AA03 +:103D9000000000000000000000000000000086ACF1 +:103DA000000000000000000000000000000086AEDF +:103DB000000000000000000000000000000086B0CD +:103DC000000000000000000000000000000086B2BB +:103DD000000000000000000000000000000086B4A9 +:103DE000000000000000000000000000000086B697 +:103DF000000000000000000000000000000086B885 +:103E0000000000000000000000000000000086BA72 +:103E1000000000000000000000000000000086BC60 +:103E2000000000000000000000000000000086BE4E +:103E3000000000000000000000000000000086C03C +:103E4000000000000000000000000000000086C22A +:103E5000000000000000000000000000000086C418 +:103E6000000000000000000000000000000086C606 +:103E7000000000000000000000000000000086C8F4 +:103E8000000000000000000000000000000086CAE2 +:103E9000000000000000000000000000000086CCD0 +:103EA000000000000000000000000000000086CEBE +:103EB000000000000000000000000000000086D0AC +:103EC000000000000000000000000000000086D29A +:103ED000000000000000000000000000000086D488 +:103EE000000000000000000000000000000086D676 +:103EF000000000000000000000000000000086D864 +:103F0000000000000000000000000000000086DA51 +:103F1000000000000000000000000000000086DC3F +:103F2000000000000000000000000000000086DE2D +:103F3000000000000000000000000000000086E01B +:103F4000000000000000000000000000000086E209 +:103F5000000000000000000000000000000086E4F7 +:103F6000000000000000000000000000000086E6E5 +:103F7000000000000000000000000000000086E8D3 +:103F8000000000000000000000000000000086EAC1 +:103F9000000000000000000000000000000086ECAF +:103FA000000000000000000000000000000086EE9D +:103FB000000000000000000000000000000086F08B +:103FC000000000000000000000000000000086F279 +:103FD000000000000000000000000000000086F467 +:103FE000000000000000000000000000000086F655 +:103FF000000000000000000000000000000086F843 +:10400000000000000000000000000000000086FA30 +:10401000000000000000000000000000000086FC1E +:10402000000000000000000000000000000086FE0C +:1040300000000000000000000000000000008700F9 +:1040400000000000000000000000000000008702E7 +:1040500000000000000000000000000000008704D5 +:1040600000000000000000000000000000008706C3 +:1040700000000000000000000000000000008708B1 +:104080000000000000000000000000000000870A9F +:104090000000000000000000000000000000870C8D +:1040A0000000000000000000000000000000870E7B +:1040B0000000000000000000000000000000871069 +:1040C0000000000000000000000000000000871257 +:1040D0000000000000000000000000000000871445 +:1040E0000000000000000000000000000000871633 +:1040F0000000000000000000000000000000871821 +:104100000000000000000000000000000000871A0E +:104110000000000000000000000000000000871CFC +:104120000000000000000000000000000000871EEA +:1041300000000000000000000000000000008720D8 +:1041400000000000000000000000000000008722C6 +:1041500000000000000000000000000000008724B4 +:1041600000000000000000000000000000008726A2 +:104170000000000000000000000000000000872890 +:104180000000000000000000000000000000872A7E +:104190000000000000000000000000000000872C6C +:1041A0000000000000000000000000000000872E5A +:1041B0000000000000000000000000000000873048 +:1041C0000000000000000000000000000000873236 +:1041D0000000000000000000000000000000873424 +:1041E0000000000000000000000000000000873612 +:1041F0000000000000000000000000000000873800 +:104200000000000000000000000000000000873AED +:104210000000000000000000000000000000873CDB +:104220000000000000000000000000000000873EC9 +:1042300000000000000000000000000000008740B7 +:1042400000000000000000000000000000008742A5 +:104250000000000000000000000000000000874493 +:104260000000000000000000000000000000874681 +:10427000000000000000000000000000000087486F +:104280000000000000000000000000000000874A5D +:104290000000000000000000000000000000874C4B +:1042A0000000000000000000000000000000874E39 +:1042B0000000000000000000000000000000875027 +:1042C0000000000000000000000000000000875215 +:1042D0000000000000000000000000000000875403 +:1042E00000000000000000000000000000008756F1 +:1042F00000000000000000000000000000008758DF +:104300000000000000000000000000000000875ACC +:104310000000000000000000000000000000875CBA +:104320000000000000000000000000000000875EA8 +:104330000000000000000000000000000000876096 +:104340000000000000000000000000000000876284 +:104350000000000000000000000000000000876472 +:104360000000000000000000000000000000876660 +:10437000000000000000000000000000000087684E +:104380000000000000000000000000000000876A3C +:104390000000000000000000000000000000876C2A +:1043A0000000000000000000000000000000876E18 +:1043B0000000000000000000000000000000877006 +:1043C00000000000000000000000000000008772F4 +:1043D00000000000000000000000000000008774E2 +:1043E00000000000000000000000000000008776D0 +:1043F00000000000000000000000000000008778BE +:104400000000000000000000000000000000877AAB +:104410000000000000000000000000000000877C99 +:104420000000000000000000000000000000877E87 +:104430000000000000000000000000000000878075 +:104440000000000000000000000000000000878263 +:104450000000000000000000000000000000878451 +:10446000000000000000000000000000000087863F +:10447000000000000000000000000000000087882D +:104480000000000000000000000000000000878A1B +:104490000000000000000000000000000000878C09 +:1044A0000000000000000000000000000000878EF7 +:1044B00000000000000000000000000000008790E5 +:1044C00000000000000000000000000000008792D3 +:1044D00000000000000000000000000000008794C1 +:1044E00000000000000000000000000000008796AF +:1044F000000000000000000000000000000087989D +:104500000000000000000000000000000000879A8A +:104510000000000000000000000000000000879C78 +:104520000000000000000000000000000000879E66 +:10453000000000000000000000000000000087A054 +:10454000000000000000000000000000000087A242 +:10455000000000000000000000000000000087A430 +:10456000000000000000000000000000000087A61E +:10457000000000000000000000000000000087A80C +:10458000000000000000000000000000000087AAFA +:10459000000000000000000000000000000087ACE8 +:1045A000000000000000000000000000000087AED6 +:1045B000000000000000000000000000000087B0C4 +:1045C000000000000000000000000000000087B2B2 +:1045D000000000000000000000000000000087B4A0 +:1045E000000000000000000000000000000087B68E +:1045F000000000000000000000000000000087B87C +:10460000000000000000000000000000000087BA69 +:10461000000000000000000000000000000087BC57 +:10462000000000000000000000000000000087BE45 +:10463000000000000000000000000000000087C033 +:10464000000000000000000000000000000087C221 +:10465000000000000000000000000000000087C40F +:10466000000000000000000000000000000087C6FD +:10467000000000000000000000000000000087C8EB +:10468000000000000000000000000000000087CAD9 +:10469000000000000000000000000000000087CCC7 +:1046A000000000000000000000000000000087CEB5 +:1046B000000000000000000000000000000087D0A3 +:1046C000000000000000000000000000000087D291 +:1046D000000000000000000000000000000087D47F +:1046E000000000000000000000000000000087D66D +:1046F000000000000000000000000000000087D85B +:10470000000000000000000000000000000087DA48 +:10471000000000000000000000000000000087DC36 +:10472000000000000000000000000000000087DE24 +:10473000000000000000000000000000000087E012 +:10474000000000000000000000000000000087E200 +:10475000000000000000000000000000000087E4EE +:10476000000000000000000000000000000087E6DC +:10477000000000000000000000000000000087E8CA +:10478000000000000000000000000000000087EAB8 +:10479000000000000000000000000000000087ECA6 +:1047A000000000000000000000000000000087EE94 +:1047B000000000000000000000000000000087F082 +:1047C000000000000000000000000000000087F270 +:1047D000000000000000000000000000000087F45E +:1047E000000000000000000000000000000087F64C +:1047F000000000000000000000000000000087F83A +:10480000000000000000000000000000000087FA27 +:10481000000000000000000000000000000087FC15 +:10482000000000000000000000000000000087FE03 +:104830000000FF00000000000000FF00000000007A +:10484000000001D00000350000000001000000025F +:104850000000000300000000000000040000000150 +:104860000000000000000001000000040000000043 +:104870000000000100000003000000000000000133 +:104880000000000400000000000000010000000320 +:104890000000000000000001000000040000000013 +:1048A0000000000400000003000000000000000001 +:1048B00000003FFF000003FF0000000300BEBC201B +:1048C00000000000000000050000000300BEBC2046 +:1048D00000000000000000050000000D0000000CBA +:1048E000000000000000001002150020021500204A +:1048F000000000300810000000000033000000300D +:104900000000003100000002000000040000000070 +:104910000000000200000002000000000000000291 +:10492000000000070000000200000002000000017B +:104930000000000300000001000000020000004031 +:104940000000004000000004000000200000000FF4 +:104950000000001B00008000000103C000018780F0 +:1049600000020B4000028F00000312C0000396807B +:1049700000041A4000049E00000521C00005A58027 +:10498000000629400006AD00000730C00007B480D3 +:10499000000838400008BC0000093FC00009C3807F +:1049A000000A4740000ACB00000B4EC0000BD2802B +:1049B000000C5640000CDA00000D5DC00000618064 +:1049C00000000001000000010000000100000001E3 +:1049D00000000001000000010000000100000001D3 +:1049E00000000001000000010000000100000001C3 +:1049F00000000001000000010000000100000001B3 +:104A000000000001000005AA000005990000059DB6 +:104A1000000003C00000FFFF0000FFFF0000FFFFD9 +:104A20000000FFFF000000460000000C07FFFFFF32 +:104A30000000003F07FFFFFF0000000F00007FF8AD +:104A400000007FF8FFFFFFFFFFFFFFFF0000FF00F8 +:104A5000000000000000FF0000000000000019003E +:104A600000000000000001D200001500000000015D +:104A7000000000020000000300000000000000042D +:104A80000000000100000000000000010000000420 +:104A90000000000000000001000000030000000012 +:104AA0000000000100000004000000000000000100 +:104AB00000000003000000000000000100000004EE +:104AC00000000000000000040000000300000000DF +:104AD0000000000000003FFF000003FF0000000F87 +:104AE00000000007000000000000000E0315002079 +:104AF0000315002001000030081000000000003302 +:104B0000000000300000003100000003000000063B +:104B1000000000030000000300000002000000008D +:104B20000000000200000000000000060000000479 +:104B3000000000020000000200000001000000046C +:104B400000000001000000020000004000000040E2 +:104B50000000000400000020000000020000001F10 +:104B600000001000000020800000310000004180A3 +:104B7000000052000000628000007300000083808B +:104B8000000094000000A4800000B5000000C58073 +:104B90000000D6000000E6800000F700000107805A +:104BA000000118000001288000013900000149803F +:104BB00000015A0000016A8000017B0000018B8027 +:104BC00000019C000001AC800001BD000001CD800F +:104BD0000001DE000001EE8000000F000000000177 +:104BE00000000001000000010000000100000001C1 +:104BF00000000001000000010000000100000001B1 +:104C000000000001000000010000000100000001A0 +:104C10000000000100000001000000010000000190 +:104C20000000000100000001000000010000061467 +:104C300000000600000006040000FFFF0000FFFF68 +:104C40000000FFFF0000FFFF000000200000002028 +:104C5000000000000000000000000023000000240D +:104C600000000025000000260000002700000029A9 +:104C70000000002A0000002B0000002C00000001B2 +:104C80000000000107FFFFFF0000003F07FFFFFFDC +:104C90000000000F00007FF800007FF80000000017 +:104CA00000000001CCCC0201CCCCCCCCCCCC02019D +:104CB000CCCCCCCCFFFFFFFFFFFFFFFF00000000CC +:104CC0000001000100330A07CCCCCCC1FFFFFFFF7D +:104CD000FFFFFFFF10000000000028AD7058103CDF +:104CE000000000000000FF00000000000000FF00C6 +:104CF00000000000000002830000350000000001F9 +:104D0000000000020000000300000000000000049A +:104D1000000000010000000000000001000000048D +:104D2000000000000000000100000003000000007F +:104D3000000000010000000400000000000000016D +:104D4000000000030000000000000001000000045B +:104D5000000000000000000400000003000000004C +:104D60000000000000003FFF000003FF000E0000F5 +:104D7000011600D60000FFFF000000000000FFFF4A +:104D8000000000000000FFFF000000000000FFFF27 +:104D9000000000000000FFFF000000000000FFFF17 +:104DA0000000000000000000000000000000FFFF05 +:104DB0000000000000720000012300F30000FFFF6C +:104DC000000000000000FFFF000000000000FFFFE7 +:104DD000000000000000FFFF000000000000FFFFD7 +:104DE000000000000000FFFF0000000000000000C5 +:104DF000000000000000FFFF00000000BF5C00009A +:104E0000FFF51FEF0000FFFFF00003E000000000CF +:104E10000000A0005554000055555555000055554B +:104E2000F0000000555400005555555500005555EB +:104E3000F0000000BF5C0000FFF51FEF0000FFFF67 +:104E4000F00003E0000000000000A0005554000046 +:104E50005555555500005555F000000055540000BB +:104E60005555555500005555F00000000000000054 +:104E70001F8B080000000000000BFB51CFC0F003A7 +:104E800009CFE544E52BB0A2F23BD950F9038D33AD +:104E90009919180A80B80B88CB99F1AB0D61C2142F +:104EA000E39045B0F74A3130C84A40D8011203EFC9 +:104EB000B7514C7B2CAC89961ED421F4440D082D9F +:104EC0008226CF0995DFA60CA14535B19BBB1D2AD3 +:104ED0000F00E9FCA3906003000000000000000048 +:104EE0001F8B080000000000000BED7D0B7455D5F2 +:104EF000B5E8DAFBECB3CF37393BE1249C84803B47 +:104F00002140D0800708102CB69B9F8D95578F7C31 +:104F10006CF4A23D20D5C83778B1CDAB6DCF867C7F +:104F200008016950AEA57DD671C04FD16B6FA34506 +:104F30008BE3D9F6A0D68BEFD57723D08A2D5E03ED +:104F4000B55E6D8587BF4AC7B5E5CD39D7DAE7ECE1 +:104F5000BD939304ABDE8EF10C4357D6DEEB33D713 +:104F6000FCADB9E69C6BC7179CC6D40B183B873FBA +:104F70009F63AC57628C4DCF95D673E637AE6375A1 +:104F80008C35C554BD0BDEADF6B0E69E5AAC8F9F96 +:104F9000CF2633E6C5F6650C7E85FF95C0EF9E856E +:104FA000FAA62863EFA5DBE31E3D378EBB6C5218D3 +:104FB000D3A642C9B6F77A0AA15FDA7BA6CFCFE8BB +:104FC000E75C15632DC7A7343C63D5E1BF182B8878 +:104FD000BE7611FC3293CD3CE781F1596D64D3204C +:104FE000E3FF21754853C631F67E2ADEF0CCB8FEC9 +:104FF000EFAD75AC66EC555F31AED354AF99C4D804 +:105000000CE6A77558EB538A3B4B936168B7EF39B1 +:105010004DA9C9C1C3A2B0C859F05C6119DFD4FE63 +:10502000F067F1C74C1A0FE6C9D03C56BF3E80CF9F +:10503000B63E77FFECB8A23F53E0DF0CC682BC0956 +:10504000BB5B4A7E06E914987FAB590E7858FDF099 +:10505000550CE1C4752426E5E0B7E6B5D6919DDF91 +:10506000B59E7CEBC8CE2FFAE5C3B7D5EEEDF9EDD2 +:105070001D4C66ECA8571F9D403E6998309F017DEE +:1050800017219FCCCAD1E5AA05ED044F3EBA007F97 +:10509000E81AE2CB138E67889FB6D603D9D9461695 +:1050A00070F06776FE21F827D99F7FAE5CF231F071 +:1050B000CF6D827F584309C985B57E37BE9BE67B9D +:1050C0004FF8260F826FD1DFA25F3FFECBD7AF3FF5 +:1050D0009F9803F28918DFE2176B9EBF15DEA1F8D7 +:1050E00083B16EA21F63090FCE9BABA719AF5BED17 +:1050F0006C6529B081588F27DAF196673296411393 +:10510000F58627AABCD6679723D1CFABB224D2A706 +:10511000151F9589CEC0473E2D7E2FEAB107984ACC +:10512000F32A513F8D03787A80E65BE8C49F17E04D +:1051300093A0BDB7B4269284F158B8784039D8927C +:105140006A6E506C7CB2C5CB1A7BC27C5D34CF18C2 +:10515000961E81F8FB609EBEA820FF386E7CB57A53 +:10516000E3C792A07FCD12357E3FAE5F1A783D999E +:10517000EC7A5413F103EBC90CB69ED682F1623D72 +:1051800003CB759B588F057FF6B9B5AE3CFDDCF0BF +:10519000E77BDFE63562CB6108B320CFBAA2B0AEC1 +:1051A0004AC68EE3BA909E6195E8E48D7613FFC2FD +:1051B000FA8E13DFB8D6077C457CE45E9FA2F9091E +:1051C0002FD6FC8AFFAB0DCAB41C9C6F308DD6E97C +:1051D000CDC211A7713C1AA37ECFB3E41BF81EF811 +:1051E000AF97F82F6C301C5F8DC100176369349A3C +:1051F00040D7B683B358ED24525B6C0D946A38C91E +:105200001642BBB6BF781A911F59B4CE2127AFA260 +:10521000B22CC98F374B6F5AF52388FFDA1C9E9446 +:105220000A4E7F80F7E58D50F76A33A675414D969B +:10523000383FB8F103789325DBF88AC6F179E4BFEB +:105240004DE0F8CA23C78BFCFFE8C017FC1828976D +:10525000318BAF04DEBA4733A2D3EE8A7A59D60136 +:105260000F1EEDB94DF0AE4C4F1F8495B213BE64C6 +:10527000B164E3A758F20CCDDF25D6B5C0531B3877 +:1052800009F53B1AAA222BA0AC47661D808F76A495 +:1052900000762FCA9D9F919E7E99C39F8FDFF6A4B3 +:1052A000F4066C9FADD72B0D6968BFA7ED64F73C82 +:1052B000C05B7BB47A2AE9982649C17505713D0027 +:1052C000FF8562FE1DB3BE4AF406FC5D88F8B3F8A4 +:1052D000D0E2B790913634A88F65695306128FE8F3 +:1052E00066F18CCE71A3D8F0149B2F9BBE42C2C333 +:1052F00034C443794DFC2905DA4592DD07C124CA3F +:10530000E20126DF5A0D70DDF9DCB8A95D7A0EEEF8 +:105310007F9464C77ECC94784DA220BFFCED063C00 +:10532000D5723996B05D7992A5913EDBF039E0E314 +:105330005D969887EB296F8A7B713D87256BFE18F8 +:105340001A43AC4DC0BD7B4590F8AD6DB4B6C703F4 +:1053500072F94584633A31949BBFBE284DCFE1C5B5 +:10536000E2AF0A3979153E57E269E44C166E4A6796 +:10537000901F5A65D644FAC464BD384E99C4723F32 +:10538000305FA456DF8B7A60B9A04399D1B1410652 +:10539000F98BC514C26359DFF28568E7848E5FFE1E +:1053A00006E3CF699F2A5FD96B22FF8DAAEDA6F98C +:1053B0008AE5E4725C6764D6330CA708AE31250633 +:1053C000FBD79DDE34D360BDC1D9BD46228C74BEEF +:1053D0008C2DB7D925B78875C25E68A4C3397AEE1B +:1053E000F670FED8397F73E0A630B60B127CD56C10 +:1053F000BEE0038349C00741E403CEF71B70FD9173 +:10540000645A2251A9896FC6F5039F8F44BEBAD34F +:105410001B2FC37E77CE521B912F011F47910F4345 +:10542000B2C0850EFF10CF329FF752C94B7079C0C2 +:105430008647FBBC38CED2BA84DB7FF72619F0153D +:10544000467C007E145DFB420DE0714492C50D6206 +:1054500097330C554E48E03124F007F86947FC14A7 +:10546000346432C887E5B56926C13C7B94E657BEF3 +:1054700009FDF71CF2C44DDDC6770CF86E520E4FD5 +:10548000556D205F76FBE43CED465427C89F4A9853 +:10549000EF5FD67E00FCF91D844BD1387F0E77DF9D +:1054A000F1B778F457515F299A8C78B46C6DBFDFEF +:1054B000F457C2109EA31E86EBF1744FC920FE0064 +:1054C000A7F1FB717D151C9F2093F721DFD1FE37DB +:1054D00023677F046A6496B1D91BDE8AA0A3CE1A23 +:1054E00081AF60BE5BADF95A54824381FD80D5E641 +:1054F000D6093B03CB00BE7099E7C662FD369AC75A +:10550000EAA784592600F4EBAA99CAEC76B282FD88 +:10551000A00D32D1B9CAFEFDF2E3C535DF12279CDA +:10552000C3EE1756F4D70638E7F4EFA7B0D72C7EB2 +:1055300000E4FD1F71AEB4E803F6D10109F6CD8099 +:105540003F7E6839E07D0BBE02BA76304E77969684 +:105550001D7AC553219FF0919DA6F37162DC7EF206 +:10556000869B5952CFD587E28BA0E0ABBB59F2772F +:10557000288F7E3D49F8DD56C2BA512F66F18CF670 +:1055800023F25BCD126AAFC67A8EAD20BB2436857E +:105590007841F0D5363FF18E6D9ECD045F672ACD00 +:1055A0007EE7C57D828FEFD713BCB4F8B286F37166 +:1055B00067EDA208C3E7FE1E86F21FEA7E2423479A +:1055C0006DFC08702F0139F381D0221DFE19CA73BA +:1055D000165FA2BD120BD2738BFF2C7EB3C61F5A6F +:1055E000EEA2B4DF9533BE8ED12C2331E247BEBF8D +:1055F0008F12F81F537D4642BDA127B4B9B02C5677 +:10560000D5187F0ACBEF173D50B687E09CAF21BD80 +:1056100025638474EEA2E1F385DBDE296B524EF63E +:10562000D9D613493AEBE13AA8DBE42DC86CEF2B4D +:10563000FB8FA709FB89E9F138CADD766FA6114C0B +:105640003B36562E991305BA6E0F648EA1E9D7DE4C +:10565000199BD300F5F018C67A514E955E3FCAEB00 +:10566000A5B889209E749DE42C22E87DFB6C9915D9 +:10567000028A0BCB94340AC7C13E0F53A1FEED98AA +:1056800092F649029980BF0201AB35CEB7FB7EECA2 +:10569000477A6FAB3BA961991D3FC6DB8744FBF797 +:1056A00027C90CED086BFCF7C75970F5105CC13EBB +:1056B000D0D9F0BE00E64B5722567BFC73A01EA942 +:1056C00087833CD667A70D42AF11E5F234849DA0D5 +:1056D000C4B9DE55E29DBDBC5448DE5877BFFDFD20 +:1056E0000B7209F2630237B9ECFE6ECD3324BF0DA5 +:1056F000B71D70B002EBF91A0BC6D1BE7D454A5EEC +:1057000083F3B62CE9645E40D5FB4B1B0D2C5B602C +:105710004492977A397D7FA5E05BE8B72331328DDB +:10572000FD9411152508DF8E7ABECFE69B775BCA04 +:105730001C576D3BBF6D033CA33C6EAB9DEA1FA89D +:105740005F28D631AE7A048CDBA08FD406F0630CD0 +:105750003DEE22C7B857B0E4ADF2F4FEE333C1DF4B +:10576000323001CA4B30BC8BF6EFFE7C6FAB7BFA5C +:10577000D7772FBF318678888E34A648C0EFFB419B +:105780009D24EAA11E321E41797870F39573C240C0 +:1057900097A8CFD820C3FB439BE7CFD90E72134500 +:1057A000FB0294C3FFDCDC246DC2FEE843B984B184 +:1057B000A7E4959BCC30C73FEAC9AE546FD9AB6420 +:1057C0008F1FA372A7CCEDD45D82BF83C0C6A4DFB8 +:1057D0006AA09D4D7E7D4A333DF7571C733C07F30D +:1057E00033897CA7085102FBE9BB889FF2C6EE8390 +:1057F000487745739E1BDC78FFBECCEDC517647EF1 +:10580000AEDB3D91AFFF6CDFD841CF095B601DF689 +:1058100073C20B08FF740E67BC16E184F7363815A7 +:105820002107D1C5CB889ECA127ECE64CB183F47D4 +:1058300008B951B466EBFCF028AEC37D7EC8C2E95E +:105840004DC69AE1F9ED45A04B617FBCDD6B362674 +:10585000A85D5F6C91CDDEAA400369BAADDF2C581C +:105860001FEA87DA5898EC1D8137BF94CCA0DC84FE +:105870001ACD0CC71B87C3EAD751B08AF012A831E2 +:10588000B83C0BF8FF4DAC3BDF3AF2AEBBD179DE52 +:10589000B4DAE7CEED891764DBF9202BBF7596FCEF +:1058A000F6FAAFB2E9A9DBEBCE4F6EB72B7D7EB433 +:1058B000E777844F768E45BF495C8E8F83A5B462AF +:1058C0001DEDBE49D553EC7EE9CDBEB927ED72176B +:1058D000AE85F16CF4BDFD3CE53B3B7FD4397F7B6D +:1058E00034EFFC6FCB5CDFBD8978F60BBA7594752D +:1058F000F8115F6E78AC7E929CFC4F3BDC7E9DFB8A +:1059000023FAEBC33E073ECF570FBACBB0C41228E1 +:10591000EFADE1A9DA0A1B5EC21E2E6F97FA8CB0BA +:10592000A7A43FDCE7AB27F3CDDB1E75CE3B3937B1 +:10593000EF649C7732EA3E3CAF250ACD10EE6389D6 +:10594000ED6FA15D17D4CC861B901F5DE7824201ED +:10595000E33F2DBD8CE8E3FF9587DBFA8A61D23EF9 +:10596000027248FB48B764707F9E41F65890F1730D +:105970004089B0C79EC8DA09B6F34015CEC7ED31ED +:10598000373E4082B5D742767D6DF2FEE21CBCA266 +:105990005E0810D3BFF45B80EBE6435E867E1DF6A7 +:1059A00001B4B69D474EFE0ECE6FB0BE9BC579EFDB +:1059B000F7CC50F1E529263720BCA7D8E1C26936DB +:1059C0007A2FF4707F1AEBF4921D65C23F84F32B9B +:1059D000DD5E875D75D36E67FD46B6A814F7E31BE1 +:1059E0007779591AF071B36BFF99EDD168DC9B5848 +:1059F0007307D2B95DE8E5151A6CC1609AAFFDC9AD +:105A0000F7672C87FA620FDF17FE908295F97270A4 +:105A1000AD0AA75503DEFF6EFFB4AB3FC3B07FBA3C +:105A2000A31CE5A788DBC16E7EB8A1D309DF50F0C7 +:105A3000BBE1B5ECF47C7028FB243AEFBBE75D2EAC +:105A4000F4AE45AF167FE16416017B24C04B732E84 +:105A5000A3F3A3F9EF81742BCCF32D8FE00BD63C8D +:105A600093FBB79B2F26BD3744BFCD1FB25F07F610 +:105A70009BDEBF5F57349D407D6D9D9F02FE66C2D9 +:105A800085A4F07349576C88F7D583BF77C37555E4 +:105A900011EC0717F7870FEC9C3B504E8F7A9B67F2 +:105AA0007226E6F0F9109F1E2CB97D4FF60EB45FFA +:105AB000AF843B25182F10DECFD05F13D09DF6FFAB +:105AC0007AFC05F55D0D237D17AA71BE77DB41F7E2 +:105AD0000B7DC15886E4A890440CF5403843FB5731 +:105AE000BDF266B6BDED7C7B4B0CF4C688FCFA4972 +:105AF000060D1CF6A3FEE6FA4012750B8EB7BBA589 +:105B00000694875BE048D232D53EAE4AE3F6D3072F +:105B10001FC0FB19880FC6F8792C1E433C75A630B0 +:105B200050C3D87B4ABC11D7FD5E586526FAF3BD39 +:105B3000CD745E3047331DFDE9BEEAC495E4473FAE +:105B4000EA89CADC2E263C759435905FE3271EEE69 +:105B50003F02439FFC11BEB0691840C70EB03F8A98 +:105B6000D0AFFD2D1E3F99134E26B19F27D6E8F5E5 +:105B700041BF7F7DF8069A7755EC3205CF394FE16A +:105B80003880CF530F3D3283017C1D3F2C60193A82 +:105B9000A7A4553CA7ACDAEF31D09FB5FA4705343E +:105BA000FFAA476F7A6021E2E72797EAAF913E6D3F +:105BB000A5FEAB1E5FFC6F26BC6F05FDEB077AB43C +:105BC0006E127E48331E5B0C5DD7FAD897D10EB2A9 +:105BD000D66FE12F506D32DCEF56EDABA4737956E2 +:105BE0008E15685F8B761BFBF2A201F6BBD73CDCFF +:105BF000AFF76601F7B749FB0E5E4FF0F57CC98B36 +:105C0000EB922A9AD9EF61BEDF0A3C413B3A5798A2 +:105C10000F4AE971F0FECD07F7A8559370DE3DEA13 +:105C20000AF2E76CA276169C817D9B4CD45F015DE5 +:105C3000AFC4AD61DE8F7E58D807CFD7EFF364D005 +:105C40003F0925F92903BAEC38BFC3FE129680EE4E +:105C5000EB045FAEDBBF96F4FBBA9E6DB48FAD3F35 +:105C6000E0D46B80578A8FAE7ED1135F88F51FFF1B +:105C7000A0500778FED07B7F21E21FE659AE463068 +:105C80002EE0940B1CFF6C71FFF1183B43F1C0F543 +:105C90003D5BF97C2EBDF907FCA5AC7F7C35AC14CF +:105CA00044897F457C95ED1B312CFFC3EA1FBE77ED +:105CB0008F09F3BDF9E81FEFC1F8C99ABFBE73CFD2 +:105CC0006D28CF3F0B68A8F7D73FF4FB7BBE0E785B +:105CD0003C75C027235FAC7AE88D7FBF0DEA7F7AE1 +:105CE000624231AABA710A97E7D38FFCB95487711F +:105CF00036FE74C1485CF7C6C7E68D6483D81BA71F +:105D0000818FD23E3B3C69A29F7E00C61B09D527EE +:105D100045E9A2C7D3FB9F1E83F09D3AE68BA36C97 +:105D2000AE876728CFEB7AD6921F15EBDF00BCAEAB +:105D30007B780BC529FBE3D71C25533020330A5D44 +:105D4000ECEBF62FBEF2D23A2CBD711DC76367682B +:105D5000FF74F75B7F14E878717EBAAD6789089E9F +:105D6000FBD73FBC95CFEBA2DB29FC65567FBACDB4 +:105D7000539C71F13F3D784D24832FF78F18F09C91 +:105D80006EC5C3D73EB6343250FCDE8EDFCC30F069 +:105D9000DB24FC33458AB15829413EF8E707BE07AA +:105DA000F83DFD922FBE101072FA87EF8D61C0177B +:105DB000AF7BCF5C8FF277E6A73E6D2FF459F5D31A +:105DC00017699F3EFDD80BAA4EFB1C988860CF9D9B +:105DD00066D99F5EB4EFD68978C2FAFB0A32BEC29A +:105DE0001C9DD6A5AF6AD00BE939F939D6A539BFC4 +:105DF000AF4B1F5C220D40B72EA58AEBCB348F8FA3 +:105E0000ADBDEFB72A0B3BE929D5231D4F5C86CFEB +:105E1000F3D1D15ABF86EB9F69A3E77D5C4EF3C9EE +:105E2000E3E93D3E05F7418BBEA7451C767D5A7AD6 +:105E3000910D20A7967DC33CCB06A5939B1FDA5DF1 +:105E4000FC60AD7728391E7A1DE787A75B3128569D +:105E5000D21F5F9BCA400FE37E54A8A6713FEAF0B1 +:105E6000EA2F9AC817CF79D95EE8D25A3883E90366 +:105E7000F8B9DAD0CE9B90AB7BC306F9FDBD9A4E44 +:105E8000E731779CDB0BC703DD06CFD32F4F18D943 +:105E900087E75899FB85DB0FCE62A8FFB1ACC43809 +:105EA0006FCB34F2D758FD3DB1B82945D16FAC4D19 +:105EB0005506185F6D9941EDFB9FD7BA9BF6427D61 +:105EC00047AC348EF67E57D17176829DFFB96DBB9B +:105ED00062D239B433BCD95FE53807437DE073E85B +:105EE000D3CA20E7E0F33DBF65E78F3AE76F8FE65F +:105EF0009DFF08CAFF5689F375BFF3921626BF426D +:105F0000B990E7DF0BBD3F9A6536316EDF24FC7632 +:105F10007F75E39983E89F1E5DFEEBB25FC03C1185 +:105F2000D646FE69D8F5EBCE4D1B8C9F9DFEE980D1 +:105F3000A0374B083F792E3EC9E71371E2F773F0A3 +:105F40003CB2027EBD7B661FF9CB2F8029BD005F6E +:105F5000E5127D33F9CBCB673CE5257EF870FEF288 +:105F60002CBFE816BF988EF37DA7FEF19CEFFD5E77 +:105F70007EEE8173B6DF3BBD3F7D3A3FA6F3FD4821 +:105F80006FF67C3FD23B805FA19FDD3CCCF8E07791 +:105F90001617923D1A3A2E911E31E71A9217F9B44C +:105FA0008AC53167E815293901D7E95D62FE2B867C +:105FB0005C434AF30589F040FE2AEE6FBEDDE56FD3 +:105FC0003E5FBFD570FDCDE7EB8F1AC4DF3CCF5BE2 +:105FD000D27F7CB7BFD953B08BCE7781F3F43747EC +:105FE000471853A438D62E9DF7CB58CECF7C757B5F +:105FF000E13CEE6766E457BEB6FD73AD26C0151DE5 +:10600000653C82EDFBBC9F9D877199E858FEBEBE42 +:1060100003DE87317EDB6CE0F9EF9B2ADF177C49DA +:10602000F504EED7BE0AE1478DB13EC9E62FF6353D +:106030002633286F277CC924AE33A2A50F4A3AEA3B +:10604000E36E09F1B0C013A673E9DB158CE235F9F4 +:10605000F07907E697C040DD299E6FE26BE071C2E0 +:10606000CE944679273B52317ADE9532A87C97252B +:10607000D622DFF82A78BC7AB7F083B4AAAC09CB71 +:10608000C362DFFEADE0EB5CC9FD224FBFEC2B5BD2 +:1060900089708583645FE6A773CD389C7F772A3E3D +:1060A0000EE7ED48D553BD4B4AEB18CF6A6DFFF9AB +:1060B000663FC881E6D1CAB0DED1F6CCE6F9B32896 +:1060C0007F80F499479F3C4EB1ED57ED42BE4306A9 +:1060D000CFAF0B19F07E1AF6E7798EFDE617704305 +:1060E0007B8A178534DE7EA7D0DFFDF028C6EF3E21 +:1060F000F820437B2D983425C44F0CF641ECD77D16 +:10610000F025DAB7E134437ECC704B2DC1D7E9CD11 +:1061100034E239AEFBE013B4DF8656764BA81FBEDF +:1061200027E62F6BA9A3FE9D01DE8E7E282F4ADF76 +:10613000CBF3A24C3AAF7AB5F15558FF818003CE2C +:106140001232E56DB57C96E65174B357E4CDFD008F +:10615000E9C7DE74FBB1399F9583B8A39FA2BC3E0B +:106160006CA0DD553EBB742EDA93E5C68594375995 +:106170005E1D5E4EF5FAD21BB07E87A45D351FF31F +:10618000DC8A64CA732BAFAFF90A7F7FC94DF8FE72 +:10619000396F11C1A3CD6DA8C1756B187F447E16F0 +:1061A000F147A6EBB23D2E787B6D55840DA2576862 +:1061B00087B3F423C965107D23B67AB1AB5EEE6A6E +:1061C0005FE57A7FA1EBFD5447BD45E09BD5A9E98A +:1061D000FB11DF7D8A232ECE9A81B1018FA100AF02 +:1061E0001F2CECF29F08F3F2A48D4F3A8758D77119 +:1061F000DC3431FEA3D9D687FFF30773F52AC21B1F +:10620000F949505F18B24D5FD481BE98ECD017A603 +:106210003D4E62D317AF21FD3FACBEB0F2D23A453E +:106220005EDABB2C7906F58FAF1EF4C664BB5E88C0 +:1062300037A13E8CA9E179CA2CD20B145703CE6F3B +:10624000453F8C5FE6F53F79D93CD47F96FDD9294F +:10625000F2B3760879C07220FB3314EB71D89FD665 +:10626000739BDD797E749BD5E13F51CBCB93501668 +:106270000ABD3014DDB6023ED804D44F7E726605E6 +:10628000EB83069EBB22420F05417E745B5E6699DE +:10629000CAE91CAC76D2D9170B3AE99EA33333AACC +:1062A000F2D319F01641BC95669E18F05CA0B64C6E +:1062B000E4F20FF8C33214CB18865D8F44B53DE885 +:1062C0002F2B6D3466FD1EF3DFA263C86EBD58151B +:1062D000F96F7D4E3D618D0B7AE46215F701ADDB00 +:1062E000E026238F7795660214022FA866E900BC8A +:1062F00028A84BB324EAC3589AF2C5540D2C3B1D71 +:10630000E19941F058EB52853E94FD3CCEE38E8FEF +:10631000DAF8F7B3EA00FCEBDE872C386F55B93EAC +:10632000B4CA059E5AC2573E7A76217F8FCBE1359B +:1063300058139706B2573AC4BE74A7D8EF76E0FE5A +:1063400084F5A7B612BF2E11F8F357988CF85D8923 +:1063500057A23C984A7CDE7CD8FFEF0CF07E567B3F +:106360006BDC652ADF27FD1519F257BAE74DAA7CC9 +:106370005F182173FFA5FBFDCDE2BDB290E7132BA3 +:106380000B3BE9FE8952C1F946A9E7FB5FF9C26BF5 +:106390004915021D6F56D15F7CC61907F535753357 +:1063A000C4AFB5BE3B9F7A89E02CA868A6FCC10D9E +:1063B000629EDC3AC4FBBA5EB65CB49B437C067C4E +:1063C0000C7CF955C1F73EB19F15E2BE346DF87CE7 +:1063D000FE4D95C75F147FB781EDA064A8FF1E51E5 +:1063E0008C6FA9B6784547624DE22BC85FFEEDB4CD +:1063F0004EC55F6886D0097ED4B93E58F7165CB7A3 +:1064000097759B52652E8EDB3F3FBF5F9EC60E9CED +:10641000AF6509CFCF787F29CFD7E87F6EE176735C +:10642000A7CB6E3EDFF3CB70EDE6F33D9F0C6237FA +:106430003FA40E234FA36DF95D19837D08BBF9625C +:10644000E32D19ED6673F5BC5F627EC604E311AC03 +:1064500087775D3F0FF393A2D3C43E616E98877A2E +:106460002A3A93F1FC8C8E5BC88EBEC26F9C46F8B4 +:106470004E63D22BC641972418EA05377DDDEBF732 +:106480008EE471FCB6A2AB358AE7BBF8E3A8E03B2B +:10649000773CFFA31A7F803C81D32477426F7E52E2 +:1064A000EB3982F82BB1CD779E790E2037D4DF9D62 +:1064B000DF91E5FF1A99EFB72CEDBFCAA6D7BA6AEC +:1064C0003E76FFCE39D576DE739FA3BB503E3ECCE1 +:1064D000FCC3F7EF447CA487F8BEA50ABCB515DD64 +:1064E00048781D24CF21E6B3C1ADC65C790E9FB0BC +:1064F0001F64A22FEB8F98E81BC01FF171F941EACE +:1065000073F3D60F346FBE7C8270653C41765E9922 +:10651000CC104F9E40F29007E8B52576A36E56E664 +:10652000EE6D58F36CF08D25BE6F8BA932FA9BDBB4 +:106530000E2DA0384A87B7B901C7692D92B5BD9510 +:10654000FDE1FEB28FEFE79E966DE3EE1BC4BFE662 +:1065500011F7B2DAB4A708AED0946811DE27683D0F +:10656000F8DF0F79D0DE8A955606A0FE4D311E2643 +:1065700087FDCE168FDD82060FC21F66698C7B7A7F +:106580005A76D07C43C177854F12F06D1D77DF209E +:1065900071DC8F1A3E0B8FD7FA7431FF769ADFC207 +:1065A000AB07F50BEE17B50AC527BC7D3E7EAF2DB8 +:1065B000CEEF8964F56CAD4CF142D02FB7911CBD84 +:1065C000EAB247B44406CBCB7CDC0EF0049A493ED9 +:1065D000ADFCFB70B28DF6A950B2C3714EB0F82479 +:1065E000E46DA67B10BEB042F15A55F045D81BEFC2 +:1065F000457E09CF195F85FCF28CE0C36E9197B69A +:10660000C580F55D9C1BFF47BE229EDF7D68DC7761 +:106610009641BF8D7364BAC5EA3FBE81EC111F0B72 +:106620003BEE61F9101F40BF96BE0D24D7FFE41367 +:1066300071C42A56857C7CCB9C5B10D360E798BEE6 +:1066400081E218FDF5120BE03A3C73E44035E6F5C3 +:106650004FE17A89C5EA868863F0F8AD450F8B0E65 +:106660004A2DBF67E2C57BCA782FC100BA4CCED194 +:10667000236BDF1F77DFB3D2459E3AC7BF27CCF32A +:10668000247C4CD9BA4CCAE1C187FC0B78F3F56D78 +:10669000CA8C86E68FF944FCE5BF68FDF7A2D309F2 +:1066A000F7DDA7277E6719E64319723C80FD752741 +:1066B0009F87C23C3FD8E227A4EF1878F7FCDF0B96 +:1066C000FCB161DF3BA1F82E4EC1FFB7C1719F4203 +:1066D00017F763ACF37F78233FFF5F305B213ED039 +:1066E000676FA67B34780313F5C5A88D0AC3F32220 +:1066F000BC27FC58FD2F3055479CBFACC9591FC55E +:10670000B87D329AD99EC338A3445ED728D7732B5D +:10671000AEA7BAF4B755BAE37ACCEF8ACF0F111708 +:10672000B4E2BC3B99A1FA6DF86CBD90DFEFCB876A +:10673000CF52BDD9203D52D12CD1FDAD189CC524DE +:10674000F43A25C91FC1EA793E9722E2BE56FF12EC +:106750003FD72B3EF62EDD9F52599F49FACB450F6E +:106760008B0E5B6A98C8B337C265F0BE48C81DDDA2 +:106770002381798265A07F014F457D3C3F8ECD17F7 +:10678000F8939884FC5B385B75DCDB5105FE8B4528 +:106790003E73D0856F55D041753DAF17709F6F9C8C +:1067A00075AA5FC849012BB0D3836903E7C75BF4BF +:1067B000C8F2ED79CE6758F38561BEB11F62BE3C69 +:1067C000EDDCF4BF4CD0A743B7E8936CC07DB35861 +:1067D0005718F7C73AE9093F0B917E2384FC8D10C7 +:1067E000F2826622E5AF2DE474F2C33FA4DBC84613 +:1067F00027DDFCCC561F844ED67DB290DF48FA6967 +:10680000FF0C90BFCB97E5AB270FAA7598E7C6C8DA +:10681000EFFE3C269BC07ACAFF1A217EDA1667E992 +:10682000CD304EF998CD7E1EF7678EFE5D158B0636 +:10683000F58361FC00F3216E4FF9596642FE76053F +:106840006A32897E6CCDD0E62830EF88067D2A8FAB +:106850004FF71A8847D5D0A7625CF81E8BEF90A33C +:106860006DF7B8D4066E37F816F2523554F247FB7E +:1068700016F27B916AEDDC37147C5EE1C4A37B9C4D +:10688000FC74B6E1D593BFDD70CB0EC0CB495BBEC7 +:106890007D679CCBEF7B158CEEBDF8EAE0748BEB4B +:1068A000A9D34A691D75F130957D731A783DD1855C +:1068B000EF7F8AF442FFC97CAE770B2BE441D747C8 +:1068C0003FD639A42A87170B0E37FFFCBDE007CF50 +:1068D00039244F473DCC7E2FD85D169F555806EC86 +:1068E000AA2E7F2683EDBB2A18D9FBBED9A0DFF0E4 +:1068F000BCA5A4BF7B631DFA55B529A66D3DFFCB92 +:10690000CFED5AB542DC775574697181FD3DCF1FDB +:1069100006397ACE4FFEC287FD7D345E0FD9DFE1A6 +:106920005A99F211B77DF0733FDA87E126958F838C +:10693000F7566CFAA3C9EF757E67C6D23331D627F6 +:10694000DBCE87D63E71C2977C09F721EBFE871A12 +:10695000E3F73F2C7FA5E51F77E3E1A1540FF92B67 +:106960001F4F71BF654F8A91BDB15FF8E7E3C74024 +:10697000EB1462A9E9C84FF1637A35AFC7ABB1FE3A +:10698000A888F3EDC3381F9477A7742AB7A76AA81D +:10699000EC4AC5A9EC4CD553D921E28007520D54DD +:1069A0007E2F95A07277AA91CA3B52496AD79D6AF9 +:1069B00012F1C3662A1F48B5D0FBFB5226957B53C4 +:1069C0009DF43C9DEAA6FA3DA9DD54FE4B2A4DCF2D +:1069D0001F4EED13F037344808EF711E0F9D928162 +:1069E000F5D9F3095706C88F7F91F0EB3FF3B22F2B +:1069F0008479883D0FF37B87F9F8677AAF332F717D +:106A0000DA21E73DD789E962477D7473B9A37D41F7 +:106A1000BCCAF13E5473A1E37D409FEAA8FB629794 +:106A200038DACFEA9BEBA88F6AFA82D37E4A2E72BD +:106A3000D447345CEB685F64AC70BC8FD4AF72BC7D +:106A40009FB0FB16477D5CF7D71DED2FDCC7CF5DF0 +:106A50008F4FBDE1C712181713B7EE6AF383813E5B +:106A6000636C722C1A1BB1517BDBD04F7DD131D0BE +:106A70001E985FF930B78B809FAAA99EE1F14478F8 +:106A80007F21C619E1FD09511F8F7568578BA5F24B +:106A900030FFBE04B427FB039E53FEB482FD0BA956 +:106AA000FD546C1788C6494FC1FB3AD18FE8ED39C8 +:106AB00026FCD8D81FEBC7B758714C2380FBDC07E6 +:106AC000CE7322DE9745918275342706A07F6380BE +:106AD0009F93995FA17E71D12F1B2F8AF13C6B167A +:106AE00057E8BC1317F92F59BD99619900EE334C43 +:106AF000F913FA35F15AFC396833B613EA367C5784 +:106B00009ACEFA052DCEFAC5079CF5493DCEFA0C72 +:106B1000113F72C3FF75017F57AA67F2ABE3B89FBD +:106B200008E32D0CF613F4BB05815E1A257DF3FBFB +:106B3000AD969E0982FC635C8AD5F1EF3F5C947D43 +:106B4000AE8FC7F6EAC37C5D41D00BD44ED84FBEA2 +:106B5000E39F3F244DCED98FA11A98D7C6476A85A7 +:106B600013EE508DB3EEB6D36E0D7C383B7DB8F688 +:106B7000D95DD6F75BC43D122BAE5CB6B07B8E0FF1 +:106B80008F582B75CAA3F64E9213E807E8A8951BF9 +:106B9000F6A03D0E752CCBD6A437A19D5476A0F25D +:106BA00051B44B3E7B363307F9A2AC599B827E929F +:106BB00077F0B0887A5C4996A13FAEECC04E692E62 +:106BC0008C7326C0FD12300FC58B5A1FE3F1A367EB +:106BD0005EFE9286FAE8ED6835D94FA71EF719E8F0 +:106BE0002F3955CCBF0B71EAF199CFA23CFC31751E +:106BF000A8D8FE7D9D53FFF2C20C2F8C7FEAD117DF +:106C00006628947F9D76EC276BCF1D9981FC6DCE15 +:106C10006535789F6EBDA632CA9FC4F5E2B972256C +:106C2000E787BB4AD50E1CBF74A4BC03CB31A14A75 +:106C3000C7BD0EB0432BC97F2BFC3AEC9097FAB539 +:106C40003E17A4F16E19C79FDF52544AE78DD62232 +:106C5000BD358CFED04A7ECEB9E572D33706DFBF94 +:106C60003C92BE9FD026310FBD2F63940FF07E253E +:106C7000ABA944799EA7CDC3D4A533A3591CF3185F +:106C8000AD7371E0976956807505C41CFAB5C2F9F9 +:106C9000C9A47AF73CAC6F9BCDEBDAEBDA4164CB5D +:106CA000AFC9CD3B9771BBBB7B0E8CF7FE0C790A4D +:106CB000DA8BF15015DFB745BCE2E9977D1CEE9702 +:106CC00047939D5ED027F1EF3B7D00D843BE605CCB +:106CD000AE0B146646A632B62B5543F084F0062F51 +:106CE0001C924AA2FCFC5B12E3F7F20B96809D62B9 +:106CF000E37BEC7FD22FE841F6533C42F73C2A6518 +:106D0000D37B31EE8FB04FC17E9649F969DCEFA598 +:106D1000342A7F968AD1F33B523A954FA6E283FA02 +:106D20004BDD257ED7E4A4ADFD5D93601530DF5DBE +:106D3000226EFE4EAD6C565F9CBFFFDDA94323E67D +:106D40008F13C21FC57D8DC77FF3B6DF247D7911F8 +:106D5000EA810D4A622F9D579365F67B9AEDDE64BA +:106D600019EE1767B6FC7C3EEE17651BBB29EFC515 +:106D7000603BE76818EF5D09A441F98B754B147708 +:106D800016F73E482F81203E51F1EED311E4975A79 +:106D9000D68360A9B54986F2346B74F5268CBBB1F5 +:106DA00049CEE7072499EE1FE07873A1EC0E245832 +:106DB00010E4625ADF17F44D9847FF82278EF1E501 +:106DC0005D4FFD59C57878FB49D58FFEBBB2274F83 +:106DD000503E75BBDCA762BE901ED416605E42BBFF +:106DE0009A9C889B801EFC5EBB02F0DF55987C104D +:106DF000DF03C72D78A61EE4C667FE0F7C5F1E6406 +:106E000066C36C98DF6BFE03AE773E0BB7FBC7D053 +:106E1000FB5198D73502C6EBAC80F7C80B14BF0AFC +:106E2000B61B582FE275BD2BD06E42FF5141AE27E5 +:106E30005898CB5DB6AE41DD6687669F2BFC39F373 +:106E4000F3D25AD7DAA7FFFCEC28CCAB7F52EAC1C9 +:106E50001486B22777127E511FA1FE39903AA4B54D +:106E60005974B69D0366615E08D2252DA5AB243208 +:106E70003DE9BB784AF16E09E9D0F415A6A37E6C12 +:106E80000BF17D66561F8C63B75B14F19D3FD7777E +:106E9000D2E8935248AFED3C5E51B6B24F45FFFE8B +:106EA000817A3334199EAF5E5E3D7513D0E59D2027 +:106EB0003FD7B530338479432C1AA47B10567EC655 +:106EC0009BD6F945E467AC09F0AA7733BF77B2BA2D +:106ED000B2A7742AC60F02FCFECBEA22512F72D64B +:106EE000ADEF781DD0CCA26228D71DD83906EF5F50 +:106EF000AC63DDD7E37D0BF64B0F43FDF4C6C15900 +:106F000091CF407D2DD451B5DFABF45E8678BD774F +:106F10007F650FEC28EC6A01EFBAFDC03F61945B1E +:106F2000E06D502D078CEE8B14A0FBAE6DCF2E08BC +:106F300080DDF44495A1C940EB9ED00BED68473D40 +:106F4000A16A13D914AC1F6B473E5B7DB92C3E423E +:106F500071EC178622EE5B94E3F895ED98FF52D71B +:106F6000E8277BA7544E34E0F75BD86199F42B9A5D +:106F70002AB301DF9EA2368A43FDDF7699CEEF1851 +:106F800016C57B18750A3BA44079171C9CF1BB946D +:106F9000668742FDE079A7B718E9D26DE0BD29D632 +:106FA000C9F5F1F4277DCBD1FEAF6B366E26BF91CC +:106FB000369BEC9C312CFB4379BF1708FD3853639B +:106FC00073F0DCA8E0BE311DE1BC7A35F61BBB7C5A +:106FD000C9FF3674FC7E55DAA438D54B7C3F682F48 +:106FE0007DA8C70FF5BA88A2A14F62BF3CF7A20DDA +:106FF0004097FD014E3F4F5172DBF3755856A34742 +:1070000093ED2F4AFE11EF879C29F1EB18D768EB1F +:1070100083737D04DFC735A4E3A5A82F106FE63581 +:107020000B8C0B709DC90D288F3FEEBAA61DF3FF88 +:1070300000EF63FD80F74783D710DEF76F324669B4 +:10704000B6FACCBF801D407947D7B41B207F4AD108 +:107050001DAB51BEE1FD2FF0BCF544311374E1EFDF +:10706000EBAAAC3AA830907FCF2621CF783005FD2F +:107070005F676B3F1FE4DB3B97BFFF36CC87F1694F +:10708000B4435B8A715D60F7E2BA262AE9BD12BF9C +:10709000E786F7682EF32CBB62129E4BC7B1388689 +:1070A0004C82455C0F078B74DA5F014F943770E6B2 +:1070B00057E134E22358D4DCEDC3F7A3ABE9DC1984 +:1070C0004AF371B044FA87C47D4249BB8AECD04090 +:1070D0008DF37B22D67D43AA639E03E3F78515D704 +:1070E000F37B2A8D83A3258C535C45FAE3A1A0F0A2 +:1070F000A78DE67EEEAF25CCCFE3B9F4C2333D7366 +:10710000D16CA83DDBFB149693D95B73515DC6FD32 +:10711000454F63F9589033ED546DCA3C5CDA6766AD +:10712000A75B295CA7F795A1FE9AEE813ACC13994B +:10713000DDE3C179465E577D9E71E10CE52D6C0F54 +:10714000CB0D698A5F3EAA2DB7F5DF1A12DF0F1348 +:10715000FAC4AB713E6E61DD73F0FB25407BFEDD52 +:1071600019A15FBCC2B1AA30EE3750B4B886F7B5EA +:10717000E614D491FDF66650C4D50ECEBA12ED0DCC +:1071800015F504B4BF3BC0FDBD67CA580FDA334ADA +:10719000CC60B4BF897CC68D625E4B5F607E9831E7 +:1071A00001F0F3C5F1944FF9D8174BE7A2DD7D4705 +:1071B000361FF28C6A7D3F89F2E63347A473B071C3 +:1071C000FEA441DE8CE6CEBD8AF1E22894EF5E2F6C +:1071D000E9AD3B8BB83C59EB6E0971BFC6B3425F5A +:1071E000B57BB93EDC92E2F7C0D4B321969EC6D8F7 +:1071F000B542AFFB922B89CF7C3100B312FD8CA638 +:107200008978B5F0E0AF9059DAEE3F3E5B48FD9FDC +:107210000D72FC5A71DC7C71ED6D029EFE715B9DFE +:10722000F0BE314B17EE8FDE58608C443DFDC45CE0 +:107230000E773FFB5E8CA79E95080EEBB912D279B4 +:10724000FE9892A4EF6CA867157A6FAD377B6ECB72 +:10725000BEE7EB38ADF1FBBB6A8CCBAB7AC0C3BFEA +:10726000071353CED8EFC786D0EE1E9B9333EBDEC9 +:107270006EFF75C47BE91C56CDF56C7F3934C9DED1 +:10728000B1D6E9D39DEFDD793259B8CF8E70ACC35A +:1072900092AFDC7A4AE93DEE27742F4F61DF457FDC +:1072A000C95A9107B2D6037C05F077BD9B4EE0FC2E +:1072B000A7AD73C293FC3BA96BF7EF14F928BAE3AF +:1072C0007CB1EE008F57AE7F356CCAD07E1DEA656B +:1072D000C057D7EBEE7BD289CC283DD7FE4D5480EA +:1072E000408F77B5A632B43774016FA99C111F1E69 +:1072F000E8F5A01E680F265EE776163314A0417BE2 +:1073000056AF6AED284777A939BD8B799177057912 +:107310007D49486B6FE3FB3DB5D783F7B79B156499 +:107320000F887A9AEA77A9F1A7D12F683EEED3D1D8 +:107330001E81FE06CAAB796D0D9D6FDAAB5839DA46 +:1073400085CF94F2EFFEB53FEEDB8BE784EE407223 +:1073500054D086875325BF19837EA401C6331DE30D +:107360008D39BFF160FEFD8857EBFD33A597D0F84E +:10737000D04FC77EA74A82191CFFD4357EF213DF97 +:10738000ED75CABB55AE0E7179EF48698EFB9E2A2A +:10739000CA37C5639B49AE7DB162873C5B72AE9EC6 +:1073A0001DC5D2B678F99BC14A973C8DA1F7CF2273 +:1073B000FEA7E33CFA10F354E599E7A221E699EC25 +:1073C00098073571F63B6C83F899DDF787DC7AD145 +:1073D0002A2DBDD827F85361C92D219867555FCF55 +:1073E00065941E286925F81DCFC9C2EE9EF5F0A64A +:1073F0005664C7CDBE442658C2F36490BF2FF5250E +:10740000DEB2D7CF573E7A42D6FAFAE941EE7F1282 +:10741000E776D4F758BFB7D72B6F1AE47CE6D6735C +:107420005707DDFA90EBBB8F6E3E8F838EFDE753DF +:10743000E97D6E5F4B327B9EBF35FFC6326324977A +:10744000ABAC9C1B28E74AA5A50798897AE14EEBCF +:10745000BDF906D95B4FA8B9F78CCE67B9FEF87DA8 +:10746000C63B8356FB77076E1F72B5AFB2DA9F6BD0 +:107470009F3FBB3F3C96DEC13ADA7FCA5F7C59FB37 +:1074800010E1DB29BBC62BB6C60B76E07896DD3F54 +:10749000B7ABE4595341FEEC9E83FBF8193867ED16 +:1074A0006588F778306EDBEFE60A3E55CF061C782C +:1074B000CEE1374CCF59CC49CF8D2F7F7ED0FBE02A +:1074C000FF9172DE07BF29B991EEA7CE15F46B824A +:1074D00093038EDF74B7C721BF9FC2FBF702EFC4CF +:1074E0003CF64C2D97EFBF3B78CBF2C05BF189C2E5 +:1074F0007B4F80EBFB07025CEF2ED09A0F7A01FEE8 +:1075000005BA44F7201740DB00C8ECE731060FE569 +:1075100002859961CAE84AF3F650477FC7E7FFFA48 +:10752000CED1CFD1774A62B23D4EEA09F3BC58378B +:10753000BCAD002FC6C1B7623CDCD7FFBD22EE97C1 +:107540007C67C40E66BF27B42C2C89FC7F46796A01 +:10755000EE7E5AA1888BFB63B223CF40D4FD79E243 +:10756000B7C387671D3B699B775D5872C44BDDFDD0 +:107570002E29E4EF3BFD49CAC7EB882D1AD49F3F63 +:107580007C38AE77C091127078F3C0F15A01C74BC6 +:10759000A766D2F9B053FFA8E070E2A35BD0271F23 +:1075A0003E4E89F7ECEC05FCFC29E2929D51B96155 +:1075B000207A5A795D9DFE8F17EE1F0C41C758C186 +:1075C0002743C703023FF9E8B82B4BC78F178EE755 +:1075D0008680E3A7163E6249A2CBC705C76F86E047 +:1075E000EB39161CFAC78B8F3F0E818F55020E3375 +:1075F000CCBFABD85923F2E305BF62F8E8B3C5F9B5 +:10760000F95E093BE3EDC16AE7777DD9AB23E5E19C +:10761000E49FBC29D637949CFC41B47B5DE423AD48 +:10762000EAF150BED01A9DE7B70E35DF1A6FA67487 +:10763000B03CF7B53D1E07FC43C17357987F5F65AB +:10764000F53E67BF9BD321571E8FC9F9DF85D77ED3 +:1076500074FCFF1C9F3F08EBC3C2A7252F9F141E7D +:107660008792CFBC788CF17CB68F1A8F43C1F39B85 +:1076700061E2B1B326D9897189CEA3FC3BF99FE2BF +:1076800073E0F6E6A77CF991E0F100E2B1E4533C47 +:10769000FEAD787C6E9878047BABB3B2EE53F9FE06 +:1076A000A8E4DB7D4EFCA4F0E99E371F3EF2E1D555 +:1076B0003D9F35DE1A61CF0D178F43C16195CB8693 +:1076C000C99FEEF3EE27864FD7BC7F333EC578E7E0 +:1076D0008DCF21E0B0CA75C3E64F93F0BE4F7C2F2B +:1076E00061C2F7371EBE1CF6F7230DD3A6513EBE6E +:1076F000624C5A3C89B13D85FCEF6C4D10F13EF770 +:107700007C7B843FE270C3BCB594D79E08D15D8476 +:10771000A372FCF93ACCEB59E4A17898BBDFE114F1 +:10772000BF2F902AE4DF87399AF0F0BCF8867169A0 +:10773000EC9F6F7DACC1B62EFAFB7C36FA7AFAE389 +:10774000FB30D36FAFC338CDC281E1B0E87C34B138 +:10775000F8C3E9A184E763B17F8782675DE170CFF9 +:1077600013696A1765D9BFB77921FF6EB2EEC538C4 +:10777000DCA2E33ECACF7D111FCDA2EF3B3D5808EE +:10778000ED17354CE17F2FCBCAA754187D9770E5D4 +:107790008E89F4F7AAD8B2C5D4FE11E1FFE94727D4 +:1077A0008BBFC4DFBF1AB9CCF4DAFFEED4D94211D3 +:1077B000A767C9D108CF7ED5B8E88730FEE12FFA98 +:1077C000E2E857F42D5EB8AD00F8E7E8D222C9FE32 +:1077D0009DA85F8AF9662CE3FEB1FDC7125ED976DB +:1077E0008E7D43F023F4BFAE6F00FC1D12EF972691 +:1077F0002591FF6F8C5E64CBBB7ADBF5DEDDFFA5E8 +:10780000C2427A7F541AF8EF321C15F0352E19BC9B +:107810003F5B3642244D19E3ED7F67CA8DBFAF143D +:10782000265F467AFC5A4A7EFF56E4E3397EE263DD +:10783000A6E893116E0B0F0BFCAC13FFE4A245A757 +:107840002B47D5129D2C78ACF9301508F347EA0C7C +:107850009E57542CF23E676E0FA437515C5BFCBD03 +:107860004A05E02AA0F94F0D36BF356E546119154F +:10787000C65D29A79B31FEE55E87D5EEC89FE75D13 +:1078800081F0ED3F2C6B9B2BFBAFDFAD97C6EF7606 +:10789000F24D4184E70144D18FC1E34BA31B6DFD41 +:1078A0007D9100F53F5F7E7A12753594E37725BDB3 +:1078B0003ACC7BB5C2E39638BE3DDFF131CBFF1A3F +:1078C00061020E337821C6D15EE4FA65DFDE55A38E +:1078D0000792DBC3426F3C5E58E39097C50D537E21 +:1078E000817F3271697227A59AEF3F7C09F55F2A83 +:1078F000E6DFA726474F09E37AF4B518D71CEE3A1E +:107900002C7CE7D5A302CF283FE847AF15FCBA741B +:10791000C941792D947B84DC9E107AC1EA77434477 +:1079200012F449B606E28CD547766FE9AC2139A747 +:10793000B85763E4EE2D98CFC6DAF8FCE397BCB5F0 +:10794000113FD9B55FE57987BFDA5A90C68416E052 +:1079500057879F3DBAE4FD14E695DD20EB37F23CF6 +:1079600001AE9FDE65C9D991929C9EEAA797DA166F +:107970005B7F2770BC5D8E73EBE4DF89B5F8695FD0 +:107980007A51E4061B7D364654073D7E2DF4FC11EA +:1079900097FF6CC931EE17837550DECC6F2E1DBD7D +:1079A00007D7116D7A3FA54DC671B83E7B2F5DF5A7 +:1079B00038AED75ABFB54E58D7F887A0FD971ADD15 +:1079C000761297B7A50B43CEE7A27F8DC7584D71AE +:1079D000DA2B78DE81355EB401F03519D795D85CA5 +:1079E0005099C3B385CF153EC0E358C60D2580B767 +:1079F000E6DB65F41D9A92D6BE5B918FDE0D2722E1 +:107A0000C536FDB55ED035C7AF7C7FC676B86F2D65 +:107A10005274EF40FBD7E206CF8070DF50986C665F +:107A200003C4EDB3FAC0B55F6A72B717DB37B2664D +:107A30002ABFCC8C4BB13C2EE861F53FCE320533EA +:107A4000D1AE68F0501ED7F1E6C59115B08E65DE57 +:107A50009E82A9506E8D7039F8ED460FE587BD2ED8 +:107A6000D6E19EEFBA351EF34BC06FCBD27CFF5EE2 +:107A7000B686E7FF5CD7EC5CCF3EB5F9F0E538DFC2 +:107A8000B7F87C47805DEA8B893FC9AE78255D3CBD +:107A900005EFA91D41DCA37E5C1412DF3F61F47782 +:107AA0001493FC57F652C30DBFC0FCB97B223CEFC8 +:107AB000E148C30D976148EAA6DDEC677D3ADA4FED +:107AC00083EFF7C96F781CFBFAF85D4EBB7646A3CF +:107AD00044FB005332A3AFB7E9ABFF2C0A113EAE13 +:107AE0005E220D184F7A3412A6F747FEEA691AC8CB +:107AF000BED38A393E97EE1EB8BF565CC0DFDF3D6D +:107B0000F07E770DCE8FF4567A689F5FDA38F038C2 +:107B1000B761321C8C737CED7F5C8779B64765E773 +:107B200077BCD6699C3F131AD7FF47F67EBDA30CDE +:107B3000E9B24ED2F0FEFC8A11FA78E4977F58330E +:107B400085F2172F17EDE78513CF44A0FD4D772F52 +:107B5000EFC0BCCB91BDB286F6ED3ED777C2B27A0C +:107B600054C8B1B5BFC0BEF62AEE6B51FC3BD8A8D5 +:107B7000AF9474FC9A026A62468A91EEE62AFA6E23 +:107B8000FEDEA086743FB250D8B1E624871D7BCCC0 +:107B9000255F6E7ADEB4DB65B7B9F8F5151627FBFD +:107BA000DA5C18D2E87ED207EF3C3F13EDF51B47B5 +:107BB000C4EDF7242D7BF688CAEDEF23BF1E1B37DB +:107BC000597EBECA6BD72E1CF8FCE2EE7FBE76ED66 +:107BD00091859CCF5FF9C6B4821503F493B5CA6151 +:107BE000D9B5AF7C637079F97F07ED4BEB0080006E +:107BF000000000001F8B080000000000000BDD7D6E +:107C0000797C54D5D9F0B93377B66492CC4C6626DA +:107C10007B98218001024C42085059260991A0D836 +:107C20004E58C3A6C322060921526CE9FBF2353730 +:107C30000430A454A3AFFA52A57612D1D2D625D1DE +:107C4000D4A2523A20B8B4F56BD82C2AD5A1453627 +:107C50001153AB6F697F54DFF33CE79C99B9370947 +:107C600081D67E7F7CF1E7EF70EED99EF3ECE739A9 +:107C7000CB7CD04048F80642CE349849D844C8312D +:107C80001DA9E928A0696076CA329A7E097F530946 +:107C900049B44984B862F9EA157A12CE27F8F72573 +:107CA000FD7FDEE2441236C7F247BFD0D77458A139 +:107CB0009FA684A556F8EA1B1648226437F40FF9EC +:107CC000CD63099918EB4F9B12D248C8B8183C47AE +:107CD0002A193CF44F266E426653708887906C0ECA +:107CE000D791CAB149415AFE81663E47753D6F8DB5 +:107CF0007712A23C2EFB9EA4F587EE587A2083A62D +:107D00004767EA09A1DF3F574685F4B48B7CE867F3 +:107D10005C6F38821BF5AA79DDB9433D4F723A4D4D +:107D200007F0DCC3BF91CDA98464F4EEE72287EBB2 +:107D3000E8CCD929416BFFF3BEC0EB9D03F8697A0B +:107D400057875E312513523B93A5DAF1B4ED6B0DE5 +:107D500061B7ED2AFDAFE950D36D20780809215EA7 +:107D600056EF56B75B1552E3C1A927F540D74572C8 +:107D7000876122A5C3A2DA4269154DF7A798B1FD24 +:107D8000FE140FA68B08F177201D3D2555A3E8F8BA +:107D9000ED09442AA6F469490A0DF5527ACF1A3939 +:107DA0002C1E9E959C2E8B76541DA268A5FC10B8A7 +:107DB000CF05F4FC969E3C49F37F38F1FC16C87F52 +:107DC000D8ADB3491EE0B7E598FFFC84C7A7A7F973 +:107DD000E5363BF2C7DC394B0DF1FD6AF977AE862B +:107DE0007FDFE2F0569889622D02AEEB290E8C8A75 +:107DF000CDF3CE9D4BB766D071E6D63E3011C6B9F5 +:107E000073C77EC370FA7DAE8DCD779E8DB55F2C26 +:107E1000F3F99AE97C29FFBF077C0BF3FD8E147AF6 +:107E200012FE2D470CF05DC0755BFDD90ABF35C64B +:107E3000F7E2FB439CCF1B6C3A4CCBADC1249B0BB0 +:107E4000FFA9A43808499BE32D21B428C9465470E2 +:107E500027031CB492D1E47B8AE4C5E611C5631DF7 +:107E6000C3E37B27666D7115F78FC7ED1AF9BF560F +:107E70003C1E6B4FF0839C2953187DBB8C4481F9C9 +:107E80001FDF9613DAE48DC199C4E174CEF96B83D8 +:107E90006D748C0FDEBBFBEC12906B5A6FB3D5C1C7 +:107EA000E0077CFDD8AEC3799208958792983CFC98 +:107EB00029895477F4C1CFEF72B9D2CACFC95552CC +:107EC000AB7E34A6A1D4E4DEF5FB938B851209C00A +:107ED00038BBD7996ADAFB18EF2CE7DB5EFA01A60C +:107EE00040F341FEEF3BE72CDD9A44A7BE293179F0 +:107EF0000ACCF3A466DC93249C341EF8658EDE075E +:107F0000743A59CFF4E0624328A9888E7B80D3E588 +:107F1000DDF5FACA5001E80D827A4F3BEE921ABDA8 +:107F2000329FCE737188EA11486BF4A7205D52AF7F +:107F3000A6DF7112B8751C8C37938DF7CE8AF23597 +:107F400040BF0F668ED4819E3C3EE7BF9296D171B2 +:107F5000DFE5E31EE5FAFCF81CB5BD38ACD1A7BDE2 +:107F6000F4E88904359FF46377DEBD4EBBB3DB18BC +:107F7000C801FD77BC6DF1927B80EFDA127C433D46 +:107F8000BDE9F3925DCFE007FE8CD33F5D46DFC7CE +:107F90005D4EE0CF0CDF264F6FBE3C3A93D9B3DD88 +:107FA000B3126B4290F2F67F2CCB6F07FCEC0ECD38 +:107FB00042F8BBED6CFE425F106EB716A1EA8BD1A2 +:107FC00049D8A9FFE17AE3CE1DA70C1EDAFE36D010 +:107FD0001B56CE24141E5B4B565B0B85EF3D1DD705 +:107FE0001F4F25859EF4C6C68BEA6BBB1A5FAB425A +:107FF0006A7C0D64BFDE09E92A4371E3AEDCE96DFA +:108000008771457EF17A9617F66C7748C7ECE8865B +:10801000149C3FE597513FA7F9331B4616E9C975F4 +:10802000D8B790EEDF62DF003F57B36F93ED5EC4C9 +:10803000D740F6ED0C2195488F2BCBEF9B48E7F707 +:10804000FE7FA416B5C0F71D8C5F4773BCBF6F8C55 +:108050008C8A87EF0C9FEF494EE73351FC0693C1A2 +:10806000FE897A43B93E7B9FCBC1FB1BD47270A3C0 +:108070005D2D4F77EE50C3BBA45E0D6FA5DDC6E04E +:10808000D9D094007AE598E09B957AB43BC702E595 +:1080900049E3806EA1C1BE783A55DAAF4FDE164A89 +:1080A000CA5D407FD29660037E74025B83BD3CC78D +:1080B000E8F8B999F1BBC3A1EBD37E44F5F23935A9 +:1080C000DDC18F88C7E3D3DC9E8AFCA21A355CA48D +:1080D00047DDFEA88EC9B1D292887E9FCDC8E0B49C +:1080E000B527D814C6CF256007A3E36BDA2F9443D6 +:1080F000AAF1EF063EB9CAF803F951D7EB477E4023 +:108100007CA877959989885772E52FE8C71E5D99F5 +:10811000EA6BF1F4E1571A7D6F1553FA1E7D3BCFE0 +:10812000A7F4213703CADFBFD9BFFC60E358B41BF3 +:10813000DAFA8F5DA3FC7DB0F1EAF8D5FAFDFDD93E +:10814000935D1A391A88BF9F023FD0D57B3D13B586 +:108150001BDCAF117ECCB214CF992E3AC41B7C9C91 +:10816000953BAAD0EF3CAA0B6C49027A1ED1D9806C +:108170001F8FCE5CDE04F9CF7778D1BF12F024696F +:10818000EC9DB03F03D94FADFC1C9F7B6F118C7BE6 +:108190007CEE7C95DF3BEF721609A7C6F273AB2528 +:1081A0003FF80D5179B5A8E91EB119711E110E479E +:1081B000B4DDE55CEC27EA0FEFA0FE30C5C7E2397D +:1081C0000F4C94E2E6F3B4DD8CED9EB17BD4FEB0AF +:1081D000CCFC615753E49E006DFF993590E288A373 +:1081E000D3490D9D8E73FA423DE0BFB972C0D017DE +:1081F0001FCE9BA3D7E827E6A769F551547EB8DECA +:10820000D58EA3C5E7B58E976C637A777972B09EE9 +:108210008062BDA8F64FFBE3DFE8B89AFADA712F67 +:10822000703CF637FEF32904CB05BF6AC719EC6032 +:10823000FC55B283D1FDE8D76F7CABD809FEF6AB15 +:1082400093800F3FD8F897E3F39D60C70F4D02F07E +:10825000073B92B0FE077409910EFC1E94D02F9C30 +:10826000BF6329AEC7687DA6978EE515417B8F83D6 +:10827000D18DEA23951DD4CAE7E30027EDF78514D5 +:108280001BF39349470EC407AE155FEFF683AFEBC0 +:10829000B51B8F8BF1AF8C1D05F6A03D0A4F38073B +:1082A000F2FDADE7454A31C2D697E5D6662905FC11 +:1082B000C7C03DA0177AE626D9DA292AE69AFCB784 +:1082C000801E3F7E44A76B947058F4036711C687E5 +:1082D000DE9BBDDF1B41CB6705F47E10BD2AA833B2 +:1082E00091D2B5CCAA407FC54767FE2C09D665D58B +:1082F000268F9EEA99B953031FEB61DD393FD1B355 +:1083000089D62DE91EDCE8A4E5B32B2558F9918325 +:10831000D4AE47E8FC7F0A99AF110620C5CD319154 +:1083200057E66D9B46CB47B8BA7456DAE29907E731 +:108330006D33D37EB73406D261A9BCEAC1B1DBCCC0 +:10834000930971BBFDDD537D84FCE0C1713320DFF7 +:10835000F5A8685FB2CD9F4DC82BBAA057A2E5071C +:108360001EBC75864CE195A569853ADAFEA06327A7 +:10837000B69F376FCD1D3FA7E51F3EB86E864CFBFD +:108380002F592CDA7F7B46B94CE19D24F2FF6929F5 +:108390001F42F54862C0A32BA4F47970D40C39872E +:1083A0008EE7F0DF4D68FECB0747617F1382B46E26 +:1083B000264C62D30CA82FFA5B40CB15DA5FC68639 +:1083C00072F2274AAA091145027DF776697DB94CF8 +:1083D000C71F9BBA795BC17042C6579626129AFF97 +:1083E0005AEA63334C76A093BFD043FB9F94FAF8CC +:1083F00036730EF4A78C8072A3D2B6AD927E6FA9AD +:108400006C0F80FCEE9418FF58CCF5611DFD67EEF3 +:10841000860009A2FFD6CAF824DB370CF944E4F33E +:10842000599C2B9A4F67F9AE4DE4F6401FF278291C +:1084300095E99FAE84BECBFF4BC8EB6282F29A7285 +:1084400082F89FA6E9A104D265A6F6E61B26523C57 +:1084500081AE8B373AAC582F3AAE99C125DA11E587 +:108460001B0E9093998C07B17C1685EB012EAF798A +:108470003E6E0748589E0D22AFD7213C2EBD747B1F +:1084800015FDEE4E20C14E9ABA5209E66712E2EF90 +:10849000B4C6FAFD2DEFB6222150ACA3FC58E1CEB4 +:1084A000296CF2C6FAA1F06E0678453C89C22D030C +:1084B000DC2EFDACC2BB0BE2E02E60707739183EBB +:1084C000BAFECEE2745D4706B703BF4F77785476A5 +:1084D000A8A4BBC84068BD93A94CEF120F6BEF2A4C +:1084E00027689F7BBE6F09811C1273D017888BB3DE +:1084F000ECE2F3AEBD3C9C84C6C6F93772D808FAEC +:10850000A3F672017E7735F54D17119FACBD6C2730 +:10851000CAD8F8EF6C7EB17E9C58DE1F3C1460D444 +:108520005FEBED1C81BCDF0D84ADFFD627F9D31CBA +:1085300057F17B6A2F4BFDC02FE377EF20BA16056A +:108540003AD1EFA420061FF178D0BEADB7313DB4CB +:10855000BEB3348DC4F3B5CCE96064F3073CEBE201 +:10856000ECF3518EBFD982BFA85D073A2DCF2CC046 +:10857000F561D7DFCB4756617F9B187FCB6CFD54ED +:1085800022337D58D2EDB029528C2F043F087A76E1 +:1085900039EA4B115F5592ADDDDB87FEE7E39704C7 +:1085A00028DFD2FA698B83FAA571F009BED7CA0910 +:1085B000213F647C42F97F09C825ACEB007E1F9502 +:1085C0008751F1746470DF026DC6211F30FA65585F +:1085D00043008FC04F6F7EC81A801F72B1BCA4FBCE +:1085E0008011E659CBE14C3B114E1E59C0E6B11A41 +:1085F000E2DD108C023971307B54FC4279E28D3C13 +:108600003E07BD9608FD49CEBF5946F55F5A344F27 +:10861000F5BD07F1CDF525750FCCB1FA8752CFCF57 +:10862000D82CC7F0E30423EF88C1BB80EB9B453017 +:108630006F17E24F313B54724B2614C5F48B9053A5 +:10864000D19FE8272F95F5E3E16954FF70BB47F50B +:108650000DC601C9760BFACF5FBDDE9106D03B5542 +:108660005CEFB0EF87A89B0BF5963B824B258A9376 +:10867000236F940F8578EABA74BDE734B52B73A4E1 +:10868000E01642A7B2DCE8DB9214C78FF388D96307 +:10869000A5FEC4DDB4F297B47C4E7782A2A7A49B5A +:1086A0001DB078AC717ED9A7AD12F2D93ABA04DD0B +:1086B00050D49B3FD6A51B719C23957929C178B8CE +:1086C00038FE9727F4AC477F52239F22BF7C188542 +:1086D0003B2FAEDCCAECCEAE64FFE4548AFF153A01 +:1086E00012443E9FE652F9334B1D6A3F5BF8334319 +:1086F00053FCD3A09DB67E7FFE8F0BD6FDC82741CD +:10870000FD282ADFCB6EA73694E6D23A0897CFB081 +:10871000AE16E8A8278A44E7FFFBD41CB6AE9A4BF6 +:108720000BC7C4E91529902DC13AC965F2419C8255 +:10873000D205E75FA1BF7BBF817EAFC8937C4DB4FC +:10874000DF15A976EEA7F514C33C5D898C0F0F5990 +:1087500088D942FB7F9DA64877AE97A64F19D9DEF0 +:1087600022C5F459540F5ED187A7D2F2DFE50EC7B8 +:10877000F2435255B68DE60FB9D28A9A24EC8F583F +:10878000E2F89FF64B009EE95FFCE5E2544A0FC316 +:1087900060D69F938E3F2B4E0EC657B279AF4B6576 +:1087A000F85D979AC8E2F289ACBF435ECA2630CE24 +:1087B000503A1F2A0FAF25040BEA11AEEF633DE0DC +:1087C0007BD0976E4E37B791E5DF74F2F521EF77E6 +:1087D00033CFBB93593D2D7DDE71B27ADD12D36369 +:1087E0002D33A95F93A7F26BA8930FE30608F0530C +:1087F0004B299D4F1FFD7C97FB29D48EE17C7BDBB1 +:1088000015A6FF122696A5437F9B0D2C0E7F9F2D4C +:108810006473F451DF9848D78D05313B24FCF7CFC2 +:108820003BAA52402F3EC9E767E4EB4B01C7E6067F +:1088300016374DBE9C88EBCF10874BCE3F8D74967C +:1088400027D02E6953030928B6383A1B6C3A95DFB6 +:108850009F7C3919DBD75E1E4BFBB89ABE2EC172C6 +:1088600092EE51AD333E3F391FE1D4CE4B8BB73042 +:108870008757E4FDF9F23412075729B16D86714A22 +:10888000897A5DD29FDF7180EBD3DACB7A959D89AF +:10889000C16B547D0FD3F596123FFE39367E6CDCEA +:1088A00044A2C48DBB35D5FF6A2ACAD524DB999171 +:1088B00034A1FCFEA51EED07B353346DB3327B0E1D +:1088C0007A59AC57408E6D74BD52955AFA1B681F89 +:1088D000B56FBC9DD0235D7FFF8B92C4FC3907B57B +:1088E000B0A48AEB9F2A6E6F843D01FD362BCE5FCC +:1088F00093851DE1FAA6D2FCEA98D371F3AC4AF550 +:10890000E0F73724C677D4A0E7407BCAAF4ABCDD86 +:10891000D6E2F3C3283E2D2A3E88E1D38ADFBF2A60 +:108920003FB06412D38FA452224369327E1AD3130C +:10893000A2DDDF52991FFF37AE2F843E99B5585DF7 +:10894000EF1F506F1CA489D764A7A376C2CDEC8417 +:10895000D04F759C7EDE0B478C1E5A6FBC93F91D61 +:1089600036975F76825C25248F2694AE6DFF28F7BC +:108970003452B87BDE32F8DAA1BB3D8C9EA50BD613 +:1089800037C9F4BBA143B2C1B69380CFBAA173CCAF +:108990000A3ADF14AE9F6A9D6C1EB5CEB071081DF9 +:1089A00037B3968D9FDDB15F92E3E426BB86D54B4E +:1089B000771A108ECC6A19E3D699F5FE5D84D22F12 +:1089C0001BBED3FE329D84F34348CA2AC67604E216 +:1089D000A2993ED6AFD517929617C4E6D7ACAB2A6C +:1089E00000BDDEEC4EF4815E9FEB0A0E76025C2742 +:1089F000C36170C3C79FEC96615D778FCB9F07F310 +:108A000016F3F3E86D99A02F134F32B85A1D6A3E42 +:108A100020E47BDC0EB5333BA8276F10A403098349 +:108A20003EF22CCC47BB22EABB1D5CAFBB49F079C0 +:108A3000F4734833413A119CA77BD330BEDFC2E8C0 +:108A4000589117D805DF2BD28617815F93B73D2C3D +:108A5000431CF5E59D6C1F41CB8FA51CDF741E9355 +:108A6000607E621E03D96F51CFD0CF3A54F0792285 +:108A7000E79BD205CE8530BFDACD2F269AE89099B4 +:108A80001D6D5222DA81FBB09EC03B85E3568043C8 +:108A9000F0516647A9A711E8F95B834F22FDC35740 +:108AA000BBE185312BE2E571B311F1DF6654EF8B49 +:108AB0000B3FFD0E27DB5FD8ED0A2C06FAD5ED79CA +:108AC000C008F45CB5EB9431D8875E8EB6BF46FC27 +:108AD0004835CCFFAFAD368760BEA50B185FAEDE64 +:108AE0006C0C99285D6A9FEE0C83FF4936121FC8F3 +:108AF000756D47E76BC0A359B5FE71101773532608 +:108B0000EB2E88D989CCDAB0047632B363692DF2C2 +:108B1000777AA20FF81BFC50F00F2E965A1589FA9F +:108B200045170D4ABE87965FF426F860DFE2350BE5 +:108B3000937381DFD73BA7BF2151914D7ADE148615 +:108B4000F41E57B001F0DDD2E82905FAB454101B29 +:108B5000F08DC714E8427E4C4BF2C1BAEB5AE72DB8 +:108B6000F484F83E7E2393834ED013287FA408FC20 +:108B7000AF1F38599C90FA2BA8775E333038650EBA +:108B8000E797A9FEFB50AE4008E9B8D924B4DFD876 +:108B9000873E8EE39B87E2E57060383B8CB06FBA0E +:108BA0009AEB8FD205BBA43FC5D1FD0958E8803EA2 +:108BB00079BA4DF220FFEE6AAC70627D6202BDF1BF +:108BC000348B7FACA6E577C4E90D318F3EF4C74FF7 +:108BD00001CFD693DD0799FE0823BF0978051D054F +:108BE000BD5E747A70FC9BA879B6607FCB6A811EEB +:108BF000CD99AC3F21CF5AF97BD1A9E37A7097A4E4 +:108C000043BFB21BE7B9A65A46BA1C987FDB0AE8F5 +:108C1000678D33A310F8F0A15F1C364AF4FBAB5C00 +:108C20001ED6B44A6C1FB9F5B0712ED801E5277A6B +:108C3000F0B76E61269F3CF2F3C3A8F76FE962EBD1 +:108C4000E8355D9DF2726B8CFFBC170EDC06FCB93B +:108C5000A6C3442C12D085D9592DDF51BD80F240D6 +:108C60001423AEE7C0CF677A30E8053B1CD59BDC08 +:108C70005F2356BA5E73821E1C5508FAEE6D3E4F96 +:108C8000D17F4582EF8019F45E11F3F7857D7A87F5 +:108C9000E391F61F46BD49BD57B06FA2FFDEFA7ED5 +:108CA00024FAF1928BE9454AB7537DE97DD1BFF7AC +:108CB000F159C49314470FC0731C1FF538D97E486F +:108CC0008F53C6FEE4328627D9C8E62F6F3287401D +:108CD000BE5EB75732FC38CC889F439CDE8738BDD8 +:108CE0009B759BF2EB99BDF933F0F981F9C984E9E1 +:108CF00017A64F1E7A416279C51A8275676D700E8C +:108D0000D299382D3EDC0F0C1E34CE4D8AF19B9645 +:108D1000AE9EE7F71B611EB77430BE8EE12BA4E256 +:108D200043AAA790DE5FA68AB877D00BF814EB5E53 +:108D3000EBE21E257EBF44A4297CDD5B0FEB5E8841 +:108D4000EFFA581EFEFA5AEF8A71457BB1DE5DBD1F +:108D5000E1371990DE95FE26A6B08E82F58758572A +:108D600089FA999C7E7A17F317BD2EC607AB8B3B09 +:108D7000509FAE3E5D8F7261AD64F26F3DA9D65BD0 +:108D8000625D45C876B6DF58CCF4E19DCE249F24C1 +:108D9000F5AF5FEE84FD23D0DB57A8174CFDFF5ADB +:108DA000CDFE58A18BC9D959D8BF44FD5E8F7EEF47 +:108DB000C59D129EB3B9D6FE48F89804F45BCDD792 +:108DC00017179F2E9FF821ECB7EC4EC1F32B1F3DD8 +:108DD0003DFB3B1F52782FEE9A8AFBF5CEA600F2A0 +:108DE000438FCBE203BF96AAB74A58573776BC9A4F +:108DF0000C71A2F33F1B53047AADD2C5E4EAC20B57 +:108E0000FA0D808F4D3F7E6E0A94AF0E49A9E0AFF8 +:108E10009D7F6EFF7D7FA7FD9C7F427283E834FDBE +:108E2000EC5746D83FD085DABE00FB55B33B05FD75 +:108E3000BAF34F3C3005F0DCD4D184E5179E68C30B +:108E4000FC811F3FB70FDAD706927D588FF60FFED1 +:108E5000D8C3947F01CEDAA0CCF6FB04BF6AF54FED +:108E6000E77E943BC11F945F31DE4BAA991E11FC33 +:108E700079A494ED87CC2A63FB2C476658AAD17F4E +:108E8000E57257B7D0DE86764DF12AD07E76C05E89 +:108E900008F187757CFEB5058C1F9A29B7407C20A8 +:108EA000B1206CCCA2F5E62FEE9C0270362790091B +:108EB00016E453084EC6F66766B7BEFE3789D27110 +:108EC00014556767287FD3DE767D49FDDAB70D2C10 +:108ED0000ED0CCFDEEF98B4F496C5F40B69D117101 +:108EE0001FFDD5EC968CFD897A513F8CE3A199C783 +:108EF0003D68FF68474AD6F378A6B40CF78D0FDDBE +:108F0000139E047AF1E573EB126A0BE2F99BB5CF7D +:108F1000EC6272BFA6ABADD148EBDF9C5F5802C3D9 +:108F2000ACE1FB244E888F819D53AC2AFDD6C2E56F +:108F3000CC6D23CEAF41DC45264E38775741C83142 +:108F400003E2E7491E7FA2A24DF1FE49E36217F852 +:108F5000B78F188219E360BC666E9F763178697BA3 +:108F60001BEC8BD3FE6C5F2BC27EBA0D0EF047D884 +:108F7000BACCF3ABE9BBD8BE5848C47372C14E41FA +:108F80007FC556B02B4A35DA158FD107FC7001AA80 +:108F90006420BE462F19159BB7364E027A0CF69701 +:108FA00077BB4A9F70B962A988AB68E9718697E779 +:108FB000B9FD4FB8008EDDA9039C4F66F43A30FF2F +:108FC000923142C77DE89553A887EA80DF61FCE0D3 +:108FD0006995BD15FCF4C84BA790DF67ED61F4A956 +:108FE000DBE335C03AE5A3063FF913751CEB387F88 +:108FF0003F224556E2F98F972C3688835DE2FC5F6D +:1090000037A563AB937EAF6B2176583F5F7A89C9F2 +:10901000C1219D0EF179A87D641BDABB1AC6CA7501 +:10902000F59E7613E297F9EFA50B563C5001F6BC7E +:1090300086F8403FD47555657BD0AE9810BF757BE0 +:109040000EDF9415E7B7527BB802FAB553BB63A1A4 +:10905000E599D3A8DE047A50BD09F5EDD3820F540B +:10906000C4F1D781F9FBB69A61DC69C406FD3F9271 +:10907000E37F290BE7211138F7F088A1B54CA6ED65 +:109080001FA9F0D8280629BE76A5839D27F9466E2C +:10909000D756A03F5C97BEC8D722F5A12F5E6ACCF9 +:1090A0000778EB3C0908CF2D7BA475CCEFB0128C70 +:1090B00023CB91ADA07FCE8D96C682FC7FCCF126CE +:1090C000F077C9D07D1BE0E5D2CF2903D2FE6F999E +:1090D000C6F8D43EAD03F5CCEB2F51BF66748C1FA0 +:1090E000935EA4FE0DCD3B649BE443399B6D8AA740 +:1090F00067AB81D9293BB73B79958CAE3DDC4EF50A +:1091000070FDD3E332AAF7E76CCA68B0B31F73BA35 +:109110006377A0FF79BF6B5684518E6A9F667E99F4 +:10912000D3E42FFC661CDF3ACB999D147172889BA7 +:1091300063BC1CD6254E582F7BDA61BF98D20FE94D +:109140007BB3F38622C057AA9BC97766BE84EB37F0 +:10915000EAAF21DEDC0B76C92B0B589CBDAFF55F67 +:109160009A9BC7FF5203C5109F75D17504F0994BA8 +:109170005FAAB3801D2A947CED1EDCCFC3F56A8FF5 +:109180002BC3D7AE926BE6EF9D732731BA867E274D +:10919000C37E4B9EDB23D6CD2A7FAEF7FAD7E28380 +:1091A00075CC395D58B6C4C5F7C5BC438D09D5F13A +:1091B0007A2CC7CDF01F1A4EAA412F507FDC8AF1BE +:1091C000601B1D07D6D9ED373EC1D6D94DEC7CB416 +:1091D0009BF93F15747EE097B9F202EB997D4DC281 +:1091E00079B8F2C83268E76A4A979ABCF178B6B59E +:1091F000019E77733F40F8E375545E4CC88F94FF2F +:1092000041CFBD22617CA23FFD10E36FA61F6ED946 +:10921000C3E85EB787D93FB1EE06BD07E706414F09 +:1092200078C7C4E4BACE181906FC19D3139161802B +:109230009FFEF443456208E5AE62E4308C2B887EE5 +:109240002E193CB8EF7689AE1BD18FE5F290F4323F +:1092500093034197D78C0ACAE16B8313900F002EBA +:1092600058070AFD3CD715B8D50D76B732320CE356 +:10927000CB5C9FD6BDBC4D75BE5FAB4F698A71DCC0 +:10928000738309E3133E1EEC612515618AE7AC1276 +:1092900037707C54EAB07E4BFEB167A0BECEDC11C5 +:1092A000063EB364774F06FD75BB9BC5D3764A8CEB +:1092B000BE62FFDE0D6B13D01BED89788E56C46342 +:1092C000B470CDE2F222F02FD619106F87FAFFC9E1 +:1092D000E5A28ED7DBCCF94EC02DF89AD61F0C0E26 +:1092E000517FF647B4FBAAE243621C6107637866CC +:1092F0007416FB05309FAA82FEEBB5EE677A46F046 +:109300009D287F88F3FBCD9477A1DEB322EE5A2D02 +:10931000B378BE85A8CE5989FE44FEFE86AB9FAFCA +:10932000B77DA167FB55C44FA03F8C2380F89655AD +:10933000FA607E3BDDEA7D2B91CA44FE2C22FC2A9A +:109340006F1C3CDC2783634753FAD87F8B8E3B49E5 +:10935000BD4F10E54B4D3FFDC1DDAC89F737E7ED63 +:1093600023107F4A342773F9BD827EFFB6E87D0063 +:10937000C55785FA8EC5B1061A470BAFC5D337BCA2 +:10938000D74A8F665D670DF0F3B39C1EE4A16B9B1B +:10939000E73E3ECFFBF83952B25856ED8F382AC31C +:1093A00004CE294DBD62C373E0CDFC3CA66D6A7747 +:1093B000444FF9357982321CEE7FB8026AF8D3AA9D +:1093C000D5E71A33820E553EAB2653553FA77EB0E4 +:1093D000AA7CD08611AA72AF52A4CAE7357F4D5538 +:1093E0007F686B992A7FC38E9B55F5878766A9F2A4 +:1093F0002D8D1DD5200F23772F54B59B2A47F4853B +:10940000F4FBA88E656A7A68F03946F0B5395214D3 +:109410002F4F5FB807233DA65E56E3236582E69C87 +:10942000E775F2C7983D1AFED0B417F29548187F39 +:1094300024EE6DFE33EC5F276AE588F73B9AB69B16 +:10944000E2E8A3DF7EE46453E26D32F0FF3EC8C47D +:10945000F9D36F6BE4BFA23A85ED135D9E3580DFD3 +:10946000CDE4649E89ED1FCEE3FB88A27C4A1AD32B +:109470000B25694C3F5D2B3F9FE0FC7CA41F7EB613 +:109480005237D70DF6A292E07ADC56D9F86788EB0E +:109490002C90C3A490CACF437C3E8FF0F63B1A6C4D +:1094A000D8DFA30DE998EE6CF0E0F7C71BF2310DA1 +:1094B00035F8F07B7BC3044C77513F10D2A71A2AB2 +:1094C00031DDDD10C07A3F6DA8C6F4E98620BBD738 +:1094D000A3A5DF6507DADB7944ADD7E657EBAF89A3 +:1094E0003EF3C9F66E7D726F7CF46AAF5F7CD5F394 +:1094F000D71B4E16561E8CE3D35BD3929CB87F3895 +:109500009E8CC7F5ED00EDFFDAE0AB3C387460FEF1 +:10951000D6F20FB9F2CDA1F1E770443A0F183A93A1 +:1095200090ECB4C7BEA714C4F0D43F5FF58D1FAA5A +:10953000473747284B8D06FB13D77EBF867FFD72CA +:109540008A6A1D2DD2DFA431FFA094F36BA9865F38 +:109550009F4E637EC3765EEFFF377E3D604942BF1C +:10956000FC80C193ED8AA3FF014B227E27F9C4330F +:1095700087D24FF2139B97F2EFBB696C7F4F8295B6 +:1095800009C68F87D8304E62B9CE788A068F127599 +:10959000D7BDB4BF5299E92F090E1C41FF3E5D4C67 +:1095A000BFE239888418DFEB7BF303ED4731523893 +:1095B0009F35108F9196FF39CDA3D2B765B2FEAA21 +:1095C000FABA0CE4AD8FB860AF76D7296FAFFC9BC9 +:1095D000E54DF03BB9923724FE1CA5484BB9BCAD14 +:1095E0004B7B0DE54DF07B19D8BB38382E70FD7CD8 +:1095F00081F3FB01EEA7007F14F5E1AFFC91CB876F +:10960000687FBDF82E254C2F1212C9043D71BDEDA7 +:10961000A9E4C8D0AED49CAC248EBEFEF6FDE1B366 +:1096200057BB3DCE6B8A37514D23819CAFE4D0AD03 +:10963000345B15E027B2C3703112C7C7772407FE29 +:109640009146E1DC63207B607F829A798FCD8D7CAF +:109650008F78A57F0133CD17F2FC7845427E36D155 +:10966000CC06908FC86B7F037D51C8D3F13C8570C9 +:109670006B3AC84D41129E63F70934F1B86989C845 +:109680004EA32E8E5B1C49847E89B4DE01CB985696 +:1096900002FBE92D92AF594FC7D3A7799B00A8B120 +:1096A00095A57A825B74AD984E22DD4DB065378505 +:1096B000F4E8A1FE047347934CE11C44AED8CE00FD +:1096C000AFA53DB5E64B389703C1C96BC0DB063388 +:1096D000DB7FFEAB85A54A1961F7E1DEB78460DD6B +:1096E000740B090E49A7F8FAB6DEBF04C6AFB26F15 +:1096F0001C03C15EAA57FE18C1B8AF84FAA0CC5AA9 +:109700005C7D07CA31FB8EF8F6C6EA615EDF3BFF7F +:10971000F016168768DAC6F8BDA991E5A7A43379D3 +:10972000189BCEF8BC329DF92D16A22804FBA594F7 +:109730007323FE18DDF229DE4B181D10AFD63790CB +:109740002E09A403F16A99B703E1A30601CFEF48FC +:10975000E100F932319E7FAEAD3FB3B9D56FA67C43 +:1097600094B838A418AED29FCCE929CF31E2B9C75A +:109770009D52F0EBE9304EB60EF92341F46B0BF03D +:109780007366028E6BA6CB7CE86F20BA18CA7CDDAC +:109790007ECA827313243C9F72BDF4A907A676C5C6 +:1097A00058795F06698378428D93A4C3F944A3D5A1 +:1097B0008C72B639C783FB0BC66104EF0793800E2A +:1097C000F127E629CED109FEA3F8580BF01B43D2AE +:1097D00029C08F31BD1ED783448E6441BD7D12E305 +:1097E000032DDF7E275DC411B219BF93ABDBBFCE63 +:1097F0005BEDEF395118BB66FE7602CD97DA17396B +:109800006D140F3F289D09F7333A0F1314C6EC1F50 +:109810002CF8BE42F9AF73AEFD3117ADFFE0A39F48 +:109820006E3750BFA6738984E5A98FB2F2F74A4913 +:1098300007C4919E7407EF05F817FED67308D0DEB3 +:10984000F9DA5DB960579CE5BE08DE435964F2C0A1 +:10985000FE5307C4318151AE5078283E9E0050F42B +:109860002C3F95E61708F4F0F25DF06FCA37792BBC +:10987000BC8D10CF86000DF829837652BF85E6CFC8 +:109880007E9F8C85F8717F7A6BBCC82B12DEA79FF8 +:10989000AC29177A6DC88ABB3FF83FD07FB71ECF7F +:1098A0006548D56C3F673C4F27F3B490A70B56B083 +:1098B000FDA721D5E34310D73B63F03459811F47FF +:1098C00011BC474A64C69F6FE7D8431087392B9174 +:1098D0002688A329DB08DEEB03B982FD4EDF0A4AA6 +:1098E000EB627019CD21D85F3CDAD03166B3214EDE +:1098F0007F52DAF84B585887C15D80EBB04924F6A7 +:1099000007F3A888CD0BE5E9269E9F5ECBE2722681 +:109910003FD5AB60DF34FAD84242E9663C0FECC574 +:109920007320FAE9C406F0E65686A9A9A5FAC65F2F +:109930008A7A751C09BEDA4DD389FE4EAE67434D57 +:1099400030C5A9305E1ED84F8F0C742CA71E2EE494 +:109950002B492BA637930E4C67926E4CBF4E7A3034 +:109960000D109B01D2E3E95E94A72966AAE741EEB8 +:10997000650FC61FCFBC69C3FBABB32A83464F1F1D +:10998000FEC94A713F900473310E2C0773E7C5F985 +:109990001B6716CC5F02EF637874EAF3AEEF71BD1C +:1099A000F921979B4724AE47D6887736823FB88304 +:1099B000E61755DEE0837D015A8E7160658119E3FB +:1099C0007F8F183C39E07F38E1711888DBD5767ECF +:1099D0009B24C33EE39D1920AF27A4E04D35B49FDF +:1099E0009533F93D1959C9991B27E7679732B8C4D0 +:1099F0007907F1FD12D7EB4ED8B3827D620A3FEEB4 +:109A0000138A78DE423BEA990AEA38C079F47FA4E7 +:109A100033BF28C4F582909F1AC107B262CCA4ED6F +:109A2000E6F9BC88C785211627AE904918FCE528C1 +:109A3000FCD56DF710CA1F0B6BF6635C3F76FE8892 +:109A4000ED4F972EE85A02E3AF5C612226DC2F6AC5 +:109A5000FD03C8F3FC1A9307F22B174B7EB60F6B6E +:109A60000E0D85FC0EEF1690D3F91BFD785F958ED9 +:109A700087F1D89BCC6C9FD24CC7877DBDE935FC64 +:109A80005C48CDBDDDC09FB49E1FFCE59B687DB9E1 +:109A900008CEFDB0F374090A3B9F94304D9C4FAA49 +:109AA0003F04EF8D78D6129F42879DBFB34D62E78A +:109AB0008A09FA5303F93B3FBCF78A1DFD5FF00B9F +:109AC00006C15705F16DDEA0F7C0395122DBB09F0A +:109AD00085FCFE67734D13F2E3E7D5747274FC796D +:109AE000AD5E761FE12093F379D58518A732579A9A +:109AF0003C7A167B5420AE6C269528F78584C53FAA +:109B0000D6F173FFDA75837983918D4BC22AF841C0 +:109B10009F81BDE8CF0FEB6F7E426F807EE9E94306 +:109B2000DEA5CAD799BFC653907F90DB22B34F9F63 +:109B3000A403560BA07C035ED8BDA38DCCAE589E6B +:109B400092E2EDB9D9A9DC064771CE1E1CB2C58AD6 +:109B5000686B25F1EB087359E08EF8F3E1DB4A03FB +:109B60004BE2F78B6666307EBF3583DBAFDF2AB909 +:109B7000309E7E0AE3F777DE22F8EECBB9B7283EB7 +:109B800041FE243393CF01F032E0FC57703DCED339 +:109B9000989FE96902FA063306235CC595557AF069 +:109BA000435E681B7F7422E94D9FFEF0DF1FBE12EB +:109BB000D2FCAB32D04EFB75D7E29757E8B317D53E +:109BC000D2797FBAD884FBAFC26E1601B140AEBB6A +:109BD0004988CA3ED80FB42B19CD04DFE37105E0E4 +:109BE0008C3BEF07D8BCDA4C64559CD4A6CA67D529 +:109BF000A4ABEAE7D47B54E58336E4ABCABD8A4F15 +:109C000095CF6B9EA0AA3FB4D5AFCADFB0A3525583 +:109C10007F7828A0CA8FDC5DADAAFF299D5298CE1F +:109C2000A7F8B8DEA7007D157F774149CC8E8FEA73 +:109C300008AADA8F8F2C9D09FA6BCC9E1A553FE447 +:109C400024F5DBCC70EEA89ED3C5A7073DE2A3CADE +:109C5000F9512FA09095637D9AF79D9C711EF4F8A1 +:109C6000C26A43CCDF835664FB9F813E3E8D9FA832 +:109C70005D57DFF98672C84AE15BF05B652BC8C3AC +:109C8000EE0CF53ABB426FC5797D7A4C8FE75F6A7F +:109C900080439D313A7E0A1DC1BCF793103B9FA2C1 +:109CA0009EB758872F00FCD0760B693F615A644AF3 +:109CB00057D3DBE251D33B315F4DEF249F9ADE292E +:109CC00013D4F4B6FBF3FBC46F6AA59AEE02BF137C +:109CD000E87F80DFAF1A9FDD19DA38C524D4B39F3F +:109CE000EFE07AB6B71E98632E89E901AA5243BA0B +:109CF000BC18DE7AE9052B5BCF44F5C20EAE1776B1 +:109D000068F582FFD50C0ADFB8205D7FD27E7FBF69 +:109D1000647C16E8B94CB257DC7B087E89FA5B118B +:109D2000727E2603F60137F8220AD8899D26F42789 +:109D30003B0F0DC3F5C091A164322E2B2AD97AA016 +:109D4000C5C8E0FD24C38A7A70A714F804DA1B366C +:109D5000D487C18F3E3B99F1C5EF411FD2C9BE03E5 +:109D6000EB74D89CD2E811A2D1835A7F58E899F1BC +:109D7000CA615C375FAFDD1868DD5EB898D913A1A2 +:109D80005FC7F33C59A6A07F2FEC4CD384A017EEFD +:109D9000151499FD7AA28B5FC747D0EE4C250AEACD +:109DA000E11B2B7D8FAD27E057FD3E0BFCAA5EEB40 +:109DB000F918BE9D99E354FBBC2ABC6AF779B3330A +:109DC000A378CECE74C5F6799FB7F890BF8E2F607A +:109DD000EB94E2C3439AACB49D7B157B77E379BBEC +:109DE000EF55C81F5FC3D68DE38EF9F570BE2AAF5D +:109DF000DE8BE7EC9EF706CA217FFC1E565E7222C0 +:109E000088E7AF866C60E5459BEA5F85FBF973BF29 +:109E1000CBCA5FF9782BDEEBA2468EB52F6D2D876E +:109E2000FCF12DAC7CFCC95013E48737F3F1A58E0F +:109E30005793C10E7E9FBDABD06BBDC3D73753398F +:109E40003D7AD193AF1BA6F0FA627D33B59AD16902 +:109E5000454FE026642B0DBDB47E7D0509627E3A38 +:109E600051309D414298DE42C2587E2B8960FE1BD4 +:109E700070B58AE6AB88C700F99ACC7C760F982E2D +:109E80008D315E31C167C677F24EFFFA3B2439B699 +:109E90006F2EFC835647600DF80FCEF200BEFB51CB +:109EA00093C9FCF658CAFC07B743C9F5D1F273FC55 +:109EB0001E596CFFBB04CF6D40C81CFCDDC599EC7E +:109EC0005C4DDEF67A19E4F2EBD9920FD66DD3C170 +:109ED0001FA6F809FFB76C87F378F8C6511FEBE6A9 +:109EE000589C48133F96155C7F14E93D2341581A4E +:109EF0001F2DF9BE4C7DF8E74110330959FFA8FF2B +:109F00005605176BCCBF19A8DE317ECEE779BE0FA0 +:109F10003A27E0D5217F16AAFDA7C64CE6378974FB +:109F2000DCB1AF765E459B143CCF3DB7DD44D8F93C +:109F30001C9209E77056927AA4EB99518A81DD331D +:109F4000657A672EE7BBB99C9FCEB499900E67EFF8 +:109F500090429217DE077BFD04F05BBF7E53C15039 +:109F6000D43773387FCE33D72FA905BE16FED47FE2 +:109F70008FD07F393226F7D44F54E01DC2F7963088 +:109F8000BD086EB74A1FF6E327BA785EC091A548B0 +:109F90006827AE551F3A45FF5C1F668AFEFD94F5A3 +:109FA000683E97974AB50C0F2E9E66D56AED4AB06B +:109FB00011E4209DB44A90CF213D987A886D932B6F +:109FC0000F42603E1DE4D30E1D6C84FEEDA0FF60C9 +:109FD000FEDB0E14C7EB3F038F371BCCDB713FD684 +:109FE000E2F4E3E153F96034CEF60AE8C7AF2ACED3 +:109FF0007630D3C3EBD78F67E7AFEAC7407ADA6032 +:10A000006DC6F8B136CED22B2EA38E5F4C6EE576A0 +:10A01000A355D88B603ACC1B8E7DAAECC6449F0713 +:10A02000D2A95200F5CBB2B4E071D0DF3791FA6C0F +:10A03000A8AF3347F460275AF8FDA19661621D4B23 +:10A04000A90AA98DC5DBC7701A3F3781BD47F75CE8 +:10A05000BE19CFCD6F751BB742FC2E764F93B7E379 +:10A06000F74E47F3F70FB626707CB424E17AE43E4E +:10A07000188FB64BD07B86015C7FD451AA527852A0 +:10A08000890FF346BDCDD5C8E29317910E24F26037 +:10A090001E6D7FEC2519CF793D67EB49B0D3719EDA +:10A0A000DBDBBEBB9DC2F3D91BCC3CDFB75BAF98FB +:10A0B00068BFA35F9A96F816ADBFFE974C86C74C53 +:10A0C000D0A19EFCC848B6C3799F5966BD59A6FE6B +:10A0D000C747DFE2E76F645F6EFC798135D94C5F7B +:10A0E0001EE9277E38DC51EACD82F28CBEEFF326E2 +:10A0F00066E954F70BC57B477F7111D53991E18E25 +:10A10000AF633F226FB86C27C1D4F87E3CEC7EADC4 +:10A110001C2070CFD170D989E529D47F857D841426 +:10A12000FB0419F8B18CD80EFA25BCEA8D74EEF553 +:10A130009EC224B927EA370E06BBC4FC4E8CEF7AC8 +:10A1400061FF45ED6F8E21EABC369EBB229BD91183 +:10A1500083E63D8615D98CCF63F0B2F718C4BDF005 +:10A160002ED99F0871A0E53A767E4A76981538EF89 +:10A170009832D981E7FC443FB771FC75F1F7236C45 +:10A18000B43EBE4BA099C7662A3F5E38B79E25A94C +:10A19000EA0BBDB544C88F6247FF6631979F17B37E +:10A1A000D9FDF62536B6EFF2C76D1F6F81EF4B0F65 +:10A1B00027180189B72F26C9A368BBE0C3A9FFD719 +:10A1C000EF013EF5ED877B98E47EE647D8CAF24B77 +:10A1D000D83B02D370FF5452B250CF5EAB9DA8491A +:10A1E0005D6ACDA6E32724873C36DA4FC2887378B0 +:10A1F0006EEF962CC2EE7947DFB58C0C8B3F37564D +:10A20000935A6ACD76E1B9D8B003CE4FFED2C4E8F6 +:10A210007B9028E067ADDD9781F7210F640713A0DD +:10A220009EB8FF4A0EF6E07DDF72F04BF2FAA0BF57 +:10A23000F5331DF091960F0070B0BF03F1C3740E9B +:10A24000F7F2647E2E2EDD8FF759EF9FE42C6CF130 +:10A2500070A4D37CB9D98EEF6C6EE4F415E35E2F55 +:10A260007F3AF3983EE991247CEF6520F8C4396287 +:10A2700081C7846CC62F221578D2DEC74BC8D6F1B1 +:10A280007AECDEEE81EC00E275EDAC9EF7ED79F054 +:10A290005E057FF76180F9DEFF2FCEF75AE9B02225 +:10A2A0009BD321E1DAE06AFF7F045792806BF4B51B +:10A2B000C1F5E2BF08979F30FA0C0417A56712C8D2 +:10A2C0002199D683EF792C775C1B7CEF6531FBF00D +:10A2D000AFC0E7B836F87E9D05F085197CF388CFCE +:10A2E00090AEE7C0C4DDA3D1DE9F11F76AE6C9D402 +:10A2F0009616819D0F05A1C99C7C33013DFBCFDEE5 +:10A30000A389D2D14DC27658A7EF33B1F8A2AF6777 +:10A3100058BCFD3CC5F17320DB7F06E05F3E8CEB53 +:10A32000854A75BD339CCEA29E781F83CCD4A1FDF7 +:10A330006AC91FD2CECE1DB3295BB23DF80EEEA581 +:10A340002C4975EE58EC0BAEB3D7D4C07E88DF6CC9 +:10A350000DEBA95DD83AA2261FF641FCE9BF3EC12C +:10A36000CE57537F358E4E028E0B0D6FD88618FA5E +:10A37000C7C36AFDF325F57DECA7BCE20E92ECB8ED +:10A38000F30AAB77BF691B12178F1945223AE6EF24 +:10A39000F7E8585C989FB749BB3EBC3F0EE7356075 +:10A3A000FD961A40FD2FEC45DDCB3FF1801DA2F656 +:10A3B0001ECF83F62425A03D681A31213F7EFF671A +:10A3C00030D77306CDBB16313BFDAFBD6B11F35FCC +:10A3D00024A2A4F6D5BF8CDF055DFCD6BEE921CE54 +:10A3E000D5861B3ACCA787C27B24F916480F34F8D0 +:10A3F0002CA7297D36A59606B3F15C2DBF9F10D8FA +:10A40000633EAD8ADB8655F98CE01BE6D3AAB86DB6 +:10A41000B72A6FF5791AF17D05A7A710C854566CB5 +:10A42000C6F3FD39F52754FD34EBD8BB49833644D8 +:10A4300054EDCBFC56C59E02F1DD73AAFA2D8D8C2E +:10A440008FF39A7B54DF0DB29FC039D6A1AD9755DB +:10A45000FDDCB08358E2F3C343664B7CBB91BB6D1C +:10A46000AAFCA88E74557D832D5F952FE5E782FCAD +:10A4700066763EA7DC5CA82ADF945A15043E2A259E +:10A480009D2A38A2E7C107385F23CBDB301E097B4A +:10A4900099938A7A9F0BDF94EAC7FEB5FCAFDC3B49 +:10A4A00089EF23B175B5E00752ECCB87F2FEF86275 +:10A4B0009BDB7F17D0FD05FE0E8924EE3FE7134F8F +:10A4C0002029F66E8E16CE8739DF7F64ECBBFC3B0D +:10A4D000513F56FD3E498C6FD9FB241F9589778DDE +:10A4E000D4EFC989FAF7F271EEE3F18781DE953393 +:10A4F0005C4E54BD2B171B2F19BF7F34F8EAE33D88 +:10A500007CDDE3E9FB999FF1AAEFAF3C25F0E7E89A +:10A51000BBBC3D8ABF0C95DC3F05EB00D5BA251BC3 +:10A52000CB0D9A775CE2D735F07DA0754DF45DBF19 +:10A53000AF7C3D4310DEEBF58F97A531B806EAFFFF +:10A54000836CFFB82C5CFFFF737637016C6C06F6EA +:10A55000F31B90ABAD46768F916A308C4F88750DAA +:10A56000D1AE7BF2D9B9B725E9BF467F200162059C +:10A57000D4AE267CD782FB25B74B3623C07F9BB950 +:10A58000E70F8FD1FA277F6932B2F88658D724EACD +:10A59000613FEE5AE18CC657F83B0B10EF06BB3D0E +:10A5A00066EA08BC57733FACD700067E3FE27E0ADE +:10A5B0004306D51F293A2BDE7F4A31B2FC1888CFDB +:10A5C000D07AA30FCF4D09D3DAC930FF8970BF8489 +:10A5D000ED83A4EC952FC4E35BBB0FF259F75F1238 +:10A5E000C03E7E9AADDE0FF99CCCFCDD48C0CB04AA +:10A5F00027E273F44BD3D2E2DF2F899EDB14F19D67 +:10A600007EE2C5B1F330EAB88C88C74CBECEB84CF8 +:10A61000F4DD004D5C66A0B852425A302507FD1F9C +:10A62000755CC97880D5EB69B3A03F20E24C629E8F +:10A63000AE1C26D7FF93E67741FBCBD97E37A447E4 +:10A640002C2C2E7364C6F41498DA67C49F02EB5363 +:10A6500038DF9BE5E84D7F88A36C8E93FB23F6BE25 +:10A66000F5441E1F6F590E41BCCE77FB87E4D0F432 +:10A670009C91FDBEC5B9049E26337D36265A9FA502 +:10A68000D372989E39C7F5DD390751BDBF2CEADD7D +:10A69000C4D3D30D66F3E6A1B172CF7F9BEA615DAF +:10A6A000E7CA13F7B128E752FCD4ED4D437F7E454E +:10A6B000EB2923DC7BAACA295D0678807A308F15C6 +:10A6C00072C408EF667FD7159C04F0D67988FF79AD +:10A6D0008C6F458CB3299E3FE1FECA27061627FAE8 +:10A6E000C4C252014F554ED53268F7C9E48811E310 +:10A6F000FA3C5F477A6E83F3995539011C8FE61F48 +:10A70000D7E4DF97599C18E3467ECE6F682FFBB0E5 +:10A710008F5A7BA87D5F6CAD91C719B5FA213B4973 +:10A72000A53F96EC7D13F9F63633D90AA1A7DBF7DE +:10A73000A61961515193AC0CB3A9E21DFF9C5EF8C0 +:10A7400024A71BF54D4B694FEEA3C518BFB0B5D379 +:10A7500071D6EC6571EE35627E5DEAF9D5717C0EDD +:10A76000F4BE9ED6BF18487EA5BDFC9C1A4FC9BE3C +:10A7700037B3A0BF49FBDE4A8574AB548F71E7B88D +:10A7800073B5275EA1FCA2D7F5A4C6CBADD8DF99DF +:10A7900062A6F20BF09256A4775D179D5732A496ED +:10A7A00030C495C91EF5BC56C59FB3A4FDDE453A1D +:10A7B0008C5E09D61186D8BE30FDBF9674637F6B60 +:10A7C0003AD4DFB57666203E3805F2372EC65735C7 +:10A7D0001C0F3502EF21357CE27D21F17EE72D242F +:10A7E000F843E0DF2ABB59D18F81470BD8BEE45232 +:10A7F000E241BA2ED5D84DF11ED172EB1CE4A3E58F +:10A80000CD5AF8FD4680F38ED6ABCF4BF0CF7EAE5F +:10A810003F1A7218FDD724CC7C0365A3B81BF793AD +:10A82000287C9D203F023E22FBF19D7151FFE37188 +:10A83000DD4F85E99CF449D3CC601F6A5283BF8009 +:10A84000FA3927226724D838B6FA71BFE9D29EF3C5 +:10A850006FE3B9BA74663F09893C7223FD67CD1E68 +:10A86000BD0DE201357B5E457EED0F6FD17BE8A427 +:10A8700047C075301E6F022E117FD6CACFCF72D857 +:10A88000BA78B6C7FF26C06718DC81EF5DF5DCC378 +:10A89000EE813BF5D4B2523AA747A887AF8BBDEB08 +:10A8A000427C7E33C4F9A69AD8FB337FB09599E1F8 +:10A8B0009EBBDBAE0B80FEDB6C5B6687FBCEE23DB6 +:10A8C0006FB7A463EFF7936576783F648989BF3FDC +:10A8D000F9ADC4701EE5D75F19D93B9FCEC420BE29 +:10A8E0006BD063D7E3F8A50B3E1B0BEF10645EB192 +:10A8F00016C179B62EC06F5C1C7B6A79CF58F6DE24 +:10A9000026A39B338FC157E7326E85770C37533BB5 +:10A9100003E9B37C9EA0ABD9FE41C886EF37F27D38 +:10A9200087F566C69F7516FFFD65106F38CC7E4FA4 +:10A93000EB339B3F05E2FFDAF721851FDBDFFBCB23 +:10A940005F703DF2EF7ADF51C49FEBEC3271A6C429 +:10A95000DA8979D6F1F769B4F416E5AF7CA1EF9303 +:10A960001FB272593CA5BF758E2397D9C73A786F2D +:10A970003BCE1ED751FB0570D6C17BDB57F1F39F51 +:10A98000E578A903FF3C35FE3B939B583F4E2CFFD7 +:10A99000299FE74FDFD055B6F701EF8DB96C3E2305 +:10A9A0005C7200F63F4686D9BB96FDD513F7B2FB25 +:10A9B00083ABAB2C721BC00D71DABEC61B93CBEA06 +:10A9C0003DCBF5439723B212F0D87533D589944F18 +:10A9D0002FFD320DDF3717F5FF2B87E1F3D20C6621 +:10A9E000AFC5FB9A2572BD047C25E851951AD80F96 +:10A9F000720BEFEBB278BFA2A203F0B107FD70F5C6 +:10AA00003A4DC0BD99EF1F89F5D940EF99D6C17B6A +:10AA1000E357C5BFCCDE4BE57054E837E2F988F365 +:10AA2000AD129E773B4F824D98DF2EE139CFF34731 +:10AA300098DF082B6BA904F4339387954FCE46BF5C +:10AA40007A59909DA75EBA6B359E5782FC46AA370D +:10AA500096A6B37B5CCB36ABD7352BB6ABF534ECD7 +:10AA60001BC37AED0E78E882DA81950FA9EBD71037 +:10AA7000B6BF5AA339E7E4E67645EBB7D7E4527F91 +:10AA80001DF6AD4B48C9F5DCB3BA9FF8D7E6B2382E +:10AA9000A01EF4EA387ECEF9FCAEBCB4F8DFC539AE +:10AAA000E89554F78B2E50F91E32147EE7C786E9DD +:10AAB000A65CFFB773295E1FC80DFE07F4F7C961D6 +:10AAC0008E3FB987BDF359CDEC99098290F49FA6CA +:10AAD0004566F4C3EF85F7BE281E4D266627855FC1 +:10AAE000A0D77F539F0CF3FDB0381DF5F4CFA657C8 +:10AAF000C2B98D96527F21E8CF962A2BBEEFD0A601 +:10AB000063EFFA994DEC3DA2D04F271E803DF22114 +:10AB10001D0F94C1D68A2D1226C91E884335E2F92D +:10AB200097E62904DF6D13E34C88043A019EDC3973 +:10AB3000561F82A66F4B87F33BCE9146FE7E04B331 +:10AB4000F7751CD78FEDC9C3F7753FDD7B03A623CF +:10AB500008E303717F00C62471FB71F03B4824EECB +:10AB60003EE6880E296C807DFA8EC605C037B59BFF +:10AB7000BAF15D9B9E67089EC371FE2AA3CC931C0D +:10AB800083AFB6F34907DE6BE0766B11AC3B610F28 +:10AB900087FB63E2FEC2220B5112E3CEDD54737ECB +:10ABA0005DB097ADA796115F2EB45B6826C93A8A4F +:10ABB000B345E51DE3D0CEAC36D8C1DFBCEE73287B +:10ABC0005C8EB4F52EC05D0BB0772F99707FA9EE27 +:10ABD000A9248C0BAED5F5E0F8AF737D53378CEF1D +:10ABE000170C217E38B754B7EF063C6F6E8277A5FD +:10ABF0008A50AF9981AE87C08ED279AF7AC582EF85 +:10AC0000D545DF6DB11105E475EDBE345C1F3BF336 +:10AC1000FC85EB0AE09D90482ECA3BD56310E28E7E +:10AC2000E4DEF50D38F7529749FD149A4FFCD1B781 +:10AC3000597E706425BC583FF647F7B3FC88C819A5 +:10AC4000C84FFED1A32C5F1459A9A7F9EA1FEDFE46 +:10AC500006DC53A983836794B1EEF8D173DF807B60 +:10AC60002817ECCC2E5F32B0F8F1A59786B72B7180 +:10AC700074AF1AC4F4E4050BAB77C1CBDEE126F95F +:10AC800011D5FBC1E306E9B8BFC3FC1E314FD18E1D +:10AC9000F68FFBBCDAFE3FE1FA7F157F6F676A2211 +:10ACA00069B6B077C51538B77570EF0D889763B979 +:10ACB0000EFE7E0AC1DF3315FD68EFE38B71EFE214 +:10ACC000BF4B74C9A0FEBDCA2BDC4ED27136E3382F +:10ACD00005FE429093BA59D98540374A2F99D34BF4 +:10ACE00066EFFDB6617DE8D70EE7BECA993D999A39 +:10ACF0009ADA06722FE0A6FE9C15FD2E0EBF71108B +:10AD0000E38F554D1C5F1466382757F7F270E40F38 +:10AD1000A02FD8996A8EDFAA410C2EA88FFD654717 +:10AD2000F0F712AE777EE97CDCAF7A7E7174F103C6 +:10AD30009F1CDC331CE922E0A71A53D5CF85464D72 +:10AD4000BB0904CF71D639F2B0DDBDFC1D79F1AE7F +:10AD50002FB4F38E667E23F0BF78478DF807E13E6F +:10AD6000572DD70FD1F7CF3AD8BD0C3284CE0FF084 +:10AD70003A6B66319F9F8DCFCF16FF5E7354EE8E78 +:10AD8000F5E4CE89FBFD18F13D8AF7687F0545BCE7 +:10AD90003F95FCF6D51FD0BD3F7ADC3CE82BE6376B +:10ADA0000127754BE3E910C5B3063E814F905B2E3A +:10ADB00087F88EAE560E2747E9A8915FEF3F391E00 +:10ADC000DFC75BF31D4A4738E7EB51F3F39A2EAF29 +:10ADD0000E7E374EB46BD9AD59D777DDAD40FC61EF +:10ADE000EDDE2A3C67BAE617CFBCA8D0F6773DF770 +:10ADF0007032A1F83E2FB7BAE13DA6DA27B724FB9F +:10AE0000211E242BC9A02FCF87D8EFB46AF5F98F64 +:10AE1000B85C083FA88EDB957372E8D997293E5637 +:10AE2000BD63F235D24F6B779BC2265CAFAF427FDA +:10AE300088E64FB1FCBD18775CBB47EDFFDCF5E35E +:10AE400087DD1EE427254B970E69388BD0B46E97AB +:10AE500001CF9BD71DD3FB3CD02FE9D90AF069DB8A +:10AE6000031CF074C2DA0EFD52634AEF726A818CE1 +:10AE7000E077ACEDFA1EFA516B35E7BF6BFAF1A340 +:10AE80001E18A48E7B0ABC90900BFD97A69FFCF821 +:10AE9000D997297CE7DF4D2B84B37A1777FD2659A4 +:10AEA000A2E5173BF252D8EF896FEAF3FD9F4BE022 +:10AEB0000798E2ED29A3A7678F843117B297A5B54C +:10AEC000867032AC976BDB0CE887D63EF3C4531028 +:10AED000EF2114CF700F71F53387DEFE1ACDAFEE80 +:10AEE00034386732B0AD923B4697B51EE68F083ACC +:10AEF000DCF5C2217CB70BBE837F2AE8B1BA73BFF1 +:10AF0000918CEA8DB7F28EFDF88E662FBA749CBADA +:10AF100009DFD9FCC95F8DA08FCEEF93489AB77730 +:10AF2000FB9A277F930CF5045DA274D2D4BBB82B97 +:10AF30001175FBC5BDECBC667F745A47D518BE17AA +:10AF4000FC8B6710EF35EF9A7C30EF9A67BF990C56 +:10AF5000F09F95EB193FFF708B1BEEB9D51814FCD1 +:10AF60001DC81A03FB5EF3F83DC867771EBEC7CD48 +:10AF7000EE6DF9337413707E1930AF3B76CEC57920 +:10AF8000AD2441E4B39A1FEA71BDFF39FF1D012DC5 +:10AF90001D9D1E260F67DB4DF868D35938B849E16F +:10AFA000528EB0DF2F855F5C897FEF025F9A2D891B +:10AFB000FDBEDF47517B4F35831BE6CBFED6EEBA95 +:10AFC00017DF5FB890E34F837821C583C2F125C1B5 +:10AFD0003D2EFDE18A344617E2914B783BD8BF8184 +:10AFE000EF50BFDBE0B78C56B5E3F78BD9F8221EE4 +:10AFF00040E14E8078E659378B07D3BF6EF46F99E6 +:10B00000AF8B7C03FE67199F6754AE77B17D4B21F0 +:10B01000D79F1D63725117AAAA4479EF3684D3A033 +:10B020005E68FF1C09E5DDA47A4720CA07BB0C5CFB +:10B030005ED5E5142E598AC3E7FF02876BB1D000B5 +:10B04000800000001F8B080000000000000BDD7C6A +:10B05000097454C795E87DFD7A936849AD0D2403C2 +:10B06000F26B6D48B1905A1B88CD3412601104B454 +:10B070002420C206DCEC181092C18BE264460D025B +:10B080008C09F9438267063C727E83979019E65BD0 +:10B090002180F51DC08DED10FCC1A48D31068730D7 +:10B0A0006D1C038E0512E018FBC433CCBDB7DE5314 +:10B0B000F76B21843DFF9F93F9E288A25E55BDBAEC +:10B0C00075F77BEB3EBC8724DF4B0E80C5CF5AC0A3 +:10B0D0009F03FC730B7F1BF6FEE89A1C8B2D984395 +:10B0E000CF1DF4F75A80526CE4D9711E1BC01209AF +:10B0F000FF3D02C7E8676CA86D3A5758F99635F4DA +:10B10000BE382526E9623FFCC770187E4BC6B635AF +:10B110001920B5E73AAD05F002E0941526DFCBCF54 +:10B1200025617BD6E2F42AD8FEABC9EDCB03F86CDF +:10B13000F79BA71F2CC1B6CD9454C5BBB86CD230B9 +:10B140008095F44F9CD780BF4D45D8DFFB4815E470 +:10B15000032CDD530ACA50F1FC8709F4FCE96B3279 +:10B160003EFFCCE604A0E7EDA60BC130782BF079CA +:10B17000D0C6700C34A450EB1F08D8AEB481D38F66 +:10B18000FBAE3C253B15C213746DB0DB7AAE27389D +:10B19000BEC47D1ADAE479E6B89EE3005D66F7D0B6 +:10B1A000703C1B2F04C3F0ACE135128F6584C7FBE4 +:10B1B0004278FC33E4C58DC2EE9FFE79F9BD9EBC9A +:10B1C0009E78BDD9ECAC7C2B0BE06A338E5942CF14 +:10B1D0004FDDAB301D9576DC68008E1D505B1C8208 +:10B1E000303C6AF85BF9E2338CAF65FF52CFFB3439 +:10B1F000ECB2F82D08F74A5F75258D63FF23D13F28 +:10B200003C5DCABFDD79F5788C1CFF8F7B41F095E2 +:10B210004A77D35AF0C620DDBB0ECABE9D840BCF41 +:10B2200097B106C4FBF203B26113E2677D143CECF4 +:10B2300046383AED5DB109D8AE8F17FDAE64F3061E +:10B24000880B3DEF8A82BA36A44FA7BB2B36DE1699 +:10B250003A7FC9EB72AC82FDA00F2ADB6CB7E3BF6B +:10B2600016862308627C826C4B6BC2FDAF6FC928C7 +:10B270004234C2752BA43525513FABC8CBA758C368 +:10B28000F07F02EED3A310DECEE8D87C8203BC2E82 +:10B29000632AE27381382A2C7DBB25160CD83FB077 +:10B2A000BC0A105F0B37EBF1B0D8363DCEAF903C07 +:10B2B0009A42FC80BFCBA0D10C19B8BE35F2F9661A +:10B2C000419708FEF110CE527BF28F57E39F422840 +:10B2D00064390484A63FC02AABA0F70439EFEF001D +:10B2E000CFD97954060BBD43CEFBDD283CE79FB197 +:10B2F0002F13C37B93992F977B2E333C1A1F6B7CA4 +:10B30000D6417C36A477B9EED8F787613FC0292BA8 +:10B31000F6FF3EFF9FB0EDD87F36FBD7D47FF58395 +:10B32000B4DF43CFF91587BE9A0BB87FE7210BC373 +:10B33000D379E8B7693FA0FE6B1627C1DBB9D6E227 +:10B340002278BD87627C59343E18E98D746F397854 +:10B35000333F48F200EB982EBB1533D3F3FA81BF8D +:10B360009C97886E072C0A209E1A0EA152C2F50DDA +:10B37000AF45F980D61FBC39CC13C60FFFD5F3AC4F +:10B38000348387F92F06EAF6103CC6AE34DA7FE53F +:10B39000A13189C4C7F57B0F9B17E078C5EBFF9EF1 +:10B3A0004FFAA673CF6133E9A3ABA6E0CF0055D324 +:10B3B000ABCAA42D26C4F7D5185C7B0F40AD6393B0 +:10B3C000DB6BEB89177CEFD51FD0395EEF079B0451 +:10B3D0005E96929EEC0D1F27081FA57F7DF8E8342E +:10B3E00005260E24FEFBA5544CFA3E841789E9BCC1 +:10B3F000E2408CCF2AF1F9C5F34337F3C1467660BA +:10B400004D80E4A0AF735FF92BE5836F7F6EC97F3A +:10B4100037E7B639FE3AE9ADF1FF4F1585E9122954 +:10B42000073DE5FFD527B8FFBF629C0CEF5DCA7FE3 +:10B430009EE3FF33BAEF41BAC7F64DF7C9FF6DE996 +:10B44000FEB64AF718BB85F074F0DFD320ECFC7D24 +:10B450009D7BD97FD37377FB3FB2DB9A8EF0D962A5 +:10B46000DEB092BFB05EF54300DC950E7C9F45498F +:10B470002FDA24CC7A80ECB72C09FBFDF70E89D7A4 +:10B48000AF074325E1454E5AC67E869CB489FD042C +:10B4900034F72EC2EBC6A4D12F6FA235F02890BF8F +:10B4A000F7B8EA23181583DF82F3D62B4529569C7B +:10B4B000B7DE66764A0E7EFE113DB7D07B62A9FDEF +:10B4C000EEA7E2BDC7EBC8DF33DA304E08F3336CCA +:10B4D00011714374A659175F44C11B7623D221CA48 +:10B4E00069049F44AE69D87A9CFFB8C3CEF48B063A +:10B4F0009FD76EFB5678B1125E8C92E8BC417829DA +:10B500000DE1A51B6F62B84F3C19933605E8DC4688 +:10B51000307A553F4BBA25DEAD1887D1735AD21316 +:10B520006FE85945E2D71595AF7B0F9F57C37B371F +:10B530003E557C7F53BC46D2A72F3C6FEB05CFA175 +:10B5400076B49DFDC5289C8FC8DA7A109E23BFD69D +:10B5500034C56C4AC273CE744B4E42C34C0894F748 +:10B56000C33ECC969C2F294C8FC042EC9FAEDB9AF9 +:10B5700042FEC80C0CD0A0885BBF42AD3DA59CE04C +:10B5800033499E1F97227C30C3E47C099BC403F09F +:10B590009C5240EB9D878DB87EC6CCD4225A7F82C8 +:10B5A0001E919EF788781552728C44BF1A107C8FBA +:10B5B0003FD38F229E6B557A5E7024F0B94E8F5E1A +:10B5C000F4BE0BC7A7B6B81BDD78BE6969EE0944A7 +:10B5D000D76933E30BBD12C3B30E70EA1F55B99997 +:10B5E000418B13083EB7A991F131DE7E11F12BB9E1 +:10B5F000BE23DFEA77A778D50817353AC821FC15AE +:10B6000098BBCEAD46B8ED2764E74E85CE0BEC97E0 +:10B61000C3D7B80EE1AD611F3BF49E294DC555E37C +:10B6200013315E4E17F0C0C21DEB934AF89CDE1832 +:10B630003AE78AC3EB09EFDDFDC73ED28FFF50DA50 +:10B64000A0EBAF73E8FB9BC76D085FDFDB796A2A6D +:10B650000B250FFA9C89CF4A2EDF6DE2230DBE77B2 +:10B66000D6C02C8ABB20C9A554938F4A9BA5D2B8BB +:10B6700081C77BE249E065960C8D24B753CA611EF1 +:10B68000ADD7C653D3859CA6D27A8A0709D811C4F0 +:10B690000E2E85E28CDEDE7776C95889E252449D13 +:10B6A000AB2DAFE7BC5CF5BD67E394096E21FF20CD +:10B6B00021A827670DD8497AB9373C9C9EE4189C8D +:10B6C0008E70CE3C805C817C595E37CF447666E6D6 +:10B6D000C2B112D9A1935382066A0BD2F11CD83E93 +:10B6E00078CB995A1D86AFB12A1EB6FE58C4A191D7 +:10B6F000EF2F53CFF9A10196D2F887B1CAE059795B +:10B70000E1EBADBC7E6CBAC2EDC91861EF0A5081A5 +:10B71000C8284753D205FE200FF13F3484FFB17D86 +:10B72000E05FE3BF9920F86F6E9DA033C15F130601 +:10B73000E71495CE5BD78B7DCF2E2930CD0B1B7FA9 +:10B7400052DDA7A617BC3FA9AEC7F899E5776B9560 +:10B75000E4E378055C368A8B97A8F2BB1529EC47A1 +:10B7600052D7BE2F3B114258327A09EB636815F16C +:10B77000B115FFDC4AC7B0D56F8CC82B048CC41739 +:10B78000B511F1EF14352E9E12F13C321E9E9F6EC4 +:10B790000BE55386309C9CDFB97E4A76529CDF1BBA +:10B7A0005FD85364301687E2DE82710637E1AFC09E +:10B7B00024E47DEB519117D85A753D617E5E088F68 +:10B7C0002139CFA8CA2C0EF5DF9962AEF3B1BE11B4 +:10B7D000F1F849351EDF5A591C35CE16C2F3D6CAC8 +:10B7E0001B09C46FDD720177960B6D5EEF7A4BD348 +:10B7F00053280F84FF4A8B6F2D825AEB54FEB05CA6 +:10B80000F4EDE4979657ED4823BE9F20E73DFF14E3 +:10B810003E7FA7CA42E9A46E7DF6DEF617D2289FC6 +:10B82000E2DCB56402907CD4C5CB44EFDA4A09125D +:10B8300029BF28819BF8FBE2208209E5D417BF834A +:10B84000F4AF5C25F47A626BFC8E07705EAB7ACE47 +:10B850008A2A316F6B9D9E5F1E51F5FB92D2174E67 +:10B860006462BB6CCAFC52CA97BC48F28172F4088D +:10B87000F10DD23DB1F2DDB7C81C2DAD2B94209D4A +:10B880008EE90AE485AD9F09CEEA622934FF4FDBD9 +:10B890005EF80742E792CA79A5FE30BED2F29CCB91 +:10B8A0005ED4E75D124BF4799B253EFDF84C5C635A +:10B8B0004BA07DEECC7F7B88FFB4BCE890D07EBDF2 +:10B8C000D14DE3B76E7F48C57F7B995C49FE7041DF +:10B8D00082CBE30E93CF8F547C6A6DFB812F3E5C4D +:10B8E0004E76B4D5E2CC52C828C78FB7E356B3968C +:10B8F0008E2B21B3556E2D7C8BFA0F35621FC78FAF +:10B90000A59B78DD1CFB4713E2B1FF708A7484DAD3 +:10B91000798A636202B6E755BDB42067DC113C2E1C +:10B920005439ABCD1ECE976DEE974F7284FBA0E7D6 +:10B930004DFACA6B48E8799E71E8841BC3F05661E2 +:10B940008D0263187E26D8E375FD07525275F327E2 +:10B95000290EDDF8E49C5CDD7895B350379E9A6142 +:10B9600067785F79FED2F1EFE3395F1921DB098552 +:10B9700027082F4921BC20BCCF12BC27463C99B6D2 +:10B9800008F17A29DDC8EB2E112F9586F4D9E92A22 +:10B9900060FE3C0D8DE7BF4F7C3C45E8AFDAE787A2 +:10B9A00098C81F04A3C8FF4D0721CFD355BD5633F8 +:10B9B000DAC4FE5DAD5BCF4753D4FCDF94CAC8FC4C +:10B9C0006990E19D5926DBC91F4A84303DE8203E3D +:10B9D00013FAAE2F7E7BE5F99BF7909C4A19FA3C4F +:10B9E000F22B92C86B7B51FF921FD69BBEE8D67795 +:10B9F000117C969A21F84B6B514FC491BE2830EBC5 +:10BA0000E769ED598CB38CF89EDF375BB9FD43B322 +:10BA10009DDB7F6B4EE1F6A36685DB8F9B73B84D94 +:10BA2000CD10FA33B109E999187A4F6295DB7C277A +:10BA30007989D473278206969313F73F1EEBB0A93A +:10BA4000F101AECBCA8867BA5E2AFBD826E585F835 +:10BA5000B53D78C1467EC52CF099C84E3E047E1394 +:10BA6000E53DE74090FB0F033AD4D8CE0385DB05D4 +:10BA7000E0E2BC689CDDCD2DFBADF700ECCEF8C755 +:10BA80009F50DE2E9FEC24D9090C2DC2E561518612 +:10BA9000F003DAD35DC519A584DFC6F3B5A427EF9B +:10BAA0003701F98DC449641712D578E6D2F3C3A3E0 +:10BAB000E6DFC6DEAE499F3F2623391C3F1E33CD4D +:10BAC00043FAB2FDE64005E96CEC9FA9F37BC6673B +:10BAD00008FFE888C3B59BF6DF4DB95DB20B094E90 +:10BAE000F66B347851C34B35A817E764E8ED5981FC +:10BAF00019F525D939A7C76CC7B67C5B6154F0B678 +:10BB0000F079AAE9FDE1F0097D21F8A537FA697419 +:10BB1000FFA67CA3F14787C33597F6351A303EC799 +:10BB20007D8C0975298417B04F67FA2F52CFDF1B20 +:10BB3000DFE4977DBCB998E29412D949EA37BF3D5A +:10BB40006023BDF01EC54305640F2F951723BD4E1E +:10BB5000B6839DE4FC4449C63B64BF4EB45A148A84 +:10BB6000032F49CA3B24BFDE1DB25DC447CE800B04 +:10BB7000FB8B2BE3395E9D36C6C4F6EEA2C7B153EC +:10BB8000C6F9FF5385E7B2EA1779D11FA17597A6C9 +:10BB9000DC3CF518F917DB131324E68325B123B930 +:10BBA0009F6110B1ACD3C4FED03699F5CBA9AA8958 +:10BBB000EF2F8490BEBAA8EA2B4D2FCD14EC0417BA +:10BBC000C19B4CF1DF4CD51E4EAFD3EB9F9A2A7D23 +:10BBD000BF2E42FF2492FE89EDA99722F5CF960C45 +:10BBE000FD3D60A4BF75D9D6E5273DEAAD94184F59 +:10BBF000B5180F7A0AC81F28345DB4111F48CC0746 +:10BC00009A1EAAADC23891FC8CAA79C5569C5F8158 +:10BC1000710BE5536AF73A4D8B6DE17C36CF0C140E +:10BC2000CF6C9B67A67BC0230EF70EC10F6EFB483F +:10BC3000C4C7D603828E05AD1F7C48E75FBCEDDA32 +:10BC4000A94CC4FBD04AD94E76F064EBF018F2BB95 +:10BC5000DEF3DD4882BC707E6F3413DECA5BAFDD7D +:10BC600043FC1B29EF40C694E23D70A7DCD14F5343 +:10BC7000E7F5A5BFBCE59043716987047E09FDFF28 +:10BC80008E71FDCB09DE8EC166A368B3B93F411E3C +:10BC9000FDA68DF05A056C7F3B52CBAC627C22DF57 +:10BCA000D7FD2E2A369FCE3BA60B74F672EC975624 +:10BCB0009DBD5C1134F0BDDE38D0DBE10AABDE0E99 +:10BCC0004FB03B22ECB4DE0E4F0DDA3E22FEE87898 +:10BCD0007B36C7FD9394C288718397F87572CE083E +:10BCE000DD7BAA41DCE34EC37624B653B1BD9FE2AF +:10BCF0001EE7B81EF3E85E775AD924DD7BDBCD90D2 +:10BD000043FCD125453B77223F565BDDFAF3A1EAA0 +:10BD1000233CAE8BB77AE538EEC3487CCF8AA62F9A +:10BD200098CF46357DCD7E7EA1BF4DB7AEF868BBBE +:10BD30006E1F67C05E41E16FD119E79BD49604DDA9 +:10BD40001514BE0CBBDCF826B54D56711F78334A6E +:10BD5000B44F1A603DE5239F943D4BC94EDC34F847 +:10BD600072C87E440F9C3898FC86EAF80D040E4C8D +:10BD700006CF4DE2D3119FFB5AA83FF6EB3699EC64 +:10BD800051CB2ED96B89233A57F57B87F29B6D12E5 +:10BD9000FBE32B6C068EE33E4B68CB5F1DC6FF9F1B +:10BDA0003D21EE4721C595328FF25349999C577139 +:10BDB00057C4B864C44FFDFE213B2987F841F638CB +:10BDC0004B26EE27C78CB70ABB6AECEAF627D26986 +:10BDD000DCD53C18F930BA42667D020F98381F1343 +:10BDE0006D70C7AAC934CE5B9B1F30ED20FBF27487 +:10BDF000A6B013D1C7409190DFA2133DF2505A373D +:10BE00005902926F0DBE9A2A70915DBE37538DFB19 +:10BE1000553B559D7C6A37E5DF9ECE8CE1F70CAB38 +:10BE2000527E6322C7DE6EB4931E4E3CE3B60F25EE +:10BE3000BD50E59A3C0EE70F0B9C1C4CF2FA74A621 +:10BE4000C2F307548E5B4DCFE1591968FE5EFBF8D3 +:10BE50007E341F72B20D94975B85EE20E9EBC4D956 +:10BE6000CA0714B7C15113CFD3F6DF547EC647E7D4 +:10BE7000483CE35ACEE7CDB129590E1E77CC194A7A +:10BE80007606975B7A97DB8F3727272B78AEEA7198 +:10BE9000F66427B53F41248D643C51F80376F211D6 +:10BEA000B9AF9C1C8FE3BBBAFBE007C4FB268CCB6D +:10BEB000489FD04F14F6ABA5EEF935E345DE411BA4 +:10BEC000F74219E257D6C61D35F43E7BC4FBB4F7E2 +:10BED00097672A2737E6119E843F0C467BB29B1852 +:10BEE000F7EB5B12F9198FA9F167B4AC0C23FE9C38 +:10BEF0006F50F2A9CD4DF04C22FEB01B9CD9D47FDF +:10BF0000ECDDE2F3145FA1BEB9B88DF4CD7813EB8C +:10BF1000F1869CCD7C1FB7D7ACEC3F9344F7F22859 +:10BF20007FF8DCF4A347DADAF1BD0DF62F58AE90B6 +:10BF30007F2793DDBB1E3024509E7FBEDC7D1E1705 +:10BF400086FC70C110EA93BCCD0F9DC79589E39B19 +:10BF5000C2CE67C5FE0275FEDF64E6D7AC237E5F06 +:10BF600068E5787AB52ABB9B12608B8C7C78236756 +:10BF7000E44CDAF7C666B4BB88D3BD3448763625C0 +:10BF8000DAF712E138C99D43F9AC1301E12FB6216C +:10BF90009D5D7430255BF7BE1BA32FD986D27B46EF +:10BFA000A37784E75A10348342FAC2087E0BEA95DD +:10BFB00061A3CB8F6524115FA61B241C3F43EFC1F7 +:10BFC00038EF52B6AB3193F3AB5A7EF1A96F945F61 +:10BFD0006C50F55443D99A3CAEBF182FB1BDFF3811 +:10BFE0004BF07D43D3E78C5F307A9C44D7154D37B7 +:10BFF000589F69FD8E35421F6C31C1C3D5D8AEF84C +:10C000000FF961CA5BA1FEDB48FA7005BC615E15E1 +:10C01000E68F41DBB56EFD576008F96BC66765B604 +:10C020000F91F01A3D55BC5FB5649F811E111C7FB6 +:10C03000695D8D11FDACEA28FB0C09FBDBB31A45E9 +:10C040007FB07D8601FB7B5F7C47F453ED7F6F7093 +:10C05000A2DF927551F41DF6F7A9FF4EA6DA2FD490 +:10C06000E81DAC71913CC588FE7399C11A2FE72772 +:10C070006C9CB7BF5E19E5B3DC21AF57DBF46B5D99 +:10C080001CD1635C9684BEAC137AE0CAA454D66714 +:10C0900090E92AA43A94FA9A4145A49776ABFAAD6E +:10C0A0003FD2A20C7F7F83F26A45FC5DF924B0D8B1 +:10C0B00090417EC833D7A458DAEF10EFB782AA9028 +:10C0C00048DFE778F610FD4F4AC1F3A437EB0D8146 +:10C0D000D325F8AAB9D9AA3CDABB32894EB3C0C37A +:10C0E00071C62C35AE3320B3925F35DD96C9F1654C +:10C0F000A49F560B7E8E4322FD35088F0B65AA2721 +:10C1000008CC35231C26150FF5098E2C5A8770FD97 +:10C1100046C0857062DF9414E82FFCF3DD0AE54B1E +:10C12000AFE758F91E36FA3B67F23DB7F1D7DB9A15 +:10C13000D14EA248ED696EE7B62C1B589F0F300612 +:10C14000CD4E7CCFCA33C0F66982BC82EDC0F57695 +:10C150000784E7D9E6660B7CC6B58B7C24E2D5491B +:10C16000784DCA00BF01E99AF4EADBBB5B184FC205 +:10C170001E68741CDB0FDAA21242F8463A38890EA8 +:10C180001ADEC75688FCD6D8C43777B73868BD8062 +:10C190006B6FB490FBAE7D513EF20F22E1FC73A6B3 +:10C1A00096BFD4C3FB7F1BCEB9D98A3AEFF6F06AAB +:10C1B000F2ABE149935F50F5D6AC3AC7CE4D52A8E9 +:10C1C0005F53E5E0F84E83B327FFBCA8DC8E7FFA0F +:10C1D000E29B8FB3347B21F48886470D3E4D2FECD4 +:10C1E000A57B391D7CF13BF4F0C5B33CC535FD6F33 +:10C1F000D653728C919F4FCF49D941F14F5CE03AB1 +:10C200005D76416656BAC073DB57407E775CD301DA +:10C210009EDFE33C11E7D0F463E479347DD9F35C2D +:10C22000AADE54F5A8A63FC750A443EB49374BE418 +:10C230001F7B747EDF387824C22F7E34227FF57D09 +:10C24000DDFC0752D6E8C62729CFE8C627E7FC441D +:10C25000D79FE2DCAE9B3FAD6C876EBCDABA4BD7A2 +:10C260001F1D0CB0DF79A2B992E3DFFB2F77B1FF7E +:10C27000E957E3E437D438F92D8A93513E8F509C27 +:10C280008CEDD166273FFF3FCD65DC1E6F76711BBD +:10C290006876731B29D7537FF53D23F9F165812D0E +:10C2A000ECF7A665781ECD423E9866F0B5C4203DF9 +:10C2B000869F137E2AA4083F4BB397EB0F8FF81D80 +:10C2C000F95989C76588527AD7BF715FCAE00ACB2E +:10C2D0008FC75575810BF9214ECD9F4C35C23A0B56 +:10C2E000D2B7DA66F40F407A3D9125F24EA4AEE95A +:10C2F0009EB1CE0A7C3F595727395B809F7BE95E10 +:10C300000F5BBFA78841715BFBABF77DF8633182A0 +:10C3100097DE27BB64B89FF21C49894608CBDBCD6A +:10C32000C03DEFC5750FDADA38FF33EBE8DAFA799A +:10C33000F81CD6794BD96FD2ECB8F743C3ADFBEEFE +:10C34000DE8E3F9125E467BD24F201DE7823E7DF2E +:10C3500022F32155EAF9A6B678E5588A67DE05BECC +:10C360004F9CA6DA59C4C7464B42480E35FEAFB6BD +:10C370001BFD4362C9EEFCA482D6AD38A5303E2237 +:10C38000FD062DDED1F81EF57D0BCDBF7E06D89FB4 +:10C390001BDEE10B6EC5FDCABAB654501C32EA6B07 +:10C3A000118FF4151769F01F68AE63BE39D4ECE144 +:10C3B000D6DFBC54E5C746EEBFD5DCC4FD23CD5E59 +:10C3C0006E8F366F54F9710B8F1F6FDEC6FD13CD64 +:10C3D0003E952F77F1F38F55FCB566897B6CB08E57 +:10C3E000E3FB10308A36C40F8A17EEC00F2B52843D +:10C3F0007E8EE48BDEF800C0A7907E7E10ED21E9F2 +:10C40000B187C03B740DB6B3DA5A1E371BBE3D3F31 +:10C410004CB73D6B227F3A52BFCD0485F9AEA7BD24 +:10C42000F738EFC6DE6BFA4DC6B88DEC94457ED476 +:10C430004979846FEA5F982D4E86A3EFFD045D4C29 +:10C440002918FBE27EA6F8D32F535E7B9DEDD45CCA +:10C45000D9701B3C44C499CD8341B55BDF0C3E2DA4 +:10C46000FFD5177C87B35DC1ACE4307BA6D2D37C0B +:10C470009FA0A7D9E2F3ADA578EFD7512C8F6073B9 +:10C48000A55587E56F3E55E57169A2EBD32CF60FF4 +:10C490003A5EFE279297BDFD38DF1219477D1EA830 +:10C4A0001810EE2F45EAD306FB0D96BB1E765E32C2 +:10C4B000B09D6F308087EA898A2C6095109F6BB39E +:10C4C000CBBF14FB8E0EB8685FBBF18EF7950D4D98 +:10C4D000D7F8FDBD8E1B44DD52C3C152FBFCB0BC7E +:10C4E0004199EA3F508078D11AC2DFDDF2F398AE6D +:10C4F0003A9D7EF8ABB39FAE5FE8C6A7A2D921FCF8 +:10C500004EF34C623A3C4811D237C8FB2F02978752 +:10C51000DA230E4F7E36DFCF056D347E65FF5F3246 +:10C52000C98F96E34F5DDD0A3DF5E1DDEA3F4DEF52 +:10C53000697A70831996929FB52EDEEC25FE35251B +:10C5400027B0FFA4D1C395ADAF038894B3CE4224E6 +:10C5500018C2DBB94FD4C575C644FB2424B9EBC05F +:10C560006FCF501D1238F5F6DB65B571BD69F16C02 +:10C5700027DB71403B4EAA0577EE087FEF04A388C6 +:10C5800083C0E8CC991326372D6A9DC32E6C7F8912 +:10C5900070C7CE0E1A95307E7B488577DCACF1C033 +:10C5A000F1E56C17FB81B176911F9A608592287A2C +:10C5B000EFD737F2E8BD53553F619309FC44B7010B +:10C5C000658512F9896B135DB309FFDEA747C7F3D1 +:10C5D0003D17E556EF0DE9A3097255CA3C929B241D +:10C5E00023CBABA667A6DBFE6826FD540342CF45EE +:10C5F000E26BE5E828C6D34A90184F9172EC6A3F87 +:10C600007C86FCFABEFCD3BEF453A4FED0F01E8997 +:10C61000E7B589EEA7E89C9A7E893CAF9637AE874E +:10C6200020F3E9A6D69D6E6A5B2545E867D8E21A35 +:10C6300088E758D9FE28D0FA2259D49D764D12F1B8 +:10C6400050A47CFF8F6C919F5BA1EA8BA244B0A6A3 +:10C65000103D3CC0FE7BE7A45C8E435ECA4E50F5A5 +:10C660004657764D585DA3E6D774A8DF6FD4B6471A +:10C6700079E5B0FCC1F6EC781107593FD7E9C195CF +:10C680004D5FE9F4D7CA3CC10F452D4AF1A3D8AE9E +:10C6900056EFF1F6A5B95BB3A90EE0D86EF340856D +:10C6A000F66B7DE243A2F3519BD0CBC79319379D24 +:10C6B00092BE1EA7D67A4DB5FF3B74F2F2DE940F00 +:10C6C00038CEADDDDBCF4BF8D7E0D2E2634D5FD79C +:10C6D0001FFA94F3601DD2B5F35487DFB5CFC2FEC5 +:10C6E000D90A823B91E3EA5F125C7B8E1A18BFF590 +:10C6F000932C7CCF034665684D4C082F9D9FDEBE72 +:10C700004E48834FDB4F83AB4312790A6DDE219590 +:10C710003E5FAA76ED4AAC730ED1E5CAFE81064AA9 +:10C72000386ACFDF8B0FE4C7DB4274F97FE5273D22 +:10C7300008C25F3E6358F3B819F1D5D1B6D5C479B4 +:10C74000E56FE91F69F0B6C4808FDE072E50ECFD5F +:10C75000398527EA00F190C6FE14B789BE643BF222 +:10C7600015E9B1316ACB41248E8F56C1DE203502E6 +:10C77000C167852DDC6E929C0AB56325B751E4B381 +:10C780007D8CCF89D038889EB78C0BB6D066463565 +:10C790008F38237EE35426637FD840F72946B3D7EA +:10C7A000D49FF4624D9C5A0729F0A4D5252EC5DFED +:10C7B000D18817633C28469CBF14FD7613E277FAB4 +:10C7C00092593FCEA3F9F6D18C47ADAE91D6111E4A +:10C7D000671E6F9C42FECEF70EFFF404D5337E9A9F +:10C7E000B085F3B27F0AECCCFF579CB3ECBD03FCE1 +:10C7F0005DD10A7F6022A1772574B13DD2F03F1B45 +:10C8000002DCCE852E6E3D60E7F1F9E0E47621880A +:10C81000FBEAC5EA774667535BEB511260D680CDE1 +:10C82000A6CF218487E5F1EB86D13EF6F26D59ACB7 +:10C830006FD4FBA8C8FB8DEA781BDFA7E0B8A8DBA4 +:10C840003C1FE5A33CC664F0C40FC1F79C32350E13 +:10C8500017F86D2C207FAD33DE0C127DB7952CF4CC +:10C8600088F70A701EB6D3A4AEBFA670BFA4A28874 +:10C87000FD1DB8A9B05F364ABD6FD4F46CC97D0602 +:10C880005E0FB7C4FC315DFA7AB1124A5ED2FABFCC +:10C89000287C6F31F6CBC87A32BD1E7E6588A8230E +:10C8A000E5522BFC6749A2A1313CAFD192D25FE4A3 +:10C8B00005D5BE45B1739E63D21021879DB106E6B2 +:10C8C00013FC996E1D46F00ABA8E3A704CE5470C7F +:10C8D00038FB87BEB71B65F41FA6E72B557D8FDAA3 +:10C8E00098EDD568E24FC257BB5EFF43CA7D5C1727 +:10C8F000305205418B63257CD7EC04E2E7804CF491 +:10C90000BC1FBAB875819DED7D3938B91D0F6E6EAB +:10C9100091BFB9AD842DDC7E17DAB8AD8200B7F0D7 +:10C920001DA7B308F73758FDB290DF1FDAF91E775D +:10C93000D21203E5AD4BBE27EA39FBC2CBF2BBC630 +:10C940000B0AF2B0BBC18B47C017899741392C47FE +:10C950001A5E347C44812F85F038068232B594AA61 +:10C96000A6F5E3501CA95F012EEE4FE8131FFE163B +:10C97000BABF2B0B7A8C9CE788C44785E0138D6F78 +:10C98000347DF6D810E1DF0C22589343FAE7852175 +:10C990000AF7353D84F2C6F7C5DAFA483DA58D970A +:10C9A000F42BBFA1A04ADF32C45F6B44BB56525C7C +:10C9B000BE9A4A9C5A7F7E4CF44795FF2A1DFB3F46 +:10C9C000FBF9895ACA9F971494179B9C006BD6FC5D +:10C9D000AE763CF65BDE55BF53B466EBBE03BC6E71 +:10C9E0007BC26927BB39C8E6A4733E6D46DC211CB7 +:10C9F000568B68E50C1147BED60CFCBD8406A7C556 +:10CA000022FC3E9CEF253F2DF9B27716E519B4F3D1 +:10CA1000A555FADF3029C4134A31E54DAAD23CCFDF +:10CA2000923ED0DE8F7070BDFC40150E6DDD089B10 +:10CA3000D9C5F5A0498E623AF70B69EEEDB4AE3375 +:10CA400046DCDB6AF376A9FEE508E31699EE3F5F64 +:10CA5000A09ABAD2DEDB13435C3B8624F77CDE9BD4 +:10CA60003DEAFCC4CC49A8578778FE99F66FE8F7F1 +:10CA70007536D9FD7AEBD5B4E2F4105F4A4894D903 +:10CA8000E4172D735A8DACE7D43A7AF2CB907E231B +:10CA900016BA64526D9D9FA048A21C0CAB6B7C9390 +:10CAA000FAF8DE7D044F83DCB598EF05DC57D30A36 +:10CAB000899F6190E02F552F1D3CF4F60F068AAE3A +:10CAC0001BC2E4A7E1D0575FFC1EE5ADE1BACD493A +:10CAD000D33B63057E461DD8BE9AF107369DBED076 +:10CAE000E46D64BB85BF271A75207711CD1BF3DE7B +:10CAF000B90C3AD7D873C1164A6F751EFC60A0E016 +:10CB000073EDBEEAA6F46DECB656EFB1EA7D51EFD7 +:10CB1000B18A0C37F57F29F9BCC867F5474D7C9F72 +:10CB20007449B5275ADDE752ED7C10E07BE6A5ADF0 +:10CB30000BB84E057CC28F56F00FC9FDF0337A7DDD +:10CB40005EDF16991716757291DF5B47D6A97C32A6 +:10CB500044AD53190C83197EB52EB3B7F36AF5288B +:10CB60007F07AE8E21ECF7BA65E2D352A3A88B9E65 +:10CB700020FF90E569D5E0BC2251CF2AEA7C97449A +:10CB80008973BDA57E9FB2EA7919A86E63D541B3BA +:10CB90008FE46E07AA8B32E2A3753F63BF65890AF3 +:10CBA000A3267F8F6C94F8BE115A1399B70A5EB60C +:10CBB000B09C14BC3CC045F829300B3F7BC7CB96DA +:10CBC0008DD46F591FED25BDFB4A7CD73DF47D7494 +:10CBD0004B945A4F8EFBD0BD5F417A573AD9F381BF +:10CBE00039424FB5A8F65CBBF7D4EECB57C5640FFE +:10CBF000A0B8AC7B3C68D4E98F16D5BF2E21F8C80D +:10CC00005F6C3489FBF62801FFE17767F6237F77B5 +:10CC10009FD1DD8FEA67AE9F4A8F833BD47F95FA21 +:10CC2000910877C85F949CDACCDFE7946C330A7C78 +:10CC3000A8FCF65AB30B3E3685F0ADC13F41DE5D30 +:10CC400061A67BC28560673E7CFB8516FA6E67D560 +:10CC500033745B492A28278EEC56E95199BF9B19FA +:10CC60007954D453BD06EE383FF62D290650C2F84C +:10CC7000254A8906252CAFD02F2741D78F71DEA3F7 +:10CC80009B1F5796AE1BDFABD6E36875CA9AFF1A97 +:10CC9000EFFA8E6EDD98C062AE1F4DAC2CD23D8790 +:10CCA000CF05DF97E11FB67FD0C8F5D7A38200CFAD +:10CCB00039E8BB1F670AD98D911D7AF9B0A8755B59 +:10CCC00065C12D40FC1D75CAA8AB63B6D826F277A6 +:10CCD00044963EEABA26E7A8F5A4836090EEBBF23C +:10CCE0006E7CEBEBBC8641E63F8E2E21FC9AC08722 +:10CCF000E3D76905DB1BF079C3F0ADC9D56BD0C6AE +:10CD0000F63AD9ADC7FB803A3DDE533D7ABC0F5CA5 +:10CD1000AAC7FBE0463DDEEF6DD2E3D7E1D5E335B0 +:10CD200063E348DDFCAC2DE5BAFE906DDFD5CDCFD9 +:10CD3000F5D5E8FAF7ED7A50377F68DB7CDD78418E +:10CD4000FBB2BBE28342FF2ADD3C8D0F8A8F3E752A +:10CD50005B3EF0E21FD68720EA7ACB10EF947FED9E +:10CD60008DFE5141E40FC3B7A7FF8F22E97F97FAE9 +:10CD7000B291EC2DDD6B1C15F55F536D56AE134370 +:10CD80007EC9A1EFBFAE43B493EEF135BFC0ADEAAB +:10CD900097693623DB89A9FD84FED1EAC322E341EA +:10CDA000C976F42BCAC74C2B9322F27EFA3AF3BE13 +:10CDB000EE314A037E5DBFF014C864174BFFA8B480 +:10CDC000C4E03EC5E7C4BD4864FC5912F4B490D930 +:10CDD0001DDE816658A13854C033F2CBB637697E68 +:10CDE00064DC045FEF643D6F56E526325E7DD280E1 +:10CDF000716F06D78DB11F7BD3D0237E4D31B2FF2B +:10CE0000EA617FF6A7833DAFE7A05DF9AD1AD7DEF3 +:10CE10006FED4AE4BA746803F2BF3ABBEB89164D72 +:10CE2000A7FBB5CE78E0FA9980347F3AD553A00EAF +:10CE3000B4078789F40EFD9CCEF11CA3F75D9044E6 +:10CE40001C7975C4C00DC508E731D59F1D30BB8D59 +:10CE5000F3486B135DC7734AFBAEEBD5F2665A1EFF +:10CE60006D6FB39FDB7E794E8E3322F3594183C8B9 +:10CE70004F789F12DF197E46408D08D5B75EDF6878 +:10CE8000E2BA0F50E3EE392A1DB4FCC46CF51C174E +:10CE9000F0154BD17ECE69FF2DD363794A879AD79F +:10CEA00068745229E6824136AEEF0057B153E4AFC1 +:10CEB000B47CC540F99BF83D7D9D7F79CAA7BA3CFB +:10CEC00017EC4EBCAB3AD0D0B9C5FB2F4C1276FF55 +:10CED000C2A4815C5F197AFF55CE9BCD697C57C790 +:10CEE000DF0F379DD5F1F33CEF47BAF160529789D8 +:10CEF000F282C1CADCF1E43720DDADB9B86F707FD2 +:10CF0000EAC487109F57F65986DD4DDDF6F294CFBF +:10CF100078FF73CD01A6AB76BEF3CD67B81F6C0E5C +:10CF2000721B793E2DAFA0B5E63780F58156C7D983 +:10CF3000B39ED2C575343B73D3D5FF478679179E10 +:10CF40005C6D52EB0E3CDBA8EEF1E6CC7E85546FB7 +:10CF50007D4EAD9B3DA7D6CD9E53EB66CFA975B256 +:10CF6000E7D43AD94E936D23E525CE49E25EA07110 +:10CF7000B02797F0D0B0AC2B9FE4EC6A72D717546F +:10CF800078FDBDFE9EBC5CDC57C2F02095EBE4BD95 +:10CF9000D9E4FF5D3678F3A9DE69C92F7E359DE2BD +:10CFA000AFCBD1DEABE4613C9CFBCA748ACF2E9B35 +:10CFB00085FC35E46E67797B1F5F46F5AADED724D2 +:10CFC0005187660B9AE9DEE96F933D65B42FD56B07 +:10CFD000513D3E3D27BED4F2989D26E1C775AAFE7D +:10CFE000DCD85CE14FBA72C5FD8DD6CECA1572DAB7 +:10CFF000A0B613E4CDD9FC7D3C7DCFE5E0FD5D54CA +:10D00000BFE23D64E1FC48645D53D1EB16BF14966A +:10D0100007ADC975F03E4919C075574993A37C54B3 +:10D02000F702C1401AD56675C37B4AD4855EA1FC60 +:10D03000B0904F9719FB35FB07709EA02657F89BC1 +:10D04000F56F5F384FFAE9668E6726E1B33BCF0A8A +:10D05000818B76C4F7D25C85E7219C1CE759645824 +:10D060004774A9B706CDB4AEAFFC766FE7BEB22861 +:10D07000F00F790EAA8B52B248AF69FB221C4B739A +:10D08000C3F2D11A1CA1F7DC99FFB5BCADD67F6FF6 +:10D09000CAD3D9243745545F761BFBF8B7B9223F72 +:10D0A00072CE0411F5671ADEB4FAB33CD64FDB55E5 +:10D0B0003A47D2E947B9E2FC45685F293F6F8946A4 +:10D0C000DB5E147A2FCEF7D0FD4BD1B1E3A60188F9 +:10D0D0008747FEC541E99D501E5E7DEFBE34D7FAFD +:10D0E000DCB07818F94DFC7F1B93A2983FEA0F9DA6 +:10D0F0003D4FFF1FC2233F1F5A4CF8D5D645E217BC +:10D10000F13A98F079D2E037ABF56F3F25BCEE39B4 +:10D110007A92EBCB34FC7E5B7C760E0EF0FD46E71C +:10D120008EAFD2A8DEB65EBDBFAAD7EE4DF6EAF34B +:10D1300043880F2FE51B7ADE9700DFBB5854BB6195 +:10D14000D1D60F32EAD62F8A75FF82F0B25FD50FA3 +:10D1500038DF6750F3D16467BAF3D1AA1DD2549275 +:10D160007446E4A14BA925C7202F8EED5289B61F26 +:10D17000C245F4DB2079D99E6BF9AA16D57ECB0B7C +:10D1800056731EAF0CB6706BB00A7B356C90CDC970 +:10D19000FF078496877AE608C7E7FF099655FC1EC5 +:10D1A000E04D0000000000001F8B080000000000A0 +:10D1B000000BFB51CFC0F003093372A1F273D0F81A +:10D1C0007A9CA8FC4B1CA87C457654FE16347974D6 +:10D1D000BC9609BF3C216CC5CCC0E008C41E40EC25 +:10D1E000CF8C5F6D291176F94841E88F920C0CAA1B +:10D1F00040B62F10DF106460B82ECCC0A025C4C08C +:10D20000F0429032F7A2E38BFCD4356F1493867F03 +:10D21000CBA1F26DB41818F2B41918B6EA40F89F11 +:10D2200091E44F01C56CB520EC541560DA00F25F53 +:10D23000CB6137370D28EF0794BF05350700EE0E99 +:10D240003FE4680300000000000000000000000050 +:10D250001F8B080000000000000BCD7D0D781445E9 +:10D26000B668754FF7FC6526E92493308124F424D1 +:10D27000010226300909448C3A094141C01D0411BC +:10D2800059D409A0E22F1151E395DD0C2481F0A7B8 +:10D29000415D1751B2134444AFEE462FAEA8FB13C5 +:10D2A000945DD16535BAA8EC5E75C38FECBA4F7D3D +:10D2B000117FBFF7DCCB3BE75475A67B3221E8BB7F +:10D2C000F7BD1BBFDDA2BABBAA4E9D3AFF75AAC629 +:10D2D000E19EC8D848C64EE1DFF98CBD2531C6B203 +:10D2E000E225730617301F63CB34BBBE21C0D80DB7 +:10D2F000B6E001BD029E0F93838FEAF87C741D4B4C +:10D3000065CC86DFE7305682FF5709FFB6551FD040 +:10D31000A1DD97B1D6A04D8FF79F582E5318D3CAD1 +:10D32000A1649B7A6CD00F8BA97DBD4E467FA70A66 +:10D33000186B7CEFB3D2FD461DFEE7675EDF89B355 +:10D34000E01F93D9E45336E89F95BCA1B3C1FBFF1E +:10D350004713CB574631F675535FE9FE5103DFDFC4 +:10D3600060630D5D25503276DC9181F38DDA2F2FCD +:10D37000656C2273F2F97B601267C7E779C36E2987 +:10D380005F298EC3B3CC231F7124819BB1A8A53D17 +:10D39000F4DF8DFD27B61FB49D02FF4D62CCC55F43 +:10D3A000B1ED52A40A9F3B7D2BA2C361C2373C5909 +:10D3B000C32225F1FE11EE70697C9C41E1F59D19B7 +:10D3C000BC83E1D3F8EEA467CD5A06ED9A3DE50B98 +:10D3D00018D0432BD007D240223D18F86FF6ACC9C5 +:10D3E0008E7806C73FD081AE21FE6D9E6037D1CDCD +:10D3F000FA2A585E760B62A032091C43D0C9154840 +:10D400002729FFF574D2F8DF8F4E7E84F8FAEF42B9 +:10D41000278CB57379C0747BD86BAE37305E37BE5E +:10D420003395D94006623E36DFDACF6CE3B17447FC +:10D43000513ED87CCA895ED33A1BED543B8BE0FA4F +:10D4400034334E77F407203AB4E0231B801677324A +:10D450003B7DA7F89CD48FA245092F80AF9D34EE69 +:10D460002C2B1E190B117C6A76711AC75F46D2F9F4 +:10D470007634358C5754535D650B100E401CCD53DC +:10D48000FD1716CB04F8D9B773F54B4A07EF2711F0 +:10D490006FCD6AF07004F82A9A650F3ECAE2FC94D8 +:10D4A00038AFDFF6CFCB1E453C99E6F5DBD3CDABED +:10D4B000D93B3ACD4C178970B4E0BC46C5E7D1FFE3 +:10D4C0001CE7E739F3F51FEC7D8B1AF2D7431751B0 +:10D4D0006FF2F9A9B9303FD0377F11F3533D765A37 +:10D4E0003798D75F92CDCBE90B31924709F352348D +:10D4F00027E1C5185771DE3E5E991887EF6F4CE340 +:10D50000FDF78F1F64C81F368D51BB832CF2379CEB +:10D510003FD0610FD1A12744F8B5FBA183095886FC +:10D520001644019F2DFBCE6625A524BED88D50DA6A +:10D530003D11360BBE6BF9A78DD383AF82FA37E06E +:10D5400038CA640B7E0C781C084712BCEE32F09E81 +:10D55000B0FEBB1EBCC0BF04FB97389E12F162B484 +:10D5600007BC31292B4E1F061DEC7A50E02BD767E4 +:10D5700081CF281DCE5B05BEAC74B02E6F92CEFB62 +:10D58000818E805F8789F1C6E9ED6B249D31B7C03C +:10D59000E74F7D5597D743FD7E9F7F0D3E2AD81DCF +:10D5A000D571EA3657244332CD7FD82226637FEBEC +:10D5B000C43CA7D916B98E42FD27F30AD216437D83 +:10D5C000B22425A5A74D4D3027A0D3D62627433E0C +:10D5D000FCFAFD31349FC1E8EEE1A6DE52C524DF3E +:10D5E0001F0E2AD363F0FDC30D2F69530105ADBE95 +:10D5F000A272923DCB2405E7E542A001FEB1627C18 +:10D60000C0E358A912C56E035B02F4A9FA383EC7FD +:10D61000851A421A94635943B7044B9DBD9B05BBC1 +:10D62000054E14137E8685E528CA55987F39F65332 +:10D6300090DBBE4685FEF545DA1A00BF7FFE8C857D +:10D64000678C02781E787554F9063D0EEF4A49E65C +:10D65000F2B358C87325E8C7751C8CFF7E0AF829F9 +:10D66000213E6E97F0BB9C452C867CD486CF61C052 +:10D67000932C5C8B70E42C8D70FC4B86FCF233A4F5 +:10D68000A3967EB9D1F0D1A34477D96508CFC5065A +:10D690001C0F4B83D1DBC5C9E8CD56D4BE0FE73B89 +:10D6A0005B8E5C82EF1D7AB786F4E05A1A4CC7B2E3 +:10D6B000CD183FCA7AB05FBFC0BF41F71945FA0E17 +:10D6C000A4FBC5623DFCB3D6DE22C37C860515C231 +:10D6D000ABBFB77E16EA33D77B333E62FCF9110746 +:10D6E000F06D8AA71D3984F9170543300C3B578E1E +:10D6F0002CC67967CC3ED48DF4EA0AAE9470FC0750 +:10D70000D406A601FE1DD55DA130C0B1A96C12AB37 +:10D7100037D1D3AD12E75B5B2E0BC53CF1F5FDA90C +:10D720008DC3797F7885EB5A0F7EE726FC8C6315D5 +:10D7300021EC6F2C9203D08543D005ACFF0A9CBF2F +:10D74000BE487F09DB0572DB5F423880DE8721BE81 +:10D750001E502339D8EE8132FB021A27CA0E213D12 +:10D760007A65810B1DFE03FC3844BD5A52092E67B1 +:10D7700036C7539687C574A04F9B9FD7B38B582C41 +:10D7800004752FE26B7C1C3F5EC4D7785A971A9CB5 +:10D79000823FB7411AA3137ED6127E58575485761E +:10D7A0002EBD278432F261A5E1AF3F82793C7CC077 +:10D7B000168C32131D32A0C3D2389EF21A80CF923B +:10D7C000E869E3FBA1ED064E2F8A87EB35433F0066 +:10D7D000BD6EE574C5E9F54CF590DA68D38F67E264 +:10D7E000626932E2D1EEE4EBA53AC36D01988FEDA8 +:10D7F000908D816462B6F6325A27C019E925A23DA0 +:10D80000A8DB7D6C27EA23928393E2F689B348660E +:10D81000DD26BB49C9755BEA6C4154C2F16E13B891 +:10D82000501BED1C0E16E9C67551606D37302ABBD2 +:10D830005D686F81BEC3F638DD538558BF8BC63334 +:10D84000DAAF2F2A67C9EC6805DBC137C816A70213 +:10D8500003DB0D8E9F84F1E659E13DE3761E453FE3 +:10D8600061B213076FA7B013067E00893DD84165EA +:10D870007C9D40FEED9540AF3A9DC103F5F0741DCF +:10D88000BE82F55DCBF8FAB3986C9137B65C6EA7A3 +:10D890006E47E641BAF173FB4AF134B0088BD78783 +:10D8A000A28F80A0AF0759F838D2D78E2CD66EB68B +:10D8B0001B0CFB92B5CCA3EF1CB9FAB665B07EF990 +:10D8C0003E7F19FAB7065DED48C01B636B687E3F6B +:10D8D0006B8AB1632AEA8B069287235785691DF309 +:10D8E0001BFB24AC3B727B25AC1BEFFBE9B585D35E +:10D8F000776BDB25690CDF3B7519E542417B608D59 +:10D90000D34CA72CCCE679D195E7F4F8AF509E32F2 +:10D91000E815C67734BA893E0CBAECA7C39633E44F +:10D92000C768685F11CC6FB6C0FB6C216759857AF8 +:10D93000BCD7584FF20F94781DD6F7933B6DC43F78 +:10D94000D13229F6A834F0FD2C9443E3C96C39DEBA +:10D950006FD703DCA36549C801AE876689772F3F7F +:10D96000FBEEE88900F2EB411B7320769F7D65D3C7 +:10D9700044E8FF8DB3A1AE0B78B3B13FC679B7EEE3 +:10D980008B5C19DECFAE7630E4DF59D5EBC89F98BB +:10D990005D6523BD300BE137E1E5D3BD9F2B88FFEB +:10D9A000E5D5D6E7E5B241A7B9BC7FF1EEA6725B3B +:10D9B000A80EFA7FBD428A2133EC7FFF6F779F0369 +:10D9C000F01DAC968208DFEBC1631E5C3763BC7E42 +:10D9D0007CE94C437C258E13977F3EB23F3204BED8 +:10D9E000B3584862240FB8BD9529E697AD3548680D +:10D9F000F7FAABDAF77199C4D77B78A8AB4681DA2E +:10DA00004FBCA3FF1C23BC305D013C0EC77F91CEF1 +:10DA100050A2625CE914003ABC88855CE3F13D3CAD +:10DA200037D607F0E55FAA58E0CB58645A3FF85F55 +:10DA30004A85B56E33AF6F203E1F839E52847DCBE7 +:10DA400042511DE5FB7AA9FD3098DC6C93736CCDD7 +:10DA50002C78EEE8652C15F0E90D2AB118B62FE107 +:10DA600076A90DE70DCF33747BAC1BFA70E583EC20 +:10DA7000407E54BA9C0CF9A72218554CF3672B33FF +:10DA8000886E32849CDF38BD3C1DBF33FA03B84E2C +:10DA90006B372945C29F2A6AEBE1A54272C601EFA6 +:10DAA00051C6827D73838CE3B44B49FD2B639C216B +:10DAB000F9EA4CBF03CDA9C0FCEF60EE20DA3F8D40 +:10DAC000D5BB0F47605E47A4C85D08875ADD10C507 +:10DAD000F54F3BAF7124CA91D4B378BC62C1398B86 +:10DAE000D80928FDBE70F4043CDF26DB787F7DF981 +:10DAF000163DA6765FCE74F4773DC15008E50C2B39 +:10DB00000B8549DE04A9DC2173BBE73E99DB7DDB95 +:10DB1000903F2B69BA118BBFEE8A6C96E1BB829065 +:10DB200056ABE8E80F59EDFAC4F96D117CBE43E637 +:10DB30007ED886BC5D7ED2EB45214B1CC02945B604 +:10DB4000E23C9DA14808D7D9E6E1F2B3BF9D17DAC0 +:10DB50007950BB8419F249EA398B9CD88F526DF801 +:10DB6000FB0D865FBC83D66D81D54F5240C04944C2 +:10DB7000AFEC63B20FC4F30D63AF7126F32726CA6F +:10DB8000912764933F64F707091E2F7B58C3B8138E +:10DB900060A9E854667CFD10A748BF272B9C31077D +:10DBA000DA612E90C630398F749CE0457B0EEDC84B +:10DBB000346C02FCBCA1A9A714FD1924A5AA0CE28F +:10DBC00087A899CFD2E2FC2BF88C1D2A82F9182E57 +:10DBD000A2C713E1F239C8F9D109FFA1BC4963DA40 +:10DBE0003E44795A9595AFB5E220C991F490F53944 +:10DBF0004EC19B81A5553EDF01E514787E012C3096 +:10DC0000CE2B7D9A1C23DF9585668DCA8EC3919E8F +:10DC100005F62EBE7F9BDB8B5FBB52C7E3244DF026 +:10DC20001D45F8D09C25F84A7AA3321F5742FC00C4 +:10DC30009C47ADF06CFA0CD713E0B43C4778CE2B80 +:10DC4000B7C07BD40C6FA3938F8BDF55670C8C17F9 +:10DC5000466B597103007D5C16714385293C6EF853 +:10DC600071683AEAB5ADB9C42FA99AC0AFB3878835 +:10DC7000331DE12C1C183784F53A695E2F5625EACE +:10DC80003AC85B8E67EB7B964B7443751BEBF77F53 +:10DC90001657094432FDB27F075171DD0195EC45FD +:10DCA000F62D7C3509F994FF1D3DC6F5F175C2AE20 +:10DCB000FF9085EC08DF274C9ECEFDC99E548CDB7F +:10DCC000373F3B3193DBB14010B04E2DC2BFF2D98C +:10DCD000ECC4CF8A672DC5E115D64F6FD2295A57AC +:10DCE0001E17013B8FE82ECA9CAB49DFB771FD15AB +:10DCF00085FFB07E75BB559F5DBBD55ABF865D92D3 +:10DD00008D72EC9AFB5516837EAF4BD017DF223F06 +:10DD1000031CD7B286B568E7187263B1C6944C5835 +:10DD2000B79B9EDB3E09FDB111362E8FFE017EAC06 +:10DD3000EE88E3FD7A5FCC1E2A89CF8F7402CCAFC8 +:10DD4000590A5E7C8E34F8FCD6A93D17A3DE8E6E90 +:10DD500056695F83097D49ED6128658F8DF4A3A91C +:10DD60001DC1BBA4CD3ABFA1E69F385FC6EEA57921 +:10DD70005CBFBB9EE4C760F3B1EF9642B12472A8CA +:10DD8000DC2659EC6783CE0D3E03BAE6F6D707AE24 +:10DD900058338C371F8D55D2270D93693D59C304D5 +:10DDA0002C876AB7F07BB6BB12DB557EF7768B0704 +:10DDB00069B7DED71E467E33EC7DA7B381D65752B6 +:10DDC000785C6EBD7F88F7B9F0DE769AF745A76F6D +:10DDD0000F7C77EA14D005FA26DC1E8BE6225C471E +:10DDE0009B30A00EF242892E42BFEE4B5844F0A465 +:10DDF000D801555BEBC779B54A3ADAE9F59BE6FC01 +:10DE000000DFD71FB2F9E480605EA81F08CC20FFB6 +:10DE1000F23A9BCAE7ADF42A6847D457052E40DD95 +:10DE200071408DE6A6C3F8D37FCCFD909AAAD54B5E +:10DE3000B1DDC5FAE52AEA93579E6CA671AFD72FDC +:10DE400054500EAF14FD7CF2C4D39318C077E02970 +:10DE50002FEB267B2966473BE87AA067A4A71B7EA9 +:10DE6000E125BBEAFA676E7A6416F4233DE725786C +:10DE7000A63F73ED2E07C1D7CCE9F39773D3EE45D8 +:10DE800038DFB63127E0E3C06A234E13CD9D0B4D3A +:10DE90006E72B0ABD04E30F060D0E7924D81B57E5F +:10DEA000846B77A00CC55A3F5D2BF03DB4AF87F271 +:10DEB000922474FDA0E0EF8F038E0508A7B47BDFEA +:10DEC0009534BFAECB549C9FD4926EFF10C6BB5B03 +:10DED000CC13BEA379441F9762A3E0FDC78F4B7C90 +:10DEE0005E5DA59DAE008EDF695F4CFB0DABE97BEF +:10DEF00003DE25BB036B8757201F070232CC6BEA7A +:10DF00002F9E4AED85E7CB77DBBAD15E8792ECF6A0 +:10DF1000256D36AB5F0F1A5D023AB859C8979BF76B +:10DF2000DC44F2F7E6AE8DA49F96EF552DFA09F08A +:10DF30004CFB5A37BC6B0BA26F72C3BF3D968AF67F +:10DF4000D63FFC4FA462DC10C6A9B7031F541CB413 +:10DF5000EA35ECFF9B8C81FD810147FB38CBBBD6BA +:10DF6000F3F118D7A3865CF907FE2367A09EEBB6F2 +:10DF700059F74F6FB485D3BA719D776726F5030DB6 +:10DF8000BD66C817F08F3AA230EEC7CFFC8F0E8C5B +:10DF90007B1FF8E7E71D7721DE7FEDD290BE973F2C +:10DFA000F161C7BF40FD93BD0E19E9E4FA273EFABF +:10DFB00000DF7FF5FC980C64E9BF0879F569E0EBB8 +:10DFC0006C9CFFCA5F4F1B86F4B8F2D9A9C35812E4 +:10DFD000FBD0283F05BA8A99E8CAB0F3F5BD120F05 +:10DFE000AEFE4A9409EBF2F21E5B3786883E39ECAE +:10DFF00020BB6B393C6B043BE1E6866B29EE85F573 +:10E000005580DF9B9FE47EE1403C4747C81843634F +:10E01000DD23D015BD79CFDC1F9C5B81A51AD4719F +:10E02000BEAC8FF45462BBE587603D270CBE7ECB4F +:10E0300019C7FB72B467C60F5CBF4FF01F670F5C58 +:10E04000BF6F6CD67DCDAF1EBF3CAD1B5FEEC94C24 +:10E05000EA4718EB77D3B397A6258B1B99F1DB7DA5 +:10E0600006F85D26FCB7DFDB424E05F9F3997FDD4C +:10E07000B50DF0FBE99F1DC15980904F9FFA321FEB +:10E080008DD6BFAB7D5722FFF5FDDAA1ED8036D7E7 +:10E09000FFFA5DD2639F3EFBA65D27790EA62FE8AF +:10E0A000E74F59FF5F0FEAEB9B255E59BED3DB8D2F +:10E0B000FE96B14E37C7E64CD753E939F96137C7F9 +:10E0C00038DDDF1CDB374F4AB26E21A580CBD1583B +:10E0D00016E1E526BDC7AE79ACEB2955E13A1EB98C +:10E0E00000E96EB07534E6AFE1FC279BD67327E7F5 +:10E0F000D7C1F8F2D34E8722A5C5D7F75361C72CF5 +:10E100008F49EFB224FC6AC489986DD169D72991EF +:10E110001EA628567A30DA1BF31E8A9F879ECF7779 +:10E12000C3D73874FAB206E26DF5342E9F5F0F380C +:10E13000C84F7853D57F7A2BD2C7AB2ADB014D2E3F +:10E140002EF89BA2970E84F70DB487C6C4EBE1AA04 +:10E15000CF5A32A15DB83AC0E36E09FB52E16A1BA7 +:10E16000D34DF09C9CBE3217FD9A97FD2C8A727C91 +:10E170007F0E8BE17A5CE0093FBC2FC0F78F18F46B +:10E18000BFB64943E79EB535F9A9ECDF0F0C15CBB7 +:10E190006867AF40BB1FC7DBFDC4134F009D5E84A3 +:10E1A00003808A7A19546597497FBD25E03DD4E400 +:10E1B000243B6E6EF1D30AEA6FA9E46905F5CACC77 +:10E1C000E94F2BB89FB55FE2F4302F2C91BEBDA86C +:10E1D00038D06903787E27F63F2E9AD7A92C36F5DA +:10E1E0003B53F433B3A43317E5EF6B625F31115F38 +:10E1F0007B142E5F578F7D2C17C77B2DEFA7B9DCC3 +:10E2000019F3537C325FC443F68F7AECE11580C773 +:10E2100003C55210E366071AD778500E1FD0E75A8D +:10E22000E86FDFD8BF49D84FBEBF534179BD03E582 +:10E2300004CC6F27CC0FE5C52EC01BD67703DEB00C +:10E240007CA249A7F2C9A6627AFFF3A620D5BB9AA1 +:10E25000AAA8FE4C5388EA7B9AA653FD974D61AA63 +:10E26000EF6D5A40E5AF9A96D1F3D40DBB5B3230D7 +:10E27000BE394EEA4272FD4D5303BDEF6E6AA4F7FC +:10E280002B151E87C86F636D182F6E6C6464CFECFE +:10E2900050C30BC226F88DEF762B3CCE70BF27D231 +:10E2A0008972EBE4F4A5A54817AA1C5EB02280F39E +:10E2B000BE2F42765B9193F61A2894097CF1EAA866 +:10E2C000C9B4CFF9DBB4C86EC514C72A68B3B3EEBE +:10E2D00089B88EB1FDB8B51B9D0DF61DE0F1A27099 +:10E2E000678B0FFA99373DA0A33DF13BA9AB2503FE +:10E2F000FD8A52F17EDE1CB5B664E875BC4BC0FDEC +:10E300004A4D432EF2D92BC2DE9A3BDDC68A4D76AA +:10E31000C8A5616BFD1AD12E634611DFD7F5258F95 +:10E32000EF7A83F09DC59EE17CE4C078B9897F5C7B +:10E33000FA70CB7736ED9130C68D07934FB6D4E99E +:10E34000DC4ED6941328DF64F477E5B8BC31E2A73D +:10E350000B99F117A2FA55FD75F0B00CFB1AF0F508 +:10E36000C3D02115EDF52BC10552A05CCC8276B44B +:10E37000BB97B23095D7B0062A1DB9DD2AC93D56E4 +:10E38000A7E1FE82143AC7762AE5747135EB3E4464 +:10E39000FF3E91E0FB910018E2DB3FC51931FB5DC8 +:10E3A0007F17F8FD4A94AA5DBFA72E30F838867C07 +:10E3B00031E44ACC1BEE534CEB639483B54F5C279E +:10E3C000031E239F2063C6CA57F2608977B4EBE52A +:10E3D000280F1B7BB93C297C2FB083F6CC984EF2DA +:10E3E000CBE112F24BD8BF8DF84F1FFECFC9E3F23D +:10E3F0005D01CB777E58F61EC4A7D2EB42F9B1AED1 +:10E40000F12895197716DC33860D3DDF44791AF330 +:10E41000463254DC8F1E397E0BC6CB3B5EB5517C39 +:10E42000BC43EDBD1CE1F8FA88A46382C0EB4A2826 +:10E4300053AD24B94DA018F49BB17ECD2B684F0E7F +:10E4400086971D6D05A7C563225CFDF438087FC45F +:10E45000E9847FB74401B600D65802224807FBF191 +:10E4600068CA845FF6C0DBAB1A7B55D40347954876 +:10E4700009C27D05EB56911E97487DFB304EFC612D +:10E48000AA4EED3BB24FE49050517A03E1EF920770 +:10E49000C458523DBE4EE81DB4E871DDF2451C473C +:10E4A0004EF93807F5066DD65626E9B751F9D89CCE +:10E4B000CF05BA98F4328C4574B0040786F92D91D3 +:10E4C0007B29AE55A7CDA94B0714455A02E55CDF61 +:10E4D00072BA89B4A477A2BF3A4A8DCC54795C80D1 +:10E4E000E2DE4B3CE3289FEC4CE707A3F7A21DE8D4 +:10E4F00010FC6ECCD7E68ACC477C1668E9B5E93AC1 +:10E50000F2378F234F13F1C6933E46F6FC60FDC7EA +:10E51000301F0414C7CBB0EE184755A3AC1DEDC592 +:10E520002761FDF1F9AF802EB1EC007D85EF7F030F +:10E53000FA0A4BD457F87C37E82BACEF007D85E521 +:10E540002BA0A7F0F949165E8670A93EBEFFDC6CD1 +:10E5500067CB28EF4CE47D19E3DFA2727D63942B37 +:10E5600054DDD8DF24FC453FB2C71E45BB4F898D23 +:10E57000A0BC3028117FE58DE1A918034E3DC4628F +:10E5800068D7CEEC0AD9D2A13ECBB3653FE2E8A270 +:10E590003D7DEDE83F96CBFA433722FF2EF650BC87 +:10E5A000AA9CF52EDB8C34A074E7A25D555EE50FC6 +:10E5B000629EC69E5249C1F8CAB6B7EC215C976DFF +:10E5C000F6A882FAE8D97C16DC019F3F5B2A51D07D +:10E5D00039B578DD2DF8FE97A5928C794DA987DEA7 +:10E5E000B90BEDEE89D1D06A82E7F0891F613D3524 +:10E5F000F8D0ADF85D6AC9E3B7F1F2C53BF0F9AE0A +:10E600003FCEDF47DF1DE8BE139F67EF6DD88766FB +:10E61000E9DE9E2F0EBF8572EBADADAED900CF8B7C +:10E62000459FEBF741D95E74DF43F7C2F3AD631F3B +:10E630007C13D1E0C8BB7F5639C0B5AD4126BBEED7 +:10E64000154C3A007CBD5A741F3D7FA8C147CF0FBF +:10E65000964D1E8172BE62942D8C79117BAB79FE32 +:10E660008E81F787551BD1FD2E55C4338B6C9417C3 +:10E6700082FBA3C8774A35DFC7517BF8FE8EDAC329 +:10E68000EB4E5F039374DA1FD885EBCB768AFC1FC1 +:10E69000432D897D9D2754CDC84FC874035C2FE658 +:10E6A000CA1AF2C18BB9CFA4A07C7C31F7120A7EC2 +:10E6B000AB453CBE52F166D71FC6C37AAC6B58312E +:10E6C0007935F5D3957219F4F3B8CAF3439E417ABC +:10E6D000A83C4DFBCFA03D8CB3EE4668AFC7DB3FF7 +:10E6E0002DDABFA012EF0EDE3EF0346FDFB0D23273 +:10E6F000FEF3D81EDABD3444FB44BEDA27DABDF897 +:10E70000F133E948FFBBA4AE22DCBF3BAE9E58A369 +:10E7100000BF5F24C78E639DADFD5FB50BA03E2B90 +:10E72000DFD0231137EDBFADCC203BB44AC8A09950 +:10E7300072C48DF861AFD9D8A3A7D12B646C1B72BA +:10E740008BF4B53B2EFFA99E91501F9EF07D81E575 +:10E750007D9F2AFC43362EE1BB724B7D66CFE83AA3 +:10E76000A4EF9987B36B91AE671EE27C34189C7F4F +:10E77000C018D314C6051CF84BCF4BA21EFD5FB5C5 +:10E780007530FFE7C5FB2F5B59F36A0FBD273F00CC +:10E790009E5BF6C7BE147243B2F3BC3EDB419EC71C +:10E7A000D89F477590E7232A87457ECC71FB11AA35 +:10E7B00097ACE7798A8778DEACD3D34FD7921DE93F +:10E7C000B62B395DB3A5DCCF7188B937B2E0BF9302 +:10E7D0007C7998E7F9B3278B69DDE27604B72BCA19 +:10E7E000FBBF6F3840DFCF52681D0D7BA25C7CFF02 +:10E7F0006F39C67E6D90E8AC91E97F28C1753F2ED8 +:10E8000033EA3F5248DF5788FE586C14AF8BF62F1F +:10E8100048ED33918EA36037E0F769FDFBBF0D290A +:10E8200066BA9A24FC9B971FBE7726D2D5B3D31520 +:10E83000F26F12F5FF23F60C5AFFE70ED7CE2C85A8 +:10E840007ED367CBD4AEF28BC81AECC290BBB85F54 +:10E85000F44239524FAC0EF7AE77BD7DBB9CA6E3B8 +:10E860003A873267A31CCD9383E8BF9637B6EFC7CC +:10E870007126C6A2AFFC08DA9C6B4FA775ABD8A96E +:10E880006F9881F014CDB5F5029C955BE74DF522AC +:10E890009E0EB3E028783EFAC1A5B66B4D7C3629B2 +:10E8A0005726BE1BFD209787ADBE9D536C629D16FB +:10E8B0007AB15F07976BB9DC9F35C9AD73697D3756 +:10E8C000255FDF313616B521BEFF2A73BD33BD216A +:10E8D000658E69FFFBB9032047615DCA5F5D79F210 +:10E8E0005518B7459B3291EBFBC8B6EB28EFAF7AD2 +:10E8F00022EA93D9762E5799661DC7E807E0986DEE +:10E90000AF1C98F77772FA17945F37B23885F663C1 +:10E91000471EE0F4FBDCB7511B8FA35BF9BBE2A001 +:10E92000DBE287C86D56BF642433F925143FB1F28A +:10E93000377BEFACF8F705644FF2BC876F4FD13EE1 +:10E94000DE18412719DB65D2C77BB6B218C5E3A331 +:10E95000214FCDA4789E4BA7A09B0EB027906E9E12 +:10E960006BAB4D9170DD7B1586FBC5BF3F24D3FE9D +:10E97000A67AC84674A63606A7223D1AF9318E55E6 +:10E980005DCDE47F57A847CDFBB0E77CDC4E792610 +:10E990003312E2BDA3453E4C55C2FEE568B1EF39E6 +:10E9A0003A715F33211EB4CA6E8D07DDFD2F3682AA +:10E9B0002FFA8E8DF284769DCDA2189742B78BF6F2 +:10E9C0006D170F8F613E81B17E467C68839DFB375A +:10E9D000FBDFBF3005E976CFD6B5C4675BECBA255F +:10E9E0000F66B4187BEFD60217BE7F79CA38FADEFD +:10E9F000C8DB9928F0BC66CAB88DD7C178CF03BEF2 +:10EA0000D18E793ED0F01AF27FFA4532E5DDA53E8F +:10EA1000D23502FDF6173BC5BE82C2E96B3DE3ED80 +:10EA20000987807767AED689F06EB3CB221F37BCDB +:10EA30000DE94D76F2FD99D4C25BFCD8CFBA807453 +:10EA400046FD3C12EFE711733F713B98D9397D7653 +:10EA5000F3F889A08B7CA787CBE3047B7AC9DFF925 +:10EA6000790AB08B7F8EFDD5B37008FDD77CB08F4F +:10EA7000A99F33B78BA3248F05DCF9BE808C7670F9 +:10EA8000DC3E0E3F8FFC1E68642FA18A3973BB9851 +:10EA9000DBC31D68079BECE23F087BB853E451835E +:10EAA0009DFB3BEC3F6EE70617A05EEFB5374C458C +:10EAB0003DBF4EED2DC3FA1FED0DCD4EA807646D81 +:10EAC00038A6D21FB5DF3215EBA9CD12A9E07F879A +:10EAD0007AB41AC69339DEA3BBB89FC114FDDEE930 +:10EAE00000EFD8A53EB2530372EFFA31289FAEE78C +:10EAF000FA267527B72313E1EF14FA32B5F9B35BA1 +:10EB000070FFE8A89DEBC9A3621D8DFA22257294BF +:10EB1000E4A1C214CCAB30F6C9613EB4CF7A141371 +:10EB20003C607D8ED935B1DFD63E9CEF3342E94D56 +:10EB3000BAFEDCCF1A6AFD77727B01D6FF531CBF89 +:10EB40007FFD83B7F0A0D219AEBFCA785C6130FFF9 +:10EB5000CFF1CD597848ADBF7E9245BEA5F5CA1517 +:10EB600076ADB16E32F827305F9BC85F4CB5CD698A +:10EB700040BC690E8E2FA374382471AE474A3C4FB7 +:10EB8000E47060DE8D22E857C8F3D466E8C763C23C +:10EB9000AFF03F0D7816298B531D26FF13F18E7EA3 +:10EBA00069BA4333F67529FF0AF437E50D7F6F7CA8 +:10EBB000E7F6E33BD7C1F14D703A18F75FCF14DFAA +:10EBC000F17D68BD45437909FE11E27EAA678E2575 +:10EBD000DFF68814198BE3187641E37B52D4368133 +:10EBE000E0B7F364258DCE39D566EA1512DAC1D1C6 +:10EBF00087A61E043BB016191993EFA2DBA6E23ECE +:10EC0000486D0AAFDFE0B8AC250AFDD7E21E0BD98C +:10EC100089BF9C8A71DEDA42FE7E39BE87EFC36A05 +:10EC20006892C3B4CF0FCB106326BF59D58ED4A042 +:10EC30007C00BFF95CFC4ECFD56B7149F21B3519D6 +:10EC4000E13F53F9D021F8DF9013405717627F6AF4 +:10EC500023CF871DCAEF0D3B78DCC128E7A05234D3 +:10EC6000FBBD8FDB05FFC7865FE2E5A579FD633954 +:10EC700086BF10247FA13F4EB5C925F247B9DD59A3 +:10EC800020F44AA25C36ECCE0297956EE2F66298CA +:10EC9000FB21097464D88F45A2DF25BB395DA5FE31 +:10ECA00047737D1BE02B02EB8AF4A40A39FE24068D +:10ECB000A3607E3B36C984D78C3B19E57F3EDA9E44 +:10ECC000918E3AE6737BE846F37AFD9B3D7473C2FE +:10ECD000FA450659BFDBCE64FD548F8BEC28633DAB +:10ECE0000CFC1F14EBF6BA58C71E21E74FB2D08FA9 +:10ECF000916E9BED3AC5DFA2AF713B7A303A182C8A +:10ED00008E67ACB7214F3A9C5C6EC44B2E4F0E8A77 +:10ED1000FDAE822A36454B8BF7FBA0A08B83AEE479 +:10ED2000F9805B853C4A6D0E939CA2041CD4136D44 +:10ED30001AC59B8CEFB6897E901E84DC9691EF6697 +:10ED4000215CD06F6115ABD626C4BFDF2DE4DB2C70 +:10ED5000377F9F38EE63C6B8423E1AE3166DB28E17 +:10ED6000FB78FFB841999F5F0CD1F863DBFA287FED +:10ED7000BB70158F53E9EDE110D60F96BD52741F8D +:10ED8000DAF159C5227E166218EF7941C0B3CD1E63 +:10ED9000F2E37836C013C65DF2016E2C550F237F67 +:10EDA0004E6D8C723F2E6EE7BF4074949BDCCE3765 +:10EDB000F09EAAB03A47791CEE3CA76C89071AF37B +:10EDC0009C157CB32E13E01BB355A3F8CAC5553C64 +:10EDD0007E1C08E57662FCB844ACE7E3DB5917C259 +:10EDE00031DAD1B71FBFFFD9E52CB80646DDF6638F +:10EDF00023AEA45D84473B5A6BB93F342CB4FAC1AF +:10EE0000EBA01CF3B35C7AEEBF95C7756C4E1ED7B2 +:10EE1000E96CC9A0E7465CE7C1A5BCFEC88D45BC4E +:10EE2000DE22535CE79184F8CE6107CF5F3DEA10A4 +:10EE3000E71E5B64F28306C47756093DB8544E8CD6 +:10EE4000EF1C453E182CBE73C261C477DA5D18DF33 +:10EE500079C4236B64277ACA496E3CE2B9040FB9BE +:10EE600033B545A6F33F0FF6045F2BC6BCBA0623A5 +:10EE70003E1374637CE543078FCF7C8A0C9E759AA2 +:10EE8000F67DD01EC669BED1880FF1F69F38789CFA +:10EE9000E5ABA1DAEB65BC3DC6774CE37F29DAFF31 +:10EEA00007B6AF1CBCFD239B9E49BFD6C40FFF1401 +:10EEB00070DB59E82FEB61DE5E1BCF537D4C6A5F40 +:10EEC000783DCAEF514E921B81D6A59417BB53B221 +:10EED000F2B147D0598990072FB7DC2BA33F30B64A +:10EEE000E5FE5AC4276BE77E6FA0B54E36FBBD45E5 +:10EEF0004BB9DF1B68F5713A4AF07B4B9C0EBEDEC6 +:10EF00004BF9F939D37A9638911F06F17B4B9CCC9B +:10EF1000226FA0691D9E7B36C635E83B912F8C730E +:10EF2000D52A33FD015CED0BB83C00FBB2C499154A +:10EF30007F3E2C924DFE84EAE3757BC443FC63C89C +:10EF400023E0C716333FDE9338AE907743F163C7B3 +:10EF50007F323FDE86FC58F9FDF9F122278FB7CECC +:10EF6000738A78EB77E7C779CED3C45B1738FF7322 +:10EF7000F8F13227A7EB88F3FBF1E3554ECE4FCBE8 +:10EF80009CA7E7A7C1F8F15A317EC310ED13F971C0 +:10EF9000B918F7FBF2E38F053F76F4F3E351BE9F18 +:10EFA000DF727CB503FDAD28F023C3F68A6C1E57D3 +:10EFB0005FCAE1198C1F3B06E7C78ED3F1638798C0 +:10EFC000BFA187A1698B991F3B06E10BD4C7CAE992 +:10EFD000F9B1E34CF831D1AF5015F0B3A4C1FD0B3A +:10EFE000F07825A4E3C4FDC6A1F6C9674FBA93E241 +:10EFF00008A3D4D0534E93DD57A1469EA17A827CBC +:10F0000031CE7D0DBC0F21F1DCC732E3DCC70B38FC +:10F010005F4755B8DB72EE634CD01F44BB3CDD3814 +:10F02000C7CBE7AFF8F879FAB4F3FEDEF532C6F7EE +:10F03000B2CA2762BB5704DF269E8730F00FEBF978 +:10F040000AC26BAC6F7FBC1813C24DF0AFCD993FB5 +:10F05000D83989379C163FF0F4E724C0FF12F6A98F +:10F060004AFE57730EDB837E5973025DABE0FFEA05 +:10F07000E0FFFE4F6781C5AE69F4DD7E212E33D0FF +:10F08000C35F053D288A05CFDCFF57E5C8317C7F8B +:10F09000F7947F1CC6B8E827CFBA74CCBF59AEF737 +:10F0A0005E5CA8D378DC5FB9D34DF1D27C7BD0CF46 +:10F0B000FDBB6E668ECBE0F9EB39A51837F7903DB6 +:10F0C000CE72817E4CE7E13E4CE5F2ABD97B220764 +:10F0D000C79511C1824E73B3319F81F7B344E17E6E +:10F0E0006F3DEBA3FDE32B590FE53D1C55225F233C +:10F0F0009C8B581FF9B36B52C69F87FDFC57C167A5 +:10F100003A7F4B7994E2538637B198CF93168BF8B8 +:10F11000A6E1978CBC9F515ED798A842F2BF38BA3F +:10F1200086CE1933841BDE17DEAFD0F93B784FF261 +:10F13000DF683F2666B7E4D506DAACF54211F71C66 +:10F1400025CEB7D2F300E637F0386961C27323FFEA +:10F15000AD031F24899B24C64B0B5CD67CD8A1F23F +:10F16000EF8CF8E8DD2C54EC32C929D6C8E30CEB5F +:10F17000F226F993B537F06A73F2FC19E3BC89E122 +:10F180004FB1221177117114836F9DB9FCBC7B952F +:10F190008BFB1DDBA570952BCBC48709F969EBA50B +:10F1A000083F34E589F2F7225F8D8E9600B335373C +:10F1B000F1F3059B303F6D0CE6F334504CD491DBFA +:10F1C000D02DA39C28663A36978A630CF584BBB889 +:10F1D000CB8F794A1B07C9536A7471BDB2BAD44E3A +:10F1E000F06E7C5F22FF74E3A8DBFDE6BC33D5C87C +:10F1F0003BCBBBDDD96BC2CF3ADF0A3ABFB72EF7A4 +:10F2000092D3E25D6DB751BED590DFB5F1EF067BCD +:10F21000EFF0B1368C7F7F9D177D0551ED10793E63 +:10F22000FD79328236D4FEFC97B093E691901FD3DD +:10F23000EA0C3B312FAB15E06149F0D23FDE3712CB +:10F24000EBCEA4BC969B5DB07EFB4AE7135E55BD3A +:10F250008BCEDBA59480DC87D2E18975E3BE82ADDD +:10F260001801191AEF335CB238AF235BF2BFEC9E82 +:10F27000763FEA0B7B919DA13C43BD657EBF5EE47A +:10F2800091D971DE263C56BBB8DE6D1325D24055B0 +:10F2900039D2EBAE303FAFEED1884F18DF5FD9885F +:10F2A0007880F17FAF84D6737AB4BE1FEAFE17D997 +:10F2B0005BD183F4B2E21687EE9006FFEEFD2616D0 +:10F2C0002E027E7B4FEDDE8EF1E6DFAF3FD8D2EA35 +:10F2D00087BAD857FDC5FA4F297EF681CCE3514C49 +:10F2E000E9CD4279D79A75A2B23E099D7CE0EEBD88 +:10F2F0008DE4E60A8786F1A4F76E7110DD5E7999D8 +:10F3000077878DF691C2A518977A57D0F57B52F280 +:10F3100038C54B02FF601F94F23866A4D27C9E343D +:10F32000312FF5CA9552B8C8B40EEF1BF75C283DD3 +:10F330005E0EEF3BA3EA93ACF3FBAE9EABE95CC37E +:10F340002D5678AF98EF15F95D5C4E5C7AD908922E +:10F3500013BF11EBF79EA11F2E4D117926E1521C10 +:10F36000C7980F5077DE1C53BEEDE362BE60215795 +:10F370008A780AC19F08F707FD70F70AB84F2485FD +:10F38000FB03576F52B8AFEC879BE3F9D3043C0300 +:10F390003E93C2F5B24BB3C037707E8CF4D0DBF332 +:10F3A000F362A8670CFAD8ED3A42F4F17E3F7DF49F +:10F3B00008FA7827297DBCEFEE494A1F5724D0C7A9 +:10F3C000D7421E9BF059FABDE016E79A2FBD2CA537 +:10F3D00053C07D5A3CBC2DEC8733EF27395C1FF7B7 +:10F3E000DB21D104BBCB4676D7CAD92BF370BFE261 +:10F3F0009D6ABE2F9C9AC9CFCB18FD34B8791CA644 +:10F40000C1CDF96003E895D89878DC30B559227DF4 +:10F41000D29727C77604506F16D3F30D152B9CBFD8 +:10F420004738F364590239FAB51A75A07D0FF530E3 +:10F43000FA959B6BDDCBCCFEE5E7A9FC5E939AB415 +:10F440009A2BDD50063DBD141765214547BDC243CB +:10F45000C28C4DD0C050C77C3611FF872F9DDC4E2B +:10F4600015F9A02CC2BE4B3EE8CF1566C3732340EE +:10F470003BE45F79B74A74B8D488836E722D1E87D7 +:10F48000F0A87BC39588A7F90E585D1877DF24375D +:10F49000D1E1579BF9799363579C13423BE5D8EC34 +:10F4A00099D3D1DE794B5EFC33F4BBFAFEEC607885 +:10F4B0002EE2D8153FBC88DE5FCACF0F1D93D874EB +:10F4C000A99CC048C5BCFBD442FDA93D88C7CD2E30 +:10F4D000F2E3EDFE17C3C7E93EA650AA5C05DFFFC5 +:10F4E00047E1EF53609C5E4FC603E8CE5DC57AC925 +:10F4F0007E34F210BDA99110C2A9FC707631C27998 +:10F500002CBD6719C277AC721CD990E99F01DDA0B0 +:10F510008F94E5E474D4073E02D48F442F7DD41C2D +:10F52000F78CE4C8946FE5F4AF610BD02ED123249F +:10F53000E5530B395DC4BC918B719C5A67D97ECD64 +:10F540008779913C5F709AAF46C1FCC1452B797DAC +:10F55000BE839F4B4FF4A712FDA70582AE143F3F19 +:10F56000AFA378B8DDC834C5721FDDDB627F2B71B5 +:10F570003D17B90D79663D576BA61F6D92957E5468 +:10F58000D9443F21A09F520BFD48A7CE3A73FA29D8 +:10F590007473FE7AF76C9042B4AF147C93F8EB2D41 +:10F5A000EED71879BF897CB22EB2CA29970CE4A78E +:10F5B00038FF5C92A513BFACB88AD6ED88A4E37976 +:10F5C000376DF22A0D9F3BEAEDB44E061F19FCF38E +:10F5D000370F3F27077C54E1C53888A7771AF25FB9 +:10F5E000221FA11831F3CB55C857F240BEBA75DAC5 +:10F5F0004ECA7B5DA8B0685A469C3F1656F1F3F69A +:10F600000B7B57537EC7C255123B6A5AD753A7A0EC +:10F61000EEB4E04DEBBF37C676E6F8DD30435A8BEB +:10F6200078DDA0F6B60E43BC66F17B509A5DD26ED3 +:10F63000DC8F5BEBFDEA77C3003F1B3274CACB481B +:10F64000DCC7583B3A85F874C3C211C4A73F69D2DE +:10F650005904F0FB81D023D1795EDA6FBA0FF01E26 +:10F6600071E03D5A417A0F7CFFB8BB12E92E721B44 +:10F67000E2C3169D1341BE7A57EA697819DBFD395A +:10F6800085F299BE7A213201CFF56D9E74FD48B4A2 +:10F690000FBFBA3332522B31CF27369C9FABE91DB7 +:10F6A0002ED3196F5D9CB361E27964047F1EA3724F +:10F6B0003BD0C15158C27B3D01C33F13ED7AA9DD58 +:10F6C00086D41E17C19D6D27BD356F2EBF77C53DF2 +:10F6D000DBDBC9A0C9763B3F6F9988D7BF083E9B4B +:10F6E0006B6BD771FFFE771B164FC3FD7DF796CE70 +:10F6F000F64AB0B7E4E8E26933C6E2779AF82E7CBE +:10F70000F87C1BDE67B33B7CDC74EFE1C8555D64BD +:10F71000C7A69484FD782EB055D899ADFB5CA4A7FC +:10F7200052665DB113CF618E2CE993AE2EC1FE14EB +:10F730007EBE6C15F463F2C716C214D280DF5DF68C +:10F74000B01FDBB9C6296C35B45B585CF791928465 +:10F750009EF0EFA8892E5AD15E36F91D2B0DBF23DE +:10F760006B6D0DE1A39E49686F7EE9E671CF0224BF +:10F770002C18EF8BE2BAD3DAF178EE25EAE0E75EF7 +:10F78000A263F8B917ACE3B9172CF1DC0B9678EE4D +:10F7900005DF631E31D6F1DC0BD6F1DC0BD6F1DCD4 +:10F7A0000BD6F1DC0BD6F1DC0B962F3445A8C4F355 +:10F7B0002FF81ECFBB601DCFBB607DAE909BAC38D9 +:10F7C000E2AE04BCB8C715499837E1DE600FE1B975 +:10F7D000B8B9297C1DA7AE9FB7F910CC33AF44A1AF +:10F7E000FB7052E6BCBF6F06E2FF36E069A8E7F99E +:10F7F000795C6FADFF2D6909941BA779E9FC4CCAB0 +:10F80000071EF28BF2E6FD49D23D788E46B765962B +:10F8100031767ECAB669CEB1C867AC392388F52780 +:10F82000D6627D62C567D73F03F5691B7FD68AA183 +:10F83000C594F117BCA56B58DFD18A21E5C2EA1A3D +:10F840002FE5814677B4EE87F2624C96A7CB67C06E +:10F85000E000384211A93F4FD259C4D8A19243AB1E +:10F860006BA1FD451B1F6BBD9F61FCBA67756D19D0 +:10F87000C66D1E6D9DE7A2F64A36EF7F1AA62C1BB9 +:10F88000EFB39CDB5BE78D35F50FE385A0BF37DF7A +:10F8900093A9FF3CF83E0AA476A8409B5D8172F6CE +:10F8A0007D99F29EE73BF435243F3782DC00787F78 +:10F8B00010E6FC5258C7885FE8CF87F762F0F8E29D +:10F8C00084146E57A78BF3FB3248488C37A4B0BE24 +:10F8D000EE0A8CAB25DC9BE12E5112EEF5B1DE7BFE +:10F8E0003498DE3A94C2EDCA43295C7F1C2A007C1E +:10F8F000A1BD30D619437B6129D2FB285C6FCE8F26 +:10F90000EE823EA512E9FA6E9D7245E6A6E8BC7D40 +:10F9100001A3FBC58C7689DF61BFB2E9BDD18E7DC5 +:10F92000FB397DD7BA99DF4BE62E88E92B4AACFD2F +:10F93000CA1583F76BFA8ED94E3F3E934ED38F8113 +:10F940000FB73DE4457AEF2BE5EBE65742956FC3E1 +:10F9500077FEE2A26014E9DF6DB54BEFF7D48EF5C8 +:10F96000C0F8633D9C1FDCEEAE0305D8FE5C85EC61 +:10F9700027B6BBFE35ACDFBE4D66C83FD90AD00105 +:10F98000F497DDA69545611D6F15EB9CE95B7A093F +:10F990003ECFDCAA30BC47CFC7A26AB60F4B29D8EE +:10F9A000AD233FB44FCB4679AB4AA4772AAA6E99D0 +:10F9B0005901CF7F11BE75EE3CF8EE17EFF9824882 +:10F9C000E72BBC1C8EB209DE06E4BB9913F226E2DB +:10F9D0007D9D1B13CE0D1AE51B62FD77E27BF85E61 +:10F9E000EA38DC40F664A547423DF5D5675C8FAC4C +:10F9F00011FC3EC6CEE70FFE1AD98BABFD0A9DB7B0 +:10FA000094737839C61E09231D8C19AED07D04F677 +:10FA10007F4E76A21E68FEC6D17F2F08EA11BB2B4F +:10FA2000A2E1FD02055B64F2239A35770CCFAFA407 +:10FA300079CBE91E6F364DA17DBBB47315E28B7493 +:10FA4000EFFC18FA71F7EC73D1F7AAD71943F9BE96 +:10FA5000B3EE8B701DBCDF59AD6838FF9D6DF36848 +:10FA6000FCA8266B68A7FC69968DDA8F6C97291E17 +:10FA70009F26B130C231FF87E7FAEB79BC9AEEDD01 +:10FA8000A02B9A64537C8C858AD18F99A2D54EA7DE +:10FA9000FB89D26B9D28A7D2A7D539793BEB7D5640 +:10FAA0002D757C9F0ADFA39C632D6C3FDE5F66B0E3 +:10FAB000767AFABD5200E050AFE6CF5A32A6E8E8B7 +:10FAC0000FE630EBFD1E018FB31BEDF21C8DEF73C3 +:10FAD000E8C5DC0E0D88F8253CA7FB01725AACFC8A +:10FAE0008EA48676EBC8A8F57E2C86D13698DF08E2 +:10FAF00001872AE67FCEDFADED47887B5C4624DCBC +:10FB0000177250D047229E12E79FE3DBA9E1BD8622 +:10FB10003928FCF481F3CAF1F1386D4073F3F9F937 +:10FB2000F8BC12E731453B5A837A31711EE7B09E2B +:10FB3000D54887798DD6E789F04EA9DB1946BB7782 +:10FB40004AB142383987753563DCCC58777781956F +:10FB50007F6F4DE1FB89C0C71AF271619B0C0A22CD +:10FB6000DEFFA876378B9AC61BB335C3521F1B1B0B +:10FB70006EF9FEACDD0596F7A55DE32CEF27EC2DC5 +:10FB8000B7D4CBBAA758BE9F78A0D652AFECB9C8AD +:10FB9000F2FDE4C39758EA67F72EB47C7FCEDF17F7 +:10FBA0005BDE9FDB77BDE5FDF9DFACB0D46BD85DE4 +:10FBB00096EF0D7FC9E655A2181F54D233E89CB0CA +:10FBC00081AF6F53AC791D67EA1F310FF78F12F7C2 +:10FBD000B15253F87A0CE59FA57A381D66CF2B6099 +:10FBE00011D373DFAC7196BA7F5139DF736506FDAF +:10FBF0005BFDB1D67FCE5DC0EF81E6FB982D59F35A +:10FC0000693F66C5583BC505690B0E40FC22259D22 +:10FC1000C65BF1EA28BA2FE2B769213FD2079EC33B +:10FC20008D66E239653BE93BB7C74EFB106ECF03EB +:10FC3000749ED75DE4A498BABB38C622A578AF7588 +:10FC40001BC513EF698A52A91687A2A8CF549056F4 +:10FC5000785E37AD98ADC67A5A88D7BF407D0678B2 +:10FC6000D2AAA3963898AA413FA679BD25F33CF2C3 +:10FC70003EF0FB7724F1FB13FDFCC55A70D71E162E +:10FC8000F7F7C18FEE3E9FDAA750FB0274C4CA0794 +:10FC9000F7EBAB590FE5CD9FC7FAA8DCC91A0A30BC +:10FCA00068ABDAA3B6E1D0FEBA9D6F2E4378CEAE34 +:10FCB00070D379668C03782C7180603EEAF56DF61E +:10FCC000F0E64338EE6A7E0E3F3267B613E56264B3 +:10FCD000AC129474949F5CDEEF8AAA447706BF82CC +:10FCE000D5EC2A02C0DED950548E7642B6D240F608 +:10FCF00075F6224D423DBA5EE8DF4C5F05E98FCCD8 +:10FD00007625A8EBD8955E8BDFF9DA5810EFBFB8EF +:10FD1000A400F42ADA013F61A49F0B8A47EF473C15 +:10FD20008DB8B15B72A0FD15D2E9DE9882F72E3C4A +:10FD300020A5A2DED5E6901FBD5D11F462A7F8C52F +:10FD40008A0715F2E356BCAABA8AB0BE5E2943817F +:10FD5000938AFB2D13A19F1A3E8F82EDA363388FE8 +:10FD6000BBA56007E9A5CD0EB2FF1E12F4B01DE9D8 +:10FD700003FC9A63D96BD7E096CA584F27E55D9F7D +:10FD8000E5DBB706CBD2DC2332DEC938A1486ACE28 +:10FD9000807A5949C096A9A33D5CD38C656575BD31 +:10FDA000CD07E5E43A09D362D91D1EBE3F79F9D2E9 +:10FDB0003987D11EAAF138699FF16E55DF81F1179D +:10FDC0007588F3D46AF656BA1F942DB59EA7AE492E +:10FDD0007512BD6B48EF012AC97ED57C5C0F83BDCF +:10FDE0002EE13E40B48675A17D921BEA96506F428B +:10FDF0003BDAFFD7BA5D12EE3F8C08F5480AF433C0 +:10FE00006225A33C8FFC50AF84F713E4DE68A5F7AE +:10FE10009837B21EF92D7F659BE5792AEE0F007E9B +:10FE20005B447CF51D6D878E76DDC6E2E2723C1F79 +:10FE30008171C3392571BA5924E4559DB08B0C39B1 +:10FE40006FD8BBFD76ED38F03381AE77F545368C53 +:10FE5000C5758AAAFC9ED3BE6E1BC6A7223F9A1305 +:10FE600044BACB17F1B02BBFE869C5630DEFD8FBDF +:10FE70005E4EC379AFE076D90E97D5EF3D26E4D636 +:10FE80000742FE756C00CB001A76887C56FA43FB5D +:10FE9000647F46A7B8278DEE778EE13F80106FF71D +:10FEA00072FB70FCAFB45ADC170A746B2F51795097 +:10FEB00094FBA13C8D1FD9D9E27B0DDF7732ED3564 +:10FEC000CD5CB664A44492DC7FD1F93EF7CB3A0313 +:10FED000C20ECA6521C46FA0D547F17E04CC0BF5D4 +:10FEE000FC3B8B28DFA133A0DD4B71801FB919C605 +:10FEF00001F44625E44A92473F92F5DB0332DDEFF9 +:10FF000016E575276B5B8DF43561AFF5BEC1B26E3A +:10FF10006B7DE2016BBDB2C75A9F7CD85AFF8157F7 +:10FF2000C4E3A2EC10DA613ABE80FF1BA9F3AD5323 +:10FF30005DDC433DB291DB2103ED26ABFFC4841DA4 +:10FF400065DC237076AFD56E5928ECA78509F6C815 +:10FF5000314F707E3D94A1FB23F7A25FBC386A232A +:10FF60003977647BF6686E4769D918F78B79759E87 +:10FF70002F74A7887B365AE39E1B836F51BCE7D250 +:10FF80003F3B18B69F663B78A009F5569E427A4BD8 +:10FF90009B7CE3CF52A0BE0EDF43FDD2803E8CCED1 +:10FFA00059BF0A1E6D207ECFBA71BF9D11A7FB56A7 +:10FFB000D0E5371EC3CE8BA6F0384F770ADAF71399 +:10FFC000F6325692604FF2F7210FBE2FEB4E7C1F98 +:10FFD000F2D4641B26238A0889F05D29EC57ACAF64 +:10FFE000023D5371C87A0E69D8026B3D7840253BBB +:10FFF00077BCB8B7085D7BEC67BCC07330E13E9B53 +:020000021000EC +:10000000F1E2DE9BF109CFB331D20878CCAEF0D06B +:10001000FDAE89FBF1C358B713FDD261607FE03DAF +:10002000AFD95EB13F5FC24A70DDA7E1EFC3209E4A +:10003000DFE6F707388E8C7917ED07F6263F3F9AF3 +:100040003163A51FDB9F04618772564B6165659E16 +:10005000F8BEFD03A782F81B16FDF1D19F3731864C +:10006000F2BEABC9C950FE3FD3A4517D4F939FEA66 +:10007000BF6CD2A9DCDB544CE50B4D417AFFABA63B +:100080002AAAFFA62944F5EEA6E954AF49AB39CB1D +:100090009B658DAF9AE3CCF1F82AF0DD59145F8DA2 +:1000A000600ACB3AB7CEED3123CEBA8CC79F87EE2C +:1000B00087C7A5314EAB26EB47C4B16F6AE371D950 +:1000C0009BAADAE8FEC39B2AB8DFB2BE788BE53E76 +:1000D0003C071E0C83FA4D7B56F3DFB9507B1A2880 +:1000E0007FAAD243FE23F8933D4DE84FA6CA3AEAD1 +:1000F00079C38F34FCC7447BDEE4975BE43C9E3CD1 +:1001000042BA703B25AECF98F53ED3D73DFCBB71CC +:10011000DA9B2FA5834A381FE34CF0BCC4FF592D4E +:10012000C5A1447DBC9EFE7286E97DB0B86C6AA60E +:10013000A95EEC7CBA77B1292E55E42D7F293318BE +:10014000AF1FC201791C2A8472F9FF779C6AB988B3 +:100150009FFC6BD6731918F7883EA530CCCFFB5D9A +:10016000D673C3D18F35E9031EA7FE91384F85B6EC +:1001700081592FE812EDE3E4DFC9EBA017DE227B03 +:1001800047E885E2586F3AFA1363A3B266F62792FE +:10019000E8071BE5D5E84CB74FA27B51C8DF34DE3A +:1001A00003C8DDFC7E50AE27E97D21CA6F99EECBF6 +:1001B00034F543EB5A1C33AD3343FFCCAA274ABB7B +:1001C000ACF5FF2A3D64D0D766A587F238367F9B11 +:1001D0009C6E8F197A2B4E9FF2A9C9717C501E61BB +:1001E0000196FC3D70CF3E9CE7E24DAA65DCFAA883 +:1001F000B57EE52A6B7DD14A6BDD349ED077DFB1C9 +:100200001E0DBD6DD6B3C7F1FC2A5EDCC2622ACAE0 +:1002100083A5ACFE029CF7D578CF6A09E6C3F17CD2 +:100220004C430F1BFAF3CF5EEE775DBB35C5E2277B +:10023000B228D7B74E9871FFEF4299C60BD4292B3D +:10024000F06ED9C08C933585F4D0AABF13EF494D19 +:10025000D4D37A421CC2A9F3FBF1F35725C655A3A8 +:10026000FCBE31F817DE0F3B10AEEF36AED1DF0922 +:1002700090FB944427EEFBECA76BA5570A021CD712 +:1002800088FBA6AE5DC5429D14473B9FF2E3161A5C +:10029000099451467A5717BC614F9592E2F19A65DD +:1002A00085E968CF5DB3C8C6BF15E793178A7D8B14 +:1002B0007797DD6A47BEBD7ABBC43202F1F5618D26 +:1002C00005C4F344A70534EFA37CDEFC7CF1B55BE9 +:1002D000ADF7B25DCDB8BEDE2CF6B7362F936228EF +:1002E000CFAF4ED0CF26BBC9F2FC51DC4BCF42FD85 +:1002F000C1EF21B809F7F7508F307E7FE2FA8A2DDF +:10030000967B5313F548EAD460DB68F4F3D2651D9D +:10031000FDBC96A5CAF44E6BDCCE7E0A8362F8EF74 +:10032000EC385F1D91591DFAC17F7273B8FFB42676 +:10033000B313EF877D67C15427D2C35BE9C152B9BC +:100340008C63DC590D7557F0295686E719332E9CBE +:100350009E17AFBBDD6753FD4F19FA76AC57A7B2B6 +:10036000685D35F6CBEBEBDA0217EE3F578C03F204 +:10037000F9CAD48A75786ED5E06B986A94D387955C +:10038000CFB688FB7D526AD8161BD4D32F3FE647E1 +:10039000F968B4CBC076D269DACD615B9424ED3CC8 +:1003A000463BD0256B4D713E238E270B78CCE32B3B +:1003B00085E87FF1B87AFAD9F618EE9BFDDFC29195 +:1003C0003DD4BCEBD916B570603B0063B501BF9C52 +:1003D0001CFE18BE378FAF9E06FEFF6C7C0CD59FAF +:1003E0005DBCFFCEF0C1E76BB2CF60BE001F5E55B3 +:1003F000F38ECEF5F6A0FD814DBF26F97CDB13FA16 +:100400004B27F8FC60A67D8FFE60BE5B12E69B6EFC +:10041000B70DEC0FF9B31BE69727F8330D7F6B058B +:10042000FD9A5285EC903C8579ECE549C65DC9EBB7 +:100430006E168DA1BDA7D5F76E9511DE622D1DE557 +:10044000E93DFBCEFE23EECFB957B3208A50B7DA91 +:100450004372366F65742AE6CBE42C93298775DBEB +:10046000D2980BE318DB7A632E8CFF572DDBB11E7D +:10047000E563D5262FEDD39CCDDA29BE9C7EAE4216 +:100480007E5BDAB95FB42FC1FD8AF4721BC6379860 +:10049000C8935232A7D0EFA7A5633CC98771729564 +:1004A000F6935AECED35385EF41A46F735A74FBB94 +:1004B000BF06FB3FB294FF0691FBEA76DA1FC51F29 +:1004C0007EC0FD08B72485C5FE8493FA292ED23656 +:1004D000F071283E6FE0C92D811D887ECA6D8CF2B7 +:1004E00003F2427BEE90C6737EEA3F8F807A5BE137 +:1004F00076C5F6FEF5E9ADB163BB46C6EF5561BD05 +:1005000012DEDB7199D88FC86BB4DA538A43DB42B1 +:10051000FB9A57713F33916F2FBBBA218B950C7C9F +:10052000FE9DEB623F257E8F9FF53D3C579C194316 +:10053000F7B350F8A1972D5313F64FACBF3790E89F +:10054000DF33E1FF131D033E738C7B334A5AE8FE11 +:100550008D9C84F6463EA3411F03FCA9B5DC5F6A6F +:100560005E669C735F44F9AC869FD6811FA2FD9C9A +:1005700027ECED84F652E38630E9E5F3C4F97337EE +:10058000733ACB510F4199413FCFE7CC41BE803503 +:1005900045FF94A5F27B58564B4CC929378FD7CBD2 +:1005A000703C9433385E73AE9DF4B41127309D6374 +:1005B000D690B99AB5A013FD5BE3FCF2ADE2F70962 +:1005C000D6798397D520BC7F54896E9AFDF01DEAB9 +:1005D000E114FD0AFCD102F99E7B2F74A27EAC656A +:1005E000E47FA4A66D267DE7F866048B98F2A71D2C +:1005F0008AF83DB46FF22DCF5F02BF3962BA97B56A +:10060000D6535087F08CC2CB71300F81055BB0DDC3 +:1006100054A7CDB21FE0F82687453293F59F6B793A +:10062000FE12D8AB11C799F49F62D95F707C533822 +:1006300048FFA313FAD792F61FEF37D3D26FAB223E +:10064000D67F5E8A38BF6ECDF7DDE4AA1D975619B6 +:10065000DFAF61FE604FC887F9EABE32210FA8FD07 +:1006600005BE748AD355A7F13862DDAC4285E24EEF +:10067000B9D67D9B0B04FD1A790675BEC4DF090A45 +:10068000D2FDF0B59EC4E7679667F0D754EED7FC6D +:100690001573EA006E87BD6101D2ED1689D343243C +:1006A0006DC73ACC9BFD7CD60ABFB83787ECE01FFC +:1006B00062C7C41F5DD3E87728AF9734739E600785 +:1006C000D045C8C1EFDFC37207E03944F7C5FAA9C6 +:1006D000BE0BECEA10E5CD1453F9445390DE3FD93C +:1006E000544575A39F926512E5A994DE28853A9337 +:1006F000C453EF4FE3F6F4961CEDF2A5B82E356E19 +:100700007E4FD5B27340129BEC62D6F5129E1BDC75 +:100710003C9F95D1EF66B0D81AAC6F99C3EB9E7F22 +:100720003E46BFFB78699EA2E1F9494780EF4BE264 +:100730002BBC07A85E166B07EB80798DBDD1693B9A +:1007400071FDEE49E3F1BA447BDD610FAE9F84FC9D +:10075000BD42A5FB5EEB730F2CC07D8B7AC3AF62ED +:100760005A0EEABD488BD53E37ECEEACB035EEB64E +:10077000906DFA2C331549679F8676822FA8D0EFAB +:100780006664B1F06AA4D34B8F3808DE2D2E2D0796 +:10079000E5C022C6ED7C873877BA28D1BE1FE2DEDD +:1007A000E9C17E7F34314EB73E4DDC3324E27227FF +:1007B000A7CFE3F7900FF23BA246FCAD2E8DD3DB23 +:1007C00060BF0764C0F339D225C6E79BBA29CFCCF6 +:1007D000802F1FFC2F9CF7C8C66E4BDE18F3859840 +:1007E000F91E88C1E6D1217D9C73BA7BE6F345DC16 +:1007F00012EC17FA9D61EC06ED97C4F93F9E668DE9 +:100800004B7EC9AADF286203F92463C61EE29393D4 +:10081000CB248AB318F831F0F1FF9A5F16A4B1FE29 +:10082000F367CC14BFB0C96127C601F27DB59467E8 +:1008300087CF8F5AE8C49A67677BE92309EFEB1EDD +:100840009007D8D827E17D2589797D89F018794CE2 +:10085000FDE7A23CFC9CA39FB98388A7C4DF07B92E +:10086000438E44109F77D8BA9C0178DFEE8FFC2529 +:100870000DDA7D2D7769351887CC7E2D8C602E6A38 +:10088000BC2B5887FB7D99C9E3398B449CE343819A +:100890008FF7D4EE3C8C5BEEF7D77E985699E4FB4D +:1008A000C61F537FE789DFFF4E7CFF6D1A97A30FAA +:1008B00009397BD94DCF7CB40BE6E1D64BCA917692 +:1008C000DCC53DB3F0F7EADADE28A4DF95FD428C03 +:1008D0000B13AD40F97D4E56E473F3B84E5D53F8FB +:1008E00039BCAEB3F1FD79FFBBE4E937A0BFB699DF +:1008F0001E0DEDD75061F00713A58170403FDF62F8 +:100900003FCE6F36F0FB22443FBF71F53E44C17AC3 +:1009100076F5F4C360FBFF26BD7704DE4BA3687554 +:10092000D37DC01FFF0760C3CC5B008000000000C8 +:100930001F8B080000000000000BE57D0B7854D5EC +:10094000B5F03E73E69530939C99CC249317993C6F +:10095000D02001272F0812F1849701030C021A1BE3 +:1009600094090F8D8824F8EA54504EC88380A1461C +:10097000AAD6D6964EA85ABDADDE68B92DED456E05 +:1009800052688B8A1A1F45AC0F626DAB562A29E854 +:10099000EFD4D2CBBFD7DAFBCCCC399909C1F6FF63 +:1009A0006EFFEF864F77F67BAFB5D75A7BADB5D7E5 +:1009B0003E39E01ECA263E426A5B9D5D8732093998 +:1009C0006022845C42485D8FB34BB1113273C189A0 +:1009D000EFDFEBA26517987D1368B25D20F57DB45B +:1009E000FC2CFC5C4648B32412E2865420A492906E +:1009F000870DA409EA8FAC7FE6A3C72A0849F696BB +:100A000094D11A925C3C58574EC7E97AB9B08CF62B +:100A1000202EDE9E784885DF4EC80C77C025B9A30E +:100A2000E35ABD923140C7A9CA94DD504E17B9B8F8 +:100A30009C76E9DA427C6BE81AE58CBEA4F27C4233 +:100A400032BD7D4FDC4B87C92A520829C07172A183 +:100A5000BD35DCF51731253ACE931E793C941F59EC +:100A6000FF6A5D395D57D211D12778697D1151C672 +:100A7000A560BFA2D87E355E729B40C723A46F3AA3 +:100A8000AC2F2F9DE07A773808C2EB14490BC0D900 +:100A900066EEF12CA1A954F4E0AD12EDD7991FAA8E +:100AA000F7C7E0474D8B1C06EC47BBCBD0AF5DDAF8 +:100AB000635D15D36E0EC7C7E40CB95CA2A95920BB +:100AC0007E68B7A38AE12DE5485A19A1EB2545A414 +:100AD000E2CAC9845CE760EDE9BA6760FBE93D847E +:100AE000D0F649450CDE1D25BB8817F29EFB595AEE +:100AF0003444022534257D56D8EF05524157BB07B3 +:100B0000E0F015437E9DE33FBA8CD309E9750232CC +:100B1000095943F34A0E21BBCDB40DC59792650E1A +:100B20003D9A3F12AE057C1D496E392FBD320E9E97 +:100B30002C43DFBF97F6DF3ED1EC53E8FA671A7A11 +:100B4000EA57013D2DB0F91EF562797DA8243ADE01 +:100B500066C0831B52138EB3FDAF56ACD7E379AC9E +:100B600074D6C8C78BA1B346C0571C3A5B1597CE45 +:100B70005213D2D9BA047416170FFABCD16356C4F3 +:100B800029340D770EB2D4FA1E8E63F5E1F8C6DA79 +:100B90006E1C570C27633B31DC3D0879A3D482FBE4 +:100BA000F85D21902C215C0623990AFBCA7E449BA8 +:100BB0008CF5C9D2E8F3188B3AD9F8A48508F92343 +:100BC000E7A1E32F932A478E6FB4290AD0E1328937 +:100BD000C13373812D100239612081BE987DBCD054 +:100BE00061C4F9C312A3FB447CD1007C5199982FB6 +:100BF0006639D8FE51BE78702C7C716B942F768F3D +:100C0000CE178F609A5CCCF82299F3C52C07516AF5 +:100C1000AB60BD8C0F9E949EEA52AAA37CA238FAC8 +:100C2000357CF2359A87FA44F0ADE07C9F02F0D132 +:100C3000795EAC1015035DF76932798F48979A5247 +:100C4000251957D1F2BD92BA6EF9C7B8AF648800C2 +:100C5000BDF692E1010BF05FB5E07B9496DA953E2C +:100C6000D90AF0921EB284D6EFE7F4BDDB004295BC +:100C7000B6BB80209F12630F017CE8F937A9A8BF9B +:100C80002210B34F7E8EDF7B1CFE83128E232593B2 +:100C9000C2E87EE8E1C94B67EDFF90119FCECF75AA +:100CA0005E7CCCCF8B8F39BCCEBF595BE2F1F7CCE9 +:100CB0000D3FFFE8B151C6F990F73FCEE157E57A15 +:100CC000B22AD78B2372FD38D08175FD0E55AEEF59 +:100CD00005B94EF97D282EBFA7517E17E2F2FB879A +:100CE000E7C3EFFF04FE1E8CC77F2A7F0F46F86F15 +:100CF000747C573A446C57C9F7F9CBE23B9DF395A6 +:100D00009DA7A3E0DBEE70C7C5778AA3F2BCF09D78 +:100D1000EE888FEF0C47E5A8E778AE23CE7E5B61C7 +:100D2000DE7CACCFC7FAE839FFA96080FD93F87983 +:100D3000451741C77536A7845A85C4E7DA3F617FF6 +:100D4000CB1DA3ECEF4C03D3C3764A9BBB94927F9D +:100D5000CA7CFF3D1A3DFD37A7A7739DF7CBA2E7DD +:100D60007D2DAC5F2F277BA92A097493E40E2CE01C +:100D7000726C3EC8A5DD773A851DB46D8EDC2F38C8 +:100D80004AA2F81C90BC884FB55F8ECCDAE7049D70 +:100D9000822268C6BBC631CA78FA75D0F5AD80F537 +:100DA000DDE3900F4B31E76F446FE3FA43AF33D489 +:100DB00004727B1D97D3EB389FA8F91F64C86B1D85 +:100DC000EC3C6982F94F5788B7190A98DC067A54C7 +:100DD000E5B43ABEC11F224370AE541119CEC5A866 +:100DE000BCBFF65155DEAFB5417B763E5279BFD1DF +:100DF000E18ED29F3A5EA2752AFCBC54F83EA879D7 +:100E0000BACE3B1D385EE02E586FA275EAF134D69B +:100E1000F53E2119D5F3699BC39D783CBA22CD7E5E +:100E2000C21884DA1547DA19BF2E3A525806FCFA6E +:100E30000D8EE7196EFF2E18AFA64AD84B50DF96DD +:100E40009261DC87CD146EBAAF0FAFDF5563A6EBAE +:100E5000E9DD2C958A48B1A156C83FDC2695EEA065 +:100E6000E37C97E3414FA791FEE6BE89E52588978D +:100E70005E98E7B26AA637A452B901A3D510CAFF9B +:100E800022F0BDE2F1D1F576098A6715D0FF7C1B0F +:100E90009EB7C4B60CD7AF1F5F4D09D98AF3ABF02C +:100EA000125BC539DAB7627B699CD2E23F9FF616C6 +:100EB00005F58B281ED34A018F8BAA0405E4550D36 +:100EC000C9ED055C0F707AA0FBB41FE58B8D023B6A +:100ED0003D8AD791E3B3FDAAF1B70880D7A4623A5F +:100EE000152D4DF2D3728A3783B7870C817E544417 +:100EF000E9A304C67B1DC78BAEA3BC5CBB8E4BBFF6 +:100F00000FEB888EDFA9D2F94BE7B31EB55D62BC4B +:100F1000B076416BCA14924AC8E7492C556631F93C +:100F2000ADBC9B146AA3B4D9E3091C67F4DA32CDD3 +:100F30003F19D38B59DA4F400E5EC6E5E065561B6C +:100F4000CA4D72C67862C8CACACE527A1428D96706 +:100F500083AE4756487F9C44F36448383BEEBCE67A +:100F60003F196FFE15C14DBE39E5140B6964655C10 +:100F7000BD11F4695AFE05E793B74DFDB920E70EA0 +:100F800079667DE170C7691FBC1BC74B21438A5836 +:100F900001E825685F01FB6597317E057DD0E4643B +:100FA000722D35817E67720A1AFEBDBA631629A0BA +:100FB000A9C54A14BB93A5A965C84FC94EA47B76A1 +:100FC000AED64864AFCB108547854F1D37838F1B46 +:100FD00059AF99D90B6F9B48FDD336065F59CC7A30 +:100FE000DEF2D464382B47C2A75FEFE12D41DF1C4E +:100FF000AA47FC624B00D3B4E06CF27E1A5B6752E6 +:1010000019EE9F62A2A9910C5E770B5D82C9102830 +:1010100070D275DC7CC1475FF751FC0C5ACB5B0D7D +:10102000145FCD75B44FFED8E9E2CBD2C380FD8EFC +:10103000694CCE313A689B5B5AEF42493467FE11E6 +:101040006A77B4BDE83B66A3F96AE79CF91E2A17E4 +:10105000DA5EF1D5BBE9D1D0BCCBBBBD9BF243DBA3 +:101060001201E52DA584A41AD0E3E6B3FCBC5D2BE8 +:10107000E683BFA6ED1A01F5862B687FCC0F68F5D5 +:10108000B828FF74E07ABB28AE206DAB1112B463B0 +:10109000F2CDEF64E75BDBC2D1DBFD526D772D6DE6 +:1010A0005792B8DDE369AC5D104C12D03BC3069497 +:1010B000B76DF2EF5E10687EA0DAE2C5FDA8A0036E +:1010C000D2B3F5325561F9D481F997F85E50FEBA82 +:1010D00016F6F3E0A516B47F7A162487A0DF4055F4 +:1010E000DA918B212F03C1D3BDA574602B6329D066 +:1010F000B189F2B5C8F39C9ED738D14E152A5C85CC +:10110000289F8CB03F89E8ECB9096F8C07BD89D264 +:10111000D37A464F420FE85B83D6C26E1F9DB779E4 +:101120009FE8B37847A19311709FB2C139AC87EFA4 +:10113000E52A3149B08DC403857B13F0C7CB67180E +:10114000BE7AAA2EF4120AF7C1E996894378DEF92D +:10115000EF827A7ABE55D8C531C1D101EDCF1F0ECD +:10116000DFB100C071C6CCCE4BBECE4509F64BB444 +:101170007F6A83F5015C70BE5038BE01F38AB943C3 +:10118000392037D4F58F553EEE76B2F33F463EEE2A +:101190008E951B7AF9017A8093E9719F3613D08F6F +:1011A000997E94486E3DE5D4EA1763905B4F39DD34 +:1011B000E72FB762F6E1275F661FA838473C9B38E8 +:1011C000DA69D62BD1FC4CF89DF6A3DC3164298C6E +:1011D000D2BD1026FDF61446FF56BA659DA5A5564C +:1011E000B39878FC1E8FFFD70097C9352406CE63CD +:1011F0007F5E758E38BF5E8DC58F1E4F73C5136DB4 +:10120000A9545E9EAA16105E394C414279494DB8E8 +:101210001878665ABBD10E4AA532D358CCE532FDB8 +:10122000CF215B89D11ACDA7D54A9ABCDBEFD1B4C7 +:10123000CFA8F76AEA3303C59AFAEC269F269FDB0C +:1012400052A5699F179435F97CA556D3BEB0CBAF94 +:10125000C94FE8A9D7B4BFF0A180A67E62A84953C0 +:101260003FE9F1164D7E725F50D3FEE27D8AA6BE45 +:10127000B4BF4B535F7EB84793AF1C7C48D37EDA34 +:10128000B190A67EFAD0E39AFA191FF669F2970E8A +:10129000EFD3B49F498CCA10CB0B6741D9A01AA3D6 +:1012A00051DD2783A69E9CA5F2E914254C81EEAF63 +:1012B000BF54407F3025AFC1227ADE2E654DC8D2A3 +:1012C000A1C63A7096913AD3EFA19F42FFC1794BE4 +:1012D000B1F8FBD8716652F90C7E4BD9678A96C378 +:1012E0007ADE9EFF119982F3FE3E725E837E420A91 +:1012F00052BD74DE99874512A2F9BA73D0D548B8A9 +:101300008473C0457CFD00D76F449F02858A3C589A +:10131000949E182E99FE637AC4B011F483995502F5 +:10132000F9B610074E0E0FD5AF8DC07723E025CC50 +:10133000EED7C31B7CFB2F930FC5ECDB656976D71B +:101340001F819F7DC47756043EB3E17A4FBD4EE5C1 +:101350000A498C871AC58AE76A8D2C84006F9F6FB3 +:10136000199E7C68421C783D244A2714AE24AF960F +:101370000FC7156BF9D0EEF38C4E470A1915DFE74E +:10138000C2AF97FE83752C864ABACEC56112EACFEA +:101390004F8CDFC54653147FE781D7753ABC7E4634 +:1013A000AA17977B995D097A845ECEA9F8A3F650B7 +:1013B0004B9A3BF1B97357DA799F3B77A5FD63E709 +:1013C0004E47DA97D063E8B9B0230DEC3A63C07B9F +:1013D0003E76CD036923CEED07D24639B723760D8D +:1013E000F8C1BDD1738CFEC8E0AF4AF15C10DA01E0 +:1013F000FEA2B4D1ED9BDE34BD7D73CA186BDFC88D +:10140000968C64EE7F94C1EFA7DA3B35D5A58BCBE4 +:101410006132EEE789C22F3F01EB1E2BDC7B47C216 +:10142000BD7734B80FB4327FC5811745DF1EDC8627 +:101430002575A5145EF90A43D90E12BD77A90D10C2 +:10144000C6A7C6FB1E07A38FAEFF00EC67ADB7466D +:10145000B8D106E51B314D446F2FA49DB77DF642F0 +:10146000ECBABF04BDBDF665E86DAC76D657C5963F +:1014700063010A525B07C38BF2CE38F4676EDB4E12 +:10148000D02ED9D6CAECA2CFF87EBCCFE17FDAC588 +:10149000E8A726A50AF5DA0EC1CEE5A3DF7337E08B +:1014A000D76326E077A2F8FD13C07F28736A2AE885 +:1014B000ABA78FBC668BBD57799BC37D94C3FDCE14 +:1014C000ED11B84F21DC7770B8EB57EFACD4C09D6D +:1014D00023A13C01F92246E1354B7DE8E79D27DA5F +:1014E00010CEF62212B2E0B924D7CD4D07E1CDE4FB +:1014F0003611EB0EC3F9FA59899188145E2BC84551 +:10150000B05FBDC6DF811CEBA2FF503E83DCA3F3BE +:101510009B3CB43C460E2781DCA3EDC711D65E95FB +:101520007B6AFB2412D33E8E3CB4B9A83CA4FB4694 +:10153000CC2483C9C3CD5D9310AE8027D69ED2CB79 +:1015400043357F68A83063280EFFA8696AD5878570 +:10155000451A7D6F58934FAB0D171669F43D521421 +:101560009BCFA8B716C5B6CF0C489A7C769347D3C5 +:101570003EB7C5ABA9CF0B166BEAF3159F265FD814 +:1015800055A5693FA147D6E42F7CA856D37E62C8F3 +:10159000AFC94F7ABC5ED37E725F4053FF14FC022A +:1015A000F6BF52B640A6787A8ACA41B0F72FB9FF83 +:1015B000E205780FF9DED51EB8EFEC705F658DA5FA +:1015C000477D7AC8CDE83651BDCAB707B6F87D73F6 +:1015D000E8FEF46FA9D7F0712D976787B63461FDE7 +:1015E000AFB6B460F9952EC64F469741B1C03DC520 +:1015F0003EC37B16BCA768415FD47785C0952EE0BB +:101600006397F61E023422F0075E16A6F3C5C05B90 +:1016100043AEF1CD89C1C76C6BA3A67EAE74A3A601 +:10162000BE96E2E3122AAF2FF76CD494CFF77E4D2B +:10163000D3AF3567D543C047DB283F031F6D230C6D +:101640008F2A5EB719199E2378155ABA260931F8E0 +:1016500027572F904BA2F85FE75AB600E2253ADFF2 +:10166000BBDC0376ED2107C5EF28747C2EFCEAF184 +:101670007A98DFC7D59AB5F7ECDFE1F24A4DC1FFA2 +:10168000EFA2F87FF188F86900A11DDD8FA19F5FAF +:101690003F2F95575DB05F7F9EF0C6F5BBC84839B8 +:1016A000FD904BC2FDEE109422B837AE35856AD15D +:1016B000AFCDED51A3C070DEE19EE7837BFD075DFA +:1016C0003C1E83DC89F5B7AB7B92004F462A48FA73 +:1016D00063E49090BFBC1EE479ADDB8CFEBA5A1E69 +:1016E0000FA0EFB7C3C5FCE0FF283D7D693AE2F4E7 +:1016F000A1D2914A1F89E4BB15F025427C05BFE7C2 +:101700008BDEDBED83FD2439945FD247F28BFE5CE8 +:10171000D48F1F8486A037D9D87D1E1E14A0F71F32 +:101720002EECDD2124C6FBB62D528ED114CD131222 +:10173000427C6E13D8F949155ECF95761C1FCF57A2 +:10174000E2B1E1F8002EDC6750795F0CF109AFF1EE +:101750007D08BBE597100E491A935F3FECF6FF0634 +:10176000E58431508C708EB15FE2B487EB6D3E6FD3 +:101770002CDE5CF4F741A057630FDE77DC6F53F388 +:101780000AC68DF88BD8FD479297D5ABF7591981CA +:101790001081FB9271150422108801DA817E356E6A +:1017A000503694D2EEEEAD0B3C13697D51C063F020 +:1017B00061FE79A31BEEF5681EEE5AC9D6E70FE568 +:1017C000801E2A5D24D07AABF1EEE70F5F8A71228A +:1017D0005CBEDCFD3CD04F6F244FFA09A5C3DEE4AC +:1017E000485EB6529BABB720925720BF9BDF1B1BB6 +:1017F000DD773FDF6E433FE059C4BBB5BFAED805D0 +:10180000FAAD2081FEF2CFBE87E92D79E67001E8BE +:101810005F1EA36F8217F40CA2E93789F22BC699D9 +:10182000A4071C6EBA1EFBE6613407EF2971DAC10A +:10183000FF16DD87906E1F18DEFDC5217E0F15C2D5 +:101840007DC9F37CAAD4D0F9F2AA99DAE325D20EA5 +:10185000C87BDB0D523F1638719F0CC52D8219E2F3 +:10186000144A8804F2AA8DDF0B8E2B66F79D9285B1 +:10187000E9C3456E46A7E56E169F52EE66E758AA85 +:101880001A3F576BC0F6A93C8DC2DFCEFB193576E7 +:10189000415566E06277CCBDE0917603F25D6F7BE7 +:1018A00041AF20C03E48738A69FA3D1E0741F729BF +:1018B00005DA1FF1A5250798FF76AADB1D67DF383B +:1018C0005CE7DAB744FBA5EAA389EAAFBA46F403BA +:1018D0007C066BE081E574DE9BF7A5958A74DEA338 +:1018E000F562C520CD6F783603EF6117717C351B2B +:1018F00086D3416E6DB7EDF2436AD9D72A6713904C +:101900005B5ECD3A9AF7D7A03CDB3A2EA51AF65B80 +:10191000BF8EA367DE70F969FDC2BF5A509E830176 +:101920000FF6FF4A642E04EB75B0F7AFE3E7C92D5D +:101930007C7F5EE7E7D675AA9E4B1997EBADC2593F +:10194000AAB82FF3372E04F9B4AA5E447D7865B4A3 +:101950009EF91182CCEEB7D27FA0170788631EB024 +:1019600067A3A2F507AC25BE796EDA7E7597AE9CAB +:10197000EBC56B757E85ABEBA3E7CA69FC7F88D1AD +:10198000875136C17DD3912B0502F277B95F7B1E5B +:10199000BDF1777125E0E128F4A5EB3EBAE2C23D46 +:1019A0001007A1C7C7B311F8D9F91DC10FC1B6649B +:1019B000955F304368851E1F7AF82378D3E1A1D163 +:1019C000583ACFED1D89073DFC146388DFB514BF7D +:1019D000108F91081FF3C43A847BF51201CF493D63 +:1019E0007EF47850ED1A159E57553889EFE8383A4D +:1019F000DFFBDD26C41FE9BF0CEFEB16B1AEB1F083 +:101A0000A0FD22D17FCCCFE6ED48A3F3AFA5C8045B +:101A10003E5AAA983476CF5A6EF7AC22FED47E0195 +:101A2000E1FC5D827DD6D83FFA75EBE15AC8CF0B59 +:101A3000BD9D448CFD25A0973DE3E6FEA329CC7F08 +:101A400074BA62692ACAAF0A775CB9ABB79754BA5D +:101A50005A195CA2D14B041288E425AA97DDE21141 +:101A6000BDBF4F037BD3F40090E112EB9011FD9FBB +:101A7000E28A54E0C725C4EAB5D1F69B287181FFFC +:101A80006D919CE4B5C5C075AA47A805B9790B1D31 +:101A90002E887E1719F5B7951CEF2B893200F8BBFD +:101AA000C563C679289D7D1A4B6789F0F06A14FEDC +:101AB00029E703FF62908D95E8CFE8077B7758B060 +:101AC00086F60851BF06FD55315351F901306DBC02 +:101AD000FB11D282FAD318FC1C1FB8E3F8D5D47BD3 +:101AE00062953EAFB3DAFA4546772722F4A1B927CB +:101AF0000E10F0637466ADF301BED5F391EA39A719 +:101B000040EE7726333F862ADF93605F4588C730F3 +:101B10007E114BA723CEE7436B1EEFA5FC10B01937 +:101B200009F88302C2EF3B08EA95C326A0AF9541AE +:101B3000D3A9D8FE013B952225B08E4B2448577976 +:101B4000D8FDF62AC2EC26A2D0F6317EDC006C1B52 +:101B50002DEFBC883C3854C8DA6D863BDEAE9871F8 +:101B60000BA2E3EAE71B713EE9C6D78FD3C9E39D19 +:101B700044FB9A26D4533D5912EA5CC54C9F74A687 +:101B80001B347ED155D6B41C635A34FFBB4C5B7DED +:101B9000ECF9ACA66A3F156F513D2CE785583DEC3A +:101BA0009E8EF4170EE7C6E8614AFA0B600F7E5965 +:101BB0003DACEAC1F417DA415F36B61CBF8BC2B345 +:101BC000EB7911F7498D533052B521D5897AB3029B +:101BD000A935988DF0A8710B695E9F007895D3BDEB +:101BE0002CEED0CBEEEDD28C3EC147CB77717D068B +:101BF0007F281DEC724ABD20872D56D29E04FECC54 +:101C0000746617AAF345C62DF6095249627F605DD6 +:101C1000FA79FB03EBD2E3F8038F1818DC0A851B73 +:101C2000FCB6D77ABE86E5570557637A4DF04696DF +:101C30004F67E719B537AF827106EB5FBBF6AB6054 +:101C400067EEB5A0FFED93FAD7AEFFA617F043F706 +:101C50001BDA5FF38DE5535DA0771851FFEECA657F +:101C6000F6B1D82AA0FEB0DD6BAEDD4BD3B75C3544 +:101C7000EDE9C0279E1403F0EBA964C6AF6FB9E687 +:101C800060F9E7EF6CF3C07B84644F32466188AD46 +:101C9000F9F742FC1B798EAE97005F123C8F3BCD6B +:101CA0002CBD83C7EDDDC1F1BA81A75DA640714BA4 +:101CB00009C495D2D5C4D0A3D5A810C906E5462C31 +:101CC0001705BA3E182F39507C7B0CFED471AD61DC +:101CD000CABCE5F1FA9BB11CE0C2FE4EB61EB5DDF2 +:101CE00016DE7F0B5F8F353C0EE7EB74D275D96241 +:101CF000C74961E59CCFF47CF2897B761BE0FF2D20 +:101D000097DC9E8EFC32640239799DE7F0312165C3 +:101D10002C728EF96BED6784FE3CD0BB6BC4D05641 +:101D20004A8FC982B4B002ECD01A13C6090C16BB94 +:101D3000ECE0777FC528D99D148E07F8FEFBE752AB +:101D4000FD13F4FD1A13D2F32BC56B1E1399CE6746 +:101D50008D3D6F5E2979667016F8751513DA1B2BA9 +:101D6000AD4A08D615A3DFF07B3BAA374DE5FDE869 +:101D70003A57CE11E5A494387A603B3914AB5F52E0 +:101D8000317108EE25DFE5D9E3734E2F87E50F119A +:101D9000C93C5B88D537A9353215F402F6B332A8B1 +:101DA000D58FF4FAD3AA0ADFAFD2BC808F3E3FE2D0 +:101DB00063B211F962AC7A2521F7313B6ACE8FAD5F +:101DC000DE12B0A7BC2C2E7BCE6B32DA49734F1BD0 +:101DD000116FD50281D0B1EEA081C8749E9D15A669 +:101DE00010DC97EE2C1E7AEE32E0C70AA317FD0135 +:101DF000C583CB66637D25DA172FC314D3B13DF3BA +:101E0000A7DB6CA109707E57FEC6BA3A865E76568D +:101E1000FC6E229C63BB391D5149639B3B358A3F55 +:101E2000C08F1785682BAEEFD09DC9B89FC7BB4543 +:101E3000EEB7A68A06C5B7DDC3F8712EF76BAF7E85 +:101E400040C0F89DD595476B2CB4FDEA0E01F972A0 +:101E5000E566F13DF027AE0C6AF5B2408B1FF585C3 +:101E60004645A7AF717D8E0E6E06FA1DAB3EA7D715 +:101E70004FFE98CEFDD965A42C563F49643FA9FA80 +:101E8000493791FF8C7287CFBFCAC8EEA348F5527D +:101E9000C4EF5CF1C4739751F84E551414003E7EA4 +:101EA000CEFDA63B83BFB5827DBBF38C887C4E8C78 +:101EB000433702DEC44D97A4815C1FB8F3A28CF7B0 +:101EC000619C0C338BD73678BF590D7CF0BC09E987 +:101ED00028D1BAAC41911451BE4F0A0A98AAFB62AC +:101EE0000F2611638CBCB1F3772AEE8A61A12046DC +:101EF000BEA464B0F5393633BBD95D41642FD883B5 +:101F000045057BC09EA50713C67F26E57BCB808E4B +:101F1000D4F6DF15585CB3714E8B92ED05FFB9888E +:101F2000F379E93AE09CCB0F8EC37C41300DD3C2EC +:101F3000A003D3A26036D64F0816627A41301FCB79 +:101F40002F0C4EC27C71B01CD389C1524C2F0ACECB +:101F5000C074123DE7A05D49B006D3C9C12BB07C67 +:101F60004A7029A617079760EA0B36607D697035BD +:101F7000A665C1462C2F0FDE84F98AE0AD98AF0C20 +:101F80006EC4746A7013A6D3826D9856055BB1DD7A +:101F9000F4E03D98BF24F80D4C6704EFC3B43AF861 +:101FA00030D6ABFAC64BF02BD5EB163956492CEE92 +:101FB000C0E703FD6C770239BC3083C9F1FDE972DB +:101FC00065863BDA4EE471E1FA76F333B4EFA80CA0 +:101FD000D67E6B21DAEF856560BFEFA67200E21F47 +:101FE000364C28C077477332D8F99E6452E4ECFC33 +:101FF000A8BDEE98C3DE036CD8B7115352953626B0 +:10200000FF4F45069343BB8D0A81F373770BC1F8ED +:102010008EA4A24101E4446F89A116E4FA3D25A7EC +:102020000680AF1756CA15A0A6DE53623058515E1F +:10203000D554C03AEFCA60EFFEEE49979701DC79BC +:1020400015EE054B697D5EBB01CD594785C900FC86 +:10205000E0A0D3827C53FD2BBDC9DAF3F0F60C551A +:10206000DF1BBA1FFAEFCE2AC2FB52F5FD80B8A9DA +:1020700000EDC7DDE67EC108728E1A368FAAB21F48 +:10208000DA77AE7A0CF8ADA0CBF70B585F9EE22B57 +:1020900087F5DE9EC1FC58F93DDE59497441850F34 +:1020A000C9BF009FEC8450605632CD5FF8B8F20B88 +:1020B0004827F685668DA3E9A47DFDBF00F366720F +:1020C000FFD02C1BCD5F7C981C04F62D1DF4CEB6E2 +:1020D000D37CF931F920B8232B8702B353609FCC0E +:1020E000A1B614BA9EDDEF125F2BCD4F1F560E82A4 +:1020F000188DECBF85B480FEA5EE8BD5DB2303BE27 +:10210000736E93D04FB3DB3894E42819B93FBD0008 +:1021100037C049E900E47E8E3C8CFB905341CA688D +:102120000BD2DBAEEE433ED24B2FE75FBA0F1DB0B2 +:102130000FBDC9520DF8A186E712698F17F1F83A61 +:10214000F8FB7A3D4627F0BB4A77B47CE2127BEC81 +:102150003E08EABB128D9E9A08BFBDFF22F8F565C6 +:10216000307E4884DF7E8063FAB9F9F899281F3FF2 +:10217000955199B8DD1B9C1FF578EE3590C3F4ECB2 +:102180008979176320E00F7A958F3B56BC1EE1E7F3 +:10219000C5FF345E9F38075E5139CD8CBE434C2459 +:1021A0006F603C803B9E9C23E8A7CCDF03FEBEF71C +:1021B000385EB787EFF3C378AA9C33EE6F95E13CA6 +:1021C00052E5DC93E7925F3035FAB76D2190133614 +:1021D000EECFA09450575C01F681807C7092D3FBC7 +:1021E0000CB7FFCF19E877271518F7EFD3FADBEB19 +:1021F00044A906E40E99C1DE752EAE7E451671BF68 +:10220000BC65EC9D0BBBB7113725EF81FDCCA7FA60 +:102210008391D201FDB51FD271259201DE8DAA7185 +:102220002E446AF4C4F29D7ABE47F952A50F27DA0C +:102230008740B7D0BEDC2368E265F03683B6EBFC9E +:102240005A16DE0FA9FD7A6D39D8AFDCE3C071CD27 +:10225000D9EB8B1B4B12D373808FDBDBFE0CE27749 +:102260005C35D31B52DB9D48DFA97302A0F1C7D0B8 +:10227000F52A33D0F5640F7BAFA8CA736A57AF84D1 +:10228000778ABD4E96AA78316797F432F93D36FACF +:102290003FF33F44FF673208CE9B572D0D40FC5261 +:1022A000DE1C227981AFABE12C03F96946BD9C802D +:1022B0003E4CF3A994BC210E90E2B51FFCA58AC147 +:1022C0008EF4265A86E620BD581C12D00BBCFBF7B4 +:1022D0008CC2479D666F29A1AA57C3434575B64C6A +:1022E000886BA7FC44B76EFE4393EBBAC15FE11C59 +:1022F000223CDF0DF55FD6BF41C73FD28EF75ECCE3 +:102300008F00F77E57C6D0E1128FA0BE4F5BE4610D +:102310007CD100EBAE21E43603E5C706D0FFF19E89 +:10232000EF1FF38FE8FD222ABF9D4B6F51E54894C4 +:10233000EFA55295EF81BEA9DC5E0BEB55C74BA410 +:1023400087D93C4C1EDFE139971EE6AC3132F9C427 +:10235000F99CF1E976C2EE4F12C92775BD6B3CA31B +:10236000CB29BBB5E7A14748D4DF6BE57854D799B3 +:10237000E461EF4793EA08DA5376EEF7DD0C7EDF8F +:102380007C7847CBF2F013DFEF1BD2F8DF547FAF3E +:10239000FABE5D8FE77B393E54F902FADA3331F049 +:1023A000106E07DECAE7ECD9EA4B857711CA4BCC31 +:1023B000FFA2C6B1D7C1EF144EC127E03EF7DCCD76 +:1023C000F87D610E096DA52456F7854064BA8E2309 +:1023D0005F8898EAFDBD0B693FD0778E08D690954F +:1023E000B61F28B510B8173C6237707BB43F673C06 +:1023F000E4CB2C783F70A8741AC66FE8E3BAD4F423 +:10240000EA4063DC78373D7EAEBEF69736D89787D4 +:10241000A559D67CB4A7D9FDA8999F1F6ABBFFF424 +:1024200098B9BE15F80FE013FB9AE1765A42DA2507 +:10243000763F4A3C8CFE326D7B9F93E9AF99EB99D6 +:102440003E9C4542AD926D245D576506FE0BE8F655 +:1024500061F5FE713DBB7FECF2B2FBC79AE6ACEAD8 +:10246000023AC0B722F78F8167605E39ADAF14E8DA +:10247000F0E12FF625411CEB67E4C86D68AF94BF0F +:10248000E3F282BFBCF2976EC0C742DDFAD554F5C5 +:10249000FBE9EDE8973DDC8EE67E7E354E36919F7A +:1024A0005FF547AAF634F81B63E14C846F75FE159F +:1024B000941C302EC124A0FC3C024DA7A3FC79CF74 +:1024C000C3CE65D95A01726832C68DBE58518EF797 +:1024D00020C497A69EEB39B1F7ABEA7A68F9847805 +:1024E000F7AE2B12C4A184B9FC5B6162F251D8F83B +:1024F000CB15B00F2B4A2D027B6FC6E87425BBE3CA +:10250000231FF07373A56F1BC61FEBEF513EF03016 +:102510007BFA88A93F47E27E585F1CFA4C849737C4 +:102520008DCAB5809737031649A1E3BD1898964127 +:10253000E2AC5B4D7F0BF401F140994C4E47F60D38 +:102540008CFF38FB7F0CE2874C23EFA922F58D49E5 +:10255000E89FAF077CC5AC3B3F93E149CE64F013E5 +:102560008B520CFEE9AE550F5809D59FB6179DAAA0 +:1025700054EC2027872BF7807CD86C477F477DE37E +:102580006795AD9363F058C5F0B8F2E07609E8B509 +:102590003EBFDDADC4CCA3C7A70C70D17993383D45 +:1025A0007713B928339EDFA66819A38B8349BE7EB3 +:1025B0003ABFF5378565A03FA87E1B9887BDB366F7 +:1025C0007EE6DB24B60E9035B1F45D1FDCA0911BD6 +:1025D0004961818462F3C61EF4D326858D58AEE727 +:1025E0002373A6F6BE4CC577A2FD53F1AD2F57F16C +:1025F0007DAC717B31F811BB92E3EB71B7666AEF8A +:1026000001F4F7F6EA7DB5BEDF523EFEE9C074A4E0 +:10261000AF7AB332612CFCABE2E7E8996D12F08B34 +:1026200015E2014AA2F108F66227C61F1CAD175138 +:102630000F4C9E20E1BBE7BA4C76FEAAE79E7AAF2C +:1026400099E89ED2AEBBEF4C2AB68E7ADFA9EE6334 +:10265000A2FB4DFD3EDD9CA99577917BCD047CA32B +:10266000F24B15A7C773C5695C6D66F197FAF2B9AD +:102670007CBF4E07BE85F723B7561A24A0C39DF42E +:102680003F05F8A6C284715A6F9EB110D02FED9508 +:1026900086EF837FFE58E39BCB66D3FA639526BC17 +:1026A0004FE9A77CBF9EAE673BE7FF883FB85B0C56 +:1026B0004D80F3839EC4B1F7CDC945564D7E61254B +:1026C000F3DFEFBCBF340476583D61F78BDB2BAFF3 +:1026D0004CEDC7563D0BE19DFD2A2FBBB7B4FE7DE7 +:1026E0009B1FF6BBBFF19BF5E8079E6076807C548C +:1026F000E9011F9850BEB24A6C8E8313A65E05EFA7 +:10270000CF8F779B08C64D0BD1FB6E2FD52B57E78C +:1027100057A403DD0D411C23C60D70FF34E1F28187 +:10272000FB93553FBEDEAF9CC89F3C563FB24A2F3D +:102730007ABAE84B401789F639C69FFCD3B872C9FC +:10274000BB4C235F5479A4CA85DF72F88F4D787033 +:1027500021DC731D5B2B72FC3DF8E216F0D77A8DFD +:10276000F8CED6FAF71FCC057A20370A71FDC8FFDC +:10277000CDCF31027105C5513C5F1388C64B023B7A +:10278000373469E325F5E742623935BA1CDA94C972 +:10279000FC42EAB901E783D3C6CE07833D4AF7FF7F +:1027A000E83951DFD8E1532663FA388C632D4CC6E3 +:1027B000EFE5E8F95D2FE7E7EAE46454BE8B249483 +:1027C00016CB9F5EE6778DC87933D6D39F62B0EF84 +:1027D0008224D907FAC8DB2EF9D34C8AEF775CF252 +:1027E0006790EE77C9FF273366FC36138BC3140D51 +:1027F00024F034EAD37E4FACDD959BC5F6ABA386BF +:10280000B51B704FF5FC81A66DEF957A4C74DE8C8C +:102810002C16AF76C83E7A1CF8BD9C7EEE0179344A +:1028200021AAC7EFE4FB49C197C1AFD361F27B6234 +:10283000FD8E67321DECBB57D39F192CA0FBD02611 +:1028400019248182DE460C2857DB655BEDDE12E839 +:102850004750AE74D8E54715AE0F2DB7437FB63E4F +:10286000A3CDF8452CBFE5820DEA8EC2A55F6F6E41 +:1028700016B3378EBBE49C2C9A1E76C9B959B47D29 +:10288000D0A85800DF416B7C3BA5308BCB4DAEE729 +:10289000508B0EEF33715E714CDF792881F9BE2ABF +:1028A0002AF83DB5B6943B2E06BD79ACEF82A6F171 +:1028B000F963DE054DCB8A434F31EF98F17D528DA0 +:1028C000977C1A8245F2F7576A7C2AD5736766A10E +:1028D0009EDBB23C5EDCE7AE73F8D754FF16B5DB87 +:1028E000E76631BBFD72584F4D15C1EFCAA8F6F02F +:1028F0002EC310196D1C8A27BC7F1E03FE96C13C97 +:10290000E694966904DFDF9FDF773256727A8FC1D3 +:10291000DFCAACCAC4F8FBFC9D0B53C16FA07EDFBD +:1029200043DF4E8D3350F35D0EEDFC9D652CBF8E65 +:10293000CF7B8CC743DECDF356DD7728AC75ECFB3F +:10294000296ABC863ACEDD59766C7FA767D6DDB0A2 +:10295000DECE7CF67D854E87F63B0B9764D5607D99 +:10296000908F7F37E703F08F81FEA5FF5EDB6C68F9 +:10297000EF867416A654484D047C9A45312E1EDB12 +:10298000B298FEA4BE6F53DF19ADDE296ADE19A925 +:10299000E7E7EA67099EEF705F0B7C9B28EE2E50FD +:1029A0002CFD0A5C459F911233C42DFEA3E72AE05B +:1029B000739C73E4B9FA7056E45CF59DE7B9BA0705 +:1029C000F9447FAE129FC68FA59EAB43BA7B2635D6 +:1029D000FD19E7DF6E6E6F839C04B90CDF7142F95D +:1029E0006C64F6E8AE14E65705FA83EF3AFC2C4B1C +:1029F0001B9FA3FABB543F97EAF752FD5C91EF99F6 +:102A0000E8FC5D43E6A18E0CBA5FC31309BE13CC8C +:102A100058210D64D0F992E77809F89D3AF3494AB4 +:102A200015D4971A7C70AFE05826759A68DEE125B8 +:102A3000F0421FDE532A763AEE89AC7C84B35B59B0 +:102A40003A002EF1C6F6BFA09E985EED75E2FD4CF1 +:102A5000249E792B7E174685FF154E97A95EE6E7E3 +:102A6000255605FBC91647E90E12DB2EF27DA24161 +:102A70004697CC1F0E9F55437BDDC7FC9D8BC9201D +:102A8000C6BF751AFA50BEFC2163F651D827957F50 +:102A9000E0BB584FC7F87DF5714FC77578D5C73D76 +:102AA000EDE27EBC4E3A1EDEA745FC8F6902AC9774 +:102AB000B66F3739011FDA7122FBA2F34B26F243BE +:102AC00026AF607CAFA7177336A3972197FC17A496 +:102AD000BF3367CF8A53A3EFF8683F02FA4092CB27 +:102AE0008EFEE1242FBB5F2792C0FC4766E6FF33D2 +:102AF0005F40CA5BE15C35DBBA04881F5C63201071 +:102B0000273C9B8F23D713E18FC5884AC2E4B2913B +:102B1000FC51E52791238FCE3B8BA3D242B77E1C7D +:102B2000C5D36CDBF37F15285F661431FF72862BEB +:102B300015E3307625F0F7AB716691B83AE5BE172C +:102B40000F55C7C4D599BA5FD4BE6FE87EF11F791F +:102B5000DF5098DDFDE2FFCBB83A550E1E1303C7D8 +:102B60003651FC2FA7C20BECC0E574C415E807650D +:102B7000F6C8328E67E50B8A676B14CFC74CECBB87 +:102B80001ACBF73F877834CD62A836DD998AE79D66 +:102B90006AF75E65ED990B7AC249F3F01498F7E491 +:102BA000B36FE482FEF9CE5DA7ED108C71DC386C5A +:102BB00087F20F37BF668738C477368B788F7E1DD4 +:102BC000B72F566EF9FB54B8079AC3E96977B63C3C +:102BD000233B466F2041379EE33786E8CA62F4F212 +:102BE0009B1E1FC7898DDBAB7D699ABC7A7EDF6C2B +:102BF000617EEE9B7E3460CEA6EBBFF17107DADF1B +:102C00001FC2431F8AF70FF7E6F682FCFF5A36E32E +:102C1000EBDDD9FEBAEC4AB62EB0BF8FEFB7907E8F +:102C2000DCA7411361F6789D90CEE24AE147BFAE42 +:102C30005F1D1887E3AE7D809D3B8D14B7418AC729 +:102C4000C0FE1BF17CD1AF7BED3B7DBFCAA2EB5A2E +:102C5000BB9D7D4F02DA6FA6FB130832FF991E2E33 +:102C6000FDF9B3BA6F09DAA3AB6E63F75EABBE23AF +:102C700084E0924D7F1EB51D9E8DE7D7DA1E6DF95B +:102C80000DFBEFC1796ED0BD97D59F4FCDD9FC7CA0 +:102C90009A4AA69DA5F2ACCD56903ADAFBCC0FB776 +:102CA0003066FCD3162BA627B64898CE804B018AF7 +:102CB000DF9BF60DFC2A1BD979702A9CEB0B9F9B9E +:102CC0006DFD0A89FA3F8CBD4BFB1FF6A2BF8EB08B +:102CD000781319ED9E151CEF26C2FC1D8F72FF871D +:102CE00028E9FDFEAF2C83B809C5C6BE4FA4FA4142 +:102CF0005600BC3171DE2BCEE107F9BA0AF7340A6F +:102D000037DDEA533666FF9FEB5C4E047FA27E37C9 +:102D10008BEC1E475FAEF2C50C4E9F6B1E59D299CD +:102D200045F1D2F6EC07E3F17B4B3CAE90DFB912F4 +:102D300091DF8F88441747A890D7490CDDEAE9F264 +:102D400006F83830E8AD36D6CF4AACADF88E42A59D +:102D5000C7FD3B116F2ABDC04DB201EEBE48BFC7D3 +:102D60005075EE771694EE34F94F4C43E3412EDC68 +:102D7000A0FB3EC527427CBB28945DC0E0F7CAF3A8 +:102D8000E0FC5B4BFC9D12C2CFDEC5DDB87FDB22D1 +:102D9000E03BE4473ACECD3F7DF2272087D6FDFBCE +:102DA000032920873E32F6A4C37CEB1FED4801B90E +:102DB000FDA1514981FE1F85983CD2CF7786E31D46 +:102DC000FC2E0295931BE0572FCA0D19DECDDDF8BE +:102DD000A625D44AE7697EDCD20FEF8337EC65780D +:102DE000A4F9F7587E1BE2AB799F96DFD6FDE08110 +:102DF000742F7BBF97CDF1970DA278C32326F4CB18 +:102E00006E785D84CFBA9166328CF0E9FBC33AC22A +:102E100074DF9AFBC44673EAC87AAA2199819F9A03 +:102E2000B95EDAACD33F9B12F8753ED6D139C50BEB +:102E30007E1F45A1EB41F75388C9E1B6272C32DC50 +:102E40003B7DF4DB8C5EF0BB9C78E48514A1244AC6 +:102E5000F7EAF7D14EF4158E2A1F3EE1FC1191F3EB +:102E6000FC3CF1EEA30B843BE7FD2C5D6FEA4F9930 +:102E700041F1B2BED7E45368F1FA2745194C4042FC +:102E8000F10F7EBC9B9EFCE5D14BE87A6E7ADAE4CA +:102E9000AA63E0D8403EABFBD50C745E16DD9F758F +:102EA0003FFEA5D93B9995C33B00759F6E7A7AC0CA +:102EB0000C7E7A3D3E67F70D98199FE9F6ABEFBDA2 +:102EC0007970FEB63DF1B919E4EE47070492913FDF +:102ED000B27FD3A32FA4403B75BF22FBA76B77E241 +:102EE00011766E9CD82FA0BE9468FF8E80D0AC4423 +:102EF000FA7EEAE774DEA6DF5A7C0077D353B7A6E2 +:102F0000C0FA3F30B6303AFF6E473A9CB74D26259F +:102F10005DC2949537EDBE1DE9EF86576EC7F70E7B +:102F2000708300FC4BE1CB04B8D67E6739C2753D97 +:102F30000920FD357D97BDA7FBCC486A9F8EB39FC6 +:102F4000B7E430BDF9833D16341A3E804B3F90BB49 +:102F5000AF8A21168FB611F50CF59D344A629AFF9F +:102F6000CCCAF6A736478D736372AC99B76A7E6494 +:102F70001BCAB13FE5CA19C0EF140F1A7926BE3239 +:102F80003783CB3F8C8FC67E5444CC8672683F68B3 +:102F90009293A668FA71BF179BFF363E3F5D77B2EA +:102FA00070314DD323711883B08E0D02EB0374037F +:102FB00071C0210E6784DF1FD9CEF687F3FBA7AF60 +:102FC0003339B221B4A416E5C0A0A93F03DA8506BF +:102FD000960928072CD177E0B17CFC8889F3B1B63B +:102FE0009EAECB28C4E2F380807EEFEBEFA7ED62CC +:102FF000F48DE6BD4C1E37C33B734D9C35E343F562 +:103000001EE106DD3D8E9AEAE5C0FA1C7E3FC3E56F +:1030100040E41EE23BEE51FDFEAABEB5DE147AECA2 +:10302000DBC0AF6F5A509F59FFA409E3E13FFED1C7 +:10303000C1A35FA1F4FD719FCAA75AB9AAE7D3A69D +:10304000679693787CFAB1CB4FE2F2292D8FCBA70C +:103050002EF69DA77F9A5C8DE05BCB97372490ABD3 +:103060000FEAF0F91929499D41B37FFAB79BF23075 +:103070002E428757159F7AF9589AE345FCEAE523D3 +:10308000FD799DC4E051C59F4A9FEB7E7833CE13F6 +:10309000A15B953ED5732A429F7A78B578D4D7370D +:1030A000C0B7002AA3FB6EDA4AED6F88FB7B56C4DB +:1030B000776C27BDC329F02EA22389F91B4E4A3C09 +:1030C000EF60F961B7B913E4855A3E9CC4DEBF9C3A +:1030D000F40FA73862ECB3F7F68B29E0571F0A31DB +:1030E000BB5D4F7FE091453B94DBF57345DBF860BA +:1030F00005E87F8565F0EEE654BB89E727B0BFB3EE +:10310000C0E355FE40FC4767C03AD5776B8A6CCC6C +:10311000A4785CCD40244DCFB5A580BEBC7AFF4DD0 +:10312000F85DAE35DD5AF8AFB72D43FFCCF5F76B40 +:10313000DF61AE232D66D0A39ABEA32F67F27C9DDC +:103140008E6E02DC4FA9A79B7754BA2925A5CCCE59 +:10315000657126B770B935572C595C4FF17DF2B0C7 +:1031600088F747A7F68BA413E0FC11D3FF89C2E2CE +:10317000129AC99039D6BF7902E8EAC2C4E7F28947 +:10318000FF7867EA2690033F796BCAC3343DF19319 +:10319000372FF84FC8FFF48DF16F9191ED671FF84D +:1031A000EB75209F4E1EB0E0BBD893077E3D7E138B +:1031B000E47F6EF1C13A4F6EB5E03DA772C08EE775 +:1031C000F5C95CA6DFB53DFBF9942194B7ECFDB9D8 +:1031D0003597DD8F9CDAFFB777E17BA0A7F65BF030 +:1031E0007BA0CDDC9E6AFE7952081E459E7CF6735C +:1031F000B4CBFE59F06CE0F79027EDA41EE37A8C77 +:10320000C3E361FE0D072EC5F70A37EF1D30C3BBC0 +:1032100091D9FFF5F729205F4E3EC3F404AABFEE13 +:103220000695392DF7AB5F37D1FDFB04743A6AE799 +:10323000FF28F7A78BE01E468F173AEE279B008EDC +:10324000FF1A87F139142F4D201713E1E3A27F51A4 +:103250007C9C340DCECBA6F39F7C5A2807F91EC563 +:103260008B80FBBC7EBF1DE39328FCACFCC0E75306 +:10327000C06E3E17BCB5B92C7EE87F0BBCD7FF8B68 +:10328000C2ABD2FB2770DE548EA4FB91FCFED33B75 +:1032900030FF94DD87EB1D23BF77FE2FA3EF47FEA2 +:1032A00045E13DF77E3FC7F7DB2E81BD77F2D9BF01 +:1032B0008F27E701F7C1FF4FE93CA2D7187CD60A58 +:1032C000BABEAFB81FB1833ED0A6FE9D04E23B0C50 +:1032D000A130CBE542FE2E87D90D8B04763E7F923E +:1032E000CBFC07EA7DF122D7F5A8472C9277F2773D +:1032F0007D06BC4F1974553DB6238E9DB4581651AA +:103300005F6B93DFCF8138BFB62A8B0FEC425A8EAA +:103310007ADBF200D3EF96CB57B0EFABBA0ED7C340 +:10332000FBD6C5555A3BE22B3ABBE0EA7A6DFD5518 +:10333000648F1BFCF4573599484800FFB0B6FD4B2D +:10334000B9ECFB585793960EE66F396FBCA05DC77A +:10335000DF4C92ECF15ABC8CC403C7236B3E026F66 +:103360009600B30B2D44FF7DDB5B34F8D3E38D7007 +:103370003B11BF856888E2D722B3F7B431E321DC83 +:10338000117C727C9F2F5EF5FB732E3CFF25019E06 +:10339000A3A9F63B0C84EB838B22FAA00DF9E9E597 +:1033A0004704F43BBF5CB5BA1BBEB3F9F28F04D43B +:1033B000C33EAB2E27560AF74B26B20FEF5964D9FE +:1033C0002B4D657F5F01EA85AA5FA39F3FB5CAA029 +:1033D000B12F1D72B206AEB45AA726EFF66769DAAE +:1033E00067D41768EA33031769EAB39BCA34F9DC78 +:1033F000964B34EDF382B334F97C6581A67D61D7B9 +:10340000959AFC849EAF68DA5FF8D02A4DFDC4D04F +:103410003A4DFDA4C76FD1E427F7DDA9697FF1BE5E +:10342000AD9AFAD2FE1D9AFAF2C3BB34F9CAC16F43 +:103430006BDA4F3BB647533F7DE8DF34F5333E7CD4 +:103440004693BF74F8E79AF697857FA1C9D790177E +:1034500034ED675B5FD3E4E74A6F69DA5FEE795F6B +:10346000533FDFFBB1A65EDDFF2B8A4F6BCAE18EB7 +:1034700041990AF609FB59E8FB9B661C23F1A37FDF +:10348000D84C5A30B582DFB510FFEE1CA636B8EF27 +:103490002C84773D81DBC703BDEE563A81B85E9A36 +:1034A000FEF97890EB2F572FD5C433E2778DBD34DA +:1034B00085BF4F91128D3348098BA4BF9CD26158B0 +:1034C000C0540A8F23FD69940EC349983AC36958C2 +:1034D0009E167660EA0A6763B93B9C89697AB810E0 +:1034E000D38C703EA69EF0244C33C31331CD0A9783 +:1034F00063BFEC7029A639E119589E1B9E8EE9F82E +:10350000F06C2CCF0BD760EA0D5F81697E783EA608 +:1035100005E1A5D8AE30BC04D3A27003964F085F76 +:1035200083E905E1D5985E186EC4B4387C13A61300 +:10353000C337627A51F856EC3729BC11D392F02682 +:103540002C9F1CFE1AA653C26D985E1C6EC5D41724 +:10355000BE07DB9586B7635A16FE06969787EFC3BC +:10356000B422FC30965786BF85E9D4F0F7319D161A +:10357000EEC5B42AFC434CA7879FC0F492F08FB1EC +:10358000DF8CF0D3985687FF13CB2F0DFF0CD39908 +:10359000E183587E5978005339FC0296D7849FC343 +:1035A0007456F8352C9F1D7E05D339E1B7B07C6E7B +:1035B000F84D4CE785DFC7F4F2F07B98D6863FC61E +:1035C000747EF8234C17844F63BF2BC27FC1B42E87 +:1035D000FC372C5F18FE2BA611BBBE3AE177680CB6 +:1035E00067C14F6D738EF17B7A0F69EE8DBE097FD7 +:1035F000648DCAC5C59BD93BFDCE9AD373505FDDA0 +:1036000068F1F2F7B33AB97A06FFAE057C8697C542 +:10361000D5539AA4F5D772FA7DB9EAA01BF4A0CECF +:10362000B2A1F5E0D7D8993FB402D2E3E399BFF055 +:10363000284FDF19CFEE97F34B989C5FB17102FAD8 +:10364000C7896B6C70E48D67FDD4F6ED853C6F1B0C +:103650001E8FEFF3C638CE58DB9D2BDEE9D0F8C0C5 +:10366000A9F1E8FFD1FF5DA231F7FF02E5C497EFB2 +:103670006FC81BA5FF36D71DFE46C81A65E342BAC0 +:103680005F0D7CBF1A5A6E40FF98FAFDF821FEFDCF +:1036900078CB7AADBFC622EDC5EFEB37DCC6E26C66 +:1036A000F5F5F42705DE4135E418F0BB6134C57645 +:1036B0000DBA7B5442FAF0FB230DFC7BECFAFA5571 +:1036C00009FC86B9793A3F2CA7CB06DE66DB7A1176 +:1036D000EF8B4EBFCEFE0ED841B799807E3B74B3C0 +:1036E00005E99A7431BFE25BEE9FE47A63EE671AF4 +:1036F000A95C9529DF1DBCF9AB1EA0EB6D1D4F9B8E +:10370000E07E6C2877237E3C214A0721162F944BBC +:10371000F0BEA441D988DFEF27C52407F5398E4FC5 +:1037200093C1DB077824E3ADF85D73D1A08DEBFE88 +:103730005E1EF3EFABE971887F007FF606F6AE659B +:103740009BB9A518FC7F26DE8FD6AC877D5ED37D26 +:103750006101E883B5466285F7A231FA5932E2D5B4 +:10376000481112A3CFE9F5B72BF21C9CFFD977B211 +:10377000DEE7DF9F851F415D7F21D28719DE915AE9 +:103780005C56A607F62CB909F4CDE391EF82509868 +:10379000E83C0DB04F741F1A368F9327D27A7F1EE4 +:1037A000E36B4A174AAC5FD024303A2537337FBDEC +:1037B0000A8FA5DB52C0DEADF2F9A11DA5AFBE3C5C +:1037C000A60FBF2F70BCB4F27E3C3E21D0ED086145 +:1037D0005C90CB88EB33E5CAD741FC9B45A1EB0459 +:1037E0003BC2387C7B23C4B9290EF6FDAC76611E42 +:1037F000C8234B77EB46A887EF091B9DF877528CBF +:10380000668AC74622CDF3C0FABAD9BB5D0D7C40AB +:10381000EFDD02C277075F173D01AE83A75BAB15F3 +:10382000F6AE8CD203CEDF71975D66EB137AE19C26 +:1038300057F7BB81CFDBD0F3D3AF823E19E0717D68 +:103840000D7CFE95FCDDA11E6F0DA05750FCF646C9 +:10385000E77DF78D8A91F312A3CFBC647274DD917A +:10386000FDDF6CC7FB1E15EE0EC15FDF08F8DC69DB +:1038700041382D7C3D2A1E7E98E764F4DD7AF9F804 +:103880005571D683BEE2183AD1D397C9C0F7793CB7 +:10389000FB7BB52ADDAB74F36D4EEF6AFAB3085CBF +:1038A00031F75122944B1A3ABD9C68EFAB2ECF6191 +:1038B000EF278FF3B8A107BFF7F662F02F4ECDE3E5 +:1038C000F2DFDB528C71B311FE2132F205A7578B68 +:1038D000CD2A4FA4703FC6E9558F17BDFCDF1E5996 +:1038E000270998A772B96980722F9637745B10CF39 +:1038F000EAFEFE2EF23D5D793CEE8BC4F1C6E9E9AD +:103900007A3EEFF5D01FE727F8F75394FB2CC8FF5A +:10391000EA7EE8F1ABCAF177C1AEA4E37F138AA8CF +:103920003C3B98DA2CC07E1DE6EB4CE7EF36072CCB +:103930002B85C618B9F32EC7BB3BC1BBCE77F9BAEE +:10394000645E0FF16B67A7A21DAB89077E33CFA022 +:10395000898B9F6737E07DD615DF8C1FAF313B9F8A +:103960008D7BC5BD7D9FBE0AF4D16046B9F860ABC2 +:10397000F6EF98BDC9D7BF98B7272BC6762EBF1BC9 +:103980001493408FEE09FFE987FF4EC777FACD28E1 +:10399000FF9D64E887FF0EF7E2F5ECEFE61D4C3D76 +:1039A0008979CBB2027CB7DB239721DE0E7A05CD75 +:1039B0007BA507720CB570BF7B307571E61A0ACF14 +:1039C000FD4BAE17D6C4AC33DD988AF17F0396C5A4 +:1039D000994DBCBE89D61FB8F28F93E05C1968F090 +:1039E000ED87384C7715FB8E705A158B174CA92232 +:1039F00049D01EE66D8A192F6D19AB1F583A2F73E7 +:103A00002DEDD7B36CEB74E8D723CFCA5CEB82FA09 +:103A1000AD55B05EB57D4A1D993FC105719E062228 +:103A2000D072A7B76C338846A7F15E2B7CBFE3FF4B +:103A300002DA47FA7F008000000000001F8B0800B8 +:103A400000000000000BB57C0B7C54C5D5F8DCBD34 +:103A50007B7737C926D93C0912C86EDE81004B78C6 +:103A60000588BA10C050082E10309820CB2B2004A7 +:103A700012F0016DED7F170292DA540244C516FD73 +:103A80002F882D5A5B83528B2DC206D486FA20B61E +:103A9000D8E2A74254A48854224A8DD596EF9C338D +:103AA00033D9BD9B2050FDD61F4EE6CEEBCC79CF4F +:103AB000B9732E2B62CE2C3B632DE634C56365ECC7 +:103AC00012FE6E64EC33BBC2D870C65C25CCE587B1 +:103AD000E7F57656D21CD2BECC61A0F69D0E1363DC +:103AE000498C1D8A4ABB276B18639632834D6550FB +:103AF000C23F06755662F23FEE606CABD23E944117 +:103B000043B16A2BC2F2BC18CF72592A4B664C6380 +:103B1000FCA7591ADAD418AC1B7DED3409B35C024A +:103B200050989131C308D12F9DB1267C96C898AF8B +:103B300037A3F943FAB34B506F35F1F53727D9FD69 +:103B4000EBA06F36EE2789B72B723D80432B67AE13 +:103B50008841D04FCE371BE6A3F53CCAB468001F9E +:103B6000D635C6633FF73206FD1E8047CDF938D8FB +:103B7000D37BDAC0203E460B7C3D90EA99EDC676B9 +:103B8000A34DC1F6AD8A4D8987FA10B17E1CA014F1 +:103B9000F1C8984D710F0CF68395AB11DED84293A6 +:103BA000FD3EE87ABFC2CAF93A1C5E93D837337635 +:103BB00030EC6F2A33B822004FA622800BCBF1BE27 +:103BC00095586EC17130BF9612820F16DCC754BB78 +:103BD00083E07870B689F6BBB9B7CDAF2A7C3FB821 +:103BE000BE36DE64B80FBAD8988FF0B3B9AF6DB6F1 +:103BF0001BE135FA18E263AB84CBC8083F84C610DA +:103C0000BA68252682CBE2AA651EE8A7A5025C83D6 +:103C1000107FCFAD566242C6031E4CB82F5C1B58B6 +:103C2000C134C5E4CA83F6328127D378E83FA8FBC4 +:103C30003E18F02A0BA55F18DD6FBA427DD33453CE +:103C40006F5C2F0EF79B017850EC6F2D44BA033F49 +:103C50003E0E7DEACB0C8497FBF30D7E06FDD9FA70 +:103C600094173361BD68B17674EDE229B89F13856E +:103C7000E36C63A15F532E732A7C7A2B1B11E463E0 +:103C8000F83518A16E96E386ADCC46FAE43BD269CE +:103C90007F9B66BE5F9F01E3AD430C4EECD2E47E9A +:103CA0003F1AE5EFA0812D41FA5DFFB9BF2E06DA7C +:103CB00013A6D887A03CC9E7A34E05D458781E5F49 +:103CC000622BC0E7634A1B6152ACFB08DF9BC6FE58 +:103CD000B57424D03126DFE8C4751F5402F52AD408 +:103CE0007D9318ED2F7E7CC0560CE3E352F9BAAEFB +:103CF000F181929158BF53650AF48F1B1F689B0A8C +:103D0000FD5DE78C0ACEDF849DAEA3FDF850A8EBE5 +:103D100034599FE85E5284780C58805958BCE37B34 +:103D20006EE328D88FC2DB1FF5DFE3F6E5637B6324 +:103D300025E293659A6D28A788474B3CD18D954322 +:103D40003907F8D204E5C3768E9768230B180A80EA +:103D500025A22A53101FA5099E5AE4BF1264B90276 +:103D60006AB724507F2E6F4CAD7462BF06C6F51340 +:103D7000ACEF0ED553F10ECE4F5FCAFE6C15433A31 +:103D8000DD257822FAD0B4DE38FF0363B9DCC871D0 +:103D9000D66126DC5917DF45E6EBEB964C7D5D4B93 +:103DA000D5D7FB89750FC75E62085FAC90FB07052E +:103DB000FFCB759EB71BA89F2C0F9AEC7722BE0EE7 +:103DC0004646339F8275467ACCF78991F41C63CEC0 +:103DD000A219217A6792D0BF87636B14A47F32AE99 +:103DE00003E589CEB33F453E4874A517104CA2FFAA +:103DF00061818744018F7C2ECB93691C0E89F7F07B +:103E0000F6B7847CD679D7B00FB282CF5531DF8830 +:103E1000E3EEE26898DC9C682F50EDC1F6A362DD0A +:103E2000C199AEA3F6503D783842714487CECFD7C2 +:103E3000B7593D2E17EA89CAE98CF5EE0E872C1981 +:103E40005B47F39E107A39BC7D9483CFE71278618B +:103E50005FC373A07F1D0ECD08F6FBC4CEED91AC01 +:103E60004F8C36B8FDD07FF243ACB6A7796709FA1C +:103E70004EDED4FCF99FD1CE55989C8FA3BCADD516 +:103E8000F3D12762DF150EC17F95C0BCA3BE693F89 +:103E90003E9AB7586D1F9A8E729321F4923D5D99A8 +:103EA0001702C77C613F8DA80FB1B4197D66D02F72 +:103EB00046ABF13D2CD53283CF0C7A4A2D32BDA7CB +:103EC00062597EEFA768572D965A8622FA88E251EA +:103ED0001D084FA3C188F2102194966A75911EB9EE +:103EE0009C9C84C3FB6DE504E40E8C27CACBAC46D6 +:103EF000D417FFC53E521D68D71B601FC9DDF721CF +:103F0000F5D197F69B697ED017B19E1EF621CB3571 +:103F1000EF7C3AF0C510F8B21DD6C4D303E08F9100 +:103F20006CE425F5CAE3BFF0760C7C11E4E229A429 +:103F30000BC2F58ED580784C1073BE537AC8A6009C +:103F40005D3F7382E2433B6FE3F2DDB046F5FB4831 +:103F5000BE5D11EE1079B074AACC95003AB253A1AF +:103F6000F207763BCD6BB137925E31A570BD7F38DD +:103F7000D64BA559F039FA73A1FC22F93BEE327207 +:103F8000FFAE68FF44C05D62F69493DDAF2CD0C9EC +:103F9000DF5F847E08E757699F0E743EF3CA20D81E +:103FA0005F7239B75BCF0B7865FFE4726711C20DA2 +:103FB00072A886E2656229C85B4FFA268DCBD95B71 +:103FC000699CCF255CE1FDCE84C12FE78F91F38FF3 +:103FD000EA797E299F72DC89CED1C3D2497F31B282 +:103FE000DBF5F6553E0DED6D2A90DE8EFCCBFDE146 +:103FF000E28C7596C87C2E974BAD2887661A2FE504 +:10400000F106B567BDC1D239FE5A6EB4EFEF00BA02 +:1040100027D9C17FB0A3BFEC1EABA11E31C6921E33 +:1040200001BF3805E1DFC0381C600FEDF3609DAFC4 +:1040300084DC37093F2FE83766A7A3DF18E20F9922 +:10404000D0DF09F79BC3FDA51F3BE2845FEC66E868 +:104050008F86FB9DD2CF927EA7F497BBFC62E17F57 +:10406000E24F1B11F4534D53783FE987D7F765FEB4 +:1040700075B05EBDC22232D19ECD343851AF31A36E +:10408000ABF722A89B8B929DF7D983F39A52B9BFC5 +:10409000FD5DFB7F5B14EEF779902F491E9C5487E2 +:1040A0005F6F94BB6463ACCB4FF27373EF85503694 +:1040B0004DAB5216727EBD847E6E9280A1A5C2C7A2 +:1040C000EC563CEFD815B45309E29C14FFB57AE4E2 +:1040D00046E09707CAC665E17E0FA05CA07F5666E2 +:1040E00050B0BFCD652BE2FA95AF77E05F91BDABE5 +:1040F00042F8E486E2D303D01FDD32CA6443BEB87F +:104100005FE1F8F37D1949E792E231237ADB43F866 +:10411000F8B4E08707CA3D2EF040D9FDA39295F987 +:1041200021F37D26ECD4A66955E4F71E8ADA447A99 +:10413000A2EB7CB65EA179C3F9F498186711F86810 +:104140009A6988B040D9E81AA72CC9C7F6085AB7A7 +:10415000D118ABE0BA1617A37E5B27D88A505ECC85 +:10416000EB579297087AC8B418DAFFE288A4F9CC22 +:104170003679FE61E484345E9FBC03CF1B72DD138D +:10418000125E8571FF5C937CEE9E9405FD1F4CCA08 +:104190002C403ED9747DF6C38827EDFF0D243F43A4 +:1041A0008E1B94E6F1D801AE93E3661D5F08A3DE93 +:1041B000579CFE050AD29BCBF7BB36665460DFEFF7 +:1041C00082F25DABE0FC6E7716CACD0DFFFCED42CE +:1041D0007B0FE33518EF088E57D3DC67D0DE6C2DEC +:1041E0009D45FEE903E5CE8717C07CA64213B1E6E4 +:1041F000FDA3F8B92A6E4AB65F0DD9D70BC20FF9E5 +:10420000CCC1F5C3A669A753901E071D9C0F1B9137 +:104210002F51CEC4B9F0FE51231E5E80F39473BDBE +:1042200023FDBAA6692617D26DD3ECEC9D786E43B8 +:104230007ACEB7E2FC7CFF071D1CCE075C17521636 +:10424000213C8A93E695EB48FE6F84732996B1482A +:10425000DF10FE7E4090E650542CEDC35298BC0314 +:10426000F75123E00778787F66BBA703E1739B864D +:10427000233D504E16117CFF24BCB4547888DF9344 +:10428000857CC44F11FC566EF2673942E5647A268C +:10429000C909C88187E4A480C649786FF86A748B1D +:1042A00011E5418BA573968C235CAD1F7592240D8F +:1042B0008E1FE9EEB4F424D23783E8DC7D4F028D03 +:1042C000AF34B464D5C27A95EB0254868F2F012E99 +:1042D0006EA3F3AF3319F99CA5727B7E87D0299F1B +:1042E000350C8FC5F3972786F7538C9E91582FF97D +:1042F000CF829126B421FF13CDD06F9F93C1E64E9C +:1043000087E773150ECF9CBA492578BE1D99CEED6F +:10431000CF512F103887B137BC16E60253F217AFD2 +:104320008DEA6F7A53A8FE37AF9DCAB7BCB9549EC9 +:1043300032717B3B2781CD75737A98509F5C9FCEFD +:10434000F5C1F5E9F2BC73670A581280E72FC30D77 +:10435000E06B24FAD2A64DE8CB58BBC6F5FCCD2EB7 +:10436000156D4D977E2D2F8B12CA81D7E7B9C7E8FF +:10437000DA59EED0603D9D0AE2C7F9F58E1D687FDF +:10438000664F49D0F59F55DF47572F4BE7749D5631 +:1043900092A17B7E6BE5005D7D5E27C8112CC52C4C +:1043A0009184EF3B2D5CEF8287694061B8C3C6FB07 +:1043B000DEB1F2A6D8D5B0FE1D6FA8D41E4E87532D +:1043C00026AE677C7F55F9F9099E235D2E1EEFCB43 +:1043D00010DE92FFC0B917E9F4A499F4E0826D0AE7 +:1043E000F3C1165887EF361C77E70EB313FB2DDCAD +:1043F000A6320FC2834E1BAC77F68DAC9DF7115DD4 +:104400007D8F62BF0EE8B7139ACE68CC6703D65C87 +:10441000D02EE6510AFA20FECFC431571CB8521FE5 +:1044200045BC93BD1AE0FC4769639501ED8EFA6ABD +:104430009201C6FFE31995A19CDDBEF2CD1136C0F5 +:10444000EBD2979BFF5A08F39D6A54990DD6FB78DF +:10445000B779078FD3B87AA11D0EEED33F08F93292 +:104460002DD5FDC374C0EBD92AFF201BF2C33D49F3 +:10447000C4DFDDF101FB477B827C897AF1EE688B3A +:1044800002A2BE4073260F213EE2E7291F1BD69BE6 +:104490001542FF06AD04F5FA2923D03911E1C9D838 +:1044A000E123389E21BE9A6FB49B42D79BDFA09236 +:1044B0001D00629828AEB559F580EF0CBF463E6FDF +:1044C000BDE261BDBAD311CEB5BD56C3FC1B5FD7EB +:1044D000D87D50BB0DD7E841BE3F01D9F19883F597 +:1044E000A52FA8E4D7B161F64D45B0AFA9BB8A4965 +:1044F0001FB1143EFFE7F1926FD6D3FA175CD08458 +:10450000F4DF15EDC77D9C333C73C2087430193D50 +:104510008FA37E5832D5F728063ECEEFFFE0FE315E +:10452000D0EFECAF35274EDFC05CBF4CE7C69FE451 +:104530006CBE51D8B1354924CF4B9F8C2039F867D8 +:10454000DFFE3B42F57E509FACE5F228FA238486DD +:10455000422C02C94A0AD9978936C05B056BDE40F6 +:10456000F8647EEA6F4720017FB66A28016F1F0C4E +:104570008FBE8F0D067A199827D48FFF40C8F30B92 +:10458000E98A4EEFFD5BE801E8CFF5EF016EEF81C0 +:10459000C0C730AEB58471FCD4B0864FF17CF55AFB +:1045A0003A8FC32C11712EFA011E9601FFA11C54E3 +:1045B000D9E2EE6C837AF5EE08A71FC645667079DE +:1045C00086396C28A7B78B218B99BFA100D65BBE1B +:1045D0005B7306683BDA29F4C32CE090A2DE380B4B +:1045E0000E5C613CCEA7D0FCD58D8ADF0F7FC6164E +:1045F000D59A10CE657B1596C0036B16A4E32231C5 +:10460000EF52E34FDB10CEA5B9CA7B782E64BB61B5 +:10461000DE107DB4BC99AF23F5480D3306DB812E47 +:104620008B447C7911EBF20B158A2F376A3EEC67CD +:104630006196B5388F3B2A9AE05A0A70991DA1F00D +:10464000ABEC12E0B2CAE37F792AE1011C0CD61D63 +:104650008E09892B691F4B711F8EEE7085EFEB6AF7 +:10466000E1AC72B6109F84C31B4207BB9E0E6DF770 +:10467000223F55F938FDABF6039E61FE0F6B3566A0 +:104680008A253E68CB1C11E483C5CC3D15F5E1E2DB +:104690002695051C41BE90FC70FB1EBF09EDEFC7BF +:1046A000AC31C60A7253BD6DCFAC51386EFB1B26C0 +:1046B000B4DF95F1812C431CA2EEDECD257D83FC79 +:1046C00079BB5FBFFF65BBF5F5EF0A3FB80B8CBB4D +:1046D000D238C0CBA25D2A9D4342FAD17869DF99D6 +:1046E000DA60B2A03EF02B4ED4AF4BE0FC9150709C +:1046F000EDF04A3CFD5FC31D1E9F189D119D781A69 +:104700004C36733227C6272ED4CE8C0D60A3F06FA3 +:104710002E179FE8DA7F987D7D47037F02E8F8B97E +:10472000D1151B4F7A3CDCDE8EEC85F646EAE72A93 +:10473000612FE5FC8BD04E42FDF4B66763D00FFCD1 +:10474000B0E9D9642C17A31DCA0FDAA1BB1704FA6C +:10475000A2DDBEFB77114E64CDCA47CC0123D4CF76 +:10476000ED3553DC3D1CEEC37D3CE519C8DFC29E30 +:104770009E55DE186143FB29F4E995FCC06FBBCF61 +:10478000F9B8CFA1C17917887DBE5FCFF7F7410394 +:10479000DFEFC26EFB043F02F7F998D989AAFC4CFF +:1047A0004480ECFD993D2AAB0BF117A47F20F777ED +:1047B00091353E1A80F6E5ABFE76C208FC707B763A +:1047C000DB2094C7CACD66F2076EFF6D34E1E9AC19 +:1047D00032B617CAE3B946B3CB8AF8DB1D41CF83A3 +:1047E0007074F907DE8C50FFE02AF1B682B9294EC9 +:1047F000BA62FF1F8FA3BFAAB86028C0BBC2620DF8 +:1048000010BFEFD3CE85EA3DC5CE5D7333735A2C0E +:10481000489F5466277F9B55DA308EA6300FBB84A5 +:10482000FC0A8EF869A045158E03F8FF99F5E96D2D +:10483000AB480E3AB2D1BED64406B45EE857ED514D +:104840009C3B51DEEE1C1B83A1428DD5123C8F6434 +:10485000703BA7B85C6C0DE0CD0C7345C2BA7EA16D +:104860000715BB8D42576C3BAC1F1D843BFCF954B4 +:10487000640DB48B56438FE7E0A319DC7E2E570DF1 +:10488000E467579BB8BF7D5EC45F7E2DE0F8750678 +:104890003F1F3D9B611341828E4791EE6FBC60B616 +:1048A000A1DD6C33B17DE867BDA1B9B6FD08E83381 +:1048B00035D3F34C06F4731BAC7350DED7450DD2E1 +:1048C000507FAE8FAB4AC3F236D6A6215DA7164EF7 +:1048D000B3E3F9E744B2C5A992DE02828C403F817E +:1048E000F3F1EB9AB51EE73D81B8837D5514FEF1D7 +:1048F0004BA4D309389E0F83F54FF436F9EB609C37 +:10490000EF0533F90F1B23992F02F79F184BF1D2B4 +:104910005B859E9A33DEECC2384EC5F88D6E2C61F5 +:104920003E1F037C555A3A360C8175D61AB89D5EE7 +:104930001BCFFCC8B76C7DFB70C4DF60B6DE86742D +:1049400084DDEFBD94F04DFC6464A7259FC0BEAA32 +:10495000C7318AFB12A315127E75F56A136FFFF03B +:10496000B1B3D39A8AA08E670DE48749AA7F27EC5A +:10497000E7665811E97933CC8BFCC6506846707AEB +:10498000E26F3AFC2B827D4E37329F219ECA7A2BF2 +:1049900094330B592016F61738C21484078F9208E7 +:1049A000DF2D01432007F076B331D082F83BAEB261 +:1049B0000DE8EA4F670E6D15D0A37ADDD5C17BE90E +:1049C000B18B1C5E037F8FD8F17DC58FE782DB8CB6 +:1049D000EC4515E0A989B7FBE8F94ACED7F0BC3E13 +:1049E000A600FB2BC45715A024909F91BEC4A7D846 +:1049F0007944904ED0DF1209CFFF9DE1E0EF15041E +:104A0000BCDB3C86648C032C17E7C1DB2C6C7D344B +:104A10008E373A63F03DED100033944E3526796EB3 +:104A20006C364D07F95C06F2ED00BC4464727E5EA4 +:104A300026E5FB29BD7C0FC8B473B9437F12F0593A +:104A400021CACBC947AE982F3793CB47A2A8E3BA68 +:104A5000C83FCB845EB9DC7ACBCD2C40F87AC14C10 +:104A60007497EBDE2CCAEC4CEEAF4A38249F5731DA +:104A7000F02333B0E4F6D700C444FBB9A4F13113FA +:104A80002261C9F6107F8DFEDF68423DB57457F88C +:104A9000F310FBADEAF498E11296A68E85089F729A +:104AA000438413E5A2C2D44C710405F55B6E50BF7C +:104AB000858FD31AF939526BE0FE18BD27C6382806 +:104AC000F89BA8E7E7A5760CA4F7FDC24FAF12F458 +:104AD0009F9F584BFE4115FA633138AE81DE87B097 +:104AE0006D1C6EA3F0AF1734EAFD9379F5E1FBE29C +:104AF0007E8A7C5F6DC67D86F819F21EC64953C753 +:104B000040B417217156F2574E1A38FCBE647EFF2E +:104B10008225F276A3F047A5DC8FCAD4441CC24795 +:104B200074BAC8BE3622FE65BB7B3C633714601C7A +:104B300042F1231FDCEC1ADBCACBB501BC2F70336A +:104B4000F8637D48CEB93CDFECFA31F959EE12C575 +:104B50001785ED2EED6CE8BE8EE21FA3BAFB4973FC +:104B600033A37B7C8FC38A127AB483E17E926F1C5D +:104B7000CBA53811EA651E2F267F6195F02726A860 +:104B8000D65CD4D3954AA413CF0B6B2C3183F0A5FC +:104B9000EF05F0B3913F2ADFE576F98B08FEFCFCC8 +:104BA000D8689F01CA77447D4EECDD53D1BFAE8CEF +:104BB0003119B15CADB6D33A5F183AC80E1C8859AA +:104BC000331ED5EE85DA37A311DDF78E1DBA0D7CC5 +:104BD0003EB67157F1744B5F7ABFC9DFCBFB4AFE1B +:104BE000EC0238CBF03D27D5274D77E17A2F75DCE5 +:104BF0006601D3F468E6F7A6E37BFAF30F743C8A08 +:104C0000F5E732CB78FDA71DFD22A85EC1EB6BC591 +:104C10007CAC623AC6EFCE3FCCEB0DD0EE23BD119B +:104C2000C8C2FD4EAD8D70621C645306D70B328E28 +:104C30005669384425CB877EC3AEDC2F90E9DE84ED +:104C4000FE891A7D8AEE41B466BB36A17DDC94EE06 +:104C50007928139E2F9DA6F84C70EE65C7FCD9C22B +:104C60006ED3F97BA388AF4BBA6D12765896BBB35F +:104C7000F8BC952BB362E97E44BA67C7B7996F0455 +:104C8000CE97149C4FFA318B849CC3FCBFFE36F345 +:104C90004BBD21E753B3F5EBC1FCCF7F9BF97F18E8 +:104CA000369FF46FE53E06A20F047C179DC374F097 +:104CB000C8E71B9440D22D184F3BA2D27BAA0D49C6 +:104CC000A78DF89E919DB272FF3982CBC33B99DCD0 +:104CD0006FDAF02327C5E77CAFA9F41E7B43D2AC83 +:104CE00014F4B73EFEF5E2048A67093FF4E396B791 +:104CF0004C76D8C70AF1BEB346BCEF5CB1B7C53439 +:104D000011E6AF81B23824DE51DD758FAADD383D62 +:104D10003A08C73B99E25E9988B75CEE5EC0D94C11 +:104D2000191FE5FB1E24F6B72FCFF54166C8BEE577 +:104D3000F33A4D7F6F439683B3B83D6BC964C2AEFF +:104D4000F1F9062B9C7E9591DC1E2E18116DB10F8A +:104D50000EDE8F58BCCD41EF2D9E4B1FF729D2534D +:104D6000AE27C705E3CE1D3DC79DF7F3B8B35CCFB3 +:104D700029E0AC8C6FBB138C3DC0B5760BEA85C9BE +:104D80000F4939061561C1F7A7524F3C347D7C2A83 +:104D90008F7F623D3E6BF31694EBD6487E2E9A339E +:104DA000726024EAA1764794C106FA23357DDEE0DD +:104DB000ACE1F8FCFA89F87CAC393A7B1E7F8F4372 +:104DC000FC979AEE8ECA4AE2FD313E55B952AB428B +:104DD000BD77C11741714DCFA0280FC6055B0D6C83 +:104DE0003CDA6989BF882C4EAFC1A86B8707D7977B +:104DF000EBC23AA43F3D5BFA505C2D337DECA0AC96 +:104E0000A4E0BA99E99E3EA1EBC23607E1F3CBAD2F +:104E10001F4EBF14B1FEA02C4E3F7711F05F88DD0E +:104E2000983E3E4A572F9B92C05CA1F1EDB23EBA2C +:104E30007A796586AEFFAD0B07E8DA4BCD6DC342DC +:104E4000FD0349B7AB3D8F4D04B98F05BCB4B5B078 +:104E5000817BE9DE5A34BD475D563F89E2E5B19D6D +:104E600015545637421DE46779E70CAAAFE88CA2C7 +:104E70007A6B64DB44B4DBADCFC5D1F9F3A81AC8B3 +:104E8000FE39CE638E26792EED33671DFA15AD916E +:104E9000BEFC3B00CED2A76F2A417AAFD8AB505CA4 +:104EA000B75465AD4A3CCA6704CD57AAFE79D84AC3 +:104EB000783EB998DBB352B4ADD05E27E2949793B5 +:104EC0009B59595CFEB4760EF784CE69349F6CAF63 +:104ED000CC4AD7DD1BD0927619C9BF15FBD1DA15A4 +:104EE0002ABFD73980CA9ABDD38C7658E74FB98F7D +:104EF00025A2FD80FE56B2EF522F49B9A91D19CB4C +:104F0000AC97C7B359E89F0AD43F306F569E6B15D4 +:104F1000F2FDD47BDA8D18276256930DCF89530B9F +:104F200087A45485CC53D7329BA1FE32273213DAA3 +:104F3000DF0A2843F595E732F72ED664E9F595D4D4 +:104F4000E3ACE87EF2FB6F93F171C11F8BB2F4F713 +:104F500094DA508722FD7ECBDF5FDC90E7F909CA47 +:104F600043DB5856FE0CE98FB67EE8FF7F57F0030F +:104F70007D2D48FF18235F37A6D0B113EFAD3476EF +:104F8000ED83F3E995F6F123D1FFA8CAD6207F1C63 +:104F9000BDF1C63617CCD7F2C3A143512F325BC740 +:104FA000D7C8A73507C664E0F9D99F6512F7D218AC +:104FB000F99DF23C00FD4EFF01C69D7F21CF86EF9B +:104FC0000D6A623AB251DF5ECCF3F8916E470F7E04 +:104FD00079E287789FD11ACDEF3BEEFFE2F4CFB1B3 +:104FE000DE69A57A20D3B583F4C965E0BC5A790C93 +:104FF000E7334F3D973F8F90C379826FE70B399C22 +:105000006704BB0870CF7D55653ED8EFFC7B94816B +:105010007B310E618FA6FBD8520EA5BC69C89743A1 +:10502000913F395F5677C609F9768879B91C94E2C1 +:10503000B914E6291D1047E7F4159D09D44FCAABF2 +:1050400094D31FE479DA103FA57520DFB08E675D39 +:10505000EF61282F57E6932F8D76BC0752A468C8BE +:105060002766288B43E4DB2DE83E6F213F1FCC03EE +:10507000FE6021719537B30CC24E5E1DBF1F12FD3D +:10508000E75B0359063C2F811F89F7B92B93ECA4EA +:10509000C756FD182A8082551AB7ABAB1E56289EFC +:1050A00088F616FDEA11C76B292E2DD79FDD3988AA +:1050B000D9014F333A33A97C2EDDF301D27F5EE76D +:1050C0002C81C7413DBE77FCBC7623C5F13EF79BE2 +:1050D0009D742F382C5E38DCE5EC857E8EF6AAC6F2 +:1050E00076D831CEE751513ECEF465B6AD0A8F1772 +:1050F00062FC50C6FBE4FB4419F733271A74EF3FF8 +:105100002F1A1BFBA1FFDF2DFE3796FB5FE77669A9 +:105110004EE49BEA963F8F30E0FB14878BE2806978 +:10512000A99E7F235D974EF7FF46C3387DE3B37F8B +:105130002DB407F159398E4DA6F3C82103E9FFE6D6 +:1051400006B584BFCF6751E21EBACE8F39C2B83FD1 +:1051500022F97C696706E147DA1BA9BF7FE74DA109 +:1051600043ACD4E357B24392BF971BB91D5B0E7C8F +:105170008F740B97A3A0FD1942F2C2405E503E828D +:10518000F687CB47D0FE08FE8F4DA3B857B83E97A1 +:10519000F669CC13197B7F0FF32CFDD51C37E2E3A6 +:1051A000C6010A437FB4FA192E07E1F22EEDB5C409 +:1051B00087C4CF9F44FD835CD7C8ECABB21311E426 +:1051C000E79A7DD318E9592843F5AC16E6D7CAE724 +:1051D00045D9D76627FA67EBCF1312CE3613F7AF50 +:1051E00024FCAF30EE7FC8756EC89B3E03F7817616 +:1051F00003D72FCFE6FEED77B5AFCBD98FF26CA9F1 +:1052000017AECE7E4C08DB9FDC87DCD7AB62BF5786 +:105210006B5F96679B08AF57B22FAAD2719AEEB315 +:10522000BF1061473C1C3D1841FD5D96583ADF17A1 +:105230001FFCFB673FB7E33962C6F2EC24B4376664 +:10524000230BF1F7245C12CED704DC608756658708 +:105250009C03E4F36F6B97A45C84CB6DB8BC86CBE6 +:10526000E7E49F809F88FBFC9D42F704827E212318 +:105270003BD59ADED78977A8A57C87F889445796CD +:10528000ABD03D9FEEFED7DF86D961FC67C3A28716 +:10529000A05D38AC366F1DAD04E578DCAFBE7AF6A4 +:1052A0007F58777BD79AEB791CF123E557CAE995AC +:1052B000F9F2798DEC55B5427E8D19CA507BE5B96E +:1052C0008CBC3D798DF2B64DF0E35195F3B52FD6F8 +:1052D00044FED895F86EFF77CF77FB43F9EE72FE68 +:1052E000778B906BE0BB96EC6FE1FF7C037DC94E42 +:1052F0004AFE9BFC0AE71B96C1CF2B30FE29847F18 +:105300006C46D4108C0B55083D3DF912AB453C7BE7 +:10531000C4F95FF2F163799E0F114E497F3C9FE023 +:10532000B9E36AFDDA8AC45A86712C0F94A17A49CE +:10533000DE970EA7FFD9EC6BF3538E675F9B3FFBA5 +:10534000AFEC6BF667B59CA42BFBB3CC16A98B1303 +:105350003835EE673A5F53916297A5A7BA8DE3BBE4 +:105360000B6F01A3F40B12D02F003E31E57C1B3EE6 +:1053700061EE148CAF9FC03FE9BDC92D65488FC356 +:10538000AAACF3F8440BD6AF0311CAB9E5D8FA10AA +:105390003BB545C445E47D5A8CEBECE9C14EDF9F3B +:1053A000CBF9FAF057677FF534C69DD24CE44F0332 +:1053B00006BEC6FB8AEFF7E5F715BBE420CDB406C1 +:1053C000F7D962F6A62C0A9193C369C95FCF83F11E +:1053D000877B31BCA1C20EFF70288DF7D5A84E0C7B +:1053E000151CE877FAA798377560853A5409C1AB60 +:1053F00056CDEF3F6989CDD18B42E03B5C33B4C8D9 +:105400001EB29F8BE2DCFF76EADD368CE3B4A4DDCE +:10541000D93616E1ED652478CD5F56DA947CCC035D +:10542000E1F7C8AFCFE1FC75A2F3D6B636E8B7C155 +:105430008A17FDF0B988B3A5CEB2E03C758906A203 +:105440009B163DC7660AD98F2BD1C8E1723077A869 +:105450003ED893C3F9BC3187EBA143AA8DF60D70FA +:10546000D8301E30F7ABCAE36DA88FFB8DB063DC7C +:10547000FE624E06BF5F64B015A17F8A792A2CC4F4 +:105480009ECD3608BB25F23A65FE9B19DF270CA29C +:10549000F70C3E11AFA7BC4E4DDE4B8A3189BC4B99 +:1054A0007E5F9DC61974FDE9BDC4DC1CFEDEABDD6C +:1054B000C0DF03E30FEFA99B71AC4AF7CDC9BF4131 +:1054C000B9D6F03D74A285F211E5BD72D08AE3F140 +:1054D000B926F2C4B4BE6CC574E2F3660DE346D5DA +:1054E00039F2FD149FB742C05101F8C3792A8CCC20 +:1054F00068027F7D6E2FD3A07D40FF76ABC989EC1B +:10550000259FCBF52BC43A7355AECFCCD55A8FF926 +:1055100098F7E4F0FBF7753FE271AEF67E769E7782 +:10552000C8785E65171EEE89A6FB20EDFDD80AD46B +:105530000766B1DE06F19ECD6CE5F995F279FBBA0E +:1055400031740F77838C0F2C17F7BE44DE6505FE90 +:105550009D8EFBE279971530DE3128442F86C18B72 +:1055600034ECA2674677BA5CE9DEBDF46B247FC4F5 +:10557000E0588C9BA625D33D625F2F0BF1FD817F08 +:10558000FDE0F83CA89F4CB690DEEC92D35E294536 +:10559000782FB8A526E19E8E103979BB7A866D41A9 +:1055A0003E8EB32EA17BFBBD4E3D7B14F5AE374A3C +:1055B000279737783FFEF87778DEFE2A92EED51FE0 +:1055C000F8D7683B9E0B55433BE909F6AF48E2F735 +:1055D000E2D8F2147B887CEC16F2A5A6B97E918302 +:1055E0006532C88135A8CFD4E4591E94DBBABE24F5 +:1055F0008E6CA38837D729FA3CB08B42CE2E0AFE98 +:10560000BA9823EE0918EDFD701E992FD292665CB0 +:10561000131AA77C49F47F498C6F49BB9BF023F197 +:10562000D5623EF8DA08A86BC9654E14C31B50EF6B +:10563000E13EBD519457D2D2CB42F46FE965F22BD3 +:105640000EC49FCADFDBC55AFC59C40FFC1EF70D00 +:10565000BD8CA4172FE6D87571B7965E8984F74381 +:105660006AED71AE172C64BFDFAE4EF81AF7AD6964 +:10567000B136A4D34943C77094BF8B39F11C5F0680 +:10568000770A0BF1C76F0DEA05CA6BF906BD4079C1 +:105690002B9AB8DF78257DF09ED0078CD53277F431 +:1056A0007FAF0FF0A78DE82EEF5DF22CC64BB9EE61 +:1056B0001AFF7F2427B786C9C921242EE27FA3C2FF +:1056C000F3DD93F64587C6314DC2EEB544C5727B16 +:1056D0005693F035F2C5BC548F49B187F653095F34 +:1056E000668BCC73B9D183749D679DA5919F02FC95 +:1056F0003813FDE55C23D74B71DC7F3C6970DB71AF +:105700003F83D23C91B9499817C1F9DB656B8BC6D1 +:105710007C0AD79D097178BF49C22FED9BA4FF3F3A +:10572000BBEA3C4F5ADE5F795F11FBEACBF3EE2B0D +:10573000525D1FD1BD5391772DDF7B6BA81FA1DF79 +:10574000C626D58FE706F9FE7B63E244CAC3DED8DE +:10575000A850BE331379D70BC4B82ACCBB86F96ADC +:1057600072D369DF9E33B68931D0EF44EA74F75AB9 +:10577000BC57936A64889F83FF51E93D4D51475B55 +:1057800031E657CFF33974F9AB9E73C689685FE78A +:10579000311BDDA73C19B3A604C7D73DA2887DD431 +:1057A000BEEC41B9843AEA91317D8F95A27F30E613 +:1057B0008124F2CBEAEE8A8EC178D40956DB86F0DA +:1057C000FA1A549223F0CF5FEC8DFB57E248FF1C8E +:1057D000D1DA5E7340FB91BB12D0F3645546F622DA +:1057E000E6438FCEE5F25F21EE49205E2C05C1FC39 +:1057F00069E04B765D4130CFB5D500925340FE2530 +:10580000F1AF2B97FB0F55983F8DF742D4FDC33175 +:105810009E2EF595316E18F9AB9FEC5B3402594D15 +:105820004B2AF3E0FECEEF5F3602F13059F0CD8F18 +:105830001BB6B889AFF7ADF5E1BE1E51B8BEA8A939 +:10584000DF48F7106AF68FE579880AF733AE34EF50 +:105850002C396F23CCAB5EC5BCDBF4F71AEA1E8E85 +:10586000B02883195BD814F65C9C7BE6F9F4CF2B47 +:105870001AF4F5EF0BBC5C6B5EE8EDB9567EEFF207 +:105880001AF342BF2FE459E68506CF4DAB6D28478A +:105890009F013F72FB5F6BC1FA895403E52984CFF6 +:1058A000D7EE6594079283F385C40DA49C1D16E77B +:1058B0001090AF72F4938379E57D157E7FBF390137 +:1058C000DF0BD40BBE3A68E27EB5CC2F97F99CF57E +:1058D000823E7F385740799B073A0B8A42F3CB0EC2 +:1058E000ABEDBF1A49F684E729D7013F3DDB031E24 +:1058F000FAE4A83A38A53F2FF5C35601B7E4D7F02C +:10590000F18F0BFDD61E9677EEB942DEF9E0CC7131 +:105910008FE40E0FC9FF3E3C9B3928FF67289D5B33 +:105920001E17FB07D99D88F10196E24E093D07BE7F +:1059300028DE274BB8B776E9B16B3BCFBC9809E7B7 +:10594000196B70BF9BC5FEBBE012F9AAAA88375736 +:10595000E27B5290D343823F653E7A6564200BEF31 +:10596000A3C9BCF412339B3BCDCAEF5DAF0AC1DBC8 +:10597000A15CEEB74CDEC4FB4DAEE325CEB3C31A3B +:105980006CAF1CC7C7C9BADCA784EFC54C1B970F07 +:10599000719F381CFED2E2E6CF2DE0C29ECCAD2E28 +:1059A00033023E671532F1BE797993CB8871243D7D +:1059B0003E8E76E167C5B1F108D75616BC4707EDB4 +:1059C000138A62BBDE57239BCAFE2772971D6B208A +:1059D000FCF13C12E66937F27BA5A23E0CEAD1212C +:1059E000F5C2B0FA76DE3FC6D8CE42F32B309EA089 +:1059F000D03D3B399F4FDEDF9C1887F756F62A369D +:105A0000F48B6E2D3A6F42FD5F5ADCFE721FD8EFA9 +:105A100085DCBBCAAC79F01CE35D00AF21EF474DDC +:105A2000BE4C313E99EE27D0CFDCACB854E0CBEA87 +:105A300042C59FEEE8CED7863C7DDC9330AC1FCFCD +:105A4000305FE75AC6231FD1F8741A1F305FC3FABC +:105A5000B714F1FCBEF07E36D94F7C3F81E607DCFF +:105A6000CD68E6EF85C3FBA7E471BE6D331896637E +:105A7000D2B93D6F7393E57AA02FE3FC919ED7587E +:105A800046F9F848E8B0FD7E13BCA63CFD7B46FC19 +:105A9000D9F5E303DF842F6BB7F1823F96E8F96510 +:105AA00042D125CA779A5004FC01F3AC704734A068 +:105AB000FD2E2D96FCFDF332572AEC2F82E9EE578E +:105AC00004F97B7B19F2F70A26DB1F6D42FDE036F5 +:105AD00030DDF75426EC57BAC6A3CB85AF12717CE4 +:105AE00051DE234D781F03E841ED54CFFC067E6F55 +:105AF0000EAB1785C987E06F924F3CEF007EB27AFC +:105B0000B02BB7083AFF43E481B78DE3FAB82D9D77 +:105B100097ABF3B89E982BF0B858F46F8B0CC14339 +:105B20006A90CEF00BE07BAD907D139E66278A7D58 +:105B3000FBFE503605F6DD16CF062AC0272B9FF850 +:105B40005DD37AE213B711EFB7197DCF37BD0A7A6B +:105B500067B6C0CBEA277E7F8CDF3F035505745FB5 +:105B60004E0C0074DFABF8F03B37CB91EE3DECAB65 +:105B7000B8BB9CF8C2C6BBB46F183FA9FB7857D816 +:105B8000788679CF573F5ED0654A18DD4AC2E8363D +:105B90003EAC5E29EB7E9DFE927A6DF612C7BD7D0E +:105BA000008EA54F2914A103FD6C528680539CF7EB +:105BB0005299B537F2A75DEB032D8D797F3C6601D5 +:105BC000FD350DF517F16B2BE9EB1928DF543F522A +:105BD00086F7066715D66E4881FE0FE6FDA9C90255 +:105BE0005D6F5DBF59C3EFFDFC2CEFD52623CC3B89 +:105BF0007BD8D32FE37C46E5F563531CDFC09F8D34 +:105C000061FBD81E56F785F56FBA823E5F1F36FEE0 +:105C10009EB0F686B0FAB6B07A7DB87CD82626A3B8 +:105C2000BE5FAF50FEE195E4E4A93C19EF6D1E861E +:105C3000F728F7E6BDDDB4A190EC2CF1F5734FBC6D +:105C40002DF59B127ACFB62291F9D01E6897D14FCD +:105C5000BB2FC727B9E1F68BB78F8FFAF7B3988FB1 +:105C600057D568B699810F4F45306700CF176FF24F +:105C7000F305E5F2C23E4EED19E2C738FB05E05BE5 +:105C8000F4FF5FDC9C138B702C6A5519DE575DDEC8 +:105C9000AAD2F75630B25C1A9217787B9342DF5F34 +:105CA000A97A87CF53B557F5E32733BAF2C19A14CF +:105CB0001A77BB5F7B3FD4AFA6D446E8BF78BFE27C +:105CC000C73C96C5DBF4EDCB9BF575993F55C38C6E +:105CD000EF879E974FE21FBDBBFBDFE0A792FFF56A +:105CE0003F79E25EAFC87FBA5A3FBC81B9DECB23B1 +:105CF000FC86E5734A3FC71848BA05E33A47120ADB +:105D0000901FC01FB61486DC5B93EF05CE793DE093 +:105D100084C3F9C6BB844A39FEBCD262EA8371FDF2 +:105D20000F19DDF31FBD77CF4FC6D8B17F2D050703 +:105D30003E39378CE2C19F803FCB8305EB041F7255 +:105D4000B9BE7E6F8BDA87E1B9E98328BAC714162A +:105D5000D7FFACD64C719DCFCE19FD3DDD4790F9F4 +:105D6000B407319FD61EC4E3D9EFF37383F437C76A +:105D700088F95A7E95B07F34F24D54AC0DE3DB8B3D +:105D8000C5FD84B3BB555AE78C25F61728DF67B6E7 +:105D9000CF48C68F782DD23A4C9818EB7C615A0CBC +:105DA000DAB50FA15F80E2357E15FDA4D1256C0622 +:105DB0008E1B1D3032FCE4DC8746A782FCF0C9292B +:105DC000E068A87F8CEF17B87CD0FB8545CFABE4AB +:105DD000DF4AB88A0BC536043EC7F4E772F1F7ED27 +:105DE000CF4EC5793EDAA5D9109E4F76698CE7591A +:105DF000AA7EBC927E66B742FCBFF498EA44D3FC0C +:105E0000D16E85B7372B7ED45FCB576A2ECA7B0CF9 +:105E1000E3F362D90FF8D51CC2DF4B5DFE8914EFA6 +:105E200013FC6D81FFF07E7B1C6BBE17F33097ED8A +:105E3000FEEFF83A9C9F87F617797C05ACE05AF2A2 +:105E4000F8CEC13910F94E3E4FD8EB50FAB0A07ED3 +:105E500090F7D6EB4C8CEEA7FB0C914E8C1FC9FB38 +:105E6000E9F23EFA6A83ED25E4A3D5601FD0DFD9BD +:105E7000DD9FC7D5BE303827609D65BA5D9817DABB +:105E80003ECAE1A4F791C586DA9EEEB34DEDCFF59B +:105E9000E2FBFD19ADBFB23F3F3F98451E599D8CB7 +:105EA000472789BC0111B793E367F5E7FEC5CAFE32 +:105EB000761E471C6AA0734BBBC6FAF1FC745B5F8D +:105EC000EC3F2D2AFEA21DA69EFFE4E09978EE98F5 +:105ED0003626FEAE0C27E6610FE7F5A1F1BF4D8730 +:105EE0007A75FF61BC3E387EB806F5B56B47CC1CB1 +:105EF0000FF8FC717F97A7FFF0207C725E78BE00E0 +:105F00009F67F6F154F5C7F883C95A8FF185F3D925 +:105F10001DFDD0DF95FDDB5FE8D317E3845D758061 +:105F2000CF998F75B9EF9ECB3DFD5D35FD7B78EE4A +:105F3000B6D84DE8AFCFF7F17C18868F9279DE03A3 +:105F4000F2E77C991F53AFCF8F614E9EC725F39E1A +:105F500064FE525E302F6BFBB5E4659D17F964E17A +:105F6000F972CA7E9E57C61E15797D61F92CCBA3A6 +:105F7000808F004FAB7EFB6E0C7E8AE97685EB1B33 +:105F800096C2DF0FCBEF889D9B1AC8C67B4C7FF76C +:105F9000B2C44CE0DF2AD5D384F86E75FCB11FEA99 +:105FA000B9BF6FAF8B413DF48FDFA8CE29D0BF5A68 +:105FB000BC3F615FAB01FC5E48497A0E7D77E1DC56 +:105FC0009E8DA978DF7BBBE0B7730EEEAF9EDB63DF +:105FD00016FD66EFC2FB3CA0E71FED4FF40DD3F3B7 +:105FE000BB66127C93ACA0D7617F7DFBF1F882D9B0 +:105FF000C87CD13C2ECC302F4B83522D08EA656CE7 +:106000008FA16F0A2C4811F166CAC7937492F8EFFA +:1060100046176079FC7EA1C1C234DC671EDB6E438B +:106020007997F499A05A9D01D03FABC06EA37A5ED8 +:1060300025E2A2ABF628F45DB0E5AD1AD9D9BF0BC5 +:10604000B90DD75F35AC2D06F973C9F6053C6F5F06 +:10605000E82B4C07473E996A337E277AAAB5BFB032 +:10606000B743D8906BB4B747FBF7606F27A8957616 +:10607000CC0F5995945B60E6EFA7885F168B3C02C6 +:106080004997558F64503E2EDBFF049DAF170B9848 +:10609000D8769EBF73AF43A5EF0994EEEBC3ECF047 +:1060A000E8F67D0ADDEF9BB22F81EA319DBDA95E46 +:1060B000FACB5EE3F8F7AA383D4B7F9943F58F7E24 +:1060C000F1CA30F15D269ED7636332AF87E870A1D5 +:1060D0009C7F07C0E8CB7BA808FDB7568DF9EDD4AF +:1060E0009FF2A8DC021CB7C89B72B3F0FC6E7B2C3D +:1060F000CEE3067F0BF997B9F87B03BBC89732A7AD +:1061000018983D04CF33D11F037A44D823993DE436 +:106110005EE09BCC1D8BFE549DD0DBCCE76AC33880 +:1061200079B9E083A8DC785DFF726B15F143B4F3B5 +:106130003ADDFCCCC3E3A05DFC81CF12791E16CE04 +:106140003FB35C9F2FA6157D4AF947EEAE3CF75A48 +:10615000E27FAD481F4F75A74EFC88F1FD9FFA26E0 +:106160003E8A1B20F8288FE5F1386037BC933C5CF1 +:1061700038C6E501BC8887F0FB1EB304DE2F302E45 +:106180001F175C51241F1B043E24BFB97358347E73 +:10619000DA26B6508FD738971E9F09257A7C25B905 +:1061A000F578EA559EAE6BEFEDE9AF6BEFB3A44027 +:1061B00057EF5B3B5AD73F6DCD385DDDE1FB9EAEBF +:1061C0007F46FD745D3DABF1565DFF9C6DF375ED53 +:1061D00079FEA5BAF601BB57E9EA039B7FA0EB3F26 +:1061E00078DF3A5DFB90C07DBAF6A1AD5B74F5E156 +:1061F0006D3FD3F51F797CA7AE7D54FB93BAF63182 +:10620000679ED1D5AFEFF8BDAEFF8D9D8774F5B118 +:10621000EC155DFF62CB5F74F509B6B775FD6F4A8B +:10622000F940D73EC9FEB1AE7D72EE67BA7AA9F3E6 +:106230002B5DFFF37D3D9E01A03FCA0D0D8F04A095 +:106240007EA1F50323F2B936477C5FE41AE3FE4BE7 +:1062500006083F4DF06D7B16C8630FE7B870FD3739 +:1062600005ED3CC695D4290CE3FA179A15E2EBCB61 +:10627000D9DB58F07F8D21FB8873599831048E84C7 +:10628000129BAE9EE44ED1F5EF556ED7B5F7F6E40E +:10629000EADAFB2C71EAEA7D6B0B75FDD3D6B87494 +:1062A0007587AF44D73FA3DEADAB673596EBFAE712 +:1062B0006CF3E8DAF3FC4B74ED0376D7EAEA039B60 +:1062C000D7E8FA0FDEE7D3B50F09D4EBDA87B63695 +:1062D000EAEAC3DBB6E9FA8F3CEED7B58F6ADFADE9 +:1062E0006B1F73A65957BFBE639FAEFF8D9D015DA7 +:1062F0007D2C3BA2EB5F6C7943579F607B4BD7FFB4 +:10630000A694F774ED93EC1FE9DAAB3F76525E3357 +:10631000FB8342793793733FD5B56B89E0AF633C1C +:106320008A45D27749C2FD75E98F953ABFD4ADB39E +:106330001AEFC5A8E8C7B3F608F0D38E0E48977ECB +:10634000BCC5C2F52CE979AD84D177F76231DF3C69 +:106350009EC71D791E7D22C58FC944DAF1FB70E00E +:10636000CF4025DEE0A0BCF5F871CC5907CFA38261 +:10637000FE65EAA590EF625CC9BF7C17753EC0134D +:1063800095EFF9F380E1782EDB3311CF2B4B2C8D79 +:10639000E4FF4E50F363DBC10EBF1ED1F37BA04977 +:1063A00016C063C87A47221A530BBE417E2759CEC6 +:1063B00051FFAE79C5773F14D84CE8FB92FBE11C46 +:1063C0006584A364A317E40CE4758BD746F5266FA8 +:1063D0000AD51FF4DAA9DCE6CDA5F2675E27B56F12 +:1063E000F71652FD51AF8BEA7E6F09953BBD6E7A71 +:1063F000BECB5B4EF55F783D54EEF62EA1F2496FB1 +:106400002DB53F05E77FACFFC6EBA3B2D95B4FCFFD +:106410009FF136527DAF771BD59FF3FAA9DCE7DDFC +:106420004DE5EFBDCDD4BEDFBB8FEA07BC01AA07A7 +:10643000BCAD543FE46DA3FA8BDEE3547FD9DB4E51 +:1064400065ABF70C957FF27650FBABDE4EAA9F133F +:10645000EFFB22F215F13ED44ADFB3728FCBA1EFEE +:106460000CCAE753333D11F949C1EF59C8EF5684BF +:106470009F07C2E97056CCAF8DE3DFA5D0AECBDE6F +:1064800089F7F383DF95B0EFC4B361A258A7EB3B64 +:1064900015C2BF5E2CF8517EB742DE0B582CE4606B +:1064A00038F2632EF1E3ABD772DE91E7E44DE99E5B +:1064B000CC7CE4C7BE061FC507AC3CAFF6B9744F31 +:1064C0000E3EAFB2D69AB87BEAA4E7A5661E1FEAD5 +:1064D00038A23A77DA2FBF5E8DB81F7DD9F6031F39 +:1064E000A5A2FD29F98F4AF75D5ED7A2CB310E3206 +:1064F0004AE06154BE4157BA32DC8508CFE203DF7F +:10650000BF0DF33E641EEFCD186204799FC6EC9474 +:106510002F3E83B95EC24F42CE04470FEBB7301F08 +:1065200095A9E99EB1387E361C10B0DEAEB05FDCB6 +:10653000A1E07EB85C84C331299FFBDF93F20DBAE2 +:10654000724E867B12CEB370F44DB7E1A72EB662C1 +:106550005E37F2077EF704E0A8E9E739D9272388F8 +:106560005F1987B877ACB87FB45211E7FF6E79F442 +:10657000D45E79178FC3CC81F316DE679379F21757 +:106580006A35D28B98678FF7402ED4DE9583440FFF +:10659000D78F95F8DD8F02CCD7B7F0F9DE89A67CCE +:1065A00028795FA2125089E7BAF5F81D8D24D48F9F +:1065B000EDD6240E0FC539E6EE37937E04BE588C17 +:1065C000FCBE74944AF9D64BE3418BA89867CDE999 +:1065D000EFFB13CF8336DA787CA46A7BDC10BA47F2 +:1065E000037C8271ADA705DD241FAC10F7EF25FDFC +:1065F00081BFEEC0F93F797E642EF241CD815174A6 +:106600002FADCE20F2ACC5FC4C7C67518DCDA7EFF1 +:10661000B095A2F380FC372A9AEE0DB7A86CCD9EF8 +:106620001EF4E5C3828F5E4FE1DFF1AB137228DB0E +:10663000B7087A6E11742E3D7484BECBB4A2557324 +:10664000623C990D6BCF0F8DCF74F1ED9A577A673D +:1066500086ECA366DF7BFCFD396BCF9F1ECDC14569 +:10666000BACAEF17CB75348C63A07149349EEB3AEC +:1066700037A4239E18FFDEA6E03FD514EDD9610DA7 +:10668000DD4717FF6F23FE8F5943FC7FA1F6C33B05 +:1066900091FEED80423CB778FEBF8DBEFB319F3945 +:1066A000A95CC8DC542E063642BAB97D9BC9CE2CF3 +:1066B00065CDF47C45E1827E58AF611DE353008FC8 +:1066C00033EBD7BE9402A0CC68DC3CA137C03DDDE3 +:1066D0003FEF252CA7ED524EFBEC243F4FE0FAEDA7 +:1066E0004AED86EB60BDB27D3B5EBA0E9E4F1571E2 +:1066F0000AE03B970AFCA5C6585CF89DA7855BB8E5 +:10670000FE7C5AD0614E86EB691C5FB98EF399BC52 +:10671000F7DD253F85CB4EF631A05FC8E8FDE3F9F4 +:1067200017F2FC6B1D08AF9BEC7AD04F94F69AFBE6 +:1067300009CBC04F407EC5EFEAD1F729DF8DA0FC21 +:10674000A7B30ACC53D05D3EA4DFB95AE5F768BFC2 +:1067500030C096543C476F25BC2CB1F807215EC071 +:106760004EB7925EFCA0F9DE21385F9C9BCEEB67B2 +:10677000932CCE3A874EEFD3779DE4F799EED778F6 +:10678000DC2C1CDE7038CC26E6C37B4C4AE1CB5FA8 +:10679000A29F017A82EB87131CFED5AA27052F0E34 +:1067A000A1FF82F382FD08A0FFAC192CFC3B4461E1 +:1067B000EBAF17EBB6FE9BC7ADE5BDB27038141B4F +:1067C0005FAF1B3C911C1E697FBAC3C3E920E1F98E +:1067D000349FC749593F17EDBBD5D12BD706EB4E98 +:1067E00035F527BFADD4E8E940FCBD11C1E3633204 +:1067F0001E26CFB9ECEBBA54FE1E2AA0FB7E110B6D +:106800008B2BB92D360DE93155CA4FA1A6939FAEFA +:10681000B853913EEE3403ED41061E57DE9178D217 +:10682000C503FF1752F31F4B006800000000000073 +:106830001F8B080000000000000B0BE76060F851A0 +:106840008FC013D1F8E8F82B9A7C2E0B7EF584705C +:1068500006507F3210C7017124108700B13F107BB2 +:1068600001B12B10E7B131306402710A10C7037116 +:10687000141087027100107BB321CCB16267607085 +:1068800064C76FD772364CB1775C08B63B27657E1C +:1068900019C5431FB3F2313030F223F8DDFCA8F202 +:1068A0006C7C0876AE306576D500F50300E663E5CE +:1068B000388003000000000000000000000000001D +:1068C0001F8B080000000000000BDD7D099814D527 +:1068D000B5F0ADADBB7A99999A959E0D6A1660D4C4 +:1068E000019B011110B55824637EBEA42168D067B6 +:1068F0004C8320C33E2246FE84F7A66086618079E1 +:106900006662D08C80A6414034980C048DF1A17F42 +:10691000831B6EC9988771891A8C49DC90F030040A +:1069200093677EDF39E7DE9AE9AAEE5962F2BEFF8D +:10693000FF1EC414B7EA2EE79EFD9E7BEE6D7F70AE +:106940002C932F67EC33FC03CF3C85317651EF73EA +:10695000F8379578572DFC9B45181BCFD8B000FC15 +:10696000D3646CDA9D91D7471630766F5BA5EC87C0 +:1069700057A54C62AC90B192C5D5CFD58C832AED8A +:106980003253A09E7C674DC90968BFABC22A31C291 +:10699000D80F93591163953AEF87319B617918E3CA +:1069A000E57BDB66E730A83FACA3F53F94EC5EB82F +:1069B0009CE7085B66499DFA619F316CA7FEF14434 +:1069C0008D28573046A016E2FF95F17E45DD27DF82 +:1069D0001C42F0EE06B8FC2C1D8E92C5E382E7A5A2 +:1069E000C0EDC081F059E37BE1FB5BE1A1F9152229 +:1069F000EA4E40C758B45E8A407F1399F8A33E24FC +:106A0000C5B218DBD094B8A47A38639B9BEC4BAA30 +:106A100035C69A9BDAA8DCD6D441E5F6A64E7A6E46 +:106A200050633AE2315403F552C655C350BFA6B77E +:106A30001C303B5C65962C27FA2962BE59D14E5713 +:106A40007B5F41C2555E9535556761848731CB8F39 +:106A500070E8F41C6FC86FFB812E9BB4682406F8A5 +:106A60009918BE71268372DB3F779C6080BFE65C1D +:106A70009FB91EE63DDA98F13EBE7F6EF80CFD042C +:106A8000D2FDB7EA6F102F35F0F7B34AC65AD44794 +:106A900072711EE3197FDF8B2FC60A00CE4B05BE35 +:106AA0004335F03D05AE4B0B64DB3F1AFAF7B4BB40 +:106AB00034EC9B27C378FA502B12C3F196A57C8740 +:106AC000F12E35AE5E2A413BF6C794FE2A7BE9B330 +:106AD000B3C960D648C68E36D5D03CB741D984E715 +:106AE000D1BF2A73BB52F8361CE06D578D9101500F +:106AF000C63A5F357721EBDF8EFF07F2F284C6E8F6 +:106B0000BDFD5396D843F3895DBB18CA772D2CAAD7 +:106B1000DB0CF3191F07FC011C7749E66FA9DE3C6B +:106B20009FB9079A6E5313B3B07CD7823CD986F2D3 +:106B3000E838E00FEA952C90ED21A3D3F906DEBFEB +:106B40003D12E67B5463560CDAB52F6709C4FBC4CB +:106B500028A747C92745CC1C0BF80FDCF7A11FE17C +:106B60006CF499FE8A5E3A58F017E73F69987DA564 +:106B70000DDFEF5EAEB2F5D2C0F4A86C49F98EF429 +:106B800000F8901FD2E8D108F4189D810EAB810E59 +:106B9000D97DD3C1FB04B960EF801C7CBB29427452 +:106BA000D9D464129D5A059DB660D589E972B95150 +:106BB000660DA8B7360659C34194E3DABA8CF59C42 +:106BC0002763EB887EDF46FA951058169BC09851D4 +:106BD000D0534E06AB91EF53BE838AD928F5946DFE +:106BE00006F30962FD49BC1C82FADF0EF0EF6FB1BB +:106BF0001D963DB9B77CCADEEA2A3BDF3769094BEF +:106C00001AC3D86176BD551B70F56F61FFA9F0E915 +:106C100019FADB24CAD2BA0ECB06F85AA56404F5D9 +:106C20000E3DA3C09FD06EFA04EC17CA06637B6FBB +:106C30009F673F39B1779C5FD9F36C1BF87D1E8B42 +:106C40003D85F8DF23259E50241CB7632ECB65ECD1 +:106C5000796C0FE3042D5EFF79B6C56A567BF1F2BD +:106C60004B7B838DE33A7A5D11FCAA6CD56DD4E73A +:106C7000F29DFA1409F48492CF0CBF8974C963ACF5 +:106C800018DE1B16433DE1D04331D4DFA7F2590F84 +:106C90005F88FA7DD391D7EB815F4B4C93811F9F27 +:106CA000C24F40DFA9974DF8F964A091AF5B8B729A +:106CB0003B10B724949F29A0EBA09483780656C973 +:106CC000F954619360A8C790E9A11F6372094BA4AE +:106CD000C2A3C623A8B79D7E61BC0F53F135D0F87F +:106CE0002A8E6FA68FC7548BE06915F078C7DD1424 +:106CF00088CE45FD3675C4842FA3BE55BB87CB7E99 +:106D0000A9B75DFB79A68C7A262A717D1410FD3B0C +:106D1000F308887182D5D06F8A5E75FA03BC30D2D1 +:106D2000132AE0651CF6077098BDFD043C78F1F667 +:106D300003F88CC446F547FF7D04A73216E8CF520E +:106D4000E81F05FAD70E82FEFF4DFD7E0C3C8CF34A +:106D50005F3DC697B02B68BEE004A5CFD7999F775B +:106D6000DEAD92F5CA6489E849ED1C7AFE49B47338 +:106D7000C64FE3231625BCB7BFA4B1CDFD8CEBB441 +:106D8000F78EBBFAC527226099D2C6F5C29B36EEB4 +:106D900020E528F2C979CCCA073F10790CF4C4FA6F +:106DA0000D3EC253FB3296403E693F7605F9499D40 +:106DB00072F2D864786FFF42637B60E84ED4BB68A0 +:106DC00037B78EA3763BB39291D9B57DEBDD4EF00C +:106DD000336C205CBBC4C8DEEE807202CA9106D55B +:106DE0001E02F4DDD17830300FDEB76BF0BD96DED9 +:106DF000BF8D76B1ECA643FC7D80BF2FC6FAF0FEB6 +:106E0000EED5A27E16EFAF18EB433FE5B7F0FAC51B +:106E10007199D92978F4C255EA4BC663E1F4F71B9E +:106E20002499F0F2A8B0473BD01EC1B334D8350F37 +:106E3000ED77F84E9FB90BF0B27DF9DE92F9D0FEF6 +:106E4000E8FDADD26F00AE7B24EE1F6F437BA6F54D +:106E5000F61769006B0FDF1FD51247B241EFFF6FC6 +:106E600089598D40A7C8C9E435A89FDBD61D667E29 +:106E7000C04F791CCAA0BF27643FC99EA132233BE3 +:106E8000B35B7A8DF4EF9E17EF6DC6F157BF0FB568 +:106E900060A8496A426924FC1764A4F303EFEB730A +:106EA0001330EEA47DADDD5F417BCC124407E7FBE0 +:106EB00025EFB9F9E551617777E0BCE1B918F9211F +:106EC000451EC3421EC33DF2D826F9101F7F60A4A1 +:106ED0006727E9896D4B801526C559B4D94C87279A +:106EE0001C07B94CA107CC675AEA7CFE51F398C73E +:106EF000ACEF4B857DF7976E47E2F761FD4942FFA6 +:106F000045E25D4ABCB6BF79EFDBB604E77D0323FB +:106F1000FDDE57FFDEF97E57E013C67B28D378FFEE +:106F20005DF8807E9F20BDF777F61B79CF6307065B +:106F3000895FC63AA81F70AF54B4A7BDE518EBB17E +:106F4000235EBF3055FF17C03A71343E83847FA55E +:106F5000C08D57A79DCFC7681D8BB619E1A23F68AA +:106F600087CBA2F76E8677EF4A3EAAA746381DDF89 +:106F700092E3EF4A08C74CA6E2BA29289AE8460CE1 +:106F80009C60E8AFA42687F8205C90D1AF6C6BEAD8 +:106F90009CA5A6C8799BC6C43A82E3CD57C912F90D +:106FA00088C74F6F30678FEABB1F2FBE9AB5E8AB1B +:106FB00071D4B385BEE81E963E1FBFC1E723C93E0C +:106FC0001A472DF0D9881F988F2417A6CF47837EA4 +:106FD00025D057CD5923FA9D4F8B988F97EE2DCE04 +:106FE000BC06097F5FDF5B342B320FD743597DCC62 +:106FF000AB00E6057096CB9C4E5AD84774D20A6C0B +:107000008670C3FCCAE50CF472F8C83B3FD5D009C2 +:107010002FCEF8AA7ECF2C35BF17CEF365838FD342 +:10702000034794FA510C46EDB2E5F8F9381EF05FCB +:1070300037F15FD822387C11E8E0427C5A736DE06A +:10704000E7962313592DB60B47D93278FAC2713619 +:1070500013EAB5E0BA12E12918E79293E1B2ECC263 +:1070600093176FC5C20E3BE56D3D7CE5E667A0D387 +:107070005D37425933C68F453F729AE0072F7E0035 +:107080006FD3E494FE5583E373DB6281AF0599E52A +:10709000B858DFEEC25755BD7954E55D5A289F793F +:1070A000A2FFDBC3AFBE1A37B92F8BFDF8E513C7BC +:1070B000707D5B1E88CF46FC15B7279904DFF3EA85 +:1070C0003B581CE6B141D8F72B944FF5DF40F9DB74 +:1070D000932B73D08EAE912517DF39CF2DE027A8E3 +:1070E000142FD1E979EECD9104775F7C9668D25D5B +:1070F0007299A855EB13D07FC23ED83D15A6BAA110 +:10710000A0BA8E744B83A4E23C82884B806F8918AE +:107110007FCBA86F38FCB604E177F8CFE1B32A2B18 +:107120006E615CA392C56DF4478D76164D0A5CA81E +:107130002978C99BC0E31880879B090F115346FC2F +:1071400005EA934C357BF1C0D8E96355D04FC7B3FE +:10715000C3297EE0C0FD90E0135693C783026A9472 +:10716000D6237DC9DD77004FB5C3893C12C25930A3 +:107170009D25906F37E27BC0C74572AC19F9A020FE +:107180009690703E7749CEF83CEED722E0FECE8C4A +:1071900020F1594BB9B1530179BC0DE140BEDA2160 +:1071A00079F9EA3639458F3B7C953F3D86EE2A2BAF +:1071B00098194F226AD7F9E2DFC571835297C1AAA5 +:1071C000707C5E6FA333BECDBAB1DF7C89F5FE81E2 +:1071D000F1734D7317EA837B055DF2C7B5DE84F169 +:1071E00086BC1A95E211F927E6CDC4F889FEC6954A +:1071F000144781F71477299899B491DF8ACDE83A3A +:10720000C4F3CDBEF8BD0867EEA8AD16BEF72D30AD +:107210002504B0438B3303E57972878571AE2DA3C6 +:10722000AE66F352F8EA9098B706EE50A2B697BE53 +:10723000B72B9C5F6E9B50195814C67A412E1F6C59 +:107240008EE08B18AD537CC81726D1FFC7387EA0BF +:10725000BE630A8E1F8E98188641BE1F8278E8D0C2 +:107260005831B6EB18E523FB0BF8384E7E87CCC7B8 +:1072700081FF4CC48F4F94FF59D6683CC401E2296A +:10728000C7640913F01446FC64F7E2238CF841FD4F +:10729000C9A2EBD035554C4BC2B8A766B020C66F1B +:1072A0008D7A062B27C2CF33489F5C964C22BD03B4 +:1072B000563C89E324D4C65FFF33D44B1C53A2361B +:1072C0004BE14316A5F58683A70A1BE42DD33A4E5E +:1072D000D41FD83FB018F2B51AE676CCB10BC0AFC8 +:1072E000AF215CAAC1F975B0F6C7B746317F8B7A7A +:1072F0004B35289EA70A5FC1A7C7F50A5C3F1E57FA +:10730000980DF3533AC624D12F02F6277BC4AA392D +:107310003ED508DB2DF42B8FA70A96D46B64964CD0 +:1073200099A7561674C585D95CD07A30DE2DCE78F3 +:107330006B7C04870A7681C799F93CE10BF583439E +:107340007C5685E56FD1384E3B35CC9201A0DBE60B +:107350009A3AD2973D7A1BDB411DA4258FDBB9DB1E +:10736000F58D17CF7873DC700EBA5D58357F9F129C +:10737000CFEBBB9DCA7EEFE0099067200253FCBBB8 +:107380008D1A7B4402FBA9EBD163F3E0ED46FC04CC +:10739000746D659CEE2C21BBF48C52C6E3D16FC991 +:1073A00026D74311CE575AB891A1DD71CA03F145D2 +:1073B000C86357DF94E22394147BE32B391649C545 +:1073C000B7E34FB2DA39D4CE5F968CDC00FCA1472C +:1073D00022638827047FB57BF0082B68827393882B +:1073E0006BFA228DA4EF02D571A2A76E723BE82F33 +:1073F000B3853FC1BFF7F06D2DB7C7ADD1D939B84F +:10740000F8F0E94986FA21DC718429A9FCCAE26C0A +:107410004E16C613F8FEC40FE0C9F92241E3FBCDB6 +:10742000A08B5F1D7E74FA1F582E3B68DFA2F80DFB +:107430003FC96541AF5CCE44BC152F1076C4F14FF7 +:10744000627338FD8ED7105EF6887D88F4FE397E33 +:10745000CE41DFDD885F351E44F9D8BB757E10E76D +:10746000BBB773764E2A1DBCCFBBC09E25FD18CF7F +:10747000D7E9B9BDC9A0A7F37DBB88E7EF10F6C572 +:1074800079FF6F0AB7A7CD0AB7277BF55890F6ABFF +:107490009EB8E68BE7014AAA8F2B518CCD947EA72C +:1074A0002BB7BFF1CB96B9F50053AEEB17DE356FB6 +:1074B00014CF7A32A5FE6A25ABE0F717C03F2E66DF +:1074C00017A37C0CD4FE5C5364D693DADF8F971D30 +:1074D00022FEFB6FCAC17536E23D7939E98F4A2138 +:1074E00067C56D8CE23ED5ABC19E60DD4F3FE3DFEB +:1074F0007BF6F1ACF03C28938B01E5BD6DF337A32F +:10750000BE2C7F596118FF1C2EEC31DBCAE3FE3A1A +:10751000FC453D41A16CE8B76A014B24A15E55874B +:107520007BBFA798B5D33E60B9677FA158D8B16239 +:1075300096521FDE97811335A1EEEFA7C39EFF473A +:1075400074D8AE76058C94F6A5128B21BF962EFFCB +:10755000AD343F855F1F157CCAD684D93B297AB7E5 +:10756000544A16A351DAB94C26BF76FB3259AC9F68 +:107570004EFC109B9C7B6B4B31AD0B8A7E7F19DAE6 +:10758000FB679410EFA79E717F97B9F515F871CF3F +:1075900028297EEECE96D9A49FB67F7AF3110DE806 +:1075A000367C358BAE27FAB3E3B83F650AFA9B8287 +:1075B000DED3B772FA56B6F37821B3DDF4AF5C6070 +:1075C0004B3EEC670D8B62DBAA0646F0565FC71296 +:1075D00016AE13D6B8F79BAAB7BAF96308F201F052 +:1075E000C7100F7F98C007F9C007D51DF1CD387EB1 +:1075F00031D875F21D3CE30F37BBAEA4F1004F0943 +:10760000B2EB29FD28C85FD1F5480F2F5F0E41BEB0 +:107610001C9D3EEEDFCB777F44BE0BF5F2DD597645 +:10762000DDFC7D50DCB961FF4B2308B97139D5CF42 +:1076300077F84E65D65F904E2C36383F68D0F5927D +:107640006532EDFB8BB94F59A507719F66878F3D5A +:1076500087FBE9F62F1586F666C7AA6049EABA2BBA +:1076600021F47E22C09F1195F36B112EBEE059A22A +:10767000F278E88E6CBE4F973EFE7A1107E2F1A0D9 +:107680009A4FC0F1C94F2DFB3C659525C7A696B30F +:107690004599CFA3A590AFDB8717313B35AF60434A +:1076A00096CD785E4235D925677FFC89DC193AEEA4 +:1076B0001BB484EB441E8029A7EE9FB7842B87B0B0 +:1076C00014BA368BFDC8BEF0D922F6235BC47EE423 +:1076D000709F15C985F62DB93328EEA16CE57EC3E0 +:1076E000452A5F57A06CA2729CDC62AC5F0FBCBCE9 +:1076F0009559E3D542DE0ED725C3F3C633F48FA0E8 +:107700009E95C8C05F152A5F77B009EA5FDCFBACC5 +:107710006183F49AE06F161E9C7F54AEC6AFC4F12D +:10772000EDA92C89EB177B124B34A33C37C684DFC1 +:10773000DA53EF4BEA4554CFC6FDA39E7A71773CEE +:107740000FEA7D45D4B35CF56269F5E68A71996B01 +:107750005C2B6DDCAF39F0B1D4FEA269FDCD17F51D +:107760006C96DA9F99D6DF2251CF72D533D2EA2DAB +:1077700013F360AE713DF1CB9EEF437DCE775A2778 +:107780006D28BC5AA7F5CB7BE52EFEF3D2E168212C +:10779000E7C7270B67D423BFDCFCAC46792C470A2C +:1077A000DD7CDACB8F6CC232CA1FB1298FA439BC01 +:1077B0008BC671DEF7D40BEF3232BF9FDF47FDF986 +:1077C000A2BE4EFB007DF14D33F23BF065B3D8070E +:1077D000F27E3F23E4BFAD06EC5406F9FFABF8CED2 +:1077E000D418C5357C35F625B519F66BFE7F9FE7B5 +:1077F00029A1F7DA6AD6774C85A5DE8196B9EB75B3 +:10780000A0FFA6C8ED1D53A0FCB23D77FD74E97F33 +:10781000DE3C7FA62E72CDF351B668FDF48AFF7967 +:10782000F3FCB0E516D73CBF6FDFD2EF3C3788FDE5 +:107830004D6FBF7F127A7FA31623FDBEA1F01B11EF +:10784000847783C8AB086B13D6AF83F22816FF3357 +:10785000EAA58DF05F37DA2DD5243B34503BFD3C53 +:10786000358672B629C2FD4267DCAD2A5FF738CF94 +:107870003B302886F1A86295FC3056E84B0C17F394 +:10788000C17D8A83AAC1EDB298DFCF3DE593AAE11D +:10789000925BF8C75FD03F3270FE5519EC8FD08FE6 +:1078A000ED85DC2EA7DBE7D372AA7D0E095C3E31A5 +:1078B000E669D27BD3EE3C76AC12F46ACB0B0AA31A +:1078C0007C128F9D9E7267FD3113F3228E69FCBB83 +:1078D000F0679C7E3634F1FCB68D68BF47E29B882A +:1078E0004B0FB7D74EA5F6675FD0F8B8E52372D037 +:1078F000FF6913F6BC4DD8732F3D7FAA713EF90185 +:10790000F48F7964FB80EF4CE83F09E5388DA7B32D +:10791000F848CC6B32A8FCDDA6083DEF6932E9B926 +:1079200005E0C1E7834D51AA7747D3047A3E2ED6AE +:107930000FCD62FD60ED9729FE7867139B88AED569 +:10794000A6269D9E079B8C892AF0FFF79B2254FE5A +:107950004E9349CFAEA61A7ABFB7294AE57B9B263C +:107960005079BA347BBA761146A124A27BC986111C +:10797000BB30DEE7DFAF52FFFE32F834AEF7BD3387 +:10798000CFE9D2D42BB15D4E178723673210347301 +:10799000BD2F6940E7FC2E95FC95FC9960A70B3242 +:1079A000D6FB0AD61B9A90A9DED03560F733F7379D +:1079B00017C70D25387CA15A4671D50CF5BE86F542 +:1079C00046EDE6F08D3AC4EC3EEACDC77A85BB3988 +:1079D0007C8573C0CFC93CEE22ACA7E5D9F3303F1C +:1079E00060CA27DCAE87A3E64E8CBD69F9F64DF878 +:1079F0005EFF94BFF797F1F73E519F7819F39FC24E +:107A0000E2BDA85F60F0F7AA21FAF1F1FA9BC73056 +:107A1000A247A8D6D8A5C3FB03637AC7C3B2E6E7DB +:107A2000ED83431B9904F2192AEB621294C7405963 +:107A300006F90B9725998C7122A7BFEC2893E07D5E +:107A4000280CF5001F07A02C43BB7018EA619CC9E5 +:107A5000E92FDFA27ADB459EC398FC2EF2BFD45AF1 +:107A600053D24D5CC7F2BC87B0C1FB1F521B3F8293 +:107A70005B66237CCCBA0A40DC7E13D73FDFD65E40 +:107A80009C8AF960815A5E7E4C2B99B6AE1AE02E24 +:107A90006171D483079FBD3A827175AD943562B927 +:107AA000EEB9B93558F639DF9F5B42DF7DE27B29BD +:107AB000280C035CD6BAE797D5CCCB2077DEE7C796 +:107AC0002F4CA338BAAF406656CA3ACB5BAF6C991D +:107AD0007B5F3C2F6A480AE8F33F6A7C3E77E17C93 +:107AE000263176BFF6DA54CCB38B4679F9571B7C36 +:107AF0007C3E43793C70EF5D623EC3005E788ED879 +:107B000026E6E37CDF26E623BE17E37C609D3A622F +:107B10003B9FCFC7AA35C4C8302F2FFC250BDCFBF9 +:107B2000EDC37DC908F29612BDBAF206282B87393B +:107B3000BEA7B66E5EBF1EE06B5ECE5429079E22C6 +:107B40004FA654676D8847C40FEEAF6DD3B8BFE53D +:107B5000D0455BEBB3F333E45F3B4F875EDA5AFD0E +:107B60006DACE7D0CBB736D86F3B878EBEB5E1B7EB +:107B7000F347F73DBF747A3005E991D5FA917C0758 +:107B8000F05FAEC03F637F993AA53A9D3EED0B6131 +:107B9000BE17A6E405E17CEB387EF390AF9CF90AB2 +:107BA000BA68ED03CC57D04B6B17F315ED7CED03A2 +:107BB000CC57B4F3B5BBE7FB538DDBD981E8DA2CA6 +:107BC000E6D12CF603C12CF73F8F1D308FD183985F +:107BD000C70E9DE0E999C78E60BFED7AE6B123FC40 +:107BE00076EA7C073B8F2D0B39FF6DC912F3080B2A +:107BF000FEEB6B1E1D839C4787671E1D839C47C73A +:107C0000E79B478F1C097A94AA7C1E4E3F5E39FA87 +:107C1000F18B6EFD36F6676EFDF6E39F717DB00D5C +:107C2000C72FEC958FB13FE7FAA06539A77F8BC0CE +:107C30005B6998D3BFAFF112EBDCE399EBDDE32591 +:107C4000D6671ECF6CE6E3FDA3E205B95AFCCB3E36 +:107C5000B11E5752D7C59E7801D49B23EAD94AEA70 +:107C60003ADB132F807AD7F844BCC0552F9656EFD5 +:107C70007AD11F738D6BA58D7B83E82F29A7F6170B +:107C80004DEBAFC1814F4EEDCF4CEB6FB9A867B94B +:107C9000EA1969F5568971996BDCB47CA79B06B526 +:107CA0007F971FF3B9F61973EB7DAEF86320EA2EC8 +:107CB000FB584AB9A2773CA7BF2CB10FC6E28D266C +:107CC000C2D39665BF8A79871DBEE9D30AC058B56D +:107CD000E5723DDBD1FAC566CC13F7B155C312E3AB +:107CE000D0BEAB2C81FD8DE3FB47E82D231EC235B2 +:107CF0006A0237FA376A710BF701C280DF7838659C +:107D00009EA23E3046BFF90BB02CA175816ADA14F1 +:107D1000C783F23ADAE3EE48CB3BB81BF1EB077CC2 +:107D2000623E819377E08C3310DF0EBA1E63352AF2 +:107D3000CCEF56168CE27E708512DF8FE3AE99BED3 +:107D400086F237CE5DD160E133C21A258CC71B4362 +:107D500078DE16BB418F627EAC316D32ED2736176F +:107D6000BAD783EFFBF8BAE1B04FE179E7212E9F54 +:107D70004CB78B67A5ECAB333FAF07DF6F42FA9C84 +:107D80006B5DF8445B04CA396C8C047E98D1B17485 +:107D90005A3DCCC3A812EDCBFA685FC50E60FD93C7 +:107DA000BEF94FA8587F18A7EFC7ADDF6AC67D2080 +:107DB0006324D7976C9CB9B305E0EFFC5AD118CC7B +:107DC00043C9FFD29A0ACCA3EDE9077504F81B67F3 +:107DD000453B1687BF29FBE3E5817837CA47717DAC +:107DE0003289792E4AD89DEFE3C5F3719F88FFF859 +:107DF000F9FA72C33C9DE27091F9BE04C5F1E3400B +:107E0000882257FF6FF4D7FF154A6DCE6F52F0FCF2 +:107E10005BD1BF536E15F9434EF97BE52C81FC967F +:107E2000323EE91367FC0F7C62DD1BB68B496E0D99 +:107E30007866F5D6EF98F62F128E7FA51C3FEDA33E +:107E40007DE9B89A0A6FFE4C9E2FE6D46F86F949F9 +:107E500029FD3BEF5944F4EF94EB795915FC6D4C37 +:107E6000BB8EE21DEA749EB7C8E6BAF3BB54A3D139 +:107E7000C957A23C626FBED217144BF2133F971939 +:107E8000B4EFC0DCEB7227FF66FE04D12133BFFAEA +:107E90002BA0C362584F534ED7A7503B85CEBF7916 +:107EA00087E7952C16FB32BF63960F3F7EC4E47ABA +:107EB000E4C38FD82FB2C7A6D0BBDCCFF3F9589B51 +:107EC00046FB2B36FC45BBB3B04373EDB72CEA74CD +:107ED000976F64B38B50FE6EDCAAD1BECD62CF3EED +:107EE0004C969FC72116B1C65623850FE61B4CCD75 +:107EF0000713B6FC27778F477B57EDE771970FC4C1 +:107F00003ADD816B4938E1B3E0FB3B87C65E7D0912 +:107F1000C3F689D612D4EBB98CE4D7CBAF37B4B95A +:107F2000E11B087E2FBCCE7E475F70A8FBA48C713E +:107F3000FE3ABFE4CA9F58A3678FC6C300E702FC9E +:107F4000D913777E2B407626864110DA5769BC9884 +:107F5000DB9BC60BF13950BB39D8AE30BDDDE682B4 +:107F6000440CF9D0C9BFD0F5468A9B482AD7F39B69 +:107F700023037C2F83EF4A3FDFABFB6F0FFCF7D966 +:107F800067E3193FD349F1259E7FD426E22467D5C4 +:107F9000E85CD41B67C33E867987CD5A23D925BBBD +:107FA0009C99B86FE5AF8E7D99F6478F2B0572854A +:107FB000606228B716D7EFC6FCB27FF26B22BE15FF +:107FC000253BEE0FDB9605E3B66AF1482EFA55FF26 +:107FD000C2FDCE29E1781CDB2991B91AEE733EB3BC +:107FE000FF061A774964868A24BAD1CFF3B23E7A63 +:107FF000E0C07806F0B53E98C59228876AC28771BE +:10800000FB2587148A4F2CFD51168DBFE4E0A2BDDD +:1080100033A11FE927979ABF277BD94CED973CFCEA +:10802000959FE379BDE6971586EBF0E6754E9E5C6D +:1080300034F21568BADCCFBE8EEB7767FE0E9F0474 +:10804000AA6DF23796ECABA07DA61EFE52A13EC6ED +:1080500077E099E97CC6663F8F0B9ECCE2F967D248 +:10806000BE23D7137C5D5FD5705E525923FB1D8CF8 +:10807000D724F004F5284E64DF2F25F0CCC8C9FBC7 +:1080800077FA2A47E1B83B7DF3C90F5A47F51C3808 +:1080900003FBD6D9285701D3AC40124FFBD183D96B +:1080A000185F5BB94F4962BE1E3C296F2F607AF69C +:1080B0005599159680EE2B4825C1F3D072D23B2BF3 +:1080C000BAB650BEC0CA47DCF206788D2601EEA5CE +:1080D000AF28D19958FEF17DD926C0F341F79E6CA7 +:1080E000C43F8C33CF9783F96FEE7D5EECFF93BC7A +:1080F000F4FE183BED433E5BD9B5898FE791E70F5E +:10810000F01FC5E9FBBB5D7E4F5EC1BEFC41F9D3EC +:108110004B1F3C7B8F0DE39D3CF8E13D9857BCEC39 +:10812000FF7E7CCFB7303EFB78C0407DB4F281DF6C +:10813000DDF34DC0E3478FF865E48B250FBCFFD618 +:10814000B7A0FCA79F8ECCC3BDC467859D3E75E0DC +:10815000CF4526F4B3FAB12B86E0BC573F34CDB5FA +:108160008FE97D9E6AE2E7707AE149503FE623128B +:108170006E7E83A3229E1E7A3C7148610180EFA32C +:1081800057FDB4EFBF12DEADA943FA2CA7BC002CFB +:10819000AF05BCAED8BF91F6D1D3F16B97CA117CB5 +:1081A000264B310575C5A1AF7CF9D271F8D4284FA3 +:1081B00060253B4D7ADDDB6EE571A0E3857DD36DF7 +:1081C000258BE5609EC9CAFD9BF8B81EBA7D84FF69 +:1081D00098984EB777FDEE7DF93FDD7F4D4E123F0B +:1081E0001ECACFE82F3AFBF2CB1FBAAADFFDFF531E +:1081F0001E39ED0BBF0DC22F7FC86F9D437B7DF2F3 +:10820000E00FF66E03FC9E7ACD1F9D090839F5E05C +:10821000D9A10CF8E23DEDF4F5287FA71FF31BBBB5 +:10822000A0CD92C75E21FB71EAA1977C26E96D166D +:1082300096C00F39C57AFE74A35FB242E28595BB42 +:10824000B392FEEC5E3AAD48CCAA37B3E93DE5D92E +:10825000AD48707E5F91383247CA40B7D17A25B7B2 +:10826000138942C2CBF2DDBFF2F14332BDF4942652 +:10827000201DDF9E81EFFBA2A3337F03E77F710AFE +:108280003D777339ED4B1E4FEDF4D3FADCA1EF29A6 +:108290009187B03221BDC232C8694F9EC1DF98A715 +:1082A000719EEE916331DF81E478E079FC6D782A8C +:1082B00046612F4CC7D7BA621FF9CB4AB68FE4AFDD +:1082C00055335FB1912F9ED5D82E68D29C3D9E9993 +:1082D00019D65B2DE87FA4EC8F69618BF6D335C38B +:1082E0001C4339099EF31F9A213333051EE352398B +:1082F00096693F97B17682F34E9177F7EDC9723167 +:108300001E2D30EEE0790FC6D44F28CF7DE7E20274 +:108310009E3F29E8A232E1F78ABC97BEFC9C3BCB8A +:10832000D90E7CDE510CCF0BD3FD972FEAF1B89E0E +:10833000C17FB95312F5725902CFE1AB3AD383A092 +:10834000A7EE904E1FABC2F7B364F2F7E07D5B304F +:108350002FA5FE445E9F5996698CE779B0CCE478EE +:10836000B08AF8FA97FE9C1FB5D1BFF1B146F24F23 +:1083700074CC4FA942FFBC8B9EDF12F2120631C4AF +:1083800072F6AC338C12E45992D6FF85A2DF423DDF +:10839000CCFDFB39EAC9D4F3F401B683E233D8E467 +:1083A000B394F3184C9C931AA83DC25D5A87257E5E +:1083B0005F46810337B3A85CDC332F83E13C4BC5B8 +:1083C000D721E84DC1BC4A2C58DD57617EDE092A11 +:1083D0000F4350E059C1E2EB188FBBD07983007B8B +:1083E00083D617B22D4B9F5DE081B3B0978E4CAC16 +:1083F000AB7D625DEDD0F956D97A2D0EE55B95C661 +:10840000474E54D07A7B1BD2F39CDC781ADF9F7BDB +:10841000739189EB9AADC2CFDF9AE55E57EFD1B980 +:10842000FD739E5B73051DAF12745463D2AC147957 +:1084300020D0603DBBAFAD613AAD67553E0FEF7BDD +:10844000673CADC0A2FD917099C1E5240E08493981 +:1084500037F1139DAF33CA03B12E1DF7578D8E230D +:1084600092C9D7A52732C88BF3C47B37707F6E5370 +:10847000539C9E4751D62EC274F746A21DAC7B0F6B +:10848000637F305E02F94515F4FADBFB37183FDFF6 +:10849000D5487EEE4572FC69EC17DCFE0ED4A3FED7 +:1084A000329ECFAB88BC67EFBABD5BE7EB10E7E964 +:1084B000E4FD06467436ECC2F32B5322427FC428F7 +:1084C0000EF192A003E095D6B3774822BE26E9428A +:1084D000AE986914F5CA9502CB7FE42B0D268A4F1E +:1084E0003FF28D827C95A06708E505F8F00CCA1371 +:1084F000F49BC54EF42E4AD19FBFD448A03FAF0293 +:1085000082943C7A26F1E9F009BED7F2F8BE6F36C4 +:108510003C4FEA795CFF60B90ED7C9B17791DF8033 +:10852000EFD7C9D4AFA5A07C1409F88A1CF99AEB3F +:1085300096AF1E7ECC75E3EB3F049ECEE8DCBFC653 +:10854000F151BFF42DCF69F1A6BF203CDE78136254 +:10855000909F776BAD407A1917B2FF9071AF84B5D9 +:108560004E7F6102C5730E60B9B9A5797A3DF813E3 +:10857000C658CECF7260E3748CE719178B78D1049C +:1085800077BCC80870FED531091AE199CCE310C553 +:1085900001AE9F55A391E21DBA28338BC7437ACA17 +:1085A000D379FD9E722DFFFE39E218C581CC718C06 +:1085B0009200D9893EE218C23F1DD6A3CFDCF1D587 +:1085C00061225FF50A254C7A0196990974998756BC +:1085D000F3F344C3AAD7D3F922EA0FF7851B553A20 +:1085E000AF0FDF697DE2B41FBAD61D8F0D2F7097D4 +:1085F0004B443E73194B790FFD94887CE612CF7B78 +:10860000C72F71CE3F0CE4974C0E7CBEBCE55F4893 +:10861000D654C2DF20CF4B0C142FF0DAD9E62963F1 +:108620005E2D00BE2B7AF4BEE9189754D42EDCE6FA +:10863000669D59FCBCC791AB7C145FDBC6749E275A +:10864000EC91FF4F16F33CE67B0A40E0E9A541F7C9 +:1086500032851C7A1AD63AF46B1DFD27C59FFE336E +:10866000FAA73EA4B3827637417CD66367D9697A8C +:10867000069645191EE93FBA666A2EAE3B43AC3DED +:10868000A3FC397C716635CF6356D90539588EAC59 +:108690005629FE541C877505C2615BDD9122C69C7C +:1086A0005042AE057553E8935FAFF79C39C27261D3 +:1086B000CC70952BC4B9AC217323AE764CDCBB8354 +:1086C000C7BDF8BE4C8CF011590638AB48CF8F8F20 +:1086D00088F85BF18224E9EDD246F7BA3622F297A8 +:1086E000239E765E7E6A0D88750F987FE427C043CF +:1086F00034897838AED0B97EF5849FCB03E005F19C +:108700007086713E289FC7E81E0D2F3E1C7E83FF9A +:10871000D17A7C28F49384F7FE881B4F01D38DA770 +:10872000508D1B4F5951377E1CBCE54C305DF51CFC +:10873000BC39F74EF585A7B286AE75748FD9E7C4FC +:10874000D30F3C782A0DC7687DA8A8494932E99C17 +:108750002EF1F93D82DF91807A8A7FE5E0C5CBF783 +:10876000C50DC0C778FEA18099784485D566511C97 +:108770003922F029AD71F83CB37FE9E577158FF91F +:10878000931D4D907F1642BF8CF8FD1D96EA9769A8 +:108790007AB61D1A8D4FAEAF74F06FF03088730E3D +:1087A0000FF4F0F3A42FCA64D7B901BF381FEFF557 +:1087B000EF149599728A5F3B52D447FF99A5CC7705 +:1087C00024DAD1D168BF389EA4309F1FDB017635F3 +:1087D000655FD2B11B839D373344FC0EED6B285D82 +:1087E000BE87E17C51CFB7F07BE7CCB5D1F5B8B40B +:1087F00002008F23FF8E10F08D70CEB174BACF11AE +:1088000054DBE00757A69F1318BADA7D7EA14CE827 +:10881000F9326107987298EEFD3ABB16DCE60A7CE5 +:10882000EF3ECF52D9D62DA15F74C16A46DF4BD738 +:10883000F2F36E43573363414ABFA5F16C6301CC39 +:10884000A702119921EEF499C72EDC3C6B0EE9AB1F +:10885000EFAFDD95F13CD37D4D11638186F93FBAD1 +:10886000B100FCC30B12DDC900C05163733C9873A7 +:10887000996C867BF9F6EE2646F5EF6F32E8397C87 +:1088800055A4E43E13E914CF09027E47DAF129E842 +:10889000FF99765C263BAF5A4610F9A7859F43A8FF +:1088A000595346F08F5C33D4583036DDDE942E3F7A +:1088B000F4521354DDB516E400E638EC13BF85FE20 +:1088C000D436AC3211FB35653C1F5319E47ED5DB41 +:1088D00001AB8CFA6FE0F7DCF4852FEF38CEB930BE +:1088E00018EFD91198EF949BE73ACFB74BD0667C3D +:1088F00050769D2775FA696D73CEE59994B758D96E +:1089000051B15EC77D3FCFB93C99F178E6AD782E85 +:108910000F407E3110BF08F1C48C9473A395BDE75E +:10892000F24A975707116FBBF48EA978C758E92D03 +:108930002C8AA4387FB77B5E78F5D6049872A57D23 +:10894000621DCAE4DB81F8E5880767BE657A98F0A6 +:10895000EB9CEF72FCA1F3D632B227951D60288103 +:10896000CF86B575AC473066087DBF4BE87B9087F6 +:1089700099F352F4F9AEB89587F94A8EFE75F42D45 +:10898000A84161A74C19EDFFF96BDD725029F46A1B +:10899000B547AF560A7D5CE979EFA5DFF9BB81CF1A +:1089A00052E4CC3B3F2FFF7F3D28F87F082BC63C8D +:1089B000D4B36CF2902BCC5EFE70CE8D79FD226F1D +:1089C0005CCEE97F4CD270C1E3F43390DF24A9364A +:1089D000C565B40833908F3B0B853DF0C4111CFF77 +:1089E0008545E3B68A8BF2F9CCC07DD7C8CC389DDB +:1089F000AB88D4B3A889F01FE7FBDF9B7DBC9DAC9F +:108A0000DB74EF8E5ED67D29F26D53304CE3BE25CC +:108A1000C79A900FF267F27D937C6107FAD3A3B6F1 +:108A2000D2AB470B83F136E44F479F9A71430E67F1 +:108A3000D0E78EFEF6EAEB9057EF0E328FC4AFC64A +:108A400093F3CD74FC00F8666ABEC0C672612FCA8B +:108A5000B8BDDCBE4CE5F961F6EC2BAC6AC6B65C81 +:108A60007520526810384903D6415BAE94E8FB5339 +:108A70009B976EC075CF9659BCFCDCE6851B705D7C +:108A8000BFE51A89D645AF88EF8011927F4D77F008 +:108A9000DCF8F50A5C2794F1FB423796F57FEEAFE0 +:108AA00019E3BC237BEB296A94E7820ABDE2F7E471 +:108AB00079A861F77E87BA8CDF17E1E81B75994AC0 +:108AC0007660CBA81B8F211C786E1DE9ED83850B8A +:108AD000CAA3BFE3263AA7E3D53BBAD03BDF10E7F2 +:108AE0008141EFDC8D7CA118EEF3EA8EDEB91B9597 +:108AF00008D0A1665C235D76E4376DD984FE9F0FB4 +:108B00009A240F4EFCC8D1DFCF8BFABA1A6351A852 +:108B1000AFD53732B413FE99FCDE037F3D3FE72724 +:108B2000EBD123C8D77A417794F4AB878F5FEEE11E +:108B30005BEB65E4BB578322AF9C45251E07E471C0 +:108B40008AC260EC7584DF2C33D6F310F6E0F8911E +:108B5000FE8C1771BA0A9CBFC5FA8BD33972908309 +:108B60007185AA0CFC6C0C2E6FE4369F957B05EE8C +:108B7000DFFD4C8B621C76A0759463571D3BECD8CF +:108B800057C73E0F0D55B8F66589EF31DFFD8D0BE8 +:108B90001274178018BF7D01ABE7F779703EF68B32 +:108BA00035F2B9F2F9411FA0BA3CC4F34D9CF3ABC6 +:108BB0000E5F06FB388FE4F0B353DFE1676FBDC192 +:108BC000F2B14F8FB7611EFF4871FFC2C88E9B8EF6 +:108BD0000632D84DA75F399D8FCB4368EFFBB09F1E +:108BE0002B82D6D010E2BF2EDA90E95EB7EC308F40 +:108BF0006F6C5FB63580FC7D17E22B45EE83218ECE +:108C00008773E7AD227C4D437C41FDFB76B8F115BF +:108C100019005F4EFD7F00BEF411985F25F0D5D797 +:108C2000F9FF7EF0352DD48FBFB139B6ABAD12F35D +:108C3000D3E2727438F4BF3526272F87F25D0DF228 +:108C40007EF443B7C676E9C391CF3A8F9685E0FBB1 +:108C5000A47016E71F23790CEBD9D532DD6BBB4925 +:108C6000E5F9FB1B3BE57BED147EDC5BC6CFA16C1D +:108C70002C9B1FBC21050F7B3B8FBAEE59D82B656F +:108C8000CE0FD2C2922B7F67DB021E1F288EB30449 +:108C9000EEE34F5FC0E52850C0E338018B9747866D +:108CA000F9F9F527C7B44E41FDB3A98C6FB3397EEE +:108CB0004EA7C7CF71E20BC16A7ECF6D671C4C38DF +:108CC000EE875CCAFDAF90580FC0778A03056BDD55 +:108CD000FEBF22FC19FF0ECF7BE1FF681E3FC7A934 +:108CE000AF0CB0DECC9D7E82E25FDF0CF5F835C3C1 +:108CF000E87C8DB23F301CE03BBB00FC648679D041 +:108D00001D12EAEDE24F158BCB7F47E4DA51BDFE31 +:108D1000CDEDA120F1B173AFE29827998257A964F4 +:108D20004FE6716C07BF1D211EAF75F2A92F3A6E79 +:108D30002959FDD51371D589BFB595EC0CF5626144 +:108D4000717F919AA43C894D637C06C6D3DA25AE27 +:108D50001FED1735C1C78CE8BA77A1B113E39E07A1 +:108D60008F556EA12B2AE2661DF677D08CCB95E14C +:108D7000BEF5E4D5824F46D447AD9ECBFAA8BFE4FA +:108D80007E7E8F4B32721DE0635E98DB9B8341D009 +:108D90000F84A778496AFCF3B390ECC2D3C3667C16 +:108DA000CB28B4670007769357D648E7279CF10E87 +:108DB00096F1F10EBE2A93BF571CFDE57EB4334EEB +:108DC0007FCE780F0733EB2349E82307DF8F9A899B +:108DD0002DA353C6F3D7BBC7F32F80F1A05CFC9E35 +:108DE0004CE76FFA1AEFD13EC653043D1CBA3D6EF4 +:108DF0009ED87221F413C4F190FF71BC7086F13ECD +:108E0000B95DCA4A91CF388E03703FEEE0518D971D +:108E1000CC4ED1433F17FC711FE88F1BA0DF4DC321 +:108E20005B03C8C77BA504E9337B8C4CF787B6EF9F +:108E30003893C43CDFFB2C46D1EBDC09F6145C5FB5 +:108E40001BE83716A21E9D4AED24B5631DCAA3D2A6 +:108E5000C9CF4C6FC4B801EE2379FD69E1170287D1 +:108E600092DF317426BF932CD2D9F81CDEFB1E583A +:108E70002347C9AF8465BC3ABE372ED3A989FEC447 +:108E80007E9AE357140BFFBC1FFF22CA9CFD322AB7 +:108E9000F3FD35276EC3EA2C2655F5EE6738F14908 +:108EA000671FC3D9BFC861C929A9FB6A55CC92F114 +:108EB000FB708CDFE03E80654EC5B8FF88CEF8546D +:108EC000E4B33C1127F00BFF3E5475776E4F3CF333 +:108ED00012C616A20C00FEF7869C737BF112F41BDF +:108EE0000E79CA4743CE393E5E56E3DC0EA90BB875 +:108EF0009E632FA4E5DD86C3E8F7E93CFEE3C4EBFF +:108F0000E78A7EB6C66E0FA05EDF1AB42AD1EE5491 +:108F1000A2622DA4754501B66373802E40878A3006 +:108F2000BF6F580933F9F3D03702F548EFAFE1EBE3 +:108F3000582FDDFAA2AF434787AE7F2B3DC1649A1D +:108F40000AAEA730FE457EA4DD6F3CAA4C3D4DFB2A +:108F5000A6268B125DAB598CE85AA21B32D2B37293 +:108F6000BAB92E807415F6B31CEC16DACF7B62AB5F +:108F700088987DD155AD11748AF13811EB965CF16A +:108F800039A0D3944C74DA1C9B1A407BBE372A77E5 +:108F9000A1BC7BED38333AEA11AF7BCBEA18EACDBE +:108FA000CE9ADB03E817801D27BFC06E90E99CE8CE +:108FB00020EC39ADABB4F07E5A57B5E78AF3F5C370 +:108FC0007D745FFEEDE84C007C934F774FCB29C05A +:108FD000782EB71BED5A3212ADC5FAC9B9F3514F0D +:108FE000DCCDF5C47D31AF9E48E878FEE9A5502E72 +:108FF000E7BB1DEBAFA4F5A36AD3BAC119FFD590A7 +:10900000DE4AEBBA7092F205DB67ADA2FB851CBDB0 +:1090100092562FED1E52F73ED31F1E7BA51CF3B3B5 +:10902000DE5CF87116E6E1FC5A3D9D85F0BEB7F6B0 +:10903000DFB3305FF0CDB50A9D73BF1EFB8575EFC2 +:10904000D79BFE3A1EE355DF0C737D783C6CAD2256 +:109050003958C3F3481627140C5AF3FEE1BFA5FB99 +:1090600042A8247ACACBBBF25D6507AEE57EBE7F1F +:10907000B774FF115F29E065F1BE5C8A5FBDA7721E +:10908000B978EF50F94E8CCB7709FB723C1C5B1F13 +:10909000BE88C38374FAF561BFC84BECD6B8BDB4C3 +:1090A00066E2BE4A5CF08F17AEA71F0F51BF0BEFF1 +:1090B00050C8CF9A07B85E032A3ADEB094E2415E08 +:1090C000B817BED9F57409C0B570931445BF15EB38 +:1090D000AF85F5637CCD468A877AE735CF76E7BBE7 +:1090E000DCD0358BE2EAF3574B64C7E7EF9048CE0C +:1090F000BDF9B7078F4DF3B14C79C487797EE02273 +:109100004F9C35EDFE9FB0F0ABC6B38BD1AF3A7339 +:109110006C36C54BFB5ADF39FED47BE0E76332EA9D +:10912000074D3A3D4F3619F45C15E67CBDF49123AA +:109130004F930E51BBC723DF1D3CF64EE85AF8B4DF +:109140002AC2FDFBCB767EDCFC30A3F894C2F58C02 +:10915000457AE63A81FFCB996E8601CE3D226E3884 +:10916000F61328A7CCEF4C8744EB3CD01206E6DB85 +:109170005D87F31D8DFD73BFFE3AFC7D927EE6FD9B +:1091800064D89DE7F6F7CEBBAF76CB157EAEC0FBBD +:10919000DE918755C21F697EEC7B33905F4E7D4721 +:1091A000A2FB944F611E3696EF90A2EB4C02FB3867 +:1091B000EA65873FBDFC07EB621FCA7D0F9F1DFE5E +:1091C00057C287C307203711916F15912764E0B705 +:1091D00001F2BA4F692786A29C7BF9E9541FEB96EE +:1091E00057C33C3F618169CDC038CD42166BE5E77E +:1091F000DBAD97FF91F370EEEDACE3312FCCC7B44C +:10920000A6839C1EFC94AF87D61FAAFA2EFAD163C0 +:109210009E572977BAEEA1D2B1B8CF50F754988CA7 +:109220006ADDB32D5F42B9BE7CA7B83749D8D1CB30 +:10923000F09F663A9E2E7B66B2326910F8F2E2E940 +:10924000B24FDDEBA2C5A07F50AE171FE3FBBC758C +:109250002FA8DEFC38AEE77EF2E0C3A86F97FCEAE9 +:10926000F66CCCA77E5FED28423A3CB87B4336E6ED +:109270003BBEA7DAD988D7F7134AC6FB4562599295 +:10928000C82B73E7AD829EB4315EBFF8357F625D57 +:1092900005E605FB793EE4934B880E50E67990870E +:1092A00032E7AD2EB9EF8E2293E7A9B9F357776B6A +:1092B000B4DFB902D697C8B67DE5F3F5E40776F5D5 +:1092C0009FE7B852AC1FBDF98C4E9EA857AE2FCF6A +:1092D00072CB35E085D6BB36C04377B689FCC5E690 +:1092E000FBFDB60E70BEFFFA909DB8CF7D72F7F30E +:1092F000D9784EBC677F52E4E59DECAAEAF79EDD83 +:1093000053421F38E5BEF25A1F04BB84F85E06F8CC +:1093100046FF66D94B72A816E3183B3582EBE1573E +:109320008F168D82F2D2035AC14C3E1DCA5F75E87A +:10933000D593572CE8B3E4C74F519E6B4F7EB1A035 +:10934000D3D203477CC8275E7C4EEB3AE23B11CE7A +:1093500040AFAEB767E0FAA6F9FE733EE4C7F71F69 +:1093600097D8908AF4F60D7B9EE7F9E3825E7DE55F +:109370001D9FDCCDEDE4C9C35242AAE89B7EC43BED +:1093800017117FFFF05118B7E1753FE5AB37FCF0DF +:1093900066E2F377D546E2F365776F2842BFA241D4 +:1093A000B38B0C7AF2F70DF7DC42FCB7E8A55B8AC9 +:1093B000C4BDA2C55C1FD8C538AF853BAEA279DD60 +:1093C000C8E2C47F0D772B318CC39C5559FD810CAD +:1093D000F47C4AC8C9BBBBFCF42313EF627C16FDC6 +:1093E000B55F283C4FCB9347439607CA67451C6C33 +:1093F0004796B81F18AD7A11CE97FF59B97B23DD78 +:109400009BFD41393FEF0E78B005BE24B46BCA4BCB +:10941000570CE1746126FAEBD40E54E7347C8FF5D7 +:10942000BB352B30DAD54EE4F3F2F1578BF101EE78 +:1094300020EE0BBC5BC4EFEB609E7CE7158716CF7C +:10944000C4FCE68FC53C7BE47DB7C80F17F2FEC7AE +:10945000E35C8F603E34E5AF776BC921AE3C68BFFB +:109460002B7EDE9BE7AB0939767F07B8284FB9071B +:109470009F8F4BE4FFDEB8D5EF8AFFAD3C24CE339F +:10948000A49DDB74E72D2F1272EFA59F570F243D8B +:109490007A80ED281C54DC7A9996A07C739053F264 +:1094A000DB963DA8519EEF87FB9FF8E5B5C0D71F1F +:1094B0007639F2E9D6A73DF2097846BC351CBC885E +:1094C0006592CF0FF11EDC4CF209EF33CA67989119 +:1094D000FEFA87E9D31E3CBBE571511FFAF4FD2C5F +:1094E000F77EFA59569B83E7C43E7860E930CA4B51 +:1094F000F3E0D5D19F5EBDB821CB74E56FF79EA791 +:10950000E07E4DEFF9168E3F872F97FC60398DD3A3 +:10951000C3AF0E5F3AF6A98FFC7C2F1EBDDFF1F8BA +:1095200011C5773CFB1BF6545683BF27D2EC63353D +:10953000183FB1E56014F9D5BB7F81693DC8CFB74D +:109540001E65745FF9B5D9CEFE04CF8FBDF519FE47 +:109550005E2BE07C5FF7C605098C5744A7C98D993F +:10956000EE452ACEE67EE077D0C7017E9F96CDF10C +:10957000D5A2C4447E6717ED03354B428E72B349C2 +:109580008E34B1EEC6F36098D73B4DF4130DC91F6E +:109590009BE0135D989DFF0515E81A1D2BDF5C0508 +:1095A000E5CB6E1BCACB97C83FAE84B275DBB02F3C +:1095B000E079D8E885F2580D5873AF6D7E613AFEB8 +:1095C0006E802CB13ACC0B28F12570CC2D20BF3AFF +:1095D000F0774B36B37281CF427E6607EA7AE10CB0 +:1095E000F9A08CF9A6625F47CDE6ED5A34DE6EB085 +:1095F000FD39FDD4A926FD0E88BF1AE65AD13B4E8F +:109600009DCAE75F1BE6BF5FA44EB522183750F333 +:109610007CD166AAE7E06F704FE77E0325C4E9A21C +:10962000E4C88D07E0F94581C7FF952DE245E2DEEC +:109630009A3F3C3672278FA79E1E4ABF93A09CA1DB +:10964000F347A7BF16A27DAED7839C3FBE9AD3AE89 +:109650009D0FE53A7DE8CDC85CAF4BFB6FC16775E8 +:109660004EFCAA6C9EE74AF7EE5C7BBDB28BFA0B10 +:10967000376621FD248BFBC31210EF3ACC579F1F96 +:10968000D5D52A141577BEACA2D49D4ED2B859AE0A +:10969000715919D81F90A7AF4EE4F2046B5BB24723 +:1096A000AF4CE0E5B989CAE61326C1B110E118E371 +:1096B0004F94E339A16BE5C42D9CCFDCEBFD53D86F +:1096C000EF855CDFE1BDB7E3849C8E7B84FBEB4ED2 +:1096D0009EDCCA97C57E4237F7639DFC3D04630D4F +:1096E000FD18C0E9226C7CC90B32C555EA9E74E7AF +:1096F000494C7C81C7DB267AF4D225227FE892018F +:10970000D6B1FF922DF47D092BF95BF241BB256B9D +:1097100003A707FF5D96992AB3527F077195F81D3D +:10972000C4332F54E6605C58C9E6F6D3C9AFF69946 +:109730000AE5A11CF2E83B875F471D376E403C8D70 +:109740003ACEBE4EF9544EBF06C7634FBEE57B3CD2 +:10975000DF72CC899AEFE1EF4B69C73496307BF327 +:109760000CCF1CE77986E38FF173820FE3F92E09A2 +:10977000F309DDE75202669099297809D5E4B9CA60 +:109780002D01414F91AF38967F6259D112573F63F7 +:109790008D1B490FE74CA874B5672FB8F30CEB0489 +:1097A0007CD1B04EF71F8C3FEEA6EB24E1FF5D5C51 +:1097B00060E34CD984373CDFC3F5B40F3469807D56 +:1097C000A047B3851D72E89B8E4757BEE61836FA50 +:1097D0007BF8FB7369787CCF8D47870F009F0AEA7F +:1097E000D15CCB8DCFFC7A373E0B636E7C0E99EB50 +:1097F000C65B71DC8DAFD286F35DDFCB1BEB5CE526 +:10980000616B26B9EA5780014A2D57B57DD1557F46 +:1098100078C76C577964E7B5AEFAE725E6BBBE5F5B +:10982000B06FC9A0E83FAA6B95AB9E43FF0B1FF931 +:10983000A6AB3F87FECEF9F53AC6FD93A8C86FEDFB +:109840008BFE8ADC380DD703D1A44DBFF3F479F930 +:10985000E03FBD7C3048392F12FA1EF394D14FFB04 +:1098600083166E43BF34177803F5ACD7BEE71E7E70 +:1098700086E2ECDE3C855B1593F623CEC9D644CA5E +:1098800017625D14DF6E91C53D275375B2CBB7C922 +:10989000F2D753F79F0A72F87E52410EB72BDBC105 +:1098A000FEA1BD2B0DC13ABC8EB74FFDFDCBEC7CAC +:1098B00026EE7DFAD78DF83B942DB9276ACC5C8CC7 +:1098C000B743B9BC57DF837D198BEB05D0E7C37273 +:1098D0000A498F97A31CCE2D68D42493EEBFB2F112 +:1098E0005C07D8393AFF9CCB0AA455B5B8C4E9B196 +:1098F00027E667C0044F2CB980CECF9C69388FEE25 +:10990000573D13EEB97791F2FC583DCF0FB846ACF6 +:1099100037CE2CA8A27AAF5D0FD206FCF433041523 +:10992000FC88D77C7CFD31509CAC61E777B3305F1D +:10993000E6B51A9E7FE0BC9F22F0342587E71DAC78 +:109940005C10B2F9394C8DF6A5717D84BFFBB7224E +:10995000C1E517CB1827DADCB2CB7DBEFE58A38D4C +:10996000F1C7958767B9EE61F9EA2B3C1EF7D5FF81 +:10997000642E3F2C96C3CF75C7C4B857C303EF1FDF +:10998000BA1AE8908BCF6726CF407980F74909CA89 +:109990005F3E06AE17E07D56BC424324FE3B8BBEC5 +:1099A000FC1080FE4F397CFC392CA6215FFC92C54F +:1099B0003F7AB922A53FA71F000EFD9E57726DADDD +:1099C00008F8E6F4A512D971184FC7F7B1EB4A377A +:1099D0006028D519CFE967368B52BF57318B9ECCA3 +:1099E0000AD23D8F8E1E5CB53894CC87FE56BDE6FC +:1099F000A778F11FD69DFEE13700AE5F2FF9F34344 +:109A000098FFCFE227CAD1CE5DD3A9D0EFE62E0EC4 +:109A10005B0B72D0BF9930B8F3D9D31E08903CAC21 +:109A2000BA8BC7D756DD3F92CE55AFCA72DFD3E9A6 +:109A3000F0CB62C12FABF654D1396CE7772EBCFD69 +:109A4000E3FD9426DDF768D0B9CC0D053C5F576582 +:109A5000F16F227C2DC6EC4A2CEFCC15F795940DB6 +:109A60002E0F1165C9467F8871385E147C3AF770F5 +:109A7000FE58E18FB5A2DCBCFEF883E5A8BF9E3B93 +:109A8000EFBEE1FC1E9DC1E183093B1415F3043BCD +:109A900044EB863FB060D49F61DD7040F853B7CA95 +:109AA00016F9F5B70AFFFE9CCCFD78458E46542882 +:109AB000771D564288AF6C7496537EA7371B93E38D +:109AC000F9EFEE5A3AAC6B2E107AE3EE9CD7BFD08A +:109AD000C2E3AB6E3F4DC48B1CBF2C067F516F5F42 +:109AE00022FC87919DEEB8E3C4A44CEBC7CFEB8773 +:109AF000FD28E7F3E9E76E29FE53A443570DD7B7D6 +:109B00005DC9203F5701A6889FAF71FB67DE7EFECF +:109B10004F0EF7CB9ECAE17A7EB3C19F21D07F5909 +:109B2000FC1C9CADD4F1FB50716B1DDC37AB9097E6 +:109B3000ED1C78E6E7F3FA3EE9548D0E7AF6D99CEF +:109B40005F6F6C2B03F6A9E6F8C57233FE5B0F71ED +:109B5000BFC3D1834F9ECFEF4D17F7C38C137168EE +:109B60002F7CE340DEC8D83AF22ADA279FFE0BDDCD +:109B700003F1609EF9F34BD09F7F56A173CB01F5A3 +:109B8000842F37C33C1F46BD0AF26118DC8EE88F74 +:109B900048749F866EF27567C030C6887B83421812 +:109BA000F7FEE84015AD43371B5CAF0EC98ABD8395 +:109BB000F2F481F4D278A38AFCDFDF91FC7BF0DB46 +:109BC00095E4BF47364A656D6A5E2F7E1D3856762E +:109BD0008EA5CDE0159DF9F43C0FD7F5F06A65929E +:109BE000CFF3D423CD7999E2A62B879CFE13DEAB6D +:109BF000C37EC47FFF6ED4E1B18B501F2289F15C1C +:109C0000E2039F5C40FDFD3587AFA7617C55A3F55E +:109C10004342C67B7957FAB9FE3EF58942F59C7EF0 +:109C2000473D324531803F6B931D47717D1838ECBD +:109C300037E9F76D77F3FBD4FF0B6F5F6742008066 +:109C4000000000001F8B080000000000000BB55949 +:109C50007B7054D519FFEE631FC92EC9CD6E084124 +:109C600034DE3C480809E9B2BCA3962B41448CB2CF +:109C700042515B9DB2810A348F0DA5AD65A6CE78A9 +:109C800037C136834E27531D8B33D8B9A1DADA9A00 +:109C9000E82A014267932E0131A1C06C14343A8E38 +:109CA0000D7406AD1236A60A6DA753FA7DE7DCEBFC +:109CB0003E02D57F9ACCCED9EF9E73BEF33D7EDFB8 +:109CC000E3DCCD8A66192000C8CAC4859F2EC43142 +:109CD000EA50DA55809EEC890F01E9897E87BA0F38 +:109CE000E7B3944EF054E3733B6C0CE05809A0BD0D +:109CF000EE4E3EBF4A7FCB918EFE0A009F3BCB408B +:109D000033685EEE84DBDCC9F9DDCA3480E90045E6 +:109D10000AB0B1273B26BAF3F19CD900FB8A71FD4A +:109D20000B9D83904F7C1C2AB073010446571ABACE +:109D300040E7A39CF94C2E659F4A727039215AA1C5 +:109D4000BE584C7A7482407A9481D82E4C95ABB52B +:109D5000060CC805F8451BEEA905FAD360293ECFCD +:109D60004ED2CE39784E097EBB013F7A7EC7CA1BE0 +:109D700053687C42EBADFD0B95191DBB6EC5F364BA +:109D8000D0253F800BC7691ED25365FAC9C86FBA88 +:109D90009FDBC187767239F9FC97EB9D2816D16E4F +:109DA000BE6E4E97FC77D2FFB598DB27A13EF0EF51 +:109DB000AB008B01427432B2FC9110BBB05C02F874 +:109DC000223658A3A24CCD6FFEB1C88E6393187D86 +:109DD000761ECE1F7004BFA92C0238F481083968A2 +:109DE000874F7E9F65D4239F3987BB0A34F7547E03 +:109DF0003F1F6DFBE52C5C97382CA8687148D8266E +:109E00008A48CE50F423BB86E39D7DE7EC63388E11 +:109E10002AC1D5C477695FB88EECB80C3ADB151C43 +:109E2000AB440846708C14223FE43379A67C5F185B +:109E3000ED0E13C19BD7CD03D8A120B128E987E847 +:109E4000E338570130F0B8938DD6F3CC5187C15920 +:109E5000803C0FD838DEDAE0D82CB2FB8123DF2E2D +:109E600055916FC2905713BEAADE716ED452F0D7CF +:109E7000AC88ECBC66F3DC7F29C18D2477D391F3E9 +:109E8000F61CD4EF536162550E4EC505AD41994E97 +:109E90004688C9018464BD0C1AD343567353F1FC40 +:109EA000A7DC74F95BFF81C6F7A6D0F2849DECD0E5 +:109EB000FA31E2BD9AF97F572EFAF3E577FAE636E2 +:109EC00090BD27020F915D2E9FB5C3EE62A6CF8392 +:109ED000115C173E7BB9660CE72FF737DD4CF65C5B +:109EE000AFD8AC7858914D71F71AC603CA5B1DE321 +:109EF000F1508DF140F8AFA678584834C64331C5CB +:109F0000437C0D8BD30322509C623CB0F8C0785048 +:109F10005E045A8FF1C1F657A86C7D5CD488D66375 +:109F2000D9C66C46AF584F744F7CA522102DA2E9BC +:109F3000FD14BFB141C62702309B5C2B40209262CA +:109F40009781DC1C26EF6EB2338E2318536427975B +:109F500024A5C5498E245A71C5690A4A9C7F575960 +:109F6000DDF10CC60D282E110A08271C8F508834ED +:109F7000E2F3874EB60776BC51BBB61BF5DB714AE0 +:109F800062F38BB5ED751853B07475E7511A6B0316 +:109F9000913A1BC9B7470215FDB208476D01C0AD24 +:109FA0000FC68FDA783857917F7B07EFAA9209E7BF +:109FB000EF39200B4548F4AC7939379FE82C1085F0 +:109FC000A9F8437119DEAE87CF843096538A32BF29 +:109FD000DAF9C06A390BE36519D7B3BB7343878ECF +:109FE00082CDCBD35E25DCADF4045F259C2546FEF7 +:109FF0005580B0850367CEE704D1DFBD76AD4A61F9 +:10A00000236C8BB8A7F27F9EF080FB173A60BB15DC +:10A010005F32CA3BBEC7DB45F135DE2B690568F30D +:10A0200038E19D70AC6BF142B4E323DC6CB0AD570A +:10A030003AE7A801D8A2013C86787CE458633D1039 +:10A04000FD8CEDFCD81CBEE62AADC3CF4EF477B92B +:10A050000EBE18F20F9D917C864ACFE5F363A60FE2 +:10A06000AE16B35005C2496B44306248B7F6D99278 +:10A07000F3F86986A73E936A689493FC71DDCE0F6E +:10A0800066DE772CE5BCB8322DFF42157E2985D2DD +:10A09000AB12C3832F46F83D2BF9F6E1639B0C43CB +:10A0A0000E94E76591DB05F3238BA72B8F17DE77E3 +:10A0B0000C4DB2DDA379BD6817AF97E3AD6705CF4F +:10A0C0003B133D82C1F0FF12E673A46B3F56BBA069 +:10A0D00098D9E54CE162AE27E1A75606765EED9988 +:10A0E000529F4E38D2B85E5BA28261E0FA6D64275F +:10A0F0008436185C3F19FFAF9610BF4E89D635EEF7 +:10A1000015C08BEB9A5ECAD07FCFC8F19938B644A0 +:10A11000D29FB79A7669CDB0CBEBF465D954FB7C6E +:10A120006ED9A7088AC83E203D9C4B78812134C255 +:10A13000CCA938B1EC42E14538F894F20BAE7FCBB4 +:10A14000E48F7FEE06C4C55F4DFD73F3385E42A613 +:10A15000DECD86C4F4DE6CE2039EE2F870E23FE9F5 +:10A16000DD6AFABD652FF77BA67EDBBA6D0D768AB8 +:10A170007D30EC0104F8B6BDE9F86A34F56FCCD057 +:10A180003F1414D2CEC7387537A09F369BF8BD9EBA +:10A190003C4D36EEBF26C48BAEFEFFE4CBF44B4500 +:10A1A0009EE997B93037CD2FABBD5FCB2FA065B3FC +:10A1B000BCB6C3C9FD30796C6E2E54277190B97F3F +:10A1C00015E631C03C76E71E818DBDF1C18E5B5036 +:10A1D0006F7FBFA4D4AB444FE6CC437A41BF042485 +:10A1E0004E22BAE0491DF3DCFEA1B2F52AF2F58F4A +:10A1F000882C0E169CF21B59A88FFF94DF553A8DC0 +:10A2000081C04B76489CE4F5D37F6AF2743DE35BF2 +:10A21000974F7CC227FD2EAAF7FB5133C29170EAFB +:10A22000F3D374EE826179B103E77F5628B178BB2E +:10A23000F3B986DF3A90EFF23C89C5E1F1F88E6F11 +:10A24000313F9C14157A7EE9A4C8D6353F2F1922D8 +:10A25000F9577A2CFF219CFF226A53B8BC36767ED0 +:10A260006BFF6CEF6677D2FF9B4C9CFAF3D4A74947 +:10A270002E98E9F2511DBBF3261BAB7B176F70FDC7 +:10A2800086FA9972AD6B9582725EFCE30F453A37A0 +:10A29000D12340219AEA78E1D15774D4EFE2C11179 +:10A2A0003BE058D73B62A73ABBC98AEB0E8E0F0B37 +:10A2B0004F5B636283FD1B984FE3D910437E207789 +:10A2C000DAC92F2D23163D66A7FA1C30FBA0D00B50 +:10A2D000E718DDD82730FD1A5F100C15BF1EED3FC3 +:10A2E00064273942DD02CC28A6F9AE55B4AE092266 +:10A2F0003FA33C9F992FB6EE49A7BF6FE2F0FB5FEB +:10A3000081C39D160E2BA1927078F9F6402EE13E86 +:10A3100012DB74730F9E3F39EA6078F81F7864751A +:10A32000ED24F561E8D0C998A891FED6BA4B27274D +:10A33000EDD427AE8A7EC6EC561F3DB292EC710F6B +:10A34000049B49BF7BA22E2586FAD68FF1B85B13FA +:10A3500075188640F3915DA46762C0C19EEBAF089B +:10A36000ACBFB0F2CF56D3AF5B4D3F6CC5C4EAC5AE +:10A3700094D63CC4EB14EC4DF7CBDD73D2EDB306B1 +:10A3800078BE5813E1F922618BC864FFC43C013ADE +:10A39000899EE962FED00FF37343644F3CA7B93B3B +:10A3A0009D4F28A3AEEDCE9BCEF00B52F55AE2FFA7 +:10A3B000C5501D50DF7DBDBA9FE98F3F64F8A37E75 +:10A3C00082E7A735661D1D8AB5554349D23E99FEE1 +:10A3D00018524B7383D5D73FEFB4D92F5BF45A0C87 +:10A3E00014EAC3220AB7FF707C7A17F5758DCB2467 +:10A3F0009DFA018F87E7F7E6FFAC5FEB47935D14AB +:10A40000071FEDC6F94F1B22E5E437BC1F0C92CAAB +:10A410006FDEB8F9A9F9B8FF931E9B8FF209685D4A +:10A42000E5D427FDBCF0E97A3FD5F96E9B8FEE03AA +:10A4300097964A3ACB9FF2C42A3AEFD37E41D92D60 +:10A4400050FDFF3BBF1F104E700C44853B0827D8C2 +:10A450006F9FCE437B06B43C1BF923B412EB25AEB1 +:10A46000BF6FE56776CA97D877C7693EB3EF1E2EF0 +:10A470002BCDDD44A3ACCEF0B8AFDF7787FEC1FBB8 +:10A480003CEB7908E393EC1A8A0AECBE99ECF3668C +:10A4900008ACCFEB3F74CCC3F243DE7C17F9CCACF5 +:10A4A0007FBD83595FF61D25A4BFB08BC545C86627 +:10A4B000ECF290DCBF17587D81C3E8A4259817DF24 +:10A4C000CA66F6BE7450301C74BFC1BE82F2F91663 +:10A4D0000E05A81AF8A8C68EF355EF3B583FB915DC +:10A4E000FDB313F1BDC5AC63443F867D4D18DAD88A +:10A4F000BDA60D76B1710B7EBEE99F9A0F2EF5B504 +:10A50000DB0917561FC29E974CCD232D26CE5B32FA +:10A51000709D89538F271DA7A8CF93944F13C39283 +:10A5200042FAF40EFEF3D737903DB03F2EA1B83576 +:10A53000FB0DB413BB2F2446DC06D9F313138F177E +:10A54000E9FE86A11E5E2A31FB88CBF8583570A83B +:10A5500084FC9CE8BF5214C4FCFBF2C0A1B9841374 +:10A560005484F9B3E9255C9722574BC44541FF2534 +:10A570008D72B13EB4F51DC947F506E52A27BB5AD1 +:10A58000721D90C7727CD78823411864FE138563BF +:10A59000697D7BEB612960A4C417EAB391F25B99F2 +:10A5A000192788EB02AA87733C2AA3C351EE6FB127 +:10A5B0009F8F78FEFDFC3D888D9D3F657E85DECCBE +:10A5C000EE77C52EA0381CC27B7D2ED243A359EC5A +:10A5D0007EF6E85B8D1590723E08FC5EDB6A9B2878 +:10A5E00060F7C61191C9D73A325950E6A63CD7B5A3 +:10A5F00092EADADD66BE385EE2DA46B8D6E9DC1900 +:10A600000076D20FF747A8EEA2BCADCBF8FE36130A +:10A6100057BD6FAD71CD237FF54F9F2FA14A8B4C56 +:10A62000BCAFF404967B1625EF1FD7EB2753EE3F04 +:10A630009C3FEA49F1B47FD461D40B745FBDF2CE84 +:10A6400043A4EFB0ECA37C1EEE77E8748F6A7D3FE5 +:10A65000CBA0BA0FC1E03728AE1F1DD85A41F50F65 +:10A660008436E68FCB03C31D6CDF411B652E68E982 +:10A670003F5BC0EAEC81454F53DF827DCADDD4B732 +:10A68000EC8FDA58DFE23FB590E16DFFC985DE520D +:10A69000BA3881CF457C5B86E500D963FFC933CFEB +:10A6A000D6E3B9FB7BEF607D8B706AA197F2D00295 +:10A6B000BAA752DF325CC6684B9FFB3DBC4F491CBA +:10A6C000C962EF0B0428E17881B234BC34F7BEC113 +:10A6D000EA7B739FA4A5E2C6DAD7E89179FF4C78AC +:10A6E000417EE188A0313CBCC6C7E6BEFD05A4475B +:10A6F000932DC2FC1BEEB6F1F91E3E0274B27DBA78 +:10A700004F64FEFC333D423F9C108CEF51E13E61B3 +:10A71000F6EF27DE0BDE4C79F0C4EDC10A1A139E6A +:10A72000F47CA8C30A263708EB98DFC77B793F95EE +:10A73000E9C7710FBF9FE7786163E01AF31F78F8EC +:10A74000FB923576FE1E87FAB09998D74E9BF5FAA4 +:10A750005ECC5F0AE697DF99EBDE06EC37041AF968 +:10A76000BD3142B18CFE5A7F976084D1FFEBEFB1CF +:10A77000B17E0296F23E3B80FF94B72AF6C8697913 +:10A780000B676C1477EB57A7E7B30D661FB4E12B8B +:10A79000FAA0E7AC7C560EE5BC1F77BB0456BFB1F0 +:10A7A000BF647D875146FCAFD7071DC73CA6621E1C +:10A7B0001BC23C4623D6A5DF78AEF13E2873BF55B9 +:10A7C00097C295EFB2F737278EBCF74A1ECB9B593D +:10A7D000504275E1DF280DDAAF453165CDD81F86CF +:10A7E00075CC6F6DF0AD34DC59FE1BA7BEBB7AAAE9 +:10A7F000FFFACD7C159AE33847F609491376BC4336 +:10A80000C3EE8E7D01C28D2D1AD6E9BC0F45350DE4 +:10A8100027A1BE1F00D5917025EFCBC6EFE0F50B49 +:10A82000E52E72A4E67B88FF3A0FE7378C6601D5E8 +:10A83000F72395EFB2BADE128BDB291F95F7363C72 +:10A8400041F18AC03B43EF6BEE35EBDE5A27AF7325 +:10A85000F75AF7354B7F133F61F0E83C2FE7B39190 +:10A86000D6531DBCD7AC7B6B97A6FBBF02E2AB6691 +:10A87000A11C0F6802EB9FEED3D2E7D73D38FF0D46 +:10A8800072D3D7C5CDE79EE05F28EF25E293F7D3DB +:10A89000FBD113951F15913D4226DE7D156ADF1809 +:10A8A0009EE7FBB332BF1DF7B4BA726A14C4EFC798 +:10A8B000A6BD1FCF0D8E132E12C6F92D982CBEDC0F +:10A8C0003F8E3A939DADB8F2CD80053F70A7FA8DCB +:10A8D000EFB7D6EDF0288C3E61336EA4BC00D5DE18 +:10A8E0006BDEFB32F36FB8F2CD1AF2C38923C335A6 +:10A8F000F6147F5DDC11AC60F5A3FF6881EA4EC5FC +:10A900009768E24B66A320AC33EB623ADE2E12DE90 +:10A91000E8FED47BB6E016C2456FDD74414DA99BBD +:10A9200007DECE999DAA4F5462EBF13E54BE615AA8 +:10A93000AA9C4F703D239C1F3A5D67F7A083F317D5 +:10A94000EFE66ED045A2E76CFA2DE10AA09DADB707 +:10A95000709A6DD3B559A88F0DB6EBB38A937A4729 +:10A96000ECC0F8E8030EE345D6EFF33C9338A7B00C +:10A970007E17E046201C1E347136CFCBF3D3124C29 +:10A980004E84C7651091283E96800C0F132D63608E +:10A99000E3782B18ECC2BC448E1D116AD8735D4657 +:10A9A0001CDE0663ECF9727AE583FB6E075526BA66 +:10A9B0000EF476BA7A447B5F97A87F8C15C8791716 +:10A9C0001077EC8E750DBF25ED22C3050B87B818E7 +:10A9D0009B19F61EDB927BB1C0E55EA28193F2E883 +:10A9E000FD5E9E577C2EAEE7C438B0F759965CB733 +:10A9F000C8B05A42F96F93C1998DEB5F3B26B2788C +:10AA00001E18530DCA773EAFB9EF6FB8AF98B52691 +:10AA1000F0B03FA9672DEEA3F7684B64BC0133FB90 +:10AA2000C4AEA9EF5DF4728BF5E713DF257E755197 +:10AA3000077B6F2D3A758970BFD6AB32FFD0EF1C04 +:10AA400039C8A7B65380513CC757CAF5B3F8D76287 +:10AA500057974BF1EDE5F98B5E018F7AF8EF1FB454 +:10AA60000F3B1285EC23C40AC4ABAEAF6FC74401E1 +:10AA700030B973364F5CFAE9C2E4EF40BEE89BA3FD +:10AA800002D62941D3585DF239DD31EA8BD1EB177B +:10AA900053FBE7CDDE4D0DF4FE505015661F0882C6 +:10AAA0004AF97E06EC55A89E88B4CECBDDF431FA87 +:10AAB000E901135FEF67E7D4D0EF462F19EB54C2DB +:10AAC000F383F94EF6FB8CDF59B480EE7765B9411C +:10AAD000C6F77DA17B3663221B8B02D392787681E9 +:10AAE000B694EC8C5D02C3E74E27E777258B8F2E5B +:10AAF0004CCF4E94E749C4BDD343F201C3AD6EBE03 +:10AB0000DFD43FCC32DAF1BC9F480106BE2BA2CF86 +:10AB100049FCA02438BA04477985A66E77534B8E3A +:10AB20007AB8927A649E437ADD6AE92526F59A7AA4 +:10AB30008E6E9B5B4CE7A8ED6302D3AFC38B7ACCE0 +:10AB4000771837D1FB86EF88C68F490E4B2F3434E8 +:10AB5000FB5D4931ED65E9A9901FA82E68E807CB98 +:10AB60008F68AF27B3D3F5B481A98F8AFE98375584 +:10AB70000F0B0FFF053A184AEAB01C000000000056 +:10AB800000000000000000001F8B08000000000013 +:10AB9000000BCB156060F8518FC067B850F9E838EA +:10ABA0008B13955FC58D5F3D212CC38060CFE66020 +:10ABB00060E86386601F28FECAC4C0F0008AD733ED +:10ABC00043F04116841E257606064D20360062733A +:10ABD00076FC76A9B2628A6D956760885446F05F0C +:10ABE0004B3130A84B3330344853E6AF513C34F04E +:10ABF0000E13543EB71E2A9FC78081C1D91489AF56 +:10AC0000479AF95B807AB7023100E0A5DDB96803A5 +:10AC100000000000000000001F8B08000000000082 +:10AC2000000BC57D0D7C54D595F87D336FDE7C64BB +:10AC30003E5EC2042661882F214074030E2160C04D +:10AC4000A80F081495EA88D422BA3A0481205FD16B +:10AC50005A49ABDBBC904F3040D4B84D85EA80C236 +:10AC6000E207DDE0E2475BBB1D152DEEFAEF3FED9D +:10AC7000BA2B76D10DA814A9DA48ADD0FD6BF99F97 +:10AC800073EE7D99F72613C0EEEE6FA7BF7AB9EF8A +:10AC90007E9D7BCEB9E79C7BEEB9376EDF14265FD5 +:10ACA000C1D819FC41DAEC608C4D4DA78CC95ABF54 +:10ACB0000753669C196BCBB333CEF3C97F31C19E6A +:10ACC0003718CBC7F4BB8C8D64ECDBA20C7E3AE664 +:10ACD0006B44C684C74C594C61A9B2743F358CE7AC +:10ACE0003587C4CE48F8D55E6E8ED3E0094E62211A +:10ACF000C64E79796ACC82A24A48DFF5269B8B1929 +:10AD0000FB9225C6F279D65F129F48E9C598364B6B +:10AD10006C51AF3F0B1C6C03E1A5A3313EE5FD7107 +:10AD2000E9EF1ED9608E30F51DDBA541EA6732CE12 +:10AD3000A70361C33CEBD39D50AE8463533641BE41 +:10AD400002E045F8AE75C42B383E74160F30760914 +:10AD50005686FE5F2A6E8BD4029C27634ACC0DA5D3 +:10AD60003EA68DAA0578374F7D2D9200B87C729251 +:10AD7000A998FA998E7032F6378C4D63EC8F1E3E8F +:10AD80009E09D74CE6A071D2F0DBF1D487FF80F2A8 +:10AD90004E97B6B51AF1F27F9CB15D0CF31C4F9B38 +:10ADA000A78EDF61C01CDA1BB5EA52F8D6DAA84DCF +:10ADB00091216D77F52D5A0AF3315E77D17C9B1B7B +:10ADC000CBA6C8808F97A68E0FF5972328F6719B88 +:10ADD00003BE45C972C26F7F13B45BDFBFEFD24DB4 +:10ADE0005A3A2F1F7EFED24D0CDB05A9DD662FC718 +:10ADF0003F4048E3042AD50A5EFF0E9AA7C937DE12 +:10AE00004AA083C95F980FC38C60E89AC0428670DD +:10AE1000B84ABB740669206218983AFF0493463A10 +:10AE200015B0E42EE21BDD5F00FDE53041A76401B3 +:10AE3000F1A5A2F27CCEE115F3D924F87739E00D23 +:10AE4000C651E17F674A80DEA53C6F8EAB58F10AA0 +:10AE5000749259E7A7CE20A6967AF0DDF9E59438EA +:10AE6000E1B5F24E5F138EEFBC3984F474563A8E1E +:10AE7000B8A1BE3331694ACD9434DE1A0EEFB8F46E +:10AE800040597A9C0616081FFB2B868C7209F1B973 +:10AE9000689FC9A7667AAA3179E90117CDCB61C548 +:10AEA000DB70F59B1B194B4D48E75B8AF5084C9905 +:10AEB000751857EAF274C8BBF4881483611F9FA306 +:10AEC000CF03543927C4233118BF35173A2D64EC0A +:10AED000416365CAC0F934272331C0F72657C6F746 +:10AEE000D971FADE8AF42D1F3AFEBF3027A7BF2B97 +:10AEF0001961CEB45C700BFAB8D5D7FE24019E362A +:10AF00004BB1D3FDC8AF0541E23F28EF90F3289D38 +:10AF1000A75460658F8CF3F598ED64D62257505A8C +:10AF2000A3E4E1BC923DB5C8BF057EE277F6911E71 +:10AF30005902FD754C1E19DB64593FAF3289E06937 +:10AF400071717EEC74D9E1DE2FCA7B998BD70BF03F +:10AF500072A63647AE0B64E907F13483B117D8AD5A +:10AF600006E2E355040EE70BC512C253AC70BED423 +:10AF70008DC88280ADDCC8B596AB4D910528AF0C6D +:10AF8000E81FF0E389C0BFC7DAEA733852508E7801 +:10AF900028405E81F9FB83460EF0B3BBAC8DF853BD +:10AFA000C95D7E30A5A11C4ABC4A72506536BCC939 +:10AFB0002C9E928A316397D7C3F14FA69C766B96ED +:10AFC0003CFE2762C997E07FA3EAB19C74FD41FD76 +:10AFD00060CC6456BAC3C8767D71857EC889EB287B +:10AFE0005FD136007CEEB0929226F1A28169B81E44 +:10AFF000E187DF2BDBFA905F149C7710FBE3EBD249 +:10B000001DB1AFDF73ADA3CC75F821AEC39CF43A8C +:10B0100054583C94423CC5230E843320FA56628A2D +:10B020004178669D7DCE4996F578C98210E80890F2 +:10B0300033CA112A8F249975FC0E5C8730F9622976 +:10B04000FE39E2A339F40895CB8A417A815DA47078 +:10B050003DC3FA22D74D4CB7EB43E10774ECC6A2CF +:10B060007C0B3E7BA28EF3A15FE6FA87A971FD629D +:10B0700084892F6489993F5A972EA1DF2E90387FBB +:10B08000B32E2E675473FE383EF0A59725A9B31C46 +:10B0900096A2BC1B350FE49DD178A814DA7779EA23 +:10B0A00075948B5D51E4F1A1706D69F4D8E01A528A +:10B0B0003E9DEB17A7BF9EADB2E0519582020F37C0 +:10B0C000AB28372523C1CEA0FC645DC2BE894550A4 +:10B0D000DFB73536B0F7407FF95EBE9169907745AE +:10B0E000EA75BD5CCC773AAE8B4A9EE2BCE19F2EFE +:10B0F000B56CC7262873699E25DA244CD5EB34E25B +:10B10000BF26EAD75576D13289BE8B7516D6492F20 +:10B11000C9A58CF85056E3444F58779512C2E1B157 +:10B12000AF3BD31E606A187515E6B5F8C42CEBCD9D +:10B13000A4AFA837ECBA1CB4BBCC7927156EEF0CC2 +:10B14000E619CF1B76BEC17424CA010E971C31B814 +:10B150005E8BB024A59A7CACDFBA8E44BB66FCA79C +:10B16000059E362137E91746FCC51EDB04746E2B9D +:10B17000981B590ADF17490A8763BE1D0F667BC0FB +:10B18000D322C493AC26086F267EDA0AC68712D86B +:10B19000AF3F8FE89339EF36B05BD05E190A479224 +:10B1A000DBB9852C3902E6C1BE985286F276B87EAC +:10B1B00032F1D8EC8A1D4AA0FEC957487F3825666F +:10B1C000D2895D0FFDDC2971FB4E0EC3FA473E604C +:10B1D00009864B04E671A7943F749EE67C9A03E6C9 +:10B1E0007CC259E168C1F98C4BC33FF85DE8A7E127 +:10B1F000DA65C23F5C39EAF725A8670299F3E27481 +:10B2000093C39C6E5BC4FC5C7E2EDF5CE184C9CF83 +:10B210005BB2CF2F4EFC95393F59F5107ECCF165CE +:10B22000CFF86A794A1ACE6D92CAC719842346FDAF +:10B23000385546ED1AA5C436E40B67B88DE4ABD398 +:10B24000AF33EC5F8940071763AA2F3200AF2D2F71 +:10B250004D67E5D8CE1F63AB27A23E48B0F950AF8B +:10B26000E54B27E78770A58D5FFF5672D8F06BC25C +:10B27000B356C8834CBCFD7E18FEFEFDCFBE46FC17 +:10B28000BD5FE0EB2CFCBD1FF196C9DFBFFFD90409 +:10B290008EAF17F2B3AEEFB59EB1367C3121972356 +:10B2A0000294A268DF4C54373DFEE3871230DE7D06 +:10B2B0008CC3BFD57F7C2E7E7F343FF10AE26F4D79 +:10B2C00043BD86F22992608E04B7DB683E739C7E94 +:10B2D000EF5148BBF492502DC0F5A190F3997074D2 +:10B2E00082DE40BE6C06398DEBEDD43B1CEEE1F8FE +:10B2F0006C5BA33ADDBA2EB7C5E47949E87FDBEA97 +:10B3000097D5D980BFD670690599037512EDA33C16 +:10B3100042EFFC3B8E3F358D1FC0DBBF23DE4CFE72 +:10B32000EB9C7C03A5457A425761FC312C61A05D02 +:10B3300095DBC062298113D9829F48B5C340BB1BEE +:10B34000F0F03EE121D23753063C6989FEB928F37B +:10B3500036A5E9EA2D857EEE7F7D5C05EE534CB87F +:10B36000C73BF83E8795E771FE94419F04865F775F +:10B370003D80A772BE7E25AC5798E072B41DBF0316 +:10B380003E764BF1CF703E8575030ACEE313D38E24 +:10B390004388816F5A98F9332EDC4D7C367232C265 +:10B3A000C31C9C5FD9766938FE628E2CFCE5D29274 +:10B3B000C899ECA49C901DD05E89F6AAC8079EBAD5 +:10B3C00014A5EDE6F806286CE8B720ADFF89CF0399 +:10B3D0009AB613F560D8C1E95250D5768703D66185 +:10B3E000A45C36DC9016F42FA1FD93E7F0951F3294 +:10B3F000FE9DF63985B725715BC92ED0BA2405E0CC +:10B400007C5D4E8471FCC0E46E5D82BC722F14C3FF +:10B41000F8F7BB12B4CF55AABBF47839A7EF120BDB +:10B420005F8D13F87745989E2C4FD3B7C7C9E7BFF8 +:10B43000B57A8377851FEBF908BE22B650F0455CDC +:10B4400047BE50045F00FD4B717C2DD13717E15A88 +:10B450001BE96B423880EF47211FDFEF520B108E44 +:10B46000FB272B7C1F6BB037912FFD0E21DF34F8AB +:10B470001FDA9D22FF89C4F7033857C493AAB1A4E9 +:10B48000061DFB113FC1343E5CACAB0959DA8F7825 +:10B49000C2EF5A9C49208A9C358C8D807E22AB7FDE +:10B4A000CD5809E1A70AE9E7D393124E4DF177E9A8 +:10B4B000C89FDBE4FAFFF81BE87FDB4167CCD02CA8 +:10B4C0007C28EC1A134FD1D5B0DEB2E869B3FEB9CF +:10B4D000ED065DC6FE6A3C3924EF5F117204F8F593 +:10B4E0002A84AB46FD94F895F9479C577FCE06A772 +:10B4F000F6FE0824964A76A95BC0D61C05BB18F157 +:10B500005B1633D0CE72439F28479D5D92CED741C4 +:10B510008C2D04BE5534876D5F21877D367BDED947 +:10B52000A0F0FE17011FD9FC4C495A474E91C3FEAB +:10B53000711CD02749DCA2C97E96F222CDC47E1EA2 +:10B540007981FBBDEEB1F91D3AB40A966DBF60EE8C +:10B55000F791A6678A87B61B1E2F19E32DB4C37D0A +:10B56000DEEDFCB276CC6C5372B676323B66D9A770 +:10B570003521DF5AEC3EB0935E9042C89FD33A9695 +:10B58000005FB56111D0B55DD09D251D3639E38CC6 +:10B59000388EE07ABFD6A1F17EA29CAF647FC2A0B4 +:10B5A00041A2E7C767A65D6CEA718BBEEF42BEF3AE +:10B5B00008FD7BB514FF01C92B7F57A4C9829F6684 +:10B5C00085D5119F680BA9DEC67173359417269F28 +:10B5D0006DCCC0A7E9CF6B6B4C92FDCF346E472B7F +:10B5E0009118C161EA954CB84CFE1D1CB794EFE769 +:10B5F0009C9E2E9257DEAEFB7507EED3FC8CFB179C +:10B600004CBE05A186FCF114A49C3F9234FEB0FC14 +:10B61000AB9D9F5D9FF9FD742C164238964666CE11 +:10B620002805FB6079C31D94D6366C9C2E43BFC79A +:10B630003ABF15B4F2EF6F7BBE1DE4F8AEDFB2087F +:10B64000865CBEDD497E90DF762CE5DFBF3873C6B1 +:10B6500009F45E21E80DFF51507FD46E97C89FF02A +:10B66000D23BEB8BFAFD986FBF03F73DB53D2E5DE6 +:10B67000B7EEFB059CEB1D3AF9755A1BFBAAD17F6F +:10B680006ADA976F0BBE51CCFDA6AC93FFE4C78E70 +:10B69000C421942F0DFD4DBFB802E03A1570684EDD +:10B6A000C0DB2BFE9251E8DF5BAFD44F502DF35837 +:10B6B0009FA724922487BA6D787BD3E1CAF0837266 +:10B6C000788C596C910FEDDD2053D11F5CE3077529 +:10B6D00000F993FD12F95D5B055F0C59E70DF74D1D +:10B6E000972D7E3AB08B99E64FEF979D653C35CB11 +:10B6F0007F2FF4CF498793D25F3A1227917F510E63 +:10B7000035E4E1FAE99CCEED383FED53CD759986ED +:10B71000533D84FE6363A4A2219CAD134DBB80DB2B +:10B72000D54C8E33F407350B786BC25CBF99F31898 +:10B730008E7FDA1BE36487B5362EA2B43DD08F3CF2 +:10B74000CB36C8313D4E7642DC83FE850D1E9EEF22 +:10B75000684CF0FAE1851EB40737A8FC7B6B6401E6 +:10B76000CF6B665E94EB22AF4139C0BBC1E0F94DAF +:10B770008D75BC1F6D21FFCE26F37AA5A21F562121 +:10B78000F2A21F56390FF57F6B99595E45797458AF +:10B79000E1BA36E5796B19AFDFD9584FFD6FF0C7C5 +:10B7A000E6E9E58269ADF5CA393CC1862D84F774B6 +:10B7B0003D3DA31E87CFC457BA9E61AF17E3700DFE +:10B7C000ADC7247BBD85C3D573D8EA552EC83A6E64 +:10B7D0006BA51D9ED6F0490FAE4FE0A76AA765BFC7 +:10B7E000E212FCB495B179C48F06F37CB702D82479 +:10B7F000CA5A4A40AE5FE9E4F65A83C9AF512657A8 +:10B8000041B9B394C997E759FC3F1AF3D0F732E630 +:10B81000B17D5761DF6F5BDFC3F12DEBF122DF16E6 +:10B820008AF515E1F6F8B9F87253A3C1F9B1B16A16 +:10B830003AEE2B7CCCBE9ECCF426A7B07B33C687D9 +:10B84000F9B2EFE6093F20FAFB0F7BC96F0A6B489C +:10B85000AECAE3F3BDBCC2329F08CC338FCFD7F65C +:10B860003D6A9FE7A0BCCF900B4EE0275AFFFE5EDB +:10B87000D20FEB519F1682BE697E6E26FA7907E5DC +:10B88000572EC82F80E31515E4D759FC8D1B1BF5E7 +:10B8900019A5B49FAAA2D427E444B33ACB83ED5AA6 +:10B8A000419DA548AF2518233998D0F1FC693DD4B6 +:10B8B000413B50568D14DA35DE08E72919ED63B4A3 +:10B8C000A3235D6C85857FBCA6BCFDA291F879930E +:10B8D0009F2F156FC3DC19A52386C2E58BD4901E5C +:10B8E000C99CDF2F1DF1FB90FF721A5ACE2EC7EEB6 +:10B8F000676532DA5BCC176B2279CBE97312E8E328 +:10B9000046FAF80D7756BBAA6136E92D73DCA79C81 +:10B910006F70BC7ED1EC2E82F6CD87DDB10D1AEAB8 +:10B92000853B57E0BCEF7CC7CBB0BFE1F0EB6AF8DA +:10B9300016CDCFD970936D9E4E90E3A4C7D518E174 +:10B940000F608B8DD3B8FE47BCE154EEADC0F677E7 +:10B95000F3F689BB6CF830E1FAA5437FDA997F16DC +:10B960003CEC658750EF380FBB553C077AE59D4BA3 +:10B9700068BC3B8FF0750178213C9D043CB98BB9C4 +:10B98000FFADA1C2BA3EE6CD28A5F59120FEF0227A +:10B990007E000E5F3446FCE02CE57A8C45017E8605 +:10B9A0009BD75E3A9F74FBEB690E83E51A2F6F6D90 +:10B9B0008C537F9D8D75BCBF5283E1BEC91513F8B2 +:10B9C00030EBC7383EBCA5091DFDEF7EEC4FB394AC +:10B9D000579AE3F5517B4F14E0B3AC1FD0E7BF4655 +:10B9E0003E09C4EA6CDFE5C85D84CFE1F075E0C8CC +:10B9F00084D0D9D6CB7D8D0D242FB6087D765F718E +:10BA00006211EA87CDA8D700A02EA1B75A50EF8CBB +:10BA100043BCD553EA958BB9BD2AF3FDDB6666FEC0 +:10BA200054E681FC1691DB2ACE43952A39B953A2FC +:10BA3000734009FDD89B65FE7D7358A3F3E4AD5EAA +:10BA4000512FCA923B8B793FE43FF532F31CD85318 +:10BA50000C78F2543AE83C736B6E82F4DC6676C87C +:10BA60007327C0BBB558E4E53ECA87605DE33C027E +:10BA7000AE3E95F23E9ECFEC3790FB6B15F542281B +:10BA80004FD4970EF1FA25F6F65B15DEFF16B99F37 +:10BA90008FE74B083D6FEF6F8B7A94F4CCD63C3137 +:10BAA0001F95CF670B3BCEDB95D8FB198E2EC14A75 +:10BAB000C0BF85CEB97AC29637ED5F975A67DB9FD4 +:10BAC0007AA2F5B67AAFBC3381EC3DB3DF03FD63F8 +:10BAD000CFCA0FC7901F2CF2F99837710BCB05BB5B +:10BAE000B4459DD5520D7957A24882FC630F4CDDB9 +:10BAF00030EF32C6EA1A66D2FA592EE4C28A86AB11 +:10BB000079BE73A982727D795222F9B95CACFB5A75 +:10BB1000834551BF5C2BFB6C7A14743BE9D1DAB0DE +:10BB20005DBFD4AA5CBFD446ECFAA576BB2BC37F1D +:10BB3000AE15A15DBDA26136C915B3DE8ACE6F1107 +:10BB40001C2B709C722C9F4BE58C258A1641FD990D +:10BB50004838E0E3631B2714A1FC3C2A698F34A01A +:10BB60007F7AA58FCE8932F1639E53FCD88CF31077 +:10BB7000F27F7946FC4066BA5CC87FD03B04E75749 +:10BB80001D8F9C16902E37F50ECC77D1C4F4F84754 +:10BB9000C31C17539019102E19F091E5DC63107F28 +:10BBA00089BB6CF2FBABE26D86186726C2957FFEFF +:10BBB000EDCDF2EF09BC5BCE512E44BCFCA5FCD40C +:10BBC00096E6276EB7D4F9C86EF9AFF31597A35F61 +:10BBD00095CE3F76A8423EC2BC265AE896412FB386 +:10BBE000DD4A81CF1674A24E1D4AA74C3C1DADF311 +:10BBF000399C608F1E3D3887F6CF0F2BDA2D2857E2 +:10BC00005622FE46201E39DE8E819E6B7159E9B2A6 +:10BC1000F4B52AE0B7DA8EE25CC9323EE4DB2200FA +:10BC2000D38A9EE2C9A8975676703CAFE85932A3F2 +:10BC3000C5820FC07729DAC34F0B7887E0BB54E089 +:10BC4000BBDC6E0FD796717BB8369681EF64767C3D +:10BC5000D70ABE8179B63C40F39C1DF2FAD3785ADC +:10BC60001AE1FBF287835A10E5F431D0572D20B743 +:10BC70008EA2DD0EF9F77AA60497E0FA92B91DFFBD +:10BC80005ECF549EF788FC7628C7FEFDA2FEF6A97B +:10BC9000C12559E471263D9646EE12EBC030CF0D1A +:10BCA000C8DE3805F606FADBF2E5C46B32EEBBFD02 +:10BCB0004F7E88F101A702337E49EA6B18FD6CF6CE +:10BCC0005B50271FB5DACB8104E4ADF13965F6721C +:10BCD0008559F2C53678987F1AFA9FCC5F52F00DDD +:10BCE000631F59CE235DFDB94BD16F3A5333526870 +:10BCF0005F9FF43B347796F3E3B41CD2A6C816BF1B +:10BD0000174C7BCAA0DE817CB3BFE4ACE7162D8D57 +:10BD10002FCCB09E5BC8B2CE309E451674961BFEEB +:10BD20007106F2EB01E8E708E9E90DE639B3385F9F +:10BD30004DDAE8E06C689B6E3DBFF10E9E73D5DB7B +:10BD4000CE7B3BBCC62154D1B95BEED9702594772C +:10BD500098E77DA5DCCF81DD22FFE68CB9E1F14DCE +:10BD600059EC5E3A39407F596A07F9BF7D6571AA7F +:10BD7000AF00CD4700BE3C80D33EDA4F7479701DD2 +:10BD8000062AB9BF2BE8E27CC35EE07151665CC352 +:10BD9000C6CA9755AC776A0CB4F3A7DB3134EAA670 +:10BDA00059EB395810C6F14F94C9BFCA4AF9B91FA7 +:10BDB00093EB23673BCF96357EAE286B1D7DE29CCF +:10BDC00099FC8B9673D4D12E84AB4BCA7E6E5E7A6F +:10BDD0007EE7A0E75BEF81469DE2FDCC75B21ED702 +:10BDE00009C0D1DD386FCAFB2E444D3DD9830F38D1 +:10BDF000121311AE86F9F30C5C72A7BE5E95C234C5 +:10BE00006F9436198F32BB15968A57413E47DB0730 +:10BE10002CC1D6B64D9DED07D4E6A1D10FFB874BC3 +:10BE20005BE7341B4087BCB1DA64470C879B39FB66 +:10BE30000DAC3F5AFB14DBB7792E9B3D0FE0CD9B39 +:10BE4000C0288E88B1AB66A35F20EFAF78BEB58DFA +:10BE5000B737ED91CDC0AF087747638AD2592E7EB0 +:10BE60005E528374853420F791BF32007C8BFE468E +:10BE70008C63C4BCA7E135CAB30820DCE22F7F3451 +:10BE80003F7125CE6F4DBC7F2E76E1F49BE785C9CF +:10BE90001E8C4B31CF8DE74001A3F8456DA7753D52 +:10BEA000DEEBE27E8796C643E4FF6B6BE4E7861B1E +:10BEB0001B553A37EC1CC37AADE7C16E37AB273E52 +:10BEC0008F89784A01C7A977DC3C0E23A2EE407F18 +:10BED000E04D2EEE07B8D6A1DF84F09DECBF9ECEDC +:10BEE0004D4C7E1842D7587FF5A01C28417F7762C1 +:10BEF00011D2634DEB33B3C280DF366F82D6DB865F +:10BF0000E6E76621BEE5889C72015C72D9A1C5E8AE +:10BF1000DFF44A5DF159B83FCC95C9DEB94BE01367 +:10BF20006AFC19E3AD5A307E10F8C1F5573778A492 +:10BF3000122C177A94C53D74EE06FBF2E37924DFE8 +:10BF4000526E8A57633DA5A65C83A9B8A28E23389A +:10BF50009ECFC9CF77D83F3BB3DA552E2495450FF6 +:10BF6000C9E158B5D56EF654F649B82EC7C85C3E3F +:10BF7000B1E3CDCC1A2F9414FC00FB22E2E3C17E86 +:10BF8000C3DC9FEF4AAC9EF23EC8A71A29B191D6F6 +:10BF90001BD81BCC22974DFFF81FD91B4C87AEFC3A +:10BFA00087BF7610436E3A1A0FCEC0FED88B634817 +:10BFB0006EF855737DF2F36933DE32A7949FB7E4D0 +:10BFC00088B8AC9C98FCB9555F64C65DF5B8EC7157 +:10BFD0005766DC96AFE19E4BADFE78475992E1FE85 +:10BFE000C08CB7DA29E49859EE6BF81ED5DFD4D8A7 +:10BFF00070295F1F025EB10FF28BF9B17B39FCA68D +:10C000008E30E7F7CA3B7F975A0374F94127F0282F +:10C01000F0DF0F5407C953FF4490C4C5E9F597D327 +:10C0200009F3B3F073E6FCFE41F06D4BE3715A9FE8 +:10C03000FB1106CA0F50DE0F0CF113DC831DC8C0C4 +:10C04000A398B77C611FEDF7732AF93899FDB38384 +:10C0500067C77F6B994E93CD5145FBF3A4C3EBAEFD +:10C06000EC71A8AC017ED388F5F9785F40E9B4B4EF +:10C07000BE36F160D2C5CCC3FE2E64DDDF65A68F6F +:10C08000379E26BD0BF2E2524C1FEF5A407ECFD2B4 +:10C090002E96C433D652C1AFBBBA67BDEC8175D9F9 +:10C0A000DAC574046B5C372F1F17E6F1B56D910587 +:10C0B0002F7B30BEA01BCA358A13A17245B4573AF4 +:10C0C00075DF85B8DFBD8DC510E60215F2B8FE5AE2 +:10C0D000B8DF039714E26F8798CFE8AE8507D16C7D +:10C0E00019ADEA7957A23CB897FB3FDC51DEAF5B54 +:10C0F0008CEBEE8C5F85FDB8EFE2FD9AFD3C2AD813 +:10C100006C8C1A5F40EDCBF83863BA9F9979A5A57E +:10C11000DE0FC5783E35D1518CF5AAEDF06C13E5F4 +:10C1200021B3FC360E8759FE03314E4924DC34130B +:10C1300053B5FE20D5ABB4D7BB5FF413C0F2707A11 +:10C140009C40B4F2E599967A5B45BDB12A3F777F72 +:10C15000BCB1E7D2F7893E1D970A3D49F54C7F8A6D +:10C16000B9CE76367651AA74F1769E0E6D966EA192 +:10C170007B91C2E5919922FF47D0DF7621C1CA4A5F +:10C18000CAF9392DB21AFAE1723A84FCC8E47B0686 +:10C1900079E0D722F8713BAF57427BC3E433D39F9A +:10C1A00070E0C82536BE632DC067D6F8D47B81DF2A +:10C1B0002CE7A9EC2E8F3DBF5AB5E76F8BD8F3352E +:10C1C0009A3D5F5D76A9ADFFCA98ADDC84A3BDB191 +:10C1D000617ACD38F467D5733F5FFE4004F7075BA3 +:10C1E000F3B9DDD7827E61F473A19FD88571258B69 +:10C1F000C86FD7857E3CD2A709FA3EBAA1797ACD1D +:10C2000008F4EF55517F9DC26FF803F4F3413A579C +:10C21000E1F227474BA4248DECAAB94A3ED19DC731 +:10C22000DD083ABBCA75D2A7ED5E6D31C2A1A8BDCB +:10C23000CC61C1DB6285C7058D1672CF15E67192A0 +:10C240006357837E96ACF5385D1B06EBE90CF7333C +:10C250002C0AD213C66B15E3DDA8E472BF10945309 +:10C260009C86A6D27E0ECA2214772AF84A091B742D +:10C270006C5A23E98B95A98827800FFAF3C7F87DBC +:10C280000B6F99467144AAAECE94F128B58EE72380 +:10C29000897EDC53037EDA083FBE52BB9FB2F03684 +:10C2A000C08F859FDA73F9BC83B85F9F827E6EEE84 +:10C2B00007F857E7AC9588AF6EBC3080F18481E514 +:10C2C000052897DE96E3DDF87DC4351D741ED08DFC +:10C2D0000711F9144F4DC231EFEA9B497EC9F3793A +:10C2E000FC1BBBD98EEFB41E1E8CAB6BC0F999E75B +:10C2F000D0A65D638ECBE44401F2F74FA4C4F7B03F +:10C300001E2B8B78ACE749E178BD80C30EE71B8A12 +:10C31000DE8DF54DF87EAEE8CDD6F93006FD06107F +:10C32000A484E100B83501EF8318B4933F146E97ED +:10C33000C1F964C8FC16658F7B1BEE7C1DEC38824E +:10C34000CB9CE76E29D143F33FECA6FE6455C4476E +:10C35000897D50DE886464B2C51FF853C16796F8C2 +:10C360002DBE6F147141F4433B06F300EFB30ABFD7 +:10C370007750E061464E08ED7546F1276CBD92DCC2 +:10C3800005027ED46D0008C6D97C5B217BD6B57AC8 +:10C3900024ED3B61EDA6309ED775571B9D7B2BACE2 +:10C3A0009EE8EB413FC7583CB7E9A5D48FF1CE904A +:10C3B00006D900A5A6FFF8F74BFAEF4622CDF624E2 +:10C3C0007E82785FED495C80A187775FD5F72E0686 +:10C3D000FAFC44D0E55F64FD399CFF59EADF82DF57 +:10C3E000C1CCFB29D60B31FD458EBFECF1F596B8DB +:10C3F000CED37E0B9FB0C71D367A02DFFD02C7C1C8 +:10C400007D17C56B9B7119E719678A4BEFECFD6BC4 +:10C41000E2DC3F6EEF5FB4FF7ECEA420DA71AF7432 +:10C4200038296D6B184BE9BB0EB6A50ACF15FFC9AD +:10C43000C9B2D9C566DA2FEC86A3821F3E44BE0579 +:10C44000BC2C915505F7ED4B8C3FCDB0FA9D97185C +:10C45000DC5FB444E6F26B49C3371FB7C6A39BFB4E +:10C46000E8CC7669BF56FF18DA7F0EDE63E07173A1 +:10C47000B5552602B46FFE3BC0BDF2A08B51DC9EC9 +:10C48000B08F4CFC1C7D8FC781ADC4F830483F6035 +:10C49000BA82851F3307F97B3E66BF0E4EB1C85D79 +:10C4A000975BC49576B8C8CF62C0FF508F2CEB72F3 +:10C4B000D9FC2E2B7AECF9E56CC148DCC72EEF765F +:10C4C000B124F0C2CA0C3FCC1F15BE5F59C1EADBD4 +:10C4D000703FD82AD6512D6CD346803DBAE6F91F5D +:10C4E0004E433F93DFCDF5C709D8C769EE345CB73B +:10C4F000FB930AEAF5F7F64FB9E15286ED936D85A5 +:10C50000B83FCC6559F7314B3BECF09D0BFE4C78B6 +:10C510004D3FCB7070C87B385D33C72D744BB6B8B8 +:10C52000A773DD17BCDCAD89FAF6FB82E76A37CB6F +:10C53000ADB16CF70CCFD56EEE5F38DE55C3B4EB02 +:10C54000081B71943B83EBCE13A77528C97CDD755E +:10C5500044CE511E8572E759CA4BCFDE1EE3887068 +:10C560007FAC2348B449488D26BBAC91DF77F9A353 +:10C570009CBA09E5EC1F07148601A22FBAD801BCAA +:10C580007A614892867E055DBDEE5A2CD7DF7486AF +:10C590001DC562D140FEC54FE73D8E7ECBEBDC2E44 +:10C5A000A10FFB9CD8AFFE995AA3FBB19FD4E85CC6 +:10C5B00018BFFA7B2C817C3CF3B3D452C4D76503FB +:10C5C0008B5CC802BF78FA151AF7F681B932E66FAC +:10C5D00076F378A18F9FDC378D413F2FEE0D88F3E6 +:10C5E000F6A482FBADDBF73BC97E5DF5F701921344 +:10C5F000B73FB3E6B1F930BEF47C80E0A97E66C5F2 +:10C600006E37C1D74CFDDCFEDCF5A1AD08E7BF3AC3 +:10C610009907F0F1629319579B1A8DF705D6B8D98F +:10C62000AD68B7987830F9B3469D7C00AF76DCBE34 +:10C63000A77832CA8841BE96A17E399DA7DCBA2070 +:10C64000CBBEA949ACCB8F3EE5F1AAD29E976EA195 +:10C65000F9F57E93E62B01453E80F1EE16F8827ADD +:10C66000340FE30929390ECA3F7A42E2F3EA9DB852 +:10C67000C35B8CE3EF506A49AEF1731C13DE9A3D45 +:10C68000935B705DD7F88B8B91E4B3FF7E2FC9E786 +:10C69000757B9C29DC4F414AFBAA1ABFD37E0F8CC5 +:10C6A000E97E09F8602D894448F7AF21B9B7B6F79C +:10C6B0003EDA7FAE7BC1BEDE01CFB114C0BFEA2D32 +:10C6C000676C3EE6FFE1EF821AC073A26F5710E974 +:10C6D00001E32C51601D5C71DAEE6FC6FE4FE70D71 +:10C6E000ED8FB101BAFFB2AE77231F2F439E9CC0DE +:10C6F0007F140CDDF7EE71DBF7BDAB9DE2DED79E5C +:10C700001159F5E1E07D2F215F56EDFDE323068C05 +:10C71000FBD133BF7B04EF25ACFEF31F1EB907F737 +:10C7200059FFE855512EAE7BF28347BE0BF8FCF85B +:10C7300005B703F9E4F6273F7CF71EC87FFEE3093F +:10C740007968FFBE2CE4D527FBFE3412EF29DDF516 +:10C75000B339A370FE773D3B7B14CB22DFCCF413BF +:10C76000E0ABA4DBAAC7924447ED05E86F14645F11 +:10C770001469065D5ED9FF4A11C2F7F12137C5255C +:10C78000ACD3781CC2DADE3514D78DF97B01BF6BD0 +:10C790009F6EFF14EDB2A17836463B227C9D630864 +:10C7A000FBDAFDD75F7B5925A6AE9886FDB101D295 +:10C7B0002F99EDD6BD09F4BC7878FAAD13F7EDD614 +:10C7C0003DBD918F9B41BF8FF11FD387D2AF3F8378 +:10C7D0007E9F3F7163288585FBB3C72D9BF45BF378 +:10C7E000EC37CE7A3FF0938C753B1C7EEB44FCEA31 +:10C7F0008FDCFA801BD7DD33394604F0F1C9DBEE5C +:10C80000E47C28FBA4F50F450CF8E2B86BE0165C5D +:10C810007F033F73AB186FB0E4676F2928C73E7979 +:10C82000F6578A46F29CF925B0A33E6183BF3EB419 +:10C83000ABE87E0AE2E7F1400AFD0E6BEFAD233A6A +:10C84000AD4D5E374F0BD277F247AC4D72BE5F9B5A +:10C850007C69A194856E133C795C7F24F3859D9857 +:10C86000A6A35485F43B3217F96D38FA99F3567143 +:10C87000DE9758E868B8689D0EB71E3FD9E196313B +:10C88000EE781DFAA126A5EDFB7549E92D96659D6B +:10C890000E9EAF7CC5FB9BC59EEC7E4473BEE75AE3 +:10C8A000C7E79ECF57C3572E2EF6A943F1D6D4CA59 +:10C8B000FDDCEF4E76537CD41197F6FDF5B01E07E4 +:10C8C0005E77B19DD0E4968ADFBAB42CFEEDFFC846 +:10C8D000B083120D9FB68E8276897BB91EC93C87C4 +:10C8E0004ADCEB649A053F6BDD03EFE23D04F6732F +:10C8F0002FA3B8B97FF4D27E68DD23DE24EAB557D2 +:10C900009E3DB51BF5C9278FBA19D7733CCE7185EB +:10C91000CAFBF8EDB3A71EF97F50FE5B6CAC61FD5E +:10C92000F5C7BE837CBE4D62689AFCFE99D024BCDC +:10C930009FB50AEAE2F9F58A9FDF730DF229E6F165 +:10C94000BC75454EE216DCF7AFD8364A427B669D91 +:10C95000AFFFCF28877EF7931052807DFCECA9694A +:10C9600048AFDF3DF7FC24947F601F6AD673C595FE +:10C97000D677282CF6FBAADECD749EB40ACB797D3F +:10C98000E98C58336887E3F86897AC7A21A47B2751 +:10C99000D9EA513FEBDC0377C768FF6D143AC8A6AC +:10C9A0004F15229D57EDB18FBFDCC3F5EF3A65609F +:10C9B00039AFDF55C8F9A18FDA7DCBC3E5B8599EF1 +:10C9C000D9DEAC7F87A7C456CF6CBF569C8B64D290 +:10C9D000FD7B1E7EBEB26ACF9713ECFD71BE1D3A81 +:10C9E0000EFFFE6D8919F47EC53E2FED77572BA9FA +:10C9F000F179E5F43D8E768A992F14E3621EEDA954 +:10CA00009F8AF5B9DAC7F3CF89F8FBD541C8A3BC33 +:10CA1000F2F17DF49AE70249DC47ADF939D84B933E +:10CA200030FF8B22A4DB9A9FAF27BAAF71A788DEB5 +:10CA300003FBDC0CE38C3EDAF73A957FE44A15E120 +:10CA4000B86B5EF41EB19E0B99E99A5EB7D84CDACA +:10CA5000E7D38CE75E14EFC5CFBD9CE2DC0E76E435 +:10CA6000B15D229E8EF6F7870B68BE99F6F4CF3D36 +:10CA7000C559EDF5563C2741FFA6C760AAF55E2CC7 +:10CA8000E371A2FF99C16F8A2BA1E23E53413CA200 +:10CA9000BF4BE6FE5957243C19F9B82DB280E2B4D9 +:10CAA0003BCB555A973F137CE386FEC93E3ED04DA3 +:10CAB000E7C69EA87CD2768EFEBE9FFC9FACD4F2C9 +:10CAC000BD24ED17F597C377EB397BB8CEF64E460C +:10CAD000E639FE4F258E0F23E016EF62184E5CCF2D +:10CAE000377A99F9A37DEADBE63D1AB98597E79A8B +:10CAF000C52DBC5CACFF75B57C7D67D2EBC617DB82 +:10CB0000E93EFE8D2F162C45BADFE89FF001CAF5ED +:10CB10009FA26CC5FD7CAE9BE871F18BF1EBBF0E63 +:10CB2000F9BFAE1B47FEBAF2DEF8D513217F73DDE5 +:10CB3000D80AB483FAC5FAB96987C37001BD0E88F3 +:10CB4000F83CE33B12C17F2BBA14A0E112A6297C6A +:10CB5000739DE4F116AC37C0F3BDF978DFD7D2DEB0 +:10CB6000E9C7F67748747EB9F85FDF9C83B8FCCDDF +:10CB70009B475B31BDF50DA6E4C0B84BF66B6DDC91 +:10CB80009D22FA7B11FA73A4FB4BE391FB8D98EC89 +:10CB900021BCA4F1E421BC9978829A745FDE82679B +:10CBA0008A0337F17C63E0D062C4CF8D81F1073016 +:10CBB0001D4EBF99F064E2F7332C027D76C2A3FFCD +:10CBC000D903F8FA95473FE321BFD140915C427EFB +:10CBD00024A717DAAD75262E1809FC76F7825FBDFB +:10CBE0002B21DFF565B767D3E3F175F6368B45F892 +:10CBF0003EAE93CF439C33BDCDB85CFF03164D4F83 +:10CC0000C3FFB6ECEF40F80EE5FCC8857EB79B5835 +:10CC1000CA85EDFF9AF5BB902E99745B8AFE0F28AA +:10CC20005FC6526DE8F707780BBCF9697859B48F85 +:10CC3000E2C3D81BE777EF6C48EAF150EC432DE3F1 +:10CC400070D7F67FDA8878AB0530501F2259B89D2F +:10CC500021EEBB1CFEF04B6B391B2CE7E71D83FD5F +:10CC600078F87B0F967A363D43F5A46CFD40DE12D2 +:10CC70008F3234CFE1C8FC5EEBE1EF5B64818B194E +:10CC800023118FE68FB77F5FEABD08DF71B972E3CA +:10CC9000CE9A0ED0274FE5F5157A207FF5C6DD2D0B +:10CCA0002D51C6F6C2360FE311205F6354635EBF99 +:10CCB00005F79B4B65582A9678A8055EAE6F1678E7 +:10CCC000B9BF18CA0D2CBFC6CBFD47F8C60A5EFD1A +:10CCD000C2377CA22097DE7BBAE4971769C3D3A939 +:10CCE000B6F38C5BCBA29F98CEB4F0347ECF8DFC94 +:10CCF000B7AFC50CB733ED4FFFAA7ED73C16A334B0 +:10CD0000CCE2949AF11B11D6456921EBA534CAFAFD +:10CD1000282D6203946A4C75707EE7EBAD84C528BC +:10CD20003F0E4FBF21DD5B0C7A268CF190BED8CE32 +:10CD30002C7A65D45FCB24E73E03BD833ED8266FB3 +:10CD400049563DE3F45C5DDD62BD5FF68487F6F134 +:10CD50007B9B34A283F9BDC9CBE5609397FB37F782 +:10CD600036F177098E3EE189ED84DEDE0B30251742 +:10CD7000C67D6FF35B2578CE62D67B2A8FEBE9D335 +:10CD8000479EBF08E37CBFE1D53778695DA4883F43 +:10CD90004D7E59EAF173FF7DA7EB23AB9ED1BCF129 +:10CDA0004D28370EFEC847F6E99DF74B649F324D7C +:10CDB000A2F5749BA0D35379BD27304EDCD8E2D6C0 +:10CDC000502EDFD6E93E42EFB474CDD1ADFD3D2CFF +:10CDD000E6C1BABE4FE7D5B79DE3DEE36D8046E41A +:10CDE000B3CC7E181B938B763DF94A6CEB9EFB67A8 +:10CDF000CD77BDCCEF1E481DE23C15E5BEB621B295 +:10CE0000B80EE8D33D66640CFB708BFDDA3E8137CB +:10CE10006D0B4B60FBA483E3AF5BF4F7B497DFEBE0 +:10CE200032EBED33E7A3DBCF3DAE7524F621DE1404 +:10CE300063912D3E25A9742D423C763FE1D63640C4 +:10CE4000D389F11B56A1BC9CB807EC23481F9492D0 +:10CE5000117A1F68AF3B86789C7951D5A7980FEF60 +:10CE60007153BCDBC43D6E1DF1FA7FBDDC6E199FB2 +:10CE7000BC63162C5FF6BBEB928568276B83F15D74 +:10CE8000C92019092FF0775A5609DC9D787A76E87F +:10CE90006CFE03544B862D6E0E0C3B9B5CCACBC8BC +:10CEA0001766D42FB1958FC6B3389007A3FD2C1504 +:10CEB0008074EF066326AE8B8DB52C86FBDD31A822 +:10CEC0001881BEA3419E28E21E8F0FD228E4716B09 +:10CED0000AE5CC29CA43903EE6E89D87447F0FE7E8 +:10CEE0000F7857E581D75B8A713D7748F5B6F9EB46 +:10CEF0005EEBFC6F1771B0D00FC37EBBF74C51D106 +:10CF0000EECC77276E4478BAF7BAE97DA189F1B9FA +:10CF10002B891E4F4F5886F2FF2105F436949FD877 +:10CF2000C1885EE57B4EDD82DF472A8995563A96B9 +:10CF3000ED698F53BB383F2F9ADDBFE40E2CFF9D68 +:10CF4000A05BD99EEF2FC0EF21D61BC47B2C6C0FAA +:10CF50003FCFD83BA6FE1763B09EC6E85E0B8A069D +:10CF60006F1EA54600D2F232967461BFD5F1ABB008 +:10CF70007D81CCBFC33C741795A74A901F261E5EC7 +:10CF8000F931DD2BF7158B7590FCE50CE8F7A92A34 +:10CF9000079D3FBCFA8E9BEC9513C5A5B4AF7B2AC9 +:10CFA0002FF69B2B905E5F3C5684E7A73B8B14BA11 +:10CFB0007F7DAB4FA3F6ED5FF273E8D26A2585F76C +:10CFC000D8F78E31DC45D07EE3AF9C246F901E9E57 +:10CFD0000AA2130B42BA73C3B4C52FC3F7871AFB57 +:10CFE000AB5B68FF1C2F5860893F7AC815BF11E3FF +:10CFF000AEC2BEBC3961D0DF0FA1C29D0178DA5448 +:10D00000DE8A716CDDCF82CC073BB2DB3CC72BD311 +:10D01000BDD6F8A5313EC9167FDA2DDE1563A5BA57 +:10D0200097EB49DD8BE30DCEF3590FCDB33B5E514A +:10D0300082EBE2C4E67905C80F8B707E780EFA6544 +:10D040006F11CDEF6977CA41E79C7D0E940FC673CF +:10D050008CF60D13AFB9EAEDC7353C67E0F7572FF3 +:10D06000F3E58AF868BD00E17A10F73FFE341CB79B +:10D07000AB3CEEAADAC7FDAC97F8B87D3F55C00DC2 +:10D08000BC96291FA6FAA692DF3CD5025536E45C71 +:10D09000437EF3CB7CE23CD6A3D3796C9676D5D491 +:10D0A0006EFEE2548B966E07F3A773E157DFF95AD1 +:10D0B000C132E4A7CD1EF2E3FDEEBADDB4BF32E724 +:10D0C0007D02E9EA4FD3D59CC74499A5F05D35E6CA +:10D0D0008F95E07DDCEB05DC663963B1926F58E833 +:10D0E00071BD98E7833E515EC6DBA5CB45FBA0B87A +:10D0F000A75D9A59CEE5E7ABEF5CF2E1E39C5E04F5 +:10D10000EF89CDA72348A7AD5F268B08CE3D6E8261 +:10D1100013F517D271F09D8A6825C9EBA887B578F9 +:10D120002AB2C931EEBF66D130D98BA63C19D65E82 +:10D1300014F5CE695746C02098C6ED45FC29E27C1F +:10D14000F5D1FCC43A1F94BBE37D4A01A05A2BEDF4 +:10D150009F8BEEB439CEF91477E21671C399FD2690 +:10D160001B614705FCF560A307DFF6A1F848CC1F5B +:10D170006F8C50FA50A346DFDB053E016DA4973655 +:10D1800065BC5BF93D814FB39E0B4F5EC6621CA32D +:10D1900087C7D796B5F1F8DA52FE0E99F93E08F036 +:10D1A000533BF2134BD8CFF707E36B994EF134BBE7 +:10D1B000A5C47D38BFF07CDE5F38CECFE5B708FE72 +:10D1C00030FD77263C0F9AF4177025BD9AC01F3F9B +:10D1D0004F76470DCEB711334E98DF33390BDEFB58 +:10D1E000A5EC787F04E15FD375642EE2DD5BCAE3D2 +:10D1F00054CDB8D4CFAA59F26C71E226DE4D3A84F0 +:10D20000E6F3F707363626E8FBF1C63A4A1F6AAC62 +:10D21000A774B7147F0AC70B559F7DFEBD3E6E2FC6 +:10D220003F2BD2F39DE7A05CC35F38FD0E53F7752B +:10D2300037449642FF299F783FAB5ECA1A4702F4F3 +:10D240004C217C66BC85796F3CE98DBFEC233BA803 +:10D25000AB6259711A9E73F3FBF9D53B8A71D38087 +:10D260009FF7314E7ADCB9CF2DD73FB85A41BBE892 +:10D270000147E2DF10AE530F5C65A0DB6C69E76429 +:10D28000821BECD4B7F07B6D48FB9C517C74F79CFF +:10D2900037A042AD5B7B0EF3FFF10FEBE6E0BB94F2 +:10D2A000B5A3B4BB717F539473D71C8CE7ADBD801D +:10D2B000EB958A9CC75AF17E668F4FEFF7913E74CB +:10D2C000E5E27B19A6BD38FC7CECEF657C1D9D007A +:10D2D0009CFF0CC4B7C97FC0771F63BF7F29DF3DA8 +:10D2E00024F86D23F21FF2DD42CE770FE2FAE77CDD +:10D2F00076FA7CF8EC4BC15F67C47A1B9963DEE376 +:10D30000E17CE615F222737C770EAFBF51C8119015 +:10D310008F1D56396ACAD5914E568FFCF8D2E22736 +:10D32000175F01F372EF195F82F37A724CB210E368 +:10D33000AAC24EEE277CF24F8F152EC0F4BA270BEF +:10D34000719F3128A75CF5113CB72C8F7E7E0BBEF8 +:10D350009B575ECA92E3284D9514A31C11F5BA455C +:10D36000BD89D1914BB5E07F9D5E2B7D712D676AA4 +:10D370005A7EFD37F47711F527EB12978BFFB5FE38 +:10D3800000BFA48FD01E55841D854FD2B158ECA28A +:10D39000FF8EFEFFB7DA8758C288006B85307E8B20 +:10D3A000E2619B18AE0FD01FD723FEBCDD3B0CD42F +:10D3B0008BEBAA7B29FEDDE467E502CE6766BFAB97 +:10D3C00072B8DE5825F894C41CACBFF142DEE1AF60 +:10D3D00013F2783D02E5C804713FA88C75D1FEFCBC +:10D3E00022D64B6939EBA374121BA034C65427A66E +:10D3F000152CE6147159D3305DED493C8A5BBAD9DE +:10D400009E441DC2F9F198C4DF615CD6869CB53399 +:10D4100070FDAD31D755C6BE9989F39073EDA34326 +:10D420004CBF83F3E330EFA0B2E1EF41C52C71D5DF +:10D43000E63DA8AF704F65434E7E967B2A176B9FE3 +:10D44000D2BD13E3D72457F32668FB301F18716051 +:10D450000EDD3BB984915FE8F99CB75E45392ACF70 +:10D460008F1B04C39BD9E317CDD4358AC703B6E419 +:10D47000DEA0525CA0879FEFC9C26F65D6DB814EEC +:10D48000D6FCA17181FFDDE364F67FAD23FE580E6B +:10D49000E19BDB37CFE7D8E31FCDF19BC3AC17EFA0 +:10D4A0002B3A7399E1BC78283CAE9C9B5FE867E916 +:10D4B0007998E339FD7CBCAF1A17097AFB79846B44 +:10D4C000E8BB488371913F45FE31FBCB8C8BCCC4CC +:10D4D000CFAB397CFF71578E9EC27E2DF18407B091 +:10D4E0009F2CF184AF623DE0D3D7CEC6A72FBDF10C +:10D4F000EB1B57609C6EAE2F86E77BC771C30EF99E +:10D500000F7638E9BEFC0F7375AD09F8B1A5703C14 +:10D510007FA74CF8797C62FFDD52589383FEFDFBB8 +:10D520003A9CA4D59582FD1ECCFBBB1D246B769541 +:10D5300039E6A1FF2B47F863CCF9DC14E47E97FBB6 +:10D540004E374FC377C48D2AA80B556655F1F1B6F7 +:10D550005EC8089EBA11A77B7220BFEDED15E444AA +:10D56000748B76DB7688F7DC1887F7D8D4F8AE4D65 +:10D57000C5E9FC8AF0825DB87EBE0CC8FC9C6CE3F9 +:10D58000588A3B7497A10391E6EFE4E77A669A72B2 +:10D59000F273419ECFC47F489C03657E7F2DC8F502 +:10D5A00075E8B28507F1FDC36575F41609AEF79706 +:10D5B0000A20DF550D3A13F2A10E1E77D4250F185D +:10D5C00078FFB5AB5A0F03055828DACF64F8EEF1AF +:10D5D000F3B8A560C76374EFC757C7B2C6BD79FC7F +:10D5E0003CDEB54BEE379CD40F23BA04A11FDC17E9 +:10D5F0009EAB3DF3737BB34BDC535DD1BD84E28BBB +:10D6000056F48C9210BF66BD889FCBE95DBA83A5A6 +:10D61000D0EE94E3D4FFD1C17CBD82E31C2BF8375C +:10D620001DCF9BDBA6727EF06F97BCE8A7F027F9B1 +:10D630006975A83A41FEB1D68842B1AB2B58A20811 +:10D64000E558AFDCFBF672C417C08F2EEB50B74421 +:10D65000F891F3EA1EF90EF2DFF4AEE988C76FEF36 +:10D66000F8925D08E33C84171311CFEA69A641BD27 +:10D6700050E500DD770B56679FE7778276BF6450F1 +:10D68000ACD340F74EC24F6115BFC7B0CDD55B30AC +:10D69000D2D23E15E0F835F92BB3DFE3399C4E6D5D +:10D6A00005BB695DFB64981FE22FAA307C17C5B1EA +:10D6B000FD5714BF1EAA74C4BE86E88ED5D37BD78F +:10D6C0009D55E2388BF52FC2F2F6950AEEF9D87126 +:10D6D000C1AF46357F1F3C73BCAE00E7AF13957CEE +:10D6E0001D6D5DF95A01F2CBF6C040248CFC14E0AC +:10D6F000F06C0DF8F93BCA57ECBE662C8CE77C6ADF +:10D70000E94849B3F6C3E755EA4816E27DC4C59D2A +:10D71000E3DAF0BCA014D73BD8D76DC1896DA81748 +:10D720007EB8C329E8AB517CD6CBC9B1A33164F82C +:10D73000D86A45439FEAB699091EBFBBD241714FD3 +:10D74000C713A67F2EE5C5FA0F576E08CE80F28765 +:10D7500075B902F1FD9FA1DAC57E1877737D9E0F22 +:10D76000F962638B43C2EF0FD7CD7A603CF26F57FB +:10D77000A944EB05FE2D4FA35B5CFC1D0B2FC78B53 +:10D780003A97D18393B9D5FC5EE97DA79D7CDF51A3 +:10D79000C5CFE97263FCFE8FDA75E81E24B25ACD5C +:10D7A000F7C3F843FD1B122201527F5D054F475618 +:10D7B000107D52D3B05DF46FBF457EBC3E476A39E1 +:10D7C000E443E58E234BF1BB384F526B14663FD7D1 +:10D7D000E0EF799A70AA11DF91A5D0FEB883CFC18E +:10D7E000F85B7E0EDA56C0E3F272AB949D78CFF10F +:10D7F00087A6FF5AEEA7F7E18F0B3F347E7F06F92D +:10D80000F9E000F91B619D15A1DF2B5475EC661C36 +:10D810003FD4FD16CD2B84E75798EA7678DE0FEAE1 +:10D820001BFCC2AED02D7C1EACE4EFA3D27910C09D +:10D83000F1C11246F21C5D8AF81ED10F25C177CBCB +:10D84000CCBFA720DE57C57FD3B928B4C27BC3A203 +:10D85000BF8F7A9D54BF679146E71F5B9F654F233B +:10D860003203E2BC6C506F5CC9C70954B7DD81DF7D +:10D87000035596F32EF8FFA342AE0CE2438C4BEF18 +:10D880009396A4F33D8CC3B1EF40DED5E538EE6D41 +:10D8900079747EDC22F0463FA0033D2200F224573B +:10D8A000F5E917C2E4EA02BCFF7DA2DE9683EACB6B +:10D8B000189734F39F0FD3FB4BEB02112ADF5C75F3 +:10D8C000D283FCBA55E57017D6733E2B8C0C78D0FA +:10D8D0006FB8AC43A2F82DD2082385898A7811EF5E +:10D8E000C6443BD424AE5FAD43D2E9DD4998A3C31F +:10D8F000BC3F87E74DF5C61D88EC60F5497A0F758A +:10D90000ABE8F783D50EC6FB05B98FE3764824074D +:10D91000983CE041395AD89D47F96D91F83FE1397B +:10D92000C1073D6E0DEBD7AE3EE9C1FA51D0AB5207 +:10D93000717AFE64A702DE96D6338A7BD9161574F7 +:10D9400098CE92E8C7464645B88A44BDA23A806B55 +:10D9500012F1D926AC17DC9ECBB8DE1CE840BBB375 +:10D9600010E0C3F19756F17A4BBB9F5F8FFEE8152D +:10D97000113EEF6555E27D1C39D187EBB7B05E559E +:10D9800051BF15F5F07ACA18801BEB21DC54AFF7B4 +:10D9900075CC07AB476A348EC053ADC0676D1DC7E9 +:10D9A00093399F71E2FB389C0F7C1F57C5CBC7553D +:10D9B0003FB71ECF9F6B711CAC5FC3F90A486A9CCE +:10D9C00081FA259DF675718161E73BD6C0F332FE81 +:10D9D000650507E28DE71D9847FC76DBEBEF73A446 +:10D9E0003A66D27A9648CE813DD987F4D8BA52D1D8 +:10D9F0003671BED0505EF9055E9BF2F879DAB1CB94 +:10DA0000943DB89FF67773BEF0D771B8F1EF2B68ED +:10DA100096FDC3AED799817CB9CF117F18F59DB122 +:10DA2000C94DE70747BF94887E9B272B9C7EB2F6A3 +:10DA3000ADA5A83FA66FE0F70E64D0D2C8F762DCB0 +:10DA4000DCAABC594A10E5239763B9B1637FC3F1DF +:10DA5000693F67F61FF4919D19B9CD8E27805FC786 +:10DA60007DEBA05CD519C9AF9119E7D1582FB7024A +:10DA70009FD31F390BE5EB546BFF509EF706BFE7B2 +:10DA8000EF3F182F21397C70FB02F4C3E765D45BAC +:10DA9000191C4BFACC7FB0DE41F50E00974D4AFBC6 +:10DAA00081D1B46715941EC01474BC91C3F38694DD +:10DAB00087F396590D9E3BCD8CD37B23EA14FE9EB3 +:10DAC00038D1218FD214A6F75730D217FE8389128E +:10DAD00095E0D2349EAA949AE30DEAC70ADECFA15C +:10DAE00080C3165F67A66ACD9F6DE7DB2782C6DD20 +:10DAF000FF8CF8BA5C21BBB5D935D0837F87A4F9F8 +:10DB0000593F7AAAD993B9C9427C5FE94E611F0E89 +:10DB1000FAB9CB17921D8CA141381F26FE2EC145A4 +:10DB200081B21DB83E26EA06D9C3134BA35233F186 +:10DB30001D8F936C65BA8672D0883A884FDA236D50 +:10DB400077239F6CE990F2501E6CA92A6943F9D2A1 +:10DB50005BCF1C28276F1676C3ACFAFE79C44F2F13 +:10DB600039E84C74F38F75ED3790FF1C6040BB7142 +:10DB70005655573DDD8F1AE7A7F26D3F4E4C502D9D +:10DB800078C148756E173359D8CB0E113F2765B34E +:10DB9000937DF90B14B4CF2EE85E62A09F3CB73B97 +:10DBA0007726CA59AD064428C64746003DE84F12BD +:10DBB000F776351DBEC3DE14704BE55A94E75B1B48 +:10DBC00013B4EF65E5DC8F7FD18EEBE7E1BDD68B3B +:10DBD0002E74F4E2E8953BAEF77C1DE6FB700FB7C0 +:10DBE000B6F7279D363B75F07DAA37931B4BA0DE19 +:10DBF000D46E8786427C57CFEC11B80F1B4E3F3C4A +:10DC0000E1BF90DB8D1A9753B4CE9C697DB145E599 +:10DC100072B0B05BE88B683FC9F5E876D01724EFA7 +:10DC2000524D583EAE2797E4E8F20897C7A04FC47C +:10DC3000BB625C9F9488F55BB25D22B95DD2CDE595 +:10DC4000ED16D013286776754B748F02E63317EF05 +:10DC500035D7AE06390BD965667FDBD3FDA13CD045 +:10DC600084DC84FAA437C09EB7C9DB0B44B9B69AEA +:10DC7000EB890B3A9A48AE6ADB794A1BD99169FD68 +:10DC800075417D2FC9F3E7FC1A8F6F157237585D08 +:10DC90009BFB7596A60B936367FDFB16ADDB77CCFC +:10DCA000A47749B6BF243920BD2F7CA782F74FFF48 +:10DCB00020F8D3B4CF478BA944B71FE1FB98D5DC3C +:10DCC000AE3F56D0760DE2B36DC75205EFE717C6EB +:10DCD000F87D3E7F74F96EDCAFFCA7B06BCDF71911 +:10DCE000587D1DDD53098879042B07E8EF4885BA74 +:10DCF000177CF342B2CB7B474B5A1ACE670241BE28 +:10DD0000AFA8ECD7A9BC8A9B76BBAAE31DB84F5B32 +:10DD10001676106EFD1DCD0407EC6B54C9E2077E2C +:10DD2000329043ED83557C9FB3B99BEF73DA5C2946 +:10DD300086767F30E6A0FD8DA32AD1837F9F61196F +:10DD4000EC3F715FD02EC517E3FED098AED07A6657 +:10DD5000E2DEEDD631E377D2DF69989AA477CBA7DC +:10DD60000B7B89F60960A75FEE3F3817ED74739E51 +:10DD70006E31CF4034639E55F679C6FC41EA275494 +:10DD8000D5C7E759C9E709F56DF33C2EA7687F7A37 +:10DD90003CC6D4260DF74B500EF503E16772B0BFB9 +:10DDA000743FC635488710E003E910EA7ED9C07A8F +:10DDB000CB62F864FA507EF805E2291FDB33C2D744 +:10DDC00050BBFAECF1534F89F7EC8C0AAE9F86E812 +:10DDD000370FFFFB48FE0C7DF32FC1E241BF9B6173 +:10DDE000B16741525E457CF4B483EC9F1341EE8FE2 +:10DDF0000F8479DC137C3746A1FD0A29E9B55ED989 +:10DE00009860F143F92BEDFA20861D67DB6F8A7D60 +:10DE10002693FBE8DDC5F6E98969D6BF53F558803E +:10DE2000DF037C2CA00A3DD1AF13FF0CBBBFE4F68F +:10DE30004128EC487E0DFED97E19C7CB96A90EBAB3 +:10DE40005F3F1DD76B3EFA61DEA77D66671DF0233D +:10DE5000E1AB9EFEBE41DD080FD5DF3A95DFC7EF8F +:10DE60004DED24BFD6A6E4E78796D2BE8ABF1BB08D +:10DE700067C7EE8E9230BE37A44F755AE00D966597 +:10DE8000DF6F7F21F6E7E89FE7FAC14CB99E30F3D8 +:10DE900099EDDC224E997E617C4F50253D187BE93F +:10DEA000B343187BD6AA16527CED85418758E7E22A +:10DEB0005DF16480FBCD52FCEFF4987E37E7E1F62C +:10DEC0003EEE4F1BFC3B3D170611AE6AFB7B43A6A3 +:10DED0003FAECD551F473CA1FF0224160BA09FC6A5 +:10DEE0008FFE09968322CE55B6606A9365FED704ED +:10DEF00065AE57AA15A2EBD6C9767F9D1EE4EFC08A +:10DF00005D2EE075B238BD130AF0D2BE14E023BF17 +:10DF1000269B2F65DED7BD0CE16CEBAB8D23BE6578 +:10DF20007FDC53AEA5E9E30B72FED8EA1A88A8A4F9 +:10DF3000E71271275FA7E45FBAAFB28F8C1F7A0F29 +:10DF400007EDFA6E37C3711D55FC3EFD68E18FF891 +:10DF5000604D0ADFD2655BC42B45BEC80D1EFA7B3F +:10DF600011AE8145E81F37E54EA6BC41BC60BFAD90 +:10DF7000496712E55F2B4B74911F007A41F9D52B4D +:10DF8000F377326A2BD598155F313FC7432DE2CB2B +:10DF9000CFF9DAFA0EF26CE1A7C13BE0E43FEEE321 +:10DFA000EB8D5692F5BDB072FE1E87DCCDF7B50A3B +:10DFB000BEF75A92C6A785DE2B88DEF3B2D3FB6D7F +:10DFC000E1F7DFDF5712B4C61F64DA9DA67D9969B9 +:10DFD0003F9605342EBF64B0172BD2F6A4A90FDBF1 +:10DFE000A5E46F2EC775F484A2F138E24404ED2D48 +:10DFF000E7783FD9EF4FC9BDBE0A32560DFEAE409D +:10E000008ACFD7C9F4F877A0BEABC34979D7768950 +:10E01000EC23936F2CFC9D39DF71E85FC9E4277313 +:10E02000BEE3045ED5D3C54C1F61B1F36B06F7FDAB +:10E0300012FA653E98C9083EF57429D5CBE28F29BE +:10E0400046BBD0F4C3987E17D8C7925CF9DFF7BF00 +:10E0500024C8FE36E68A77FB859FE57FD0EFB22F96 +:10E0600028CE79BE8ADF8565F85532FD28997E195C +:10E07000D38F4253B2F86732FD2A233180732CFAD2 +:10E08000699ABD788E7B5CF8F57A3AAF9D6B44D384 +:10E09000F123AE944CF0C9ABC5DFAF13EBC894A32A +:10E0A000A65CCD22474FE69C458E9EC4B385A93819 +:10E0B0006FB16EC24C463DFAD4D32F7B307EF5440F +:10E0C00080CB81413D8BFAD5A24F03A85F279D8766 +:10E0D0007E15EB2C538F64DA9D5D358CD6519E985E +:10E0E0006FEE004FF3FAF9DFB1C9652E4ABBC4FBEE +:10E0F0008CB9F3ECF8BCF8854CBE6BE27E738F1ED6 +:10E10000BE0EF96C9E83F8EC9243F67AF38A5F0DAB +:10E110005F0F20E6CD7154F09D8968E767F90B9198 +:10E12000AE3532B5BBF4B8BD5D1A7E515FE5705DAA +:10E1300071FA1CF5C2DC8F9F09FF6C8F3B3BFC1111 +:10E140003DFF1BE134FC5F8BD8EB2D5AF26AFE37A2 +:10E15000B3C11F65231755A6E1BFBACC7D76B8348D +:10E160000EFFB555E7A8579A1DFEEBE70D037F1983 +:10E17000BB12EFE57C73D139FA1574BDA9EEECF54D +:10E180006E6DC81CC7B0DD33680D3BBCC8FFEE1414 +:10E19000FFBB482EE6A2D43DC0F9C8A5BA480E9AE6 +:10E1A000E3B9A2767A0DCF4746784125EDE7E95DE0 +:10E1B000854C7E983FD945FCE2CE77F0BFA735C8A5 +:10E1C00047827E614E8773F287E0A34C7E188E8F64 +:10E1D00032E1CFE48F341F19F93784D3F067F203AB +:10E1E000D87DC447AE68696C93B59DC94761CE7F41 +:10E1F000E7E40FC14799FC90858F882F32E1CFE487 +:10E2000093FF71FE505D2467DC8CF3854BFB4BF96B +:10E210002315BEDEC21F99748ECF9C437C30943F81 +:10E22000045D047F9C93EE823F32E97CBEFC319416 +:10E23000EE267F70FA9BF067D239D1F46D95C7B3A3 +:10E240000DF2C5F9D159033AFBCF7FFD332BBC2525 +:10E2500043E97DFE74BED383F0AA269D354E6755F3 +:10E26000E57AC415E369BB4967FDFCE8DCEE01BD56 +:10E27000407E578EA74C7A2DBCAE95E8A966D0B9E2 +:10E28000DD2FF02BE87C2EFAB50B3A9F4B6EB79B37 +:10E2900074CE803F937E83F5853FCAF41B67D22FEF +:10E2A000D1E4F25AE9DC1EAD9F773EF46B3FCFF527 +:10E2B000C9743B7DCF454733AD73D7A7D04FC64612 +:10E2C000717BD11D5525EBFBCB9F84B8BDF23E1A67 +:10E2D00076583F27FBBDDD3F887A13D1D00578EA19 +:10E2E00042F6B827333D1DE27EE53B44BD1F8598CD +:10E2F0000D9EBD1BE27568373DF39256B0C03F746A +:10E300009E0F98EF8E809D8776ECFF07CD0EDF4D38 +:10E31000008000001F8B080000000000000BED7D56 +:10E320007B7C54D5D5E83E67CEBC924932339924E4 +:10E3300093F74C482068B093002920B627214088E5 +:10E34000680744058B3A915780400252C516CB406E +:10E35000424862D0A0E1A13FB413622C5AB1A1F5AA +:10E3600041117B878716BDDA466BA95A4A43A4142C +:10E37000F141EC43F9BE5BEB5D6BED7D32678644AA +:10E38000F0EB77FFB9BF2FFEFC1DF67BEFB5D77B17 +:10E39000AFBDE7CB2FE1EFDB8C25DA25C652187B2A +:10E3A0007FBD9DA9A318FB52E4B7B7154F63458CF9 +:10E3B00039DBCB9AF0BBB02D99A9858CFEBE649158 +:10E3C0007A8E0B23989A1C493316626C3C63F6A92B +:10E3D000D0B10DCB4752F9FBEB2DD43F631EC93FA3 +:10E3E00066A8FEE387E93FFD12FD67513963415A94 +:10E3F00007FE59521933F27F3243D2C173061763B5 +:10E400009BB24C1E032CF5274E56D35314E94FFBF9 +:10E410001AB34CA7A4ABA081AB42EDD3E691C7D809 +:10E4200015023E4605FE2F81FFF71882E6C48BEBEE +:10E4300035C8D0AF0D5301F7EC8448BF257699DA83 +:10E440005B428A1A82719902E56322E555A2FF06B2 +:10E45000C9F74E00E619CC36F9BA3D8C6DBE86CDB3 +:10E46000D5CFF37AAC07EBFE96DD405FC6FC0CE13E +:10E4700068B4BDF28E04F3315A6C4103CD5FF9A844 +:10E48000CF1299D7F57626E01236B0D2085C86AB6B +:10E49000CF98EF1D8497D166B2B77A2FBFFF12BB1A +:10E4A00087BE63BA4C5007F2324DA10229B25E809A +:10E4B0000FE50757B35037E4675958B305E0D9243F +:10E4C00031D5360EF2250BE5E39F1DF62F53CC73A5 +:10E4D00073017B5CFE06A41576D45C82FB57EFB615 +:10E4E000613F19260FD6CF779BC232CCAF692B0B79 +:10E4F000E641BDA64DB6A019CA9B12F24206987F0E +:10E50000D3177CDCA65B3DA18DD8BFAA7A5CD03F37 +:10E510000DE5E1ED9CD8AE58D4ABB6871AA0DDA3CB +:10E52000AC5D628648FF8C653BCEC433CC62848789 +:10E53000762763E917E351044F393EE6B528850A8B +:10E54000ACEFEF2CCE87F8D7E0A8375BF12B07CDE7 +:10E550004BBD91FA8DEB3D931B8DBAB411F6DF766E +:10E5600071BF6B9265DAFFA71CF573FD50BE575A59 +:10E5700035D7AFC393F71D1C4F7E63E7F5D838BF7F +:10E5800005F1047A7CEBDBB83EBBEC6995F0BBD1BE +:10E590005285E936D92E011CBADCB32DCB10AE154D +:10E5A000B2BD80617A23D50F427DDCC7A3F63B9ACA +:10E5B000BDB08EC63679ACD983FDA9338B018E49A7 +:10E5C000629FBA2A603CDCC742162A80756DAD286E +:10E5D000C95800F31A697796219D1EDD72978CE564 +:10E5E000ED1D8CA5417F0A0BAB56A8A7184EA8407D +:10E5F0005AEC7EB5DF9E8FFD481CEFA719266754A5 +:10E6000041FDEE9022E378873A6F7ACD08F3D9AADC +:10E61000CACC0CED92FAAA6732D8979FDBBDB44EF4 +:10E62000E5C48C0F18E0677BC56E3B8EB7A7D3940B +:10E630001E807EBA3A9B3290BF244E56FA07F116DE +:10E64000FE3F54569AD107F9B671D1F95DF3FC1922 +:10E6500076681FC7205FA36F2FFF86817EEE10783C +:10E66000736C9B49C2F60AD3B5877AF6E66219C77E +:10E67000656D36D7992B197B06E8F64B00CD1E59F0 +:10E6800095AD08CF9392AF1B8A1FDFDA640EE8F6D0 +:10E69000775B0ADFB7B6F5ACE0346C40A157F623E0 +:10E6A000BFD822E061B33115F141DBDFD86F5E4B9B +:10E6B00045526008BEA67D15CB88C98DC917E39762 +:10E6C000CDD72BDB01CE239EB517C7C3FC47B4794A +:10E6D000F6F7C13CBBC7E414DB3C117C7B65DB4D2A +:10E6E000B72C85FCD57B6D3E33CC3FEE84F914F21C +:10E6F00083784BDBA7F8ED3E348F7900CFE2D7BAB1 +:10E700000AF2C742B927B5201FC633FAC20CD7692F +:10E710005B6B2A380DE9693F2D4AEBFB8A79B6AE6F +:10E72000B717E4031D74ACB7D0B755E2F3BCF2A73A +:10E730003393EED0C1EBB4E08783EB5B1BEF6B1C34 +:10E740001B49A738007EC48F43EE593A7EBCCBC12B +:10E75000F9ADD66FECF85A391BA7A64F85F5766D43 +:10E76000033E08C9B259E33296019CFADB4C76C4E9 +:10E77000C7EE2D23EF9F8FF8FEA68121BD746F2B6E +:10E78000CD58AC5B9786C7B1FD1B44FF7BD2838F0E +:10E79000483E6413B755BD3E01D2D6E0230CD3ECFE +:10E7A000269E46063509CBE756A988CFC8B833E080 +:10E7B0007F475E5510D38EE02D32F0DEFBAD55ADB8 +:10E7C00047810FED2908BE2741FA51170B57607B8F +:10E7D0002FAFBFC9156C0EC23CF68CE1E9D68EF99D +:10E7E000D4BE4BACC7D569227CEEEA6C74229D7412 +:10E7F000CCCACFF1C0B7BF38E466D0DF9FB69E3F2A +:10E800006681FE5D92183FF86625CEA75FA4E3B649 +:10E81000F65662FF65B3F277CC47FAEC35FA103E54 +:10E82000FD467B0BA6BB003E1B90AEB2FD19FE2140 +:10E83000E0D1B6DE5DD06644FE07DF82487E82CF3F +:10E840005DF0B44E1F30DAA3D35D923F03E1750B48 +:10E850008CAFC0FCBA8D7E825F95E3C94A6522A465 +:10E8600013FC19088F498E4E9E4E11F3670F57AA5D +:10E87000308FEE749ECEDBDA41F38F9D4797D197B0 +:10E88000E12BBA8C79887AFFD5750C0787CB1DFFF1 +:10E89000FFE3F6B7F86C976EDFE988E60317F5E358 +:10E8A000BDBC7EFE5D7CFC9FF6FF6FDBDFE2C8A394 +:10E8B0007DBE343E30E2AF71320B207FDF36A7DC05 +:10E8C0005AADE3F3F7A67079767A502F56C91EE950 +:10E8D0006F996E45F9D9BDCE6E554780FCEDCC4F92 +:10E8E00044B9D5EDDFE82C003EB909F42964798DEF +:10E8F000FF6CB0A05ED2D821DB377A80DFD967C742 +:10E9000015B850AF915122B17657B915EB07DB64BA +:10E910001FCA854D2ED9BA40373ED4AB44B9D4AEC8 +:10E92000CE8E9217DD425E80240BA3FEBA393F6F74 +:10E9300077AB4E3FF40BFDA07B4B79CB04E4ABA847 +:10E94000DFC1DFD16DD38E7D1BF524D0D3502F3A9C +:10E950006A9F5D351AE75729939C1E29D28E4AC5B6 +:10E9600007D365648241FB023B0B85A17E57F3CF41 +:10E9700057A35ED6844A0FA41D1501EA2FC92D7B2B +:10E98000507F666DA0E7829E67173ACE21FFEC723A +:10E99000D463B64E60C4E79B3013D7EB639AFE9EF8 +:10E9A000500C7A1299641E94F759D67CD427403FB4 +:10E9B000C4F9687A9A3BC54BF04F463D0ED25B3B9B +:10E9C0004A5E2B847E6C37CA3E6CE79C19AD97C5B6 +:10E9D000EA6F4CF1CFC275B4DEA8A02C07952F5A70 +:10E9E0005F8BD5CB06F5023FE815BA7EE20BED5101 +:10E9F000E9FE97D9E30CEC819F28F57FBA17F7B5AC +:10EA0000D7E00BE2BEF62804B72E809B04FDDDDFC5 +:10EA100026537AB3CB141AE515F210E1B055E17024 +:10EA200050787AD3266708E7D7FD323B80FD6E7DAC +:10EA300099F924509AF7ED353127D64FB0919DF4CE +:10EA4000E17ADFE4464498F61D04EF65160E3F8335 +:10EA5000DCEE63808F2D4CCD43E3E3D833CBDACBB0 +:10EA6000500F7BC340FB7BEE99D667D6D2ECFDB747 +:10EA7000E07C1A3B13081EB063F316A2DDEB70FBBB +:10EA8000507F41DB82F409344CA0EFE568C864F0A4 +:10EA9000B405E5B9D5731BCACFDB535EAE4279BF6F +:10EAA000378E97B76EFB696B300BF5E96B0A511F18 +:10EAB00058FAD0B32D56B095469B457FC195AD65AC +:10EAC00080B7FB6449EB5F65A07FF4A05E41E91766 +:10EAD0005EAB00C57ED3A03ED3D38AFA43CD11935B +:10EAE00018BF31AE0CCAF795DBC7BAA1DF0F5D3F87 +:10EAF000ACB264637FDAFC6CD672A8BFCFC4DBF71C +:10EB0000BB6C338293192B1ED173F2FBB03EF3DD45 +:10EB100026DF6E1AB6371DEDEE7DF2AA1AFF107AC7 +:10EB2000DDB8646E87F78C6395486730BFB9211DE7 +:10EB3000FD95BAB85D5D2EBE3DA16B640FF4334206 +:10EB4000E17A37C02C7926D2D996DD935A75FCCA62 +:10EB5000E78CA3FA3566568FF5F6F7C9F7119E7460 +:10EB6000D81D483F72877FE329C83F99ECA4F10B79 +:10EB7000C2B33324D4BFF6FCB6A408ED81676DA4FC +:10EB80003F9EDB73C32368776F6E3633B413FB137A +:10EB90006C739F807A9B42575620DE68E39D4FE658 +:10EBA000F3DBDC56D2B316E673CE6623FBED278A81 +:10EBB0006F2EE2DB4FC06E0FF2FD4F47BE962F87E0 +:10EBC000480F9AF9A0A7A511E0962FE0F8AA6B6468 +:10EBD0000BEA3D2D7E5F9C84789E25336CB7D9353A +:10EBE000DB82F6D3A365ABE9BBD9959789F6768B23 +:10EBF0006AF220036C2FE37A73A7A2CEF6427E67F7 +:10EC0000BB4B0A7A22F3FB54C0B9CBC7F94CD0C531 +:10EC1000F9C2530EC00B98DF5329AC0BED6BB39DBB +:10EC200095E0BA8C59F5AA3AC47E3117EF87B9013D +:10EC3000034A8924881E522B8EFF00F9C55913E818 +:10EC40007B08AF7916B61BFA6BBCEB2E8941934754 +:10EC50001D9CEE1AEFF084703D69CD66F25B34CAFC +:10EC6000EC5AA2C72C66DF00F9A9CDDC7ED9D4C648 +:10EC7000EDD6EE852C84EB4B6B934FA17F27B5EF40 +:10EC8000D3F5C4A73AE4B009BEA9F34DCCA393339E +:10EC9000EE131F7C81F6A79B41BE8ECF9C4EF4AF36 +:10ECA00070C2FE98B3EC52C0C6F3DDA5684FF2BF48 +:10ECB000B83630FCA1BFBD1BF83C376F60A1DD1238 +:10ECC000955BD696F0EAE8A73189FAFDCFB1A71196 +:10ECD0004E264B5BAF215107D775005718CFD4BCD8 +:10ECE0007915AEC354A89B07FC7F189D1C308F2C50 +:10ECF000D62721FF7854D83BC43AA1281771044481 +:10ED0000EA473D7FB3DE5184F0E4FE04B2414A8518 +:10ED10005D9F17D98FFB9DDC6E89EDC723FAD1D299 +:10ED20003F12EDF61D755E8BF8FDA3A0B304594D9F +:10ED3000A3CCFD6EF407FDA338437E96628F534744 +:10ED4000C3FCEF76F1FEF7C5D50F49BFEB5C5CFE67 +:10ED50006D7A15D014E0B16FA3E7CE6A845FB9CCA9 +:10ED600090FE0FA97C1FFB2B58C88CF4A372F8B639 +:10ED700077B05010E034F60DA54586F96495C94E7C +:10ED800083B0E78330DF04FC07346DF7F919E989B4 +:10ED90002EA65AD18F90E5E7F050ECD2AC3144FF6B +:10EDA0004C8679C78BFA0915C155E46FB0D8AD769A +:10EDB00058D7D62C5F553E8ED722D9891F297E7908 +:10EDC0005642042E360197F80E6807FB686B96686A +:10EDD0001CEC17919B5C4CB04FF1AEE7EF467F9B6C +:10EDE0004DE5DFA439D178477C10F17E25E00DACEC +:10EDF000236142F4BE6F15F0C95458A509F06903A8 +:10EE0000F227A4EFA51C2EF1BE98FEE2ECE90B114F +:10EE10008EAD66B61BE82B3718DD5F46735A39E2B4 +:10EE20005D16D3B58371DF763A683F328EED9A2D49 +:10EE3000A3FD5FC3644312FAED826A4D09DF1FD45C +:10EE40003B36A7CAD46FA6CB598E740470A9443F31 +:10EE500052469AA744CF478D2E3F2B29C27AF6F20D +:10EE60009157919F96CBD3548EE799C706EE44787D +:10EE700067D446CF9FE9E9CF70E9B4D192188CBF2F +:10EE80000AFDA0D174DB9BEC157E558E1728DE9011 +:10EE9000DF687ED67389BED70A91EEEE52C83F8BEB +:10EEA0003A5A16CCD1F8B41C4C83FECC4F73BA3608 +:10EEB000F628C1518924FE55139667FDCBAC9FEF10 +:10EEC0009EE72667A05CE912FE1783D0533538EC25 +:10EED0004836D13C76083E5AFE42D614E4BFDDD90E +:10EEE0005CDF020943F4739798FB59D9FF483CCE85 +:10EEF000EB3D33EA90D07F5103D677A8A06740F965 +:10EF000066A5DEE2D0C939E82224BBFFEBDF4DA8BD +:10EF10001FC13E77097DA63BBC716535C3F5044B27 +:10EF200051857484654DAF408AD4EB05410BC89F71 +:10EF3000D186E05D4B411EBDF0D0A919762BCA7D6C +:10EF400026F482E3335494EB0D9268FFEB16354BB5 +:10EF5000AF0700D959227A0063EFCFA881F2E22CE3 +:10EF6000ADFDEB33D091D863D1D20FBE8A767EA3AC +:10EF7000B1A714F516B7D3D6629908F3B7FAE7220A +:10EF80008F1B93BCA40AD39A9EF3EB8EED2DA8574A +:10EF90008C31F45E6181FADBDB77B75464237DFA50 +:10EFA000E2FC0997864B97E28BC3F57789F56727D3 +:10EFB0003F346343FEA5F594DA3DBD5578EEA0EDF0 +:10EFC0004FAE93F3390DBECAFD3731F4CB1843264B +:10EFD00055AFAF68DFB2640BD57F355EBD3A79FCC3 +:10EFE000A5F1AB0CF10BF0EA1F829F8F3170BD25AC +:10EFF000B6DF9B9325CD9F5F8FE396BF60233ED204 +:10F00000BFE5A6C7D1CE281F55F4583CD067D7BB63 +:10F01000371B91AFDC98ACF079FF2230CA4ECCCED2 +:10F02000978170433F00C1E5B92C09D7110B378791 +:10F0300058576CFE75C956AE4714D8880FEC79CE78 +:10F040001642FB64EF46900F43C0617132875BE369 +:10F050007A26CE99FC328E9FEF505564BE052E7FE6 +:10F0600010BF46B09B541D7FD3DA2B1732A3CE9925 +:10F070003AED2AC15DB99043F9298ABF06E1FB7ECA +:10F08000FEEEA5F741BB47843CCBB4ABCB92F1FC81 +:10F0900046561FA8F45E3C2FED7BB9FEFDB5C2AF0E +:10F0A000F96FD8212AE9070971C43707ED90ADAE91 +:10F0B00061ED10E2B39B64F2DB0F6B878C28F6A046 +:10F0C0007CB21ADA2DF8CD977D0F9479D11E397064 +:10F0D000EE29B4479E8C277BE46CEB7437CAC76E6D +:10F0E00023B73F6A922D346FD80FF2C30E6F871883 +:10F0F0005A2A8B2E6D87C4D26789CA087F1485551A +:10F1000020BFCD44C313F643F1C8744E673CCAF523 +:10F1100039E4D3F835B97C248707E92BA450B9E149 +:10F1200004E889F86D6B223D4BB1FBC96FFD1D39B9 +:10F13000F024EE2FB05D05E1611172C1605359A05A +:10F140006878FEF4CA436D339A819F188EC69DA2DB +:10F150007EC37C7CC389CDE42F67CF46F707E33CB1 +:10F1600087F865DAEF0FC7EBFAD7F8E1AE875A6791 +:10F17000E0FA7B4209D4FF2F1E6A7E3598FF15FD09 +:10F18000872FEAFFD050FD6BFC77EF432DC4FFC003 +:10F19000040B9B018E353BB8FDF6C243CD333628B8 +:10F1A0005F31CEEB178DF3EB21D721F8F4C30F6D50 +:10F1B00069C179EFDD503F77283A3EE3E4FE995884 +:10F1C000798B673F59255CCEA6E9F6D38CF2F6AA77 +:10F1D000E1E5ED7927C7879A78CEE70E0EC8F1EF03 +:10F1E000917D96EA40D4EB51B8DD6CCF4A9536005C +:10F1F0003EFFD6C5C7B7876E65E807975D9EA63EFA +:10F20000B4835A66D1399236CF2EB4D7906EC05E91 +:10F210002B207BED04B7E79EAB65059E88DD766EFF +:10F22000CF9D16C4A3094ECE77CF3BEDD4BFF54892 +:10F23000498071170EC14FD337FE3329F019E29B75 +:10F24000D9C5F509731693E83C49D873FFAE5D75CF +:10F25000A3E0FBDD565FD57468975A2EDB913E35EF +:10F260003B09EC122BEAB19BB7C924AF06ED216133 +:10F270002F69F657A3CCF9CAD60E7937C26D6B5BEE +:10F28000C96FD13EDE54AF90FFA61FE6694D1AC28A +:10F290006E72813D05FDB5371BAEC5756C057B0CE7 +:10F2A000ED2EF7C2E87A679302692E8093AD42266D +:10F2B0003DB9BB7037D9A3B1764EAC7E1CAB0FC73E +:10F2C000EABBB1FA6DD6DAE8F2AFAF5F72FDF07269 +:10F2D000F54C627C43E897A4EF121FB9B305F5160D +:10F2E000B20F21FD76F29D44974A98E38382748899 +:10F2F0005FA43FA4031660924474F72D17F2A95A35 +:10F300004941FDD032D8BFCA500EC6FA3BB46FBED9 +:10F3100093EB9BB17CB56BCBC81CC4BB7EA3E7361B +:10F32000B48B7E26FCB1CF8A2F13E7585AF9F3C26B +:10F330006FBB7F98F203A2FCA0F8C696FF52B40BF5 +:10F340000FD3FEB068777498F6AF8876C786297FAA +:10F350004D94BF3E4CFFBF16ED7A8769FF9668F764 +:10F36000F630ED8F8B76EF5C54CEE5FC7BA2FC444F +:10F370004CFF2745FD3E916F7078B8DE33CCF99C89 +:10F38000661F631EDAA3E4C21EA1B31F04FFC4BF3D +:10F39000C6D288DDA9F10DC7381642FF8766CF6A4D +:10F3A00076E7734E0FB5B35580FD4B993D8CEB6FEF +:10F3B0005F0D9F4518EB319ECE17C97F8D78B348FE +:10F3C00087674B5D465E5ECCE11059D748595B9725 +:10F3D0000CF9AB84FD6F7088FE1C91FE16E8FABB39 +:10F3E00051F8E7BA2E8157B3705E29917AC3ED7F49 +:10F3F000754CBDE1F0F046B1CEAE4BE0C3D2987A89 +:10F40000C3D1C57531F59E11F57AC477AA9043979B +:10F41000C28758BCEAD2F4ABAD135AE99CF712F498 +:10F4200071AB583FFEE9FD14B63699F020850D44C6 +:10F43000E14722EBE54130023F8C17BC4C1D8B6944 +:10F440002E9F3E4FF68878293F43BDDF78219FCA23 +:10F45000F77AB9BCAF3DDAAB7A1323FBE976723B9E +:10F46000778CD0DB6A92B89F8E4D6176D45F41DF96 +:10F4700091505E77A730F273CA2E90D7507E479690 +:10F48000894D87F2B3C97C5E6136C5568C72BD8DDD +:10F49000FB9B34793DDA60FF1BFA5559B285E28552 +:10F4A00050BF41BF087C299E28CEC9F7E16BE837E1 +:10F4B0006EE710FA8D5BF4F3DFA8775E705D96DE81 +:10F4C00039B47FFC6BE89D4ACA907AA7E34A06B438 +:10F4D000E87EF07BAD9E8917F7AFE9A17129D6AF21 +:10F4E000AB873A535286D243BF9EFFBF6B9CB0732B +:10F4F0000A2D64E780F9E94E46FFA961A60FCFD532 +:10F50000DE76703E71A973A44B9D1B5DEABCE8CA10 +:10F51000940417C68581CDE243B93FEDA7450F5648 +:10F52000027EAE7ED340FE9AB5ED7799ADEC62B91E +:10F53000ABC5E368712E9A3DA8C5BF805E3003F16C +:10F540003CEE7EA703EDB60752389D1C6AE3E764E4 +:10F55000FD73641E67716C5B259E3FFE5DC5681080 +:10F560003CEFDC381BE1D2D16CE0E708CD0DCD7863 +:10F570005E583855B61B3C7A7BD45DA0B74747B977 +:10F5800002E8A9817ECB49CF6AFCE7140BCA99CD6A +:10F59000F6D971A8076BE796DD1DFC3C73EB1CC820 +:10F5A000B75DFA3C3376DD2F38C4F900E3E7305716 +:10F5B0001E99370BE36CEE6873165B3DB46EF2B7C1 +:10F5C000FEC9C1F99FB2D650701AF8470AEAA18065 +:10F5D0004F77805D8E7C4DC17822CC67BAFDF16299 +:10F5E0003C14E7076330A4D0497CA9205FDB5FD8D7 +:10F5F0001F13EADF2911BFCB70F4AAD1A746B71AAF +:10F600009DEAE8B316F198CD8FD6B7347CD6CEB745 +:10F610002C2956B29FF64ADC8EAB4F31B7A01D673E +:10F62000F4707D4ED3CF8C38DE553A3D0FE3AB708E +:10F630003EAE008DA71BF70734EE3136A49EA79D82 +:10F64000B355A75866E0F9CE3625389BECFF90C23B +:10F65000504F3FE49A5D89E736ED027FDA8F194912 +:10F660008FFF3BD011FA57F0BC7CA838320D5F4EAB +:10F67000DB3D51F1161ADE0CC7DF4D82BFDF9EC2A3 +:10F68000F97B2C3D69FB154B574CF115E27AF618C6 +:10F6900083144772B8F32E37D961BF08E4DA87982C +:10F6A0009FF6FDA1981F6CBF15FD48C080ACF20409 +:10F6B0004A6BE7FD3609E056CBB4BF55E44FFD9EDB +:10F6C00018BB56C4154E3570BF53DCE312F9CD9705 +:10F6D0000715C28BDAE0C65532ED5B88F429EFE3FB +:10F6E0004686E7F4504EFBA7B55FDE636661DD7AC0 +:10F6F000563E0B699D5DE1653C6E6E29D807611D24 +:10F70000FFF1E2F978229647E733C3FC24DC7F8CD3 +:10F710001D1D2AEE74ED89CEAB8FEAFAFFA5C697C0 +:10F72000BEC9BE49768A683F1CDC3E5F1FBAFAA894 +:10F7300011A321D4A3885F5A3EC3C37BE0FFADA3CE +:10F74000CF140E85171A5C17AC9DC2DE077A7CDEDB +:10F75000642FC378D7E06312D9ED1BE3BF354D4169 +:10F760003FD0599802A417DCB37C2CD2EDC4D33E11 +:10F770005335F4B7B297FB6FD20CAB8AEF457C3DA3 +:10F78000CC6EF78BF42AB47B6DAA07CFFFAA059E37 +:10F790007F64AC2FB623DFBFD5A6A23CAF9EA3BE2D +:10F7A0008BE724D5F38B2C08B7EA1EAB4A5F0B53CB +:10F7B000E2501EFCF34B8A7B5E2476BB5A6116CC6A +:10F7C0004F3331C50ADF173A66993C80676971CCBF +:10F7D00082E9D28D303EC02971829FE6577DF0C705 +:10F7E000FFC0FE9628E14392B6EFE331FFD5FF401C +:10F7F0003B7891EA37A19E71E51E9320460EFF31BA +:10F800003DD1E96FEC8F4E1787A3D3638F45A7AB2C +:10F81000F1C013C679F10B0333023C079E8CA7F3AA +:10F820009EE5C08EBEE5E4D3409FC8B29F8CE944FC +:10F83000F9F0FCBFEE243FE1C01B06B2DB9FBF0224 +:10F840007475849F12CAC1F99D7BE4C78FDD03E5FF +:10F85000E79E4A430F003B7C96FB0D973F6126FCD9 +:10F86000FE64BD6F7205E88753961FCC413AFB6476 +:10F87000FFCF1FC3F20F9F31333C2FFB50F83B0FDC +:10F88000BD77E0CC2338EE33F1C568C37EB8F78589 +:10F890009108A7653F792907E36CCE3DF593524A5D +:10F8A0003FF5E455F83DF7E48F4756935219CA41A6 +:10F8B000FF9FD6CFF2A7ADA792017E673EB6D9F4DF +:10F8C000E7DBDAF7EBF6BB1CFDDCD4EFE6DE64A485 +:10F8D000BF3D0941FC2EDB73DFA7FC2BBDC9BF1B5D +:10F8E000A87C19406602C0F183042E7797EF314758 +:10F8F000C17FD4CEE8FDF800E4F3CFA0DEE8507479 +:10F90000FE1990733F83710B3F995F857C0FEBE18C +:10F910003CCEC0771FD4AF837C07E47F22E45DEC4C +:10F920003AC7A5723DBC6E7FF4F80794A1EB4F4A2D +:10F93000E572B1104F8875FC21C33CB41F5F4DE5E3 +:10F94000FCF7A9A706EB1BB8DF02C809706CB9A0C9 +:10F95000AB1707E38FD89A4CA097E588247991FCE0 +:10F96000E54CB76EF263F89210EEE7845EF2B9915F +:10F97000D3EDB9F581B1A7818F9C595F3FBA42A7FA +:10F980005F2CD955DD940E7853BBAFA09862E84543 +:10F990007EED934712D14F75458F91E46DEDBC27F5 +:10F9A000EE9F84F59E34F4E0BCA03C15CB3FEA7991 +:10F9B00039F1BB90BF64A7B758AFC72CD9F9BDD1F7 +:10F9C000153ABEF775E950E30FB5760E871726F4A2 +:10F9D0004ECB047A5BBE53F261B5E53D37DE40B6EF +:10F9E000DA2E830FFD7AA50AF31B4A701DCFBD9254 +:10F9F00001F9752F8D2FC5F540177330BF55F65F90 +:10FA00003B06F9D363468AF386FC6332E0D9E1C250 +:10FA1000074DFDB08E35A9DCBFDF7A93AD06F52624 +:10FA2000E8EFA80CED121F9754917E07EB9F2DEF86 +:10FA300049443BEB03A3AD19FDF41F24D4FF16E7A3 +:10FA400011DCCBFB65613EEFA5C23F5F73D0487A06 +:10FA5000435D77436219DA9DFF3248C87707BA25BC +:10FA6000E2074B7646E3570DF4ED8671CF752650CD +:10FA7000FFE75242392857CF2584729CBC3DF1C123 +:10FA80009A3DBFFA0FE47B4B43D1ED63F161A7C010 +:10FA900063F82BD4E3D5C578C314A534525EBB16E6 +:10FAA000E481EEDCA5F674BB09F5CFA5334D5F39D3 +:10FAB0001EE025F3103CACA4FF2FBF82557878FCE4 +:10FAC000846481FECFE1BFC06E5D3E9B556AF974D0 +:10FAD0009E81780D28FBB713BFBADF00F89D819B8C +:10FAE00087F6E64FE3C99FFAE1C726921FE7CE8269 +:10FAF0002207EB5EE91E3BB94237BF8FF61F49C4B0 +:10FB0000F97DE409273A015E0790AE316DE7E9E53A +:10FB1000675BC92FB7A1E74822C6B92FEF49A6F303 +:10FB2000F3037B25A70C70FEE8EC13F16C083A5D3B +:10FB300076969F8FC7F2214DBE9EC27F821C7E2982 +:10FB400055DD9F8A7046E301F480B4E4FAE2FA21BD +:10FB5000FAD3DA85533D5C5E49BC7D9A6135D5FFA9 +:10FB6000B3DB7F2415E329C705BD8827CE8085EE4A +:10FB7000A7BC6FF0DD651F81F23260223BBF31858B +:10FB8000C659C2605F207F81C2C20AE0E70294BB0F +:10FB900057519AE0B7608F14C2A38A843673D43D5C +:10FBA000AEC51DE6A8F336B64B570EF05F8A723528 +:10FBB00091CE99C2E82F5DF67874FDE560AEE3B8AA +:10FBC000B54F7F69D6F70B9AABD0F35413EA89FF90 +:10FBD00010F0F9B35B3D81EB7289388981378C5C19 +:10FBE0006E32FFB7703DCB851C5F643E44EBABBB10 +:10FBF000E79ED10B411F39BFF607A317260BFF075E +:10FC0000D2FB4E89E355050B67C3FC6E11FACDF2AA +:10FC10008352780CA417C1BA518F98F4B4144C00D5 +:10FC2000F9B5C8C2828988676FF37DA915EBC17ADF +:10FC3000492508BF208DF70FB11F4B592FAD6B52CF +:10FC40008D44E34DDA2F51FCD1B143A54988377F6C +:10FC500003FE8AF4087A09B33A8738EF8C816BCDBA +:10FC6000AE1838EBE19887F08BDE9795CF023C8792 +:10FC7000C0B36D82DF9F047B42AF67328CE287792D +:10FC80006FDB2051F9B61B4DCC0DF3DE3E6F7117C3 +:10FC9000EA070FA0DF4EC41362FC5F2BDAEFFC9C77 +:10FCA0002F6C8171E2C6B2C8B9DF04D2B3289D9C23 +:10FCB000D672ED4EB087B61B03E9E82FDA3E0BF49F +:10FCC0005EAEB758516F49C908B8D360DC0506FF6E +:10FCD0002B68682C94D51C05F1722D87F38E92FA4F +:10FCE000D1F55FA197A6C1D8F14E313FD4A3C6D8B4 +:10FCF00028DE2ADD227C3FACB74F82FCFB4A2D7404 +:10FD00002F2A4D06C36108786BDF3405CC4F277D61 +:10FD100059027EF1A8F52BEA6BFA621A2A4BA877F2 +:10FD2000C6D777621C52DAED85250DDEC83CB74B8D +:10FD3000BD2A9D27DDCBEF07C51FDC17CE847A2BAC +:10FD40002A3DE4274DB9F94421DE7F999AC6E5475B +:10FD500092D0931F965823DAB96EC077A904D35B6B +:10FD6000D35743FEB86725D2AB573C5B665861A3B7 +:10FD7000F573BD3A667CD897DB67437E551AC7CBCF +:10FD8000741BC757F7C6A017FB493AEC5FF532C1A1 +:10FD90002DCE87713C084F5AB78535A3BEEC661B44 +:10FDA00024ACD794C2F1A2A99AEB43001E25C9C97D +:10FDB000BFEFC017ACE44623879B12C7F31B719CAF +:10FDC0006D897C5E29B2E1F6598857253CED5C27A8 +:10FDD000A9BB8918B7F27D34B34A5C27E6E3BA6061 +:10FDE0001AEA3E9B0EBE53EA8B711E6923F8F7F5A3 +:10FDF0003E4BD00074F9BA4BD383C336C427B63F09 +:10FE00005D46B9B946C8FBF346356D2CCA91378DAE +:10FE10000CED15574E4CFDFC4219E5C61A2167FF43 +:10FE2000EE9B92844CE2EF3635C901DFFD466E2F22 +:10FE30005C648FA509BDEE42260BE9E447DDDCCF0B +:10FE4000C85EA8BB901395FFD17A5889EEFE6D6D00 +:10FE5000CD61BA1FBB82F55268F68A1E030BE9E832 +:10FE600077BF958FFBF91FCDC43FEEEC1EB59BC746 +:10FE7000B57912672744E8B5EE82810581F6AE3682 +:10FE8000C8B7F378B68126F4D9F71F74308CBFAAAF +:10FE9000BB60E2E5B9BCBFBA0BC92C88BE5805FAF5 +:10FEA0001983ED3E6D5A84FBFF92447176751752AB +:10FEB000A95CD387EB2E48BC3E8C8BFA60DDFECF6D +:10FEC000C5FA14CAEF870FFA5F83FB0D245F6782C0 +:10FED0003C457EDB1F928305B03F9FF8DE2779DA31 +:10FEE0002FF4636DDC8FD603431D15C9FFC4DE47B5 +:10FEF000F23503E35530EDE1690D5E588E70FA641A +:10FF0000AEC63FC20AF6FB88EF9082FEAB5ADFA175 +:10FF1000694C872F11B8C6E39DC541B8A636F48653 +:10FF200065E015CFED78F7BE220C41392CF856F07C +:10FF30000FF7617C52AA418EE2631803A3C53D23EB +:10FF40008A6C930DE29ED489FB2A26EBD2A2FE6036 +:10FF5000FBE01FAFAD00BE37AE88B7FF5F3B4EFE84 +:10FF6000EF8D284B35B9A60CE4F81374694B4CDAC5 +:10FF700006E931BAB43DA6DC1553EE8E4967F1FAB5 +:10FF8000B725F58D37804DF9DA8EFE6BF19ED46D75 +:10FF9000997DDFC37B696D863F5F5B3111F503DFC0 +:10FFA00034E44B75FB253B371B38FC56FA18E9AB9C +:10FFB000365F9F09CF67E2C7F95E91A15E2DD493AA +:10FFC000804EE28BC20CF9575D8F447EC7C1763DEF +:10FFD0005CCFADED3945ED86EDBF50263A6F2DEC87 +:10FFE000A77A2BD67E6C42BDADB976A31FE5E87724 +:10FFF000640F8FF360013513F07EE5FE598CC7DB8B +:020000022000DC +:10000000727EFA49BA7A04E7137C49B2235D0FD2B3 +:100010001FF66B8BD08756FF0F630EFE0EC358E39F +:10002000D77CBA4181FA7F5CF197F138DE1FB0CA04 +:1000300044E4CFA1D138EEFC9A3B4663BEB3A8F7A7 +:10004000773741BD93C6BE47315EC5BAF33F097EDF +:100050002713FAB231DE3ADE6D9C89F7D24EA6F450 +:100060003D8AF0DCE836CDA4F2ECBE6C19D276778E +:10007000192F2FE87B14D3953BF3797A4C5FB601A7 +:10008000DA97040B6622FCBBED9C1F3E067633F22A +:10009000D53FC4CA6537E7331746AAFF07E524AB47 +:1000A000E572F151B0BD2CC02F6F7BA46F6F37C0CC +:1000B000E1B6EFC7E34A59F7473754F9399CFCA832 +:1000C00087A771D4D7C94785F4A5887CE4FB9190B4 +:1000D000D3EB194A7E3C9FAA36B8C747BEC979F010 +:1000E00085F934B83D02BEF5C51EE877FE7C9B8FCE +:1000F000EE25287DE3110F1FB0F27501FDD03EDB28 +:10010000C4BEA4BAB97C4B75733BF7BDD4A9D42F38 +:10011000E8FB410BEEE72C13E9651DB3D4F438F48A +:1001200073CF4A958351FE0F23D93B1DE23E77C71B +:100130008A028AFF1DD4F37F6CE671514C1D89F34E +:10014000B805F9918E0F772C9D924EF720BD6A3A33 +:10015000F29708DFEC4941BFB4C62731CDF9A3447B +:10016000698D1F3206F574F74DBF6B647EB40FBE08 +:10017000DBC9F9DD60BE04F945917E2E37BFC3C1EE +:10018000E7A5C9C9B4861E8AFF48DBE175923E81A6 +:100190000217F5B2ADA37623BC53326613FC3A6660 +:1001A0003D4171DE1A3E178E52CB709F6E11F17F6A +:1001B0001ADEE01FFAEF163C94D6897ECD06B10F09 +:1001C000A0775D85FAEAA7E97C9F1BD0B74AFBCCF4 +:1001D000E3596E33878D481FFFB34FFFEDFB741754 +:1001E000E6FF57F769C5DABF5C1EDF1474B95D0A14 +:1001F0001BD338DFE47E06C8477DA2242DD0E2D68B +:10020000F9FD6FFBC10ABA5FAFCD27FEEE172A6F6B +:1002100086E4C95BCE753F01ED4F7EDF4AFA52ACF2 +:100220003E7EF23D4B1BFAFBE28BFA56E0BE3BD71B +:10023000C6DB516F3929FC8227C5BA4BBFBFFC759D +:10024000B4BFFBDC066A87F63ED3E3558BEFF7F7C6 +:100250000E895F066EF7BD64203D7F10BFBA47115F +:100260007E59051E6518420F2F463CBBD9467EEAD3 +:100270008E0299CE133BEE89273BACC3DB47F0EDF2 +:1002800098E8A1F828C02FDABF817926EA1700186C +:10029000C4FAE7E7668410FE806F7CDC7916E29F83 +:1002A0005ADCE5F99A3C8ABBBCDAC0EDBC81029904 +:1002B000DA47F0702071960E7FCE0BBFDF79D48FB6 +:1002C0009274F9C2CF007A41A2FE7D914BE56B7822 +:1002D00098DAA0D103C7BBD30FA675F27B62EA48B8 +:1002E000A4833704FE68FCF8D3F4C031E40F113D59 +:1002F0009BC7992D7880FB9B372770BCDE65E5EFA7 +:1003000078BC21F8BD36FE2EB04B50FE803DFE6B12 +:10031000ECE776E8603FA46F4F0BFCB20FC75DAB14 +:10032000E1B1DF8478B748F801D8BA68BB15E3AA11 +:1003300006D3868BD38B55EE0FBFC8CFC0FE658E1C +:100340006EC7F59EF8A20123E2FB0E2BB7F334F93A +:10035000B613CFE7607D3B61FF913EB57A7FFB2806 +:100360004EC6FB141FBA39DD1C7B7D6C12FAC735F3 +:10037000FB3CD65E5F894B807EEB2C18F307DF38A1 +:100380000FF9F1AE36707FFB40B7390A3FFAF7A795 +:100390000BFC51ABA97C438207F103DBE3BAEAF221 +:1003A000199BECD4D5DF398AD7D7F0E93949E05326 +:1003B0006829CAE5E0D22B18D2475D1CC7C74F5A3F +:1003C0000C9D4817DB4D7DB7A19DBBFD8099EE7953 +:1003D000D52124B1FFE017EBD1DFD5AF707C413FD1 +:1003E000B4DE4F30A8A7C3BFF15E47AC9E0EF94103 +:1003F000833E1F51263572BE562BEE2DAD944F8D88 +:100400005CADD3DF31269FFC7158C91BC11B84DF53 +:10041000E412FA1E35D0FEF495FA75783D584FEE89 +:10042000A7FE86B3BB57EEFC0BDDCFC273373D5E34 +:10043000D446F047FA52C2F175F8A4B3C749AF47A2 +:100440003F5005E3EFD830B0CF915F15B16B5A0143 +:1004500015EA843F28E570DF34A4AB84713D0CEDD0 +:10046000F3BAB39C7E261DEC3C82FAAFB3A2371BD5 +:100470009BD7093FA7866FDA3C271EDC6A40BBE4A6 +:10048000F0C71CCFCAFBABE721BF7E312EBD1CFDE0 +:100490005429198189E9309FD365EA48C4A3788536 +:1004A000CF6B515B4208CF735F7432D54E70F2E46C +:1004B000239CCA4DFC1C646D9FB76891CE2EBD3E37 +:1004C0009DC7E74F955515FBFB6498F8F399E9E252 +:1004D000DEC9496B00F5B1F2382BF1C1071E1CB51E +:1004E000DB4CF0E9213EB970BBD7897838339DEBFE +:1004F0009F2919FE99E9A4EFF94A919EAF4EE7E7CB +:10050000ECE5264F3EDA592FC6A595237DCFD0CEF8 +:10051000D18265F97845ADDCCD613FC3620E27D04D +:10052000F95AFB68E44FB316C6717D91CD243CA9FE +:1005300014F8B4C5CBD7BF6506F737FE56EA71A1EC +:10054000BC932DED6B30BF2A3FC187F2E44DC991BA +:100550008D7E4EB6D4E8386389BCDB33BC9F4661E0 +:10056000677471025B308EDE495FF2DBC03788E969 +:10057000ED71403E28B7E3CC244FB09CC719787684 +:10058000A19E3DD362B6237E24A0FF8BB757D12F07 +:1005900033D3F2AB7770DDE8CF437E09E5AAD62FDF +:1005A0002F673D4827CC67FC48FFAED4C356EEFF0B +:1005B000837641E4A7D02E28DA85F9B8590E7C67F6 +:1005C000465B5F83B1A718E7175C01720DE6B7AB16 +:1005D0002C68CE71219FB61637409DC7134C6127FA +:1005E000CCA349EC33CC9BEC402D4E313FD114C60B +:1005F000F36D0DFF72AD654D882F1A3C1AACB03FFC +:10060000288717C5F9D09EC77988F944C1290217F0 +:10061000EE779F494345E002785B612FD1C3C7164F +:10062000C6F3F058B80C070F6D1D385F67E2C57050 +:1006300079D1141C8DEFDABC78479C8FFBD962E02E +:100640008459E9249F7623DEAE6401F20FAFB43003 +:1006500015FD528BCDABC83F5B23FCDE0C9D7EA00D +:10066000977C2273BEFBC95312C9093C57D1F34B87 +:100670003C27D1A76B859F97ED89F1C70A79B7020F +:10068000FDC4F8ED896E079C9DE462DDFE58BFF75E +:10069000207F8AF18309BE509341EF06F421B027F1 +:1006A00062E646A27BF4AF71F9AFA6A33F67FBD227 +:1006B0003CBA7F87FC04F77351FBA8DD1B843E80A6 +:1006C0007A84E697D3E83925A3FC0D84D38B19E50A +:1006D000C7101FC8B933F1ABE889CF53AB877EB9D8 +:1006E000AF3AA7588DFC0FF49D77D23D34DFCA573F +:1006F0000BD250CEAE963C695CCE8E8C4A9F3104B4 +:10070000E89C42F3AB2FC573024304AE8B853F7E5A +:10071000B1E67F877DF2C4EC933EBD4CB74F1EFD22 +:100720003E55B07042CC3EE9DBAD847DC276B84F19 +:100730005171E31D7CDDB70B39A1E1AD635DA7818C +:10074000E9FC144925AA7713EA95AF1AC9BFFA67DD +:100750008197B00FA5A817FED95DFE16C23D0EED1C +:100760001B58F769D09371BFD19F3B1BFD5DEB0315 +:10077000A3295E4C514B670F21275B0F586B104F1D +:10078000A40C4EEF5AFEFE7423A5C90F8F7A448B3A +:1007900059E8B59E1CECA7344FD3173D74BEBE502C +:1007A0009C2FAFBCC916C0FEFAC539414206E7FF0F +:1007B00009193C8E5C4B6BEBD3E229D0CFACF7939D +:1007C000260FD6E3FE5DA604287E74BB31645D442B +:1007D000FA97DF84FAD75F3FE27871ECD882A538C8 +:1007E000CFBFCE8D6318AF909DC1F164A138D7FA09 +:1007F0002BF3087D6C24E9675A7A50EFEA3444E918 +:100800005D671F4F137A577D54DCC460F9D9919A04 +:100810009E1544BD6A609F55D3DB55D4A382CF8D0E +:1008200012F629D78BCF1ECCA6FA67308E02407BFA +:1008300056093C8C7416ECE1E7B567851E55B7EC9C +:10084000DC5528DFCF32CE978307CD647F30254833 +:10085000FAD499417D3E9479836E3F0F887BD7B55A +:10086000A6F048D4E7CF0A7D4B4B6BE7FF98C6FB59 +:100870009E2F0A7E5E1BC7D36D964059460AC6E777 +:10088000703BAB3611F26D97031FE0171C3F083F1A +:10089000B11CE5CBD98363A2F5D087B95EFB81910A +:1008A000B70FFEC24BF079A084E3D7814E4327BE39 +:1008B000BF77DE6FA2FB1F6785BEA9C165E3074F47 +:1008C00064E2BE9D1DD42F393CB68B7574183D393A +:1008D0006351BF42BD0ECFB99B797C5C5DE8FDF9E9 +:1008E000A8E7D5D5FCF336CA8F89A3382FF5DD3FAD +:1008F00092F6C94D87F12BEDBC4C83C3A05F50E845 +:10090000A9CC35903A94BE59F741939FE259198F7B +:10091000939E2458EE45F562C6277BAB94EBDB74BF +:10092000DE1813B7C1F469C3C5E97B06E9243AFFB1 +:1009300007E8534EC17944F777DA184CC4F8898137 +:100940000F64DAAF151DD5B7611CC73F52021B33C8 +:10095000805E0E3CB8B994EEEB8B7D9EF46111B7CE +:1009600003DBF939EF69A37A1BD2A9A3226CBA433E +:10097000079F8733B87DB8C02CF477E0B77A7EA3A1 +:100980009597960F7D1EB253E31322DE8BB11BCCDD +:10099000A8171CC07F7AF4F5389F7A58D077EE59A3 +:1009A000EE67CE5D176A48C4B8909EEAB108A6DC2F +:1009B0007561E20FA78D2C8CFEA6D30F2770FC4526 +:1009C000FF28F4BB7802EF77B101EC505D1CD83200 +:1009D000B16F8BCD60B7023F7E614F992101E399E2 +:1009E00076493E8C3F9D24F835DA2FB9283F449C48 +:1009F000500DEB6DEA83FE17B731CB048A130B1948 +:100A00003209CE8CCE45122784285E4C830FC89DB8 +:100A1000C64468B74C0DD179486CFC05D3C753E088 +:100A20007EE0B9BF4ECF59D1DE427104837A424F86 +:100A30006C5CC0BFCCD178138C92A39AFC3C8C70B8 +:100A40004C89C895E1E429E84147903F9496737A30 +:100A50001DD827113C57B07A1E0720E459ACDE722E +:100A6000C6C0E5EF62F356FABE93E1A5F196B13E3A +:100A70002E4F851E73A97D7F47E08FB6DFB567597E +:100A8000F81AE8FF5D317FAD5EED3A165E7115FF35 +:100A9000A2BD0070E672DEC2E53C7EE32E43DEC7F7 +:100AA000CAF958B91E2BCFD34C5C7E6BF8A13F77A7 +:100AB00044BD66D2BA9001F7F995F52AC53FADB5A8 +:100AC000245E85F7E43FB7F26FB09CD35BF0A4954A +:100AD000F4C6BB0DBE9D6F02494CDBCCF3D99FE23F +:100AE000895F36B4707ED7B041BCFB9829FCFB828D +:100AF0007E7232397D1CC6710AF03E54258D37CD89 +:100B000052AC205DCFB07F9AA308FAB6019CA70B28 +:100B10007C5F690E37A15FEB48FA8A1F39C47B1DE1 +:100B2000F8CEEA34FC07E47F6C0CFC180F60A632A8 +:100B30004F23DAE3532C0173268C3365E47405E507 +:100B4000D5C6F89593290E19B458CC4F62AA35939F +:100B5000F852969DE24C63F0509BDF143640E7F567 +:100B6000D32CA7EEC27EB4F9C6CEEF48BAC4ED9F2F +:100B70009879D55A023FC25070984F3A8EA7CDF35C +:100B800095F8AB1A117F603E19623E995F351F13CD +:100B9000F2851118779F40F71C75F1D405D42E4BC0 +:100BA0008EBAA7A0C55347E286F9F7C8C72C0FED48 +:100BB00074D6CCDF199E2AEA4FB5994F215D3424B3 +:100BC000307AEFF5088BF36D04381E36B2FD488F8E +:100BD000D05DBEFEDDD9238CD359F0048F5F922CFB +:100BE0003CCE8AB18007E35B8F58CD2AF1658F2711 +:100BF0002A3E59E3DB47FE984D7EC5C356B30DF13F +:100C00000BEA53FEE13FC687F2C846D6C51FE75D33 +:100C10008C8FA8629E45BED8544FEFC3B8590FBD04 +:100C2000777B3B3A85C98EEF95707E596B18C54529 +:100C3000B0093EF18E2CB7E7A668708A99DF147C64 +:100C40002718F7D1166DB7B1F61DAA1E5E87118E53 +:100C50004911786AF08B9DF745EBDF09702FD5C1FC +:100C6000DD62A6779B25804BA67388F63176DF037D +:100C7000EEC002DCEFCF8DA0F7A1DE3DCB4272D2F9 +:100C8000593940F76C4F46DEA9A1751E11C3CAF150 +:100C900093B330DE745DA6B85F17332F6D3DB1EBB3 +:100CA0008C858336DF4BADF3A8D65FEC7AEDC3B409 +:100CB0008F59E7DB26FF6F3CE86F97FB12707F7F51 +:100CC0008373D1E1B1C6A75E457A2CB834BF62AC5C +:100CD000FE9B7CFFEBBF81DF69DFA9FEBB8BDE2FB4 +:100CE000BDF3FAD741B59A36BD7A0DA67BB3AEBD3A +:100CF000DE067262DA1489CEBD3B326F7800EF21D6 +:100D00004CBBB97A4D0A9437647F7EBD0BCBBF2BA9 +:100D1000897372F53B18DF39ED7689942A570ED422 +:100D2000B7A17D1B30E2B9FD4DF8FE5611C565A98E +:100D30007A7FD56399FC5CE031B11F3FCAF4509AC9 +:100D40004082FC74AE24DE3F081867D3BC03469C87 +:100D5000F75BD700174AC27E03D9ED3AFDE6F80CDF +:100D6000F3AD6A11AFA73F17FA99E0BF9ABD1DAB6B +:100D7000D7EC13FC583BBFC4F6378ED1972B54FEEB +:100D800033313F9B87CB379CD79C31FCABD7378F18 +:100D9000CF2B9B8A687C63A1B7117B7BDB14D89F28 +:100DA000391EF9E3C7095C6FEB1B83EB40FA3BE0AC +:100DB000A4F3671E5FE1E0E735532B7D8FDF0DDF86 +:100DC000E3467ACB881D49347736C212FAC53C8F88 +:100DD00069FC08FEDA34FE2BE401BE53A5F1DD5FA9 +:100DE000797710DFAF623D0AE2CF4CD64BDFEBD90B +:100DF000007DFDCC6EC4EF6CE6A3EFF9B2BE52B23B +:100E0000BF23FCFA3738EF8FB339BFAE648183A8B4 +:100E10003FBD83E323FF6461C2F7413E12C31F87D6 +:100E2000E52338BDD4C8B9B5C6C7A400F04FACDFC0 +:100E300014247E96C4027F423ACF64614A67033F1E +:100E4000237B76908F45D3CBE0F9D26889E2547644 +:100E5000C427929FF3ADD112F93D5F449985702E5E +:100E600096B4770E0D78BF96E0079D4C2F94AAD1CB +:100E7000FE985E99B600BF3B049CA7CF6FEAC57988 +:100E80004D2F7CF316CCBF8EF529740E8757B749CA +:100E90003FB2D3FB3EB38AA462F41B961C1B388C72 +:100EA000EFF9CC2C729460DC842F1C96315D55E8F0 +:100EB000A07B8D635FE7E9EB2638288E7ACCB37D83 +:100EC0001B31FD1DD54171D1DF38E89F9A82FDCDE0 +:100ED00074F8B0DC31DF45F731D81C8E1FEFAEAFB0 +:100EE000217A8FDDEF192C38E73AF81E7B3BCF884B +:100EF0006CC2963592F3B940FEFE3E687FA3BBCE2E +:100F000087F39BB870AB01E992059F34207F9C2B3F +:100F1000F6CB11E0711D7303B38C783F0CF0E12E1A +:100F20005C1FE0813D6B7C042FEE8A7BF3A40413ED +:100F30007B5E16F09C2D69EF2512BCE704F8F906DC +:100F4000FECD4945F7BBF66727BD5EE38FC725D1C8 +:100F5000BE9ABF0FF5FB774184015E55F8BD158C35 +:100F6000DB69413A6F0D98E97CB562FECD55985F1B +:100F700011D8DC4B979EEDBAFB388857A74D51E945 +:100F800023024FDD7324F2FF30FD7D1C03C6BFF149 +:100F9000FBFD6E1B97DB690153D4FD1ED4CFF5F525 +:100FA000413FF94616F15F85E2CF0A45FC19601909 +:100FB000ADA3DC26D17B2E2F5824662238B090C5F5 +:100FC0004B2412C6F8F0AB43FE59884790560D3AB1 +:100FD0007BE666017F6346A511F7FDDD898CDE6146 +:100FE00079516ABF95E0F3AECD23F095E4D9532251 +:100FF0008EED4A37B3E492BC9482E8CFB8F2850C08 +:101000006E07BAF9BD922B567B48BF98335F62E8F2 +:1010100047656D71F43E0C8CFBE597BA7BE737CFE3 +:10102000E7F6FF9C75E342E80A78BE448B9FF3180D +:101030009169CFF6075818F7C1CD7CF42E614D8E1B +:10104000AC97736FCF91558B8B1E83A17316793E2E +:10105000C7832A9BD48974775C0A353A691D26C2F6 +:10106000DF9439D5B712BFB204B2D13F567E219E6C +:1010700085C746F85AB99017D9802F7E8AFB9614F7 +:1010800045C72F62F90C3ACE703EE983E9207369B7 +:10109000BF3F80EBB5F4119C1334FD43D82FDA7BAE +:1010A0008457F73916D0BED8387DE39351786EB5A2 +:1010B000262B8FC72DCEFDD53B982F79389E1CFF50 +:1010C0009895E23C8F0FF3FEF83D599C4FBFFCC74B +:1010D00025D9689F1D4FF067A37DD694E5A1FCFC40 +:1010E0003966FA3D82E3E901CA3F2EEE9B60FD536B +:1010F0009876F8B31D549FEB71581FFDE4C7B303F6 +:10110000D9FA77C08E5BB576A3B2B0DD61AF673E2A +:10111000E2C1F1D169129E6B346771B99A5F68A61A +:10112000F300AD5DFEDCCDBD383EE8F7EC7DBAA73F +:101130001A8EE2E3789C9350323CFFBE1AFD2118D0 +:10114000370A761BC687DE6FF2351B803ECA2B42FC +:10115000C22F1ACD9707E3783F0A1A71DFE7597C4F +:101160001578351EFEE4E6D408FFFDBDA0D71D1A94 +:101170005F107C7AC79224F2CFBD5D1DC3C7C773D1 +:10118000FD607A40F06D3FE7DBF8A7E78BD3E76FB0 +:10119000EEC57D8B957B530A4690FD313DC0F7BD72 +:1011A00082F9A9BCF2778D3351BCDCC03C43CA45FF +:1011B0004D1EFAC29CEF571571BE5D72CC7704D3F9 +:1011C00033C7697C9CF3F96B0BBD2407DE5DF21B12 +:1011D0004ABF72B544E5C0575F427E12CBFF41A3C0 +:1011E00025F931A302E40923BEF34BE4BF3B06E536 +:1011F0007EF8B2E4AE34FF156E8FC4EC5FC46EE0CF +:101200007236225F5910E3F8B26D32FF9D0D562FF2 +:101210000D2567B5FDFC5D440F89B6272E530F18C9 +:101220009C07E3FE38EDF742A0A51DEDC72CD1BE0B +:10123000D4C282F1A81FCC11F695B077403F38CDCB +:10124000F931B773DC68E7003E74A516133E0E371C +:10125000EFFC74F52CB69B6AB0F990AFFDF56DFE0E +:101260000EEF0C75DE543CE7AC62814DFAFBA9A38E +:10127000407F5774726174C8023668247DE51E7B16 +:10128000547A4C8F3BAAFE37F67BA2CA8B41A8E862 +:10129000CBC71EF345A5C7F74E88AAFFCD77D4A8C4 +:1012A000F4C4BECAA8FA579FF547A547B2908C8BE5 +:1012B000BE66606E54BBBFB29093DE750BAABD854F +:1012C000A974BF9AFEBE7D2110D57E8CB8FF5AC688 +:1012D0009646B567CFF27BF6F5F01FFDAE4ECC3DDE +:1012E000FB91E25DE89BE61823F7F1693E6DE407A8 +:1012F0001B19533FF6BE6B56B6B8EF3A8E8D437945 +:101300007BD1FE307ECF79CA1E160A79713D549783 +:101310005DF1307F1F34765DDA7D5866785AC17A88 +:10132000FFF0480C9F9833BBA3F7D3EA89DECFF8D0 +:10133000C2E8FD4CF045EF67D284E8FD74A8D1FB0C +:10134000995C19BD9F29FEE8FD4C9B1BBD9FE9815F +:10135000E8FDCCAC89DECFECFAE87DCC5D1BBD5F4F +:10136000DE604D54F988E6FA687C14FB59D0BE362D +:10137000AA9DB69F41F8EFABF6738A6D2BFD1E4A0E +:10138000E5E3D1EF2E5CEEBEDE1CB3AF977B8F1989 +:10139000F8DEADD9E391AFF81B9D5CFF89B2775EB3 +:1013A00013F2E248FA7515F8B409FE45D93FA337A0 +:1013B00093FDA3E93B680E235D5CCBC2C4E763F5F4 +:1013C000F859C8EF0DC8F707721448AF34849B5022 +:1013D0007FF82C9DEBBBC0AF57E17CEE8ADB4AED7A +:1013E000ABD01E9274FEA121F8329E1B5C2E1F1CF6 +:1013F000F41F5D5F4F7E1CCD9F33AC1FC7931DE173 +:101400006FC43C83C4DFA6AC9DE2C7FBD99F1B79A8 +:101410001CE7C00C7E2E38E59E32CA1FB493AC5C2C +:101420007E4EB178B3515F2CAF344B782E576E5B44 +:10143000457E9529AF1BE9FEE45B9DBCFE5B1FE486 +:10144000119D819E4BFEB7C1383D110FF556B1EF8E +:10145000443DD6BB71942F88EB15F7040E4B4C0D11 +:10146000A2BC4EE1F2FCAD0403EFCFC1EF4BBDE5F2 +:1014700065A43FBE251552FF83E759D52CEA3CEB06 +:1014800040AD9DC7E169717AAB9838EF04F860F917 +:101490001A8F473BEF43393690A0C5E9F138C0E0D9 +:1014A000440FC59133D613C6F3C0031D0EB287A6F1 +:1014B0008A771A0E28FE0A07CEB388DF7B3F20E228 +:1014C000F78E8BFD457F37C565B49BA3DE653CD0A9 +:1014D0003686E6152BF7C83F8EE3B65B857DE4D9EB +:1014E00080F338B0CE43EFB9139AEAF4DA03ACE7ED +:1014F000C46AAC3F97EBC96F397A4E3F88709977D1 +:10150000850F7676104FDE9EF1E30FDEF2A09DB4DC +:1015100099CEBB2AE6F0772D5C57DDA7E0530CD2BD +:101520005C8E471D5EA9DDC0E38F8E65035E648C13 +:10153000E0FB56E9EDB622FD4D117EE2D706EDF94E +:1015400068FA3A927EEFAED543D0D5A09EC4DAE9D0 +:10155000FB6FD0D31F383D75527BCD3F0D747F029A +:10156000F3B5F50160B311EE9F388CE25DFC20D33A +:10157000EB1BC3D19506974A7BF1512C3E9FC0D7F8 +:10158000AFF199F969810FB375715C95CE10BD0308 +:101590003D9CDEF0D63070BA88EFCC18457E9F298E +:1015A00073CA685D535990BE335848F96AFE33AC2C +:1015B0001F86E5E8FC30B305DF01384939E32FE643 +:1015C0003B9A5E360897587BE972FD3183FA56B430 +:1015D0009EC826707A6BD0F8D130F09A26DEDF787C +:1015E000D72E8578DC993A333D15D7CFFFDE6DE6EF +:1015F000F451017C08E9FE5A21A75811D71F7CF04D +:101600001FCEEF1FCC16B0A01F2B3F5AAF2817EFED +:101610006C54C4BCFF3368478AF739CA637F072C10 +:10162000061EDA7A63E59666EFA561B4A561F8F562 +:101630008FCD49A0DF0983BE467D09E520BB486FF9 +:10164000E9FD9D81FCD22FA7DCBC702BE0EFA81F29 +:101650005D41FE9F9753BFBBE64D4C3F3692EC82F7 +:1016600069194B77AD82F4138F1451B926FFAEC9B7 +:1016700091C87EAB90A545E8F72A1CF7EE2D5E9841 +:10168000CF512BBB15D3D3D237494118E7BE80A722 +:1016900004E3E52A4C8CEA5DFB8D1563F5E7BED7C4 +:1016A000E570FFE7B522FE3C1B9F7E2CA1AF827E3A +:1016B000886C7748B143BF2671AF2F53618DF87E98 +:1016C000A8C9DD6EB3237CE378BFAF17FFBE04FB70 +:1016D000ADC8E3E92B7DF1A746E07C2489E673657C +:1016E000A114C677E02B9CBC7C66C99319184F598E +:1016F00051AED5BFEE03AC5F21DE334E5403C6D1ED +:10170000486FC20F7244E1FBB124C742EB7EC15661 +:1017100066C4773D6EF273BF943BD8D7980CEB75D7 +:10172000CF2D1BD7E089AC6F710E7F9F6ECE045E0C +:101730006F8EBFDAB850B7FE9BD4017A07F8A6B90E +:10174000A714E42FBF8FA1E359F80F3942C77EFCDD +:1017500007C0F3CD5B47917D3865BE97E8F206A6DA +:10176000D2F7461620BE3697B553FA16D643DFF9A0 +:10177000AC97D3EFA941FACD75E511FDAED5D3EF06 +:10178000CD8CBDD4E7BD986E87E36340E73FCC497D +:10179000199ECE86E3DF53E6AEDAB5DA7B317FD22F +:1017A000ECDE081FEF213EF475FDC3DA7A607D1D83 +:1017B000383F4D1F622017D01F0EF3DEC6E71DBD58 +:1017C000CEC343F027BD9EF475F523F4D7A03E9019 +:1017D0005DCFB8DD3A8C5EF415E7877B73BEC6F942 +:1017E00061ECF9E47BA96A699EEE7CA1EE1D8BC5D4 +:1017F00083F723C6F9599E0DEF55955D3702CAEB65 +:10180000845F2BBE97A99D90FFA8885F9F38C24335 +:10181000F8EB36F138077C77AFD886E7F8BDA4A798 +:101820000CA4303BF211EDFCFDD104685782ED3879 +:101830007F186C6F618D71BAF6E5DFE5FCF7B32DAB +:10184000267A1F8629815CD46F52FF602639DA7FA1 +:10185000BF89E2CA4698383DBAB4FB29F88B4030BC +:10186000DFDE1C2F5FAF74D88D4EA1206BA5AF16A5 +:101870008FD82FEEB57DE6F0D1FBBB9F6D4995D09B +:101880003FD8AFA8AFCC8571473CE49036B248FD55 +:1018900063397C9EFD1EF5D363B8AE5936F19E7A4E +:1018A000A018FD8066C3B82A0B9E331BD60D1C837F +:1018B000F62BB26DF43B7D15B9278EE37B691F3C97 +:1018C0006BA437579776DF9014C6668AEAF68FB90D +:1018D000D87E581A3246D929CBF744A757F444A7E3 +:1018E000EB62E443AC1C389F23EC170FF3217FBF5E +:1018F0005CFBE55B92FA19C7FF10C54F2C13FB6F19 +:1019000036D79FED84F59B1F282CD9407836700878 +:101910007F8B20F5216F09EAA33F15FCFA688EFF43 +:101920005FC837CCB94557A1FD559E3BB39AF6F336 +:10193000612BFD4ED467F89014A65FE2F2B32387C3 +:1019400097773C62F64842DE8E2FC5B8178ECF756A +:101950003BB9BC843F0B7F574BB5E07E7698545320 +:101960003AB6FB21F3E17C6A762EA1DF73AA65BD4E +:1019700074EF614AAE87DF83363C6DB2C03F3B9C5B +:10198000EE72D4D73B9E91E89D60E50B857EE71211 +:10199000C32030BE44B6A876FC7DA315FBF9F946FA +:1019A000462EF787364F8EBEBF647A765610C9F33F +:1019B000DB5F54D07B6B4BD67E97DE951A7CF7416C +:1019C000C4A32DB9671EE51F79F8F364ECF7CC16B4 +:1019D000D98E7870E6D1B25EFC9DAB256D360FFADC +:1019E000D9EB58BD8F9FC744AFBB51E2EF4F7CCCC2 +:1019F000EA7F7D0F80EC2F5A7C9ABD3E91E8DB5345 +:101A00009FA8BFFFD5B5CB40EFE1FD65D7587ABFA2 +:101A1000BA6376D57894D3DF768CA3F7F2B4724D9F +:101A2000FF579C139E407AFAF61706A20705E41B9F +:101A3000C677563C3093E21DBBFC710EA43F4FDBD2 +:101A40006E717F99DF13E9DAC2DF2BF0B29E26D4E4 +:101A50003BEBDAA6D1FED4B4D510FC99617209C66D +:101A6000A3D73D40EE1CD6659F1087EDBB98523939 +:101A700094DFF9BD1C7E9E5A96CBFD265D6FF3F771 +:101A80000BA7192657A11DB8628B4C71974767BFEA +:101A9000771CD7A5D193F6CE3FFEE97F1F559BCF8C +:101AA000D2C70DF42EDAA5E8CA9C3B99E6174B5F26 +:101AB0005D41FEBB0AB17476ACAD240EFDE3B1F41A +:101AC00076475B1EBD1FC39AB95E755B2EFFFDD5C1 +:101AD000AF41778B72C75F4C772C6B7654BCB346A3 +:101AE000675A5AE3EFDA39B0C5C7D46E1BBD5B4005 +:101AF000F1EDADB9FC1CB83597C7C92AFFB17ACF53 +:101B00001B0027476E600D8E97CBD462C433EFDF86 +:101B1000193E1343E7DD748E9DCFEFBB6D37FA6539 +:101B2000C24F25F0F33720DFD8563316E97D73AE68 +:101B300049D07BE05EEC67E1BAC0A78718E2DD150B +:101B400044F70B2FCC91F1BCCED6C1CF9D0B3AC23E +:101B50008C7EDFD9A5125E6A7CBB00E6DB39C4F956 +:101B6000F69E5CAE1F15B8FCD44FB387DFF7EC4888 +:101B7000E174F6C8DA387A3750D3C312C5DE793D3E +:101B80008CDECBB34CE0F0F04E9083D313691CCACB +:101B9000B74DE0F7BBE3C785E99DF5022C073C593B +:101BA000ED3678F09E8CD7C74EE9EB41FB53585E7B +:101BB00050C8DF699499C56383B1DAE05FF46E5E63 +:101BC000074F6B78F0D77689E87435502AFEAE124D +:101BD000C6C993FC1CC7E5E76AB7C9A37F77E8C508 +:101BE0008CB22EDA7755CD7769EF26338C9BF0D007 +:101BF0007A815B51BCD9ED452C60C98BCC7352877F +:101C0000DA84F81E0BB785627E5B707E802A937C37 +:101C1000902E1C7E7E4D824F6AEDB5F99956DA14EE +:101C2000A4E7C1FB486BF8EF349832DC36C18F294A +:101C3000DE2893F1FB328FBAF7901D141BCFE18A97 +:101C4000832FE815D93253101F4D32ABC07B12776A +:101C5000CB7ED26BEE36B4937DF2B9CCF5A35F891F +:101C6000F964D9FDFB16C37899867DF41E5FAE55E5 +:101C70003DC6E923FADE48ECFA73AD656FE4228EC7 +:101C80008838298D2FA43608FEBC5426FE7C479F39 +:101C9000C4E3599AA7AAFADF157F446EB7E03C2E39 +:101CA000E47AC5FB07DC0FB37D12A3DFE36D98C8B0 +:101CB000ED4A6DBFEAC47E490725718F0804948EF2 +:101CC0001F69BF67112FE27FB571EF2852C2E6216D +:101CD000C6C73FFDBCB5FAF10FF77A715EC3B5DB3D +:101CE00065E5F7745893CF83F5827981018457664F +:101CF00043B587CB975E2FC26D26F3EC924660FC0E +:101D000096270BDFB7D4EE070D770F28567F5F2994 +:101D1000FC7420EF8216D2874C04CF95B17EBA971F +:101D2000A421EF61FF5F2197B070008000000000E8 +:101D30001F8B080000000000000BE57D0B7894D598 +:101D4000B5E8FE67FE7924994926EF844732933738 +:101D500010C224407C210E096054C4E1A1825A9D26 +:101D60004084BC13A1DA58D10C2640D058838D8A08 +:101D70005ED40101A1451A141021D2017CD0AA35EC +:101D8000ADDAA2B53401AA229144F081E760BD6BBF +:101D9000ADBD7766FE21283DE79EFBF57E37889B2B +:101DA000FDEFF77AEDB5D65E7B67E73F17FFFDDE07 +:101DB00038C6FADF3638D731C68A3B2725EBC7311C +:101DC00056E736EA4C0E4877298C41BEB659E733C0 +:101DD000C33F196B4B718F66CC9E347642D958C87D +:101DE000BA5C1971858CA562919DB1938A2B3907D4 +:101DF000EA7B6718D906F874F2E52B9375901F32C9 +:101E0000CBA8D3437F97E975B7B92D50A0DAC26745 +:101E100058219FCA06F23331AF57287FDCC0E6BC99 +:101E200080DF19D483F19425CC6F8D646CAD6A5F2B +:101E3000AAC27CBD4B9813FB5FEBD37933A318F395 +:101E400059CD8C41BA9675F8713C6F0994DBB13D60 +:101E500073E1FCF5CB75EB1E7050DECC12184BB85D +:101E600098FE0DF5594947D0F8DFE3CF1541DFDB88 +:101E70001E67589F3765AC3DDA951C93CB9835D7D4 +:101E8000EDB038197B21E5D677C2E3A18A5EC7D8C9 +:101E9000A554C5CBA0EF081853E45D3033F6A84E27 +:101EA0000F40C06CD8AAC9C382F3BCFE407BEF755B +:101EB00033B0DC0C7DCB7204BB254727F3AE305822 +:101EC000D70A6BA05C4D82FACD22EF1D3E638A0AD1 +:101ED000F050643EABCD05F37D388C69C60B9E9FF8 +:101EE0001AD2BF01FAB7D865FB39D74DC980F916A8 +:101EF000C8FC8E875D13A03F83B63F5CA36C8F192F +:101F000039DE0369A7DB5A27207DB8F2593A63D13D +:101F1000A99E19768097BDDF56148560FF76D1A6FD +:101F2000B761AC08DB2C189431C399D9CC0EF335CA +:101F3000C4292E1FE601D719F0B7CE9EB60EE98749 +:101F4000A9762FE2D39C6C2F7800DADD6C8785426E +:101F50007FD7E96C94AA9D335CD150CDC09CEBDE59 +:101F600086FAAFA6786EB38F07F8A64E7BDD84F8AD +:101F70009B3932CF938BFDB8965F07FDAE7C94D929 +:101F8000B01F733B73F97203F8369905C261793A51 +:101F9000AAE71EFF00E476DB3D15387F492799ED5F +:101FA0007623F6F72CD02BD24B7B459A4EC90D9455 +:101FB000DF6707B8C2F899393AEA3FB3DDD792062E +:101FC000FDA9D1B3C7E9ED817A69B60C1DAE3F6DAD +:101FD00018AF1711E7D64D827A69ED9E049C459A99 +:101FE000EA998BEB4E9BB3C0E87560BF7A5AEFB8A5 +:101FF000165FD824C465B98E65427F0BEC761ACF84 +:10200000602B2BC5FA8639660B12EF93EE8D61D8E3 +:102010007F66CE3A1A9FD95427D667AABB280CEA06 +:102020003D1DA38E7F20683E0FD8D4129C47A1DEB1 +:102030007307C3FAB197BA36403FC363AE2E71023D +:102040001F0ED56FCB5F0CFD3DA6C0BA83D62BD338 +:102050002F1C0ACDA359717BAF437ECC67240F643C +:1020600079AA93117E1FB51B691D76AFADC80CE32D +:102070004CF8D23D1EE1F2A85DA5F67BD5EE081B1B +:10208000CE9BB9EE9887EB745BEC9CAF81CFA17EC1 +:102090005CA3DD49F88BEB7E700C963B75CE4C2C27 +:1020A00046A21E87F22771DD03301587C3B30EE900 +:1020B000A050DFFD4BC43B7B5025F970F26513C97E +:1020C00087B87B727D7AA8B732AEFB972550FC9417 +:1020D0008179C362B05FBF391DE17846E754904E05 +:1020E000014D49D0DE62517C0C4523F029CA4B9644 +:1020F000A4F832013E1667FFBBD8FFD5F6779DB82E +:102100008E62D5BF4FC9630372D222C90A810AF910 +:102110002291CB043AFB18680EA8A5F9FB589077DA +:102120004E9077D06E0A733523FEDE11787DCC0891 +:10213000F2049A3EA633FB50308CEBE270B87AC9B9 +:102140003E1ACFEAEC7029902F6B61248FD3726610 +:102150001A19E0E7F636CE4FF3041D32D53904E5FF +:10216000F87E7B04C11F86A5FEE7310E37D66AF4E0 +:102170006D80FED35A1C469CB4C41B634B793DEC66 +:102180000FFA31DECFE577DA388E4F002C95BF2D70 +:10219000F892B1FB290F8CC55331AEE4B33A339FAB +:1021A0002742C85C28C687FCBC6EA507E1D6577ECF +:1021B0002A12E5C1BC4EBDDF0474C75AA6B8BA05E1 +:1021C0006F7E9FC6537342A0DD93406A48CFDE4EB8 +:1021D000BD0FE935D0CF7F44DA2DE7EFE7989DD3E7 +:1021E000EBFEB95F4776C3784F763E1B86707B6CFB +:1021F00006635DB43F00D5431AAFBA8F231D1D059A +:102200007E43381D2D0FF7217E1E53BA5C7A4EE7B0 +:10221000B42FDD9631F38ED7201F336E6401CE2BA1 +:102220004965663DD0D377022E51FB016ED0FF1376 +:102230000AB0484C00BE4F28AB9217C1F771251C5D +:102240009E31252E7D0DA40F47F74F41BEEDBF8A6D +:1022500031DCA71323EAD722DE136FCB296882F182 +:10226000C3C7B2DB66423B9D83D34932B48902992E +:102270009D74BFD781FD45ED77D37CFA47873BD767 +:1022800041954458BB3586D29630ACC7962A586FD4 +:1022900079BC42FCBCBC14F6DF5C6223352A86A7FD +:1022A00087205554D66CC0762A53C3F9F7661CE7CD +:1022B000D148BE9E789DFEB619B9B45F503E06F86F +:1022C0007C1DCC25D6114DEB4E34B1125C2F7E47D0 +:1022D000FA8169B8B6417962717D3E8E9F98CED3FE +:1022E0000792FD2AEE174F32DFEA0D08D71CA30D27 +:1022F000E13A2DE7F54388CF6966D6A1473C3A0D10 +:10230000BDDD39013CDE92386B9803C63939F7CC14 +:10231000E15AF8F6E8D219736FC7F6A32D5C1FF0E7 +:102320006E73CEC2BD930D8BFE7814F02EB603B83B +:102330009FEA0DD729B0211D3C981ED50DF3C94148 +:1023400038C67358B3642867F6281BCCEBE0BE2C64 +:102350002A97F9D31FBD6143A6BD0CF76FC4CF0602 +:10236000936F9D23207F2CD1093ED43B40CFF12297 +:10237000BEFAB785F9D601099C6C744E989C49F554 +:10238000FC546F4736AFA79F41FCDBBFCD407802BE +:102390003DC885FD7A5F194DFC08E02AC5BCE5956E +:1023A000443BD63F39B23F0B1761313037E2CDB2F3 +:1023B00096EB43929E2C0A7C27FAF5DB50BF3989B5 +:1023C0007A0DDFFF92668D0ED46B1672BCDAE8CF01 +:1023D00042FD46B693F92126562FF3D190DF23F61E +:1023E000BBEA709E6F357BA621DC771A5939F5134D +:1023F00009DF2D4170C95769DD0370D990E843B9F1 +:102400008C70C17CFF43562DDC9EC8E6E52894B154 +:10241000FD4A85DA1FCDD1F98D79C1FAA1DF3623C6 +:10242000681D120EF3577FF21DCB0BC063BEDBD8C5 +:10243000A3CF3B171EB2DDFC82B2690CE8697EE5D2 +:1024400092E99886EE6703F55A4C42D9816FF0B74E +:1024500002E70CFCF675D82423E2E1AE4740F10513 +:10246000BA5DC0EA292D676D94A298D2819E666FED +:1024700051693DF64D8ACFEEE0624F47BAA84D87CD +:10248000DFAB400C3FA9E07E0852E322F8ACE81431 +:10249000D4AFECCD904F8469AF54BDB8FFAC3D14C0 +:1024A000E153A0DE8A38D84001C42B9AB93CF2B679 +:1024B000F27D08FA4D72C3FABCCD3A17F6B3D2C119 +:1024C000F585B50EB1DF828A48F31169B341E8E1C1 +:1024D00062BCA54CE7C754A7F07405EA039673E104 +:1024E00021FB6B36D49B515FE91FAEB321DD7E6DBE +:1024F00074CDC1F57C1D93C5505F69B6D6B794F015 +:1025000072E2A9AFC3FC25549EAFE30A2EB219EACA +:10251000371F84AD45BC373AB8DE140AEFDBDBB4B5 +:10252000F985AB43F0E1D3E6E733CF6F9260E9552D +:102530009BB4DF1B1D36DE3FB3137E9A0DF63F3989 +:10254000900E57AA0CE7BF7418879B6E384FD3A222 +:1025500027CFA17D31DAC832617EAD48A730FFD6E2 +:1025600096B8B538FFE668CE0FFFDDF986CE73B3B7 +:10257000238BC3379A8FD70C7C20E0457ACBFC2D78 +:10258000A667510ECCB7DA23711D2794FE1CDA879B +:102590001EB2DAB9BCB0D13E3BCFC6FBDC2FF6870A +:1025A000A38A73A31FDAE91E7E7E6516F6F3A0BE2A +:1025B00000F5E3E259169237BB3FB3F84CD0BE1C8E +:1025C00060970CF27AB7F33DD29F43D7073F765519 +:1025D000EEDB80B27971609FA0BE135C8FF669A0BC +:1025E0001329A7A1CFAFE2DD7F4279B1BB88F3FB0E +:1025F000EE274DBE2605EDA2A3DBDE18477292E45E +:102600005FED92FE8D0CDAFF3EDEF38103E6DD7BAB +:10261000F78753157B404EF4BDC2F5BB71CDA64084 +:10262000FFF8BFD6A03C8EDF028BB804D276EDF760 +:10263000F23521EDD83F4DC1F3947ACB6346CF08F4 +:10264000D4439F741716E27C1E33B49520BFC70F86 +:10265000F19CC0791D9BE27E5DC7F92E0BF59BBDF9 +:1026600067E7A7939D7AC8EC443D04F55894931B03 +:10267000851E9764665EDC3FA57E2BF5A850FEFAAA +:10268000DAC1F505539AAB15F50E76166605F0D648 +:102690000BBDC96C79C1A5477DB653B1E176526BCC +:1026A000673D0B417E593A1D5EC4635D1223BDB583 +:1026B000D6A2EBB908BE675A74AE34A463BBCE870A +:1026C000745CDBCEBC0BF3D06E5AEAC675413DEFAD +:1026D0004579684FD9695C398FDA5D3398C742F321 +:1026E0006841FB07ED93DBA17F03EA410CE1E126A2 +:1026F0007A7C0CCA90DFC7C5497DD047EB4D30725C +:102700003B2321C1EFF422FE985BE7E6FBB0EDE34B +:102710008800BC63D35CF969D0C73FF003ECBBFF12 +:102720004872C563FE2BDC9FC780DD91C6E775F05C +:10273000BD59B40F7FC5DC625FBE210AF53699FF33 +:1027400058EFB9CB06FCB09079492E57301FA5AC95 +:102750003D96E86001ECBB2AC07FC16CD707A84F4B +:10276000205FFA43F832385FCDBAB81C07FEF40791 +:10277000D14F35EAF700D71A33F34760DAA16D5726 +:10278000CBFAA95DDDAEEF4D7E0DDF70BA4AD42FD6 +:10279000CAAF473885D80752DF9776C06DB9CC638A +:1027A0004EBBF07AC7ED6D09E8626851F8F853F551 +:1027B000169719E05FF3908EF81A3A9A36BE10F722 +:1027C000274E4775F6A9C771DF8B033645BA31EF3F +:1027D000D4FBEE77507DA71FF235AF58D123C1CA85 +:1027E000EDE5D3705FADF0198E7407ADA7926D9BC8 +:1027F0006A2338B9A350AE546DD296D77468F37576 +:102800004C3D32A0B741FD868FD65EF66A101F5E42 +:102810009F668D43FD0CE6E6F81EE1AEBF25CA3388 +:10282000087FC8F49B46DF65AF1A189BA8B86E49AD +:1028300023BBC367443EAC54996B30FBF437299CEF +:10284000AF0E584EC77A82CA8B72BDE47F282C1A0D +:102850009C1F2BD378BB882EA1BFAA5E161DD4FE69 +:102860007CED16A7F1FDEC8091973F6C8D70211CDB +:10287000938CACC55C10A897A463CD6694B776F72B +:102880009DB80EB35DFA17B81FC21BCFED0B699F41 +:102890000ED5EB08AF43F5E675283FAF1576CC8F24 +:1028A000D149446EBF01E189763CD21F6CCB5E06F4 +:1028B000FD1975B0AF60BFC0936817AC09635E9C2B +:1028C0000F9433D4DB872772FE3322DB17607BE65D +:1028D0005720CD07DD04BFAF4A73B7A691BDE7CA45 +:1028E00023FE16F3A8157436308F5D0AF9F324BD64 +:1028F000A23F4A45B9D46622FD854885F2C9A4F7AE +:102900001EC63CF0ED17C9EE2778FF62FF7B7834D6 +:10291000E90BAC2196E4C50A2BB73B60DE1AB84A36 +:102920007E5BA370F8161675D13ED77F2FE8F84A64 +:10293000905F42E075A3C0B3FC1E23F29FA4B99E32 +:10294000C3F17B3F309BD1DF386E1CE7975AB7C588 +:10295000A790FCEF36DE03DF52772936F417D50A4D +:102960007B3B3AD5B30DF1B9E2438B570FED1EC84F +:1029700039B27C28CACF3867218AA574FC3E86FC10 +:10298000553BB0FFB2259E2FF6B180BFAAF0FBE207 +:10299000E5257CBE36D49FE2501F0FA2BBF7057D14 +:1029A000C9F44F62BEBD208D26C1BC52E35C739555 +:1029B000203F5184BDCB85F9DAED5C99A049E03E1A +:1029C00072CF308277EDF649F9AF61BE232C1FEB51 +:1029D00017FED542F0EEBD7B08F9491C0ECFEF7112 +:1029E0009ED671FD0ACEAF77DB55F9E4570BA13BBC +:1029F000496F8940A7D87FE2CD66DAE707FC190660 +:102A0000C07F7A801E3BD3F8F754B17FA42E71B3F8 +:102A1000DB2D81BC258EE307BEEB703C53DA944E70 +:102A2000846B671AF7172D4AD2DB8FC522A9D9EE1E +:102A300047BB3C940F1DC051961CF452E8D8F7B820 +:102A4000742FE483F494536D0AD9478B40716A283C +:102A500008CC47B65F9464A4FE23CEA8449F693691 +:102A600023E1DDDA22E8750923FA9DD0DF551C85C4 +:102A7000BECB76FF04F4CB84E158C9441F0F8E41CE +:102A8000BF55AC3A01FD564F3714EC477F8EBAB2B2 +:102A9000EB724481A39DE9D075AA7EA7BAC94FC342 +:102AA000385ECADA6D9CCED5FA1CB45BA2D3399FCE +:102AB00047A7BABE453C14BD6FA0F1BF7E88EB6D41 +:102AC0005F474F3ABE0FF5EB874CC0D8E7979B5E48 +:102AD000B6DF8CFA7D5A6B1AF989AC2DDCAFC332A4 +:102AE000803060BEEA431F79F9FCDE1B8E531995D6 +:102AF0006E21BAC2766837CCF33AA7922AD2662BF7 +:102B0000C2795B5B67EA04F2931528CF6C99AD43F9 +:102B1000BF4BA6F017858E9F26D6F1DBB37AF2B7AE +:102B2000EBCCDCDF5B638F59ABE7F622D14D4D7AFE +:102B3000DC5AD47387A673FA56DBDD2CD97EAE9EA1 +:102B400052B3BD94F49450B923E58DA4BBDFAADC45 +:102B50008FF65BC6FD6892FE9A0D1CDEDEEF74C434 +:102B600007A98CEF1FE90F9F4D26FA1EF067F9F8B1 +:102B70003C0CF6E54928BB96764F4438CF6F8DD68E +:102B8000D5E6623FCE45D4CF431646FDB4A6EDC789 +:102B90007391D4161B53ECD8DFC254E2C7BF9A1806 +:102BA000D28BFA904587725C5DE5C2AF4C8D4E28A2 +:102BB000A2FCA39087FADFA519689DA785FED3AC78 +:102BC000F42BA4CF30573EEE739FA47926A68F171F +:102BD0007E7DE4DB8670D2EF98DA457CFB7461D7AA +:102BE00070A49FA7857D5EF470EE4CA29795AA8293 +:102BF000E73C56D5931A0D79EBA144D2DFAE4638A7 +:102C0000C70F4A2F4319E035ED15BD1BF95135703B +:102C1000BA5757821D04ED762678AE4D877613BCE1 +:102C20005DC5481713571E8B9864BFF07DE0A35411 +:102C3000BE3EE6F252FD3A29473A1592234E1DF365 +:102C40007470BD320CF9E0233C78827E1ACC917905 +:102C5000288FBF09E3A957D815DEC361BE2692CBE2 +:102C6000F51791DF91D58FC1342E1CEA81BC7DEB25 +:102C700073EEF759902EE44E099F473D8E0370AADC +:102C80004F8FA6EF7B6298CB06FB466A98A702E1BE +:102C9000DCD09D9F84F4B22732A108F53F58540A36 +:102CA000EE7747845F24146EA961936A112E6F0931 +:102CB0003B11C775C0F8310DC56E9427A077119FE1 +:102CC000F5CF30921F24E6EE49F47D8FE27B62015E +:102CD000AEE37AEEBF6A9FE14A0E8FC33441877438 +:102CE000BBF39F7AEE1F010517F7B1E2725732DA94 +:102CF0000343F0FC0EF2434AEAFF7E2FFA21DF3253 +:102D000038CDD0BE8FB5A5901EDBC2FDA6D2FF5C2C +:102D1000847E5258871ECFF560DC4714FB1365484C +:102D2000BF15625C2BF72FB49732F277B63B387C35 +:102D3000DB6FB713FF0CF8796AD8801F07FD587D49 +:102D4000F536E9FFE2E53F91E5DDB4DFF75D6CA71D +:102D5000F397013FCF5C23ADE3B8A02BEFDC1CE180 +:102D6000F7E27EA2BE3943A83F669EE20AF6FBF573 +:102D7000097BDC9BA123BF6F9F38177C8AF9462013 +:102D80009FF431D15F39E76BA6F273C2BE127E7E2B +:102D9000C02E769A912EFA06CE03FB2383FD43F2D2 +:102DA000BB3CFF4B681A5CCF9B29F8469FE8DA9240 +:102DB0003E3E40C792EEF7142416A1BD713EFA7F45 +:102DC00097F17DE29374F70EA497E21BAEC2933D98 +:102DD0007640F8E7D8346EBF188D5CFF31DE307472 +:102DE0005DD320FB9C94537B44BB51439919ED78F0 +:102DF000E05D2FE265E4CE91B49FBC2AE68B2C8681 +:102E00007E8291622F1CA9742C8A063AD97FC491C4 +:102E10008276BDA4EB3DE14389DE83E8FA77B8CE44 +:102E2000D0F931D53D7AE6E8F3CFEBFD745717AE14 +:102E30004FD63FDFFE8468277DD3D87107F9096B31 +:102E40002C4EA49FF7B008DA3D7B83C98F7EE03E0D +:102E500083A505F9F850C4ADAFC70368F7993D875E +:102E6000B1FF39375EB51CF3CAFE58FB22987F5F6D +:102E7000697721D27FB1D97304CBABCD9ED40458EE +:102E8000DF5DA7BA0E2B284FDDB1629F768F760FDC +:102E90003A7F3E9F62858FFF9ED17302FB39A074FB +:102EA0005B9DE944D7D48E59E2A99FC3026EFB0C07 +:102EB000AE095FC0FCF7AD4ACD6F82F914477E7052 +:102EC000731DEEEB8F27E6A37E20E17240ACEB761C +:102ED0009D3BC1AFD7CCF70CC2B9DA569A9A9C4643 +:102EE000F3BD95E4BF45CC57750EFBA1F9A2CE45C5 +:102EF000FC71AF42FC413F907FC91B4DFC64D23551 +:102F0000AD25FE2B353B91FFD684038B81FEF38EDE +:102F1000980FD81B0CF566F84E7AF506E61C893238 +:102F200060A889F3D5D0150AC9D979CC49F66619B4 +:102F300073A7A06A199FE1B165C0BCFF1EF1CFF174 +:102F40000EEE2A18FF1E8CB3F3FE4427EAC76C026C +:102F50009FFF8FE19FB1561DFA3D660A3FD6CCCF49 +:102F60008D643FDD2EF4AA9998C2FC66319701C7A3 +:102F7000BF9E790C089F1B9997D2B9CC47E9CDCC5D +:102F80004FE53F61DD94FF6344DEF00680FF8CC7B0 +:102F9000B33391CE83E09D95C1E9E3B638A48FFBAE +:102FA000FEC8E9A33DFE82E87586A00FE0E33CEC95 +:102FB000A738A698CEF106F86472BCC05B775314AC +:102FC000C06F4682231FE171C5598E97A9C76CA4B3 +:102FD000FFEC5340921604E803048A2519E070A51B +:102FE0004061D729BE8F5DE9AA22FFF541D7D2B84B +:102FF0003898E714BD85F0D2E5D4FB707FDFA87464 +:10300000D379CA1B4B3DCDB8CFBF3142713641FB9E +:10301000ABE26644F97957562F8C7B8D4BCF901ECF +:10302000A6AFE6FE80926186809D0E7FAFCED0E691 +:10303000A7B9F43D789E362D576BDF4F67AD5FA083 +:10304000BF7DFA8FD8F93333C0CE47FFCF483692D1 +:10305000FC6D176EE7CFCD18C4CE67E885043976CE +:103060001D2AA380D7AE09072EEB83F59EEE7410C0 +:10307000144F8EE0FAE68319EE526C5F6BECBE15CE +:10308000E172A411209BCDD8B1463373014D7FDC92 +:1030900068A3FCA78D49947ED668A7B4B73187CAC8 +:1030A0004F363A29BF23C35581F4BD228CE3418EAC +:1030B000BF58D0E98AE1858FBB61FC156F19285F85 +:1030C000DED1361597BB78F891FB2300DE8B372BCA +:1030D000E457A9EA741931E6E2F6573DCB71FB5982 +:1030E000F856F7741423356714E6011629CD71FFDD +:1030F0000CE73BFEFD6309089F4F1A2FA6791C6F52 +:1031000074D13C4E349650DA95E15E82F3A96D514C +:103110005E1D0AFD5DBBA547C5748A4B213D7AA2A1 +:103120008BF97C8087D5068F07E96375B2D9897CD6 +:103130003B69F4CCA77ECA502E7B96E338D7C7CC28 +:103140009F120BDFA7B2EEE658A877C52D8AD36F82 +:103150000FD0ED8FF32B87438DA089CFF72A049FE3 +:1031600077B7EB691EA70E85D3F9F9A9ED1144EFE6 +:10317000A75A4CA457EC317A4D2990DF9312EE44B4 +:1031800039B9276508ED9726C14F27004F0CD63D6A +:103190006B477A22DA192F6D513AD09E2EDC1A9D98 +:1031A00082F47A22A6E3F0CFE99CC148FEE3AAADFF +:1031B00061D4BFE9B08EF8E9A490C7A0D945E0FE7C +:1031C0005E6B94FAA46714E64F848B7310C8CFF833 +:1031D000617D6E13C259AE6BD18E5189683FB1616A +:1031E00071049F1C45D53504F91F70DEF6EC407E56 +:1031F000CF0B339CB8AEACAD8FA7DD03F3DCF8FC8E +:1032000013A776DB899E893E376F7D6AC8FF825C93 +:10321000F5B665E16877C03ECE2E06F9B6675584EF +:103220000BD7B9C7E03CDC80F2FC290BF9839EFB8D +:10323000C5DD477661FA504DC1DD901ECC88213C3A +:10324000943D32776A32D4DBB893E5237B8D82B923 +:103250000D8579E5AEFE623FDA4F79BEE8620CDBA0 +:10326000716ECA3F3004F2BF7E49F1A3FFBEA06376 +:10327000ED3A05E5F5D96787A05EFB870CBBC60E66 +:103280001E35BCE4209DBF86E80DB9ED5F14617F5B +:10329000CF0FE1FA03E8119F2D75201FFCB980ECD8 +:1032A00032E18719FFCAF56F5EC6705DDE64D47BBC +:1032B000BDA546F293E3F231E6E7F3EDE9A49FEC16 +:1032C000D479695FF2CE333B516FFBDCED7D02E9CF +:1032D000B606EAA3DE5993EF8DBC14EDC3BF653883 +:1032E00081F2D8F0A7AF2C41F8D46E7F74EA10A811 +:1032F000F7F904EEFF2EDF717A2AD9E760C5A25DE7 +:10330000F4F9F6A6849BA0DD83B945146FE2D67765 +:10331000D038AC8E8FF3B8D8EF58771E9D9F1049E8 +:10332000DB29BAC18CDF633AA3F70D65017CD57543 +:103330002E75A0BF7F9CC7ECC438A5D50E6F32FA9E +:10334000D5E4FE09FB603FF255B251F46B9B45F6A4 +:10335000C285EE7FD2DF26FB7BDCC8FD7FD22FB794 +:10336000C6C8F7EB0D207790EEE47E0DE3B2CCF10A +:1033700001BF1EB3BD986F8379FE03F428F2275C6A +:10338000E0F852BFAA13765391D877E7C436BDD27E +:103390000DEBFDCCECB16442BDDB998BFBC955A7AD +:1033A0001DE5F21FCD2E2B8E5F6DEE4FC135C0BED9 +:1033B0001A8DF56AF5A077A507E95DE60BDB57CF17 +:1033C0009A5D89D8FE42EB87CA63661B7B23C609D8 +:1033D000FDE36D0343BDBF49D88B4DD64233F1EFBA +:1033E000ABBAEAD7617FBD9CB70CF86FAD05C4DFFF +:1033F000B8670E06AFBDC0DF1E904B7ED83F3CD9EC +:1034000058A9AB09FD3F2EF8CF0AE34C3C030665F3 +:10341000D0FE18DA1EF0341EE134894568EAB95846 +:1034200034F97F9925E6BFB45E39EF09026F134E78 +:103430001D8A40B9B9F8AB02929FE75BCF2B623D82 +:10344000BFC5F540FAC908F79538BFCBBFB4A9C8C6 +:10345000C713553DF304EDE330FF6BB1DC75365C0B +:1034600033FF013ABFC0F9DFA9F03809F6058F3FF5 +:10347000EA14766067452ED9993BD14E463B6EA63D +:1034800091F4D84E6B3DC5AF76BE1D4FFCBF47FAD9 +:103490006F4A79FC4F679868BF21D187FE89212642 +:1034A0005ECE12192F97FDCF4DA0FE41CEF2788B44 +:1034B000B9E134FEB9F6F68151BF213BDD4CFB4B3F +:1034C0007B3EB74BDB976653FFD27E1EA2AF7F7366 +:1034D00034CA9BA60892CFEDD6752D78EED67EAF76 +:1034E000DE8972A473BC2B19D7D939C3A8C37681DE +:1034F000B858AF15E3190271B15E2BDA51E7C6C5B2 +:10350000423D80EB07027F87546E9F1E42BB774C83 +:10351000E07CE0D040BC07EFC7333D42457A0FFD69 +:103520002EF120BF4B3BF74303D757DBA3DBE2F180 +:103530005CED914CCF4AC4F3DCDB37847982FC30FC +:10354000F1AAFB41E4CB27C39DD36F40395EC6EDA2 +:10355000BA0F65FCCAB7DC2EDF5BF6DA7C84D7DEF7 +:10356000FE2416EC9F95F81FF023DCABD3C4833CFC +:10357000B33E51F811EA45BCB29EE29507CA2D59F7 +:10358000227E46D1C4D960FC0CFAD9BC3BB269FC9E +:10359000929966AE6F2CD1AD459DC22FE2709E11FF +:1035A0007E466FA795F0FE8C80E36D42CE3D23CE24 +:1035B0001BBC1D066E3FA9FEA175386EE708F21F01 +:1035C000F899A0BB5D11547E8AF1FE4E598CCF2232 +:1035D0007EFBA49C5144DC8C88AB7946C0FB5F88A1 +:1035E000B37919E17FDE389BF3C20DF609B49FEF82 +:1035F000D66BFC33CFD48F9670E3ED9FE0F14B0395 +:10360000FE971A87B0177D2BB3B07E673CADF7E409 +:1036100092A385ABED04B7BC5D586FBB89E85CC273 +:103620004DE2F599013AEB0F23FA3372BFDA615B91 +:10363000B735F8DCECB0FB632BCAA38F1AF47EE33A +:103640000FC4DFDC22E27A6E11F13CB72C39720B29 +:10365000EEF7B7949FBD95BE576BE313942CD7DF5D +:10366000105E03F039AED3C421ED5E3F1087C4E194 +:10367000631D28E771109FE6CA38241EA7743C5CBE +:10368000C047C499EF70D0BA99C0FFC7C775A4B737 +:10369000C8F9EE56F9FA77FBB47159BB07FC4C3EFA +:1036A000D243255C9A6C4E73305CBE8AF77C837C77 +:1036B00075BFA5C08CE7DBE5514507D1FF52ABC212 +:1036C0007E0C70DE99E5394BFBA1D053A4BFB42624 +:1036D000D77F2BEE5F6CC985ED9355E19DB54A1AF6 +:1036E000ECE39D1B76620AF32178B017B81CEDB5A8 +:1036F000F923715E55F069620C9EF7C25E12C3F346 +:10370000A89786C6AD106B26F072D407AA3AF4AE1D +:10371000B048CC1B03F5A05F8F8EE3816DE57E89F9 +:103720004AD691B0544FF69CF962D0634EEE7A318E +:1037300012E54CA5C5625E82FA4B481C49E5F615B8 +:103740005DE979E77E3F773E21F2659B5E4307BDE9 +:10375000417440E5F146C127FEC8C1EF25F8238337 +:10376000E3CE7A059E7B43F0DC3B8067BFC69FD8E3 +:10377000DB713405F7F593D21FE0E271C455BFE168 +:10378000E799CB84DCAD8AED2844B80FD16BCFFB31 +:10379000645A6566EA84203BA32A8799112FD2EFE9 +:1037A00057E566EAA541F1A5553E66C6FC4E1DC823 +:1037B0000F0BE15115F8A47EA03EE1B3D2CCCC139F +:1037C000215F89FD61AAF391DF58CEEB9C7984C01B +:1037D0007B5A16F72B2E9372C46A1472D399847095 +:1037E000CB5E6DD4D43F6935DEE682F98CF069BFDB +:1037F000CBFEE76429D45F4E309E1DE787CBADA298 +:10380000FEAF7E35505FCFE379408D977469E776E0 +:103810009501E7F78151FAC57E3A14F4BF2AA48DC9 +:10382000B4009C76E67B86C6407A52C7E5EECE6849 +:10383000C8E7A21ECBC797F901B887D0F9FD1F18BA +:10384000090E3BDF36AC457F4C4B163FC7EA14FDF3 +:103850007FD6E8197BCC807E87FA11659981752C1B +:10386000589D6F463A59B826DF3C2FC80E6DDA7462 +:103870002012E135D2A223FF4B93EAFB05DA414D3A +:103880009BF41D40E9908E356379AF65FF1FEC71A5 +:1038900018DFE2C80FBE6FB070F59D23CA82E03C0E +:1038A0006A9316EEA33BB4F931BBB4F947B218CD15 +:1038B000FF5F6D97EFD7E6C71ED4E659BF36BEE966 +:1038C000A58BDDB3AEC5F3A5357A277E2AB7E8BC54 +:1038D000268C57B2703E665BF474CE556EE3714C25 +:1038E0009FEE5C518872AFEA6F65AFA37DB6F03D85 +:1038F0000E9FD0B8BBF243AF7F8BF637E057A138AD +:10390000AD8D0AC9F1D0783CE95F3A579E2C15FE7F +:103910003896134C4FA178077916897EC6EA86AA95 +:10392000B1789E23E17F49C72A8AABAF98A65D7F15 +:1039300095AAB22583CA532FD7EF2D2E3BC2A75489 +:10394000DC5FEA69BAF16ADCFF7A6E2C398EFBC261 +:10395000A50DC5EC28DECB6AFDE354844FE9830A4C +:10396000437952FA62F6AB14DF2AECB385E23CCD20 +:1039700076B17D5737D4BBDDA7905E3A2F248EAE4B +:10398000AC35641E21F1730B77EDFB16C70D8DA3CB +:1039900093F15695EBBF3769E3EBB8FD7F69E75AC2 +:1039A0003DAEFF76395FEF44BA0FC1AF2405CEE7D5 +:1039B0008E61E6128C0373FF250BDBB5F376358C35 +:1039C000C777C9B8AB0526B00B404E1DB41A892E77 +:1039D0004EAF8E22BFE769EA0CD2350AE9E735B16E +:1039E0003C5FF3AC4271083542EFA9798EFBAF170B +:1039F000A83C6E1EE9C51534EF6AB11EA48FE0EF36 +:103A0000AC8DDBCF320E0CE3C35C41F104D5B02E9C +:103A10008C9BC7B8B0E076C17161C1DF83FCEC64F8 +:103A2000CF4BFFC23306DFE68D304FFD7DE1327EA6 +:103A30002E1CE912E40DB7876670F975AEBDA2BD04 +:103A4000DF07F60AADB7BD2293EC9D21281371FF65 +:103A50007DCE44EDCB74BECD61F0CD20EC98321D0F +:103A6000F71B96DD6424F8B4C7BF407A4FFBA3DC94 +:103A70006F896700A847B6AFCAD69E030EC473BB52 +:103A8000B2D0BF73D3AA64A7767F95E780BEF8C192 +:103A9000F7575F3CEE131FE23F01BE3789B8EE9B3C +:103AA000443CB7B46F6E1A88E7E6FD48B8857E9748 +:103AB0007C27BF4BFB267E88273D3BE89CBB3DDA3D +:103AC0001786F198ACFCC2CEA53608FDA17F55182B +:103AD000ADE798C2E340CBC2DD0F5C81707B2C2D3B +:103AE0000DE136369BEF478545AE2C1BAF4FE758AF +:103AF00012DF65402B2887CA1EC926BA94716487D5 +:103B0000F3F97E12318EC7BD4C10FD4CC8D669D278 +:103B1000A4701EA7756C0A3FDFB08E731B516FDA5D +:103B200060E7F1506546F7EF2F0F9A0F8C6B463820 +:103B30004DCDE6FE700937C4379ECB963D62227CA0 +:103B4000C33CC8EE295CA4507CD931B1BF49BC301C +:103B5000C6EDB19BDE89A7FB78522EFE385DCA7395 +:103B60006B03E9610374B981DBD1D1037634D7C328 +:103B7000D9CD4679FF616E06F43B7F9691FC37CC38 +:103B8000771DDD2F8D761B750F68EC68A01FCDFDAE +:103B9000D21FA6B301FA08A1B350BA391F3D5D0088 +:103BA0009DD5FF109D41FBF16EEBF9E9ACE6A5E771 +:103BB000777AF19CE3378F4632A8775C6D4B70A221 +:103BC000FDB7615924DEEFFC54F546627FC77DFAEC +:103BD00092C1E26CB60A3CE3F99112741EFDA9EAA7 +:103BE000DBBA1BE057F181C9099863759B4C743FA0 +:103BF000AA767B05C57942BE87E757D0794EDDAE00 +:103C000090B8CFE71E4DB0531CAF7728C603815E36 +:103C10004CF121B5EB0D14375AFB9EDE8968AA637F +:103C2000FDCB717EA1ED711E67806EEB3AF4A5C6E7 +:103C3000A873CB814268FFADDBFEE017E86F0E8D05 +:103C40001B2D17E702A1E74A4F658B73A58BD8455B +:103C5000A8F7015C9C7EA447984F26473BD16FD3C1 +:103C6000E6E7B6EE86791EFF30311F5D43BDEBDF20 +:103C70008CC4FB9BF29C499EBBF576A447790681D8 +:103C8000AB4C4F8A738900DEB8DCB6E3FD698C8DDE +:103C9000ECE469B5C11F79198C57BDD640FEAAEA7C +:103CA000E79FDDF824CA5F803FC6D9553DFFDA9F04 +:103CB0002F453B609B216E1A5F8E454908E0ABCED5 +:103CC000CEFDBB123F952FBE66B48FE6DF516F90DD +:103CD00078AADAB6CFC8469F0BCFE28E7DC66ECBF0 +:103CE00020F8EAE8994AFECDCDDF1891DF8EEF5536 +:103CF00058A2E3DCF6E51BDE8CC47A125F03F80BF6 +:103D0000A9D7BB3E82DB559D0AC5C79D0F7FF7A192 +:103D1000AF743CD2B79545C3B8E51F9A7CD310AFBA +:103D2000BF584C74FE895ACFE9FCA96509A8CF9603 +:103D30001BBC09364AF9F7F2A7EF14F4E74AE6F795 +:103D400068BCC9B89EDBD75C4FEB59C03C4477E5F3 +:103D50004FF178A5AFC04EDB36081ED373387F7C99 +:103D6000B2CE44F7C83F1171D0DE3FE985DCB9839C +:103D7000F4933B07EE052FA2FC57424FFD367B2004 +:103D80008EC21C6C87D7AD5FD185F8F86CB82B114B +:103D9000FD67B07EAF809382F187FA3F4E49E4F829 +:103DA000E0F728A81DEC05C5F81DEB7719E83E459E +:103DB000503B829B1CFFA7627C987738FA033E49F0 +:103DC000E0F609FC74E13C6A15DEA67649F9343B5D +:103DD000C07F8658E7009FAF5FC9F95AF0F997EFA7 +:103DE00071F951EB9B5142FCDF65F027623DDFBE6C +:103DF000D90AF17F687CBBC0FF7A83E05F6D39CC64 +:103E00004B5582E1B997DBF90BDA83E2E8114EE218 +:103E1000BCB80EF4677F4EF03AC5B9B738175E28C4 +:103E2000F83D147FA1FC3F3C47C48F0BFE97EDD9B2 +:103E30009AC1CF2F03FCEE253C56837E81E724D523 +:103E40001F9848AFA95EA5A778CCA3AD07122E0195 +:103E5000BA3ED121F9532B4F07F873098F932F7F67 +:103E6000618382F419CA9F27CA7DCAA0FC09DF07B3 +:103E7000E5CF72F67F569E0EC05BCB8F0BCF234FE4 +:103E8000AF0C81E7572C370ACFEF98AD3495FCFB88 +:103E9000217095F00C958B47B2EDFCFE59885C645F +:103EA00018D2130447093F499F8C79689C01BA9541 +:103EB000F429F7A701FA0C5DAF168EA1E5180B8C5B +:103EC000F4E57E99C7CF5683BCE2F723BCAF0F1D44 +:103ED00047FCE822F1C2DA5EC778ED40DE1792EFC8 +:103EE00008A9EF0AC9BB43EA7B42F2F59AFAD5BBAF +:103EF0000E18791CAD5F53CFD4700DD94BE7EA098A +:103F00003ECED7DBBF307A912E86F5533CAFE17EB3 +:103F1000E6B5A29EF50AF777F5D9FB23511F59168E +:103F2000C6F5C23E9BC847F37C7FBC7139CA3FF9D6 +:103F3000BD3F8CFB9FFBDCFD91D141FE879E4E3D3A +:103F4000DDCBEEF671FFD6B9F369223C770BFFD7D4 +:103F500014BD25A5611CC657A7D33DB353CD06910B +:103F6000CFA4FBD1526FFC0773FFF9329C6738F77F +:103F70009733AF4BC57897F91C65ACFC774D9168CA +:103F8000DFCFEFE4F12E65AD5A7C2EB0CC8EF2DBA4 +:103F900051BE68E3542AE57DCC35A1DF391F548634 +:103FA000F08147F8FD43F960538ED02BF259BEF0F3 +:103FB00027D179DB222187A7E873AF9B03F0EE3B83 +:103FC000A86726C89FEAD4B3E5B8CE2D0AC537E066 +:103FD000050EE4AF3AD64DF391F0EA453EC93E17DF +:103FE0008E03E53BFE56780FD2C5CEBFE6615C403E +:103FF000EFCE0FB2F660FEA5BFA4FC959D5BBF7827 +:10400000EFB7B7A2BCEDDB6BA2D889BEBD6FA4DC55 +:1040100083F9DD26B2F3FBEEE7EF1E78F75AC97F8E +:10402000D2379CEBF54DAF7C93D74DFB077F0FE06C +:10403000DD1C7EBFF354E77F1E463BEF5427AC0ADE +:10404000F7F3BD7C7FAFDB1D46711C7DAF7C531841 +:104050001CB7F3DF5D8F8CCBE8B3F27BE84CED4F00 +:10406000C1F16BF75E1E8B7A7ECDF67DC6F9505E90 +:10407000FCDBEFF2505EF6BDC0F59D9386EEA7190E +:1040800058A68737DDD26EB804FD8A8CDE21F9D9B7 +:10409000E635B3912F42E102FD9EC4FB1A75BF8D38 +:1040A000207B02E0528E72FE7CF0F80AE131FEDFE6 +:1040B0000F1E7D86AEA9283FFAB62963D13F108036 +:1040C0008BE2E272CD4AEFF7C0FAF9F7BDDFE4A167 +:1040D0007CF9B1F5C68EF8FF6BBDF9FFA6EB95F440 +:1040E000FE728E9DE6174AF7E7F2FB4B77517EABE7 +:1040F000D549F3BD407E9FF16FBAFEFF297CD78D75 +:10410000F8F7966FE7C7F7EF04BEAD36F473F6BD68 +:10411000F25D0AFB17D6FD8BFF47D72DF5F322BDC5 +:10412000F3603ED4BFC6FAA205EDA52679CEC69CA3 +:1041300007F1BC63EAB074E18FE27650B1B0835E00 +:104140001EC1FD674D4C47E775C5E62AD2338B8704 +:104150003DF4058F67D391BFE90DF3E51BF97B6152 +:104160005ABB6FF230BD1FCF1F9A868D1D867ECD44 +:10417000268BC989EF30C0F71EFC3ED5C9F5FBA9D7 +:10418000C3AEA1F8D962F3DB73D02F3CD9A2B58BB3 +:10419000AE09B173AEB26BCB4BD80B71E8872BC9AC +:1041A00035D05B5E53B17E90FDF7C408FE7EC155ED +:1041B000ACADD966F92FC185EC5455C0E5E310B814 +:1041C0009C0B070147FC97FD5CB8A99607BA2865C8 +:1041D00060A7F275917D2BED5409BF50B83161F79E +:1041E000AA346400BEEA307E5E1CD41FAD7B009E04 +:1041F00002DEFF2A5C43F1F36370EE1CC1DF150B96 +:1042000085F330355F457EBA5CE8E393D5689E1F41 +:10421000D6A57713FC7C9C7EBF74AAA8774CB244C9 +:10422000AB14C7651F1E78776628634355E635A132 +:104230009FDFD6FD2AF25DE92F4DF4AECB3055DC81 +:10424000BB55B99F1BB8D51B5E40F55DC618ACB712 +:1042500090E14DB1D2A1CCA9F0FA0CDFE9C14B7AC3 +:10426000F8CE109E7D61BB52D4A1B1DE832ADDE77A +:10427000A61F807706A669D4AF4B17C3DB4716503D +:104280007BAF8EB777E1FD7803B3A5607C5E6AB142 +:10429000EDAE4368472C0BA373846945DC5E907CCC +:1042A000EF1EC9CF33657A74A49DE0F498CE99844B +:1042B0007AEEF4E611648F3485B96B76E03EF47CD7 +:1042C00004DD2B2A5DFE936BC7E3FCB6C63A911C56 +:1042D0003E9BBE8DE2EFE735CFBDF37DF8EED914FE +:1042E00046DFCDA33C4923A1DFCF14FBAD3BD01E5D +:1042F000F73A6E180FEDA7776C3B89FEBBE9B32345 +:1043000028CE733AEBF8039E83B2D97AEABF67AB43 +:10431000D588B0B8B6E30B15F78F6B272828D65889 +:104320004F982DE50E984FA938BFCD18C9FD224DE5 +:1043300061DC2F5CBA7C78561A7CBF16EFFF0D62E9 +:10434000DF5C2FEB4F52D6A09D922AEE03C9FAD81C +:104350000FF67BF348EE171A2352994F2DE6F5CB53 +:104360005A4C3DE968C7B418FCD990EECF2D1A3BE2 +:1043700012CAA7A5B1A9ABC751BC0EBD97D213C62F +:104380005E277FF92A871DED380F13F119AD0EF264 +:104390004FF54C721AF1FD949E550E1BC64D47E425 +:1043A000BA5E47BC2F6853EC188FDA3389717FBB34 +:1043B00095C7351CB6F933D0BF71D839C289FEF61E +:1043C0005419FF333A9CECC4474679AE447897B60B +:1043D00095BE857CCECEC2BA0B319E9711F13E7848 +:1043E0005338F3233F04DEC59A86F58F36E8E9DDBE +:1043F00009F92E56AA9EC7A7FE5AD0C3348C572D52 +:10440000C07B88DD73B19F08F93DC65668E1F4C5ED +:10441000707EA531B65B896E9767539CEFB4FB390C +:10442000BD01FD9B5568BF5265E1781E9F83ED611C +:10443000DC5B96AAEEB5901F66662ABE6B756D476B +:104440003EB79F477BC6E0BC3EBD975D8A789ADF4A +:10445000BA8ACE4506F0358EEB0F15BEEC75088294 +:1044600001FB75745119B61BC0D36C85F003EB3199 +:10447000E3FCF7E7CEABC472F8BE0FF137ADC89FCF +:1044800081EF564DD1573317EEA749CC89FBF2295E +:10449000C6F9EF548B4A7E24C9EF92AF253FC3BCC7 +:1044A000897F253F86F2F1C6467ED77253A399D203 +:1044B0005F35DA989AC9D896C624CA6F6DB453DAB4 +:1044C000D19843DF5F6874527E7BE3C594DFD9E8FF +:1044D000A2FCAEC6124A7737BAE9FBAD003E8CF3B8 +:1044E00080F149DE483983F3D31504E480C49FA1E9 +:1044F00065920EE5B4C41FD8BBF4EE867C0FEB7C4E +:104500007AC1FFD4FC418E79A30A0270C57C589011 +:104510009CC4BC3526B03E7C4263424C909C53F90F +:104520003B07280F130A02EB4757E09982005EB061 +:10453000DDC410BC211D4AB8407B7F4241305C7A0B +:104540001FBA08F15EAE7392BF83753FFF12E52D6F +:10455000747E9B6264BBD05FDB7D9F85A17F540F1F +:1045600072D284F793CA15A606F91B7E521FC6D4D1 +:10457000A0FDEBB686684D3EEEBE43AFA1FBEC4816 +:10458000A2A713E9F1F0DD9FFFE339E8FF997B3F34 +:104590001EED217AECDDF0388EBB24DC49FE088666 +:1045A0006FD291FF85CED9F027F8FDBC79DE087A6D +:1045B0002FEF69A3EDCFCFA1BF76B9DE8672745E0F +:1045C00033DF973F443C02DC3F127894EFF8954A82 +:1045D000BF78C8BB7A7F1E99C6EFD50A7F4E4FF9C8 +:1045E00091E75F827E7B96189D42F5D0BEFB27C681 +:1045F00097E385F677249991DF04B89635603C58A7 +:10460000A7FDF04294830F98E8BD0505949C5BE0FC +:10461000BBA7E50D7A274E693848F1091EB385EE30 +:104620000932AFA137B83FA581BF27C7BA8745A3D5 +:104630005F47BE071731CE65C47BEBD827D2CDBC10 +:104640009CFDF43E156B536C784E5326BE97C9FB08 +:10465000F2AA67C46C2B639F8FE4EF6C458E5429DC +:10466000BD6D2413E7026DB4EF4A3F56592B7F8F7F +:10467000B1AC2DDFB820687F9927BECFC7772382E2 +:10468000BE7F87FD8EC777887C4B93006F43C4BB8A +:104690001298C777011FAB74C5795990FF558C1FCD +:1046A00089E38FC779C4CB7BEBF4FEE7630F4CA2A1 +:1046B000F74C01E846F4ABCAF1E6E5142CC738E53F +:1046C00079ADF89A172ED25381F2AB69EE4D2A9E3E +:1046D000DF2BA3F83B0BB2DF6AB1DFC1FA8C78FEA7 +:1046E000F92906B2D1B930F7E77DF6AB5F7F8CFBD5 +:1046F000F3D79BAD36846DE518BEDFB25C5F217FDA +:10470000874FEB3F9FFCEBBFD1FB8B75DBF93B8DFC +:104710009072FFAEF4073B79FC61A81FF7D5AD7F1F +:104720008D1CD46FBE9D9FFBFD98DF5CDE97AB7B3D +:1047300099FB7F251CEB943374DE54F7CAB284C115 +:10474000EEA5E1790DD261A81FFDC7FCECA17EC5E5 +:10475000B1A3063FAF389F3C95FE75992F6FC84BAC +:104760003F3616EFC579268E0254573614A663BC21 +:10477000516DC3444A43EFC995378CA2FA950D6336 +:10478000A9BC45E833A070D33D4BE9CF3CE5CB8CC9 +:10479000623F308FBAD5F86813D453ED51781E17A5 +:1047A000747F9AF4B0AADFA6C7209D5574FED2A8E4 +:1047B00083EF2DA3B89DF179C8B940ED96A3745E3F +:1047C00057C3BA083F8037660E3E1FC278C1D8F380 +:1047D000CFAFEAD7D67AA4DF8A0EC5B501FAA932DF +:1047E000D91FA6F7F4DE9C65F006E1B34CD06FE864 +:1047F000FCE78EB26BDE3BC0F932EAA7E3E487C880 +:1048000009BF8960FCDDD9FE3FE0F9ED89356329F8 +:104810000EBAA2635B2D8F438BB0A15FE5B390F816 +:10482000C87A315EFD289DE0BF0EAA7F624B04DD91 +:10483000B3C4F9221F7FA668EF99DD25DADD358A3A +:10484000E3C5328AF39BAC5F616933E2B9C0E7BB71 +:1048500067C5DD0FF3E8DBF56E64067CF78A767DCD +:10486000DB23E8BDBE8AEDFF397D0FFA47B617C7D7 +:104870002941F2E1A15106AAF779273FEF633E1ED5 +:10488000C754837006BA3821CEEB4E6C8DA5771DC8 +:1048900006F42211BF7562FB8B91BADC001EEBCCD3 +:1048A000DE96ECB4C07B1C6683C78BFA9FDA39C3F3 +:1048B0008B3A0CF137F4DF92E375A3FC96F58C6626 +:1048C000176DAEF27D3126EF0D8AFB2BB07FBDED6B +:1048D00081F92FAA30923FFDD631F61B6F4639FC85 +:1048E000A681F0B16804F3A3FFE0748395DEE15B79 +:1048F000E470D239EBAD63859C49EA1E8FF11DD57A +:104900002D0A73619C59520ABF1F2378BFC7E17CEF +:1049100067451CDD27203DBBDAA7679EB1243FB267 +:10492000305E9D5DECCFC2389214A0136CBF7D1435 +:10493000D7DF0F1B79DC66751A8FCB4F157127D522 +:10494000313C8EBF57C6F9AFF367E17DB6EA174633 +:104950002838BF5E19B73FD39F85F3AC2EE0F1FB3B +:1049600012BED53FDF9F8574573DAF2307CB7B1C1D +:10497000B693145FB4C34AEF14E95EB28A78B5B057 +:1049800075A85F526C1DE42B2213E87D948382CEC0 +:104990009E1EE0436712CAD921F75A2283EF1F54A3 +:1049A00018DBF87D0385C7BBC8BC5C17E6715DBD2D +:1049B000829E2BC2455ECCBF22B28DE6DD83F72BF3 +:1049C000107E9BF9BD81CF92BB76E27C3EDB3C82C0 +:1049D000DE75EC71F816ECA2F2307A57B1C2AB90EA +:1049E0003CAFFC9589DE3D3DBED94A764265630306 +:1049F000BDBB59096C8FF7DC202DC1FB6AC70D6D5B +:104A00002938EEF17848D1AEBA97EB4B07AD8FA5B8 +:104A1000D0FD8AF52605E575259016EA7BA758DBBB +:104A2000AD4FF2EFF4EE4DE57A13DD13F0C077BC35 +:104A300017CA400F42BA91F086724DDC628F43FB79 +:104A4000AEC3A7425E7D2AF0DE3B8AFB5DAA46FC30 +:104A50006927EAC13D0E0E7FC00FD94D4F6EE3F7B7 +:104A60004DAB9E8F5F47EBEA08EB41BDA3728B8194 +:104A7000DE2D4D95F171C20EAB008186E7C5158C18 +:104A8000EB9753F45B283EECF4A6B0025C578F78AA +:104A900097B3F2E7F770F8BC6475F1F746E82D2498 +:104AA000767CE3507AFF701AEA424427A3F9FD842A +:104AB00098B63CC467E58A8B741427A2E77617A4DE +:104AC0002E85E2E8CD2447AB851CAD597159D465DC +:104AD000C857EFE8E97DA8CAA80564F79D56819FED +:104AE0000691FFA170BB2897EB1BD5C027785FB953 +:104AF00046DCB3AADAC8DFABAC5ACEFD8AEC57FC71 +:104B00007DD2C561FE481C6FF106BD13F15465EC02 +:104B1000C88A8771D272B9FC82FA1E944BB2BF2A3E +:104B2000A3F371EAEF0FD7135DA5E5C6717C74FCA2 +:104B30003201F5DCD0FA8BC3F8BC03F59E8D0C8EE8 +:104B4000DF91F506D6D3C1FD49A759D75D7F8526EC +:104B50005F6E09A37981BCA6FB6BA1EB85F9927D01 +:104B60005AB5D544EFE57C0272D08BF7B0A35DB4A3 +:104B7000EF78FFA8A7777F705EB81F2DF469DB9FE1 +:104B8000B67715A2FD7E7AFBB52AB6CFCEE5EFFB50 +:104B9000001EAE2338BD63A07BAAA1700F17F506D7 +:104BA000F8EEF9087E8F81756CC5FE4E3C1F417191 +:104BB000703DD19C6E4E4CEA203FF189E7130BE823 +:104BC0000D08548A00EF95368EF713CA36F2BFCA25 +:104BD00072496F78A12909E903DBA4A39EC0F5B14E +:104BE0002A732BC5B360BC736101A57ED320F1CAC3 +:104BF000408F64AF2FC9E5FC83CF90A2DCA5B87AC3 +:104C0000D28F3A8C28973D427FACDE121AEFCCCB84 +:104C10006FC955649CB53D4EC659637CB757A1B862 +:104C200098AAE63B2A902FAAEA57DD8CF42AE75F80 +:104C3000A5B21294073D8A9EE6D113C6DFC766C1AE +:104C4000E3A4F1D4961058E702315E65AE5DEAB791 +:104C5000AC0DFAA96E565AA97F878C27E4EB91ED2B +:104C6000000C46DC277A2689F2F3AC57CE2F74BDB0 +:104C700012BFF7E572F9DDE3B03F3C212E70CFEDB6 +:104C8000D4D9B151313F605FA3E53A10778CFE195A +:104C90005C2BC0DD9D6B13EBE820BB296B8D36DEF2 +:104CA0003C67BD363F728B369FBB5D9BCFEBD4E636 +:104CB0009DAF6AF38B71DCF1DCDEC7FBEE68EF635E +:104CC0008AF6BEDDC4ED7DCCA3BD8F29DAFBF81DCD +:104CD000ED7DCCA3BD8F79B4F7312FE18D763FE622 +:104CE000D1EEC772BF80D36EF19ED1EE22CF5CF4BD +:104CF000530EC41F575834F7B82E3DC1EF6505C594 +:104D000083469C271E3402F124EFC586DEDF1A7825 +:104D10000F37E4FE16D217F6F355BCE7F95C80FBBB +:104D2000C74AD7F264186F779A6FD422DAE7C32C98 +:104D300018CFDEBDEC93E5681EFD3EDEF3422EEAA1 +:104D40006986FE8DFCBEB49FE44CF752FB3B57488E +:104D50007D04FD60005DA463797FF647DFB9FDD176 +:104D6000F76DB57422F5B9670CFDC9282F8F6E3623 +:104D7000B7E23C8F0AFF259B630E896FE076D2A2D3 +:104D8000879475B83F75E5C6F0F3C283009D1FA0F8 +:104D9000CFF967C6929E3D906F5574F45E465202FD +:104DA000ED43521F4B51401F43F907EBC77D3A7B40 +:104DB000B54E33FF11BE700DBD8DDA141372FF6452 +:104DC00088A6FE985D6921F74F466AEF37CC5EBA38 +:104DD0000FF7E759AD6335F5CADC9785C04DCC5365 +:104DE000E8A565A80FE23E73AF99FC878BDFD793E8 +:104DF0001E538E852017CBB12FC063F97A1E47CD85 +:104E00001AB4FB6DB9CABCF89ED87CB10F497A2B95 +:104E1000B7315734B4FF3CBF6D23BEDF5AF1BB77C7 +:104E20000B6D782F4F999448EFD5647BFE03E92BE7 +:104E3000C5E09A4EE79EDB32A397A25E79F0358AF1 +:104E4000CB94749262B085233ED7B671FD1EFD638C +:104E5000FA9800BED7B6C586675802EB0A8A5F216A +:104E60007DF834C6AFC0A7F2498AD7382630FF454F +:104E700062DF90F33D26F47F96C1FBF9A928AF2E9F +:104E800078E3E918405DAF6EFFD72B607E27F23BD9 +:104E9000B2FCA8A73DB936E12680C75693277634E1 +:104EA000AC63D1DBC591184FF7D51603DD27F84762 +:104EB000FBB34F639CF38AB6678DE807A8547D4621 +:104EC0008AF3DCBCD68871CE576E5A4BDF176C2A3A +:104ED000257B7121AB277BF153F9AE87587F799100 +:104EE000B2C606F3FED968AEB79587F373C729FA41 +:104EF00009AFC5917EA550BCEFF5B32719E2513F2C +:104F0000DF124DF7A3468BFAA1747FEA2D3DF7E33C +:104F1000CEE6783EDFFB50B3CE3888CE679F19458A +:104F200076D4F5FE11DC6ECDD5DAADE546FB3B2837 +:104F3000DFD9EFF5F47B5106FC084E03E9C735B025 +:104F4000BFE0FD47F704BD860EEB264768E8740E08 +:104F50000BA27F18FA060C7609CACF9E96AEA97FDF +:104F6000E3EC5121745D1028277970A9E61E650DC8 +:104F70007EA17B2845E77CE7F731AFD6B4AF61333C +:104F800035F7F380DEA60E417B65BB231FEDE5728E +:104F9000F1AE1E3AE212F0DC7717FF0E0BD1F0579C +:104FA0006AB1F32F7CFF33F0DFC120CE1FE6E0BFF4 +:104FB000D3CF853B684603EF1144E9B9FF40F30EB8 +:104FC0008138BFC47993BE2BFC493539DC9F54E34B +:104FD000ED32E27B1D00773516E334DB14C207D4D3 +:104FE00037C716F0FC128ABBD6C68F617F186F597F +:104FF0007B505F8A7C125A0E74C7F5DEDD3CEE757D +:10500000E1EAD078CD563A3FAD45FF5010DE5E1A4A +:105010006D273AACDCB4ED7584DF2C37A7CFEA8E70 +:105020001986D2DC73E909E89ADEC35EC080AEF06F +:10503000DC07F8D7673FFFBAF18D16B43BE4FA6B93 +:105040005D9CFE8620FDE59D4B770B599711EF7314 +:105050002CDCAE38F17D67AC8FF01882F418020FAB +:10506000825F081C247C06E015521E0A97051E4626 +:10507000F273C12EC5E753CE5DC7F9E0168AD7D0CB +:1050800079CBF31C7671881FE9AD74F223D5BA058C +:105090005C241DB8399DCF3CC3FD2237E0BBAF6314 +:1050A0000374317B9A961FAF3F9340E5FF2A9DE042 +:1050B000BBC1B8FF5F287DC87548398CFE42A20B82 +:1050C000112F1DCA1FA1FEC67DA3451CE378365EC5 +:1050D000131F7D9E773A42E3A3E5BE1DBA6F94FE8F +:1050E0008EEF1B527E7AC47EE059664860C1FB8D0C +:1050F000FC2EFC6F8BEECDA1F7485296C652BDD266 +:10510000301BC5F7972EE571D7A550CF1EA43F2CB5 +:105110006F4E4FC17DE0C8CAECA7BDF84ED3DD711C +:105120000917039E8F2E33C4E13B97B2DE9165537E +:1051300052306EE4E82AD31C7A4FF83E33C3F7317D +:105140006B7626F2F765F596048CD7FCFC85587AC9 +:105150001FE9F868AE57562FDB1189D709AA96F1D7 +:10516000FDF7CE6CCF37A3E9FC79ED467264DBD650 +:10517000E6A1FCFF067D44E81FC0BE0A681FA27DB1 +:10518000FDD330DB0DD8EFA79B0DF48E1594BBF04B +:10519000DCE8A78AFFE32BE8BD1B2501DFA9E87D3A +:1051A0005F4FF7332BF4FBF2B0DFEAC65D29A8C2EC +:1051B0009617C07E09783E69E2E3562D7B36850E50 +:1051C000A15AD6D2EF1708F2F79EC5F21AF4F742A9 +:1051D000DEB334338ABF533BB8BF57C265F5486E60 +:1051E000976D14FB37EAE998A29E8EF13DA8A7635C +:1051F0001EF5744C514FC7EF75ABB57A5CFF083B99 +:10520000F7370A7D3855FF05FDFE1E6F11CBA9A7A4 +:10521000FDD69283F7DA162BE14ED417172B9CAFED +:1052200017FF2D8C9F3FF99235F410FA8EEBE5FDB8 +:10523000A06B05D1ED1567CC2CF8DEF22416ADC9B4 +:10524000179B9335F5A7D81C9AF22B934668CAAFE3 +:10525000B2E76BF2D7E45CA2A97FAD7392267FDD43 +:10526000C55769EACF70CDD0E46795CCD5D4BFDE01 +:105270005DAA29BF714E85A67CAEE70E4DFEE6F213 +:10528000BB35F57F52BF5453FE333DA377FC3AD173 +:10529000BE32E1BB43664ABFD1D954D40F17BF9D7C +:1052A0006941FC4F28D6D50F16B730258FD3F7CFDD +:1052B000C7B85C79E3F9FB5148B7C3C5FB50B3F2FB +:1052C000EC44174319686B64D77625231D85D60BEC +:1052D0002D9F10B1FFB41D70F8EBBCCB6F54417E15 +:1052E0004CB868FFD874C81FCBFB29CF5FB6FFC589 +:1052F00034C8F7E6EDE4F931FB4F6379CD98BB6F25 +:1053000054417E4D98C548F538B375C48D5E9CFFF9 +:105310001569AD4EEE0711EF6BF8C96F31709FC57F +:105320006CF1A707BD1382F0C07BF3080F4CFD4062 +:10533000C798EE073AC6F455A0E332905FAF031D5D +:10534000637A10EC4DFCFE7BB037317D0BEC4D4C9D +:10535000FF007626A65D606762FAA7C63994BED7BD +:10536000E8A1767F6E2CA7F450633D7DFFB0B1813C +:10537000D28F1ABDF4BD264FF82B76697F2F953C4E +:10538000AF94E7936CAFD38CE7BDAC5B8DC6DFFB0E +:1053900026CF1DCF6FDFABECE320FD2B8AB91AF2CD +:1053A000E85C51FBFB335E48F7DC8BDFDF77CCCA70 +:1053B0001C8BEF5F9EF52CC310A0F7C53B03E7E8FD +:1053C000AB795CDF9D39C6753FB61BF8BD02E23C88 +:1053D0007D8D819F9BCBF374199720CFCFE9272830 +:1053E0009E48C62B5C6EE6F7B765FC808C4F9AF240 +:1053F0002523FE9FD8A2D2399B55657E8C3390F130 +:1054000047009062BCCF6938C3E87C2411BE1B0BF7 +:10541000A89E4B0FE9FA6FA17E5E503C948979D12A +:10542000AF9928CEE5A11ECD6FCA971E8A8F9A2804 +:10543000E230861B61E3E2F5E8DCD68AF610B68F2F +:10544000ED3E80E30DFD4FD84BA1DE530A8F1F9038 +:105450007118583F82D7F763BF19FF01E34706F879 +:1054600064CDA42E07FACFD6DC6976A2FF4CFE3EAF +:1054700005722A015C6609B94687EC9817FB25DBA3 +:105480009448FEA122513E2AC3B31DF9D16DB2FD4D +:105490002D82F82A7D38EA033384BEFC03787B1919 +:1054A000DB85E24DE24BE223289E84F021F127F1D7 +:1054B0001B8A4789BF507C493C86E26D223644787E +:1054C000C73192EBFFAE781BA7F277FE4CD5668A08 +:1054D0002BFA313CDED6CFA6464195DE0CCF2CE42C +:1054E0008FD233F6D7315FA6E61B1175B2FC2B2C99 +:1054F0001F7F6EB9E7CB7E435410BE2F17B27C5886 +:10550000E6E0F5653DF9FE85ECFFD2CCC1C75F3C16 +:1055100085DF0B2B799FFBD1DF14FB269EABE717B2 +:1055200006C56BE62E24BD9859B87E69873F28973B +:10553000AE38A36AF4CD1226E22A984F45FA2B0919 +:1055400039B7BE5AE8A35787E8A3A1FAA5758C38E6 +:10555000CF7630C7BFF8AE6BDC181EA7A0D15F3086 +:10556000EE0BE939DDAEA7F768E43BAEF25DE0C9CA +:10557000828F26E3BBC091F87B333DB41F5EC9BC6C +:10558000945E05EBC1F41AE6A7FDF35A10BC98BF70 +:105590000E437D207F2062FA2D7847AF786C71062C +:1055A000BDD71178AF307B4C3CBD57F8775BD07BD3 +:1055B00085FB27DBE99C71BF99DF0B467EC3DF8B40 +:1055C00028D7F33BD87732605F3800FB12A6AFC113 +:1055D000BE9401EB7B03F625CC5F9DB39461BBA920 +:1055E000766DBC8F6C7F8DAD180C90F3C3EB9ABCBD +:1055F0009787213CDF8CCE9E8CEB7D33FAA2C98845 +:10560000DF37A313753C3519313D5F7B49F7D7E48C +:10561000F2FBA9D7D8A6D278FF17E049741F0ACFAA +:1056200059489BE84734BF1B99047459131129DE6C +:10563000557D3B4F0FF9E33835D01326365C46F3E2 +:10564000BCA2E1124A3F6964B908D76A338757A8F8 +:105650001F8AAD4FD405C71F4F37794A119FD5BA5E +:10566000CEC84BA1FC9335EF6E45FB01F4E805F481 +:105670005D6F6F75A25FE64D1E3FCACE1E489969E9 +:105680003D971ED9FA599AFB8E921EABCD128E5EB3 +:105690001E2F97E9A2F532F14EAA8C731966E2EF3C +:1056A0002DC8773B519FA17B8E217A436138976B40 +:1056B000C34C5C4E0FC82BA390DB9E17E95DF467CB +:1056C0006B2D4EDC2F33925DF7E03AA49FF6D4B0F9 +:1056D000087A0765A27F5414E64BD02F0053DD2FC4 +:1056E000E2B1AE1C556F49033C3C3EC2B38CF84E50 +:1056F0007F568FF2F1AD4C85C52AE8D71D6B21BBD3 +:10570000F047F83794FF1F1A23ECCB3C96A7B92734 +:1057100027F002F3A3B89C53EFE9293E6E22CB7A1F +:105720001CFD16C5070D18391D889B4CE2E78753F1 +:105730000EF238A0801DDA4FF37CCDA6B027617D34 +:10574000A6241DB307C9B1307B38B307CD27222764 +:105750004693B73A8768EA475D9CA6298F768DD431 +:1057600094C7961468F2F1EE4B35F513E71469F21D +:10577000C99EAB35F58796CFD4E487D7DFA4A99F20 +:10578000DA304F53EEF0566ACAE53BA5CCEBEACAD5 +:1057900049E0721A7FD25B1669EA955816D0BDC8E7 +:1057A000CCB69F6BFA6376EE6FF0C21FA4ABAFF07E +:1057B000E22DA45392B47E8862DBA4571145434581 +:1057C000DC12634E3BEE03C536AD5F62A8A584E2F2 +:1057D000E787FE485CD31FE43E70A174E0193938B6 +:1057E0001D5473BD22940E5E43B994CECF0982D767 +:1057F0008BE704C170C17382E03C9E1304D7C7736A +:1058000082E0723C27082E1F7B508BFFF15D5AFC13 +:105810005F74A8E882F07549B7962E24BE2EFB74FB +:10582000E6A0F89A037F689F667C9F9F0C70F2B396 +:1058300073F126F125F177A178FBDF568566CD005F +:10584000800000001F8B080000000000000BDD5AE4 +:105850007D7894D5953FEF3B336F6692193209E41A +:105860008B8F6426091020C0CC24A128565F91B8E4 +:105870007437B003AD90680C1392201F0143D41A03 +:105880002C6E2626484458630D4AD9AA1304B65DE7 +:10589000B10D8A2D5B63770A68B10F56D4B6ABE2BF +:1058A000A603EC52AC5AC6B8DD629FB6EE39E7BE2D +:1058B00037F3CE185AF78FDD3F7678F25CEED7B922 +:1058C000E79EAFFBBBE7BD00009F7A013ADE1D58A3 +:1058D00070A20CF8F729FED97CAE091766E17FE6C5 +:1058E000C09C4F2D00BF859D55FE6280AF8EC40BBE +:1058F00035AC7F4ABFEB12E5EF3A230B4ED800ECF4 +:105900000E5D9F9303A0CFC1B95876D8C7CD814C07 +:10591000EC7788B2285D94E185D85F89E5B023D221 +:105920008DEBDF6D89B900E9FE4E8DCD86128002C8 +:1059300088BFA462FB5379A13C5F15401E8415EA21 +:10594000DFBB6E853F540E70694A7CF86B347F8BE9 +:10595000CB77C083B4CA05BD86EEBCC80E25C1573F +:10596000C324681BC43E8F0F1B910EF86255CB6693 +:105970000394F854AEBB7C6E0D9C008DE5A0478867 +:1059800086150A1BB0BFDAE2647A235BAD9134E47A +:10599000A3C8112AF3E17EBADFB6DB89FF11F064F8 +:1059A000BA693C780A832E807336A81D747E562E01 +:1059B000458EEB67D3BC05165C6F02407C9D1AD9FF +:1059C000E7E57598FEDEFDC82FD61714451DD3A94F +:1059D0007FB7EADB07A6FE568FE8B72861AAC7EFB4 +:1059E000D522FB702BEFD90CF96DF6440E103D88D3 +:1059F0003896211FD3F7E054931EF75A6131F1B561 +:105A000037A286A7CE059811B183D56EEA07ECE7D9 +:105A10007D471CCB71DFB3BEE54EEA9F3D989F44A6 +:105A20006FEE514F52BF3F5A96D45F71D297548F49 +:105A3000915C907ED5E9F949F3A6E09F1A00F8C27F +:105A40005B7A527BD186F6A56873D4AFABD9005789 +:105A5000C51627D12BBA94AE2AD8DFEA2B66FD2DC6 +:105A6000B8184CEA078F610777E7B21D4CB242388D +:105A70000DD779DC06614736D7750D4B8D048CE365 +:105A8000B45E2BDBDF64E421335BF065A171583A2F +:105A9000789CE003FBC376EA477AC437F6EB56D12D +:105AA0001F4EC7FAD3333D6CEF36ABAE92FD3EA12D +:105AB000C5EAC0E4270D6968874ED6AB4E76F0C4C0 +:105AC0003DB903663BBDC3B0C7A767029707ECB0FB +:105AD0002A8872EBBED709DEB9342F5640FAB9C70F +:105AE000B0E3D3D3F40EB2ABA767BA79DD27B4F82D +:105AF000DBE821D03057AC53AFAAAB96D17C056A16 +:105B00009F2D4FACB3CD98DF12106543A6E007BEC2 +:105B1000A6B11DC97DE46BD0630FF0BA33C8BE6F68 +:105B2000DD39B86B3A76D56B7D36DA17DA9B2D887E +:105B3000FCD42C8C59C18F76F9EDF38F3A0B908FF2 +:105B40000E94EBD5003B0717D7864B0196A09C8897 +:105B50009F226C263DD4907CB1FC9DDFC2EB7FDBA5 +:105B600027F63BEA6F1380FD6D04045F231D5A2462 +:105B7000EC4DE8D1A4A730E9E56027B288BEF0ADCE +:105B80004E3B97FFD489F63B15E050673ED7BFD315 +:105B9000E9E172B0B38CDB9FEDF471FD48E77CAEB8 +:105BA0007FAF53E7FAD1CEC55CFEA033C8ED649E4B +:105BB000900B502A4C6BD46EA47CA43D48F9D4DCE5 +:105BC00027F4E5D96C0BEEC3ADD4A8B0580924E492 +:105BD0009E1E10FAFDB94FC4451A47F1468EABB66A +:105BE00094679E7526C6C9F8921A4F64F9BFB5EF3F +:105BF00051395B13F6EE30D9B99403F65FC15F9269 +:105C0000FD8A7FF30C39168B79E30209FD99FC8834 +:105C1000FD6CD48F00FDA72421DF48A9BA98E4B514 +:105C2000DD25E42CE560F5AB3CFEBB64D75842585B +:105C300077FA516F2163E96ACB1F1AC98E5A5C9AB1 +:105C4000270D87849C6B6A601CC0B57AF0D1EDD8B3 +:105C5000BEBADF0603D8DE88CB76648B722BF2D710 +:105C600018B69D8B99E2D26D10CC8C2A548B5B8830 +:105C70005EF72EC5BD17EB4DBDC9E35A40D0B9CD77 +:105C800079E37BB44E0B58CFC5647CF2129D9D1F07 +:105C900059C651694DCC1BE3FCFDAD3C7FE7C25CAE +:105CA0003A7FF12055498E6BED725F4E5F94FCE5B3 +:105CB00067165F1AD647222599748EA17ED8BFB089 +:105CC0008CA66527CE65CF1E245291901BCA33BD8A +:105CD0008CCE8F1EAB6FAAE7B3F6352A4FC8E57599 +:105CE000DBED22B6A29DBE4672FBE0A405D228D60B +:105CF000D6DAD94F4246FF07E18FCF72FF11878F67 +:105D0000EA1FFA4FCF89E2FE42B4FE781C939F4C03 +:105D10006F64AB1DDCE4E7475C11C071BF56060E33 +:105D200066A2DE37743D35C75D9CE0271413F3AFE0 +:105D3000E40F774D0F4DF1A3DF84BA6C2B483FEF92 +:105D40003B55B705E93DE03C96ABA35CAE55F4226C +:105D50003FEF27A251DC5A8F764CE7520D9E8F649D +:105D6000BF92CE9E99C6BE53F6351A9FAE5122649D +:105D70004723610B9FE7238B15E61BE39B4EF2FE47 +:105D8000390419BFD4286E1B95E4A79026FC944AC9 +:105D9000F253982EFC94EAE4A754929F52FB972F5B +:105DA000FB594F5FB9BC80F71BEABD8AEBD38AC2AF +:105DB0006A3AC5E95B14DF012C56EE876DE9383588 +:105DC000D6B5B22A84AC5DE717F17C9A71CE7C46D9 +:105DD0009F7E11574EF945FC91FB69EF5238DEB6B4 +:105DE0002BE2DC6CDFA570BC95F58FFB8C7AB5A837 +:105DF000DFB14DD4633667AF9229F6573A55EC8F31 +:105E00004ADA5FA94DEC8FEAB43F2A697FD44E711C +:105E100088EA1487A84E7188EA1487A8A43844ED4C +:105E2000AB21584847C417E3008B4CFE75DD653B3A +:105E30002C32F9C9F5909554BFC15E9034BEDAEDAD +:105E40004DEAFFABFC1949FD5FF2F893EA7F537608 +:105E500055D2F825BEEB93EA30FF4B893ADA27E8B2 +:105E6000CB92EA5F86DA043D94D34DC1C624FA2B67 +:105E70006BD725D30B6D4E9A7F0B7424CD2F69EB16 +:105E80004A1ABFAA43816653BD19E26C674D7BC6AF +:105E9000B39DE49406B7929DAF5A197F31E6253D34 +:105EA0000FAD233B6DDF98EE137AEE5B2CF4AE0260 +:105EB000E9F1499B278FEA4FBE6A01A1675F9E7B8C +:105EC0000CFB19423D2F42BDFC10F54C6514F54CFE +:105ED000E531D433952750CF8B507F2FA39EA93C1B +:105EE000897AA6F69FA09EA93C857AA6F2A7A86704 +:105EF0002A4FA39EA97CA3B396CB9F758678DE2FED +:105F00003AD772F956671BB7BFD3D9C1E5BB9D61BC +:105F10006E1F463E9A6D09BE08EF969AE44BF8B69E +:105F2000D4241FC2B3E63AE159F378C2B3E67EC285 +:105F3000B3E67EC2B3E63AE158F378C2AFE6FA318F +:105F40009F87FD8C70AB791EE154737D765FF8A559 +:105F5000F7B05CFACDE113544ECB6C7C56C1D0F057 +:105F6000E2E1776AAD88A3A6653406B2102BD89417 +:105F700058ED22AC872E57703C980371C697211CB0 +:105F80004B7A0B4581EF03B33F29E0FEF80CB7B81D +:105F9000E7D00FF53EFB849B71707C86E04BCEC74B +:105FA0003060A1528E4FD4C71E97BABE1CC7F1D124 +:105FB000C4479145E1758B7EECE1F3FFA0AAAC0AE2 +:105FC000A23D1D447CB41CE3EDAC43BAEAC0FEDA4A +:105FD000236EBFC5434CB605E8DE32629CE372FC1B +:105FE000342B9CB40512FBF8C72F78F7D13DE86D30 +:105FF000BF88CF897DC6AC14CF314EE8119CF7C560 +:10600000FF8C5A32717C28BCAC92E8D768022FE032 +:106010003A57D3BD6F5658D1F799ECFBBC416FD6B8 +:1060200021D0F2699D271BC4BCF4D179BF7F0FDB5F +:106030001BE77B7D3BB0FD9A43A00FE0FC0F0C7E7D +:10604000AF890F1EA3B8DCD823D693741BBF59A801 +:1060500079E85E096DF7E457928C14A0B88DFB3A8D +:1060600041FB92F293E3A7A1CBD8F0FCD8444BA21A +:106070002A7BCBC24192F3DFAA1E5E47B3EB8C9F13 +:10608000361D5D0614EFBF5899553D81E80E818F8E +:10609000E0EA92CAD76F10FBBEBE4AC815C5368F5C +:1060A000E9F2F9353DAC443310772C0D77DD47C765 +:1060B000DB92F0E6977268FC7EF0793D7CF4C0B527 +:1060C00081047F33F5C32A1E7F78AD3EAD3A14D2EA +:1060D0003B1C1F6FB2238C005F21BDFB7D3620BDB2 +:1060E0002CB3BA6D143752CF7789173E26BCC05CEB +:1060F00019FD6ED1DF7EEFE5B3DB291E3D2FF08267 +:10610000C4398D6EB187D01E85E3DAC73D78ED20A6 +:10611000393F9F1601C26B88273C688F1FAAA77260 +:1061200057E2BC8D25914215E5B57EE2C09C6C0B13 +:10613000E381C200F2F97EF8F8D25AA473B6E7B947 +:106140005C92DBC73D3765469932E2C479143F055E +:106150001FCD5BD7D6D0263780FB172ACE3F87715D +:10616000469F4EFC5F9319A37DF5099C578BFF2832 +:106170004E37BE3A3E97F0562AFE5BD7636BD4F09B +:10618000BEB62E05F76D3070DF86BF80FB2A030692 +:10619000EEF3818F719FA53E3334463C4ECDBB203C +:1061A000BE59101803DF80718FB9C321F6D9F8EA00 +:1061B000F19B18B7B44D5509B748BC53DF25F00C17 +:1061C0001C86C85485EA37B09FD63FAFFB149CF7B6 +:1061D0009A8163965F9EC4FA78D3C02D375D9EC5C1 +:1061E00071A126E6E0F615970BB85C797906B72F12 +:1061F000778AF810FB6788DC47F7BA709AC051437A +:10620000C0B829D54EFDE0AE26BB9FA92BC7092EED +:106210002E211C84F46A09178D27BB6FDC96437608 +:106220001F01C6ADA976BFB2DE5B4DFB98B1580128 +:10623000C27FD2EE43E11FB1BD2E457BA5F6DAD079 +:10624000EB56F2778C076E9A1732EEA9D2BE53FD49 +:10625000A121C3B8BF3B45FE68F45E4F4CE27D17F9 +:10626000C2D7D511CEC4FB34C0446160807A769524 +:106270008BFEAE67AFABEB29E57B50383390B86748 +:1062800051DD61BA5751DD65CA3710C4B8C674DF35 +:10629000257CEF10F3203790B897513AE8B2E97EA9 +:1062A0005C6CF02FEF6F44DF2AE6457303E6BC8198 +:1062B000C85350BE80E26EB5E5DDEA3CC6815901A7 +:1062C000E1AFC27ECE19FEEAAF5CB8BD02E5D3FEF7 +:1062D000C0D43CF83376D9847A23FF6CC88CDDA512 +:1062E000E039F64400F445F301EAC09017F2016882 +:1062F000F7371BF59381D0DBBDE52C67AEEF0DFCC6 +:10630000755D18EBBD5BEF4B8983419DDC22A35C7F +:1063100007CA03A6EE43E6294E06C4F8D47C4553CB +:10632000B93827583FB8CF730FFCEA69731E46E6A9 +:10633000F1D012F81EF3E8F27CFF0E239E925DED81 +:106340005D3F99F3362F18F774C2BF9EE902FF52E2 +:1063500049F8D79326F02FD509FF5249F897DA0963 +:10636000FF529DF02FD509FF529DF02F95847FA9F4 +:106370007D7C71F079E1CF7D76BAFF4259FC1B0735 +:1063800070FD864E0D881F794F7E727D3AEFE3C90E +:106390007B348E8BF2BE5CAF9D7EC9EE4DC8E14C66 +:1063A000C7D76DA849D233EFA37EBDC2E7B3BF32D2 +:1063B000788CE26446B94FA338132A8F281E94EBD9 +:1063C00044B791B72989FBEFC2727B85A053532C48 +:1063D000CEC5220B9C00B4AB1FE5E9AF109FFECAEF +:1063E000D0292A9B86BC2F4FF2D03995A5917E1AD1 +:1063F000F244FE15E559B8DC9590732C20E2CE23CB +:10640000E4CB585E32F284A8A7DE62E4AF6E829BD2 +:10641000E58E76DB43F7AA58409CB732FF96C84B0F +:1064200058394FA47568916E45E413B480295F070D +:10643000223F21E525F30C0939B95FE6BCAA4BF3ED +:10644000107E69744EBB91ECBFB14FC9A6B8576DB1 +:10645000A97999F1F3C3DE62C2CFD915C9F7C31682 +:10646000E39C6BDF5DA215D0B80710C561BD26DBCC +:10647000C374E2BB14F73E0FC91DC799F241CD7B2F +:10648000AE62FF688E605971653F7AF7E11772AEB0 +:1064900022FB8BEA1AF1DBECC63061CA7F34F529A6 +:1064A0006CCFA975B5C222EC1F613BC9EBD63BBDD1 +:1064B000DA6ACA0B22CC682FA77D0879C879382EF2 +:1064C0004AE350BF421E0F23DF5EB15EC0447F35FA +:1064D000D137AD2FEDC159E1627AABFBB23485CE35 +:1064E00047B79BF9FC8C1C0CF9374523361FF16329 +:1064F000C575B17EB33B62A37556F7F8391F1FDA35 +:1065000029D609F56669B3094759DDDA14ACD7A76E +:106510000B3F44FE186F36A35CB229DF968DF8D28C +:10652000F959F9341AFC36235F2D49ED0FDBC8CE3B +:10653000EB8CB8BFBAE77A4DA5F956B1DFAB0D3D8C +:10654000870C79FEC766C70ECAFBD767F7556F2160 +:10655000FF599395D58DFB29AF1071E0EA14FFA880 +:1065600073F7F17E46E5B91BF78F245BDC41A68FFC +:10657000F61026FF69EE17F49BFB1BB5722CD7585B +:1065800043DA645E5FC8D3B4EEB6025E5771D3BA25 +:10659000E00EF177870BBB5716F23EFA1FB301EFFF +:1065A000E375B0E07ACD3B15B64B690F0D15C20F00 +:1065B000E5FE97543899EF2515C97E25CF25E95F6B +:1065C000CD3B1B41C7759BF2C1A72809BF927E2610 +:1065D000FD2B357F5767E4EF6C3BCFAEA3B823E3C9 +:1065E000009E8F6DCF8E716E6C37F8B8D9D007CA08 +:1065F00087E38BECFF6A85C86FD4937C4DF3891ECB +:10660000D15D2DFB1746A76E2E4F8C97EBD6678B6F +:1066100079A41FB293D586DE687C3B8F1775E9D7C6 +:106620004DA3F8F5D0B65C3A0F0F2B9C676BDF7566 +:106630007CCADDE4E7CF64502617DE6F3DB0A98049 +:106640000E5B6B84F521F96A41BC42FEBDC638077A +:106650009BA363FBB97D56E88E0AD33DA0F99167F1 +:10666000A651DCC4FD47295EBCFBCC0B3FBFDA93CF +:1066700038BFE47E56F70E709CBC756756C022E2A8 +:10668000642FC5C9ED86DD36F508BD01EA8DF09CA5 +:10669000D46F638FC2E74553C7BC08E1A0517C901B +:1066A000123753F529F52CF529F580E713E77725FF +:1066B0008E96FBE833F878C4F08B9B0D3B6CEE1B99 +:1066C000D8964B79D75EFF3C3A96EB46DB1FAE3649 +:1066D000B78FEAC12DF5507E3FDDA34606851E46E5 +:1066E00076DA44FEED90C81BBEDFFEFD9FAEF05093 +:1066F000FE30B2A9C092AC07C28F6B0C1C791BEAAA +:1067000061AC3C22EA61BF590FB73D69E8A178F05E +:10671000373FA078B3398DBFCB35E1DF7C94D3FB15 +:10672000871EB14DC2F65B5A942CE2F7B90AAFD876 +:10673000E7E080AD98EE056D7E37E57F9FAB107882 +:1067400032D5AEB1D4C1245F3A1F94EC048E91E3EC +:10675000293E1D463EEEDCEC180773896E56B61BCB +:10676000EF29EF1AF62AE3CDE87D7673E3DFD33D18 +:10677000E6BC43D8792BCEA7EF3FE7AFF715B69726 +:1067800027701E4C183CCCDFC96E2F0FD0FD0DD7E3 +:106790003F49DF21DE30F4565A1A8B10FF126F6A20 +:1067A00018AFE87BD03E55ECBFD822CA7F481F9C6B +:1067B000D1F6677060696BEC23E247E25C896F7F1A +:1067C0006FD885C4B112975E290EED285B0D3AF2A1 +:1067D0006B437BB6783F1B8724BDD47824F73B29D5 +:1067E00063F0DB642F936E9F19209CA0A5432FEDCF +:1067F000E792112752F77BDE2BE47A25FE25DFA3F3 +:10680000F240A39C9F9DD887E40731AEAE126EFB89 +:10681000DA6CC68DE7BB7C8524AF2BEDF3BC37C4A7 +:106820007E1B2F00DFBE31F699BA3F28EB63BF69AC +:10683000C8F3707E42FA4DF3E87782F2CC18EE632B +:10684000A44F7C1F38AFE0B943FBDBEC50D94E8C32 +:106850007DFE4FF3D4B995D932FFE2225C579F6E8B +:10686000C483A8389F873B4A78BFB25D9ECFC3EEF2 +:10687000982BDB148FFFBD4D9C6FAD4887FC093A08 +:106880004A80BEE70FF79D77A96CB7823F39EF4E7C +:106890009BA00F2E2D7240215CB34C6BC4F65B3B6A +:1068A000DEB429587A2B853E8B4A06F5BC098CEB61 +:1068B000187774BB7CF9B45E77962FDF8C0F329C0F +:1068C0002B384F73DE1B2DA5EF1071BF83E53EEC17 +:1068D0005C71239DB7C37BB2E84B08DCA9F8863B0B +:1068E00008AB6E4BE3FC7B8D0ABD0ADB49549B442D +:1068F000E77B97C2F141B67F7D56E8BB153984939B +:106900000FFFD73B44775B868FF8803FE0BA182FA4 +:10691000E9DA4D7EFE5D8C492CC794BC496A9EA481 +:1069200048F3701E25FE8A05F68978F8AF546F7912 +:10693000C596F41D467E1F6A19F832E7279A8DEF37 +:106940003E2D942FA9E0EFFD001802EFEFBF219735 +:10695000ECA2F9E1EA47C378AE142A10A478536890 +:10696000D397525CB838303DABCB742F3A1349E320 +:10697000EF6F1707BEFFEA3C5CF7374773FC1CA7B5 +:10698000C32A9F27BD9E09ACEFA595222EC9FB9A6D +:10699000F5CEC630781279ABE681ED8580EB356FA8 +:1069A000EC9E46E5C501472DC5FF45EE658BB290CF +:1069B000EE9A6F66715EF04CABC847AC7F7DEA3EE5 +:1069C000F2F7D595222EB5FEE9F8136EC4152DD831 +:1069D000E6C6757F3B9811A1EFDEAD9D470BE989B7 +:1069E000C577D242B756E2FA1BD4A115849BD7EFE4 +:1069F0001D28041EEF1933AF2DCB0B748F43FBDE24 +:106A0000F8776F319D0FD5534BEB707EEBC6E7C621 +:106A1000119D0DBBDF9CE75639AFB48EE8D3772AC2 +:106A2000370960CFC01C3A97AF55F40D9563E45F0A +:106A300052D7D964DC7BDA2A85DE6BB2832BEA2A53 +:106A400059AF6C1F57E26FED5125E9FBDDAD914C5D +:106A50008DDEBC84A2A0D177E2901B18F75EB44013 +:106A6000077FD732708E6CEF36E47731B3AF90FC8E +:106A700060DDC1C70AC9EEDF73897AFDC1953FA108 +:106A8000F817DA9F26F0B715341FCE6B0A0BFC0CF3 +:106A90006BB3392F29D7DF5599C1FCAFDB53917404 +:106AA0009E526286DADFB38A772545968FFC84C7CB +:106AB000CE58A32D642767DA1CBE30EB53D8C79994 +:106AC0003ECB8DFC8EE54E0508A79CE97BCE55EAB2 +:106AD0004CE03A57E56094E2E7C62388738469B3D3 +:106AE0009D6F72CBF8E6BC91E206E23337F941AB19 +:106AF000D5F3D82D586F3D69C340776579AE3770AF +:106B0000D968FDC8618D7074EB218147361CFA91FC +:106B10004674371D35F0888173361A3867D31121D2 +:106B2000978D47CE6A4DE67B4559F6FD9310190EB9 +:106B30001E595BB71B873692DEAE06783DB0F2E693 +:106B4000AE522A8DBCB535CE787147D91B7C4FDE4D +:106B5000D863D02B7BE3FE62DEAFDFA698ECE1705A +:106B6000A58DE525E7A33C785EEAFBAAD4775545D9 +:106B70008ED0BF905DE66CF8EA173829046D73C9B2 +:106B80003E3FC7BBA513346FC838DFA21BD37B09B8 +:106B90007FE89B9C562ABB373A198FE89BDF701021 +:106BA0001E1CFA4DBAAA8CE3775BC78D775B3FADAD +:106BB00034BDDB9A0C830AF9E1A5177F5521DF6FFD +:106BC000016EC5D6B5F666FABEF18B4A91C781F261 +:106BD0005805F197734C9C0F8FDBA097CE5DB006E4 +:106BE00081DEBF448DEF92E14F547EAF32A4449FCB +:106BF00022FAC134672FBD937156093BFF6349F0F8 +:106C0000DF88FF60B165B69FD635BE574E31EE5D69 +:106C1000DAC47C27D9BBA2EBD081F455E5A5268A3E +:106C2000370FC6ED40F7FC6E439E53262EE6735297 +:106C3000F14CA0330B8E95ABE1345CFF41B0F377A0 +:106C4000534D75E8DC3FF4E34FE85DD224CB47C7F2 +:106C500033B17FD2DD8AAF1B596D18B9C07879F88E +:106C600093430E92FFB9BCD008C965A22536FB211B +:106C700064F541B7EFAD10D10BDA7D5D1E61D376BF +:106C8000B4EF85E2BF30B4E59371D9387F613CFD44 +:106C90002CC9F752FCC233DFAFA4D2CE79D98543D9 +:106CA00096681ABDB5B357EBA3F966D633E8F67903 +:106CB000093AD0F71890DFDC6E9C2F92DE95E65FE4 +:106CC000CAF758F9FD45797CDC43B85EF790C5BD3D +:106CD0000368FCF1B7689F0BEDCE28E5B3C16EFBEE +:106CE00060349F4DEB9E9E9245F96BF2994F11B423 +:106CF000E4760B3D5E9B997CFF2CAC12F7BD4243C2 +:106D00005F52DEBCF9A47350F8FBEDA375CF6B2482 +:106D1000AF77F01C247E468610D78C116765F92664 +:106D2000E11AC42BCBA7EA855539093B907A97EB3A +:106D30004AFD4A3DC23DA75FCAF4B2FE663F048CDD +:106D4000CB1F7F4D61FDCD203A7B2FEFF3935EBBD0 +:106D50005D377A43E5FFFFF4961A5742F46E73EEFF +:106D600058EF3683E9D3BDF46EB38FFD1BE3CD122C +:106D700092CFAAF23685E4832395CF196F965755A3 +:106D800099DE49BA54CEEFC87790DDFBC5BBCE057E +:106D9000458838A87F8BCBE8F77459A97F2BE25F31 +:106DA000E0779262FE968CE477925B4A182F12434A +:106DB0004C2F2CE8C97788DDB40ECE0B8733785C76 +:106DC00037BD97CC4CBC43245F663AAD20E848BE43 +:106DD000DAC4FBCCDC6E313F7E97C6EF3B4399E2D1 +:106DE0001D63E892888B5BAAB2447CB3C6AA082FC5 +:106DF0003F789F0BC80EA5BEF9938127A16F8BA189 +:106E0000EF89E542DF139D6A348DF4B676916ED634 +:106E1000DB613A4BF0EF05C4F576E26F9978C7D79E +:106E2000BF4C2FA0EF92FDCB7255C247DFFBD31DA5 +:106E3000BFBC97F87BD5C638B5DF2FF8ED7FB1849E +:106E4000F1D3B06AECEF601ACFCFD9B0A680F46767 +:106E5000C9AFB8A619CFC947D3233348BFFD2E9574 +:106E6000C7F54F5539DFDCEF15F3FAD795339D5150 +:106E7000FDED728977AE469E7DEF9065C0D09FB8DC +:106E80002758E3E3480EA82FAEA39E6A9FE57C42F5 +:106E90007C9CF9FBCA2503475C32F431DA0EE25DD3 +:106EA000ABA4F397DA2D79A108D997ECEFCFD20BE9 +:106EB0000817A5CA7B7797BF771AD9814B7513CE70 +:106EC000BF929E32566A4F1C30E9878E39DA774678 +:106ED000F702B607A9AF47E579B5C522DEE9A6E80E +:106EE0000F260B7B907980A2F0D96F88733A368396 +:106EF000FC06FDAD8CEE8BC314B7E626EC55D1C570 +:106F00003B33699F327EA5FAADD281F16CDC587EAD +:106F10003BA888F7D651E9B727483EF0439F87EA58 +:106F20008F2BBEFCB492CFE5B7AF90BF3F941F3A12 +:106F300045E504234EEC55237EA28F76B5D6F80E98 +:106F4000A9909C7F69C86F15C6A1F1E81F17AA8C8C +:106F5000BCDBD6947864C8BBC118FFCB0FD18FE6D9 +:106F600026F4B5CAB817356C4D3B4B71AD61AB4DCE +:106F7000F84747B59E4287E3B2A4039E8F72683FED +:106F800072DEAA75BFCF211C7CC5F9B1C959173271 +:106F90008CB888FBFD9916BC48721A56632E1FCA1E +:106FA000E7D41F2DFCDDE22CCADB4376B23F4FDC79 +:106FB000DBB2048DB871BE55DA8397483EA7FCBF9B +:106FC0009A4AF720F8C3F1C9C447202F3842F41E6B +:106FD000281DE1EF2FAB20F6B8827487EB7E3D854C +:106FE000F85AD5F1638EDBAB64DCFE0B724A958FE9 +:106FF000945B62BF23398473FFAFE4F5DF96004FE3 +:1070000012603000000000000000000000000000DE +:1070100000000040000000000000000000000040F0 +:107020000000000000000000000000280000000038 +:107030000000000000000010000000000000000040 +:1070400000000040000000000000000000000010F0 +:107050000000000000000000000000080000000028 +:107060000000000000000000000000000000000020 +:107070000000000000000000000000000000000010 +:107080000000000000000000000000000000000000 +:1070900000000000000000000000000000000000F0 +:1070A00000000000000000000000000000000000E0 +:1070B00000000000000000000000000000000000D0 +:1070C00000000000000000000000000000000000C0 +:1070D00000000000000000000000000000000000B0 +:1070E00000000000000000000000000000000000A0 +:1070F0000000000000000000000000000000000090 +:10710000000000000000000000000000000000007F +:10711000000000000000000000000000000000006F +:10712000000000000000000000000000000000005F +:10713000000000000000000000000000000000004F +:10714000000000000000000000000000000000003F +:10715000000000000000000000000000000000002F +:10716000000000000000000000000000000000001F +:1071700000000000000000000000332000100000AC +:10718000000000080000332800100000000000028A +:1071900000003320001000000000001080000000FC +:1071A000000000000000000080000000000000005F +:1071B000000000008000000000000000000000004F +:1071C00080000000000000000000000000003358B4 +:1071D0000001000400000001000033600000000016 +:1071E00000000002000033680000000000000008FA +:1071F0000000336C00000000000000020000392095 +:10720000000000000000000800003AF80040000004 +:1072100000000040000039380080000000000048F5 +:1072200000003A38004000000000000800003A4822 +:10723000004000000000001800003370002800002B +:107240000000002800003C200008000000000001B1 +:1072500000003C21000800000000000100003C226A +:1072600000080000000000010000200800100000DD +:1072700000000010000020000000000000000008D6 +:10728000800000000000000000000000000000007E +:1072900000000000000000000000000000000000EE +:1072A00000000000000000000000000000000000DE +:1072B00000000000000000000000000000000000CE +:1072C00000000000000000000000000000000000BE +:1072D00000000000000000000000000000000000AE +:1072E000000000000000000000000000000000009E +:1072F000000000000000000000000000000000008E +:10730000000000000000000000000000000000007D +:10731000000000000000000000000000000000006D +:10732000000000000000000000000000000000005D +:10733000000000000000000000000000000000004D +:10734000800000000000000000000000800000003D +:1073500000000000000000008000000000000000AD +:10736000000000008000000000000000000000009D +:10737000800000000000000000000000800000000D +:10738000000000000000000080000000000000007D +:10739000000000008000000000000000000000006D +:1073A00080000000000000000000000080000000DD +:1073B000000000000000000080000000000000004D +:1073C000000000008000000000000000000000003D +:1073D00000000000000000000000000000000000AD +:1073E000000000000000000000000000000000009D +:1073F000000000000000000000000000000000008D +:1074000000000000000000000000000080000000FC +:1074100000000000000000008000000000000000EC +:1074200000000000800000000000000000000000DC +:1074300000000000000000000000000080000000CC +:1074400000000000000000008000000000000000BC +:1074500000000000800000000000000000000000AC +:10746000000000000000000000000000000000001C +:10747000000000000000000000000000000000000C +:1074800000000000000000000000000000000000FC +:1074900000000000000000000000000000000000EC +:1074A000000000000000000080000000000000005C +:1074B00000000000000000000000000000000000CC +:1074C000000019C8000000000000000800002008AB +:1074D000001000000000001000002000000000006C +:1074E0000000000880000000000000000000000014 +:1074F000800000000000000000000000000000000C +:10750000000000000000000000000000000000007B +:1075100000000000000048700008000000000001AA +:1075200000004871000800000000000100004872DF +:10753000000800000000000100004040003800008A +:107540000000003880000000000000000000000083 +:10755000800000000000000000000000800000002B +:10756000000000000000000080000000000000009B +:10757000000000008000000000000000000000008B +:1075800080000000000000000000000080000000FB +:10759000000000000000000080000000000000006B +:1075A000000000008000000000000000000000005B +:1075B00080000000000000000000000080000000CB +:1075C00000000000000000000000000000000000BB +:1075D00000000000000000000000000000000000AB +:1075E000000000000000000000000000000000009B +:1075F000000000000000000000000000000000008B +:1076000000000000800000000000000000000000FA +:1076100080000000000000000000000000000000EA +:1076200000000000000000008000000000000000DA +:1076300000000000800000000000000000000000CA +:10764000800000000000000000000000800000003A +:1076500000000000000000008000000000000000AA +:10766000000000008000000000000000000000009A +:107670000000400000400000000000400000480002 +:1076800000400000000000400000482E00400000C4 +:10769000000000010000480000400002000000015E +:1076A000000048010040000200000000000030001F +:1076B00000400000000000408000000000000000CA +:1076C000000000000000300000080040000000043E +:1076D00000003004000800400000000400003B806F +:1076E000002800000000002800003BD0001000002F +:1076F0000000001000003BDA001000000000000154 +:107700000000380000800000000000800000380009 +:107710000008008000000002000039000040000066 +:1077200000000040000020080010000000000010D1 +:107730000000200000000000000000080000519838 +:10774000000800000000000100005199000800003E +:10775000000000010000519A000800000000000134 +:10776000000039800010000400000004000051A84F +:107770000030001800000010000051B00030001868 +:107780000000000280000000000000000000000077 +:1077900080000000000000000000000080000000E9 +:1077A0000000000000000000800000000000000059 +:1077B0000000000080000000000000000000000049 +:1077C00080000000000000000000000080000000B9 +:1077D00000000000000000000000000000000000A9 +:1077E0000000000000000000000000000000000099 +:1077F0000000000000000000000000000000000089 +:1078000000000000000000008000000000000000F8 +:1078100000000000800000000000000000000000E8 +:1078200000000000000000000000000080000000D8 +:1078300000000000000000008000000000000000C8 +:1078400000000000800000000000000000000000B8 +:107850008000000000000000000000008000000028 +:107860000000000000000000000023E8008000008D +:107870000000008000000001000000000000000087 +:107880000000200800100000000000100000200090 +:10789000000000000000000800002E70000800003A +:1078A0000000000100002E7100080000000000012F +:1078B00000002E720008000000000001000024E813 +:1078C000003800000000003800002DD00008000043 +:1078D0000000000880000000000000000000000020 +:1078E0008000000000000000000000008000000098 +:1078F0000000000000000000800000000000000008 +:1079000000000000800000000000000000000000F7 +:1079100080000000000000000000000000000000E7 +:107920000000000000000000000000000000000057 +:107930000000000000000000000000000000000047 +:1079400000000000000000000000000080000000B7 +:1079500000000000000000008000000000000000A7 +:107960000000000000000000000000000000000017 +:107970008000000000000000000000008000000007 +:107980000000000000000000800000000000000077 +:107990000000000080000000000000000000000067 +:1079A0008000000000000000000000000000250032 +:1079B0000040000000000008000025080040000012 +:1079C0000000002080000000000000000000000017 +:1079D00080000000000000000000000080000000A7 +:1079E0000000000000000000800000000000000017 +:1079F0000000000080000000000000000000000007 +:107A0000000030000000000000001000000050A145 +:107A10000000000000000001000050B8000000005D +:107A200000000002000050C800900008000000089C +:107A3000800000000000000000000000000029603D +:107A4000000800000000000100002961000800009B +:107A5000000000010000297000080004000000027E +:107A600000002978000800040000000480000000E5 +:107A7000000000000000000000002FB0000800001F +:107A80000000000400002FB4000800000000000403 +:107A900000002FC0000000000000000800002FC8F8 +:107AA000000000000000000800003000000000009E +:107AB0000000001000005040000100010000000123 +:107AC0000000500000000000000000200000080836 +:107AD00000100000000000040000080C001000006E +:107AE00000000001000008B70000000000000001D5 +:107AF000000008B6000000000000000100001000B7 +:107B0000004000200000000400001004004000209D +:107B100000000004000010080040002000000002E7 +:107B20000000100A00400020000000020000100CBD +:107B300000400020000000010000100D0040002067 +:107B4000000000010000100E0040002000000001B5 +:107B5000000010100040002000000004000010147D +:107B60000040002000000004000010180040002029 +:107B7000000000040000101C004000200000000471 +:107B80000000300001000080000800040000300404 +:107B900001000080000800040000000A000000004E +:107BA00000000000000030680100008000000001BB +:107BB0000000306901000080000000010000306C0E +:107BC00001000080000000020000306E0100008013 +:107BD000000000020000307001000080000000047E +:107BE00000003074010000800000000400003066D6 +:107BF00001000080000000020000306401000080ED +:107C00000000000100003060010000800000000260 +:107C100000003062010000800000000200003050CF +:107C200001000080000000040000305401000080CA +:107C30000000000400003058010000800000000433 +:107C40000000305C01000080000000040000307C77 +:107C500001000080000000010000307D0100008074 +:107C60000000000100001C180010000000000004CB +:107C700000001C30001000000000000400001C3850 +:107C80000010000000000004800000000000000060 +:107C90000000000080000000000000000000000064 +:107CA00080000000000000000000000080000000D4 +:107CB000000000000000000000004C100008000060 +:107CC0000000000200004C1200080000000000024A +:107CD00000004C14000800000000000200004C16D8 +:107CE000000800000000000200004C200008000016 +:107CF0000000000800004C00000800000000000226 +:107D000000004C02000800000000000100004C04CC +:107D1000000800000000000200004C3000080000D5 +:107D20000000000800004C400008000000000004B3 +:107D300000004C44000800000000000100004C500E +:107D4000000800000000000200004C540008000081 +:107D50000000000200004C52000800000000000279 +:107D600000004C6000080000000000040000140047 +:107D700000080000000000020000140200080000DB +:107D800000000001000014040008000000000002D0 +:107D9000000014100008000000000002000014148D +:107DA0000008000000000002000014160008000097 +:107DB00000000002000019B80008000000000008E0 +:107DC000000014200008000000000002000014243D +:107DD0000008000000000002000019C800080000B0 +:107DE0000000000800002C10000800000000000146 +:107DF00000002C11000800000000000100002C12FF +:107E0000000800000000000100002C130008000022 +:107E10000000000100002C0000080000000000022B +:107E200000002C02000800000000000100002C04EB +:107E3000000800000000000200002C3000080000D4 +:107E40000000000200002C320008000000000002C8 +:107E500000002C34000800000000000200002C206C +:107E6000000800000000000100002C2100080000B4 +:107E70000000000100002C220008000000000001AA +:107E800000002C23000800000000000100002C244A +:107E9000000800000000000100002C250008000080 +:107EA0000000000100002C26000800000000000176 +:107EB000000014800008000000000002000014828E +:107EC0000008000000000001000014840008000009 +:107ED000000000020000149200C000180000000220 +:107EE0000000149000C00018000000020000149C64 +:107EF00000C00018000000080000149400C0001822 +:107F000000000008000014A700C0001800000001D5 +:107F1000000014A400C0001800000002000014A615 +:107F200000C000180000000100001610000800004A +:107F300000000008000016200008000000000008F3 +:107F4000000016300008000000000008800000005B +:107F500000000000000000008000000000000000A1 +:107F60000000000080000000000000000000000091 +:107F70008000000000000000000000008000000001 +:107F80000000000000000000800000000000000071 +:107F90000000000080000000000000000000000061 +:107FA00080000000000000000000000080000000D1 +:107FB0000000000000000000800000000000000041 +:107FC0000000000080000000000000000000000031 +:107FD00080000000000000000000000080000000A1 +:107FE0000000000000000000800000000000000011 +:107FF0000000000080000000000000000000000001 +:108000008000000000000000000000008000000070 +:1080100000000000000000008000000000000000E0 +:1080200000000000800000000000000000000000D0 +:108030008000000000000000000000008000000040 +:1080400000000000000000008000000000000000B0 +:1080500000000000800000000000000000000000A0 +:108060008000000000000000000000008000000010 +:108070000000000000000000800000000000000080 +:108080000000000080000000000000000000000070 +:1080900080000000000000000000000080000000E0 +:1080A0000000000000000000800000000000000050 +:1080B0000000000080000000000000000000000040 +:1080C00080000000000000000000000080000000B0 +:1080D0000000000000000000800000000000000020 +:1080E0000000000080000000000000000000000010 +:1080F0008000000000000000000000008000000080 +:1081000000000000000000008000000000000000EF +:1081100000000000800000000000000000000000DF +:10812000800000000000000000000000800000004F +:1081300000000000000000008000000000000000BF +:1081400000000000800000000000000000000000AF +:10815000800000000000000000000000800000001F +:10816000000000000000000080000000000000008F +:10817000000000008000000000000000000000007F +:1081800080000000000000000000000080000000EF +:10819000000000000000000080000000000000005F +:1081A000000000008000000000000000000000004F +:1081B00080000000000000000000000080000000BF +:1081C000000000000000000080000000000000002F +:1081D000000000008000000000000000000000001F +:1081E000800000000000000000000000800000008F +:1081F00000000000000000008000000000000000FF +:10820000000000000000000000000000000000006E +:1082100080000000000000000000000000000000DE +:08822000070A33000000000012 +:00000001FF --- linux-raspi2-4.2.0.orig/firmware/bnx2x/bnx2x-e1h-7.10.51.0.fw.ihex +++ linux-raspi2-4.2.0/firmware/bnx2x/bnx2x-e1h-7.10.51.0.fw.ihex @@ -0,0 +1,10817 @@ +:10000000000021E800000068000005D80000225828 +:10001000000036EC000028380000007000005F2867 +:100020000000865800005FA00000009C0000E60071 +:1000300000009EF40000E6A0000000880001859802 +:1000400000004350000186280000008C0001C98098 +:100050000000C7A80001CA100000120C000291C0E5 +:10006000000000040002A3D0020600DC0000000132 +:100070000306100002000000010600D80000000086 +:100080000306020000030200020600DC000000007C +:10009000010600B800000000010600C800000000D2 +:1000A0000206016C00000000010600BC0000000018 +:1000B000010600CC000000000206017000000000F4 +:1000C000020D004400000032030D004C0004020346 +:1000D000040D005C00000004030D008C00110207F9 +:1000E000020D015C00000001030D01640002021812 +:1000F000020D020400000001030D020C0003021AAD +:10010000030D02200002021D040D028000000012F7 +:10011000030D03000018021F040D03600000000C13 +:10012000040D400000000A00030D0004000F023718 +:10013000020D01140000000D020D01180000002D39 +:10014000020D01140000001D020D01180000003D09 +:10015000020D01140000004D020D01180000006D99 +:10016000020D01140000005D020D01180000007D69 +:10017000031010000003024602101050000000019E +:10018000071011000010024908101140000000087B +:100190000710116000100259081011A0000000188B +:1001A000071018000200026904104C000000010052 +:1001B00002104028000000100310404000020469B3 +:1001C0000210405800280000021040840084924A27 +:1001D0000210405800000000030C20080003046BCC +:1001E000030C201C0004046E030C20380011047260 +:1001F000040C207C0000004F030C21B80011048384 +:10020000040C21FC0000000F030C223800040494AD +:10021000010C224800000000010C224C00000000EC +:10022000010C225000000000010C225400000000CC +:10023000010C225800000000010C225C00000000AC +:10024000010C226000000000010C2264000000008C +:10025000010C226800000000010C226C000000006C +:10026000010C227000000000010C2274000000004C +:10027000010C227800000000010C227C000000002C +:100280000A00000100000001020C2000000003E849 +:100290000A00000100000002020C20000000000A19 +:1002A0000A00000100000004020C20000000000110 +:1002B0000520040000860000062007800010049836 +:1002C000042200000000400004232400000000403D +:1002D000032212500010049A0422B14000000020B2 +:1002E0000422C800000000060322C818000404AA63 +:1002F0000422C8280000000C0322C858000404AEE1 +:100300000422C8680000000C0322C898000404B24C +:100310000422C8A80000000C0322C8D8000404B6B8 +:100320000422C8E80000000C0322C918000404BA23 +:100330000422C9280000000C0322C958000404BE8E +:100340000422C9680000000C0322C998000404C2FA +:100350000422C9A80000000C0322C9D8000404C666 +:100360000422C9E80000000C0322CA18000404CAD1 +:100370000422CA280000000C0322CA58000404CE3C +:100380000422CA680000000C0322CA98000404D2A8 +:100390000422CAA80000000C0322CAD8000404D614 +:1003A0000422CAE80000000C0322CB18000404DA7F +:1003B0000422CB280000000C0322CB58000404DEEA +:1003C0000422CB680000000C0322CB98000404E256 +:1003D0000422CBA80000000C0322CBD8000404E6C2 +:1003E0000422CBE80000000C0322CC18000404EA2D +:1003F0000422CC280000000C0322CC58000404EE98 +:100400000422CC680000000C0322CC98000404F203 +:100410000422CCA80000000C0322CCD8000404F66F +:100420000422CCE80000000C0322CD18000404FADA +:100430000422CD280000000C0322CD58000404FE45 +:100440000422CD680000000C0322CD9800040502B0 +:100450000422CDA80000000C0322CDD8000405061C +:100460000422CDE80000000C0322CE180004050A87 +:100470000422CE280000000C0322CE580004050EF2 +:100480000422CE680000000C0322CE98000405125E +:100490000422CEA80000000C0322CED800040516CA +:1004A0000422CEE80000000C0322CF180004051A35 +:1004B0000422CF280000000C0322CF580004051EA0 +:1004C0000422CF680000000C0322CF98000405220C +:1004D0000422CFA80000000C0322CFD80004052678 +:1004E0000422CFE800000006022380000000001074 +:1004F00002238040000000120223808000000030B0 +:10050000022380C00000000E022383800007A12088 +:10051000022383C0000001F402238BC0000000010D +:100520000A00000200000001022383000007A1204E +:1005300002238340000001F40A00000200000002D0 +:10054000022383000000138802238340000000057B +:100550000A000002000000040223830000000138AA +:10056000022383400000000005240000331800002F +:100570000524800010380CC606249E606A9A052A5D +:100580000A000001000000020223148000000000A5 +:100590000A00000100000004022314800000000093 +:1005A0000120000000000000012000040000000005 +:1005B00001200008000000000120000C00000000E5 +:1005C00001200010000000000120001400000000C5 +:1005D00003200020001A052C032000A40002054679 +:1005E000022002240000000002200234000000006B +:1005F0000220024C00000000022002E40000FFFF85 +:100600000820200000000800042211080000000259 +:1006100004221290000000060422340000000002B0 +:10062000042260400000003004228C000000001012 +:100630000422111000000002042212A8000000068B +:10064000042234080000000204226100000000308F +:1006500004228C4000000010042211180000000247 +:10066000042212C000000006042234100000000220 +:10067000042261C00000003004228C8000000010C1 +:100680000422112000000002042212D800000006FB +:1006900004223418000000020422628000000030AE +:1006A00004228CC000000010042211280000000267 +:1006B000042212F000000006042234200000000290 +:1006C000042263400000003004228D00000000106E +:1006D000042211300000000204221308000000066A +:1006E00004223428000000020422640000000030CC +:1006F00004228D4000000010042211380000000286 +:1007000004221320000000060422343000000002FE +:10071000042264C00000003004228D80000000101C +:1007200004221140000000020422133800000006D9 +:1007300004223438000000020422658000000030EA +:1007400004228DC00000001004102400000000E00E +:100750000310201C00020548021020C00000000207 +:10076000031020040002054A0217000800000002DE +:100770000217002C00000003031700380002054C8C +:10078000031700480005054E0317006000050553D8 +:100790000317007800020558021700040000000F3C +:1007A0000210800000001080041080400000000251 +:1007B000021080AC00000000021080380000001021 +:1007C00002108100000000000410812000000002DF +:1007D00002108008000002B5021080100000000026 +:1007E000021081080001FFFF041082000000004A8F +:1007F00004108140000000020210800000001A80F6 +:100800000410900000000024041091200000004A11 +:10081000041093700000004A041095C00000004AC4 +:1008200002108004000010800410804800000002C4 +:10083000021080B0000000010210803C0000001097 +:100840000210810400000000041081280000000252 +:100850000210800C000002B502108014000000009D +:100860000210810C0001FFFF041084000000004A08 +:1008700004108148000000020210800400001A8069 +:100880000410909000000024041092480000004AD8 +:10089000041094980000004A041096E80000004AF2 +:1008A0000210800000001080041080400000000250 +:1008B000021080AC0000000202108038000000101E +:1008C00002108100000000000410812000000002DE +:1008D00002108008000002B5021080100000000025 +:1008E000021081080001FFFF041082000000004A8E +:1008F00004108140000000020210800000001A80F5 +:100900000410900000000024041091200000004A10 +:10091000041093700000004A041095C00000004AC3 +:1009200002108004000010800410804800000002C3 +:10093000021080B0000000030210803C0000001094 +:100940000210810400000000041081280000000251 +:100950000210800C000002B502108014000000009C +:100960000210810C0001FFFF041084000000004A07 +:1009700004108148000000020210800400001A8068 +:100980000410909000000024041092480000004AD7 +:10099000041094980000004A041096E80000004AF1 +:1009A000021080000000108004108040000000024F +:1009B000021080AC0000000402108038000000101B +:1009C00002108100000000000410812000000002DD +:1009D00002108008000002B5021080100000000024 +:1009E000021081080001FFFF041082000000004A8D +:1009F00004108140000000020210800000001A80F4 +:100A00000410900000000024041091200000004A0F +:100A1000041093700000004A041095C00000004AC2 +:100A200002108004000010800410804800000002C2 +:100A3000021080B0000000050210803C0000001091 +:100A40000210810400000000041081280000000250 +:100A50000210800C000002B502108014000000009B +:100A60000210810C0001FFFF041084000000004A06 +:100A700004108148000000020210800400001A8067 +:100A80000410909000000024041092480000004AD6 +:100A9000041094980000004A041096E80000004AF0 +:100AA000021080000000108004108040000000024E +:100AB000021080AC00000006021080380000001018 +:100AC00002108100000000000410812000000002DC +:100AD00002108008000002B5021080100000000023 +:100AE000021081080001FFFF041082000000004A8C +:100AF00004108140000000020210800000001A80F3 +:100B00000410900000000024041091200000004A0E +:100B1000041093700000004A041095C00000004AC1 +:100B200002108004000010800410804800000002C1 +:100B3000021080B0000000070210803C000000108E +:100B4000021081040000000004108128000000024F +:100B50000210800C000002B502108014000000009A +:100B60000210810C0001FFFF041084000000004A05 +:100B700004108148000000020210800400001A8066 +:100B80000410909000000024041092480000004AD5 +:100B9000041094980000004A041096E80000004AEF +:100BA0000200A468000B01C80300A2940004055AC7 +:100BB0000A000001000000800200A5F8000000000B +:100BC0000A000001000001000200A5F80000000179 +:100BD0000200A270000000000200A27400000000E9 +:100BE0000200A270000000000200A27400000000D9 +:100BF0000200A270000000000200A27400000000C9 +:100C00000200A270000000000200A27400000000B8 +:100C1000030100B40002055E020100DC00000001D7 +:100C200003010100000205600201007C00300000A9 +:100C300002010084000000280201008C0000000076 +:100C4000020101300000000402010328000000003E +:100C50000201055400000030020160580000FFFF4F +:100C600002016070000000070201608000000001C6 +:100C7000020100C400000001020100CC00000001DC +:100C8000020100F800000001020100F00000000174 +:100C900002010080003000000201008800000028EE +:100CA0000201009000000000020101340000000475 +:100CB0000201032C00000000020105640000003066 +:100CC0000201605C0000FFFF020160740000000789 +:100CD0000201608400000001020100C80000000160 +:100CE000020100D000000001020100FC0000000130 +:100CF000020100F4000000010401013800000011AD +:100D00000401017C00000011040101380000001101 +:100D10000401017C000000110401013800000011F1 +:100D20000401017C000000110401013800000011E1 +:100D30000401017C00000011021400000000000109 +:100D40000214000C000000010314004000020562C0 +:100D50000214000C0000000002140000000000005B +:100D60000214006C000000000214000400000001E6 +:100D70000214003000000001021400040000000012 +:100D80000214005C000000000214000800000001D2 +:100D900002140034000000010214000800000000EA +:100DA0000214006000000000030400040012056447 +:100DB00002040054000000430204005C000000062E +:100DC00002040070000000040304007800040576AB +:100DD00004040088000000050304009C0003057A59 +:100DE000040400A800000004030400B80005057D09 +:100DF000040400CC00000004030400DC00040582AD +:100E0000040400EC000000040104012400000000C0 +:100E100001040128000000000104012C0000000072 +:100E20000104013000000000020401340000000F42 +:100E3000020401D000008906021205B00000000182 +:100E400003120490002205860312066C000205A816 +:100E500002120388000000640212039000000008E0 +:100E60000312039C000305AA031203BC000305AD93 +:100E7000021203D0000000000212036C0000000107 +:100E8000021203680000003F031201BC003C05B0E1 +:100E9000031202B0000205EC03120324000205EE67 +:100EA000021205B400000001021201B000000001AE +:100EB00007103800000505F007103820000505F57B +:100EC00007103C00000505FA03168030000805FFF6 +:100ED0000216805400000002031680600005060719 +:100EE0000416807400000007031680900002060CB0 +:100EF0000316809C0005060E041680B00000000753 +:100F0000031680CC00080613021680F000000007CC +:100F1000041680F40000000C031681240004061B54 +:100F2000041681340000000C031681640032061F91 +:100F30000316823400070651041682500000000494 +:100F4000031682600002065804168268000000083A +:100F5000031682880008065A041682A80000000AB8 +:100F600002168804000000040316880C00100662B4 +:100F70000316E000001006720416E40C0000000CDA +:100F80000316E43C000406820416E44C0000000C46 +:100F90000316E47C002E06860416E53400000004E7 +:100FA0000316E544000206B40416E54C00000008F0 +:100FB0000316E56C000606B60316E6BC000806BC80 +:100FC000021680EC000000FF03040408001406C4AD +:100FD000020404CC0000000103050044000206D80E +:100FE00003050050000406DA040500600000000458 +:100FF00003050090001306DE020501140000000145 +:101000000305011C000206F10205020400000001B4 +:101010000305020C000206F30305021C000306F59B +:10102000040502400000000A03050280002006F8C3 +:101030000405400000000D0003050004001007181F +:10104000020500E00000000E020500E40000002E92 +:10105000020500E00000001E020500E40000003E62 +:10106000020500E00000004E020500E40000006EF2 +:10107000020500E00000005E020500E40000007EC2 +:101080000416402400000002031640300003072825 +:101090000216404400000020021640700000001CB0 +:1010A0000216420800000001021642100000000172 +:1010B0000216422000000001021642280000000132 +:1010C0000216423000000001021642380000000102 +:1010D00002164260000000020A0000010000000148 +:1010E0000216401C0003D0900A000001000000021C +:1010F0000216401C000009C40A00000100000004A0 +:101100000216401C0000009C021640000000000176 +:10111000021640D800000001031640080003072B08 +:101120000216424000000000021642480000000083 +:101130000816427000000002021642500000000033 +:10114000021642580000000008164280000000020B +:10115000030420080004072E0304201C00040732A7 +:1011600002042038000000200404203C0000001F7E +:10117000020420B800000001040420BC0000005F4D +:10118000030422380004073601042248000000004E +:101190000104224C00000000010422500000000065 +:1011A0000104225400000000010422580000000045 +:1011B0000104225C00000000010422600000000025 +:1011C0000104226400000000010422680000000005 +:1011D0000104226C000000000104227000000000E5 +:1011E00001042274000000000104227800000000C5 +:1011F0000104227C000000000A0000010000000140 +:1012000002042000000003E80A00000100000002C0 +:10121000020420000000000A0A000001000000048F +:10122000020420000000000105180400006F000007 +:10123000061807600014073A041A00000000400076 +:10124000041B240000000040031A1EC80002073CD3 +:10125000031A40400004073E041A405000000006F4 +:10126000031A406800020742031A52C000020744F2 +:10127000031A800003F90746041A8FE400000007F0 +:10128000031AA08000100B3F021B800000000034F6 +:10129000021B804000000018021B80800000000C30 +:1012A000021B80C000000020021B83800007A120D9 +:1012B000021B83C0000001F4021B8BC00000000170 +:1012C0000A00000200000001021B83000007A120A9 +:1012D000021B8340000001F40A000002000000022B +:1012E000021B830000001388021B834000000005DE +:1012F0000A00000200000004021B83000000013805 +:10130000021B834000000000051C00002FA8000005 +:10131000051C800033A30BEA051D0000230918D328 +:10132000061D514055D80B4F0A0000010000000275 +:10133000021B1480000000000A00000100000004ED +:10134000021B1480000000000118000000000000D3 +:10135000011800040000000001180008000000004F +:101360000118000C0000000001180010000000002F +:10137000011800140000000003180020001A0B518F +:10138000031800A400020B6B0218022400000000E6 +:1013900002180234000000000218024C0000000095 +:1013A000021802E4000000FF08181000000004000A +:1013B000041A300000000010041A308000000010F1 +:1013C000041A310000000010041A318000000010DF +:1013D000041A330000000012041A339000000012B7 +:1013E000041A342000000070041A90000000000667 +:1013F000041A304000000010041A30C00000001031 +:10140000041A314000000010041A31C0000000101E +:10141000041A334800000012041A33D800000012E6 +:10142000041A35E000000070041A9018000000064D +:10143000031A400000020B6D041A50000000000265 +:10144000041A508000000012031A614000020B6F62 +:10145000041A903000000002041AA00000000002EC +:10146000031A400800020B71041A50100000000219 +:10147000041A50C800000012031A614800020B73DE +:10148000041A903800000002041AA00800000002AC +:10149000031A401000020B75041A502000000002CD +:1014A000041A511000000012031A615000020B7759 +:1014B000041A904000000002041AA010000000026C +:1014C000031A401800020B79041A50300000000281 +:1014D000041A515800000012031A615800020B7BD5 +:1014E000041A904800000002041AA018000000022C +:1014F000031A402000020B7D041A50400000000235 +:10150000041A51A000000012031A616000020B7F50 +:10151000041A905000000002041AA02000000002EB +:10152000031A402800020B81041A505000000002E8 +:10153000041A51E800000012031A616800020B83CC +:10154000041A905800000002041AA02800000002AB +:10155000031A403000020B85041A5060000000029C +:10156000041A523000000012031A617000020B8747 +:10157000041A906000000002041AA030000000026B +:10158000031A403800020B89041A50700000000250 +:10159000041A527800000012031A617800020B8BC3 +:1015A000041A906800000002041AA038000000022B +:1015B000020E004C00000032030E005400040B8D9C +:1015C000040E006400000004030E009400130B914D +:1015D000020E014400000001030E014C00020BA4A6 +:1015E000020E020400000001030E020C00020BA612 +:1015F000030E021C00040BA8030E0280001B0BACA0 +:10160000040E02EC00000017040E20000000080089 +:10161000030E000400110BC7020E01100000000FA2 +:10162000020E01140000002F020E01100000001F26 +:10163000020E01140000003F020E01100000004FD6 +:10164000020E01140000006F020E01100000005F86 +:10165000020E01140000007F020C100000000028A0 +:10166000030C400800040BD8030C401C00040BDCE6 +:10167000030C403800050BE0040C404C0000005BFC +:10168000030C41B800050BE5040C41CC0000001B25 +:10169000030C423800040BEA010C42480000000031 +:1016A000010C424C00000000010C42500000000000 +:1016B000010C425400000000010C425800000000E0 +:1016C000010C425C00000000010C426000000000C0 +:1016D000010C426400000000010C426800000000A0 +:1016E000010C426C00000000010C42700000000080 +:1016F000010C427400000000010C42780000000060 +:10170000010C427C00000000010C4280000000003F +:101710000A00000100000001020C4000000003E884 +:101720000A00000100000002020C40000000000A54 +:101730000A00000100000004020C4000000000014B +:1017400005300400009C00000630076800130BEE13 +:101750000432000000004000043324000000004078 +:1017600004323E800000001003323EC000020BF045 +:10177000033274C000080BF20332850000100BFA2C +:10178000023380000000001A023380400000004E47 +:101790000233808000000010023380C0000000206F +:1017A000023383800007A120023383C0000001F4CC +:1017B00002338BC0000000010A000002000000019B +:1017C000023383000007A12002338340000001F4AC +:1017D0000A000002000000020233830000001388A8 +:1017E00002338340000000050A00000200000004EC +:1017F0000233830000000138023383400000000000 +:101800000534000036BD00000534800031C90DB03C +:101810000535000036671A2306357E4050380C0A1D +:101820000A000001000000020233148000000000E2 +:101830000A000001000000040233148000000000D0 +:101840000130000000000000013000040000000032 +:1018500001300008000000000130000C0000000012 +:1018600001300010000000000130001400000000F2 +:1018700003300020001A0C0C033000A400020C26D8 +:101880000230022400000000023002340000000098 +:101890000230024C00000000023002E40000FFFFB2 +:1018A000083020000000080004321000000001C0D1 +:1018B00004321E000000003804323000000001C075 +:1018C00004325000000000200432510000000020CB +:1018D00004325200000000200432530000000020B7 +:1018E00004325400000000200432550000000020A3 +:1018F000043256000000002004325700000000208F +:10190000043258000000002004325900000000207A +:1019100004325A000000002004325B000000002066 +:1019200004325C000000002004325D000000002052 +:1019300004325E000000002004325F00000000203E +:1019400004328450000000020332846000040C283A +:1019500004321700000001C004321EE0000000380D +:1019600004323700000001C0043250800000002023 +:101970000432518000000020043252800000002018 +:101980000432538000000020043254800000002004 +:1019900004325580000000200432568000000020F0 +:1019A00004325780000000200432588000000020DC +:1019B000043259800000002004325A8000000020C8 +:1019C00004325B800000002004325C8000000020B4 +:1019D00004325D800000002004325E8000000020A0 +:1019E00004325F80000000200432845800000002AE +:1019F0000332847000040C2C0432401000000002FA +:101A00000432841000000002043240200000000272 +:101A1000043284180000000204324030000000024A +:101A20000432842000000002043240400000000222 +:101A300004328428000000020432405000000002FA +:101A400004328430000000020432406000000002D2 +:101A500004328438000000020432407000000002AA +:101A60000432844000000002043240800000000282 +:101A700004328448000000020202005800000032D4 +:101A80000302006000040C30040200700000000437 +:101A9000030200A0000E0C34030200DC00070C421D +:101AA000020200FC0000000602020120000000000B +:101AB0000202013400000002020201B00000000135 +:101AC0000202020C000000010302021400020C4991 +:101AD00002020404000000010302040C00020C4B8B +:101AE0000302041C00040C4D0302048000200C516E +:101AF0000402050000000012040280000000200023 +:101B00000302000400140C7102020108000000C866 +:101B10000202011800000002020201C400000000DD +:101B2000020201CC00000000020201D40000000209 +:101B3000020201DC00000002020201E4000000FFDA +:101B4000020201EC000000FF0202010C000000C8CC +:101B50000202011C00000002020201C80000000095 +:101B6000020201D000000000020201D800000002C1 +:101B7000020201E000000002020201E8000000FF92 +:101B8000020201F0000000FF02020108000000C88C +:101B90000202011800000002020201C4000000005D +:101BA000020201CC00000000020201D40000000289 +:101BB000020201DC00000002020201E4000000FF5A +:101BC000020201EC000000FF0202010C000000C84C +:101BD0000202011C00000002020201C80000000015 +:101BE000020201D000000000020201D80000000241 +:101BF000020201E000000002020201E8000000FF12 +:101C0000020201F0000000FF02020108000000C80B +:101C10000202011800000002020201C400000000DC +:101C2000020201CC00000000020201D40000000208 +:101C3000020201DC00000002020201E4000000FFD9 +:101C4000020201EC000000FF0202010C000000C8CB +:101C50000202011C00000002020201C80000000094 +:101C6000020201D000000000020201D800000002C0 +:101C7000020201E000000002020201E8000000FF91 +:101C8000020201F0000000FF02020108000000C88B +:101C90000202011800000002020201C4000000005C +:101CA000020201CC00000000020201D40000000288 +:101CB000020201DC00000002020201E4000000FF59 +:101CC000020201EC000000FF0202010C000000C84B +:101CD0000202011C00000002020201C80000000014 +:101CE000020201D000000000020201D80000000240 +:101CF000020201E000000002020201E8000000FF11 +:101D0000020201F0000000FF02161000000000288F +:101D10000316600800030C850316601C00040C8881 +:101D200003166038000D0C8C0416606C0000001364 +:101D3000031660B800020C99041660C00000003E53 +:101D4000021661B800000001041661BC0000001F0B +:101D50000316623800040C9B011662480000000064 +:101D60000116624C000000000116625000000000E5 +:101D700001166254000000000116625800000000C5 +:101D80000116625C000000000116626000000000A5 +:101D90000116626400000000011662680000000085 +:101DA0000116626C00000000011662700000000065 +:101DB0000116627400000000011662780000000045 +:101DC0000116627C000000000A0000010000000112 +:101DD00002166000000003E80A0000010000000293 +:101DE000021660000000000A0A0000010000000462 +:101DF00002166000000000010528040000890000B0 +:101E00000628076800130C9F042A00000000400009 +:101E1000042B240000000040032A300000020CA123 +:101E2000032A400000100CA3032A840800080CB306 +:101E3000032A93C800040CBB032A96F000020CBFCF +:101E4000042A96F800000006032A994000020CC1FB +:101E5000022A9A2800000001032AC0C000100CC307 +:101E6000022B800000000000022B804000000018C0 +:101E7000022B80800000000C022B80C00000006656 +:101E8000022B83800007A120022B83C0000001F4F5 +:101E9000022B8BC0000000010A00000200000001BC +:101EA000022B83000007A120022B8340000001F4D5 +:101EB0000A00000200000002022B830000001388C9 +:101EC000022B8340000000050A000002000000040D +:101ED000022B830000000138022B83400000000029 +:101EE0000A00000100000020022A9A2C00000000D5 +:101EF000052C000037880000052C800039F70DE222 +:101F0000052D00003B251C60052D80001AFD2B2AA5 +:101F1000062DB7C049080CD30A00000100000002DA +:101F2000022B1480000000000A00000100000004E1 +:101F3000022B1480000000000128000000000000B7 +:101F40000128000400000000012800080000000033 +:101F50000128000C00000000012800100000000013 +:101F6000012800140000000003280020001A0CD5EE +:101F7000032800A400020CEF022802240000000045 +:101F800002280234000000000228024C0000000079 +:101F9000022802E40000FFFF0828200000000800DB +:101FA000042A500000000002042A50100000000221 +:101FB000042A502000000002042A503000000002D1 +:101FC000042A93E000000020042A94E00000000EA0 +:101FD000032A951800020CF1042A95600000000EF7 +:101FE000032A959800020CF3042A95E00000000EE5 +:101FF000032A961800020CF5042A96600000000ED1 +:10200000032A969800020CF7032A971000020CF995 +:10201000042A500800000002042A501800000002A0 +:10202000042A502800000002042A50380000000250 +:10203000042A946000000020042A95200000000E6D +:10204000032A955800020CFB042A95A00000000EFC +:10205000032A95D800020CFD042A96200000000EE9 +:10206000032A965800020CFF042A96A00000000ED6 +:10207000032A96D800020D01032A971800020D03C7 +:10208000042A50480000000E032A972000100D0576 +:10209000042A995000000002042AC0000000000237 +:1020A000042A50800000000E032A976000100D15CE +:1020B000042A995800000002042AC0080000000207 +:1020C000042A50B80000000E032A97A000100D2526 +:1020D000042A996000000002042AC01000000002D7 +:1020E000042A50F00000000E032A97E000100D357E +:1020F000042A996800000002042AC01800000002A7 +:10210000042A51280000000E032A982000100D45D3 +:10211000042A997000000002042AC0200000000276 +:10212000042A51600000000E032A986000100D552B +:10213000042A997800000002042AC0280000000246 +:10214000042A51980000000E032A98A000100D6583 +:10215000042A998000000002042AC0300000000216 +:10216000042A51D00000000E032A98E000100D75DB +:10217000042A998800000002042AC03800000002E6 +:102180000400A0000000000C0400A05000000002A9 +:102190000300A0EC00080D850300A18C00080D8D44 +:1021A0000200A45C00000C000200A61C000000035A +:1021B0000300A06C00060D950400A084000000053B +:1021C0000200A0980FE000000400A09C000000079F +:1021D0000300A0B8000D0D9B0400A22C0000000419 +:1021E0000300A10C00060DA80400A12400000005B6 +:1021F0000200A1380FE000000400A13C000000072D +:102200000300A158000D0DAE0400A23C0000000424 +:102210000200A030000000000200A0340000000016 +:102220000200A038000000000200A03C00000000F6 +:102230000200A040000000000200A04400000000D6 +:102240000200A048000000000200A04C00000000B6 +:10225000000000000000000000000000000000007E +:10226000000000000000000000000000000000006E +:10227000000000000000000000000000000000005E +:102280000000000000000005000500080008000B29 +:10229000000000000000000000000000000000003E +:1022A000000000000000000000000000000000002E +:1022B000000B001900000000000000000019001AC7 +:1022C000001A001B001B001C001C001D001D001E2E +:1022D000001E001F001F00200020002100210028F8 +:1022E00000000000000000000000000000000000EE +:1022F00000000000000000000000000000000000DE +:1023000000000000000000000028002E0000000077 +:1023100000000000000000000000000000000000BD +:1023200000000000000000000000000000000000AD +:1023300000000000002E0049000000000000000026 +:10234000000000000000000000000000000000008D +:10235000000000000000000000000000000000007D +:10236000004900B4000000000000000000B400B903 +:1023700000B900BE00BE00C300C300C800C800CD45 +:1023800000CD00D200D200D700D700DC0000000052 +:10239000000000000000000000000000000000003D +:1023A000000000000000000000000000000000002D +:1023B000000000000000000000DC00E00000000061 +:1023C000000000000000000000000000000000000D +:1023D00000000000000000000000000000000000FD +:1023E0000000000000E000E7000000000000000026 +:1023F00000000000000000000000000000000000DD +:1024000000000000000000000000000000000000CC +:1024100000000000000000000000000000E700F7DE +:1024200000F70107010701170117012701270137ED +:1024300001370147014701570157016700000000BC +:10244000000000000000000000000000000000008C +:10245000000000000000000000000000000000007C +:1024600000000000000000000167016D0000000096 +:1024700000000000016D016E016E016F016F0170BF +:1024800001700171017101720172017301730174B4 +:10249000017401750175017801780185018501924A +:1024A0000192019301930194019401950195019684 +:1024B0000196019701970198019801990199019A54 +:1024C000019A01A001A001A401A401A8000000003C +:1024D00000000000000000000000000000000000FC +:1024E00000000000000000000000000000000000EC +:1024F00000000000000000000000000000000000DC +:1025000000000000000000000000000000000000CB +:10251000000000000000000001A801BA0000000057 +:1025200000000000000000000000000000000000AB +:10253000000000000000000000000000000000009B +:102540000000000001BA01C9000000000000000006 +:10255000000000000000000000000000000000007B +:10256000000000000000000000000000000000006B +:1025700001C901CC000000000000000000000000C4 +:10258000000000000000000000000000000000004B +:1025900000000000000000000000000001CC01EC81 +:1025A000000000000000000000000000000000002B +:1025B000000000000000000000000000000000001B +:1025C000000000000000000001EC01EE000000002F +:1025D00000000000000000000000000000000000FB +:1025E00000000000000000000000000000000000EB +:1025F0000000000001EE01FB0000000000000000F0 +:1026000001FB01FC01FC01FD01FD01FE01FE01FFDA +:1026100001FF0200020002010201020202020203A3 +:10262000020302170217021A021A021D000000001C +:10263000000000000000000000000000000000009A +:10264000000000000000000000000000021D023831 +:10265000000000000000000000000000000000007A +:10266000000000000000000000000000000000006A +:1026700000000000000000000238026902690271D7 +:10268000027102790279027F027F02850285028B44 +:10269000028B0291029102970297029D029D02A372 +:1026A00002A302A902A902B6000000000000000077 +:1026B00002B602B702B702B802B802B902B902BA4A +:1026C00002BA02BB02BB02BC02BC02BD02BD02BE1A +:1026D00002BE02BF00000000000000000000000079 +:1026E00000000000000000000000000000000000EA +:1026F00000000000000000000000000002BF02DB3C +:1027000000000000000000000000000000000000C9 +:1027100000000000000000000000000000000000B9 +:10272000000000000000000002DB03080308031D96 +:10273000031D0332033203340334033603360338F4 +:102740000338033A033A033C033C033E033E034091 +:102750000340034203420354000000000000000055 +:102760000354035C035C03640364036C036C037431 +:102770000374037C037C03840384038C038C039421 +:10278000039403950000000000000000000000001A +:102790000000000000000000000000000000000039 +:1027A000000000000000000000000000039503B2DC +:1027B0000000000000000000000000000000000019 +:1027C0000000000000000000000000000000000009 +:1027D000000000000000000003B203E703E703F578 +:1027E00003F50403040304070407040B040B040F9C +:1027F000040F0413041304170417041B041B041F01 +:10280000041F0423042304290429042F042F04355E +:1028100004350436043604370437043804380439E0 +:102820000439043A043A043B043B043C043C043DB0 +:102830000000000000000000000020000000400038 +:1028400000006000000080000000A0000000C00048 +:102850000000E00000010000000120000001400035 +:1028600000016000000180000001A0000001C00024 +:102870000001E00000020000000220000002400011 +:1028800000026000000280000002A0000002C00000 +:102890000002E000000300000003200000034000ED +:1028A00000036000000380000003A0000003C000DC +:1028B0000003E000000400000004200000044000C9 +:1028C00000046000000480000004A0000004C000B8 +:1028D0000004E000000500000005200000054000A5 +:1028E00000056000000580000005A0000005C00094 +:1028F0000005E00000060000000620000006400081 +:1029000000066000000680000006A0000006C0006F +:102910000006E0000007000000072000000740005C +:1029200000076000000780000007A0000007C0004B +:102930000007E00000080000000820000008400038 +:1029400000086000000880000008A0000008C00027 +:102950000008E00000090000000920000009400014 +:1029600000096000000980000009A0000009C00003 +:102970000009E000000A0000000A2000000A4000F0 +:10298000000A6000000A8000000AA000000AC000DF +:10299000000AE000000B0000000B2000000B4000CC +:1029A000000B6000000B8000000BA000000BC000BB +:1029B000000BE000000C0000000C2000000C4000A8 +:1029C000000C6000000C8000000CA000000CC00097 +:1029D000000CE000000D0000000D2000000D400084 +:1029E000000D6000000D8000000DA000000DC00073 +:1029F000000DE000000E0000000E2000000E400060 +:102A0000000E6000000E8000000EA000000EC0004E +:102A1000000EE000000F0000000F2000000F40003B +:102A2000000F6000000F8000000FA000000FC0002A +:102A3000000FE00000100000001020000010400017 +:102A400000106000001080000010A0000010C00006 +:102A50000010E000001100000011200000114000F3 +:102A600000116000001180000011A0000011C000E2 +:102A70000011E000001200000012200000124000CF +:102A800000126000001280000012A0000012C000BE +:102A90000012E000001300000013200000134000AB +:102AA00000136000001380000013A0000013C0009A +:102AB0000013E00000140000001420000014400087 +:102AC00000146000001480000014A0000014C00076 +:102AD0000014E00000150000001520000015400063 +:102AE00000156000001580000015A0000015C00052 +:102AF0000015E0000016000000162000001640003F +:102B000000166000001680000016A0000016C0002D +:102B10000016E0000017000000172000001740001A +:102B200000176000001780000017A0000017C00009 +:102B30000017E000001800000018200000184000F6 +:102B400000186000001880000018A0000018C000E5 +:102B50000018E000001900000019200000194000D2 +:102B600000196000001980000019A0000019C000C1 +:102B70000019E000001A0000001A2000001A4000AE +:102B8000001A6000001A8000001AA000001AC0009D +:102B9000001AE000001B0000001B2000001B40008A +:102BA000001B6000001B8000001BA000001BC00079 +:102BB000001BE000001C0000001C2000001C400066 +:102BC000001C6000001C8000001CA000001CC00055 +:102BD000001CE000001D0000001D2000001D400042 +:102BE000001D6000001D8000001DA000001DC00031 +:102BF000001DE000001E0000001E2000001E40001E +:102C0000001E6000001E8000001EA000001EC0000C +:102C1000001EE000001F0000001F2000001F4000F9 +:102C2000001F6000001F8000001FA000001FC000E8 +:102C3000001FE000002000000020200000204000D5 +:102C400000206000002080000020A0000020C000C4 +:102C50000020E000002100000021200000214000B1 +:102C600000216000002180000021A0000021C000A0 +:102C70000021E0000022000000222000002240008D +:102C800000226000002280000022A0000022C0007C +:102C90000022E00000230000002320000023400069 +:102CA00000236000002380000023A0000023C00058 +:102CB0000023E00000240000002420000024400045 +:102CC00000246000002480000024A0000024C00034 +:102CD0000024E00000250000002520000025400021 +:102CE00000256000002580000025A0000025C00010 +:102CF0000025E000002600000026200000264000FD +:102D000000266000002680000026A0000026C000EB +:102D10000026E000002700000027200000274000D8 +:102D200000276000002780000027A0000027C000C7 +:102D30000027E000002800000028200000284000B4 +:102D400000286000002880000028A0000028C000A3 +:102D50000028E00000290000002920000029400090 +:102D600000296000002980000029A0000029C0007F +:102D70000029E000002A0000002A2000002A40006C +:102D8000002A6000002A8000002AA000002AC0005B +:102D9000002AE000002B0000002B2000002B400048 +:102DA000002B6000002B8000002BA000002BC00037 +:102DB000002BE000002C0000002C2000002C400024 +:102DC000002C6000002C8000002CA000002CC00013 +:102DD000002CE000002D0000002D2000002D400000 +:102DE000002D6000002D8000002DA000002DC000EF +:102DF000002DE000002E0000002E2000002E4000DC +:102E0000002E6000002E8000002EA000002EC000CA +:102E1000002EE000002F0000002F2000002F4000B7 +:102E2000002F6000002F8000002FA000002FC000A6 +:102E3000002FE00000300000003020000030400093 +:102E400000306000003080000030A0000030C00082 +:102E50000030E0000031000000312000003140006F +:102E600000316000003180000031A0000031C0005E +:102E70000031E0000032000000322000003240004B +:102E800000326000003280000032A0000032C0003A +:102E90000032E00000330000003320000033400027 +:102EA00000336000003380000033A0000033C00016 +:102EB0000033E00000340000003420000034400003 +:102EC00000346000003480000034A0000034C000F2 +:102ED0000034E000003500000035200000354000DF +:102EE00000356000003580000035A0000035C000CE +:102EF0000035E000003600000036200000364000BB +:102F000000366000003680000036A0000036C000A9 +:102F10000036E00000370000003720000037400096 +:102F200000376000003780000037A0000037C00085 +:102F30000037E00000380000003820000038400072 +:102F400000386000003880000038A0000038C00061 +:102F50000038E0000039000000392000003940004E +:102F600000396000003980000039A0000039C0003D +:102F70000039E000003A0000003A2000003A40002A +:102F8000003A6000003A8000003AA000003AC00019 +:102F9000003AE000003B0000003B2000003B400006 +:102FA000003B6000003B8000003BA000003BC000F5 +:102FB000003BE000003C0000003C2000003C4000E2 +:102FC000003C6000003C8000003CA000003CC000D1 +:102FD000003CE000003D0000003D2000003D4000BE +:102FE000003D6000003D8000003DA000003DC000AD +:102FF000003DE000003E0000003E2000003E40009A +:10300000003E6000003E8000003EA000003EC00088 +:10301000003EE000003F0000003F2000003F400075 +:10302000003F6000003F8000003FA000003FC00064 +:10303000003FE000003FE00100000000000001FF51 +:10304000000002000000000100000002000000007B +:1030500000000008021500200215002008100000E2 +:103060000000003300000002000000000000000526 +:103070000000000500000000000000000000000249 +:103080000000000300000002000000010000000436 +:103090000000000200000002000000010000000229 +:1030A000000000200000004000000040000000037D +:1030B0000000001800002000000040C000006180F7 +:1030C000000082400000A3000000C3C00000E480B4 +:1030D0000001054000012600000146C00001678094 +:1030E000000188400001A9000001C9C00001EA8078 +:1030F00000020B4000022C0000024CC000026D8058 +:1031000000028E400002AF000002CFC00002F0803B +:10311000000011400000000100000001000000015B +:10312000000000010000000100000001000000019B +:10313000000000010000000100000001000000018B +:10314000000000010000000100000001000000017B +:103150000003D0000000003D00000001000D000051 +:10316000000700D000028140000B816800020220AD +:1031700000010240000F025000010340000C00005B +:10318000000800C000028140000B8168000202209C +:103190000001024000070250000202C000100000BF +:1031A0000008010000028180000B81A8000202607B +:1031B00000018280000E8298000803800000000059 +:1031C000000000000002800000090028000200B892 +:1031D000000100D8000000E8000000E8FFFFFFF356 +:1031E00001AFFFFF00000000000000000000000031 +:1031F000000000000000000000000000FFFFFFF1E1 +:1032000000EFFFFF000000000000000000000000D1 +:10321000000000000001000000000000FFFFFFF6BA +:10322000005FFFFF00000000000000000000000041 +:10323000000000000002000000000000FFFFF40694 +:103240001CBFFFFF0000000500000000000000148C +:10325000000000000004000000000000FFFFFFF27B +:10326000004FFFFF00000000000000000000000011 +:10327000000000000008000000000000FFFFFFFA4F +:10328000002FFFFF00000000000000000000000011 +:10329000000000000010000000000000FFFFFFF72A +:1032A00001EFFFFF00000000000000000000000030 +:1032B000000000000020000000000000FFFFFFF5FC +:1032C000002FFFFF000000000000000000000000D1 +:1032D000000000000040000000000000FFFFFFF3BE +:1032E000018FFFFF00000000000000000000000050 +:1032F000000000000000000000000000FFFFFFF1E0 +:10330000010FFFFF000000000000000000000000AF +:10331000000000000001000000000000FFFFFFF6B9 +:10332000005FFFFF00000000000000000000000040 +:10333000000000000002000000000000FFFFF40693 +:103340001CBFFFFF0000000500000000000000148B +:10335000000000000004000000000000FFFFFFF27A +:10336000004FFFFF00000000000000000000000010 +:10337000000000000008000000000000FFFFFFFA4E +:10338000002FFFFF00000000000000000000000010 +:10339000000000000010000000000000FFFFFFF729 +:1033A00000EFFFFF00000000000000000000000030 +:1033B000000000000020000000000000FFFFFFF5FB +:1033C000004FFFFF000000000000000000000000B0 +:1033D000000000000040000000000000FFFFFFFFB1 +:1033E00000CFFFFF0000000000000000000000CC44 +:1033F000000000000000000000000000FFFFFFFFD1 +:1034000000CFFFFF0000000000000000000000CC23 +:10341000000000000001000000000000FFFFFFFFAF +:1034200000CFFFFF0000000000000000000000CC03 +:10343000000000000002000000000000FFFFFFFF8E +:1034400000CFFFFF0000000000000000000000CCE3 +:10345000000000000004000000000000FFFFFFFF6C +:1034600000CFFFFF0000000000000000000000CCC3 +:10347000000000000008000000000000FFFFFFFF48 +:1034800000CFFFFF0000000000000000000000CCA3 +:10349000000000000010000000000000FFFFFFFF20 +:1034A00000CFFFFF0000000000000000000000CC83 +:1034B000000000000020000000000000FFFFFFFFF0 +:1034C00000CFFFFF0000000000000000000000CC63 +:1034D000000000000040000000000000FFFFFFF3BC +:1034E000020FFFFF000000000000000000000000CD +:1034F000000000000000000000000000FFFFFFF1DE +:10350000010FFFFF000000000000000000000000AD +:10351000000000000001000000000000FFFFFFF6B7 +:10352000005FFFFF0000000000000000000000003E +:10353000000000000002000000000000FFFFF40691 +:103540001CBFFFFF00000005000000000000001489 +:10355000000000000004000000000000FFFFFFF278 +:10356000004FFFFF0000000000000000000000000E +:10357000000000000008000000000000FFFFFF8ABC +:10358000042FFFFF0000000000000000000000000A +:10359000000000000010000000000000FFFFFF9787 +:1035A00005CFFFFF00000000000000000000000049 +:1035B000000000000020000000000000FFFFFFF5F9 +:1035C000010FFFFF000000000000000000000000ED +:1035D000000000000040000000000000FFFFFFF3BB +:1035E000000FFFFF000000000000000000000000CE +:1035F000000000000000000000000000FFFFFFF1DD +:10360000000FFFFF000000000000000000000000AD +:10361000000000000001000000000000FFFFFFF6B6 +:10362000005FFFFF0000000000000000000000003D +:10363000000000000002000000000000FFFFFF0685 +:103640001CBFFFFF0000000000000000000000148D +:10365000000000000004000000000000FFFFFFF277 +:10366000004FFFFF0000000000000000000000000D +:10367000000000000008000000000000FFFFFFFA4B +:10368000002FFFFF0000000000000000000000000D +:10369000000000000010000000000000FFFFFFF726 +:1036A000000FFFFF0000000000000000000000000D +:1036B000000000000020000000000000FFFFFFFFEE +:1036C00000CFFFFF0000000000000000000000CC61 +:1036D000000000000040000000000000FFFFFFFFAE +:1036E00000CFFFFF0000000000000000000000CC41 +:1036F000000000000000000000000000FFFFFFFFCE +:1037000000CFFFFF0000000000000000000000CC20 +:10371000000000000001000000000000FFFFFFFFAC +:1037200000CFFFFF0000000000000000000000CC00 +:10373000000000000002000000000000FFFFFFFF8B +:1037400000CFFFFF0000000000000000000000CCE0 +:10375000000000000004000000000000FFFFFFFF69 +:1037600000CFFFFF0000000000000000000000CCC0 +:10377000000000000008000000000000FFFFFFFF45 +:1037800000CFFFFF0000000000000000000000CCA0 +:10379000000000000010000000000000FFFFFFFF1D +:1037A00000CFFFFF0000000000000000000000CC80 +:1037B000000000000020000000000000FFFFFFFFED +:1037C00000CFFFFF0000000000000000000000CC60 +:1037D000000000000040000000000000FFFFFFFFAD +:1037E00000CFFFFF0000000000000000000000CC40 +:1037F000000000000000000000000000FFFFFFFFCD +:1038000000CFFFFF0000000000000000000000CC1F +:10381000000000000001000000000000FFFFFFFFAB +:1038200000CFFFFF0000000000000000000000CCFF +:10383000000000000002000000000000FFFFFFFF8A +:1038400000CFFFFF0000000000000000000000CCDF +:10385000000000000004000000000000FFFFFFFF68 +:1038600000CFFFFF0000000000000000000000CCBF +:10387000000000000008000000000000FFFFFFFF44 +:1038800000CFFFFF0000000000000000000000CC9F +:10389000000000000010000000000000FFFFFFFF1C +:1038A00000CFFFFF0000000000000000000000CC7F +:1038B000000000000020000000000000FFFFFFFFEC +:1038C00000CFFFFF0000000000000000000000CC5F +:1038D000000000000040000000000000FFFFFFFFAC +:1038E00000CFFFFF0000000000000000000000CC3F +:1038F000000000000000000000000000FFFFFFFFCC +:1039000000CFFFFF0000000000000000000000CC1E +:10391000000000000001000000000000FFFFFFFFAA +:1039200000CFFFFF0000000000000000000000CCFE +:10393000000000000002000000000000FFFFFFFF89 +:1039400000CFFFFF0000000000000000000000CCDE +:10395000000000000004000000000000FFFFFFFF67 +:1039600000CFFFFF0000000000000000000000CCBE +:10397000000000000008000000000000FFFFFFFF43 +:1039800000CFFFFF0000000000000000000000CC9E +:10399000000000000010000000000000FFFFFFFF1B +:1039A00000CFFFFF0000000000000000000000CC7E +:1039B000000000000020000000000000FFFFFFFFEB +:1039C00000CFFFFF0000000000000000000000CC5E +:1039D00000000000004000000000000000000200A5 +:1039E00000003DFF00000211000002000000020480 +:1039F0000000FFFF0000FFFF0000FFFF0000FFFFCF +:103A00000000002000000021000000220000002330 +:103A10000000002400000025000000260000002710 +:103A200000000028000000290000002A0000002BF0 +:103A30000000002C0000002D0000002E0000002FD0 +:103A40000000001000000001000000010000000163 +:103A50000000000100000001000000010000000162 +:103A60000000000100000001000000010000000152 +:103A70000000000100000001000000010000000142 +:103A8000000000010000000107FFFFFF0000003FF1 +:103A900007FFFFFF0000000F00007FF800007FF825 +:103AA0000000FF00000000000000FF000000000018 +:103AB0000000FF00000000000000FF000000000008 +:103AC0000000FF00000000000000FF0000000000F8 +:103AD0000000FF00000000000000FF0000000000E8 +:103AE0000000FF1C0FFFFFFF0000FF1C0FFFFFFF88 +:103AF0000000FF1C0FFFFFFF0000FF1C0FFFFFFF78 +:103B00000000FF1C0FFFFFFF0000FF1C0FFFFFFF67 +:103B10000000FF1C0FFFFFFF0000FF1C0FFFFFFF57 +:103B20000000FF1C0FFFFFFF0000FF1C0FFFFFFF47 +:103B30000000FF1C0FFFFFFF0000FF1C0FFFFFFF37 +:103B40000000FF1C0FFFFFFF0000FF1C0FFFFFFF27 +:103B50000000FF1C0FFFFFFF0000FF1C0FFFFFFF17 +:103B60000000FF1C0FFFFFFF0000FF1C0FFFFFFF07 +:103B70000000FF1C0FFFFFFF0000FF1C0FFFFFFFF7 +:103B80000000FF1C0FFFFFFF0000FF1C0FFFFFFFE7 +:103B90000000FF1C0FFFFFFF0000FF1C0FFFFFFFD7 +:103BA0000000FF1C0FFFFFFF0000FF1C0FFFFFFFC7 +:103BB0000000FF1C0FFFFFFF0000FF1C0FFFFFFFB7 +:103BC0000000FF1C0FFFFFFF0000FF1C0FFFFFFFA7 +:103BD0000000FF1C0FFFFFFF0000FF1C0FFFFFFF97 +:103BE0000000FF1C0FFFFFFF0000FF1C0FFFFFFF87 +:103BF0000000FF1C0FFFFFFF0000FF1C0FFFFFFF77 +:103C00000000FF1C0FFFFFFF0000FF1C0FFFFFFF66 +:103C10000000FF1C0FFFFFFF0000FF1C0FFFFFFF56 +:103C20000000FF1C0FFFFFFF0000FF1C0FFFFFFF46 +:103C30000000FF1C0FFFFFFF0000FF1C0FFFFFFF36 +:103C40000000FF1C0FFFFFFF0000FF1C0FFFFFFF26 +:103C50000000FF1C0FFFFFFF0000FF1C0FFFFFFF16 +:103C60000000FF1C0FFFFFFF0000FF1C0FFFFFFF06 +:103C70000000FF1C0FFFFFFF0000FF1C0FFFFFFFF6 +:103C80000000FF1C0FFFFFFF0000FF1C0FFFFFFFE6 +:103C90000000FF1C0FFFFFFF0000FF1C0FFFFFFFD6 +:103CA0000000FF1C0FFFFFFF0000FF1C0FFFFFFFC6 +:103CB0000000FF1C0FFFFFFF0000FF1C0FFFFFFFB6 +:103CC0000000FF1C0FFFFFFF0000FF1C0FFFFFFFA6 +:103CD0000000FF1C0FFFFFFF0000FF1C0FFFFFFF96 +:103CE0000000031200003500000000010000000287 +:103CF00000000003000000000000000400000001BC +:103D000000000000000000010000000400000000AE +:103D1000000000010000000300000000000000019E +:103D2000000000040000000000000001000000038B +:103D3000000000000000000100000004000000007E +:103D4000000000040000000300000000000000006C +:103D500000003FFF000003FF000000000000000122 +:103D60000000000100000001007C100400000004BD +:103D70000000000200000090000000900080009011 +:103D8000081000000000008A000000800000008190 +:103D90000000008000000006000007D00000076C53 +:103DA000071D291100000000009C042400000000F1 +:103DB00000000001000000010000000100000001FF +:103DC0000000000100007FFF000000FF000000FF76 +:103DD000000000FF000000FF0000007F000000FF67 +:103DE000000000FF000000FF0000003E0000000097 +:103DF0000000003F0000003F0000003F0000003FC7 +:103E00000000003F0000003F0000003F0000000FE6 +:103E100000000000121700002217000032170000F7 +:103E200012150000221500003215000002100000DB +:103E300000100000101000002010000030100000E2 +:103E400000100000121400002214000032140000C0 +:103E500000E38340FFFFFFFFFFFFFFFFFFFFFFFFC8 +:103E6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF62 +:103E7000FFFFFFFFF0005000F0001000FFFFFFFF0A +:103E8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF42 +:103E9000FFFFFFFFFF809000FFFFFFFFFFFFFFFF1F +:103EA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF22 +:103EB000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF12 +:103EC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF02 +:103ED000FFFFFFFF00003C10000000010000000099 +:103EE00000000008000000080000000200000004BC +:103EF0000000000500000004000000400000180859 +:103F00000000080300000803000000400000000358 +:103F1000000008030000080300000803000100037C +:103F20000000080300000803000000030000000375 +:103F30000000000300000003000000030000000375 +:103F40000000000300000003000000030000000365 +:103F50000000000300000003000000030000000355 +:103F600000000003000024030000002F00000009EF +:103F70000000001900000184000001830000030616 +:103F80000000001900000006000003060000030600 +:103F90000000030600000C86000003060000030674 +:103FA00000000006000000060000000600000006F9 +:103FB00000000006000000060000000600000006E9 +:103FC00000000006000000060000000600000006D9 +:103FD00000000006000000060000000600000306C6 +:103FE0000000001300000006000010040000100490 +:103FF0000010644000106440000000000000000059 +:104000000000000000000000000020000000000090 +:10401000000000000000000000000000040020007C +:104020000000000000000000000000000000000090 +:10403000000020000000007C0000003D0000003F68 +:104040000000009C00000006000000050000000ABF +:1040500000000005000001400000014000000000D9 +:1040600000000000000000C00000013F00007FFFD2 +:1040700000000048000000480000000000000000B0 +:1040800000000048000000040000000400000004DC +:104090000000000400000004000000040000000410 +:1040A0000000000400000004000000090000000BF4 +:1040B0000000000A00000004000000090000000BDE +:1040C0000000000A000000010000000100000001E3 +:1040D00000000001000000010000000100000001DC +:1040E00000000001000000010000000100000001CC +:1040F0000000000100000004000000090000000BA7 +:104100000000000A000000010000000100000001A2 +:10411000000000010000000100000001000000019B +:10412000000000010000000100000001000000018B +:104130000000000100000004000000090000000B66 +:104140000000000A0000000000000000000008005D +:1041500000000200000001FF000004000000000059 +:10416000000000001E491E491E491E490E490E4905 +:104170000E490E49FFFFFFFF00000000000025E48C +:1041800000008000000000130FFF0FFF0000000080 +:10419000000000000FFF0FFF1000100010001000C3 +:1041A000200020002000200080008000800080008F +:1041B00040004000400040000000000000000001FE +:1041C0000101010101200101200101010101100192 +:1041D0000101010101200101200101010101100182 +:1041E0002001010101011001010101010120010172 +:1041F0002001010101011001010101010120010162 +:104200000101010101200101200101010101100151 +:104210000101010101200101200101010101100141 +:104220000101010101200101200101010101100131 +:104230000101010101200101200101010101100121 +:1042400000000004000000090000000B0000000A4C +:1042500000000004000000090000000B0000000A3C +:10426000000000010000000100000001000000014A +:10427000000000010000000100000001000000013A +:10428000000000010000000100000001000000012A +:1042900000000004000000090000000B0000000AFC +:1042A000000000010000000100000001000000010A +:1042B00000000001000000010000000100000001FA +:1042C00000000001000000010000000100000001EA +:1042D00000000004000000090000000B0000000ABC +:1042E0001E491E491E491E490E490E490E490E49D6 +:1042F000FFFFFFFF000000000FFF0FFF00000000A6 +:10430000000000000FFF0FFF100010001000100051 +:10431000200020002000200080008000800080001D +:10432000400040004000400000000000000000028B +:10433000000000010000000300000004000000066F +:104340000000000500000007000001230000012319 +:1043500000000123000001230000012300000123CD +:1043600000000123000001230000012300000123BD +:1043700000000123000001230000012300000123AD +:10438000000001230000012300000123000001239D +:104390000000012300000123000000200000003283 +:1043A00000000007000000070000000000000008F7 +:1043B0000215002002150020000000300810000047 +:1043C0000000003300000030000000310000000257 +:1043D00000000005000000060000000200000002CE +:1043E00000000000000000050000000200000002C4 +:1043F00000000002000000010000000600000001B3 +:10440000000000020000004000000040000000200A +:10441000000000130000002000010000000204C0A2 +:104420000003098000040E4000051300000617C0B9 +:1044300000071C800008214000092600000A2AC04D +:10444000000B2F80000C3440000D3900000E3DC0E1 +:10445000000F42800010474000114C00001250C075 +:104460000013558000145A4000155F00001663C009 +:104470000017688000186D4000197200001A76C09D +:10448000001B7B80001C8040001D8500001E89C031 +:10449000001F8E800000934000000001000000011A +:1044A0000000000100000001000000010000000108 +:1044B00000000001000000010000000100000001F8 +:1044C00000000001000000010000000100000001E8 +:1044D0000000000100000001000000080000000CC6 +:1044E00000000010000000010000000100000001B9 +:1044F0000000021100000200000002040000021986 +:104500000000FFFF0000FFFF0000FFFF0000FFFFB3 +:1045100007FFFFFF0000003F07FFFFFF0000000F45 +:1045200000007FF800007FF800000000000000019C +:1045300000201001000000000100900000000100B8 +:10454000000000010000000000000000140AFF004D +:1045500000009002000000000000000000000000C9 +:1045600000009004000000000000000000000000B7 +:1045700000009006000000000000000000000000A5 +:104580000000900800000000000000000000000093 +:104590000000900A00000000000000000000000081 +:1045A0000000900C0000000000000000000000006F +:1045B0000000900E0000000000000000000000005D +:1045C000000090100000000000000000000000004B +:1045D0000000901200000000000000000000000039 +:1045E0000000901400000000000000000000000027 +:1045F0000000901600000000000000000000000015 +:104600000000901800000000000000000000000002 +:104610000000901A000000000000000000000000F0 +:104620000000901C000000000000000000000000DE +:104630000000901E000000000000000000000000CC +:1046400000009020000000000000000000000000BA +:1046500000009022000000000000000000000000A8 +:104660000000902400000000000000000000000096 +:104670000000902600000000000000000000000084 +:104680000000902800000000000000000000000072 +:104690000000902A00000000000000000000000060 +:1046A0000000902C0000000000000000000000004E +:1046B0000000902E0000000000000000000000003C +:1046C000000090300000000000000000000000002A +:1046D0000000903200000000000000000000000018 +:1046E0000000903400000000000000000000000006 +:1046F00000009036000000000000000000000000F4 +:1047000000009038000000000000000000000000E1 +:104710000000903A000000000000000000000000CF +:104720000000903C000000000000000000000000BD +:104730000000903E000000000000000000000000AB +:104740000000904000000000000000000000000099 +:104750000000904200000000000000000000000087 +:104760000000904400000000000000000000000075 +:104770000000904600000000000000000000000063 +:104780000000904800000000000000000000000051 +:104790000000904A0000000000000000000000003F +:1047A0000000904C0000000000000000000000002D +:1047B0000000904E0000000000000000000000001B +:1047C0000000905000000000000000000000000009 +:1047D00000009052000000000000000000000000F7 +:1047E00000009054000000000000000000000000E5 +:1047F00000009056000000000000000000000000D3 +:1048000000009058000000000000000000000000C0 +:104810000000905A000000000000000000000000AE +:104820000000905C0000000000000000000000009C +:104830000000905E0000000000000000000000008A +:104840000000906000000000000000000000000078 +:104850000000906200000000000000000000000066 +:104860000000906400000000000000000000000054 +:104870000000906600000000000000000000000042 +:104880000000906800000000000000000000000030 +:104890000000906A0000000000000000000000001E +:1048A0000000906C0000000000000000000000000C +:1048B0000000906E000000000000000000000000FA +:1048C00000009070000000000000000000000000E8 +:1048D00000009072000000000000000000000000D6 +:1048E00000009074000000000000000000000000C4 +:1048F00000009076000000000000000000000000B2 +:10490000000090780000000000000000000000009F +:104910000000907A0000000000000000000000008D +:104920000000907C0000000000000000000000007B +:104930000000907E00000000000000000000000069 +:104940000000908000000000000000000000000057 +:104950000000908200000000000000000000000045 +:104960000000908400000000000000000000000033 +:104970000000908600000000000000000000000021 +:10498000000090880000000000000000000000000F +:104990000000908A000000000000000000000000FD +:1049A0000000908C000000000000000000000000EB +:1049B0000000908E000000000000000000000000D9 +:1049C00000009090000000000000000000000000C7 +:1049D00000009092000000000000000000000000B5 +:1049E00000009094000000000000000000000000A3 +:1049F0000000909600000000000000000000000091 +:104A0000000090980000000000000000000000007E +:104A10000000909A0000000000000000000000006C +:104A20000000909C0000000000000000000000005A +:104A30000000909E00000000000000000000000048 +:104A4000000090A000000000000000000000000036 +:104A5000000090A200000000000000000000000024 +:104A6000000090A400000000000000000000000012 +:104A7000000090A600000000000000000000000000 +:104A8000000090A8000000000000000000000000EE +:104A9000000090AA000000000000000000000000DC +:104AA000000090AC000000000000000000000000CA +:104AB000000090AE000000000000000000000000B8 +:104AC000000090B0000000000000000000000000A6 +:104AD000000090B200000000000000000000000094 +:104AE000000090B400000000000000000000000082 +:104AF000000090B600000000000000000000000070 +:104B0000000090B80000000000000000000000005D +:104B1000000090BA0000000000000000000000004B +:104B2000000090BC00000000000000000000000039 +:104B3000000090BE00000000000000000000000027 +:104B4000000090C000000000000000000000000015 +:104B5000000090C200000000000000000000000003 +:104B6000000090C4000000000000000000000000F1 +:104B7000000090C6000000000000000000000000DF +:104B8000000090C8000000000000000000000000CD +:104B9000000090CA000000000000000000000000BB +:104BA000000090CC000000000000000000000000A9 +:104BB000000090CE00000000000000000000000097 +:104BC000000090D000000000000000000000000085 +:104BD000000090D200000000000000000000000073 +:104BE000000090D400000000000000000000000061 +:104BF000000090D60000000000000000000000004F +:104C0000000090D80000000000000000000000003C +:104C1000000090DA0000000000000000000000002A +:104C2000000090DC00000000000000000000000018 +:104C3000000090DE00000000000000000000000006 +:104C4000000090E0000000000000000000000000F4 +:104C5000000090E2000000000000000000000000E2 +:104C6000000090E4000000000000000000000000D0 +:104C7000000090E6000000000000000000000000BE +:104C8000000090E8000000000000000000000000AC +:104C9000000090EA0000000000000000000000009A +:104CA000000090EC00000000000000000000000088 +:104CB000000090EE00000000000000000000000076 +:104CC000000090F000000000000000000000000064 +:104CD000000090F200000000000000000000000052 +:104CE000000090F400000000000000000000000040 +:104CF000000090F60000000000000000000000002E +:104D0000000090F80000000000000000000000001B +:104D1000000090FA00000000000000000000000009 +:104D2000000090FC000000000000000000000000F7 +:104D3000000090FE000000000000000000000000E5 +:104D400000009100000000000000000000000000D2 +:104D500000009102000000000000000000000000C0 +:104D600000009104000000000000000000000000AE +:104D7000000091060000000000000000000000009C +:104D8000000091080000000000000000000000008A +:104D90000000910A00000000000000000000000078 +:104DA0000000910C00000000000000000000000066 +:104DB0000000910E00000000000000000000000054 +:104DC0000000911000000000000000000000000042 +:104DD0000000911200000000000000000000000030 +:104DE000000091140000000000000000000000001E +:104DF000000091160000000000000000000000000C +:104E000000009118000000000000000000000000F9 +:104E10000000911A000000000000000000000000E7 +:104E20000000911C000000000000000000000000D5 +:104E30000000911E000000000000000000000000C3 +:104E400000009120000000000000000000000000B1 +:104E5000000091220000000000000000000000009F +:104E6000000091240000000000000000000000008D +:104E7000000091260000000000000000000000007B +:104E80000000912800000000000000000000000069 +:104E90000000912A00000000000000000000000057 +:104EA0000000912C00000000000000000000000045 +:104EB0000000912E00000000000000000000000033 +:104EC0000000913000000000000000000000000021 +:104ED000000091320000000000000000000000000F +:104EE00000009134000000000000000000000000FD +:104EF00000009136000000000000000000000000EB +:104F000000009138000000000000000000000000D8 +:104F10000000913A000000000000000000000000C6 +:104F20000000913C000000000000000000000000B4 +:104F30000000913E000000000000000000000000A2 +:104F40000000914000000000000000000000000090 +:104F5000000091420000000000000000000000007E +:104F6000000091440000000000000000000000006C +:104F7000000091460000000000000000000000005A +:104F80000000914800000000000000000000000048 +:104F90000000914A00000000000000000000000036 +:104FA0000000914C00000000000000000000000024 +:104FB0000000914E00000000000000000000000012 +:104FC0000000915000000000000000000000000000 +:104FD00000009152000000000000000000000000EE +:104FE00000009154000000000000000000000000DC +:104FF00000009156000000000000000000000000CA +:1050000000009158000000000000000000000000B7 +:105010000000915A000000000000000000000000A5 +:105020000000915C00000000000000000000000093 +:105030000000915E00000000000000000000000081 +:10504000000091600000000000000000000000006F +:10505000000091620000000000000000000000005D +:10506000000091640000000000000000000000004B +:105070000000916600000000000000000000000039 +:105080000000916800000000000000000000000027 +:105090000000916A00000000000000000000000015 +:1050A0000000916C00000000000000000000000003 +:1050B0000000916E000000000000000000000000F1 +:1050C00000009170000000000000000000000000DF +:1050D00000009172000000000000000000000000CD +:1050E00000009174000000000000000000000000BB +:1050F00000009176000000000000000000000000A9 +:105100000000917800000000000000000000000096 +:105110000000917A00000000000000000000000084 +:105120000000917C00000000000000000000000072 +:105130000000917E00000000000000000000000060 +:10514000000091800000000000000000000000004E +:10515000000091820000000000000000000000003C +:10516000000091840000000000000000000000002A +:105170000000918600000000000000000000000018 +:105180000000918800000000000000000000000006 +:105190000000918A000000000000000000000000F4 +:1051A0000000918C000000000000000000000000E2 +:1051B0000000918E000000000000000000000000D0 +:1051C00000009190000000000000000000000000BE +:1051D00000009192000000000000000000000000AC +:1051E000000091940000000000000000000000009A +:1051F0000000919600000000000000000000000088 +:105200000000919800000000000000000000000075 +:105210000000919A00000000000000000000000063 +:105220000000919C00000000000000000000000051 +:105230000000919E0000000000000000000000003F +:10524000000091A00000000000000000000000002D +:10525000000091A20000000000000000000000001B +:10526000000091A400000000000000000000000009 +:10527000000091A6000000000000000000000000F7 +:10528000000091A8000000000000000000000000E5 +:10529000000091AA000000000000000000000000D3 +:1052A000000091AC000000000000000000000000C1 +:1052B000000091AE000000000000000000000000AF +:1052C000000091B00000000000000000000000009D +:1052D000000091B20000000000000000000000008B +:1052E000000091B400000000000000000000000079 +:1052F000000091B600000000000000000000000067 +:10530000000091B800000000000000000000000054 +:10531000000091BA00000000000000000000000042 +:10532000000091BC00000000000000000000000030 +:10533000000091BE0000000000000000000000001E +:10534000000091C00000000000000000000000000C +:10535000000091C2000000000000000000000000FA +:10536000000091C4000000000000000000000000E8 +:10537000000091C6000000000000000000000000D6 +:10538000000091C8000000000000000000000000C4 +:10539000000091CA000000000000000000000000B2 +:1053A000000091CC000000000000000000000000A0 +:1053B000000091CE0000000000000000000000008E +:1053C000000091D00000000000000000000000007C +:1053D000000091D20000000000000000000000006A +:1053E000000091D400000000000000000000000058 +:1053F000000091D600000000000000000000000046 +:10540000000091D800000000000000000000000033 +:10541000000091DA00000000000000000000000021 +:10542000000091DC0000000000000000000000000F +:10543000000091DE000000000000000000000000FD +:10544000000091E0000000000000000000000000EB +:10545000000091E2000000000000000000000000D9 +:10546000000091E4000000000000000000000000C7 +:10547000000091E6000000000000000000000000B5 +:10548000000091E8000000000000000000000000A3 +:10549000000091EA00000000000000000000000091 +:1054A000000091EC0000000000000000000000007F +:1054B000000091EE0000000000000000000000006D +:1054C000000091F00000000000000000000000005B +:1054D000000091F200000000000000000000000049 +:1054E000000091F400000000000000000000000037 +:1054F000000091F600000000000000000000000025 +:10550000000091F800000000000000000000000012 +:10551000000091FA00000000000000000000000000 +:10552000000091FC000000000000000000000000EE +:10553000000091FE0000FF00000000000000FF00DE +:10554000000000000000FF00000000000000FF005D +:10555000000000000000FF00000000000000FF004D +:10556000000000000000FF00000000000000FF003D +:1055700000000000000001A900001500000000016B +:105580000000000200000003000000000000000412 +:105590000000000100000000000000010000000405 +:1055A00000000000000000010000000300000000F7 +:1055B00000000001000000040000000000000001E5 +:1055C00000000003000000000000000100000004D3 +:1055D00000000000000000040000000300000000C4 +:1055E0000000000000003FFF000003FF0000000378 +:1055F00000BEBC2000000000000000050000000309 +:1056000000BEBC20000000000000000500000003F8 +:1056100000BEBC20000000000000000500000003E8 +:1056200000BEBC20000000000000000500000003D8 +:1056300000BEBC20000000000000000500000003C8 +:1056400000BEBC20000000000000000500000003B8 +:1056500000BEBC20000000000000000500000003A8 +:1056600000BEBC2000000000000000050000000D8E +:105670000000000C000000000000001002150020D7 +:105680000215002000000030081000000000003368 +:1056900000000030000000310000000200000004A3 +:1056A00000000000000000020000000200000000F6 +:1056B00000000002000000070000000200000002DD +:1056C00000000001000000030000000100000002D3 +:1056D0000000004000000040000000040000002026 +:1056E0000000000F0000001B00008000000103C04C +:1056F0000001878000020B4000028F00000312C0EF +:105700000003968000041A4000049E00000521C09A +:105710000005A580000629400006AD00000730C046 +:105720000007B480000838400008BC0000093FC0F2 +:105730000009C380000A4740000ACB00000B4EC09E +:10574000000BD280000C5640000CDA00000D5DC04A +:105750000000618000000001000000010000000165 +:105760000000000100000001000000010000000135 +:105770000000000100000001000000010000000125 +:105780000000000100000001000000010000000115 +:1057900000000001000000010000101100001000D6 +:1057A00000001004000010210000FFFF0000FFFFB8 +:1057B0000000FFFF0000FFFF000000460000001097 +:1057C00000000000000000000000001800000001C0 +:1057D00000000000000000000000000000000001C8 +:1057E00007FFFFFF0000003F07FFFFFF0000000F63 +:1057F00000007FF800007FF80000190000000000A2 +:10580000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA8 +:10581000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF98 +:105820000000FF00000000000000FF00000000007A +:105830000000FF00000000000000FF00000000006A +:105840000000FF00000000000000FF00000000005A +:105850000000FF00000000000000FF00000000004A +:105860000000014B000015000000000100000002D4 +:105870000000000300000000000000040000000120 +:105880000000000000000001000000040000000013 +:105890000000000100000003000000000000000103 +:1058A00000000004000000000000000100000003F0 +:1058B00000000000000000010000000400000000E3 +:1058C00000000004000000030000000000000000D1 +:1058D00000003FFF000003FF00000000039387006B +:1058E000000000000000000000000000039387009B +:1058F00000000000000000000000000F0000000792 +:10590000000000000000000E031500200315002019 +:1059100001000030081000000000003300000030DB +:10592000000000310000000300000006000000033A +:105930000000000300000002000000000000000260 +:10594000000000000000000600000004000000024B +:10595000000000020000000100000004000000013F +:1059600000000002000000400000004000000004B1 +:1059700000000020000000020000002000001000D5 +:105980000000208000003100000041800000520033 +:10599000000062800000730000008380000094001B +:1059A0000000A4800000B5000000C5800000D60003 +:1059B0000000E6800000F7000001078000011800E9 +:1059C00000012880000139000001498000015A00CF +:1059D00000016A8000017B0000018B8000019C00B7 +:1059E0000001AC800001BD000001CD800001DE009F +:1059F0000001EE800001FF0000000F8000000001A8 +:105A00000000000100000001000000010000000192 +:105A10000000000100000001000000010000000182 +:105A20000000000100000001000000010000000172 +:105A30000000000100000001000000010000000162 +:105A4000000000010000000100000001000012241D +:105A500000001210000012140000FFFF0000FFFF02 +:105A60000000FFFF0000FFFF0000002000000020FA +:105A700000000000000000000000002300000024DF +:105A8000000000250000002600000027000000297B +:105A90000000002A0000002B0000002C0000000184 +:105AA0000000000107FFFFFF0000003F07FFFFFFAE +:105AB0000000000F00007FF800007FF800000000E9 +:105AC00000000001CCCC0201CCCCCCCCCCCC02016F +:105AD000CCCCCCCCCCCC0201CCCCCCCCCCCC020130 +:105AE000CCCCCCCCCCCC0201CCCCCCCCCCCC020120 +:105AF000CCCCCCCCCCCC0201CCCCCCCCCCCC020110 +:105B0000CCCCCCCCFFFFFFFFFFFFFFFFFFFFFFFF71 +:105B1000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF95 +:105B2000FFFFFFFF000000000001000100330A0733 +:105B3000CCCCCCC510000000000028AD7058103C43 +:105B4000000000000000FF00000000000000FF0057 +:105B5000000000000000FF00000000000000FF0047 +:105B6000000000000000FF00000000000000FF0037 +:105B7000000000000000FF00000000000000FF0027 +:105B8000000000000000026A000015000000000193 +:105B900000000002000000030000000000000004FC +:105BA00000000001000000000000000100000004EF +:105BB00000000000000000010000000300000000E1 +:105BC00000000001000000040000000000000001CF +:105BD00000000003000000000000000100000004BD +:105BE00000000000000000040000000300000000AE +:105BF0000000000000003FFF000003FF002625A07A +:105C000000000000002625A000000000002625A0BE +:105C100000000000002625A000000000000E00008B +:105C2000011600D6002625A000000000002625A0B1 +:105C300000000000002625A000000000002625A08E +:105C40000000000000720000012300F30000FFFFCD +:105C5000000000000000FFFF000000000000FFFF48 +:105C6000000000000000FFFF000000000000FFFF38 +:105C7000000000000000FFFF000000000000000026 +:105C8000000000000000FFFF000000000000FFFF18 +:105C9000000000000000FFFF000000000000FFFF08 +:105CA000000000000000FFFF000000000000FFFFF8 +:105CB000000000000000FFFF0000000000000000E6 +:105CC000000000000000FFFF000000000000FFFFD8 +:105CD000000000000000FFFF000000000000FFFFC8 +:105CE000000000000000FFFF000000000000FFFFB8 +:105CF000000000000000FFFF0000000000000000A6 +:105D0000000000000000FFFF000000000000FFFF97 +:105D1000000000000000FFFF000000000000FFFF87 +:105D2000000000000000FFFF000000000000FFFF77 +:105D3000000000000000FFFF000000000000000065 +:105D4000000000000000FFFF000000000000FFFF57 +:105D5000000000000000FFFF000000000000FFFF47 +:105D6000000000000000FFFF000000000000FFFF37 +:105D7000000000000000FFFF000000000000000025 +:105D8000000000000000FFFF000000000000FFFF17 +:105D9000000000000000FFFF000000000000FFFF07 +:105DA000000000000000FFFF000000000000FFFFF7 +:105DB000000000000000FFFF0000000000000000E5 +:105DC000000000000000FFFF000000000000FFFFD7 +:105DD000000000000000FFFF000000000000FFFFC7 +:105DE000000000000000FFFF000000000000FFFFB7 +:105DF000000000000000FFFF0000000000000000A5 +:105E0000000000000000FFFF000000000000FFFF96 +:105E1000000000000000FFFF000000000000FFFF86 +:105E2000000000000000FFFF000000000000FFFF76 +:105E3000000000000000FFFF000000000000000064 +:105E4000000000000000FFFF0000000055540000AB +:105E50005555555500005555F000000055540000AB +:105E60005555555500005555F0000000555400009B +:105E70005555555500005555F00000000000000034 +:105E8000000100000000501400000000FF5C000052 +:105E9000FFF55FFF0000FFFFF00003E000000000DF +:105EA0000000A0000000040000000000000000004E +:105EB00000000000000010000000000000000000D2 +:105EC0000000000000004000000000000000000092 +:105ED0000000000000010000FF5C0000FFF55FFF14 +:105EE0000000FFFFF00003E0000000000000A00041 +:105EF000000008000000000000000000000000009A +:105F00000000200000000000000000000000000071 +:105F10000000800000000000000000000000000001 +:105F200000020000000000001F8B080000000000BD +:105F3000000BFB51CFC0F003093772A1F2AFB2A240 +:105F4000F2D1B12D3B7E794298858132FDE240034A +:105F5000E481D81A88D559F0ABDDC98429E6298BAC +:105F600060FF916260889080B07B252873D7281EDF +:105F70001AB84E13959FAD0EA17F6940E87A34F9A7 +:105F80001CA8BCB80A846ED0C46EAE04541E001A9D +:105F9000F3B10960030000000000000000000000F1 +:105FA0001F8B080000000000000BED7D0B781CC566 +:105FB0009170CFCEECECEC43BB23792DAF64498CD0 +:105FC00064D91620602DCB2F62C2CA0F5888EFB259 +:105FD0007E0444E290B5718CC12F99884497D78E86 +:105FE000AD8765D9D832E4330E71728BE310274741 +:105FF0002E8288C4FC479215263973C9DD29C6094B +:10600000E6622782900412EC731E04E70F39AEAAF1 +:10601000BA473B33D24A3681FCF77FDF193EB77B64 +:10602000A61FD555D555D555D5B3BEC04C567A2DDE +:10603000636FE01F28BF2431C626E64BB621E2611C +:10604000A58CDDAD31FAF39A3F7C258B30D6A6F1D5 +:10605000F22381F0412C3B338CE5A6E3FBAA2C0B09 +:1060600033A63256A734628F40FC0BD558B6CC49C4 +:106070005D41E5555896300F1F9F55E8BF08F2B1B6 +:10608000DF90F1EF8F31363B3F1F3B956EC2F965D4 +:1060900066FD4932EC2FB35DBF91AF644C6989B0A6 +:1060A0008F37405D57594EF47903FF925746D2A17E +:1060B000FCBADC65DBA9A6EC5375F9F6535851948C +:1060C000E05098427088FE8C990CE7F7E13F8D9183 +:1060D000E3BC9649649FF28EC453A1792D3CF564CC +:1060E00034968341DB333A95810A96C8C27C01C657 +:1060F000128FD6E30859D31365CC6FD43CDAC36C46 +:1061000070F8391C0906049A85CFD30E7C7557DCCC +:10611000AB25C65837AB053C59EBAE19B93E4041EB +:10612000A20FE60F023C0769FD7DB9B1E0583A0CB9 +:10613000C73A665FFFC5C3F121477FEFA58C0DE22B +:10614000FC0ACC671B87199CCE8A21FA5D20DED51C +:10615000A8C7C11FC1BA80A3AE844A9CFC33822F5A +:106160004DC1AFBD62BD2999F3B355CF325EB7DAE9 +:10617000D94A1BFFCAD12EE25B391A30E53096CAE4 +:106180002F861CF3F27EDE2A96463AB4E3A332D180 +:1061900019E8E0D3E39FEF01947F027718CCAB447A +:1061A000351AE76E29FD0982630970F06CE2238ECF +:1061B00047804F82F6DED2BA481AF90AD6C9E68D70 +:1061C000C4CFF68C9955A6DAEA5ED6DC17E2EBA2CC +:1061D00079AA587602C0CD5E5F682C2B2A3CCE305F +:1061E0009DC43ADA2BE327D32007CC3235FE05785D +:1061F000DAE95A8F52C1D7733FAE07DA2B31D54453 +:10620000FCC07AEE27FCB9D6E3D7530C45477BD1C7 +:1062100034BE9EE8E870B4E37ABC79F8879FE3BAAD +:10622000C6E8E786BFD0FB8ECA446C15C06F16F176 +:1062300075C9928B4E515817C8BDAF897579432ADD +:10624000D1C91BED652857607D5F1B6D7DC057C4AC +:1062500047C3EB0B45094E45D7082FD6FC8AD69588 +:106260005566E6E1CC319DCF330C479CCB499D511F +:10627000BF432C9DC3F7C07F83C47FA104C3F1D566 +:1062800018BCBF0ACB44B30974ED1898C7EAB15FD4 +:1062900028CE3640A986D26C09B4EBF8B32CF0D6E0 +:1062A00048E35B70FC9390E385F0B60CE1B1E1F953 +:1062B000994A817F17FD01DED3AD50F7EAB367A29B +:1062C0009C794EE0CD8D1FC0DB73F6F1159DE3F395 +:1062D00099BF99CEF1959CE8806F180EADDD812FA6 +:1062E000862214F665A5B54F04DEF656737C7DD67E +:1062F000A87B1256C6AA6BE3710672E65E63FF8046 +:10630000C7606C9F967E19F9C95F3B44F8AB6CCDB2 +:10631000D1FC3D82AF16CBF3FD2F4079DF929AC8B6 +:106320006A781E912407FF59E501D003C89FDDA0BC +:106330000770DFBD769AC35F88DFF66498637FEEEF +:106340006951925968BF67FE93C5D703DE3AA3B57A +:106350000D2463D6490AAE2B80EB0178259C1FD60D +:106360007B60CB87095EC09F24CDCAF3A1C56F3582 +:10637000896C4287F7D542EFC4BA593C2770A3D83D +:10638000F05499F498BE30E12180E394D5E91E15CC +:10639000E609B50E312C2D3C003D9FAE8571F63FD0 +:1063A0003DB501E969C1FD2EC9C3E56594F33553D7 +:1063B000E275A9A2C2FBEFD380A77ADAC77D12C229 +:1063C00039790DCBE23EDA299E7F8FA5CA25683741 +:1063D0007943DC8BEB392E59F3C7482F7608B83F49 +:1063E000BD3640FCD651A93F28C3BE9C2A09FBE319 +:1063F00080E4E6AFA9D2AC3C5E2CFECA78D27538F8 +:106400004FA03E41B2BC6C0DA77BBB87AD23396961 +:10641000B2411CA75C62F93F305FB8DE3888FC3DB2 +:106420004FF041F9A2AE2D1E80BF2CA6983EE0B3DE +:10643000F2A1554BD895547F1EF13A79DDA0897CA5 +:10644000173C75C3CBF8BC7CCD506A11E257EF25E1 +:10645000FEFBB0273D0FE1285B9315F4EB95107F11 +:10646000FBBD59A6A3FD307F30910A21BDAF63ABC0 +:106470006C7AF346B15EA58EDB19165D3F2B733E39 +:10648000B93779DC7F7B08DB0508CE1AB62881E3B3 +:1064900055A3A501EB08087E00BADF80F3875A7B7D +:1064A00071452C5CA76F43B880DF27217FEDF79AF9 +:1064B00065D86FFF16B539CBF17202F931E81138A2 +:1064C00031E03FC4B787CF1B95BC04973C05EA2059 +:1064D0005A26E82C6BC0C04A2DAFC7E22C9B807AAD +:1064E00008F1114676C96E25FC083C0605FEFCF352 +:1064F0005F40A059D1921C4A0EC4D3AD48C780DE7C +:106500003780EDFDB5BD12C2B74769F9E927603D97 +:106510007B8EC971D3B0F121033EBC228F2F7D3E0B +:10652000EC379B7D382C3744FBF1F4068A17A48B9B +:1065300012E2FACCD20FC0AF2D883F45E7FC6AC902 +:10654000F7F1C6D3DA64E345945F8A4EF68E226C87 +:10655000064D33B56A18423E21335C8FDC3B2387FE +:106560007803DCC6BF80EBABE078047BE9500FD941 +:10657000E159DA17963DE2AF73DA45DE0AA75DC44A +:106580009A4DC96E5F696D2AC1A1807E60F5F9756B +:10659000A2C58FF61C2EF30DA4A5CB8E57422CE777 +:1065A000077AF5D43530BB5DAE306ECF2133BD51A7 +:1065B0003DB25F61BCB8E65BE184F382FB8514E326 +:1065C00017569F9AB1FA29EC17163F00F2BE8803BE +:1065D000CCCAD307ECA52312E851BF163FB60AF088 +:1065E000BE1D5F015DBB18A73BCB7A1C7246AEF0A7 +:1065F000D07EBF5B3238BFC4B83DE20DB5B0B491B8 +:10660000AF8FC71701C1571F62E92790AF7C15698B +:10661000C2AFB7F448CCAE4F1415EC49E4B7BA1585 +:10662000D45E8DF59D5C4D764A6C06F182E0AB9DA3 +:106630001A739C7318DB46EBECCE64D9CFBCA83739 +:10664000F8F89A91E2A5C597759C8FBBEB9745D05A +:106650005ED7B43E9247C1DE47E8FC30CC8F00F7EE +:106660008A2BF0BCE1213AFC03946F587C897A298B +:1066700016C89F0B6CFC668D3F1E3E86EB5AE2FDF2 +:10668000C8F7EB62AA81F277BDCC5A502FAC8B4D84 +:106690005B84F2C2D2F78AA78CE35F5E626C8529C5 +:1066A0005ECD76C665A3F03CEB14900D0D78DAD97B +:1066B00035887A8865BDE7866CFCE33E579E95C4B5 +:1066C000B9720E9B837CF32AAB8F6C1D63FC5F65F4 +:1066D0008EE9640F8873A5FBBDB58EF58CBDE82BE4 +:1066E000C1759AEA2D80CF904723FC59EB534ABAE3 +:1066F0004B913EEB0F3FAD3BE498905FEB15387646 +:10670000368C84DF8D4F982747F358FD86003EBBBB +:106710007C70F51F1ED79283CA08FBADD803CFFD4E +:106720008BEE36CB010FEB1F5ECAF518AC03E5AF5D +:1067300005BF35AFB58EE1F95DEB29B48E8B95D7EA +:10674000BF5DD4D985A6EC09AF5199423E494E5F51 +:1067500084FAC6B25F2DBA2C5DDC593A9A5F619813 +:10676000BF1466E8882F30A073C44F3BE6E2FEBA40 +:10677000D1E31FD50E1C8F7F667B46F0CFBB57BC85 +:106780000DFCB314F907F125EC676BFD6E7CAF5B74 +:10679000E47D1EED9682F816FD2DFA8DE0BF42FDD8 +:1067A00046F2C94DA3F28918DFE2176B9EBF14DED3 +:1067B000F1F8031889ECEA72FCA781F6704E62A426 +:1067C000E7F83962B280BBAAE29C84768891D2173E +:1067D000A0D95AD31C7F12CBCF163F54F6A0812DDF +:1067E00016E9A847A4C404E98DCB2F5CDF58709448 +:1067F0006F505EB0FB0BC26BA06E5B6FA8D1F93E11 +:10680000C06CEFABF3E39458E744231EB7DBDFBB68 +:10681000BCB966383AB2AE6DD7354581EF77F973BA +:1068200027F168D9E9BFB12909F550156383A8F7A5 +:1068300095410DF5FF4134FE103F7393E4E7088B5B +:10684000B9EF99EB616190BFC5654A168C48363047 +:10685000243315F6C3EE9892F5111C49D2F345A2E4 +:10686000BD35CEEEA1AFD1B83B1B4B8A1DE3C77837 +:10687000FBA0E587BCC2C33CB6F15F9B6AC1D547AC +:10688000FD59A28EE0B1C667C623C92930BFBA58E8 +:10689000613D3064606890EC5B850D9954CECD26E7 +:1068A00050EEB3E4859D4B9438B7EB9478F7202FE6 +:1068B000B9FD0EE6B89B8FBF8A7CEC83F304F28BA4 +:1068C000759EB0E61997EF2EB49DF0B77E8405E271 +:1068D000A8EF26AA09C90BF5B60A16DF06EB3A227D +:1068E000A5731ED4AF2B5A3ED00975E9A6B6E9436D +:1068F00000471B608AF473C293E57E5AE067E8D7CD +:106900009B9A94C5719409151311DEDE04B7EF0B41 +:10691000C101E7B199B5B6F3E94EA003E275677D11 +:1069200083365ABF604C9D593B01C64D1A93F431D2 +:10693000FC8485C75DE618B7DA933EE59938727C2A +:1069400026F8DF03161FEEA340A895CE0923F7858E +:10695000AD2E8FACEF5FB5368678884E4ACC90600E +:106960003FAC92592E3517EAC1C423B85F6E961F0B +:106970006C0A019DA2BEC4160FBCBF5B6E6BDA85AC +:10698000F54B18098D75F2B7A5AD006F14F63CBB39 +:106990009AB1CDEDFF67AB59CFF18F765977269736 +:1069A0007D712AFA858F5179DEC3CF6B7F12FCAFE0 +:1069B0002926D9537E03DAD9F7B7C2CF7DC13AE889 +:1069C0006797B33196463E5488F7E9DCC664147580 +:1069D000CD4339AF817CE8F65BD4475EB0D14193BB +:1069E0009D7E8B1EF457D8E810D07E54857659FED4 +:1069F000FDC9AA1741D0DD9319A2B247E94BE0F9CE +:106A0000D74C30867CD59D79A90AD7A527FAC80F1F +:106A1000A12B7CDD56FFAB65BE5EAB54D88A480E19 +:106A2000E9A21F22F9AA8B7528AD11F6F112ACEF7D +:106A3000FA0DDA5FBAAEFCC12EFFDCFAB34A06FDEE +:106A4000893817FA536BFB75D58BC817C2BFAF09CE +:106A50007F373B7590CF639DDFE5D00CF4DF587A2C +:106A600074B62C093B91F7D319CCEB38B770386466 +:106A7000C12FD6BADCF0C45DF08C17A7B0E6BF1A00 +:106A8000DBE27976D82F7E8E9FBFE673FFB1E50FEC +:106A90000FD6011DECFAA171C851FFA4CCF9C96F42 +:106AA000BCE478BEBFE84EE2EFF34353C6F44321A3 +:106AB0009F2A36BB02F9325ECFF9D2AE7787F589CD +:106AC000E08B6E8B2F900FA02C5206A95F51FC64B7 +:106AD00001F8A0BD6DBC609D13DE10882994A75EEF +:106AE000383D7E07E5D40AEE1F652B19F77F093282 +:106AF00082FCFD808CFE6BBD85F82E14E7F2F793C7 +:106B000032F797EEF7A6632DB80F8A819611DC0F46 +:106B100066738AFB27CB96D9FC014F0BFA0FF76BF4 +:106B20005A4BE72B561F0BD1795CF0E74F597A236C +:106B3000CE176CEECDA1DE577493E6B5FA75093C1D +:106B4000FBEB38FC16DC1FC775CF1A09BF05B7224F +:106B5000F44774F94A927BC3EB6D76DA4D56FBBC71 +:106B60009F39F549D9E6CF1A96F77520EF89D7B343 +:106B7000DA52DB3A7BEA2E4ECEEF52981FFD86BDED +:106B8000218FBF16FDFC714F7C2A2CA51DEBE897C9 +:106B9000B8A27686FD3C35575BB047B6C9E9503D93 +:106BA0008C67A36B0FEA8337337FD4397F67B4E0F8 +:106BB000FC7FCFF1C15E413CFB05DEBACAF6115E37 +:106BC000DDF058FD3EE8491F966DF2D05FCBFDE742 +:106BD000A3E84FFF529BDD70B17AD35D86249642C5 +:106BE00039D91E6AD057DBE4C4E3423EFFCE977822 +:106BF0001CF1E986FB62F56AA1793BA3CE794FE5EA +:106C0000E73D85F39E42B904656F9DBAF4838067C2 +:106C100025153683680FA5B87CB6F48C22FC047A5F +:106C200042D83FC2DFA00B983B12DC6FC09484496E +:106C3000F607EC47B23F7AA5048F4325C86F106270 +:106C4000DC5F3551F80DD60A79C16A038E78A2222D +:106C5000FC066EBC148CEB09FFEDEAB98221987139 +:106C6000F38F81AE771CF3328A7BBE0EAD6D7EB39F +:106C7000177EB66A099E37EE107EC99FB3848A2FAD +:106C8000CF304F12E13DC38E8767DAE8FE7F651E85 +:106C9000AF63DD5EB2CF4DF80FE1FC60AFD761AFFF +:106CA000DFBEDF595FCB9695A25DB7F6535E9605C2 +:106CB0007CDCE1B25B7E857205C6BD9DB57421BDED +:106CC0003B853E5F0D0A6A02E8C98DDFF8ECEC55A2 +:106CD000509714AE577F057ADCF0E5E1BA3394554E +:106CE00013F0FE67FD336F7A07C3FED9AE72DC473F +:106CF000C5DC5FE3E68BDBBA9DF08D07BF1B5ECB87 +:106D00009F54080EE5B044FE69F7BC114572F8DBEC +:106D10000AE52158F90757299C2FCC058CFC9FE6E2 +:106D20004F8AB2ED24EF78FEC178FD6762FF596F9C +:106D3000BEFF9C71E6EF89665328CF2DFF9F57E970 +:106D4000353996B8FCEE898DF3BE76ECF785E05BBD +:106D50005AAC51BCCF8213ECE645CA28EB3CE16D3E +:106D6000B90AF9D987F8A6929F2BC98E063A6E56B2 +:106D700042DDA82FFDA17EB2A7FD86F3DCB919FF85 +:106D8000417A86915C0CD639DFBBEDEB9B15615FD8 +:106D9000B11CEDB3306D413C4F8672A4E7E62AAFDB +:106DA0000CD9F6B7C51777C540AE4C282CC73C4C5C +:106DB00033421ADA795C5E48A26EC1F1DB5E298942 +:106DC000FBE52E10456D0DF671551A7784BC781DC4 +:106DD000DECF16F91274FE8FC7909EDD1946791C1E +:106DE000AF2AF1665CF7AB219599B0A4F6E2163AAA +:106DF000A79A95CCC038B1AF3615C1788AEF841CFC +:106E0000F5540B611245FD9324FFFC1D8A57F8438E +:106E1000E2E457F785CC04E65174819D520C70AAC8 +:106E20009FE479014DA1741AFBC9B1662F9EA7FF9B +:106E3000F9E1DB68DE3B63D7293E98B7558C73E6F2 +:106E4000CB8FCC66005FD7578A588ECEC75915EDC9 +:106E5000C63BFBE504C60FD77FB588E6BFF3D1DBA1 +:106E60001F5A82F8F9C635C62F48DEB653FF3BBF1E +:106E7000BEFCDF4D78DFFE43193007E556115F3366 +:106E8000E3B1E5D075A38F7D2015CAAF3FAF1F4D8D +:106E9000867AF1CEC3D5E45F1EDEE70AB487FE3EF4 +:106EA00028978DA217F70B39F54A91DA8CF04987AC +:106EB000076E25F8FA6EF6E2BAA48A16F67398EF12 +:106EC0001EB13E6847E755F34B52762ABC7FE54B2F +:106ED0000FAA3557E0BC0FAAAB292EB195F6B10524 +:106EE000A7FFF05613E59BDF30AAF168B5F0AB5F62 +:106EF00009E33978F36139877E2228C95FE4373C9A +:106F00000E3F34E89F900474DF24F87253FF4692DA +:106F1000FF9BFA76929EDB7CC429F700AFE4FF5B0F +:106F2000FFAC1C5F82F5AF7D316C003CBF1AFC42A8 +:106F300018F10FF3AC522318EF76EE0B1CFF7CC94F +:106F4000C8F1183B47FEAECD7D3BF87CFD7FF34B8F +:106F5000F4936E76EB03FC47D9C873C7B715D7B95E +:106F6000E3F0840BF22BACFFCAAB9F3361DE571EFC +:106F7000FDF5E7303F60C37FFDEE731FC37DFD2D40 +:106F8000BF8EFA61F3977FFEB98F023ECF1CF17975 +:106F9000903FEEFCF2CB3FF918D4FFF0F8F4125416 +:106FA000CD2785DC3EFBC81F4B0D18A7F59B8B2713 +:106FB000E1FA5B1F5B38898D22E7ADF22CF053D6E6 +:106FC0006787274BE3184760BC49507D42942EBA2F +:106FD0001CED3F5A85F09D39E98BE31EDD0CCF7027 +:106FE0005F6FEADB487142ACE3F971D3C3DB290F71 +:106FF00067249ECDC99E18C9A1C91842DED4BFFC22 +:10700000DDD73462E98D1B381E3B477AD6DD6FF33E +:1070100009A0E75585E9B799A5E83CBBF9E11D7CD6 +:10702000DE3EA05F7824FDCEE03FE68DA4DF6B2E30 +:10703000FAFDE14BB74472F8B27FC2A8FE4BEBDC1D +:10704000B8F1B1F78C79BE3CEBDAB785F0BC4EF8FD +:10705000C19F52123EEF2CE4877F78E801C0F3D93C +:10706000E77CF1258098B35F79B58A017FBCE43D68 +:10707000772BEEC773DFF4E907A1CF9DDF7C96F491 +:10708000FAD9C77EA01A941F05A625D87D67D9F026 +:107090009F41B403378973F7E64345395F384FAFF3 +:1070A0004DD9A549234CCFC9BFB629CBF97F53761B +:1070B0006085340AFDAEF5D6703B21CBFDBA1B0FBF +:1070C000FD5825BBD24657692ED2F3F9EBF0792152 +:1070D0007A5AEBD771FD736C743DC4F76DA1FD79DD +:1070E000F6419F827AD14DE7B3229F6A73567A7632 +:1070F00034BA5B76D1C5E62D5EED75EDEBEC85F926 +:10710000B3C75FCFC5E1EB52742ACD1A89B7AD651D +:107110002AF981E4B04A7EDF2EAFF1AC89FCF1B4EC +:10712000971D842EEDE1D9CC18C5CFDA81F6E1F4B4 +:107130007CDD1B4A505CDBAB1B749E73E77579E109 +:107140003861D8E0397A7AFAA4213C077B78DCB33D +:1071500073601E43BD806535E635B5CD8CD7DAFC4E +:1071600057722C6EA25E56637A8332CAF86ADB6C61 +:107170006A3F7CDE9B6B9DF75A5E7A90FCDAA571C4 +:107180003C27F4149F62CF43B97BEEC59EA34D0DFF +:10719000CFB1DDA16D5A8DE31C0DF5D1CFB16D5E80 +:1071A0001B7CEE73CEEE8B3CFF0DCF1F75CEDF192F +:1071B0002D387F37CEBF5DE4DB8C3867E921C59E73 +:1071C0000FF38097DB77952CB79571BB27A5D9E393 +:1071D00026CDE706D05F5259FEA3B2EFC03C11D6D0 +:1071E000417112B0061ADF9839163F3BE3243E0F77 +:1071F000B78F585CC46BF2F9387C3E9117F5701E5E +:107200009E4756C33F0FCC199270B24B604A2FC0B5 +:1072100057BDC2D846719BF2D94F7A891FDE5CDC1C +:1072200066985F0C8B5F4CCDEE1FE836DE1EFFC00C +:1072300037C5FAE09CFE4DA4939B3EDD6F937FE043 +:10724000FBF979BF3FDABC23ECE90BCC7FB97F793E +:1072500098ECD4A25312C991BDCBC314EF08B3402C +:107260001CEBE1108F777CA48AC54192B2B6C6545C +:1072700002E977444AFF14E168FAC9CB31B4F376E6 +:10728000CF6AB904E55811D205F364E65B7E301E7F +:10729000F7D883718FEA7CDC63CFFCB727EEB1E7C8 +:1072A00022FD5C63C43DFE64970385E21E72D1A794 +:1072B000C8EFE2BFC8B8477442628614C7DAFD0B54 +:1072C000BF1FCBC73BC2EA1D0B79BC83517CA3B85F +:1072D000EBD3ED18CF884E4E3C82EDF7A9FB176239 +:1072E000FC303A85BF3F23DECFF019DCBFAFB524B9 +:1072F000F0DCB87FD587EBC88F1A6343922D5EE12F +:107300006B4E93FF749F969EA44EE4F96F9281F2A8 +:1073100099E75D2E9643745EFD6D05988952613C38 +:10732000F68AFC4A2B7EE14BB05ED4CBF7667491B3 +:107330007F19A372572641E5F758AA56A53C1A9E15 +:107340009FB55FF853DA55B60ECBE3428FDFAB72D1 +:10735000BB365FF2BCC6A3A7BFB87F35C2150A9083 +:10736000FD5908AEDD99BA38CEB73F138F235C5D67 +:1073700099B954DF25E50C0C765CAD4E6ED7007FD5 +:1073800001B92F86F52EC5685F84F157A1CF64E35C +:10739000CAB862938BF355BEEFC2755D641F851347 +:1073A000F07E02F6672D7DA3ECF305F9F694C71283 +:1073B000D679FB9D429EBBDBDF20D6D933F01C4340 +:1073C0003BAE286D523E5D0CF422F6EB1978999E87 +:1073D000DFEB1DCAC9B04FF75EC3E2A8DF236DF52E +:1073E0000467CFC0D3A47F978A71426B7A25C46F9C +:1073F000595B23F5BFD7AFDF920A09494D79C13CEC +:107400006F1298E116AEF7A7D560FD56D13F9204F2 +:10741000D6C6BCE5B677D2F8CA7C7350E4C1DF8A21 +:10742000F463AFB8FDE2DCEF588E7103E0EB72233A +:1074300094403BACBCB67401E559D65D467927E56E +:107440004B42ABE8B9517A1B96BD52DFE002F2879E +:107450007928CFBBDCA8FB20B533AEBE1DDF9B6A0D +:1074600031CFC3BA2C497C1C188E8F9FD3C8EE9C99 +:107470009BF4903F43C8C03D736B22639D7B48E300 +:1074800059F292F663007D28B67A89AB5EEE6A5FA8 +:10749000E37A7F99EB7D83A3DE26F00D0CC4F59390 +:1074A0005E4E7ED9DD220F8C9D2BE7F08BFB1E03F9 +:1074B000E17FD19EAFE7E50B363ED935CEBAEE532C +:1074C000F9BE2FD76DEBC3BFB440BE5E43788BA12E +:1074D000DFC32E2712D065CF35C372C2B4C75B6C31 +:1074E00072E2C05F2227D07FA178F9BD1C2E07D29F +:1074F0000F911C30B8BCC8CB83F83A947FFFA6DE4E +:10750000BE509947F280E2B98CDDDE8EE71CCA6B73 +:1075100005923CACBE6F21CA3BCB0EED91B8DCE8C6 +:10752000867D82FB00CBD1ECD0706CC861875ACFCE +:107530006DF6E7C5D1ABFA479C5E5022BD3491FF92 +:10754000730FD26B0CFDD305F860E29E123ABB7C40 +:10755000462061A05F44C81F1FEC1B3C9759EDFFFC +:107560005DD0D717F3E4F98FF17B360E7A8FA42F15 +:107570004BD4E4E90BF88A20BE4A732F8F7A2E5041 +:10758000DB2EE5FB1DF0866538A63721DE87E54654 +:10759000547F10F577697362DECF31DF3B5A457651 +:1075A000EB8BAAC8F71E72CA056B5C901B2FAAB39F +:1075B000F07E4D6F829B033C5E569AF3B3048C13AE +:1075C00002FEF14B183F3CC7D2F03C123BC724E00F +:1075D0002B5507CBCE407866133CD6BA5421F73CE6 +:1075E0001A8F13B9E3F136BEFDDD687CEBD63B168E +:1075F0009C97F9B8DCB64A8CDB0F8D41474BEF59AD +:10760000780DD4C5A5D1EC922EA187EE13FAAD1B4F +:10761000F511D69F7C8EF8D4EFE3FAADA86290A165 +:107620003FB2488957E33E303B7A162E82F3E67D1F +:107630007EDECF6A6F8D5B3CDC0FE8348A7C982855 +:10764000D63141D8EDEEF7553E2EEF9525FCFE8C58 +:10765000B2A49BE4BC52A13E4F793706BF4FC5CEC2 +:107660008D88FB56F9D02FCE5A7287AAF3F2DF5AD3 +:10767000DF7D4FFE9155037F452A5A18C647A6095C +:1076800038F2EB10EFE79F63AB44BB26D24FE7C85D +:10769000DF7B39D219F945E82F0DF5D084F1F97B5C +:1076A000864F77C835EBFD5A6FA2C147FE6F93C76F +:1076B00089531B52144FD3C43D472D6C06D1297EEC +:1076C00062C43ADFE19B45F7BC4CA93A1FFF1D7924 +:1076D0000FCD9D1F946AA2FCA028B797C14E5E846F +:1076E000E3F85205F2830C677E50B72B3FE862CF78 +:1076F00031176A275FEC39650C3B39EDBB003BB9AC +:1077000063D5BE5C82BD093BF9AAC46F3C68279B68 +:10771000DFE576F2F4C423580F7DEAF18549D81FDE +:10772000D199424F98DF5F88F22A3A87EB892DDBA7 +:10773000FF95EC62E64F1C42FA1F42A311F97D450A +:107740008AD1B51717BDDDEBF74EE2F9001DC5373D +:10775000E99417E0E2971E8B0F5D79016FD5F8A3CE +:10776000E41B1CF2D9F20DFE5AEBE942FCCDB2CD7E +:107770007791F912B08FA8BFFB5ED45B9F2F71D1B8 +:107780007E9EC7EC7CFB97E74B5CB49FE73B5C2E8F +:10779000B15EC49B2AF0D651BC76BC7C897FF3D9FC +:1077A000F23CD4982B5FE2AFEC0FF9A96FD82FF120 +:1077B00053DF5FD11F72D6379C2F71D6374A9E4652 +:1077C000A17C8450753C45765E9987F2E7647FFA28 +:1077D000980CF4DA1E5B6B98D5F9FB0BD63CD3B54D +:1077E00029344F474CF5A0FFB9E3D8628AAF7479CA +:1077F0005B92384E7BB1473F583D8AFED5B85D2439 +:10780000B705671E1AC3CF26AB5C3F77E84F125C03 +:10781000C119D162BC47D73EF077C7F0BCA7C44AB4 +:10782000ABFD509FA989FB7D80CC9FD9E2B5DBD110 +:10783000F041F8432C8B7151B92D4CF38D079FA467 +:1078400049023EFFCC4363C479DF6AF82C3CEA9AD4 +:1078500021E60FD1FC165E65942FA82FEA158A57F2 +:1078600078877CFC3E779CDF8F1C96B3F51E8A27B9 +:10787000827C99A1E1BC2F3AE59F4F4FE5B07CDDBA +:10788000C7F338647F0BED4FEBDE4228AD909E0AC4 +:10789000A6B9BEB2D66BF149D06B326CAF85148AF3 +:1078A000E7AA822F42DEF820F24BA8695A0DF2CBEC +:1078B000DF093C7627605D706EEE16EBE8C57CB79D +:1078C000507E1EC66AEF5FD988D7676AE8DEE61A7F +:1078D000D10F0EB3243F35C403D04D1BDA9BAB044C +:1078E000D4DCA889F8430DAB41FEBDABE9AEEBD1CA +:1078F0001ED60CD3375A1CA350FE96DCC4F3B7D85F +:107900000C2E8F58AC719C38068FEB5A74B0F0AFC8 +:10791000D42B1CFF783F07EFDD253C74CFD2A2C3E8 +:10792000B07D7FCA7DDFC01079E61CEF7248DC6F46 +:1079300062CA8E95927DFD61E2036BFD776AE27EFD +:10794000C6FFA3F5376B5CDFB1A397DEBF328A6653 +:1079500084274E396DB5C0DFB6737530C4F3D32DAF +:107960003EF29FDACAAA609E6DFF53E08F5D689E6B +:107970003B8FF7E214FCAF2D8EFB8286B80F6A9D19 +:10798000FB83AD8CFCC597C4F97D5B23BE6D8B0773 +:10799000ED00D647EFCB5B15CA33BB44E4EF5BFD8C +:1079A0002F315547FC3FBCC6592F17F9C795CCF668 +:1079B0001CE629B7EEED32DBF74850CF89B89EEAD6 +:1079C00092DB56E98EEB3DA6BDB93CE1752CF14F3B +:1079D0009A8D8FDB2F63B42F0AE1B3D430E9DEB781 +:1079E00066B44828372360BB4E90D0CB94263F0422 +:1079F0009BCBF3C01411FFB5FAFF8BC6F59AC67E78 +:107A00004FF72854BC47513F921E161DBAEBB8FFE2 +:107A100005E95706EF8BC5BEEBC6BF609E4019C88F +:107A20005DC053F110CFAB638B045E252621FF862A +:107A3000E73BBFEFA28AEFBF9488FCF9808B0EAAC8 +:107A4000C8CB535DCFCF08B82F36CEFA4B6B9F14FF +:107A5000B122C7F761F4E898F1F761BEBDC8F95EDD +:107A6000B5E60BC17C53DEC47C05DA8DDC4F4E7A63 +:107A70005D27E8B5C3B0E8C59620BD2688FDB6A34E +:107A800091D34B2BE37A7282D82F6C09A78F06FF14 +:107A900021BD26353BE9A5B9F64321FA58F7A47371 +:107AA0005A6AA29FCE1106DDFB676B82E4E7D2869D +:107AB000F9EA89011560E9A960713C12987E83E8B2 +:107AC000BAF38E63E4422DAFB997DF03C21AF453C1 +:107AD000857FAC27B66C4C3FE53D199E0FB15F7CAE +:107AE0009FA750BB989A4EA3DE2C6A1C32D1BE9839 +:107AF000D06A34A0DD1C4B73FC54CC370EE25ADE46 +:107B0000E397ACF3B7E37E32ED8452E25FFA53D1F0 +:107B1000C0FB7555B3EC36DC7FADDC8E803AF98165 +:107B200022AD4ACE0BF592FAEB5EA67BA78AC9D0AE +:107B30006E2E59E2C473A4E5BBCD1225CFD9F00A4D +:107B4000FC1A31CEDD4A749AEFFCEE4EA1F55D6869 +:107B5000B907F0F582ED3EC00E3C03035D5E05FE05 +:107B6000C14BD65A1A4421EACDB45E8AF4D6D2F17A +:107B70001095434D49FE3CD583E516A41FDA1973D1 +:107B800015D2D36586C7F53D9ED1F117C17FC03AA6 +:107B900022022F161C11175FB9F1E1AEFFA5784044 +:107BA000BE79C1A617C1B2D2D0FEAA3C21D37DB303 +:107BB00042FD2ACF2B2C87F1112D477113684BF60C +:107BC000BD369FDF4B0929D94FAF457B2CA6CF305F +:107BD00059BEDF27FDDC6E570DF13D07C5909617A6 +:107BE000D9DFF37CE39C96F804EEA3C5F2C31AFA3E +:107BF000FF767A73E4BFD93903F60CCC135AA7F297 +:107C0000FEA14F39E44585DF3BEA775D304EE7B1B1 +:107C10009D032DBDB04F4BEFC279ACFB456A8CE79D +:107C20007D5BFE49CB0FEE5EBFE5773F9861F15A71 +:107C30002FFA21B9FFBD06BF13712596BA81FC52F8 +:107C40006318B5BC1EAFC5FA118CDF01BEFB307ED8 +:107C500007E5A18C41FDEECDD451BD3713A7FAEE57 +:107C6000CC5CAA5BF1BD9E4C92EAD94C8AEA9FCBD0 +:107C70003453792093A6F281CC3A7ABF3FD342F5B0 +:107C80007FCCB451FDE18C49E59733DDF4FC70A65F +:107C900097EA0F65F653F9F54C96CAFECC612A1F98 +:107CA000CDF4515963249398A75453CBFD9553BAFF +:107CB000619D76BE5EE3277F7D8D904F4F9D9E1325 +:107CC000403C7DBE7BD998FE79F4B3DBED917943DE +:107CD000CEEF36CCC839BF6735B5B7DCD17E42B2FE +:107CE000C6F1BE387199E37D646E83A35E14BFDA7A +:107CF000F5FDAC058E7AB579A3A3FD256DCB1CF5FA +:107D0000CA96F73ADA4F5EB7DAF1BE2C7DA7E3FDEB +:107D10005547EE72D4AFE8FBA8A37DC331EEB7E9B7 +:107D20006E68EF93C09838E53FDBA155C23E99627B +:107D30001A685CC43EF3A70E8C97021FD5609CD0D6 +:107D4000DBCDEDA02906AB45A1E1DDC5E385F0FE65 +:107D500032AA7733A20FD4A7611DDAD5633FA59B62 +:107D60007F0F08DAFF46F4A77C6A05FBF3F60D588F +:107D7000F747E32487E07DA3E8F73C9D070D714FAB +:107D800014FBE379E4D4F641F17DABDF917E7BDD3A +:107D9000791EC4EF3FE096D2A6A45B52A3F9450337 +:107DA000C27ED114EA4729C8862D2E14E3F9D62CB9 +:107DB000AED0F9668AC87FB1FAABBBF87738547198 +:107DC0005F0D3FF7F206B4B9FC30BFCF66E1F7D2E2 +:107DD000ACB33E7DBFB33EE7A4B33E6BD059D70AE8 +:107DE000F8F3AF08707DD893C9CEC1FB80E80FC20D +:107DF000F80A5085E00E00BD74B2CFF9BD6A4BCED3 +:107E000004400E60FC8935F2EF1BD50C3F37A661AC +:107E10007BB51BD67525D6E3B5D44ED84BFE53D7CC +:107E20001F93C2797B315807F3DAF848AD75DE1F2E +:107E30000CD639D7E1B6CBEA026FCE2EBF607B4CB1 +:107E4000DC33F1E9628122DF9C5299F1BE5BA5929D +:107E5000C2737EBC91251E84B242C9495B6C787E98 +:107E60006780FB37FE1310896519DBDBC4EFDBA4E9 +:107E7000CBF0BB6DFB44FCE3B5D3F737F9D0DFB1F2 +:107E8000D670E467AF15F479B22A407AFC434BB957 +:107E90001D38185BDDDB84F9374946790D4551857E +:107EA000611E75D1491FDDBF668D06E5DF44F19384 +:107EB00068507D29C31AD64CC57B1E1A95AF6474D1 +:107EC0002A8F56DD38702D34BAAB3264E0B9CC7BE2 +:107ED00009B737B717AB34CF1F2AD75E8272CF9757 +:107EE000698921FF9FCDC4A8DFF6814B25CC2FF0F7 +:107EF000252E77C44B814D6438A3005C839427EF13 +:107F00003BEAA77CC3225D3DE8B7C57B3BBCE932B9 +:107F1000FA5EDB2D2A9D67CA1A7B25FC3ED25E3FA6 +:107F2000B7AFB6075AEA30BF7E7B0DFBC0D251F81F +:107F300076A1B5EF9826AB36BB2D9EEC6DC27BEEDD +:107F40006C0D8B4FC5FDDB096206EBB3F43ECC171D +:107F5000286BCC6D4578CA5AE0645C8DED19F969DF +:107F60002CFA78FD2CF508C051A1713ABE12E07EC2 +:107F7000A0B214CF8F687F8CC7ED9E3A7DB38EF18F +:107F800098DF466B492F9CF9BA2F81FEA93325FC57 +:107F9000FB5367BE3EE7BB28877E9D395662BFA76D +:107FA0007BE61F7F30DB0B0439F3E80F662BC444FC +:107FB00059475EE3C6379E998D76ACB980D5E13DD1 +:107FC000C8CDBA4AF72037E31EE0EB22BFF7BE5216 +:107FD000B50BC72F9DE4D98DE5E450358D63DD2FBA +:107FE000612C5D4DFE72E14763C7BCD4AFFDE90073 +:107FF0008D77D7D4BEA38897BB16EBF4DDA5F662C8 +:10800000A33DD4483608D1E3AE1B4C5F15BE3F3DBF +:1080100089DE176BCFD0FD6235D78264657BA5F80A +:10802000514C1533A732CAC3B0FC10AF55B3BA6A6E +:1080300094B70BFB9294775CE4619877BC5349C882 +:108040004568E7D4311A2F3C742E8166B1FE52CBBD +:1080500055783EF888DCB277252CE18A10CF17B628 +:10806000E2415B4F7F64FA58F68A557E0BED159816 +:10807000FFC98C4625D82364BFE43231AADF97318B +:10808000A8FE40A68EEA3B33712AADFB2D13C57EB8 +:10809000DE2BE2BC930D4F02F3C7272A4CC37B5B58 +:1080A000934FFD7333DA0D9361C911381BCC8F7177 +:1080B000BF16F0BB84FDE7A37C80755D13E57E8D64 +:1080C0006B62FC7B4296FCB0E4C5FCDF835DEAF0AA +:1080D000CF43BD4EAC0336FEC40DCEF77BBD7D74E1 +:1080E000AE326FE07876F72F12F09580D92A378C70 +:1080F0001C0FE483A37DAFE131BD575DBC3DFD198D +:10810000D7B962DF46582DF0D13E919FF4998DB3D7 +:1081100023AB6DF439E0B2BF0F6C991DC1B8EEBE50 +:108120002DCCD023B67144FF039963A58BA68A4D4D +:108130001C45FB84E70D0CDBBF26BF2F62D57B5BA4 +:1081400094E4413A4FA6E95E7027CA74FA1848D9F8 +:10815000E244058D4BF55F07E62D36A15F592BDF15 +:10816000BF0BB4BD0328FA8B403E0485DC21861684 +:10817000729DF41BE0EDDB8992453AE2BD91F52159 +:10818000586A639A2D80F9AE6D6A18A0EFE8CE7236 +:108190003EFF96E421F8CA62BDD202285B03A9D74C +:1081A00003C0C733CFDF686CC5FB183F90E3E8C757 +:1081B0007BE0C93F52DE7DC71F550DF761D913CF54 +:1081C000533E7E8734A462FCBE22B87B31E6B18088 +:1081D0007CBC14F3CC2A82155D0AE8A97DE1F497F2 +:1081E000F8A5FBDD8B9F8AC1BEF70D7D06DB9706E8 +:1081F000999984F57ECB3BF43EB4B316B19E4EED17 +:108200009DF47E32E6FD4560BCEEF9F01E7502C5B8 +:108210003BBB3B113FDF2AE6F58A9DDB3B4DA84F78 +:108220000A7239C7425C6E0CD775A8DBCE31C3CF5A +:1082300015FE1C0E8C545AEBDA78F48FDF9D8CF708 +:10824000339E90FAD0EF59F6C45E09D75776642F63 +:10825000E5391CC91CD33B2C3A5BF8862D3F0FF344 +:1082600088307F232B656B243AC2D077849492FDAB +:1082700003189F5AF74166A05EEC0E717D386F08B7 +:10828000C6B1F1F53C457C17A9C0F793E8139C48AB +:10829000B75D3CCE7564AE19BC12EAEB57D5366CAF +:1082A000453E58630617C13C9BF469744FE65C90E9 +:1082B000EB17EB7B10565ECF2BD67957E4F56C109D +:1082C0001796BDDB387FAEAFEE2B6DC0B8939FDF46 +:1082D000AB5A5F2CEAC5CEBA25678EE8667109D421 +:1082E000371DD95B858A7A13EBBD15EFEFB0EFCB65 +:1082F0000CF7FBCB03F322EF80FA46A8E391FCF3E3 +:10830000CAE07588DFCFF757F799F07EB9807353CD +:108310003FF05108CF5B003018044712BD972B4047 +:10832000FFFDBB92D7F9AF61ECF19A84EE019AF7A9 +:10833000879677A15DFEB8AA5FCA6660FDBD5DC87D +:108340006FEB6FF088FDF3DEEF2614717F07EACB49 +:1083500077FE7D27EE9FC6668DECE7524F2A89DFB8 +:10836000B763C73DA4279015E603DEE5E20E8A5FFA +:10837000FE67A787EC110CA7E3BD9E46851D534AF7 +:1083800030FF3441DFF332BB14EA07CFBBBD2548D1 +:10839000975E9EF7DBCDE5DBAC277C94EFD7D892D8 +:1083A000B883FC8EFA7CB29BABD8F01FCA1BBF848B +:1083B00071793B47674D0AB49350FF4D44386F5A6B +:1083C0008FFDA6AC5AF1BD04BC9F2BF1EF67B2E75D +:1083D000B85EEB287EA84F837A6344D1D11FD4EFD7 +:1083E000597039EAF97E3FA79F5C9CDEF9AF8D5842 +:1083F000D6A2479CF517A77F8DF78DCE4DD40C8C58 +:1084000087750C794C5F04DFC775A46308E506E542 +:108410009B9D5C9C4079A6A6B7E0BEEC0B9EECC48D +:108420007C51C0FB140DF0FED59DCF7622DEFBB74C +:108430002626EBB6FA9C3F8394A67DF92CED4BA53E +:10844000F8DEF5B8CFE1FD77D06FFC7889906BE26C +:108450007D638D25E7C01E073B4BDE2AF635066E91 +:1084600041EE37DADA2F827DEF5DC0DFEF82F9303F +:10847000AF01CF356D25B82E3847E1BA2E55B2A8D9 +:108480009F9166782FEB3A79E5BBAE80E7BEA9DC19 +:108490008F1728E6F238506C903F18F044FE8A732C +:1084A0003F0C65111F81E2965E1FBEAFACA5FB9528 +:1084B000C12C1F074BA47F50DC5395F4A574AEF17B +:1084C000D739BF8F64DD63A53AE6CB083FBEE27AB9 +:1084D000FEB9EAC44025F46F1B5A4A72E48B41612D +:1084E000F757F238C94752E6F5E8E7B8EC5CDF0227 +:1084F000347FEACF0F3E89E595EC370B506CC6B55B +:10850000E2A3583E1AE44CDBA0CF58884B7BC7FC53 +:108510006C3BB99F8CA1329463B364A84B9867D429 +:1085200027E33C93DE5F7B91F90439CA77D915F2D2 +:1085300024B314F77E545F65EB7F4F48E4BD09799F +:10854000E21576431BEB6DC2EF3101EDF977F9844B +:108550007CF10AC7BC22BE8BA2E8711DEFFF351566 +:1085600035921DFA7250C46307E6BD1BCF032ACAB9 +:1085700009687FC0CFE305E7CA581FE6FD2AB104AA +:10858000A3BC3C91FFDA2AE6B5E405FA7912D319C7 +:108590007BEC6FA751FEED637F5BBA40073ADC5B73 +:1085A00035FC7D13D5FABE24DDBBC83D23BD116467 +:1085B000EC1B490FBA47412E259E9D8CFB7BD04B6F +:1085C00072EBBE62A7BEFE7848E4630B7905FA9AA7 +:1085D000E4E1F60CBF57A89E0FB22CD897B786F8E7 +:1085E0007B5F7A0DF1990F749D81FE3766F2EF4241 +:1085F000093C68151E96B5C71FCE87A9FFD1209FDD +:10860000C78AFF17CA87D823E01919EF4F125D5A9E +:1086100087E9C2E57F6B516212CAE9C71770B8DDFE +:108620007CF0E7A0F0FF9D97080EEBB914E2FCA6E2 +:108630002A69FA2E907A5EA1F7D67AAD76F9F77CA0 +:108640001D67754D7C079AEF57F588CCEDC9987278 +:10865000CE7EEF3A88E78729F97D66DD071FB98E60 +:10866000F8A038D7939C1DB90F4DB27BAC75FA0CAE +:10867000E77B777ED530DCE72738D661EDAFFC7A33 +:108680004AE93DEA13BAE7A9B04FE3F97FA3C81F4F +:10869000DA28035F01FC3DBFCFA670FEB3D679E7B1 +:1086A00009FE7DB98DFD7B451E93E1F07F6E3AB2E8 +:1086B00085FC4D9B5F0C991E68BF09E532E0ABE776 +:1086C00025E73D7CBF96CA4D36F2ED5F465AE3F989 +:1086D000A2ED1FE6E07DF2DFEBEBCAD0FE082A5CDC +:1086E000CEB1668DEC83BD7E7EFE314F4FE7F13615 +:1086F000F89F7F4791B70BE17784A1DDE7C5F9BC0F +:10870000428CDBE14F9CE4761A4B2831D437967CBF +:10871000DEDD89FA799FCA86E535E6E1EE0BF07A6F +:108720007368776707B713487E5704A77799F3C92B +:108730008E10F51AAAEF53E347D12F6D7EDD672027 +:108740009CD03F81FBDC7C6F1D9DEF3AAA5939E23A +:10875000EFA96295EC9D8EC77C07F15CDF1A484F4C +:108760000ADAF077A6F84755B89F4719CF748C57A7 +:108770007971E3C1FCFD9EABF2EF9F2A9E7D54E62A +:10878000FDC8BF70A658CD619EEE995B348A471C28 +:10879000F03AE584556E16765E574677DC3B5651C7 +:1087A0002E207FB2169207BE5889430E58F2413DE3 +:1087B0003F99656DF9192F07AB5D7C5945EF8F2205 +:1087C000DD681E639C796A0ACC73F938F35CE9981A +:1087D0000725F8F0F76DC78873B8EFADB9E5A9556F +:1087E0005AF2F4B418FF3FA4F4CE10D4EF1CEABB45 +:1087F0008ED253257DE25668725990E7B9CE7B78C8 +:108800006B3B9A0773B5D437913E989785FBE27717 +:10881000BED4D9E0AC7CFD62F7557F8809793A4235 +:108820007EF27D25FC16A827B0FEF941AF67EB2844 +:10883000F94579B9E2948FCB47C8152E27DFBAF9ED +:1088400064071D47CEA7D2FBBC3E4CF3EF7DB9F4C5 +:10885000696B5982F2786CFB3C81FB5CA96696DD02 +:1088600066A25CB8CF7A6FAEEF5A5481F678FE3DBF +:10887000DA75A5BE7C7FFC8ED77D01ABFD87476F87 +:108880001F74B5AFB1DA6FED5A347F243C96DCC16A +:108890003ADA8DCA9F7DC37625C2B7D7E31AAFC433 +:1088A0001A6F17CD6F9D17AEDD79FF77CD5AE4CFE4 +:1088B000DE26D4FFE7E09C769021DEE381B84D4FC1 +:1088C0005E2BF8543DEF77E0398FDF103D6731279D +:1088D0003D5B4F5F3FE677097E99717E97E0F674C6 +:1088E0002BDD8BBE56D06F1D9C3870FC750764C79E +:1088F000FEFD5F78FFA7C07B69013BA89EEFEFFFFD +:1089000071F0961580B7E2AF0AEFB60097B73D0158 +:108910002EF717EB2D035E807FB121C5F1376A1664 +:10892000435B3FECD9EB310704CAC50A334364BF4C +:1089300064A91FD6D15F72FD7FFDEEC4B514B44AA1 +:10894000901CF38BB8A71CE2F1BC1DB5CBC68CA75D +:10895000B4679CBF9FE47EAF88FB4D7B276C627839 +:10896000DF490D99B16530DEED455CBF0F54AFA511 +:108970007BC0F74FD81DC3F34C57F54D3194AB9DD9 +:1089800013BB98FDDCA555703FBD7BFCEF17893804 +:10899000C0F9EBF97949C0BF23CACF5FEEF6569E06 +:1089A000DB0EAD97CE696FD7FADADFA2F5558725D2 +:1089B00001AFC81337DE2A786F2578EF9F702B7DC3 +:1089C000C7A16BE2B41AB4CF1E10F8B4DA0F4CBCD6 +:1089D00089E0EE2C5B1BA3FCE5B29B1CBF17E015E6 +:1089E000BF93E59EE7C6305FFF0EFDAF03F7A3E33D +:1089F000C2BD968D36BF5A00FE0F59F0C74CE293A8 +:108A0000B71BFE7F798BE17F4DF0DFB2226EF7ED71 +:108A1000309CFC8EC79D779614DE374AC899CFE00C +:108A2000FE7D2E566B782EE477215E1178196F9FAC +:108A3000FD4AB47B09F1371DBF2F25537C65432DBB +:108A4000CFBB1A6FBE0DDE5CE958F70536F6C98E4E +:108A5000F58C07CFC6221E875A7FD8D9EF8E6CD0EF +:108A60009507650AFC9A745F63C709390E4F86F152 +:108A70003B820FDE62BC8EC79705F16AF03CECB713 +:108A80001AAFE3C1B3ACC8E0DFB11A07AF6E3E7DE9 +:108A9000BBF1F8FF1B7FB65F201E2D7AFC2F3F8EA7 +:108AA000DEFE01C4E305ECF3FFC5E3D8F03C7A81B8 +:108AB00078B4E4E561718F7AFA675B8FDF0072F357 +:108AC00099E4CC99F41D292571C5F22B187B2ECC85 +:108AD000F325A70B3FAE7BBEE7847E3E9E5CB8913C +:108AE000BEEF980A52AEF2094FFC5F1BD16FB74C34 +:108AF000263FA7BBDFF10CCF27FE46987F27E24435 +:108B00004A267FC1ABC9A959592ABC3E96941D7902 +:108B1000BA184971E4AFBAF07D9C19F734A21F6D01 +:108B2000C9E87058743E915AFEE6E89C92DF163A06 +:108B30008F07CF43E19A0B923BD63923CA867F7FBA +:108B4000E632FE7B9C8617E32CCB4EF9280FEF878D +:108B5000F888FF0ED7F36168BF2C3983FF6E9CF550 +:108B60007B970AA3FCA135BB2F257F2B5BB19CDA39 +:108B7000BF2CE83F824E167F89DF819BB4D2F4AED2 +:108B8000B2AD271E11F117D6528970F4AB89CBBF55 +:108B900002E31FFF5B5F1CCF7DBEE54B76629ECA82 +:108BA000895B8A25FBF7629408B7CF66AFE4767AD3 +:108BB000FFC9B4D763B3D7AB231C1EE8FFFEA1D116 +:108BC000CE1DE2FD4D6949E407272A97D9E2EA97CD +:108BD00089F1ADF7EEFEC59130E7D702DF83098951 +:108BE000F19B9BC7EECF564C10BFAF969866FF7DAA +:108BF0003537FE3E1B4E4F8C40F9ACD472FA6EDC1A +:108C00004F4D1AF131538C2B116E0B0F70CEECC6F9 +:108C10009F1EB5E8F4EEC9F544270B1E6B3E0CF120 +:108C2000625CB031C1E3C525222F69CE2E7F762B41 +:108C3000C52BC4EFB62A005711CD3F75ACF9AD7105 +:108C4000A30ACBA930EE1A4FB605FD93EE7558ED89 +:108C50009EF9E3C277217CFDC73DFAB6EA91EB7736 +:108C6000CBA569FB9D7CB338C2E34551F1FD1EA63F +:108C7000B45436DBE8776D84FF9ED0C5F2D3EFD1D4 +:108C8000768072DAA75ABC4608BFBB2BF20D607C17 +:108C90003B7F9C11E7C0B918D49C88709881CBD0D9 +:108CA000CFF92C972F870F7EB472B438E571213736 +:108CB000CE86EB1CFB657972C677F0A7436F4AEF4F +:108CC0008D63FCAEFFF8D595B8EF6E52B85FFBB080 +:108CD000DA523903F95C3536A2DFF942D761E1BBDC +:108CE000A01C1578EE3F99F2E2B9A67E05E7D7F70A +:108CF000AC18F06C84F241B16F9FC7A6B6713E23E9 +:108D0000E639ACA6DBFD71D8BD91FEEDDD1AED7341 +:108D1000F24BF6468E6CA77BFB1DFCFB9BD356FCEF +:108D2000A615F3CAFA559E57F2C31D45748F03F872 +:108D3000D5E10789AE782D83F902B7798CB5FC634C +:108D4000E25C3E7D8FA55B91FF2C3935422E752C60 +:108D5000B77E97669A9D4EF9756E13F0727E3A9CB7 +:108D60005D16B9CDC64F0F4754C779EF4742CE3F86 +:108D7000E33A3FAE38C9CF77B00E8A87FEC7359544 +:108D80000FE23AA2EB5ECB609EEDC3429EBD9AAD70 +:108D9000F93AAED75ABFB54E58D7B42F43FB9B9B79 +:108DA0009DF2DADA6FEF5912743E17FDEBE4C47AE4 +:108DB000F2A3BF8BC785ACF1A249C0D795B8AED49A +:108DC000B6A2EA3C9E2D7CAEF6011EA7306E2801AD +:108DD000BC757BCAE8BB1413DB87EE463EFA7D28E0 +:108DE0001529B1F1E91723CE73AFA59FB11DEAADE7 +:108DF000658AE11D4D7F2D4FCAA3C27D5B38DDC260 +:108E00004689AB0CCB0397BED43DBD5E6CDFCC5A1C +:108E1000A8FC004B5C83E529410FABFF29962B9AF8 +:108E200083722829533CF054CB72CA775BE9ED2B4F +:108E30006A807240ACE3C7AD329D9F5F12EB70CF8A +:108E4000F7FE0DB27933F0DBCA2CD7DF2B37F0B841 +:108E5000EEFB5B9CEB81FD77FC069CEF937CBE6791 +:108E6000805DE652922BB72B7E9A2D9981F7589E02 +:108E700041DCA39DB12C687D378F7E4734CDFFC97F +:108E80009E4BDEF61DCC8BF85184E7C73C93BCEDBE +:108E90003A0C29DEBE9F7D6BC840FB696C7D9FFE4E +:108EA000B8ECD0EBD33EE5FC3DC0D9A86F70DF290C +:108EB000B9CA5B6DF274664990EBBB15D2A87EAD62 +:108EC0005F45421C9EFF92D78D66DF254BB8FE782A +:108ED000CFFED1FB274B8AF8FB03A3EBBBBDC541FB +:108EE000A14FFA2A51CEBFA779F471BEA673BD78FF +:108EF0006AE32FDF8FF1D9131EE7F77D1ED2395DAC +:108F0000BB752EFF9F39F8D1AE32A4CB2649C77B63 +:108F1000B5AB2718D3905FDEB76106E5A56C15EDFC +:108F2000AF2F4ABD8EF2E3F603ABBA309F66D2A0F4 +:108F30004747FBF6B0EBFB41C37254E7FBF8BF01B8 +:108F400044BB41A8008000001F8B08000000000007 +:108F5000000BED7D0B7854D5B9E8DA337B1E49263A +:108F6000C9CC6426EF8419021820C02484105A84C6 +:108F700049423408D521BC02041C1E62901022858F +:108F80001E7A8FE764870086A8343EAAB4DA3A498D +:108F9000C1A2F531D8B445A47440F0D1EA6D785936 +:108FA000AC5463455E22C6568FD4CBD5B3FE7FAD9D +:108FB00095D97B272160EDBDDF77BF4BBF7ECB35D9 +:108FC0007B3DFEF5BFFF7F3DE23292FAB08D1097F8 +:108FD0004C4E990B6849C8290B2D891CF2CD8B2763 +:108FE000C44D8892E824E4A841B98314D24A7BACEA +:108FF0007D8744EBD38DD8F8336554C848EB5FC107 +:10900000BFC984D8ED127612F5E05D4612B112FCAC +:10901000F715FDFFEDDBE2347532C463204584AC07 +:10902000E3BFBD4B7CAB605C657A9C7D8797FE702F +:10903000F9EF6F8CA7F5A3CB937C2D9EE8B8171A98 +:1090400008895C477F37FBDE28A4701D7D33C7A7E6 +:1090500090E8777D799EB73FDB60C5F28EB051B165 +:109060002410523B9D957A38F4FD6B4D9164BBAD55 +:10907000FFF15785E93A73A3EB3A3A7D666290B601 +:109080007FF7AEB1F14BFAE8F72DBB17F1B472A739 +:10909000B6DF8A90163FEFDEC5C6E96FDE77F9BA14 +:1090A0004EC3BA2C841C33909A701E2D0333139731 +:1090B000E445DB95E9E852B54C3BEF9C6AEDBC47D3 +:1090C000BF34D6005F1C0B34C52EB6C1AFBE6101E4 +:1090D000CA0F3B617CA86F1C4BC884FEE122A4919F +:1090E000907151788E54307880B3483221332938CA +:1090F00084D2731687EB48C5D8F8605EEFF51C354F +:109100007423FD959FCABE1DB4FDD06D8B0FA4794D +:109110007AF35F10C619D71B8E6BE53FB231899089 +:10912000B4DEE3F4F0DBF42BD3E3FF169FF54F87B7 +:1091300010E265203E73713DB0400E9B26503A2CE4 +:10914000A8CD9756D0F21F8956A4CF3F123D582E76 +:1091500020C41F463A7A8A668CA2F3B7C71209F474 +:10916000424B7C682865E963952387A9E1F929A723 +:10917000EF826D330E51B4527E086C75033DBF67AC +:10918000243B68FD2F279EDF04F50F3A0D76C903B7 +:10919000FCB614EB9F9DF0F88CB4FEA8DD81F0CFF7 +:1091A0009EB5D8A41E57CFBFB375FC6BB27BB05F22 +:1091B000B9952836D467DD858151D175DEFED8E2B8 +:1091C000CD69749ED9B5F74F80796EDFB6DF349CD8 +:1091D000FE7E9FDD8AFDB6F2FED5325FAF95AE977B +:1091E000F2FFDBC0B7B0DEEF4B21D08344EE32C1DB +:1091F000EF02AE45F567CAFDB628DF8BDF5FE7FCFF +:10920000F91BBB01CB1BE383E5767754BFA6CCF2F9 +:109210001611FAA9DC4E3470DF606778375B7C4F3B +:10922000909CE83A7AF058C7F0F8F689CA4DEEC239 +:10923000FEF1785027FF578BC763EDB17ED4C793FB +:10924000187D3BCC4481F51FDF9215DAE08DC259C1 +:10925000CEE174CDFABCC13E3ACA076FDF79662110 +:10926000C8356DB7D1E664F003BEDE75303C100F33 +:109270009587E4A83CBC1F4FAAC27DF0F39FB95C60 +:10928000E9E5E7E40AA9D5381ACB505242EFF6FDDA +:10929000C9C57C8904609E9D6B2C35ED7DCC37C89B +:1092A000C1E8D54B3FC01228BC41FEDFB7CF5ABC46 +:1092B000399E2E7D435CC22458E749DDBC274924F2 +:1092C0007E3CF0CB2CA30FE874B29EE9C16A532810 +:1092D000BE80CEFB05E78B3FAF355684F2406F1062 +:1092E000D47BFA7917D61895B9749DD521AA47A0D1 +:1092F000AC31BE07E5C27A2DFD8E93C077C6C17C26 +:10930000D3D97C6F2D2B437BFAEEF49106D093C713 +:10931000673D88F6C8E960FC7094EBF3E3B3B4F6FC +:1093200022C631801D3F11ABE5937EEC8ED3716D6B +:109330007667A7399005FAEF785BF5C275C0776D4F +:10934000B1BEA19EDEF4F9C46164F0037FAAF44FBC +:1093500087D9F751870BF833CDB7C1D39B2F8F4EE9 +:1093600067F66C67655C4D084ADEFFAFA5B9ED8016 +:109370009F9DA14A84DFEA647411FA8270BBB50034 +:10938000555F944EC24E8D76303D79FBB6F74C1E3C +:10939000DA7F11E80D1B67120A8FBD25A3AD85C2C8 +:1093A000F7B681EB8F27E243E0DF88F9C4BA8A1D64 +:1093B0005A3BB622A4C5D740F6EBAD90A122A49AA1 +:1093C00077F963DE769857D4ABD7B2BAB0673B4330 +:1093D000066647D727E2FA29BF8CFA15AD9F5E3F94 +:1093E000B2C048AEC1BE850CFF12FB06F8B9927D33 +:1093F0005BE7B83A3FEA342115488FCB4BB74EA014 +:10940000EB7BE77F2415B4C0EFDB18BF2EE77CFAB7 +:109410008EB96B941ABED37CBD27399D4FF7E037C8 +:109420009800F64FB45BC8F5D93B5C0EDE59AF959A +:1094300083EFEAE87AFB362DBC0BEBB5F02A0E3B46 +:109440001B6F7D532CE89563826F961BD1EE1C0B2E +:1094500094C58F03BA8506FBD4745274F30C246F41 +:10946000F325EAD7D371485B2CFADB2E606BB097FB +:10947000B98C8E9F5919BFDFE434F4E95FF5E8E554 +:109480005C2DDDC18F50E3F114B7A7A2BEA0460B3F +:1094900017F169FB1F353039565AE2D0EFB39B19EB +:1094A0009C761A7F288C9F8BC00EF6CCAFEB3F5F6B +:1094B0000E69E67F12F8E40AF30FE447FDFF38A6D1 +:1094C000EF38E6E855CADF3715C79CBC46FE7E87F5 +:1094D000FBADFA78A6C76E70BF46F8314B123DA7B8 +:1094E0003BC0AF73327DB07CDB0CF43B8F1A029B28 +:1094F000E2819E470C76E0C7A3D3973641FDB36D5A +:109500005EF4AF043CE53A3F4BD89F81ECA75E7E0A +:109510008ECFBEBB00E63D3E7BAEC6EF9D7329837A +:109520004492A2F5D955921FFC861E798DD1D23D69 +:10953000D561467CA53A3C1AB8665FCAC6717AFC0A +:10954000E16DD41FA6F8A89E75FF0449B59E53DCB3 +:10955000AE7DE0F068FD6199F9C3EEA6AE7501DA63 +:10956000FF535B20D1A9A293CBA9C5C3714E5F68FD +:1095700007FC375B0E98FAE2C339B38C3AFDC4FCA2 +:1095800034BD3E12ED87805EEA631E3D3EAF76BE7F +:109590001BEC761C6F6942B09E8062CDD3FAA7FDAA +:1095A000F16FCFBCBAF6FA79073BB574D0CF7F3EE6 +:1095B0009168F8553FCF7C8ED7A26D8CEE476FFE39 +:1095C000F61B852EF0B75F9A087CF8EE5D7F3F3E74 +:1095D000D70576FCD044007FBE932571DEA52144DB +:1095E0002AF07B5042BF70EEB6C5188FD1F64C2FD3 +:1095F0001DCB2980FE55DCEFA1FA486307F5F2F98F +:109600002687F3C344862F42C259901FB85A7CFD67 +:10961000B91F7C5DABDD783391D9497279EC28B400 +:1096200007A24E225950EF2F9E1725C508C23FBBF7 +:10963000CCD62C2582FF1858077AA17B76BCBD9D1D +:10964000A262B6C53F0DF4F8F1230643A384D3A26A +:109650001F5849181F7A6FF2DE33827EAF0C18FD57 +:10966000207A33A0CD044AD7529B02E3151E9DFEFB +:109670008B7888CBAA2C1E23D533B327073E3242E2 +:10968000DC3937CEB381B62DEA1CDCE8A2DF6756A1 +:109690004810F99183D4AE77D1F53F05956F110647 +:1096A00020C5CD315157D66C9942BF8F7077186C59 +:1096B000B4C7070FACD962A5E36E6A0CA442A8DC5C +:1096C000F6C02D5BACD713929CECEF9CEC23E4F03E +:1096D0000333A65AB3E8BA7E2CFA576EF14F24E44E +:1096E0004543D02BD1EF5F3CB062AA4CF1234B53E2 +:1096F000F20DB4FF65E7EE2DD07ECE9C55B7FD8A06 +:109700007ECF7A70EB54998E5F542DFA3F38B54C6A +:10971000A6F04E14F54762A0EE8A0B780CF9843C53 +:10972000F8C0D4A932CCE7F4DF49687DFC835371DB +:10973000BCE2206D9B0E8BF829F617E3DDFFC0D449 +:109740002D0AADA7AD2F23EF535215772912E8BB91 +:10975000374BEACB643AFFCAA4D0963C8AD8F115BD +:10976000257184D6D724FD66AA251FE8E4CFF7D05B +:10977000726DD21E1CBFA85A1901DFCDCA6FB75433 +:10978000D075B454B407407ED7494CDE62ACF511B5 +:1097900003FDCFECF5011244FFAD95F149A66F181A +:1097A000F289A8E7B23C574F3D95D53B36905B0315 +:1097B0007DC8E3752EA67F3A62FBFEFE072E4F742E +:1097C000BD28AF892788FF695A1E8A251D566A6FF2 +:1097D0006EB190C26227E0CBC6F996CF6B657089F7 +:1097E0007E44B9C509FA6C3AE341FC5E49E17A8DE1 +:1097F000EB831C1FB7032422CF0491371A101EB726 +:1098000051BA7506FD3D39960477D1D29D44B03EDC +:109810009D10FF2E5B74DCD7F9B0E5B1814203E502 +:10982000C7F2E4ACFC266F741C0AEF468057E49341 +:1098300028DC32C0ED3656E6DF99A7823B8FC1DDCA +:10984000E164F8E8F882E5E93A8E0C6E077E6F7005 +:109850006AE5B9A8B3C044004E17975B0FEBEF2E33 +:1098600023689FBBEF8B09811C126BD01750E55901 +:109870004E72BCD65E1A4E426355FE8D1C3183FE7D +:10988000A8BD9487BFBB9BFAA68BC84FD65E72104B +:1098900065ACFA77B6BEE8382EFCDE1F3C34AC402F +:1098A000FDB5D6C111C8C75D4F58FCB736DE9FE283 +:1098B000BC82DF537B49EA077E197FF70E22A4138F +:1098C000E8447F277951F8487105DAB7B576A6875D +:1098D000D6EE2A49216ABE96391DCC6CFD8067837D +:1098E000CA3EC72531BE9929F88BDA75A0D3D2F4C8 +:1098F0003C8C0F3BBE281B3903C7DB80E375C82CAB +:109900007E2A92993E2CEA74DA1529CA17821F041E +:109910003D3B9CF52588AF1992BDDDDB7BDDCE2478 +:109920002E1701CAB7B47D4A75D0B858059FE07BA1 +:10993000BD9C10F213666F28FF2F04B984B80EE0A7 +:10994000F7517918A5A62383BBC9C9EC14E50346D2 +:10995000BF345B08E011F8E9CD0F1903F043367E00 +:109960002FEA3C608675D67238534E441246E6B1F3 +:1099700075ACA4659C2B01FBDDED64F6B1F0976539 +:1099800071DFE6F93918B5A8477F9A7E5F4AF55F1F +:109990008AA883BEF720BEB9BEA4EE8135DAFECB1D +:1099A000074D376D1C12C58F0B8CBC330AEFFD5C65 +:1099B0002E1E84758F43FC2956A7466E497141546B +:1099C000BF083915E3F5D859CE1F55BCECD13FDCA3 +:1099D000EE517D837940726F0CFACFDFBCDE9106C9 +:1099E000D03B33B8DE61BF1FA26E2EB45BEA0C2EF3 +:1099F00096284E8EBC5A3614F2A96B528D9E53D4C3 +:109A0000AECC92829B085DCA52B36F53BC8A1FE7EB +:109A100010ABC746FD893B69E3AFE8F7599DB18AB2 +:109A200091926E6620C66353F9657F6B9590CFD691 +:109A3000D010747D416FFE58936AC6798E54E42429 +:109A400006D57071FC2F8DED5E8BFEA44E3E457DDC +:109A5000E9300A778EEABB8DD99D9309FE754914CA +:109A6000FFCB0C24887C3EC5ADF1677EA4F3B385A3 +:109A70003FB330D17F57D2B8DEEDFBF37FDC10F778 +:109A8000239F048DA3A87C2FB995DA505A4B091354 +:109A90002E9F11432DD0D1481489AEDFEECA627ECD +:109AA000EA6CFA718C2A1E94029912C4496E8B0FCB +:109AB000F214942EB8FE72E39DFB4DF4F7F21CC92C +:109AC000D744C77D2CC9C1FDC6EE4258A73B8EF1D5 +:109AD000E1A118628DA1E3BF424BA43BD74B374EA7 +:109AE0001AD9DE2245F5598F1EBC6C8C4CA6DFFFBF +:109AF000983D1CBF1F926664DA69FD903BA5A049A2 +:109B0000C2F1488C8AFFE9B804E0B9F1CBBF5F9895 +:109B10004CE9611ACCC673D1F92B557230BE82ADB7 +:109B2000FB29AEA79E4A8A6379F93836DE212F6574 +:109B3000139867285D0F958797638379F508D77D1C +:109B4000D80EF81EF46532A75BB299D56537A357D6 +:109B5000B18B8DFB3B5E2627B0767AFAB8DCECFB46 +:109B60009312D3632DD3A95F93A3F16B685001F3D4 +:109B70000608F0534B095D4F1FE3FC3A89F929D4DD +:109B80008EE17A7BDB15A6FF64EBD16CE0E3ADC51B +:109B9000ED76E0E38D26968FDF6A0FD99D7DF43355 +:109BA000C7D1F8312F6A8F841FFF59784622E8C742 +:109BB0007738FECC3CCE14F06C6C60F9D3844B71DA +:109BC0001887BEC5E193734F21BDE562AA66685749 +:109BD0001309287615BD4D7683C6FF4FB89480FDD6 +:109BE0006B2F8D25A1A42BE9ED22FC4E522B34F1D5 +:109BF000C66727E7229CFA75E9F117E1F08ABA3FB8 +:109C0000579E4254709510FB4698A78468E393FED4 +:109C1000FC8FFFC5F56AED25A3C6DE44E1356B7EFA +:109C20008FD0B84B51CF7F96CD1F9D378E28AA7904 +:109C3000F725F92F27A17C4DB49F1E490BCAF75F6A +:109C400019D18E307B45CB361BB3EBA09F45DC0290 +:109C5000F26CA771CB96A412D9E556D939DE4FE83C +:109C6000938E2FFEAEC433BFCE492D2DD9C2EDCE7B +:109C7000166E6F855D013D57A9F2DB26727E107A64 +:109C8000A7C25AE63FA5A2DB9624C6D7AF4A8CEFFF +:109C9000A861CF82FE946F15B5FDD6E333DB25F0C6 +:109CA00019A3E183283E6DF8FB37E50F164D647A62 +:109CB00092544864282DC64F61FA42F42B70D91093 +:109CC0009E02579CC6FFAFACD6B62B7231BFBF0801 +:109CD000DAB907B6D73DF62299D90BA1A7EA38FD24 +:109CE000BCE78F983DB4DD9DE07FD0F1A6B9FDD7EC +:109CF000031DE5D884D12411CAEC10A19FDAFE77A8 +:109D000099A791C2DFFD86C9D70EC3EE66742D995F +:109D1000B7B649A6BF9BC2921DB6A1049CB6F592E8 +:109D20007F19C5DF54AEAF6A5D6C3DB5AE8879086A +:109D30009D3FBD96C19119DE2FC92AF9C9ACE1EB4F +:109D40007699109EF42A19F3D8E9F5FEED84D271C4 +:109D50000EFC4EC79BE522DC1E84A48C42EC4720FF +:109D60004F9AEE63E3DA7C2169695E749DCD8619B2 +:109D700079A0E79B93E37CA0E75BDDC16A5867EDC0 +:109D8000C94804DCF2F1273B6588F3C26EFF42D775 +:109D9000B8E8FA3C467B3AE8CFB8930CAE56A796A3 +:109DA0001F08B987F3673BD39746F22A417A900898 +:109DB000E825CFFC5CB433A27DB293EBF964127C4E +:109DC0001EFD1ED24C905E04D799BC6118DF7F61E6 +:109DD000F42CCF096C87DFCB538617809F93736F6A +:109DE0004486BCEA9EC7D8BE829E2FFF9DF3355D98 +:109DF000C7F7D4EB18C89E8B76A67EE252C1EF71EE +:109E00009C7F4AE6B9E6C3FA6A37FE3ACE42A74CCF +:109E10000FB749716817B6623B81770AC7DD7DF1DC +:109E2000537AB8C4D308747DDDE49348FF70D6AE8E +:109E300037FA97A9F5DD4633D2A1CDACDD2F17FE59 +:109E40007B88C7D7EFBB038FC0BC75BBEF37035D03 +:109E5000576C7FCF1CEC434FF7F4BF4A3C49352C7D +:109E60002EA8ADB28660DD25F3187FAEDC680E59F2 +:109E7000287D6A9FDE1501BF94DC457C20E7B5E1B3 +:109E80005D2FA7533C65D4FAC741BE2C99325B675E +:109E90005ED46EA4D74624B0C7E9E1C5B5C8E7A92A +:109EA000713EE073F04FC16FB850625324EA2F5DEA +:109EB0003029B91EFAFD8237D607FB192FC730B9F2 +:109EC00017787E65D78DAF4A14AFF1CF5B225086ED +:109ED000DDC13DB0FE96464F09D0A9A59CD8817F33 +:109EE0003C964007F2654ABC0FE2B1AB5DB7D01BB0 +:109EF000E2F7F1773179B8C0E316FAAF00FCB2634C +:109F00002E963FA47E0CEAA1974D0C4E99C359ECB6 +:109F1000F2BF867C09C248E7CD24A1FDE63EF4B33A +:109F20008A7FFEE8725F0B9C6133ECA7AEE47AA4F3 +:109F300064DE76E97D15DDDF810088CE9FFE749BAF +:109F4000E4413EDEDE58EEC2F6C402FAE36996173B +:109F50005949BFDFA6D21F621D7DE8910F603DB653 +:109F6000939D07991E8920BF0978051D05BD3E7187 +:109F70007970FE1BA8B98EC1F196D4023D9AD3D94F +:109F80007842AEF572F8898BEDA7A5576D970CE86E +:109F90006F76E23A5755C948970373172D83715668 +:109FA000B9D2F2810F1FFACD61B3447FFF92F75B04 +:109FB000D52AB1FDE5D6C3E6D9601794278DE0D741 +:109FC0004C632E0079F85787D10E4CEB60F1F5AA5F +:109FD0008E5DF2525B94FFBCE70F2C02FE5C15B65F +:109FE000901809E8C2ECAE9EEFA87E4079208A194D +:109FF000E33CF0FF993E0C7AC12E0BFD59CCE122D7 +:10A00000361AC7B9401F8ECA07BDE770B3DFC5F85F +:10A01000E5B1BE0356D07F052C0E10F6CAE5667872 +:10A02000A4E347507F52AF16EC9D18BFB7DE1F89DF +:10A03000FEFD44EE1F53BA65BAFBD0FF627CEF4FC2 +:10A040002B89275E450FC0B38A8F46BACD08DF48FB +:10A05000B7CCFCE0528627D9CCD62F6FB08640BE55 +:10A060005E715430FC38AD889F439CDE8738BD9BC1 +:10A070000D1B72EB99DDC903780ECC4D204CBF301F +:10A080007DF2D02F2556576C2188476B83B390CE35 +:10A09000C415E3C37DC2E041F3ECF828BFE9E9EA67 +:10A0A000797EBF19D6312DCCF83A8AAF90860FA9A8 +:10A0B0009E427A178BBC1AA517E053C4C3B6EA6E4A +:10A0C00045BD8F22CA441E0FD7433C0C795F1FAB9E +:10A0D000C3BFBEE26031AFE82FE2E095EBFF907DB9 +:10A0E0008AEAF93B525FC312E22B884B44BC25DA63 +:10A0F000CFE6F49BC4E3A26ACE072B0BC3A84F574D +:10A100009EAA47B9B05530F9B79DD4EA2D116F1109 +:10A11000722FDB872C64FAF07657BC4F92FAD72F58 +:10A12000B7C3BE12E8EDCBD42BA6714BAD6EDFAC3E +:10A1300096F3ED19D8D744FD5E8F7EF085C7243C99 +:10A140007F73B5E391C83109E8B792C71B179E2EFC +:10A150009BF001ECC3EC4CC4732D1F3E3DF3FB1F81 +:10A1600050782F6C9F8CFBF8AEA600F243B73BC62D +:10A17000077E2E556F15106F37865F4A80FCD1B968 +:10A180005F8C2900BDD6E46676F1FC2F8DEB011FB4 +:10A190001B7EFEDC24F8BE32242581DF76EEB9FD7D +:10A1A0005BBFA0E39CFB99940CA2D3F48BDF996175 +:10A1B0005FC1106AFB12EC57CDCE44F4EFCEFDEC3C +:10A1C000FE4980E7A670137E3FFFB336AC1FF8F957 +:10A1D00073FBA07F6D20C187EDE8F8E097FD90F25A +:10A1E0002FC0591B94D93EA0E057BDFED9B51FE53D +:10A1F0004EF007E557CC03932AA647047F1E29613A +:10A20000FB2495A56CFFE5C8D4982AF467B9DCD582 +:10A21000CD77B4A15D53BC0AF49F1970E4435EE2AC +:10A2200019BEFEDA3CC60FCD945B206F1097173134 +:10A2300067D07673AB774D02389B6349710CF22976 +:10A24000242DA3FB36335B5FF98744E9388AAAB330 +:10A25000D394BFE968DBBFA27CFAA689E5079AB967 +:10A260001F3EB7FA3D89ED17C8F6D3221F64BC9292 +:10A27000DD92713CD1AEC71FE37868E6F9103A3E33 +:10A28000DA91A2B53CCF292DC1FDE443EB22134165 +:10A290002FEE39BB26B6364FCDDFAC7F7A0793FB66 +:10A2A000551D6D8D66DAFEA6DCFC22986615DF3F33 +:10A2B0007141DE0CEC9C62D3E8B7435CCE92EDC4F6 +:10A2C000F52DC8C7C8C405E7F1CAA98937217E762C +:10A2D000F0BC14156D8AF78F1BABDDE0E73E6C0A0E +:10A2E000A68D83F99AB97DDACEE0A5FDEDB05F4E7B +:10A2F000C7B37FAB00C7E93439C11F61719AE777F3 +:10A30000376E67FB65210E7F7736D82918AFD006E8 +:10A310007645A942BBE231FB801FCE439334C4D7BC +:10A32000E885A3A2EBD6E74F408FC1BEF3FBEE92C8 +:10A3300077DCEE6829F22D7A7A7893E9773ACEA223 +:10A34000643F966467D200E79619BD0ECCBD68EEF7 +:10A35000A2F33EF4E27BA887EA80DF61FEE0298D6C +:10A36000BD15FCF4F00BEF21BF57EE66F4A9DBED51 +:10A370003541BCF261839FBC4F1DC73ACEDF0F4B06 +:10A380005DCBF15CC80B31788EFE22E7FFBA49E164 +:10A39000CD2EFA7B5D0B71403C7DF1052607870CC5 +:10A3A00006C4E7A1F6916D605FA8BF8AAC5C57EF69 +:10A3B00069B7207E991F5F326FD9FDE560CF6B884A +:10A3C0000FF4435DC78C4C0FDA150BE2B76EF7E163 +:10A3D0001B32547E2BB587CB605C07B53B31F47BD9 +:10A3E000FA14AA37811E546F427BC794E0FDE52A18 +:10A3F000FE3A3077DF662BCC3B85D861FC87B3FC17 +:10A400002F64E03A2402E7211E36B596CAB4FFC392 +:10A41000E51E3BC520C5D7F654B0F324D7CCEDDA02 +:10A4200032F487EB5217F85AA43EF4C50B8DB900ED +:10A430006F9D2716E199B65B5AC3FC0E1BC1FCB297 +:10A44000DCB519F4CFD9D1D25890FF8F38DE04FE95 +:10A450002E9A3A17015E2EFE8A32201D7FDA14C62C +:10A46000A78E2961D433AFBC40FD9AD1517E8CFFB9 +:10A4700035F56F68DD29DB251FCAD94C8B9A9EAD57 +:10A480002666A71CDCEEE45430BA8E4C6672343279 +:10A49000D9C04B33976F9EB7B52BA3C1CE7EC4E90D +:10A4A0008EC381FEE7E3AE5A164139AA7D9AF9655B +:10A4B0002E8B3FFFBB2ABE7595313B29F2E7904FAB +:10A4C000C73C3AC4252E889B3DEDB08F4CE987F4FC +:10A4D000BDC9755D01E0EB660E577AAE84711CF55F +:10A4E000D7106FC9F3B6CBCBF358FEBDAF38B0323F +:10A4F00099E70593028590B775D33802F8CC6D2C97 +:10A5000031C4801DCA977CED1EDCE7C3B8B5DB9D66 +:10A51000E66BD7C835F3F7CE26C733BA86FE28C315 +:10A520003ECCA2648F889F35FE5CEF3838C6077139 +:10A53000CC5943448E51E5FDC5BA438DB1556A3DB2 +:10A540005695CCFC84D07052057A81FAE336CC1350 +:10A55000DBE93C106FB77FFB672CDE6EC27625C946 +:10A56000CCFF29A7EB03BFCC9D1358CBEC6B3CAEC3 +:10A57000C39D4396403F7753AAD4E455E3D9DE0602 +:10A58000787E9FDB19E18FD75179B1203F52FE07CA +:10A590003DF7A284798AFEF44394BF997E98B69BD6 +:10A5A000D1BD6E37B37F22FE06BD07E709414F7864 +:10A5B000C744E5BACEDC350CF833AA27BA86017E4B +:10A5C000FAD30FE5712194BBF291C330BF20C6B915 +:10A5D00068F2E07EDC451A37A21FCBE5217E0F939F +:10A5E00003419797CD0ACAE1CB8363910F002E8870 +:10A5F00003857E6E75079A9321FF53D1350CF3CEF8 +:10A600005C9FD6EDD9A239F7AFD7A7B4C4BCEED9B9 +:10A61000C184F1099F0FF6B6E20BB0C4F35771EB9A +:10A62000393E2A0CD8BE25F7D833D0DE600D4780DE +:10A63000CF62323BAF07FDF5E364965F5B27B1FD68 +:10A6400035B1AF9F0CB109E88DF6383C5F2BF23283 +:10A650007AB8EEE3F222F02FE20CC8C343FB5F733B +:10A66000B97892B7FB1DE73B01B7E06BDA7E303873 +:10A6700044FDD91FD1EF9BCA138979841D8CE2B99F +:10A6800051B38F00EB9991D77FBBD6FD4CCF08BE5D +:10A6900013DFFFC8FDDE4D9477A17C56E46183C3D0 +:10A6A000597E3F8668CE5F89F144FD070D573E779E +:10A6B0006FFFD2C8F6B1889F807C601E01C4B7B41A +:10A6C000C207EBFB13C7B7BE9F4CE44FBB845FE5EB +:10A6D00055C1C37D32388E34A98F7DB99E79276AE2 +:10A6E000F70D7AF852374E7F7037EBF2FFCD39FB1A +:10A6F00008E49FE2AC095C7E2FA3DFBFA5E79E8044 +:10A70000E29B81FA8EE5B1069A470F6F8CA76F78AE +:10A71000AF961ECD865D35C0CFCF727A90C7AE6E34 +:10A720009DFBF83AB7F2F3A564D970CD7E89B322C8 +:10A7300042E0FCD2E4CB763C1FDECCCF69DA27774F +:10A74000761929BF26142BC3E15E883BA0853FA55F +:10A750004A7BDE312DE8D4D4336AD235EDB3EA0733 +:10A760006BBE0F5A3F42F3DDAB1468EA39CDDFD23E +:10A77000B41FDA5AAAA95FB7ED264DFBE1A14A4DF5 +:10A78000BDA5315C05F23072E77C4DBFC9729731CF +:10A790009FFE3E2ABC444B0F1D3EC708BEB6761531 +:10A7A000A8E56942CA60A4C7E44B5A7C2416EBCEE4 +:10A7B0007F5E237F8CD9ADE30F5D7F215F7184F1D4 +:10A7C00047DCDEE64F605F3B4E2F477CDCD1B4DFD9 +:10A7D00024671FE3F623271BE216C9C0FFFBA0A2D4 +:10A7E000F2A7DFD4C97F795522DB37BA543980DF2D +:10A7F000CDE4648E85ED27CEE1FB8AE2FBF753982A +:10A800005EB83385E9E5ABE5E7139C9F8FF4C3CFD2 +:10A8100036EAE62683BDA820188FDB2B1A3F81BCC1 +:10A82000CE3C3942F2A9FC3CC4D7F330EFBFADC1F6 +:10A830008EE3FDB82115CBC71A3CF8FB4F1B72B154 +:10A840000C35F8F0F7F686622CB7533F10CA271A7A +:10A850002AB0DCD910C0764F355461F9744390DDCD +:10A86000F7D1D3EF9213EDED1CA2D56B73AB8C57E0 +:10A87000459FB9E4DE4E63426F7CF4EA6FACBEE202 +:10A88000B9ECF5274B420755ED9B53E25DB89F3875 +:10A890009E8CC7F87680FE9F37F843074D03F3B7C9 +:10A8A0009E7FC8E5EF0E559FCF11E51C60E874BA96 +:10A8B0008E4776DFA3E445F1D43F5FF58D1FAA47AD +:10A8C000377651961A0DF647D57FBF8E7FFD72A25F +:10A8D000268E16A53995F16109E7D7121DBF9E494D +:10A8E0006176FF95149E17FD7F8C5F0FC4C4A35F34 +:10A8F0007EC0E4C974ABE87F2026AE8A9D47279EC0 +:10A9000059947E929FD8BD947FDDA96CFF4F82C879 +:10A9100004F3C743EC982789B9C67C8A0E8F127559 +:10A92000D7BD74BC1299E92F090E22C1F83E4354D9 +:10A93000BFE2F988D828DF1B7BF3031D4781FBEFBB +:10A94000CF9A88C74CBFE7A57A34FAB654365E5121 +:10A950005F9782BCF59117ECD5EF1AE5EDBFFEC508 +:10A96000F226F89D5CCE19A23E5F29CA122E6FCF47 +:10A970003CF2FE3D3414EFE1F752B0772A3886A658 +:10A9800032FD3C3495F1FB01EEA7007F14F4E1AFFA +:10A9900064A54A9A734BD78AEF12C2F422215DE96B +:10A9A000A027AEB53F951C19FA95581394B8D1D786 +:10A9B000DEBF3F7CF6EAB7DB7555F926AA69241895 +:10A9C0007F39876EB9D5A6003F916DA60B5D2A3EF3 +:10A9D000FE4942A03895B6DF6D22BB617F829A792D +:10A9E0008F3D19F91EF14AFF05ACB49ECFEBE3157C +:10A9F00009F9D9422BEB413EBA5EFE07E88B7C5E3B +:10AA00008EE725A45B53416EF2E2F17CBB4FA08937 +:10AA1000E74D8B44750A757192C551451897486B7F +:10AA20009D10C6B412D8576F917CCD463A9F31C560 +:10AA3000DB04408DAD283112DCA26BC57222E96CBB +:10AA4000822DBB49A4DB08ED8BADE12699C2398884 +:10AA50005CB69F065E4B7962D557704E079293574E +:10AA600081B7CF63D83EF47A2B2BFF2D36A11DCAB8 +:10AA7000CF63D8BEB4524AD8BDB977E24310CF7A7B +:10AA80000DC1C5A994CE9F1BFC0B011E3929D3CD46 +:10AA9000F3BB7FEDC23CB084FAA1D45658751BCAF3 +:10AAA00035FB1DF1EF8DB6C3BAB177FD879B585EBC +:10AAB000A2690BE3FFA64656FF77CEEFF55C4E3654 +:10AAC000713989218A42705C4AC964C427A3632E04 +:10AAD000A54311A30BE2D9F62AD229968411CF31CE +:10AAE00073B6217C8454E3F91E2912205FC5A9F9AD +:10AAF000E9EAC6B35A5BFD56CA5771D521C57485BC +:10AB0000F1644E5F799619CF47AE9382F7001E49E4 +:10AB1000A601F925568C6B0FF0F368028EAF4DA796 +:10AB20008781CF07A293A9D4D7E9A72C3A3B56C275 +:10AB3000732CD74AAFE780E9C745597D5F1A69830F +:10AB40007C438D8BA4C2B946B3CD8A72B831CB8316 +:10AB5000FB0FE66104EF15938001F129D62DCEDFBE +:10AB600009FEA4F87916E03787A4F7005FE6D47AE7 +:10AB70008C1789DC9501EDF6498C2FF47CBD3B5593 +:10AB8000E41932993C902BDBC75DDF71BCED0261AB +:10AB9000558E4E7FBD98D64B1C0B60CBAF316DF1FF +:10ABA0007499CACFAEC304857541DAF7EF03FDBDD2 +:10ABB0006BB6E35137DC0B4977DE67A27ECFAE85FB +:10ABC000127EAF4C67DFDF2E2161C8337525075F2A +:10ABD00006FACE7FDD7308AE9EEE7AF98E6CC0BFAA +:10ABE000ABCCD785F75716583CB03F15863C27307D +:10ABF000CE650A0FC5C7CF006023AB4FA6F579021B +:10AC00003DFCFB76F86FCA4739CBBC8D90EF268FA1 +:10AC10004976F063063D46FD1A5A3F731F190BF93A +:10AC2000E5FEF4DA78515724BC877FBDEEBBD07BBC +:10AC30004396DDF9EE7FC0F89D463CB72155B1FD46 +:10AC40009EF1BCBC9E97F9BC9CB78CED4F0DA91A28 +:10AC50001F82BCDF6993A7C906FC388AE0FD532236 +:10AC600033FE7C33CB11823CCD198934419E4DD9C2 +:10AC700042F03E20C819EC87FA96515A17824B6968 +:10AC80000DC1FEE3D106E2DF3854A55F296DFC4516 +:10AC90002CEDC3E0CEC3386D2289FE83759447D76F +:10ACA00085F27503AFDF58CBF276163FD5BB60FF58 +:10ACB00074FA3A868452AD788ED88BE7448C37127A +:10ACC0003BC09B5D11A1A698EA637F09EADD712470 +:10ACD000F852272D27F877713D1C6A82254E86F998 +:10ACE00072C0BE7A64A06319F580A15E415AB1BCFE +:10ACF0008984B19C4E3AB1BC99746319207613943F +:10AD0000AE342FF2EF242BB503A007640FE6274FD4 +:10AD1000BF66C77BAF951541B3A70FFF65B9B8579D +:10AD20004882D998279683D97354FEC8E979731756 +:10AD3000C2BB1A1E83F69C6C7A1AF3C387A431BD7A +:10AD4000FAB0C4F5C82AF13E47F047B7D1FA828A73 +:10AD5000EB7CB06F40BF639E589967C5FCE0C3268B +:10AD60004F16F82733E15119C8EBD5EEFA37D04723 +:10AD700047A6DE9E06F27A420ADE5043C7593E9D40 +:10AD8000DFAF9195ACD92A393FB398C125CE43881E +:10AD9000DF47717866C29E1685EF0C851FF597C850 +:10ADA000F7CD77A09E292755329C639F98C6EC412A +:10ADB00088EB05213F35820F64C59C4EFBCDF179B0 +:10ADC000118FF3432C8F5C2E9308F8D33DF057B5C9 +:10ADD000AD23943FE6D7ECC7BC7FF47C12DBBF2EDB +:10ADE00099D7B110E65FBECC422CB89FD4FA179029 +:10ADF000E7B935160FD497574B7EB64F6B0D0D85BF +:10AE0000FA36EF2690D3B977F9F19E2B9D0FF3B563 +:10AE10003758D93EA695CE0FFB7E37D6F073233533 +:10AE20007777027FD2767EF0A76FA0EDE502381724 +:10AE3000C4CEDDC52AECFC52EC14717EA9FE10BC18 +:10AE400053E2594D7C0A9D76EE636D123B8F4C3078 +:10AE5000EE19D01FBAFBB203FD63F01B06C1AF0AA7 +:10AE6000E2DBBADEE881730744B6E338F3F9BDD11B +:10AE7000E69A26E4C7CFAAC0C8507CB67AD93D86E8 +:10AE8000834CCEE754E5631ECB5A61F118596E52DC +:10AE900081BCB39554A0DCE713961F59C3EF0BE8B0 +:10AEA000E30AEB7A339B974434F0833E037BD19FD4 +:10AEB0009FD6DFFA84DE00FDD2DD87BC4B15AF30B4 +:10AEC0007F8E9720FF20B705569F31DE00AC1640DD +:10AED000F906BCB0FB4A7731BB12F384A4B6EF5637 +:10AEE00097B2088EF09C393864930DD1D64AD4714C +:10AEF00086B534709BFA5CF99692C042F57ED23DDD +:10AF00009CDFEF4DE3F6EB75251BE6334E62FCFE4E +:10AF1000D61B04DF8B39FB06C527C89F6465F23951 +:10AF2000005E065CFF32AEC77919F5433D4D40DF48 +:10AF3000C7D306B3FB3715338CE097FCB26DFCD159 +:10AF400009A4377DFAC37F7FF82A4FF1EF4C43BF46 +:10AF5000C16FB81ABFBDDC98B9A096AEFB6FD5160D +:10AF6000DC9F1576B300880572DD494254F6C17E38 +:10AF7000A05D496B26F88E8F3B0067E2F938C0E68A +:10AF80005556226BF2A8764D3DA32655D33EABDE37 +:10AF9000A3F93E687DAEE6BB57F169EA39CDC59AA3 +:10AFA000F6435BFD9AFA75DB2A34ED8787029AFA3D +:10AFB000C89D559AF67FA34B8AD0F5141E37FA1414 +:10AFC000A0AFE2EFCC2B8ADAF151E1A0A6FFF8AEF8 +:10AFD000C5D3417F8DD95DA319879CA47E9B15CED7 +:10AFE00025D573BAF88CA0477C5439FFD80B286458 +:10AFF000DFB13DADFB4E4E3D077A7C7E9529EAEFF1 +:10B00000412F72EF27401F9FCE4FD4C7DDB7BFAA95 +:10B010001CB251F8E6BDAE6C0679389346E370A0D9 +:10B020003F8FC3CB8D365CD7DF8E19F17C4C0D7012 +:10B03000A82B4AC7BFC140B0EEFD24C4CEAF68D72D +:10B040002DE2F479801FDA6F3E1D27423F5952B539 +:10B05000F48EF168E91D97ABA577BC4F4BEFC46246 +:10B060002DBD1DFEDC3EF19B54A1A5BBC06F31FD83 +:10B070001FE0F79BC66762BA167FC43811F5EC670C +:10B08000DBB89EEDAD0766598BA27A80AAD49021D9 +:10B09000278AB75E7AC1C6E29B1EBDB08DEB856D77 +:10B0A0007ABDE07F095C9471411A9FD271FFB47040 +:10B0B0007C06E8B974B257DC93087E85FA5B11729E +:10B0C0003E341DF609D7FBBA14B0138F59D09FDC5C +:10B0D000756818C603478692EB31ACA860F1408BC7 +:10B0E00099C13B3A5DEC4F0646A7D3D2B4BE3E02AF +:10B0F0007EF499EB195FFC09F4215DEC5B10C7C38A +:10B10000E6954E8F109D1ED4FBC342CF8C570E6325 +:10B110005C7DAD7663A0B83EBF9AD913A15FC7F33B +:10B120003A59A2A07F2FEC4C5371D00BF7100AAC08 +:10B130007E2331A8E3FC2EB43B9389827AF8DB1599 +:10B14000BE47D712F0ABFE94017E55AF783F8AEF31 +:10B1500099802FD53EB006AFFA7DE00580E7718873 +:10B16000E7054027B10FFC7C8C0FF9EBF83C16A7E4 +:10B17000141E1ED264A3FD9257B0F73A9E77F85E74 +:10B1800082FAF1552C6E1C77CC6F84F35739F55E3B +:10B190003C87F7BC375006F5E3EBD8F7A213413CE8 +:10B1A0009F35643DFB5EB0A1FE25B8D73FFB3FD97C +:10B1B000F7173FDA8CF7C1A89163FD4B5ACBA07EFD +:10B1C0007C13FB3EFE64A809EAC39BF9FC52F8A578 +:10B1D00004B083F7B1F7187AC53B3CBE99CCE9D1EE +:10B1E0008B9E3C6E98C4DB8BF8667215A3D3B2EECF +:10B1F000C00DC8563A7AE9FDFA7212C4FA8D44C1FC +:10B20000722A0961398D44F0FB774817D66F81ABFC +:10B2100058B43E83784C50FF797A2EF36F69688C6E +:10B22000F98B629F15DFD73BF5FBEF9384E8BEBA3D +:10B23000F00F5A9D8155E03FB8CA02F85EC8CFD3DF +:10B2400099DF1E2DC53EB992EDA3DFCFF27B67D10A +:10B25000FDF1223CD7419BDC0BFEEEA3E9EC5D93B4 +:10B260009C7BEB6590CB9B33251FC46D37823F4C95 +:10B27000F113794476C0793D7C1BA98FB8399A4780 +:10B28000D2E5976505E38F02A36724084B247DCEA2 +:10B290007D10473F0F82984EFD87F4E077944CE491 +:10B2A00057F46F066A778C9F037A9EEF93CE0A78E5 +:10B2B0000DC89FF95AFF2992CEFC27518E3BF6CD3F +:10B2C000AEAB608382E7BD67B75B083BBF43D2E1AB +:10B2D0009CCE72528F743D3D4A31B1FBA94CEFCCEC +:10B2E000E67C379BF3D3E9360BD2E1CC6D5248F2C2 +:10B2F000C2BB62AF9C007EEBD76FCA1B8AFA661690 +:10B30000E7CF39D6FA85B5C0D7C29F7A6484F1AB4E +:10B310009151B9A77EA202EF17BEBD90E94570BB5F +:10B3200035FAB01F3FD1CDEB028E0C45423B71B5D3 +:10B33000FAD025C6E7FA305D8CEFA7AC47EBD9FC15 +:10B34000AB54CBF0E0E66546ADDEAE041B410E52D9 +:10B3500049AB04F52CD28DA587D837B8732025E6E4 +:10B3600033403DE5D0C14618DF01FA0FD6BFE540B6 +:10B37000A15AFF99783EDA64BD17F76B635C7E3C97 +:10B380009C2A1FECC9BB7D01FAF19BCABBC9191EDF +:10B39000E4377DFE8D7A5A63400E4E996CCD9867E6 +:10B3A000D6E75B7AE567B4798CEB5BB9FD68157617 +:10B3B00023980AEB87E3A11AFB31C1E78172B2142B +:10B3C000403DF39394A03B631CE43BEA33A1BDC131 +:10B3D000DA65047BD1C2EF1BB5F0FB462DC3445C9C +:10B3E0004BA90CA53F17F9650CA7F973C5EC5DBB1C +:10B3F000E772AD78CE7E73B27933E4F3A2F73C798D +:10B400003F7E6F75347F4761732CC7434B3CC62723 +:10B410005B615EDA2FD6E81906F0FDD540A94CE154 +:10B420004A223EAC9B8D7677A317F395A33210EF9B +:10B430005D0FE4D0FEC75E90F15CD873F6EE58075E +:10B440009DE7B9BDED3BDB293C9FBECACCF5D69D3F +:10B4500046C542C71DFDC294B83768FBB5BF65320B +:10B460003DA6D8807AF34333B917CE07555A8D01DC +:10B4700099F2C787DFE3E775645FB6FA7CC1B399D9 +:10B480004C7F1EE9279FB8D859B204F07924ADEF5C +:10B490007BC1D3330C9AFB89E2DDA4BFBB89E65C98 +:10B4A000C962E7CD388EA89B2E394830493D0EE35E +:10B4B00023931C20704FD274C985DF13A93F0BFB67 +:10B4C0000E898E6219F8B394D80FFA25BC328EF427 +:10B4D000EEF52EC344B9BBC78F1C0C768AF9A19830 +:10B4E000EFF5C27E8DD6FF1C43B4757D7E7747266F +:10B4F000D3A726DDBB0E3B32F5F0B2771DC4FDF2BB +:10B500000ED91F0779A1A5067E6FDB6955E07C6423 +:10B51000E2F54E3C1728C6793C83BFFFC2DFA1B0DD +:10B52000D3F6F8BE816E1D1BA91C7929FF3E982118 +:10B5300069DA0B3DB650C891E2407FA79ACBD1E7BC +:10B5400099ECFDDB8576B64FF3D72D1F6D82DF17A3 +:10B550001F8E3503126FAD2609A368BFE00F93FE5F +:10B56000A7DF037CEADB0FF737C90F985F612FCDA8 +:10B570002D62EF114CC1FD5649C940BD7BB5762304 +:10B5800094B4F83B9914DED88490C74EC7891D71D6 +:10B5900016CFF9DD9B41701DB13DEF63760D539FD2 +:10B5A000330B25957C27731C9EA38D38E1BCE56F7A +:10B5B0002D8CBE0789027ED7EA7D69788FD29815D7 +:10B5C0009C06E38BFBB3E46037DE172E033F25A711 +:10B5D0000FFADB3E35001FE9F90000077B3C103F06 +:10B5E0003403DCE3E07D2F7E8E2ED58FF7607F3035 +:10B5F000D195DFE2E148A7F532AB03DFEBFC2DA7E5 +:10B60000AF98F75AF9D395C3F449B724E1BB310396 +:10B61000C127CE1D0B3C4EE3FC2B4A8127FDFDBD0F +:10B62000699906DE8EDDDF33660510AFAB2BBBDF1D +:10B6300071E4C0BB17FCFD8801D6DBC9F5C1D75D3D +:10B64000EFD5D2614726E39FA5B15707D7FBFF8708 +:10B65000E0BA59C035FAEAE0FAFC9F84CB4F187D76 +:10B6600006828BD2F366A02799D28DEF822C755E6D +:10B670001D7C9999FF1CFF027CCEAB832F0EE49DAD +:10B6800044187C7388CF946AE4C0A8EEDDE8EFDB51 +:10B69000887B3873646A4B0BC0DE8782D06556AEF8 +:10B6A00095809EFDBAF76E7AE8984C220E88DBF7FB +:10B6B0005958BED1D73D4C6D3F0773B93166F9AFCC +:10B6C00003F8970EE37AA142DBEE3A5D3BF1CE063A +:10B6D000996E40FBD5923BA49D9D53664B8EC9F459 +:10B6E000E07BBA633225CD3965B14FB8C6515303FB +:10B6F000FB237EAB2D62A47661F3889A5CD817F1A8 +:10B70000A7FEFE043B8F4DFD57159D041CE71B5EF5 +:10B71000B50F31F58F8795C6E78BEAFBD85FF9AF98 +:10B72000E46049A6CA7EAFDCF99A7D882A4F348A44 +:10B73000741998FFDF6D6079627E3E27E5DAF0BE0E +:10B7400001FC27D8C7480AA0FE17F6A26ECF931EA9 +:10B75000B043D4DEE3F9D1EEF858B4074D238A7331 +:10B76000D5FB414B7BECB5F65D8CA89DFEE7DEC5B5 +:10B7700088FA2F125192FA1A5FC6DF055DFCB6BE39 +:10B78000E921CEE1461A2295A74CF09E49F14C28BA +:10B790000F34F8679EA2F1DE9EA492B64C3C87CB94 +:10B7A000EF33045EAD3CA5C2774A55A7A69E163C72 +:10B7B00051794A0567464D97E6BBCDE769C47719CD +:10B7C0005C9E7C205369A115EF0364D59FD5F46B73 +:10B7D00036B0F79706ADEFD6FC5EEAB7298E44C8BF +:10B7E000F75ED28CDBD2C8F838A799CC54FF6E92A2 +:10B7F000FD04CEBD0E6DB5CE548F73DD36BBA63EB7 +:10B800003C94AAE93772A747F37D5438573BAEBD45 +:10B8100058F3BD849F23F25BD9799E326B89E6FB96 +:10B820009EA4196DA0F74AC87ECD7A7ACE8F0F708C +:10B830001E4796B7607E12F6362716F43E47BE279F +:10B84000C98FE3EBF95FB97B22DF576271B6E0077E +:10B8500052E8CB85EFFDF1C5C164FF2F60BC0BFC46 +:10B860001D1349DC97CE259E407CF4FD1D3D9C6F49 +:10B87000723DF1A1B9EFEF7BF87793EE7D9328DF6E +:10B88000B2F74D3E2C15EF2369DFA513ED5FE5E31D +:10B890006CE5F98881DEA7335D8AD3BC4F179D2FF5 +:10B8A000017FFF70F095E77BF39AE733F6B33EF341 +:10B8B00015DF6F39C3F5C687CEBEBFBFDF83BF3488 +:10B8C0008DDC9FE9150764E27793EE1D18755C0324 +:10B8D000BF0F14D7F4BC0FF88DC73304D771ADFE7A +:10B8E000F1921406D740E37BB2FCDF6371ECD7B36F +:10B8F000BBB16063D3701C5B16C5EB6633BBF74806 +:10B900003518E62B445C43F4714F2E3B27B730F5D6 +:10B91000F7E80FC442CE80DAD5D8FF8CC1FD935B27 +:10B9200025BB19E05F64EDFECBA3B4FDC9DF5ACCA3 +:10B930002CDF21E29A3823ECCF5D2D9C3DF916FED9 +:10B940002E03E4BFC16E8F993C02EFE1FC00E235AB +:10B950008081DFA7F80185218DEA8F44830DEF4BAD +:10B96000259A597D0CE46B68BBD18767274668EB45 +:10B970000458FF04B88FC2F64512F7CAE7D5F8D6C7 +:10B98000EF8B7CDAF9F758B08F63B3B4E73C3F2311 +:10B99000D3FF3812F052EC427C8E7E614A8AFABDA7 +:10B9A000939E739E22DFD34FFE387A3E469B9F11B3 +:10B9B0007999EBAF313FD3F3CE802E3F33509EA920 +:10B9C0003C253823EB0A7926F301F67B775B0CFAEA +:10B9D0000522EF24D63B378BC9777EAA7F6E165D92 +:10B9E000EF842C7F158C772486E5678EC03CA3619D +:10B9F0007FE1C64458EAA7C49F08F12A9C0FCE7085 +:10BA0000F6E607C8AB6C54C9F71147DF7A637916BD +:10BA1000D31B3BB208CEFF40B2FF7698F7AC99FD3E +:10BA2000DD8CB3B1BC4C60FA6D4D4F7B56DECDCB97 +:10BA3000B35CFF9D7512CDBBCEA2DD16BEBE530D0D +:10BA4000D6C046957FE779C4520F719E3B47DCE72D +:10BA5000A29C4CF154B73705FDFB65ADEF99E1DED3 +:10BA6000D44359253B002FD00ED6B14CEE32C37BC8 +:10BA7000DC2FB8830DF07B9D87F89F87FE9E2EF309 +:10BA80004C8AEF8FB9FFF2B189E58D3E8E61A580BA +:10BA9000E7A1AC193B609D1F5FDF65063A8B7A1DFD +:10BAA000E95E04E73B1FCA0AE07CB4FE535DFD1D5E +:10BAB00099E591D11EF839FFA1FDECC35EEAEDA333 +:10BAC000FEBDB2D5669E7FD4EB8BCC788D3E59B847 +:10BAD000F735E4E34556B2195251B7EE4D31439074 +:10BAE0005193A00CB36BF21F5F4F4F7C9CD589FA2A +:10BAF000A7A5A43BFBC78598CFB0B7D37956ED6512 +:10BB000079F055627D1DDAF5EDE2F81CE8DD3EBD09 +:10BB1000BF31903C4B7BF939365E927DAF65C07882 +:10BB200013F7BD9104E566A91EF3D2AA73B9275E87 +:10BB3000A4FC62347427A9E558ECFF4CB252791E7C +:10BB40000CF46B457AD775D0752540191381BC3339 +:10BB5000D9AD5DD70AF5394C3AEE1D246CF64A1082 +:10BB60005798A2FBC6F4FFB5A413C75B15D6FEAE6B +:10BB7000B73B03F1C1906C22CE69225FD5703CD4F3 +:10BB800008BC87B4F089F789C4BBA05E43B00BF84A +:10BB90007786C3AA18C7C0A3076CDF7231F1205D96 +:10BBA00017EBECA878CF68A96D16F2D1D2663DFCF0 +:10BBB0007E33C0795BEB95D7D5737E16E0A7E58120 +:10BBC0002C0F7BBF2776FAAB281B859DB8DF44E19D +:10BBD000FB540D1F91FDF87EB968FFD1B8CE272226 +:10BBE000902F8B9F62057B114A0A7E01F29675A207 +:10BBF000EBB4041BCB363FEE475DDC7DEE4D3C776E +:10BC000097CAEC29215D0F7F9BFE67CD6EA31DF2C5 +:10BC10000335BB5F427EED0F6F3DF7D849B780CB50 +:10BC200092DD075C221FAD979F8B592CDFF0B8C7C0 +:10BC30006F837EA6C1617C2FAB7B1DBB47EE32526A +:10BC40004B4BE99CDA453D7E43F45D18E2F35B2102 +:10BC5000EF37D9C2DEAFF98BBDD40AF7E4931D8666 +:10BC600000E8BF8DF6250EB82F2DDE094F960CEC9F +:10BC7000EF0290250E787F64A185BF6BF9BDB848AF +:10BC80000EE5D7DF99D9FBA1AEB820BE8BD0ED3041 +:10BC9000E2FC25F33E1D0BEF18A45FB615C079B783 +:10BCA000CF397E05FC93CBBAC7B2773C19DD5C393E +:10BCB0000CBE3AB77933BC8BB891DA1B283FC96206 +:10BCC000F9808DDCEEC0194FB6AF10B2E3BB907CAB +:10BCD0003F62AD95F1695D8CFF07A5908738CCFE7A +:10BCE0005ED7A7767F22EC0BE8DF9D14FE6D7FEF19 +:10BCF0003B9766337DF2AF7A3752E4A5EB1C327185 +:10BD00002546FB89F5D6F1776EF47417DF5FFCD218 +:10BD1000D8275FDC9ACDF8A2BFF8670E5F571DBC2D +:10BD2000E7ADF2CFEBA81D0338EBE03DEF2BF8FFBA +:10BD30009F70FB59077E7B92FA7746DFE8382EFC2E +:10BD4000FE145FE753AF1A2ADAFB80B7219BAD6779 +:10BD5000845B0EE0BB0F11F65E667FEDC4FDEEFE68 +:10BD6000E0EA28ED5A047043FEB6AFF9BE9BCDDA87 +:10BD70007D92C5F44487B36B39E0B1E326AA1B2951 +:10BD8000BF5EFC6D0ABE9F2EDABFC9F17D712AB37A +:10BD9000DBE2DDCE22B95E02BE12F4D8921490B37B +:10BDA000DDECFD5EB60FA068E800FCEC41FF5C1B1B +:10BDB000BF09B837F27D2511B70DF44E6A1DBC6777 +:10BDC0007E45FCCBEC1D560EC7B923CC5F84885A48 +:10BDD0002A023DCCF87DF1F695784EA9DC6843BF88 +:10BDE000F05C48C2F7F9CE1176EEE25CAB84E7C9AD +:10BDF00096EF18BB19CCC592203B7FBD3895DD036B +:10BE000083FA5D506ED4C63B62BEDB48203102FE31 +:10BE1000D3BD5AFD5D43D8BE2BEC3B437C77EE0887 +:10BE2000F35F973FA41DA766FBB433005F8DEE9CC4 +:10BE30005432B73B7A3FFFB96CEEDF1791A26BB972 +:10BE4000C7B59CF87F9D8DFA386004BD3B8E9F93EB +:10BE50003EB73D2745FDF7789C8325CD7DAAF35459 +:10BE6000EE870C85BF2F64C7F2F7D9FE7DC0071F90 +:10BE70001F66EB7F2B3B7800C6FDF8305B1F91BB44 +:10BE8000D9FBA255CCEE59207949FFD3B2C01A8212 +:10BE900073BA77C3BB6214BF160BB3A7C27F301A45 +:10BEA000BF6B4C80757F50988AFAFC173756E0FEBE +:10BEB0006C893F1FF46CCB0C1BBE23D16660EF076F +:10BEC0005A2DECDDA3D053130EC05EFB90F0FDA500 +:10BED000B02563EF8A90040FE4AF1AF11C4DF324F0 +:10BEE00082EFC389798ABB02BB009EEC59361F8260 +:10BEF000666C4B857340AE9166FE4E05F30BEA38D7 +:10BF00002D1EDD9D83EFFAFE6DEF75588E208C3F60 +:10BF1000C43D049893A8F6F1E0EF3011D5BDCF11E0 +:10BF200061296282FDFE70E33CA073ED864E7C3F8A +:10BF3000A7FB1982E7795CBF4B2BF52444E1ABDD0D +:10BF4000B5C389F723B87D5B00F12AECFD70BF4DC6 +:10BF5000DC835810439438D5F99D2ACEEFF3F6B21E +:10BF6000386C09F16543BFF9569260A0385B5016F2 +:10BF70001E87F668A5C9017EE9359F67E172A66F45 +:10BF8000771E6247B08B2F58705FAAEE8978CC2756 +:10BF9000AE3674E3FC8983B83E1DC6F71986103FA0 +:10BFA0009C7FAADB771D9E5BB7C0FB5505A8F7AC4D +:10BFB00040D743606FE9BA57BC1883EFE2F5BC0F76 +:10BFC00063270AC8EBEA7D291857BB72FCF96BF2AC +:10BFD000E03D92AE6CD40754CF416A3C77D0D65B3B +:10BFE000E0EF90D4A5537F86D6673EFE28AB0FEED8 +:10BFF0005A0E2FE6FFFBE3BF64F5115DA7A1BEE972 +:10C00000F17DAC5ED0B5DC48EBA1C75FBF05CEDFEC +:10C01000D4C10136B8AFF8F8D15BE03ECB7907B3B5 +:10C02000DF174D2CEF7CF185E1ED8A8AEE3F1AC4D3 +:10C03000F4E4F918D6EEBC97BD034E72BB34EF168C +:10C04000FF076F27FC23B14ED18F8E8FFBC3FAF110 +:10C05000C70F62766F057FD767721C698E61EF9A92 +:10C060002B70FEEBE0DEEB102F99839CFC9D16827B +:10C070007F4F558CA3BFF72FE6BD83FF5DA48B26B2 +:10C08000EDDFCB9CC2E946E7D988F3E4F9F3414EF2 +:10C09000EA2A33F3816E945E32A797CCDE196E6381 +:10C0A000F0D1711D707EAC8CD99BC949496D20F7C8 +:10C0B000026EEAF7D9D03FE3F0DFCCE759D1C4F103 +:10C0C000456186F376757B86237F007DC10E8538BA +:10C0D000DE7EA46A8FE36576E1DF6BB8D6F505FFF7 +:10C0E00045EB53D1C50F7C7270F770A44BA887EE57 +:10C0F000F76BC639DFA8EB574CF03C689D3307FB64 +:10C10000DDCDDFB117EF08433FEF68E65F02FF8B3D +:10C11000F7DA887F10EE8FD572FDD0F3CE5A98DD16 +:10C12000EF2043E8FA00AF95D30BF9FAEC7C7D766B +:10C13000F53BD13D7277AC3B7B96EAEFD788DF7B4E +:10C14000F0DE335E5E011F4F23BF7D8D0774EF8FDE +:10C150001E0F0C6276E71BA3878093BAAD6A3AF490 +:10C16000E059079FC027C82D97437CAF572F879B67 +:10C17000B81CF6925FEFD79C8FEFFFADFA3EA52378 +:10C180009C17F668F9795587D7007FB74EF46BD9BD +:10C19000A98BFF3BEE54204FB17AEF0C3CAFBAEACB +:10C1A00037CFFC5AA1FDEF78EE870984E2FB9CDCD7 +:10C1B0009A0CEF3ED5EED894E087BC91AC2480BEBB +:10C1C0003C17627F2756AFCFCF72B9107E541DB790 +:10C1D0002B67E5D0B37B283E56BC65F135D29F5620 +:10C1E000EFB4442C18D7AF40FF8AD6DF63F5BB31DC +:10C1F0005FB97AB7D61FBAE3E73F4CF6203F29195B +:10C200008654282319849675DB4D786EBDEE98D13F +:10C21000E7817149F766804FDF1FE080271A568754 +:10C220008D8BCD89BDBF530B6406BF6375C73DE8D9 +:10C2300077ADEE987A06FC87D5BAF3E435FDF8556C +:10C240007F1EA4CD9B0AFC90901BFD98A6277FFE25 +:10C25000EC1E0AE7B93FA7E4C3D9BF0BDBFF902070 +:10C26000D1EF17C23989ECEF9A6FE8F3BDA18BE0EB +:10C270000F58D47695D1D5B35BC21C0DD9CBCA5A11 +:10C28000532401E2EBDA3613DE5FAA7DE6674F4006 +:10C290007E88507CC3BDC695CF1C7AF35BB4BE725A +:10C2A00097C9359D816D9392A3F459ED617E89A064 +:10C2B000C71DBF3C84EF84C1EFE0BF0ABAACDCB558 +:10C2C000DF4C46F5C65F59783FBEDBD98B3EE1F7C0 +:10C2D0006EC0773D9FFCDC0C7AE9DC3E89A4787B5C +:10C2E000F7FF6F648C72A000800000001F8B0800B5 +:10C2F00000000000000BDD7C0B74545596E8BE7501 +:10C30000EB9750492AFFF049BCF99268488AFC082B +:10C310003FAD2404435B4025040D885A80428404C9 +:10C3200022B46DC676AD14041419661A07E78D1F82 +:10C330009C5530E8A35F639BB691CED0110BB06DD6 +:10C340006C15034604A57D258E82124900157DAD2E +:10C35000CDDB7B9F7B53752B84A0F3DE5A3D1356B8 +:10C36000D6E1DCF3B9FBECFFDE67DF343EFB46349D +:10C37000E403ACEC90179A63005600C03771D8EF15 +:10C38000349D0A58817F2EE36FEF8E110025D876F9 +:10C39000493E291DC777FFFD79399ADA19A7815AD5 +:10C3A000309E0AE4AAF3717CEF75F89F5280E6DFB5 +:10C3B0003DFFEBBD09008DEF5B1C2E7CD4F8EBD567 +:10C3C000D1300EE0B4B125C981EF6D7A667D92D38C +:10C3D00086CF4DDE243BB7E279E3BFDE9FA4440164 +:10C3E0002C3D727F12C107E01C6928A7D63B125270 +:10C3F00000EED93A773A3D5F029E8779DD33B2DBB2 +:10C4000087ED5746A8F90D3EBF4C3F3705DBBB14FF +:10C4100089E139BDDD0280E73C6DC6AD102EEF51DC +:10C42000D9F7AC44FBDE07500670BF7A668055DC56 +:10C43000FF8AFA0A2E550CBC1E7FAC9044E7153FCC +:10C440002B773CD22D17007C9EEA4CB6E7331EBCFE +:10C450002ADEA4CBB8AF7CA43A3960E3BE622C5389 +:10C46000D7650054D1739ADF6D724614E8D631FE59 +:10C47000B4F7FF547D3FC21D2915629B048D1D8CAE +:10C480000FE82638564862CD8ADDF7BA14A4C33FB8 +:10C49000AAE75CB9D3E2B7607FC58E47CF137CD8DB +:10C4A000FF88FA5FF6C8353E5CBFC2575B0305FCE8 +:10C4B0007E7F32CDF3EDAF97A8DF69017F08DD07FE +:10C4C000F8618789F9237C1CE1324AA1F8DC27F95D +:10C4D0009E0DE18F258FE3FCDCE0FC20BF9883CF2D +:10C4E000F9BC6B057EE505311EC4D7523AD7C4C1ED +:10C4F000746C3D59E17B3564BFF94A54C2A7C89AB0 +:10C500003001265C96B1DD9A083072F03AAD4508EC +:10C5100001704A93C9F7DC53086FD3098BC38BF8BA +:10C520006D7ADEE426BC9CDD75F0D87CE4F3B31DA7 +:10C53000A60417BFC56993CA041E880E2BF1B7B5B0 +:10C5400048E09BF0D7F8622928E3C4F387E2E8F9D2 +:10C55000238CEFB33607109F87CB51153E17FCE0B5 +:10C560001D6D48A1D63F9AF879850D1C7E7CEF8A17 +:10C570001ED9A1109EA09FF93A7CFD003D54790D73 +:10C580001F07E837BBC70D2F9F1A7EC3F1B92E0CCA +:10C590009F5F417ECC64EC7EFEBF965FE7C91F8C37 +:10C5A000DF4B6D4EDFAB2680736D3866093E4F530F +:10C5B00014A6A7D2892F4AC6B12EB505E881107CF2 +:10C5C0006A78D4F874D9AF9AF93D03FCABF1A9CAE3 +:10C5D000BF413E0D3FB71E9FE1E33584D4C420FD2B +:10C5E0004D6BC11B85F4EF7F59F66D275C78BE89D2 +:10C5F0003620FE9777C9868D889FF51170971BE1CD +:10C60000E8B3F747C761BB3E56F4FB13CD0F93FE6B +:10C61000D09EF747404307D2A9CFDD1F1D6B0B9E6D +:10C62000BFE415395AC17EC007351DB62BF1613BF9 +:10C63000C31100315E2DDBD25AF1FD17366716218A +:10C640001AE18215D25A13A89F5DE4E553AC617CD0 +:10C65000F6454617F0FB23D37C44D74FC07D6C32A0 +:10C66000C1EF751A47225E178B2343E3EBEDD180B0 +:10C670002A6B71D77217CDBB7B931E1F4B6C3BCCC3 +:10C6800034BE14DC317E89E4D414E40FFC5D069BD7 +:10C69000981E8D5BC39E77DDC2FCB42C8C9F3C043E +:10C6A000C3C8C1FC7498F8E906FCCF7818CFF2092A +:10C6B000F856D45BAB54BD562DE7FF82EC4ADF2120 +:10C6C000192CB4879CFFF6643CF757D8978966DE2F +:10C6D00044E6D3E59E3366C80CF2B7C677BDC4778F +:10C6E000638796F7DE97FE5CF6739CD2B4E783828D +:10C6F000A7B1EDDD7322E7F7D4FFDD7B691FC0E052 +:10C70000F955FBBEBD93F458DF3E0BC3D3B7EF8F93 +:10C71000693FA7FE5E8B83E0ED5B6B7112BCDE7D33 +:10C7200051BE6C1A4F45FA231FB4BF7CA920C07AB2 +:10C73000791DD3E9FF2866A6EF85AEBF7C28111DC1 +:10C74000BB2C0A905EDC27ECE8CABD113EA0F52F99 +:10C750005F2AF384F0C77FF63C2BCCE0617E8C82AD +:10C760008617091E637F1ABD7FC5BEA9F1C4D7CD48 +:10C77000BBF79B17E378D52BDF17901EEA7B71BFC1 +:10C7800099F4D43953E05F01559629BD65B309E9A1 +:10C79000780E6D2F8C02D896FE1BB7D736182FB89F +:10C7A000EFB99FD3395E19011B055E1A497F0E85CB +:10C7B0008F31E97F9BF8E833754F1F4DFCF71BA9BC +:10C7C00098EC40102F12D3B9A92BCA6795F8FCE258 +:10C7D000F9BE4B056023FBB086EDFE70E79EFCDFE3 +:10C7E000EEDC92FF5ACE3D9FCE5DFAB7776E8DFF9D +:10C7F00003649F1207CBC160F9FFDDCFB8FFEB28C0 +:10C8000007C37B8DF2FFE07F37BABF88748F1E9E0F +:10C81000EE4FFE97A5FBEB2ADDA3EC16C2D3CBDFD0 +:10C82000A741C8F9873B77E77FD1730FF843B2DBA5 +:10C830009A81F0D9A20E58C92F58AFFA2500EE9A66 +:10C8400074DCCFA264146D14669DE30E5912F6FBDE +:10C85000E374116FAC07430DE1454E58C6FE869C4C +:10C86000B091FD0734F74EC2EB868429CF6DBC42F0 +:10C870009C65540C7E0BCE5BAF14A55871DE7A9B81 +:10C88000D941F1253EFF889E5B689F686A7FF299D7 +:10C89000D8F7CD06F2FF8C36B32E0EB185C51391B5 +:10C8A00059665DDC110107EC46A44384C3083E8948 +:10C8B0005CD590F538FF60BA9DF110093EAFDDF60A +:10C8C000A3F0C271A1518DC7EC197ABC0CE04D0CDC +:10C8D0000F8B2763C2C66E3AB711302E14E7E0788B +:10C8E00012D438D2C84B06E34D8B1B43F0CBF16515 +:10C8F000C83E7C5E0DEF03F854F1FD43F11A4E9FE4 +:10C90000E1F0FC29E1B974309E83ED143BFB8B11FF +:10C91000381F91B5E565788AFC5DD34CB32901CF0A +:10C9200039D32D39080D33A1BF670EF6A141763CEE +:10C93000AB303DBAEFC6FE5B255B52C81F998B81B9 +:10C940001B1471EB57A8B5A754127C26C9D1ED442E +:10C95000F8609EC9F12C36F15DF0945248EB1DFB56 +:10C960008DB87EEEAD238B68FD61E8AE1C417A7E0A +:10C9700081C4F32025D748F4AB03C1F7F8537F08EF +:10C98000F13C47A5E7F88C38867F6E69BB89E832B1 +:10C99000ABDDDDE2C6F3CD4EEBCF8A0DC947946621 +:10C9A000A4F3F9E71ADDA6FBF219BE75103758EEAD +:10C9B000E7D2A67104B7DBD4C2789A66FF14F12ED1 +:10C9C00039AF972F8FB85A7C6B844F35FAC841BC6A +:10C9D000169AFB4FAEC6F3D80FCB8EED0AE101D805 +:10C9E0005F87EF701D9E6326F53383FBC4B71EF48B +:10C9F0004C8B47BF9EF898E872F7B6EA78C23F6E54 +:10CA000048AE2134EDAF8E2F09E9FFF423FDF84342 +:10CA1000D2745D7F5DBABEBFA9627AE8FAA1CE3357 +:10CA2000B324DDE4C109758F4B4EDF15E2280DBE3E +:10CA30002D6B601EE11B129C4A2D6D9850C2E7F3CE +:10CA40006418787C309E045EE6C9D042F21C5F090F +:10CA50000BDD21FB2F53F75DA6AE0762BE89C4260E +:10CA60004E85E28FA1F63BB1B4D044F12BF289930D +:10CA7000E4BEBE0BE288BFB4797FA7EA8513319E7E +:10CA80006AB7C80B8184A01E2B4DDE4E723F141E68 +:10CA9000DE9AB7303503E757BA8F18497FCFBC7B92 +:10CAA000B689ECD2B1DA8F0C94072BCC10F0CFBF43 +:10CAB000ACA4D6869CE31719226F75F41F449C1A08 +:10CAC000BEEF06F57CEF1BA091C6DF8FF6A4CED398 +:10CAD000ADB7F2FA5F6428DC1E8B12FB14A2429100 +:10CAE00051AEE2D5F7423EE27D5C10EFDA7B87C2C1 +:10CAF000D300DFB13204B8B344D077FE65676A5D16 +:10CB0000C8FB9F51F1D5B35ED85DC2EFC290F13F33 +:10CB1000A9F06BF80E7FDF9F543AAE996AE1FCD41E +:10CB2000B199E023FB1EDF7033EB2B8CBBD93E1F8A +:10CB3000AB917C1CD780D34671F45255CE8F81C8FF +:10CB4000CBD4BD2B739EE86D932795CEBBB46129E2 +:10CB5000E72D60AB88ABADF8EF7206EA01BF511765 +:10CB600067D741489FDE4B717534B5FAE7E171F341 +:10CB70004B19361137531E662CC3C9705CE8911DE2 +:10CB800096ABC88B3D45066371303E2EAC30705E6F +:10CB9000B4D024E4FFE821914F385A73316E517EAE +:10CBA00010BF41B96FF7641507FB5B66581A7CC26A +:10CBB0007E71DCDEA3C6ED47DDEFD82AF283F87F75 +:10CBC000CB7D318EF3B49A9CC0D5E5449B37B41E1F +:10CBD000D3F416CA074E5DEEB2F8D622A8CB1D8E4E +:10CBE0003F2F273DE2B2D8E91C95250B53C90FAB67 +:10CBF00096A73C733F9D6F9785D25070F6C977C654 +:10CC000028F8DC51F2C0749293F1E0584FF9D9251D +:10CC100092E30FC4A2502AB1DDD0F4E0D2AD0B0FE5 +:10CC2000D37BE6EC922419E971513D97BC4B62FE2F +:10CC3000887F42F2DD2C05F9E8EC36C12F4B7609EE +:10CC40003EAA72F52FA0E75B765994503E5AA6DAB9 +:10CC50008765BB04BF2C9FF9E2E12CB23B258F71A5 +:10CC6000FEE532C915BEA771C6E2323F3E9FE33AE8 +:10CC70006224FF10BCCEEEFC90F5C877FF3891DE41 +:10CC8000FBBCC9B15609EEB766EA527E7EEC79E488 +:10CC90000B85F2E1DEE9F10417F17701F1D9E6D76E +:10CCA00046A6939C79CAFCE944F7E258DA7FF9CEAC +:10CCB000B0FC999A775D82BFB638824F3FDEB823C9 +:10CCC0002C7F1496FF09E7DFA84C5B308F3836B80D +:10CCD000FF5074D7F875C0EF52E9D2592EF2D585BE +:10CCE000714E4FA87E9E9229F48BD676767DFDFEFE +:10CCF00072B2D725164736611F62A7D9F155F31ACC +:10CD00002B4AC80C565AC7BF4AFDDB5BB08F78CAA6 +:10CD1000C934F1BA3BEC1F55C762FFAE14E9356A5E +:10CD2000172AE9D3E3B09D9829F4DDE2DC8AD71015 +:10CD30001DE072D49A3D9CA7DB34A280E410DF434F +:10CD40007C867AD06BB882FDAE4067DF18828F2A6E +:10CD50006B041843F0576D8FD5F56F4E19A99B3FA3 +:10CD60004349D78DDF929BA71B7739C6EBC61FC8F7 +:10CD7000147ED50BA5A75DABF19C2F4C94ED84C21E +:10CD8000C3849784205E10DEC709DEC313DF1B73E4 +:10CD90000FD9934C23AFABA4DC1AC9A551E411EF12 +:10CDA0001DE03B607EDF522BF9D6229DEF752D6191 +:10CDB000BEAB964F2E207DB2C527F8AEB1F401E68A +:10CDC000E72D80FE15CEAF7F52627DB9748A89FD52 +:10CDD000CA3A35CF18CE476BA622BCB40FC24BF867 +:10CDE0005CB2553F5EE79ACE7C5C1FA62FEB543DAC +:10CDF0001AAE5FC3F9F085D24BA3480FDC95A9CFDB +:10CE00006BBF2009BDEE45BD4EFEDD507A68408FF8 +:10CE100086F1DF032ADF696DB59C1F437AA8D0AC89 +:10CE20009FA7B52730CE3322013E68B372FBE736A9 +:10CE30003BB7FFBB2D85DB8FDA146E3F6ECBE5F67B +:10CE4000814CA197E35B91CEF121FAD9E5365F4D94 +:10CE50008EC2F5E7E18081E5E7F08DEBA3D36D6A43 +:10CE60007C82EBDA336379FF33E51FDBA4FC201F00 +:10CE700077064ED9C87F99073E13D9E5DBC16F22EB +:10CE8000BFF00E0870FF2E40871EDB85A070BB1818 +:10CE90009C9C978DB1BBB93D4CAF1E85F29FF5DAD6 +:10CEA000635EDCA780EC32D91F743542E5E4A08ACA +:10CEB000B7F84CE76399A4E7E3BA4FCE213D7BA3D3 +:10CEC00009C83F254E247B13AFC6536F954E885833 +:10CED0007405FBDE93B1E8E9CCC450FC78CC340F88 +:10CEE000E9CBFE02074AB8AF31296B3BC5C3DABCB8 +:10CEF000ED99C22F48C87046659512BC82FF0BE3BE +:10CF00001CECCF68F0A20591EAD08EFD3E536F274E +:10CF10000BCD1E33DD072C71B498298EA9DC3A3E67 +:10CF2000227005BAF764785E08874FE811C12F4375 +:10CF3000D14FA3FB0FE51B8D3FA66638BB32115EB8 +:10CF4000A3013C8407635C430AE105ECF54CFF83D5 +:10CF500061E709E79B82F28F3715939D74191CD9FD +:10CF6000488F824E4704E98BA36A3C76D875EA4025 +:10CF7000168E1FEE04BB84E35B6A264490FDDF62DD +:10CF8000F3A6115ECE488E880749EF3C2BDB397E35 +:10CF900002611F97BA9232880EB3A796B29E38EDFF +:10CFA0004A2FE230254BD0E33310F4F2BAC53DE20C +:10CFB00099198FA4D13E6F952617D17B40FEEEF1D3 +:10CFC0009FE2F8575BE5385A77AC64E9DCD510D4BA +:10CFD0005BB7D1FF71DEE91D32EF73BA26DD477909 +:10CFE00098DB486FA1BEA8DF2AB33ED2FCBEB75C77 +:10CFF000C0767CCDD4F76C3C7F8609C83FBC758178 +:10D000005E0FCD71EBFBF15B857DFDB1FEDDF9CCF3 +:10D01000A8A07F270FF6EF3EB3893C431DC6A71E8D +:10D02000C477554DBAE9538A535A25E60B4D2FD58F +:10D03000B944DC5A57B3B0D88AE78EF14D9048DF37 +:10D0400055B9946A8A5F67D64865A1FEE2CC9AFB1F +:10D0500038EF3373EB7D66BA5F4FC8701BB212892D +:10D060004FDCEE4908E7167C1F317FA1EFBDF7E9E1 +:10D070007C4BB79EEFC9C2FDC7B90C76B29B5B7CF7 +:10D0800063A388CE47775C4CE0B863400E369BC9FB +:10D09000BFAADC717E14C941B81E0032BE146F8273 +:10D0A0003BE5AA7EA13A6F38BDE6AD845C8A8B7BF6 +:10D0B00025F04B1887F456245512BCBDA966A36809 +:10D0C000732A859D9A72D046787501DBA9DE91E5B9 +:10D0D00056313E9DEF1567056C1F11BDA6F683CE38 +:10D0E000BECE0A18BCC427377D63D5D9D9A68081A6 +:10D0F000EF212B406FBFDF8E882E20BC5559F5766F +:10D10000BCDAAEB7E3B346446FA77937A7E8ED7949 +:10D11000EFEB0B383F314319AF7B3EDB9AE6233808 +:10D120006FC99DA8DBA716C43DF46C6C27613BD387 +:10D130005131689CEEA36797CFD0EDD769865CCA62 +:10D14000CFF44B918EED48EF5AAB5B7F3E80698404 +:10D15000CF4B11E29EB189F6C77D9A5ABF66BE9B3E +:10D16000DCFA1DC717E3FD1DBA75C5873A75EF7167 +:10D1700074DBAB280C2F3AEE3848EDBA58AB57C6E3 +:10D18000FD4A02EE2A3C26949D6939486DAB55BC98 +:10D19000E78148C44B0CBD57DC6B3E20C37ACA976D +:10D1A0005E32781AC9AE6C34F83A1622BC3D923D14 +:10D1B00091DA7483673EF16D79FFE62A5C0693BFCE +:10D1C000F3B553DBBE53F65A6288EEAE116F511EB3 +:10D1D000B643E278A0C966E0F8F26C5C47C1EA1099 +:10D1E0003D7DF667E25E17529C290B298F9690C50C +:10D1F000F91F77559453463C35EF19BB9D729D93AB +:10D20000C6562C233B21474DB30AFB6BEC1FF07F26 +:10D210003368DC792095F25A5542EFC0CD26D65FAF +:10D22000910677B49AF4E3FCBAF966D336D27F9FBD +:10D230006709FD1BF9062854D71119EF91C7D1BA18 +:10D240005B24A0B84483AFCE054EB2DF6BB3D43CB1 +:10D25000846ACF6A137B7651BEE0F3AC28DEA7CC9C +:10D26000A5FCC144F930BBD14E7E5EFC71B77D1C7C +:10D27000E90B97F3960A9C5FD67D3495E4F7F32C7F +:10D2800085E727D754ACA6E7F0B80C347FB77DDA32 +:10D29000089A0F3E87B89F457792F468FC02E53DF7 +:10D2A000F2CFE09089E769EFDF5879DC47E7883F04 +:10D2B000EE5CCEE7CDB529D9E93C9E7EC738B247B2 +:10D2C000B8DC32B41C7FBC293191F4546D853D919A +:10D2D000EA7D6A1F43244D623C79C9E4DB0D20FAE4 +:10D2E000DEDAA3D310AE9D5A1FC00F88F78D66A15A +:10D2F0005FE82702FBB5D2C0FCBA69221FA28D7B72 +:10D30000A11CF12B6BE3753C6E0FDB4FDBFFD91DCE +:10D31000B54737D8084FC29F06A33DD14D0CFCDD61 +:10D320006589F0A2D5E344CA4A19F1E52283524047 +:10D33000EDC238CF2EE247BBC19143FD9F1E29FEAF +:10D3400090EA7C50FF7CFA04E99F6926D6EB2B73A8 +:10D3500037F1BDE16EB3B2E77802D513A01CE273DA +:10D36000D3DFDFDBD189FBAEB47FCDF285FC7B0B55 +:10D37000D9CB0BDD8638B2478BE481F338016138B5 +:10D380006508F649EE1605CFE3CCB292BC04CF6730 +:10D39000C5FE62757E60C75D75EB88DFEFB6329DB6 +:10D3A00057AB32BC310E36CBC887177327DD4AEF37 +:10D3B000BDB8098D0BE274370D921D4F891475525B +:10D3C00009EE5CCAAF1DEE167E6507D2D94907F398 +:10D3D00022DF9405F7BB38E5B46D1CED3305BD289D +:10D3E0003CD7E2801914D21B46F05B50BF944DA984 +:10D3F0007C233381F832C320E1F871DA07E3C49F5C +:10D400008C75BE93C579602DDFF9E00FCA77AE54F5 +:10D41000F5D5CAF235F95C37324D627B3F3D476145 +:10D42000F959D9FA25E3178C1E07D1B5A9F522EBD6 +:10D4300035ADDFBB46E883CD26B8AB16DBA6BFCA49 +:10D4400077513E0DF5E006D28B4D70C0BC2AC46FFB +:10D45000838EF3037AB0D010F4EB8C8FCB6C27C2A1 +:10D46000E1357A5CFCBE5AC93E1790C50A73F6D402 +:10D4700019D1DED546D8E74AD8FFEED96DA29F6A0A +:10D480009F6BC07E72F665D11F69FF678303DD85E0 +:10D49000E792E718D17FAB4DB7BF4B7DC7B3D8A795 +:10D4A000F1F11A7FC7CEA17A3ACE8162FFFB1DB19E +:10D4B00073BC9C1FB1F1FDC2859A08CE7F0D85CF4C +:10D4C00039ADBFD7C51B83C66549E8CB06A107BEEA +:10D4D000983192F5196439C753FD4C73DD9822D207 +:10D4E0004B31D942BF25212DCAF1F70F28AF56C4C1 +:10D4F000DF179F742F31A07CCCD9FDE879299ADE03 +:10D50000B78FDFD7445554244F799EC46CCA574A0D +:10D51000810F496F361BBA8F95E056FB73ECAA7FDB +:10D52000D09F45749A071E8E47E6A9790803322BCF +:10D53000F959F5B62CCEBFD73784F96FE0E778A557 +:10D54000CE155E371492C790A9EEA1FB4E33C2618F +:10D5500052F1D01C979E4DEB10AEDCEC44820BE1F7 +:10D56000C4BE29A13B49F8F1BB14CADF5EC8B5F2BD +:10D570007D71E4F5C70B3C57F0EB3BDAD05EA24877 +:10D58000BDD8D6C9EDD33920F4B0316076E03E2B5A +:10D590008E03DBA76AB989EDC085CE7408F5DBF68A +:10D5A000E708FF38A653E44911AF0EC26B4226F8D4 +:10D5B0000D48D784DFBDBEAB9DF114C5F3343ADE10 +:10D5C00034023A22E282F8463A38880E1ADE6FAA0E +:10D5D00012F9B59BE20FEE6A4FA7F502AEDD91425C +:10D5E000EEFB5F8AF0919F100E6743B680271CDE2A +:10D5F000FFD770EE57E576287835F9D5F0A4C92F16 +:10D60000A87A6B5E43FAF68D52B05FE74AE738506E +:10D61000837330FFEC50AEC43FC3F1CD748D3F55E2 +:10D620003DA2E151834FD30BBBE9FE50075FEC36BF +:10D630003D7CB12C4F31ADFFCE7A4A8E32F2F3FAF7 +:10D64000DC946D94978CE9BE409772F0487686C062 +:10D6500073C7B7407E784C6B17CF1F749EB073684A +:10D66000FA31FC3C9ABE1C7C2E556FAA7A54D39F8B +:10D67000535101B0DE23DD2C919FECD1F97F157061 +:10D68000AFCE3FACB2DE1796FFFA3BDDFC9B53D624 +:10D69000E8C667288FEAC66FC97D4CD79FE97852E4 +:10D6A000377F76F936DD78AD75A7AE3F25D0CD7ED4 +:10D6B000E7E1B61A8E936F3CD3CFFEA75F8DA70F1D +:10D6C000A8F1F4AB144FA37CBE46F134B687DA1C44 +:10D6D000FCFC4F6DE5DCBED9E6E4B6BBCDCD6DB844 +:10D6E0005CCFFAED6D46F25FCBBB37B3FFFB50A6C4 +:10D6F000A787F4C66C83AF3D0AE931E16487CC7536 +:10D70000941E87CEFEAEDF3FF16DF2B3E2DF9421CF +:10D7100042195AFFC67C238333243F1FE3EA07D212 +:10D72000F7316A9E659611D65990BEB536A33F195A +:10D73000E975225BF88DA4AEE93EB4C10A7C8FDAAC +:10D74000D02039DA819F7BE99E115BBFA7884171A8 +:10D750005B93D4FB47FCB118C14BFBC94E196EA4B7 +:10D760007C4842BC91EC7C3D0D229C73F19DD7E13D +:10D77000BAF9B60ECE13CD3BB4B679213E8775DE2D +:10D7800052F69B343BEE7DDF70F9866BB7E327B230 +:10D7900085FCAC97443ED11B6BE43C5D78DEE485B0 +:10D7A0006C91479AD5EE95A329AE39027CBF395BBF +:10D7B000B5B3888F0D96B8A01C6AFC5F6B37FAC7AB +:10D7C0004693DD79AC8AD635F5288C8F70BF418BB6 +:10D7D0007B34BE477DDF4EF32F1C07F6E726F4FAB5 +:10D7E000025B94C171C870F191067F575B03F3CD62 +:10D7F000BE360FB7FEB646951F5BB8FF6A5B2BF7C8 +:10D800005F6BF3727BA86D83CA8F9B79FCCDB627C3 +:10D81000B87FB8CDA7F2E54E7E3E5DD53F97B355B4 +:10D820003FD65AC1F73160146D901F142F5C851FCD +:10D830009A52847E0EE78BA1F800030885F4F37CEE +:10D84000B487A4C76E07EFB835D8CEEB68BFDF6CDE +:10D85000F8F1FC506F7BDC44FE74B87EBB1514E617 +:10D86000BBC1F6DEE3B8167BAFE93719E336B25336 +:10D8700016F93E07E5157EA87F61B638188EE1DF00 +:10D8800027E8624AC1D817DF678A3DF69C1F4158D6 +:10D8900067EBB953365C010F6171E6815450EDD6E8 +:10D8A0000F830F3D4513D17D38F8B2C63AAB7212E3 +:10D8B00043EC994A4FF30D829E668BCFB796E2BD3B +:10D8C000DF4788BA089B33AD36249FE3CA11FAC6F6 +:10D8D00017EF74E5705EBCF7B9A7495E768FE0FC80 +:10D8E0004B781CF565775572A8BF14AE4F57DA2FE9 +:10D8F000B2DC0DB2F39281EDFC4A0378A8EEA9C820 +:10D90000025609F1F9494EE5EDE2BD53B8CEE38286 +:10D91000DD78D5FBD295ADE779FF21C70DA2BE6AB0 +:10D92000E5CBA5F645217983A755FF8102C44FAD0C +:10D9300041FC5D2B3F4FED6FD0E987BF39FBE9FC20 +:10D94000A53E6F856687F03BDB3383E9309F22A4D9 +:10D950001F703F700F383DD42664781E23FA98A4B8 +:10D96000808DC6BFD8F3972CF2A3E5D89E735B6079 +:10D97000B03EBC56FDA7E93D4D0F3E6C16DFC9AC6D +:10D980008B357B897F4D8971EC3F69F4F8B71C7D3D +:10D990007D42B89CF58D478221BC7D2F89FABDBEA2 +:10D9A000A8489F84247776FDF138D54B815F6FBFFF +:10D9B0009D561BD7C5162F70B01D07B4E39437C70B +:10D9C00037F786EE5B6D147110181DB97784C84D5A +:10D9D000BB5A7FB1135BFA7E297A41C0A884F0DB81 +:10D9E0003E15DE8A79D380E3CB054EF603A3ED2204 +:10D9F0003F546D859208DAF7BB8BF9B4EF2CD54F05 +:10DA0000D868023FD12DB97CBC447EE2DE78E72B9A +:10DA100024DFDE47A6C472FE9972ADD705F551B575 +:10DA2000EC4A59487293606479D5F44CBDED3FCC13 +:10DA3000A49FEA40E8B9707CAD9812C1785A0112EF +:10DA4000E3295C8E9D9DFB8F935F3F9C7F3A9C7E7C +:10DA50000AD71F1ADEC3F1BC37DEFD673AA7A65FFF +:10DA6000C2CFABE5919B21C07CBA71EB7637B5F79D +:10DA70004B8AB87F86CDCED1788E159DF701AD2F1C +:10DA800092457D6CFF0C110F85CBF77955EF35A9C9 +:10DA9000FAA2281EAC29440F0FB0FFDE37238FE314 +:10DAA00010EBD838556FF4E7D485D45F6A7E4DAF5C +:10DAB000FADDC99CCE08AF1C923FF82E2756C44110 +:10DAC000D62F757A7045EBB73AFDB5225FF043511A +:10DAD000BB524CF565ABD5FBBEEFD3DC9749EEEE00 +:10DAE0007D639779B442EFDBFAB3F789CE876C4256 +:10DAF0002FBF99C8B8E993F4754273ACE755FBBFE3 +:10DB00004D5747F5CECCF738CE9DB37B8497F0AF19 +:10DB1000C1A5C5C79ABE6EDEF719E7C17AA5F31F86 +:10DB2000D2F702FD2F59D83F6B22B8E339AE4E1819 +:10DB30008B70BD78C8C0F86D9E61D92E731E5119C7 +:10DB4000571715C44BDF6757AE5FD2E0D3DEA7C1CE +:10DB5000D52B893C85362F7DACA0CFEDAA5DFB226D +:10DB6000DA7107D1E58B3DA30D9470D49EBF13DB12 +:10DB70005D40DFF16874F9FFE527CD07E12F1F371E +:10DB8000ACB9DF8CF8EAEDD862E2BCF28FF48F34E6 +:10DB900078DBA3C047FB8113147B12A7F044BD229E +:10DBA0001ED29844719BE84BB6D7BE253D36556DC5 +:10DBB0003988C4F1292AD80F4B2D5C0F6885CDDC3C +:10DBC0006E941C0AB537496EA3C867FB581F4D8772 +:10DBD0009631F4BCBD22D04E2F33AA79C4B9B11B03 +:10DBE00066311993E061BAEF309ABDA624D28B75E5 +:10DBF000316ABDA6C093563FD988BF53102FC6586F +:10DC0000508C38BF11FD7613E2B77EE9BC7FC8A700 +:10DC1000F9F6298C47ADFE92D6111E6F7DB36526AD +:10DC2000F93BB7EDFFA7C34E7CFE59DC66CECB7E39 +:10DC3000DEBDBDE0799CB3EC9D2EFE0EAAC9DF3D92 +:10DC40009DD0BB02FAD91E69F85F00DDDCDE09FD5C +:10DC5000DC7AC0CEE38BC0C1EDDD20EEB597400B82 +:10DC6000B727466E6D46498079C99B4C5F42100FBD +:10DC7000CB63D795D17BEC954F64B3BE51EFA7B47E +:10DC80007B94F07B8EDA581BDF8768F71DE906CF9F +:10DC9000FD2407B84EDC7F7E18E5A33C498FA9A57B +:10DCA00090F0DD176B06FACEB22F51E813EF17C0D4 +:10DCB000F9D83E933AFFBCC2FD92AA2251DF7A49BD +:10DCC00061FF6CB27A0FA9E9DB921B0CBC1E2E8B94 +:10DCD000F953FBF5F56A2594C4A4F57F51F8FEE2EB +:10DCE000A66F8C57D5C709B9717C7E2EF9C2FF96F5 +:10DCF000C41B5A42F31BED2949223FA8F62D8A9DE9 +:10DD0000F31DCF8F15F6AC2FDAC0FC823FF5D6326B +:10DD10008257D07772D71B2A5F62E09914FC5E703D +:10DD2000B2D1BF9F9EAF50F53E6A65B65B53884F38 +:10DD3000892F3BF57600526EE03A82492A085A3C18 +:10DD40002BE15E0BE288AFBB65A2EB8DD0CFAD13AC +:10DD5000EC6CF72BC1C1ED3470738B7CCE6D0D6C08 +:10DD6000E6F627D0C1AD0BBAB985EB1D0EBAC836A1 +:10DD700058FDB290E387EC5C6F3263A981F2D7253E +:10DD8000B7893AD3E1F0F2B6AAA786C70B0A74D9CD +:10DD9000B5E0C523E00BC7CB985C96270D2F1A3E44 +:10DDA00022C09742789C0A01995A4A59D3FA0A1418 +:10DDB0004BEA578193FBD5C3E2C3DF4EF7EEE50193 +:10DDC0008F91F31DE1F8A8127CA2F18DA6D78EAB3E +:10DDD000E75F47B09686E8A15C85FB9A3E42B9E3CF +:10DDE0007B646D7DB8BED2C64B46545E5450B57F41 +:10DDF00035F602E7CD4B8A2B5753A99494FB57CEA7 +:10DE00009B974CAEFC6D06F6E55CA99EFB8595C51F +:10DE10002607C01AC9503F0DFBED4784DC8222EE75 +:10DE200037B4EF16DB8F08B9BD60FB99C34E76742B +:10DE30008CCD41E77DC48C384478AC16D1CA992288 +:10DE4000AEDCDB06FC9D8706AFC522FC409CEF25BF +:10DE5000BF2DF18C771EE51DB473A6D5F80F98146D +:10DE6000E20DA598F2289BD33CDF927ED0F647784E +:10DE7000585F8F56E1D1D64DB4999D041724A4174D +:10DE8000D3F9CFA6B9FF3A96F8294ADCBF6AF376F0 +:10DE9000AAFEE644E36699EE43AD84EFC4A1DBE25B +:10DEA0005CA739F70ACF87B24F7D9F98392935266D +:10DEB000D71343EB568EF82E87FC8066EBB9B4E29D +:10DEC0008C207F4A489C05E4272D73588D6C57D4CD +:10DED000FA7FF2D3908E13EF76CAA4E2FA3E41D1D4 +:10DEE0004479286B68396862F6F58CCAC573AC94BE +:10DEF000FB97F03D81FB5CDA78E26B1823F84CD598 +:10DF00004F2FEF7BFDE7A345D70D2172B472DFB72A +:10DF10005F7F8072B7F282CD41D3FBA2057E267768 +:10DF20003DB99AF107369DDED0E46E52A785BF83D6 +:10DF30009ADC95770FCD9BFACEC94C3AD74D270383 +:10DF4000ED94EEEA7BF9BDD182DFB5FBAB4BD28F0E +:10DF5000B1E3A7557B71DA2AF84CAB5759F5B2C437 +:10DF6000F737ABD4FAB55554978CAB9A0F99F8BEE6 +:10DF700049AB3B6D54CFD904DD7CFFDCB875B1A84B +:10DF800057F609FF5AC17FA407261C3786E587C5C7 +:10DF900077BFCD1D61F9E1AD5557FC8E3CBCAEC5D8 +:10DFA00095ABD6D9A5422A9F47ADFB1CEAFC5A1D6A +:10DFB000CB1270CEC965BFD82D13DF961A453D77B9 +:10DFC000B5FC10CBD7AAD4FC2251572BEA90974628 +:10DFD00088F3C5A9F5DDAB9E91C1C6F83173BDCFFD +:10DFE000365423E5C457293EFE1E66A97A164D1EF7 +:10DFF000EFDD20F17D246C8D675E2B7CCEC27253E9 +:10E00000F85CB293F05468167EF8B6E72C1BA8DFD4 +:10E01000BE3ED24BFAF885D8FE51F4DD777B84A85A +:10E020002F237349F7828519FD1964EFDB73855D32 +:10E030006B57EDBE762FAADDA7B7ABF67E55544ED3 +:10E0400032C56F03F3ECA374DF45B7AB7E7809C12B +:10E05000497E65FF28B14F8438C7FE23B78E20BFA5 +:10E06000F825A37B04D59F5DE8C98881ABD493953F +:10E07000FA911857C97394F46CE2EF8D4A9E300AF6 +:10E08000BCA87CB8B7CD091F9B8278D7CE512DEFA5 +:10E09000AA32D37DE2DDC0759BAB5EFFB776FA0E88 +:10E0A00069D5A374AB4928CF8D21BB567A48E6EFDA +:10E0B00080261D1275577BD53A504B8A019410FE6D +:10E0C0008A50224109E1A311E85784F6A31CA374E6 +:10E0D000F363CA3374E3BBD5FA1BAD6E5AF37363B3 +:10E0E0009DD7EBD64DED167560F13545BAE7F0A535 +:10E0F000908372FCC7F6115A6492B7C90180A79049 +:10E100009F22022DFC773B26F5EAE505E9C7F53CA1 +:10E1100016B5EE2BA2C7A8FB5EDE629BCEF5E1969C +:10E1200061EAC17EABC9CD1818A3FB4E7E00DFFAB1 +:10E13000FAB032C8FA972925845F13F870FC02AD53 +:10E14000603B043E6F08BE35F9DA0B1D6CCF13DD62 +:10E150007ABC2737E8F13ED2A3C7FBE8463DDE5341 +:10E160005BF478BFAE558FDF74AF1EAF991B26E905 +:10E17000E6676FAED4F5C73EF113DDFC3C5F9DAEA4 +:10E180007FC3CEF9BAF9E33A16E9C60B3B975D13A4 +:10E190001F8CF7AFD2CDD3F8A0F8D08357E4032F6C +:10E1A000FE63FDA87EFF518E78A73CED70F42F0F23 +:10E1B0006C06D2773F960FBE0CE7836BD49F3D541D +:10E1C000634FF7208744DDDA2C9B95EBDA906F7272 +:10E1D000A93EF002443AC86E687E835BD533B36DC6 +:10E1E00046B61BB346083DA4D59385C78F5A1C334A +:10E1F000BB5C0ACB13EAEBDA87BBF728EDF6EBFA48 +:10E20000E37B4026BB59FA1F4A7B14BEA7F8A4B88B +:10E2100047098F574B029E76326F137AD14C2B14DD +:10E22000BF1EFA96F24953D576D2371D07695D783D +:10E230009C053B77B0FE37DBB57308FD1B1EEF3E38 +:10E24000208BB8F992C1C3FEAF85F49F1CF487DB25 +:10E250002B44DCABC5BBEFA67AAECFA37B03437FD9 +:10E260003CB0DF1F10F77AD001E4AFF50DD4233DA9 +:10E2700055EFA4FC452C70FDCD2FD7FC4B3DD7436B +:10E2800026803D5026D243F45391E729CB43FA9D93 +:10E2900092441C7A6EE2E8878B11DEB23C603D9CB2 +:10E2A000BCA083F3507BE39D13F21287AF1FD6F21D +:10E2B0006E5A1E6E779B9FDB11F90E8E4FC2F36173 +:10E2C0000183C86F781F14DFC59C25A02606FD8E2C +:10E2D0000B1B4CEC77801AB7DFA1D245CB6F2C50CB +:10E2E000CF710AB76844FB7A47E71F992ECB537A60 +:10E2F000D5BC488B834A3B178FB1717D08388B1D85 +:10E3000022FFA5E53B46CB3FC44F1AEEFCCB533E64 +:10E31000D3E5C96057FC35D59506CF2DF63F35437B +:10E32000F805A7668CE6FACCE0FEE738EF7647CB37 +:10E33000111DBFDFD57A42C7DF0BBD1FE9C6030938 +:10E34000FD26CA2B066AF2A6915F81745F4DF40C1C +:10E35000EC1939FD76C4E7172F59CAAEA53E7C7972 +:10E36000CA597EFFC9B66EA6AB76BE0FDB8E733F71 +:10E37000D016E036FC7C5A5E426BCD0780F58356A2 +:10E380000F3A54BE42939BE8EB33C4770FB2F3438A +:10E390001167312FC3A555268E5F4FAA75B827D5B3 +:10E3A0003ADC936A1DEE49B5EEF6A45A77DB67B204 +:10E3B0006DA07CC64949DC2BBC3BEAEBE7CCB8F549 +:10E3C0006F533DFF4C72D057D9FFB581F45F4220A7 +:10E3D0008DE4E99F923C4FD07309C38A915C97EF1B +:10E3E000CD213FF18CC15B407553EFFCF2B37A8ACB +:10E3F000EFCE447ACF9107F246DE271CCF9D310B3A +:10E4000039FC20EF6D96BB777153AA7FF5EE9544EA +:10E410003D9B2D60A6FBAB7F4FF4ECA0FDA9EE8BDE +:10E42000BF67C4E7C49F5A3EB4CF24FCBD3ED5EFBE +:10E43000FB559EF03B77E5893A27ADFD832AAF1F58 +:10E44000A86DB5BC2987FF1E80CBC275E5F87E2775 +:10E45000D5C178F75938BF125E1F55F48AC52F858C +:10E46000E453F7E5A58BEF143281EBB7126E89E028 +:10E47000BC1004BAD3A8C66B00DE1E515FFA05E5D6 +:10E4800099859C3ACDD8AFDB93CC79867D79C22F24 +:10E490006D7EFDD48794A75A94E73990571A92AFAE +:10E4A00085EE4FED48CF9E3C85E7219C1C1F5A64AA +:10E4B0005847F469B606F8FB9EE1F2E4439DFB8BF6 +:10E4C0007BBAFF477E3AD55729D9C437DA7B118EFC +:10E4D0009EBC90BCB60647709FABCB8196FFD5FA29 +:10E4E000EFCC7C2487E4A788EAD4AE60373FCF1313 +:10E4F000F985932608AB63D3F0A6D5B1E5B39E3278 +:10E500005D7FE53AB64B79E2FC45687729CF6F89A4 +:10E51000445B5114DC17E77BE81EA7E88D374DC933 +:10E5200088877B7F25BE73D0E0D0F6FD3ECD793E57 +:10E530002FE41E0AF94DFC7D911911CC1FCDFB4E25 +:10E540007C487FFFE1DEFF39AE98F0ABAD0BC72F03 +:10E55000E23595F079D4E037AB75747FCDE3BCFA42 +:10E5600051AE53D3F0FB63F1D997DACDF7247DDBBD +:10E57000BE4DA3BADD66F51EAC59BB7FD9ADCF2F1A +:10E58000213EBC94A7187CEF027C7F6351ED874548 +:10E590005B3FC6A85BFF4CB43BF17A847F8FAA2710 +:10E5A00070BECFA0E6B5C9DE0CE4B5557B54AAAA6F +:10E5B00022E9B8C86797524B763E3F86ED5389F6FD +:10E5C0003E848BE8F7B0E4E53CD1807D57F3DBF285 +:10E5D000E2D59C072C87CDDC1AACC26E958DB13983 +:10E5E000F86F5E6879AC475FE3B8FEFF02A1197F60 +:10E5F000AE405100000000000000000000000000DC +:10E600001F8B080000000000000BFB51CFC0F0037F +:10E61000098BF1A0F21BD1F887D851F9EE5CA87CE8 +:10E62000415654FE546E543E21ACCE459AFA2466AF +:10E6300006862C202E02E22A66FC6AEF301136EFA5 +:10E64000990C84EE04D27B81F839100B8A303008A3 +:10E650008B3130A402692511D2DC4708730851D7E9 +:10E66000BC514C1A5EAC88CAFFAAC3C0A0A7C7C0E1 +:10E6700050A10FE1CF4292EF078A7DD381B025D51B +:10E6800019187881FC898AD8CD9502CAF301E5175B +:10E6900040CD0100017052C9680300000000000075 +:10E6A0001F8B080000000000000BDD7D0B7854D5A7 +:10E6B000B5F03EAF796566721292308110CE84203B +:10E6C000011398408280D44E205810D0010129BEF9 +:10E6D000864015113420D6788BCD843C08016CA47B +:10E6E0003E908B3860447CD56841D1BFED373C54B7 +:10E6F000B45C1B2D3E8BDE2056DB5EF5E2DB7BBF80 +:10E700007AF9D75A7B9FCC394326A1FD6FFFFF7E54 +:10E710007FFC3E37FBECD7DA6BAFBD5E7BED3D4E49 +:10E72000CF38A67F9FB1D3F807E94C8931969B4C2F +:10E73000196B67AC1253C311F159F3B58CE763A29F +:10E740009E25CD634C61FC4FC969F94C198DA927F1 +:10E75000A6F831553FEC76F1B2D32CD94E2B64D1CB +:10E76000CE52C61AF153BE689CC398530F3DD006D3 +:10E77000B0143007D553735CD48FAAC75814EAE796 +:10E7800049D1021A771653D978C6DCCCFC0B137C1E +:10E790005A5E4926D663DE6CC62626E769A63BEAA2 +:10E7A00059B3AA59F21A5B88703016A7796AFFC468 +:10E7B000E203007EF6D74B8DB965E9FB3153733E1A +:10E7C0008D43426F452B2097EF083D085F9BD3CCCC +:10E7D000EB3C735E01470CF16499D7797DCDABD1E9 +:10E7E000770E9F574EEFF0348A7999F3E8F96ECEA1 +:10E7F0002F4DBBD479A42B6F1A120E2C8679C47CB2 +:10E800007C7E8A649F9F5600F30B323657CC4FF3C1 +:10E810003A68DD605E737B9B972B27CC5891655ED1 +:10E82000DE1C824FD55D8417735CD5E56856C7251D +:10E83000E1BB9AE9BCFF9EF1432C02EBA4E88CDA21 +:10E8400055B3E8D5387FA0C32EA2436F98F0EB08EC +:10E8500040F9184CC30B6380CFA603135929B6F3B4 +:10E8600086D80A481DDE289B05F59ABE5304BE2AA9 +:10E87000A87F138E454CB6E1C784C78970F482D750 +:10E88000DD4300EFDE33D77FF7BD17069640FF75F7 +:10E8900088A7CA33F162B607BCD561B9491F261DE6 +:10E8A000ECBE57E0AB20C7069F993A5D8AC0979DA2 +:10E8B0000ED60F196FF07EA023D8AF0131DE28A34A +:10E8C0007D9D64C0F8029F5B73A6FF7031FCF3AEC0 +:10E8D0009C007D2FDA133370EA0F79A26DD6FE0209 +:10E8E0005126637FEB353ECF69CA0AF7FB90BF7BA9 +:10E8F0006151660DE49F6052AFF4B4AD1EE604743E +:10E90000DA5CEFA2F49B7747D07CD2D1DD967ABD5A +:10E91000C9BA5FB72C53A7C7A1FE96E9BBEEB810E2 +:10E9200050D09C533C9678CF3249C579D13C00EE0B +:10E930009D387E25E17127ED37561BBB063E6939B0 +:10E940001C9FA3C2B5611DD291AC3621C1520FDC10 +:10E95000C3420983E344B5E027304F8E3947D3FCE7 +:10E960001FC17E8A0ADA0FE23633A2FA41CD48CEC1 +:10E970009FB1E886E100CF3D2F0D1FDB6659C78FA1 +:10E980001179B8CEC59CBE991A0AE03AA6DB7F5B26 +:10E99000013FA5C331DF29215D0F8EB238D2719BB3 +:10E9A000F8BE9C459EC37A83574439FE25937F0168 +:10E9B000C440474D3D7C23367237D15D5E791BC024 +:10E9C000F982A05FB65D4A476F2FF4466FCE924E34 +:10E9D000C901EDF7CAD197B1BD521ACEC27DEB592C +:10E9E00011A1B4D51C3FC6BAB0DF7C8925FF607C7D +:10E9F0005F89B10BF9C23B623DF2232DAB64E00BA2 +:10EA000081881A73429ADFBD781683F9798ECFF820 +:10EA100033E3DF4F20BE33BC9D550E24C968282642 +:10EA2000C3F81D72F41D1CDF37FF7002E9D21369B1 +:10EA300092704AF768B50CD7D13939118EC03A6C4B +:10EA4000BB6E3C5B6CA1A77F13F3560A5838EE4DA2 +:10EA5000AEEF5685D3C95DF3D6B9AFF5623D0FC1B0 +:10EA6000378A5584752FD24528C1802E9C48178C33 +:10EA7000D6FF2F586E448D83D82E0874807000BD49 +:10EA80000F447C011CF9D8EE9EEB1C0B699C183BD3 +:10EA900086F4E893052E0CF80FF0E314F9BD4CA3AF +:10EAA000F15C791C4F795E1637004F4A80E7079674 +:10EAB000B0781850E613F832F1E313F8724C1F4B9C +:10EAC00078195CD17E00E1F02EEC4C205D029E4E68 +:10EAD00063BF81409CC9345617ADE316B5F65F6F2E +:10EAE000837EB71C514231C3428F0CE8B12C89AFF1 +:10EAF00001D361BFF522AFCDFAFDC90F936E542F3C +:10EB0000976FA69C00BACD92701FEA9C6E4D7EDF77 +:10EB10005F7F5A9D627C3000174D97119F0E175FE3 +:10EB200037CD15690DC2FA28C71486F351DACB69BF +:10EB3000BD0077249FB00EE61D39AC03E98FF8E1E4 +:10EB4000F8A49EE22A9659A224394FB5C063CBB3EC +:10EB5000853109C7BB59E042AB737038583481EB3B +:10EB6000A3C21AE33E8734E1F6E37707B5C7E99E0F +:10EB70001E86F99FD07866FB0DC56359D47BE63CB1 +:10EB8000556C07752468783A7866BBF4F849196FB4 +:10EB90009E1DDEB36EE7558D0FCD36457DB553D93D +:10EBA00087267E008933B083CAE43A011FDC2F81B7 +:10EBB0007C75B94247507EACC72258DF16C6D79F36 +:10EBC000C5651BDF510AE4134ED20F0C4E3701AE60 +:10EBD0009FA8DE5A1665C97C7FF41114F495C522EE +:10EBE000574A95A4FF0DB2E25973703D9335CDA3FA +:10EBF0007ACE0263DB3258BFC29C40B96224E96A14 +:10EC0000570ADE185B47F3BBBF3ECE4E6A28376A11 +:10EC1000892F0E5D1BA1752CAC3B2561DE59D02DD3 +:10EC200061DE2CEFA1D7264EDFCDAD73331996BB35 +:10EC30000C19F943517B709DCB4AA72CC2E6C17ECB +:10EC400019CA383D3E0AE969935E617C679D87E891 +:10EC5000C3A4CB1E3A6C3ACBFD180B1F2886F9CD06 +:10EC600016789F8DFC03E9B542FBA0DB5CCF225AEE +:10EC7000DF641ED6F7935B15DA3FB17229FEA074EC +:10EC800066F92CE447A3497DF9A047BF07B8EF9781 +:10EC900024411761B20B6689B243FBDE3C671C80DE +:10ECA000FC4A48614EC4EEBE17378D83FE7F371194 +:10ECB000F2868017EBE33F315FFD65810CE5B327FA +:10ECC0003B19EEDF5993D7935D317B8242F2611697 +:10ECD000C26FC1CBA7FBBF5011FF374EB67F7FB4C9 +:10ECE000874EAB695F99F0AC1CAB84ABA1FF572A90 +:10ECF000A4386E86C3EF7E74FBF900DFD1C95208D9 +:10ED0000E17B2574D28BEB668ED7832F83E988AFA6 +:10ED1000D4717AF0ED0A2D44FEB04C771808F7F55F +:10ED20004AE88881EB3D500E3D68E0F773AA11FF79 +:10ED3000265F3C26E573F894C9470C68F755BC3943 +:10ED40008474996E5D97A98CE96321659BBA50BF65 +:10ED50006671ED54B765FFD61D6F683A6CE16309C3 +:10ED6000C997F3610643C3E33C5CB7AF58E9EF0CC6 +:10ED700096BEFFBFD4BB1A482FAB8F351DD6CE2C05 +:10ED8000BF5E61B5B89FAE67EC036736CE37E6F875 +:10ED900021C88F3F482E3E0FC1D7CD795EBFC7DD5A +:10EDA000609527CBBC7CDFA7C2DD833FD11EFA4F25 +:10EDB00060FFA9EDD3B653ED7A34E833DDC80F5CBC +:10EDC00039AB638360C2D73F56C5AC7207E146B921 +:10EDD000678E9316DE9CB383B7BF7DF8B9775D0B62 +:10EDE000D93BDEB10B715F35037D200DA4D2838941 +:10EDF000FF46EFBABCDEE485897FA0034347FC836E +:10EE0000019320BAD93001655BBEECB6E9FD3D70D7 +:10EE1000F443279AFC7F874E0CD965C3DBFF003A89 +:10EE2000192EFF0FA213E7B227B56EB20F3B9BF36B +:10EE3000906FAC9018F20DC66E6256F98EF5F5F132 +:10EE40006897F2BF452A734D00BE20AF80F6403769 +:10EE500097AB9D1ACA9B452B9C36F9D1034F680A84 +:10EE6000C9BD25429F3AD0FDCBD7C70388EF2D53AC +:10EE700088FFBDB789F3FFF762C01F497FEFDE7CD3 +:10EE80001ECA83630AF1B17796297E6E27C4872054 +:10EE90007EE60BFA3D518F8862EC38D87798323590 +:10EEA0003E04FD28C7B5C49560AA43079555C726FB +:10EEB000401E176010E845F2B48618C0F90EB69FE0 +:10EEC00004FDC8D3AA62D4EFA6961FC0FC9688F9A9 +:10EED000D56C92B8FE1E6164E76D1076460D182061 +:10EEE000C86F5D05A1071480F36A99FB1FF2A4C8DF +:10EEF000D5B2451F65C5A01F9D855EF50EC23F2298 +:10EF000099AF90A3D7613F35CBB21C280F6A5A77CF +:10EF10006AB82FDB645DD0536208F6FF8E64DA8135 +:10EF2000892173ACE3B9397EDBE4DEEDE1D4F1167F +:10EF30002FDBC9D77D8D142233D095187295453FAC +:10EF4000DF80C600F4135BCCC78BE54B647F99E58B +:10EF50003F95B9FC6D9385BDF7F7CFBB0DF7C5990C +:10EF6000F366429E323FCEFBBDBA4B33A3DCFE2597 +:10EF7000F96AD2D34B273E223A66F37289EE6B9A36 +:10EF8000141B1D5E599B61CB5FB589F793767FC4D7 +:10EF90009C49FDDCBAAF580ED143B6A0935C06562F +:10EFA00013E9DFDCCF412A3BC093A7D74AC87F03D0 +:10EFB00013DA0F701B204EF31814EEAC0291CAEE58 +:10EFC000F29DF3769CF61933D4F1E87F843FB29F2B +:10EFD000D498D8CFD269A0E7821216768FC672F87D +:10EFE0006EC2037497BF42B5E903BEA83D9F11B23C +:10EFF000E715AB3E154CCEC79C6F86F02BB170CC9D +:10F00000403CB749F1B770FF6C6ABDA26A167C77C5 +:10F0100076C302009D78236A3C8E754BB93F48C188 +:10F0200079C3779FE18827A05F4F215880B80E6A87 +:10F03000A78BA1BE1A0A85ADF347FF19AE9B4FC03F +:10F04000B6B1626E16AEB7D91FC0D5A7BF422D119B +:10F050007ECC92D62E9EAAC4079D508EAA20F0D7B1 +:10F06000D7681FB64BBDFA35CD71FAE38B675D8F5C +:10F07000B11215E67F0BF384D0DF96E908BD158544 +:10F08000A675C58E1068F44C9B5C1BC3F92F92A229 +:10F090001F207D675E503714E94EBAA06E04D2ABD4 +:10F0A000FF5C2EB7169E7F05FB10D2404E24F62142 +:10F0B00094BB1485F77FAAD066476A891F3203FD87 +:10F0C000CEDE50388C7A3E2B273F84E60A51AA2B9D +:10F0D000DCFF2389D4A508FD380C1BC6E2377FC8A6 +:10F0E00013FD1AE1290AEB535403C5BAE95FAB7D5E +:10F0F0008BFB5D5DC477A729A599EF5BF789D8EFF6 +:10F10000667EBDF0AF9979A7CBDF84F682AEE85476 +:10F110006F836F6B80F87671D8E6B78FB1A84381A3 +:10F12000F9B9C2D130EE07C5CBED9C64BBBB0398E7 +:10F13000578101E3FEF29F7F850BFB51279BFEF970 +:10F140005AD38FAD633F6CA15DCEAA60884844E777 +:10F15000EC63B2E3C5F70DC3AF71F5E6FFDB2647FD +:10F16000038A653F38022182C7C7B6EBA8A70036DD +:10F170008B4F0FB0ACBBF03FD54C30E9CBB8EC0FA8 +:10F1800080B7EB8E6864A7B3BF8256331ED787FF64 +:10F19000BD7F92DB41D709BFCA1F59D881C8F88407 +:10F1A000C9D3391FEFF2A3DEDEB86FDC00EE3F609B +:10F1B0002E84BB49F817272BDC7FAB7A5B480F07FF +:10F1C000B5C2E407D26989EFAB089D1F70FE1163D9 +:10F1D000AE06E25BADDC6E88C17F98FF51BBDD8E71 +:10F1E000B876AB3D7F0D9B9B87F47CCD9D1AC37D8C +:10F1F0007E5D0ADF2856B81CBA96D5B6A0BC37FD8E +:10F2000091353A530700535CF9CC7DE3D11F365555 +:10F21000D0DF5F803E0C6712AFCB73E28E706972F5 +:10F220007E2AE3F36B9442179F2FA59FDF7AADEB05 +:10F2300062B497629BB510D74F38DFA4F63094BA0A +:10F2400057213E696947F02E69B5CFAFBFF9A7CE08 +:10F2500097B12D34DFE57B16133DA49B8F630FE838 +:10F260000BBDD0D52245B29D5F7DE3F68F6699C078 +:10F270001F5C3CBDC5E3DF85E937EEC238D2C53A35 +:10F2800034C650DE4E61DC1E7ECF176FA4F5AD1D77 +:10F2900083EBDB5FFB166C5FF9F7B76FFB3F6C7FAF +:10F2A0007B3FF06FC8698FE07E36FD30AA1A8B7104 +:10F2B0006CF3FDBC21D04F7901942B7D9417F7DDC1 +:10F2C0001EF6E5E9D34037E833E2723B568070BD65 +:10F2D0002FF4C8AFD4D815A8DF7D058B0C9A0C3B52 +:10F2E00092A5B704701ECD9281FE93C59BE6644A39 +:10F2F00050BEF8989223F37D4AFAE091E00CF2FBBD +:10F30000DDA5703F2B53BB5594378B27042F443E0C +:10F310007D448B1564C1F8D37FCAFD4355131A96FB +:10F3200062BB8B8D1F6A4E68F7E2638D34EE72E329 +:10F33000072A9EF1C4453F9F3CF2E47806F01D7910 +:10F34000DCC7122457E30E94ABCB81DE91DEAE7F97 +:10F35000C247F277F9532B1F9805FD48CFF8089E56 +:10F36000E94F5DBBDB49F03572FA7DFAD2CC2D084E +:10F37000E7EB0A73016A8E34987EF458C1A5D06415 +:10F38000A5935D8DF2C3C48349BF4B36055B02086C +:10F39000D79E6039F2EE1EBA57A13EB45F0CE9DC8D +:10F3A0005EE8FE7985EB831F079D0B114E69CF81C7 +:10F3B000AB687E9D9769383FA929CBF14718EF3993 +:10F3C0009C27AF47F3883D2CC58743F9C70F4B7C7B +:10F3D0005E9D653BDD411C7FA7A386CE831B082F66 +:10F3E00026BC4BF6045B0655E03E0F06D13F3DF5CB +:10F3F00089C7FD688FDCB84749A01F0552F2A72CCA +:10F400006955ECFE5616F64A40073708FE73C3DE10 +:10F4100095C49F6FE8DCF819F29F1BF76BEF5BF95F +:10F4200002E099ECDEEBDF5442E833BAFE970FF9C5 +:10F43000510EFFA5EB413FAE078CB3D801FBA0E214 +:10F44000A86A6B87FD7F9B7D667F20D8C9CEBBB144 +:10F4500073031F6FEFEC8FD0BF752383F616FEF397 +:10F4600017FC47FE99F6F3270AD8CFE7B21EFB79BF +:10F470008512C944FD8BED19D0ABDD67DACD261FAF +:10F48000FA74FF173B6230FEC74FFDDB0E3C9F3C1A +:10F49000F2DD173B7E82F8FFB55B473ABFF1913F43 +:10F4A000EEF827C87FB2DF2923BD2C7FE4CFEF61C0 +:10F4B000F9D7CF8EC8C62DEE54395FFB34F84D1EF8 +:10F4C000E261CDAFA70D443CACD9377520EB43AF1B +:10F4D000FE14E82B6EA12F532F34F6437F0321FB3C +:10F4E0002B91A6ACCFA1BD4A024DDA4FDE72C69178 +:10F4F000AE6F846F75607FDE507B2D9D4F607E2DDB +:10F50000E0F986C7B8DFEE4C7CC706CB74C8961806 +:10F510008C475737ECBDF492EF5560AA850C9C2FB1 +:10F520003B45F22CB5DD8DC7605DC7A45FC71B19D5 +:10F53000C7FB8D6C131FB7F6071F211DA5AEE32770 +:10F54000F88F8967AEE339AA7D1DBF7EF8879909D8 +:10F550002CDC3BA057FDD35CC795FBE6F769BF7C6D +:10F560009AB28FD3E17999D0FBBF50C2E3D54AA4B8 +:10F570008747776F033C7FFAB633340B10F3E9E328 +:10F580005F158212C4FEA49DBA0AF7E3A95F3BF59A +:10F590005DD066F9AFDF24B9F7E9BE571D46194DB6 +:10F5A000C72B813CFF94F5FC75A17CBF41D8CD37BA +:10F5B00076F812A8A79BEB75437CCE74C34FDF4946 +:10F5C0007FBF21CEF7C10DF103F3A45ED6EF46B5A0 +:10F5D00088CBD1782EE165A5D1E5D0BDF67595260D +:10F5E000E07A9EB810E92FDD7A9AF3D77F45C111F2 +:10F5F000C975EDE0FB37DD3EFD7427507CE699EBE5 +:10F60000FCA9D07F6E8C4B6FF6B6EEA65F9F295794 +:10F61000F4B95EA974719D6AF78F99EDCDF9F7B7CA +:10F62000BFFB9FD7DF86B7856824E49E89BF8669C4 +:10F630009C6FBF12847D099F5ED58C7B6E423A79A8 +:10F640004963BBA0C9C5451FA946D999F0FE0EF56F +:10F65000288BFD1F99F059D3006817991CE4E72403 +:10F6600029F10491C90A332CF07C3E7D4D01DAD793 +:10F6700087028CCECB0FE7F373EB0BBD91ED070048 +:10F68000EF9BA07F06FDB7D4EB681CB2D6FA00A5AD +:10F690003D711CE1A1E48F5AAD33EEFFDFF3C823C7 +:10F6A0008F40FE221C0044D72110A1563FC76B0299 +:10F6B000DE63F52ED2FF2E2D795245B92E953EA947 +:10F6C000A2BC9939FD4915E3100E0BBFCCBC08F75D +:10F6D000135D5412DC897EA2E7C5B9F545F376AA1D +:10F6E00035967E678A7E6696EE2C407EFCB2880751 +:10F6F00049C5D749C16F1B463E5480E3BD3CE49EDB +:10F7000002B29B5984E65128FC2087873FB47D359F +:10F71000E0F1488914C2738E2375EBBCC8978F182B +:10F72000767FC781911F49D84F6160A78AFC7B977C +:10F73000F0C774083FDA6EC01BE6F700DE307DA428 +:10F74000DEA0F4B1FA122AFF457D88F29DF5132858 +:10F75000FF547D98F27BEBA753FEE9FA08E5F7D753 +:10F760002FA4F457F5CBE8BBBF6D4F5336FA9B4639 +:10F77000499DE86FFA4D7D2D9527EAEBA8FC019590 +:10F78000DB0D85AD601F00DFADAB63A4E7ECD222DB +:10F790000B2316F8CD7A6FAADC1E7DC61FED52D161 +:10F7A000EF3D7D6919D285264716AE0EE2BC7F1E5D +:10F7B000257DAED8453E6F72E5C0BE7869F87914F4 +:10F7C0009FF24556F44DD562F715B53A58621CAE16 +:10F7D00063FC3086E4C46683DE0778BC28B2B329B4 +:10F7E00007FA99373D68A09EF1BCD4D9948DF648AC +:10F7F00099289F37479B52DAFF3A3E22E07EB1AA12 +:10F80000B600F7D98B12F7A75D3A5D612596FD3FEB +:10F810003F62CFDF25DA65CF28167159BDFB777DB2 +:10F8200021A867D373F83E72E2F9A665FFB88D414F +:10F83000B67A8A7EE8820FC6A5E74F8A7F3AD79FBD +:10F8400075F543E46F8003E9B49CE437E4C1CA4B27 +:10F85000FA87CDF3B8AB7BF26099997A37E0EBF297 +:10F86000F0310DF5F8ABC074D2400FAF612107EA5B +:10F87000E34B5984D26B582DA5CE8284C6FD7DD52D +:10F880003A9E074BE1F395D3197DF965ECE7C6265F +:10F890007CB129C61D78FE167B590B610C60633E56 +:10F8A000DB8B764BA3D8AF667BEDDB7399017818C1 +:10F8B000A315D9FC63CD5A248C713B75C725F2EB97 +:10F8C0006C54A34335EE9754558B9DAFE544C94E18 +:10F8D000FCA9141D86E5B74FFACB5B0AEA51FBDCA5 +:10F8E00086427A4BF7C5C30C1A97F843EC564FFC87 +:10F8F00041F85EE80805B8732441FE1EA7C013C690 +:10F90000EFCC2943BF8A97FC1EAC40FDD87A8E9A73 +:10F9100095C5EDF146DF87F938EE140484C3C50AB6 +:10F92000F210AFBC9F2578F03F0CF17F4AC3F42A58 +:10F93000D645F89FAA45CF4338AF00FB08BFAFCBF1 +:10F94000187D01F6F38F82AF27CE42F061E8278C55 +:10F95000F41F98E48A5AEDE7191AA7F7CB44AA399D +:10F960008C9F5507D3AFBBC9EF4D3E7F3433324731 +:10F97000CB4DEE17334DD73E75DF98F0987179D99E +:10F9800033D6BC3804F0B1ABDD188BF2696A4DABED +:10F99000B3108AEEDF648C255C30978C7829EC718B +:10F9A00038723BA58E713CB2E312E191C53238BF8B +:10F9B000EEA917217FEB8EB59FBB914F67DF56F401 +:10F9C000BB11ACFF79A6CAB57B868E26FA1E7A4497 +:10F9D00021BE7FC7D0FF3AE0847C6137970385DE84 +:10F9E000DA1168AF55BDF7E77CF43B1ECD8CFE58AD +:10F9F000B3D0F78EDB6A87E2F8DFA9E15B34E2A3DC +:10FA00006B9C04A2E033D91BD6BD8876403A7CEDCE +:10FA10006A2DEA13BFA970F7F08D347C2CB99F7959 +:10FA20003DA05FE6CAA6F39984017AFFFB19639EA5 +:10FA3000EE82D2ABEBBA3594D740C7ED08F7952CE0 +:10FA4000A171BB3E948778CDCA32A8FD8EBC0FF35E +:10FA500089F9ABDDC1C8DF1267CB58AFFAD67AA1FE +:10FA60001F0038E4E72B147E3A39E3E37C94EF1D62 +:10FA70009AD4FBB9681DEC0FCB791DE84CA43FC1AB +:10FA80005814F7B0040786F92D91BBE95CA15A9F81 +:10FA9000539D05288A3605C772BD88D353B4296B98 +:10FAA00027FA1B3668D12734E2BF3C5E7A89771487 +:10FAB0009D179EEDFC60F46ED4DBCDFD6CCEF7217E +:10FAC0004FF439E40B457AD61444A1B380FB87A7E1 +:10FAD000295EF2EB7C9EC3C80E4BD7FF23186F093B +:10FAE00002FE45F40F43AAED61EDC81F7E03EB8FC4 +:10FAF000F9E7816ED16FBC07F40A4C9F03BD02BFCA +:10FB00003F067A05E677815E81E90ED02B304D8085 +:10FB10005E81E921D02B305DCE22FF82F3067E4B41 +:10FB200070353AD8328AEF16F1C7261C6F887530C7 +:10FB3000D33735C38C1FE2FCED8483C79BA8B1C1CA +:10FB4000737D3C45FA08EDD19B33A1AA2F700023A9 +:10FB5000F5D88C8255618F4167207109E631E0AF9D +:10FB6000BA8267400F1D58366805A21B6521AEE3B7 +:10FB70004126FA6BBF02F5B0D0844008FDC14F4D5D +:10FB80009354D4676E1FBF8C213EB7BDEC08E33A97 +:10FB90006D73C41BFD00C72FE7B210EACBBF9C06F4 +:10FBA0008DA19E7F56CB2A2CDF3B4D92297FF48D71 +:10FBB0009FA0DDE4EFFAF036FCEE2FFEE79B28ADC8 +:10FBC0007EF866FA5EFDBF6EA17C22712BE6733F64 +:10FBD0008E4A683E0CDC7B6AE131E837B3BCA91C75 +:10FBE000CF369F2DF83CBA05D2F6829A9968DF3D50 +:10FBF00039FC963F3441BA7576EBE24D90DE7BF8E6 +:10FC0000CE3B8290963A82842747FE9A2341806FAA +:10FC10005BAD4C7AF9FA82D5942F58994DF9F221BF +:10FC20007204CF499F9EAC4E8F5BE4A8E4E0E717D7 +:10FC3000190E117F5EC0F5743C5045FCAA217E6E02 +:10FC4000A31DE1E739DA619E77E5D432C920BF7E92 +:10FC50008603E9B343C4D99AEC529CE3643AC4796D +:10FC600028D3077872705EB28EE72FCF166CC9402A +:10FC7000BDF8D982B90CF9991696497F2C7FB57DCC +:10FC8000E668588FF5B5ABCF6BA07EDA332E03381C +:10FC9000FC0E0FF533100F082AFB68FF19B48771AB +:10FCA000D6AF80F646B27D9E683FD4417B387DFB5F +:10FCB000E01DBC7DED1ADBF8850E1E073AA29FF110 +:10FCC00053F7D73962DC673F782A0BE97FB7A40F77 +:10FCD000C750F5192D814615F6FD00397482CEBF47 +:10FCE0001D655317427E069ECBA1FC55A31E467C84 +:10FCF0002B447268BCB01BE6C8D1B632A4DF97159E +:10FD0000F6601FF2878C23937F913EE049CA01CAB7 +:10FD100067A7E407A5D42FB295CF7714097D655462 +:10FD20004ABDB1B6FC9C233C0E624E57DE144A8F8E +:10FD3000C2FE199D1ECE577D7C68627413101F8C05 +:10FD4000CEFB192B9B5A0DF31FE0E7F9458E718D01 +:10FD50000DA5544E7ED9677C76FEB1C8C1EDAE6B61 +:10FD60001CFCFC45D9CEEF199874A81C16E7155D4C +:10FD7000FCBB32CB7582CE25AB37D077E528BF9F51 +:10FD8000E2F2F6D0F5350E9C6F67EF740D944DEBF3 +:10FD90003251AC4B1DD32F5F81FA4382C773B1DA66 +:10FDA0004CD233268A8675A83FC1BA1E4A6C99B9CF +:10FDB00002D6EF97B35466D547CACDF80DA1779414 +:10FDC0008BF800D070283FD665F6A3FFB614D7FF96 +:10FDD00098CCE33F6283A9FD58517FBF149989F401 +:10FDE000117B89C76364F69CF3D66658E9A942F48F +:10FDF000B7EF5811F5973D5B66C82752E57F35068A +:10FE0000B7005E9FE95A7D18E55B5695548EED4626 +:10FE1000A88B0FA2493E23B08AC239422C784919D7 +:10FE2000B42FDF0EF206F058BE95C76BAF1F7E25CC +:10FE300091D28C021ED73D23C1F9C77A29DA361236 +:10FE4000E1FC23C797B695C7D387B6CBD4AEBC78B1 +:10FE50009CCD0E3AE0E07ABE969864D367BEEDBEC4 +:10FE6000E9E59100D7E7C7B34356BF776ABABB3E0F +:10FE700062BB2FF010EA05DEE43A6A629DCCF20321 +:10FE80000EC9D40B69DDCCF54CADD7953B3793F556 +:10FE9000A14FED16FEBD4E66A1739857E75659E483 +:10FEA000AF50A681CEF46C4AF9B3DB65B10F78F997 +:10FEB000334CEC8B58742AFAF39ED9AA527E7F4BAE +:10FEC000746A43312CEF568E5F138FEA073CEE487D +:10FED00013F8B4F0EB03C4AF5D76BA965DFC3ECC8C +:10FEE0002DF0EFE7604B8FAB4B3481D9C5C6C7DB34 +:10FEF000A7A23C2D6F3DA5A21C2D629D873341E436 +:10FF00001CF545AAB3908E474AA15D4407C143B88A +:10FF10005C9D6F2F9889E2E35F855C6A78F796AB0A +:10FF2000517EDFF2BE64A0DFE9D0B1B1BF9F05ED25 +:10FF3000B4D622D2774D3C6947E791DDC6BA18C5E1 +:10FF4000B78CFB976AE55A8B9CAA98AC519CCFB8AA +:10FF50007F9937B32C07EF77744C52C47E5CE4C3AF +:10FF6000F19CFCDC75B2164B914FFF4AF3DDD4FBDC +:10FF70003EBE48613105F7ED9B32D707A64732E612 +:10FF800058FC60FBDEE2F272FCDB1D7B5F837A4D86 +:10FF9000FAA4715CBF03BD2107EF514C1E87F728FF +:10FFA000FE5DC84FA6DBC731FB0138FE1DE148BD31 +:10FFB00047F1F9F42FE9BEC2D0D20C92AF43139CA3 +:10FFC0004FB1BF9E26FB6D84CBE403767E3EF6B038 +:10FFD000C7B60FE456BBDF6028B3F80DC8BF69E7AA +:10FFE000E7ECF8B9C9FA4508C7BCDF66929FC0784C +:10FFF00015F7D3CC23B241E7E3B1B0B76A3C6A034B +:020000021000EC +:10000000FCEF29DCF4B04E3387B0389EBBED14FC16 +:10001000220E7A24A6FB5A65D2D79A8BA538C679C8 +:10002000BC90238712507FDC316EEF44449CF1B8C2 +:10003000189B4A7EB1B0467E5817FC477A7693DE0D +:1000400088FBA93C613F9F9921E28A67A6F86D670A +:10005000A09F17F90AB3D40F9EE9A72D74DAFDB457 +:10006000B7FF934270C5DE5028DE7AF7441643BFCF +:1000700031BA43707E593583E26DE413E7F1C14F25 +:100080008BBE4DFFEDB94E6EEF1E7E774406DA69EA +:10009000637172B0BE4F6DBD86E4F6EEB78ADC3890 +:1000A000BF43933C19DD5EBEDEC4D7453FEB2679E6 +:1000B000365E07787AE63E99E29C9F09D65E847C9C +:1000C00038EB2299EE2DF81F681F8C76E0B33B4584 +:1000D000FC98CAE96A0313F480DF28BE4DDF8970FB +:1000E0009EEF94CDF8B6F39D95C9FDEC1FB62A801E +:1000F000FEB8F541EEBFEAAF9F6A312FE8A7DA9963 +:100100009BEC2769EF70FF040A3AB28F055D14A2D9 +:100110005F01377E8ADDB4A41BF481D164FF5C8269 +:10012000FD2D669130FA270A851FE36FB07F625676 +:100130007F46614E5046FD3C69074516E1BC83751C +:10014000EC202EDBD9DA3FF17A26EC179D522DC632 +:10015000ED9FDFA2DD331CE9DB65DA31D7386D7640 +:100160004C6821EA6D0DEB1353518F5BAF759763AC +:10017000FE86F5894617C01394F541A8E735AE3FD2 +:1001800030D505E57E74D4C0965C0BF9D864184F61 +:10019000E6788FED36ED1063CB748077E4D29C1057 +:1001A000F293A0DCBD6104F2C3E55C3EFA3BC05EA5 +:1001B000F09F09FF4EE117F3377EB60AE9A5D1C9D2 +:1001C000F5A046410F667EA31A6D44F8D1BD87F7AE +:1001D0009C52FD608D8858C05F935317E7E2ED8312 +:1001E000C8FE6690FA7A5D7F6E4FF7B7FE1D3DEB55 +:1001F000FF33DBFA87567127EF59AEBFC6B85F29C8 +:100200009D9DEFFC16F899C52FBA9C45EF437AD017 +:100210000A84DD62AE9B0CF627CC5711F73FFCCA6F +:100220009C5AC4DB9382EECD748FC01BF34AA97134 +:10023000C17BB05F972AE857F0717F23F4E3B5E004 +:1002400057F8194C7836AA354F382D7E1CC43BFA26 +:100250001F9E32F1CD6A299E0EF434BA77F577E30A +:10026000BBA007DFBF4638178BB82C27E37E8AB3C5 +:10027000C5B7193F62C68BC4A6184D3AF2CB4246A9 +:100280007ED9A9DE39B67B4BA6DE90DADF2229FAC9 +:100290003BA7C5BF92AA0F2CC1902F12E43ADD2BC9 +:1002A0009F32C0A890281EF8D3A947039047BA44AC +:1002B000BD28F609E93D5332783EAB556FC678E06C +:1002C0002978464A7A91BB1ACF67A60CE3E5B9585C +:1002D0000EF9BD5AF8B8D312D703CB1567163F8A6B +:1002E000A69FA8423EF290277A12EB1905C6145C2D +:1002F000BAC23A5DC6F99D3D1FE17E940EE1470109 +:10030000FAFB84F885E027FDF93FBE76727DD34C79 +:10031000BF11F2A4C7FF7197E9FF880CE2FE8FC8F6 +:10032000202B9D1CBAC34170EEDAE4A6F33DD3AE98 +:1003300008F6E80F767E0D7A6DE2FBA8F74C707137 +:10034000BFB1494FC2FE080A824FDA0F216E8FA655 +:10035000D09B694F148B7196DCC9E92F70B7CB81A4 +:100360002A8B497F435189243AD7DB4A506F9AAE92 +:1003700032E4730FB4CB5CDEDECAE8BECD9DCE7036 +:10038000B6AB32B95EF39CE11C6BDE8C8FEC65FD85 +:100390000663BDFED64FF3BA63D6F530F1FF8A5837 +:1003A000B72EC1EF8F0AFFD772162EC67E1B1DE631 +:1003B000B904B7ABD2D1413ABFAFB9DE26DFC9F23B +:1003C00070FE924C39BF7E45D42B9AC026E999C95C +:1003D0007EBFEFE274F18A9BF57A5E75818BB7F789 +:1003E0003746889F51C01DC01B6CE572DDAC177687 +:1003F00009BEC60C99F3779DD28B055CC326B0C9A4 +:10040000FA9864FD8BC5B8177B7879EAB8B35D9C20 +:100410005F9A7CD41CB778934E7E4FB3DE253DE3C4 +:1004200086646E3F8769DC602BBF2F376C2DF75BCE +:100430001AED9130AEDB2B133FEAF839EA91B9257A +:10044000C29F1A66785F202AE0D9E6080770BC428E +:10045000C013FADD14801B53AD8E915DAF7963DC60 +:100460009E4FDA0151178E5FD0BB1D60E2DDAF8277 +:100470000A64E163FF21E667E6CD795E3CE1B3C340 +:100480000300BED17B758AB78A84F939F2C870013E +:100490009D234F74F3F578B083913D52E6EC5A7486 +:1004A0003DE025DEEC08AD0378B6AD33FD8ADD4FC7 +:1004B000FD16E7D9E620BFE203FBBC334621BCD5DD +:1004C000ABA401906EDDD7F2E46FA1FF475CDC9E28 +:1004D0007AB863CB45A3A0FEF615DCAF67E607AF9D +:1004E000CAA1FCBD776E99710EF28B0E99ECA887AC +:1004F00027F37BF126FCF52E85C7EDBA449CEA9DD7 +:1005000032C1D7E3EF9B2CFC7D31213797CAA9FE7E +:10051000BE0DB41FD3F8FB36BB4C79D6EE467FDF59 +:10052000C35EEEEF7BD8BB85F8C7C35EBBBFECDE16 +:10053000AEF68B46613C6D6D8FBFCE7319F4B3C9B7 +:10054000C5FD6D77215FC9B5B67F5FC2B4D06C7F42 +:10055000AA9DE6DFB8A2C75F48EDEF14EDEFC3F642 +:10056000957D8C6FDCC1DBA3BFCF32FE7617F7DB46 +:100570003DD8CFF80F773C9565B5533BC4B8E7EE4F +:100580008F927E3352E077444757881F6A275C88F2 +:10059000A7FB1FDFDAFD328CD722FC258F0A3DEE48 +:1005A0007EC9BEBFF7897DFDBCA0FB43DBE732B44B +:1005B00027B4EDC25E5ECBEDE511F77D2959E11858 +:1005C000BA54267B79C47D6BC83F926A2F3FEF12E5 +:1005D000F6F25239D55E7EDED587BDFCF9F4A5531F +:1005E000902ECB9AB81FAD6C530BD95F657B63C45B +:1005F0006F8D6FC7911E36F4DB72BA6451F8EDF956 +:1006000094D7BE9D48F9A15BF9787B841E36BA95D4 +:10061000FBDD34F45FA0FD1B1B6BB36327BAB9DFAE +:1006200051AB4BF5FB9C5C97817E9FC7F43EFD3E32 +:100630003BD0EF333C99BFBFE73C88FB7D8A52FC3F +:100640003913DD9C4FA5FA7DCC7AE7482C82ED1F4B +:100650006DEBDBEFB3A39EC76998FD9D731BF7BFDE +:10066000D35F0EBE5F13A638D473EEFDF2A51198CA +:10067000CFADAEC0FD3BD12DE2525D69FD0813DD6B +:1006800095C9F532ED33F2335AE4835FB8EE92F355 +:10069000926DE7E43DFC5AC0D3BE90F36B333F301C +:1006A0009A4772A352B4FB7CFA61BEEE931BCA5107 +:1006B000AE5F3CE1846CD5FFFA5DF74EBEEE8F8BEA +:1006C00075D73A7B5FEF4A77769AF51ED6E7B9651C +:1006D0007FEB6C08FFA8595E99669DCD7AA5629D57 +:1006E0007FB18EDFD3EE6F9DCDFE4AD3AC73E9931D +:1006F000F675AEEC7F9D2B7B5B67B0E326BA851D5C +:1007000067BDB760DA71A61C0739D6649563AFA5DB +:10071000AEBFD0134C39766EDC2EC746A01C939228 +:100720007AC9CE9D8CF67B89B3F3F397518E6D48D1 +:100730009563B1B12F239FB9DD41FEC0F6ED35556C +:1007400039503E30D490BF1CD2739F584B7C2870D8 +:10075000133F9F6A747379F6D0F6D5F4FD9F6B85CD +:10076000FC5ACAF30FAF28E6F9ED32C9AF5439B6D7 +:10077000D0CDCFAD6ADCE2DC6ABB6C3FB7EA5F8EFE +:10078000D5B8FB38B7BAC66D9E5BA59363420E6CB5 +:10079000E77C369D1CFB919BCB831B7080DC5EE469 +:1007A00090D93E8D1C5BE9E672E8C767B44F193FEC +:1007B0008D1CBB59B4FFA9E00FE9C64F9563B7097B +:1007C000B8473FD67ED06DA09106F28BDBA124BF47 +:1007D000E242AFB9FFD9ADF1DF42F92FA4F6B91764 +:1007E000A1DE91CFFD15A972EC76417F3BDC428EF4 +:1007F000C5408EE1F81D20C7D00E11726CE483BD98 +:10080000CBB1910FAA9E925EE4D80E775A39B6C347 +:10081000DDA71CE3FCAC44C8B11221C74AE25D6706 +:1008200027C752F8D9B9A61C4BC3D7B23CE9E4D8C4 +:100830002F0F227D7DBEFFBF578E9976453A39D660 +:10084000C3DFCE528E99FDDDDFC9FDE149FE16DD25 +:100850006DE76F4BC7E3BECDF228FDF1B72C4F2FEC +:10086000FC2DCBC36CF6861F5D52D9D679F5CEC769 +:100870004C78D2C9319F87EBF1A6FE52D223C79E96 +:10088000FCDBE4588AFE924E6FF179B2C53B35FF2E +:100890005839E6F3F47E4E65D6EBD157CE528E9999 +:1008A000FDDDBFD5BECEA3F7C23A43D1FD6B6BB61B +:1008B000CCC0FC3E58679AA7B8FF98B2CEB0BE3EF7 +:1008C0008FC57FECDC1B8BA1EB06E4579687CB2F03 +:1008D000D65B3C5EAA9F4B538D9F554BE9FD5D8CCB +:1008E00075D37B58A9714EFDC5515E72C1ADFC1E1A +:1008F0009216363C16FFD0562D3ADC43FECF54F903 +:100900002AEE259DF1CE619A7BA5017EAFD43921D7 +:100910009210F74AC760BF67DC2B1D110A84D01FF5 +:100920009465BED765EE2BFE6E5EE6057FEA3C84DD +:10093000E74EB963C7613F933DE27DB8947B9496DF +:100940007D35D9BAAF92E7D52C649D4F4BFE8274AA +:10095000F72BAB3D363F65DFF72B15178F478D4DD6 +:100960006125B55ECBBB82C5C26F2AFCA0E6BC5C2C +:1009700005C62EC4D31C41677952640EC7BF8033AD +:1009800025DEBB450A8B73022ED7CDF86FF2FF0030 +:10099000309BEB79BCF74611EFED9B10A2330D7C39 +:1009A000FE02ED237F3133106F52713BD94DEEE2E1 +:1009B000DA00C6FDAE4F13F7FB73C1E71A8638089D +:1009C000DED67725F21BB5E68F0FF0F3731EC7ED69 +:1009D00014B475D837DED56DD9578D05635D387E73 +:1009E000A3776E9FF7083CED0AC52FF75BAF95D74D +:1009F0004B57AE94B0567C5F4951C5BB64C79DA4AC +:100A00009739C5FB75B03DC47B42DC1F68C22D79A8 +:100A10006B89FE4C7F9F53F08BA9A326B8F07BA374 +:100A20002BE4C2B8E7C682BEE583F35B8925065096 +:100A30003CE206A4BB03C11692EB487F18AFEE2C34 +:100A400000FAC1F7142BDA093E1FAC07C665F7B7E9 +:100A50000E35825FFB2B645662D9C76A453480FB32 +:100A60004D0D38284EDC5B2ADBE2AF5B449CB62A96 +:100A7000E255CDFEE60BB9F180489126F05D0CC53C +:100A8000F502D12FF4A4D3FD1EEC070A770B39F43D +:100A9000951AEEE0F4692F4FEE7F7EFF4980007FCC +:100AA000AB6CEF749588F34ED30F39F44E46FED9F4 +:100AB00011312E374A62EB56C9A4B79E92B07CD84A +:100AC0009D2ABD6B04E5A4AF9AED47C41DB67B71AA +:100AD000C1567B7E9838071D2EDE0DA3EFD0CF3098 +:100AE000716E3A2CE5BB794F65077EE8E53C25F54C +:100AF000FCF4058FFDFE537FF764CC7352070B1F88 +:100B000025FCD5F17387C621CCF68EA7999AF834C7 +:100B1000E5586AF91B825F9CC97FCDB4DD2E07C5FD +:100B2000F76F4FFCA04F79FB0790B74D16797B5CB0 +:100B3000C485FC61DE3E5F8DD70A1F8F133E5EFFCA +:100B4000D6051F0C4F8EE33FF8B0162CE3E940E0CA +:100B5000178B6A8314BAB368CDAB9AF5FEC895B506 +:100B60006F5FF081059F9707163435111F55FF13EE +:100B7000CFB3D16D8AEFAE55E1B9A0655EE678EBF3 +:100B8000014E4CAFA8E5F659FB7047DC0BFF6CFF3C +:100B90004EBCC77582C72D37D72FA47AE6BB9DC33D +:100BA0003282047756ED2A17F73F455C5C1E707E53 +:100BB000A0F4C42F09BC097EA008C172A8EA05E20E +:100BC0006F752CE41A867AFA311E77D67EE03F588C +:100BD0006FF785901F63BCCB46BC77424C9AEB2DD8 +:100BE0005EF31C42E8275ED17FA3B8975207D4B9C1 +:100BF000D4D27F4B609DAB08F29B4245B6FBAC9BC9 +:100C000054AE0FB5D5DBDF25599161EA41A7121427 +:100C1000CFE1659D6887644D0E315C97AC5A2948D9 +:100C2000EF27C0BA4C81F96455B37CE43FED69F815 +:100C3000CF7F09FE73E51A7EBFB51DF0CBF1FDFB3A +:100C4000690311DFD3F83B6DA9ED2EC930FDDCFF40 +:100C50007FE1F7A7FFCDF81D95218B78D39813E995 +:100C600032757F380B3A35EBBEAD92A39765E4D26F +:100C70003BA604DF06AD3DB01AF97C4EEC07748F3D +:100C800028C75EDFD2EEAADEDA6DE8D153E6D13EA8 +:100C90007115C0FEB28CEFC8817D64913B493EB0B6 +:100CA000CEFE6E6BCAFE4DC7D7DA261C741930DE35 +:100CB00026AF4C7AB5A7B2C2556CE12FB766707FEC +:100CC00050A397EBDD1B2B0EBA8A4BCF2CDFA4CBA6 +:100CD000363F8899E667A8344E618621D6493F4061 +:100CE000EB54CDC2B84EDEDC835DF82E6673411145 +:100CF000F955FA83676306BFEF9D0E1EB33C1D3C9A +:100D0000D3043C17213CB9FDC373B6EF887EE1895B +:100D1000DC935199D437D3C9E574FDC8BE8A2EE45B +:100D20009FAB5739E9FC395DBD77EBD905C51ABDD5 +:100D30004F751FC6751CDBF8FBE6667C9F0AF92A17 +:100D40009874BFDEF8159D2FBF27F3F35CA676E7F6 +:100D500062DC5873EE87958B7B915FEF79BA6FA653 +:100D600073DCD54E1DCF718FAF72121FBFEA32DF19 +:100D70002E85ECD548199EEBFE51F08FE329F79DA7 +:100D8000CCB44BEC1B50ECCA78BC40B4D2FA0E4F3A +:100D9000EA7DCCABD64817145BE8F85DF35D5EB531 +:100DA000CBC7E17D63F8E25ED6EF5D77D78F48AEC3 +:100DB000ACB2C37BE5028057E2FD617EFE658349EC +:100DC0009F3F9AC1F925E107E7393F83DFA351230C +:100DD0006538CEF19E77B0BA8658E3EB9EC930E510 +:100DE0003ACC83C79B503E15EEF77AE0EE16707F43 +:100DF000D82BDCEFB9BB7B85FBAA1EB8399EFF2A36 +:100E0000C64DC2D5DD2B5CAF66E836F8CE9C1F23FD +:100E1000F9FBFA822171D4DB4CFA783AE34F441F94 +:100E2000EFF6D04797A08F377AA58F773D5DBDD27B +:100E3000C79529F4A179EDF401F82CFBBBE016EF7E +:100E400041CDBF2C63A780BB4F3C9C44E3BDB7F5AD +:100E50004DDB4FEF70FD27F663D16FCCF760FFE0FD +:100E600089647B51DEDE3C3F17F9F88FB304FC0543 +:100E7000D9C49FA1FCB2CCDC6479F29EA042F128D7 +:100E80006B66AF198272E00D71BFC13F80BF3B61DD +:100E90008EDFECE57E8A662FA753946FF111C9F3BC +:100EA0007A7FA39490615EA786C8F15D41D45F4BC1 +:100EB000E87B5BC56AD70B38BF21B22C019FFA468D +:100EC0008B39D1DF341FEF5340BA798A679995FF88 +:100ED0000DCDE27C716556D54D389F90B79BE211E0 +:100EE0005818A4631E7F5F17E5F4181D2C338C7708 +:100EF00014F1115053E865E2FE248BB2BFE5FEE425 +:100F00002F543079715DBC8CFCAFBEAD12F9ABCC07 +:100F1000F8836D1935DF4778B4FD914AC4D30227B1 +:100F200050058C7B60BC87E8F7EBCDFCBD86935702 +:100F30009E4FF1FA2767CF9C8E76C76B72CDFD78F6 +:100F40003FEDD4DB4E86EF099CBCF2F28BA87C3ED1 +:100F50007F87E3A4C4A64B63090C3FDE53F70F332E +:100F60001EDF8B78DCECA6F36C47E0A4B0AFC27E4A +:100F700019F8E7C9FF1AF602AAA4DDDEECBBD13CE2 +:100F8000BD9A75D33D30F33ED8443D3ADF8B7AC1EC +:100F9000E5B34B10CE93595DCB10BE9395A3E8AE4D +:100FA00063D667406F28477279DC0A3B051A10E464 +:100FB0004FC4E63F688D3788E6F3731857601D5BB2 +:100FC000887E07234AD2C13F8CD3C5D1CCE812C456 +:100FD000C71457F9613D07EFA7F17B5BD372AA54A1 +:100FE0008C73BF620DCF2F70F277BF52FD4BA9FEFD +:100FF000A49582AED4007FEF42F572FB8DE9AAED95 +:10100000DDC7D785DF30753D57794DBDB180FC2CEC +:10101000E6BA5AE907DF75B4D20F5EB9ECA19F308A +:10102000D04F998D7EA4D3E79E3DFD4CF0F27DF923 +:10103000E644E05E99B8BF42AFD2FE7A8DDFC33599 +:10104000EF65A6EE93F5D1B52EB9F4CCFD94DC3F57 +:1010500073730DDA2FAB29EE8B9D900C7C37463FD6 +:101060006FAD8EDF9D8B1DB44EE63E32F78F27931A +:10107000EB3BB08FA2B8EFA3DEEE69B8FF52F711D9 +:10108000B21FEB7EB91AF7957CE6BEBA695A07DD46 +:101090003F5CA4B2586676727F2C9AC0DF295BD47D +:1010A000DD40EFD42D5A2BB1F72DEB7AFA34E45D05 +:1010B00036BCE93DEF622B678FDFB619520BE2B504 +:1010C0004DEB6E26FB2197DB0F8D6E690FFEFE4404 +:1010D0008BEFEBE7518F6ECB36284E3A357EA8E585 +:1010E0009C0CDAA76D8B06D33EBDABDE6051C0EF22 +:1010F0007B42FEC4E6F9283EECE780F728DE3305A4 +:10110000FB00CB61DFFF06E9FC75397A33E24389E6 +:10111000CD89E2BE7A53EAAA3D84EDDECEA07B24DF +:101120005F3F171D83EFE56F1EBF9CEE977E7D6BC3 +:1011300074A85E6A9D4F7C107F87A27B904C6FA93C +:1011400019E25D0A26BE4707F3EF714AEF033A78CA +:101150001F96709F3F68BEFB2CDA7553BB367F9796 +:101160009BE0CE7390BC9B7729B7633DB37D3BF189 +:101170005DD1FB1CFCDDA254BC7E27F6D9A54ABB81 +:1011800081F1B5EF78575E88F1B79E3B76B657860A +:10119000D025B8F2C2196EACA78B7A91B7BEAFE07A +:1011A0007BDD47C88EEEE1D36B3B5914E822A334B4 +:1011B00012C077759ABF536417F2CF32B06B18FF25 +:1011C000DE60915F1F79B9DED58CF60CD06B73436E +:1011D00024906D81AF59F89D9A0FB8493E66CCBAFC +:1011E000B2C31DB4C2AD123CCDE23DA7A1A5A7A4D8 +:1011F0001F61FD864ED8E3503FF12CF9CB604FC8FC +:101200004BADE7116B8FD8ECA245006226F017B703 +:101210002312C071DCA354D600E32C2AA9FEB3DA52 +:101220000BFDE2DFFB163A34E137FD986BCCF72873 +:10123000725BAA08FF8B99847A71C0C7CF678B90C5 +:101240009061BC2F4BAAFBF403E2BB1460C9D1BB75 +:1012500014B111FC5D0ACCE3BB1498E2BB1498E214 +:10126000BB14588EEF52601EDFA5C03CBE4B817987 +:101270007C9702F3F82E05E6F15D0A4C9FAB8F5286 +:101280008AEF536039BE4781797C8F02F3970A3E1B +:10129000CD4AA29E4AC08B6754B184F1859E3647E1 +:1012A00018DFAFF9B18FAFDFD40DF3361F83790E9E +:1012B000295529EE3E63CEBB07F03C23E366E021CF +:1012C000901F12E0E78D2D81D7A42568F74CF3918C +:1012D0007F35E33D6F2BDE0F1832EFF792E1C577D4 +:1012E0002E0C65403963359B1FBDD0E5C67DCD1AF8 +:1012F000B381FE6A7C89F5AE918C8DABF86CF953A5 +:10130000905FE67BB20543B732465FF89AA1637EF1 +:101310002FE5874DAEF2D1BD3FB6B7E530A417E358 +:101320002569F3FE0FC0118E4AE2FE0F8BB98AC108 +:10133000FE283DD63005DAAFF43DDB72A781E7ED3C +:101340005D0D53CAF17CFBE996796E6AAFE6F1FE5A +:101350002F2C9392E5B9ADBF30CB45FF7B5BC2D05C +:10136000DFABC7F9FDA230D48F61FF45FAEC0AE488 +:10137000EBEFCA747EBFC069AC237EBD11F814C008 +:101380007B4984EFCF61D58CF627FD41B95EC2CF92 +:10139000DBE60AFC668977F964E0C8E867CC60A7F9 +:1013A0001215788E11B6BF73EA295553DE49B7BFBF +:1013B000239F4E4E7EE3E372F21BD4952A116EC03A +:1013C00017EA27235D71D44F9622BD0FC7F5E6E7D4 +:1013D000F79EA2536A25D2F5ED06C58EFFD867D0D9 +:1013E000776847BFD760B64BAD87FDCA9672B31D0D +:1013F000FBEB1754AF7933FF9D074F51DC407F82E1 +:10140000B55FB9227DBF967A4CE97B7C26F5D18FFA +:10141000890F8F23EC437A3F55C6D72DA0862B5FCB +:10142000877A819262FA3D0F8FC7AE073FE39F3202 +:10143000CB0FE3CFF2F3F5F2783A8FA01FE8D4F7A1 +:1014400054D2D7D89EC52F63FEC7DB648ACFCD5355 +:10145000810EA0BFBC56BD3C06EB78B78FF3DF0111 +:10146000394BE7E2F7015B5586BF4F92C3625A5E84 +:101470000EA612FD5E4E9BD63E0DDF2B8E69FCFC48 +:10148000A162C2AA9915F0FD89C84D97CE837A4F03 +:101490001CCF09219DEFC8E4FD958FF1D5E2BE9BDD +:1014A0003966C838FC1DA48D29EFFA98E9E762FD7A +:1014B0003B849F56DAF1562DE9AF955E09E5E2D7F8 +:1014C0009F71B9F5A080738483CF1FEC4AD24F1B64 +:1014D000022ABD8724E7F37484231AA17897412A4E +:1014E000BD23E8F8EE3C17DDA3F8D6D9F3DE27CA12 +:1014F0002D873BAAE3BB804577C864EF34EA1EBA68 +:10150000DF94E91B4BEFF3B3696A6838CC27F37BB0 +:101510002AED8B2CDF8238DA9B3F3BE0A6FA9ACF8C +:10152000154779D051FD65A41ACA3B26AB3ACEBF08 +:10153000A3751E8D1FD3651DF5A2DFCF52A8FDD068 +:101540007699E26F32F1FC16E05870F9F7028BE9F8 +:10155000FC89BFA7494FF0CA96F336162E417B6B24 +:10156000923E653ABD379B35C5857C2A6B5AB58B53 +:10157000B7B3BF57DC54CDE369B01CF91C6B62876D +:10158000F1F720CCAD9D95B545C2FBE3DA8FF8B7F6 +:10159000A6EC4906DAADF9CCFE6E67D0EB4AA01D89 +:1015A00090AFF3737143BCF31B14E716F09DEE1F6D +:1015B000E637D9F73B921AEAC94363967DCF132FDA +:1015C000FA2F070B383431FFF3FF646F3F58BCCF5D +:1015D0003A38E51DD07FF7997AB41D4FA9F3CFCFE4 +:1015E000E9D0D1FF941F530998D479E5E7F0F39936 +:1015F000A0EEE1F3CBE1F34A9DC724FDFD2A948BD5 +:10160000A9F3389F7535201D0EA9B37F4F857752FA +:10161000754704F5EC49252AE1E47CD6D988E76EC4 +:10162000E6BA7B8AECFBF76E1FB763611F8FF3038B +:101630007D0F6B95414024FB1FDEEE6131CB78239B +:10164000B666DBF223E3836CF5CFDD53642B2FEB1F +:101650001C652B1FB37FAC2D5F9E9864AB3FEEC81B +:10166000145BBEB2EB225BFDF3DE9A6BCB4FEC5EFC +:1016700064AB7FFE9F6A6CE5DF3BB5DC56FEFD6F19 +:1016800057DBF255EC27B6FAA67DA6F8D418C6119A +:10169000A959D9147FDDA3E7F9EDF122676B8F0D0E +:1016A000F3733A4A8D23F067F0F5E8CF1E2C17ED5F +:1016B000F3E615B1A8E57BCEAC51B67CE08AB12C3F +:1016C0006A938376FBAFF9BB4B175ADF796ECA5D1D +:1016D00040EF14AD1EE920FF251DE9008803FD59E8 +:1016E00034DEEA9786D3FB8E5F6485CF473E8FEF6B +:1016F00064C506E03B620E92771EAF83CE1F3DDECF +:10170000BBE9BD2D4FB18BCE8A3C25713AA76DAA9E +:101710006F25BFE7CFEA63946A25E118CA334DE726 +:10172000E7B69925AC01F399619E1FE83788CFEAA7 +:101730009363367F9DA6433F9679BE26F37BA1A790 +:10174000363BC96E4CF533A4FA156AF4D0EEBD2CC5 +:10175000E95F00BB9DEEAB9CDA9C41ED8BD0F01BAA +:101760009BDE8F30997529985EC04E51DAC16A8B25 +:10177000F0D05773C49441D0FEBA8E5797213C13D2 +:101780002B3C748E3C518F2EC1FD94F43B840A5146 +:10179000AE6F7344361FC3711BF83B79D139B35D0B +:1017A000C817A323D5906420FFE4FC7E774C23BAAE +:1017B00033F72B68CDEE6200EC8DB662FADDB73CF4 +:1017C000B596F4EBBC2B7409E5E8637E538E569016 +:1017D000FC18D0AE860C03BB32A660BD9C5616C268 +:1017E000F72AE716815C453DE02EFEEE4851C939E7 +:1017F00087114F8357242427EA5F6183CE6F8A8E37 +:10180000FFE008BE77D2A6E973C86EBF4F15F4E2B9 +:10181000207FC9EA7B55B21B57BFA4B9D1D5BE7A88 +:10182000835A8E0CC78FF11BF80E78159F47D17D18 +:10183000E7C4711EB74BA11D2497363B49FFFB67D8 +:10184000410FF7217D807E7532AF651D86688CF46F +:10185000EEA47B98E7E61C58876959C10919EF89FE +:101860008F29961AB3215F5E1A5430DE6A5C4555A3 +:1018700023A69593172B39909E572DE13539B6CD78 +:101880005F4474FBC3A573DE427DA84AF7D2FB5BBD +:10189000B76BC62EF4F7F4FFDED956BA3FC296DA1C +:1018A000DF3BAB1AE0A578031DE93D4829E9AF7A93 +:1018B0000E97C3A0AF4B184710ABE2F65E4138213C +:1018C000A1DC847612C62FE809B784F6D8E07097B9 +:1018D000A4025C83D7303AA7280C774B782E5CB0F3 +:1018E000C24EEF4733A38FE17E2B5CD36AFBEEC77A +:1018F000F802C06F93F003BFA1EF3250AFDB585234 +:101900003216DF3D473FE59CD224DDD40B3DBA566D +:10191000E845269F37F5DD1EBD7614D8B540D7BB08 +:101920004F45DB305E3616D3789CC7A98482FEB063 +:10193000E86D73E83D9B42E17FBBEACBAE66BCDE5F +:10194000FC86E3D4A14C9CF76AAE97ED72DBED6C9C +:101950004726E75B5226F7D7EE6803CD001AEE1054 +:10196000F7D6E80FF593C3D93D7176B89071FC07AF +:1019700010E22E01F7E85FE953300E2698D00F529F +:101980007A54A48721EDC38EDCD994F33296EF64A8 +:10199000FACBBA356DCACE88F6721EBAF35D6E9771 +:1019A000ED0C0A3DA880D1BD8860730E9D4B206070 +:1019B0003EC817DE5A4C71803B83FA16F23BDCE6D8 +:1019C00061E87730EAD4B0BB977BB543598F3E20AE +:1019D000D3BBED319E77B1D606A4AF31FB2DFA0211 +:1019E000A3FBEAB6FCB823F67C65973D7FDE5BF689 +:1019F000FC4F04DEC19A39867A988105F0BFA106B2 +:101A00000F9D30C4EFFB0DADE37AC8997A93DD7E6C +:101A100062428F32DFF99BD86DD75B1609FD6951A1 +:101A20008A3E72D21B5AB018D2F09D518AF3AB890C +:101A300029C4E74EDC97770ED7A3F43CF4331EC5D8 +:101A40004797D02F77ABF0B3D6D9FDAC1B43AF91FE +:101A50007F69C1DB4E86EDA729478FD4A3DC1AA28C +:101A600092DCD2CF5B717F06E4D76339E417048D33 +:101A700081F42ED34B1A437E63FE7EA5F96EBDE939 +:101A8000171C2AE872B0892F3C5027BF522203F559 +:101A9000FB31FB192B4DD1277979D88BE5E589D41A +:101AA000F2B0B72AAFE7293E0041227C570AFD1564 +:101AB000F36B41CE541CB3BF473070A13D1F3AA217 +:101AC000919E3B5ABC338CA63DF6335AE03994F2D2 +:101AD0006EC168F13EEDE894EF79E8D9043CE65533 +:101AE00078E3F1E09971380359C28576E940D03F37 +:101AF0001228B732455C4E292BC5759F86816F88A9 +:101B0000E7D7F9EFF5384F8C7813F507F62A3FF74A +:101B1000CF9EB12680ED3F0766877C56CF60E5E516 +:101B2000DE64BCCEDDA743AC494BFA637F51CF18CE +:101B3000F2FDCE7A1743BEFF54BD4EF9BDF501CA82 +:101B40003F5D6F50BABFBE84D2E7EA4354FEABFAA2 +:101B50000994FF4D7D98F2F82E18E65766555D966C +:101B600049713421F20F6F0CEDD2A7229D0C9175B3 +:101B7000A493D47D387FD54DAECB80E5E5783D1775 +:101B8000E602BC0B6E56C88F7159A6E7427CF7C4BB +:101B9000EA17B6FAC7937E61D8BFE7925F38EA02C8 +:101BA00051B3DDCBE9B6C73FBC8CFBCDFBEF87FB68 +:101BB000D3D1BFACF5D68FF0BFAF6CE5FEE4951383 +:101BC0005AE91D8F9515DCFED9507287ED3D7C27B3 +:101BD000F48BF9957B1BF8EF106B5DB5B8EE8E4A70 +:101BE0002FD9A1609776D5A35DEA970DD4174C7BCA +:101BF000D4B44353ED028B7D6F9317E82142FAF280 +:101C0000B8242E17598F1D44F4F6999FD71BA5BFF2 +:101C10007A108FDC6A84BFAA34F0D914EECFE2F9CF +:101C2000D146D6A16C4B79A8A47CEA004BBEC4F582 +:101C300064778DC5BF55EC1B7B704028993F8603A8 +:101C4000727F5618F9FBFF6B7FD716E1877934F75F +:101C5000996CF49FC41E5719DE3F783EF79941688E +:101C60000F5BE40AF7AFDF26DE69401DC32A5F0C75 +:101C700089CE9F0A6FE579902FAF91DE24E44B491E +:101C8000BC3B0BED92913159B7DA25BDC81985E2FD +:101C9000F20C6638C6E3774676AB590EDA5982FF06 +:101CA0007E0897B7548EF7AA6332FD9E86A51F5A09 +:101CB000D792B8659D19DA79767953D669CFFFA3A3 +:101CC000E499495F9BD52E8A27DDFCD7DEE93653A0 +:101CD0009704BDF6C02D9F3E2F890F8A072FC2940F +:101CE00097C3EE3980F3ACD9A4D9C65D1CB3E7AF76 +:101CF0005A6BCF5FB1C69EB78C27E4E6DF988F851D +:101D00005FB7CAEB0FC43B38F8836FC80F96B2C5F4 +:101D100017E2BC7F84BFC3528AEF1DB328EE635322 +:101D20009E9B7258D3B9FD76EDD60C9BBDC9625C03 +:101D30006EBB60C63DBF6F65192F58ADAEC6DF9E46 +:101D400009CEF8BC6A187DB4EB01A9BFA3922AEFB3 +:101D50000DE1CFF8DFD7ACB97900800000000000BA +:101D60001F8B080000000000000BE57D0B7C94D564 +:101D700095F8FDE6FBE6916426F992C963F26442A8 +:101D800082861A70121204459C10A0514186CA2303 +:101D90005A94E1A55179C4D7762AB499901082C299 +:101DA0001A28B6ACAEEC04D1B2DDB61B5D6CB18BBB +:101DB0006C50B458A3866A115DA9C15AAD2D2B5938 +:101DC000901FD4C51FFF73CEBD3733DF979910D452 +:101DD0007DFC7E7FDCEECDFDEEF39C7BCEB9E79CF7 +:101DE0007BEE1DC6183B0FFF7378FB94A093B1A246 +:101DF00035DA877D0E46FFCED3FF0F3396C5981791 +:101E0000FE72676096973B989F9D1F89E5902F1300 +:101E1000F555C69675580DED6F8E2D2F8EF6F75130 +:101E200013F46887ECB9F3E7CF8F676C041695401D +:101E3000AAF5293E98C76D21E68F943376FB1AE602 +:101E4000EF7462E1358C41BD9B93785FD08DB326F2 +:101E50001BE6A5F06CA5AE50BFB76F4BC1C90D8C8A +:101E60007F5B4349BA5205E90295D73D779EF783D8 +:101E700075600A6F37DC6B639930EFC7159601F315 +:101E8000F3F62D9AC1C64259088083799FC77F23F4 +:101E900009EE0F38DC0E82FBF66DD60F62E15C8630 +:101EA0004D003F9B34F803C6DBD4A044C20A7E87B2 +:101EB0007631F0DFFCDEB59FB054C28BE1FBA1347C +:101EC000F8A39AB115131C6115C65FD1D7DCAB42DC +:101ED000BD15F0790DF4BBA16A7300F193AD7809DB +:101EE0004E3BE09F01BE57EC6E6641C0536AADAFFA +:101EF000FD1218B73FDDE2DD01555A976A759DE581 +:101F0000B43E61314FDBF97CC67103782BC22F00E0 +:101F1000C7310B9BCA2A197B3399CFFBCDB5EECEC7 +:101F20001698CFE1FA5A07D2C36FD37D632C151CE4 +:101F3000E38E49904FF2FD8C41DE6E2FABAB2B8CC4 +:101F4000E6939367D5D55D0DED33BC8F63BE4167D6 +:101F5000E1A905D82FCFAF6FBFA2EE40A118278F00 +:101F6000B107F5EBDAC393701E7C7E006A98D3C785 +:101F7000C07C899E9ED7BD8497941AB659857CFAF9 +:101F80004D7FF0304BB45D06B6538668379B6DD6F7 +:101F9000E2B473CA763A636D400FB9D8D0822994FF +:101FA00097D19F349FD8F135C0FF61A88FF4943E3C +:101FB000D116692EFEEAF3C8BE10DC8BD8666BC959 +:101FC000E076308D66397F4BFCF947B03C767CEB90 +:101FD00010F3FFBAF171A1FE6CA2FCA2E707D5D7FE +:101FE000660F035E989F15F07818B296A1FAF34039 +:101FF0007FF1E1ED30F5974EF3F3B0F090F34BD075 +:102000001FC0BBD9046FBA4D1DDC1FF26737C05724 +:1020100028F8336D22500694B3315AE449685FA81A +:1020200031A7AD32CEB8F7F17C320B47CEC3B8FA48 +:10203000A2BE6D169C6F999E8EF2F4E1FD135FAB0C +:10204000023997DCCC7C284293ADBD24670BEF0BA3 +:10205000D7DAA1FFDC060B03C9C91E5D1A49F2C31A +:10206000F747FB22495E482734ECD880F271C2461C +:1020700017F3C2FC26B28E161DBEA75FAD052290D7 +:10208000A65DFD59C712284F4FAF54552F91AF1F72 +:10209000E588E6BEF28907615EE9567DF65428CFF1 +:1020A0000D5B7D61944BB68E1A1C2F7C1BF33E0991 +:1020B00095D3A76DADC1FE8F2D057106F59397756C +:1020C000285E92F71DCAEC319057944017C931BF72 +:1020D00083FA292BD51FE4E378B5F1513C252BBDBC +:1020E000CD53A09CDDCFD893505EE8DFFD1D652C5D +:1020F000E72794F724EF546433E6B541FEF181F508 +:10210000E9ABB161BB10B4A3CA7DCA6C1763F375A8 +:102110004BD80E42A93014C397D8DCAE6FC6F9B2C3 +:102120008556F6641CBE9DBFAC318B950FFE7ED1EB +:10213000F95676A0341BF709F9CF580EDF3547C69C +:1021400085FBB919F73380637E83715FF6B2987DA2 +:102150001ED7B5CFBCEF0369493A067CE6E2BE055F +:10216000F89C50DE5A8BF0E59ADAC37A115D4BFA8F +:10217000607ECDAB437B45B4676D01DADF5B1A1A35 +:1021800029656C81FED165546E390FE976AC08780B +:102190000D1732A273737B25F46080F6E5C9BC1F6E +:1021A0007B3273382A711F8214F0A0D8982317F954 +:1021B00002D6D482EB936A89E0FA342B4CC3EFD178 +:1021C000F1FA188E6777A4B47EE84679E373E07C71 +:1021D000D75B597D17D233104A2FAE9F16D091B9D5 +:1021E0005AA0BC82E8D16741617DAFCE615EEFF25B +:1021F000CDAFC1F9BE6625BA69F1403DDC8753BC5D +:10220000B7B074C6C66EDE55E780FDF0B753A0F0D8 +:102210004AF8BFF427DAC3B01FDACFE6B3E038A13B +:1022200057804A63D71A198E6F3F5B64F8FE4213DA +:1022300063C14BA3F929CE9153713EB3D3BD84E75B +:102240005AE66BC576B50E9505A51EC1B09F5C1606 +:1022500074C7EBBFC0F0FD8526070BDA87D37F0A72 +:102260000B3A62FB2F49D0FF25A6FEF5B8FD47FBD0 +:10227000751BFA5DA789F59F93C2D75F0B56075C64 +:10228000D1F68FA64C99970E7ACF3C3B6B2479E020 +:10229000F1F5FAA1FEFA82CC0A210FA8FDF4CCF4E4 +:1022A0004E943B0DE9168263EA8C120DF99C156879 +:1022B000FD03F40AF262BAA05F0B5004D2EFD44CD3 +:1022C000AB89FE7D1A8E3FC569FE6ED4777F67614C +:1022D0000D4837729E324D4957B89C075A407DEDE4 +:1022E000BD261F63B09EEB6D8D8D28871EF2EDD04D +:1022F0006B410ECE2BB4E88A37DA6EEEDDF73AE6A4 +:10230000038DA56DB44FCF8279CDBB5F257D8985C7 +:10231000EDD36B00479B154E4F5BD3F7B687010F8C +:10232000A766DC5346F0093DFADB3831E2AFAE690F +:10233000880FFB5D8A8EF890FD6F07BAF2C3BA442E +:1023400060FD31DD01EBE48779ED6CF250FE29D0C0 +:10235000CB31DDD55446E94F60DE58FED3A6099453 +:1023600097FD9437287E94FF63962B7ED433CDF06F +:102370001F14F06FCED56F5A8AEB5A93EC43B9CC49 +:102380001AAE02491EA357B3AE1792A17CD33C5696 +:10239000F1206135B216F39B67F3BCF38B1FEBB5ED +:1023A000909F0B785A8B7CE765755D4E2E9F6A0077 +:1023B000DE4516B1F6B08E3AD4EB0B4FDB89F0BE9A +:1023C000986EA5F1CDFABEDDEEDB301EF7D37BAD06 +:1023D000B4FF2C2AE8A9C77D6291D0FB6F667A2EE4 +:1023E000EE9BC156A37E2FF5F6AC8066FCCE36FE82 +:1023F000A73B15496FBF8E7A46A64F63113245023F +:10240000CD48E7738FD90338DFCD497A2ECA9105BD +:102410008CDB0976A463CA9BEC03531EB4090E87B8 +:10242000BA200DF5F1F5F869E2607C87DE6B6E3D50 +:102430001023079E4F7765A2BC03595D8E747AB254 +:102440006E4E5A37161664905037B73FD3146E3D10 +:1024500000280B21BD56239DC6A76B399F1182AE64 +:10246000B737F54FFE7054747E4560BF21DC2342C0 +:10247000F03D663E2CD31FB53B586238B62BC77370 +:10248000599C71655A04F846FB08F49F8F701D90A3 +:102490001D50FF31C37FD404FF6936E98D52369851 +:1024A0004F32AEDD4D7C72B241D1D5E2287E243E62 +:1024B000FEA7F965A3C02BFD1B1FB5D3D4B53E2FD6 +:1024C000EA552CDB427A4751E6944FB4B1BCFC0389 +:1024D00003BDC4E4016EF5854F142FE851FFD0749D +:1024E00090D6498E07EBA3AC2BC77EB9BD5DD40D4A +:1024F000F540DE7943CCD20AF9A5D8CF28E2479A35 +:10250000976CE75D73D0B0AE679252C732B05D553D +:10251000272B433DD5C3927D88C790837FFF4E72A2 +:10252000EA0E4CCF241545907FBEA3068328FFCE2C +:1025300058BA1CC550AF2C3FE8CEC842397920802C +:10254000D35F977D6519D2D182D0EAC054D80F7578 +:10255000375B1888430F0B2C2C88F45994C1EDFE7F +:10256000F7ACDD85E900CF82FC294519D571EA87F2 +:10257000BE4FFD4D56F9FE612EAF16FD3C26E4F927 +:10258000FC15CF7CF214C093EC2DAF441A4B2EEB0C +:102590009D310EE8A4FD8D924A54B3C688FA0070AE +:1025A00015EE136FE404CB110ED99FC3AB6B4192B0 +:1025B000535D13B17CF27F953FFD06F4D77EBD538A +:1025C000473DD95FE29B354E193C0FE8A71AE7EF6C +:1025D00038FB20D1B9EC675F52DF630CB610166E82 +:1025E000BEF608D818FBD2FBF215C85FBD25786D82 +:1025F00026D0EBBEACBE7C2CAF532EDF7000F86A49 +:102600001FD02EEE13EB322EDF1086F693AF3BFE7B +:10261000C4C3A8175D62F3E1B26E50B8BE23C7DD34 +:1026200095A1123CBB32381D4A3CF42C1F1A0F33C3 +:1026300007E361662CFEE5FC7BF3FD37E077982429 +:10264000C1DDDEC4024B618EFE9CAEA471B0F0B958 +:10265000DEAE7F7C18BAC92B0D13BD433FF3381E85 +:10266000DAFF13FD20B29F69F9FEF988E79EE5BF06 +:102670009D310EE695D4A3FA14C0A7A394855352B6 +:10268000A9DD2D582EDBD578D97DCAC8E83AFCD211 +:10269000C3E5DB8B6ECE67192A97C32DB60ECF6CC0 +:1026A00048F5D21FDEAB43BBB6E2487D3CBABBC5A2 +:1026B0006DA176C0A67E6CD7AAEF702C8EA9F73DCF +:1026C000818F9772FDCB71FE368591FC7F7002C7BA +:1026D0005B6A8FBB92F4E15256F52DE0CB1FB979BE +:1026E0007D98F77D547F6207197549A51CDE07CBDD +:1026F000B730B487923C5B795ADA47FE9E24D6E520 +:10270000C0F56ED9327943AB07E1F09561FE891FC0 +:102710001CDAA0C1FA77A26D007AC3E39047BD73BB +:102720003B18A0196877E5D9482F36C3D522E6F1C2 +:10273000788EFF979EEA3878B2F73DF130B4DF30FB +:10274000DA4676DC644B47FD62A4A7EB9CB4AFC3CA +:10275000F7FA480C5F3D2BE8E8D90C2BB5DFF057B2 +:1027600007959BF13C5C3A7B74309D3D9A80CE1E70 +:10277000C3F51F44676909E9EC89047416170FE66D +:10278000BCE6B191BF4E3BDBD6CB53C731EAC7E1C4 +:10279000A3FEB5BA8DD4AF7A3699EAA96737925FAE +:1027A0004FD31B691DB395606D06C165D150DE4BDB +:1027B000F7A6EAF453796DC6D0E368A56DBC7FD661 +:1027C000C894E2C1E340FF9B103E73FF9A331C465E +:1027D0003ADC94C1E1997C9D3388FBD36494AB319E +:1027E000EB18746B545E21E83E115F6CBD005FAC6A +:1027F00076737A00BE7863387CF153511FD6E7EDCB +:10280000A1F96227A5C9659C2F92055FAC76B370CC +:102810009D07E7CBF9E0A32DBFD980FE46C927CF9E +:10282000FDE03D039F3C0379E49344F03DE2E6F68E +:10283000442AC207E3BC56A586D1CE3CC5C6EC40AF +:10284000BF45EA045D5B0CDFFF2343F2B3FF38E1D1 +:102850001DEC4DA4D74ED6BF9FFC1E93141FEA9DBE +:10286000AE7097DF81F082DD8CFE86D3A2DD76D458 +:1028700067515FBE84119F32AD83213ECCFC9B54D7 +:10288000DA5D158C59A70D827F0FB803E770DCED78 +:10289000163D19F51BB91E66787EE9E1F5BF97175D +:1028A0009FCE2FB45F94BAF97E512AD629E3BF1C7C +:1028B0008DF1F87BF2CA5F7DF2D410FD148BF61E09 +:1028C000914AB99E2CE57AD9805CF7B851AE2F7F3A +:1028D00050CAF5DD28D781DF73DDF1F61537F0BB7F +:1028E0001297DF8BDD59C3E7F7AF81BF93DC43F06D +:1028F00077D230F1BD12F15D8D295FB72F8BEF5983 +:10290000A2FD74910E81EFE988D738F8FEA63B9EB0 +:102910007C4D8CEF59EEF8F235E01E7A1F9F176F51 +:10292000BD1D386E3195DF1CBB8E50FE9962C1F51E +:10293000D3C57EC5E83C2363556AA45949BCAF7D25 +:102940000DEBBB7CA8F59D6CE17AD8CB5BB6911EF4 +:10295000F6358C77853B8E3C97E35DE1E6F05D686C +:10296000BFDF24F80DF0D2ECCE1A2C273B19B7B3F9 +:102970001FCF09B60839762DCAA5ED0F64280F427E +:10298000DD027FB782FAB6C4E7E7195EC2A76C57CB +:10299000E0E7F50B42190A9E83C5F4B785F095A0D0 +:1029A0003FF33C607E8FB849AEF91577CCFE3BA073 +:1029B000B709FDA13323D28072FB0921A79F10F034 +:1029C000C9FC3579FEED6EBE9F74627AAA4ABDCF0E +:1029D0003292CB6DAEA773392DFBB70422AC0FF743 +:1029E0001530E3705F8CCAFB5B9E94F27E9913EB0B +:1029F0006B52DEFFC45D1DA53FD95FA2793E27F66D +:102A0000CBE7041FCA3CCCF35FC43C7F31D43CCD40 +:102A1000781AEE7C3FC818986FB7BB3A717FF29C6A +:102A200056AE1BF68176714F2BE7D71B7A4A2A9157 +:102A30005F7B06F6E9C0ABD85FCD046537237D5BCD +:102A40004FC67E1F433F02ACEB63CBB7909FBD7375 +:102A50008D5E416E6A1669C6FC632D3AF9EF0E0B66 +:102A60003C98E974A0BDAD6BF4B872C2CBBB38CE54 +:102A70003593B8DE900672037BAB61C0FF2AF27D0E +:102A8000D883F66CBB12F62C46FABFD649FB2D73E1 +:102A9000CE89EBF790A9F46B487899B3EA02F59BDD +:102AA000A9BE9E126E0C5C4C7D7B98F48B281EDDBB +:102AB0001588C71B262861945735ACB01371FDB932 +:102AC000A05B58A7D3B44ECE4CF29748BC0EEE9FF5 +:102AD000AF574DA05141BC2695C150F03529104645 +:102AE0001F08B3783B581FEA47A5FC5C9D39DFA25D +:102AF000FEA2F31837CE388FAB9F5095D8FEDB245B +:102B0000DDD8332F623EB25E62BCF07AD28F90C8BD +:102B10006F50961FCCCD847AE1295CAE877FEF8A17 +:102B2000B4D0E140E3E58131987693BFE41A210FF8 +:102B3000AF7138497EB273DAF158BFAF02E49F4FEC +:102B4000E72603E701CAF9948B9AC737869AC770BC +:102B5000FD16D59983FC16D599D571EA0BBF452A88 +:102B6000EB0BABE8FFD119D95B38647E25E75FD466 +:102B70000FFD999C5ED212E87BFE4CC540DFF3D777 +:102B80004D6123D16FEF606157064FD32A89BFA6ED +:102B90006512DFF37DB64667BBB16B098F844FF6D4 +:102BA000FB2DD1EFC07C6DDC7E78CFCAEA9F7672B8 +:102BB000F82A63E6736F7ECDB762E194F099E77B04 +:102BC000B02914986AC5738420A5EE502DFB839B11 +:102BD000CF33A992D6316CADC4E3BCDE5BEF812963 +:102BE0007C5F09DE82FDAEB8E493BFF5017E7A1DFD +:102BF000E39AD11FBB6A06B4291E3E7D7C59BA30C8 +:102C0000D3C37ED7DF5C8E72B0655A457D2649A856 +:102C1000C5D7F5C0DED2F29AEF8813F2A1CCC5D7A2 +:102C200079802F5A0EF9EAB360CBF8A7AD931FDC79 +:102C300008F2A365B6C2FDFDEC83E41ADC37AEE50D +:102C4000F9B55B1FB80EF587969B14D227D6437B48 +:102C5000F4FFB7EC37EA7751BE5AC7ED812CBE9F1F +:102C6000B5D42809EA71B9B7117546A8DB3273E803 +:102C70007A8AECEF16A817C78F26EB7D98C5FB0B59 +:102C8000A1A9827D9FB5901C6EF17FF0AA02F9FD8B +:102C900093EC5E5A970335E417BE462A32AD35B43D +:102CA0004EAF8B35017EFB3B5CD717AFB6935DD43F +:102CB000715D7204DBED9FE0EEB91CF3FE0C3A018E +:102CC000B0033D382B798AF46C053E57455ED075CC +:102CD00004FB692B56AA32E97C44D7905F13D1DB01 +:102CE0002BA3DE2E427D0AE86A17A72BA503F5B0B9 +:102CF0005E47C9461F8CBB6A8FEAB37B13D3CB6098 +:102D0000B84F3A717F36C3F7C6043549710EC60312 +:102D1000C0FD4B1CF78D731C5F1D132EF53280FB1D +:102D2000C589F6D17DB40F069E433E8556552E7556 +:102D30005870ECFF7270F88E04118E7336BE8F8A55 +:102D400079DE9060BD54D7674E9A1FC085FB0EC0D8 +:102D5000F1068EAB16F615A0FC90F31FAE9C7C57C7 +:102D6000C8971839F96E661C3D41CA1158E7A399F6 +:102D70005C6FFA6C1543BD99EB4D89E4D79F2F5ECC +:102D80007EFDF9CBC8AF987538F965D601C32A1016 +:102D9000EF568176C87A75C84FC6BFBD144AD7674B +:102DA0002F89D2BD729675BB5239FDE3F9785B4528 +:102DB00085C3A626EEBF2C3FA066416ACDEC5383A7 +:102DC00017B13EA95983F6B1D4AC21F6B169EAF145 +:102DD0009634909327272904AFFF2C804472174C18 +:102DE000BB1878263B36927D943601D630E6BC215E +:102DF000DDEF605ACCF99BBB4E37E4B3021E43FDB6 +:102E00009C7AAFA13C37586628CF6FF019F2858DB8 +:102E1000130CF54784FC867C71B8CE50BFA43D608E +:102E2000C88FEAA837D4BF745BD0503E3AD260282E +:102E3000BF6C57A3213FA62B64A87FF99EB0A1BC0D +:102E4000A2BBDD503EEE6087215FDDBBCD50FF8A27 +:102E5000231143F9C4BE5D86F2ABFED465C85FDDC5 +:102E6000BFC7507F32E3F14BF04FE1F16D16AF2653 +:102E7000D7C96228A7F3A793409818CF14A850C8C1 +:102E80004F0CE4D55B0AF2E1465E85DD28E251D8BD +:102E90000C2B9DA387E13FDC7703A638D1C9209F87 +:102EA000D19FE9F759A3DF713E220E65B229FEA436 +:102EB000868D4CF3C2B8930FAA2C02F91917A0AB58 +:102EC000C1702917808BF9BA11AEDFA9BE307E0C14 +:102ED000FB7B313E27115CFE81F8D87E0DF582C95F +:102EE0001314F6A812074E010FE8DD1AF2DD207860 +:102EF00019F70798E1359F77AECE72657E84FCECBA +:102F0000633E3CF79BA63A69BE27DF02B9C212E3D3 +:102F1000A126ECA07DB5C6AF44106FF2DC7310BCE7 +:102F20001E16A513802BC96BE4C39432231FBA7CF1 +:102F30009EA1E928CC86C4F785F0EB85FF701EB30F +:102F4000B010E639EB2C8B741727C6EF2CCD18C7C1 +:102F5000315CBC3E65C2EB693669D6382FB7375154 +:102F60008F30CB39893FB0937E8A7230D1BEF35C0B +:102F700096D1DE1DC6BEF35C566CFD8BDF77F66323 +:102F8000FB8BDD77605F7819DB312DE8BD18FBE640 +:102F900050D6A07DFB50D610FBF6807D83FE716F6E +:102FA000741F837F7EF463A57A2E89605CC7D1ACE1 +:102FB000A1ED9CA359663BE7A4166BE7F8ED39C970 +:102FC000C22F7904FD81D2EEA99954310BA6C18E8E +:102FD00008FF4F147EFF1F71DEC385BB7F30DCFD11 +:102FE00043C1BDAF99FB31F6BDA6FA76D032CC9E77 +:102FF0005101F0FAAFB75462FC8B3C8FA90B32CE73 +:10300000A7DAE65D68FCC1FC3FC77EEBBC35CA1D94 +:103010004EFC7E37A589E8CD9E7DD1F466CFFE6A51 +:10302000F49696FDA5F49CF097B2B7CE581A8F048B +:10303000216D59C7EDA1F51B18D927EB9B79BE521D +:10304000C0EF15E9A7D99C8E6A5227907EBB4E71BE +:10305000093919F07C1FF1ECB131F44B019E2F4579 +:103060003C1CC81D9F867AEBA99E379DB1E72EEFC9 +:1030700009F80F0BF88FDE3F00FFE5D86EC5DF08BB +:10308000F8EB976CAA36C05FA0935C4139A346E188 +:10309000B6E95DE4079EAE3A09BED65216B1D3FE3C +:1030A000E49F312D5B5C6DC0F6EA8C83B8CF9E2E19 +:1030B000D718C65B38E4BD052F8F4F6A87FF484E8F +:1030C0008BB825AB2726AE88A1DF98C7D1A4B098CE +:1030D00078A6E268FD24531C92592E5E9B2DE26B6C +:1030E0006C2C87CBC535ED97115C414FAC5D659677 +:1030F0008B327FA0AF24A72F0E1FC9346D82A3A5EA +:1031000034465EA7FB7543DE5DE769298D994F560E +:10311000C06B28CFA92F3394E7067D867C7EC3043D +:1031200043FDC246BF213F225467A85F1C0E18F220 +:1031300025EDF586FAA33A8286F24BB73518CA47D1 +:10314000471A0DF9CB76850CF5C774850DE53FC799 +:103150003FC80F30FB7A8CC7FE39C64782DDFF9D22 +:10316000EC1BAE47FF6CDBB1F91E3C0F5D9735CF12 +:10317000114B8FE6F44016A7DB44E5927FF7350547 +:1031800002534731D6DD546FE0E73A21D70E34358C +:1031900050F9CB4D8DF4FD61C1475AA6256CC7731C +:1031A0008C3D9663763AC76824DF54B6127C18F9D2 +:1031B0009F651ACF295033427FE1356761BC18788B +:1031C0006BD84D81A931F8A8752C32944FD3EF30CC +:1031D00094D7013EAE04B9FD4DCFDD86EFD77ABF5F +:1031E0006B68D75CB0781BF2D17AE067E4238A3B46 +:1031F000BB328AD7F51AC7F3005E95C6F6CB941892 +:10320000FC87EFBFDE5F1EC5FF8F7F788FC0FF3763 +:103210003D68DF1E4807FC0E41C717C2AF19AF0754 +:10322000C5795D9DCD780EFF4E363F1F9029C8A50C +:103230005F217E5FEB513F0B12B443FB33CCE39B2A +:10324000C70579F512F6F71FA3DEBE6D0B1B2CAF79 +:103250007F97CDCF35D629E1523C57AEB346EAC869 +:10326000EF2DEC524DE1385F9735DD87E7FE6F0AB1 +:10327000FA60EC012ABF5FAE49023C692048BA639C +:10328000E490523CB71EF7BBBA2C1BF9EFEA44BCE2 +:1032900080B9DDAF053EBE2A3D7D693A12F421E9D1 +:1032A00048D24722F9EE10F7B634A738078C9EEBC8 +:1032B0009DC6FD821500BF640FE617F3FE68EE3F62 +:1032C00024EE5D30273FEFA38D02F5FF83259DB1EE +:1032D000F1BFE6747D93EED750DFD7BD691407AF19 +:1032E000F07D13145ECFB75CFFFDF5645EC6199ADE +:1032F000EB87F04FF43F799C0417A2995F4A089638 +:1033000061DCC4A81CBE8F6FF2F8F372280D14E4C0 +:10331000207E1CC132C41BE48BF03BD307F25E2A33 +:10332000F7401ECF0D747D58E713D0EE52EA471BCD +:10333000E86734F5E3E4FD40FE322ACF1CC88FA1D4 +:103340007C01AF3FDC7162FC871CEE5E95E2E13FE1 +:10335000D3FC6919809779A125A487DD14BA83D29B +:10336000F626BDE643C0E3BF37055A5B819FE7DD24 +:10337000344EC778989B962DA174407F13FC632B25 +:10338000D60278FEA3165B023B897FF9B994AA4462 +:10339000045E5B29FF6D40F41A90AF0B96CF6E6D03 +:1033A0008DE183249C5F09DA7FDAE7B1F6548DC59D +:1033B0007F5DCE459CF70C860F6412D0EB67CED2B2 +:1033C0004898FCF553F478E74A12CE44FD2F482084 +:1033D00027249C125F66BADB505AA9231F6AA340B8 +:1033E000DF4AA57E887F98CBC1F949D4FB36F4FF2C +:1033F0000CE24DF379913E318FF42ACF47BF0D9403 +:10340000B7A6323A5E8D25B00AF162C6E370F19438 +:103410000963F4D2781D748EB7D529F3618A870ABF +:1034200094F273BD242F2F97F3C80946189E03A664 +:103430005431BC19CB2C580FED83945E3FDEE7DC92 +:1034400096D373BD67349497063D161FE55FD5B2DA +:10345000F0BC1AF274C7A5E7D5031407A07F03E3F5 +:103460004C1DDAC1570F5E4DF14F422F39F82ACA71 +:10347000BDCE813CEBC6FBB29DC90379BF036CA9ED +:10348000CE9103F930E6B78B78886D39075F6DE52B +:103490007EEC1F109F38BA679465A27DA6F0FB5D95 +:1034A0005FF3F96267F9330747A2BDE0D17CA3BCA3 +:1034B000A81F3343BB7FCBB151BD92DCE093381FD3 +:1034C000D79A7E72673C549EE142FF71741D22A61A +:1034D00075E0780F9445C4F96A84D66584E7B370C3 +:1034E0000D8C37621257D7BD4C7F10F3DE568BDE42 +:1034F0004D1F789CB9A5AC51B161FC4D39D3719F7A +:103500006D11E7DD2965FC1C5FB7737B6E4F0EDF25 +:10351000E77E9DA38A94DB9969322EB4CE42F5D31F +:10352000441A859FF3F3AF7334835DDB9B1F7C31BB +:10353000272B6A27F7B45A88DE3B5B47762A0AAE08 +:10354000833EB54CC1B8711EDF03EBB403EBF7F853 +:10355000DCC941BE6EBF89BB6E02AE0BAD5BA2F58E +:10356000927654A2F27937A974EFD0E2083E32176E +:10357000C65DB1C75D81F1D487EBD5AA5EC8AF7CCB +:103580003E87E20B3E10F85A65E9CFC6FD7683739D +:103590004B0053FB9E663F5E8396F7A865BFABF674 +:1035A000D6D03EBC36257512AEB7791E87CFBD9DED +:1035B0001980F2997FE5F739D00185FEAB85C45CAF +:1035C00004D65BE8AFBA55E84136115FF796D0B73D +:1035D0006E95F6191BB89FA79C0783734E60D14C5C +:1035E00094838BEB55B2E31646CBB91F2C64FD30A8 +:1035F000F6DE7990A54F47F65C1436FAB396311F84 +:10360000DD175AD26EFA2EECB96526BFD8FCFAA89F +:103610003E748A45E51BD3FC563C37EDF996C25003 +:103620006F981B30EA516F7FA12E443C1CC6B63008 +:10363000EFC30B2EDD81F13D667CCCF670FA7C4B3E +:10364000E89D03F86154972D0E2836BC0A6BC68797 +:1036500019FE01BC99F0B048AB989EE51D8C07336C +:10366000FC8031C2EF32C02FC61925C2C77475065F +:10367000C1BD64B642FA9D193F663C487B5CC2F30B +:103680005B0927F31D4E81F1FEB0D14AF863DDD707 +:10369000D0F9D80DBC692C3C1FF07BDCBAF0137B51 +:1036A000D7B961FC65804CE4A31BC35683BDBE4CF7 +:1036B000D8EB8B5920AD5B21383F48B0CE06BBDD3F +:1036C0003C6F335C33C57E61B6EF99D65D8E7ACCA4 +:1036D000748FF07F8EE5FECF535537A691FCAACAB2 +:1036E0008A2B77CD76BEA4AB85A1D9067D5A61C160 +:1036F00081BC0EFAC43D1ED58BF7317BEBAD8F201C +:1037000019CE76F469E4BF17F78A663387D709F5CF +:10371000570371A1FFF8067F92D71933DF931D4A33 +:103720001DCACD7BA0BB10EDBF7EB23B160ABC2FDD +:1037300064E1FD88BF7B3C361A07E8ECB3583A4B8E +:103740008487DB3CC2CF31968DBD18F8FF90C388CB +:10375000FF7537EB463F4DBFE288EC50A27E39F84B +:10376000336C0351B9DA532CE4B2DF78BEC71A497F +:10377000EF1F869F6EB5278E9F4EC63B48FABCD57D +:10378000E1EC5639DD1D1FA00F43BC4390A11FAED5 +:103790002DEF4E1FE2BB2D99FBDDE43E09FAEC7ADA +:1037A000F497B62573FF9B94F349B8BE2AC61B81D4 +:1037B0003E1883B741FBF481A5BB3A812F824E8D21 +:1037C000F17B7E6534BFA02EE7D76FC57E1686AC31 +:1037D0002763FB09BA40AA94E3BCAED4315DECE1A7 +:1037E000711B8B19B7FF5918EAC79C4B047119F16B +:1037F0003B0657C7F48FF5F11D0DD61ED3FF489A2F +:10380000C661BC47DAB6D64AF3328F3F68FF328DC5 +:1038100067EEAF4DC4F9A9AEA50D647F79F274D2FD +:10382000C9CAB8BDF2138FC5B0EF2C76B8FD5ACC1B +:10383000BDD90F729DF5B1FBB74C653B89CFA89EF2 +:10384000D6D013ABA73DB46E718F414F0B2FEEF95D +:103850002A7A5AEFB6C53DA8A731ADF1FDEF013C7C +:103860005B7EA3129E643C8E066A455A06D965614A +:103870004C1DA17C8247C6E7B8BD3E05D7ED88C781 +:10388000CBFD455E7E2EEDD67C8A0FBE6F11FA0E03 +:10389000FD8375D892A177A29CB63B586B5206B6B1 +:1038A000E370CBF106FA2DF3297A79627FF7879ED0 +:1038B0008BF6777F188F8F7A2C1CEE30C08DE71235 +:1038C000B778BE4BDFCD76D8A762BCEF2BC14FB126 +:1038D0009FDEFA376FF90EFA4F76DBC9AFFC69FD50 +:1038E0009BB7FDC88BF881F5C6F637FD60EEF84C46 +:1038F000D44B34D2CFDB0BB9DF476D5648BFD8E08D +:10390000B5D5ED86745C4E4D412ECA873AAF05E9B8 +:10391000F96432A7E7713953E9FB99A3EB3D780FBE +:1039200027D9934C51466A73F1C374FFFD1595EE88 +:10393000A5B72533DAAFDB6C3C4DCDE5F19FA9B9D6 +:103940001CAFB65C6E3FB75B83658DE5184F0DB35A +:1039500089A1478716A6FBDD8EB31A7D57C57B0C60 +:103960006DC9C1B2FB63F027FB759C05261E17AF1E +:10397000BD8DBE235CD43E83CF47D6CBC9E5FA6963 +:103980008E988FE36C0A8DD79601F372C6F693CAB0 +:10399000BF27B877BDD6539B8F781997E32FC825DB +:1039A0007EE9B3A21CBDD573F088923A1C39C8CF0A +:1039B000235CE794EE11A897D7A891B5C5F8BE840B +:1039C0003EB30AEDC11A2BC5C1F49665BAF05CE9A5 +:1039D00090A6BBD02E1F93CBF59DC03495ECEB4049 +:1039E0008D95E8F950D9D2A754AE133A62F7A343A4 +:1039F000E5CFF4E27B15E1B095EC91858E7004E79C +:103A000015A3FF887369FECE05B583792E9CAAFAAB +:103A10009352E3E889E2BD08A97F82983880E7EEF7 +:103A2000BF17D9F7A79E9A8BD3EF63BAAD5689D546 +:103A300047F93B0FCB44BD8521A3FE64D6AF165793 +:103A4000F95E767B111F5D01C2C7188DF862B87AE6 +:103A500027639B894E1E9AFA2F0E6F39DA5B5C2E14 +:103A6000B8A6BEE9273B6ADA298DF0364961782588 +:103A70007663C8C2FC30CEA62A6B04E3013695F506 +:103A8000BD720DF26395E625BBBCAC774E2D955704 +:103A900093FDF1060E3191EAF3F321A733320AF7D1 +:103AA000F7EADF3996C4D0CBA6AA0F46E33EB75D4E +:103AB000D0118841E7B4F151FC217EBC2444B91DEA +:103AC0007FE081645ACFF737AAE23C86D17B102E83 +:103AD0000FE7C769E2BC66C9230AC5A72DA93E5CEA +:103AE0006387FA4BD629C4970BD7A8C7D04FBE30EF +:103AF00064D4DB828D01D2271685CDEF49717D0F0D +:103B00003AB721FD0E57DF33EB2FDFCF15FA5B25D8 +:103B1000AB8CD55F12D957527FD1987F1DC91D310B +:103B2000FE628D9FB7B24937127EA7A9C75FB9065B +:103B3000E03B59357224E2E38CF0F76E0ABDEB40AE +:103B4000FB77D33995F89C697D7720DED4D557BAB9 +:103B500051AEEF7FE01B397F80F26DB9367E4FC1E9 +:103B6000E2FDD124E483DF58898E12CDCB11525966 +:103B700029F07D5248A154AE8B2B94C4B41879E33C +:103B800012F7B3B2AAFA959131F2E529C19FE96B18 +:103B9000B85D9D55C5FC5EB4174B47EE407B1736AC +:103BA000268A7B4E2AF656221DC9FAD90AF77B6B64 +:103BB000531BC3F95E3C1752693C2FCC03F7B9E2A3 +:103BC000500AE54786DC949684D2292D0DE553F9F9 +:103BD000A85009A597848AE9FBA5A1CB285F161AEE +:103BE00047E9E85005A5DF085D45E965B0CF61BD4F +:103BF000F2500DA56342D7D3F7B1A11B29BD3C34C8 +:103C00009B525FE8DB545E115A42696568117D1F63 +:103C100017BA8BF255A17B295F1DBA9BD2F1A1D5B2 +:103C2000945E116AA17442A899EA4D0C3D44F92BA7 +:103C3000433FA0F4AAD0664A27851EA372A96FBC91 +:103C40008E7F82BE7743FA629DC7D5F87C681F6C71 +:103C50004F2087FF28F69739B9FED7500ECB7AAAA6 +:103C6000B80F61AE774CC87D795FCDE2E87694906D +:103C70007D5F5289F6FD76900318DFB372D448BA9F +:103C80006FF75E2EA7B7246BD89F5F1CB5E7D3A74D +:103C9000F27B302BF7DC4D299BE01E967FA807E5D1 +:103CA00010D2A316A6F763B637328A5F4A2AEDA56B +:103CB00077F13ACB2D7528D71F2A3FB91FF97A66BD +:103CC000B5BF0AFD0C0F955B2C0E9257355538CFBA +:103CD000AC3CFEEE4449AEFF38C23DA22AEBBA1B13 +:103CE000A17C44AB85CCDDF42AAB05F9211D8645CA +:103CF000F926FD2F9DC9C6FDD09527F5BDBEADD8CF +:103D00007E7B5E6925D79BF9BD1975F548B22FB743 +:103D1000DBBA15BC771F06C3E74929FBB17EDBE29E +:103D2000A790DF46B6FB5EC0F98D08FBC6E17C5D5F +:103D3000799CEF8A3BBC5392604225DBFC2FE05913 +:103D4000C3A848704A32E42FDD157E01D3D15D91BE +:103D50002929905EB6A7FB05141F63BAFBA638217C +:103D60007FF941F6228A818A5E6FAD0BF2E38EF80D +:103D70005F44F776755FB03615D7C916694985F97E +:103D80006CFF3DF335437E627FF84514A303EB6F70 +:103D9000678DA87FC97571783BFC88EF82FB74F250 +:103DA000E36CD7FA92D2CB07AF4F27C28D7086F85B +:103DB000FB0705FE7E5A87822A5609355867AB5C99 +:103DC0008762A29789798A5C87C2BC6AC4AF5E8326 +:103DD0007EAAFE694CC7F7F1008F6FA13FB0D3A355 +:103DE0006520BF4BBA83EFA367BB62D781D3D97677 +:103DF000939E9A08BF13F3B81FF17F1BBF07C5BE80 +:103E00009A08BFDD08C7C40BF3F17579037C3C3D0C +:103E10002F2B71BD5502DF663C775AD8417C5F304D +:103E20007A1FCCC2D05F74679E45DE531B165E9727 +:103E3000FE1FA1DB9A3C2E2712E19594D3DCE8FD0E +:103E4000DB44F24615EF18C593738CFC98C53BD044 +:103E50001FF85D417F1BCE1ADF7FD4F636FB713F22 +:103E600092726E5A1EFF9E507EE1D0E4FF76D279A8 +:103E70008B53F83B8012669455A17DA0101FAC17A0 +:103E8000EBF8464E605D1EF97759159D93F98CFE4F +:103E9000F819AA5E43EFD25DC5EF33CF9A74C8AF6D +:103EA000D27A792BF9FD2E7E1EA9AE4EDE81EB591A +:103EB0000CFA830674007F76639A52AE5BF0BEB450 +:103EC0008CE362FA224F2CDFC9FD3DCA97923E3245 +:103ED000C83E44BAC5FAAF0AFC44FB51A85EDB7782 +:103EE000F3E8DC53B6EB741650BB57F3D2A95F5B13 +:103EF000FEF2B245E589E9F9ACE8B7B3F519C26F4E +:103F0000CA24AE37A4B566107DA74D0DA2C61343D3 +:103F1000D78B6D48D72FE571FFBC94E760572FC44E +:103F2000FBB99D193C9578B1E5977772F93D3CFA5C +:103F3000DFFABF44FF5BD127508DE718FA7E8CCFA4 +:103F40001B3195E95EE4EB49B897A1FCB4915ECED4 +:103F5000501F867C1A9037C6B9025EBBD19F1AB635 +:103F6000B888DE547BDF54A2177BBA8EF4F2464E3B +:103F7000F0CDBC21F8A8CDE6ADC0B7234F3DDA386F +:103F8000D3998BF736809F60E98E3DFADD991BD17E +:103F90005F91D1C7447E13967F59FF06F4FF5A2BD9 +:103FA0009D8B713F029E2BC79E537F22E8E09A3C77 +:103FB000FF47799C2F4EA11CAC61EC3E7C27EA1494 +:103FC000F689FBF457F48F98FD2292DF2EA4B748B0 +:103FD0003912E57BBD42F23DD237C8ED2F70BEB23B +:103FE000BF447AD84E21E753F32FA48765D4685C89 +:103FF0003E093EE77CBA81F1F39544F249CEF79C45 +:10400000909F89E494CBD1B16D278BFA831D028FE9 +:10401000729E491E7E6F3A6906237BCA25FCC26BDD +:10402000D02F5C8CF7C7791EFFC5F70B470CF73D07 +:10403000A43F58BEEB60C6F3A5F916837C417DED25 +:1040400099187898B003EF156376ACF5A5E1BD9F9C +:10405000F0EBDCFF22EF69CCC0BF014EC5A7D03A20 +:10406000777C9FF3FBCC0216590B2436E37385F95A +:10407000611E3D9FAB949AFDC133A11DEA3B3D8A71 +:1040800023E280FAFB2BEC0CCF0D7B5C16618F7664 +:10409000171461BED24EE707072AAEA0B82473BC3E +:1040A000A24CE70717C58DE734E367FE2D2F397162 +:1040B0005D1ED3A7388AC99EE6E7A736B17FC87AC6 +:1040C00037E6DB84BE159C998F76D9D2FE56F8C2AE +:1040D0005A757E7ECA3C9CFE729DBB5F417F6BEE33 +:1040E00072AE0FE7B108BD9366A6EBDEFCE07CEC98 +:1040F000E731793EB99C9F4FB67BF9F964CDAABCF4 +:104100004923A183BF1B389F0C5E979F45EF105436 +:10411000201D3EF6F99E248CD33ECD7AEE237B659E +:10412000DCD14C7CDF6A41F54B59888F99A6F9CBDD +:1041300054FAFDCC76F4EDF903E7206363E3C01392 +:104140009D03487FA4B4A7D1DF180B67227CCBF175 +:10415000170039507C845521F9D983552792FCF9F1 +:104160002EC28981448E2A944363282EFAB5AA71FF +:10417000744EC27C6EB9AF17C49EBFCAF9C0F75166 +:10418000F1CE6513C54D74E473F9B7C0CAE5A372E7 +:10419000F74B0B701D1654D8157EAF92D3E9427EB3 +:1041A00006C89AF2B9FEB0D0B79EE2EBCDE72C4D2F +:1041B000F93A7FE7C3DA5DA00B3FAC2F0E7D26C234 +:1041C000CB3B5AF816C4CB3B41BB8E7122AF05AF37 +:1041D000C819EABDB877913E4631766B01A3FE0659 +:1041E000D60D8DFF38EB7F04E3E2AC83CFB106CA76 +:1041F0001725917FBE5EC47DC8EFCF09B88F087CBC +:10420000317BB80CFDD3ED8B1F71B031185F72B2EA +:104210003AEC4239D95FBD03E5C31A17F93BEA17F7 +:104220009DAE6E1E1383C7091C8F0B5FDCA023BDE0 +:10423000D617B7668563C631E3F3483E872B49D06E +:1042400033A8597B893ECC7E9BD2399C2E5E4CF2A2 +:1042500075C3F88EDF9554A2FE20FD36380E7F5FC1 +:1042600080FB99EF13E726286B62E9BB3EB4D220AE +:104270003792CE2A2C129BD73AC84F9B7456A3EF85 +:10428000663EDA6EE22389EF44EB27F16DFE3E8055 +:10429000EF451BCAD08FD89E9CE01DCE02E339802B +:1042A000F95C5F9E679BDBFD45ACE3A9E044A2AFF0 +:1042B0007A5B78D470F857E2E7F0B9F53AF28B03FD +:1042C000E305CAA3F10AAEB20C8A4F385CAF921E66 +:1042D000983C4AA7FBFE1F8A7D46EE7BF2DC33D179 +:1042E00039A6CB741E9A54E618F23C54AE63A2F37E +:1042F0004FF33A590B8CEB3470EE99806F24BFF476 +:10430000223D665D388E63BE8DC7159BBF1F1DC0E5 +:10431000FBDFD1F9C8BDD5161DE97013FC2F8C7CCD +:104320005365A578AC77CED9E95D6F57B5E509F44B +:10433000CF1F59F4CE1C7C27F448B595CE53BA81D3 +:10434000EF9703DF6F10FC3FE00FDEA84646E1FE6B +:10435000C114C3797472A9C3909F59CDFDF79BB660 +:104360005644D00EAB67FCBC7143F5B7F83B9AAC32 +:104370006326BE2FB1D8CBCF331D5FAC0FE07A7769 +:104380002FFA513DF98147D9D2513E4A7A90E79DA3 +:104390000EF17EF08BA3C6CFC37717DEDF6865749E +:1043A0001F40899E877B41AF5C525C958D74D78797 +:1043B000F1B9145720FCD34CC807E14F967E7CB36B +:1043C0005F39913F79B87E64492F66BAA84B401790 +:1043D00089D639C69F3CAB209E3FD93BC7205FA4FE +:1043E0003C9272E15D01FF91513F9C89E75C4796E9 +:1043F000A9027F3F7CADA98AE210E91EB9E38B1FB9 +:104400004F437A60772871FDC83F947219E30ECA52 +:10441000A278BE29188D034676FE7683310ED8BC6D +:104420002F24965343CB217701D78FE4BE81FB43E2 +:104430008693EF0F165794EEBFEA3E51BF689D2F4B +:104440003C86D25DD88FA32499DE8932F3BB59CE46 +:10445000CBF1CDF34E3AABB2883B963FBDDCEF3AA1 +:1044600020E76D548E048EF65D8825FB501F9995CC +:10447000E3DF88EBBD24C7BF09D3BF66FBFFB620CF +:10448000A6FF162B8FF3552D2CF834E9D301437C6E +:10449000F0B3426EAFABE1F5F6678DF7FC11D29643 +:1044A00063151E2B8CFBCF05FCBCF0806BE8FB0D6D +:1044B0000F0BFA7908E5D1A8A81EBF49AC2780EFF9 +:1044C00047BFCE3A6BC013EB77DC5AC0FD04A9138B +:1044D0009FE91D9989EF80F3779A5B748DFCC0ADDD +:1044E0004EAD6E27B5632457D6B9FC4F86853E3452 +:1044F000D785EDF979A8E634C6C93E2BF4100997A3 +:1045000079BECF16F07DA021C7BF1BF19599E37F3F +:1045100016D39016B623BE438EF876CABF16F0FDAA +:10452000F0A10226E8DC49E79934AE7AF1F7A9CA8E +:10453000F2832FE3B8672C617A57B0C535FEA2DE4F +:10454000653D24E6137BFFAF200E7DC5DCDBA7FBBA +:1045500078355EF65904272DEE1BCA7856D07B8F2E +:104560001490DEDB38375E9CE8960BF8DBA4BF0BBB +:10457000ECF8F70BB81D7F0CFBAB99C0E87D256903 +:104580001F6FB1F4B1A1FA013CD179F430DE893961 +:1045900081E398F16A4B6DBC1CFB1F2E1E3F1F8CE4 +:1045A000C7CF87C2E399A397A6A13F41BE7363AE6D +:1045B00027E30F64BE3DDD387E5B25CF5B0B39FF03 +:1045C0002D17F117B9857C1E0ED33B2C8E19FC3D9F +:1045D0002119C721FBC92D74F177BAF2A7E4166639 +:1045E000D1BB1B14DFD0966E7C5FE4AD829ADC42B7 +:1045F000A8E716FDE71672FA45BF19EA65E6F70B5C +:104600008F8AFA470BA6500AC26B34D2894D55E304 +:10461000E2B1A890CF5FDEEB94F7EA966C520DF70B +:10462000EAE4BEBAE47946FB3E9EE3223F278AD7FE +:104630000B96E92FA30BE9342BB761BCE357DD6F71 +:10464000119F291983F7DBF18503F167BE8BDC6FBE +:10465000AF2E8C6707309FC1BF25F7DB3ED3F993A0 +:104660004CE78875D928EC70949F28AFF15D3392A0 +:10467000DB1AB753B7A4727F2BD21FBE6732A79045 +:10468000FB91CC7E30E9FF92FE30E9FF1A78CFC76C +:10469000E407EBB3F5ADCB81F5EA1FCDE87E6CCE38 +:1046A000027D7F0E8C973CD5CBD01FD556CC5227A0 +:1046B000607985C587E70DE973F4362BE4D3BD0C2B +:1046C0005FD4C47BC46117F4BBBEB098C311BE7184 +:1046D0007F0ED45BD4FA9FA43F664FF2E2CBC73182 +:1046E00071D06BE95D2409FF72C107695EEEFF6559 +:1046F0008E30B5F3DBD3E97DFA683D792FCB7F1798 +:10470000A74BEE27C7E7BCC98EF7713FE82CD64B05 +:10471000F1726D962E9233DFCBABBD1BEB4BFEC11E +:1047200077E29E8EF1079BE3A11E30E1D51C0FB509 +:1047300045F8F7DAA03F3A671BF04BBA159C2FD427 +:104740006FB566203E8C715503EB62F25726F24F2F +:10475000262FE07C6FA6974E412FF7C1FE4F783889 +:1047600077FEBC3A3E7A6F15DAD1EFD92465BAC824 +:104770006F9CE4E5E7EE4C57B85FC9C6FD82B64BC7 +:10478000D8B866DC6F6DCE76057F1B6BA985617C22 +:1047900071ADE8C75FCF948FCAF84FBA70F9ACB16A +:1047A0008F24DFA8027930EE14814A3B2C7D0AE089 +:1047B000A9D6F99BBFE27BFF39A5DCEF9C93994614 +:1047C000F1195B129C03C8F8B368BCDDFBAF1F286E +:1047D000888DB77BE7F58385B1F176EFBCEE777E08 +:1047E000797FF4BEC7DF79FDBF33DE4ECAC1236ACD +:1047F000F0C86AC0FF5C105E681FCE851E17907FF0 +:10480000D443789B23F01CFE1CF0EC88E2F98895D9 +:10481000BF273377EF2B8447EB148E6AEB03699144 +:1048200016D27F22D4FF3C47C734F4BB9DB0F58F2E +:10483000C5714F3CFF7621EAA547BF77CA85411A6B +:10484000EF6BFD2EFCFEA7356FBA105F47D7A8A40B +:1048500057DD2AEC8E854D5F8CC7F3A1F7053D5DD2 +:1048600059E43F5C186367B35016EDE77744543260 +:10487000ADA4BCBC6B97F1F7DF5674B90D79B98F55 +:10488000AF10BFBF70D74FF7DBF261FE77EC4A275E +:10489000BBFC4FE2F7DBFEB4BBB013E57F5691459E +:1048A0008C1FF818C7C779A11EF4FE5E3BEBA675F6 +:1048B000EAB5326EA7CF50B279FC29FE33CFEBE5D3 +:1048C0007D29D4EFB247F8BEB3C8CB7F0722B8F733 +:1048D0000EDA5FCCF35E76B4EBE53C98D7B20DFC14 +:1048E0001D15AC8FF78A8221EE5733C365DE7F96A4 +:1048F00074DD4DFB1253CBA7A3BC3CDDAE90BC34A2 +:10490000EF47B7EF7D88FA6B39584BF5977598CB21 +:10491000AFFD1889FB76D33D71F33E955224ECC26E +:10492000F1EC8AF3F83B3FCE916943DD4BFE531324 +:1049300067CA3F3739283DDEA4537AB8D04BF8BE5A +:104940006BCFFE97F389AD7BC7E3FE3EF3955A0725 +:10495000FE1692F48F689D37763FE6257F1EE3F1C1 +:10496000287EB28B1608FC5B19F7873C29FC23AA2A +:104970006E3E17383407E32AC24EFE3E97F4932C5E +:10498000407CC4C4892FB8809FE41B12EE2B006EBC +:10499000FC9D0D27F70F5C687F4E047FA2762B12DB +:1049A000FC6E81E48FC3625F58BA73761B1EB1B48C +:1049B0003CFF7111BD3726E20EC5992C53C5F9890C +:1049C000CA4C718661F6168BA15F18CE86FB93994F +:1049D0004E25BD30276FEF608E66BA8F21E973EFE9 +:1049E00026C29FA41B3C71B6A0CC61DD1ECB840BFC +:1049F000DFD730FF7EE4A7D6BE229413B79BDE69D3 +:104A0000F954896F3F4D2A1AC9F1E0F54FC7FD707F +:104A1000190BB4E98407FEFB5477EC5D7F03F221A8 +:104A2000F127F4B3E2973FFB05CAA53BFFF9915488 +:104A3000944B9F681DD938DEF227D7A562DCF49F1E +:104A4000B4702AB6FF24C2E59379BC478BA45FC13A +:104A5000EF54406EAEC43FBD2447FC78FFEE8E7726 +:104A6000ECF4BB6EAB76D9BBF15EE1CADD1C8F9076 +:104A70003FC6F3EB095FABF618F9EECE1F3F92EDA0 +:104A8000E5F77EF305FEF25134AFDC6925FFEDCA90 +:104A9000B7547CE690AD62FD049FB93DCEE32CACEB +:104AA000DBAA2E75912D6D7039684C36E4AB5542FA +:104AB0004F5DB59BAFD72A935EDA90C00FB4C14467 +:104AC000F7801F7A2F280CF322775584CBE7967F47 +:104AD000B4FBF19CEA9377733AD14F737CE7ABA9AF +:104AE0004A79940FE47B81C7BB4A8694179F0A7E5C +:104AF0001990FF629FF1EE8109E25D8BBD3C5D6E16 +:104B0000ED4EBD0AF0B3BCD3EA0BC3E7E53F53FD5E +:104B10006822325807F4FBDDF5B3970E5F09F3B94D +:104B2000EB696BE60C0E8E13E5B65CB75548EF9556 +:104B3000D175BAF35F5EB2E1EFA7E077BC3F20D753 +:104B4000EBAEA7F7DBD0AF6FC66B6DD77E1BE73B35 +:104B5000D3BA751D9B8EFB72CB3F9EA1DF1BFD64FC +:104B60009FC2728A07B76F78F2D554AC27D76D60B1 +:104B70001D4DF58EEFE4FBC9F1BD0AE951175AC787 +:104B80003BF08762AA89DE7FFE2B18BFE15DBB0F79 +:104B9000E16FF8F9BDA908C7C75A23A7FBC7D765B6 +:104BA000E37EDC600D67EB94F2EF0DDBEF277ABC60 +:104BB000FDD0FDD9FCF7EDFCB9C8CF00672EC2B718 +:104BC000ECEFE7127CB7B120D163C3E3FC9EDE6952 +:104BD0008DD53D1D675D334670B9F5F10E3B191556 +:104BE0001FE36121CAE3DFF2FBC08CDD4D7A887CD4 +:104BF00037802434E44F3BF83A7D5C24E3E3B87C0F +:104C00005B256AADDAB99EE4DB9F0BFD39C8FF80F6 +:104C100007839C530F4DCB117291E2AAA91D888C7A +:104C20005AFC8EF57BADFEA4B18676C25FC6C7BFC7 +:104C30004F8EBFC39EAC5C0E69F640FC462FCE6320 +:104C4000A5C2DB20FD60FC708D807380FF776EE075 +:104C5000EB24F8FFB3B7B85C5919995D4772A1D737 +:104C6000DA9D83F522FBE7282417ECD1771162F94E +:104C70007AA755F0B5B11CE6A529B1F8DCA790BF1D +:104C80007CD56E2EB76FDB0AF563F8384A2FB6E88D +:104C9000F7E2285FCA7388DB4DE7403235CB05E782 +:104CA00008A35C1838C7F8FBAC21CF0DA45EB6DCB6 +:104CB0001A79EA51E4DF77ECA4F72CFF9995E2E941 +:104CC000FFF2D3170FDF0CF4FE972EC9B746796BAE +:104CD000E6DB8667E6B2787CFB97CC008BCBB7F03F +:104CE0003D2EDF66F277D0BE36792BD621119FDEBE +:104CF0009E40DE5E3142F801045E4FB3F2B4AB2059 +:104D0000FBE79FDC3582E22B4CF8957835CBCDDE86 +:104D1000226F5CB909FFDE6231F8947894F47AE787 +:104D20003FADA07106E858D2ABDCC706E8D50CB79A +:104D3000119FE6F2CF855C92EB6F5D0BF63AC60FE2 +:104D40003EAFD27DB913DEFE54BC5FB12E89FB2786 +:104D50004EE8229FCEF3FD59B636941FF27B7F12A8 +:104D6000BF477322D09F9A1E63CF1DDBABA6A27FE5 +:104D7000BE2FC2ED7C331D8264E67E10E10798A64B +:104D80003A8B4255A8279654E2FD9D93AD56911F4C +:104D9000C57FA744C4BD9C10F7E44E887B717F6437 +:104DA00081C357913EE5D772019F4B38A8ACE1957E +:104DB0009654D4AF97ECBD8BDEB15BBAD18887DB5C +:104DC0009C3B49FFBE5DDCEFBC6DABF1FEE79D4255 +:104DD000BE37FCBDE9FBDEEB898EEE34D15150F8D5 +:104DE0003BCD7414967454C12AB89DCCE357EE1190 +:104DF000726D9A5A3EAB1EF07FE2A04AE75227F747 +:104E0000AAAC0DE1FEA912417D898579BCC32AD6E1 +:104E1000678BF5931E473ABB74305E07CA9F3D3AD5 +:104E20007E355459FE8B7F1FFB18A4C77FF1CE251A +:104E3000FF8AF95FBE5DF4EF6C70FDDA7D7FBD1512 +:104E4000E5D7897D76BA8F7B62DFAF8B5663FE57DD +:104E5000761FCEF3C45A3B9D9F86F7B9685F3F51DA +:104E6000C8F5C196E7CF8CED2379CCEFBDFFD30811 +:104E70007EEE7272EF7FFD1EDFD13DB9D74EEFE8B7 +:104E8000AE12F6D8AA5F2545F032E689E7CF905DED +:104E9000F775C1B3529C6F9E70B17A8A17D2FA8BA4 +:104EA00070FC95FBAEA67B102B76EFB7E17D94DA14 +:104EB0007FFB622CCA9D13CF707D02F4DDEDF8FB01 +:104EC00034BFF887830F5B61FD3E451D308FB159BC +:104ED000114700CF77CC78817E3F5D8D70FC5B0AF7 +:104EE000C5FD005E1A505E26C2C76BFF47F171C256 +:104EF000DA3B3D1FC63FF1B4320EE57E142F0AADFA +:104F0000F3F2BD2E8A7B02F8F9F77D67C6A2DD7D3C +:104F10002178FF3282C763FFFF026F92F7E2E0FD64 +:104F20007F39E3CF6B008000000000001F8B08007A +:104F300000000000000BD57D0B7C54C5F5F0DCBDF6 +:104F4000F7EE6E92DD64F3249124ECE61D48C21264 +:104F5000200488BA101EB110D810C040822EAF8035 +:104F600018484054FAD77EBB1090D4C6125E8A2DE2 +:104F7000B50BD2CADF471B1495B6801BB016EA8367 +:104F8000D86AD5AA101551914204AD6BB5E59B7353 +:104F900066267BEF9208D4F6F7FBBEE507C3BCCFCD +:104FA0009C39AF39F3B8172FD2DFF5849CF1124248 +:104FB0007209B9C8E3E1E199A7DF2DB98B166978C9 +:104FC000E6EDA29FD2F0CC336FE5FC0EE2CFBE91AE +:104FD000FE360D971989A7DD42C8392BA979B28011 +:104FE0002628DDE952024D3F786DFCBD0E4296EE5B +:104FF000ED30CEA7F91B07D8094924A4FCB97F16C8 +:105000007541F9273B8CA490C60F7E7513A1E5CF9F +:105010001D34119304E1B37760FC57562781F81AC9 +:10502000938B0C23C477D0EACF86781AA969A7FDA1 +:10503000341FF8B2A80BFA236B09194E48BEDD885D +:10504000E1F9FD5F1F87FECFEF37D909EDBFF160B2 +:105050001481FA8DBF8DF0637B07BE2CF15834E3C9 +:10506000FB2F8FFF9CDA39A13FEDFFDC1E69A8CF33 +:10507000AE1DBF84E36AD86FF59B25C4034B3FF890 +:105080006511B1E0B817FB0BFA1EEF44186FE2FF91 +:105090007BE3BDFC7C1FE5F36DB599003F07FE99EE +:1050A0004EAE62DCF5FF9F8E9B5230A6AB06A77911 +:1050B00018856F76E22E2B31D0F1115201ED12E2FC +:1050C0003C62A7EDCD706516DF4BF0D74992089989 +:1050D00042CB12DAE446BB84F59B89A102F032256B +:1050E000A17E3289A6A1EBBECFE422286E70015EBC +:1050F0003B134A7F792FD421CB092921E476336BE6 +:105100006CAA4B0E9868F966D707A9668AA7E6527B +:1051100093537260FA7B903EC3F3436C67866BD205 +:1051200027A408DA3F5223D1F4A9A52612E06D5C2A +:10513000A47F67132309E4F138AD7F638D3E7F269A +:10514000D999A8D0F6672E56899FC23123ACFC723C +:10515000BB0DE7F146D2B4CE66F9B7F06206BC9853 +:105160002416390878191EC2CBA578E07864C52FBB +:10517000C19BC9B3BE1343A2F8BA189CD245ACB7C1 +:105180004287BF70BCC1AC2825500FBA0CE1D7E4F0 +:10519000925D11D1BAF670DC3DF8E4F8BE5ABC86D7 +:1051A000CFCFE5F0BC05F09C78299E43619DEDD4FE +:1051B000203A58E22117A3081B05E0C9CCE86DBCD2 +:1051C0006C417E3AB64BF203AE8F95CE6F1D02F165 +:1051D000C72527E47F51369498E9B85F51C93E2925 +:1051E00086D671B9ECB612688FD5974AFFF0954410 +:1051F000E18C293584E0A27F635D91BA71C557C403 +:10520000E9E289EE6B74E5FBD564E8F2533C037583 +:10521000F9FD1717EBE2694DA374E507AC1AAB8BE8 +:105220003B7CDFD395CF6C99A68B67B7CDD695CF56 +:10523000DD364F979FEF5FA2CB1FB47B852E5ED8E4 +:10524000FE3FBAF283F7ADD1E50F09DCABCB1F7A95 +:1052500064932E3EBCF327BAF223DEDCA9CB1FD920 +:10526000F5A82E7FF4C74FEAE2D776FF5657FEFA2D +:10527000E0215D7C0C795157BEDCFC675D7CBCEDA8 +:105280006D5DF989C91FE8F26FB07FAACB17F33FB4 +:1052900029EF822E9D7229F1517A58C29248A5F3C6 +:1052A0006B5D3B0A7153E4134AB54D189A491B864E +:1052B00091A41D430B655B085F2CF2243B805E1FAD +:1052C000F2DD03C4F5CAC82FD341AE1F2BAB8EF15C +:1052D000205DBB08D0ED54F8AF9D86668B4F06FE6F +:1052E00033135F443121D141990486523A0C4A1854 +:1052F000DA825124104FE9301881615C301ED3E30B +:1053000083B1182604FB637A623005C3A460268645 +:10531000FD820E0C938383304C09E663784D702830 +:10532000D6EB1F1C82616A7034A6A7054762981EDF +:105330002CC7F401C13118DA83933074046FC03084 +:1053400023588DE53283551866056B313D3B380B8C +:10535000C39CE07C0C73837331CC0BDE8A617EF0DE +:10536000160C07066FC37A8382CB312C08DE85E9E1 +:1053700085C1EF6358146CC67070703586CEE08FAF +:10538000B0DC90E00F312C0E6EC6F4A1C18D180E6A +:105390000BFE14D387071FC4B024F8308623823B4A +:1053A000302C0D3E86E1C8E0FF62382AF814D61B87 +:1053B0001DDC836159F077987E6DF037185E173CDD +:1053C0008CE9D7073B3074055FC4F431C1A3188E54 +:1053D0000DFE19D3CB83AF62382EF836A68F0FBEE1 +:1053E00085E184E007184E0CBE876145F0530C6FD1 +:1053F000087E82E1F78217B0DEA4E067184E0E7EC9 +:105400008DE995C1AF3014FA9D94A9677AE47106CD +:10541000FCDB23FF0C1769482C7174507DDB0742BD +:105420006E6E8C8A46B938E56E26171F883AFB3CAB +:10543000CAC991263BD349DB901EEB38DDAF837F91 +:105440005208E918F9512AD831F78CF9E09DDBA808 +:105450007EF22D37915FB0226172F71B4B97856505 +:10546000D868FA1C4ED7C74A0F27827D744F7157F0 +:10547000839BB6739FA3AB0EC2750EA6FFEEE661CB +:10548000B3C380E17B454CFED72DCF8EF1805E4CBF +:10549000B8B2F11DE27A43941F91C3E396EE74779C +:1054A000E195B773A5E5BE8C882E22547EAC32B34D +:1054B000F0CEC8E89D107E1991EE073DBDC8E17998 +:1054C00010F8DF379620DE7DC7ADFE66C473D3606B +:1054D00077E155B5B3D331FC3FD2CE6357D20E51ED +:1054E0005C4A259DBF5A3E7FEFA8EE9AB9B47C571F +:1054F0009AC1B98626D5FA164D063D3E5EAE63E9E1 +:10550000A98A136D09B90EE5DA3C6853833F5383CA +:10551000FA7E9746BE9A6C7B5542E9B87625B52748 +:105520008A2ECDA7BF6885D2596DAA81807D4A4356 +:105530002C574B94F7BB841CA6E9AB291DC238DE5F +:105540005E4DE9D911EACFD330F11318AF87B4A279 +:10555000DDE1817A1AFB62D53BABD73EAFE9EF259F +:10556000873501F8898C20232ECA21BAAEE57DAD9E +:105570006F909D010ACF85D76427C40F271A09D8D9 +:10558000CF5D4B4DD82F6949443E793BF199343B6F +:10559000A5D72FBDBEB5CFAB84CCA572DB45F9FA3C +:1055A000F0D23B93812FD6AFDBA3122BE091DAB779 +:1055B000562D3DF991EEBBD288D15E08F85DAE2044 +:1055C000DDE79154B417F93CA8067B7B808E97A445 +:1055D0009B9DBFA071D9C0EC7AD1CE940C03CE9F15 +:1055E000084F188096E9AC2E93FCBFA073B2DED8AA +:1055F00094175700EDB07A34A701F0B7A035370300 +:10560000ECCD0A859895629DFD1709F8A20A8F18BE +:1056100034F662B87DF80F472CC24FE988B8E9B874 +:105620003E90E8FA87CB0149C09F897465ACA2F926 +:10563000A60433B333DBAA6E8579A2702E16E56516 +:10564000DA4F2DD00F9D87DABBA35CF9D1D0075B71 +:105650003F503AF17569F4B02A313A264BE9F81C0B +:10566000A1F1985A4D19F73A34FD43394A6F37671B +:10567000B0763E90385E56F37A0A6BC7D31AEB8742 +:105680007AA60405E153D35C37B9295C261F85133C +:10569000D6294AF7ED40EFF37DB104EC79CF5A6992 +:1056A00002C83553EBEAE5904FF147142A3A4C0A09 +:1056B000518C148F73896D4232C0D72A39B9BC0C12 +:1056C0008D0FE8BF55C2F16567481C7FAE9B9213F2 +:1056D000A07D13B9D78EF480FDAFFB81D5C5E093D3 +:1056E00076801D21E6BB96F75BDBF6EC9D12D23986 +:1056F00071011E6B79FF37CBA409E2E178AB05BBE2 +:1057000085E2D7CDF141AB1D7F63D8A5FD12C569F8 +:10571000AC2A0CC1DD33FF775B5D1145A171AF93FE +:10572000A87C007CDE67C2719A383C020FB333E27A +:10573000187DAF9E983EAF177880B689864EC2E935 +:105740004B35F0794E27385F82EE05DDDC90C1F4F1 +:10575000860817F7E05309F52343BA4D47A713B559 +:10576000F9B4DD89A9CB09F01DF2CD282ADF3286F4 +:1057700055F968FB1F3A783D7B531EC849B9877FAE +:10578000880BF982D3ABC96276E5C33A87E3351C4F +:105790002FE17AA4B4074EE2319670796B80743BA6 +:1057A000A6D7B69A10CF627EDF97985F81769B8EE0 +:1057B000F362E378E3F494C8DB4BE4F5D7D1A804B3 +:1057C000727EA309F95FCC47387E85DC3F0EEB562D +:1057D000DAFE039044E5D9E1984609E6EB4E3E9E99 +:1057E00024A02F9ADF61BA599AAB913BF771799354 +:1057F000C8F3C3C7791FAFEFE2F9E41B9A5E82EBEF +:10580000649C6F51AE85B723E213AC0637F853267C +:105810003D40E9B897763FCF64ED4EDAD0FEF99F70 +:10582000803E6A8D2817EF5FCDE44FA85D4EE759A3 +:105830003CACBB32FD7E7C951C01FAAC2D78FAB1F4 +:105840005FD3F6E3DC4694FF71A4EBB15FD3792517 +:105850003504FB3B1C730EE3D1D3338A651A6F7397 +:105860001523DE5666B2F910ED6E2D3554F82D5025 +:105870007E6ACA023A9E2D55F5D2020D9C494A8C89 +:10588000CB8FF89D9AB298E72FA6F907A79D1A0427 +:105890007AA5A3D6B95FA57024DA890DA63CDE4EA1 +:1058A000B0BCD94E22A03CF4BB58D35EFC7496DF4A +:1058B000513D216521ADD7367DCD48A8D7E61A9B4D +:1058C000B23001F2D79402BCA2BC7932B9219BA6B6 +:1058D000C752BD2BD1F4B8D4E2BB4134C629DE2374 +:1058E0000EC06F197166DB01BE0192D63FB58BCF3A +:1058F00083AB82F6077ACECEFC1F223F358BF16553 +:105900007516F3731E8A1A707736C8E9E9061BA864 +:105910005BE47B68BFC288FCBD59EA1A0AFC542EBE +:10592000DBCA20F46731BA10FA50E5B25435B776C5 +:10593000C27A490DF1B119FD1F5C5F6139CA175B6D +:1059400084BC4F61F243531EE9FF8891F5BF31D10A +:10595000EE5F43CBBE1EE24BD41FD80E8543AD2174 +:10596000C88F1B457BB308F215513C12E83521FF67 +:10597000D51A37EA8BAD9C9F287BA700BF0A7C7C99 +:10598000C2DBDF9AEA99E5467F9C4D82FCCD924DC1 +:1059900002FDDCC5F363B93CA78C2EA17DC6CB0903 +:1059A0003D176337DA416FB7F4C80506AF918F9B97 +:1059B000EA2B02E58DD30DA8CF8C656ED4B7C671E6 +:1059C000BEE5106EE27A5A4D5674F2588CE39F1978 +:1059D0000EC4FBFDB38C38DE8D2936BF2CB1F140EF +:1059E000FFEA38A301F4A58DEB938D69B6594C6F8E +:1059F0003411C0C766019742103F8846CDBCA81538 +:105A0000466607B8BA50EEAAA53ED4276ACD3377CA +:105A100082BF6973685C2E238C4B62F2D138D988BF +:105A20007A53E6FC651CF70CCAC7F07108BDD23387 +:105A30007F61F37E89FC0F8B6FA832A6407FB13067 +:105A4000DE4C4C6EEDF19BD9C1FECC7D6B01C5CB1C +:105A500096340331D931DF424A42F449D6263F9F7A +:105A60009584A61E965F3FFDD01CC05B4BA911FD1F +:105A7000BEAA7B02FAC3EE97BAAC1920A7AB0C36CC +:105A8000D013D652E6E7B30E5B9E03E18FA87D38B4 +:105A900086967F373303E763C38C35E60CDAAF6550 +:105AA0008801E5D116F7FB56E0C7E7B83EBCF673B0 +:105AB0007F7334F0F764FB10E02F913EF264408E68 +:105AC000A1E97115B662481F5DD94617DD10F721AF +:105AD000FE378CF94BE5080A477481827EB2FBA53C +:105AE000408B0C70DD4070BD17372E602B67F201C4 +:105AF000FB758D0B548C80F84A19E545ECB840E7EE +:105B0000145ADE754691A0FD2D50E81AC4840F7C0E +:105B10002ACD2A8FFB1EAA5A5C06780D9841871D54 +:105B20007E78679542F58D4562F953335FAFF21584 +:105B3000407E5B1DD01DC932D9806F018FE6389C35 +:105B4000475243C339944E8D34FC1EE085D28155B3 +:105B5000210103D56F86A8BA64C04765BCA709E8D0 +:105B6000B10248B018F3CDF1589EEB01B9CE09E56A +:105B70005AB9BF96F6EFD6CAADC39CBE1ECD14F27D +:105B800040EF57B51EAA4A81F6B78ED1EB1BCB303A +:105B9000A3CE5F1459A08F9BB3F47135551F3FC638 +:105BA000FB3B1C7391007C315C0EDCCFF941F4B3FC +:105BB0002493C955113E67B4AF047C3D1769253E57 +:105BC00009E284ADF3CE2ADC3E7696556BE4D03FF5 +:105BD00032D97E04E879987FA1DF8F074FDF077401 +:105BE00090E0CA2846987879A1CF12383CE17AF340 +:105BF000C75C7F0BBC87E7DFCBF1DEEC5D453EC8C1 +:105C00000EA5CBBCBD9237DDE5D604B0BFEDC55ABD +:105C1000BDE4E3F5DECF71F932B572F17084E4B022 +:105C20006ADB67FDDB2C1E970BE446DD34B463FAB8 +:105C3000D6F36B703CC2EE09CF3FCDDB735DC66E11 +:105C4000F939C7FF95DA2DA62C86C7CBD92D3FE7AA +:105C5000F8B65CA5DD522E775D7000DF0C3020DFDA +:105C6000AE4FCD90E66AE088E7FAF829D01189A016 +:105C700056141FF8F5158B82FE7D79BAC107EB6DBE +:105C8000B9CCF81EAC9FE59A7B3E033D6B3637A13D +:105C90008F3C49F2ECCD0478DA0C0AF04304177714 +:105CA000B2C58572A42F3E0987F7BBF209E53BB464 +:105CB000D38F3DFCAB8D202FFE8D71BC0CF4445A6C +:105CC000E938922E1D8790478F3EFC08B62FFC1BAB +:105CD0007DE13FDCAFF046A645EF57B84C7DE1379C +:105CE0009803BA06E0728E36001EE3F998DFA93CED +:105CF0006403BFC305A7829B15AD60FFD378EB2A71 +:105D0000D9EF43FE7645B835FC600ECAC4154F6521 +:105D100024F821C0CF9A69C776CDF636942BC66495 +:105D200026F70FC76CC0D0DC63DF0FD0D18BA0EF9C +:105D3000D8BEF89EE7FF3C93D15385C95383764084 +:105D40005DB18EFFD684D9F7825E857E3A187CF2EB +:105D5000C5223A9EA41AA6B796707845F9A41A6788 +:105D600019FACDBFA1D8D4E0654225E5B75EE012AF +:105D7000767F4B06C3A7802BBCDC8361F08BF6A338 +:105D800045FB237B6F5FF0A7A8773C38EA73E03BC5 +:105D9000D0BDA8EF53DFF7A9A06F4BE9D4DBC1BE9C +:105DA00061F671F98015E6C802C6974B2CC08726AC +:105DB0001D3F5E27F72E37F6703BB8E37AFBFE6E89 +:105DC0005807A412A764077BC43D06D60544894141 +:105DD0003942EDE464801FFDB776D4877658AF3D35 +:105DE000CEEB6FE9F1CF083B3207FD3F1AFBC8A8A5 +:105DF000F5FBF4D86B446F1F8DCA127E1F3701FB71 +:105E000034DC0E157697B04385FDDC6327737B1475 +:105E10007E6A49C86E354E66E5845DBE7E24F1AF6C +:105E2000A1FDAD97484416E8B31906E64F515CB89A +:105E3000AE892E4B7282DF42B46B2C65F6F77FDAA7 +:105E40001EDC24313B3086D3652C710ABB3005F84B +:105E50004EBB7ED3AEEF406F80DD9BC861E8A86D7E +:105E60002276F0834CB74BA0A7E2F9BA29EE1BF9D2 +:105E7000E8F5945EB64E1F9B0DE33D087C01F6D914 +:105E8000748304E56D2E5B1993AFACBF83FF884C20 +:105E9000A9D7D0C975E5A706813DBAC961B4015D2E +:105EA000B470FF98EFAB485CA7946796A4D835749C +:105EB000FC00D7035B6B3C2EF063B53892A4799A53 +:105EC000F676713DB5A1AA1EEDE043515E94133DF7 +:105ED000EBB5B5CCAF184EA7EB783D13C7C79619F5 +:105EE000860833AE4FC74AB04E5D971581C86853D8 +:105EF0006224F49FB9D83A75F3785B19F04BF4DA61 +:105F0000E568355239645C44F3D76645627BD13627 +:105F1000B11E6272AFEDDAA41DF76AFCBE1B04BCB1 +:105F200012C179B95F1574EEC675EDFD8959C5408A +:105F3000271BAECD7910F0A4FE9F42B43344BD7749 +:105F40001D9E18D06B27C6CE7C7301017F8BD30EAC +:105F5000BEEC18CEDFEFDA8802FE9477A9F05D2D53 +:105F600041FB6E379CEB51AFFBFBD30BECBDD45721 +:105F7000697D47A8FEE30EF78359B49FCD9533D1D1 +:105F80003EDD5AE34C9947DB33DA8D489A2D0EB645 +:105F9000CE8A9D9CE39735E35AC6E76957166B672F +:105FA00043D53DC9301F4D598C0EDB802ED16FCDAE +:105FB000D6892D8E929479D04E0D933BC2AEDB5292 +:105FC00065443FE28659393B611D07F3097E8A65C6 +:105FD0007CFC4DBCFDADAEF3C90B011EC989ED8A39 +:105FE0007E04FDB7D1752AF201CCAF86BEB7F2A907 +:105FF00039141583E330D99376C038EC1C7E0A0F30 +:106000002B4F6C7777037C6EE370980FE0938508D5 +:10601000DFDF112F1DB51EA4F724CE1F719339BDEC +:10602000D518FDD90E2D9F4CCB423EA17CE0413EC0 +:1060300029C67A02DEEBBE1ED501FB089BD41827C9 +:10604000B082F02B5CA91D7502398D90D7B3DC9D11 +:10605000306F54DE14E13AFCEE78AC5F67E8C86E4E +:10606000A2FDD5AD0960185EBF82527127AE879D33 +:106070004940E7A46914EAF3DBB84CB9D03A3C06CE +:10608000D65F9E68564E523C23205EF1AFF9238CBA +:10609000A043FE6A2560B7537BE0E66934FD66895C +:1060A000C133A7F9860A58EF7ECCEDC2635E3AC1D0 +:1060B000B984BCEA35131765CE3F7B6D187FDD9B35 +:1060C0008CF137BC760CDFF2E66178D2C8F4ED9C37 +:1060D0007872B39BCD8711E4C959AE1FCE0A7B936A +:1060E000AC4CA69A84C2F3E7E1061B4CE9AA69E32B +:1060F000D308E952999C9FEA9241D7F4C8D79AE90C +:1061000051684488F85CF7685D3EC91B1A8AE33E13 +:1061100026417A9CD7E2D801FA67D6E4785DF999EE +:106120002DFD7571359BCD6B5545A62E7D76DD20F9 +:106130005D7C6E90F2D15090B5A5B88FB392EF4FC1 +:106140001252CAF06F63656F5B3E31E64EDAFF6D47 +:10615000AFCA981F3E0F278D4CCEF8FE22F37D026A +:106160000FCECB176FA611DC2FF9978CFB40E451B3 +:10617000E65F9DBF4D223E3A04D2EDC373622B779A +:10618000989C506EC1369978001E30DA687FA75F00 +:10619000CDDE792FCEABEF2128D74DCBEDA4591F03 +:1061A000ABC467A3A439BF8BB72315F707FC7F1CCB +:1061B0004B5CB1D494FA24E29D9C3B299C7FAB6C50 +:1061C000AB37804C915F4A34D0FA7F7B5226C06750 +:1061D000B72C7FBDC446F1BAE485F6BF94D2F64E23 +:1061E000B6C9C446FBFB74B76907F3DBB8FA811E76 +:1061F0000E8DD38FE7D60EA6BB0BB2295E4FD7FB11 +:106200008BF0BCCDDD8948DF97E2838E1FF409D087 +:10621000256DCF7387D50CE727E6ABCEA421484781 +:106220006C3DE523C35208B5794EB6AA1520D74F69 +:106230002A04CF359D6CCBDCE143389E44BA9AA743 +:10624000D88DDAFEE6B5CAA807E864B07D878DB2BE +:1062500087DACEF4D7C6DA6D913CA4DFA5F3480DFA +:10626000E57E77D2F6D7BFA2E2BECC4DD0472FFC59 +:106270007D96F28EC7A4593F1F90D1AE23C3EC1B6D +:10628000CA605F7C5739CA23E261ED7F1E27E8862A +:106290009DDF3BEF2204F667BED865F5C338CE1804 +:1062A0009E3CAED07918A6786666D3212C9EE27B00 +:1062B000081C1FE7F67FF0E3D1B4DCE9275427B2CE +:1062C0003F71D5640F67E3023E9BA7703DB68AED30 +:1062D0001B2E793402F9E0EF69037768E57E489E6A +:1062E000AC6676162F4F7FC9865208024912C5A3A5 +:1062F000C74E26D80A60FFA09D9F97F263793B00A6 +:1063000049F1676BA021C5DB07C3ADF792C174BE2D +:10631000C2F60D3FE0FCBC2C5BD2C9BD5F6733BD4C +:10632000305FECBF1C64FA9E4EF06BE0D75A4C18FD +:106330007E1AF93EEBE226B62FECCD66FE98C6A695 +:10634000891F09FB0EE6FF564A87C00FF5B6D895A0 +:106350009D34DEB03BC2E9A7F50F70BEA66DD90033 +:10636000EFB7F02A8B88BFB598F6BB74B7EA0CE09C +:10637000B0D493608F992946417E9CA6865C691CA7 +:10638000B42761FB0D6D921FCE93C594351901DEC4 +:106390005BF74A241EE98D9DBB5BC8DB5DA2DC87F1 +:1063A000E7E696E449B8AF4C76D376357269693B37 +:1063B000EB47C89346A29CD4EE972CE47EE785A4D5 +:1063C000C73E64E7EEDA54DC573113F36A68C71D41 +:1063D0006545B896B4B1FDE910FC32B948715AEF81 +:1063E000F1BF3005F12039FDE45238C6272CC771C2 +:1063F0002C8171382E852B7C5C570A67BDB303E96D +:10640000251C5ECD3CD8F5F3D0790FD055BD8FD18A +:1064100041FD7E8A67DAFE874D2A31C6203D7466CB +:10642000955C4A0F8B887B0AC8C7455B64127084F1 +:10643000E843D0C52D7BFC46D0C79F92B6680BE5DC +:10644000A3866D7B668EA4F5176D7FD508FABC2EEA +:106450002E906DA04B8C04DF894D15D786E8F5167C +:10646000BF1E0FB7EED6C7FF537822FC9C24D6A3DD +:10647000F859B84BC67589A69C6EFF8CC8AD4633DB +:10648000C807BFE40479BB98AE47E28BAF1E5E81BC +:10649000BFFF36DCE1FE8ABF655B134EC1794A2738 +:1064A0007182BFE27CD38C980064727BA72F7F45FA +:1064B000CFF8C3F4ED3B2AB52FE83C7EAEB862E2DC +:1064C00050AE87EBDF11FD40FF08795DCFF5A7687F +:1064D0007F21E84D1A3FB5EDA968B00B3FDCF254BF +:1064E00012848B402F1584F4D21DF30369A0C7EFEB +:1064F0007836C209245AF7335300CE979ED96BF2EF +:10650000935EE4A927DD13950374CEF5EB69E9D515 +:10651000121BE8532E5F2F67177ED771CE83710E43 +:106520000DB53B9F8FF3FD1636BE0F5AD978175C19 +:10653000324E6A57C0381F363941B47F1C1140FDB6 +:10654000FFF11E99346BEC07612F88F17D41DA1E53 +:106550000AD0FCA52BDE38AE507AB825A7B308F8D0 +:10656000B16EA309ED835B9EB6229E4E4B63FA018A +:106570003F9E6933B92C80BFDD11981E82A3C75E90 +:1065800028CED1DA0B5788B765FCDCE4B2FD7F7802 +:1065900013EC57C945AB527897992D01A4F77DFAB2 +:1065A000736E929D99EA26E2349B617E52899D9D8D +:1065B000530A3FFFABB84ED1B9A8877A14FEBF6724 +:1065C0007F76D30AE483EE1CD0B78D9101B51FD836 +:1065D000597B24E74EE0B79563A2C175A8F2F39BFF +:1065E000EE1CA6E724978BAC2AC6F3972492F65BA1 +:1065F0009D6367E9761BBAB2C876DABF350477784F +:106600003A9CD38673D6C462E8755DBC86F7B354F2 +:1066100036A0DDDD6064F6F739EE8FF1F07C4F0EC9 +:106620005B2FD5E788F30ADD0FC1BCBF7AC06403D6 +:10663000FDD96964E7565F555DDB7E40E7C790EBA7 +:106640005908F3E13658E600BFAF892A52417EAEC1 +:106650008DAD1F00E14DA45385799D525A6587F594 +:10666000D0F124B35346B94527A42474CEEB15D5F5 +:10667000D202ED1E07DCD171D5F273D0C7E9727D6D +:1066800018EDFF788AD1DF4CEBF90E98D09E581F99 +:10669000C9CEA9928418F49FCEE6726ACE38BAA207 +:1066A000A734533B6EBD1B42DA9E8F507CD599BBFD +:1066B000D70DA1FDAC36307DBD3A8EB0F3676BBB14 +:1066C0008603FE0693B53698473AFABD17E3BF8DA9 +:1066D0009E14724AD0091D57039C671B4518A1954B +:1066E000227E75F10623CBDF9633AE7A4B2A8DC31B +:1066F000DA03E8E106D9BFD301E76F0D389F53698C +:10670000BB406F0498A62474EE7E1AFD5B46C73921 +:106710004D213E431C862D70E472462909C4D0F1F8 +:10672000058E1209E081A525C07763C010C8A57841 +:106730009BAA043A007F6FCA641D98FED388435D0C +:1067400041E7A361CD95C1FB64CE5406AFC1C0E063 +:10675000FDBEE48775C24D0A795EA6F034C6D97DC8 +:1067600098BE9CD1354D6F892E86F212D2552D15CB +:106770001240CF30BF48A750B824344FB4BC399230 +:10678000A6B7E738D879130EEF368F2109FC024BF4 +:10679000F9FAF02633596B85FA8A331AF671875065 +:1067A00030B5F3D46814EBC876E334CA9FB752FE11 +:1067B0007650BCECCF61F6E4AD82BF1FD7F3F77122 +:1067C000C15F605F527CD6F2B02FFE789BF3C7DBCF +:1067D0009C3FFE9023D6A9ED6857DFCAE54A5FFDCE +:1067E0002D359100E2EB8009E75DF43B95876FE57D +:1067F00030BB55C021E8BC9E507B321342A67F0DB2 +:106800007432417F2E6E7BD8084858BC5D63B7E177 +:10681000BF6D4690534B7685A76BF4B7AC93637806 +:106820008E5732762F00F8A4EB229CC017B5C6769F +:10683000F42B4820DFF242F22DBC9EDAC6D6956AD0 +:106840002BB3CB847FCE44ED4E90F37353BB0B41FF +:106850002ECC4B6862E702B8FD5ECFE9C004F606B5 +:106860009DAF7AB0CF603F1EEC33C0DF3606BFC2AB +:10687000EDEDF96D7A3B656E4BF8F898BDA2F6B474 +:10688000AB9CD4DA1BE2BCC609637721E80D8DFF0F +:1068900015ED961306360E5F123BA7411258BEC285 +:1068A000ED53C1FF7FCB5175F741BE20DF28300F7C +:1068B00022DF3D8E90EB8AC13F21F9811EA6BAC628 +:1068C0001C61E1EA00DE63A17659FF3876EEBE0C6A +:1068D000CBB1FB29EE0AC91785F75CD4D3DA711D59 +:1068E00083FF8CBCD45E8ACFE5F652D8FE0E298B8E +:1068F000EF551F86DB4BBEB1240FFD47209F991F2C +:1069000019ED8A153DE7A92D7920AFEBA44827ACF6 +:106910001FC4F9DE7778789EDADF402F75EF5AF1E1 +:10692000DE58F8B9DF7363AC3E030DE7C4DC310514 +:10693000E6B32EDAA84028CE03BFC3C32F0D5DD81F +:10694000FFCDA4EB53D8479A98D06905F48BF3D7C1 +:10695000F78C19BA8DDA84E4BADC9F579BD3703F69 +:1069600094EFEBEFFA33F8E7A6C3BE28C67F51EDEC +:10697000A2EBCB73BFEFBEC94C55D78C477E51AD50 +:1069800050BC9DDBDAFD10C4973EF2EB6AD8E73FBE +:10699000775F777A04C69F61F9AB797BBE67AAA15E +:1069A000BD730FB27839CDF7A15C0964031EA6341C +:1069B0004538C16F3296CB0DE177AB331CC29014D2 +:1069C000D072C32E5FEECE5CF7D81C8A7FD97A12C4 +:1069D000CF4D78F35D63417FBAB23D5372613FBDE5 +:1069E0004AF219E938C86BFE1CAED771BDBE9EFBDA +:1069F000E3C57C8EE572488437E7B17605DE687BB7 +:106A000035B989FF7E7B7FCBD5B727EC9C855C0EA3 +:106A1000D0F6177C97F6855C11EDFD16E01FAE836E +:106A2000BFE9BBB45F9CAF875FD8BF621C856023A2 +:106A300051BADB3B90203F087844FA3A29907823FA +:106A4000F8DF8ECAB8AFB52EF19402FB92C4CDF632 +:106A5000456F8B607CB23997E981753F70A23FCF5B +:106A6000F7B28CFBDEEB126726833DF6E9138BE26F +:106A7000D1FFC5EDD44F3BDE32DAE93896F1FDD1D6 +:106A800046BE3FBA6C6F8771026DBF9186E51AFFF3 +:106A90004843CF39AC2E659A3504C7E65C7E2E8D0F +:106AA000FB67FA3A47B0235712E75171DC457C7C0B +:106AB0008D05AE9FE46AE641A437ABFA731E223C13 +:106AC000C5DB59954B74ED0D96D8FCD545327D3913 +:106AD000BFC46AB60F0E9DA758B4CD81FB1C8BB204 +:106AE000C7EECED5E059D40BF9A9BB7BF753EF67BE +:106AF0007E6AD19F93C35917D7B9921A03E4D4235E +:106B0000EF6C06B930E9012117A88830C37EAB8845 +:106B10005FA81E57C6FCA5103FFAC899CDB09F7E4E +:106B20002492AD9BE68C288C04B9D4E58832D8A891 +:106B3000BC7A396BEE298073CE886B2740FA1893A4 +:106B400035672EDBF741FA7B39CB7D08F006E5C1CE +:106B50009F55B75CAD073978DE17817E504F519451 +:106B600007FC88470C641CE87181BF009FAF53B9D4 +:106B70008CDE44FFA25FDA0FCA53CFA6FEE8877B04 +:106B80003D6BCC87B9C343FDBE9EE5F913C025FA22 +:106B9000A5C32C82F4BEFA0F9FBF63BCFF0F79FF21 +:106BA000EE324A7F1A7D3A6D5C942E3E7D723C71C6 +:106BB00069FDE1D3FBEBE2357599BAF2B3170CD25C +:106BC000E5579A3A8769ED07316F57BA5E9B40F9EE +:106BD0003E86E2A5B38314EE053E745871DFF5D608 +:106BE000961BD0BF1E13ACC5B0A18DC629FF2C0DBE +:106BF00056637C59300AE347223B27803E3FF24CE4 +:106C00002CAE4F8FC9819C9F423B262BF27365FFB0 +:106C1000396B40FF1C89F415DC46E1ACFCF5C40A75 +:106C200098EF657B25F40357CAE4881407FC1981A3 +:106C3000ED55CA7F1AB69CA64F2A677AAD12742EFC +:106C4000CD6FE67ECDBEF8C69AC7F846ED62708F6E +:106C50000F56617B223F3E2F43772E414DDCA5A08E +:106C6000FDCBC7A37649187E2F3808C3C6BD550A89 +:106C70009CC7FD63DEC309A03F68790BEA7D2197BD +:106C800004DF348D882196BEF16CE2F2A796DF1303 +:106C9000710C74E5E725C2FDAC2E05FC48C462B456 +:106CA000C13A724AE990E47A4D3BCD1DB3881DEF9D +:106CB0005110A30BEC7C1A6AE595A78F731A83F326 +:106CC0000C5C6E307925E438313F889B8437097F2E +:106CD0003AA78FD43CFDB9A64E90A1307F4FB3FDAB +:106CE0008E51033D6301DECE31A4E649941F9DE938 +:106CF000B03EF84FC14FE7D70CF31FADB07EA34BAA +:106D00001D3BD13EC933E8ECBFCB8D63181FC731A3 +:106D100099AC02FA3876FDF59D2EDA5EC75D4387A1 +:106D2000825C24B6EE6FF0FEFDC1D199B0BEBE31DB +:106D3000CFC8CFB111B447C57A81963BF5BB04B833 +:106D40009F9F6F837D86C6E8EE1C90B74F14786EC8 +:106D5000043C1C7BEEABE377C1F9478B959D8FDC40 +:106D6000FFE5A99F423C68C1F89DB9AE9ABCE17DA0 +:106D7000C379A5FC184E679E16C67F1ECE87733951 +:106D8000DDCEE37C3857A17A91C27DF34B32F1D14D +:106D9000F1CEBB5B2ADC0B7E0ABB15CF730B3E1416 +:106DA000FCA6025D0E05FA6474D9108CE5FCEDE0DA +:106DB000ED323EA884752B6DA772502CAEE397057B +:106DC000E3B19CE057C1A7770CF4AC8771573653F9 +:106DD000FE867B596B528601BF5C9E4EBE52E03EE2 +:106DE000945A26A94027261A966BF8DBCDE77DEE4C +:106DF00002B66E984BE9437B3FA6F52AE9FDFBBC42 +:106E0000FC3C4B20DB00EB296A47C279F0BA443BDB +:106E1000CAB1153FA4118A82152AD3AB2B1E94D078 +:106E2000DF08FA16ECED92379BD06F2DFA9F152CE8 +:106E300022768AA7EA6016868BB23D3F013CCC0DD4 +:106E4000CEE4782CEA759FF2F3A6F5E8E7FBDC6F59 +:106E50007212F4D3E8FD89C35DCE7E60E7A82FA946 +:106E600064871DFC801E19F8E3E33462DB2C317F5C +:106E700022F817853F50EC3F0ABFA029C1A0DB2FA5 +:106E8000FD42694B07FBFF12FFE018667F9DD9A505 +:106E90003A816E1A3AFE5462807D17870BFD840793 +:106EA000D33D7B613C4BA6F97FA5821FBFEDA9BFF7 +:106EB00094DA43F8AC1B4B26E1FAE49001E57F7BC2 +:106EC000AB5CC1F6FF495495F6BE21B72B8E126616 +:106ED0008F083A5F12CC44FC087D23E4F7B3DE64EC +:106EE0005CE40A397E393D24E87BA9C2F4D8524AD1 +:106EF000F7306FE17C14D23F43905F08E517E08FD5 +:106F000090FE61FC11D23F9CFE6306A05F2C5C9E4C +:106F10000BFD34FA7F33F7FE96B6B3E4B1396EC099 +:106F2000C7F5832402F668C3938C0FC2F95DE86B42 +:106F3000810F819F3FF2F8897CD7D92BD313116839 +:106F4000E79A7C5504E52C0DB572560DB36B45FAE6 +:106F5000853CBD5D7B39BE798F9717700B383B8DB3 +:106F6000CCBE12F0BF4898FD21FA1935705A647EE4 +:106F700022D31BD07F4C3ED3D3FFA971F5A53F622E +:106F8000F2855CB832FDF14DD8F8C438C4B85EE281 +:106F9000E3BD52FD92957F65FA4596BA4FE1F9F748 +:106FA000031176C0C3B1E722B0BCCB1C837EF9F2DB +:106FB000E73EBAF053A0CF82EAAC7C58BFEE372947 +:106FC0004463EF09B8049C2F73B8A91ECACFD78CAD +:106FD00047A47F57BD24F8229C6FC3F9359C3F27F7 +:106FE000FD88DA8930CE67253C5710B20B09EAA933 +:106FF0002319694E38732DF85B6327E2BC923C0974 +:10700000CF055D6A7FBD31CC4EEB5F18661D027AFD +:10701000E1B0DCBE799414E2E3B18F7DFDD45FC9A9 +:10702000A5FAEEF97C4F1DE047F0AFE0D3CBD3E5F6 +:107030006F54D4570D12DA35261A6AF595A70F7ECC +:107040009B9B7F75FC3695973F2633BAF6C518D1C2 +:107050001EBB1CDDDD96CFEE5FFD07E9EE36C0936B +:10706000A0BBBEECEF559CAF29DDADCAFF0EF6CF3D +:10707000B7CC2FEA49417F935E64744332ADFCDEA6 +:10708000ADEF71807F4C66D410BC4FCEE5F4A48B7D +:10709000EC7EAC87AFFF051DFF7CA0673BC029E6F7 +:1070A0001FD627B0EEB852BBB636A189801FCB439E +:1070B00043AD5C32897B0461F3BFE32AE77F436819 +:1070C000FEAF48DEECB94279A3B167F7C3F82F678A +:1070D000CF1217B35BC47C385566673A5F9661C6BA +:1070E000FA9C4F791BC3770FDE028AB00BE2C12EE8 +:1070F000A07472E0BBD0496579FBE7666AB2BE9DB9 +:107100007F7A3AF81767C25919F4437CBAC59505D6 +:10711000F28688FD16F453201F61FCCC6BE3607D82 +:10712000B99984F66368FEF8B2981EBF062C8144B4 +:10713000F9BFE67FF25A2BC2CDCE27114F97C2F688 +:1071400027797C188D5B35F1D2B0F876563E5AE936 +:1071500022DA733B40775231A313DDBB0CA47B4290 +:107160002CF837F74A3638A734BBEC9C11FC329523 +:10717000E55D2FF4A7E33D9B7F61BA85B2EA6C9091 +:107180008B14DE7FE57FBDC5A7F0FA49E8C7C29F33 +:10719000A95D72C970EEA454F267F4B23FFEAF7CF1 +:1071A000FDFA0A7E8ABE3E81736057531FF816EBC4 +:1071B0006760FD80E92AFABFB18C9D1B0D2F67190E +:1071C000C8F538BF9783ED53DC55B733FF4178F9E5 +:1071D000045EBED360580A97195207C66C355F4BE0 +:1071E000E79730FA481F183D03EF79C044878DF7C1 +:1071F000DBE0350CBC74BC767DFDC0B7E1CB7C49CF +:107200007D4E1F8BF5F432BEEC229EA31B5F46E938 +:1072100083B6B3CC1DD10AEB8ECA7241DF29335C31 +:1072200034AF3382E8FC7021FABE6606D0F7322212 +:10723000F253B7829E721B88EE9EDEF8FD524FFD20 +:107240003C05EF9F61FDD281FDB7027EE87C603E88 +:10725000C6956FA1F7F6B07859187F70FA46FE040C +:10726000794DF193DDCBBE79359FB7BFF1FB059D1D +:1072700063995DD999C1C2DB0632FF6F2DC7E37CEC +:1072800031CF911A3CA486E699FE02B0FED18C1B48 +:10729000F1342B818FDB3772C6642A273AE348A189 +:1072A00044E964E9A3C3B7AE453A712BB00FA2F825 +:1072B000466C7D89CAA1591C2FB73D5AFA3ADBA703 +:1072C000A056069DF7A5480074DEF74A3EB83FB9C0 +:1072D00014E6BD97715D3F506F87E27FF4F55DEA7C +:1072E000B7D41F7F29DDB9C2EA13384F7FE5F5F91E +:1072F000BC4C0E9BB78AB0791B1716AF1371BF4EEB +:107300007E09B9366BB1E39EFE700EEE7109253928 +:1073100095CF466908212D03CB675846027DDAD503 +:10732000FE34A775E0F8D7CDF9845481FC427A9DEC +:10733000B015E47535F037C627CE80FDA599A54D6B +:10734000EB9269F94D032BB6C2FB93B3D76E54E1B0 +:107350001EE9FD03BFB755A1EDCE1AF6EB17A03D10 +:10736000459AFCFA64E95BE8B32D6C1CDBC3E2BE12 +:10737000B0F25B2E23CFD786D5BF3B2CBF352CBEBA +:107380002D2CDE12CE1FB6094920EFD74A78AEF574 +:10739000727CB27BA0B00BDA87C17E5BFBC0595B0D +:1073A000D7D13A939A199D3FF9E82C21DF24ED3E7D +:1073B0006D6D02F1813E50FB904FBBFAA293BC7001 +:1073C000FD25F2DDC9907E9CF307F10D9C09F6D0F6 +:1073D000E11E39C4F8AD436670FDEED1817F598B53 +:1073E000F5D93A6513DF9710F75F605F654F2FF2AD +:1073F0007F7801B32B0F7FCDDE67F00D30A23F8B7E +:107400005A20DFC0FD82F7D3D8FD0251BE638071E0 +:1074100015E8910E933779A1463F1C1E90F40DBCE0 +:10742000EB72B81F7B57E1F05D43B1BEAF5176669A +:1074300013F0739CBA0FEE391F5C260F857C514FF9 +:107440006D60E795D58476EB420D7C871B8796D9D6 +:1074500035EBDE2FB8DFFDEDD43B6CA0AF3B06ACC7 +:10746000EC1C03F0F653105ED3577536A900EE6D91 +:10747000B27B5F27B95C381E9CDDD949CBADB3C068 +:10748000C5394867E35D973AD30CED3427B0F7244C +:1074900054EB1C9B51331E5782C2E07210B7D61EAC +:1074A000AF19C4DA1D3188D98387641B8E9BC261F2 +:1074B000037FFCCD5FD7BDD949FB51D34BECB09FC7 +:1074C000BE7D50267F47C85606FEA17299DF9FE019 +:1074D000E39A65E0EBC6B0778A4CB0CF5FA47B67D8 +:1074E00004DF65E879C725DAC8DF4DF8F677858CC3 +:1074F000831C086F97819DD342C215EF9DC8783FCA +:107500000CE53FD8D56A5CE85D21CD3B3CE3205DCE +:10751000E5F7BAD534B26C1AD259BB0A7C173F488A +:10752000ECCBB176C5FB2BB5FCFD9F9E7774FA19A9 +:107530008BF6D1F9EFB2189D405E225DF45FCBFB74 +:10754000E9EBBD1D014FE6A05876FFF9076C9FA936 +:107550002BDDEE67FEBDDEDFD7E94AA72ADE127A11 +:10756000B7651D3F0763B2B0F711447AD79AD17857 +:107570006F669DF0CF2FE5E7B4F9BB093DEF0D2510 +:10758000B077136A697D4791665D7295EFF15CEEA5 +:107590009E9CF02B08FA781AEEC02602DD27E1BD8A +:1075A0001F5F3F33D2FDC17FFCCF9BF03ECE8924CD +:1075B00033AE5B7AF8B45F7219DCE3E9688CBFBB69 +:1075C0005BC3276F3754DBE617403D0BBEB3DBD1FF +:1075D000EFE453C760DDE38DD2F1E575DE4F3F7D0B +:1075E00016FCDD5F47E23DB883FF186507BFAC6C52 +:1075F000E8423941FE1189F45E1E53936CD7F0C7FF +:10760000544E0F8F3B5C958328BC7212E5034B48A8 +:107610009EC949333DC0B7CD69C88E643DDFEF6D6B +:1076200096F4F7B6B70F62F272FB208987FC1D3A19 +:10763000C58EEFD089FB9D1D0394555A3BB58197AC +:107640006FE0F53B06DC81F811F8EA303DF772098E +:10765000C8E9A4E94E60C3EB40EEC138BD51780FD4 +:10766000B4A39F19E7BFA39FD10FF66147A3CCCE68 +:10767000D3C498515F887B57D7F553502E6E1F6443 +:10768000D7ED7B75F44B40BC1F929BDE6472C18CBE +:10769000EBE7B71BE2BF8171AB6A8C0DE6E984A111 +:1076A0007B38F0DFF641EC5D27D9E04E261A7FD813 +:1076B000EC905CC07BA8DF22178CFC7D27F69ED265 +:1076C00065E4410B9707E2FDA67F571EC04F2DB919 +:1076D00094DF7BF899D7177CDD53FFBFC427B3C372 +:1076E000F8E4104C2EE07F3D7B9F4C4DDC67D5EEDF +:1076F000233EC1E9B4232A86E9B3C6F86F802EE69B +:10770000A67A8C925D5B4E66EFA699C5BDD4EB3D23 +:1077100030AF732D3355F413507A9C41E9F1F141A8 +:107720000A934BB1CCBE3E6170DB613CEF3A3C7BCF +:10773000060D877B8C8CBE5DB64E2BDC7F74AD8CCA +:107740008F85F3C7027EA1DFC4FCFFBD27CEDE43D9 +:1077500011E74BC57B7DA62D32BE3F599BEAC2F790 +:107760004FC43B29E23CDAFB92BBF30DA0FB34F69D +:107770007E813897B63E61826D0C4D5FDFC6DEF1CB +:1077800025FC3D96F9BC5E3DBC9742DB4B2A60E789 +:10779000F83C1FDB2644D372C753A7B9572740A82C +:1077A00010C0CF73FF92F19C4459776739BC873280 +:1077B000D7E7D0BD37E139A34C00FD3A97D8F0DECA +:1077C000C389E8551550BFF967128EE37DA9E90515 +:1077D0000FC047E3204746A7BD5609F6C1E8AD896B +:1077E000E81769BEDD1A0D8BA6E3A4A913E0F5B571 +:1077F000CAC847CD2A793E05E6558A45F97354ED46 +:107800007C19EE8B1FBD3D1E3C3FA45E21CFC3FB08 +:1078100025EF71FEAFE5E718012FE6E2D07B279454 +:107820002EC935C5A177298E1828E714A37F07E94B +:10783000F7235EBF1EDE3B013F82BC7F38EC670B47 +:1078400079A5C40E437FD1D97D0B4B80D4D4C4E934 +:107850001E18DFB9FDB796001ECE73BAF961EB268C +:1078600037D2F5BED53E185792C4E44563CB7A3C77 +:107870002FD8B87F0CBB0F2C313BE372EDFE53B415 +:10788000DB46DB95AFA0DD6DFAF386CD0F4698257C +:107890006AFF2FD81296CEFD8E737DFAF4DA567DEC +:1078A000DC5E6010EFBE5CD53B0EB6024BAFE7FC72 +:1078B000FAAA2FCEF9A10D08F2CA19EEB7BCD30669 +:1078C0007C7481D223D3FF4D66881F87F72E7BB14E +:1078D000EBBBBC04EF6DBEC2E583E03BC16787B97B +:1078E0001F10DE87033B39F40E4C9AC4EEDBB5C79C +:1078F000C3BEFC603EFEE78CCCAE16EFC188F71726 +:107900000617C808EFEFCE14E33B0B0783C565DA13 +:10791000FBE087E5AEC746A03E617C499715154F51 +:10792000F58287430365DDF93261CF0BF9B099C366 +:107930002DE835BCFEE402A607BBC2DE89F15CE699 +:107940009D98F773C68E2B18AE79AFE5F02CE2C088 +:10795000FBBA43D16F38998F9FF2EE04F07B9064AD +:1079600077B2D60F7B57AE7E9F67738F1CBBBAF57D +:10797000CC5D8FD0F58CC6FEDFC8C7DF03177F5FF5 +:1079800042E6FBBD75704E09EE091530FB5CBC1F6D +:10799000531719C886F3E2E21D990A13B9B9CAC28E +:1079A000EE45ADD0E0ED16BE0E9AB48195A3EB3D49 +:1079B0000CA19D1D96507EDD58564FC4C538057CE0 +:1079C00077E5723B85DFF709877F5CD43F9F827B39 +:1079D0007BF56D261BBC777512FC4C20DF0EF07713 +:1079E00034CDC409EF939E7C7DA813D6ABE7E9782C +:1079F00041FE3CBF313706D6970B8FC804CEB12E5F +:107A00003DC2DE9107CF72A5E61EE12D5B247CAF5F +:107A1000A5FE1DC2EE99ED95FDF044BEB83746F3C4 +:107A2000B1DE2D7EF57D2D5FE355485A7E51BBE4D6 +:107A3000877B2E8BB6E9F3C57DAAA5ED61E9FC1E17 +:107A40005A63D8FBB027E03F2997CA01CA2F4807DD +:107A50009B0AF87BB1FC9ED495CA0385B81E2CC046 +:107A6000F571D83D50816F25907823D89747E3F181 +:107A70007B01942FCDA59AF36B627FE08CD783DFD7 +:107A80008338EB5D8CA1A87F4EEA30C2F73ABA3F4B +:107A900024781F60D4DE3D3F1A6D87F24D68A49CA8 +:107AA0003D330CD7A567295F31A3650DB7A7FC1837 +:107AB0005EBBB743EE4F407E7F1085E799C2FCFB6B +:107AC000179A4C38DF17CE28FEDECE25887BB8CF3C +:107AD000C13D5C7B088FA7BFCFE497A0FBD1BCBDA5 +:107AE0008EC7E2F78F02FA898AB1C13A7B113FA7AC +:107AF000707AB78CFD7C6C8EF9E564DACFC7DBABAE +:107B000093E0F1AF856AB7112ED43A0F544503FFC5 +:107B10007D48CB05D06EF4CBA0AF4755906AA8370F +:107B20002AA0103BADF7A1E294802ECE9E24A48D16 +:107B3000C63F857D06E6FFC07D8685BF9191CF0457 +:107B40005CE5A57C181C9F9F7379F1D1F6A7A64030 +:107B50003B9FEC526D00CFD95D2A61F732653F1C27 +:107B600059FF7837DB875CB25FF247D0FC4F764B2A +:107B7000C8074B5E939D668A87A5CB5517DE930C8D +:107B8000A3F772A807E5DAD97BDC82CE97B8FCF8B8 +:107B9000AE2CE1746EA67FE0FC7B2C69BF07EE6D16 +:107BA000DEBAFBBBD177385D9F11F45C4C8AAFE63F +:107BB000DE5FF87749E2F73AA4FED8AA4F77BEBD58 +:107BC000D948F01CBBCF10E9043971B977AAEF94FA +:107BD0006DBF87FDDA05850E6CE74B835D85F54C3F +:107BE0007542D73834F5CB0D2EB8F7469A4D287725 +:107BF000C2E133173239EA07D94FC341854CAE99F8 +:107C0000F8FDB366B14E4EE4F70CF87A42D4B715DE +:107C10004ABC9E1DEBC9430D284FBB5492CEEEB912 +:107C2000DBD2A07C5554DC17F0E478EA13AD336165 +:107C30009FA96A74DCED99D402CC7A62D34C38E700 +:107C40005E3534EEE90C1ACF29DCC8E283E386AB5B +:107C500034BE7AF5E699E368F9F242D73585892191 +:107C6000F844BB343DAD90F6FF5C9AC70E61A3D1DA +:107C7000D20276CFB99CEE74B09B44F9AE03FDD32B +:107C800060FDD213A7F0390B202EC6DD7BB8B4D02F +:107C900095CFFAD5A7BBCD7623DE13F1B17B3404A3 +:107CA000929242DF279827EED5B484BD47EF64F760 +:107CB000BFC47D2971EF293F749F6BFBD5DCE73A88 +:107CC000C7EFA185DFB393F6B3FB68E4217E1F30D5 +:107CD000EC1ECCD2284A4F8321A47444CBAD78FA51 +:107CE000DD683BEDFC1689C921E229C5F5DA4A1B9E +:107CF0001B0FF18C42F926DE29FBC84B9AB280AEED +:107D0000A70472E0FCD326D9E3063C9D713C1B0D11 +:107D10006AFEA3ED7FFE958FCE4F03F7F3906FE4DD +:107D200000BC435291918BEF399CD9B33E15CE855F +:107D3000D770FA3BE36076E9993D265E6ED62E3821 +:107D4000F743C5FEEC4294BB617A60D70C84F3061E +:107D50000B95FB74BC01FE7D18BA6EF559D9FA95E6 +:107D6000C0FD2E958632EE0FFA7BF2A3F1AD82F9BB +:107D7000C97C5D8CF7FA7ABE2BC1E7E39279A22C1D +:107D800000EF221ACC4405799F4FB6DBC0CE15F325 +:107D9000F511E7CF8FCC8C2FC57755561C60F7D9DE +:107DA00057484CDFAF785DC6F3544B8FA8BDEAF55A +:107DB00006D2190D74BB78FB7C946F42AEC135734B +:107DC000A09F2936E5CAE4D9F6F22B9267F714F2A0 +:107DD0007B3943C890ABD4CFF7F5362FE3E53A3B78 +:107DE000DC2B59919857CCBFDD8374B388DF3F10EB +:107DF000F3B4E2679978CF97ECDA8B74B688C34E08 +:107E0000B6B3FB40F738647CAFA0725F7F62A749CE +:107E1000B7EC93F05CE0E47DF1188F0EA660BCF245 +:107E2000917E63D9BB096C7E2B1FC9C5F827BF7C27 +:107E300071187FFF89DD13E2742CE6E57C0D9B173A +:107E4000C597FF4019F8898EA8C46FC7F2782FCB69 +:107E5000CDC171F37B586E127E6FDC1E03EDB8A9A5 +:107E60009D86EFA7BB98BFC3CEEF5F99920DC4AEBE +:107E7000998F1947D8FBFD11F64862D7E0FF75E2EC +:107E80008E013BAC99CB79E27375C2FABE86D343BF +:107E9000545E9CAE7C8DA51EE9C2EABC46D73EF17D +:107EA000B0F55B0F9D405A02BBD705EDCFA8D1DFDF +:107EB0003F5B1FC1F4885AF619EA0937A723B54C6E +:107EC000BF0E74A74EC0EF03B8C3EED387D3D1B1B2 +:107ED00042AE17F349BEF6BB001ABC23FD9FA77A3A +:107EE0001ECC1B6A753C00EF88CCE4785F27EE69F6 +:107EF000C13BE150CE65C577FA04BD7582DE1BCC6F +:107F0000BE33A41D377C67488B1FF8CE90360EDF3A +:107F100019D29687EF0C69F3E13B43DA7CF8CE90F7 +:107F2000360EDF19D29687EF0C69E3F09D216D794B +:107F3000F8CE90360EDF19D29687EF0C69F3E13B4D +:107F400043DA7CF8CE90360EDF19D29687EF0C69B3 +:107F5000F3E13B43DA7CF8CE90360EDF19D29687F8 +:107F6000EF0C69F3E13B43DA7CF8CE90360EDF1973 +:107F7000D29687EF0C69E3F09D216D79F8CE9036AB +:107F80000EDF19D29687EF0C69F3E13B43DA7CF8F8 +:107F9000BE9036BE8EDB39F05D216DBD4EB2361B14 +:107FA000F58EDD632F4A8477FBCE2840EF6FCE61DC +:107FB000EF989C3F526D43FEBF4AFF455E919E8EF7 +:107FC000BBB2297FF6623785CB4323B70BC6CB9371 +:107FD000F11DF9F3ED12D279B87E16F65C0C55AFAF +:107FE0008AA6DF589799289A71C757D874F14477B1 +:107FF000B2AE7CBF1ABB2E3FC593A7CBEFBFD8A9AB +:108000008BA73595EACA0F58E5D2C51DBE0A5DF9A2 +:10801000CC16B72E9EDD56A32B9FBBCDA3CBCFF79F +:108020002FD6E50FDADDA48B17B6AFD2951FBCCFE4 +:10803000A7CB1F1268D1E50F3DD2A68B0FEFDCA6B0 +:108040002B3FE24DBF2E7F64D76E5DFEE88FDB7560 +:10805000F16BBBF7E9CA5F1F0CE8E263C8515DF939 +:1080600072F3ABBAF878DB5BBAF21393DFD3E5DFD8 +:1080700060FF4497DFF0A913EF4F93DF49787F4704 +:10808000D86593F23ED3955313A8BD0FE716482445 +:10809000BE83D2979D2FECB94AE757BA7EEF94D9A9 +:1080A0007EDF86A20C6EFF93AE08B0DB7D6EF4F32C +:1080B000DBCC54E1D2AC18B8DF1EC7CEA7B07BFB37 +:1080C0000978CE0855A71DDEA7A3760F8DC4191C0D +:1080D0000E58874485ECD1D48B9AF7372E678FFEE4 +:1080E0000C6C9644FC9ED7A6A2E1B05EDB3301D6B1 +:1080F000398BCD6D682F8F970B62E0FB48AF44F44E +:10810000EECFBAC14CF1A8E9EF68445B6AF1B7F071 +:10811000EF0DE63358BEA75DFEBE8844C7A7F5FB4A +:10812000FC98AEBF14CAA76D5ECA677401BDC96B67 +:10813000C3F8166F32C6EFF7DA31DCE6CDC3F027AD +:108140005E27E66FF79662FC21AF0BE37E6F058634 +:108150003BBD6E4CDFE5ADC1F82FBD1E0C777B1724 +:1081600063F8A8B709F31FF7AEC2F8AFBC3E0CDB4B +:10817000BD2D98FEA4B70DE37BBDDB30FE8CD78F01 +:10818000E13EEF6E0C7FEB6DC7FCFDDE7D183FE836 +:108190000D603CE03D82F143DE4E8C3FEF7D13E30A +:1081A0002F78BB303CE2FD18C33F7ABB31FF256F0F +:1081B00010E367B8DFF26891C4FDBA167C47CB3D87 +:1081C0003617DF3714E9865CCF5190A7E2DD0CF15A +:1081D0003E46F8FA217C1E4EF3F6D5B1ECFD0BF5C8 +:1081E0009A9C9D70CE3FF47E857D27AC255FE3FD94 +:1081F000F4BC87C1EDEF459C0EC5FB18627F63118F +:10820000A7FBE1408F79488F2F5DCDFA48ACAF5D79 +:10821000D99E93488F69061FFA172CEC7EEEA26C4C +:10822000CF47905E6F69323273D589E99526E65F54 +:10823000EA3E2A3B77DAFBEEAF919FB3EE33FFE0E5 +:1082400027A9A07F2AFE25E3BEDD2BAAB506FC28C0 +:108250005F713C7C5564D08517B2DD418067D1C128 +:10826000EFDF04F747C47DE0A9700485F27515B10E +:10827000E3FB24D5C4F57BF8D4CF0C6AF841FC4667 +:10828000E2C3F0E52C8F343811CE5BF931DE259155 +:108290005FDE26C178185F84C3113198D9E311835A +:1082A0000DBAD096E38E8076168C9A78133CA9315D +:1082B00001EE8727825DD9FD10C0D198EE39D13FFC +:1082C00033845FE1BFB8670CDF475D2EBE3374C9EE +:1082D0003D7DCCAFBB9DF971C2EFE98B7BF6E79B8F +:1082E00054948B709F1FFC1BE79B6E1F01F2630E63 +:1082F0005DBFC13EBE909375F0CE4831BC0B606649 +:10830000EDBE1385F7ABC2E5A7D80FAAA3A400EB77 +:10831000C111FC1D8F57DC9FE1F7B55056C3FECB52 +:10832000C8FE3B615F81D2CBC0C1402F2365769FE1 +:10833000DB46E9A510EE7133BAF0FD91DDB3566C62 +:108340006E17BCDB55BF3D7608EE1352FA017FD99C +:108350000A8E47411FCBF8F97E411794EE4A00BFC1 +:10836000677F33220FE8A3F1E048DC776F36F07BBC +:10837000DCBC7DC2DF7D94630AF03DB84A302A80C0 +:108380002E475AF15C72874C56EDE9458ED6F1794D +:108390007D2599BD2BD8CCF953E4CFE0F0CDE0E5B5 +:1083A0002A0F1DC577A1961D519DF87D86615D053B +:1083B0005A3F4F0F3DAF7AF88E2C0DBD37EE7B8FB5 +:1083C000ED0F90AE826956062ECCB7784F59F4A3C4 +:1083D000823F04944D8272A6677D91017862FA42D1 +:1083E000D0A56CB47A7658B4E360F5295FD402BEA8 +:1083F0001645AF42BE38DFF4E14A10065D1485B081 +:10840000BEF1FCDC86EF8ECC234E0C171037868B2A +:1084100028B9E0F79B7C1B51FF2C21ED98BEAC7472 +:108420007E3AC41B49F7B8648AC7192DAB7F9F4CAD +:1084300041A96EDB383E85C23DCD3FF7F71056EDC2 +:10844000924EF9ECC8570D400F5D52D3BA6B687F5E +:10845000D3F7EDF8FD35347D0AF76F503A74C994BF +:10846000BEE46833FADB166C62727505C7AF2DC7C0 +:10847000B502EAD7AD21482FE25C790F5F95DE7A2D +:10848000A2BF01EC4582E756CF1DC8F7AF7600BC0E +:108490004C8F87FC3B4C7F0BBE8177FDF09DCC273A +:1084A00024BC57755AA2F58B7B79DF82DBA1821F32 +:1084B000C2BF6BF7A5383794EE492ECE84F7EC7C1B +:1084C000F7E03B57067F497426EAF3FB007E75AC64 +:1084D000A77508AC977F25399B292CA763FDE9F880 +:1084E0009E44D83B53E2BDA81FABCC1F176EFF8A3A +:1084F0007184C36932121FECDFF6D83DA52F7C25AD +:10850000F50AAF2719364E9B614A32012EB7BD37A7 +:1085100038D6F2FE8FFC93F9C97D69EC3B34E1F863 +:10852000946CAC9FBEFCADA6480697D05B7DE391F2 +:10853000CDD76F0733F922E0A3149067A3FD2B4A30 +:1085400024BE73FA6A04F3BF09BF9A5827DFAD78D7 +:108550007E03787E3582F9E58E383ECA42FDFB4DBA +:10856000732A3BEF18D0BDB73445F055A9AAE32BC9 +:1085700012E6D72265BDFB1DDD661BCABF6AD02B84 +:1085800099B0EC7947E00FFD5AFF179F8DEFEC4053 +:108590007E000000000000001F8B080000000000AB +:1085A000000B4BE56060F8518FC00BD0F8E8989550 +:1085B00013959FC3825F3D219C0ED49F04C4B1409C +:1085C0001C01C4C140EC07C49E40EC02C4B96C0C51 +:1085D0000C19409C0CC471401C09C42140EC0FC410 +:1085E0005E6C08739CD91918BCD9F1DBB58A0D53A0 +:1085F0008C911BC18EE4A4CC2FA378E863393E068E +:1086000006457E047F2D3FAABC3C1F823D4F983219 +:10861000BBD603F50300B542C81780030000000075 +:1086200000000000000000001F8B08000000000098 +:10863000000BDD7D0B7855D595F03E8F7BEE33C971 +:10864000C9FBE605272140900097F01014EBE521C7 +:108650008D1DA673C557EA387A818801412262656B +:108660005A3A39900701F2DBA8D882A0BD2022B681 +:10867000DA068A0EED87FE17B11A5BDBC10E3E5B90 +:108680006DACB55215CA6019ECFCCEF8AFB5F6DE8C +:10869000C93D27F792683BDFFFFD03FA6DF639FB12 +:1086A000ECBDF65A6BAFD75E7B5F6F600ACB1BC920 +:1086B000D8A7F8E752C6F234C6D8B481B2F26B5AE2 +:1086C000BC2704FF6651C68A181BE9877F5A8CCDE8 +:1086D000ED08BF31762A630F7556A95E7854C6142B +:1086E000C60A192B5D56FDD31A786E75A94C837690 +:1086F0006A474D691F7CBFBB325A6A523F4CC57EE8 +:10870000AA7CBC1FC66CDE2FE3F5873A17E6B05A89 +:10871000A87777FC9B963D00972C47DB2A4BFAA85D +:108720001FF629C3EFF43FF5D5887A25C34F090E0C +:10873000C6E631361DDE8BB6CFBE59FCC6D802C6A2 +:10874000F6005C5E36188ED2655303E352E09670F5 +:10875000207CD1E903F07D5678687E85884A4B639A +:10876000A3B01A7D290CFDCD10FD31FD276A6C02E6 +:10877000639B5BAC9E6A0F63AD2DACA77A34639D9F +:108780002D3E2ABB5A4C7ADEDE12A6FA663DE14344 +:108790003CEA2168573330AEDF82F6297064454CDD +:1087A00047DD28083BEA8C3510DE3D62FEC11ACB5E +:1087B000F17E75E1621FCE1FE061512FC143E5B428 +:1087C000B0FAB67722639B3CB1700CDECF2858BA62 +:1087D0008041BDF31BDD7D0CF0D75E62581B801518 +:1087E000EAC2F3FFC0807E3F1DBDD4D78778ECD3AB +:1087F0007FDB07FDD7C0DF4FAB18EBD07BF3701EDC +:10880000D3183C77E08BB102C0CF2CFE4F9827FFE6 +:108810004EC235AB46B5BDD06F1D4B790EDFCD2AAC +:108820003016A900876F449CE0623D29EF61BC5976 +:10883000E16B6E51E03D3B9D325ED5007D8EB4987C +:108840002C3A96B1BD2D35541E80BA05F3DDFB9F41 +:108850005A434FED00BF84FCFCDBD593550094B127 +:10886000FB8F5BBB198C7F0FF23FAC97473CF1EB62 +:10887000100FF664C37A58C196E6754DD06EC7CA1C +:10888000A2BACD80E7694D803F807F8712FF2D7EA1 +:108890006F2F8376F0FD01DDBA12EB3B56E4A9B6EB +:1088A00032984FEA56A876317C3723C2F10DF5B7DE +:1088B000C7E27CF4FB3EF0C277B571C3DA8C78FF77 +:1088C000B8885953189B890C0B706C7F81253640F2 +:1088D000FF754D400F68FFD3ED7BFDA9F488C25FA3 +:1088E000C4C3FD488FDAA1E93147F70CBC477AAC25 +:1088F000C8408F38A7C7203A34021DB233D3C15DB8 +:1089000076B724D83BC0FF1B5BC24497D6168BCAF0 +:10891000CD4827A0CF37B169C9E075B945654D4845 +:10892000B72D01D67400E73BAB2E6D3B5932B69E96 +:10893000E8B711C6621711585144BE2FDA5F4F06CF +:10894000AA617C7C5F2ADE9743FF4A7FDD66304F59 +:108950007DA0BD1D84F61BFDBCFE16DB19B5670DA1 +:10896000D44FD95B1D75F9BED51365FA64C60EB335 +:108970001BA2B57E47FF51EC3F153E5F9AFE5AFDA4 +:10898000BCBDB2BE3B6A037C1D4A22CC34514618A2 +:108990003B0ADFCD9B81FD42DD04FEBE6791FDEC0D +:1089A000CC81717E652FB26D58978B58EC2788FF6C +:1089B0005D4AF75145C171230D0CE0FA197E0FE3B2 +:1089C000E8161FF7676C4BB4551FC0CB2B76BB8DD9 +:1089D000E34AB9AE09BED1DA7CB63611F54127D3E8 +:1089E000812FB56266921C9E9507CC0ACF0BA20C14 +:1089F000F952D24333F5DFA7F2593F5F88F699E980 +:108A0000C8DBF5C3EFE93E8A4BF327F80AE83B677A +:108A1000C48C7F9905E31BC73C11AE07E204CF6607 +:108A2000E0D9CD50F3229E6108EF271ABB0858E623 +:108A3000295C7CD08FAFBC942552E5A70E72266BC3 +:108A4000A05F18EF83547C0D35BE478CEF1E8FE975 +:108A500031A6C37AEE10F0B8C76DF5C71A62409F11 +:108A600039D933FE8E513FA3556F25E1B91EFB89DD +:108A7000285C0E69D85FDE00FCB2DFCDB9BC5F3D7B +:108A800004FDA6E057F6077861D81FCCCFD15E432E +:108A900038EB06F7EBEE07F019467D9699FEF59C4C +:108AA000FEE35DF4AF1926FDFF9BFAFD087818E799 +:108AB000BF669C91B02B45FF7969F028E6E79E7769 +:108AC00087127D7596C2B86D513740CF7F17DFC9C9 +:108AD000F107F1118B10DE37BFE4211ECC34AEFC60 +:108AE000DE3DEE9A9F3F1406CD34685C37BC83C6EA +:108AF0001DE63A2AF9781C8B823EA944F900F273EC +:108B000043BB4178EA8AB304F24957EF6564276DA5 +:108B10005793BDB3509FFDD2C31E86A1B74BB9DB9F +:108B20003695BEDB95950C2FACCD2C770F809D61D3 +:108B3000835CEF525803DA9B7BA19EF0A2DED2ED5C +:108B400062A0EFDE6D1BFC8BE0799787913E86E794 +:108B50006FA33E1CB3BD8D3FF7F3E753B03D3C7FA1 +:108B600064A7689FC5FB9B82EDA19FB10FF0F653F0 +:108B70007A5566A7E0C30D57D848C6719DB99FB70F +:108B80002B2AE1E547A88FD03E407D046538602F51 +:108B900042FD1DEA30ACDD80AB6D8B3A4A17033CD9 +:108BA000CF2CEA507E0BFD3CA870FBF87EA1CFFADB +:108BB000C769026D0FED7EE449ACCF86B5F68F0A2A +:108BC0008B36037DC327C08E0079DDB9FE30F302FA +:108BD0007EC6C6797D46F6B3EC79AA3392BF7B9404 +:108BE000D749FEEEFAF9BDADC4BFEF422B186AA615 +:108BF000DEAD35A3BDDD569096CEFBDEF53524E027 +:108C0000FDCC44C7B12B514FB304D141BEBFE8776F +:108C10004E7EF991D0BB7B851E5E86FC90B21E43D2 +:108C2000623D8606E4BC62003CA10F58C40BFC30D8 +:108C3000D367972E87FACC388BB45A83E109C56184 +:108C40005DA68C07F3999B3A9FBFD63C16B1E87797 +:108C500094C2CCFD0DD623F147B0FD4C21FFC2F1EB +:108C600084160F9D77DE34CFD0123EEF4CFDBBE76C +:108C70007BAFC0278CF744BAF1FEBBF001FD1E4567 +:108C8000BEFD4BFB0DBBFA1D2E7EC1C2A37EC0BC38 +:108C9000D2519F0ED463AC5F8FB8EDC254F95F0020 +:108CA0007EE2442C0336FA8B5A8113AFF23B630405 +:108CB0008BA37CD0841CA33F00A25E1E7908EDE646 +:108CC000F71483EBB3B08FFA794B8DBFA7201C0B41 +:108CD000988E7E64407CE23363E034427FA5353970 +:108CE00071946FA1F4F3EC6C89E5E929EBBCD3C373 +:108CF000E590C49B51C512F968077FB2C45A382168 +:108D0000733F6E7CB556445E8BA37F5162441E86D2 +:108D1000A7ED2CFD7C14D5A071F4B0417C09F35172 +:108D2000D4C2CCF369CD1AC3E753905E2FB4E27C72 +:108D3000460FA67BAB90C799BE73C39FE97D5B4589 +:108D400034BC08F547169F979B4EDE029817E89BA8 +:108D50000A95D3C91332884E9E029B21DC30BF0A8C +:108D6000350DBD241FF5CF4FE05937F97A95E3EB68 +:108D7000BE6BF2F4FC01382F504D3E4E3F1C11EA01 +:108D80004733197D97ADC62FC0F180FF8E11FF8547 +:108D9000A204871186F793B08C36D8C0CF6D476692 +:108DA000B25AFC2E14612BA0344271B600DAB549D8 +:108DB000BFB260AAC32F19ADAA0E3CB9F15682F01A +:108DC000A4E0F9FE0AC9574EFA039DB62F85BAC72B +:108DD0009C3E05EDB7B9821FDCF801BCCD5553EDC3 +:108DE0000B93E3F3FE65025F8D0569FDA612DF9527 +:108DF0000E7C552EB036904F80720BD627BD82FA6E +:108E0000BDA113AFC519B721B11FAF7ABA17EDAB2A +:108E100049FEF8421CB7A4B38729D02E7F413743BF +:108E200039D72EF8E9322DE4FF2D94DDD1AA9CC567 +:108E3000F07CADAA38F84E963BC04E40BE6C6DF14A +:108E4000315C6FE7DE1C4B7067E2B3AE165F6EEA13 +:108E5000BAEC5AA1D7A35CEB8A1C78693E4CB5BD2D +:108E6000A0BA8E644B93A2E33C020A9FC77231FE04 +:108E70008E955F95FCB61CE92FF94FF25955341EBB +:108E8000453FBA92C56D05FACBED6491A4C0B59E7D +:108E90008297FC59E0374F243CDC4E78089B7310D6 +:108EA0007FFE053D513445251EE08FBF1AFAB9FB00 +:108EB00085D175884309F713824F580D5F774C8F22 +:108EC000903F9269DDDD0378AAA5F5DBAD60BB922A +:108ED0007A96C0F5B3119F033EA6A9B15682A3317D +:108EE000A1E07CB62B72FC30C5D1DAC41CEEF9527D +:108EF00080F8ACADC2DCA5011DEF423890AF762AF8 +:108F00006EBEBA4B4D91E392AF0AEA634C857996F7 +:108F1000C4E2490A7318F17BB15D40E933313E5632 +:108F2000D2C8DB6D94E3DBEC18F65B20E820F93C5B +:108F3000CFB276A33C7848D0A56046C76D2ACC272F +:108F4000BF4627BC16F42D5A80F127DFAF2FA7B8F4 +:108F5000073CA7B84B49AC87C22BA556F408E27B67 +:108F6000B5117F08E79D37736B14F9D0688A2828FC +:108F70000FEFF6C419C6A78C59DD518C27ED58792F +:108F80000D5B94C25707C5BC3D600E256A07E87BA0 +:108F9000AF504CDF9C55E7BFB916DB0508FF55EC19 +:108FA0002AC117B128F28521F802E8FF431CDFBF70 +:108FB000A07B36C2150C9B1B100EE0FB62C4C3DD08 +:108FC0001EB304E1B87BA5D190E0F8388E7C99A35C +:108FD0000A7C58F017F06388FA37540F8D87734571 +:108FE0003C99164B58D0718EC08FC4878745D72BBC +:108FF00080BF1C89272BC614F49FE601AE903F2347 +:10900000558407C0CFF3489F60B4FB08C6458D5018 +:1090100037F16797DEFC9B6F14A0FDAF456C2B8585 +:109020000F5984FC0D89A7AC08ACB734FA58B61FA9 +:10903000DA3E8832E4573DC4F598D40BC0AFAF2375 +:10904000DE7493F3EB70F5A7B156B37E878B503780 +:10905000299E2761337C715F2574A11DD718CE47E7 +:10906000EB9E9C447B0BD89FF411ABE6F8D4C36C09 +:109070008F90AFB42EA41DE2AB515932C52FF3949B +:10908000071C7161D6006C07E3DD21C75B6B101C08 +:109090003AE8051E67E6F38437D40F0EF129C68B34 +:1090A000D9D7691CF99D1E62493FD06B734D1DC90C +:1090B000CB7EB98DDF411B743378DCCEF95D66BCA5 +:1090C000B8C6BBCA09E7B0BF0BE9D6EF53E27C993B +:1090D000BFD3D9EF259E0079262230C5BEDBE861DB +:1090E0008714D09F3E5FA477113CDD88AF80AE1D12 +:1090F0008CD39D2554879CD1CA793CF52D142A2800 +:109100006FC29CAF3CA16616B706EA43F14550E832 +:10911000D53795F8682D45CF18A5BDE1543C1B0601 +:10912000B72359ED55D4DE5B9E0C2F01BEF085C3ED +:10913000938917045F75B9F0079E33C1B709FDBF66 +:10914000D1681F34939CF357C7898E3E8BEB3F6FDA +:10915000B92DEC08FEBE9F5F6BB91EEE882CCC418A +:10916000A7C3F025493E85BA8F302D954F599C5D98 +:10917000057CE4677C5FE27B50727E48D0F85E2B12 +:10918000E0E053C987B2FFA1D7A3D01FBFF6D27AC0 +:109190002C18588F7FA3A5EA0F69EFC6AEE274AB17 +:1091A000F7135E1E16FB0D83FBE7F839077D1F439F +:1091B000FCEAF100AE8BBD5B170770BE7BB72DCC10 +:1091C00049A583BBDC0E7A2C097EF82EB003B0DCF7 +:1091D000D16252D96F27A0BD154235C5F58A7CFEF4 +:1091E000638DCBF10D1AF7CFF7FA6201DAA73AFADD +:1091F000952F8D0394541FD72218522DBBBB27F7F0 +:109200007CE397AF70AE7FA65D7F5E78D7FEFAA550 +:10921000DC6753DADFAE6515FC3E08FFB8905D8869 +:10922000EB62A8EFCFB51CCB7DD6F397E365A7889B +:10923000FBFEB875FF7A1BF19EBC94E44695585F1F +:10924000259D8CE23DD56BB81E619F7CCADFF7EF90 +:10925000DF45438BA04EA605D4F7762EDE8C72B286 +:10926000E2658DA9C077A351BFA0BFB895EF03F801 +:10927000E02FCA070A6943BFA31A592209ED4675B0 +:109280003BF7794A5817EDFF55B8F6234A84FE2A72 +:1092900071ED379483529A51F797D361CFFF233AF8 +:1092A000ECD07BFC66CAF7650A8B21BF96ADFC9DAE +:1092B000B238855F7FA4717B87AD0DB17752E46DC5 +:1092C00099922C4165B46B854AF6EC8E15AAF09BF9 +:1092D000FABE8F9F9C7B6B4B09F90345BFFF02EAE7 +:1092E000F1E7B4205FCFF58CDBB9CC29AFC07E7B32 +:1092F0000ED7B3B46F77B52D24F9B4E393DB8F7831 +:10930000806EA3D7B0C806A23F3B8EFB5496A0BF89 +:1093100025E83D6F2BA76F55178F1332DB49FFAA46 +:10932000469BE243A3D7B2087E3BAA8911BCD5D79E +:10933000B34414E0AD58AB3BF699AAB73AF9A31879 +:10934000F900F8A3D8C51F16F0413EF04175777CAF +:10935000338E5F02FA9C6C06D7F8A3AD9ECB693CB6 +:10936000C05382F4794A3F1AF2576403D2C3CD97AF +:10937000C5C89713078FFB97F2DD47C877E307F857 +:10938000EE2C2B5FBC0F10B3ABFDB197C610726310 +:109390006AAA7D2FF94E67D13FA3BE62B161C65B59 +:1093A00086DB8E7D91E4B5DC3F9FBDDA17C07DFC86 +:1093B0009D06FB29EEA3DBAF680CF5CDCED581D29F +:1093C000547F2B21E47EC2CFCB629DF36B213A5DAB +:1093D0005096E85CCEEECCE6FB7383C7DF20E23F1D +:1093E0003C0E34F6633078F253EB86ABAEB3E494C4 +:1093F000D47AB6A8F379B415727FBDB28839FCFD72 +:10940000F6AC6E6692DDD5A8921D27E4D9D1DCF9C1 +:10941000B45FDD16AA13FBFF71C2837CDF16AA2A94 +:109420006629746D15FB9099F0D926F621DB443C32 +:10943000BCD2888673B19E3B9FE21D5A1BD80DD0CB +:10944000EF549DFB731ADA99173176B16E6ED8001E +:10945000BCBC9545A7E985FC3BE4C7CABCE96C9157 +:1094600045EDC8EF708F67E9018EBF19FA7FA4EE52 +:10947000BB82A560127F09FE66A1E1D945E57ABCF1 +:109480001EC7B7E7B024FA2DF6452CD18AEBB939BF +:1094900026ECD5FE767F2BDAD9E847F4B78B3BE391 +:1094A00078D06EA13E8DDA451DED6283DA5D2BDA50 +:1094B00031C7B8D141E35E2FE163A9FD4506F5B799 +:1094C00048F467B3D4FEAC41FD2D15FD451DEDCC30 +:1094D00041ED6E91F039C675C52DFBDF8F30E47B11 +:1094E000F28FDA0BAFF191DF926870F09F9B0ECF95 +:1094F00014727E7CB6707E3DF2CBED2F7868AFE7BC +:1095000048A1934F07F89175AEF060FC91F17C9201 +:10951000D06E1A473EEF6F17DA6DA67FBE3843FB59 +:10952000C5A2BD8FE2FF99F8A615F91DF8B415F98B +:109530003D8DFCFB37B1FE3B6B404FA5E1DF4F8417 +:10954000BC607A8CE219460DEBA94D9193FFBFCC1C +:10955000F3A4984767CD86EE39114C8368D8E003B1 +:10956000FA6F0ADFD33D1BEA2FB3860DF32AFFE71C +:10957000CDF3E76D4B1DF3FCB1BDF47FE43CDFD7C9 +:10958000EF70CCF33BEC8E0DF394CCF36C17FB9A9D +:10959000EE7ECFEAAAC83B8985511FB5177E358C70 +:1095A000F0B65730329283ED176E580FF5092CFE46 +:1095B00031CA9B8DB0768EA17FA25BA48786FACE3E +:1095C000374E8FE13ADB14E676A11CF75E31AE2C04 +:1095D000B762300CE350253AD961ACD0488C167490 +:1095E000C3FD89FDBAE95897BFD04D995740F50F93 +:1095F0005CEFE11FFF81F69189F31F9546FF08F9A3 +:10960000D885FA393B9D7E3EA6A6EAE7A0D06547FD +:10961000273F47726F6E476F6F15C6215FD418EEF4 +:10962000B3B9F5F4EC8EFA5E0BF7A97B3DE23DB7DA +:1096300067643FED2D3CAF6DA3C8F7829A430E7768 +:10964000D5CEE9B5A0FFB32F7AF8B8156372D0FE76 +:10965000E914FABC53E873373D0F79B87C7B14FAF0 +:10966000B7A0DF3DC07758FE6FA8C7C7E2783E2A93 +:10967000BF09F67F1CC6BFB7254CE5CE168B9E6F83 +:109680000178B0FEBD9608D5EF6B9941E553C27FD6 +:109690006815FEC3A57B54D2FFDF6A615D18FFDE4B +:1096A000D4E2A3B2A7C5A4F2819670179A5C77B7EB +:1096B0005854FF7E4B0DD577B744A8FC4ECB0C2AEF +:1096C000E7290BE77A00DE4B3F6144F7D2F631BB66 +:1096D00031AEEBDDA34713148F003D3875E0B99C24 +:1096E000E73C654E3D7E97B38FC391330B089ABE1E +:1096F000DDDF62BBFC7DBCBFFC05A0A70BD2B65B67 +:10970000E801FE29EFE6FD9537338A47A669772DF4 +:10971000B60B76EBD42E58CB289E9AA6DDF538EE04 +:10972000F8ADBCBFF18F313B43BB45D85FE1560E6E +:109730005FE15560E7A41F7729F6E7C9B317615EBB +:1097400040F44F1C5FA188B50B636E9E7CFB367C9A +:10975000EEFB983FF796F3E786684F31058CAF86AE +:10976000C473D1BEC0E4CF7553F463F0F69B27F306 +:109770007E82B5E66E1F3CFFC164DE0EC7C3BAC76A +:10978000CBBF0F8C68660AACCF60790F53A03E093F +:10979000EA2AACBF507992A9182792FD6547980232 +:1097A000CF83216807F8F801D455F82E1482761873 +:1097B0006792FDE547A9DD0E91DF3029BF87EC2FC9 +:1097C000BDD6527C16FAB13CDF2164F2FE8B6BE30E +:1097D0004770AB6CB4C1A25703883B6EE3F2E7AEAF +:1097E000F617E7603E9ABF96D70FB797CC5D0FB6D6 +:1097F000ADA794513E71CF916BC2184FF794B166EB +:10980000AC479E69A8C1BA21DF3FB39CDE1BE27D55 +:1098100019080C13F39B8EAEA8599466DDB9CB8F53 +:109820005E9C4BF173A34065D134FA4696E52B9CC0 +:10983000F934791153D1409E7FE481F9E07C713E87 +:10984000608FEF6B7F6D0EE6B54D8CF0FA1B1E83BB +:10985000CF47EC2BEFDE24E63312E085B26AB398F3 +:109860008F7CBF59CC47BC2FC1F9809F5AB585CF9B +:10987000E7233D5A6CA699971BFED246E73E7BA58F +:109880009124F9AF458AAA9600BCDA410EDF6C63D9 +:1098900033F90FAD2B99AEE4505E20C5BDCA7CAC48 +:1098A00013F188F8C17DB5ED425E49BA78D61876D5 +:1098B000FEC4CC7895F4F2ACF1BD8DED24BD8C35B1 +:1098C00081F37E27E968AC09BD9D9F9D797E83E980 +:1098D000D1A7223D42C649F53E985FAEC03FB3FFD7 +:1098E0003C67B63E983E5D37C17C270DE40395E0AA +:1098F0007CEB387EF360FCFD72BE822E9E7530DFFD +:109900003479E6FDF315F4F2ACF311DC929EC6BA9D +:10991000C079BF937436D685DE4EC5CB210FD7B341 +:1099200043D1B555CC43EEAF835A3EFF3CBA86399E +:109930008F2ED73CBA86398FAECF378F2D3771FE39 +:10994000DB9225E61112FC97691EF630E761BBE653 +:10995000610F731EF6E7A4875C47821E653A9F87F6 +:10996000ECC7BD8EF6FFC429DF263FE7946FFB9F4F +:10997000E3F260BB1C5FB67B9ECB83B6959CFE6D0D +:10998000026F65214EFF4CE33DF88FCEF1467CCD52 +:1099900039DE835F4B3FDE88AFF3F1FE5AF102D32D +:1099A00013FFB221FC712DD52F76C50BA0DD95A23A +:1099B0009DADA5FAD9AE7801B46B3044BCC0D12EB0 +:1099C00036A8DD3F8876CC316E74D0B88B45BBA409 +:1099D0009ADA5F64507F378B76B69ADA9F35A8BFE4 +:1099E00015621E51473B7350BBDB443BE618775072 +:1099F0009ED36DC3DAB72B68341CFB8B790B9C7537 +:109A00007FADB36E88FD3AAA570E8C27FBCB9179B8 +:109A10002EF1660BE1E9CCB25FC37CC37B3BE6CEA3 +:109A20002D80E79DB95CCEDE6B2C68A57D0254EAE3 +:109A3000604FFB85BD7C6EB44AF3CA1EA7277053E6 +:109A4000D0602AC54FFCE54682E2ABB378DCD15F3B +:109A50001D23BBC6803EF22BD1BE8939F63107F2F9 +:109A6000BC0BC47E72F379F31AC06D21FF41B76C51 +:109A7000F21FA0BE9EF6BEBB07E5232410FF5EC00A +:109A800037E619C87C0439CE507C3DEC768CD56025 +:109A90001EF29D2C10C17DE25C83299847BDB69CC7 +:109AA000C7CB2BB5F87EE42B635EF38D6D5057E684 +:109AB000AF1D8BFE4C98352B18BF378B797E175B0B +:109AC000E28B601EAD397716ED3FB6163AFDC7330F +:109AD00006F7478F181AE7AF205FCFCC67975C91E6 +:109AE000B2FFEEF7F276F0FE36A427F3361DED0C4A +:109AF000433D874D56C06E33CDE6B9F5302F739494 +:109B0000F8BE3CC3F7A3D87E6C7FB6A3F1A80EFCC9 +:109B1000608EE4FCF08961133F9863B97C6553ADB6 +:109B20005D98F2BBED1F8A26E37997FC2FAFADC499 +:109B30007CDBFE7EC673D6F92FFC0EC78BC3DF9489 +:109B40007DF449FEF8CB889F92FA9E24BAA45AC8A5 +:109B50009D17549BF3DB143CBC69280E3EEE68E174 +:109B6000F940FD72DFF78BDCDF4DC1F1B97FDABE62 +:109B7000C8477C195E6C24685F200E842B728CFFB2 +:109B8000EE6719FFE4A0F1791E92AC7FBB82E7D9A2 +:109B9000A48C4FF2498EFF9121FCE8905D4272C087 +:109BA00084326BA07DF7DC7F5270FCCBD5F89F0D23 +:109BB000DADF8EEBA9F0E62FE07967B27D2BCC4F90 +:109BC00049E95F3E6761DE7F7FBD9ED775B11ECCE0 +:109BD000B9D753FC449FC7F31F5983334F4C379B6E +:109BE00065DE931FF391DD794FF3B568C04BFC5FE1 +:109BF0006ED2FE1973FAF9328F67F10CD121B3AE30 +:109C0000FD15D06119F8E7941BF609B44EE183DF26 +:109C1000BEC3F35296897D9E7759D4C09727995A2F +:109C20008F7C7A92FD327B4A8ABD3CC62BF2DB3AAE +:109C30003DB45F63C35FD46337757B1CFB37376FFD +:109C400073D697B28545B85E976EF5D03ED032D7C1 +:109C5000BE4E9197D3E766D6DC61A6F0C16293E968 +:109C6000F9A01257FEF303D3517F4EF0F238CAFB2E +:109C7000E8F7A7EC072C0F258C28BC7FE7E0946B56 +:109C80002E66F87DA2A314F5442EA3F5ED96234B82 +:109C90003A9DF00D05BF1B5EB97F92090E7D9F12A4 +:109CA0004D8D03C9F262AFE2C8C338E7CF9EC8C08A +:109CB000DE59EBE3E59D81ECDD589EF38F48203DB6 +:109CC000FE1E832AA9F1EDB7B212ADB48FD63C09BE +:109CD000F961A8EF6FC4EFA765FE7E734122867C11 +:109CE00029F33A7CBE66D2338ACEF5C5E6F010EF92 +:109CF000CBE1BD36F0DEA3DB36DFA4E47CBCB9DA11 +:109D0000F9BDFB3DF0E3A79F4E17E72A287EC5F378 +:109D10009A3A451CE6AC1E694039723664304C28CC +:109D20006BCD05BF1BE751C12CDC17F356C772D0B2 +:109D30006FF61ED70AD44AC1D450EF28A9DF837921 +:109D40006B4BBD1E113F8B909DE00DD9D128C0DD1E +:109D5000E189D3FE90F14FDCAE9D1D8AC7F13B2D0A +:109D6000DCE0C17DD4E71F5B42E32E0FCFD79164C7 +:109D7000B7897E4E7E77FF7406F0753C9EC59208CB +:109D8000BF9E30705F60F9418DE21FB7FC208BC62B +:109D90005F7EE0E6BD0BA01FE59F2FB17E8FF2979F +:109DA000B5D2F7CB9FBCF25F6C78DFFAB2C6D0CFEA +:109DB0006F5D2FF3EF22E12BE1D3955E7623C6078B +:109DC000E4FCFBF543B54D7A7FF9BE4ACA7FE9E76B +:109DD000371DDAC3F75E28D39DFBB84FAC970FB39E +:109DE000785E9BB2EFC80D045FCFB51E9C9752DE24 +:109DF000CCDE453A7A3DB21DC5A1EC4795C46878E2 +:109E0000FFE1A3BB8CAA0938EE2E6331D959EBA927 +:109E10009D84D3BF6FBD8DEBCC6F599548E2B93FA0 +:109E2000783C1BE377ABF66949CC0F8492CEB1FA4C +:109E30002DD7BE2D8B8614A0FBAD24A2A03CB892DA +:109E4000E4D0AD3D5B281F61D521E7FA03BC469203 +:109E500000F72DAF6A910558FFE123D916C0F3FE34 +:109E6000B187B311FF30CE222307F3709DFBC8D812 +:109E7000FFC77983FB63ECB4817CB6AA67131FEF3D +:109E8000E0DFBE87FBE9AB5CEBFC7DFC47C9E07D16 +:109E9000E4C35EE73E32DB973F2CBBE596C7CF3E7F +:109EA00068C3B81F1EF8E041CC5B5EF15F1F3DF850 +:109EB000758C033FED37514EADFAEEBB0F7E0DF0C2 +:109EC00079F2905745FE58FEDD3FBCF575A8FFFBC3 +:109ED0008FC6E6E1FEE5CB427E9CDAFFE7220BFA75 +:109EE00059F3D465C538FF354FCC75EC97BACB53D1 +:109EF0002DFC9CCF003C09A2A37548C14D769890DB +:109F0000285D74397A50637E80EFE46B5ECA2F5807 +:109F100005CFD6D6219D5652FE01D6D7017E6F7D44 +:109F20006C23EDD70FC6B35DA686B14C96618AEB64 +:109F3000AD07AFFCBB4BA662E9A17C8455EC34C9EC +:109F40007BF777AB8E033D2765A6DF2A16CBC17C56 +:109F500096558F6DE2E3F600FDB207D3EF24FE6362 +:109F6000E660FAFDC945BF7F7FF42B39497C793023 +:109F70003F6D7E96CC0358F9C4D5E7CD3738E55A06 +:109F8000B799F0DCA470B88E78A3BAAF10F9E17B72 +:109F90007BEF073C9F7ADD1B59008839F5F8D91112 +:109FA0000CF8E384E7F40DB81E4F3FE535F1BCD360 +:109FB000F2A75E25FD72EA89970C8BFC191652C038 +:109FC0004E39C5FAFF1C43BBE556855756EDC94AC5 +:109FD0007AB307E8756BE28A7A2B9B9E533EDFAD1E +:109FE00009CEFFB7268E5CA5A4A1DF2C5F15979F35 +:109FF0008942C2CBCA3DBF32F8619C01BA2A339074 +:10A000009E6FCFC7E799E829E76FE2FC2F4CA1EBE1 +:10A010001EBE6E33ADCF53BBBC140F70D3F994C8C2 +:10A020007F5895505E4D47F7FEFC86CF981F72A172 +:10A03000CFB5AEC5BC875AD743CFE7B3E16B0C2E83 +:10A04000FEC2C1785B5F62905DAD651BB41E3B3C98 +:10A05000D6AB36F2C70B1EB61B3E69CD9ECEAC34D6 +:10A060007E5C5B0BDF2791754F284AFBF81ED3A25D +:10A07000BC08F779138FA9322B051EF31235966EA3 +:10A080001F99B12E82F35B22DFEF9BB3D4123CCA3F +:10A0900060B6F37C0B73CEC7BDA3A0BE6B5901CFD6 +:10A0A000DB1474D19929CF1FA9A9FE7B267BE65B1F +:10A0B000156C2796F795403969C0BE69F0C557F908 +:10A0C000CE631F7D4B11CF735902EF09D07DCC17A2 +:10A0D00000F9759F72BA77143EBF4225FB109E7738 +:10A0E00006F252DACFE4ED59346A99D379FE2DB7EE +:10A0F0005BE011DEE72057DB05111BED1F03EC19B8 +:10A10000B45F7C981F330AEDF91E2A37E3FA99866B +:10A11000E7D78E513DFB8A3378C301F201C51F0A90 +:10A1200045BF85BE10F707AED23F4C3DAFEF673B52 +:10A13000293E849F7C9A720E8489F359437D8F70E7 +:10A1400097E179673C445FC4B71CC52CA85ED23F39 +:10A150002F93E13CCBC4DB62B4B6605EA5B124951D +:10A1600015AC8FCA91088A46E72ED6331EF751C820 +:10A17000DF61BF267F44B555E5D3F12E3853E82A79 +:10A18000E9C684FF6E08FFDD4DEF3BB5E8EBF14A11 +:10A19000F2E3BF8BF43DA7361FEA83BAF1D69DA741 +:10A1A000E3F0F156E11F6CCD72FAEB4FF8B87E94F4 +:10A1B000E5D65C41CFAB053DF5987245CAFA201053 +:10A1C000C14F3ED4D93C8FFC649DCFC7FD5C8EE768 +:10A1D0002988D23E4DB0DCE4FC1C07C4A49CDB788B +:10A1E000DEC7F38B26F963491FD0DD6F761F512C34 +:10A1F000EECFF6A5593FB2DC2CFCD9CE963895BFF0 +:10A20000C4B507FD040B9A197E0FFEF28BD81F8C84 +:10A210009740BED105DD3E7BFF26E3E7CB9AC91E02 +:10A220009EA6C65F41FC7A6B5837F28FB79CE71544 +:10A230006B22FF5AFA61B29F3E815759CAFC635F95 +:10A240005567CD6EC04BF7ECB09027318A6FBCEDEF +:10A25000EBCF33213FF83E45C4F9149F585FCC3211 +:10A260008B06D69786174168B8BEE2547A917F3440 +:10A27000E4AF0495415C37B08E543FD74B59AC6F77 +:10A28000C09945BBFF12338176BF0E08D2F2A84CAD +:10A290006229F9049F7BF2F8FE7336949FF8F278F6 +:10A2A0007C0BEB75E85FC7CE213E80FFD7ABD46F48 +:10A2B00054C3755224E02B92EBACC1B9CEFAF931FC +:10A2C000D7892FC5CFE7AFFAB91D8EE3A39CC9BCD0 +:10A2D000AE878C6B85FC69E25A88517EFEAEA31274 +:10A2E000E9674E62FFA6621C8A7D73DE8B33286E9F +:10A2F000B41FEBAD6D5DF3280E3585F37781BF7B21 +:10A300001EC5952E1471A919CEB854959FF373A943 +:10A310009F89F81C8F678CF7737F5D379B296E527E +:10A32000EA17F23CCAE32AFDF579BC7D7FBD96BFF2 +:10A33000FF1CF190F1FEC2B4F1905AFFF9E221C284 +:10A340009EB5FAE59C33EE2BF3682FD34224277C8D +:10A350006B781EEDC86A7EBEC9AADE701BDDAF82B7 +:10A36000FDE17EF51A9D215DE03DD94FF2FB91B6EE +:10A37000E1F06F828DCE7A697F9EB5333E5C2AF222 +:10A38000AC4B594A1C19E5AAB05BE4798CA1EC9658 +:10A390002FFB5D76CB30F3A97FA944AF22FC0DF3F0 +:10A3A000FCC650F1864C7AB875F6E4D70A80FF8A6D +:10A3B0002EDA3FAF1EE6A3E93DB80DCFB665F173C7 +:10A3C0002847AE36285E773FF3F13C66975CF87815 +:10A3D00019CFB37EB08025F84393EE8B0A4ABA9A20 +:10A3E000D1F568074BB9A8C49FFB33DAB306D25B3B +:10A3F00043BD9C207EEBD7C3EC3495FE15118657E8 +:10A400000D3CB3764E2EFAAD41D695765D4AFE38B8 +:10A4100023F84367E373B01E067EC07856491CFCE0 +:10A420001184C38E1E0B1731264311B951689B420C +:10A43000A7FC7A1F4B3DA75518331DF54A714EAC4A +:10A44000B821ECF88EB571FB168FA1F17D231EDFCC +:10A450000FAF009C550ECEDF0F8B785E496392E400 +:10A460007959B3D32F0E8BFCEAB0EB3B375F6D9776 +:10A470007C05E601F215E02192443C1CD7E85E150C +:10A48000BDCF2BD605A3FD87338CD3BF6211A3FBB1 +:10A490003DDCF8907C07FF913F3F02FA49C2736FA1 +:10A4A000D88927BFE5C453B0C689A7AC88133F122B +:10A4B0006F39332C473B8937791F56263C9537F542 +:10A4C000ACA7FBD53E279E9E76E1A92C14237F5294 +:10A4D000D3938A027C71BF386FF5A0E07724A02F58 +:10A4E000C5FE927871F37D4913F031CA8D0266E1A1 +:10A4F000111A569B4571E9B0C0A7B256F2797AFBA2 +:10A50000D3CDEF3A5E3F40FA3541F65B10ED36E2CF +:10A51000F77758AADDE6F165DB413CBFE8E372CB93 +:10A5200007760F1E5691E703411EBF4572A35C7567 +:10A530009C6BF08A73EE6EFB4FD399A5A6D8BD63D2 +:10A54000457BB4AF59CA7CC7A27E9D887A8CE3490B +:10A5500009F1F9B19DA06F53F64DA5FE18EEBC9917 +:10A5600029E27FA8778383D7F7489C2FCC73641B9D +:10A57000BF0FCF5A17D9802E1800781CF9778C801E +:10A580006F8C3C67B3CD79CEA1DA4ED2394EF73914 +:10A5900086116B9CE72BCA85BC2F17FA806987AFA1 +:10A5A000A0F8E63A30AB2BF1B9F3BC4D55E73105D5 +:10A5B000EDA50BD6F0339965EBF839BC116B58A4B7 +:10A5C00031659CB27876A431E5FE18377FE6059CAC +:10A5D000FAE1F62BAE2279F59D75BBD39EB7DADB97 +:10A5E000128E347A303FC947E5053B8FD97E8063B0 +:10A5F000ACCDF1603530D50A0DF0ED032D000FD84C +:10A6000095FB5A4C6A5FB93A5CFA08433AC5AB020B +:10A6100080DF31767C36AA25CB8EA9645FEAD151E2 +:10A62000F85CDE5F31766D39C13F66ED082ADD7A70 +:10A63000A76CE5C1975AA0E9EE75B00E50FF7EEC0D +:10A640008DA29D753F369989FD5A2A9EDF9916E0A5 +:10A6500076E99FFCD149D47F531EE12313BEDCE38E +:10A66000C8736B30DE0B63301F2B37CF71DE70B7D2 +:10A67000E8E3F200B7E7E4B941D94F47A73C3768B0 +:10A68000A9E8D75775576EF0E13EA3EBDCA0CA7876 +:10A690003CF44E3C370820F7F9E3F504AF99729E7D +:10A6A000B56AE0DC60D9CAEA00E26DB7CF560300B4 +:10A6B00057D91D2C82A418978079A5F217FC3F0367 +:10A6C000A65C65F7CDC635F9277F7C6160DAC07C72 +:10A6D000CB7DA14823F2BD387F3652F075CD3AC606 +:10A6E000CF117583A244FBA7D326FE9F2FE4FD6EF6 +:10A6F00021EF613D2C589422CF77C7A3749F9D947E +:10A70000BF52DE8218147ACAA27B17C7AD73AE831C +:10A710002A2157AB5D72B54AC8E32AD77337FDC605 +:10A7200025CCB4F494F373F3FF6AC9FFC5AC04F30A +:10A7300064CFB259C5975903FC21CFB5B9ED237742 +:10A740001C4FF63F39E91C5FF63394FDA4E836C58B +:10A750006F3C6166221F6F2B14FAC0156790F60BD1 +:10A760008BC46DB4FFD96266E23E6F78419CCE7DAA +:10A7700084EB59C442F88FF3FDF7CD06FF4EF5D9AF +:10A780008A5180F7501DBB04F9F69E4088C67D4B68 +:10A790008DDD837C90BF80EFDBE40B3D703E396A3A +:10A7A0006B0372B42610DF81FC29E5A91537D5505B +:10A7B0001A792EE5B75B5E07DD727798792E5E3DDC +:10A7C0009E5C6C0DC60F806FA5E62B6CAC10FAA2D8 +:10A7D0009CEBCB1D2B74717FDFF59745AB19DB72BA +:10A7E000F5FE70A149E0244DBC97EF7285DEBF16DF +:10A7F000B8A31DFD9F2D57F0FA9B8155EDE8EF6F33 +:10A80000F98A42FED1FBF89EE29DA594B72CEFF1A8 +:10A81000547DCD3756A2BF50CEEF31DD587EFE734A +:10A820008978BF6772EC403B4D8FF05C552157BC77 +:10A83000AE3C143DE4DC2FD157F07B2CA4BCD157A7 +:10A8400070FF63CB84A5BD08079EA7477A1BBE6631 +:10A850003A6FE5EDBE8DCE11B9E58E4FC89DAF8A3A +:10A86000F3CA20777A902F34D3798E5ECA9D1E1456 +:10A87000224087B1539BE91226AFD5AC5AE88F0529 +:10A880002CCECF8CC797A4FC7E0BDBE33EA11E63CE +:10A890001168EFA96F66A827BC0BF87D0CDE7A7EE5 +:10A8A0000E51F5458E205FFB0A8E4548BEBAF8F87A +:10A8B00004F2ED34E4DBE80984EF8380D8BF67114C +:10A8C00085C70B79FCA226103B89EFAD7273030F8D +:10A8D000790F8F1FE9CF7411C7ABC4F947D9F9E2DB +:10A8E00078721DE460BC61541A7E360B86B5FEEFAB +:10A8F00032A2B997E1FEDF2F3C118CD766F2A7A4F4 +:10A900003E95FA57EA55A997A5BF5517AC4CBBBF62 +:10A910004BFC0FE374FD7A7C82EE2A10707435B222 +:10A920007A7EDF08E767AFF099CF552C0E1880F2DA +:10A93000C9418DFA93E76C257F06329C9B927C2D52 +:10A94000DB4BBE76B71B2E3F1BBE786715DA19E2CC +:10A950007E88B1DDB73DE34FA33F65BFEA607E9ED1 +:10A960001C3C8F1E5D1F88D6E1FBBBEA224DE9EE41 +:10A970009DAB0AF178C78E155BFDC8E7DB115F2937 +:10A98000EB3F10E47838376E35E1EB5A81AF47760C +:10A990003AF1151E025FB2FD5F015FBE3198AF2E26 +:10A9A000F095E99E82F3E0EBDAF3E16B736C7727C5 +:10A9B0009EFFB0E36A6434F4BF35A6262F85FAF60D +:10A9C00026F531B457B7C676FB46239F6D7BA63C70 +:10A9D00008EFBF1CCAE2E7FBCD642FB6B3AB55BA94 +:10A9E0009F7793CECF196CDCA63E64A7F0E3DE72AE +:10A9F0007E5E6663F9E2C092143CECDDF68CE33EC9 +:10AA000088BDAEFB04645912521CFB16F737F238AE +:10AA100041499C25301F605E235F17FE02F0DBA1D9 +:10AA2000A93FCAEB6343FC9CFDB3933B66A31CDACE +:10AA300054CEB7E7A4BDB3CD65EFC83843A09ADFC5 +:10AA4000C3BB2D0EAA1CF74F2EE1765850F805F027 +:10AA50009EF6BB03B54E3F4013768D77A7EBB9B09A +:10AA6000833C2E7B47B6D786F03B73E7F5513CEC31 +:10AA7000AEA0384F5FCC46D23920ED31FF6880EF71 +:10AA80006C235E888DF9DADD0ACAEF924FB4285F35 +:10AA9000FFDDE1EB26A49CAB0FF2FB73E4BD8F93CB +:10AAA0009F651A5EF5923DCBA478AEC4EF9E20B7A9 +:10AAB000AF65DEF7B4E3512DEB7CED44DC75E6EFDA +:10AAC0006C2D3B4DBBC690B8D7484F52BEC5A6C9EA +:10AAD0008689F1DB2E85CB49FBE71EC1C78CE8BA1E +:10AAE000F7267317C6DF0EF4566DA1AB34E2561D80 +:10AAF000F677C08AAB55A1CC72737988C333A63E72 +:10AB000012EDBF4C90FA4B3EC6EF994986AF077CD9 +:10AB1000DC11E2F6D28100C807C253BC34351E9A5C +:10AB20002FE095787AD28A6F99807A0DE0C06EF224 +:10AB3000CA9BE99C871CEF40391FEFC06B2AD97D67 +:10AB40002591571E437D23FB93E33D19482F8F0A20 +:10AB5000E57802DF3FB6125B26A68CE7AD778EE77D +:10AB60006D84F1A05E7242A5734299C6FB7186F1B5 +:10AB70008A85FC93747BDAEADB3209FA09E078C84B +:10AB8000FF385E28CD781FDFA364A5ACCF3521AE9A +:10AB9000BF9F9678D4E3A50B53E4D03B823F1E01C0 +:10ABA000F981E729368DEEF0231FEF551224CFEC03 +:10ABB000C92ADD6FDAB5F34C12F3911F895256257D +:10ABC000CB9D61CF463FBB1AED4792BB73E83B4537 +:10ABD000EF5E4FF7D26E63DC1EC3F8410E1B6C575D +:10ABE0000BFB10F89FEC8F110BF89D69E16DCD3FC9 +:10ABF000C57BE9FD6BD508D997E0CEEBD307E233EF +:10AC0000DB3CA23FB1EF26ED8B1261A79FC7CE8838 +:10AC100030B9AF4675BE0F27E337AC2ECA94510347 +:10AC2000FB1D324E29F739E4FE460E4BCE4EDD7F3A +:10AC30001B85E7E846E17D2089F538B9CAA845F7C4 +:10AC40009A8DD9169F43F77661BCA012E31DDCCE26 +:10AC50000F8E7A20B73FAE793163FF886B00F92001 +:10AC600028CF17C64BD14FEB75D55F71D5F538D7C7 +:10AC7000437A239773ECC541F9BF5688F2C4781C18 +:10AC800048C6EF570479FC7F6BEC1E3FCAF54702BC +:10AC9000D1E9A877A607391CE05FD4E077EC2AA0B9 +:10ACA0000BD0A11273922CCC0B65EAE7A16F18DAD6 +:10ACB00091DC5FCBFD5937DD32D157D251D2F5B39C +:10ACC000D21354A6A5A15F857130B227EDF3C6A5B6 +:10ACD000CAF5D30AF9532C4274AD6631A26BA9CFE1 +:10ACE00054919E55F3ACF57EA4ABD09F15A0B75000 +:10ACF0007F3E185B4DC4CC4457BD46D029C6E345C2 +:10AD0000EC98E288D3019DAE0E150EA6D3E6D81CB2 +:10AD10003FEAF3BD11B507D7BB5B8F33B3BB1EF161 +:10AD2000BAB7BC8EF641B6D5DCE347BB00F438D9E0 +:10AD30000576934AE75987A1CFC9BF2A093D49FE45 +:10AD40005557AEB80760B491C07BFAF7A23101FC49 +:10AD500030EBF4B1B9390518D7E57AA3CB930C479A +:10AD60006AB17DB26131CA8907B89C7824E696132E +:10AD700009DF1228DF0DE672BEDBB9E172F223753E +:10AD80009BFC0739FE87C1BC0EF2EF4249CA3BEC7F +:10AD9000BA6235DD8324E5CAA076AEB8E61F9F7A95 +:10ADA000B502F3B9DEBCE9A32CCCD7F98D7E3A0B02 +:10ADB000E13BB1EE5FB330CFF0CD751A9DBFBF015F +:10ADC000FB017FF7C696FF9C8E71AA2E61B7BC1758 +:10ADD0008AB6211DD85A9E67B22CA161B09AF31B86 +:10ADE000FC7FCBBE200A85FEFACA9E7C475DC2B1BD +:10ADF000D2CBF7EF6E79EC8851067858B62F97E2F0 +:10AE0000562774BE0E4E1CACD885F1F8A342BEBFC7 +:10AE1000178A6DC571111EA4CB6F0E7B453EE331C1 +:10AE20000FD78FD105B89F1217FCE286EBB9A78325 +:10AE3000D4EF4DF76964572D02DCAE05911C6FBA53 +:10AE400085E2406EB86F7AB3E7B95280EBA64D0A3F +:10AE5000DD6387EDD781DF185FBB91E2A0EE792D2E +:10AE6000B29DF9304B7A6E3388C9B5DAF9C5182F1F +:10AE7000ED54480EB8F3786F3ECCF3070FF4CE359F +:10AE800058BABCE4A6BFA13CBF9B5D7156B75D75C7 +:10AE90002824E245D3D985684F9DE95D48F1D24C1D +:10AEA000FE9DB4A34E807D8FC9ACEFB7F8A8FCB06F +:10AEB000C5A4B22D64F1FCBF43479E23D9A11F9BBB +:10AEC0008EFC76A0F79DE075F06A7598DBF55FD88B +:10AED000F551EB938CE2531A972F51922FD70B3ADF +:10AEE0005CCA7C5608E07C58C40DA77C0CF594F92C +:10AEF0009DE956C8BF03E960629EDEF5888F89D858 +:10AF00003FB7E7AFC7DF4D39CFBC5F0D39E3C47F33 +:10AF1000E9BC337DB752E3E718DCCFE5BA68137CB0 +:10AF2000DAFAD4B7E723DF9CBA5BA17B9E4F615E60 +:10AF300037D6EF5322EB2D02FB38CA63C9A78C35F5 +:10AF40001BB8BEDDFC28F9A29FEF0EFF2FC28BE4D9 +:10AF500007584761919F155667A4E1BF21F2C54F7D +:10AF600079FA46E0BA77F3D5A90C7ECB07219E1774 +:10AF7000D46845E763BCE62616EBE0BFDB137DF93A +:10AF8000BF633E928FEA780C0CF33AA3F360FD1E88 +:10AF9000F884FB451B0E8EBA17EDE9C93FD329177C +:10AFA000BBEE89B229B8EF50F7931029D7BA17DA58 +:10AFB000BE8CEBFDD25DE29E27A14FBF80FFB406A1 +:10AFC000E3EB0BCFCFD22E1A06DEDCF8FAC2274E07 +:10AFD000FF6819C825D40BCB7AF9BE6FDD8BBA3B5D +:10AFE000AF8ECBBF7F7EFC4994C3CB7F754F36E6D7 +:10AFF00067FF41EF2E427A3CBEA73D1BF3254FE889 +:10B000007636E2F70F092DED7D284BB314918FE6CC +:10B01000CC7F05F96963FC7ED9EBDEC4FA4ACC33F8 +:10B02000F6F27CCA6797131DA0CEF3280FA6CF7F38 +:10B030005DFEC87D4516CF6F73E6C1EEF1D0FEE729 +:10B04000ADE067221B67CA03ECCF2BEC397F9EE48F +:10B050002AE147AE7AF64B69F39865BEA97BBD5FDE +:10B060009DE5BC870DF043FEAF0D70F16BA8B95E96 +:10B070006A7DD46BFB00DE3FBC51BC0BF7BF3FDCED +:10B08000F3B36C3CDFDEBF6F29F2FA3EEC1975DEDC +:10B090007B814F093921EB99F2631F07BD85785FEA +:10B0A0000178477B67C54B6AB016E31ABB3C04D7EF +:10B0B00093AF3D533401EAB7ECF7142CE0D3A13C35 +:10B0C0005849B7FE3C6541A7E53FFC09E5CBF6E7EB +:10B0D0002B0B7ADDB2FF8881FCE2C6EBDC9E2346B7 +:10B0E0005F280DDD7ADE9E4FBFD7F4E83903F9F211 +:10B0F0000F4F2BACB872F0F74D0FFF8CE7A50BBAD2 +:10B1000065CA63FE700FD7A31F1E5612784FEC500E +:10B11000749C86BCC4F9FDFB3F86F19BDEF0523E79 +:10B120007CD3F76F27BE7F4F6F26BE5FF1407B1148 +:10B13000DA1F4D1EBBC8A4923F6F7AF00EE2C79B88 +:10B140005FBAA348DC875AC2E5835D82F3BB69E737 +:10B15000D534BFA52C4EFCD8F48016C3F8CC599D2D +:10B16000D5EF4F43D737C5BA796FB7179D14F61E81 +:10B17000C66FD18EFBA5C6F3BB5CF936A499A07E41 +:10B1800056C4C77E98A5CABC271FCA9355A2D5AA84 +:10B190003D1BE9BEEFF72BF8797DC0832DF0A6A00B +:10B1A000DED35EBAAC98D3875968C7D3772052E70D +:10B1B000E2736C7FCC13F54F747C27F282F9F86B45 +:10B1C000C4F8007700F70DDE2BE2F78D3057FEF460 +:10B1D000AD07972DC07CE950369F67FFFADF23F259 +:10B1E00091C5FAFFD3712E5730BF9AE876CC932CD5 +:10B1F00076E4557B1DF1F5817C618F58D7CEF70041 +:10B2000017E53DF7E3F36985ECE25507B9DC5FBA72 +:10B21000D5EB880FAE3A78B9C87F779F3F75E64186 +:10B22000DF2CE4809B8E6EB9F09A4B2EB09D85C3C7 +:10B230008A6FAFF024288F1DD62DD9792B1EF75099 +:10B24000DEF0078F1D7DE53AE0F30F7AE47A75CAE8 +:10B25000D9FEF50AF846FC351D98C6D2ADD70FF0D9 +:10B260001EDF74EB159EA75DAF2146F2ECAF26679B +:10B2700005FE07F0ED5C9F376790B36AB6FBDEC151 +:10B28000DA1C3CA7F6FE776F1949F96C2EFC4AB917 +:10B29000EA96973BB3AC0CE736B81D24F129F128A8 +:10B2A000F974F9F756D238FDFC2BF954EAAF0CF9D2 +:10B2B000FF6E7CBADF3F27E4913BAFC29EC36AF0CA +:10B2C00077515A0D568371165B0D44907F87CA1FC4 +:10B2D000FB6A76A5D0C311BABFE6CEA38CEE634756 +:10B2E000FB05F78FCE3DC7E8F7DD3C059696AA67CC +:10B2F0002273D5E674F73E4DCDE6F2A5077D60E8F2 +:10B30000F7866C8BEA6D5A4CE48DF6D03E12E5AAB6 +:10B31000219CB9D9B4CE3CC25FC7F368982F7C8317 +:10B32000E82712543FB2C086FAD25DD617F17C6E80 +:10B33000648A7AFB28A87F25BB96D72F567F5805AD +:10B34000F5BFCF9EC0EB93D4291E60D97D6CE21768 +:10B35000E7415D571556877905A506EDD36C81F554 +:10B36000ED03BE6FCB66D15CE0BFA097D9FEBA01FA +:10B37000388306D4318F55ECEFE8D9FCBB360FFF8C +:10B380006EB8FDC97EEA746B2EDD9B530D73AD1C48 +:10B3900018A74EE7F3AF0DF1DF65D2E744C3186F8E +:10B3A000D0F38C482BB593F81B5E29EF6FD0829CAD +:10B3B0002E5A8EDABC1FCA9BB2793C7369B6C80795 +:10B3C00015F7F2FCF1A9B1BB781CF6F408FAFD07F9 +:10B3D000ED0C9D7B3AFD0F41DA277B23C0F9E58D0B +:10B3E00000E7936B73BA3C17C0F33ADF88DB91E94F +:10B3F000DE501EBB03CBF939F1DBB2897FF8FD4289 +:10B40000D7DDA0EDA67E43CD59484725CAED680596 +:10B4100088783DE6C52F8EF8F451B8849CF9B89A27 +:10B4200056773A49E36739C667E5A0A7609D5D3B5B +:10B4300093AF33F095496FBD3A83D7257C0D89AA28 +:10B44000D63E8BE0D980F04CF6262AF0BCD2756A45 +:10B45000E20ECE77CE7CD553D8FF242CE1FB895C5D +:10B460003EE27DBF53C57A9E7A88DBFD320F71D5EF +:10B47000496EB7B363DC1E9679810816CE8F699F3B +:10B480001461BBB32FAA64AFD73DEBCCBFB858E46F +:10B490001FCD7C91C7F166BAE4D8C587FE86E4DB90 +:10B4A000C543F8C90F48B956CA4A3F4BDEE93125B2 +:10B4B000BA279BF43EFF3D9A053A8B8ADFD7A0FD61 +:10B4C000B3D5E2F71FCFBC589583F1E6F26C1E2F7F +:10B4D0009679DD86A5519ECB41977C94FC3CE1B8E2 +:10B4E000B904E19F709CDDC8F129FA35393EFBF3C0 +:10B4F000394FF07CCEC97D35DFA6DF8BEBF5B0840C +:10B500003590C778E638CF639CDECBCF313E89E7F4 +:10B51000CE14CC57749E8FF15B0166A5E6FFD6E48E +:10B5200039EA6D7E4E5F990F3985BF625991524756 +:10B530003F534CFEBB933933AA1CDFB3179D798C64 +:10B5400028FF10BE0B93FC7E87E9C79DF4D5845C71 +:10B55000BD48D89391A44DF272C6AF9DED2E0AD589 +:10B56000D33ED34543EC33BDE1A6F3607C3AF242CF +:10B5700027B389DFC6AB1C06E1F384139F921F003B +:10B58000AFF4BBADB951275EF3EB9D782D8C39F14B +:10B590005ADCE0C45F49DC89B7B2A60B1CEF2B9ADA +:10B5A000EB1CF5916B2F72B4AF04C5955A1FD5F9FA +:10B5B0002547FBD1DD0B1DF5B1DBAE73B41F9758EA +:10B5C000EC783F7EDFF261F1C1849ED58E76920FDA +:10B5D000261DFA9AA33FC907F2DC7D1DE3F64D4410 +:10B5E000E4D10EC5071716D8C8F99F9B0FCA723E43 +:10B5F000DF7A9F2CF402E643A39D27ED803F7A4239 +:10B600009D68E7E6028FA03CCE6417E41E7E9EE2B2 +:10B61000FAEE3C8773AA45FB1F5BB5189D4F2A03C2 +:10B6200012AAA306EE03BE4B556F4CDDE79A96C3F4 +:10B63000E5C8B41CB1CF0FFA12F5635910FCFC3AFF +:10B64000FACEF13BA0D998DB41F7603DB0117F8F76 +:10B65000B32DB7AFC6CA85F58FF54B06EB25D0479E +:10B6600053D00F01B93F3BA790E47D05CA8B86827A +:10B67000668F62D1BD60369E3301FD48E7B67359CF +:10B6800081B2BA165DA77EFD637D0A4C7174F978AC +:10B690003ACF73A6691CDD3B7B26D47F1F25E517B7 +:10B6A000322B42F9085F117ECC99C651D4EEF51BBE +:10B6B000F03239C67E8133007BE37583E361A8F8FD +:10B6C0005CD3AE7BB3304FE7F51A9EEF209F2F116E +:10B6D000F85A92C3F31C5635066D7E5ED443FBE0E8 +:10B6E000E877E1EF27DE9AE0EB19EB188FDADCB6AA +:10B6F000DB712F80AFB7D9C6B8E7AAC357B0FEDF5A +:10B7000075837EAF7D95C701AFFD3FCC61BFADCEE8 +:10B71000E1E7D1578B71AF8102EF65BA06E8918BF3 +:10B72000E5F3B3E6E3FA80E74905EA7FD70B261B8A +:10B73000E0FD8A78A50791F8AF2CF2F21300FA37F2 +:10B74000722C1AE72A16F3A07C7985C54FBE5C9946 +:10B75000D29FEC0780437BE9D55CDB530472EBF4AA +:10B76000250AE97D18CF87CF63D797B56308578E31 +:10B7700027FB59C822D4EFD52CEA11F6A2432EAEEE +:10B780005E164CE6437FAB5FF7D23ED41FD79FFED9 +:10B79000FE5701AEDF2CFFF31378EE80C5FB2A5075 +:10B7A000FF7D659B46BF27FCF550B42307ED971935 +:10B7B000C33B4F3EF7BB7E5A0FABEFE3F6C0EA4701 +:10B7C000C7D239F0D559CEFB4B25BF2C13FCB2FAAA +:10B7D000E151746E5CFEEE87BB7FBCB7D3A27B30B9 +:10B7E0004D3A37DA5EC0F3847516DF897CDD66E694 +:10B7F00055D17DF5B9FCDE15563EBCFC475C533691 +:10B80000DA4F8CC3F173C1A70D87F3A708FB6D1F37 +:10B81000CEFF8DA71FAF4079F6D3718F8C26FF68BE +:10B82000EAF0F021E5CA7E614F31A1A72262DEA0D5 +:10B83000A7C81FF9230B4450EF679237FB851D768D +:10B84000A716253FE09C1A13E7CFC08D84B2E7B05E +:10B8500046BF83DA03F632CA9F6C1446526E802DBF +:10B86000988DC9FAF2F783C16F1A2FE4CA333927CA +:10B87000BFD8C6E32E4EFB4EC4A9A43D1783BF28F4 +:10B88000DF2F16F6C6D86DCEB8E7CCA44A7E6ABFC5 +:10B890001DE7B6DF307E340CFBEDE51CE1E77F668B +:10B8A000FB2DFE1BE4839E1A2E8F7B92017EDE030E +:10B8B0005417BF67CB69D7B9FB793787C7533EC8E1 +:10B8C000E17AA1C7E46510E463163FB7676B75FCC6 +:10B8D0001E59DCEA07B32F5AC8EB760E9473F3793E +:10B8E0007B433955E30379FCC79C331B3B413EFB4B +:10B8F000AA399EB18EBFD7098B8AF87EB59493CFB3 +:10B900005EC0EF9B17F7E04C15F1F0417E23AC478A +:10B91000AE9CC57A16DF279FFB0FBADFE2F13CEB46 +:10B920005F2E46FFE0058DCE5DFBF53E2337CD3C17 +:10B930009F44B90BEBE7FF02908D2F1D00800000A4 +:10B940001F8B080000000000000B95590D7053D7A5 +:10B95000953EEF477F962C3F4B602010907FF00F75 +:10B9600036AE90F9310E595E3021ACE304054A92AF +:10B9700036D945400BC4D8524276B3E93433916C82 +:10B98000927848A6E3369DD66DD3EE334D3AD9C4AE +:10B99000EE8A600727237B64E3804D216353A084F4 +:10B9A000CD640CBB4BB2012CC7DD42B693297BCED4 +:10B9B000BDEFA11F9B6DD61ECDD57DEFBE73CFF918 +:10B9C000CE777EEED34A4504580160ED1554AD02A2 +:10B9D000478F0AC22C009BA22C9304000880BD0252 +:10B9E000E7D70E15FA0E7800A20A5E9C0D5091ED75 +:10B9F000B729387E2E8CAD540A014605D54E73808A +:10BA0000B8ECCF06A897418D3A707DBC2067078EB1 +:10BA10004B6568955D00FF9923B0FD6ED2DF5A80BB +:10BA2000507B15801B20D8EE6663592FDEC74BA1D3 +:10BA3000B8C4C689DE1657A022B9FED6737326AFE6 +:10BA4000FF1BEA05FF6AF6BE81C3D258D56EA8C4B3 +:10BA500011BF9B709FB7BE2C67F20A957CB61FEE94 +:10BA60002FD375004DDC8C8B421678328A7227BE3C +:10BA700094D83A43EED2DE7B24C589F6C5DB068135 +:10BA80007088593C6114617B1D382E319B06A8A239 +:10BA9000AC4C5EFEFE721C6316A50571E9CA9AFCE9 +:10BAA00004703ED967F11C1408BF3670A1FC2E3318 +:10BAB0006CF3E35806A0BEE3485E37F6B3C57E0AD2 +:10BAC00080D7AD45A06A745F6E83BB1DC9FB51254D +:10BAD0009BE1BD5E01367665C54507EA31B918E0E0 +:10BAE00020D32BA927B07D0D3DCBB4B040FBA39E46 +:10BAF000B3985ECA410FE9C1F5845889E78D7CB2DD +:10BB0000A30D04B2A308C41661BA5EA14AD02007EF +:10BB1000E007CDF84C0DE1072A54E3F5ACE4DC5A1C +:10BB20008AFB14E0B73BF0132E695DBF20658E578A +:10BB300068BDF1FCB79525ADFBD7E07E3284251FAB +:10BB4000801DC76C17D9E961F6C9286FB68FE3E08D +:10BB5000459CEC567EFFD67A2BAA4573075F57DAD1 +:10BB600021FF91EC3F14777825B407BEBA09B012D3 +:10BB7000F9443BA3C87F10E297D7A28BFF141FACF8 +:10BB8000F4A04E8DC7DF5F68C671AF18FBC952BC09 +:10BB90003F60097C47417E1CF9580427E2F0F9BF59 +:10BBA000D8B47A9453FA5E479EEA982EEFA5F3CD67 +:10BBB0003F9A8FEB12EF091E441C12A6C985A46799 +:10BBC00030F6A959C5F1BEDE8BE671F2AF1208520C +:10BBD0003C54F7466A09C7D5D0D6A2E0582E428019 +:10BBE000C5C55C948772A6CE141F8C509C4D06165A +:10BBF000112FDBF5F832FC107B1EEF9500F43F6F40 +:10BC00006563661C18631806E703CAEC3171BE351C +:10BC1000C3D07CC2BD67E05B851E949BD0E48DC41D +:10BC2000AFF273D66D6A0AFF7E44F13F9B46BE6F4A +:10BC3000416EE005C263EFC025B313EDBB224C6E2D +:10BC4000700A2CBE5FA2EBD3E25BF6E4A4F2795A51 +:10BC50007C67C457489E34130EA1CF80E51BF4FFC8 +:10BC6000FE1CF4E7DBE77A976C27BC27FD8F112ECB +:10BC7000D7CF9AE1403EB3E7518AD3C8D9EB95E3D9 +:10BC800078FF7ADFDE4584E7F71413DB07E3615DB5 +:10BC900016C5DD218C074F326E2B286E51950A8A0E +:10BCA00087E534C778C8A77818AD6371DA2302C571 +:10BCB00029C6038B0F8C0785F2488582F1C19E2F20 +:10BCC0006171DF352AAA340FC7B3B4C56CBE6E0BE1 +:10BCD000CDBB46D72B02CD4584DE47F11B1F6472D6 +:10BCE000A2008BC9B502F8A329B8FC478E93E16B7B +:10BCF000E4CF1B393C9EED929416274E4934E28ADC +:10BD0000CF2928F1FE5F94C75A7FBC86A2AD4A2492 +:10BD10003EEE53381F2180F33C80A7ADEC19D8F7D5 +:10BD200041CDA64EB46FDF2989DD5FA93E598B3125 +:10BD300005D51BDB8ED258E38FD69A48BF76093CD7 +:10BD4000E8971538AA9867D73C3A7AD4C4C3B99C07 +:10BD5000FCDB3DF8B7E532F1FC230BD850854457A6 +:10BD6000DDDB39B3686E035198CE3F5497F1ED7621 +:10BD7000FC4C08E3CE42D4F96C5BC346D986F1B2E1 +:10BD80009ADB79BA6D4F6BB808E0915CF52CF1EB5A +:10BD90002957808D89B13FE7512EEF3973C919407A +:10BDA0007F779BD572858DB027EA982EFF28F10109 +:10BDB000F15C4E795D8F2F99EA56BBBB83E2EB5A5B +:10BDC000B7A4E621E63774BE43581D9D8BB87D9716 +:10BDD000C3067BBAA58B16AC1FBB5480E7908FDFE0 +:10BDE0001D6AA8A77AB2EBC7A64BE3A57CCD4D5A36 +:10BDF000879F67D1DFC561FC82F2835141D304166E +:10BE00009ADE38CE4367246F9CAD932F8DEB3EB9FD +:10BE1000893C698457BE90505EA8D794BC8E9FC65B +:10BE2000A1BA4F699F465A5F9A5CFFECC763B9435A +:10BE300029FBDE50B2675DC692068550785362BC1E +:10BE4000F0C689C76725EF41AA79320C5B50AFB7BE +:10BE5000458E0FE6491657379E1FCD1D42687EE975 +:10BE6000526BDD886B2DFA9CC5CD3A9E7F26BB04B4 +:10BE70008DC5C19B98D7715EF399A703F2193E67F0 +:10BE8000E6AEE4F6128F6A64BEBE2696CFE2A85AEA +:10BE9000E5F6EE427B35B297F0725279E5F661B97C +:10BEA000859B0524AF4D229C1A5E13C08DCFED7D7E +:10BEB00033DDFE908E4B63FBD8B179386F8A66DC38 +:10BEC000D7F10965E0F30E7D593D1DA705B98893AB +:10BED0001DBF2C84858413488FE7107F6018C1989C +:10BEE000379D37063E146EC48B2B946F70FD695DD1 +:10BEF0003EFE39B6234FFE5DC7A13A97F74B4195F9 +:10BF0000FBBF5193340DF5D9A9F3055EE17CB1E295 +:10BF10003FD98F089B99FDDD02FC5C986EDF9E4E39 +:10BF2000D37633F2B241C701E04933C5DF9ED7D2A1 +:10BF300079D7A0E3D09081433020A4E981F1EBD8F8 +:10BF40008E7EDBA9F3FAF67A451F267F36749AE0D7 +:10BF500000D51FE92BA6E79FBAB99F32F534F43319 +:10BF6000F4FDFFEA99E9A7870C3F2D8125697EDA68 +:10BF7000E8FE5A7EC27063796F9F95FB656A6849D7 +:10BF80000E54247991F9FC8676DE4FDED7CEFBCBBA +:10BF9000EED1C1D6BBD07E5F9FA4D47B683EE55C6A +:10BFA0008AF3AA3E09489D44ACEAE530DA7778B8CE +:10BFB000688B07E5FAC644161F55A77C9A0DEDF16C +:10BFC0009DF2D90BB31929DC7EAAAF27797DF59DA7 +:10BFD0009AFAB09EC9AD9D457222277D76EA070E7A +:10BFE000A365C42BE1D47F7F48FB568DC82B2D78E9 +:10BFF000FFC5B9128BABFB7EB6FD371694FB44AE82 +:10C00000C4F8756C74DF37C91F4D274585AE4F9C4A +:10C0100014D9BAC65F4A9A487E969E9BF518F92BAA +:10C020006652B8BE26B67FA86FB17BA723C9831D11 +:10C030003A6F7DB99E57492F986767FDF27D779AD1 +:10C04000585DBC7A87FDD7D4EF14AB1D1B14D4F315 +:10C05000EAFB4F8BB46FA24B80B908D5B1B9477FCB +:10C060001B46FBAEBE3B66A6E6BAB67BCC4C7578EB +:10C070008711EFAD9C2706AF76C7C5EDE66F60BEB2 +:10C080001DCD8238CA03B9CD4C7E691A33E6E3660A +:10C09000AADF7EBD4F0ABE7E91CD1BA8EF273EBE14 +:10C0A0002E681EFC7AB4EF08E363B0538039F9744C +:10C0B000BF6303ADDB0BD117A90E64E69127747E35 +:10C0C000EE6ECFB8AEF3F189BFC2C75FE7EAF9B54C +:10C0D0000CCA888FD7EFF1E7C4F3E9FCB2635117BC +:10C0E000EA3175DEC278F17FF092D5BF93D4AFA16B +:10C0F00063A7E2A24A3818EB264E4E99A99FDC109E +:10C10000FB82E1571F1B584FB83C008146B2F381B8 +:10C11000985D89A3DDF5E33CAFD4C52CACAE3C0003 +:10C12000D1FD646FA2DFC2AE87DF17581F62E4A59E +:10C13000DDBA7F77EBFED88D89D78DA9AE7198D700 +:10C1400033782DDD3FF797A6E353073C7FD445793D +:10C15000FE4898A232F921B1548036CA2F842BCAE6 +:10C160004DCCB333FF84BBF8FE8D9DE9728284B35E +:10C1700093D6A7D7BD9EDCD98CCF20556C62F965CC +:10C18000B816A84FBF5D9F90E99773469ED0FD52A9 +:10C190003F09ACEED551DD41BB87E3CD155090C4CE +:10C1A00029D32FC39EC29C99CE8FC6F8A1DE5F1BF8 +:10C1B000F34D1838D4B74515EE8791D1D91D54EFFA +:10C1C0001A564B61EA1FD6BA78FFD0F8972D9B7CA0 +:10C1D00008DD5571F0994EBC7F657BB498FC87E70C +:10C1E00089895CB4F7F8829DAF2CC3E73FEF3279C1 +:10C1F00029BF80DA514CF9F2A5B9AFD6FBA84FE8B8 +:10C200003479E9FC30512D85593E952737D07E573A +:10C21000FA0485F271A8F78FFC3C417CC1D11F1351 +:10C22000EE25BE607FFE6792EF57734DE48FE07A94 +:10C23000CCD7B8FEA1F55F98297F629FFE55EE0C22 +:10C24000E7F091A242760E1F913D735C8EDBF7E919 +:10C25000C12F795F685C0F62BC12AEC198C0CEA7D7 +:10C26000C9BE708EC0FAC2BE23432E962F7297911C +:10C270009B2A5CBC3E760FDA787FD1236805C457D1 +:10C28000613F8B8FA089FB2F887D4B9870790F9D24 +:10C29000B40AF3E4E9B7F6939C89B704AF858593B4 +:10C2A0007A86FADC5D9C0A50DEFF69A519EF975F7C +:10C2B000B0B0FE7337FAE759E4F92EBDBED1FC39B0 +:10C2C000EC7F22D0CCCE41CDB09F8DBBF0F337BEFA +:10C2D000E97961A2B7C54CBC30FA15761D79D4A4B2 +:10C2E000F33D33BF34E9FC6ECAE077265FD7BAD29C +:10C2F000F348E474D6CB946713239262110897FF36 +:10C30000F9D51D840BF6D50C17BD2F41BCD83923A8 +:10C3100031E6D008D7CF755E5EA5731F0212A996CD +:10C32000184EE26A3E96F71F29207F27FA6E2C0CE2 +:10C33000605E7EBBFFC812E20B1AC4F0DFFB26AEC4 +:10C340004BD1AB296AA724706B8E7AF17EF59CC421 +:10C35000F046BD8A095F43AF1E79DCE99D219E044A +:10C360006190F9511486D2FAFDD07B925F4B8933EC +:10C37000B4671BE5BB87743E20BFF3A84E6E75798A +:10C3800058FC4462DCEF621F1F71FF87F9FB131337 +:10C39000DB7FDAFD75E146762ECCB703C5E3B00C42 +:10C3A000E11C9C0F9FB7B17EF499D30D2590B23F4D +:10C3B00008FC3C1C324DE6B1F3E698C8F40B8D4DF9 +:10C3C000E5153928EF75ACA77A77BF9E378E15D85B +:10C3D000F710BFC3B4EF1C0033D987CF7F4CF518DB +:10C3E000F50DADE6CF37EBFCEA3E5D675F4AFEEA4E +:10C3F0009BBD4C4293B6E5F2BCF094CBDFE85A917A +:10C400003CB7DCAEEF4C393771F96827C5D5E1F39D +:10C4100016AD5EA073EE8D738F91BD23B297F27B44 +:10C42000A4CF12A6F357E8824DA37E0002816F507D +:10C430007C3FD3BFBB84EA2208CDCC1FD7FB475A31 +:10C44000D973EF9A28834153DFD93C567F7B56BC82 +:10C450004AFD0CF62FF7533F73386662FD8CEFD41C +:10C4600072C6B7C32797BB0BE9C0055E3BC96D1AFF +:10C4700091FD84C7E193677E528FFB1EEEBE97F558 +:10C4800033C2A9E56ECA475574BEA57E66A488CDA1 +:10C490000D7B5A5C1CAFC4808DBD6710A080F30576 +:10C4A0008AD2F8D2D8FD01ABFB8DBD929ACA1BE3AC +:10C4B000B99FBA64C69B5F105F708C440595F1E12B +:10C4C000101F1B7B0FE7911D7B4D51E6DF48A789AD +:10C4D000DFEFE223401B7B2E8C6D22F9F37774098A +:10C4E000FD7042D0BE4385FC84DEE79FF828B0880B +:10C4F000F2E1897B0225342E72A7BF7F09C33AA6D9 +:10C5000037089B99DFAF75F33E2BD38F77BA793E0F +:10C5100075BA619B7F86FB7637E7479D99BFFFA180 +:10C52000FE6C1EE6B70FF5FAFD20E6317AEF78567D +:10C530008F97DF83DF84673D1CF979335ACAF3E6AE +:10C5400016CC9B115CBFE50113EB2FA09AF7DF7EA1 +:10C55000FCA7FC55D22EA7E5ADADB7CE151E13F93D +:10C5600075CBC6F4BCB655EF8FB6FE95FEE8B84B5A +:10C57000AFC3C550CCFB75875D60F51CFB4FD68FF4 +:10C58000684514DFB7EB8F8E613EF3603E1BC67CBF +:10C590004623D6A931D70C752AF379A34E45CAFE96 +:10C5A000C0DEFF9C18F8E8B7B92C7FDAA080CE2D4A +:10C5B0005FA136886393A2EB9AF17C043633FF3592 +:10C5C000C337D3F867F8F11AF5E515D3FD7845AF11 +:10C5D000F3C152CB45C22F28E1390EFD71A0F5A061 +:10C5E0009FF8638A45C2B4DF27A227AD8E067B9FE2 +:10C5F00002AA2B9132DEAF5DBB57D028EFA3DE0B32 +:10C600002DA9791F467F958BF7B79EB7B1F3D74019 +:10C61000D91F589D6F8A8F9A292F15776F7F81E2D6 +:10C6200016097886CE390FEA75709395D7BD078DB8 +:10C63000739D61BFCEA308B8C23C3FCF6223ADA7B4 +:10C64000BAF8A05E073755A7FBBF044637CC473D75 +:10C650001E5105D64F3DA49A66E4CFE647977D402C +:10C66000EEFABAFC2972079C6ECA03A3530FD37B60 +:10C67000D613659F2E245C823AFFBD259EDE71DCB9 +:10C68000D7FB3B65590B3E13B23B2B15E4F35C37EC +:10C69000E77FC8BE50A37ADB9113B893DE5B24B466 +:10C6A0004BBB3089DC927327BDC7989D8C37EF1C3C +:10C6B000A87ACA91EA472EC758F7CF2E858D274C06 +:10C6C000DA02CA1750E19EF19C9899972365C72B0F +:10C6D000C92F2706462ACD29FEBBBA2F50C2EA4AE7 +:10C6E000DFD13C8F23956FA2CE37998D82B059AFA1 +:10C6F00097E9FCBB4AFCA3F356F7D9BCBB8827DDFE +:10C70000B5B3054F4A3DEDF9BD73718ADC6B3189D4 +:10C71000ADC7F353F1D6EC543D5F607A5E8B72790E +:10C720004882303B37BDBB6CE501EE8EB048F3D29A +:10C730001DBF61E77C6861EB0DDE6699C2EA7CB4DF +:10C74000C7044F86E7E727ED8E9A81C909F75BB4E6 +:10C7500037D8B900583F97B8A8B07E186001102F9D +:10C76000DFD579F7777A7E5B854D30F173354425D7 +:10C770008A975520C3E3349731D0715C031A3B602C +:10C78000AF92E3034225BB1E96919777C338BBBE99 +:10C79000965E1DE173F78047A6792D845BE88812C9 +:10C7A000EB7E47A2F413CF93732F23FFD8596C0667 +:10C7B000BF257191E1B2C1475C8C4D0E7B2F6EE8B5 +:10C7C000BD52E07AAF52C14AF9F5453DEF7BEDDC51 +:10C7D000CEC96BC0DE8B197ADD25C34609F5BF5B78 +:10C7E000066B16AE3F3424B2F8EE1FF76894FFBC18 +:10C7F0006EFDB9FFC2E7F259CB028FFB9276D6E00D +:10C8000073F43E6E958C2766864F7C467BBFE7E6C9 +:10C81000BF57A1A4BF2779B5310B7B0F2E5AC31286 +:10C82000F1FE79B787BF3746DC9C28A7A64D80F379 +:10C83000B88FB790DB67C8AFC16E2FC747EBB95D44 +:10C84000F44AF9BC8BFF9EE264BF83AD57081F21F9 +:10C850009E27DEB47F7D1C1379C0F476EE9C9CF895 +:10C86000FEF2E4EF4ADED8F1F302C6ABA0AAAC5E5A +:10C8700079AD8E38F5D1E8F5ABA9FDF5ABEE1D3FEE +:10C88000A478163C0AC30702E0A1FC3F075E53A848 +:10C890006F16691D627921CB5949BF3B91BB3E435D +:10C8A0007F3DA2F3EC4216CF0B6F6A9B3DC4EB4772 +:10C8B0006759D9EF3E3EEBC22A3A076EC809FC9091 +:10C8C000F2CE05A1733113266B2BFCD9495EDB41F7 +:10C8D000AD26BC6FD8B87CEC26185F9FB5F2F93F47 +:10C8E00065390FD268C7F46D45FD5EC638B0D27B9E +:10C8F000541BDF976294F81CD6DF9F863FC9D6E8A9 +:10C9000015FD0DD1CF4889D1E51151BEBC0EE2AB6A +:10C91000503FF90E33BB6F21FBEC49FB8CFD0D3B07 +:10C9200033F727BBD718768BC9FD0DFBA7EF1F3652 +:10C930002DE1383C4DEB11877EC21971F847B629BD +:10C94000688B0907C37E740CFB5D4BD17135705049 +:10C95000C86F545754F49BE177C4F5E52C8E83617E +:10C960003F1EE3AC4C8E07FDB774BA7D067FFE1701 +:10C97000195C08DE601E00000000000000000000DE +:10C980001F8B080000000000000BDB29C0C0F0A3D3 +:10C990001E8159B851F9E8388F13957F84807A4207 +:10C9A000588601C19ECFC1C0D0CC0CC1F650FC8CC2 +:10C9B0008981E122142F6386E01D2C083DF2EC0CE6 +:10C9C0000CEA40AC0FC4E6ECF8ED9265C514F353E5 +:10C9D0006060F8A68CE0DB493330B402F17D69CAAF +:10C9E000FC358A87069E6E8ACA3FA287CA7F61C0CD +:10C9F000C0A06686E01FD523CDFCD940BD7380184A +:10CA0000001D35C0A9680300000000000000000000 +:10CA10001F8B080000000000000BC57D0D7C54D565 +:10CA200095F87D33EFBDF9C8CBE4254C601286F054 +:10CA30001202441B7408218636EA040362A5EE88BC +:10CA4000AEA2EBDA217C45E423D82AB1A59B07F9F5 +:10CA50000412883556147407141B157783454BB799 +:10CA6000D60E42BBB8FAEF2FF5675BDCB5368052C5 +:10CA70000A7E446B85DDD5FA3FE7DCFB32EF0D1310 +:10CA8000C06EF7B7F1D75EEE7BF7DD7BEE39E79E40 +:10CA9000AF7BEE1D8F7F1A0B8E67EC73FCBB92B1E0 +:10CAA000652EC6587EAA644C3606BD5832F3F3098B +:10CAB0008E3AFBDC7D21F54F273BEBA6E8F75B8C3C +:10CAC0008D66EC6EF10EFEA258AF13150B1EAB6413 +:10CAD000119525CB52FDD4315E375C12FB5CC2A7A9 +:10CAE000CEF7D638A77D814B580E634D5E5EAEF112 +:10CAF00007766279DA57946001C6DC52BC14DB9980 +:10CB000033E1934A28DFCA4EB4507F8D97C6A630D2 +:10CB100006FF9EDFAF658087AD676C3A63EDCDFDA4 +:10CB2000F7BF3D31F55C0DC74DA992FA8AEC32A0F2 +:10CB3000D4988CF3EAC43EB1CE06A2EE20B40B46E4 +:10CB4000A66D84FA34801BFBA972C5A671BC44593A +:10CB50002C9BB16A6C0CCFF7172CD9BA00DA7F1472 +:10CB600051231E78EB65C6830B8A19EB9EFEF350AA +:10CB70001CE0F2CA26D3B12C65D1FE72FCFE3BD07C +:10CB800019637FF2F2F12CB8663217E12305BF1367 +:10CB90005FBF669CDE5DE38C2D358887FFE78EECFA +:10CBA00082475D0AC74BF7F4493B4C98435B7332AD +:10CBB000590ACF5A9A598F0CF36E5306E62FC4F6D2 +:10CBC0002F2B34DFCDCD5E7ABE7FFAA49C4180E767 +:10CBD000321C777A6ADCCD33FCF31304672CCE6009 +:10CBE0005E6BCAFBBFB411FA5546EF4BBAA07EFA92 +:10CBF000C89EAF20F92E43E2C077DDC59124B6333D +:10CC00008B053E198C07F5EC4ABD02F15737A3920C +:10CC10000DC2FC3D9540078BCFE07F6E83C3EDAD29 +:10CC2000640903FA97461F66489735458C8DA156CF +:10CC3000AB094F16FF292C021F11FEB50278EEB783 +:10CC4000B872E01A6AA7E81C9FFEF2F85C7609FC4D +:10CC5000BB8CE34F87FF3E2F612CF09FEE18F289CB +:10CC6000C7B0E115E1605D1FBA2FC1FE6DCF817EB7 +:10CC7000EE37AFF903F15FDAF3C067C76284EFCA3A +:10CC8000BBFCEB9067DCB7E5209D0395AE231EE867 +:10CC900027100FF4D44D4BE133EBCDDAE441DBBC8C +:10CCA000D7B2ECE0F12C42E065B40EC4F7E9FC6BBE +:10CCB00095A79BA3C9830ACDD3655F8F23B5DFDC1E +:10CCC000CC58D293AA6F291E0A010A5897796D543D +:10CCD0009E0175652824212A775D1D9D5300F04E25 +:10CCE000EE0F4560FC4DB9D0E997197BD05C9E34BE +:10CCF00081FE8116331481B253497B7E5584DAB7A5 +:10CD0000F860DD959F3DFE1B4824E0D36EC50CB155 +:10CD10000929B9A1087229353FFF4F09F0DA2D0D15 +:10CD2000EE3B867C991B203E86F79D72059573D459 +:10CD30003C6CE99591AEAAF59DCC5AE53C2AEBD422 +:10CD40000A9C9719AAA7EF35CE77EF0E1D463E6FC6 +:10CD50009F3A3AB2D1869F5798447CBA45E1F07623 +:10CD6000294EB8F7E17B80772F8E8CEDB2B93C610C +:10CD7000FAC2D0F55332F483782A64EC05B6C03495 +:10CD8000357CCEE54037F230AE830235B1AB186763 +:10CD90001D0FCD9BE2786FE6DADFEB0B42F3B25169 +:10CDA0000C42FF801F3544CC686F4F70B224BC47E3 +:10CDB0003C00AD109F6DD5B70D2C84267275C0CC8C +:10CDC0000AA0346F27FE051A13BE883DE0BD128C01 +:10CDD00033E4AB2A57FC15EC4FD66354B7E457BA8B +:10CDE0007C1F899FD2E5BA1272AE1FA643DDEAA36B +:10CDF00004FF3FAC137FB3347D62D6D278B2800F8C +:10CE00004676EA972B870EA3DCED9EA21AEB0197DC +:10CE100072B99A443EC1BFA12AC13F8037B9B27DE1 +:10CE2000009F2B38FF4BB03F58BF8887A00D0E7670 +:10CE3000FE75D584EBD2368F0FD2D6A5CC62394998 +:10CE40005CDF3D7368DD658BBEE5886ABAF9B803BF +:10CE500038EEF0FABC6C5E0EE81226D7A847081E22 +:10CE6000DD64711B9FB5E3BA9C0C704BB14F111F71 +:10CE70009BBFF20FF4BE45896F5D807C5CAC5AF2BB +:10CE8000D3C177BF16F2792BBECAB7E193F5D07341 +:10CE9000205008F5606B73133B0670785F9AC10CE5 +:10CEA000A0AF5B8F44A3D0BF8A7340DE0955F21256 +:10CEB0000900FF6CC9D777925C0F79171888CF905B +:10CEC0007EBD41F85E47FD2AC6C58B09CF2193F888 +:10CED0004B0D461982228719C7BBE027E0AF90842B +:10CEE00070789DFC37CC672120EA8C149C67EB6935 +:10CEF000311FD16E443E3C6BDE0915FBB3D519AF33 +:10CF00009B0E3C65ECC72E8FAADB897F946A3FD1CC +:10CF100055A9918F0FDAF948F4D3C2381E87E93941 +:10CF20004EAC4FFC0BA2FE893CB611F8B3BD607647 +:10CF300068213CBF42E276039BEBC48BF53DE0EDFC +:10CF40000A291FF11877ACCBF6824939C8174CCBA8 +:10CF5000CB888F76D0EFB2CD9E69572C3812345ED5 +:10CF60004B214B8C423A7E3AAD8CE4CB08FDA4E3D6 +:10CF7000B5655CE470BC92E413C9E33631DFF4F9C3 +:10CF8000DD82F342B8438CAF037D58CEDC22659836 +:10CF9000AF35AF966C31AF6066785AC4BCAC790CD3 +:10CFA0003FB7E637C277E9F318E97DEBB86808EDDB +:10CFB00034339BCFCF2D39E72707F9FCEE16745396 +:10CFC0003458E701871CBD1BE975F6FC62C477C3C2 +:10CFD000F3D3381FCBBA97F0638D2F7B7F9E944796 +:10CFE000A5E05C2FE97C9C613822D48F5BE7785DFB +:10CFF00022C5D7233EDDC1F601ACBBB528C90B1550 +:10D00000F17E2996D1F926E0B575FF0C568EDF69C1 +:10D0100011B61C4A558BB3B9D0AEF533B7C05BA57A +:10D02000836FBF2339ED3D0B9E95084706FC7E308C +:10D03000029F7FF093AB89CFB79D9FCFB765E2F397 +:10D040000F7E3299E36B5FBE033EAB5CE93DE0C00F +:10D050001713764481E8BF283C508B6BF821EDF024 +:10D06000E138949B18877FB37662B602EF4FE5C72D +:10D070009F42FCAD686A34506E152C622E1C6FA363 +:10D08000E0A759EEB0EF28C0735F5D494E3D9403B1 +:10D090009294917FB681DC46BE6C69060107039EBF +:10D0A000FE2D877B243EDBD2CC1CEB73CB72794EFA +:10D0B00002FADF52F3EC2F6703FEDA82A515A416FD +:10D0C0001B24F23BBC1247ED4B627C0B3F80B797B1 +:10D0D000106F16FF6D5B71139545D1785487F1C7BA +:10D0E00031F063A0BF501303039CFFC936FC1454F6 +:10D0F000BB4C4F80F0F00AF6B3223420A9F0DC5884 +:10D1000034A862B971586EE8D794423F5B5F9E586D +:10D1100061B79BB25DDC1F61E579426F80FCCE1E7A +:10D1200079DD3D04782A27A19A94B05D78114B20CF +:10D13000DF7688E7DD52EC3F901EE1C62115E7F16E +:10D14000BE65DFB010D9EFADCCFAEBB9E309E2B3BD +:10D15000D153119EDF0B7E65DBA591F8EBF7D2F47E +:10D16000B3F94B3192B538CF9372FC14CE5F0DF703 +:10D17000EBC807DEC6019D819DD2618D6FB201ECC7 +:10D18000B75062A93F185F338C9DC8E7FF2DE85266 +:10D1900058D9BEDA05F329289709AF85830BC8CF84 +:10D1A000F0A29FC09F93FD1F6E48A01BC6C61B899F +:10D1B0005AB45DF7CBF1FF46F8B4E9BD5109E0512F +:10D1C000D7F64838FE56254E7EA15AD3138D957357 +:10D1D000FA2EB0F195E6E2F356422C9A284FD1F799 +:10D1E0002137FFF7E6EAEFFA9696633B3FC157C453 +:10D1F0006E147C118B225FA8822F80FE59AE7CA416 +:10D20000FBC06C1C7F6568601D96C0F763908FB78C +:10D210002A6601C2B17585CAFD3E93BD8E7CA9B94F +:10D22000847C33E03FB43F45FD5712B79311078824 +:10D23000A75C03FC37C09386F809A4F0A1217E50B7 +:10D240007EB2C43A44A1DB484A08BAA20F1D9A0034 +:10D250002229B48845A21C3FE35DD09FBF0EA005E4 +:10D26000BCF8E27162E72D72E3EFBE03FD6F39E4B3 +:10D270008E98868D0FD3EC08BD06D69BDD1EB5E4D7 +:10D2800085687F7E7B222A637F75DE2C92F7078478 +:10D290001C017E9D8A78ABD33F247E65DAA80BEA19 +:10D2A000CFDDE436DE46B925EB64377A842DD11222 +:10D2B00006FB10F15B1631D1FEF2409FC85FEE1EF7 +:10D2C00049C40522EC46E05BD57039EC6B39E87750 +:10D2D000D8B5EE2695F73F1FD8CC119F49D03A120A +:10D2E000EC41FDE338A04F12E8BAC81A4BFAC8BEA9 +:10D2F000E3F63BF2288F177DDBE167771A152C9355 +:10D30000DD2C336E5F232DD10F4EFF6E64BCA48DD8 +:10D3100077A313EE0BFE4E938DE3363F63E4EF6489 +:10D3200076DCE6AF3420DF4E4FD107ECA57D520E00 +:10D33000F26555E702E0AB767C0574ED1074670981 +:10D340009743CEB843DCAFAF7219BC9F30E72B597F +:10D350008B9B3448F8C2F8CCB2972D3D6ED3F73D85 +:10D36000C8775EA17FA74A3113D783AAF584D6D99F +:10D37000F0D3A2B206E213E3466AB761E26C03E5BA +:10D3800085C5671BD2F0998A7F25D831B4AB8C2034 +:10D39000C1A986220487A557D2E1B2F87778DC527A +:10D3A000EED7B8BD3D24AF7C3DF7455D183FD3189F +:10D3B000D951C37C0BC215F9E36928397F2468FC75 +:10D3C00011F957C0733EBCA53F3F13E17CFDC784F4 +:10D3D0009430619CFAD01F7A4BA1BF254D050F6098 +:10D3E000B9B4696AAF3C8DB1E39D1302763D7D749B +:10D3F000EBE200CEF3F8F689F4FCB462FC6206F4CA +:10D40000737C873BB21E87FBF4F3CFDD40F77A4194 +:10D41000F7FD0F7948BE1D7F444A78609CA59D1298 +:10D42000F93DA7738DA218F6B3616911CB6007D4DB +:10D43000BF090A2B07DF1717B10CEB686967C76ACA +:10D4400009FA599A50A2D10C7EC61A573424A19FCA +:10D45000DF5CF6F0DB4ACA4EFD37C17FA053A21451 +:10D460009FF046297E50FBD62D218CE3255CF19759 +:10D47000916FDA8EDC1CC2710FE4DF341FFDCABB72 +:10D480007EEBA1B8E41AB571B26E83674D9E1A4F58 +:10D49000905CEB75D0E1A04BC9681F9A33D97C3FF3 +:10D4A000DACF01A6B7003EEA341EF7FB6850A2FEB1 +:10D4B000DB049F9D25379AA6F5CA367E023B9B1951 +:10D4C0001AC9299A87BB8C97D6FB41D46730FE31A5 +:10D4D000979BCA175DF163288751AE35E5E17AACB9 +:10D4E000ECE576A1A61FFF526A9DA7E0D4298E60C5 +:10D4F00056A906C689BBA788780EA879F247E50128 +:10D5000036CF66C7D4550E44DD95A9798CC48F2DCE +:10D51000CD67EE47FBAF15E7A9509CAD97ECC2DC99 +:10D5200024433E582F47498F6FAE7611DF745796CC +:10D53000EC70039ED67BF9F3F6662FB5EFAE7EDD79 +:10D540005B8FED75FEBCBBE6352FDA9FEB0DABFEB6 +:10D550003AAF47453D24DE9BBCDED9ACF7221CDD4B +:10D5600021D18ED5F276E1D778BF6CA6A88B715801 +:10D57000DD1CE4D76EC37A3F87EA1830B2C763BABE +:10D580000DDE7E637388FA07F8E644CBC54B7BBBA0 +:10D59000520E8FD65445EB2CD52E9AD68EC367E10A +:10D5A0002FD5CE74B62B7B6D84764C72B61BA93FFB +:10D5B000E672B42BE7F34C6FD75DFEBAE3B95502C0 +:10D5C0007F5DEAB6F17B36F217CCAB9BB139286FA1 +:10D5D000DD26F37EAB82F4676B09F85D356E6E0F66 +:10D5E0003659FC1B667235BC779732F98ABC543FBA +:10D5F0006E8379E97919F33A9EEBF2F14187BD32F6 +:10D60000121FB3AD3EE4E33C586F12DA21518A8F0A +:10D610009F8F4F3B9ACB88CFDA9A07895F3D8CEF7B +:10D620003BA4B7BBCE2DECFBB4F161BEEC5B79340F +:10D630003FE263F6A62FB10BEDB720CC338FCFF7C7 +:10D640008A0ADB7C4230CF3C3E5FC7F3A0338E9228 +:10D650005A474E39F12D37976B6E639E97E482C619 +:10D66000E366B56F5D13C27D83D6239785707D1DFC +:10D67000C8AEA2F88425CF469AFF86E613BDA5D092 +:10D68000FFA6E6412AFD426EB4442ABCD85F1B18AF +:10D69000B649E47F398A3A0CE46294F4D99A00617D +:10D6A0001EC68F27B1EED3F91E05E8E76882F46441 +:10D6B0000F5B6AC3A3CF92C39F36133F6FD438FF6B +:10D6C000F99ADE277D940E973FF46E6FE9341A279E +:10D6D0009E69BFEAEB6E55C8BB9889FCE86D2A27A6 +:10D6E0003E1C913FEE636532DA77CC1F5947F298C2 +:10D6F000D3EB23A09747223C7A32DA714DA7EEC7CD +:10D700007E1FC5BEF211CF33487FAC5123A17FC02D +:10D71000FD9E804A78B8507C2B4D631FC07981DD17 +:10D7200040658AFE11C2AF5B073D5149B045261ADC +:10D73000DCDE403CE2F06B31DEDF54C4BF8F874952 +:10D740007F8F849F2E378F3BBDE88A3EE69E7E0EFC +:10D75000BC3CC30EA39E72BFE9D1717FE6C06F2FA0 +:10D76000A3F1EF3AC2D70DE089F0F611E00DF5BA5A +:10D77000C51FD6389B9A877AF9FE99F701E49F6C0A +:10D7800081AF2CAD87E4BCAFB267D8FEC1F9645756 +:10D7900026695DBA4B1B895F86DFEBF09EE17A3C20 +:10D7A000437CD8D6ACF3FE2AA36C29CCCF134CEB28 +:10D7B0002F68F567D2FEA492DE5FC87A1F27FCC9E6 +:10D7C0001AC0679323A8FFDDE8E706611CDBBAF304 +:10D7D00087385E47C2D7C12393730633E0DB2A3B09 +:10D7E0009B0DD2079B50FF01FC9DC5F1F931D2136F +:10D7F0008CEB21D46B0AC63D74923BADA83F70E21E +:10D800007231972F32F71F370AF98C88F1568978D1 +:10D810000D4BED5FAAE5726227D02B9B0D12736C46 +:10D8200094393F6FAC3168BFB7CB27DA455962678F +:10D8300031EF87E4BECFEA37E12D46BC95B968DF0A +:10D84000B12B371E453DB791F579EF0278BB8A457C +:10D850005D4E505D53E3A427FD4A42A7BA9FD7D33C +:10D86000FBF5E7EED4516F6879A2BDD4C7DB9738DA +:10D87000BFEF5279FF9BE47E3E9E9FD7D3FBDBA494 +:10D880003F4B7AA82B4FCC47E7F3D9C4F6F1EF4AC8 +:10D890009CFD8C4497AC32C0BF8DCE814AAFA36E45 +:10D8A000D9DF7A0DD0C5C6278A1E72B43BF0DBC91A +:10D8B00063066DE31C1C9C704E7E388EFC6093DF0B +:10D8C000C77DF1DB592E63B7C8DACCD630D4957852 +:10D8D0009104F5C7F2A6AE9F7339F85F4D7FB85F2C +:10D8E00026FB9CCB89A54D7FA4F5B4A46BA18AF23D +:10D8F0007E494222F9BA44C8817A938551FFCC9679 +:10D90000B91D68E959D0FDA467EB834EFD53AF7391 +:10D91000FD531F72EA9FFAED4A5A1C1FECF66C1C6D +:10D92000FF54AF5D4E2DEDFA06C1B154E8C9A528EC +:10D93000BF49EEC68BE6E33E3F126E3ADAF3938BB5 +:10D94000509E1E958C479B304E7E879FF66BD2F182 +:10D9500063ED9F24ACFC0CA11F96A4EDF7A7974B99 +:10D96000847E60729CE0FCA2E35D86EB05CA25968E +:10D970005E82F9CE9F921AFF6890E3E262243EAD88 +:10D980004BC04786FD9861FCA13CB6E3E90BE26D14 +:10D99000AA18A75AC075A1DF5BEFEF1678B7EDEFB5 +:10D9A0005C8478F94BF9E93BB2DFB2DBB85DD3E0D8 +:10D9B00027BBE67FCE57E65F44E7848BC7FF990C11 +:10D9C000F39A62A35B1ABDACEFE2884F68FF6DD992 +:10D9D00070F867169DD2F174B4C1EF72831F7AF4A8 +:10D9E000D02CF2DF1F568DDB51AEDC81F89B8678A0 +:10D9F000E4783B0E7AAE75A29D2E0B7F5E0DFC5631 +:10DA0000DF599C2BD9C6877A3B6ED12DDD5A3C1548 +:10DA1000F5D21D9D1CCF4BB7FA1E68B5C917C0774C +:10DA200029DACB8F0978CFC277A9C077B9D35EAE98 +:10DA30002FE3F6727D240DDF89CCF8AE177C03F35B +:10DA40006CFD2ECDF3AA1C9F96C2D3C2108F073C4B +:10DA50001C300228A78F83BEC2791E1576FDB1AD9A +:10DA6000D3020B707DC950D7B03E9DD7BDA2BE1D5D +:10DA7000DE63FF9A68BF7D7A604106799C4E8F8590 +:10DA8000C3FAD614767CE44482F2963C911603C322 +:10DA900058F1176568BF2EF0E506CAAF81058EF60E +:10DAA000DA316DE71F92A4C732EB69ABFFC246F9CA +:10DAB000A8DD7FD01641DD861F5F99F3BDCA6CF5E6 +:10DAC000621BBFE2B755A97D504B5FE0DFBB367FDD +:10DAD0004A19CC5D8871DCDAEBAA17907DA9B90CE4 +:10DAE000B49B46E26F64C461FD42F07B7B645B3CA7 +:10DAF000AE452B39E7FE496BF3E0F7ECFA45063B00 +:10DB00001DF35064416FB9E9F8F770FD1F847E8EF4 +:10DB100090BE5E6FED838BFDDF84831EEEA64B848B +:10DB20001DCDE7ED1BDE6F6B34ECF2AFD3671E4605 +:10DB3000559DBB79CDFA6B0A28EF85C70D4A797CD4 +:10DB400004BBC5F9678DBBE971DC373F7BDEAD3CBB +:10DB50003E93DC4171787F598CDAAB60068F82F698 +:10DB60005EC0E900C22BF778713D6A111E775371D0 +:10DB7000B38AE811A378AA26E4C786C86B3AB63BF5 +:10DB80003D0EBED352DF3134FA1CED5CA0FBC16EFA +:10DB90009A2227303F82958AFD76B9F19CFBEDB23F +:10DBA000C1F73765A37380977CFF4261718AF15694 +:10DBB000B9E2A314C46B8F94795FBFF402F7EB2F23 +:10DBC000B0DD779B13F7BFCD9991ECF335609F23C0 +:10DBD0009E7B9BFB287F6F346B9430FF459E1349DF +:10DBE000226FDEEB8A4F46F846215F56625E9A64EA +:10DBF000A06B2E5DD73419ED97BC31C654DC62DDC5 +:10DC0000A4B2642C04F52C630FA6902D6DAFB84A16 +:10DC10000378F2D01928049229B52D98C79337C1FB +:10DC200098EAC2D8A25973D5ABD87EACF1217EDF79 +:10DC3000DE597D15E649E54D669407C5CC59574533 +:10DC4000B1FD97787DAD0ADF97A7EC944EE0DFB782 +:10DC5000C95E3EF13D84BB46E17EF6150A9713C3CB +:10DC6000F980C0C76FA35F21F7533DABE9FDEF51CA +:10DC70005C340404B0C5F14FE5C7AFC279AE880D7E +:10DC8000D2BEA65BB3F631135B29FF49EC67CF82A6 +:10DC90001788878FD61A3B3D36FE5CA338F7353799 +:10DCA00034F3FDCCD6669DCA7FBC88F5E33E9DCF9C +:10DCB0007BDD4338BEDFC31AFB295E15A1F823E0E4 +:10DCC0008CE7470A786E12F301FEB849C1FDC937E7 +:10DCD000AF3625E40B394E7CF1D1E037284F0424D0 +:10DCE00031CBC87F6BAB1F1E960F25008FD2331F21 +:10DCF000E9D2A0F4CF0C625CDBD743EB70BD7BEFC5 +:10DD0000CC3950574BE5A41240BFE6F0AD988F22B6 +:10DD10004B51BD16F549814CF35E35BC7EE43F6343 +:10DD20009E543BE60102F23C63EEF14A25F85E1791 +:10DD3000EF1BBD088F07687BA282E222490FE5999D +:10DD4000B1ADA5A3459E19B4F794B98E28B80EDCE1 +:10DD50007CFF89BDE2CE687779908436FDA5866325 +:10DD60000FD9EDEC2CA35FC2F53A5616799F27FE2A +:10DD7000C8AEB7C51DB7297C7FAFB5F910F1BDF5A9 +:10DD80005C09F2FD0625FEEAFDC81F6552BC15F1CF +:10DD90008C6E13B3C96B25384871923FB14FA528DB +:10DDA000C03DFECDAB0F615CB9BD7988F88FF5CC75 +:10DDB000253B62BCCEAC3FDA3F2F1295A230DF0F7D +:10DDC0002A12F98F456BE54FEC7A243D3FEA7E2518 +:10DDD0003B487A292D6FB1B469C243F6FD0217B8EA +:10DDE000ABB8FEACBCA84704DF5BEF4B9B2651FBF6 +:10DDF000C79B8D87707D0CC32BFCA4F1969CE9B961 +:10DE000096E4DC04019335BF03BFBD7A7D17F0793A +:10DE100002C42DF279A28BC75BC7DFCB48FE59EB5A +:10DE2000B0A815E667CBBF489FDF3F09FC7736EB0C +:10DE30000F221CFF8C30503DF420C2331E84CCBF17 +:10DE4000542077CC253886F1E8DEEEF5C1F87F3234 +:10DE5000797CC87B9FE1423A1775F2F1D2C761DB4A +:10DE6000CF4307F38BD1E1A092397F9435C15F1581 +:10DE7000E3299788BF4FE16D9510D9460ADF165DFB +:10DE80002CBC80FF9763F7FFD2CB8E66E3411EF771 +:10DE90002E7B10E5454778A717F9CE136609DC03FA +:10DEA000C6F5426597E92D09523D822691D7E0EFEC +:10DEB000BDE2BDB72BEA2D0E529DDECB3A7F2F8BF4 +:10DEC000F71DE199492F6E09E92C8A782D3063738B +:10DED000B03D83F61389DF797BA54CAC8FAEC6438A +:10DEE000E4EF7F93517F45C6B3FB6B399ABC88DF63 +:10DEF00047C4BC0B8CD718A68E8F354D7D26C651D6 +:10DF0000EA781C656CF863529756FB6DA27D910907 +:10DF1000F205DBB5F276D6FB8704BDB22DB83A9D8B +:10DF2000EFEF13DFE758DF57F2F84F8EBE3E6A1F60 +:10DF3000678B68576CC662D4AE8BB7B3DE778B71D4 +:10DF40004AACF761E77B4B0E4F30795E406B73F55F +:10DF500043C8AF8AF75A5A5756BB0ED16E677394AF +:10DF6000E89E688E50D926F2E58D4E1ED754F5C135 +:10DF70005A8C8F17AA7C3DA497B80E4220E77CF7F5 +:10DF8000D19C5871135F67B84ED7E6A5D6D9597C96 +:10DF9000CFA00E7C5B047FDC0ED42594BF16BF5946 +:10DFA000718783472E73F01FFB26F09B3D9F7439CA +:10DFB000F05D99ADBE28E27C5F57EDACD7449DF58E +:10DFC000CA39CEBA1173D6C3F31DFDA7EC50A3B75F +:10DFD0000EF0F530C69391FFF38742E8476CC9E72E +:10DFE000F8DBD8CC1EC0E73DCD218AEB758B78736A +:10DFF0003BC60F314E26E27E5B9B07EFC77EB6899C +:10E00000F8DF268C2BC277B94D5FEAAD037ACD5489 +:10E010005D627F7838CF6CA68AF2BE86EBDD74BB7A +:10E02000ABD537780BC2515099905CB638CD8D98EE +:10E03000E809F4CAB5FC485997EC79A4370A7A5A2A +:10E04000F211F82A88FDB789FE95A029A9C0D781C9 +:10E050001A9DFCBB1B54918F64804562CB970C04C6 +:10E060008718E6D59449D11B11CED67C8007F928B4 +:10E07000D498C4BC93AC88514172D1004500F5B12D +:10E080008DBCEE2F6312EEDFE4823D8EF3D6CA9D87 +:10E09000F1CBF072DD516FCDE5F3D4D18F87F685EA +:10E0A000223EF0AA7BE642753ADA755CAFB7642F80 +:10E0B000294079F44B39BA893F679C6FD920B7174B +:10E0C000D9D086833095A2B95EB277D96D4EBC02A5 +:10E0D000BE57E13C8A9AB83D3E7E2DA783D53FD8F6 +:10E0E0003505C8B73BA4F8DD4497B210AD2FCB3E41 +:10E0F0000BC61A490FA7C373400578F253F03CAF23 +:10E1000046BFC5EB963D02FD629E148B9B2E80336D +:10E110003C97E70B6E44E44E3F1B4EA5314AF6494F +:10E12000DEB5B791FC95457B363F73DEDD48FBFBE2 +:10E13000552E8E276B3FB45B8A6FC17AF69B1EEA21 +:10E140002FBB52E46709FF276FD44068AA6D7D3E5C +:10E150002BF8B5DBF28F98F017DD169F327E1E0389 +:10E16000EB00EF6E95EFE31678999995837639A3D6 +:10E17000FC17F66D9E073F66113036F0C9B67BD5A9 +:10E180009DE8572ACB4793BF096B3489F9ED4A5371 +:10E190003BED97ABAC91949B17E31C13306EDF4FB4 +:10E1A000A506F3C032C086A8D441CE60F9C182C1B1 +:10E1B0007B9048577BE37B10EFCBBDF1F1984A761B +:10E1C000CF5707DEC244A43D822EAFC8D16770FE90 +:10E1D000E7687F3BA37CF0E8B3D82E87457FC0F18A +:10E1E0009739CFDD96577A46B3F1097BDC95CE7728 +:10E1F0002FE238E86F61A3E1BC10ED42F3A0C16DDE +:10E200003867FF86C8178839FB17DFDF971550D1AD +:10E210004E7B302BF073A4C7D1751E8A43BCE5E258 +:10E220007926D678FBD7798A503E0F6E984CF90C38 +:10E2300007367802F85D7BD384803D4E3CD8392187 +:10E240002753BEC3F07BB42340FEFD4EC8A1E3823A +:10E25000CF17C8BA8AFEFD02B3F841BBFDBCC0E4CB +:10E26000F1A5058078846F41D3CD8F9BC5763C7036 +:10E270007F3BFDBB541C6C701C3FE720F025F2FC7B +:10E28000EAAB2D841937FF07A0FA8E430ADF9B10F3 +:10E29000F69285CFA3C778FEDA1DE21CD03B2CAAEC +:10E2A000E2CBF7988BE243EFB1D702D36C78727967 +:10E2B000441E6CA742F11813FE437DB2B84771C4E7 +:10E2C00067966E75D697B079A3D1DF5DD2ABB004F7 +:10E2D000E0FF8EB478CD472A8F132E658DEDE827A9 +:10E2E000B689BCCD7A70DF4681FE5DF1C347AA30A6 +:10E2F0002EE5F370BC9E04FFCEB09DFF59A62554B9 +:10E30000D4EFC7F64EBBE92B0CBF4FB417D2B919E7 +:10E3100096D1AF59D8E984EF7CF0A7C36BC56346AB +:10E320008243EEE3744D1F778C4772E4699DEF5C86 +:10E33000E0951ECE3F239D0B3CDFF757E1F7F97FB9 +:10E34000F9F757FF0FC7BFF63CDF7706CD18CA3184 +:10E350006B1DCB72DCE4F295CBF3CED079DE87E196 +:10E36000BDFB1CEF4BCFFD3DE643A13F1DC547E480 +:10E370005424C792FDD6CCCF97FD494EFE1DCAED61 +:10E380003F0DA90C135E5FC86507759C872419E8CB +:10E390009747F5EB73D01E88BEEE0EBA84018CED64 +:10E3A0005FF870CEE398F738CFA388F8F7801BFBAF +:10E3B0008D7EACD7615CE50525393617F8A4E61FDC +:10E3C000581CF9BCF6E3E442C4CFE543F31564916D +:10E3D0007FDD7D80C65D36345BC6FADF8B7EDE7BFB +:10E3E0006A4F15837E5E78269B2529CE9650717FD5 +:10E3F00075D95E37D9C977FE7336C99165CFAE78C6 +:10E400006C2E8C2FFD309BE0A97976E9131E82AF2C +:10E41000859FAB7DFE869C2D08E7AFDCE8C3B01777 +:10E42000D65979C2C9B137C0272B3CECEB68EF58FD +:10E4300078B0F8B74E9F7A5047B8FA8AA7A20C195D +:10E44000E67B19DA97639629FBFABC0C7ED67AB183 +:10E450006EDFFD90E7DF4A7DFB6FA7F9F5DF4CF338 +:10E46000959824BF03E3ADC179E6533B9A87F9A49D +:10E47000949808EFDF7D52E2F3EA9FB2C3578CE332 +:10E48000EF50EB49EEF17D210BDEBABEA9ADB8EE3F +:10E49000EBB4E26224F955FFFC0CC9EF557DEE2484 +:10E4A000FA5350925F55A7B99DE7BB585493800F1C +:10E4B0005692C88472EF0A928B2BFB37D1B99955CB +:10E4C000FB9CF200F01C4902FC77FEC61D998BF5FF +:10E4D0001F7C3F80E7914E0EEC0A203D609C052A90 +:10E4E000AC832BCF38E3D6D8FF99BCB3FB636C88E1 +:10E4F000CEF9ACEADFC0C7DBFBB5DF637EF1AA343F +:10E50000B97312FF5170B6BFFC94C7E92F2F77C7BC +:10E51000729248EFBE5119F5ECF0792E2187EE7C0E +:10E52000E64F8F9A30FEBBCF9E7A14CF5B2CFFF361 +:10E530001F1FFD36FA7F2FFA74949FAB9E7AE7D1A6 +:10E540006F015EDFDBE77121BF2C7BEA0F6F7D1B64 +:10E55000EA9FFC68721EDABD073DDC8E7E7FCF7FAE +:10E560008E36A09F6FFE64D618C4C3379FBB6ACC9B +:10E57000B9F4E5FBC05F098F5DDF25889EC63E8943 +:10E580001F907D419469F439B0F74011C2F7DE6104 +:10E590009EB7B10A9E355520BD5650BE3AD6D16FB2 +:10E5A0005BB9BB83E20D67E3DB1CEB0AF1F58EA9D7 +:10E5B000F92BF7DEF037975762A944503CAC624321 +:10E5C000A487D2BF5BF53AD0F5D291E9B88A71BC85 +:10E5D000AFDABD818FDB0F740C9C4DC7F7F01F3392 +:10E5E000CEA6E3318F33FEF4C993B7E424F1E5DE20 +:10E5F000CC79D9161D573CF7B7E73C07F87EDA3AD5 +:10E600001E09CF0D223FB7DF13FDA307D7EBB35988 +:10E61000261EA97BFF0D4F622EBC7BBFED8F450CE4 +:10E62000F8E38432743BAEC7A19F7874CC6758F08E +:10E6300093DFA828D7DE7FEE97AA41FB134C93C047 +:10E640004E7B9F0DFF0DA0DD46E76F104F8F6727B4 +:10E6500031CEB1726D03D16B65E2FA39782E0F9E1F +:10E66000539C646582AF839589FD374A19E8F72585 +:10E670006F1EB77712F9C20E4DD153AA463A1E99B2 +:10E680008D7C37121DAD79EB38EFCB6CF434155A15 +:10E69000B723ADCFF7777864CCAB5E25E258ABD625 +:10E6A000CE21FA5A7EC4AA84F49B4CF41EDEBFF934 +:10E6B00082E735277A33C723AD799F6F5D9F7F5EF1 +:10E6C0005F0C6F415CFCD3CFC6DFBA360FC9E7B72A +:10E6D000A67A282FEB88623CB806D6E7D0CB0ADBB7 +:10E6E000099FDC5EF17BC5C870AEE67769F653BC66 +:10E6F000E9C3B631F05D7C2DD72FE9FB5CF1B56E37 +:10E7000066D8F0B3D233F416DD73F0531FA3FCBD0B +:10E71000177DE477AD7AD447F9CC079E3BFD04EA38 +:10E7200099F7FFD1C3B8FEE3F9964B459CF2F7CFBA +:10E730009D7EF4BFE1FDEFF16303DBAF397E2FF285 +:10E74000FB3689A1E9F2C1B339973058EF77425BC4 +:10E75000DC275FFAD36F5F87FC8A75DCD75D9A157B +:10E76000BF1DF5FFD26D6324CC175EE51FFC33CAD5 +:10E77000A553FF9243F965EF3D77BA0AE975EAF9C7 +:10E780001F5E82F210EC4AC3BE6F7987FD9E0A9B22 +:10E79000DD7F677F37ED57DD89EF797BE973B176F0 +:10E7A000D07EC7F1D15EB9735F4ED47789A31DF5D2 +:10E7B000B3CA33744F84FC56B3D045BE40B210E99F +:10E7C0007C679F73FC655EAE9757A9434B78FB9EB1 +:10E7D00042CE0F03F4DD1AAFE4789FFEBDD5FE6E86 +:10E7E0006F495A3FFCFB95B8CF9281DFD78B7EEF04 +:10E7F000ECFB6CB2B33FCEB7678FC39FDF2D3113F5 +:10E80000E32D6C8F8FFCEAE56A72525E393D8FA171 +:10E81000FD62D50BC5B858473BEBC7627D2EF7F3B9 +:10E82000FAF3E29CC1F200D4516EF9B9BFBEE2F92D +:10E830006CCAB75FF153B0A32EC1FABF52FEFB8A78 +:10E840009FAE21BAAFF02489DE437B3C0CF399DE06 +:10E85000DDF332BD7F574916E1B82B5EF01DB19F45 +:10E8600087B4CA15FD1EE1B43AE7D382FB68B44F02 +:10E87000C5F7D1DC625F103CFF08CE8FF6A7B1FE72 +:10E88000E638CA2B18C9DE3EE82D267C5A76B765D5 +:10E890005FB7E1BE0B0656BD26D36DFBDD32E3F953 +:10E8A000B9FF95C677AA12D7D14F55119F1ADE43EB +:10E8B00010EFA4F873283815F9B93D348FCE5D7583 +:10E8C00095EBB43E5FF2F2388907FA27FBF9602F27 +:10E8D000ED8779C3F2478EFDFA4539A48F59A9ED2A +:10E8E0007909A54E527EA4560ECFEDFBF9C1438E99 +:10E8F0007B34D2F3057E3C7CAECE74E37ABEC5C7D2 +:10E90000AC3FF26FDFB0CE0BC9ADFC7DAEF5BA9572 +:10E91000BF17EB7F553D5FDF0716E4101E2D3CDC73 +:10E92000F242079DBFBFE585828548F75BB4C9EF1A +:10E93000205E7F8CB215F395733DC47F97BE10BBEC +:10E94000E16B50FFFB868974DEB1BC3F76ED14A805 +:10E95000DFD63081E2816F0B3EFFBB1D2E53413A63 +:10E96000893C40F35E89E8F9750C5DC0870B98A17E +:10E9700072A73CC1F33A587F36AFF7E7631EBFED8D +:10E980007BB786DFAF96685FF0D65FBD3E0B71F850 +:10E99000EFAF1F6DC3F2EBAF32350BC65DB0D7687A +:10E9A000E7611BD1DF0BD09F2BD5DF30FE642FE159 +:10E9B00023851F2FE1EB8DE17D1CD345EF53F8A597 +:10E9C0003C740BBFB7641FBE15F1D2E2033EBC140A +:10E9D000EB930E627D24FD66C1938EDF8FF115E807 +:10E9E000B3F7BD51970FF8E957DEA8DB47F1A9A1AE +:10E9F00022B984E2551E1F7CB7D21D1F3F1AF8ECC6 +:10EA00009E79BF7C0BCF8FB081CCF66D6A3CBECEB9 +:10EA1000DE60E64F06497E76F1F9887B542CB8DF3C +:10EA2000605CBEFF119B407F6F04601E00D71BB26D +:10EA3000D68970DECAFA15E4EFDBD80095B7B321AA +:10EA40002AE37831C404CCD38950B988C5A80478A6 +:10EA5000C771F807AB303EF8DE38801BE9F9EA856C +:10EA60009DAF3BABF47A29B7C23AB7533FF8613355 +:10EA7000C2570FEC83FA10C9C3ED0C43C57850FDA3 +:10EA80009B7FF8CCFE9E0DBFE7FB26C3FD78BBE85D +:10EA9000DCB5AD9D43CF503B29533F5077E4BFA435 +:10EAA000D7391CE9CFEBBDFC3E8F0C70317334F2CB +:10EAB000BDF5C7BF7F5BEABF18EF71F9DA86C7EB18 +:10EAC0003A41CF3C9D3750E885FADF6CE86BC53C96 +:10EAD000CC67C0FDC3FC06A8D79935588FDE8E7E63 +:10EAE000E84219968A6DDFFA261FF74F6EF2F1B8E9 +:10EAF00034BC37F1FD3C1F8F3BD507F91137BCD330 +:10EB0000270CF2E8D8EE925F5C6C8C4CA7FAAECF83 +:10EB10003D4606FDC4A2CC0856F1F37C1467F87993 +:10EB2000C4F4F07B36483E7ED1F86E1E8B501964DB +:10EB3000312AADFC9010EBA1B290F5531966035445 +:10EB400016B1212A0DA6BB783C83AFB71216A1FAE5 +:10EB50004416A5F29962D03341CCBBF447508F9D47 +:10EB60002F8ED3E9E3FA7DCCDFCB24FF3E067DE494 +:10EB700026BA713D938E1FB7F7B1875AEDE7EB9E2A +:10EB8000F492DFFFCC3A83E8633DEF1474E9F4714B +:10EB90003DF2CC3A7E3FC3D127BD919DD0FBB16CF5 +:10EBA000A6E6021CC7BA7F5382796B56BBA7F3B89F +:10EBB000FE3E73E48717639EF12DBEE8061FC5D5A0 +:10EBC00092C4B7161F2DF46A7CFFA04B79D7AE779D +:10EBD0004A7DB1FB707D1EFA273FD9AD77DD2791C5 +:10EBE000DDCA0C89D6D92241BFA7F3FA4FE2B92971 +:10EBF00073B3C74079BDA8CB7304FD11D6332B6A1C +:10EC0000EF6F874FC4F57A1EA47DF045E739F7B959 +:10EC100008D088FC97DE0F63E372D18FA7D88A43B0 +:10EC20001EF078AF750F98F5DC0B25E5CDC7F839E8 +:10EC300045637DE8D606B43F2F1F1DC13E02C29F2B +:10EC4000DB27F066BCC5CF1D2444FCFB94D0033FFA +:10EC5000F0B9E9BDD56E9FA00BF0B363DFA5CA156F +:10EC6000DF877853CDF9B4EF61EDD725D49EF988CD +:10EC7000C7534F7A8CF5C0175376DF7C27CA9F297C +:10EC80007D603701FFDC2F2542746FD038358278E4 +:10EC9000ACBDB8FA43ACDFD9C7E3F153FA3C51C479 +:10ECA000EBAF31B803FD4F4AAC9E09CB9A753CB32C +:10ECB000A310E3F9C6705E59224046038B39CE1D7E +:10ECC0009F0CCF3C675C1ED59669CBCFC395673A46 +:10ECD000E4555E5ABD30AD7D89E3FD58DCC307398C +:10ECE000315663C96C289F596FD6E2BAE800458057 +:10ECF000EB691C2ACE3CCA8B31F19E27DC86F1439E +:10ED000019863ABAAEF09EB9C5FB1C281F73F5CF21 +:10ED100041A29F14F3D7E5A1975B8B719D774A8D34 +:10ED20009A7DFEFD145FB2E6BF4CE4C7413F0CFB89 +:10ED30003DD5378DF2E91E5063AB119E93CF707AAB +:10ED400094F79DBE9DE8B1FBEA3BB02C2F6309CC44 +:10ED500037FA9E1ABF85DA8D5379BBB26409D2A106 +:10ED6000ACAF238674F38BFDF6D16A7CB59DBE658E +:10ED70007D0FCEC3F753C29316637F1B51D6237DFD +:10ED80009FE476D194DD6348AF03BD8A707FB6E31C +:10ED9000394020E8D98E27D7CC8F12FD346ABF2C9A +:10EDA00068D0FD3CACCF794F84DF2F39EE893889AC +:10EDB000DFE79C4D57E047BF3FDF1687EC5B4071B4 +:10EDC000DDAB0657FFEB3880B7C360141F0AB246AD +:10EDD0006F11FA0D7D6E86F1AC679000F83EA126AA +:10EDE000885FA1EACBA3D2CCC63216FB2ACEAF40B5 +:10EDF000E675CC6FC2F53AE5CD3BDEC3E7657E6EC6 +:10EE00006F3FCD4C1DE5E9C9F05DBFFB0EF4B7794E +:10EE1000B784D934ECB4C2EFC95AB6DB4FFDD7F68C +:10EE200049C92BA11EEC52C92FCDD9CDCFCF9ECE33 +:10EE30008DEE47F9B22C8C6723E1C34FBF6162FCB2 +:10EE400072E75312A37BE5FAF61461FCF2D4D4A165 +:10EE500010FAE30FFA0D7E3FD767D1028C7796C682 +:10EE6000D424DE47F0F1E0D45B5F6234AFC2069C8D +:10EE7000D7063FC94FE42F6F05F11D0B54605E5C50 +:10EE8000F5C3AD9468D113B29F0FB5F2D32A374EB4 +:10EE90009CC5F3D36809B06F6C9CD3867983A79E19 +:10EEA00083F900BCA7ACFDD0B2FE803DCFEB72BFB2 +:10EEB000E4F0D34FF9ACBCD2FE00CF57ED0FD03DFC +:10EEC0003DACF1EB88F7294F4906D2BDB66FCF2F85 +:10EED000BE8C78EAF246D0DF3EFDDB1FAA94778332 +:10EEE000F8B914F1129590DF4FE72654D41BC1BE38 +:10EEF0001D2AD36C78E96EA273C03D8817E0838E1B +:10EF0000CF1245D8AEB4CF4378B95F1D70A17C3421 +:10EF10009F67E44F9D14E78DA75CF72F6F3D0ED0E0 +:10EF20002CF6E78AF87C7F11CEE77EF40BB514FC53 +:10EF3000CB749ED7B6D0CFE3EFB7FBB9BF7C9BC5F0 +:10EF40009FE567C9C7DB901F556F2CD90A4DD6675F +:10EF50005D47FB918BFD623FDCDB4FE711327CB7F5 +:10EF600090BE9B7B6BB2D5487D07782BB2DF477292 +:10EF70005AE97F0BE3B0882F3CCF5DDBB79AF2F7FD +:10EF800096EDE6E7BE46C6DB6A3A8755174E14D9BA +:10EF9000F7334F76EF23FFD5C2DF29E4ABF2145FDE +:10EFA00059F89822B324DE4BC7B44809E2A945D0EA +:10EFB000DB7ACF58A4E46F6D76408B9FC7F1EFF7F3 +:10EFC0008BF765FCBBD47BF17D409CF72F4D7FCF49 +:10EFD000F17CFAB76B885F607D186E8AFBF3F9D518 +:10EFE00086237F781C9E07F77AF9FA16F383F524B7 +:10EFF00021FC9E18DF17A9EB5B4DE72B3BBAFB1CEE +:10F00000E7D84FA6AD1FB423506E6CB1F42B1E0E83 +:10F01000807510F6B2566F45267DC2F71D58759063 +:10F02000EC794BAE8F68CF8B76E7B5FB4360B0557C +:10F03000717B1EFFAC7BCD4EE5C7BFEF9F8EF31AF1 +:10F04000500B805446E9E06C0C7BCE72CFA5BCA27D +:10F0500091CEBF269AC1E385F57E7F334C44C1F53E +:10F06000AF53FD447388CA079A0D7AFE53410F408F +:10F070003BD9071BD3EE1B7D5ED0C36AA7E08E1978 +:10F08000E69D94F17C13B9AC9DE757975AF7C20DF2 +:10F09000E7F9FC14E1064729639E0F94942FD52DC0 +:10F0A000C50F20FF0745FE4A30C6F333360BFEB2CC +:10F0B000E2AB163CAF08385E11707DDFC7E5A27584 +:10F0C000BF9A27CCCFD70EDFCB26CE1B9D03EF8375 +:10F0D0005266BCFF1AE15FD1736436E2DD57CAF3B2 +:10F0E00092AD3CE48F6B58E25CE7042CBC5B74C8C7 +:10F0F00099CBEFC1D8D01CA7E7279A1BA87CA0B951 +:10F1000091CA6E29760CC7CBA939F7FC4F08F9F3E1 +:10F110009E25872E709EBD3EE73D57D67D60BDD7AC +:10F12000DF145A08FD9FF1F3F3A7E06638E865D3D2 +:10F13000B767103E2BEFC6BA17ECFBBED87FF9C9F4 +:10F140001EEDA9585CCC2EFC9EBB0B6C7714F3E62D +:10F1500027A6FC94B7315F5E19D95F3167462B5EF5 +:10F16000E6FBCD741EE55E573C270BF7DBBFBB4CBF +:10F1700045BBD5DD556B629813FC061D9FD7E7187C +:10F180009FA0FE63EC47B3302FBEDE633C8FF5C615 +:10F190009AAE5998175F3FC6B807FDD0864D3DA47B +:10F1A0001FEBC7339E179F75A80DF3E207FCD182B2 +:10F1B0002CF23F945CBCBFC5B2DF479E97F3FE962E +:10F1C00007315843FC0B131E9DE243E0BF4908DFA3 +:10F1D0005FCA7F0F08BEDB807C88FC7723E7BFFB1C +:10F1E000510E707E9B8AFD9F8FDFAAB2F87AABCE5C +:10F1F000E2FC16CFB2CE75717EF3B9329F678E8A6C +:10F20000F61B843C0139D96997A7967C1DEDE6F978 +:10F21000F8FB6F7DEAD62B615E9EBE492538AFA70D +:10F22000C6250A319F2EE8E6F1DCA7FEF3B1C279CC +:10F23000585EFF5421FA7DC3F24A690CE1BE73792E +:10F24000F893DB0DB46F4B59622295C992629427F3 +:10F25000A25DAF6837253C7A21EE37C5C5BCFCC33B +:10F2600079A58D74FFD746EB7E54B931847A6983D2 +:10F27000B03F378CFB64BEB88F81E1FEAFA2F3FBD9 +:10F28000B3F0BD7169AA3F9083E9F706C6893FFADA +:10F29000A411E4E0FF8C6F76F863CB38FF7179FA44 +:10F2A00057E8EF9BD49F1C95FE1AF0019D493FA2A1 +:10F2B0009FA20A7B14AF6C6491C8C57F8DFEFFAF1F +:10F2C000BECF6171330424CFC1BC42CA0F5FC77087 +:10F2D0009D823E7B04D795AF7787897A7A554D3FDB +:10F2E0009D17B1D6953A9EF3BBD5EF7359DCEF7EEF +:10F2F0002ECBF27BB8CF3769984F18EB823A1ECFEE +:10F3000041F935599C572B633D14CFB998F55359A2 +:10F31000CE06A8BC840D511961BA1BCB0A16718B9D +:10F320007CC12A2C977BE3FF88AEFED5DEF8B3487C +:10F33000E7F7C6C5BF8FF982EBB3567E19F9F5879B +:10F34000D6FA4E8BA730B17F76BEF84A0E8BFE9868 +:10F35000F3E308F7E4B291CFE545339CCBFB0BCE4A +:10F360004DFD02C71FF1DCD4A5C687FC1CD49959FA +:10F37000AF56E3B927630FD6B3479D9C85E771F27B +:10F380002E63E4FFB8B5CF7E86FE8F3C3766124C05 +:10F39000AFB38C7AD12A95313C6FB535F7269DF203 +:10F3A00057BD7C9F5816714FABDD7B18A49F7E76AE +:10F3B000FEEA5F7B9CF4FEAB5CB10FB26C7EB55B8A +:10F3C00073E6E95AE3B704593F9EAB75E7F27B3821 +:10F3D000D3E151B26EDB37C852F3B0C6736B7CBC5D +:10F3E0002F9ABF0BF2D1ADE567BA3F2C6AE5EF7AF1 +:10F3F000B4E9A9FE64DD99BF9B8E9F5C8DAFA71712 +:10F40000B3A21A7E67CB7BD5B19E21EF35179F0340 +:10F41000DFE669F923F3EDFE575FBB6529C87D354B +:10F42000D74FFEEA090CEC40FD9D1D6EBAD7E19165 +:10F43000DCA8B10EF8ADB57012BFCF4FC403FD22EA +:10F440004ED35A589785FB439B3ADD646DA8057BE4 +:10F45000BD58D77A5D247B7695B9E6609C344BC461 +:10F46000EDACF97C3FC0F38B379D69A95A877116C3 +:10F47000E0598CF7CDACE6E36DB988113C0DA3CE15 +:10F480006CCD82FAB637965210FA86008FEB6DDBA0 +:10F4900021EE3D641CDEE3D363BB3616A7EA4B8343 +:10F4A000F376E17ABA2620F37DD60D1336A3CBE2AC +:10F4B00029C30034CDDFCDF785AD32E9E6FBCABC08 +:10F4C0009E8EFF1CB17F98FE3C2F87CBB79CCB6FE5 +:10F4D0003C7415F4BFB841DC91CF12FB0BA0DE5396 +:10F4E000C328EE91D3C9F3D97AE421135DB19E9A72 +:10F4F000681028C072C2834C86E7376ADCBF0C7480 +:10F500003E46E7CFFC0D2C63BEE58D1A9F7F8F3CF6 +:10F5100068BAA91F467409403FE80F9EEFFBB91A6D +:10F52000B7877BC479EAA5BD0B286F6DE9D6311288 +:10F53000E2D76AB748E37A7F57D4BA772746FD1FE8 +:10F540001DAE3752DCE278C1AFA398AFD03E9DF339 +:10F5500083B65DF27D19EA5A82673BE4D4C4298EF2 +:10F56000DA165229C77A298B17A15CEB97FBDF5873 +:10F5700082F802F871CB23A75722FCC8790D8FDEE1 +:10F580008BFC37A36706E2F1EE1D9FB18B609C23D5 +:10F59000789137F2B37E8619D02EA77288CE5F0697 +:10F5A0006A32CFF3670167FC3A20D66976EF4EC224 +:10F5B0004F61353F87B34DE92F186DFB5E4BE3AFCD +:10F5C000F47E2B059DDA0B9EA075ED97617E88BFBA +:10F5D000B0CAF03E1FD7F65FD2EF50E454BA2257BC +:10F5E000A34E88341E463A75558BED5036381FDFD2 +:10F5F00077DCA1A24FCA4E087E356B54DA3F4D1F0F +:10F60000EFCD6CCE5F272BF93ADA72C7CF0B905F44 +:10F61000B6670F8582E5F89EC771B6646B04AFFBD1 +:10F62000CA27AEC37B3ADD4F2F1C2D19F67EF87A20 +:10F630002B75250AF17CEC135DD7B6B7026F96E205 +:10F640007A07BBFFB5C00DED68F73FB2C32DE86B7D +:10F65000505CF6A5C484B198DA7E7CB94A71ED6D30 +:10F66000B5715A47E61D2ECAA33B11B7E2B8491F30 +:10F67000B67FB8727D00E35F0F47E50AC4F76CBD43 +:10F68000FE09943FDD8D797EE48B0DAD2E099F3F01 +:10F69000DC30F3BB93907F7B4A255A2FF06FB98AF9 +:10F6A0004E13129D36FB385EF4D98C2E66CDADE13B +:10F6B000E79E379D71F3FDE66A7E0E2137C2CF9536 +:10F6C000E93D87BF8D44D6C53DEEF887FA384788B7 +:10F6D0000428B5860A5E8EAE20FA24ABF0BBF0F7A4 +:10F6E000BE81DFE50CB8924BA09E53EE3AB2109F5C +:10F6F0008BFD48BD4E65CE7D317EEFAD05A71EF278 +:10F700001F5908DF9F70F13998DFE3F1E2F6029E9E +:10F71000EF995BADEEC438CF23561C461EA438E5E6 +:10F7200009B15F81CF9F457E3E3444F169586745FA +:10F73000F8FB0339D5C76FC3F1737A7F43F3CAC1AE +:10F74000FD4F2CA34E782239D15F68363BC3E2F3DC +:10F750004025BF4798F613018E77163092E7017166 +:10F76000FEF51149F0DD62467C877F784F2DDA7E09 +:10F770007C5F1DBE1A8DF7FAF0FEDEED7753FBAD10 +:10F78000F38D04AEE32DCFB1DD88CC6CB1DF3AACA4 +:10F7900037AEE1E364D7B4AFA67329D5B6FD52F80E +:10F7A000DF298DF3F3303EC4B805386E49AA4EF711 +:10F7B000E6031C7B0EE65D5B8EE32ECAA3FC83563C +:10F7C0008137FA033AD06517204F72757FF422987B +:10F7D000DCDE6CBEEEF788769B0FE92F619CB7F6F6 +:10F7E0009537E91EB11F6787F83998EA8FBCC8AF13 +:10F7F0005B740E776123E7B3C2D09017E3AB8B3B0A +:10F8000025CA03248D305A98AC881799E333DCA9B4 +:10F810002770FD1A9D5294EE678539BAAC739CB877 +:10F820005FD968AE4664076A3E92F0BB2DA2DF77CF +:10F8300096BB18EF17E43E8EDB29911C60F29017FF +:10F84000E568616F1ED5B78562FF86F1F677B67AF7 +:10F850000C6C5FBFFC232FB60F835E958A53F32792 +:10F86000BB15F0B6B09151DED4B6B0A0C30C96C0B3 +:10F87000DF63404645B88A44BBA206808BF63162FE +:10F880001BB15D607B2EE37A73A813EDD042800F2D +:10F89000C75F58CDDB2DECFDE11ABAF732C4E7BDE6 +:10F8A000B85ADCE324C70770FD1636EA3AEAB7A275 +:10F8B000ADBC9D3A0EE0C6760837B5EB7F19EB81FB +:10F8C0009AD1068D23F0542FF059DFC0F164CD6733 +:10F8D000A2783E11E703CF2756F3F7136B9E5F83A1 +:10F8E000790BF5380EB6AFE37C0524353F87F62556 +:10F8F0005DCE7531DE74F21D6BE275197F99C3859B +:10F9000078E37517D611BFBDCEF67B5CC9CE5A5AC7 +:10F91000CF12C939B02707901E5BEE5029CE8FABAE +:10F9200002E59526F0BA2E8FEFBB1EBF5CED433F7C +:10F930005FEBE57CA13570B8319DC2B0F913BB5EB9 +:10F940006626F2E51E57EC61D477E6460FEDE31C20 +:10F95000FD4CE2F7504E5539FD64E31BF8FB285D82 +:10F9600033D6F3F32E3268E92A3A2F48E3E656E716 +:10F97000CD5403281FB91CCB8D1CFF0EC7A7334FD6 +:10F98000413BC47F2721B4C88927803F8A7EECB0E1 +:10F990005C8D32925FA3D3F219B05D2EC84DBD725B +:10F9A000F44C94AFD3EDFDC3FBBC57F93D14DAA181 +:10F9B0005809C9E143DBE7E1BDDB7969ED9E0B4CFA +:10F9C000A0F5A71D6A74513BCC4AB92475AF379A8C +:10F9D000F6AC82CA8358828E37B378DD94F270DE3B +:10F9E00032ABC3FDC9DA18DD8BA34FE3F7EE131D6D +:10F9F000F2A84C62795F05237DA11D8A97E80497E0 +:10FA000061F052A7D21ACFD28F3D15BC9FD280CBC6 +:10FA100061FF5BA55EF767477EC4C98079CF2B88FD +:10FA2000AF2B54B25B5B9421FA3D9096E7348CA4E3 +:10FA3000B3A7721385780FD88BC20E19BEB7BCFC62 +:10FA400046B28331A54CE2F71810DF5C9C5DB6032B +:10FA5000D7C794A849F6F094D2B0D4427CC7F36CCF +:10FA6000DB58D4403968865DC4271DA1F67B904FD2 +:10FA700036774A79280F365797B4A37CE96F642EFE +:10FA800094937DC26E98D9383887F869BF8BCEDDE4 +:10FA900077FF286AFC3BD43F0118D06E9C59DDD318 +:10FAA00048E7F8266AF47EDB8FE293751B5EF0046C +:10FAB00004B78B992CEC6597C8BF9432D9C9FEFC6A +:10FAC000792ADA67E37B179818C7CFEDCDAD4539B2 +:10FAD0006BD48108C5FCDA10A007E35CE2BE042306 +:10FAE0000ACFC13705DCD27B23CCEB6DCD49EE1FAD +:10FAF00097F37D868B77DC40E7B72FBEC8D58FA301 +:10FB000057EEB8C1FB3598EFC35BB9B5BD37E176A9 +:10FB1000D8A996FFADBC9ED85002EDA6F7BA0C143A +:10FB2000E2BBB65E350AFDB091F4C39FB48BACF373 +:10FB3000B324A7689DB953FA62B3CEE56061AFD034 +:10FB400017E14192EBE1EDA02F48DE25D7E1FB89DB +:10FB50005B73498E2E0971790CFA44DC7FC7F54935 +:10FB60008958BF25DB2592DB25BD5CDE6E063D8115 +:10FB7000726657AF44E773603EB32FAA44F90F7221 +:10FB800016AA8BADFEB6A7FA1BBE2F80F413D71BA7 +:10FB900060CF3BE4ED78F1DE58CEF5C4F8CE7524A5 +:10FBA000578DEDBC244776744A7F8D6FEC2779EE34 +:10FBB000CA36789E8590BB819AFADCAFB1145D9805 +:10FBC0001C31CE755F4DDBF61DB5B828B3B7EFA776 +:10FBD00073CF9B8277A92EC0E39569F6F9583195CA +:10FBE000F0F623DC8F59CEEDFAE305EDD7213EDBAD +:10FBF000772C54F1FC7A61849F3BD5C24B9E407FA9 +:10FC000065B6F023198B7929EED6D840E79FB2C5A7 +:10FC10003C02954351EC2FA777DECD17915DDE3F77 +:10FC200056325270FE393BC0FDB7CAC128BDAFE69F +:10FC3000A6DDAE9A5827FA698B832EC2ADD6D9427B +:10FC400070805FA34BB6F8F427D959347EA09AFB95 +:10FC500039DDBDDCCF6957920CEDFE40C445FE8D09 +:10FC6000AB3A4EBF37B718FC4FF40B3AA4D8ADE807 +:10FC70001F9A33545ACF302792035BC64DA2F8EB3C +:10FC8000E6E909BADFBF4DF861E4277C19EF2B7D67 +:10FC90007F36DAE9D63C3D629ED9E1B479563BE73E +:10FCA000B9560B70FFA97A80CFB392CF13DA3BE637 +:10FCB00079424E927F7A22C2F47506FA4BF01EDA30 +:10FCC00067079FCDC2FE52FD98D7211D72001F48C5 +:10FCD000879CDE974C6CB718BEC37ED2F961542066 +:10FCE0008BF0BC16D7687E26BBFADCF9774F8B7B8E +:10FCF00017CD0AAE9FCED26F5EFEBB525A9ABE1986 +:10FD00009F533C1C9F336DF62C48CAAF121FED76F3 +:10FD100091FD7332C0F709B2833C6F0E9E9B63D096 +:10FD20007E8592F45ABF6C4EB6C5A1B44AA73E5820 +:10FD30008B1D67F237859FC9647E5F75C78C78D548 +:10FD4000461B5D3EC8E6E74F3FC8E671AB0E693023 +:10FD50004AFC33A27FC9ED839CA02B7135FCB3E331 +:10FD6000728E97CDD35DF47B016D9AC1CF0F17BC16 +:10FD70004D7E665703F023E18BEF03348CF252FB88 +:10FD80002DD319B5EF4FF27B4136263EA1DF61330B +:10FD9000ABF9FD187D3B9EE8C47B41FC65D1E96E63 +:10FDA0001BBC81B2CCFEF69C8057ACC3A8C4F583C3 +:10FDB00055723D61D5D3BFF3883C77FAA3FD079D0B +:10FDC000F46064FFC7873177B14D2FA4BCECBB034F +:10FDD0002E414771FF7E229BC7CD92E277A044DC83 +:10FDE000CDFD66C7008FA70DFFCED5DD01FCAEC6E9 +:10FDF000791F96158F6B571A6388278C5F80C462B2 +:10FE0000D918A7D1303EC1B250C42965F3A6AFB30B +:10FE1000CDFF618C27A15EA95189AE5BA63AE3753F +:10FE20005D017EFFE54601AF9BC5E83E5B8097FC28 +:10FE300052808FFFEEDB5C29FD5CF90684B37DA068 +:10FE40003E86F896B598B7DC48D1E7A6008F5FE309 +:10FE5000EF00EAA4E7E231375FA7145FDA543940D4 +:10FE6000C64FBBC2F925D0EB6138AEAB9AFF2EE688 +:10FE700058118F78674512EF84669BF9AD59CC1FF6 +:10FE8000BAC98B7AA143199A8FF1724BEEA4CB1B9E +:10FE9000C40BF6DB96702750FEB5B1780FC501A0F4 +:10FEA00017945FFD72ECAB2857EA2BF5881D5F6B4A +:10FEB000356E4FD523BE34CED7F6FBBCB704B89D04 +:10FEC000F21D8DAF1F6580AF375A49F6B87939BF3B +:10FED0006F46EEE57EAD8AF71497A4F069A3F70F9D +:10FEE00088DE7332D37BA2C6F1B877A0847E5760D8 +:10FEF00024BBD3B22FD3EDC76F66F3F5A5CB602F2C +:10FF000056A4EC494B1F7648897FBF02D7D193AAEC +:10FF1000B18BFB4921B4B7DC9334B2DF9F96FBFD74 +:10FF20001564AC9AFCFE90249FAF9B4563F7427B1F +:10FF3000A5D34D7565BB44F691C53736FE4E9FEF90 +:10FF40006A8AEFA6F19335DFD502AFFA9962161DE2 +:10FF500065B3F3EB86FD7E09E332EFD4F2BB7EF5A9 +:10FF600033A5D42E433CA618ED422B0E63C55DC0CD +:10FF70008F25B9F27F1F7F11BFC7375BFCBE858815 +:10FF8000B3FC2FC65D3E0B08BDF245E22E2C2DAE14 +:10FF9000921E47498FCB5871149A922D3E931E574B +:10FFA000198D89BE13304ED3E2C3FDE51322AEF79F +:10FFB00076D7DDB3318FDCCA6F5192FC7790E4E5E0 +:10FFC0009C4ED63AB2E4A8255733C8D12B28CE345C +:10FFD000821CBD42E8F567D68975136432EAD1A761 +:10FFE00077BFE4C53CE72AE1570DEB59D4AF367D26 +:10FFF0009A8DFAF5920BD0AF629DA5EB9174BBB3CD +:020000022000DC +:10000000A78ED13ACA13F3CD1DE265DEA04C72244F +:10001000972954F6887B4473E738F179E9BE74BEBA +:100020005B47E3F778A3C1EB91CFE6B888CF2E3BCF +:10003000EC6C37A7F867C11B00C4BC59AE0AEE9937 +:1000400088EF34967F23D2B58EDF7FF79513CEEFFE +:1000500052F08BF63A87EBCA33E76917E471FC7408 +:10006000F8AFF27A32C31F8AE6FF6D3005FFD52163 +:1000700067BBF90B7E967F7326F8C36CF4FCCA1439 +:10008000FCD79679CE0D97C1E1FF9BEAF3B42BCD57 +:100090000CFF0D734680BF8C5D83E7B96E9E7F9E1B +:1000A0007E055DFFAEE1DCEDBEDE943E8EE938A755 +:1000B000D21674F990FF3DC84728979942A56788E2 +:1000C000F391A22B2407ADF194B0935E23F3911921 +:1000D0009C5749FE3CDDE791CE0F73A72AC42F9EA3 +:1000E0007C17FFDDB9613E12F40B723A9C973F0416 +:1000F0001FA5F3C3487C940E7F3A7FA4F8C8CCBFF9 +:100100002998823F9D1FC0EE233E52C2A5F4BBBE7C +:1001100067F15190F3DF79F943F0513A3F64E023FE +:10012000E28B74F8D3F9E47F9D3F7485E48C87718A +:10013000BE508CBF943F92C11B6CFC914EE758EDB2 +:100140002CE283B3F943D045F0C779E92EF8239D1B +:10015000CE17CA1F67D3DDE20F4E7F0BFE743AC77E +:10016000D7DDADF37CBB61BEB8303A1B4067EDC252 +:10017000D73FB3C35B7236BD2F9CCE7779115EDD5E +:10018000A2B3C1E9ACEB5C8F28115E768871FF3FAA +:1001900018694CEB008000001F8B08000000000075 +:1001A000000BED7D7B7C54D5B5FF3E67CE3C339391 +:1001B000CC4CDEEF49081024C149801450EB4908AB +:1001C00021406C078818147522AFF04CB056B1D797 +:1001D000960102241834D180C0453B49C0462D36D3 +:1001E0007A7D50C4FE46408B4AEF2F8A52B5940662 +:1001F000CAA5808869B5CABDBFAABFB5D6DE2739F2 +:10020000334904EFBDBF7F7E9F1B3F78B2CFD9CF6C +:10021000B5D7E3BBD67EC4A89A982797D1CF37F03D +:10022000EFDA7DE169C6D632369EB14D16165F39DA +:100230008EB1802A7BF778189B6C3187E5AB9CB92F +:10024000217E4E1C63CE78B9D0A02F670FC5DF0288 +:10025000EF03718A770FBC9D9A145EEE1BFCB951B7 +:1002600097DFC9CABBEC8CCDC8BD42BE38C897C7A2 +:100270009831A2FF3F9C601EBCFF49F02BF64365FE +:10028000C13D598CCD2E0FCFE75F6BB4FAEDBAFCB0 +:100290006975E55E48DF5275857E28BCBFB7D57CA1 +:1002A0007B3EA6EF67366377AE8EEC6780B1F88150 +:1002B000CF1A735D48827EB34446F433A739A5EA6A +:1002C000BCFEFA273965AADF1BC3E85913C5EAB09B +:1002D0003FDA77ED79A3C8773FE6C37A63205FDE24 +:1002E000C07CA522DFABA2BEFF104FAD3F7BD7F98C +:1002F0006A7C50FFF3AF799267D9078EF391B5AC62 +:100300000AEB65CC23CD72F47FBFD529D1F7D36B2F +:100310009C4C35F7BF6F6EC82A6390DFDD54B01177 +:100320009FF31B62993A081D5D9787313556DF5E52 +:1003300090EA734E818AEDF87D047D3FBDC642F59B +:1003400063FBBEFCC1EA8F1AA2FEE42BD49F46DFFA +:10035000FBE787314B02F01FFF9519620E5C30C03E +:100360003C6D4833790C30D467DCAC6630FA1AD374 +:100370004CA7A431C88BA56A8F8E1FEE45FA40BDED +:100380004605FE15C2BF4E43C01C3D30DF7A19EA58 +:10039000253EF527E9E9FB33316F96A0A20691FED1 +:1003A0000A7CCFEFFFBE4DD07FBDE4FDC08F7290C1 +:1003B0006E2239DE74039F2F2DDF4E916FB3D32051 +:1003C000E6DDC7908E46FB1B1F48D01FA3C51E301D +:1003D00050FF958B3D96FE7EED74324197908115CE +:1003E000F5D365A8FCC0B11F20BD8C76937373D67E +:1003F000D5D7FF33A787FA95DF61227966A9A6E0F2 +:1004000070A97FBC401F2EE777839CC3FB340B6B26 +:10041000B0003D374A4CB5A3FE922CF41E7F9C30B1 +:100420007FA9A29F9B86B3DDF2B59056D861732158 +:10043000CE5F5D921DEB493179307F4E9229244386 +:10044000FF36B6B04036E4DBB8C11E30C3F78D8E40 +:10045000ECA001FABFF12BDEEEC6DB3DC17558BF43 +:10046000AA7AE2A07E6ACAC3CBB9B15C81C857ED53 +:100470000CAE87728FB3668919FAEB672CDD75367F +:100480008AE12B467CE87433963C908FFAF994F31A +:100490006376A392ABC0F83E67362FF2DF7A579DA2 +:1004A000D94A8DABB73278BFFEB4E4413A6BE5EA86 +:1004B000D78442F5C3756923F0C1207A2314CBF9A0 +:1004C000EA69575D15CAFD5E6955954FC72FD7BAC2 +:1004D00039BFA4B9783E36CE67417E811ADFBD119F +:1004E000C7E9943D9B257CAEB34CC774838C1CC676 +:1004F000DA93665996E27C94CACEE1945EF7EE8D6B +:100500009886FC389F879D77356441BABE411E4B63 +:10051000E2CCD48A02A0678C98AFF65299CF732EA2 +:100520000B0E8771B59466A7CC87FE8D70BA8B5180 +:100530005E0F37DE2BE3F7E626509D509FC2422127 +:100540000BE4530C27541031F6907ADA9983F5486E +:100550007CDC6586BC14EC5F475091CD305FAFB555 +:1005600015BD6584748B2A3333948BE9A9AE60384A +:100570003FAE2C1AA77262DA79067CDA5CDAEEC436 +:10058000F63ADB1292D17E445FAF9CEEE35BF8F764 +:10059000DA9411294BB11F6D2686E3B08F0BFFDE75 +:1005A0003CD793E2047ADA18BCD7E43C8B3F432073 +:1005B00047C305FF1C694C907AF2701CBAF290CFC9 +:1005C000D5CA24B25BAA3DEEEC68C6FE0F50F71BFD +:1005D000204DA7ACCA56A4CF4989ECC66E63C0AC07 +:1005E0009FB753F17CDE9AD630EF1910D6DC2CD9A8 +:1005F000877A638BC4F581DDCE54A48B36BF91CF4F +:10060000ECC6D218FF20FA4D7B2A9643A1FAB1031B +:10061000F9CBEEED969D30AFCE179C0551D07FA75C +:10062000EAD9D78374CFCF28B07BFAF9ED8D2D4569 +:100630001FD5C0FBBBF7DABD4837DB09F329D40B64 +:100640005196A6BFE2B3E3B5B9CC037C16B53ACE5A +:100650009B037AD9E649F0E6407B466F88213DEC62 +:10066000AB4DDE33902EFB555E62CFB7F473F31AB9 +:10067000A7370788DCBAC642CFCD821F46FFAA2221 +:10068000E62E9D3C14B8F8B8FBC6B7FAC1E67A9DD1 +:10069000BD887701FD482F079366EAF4F279514E41 +:1006A000AB37B27DED3B1BA7264F81F1B66F017DC5 +:1006B0000874289E99437CB3A7C1E4C4F17734CE73 +:1006C000D93C0FE7F31D03F144C79611298B74F54C +:1006D000B50F51BFCFC5ED4A677260A7E4457551AC +:1006E0003FFD2860A14E6B6027C3347B80A7512853 +:1006F00027E1F79F4D57815E9DA8C05318BBC95590 +:100700003E3D80FCED0ADC2A830E7EC85AB7F930E4 +:10071000E8A3CEE1818F24489F8F63A1D20990CEB8 +:10072000E2F9DF697DB281F2E7F3F4F1D67554BEE8 +:100730001DC703F31E077280FCDCDE56EF46B96965 +:100740009D5999E281F6F614049318D437FA91F87A +:10075000372D507F9CC4CB3376B95C857C7B44FAC3 +:1007600016D797E5813CA2CF63488FE66E23F1C789 +:100770001E236B9C07F5B7037DD662FDE9DE14DF0F +:1007800020F4685A93E46D1A8EFA0F9EC6FEF70E97 +:100790006F92F7973AB9343AC3D3ED923705FBF726 +:1007A0000B685F81FE7518BD44BFC75AFE374F3BCB +:1007B000BC29488F4D2DBFE5E978D1FFC0FF2A47FE +:1007C0007A7624F374ADEB15EA7F643FDA8D9E14DC +:1007D0006FDE55F443E4FBCF8E63283A5C6DFBFF7C +:1007E0001F97BF15F1FE95CA5F12F234643D595749 +:1007F00057CF7F951FFFA7FCFFDBF2BF7065D33C8F +:100800005F991F18E96F9BCCFCA87FB7569658AB31 +:10081000757AE7CD786ECF0A301FE16395FC923D83 +:100820005BCBAC683F5B98F2A67918D8DFB67ACB81 +:1008300074D05F7B9A64A7C103E999B27538E29FCF +:1008400038D4BAF0FCC7581BA5E1FB3AF8DEEA73CE +:100850005B111F010EA2FC2D717239DA9F0D716EB2 +:10086000EB7C9DBD6B6982F7D84E6961CA22DDFBC6 +:100870000E49F3D39410E2D84D39D9ED7A7CB84BB8 +:10088000E0838EC69269A3B01DF42FA09DC35BCAFE +:100890008E204EEB009C86B8E8B0B3F0AD5CEC5710 +:1008A000B94C7A788448BBCA152F646723B109A86C +:1008B0007F9893054390BFBDF5F9BB09FF3AA1B3FB +:1008C00088AB4A7B4248CED77C7751BD2D49BC5E70 +:1008D0006607A304F86798A0F546FC1FE2432FD3F0 +:1008E000F0BBA300BE934BE6413B9FF6662EDA03B6 +:1008F000C085D80F0D9F2D88E7782D16F1DB18C421 +:1009000073D99BB17FF69B652F96735784E3B148EB +:10091000FCC614DF4CECEFE69B15B4E160B2C2718B +:100920005A241EEBC3033EC0133A3F332AD719960D +:100930006E7F9DED4630FB8CE2D98938A73918E5EA +:100940000DC0FBE62E85E805A83228417B9F9FB8A5 +:10095000258901E91F6A9069FC9B9A95E048787F98 +:100960004E16F4D828737A403137A43738D28238FB +:100970008F8A65C60EC43F1DAFB3FD0CFC8E96D7A3 +:10098000995782F69EDB6BE2E51C16C2CD1FAFF1D4 +:10099000ED403F80353FC618E0EBA5164E4FABA1AA +:1009A000D9C2802F7364EFC3C590EFC8B3FB2F3C4F +:1009B0008D78ECA9289AE70EA373EE0248D7C45AA3 +:1009C000A8DF803408F7D4236E98442F020CEA5A2B +:1009D000868E4C0A4F5B60CACFD9022BD16E3E1374 +:1009E000FFF174CB44F0276CFCFBF1ADEF6F0E5CB4 +:1009F0008F38FA865CB4B32F3EFA51A3157CA5510B +:100A000066515FA0757331F0EB73B2A4D5AF32C0FD +:100A10001D5D882728FDC7B74A01D06FE8C331C7DD +:100A200037236EA8396412ED3F6D2B86EFCF9538D2 +:100A3000C72641BDDF8BDF3DDD7203D6A7F5AFD002 +:100A40005A82F59B78F931F185D3B03F05C3BA4E90 +:100A5000FE04C669BECFE46DA766BB93D1EF7E4EA0 +:100A60005E553318BE08207E0539EF1AC7E353D010 +:100A7000BFAAA04EEED6C571BFFA21F1EC0AE6CBB3 +:100A8000887FB215C0DB288F16165B81F2D5D83E61 +:100A90000971A056EE01B74DC483787C675F8FFC67 +:100AA00020F14993D385FE9EDCE45D770A716B9C4F +:100AB0009BEA1D162A4C911077751E2BCCC3F97E2C +:100AC000C14EB8F142E7D89DE8776F6A35312CB74F +:100AD000C761AF7A12F546707429F289D6DE75D8EF +:100AE0003F686F534361DD12C87FC16E774A1EE4D1 +:100AF000576F15F2CF33E0B707480E9DC9A8CF72E4 +:100B0000E420E19FED8F9435D603DD72041DE3E30D +:100B10002B1A11EF34FA3C3609CA35A7C90CCB6D34 +:100B20008A9B6541FCF778F1DDF4DC14979D8AFE21 +:100B300076A36AF2A0D3DC5CCCF16C9BA2CECA8215 +:100B4000F76DCD715240478F1BE2B85E6DF70A39E1 +:100B500088E37AE16917F005A49F8E671DE85F9B23 +:100B60009DAC10C7654CAB53D541E6AB42D4C340F6 +:100B7000DDD88B480488FF134A8FFF13EA8B732656 +:100B8000C07948AFB916B0EDC0DFF7DE2BA13C3E0F +:100B9000EEE2EDD6DFE509E278125B4D14B7A897D7 +:100BA000D90C7CBF218D39D7C2FB845613F92D1B7C +:100BB0001AB8BFDAB18005717C890DF22933BC4FB8 +:100BC000E8F9EB1A6C27A9490E99303D2F3C9E9904 +:100BD00074E2FC57E877263178AFD333DE18DFAF05 +:100BE000DDF13C1EC8E39690A708FD48FE636B90BC +:100BF000297EB4772DEFE7A6B52C083E027EB7AC70 +:100C00002EE4D951BF9A44FE3D2FB25F229D4C96EF +:100C1000A66E43B48EAE0FF078A9A975E32A1C879F +:100C20002957D70FD497F109C42769AC47427DF102 +:100C3000B8F0434875C2A74CE41130A517BB3EB3CA +:100C4000DE9587F4E47104F23D8A843F9FDD3F1F07 +:100C50001F09FF32B21E8FA8474BFF5C947BEEB09A +:100C60007B461ED0F5E70137C59DEB651E77A31FB8 +:100C7000A81FCD180653E29D367514F4FF501CC70B +:100C80006FCFD9EA0695DF2371BCFD0D6F029B0281 +:100C90003D9E5BE7F95135D2AF446628FFAFA95CB2 +:100CA0000FEF29654133CA8FCAE9D4DCC48201A0A1 +:100CB000D3D8DF298D32F427AD58761B841F1F80CF +:100CC000FE3AF01728DAECF531C287714CB562FCB8 +:100CD00020CDC7E9A138A599F924FF4C867E478924 +:100CE000FC8ED2C02A8A33589C568C13B4A479A6A1 +:100CF000E7A0BDD8CA9CA48F14AF3CD3D14F17BB7B +:100D0000A04B5413948379B4B7F276B05E646E0A44 +:100D100031C13C45C5BD741FC6DBEC2A7FC6548675 +:100D2000F31DE941E4FB95C037300EC784F0796FBD +:100D300011F4495558B909F8692DEA27ECD7124E34 +:100D400097286F447D3667F202A4E336136B07F9E8 +:100D5000CA0C84D797D29A50827C97C674E5A05D5E +:100D60004FAC8BE623E5C8AE5932FAFD354C36C49C +:100D700060DC2EA0D614D2FC7C86F67C53824CF527 +:100D8000A6C6B94B508EC06E97233E4A49F4146EE6 +:100D900066BAF86B9C8F15E6613E67C9883114A767 +:100DA000E57C9EC0F93CF548EF8F90DE29CB23D738 +:100DB0004174FD355C396DB44407A2C6601C345CD7 +:100DC0006ED3E3B2445C95F3050F55E3FF789CF5D1 +:100DD00042B46733E298C0BD0AC567119BA5411FA5 +:100DE0008DBF940389509F199EA8378C5D4A60641B +:100DF00034997DD584DFD3BE36EBFBDBF9621EF977 +:100E0000D5ED468EF30C029F6A7438136B22393885 +:100E100023E22D252FA74D46FDDB91CEBC66EACF00 +:100E20003E929F7B45DFCFC9DE9D51D8AF8FCCE48A +:100E30008B43FDEB31BF4B055CC1701DA4CEE2D2EC +:100E4000D939A8222827FDE79F1B043E6A47FC02E8 +:100E5000CF8ED0BA95D50CC7132842397085640D52 +:100E600057A044EA7141C002F6679421F0450DD8BD +:100E70002325CE32DD6945BBCFC4F7AFA6A9696093 +:100E8000D7D74BC23FFFBC51BD5E8F0340EC2CFD5A +:100E9000388005ACD36B307F9A56FEB3692AE08860 +:100EA0002E8BF67DDF9B6857EA8D5D45885B16B813 +:100EB0000B1B11D76CB0FAAA50C7DD1FBB250CE77E +:100EC000A46C3DD088B822DFD07D8D05F26F6B3EDB +:100ED000D2589A8EF2E9B1E1FC5F892EED8AC7867D +:100EE000D0B91DC70FED2F89FDF5B4B5CA9571CAEC +:100EF000F2CEEEE9B8EEA0CDCF32A16735FA2A9B4B +:100F0000E790F230064DAA1EAF68CF2DB116CA1F6A +:100F10006F5737C5C65F99BFB608FE2A8EE5EDE468 +:100F20001B065F97EAD0BE7798EAB0DD9297EDA4F2 +:100F300047F634CED98D7AA464E4BC9D51E87F7C19 +:100F4000788B11FD82B65885EA6DFFB57FA493AF0B +:100F500033A520DDD0FF27BABC9846EB35917473DA +:100F6000897145BEDF116BE5F50DE7ED76BE680FC3 +:100F7000A25FB2771DD88741E8F0BCE86FFD1A6028 +:100F80003C726EBCB20FE89CE352556C77589C2FB4 +:100F90004074047F491DC4DF542EA786AD33B53994 +:100FA0005586EB52CAE50C7A6F577C2FC442FD7F01 +:100FB000CE695FF22094DB29ECD962A7FA12D27DC8 +:100FC000BDAC3E5C9E35B05FDAF36AE3FAAF3BFB43 +:100FD000E6FFBBFA212AD905BB2D38324BE7873C07 +:100FE000A2F4F921847F36B883E82F7D9B1FE22687 +:100FF0003FC44EEB3743F92106B9D98BF6AA91A924 +:10100000D968C78F3CBBB4B918FD90DF19C80F79F8 +:10101000E6D949B7627F2EB43B08CF021E25BF64D4 +:10102000832BC98B7A7F687F645463F955F82391C9 +:10103000725AA832E2234561A5A87717A3038AEB69 +:10104000011E8EB78C8701D745737D8D4F539C97BA +:10105000EC719F9C0515FA6E38610EA0BD33346C9F +:10106000EC465CA5387D14B72E92FD5FE0FC83FA58 +:1010700055900E16611F0C7695F9F386D653B1ADD7 +:10108000CF4F6B001D65386C3B45F58678FB8613AA +:101090009B285ECE5E08AF0FDA91E3A01DD33E5FC2 +:1010A000284A57BFA617CF3FDA45FE4F57D041F524 +:1010B0009B5A9F7D33A07C4BFDA101F5470F56BF86 +:1010C000A687FFE3D15F911E04572C64063AD63CF5 +:1010D000CCFD38A5F5D9696B73BEA59DA303DA498C +:1010E0008D8B1F641C425F9F7DF45F1A03398883D8 +:1010F000EBAA0693E742E1AF45DA5D5CFB492BE4DE +:10110000F63651379F66B4BB6386B6BBD7097ED02F +:10111000D6E10FF4CA511F919F96E0C2384D97E275 +:10112000257E1D9E9620AD05F9C98CE7ED0F0FDEDB +:10113000CE509F02765CDB83FE50B13705F542BB93 +:10114000F0D702E0AF0D277FED4421E2DDC08BCB6D +:10115000D9704FBFDF76A1F34716E49F7AB789DADB +:10116000BF2ED649F55A0F15FA516E49327578A33C +:10117000CCE92FC1F931C7713C614E63929FF429CC +:10118000F7E7FEAB7E559BB02F1D56CFF4A9D0DFFD +:101190008412D9897A45F393C02FB1E6206EDB2201 +:1011A00093BDEAF38784BFA4F95FF542BFB434C9A5 +:1011B000ED48AF9686C2631528DF750AC56FF64005 +:1011C0003FAD3183F84D71E04FC17C35B7CA3390E4 +:1011D000DE2DE08FA1DF95B4203CDF38A77F3ED223 +:1011E000C15E2A134EEEC86D277F34D2CF89C4C7A3 +:1011F00091783812EF46E2DBB4D5E1DFBF3BBEE4C5 +:10120000F8F06A712629BC41F025E15DD21F3B1A36 +:1012100071DEC83F847456DC0E924725C4F9414103 +:10122000F9C327CA1DF23FF333B403206F9B915ECD +:101230006CB9A4203EB4F4D5AF32B48391F10EED75 +:1012400059E7E67820529FB637CE4941BEDB63F4BA +:1012500051DCFC7911877D413C6F12F176EDFB4B3F +:10126000225EBB6F88EFFBC5F703E219F9FD37A2D9 +:101270005C6888F20745B9C343947F43943B32C40A +:10128000F7B7C4F7A343D4FFAFA25CF710E5DF15AF +:10129000E5DE1BA2FC7151EE8301DFB99DFF487CA6 +:1012A0003F1151FF4991BF47BCF7B93C1CF70CB146 +:1012B0002EA7F9C7F80EFD510A5D0FEB9FCF3FBB7C +:1012C000E53E3FA6BEA8DFEFD4F4866B1C0B62FCA4 +:1012D00043F36735BF538AE5EDDA4BC12FA5975D20 +:1012E000C437ED38BEBCA1E9F35C1CD7AB9DF91C3B +:1012F0006F22DF2CD4F1D98B7146BECE59C0E9D014 +:101300003FAE11B2362E19F2BF2AFC7F9F88DB77E1 +:10131000BAFAEBD3C7CDDB44FC4BEBD7507CF538A6 +:10132000F64B976FA8F9DF1B916F283E6C8BC8377F +:10133000143FBC18916F28B9D821E8A6E57B56E484 +:10134000EB12CF1611FFBA123F44F255BBB63EDC8A +:1013500072C7665ADF15F50F251F4F897EE08F3E55 +:101360004E616FE07A379EF586F14734EBE69B607D +:10137000047F182F6731752CA6B97D9A1CE7A1FA56 +:101380008C8A8F21EE375ECEA1EF7BB3B89D5F7E56 +:10139000B85BCD8AEE9FCF05825FEFD7EC730C8FE1 +:1013A000D3B1C79813FDFEAEE0ED32DAE98E784690 +:1013B000714E39CE4BFB669C69263615BE8F13EDF8 +:1013C00085D8647B01DAF3061E6FD2ECF42883F330 +:1013D00033B4D32CD642FB8510D7605C049EB49FF7 +:1013E000688E9BB7FB1D70CD02F720F869819BCFFB +:1013F000FB7F23DE2C8DBF2ABC39787CFC3BE04D83 +:101400005FFCA078D3359A812C2E78E49F377B92AD +:1014100007D6AFE1CF39F1D77E57FC7947FC20B82A +:10142000F0BBC6FFDBC771DC13C8B5507C08DCCF4E +:10143000A4588C9F1A2ABCB89EE671733D71A5759D +:10144000A42BAD1B5D69BDE8BE78471CEE0B035FA6 +:10145000C58B76BFEC57798F9443BFEE7EC740F1C2 +:101460009ADD4655B6427AF509C9BB8E0DB4BFDA8E +:101470007E1C6D9F8BE6176AFB5FB62A8159E4B725 +:10148000B5BA25D4DB7F10EB96AFC5CD2AC7F87B64 +:101490007B255FDF6B3FB2B51CD7213F57F9BA649C +:1014A00043EBACE9A3105F05152FCA8D4D56A7E19C +:1014B000BAD2D6CA6C1BD21BD755F5FEE8C8383F46 +:1014C000466AD89ECA12C259F5FF986C413BB3C90F +:1014D000596843FCDBDCC4D7313B9A642BEEE76AE6 +:1014E000A984F7F6FEF7CDEAE0EB9803C62BE41DDE +:1014F000B025EDCF1D7D68EE4CDC5F33BCC15D6077 +:1015000025AAFA28DE3ADACDF1B7B2DAE03D03BA1D +:1015100021BE81CBD370F0CB51AF29B88F08DF3318 +:10152000DDFC64E13E28AE0FF2714BA19BF49237D3 +:101530004787CB66B99DF45D8BBB0C25AF9A7C6A5F +:1015400072ABC9A94E3EF7917CCE0BC75B1A3F6BBD +:10155000EB5B95F1D792DFB457E2FEDB81F87CC2FA +:1015600073460FC7731A3E33627B6374380FF755A7 +:10157000617FE2FCD49EAEDDDFA2FCB0236C509C08 +:10158000A7ADB3ED8D1F330DE9D4C73F4185214E83 +:10159000D7F8A645F04DCB1123C5133E0739625944 +:1015A0007C9D7CB0FD631ABF14B83C61FBAD34BEBA +:1015B000194ABFCF12F3FD4C3CD7B391F2A4CD57DB +:1015C000A45C31C59B8BE3E9340668FFC8C1B67BD8 +:1015D00093C8FFFAB53FD33948FFB4E7DB4E8FB667 +:1015E0004FDB8A71245040567902A5B5757EBB0445 +:1015F000745BCEB49F55144FFDB1E091E5623FE1BD +:1016000014839DF0926DB74471F3650185F862799A +:1016100060DD2A99E62D4874CBDA6D64B8AE0BDF35 +:1016200069FEB4F2CBBACC2CA4D3332B5F80B46E5A +:101630007C598CEF975B02FE4148C7BF59B83E1EEC +:101640008DDFC3DF33C3BC189C7FDA3B3AC8BED3FF +:10165000D5278A438775F5DB12845EFA1EFB1EF9D7 +:1016600029A2FC5074FB728D1A3A0CAC9023A9CEBF +:1016700004E46B5CCC98C8D843D730F20B23F36BEF +:10168000F49CBF7A32FB33E8AF974CCE62DCE71AAA +:101690007842223F7D5DD4F7CB145C873E074D43F3 +:1016A0007AFEFD6F3F8AF1A68967BC26DC27BFB2B0 +:1016B0009BC76B120DAB0A7E0ACFAD07D99D3E9139 +:1016C0005E85FEAE5DF5E0BA5FB5E0EF8BC6BA02AF +:1016D00027FAD7B7DB55B4E3D595EA87B83E523D34 +:1016E0002FCF82F4AAEEB2AAF4B430C58676E01FFA +:1016F000DFD07EE7856296AB1566C1F78926A658CE +:10170000E1F972EB4C9307F82BD1C62C982E5A07AF +:10171000ED037DA227F8A87FD5077EF177AC6FB1E6 +:10172000127A4DD2E67B3CBE7FF3DFD1FF5DA8FA93 +:101730004C882F46779A841072BAE77785A7F1DC38 +:10174000863E5D100A4F8F3D129E7E2681CBC92BAF +:101750005F199811E8D9FB5414ADF32C0335F47DCF +:1017600037EF06C640963E93DF8671BC97BEFED12A +:101770009F7E0AE9DEDF19C85F7FE91AC0E8483FAB +:10178000259881FDBBB0F3174FDC8F71B8A713D13B +:10179000F36707CF3D3F02F75D5E5AE3DB510AF284 +:1017A0003C79D9810C94AB4BFBFEE509E4E78F9FB4 +:1017B00035335C1FFB58C4375FFB68FFD99DD8DE0B +:1017C000B35105A82F3EDEFBF208A4CFD2675ECD51 +:1017D000C0FD34179E7EA688D24F3F35069F179EC8 +:1017E000FAC5886A0291C10C5CFFD2EA59F64BEB4C +:1017F000A958E4778C3B82DE3EFB89DDAE5FD7FEE5 +:10180000AEF52EC3B836D5BBA93B16E5ADD311C096 +:10181000E7D2CE07FFCA9FD23BFCB996BE2F058AFE +:101820004C00FA9D7770FBBAACD31C46F791DBC332 +:10183000E7E13CD8E1E721DFA860F8FBB360D79E81 +:101840008776732FCD9B8E7AEEBC88B39F85E77326 +:1018500090BF16DEBBE0FD25C6F71944CACDCF12F6 +:1018600078FCA5765F78FBFB95C1F3D72770FD99CF +:101870008B2BC23A7D90621E3C6EBF3981DBCDA7B7 +:101880009FEECB6FE0710A1023E0AD65429E5EE9EA +:10189000DB67C4EE4905395986CC91DDFF7E19D34B +:1018A0008D1BDAFBCC12DDEE04DC3A5EF4E74B2351 +:1018B00097D70B6B428FE23EE5B36B54B554B74FED +:1018C0006BF1AEEA8DC9C037CB9F1B5E407BE6C58E +:1018D000FBE54F1D8AC6F8C6355D46B2AFCBE73E85 +:1018E000F9D024CCF794A10BFB05DF13F0FBC5AEB8 +:1018F000D7A36F83F78BB76715A0FEE8AB77FB1410 +:10190000B554A7E7BEABFC697A61B993D3E1E509A9 +:10191000DD65A92067CBB64B5ECCB6ACEBE6D9371C +:10192000A1BFB0CBE0C5385E91C27C86421CC78B9C +:101930006FA4C0FBDA57C717E178A08A4A7CBF5969 +:10194000F6CDC847BDF48491F673C3FB2332F0D9BA +:10195000C1DC474CA731AE21E67BF31C7B0DE224B2 +:10196000A8EFB00CE5A2774BAA487F80F9CF957419 +:1019700045A35F75DE686FC038FC7947DD31EC4701 +:10198000602FAF978578BF9788F87BCD0123E184DE +:10199000DA3DEBA38B31FEF2B541427DDBBB472242 +:1019A0003DB0787B387FD540DD49D0EE853607D510 +:1019B0007F213E988176F4822398E1E6E549FFD5C0 +:1019C00074FEF6DF51DF2D0986978FE487D3625CC2 +:1019D000F093ABE7ABC87CA88994A2FEEFCB57830A +:1019E0001DD0ADB32C3FD36C42BCB9A4C2F4ADED55 +:1019F000015F320FD1C34A787FD935ACD4C3F74BDE +:101A00004816A8FF02FE067EEAB259AC5C7B4FEB9B +:101A100015C8D7C0B29F9DF8ED4306E0EF149C3C7B +:101A2000F42F7F1545F1D38F3F3191DDB8700E80D3 +:101A30001B8C7B65D2EC1DA5BAFE5DDC77281AFBFA +:101A400077D1138A7663BC41E0D68B4E9E5E766E6C +:101A500033C5E1D6761D8A46BDBAAC2B96D6CBF7F8 +:101A6000EF95DC32D0F9E2B927A3D82072BAF41C82 +:101A70005F0F8FD4439A5D3D85BF82FD3527AA72E3 +:101A800022E216DCD40E763F31B6AEA06E90FAB4E8 +:101A900072B6440F3DAB255E3ED17037E51F9FEC1B +:101AA0007324C27C39C605B2904FDC7E0B9D47F98A +:101AB000B3C17BAF7318DA49BF89FCFAFA786A6759 +:101AC00031837981F7F3151652803FE7A3BD1D439B +:101AD00069A2DFFC4E29884B128E2673D8B9AD451A +:101AE000ADE6B0F535B64BF71DE8BF04ED6934AD92 +:101AF0002385303EBA747778FE65E09E63BBCB7F6A +:101B0000F98D595F2F781882DF5413E2C2BF0BFAA8 +:101B10008C4F5647207DA45916EAD78FF6025E03F4 +:101B2000FE8813FB247AB7C6D0FE9A65C28E2F3486 +:101B3000BF46E3ACBDBF5A5D0078E4D3D5F3D5050D +:101B4000B122EE8172BF5DE2FC55CA42E9D0CF5BA3 +:101B500005BE5976400AE5437A218C1F71C4A45F03 +:101B60004A0107D8AF85161688467E7B8FCFCF7285 +:101B7000312ECC175388740C507B2ACECB78C47B83 +:101B8000DD34BE493512B537699F44FB8E8EBC5695 +:101B90001483FCF319F3C6A05C022E6156F7C079DA +:101BA0008EA46FCDAE087AEBE9998D740C9F9F954A +:101BB0002F005D07E1B7AD42EF9F043F428F2FB585 +:101BC000F3835BD74AF47DEBCD269604FDDE3677B2 +:101BD0005107E28487315E27F611E2BEBFCDE8B738 +:101BE000F375BD9005DAB18D65FDEB7C1308675187 +:101BF000FA8EC79E9DB11DFCA06D467F32C689B688 +:101C0000CD04BCCB718B1571CBE214FF7CE4D7F90A +:101C100006DF1BE8602C90D50C05F97335A7F3633C +:101C20008575A3EA06B197DA7812A1ED28B7E81F07 +:101C3000E2A87C3BF14132F689FCC2EE1EDCF7F6ED +:101C4000609185CE4125CAE0300C426FED99A880A5 +:101C5000DBE9A62773E0139748BF25BF861713114A +:101C60003421EE8CAA6BC3FD478977E616AECFEA26 +:101C7000EFE736A95B35206EFE293F0F1475E0B9FA +:101C8000502AE45B51EEA1F868FC2D2772F1BC4BA1 +:101C900073228FD7C5089CBC4362F5E8DF26019FFD +:101CA0004B85986E49BE1BDE8F7B41225CBDE28571 +:101CB00062C30A3B8D9FE3EA88F6615EEE9C85F382 +:101CC00029F445B29DF36BD2BA4016D61373D0B740 +:101CD000EA75A29BCD8BFB77909E346E0B6B40BC5C +:101CE0009CC4D64A986F633CE78B8DD51C1701794D +:101CF0009418377F7E004FF08EEB8D9C6E8A8DBFDF +:101D0000AFC776B646F37EC5CB863B67623F0A799E +:101D1000DAFD80A4B69330B6F07934B3721C27BED6 +:101D2000C7714137D4E7EC3AFA4EAE2BC07E240E91 +:101D3000E3CFA33D968001E4F2689C868343764618 +:101D400038C727A33DB847D8FD4F8D6AE258B4275E +:101D5000EF1819FA2B711911F97372797E616F3FBF +:101D6000F74E8E4125F1B95D8D71C1739F91FB0BCB +:101D700091F37E48CC53EDE55416D4D991DAAA2FCD +:101D8000C85FA8BD9C11F6FEE21A18C9489D3DAC7B +:101D90003948E76257B06EDA8ABDA2CBC0823AF901 +:101DA000DD67E5ED325647B8FFF4D1E185FAFDA8CD +:101DB0009ABCD65E36B000C8DE750699E7577A370A +:101DC0002EC4FC075C0CD7DF6B2F9BF8F74C5E5FD3 +:101DD000EDE55816C018ACE289C6F39AD719FEBAD9 +:101DE0007121CEFFAB12EDAFABBD9C40DFFBC673E4 +:101DF000590A4FEFFB528C4FE1F54CE889463DAD57 +:101E0000E1FD0AB0ABA86F355C7DC96B20FD77A9F9 +:101E1000C1D086FAEFE21A50A44087D3E2DCF6E99B +:101E2000A01C18AEF30F4E0B3CADF52FF2FD25674D +:101E30000FD9E314033F3F7DC9C3D35A3EFC8EF450 +:101E4000BC54A5E9999082F3B9D3FB9A82F1ADE530 +:101E5000DED7CA988EAFFAE91F856719FBE89FB0F5 +:101E6000BE3B24834E316E979AF2708BCA41A1DF3C +:101E7000028626DCBF946090C3F41DEE91D1F64536 +:101E8000232B6D950D627F93D2549AA64B8BFC7DCC +:101E9000E503C68A52D08FE3F278F998EDA6A3EB5A +:101EA000D0F66A7650E9CDF03974694B44DA0EE920 +:101EB0007C5DDA19F13D2EE27B52443A8DE7BF2377 +:101EC000A667BC017CCF94EDB60A05ECED1DA93DDB +:101ED0003FC6F36A4D0647456932E2096F19EAAF1A +:101EE000DA7D9293BB199C7E2BBD8CF0ADDDDB635C +:101EF000C2F59BA871DE3764C8B71CF249C0AF5168 +:101F00007921867AAEB64BA273127DE5BA382E5E81 +:101F1000DE758ACA0D597FAE4CFA6073EE69CAB796 +:101F200062F52726C4790DCBD7F9D0DE16C91EBEBF +:101F3000FF83F9D554D0772BF7CD647C3F2ED7BBE8 +:101F40009792D543D89FC0AB92738F4E7E6AB15E95 +:101F50007BBF1C69F9FF907FE07DDCE61A75CF5FDF +:101F6000D72A90FF8F2BFE321EDBFB036699887AFF +:101F70003C380ADB9D5773D7287CEFCEEB7E7F0E73 +:101F8000E43B69EC791CF7B1CCDD9E5D81E7CF4E77 +:101F90003A7AD2713FF66D49F93C1DDFF338D2F33E +:101FA000DDA43144DF93E93DE9B2174F912FE1E918 +:101FB000E13D8F637AFBF60A9E3FBF27DD00E50B0C +:101FC000033711FDF738B9DE7C02FC6CD4BF7F8883 +:101FD000B0DFBE24AE8F768F546724D1FA30B79F1E +:101FE0008F83AF6601BD7AC7CE9EBD7B800E77FC26 +:101FF000240A47CAF65C9C3D9DEB97800F717B22BB +:10200000677D9D1D55281ED16F47F97C3832BA3D3A +:1020100083D91996A81EA376C5F357D9FC792CC984 +:1020200023E85B57E0817AE7CDB37BD10E33A56718 +:102030003CF2E1C3563E2E901F9A67BB98974562CB +:102040003C8B92B89F9B933885EA03FF2060C1F9CF +:102050009C6922FCD63A534DB6C5E133410E84C586 +:10206000498CE41FB58AF3DEAD2B86D3FEE03EBF7C +:10207000E051EE5F687AEB56D45B3A3DD7BA6472B2 +:1020800032EAB9D62C3519F54BBF7EED8AC7B8B503 +:10209000A64F31CDF5A844694DEF3106F974E750EC +:1020A0006F33321FDD53D116AEEF6E93E07D5E7F4E +:1020B0003D57FBBED5C5FBA5D9D3C4F55DB44E9243 +:1020C000F858969BE6030D33E2B79691ED48EFC5BD +:1020D00029B3887EAD339FA47DE01A3FBF3F526D88 +:1020E0004902FADE2AF6076A7C833F18E79BFF68FD +:1020F000621BC63D8F25F17800E0B331886B27A7BE +:1021000068F3CB687E8E25F178FB1DE69011E5E340 +:102110007FE6E9BF7D9EDEC0F7FFD9795AB1FA2F7D +:1021200057A737855C6E9342C644AE37795C02DEB2 +:10213000E37ED69F26FA3F447ED1C679C73FAD489D +:10214000A67D4BA23F51F7BD5C7E0B244FDE7A612A +:10215000CF9350FEE44FAC84AB2271FBC98F2C4D62 +:1021600018178CCAEB5981F3EE5E1DE5443FE3A4DA +:1021700088239E14E32EFAC9B2A3E8AF7B93F93A01 +:102180001FC607989EAF1ABDBFFFE9A0FCC57147E7 +:10219000EFAB06F2075A0B823B16E1F79BF3BC014B +:1021A000E88F55F011F019EDA764FFC4E304ADC347 +:1021B0004F133D5B27325A5F6BCDE2DF5BE78EA0AA +:1021C0007326C05F01D28F736D54AFB6DFF2D3AA0E +:1021D00024DA6F09FCC6DB5D2293FED4F89631BE8B +:1021E0008ED978C040E7FC06F2616FF44C1DFF7C8D +:1021F0002AE2849F223E8AD1BD177109C005D1FA17 +:10220000FB47AEF45EE3C384F59A3C70BE3BF348F3 +:1022100022C597A17B23500ED29339FF68FA7872BA +:102220008A3F29395E8FC7F938E63FCCE3D29B1C41 +:102230009CAF7759F93D1FE9C99EB075A35DE0BF1A +:10224000A0FD01FF3D03EBB9132AD807E93B13FDBD +:10225000BFE9C176576B7CEC3321DF2D147103F697 +:1022600040B87F8BFBAEFAD28681E9452A8F9B0F5F +:10227000884BB0AFCDE1E538EE89CAEB3522BF3FE0 +:1022800066E5FEA066DFB6E3FA1D8C6FFBFD5174B8 +:102290003F8896EFB38B3619CF5B5C87E383711C65 +:1022A000393A3606E3E99A1F1FE9D7AFC42140BD8A +:1022B000B5D036C6A36B6D3D2350EEB47885FF4193 +:1022C00043701DF1013F97D4FBA244FC24CDB21012 +:1022D000BF9D6D34B4617C03CBE3B86A7318BBDE79 +:1022E0008DFC155C8278A677890DEF1C60DB4C7C39 +:1022F0003EB66D36B473FEE47C05ED65100E8EEFD0 +:10230000A1F85F2D520CEB097CB5866F0682294D32 +:10231000E85F1FC338B53E7E7009FEE1F90E8D7F80 +:102320002F21F22DD4F3AB271AF965B938AF1489F0 +:10233000E7497A12281E4FE74CAF84EB57CAA746ED +:10234000DCADC3F591FE16D2F3FA427A1E36D07C8C +:10235000F514F91C83E4934F533D43F9EB2BB7FF7E +:1023600085CE73E13A9D9E4F96F7F393F48D84FDED +:10237000D6F197CE8F279C8FFAA294F17B6F18F835 +:10238000F5A8BFF2D80DE89FD58A3852FCC19E321D +:102390009C07C7B82E867E7DED392E4F930EB41D57 +:1023A000423CEC2EED4EC7E2B5224EAAF19FD6CFAD +:1023B00089075A0CE8A71CFC84F35DC9E9EAB9A8AF +:1023C000BF5FB12597607C6B718AFF4194A733C5CD +:1023D0002AF15594C2FBB5B0C911C4F5DF57DC4CE6 +:1023E00075129D3C3948A712375F4729B68DCAFB45 +:1023F00037781E3C9D956784FA83C90AB59B27AB45 +:102400008F607D9786D8AFFE4432C7612527AD7EA9 +:10241000C46725362BE9C9871F19D94EE785591797 +:10242000F1ED826D596ED46F4F2473FCB638C5F749 +:102430004432E13F6F11CAF796648E134A4C9E1CDA +:10244000E4CF576C892528EFD3B4F5B740710EDE81 +:10245000DB5392C4693FCD620E39685DAE7914EAF0 +:10246000AB990B6C1C3FB20AE2AF72C1BF5BB2F812 +:10247000F8B74CE3F1CA6352571CDA3FD9D27C0F4C +:10248000BE9F9EE3F0A27D794772A5639C942D3197 +:10249000BACE5AFAEFF9198A5F50519ED5E4C2407C +:1024A000F7B3A8CC4D4F8AF7C03380E96D3616C01C +:1024B0007BC2B6D9CC845FF03BDF97E0D985B8BB4F +:1024C000C262A67B451C1837E3E5558CE754587E5D +:1024D000FB018E1BE380A83FE1BBAAD5CBBFB32E87 +:1024E000942FE6355ED4DF43B5C3CAE386502E8011 +:1024F000FA15CA0544B9106F37CD85F7D168E35B8B +:102500006FEC2AC0FE0556D8BD6837771507CC1981 +:1025100071A8B7AD05EB21CF6E8729E4867E7C904C +:10252000ACED2BF4905F785AF0434EB42984EBE184 +:102530001AFF0DB3167F80F3AAD163BD15E607ED30 +:10254000F2429B17ED28F643F4278C4EFD74E1719F +:10255000FB0A6AAA9F2EC0B7A5CE423D7DEC215C46 +:10256000978EA4CB50F4D0C681FD75470FA4CB2B1A +:10257000A6C028BCFFE695BB6C5E1E9F8BA013BE59 +:102580004A267BF5398E6F25F37F1F3FAEB4301599 +:10259000E3598BCCAB28AE5B23E2E60C83858053FA +:1025A0002EC93CCE7BE96989EC06AECBE8F529AEB5 +:1025B000B3E8D3CB457C987546C47185FD5B81F14A +:1025C000657C76859703CD4F76B2765F64DCBC4F31 +:1025D0003F45C4CF845EA84921DCD183C49E882FA7 +:1025E000D7F17D1AB241E0013519E340DB9664D39F +:1025F000793DD427389F0B9B47B6AF15F8007185FE +:1026000016CFD3E479714A49660AD4139D5A92923F +:1026100082EB1718149AF86DF2C4FBA9E5C378DEB3 +:10262000B7AD73DC8DFA0FF0CF35291E4A97BF394D +:102630003C11EDEEDD922791DBDD1161E9B3063F40 +:10264000AD7368F1F825B8CE60E8A7EB2211C75F3B +:10265000A4C5EDB787DF0388F3A44F2FD5CD9347EB +:102660003F4FA52CE48898277DB995304F580EE749 +:10267000296C9F792B1FF79DC24E687CEB7AA0CD09 +:10268000C074718B9842356B03DAF9378D1497FD5E +:1026900037C197300F458813C72797E420DD6DE8D1 +:1026A000EFC0B8CF006EC6F9C63830DE0B78690DC2 +:1026B00053738C34AF45B306B1939BF75B6B904F6C +:1026C00066A7C86176C796C2F7F152FC1E7149A38E +:1026D00059E05C4F06D65394ADE1470FADCF2F10B4 +:1026E000EBD32BE7D8FD58DF69B1BE70670A5F37BF +:1026F000BC3385EF3BD7D2DAF8B47D18189FD6C724 +:102700005717F6E5E37161A6F869BFE93663D0BAF9 +:1027100090F098CF8478EC6F17395F1C39327F09BD +:10272000F6F36F553686FB776A914FD0FF11EB6257 +:102730007F631E81CF46105ED3D27DB8ABCD4038CB +:102740009D29757FFA29D0FBDCD1583AB7D487E3AD +:10275000CF9BC271BCC20288BFCE758DE278DF20EC +:10276000A912E1374E27C047640703AFE68B7B32DF +:10277000FC3B301E7BAE2BDE8BFAFF2CEEC700122B +:102780009F53824FA17F14386025FFEA9CC04D9F64 +:102790009E3A3506EDFCB93EBC1420BC74B60FDF82 +:1027A000075367EBE673BF38A7BDDC141A81F85EE8 +:1027B0002BA7A5B5FD0398C6F3A1AF087DBEDCC667 +:1027C000D3CD16FFA3C8472F99B8DFB53C1ADEDB7F +:1027D00007A30FD70FE71A12691C481F89E2C68E9C +:1027E00030FAF4E1D73603E182EB0C5C2FF6FE5AA7 +:1027F00012F4E9CDA57590F3233C6887D69DE7F7E1 +:1028000061EC6FE378F7539F89CE8D9C1378F25C6F +:10281000447C38922EDBC4785A8D9E8CB188B310DC +:10282000DFE17A7903DF57571BFCF33CC47BB535F6 +:10283000FFB883DE47ECC7F854EA796804D9017E13 +:10284000DFC94A27FFA6D1436BB756E05C16D79B7A +:102850003018EEAC3DBFD147FB6019DF5F3D49A8A2 +:10286000DE01F922DA273FAC88E3735AAF8CD8FF38 +:10287000C1F469C3C0F4D13E79097FFFAF186B1E64 +:102880008FFD08AFEF8C31103D89F85A26BDB2A2FA +:10289000B5FA0EDC0FA226F8DF473ED8FFC8A62205 +:1028A0003AE72FFCDA491FE771FFB099AF179F3164 +:1028B000AA77A0BCBA4A43A6BB74F4B998C2F1E1A6 +:1028C0007C33C7EFB8FD5AAF77B4EF452583AFA788 +:1028D0007C2CC6E110FBC5403399111FECC75F3D4E +:1028E000FA7C5C5F5D14F620F31C8F3F673E105C42 +:1028F0001F8DFB4BBAAAC72299321F08919E3863DD +:1029000064218C439DD9C1F914DD57AC77D1045EA5 +:10291000EF2203F8A7BA7D644BC5BC2D32833F0B71 +:102920007AF9E5CE628303F745ED92BC56C83F497C +:10293000E86DF49B32D18E88FD4635AC7B630FD4B5 +:10294000BFA8895926D03EB3A02195E84C7B605999 +:10295000F48420ED37D3E803F6A73E1ACA2D558339 +:10296000B49E12B98F83E9F765E07CE0FE011DDEBD +:1029700059D1DC48FB11FAF04257E4FE82AFCDE1B9 +:102980007C1308B3A79A1D8D4FF5103D35FB32948B +:102990005D053C9490CAE78FCBF37312D17305ABFE +:1029A000E3FB09845D8BC42F670DDC0E2F32B7D09B +:1029B0007334069BC6239D7BB85D1578E64AF33ECB +:1029C0003A550E9BEFE5E758E806A83F4FF45FCB7A +:1029D000B7FC01165A31863FD16F003A737B6FE125 +:1029E000F61E9FB6ABB0FB91F63ED2BE47DAF54479 +:1029F00013B7E31A7FE8D72D11DF4C7A2068C0792E +:102A00007E634DF0D133C319FBD21A3D06CF07AC1C +:102A1000B6F0E77DB6E8767C7E69CD08A2BE0A9462 +:102A200070F90B9C74903FF3A5ECDDFE0E3CCB36A9 +:102A300071FE59DFC8F5DE7A71DFEFC254EE6F55D3 +:102A4000A472397A2095CBC9416CCF88E7A93AA9FD +:102A5000DD324B8182F23DC3F9D70C05B218000F6D +:102A600045817E059D4F7104C33E07EDAB284BBDEC +:102A70002184F37CC861F218449CD20EF33295F5A0 +:102A8000FFE0FDAD65F80B3439D53EE2DF50BF966F +:102A900089795F6EF1FF1CAF24FDC4E8FF052EE8C5 +:102AA0004CB5F8FDC83F5398A71EE301A5CC7BE6C3 +:102AB000EE2CAC56ADC6F7314CBD2B95F4589A931D +:102AC000F6B346F0AD360EADBFDA38D056214E35EE +:102AD0001C30D3FEDDC87E1AC4B8D6FFDA41F7C277 +:102AE0001E4AFEDD46E4ABC8FE6BF4891C07F4FB0E +:102AF0003EECDF17C9EFDC81FC5B6281F1C8D4EFEB +:102B0000D5D85FE8F7FDDFD66F0CCF209F2B164797 +:102B100020E2DCC77A2A9726879D9BD0F677F7EFCD +:102B200063E6CF439FB06C8C03B0067EEFF1149147 +:102B30007F8ADD7C0AE56DBD83D1FDB38798CD8B9F +:102B400071A58346B60FE51CAACBD1DF837B8871C4 +:102B5000F90D9C70103E912C7C1F18E0140FEEBBF9 +:102B60003D6435ABA4EF3D9EB0FDD29A3D38F4C72D +:102B700054C23D07AD663BF22BE647FD7A50B204E6 +:102B8000B3A57EBE6671BA7DD1D903F91CA1ECB99B +:102B9000C27E7E4FC45B89806EBF11FA2115DC3581 +:102BA000A45B3AC69DA0FE74BBCCEFF5157EE36432 +:102BB0008D5E11FD9C8CF717A39DB687FB87ACF942 +:102BC00031554FB78348CF987EBA6A748CECF700C2 +:102BD0003A6C07FA17E9E86F31D37DD212D027D5C6 +:102BE0003D48F908FFF24F49FE8338EF5F1A39DE9E +:102BF000EC9D69213BEC2EEFA5F3BF27FBEFCFA1A6 +:102C0000711E12CDCA51D7A7E1BED83F083D18D9D1 +:102C10002F6D3C91E38CA483D6DF2B8DF3B0565FF0 +:102C2000E4789D43948F18E7DB26DFD22C8CF3CB1E +:102C30003D0E9CC7A5A84374F83F520FBE2DE4EF8C +:102C40006AF5216375D7A2DD28FB61F5E771748F02 +:102C5000EA0B3FC07B54CBA656DF83E999E98D3F51 +:102C6000B0833D2A9B2CD1BAFBE7FFFCC4C3780F8D +:102C700056D92DD5F7C4E399E527AEFF611C7EBF79 +:102C80004D12EBF29B7F88F78496DD291178EB7863 +:102C900002F2DBD19FF61B71DFC01C713F18BC52E2 +:102CA000F5F1B1AF53F9BAC4D742DF7E83F6285E9F +:102CB000C833C60AABF83E33F0638CB368DDDD6F12 +:102CC000C47E1FBB0150FEB558AF3FBD5987A38ED0 +:102CD000DF64BE5DB5F37CFA7529779A1416978F79 +:102CE000C44FAE34DEBEB67E8AE56FCED77FE771C5 +:102CF0003E779A87E7F3703B8AFDAACCE74F3DAE5B +:102D00003D3EB7F8753CB271B337AB1E6B7BDBE46D +:102D10004F4A1B8FFAF31307C7873DF9740E107ED5 +:102D2000DDEFA6F5EF009D9377F1F5A229E5DEDD55 +:102D3000F7C1F3B891EE5A6287A2CD6DF568BFD2A4 +:102D400038FF1ED1F413FC3469FA1AEA6D897A2827 +:102D5000ED6EA0DBF434339D5B996EE7747C7BB839 +:102D6000A4C93FDDB3A5E9ED0AD6AD207F4DCD1B4B +:102D7000497AFB07AC97D23EE634E27316F3D2F3FE +:102D8000D3E29E228A03687629BDCF2E8DC5719528 +:102D9000B320959BC1FC0710C77DD8D7BF10C9458C +:102DA0009FBE89D0A743EA1BEC5E42FFBABAA6EFEA +:102DB000A40542DF6E0C907E8B61FEC96961FAAE9C +:102DC0005B22FF7A8257DCE31D2E577DEB5FA32445 +:102DD000D2DF2D51D1E46FCDC895DAD1FEBD62ECC2 +:102DE0003A4CFA7D9A99FC2BF831E0F960A22F8ECB +:102DF0003757AA463A3D86C60DEA3952C0F7514EBA +:102E0000F524CE47399B5A0E748CEE1FFFD4059BD8 +:102E1000BA512F4ECD7DE7562C7713EB51B09E1F44 +:102E2000E29174E8EF4CE69D82777C55FA5C747F02 +:102E3000D1AC3C89F681BFB7E608D9EB6B0F78E8D7 +:102E40009EA2195EBEBFDB1B0AC9788FD1F45C1746 +:102E50009DDF1C7B94A76F9AE0A272F92FF4ACC39C +:102E6000F40F5517E5BFF680B398E2BE952EDC4906 +:102E7000C45CF3142E573952DF3DF27A7E287FBFAF +:102E8000BE02C9F6A3B411C467137D122B83F213DB +:102E90002BA5277169675DD4CAEB699D33F0940156 +:102EA000F5EB2D621E5DF3F87E945BE6CD34E2B95E +:102EB00037E0977B89AFC0FEE3FC687C73AFED9D84 +:102EC000931274E4258C57229D7FA0C937F7FB67C6 +:102ED000FB4606378B7E55EAED142E8824F4EBD79B +:102EE000E392285FCDEFBD7AEB437040411F4CAEBB +:102EF000C82A65DC8FA475C6449F99D68527E7DE6E +:102F0000321DE765B26F53377DB747E8DF33BA73D9 +:102F100044907E17E70FEA4BAA94284EC5F4E78C3D +:102F20000CB8BF8FDF5B9054CEF931D16F0A3BB73D +:102F300084FE833E3FE09C6D69A4BF013502BD73F2 +:102F4000C5FE3AE03E1AC75C9F1494601C2F2F9078 +:102F50009809E7D7CF8278DF3B640DE13EF8EB823A +:102F6000BE99C84790560D3A7F6BB6900F634A677B +:102F7000BD1BCA1D99C848EE5F9102F3883E1FDA57 +:102F80003D7B7476FF69B14F6F7412B36492BD9547 +:102F900002188718FD720AF75393F8B9996BEEF689 +:102FA000D03C4CAF9018E21AD664A3FB36A1DD6F7B +:102FB000BED19DA79F5DC1E313D31F1817C450C591 +:102FC0004B85DAFEC08011957D95CFCF4250FF8CA6 +:102FD00024E6C5F535394F22BC338B59086FBE55F1 +:102FE00099BD210EFBF981C98BD7E7DC5C2911DE85 +:102FF0008CF7496D741F4EDC4D72C4BCF37BF540F9 +:10300000EF13CEB3F8D3319E5772398A85C6F6CF07 +:103010005B89761F25200B45A747D2818F7C48BF4F +:10302000083D84011AA467725F3AC0E2B4BFAF8062 +:10303000E3B6F410BD1D1A8E117E9676DFE2753D63 +:10304000AEF9343F3E2EE78955BFFD009F27D2B22F +:10305000C95EE01559B8EE2621BF40BEE39FB022FD +:10306000D40FC787B8F7FC9CB0475FFEF1BE3B9119 +:103070001E55E512FD5D8EE2F2B50AFA95B7F82508 +:10308000B27FE5F3566562FC6C067CC77ECE286F86 +:1030900031A29F54BAA03A1DD7538F3B7CE9E87FF9 +:1030A0001AD23D7C1F50A599FE4EC3F1643FBD3F2F +:1030B0002ECEE568EDCCF2B8B2D05F29F640BD382F +:1030C0006F0B5C59A8DFBE10FD817E50BB33FC3313 +:1030D000A99D9B1754D33C9756B5A561BFB476DE26 +:1030E0004A0FA661BFC01ED37D993915A25D6B78CA +:1030F0007B73F2A03D1C571E6FEFE60ADE9E92CE58 +:10310000DB9B5505ED019D6E16E39A5BD1A6D0F8C9 +:103110007257D1F87E9F55773B963B3E0DDA817210 +:1031200039E5665A67C9A9DAD48DED1D5CA3B23FB3 +:10313000631C37C20EE1F298A37068FB731DC6953D +:1031400070FF2EF8BFB84FF72193B7C180FE4B69CF +:1031500050C499C3ED4ADF7EEA8B41F2AB2A2DDEE3 +:10316000D2386EC7E486847EFBA1D985C7A4AEA3FE +:1031700085C8F70E7E6EE5B1D931A4FFDE1D25515D +:10318000DCEF15A3D06F055C4F6B76676A39D819F1 +:1031900078B6CC8E213D3E671C3F7739C7CEF31FF2 +:1031A0009B28D1BAF8D40A6ECF23ED0FFEE8F57D47 +:1031B000BF1DD2FC4A1FD9F1692C5079137C3FF214 +:1031C000DEDFC8CF5D69086DC4EFE0C791FE66160B +:1031D0006EAFEE1D231560BCB7F048EF41B43B1550 +:1031E000796097487EBC87C89E8D83EF90CEEBE2D6 +:1031F000FDFB41858BF444A41D033BF1FD7498EF66 +:10320000F766FFA904DFBF7123B783D71EE0F66C12 +:10321000A6B067A0476F4C8F1F389FEF09B9EF9B8F +:10322000CF48F98E98DF3E3CE1E3F2C836D6117EF6 +:1032300048625D12BFB7A15BC2FEA6DDC368DFFBBB +:103240005078429BF7B7FBF158B87F75957847EBFC +:103250000F6922DDDF7581924EF4B3D344F922F475 +:10326000DFB1DF791A0EAAD370D0C2F4F1FDFD4EA2 +:10327000C27EC37C75241410DF0ED5EF7B93D52559 +:1032800048CF2906BB17F5F4DFDEE3F792CD501BDC +:103290004B513F54B0C006A74E3F8D047F46D1D955 +:1032A000B951410BF8E6FDE9D19DCEB0747E57527D +:1032B00058FE6BF779C2BE178091D47F1F7BC41B69 +:1032C000961EDF3D212CFFF73E50C3D2137BCAC3AD +:1032D000F25F77CE1796BE86F9651CF40DBD556179 +:1032E000E5CA3D5931283FA33A157EEF5A40EDCE4D +:1032F0004DA0F3F0F473E3657F583DF9E2BC723101 +:103300005B12560F7B81DF8B5007FFE13C5E137130 +:103310002FC208718F77D56EDDFD09F06F049E6BAB +:103320008EC66778FEC8F3C94FA48BF3C9E3D838BB +:10333000C41103E689F173E93777B26050C2F51919 +:10334000CACBAED9C1EF738D1C97767E99198E2AA0 +:1033500098EFEF60BFF14A407352F8BC5A3DE1F379 +:103360001A951B3EAF0E6FF8BCC64C089F57971AB4 +:103370003EAFB1E5E1F31AEF0B9FD7C4AAF0794D48 +:10338000F687CF6B6A4DF8BCA6D785CF67E6EAF023 +:10339000F9CA0AD4847D1FD65017CE97623E87376C +:1033A000AF0E2BA7CD6700FEFBB6F9BCB9B2D8882B +:1033B000F186D93E63D83D19573BAF1F46CCEBD5BC +:1033C0009E3B07FDF72794730DE7E04FB8FF37E604 +:1033D000F17B605ECBD1FFF3E0CB00F93393FD6668 +:1033E000D20787926F3AEC16BCA0B70353BC2D0AE4 +:1033F000DDB326F01D860BC8DFF1737F66BAF013CC +:1034000023FDC3D9AC37431936D03EDC6BCB320A2F +:10341000FCFF653AF9875DE4F754A07F28F5EBEBF4 +:10342000C1FC435CCFB95A7DD9A7BF7F50477AFB17 +:103430008AFADB93DEAF0749C906480F4E5E3DD9D5 +:1034400087E7EEBF34F27DB7BD3799293E3FF9FEDD +:10345000627AFF8AC4E34D81DF717BBDF68FDF4B5B +:10346000C773E725156609EDF5648B447257724EF4 +:10347000267FB0C45E906E1B87FE8859C64F2576A6 +:1034800089E2972F7D6D500318FF8FE7EB79C7C452 +:10349000BEDD63AE2C92D7F71D66BF05C637599CBB +:1034A000033918E1E71C73F07D99C75630BA87E2FB +:1034B0005816F1103BB6CA23F657BE4BE3EEFD316A +:1034C000F388FD951457D86F77D3BDFAD765F6D03A +:1034D000BEC5DE89FCFEE5FE75D9AE10AECBEE6F43 +:1034E000CDE2EB93A014697DB2A56F5D96FBCD5B39 +:1034F000F2FBFC466C677F7332F90953C43D1CFB39 +:10350000155FA90BFBEBE1F71BEC17FB2F8F0BFBF8 +:10351000B89F79D6D23E970798D8171BA078C5FEDA +:10352000AA11B46E1C692FF7B340CE2398BFCAA668 +:10353000E51FF72EE6AFB986E767E17102C89FF78E +:103540003CE6F75928FF3197371DD771357E39761C +:10355000D3D47494DB52F003B1BFA595FCBE925254 +:10356000678B82EFA52A6E575B874BCDF87E718AF9 +:10357000FF8719C01F292325CA376DF81EFA3B8B18 +:10358000C7868CBF7CFF8FF70C127F79D7C171D9AA +:10359000A1E4FC7AEE5F84CB9F1637D0F057396BED +:1035A00016F194103D07C60D7AE99CDF40B92BA0B7 +:1035B000FDE320778BB0DFD385BC0131293E05FACE +:1035C0006371C6F8FEF1BFE7EA3A84EB7EA556C9FF +:1035D0001B60421E74F86528F9D3E836CD792A03BA +:1035E000C77DD0FA65865E7FFD22D17F6F866E5DD6 +:1035F000699A3B68757E0B6E7E7B487AFEE604F224 +:10360000C72C41CF59760FF9F5C7ACFC9EA0483ABC +:103610004EAE2CE6F12C817FA7B080C0B341A17FD4 +:1036200006D763DF12DF7A18C73103E8C7F51D8FAD +:103630006F011D9B3306C1A1EF8B715C2D0E8DE4D4 +:10364000DF3EBD56191EE7D2E25B6C02E8355C8FA7 +:10365000D1F4DA10F43C32C4FA85E4E1F596897BC2 +:103660005BDE7272FF01FF3E5DB26E3FE05B0D5CA0 +:10367000BE812F482F956B7F3FCE6324FBE885FFEB +:10368000B0FF7F6776BF4546DC1F6E074BC4FD2C3D +:10369000A511F7469588FB5C4A22DE6BE38EB49356 +:1036A000DABAC650E33F9821ECA8878DFC06BE83AA +:1036B0008D247CD4FDBE81D6055E8FBF65410B8C09 +:1036C00063E4CFAF213FE3F584DBEE7907D34F8C82 +:1036D000203FA52C65C9AE55907E72671E7DD7EC44 +:1036E000ECD10C89E8582A4B0B319E983BEEC35B1A +:1036F000B3A0DF87ADEC764C97256F9002D0CE83D8 +:103700007E4F21FACBA52646F9665CBB62AC7E5D96 +:10371000FF44068F3BCF10E70ED2F14AD0427A2AFF +:1037200018C7494F0A2A4EA8D724CE7DA62AAC1E18 +:10373000EF93352535DB9D483F1BAFF768C1EF0B95 +:10374000B1DED26C9E1EED8D3A350CFB2349D49F21 +:10375000D1B95208FF3E40A99B7FAF287C2A05F7CC +:10376000CD969668F96F3A8FF94BC53DD7D1AADF50 +:10377000380AE323228EF47B85F3C71719161AF74C +:10378000CBF38A8D78EFCB1C1F8FEB25057AEA638C +:1037900061BC4955C5E3D67BFAC7F7F70C238DAF5B +:1037A0007202CF57E9AB362ED08D7F8EDA4BF743BE +:1037B000CFA93AA5A07E783F42CE67E22F32CAF960 +:1037C0001DB7FF18EAAF2CE5B8A552C8F9BB28E72A +:1037D0003A7DE9C35FD0DECEE37A6E663997F3397E +:1037E000AC8EE4B38A35D3F356D645CF79AC9BCBB8 +:1037F000F7A93EF9CE44BF5C27DF519930DE9B9993 +:103800002AE2DDECD59EAC81723D941E043DE0CAF7 +:103810001C3FB41CBE35244E7B7617EAB5B91A4E50 +:10382000AB6A799D705A39C76903F45AFE305A471A +:1038300018CA4E0CA5D786C6676D8AC067A3B1FFAC +:103840006F44FD46E17F9FA2CF4EE4650EA2DF8E5E +:103850000DA2DFF4786D489C5621F459044EC3B88C +:10386000188E3BBD8EF1F58921F0D9B7AC03976670 +:103870007E8775E0C875E69C44F5DD6CDDBECFDA69 +:103880000F2C160F9EAB19E763D968AF128B2F0C64 +:1038900083FA6B453C31AA9BA96DF0FE7171EEE194 +:1038A000F8300FD59B64E2FB60F03EC702EC57494D +:1038B0007748269C0738CBD3BF3FE37107942BC4CE +:1038C000725CBFF495B7B07A9BAE7CC96D5C3F7FEC +:1038D000B1C524D6E5FD9988AB12FE60A6BFE3749E +:1038E000FA2113ED3F1C66E2F21CA79D6BC2BF34A8 +:1038F00085FBC633B3F87AA1743009835D01B699AC +:103900009EDABED5D3E23CE4172E7E9FF3175B12FE +:1039100024C48FA715F58D2A6877D8A32E89DB5785 +:103920009EFFCE4C0F2FE751FF7A04C735D32EEE02 +:10393000E9F71760FCD56C1837DD6240BBF240EF49 +:103940001128BF22DDEE44BE2ECD3C711CFFBEC54A +:10395000F9178C7497EF923DB36342584C51937CA6 +:10396000F903FD9C25C1703BB2AC333CBDA22B3C9E +:103970005D1B614722EDC7C64C07FD5D51E0092F75 +:10398000DA87ABF5B3B225750BE7FF20EDAF592A07 +:10399000E6DF6CAE3B87779C9A1FCE2D5C4B7CD6C6 +:1039A000FB1AFE8D8B8447B3E87C7959269FD7DBC1 +:1039B000327D5BB1BC39336F0CE2CA92CC8A6A9A11 +:1039C000CF1D56FAFB605F58B9BFF0C5ABDCBEB681 +:1039D00066F0EFAD3BCD1E89E45FAD185F84FBA2BE +:1039E000383FD76EE7F6147E2CFCBE36D582F3D96D +:1039F0006A524DC958EE67CC8BFDA9D9BE98FE4ED0 +:103A0000D872D64DF7E49CC8E4FC556BF8A5C90202 +:103A1000BFB6BA934A2CD0DFD66725BA7F5AF94A87 +:103A2000A1BF9BBA09AB9C88FBFD5527DE4FBF6247 +:103A30001F5F4F7A2E93C7611BAE0F3FF7667A6107 +:103A40006600C5F3C6AF4AE91EBFC5AB5FA17318D8 +:103A500071A6DED862F41BB6C8C4F78BEFFFF5A3DE +:103A60007C5F637937FE7DB4B35BEC1EE4E7433BD8 +:103A7000CC34FEB3AF72FC71F6714E8FC569F6A0FF +:103A8000451A38FE7A2924F63B7547E37CFCE5F1BC +:103A9000FBA2711EFFA2ED6774D6D1397AE6A90B9D +:103AA0003B1FD3B1CB40F72EFE65D7D8B7F07EF4DD +:103AB000D659D3C7A3DDBFD1358EEE65D4BE6BFB1F +:103AC0003314F7842751BE6EFCCA40F2A180BDC4F6 +:103AD0007DC1A50F57D03ED90E9FCD85FDF534B5DC +:103AE000D339781817CD5BC7160B8D2B8B756DA44A +:103AF000F3424D65345F354D35341FCC707D219ECA +:103B000063A87D98C251ACC339C186E53B98523E4B +:103B100058FC7F55265F172FCEE4F19E8EF7F83DB7 +:103B2000996586EBA7A37FBA628B4CFB750FCFFA22 +:103B3000E8388E4B932F69D684941EBEFF81FEFE1B +:103B4000EE5D1AFF88FE2CD96DA0FBF7AE2467E668 +:103B5000CCEBA97F91F2D611F0D2DFEF8894BB2392 +:103B60004D85368CFF47CADF5D4DD9746F116BE010 +:103B700072F86526FFFBBEDF410EBFE6F6355C0E30 +:103B800059DA2CE2D7FF0B4F930BB30080000000F3 +:103B90001F8B080000000000000BE57D0B7C94C526 +:103BA000B5F87CBBDF3E92EC269B10F220907C9B0C +:103BB0001008E4C126407C816E12C0A888CB430562 +:103BC000B5BA81007907C17A638BCD62C24BE33508 +:103BD000D488C81F7541A0D82A0645A41070414555 +:103BE0007A959AB6DAA2B63411AB229144508BADD5 +:103BF000BDDE73CECC64773F12A5F7DEFFEF77EF23 +:103C0000EFE65E3BCCE39B3973E6CC79CD99D96F77 +:103C1000BF85BFAB189B96A6303694B16F459E31D9 +:103C20001FE56D5906B7DFC698D5C5DCDB204DB45E +:103C300030B752C05886A6527D8666666C2263EA0B +:103C4000D74B771CD318DB91E6B56B904F63EE7CB6 +:103C500096C198F30B668881DEE053379B00FF180E +:103C600069F66F7332B6DEE431603D53BD2F1C83BD +:103C700072534BC5F8FBE17B4DF4776B9A3701FB30 +:103C8000295FEEFDFC10346B9B3536CF9B03F9F3B7 +:103C9000730C1AA4B636467065B60598311EBE8FF1 +:103CA000774F34C2F7F146B6A41DCB01DECD39C142 +:103CB000F9C8B4483311DC99F11EEA27C3E9A0F131 +:103CC000DAA08C413F1B1B22FD0CE063DF7C6B64A0 +:103CD000858C455B19FD3935E6B344031E2EE5F8A6 +:103CE000705E6AF05D1D4DE350B90DCBA1BFA80910 +:103CF0000186FD66627D1E634B938CDA8743A0BD0F +:103D00008B7587B683EFBBB13E33CB40E50666D5F6 +:103D10006C30560BFCEB5B18DFD9C6F3F8F72DFCC3 +:103D200077B655296D87EF9632E66800FC4395BB60 +:103D30009DC68379DA701C338D23E7199D523409AF +:103D4000F1C7DCEE91F185847FFAAB8289E0FC1546 +:103D5000170BD861FC3B7298D79A1E84F3F236F7A2 +:103D60002AA65D88B77201DF83081F90CAE52EC8B6 +:103D7000670D0E5F9AA685D19384CF5C6753591E59 +:103D8000C14DF8667719FC99305FF3B0241B8BA600 +:103D9000EEB254A84B6191AEFB619CC793764CC7C1 +:103DA000F2BF4644E73120A4F84848C731D660E561 +:103DB000F97F898CDE82E9080353912ECD063645C2 +:103DC00089C3F6A97EFC2E3E125218EF5F8C1EC6E8 +:103DD0008C506E685590EE16207C809F44165014CF +:103DE000284F316E7E6C118E7BF3705713546544EF +:103DF000B8CB097F4C4BF5D819FBC0C4E6225DE96E +:103E0000F19211515449EDD6C09A2430369F3E614B +:103E10002CA189CFAFAFD2E0DF02F39BDFA5742BDB +:103E200079D86EAABB4BAE2BE07DA3A1D58A70B525 +:103E3000694E828759BB18CE7FFDE5CC713F649BEC +:103E40002EF311BC721DEBC53A2A1D0AAD1FD658C0 +:103E50000B83E3B2D6476170C0AF83B793E3CECF95 +:103E600051039601C6C7BF50B865FBA8C73A9D0865 +:103E7000D760DF6D8A603E2BE099AD7269D86E44E1 +:103E800086B74583F54E692AD3085ED6E944BC4D12 +:103E900067DA2605F28723B4E12EA08FE9D6D78F03 +:103EA00063FFD3ADACDD88EBED32F5746585C233CD +:103EB0003CF6A36C5A2A86F8AD6B28F17C381E506C +:103EC0006986F1109F33CD84CFBA7B8AA87CBFB2BC +:103ED000E4CFF702BE7CC74CAE6DC82766BA932309 +:103EE000E3314D3000E6D89E7F37F2755809EB007C +:103EF00079655669B211DAD77BCC060BF453D2F14F +:103F0000B9B90BD6B57E6FB799E5020A92663F56EE +:103F10000EFD565AAF7B0CE9B56D4571326E9E337E +:103F20004AD7133FC6712A6DAE6D80A736A73B39BD +:103F30000EE67385D17087073797EA889C09F3BD31 +:103F4000228DF5E76761DEA850FE14D0CFF3B409E7 +:103F5000A15D6E703DD304DE37AB8CF6CF66BFC17A +:103F60009709F4AC2C87FD09F8D9CCB415480FBEDD +:103F7000E58CE61795C3F9685CB3618B11E0F7DB5C +:103F8000615162B01DFC613B9B95F8AB1C1F9717FC +:103F9000E921E1528E6368578A742CE9C429E8A9A3 +:103FA0002D96CFC79EE371DA5C8C5DF3E4D36F4549 +:103FB000C27A26180DB0D9A9898F5D2AF6EDE5825F +:103FC000EEE07F1E31007E8761F6E675532685E6BA +:103FD00079FBE0F74FCCC47A9023FDF5B01C285F45 +:103FE00064DE1D0178586D0FD6AB49D0BE59E47D13 +:103FF000D533A78E84F92AB2FEAE5637C0FB5004E3 +:104000000B1B2F143E55D7BF09FAB769B2FDD61B5B +:10401000A64283470A64DED0EA06F81E3285F747D7 +:10402000242FBEC78C1C6F7446D1BA96E141390764 +:1040300072AF07F980D6E728467927E561946336A1 +:10404000315FD3F93924174CF10AC90F13D0E44872 +:10405000F8AF5E4BA77564AAE6C3F5B3266B0528D7 +:1040600007BFD214E20785062E9FD48E99EE5868BA +:104070006662AE2DC79C241FFF86FB2D216DFA11B1 +:104080000B0BCA47A6BA57DD00FDAE7D04F807F456 +:1040900063453999135C6F8BD8C3383D03B5F34C36 +:1040A000443E73A3D3AB3A43F875669B66C6FE9E47 +:1040B000127CAFAD32DDA084C8D364A781E0CACC46 +:1040C000E2F22CB3CDBF261DFA5363E74C40392CE6 +:1040D000DBA53B461A70FEE9C3857C04B95B04EDA1 +:1040E000D2DBBC090845BAEA9D87F34E9FBBC8ECFA +:1040F0007362BF46921B13D6F8238A702D2B0C2CAB +:1041000013FA539C1A8D67729497617BD35CAB0D45 +:104110008977A3677B04F69F99B585C6670ED58519 +:10412000ED99EA298E80764FC4A913EF0F81E77EBF +:10413000875A8A70141ABD7792FC1972B91BF7CB93 +:1041400088B86B4B5DD1280776E52F83FED62B30E0 +:10415000EF01F48707D3B99ED4AC787C37E07ECBEF +:10416000670CF7A5AC4F7371BDC4E5E47A8CE673B8 +:104170001423DF9AF48587F4139793EB4D07D5AE9C +:104180002807C2CDDC77CEC7797A6C1AF215C6DA69 +:1041900003B82EF18D9A8BD62FBEEB817158EF327A +:1041A000B832B15AE5FBFCCC2F13B7A07CEC707A87 +:1041B000273B914E8C5D0FE3BAB30754E24F677E05 +:1041C00069213E11FFE31CBF11DAAD8DEF7AB814FF +:1041D000AA1F37315F441CF61BB066201ECF1B5C44 +:1041E0000AD2292C53127C6FB3297E06ED27C03EDC +:1041F000453EC9921492CF3657DFEFB0FF6BB5DF63 +:10420000B9701E256AE010C9339D7E41CC16F2C5F7 +:1042100022970974F69115F51BD6FCED90A0DE31BE +:1042200095B99B71FDA43EB2DE0CFC043E5D6FB0FF +:10423000FA91314CE8E478B876F9211ACFEE6A7732 +:104240002B902F07398BFC323D6B9699C1FA2C6C61 +:10425000E5FB69BEA043A6BA867980BFFEC019C53A +:10426000E5296BA694E41BCEA705F44FE83F7D0D2E +:104270002C902D54DF5DC1DB617FD08FF93ECEC71E +:10428000D327F0F504C4527D855311FDDE27D256A5 +:104290009E8A71E53EABB77238994E3E4BF9DA5BB8 +:1042A00071361AF9C1FC0E6300F5BFEF93CB1B8189 +:1042B000D4909E7D1D46E2EFC17EFE16ADD906EF7D +:1042C000A751C07B78DE57D15D30DEC68EA72210A5 +:1042D0006FEB678284263905540FA94DF534E3FE50 +:1042E0003F09FB0DF174B282EBC1EB954EB791D350 +:1042F00039C99F3B46CEBAF335943F13C616205CAE +:10430000492AB31A819E368871620E03DEA0FFC768 +:1043100014D8227141FC3EA6AC4B5E0AE5134A3923 +:104320003EE34ADDC65A481F8AED9B8AFBB6EF1A68 +:10433000C6B640FF89514B36E3BA27DE9155D0040B +:10434000E3478E6777CC82EF1E17FB3F19BE8901CA +:104350009E9D749FCF89FDC51CF6103C7DB991AE22 +:104360002DD02411E66E8FA3744D04B6632B146C0C +:10437000B76AA842FB795519C8E11CDA466A4C1C99 +:104380004F8F43AAA8ACD984DFA94C8DE4E5CD3882 +:10439000CE23D17C3E430DC63B66E690BCA07C1C80 +:1043A000ECF32D00CB4E672CD12FD845A5385F2CD0 +:1043B00047FA41FD7C17DA4B254BF271FCC40C9E89 +:1043C000DE9F1C50515E6C64FE0DDB10AF5966071A +:1043D000E2757AD691EFD48B7E9638FB255C9F33BD +:1043E000F3CE9FA883B24756CC9CB710BFCFE5FA57 +:1043F00008F3ED72CD26791FAE3F9DED893428205C +:10440000908E1ECD88413DE715B1DF10D72C19EAFB +:104410009916E300B88E1E1A45F5327FEE8FAF3B3A +:1044200070D35E81F21BD727D64CFA1320C6678063 +:10443000716DBB92FDF73B49DF0950FD8B16AA97C2 +:104440007AD39946CF635332890FBB156A9FE942ED +:104450003903FA10F1A5BE0376D2E34E99DCC4CF3E +:104460007D07466BDBA432827CE800EF9F6575E533 +:10447000A11E6933310FAE9F6D33D78F245DD914E0 +:1044800028273A0E3850DF39C3B81E0572306976D6 +:104490006EB05DB3E0E735E6C028D473E477323F11 +:1044A000CCC2ED46CCC7427EBF907B35913CDF6AE3 +:1044B000F57E82F8DF636615D44F3494DB42F093C7 +:1044C000AFF6E387E07F70841FF9F315697C3E7DCA +:1044D0006B9530FC28B3AC6E2CFF285FDD625182F7 +:1044E0007AE2C92C43C09C17AA2F061C3343E6214D +:1044F000F1B060C3C7FF40BB46E26381C7DC6DCC4F +:10450000BB101FF2BB0505E564472DA85A3E0353B7 +:10451000BD5CEB6FB7C622941E6ED7999017C1BED3 +:10452000FB2AA2C88C4475F74F679A917E17B12574 +:104530009456B05633D7F799D500FA9AB646A5F9EE +:104540006A3B14BFE6E4ECCF40BAA7C380E5D5C010 +:104550008E372A2817817B5C02C58A41413D4B6B0F +:10456000867C2280BD56F5A11CDA7C3CCAAF40BBDC +:10457000D5F19A19E9707533E74BBE162E8FA0DF7F +:1045800024A40B5FB3C18DFD64A673BD6172BA999B +:1045900052A0723FC123D26693D0CBC5782B98210D +:1045A00080A941E1E96AD40B06B0EF647FCDA6256E +:1045B00056D45BFA46181CC867BE32BBE7E27CBE25 +:1045C0008A1BC5506F69B62F5953CAEB696F7D15A9 +:1045D0001128A5FA7C03577471BBA19EF36EC466C3 +:1045E000A48B947403F5ABC7F7C2D6F0FCE20DE1DF +:1045F000F94A7F787E01F33E970453AFDE115E9E49 +:1046000092EEE0FD338DD6A7D9A4FDD689FB6EAD21 +:10461000CA10FE15C339DE0C23789A1E3B652EC9DD +:10462000C75833CB04F85A544EB72D6BE23723FCEE +:10463000CDB17C3FFC57E1D5C339357D14D15773DB +:104640002C1FAF19F689C017F18905CF589E423E3D +:10465000B0C0AE45E33C4E2B7D59248F1EB46BDBBE +:10466000A89D83E4ED7C61EFDE9ECEE5C449C5B52F +:104670003D00DF191E7A76ED28ECE7016301EAC9F7 +:1046800025B36DB4EFF67D6AF3E3BEAB00DC250322 +:10469000DFDEE77A9BF468FDFCE04F53A5FC86253E +:1046A0009B1F0F760AD9C321ED485E039D487E0DFE +:1046B0007DBA133C75E980FF7DA808C1F8FB365A26 +:1046C000FC4D0ADA472777BD8EEBB02B82E455DD2F +:1046D000F2BEED0CBE1F9AE0FD21B6EFB9E7BD6951 +:1046E0008AC6FAF5BCDE035CCF9BD06C09F68FFF5F +:1046F000D31292C7F1D7C0242E83B42DBCBC6293D1 +:10470000EE3BF6EF965038A5FEB2DEEC1D83FAE8DC +:10471000464F6121C2B3DED45A8AFB7DF130EFEA05 +:1047200074A8FF70AAE78881EFBB51A8E71CFC665C +:1047300041860A78F41DB7BA906FA33E8B7CB2C84D +:10474000A911DD2559990FE5A8D473A53EA5DF5F12 +:104750003F4DE77AC353E9EED1C85FA5DFCD28F41A +:1047600027ABED7937FAF75887E2407152A7B1EEDF +:10477000C5E847EB70129FAD4F62A4BFD6D90CDDE0 +:1047800097A03FCE6670A7231D6B063FD2715D1BBD +:10479000F32DCE43FB698507E705ED7C97E4A15D2A +:1047A000C5E944C251B77726F3DA088E0CD4A7D1F5 +:1047B0004E59887E45D48718F92B891ED7038CB8AB +:1047C000DF27C44BBDD04FFD2498B9BD9190107028 +:1047D000F970FD98C7E0E1F2D8F1515410DFCFA590 +:1047E000BB8F213EFF8205207F2726BB7761FE4BD2 +:1047F00094D3E3187B299DE3EFE8DBB3491E7FC91F +:104800003C423EDF1483FA9BCC7F64F4DEED80FDF6 +:10481000B098F9882F57323FA5AC6D08D1C12295C9 +:104820000554C0FFA239EE7751AFC07D19D0EDCB52 +:10483000D07C0DEBE47C1CF66720847E6A50CF07A9 +:10484000BCD65A59200AD3F6F0EFEA581F7D57BF5D +:10485000F75B4B206CDF70BA4A342ECD5F8278BA9A +:10486000483FE4C5B63BA5B526A0AB01E428ED93CF +:104870003507143FFA73A6196D6E2BE46B1F34D005 +:10488000FE860EA74F2C4439C5E9A95E9B768AFCAB +:1048900082B05D917EAC7B8CFEFB9CD4DE15807C6F +:1048A000ED013B7A28588556311DE56BA5DFF441B3 +:1048B00057C8BCAAD8AE690EC2972706F94BF58E29 +:1048C000F0FADAF6F07C3D533FE8D7E3A07DC31F52 +:1048D0008B02AF86FA4DD3EDF1441F1A737E8BF82D +:1048E00037DE16E31D609FC8F4AF8DEEC0AB26E047 +:1048F000D78AFBEB74B23FFC66DC8F552AF707EBD7 +:10490000DB4BBFFE2BB67343BC21F5C5393EF247E6 +:1049100014160FBC2F2D19FCBBA84EA1CFAA3E1612 +:104920001BF2FD60DF3932B85C7BC5CCEB1FB247B0 +:10493000B9118F4966B6C65A106C976460CDE83FCE +:10494000BCD1E989CB80F6564DFA1BB85FC23794CB +:10495000DB1BD25E4D311A685D538CD62DC8473FA4 +:1049600011FE91EFA397A89C3E13E213ED7AA443A6 +:1049700010CF3E16477E6237A629807BB413A43F32 +:1049800013EA19EAF115899C3F9871FB17E0F72C9F +:1049900080FEE5E5A0A360FF79199E31083700404D +:1049A000FAA984A34ED0593F1C7B15F2E349BA45BE +:1049B000FF14FAF358AB85F4182215CA27935D7AD1 +:1049C00002F3B07F4B86790A79FF420E3E944B7A10 +:1049D000036B18427C63B59DDB210077185EE5BE52 +:1049E000DBA470FC16167792BCEBBB17747E25C453 +:1049F0004F21D6B52423FCDC67A7E0C7CD19EE29EB +:104A0000387ECFBB562BFA1727087F7D9DC7E65708 +:104A1000480E7499D11F9AB657213F759DB0BF7744 +:104A2000A47967E077ABDFB3F98CF0DDFD591FACFB +:104A30004AA1F3195721B2A70C2C1F47FEAB5919F5 +:104A4000039CEF147E5BB2AA94C3EB403D2A1EF593 +:104A5000F210BA5B9AC1FD4E32ADCFE0F0F60057CE +:104A60002A02B8D2E2DDF39410BF5194D649F6473A +:104A7000DD6EAE541010284F7E3C9CF05DB7BB2815 +:104A8000FF35CCB747E463FBC2F76D84EF9E7B86AE +:104A900091DFA4C3E95D8CF3B14FE85310BE9E5D76 +:104AA000D7E4939F4D477792DE12814EB1FFC45BEE +:104AB000AD24EFFBFD1B2658FF8C203DCECBE0F450 +:104AC0009526E448DA720F5B680BE66DF17C7DA0F9 +:104AD000DC40FB227DEA3CC4D7BC0C95CF5F9CD761 +:104AE00068CC711FDAE9FA7DE864FC7CE601715E4E +:104AF00003D41D3C4F4ABFF0BC46C2A33FAF893A26 +:104B0000AF127DA63BCCB4EEF635825E9733A2DFC2 +:104B1000497D9D2531E8CB6C0B4C423F4D048E9571 +:104B20004CF4F1C038F4630D5127A11FEB89868244 +:104B3000C3E8DF51D7764EC62570B63103BA52D5D9 +:104B40007FA81EF2DB30BE2EE56D0E4EE7EA922CFA +:104B5000B45F760AFADC91E65E8FF32F7EC744E3FA +:104B60007FF520D7DFBE8A2D3A7508F5EC072D7842 +:104B7000623928DFF4B1C356D4F3D35BD2C96F6472 +:104B80005FC3FD3C6C241006C0AB3EF8471F87EFA7 +:104B9000ED1108CAD10C1BE103BF43FB61BECF3549 +:104BA0008D5492564731C26D6F9965108B9FAC4002 +:104BB0007DE69A3906F4C3640AFF917EFC97C53CF2 +:104BC0005EFEC648FE778395FB7F6BB5B8CD466E1B +:104BD0003712DDD466C46F467D77AFA06FB5CDC305 +:104BE00092B50BF595DADD65A4AFE8F98EE437925E +:104BF000EE5E56B95FED65C6FD6A92FE9A4D1CDF0A +:104C0000BE7F18681FA489F3C48C87BE4926FAEEBC +:104C1000F76FF9391C266D5512F2AE155D57229EBD +:104C200017B4C41AEA72B01FD752EAE7411BA37E39 +:104C30005AD20F67215F58E3608A86FD2D4EA3FD8F +:104C4000F8BE8521BDA80FDA0CC8C7D5756E2C65D6 +:104C50006A6C4231E51F813CB4DF98C1CF675B05C8 +:104C60003D362B7D0AE935CC9D8F72AE39C3FB3EB4 +:104C7000D241FFF9614324E9794CEDA47DFB446105 +:104C8000E708A49F27849D5EFC50CE2CA297B5AA6E +:104C900082FA815DF5A6C542DE7E3C91F4B88F05AF +:104CA0009E07A0971406EB9A7EC0E8C1FDA89A382B +:104CB000DDAB6BC11E42FE97E8FD14E198E4EB2CDE +:104CC00041BAB872ED875145DAC5CB81064D13F272 +:104CD000CB37E0B99ECBC0BCED5CBF8CC07DD08033 +:104CE0007D0F0D9E83EACF3FE579A74FD81BBE13FA +:104CF00076E23F8C2D19877893E7A66F7EC6FD413B +:104D0000F25CD43492C39756CAE15A82E3A25F6D33 +:104D1000642CC1B73F8EB91D7178CEE9B58E847C05 +:104D200043577E12D2CFFEE8846285CE6BBFF77CFC +:104D3000D48EDFBD29EC471CDF0970C4E1B9DE90D9 +:104D40000BCFF5E2F05C6F089EEBF9E93CD677A358 +:104D5000386FBBE05C6FD99FEFC5EF8E995C282759 +:104D6000E4B9DE303CD783FA920A4E1FC33A8CC4B2 +:104D700027869572BCC47999DF0A79239EF30D09C1 +:104D800039E7B373FF42DB4246FEEF9F2ADA63E561 +:104D9000F1A1E77DFCFBB65ACD8FEB8F7E1FA4EB14 +:104DA000BE3B99F4FB707BED3687F0FB7431B48F1A +:104DB000FA2EE372ACBF7EEE28EE37C34D8FF5F3CB +:104DC000ACC20FC6FD46BE7963FDA17EB0DE917117 +:104DD000DC0F26CE97A55FBD57D8E7BEBB0CD4BE6F +:104DE000579C1B16A35F18D6A597093AA88814E705 +:104DF0008162FC8A74828F59A7BA43FD8BD0DE870B +:104E00007696CFC6FBEB3F67EC30D2F9945CCF5E71 +:104E1000717E28CF0B139A06D6037B851E3823D1CB +:104E20007DFDC8A1413A97FB627F416231DA25835B +:104E3000ED8FDF312E47D68CF4DC84F45372D335FA +:104E40007812C85E117E3C369DDB39663387D37C91 +:104E500053CA96A601E4A0E463FBC577D929CC8A9E +:104E6000F63EEC6D1F9E278CDD3396E4CDC2911C7F +:104E70005E2425F4278C15B272ACD2BE3416CFAFA7 +:104E80003F70A6A2FD2FE97C7F640AD17F089D5761 +:104E9000E13CF5F031D5933B2B7770B8EE1EE9BEBF +:104EA00013E727DB0F26BF643C8ED9DC7E27F94F42 +:104EB0006B6D2EA49BB7B10ABE7BEA264B00FDC6E4 +:104EC000BD26DB1ADCDFC7A36E3F3214507BC4EA79 +:104ED0006DC4FEE7DE7CCD2ACC2B8787684B01FEB4 +:104EE000DEB2AE42B4DBAEB67A9BB0BEC6EA4D4B84 +:104EF00080F9DD7DB6F304C64330CF1021C73DB93C +:104F00009E01E1E7F094287CFC37CCDE16ECE71537 +:104F1000A5CBEEA2B89E2EFA8ED986523F2704DE8C +:104F20000E99DC933E07F80FAD4BCBC7388B92E858 +:104F3000776FAD47B9FF68623EEA0F122FAF8879ED +:104F40002D34781202C630781F433CD738CAD2922B +:104F5000D309DEDB493ED804BCAA6BF877C14B3CD1 +:104F600011E9FC5E256C9FBDE48BA57D6631346D37 +:104F7000A67D596675E1BEDE14095B05F4A3B7048E +:104F80003C608F30D4ABA19CF4EE6DCC35167943E8 +:104F90008A85EFAF94D58A1FE9703E73915D5CCE30 +:104FA0003CA9A87AEE19E9DD8570FF39EADF273AD6 +:104FB000B94B61E2DB30CE9EFB12C92FCE2671F8D1 +:104FC000BF6FFD196B31A07F6496F077CDFACC4CA2 +:104FD000F6D542A177CDC214E09BCDDC261CFF465E +:104FE000E635217E6E663E4AE7313FA5B7B200D571 +:104FF000FF807551FE3751792350C6CC7C747426DE +:10500000D27908BE5F17F471473CD2C74F7EC3E91F +:105010000303A62E825E670AFA807DFC16EDE3B8D4 +:10502000123AF7EBDF2753868A75EB6A8A01FCCDCB +:105030004C70E6233EAEFA86AFCBB40F1DA41F1D05 +:105040005280831504E903188A2D19F070B558C2EF +:10505000CEB35CBE5DEDAE263FF751F78AF878809F +:1050600073AAD146EBD2E932927F60FBE7202FA1F1 +:10507000DDEB2BF87ABD7E994272F2DAA47553D03B +:1050800005C98C36BB0FC6FDD26D6438EE8C0DDCC5 +:105090005F503ADC14B4E3E1BF6B4786E7A7BB8DF2 +:1050A00014C70586848AF4373D27DC0F3083B57C2E +:1050B0008EFEF919DFE30FF862A4F0078C6563C96F +:1050C0003F77F1FE80BF139FD5F903187A2D819F9A +:1050D000DD804A2BAC6FE7A457AEE885799FEB7073 +:1050E0001236378FE57A695EA6C7980978AD3377AF +:1050F000DD8EEBFE4123607834631F365A991B68BE +:10510000FBA34607E53F694CA2F4D3468DD29EC669 +:105110002CAA3FD3E8A2FC2D99EE28EC6775045F1A +:105120000F39FE3241AFAB23B8DEB12CE287C7CBDB +:10513000008E6523F866A8686F9D86D3AEDADB7EA5 +:1051400004532837820DC496AD03CB0AE05EF8AA5B +:105150007715AA438BDFEC9A816C65E23B1F262012 +:105160005E6ACF2BCC0B5B276E8C7B188EFB71E3BA +:10517000A504CFA94637C173BAB194D21F667AD2BB +:10518000687E6B945753A0BFEB9FE956319DEA565A +:1051900048EFBED2CDFC7E588F0D26AF17E9624393 +:1051A000B2D585FBB82877D6E37731E4D3DE3199E1 +:1051B00080A71BE3164C1D827E26D6D53C04DA5D03 +:1051C000759BE20A68413AFEFEFDCBF1512B68E384 +:1051D000B3830AE1E9B383B18497DFED36123C670C +:1051E0008F47921E72767714ED83B36B2C741EBBBF +:1051F000DFECB3A4427E7F6A24C5A9ED4F1D467241 +:10520000D422F6D969583706F39FFD624622DA2781 +:105210002F3DA3B4A31D5EB8333615E9F8745CFBCB +:10522000891FD1398599FCCFD53B23A87FCB0903B2 +:10523000EDB333824F832618857A679D59EAA1DE44 +:105240006CCC9F8E14E728909FF9DD7ADF74C497A9 +:105250007E7E4B5FCC4E44FB8B0D8F277C6529AA4D +:10526000A121C47F81F06BA383F9FDCFCF74E1FC52 +:1052700046ED7C34FDC700EFF6671F3BBB4F233A7A +:10528000273EF0F4CEC787FD3FC8D5EC5A19897682 +:105290000BC8797629F0BFFDEBA2DC38DFFD26D7FD +:1052A0008906E4F78FDBC89FF4B37FBDE783BD9821 +:1052B0003E585B700FA4B59971D44FF94FE74D4B31 +:1052C0008676DBF7B07CDC76D9005B0AC095B3E16B +:1052D000F3C3687FE5F9634B300CC8B523FF9561D4 +:1052E00090FFC54B4A00CF010ADA376F519084BF57 +:1052F000796A18EAC1CBD08910E24FC91E517AD41D +:10530000C8E31AC3F48A9CB6CF8BB1BF678771FD1F +:1053100002F48C4F57C0FAAE1EF1FB02B2EB841FB1 +:1053200067E2811BDFB882E1BC7CC9A827FBCACC3D +:10533000E46FC7E9630CD167BB33487FD963F09151 +:10534000DCF2CDB7BAD00EFBCCE37B0CE9B816DAB1 +:10535000A3BE5C9BEF8BBE1CEDCB3F8D740125B2D1 +:10536000114F5C5D8AF8A9DBFDC8B461D0EEB3498A +:10537000DC8F5EF1E2B96964DF83158C76D567BB9B +:105380009B126E81EF1EC829A6F8158FB19DC661CC +:10539000F57C9C47853C645D79740E4324AE51B422 +:1053A0008415CBE33A620FA5B0E07AD577AC70A252 +:1053B0005E3CC16B75A15EB9C1E94B46BF9C94AF21 +:1053C00020271FC17D9A6C16FD3A66937D71B1F25C +:1053D00051FAEB647F8F9AB9FF50FAF53699B93CD0 +:1053E000DF06FC08E94ECA7318775BE6C4A05F903D +:1053F000395EC877009C7F013D8BF4E58B1C5FEA2A +:105400005FF5C2DE2A167279EE90A6035D30DF33B7 +:1054100056EF2E1C672173737FBBEAD2905FBF6388 +:10542000753F9F4972B62F15E70072770FEE9F3ACE +:1054300023E86519217A99F5E2E42E8B7077E0F77D +:1054400017DD5EC7A79963FCCD1877F497632686AE +:10545000FE9B26617736093BB3C95E68A57DFCAA31 +:10546000A1E608C8E1C9BC87FE7E97D90B689F6397 +:1054700018EC40783B08FBDC0B7C2A00F2C53B1A99 +:105480001B7536A11FC90DFF6F87F1AE3C0F8668F3 +:1054900088FCD47F0FEBF53EE2AB884585B573B34E +:1054A00058F223335BDC7F6ADE93C4BA49F82709DC +:1054B0003B79D2D9E351C84F977D59407C75B0797B +:1054C0001D10F37A19E705E9C6B19E3308E7E42F0A +:1054D0001C2AEEEB2B5523F386C87B98C717B84ED2 +:1054E000EE6F22C3E6D14FF717398F1F2ACC877E84 +:1054F00073F6398F6FEA10FE8A8ECA1CF2FBEC41FC +:105500003B1BEDC1593CFEBEC3BE84ECE78E63433A +:10551000891FEC97FEA0321E5FD41121BE1FEA2026 +:105520007B779885D7B35BFBFB2739D5316F18F5AF +:10553000BF5F09643F87FDCFB40E62AF1B29BEB1C8 +:105540006F8585ECDDB6FC256FE462FD8A6C1A5F21 +:10555000DAE3C38CFE35747ED768A47E3A26BADFC0 +:10556000D5709C9930016DA0B85B9F1DE32364DC6E +:10557000ADB4E7B11CEDAE0BE36FA13DE0F55DB15D +:105580007EC7556ECF1E47FB795CF0BCE1787F1C6F +:1055900009EFC73B234A45FAD797CB7590E5D22E42 +:1055A0007ECFC4F5DBB6D8D6A1785E77D928AF6BAD +:1055B00014FA6F176E8BF086F8756CAAA76014AC9E +:1055C000DFC648D78C9B90AF97733BF03D815FDF80 +:1055D000D7DC1E3F58FEDA02C4DFC1BE2416EAEF54 +:1055E00095EBDF1F87722F8F37672A8F8B7EF2CD67 +:1055F000213CEE268DAF5F9F9DFB598278E2F13C06 +:105600004FB68FE17E0BA3427176329EE79484E31E +:10561000402EAD7B299EB7A13EB2DCB019758E80BD +:1056200088F37952F82F7DED2682F74981CF3B042C +:10563000FF7B920552D0CEF37544901C96FE8827CE +:10564000F766D3B801A6C590BFE2A891717F852BFC +:1056500009E3997A25DF51443C8E88D77952E0FBE3 +:105660009F88DFF122FE078DDFE9C71BC809C83F0D +:10567000D93044C637093F8F5D8F370E7F8D53E099 +:105680006DF3DA51D8CF0113E955A74C7DC72EC170 +:10569000F9FC3283C767810AB301FBDD3B82E23A42 +:1056A000A53F0EF096B717DBEDB6105E24DEA47FA3 +:1056B0004ECEB33F5EE85EC316B463BC66EEA73B56 +:1056C000E1E8B2879ECB9DF07C6447FEF4C7066399 +:1056D000C0FC1D713EB789F8A1DB44DCD06DCB3F27 +:1056E000B80DF9FA6D15DFDC4EE535E171103F1F9D +:1056F000E55E85F8EBC7D72943BFDF0BF1B5CF16C1 +:1057000027F1C5E3BB4ED92EA0338ABBF864ACC0E9 +:10571000D72E8AEFEC7B5111F8E2F8F43D36DACF60 +:10572000E33AFC51A1714FFB447CFC3E7F78FCD7EF +:105730003E19CFAEFA495F95786972B8ACA178711D +:105740002778FDB8CFEEB31558F11CBD22A6F82876 +:10575000FA6FEA5490D780EFB2D1DE6D383FA9C717 +:10576000487F6C6D4EE076946B6CF9C5C9D1EAC880 +:105770008E3A251DECA38E6D7B300578887ED8F39C +:105780009CAFF63802D1085735145D1987E7C92058 +:105790005BE2781EF5567D7C0C6D95045E8FFA42B7 +:1057A00075BBD11D118D7973B01DD28381E38FED4F +:1057B000E47E8D2AD69EB0C24876A0F552D073CE34 +:1057C000EC7D211AF94E95CD665D8EFA8D2E5EA583 +:1057D0006AF7EACE8CBC0BCB2F8447C76F761905CE +:1057E0001D04A243EF3F04D73D103DF03D08680F74 +:1057F000EB6B12ED7AC4FAF6E8D6B7A77F7D793F56 +:10580000FDE5ED275351CE9F917E04378F57AE7E35 +:105810008E9F93AE14FCB77A487B21E27B9831FCD3 +:105820001C51A6D556A64E0AB13FAAB39815D74328 +:10583000FA0BAB3D4CBD3C248EB5DACFAC98DF63A0 +:10584000003E62A3F553C53A523FD09ED6B1CACAB4 +:10585000AC5742BE0AFBC3D4E04FC5F593705D0060 +:10586000870ECF5F8CE2FEC895725FD8CD7EC917D8 +:10587000116FA33798C3DA9FB19BEF70033C63FCB1 +:10588000E1E5FDF4399ADBF959A1EBEB1C1C2F661D +:10589000D1FEE73FEF6F6FE4F142A0DE4B7AD4B860 +:1058A000BD6542F8DE354B7FDA5D29A00F56234DEA +:1058B000A407F1B427DF9B1207E91903E7BF7B6256 +:1058C000219F83FA2D1F5FE6FBF1AEA3EFFBDE5DA8 +:1058D0009482F130E34773BCE8F5D115F6C244ACCD +:1058E000EF10E37DDA1878F84353703E1F35BADDC8 +:1058F000E599C1FCA20DF956A49FC59BF2ADF343F7 +:10590000ECD7A61DAF44231EC7DAF8BDBC26D5FFD1 +:10591000AF683735ED30B603E5433ADE8AF53DB67C +:10592000C3BF46BD64F106677EE87D87C51BA6BA86 +:10593000CB43F09FBD237C3D72DBC3F3E3F686E7E8 +:1059400027A32E3CF49FFF2E3F109E1F7F343CCF99 +:10595000FAC2E3AA5EBAD433FB7A3CCFDA6474614C +:105960005185CDE0C37B5EAA8DEF6BF68C91CED5D1 +:105970002A1C3C7EEA933DAB0B910F56FFA9FC0815 +:10598000DA738BDFE6F8D1C7FB551C3FF235DAEB53 +:10599000B0EE0AC5876D5748AEE9E300A59FEA421D +:1059A000FEB242F8F75856289DE9E901F85B34FA4F +:1059B0002D6B1ADE7838F4DEE365EDEB28AEBF72AE +:1059C0007AF8FCAB55952D1F90BFFAB81D60736B2C +:1059D000889F32714FAABBE9E66B91AEBA6F2E3D3C +:1059E0008572E2F2861276723C54B4FC661AE2A723 +:1059F000EC0185219F297B61F4AB14572BECB9C5D1 +:105A0000E2FCCE71A9B6B70BDA2DF473FFD57C5D3D +:105A1000FC5E798B0E0E5DDCDEE2BD87BEC671F5E5 +:105A2000F17B32CEAB6AEBB796F0B83EEE2FB8BC46 +:105A300063B311E7BF50C02BF50CE6BB92EE65F0E7 +:105A4000AB518C7D88FF7319C69F799B464F0CEA3A +:105A50001B97B7F1EF6B198F2F93715F8B2C603F02 +:105A6000001F3B6A37137D9CDB1043FED473D80FB5 +:105A7000E637296427D40EE1F9DAA7B85FB5569C5A +:105A800073D5FE8CFBC517A93C7E1FE9C61D027F9E +:105A90008D9817D24968396BE576B78C43C3F834D3 +:105AA00077481C430DCC0BE3F7312E2DF4BBD0B857 +:105AB000B4D0F210FF3DF901A45FE24993FFE9ED94 +:105AC00000A7F12791327E2F12E913F811B79B66D8 +:105AD00072FEF67DE7906DF97CFE6D959964170D69 +:105AE000439E8972F9E108FA5ECA4593B077CA0D00 +:105AF0008A2F02CF3FAA22093F6D430DA4E7B5CDFF +:105B00003393FFAFCDD91E40FDBCED1127D949FD20 +:105B1000E78EEB2C61E78EB7F4C79BBB4759A93ED4 +:105B200082CE8798881F325598B608FD5E2787FD7C +:105B300043519EBC87FF043CDF22E2CB6F1171E52D +:105B4000D21EBAA53FAEDC3F14E5B0C49FBE5CEEEA +:105B500043592EEDA1C5C3BC9DA343FC626DB1FEAC +:105B6000088C0B65151777EEB54DCC13E6457AE535 +:105B7000870A8F472D8FF4DC7F15E26F7D7A3AE23A +:105B8000AF0BE5D6448C7B728F7284E041AE7B39DB +:105B9000D00CF2A5F29F8E26FA94716C27F2B9DC34 +:105BA000C1FBD418BF714AF4736AB4212C4D8AE446 +:105BB00071621F4EE5E727F6091E33EA55A0E3534D +:105BC0003C56B9D9F36F9343E08171AD88A7734216 +:105BD0009E4ABCC1BABB310EACFCA7165A77808373 +:105BE000D6A970A942F16D1F0A3928D785316EAF49 +:105BF000DFF2D650BA1F28F9E4F7D3A7B8FF5A69E5 +:105C0000227A01FAA471DAE68D22FA8CEDB7BB058F +:105C10009D3E64E7FD4C2D4E26FF8EFF8664A4BF9B +:105C2000588FD9C0CFADA5DD0D7433A0BEC7E960D4 +:105C3000303AEBA70F1D9DE9E966307ABA083A1BA6 +:105C4000913571703A83EF277AEC83D359ED4BCFBE +:105C5000EEF1E1F9C9738F443368774A6D4DC07B2B +:105C6000CB35DB5646E37DD34F545F34F677CA6FAE +:105C70002C1D28CEE7B62C45F895DC3625E4BCFB78 +:105C800013D5BF731FE0B1F25D8B0B8F9EEA77587F +:105C9000E8BE56DDEE4A8A33857C37CFAFA673A2C5 +:105CA000FABDBAB8D39F3D92A0513CB12F05E39104 +:105CB000407FA6F894BAAD268A5BAD7BDBE842B2A2 +:105CC000A8677DAB103EFDF708C779A0DBFA7663C5 +:105CD0009939E6C27AA01092C7F5BB1FF81CFDD512 +:105CE000F5BBAFF918E59A3E7EB5429C33E8CFADDF +:105CF000AECBB2C7E3BD237609BB04F544C08F2BFE +:105D00008074097065F2E5273A6E7AFA673BF7010D +:105D1000BCA7DE4BCC479752CFD637A2F15EA93C49 +:105D2000C792E77B3DED1931DE01F02BD333E29CC6 +:105D300023B87E9C8F6B7B15BCD48FF1E294D698F0 +:105D400002D157C078359B4DC43F6B9E7D6AFB46A0 +:105D5000A473580774D5573FFBDAEF2F47BB619701 +:105D6000297E3A9F8E4D4908AE5BBDC6FDC4729D2B +:105D7000AA5E78CDACE5F272D427E47A55EF3A44C6 +:105D8000F7C7F5782D693F44F7CB2F58B7F6EE6982 +:105D9000E41F7DFAAF66DC9FA70E2A2CD179E1F7CC +:105DA00015DBDE88C67672DDFAD751D7AE676B1485 +:105DB000EDDF9E0E85E2F4BE6F1DB3F1DF1391DEC1 +:105DC000ED2C16C6AF78CFE29F8EEBFBAFCB88EE03 +:105DD0003F569770BA7F7C6502EABB15265F8283C7 +:105DE000525E5EF1C40F053DBA93F9FD1E5F32CEDF +:105DF0006BE1A61B695E8B9897E8B0E2711E3FF5D8 +:105E000025D877BB0658CFDF65713EFBF1160BDD59 +:105E100063FF58C465FB7E6B147E803B496FF9615C +:105E2000FFBDE5A594FF52E8B13BB20C525FB486CA +:105E3000DAEDF55B5777E2BA7C3AC29D88FE379877 +:105E4000BF4FE04BC17848E36FA626F275E1F73B00 +:105E5000E83B900D25588EED3B4D74CF23E43BC2BB +:105E60009B1CFF2E313EC01D89FE838F13B85D033E +:105E70007F9D08479DC2BFA95B5E315DC3F73DC6EC +:105E800070BED0BFEFB7AEE5FB5CECFB2FDEE6FCEF +:105E9000A4CE3FB394F841A7299088EDFC87E6286B +:105EA000C40FF471F7820EB69AC47E0EAF07B854D1 +:105EB00025149F07B95FA05E9C432F6A0B89F347A7 +:105EC0007C2D2F1574620E963B83FB519E432F163B +:105ED000FB5FBF8E7A7E702C4B9C630B7E20BF676E +:105EE0009B063E270DEE7F1FE1A906F40E3C7FA91D +:105EF00079D74272AA669D91E2444FB6BC9270195E +:105F0000D0F9E976B95FC3F96CFF7E5DCEE3F72B7C +:105F10009EDFA6209DEAF7EBE90ABF32E07E85F21C +:105F200001F76B05FBEFE5B3621D82780FDF9F8BF6 +:105F300007E1B3E77578FD92E5C4E0F9207394A515 +:105F4000D179810EBF12AF7A7EB92E4B1B905F3292 +:105F50000C290AC1A7C4A3A457C6BC344E3F1D4B8D +:105F60007A95F2AB9F5EF5F30EC7A7BE7EBFE04702 +:105F70009E5FF2F8DE1AE063FCFE86EF48CA04DAA0 +:105F80009F6EFE9C45EB118C270FE6FDBA7CBBAEE5 +:105F9000BD5B97F7E8DA7B75F92561ED6BF6BE62BC +:105FA000E671BE81B0769686EBC8BEBA508FF0F32C +:105FB00073CEDD9F9B7D481FC3FB28DED8741FF383 +:105FC000D9C93FCCFD65BD5A5F34EA2B2B23B8DE1F +:105FD000D8EB10F9589EEF1B6A5E85FC5096F7458A +:105FE000707F76AFA72F3A36C45FD1DD61A47BE422 +:105FF0005D7EEE27BB109E26DA4F5DC28F36D568D8 +:106000004B6D9880F1DF19741FEE6CB349E433E9EE +:106010003EB7D42B7B23B97FA53792FB57FEC23CFA +:10602000BFBF02D7C3E75631EE66015F3A56F1AB08 +:10603000A668F40B2CE8E07137E52DE1EBBAC8B6A1 +:1060400095EE6F2EC6FB320AF29DF0B8992AB10F79 +:106050002A36E9CA3BAEA37D51A5DB175E719EA02F +:10606000DF17B78E11FA473ECB177E2A3AD75B2A45 +:10607000F8F45463CE0D7301FFBD478DCC02F9B324 +:106080001D46B60AE7FD8CC2DF7BF271FF6E3DEB69 +:1060900022BB51E2AF07F7CDE80BF1DA5FFFE29FD9 +:1060A0000A7F8C74B2E7FD3C8C43E8D9F3EEA8FD7F +:1060B000987FE90FA9EFB30BDB971CFCFA768AEB0C +:1060C0003C68A1988DDE83AFA7FE18F3FB2CE42774 +:1060D000E8BD8FBFDBE03B6827FF4BEF086E07345E +:1060E0001DF86B5E17C917FE9EC1AA31FC7D89B3EE +:1060F0001D7F3F81FEF7B31D302BE4EF07B91E5023 +:10610000BF2F82ECC7DE037F2D0C8D1FFAAFCE4769 +:10611000C683F4DAF93D7AA6F6A5E2F87507270FEB +:1061200041FBA076F721F302A82F79F91F79C84720 +:106130007B9FE77AD11953D713CC057C67CC9E3669 +:10614000D365E8AF64F48ECAD8B15FCDC17DA2C774 +:106150000BF47B06EF97D4BF1C45E7CF80970AE48A +:10616000FF83E163C7FF507CF49A3AA7213FE9DD42 +:10617000A58C47BF42102FFC1E7C4D879DE291618C +:10618000FEBCFCE05FF390DF7CDF7C8F8CE1F7925C +:10619000FFAFCCF7C3FFA1F395F45E33462338F588 +:1061A000747FE17E7FE96ECAEFB4BB08DE8BDCEF63 +:1061B000EAD8FF5BF49D3EF67FEB7AFF4AACB7DD91 +:1061C00081FED1DE03FF4865FFC4BC8BFE97CE5B2A +:1061D000EAEDC546D7D17C687F9DFD051BDA534D9E +:1061E000F2FC8EB98EE279C9B4E119C27FC5EDA483 +:1061F000126127D58CE576601333D0396089B59A62 +:10620000F4CE92E10F7ECEE3E70CE4177DDD3A7920 +:106210003BDD87D0D98553861BE99DBAA6E1E3878C +:10622000639C5C93CDE2C2F723A0BC1BCBA7B9B89B +:10623000DE3F6DF87514CF5B623D3617FDC9536CB8 +:10624000E176D3753AFBE71A2DBCBE943D1F8F7ED5 +:10625000BBD21C13BD45360DDB87D887D3C7F27779 +:1062600017AE61ADCD0EDB7F0A2F64C7AA022F8F58 +:10627000E9F072211E041EF15FDA8578536DF7771D +:1062800052CAC08EE5F322FB57DAB1127F7ABC31D5 +:106290006117AB346410BFEA707EFE1CD21FCDBB09 +:1062A0001F9F02DFFF2C5EF5EBF37D78AE1FCBDF87 +:1062B00045D3E379B89AAFE27E9A2CF4F3296A2C9D +:1062C000CF0FEF347A087F7E4EBF5FB854D43B8A3D +:1062D0006CB12AC58B692382EFE6A43096A2329F67 +:1062E00005CF071C5DAFE2BE2B7BD8A221BE87ABDA +:1062F000E29EB0CAFDE2B05B7D9105D4DE6D8EC337 +:10630000768B19DE6C2B4B612E85B767F8CE105E4D +:106310002AC47792F0EC0CBF2BC347E2B0DD032A0E +:10632000DD3FA73FC0F7484CD3A95FB7218E7F1F41 +:106330005D40DFFB0CFC7B37DEEB3731472AC603C1 +:10634000A69538EE3E8E76C5CA083A7F985ECCEDAB +:1063500007B9EF8DD9FCBC54A68F66F3FDBBDEE018 +:106360004A423D7746F318B24F9A223CB52FA21C01 +:106370007A368AE255CA56FDE0FA8908DFCE212E28 +:1063800024874F67ECA2FB00F39BE7FDF01D28F785 +:10639000EE88A0F28E6CEF1B63A1DF4F15EDF617B0 +:1063A000D14EF7396F9A08DFCF68DF7506FD7C3371 +:1063B000E644515CE90CD6FE6B3C476573785C574C +:1063C000F74EBB1971717DFBE72ACA8FEB2729C8ED +:1063D000D658778423F54E80A74C9C0BFF41D27F83 +:1063E00004F72397AD1A312A1DCAAFC7FB8A03D819 +:1063F0003BD66CD1BE48D984F64B9AB89F24DB6358 +:106400003FD86F7436F71B7D3096A7329F56C2DB9C +:1064100097AFB17467A03DB3C614180D69436EF110 +:106420004763A17E7A3A9BB601CF15EE31D23B2F5E +:10643000DD11EC08F9D7D73935B4EBBC4CC47BB4CB +:1064400038C97FD55DE432E3BB2FDDEB9C0E8CD7E2 +:106450008ECA711FC1755FD4AA6818FFDA5DC4C205 +:10646000E2B24E380223D1EF71C235C685E76969C1 +:10647000F29E586E24D98D57E778FF867094B596B2 +:10648000BD89FB9C7D03F32EC4F86146C4FBC02D7F +:10649000912C80FB21F8AED7B7D8FE648391E26FD0 +:1064A000E4BB5E69461E0F7BBBA087E9181F5B80BB +:1064B000F726BBE6613F07C78AF23847A18DD3179D +:1064C00043F8CAE21CB713DDAE1A4D71C5D3EFE332 +:1064D000F406F46F55E1FBB52A8BC473FEF7C5F7DC +:1064E000B7AD503DF83EED702B53F15DAEEBDBF3F5 +:1064F000C99EDE93EBFD00E1FAE45E7639AED3820D +:106500009675748ED2BF5E13B8FE50E91FBD05515B +:1065100020D7774F6E7162F6D090759AA3D0FAC0EB +:106520007CAC087F43EEFC11580FE58770FDA61781 +:106530000746E2BB5B538D35CC8DF23489B9502EC2 +:106540009F657CFF9D5DA3927F49EE77B9AFE57EA5 +:1065500006B869FFCAFDA8DFC7DB1BF9DDD01D8DBA +:10656000564A7FDEE8606A2663CF3426517E67A3F1 +:1065700046697B6316953FDFE8A2FCEEC64B29BF58 +:10658000A7D14DF9BD8DA594EE6BF450F9ED803E89 +:106590008C1F81F189DF483E83F0190A827C40AE6E +:1065A0009F694D9101F9B45C3FB077E9BD10F99E48 +:1065B000D7607AC1FF2FF8818FF9620A8278C57C93 +:1065C00044089FC4BC3D2E383F7CFA63525C089F50 +:1065D00053F9BB0CC80F130A82F34717E1F982E0A5 +:1065E000BAE07757EAD60DE950E205BE0F241484CD +:1065F000E2A5E7418CCB3B5B617091FF83753DFB6E +:1066000012E56D74EE9B6A667BD19FDBF5131B432D +:10661000FFA911F8A405EF4B55284C0DF137FC608C +:1066200049045343E4D71D0DB161F9F89F1C7F0D58 +:10663000DD690549DE7AA4C713F77CF6979F41FF11 +:106640004FDEFB51AE97E8B167DBA338EEF2481797 +:10665000F92318BEA947FE183A47C7BFB077797D1E +:1066600051F4DEDF1366C7EF7F86FEDC554607F286 +:10667000D1F9CD5C2EBF87EB0878FFA358C734E172 +:10668000BF91EF119649FFB9EE7DC0FBB3D3F9FD81 +:106690005FE1E7E9AEF8E0D997A0FFEEE566975035 +:1066A00041C2DF2F1470C871F5FD7D90CCC87F0208 +:1066B000BB9735609C5987766231F2C3FB2DF44E4F +:1066C0008402CACE6D50EE5DC3DF01561A8E529C15 +:1066D00083D76AA3FB8BCC67EA09ED4F69E0EFE251 +:1066E000B1AEE1B1E8F794EFDA454D709BF1BE3DF4 +:1066F000F689F4333FEB30BDAFC55A15079EEB94D6 +:106700008BF27279CF5FF58E9963676C73367F2752 +:10671000ECD058FE0E671CFA8CE8FCA095E4AFF4B0 +:106720006B95B7F07725CB5BF3CD8B42E4CC7C51F6 +:10673000BE208BBF032ECB7761BF2857CDFE1549F6 +:10674000B07EC3C47B1898C7F70DD757B9E37D2C2B +:10675000D8FE17D9FC1D874363F9F8714824746E7D +:10676000C8DF515D7F7F11BDCB0A4837A3BF558E6F +:10677000373FAB6015C647CF6FC1D7C87092DE4AAE +:10678000E4634DF36E51F17CFF455DBF3542EEC1D0 +:10679000FCCC786EFA0906CAD17932F7F37DFAF3A8 +:1067A0005F7C8472FAABA7ED0EC46DD5382E775995 +:1067B0008EBF90BF2718EE5F9FF28B3FD13B92F5C3 +:1067C000BBF97B939072BFAFF413BB785CA3DEBFC1 +:1067D000FBEACEF7A307F4ABEFE6E784DFE75797D2 +:1067E000F7F8EA7FC9FDC2128FF5CA793A97AA3F36 +:1067F000B03261A07B7278AE8374A8F7AF5FAC1F34 +:106800005EEF67FC243BFC9CF362EFE7C97C4543E9 +:106810005E06BE5B9DAE78CFE19257351466E0B957 +:10682000795DC39594EAEFEF55346453FBAA86F182 +:10683000547F85D06F4001A77BA0D2BF79D69F1926 +:10684000C3BE038EFA0D002C7C7F56D562F0FCAEE1 +:10685000B73FAEB28FF4B2EA9733E290DE2A3B1E26 +:10686000361BA07C720E3FAFFA4C776E50F7CC49C6 +:106870003ADFAB659DB44EB07ECC1A7A8E847189B6 +:10688000430687AFFA17F62548C795ED8A7B1BF4B8 +:10689000536DD11EA27701DF986DF285AC6B728EBD +:1068A0001A768F4AC21F9DA3859523BC8CFA693F37 +:1068B000F31EEE88E7A2188FB7EEFB359EFB9EDE37 +:1068C000349EE2AD2BDB77D5F1B8B62807FA593EF6 +:1068D000D5C561668AF13273E43DF0766A7FFA9934 +:1068E00028867A3FC28BFBF95325FCBE5B760EDF10 +:1068F0006FD9397C5D02829FC8F695B656339E1BD0 +:106900007CB66F76FC7D0047EFDEDF458F84F28931 +:10691000E2BBDEDD51F4EE60E5EEBFCFD88FFE9234 +:10692000DD25F14A089F28CEE1EF617CD6C1CF0773 +:10693000999FC743D5229E812E4E8BF3BDD33B87B3 +:10694000D0BB14F23B190F767AF70BD1869CE03A54 +:10695000D65B7D6B46A707DF13B19ABC3ED407D543 +:106960008E993ED469689FE3BDFB2C9F07F9B86CF4 +:1069700067B6BA49D8CA77D298BCC728EECD803C52 +:106980003BE605F897569AC9BF7EFB38EDE65B916A +:106990001FBF61A2F5583A8605D09F70AEC14EEF79 +:1069A000092E75BAE85CF6F6F182DF24754DC4F85D +:1069B000909A350A73639CDD8EE9FC5E8EE001DD02 +:1069C0004ED75BAB510F3DC6F5EE1ABF9179C71399 +:1069D0001F1985F730D8A58151188F920A7482DF6C +:1069E00057E6707DFE8499C783D6A4F37B006922A5 +:1069F0007EA5268EDF1BE891F70AB60446E17DBA34 +:106A00009AE7C728085F8FBC27302B300AE1AC29F2 +:106A1000E0F705247E6B7E747814D25DCDFCF62CF5 +:106A2000ACEF763ACE507CD28B767A67C9F0925D25 +:106A3000C4BD4550BC3EC5EA41BE323A81DE77B99D +:106A400057C0F744FF3EE4F71D86DD6B8B0EBDEFAC +:106A500050696EE5F71B141E2F23F3725E98C779F9 +:106A6000F5087AAE8C1479017F65742BC1DD6D62F7 +:106A7000FC5EC7D3FCFECDA7C99D7B109E4F9F1E19 +:106A800043EF53763BFD8BF6527D04BD0F59E9531E +:106A900088AF57FDDC12C0799D7ADA4E7643556394 +:106AA00003BD1F5A05DB1EEFD9415A8AF7E54E99FF +:106AB0005A5371DC534321453BEB5EAE3F1DB5AFEE +:106AC0004FA5FB225B2D0AF2ED2A202DD4FFCEB27A +:106AD000D6DB37F2727AB7A76AAB85EE2178A11CB4 +:106AE000EFA732D08B906E24BEA13E2C0EB2DB19E4 +:106AF000FEEEC4E3825F3D2EF6EFE61CEE87A91E94 +:106B0000F3DB3DA817773B39FE617DC88EDAB88B81 +:106B1000DF7BAD7E76E8169A577B4437EA1F55CF68 +:106B200098E8FD55492795C0C8F03CB992713D538E +:106B3000F9C98E51689F353D1D5180F3E916EF8AE2 +:106B400056FDE8C71C2F2FD9DDFC5D147AC3899D43 +:106B5000DA9E427177D3511722FAC825FC4F356E61 +:106B6000CAA3FDB0358A7E87A06AF525068A2F3133 +:106B7000723B0C52B74271FA56E2A335828FD6AE01 +:106B8000BE22E60ADC576F19E97DABAA9845640777 +:106B90009E53613F0DC0FFF578EB117CAE06F60900 +:106BA000DE9BAE15F7BAAAB7F37737AB57713F2321 +:106BB000FB397F67755944201AC75BB6CDE8C275AB +:106BC000AA36B78F1A0AE3FC41F02F68EF45BE24BE +:106BD000FBAB36BB1EA5FE7E7D23D1D51F72E269BD +:106BE000BC9EF6871350EFD5B75F16C1E10EB67B9A +:106BF0002A3A34EE47B6EB9F4F3BF72F9D639D77C4 +:106C0000BF0F9F7CF14C04C105FC9AEECBE9E70B6A +:106C1000F092BD5ABDD3C2DFFB013EE8C37BE1B1B8 +:106C20006E923BBEDF18E9DD22840BE5D1627FF86E +:106C3000F7E7B4CE42B4E7CFEDBE5EC5EFFF88FC08 +:106C40007822ADC30D84A7B74C744F568FF7974584 +:106C5000BBFE7DF76C148FD764ED3BB1BFD3CF463D +:106C6000513C5D772CA79FD345EDE4373EFD6C6228 +:106C7000017FB72789F4D12A075FF7D3CA2EF2C75D +:106C8000CA7A49772C002D913EF09B0CD413B85E44 +:106C9000566D6DA1F8178C9F2E2CA034601920FE24 +:106CA00019E892ECF7FC5CA157E07809227E9FF48A +:106CB000A47633F265AFD0236B9ED1C74FF3FAD8D9 +:106CC0005C45DEA7D4E265DC36C68BFB148AA3A93B +:106CD0006EBEB312F747F59275B722BD4AF8AB55B1 +:106CE000568AFCA05B31121CDD11FCBD6F163A4EBA +:106CF0003A4F1D09C179A688F1D27235A9E7B2567B +:106D0000E8A7A65969A1FE9DF27738F87CE4778060 +:106D10000633CA89EE22513FC87C257CFAF9CAF5B0 +:106D20001D9FCBF94CB7537B6812974BE47F3BFB1D +:106D3000CDF898B8EFB0B7D192ED8F5FC6776251BA +:106D400076413FA65CCEAF6A607C8473D4A6F0F82F +:106D5000F5ACADE1F9B1CF84E7737687E7F33AC2DA +:106D6000F3AE5775FDD1230ADCFEC7FBF668FF635F +:106D70008AF6BF66E1F63FE6D1FEC714ED7F2C47E9 +:106D8000FB1FF368FF631EED7FCC4B7CA31F00F35A +:106D9000E807C0FABB73B99CDBC7FCD9AA31182736 +:106DA0007A85D1C0F7C53C73581CF3BE8AE103DE77 +:106DB0002393F7BB06882BA57B62F23EAEFE9E585E +:106DC000FFFBBEBA7B624867D88F3BC1BB2017E090 +:106DD000FB48E95C950C70EC4BF7672F25791F6138 +:106DE000C3B8F9AE951FAF4273696882B72277289E +:106DF0009E77F56DE7F7B603C46FBA56686F5D25E9 +:106E0000F512F48F0196919EE5BDDDEF7DB7F77B1E +:106E1000DFEB0DA717A9D73D69EA4B46BE79F269AA +:106E20006B0BC27952F835D95CAB2EEE81DB4D4B42 +:106E30001F54E89DF155B971FC7CE92860E73BE8F7 +:106E400074C1F9F1A46FF7E75B1403DD23F0BA49CD +:106E50001E49BD2C5501BD0CF920CC1FE5F5E80DF0 +:106E60008630F8C7F823C3E82E7B479CEE5ECBB094 +:106E7000B0F6E3F6A6EBEEB58C0DBF373167C52152 +:106E800094D3B35BC687B52BF75CA1C39B8053E853 +:106E9000A7E5A817A2BCB9D74A74B5EC1D23E933FE +:106EA000155809FCB102FB8275ACD8CAE3B159434D +:106EB000B8DCAD50990FDF415B20E491A4B70A071D +:106EC00073C7C2F79FE5B76EC7F7682B7FF5BB4264 +:106ED00007DEFF538A12D159E1CBF2B6237DA59A82 +:106EE000DC33E83C745766EC0AD42F8FBE46719DA4 +:106EF000924E524D8E485CCFCDAD5CCF47BF99319D +:106F00002EB8DE9B5B87448EB405E71512D7427A14 +:106F1000F1398C6B81A28A22C5671E17847FA990E4 +:106F20001F12DE0F851DC09A793F7789FA9A82D7A2 +:106F30009F8883A5EB311CFE6A35C0773ABF7D146C +:106F4000C6EB546DDC9C700BE0A3DDE2FD15CE6357 +:106F5000E9B192688CBFFBF21913BD93FB97B6A7FA +:106F60009EC078E9D5AD4F99D12F50A5FACD141F09 +:106F7000FAF46633C64B5FBD6333952FDA5146761C +:106F8000E362B684ECC64FE43B2362FE15C5CA2615 +:106F900007C09D97C7F96A45243F8F9C6A9CF45AA5 +:106FA0003CCADF1D0AC50BDF38A7C83414F5F467E7 +:106FB00062E9DED549C15FF4747FF64D23F7EFCE69 +:106FC000E1EB3CD83B56B3CF3B89CEE79CCF267B49 +:106FD000EAC6C0186EBFE684DBAF1566ED2DE4F39C +:106FE000ECDF8CF47B2FFD7E059789F4E45AE05F9B +:106FF00078CFD233C9184687F553A2C2E8742E0B56 +:10700000A17F18FA260C8209C9CF999E11D6FEE6F7 +:1070100039D93ABA2E08D6133FB83CECBE662D9645 +:10702000D0BD96E20BCAF9BDCF6BC3BEAF65B3C28C +:10703000EE0302BD4D1B8676CB6E673EDACD15E2C0 +:107040003D4074CC25E079F05E5E0E1309DB5F698C +:1070500025AE3F703968E2BF2D21CE25E6E2BF3371 +:107060002EC43B6391FDEF20C418B91F21ECFD0332 +:1070700071AE897093DE2BFC4BB559DCBF54EBEB42 +:1070800034E3BB2180777508C675B62AB41ED0DEFE +:107090003AA480E79753DC76785C19F687F1997506 +:1070A000478D65B84FF4F540775CFFDDC7E365EBCE +:1070B000D03F44F7DC74719EE82F427F17FA8B4271 +:1070C000D66F499E46F458B563D711C4E36C0FA739 +:1070D000D39AF699A6B29C0BE90AE89BDEF95EC446 +:1070E00080BEF05C08F6B15F1B7CFEF8660CDA230C +:1070F000120F756E4E87C3900EF32EA4BFC5ACD38E +:107100008CF74316EF565CF85E35B647BC0C43BAB5 +:10711000D4E185F0A8C387C4533FDE74F57ABC2C54 +:10712000F232E2A38BF62A7E3CB795F8D3CF6730D4 +:10713000FCE9D7590FBF3CF76197EAFC4B6F6690AB +:107140007FA9CE23F023E9C2C3E97ED679EE2FB919 +:1071500009DFB31D1FA49339D3C3F7E78DE713A845 +:10716000FE9FA51B7C0F19F5817F965EE47C247F32 +:10717000467F22D18988BBD6EF1BBD3FF2477922DB +:107180001E78229B1816673DC8BB21FA386B29CFA1 +:10719000F5F2A4EC575C9E48BEEA1572C2BBD294CD +:1071A000C042E5902C17FEB9A5F766D1FB28A92BA4 +:1071B0008650BBB20807DD17285BC1E3B7CBA09DA3 +:1071C00016A257AC6ACE4845F9F0C1DAD14FF8F0B3 +:1071D0003DA97BE2132E85F53EB9D2146FD582ED21 +:1071E0003E58393515E34C4EAEB3CCA5F7927F62CD +:1071F000A5DFFDACDD93C8DFCF35DA1230BEF3B3C7 +:10720000E787D0FB4D5BF2B85CA859F962345E4F5A +:10721000A85EC9E5723AC8E33C3AAFDEBC9D1CDE0D +:107220008ECD792817DAF18C01CA3FC1BE0A483EDB +:1072300091BCFF24C27113F6FBC9D3267A6F0BEA07 +:10724000DD78CE749712F8E82A7A8F4749C0770C18 +:107250007ADE31D27DD04AE3A13CECB7A6716F2A29 +:107260005E91AF2800390AEBFCB9858F5BBDF2A9AE +:10727000543AB45AB3997E4721C41FFC621EDA9572 +:10728000E80F86BC7745660C7F8777607FB0C4CBFC +:1072900075D9DC0EDA2EE43AEAF198A21E8FF1409D +:1072A000A8C7631EF5784C518FC7F2FA0DE1FADDDD +:1072B00053E2BC56FA85D38C9FD3EF15F98A59D681 +:1072C0001292C3B62CBC37B74C8974A11EB94CE1DD +:1072D000FB7CD99FECFCF73A3AAFE1F257D083FE42 +:1072E0009DDAC97DA08385D0ED55E7AD2CF49E7461 +:1072F000118B0DCB975893C3DA4F7538C3EAAF4E55 +:107300001A13567F8D961F96BF2EEBB2B0F6D7BBE1 +:107310008AC2F2375C7A4D58FB99EE9961F9D9A58A +:10732000F3C2DADFE8290BABBF796E6558FD3CEF9D +:107330009D61F95B2BEE096BFF83252BC2EAE5BB50 +:10734000BD1D687F59F03D242BA5F21DDFBF1A1823 +:10735000FD4ED4A412711FDBC2E5D1B26399B6B061 +:107360007B51425FBAD1E5FE1BD2D708F1FED508AA +:10737000F18E957D9C46F5292CA088DFE54C467A58 +:10738000D2B7D3D74F8A3A7C4E83B5BC6BDCC69B51 +:1073900055E04B932E393C3E03F21DE3BA78FE8A4A +:1073A000C32FE04FCCBCFA5CC65C15F8CCA4718747 +:1073B000CF617DA9EB2FBC7E3623D5A4F3B9553719 +:1073C000639CCDA4ABD25B5CDC5FC2DF7F41C74571 +:1073D00061C83D19AB2D80E7F5725E8817BCAF8F91 +:1073E00078C13400F48CE961A0674C5F057A2E0700 +:1073F0003E7604E819D3A3609762F9BF815D8AE9FC +:107400009B609762FA6BB04731ED047B14D3DF3693 +:10741000CEA5F4ED462F7DF7FBC60A4A8F372EA185 +:10742000F2F71A1B28FD63A38FCA478F137E91BD05 +:10743000E1BFC725CF37E579263BE8B2E23931EB2A +:107440005263F1F7EEE439E5E07E00957D14A29FEA +:10745000C53077C138F29F84FF5EC8EC91DE4BC621 +:10746000C1F8EF3867678EC7773CBFF1AEC463DD04 +:1074700077C43B07FA7EEDE3383DE4B8DC93B0BF58 +:10748000C9567EFF7BB295DFEF9EAC7636213D3547 +:107490007DCD348C3B3A24EE7337AD55E93EB7725F +:1074A0009E51FECA7846F9A6AFBBE83EF864872B2A +:1074B00089E494C8CB7BC1F41712B734E57C670923 +:1074C000EA4F57DACC9A2534AE82F1B80979BEBFBB +:1074D000C9C4CFFD0FD93F2AC1FBA5000FC3F1647A +:1074E0007CC0D6AF59C090178CB3986CEDA2F82D24 +:1074F00019F7A09CEF32A2DE24E3AB245C7615BE24 +:107500002B08C64D49B813216F2EA07AB711D24D62 +:1075100045AE0DF8DEE8261817F97A7F1C9785F935 +:10752000D0FF9A28E209A03DC13DE5BC97E247AEF5 +:1075300014F12323CC2040793B3A67B6A3BD86DF04 +:107540000FE97A05E793F277E817DA3DAEF0B8076E +:10755000193F82EDA378FB8031647F8EFC1BC01D38 +:107560008DBF33F11B27FA0753FE85BF3FC9DC6E81 +:10757000C2EF6CC1579926F2425EB3F862FE7B8B74 +:10758000A2FECD91DE7B71DD3D16C79FA2683F67ED +:107590008C40BD64A6D0E3BF835EEEFBEFA09709ED +:1075A0002AC7AB05CA7DDAE07423E942AEB79E8EE6 +:1075B000E4BA87C4DBD0BA4BFAD1D3D960F4D44F44 +:1075C00047917C1E297F635A93F3FF0EFDDCD1C7E0 +:1075D000A6C5409375995E3BF291B2F3DA11CC9750 +:1075E000ABF966241959BF11EB875E58EFFDA2CFA6 +:1075F0001413426793850C3B34487FB29D7C6744EB +:10760000F6DF3548FB37849EF086907BCBA6727AF6 +:107610002A1D237F07CC6DCB2F0C896FCD594CF6DB +:1076200001B371FD5A83FF233F9AD07BAF3AAF86F7 +:10763000E9DDD70A7DBC94717E5DAA3BDFBF36E7EA +:107640006AD2CBAFD5E9E57A3DFBE37142CF763222 +:10765000E73FF92EEF19CED7C3F5388C9743BACF51 +:10766000D08CF43E907C8757BEEF3C45ECE729F880 +:10767000BE7334FE5EAA5745A17235F3517A0DF3FD +:10768000537A1D0B909E703D081ECCDF80215290D6 +:107690007F256AC66D78E7B1647CC9487A2725F8EA +:1076A000AEA4E29A48EF4AFE19DFF7F80F1E8730C2 +:1076B0006D008000000000001F8B0800000000002B +:1076C000000BDD5B7B7C54F5953FF7CECCCD4C3287 +:1076D000934C02E44120993C800013323379884076 +:1076E000ED00098D1A3160058231DC90803C028604 +:1076F000D4D6A8B899982011B1C6362A5285098ADD +:107700006D2DB64150698DDB290FA5AD56947617C6 +:10771000C58D837415AA9618D6155D5BF79CF3BBCF +:1077200037337720B5DDCF67F78F0D9F7C7EF9DD8E +:10773000FB7B9CF7F9FECEFDF19DA163039209E06E +:1077400060B92BCDE9C6D69A97A4629B6906BF257E +:1077500005E04BFAF93AC0AFDBD2217F02C0A13677 +:10776000E0F6489B15F22D002FB739B97F55413B04 +:10777000D0BC792E09CC05C03F5F4264FED5CEB99E +:10778000601E15E9C7B6574FFBF938D50EF0DBE49C +:1077900049E59048ED65E5308DDA3459B4710AB5A4 +:1077A00023CD7714B900C6E03AEECDC74CD368BFFD +:1077B00079BC1FC05619CA00CA9DF8270E29FF4878 +:1077C000F1D3FA15A09A01F9FE0604B8BD1282DCC5 +:1077D0005E0D2133E4015C0361EE5F0B60A1FEA14D +:1077E00084F9B537E3FCB9C573F3E9799375304B88 +:1077F0009171BE557514E1BEEB4DEA3B4E1CF71D71 +:107800004D9E8E22DCAF1460C87A3C313D17605D1E +:1078100042E23428A2362B487CB43CFBEA34133EC7 +:10782000BFA27526D3F9F5D6CBB96DB20A39BDDF43 +:10783000060192EF596221037F3BFDCCC72D1A1F31 +:10784000609EC3FD6F5B85ACAF8D53677970BF26BB +:10785000B93F7106BE7FFFD1E33F0D380072257539 +:10786000B607E96B32B9B67A46E3C0DF9A3CBB692A +:10787000FE1787B2163A686650A92E045883FAEEAE +:1078800043FDC113D7F17EBA5C7BA7482CD726AB4A +:107890002ECF00F79F9AE0771495F2D612A422FF1C +:1078A00020E81A170760F5013CAA8876BDD51E228C +:1078B0007DC001CB8761DD2E90EFB27808D87C3C8B +:1078C0003E604D89E80FE7711FD47D1BA004E0F1F5 +:1078D000F576CF961C946B867F11F15161B20764E7 +:1078E0007C3E34CE118CC3E707E351AE4928C7D0A4 +:1078F000D4241A5F79D4044124F9E5F8C45D24EF57 +:1079000083F1286FD4F75553D47A9AFFB2EBE0B8DD +:1079100010CE1B3A7ADE04288F43F9128CC23E98AF +:107920006A93C8FE46B2AFD6B767870E47D9F56AE5 +:107930008F63F47B53F18F6930ED4B133F96490E03 +:107940002D9A7E904E4F88E8FCBDC98322812B6022 +:10795000E2C3B3B03FF7A80582D81FA219F43E5D79 +:107960000A0690DE8AA3A6537148E7A76DFED06190 +:107970000BBD1C64FA8E3825D88EF4C5A5CBE0B2B9 +:1079800046F6B7B9E2C115454F42418AA1EFF08CE6 +:10799000358C4F9A9E6B789FEC9F62783FAAD26796 +:1079A000E88FA99E61189FB6648EA19FA15E65189D +:1079B0009FB96AA1A13FBE79A9617C76EB72C3FB36 +:1079C0009CC01AC3FB0E9BD02304FCC70A508E95A3 +:1079D000E215E475B518C655DA5756913E2774DF9F +:1079E0006E580F5C9677C9BE02F88FECEB13E897E0 +:1079F00000DB8A74F15C1F6722BBC07DE63A671F1B +:107A0000265565C2D68FC93EE73A715C343FF6CA47 +:107A1000B3B44F269823F3732EB683A7FE513B5081 +:107A2000A75CDA0E9A2018C8B9D80E8E509CC2B83E +:107A300032699B51FF938346FD4FFD9151FF857D38 +:107A400046FD171D30EADF1B32EABFF8A851FFA53B +:107A5000C78CFABFECC49CBF4B5F97878D76A1EBB8 +:107A60006BE6998597D4D712FC47FA4217F384D076 +:107A7000DECB514E2118596F117D09FDFD4FF57672 +:107A80002A466F9FC0D6526F2EC56F8CEBA68BFD1A +:107A90005FD787DDE6FF7C1AC691CF29A661FCFB84 +:107AA000549343B616875AADA2BD55A3F7539B888E +:107AB0003FD95A1C0ACC11FA0E0C38821DE8F79FE8 +:107AC000CA6107E59301B95BA2F67C9AFA09C5F190 +:107AD00065EE66092D09C6ACBD9BEDF8DCF8C181E9 +:107AE0003B68DE6D0E11BFDD629DBA8EB4E01629D3 +:107AF00042675D2634531CFFAB4762FAC0132E5D0C +:107B000080F15DF2CA1C5F1D1EA70218E7EADDE0E6 +:107B10000FD21A66C8AA2B643B1576B8D1CC713542 +:107B2000CFA62A5E9CDFF1A6D54A7C0C812B89F07A +:107B3000012A2EAB1AF3C6BB1658D27789789967FB +:107B40009B9DE0C57D565BAF7EE48F982F669A7053 +:107B50005FD4EBE06A39B88BE2AC39649B84FB6C90 +:107B6000EF49F16CC1EECC6C10EFD781F61E1D18F9 +:107B7000FBDB374E64BE669A24F17E03BEC73FCF5F +:107B8000E2BECFD8898EA06D8183FC020C7863BBE6 +:107B9000192A89AEED413930A188FCC40AE628FBD8 +:107BA000D88E26C979CE1CB42D2C24BF711ADE17AD +:107BB000F6A51BD62B3AE032BCF7860A0CEF8B8F6A +:107BC0007A0CFD30C9C54DFE33DD306F3CFECA3E38 +:107BD000F223BFE179F6DA96F98407F0BD5F4E2112 +:107BE000FFA934AC977D2E5E96F0FD55649CA5E40C +:107BF00047D586F78C05C80E6E4D6579216E0BC48E +:107C0000E13E8F5930BFA6081CA760ABA060699CFD +:107C1000D2650E76A09CC7210D4929822E138DC3F3 +:107C2000D6C6E3041DF89EF3F0785C8FE8C6F77EB5 +:107C3000B3781F88C77EDD5417D36331232EC1F874 +:107C4000B44309D74094DFD4C5A11DDA599F7ED231 +:107C5000DF8EDB537BA3ED7481668F75E483D8EEF2 +:107C6000B6C2B26A945BC79D76C821EC640E679079 +:107C70007E967805FEB863927F11D963DD5427EFB5 +:107C8000BB43197C93F2665D91D8A75696972DA0B9 +:107C9000F912DA873BB24F8357F84179B158A72ED2 +:107CA00049D0037728C1DD39113ED215E824BC82C2 +:107CB000FB4E26FBBE716BDF7D93F055ADD26D019F +:107CC0008EEB410BE1A4AA39880BBD884BA6F81FA7 +:107CD000B6234EDAD18A729D81F869EFF34B02F92F +:107CE000841B1147213DD9F898F45045F2C5F60F91 +:107CF0003E13EFB3D92BF81DF6B7D1C0FE867980BD +:107D0000E91A6A55380FE87A8CD25380F4F224E2EB +:107D10006F33C6A11F21FEA6F629C4DF66C4DF7B30 +:107D2000109F53FFA76D2E6EFBDA0AF8F9336D1E14 +:107D3000EEEF6F9BCEFDE7DAFCDC3FD056C9ED2FAE +:107D4000DAAAF93968792B5F98D6B0DDE8F2D1ED7F +:107D500041974FD55D425FAE0D96EA5DC84A950CDE +:107D600095922F22F7333E99E7EDF38A3849E328BD +:107D7000DEE8E32A4CEEA453F6C8383DBE8C84BF3F +:107D8000FEB7F81E96B33962EFB6283BD7E580EF11 +:107D900047F017A35FF14F9926C75C312FD117D158 +:107DA0005F941FB19F0DFB11A0FFE445E41BCC972E +:107DB0002B495E9B1D42CEBA1CDEF50A79DDA7D9A0 +:107DC00035E65FBB17F5A66A5B5798BEA8273B5AF6 +:107DD000E1505C713844D5F2EF15FEEA8736E3F3E3 +:107DE000E53D16E8C5E7F5B86D6B8A6837227DF585 +:107DF00001631EC5FCCEF8F926A84E0A49949F3DA2 +:107E0000777B908E862EE3B81520D6B9C93E8FF3C6 +:107E1000EE8A98BC7B13E5EB446ACD917997C8C78D +:107E2000C7BD5A3E2E8222C651AD563EDFACB2EAE5 +:107E30007C1971D450302F89F218EA87FD0BDB5082 +:107E40005C4A244FBBB6E122C511B9A13CE30B2823 +:107E50007F769A3D135C17DBD7B03C419CB35AAC9C +:107E6000A0E137F76B24B70FF15C1147B176899524 +:107E7000FD44D5DE7F18387F8ADFEFB779A8FF9100 +:107E8000F7D8343A5FA8B43F9D9754E37A431BADCB +:107E9000E0243FDFEF08028EFB93D4FB6412EA7DFF +:107EA0006DFBE3D39CB9117AD4B0983F923FE416AE +:107EB000A8FF45F1506DB72C227D7F60979D265C11 +:107EC000EF1EFBC154BF9DCE7DFEBF78991FE3F925 +:107ED000AE0AF3A329EA5C7FF554111763F91A8EF1 +:107EE0004FB3A420D9D150C0C47978A85262BA3116 +:107EF000BEF949DE7F005C1DE9AF929C7C4E263FB7 +:107F00008538E1A7D4929FC224E1A7D4273FA59644 +:107F1000FC949E5F77C1CB7AFAE68599CCAFDA758F +:107F200039F7276607E4788AD337489EDDD82C7E58 +:107F30000236C5E3D470FBE2523AA78DF7097D4DB6 +:107F4000D4F2CC45FAD4E2CA533E63BC6D6997388B +:107F5000DEB648226FB6DC2771BCD5FBE7BBB57E29 +:107F600085E87F6B93E8872DF62E2949F047F50EBB +:107F7000E28F5AE28FCEE97BB4FA08F1472DF14740 +:107F8000CF290E519FE210F5290E519FE210B51432 +:107F900087E8F972A8CEF2A288BF3688B92ACABF8C +:107FA000BE7EC10AE5517E321B920DFDB9D60CC3CF +:107FB000F80A678EE1FD37D2271BDE5FE9F21AFA75 +:107FC00057175C6E187F8D67B6A10FD3AF8CF47313 +:107FD000C93D1618FAD7217E2F8FF2EBEBABEB0DD4 +:107FE000EB2F5EB2DAB89EBAC130FF066835CCCF4F +:107FF0006B6E378C5FD62A416354BF1106D9CE1AF7 +:10800000B68D623B792EBF7AA98FF0F2E2C117C319 +:10801000747E32F5AF263B6D5917EF117AEEAE1430 +:108020007A9781F4B8D3E24AA3FECE574D20F4EC00 +:1080300049735EC27EFA51CFE5A8977F463D531B38 +:10804000423D537B10F54CED61D47339EAEF25D4F2 +:1080500033B54751CFF4FC37A8676A5F413D53FB06 +:108060003BD433B5C750CFD4BED1B684DBDFB7A97C +:108070003CEF5FDA56717BA2AD999FBFD5D6CAEDB2 +:10808000DB6D017E3E8074345A227411DECD379C44 +:1080900003D10E0DE740A7A14F78367A3CE1D9E82D +:1080A000F78467A3DF139E8DEE138E8D1E4FF83578 +:1080B000BA1FF4BAD8CF08B746CF239C1ADD2FECED +:1080C0000E1CA15AD6FC47070E533B31A9FE1909D5 +:1080D00043C30F9EB9B2C68C386A6242BD2FD983A2 +:1080E0007950BAB6A61C43807AA198E3C1341864CB +:1080F0007CA9D2610FF5A686C439A0F0B30C7EFF2F +:10810000F814A716B781E353E16127E3E0C7A70896 +:10811000BAF4F918654CD4EAE323FD4B8F8BDD5F8D +:108120001FC7F1318A8E6CED7C92FDB28BF3FF9309 +:10813000B2B4AC1AEDE949C4470B31DE4EDDE3972A +:108140006DF87EC97EA7D7E422229B7D746E39E646 +:1081500013F8571F3FD10C472DBE081F3FBC2C679B +:1081600017D5BD9ED7E25C84CFB099E239C6097FAE +:1081700010E77DED3F42A6241CAF061694D0FA55B9 +:108180008AC00BB8CF0C3AF74D0D48FE5D51F6FD95 +:108190002B9F88F753F780924EFBECAC13F3E287EA +:1081A000E77D7E169FD74FCFF16CC1E7B3F680BF56 +:1081B00017E7FF468BA7B306FB0E525CAEEF14FB2E +:1081C000E9EBD63F9AA5B8E85C09CDB7A797908CA4 +:1081D00024A0B88D7C1D26BE74F9E9E327A2CB50FC +:1081E0007D99EB86A8CAAE824035C9B94C16E31416 +:1081F000AB9FF1D3FA030B80E2FDD74A922B46D313 +:10820000BAFDE021B87A4DC9EB7305DFB34B855C4D +:10821000516C65BC2EE7AF4901299480B8637EA0FC +:10822000FD2E4A6FD704361C1943E39F004F8E8BF7 +:10823000530F5CE18BD037C5BF57C6F487C7EA63DD +:10824000B24D22BDC3A15151768411E09BA477AFFA +:10825000C702A4970566A785E2466C7ED7F1C2796E +:10826000C20B4C95F65EAB07B5DC79E1D4668A4764 +:10827000CF0ABCA0E39C7AA7E041DD26715C3BDF1E +:1082800089C70E92F3B3714120BC8678C285F6F897 +:1082900091FC4AEA629CB72E2F9825A3BCD68CEDA0 +:1082A0009D9662623CF0850F19FD207068FE125C9D +:1082B000E754E7BE5492DBF9CE6715AA23201D765A +:1082C0006F19C54F4147E3C65555C4647DA1C077BA +:1082D000EF629CF14F22FA67258589AF6E81F3F436 +:1082E000FA4CFDABA352096FC5E2BFB51ABE5BDD08 +:1082F00069A957102FAE8EC17F6B3756BE4FFBACAE +:10830000FD0AFC37AA18F15F02FEE1010FE3BFAFDF +:10831000A8C7EA380F71CED86252706C1D5B3BCF94 +:108320007CCB26F8AD7FF5D0F58C5F9A27C8845FAB +:1083300074DC53DB2E700DEC85E00489FA73D95F91 +:108340006B9FF57B249CF79A8667165EC864BD1CFC +:10835000D7F0CBF517A6727CA80ADBF8F9A20B19A7 +:10836000DC2EBE30999F2FB48B3811FE3904EFA25A +:10837000F35D204EE0A97E60FC146BAF5E705690FA +:10838000FD4FF14B8708365E437808D75B42F868AB +:1083900014D97FFDA63164FF4160FC1A6BFF8B6B23 +:1083A000732A888FC99512100ED4ED5F0DFC8AEDEB +:1083B000763EDA2D3D5FA2BE6E26BFC7B8E0A47937 +:1083C000AA765ED5ED3CD62FEA12B473BC5DD4918B +:1083D00086CFF744E40C22FE67357E379FAB01C69B +:1083E0000A8307D4B3C32DDEABC53FABE9CCE7F3BB +:1083F0005020C917396F51DF1675BEA2BE23AAEEF1 +:1084000040506356D4B99770BE4DCC83545FE47C22 +:1084100046A5F20B51E7E45C8D7EFD1C47EB9BC546 +:10842000BC50AA2FBA7E20EA155437A0F85B617AB7 +:10843000BB228DF160B24FF8ADB09F7735BF759616 +:10844000CE595982F35AEE9990067FC32E1B506F76 +:10845000E4A77549E16F4B98CFEE2C067FF9748045 +:108460001AD0E5052140BB5FAAF57FB8EFB537BB51 +:10847000DC2C67EEDFB6EFE735015CBF6BE35D3107 +:10848000F1B0DA4F6E91E0F6F377B6583EF47AC564 +:108490000F8BC5F8D8BA45835BE40BD60FF2F9EE23 +:1084A0003DEFFF24BA1EA3D7F30006F93CF3D0C278 +:1084B00074EF162DAE723D6ECD38AEDF6C2FD6F256 +:1084C00016FA856B92C0C1D4120E76C5091C4C7D7C +:1084D000C2C1D4120EA6E78483A94F3898FA8483C8 +:1084E000A94F38985AC2C1F4FC67B9D53DC29FBBA9 +:1084F000AD740E8682C14776E3FE756D0A103DFAB3 +:108500007979E79A78E663E7ED0AC747FDDC5CAB6B +:108510001C3B62CD89C8E164EBF72C14FF50CFCC33 +:1085200047ED1A89F3B4B3B4BAB7B894E4E9512863 +:10853000CEA8EEA0E442B98E756AF59BBC41EFB7B8 +:10854000B15D5922D6A9CA15F931DB048701ED2A9C +:1085500039DDFF239AEF2C557F426D437FCE4B9937 +:108560002ECA57C90AEB274DD461519EFC9D4D97E9 +:10857000F32F8B453E6FA19C82BFE7B47A21EAA915 +:108580002B17E9AB19ED64B9A3DD76D2F9EA97C5EB +:1085900022EFEA75B8487DC2CCF522A555E13A3202 +:1085A000D515145F54DD0E449D4297975E6F88C8C1 +:1085B000C9F912C96FD0A1B808C7D4DB27CE23FBF5 +:1085C000AFEF965228EE5598AA5E621CFD404E2EE3 +:1085D000E1E88F35BAF573E20A2DDFB53C98A76460 +:1085E000D0B87B10CD61BF2AC5C5EB0CDE2739772B +:1085F000B948EE382EAA2ED4B8ED72F68FC620B642 +:10860000C523FBD1DB0FBC30E672B2BF905F217A8D +:108610001B9D1826A2EB7ADD12DB736CFF54B1A808 +:10862000B3D5227C2779DD784B8EB29CEA8308375C +:108630005ADCC487CB8043705C88C6A17E853C1E13 +:1086400040BA73C47EBEA8F597D3FA51FBEBF6F09F +:1086500041B183FD617977B222519E743A99CE8BF4 +:10866000E4A0C9BF2114B478881E33EE8BFDA5CEDB +:10867000A085F659DEE9E5BABCBA55ECA376252B00 +:108680008584A7CC4E653CF66BE3851F227D8C3B31 +:108690001B512E2954774B419C69BF583EF51ABD9A +:1086A0008D48D70AC3F3072C64E7355ADC5FDE39FF +:1086B0005B9169BE59F09B5122F2A2AAC9F3DF3740 +:1086C000D8B650FDBF36A5BBE236F29F95C9C91D8D +:1086D000C84F4289880319E41F6322F2A8717633D8 +:1086E0003FC3F27C10F9C7255738AB797DB48700BA +:1086F000F94F638F58BFB1A75E71939F9955651C61 +:10870000EF2FE419B5EFA60CDE5772D2BEE054F994 +:10871000FBC37B0F2ECE623E7A1EB600F3F13A9871 +:1087200070BFC6AD12DBA56E0F75C5C20F75FEDD3D +:108730002576D6BF5BA37FB8BEADE525DDBF1AB7F2 +:10874000D6831FF76D48078F2445FC4AF733DDBFFA +:1087500062EB78355A1DCFB2F5D46A8A3B7A1CC0D9 +:10876000FCD8FCCC25F2C6CA12E1DF4B357DA07CDB +:1087700038BEE8EFAF2F117E574BF28D9A4FEBD1F9 +:10878000BAB3F5F773421336B823E3F57D6B53C4E0 +:108790003CD20FD9C96C6D3F1ADFC2E365835F37E6 +:1087A0000CE3D83D9B52291FEE95B8DED672DFA1AF +:1087B000F1B7929F3F9DE0A168F541D3EEF5199482 +:1087C0006CCD41D6874ED70AC42BE4DF2BB53CD8FD +:1087D00018BAB49FF74F5517968C898A0BDF7F7AAA +:1087E00022C54DE43F44F1E2EDA75FF8C30C5724E6 +:1087F0007FE9FC2CEFEAE53879E3D6649F49C4C9E8 +:108800002E8A932B35BE1B3A85DE00F546784ED76F +:108810006F7DA7C4F9A2A1B52C483868181FC4C43D +:10882000CD587DEA7AD6F5A9EB01F313D779753CDB +:10883000ADF371B346478B9637966A76D8D8DDBBD1 +:108840002995EAAF5DDE324ACB35C3CF1FA8887EBB +:108850003EAC87E1EFC7EEBBE93C35D427F430B43A +:10886000D522EA707B44FDF08396E77FB7C8457553 +:10887000C4E0FA0C93510F841F576A38F226D4C310 +:10888000A5EA89A8878E683DDCB453D3436EDF9F89 +:108890007FC1DFDDE23CBB70DF06FC9D8E72FA60BB +:1088A000CFF72D99F8FC86155232D1FBBD921CC131 +:1088B000675FAF2597CE07CD5E27D581BFA7C5855A +:1088C00058BBC6D60F51F2A5FC20A544708C3E9E25 +:1088D000E2D35EA4E3960DB644AA43373427A73803 +:1088E000F11CF18266AF7ABCD1E93EBDA1FEBB743A +:1088F000CE386D1376DE84F3E93BD0E9D99EAC1611 +:108900007704E7C1E8BEBDFCBDEC66B78FCE71B899 +:10891000FF51FA1EB157D35B7E7E98BFD3EA7853DE +:10892000C17845DF8576C982FF5C93687F10DF37A9 +:10893000B9F96FE0C0FCA6F0C7448F8E73757CFB5D +:10894000A626171DC7EAB874A438B4A56039F891F3 +:108950005E0BDAB329E7E238A4AF171B8F747E33BE +:1089600013FA7E4CF69279F3141FE104251EBA889F +:108970009FDF69713E96DFD33942AE23D1AFD33D3D +:108980002C0F34CAE929113E747A10E3FA65C26DDE +:108990007714326E3CDDEEC922798DC4E7E91C956F +:1089A000FD7630033CBB2EC1672C7F50D0CD7E536B +:1089B00097E6E23A85EE378DC3DF0BDC4961E4636D +:1089C000A85B7C27382D61DE21FE36D8F83E99CE93 +:1089D000E73F5AAFFEA42445F0076107E1BADA7811 +:1089E0002D1E84447E1E68CD637EF5E77A7E1E7060 +:1089F000861D2951F1F88FCD22BF35E13AE44FD0E1 +:108A00009A07F45D7FA0FBB44366BB15F4E9F36EEF +:108A1000B188F5C1A104774B846B1628F5F8FCC624 +:108A2000D6E31689F063A9D067765E9F3F6D34E385 +:108A30003AC61D1D0E4F3AEDD791EC498FC6070976 +:108A4000F6455CAF399D13CAA7EF11835E1BCB7D42 +:108A5000C0BE681EE5DB816DC97483006E913C0366 +:108A6000AD74EEDC14C775F82A19BA24B693909247 +:108A700049F9BD5DE2F8A03FFF865BFD2E9D93B2F4 +:108A80004D7BFFF32D5A77538287E8802F705F8CE0 +:108A900097749D8CFCFCBBB426C931A67E125B2F5B +:108AA000C9565C5C4F19FCB509768978F8AFD45F7C +:108AB000F16B8BE17B8CFE9D6845EF755CA768D4FC +:108AC000BEFFACA0BA49317FF707C0107877CFDC82 +:108AD00054B28BC6072A1E0A605EC992A09AE24D64 +:108AE00096C53F9FE2C299DE49C9ED51E7A293C105 +:108AF00038FE0E77A6F7F957CB70DF3F1F18E3E576 +:108B0000381D90399F74B946B3BE0B4B059ED0CF2C +:108B10006BE65BEA03E08AD4AF1A7B376701EED7D6 +:108B2000B8AE6322B5677A6D4B28FE973B17942742 +:108B3000E3BA2B1F4DE6FAE0C926518F58F3FA84A9 +:108B40005DE4EFB335BD36FDF5D00EBA5FB882CE29 +:108B50002EB8EF277D097C6FACA9ED40165DB1E81A +:108B60008B536795E2BE6BE5FE45849BD76CEFCDDA +:108B7000021EEFBA647D5B6FDFA3731CDAF7BA7F66 +:108B80003AC1EB7C24BF32BF06E737ADDB9748EB39 +:108B9000AC7DF0789953E6FA5225AD4FDFAB9C24BB +:108BA000806DBDD3282FE74AFEAB4A2F517F89DD68 +:108BB000E71AEDFBFBB5A542EF5529D58B6A4A585C +:108BC000AF6C1F23D1B7EA8064F88E77633049A178 +:108BD000BB2F6A0814FA5EAC3A8171EF1913B4F234 +:108BE000F72D0DE7E8CF97978AB87E26A93B8BFC37 +:108BF00060F5930F6791DD9F75887EED938B7F43C2 +:108C0000F14F7D224EE06F3328FC9D3320F033ACD2 +:108C10004A31DC876C2A4D60FA576F2B36E4532AB1 +:108C2000CCD03E67CDE27E49B6E9632FE1B193E651 +:108C3000D00AB29393CD364F80F529E2E3C96ED3C3 +:108C40003CBE07748B0484534E76EF73E4DB23B889 +:108C5000CE51D217A2F8B96E7FB24F5C2B13F588B4 +:108C6000F54E3DBED9E751DC407CE6243F6832BB7F +:108C70001EBE01FB4D472D7443734479AED170D9AC +:108C8000707FFF5E857074D31E8147D6EEF99542E2 +:108C9000EBAE3FA0E1110DE7ACD370CEFAFD422E52 +:108CA000EBF69F521AA2CF15052977672232BCBF77 +:108CB000F444CD8338AE9EF43603ED72DF4B4BDBCC +:108CC0003139F4156BF56BF320E3C52D056FF039E1 +:108CD000795DA7B65EC11B77E732BF5E8B14650F67 +:108CE000DDA5169EA7CF4779F03CFDDED548F7AD50 +:108CF000F26CEA4EB2CBD8FB5663D67EA7888B4483 +:108D00005F7D8FE909B2F77E2DCF85D6C577110E2D +:108D1000F1AFB79BA9ED5867675CE2DFF0868D7015 +:108D200061FF9FE36529914C65F0909CC3F7B87E85 +:108D30004AFBA74180EF758D833E89FCF1DC8BEF08 +:108D40001713FD749F0B90254BFB89A5F4BDE3B968 +:108D5000524D3EEE7031F9D19883224F3C66812E00 +:108D6000CABF60AE06BA0F13D2BE53063E93F9FED9 +:108D70004ABF147A9CD6AF8EB377D1BD998FB478A1 +:108D8000B123BFFA45DABF3AD754E8A57DB5EF97CE +:108D9000E3B5F3973236DD4E72D2EFF1497E3FB440 +:108DA000E23EB274A481E2CFBD8356A073FFF8B156 +:108DB000959C2F3B34B94AAED194C3E0A05B0EC45E +:108DC000211DF78295BFA72AB2CD4FE3A4FE973F9E +:108DD000A3FB4A99A68F0F25E1FBCC5B254F079299 +:108DE0005C37F41EE3E781CFF6D848FEBE74F53851 +:108DF000C977AC295C783F927CAFD37342A5F5AAC2 +:108E0000AD9E7697B0712BDAFB1CF127F4DFF65993 +:108E1000620ACE9F33187F8AE47C6EF0BDA79F2F35 +:108E2000A1D6CA75DA39FDA6501CDDC9B356F8A320 +:108E3000EF195342B19645D681EE8781FCE8662D45 +:108E4000DFE8EB8D34FF5CBA8BEF5F827B30F17E25 +:108E5000DCAFA3DFE4A47B6B73FA0F9D203EE7D069 +:108E6000FDE6449A67F970B8BE4DFB1E1B9F4CF798 +:108E700019C887BE441093DA21F4794592F13C8AEF +:108E80000943E4C132A1B7E17B952E3F44E7455D3C +:108E9000FE7A1CB879385FBA5E23B9BD85F991E8CE +:108EA0001AEA47BC7389F8ABB7C709EF208EF96C93 +:108EB000821FCA4A2376116B07B1FAD6F50AB71F8B +:108EC0003B9294C3FA2CBC1F18B73FF69AC4FAB46D +:108ED0009721FDDB2FECF2929E3B1CF37254F7FFBF +:108EE0003F3DEA71478D17F7F9478A3F6ABCB8E7FB +:108EF0007FF17DCFEAF849391C9F7C247F8C17478E +:108F0000285EA443B324EAB55F19972EA379C3F76B +:108F10002A1D32D783E8DE24DD8BEF681D1FA47382 +:108F2000CDCC6C57BB99DEDF099C5FF5FB98745D77 +:108F30000978DC54314EBF5F799B89EF5F9EB5881D +:108F4000FB9781F6498C33F907FB1D814CFEAEAAD5 +:108F5000DF63EC308BE78126E0711D74DF3229720C +:108F60008F917C9EF96E068E53A0D59D1F73C8BB52 +:108F7000681DDD1FD42471FF513D27E2675D59B2A2 +:108F8000F00773B894F0F5BD773980EC53D73F7F85 +:108F9000627045F46FD2F43FD62DF43FD62E87E8A9 +:108FA000FE34AC2AF747EB711BCEA5755FC073800A +:108FB00095E85A20EEFFF52CF067D0F7CC9E05A976 +:108FC00032E1A9E7FEFAAD77EE2479BC6A615CDB99 +:108FD000E3157CF6BC98C7786B400E3EB292E62F44 +:108FE000B2F33D5C5DAEA6F4EB1E69C4F62149FD0B +:108FF00031D9598F4366FE7B56C7737DBA2747C860 +:10900000A367422EAF83FA9BB88DF6596015F858C6 +:10901000D3CBB955E334FD897D07EF73887BB19AD3 +:10902000FCB6F79B7669F762597E91FBB08389D1D4 +:10903000DF67CE6938E49CA697E1E720EEC7621EA1 +:109040004E8CAE4B8FF47C7E9ABA99E384F6BE27A1 +:10905000D99F41B82A56FE0FB67BBB26923D386495 +:10906000279D1346D25BC26265C7EE287D517A24E4 +:109070003E133A6632DFBAFE1ED2F31CDA25DB4F0E +:109080008C3E619CB00FBD8E901D38F588C8EBE119 +:10909000C9943FD1EF0AE8BC3940F1AD2862B792DC +:1090A0005FDC57D3FD58B7573DCE8DE4CF522BC66A +:1090B000BF4BDEDFEED3F23B8413F2D8AF9F2679AD +:1090C00099644F7A1CFBF3B10CA2E7EFF0EB672831 +:1090D0007E8ED6E2CA3BE9EA73B4CE682D8E6C97D9 +:1090E000835E714F1C5669DF37F9FFDDBCA3C9757C +:1090F00019C6AF5138EE589956CFDB1813C7343D17 +:10910000D469E3DFF908FDAD28A2C765DA79AB6E53 +:1091100063DC298A87751B2DC28F5A2BFC31EB70BB +:109120003CD7D701D7C763882F7DDEB2D59F8F216B +:109130007C3DE2FCF0B864FACECBF114F9FEAD52FE +:10914000FD06F13D20871D1E94DF2B7F31F1F79046 +:1091500053A81F5712B5594117AE7352CB8FD3ADD9 +:10916000EA5B651C1FE618CE89AF78DF9F40E72CCD +:10917000F8E2D038A2E7CEB4EA7F23F9DD933FC40A +:10918000DF779641F83109D71FA8F9D378A26F5934 +:10919000EBCB1CF797E971FF2BE4152B275D7E11B4 +:1091A000BE87C6108EFEBF929B6E37FF0D3FC6C8AE +:1091B00047C0370000000000000000000000000071 +:1091C000000000400000000000000000000000401F +:1091D0000000000000000000000000280000000067 +:1091E000000000000000001000000000000000006F +:1091F000000000400000000000000000000000101F +:109200000000000000000000000000080000000056 +:10921000000000000000000000000000000000004E +:10922000000000000000000000000000000000003E +:10923000000000000000000000000000000000002E +:10924000000000000000000000000000000000001E +:10925000000000000000000000000000000000000E +:1092600000000000000000000000000000000000FE +:1092700000000000000000000000000000000000EE +:1092800000000000000000000000000000000000DE +:1092900000000000000000000000000000000000CE +:1092A00000000000000000000000000000000000BE +:1092B00000000000000000000000000000000000AE +:1092C000000000000000000000000000000000009E +:1092D000000000000000000000000000000000008E +:1092E000000000000000000000000000000000007E +:1092F000000000000000000000000000000000006E +:10930000000000000000000000000000000000005D +:10931000000000000000000000000000000000004D +:10932000000000000000000000009000001000009D +:10933000000000080000900800100000000000027B +:1093400000009000001000000000001080000000ED +:10935000000000000000000080000000000000008D +:10936000000000008000000000000000000000007D +:10937000800000000000000000000000000093B822 +:109380000001000400000001000093C00000000084 +:1093900000000002000093C8000000000000000868 +:1093A000000093CC0000000000000002000093D0F9 +:1093B00000000000000000080000972000400000AE +:1093C00000000040000093E0008000000000004822 +:1093D000000094E00040000000000008000094F04D +:1093E00000400000000000180000A000002800005D +:1093F000000000280000C0C00008000000000001BC +:109400000000C0C100080000000000010000C0C250 +:10941000000800000000000100002008001000000B +:109420000000001000002000000000000000000804 +:1094300080000000000000000000000000000000AC +:10944000000000000000000000000000000000001C +:10945000000000000000000000000000000000000C +:1094600000000000000000000000000000000000FC +:1094700000000000000000000000000000000000EC +:1094800000000000000000000000000000000000DC +:1094900000000000000000000000000000000000CC +:1094A00000000000000000000000000000000000BC +:1094B00000000000000000000000000000000000AC +:1094C000000000000000000000000000000000009C +:1094D000000000000000000000000000000000008C +:1094E000000000000000000000000000000000007C +:1094F000800000000000000000000000800000006C +:1095000000000000000000008000000000000000DB +:1095100000000000800000000000000000000000CB +:10952000800000000000000000000000800000003B +:1095300000000000000000008000000000000000AB +:10954000000000008000000000000000000000009B +:10955000800000000000000000000000800000000B +:10956000000000000000000080000000000000007B +:10957000000000008000000000000000000000006B +:1095800000000000000000000000000000000000DB +:1095900000000000000000000000000000000000CB +:1095A00000000000000000000000000000000000BB +:1095B000000000000000000000000000800000002B +:1095C000000000000000000080000000000000001B +:1095D000000000008000000000000000000000000B +:1095E00000000000000000000000000080000000FB +:1095F00000000000000000008000000000000000EB +:1096000000000000800000000000000000000000DA +:10961000000000000000000000000000000000004A +:10962000000000000000000000000000000000003A +:10963000000000000000000000000000000000002A +:10964000000000000000000000000000000000001A +:10965000000000000000000080000000000000008A +:1096600000000000000000000000000000000000FA +:1096700000001EC8000000000000000800002008D4 +:10968000001000000000001000002000000000009A +:109690000000000880000000000000000000000042 +:1096A000800000000000000000000000000000003A +:1096B00000000000000000000000000000000000AA +:1096C000000000000000A080000800000000000171 +:1096D0000000A08100080000000000010000A0823E +:1096E0000008000000000001000090700038000039 +:1096F0000000003800001ED800000000000000023A +:1097000000001EDA000000000000000280000000DF +:1097100000000000000000008000000000000000C9 +:1097200000000000800000000000000000000000B9 +:109730008000000000000000000000008000000029 +:109740000000000000000000800000000000000099 +:109750000000000080000000000000000000000089 +:1097600080000000000000000000000080000000F9 +:1097700000000000000000000000000000000000E9 +:1097800000000000000000000000000000000000D9 +:1097900000000000000000000000000000000000C9 +:1097A00000000000000000000000000000000000B9 +:1097B0000000000080000000000000000000000029 +:1097C0008000000000000000000000000000000019 +:1097D0000000000000000000800000000000000009 +:1097E00000000000800000000000000000000000F9 +:1097F0008000000000000000000000008000000069 +:1098000000000000000000008000000000000000D8 +:1098100000000000800000000000000000000000C8 +:109820000000C00000400000000000400000C80030 +:1098300000400000000000400000C82E0040000072 +:10984000000000010000C80000400002000000010C +:109850000000C8010040000200000000000080007D +:1098600000400000000000408000000000000000F8 +:10987000000000000000800000080040000000041C +:109880000000800400080040000000040000B00058 +:1098900000280000000000280000B1400010000077 +:1098A000000000100000B14A00100000000000019C +:1098B0000000880000800000000000800000880098 +:1098C000000800800000000200008C000040000042 +:1098D0000000004000002008001000000000001000 +:1098E00000002000000000000000000800001250EE +:1098F00000080000000000010000125100080000F4 +:1099000000000001000012520008000000000001E9 +:1099100000008E00001000040000000400001290FF +:1099200000300018000000100000129800300018ED +:1099300000000002800000000000000000000000A5 +:109940008000000000000000000000008000000017 +:109950000000000000000000800000000000000087 +:109960000000000080000000000000000000000077 +:1099700080000000000000000000000080000000E7 +:1099800000000000000000000000000000000000D7 +:1099900000000000000000000000000000000000C7 +:1099A00000000000000000000000000000000000B7 +:1099B0000000000000000000800000000000000027 +:1099C0000000000080000000000000000000000017 +:1099D0000000000000000000000000008000000007 +:1099E00000000000000000008000000000000000F7 +:1099F00000000000800000000000000000000000E7 +:109A00008000000000000000000000008000000056 +:109A1000000000000000000000008308008000003B +:109A200000000080000000010000000000000000B5 +:109A300000002008001000000000001000002000BE +:109A40000000000000000008000085000008000081 +:109A50000000000100008501000800000000000176 +:109A60000000850200080000000000010000600006 +:109A700000380000000000388000000000000000F6 +:109A800000000000000084540008000000000002F4 +:109A900000008456000800000000000200008464FA +:109AA0000010000000000004800000000000000022 +:109AB0000000000080000000000000000000000026 +:109AC0008000000000000000000000000000000016 +:109AD0000000000000000000000000000000000086 +:109AE0000000000000000000000000000000000076 +:109AF00000000000000000000000000080000000E6 +:109B000000000000000000008000000000000000D5 +:109B10000000000000000000000000000000000045 +:109B20008000000000000000000000008000000035 +:109B300000000000000000008000000000000000A5 +:109B40000000000080000000000000000000000095 +:109B50008000000000000000000000000000300055 +:109B60000040000000000008000030080040000035 +:109B70000000002000003200002000000000002053 +:109B8000000037A80000000000000008800000006E +:109B90000000000000000000800000000000000045 +:109BA0000000000080000000000000000000000035 +:109BB0000000A000000000000000200000003EC1E6 +:109BC000000000000000000100003EE00000000076 +:109BD0000000000200001E0000E000080000000875 +:109BE00080000000000000000000000000004000B5 +:109BF0000008000000000001000040010008000013 +:109C000000000001000040400008000400000002C5 +:109C10000000406000080004000000048000000014 +:109C200000000000000000000000400000080000EC +:109C300000000004000040040008000000000004D0 +:109C40000000404000000000000000080000404804 +:109C5000000000000000000800008000000000007C +:109C6000000000100000504000010004000000014E +:109C7000000050000000000000000020000050081C +:109C800000100000000000040000500C0010000054 +:109C900000000001000052C70000000000000001A9 +:109CA000000052C60000000000000001000030006B +:109CB00000400020000000040000300400400020AC +:109CC00000000004000030080040002000000002F6 +:109CD0000000300A00400020000000020000300CAC +:109CE00000400020000000010000300D0040002076 +:109CF000000000010000300E0040002000000001C4 +:109D0000000030100040002000000004000030146B +:109D10000040002000000004000030180040002037 +:109D2000000000040000301C00400020000000047F +:109D300000005000010000800008000400005004F2 +:109D400001000080000800040000000A000000007C +:109D500000000000000050680100008000000001C9 +:109D60000000506901000080000000010000506CFC +:109D700001000080000000020000506E0100008021 +:109D8000000000020000507001000080000000048C +:109D900000005074010000800000000400005066C4 +:109DA00001000080000000020000506401000080FB +:109DB000000000010000506001000080000000026F +:109DC00000005062010000800000000200005050BE +:109DD00001000080000000040000505401000080D9 +:109DE0000000000400005058010000800000000442 +:109DF0000000505C01000080000000040000507C66 +:109E000001000080000000010000507D0100008082 +:109E100000000001000040180010000000000004D5 +:109E20000000409000100000000000040000409876 +:109E300000100000000000040000411000000000BD +:109E400000000002000041120000000000000002BB +:109E50000000411400000000000000020000411654 +:109E60000000000000000002000060400008000048 +:109E70000000000200006042000800000000000234 +:109E8000000060440008000000000002000060467E +:109E900000080000000000020000608000080000D0 +:109EA0000000000800006000000800000000000240 +:109EB00000006002000800000000000100006004D3 +:109EC0000008000000000002000060C00008000060 +:109ED000000000080000610000080000000000040D +:109EE0000000610400080000000000010000614063 +:109EF00000080000000000020000614400080000AB +:109F000000000002000061420008000000000002A2 +:109F100000006180000800000000000400007000E4 +:109F200000080000000000020000700200080000AD +:109F300000000001000070040008000000000002A2 +:109F400000007040000800000000000200007044A3 +:109F50000008000000000002000070460008000039 +:109F60000000000200007660000800000000000809 +:109F700000007080000800000000000200007084F3 +:109F80000008000000000002000076A000080000A9 +:109F900000000008000080400008000000000001F0 +:109FA0000000804100080000000000010000804225 +:109FB00000080000000000010000804300080000CD +:109FC0000000000100008000000800000000000206 +:109FD0000000800200080000000000010000800472 +:109FE0000008000000000002000080C0000800001F +:109FF00000000002000080C2000800000000000213 +:10A00000000080C400080000000000020000808002 +:10A01000000800000000000100008081000800002E +:10A020000000000100008082000800000000000124 +:10A030000000808300080000000000010000808410 +:10A0400000080000000000010000808500080000FA +:10A0500000000001000080860008000000000001F0 +:10A060000000600000080000000000020000600224 +:10A07000000800000000000100006004000800006B +:10A08000000000020000604200C000180000000252 +:10A090000000604000C00018000000020000604C9A +:10A0A00000C00018000000080000604400C0001854 +:10A0B000000000080000605700C000180000000108 +:10A0C0000000605400C0001800000002000060564C +:10A0D00000C00018000000010000664000080000F9 +:10A0E0000000000800006680000800000000000872 +:10A0F000000066C0000800000000000880000000AA +:10A1000000000000000000008000000000000000CF +:10A1100000000000800000000000000000000000BF +:10A12000800000000000000000000000800000002F +:10A13000000000000000000080000000000000009F +:10A14000000000008000000000000000000000008F +:10A1500080000000000000000000000080000000FF +:10A16000000000000000000080000000000000006F +:10A17000000000008000000000000000000000005F +:10A1800080000000000000000000000080000000CF +:10A19000000000000000000080000000000000003F +:10A1A000000000008000000000000000000000002F +:10A1B000800000000000000000000000800000009F +:10A1C000000000000000000080000000000000000F +:10A1D00000000000800000000000000000000000FF +:10A1E000800000000000000000000000800000006F +:10A1F00000000000000000008000000000000000DF +:10A2000000000000800000000000000000000000CE +:10A21000800000000000000000000000800000003E +:10A2200000000000000000008000000000000000AE +:10A23000000000008000000000000000000000009E +:10A24000800000000000000000000000800000000E +:10A25000000000000000000080000000000000007E +:10A26000000000008000000000000000000000006E +:10A2700080000000000000000000000080000000DE +:10A28000000000000000000080000000000000004E +:10A29000000000008000000000000000000000003E +:10A2A00080000000000000000000000080000000AE +:10A2B000000000000000000080000000000000001E +:10A2C000000000008000000000000000000000000E +:10A2D000800000000000000000000000800000007E +:10A2E00000000000000000008000000000000000EE +:10A2F00000000000800000000000000000000000DE +:10A30000800000000000000000000000800000004D +:10A3100000000000000000008000000000000000BD +:10A3200000000000800000000000000000000000AD +:10A33000800000000000000000000000800000001D +:10A34000000000000000000080000000000000008D +:10A35000000000008000000000000000000000007D +:10A3600080000000000000000000000080000000ED +:10A37000000000000000000080000000000000005D +:10A38000000000008000000000000000000000004D +:10A3900080000000000000000000000080000000BD +:10A3A000000000000000000080000000000000002D +:10A3B000000000000000000000000000000000009D +:10A3C000800000000000000000000000000000000D +:08A3D000070A33000000000041 +:00000001FF --- linux-raspi2-4.2.0.orig/firmware/bnx2x/bnx2x-e2-7.10.51.0.fw.ihex +++ linux-raspi2-4.2.0/firmware/bnx2x/bnx2x-e2-7.10.51.0.fw.ihex @@ -0,0 +1,20096 @@ +:10000000000037B000000068000005D8000038206C +:10001000000055A400003E0000000090000093A8DE +:100020000001164400009440000000C40001AA88AA +:10003000000134D80001AB50000000740002E03031 +:1000400000005D3C0002E0A8000000AC00033DE8B9 +:10005000000196F800033E980000120C0004D598A9 +:10006000000000040004E7A8021100B8000000012D +:10007000020600DC000000010306100001FF000082 +:100080000A00000100000008020617FC003FE00122 +:100090000A00000100000010030617FC020101FF26 +:1000A0000A0000010000000803060200000304002B +:1000B0000A00000100000010030602000003040310 +:1000C0000A000001000020000406024C00000002AB +:1000D0000A00000400002020030601E000040406DA +:1000E000030602440002040A030602540002040C40 +:1000F000030602640002040E0A0000030000204010 +:10010000030601E000040410030602400003041487 +:100110000206026400000028020600DC0000000065 +:100120000A00000100000008030601D800020417BD +:100130000A00000200002020030601C0000204198A +:10014000030601D00004041B0A0000020000204046 +:10015000030601C00002041F030601D000040421AD +:100160000A000002000020400306022000020425CD +:100170000306023000040427020D00440000003290 +:10018000030D004C0004042B040D005C000000046F +:10019000030D008C0004042F030D00A000050433A0 +:1001A000020D00B800000002030D00C00004043876 +:1001B000020D015C00000001030D01640002043C1B +:1001C000020D020400000001030D020C0003043EB6 +:1001D000030D022000020441040D02800000001201 +:1001E000030D030000180443040D400000000A0042 +:1001F0000A00000100000008040D03600000000C6C +:10020000030D0004000F045B020D01140000000D3B +:10021000020D01180000002D020D01140000001D48 +:10022000020D01180000003D020D01140000004DF8 +:10023000020D01180000006D020D01140000005DA8 +:10024000020D01180000007D031010000003046A75 +:100250000210105000000001071011000010046D82 +:100260000810114000000008071011600010047D04 +:10027000081011A000000018071018000200048DDB +:1002800004104C0000000100021070040000000186 +:100290000A00000100000008031040D40002068D8F +:1002A0000210402800000010031040400002068F9A +:1002B0000210405800280000021040840084924A36 +:1002C00002104058000000000210413800000001F8 +:1002D0000210413800000001021041380000000106 +:1002E00002104138000000010210413800000001F6 +:1002F00002104138000000010210413800000001E6 +:100300000210413800000001030C20080003069190 +:10031000030C201C00040694030C203800040698EB +:10032000040C20480000001D020C20BC000000014D +:10033000040C20C00000003F030C21BC0003069CFD +:10034000040C21C80000001C030C22380004069F86 +:10035000010C224800000000010C224C00000000AB +:10036000010C225000000000010C2254000000008B +:10037000010C225800000000010C225C000000006B +:10038000010C226000000000010C2264000000004B +:10039000010C226800000000010C226C000000002B +:1003A000010C227000000000010C2274000000000B +:1003B000010C227800000000010C227C00000000EB +:1003C000030C22D8000406A30A0000010000000963 +:1003D000020C2000000003E80A0000010000000AEF +:1003E000020C2000000000030A0000010000000CC5 +:1003F000020C2000000000010A00000100001001B2 +:10040000020C2000000005DC0A00000100001002C0 +:10041000020C2000000000040A000001000010048B +:10042000020C2000000000010A0000010000200171 +:10043000020C2000000005DC0A0000010000200280 +:10044000020C2000000000040A000001000020044B +:10045000020C2000000000010520040000710000D3 +:1004600006200780001006A70422000000004000BC +:10047000042324000000160003221170000806A9BE +:10048000032211A8009006B10422C000000000065B +:100490000322C018000407410422C0280000000CF9 +:1004A0000322C058000407450422C0680000000C65 +:1004B0000322C098000407490422C0A80000000CD1 +:1004C0000322C0D80004074D0422C0E80000000C3D +:1004D0000322C118000407510422C1280000000CA7 +:1004E0000322C158000407550422C1680000000C13 +:1004F0000322C198000407590422C1A80000000C7F +:100500000322C1D80004075D0422C1E80000000CEA +:100510000322C218000407610422C2280000000C54 +:100520000322C258000407650422C2680000000CC0 +:100530000322C298000407690422C2A80000000C2C +:100540000322C2D80004076D0422C2E80000000C98 +:100550000322C318000407710422C3280000000C02 +:100560000322C358000407750422C3680000000C6E +:100570000322C398000407790422C3A80000000CDA +:100580000322C3D80004077D0422C3E80000000C46 +:100590000322C418000407810422C4280000000CB0 +:1005A0000322C458000407850422C4680000000C1C +:1005B0000322C498000407890422C4A80000000C88 +:1005C0000322C4D80004078D0422C4E80000000CF4 +:1005D0000322C518000407910422C5280000000C5E +:1005E0000322C558000407950422C5680000000CCA +:1005F0000322C598000407990422C5A80000000C36 +:100600000322C5D80004079D0422C5E80000000CA1 +:100610000322C618000407A10422C6280000000C0B +:100620000322C658000407A50422C6680000000C77 +:100630000322C698000407A90422C6A80000000CE3 +:100640000322C6D8000407AD0422C6E80000000C4F +:100650000322C718000407B10422C7280000000CB9 +:100660000322C758000407B50422C7680000000C25 +:100670000322C798000407B90422C7A80000000C91 +:100680000322C7D8000407BD0422C7E80000000CFD +:100690000322C818000407C10422C8280000000C67 +:1006A0000322C858000407C50422C8680000000CD3 +:1006B0000322C898000407C90422C8A80000000C3F +:1006C0000322C8D8000407CD0422C8E80000000CAB +:1006D0000322C918000407D10422C9280000000C15 +:1006E0000322C958000407D50422C9680000000C81 +:1006F0000322C998000407D90422C9A80000000CED +:100700000322C9D8000407DD0422C9E80000000C58 +:100710000322CA18000407E10422CA280000000CC2 +:100720000322CA58000407E50422CA680000000C2E +:100730000322CA98000407E90422CAA80000000C9A +:100740000322CAD8000407ED0422CAE80000000C06 +:100750000322CB18000407F10422CB280000000C70 +:100760000322CB58000407F50422CB680000000CDC +:100770000322CB98000407F90422CBA80000000C48 +:100780000322CBD8000407FD0422CBE80000000CB4 +:100790000322CC18000408010422CC280000000C1D +:1007A0000322CC58000408050422CC680000000C89 +:1007B0000322CC98000408090422CCA80000000CF5 +:1007C0000322CCD80004080D0422CCE80000000C61 +:1007D0000322CD18000408110422CD280000000CCB +:1007E0000322CD58000408150422CD680000000C37 +:1007F0000322CD98000408190422CDA80000000CA3 +:100800000322CDD80004081D0422CDE80000000C0E +:100810000322CE18000408210422CE280000000C78 +:100820000322CE58000408250422CE680000000CE4 +:100830000322CE98000408290422CEA80000000C50 +:100840000322CED80004082D0422CEE80000000CBC +:100850000322CF18000408310422CF280000000C26 +:100860000322CF58000408350422CF680000000C92 +:100870000322CF98000408390422CFA80000000CFE +:100880000322CFD80004083D0422CFE80000000C6A +:100890000322D018000408410422D0280000000CD4 +:1008A0000322D058000408450422D0680000000C40 +:1008B0000322D098000408490422D0A80000000CAC +:1008C0000322D0D80004084D0422D0E80000000C18 +:1008D0000322D118000408510422D1280000000C82 +:1008E0000322D158000408550422D1680000000CEE +:1008F0000322D198000408590422D1A80000000C5A +:100900000322D1D80004085D0422D1E80000000CC5 +:100910000322D218000408610422D2280000000C2F +:100920000322D258000408650422D2680000000C9B +:100930000322D298000408690422D2A80000000C07 +:100940000322D2D80004086D0422D2E80000000C73 +:100950000322D318000408710422D3280000000CDD +:100960000322D358000408750422D3680000000C49 +:100970000322D398000408790422D3A80000000CB5 +:100980000322D3D80004087D0422D3E80000000C21 +:100990000322D418000408810422D4280000000C8B +:1009A0000322D458000408850422D4680000000CF7 +:1009B0000322D498000408890422D4A80000000C63 +:1009C0000322D4D80004088D0422D4E80000000CCF +:1009D0000322D518000408910422D5280000000C39 +:1009E0000322D558000408950422D5680000000CA5 +:1009F0000322D598000408990422D5A80000000C11 +:100A00000322D5D80004089D0422D5E80000000C7C +:100A10000322D618000408A10422D6280000000CE6 +:100A20000322D658000408A50422D6680000000C52 +:100A30000322D698000408A90422D6A80000000CBE +:100A40000322D6D8000408AD0422D6E80000000C2A +:100A50000322D718000408B10422D7280000000C94 +:100A60000322D758000408B50422D7680000000C00 +:100A70000322D798000408B90422D7A80000000C6C +:100A80000322D7D8000408BD0422D7E80000000CD8 +:100A90000322D818000408C10422D8280000000C42 +:100AA0000322D858000408C50422D8680000000CAE +:100AB0000322D898000408C90422D8A80000000C1A +:100AC0000322D8D8000408CD0422D8E80000000C86 +:100AD0000322D918000408D10422D9280000000CF0 +:100AE0000322D958000408D50422D9680000000C5C +:100AF0000322D998000408D90422D9A80000000CC8 +:100B00000322D9D8000408DD0422D9E80000000C33 +:100B10000322DA18000408E10422DA280000000C9D +:100B20000322DA58000408E50422DA680000000C09 +:100B30000322DA98000408E90422DAA80000000C75 +:100B40000322DAD8000408ED0422DAE80000000CE1 +:100B50000322DB18000408F10422DB280000000C4B +:100B60000322DB58000408F50422DB680000000CB7 +:100B70000322DB98000408F90422DBA80000000C23 +:100B80000322DBD8000408FD0422DBE80000000C8F +:100B90000322DC18000409010422DC280000000CF8 +:100BA0000322DC58000409050422DC680000000C64 +:100BB0000322DC98000409090422DCA80000000CD0 +:100BC0000322DCD80004090D0422DCE80000000C3C +:100BD0000322DD18000409110422DD280000000CA6 +:100BE0000322DD58000409150422DD680000000C12 +:100BF0000322DD98000409190422DDA80000000C7E +:100C00000322DDD80004091D0422DDE80000000CE9 +:100C10000322DE18000409210422DE280000000C53 +:100C20000322DE58000409250422DE680000000CBF +:100C30000322DE98000409290422DEA80000000C2B +:100C40000322DED80004092D0422DEE80000000C97 +:100C50000322DF18000409310422DF280000000C01 +:100C60000322DF58000409350422DF680000000C6D +:100C70000322DF98000409390422DFA80000000CD9 +:100C80000322DFD80004093D0422DFE80000000C45 +:100C90000322E018000409410422E0280000000CAF +:100CA0000322E058000409450422E0680000000C1B +:100CB0000322E098000409490422E0A80000000C87 +:100CC0000322E0D80004094D0422E0E80000000CF3 +:100CD0000322E118000409510422E1280000000C5D +:100CE0000322E158000409550422E1680000000CC9 +:100CF0000322E198000409590422E1A80000000C35 +:100D00000322E1D80004095D0422E1E800000006A6 +:100D10000422F640000000200223800000000010A2 +:100D20000223804000000012022380800000003077 +:100D3000022380C00000000E02238BC000000001CF +:100D40000A0000020000000802238380000864708B +:100D5000022383C0000002260A00000200000009EE +:100D600002238300000864700223834000000226EF +:100D70000A0000020000000A022383000000055F51 +:100D800002238340000000010A0000020000000C62 +:100D9000022383000000015702238340000000006B +:100DA0000A0000020000100002238380000C96A8B5 +:100DB000022383C0000003390A0000020000100172 +:100DC00002238300000C96A802238340000003390D +:100DD0000A00000200001002022383000000080E37 +:100DE00002238340000000020A00000200001004F9 +:100DF000022383000000020302238340000000005E +:100E00000A0000020000200002238380000CF8503A +:100E1000022383C0000003520A00000200002001E8 +:100E200002238300000CF850022383400000035289 +:100E30000A00000200002002022383000000084D87 +:100E400002238340000000020A0000020000200488 +:100E500002238300000002130223834000000000ED +:100E600005240000320B0000052480002B2E0C838B +:100E70000624DB5062FC09610A0000010000000248 +:100E800002231480000000000A000001000000049A +:100E900002231480000000000A000001000000117D +:100EA00002231480000000000A0000010000000876 +:100EB000022000BC000000320A0000040000001004 +:100EC000022000BC00000002022388400000000154 +:100ED00001200138000000000223884000000000CB +:100EE0000A0000010000001102231480000000012C +:100EF00001200000000000000120000400000000AC +:100F000001200008000000000120000C000000008B +:100F1000012000100000000001200014000000006B +:100F200003200020001A0963032000A40002097DA9 +:100F30000220022400000000022002340000000011 +:100F40000220024C00000000022002E40000FFFF2B +:100F500008202000000008000A0000010000001026 +:100F600008204000000002000422110800000002D6 +:100F70000422340000000002042259000000000690 +:100F800004226040000000300422F3000000001042 +:100F900004221110000000020422340800000002A4 +:100FA00004225918000000060422610000000030ED +:100FB0000422F34000000010042211180000000277 +:100FC0000422341000000002042259300000000600 +:100FD000042261C0000000300422F38000000010F1 +:100FE0000422112000000002042234180000000234 +:100FF00004225948000000060422628000000030EC +:101000000422F3C000000010042211280000000296 +:10101000042234200000000204225960000000066F +:1010200004226340000000300422F400000000109D +:1010300004221130000000020422342800000002C3 +:1010400004225978000000060422640000000030E9 +:101050000422F440000000100422113800000002B5 +:1010600004223430000000020422599000000006DF +:10107000042264C0000000300422F480000000104C +:101080000422114000000002042234380000000253 +:10109000042259A8000000060422658000000030E8 +:1010A0000422F4C00000001004102400000000E03E +:1010B0000310201C0002097F021020C00000000263 +:1010C000031020040002098102170008000000023A +:1010D0000217002C0000000302170038007C1004E7 +:1010E0000317004400060983021700700000000C7B +:1010F0000317007800020989021701C408100000D4 +:101100000217034400000001031704000008098BC4 +:101110000317043000080993031704800004099B97 +:101120000A000001000000080217003C0000000453 +:101130000A000001000000100217003C0000000837 +:10114000021700040000000F021701EC000000026B +:10115000021701F400000002021701EC0000000277 +:10116000021701F400000002021701EC0000000267 +:10117000021701F400000002021701EC0000000257 +:10118000021701F400000002021701EC0000000247 +:10119000021701F400000002021701EC0000000237 +:1011A000021701F400000002021701EC0000000227 +:1011B000021701F400000002021701EC0000000217 +:1011C000021701F4000000020A00000100000008FC +:1011D00002130078000000320213003C000061A8F6 +:1011E00004130108000000030213010400000000C2 +:1011F0000213013400000000041301080000000382 +:10120000021301040000000002130134000000007A +:101210000413010800000003021301040000000091 +:101220000213013400000000041301080000000351 +:10123000021301040000000002130134000000004A +:101240000413010800000003021301040000000061 +:101250000213013400000000041301080000000321 +:10126000021301040000000002130134000000001A +:101270000413010800000003021301040000000031 +:1012800002130134000000000413010800000003F1 +:1012900002130104000000000213013400000000EA +:1012A0000A000001000000880200A5F8000000000C +:1012B0000A000001000001080200A5F8000000017A +:1012C0000A000001000000900200AA840000000053 +:1012D0000A000001000001100200AA8400000001C1 +:1012E0000A000001000000900200AA88000000002F +:1012F0000A000001000001100200AA88000000019D +:101300000200A270000000000200A27400000000B1 +:101310000200A270000000000200A27400000000A1 +:101320000200A270000000000200A2740000000091 +:101330000200A270000000000200A2740000000081 +:101340000201620400000000030100B40002099FD2 +:10135000030100CC000209A1020100DC0000000131 +:1013600003010100000209A30201007C003000001B +:1013700002010084000000280201008C000000002F +:1013800002010130000000040201032800000000F7 +:101390000201055400000030020160580000FFFF08 +:1013A00002016060000000000201607000000007A0 +:1013B000020160B000000000020160C000000001F6 +:1013C000020160C800000000020162080000000085 +:1013D0000401805400000003020180780000000036 +:1013E000020180E800000007030180F8000209A55F +:1013F0000301810C000209A7020181240000000002 +:101400000A00000200000008020180E40000468893 +:10141000030180EC000209A90A000001000000801D +:1014200002018038000000060A00000100000200EE +:1014300002018038000000070A00000100000400DB +:1014400002018038000000060A00000100000800C8 +:10145000020180380000000E0A0000040000200095 +:10146000020180EC0000003802018100000025E448 +:101470000201811400004BC803018680000409ABFF +:10148000020100C400000001020100F80000000198 +:10149000020100F0000000010201008000300000A5 +:1014A00002010088000000280201009000000000F6 +:1014B00002010134000000040201032C00000000BE +:1014C00002010564000000300201605C0000FFFFC3 +:1014D0000201606400000000020160740000000767 +:1014E000020160B400000000020160C400000001BD +:1014F000020160CC000000000201620C000000004C +:10150000040181A800000004020181D00000000055 +:10151000020182340000000703018244000209AF87 +:1015200003018258000209B10A000002000000080D +:10153000020182300000468803018238000209B3AC +:101540000A000001000000800201818C00000006FA +:101550000A000001000002000201818C0000000767 +:101560000A000001000004000201818C0000000656 +:101570000A000001000008000201818C0000000E3A +:101580000A00000400002000020182380000003838 +:101590000201824C000025E40201826000004BC879 +:1015A000030186E0000409B5020100C80000000143 +:1015B000020100FC00000001020100F40000000133 +:1015C00004010138000000110401017C0000001139 +:1015D00004010138000000110401017C0000001129 +:1015E00004010138000000110401017C0000001119 +:1015F00004010138000000110401017C0000001109 +:101600000215C090000089260215C09C000000044D +:1016100002140000000000010215C02400000000B8 +:101620000315C0EC000209B90315C100000209BB93 +:101630000A000001000020000315C1F4000809BDE4 +:1016400003140030000209C502140040000000012C +:10165000090000020000100803140004000309C779 +:10166000021400440000FFFF0A00000400002000F4 +:1016700003140038000209CA02140044000FFFFFDF +:101680000315C160000709CC0315C198000209D3F6 +:101690000900000100001008041400040000000309 +:1016A0000A000001000020000415C16000000007CE +:1016B0000214000000000000020090C40000E000DE +:1016C000020090CC0000F300030090D4000209D582 +:1016D000020090E000007300030090E8000209D7C8 +:1016E000020090F400007300030090FC000209D98E +:1016F0000200910800005300020091100000000455 +:1017000003009128000709DB0300916C000609E241 +:1017100004009184000000060300919C000509E884 +:101720000300942C000309ED0300942C000309F03E +:101730000300942C000309F30300942C000309F622 +:101740000300942C000309F90300942C000309FC06 +:101750000300942C000309FF0300942C00030A02E9 +:101760000304000400120A050204005400000043B0 +:101770000204005C00000006020400700000000487 +:101780000304007800040A17040400880000000520 +:101790000304009C00030A1B040400A800000004CA +:1017A000030400B800110A1E010401240000000017 +:1017B00001040128000000000104012C00000000C9 +:1017C0000104013000000000020401340000000F99 +:1017D000030401D000020A2F0204022C00000004BE +:1017E0000304025800040A310312049400210A354C +:1017F0000212038800000064021203900000000837 +:101800000312039C00030A56031203BC00030A5987 +:10181000021203D0000000000212036C000000015D +:10182000031201BC003C0A5C031202B000020A98D9 +:101830000312032400020A9A021205B400000001F8 +:10184000031205F800030A9C0212066C0000000156 +:10185000021201B000000001021207D800000000CF +:10186000021207D800000000021207D80000000092 +:10187000021207D800000000021207D80000000082 +:10188000021207D800000000021207D80000000072 +:10189000021207D800000000021030D8000000013A +:1018A0000710380000050A9F0710392000050AA418 +:1018B00007103B0000050AA907103C0000050AAE0E +:1018C0000316803000080AB302168054000000029C +:1018D0000416807C000000050316809000020ABBFD +:1018E0000316809C00020ABD021680AC0000005462 +:1018F000041680B800000005031680CC00080ABF5B +:10190000021680F0000000070316810000060AC7D7 +:101910000316812800030ACD0316814000060AD071 +:101920000316816800030AD6031681A800030AD9AA +:10193000031681E800030ADC031681F800030ADFBE +:101940000316820800070AE20316823400020AE93D +:1019500004168278000000040316828800060AEB51 +:101960000216881020200101021688202020010183 +:101970000216883820200101021688482020010123 +:101980000316E6BC00020AF10A0000140000000879 +:101990000316806000070AF3041680A4000000020A +:1019A000041680B000000002031680F400030AFA57 +:1019B0000316811800040AFD0316813400030B018D +:1019C0000316815800040B0403168174000D0B08E4 +:1019D000031681B4000D0B15021681F4000001FC02 +:1019E00002168204000000030316823C000B0B2247 +:1019F00004168268000000040216880C010101012F +:101A00000316881400030B2D0316882400050B30E1 +:101A10000316883C00030B350316E6C400020B389E +:101A20000316E6E800050B3A0216E79400000001F1 +:101A30000A00001C000010000316806000070B3F26 +:101A4000041680A400000002041680B0000000020A +:101A5000031680F400030B460316811800040B499B +:101A60000316813400030B4D0316815800040B50FC +:101A70000216817800000001021681840000000136 +:101A80000216819000000001021681A400000004EB +:101A9000021681B800000001021681C40000000196 +:101AA000021681D000000001021681E4000000044B +:101AB000021681F4000001FC0216820400000003FB +:101AC0000316823C00020B540216824800920092D8 +:101AD00002168250012401240316825800040B567A +:101AE00004168268000000040216880C010101013E +:101AF0000316881400030B5A0316882400050B5D97 +:101B00000316883C00030B620316E6E800020B652F +:101B10000216E6F8000002040A00000E0000102081 +:101B200002168174000000000316817C00020B671E +:101B30000316818800020B690316819400040B6B65 +:101B4000021681B400000000031681BC00020B6F76 +:101B5000031681C800020B71031681D400040B73B5 +:101B6000021682440E490E490216824C00920092DF +:101B700002168254012401240316E6C400020B77E6 +:101B80000316E6F000020B790216E794000000014C +:101B90000A00000E000010400216817400000001CF +:101BA0000316817C00020B7B0316818800020B7DEB +:101BB0000316819400040B7F021681B4000000011B +:101BC000031681BC00020B83031681C800020B853B +:101BD000031681D400040B87021682440000000023 +:101BE0000216824C0FFF0FFF021682540000000005 +:101BF0000316E6C400020B8B0316E6F000020B8D01 +:101C00000216E794000000000A0000070000200010 +:101C10000316806000070B8F031680A400020B964A +:101C2000031680B000020B98021681F4000001C078 +:101C3000021682040000003F0216823C0000007F72 +:101C40000316E7BC00080B9A0A00000F00004020B2 +:101C5000031680F400030BA20316811800040BA5E1 +:101C60000316813400030BA90316815800040BAC42 +:101C700003168174000D0BB0031681B4000D0BBD6B +:101C80000316824000060BCA0416825800000006A4 +:101C90000316827000020BD00216880C01010101AC +:101CA0000316881400030BD20316882400050BD5F5 +:101CB0000316883C00030BDA0316E6C400020BDDB2 +:101CC0000216E794000000010A00000D00004040E9 +:101CD000031680F400030BDF0316811800040BE2E7 +:101CE0000316813400030BE60316815800040BE948 +:101CF00003168174000D0BED031681B4000D0BFA71 +:101D000003168240000E0C070216880C0101010127 +:101D10000316881400030C150316882400050C18FC +:101D20000316883C00030C1D0316E6C400020C20B9 +:101D30000216E794000000000A00000D0000800079 +:101D4000031680F400030C220316811800040C25EE +:101D50000316813400030C290316815800040C2C4F +:101D600003168174000D0C30031681B4000D0C3D78 +:101D700003168240000E0C4A0216880C0101012055 +:101D80000316881400030C580316882400050C5B06 +:101D90000316883C00030C600316E6C400020C63C3 +:101DA0000216E79400000001021680EC000000FF1C +:101DB0000304040800140C65020404CC00000001B4 +:101DC0000305004400020C790305005000080C7B59 +:101DD0000305009000070C83030500B000020C8A85 +:101DE000030500C000020C8C030500D400020C8E19 +:101DF00002050114000000010305011C00020C9003 +:101E000002050204000000010305020C00020C920E +:101E10000205021C00000020040502400000000A28 +:101E20000405400000000D000A0000020000000848 +:101E30000305022000020C940305028000200C968A +:101E40000A000002000000100305022000020CB688 +:101E500003050280001D0CB80305000400100CD51A +:101E6000020500E00000000E020500E40000002E64 +:101E7000020500E00000001E020500E40000003E34 +:101E8000020500E00000004E020500E40000006EC4 +:101E9000020500E00000005E020500E40000007E94 +:101EA00004164024000000020316403000030CE535 +:101EB0000216404400000020021640700000001C82 +:101EC0000216420800000001021642100000000144 +:101ED0000216422000000001021642280000000104 +:101EE00002164230000000010216423800000001D4 +:101EF00002164260000000020A0000010000000912 +:101F00000216401C0003D0900A0000010000000AE5 +:101F10000216401C000002710A0000010000000CC3 +:101F20000216401C0000009C0A0000010000100185 +:101F30000216401C0005B8D80A000001000010027B +:101F40000216401C000003A90A0000010000100452 +:101F50000216401C000000EA0A00000100002001F7 +:101F60000216401C0005B8D80A000001000020023B +:101F70000216401C000003A90A0000010000200412 +:101F80000216401C000000EA02164000000000019A +:101F9000021640D8000000010316400800030CE8B8 +:101FA00002164240000000000216424800000000F5 +:101FB00008164270000000020216425000000000A5 +:101FC000021642580000000008164280000000027D +:101FD0000304200800040CEB0304201C00040CEF95 +:101FE0000304203800020CF3040420400000001E0B +:101FF000030420B800020CF5040420C00000005EB9 +:102000000304223800040CF70104224800000000F9 +:102010000104224C000000000104225000000000D6 +:1020200001042254000000000104225800000000B6 +:102030000104225C00000000010422600000000096 +:102040000104226400000000010422680000000076 +:102050000104226C00000000010422700000000056 +:102060000104227400000000010422780000000036 +:102070000104227C00000000030422C000040CFBC9 +:102080000A0000010000000902042000000000FA1C +:102090000A0000010000000A020420000000000104 +:1020A0000A0000010000000C0204200000000000F3 +:1020B0000A00000100001001020420000000017766 +:1020C0000A000001000010020204200000000001CC +:1020D0000A000001000010040204200000000000BB +:1020E0000A00000100002001020420000000017726 +:1020F0000A0000010000200202042000000000018C +:102100000A0000010000200402042000000000007A +:102110000518040000900000061807B800090CFF1D +:10212000041A000000004000041B240000001600F8 +:10213000031A16C800020D01031A17E000900D03E0 +:10214000031A404000040D93041A4050000000069A +:10215000031A406800020D97031A52C000020D993D +:10216000031A800003F90D9B041A8FE40000000796 +:10217000031A990000101194031B3D90001411A440 +:10218000021B800000000034021B80400000001889 +:10219000021B80800000000C021B80C00000002099 +:1021A000021B8BC0000000010A00000300000008B1 +:1021B000021A16D000000002021B8380000864701F +:1021C000021B83C0000002260A0000020000000972 +:1021D000021B830000086470021B8340000002267B +:1021E0000A0000020000000A021B83000000055FD5 +:1021F000021B8340000000010A0000020000000CE6 +:10220000021B830000000157021B834000000000F6 +:102210000A00000100000020021A16D4000000008D +:102220000A00000100000040021A16D4000000015C +:102230000A00000300001000021A16D0000000037C +:10224000021B8380000C96A8021B83C00000033988 +:102250000A00000200001001021B8300000C96A877 +:10226000021B8340000003390A0000020000100234 +:10227000021B83000000080E021B834000000002C6 +:102280000A00000200001004021B83000000020389 +:10229000021B8340000000000A0000030000200031 +:1022A000021A16D000000004021B8380000CF850B4 +:1022B000021B83C0000003520A000002000020013C +:1022C000021B8300000CF850021B834000000352E5 +:1022D0000A00000200002002021B83000000084DDB +:1022E000021B8340000000020A00000200002004DC +:1022F000021B830000000213021B83400000000049 +:102300000A00000100004000021A16D80000000078 +:102310000A00000100008000021A16D80000000127 +:10232000041B944800000002051C00003325000037 +:10233000051C800034B40CCA051D000033E919F7F0 +:10234000051D8000367E26F2051E000037033492FC +:10235000051E80000CF74253061E9EB02C2A11B8B1 +:102360000A00000100000002021B148000000000AF +:102370000A00000100000004021B1480000000009D +:102380000A00000100000011021B14800000000080 +:102390000A00000200000008021800BC0000003221 +:1023A000021B945C000000320A00000700000010CD +:1023B000021800BC00000002021B945C0000000236 +:1023C000021B884000000001021B942C0000000248 +:1023D0000118012800000000021B884000000000D6 +:1023E000021B942C00000000021B9440000000011E +:1023F0000A00000100000011021B1480000000010F +:102400000118000000000000011800040000000096 +:1024100001180008000000000118000C0000000076 +:102420000118001000000000011800140000000056 +:1024300003180020001A11BA031800A4000211D4D6 +:1024400002180224000000000218023400000000FC +:102450000218024C00000000021802E4000000FF15 +:1024600008181000000004000A000001000000101D +:102470000818200000000600031A1A30000411D6C4 +:10248000041A300000000012041A309000000012FC +:10249000041AD4C800000002041AD4D80000002096 +:1024A000041AD5D800000002031AD5F8000211DA88 +:1024B000041B440000000006031A1A40000411DC4B +:1024C000041A304800000012041A30D8000000122C +:1024D000041AD4D000000002041AD55800000020CD +:1024E000041AD5E000000002031AD600000211E031 +:1024F000041B441800000006031A4000000211E209 +:10250000041A500000000002041A5080000000125B +:10251000031A6140000211E4041AA0000000000246 +:10252000041B443000000002031A4008000211E6B8 +:10253000041A501000000002041A50C800000012D3 +:10254000031A6148000211E8041AA0080000000202 +:10255000041B443800000002031A4010000211EA74 +:10256000041A502000000002041A5110000000124A +:10257000031A6150000211EC041AA01000000002BE +:10258000041B444000000002031A4018000211EE30 +:10259000041A503000000002041A515800000012C2 +:1025A000031A6158000211F0041AA018000000027A +:1025B000041B444800000002031A4020000211F2EC +:1025C000041A504000000002041A51A0000000123A +:1025D000031A6160000211F4041AA0200000000236 +:1025E000041B445000000002031A4028000211F6A8 +:1025F000041A505000000002041A51E800000012B2 +:10260000031A6168000211F8041AA02800000002F1 +:10261000041B445800000002031A4030000211FA63 +:10262000041A506000000002041A52300000001228 +:10263000031A6170000211FC041AA03000000002AD +:10264000041B446000000002031A4038000211FE1F +:10265000041A507000000002041A527800000012A0 +:10266000031A617800021200041AA0380000000268 +:10267000041B446800000002020E004C00000032FF +:10268000030E005400081202030E00940007120A01 +:10269000030E00B400021211020E00C4000000007C +:1026A000020E00CC00000006030E00D80002121338 +:1026B000020E014400000001030E014C000212153D +:1026C000020E020400000001030E020C00021217A9 +:1026D000030E021C00041219030E0280001B121DBF +:1026E000040E030000000012040E20000000080089 +:1026F0000A00000100000008040E02EC00000005C2 +:10270000030E000400111238020E01100000000F29 +:10271000020E01140000002F020E01100000001F25 +:10272000020E01140000003F020E01100000004FD5 +:10273000020E01140000006F020E01100000005F85 +:10274000020E01140000007F020C1000000000289F +:10275000030C400800041249030C401C0004124DF5 +:10276000030C403800061251040C40500000001FBA +:10277000020C40CC00000001040C40D00000003AE4 +:10278000030C41B800061257040C41D00000001A97 +:10279000030C42380004125D010C424800000000A6 +:1027A000010C424C00000000010C425000000000EF +:1027B000010C425400000000010C425800000000CF +:1027C000010C425C00000000010C426000000000AF +:1027D000010C426400000000010C4268000000008F +:1027E000010C426C00000000010C4270000000006F +:1027F000010C427400000000010C4278000000004F +:10280000010C427C00000000010C4280000000002E +:10281000030C42D8000412610A0000010000000904 +:10282000020C4000000003E80A0000010000000A5A +:10283000020C4000000000030A0000010000000C30 +:10284000020C4000000000010A000001000010011D +:10285000020C4000000005DC0A000001000010022C +:10286000020C4000000000040A00000100001004F7 +:10287000020C4000000000010A00000100002001DD +:10288000020C4000000005DC0A00000100002002EC +:10289000020C4000000000040A00000100002004B7 +:1028A000020C4000000000010530040000C10000DF +:1028B000063007E800031265043200000000400003 +:1028C000043324000000160003322C7000901267BD +:1028D000033234C0000812F70432408000000010B8 +:1028E000033240C0000212FF0333740000041301DE +:1028F000023380000000001A023380400000004EC6 +:102900000233808000000010023380C000000020ED +:1029100002338BC0000000010A0000020000000822 +:102920000233838000086470023383C000000226F3 +:102930000A000002000000090233830000086470EE +:1029400002338340000002260A0000020000000A51 +:10295000023383000000055F023383400000000162 +:102960000A0000020000000C02338300000001573F +:1029700002338340000000000A0000020000100043 +:1029800002338380000C96A8023383C00000033911 +:102990000A0000020000100102338300000C96A818 +:1029A00002338340000003390A00000200001002D5 +:1029B000023383000000080E02338340000000024F +:1029C0000A0000020000100402338300000002032A +:1029D00002338340000000000A00000200002000D3 +:1029E00002338380000CF850023383C0000003528E +:1029F0000A0000020000200102338300000CF8509E +:102A000002338340000003520A000002000020024B +:102A1000023383000000084D0233834000000002AF +:102A20000A000002000020040233830000000213A9 +:102A300002338340000000000534000034CC000065 +:102A40000534800036100D330535000037D01AB735 +:102A50000535800037C328AB053600003541369C6C +:102A600005368000252143ED0636D7C0250813051D +:102A70000A00000100000002023314800000000080 +:102A80000A0000010000000402331480000000006E +:102A90000A00000100000011023314800000000051 +:102AA0000A00000100000008023000BC00000032F3 +:102AB0000A00000400000010023000BC0000000208 +:102AC000023388400000000101300138000000009E +:102AD00002338840000000000A00000100000011DD +:102AE00002331480000000010130000000000000EB +:102AF0000130000400000000013000080000000068 +:102B00000130000C00000000013000100000000047 +:102B1000013000140000000003300020001A1307E9 +:102B2000033000A400021321023002240000000040 +:102B300002300234000000000230024C00000000AD +:102B4000023002E40000FFFF08302000000008000F +:102B50000A000001000000100830400000000200E0 +:102B600004322C400000000203322C5000041323D6 +:102B7000043293C0000000020432940000000010F0 +:102B80000432C000000000200432C1000000002018 +:102B90000432C200000000200432C3000000002004 +:102BA0000432C400000000200432C50000000020F0 +:102BB0000432C600000000200432C70000000020DC +:102BC0000432C800000000200432C90000000020C8 +:102BD0000432CA00000000200432CB0000000020B4 +:102BE0000432CC00000000200432CD0000000020A0 +:102BF0000432CE00000000200432CF00000000208C +:102C00000432DB800000000204322C480000000285 +:102C100003322C6000041327043293C80000000222 +:102C200004329440000000100432C08000000020F4 +:102C30000432C180000000200432C2800000002065 +:102C40000432C380000000200432C4800000002051 +:102C50000432C580000000200432C680000000203D +:102C60000432C780000000200432C8800000002029 +:102C70000432C980000000200432CA800000002015 +:102C80000432CB80000000200432CC800000002001 +:102C90000432CD80000000200432CE8000000020ED +:102CA0000432CF80000000200432DB8800000002E4 +:102CB000043210100000000204322C000000000258 +:102CC000043210200000000204322C080000000230 +:102CD000043210300000000204322C100000000208 +:102CE000043210400000000204322C1800000002E0 +:102CF000043210500000000204322C2000000002B8 +:102D0000043210600000000204322C28000000028F +:102D1000043210700000000204322C300000000267 +:102D2000043210800000000204322C38000000023F +:102D30000202005800000032030200600008132B5A +:102D4000030200A0000B1333020200D000000007B2 +:102D5000030200DC0003133E030200F000021341F3 +:102D6000020200FC0000000C020201200000000032 +:102D70000202013400000002020201B00000000162 +:102D80000202020C000000010302021400021343BD +:102D900002020404000000010302040C00021345B7 +:102DA0000302041C00041347030204800020134B99 +:102DB0000402050000000012040280000000200050 +:102DC000030200040014136B02020108000000C893 +:102DD0000202011800000002020201C4000000000B +:102DE000020201CC00000000020201D40000000237 +:102DF000020201DC00000002020201E4000000FF08 +:102E0000020201EC000000FF0202010C000000C8F9 +:102E10000202011C00000002020201C800000000C2 +:102E2000020201D000000000020201D800000002EE +:102E3000020201E000000002020201E8000000FFBF +:102E4000020201F0000000FF02020108000000C8B9 +:102E50000202011800000002020201C4000000008A +:102E6000020201CC00000000020201D400000002B6 +:102E7000020201DC00000002020201E4000000FF87 +:102E8000020201EC000000FF0202010C000000C879 +:102E90000202011C00000002020201C80000000042 +:102EA000020201D000000000020201D8000000026E +:102EB000020201E000000002020201E8000000FF3F +:102EC000020201F0000000FF02020108000000C839 +:102ED0000202011800000002020201C4000000000A +:102EE000020201CC00000000020201D40000000236 +:102EF000020201DC00000002020201E4000000FF07 +:102F0000020201EC000000FF0202010C000000C8F8 +:102F10000202011C00000002020201C800000000C1 +:102F2000020201D000000000020201D800000002ED +:102F3000020201E000000002020201E8000000FFBE +:102F4000020201F0000000FF02020108000000C8B8 +:102F50000202011800000002020201C40000000089 +:102F6000020201CC00000000020201D400000002B5 +:102F7000020201DC00000002020201E4000000FF86 +:102F8000020201EC000000FF0202010C000000C878 +:102F90000202011C00000002020201C80000000041 +:102FA000020201D000000000020201D8000000026D +:102FB000020201E000000002020201E8000000FF3E +:102FC000020201F0000000FF0216100000000028BD +:102FD000031660080003137F0316601C00041382AD +:102FE0000316603800121386041660800000000E7D +:102FF000021660B800000001041660BC0000000862 +:10300000021660DC00000001041660E0000000040D +:10301000021660F000000001041660F400000031A8 +:10302000031661B800021398041661C0000000077F +:10303000031661DC0006139A041661F40000001107 +:1030400003166238000413A0011662480000000055 +:103050000116624C000000000116625000000000E2 +:1030600001166254000000000116625800000000C2 +:103070000116625C000000000116626000000000A2 +:103080000116626400000000011662680000000082 +:103090000116626C00000000011662700000000062 +:1030A0000116627400000000011662780000000042 +:1030B0000116627C00000000011662D400000000CE +:1030C000031662D8000413A40A00000100000009DE +:1030D00002166000000003E80A0000010000000A78 +:1030E00002166000000000030A0000010000000C4E +:1030F00002166000000000010A000001000010013B +:1031000002166000000005DC0A0000010000100249 +:1031100002166000000000040A0000010000100414 +:1031200002166000000000010A00000100002001FA +:1031300002166000000005DC0A0000010000200209 +:1031400002166000000000040A00000100002004D4 +:1031500002166000000000010528040000AB00001A +:10316000062807C8000713A8042A00000000400032 +:10317000042B240000001600032A3000000213AACA +:10318000032A4000001013AC032A8408000813BC73 +:10319000032A9348000413C4032A9668000813C83E +:1031A000032A98B8000213D0032A9950009013D232 +:1031B000032B4D9000141462022B800000000000CD +:1031C000022B804000000018022B80800000000CC1 +:1031D000022B80C000000066022B8BC000000001A3 +:1031E0000A00000300000008022A9CA80000000258 +:1031F000022B838000086470022B83C0000002262B +:103200000A00000200000009022B8300000864701D +:10321000022B8340000002260A0000020000000A80 +:10322000022B83000000055F022B83400000000199 +:103230000A0000020000000C022B8300000001576E +:10324000022B8340000000000A0000030000002061 +:10325000022A9CAC00000000032AC4E0000414769B +:10326000032AC5000002147A0A0000020000004090 +:10327000022A9CAC00000001032AC4E0000A147C6E +:103280000A00000300001000022A9CA800000003AE +:10329000022B8380000C96A8022B83C00000033908 +:1032A0000A00000200001001022B8300000C96A807 +:1032B000022B8340000003390A00000200001002C4 +:1032C000022B83000000080E022B83400000000246 +:1032D0000A00000200001004022B83000000020319 +:1032E000022B8340000000000A00000300002000C1 +:1032F000022A9CA800000004022B8380000CF850D6 +:10330000022B83C0000003520A00000200002001CB +:10331000022B8300000CF850022B83400000035264 +:103320000A00000200002002022B83000000084D6A +:10333000022B8340000000020A000002000020046B +:10334000022B830000000213022B834000000000C8 +:103350000A00000100004000022A9CB000000000AA +:103360000A00000100008000022A9CB00000000159 +:10337000042B944800000002052C000034D000000B +:10338000052C80003A7F0D34052D00002E8C1BD4B7 +:10339000052D80003B452777052E00003C47364928 +:1033A000052E80003C80455B052F00003125547BB5 +:1033B000052F800013E360C5062FAAF00AA2148629 +:1033C0000A00000100000002022B1480000000002F +:1033D0000A00000100000004022B1480000000001D +:1033E0000A00000100000011022B14800000000000 +:1033F0000A00000200000008022800BC00000032A1 +:10340000022B945C000000320A000007000000104C +:10341000022800BC00000002022B945C00000002A5 +:10342000022B884000000001022B942C00000002B7 +:103430000128013800000000022B88400000000035 +:10344000022B942C00000000022B9440000000018D +:103450000A00000100000011022B1480000000018E +:103460000128000000000000012800040000000006 +:1034700001280008000000000128000C00000000E6 +:1034800001280010000000000128001400000000C6 +:1034900003280020001A1488032800A4000214A2A4 +:1034A000022802240000000002280234000000006C +:1034B0000228024C00000000022802E40000FFFF86 +:1034C00008282000000008000A0000010000001089 +:1034D0000828400000000200042A500000000002FA +:1034E000042A501000000002042A502000000002AC +:1034F000042A503000000002042A935800000020E3 +:10350000042A94580000000E032A9490000214A488 +:10351000042A94D80000000E032A9510000214A675 +:10352000042A95580000000E032A9590000214A862 +:10353000042A95D80000000E032A9610000214AA4F +:10354000032A9688000214AC042ABC9800000002EA +:10355000042A500800000002042A5018000000024B +:10356000042A502800000002042A503800000002FB +:10357000042A93D800000020042A94980000000E2A +:10358000032A94D0000214AE042A95180000000EFD +:10359000032A9550000214B0042A95980000000EEA +:1035A000032A95D0000214B2042A96180000000ED7 +:1035B000032A9650000214B4032A9690000214B60F +:1035C000042ABCA000000002042A50480000000E9B +:1035D000032A9698001014B8042A98D0000000021C +:1035E000042A991000000002042AC480000000028E +:1035F000042A50800000000E032A96D8001014C838 +:10360000042A98D800000002042A99180000000239 +:10361000042AC48800000002042A50B80000000EEA +:10362000032A9718001014D8042A98E0000000021A +:10363000042A992000000002042AC490000000021D +:10364000042A50F00000000E032A9758001014E8D6 +:10365000042A98E800000002042A992800000002C9 +:10366000042AC49800000002042A51280000000E19 +:10367000032A9798001014F8042A98F0000000021A +:10368000042A993000000002042AC4A000000002AD +:10369000042A51600000000E032A97D80010150874 +:1036A000042A98F800000002042A99380000000259 +:1036B000042AC4A800000002042A51980000000E49 +:1036C000032A981800101518042A99000000000217 +:1036D000042A994000000002042AC4B0000000023D +:1036E000042A51D00000000E032A98580010152813 +:1036F000042A990800000002042A994800000002E8 +:10370000042AC4B8000000020400A0000000000C5D +:103710000400A050000000020300A0EC00081538CF +:103720000300A19C000415400200A45C00000C00F2 +:103730000400A6A8000000020200A6D000000000BD +:103740000200A61C000000030300A0700005154441 +:103750000400A084000000050200A0980FE0000013 +:103760000400A09C000000070300A0B8000D15494C +:103770000400A22C000000040200A688000000FC47 +:103780000400A68C000000070200A6F40000000060 +:103790000300A10C000615560400A124000000053A +:1037A0000200A1380FE000000400A13C0000000767 +:1037B0000300A158000D155C0400A23C00000004A9 +:1037C0000200A6B0000000FC0400A6B40000000740 +:1037D0000200A6F8000000000200A0300000000077 +:1037E0000200A034000000000200A0380000000029 +:1037F0000200A03C000000000200A0400000000009 +:103800000200A044000000000200A04800000000E8 +:103810000200A04C000000000000000000000000BA +:103820000000000100000000000000000000000097 +:103830000000000000000000000000000000000088 +:103840000000000000000000000000000001001760 +:103850000017001F001F00220000000000000000F1 +:103860000000000000000000000000000000000058 +:1038700000000000000000000022003400000000F2 +:1038800000000000003400350035003600360037F7 +:1038900000370038003800390039003A003A003B60 +:1038A000003B003C003C0043000000000000000022 +:1038B0000000000000000000000000000000000008 +:1038C00000000000000000000000000000000000F8 +:1038D0000043004C0000000000000000004C004DC0 +:1038E000004D004E004E004F004F00500050005160 +:1038F0000051005200520053005300540054007E07 +:1039000000000000000000000000000000000000B7 +:1039100000000000000000000000000000000000A7 +:103920000000000000000000007E01E00000000038 +:103930000000000001E001E501E501EA01EA01EF14 +:1039400001EF01F401F401F901F901FE01FE0203A6 +:103950000203020800000000000000000000000058 +:103960000000000000000000000000000000000057 +:103970000000000000000000000000000000000047 +:103980000208020C0000000000000000000000001F +:103990000000000000000000000000000000000027 +:1039A000000000000000000000000000020C021CEB +:1039B0000000000000000000021C021E021E022087 +:1039C00002200222022202240224022602260228C7 +:1039D0000228022A022A022C000000000000000037 +:1039E00000000000000000000000000000000000D7 +:1039F00000000000000000000000000000000000C7 +:103A000000000000022C022F000000000000000057 +:103A1000022F023202320235023502380238023BEE +:103A2000023B023E023E024102410244024402477E +:103A30000247024B024B024F024F02530253025401 +:103A400002540255025502560256025702570258B6 +:103A5000025802590259025A025A025B025B026082 +:103A600002600286028602AB02AB02AC02AC02AD7F +:103A700002AD02AE02AE02AF02AF02B002B002B1BE +:103A800002B102B202B202B302B302CA00000000E5 +:103A90000000000000000000000000000000000026 +:103AA0000000000000000000000000000000000016 +:103AB0000000000002CA02D7000000000000000061 +:103AC00002D702D802D802D902D902DA02DA02DB1E +:103AD00002DB02DC02DC02DD02DD02DE02DE02DFEE +:103AE00002DF02F000000000000000000000000003 +:103AF00000000000000000000000000000000000C6 +:103B000000000000000000000000000002F002FEC3 +:103B1000000000000000000002FE02FF02FF0300A0 +:103B2000030003010301030203020303030303046D +:103B300003040305030503060306030B000000004E +:103B40000000000000000000000000000000000075 +:103B50000000000000000000000000000000000065 +:103B600000000000030B03A900000000000000009B +:103B70000000000000000000000000000000000045 +:103B80000000000000000000000000000000000035 +:103B900003A903AB000000000000000000000000CB +:103BA0000000000000000000000000000000000015 +:103BB00000000000000000000000000003AB03BF95 +:103BC000000000000000000003BF03C003C003C1E9 +:103BD00003C103C203C203C303C303C403C403C5B5 +:103BE00003C503C603C603C703C703E703E703EA26 +:103BF00003EA03ED000000000000000000000000E8 +:103C000000000000000000000000000000000000B4 +:103C10000000000003ED041500000000000000009B +:103C20000000000000000000000000000000000094 +:103C30000000000000000000000000000000000084 +:103C4000041504820482048A048A0492049204986B +:103C50000498049E049E04A404A404AA04AA04B024 +:103C600004B004B604B604BC04BC04C204C204D448 +:103C7000000000000000000004D404D504D504D6E0 +:103C800004D604D704D704D804D804D904D904DA54 +:103C900004DA04DB04DB04DC04DC04DD00000000E7 +:103CA0000000000000000000000000000000000014 +:103CB0000000000000000000000000000000000004 +:103CC0000000000004DD0508000000000000000006 +:103CD00000000000000000000000000000000000E4 +:103CE00000000000000000000000000000000000D4 +:103CF0000508055F055F0574057405890589058B51 +:103D0000058B058D058D058F058F05910591059313 +:103D1000059305950595059705970599059905ACB2 +:103D2000000000000000000005AC05B405B405BCAF +:103D300005BC05C405C405CC05CC05D405D405DCFB +:103D400005DC05E405E405EC05EC05ED00000000EC +:103D50000000000000000000000000000000000063 +:103D60000000000000000000000000000000000053 +:103D70000000000005ED061E00000000000000002D +:103D80000000000000000000000000000000000033 +:103D90000000000000000000000000000000000023 +:103DA000061E068E068E069D069D06AC06AC06B166 +:103DB00006B106B606B606BB06BB06C006C006C5FB +:103DC00006C506CA06CA06CF06CF06D406D406DC48 +:103DD00006DC06E506E506EE06EE06EF06EF06F063 +:103DE00006F006F106F106F206F206F306F306F413 +:103DF00006F406F506F506F60000000000000000D7 +:103E00000000200000004000000060000000800072 +:103E10000000A0000000C0000000E0000001000061 +:103E2000000120000001400000016000000180004E +:103E30000001A0000001C0000001E000000200003D +:103E4000000220000002400000026000000280002A +:103E50000002A0000002C0000002E0000003000019 +:103E60000003200000034000000360000003800006 +:103E70000003A0000003C0000003E00000040000F5 +:103E800000042000000440000004600000048000E2 +:103E90000004A0000004C0000004E00000050000D1 +:103EA00000052000000540000005600000058000BE +:103EB0000005A0000005C0000005E00000060000AD +:103EC000000620000006400000066000000680009A +:103ED0000006A0000006C0000006E0000007000089 +:103EE0000007200000074000000760000007800076 +:103EF0000007A0000007C0000007E0000008000065 +:103F00000008200000084000000860000008800051 +:103F10000008A0000008C0000008E0000009000040 +:103F2000000920000009400000096000000980002D +:103F30000009A0000009C0000009E000000A00001C +:103F4000000A2000000A4000000A6000000A800009 +:103F5000000AA000000AC000000AE000000B0000F8 +:103F6000000B2000000B4000000B6000000B8000E5 +:103F7000000BA000000BC000000BE000000C0000D4 +:103F8000000C2000000C4000000C6000000C8000C1 +:103F9000000CA000000CC000000CE000000D0000B0 +:103FA000000D2000000D4000000D6000000D80009D +:103FB000000DA000000DC000000DE000000E00008C +:103FC000000E2000000E4000000E6000000E800079 +:103FD000000EA000000EC000000EE000000F000068 +:103FE000000F2000000F4000000F6000000F800055 +:103FF000000FA000000FC000000FE0000010000044 +:104000000010200000104000001060000010800030 +:104010000010A0000010C0000010E000001100001F +:10402000001120000011400000116000001180000C +:104030000011A0000011C0000011E00000120000FB +:1040400000122000001240000012600000128000E8 +:104050000012A0000012C0000012E00000130000D7 +:1040600000132000001340000013600000138000C4 +:104070000013A0000013C0000013E00000140000B3 +:1040800000142000001440000014600000148000A0 +:104090000014A0000014C0000014E000001500008F +:1040A000001520000015400000156000001580007C +:1040B0000015A0000015C0000015E000001600006B +:1040C0000016200000164000001660000016800058 +:1040D0000016A0000016C0000016E0000017000047 +:1040E0000017200000174000001760000017800034 +:1040F0000017A0000017C0000017E0000018000023 +:10410000001820000018400000186000001880000F +:104110000018A0000018C0000018E00000190000FE +:1041200000192000001940000019600000198000EB +:104130000019A0000019C0000019E000001A0000DA +:10414000001A2000001A4000001A6000001A8000C7 +:10415000001AA000001AC000001AE000001B0000B6 +:10416000001B2000001B4000001B6000001B8000A3 +:10417000001BA000001BC000001BE000001C000092 +:10418000001C2000001C4000001C6000001C80007F +:10419000001CA000001CC000001CE000001D00006E +:1041A000001D2000001D4000001D6000001D80005B +:1041B000001DA000001DC000001DE000001E00004A +:1041C000001E2000001E4000001E6000001E800037 +:1041D000001EA000001EC000001EE000001F000026 +:1041E000001F2000001F4000001F6000001F800013 +:1041F000001FA000001FC000001FE0000020000002 +:1042000000202000002040000020600000208000EE +:104210000020A0000020C0000020E00000210000DD +:1042200000212000002140000021600000218000CA +:104230000021A0000021C0000021E00000220000B9 +:1042400000222000002240000022600000228000A6 +:104250000022A0000022C0000022E0000023000095 +:104260000023200000234000002360000023800082 +:104270000023A0000023C0000023E0000024000071 +:10428000002420000024400000246000002480005E +:104290000024A0000024C0000024E000002500004D +:1042A000002520000025400000256000002580003A +:1042B0000025A0000025C0000025E0000026000029 +:1042C0000026200000264000002660000026800016 +:1042D0000026A0000026C0000026E0000027000005 +:1042E00000272000002740000027600000278000F2 +:1042F0000027A0000027C0000027E00000280000E1 +:1043000000282000002840000028600000288000CD +:104310000028A0000028C0000028E00000290000BC +:1043200000292000002940000029600000298000A9 +:104330000029A0000029C0000029E000002A000098 +:10434000002A2000002A4000002A6000002A800085 +:10435000002AA000002AC000002AE000002B000074 +:10436000002B2000002B4000002B6000002B800061 +:10437000002BA000002BC000002BE000002C000050 +:10438000002C2000002C4000002C6000002C80003D +:10439000002CA000002CC000002CE000002D00002C +:1043A000002D2000002D4000002D6000002D800019 +:1043B000002DA000002DC000002DE000002E000008 +:1043C000002E2000002E4000002E6000002E8000F5 +:1043D000002EA000002EC000002EE000002F0000E4 +:1043E000002F2000002F4000002F6000002F8000D1 +:1043F000002FA000002FC000002FE00000300000C0 +:1044000000302000003040000030600000308000AC +:104410000030A0000030C0000030E000003100009B +:104420000031200000314000003160000031800088 +:104430000031A0000031C0000031E0000032000077 +:104440000032200000324000003260000032800064 +:104450000032A0000032C0000032E0000033000053 +:104460000033200000334000003360000033800040 +:104470000033A0000033C0000033E000003400002F +:10448000003420000034400000346000003480001C +:104490000034A0000034C0000034E000003500000B +:1044A00000352000003540000035600000358000F8 +:1044B0000035A0000035C0000035E00000360000E7 +:1044C00000362000003640000036600000368000D4 +:1044D0000036A0000036C0000036E00000370000C3 +:1044E00000372000003740000037600000378000B0 +:1044F0000037A0000037C0000037E000003800009F +:10450000003820000038400000386000003880008B +:104510000038A0000038C0000038E000003900007A +:104520000039200000394000003960000039800067 +:104530000039A0000039C0000039E000003A000056 +:10454000003A2000003A4000003A6000003A800043 +:10455000003AA000003AC000003AE000003B000032 +:10456000003B2000003B4000003B6000003B80001F +:10457000003BA000003BC000003BE000003C00000E +:10458000003C2000003C4000003C6000003C8000FB +:10459000003CA000003CC000003CE000003D0000EA +:1045A000003D2000003D4000003D6000003D8000D7 +:1045B000003DA000003DC000003DE000003E0000C6 +:1045C000003E2000003E4000003E6000003E8000B3 +:1045D000003EA000003EC000003EE000003F0000A2 +:1045E000003F2000003F4000003F6000003F80008F +:1045F000003FA000003FC000003FE000004000007E +:10460000004020000040400000406000004080006A +:104610000040A0000040C0000040E0000041000059 +:104620000041200000414000004160000041800046 +:104630000041A0000041C0000041E0000042000035 +:104640000042200000424000004260000042800022 +:104650000042A0000042C0000042E0000043000011 +:1046600000432000004340000043600000438000FE +:104670000043A0000043C0000043E00000440000ED +:1046800000442000004440000044600000448000DA +:104690000044A0000044C0000044E00000450000C9 +:1046A00000452000004540000045600000458000B6 +:1046B0000045A0000045C0000045E00000460000A5 +:1046C0000046200000464000004660000046800092 +:1046D0000046A0000046C0000046E0000047000081 +:1046E000004720000047400000476000004780006E +:1046F0000047A0000047C0000047E000004800005D +:104700000048200000484000004860000048800049 +:104710000048A0000048C0000048E0000049000038 +:104720000049200000494000004960000049800025 +:104730000049A0000049C0000049E000004A000014 +:10474000004A2000004A4000004A6000004A800001 +:10475000004AA000004AC000004AE000004B0000F0 +:10476000004B2000004B4000004B6000004B8000DD +:10477000004BA000004BC000004BE000004C0000CC +:10478000004C2000004C4000004C6000004C8000B9 +:10479000004CA000004CC000004CE000004D0000A8 +:1047A000004D2000004D4000004D6000004D800095 +:1047B000004DA000004DC000004DE000004E000084 +:1047C000004E2000004E4000004E6000004E800071 +:1047D000004EA000004EC000004EE000004F000060 +:1047E000004F2000004F4000004F6000004F80004D +:1047F000004FA000004FC000004FE000005000003C +:104800000050200000504000005060000050800028 +:104810000050A0000050C0000050E0000051000017 +:104820000051200000514000005160000051800004 +:104830000051A0000051C0000051E00000520000F3 +:1048400000522000005240000052600000528000E0 +:104850000052A0000052C0000052E00000530000CF +:1048600000532000005340000053600000538000BC +:104870000053A0000053C0000053E00000540000AB +:104880000054200000544000005460000054800098 +:104890000054A0000054C0000054E0000055000087 +:1048A0000055200000554000005560000055800074 +:1048B0000055A0000055C0000055E0000056000063 +:1048C0000056200000564000005660000056800050 +:1048D0000056A0000056C0000056E000005700003F +:1048E000005720000057400000576000005780002C +:1048F0000057A0000057C0000057E000005800001B +:104900000058200000584000005860000058800007 +:104910000058A0000058C0000058E00000590000F6 +:1049200000592000005940000059600000598000E3 +:104930000059A0000059C0000059E000005A0000D2 +:10494000005A2000005A4000005A6000005A8000BF +:10495000005AA000005AC000005AE000005B0000AE +:10496000005B2000005B4000005B6000005B80009B +:10497000005BA000005BC000005BE000005C00008A +:10498000005C2000005C4000005C6000005C800077 +:10499000005CA000005CC000005CE000005D000066 +:1049A000005D2000005D4000005D6000005D800053 +:1049B000005DA000005DC000005DE000005E000042 +:1049C000005E2000005E4000005E6000005E80002F +:1049D000005EA000005EC000005EE000005F00001E +:1049E000005F2000005F4000005F6000005F80000B +:1049F000005FA000005FC000005FE00000600000FA +:104A000000602000006040000060600000608000E6 +:104A10000060A0000060C0000060E00000610000D5 +:104A200000612000006140000061600000618000C2 +:104A30000061A0000061C0000061E00000620000B1 +:104A4000006220000062400000626000006280009E +:104A50000062A0000062C0000062E000006300008D +:104A6000006320000063400000636000006380007A +:104A70000063A0000063C0000063E0000064000069 +:104A80000064200000644000006460000064800056 +:104A90000064A0000064C0000064E0000065000045 +:104AA0000065200000654000006560000065800032 +:104AB0000065A0000065C0000065E0000066000021 +:104AC000006620000066400000666000006680000E +:104AD0000066A0000066C0000066E00000670000FD +:104AE00000672000006740000067600000678000EA +:104AF0000067A0000067C0000067E00000680000D9 +:104B000000682000006840000068600000688000C5 +:104B10000068A0000068C0000068E00000690000B4 +:104B200000692000006940000069600000698000A1 +:104B30000069A0000069C0000069E000006A000090 +:104B4000006A2000006A4000006A6000006A80007D +:104B5000006AA000006AC000006AE000006B00006C +:104B6000006B2000006B4000006B6000006B800059 +:104B7000006BA000006BC000006BE000006C000048 +:104B8000006C2000006C4000006C6000006C800035 +:104B9000006CA000006CC000006CE000006D000024 +:104BA000006D2000006D4000006D6000006D800011 +:104BB000006DA000006DC000006DE000006E000000 +:104BC000006E2000006E4000006E6000006E8000ED +:104BD000006EA000006EC000006EE000006F0000DC +:104BE000006F2000006F4000006F6000006F8000C9 +:104BF000006FA000006FC000006FE00000700000B8 +:104C000000702000007040000070600000708000A4 +:104C10000070A0000070C0000070E0000071000093 +:104C20000071200000714000007160000071800080 +:104C30000071A0000071C0000071E000007200006F +:104C4000007220000072400000726000007280005C +:104C50000072A0000072C0000072E000007300004B +:104C60000073200000734000007360000073800038 +:104C70000073A0000073C0000073E0000074000027 +:104C80000074200000744000007460000074800014 +:104C90000074A0000074C0000074E0000075000003 +:104CA00000752000007540000075600000758000F0 +:104CB0000075A0000075C0000075E00000760000DF +:104CC00000762000007640000076600000768000CC +:104CD0000076A0000076C0000076E00000770000BB +:104CE00000772000007740000077600000778000A8 +:104CF0000077A0000077C0000077E0000078000097 +:104D00000078200000784000007860000078800083 +:104D10000078A0000078C0000078E0000079000072 +:104D2000007920000079400000796000007980005F +:104D30000079A0000079C0000079E000007A00004E +:104D4000007A2000007A4000007A6000007A80003B +:104D5000007AA000007AC000007AE000007B00002A +:104D6000007B2000007B4000007B6000007B800017 +:104D7000007BA000007BC000007BE000007C000006 +:104D8000007C2000007C4000007C6000007C8000F3 +:104D9000007CA000007CC000007CE000007D0000E2 +:104DA000007D2000007D4000007D6000007D8000CF +:104DB000007DA000007DC000007DE000007E0000BE +:104DC000007E2000007E4000007E6000007E8000AB +:104DD000007EA000007EC000007EE000007F00009A +:104DE000007F2000007F4000007F6000007F800087 +:104DF000007FA000007FC000007FE000007FE00196 +:104E000000000000000001FF0000020000000000A0 +:104E1000000003FF00000400000004010000040182 +:104E2000000002380000011C0000011C0000011CF1 +:104E30000000005000000050000000500000000181 +:104E400000000158000001A8000000C8000000A0F8 +:104E5000000000C800000000000000000000005A30 +:104E6000000000FA00000401000004010000000A34 +:104E7000000000320000040100000401000001589D +:104E8000000001A80000001800000068000000B841 +:104E90000000010800000158000001A800000018EF +:104EA00000000068000000B80000010800000001D8 +:104EB00000000002000000000000000802150020B1 +:104EC000021500200810000000000036000000005D +:104ED00000000004000000040000000000000000CA +:104EE00000000001000000040000000200000002B9 +:104EF000000000010000000200000020000000404F +:104F00000000004000000003000000180000200026 +:104F1000000040C000006180000082400000A3004B +:104F20000000C3C00000E48000010540000126002D +:104F3000000146C000016780000188400001A9000F +:104F40000001C9C00001EA8000020B4000022C00F1 +:104F500000024CC000026D8000028E400002AF00D3 +:104F60000002CFC00002F0800000114000000001EC +:104F7000000000010000000100000001000000012D +:104F8000000000010000000100000001000000011D +:104F9000000000010000000100000001000000010D +:104FA00000000001000000010003D0000000003DEF +:104FB00000000001000D0000000700D00002814049 +:104FC000000B81680002022000010240000F025025 +:104FD00000010340000C0000000800C000028140F6 +:104FE000000B81680002022000010240000702500D +:104FF000000202C0001000000008010000028180D1 +:10500000000B81A80002026000018280000E8298DD +:1050100000080380000F0000000100F00002810082 +:1050200000090128000201B8000101D8000E01E8C2 +:10503000000002C8FFFFFFF301AFFFFF0000000008 +:105040000000000000000000000000000000000060 +:1050500000000000FFFFFFF100EFFFFF0000000075 +:10506000000000000000000000000000000100003F +:1050700000000000FFFFFFF6005FFFFF00000000E0 +:10508000000000000000000000000000000200001E +:1050900000000000FFFFF4061CBFFFFF000000053A +:1050A00000000000000000140000000000040000E8 +:1050B00000000000FFFFFFF2004FFFFF00000000B4 +:1050C00000000000000000000000000000080000D8 +:1050D00000000000FFFFFFFA002FFFFF00000000AC +:1050E00000000000000000000000000000100000B0 +:1050F00000000000FFFFFFF701EFFFFF00000000CE +:10510000000000000000000000000000002000007F +:1051100000000000FFFFFFF5002FFFFF0000000070 +:10512000000000000000000000000000004000003F +:1051300000000000FFFFFFF3018FFFFF00000000F1 +:10514000000000000000000000000000000000005F +:1051500000000000FFFFFFF1010FFFFF0000000053 +:10516000000000000000000000000000000100003E +:1051700000000000FFFFFFF6005FFFFF00000000DF +:10518000000000000000000000000000000200001D +:1051900000000000FFFFF4061CBFFFFF0000000539 +:1051A00000000000000000140000000000040000E7 +:1051B00000000000FFFFFFF2004FFFFF00000000B3 +:1051C00000000000000000000000000000080000D7 +:1051D00000000000FFFFFFFA002FFFFF00000000AB +:1051E00000000000000000000000000000100000AF +:1051F00000000000FFFFFFF700EFFFFF00000000CE +:10520000000000000000000000000000002000007E +:1052100000000000FFFFFFF5004FFFFF000000004F +:10522000000000000000000000000000004000003E +:1052300000000000FFFFFFFF00CFFFFF00000000A5 +:1052400000000000000000CC000000000000000092 +:1052500000000000FFFFFFFF00CFFFFF0000000085 +:1052600000000000000000CC000000000001000071 +:1052700000000000FFFFFFFF00CFFFFF0000000065 +:1052800000000000000000CC000000000002000050 +:1052900000000000FFFFFFFF00CFFFFF0000000045 +:1052A00000000000000000CC00000000000400002E +:1052B00000000000FFFFFFFF00CFFFFF0000000025 +:1052C00000000000000000CC00000000000800000A +:1052D00000000000FFFFFFFF00CFFFFF0000000005 +:1052E00000000000000000CC0000000000100000E2 +:1052F00000000000FFFFFFFF00CFFFFF00000000E5 +:1053000000000000000000CC0000000000200000B1 +:1053100000000000FFFFFFFF00CFFFFF00000000C4 +:1053200000000000000000CC000000000040000071 +:1053300000000000FFFFFFF3020FFFFF000000006E +:10534000000000000000000000000000000000005D +:1053500000000000FFFFFFF1010FFFFF0000000051 +:10536000000000000000000000000000000100003C +:1053700000000000FFFFFFF6005FFFFF00000000DD +:10538000000000000000000000000000000200001B +:1053900000000000FFFFF4061CBFFFFF0000000537 +:1053A00000000000000000140000000000040000E5 +:1053B00000000000FFFFFFF2004FFFFF00000000B1 +:1053C00000000000000000000000000000080000D5 +:1053D00000000000FFFFFF8A042FFFFF0000000015 +:1053E00000000000000000000000000000100000AD +:1053F00000000000FFFFFF9705CFFFFF0000000047 +:10540000000000000000000000000000002000007C +:1054100000000000FFFFFFF5010FFFFF000000008C +:10542000000000000000000000000000004000003C +:1054300000000000FFFFFFF301EFFFFF000000008E +:10544000000000000000000000000000000000005C +:1054500000000000FFFFFFF1002FFFFF0000000031 +:10546000000000000000000000000000000100003B +:1054700000000000FFFFFFF6005FFFFF00000000DC +:10548000000000000000000000000000000200001A +:1054900000000000FFFFFF061CBFFFFF0000000030 +:1054A00000000000000000140000000000040000E4 +:1054B00000000000FFFFFFF2004FFFFF00000000B0 +:1054C00000000000000000000000000000080000D4 +:1054D00000000000FFFFFFFA002FFFFF00000000A8 +:1054E00000000000000000000000000000100000AC +:1054F00000000000FFFFFFF701CFFFFF00000000EA +:10550000000000000000000000000000002000007B +:1055100000000000FFFFFFFF00CFFFFF00000000C2 +:1055200000000000000000CC00000000004000006F +:1055300000000000FFFFFFFF00CFFFFF00000000A2 +:1055400000000000000000CC00000000000000008F +:1055500000000000FFFFFFFF00CFFFFF0000000082 +:1055600000000000000000CC00000000000100006E +:1055700000000000FFFFFFFF00CFFFFF0000000062 +:1055800000000000000000CC00000000000200004D +:1055900000000000FFFFFFFF00CFFFFF0000000042 +:1055A00000000000000000CC00000000000400002B +:1055B00000000000FFFFFFFF00CFFFFF0000000022 +:1055C00000000000000000CC000000000008000007 +:1055D00000000000FFFFFFFF00CFFFFF0000000002 +:1055E00000000000000000CC0000000000100000DF +:1055F00000000000FFFFFFFF00CFFFFF00000000E2 +:1056000000000000000000CC0000000000200000AE +:1056100000000000FFFFFFFF00CFFFFF00000000C1 +:1056200000000000000000CC00000000004000006E +:1056300000000000FFFFFFFF00CFFFFF00000000A1 +:1056400000000000000000CC00000000000000008E +:1056500000000000FFFFFFFF00CFFFFF0000000081 +:1056600000000000000000CC00000000000100006D +:1056700000000000FFFFFFFF00CFFFFF0000000061 +:1056800000000000000000CC00000000000200004C +:1056900000000000FFFFFFFF00CFFFFF0000000041 +:1056A00000000000000000CC00000000000400002A +:1056B00000000000FFFFFFFF00CFFFFF0000000021 +:1056C00000000000000000CC000000000008000006 +:1056D00000000000FFFFFFFF00CFFFFF0000000001 +:1056E00000000000000000CC0000000000100000DE +:1056F00000000000FFFFFFFF00CFFFFF00000000E1 +:1057000000000000000000CC0000000000200000AD +:1057100000000000FFFFFFFF00CFFFFF00000000C0 +:1057200000000000000000CC00000000004000006D +:1057300000000000FFFFFFFF00CFFFFF00000000A0 +:1057400000000000000000CC00000000000000008D +:1057500000000000FFFFFFFF00CFFFFF0000000080 +:1057600000000000000000CC00000000000100006C +:1057700000000000FFFFFFFF00CFFFFF0000000060 +:1057800000000000000000CC00000000000200004B +:1057900000000000FFFFFFFF00CFFFFF0000000040 +:1057A00000000000000000CC000000000004000029 +:1057B00000000000FFFFFFFF00CFFFFF0000000020 +:1057C00000000000000000CC000000000008000005 +:1057D00000000000FFFFFFFF00CFFFFF0000000000 +:1057E00000000000000000CC0000000000100000DD +:1057F00000000000FFFFFFFF00CFFFFF00000000E0 +:1058000000000000000000CC0000000000200000AC +:1058100000000000FFFFFFFF00CFFFFF00000000BF +:1058200000000000000000CC00000000004000006C +:105830000000000000000032000000320000020002 +:1058400000003DFF00000211000002000000020401 +:105850000000FFFF0000FFFF0000FFFF0000FFFF50 +:1058600000000000000000370000002100000020C0 +:1058700000000001000000010000000107FFFFFF21 +:105880000000007F07FFFFFF0000003F0000FFFF58 +:105890000000FFFF0000FFFF0000FFFF00007FF897 +:1058A00000007FF800000000000028AD000029186B +:1058B000000029190000000500000007000000009A +:1058C000000000000000FF00000000000000FF00DA +:1058D000000000000000FF00000000000000FF00CA +:1058E000000000000000FF00000000000000FF00BA +:1058F000000000000000FF00000000000000FF00AA +:10590000000000000000FF00000000000000FF0099 +:10591000000000000000FF00000000000000FF0089 +:10592000000000000000FF00000000000000FF0079 +:10593000000000000000FF00000000000000FF0069 +:10594000000000000000FF00000000000000FF0059 +:10595000000000000000FF00000000000000FF0049 +:10596000000000000000FF00000000000000FF0039 +:10597000000000000000FF00000000000000FF0029 +:10598000000000000000FF00000000000000FF0019 +:10599000000000000000FF00000000000000FF0009 +:1059A000000000000000FF00000000000000FF00F9 +:1059B000000000000000FF00000000000000FF00E9 +:1059C000000000000000FF00000000000000FF00D9 +:1059D000000000000000FF00000000000000FF00C9 +:1059E000000000000000FF00000000000000FF00B9 +:1059F000000000000000FF00000000000000FF00A9 +:105A0000000000000000FF00000000000000FF0098 +:105A1000000000000000FF00000000000000FF0088 +:105A2000000000000000FF00000000000000FF0078 +:105A3000000000000000FF00000000000000FF0068 +:105A4000000000000000FF00000000000000FF0058 +:105A5000000000000000FF00000000000000FF0048 +:105A6000000000000000FF00000000000000FF0038 +:105A7000000000000000FF00000000000000FF0028 +:105A8000000000000000FF00000000000000FF0018 +:105A9000000000000000FF00000000000000FF0008 +:105AA000000000000000FF00000000000000FF00F8 +:105AB000000000000000FF00000000000000FF00E8 +:105AC000000000000000FF00000000000000FF00D8 +:105AD000000000000000FF00000000000000FF00C8 +:105AE000000000000000FF00000000000000FF00B8 +:105AF000000000000000FF00000000000000FF00A8 +:105B0000000000000000FF1C0FFFFFFF0000FF1C53 +:105B10000FFFFFFF0000FF1C0FFFFFFF0000FF1C37 +:105B20000FFFFFFF0000FF1C0FFFFFFF0000FF1C27 +:105B30000FFFFFFF0000FF1C0FFFFFFF0000FF1C17 +:105B40000FFFFFFF0000FF1C0FFFFFFF0000FF1C07 +:105B50000FFFFFFF0000FF1C0FFFFFFF0000FF1CF7 +:105B60000FFFFFFF0000FF1C0FFFFFFF0000FF1CE7 +:105B70000FFFFFFF0000FF1C0FFFFFFF0000FF1CD7 +:105B80000FFFFFFF0000FF1C0FFFFFFF0000FF1CC7 +:105B90000FFFFFFF0000FF1C0FFFFFFF0000FF1CB7 +:105BA0000FFFFFFF0000FF1C0FFFFFFF0000FF1CA7 +:105BB0000FFFFFFF0000FF1C0FFFFFFF0000FF1C97 +:105BC0000FFFFFFF0000FF1C0FFFFFFF0000FF1C87 +:105BD0000FFFFFFF0000FF1C0FFFFFFF0000FF1C77 +:105BE0000FFFFFFF0000FF1C0FFFFFFF0000FF1C67 +:105BF0000FFFFFFF0000FF1C0FFFFFFF0000FF1C57 +:105C00000FFFFFFF0000FF1C0FFFFFFF0000FF1C46 +:105C10000FFFFFFF0000FF1C0FFFFFFF0000FF1C36 +:105C20000FFFFFFF0000FF1C0FFFFFFF0000FF1C26 +:105C30000FFFFFFF0000FF1C0FFFFFFF0000FF1C16 +:105C40000FFFFFFF0000FF1C0FFFFFFF0000FF1C06 +:105C50000FFFFFFF0000FF1C0FFFFFFF0000FF1CF6 +:105C60000FFFFFFF0000FF1C0FFFFFFF0000FF1CE6 +:105C70000FFFFFFF0000FF1C0FFFFFFF0000FF1CD6 +:105C80000FFFFFFF0000FF1C0FFFFFFF0000FF1CC6 +:105C90000FFFFFFF0000FF1C0FFFFFFF0000FF1CB6 +:105CA0000FFFFFFF0000FF1C0FFFFFFF0000FF1CA6 +:105CB0000FFFFFFF0000FF1C0FFFFFFF0000FF1C96 +:105CC0000FFFFFFF0000FF1C0FFFFFFF0000FF1C86 +:105CD0000FFFFFFF0000FF1C0FFFFFFF0000FF1C76 +:105CE0000FFFFFFF0000FF1C0FFFFFFF0000FF1C66 +:105CF0000FFFFFFF0000FF1C0FFFFFFF0000FF1C56 +:105D00000FFFFFFF0000FF1C0FFFFFFF0000FF1C45 +:105D10000FFFFFFF0000FF1C0FFFFFFF0000FF1C35 +:105D20000FFFFFFF0000FF1C0FFFFFFF0000FF1C25 +:105D30000FFFFFFF0000FF1C0FFFFFFF0000FF1C15 +:105D40000FFFFFFF0000FF1C0FFFFFFF0000FF1C05 +:105D50000FFFFFFF0000FF1C0FFFFFFF0000FF1CF5 +:105D60000FFFFFFF0000FF1C0FFFFFFF0000FF1CE5 +:105D70000FFFFFFF0000FF1C0FFFFFFF0000FF1CD5 +:105D80000FFFFFFF0000FF1C0FFFFFFF0000FF1CC5 +:105D90000FFFFFFF0000FF1C0FFFFFFF0000FF1CB5 +:105DA0000FFFFFFF0000FF1C0FFFFFFF0000FF1CA5 +:105DB0000FFFFFFF0000FF1C0FFFFFFF0000FF1C95 +:105DC0000FFFFFFF0000FF1C0FFFFFFF0000FF1C85 +:105DD0000FFFFFFF0000FF1C0FFFFFFF0000FF1C75 +:105DE0000FFFFFFF0000FF1C0FFFFFFF0000FF1C65 +:105DF0000FFFFFFF0000FF1C0FFFFFFF0000FF1C55 +:105E00000FFFFFFF0000FF1C0FFFFFFF0000FF1C44 +:105E10000FFFFFFF0000FF1C0FFFFFFF0000FF1C34 +:105E20000FFFFFFF0000FF1C0FFFFFFF0000FF1C24 +:105E30000FFFFFFF0000FF1C0FFFFFFF0000FF1C14 +:105E40000FFFFFFF0000FF1C0FFFFFFF0000FF1C04 +:105E50000FFFFFFF0000FF1C0FFFFFFF0000FF1CF4 +:105E60000FFFFFFF0000FF1C0FFFFFFF0000FF1CE4 +:105E70000FFFFFFF0000FF1C0FFFFFFF0000FF1CD4 +:105E80000FFFFFFF0000FF1C0FFFFFFF0000FF1CC4 +:105E90000FFFFFFF0000FF1C0FFFFFFF0000FF1CB4 +:105EA0000FFFFFFF0000FF1C0FFFFFFF0000FF1CA4 +:105EB0000FFFFFFF0000FF1C0FFFFFFF0000FF1C94 +:105EC0000FFFFFFF0000FF1C0FFFFFFF0000FF1C84 +:105ED0000FFFFFFF0000FF1C0FFFFFFF0000FF1C74 +:105EE0000FFFFFFF0000FF1C0FFFFFFF0000FF1C64 +:105EF0000FFFFFFF0000FF1C0FFFFFFF0000FF1C54 +:105F00000FFFFFFF0000FF1C0FFFFFFF0000FF1C43 +:105F10000FFFFFFF0000FF1C0FFFFFFF0000FF1C33 +:105F20000FFFFFFF0000FF1C0FFFFFFF0000FF1C23 +:105F30000FFFFFFF0000FF1C0FFFFFFF0000FF1C13 +:105F40000FFFFFFF0000FF1C0FFFFFFF0000FF1C03 +:105F50000FFFFFFF0000FF1C0FFFFFFF0000FF1CF3 +:105F60000FFFFFFF0000FF1C0FFFFFFF0000FF1CE3 +:105F70000FFFFFFF0000FF1C0FFFFFFF0000FF1CD3 +:105F80000FFFFFFF0000FF1C0FFFFFFF0000FF1CC3 +:105F90000FFFFFFF0000FF1C0FFFFFFF0000FF1CB3 +:105FA0000FFFFFFF0000FF1C0FFFFFFF0000FF1CA3 +:105FB0000FFFFFFF0000FF1C0FFFFFFF0000FF1C93 +:105FC0000FFFFFFF0000FF1C0FFFFFFF0000FF1C83 +:105FD0000FFFFFFF0000FF1C0FFFFFFF0000FF1C73 +:105FE0000FFFFFFF0000FF1C0FFFFFFF0000FF1C63 +:105FF0000FFFFFFF0000FF1C0FFFFFFF0000FF1C53 +:106000000FFFFFFF0000FF1C0FFFFFFF0000FF1C42 +:106010000FFFFFFF0000FF1C0FFFFFFF0000FF1C32 +:106020000FFFFFFF0000FF1C0FFFFFFF0000FF1C22 +:106030000FFFFFFF0000FF1C0FFFFFFF0000FF1C12 +:106040000FFFFFFF0000FF1C0FFFFFFF0000FF1C02 +:106050000FFFFFFF0000FF1C0FFFFFFF0000FF1CF2 +:106060000FFFFFFF0000FF1C0FFFFFFF0000FF1CE2 +:106070000FFFFFFF0000FF1C0FFFFFFF0000FF1CD2 +:106080000FFFFFFF0000FF1C0FFFFFFF0000FF1CC2 +:106090000FFFFFFF0000FF1C0FFFFFFF0000FF1CB2 +:1060A0000FFFFFFF0000FF1C0FFFFFFF0000FF1CA2 +:1060B0000FFFFFFF0000FF1C0FFFFFFF0000FF1C92 +:1060C0000FFFFFFF0000FF1C0FFFFFFF0000FF1C82 +:1060D0000FFFFFFF0000FF1C0FFFFFFF0000FF1C72 +:1060E0000FFFFFFF0000FF1C0FFFFFFF0000FF1C62 +:1060F0000FFFFFFF0000FF1C0FFFFFFF0000FF1C52 +:106100000FFFFFFF0000FF1C0FFFFFFF0000FF1C41 +:106110000FFFFFFF0000FF1C0FFFFFFF0000FF1C31 +:106120000FFFFFFF0000FF1C0FFFFFFF0000FF1C21 +:106130000FFFFFFF0000FF1C0FFFFFFF0000FF1C11 +:106140000FFFFFFF0000FF1C0FFFFFFF0000FF1C01 +:106150000FFFFFFF0000FF1C0FFFFFFF0000FF1CF1 +:106160000FFFFFFF0000FF1C0FFFFFFF0000FF1CE1 +:106170000FFFFFFF0000FF1C0FFFFFFF0000FF1CD1 +:106180000FFFFFFF0000FF1C0FFFFFFF0000FF1CC1 +:106190000FFFFFFF0000FF1C0FFFFFFF0000FF1CB1 +:1061A0000FFFFFFF0000FF1C0FFFFFFF0000FF1CA1 +:1061B0000FFFFFFF0000FF1C0FFFFFFF0000FF1C91 +:1061C0000FFFFFFF0000FF1C0FFFFFFF0000FF1C81 +:1061D0000FFFFFFF0000FF1C0FFFFFFF0000FF1C71 +:1061E0000FFFFFFF0000FF1C0FFFFFFF0000FF1C61 +:1061F0000FFFFFFF0000FF1C0FFFFFFF0000FF1C51 +:106200000FFFFFFF0000FF1C0FFFFFFF0000FF1C40 +:106210000FFFFFFF0000FF1C0FFFFFFF0000FF1C30 +:106220000FFFFFFF0000FF1C0FFFFFFF0000FF1C20 +:106230000FFFFFFF0000FF1C0FFFFFFF0000FF1C10 +:106240000FFFFFFF0000FF1C0FFFFFFF0000FF1C00 +:106250000FFFFFFF0000FF1C0FFFFFFF0000FF1CF0 +:106260000FFFFFFF0000FF1C0FFFFFFF0000FF1CE0 +:106270000FFFFFFF0000FF1C0FFFFFFF0000FF1CD0 +:106280000FFFFFFF0000FF1C0FFFFFFF0000FF1CC0 +:106290000FFFFFFF0000FF1C0FFFFFFF0000FF1CB0 +:1062A0000FFFFFFF0000FF1C0FFFFFFF0000FF1CA0 +:1062B0000FFFFFFF0000FF1C0FFFFFFF0000FF1C90 +:1062C0000FFFFFFF0000FF1C0FFFFFFF0000FF1C80 +:1062D0000FFFFFFF0000FF1C0FFFFFFF0000FF1C70 +:1062E0000FFFFFFF0000FF1C0FFFFFFF0000FF1C60 +:1062F0000FFFFFFF0000FF1C0FFFFFFF0000FF1C50 +:106300000FFFFFFF0000FF1C0FFFFFFF0000FF1C3F +:106310000FFFFFFF0000FF1C0FFFFFFF0000FF1C2F +:106320000FFFFFFF0000FF1C0FFFFFFF0000FF1C1F +:106330000FFFFFFF0000FF1C0FFFFFFF0000FF1C0F +:106340000FFFFFFF0000FF1C0FFFFFFF0000FF1CFF +:106350000FFFFFFF0000FF1C0FFFFFFF0000FF1CEF +:106360000FFFFFFF0000FF1C0FFFFFFF0000FF1CDF +:106370000FFFFFFF0000FF1C0FFFFFFF0000FF1CCF +:106380000FFFFFFF00000A2F0000150000000001B2 +:1063900000000002000000030000000000000004F4 +:1063A00000000001000000000000000100000004E7 +:1063B00000000000000000010000000300000000D9 +:1063C00000000001000000040000000000000001C7 +:1063D00000000003000000000000000100000004B5 +:1063E00000000000000000040000000300000000A6 +:1063F0000000000000007FFF000003FF000000001D +:106400000000000100000001000000010000000089 +:10641000000000020000009000000090008000904A +:1064200008100000000009FF0000076C0000008A4F +:106430000000008000000081000000800000008A51 +:106440000000008000000081000000800000008A41 +:106450000000008000000081000000800000008A31 +:106460000000008000000081000000800000008A21 +:10647000000000800000008100000080000000019A +:106480000000000100000001000000010000000108 +:1064900000000001000025E4000025E400004BC8D6 +:1064A00000004BC8000000180000111A0054321000 +:1064B000000000000021054300000000000025E46A +:1064C000000025E400004BC800004BC80000001885 +:1064D0000000111A00543210000000000021054392 +:1064E00000000000000000010000000100000001A9 +:1064F0000000000000000000000000010000000299 +:10650000000000000000000600000003000000047E +:106510000000000500000001000000010000000173 +:106520000000000100000001000000010000000167 +:106530000000000100000001000000010000000157 +:106540000000000100000001000000010000000147 +:1065500000000001000000030000600000000003D4 +:106560000000600000000003000040000000030085 +:10657000000003000000030000000300000003000F +:1065800000000300000003000003F008000000000A +:1065900000000000000000000000000100000001F9 +:1065A00000000001000000010000000100000001E7 +:1065B00000000001000000010000000100000001D7 +:1065C00000000001000000010000000100000001C7 +:1065D00000000001000000010000000100000001B7 +:1065E00000000001000000010000000100000001A7 +:1065F0000000000100000001000000010000000197 +:106600000000000100000001000000010000000186 +:1066100000000001000000FF000000FF000000FF7C +:10662000000000FF0000007F000000FF000000FFEE +:10663000000000FF0000003E000000000000003FDE +:106640000000003F0000003F0000003F0000003F4E +:106650000000003F0000003F0000000F00000000AD +:106660001217000022170000321700001215000058 +:10667000221500003215000002100000001000007A +:10668000101000002010000030100000401000002A +:1066900000000000000000000000000000100000EA +:1066A00012140000221400003214000042140000F2 +:1066B000000000000000000000000000000089064B +:1066C0000000892600000036000000360810000097 +:1066D00008100000FFFFFFFFFFFFFFFFFFFFFFFFAE +:1066E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBA +:1066F000FFFFFFFFF000C000FFFFFFFFFFFFFFFFF6 +:10670000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF99 +:10671000FFFFFFFFF800C000FFFFFFFFFFFFFFFFCD +:10672000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF79 +:10673000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF69 +:10674000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF59 +:10675000FFFFFFFF00003C100000000800000008E1 +:10676000000000020000000400000005000000041A +:1067700000000040000018080000080300000803A3 +:1067800000000040000000030000080300000803B0 +:1067900000000803000100030000080300000803D4 +:1067A00000000003000000030000000300000003DD +:1067B00000000003000000030000000300000003CD +:1067C00000000003000000030000000300000003BD +:1067D0000000000300000003000000030000240389 +:1067E0000000002F000000090000001900000184D3 +:1067F00000000183000003060000001900000006ED +:1068000000000306000003060000030600000C86DB +:10681000000003060000030600000006000000065A +:106820000000000600000006000000060000000650 +:106830000000000600000006000000060000000640 +:106840000000000600000006000000060000000630 +:106850000000000600000306000000130000000610 +:106860000000100400001004001064400010644098 +:1068700000000040000000190000000100000000BE +:1068800000000000000000000000000000002000E8 +:1068900000000000000000000000000000000000F8 +:1068A00004002000000000000000000000000000C4 +:1068B0000000000041002000000000000000000077 +:1068C0000000000000000000000020000000007C2C +:1068D0000000003D0000003F0000009C0000000C94 +:1068E000000000050000000A000000050000005341 +:1068F000000025E3000000540000005400000004E4 +:106900000000000400000004000000040000000477 +:10691000000000040000000400000004000000006B +:106920000000000100000002000000000000000163 +:1069300000000002000000090000000B0000000A37 +:106940000000000000000001000000020000000044 +:106950000000000100000002000000090000000B20 +:106960000000000A000000090000000B0000000AFF +:10697000000000090000000B0000000A00000000F9 +:1069800000000800000002000000040000000000F9 +:10699000000000001FFF1FFF1FFF1FFF1FFF1FFF43 +:1069A0001FFF1FFF000025E40000800020002000E2 +:1069B0002000200080008000800080004000400017 +:1069C00040004000000000000000000200000178CC +:1069D00000000178000000000000000000000178C5 +:1069E00000000000000000000000000000000001A6 +:1069F0000000000200000000000000000000000095 +:106A0000000000040000000000000001000000027F +:106A10000000000000000000000000000000000472 +:106A20000000000000000001000000020000000063 +:106A30000000000100000002000000000000000152 +:106A40000000000200000000000000000000000044 +:106A5000000000040000000000000001000000022F +:106A60000000000000000001000000020000000023 +:106A70000000000100000002000000000000000013 +:106A80000000000000000004000000130E490E4941 +:106A90000E490E49009200920092009201240124B6 +:106AA000012401240000000000000000100010007C +:106AB000100010002001012001011001010101015D +:106AC000200101200101100120010120010110011C +:106AD0000101010120010120010110010101010159 +:106AE000000000040000000602004104020041040E +:106AF000020041040200410400000204000002CE32 +:106B0000000002CE0000000000000000000002CCE7 +:106B10000000000000000000000000000000000174 +:106B20000000000200000000000000000000000063 +:106B3000000000040000000000000001000000024E +:106B40000000000000000000000000000000000441 +:106B5000000000130E490E49000000000000000074 +:106B60001000100010001000200101200101100190 +:106B7000010101012001012001011001200101207A +:106B80000101100101010101200101200101100199 +:106B90000101010102004104020041040000000261 +:106BA00000000000000000020000000000000002E1 +:106BB00000000000000000000000000000000002D3 +:106BC00000000000000000020000000000000002C1 +:106BD00000000000000000000000000000000004B1 +:106BE0000000000602004104020041040000000110 +:106BF0000000000100000001000000010000000191 +:106C00000000000100000001000000010000000180 +:106C10000000000100000001000000010000000170 +:106C20000000000100000001000000010000000160 +:106C3000000000030255555502555555000002CE7F +:106C4000000002CE000002CE000002CE000002CE04 +:106C5000000002CE000002CC0000005400000054EE +:106C6000000000540000005400000000000000017B +:106C70000000000200000000000000060000000309 +:106C800000000004000000050000000000000001FA +:106C900000000002000000000000000000000000F2 +:106CA00000000006000000000000000100000002DB +:106CB00000000000000000000000000000000006CE +:106CC00000000000000000010000000200000000C1 +:106CD00000000001000000020000000000000001B0 +:106CE00000000002000000000000000000000000A2 +:106CF000000000060000000000000001000000028B +:106D00000000000000000001000000020000000080 +:106D10000000000100000002000000000000000070 +:106D200000000000000000060E490E490E490E4901 +:106D30000092009200920092012401240124012477 +:106D400010001000100010002001012001011001AE +:106D50000101010120010120010110012001012098 +:106D600001011001010101012001012001011001B7 +:106D70000101010100000004000000060000000005 +:106D80000000000100000002000000000000000000 +:106D900000000000000000060000000000000001EC +:106DA00000000002000000000000000000000000E1 +:106DB00000000006000000030000000400000005C1 +:106DC00000000003000000040000000500000003B4 +:106DD00000000004000000050000000300000003A4 +:106DE0000000000300000006000000030000000493 +:106DF0000000000500000003000000040000000582 +:106E00000000000300000004000000050000000373 +:106E10000000000300000003000000060E490E49B8 +:106E200000000000009200920000000001240124F4 +:106E300000000000000000000E490E4900000000A4 +:106E400000920092000000000124012410001000B4 +:106E500010001000200101200101100101010101B9 +:106E60002001012001011001200101200101100178 +:106E700001010101200101200101100101010101B5 +:106E800000000001000000030000000400000003F7 +:106E900000000004000000050000000300000006E0 +:106EA00000000005000000040000000300000004D2 +:106EB00000000005000000030000000600000005BF +:106EC00000000004000000030000000400000000B7 +:106ED00000000001000000020000000000000001AE +:106EE0000000000200000005000000030000000692 +:106EF0000000000500000004000000030000000482 +:106F0000000000000000000100000002000000007E +:106F10000000000100000002000000050000000366 +:106F20000000000600000005004800480048004836 +:106F3000009000900090009001200120012001208D +:106F40000402040204020402000500050005000515 +:106F500012001200120012000800080008000800C9 +:106F60000120012001011020010101200120012048 +:106F70000101102001200120010110200101012048 +:106F80000120012001011020010101200000000466 +:106F9000000000060000012300000123000001237F +:106FA0000000012300000123000001230000012351 +:106FB0000000012300000123000001230000012341 +:106FC0000000012300000123000001230000012331 +:106FD0000000012300000123000001230000012321 +:106FE0000000012300000020000000320000000724 +:106FF0000000000700000000000000080000000181 +:107000000000000000000000000000000215002049 +:1070100002150020000000300810000000000036BB +:1070200000000030000000310000000400000005F6 +:107030000000000000000004000000010000000645 +:1070400000000001000000020000004000000040BD +:107050000000001C000000200001000000020700EA +:1070600000030E000004150000051C0000062300AC +:1070700000072A000008310000093800000A3F001C +:10708000000B4600000C4D00000D5400000E5B008C +:10709000000F6200001069000011700000127700FC +:1070A00000137E000014850000158C00001693006C +:1070B00000179A000018A1000019A800001AAF00DC +:1070C000001BB600001CBD00001DC400001ECB004C +:1070D000001FD2000000D9000000001E0000001DAB +:1070E000000100000002078000030F00000416806A +:1070F00000051E000006258000072D0000083480D2 +:1071000000093C00000A4380000B4B00000C528039 +:10711000000D5A00000E6180000F690000107080A1 +:107120000011780000127F800013870000148E8009 +:107130000015960000169D800017A5000018AC8071 +:107140000019B400001ABB80001BC300001CCA80D9 +:107150000000D2000000000100000001000000015A +:10716000000000010000000100000001000000011B +:10717000000000010000000100000001000000010B +:1071800000000001000000010000000100000001FB +:1071900000000001000000280000002C000000306A +:1071A00000000001000000010000000100000211C9 +:1071B0000000020000000204000002190000FFFFAE +:1071C0000000FFFF0000FFFF0000FFFF00000020A5 +:1071D00000000021000000010000000107FFFFFF88 +:1071E0000000007F07FFFFFF0000003F0000FFFFDF +:1071F0000000FFFF0000FFFF0000FFFF00007FF81E +:1072000000007FF800000000000000010000FF0007 +:10721000000000000000FF00000000000000FF0070 +:10722000000000000000FF00000000000000FF0060 +:10723000000000000000FF00000000000000FF0050 +:10724000000000000000FF00000000000000FF0040 +:10725000000000000000FF00000000000000FF0030 +:10726000000000000000FF00000000000000FF0020 +:10727000000000000000FF00000000000000FF0010 +:10728000000000000000FF00000000000000FF0000 +:10729000000000000000FF00000000000000FF00F0 +:1072A000000000000000FF00000000000000FF00E0 +:1072B000000000000000FF00000000000000FF00D0 +:1072C000000000000000FF00000000000000FF00C0 +:1072D000000000000000FF00000000000000FF00B0 +:1072E000000000000000FF00000000000000FF00A0 +:1072F000000000000000FF00000000000000FF0090 +:10730000000000000000FF00000000000000FF007F +:10731000000000000000FF00000000000000FF006F +:10732000000000000000FF00000000000000FF005F +:10733000000000000000FF00000000000000FF004F +:10734000000000000000FF00000000000000FF003F +:10735000000000000000FF00000000000000FF002F +:10736000000000000000FF00000000000000FF001F +:10737000000000000000FF00000000000000FF000F +:10738000000000000000FF00000000000000FF00FF +:10739000000000000000FF00000000000000FF00EF +:1073A000000000000000FF00000000000000FF00DF +:1073B000000000000000FF00000000000000FF00CF +:1073C000000000000000FF00000000000000FF00BF +:1073D000000000000000FF00000000000000FF00AF +:1073E000000000000000FF00000000000000FF009F +:1073F000000000000000FF00000000000000FF008F +:10740000000000000000FF00000000000000FF007E +:10741000000000000000FF00000000000000FF006E +:10742000000000000000FF00000000000000FF005E +:10743000000000000000FF00000000000000FF004E +:10744000000000000000FF0000000000002010010C +:107450000000000001009000000001000000000199 +:107460000000000000000000140AFF00000090026D +:107470000000000000000000000000000000900478 +:107480000000000000000000000000000000900666 +:107490000000000000000000000000000000900854 +:1074A0000000000000000000000000000000900A42 +:1074B0000000000000000000000000000000900C30 +:1074C0000000000000000000000000000000900E1E +:1074D000000000000000000000000000000090100C +:1074E00000000000000000000000000000009012FA +:1074F00000000000000000000000000000009014E8 +:1075000000000000000000000000000000009016D5 +:1075100000000000000000000000000000009018C3 +:107520000000000000000000000000000000901AB1 +:107530000000000000000000000000000000901C9F +:107540000000000000000000000000000000901E8D +:10755000000000000000000000000000000090207B +:107560000000000000000000000000000000902269 +:107570000000000000000000000000000000902457 +:107580000000000000000000000000000000902645 +:107590000000000000000000000000000000902833 +:1075A0000000000000000000000000000000902A21 +:1075B0000000000000000000000000000000902C0F +:1075C0000000000000000000000000000000902EFD +:1075D00000000000000000000000000000009030EB +:1075E00000000000000000000000000000009032D9 +:1075F00000000000000000000000000000009034C7 +:1076000000000000000000000000000000009036B4 +:1076100000000000000000000000000000009038A2 +:107620000000000000000000000000000000903A90 +:107630000000000000000000000000000000903C7E +:107640000000000000000000000000000000903E6C +:10765000000000000000000000000000000090405A +:107660000000000000000000000000000000904248 +:107670000000000000000000000000000000904436 +:107680000000000000000000000000000000904624 +:107690000000000000000000000000000000904812 +:1076A0000000000000000000000000000000904A00 +:1076B0000000000000000000000000000000904CEE +:1076C0000000000000000000000000000000904EDC +:1076D00000000000000000000000000000009050CA +:1076E00000000000000000000000000000009052B8 +:1076F00000000000000000000000000000009054A6 +:107700000000000000000000000000000000905693 +:107710000000000000000000000000000000905881 +:107720000000000000000000000000000000905A6F +:107730000000000000000000000000000000905C5D +:107740000000000000000000000000000000905E4B +:107750000000000000000000000000000000906039 +:107760000000000000000000000000000000906227 +:107770000000000000000000000000000000906415 +:107780000000000000000000000000000000906603 +:1077900000000000000000000000000000009068F1 +:1077A0000000000000000000000000000000906ADF +:1077B0000000000000000000000000000000906CCD +:1077C0000000000000000000000000000000906EBB +:1077D00000000000000000000000000000009070A9 +:1077E0000000000000000000000000000000907297 +:1077F0000000000000000000000000000000907485 +:107800000000000000000000000000000000907672 +:107810000000000000000000000000000000907860 +:107820000000000000000000000000000000907A4E +:107830000000000000000000000000000000907C3C +:107840000000000000000000000000000000907E2A +:107850000000000000000000000000000000908018 +:107860000000000000000000000000000000908206 +:1078700000000000000000000000000000009084F4 +:1078800000000000000000000000000000009086E2 +:1078900000000000000000000000000000009088D0 +:1078A0000000000000000000000000000000908ABE +:1078B0000000000000000000000000000000908CAC +:1078C0000000000000000000000000000000908E9A +:1078D0000000000000000000000000000000909088 +:1078E0000000000000000000000000000000909276 +:1078F0000000000000000000000000000000909464 +:107900000000000000000000000000000000909651 +:10791000000000000000000000000000000090983F +:107920000000000000000000000000000000909A2D +:107930000000000000000000000000000000909C1B +:107940000000000000000000000000000000909E09 +:10795000000000000000000000000000000090A0F7 +:10796000000000000000000000000000000090A2E5 +:10797000000000000000000000000000000090A4D3 +:10798000000000000000000000000000000090A6C1 +:10799000000000000000000000000000000090A8AF +:1079A000000000000000000000000000000090AA9D +:1079B000000000000000000000000000000090AC8B +:1079C000000000000000000000000000000090AE79 +:1079D000000000000000000000000000000090B067 +:1079E000000000000000000000000000000090B255 +:1079F000000000000000000000000000000090B443 +:107A0000000000000000000000000000000090B630 +:107A1000000000000000000000000000000090B81E +:107A2000000000000000000000000000000090BA0C +:107A3000000000000000000000000000000090BCFA +:107A4000000000000000000000000000000090BEE8 +:107A5000000000000000000000000000000090C0D6 +:107A6000000000000000000000000000000090C2C4 +:107A7000000000000000000000000000000090C4B2 +:107A8000000000000000000000000000000090C6A0 +:107A9000000000000000000000000000000090C88E +:107AA000000000000000000000000000000090CA7C +:107AB000000000000000000000000000000090CC6A +:107AC000000000000000000000000000000090CE58 +:107AD000000000000000000000000000000090D046 +:107AE000000000000000000000000000000090D234 +:107AF000000000000000000000000000000090D422 +:107B0000000000000000000000000000000090D60F +:107B1000000000000000000000000000000090D8FD +:107B2000000000000000000000000000000090DAEB +:107B3000000000000000000000000000000090DCD9 +:107B4000000000000000000000000000000090DEC7 +:107B5000000000000000000000000000000090E0B5 +:107B6000000000000000000000000000000090E2A3 +:107B7000000000000000000000000000000090E491 +:107B8000000000000000000000000000000090E67F +:107B9000000000000000000000000000000090E86D +:107BA000000000000000000000000000000090EA5B +:107BB000000000000000000000000000000090EC49 +:107BC000000000000000000000000000000090EE37 +:107BD000000000000000000000000000000090F025 +:107BE000000000000000000000000000000090F213 +:107BF000000000000000000000000000000090F401 +:107C0000000000000000000000000000000090F6EE +:107C1000000000000000000000000000000090F8DC +:107C2000000000000000000000000000000090FACA +:107C3000000000000000000000000000000090FCB8 +:107C4000000000000000000000000000000090FEA6 +:107C50000000000000000000000000000000910093 +:107C60000000000000000000000000000000910281 +:107C7000000000000000000000000000000091046F +:107C8000000000000000000000000000000091065D +:107C9000000000000000000000000000000091084B +:107CA0000000000000000000000000000000910A39 +:107CB0000000000000000000000000000000910C27 +:107CC0000000000000000000000000000000910E15 +:107CD0000000000000000000000000000000911003 +:107CE00000000000000000000000000000009112F1 +:107CF00000000000000000000000000000009114DF +:107D000000000000000000000000000000009116CC +:107D100000000000000000000000000000009118BA +:107D20000000000000000000000000000000911AA8 +:107D30000000000000000000000000000000911C96 +:107D40000000000000000000000000000000911E84 +:107D50000000000000000000000000000000912072 +:107D60000000000000000000000000000000912260 +:107D7000000000000000000000000000000091244E +:107D8000000000000000000000000000000091263C +:107D9000000000000000000000000000000091282A +:107DA0000000000000000000000000000000912A18 +:107DB0000000000000000000000000000000912C06 +:107DC0000000000000000000000000000000912EF4 +:107DD00000000000000000000000000000009130E2 +:107DE00000000000000000000000000000009132D0 +:107DF00000000000000000000000000000009134BE +:107E000000000000000000000000000000009136AB +:107E10000000000000000000000000000000913899 +:107E20000000000000000000000000000000913A87 +:107E30000000000000000000000000000000913C75 +:107E40000000000000000000000000000000913E63 +:107E50000000000000000000000000000000914051 +:107E6000000000000000000000000000000091423F +:107E7000000000000000000000000000000091442D +:107E8000000000000000000000000000000091461B +:107E90000000000000000000000000000000914809 +:107EA0000000000000000000000000000000914AF7 +:107EB0000000000000000000000000000000914CE5 +:107EC0000000000000000000000000000000914ED3 +:107ED00000000000000000000000000000009150C1 +:107EE00000000000000000000000000000009152AF +:107EF000000000000000000000000000000091549D +:107F0000000000000000000000000000000091568A +:107F10000000000000000000000000000000915878 +:107F20000000000000000000000000000000915A66 +:107F30000000000000000000000000000000915C54 +:107F40000000000000000000000000000000915E42 +:107F50000000000000000000000000000000916030 +:107F6000000000000000000000000000000091621E +:107F7000000000000000000000000000000091640C +:107F800000000000000000000000000000009166FA +:107F900000000000000000000000000000009168E8 +:107FA0000000000000000000000000000000916AD6 +:107FB0000000000000000000000000000000916CC4 +:107FC0000000000000000000000000000000916EB2 +:107FD00000000000000000000000000000009170A0 +:107FE000000000000000000000000000000091728E +:107FF000000000000000000000000000000091747C +:108000000000000000000000000000000000917669 +:108010000000000000000000000000000000917857 +:108020000000000000000000000000000000917A45 +:108030000000000000000000000000000000917C33 +:108040000000000000000000000000000000917E21 +:10805000000000000000000000000000000091800F +:1080600000000000000000000000000000009182FD +:1080700000000000000000000000000000009184EB +:1080800000000000000000000000000000009186D9 +:1080900000000000000000000000000000009188C7 +:1080A0000000000000000000000000000000918AB5 +:1080B0000000000000000000000000000000918CA3 +:1080C0000000000000000000000000000000918E91 +:1080D000000000000000000000000000000091907F +:1080E000000000000000000000000000000091926D +:1080F000000000000000000000000000000091945B +:108100000000000000000000000000000000919648 +:108110000000000000000000000000000000919836 +:108120000000000000000000000000000000919A24 +:108130000000000000000000000000000000919C12 +:108140000000000000000000000000000000919E00 +:10815000000000000000000000000000000091A0EE +:10816000000000000000000000000000000091A2DC +:10817000000000000000000000000000000091A4CA +:10818000000000000000000000000000000091A6B8 +:10819000000000000000000000000000000091A8A6 +:1081A000000000000000000000000000000091AA94 +:1081B000000000000000000000000000000091AC82 +:1081C000000000000000000000000000000091AE70 +:1081D000000000000000000000000000000091B05E +:1081E000000000000000000000000000000091B24C +:1081F000000000000000000000000000000091B43A +:10820000000000000000000000000000000091B627 +:10821000000000000000000000000000000091B815 +:10822000000000000000000000000000000091BA03 +:10823000000000000000000000000000000091BCF1 +:10824000000000000000000000000000000091BEDF +:10825000000000000000000000000000000091C0CD +:10826000000000000000000000000000000091C2BB +:10827000000000000000000000000000000091C4A9 +:10828000000000000000000000000000000091C697 +:10829000000000000000000000000000000091C885 +:1082A000000000000000000000000000000091CA73 +:1082B000000000000000000000000000000091CC61 +:1082C000000000000000000000000000000091CE4F +:1082D000000000000000000000000000000091D03D +:1082E000000000000000000000000000000091D22B +:1082F000000000000000000000000000000091D419 +:10830000000000000000000000000000000091D606 +:10831000000000000000000000000000000091D8F4 +:10832000000000000000000000000000000091DAE2 +:10833000000000000000000000000000000091DCD0 +:10834000000000000000000000000000000091DEBE +:10835000000000000000000000000000000091E0AC +:10836000000000000000000000000000000091E29A +:10837000000000000000000000000000000091E488 +:10838000000000000000000000000000000091E676 +:10839000000000000000000000000000000091E864 +:1083A000000000000000000000000000000091EA52 +:1083B000000000000000000000000000000091EC40 +:1083C000000000000000000000000000000091EE2E +:1083D000000000000000000000000000000091F01C +:1083E000000000000000000000000000000091F20A +:1083F000000000000000000000000000000091F4F8 +:10840000000000000000000000000000000091F6E5 +:10841000000000000000000000000000000091F8D3 +:10842000000000000000000000000000000091FAC1 +:10843000000000000000000000000000000091FCAF +:10844000000000000000000000000000000091FE9D +:1084500000000000891400000000000089140000E2 +:1084600000000000891400000000000089140000D2 +:1084700000000000891400000000000089140000C2 +:1084800000000000891400000000000089140000B2 +:10849000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEC +:1084A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDC +:1084B0000000FFFF00000000FFFFFFFFFFFFFFFFC6 +:1084C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBC +:1084D000FFFFFFFFFFFFFFFF0000FFFF00000000A6 +:1084E00000000399000035000000000100000002B8 +:1084F0000000000300000000000000040000000174 +:108500000000000000000001000000040000000066 +:108510000000000100000003000000000000000156 +:108520000000000400000000000000010000000343 +:108530000000000000000001000000040000000036 +:108540000000000400000003000000000000000024 +:1085500000007FFF000003FFFFFFFFFFFFFFFFFFA3 +:10856000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1B +:10857000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0B +:10858000FFFFFFFFFFFFFFFF0000000300BEBC2056 +:1085900000000000000000050000000300BEBC2039 +:1085A00000000000000000050000000300BEBC2029 +:1085B00000000000000000050000000300BEBC2019 +:1085C00000000000000000050000000300BEBC2009 +:1085D00000000000000000050000000300BEBC20F9 +:1085E00000000000000000050000000300BEBC20E9 +:1085F00000000000000000050000000300BEBC20D9 +:1086000000000000000000050000000D0000000C4C +:1086100000000000000000100000000F000000003B +:1086200000000000000000000215002002150020DC +:10863000000000300810000000000036000000308C +:1086400000000031000000030000000000000001F5 +:1086500000000003000000010000000200000040D4 +:108660000000004000000004000000200000000F97 +:108670000000001B00008000000103C00001878093 +:1086800000020B4000028F00000312C0000396801E +:1086900000041A4000049E00000521C00005A580CA +:1086A000000629400006AD00000730C00007B48076 +:1086B000000838400008BC0000093FC00009C38022 +:1086C000000A4740000ACB00000B4EC0000BD280CE +:1086D000000C5640000CDA00000D5DC00000618007 +:1086E0000000000100000001000000010000000186 +:1086F0000000000100000001000000010000000176 +:108700000000000100000001000000010000000165 +:108710000000000100000001000000010000000155 +:10872000000000010000050E000004FD000005012E +:108730000000051E0000FFFF0000FFFF0000FFFF1C +:108740000000FFFF000000460000000C00000000D9 +:10875000000000000000001C000000F40000000108 +:108760000000000000000000000000000000000108 +:108770000000000107FFFFFF0000007F07FFFFFF71 +:108780000000003F0000FFFF0000FFFF0000FFFFB0 +:108790000000FFFF00007FF800007FF80000FF00EE +:1087A000000000000000FF00000000000000FF00CB +:1087B000000000000000FF00000000000000FF00BB +:1087C000000000000000FF00000000000000FF00AB +:1087D000000000000000FF00000000000000FF009B +:1087E000000000000000FF00000000000000FF008B +:1087F000000000000000FF00000000000000FF007B +:10880000000000000000FF00000000000000FF006A +:10881000000000000000FF00000000000000FF005A +:10882000000000000000FF00000000000000FF004A +:10883000000000000000FF00000000000000FF003A +:10884000000000000000FF00000000000000FF002A +:10885000000000000000FF00000000000000FF001A +:10886000000000000000FF00000000000000FF000A +:10887000000000000000FF00000000000000FF00FA +:10888000000000000000FF00000000000000FF00EA +:10889000000000000000FF00000000000000FF00DA +:1088A000000000000000FF00000000000000FF00CA +:1088B000000000000000FF00000000000000FF00BA +:1088C000000000000000FF00000000000000FF00AA +:1088D000000000000000FF00000000000000FF009A +:1088E000000000000000FF00000000000000FF008A +:1088F000000000000000FF00000000000000FF007A +:10890000000000000000FF00000000000000FF0069 +:10891000000000000000FF00000000000000FF0059 +:10892000000000000000FF00000000000000FF0049 +:10893000000000000000FF00000000000000FF0039 +:10894000000000000000FF00000000000000FF0029 +:10895000000000000000FF00000000000000FF0019 +:10896000000000000000FF00000000000000FF0009 +:10897000000000000000FF00000000000000FF00F9 +:10898000000000000000FF00000000000000FF00E9 +:10899000000000000000FF00000000000000FF00D9 +:1089A000000000000000FF00000000000000FF00C9 +:1089B000000000000000FF00000000000000FF00B9 +:1089C000000000000000FF00000000000000FF00A9 +:1089D000000000000000FF0000000000FFFFFFFF9C +:1089E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF97 +:1089F000FFFFFFFFFFFFFFFFFFFFFFFF000019006A +:108A00000000000000000001000000000000000065 +:108A1000000000000000021C000035000000000102 +:108A2000000000020000000300000000000000043D +:108A30000000000100000000000000010000000430 +:108A40000000000000000001000000030000000022 +:108A50000000000100000004000000000000000110 +:108A600000000003000000000000000100000004FE +:108A700000000000000000040000000300000000EF +:108A80000000000000007FFF000003FF0000000066 +:108A900003938700000000000000000000000000B9 +:108AA0000393870000000000000000000000000F9A +:108AB00000000007000000000000000E0000000E93 +:108AC000000000000000000000000000031500206E +:108AD00003150020010000300810000000000036DF +:108AE000000000300000003100000002000000051E +:108AF000000000020000000200000000000000056D +:108B0000000000030000000100000004000000015C +:108B100000000002000000400000004000000004CF +:108B200000000020000000020000002000001000F3 +:108B30000000208000003100000041800000520051 +:108B40000000628000007300000083800000940039 +:108B50000000A4800000B5000000C5800000D60021 +:108B60000000E6800000F700000107800001180007 +:108B700000012880000139000001498000015A00ED +:108B800000016A8000017B0000018B8000019C00D5 +:108B90000001AC800001BD000001CD800001DE00BD +:108BA0000001EE800001FF0000000F8000000001C6 +:108BB00000000001000000010000000100000001B1 +:108BC00000000001000000010000000100000001A1 +:108BD0000000000100000001000000010000000191 +:108BE0000000000100000001000000010000000181 +:108BF000000000010000000100000001000012144C +:108C000000001200000012040000FFFF0000FFFF40 +:108C10000000FFFF0000FFFF000000200000003800 +:108C200000000000000000000000002300000024FD +:108C30000000002500000026000000270000003989 +:108C40000000003A0000002B0000002C0000000093 +:108C5000000000EC00000000000000290000002AD5 +:108C60000000000100000001000000010000000100 +:108C700000000000000000000000000000000001F3 +:108C800007FFFFFF0000007F07FFFFFF0000003F1E +:108C90000000FFFF0000FFFF0000FFFF0000FFFFDC +:108CA00000007FF800007FF80000000000000001D5 +:108CB000CCCC0201CCCCCCCCCCCC0201CCCCCCCC1E +:108CC000CCCC0201CCCCCCCCCCCC0201CCCCCCCC0E +:108CD000CCCC0201CCCCCCCCCCCC0201CCCCCCCCFE +:108CE000CCCC0201CCCCCCCCCCCC0201CCCCCCCCEE +:108CF000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF84 +:108D0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF73 +:108D1000000000000001000100330A07CCCCCCC9E0 +:108D200010000000000028AD0000291800002919DB +:108D30000000000000000000000000050000000628 +:108D40007058103C000000000000FF000000000010 +:108D50000000FF00000000000000FF000000000015 +:108D60000000FF00000000000000FF000000000005 +:108D70000000FF00000000000000FF0000000000F5 +:108D80000000FF00000000000000FF0000000000E5 +:108D90000000FF00000000000000FF0000000000D5 +:108DA0000000FF00000000000000FF0000000000C5 +:108DB0000000FF00000000000000FF0000000000B5 +:108DC0000000FF00000000000000FF0000000000A5 +:108DD0000000FF00000000000000FF000000000095 +:108DE0000000FF00000000000000FF000000000085 +:108DF0000000FF00000000000000FF000000000075 +:108E00000000FF00000000000000FF000000000064 +:108E10000000FF00000000000000FF000000000054 +:108E20000000FF00000000000000FF000000000044 +:108E30000000FF00000000000000FF000000000034 +:108E40000000FF00000000000000FF000000000024 +:108E50000000FF00000000000000FF000000000014 +:108E60000000FF00000000000000FF000000000004 +:108E70000000FF00000000000000FF0000000000F4 +:108E80000000FF00000000000000FF0000000000E4 +:108E90000000FF00000000000000FF0000000000D4 +:108EA0000000FF00000000000000FF0000000000C4 +:108EB0000000FF00000000000000FF0000000000B4 +:108EC0000000FF00000000000000FF0000000000A4 +:108ED0000000FF00000000000000FF000000000094 +:108EE0000000FF00000000000000FF000000000084 +:108EF0000000FF00000000000000FF000000000074 +:108F00000000FF00000000000000FF000000000063 +:108F10000000FF00000000000000FF000000000053 +:108F20000000FF00000000000000FF000000000043 +:108F30000000FF00000000000000FF000000000033 +:108F40000000FF00000000000000FF000000000023 +:108F50000000FF00000000000000FF000000000013 +:108F60000000FF00000000000000FF000000000003 +:108F70000000FF00000000000000FF0000000000F3 +:108F80000000FF0000000000FFFFFFFFFFFFFFFFEA +:108F9000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE1 +:108FA000FFFFFFFFFFFFFFFF0000FFFF00000000CB +:108FB000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC1 +:108FC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB1 +:108FD0000000FFFF0000000003231303130323130B +:108FE00003030323A0B0904302000200060406041A +:108FF000032313031303231303030323A0B090439A +:10900000131313131313131313131313A0B0904359 +:1090100003010200000000000000062D00003500E2 +:10902000000000010000000200000003000000003A +:10903000000000040000000100000000000000012A +:109040000000000400000000000000010000000318 +:10905000000000000000000100000004000000000B +:1090600000000001000000030000000000000001FB +:1090700000000004000000000000000400000003E5 +:10908000000000000000000000007FFF000003FF60 +:10909000002625A000000000002625A000000000FA +:1090A000002625A000000000002625A000000000EA +:1090B000000E0000011600D6002625A000000000CA +:1090C000002625A000000000002625A000000000CA +:1090D000002625A00000000000720000012300F31C +:1090E0000000FFFF000000000000FFFF0000000084 +:1090F0000000FFFF000000000000FFFF0000000074 +:109100000000FFFF000000000000FFFF0000000063 +:1091100000000000000000000000FFFF0000000051 +:109120000000FFFF000000000000FFFF0000000043 +:109130000000FFFF000000000000FFFF0000000033 +:109140000000FFFF000000000000FFFF0000000023 +:1091500000000000000000000000FFFF0000000011 +:109160000000FFFF000000000000FFFF0000000003 +:109170000000FFFF000000000000FFFF00000000F3 +:109180000000FFFF000000000000FFFF00000000E3 +:1091900000000000000000000000FFFF00000000D1 +:1091A0000000FFFF000000000000FFFF00000000C3 +:1091B0000000FFFF000000000000FFFF00000000B3 +:1091C0000000FFFF000000000000FFFF00000000A3 +:1091D00000000000000000000000FFFF0000000091 +:1091E0000000FFFF000000000000FFFF0000000083 +:1091F0000000FFFF000000000000FFFF0000000073 +:109200000000FFFF000000000000FFFF0000000062 +:1092100000000000000000000000FFFF0000000050 +:109220000000FFFF000000000000FFFF0000000042 +:109230000000FFFF000000000000FFFF0000000032 +:109240000000FFFF000000000000FFFF0000000022 +:1092500000000000000000000000FFFF0000000010 +:109260000000FFFF000000000000FFFF0000000002 +:109270000000FFFF000000000000FFFF00000000F2 +:109280000000FFFF000000000000FFFF00000000E2 +:1092900000000000000000000000FFFF00000000D0 +:1092A0000000FFFF000000000000FFFF00000000C2 +:1092B0000000FFFF000000000000FFFF00000000B2 +:1092C0000000FFFF000000000000FFFF00000000A2 +:1092D00000000000000000000000FFFF0000000090 +:1092E000555400005555555500005555F0000000E7 +:1092F000555400005555555500005555F0000000D7 +:1093000000000000000100000000501400000000F8 +:10931000FFF55FFF0000FFFFF00003E0000000002A +:109320000000A00000000400000000000000000099 +:10933000000000000000100000000000000000001D +:1093400000000000000040000000000000000000DD +:109350000000000000010000FF5C0000FFF55FFF5F +:109360000000FFFFF00003E0000000000000A0008C +:1093700000000800000000000000000000000000E5 +:1093800000002000000000000000000000000000BD +:10939000000080000000000000000000000000004D +:1093A00000020000000000001F8B08000000000009 +:1093B000000BFB51CFC0F003094F5446E58709A2CB +:1093C000F2D1F11F21FCF284300B030383071FF954 +:1093D000FA5F00F57E0062167E5471132608CDC137 +:1093E000C5C0B09E8381E10A2703C36956847C3CD3 +:1093F00003D47E2B8458AF3903C30913A8BF4C286C +:10940000F3D7281E1A38CF0D951FEF02A1DFBA42FD +:10941000E87C34F904A83C9F23842E70C36E2EBFD1 +:109420002371F637FAA2F2D97DF1AB570E82D00044 +:1094300070853C32B803000000000000000000000E +:109440001F8B080000000000000BCD7D0D7854D567 +:10945000B5E83E3F73E6CCCC99C94932812124F16D +:109460000402040D3AC08051B19E04A4698BED142E +:10947000D11B5BAF1DD062F007478B35F716CDC906 +:109480002F212410C5AB91820C883E44ACA3A52D9E +:10949000EFBDDA3BF187AB7DBDB751A997FED80E82 +:1094A000FE56AB7EA9F72ABE77EDE5EDB5F63E3365 +:1094B00067269310ECF5B6F1F33BEC73F6CFDA6B5D +:1094C000ADBDFEF6DA7BDCDE8564F645849C843F28 +:1094D000FABC4F22842CCA3E8DD6EFEC4E0709F918 +:1094E000D092495F8410AB31FE3FA06C75B8F54E49 +:1094F000FABCD777C7EE347DDF2AABBA3B4CDB90A2 +:10950000F8B9D1798474B611929A83E573A02C13BB +:109510006226EBB2E3D8CF5222E2388454E86FFAE5 +:1095200008FE9D84B1492B49D27EE5A352A2AF9A91 +:10953000167F136B205308915815FA5C91FA11FDB0 +:109540001E5A4A46DDE765FB937485A454DE0F5628 +:10955000BCB228A68D1DD77EB6FE6675E21947FD02 +:109560001AE20FBE791601806580837E0AA7E8386B +:10957000EEA352B88F8CDFCF89B658E2995980AFED +:10958000AF17C17CC7AB67E3A5BB4D252937217D4C +:109590006D3A3E5D15C44C50385D144F4F503CB988 +:1095A00082162174DCDE8A197B7D02210A00087490 +:1095B000A831F6F6D1F2E7888078EBADB84B3527C5 +:1095C000981FA9A1F8A8E5F39B01FDB07E490549C4 +:1095D0003C08FDD271F7D2F19450FE782A96EDF155 +:1095E000567CCAF1DCE4D2A2A89F92612E21231AF4 +:1095F000E0958EE3684F0C462FD960F54F853F59B3 +:1096000013B3FDD3FF95A037A7ECAB2DC9A5FF1869 +:10961000BEA2E397D14788D4CA11C0B7370CF3BBB9 +:109620005E887D13F9FD99AF9B5D14CF1F9864B4DC +:10963000AF0CE81023C03F76BB2F945D8378A170F8 +:1096400024DC02BC375306ADEF7E8EF2079D833BD0 +:10965000285AEEB30BE0A5424166B2F1322E5CB45B +:1096600043E073FC44FB6BF85846BA7BC32401709B +:10967000FA491A174111A104994948313104B62811 +:10968000C202E09990253AF06FD0F35FDDEF95D8F4 +:10969000AF60DE494EFA4EA35F99F63BF333E8F72D +:1096A00014F07AC84EEC974A97E0C9D26CBF9BE998 +:1096B000BAA34C49D7A18E4F37AD897C5E4750CEB7 +:1096C0006C6A0BE17B22FFC014E9785A5831FAA882 +:1096D0005CD3F42752504FFF899B1485A03FC6E707 +:1096E00022D06F26F01D392E52BAFBC2B9F247AD17 +:1096F0005072F8733CBA7797CD9E1A2B201F33FC1B +:10970000430552B59A6D375EBDCFFA09F2ABDAE583 +:109710005C8F33B27C3DC1FCA4708C10E4FB2871DB +:10972000AE6F592431D00B9DDA1A15E64F3E3979C8 +:10973000525AEC90F35AB4BE105E5E21D5288FECDD +:10974000B24BEFB95908D067E81A33ED80E777F0EC +:109750000F58C7A11BCCF424E820C92611403E466F +:1097600048F841CA7777FAAE22C7EB40CF5D85F45F +:10977000EF299B52ED067D443A98DE5235A22ECE5B +:10978000F2E970D9E5A134ADDF3DEDF210C8B96E54 +:10979000573414A5E5E7CA7E68AE86F69F1411D04B +:1097A000933DA1194530AF9E4F664E8D17989F8F00 +:1097B0003079E105F8AA19BF91DA2CBC1689F55663 +:1097C000D3FE7C5CEEDCE9FB8929D1B262C871E88A +:1097D0005FD1E8B874FCA648D25C4DF9588969316C +:1097E000B73EB61F7B1CFA279C04790675EC7527DB +:1097F000E47C2F08477E59A911997C0C924467811B +:10980000FA2E3560F9CE06B99B79AFC3B8353F9BC8 +:1098100087721FEA1B2A0C2D98B0AEB2FC9FC8A11C +:1098200037D1C56CBF33B2F4EB514C94135615D3FA +:109830006F44369B019E2EA16401D82FE3EA955018 +:10984000EF1F250A17C5510AF848D6E216E08D8E9B +:1098500013FE3C8A84FE11E16C7CFE510A403DF906 +:109860001D279F9D2550BB0190762E3917E6D91DE7 +:1098700064F49D681D9139E37F971433067C43EDB2 +:10988000A7634210F075F6823E78561C39564DC7D4 +:109890005F22307DECD2140BE02141F9DDB443BFEF +:1098A00054CAE61201F8D9CBFAC9EFFF6CB9D184DA +:1098B000EFAF92D85281F6D3E95F4E901FCBCFE73E +:1098C000FA2E6F7DE825844C9B483E31FCEB578691 +:1098D000995024664098C2F817FEBC7561E00912E1 +:1098E000BA40D2E57A464F09E61392481FF05CADC4 +:1098F000FC2AAC4F93FE07F00796D0B203BFAEC868 +:1099000002B20FE46FA31A05F9EB22ACBECD971299 +:10991000D0E56C78E6BEBF4AE0F61CA74B67DB617A +:10992000F2DA2C079EC12E2D60CFBC2A355E23149F +:10993000B24B358A87F34E8D87DED0602FCA11A2D5 +:109940008E16D1F9AAC08BB45D17D09DEA9721AECF +:1099500087EEE67A6890EB9DAD6D06F2C55D6DB55C +:10996000F8BCA72D8CEF77B4D563B9A7CDC4727FAF +:109970005B139677B64599BED2122857BBA699437A +:1099800002DAE169F367B4CB2EBF798C40D9FA359E +:109990002B53D94DCEA7FDB4FFC2B4E8BCBB8ACDD2 +:1099A000669182F0E8F623D63394BE5DB3CC6302B1 +:1099B0002D3F25FC34D505F5E7B1FA89F6DFB3FA7A +:1099C0001ED20CF822C6AA53E081C9C743306F8A61 +:1099D0008FAE32DAAE6EF2ED7E0CEDE8B3ABFAF498 +:1099E000C6F3CA0993CD97341CA528F3020F95132B +:1099F000F272FBFBA655C7F50A9DCFEFDA472D287B +:109A0000D3F9B1FEA95EBACCA1975E145C0CEEF955 +:109A1000A707F7513EDFA2A6748A5A2CE48B42ECCA +:109A2000315867FEE694A550D2F61A4FE03A23600B +:109A3000344E623D950B06B387787D57CD82140C6A +:109A4000F1CFA06C1665DFFB2326F6FB24108FBE3A +:109A5000DF196F54D93A3655E08B67F97BDB8FF805 +:109A60004097D1DE797A9CFAB6FD6FD71B174EFD71 +:109A70001476ED24E749646A1750BBED7150408EAF +:109A8000F9DE4FF49C797A35B65E274B8F939C1E96 +:109A9000B7E7F57B4B5E593E2892FA05604738F4EC +:109AA0000AFD7F5ACC9B63DF94454B72CAC5667929 +:109AB0004EFDA2FA5C7BA8B4E9CC9CEF539B17E463 +:109AC00094A7B79C9F53DF1D6ACC29FBC35FCCA929 +:109AD0005F195F9953FEB4F8DE9E37FFDEBCF26477 +:109AE000FB29E572CD7E3FE56B8B63C8DF2B22F847 +:109AF000FE1F568926F0D1DBFBCEDA2B0985FA69E9 +:109B0000473ACD92CC1211ED7E26BF454B40BBFAB1 +:109B10001E21FAD58B21EE7021B5C700BF79F29DC9 +:109B200038CBD2D8F20C91E949B282CDE7A24F2EC0 +:109B30005281CFBC7E310AFEB6D795D04BEAB2F344 +:109B400099C2ED511BFE2564F4E99341B473D10F22 +:109B5000BEE76B5F0CADD1C6C26FF7BF45139B125A +:109B6000D05EA7FAD8619F6C9193AA731CBBFEA923 +:109B7000F03BCB889F66FC254A445ABEED2B22FA67 +:109B800049FD3CDED0C7E30DBD106F403D12C267FA +:109B9000FB8504D779E037BE4407AD1F08A64DD03A +:109BA0001F97773435D4D2F90742662844CB8F5FAC +:109BB00034B37DD98560E2A6117FDBEB57169102A5 +:109BC0007AD37EFAC3629E5FEECDF18B3C46AE9FA8 +:109BD000EE0E954FE827BD0E3605C54780FA93E196 +:109BE0003A7832392015BD1B5AEBB06F968B12D2E2 +:109BF0004392BE1A07FB77ABC0E4B7FD7DB7C8E25E +:109C00004D23A28AFDD566E8CBF0A5F91BAD14D88B +:109C10007D0289CFD2C7D25173A5905FFED278D88A +:109C20005A1C0E817D617506201894B103E5D22B74 +:109C3000ADABE9FB4EEA074861B0B7B5E3F0DEC56E +:109C4000ED23558CB58B2CAE21C03AA5FE153EFFF9 +:109C5000D2F391A4F9A31067735DA084F792B17455 +:109C60007B82D36D39A79B0C748B64E9D6A731BA7C +:109C7000D15553906ED78A4CBEF5C90995D18FB591 +:109C8000DF0AEDA91CE9D7166C9E09ED8F4A849A6C +:109C900087A45F4E61BDFF6E3CE4C3E5F753B8C0D7 +:109CA0008EFC0583CBEF1AD1FF12708DCB6F25CDC3 +:109CB0009F8ADFDA6DBAFBA2CDB04EB3F3A672B6BF +:109CC0009AF1A15807F416B0DE0097AB03F2C87FF3 +:109CD0002B5D32F25A1D5C0F76538BA618182F9409 +:109CE000AC233190133E813C48E70DBA0DE479D79F +:109CF000BECECBA946275EC9C3F4425EFCB9851A25 +:109D0000853A35015AA83F897E5BC235EAF4DBF219 +:109D1000E3D11F89B97EE587A4AEA8DA187FFEEFEC +:109D2000B43DA7CBB3B2F1E8FCEFD74B248EFA4D8C +:109D30004D2A389F8D839EBEF930AFD9CB0629BD01 +:109D40008A25B6BE881644FD77FDFEE775D9819F4A +:109D5000165D3C0EF1CD7CB83378B2DB51B5E32E05 +:109D600019DB7EBC765DBAB80CE071D59304E07265 +:109D70009D149B22D1F7EEFDAB53D4C2A2FC936499 +:109D80007633EF3F0B3F5DD31C7E72F6A787F75407 +:109D90007AF8837D9D3D10BF7A7BDFF6F5A02FDF3B +:109DA000DDE93600CE969D7396114AC735DC0EB2BA +:109DB000F1FFF6BECE2985F61D32F897FA97633C7F +:109DC0009F58B5D27C2CCF6EA1EFBF027C535600BA +:109DD0008E53F0C905D2583EB9807C067C42E73BE1 +:109DE00048E77BB9CD27BD65C8F763F09E948EBB6D +:109DF0000BF07706EF76BBD3E413CA175F93E8BA8C +:109E000032E554E0020A57A08E60FC4B3978B30566 +:109E10007C62F73B863F389DC6C0B96F72709E8AE0 +:109E20003FD456C9787D2121D5B2897A54552DB5B4 +:109E30009A8E2F517D6251F8A4C1F9183FA4820E69 +:109E4000E38AF42F05F254D54D94F35EEAB482DF31 +:109E5000E5AB1773E49352912BBF64CD6A77B17E63 +:109E6000131002555B151C17222730AEAC919407D6 +:109E7000E6C3E3D3C09660476FADBF8524793B69E5 +:109E8000027F4E262C7E0DE125B0AFDD64E2FD9809 +:109E9000FC7142ABA2B8DF33D9FA44938D371D78F9 +:109EA0001FBF9D4CDE74D8F5F7826C2ECBE2DF4CE1 +:109EB000ACC1385F808861B0933B433FB4C045EE8E +:109EC000812AE8DFB0F5490C16C75A2719D8CE12F7 +:109ED000165B1047759BEAA8A4837EE2FB3DC6E4AF +:109EE000E25D6A286EC25CBC5CFEAF94A307813F52 +:109EF000B7549241C9B10F242BD4AF807E6B573138 +:109F00003F61DEB78DD575C02F49F5ABF39CFD32AF +:109F1000BFB5BB2D81712A7705834735E228FF6CD9 +:109F20003E23B54C6EF5D6317B4D559344A74FDF9C +:109F3000E0E329D8B7C8F2994556CD033A32BDF8C7 +:109F4000087D32BF29C1E287A1DCFDB30C3FD54EAD +:109F50004E2E26DA0CE135C77E8031CE3EEF7312ED +:109F6000F7C378BBCEB6DE0B5F77C6E1E430C22F15 +:109F70006BF4BD031EFBFB64C7392E89A705D751BF +:109F800049C8E1A3DB40EE51384EDC3122AFA4CF0B +:109F90004B52BF9467007D78BD137750D146FB7953 +:109FA000B1EDE39C38A2284FC1EF97AC78415EEA4F +:109FB00018E7121E5FA41E87FC55BF137FCC6FBC31 +:109FC000E893A214C8A97F7E4E423B763C7CAF0C3E +:109FD0002D4DC8A5D9F28B1189F999B27109B4BF79 +:109FE000A449120BC569F2E3E62B43CBB19F13B72B +:109FF0008FC8519C878A7882791A7EE8E70519F61E +:10A00000774F05F728CF0FB0F1B683F773E2F61458 +:10A01000817EB5D4F304FAD35A52A6897A9BB0B89C +:10A0200053D8D803705EF4C9CFD595F3B2FDD9FDEE +:10A0300007F2E6B935CCFD6939DD04EDB57A715228 +:10A04000F30CF079DAF0D9787EEC3969C278D66F02 +:10A05000DBCC845C401FDACFAB9E647183AB5CE9E0 +:10A06000B24276683E1CDF686D48C80EF96DC3B118 +:10A07000ED14F4CE87E3774B281EE8B8BF9347FD75 +:10A080009F665CC043AD9D3F01EBBF6BC33922FAB5 +:10A09000BD5ED2C7E2281F80FEB3F73365F5CB64FF +:10A0A000E302C7FAD4E9F71C3B99EB9B20F503C008 +:10A0B000BE727E77E84F15F41AECFF077B587C3EA2 +:10A0C000E845BF410ACA6FA6F3E083FAEE2A81EDA4 +:10A0D0000772B94DFF9E817D03B93EFC00E0EBEBBA +:10A0E0005490C23CA91DF07519F9CF4CB54730AE5C +:10A0F00019EFC35079127597BBAAB688D98B85E33F +:10A10000F5DD6DE9A9B26B2CFEBA5D3CDEFBC9D270 +:10A1100018ECBBC862EDCDB83F31C9B87F5FA580F0 +:10A12000F1E42E7875DE58F8BFC5E157481CF7C535 +:10A13000E93CBE05F3906B191E659DD9B97D736727 +:10A1400033F8C7D9779904FC2D605F7489750CFECC +:10A1500049EEDFD870BB4204E9647FEFE1F3CA9FA8 +:10A160000F21B121D82773EB8B17821DB68DCF8FAE +:10A17000BE477B86CE6F9BECE04B7B7EDD656B2D17 +:10A18000A0DB07946EE0378E079FA2BE39D5B98E4B +:10A1900077C9CC8FCFF207DB4F76D5307FB4438EB3 +:10A1A000ED92C1DFACE841FFCACEDF500D3A9F739C +:10A1B000A87EAC637268731949D451F8BD9467D511 +:10A1C0000894471E8532AD477447D9866373D960BA +:10A1D0004873D8F3DDB3EE39E606BE0B12630EAD5D +:10A1E000E74A5D81F2CE158C9218C4CFE5A409FC34 +:10A1F00043EA4835E861454D98B81F544BCBF4A16C +:10A20000062DD240FBDBFC2789E1555B9033FF2113 +:10A2100059CCF103ECF9AFCC8BB7DACF97C6A1CF0D +:10A220004B97B871BE5D95E107C0EE7B1AE8539677 +:10A23000439FA7E5B2B1F479E992398CFF9A0ADB22 +:10A24000BF2BD5D7A6CA0BB370119EAF81A432A085 +:10A250009FD16698FF199CBE039CAFA4666A0DD37C +:10A26000A995CC8DBD087C31183CDC0E5B52E51BFA +:10A27000C35F68A7EDFA39FF5E2C55785EA5F3B988 +:10A2800073D98C2288B77E240B39F2CD7EC27E1A18 +:10A29000AC83BD6D2A3E4FBC3267C27DD7EE36928D +:10A2A0002357BB7519F58B5C2C774D81F8D379C694 +:10A2B0005E09E5A119C27DF30A6301E47DBD2D0BA2 +:10A2C000B6FFF1B6939F6DBF54329326D82F679097 +:10A2D000640AE2AF251A09A7987823B2032F74DE27 +:10A2E0007F047C4FAF1B6D87FDA1EDE6DE76D93193 +:10A2F0006FCA7D5FA8A1E3DEF5FCAC05CE7CB38B15 +:10A300005D3C4F2EC2D60991C3A14276B64D8FEF68 +:10A3100052BCD4CD42B980F930E53750BF9AAE87F0 +:10A3200087E03DC5D30FE5A8E082FDA596B00BD62A +:10A33000C78B3CDE2610F59969C83FFA1EE09FEFF7 +:10A34000AEF772FED1F7005E7C361C59FEF1B90AF9 +:10A35000F04F9F2B1670D17A9EA1788A7AB464FA56 +:10A360000DECBD9DEF41C17C11F8A5526078C13F55 +:10A37000D81FAE65F9660B5D0CDFEE8A91E1ABC1CB +:10A38000CF8B6926F0D1F44A22FE23ACAB4A11F7F9 +:10A39000F7A757760C37527C7F48ED77D8F70BD468 +:10A3A000A7848608E62FA03D0F6E16944BE977D060 +:10A3B0000F15F1B400F34DB4118C878762298C47D7 +:10A3C00005E256BBDB816F438963FE4465C5DA1540 +:10A3D0001057103A5A4369286F48A4208FC3A877B2 +:10A3E000EB008F61258B418F9657283A98889E1AEB +:10A3F000F67D3A7503E1BB76439C2955394E2E759F +:10A40000D8F9DE8AD88DD06FBB2BB610F0E4AD65DD +:10A41000F6BDBB6210E5D55D2E6ACFD3B26F49C2DF +:10A420008CE23EEDB7C96A87FC59E662F2C15D472E +:10A430005D9FBA2C9F6DE7893383E602CFB57550D7 +:10A44000CFCBE2E16403E7CF38FA9D3EE04FC68F01 +:10A450004B61FCE915A3C3A201F23181F8A0EB0E18 +:10A46000F391EE7219D3A0DD5DC54A33D81F946E07 +:10A470002F13C8771149F62F08F331F7811DF11F0B +:10A48000B008697F6A5F22B58B8E534CF16484619A +:10A490001E0FA59E8C40BEA61A85FD7F5F7A4FEAEF +:10A4A000155A3ED2EC835C3CE2EE4F5880473A5658 +:10A4B000D82428A70DC46B8CC5834A83AF221E29DC +:10A4C000BEAE0078B56583B8BC7493EB1339FEBBA0 +:10A4D000DB69FDEEE7A430F8DB997542E83A71E0FC +:10A4E0009DCAEB317611CAAFC8E4F463D6CF66FAE1 +:10A4F000DA8EFBD1F5743DAC035967EB69B271A5F7 +:10A5000006C88CA57828DFC0F2CF6C393A9DA3B677 +:10A5100082A41B946A94A3A28B3EAB57191D202FD3 +:10A52000675E99F8658240DEC6CBD3D8BEED321D9A +:10A53000FC63C12C154E9E35793FDA8623D4929B5D +:10A540006F1158E1D847037A8473BF7BC6ECC3B15F +:10A550007EFC5C3FD1856138E5D3164F7288EDCB28 +:10A56000FFBCF16794FE5B8464336C392ADB9F6F18 +:10A570006CA2F5B7F89321D88AF66C7901CBBE2A84 +:10A580003B5F34A582EF70C86530FCA7075390E7A6 +:10A59000249FC7F7B7EA9FD0A98E25C3E9EDC887E6 +:10A5A000D45F48407E56A67E2CAD7E0EEACF1509BC +:10A5B000C8D3BE30ADEFECCF18B404F61DF17F6206 +:10A5C0002EEBEF04959D23E87724707C6254932E44 +:10A5D000A8379FD5B3FB999D4EE1BAB2FB9B43D2FE +:10A5E00016AC5B77FD20DADAB3CD18791AFC965AEF +:10A5F00031911030658340DE69409713B091EF09C7 +:10A60000C72DA837FCCA5B6ADAA1B7B6D63238487C +:10A6100084EFC7CAA63191BC37071BD0EF0F801D4E +:10A620008C72CFC4B2DB60763195D3C3AEB2EC7B13 +:10A6300005F25BC359796D8F734AFE9F643D63D405 +:10A6400087F4E8FD8D80742AAB8A56CF00FBE7655E +:10A6500089803D643546AB010EEBB73E1DF3C4E483 +:10A66000F8B9973AE6D7DDC6F62D835166BF9D2827 +:10A67000CB8DA7EC9762BF86F908539A63B07E6EC4 +:10A680007B5530201FB76C5514EBB7D289621C6420 +:10A6900003D313B8AE68BD5DFBA6233C72E9CE00C0 +:10A6A000CC7BD7861913E65D6E6B23E11A879DBDBF +:10A6B0004D1E5581DEDB9674E885E2BB4521255CA5 +:10A6C00043EDA25D4DC654FD53F5BBD2EBEC77963E +:10A6D000143BE15A34B6FFFC7D72AF76B700F169E6 +:10A6E000EF69EE8F0FADEE09C1FC8353CDF9B0FEDB +:10A6F000D26E928A52791CF4998FC37A3D7353CFEC +:10A70000528DD23BE836E78BB4DCD8EB5ADA4FD720 +:10A7100067F00CF366D8527BBDE3DF963E0BDF217A +:10A72000C7EA7C423EA75677415E4D2B8F1F0CB483 +:10A7300019E510E7D9DC568BCF290AB31F30F5177E +:10A74000F861A382F4A980E418B02BE411A4D3EE3D +:10A75000453AFAA581086DEF9043604B005FD9ED53 +:10A76000883C684279F72C5A1FECF91A3A8E53BE8E +:10A7700087A8A1E2C827A5FAAE5A01FBAB39310C74 +:10A780007254D2C2A8EF64C534C01F21550AE6191D +:10A790005C2C692CFFC534F6B23CEFC434885728D2 +:10A7A000EE5C3B14F814ECC93BB9FD09F9FCF0EC84 +:10A7B0007659452077ACE7251687934903D8933B14 +:10A7C000041DD7634FB9B7A11DEC2CBE6FB67BDD5E +:10A7D00091665C87667A8AECF4A3F56876FEB47CB1 +:10A7E000406176D10E81E1CFBA90241E04B9F5CA3A +:10A7F000A6A2CFD1FEFAC333E6C35C075F71AF5E9A +:10A800006D40BC455C073E5DD172EDE67D642C1F5A +:10A8100076B691FB00FEE2E5F521E0BB626F14F332 +:10A82000C55628359DBD940F8A1556BEB367392B82 +:10A830008B89695056952F762EC3386A6C05E0D304 +:10A84000DC4F04D9198FA77606E8C63B150EE72D15 +:10A850003C1F932405A73EFEBAC2F049EBB530BFBA +:10A8600095BEA7F4DA09F605C48763FF2058B4FC47 +:10A870005D6E6FDCA230FBE24E482CC480FFB99DB8 +:10A88000105F2A9618FFAD55162D853CB5621EC780 +:10A89000CBC245ED78A003194D490EBB7E0D1F7F3D +:10A8A0009D64AE511641FF5C2F50382E5A0CFA971A +:10A8B000C1312DF603B4A3E97CAF837AE3CD37D35E +:10A8C0009EF69069EF98376D7FCB44ED7708C6B65A +:10A8D0002580AFDB45E443F0679CF926DFE1F4DF38 +:10A8E000CCD78BFD7E7ADCBCCF69D7747B72F92F15 +:10A8F0009FEE9B951939FE657EFBE9F1E87DCE7DE3 +:10A9000092E9F1585E399E53FF838D0B5A9EA1E365 +:10A91000485F5A1CDB6770FEA4F4D9A944911E74E9 +:10A92000DE774EC4275D4D116C5FA0DDD044ED761F +:10A93000E4E509D8CF04C793AC911CB84B44D6FFCB +:10A94000C19E754B414EE57FEFF650454FF9BB7701 +:10A95000EACAA5CBCE83EF7ACE3C65CDC82B870B58 +:10A96000F64FAC754B53CE7801F7EF5AD3D5454E21 +:10A970003BFEA74AAE9FDFD9563BDF19D7E914EC5F +:10A98000FC44CB5D057CABCF46BE3DF1CADF3483D2 +:10A990003C914BCE5C005B194FF3F9360454D90758 +:10A9A000F2F03C82E753761F5F1D2238CF1ECC5B4E +:10A9B000B6F5BDDD3FF8FFC08F4A88F91FB65F27A7 +:10A9C000D72E40394CFFE26780DFFE9BCD184F79D0 +:10A9D00089F39D54E7C57D7E59A3F0E6D8D304C71B +:10A9E000A7367E82C5874C5215C114D58C5D727B0B +:10A9F00084E5A973BBE425A0AF1C548E3BE1BBF3F7 +:10AA00003CDBFE4B63ECF84E97A19B602FCC67F2CA +:10AA10004E6C4F63FE70B91E2398FF3E57BF4FA187 +:10AA2000FD6EB935ACB4D3F21B0A8B736C29D3AF6E +:10AA3000B806D6C1AD2C7F4CBCCFD0A19E2F1C7EBA +:10AA400008F44B65DD88204DA0A777CD1F11143A7F +:10AA50007EB79FD1A152EFCDD147C3E99945703E52 +:10AA6000407133BD769BC2FC5BBB7D5F5BB81CE86D +:10AA7000D9D9565F0E7296B88BEDF84B2FEE0FCEEC +:10AA80000DCE07F8ED76F6FBCEDA958BFA1CEB9639 +:10AA9000B8593EEA6DDEDC7A5D7525F373EB3179EA +:10AAA000765B80EF37F17AF2BC605E3DB1603CC509 +:10AAB000574BE1CDE16F0AB753FF464604E0A74A82 +:10AAC000799CF37CC1069F9BC2F92595E56DF656EE +:10AAD00032FBE2638AA789E33246B9332EE392A3BD +:10AAE00098E7A5048D1C784ED5CF78EBC72E4BBFC9 +:10AAF000F5C4124EFBCACDD6CD2C375B87A04620BD +:10AB00000F349FAF5D99FD9078AD73BFEE625FC368 +:10AB10005CF722982FB1CF9559CE738AD4DE38C70F +:10AB20005DC0DEE877A54290376395D9F6465DD1E2 +:10AB3000AB0EB87E9B6767F4733BA38FDB199BB9A1 +:10AB40009D01FC077189FEBC79DACF9E3CFEFB0AB1 +:10AB50009FAFCD6F039135BA531E15F8AE7EB3CEBD +:10AB6000F99DE95F9B0F0722B7A8ABEB0AB4E7FC9E +:10AB700047BFEBB9DF199E35917DCF87F76A9B7F81 +:10AB8000F9F8FE45911CF80A7CCF81EFEABC75E22A +:10AB90005FB42C07BEABF3D607FDAEE77E67EBC212 +:10ABA000C7F31FDCA189D7834DA75632D8BC06EC6A +:10ABB000D21605F56DA7FADA14D847953C7F98F2BE +:10ABC0007A29D8A77D5774D0CF9DAEF0B118CA238B +:10ABD00085EB7766B76D5F51B2007866EBAC8D7828 +:10ABE0004EEA83156B30DEB1F9957BF7AFA5FD79A1 +:10ABF000BE7D4F189EBB6FFFB601769A6DB7ED58BC +:10AC0000B718EDB61D9E915F82DEEADCF48F9DBD24 +:10AC1000D4BFDEE162E56737A5D16EDB218C5C81B4 +:10AC20007ACDF57A6713B3DB3ADD68870CA29F64AF +:10AC3000EB555BFE0F01B3029C3717B6DBEEE274F7 +:10AC40001ECAEC379C9CD06E7B88D365C863EBC76B +:10AC500017D06EDB6DEBFB4D3F477DBF9BEB734F1A +:10AC60000DE9F206211F82C563ED7187DC761CD6E3 +:10AC70001C8275F5909BE9A3F1EDB5E86EA897ED00 +:10AC80008F60FE43A6DDB8765AF4A142ED76B9C2D4 +:10AC9000CFD7005ED665ED33277F3EC6F9E749DEA4 +:10ACA000BFFD3EDFBEDA750AFBEC49F77FB17DD60A +:10ACB000B2E0F7D782FCB960B1B116C67731BC8F6C +:10ACC0006C7ABB93DB59CFBACBC6E787AE5AD6BEF8 +:10ACD00040BB9F4DD4AED355D83E7B89CB81DFBAE4 +:10ACE000999EC8B7C3767958BBFCF759F928F27614 +:10ACF000A7679F65F452590F5B37541D0BE7C07A65 +:10AD00004935B3F35623D3563AE210F7AA8CDFEC59 +:10AD10007643B7327DF6BC1C7D07E63D5CD73AEC46 +:10AD2000827D039DE0F9F04CFF7ED63FC5C37DB820 +:10AD3000EF1D5374B08786C6C147406579CBF7D8FD +:10AD4000E76B64FAB7381B1FBFF7D61101F2103E4C +:10AD5000E1F326FB0F1C3800F173186246D6DF269C +:10AD6000AB2EBBEC32FA7E57869F131EA043E586BE +:10AD70001101F6A5A8BF6ABA406EC8090FC41B76B8 +:10AD80007CF2AF0D98D7192406F073259C6D053B16 +:10AD900033A6EC11AB315E6AFA1DF8FB4F4E37BBA0 +:10ADA0009F72323A0D94DD7495F17B6568A401F6CB +:10ADB0007D605F0C963EB47739E8215D71CD0B0262 +:10ADC000E6012818AFA1705B67629C86D975FD7E8D +:10ADD0006296813CBC95ECE96065C4873DDED39703 +:10ADE0002868970EDDAE3CC0CE61C62CE86FF7BA7E +:10ADF00018EE3FBA820901F2C1EFE17284AC127021 +:10AE00003E019DED67B4A657EFE906BBA924341FA8 +:10AE1000ECE67355369F0CFEF6BF4A9CFA3DD0FC1B +:10AE20001CE62F987737E0B9D0AC1FC9F1546160A8 +:10AE3000BEEA596AC68F3C4B453E491203E4E81509 +:10AE40008731DE16AA2749107DBB85B4A5A0FC601A +:10AE5000F82E8F8DA03D40E9D3E00EC2BEAB8E7AB6 +:10AE6000E04B6AAEFCC8C7E33D2E869721CA17D5D2 +:10AE700040DF968400FB895F52197FD8ED87D68D1D +:10AE80000A847E3F6363AC1AF8F1625FD45431CE1A +:10AE900012AF05BEC8F06B752FF2AB8BDAEB203F1B +:10AEA0008397AE30BB299CDD7CFFCE6C66F30D84AE +:10AEB000589C5AD699BF40D7FF9754879CB2F7C386 +:10AEC00032F1B77A11E90A616EA09BFB7C718F3376 +:10AED000FF626BFDE9C5DF06E551E4DBDDC6BF3F80 +:10AEE0003F07FC01530C8359AD56B3F2C0921AA42C +:10AEF000AB5D7FADDEF8B74EF8F425B43F071EB763 +:10AF0000429CAE801D32FEF82915E27AFD773FA5FE +:10AF1000425EB63DFE83502E3CFE8D2A8B07BC0B55 +:10AF200076A1C259A7B77A2D9E77CE87C76E1777BD +:10AF3000C5BEED845B0985C7896B8E789CFC7ABAA7 +:10AF4000F1CCFCA72E9028AC1BB5FAA8BAC6D1CF7D +:10AF500026CEDFD5BAB909E0CA87FB74E39DE38D3D +:10AF6000FBE0DD2FE68C7B203BEE0118F700B7B34A +:10AF700025C8832B05FB674A239EEFA5F880784000 +:10AF8000E78695E40DD80FA428D4212F5B8D926716 +:10AF9000617F25A6C52DD86F089AD16F52FA940FFC +:10AFA000EE6957008F1AF30B15C2F22ECBECFC386A +:10AFB000CEAFBBFC641FE37716577E03F43AD0D3C1 +:10AFC00079EFC40C80474178F2F1325E3E7930CAA5 +:10AFD000D693C760FB5B6AEA8A06D0236A90843DF9 +:10AFE000285F2C8C6B52775B3F50CDF212A0ACD611 +:10AFF00010763F876C0AC807352C9FA08C7F770599 +:10B00000F507506EABB176E88F1A36685F4CE1DF1A +:10B01000DD15EC3BB56BB0DC378DE541404E29E4E6 +:10B0200041F44D63790FEE0A960761970961F76560 +:10B030006C11BC61DCFF9896C8C987E8ABE6F907DC +:10B040009F3C105AE5D09F7D7FFA7E08F679E65640 +:10B050005CDB05F1423BAFA5CF9508155A77F9792E +:10B060002D63BE8BA485E9C76408F474309AC03C94 +:10B070000C8A3303ECB37C3C76CFEDC9E071CE672C +:10B0800088C7CE3C3C76E6E1D12EDBF3E89C16CEB9 +:10B09000C15F67067F0B73F0D7E97F08E57227C7AA +:10B0A000A3E2A1782C87BCD1B03A515EAE8FE7897C +:10B0B000DAE52DDACA22F0DB7D993C5181FBB349F8 +:10B0C000CC0F0D72FE9F03FC4FE19CB22AEF5E1580 +:10B0D0009E173A4B8AAA1EBA1EDFD677AE67E7BC28 +:10B0E00073F721A692F008C469ECFB13FCC4B16F9E +:10B0F0003889FD08C3C3F4D73D726C0A8CE38B26F4 +:10B100004C3039DD9A65414A40306A35FC4B10F7C6 +:10B110004747A5626C86FBA5B8D56BC0FE9745DE98 +:10B1200064796C61B8F7A30E986011EC0B590DB0FF +:10B130009E2B4CBA5669BB29CD239807B085DB7F7F +:10B140005B5C516EFF71FA83BD40E1EDF0FDE418E8 +:10B15000F875DDA52528D7EB3C76FE035906B456D5 +:10B16000EA993EA47AB0CEE390D76E3D690AC6F85C +:10B17000EBDFDE377E66656C11CCF391622B24F039 +:10B18000789B9BDA609EE27051A65C45CBB32205AA +:10B19000EF31EA5E699E07E33E22247F751DE8C316 +:10B1A000E302CA33B792FCA288E325BD4EFDF0C886 +:10B1B000C1D3D5B731D4773DC63578DF4456DF5E8D +:10B1C0008371A502FAEE4B9E09F4ED23A7A927325D +:10B1D000E3DFBD2667FC07A15C78FCAF7B1639F482 +:10B1E00064C8D69331CCB3CE87A727F4D9E8CB1B5C +:10B1F0003D19BD75A3A780BEECF98CF4E5C6ECB88B +:10B200001B615C3B0F613C3BC37EE6E7FFCD5F19F2 +:10B21000ED86F6FF56412CA988E2B3626D6A35418E +:10B22000FB85C98D9A98CAEEEF6178B5F3F74E1792 +:10B230009F93DD4F3D5D7CD9FD8E9D6722C7AEB6E5 +:10B24000FBEF14D8BAB70658BC6316CF63A8A66C38 +:10B2500004FECD010FF3033B3CD1FD885712C73CE0 +:10B2600090078CE04F21DCB1B9A6D18B79603CAE60 +:10B2700005F93E4E3FF2F14C7BF331683FB33AF8AB +:10B28000226F5702EDA85CFDFE4472B5536072D583 +:10B290005AF4E9E4EA30E78B733CB16118471D5872 +:10B2A000F9C55A03CC9C4175AEE080FBEE08CE7B1D +:10B2B000E640706513E8B27F98B1807567967C812F +:10B2C0007E926B662CC88923F3FCED733CE64FA19C +:10B2D0005F72777072790493AC67351216870A88AB +:10B2E000789FCC5B20CF212E13B5502F4C69667E02 +:10B2F000C875B2F92BA7DCE9FA4FA9A5909FFD2AE2 +:10B30000A74397C2E5BD4CD03E9002B351DE0B84FB +:10B31000DD4360D7EF90636F41BFAE5A965F6AE737 +:10B3200093BA2B583E69C68EE2F9A4605FA01D5502 +:10B33000966747E5E593F695E5DA4FDD731F3A45E5 +:10B340003EE920CB1FE5768AA25A2CBFD460F9A52E +:10B35000EE601CF349FB783E69FEBC7FC9F5D61E42 +:10B360008F79D2C3F4578EDE347FAF219E432D4CAC +:10B370009F4D8FA61A187E999ECCDCD3455E2390F4 +:10B380005F64D367EA956CFEAE8C1DBB5900FF5617 +:10B39000A5F612EED58F67C7066DFB2BCEECAF205E +:10B3A0009B57C860F4B6ED2B451D6C80FE4888D9CC +:10B3B000E9D3787B25C4BEBB585B3200F8AF66F892 +:10B3C00006FC0F00BEA17D88E1DF2E136EC76EE77D +:10B3D000762C7D9F438701B0C3309EF95268954318 +:10B3E0006F0EFC6921EE7BCFDD55DA0DFB82038BFE +:10B3F000981D3BE01AF933EDD830C69BA65E397232 +:10B40000CCCDF0C8EDD85C3C762FEAC1B8C7183B6C +:10B41000F6BF188F765EB48D473B0FDAC6E3A9F20C +:10B42000A23767ECD8ED3976ECE6592F63DC6C3344 +:10B43000E091DAB1ABFB281ECF073B76F0B4EC58B5 +:10B440006ABF36411E51299CABA3C3940ECE1F8602 +:10B450007D616ADBF2F34ECC9EB5EB4FE576ED6C89 +:10B46000EED7C17D1ECEF374B65D4BEDCD6BBC60E7 +:10B470006F5E99001C13375D5F9077F7564DEC5A5D +:10B480002FE573F5CA38FAEE2E2D66C256EB0397F8 +:10B490009A2D5E5C47ECBEB97BFFF61E940BA5357A +:10B4A000231624B7F8E97A2D74EF52EBDCC69BA083 +:10B4B000BF52392C00DF941A85EF1F5AE7657129B6 +:10B4C000BA5E6F85FA17CC35BFCDC64B085F063B19 +:10B4D000D622A370AED15EC776BE20F5871A808EC5 +:10B4E00095269569F47BD5AAD176484D33AED445DF +:10B4F00098D74C62342AD58EF5CCF305EDF53CB3E4 +:10B500009FF1C1EE45247103AD5733383A4D85F2B2 +:10B51000ED2F6B2B20CE75907D3F309F7EA778A8B6 +:10B520004B26CAE1FB8187D9771BFEDD0F7F34CD27 +:10B530008038CDEDA3BFBC16F4D6C38C3EBBDB6315 +:10B54000E2428A97D9A987C59980372FDBA79D9DAD +:10B550004C8A869F4F6231D08BF07BA45222E0F759 +:10B560004CF827F57BFE4FDF57BBADBAEC3EC1EE82 +:10B57000610FAC0132BB95ECF5D0F1ABF6A7441FDF +:10B58000C54FD5466301A8F033932971861FCAA31E +:10B590008208FD1C4C8810473D637F525C83F67E19 +:10B5A00022A77F627DF362D8B7AF4E92A720C5E491 +:10B5B0008CC1F430B0CB59FDEC7E4EA3953DAB373A +:10B5C000B267D22B21FC8F78997CB5CB35C9840822 +:10B5D000FBD3556112067457B5869FF252B86A368E +:10B5E000129DD29C9CB1312CC27A1092C9A7607F67 +:10B5F000A16A230943FEF137289C900728EC4F0FDE +:10B60000833E383349DFD3FAC2C1A408FB7CF97802 +:10B61000982C9CCF7A597C39C5F9CA2ED724638DD2 +:10B62000904F5945FDB56AC301E77E06E799FB7364 +:10B63000E13CA395C3D99A407884A1D176783F3B69 +:10B640000FCED9E39CB73BCCC7B7F9CD15B5504E5B +:10B6500095AC607A873E595E581D49CCA2E5170823 +:10B66000A51AED5F5B113F00F1DB92B0310CF2BB2C +:10B67000A429EE05BD459A06901F4BC3AC7D6938E1 +:10B6800089F7E0C1C25C1476B40FD3F6F47B439320 +:10B6900081F82D51C302D0A77A0542421A5618A646 +:10B6A000C9FB81B8B2F69BCF3F07F7C0F9C2F2479A +:10B6B000CEBCD71242CBD4AEAA8C31BBAB9A97F199 +:10B6C0003B2DDFE12C83E1B4C2D11ECF45B1EFC0E9 +:10B6D0009B60D7B9B99D49E4858757DAF708C27DE1 +:10B6E000922491803CB694F6BDA3788711D99FC867 +:10B6F000E4B5E1BD7D29D30403920C96E7BCAF4FBE +:10B70000A5200F1AEEAD5B5A3F16FEFCF1E5601264 +:10B71000F769EEE4E74D89F4E330D0BB7459B428FF +:10B72000651490C7447E33D35E187B0E5DF3693990 +:10B73000F7AD69AD8F24202E96ED9FDD8740089DE3 +:10B74000EF14C027C1CD72AD89E5B117AFD01B8012 +:10B75000BE5A933E5F30B2E7D3251F5B5FD49D6135 +:10B76000FE47C551345E4EBCB2E98C3B40FF2FAA68 +:10B770005F087EA0161ED1AFD6605E297229CA93DB +:10B780001EE4335B8F68D2C106204B49D308DA8DA3 +:10B79000D5B281FB235B9A587C643C3D54CECFCF1D +:10B7A00056703DE25F91171F51B93C3F853EB2F59F +:10B7B0008D8D078DB073702ECE3F63F4451E7EEBEA +:10B7C00001BFF639FF39D0DFF672677F3EB9B03E70 +:10B7D000B1F1788E8FADBF3F82D080755831393B43 +:10B7E0007C382DE13ABBDF50717D6C12D31EDCBF7B +:10B7F000FC29CBE7DD44181F7BF8FE01F50BD93996 +:10B80000F51B08E62B6D6B6BC6FC83EEB658393B17 +:10B81000AFD382E59FF8985F52323776990FF45B89 +:10B8200088E9333B7FA254637913997C896A15EDCB +:10B830001752B100C7CBCF9BC8C2CDFC928136C294 +:10B84000F32558DEC4D0223288E70F6B4D13CE3B70 +:10B85000F8BD769E0CF50440AE68ECDCD48957FE4A +:10B86000B519CE9DDCF505C657EB7DEC5C5BA03EC3 +:10B870006C3E1DC194A4389C2F315BC2E603B41CFE +:10B88000807C261DE340EB611E5AD86880FB99DC62 +:10B89000A68AFB27BEA6580AE4952794C0F3E2D4F3 +:10B8A0006E6CC67C7892BA18EEA91B00238FDA431F +:10B8B000B7FA8E75C3BEAA5F64E5C4965FA09CDF2D +:10B8C00096C90323A81FF1BCB9989DEFB37C7DF8FE +:10B8D000EDF3351C3FF6F71FFB0A9F27231F9F3C04 +:10B8E000E95E9CB51F02724A80BC9B8A1B98DEF001 +:10B8F0009FFBEEB4B50EFCF6FB98DEF0B7B1FCCAC8 +:10B90000FB2B53787F4BFEF7219F2DE7195E5D1AC5 +:10B91000CB070BD447513EC97C5F498A5C695E8D79 +:10B920007E8C8C712F57A41EF1A9CF6065C8FF03D0 +:10B930007C9A2D26017F2750C1F3FF343BBEC6F110 +:10B94000014F90AF72C202B97EBF40AC1D941EFF82 +:10B95000E433181C72C2843CFC9D6F6826D0C91B5E +:10B9600079E776387F73BAF015A0F723009F1DEFB3 +:10B97000B3EF0FB0C7DD66C715FE4EE1FB60A3C78E +:10B98000808FEFBF7936DF27FFB3F1F3E389F073E0 +:10B99000C4C7EFCF23E96920E7327CC4F9239F9F16 +:10B9A00028A439FBDF99FBCD64DA1EE5690A9F5BA9 +:10B9B000DA12E5AF3BFC9B2D829DDFC8F65B072EBC +:10B9C00036F0BE37DFD9877FBF9796FD8B599EE251 +:10B9D0001FF87A2FAD3B36FA142D97A687715D9329 +:10B9E000654A78162D6F11498EDFFEB28FF9EBBFD5 +:10B9F000F6D9FBABB13FF820DFE08611D4F38E7CA3 +:10BA000050138EE8FDC1C7E59AF463F43B3F34C997 +:10BA100028D8C1BEF43081FBA542128BAF6A75896C +:10BA2000F242F70CE4CBDB377DB9F7876E11A95EE4 +:10BA300014C69797B69CA57298B496C0B89B306F01 +:10BA400072BCF106DA7A118F235EF303A0E3C7C755 +:10BA50003F3F617E1B7046BB43DF8F57EFB37EFADB +:10BA60005A7D3AD3EB70260BE4E1310F08ED2D72CD +:10BA70002A7594E2792BC5BB05F1F930B337E4356B +:10BA8000A6E0BCDFC36E9F29D7BF8A7EE1BC7E6F74 +:10BA90008F4AE9352430F9B76F807C1EE4E12E79B6 +:10BAA00004F77D77A94A13CB7F0C36027DE5480960 +:10BAB000C66D4EBCF223DC67EF2A0E623C38A0F163 +:10BAC0003C2EFBBE0C485977E8952D91272CE48F2E +:10BAD0002682E7E14B06D9FE3E7D87FAA5A4299C84 +:10BAE0003A1AE4E708C1CFD2D83A56CF26FB609D78 +:10BAF000BAB85F59C3F74BAA02063F67C7EC027991 +:10BB00000DD3E7B6BE9F4BCCA23BD0EF1A6C84712D +:10BB10006815944F7679CE3504E5D2DC60BA81C9D8 +:10BB2000A55C3ACF0D8E3690C05F8EDEDBEC7CB02C +:10BB3000792C3EFA28A73BDC5589F75F03BD289C8A +:10BB400073FC0CEFF37A591E480DA4ECC27330FD60 +:10BB500014C4136AFB995F51A932FF606B59E20A62 +:10BB6000A8972637BBE5CF41BD24964BACB81BD672 +:10BB7000F75C3F3BBF58F9A1C0F381479016BBFE6D +:10BB8000DD2EA7311F351A192160D7FB5BD9F71DB0 +:10BB900037B2F38A4B194DA91D4AF680DD52C9EB25 +:10BBA0005DAD31FDF44D8DC9E9ADF3538DD04F55E9 +:10BBB00024D901EDB5FA238DE0BFFA49B2230CFE7A +:10BBC0004C52473FCB3F984A39FDACEA30B35B67F4 +:10BBD00047D8F3468DF97F37F1FE6FD298DD70B309 +:10BBE000C6EFD72461B4373BBC665C03FB24B2C00C +:10BBF00003FA622631450FC03AC4ECC6D93B8B72BA +:10BC0000FCA7DB787FCFF2FE3ABCD1BFD368F92C1A +:10BC1000EA1FFF3F6A6FF937307948A87F06723410 +:10BC20009F7E031ACBDBF46F6070037EF6D0FEB705 +:10BC3000F37DEEEDADFA1E0BFD0CA31DCF8F57B0BB +:10BC40003C97018DC95F7FC434313E49E9590AE709 +:10BC5000C6EAEFF916DC776FB69AD65A90C3AD45AF +:10BC600084E7730FC0BCE41B3E6A238EFB0CB6D77F +:10BC70002B245597A59F4D9F1991110BFC777FC4DD +:10BC8000100407DCFE432902EB5EAB48E1F9578A5A +:10BC9000B7E7E15C74B5C5E2CF7B374F698478596B +:10BCA00042343A4A296ABFA731FD5029EB1DA02F23 +:10BCB0002B5FD7CC76FABE6A83DEB116F15244E030 +:10BCC0005EC07987F4A7D6D2EFC6C92202F69B3DA3 +:10BCD0005E92CB0B1B2E7FFDCBD6D505E11A110052 +:10BCE000AE4A0E97B9516F04F8EDBCA0AA56224295 +:10BCF00019CE97801C7A96E36F9D647E0FF0728454 +:10BD0000F341552B8BAB568D73FFF4F0F8F0149381 +:10BD10001C781202D887E5004FDDA9E1399285E74A +:10BD2000590DF989E0388F6A4C7E65DB73BDDA1AEC +:10BD3000E7D7D18E08EC7EF6BF0EFDB31BE48F2350 +:10BD40005FFC8C43468341E76F1C4E59F0D4385E4C +:10BD5000C5F4FBC4797FCD6B1CAF25F56C1DE4F7F2 +:10BD6000FBB6A6D8E7FCDF027A9916931F813A66E4 +:10BD70009F29E1B805E7F54733EB99D955C292DF22 +:10BD8000A11F5D1261FD122D3D0DCE7B13353DEDE2 +:10BD9000723FD467767109AC6B26B7F07D255D0FD5 +:10BDA000B0AF75FFDFBD6C5D1BC173FA04E8E4073B +:10BDB00099750EFE7E8600F2677A2B932FF3361A62 +:10BDC0004297D33EE0EBBA84F363B93C3A0CEB62A2 +:10BDD000FA216381E5E093622E97E7FA19BD2B39CA +:10BDE0007EE66D0C0B1D9AB31EB7CF383F51C8B11C +:10BDF0003F5963EB6EDE21D304FB5A12D8BAB3EB82 +:10BE00009B5D26EE4704408F85219FCDC4FD0A77B8 +:10BE10002BC17546F159EC877D6F8DBD5736B2F752 +:10BE2000B67C984EED3978BFB55D3257209FA7EFAD +:10BE3000A3BA06F082EF77507BBE3482EF8760FDB5 +:10BE40000EDCAA9015642CFD762D7A19E38EBBB812 +:10BE50009D7BEC56C564F23F7E00E47F289C6E7F9C +:10BE60008B8E3793EB95AAD4DB02C41DED7CD32ACD +:10BE70008AEFA9F4E9A3FE8F06BFE7D13AF82D11A6 +:10BE8000E2405C2FFBB81E3ED3CFE99FB18B191F58 +:10BE9000DCCFC70D855B9F027BA48A181D4CCFC7E2 +:10BEA0009F827B212AAF311A41CF7F99E34D033B1B +:10BEB000686136FF30D4F21CDE735475C30CC2CEF9 +:10BEC000CF505B6331333FE0EFBB373C65013DCA88 +:10BED000A9400439ACD9F11C91D91BA42E37DE64DA +:10BEE000E3C51E27536E617C4AF94F70DE2764C399 +:10BEF00055A92A26B3B30EE17D16B2A6CF67E78E09 +:10BF0000FE09CFDDD876D612CE57E6DDE976B7C387 +:10BF1000FFA0F4FE32A337F38732E78C49FAAF4A29 +:10BF20008E0CE4C9917954DE837CB7D713F043B10A +:10BF3000033FD7FB991EAE329582F1CDAFF0EFF300 +:10BF4000226194CBF63A32370C367AD15FD1F11CAC +:10BF5000CE9C9D96E845B9AC231E37703C52B9FC87 +:10BF60002D3FF2153B3F9FE58F34FAB5A49FD907CB +:10BF7000A130E51388DBD68BC827A19663B82EAB1A +:10BF80007A0DCC43CEE71BEAB721DFD0751FDE5117 +:10BF9000806F3CB58EB82599806FEA459443F97C53 +:10BFA00073B79FE995CA889D57242F037BC6BE4768 +:10BFB000249F6F3A399E94DAB8E566FC72B7DFB118 +:10BFC0002F6FF3CB90304A402E52DB24FEA00E712F +:10BFD000A807F09E889D41166FF6D4A4300EA53CAC +:10BFE0002711671E48FE535FD29C736E430854238B +:10BFF000BE3DB5B19CF7337B5B72CAADC46AEF60DE +:10C000007615FAEFB6DF128A7D7C12EEABADDA6000 +:10C01000F07B1B0EB3FBC9228C1E551B52E83F540C +:10C02000503F489C9FA587FD3B311017047AEC02D6 +:10C030007AE863E3B436DC63FCA48888EB16FC2161 +:10C0400027FE8FF075BB2B223471FCCB9EA013FF13 +:10C05000B9FED1F7FD99F84C44709C8FA67438E274 +:10C0600047FB84F93F6EEEFF285A1263BE76FEFA54 +:10C07000E6B6A11CFFFF25DE9F5C336802D349B5FD +:10C08000098B38E256F9F4F83587F7D77E83E5F166 +:10C09000F71A8DD8AE3FDC01ED3CFAA0097ADCAB93 +:10C0A000252C90E7A7EA67866E3442FD995AB803BB +:10C0B000EADB7C6BDB2DFDB285FE63FEBAD0E2ECE1 +:10C0C000BECCFCF5E0AD99E47A888905E5E847B691 +:10C0D0001C9DE47A78C35E0F3599F5F091BF6CEC46 +:10C0E0007AA0FCEF01FF65477AE684F774E7F3BBBB +:10C0F000129C98CFED7612C4931DFC268D73CEAFA3 +:10C100002A60E7C1FD75C8F14EEE8F52BC5505207F +:10C110003ED4CBF6116C3BD64DF510C4B7605F0032 +:10C12000F5B5F4B330EE438CF3FB80F971F9FCB84C +:10C13000D0DCC09F1787370222BF0733519E730F91 +:10C1400026B1CF1F168E1765E66BE70FF0385ED766 +:10C15000F017C88C02FBE899F85D05BF0F872E82A7 +:10C16000D71C79CB63EB5B7C5F6072F7E1F4B7259A +:10C17000510ED8F77D74C27D1FB03FD0B61FE7B512 +:10C18000ADED303EB5AA541A7E52C2BEFFA3BB2D00 +:10C1900085EF29FBD482BF799B743EFE0E5FBF986A +:10C1A00032EC7B4120CE60FF5E62067F7E760FC858 +:10C1B0004190DF8EF52104EA73EE01818E8FFF1529 +:10C1C000F0A5144A0EC37D84E54658BFDA00B9498C +:10C1D000C87187DC2C991BFB56C0310FFB7CE85FD4 +:10C1E0000BFC9D1CDE4199A0FCA43203E59D54C3C9 +:10C1F000CE7BC9BAFE84E0E04F59338988F0B3FBA7 +:10C200008CE56094E983508CE90342503F6D5BB24A +:10C210008038F316EF093079497D82827ED9BD01DD +:10C2200016F790F5513C375104F98FB45ED18591E2 +:10C230009C7E769FA29F4440B6FBD1A19FC188DC23 +:10C2400054A8DEC1400DF297BEE470CE3A5482A9E4 +:10C250009CFB450632BF6B6932A5A2B3FD51C520D8 +:10C26000C284BFF3C8EF3F5B53CF1511313E07E7E0 +:10C27000FBD7F1DFC3BAE507BB8EC0FD59B79CE71A +:10C28000D6619FE8A24F761F7912FC2E538DB273B0 +:10C29000F483475EA1E56B9A7D187721241A00B9D3 +:10C2A000F61E1111BFEF9117030B1D78F96980DF9E +:10C2B000FBD7EBC2BC418BFE07F07D73D09573AF0B +:10C2C000D3B543B9E5B564E51490A36BEF7611B827 +:10C2D000BF685DDEFD32FF2BC0FCA06B49BC07F8D8 +:10C2E000C3BEE7E0C61FCD53C01F5CB750AF06FB0F +:10C2F000C186E345AE37DEA17C65B8B3EFAFD3129C +:10C300000A9CB37AEDD0C2CBE1DEF26E57A2A71C35 +:10C31000ECBE6252F07CE4D5BDB9709E6A1EF97025 +:10C32000DBF72C8F0787BC5F28C83FE9809093BF5D +:10C330006035C6F1F757AC0E997446F0F758F0F730 +:10C34000595A2DB70EF6DD094F5502FCC58F213E17 +:10C350008CEDD8EFE3DABF8B3BD9F69FF0F8727E15 +:10C36000FBADC17494DD23CAFAF7A971B42F059906 +:10C37000F95D5B43A7F85E33F1F7139EFB03702F63 +:10C380008E41ED6FF8DD8753FDFECC2C29E62FA200 +:10C3900070BEADC4CF65FBC00C4E6A462EC7DFD160 +:10C3A0002501BC9FDBCDF35731BF558030F260CA09 +:10C3B000043FC4C8BD67CC07F9BAB49F9BB87FECF3 +:10C3C000ABCDFD9E9FE77A46115BFF4B481AF57C8B +:10C3D00040D552783F6D7DEEEF81D8F4BC25C4CEB8 +:10C3E000118D27FF44A21A1AC4B8F9BEBFC0CBF6FC +:10C3F000F81F0C0AB81F710B5DF9AD0B9CFDB2F371 +:10C400004063D63F3F270D39340C3FEC7EBADE3611 +:10C41000761FE18772B819F72534057C1ED2591CA6 +:10C42000C7DFF3B12AD97941774DB408D695FBA877 +:10C430001414ABB9E8A0E59E694D784E697E918BE6 +:10C44000C725D8BDBB6ECD32E13EE71E572C047E1A +:10C45000AC7207DB1F6ED06231CC7B0D35BB202E5A +:10C46000F24F07AFC671AF0B2D97417F2E29627136 +:10C47000A5F70E3CBE18CE0FF63CEAE7F1DB8402CE +:10C4800072FCBA4312FA81D73FE6C7F1AF7BE2DA1A +:10C490008720FF4BF8D185C69B68EF76221CD7FD1D +:10C4A000F0D29F5B6017FC42C29CC5CE767E2ED335 +:10C4B0000A87203FE34637F906F8D9F6FC6DFC7988 +:10C4C0006A2C02FAE5BAFDD5789F51667DCAB43E62 +:10C4D0006DEFA6CF9505ECD25811B3ABDEF52BCDA1 +:10C4E000009FB07FF82A842FF9372E989750112794 +:10C4F0006FD0F12EE3F3A3F530AFD27A584840CE97 +:10C50000F7BB0FEF51C08EBA6EFF1E650DC6759852 +:10C51000FD64C3E9D9DF6E815CF2184635E40F2C67 +:10C520007DECD100E43B5DFFD89F7ACE8FE0EF2613 +:10C530008CAEA0EBE0A6FD12FEEE84C710F37E5F8A +:10C5400084FD2EE27AF8276D7FFDF7DF5AFE6BDA65 +:10C55000EE1D2AF73D5494BE33F286F2BFA11CA310 +:10C560009E09F47338578EDDB4FF35FC5D035D24FE +:10C57000A31517C03995DCF530A63E8916A5285DB0 +:10C580006E4A6EC6FB5F6E3AF4DEAF409EDC9427C7 +:10C590000FDF817F4C1B6BE7F614E5FEAE04D95F1D +:10C5A0003AA97B0DAF7FF4C3FB217EF7EE137FB872 +:10C5B000DFA278BCE13FFFEDFEEF80FDF7138F0EA9 +:10C5C000F2FCA6036FDCFFF7749EEF1D768BC0179D +:10C5D000D71D78FBB7DFA1E58FFEE79C121045BBA6 +:10C5E0008B989C7DFFF1FF3B05CED16E78F2E2A9DE +:10C5F000C0771B7EB074EA447ECFFB948F126E2707 +:10C600003C09A49F7158806450F6C38253C7D2E19D +:10C61000DDC74F28B0CE3E1298BFBB3EF92705F8C4 +:10C62000EF08F5DF012F4F1F7AEDC8DFD3F27B94BF +:10C630002EEE0274A1F39E2EE2EF02A7A6C37D9612 +:10C64000EB0F5DFA156A9AD0A72B6C201D46513F5F +:10C650008EA1CF514ACF48969EE3D2EFE066BC3F11 +:10C66000FBA624A5DFD963E9F71EFCE3BCB1F4FB0C +:10C670004951EEFEF5470F5F5194828F874A0BDADE +:10C68000F7B67F72E30F2E9BF077D3DFCF5BAFE37C +:10C69000E1B985E7B76D2932FF05F4C2BB4F3CF223 +:10C6A000D00E8AC7F77FE90EAFA08879FFD10FAB14 +:10C6B000205FF6F7AED1AB000FA34FBAF5BDB4CDF6 +:10C6C000754FFE2BEAE1F77FF08262A0FE20018821 +:10C6D00053BC4F327F2F42DEC27A1E23BD71DF7FF3 +:10C6E0002CFF156D7F23ED02F6916FDAF79E02EBBA +:10C6F0004A2F97F0F79AD727BEDA64E0EF7C94E1EF +:10C70000BCD727D87A589F185E05BFEB9A8F77FC65 +:10C710001DC045B97415EA819EC79703FF8D474F29 +:10C720007BFE3ACCFF5C802377BD8EE59B5105E410 +:10C73000BF83BE55C067DF138A0C61099DAF6B5480 +:10C74000413BE8714987DF19CAA73BF89BABD1DEB3 +:10C75000EE28789F4F3E3F103D773DFF7F50E96BBD +:10C760006C008000000000001F8B0800000000002B +:10C77000000BD57D6B585BD795E83E474742124288 +:10C780001C0901120838103F44821381B183139CA5 +:10C790001C63D9C1094E6587A438F5B4C2F12BF3E7 +:10C7A000B97349431AF7BBF6E860630763838100F6 +:10C7B000C6CE4BA6769ADCE9CC25994E9B6F9ACED5 +:10C7C00008F272E6665A9AA669DA9BCC871D37CDC5 +:10C7D00074E67E43334EEA769CF1DD6BED7DD03915 +:10C7E00042F891B4F3DDEB1FDEACB3F7D98FB5D7C8 +:10C7F0005EEF7D4412F9840408B908FF6E9D5D1256 +:10C80000A211429BFCB713EFDB888F105924D3C1D0 +:10C810009B29FC82F5CC949DE0BF8BF8BF562CFA87 +:10C82000A14C160B7584FCD9774EAF262EDA8E4CB0 +:10C83000EF975DB3DB4FE72AD8AFF282404821ED96 +:10C84000F7455ADE484847C0A6C23816B72D91555D +:10C850004EC87EABF233AD96B67FDD4A46E92B7B00 +:10C86000DD4B8992337B9E9D71DAD7C2146C75A91A +:10C870004942DFB3CA4AB545815113842C31D4D320 +:10C88000852886F9C8E5938D302EF9AA484ED271D5 +:10C890007BEC63AF5B28FCF88EAD8A4661894E8FD6 +:10C8A0002C4BBD7FB77C0DF6D7BFC3260A37D0F21D +:10C8B000D4AA425245C863D6E41AE867EF2A511E4B +:10C8C0001566CF73251D17D69DB3333B7C226F6E43 +:10C8D000BCE7D8486C8CE2AD3F22AE8375E4AEF085 +:10C8E000792C30AFF1D75FB750D8B3A3A0DC41FBB0 +:10C8F0006FE5FD91888BBCAFAFA782CE5BA27FD0E6 +:10C90000768FD79204CC3F67A71BC7BBDCFC6E9029 +:10C91000053E3F47F8C4E2FFBAF9E978BC4556F84E +:10C92000F82E1C5FC72B216A72259DB7959242B7DE +:10C930000C7094FC39D009216DDD61BA3FF5356486 +:10C940001EA7CF5C4A87F75B625F91693FEAD9A86F +:10C950002AD071DC5524DC4DBBB6B9DA086CE5B5DC +:10C96000B28CE3F4D8930EA04F22FBF01CC83129FF +:10C970003C8F8E9B1BB361997E0E7A6A3F8A02FEC2 +:10C980004623746CDA91A7565413747EC708A30F1C +:10C99000D93A790AD62F1F5F5001EB7A1CF049E98A +:10C9A000E419ABECF853FA5E4F47AE320A74467C9A +:10C9B0000736D2763993F34937498D3BA2E39FB8C6 +:10C9C00034CBF5293C6489CA918DF0DEA8183E4924 +:10C9D0000BE5D46FC683743D79933F564B6839CAD3 +:10C9E000DFAB9C3A3E5142EB77CB39BE0FB2E91F29 +:10C9F0008BC9E28B14495FD3DA1E7152F06BC7F713 +:10CA0000DCE6A4ED1FDCA5BE2629B09EF5B93157A2 +:10CA10006A9D87E3243CCF9A82FB24CD29D3F58DF0 +:10CA200026F638AFA5E36BAA189E0FD3DF5E633AF4 +:10CA30000FB3F94607AEFBF2FBB69E2461DF2AA4D2 +:10CA4000B65CCA37D477C3E45AD82F681F8671BC46 +:10CA5000B82FF75B185D64FBE8FED13F2DAE18815F +:10CA60007913F216892E22E4219D6E66F0C6E89DA8 +:10CA7000BCF43BF51AE85FB54F3B607C95D261286A +:10CA800045870F713AD0F79B12A57686D60B829513 +:10CA900000DE747CCEB5CECF5A523C6B6728221F85 +:10CAA000E3E5D3505224F573F8095EEAEDBF97B67B +:10CAB0009F947EB433F43C096504E729D7FB70DE0C +:10CAC0003A3F4BDFEFE00E73FDC21133EC8DB0FE49 +:10CAD00074B8B4DD0CEBF4A2D3874E379F973E0EAB +:10CAE000C19E2C49EDF3E5E4900E274918F7DD12BD +:10CAF000B4E17E5B825D9350DAE070D37E06AF894D +:10CB0000BE07E7DFE2221698E778C982DC29E02336 +:10CB10007E5FC679ED8D8F554BF38DE33179619151 +:10CB200048D24A9722B968BD015F3B292589701E0A +:10CB30004362E2A480741E3A4EE16E5F01F21987EF +:10CB4000EBCFDE49D232CBA61CA9C8C067E73E6F47 +:10CB50006376E0470795EF9CAA30E0D35ECEE09E77 +:10CB6000FA7928CFF4F65BE586DFC906B926D7D374 +:10CB7000FE0CFBD6DDA814C2FE5CF5F883CF9BC685 +:10CB80003FC9E10CE33B3C14CF9D026919AB9A3DD0 +:10CB9000BE2A5769C02F8BDA941AC04BB187F1A90E +:10CBA0001232D56145BC91A8BD803E67AF90B28D71 +:10CBB00093815768BB7DF96F97C7687FB9A453FE0F +:10CBC00080E29D4A91DA8B9790477487C807FAFEF6 +:10CBD000D0F32089543ED1F757C4368FB4D6C2F86B +:10CBE0005538FECC7830368517CDCC27F90D91F22B +:10CBF000EB52322D102ADA95A8DC40D1422A5AC2D3 +:10CC00001350D2F954327E13C1F9086A9E70F1BAFA +:10CC10002B9FCF0CBD54517A2987A763F675063D2B +:10CC2000E660554561EC2AF629BDA4EC3F0AEBB558 +:10CC300097BF65DF64E8E7160F933FE5B27A0BEC28 +:10CC400053FAFE1C04FA707DFE714F0EBE691A770E +:10CC50002DC72B1D77AD67C9EC71294792919F7144 +:10CC6000FC109FF732FC829DFF237751C940F1E809 +:10CC70007E5740FDB0FF2E7748A2FBEB20CE70968A +:10CC800000E74E15ACB4FEE12212DE43F777675D94 +:10CC90005485FD7BC6128BC1FA57FCD3EFFCC0074D +:10CCA0000E2F6B2B03BD62665F22FA39262AE82518 +:10CCB000FD278A13DD1496F21E77C3BEF447AE6ECD +:10CCC0007F0E4BD3788E0ED7EF916319F09BEB67F5 +:10CCD000F2A6FF2ACF67AADFF54E63BFF32DB15D41 +:10CCE0009E25B3FBA72B383305E74713C8454AD722 +:10CCF000969C41949B0EFE1CF15F9E6A37B31F69A0 +:10CD0000B02F4FAD16401E93AFAF7983EA57BE6C7C +:10CD1000F539CA82C961CFE2352EBA6FBE2C5A5599 +:10CD200044C8A3FD3B0F68743DBE62F539687FB30C +:10CD3000F7E1353EA8BF86D51F1EA0F5747C8BBDDC +:10CD40004F2554FEFE9B5741FA74C46CA7817F3B6C +:10CD5000E6A924867C9A4C094B293FE77CC15B19E4 +:10CD60001B81F515B724C6613F6DFEB000ED56512D +:10CD7000060FFBF5D13C82F430171E8FC6ED04F888 +:10CD80007B4F5CC1D2B199F45928297553BB01E09E +:10CD9000C7E33296FBE27E2C8FC5552C0FC55B880E +:10CDA0004407FCAE14FD16D08F635ED80AF81BB1A1 +:10CDB000327E27713DF84D80612A5E76DE52A5886D +:10CDC0006511E747BD37DD9B6B3C27DFE3E724B503 +:10CDD000DFE19B5F36EC776E88CA37379C1FFADC41 +:10CDE000707E9C16D206E375EF6E23EB697F59C9FE +:10CDF0006F900A2A0F7FC4FB3B1C6F5B7E96F6B3D5 +:10CE0000AF72B50AF4DE1FDFB9FC2C5D8F244D270D +:10CE1000411F26F5A4FA2445BD6427E3820FA9BE6D +:10CE20001AF44AC9253338C2EB65651CDB3732F882 +:10CE3000C9B886FDCE9CFF7A3A8E516F084E09AD77 +:10CE40002ED027769A9E97EDD44C70F91B1F7689C9 +:10CE5000B4DF032447EEA6E3F5CE1B7D278B961F98 +:10CE6000D552AE4C9790937CF69D5CB02B22360544 +:10CE7000EC88FEDD0CDFFAB80374DF88C1DECB6D11 +:10CE80009AD6800FE4358697827C3AC6E5515E23B8 +:10CE9000C5BF416EBB6F7621FFF828A88C82BDF21A +:10CEA0004BCE1FB3424C8F98E137C1BEE592C15EB5 +:10CEB000912839825C907CFF2A6C63FA2AD0283949 +:10CEC0002AA85A2BC8C957ECE424E8B3A15F0BB0D9 +:10CED0008EF50B683DD567B31745D4D7E8BC126F04 +:10CEE000388885D607B636AA208F94BB9CC4427575 +:10CEF0001FA7B71CC777DFDCA476D0F7126FF3E764 +:10CF0000D736AAC769BB273764E37BCE524226E1F6 +:10CF10005C486D76E05B95F553F628951F8FD455E8 +:10CF2000E4924BF00F949CFA3AF05C3B53F840D8F3 +:10CF30009B0617A5B5AF48ABBF36ADBEC6048F572D +:10CF4000523D0BF4078E7FAA8991F5942EBB2B8757 +:10CF5000FD40F7F9B05EB0FB65AA4F19E9C6FE8245 +:10CF6000097E5B8EE67BF1BCB5213FB0495102F8EA +:10CF7000B76D6E496EA578B2D36DCBA2F8B585EECC +:10CF800049DA603F28A3C8F2035F8822ECA67D013E +:10CF9000DEAC3BC22A1813D61DAA4AAE87328AF0ED +:10CFA000A9FC58857709C03156EF9BC4710E09EC76 +:10CFB0001CA7E371A9979DAB7DF1C90223FD5B5DC1 +:10CFC0004485F681AD5D6560D7ECCDD98EF4D75D33 +:10CFD000798F0AE768AF7BC75240D352AF05F75944 +:10CFE000057F07CC2F4850BE503B75A917EDA418FC +:10CFF000D3675D63388FA5745BA0FD8D5E99E9C72B +:10D00000921C80FDA62B0D603BCA3F55D1C03F232B +:10D01000B3F8A7460A4CFC5385711C9C7F16CF0BB6 +:10D020007708CA95F3CF7D9C4F1EE47CF4BB52EC8D +:10D0300076DC1F1FE5A3D71BF9A21A03B9D03A105B +:10D040005E232D03BE38A6007CD740F840E4269826 +:10D05000491FAED3E1637CCD51B57F124BBECF6F7C +:10D06000CBEA5DD0EF78BE8D9DD308F3035939BF6D +:10D070004B9F57BADE6EF1395B15B00344C6972D4E +:10D08000FE82FB00DEC4F1A4B74BD7E775FC52BCAF +:10D0900012B5626EBC8EB78857842FABFA5CB5743C +:10D0A00009FF0EC5DFD7703F7C2E86071D7F9CFED3 +:10D0B0007479A2B7EFE672442F817F829E93E29F3C +:10D0C0009B7E9E556BE49FF7FF3CD767E49FD34957 +:10D0D000F04B684BC818F0F924DF87BD9C8F3A5A93 +:10D0E00018FFCB714D12E0F71639768DA8801D150B +:10D0F000EBC279CE236847492E333F3DE865F6B34E +:10D100004E97578A474A9F316296EF8399E8335D7D +:10D11000CEEAF8F8153F8F7AB9CA5285F6DD5CF889 +:10D120003EC0E957871DF392C2A5F4B9F1AF5D8BFC +:10D13000FD3D6ECDCC0FF6C629BF02F99A467FDFC2 +:10D14000E3FC7C86CE6C6D641DF4E3C8DCCF77F91C +:10D150007E4AB6BE5814F93B41FACA09CAC7BB0D8C +:10D1600076E30B7C9D84B411C60726B10C72BC38E3 +:10D1700064E2957353ED5FE5ED834E33DEF4F21513 +:10D180002FF3CB494EF3B8EE79745C035DBFC6F55F +:10D1900018FDDC123285E3E604D9797504FB585991 +:10D1A000D7A7027D3CFEC0ABE58FF8C05E0AD50074 +:10D1B0001F946C53484FFBF65C27EEA1CF7FCAFB50 +:10D1C000B3D175003FD7C7A17CF0A770EEAD75DA7B +:10D1D0006F2CC88FC9CB6EDA3EBB8E24404EEBFB62 +:10D1E0002051C5E401C3BEFD6FBE4E1DBF12987E27 +:10D1F0003529BC48547131B63F9D861709347FCA22 +:10D200006B6D3EB33CFA10E816F0E332CBA5ABA54C +:10D21000F37FE3FCDB62575568474B027CFB57B258 +:10D220003ACDF8BE86E33C12DD15DD42BB50DF523D +:10D23000B524EC43CCD5C6FC65AA36558BE7A4EDE6 +:10D24000986CC2D7EFE1FDAC20931792CCF643EF78 +:10D250004F2F95E96CE4A37BA9BD04FB9A5F1A3DAF +:10D26000AD807EF7B685803EA73544CBC1FED1FEAA +:10D27000295BDE0B7680D476E35D06BB14F87E92E4 +:10D28000F2075F94F9DB7E9BCFF8BD5E4FED2A5726 +:10D290001E9D8750D01203FA79F88CA0801D96DF6E +:10D2A0001CC5F633F695A2DBBDCCBEEA02FBAA3C58 +:10D2B000655F75297F1CFBAAEB2AEDDB4BD857A1D4 +:10D2C000BC2BB0AF1CAE4EFF5672F5F6153D5F029B +:10D2D000D093EF06F53722DA59DF5CF306D56F7C81 +:10D2E0000BD5E700DE6B7B6A4D23D8518BD5074009 +:10D2F0003FBCE3D1136B1A6F9A7B5D7AF9F7F96A39 +:10D30000731EA583E63CA64FACCC63749DDD9248AA +:10D31000029F252E76AE75580598CE6369488DC05C +:10D320007A9BF3187FEF2AEFF2033ED2DFD778FB28 +:10D33000A33EF33856BACD70BE7D7735A9FBE0FC2D +:10D3400053FA057D4C6D214CFFF113B6FF9C6E29FD +:10D350003D371BF16BF531BA9EA11F17B7CF399F2F +:10D36000CA728B26FEB8D77575F4D327A9B8CF9D9E +:10D370004AC45E6EF2B33138839F6BAB717EE9FEB7 +:10D380008CBD57ED67E3E30F3698C63FC9E10CE368 +:10D390007F3D2F9F9F1F835ED755BED51ECBE07765 +:10D3A000D3DF6BB3C6E27906FB92DACD739C4BCD2B +:10D3B000E48FBADAF3985ECEE58FEACB9BF147F5BE +:10D3C000E565F0475DED799D6BDC747FD453A97101 +:10D3D0009FCA34EE2C7F14E79F95276401F095884F +:10D3E000903A81CAD784263A981F3081FD253AA900 +:10D3F0008175033CF77A005F8AC6EC087DDCE39E0A +:10D40000BE96286DBFA036763BE85F440C3D975D25 +:10D410009AA2E39EDA0AA46390AF46FC3F3D32A095 +:10D42000DAE9FEE475943E0FEF35CDEB236740CE8D +:10D430008EF4914D86F19FAE25B7905C682F7AD817 +:10D44000BCFAF0797655DFA5F59BF94B2FA92F395A +:10D45000767EBF3A42CFB283EAB1914BFA5DD93CB6 +:10D460008E2C7CB26D82CE37477686B328DDE648B7 +:10D4700093FE6886FEAB3EDD33711DE837F5ECFCAC +:10D48000E7CE7B5BDD44E1077FE8D0EC7E786E8EF3 +:10D490004BF876096B36811E0B7A2E6D57FEF879A4 +:10D4A0006CDFF38643C3F850BD214E41E56B5FED61 +:10D4B000C03BA80737523D98F6EF4D1E7D27A31EAF +:10D4C000BC86EAC1749EE5CFBC6307FE97003D3879 +:10D4D0002B354F6FA722D8613C2DBC00F460DDFFD7 +:10D4E00050AE99F5DFBE5A667F977FE71DB4C7D36C +:10D4F000D7FB79FB9D0BEFE9FDE6764E13DE2FDAC5 +:10D500009FFDBB65F110F095E58C6FCEEABF9EF6EE +:10D510007F897376B979A7C7D3D3FB9FB1F39AA458 +:10D52000D356D087D47371B0B31DA4BEE38C492EFB +:10D53000B2FDFB6985683A77C09F403FEBB4BF5F9F +:10D540007096D2A1E4F89782B3940EF74293007DCF +:10D55000CEF541FAEFC2AD4B21EE47D0D5412E5C5E +:10D56000B42429BC1F60BAEEB0CFC3F4D70B749EAD +:10D57000F479273CBF84DDA6C7313AA93EF97C2661 +:10D58000FAF5313ED299A3FB3708CA33C9AF8C1ADA +:10D59000F5E6B08FC7BDE97C5403BF8679C40BD8CC +:10D5A000F12788C7BE6295E2353BC4CE03915E2069 +:10D5B000A0FFB940FF0BC3F3647237F00D590CAFF5 +:10D5C000047F5258FAC4947761F9B6067CE4638A02 +:10D5D00053D093693F49871BC6A3ED427C3EE5B318 +:10D5E000DF73DA1304F8ACDE5E22AC7ECEF6F218FE +:10D5F00001FF9A53256D5A35E0DB508FE326316FDA +:10D6000083AEA96D6520C33CF97C2A08E3AF3BDFFC +:10D610006D4D18FD9977F9727C1F5C472007E44631 +:10D62000A403CB468C2F1257E6B8C06FE3B1C4CB2E +:10D63000F353F4D2C3F741EB22DC8FAF880097D9C4 +:10D64000C978B707E0E9F108D0AF6A7F0EF4EAEDD8 +:10D650007C1F2D176E6800FC1DB49324B473549D79 +:10D6600071A82EF0578A48B7AE795382914F9656DB +:10D670003D6F57295C5155F32AD497939008EF5387 +:10D680005A93C703002B1317816F2773A7BB96C349 +:10D69000B9F864C5BC5AA4BB698B1FE0D0C435B5CA +:10D6A0009C1610FE7507E42D50144E8B75005F100C +:10D6B000308FE16B6E05FC87E54D0B1A2214AEDE50 +:10D6C000CFDB377DD801EB78B0C13E6D87FAAEA0D5 +:10D6D000895F96C139BB1EE61F34C56F67E1E9DB80 +:10D6E0003A9EC6104F0B66F0149B80FE2B014F94A0 +:10D6F000FE7A7CCC5EB25CF87BC45342C793E6757D +:10D70000029E1674EA789245239E283F70029EAED0 +:10D71000D3189EFA23CFE3384FD3A55928FDDC7ADE +:10D72000E1A909C80BB84E201ADA39FC7CE291A0B5 +:10D730007AE3C235EDDDF3E89F0BD4896F08EE1470 +:10D74000BF59A07E6702E2F94823141FD7457C0D1C +:10D75000B05E8817884B31AF00FF3D05FF2D43BFFA +:10D76000C253BEFC54DCC0E262718343DCAF40763E +:10D77000B13835F80FCE64E0877A9C9ADAF9180749 +:10D780007822CEFC087BC10F46E1248F1BFC1DC410 +:10D790000D204E00F1052BC4F543F8BC2F1E46B8F2 +:10D7A000375EC7E3092AC2DDF14684BF1D8F22FC24 +:10D7B0003F20CE40E167E2312C9F8E6FC77234DE8E +:10D7C00086F5DF89EFC4F2F9B886CFC7E25D580E5F +:10D7D000C4FBB0FCABF808D6FF6D3C81F00BF167E1 +:10D7E000B0FCA87D78056CF31345C962D0435EF4A4 +:10D7F000B0753FB1674511C40DF6C5FB964B067D6C +:10D800006A3C9FF96FE7960B63D5C6F64ABB1DFDD0 +:10D81000574ABBE6837D50DAFB8A5899F0127C3E6A +:10D82000E667F01B2DAC9C44F87D1FF703B74F2132 +:10D830005CAE99FD71270481CDF3DA64F17A035D62 +:10D84000BDCFCFED8BE5FA3ADE2C5EEF9A5DFF039C +:10D850004144F950523C99B93E608E27E8E57FF883 +:10D86000983FA6BE5D6D003FFE944085E02D949FDD +:10D870004E4FAE04BD82685692554FE1BEE4CA2CAD +:10D88000F443533848E173B43DAD97F7D8B05EEA3E +:10D890008B11885F5065BB0DFCD2CBDB93F8BED2F9 +:10D8A00061C1FEA87853412FB12812F2F979ED2A0F +:10D8B000B64FAAF63670C15BDA571387E17DAAB777 +:10D8C000AB1067C8A6EDC18EA2F6D27F005DAB1784 +:10D8D00054F4AFB8832CBF49CF8B91081BEF8496CB +:10D8E0001B03BDA95E7DD302FCBEE1DC6476A6FD10 +:10D8F000FD41DF4436BC2713D50972FBC5BECBC53D +:10D90000156CA6B8C0298BEACC8738FA35D136A079 +:10D91000B304CF67D9CFF3586AF3191F79C2AAA20B +:10D92000FDBFAF5F4C8C96C3B8A2007CE107D36209 +:10D9300002F2A968697181FEA6916A6006E30F157B +:10D94000AC74417D27A98610E3C43956FFA29FD449 +:10D95000809E59FDB28A7227ABAF02DF2FD76CA928 +:10D9600078048175BC79078CF7E23911F3B5B2FC04 +:10D97000E67ADA1F1BBF4F447F2E5D7787047EE770 +:10D98000ED04ADF0BC26D6BF7F667E6F661BF5EA60 +:10D990009B3F34F7B76CCA0CFFA0EFD27A967FBBDF +:10D9A000B9FD0D2F9861894C229D9DD0DC2AECE3B6 +:10D9B000F2C9FFC5F6713A99711FE97A4DFBF883F8 +:10D9C000BEF597DDC7A4791F57E653FA7FA2A40DD1 +:10D9D000E5041561D37B28BF5E2EB769DB98DC6A4E +:10D9E0003B49F975567B7714CE6D567B9FCCCA8424 +:10D9F0000FCE7B56FB18F28101BEEFFB78F9D57C88 +:10DA0000E617CDE27C605F9068856EE897E979E97A +:10DA1000F3FA727E16D2CB723BAB7F2458E36835A3 +:10DA2000ACE3AB9C9E0CF59E6DA67AFE3E285A3761 +:10DA300011B223FF6FBA21EEBCDC4FDB5741FB4D27 +:10DA4000F6565786FE66EAD7CBF79BFA73E0FC974B +:10DA500007F5F136C999DEFF6A3EF3973C12AC70C8 +:10DA6000C4B09F0AB40B2589EE470EECCF04D24F09 +:10DA7000FA397BE9A157B3417EBE38F96636ECEF3F +:10DA8000C4B9063C27702E802E75BA93E5C9EC4ABE +:10DA9000A0E7B72C983798D768A6179BCF66D2C354 +:10DAA0004F28AA5346BF3DDD6743BB1554B937C263 +:10DAB0003F986674F2A292C4F1C92E733ED6ADE7C8 +:10DAC000CDEFDFF88E19D6E94C1F2F7D3F833BCC7D +:10DAD000ED3DAAED92E3A7BF9F5B676E9F13BEBAB1 +:10DAE000F1B343E6F68BC6328F3FD739B9EE1973DF +:10DAF000FBCA44E6F15F9C63FC8523E6F6D77465B8 +:10DB00007E7FAEF1974C9ADB2F3E658667FCBEBBED +:10DB1000AE2C8F6E5F74E315F99BF5BC4BDD4FA700 +:10DB2000FBE5F47E8E2DD136803D3D058A17956B41 +:10DB30004F2D994258B5E422FCF892318413A02469 +:10DB40005038F4E29B083BB41C02FCACEAC29B1ABE +:10DB5000C47373A9820CE3E7C48611268D0ED4EF3B +:10DB600072767D42007E5587770E6BDFA47003B519 +:10DB7000FF413FCE69FB44FB26EDE73E1DDE5170C1 +:10DB800014F2B63B353A7E10FC0BE63C46DFAE1F86 +:10DB9000ABC0C71C83228EE7D8653B0AF3590FB68A +:10DBA000633DE4671CC3FE12FFE8D040CE92796665 +:10DBB000FF8285E717F604265BEEA3ED0EACB58574 +:10DBC00047E9A347AD7D2D467FC7A79C1FE8A585E4 +:10DBD0008CA15E4B2D43B2B9164D6B0272DF122938 +:10DBE0006800BE69A963F98B963AE7694095DA59EE +:10DBF0008DEBA6FBC2DA6D1F7E10F8A665E7D30F8A +:10DC000061FBB6EF3E8CF08E57BF8170FBDBFF1DD2 +:10DC10004AAA177C0AFCDBB2EB83DD58CFF5819D65 +:10DC200064EA43D44776D914F0F73D29C81307C0F6 +:10DC30000FB282F9FF7AFF7CEA4390334511B96253 +:10DC40000F858B92FF7C00F050444A64077DFEA450 +:10DC5000CAE39E11721C8C155D5F2F027CD0BDF74C +:10DC600024037B200EE98955241CF0FEF684D0BAEB +:10DC700008F26D082EF6A9DDCC5EF7D4C92B607FC3 +:10DC80003C9130C6C5090877AA7F7BB6CB1D18B773 +:10DC9000AF0D2F80AD784C901B0EC2FCEE67F37376 +:10DCA000D78A263EF7644CFC05E68BECA0B3A17343 +:10DCB000284E3A102E6E942BC0CFA3CF0FF3FCAE9C +:10DCC000013F9003E599B751390EF3D3E755BC6393 +:10DCD0004C68CD49CDCF5BA7E0FCBC8D6C7EFA7E55 +:10DCE0007A7728E3C6F93DCEFD04B3E6B59DCE0BA9 +:10DCF000F0D446E745C709C2BC6A81FFD17919F063 +:10DD000016E4782BE6F32ADE619E57B02D89F8D30E +:10DD1000E7555C3786F32ADE619E5771DB18E69B78 +:10DD2000E8F37A4290C54380B70718DE12BB09E2D8 +:10DD3000A54453CAF764C0A392FC67C7421FE4938B +:10DD4000E71187929A9FC2E757C2E757D2CEE6A75C +:10DD50006844CCB4AF25759338BF9276F3FC4AB4CF +:10DD600049C16E985FBADF287D3EE353160DF22657 +:10DD70007AC22401712497C73FAE02BF2593F65B98 +:10DD8000E8F36EDA1EE45EB565B20BF251C94FAC32 +:10DD900018C7F26FFC19D90071B9B0343D1357019F +:10DDA00067435A7CC6739571197D9ECEF3792461C1 +:10DDB000BA0FF00C9E6BA7C4FC28CEF30558BF1316 +:10DDC000AA605E2182F8F7B7FF8CAC37F8059DB5E5 +:10DDD000CCDFE2E4FE10419899C7276C5C36CFF4A3 +:10DDE000385EFF7D4F4E009F72D6898817A78BF94A +:10DDF000578F96E87941B203F4CC23F7951E00FFC4 +:10DE000042F78FADC863C6971438C03EE815EC1AC8 +:10DE1000D0416FE5DB7E6857E99F32F92B7B96D5C1 +:10DE2000A0FCE9071AC03C0DA2023F3D689D813568 +:10DE30003B9DDF00E0B408C0D63BB6537EF94B9B58 +:10DE40000ED3F694DF3AB266600DF675A04187BF37 +:10DE500084ED1DD969F554FD66F097B1BE53A0EB72 +:10DE6000A0FCEE58C1DA3BEC942F7C5F542AED14F1 +:10DE7000BE9EAC3D182999BBFE54C1DA838DA5A97D +:10DE8000F53CDA22352632DAF39D487FCEF301DC09 +:10DE9000AF016F6C3BD82BB08FDE2AE37E074DF5C8 +:10DEA0008394DE55BAB649BF57003FC15F1530BEF7 +:10DEB0002E47121AE86D6591290DF47167745205A9 +:10DEC000FCE6D44EA9909FE1A33883909933144582 +:10DED000BF437E5424AA81DE2D363509FB62594F9B +:10DEE000121D901A5455BF4D027F47D42C77743AB7 +:10DEF000709E779044DEEC799F28504C7984CEF365 +:10DF00002E6CF7C76F5F99118FB3DB57613B7D1D97 +:10DF10009E53D1A360C725049B424AE15C463780EB +:10DF20007F91446D78BF653FF87D697B1BF87DE983 +:10DF30003883EB3E68013A6EEF70CBC067F607B6E8 +:10DF4000AE00D865C921702EB285493FF0F91C3169 +:10DF5000F9E15F0B68771E3D41ED8E9D91B6B22DC4 +:10DF6000B4BF8E751F8C80BC7EF87A1BC627ACE2CE +:10DF70007D1D56384FD7DB517EAF2991A2402FFB34 +:10DF800079FE4DAD9FF9016AFDCC5F505AC4E0990E +:10DF9000B85994F9D59F2F65E77D689D787C0F85EA +:10DFA000873CE1152BC0BF269069C8076C5CDA7806 +:10DFB00000ECC9FEA828801E3F19A911AA285CA060 +:10DFC000DAA7B3C26C7F210F06D2BDC039EA6F5108 +:10DFD00084261F66E94DDF06797FB2320EFEDFFD33 +:10DFE0006D6E45A3FA8A1AD6FD7A16E44FAE2CA5BB +:10DFF000A30AF0B6D23E067699B7C9ECF7F336D548 +:10E000009BFC835185D5532E1387F7D3DB3B4353BA +:10E010005A1E8CA77909E079E162EE9F2722B9B8F0 +:10E02000908E97CBF95BB113F99BDD9E5D08FBD316 +:10E0300059A23AE6831DFE0F56CCBB7EA582BDF7E2 +:10E040008A87F1D1FDFE290DF6697FB020DC41EB16 +:10E05000B39C6D0981CEF7C4C8FC3B214FAC6B86E5 +:10E06000CF3434815FD195AB8625C8972C246AA420 +:10E070001ED6C9F8C6F2914307C18E7B4460F09367 +:10E0800047EFBA13E09D53AD78BE56B450D306F8AF +:10E09000DD1A969FD5FB5E2000FA4F7F20E187F8BE +:10E0A000AC37B47F12FD898DE6F3D52310B4F3B5F8 +:10E0B000721BEEAB1E673C2086FD20070F4B6CDD0C +:10E0C00087DFB526E8DE12BBA816C279B52FAF519F +:10E0D00060DF82C10A935CD3F303D2F94F0FF78B51 +:10E0E0008C70BB78BCB6C101FC633CD6B006F8F6B8 +:10E0F000504844BEDD63D3F6C03ABAD7333F4977C0 +:10E1000074BD6301F87D3730293A1C6D40BFC2CE23 +:10E1100000A3CB7DD604C619F578CADD74BE170DF1 +:10E12000F9359600A3E3115BF400A85CDD221983A6 +:10E130007B6879E73D4483F8CA6E45803CCD7B829D +:10E14000AC9DB76929F2A1BCD29A5681EEE1EAE012 +:10E15000C93BECCB29ECD4F9F7D377A894DF0F5562 +:10E1600049B86FAB834F1FD4A4D9782DF432D80AA5 +:10E170007440E967A187C3D79AE7371CAFAB86FC29 +:10E18000E447E32A96FDF1462CE7B263AEB4D4F13E +:10E190003D67BD3B817CABB29EED7FD6FC6B478D6E +:10E1A0007905B6223DFF89CD3B50ACC7A9A625D83D +:10E1B0009F42FA577735E53F62DB0ACC9BDEE39658 +:10E1C000E1DC17FAA6905F6DDA1B94058AA7DE657D +:10E1D0005B5F2FA4F50E8B7D0CCED58F04CA226A0F +:10E1E000A01433E685A597FABDB0457E26777A055B +:10E1F00015E9F26CFC947C02EE8DB9E5351037E838 +:10E20000BEDE85FC8CEA036B20EED09B5F847EC172 +:10E210008356F9F55B412F5C25A2FE3F1E11D1BF4D +:10E22000302CDB8E833E71D021DF0FB056625778E1 +:10E230009E05DEDBE95C27639EEA16CBF4D94761D5 +:10E240007D852EE4CFBD813F3D309FB63FF8A625AA +:10E250000CE87870C3C43B1DB4FC75C0CFF2D9BCC8 +:10E260008D9E4BC59F49D4ACA7F549511B9EDB5DE4 +:10E27000740E94567A95B35DE0E7D7F322B6F4BDF9 +:10E280002E9F30F0B1DEBAF5ABF1DEE96E99403C7D +:10E2900061ABBCFEB1C2FC54BEC14131B62100EF3E +:10E2A0008B59E424AC73C3EA1FFE359CA70D920C76 +:10E2B0002A88FDDAADF66514B653BE0E27EADD00F6 +:10E2C0008BD70DC4C7AA37CF87F3F942F5662BC8A1 +:10E2D000E718EA4F16D1AE69C0B785E8F512E55BDD +:10E2E000AF1EFDE726380FBFAC48FA091DFFECC88A +:10E2F000D70F011F1B10C7FE7D82EEFF2F469CEE3D +:10E30000D5CED47A7F6963744667A418F5C16A2EA6 +:10E31000671E6DD9EC1069BFD523FE26473EE83550 +:10E32000B45F0A7F8FC211439E8F45CC9CCF77810B +:10E33000D3851EBF8475741AE8FEF7BC7E40228D1B +:10E34000C6B825B5C730DFEFC8C633C91320A788C4 +:10E35000DC0AF945E78AD9BC0E5A27B5A506799695 +:10E36000B3DD7A3A8BF20577A4D91C5FAA6D369D8E +:10E37000FB49BEAE961D779BE40F9162983F877A6A +:10E3800025F4BB8CE8793DB8FFEE2605E34B9B8571 +:10E390006823E4C1900E0BD25BD66B41AC1FA46D19 +:10E3A0000B3D201765BC8F4EEEA4EA5431DCAB0E5A +:10E3B000DAB6D0FADBA34EB4976375F27E90D36FD2 +:10E3C0004FD8D06F40FFBD1A033B84D7D3F1568F8F +:10E3D000C2786F15A11F6058084F421C56DBC7C694 +:10E3E0008BD5A9B8EFBFA5FB0E7E81D8E25F1CAA32 +:10E3F00052B01FBC3F760747A1E4F5BF0A7EF9B5CE +:10E40000FFE8C0BCFD2F043E7A430374FCC485F3CF +:10E41000DBB4929A2A943ECE4C565CFF97F4F9D620 +:10E42000A9B6D5207E7E57C8FCA1E72617BF04FCFD +:10E43000F8C1659E6A38478351D106F722EE5B41E9 +:10E440006AE03D9D7F1DE2E7DF5D3725E17DC66A1D +:10E45000DB6AD0671E5C6157408FB0D8C20AD00B10 +:10E46000D1BEF2C6CB7ECC8341BE7CB1F0D6432078 +:10E470001F7538FF58A80FE1B4FC977E21F673B8DA +:10E48000AFACD37DF71A19F14D56D35E8BB95E0F41 +:10E49000F023396CBF5C093FE6612CB329DD1C1702 +:10E4A00080AF9ECA8518C74ED9255107D81543415C +:10E4B000DF7ED0EFDA5F27E002218F3679F7DF4782 +:10E4C000D7FDFECB76C4DBC12D1FFA215ED8B3EC9D +:10E4D000E91690FFF60A3B013CB45EB710EF690CF9 +:10E4E00078D9F9A172992416023EEC54C053BD9B11 +:10E4F000EB6793FE09E4674EDA37F03339A476A070 +:10E500005E1E8A76805EEEAB9F56611EF92AE90098 +:10E51000B9396CD504B0E7B56A210CF6A35C2F922B +:10E5200084814E73C24E8875CEC04D9C9E09D928F9 +:10E53000439C5A509759E0FE1FF15FD9BDB5E17772 +:10E54000BF49C05E7BB850617ABCCAFCCC44D2944F +:10E5500075707FB940ADF12FC1FB07B84FDF1BF9D4 +:10E56000C541B847F5F65A75093CFFED7BB75D32FA +:10E570001F4BD7776760DECF0705B93DD0CFF9A92C +:10E5800095977C7F201EAA3E61E0170369F720065D +:10E5900044B21DE0356B45D4936FE778DFA630BEFB +:10E5A000A29745852CDFB560AA753BE8453ADD7634 +:10E5B0000AB10D285F36D864943FE19AC24BE51F3B +:10E5C000E97C78EB55F2ADA232C6C73F2BDF0A9744 +:10E5D000CDC5B7F4FB17FAFD4FB6FF73EFBBF9FEDD +:10E5E000E7F01C79E49B15762FA49FE37BF11B04D5 +:10E5F000F9C69DAA8C7C436F27727CCFE60704F98D +:10E60000C59D2A0943FB74BE907A9FF0FB98510D7B +:10E61000E809E424F011D1AF60BF73F1038B5D2EE4 +:10E620003C6BC08355F6171AEF7155271553FDE261 +:10E63000532153FD92C9B009BEF19D3A53FB655376 +:10E64000AA09BEF9C34653FBE5D351137CEBF91677 +:10E6500053FB15A4D554BFD27EBFA97E95FC80097B +:10E66000BECDFF0D53FB354A87A95EC7575E21E13A +:10E67000FA403401F77D8EC6552C8FC41BB17C2C1B +:10E68000DE9200FDF4D60BFF86F963037522D38B6F +:10E69000B5AE3B9212D0ABE230C6018A36D3F70D4D +:10E6A000E3FA37D27E0CE3E635464DF5C11D2DA6C3 +:10E6B0007ADD3EEA1C39807C41A7035D1F18AF7DDF +:10E6C000B311EC870717B9C2C0AA470BD9BE66DFE2 +:10E6D00050FF33F86EC4BE37F3309FB4C796F403CF +:10E6E0001FED6CFEE276388FAE1691807EE76AA948 +:10E6F000D926411E4538CDDF2D52D39C9EAB3F1FFE +:10E70000B9784757DD6C3972708E7B0DBFF7B373E4 +:10E7100018D8DE6C3E4731035C31FB9CDDB3D90C6D +:10E72000376F34C3EB9BEF369DDF1F15F2FB275C81 +:10E73000AF78BE740AFD62BD1E7E1F60573806E7C3 +:10E74000C9E7F27B609DBE7FADDFE6A3EBFC7621DF +:10E75000CFCF4AF3B3A4F3DFCEE6EFB561BE723399 +:10E76000C513F84F9B6B987FA6CE675AC780C8DE4B +:10E77000239AD3DD40C7BDF90617C2DF2EFC6A130A +:10E78000D845E3538F629E507F88F9EF28261DE01D +:10E79000CFB4DCC4FC99BDA186C24BC589DDE72D91 +:10E7A00026FFE3DFF0FD754B53E87F749FB761FDF3 +:10E7B0000C3E480CF9D5FA02F55338EF57AB1FE879 +:10E7C000746D5D46F93DC5C3589DD89830F06B0710 +:10E7D000B73BA3DCAE9C4C8AC8970BEA98DFD6BA4D +:10E7E00081E4A11FA3964A7B3A55129AD4C0EEA1A8 +:10E7F000A8D37214B0F3A2D5708EFAE32D58FA9B09 +:10E80000DA04AB0276D2D35DD06EA8C3AD42792EC6 +:10E810005473E43E05FC2AF20AF0A374AF2361F8B6 +:10E820000ED0CCF72F4A991D591833C7795EBA7BA1 +:10E8300001C6F13D4D04CF033D2F23A00F7B623174 +:10E8400001E8232F6ACE33CDA99DC2F93943720D59 +:10E85000E8610371D207F2A72034458D2E3AEF0B01 +:10E860008BC7417FA1AAE7F4402DC40708AE77B853 +:10E870009224AACA214F8060FEE570E5E45F027C25 +:10E88000341EC37549BB6347410F75B7D85C6087B9 +:10E89000156D36CF73DF86A7F17EEEF0EE0441FFF3 +:10E8A00059F259FCBE91339420313A6E5E48E9002A +:10E8B000FE9ED7A89443DEE5F0A7169E7768E8C7CA +:10E8C000E0A7EEE2FB315C1E1E87F5537D79BACFDF +:10E8D00077F9F90EAE5B5A08F260B832167019E893 +:10E8E00070AEF949F6C5376F5E9C9AA797E209F4B6 +:10E8F00060EF1B010DEC98F4F391170A0B702EE8F2 +:10E90000FC914FDE1C78B909CE5798D31791FA1AAB +:10E9100060BE7B4B7C980FFD0510A0DE149D0DC7DB +:10E9200035F4070CC4BBB0CC16631DE05F255B0952 +:10E93000EAEBDEC6E9209CAF024ADB200775FC58F3 +:10E940004B45461F9BCDFB9DD7E24BCB8F8BA17DCB +:10E950005E48EC631097EC89F7E1FED167FB8168B4 +:10E96000736A997DEFEDCAF1809EE16E34F797BE30 +:10E970001FBDF9A417F2C27B970D8733DD4FB9DABB +:10E9800052B7FF7F2488784E178D7C1FFD60700F73 +:10E990003AB610F063C7F2685CC6B2B829D901EE86 +:10E9A00018ABC4E6F945379B57719B79DE852D6915 +:10E9B000EBD86CDEB7F475ED033944F7EF96231D01 +:10E9C0004D1AB58BFA5715607EBC274234CB0D50DB +:10E9D000C63668943E86C79F25558B187DECA0A54A +:10E9E00027240B4D5529FA4D5F5F5B90E979C31BD6 +:10E9F0000AF09C9F83FB22BEB9FB03FAEBCC4BF5DC +:10EA0000EB969732F99546773ABD0D04EAD04F78E8 +:10EA10003BDC23CD30FE68D08EE3DF6E398E715C37 +:10EA20003DFF58AF3FCAF5C2615E1E89878B183D16 +:10EA3000D615019D50B9D3E585F324D827F740E9D1 +:10EA400021C95B41FF7CCF81F6526F48D0F26F48FD +:10EA5000F57784F3D38146C637B3DF0B1C87D872B2 +:10EA6000EF46099F7BD74868CFCC3C8FB1F68F36F5 +:10EA7000899AF9396B9FB7564A1AFBD1C779F83F83 +:10EA80002D4C3F389DB502EAFBD728A3C09FFBDF82 +:10EA90007BD60FF708BEC5F1DE1D8806408E789B39 +:10EAA000F74F0A80C7343F5E39E8434B303E87F367 +:10EAB0001D74D991CF0F4EDD8571A74AA23A405EF1 +:10EAC0000C452F2DC73CE7B333CA318F240B30BE22 +:10EAD000E7BC1BEB25AFBDD30D7E17B8FF27605CED +:10EAE000FB9D00DC3BB2B791654A2AAE7D48502AB7 +:10EAF000C19ECC0F7EAD495936B7DC1D8EB03C9A15 +:10EB00005F36C450EE765F2B12F09375471A0A8D6C +:10EB10007917231C1F3AEC4C9BEFFA82D8A77E533F +:10EB2000DC8FCDF753AE5F6789EC7E1B9D038B5B5B +:10EB30007BEC7BE03B5D656F9C16E03B520FBDF5C7 +:10EB4000C06B2574FC9208C1FB913BA77E8CF73902 +:10EB5000DCE410DE832675D2F49401EF07B85DF58E +:10EB6000DB00CF8FE6DF7F6ADFA964D9E9FB0F47BF +:10EB7000B4DBA09F8FDB6B5E83B8863E4FDD2F3802 +:10EB8000D77D992D73DCA7DE081FC5033B37CD3F2A +:10EB9000D7CFF5E1CAFA18C64DB2B69030E61F35A8 +:10EBA000C5D0EFAEFB7957C1DDC0ACD9FCD697C656 +:10EBB000673C119687EB6DBA341FDDC6C7BDEC7D8F +:10EBC0009D2BB4C367E2372D2C3E3E13BFD9201EC8 +:10EBD00087F8F89087C1DA7CB67FC3BADCDC28E31B +:10EBE00077EAB245E520C46FC86AF61DB6E1963FE4 +:10EBF000CCBDC5FAA20A13DDE9F183FD8E580BD016 +:10EC0000777D11511B298D7D6175E21FCB65804B8E +:10EC10007BEC0EBA5FFCBB2A678B4BD76A415AFF6D +:10EC20007784DB21CD7726D1DF180D18E3BC0E0BDE +:10EC30005B0FB983AD6F20493504115C64E13590F9 +:10EC4000283C96AC4962FEFA327114CE5D61DD005B +:10EC5000F28D41BB322152B9EADAA88CEF063DAF02 +:10EC6000ED7AB42F0BEA2A048C53A8CA7322C5DDAF +:10EC7000FA22E6D70A842A300E73DF2E45C8863C76 +:10EC8000EC88783ADF706F14E25D1BBD5826B36ADA +:10EC90006819154F5BDD106FE1F8BF49F70BF6619E +:10ECA0007EA65B5208F805032E4D00392CCB247C40 +:10ECB0003840E13A6D1CEACBC3144B741CFFE6F4F8 +:10ECC000F897192EA8EB5F7191CE2B91CC9DC68F32 +:10ECD0004EF1F6314EE78D4BB7237D0F06599C70F0 +:10ECE00032CAD6EFDE4CF0FB42FEBABE71C04F0115 +:10ECF0007DFFB6EAD9FDEBFD45E12C8A10B78A0904 +:10ED0000F8FD946291C07A66CD87DF87DCEF2FC271 +:10ED10007BCEB3E36DEA3B185728637E793DDEB6C0 +:10ED2000DF1FB35757CD8EB3E971B55B12F6A81448 +:10ED300030C6D5DC51635CADB3C81C57FB7E79038C +:10ED4000FA89F4B8DAAA8AFBD6019C1E571B5E9397 +:10ED5000F9BB07C3549E003D7707D400C6D9A2571C +:10ED60001667D3E36B0F0B9A02F1DB7F28F722FDC6 +:10ED7000B47BEA30AE7639BD68763C6DCF1EE8BF15 +:10ED800037CAF8FD78EC4C23C411BA5BF4B85AC208 +:10ED9000BE00606A77811DD11BDD8471CB736F5813 +:10EDA000F1F281DEEF5F945F595C2D54CEF8F38869 +:10EDB0008DC55BE68AABB978BBF4B85AD6F17BD780 +:10EDC0009AE26ADA97D6425CAD1FE26A4550FFA527 +:10EDD0001E6DDE6C3CFEFF1E573BCFE55A7A5CEDA4 +:10EDE0004AC7BF7CFC2DD102B01E7FEBAEBCB2F88F +:10EDF0009BAE67FFB05830C57367EADDECBC76DFC9 +:10EE000064C3B8AC7E8FB3D753807EEF9938DB3ABA +:10EE10001E678B8A9789B34D9F7D94C29DF9418C63 +:10EE2000D30D098C8EB4452EF44BF747CE8CC077AA +:10EE300080F65DEF0C839C3FD7527364BE025FD9AE +:10EE400065F7DAB24A4FF9D97718A750AEA4C7CD03 +:10EE5000ECE50CCE709F9814E7CF1D271B82381964 +:10EE60006D6FBF67AB7D992F1527FB6E093B175759 +:10EE70001A277BEF89B7EF34C6C97E5DF261AF31E7 +:10EE80004E667FF2EC15C5C9C08E037AD1E364D615 +:10EE900027C52F18E364B9148E14A5DACF15279B64 +:10EEA0002861FB3A579C6C51E9D5F99BC3A59FCFCC +:10EEB000DF5C567A8571B2BBCD71B2FC3F549CAC1D +:10EEC00039739C2C3F2D4E963F579CACF98F1B27D6 +:10EED000FB727139E2F70F1E2723FFF9C3970DFE6E +:10EEE000CCCD8FFDA4F74AE264C342F4E790FFA1C2 +:10EEF000D3FDE065E3646A00E264C72A6D0AFBFEA5 +:10EF0000E458CB7E80972D40F8FDA6D12098F4AD33 +:10EF10008DCA4AF033B4860AEE83BCDD633C0E969C +:10EF20008AA34DE177BF7A8312C6C5DA2BB3462197 +:10EF3000EFD55EE15F0AF6831E1F9BF48F923319B3 +:10EF4000E2647B393F93F93D4D0FC5C56DE5101F58 +:10EF500063796B1E1E1F73F3F8D8D055C6C716F021 +:10EF6000F8442ADE1365F19EBBF578CF841DF8D0F6 +:10EF700083EB44F4C7CDC5D775BE72B2F8EACEE1D3 +:10EF80004BCAE78B57FFADC2CEF15CE7F0B3C67D4D +:10EF900086E688FB3C5F6C33E595FCD46341B93D64 +:10EFA000CCF9D25C71A06DC59F2F0EB4AD58FF9EF9 +:10EFB000185B976E2712BB8ADF1F49CFDBD0EDC4E9 +:10EFC0002DB429E8E9FAF32F9764B6137F57A4E02C +:10EFD000F3F47C8D2D12D5F3BD1007CD7B1DFC22E3 +:10EFE000EEA8A840BE1CA537668FC836D3F73DEC07 +:10EFF000371560DE49BF9BC9CBEE52BB326A94A77E +:10F00000755C9E5A595E8A96CFF252F4BC97CE45F3 +:10F0100041B44FA9BCC5BC182DDF89F5874A1A0F2A +:10F0200083FC1C6E6172F5C1454CAE1249F5C3F705 +:10F030001786B8FE9B7C6C17EAC3FBB93DAF2DB0B9 +:10F04000B1EF6448BE7B5A408FC89F87DF93FDA70E +:10F050009DEF0F7DD10776D33CF41BD7F37CA12F16 +:10F060000B12AEC37937D513E8A3C6DD56F6DD9390 +:10F0700010D39FBF7213EBB73044D05FB31CF06660 +:10F08000B0FFAC2182DFA5D3E3B03AFD176D565037 +:10F090008F3AB271601CE8FF185136C13D8599FC6A +:10F0A0008EFC440FD27FAB88E7F6DEFBF799F67350 +:10F0B000A69D83D159D7A986C069037DFE4861F317 +:10F0C0001FC851026047BCAD6C8B82BC76648F2137 +:10F0D000DF7C3D61E935E6A3781B1231E03BD6C207 +:10F0E0006F57021F3A3807BD9FE2F1F3AB8D07FD62 +:10F0F00090DBFF579A279B1EBFA988FAD02FB566D1 +:10F1000015F333EBE7462F25AE87F6F3EF651E8345 +:10F11000EF64629C8F7DE7B220A276484AEA9CAEFB +:10F12000E2F186747F46F17633BCCFDA360E766430 +:10F13000F72A16AFF0A77D5F3BDDCFF1C5B2CCFA61 +:10F1400070BA9EDB9BDF8679AFCA5EB72C14A11F15 +:10F150001CF55A22DAC7407FABAC67F55907723C01 +:10F1600020BF7B977D827E7107954D16CF95EBD79B +:10F1700073F99BBD30372F2B8B293FD0ED92F9F3DC +:10F1800098BDDBC4F7ABB384F27F1F645B8B61F087 +:10F19000874A77DF83DF6750CF45B5291FC681DAFD +:10F1A0008EC1F70D7C317C0EDFFF091AF46DFDBEB8 +:10F1B000517ADC73C4C9ECB1F4F9361532BA35DAD8 +:10F1C0005D2C5ECFF9EB62C65FD3EDAFDF3C5573CC +:10F1D000A7D9FE5A7CA75A9FCA6BFCCD538B7B33B1 +:10F1E000D95FFAB8217B02E3642369DF6B1F8F7953 +:10F1F0001D2057FB639BD03F3A1C62F99A236EB6E1 +:10F200009E7B834FDF01FEF347E3DBB95DD6668A61 +:10F2100083CDC42FB85D3F4317A58C2ED2E35DD6B6 +:10F220007DF20ACC9F5E47F0DC1F8DEFC4FEAC0E72 +:10F2300005E36064AD82CFD3E35EE9F1A8D9FE3780 +:10F240002FEE67988C4C48E817F1258C76DC5854E3 +:10F25000C43C7B4258BE63A116F440FCA477D9D7C6 +:10F26000D11E73EC2DC578C9B64276FEC3C22712F3 +:10F27000F27BDAC7498CD330FAED12FC1877C9E675 +:10F28000DFC9D5E9AFD0C7E23A9BA8DC1202B3E9E7 +:10F29000713FCF4B49A787C52582295F5E7F3EDB43 +:10F2A0007FCBF2D875FFEDF3A5098C8F777B32DF2A +:10F2B0000F1F0DB07ECB5371E710D0D9E5F2730666 +:10F2C000E2EA51637ECDBD4DAA00F3F7352654D056 +:10F2D000F388BDCF0F79407A7D3DCF37D7D747E54B +:10F2E000A2087AF7817B2B90FF7F65F72B39375285 +:10F2F000BC59C72B50EEBCC4F3765B37B0780259CB +:10F300004612F3599CF9CE3A1F7EBFBA1AE4D5468D +:10F31000E1E57C9057CE7189C551A529D37787AC9B +:10F320007504BF936AE3725FF2DA514EB59784D0E9 +:10F330001F087A02F8337439A7EB0BBA1E31D7FADB +:10F34000E7F237BF5D9A598F38688DA2FEA3ED664C +:10F3500074F2A3D1B68FC16EEF6DA928073FEC44BC +:10F36000CB26C7698827D5FF8B5D70A5BEF799AE00 +:10F3700077B4EEBB1BF3448776C9C8FF9695303D42 +:10F38000EF74A74554C1AF1912D1EFD65AC9E4435F +:10F39000ACC3EA067C0D45BDEC7763B6C71CB02F45 +:10F3A000BFE2F8252D3107ECF7701D3BD72261F73E +:10F3B0006886EAC48CF74DBEC8ED65AA5F04C0CF6D +:10F3C000E4105D61B8273798CFE4E4C4BA7B1CA091 +:10F3D000AF0FC951470D2D3F0EB2F336D4B2DE2127 +:10F3E000A2DE1B45F975B685EDEB601349C09DA102 +:10F3F0004152DD01F9B79A6A9F3E89F68C80FAC6C0 +:10F40000604B18CFE71069C39F34D1DEB298F4AADD +:10F41000827A96CF0B76247C5F3B00AFD27506A62E +:10F420003A0498DFAB54E0801D1868D104E8FFD09F +:10F430000A3B7E976495E571A114EC7ABF85A0DF45 +:10F4400097B0FE724B08E6C3FB379BEFA35A72DA04 +:10F45000F13B36DE98ABCD82F712CCF5747EC9272E +:10F46000607E7559E8AFC935DE432F87AB6586F6F8 +:10F47000140EF1F39C45AA57C0BC3EA6EB067BF4E4 +:10F480006CF34732D8AF43F51211208EDD3C807EFD +:10F490004A2D4C94F9946E869A1B1CF719CEA53F01 +:10F4A0002A6A600FD0F274D6F5B3E79D3ECFCBCD7C +:10F4B0006BF0D4BE7188EBEC9C12D04F5A5592F68B +:10F4C000BB2BEBF66481FEE08FB565658A03EBF13B +:10F4D00081E5453A3F89A25EEE3C2F5C26EE2499F9 +:10F4E000E24EF7EEA5B408E7FA4B22EA9B446674B5 +:10F4F0007BEFCA047E8F6198C2702FC76663FC954C +:10F500005A733D4B815E9A2B6A404FD6C7F907EE7E +:10F51000FFB8979F57782F40CB5F4433D3F73DFC1C +:10F520003C0DCBD44EA3F57FF2D02A87F15E7C331D +:10F53000F7B70C2BAC7EE30373D487999DF7E56F87 +:10F540007CFC53E04F83D10AB4F3FF4F90D92BFAE0 +:10F5500079D3CBF2F6BF40B93B14627151628F3957 +:10F5600050DEDCEBF5F0EFA929C0A7CEF1785E758F +:10F570000931C7E736317F8A1FE27324159FDB39D3 +:10F58000B5EE3688CFC9ED4AD8788FD10FF13988DA +:10F590008BC6CC7CAA93D3E5C3EF76601C7C4789ED +:10F5A000394EB7536DCBB229A9785D7A9C4E2FAFF7 +:10F5B000345E47F97104F880B54E7B06F8B1D5A7E3 +:10F5C000DAC07F971DD4EA60BEBB4BD8770AEEB78E +:10F5D000447797801D36D8CA7E27278DBF6EE1718C +:10F5E00097CBD96BE9BF87234F758C976498FFE75A +:10F5F0002DF5DFC1D1BF1B7194EBE7BDBC1C4AF3F5 +:10F60000371F4DC373FAEFE1A4FFDE4D5EE3A5F5AE +:10F610009EDC3A737D41B3B9FEAB258C0EF5FD2C13 +:10F6200097A3CF96E4A7F228B7152B19F328757F77 +:10F63000518678F6F3B03F73C5B35F2FF9F84E25C6 +:10F64000908A677B8AA52F98E2D9CD2C8F6C269E55 +:10F65000BD9AC5B3FB9BCDF1F77F2FB9743C3B3D01 +:10F660008EBDBE407DA924FFEAFD64576B9FE596E1 +:10F67000F6A07D3DB31E1EAFA107CC710BE0E91EC5 +:10F68000961777B97C023FE4C519F4BB22BE0F7E02 +:10F6900049C37C023FE4C5E5A5C6E90DE9E34CD9C1 +:10F6A000719CF5741C05F400731EC0EC71CC789B42 +:10F6B0003D0EC3DF4CBE6088E555BA433519F352A1 +:10F6C00052F982674DF982FA3ECFA5D7DE539A5997 +:10F6D000AF9D2861F349D76B67F23C232C7FD1158E +:10F6E000E1F98B73E4797EABE4F9B599F23C1F2A1A +:10F6F000506DA5F9B3F7EF4AF32D3DC54C4EBC0153 +:10F700004C76C9E5F357B3387EE7CA5F9D2BEF749B +:10F7100051E97F4DDE696D9A1FED8035B3BD10E371 +:10F72000FB35D39EE7654E707974A5FE9D99B8446C +:10F730009A7F6778CDFEFE7B0CFCB8B294FB6F66B7 +:10F74000FC3B5E937FE7885E9FC3C61DF698F13849 +:10F75000AC8FC3DB1D70F461FE41ECC9EA2F18FDCC +:10F76000405F2A9D77F8B3F8810A3FE3FE2C2E26EE +:10F77000FCDEB6592F9A4DF74C2FEA6A1CFD39E68C +:10F7800075B410FC1E7563A982E316348FAA70CF7E +:10F79000A448225D762AFFFEA494ED4B37B4AF4D0A +:10F7A000B5F7EE518E77823E75AF8DE79B26300F11 +:10F7B000C06F57BCE08779EFA1471CB0CE46BE1E94 +:10F7C000DD5E1A168E9BBE03D2C8F1A997548F8EA8 +:10F7D000813FA47D03CB2F70707D6C388D9E9FE29E +:10F7E000ED757A3E16B713B8DF41C5DB1E88937FEF +:10F7F000332E23DC13F713D01B8EC7152C1F8F87D6 +:10F80000B02CFEB3F3483FC3028981FE5D5C3476C1 +:10F810001AE20E640FF3830EAF32D3EB137CBF8F6B +:10F82000F271CBB4B4FD6933FBCBCBDBCDF59EBA23 +:10F83000D80A389F055D663FFB35697EF7A2BEE6B4 +:10F840004B9EA3E1D75D9DE20D8444F87EBDBCA133 +:10F8500020007E9440C4D60AFA57D7CBDE00E4A33A +:10F860003E5ACAF4E5E15536277C97D7EB64F49706 +:10F870004E6F7BF9BAF6F27D5624A2D9BD804FC2F5 +:10F88000F1C5F09A7B2117F5C27C8DFD2E07DDEFC7 +:10F8900035E0BF2BAB2378BFC94DA6C74FD4E2B428 +:10F8A0006360AF8C00FEE9FB4F7CFD17F77F0BF028 +:10F8B000DC51847EE4311ECF7BA288F1EF743C9F43 +:10F8C000E2F3799997C5B7AA01FCBE00B707FDAD71 +:10F8D0009D0EC84F702FF3561BF5CFEFF37DE989CE +:10F8E000ABC478CFA7A7F68CDD6857E42C398B79A9 +:10F8F00045B3F68FE3576F47EACCFB19DC6C6E5FBC +:10F900005BCCF893D79619AF637CFE636978D5ED2D +:10F9100000DD2F3ED8EC35C59DDFE2EBD0ED81D682 +:10F920007DF9771AEDED29CD52D0E2637609C0BF9B +:10F930009AD1FF63789FE20FADBFFF96AF43D7DF49 +:10F94000CF96FE71F577555215F89D1F779556079E +:10F950007AC796C115A8BFDB407FA7F0B95207E26E +:10F96000E77E8B7AAE34835FE42741C2E5C8FF9B14 +:10F970007AB9ABECD2BF53F987D6CB7F596AD6CBD5 +:10F98000D3EFADE9E54D65FAFD3DF973C5F386B9F1 +:10F990003F7A73A2EE5047D5DC7A4869D9678B77F6 +:10F9A0005CAD1EB2D5AFFB0DD8FDB401F81BF483DE +:10F9B000FBD9F90810EDC05201E24043280FFC5C6E +:10F9C0001E949679F0BD231B47F17BE673C58344F3 +:10F9D0001E1FD1E341BF7F8A605E99AE077CF2D4DF +:10F9E00089CFA407843E237EB6F819FDDF7AE17F34 +:10F9F000A2DFCD5AC9EE238E85CCFE893FE1F70008 +:10FA0000E33CAE92EE67CF6B627115F06319EF0BBA +:10FA1000E8FEF5F4F84E5EA40DF3248F71BF7A7AF8 +:10FA20001C263D8F353D1E94EE57CF16995F1B6205 +:10FA30000EE0DF1CDEF500CB5FEACEF16417E1BD1E +:10FA40008109F0DB3BCA24F44F7ED6F33B571C27D9 +:10FA5000CCF1561999C23CA9AC0EDD6FCF7E77C9A7 +:10FA6000F115F9388CABE33115A7E6F1071FC35F39 +:10FA700082FE0D7EF9F43854A14FE996DDA979E8AC +:10FA8000F9569F77DE47E22AE6DB0FC41B31FFFE03 +:10FA900059706082BD7AE12B0720FFBE9BD827C139 +:10FAA000BF3A14DA74C0EBC3ACDF31F017EE6D5E11 +:10FAB000FF3AACF3C1753605EC3F7573A2D38B7C6E +:10FAC00038BC18F8F089329BEE373951B624F5FB73 +:10FAD00034835C4FA6FC4FDD42C77B69DD6A01F4CD +:10FAE00091BC261657C96F66DFBBDA4954CC972004 +:10FAF0005182795DBEE6688018E4EDCF391E87EE4D +:10FB0000EE17E07C0408BFFFDBDC2F809FEE761E43 +:10FB1000F7D0EF15E8EFBD52C6FCE3C31BB99FEB6E +:10FB20003C7D5E40D03686F905427DC20AD033F86E +:10FB3000BD01F2AFAC7E08EAE9C402CDB41EF44BBD +:10FB40007E7F80BCC8EA07F5F7A3FC7D7E8F805CD2 +:10FB5000F84FACEFD7EB23AC5EDFFF57228C7E0370 +:10FB60009BD97D8FC066FD7EC60152454BBBA291DD +:10FB70001DB40C287D42932B75DFA363C3D600FC14 +:10FB80007EC1F8E96D47B7C0FEBC5789DF6F2D2FE6 +:10FB9000E4FAC0DD1FF8C17FDA1B90F11E821C3C25 +:10FBA0004D8CFA8A3BC2EF25A4D9D1AF95317E3076 +:10FBB000F4EC8019AFCF0CA4E195D1CD9C783D3702 +:10FBC00007DE74BCBE3B17DEF8FBBB2E66C49B8E03 +:10FBD000D757CA14FE1DFA4FB15DAF3E4E1D1BE74D +:10FBE0007271D56D5CEE1FCB99C27B586BA0BF7C48 +:10FBF000B887F40CC68F747B6688EBCF2FDFFDB41B +:10FC00001FF5E610D39B67BEBBA59D380CEDB3B9BD +:10FC1000FFE1FF02010369FD008000001F8B080067 +:10FC200000000000000BED7D0B74545596E8B9F50B +:10FC30004B55A52A755309492504B8F957A008154D +:10FC40000831B4416F2068B0435B4090A0B1BB4025 +:10FC50005A836277A0D1617C602E103009BF4AA41C +:10FC60001169ECAE44B0A3A36DDAC9737C3DBE3715 +:10FC700015451B67FA13F928288CF133DACEF49B6B +:10FC8000493BE2D033A8EFEC7DCEADBAF75221E983 +:10FC9000D7F65B6BD69B5A8B7538F7FCF6D9FFBD50 +:10FCA000CFB9379FFDE8E87E254048C7F1053923E5 +:10FCB000B4FC8F6922219308F9FE529B53F0106225 +:10FCC0007590D0007D6EB3841C4B6712F225FCAE9C +:10FCD00027243FCF44C85C42061A4DF551DA1EACCA +:10FCE000B584065C57B6AB653A91046226A4284FEA +:10FCF000C27A2E19104821213ED28ACFDBA7C8AB89 +:10FD000048252D8929B89D9696A5B710524088FCA4 +:10FD1000694819C924248D90D6C341425233C38403 +:10FD2000D029D799C3B9D2DCC47A16B19584611FA2 +:10FD30005642C8D7E83F72FDDE98061EB534DBC5D3 +:10FD4000EC0FFC047F5FD27F56D197FD813D51AF10 +:10FD50008849BAF63927FCBAF6B9C3415DFD9AB3B2 +:10FD6000D5BAFEF346645DFDDADFD4EBFACF1F0DA2 +:10FD7000E9EAD75F6AD2F5AF25AB75ED0BEDEB7411 +:10FD8000ED8BC40DBAFA8DBE3FD7F55F2C6DD3B5A0 +:10FD9000ABFB7E3097205D7BDA42D10F288E1E6D43 +:10FDA00093B17CA4AD1ECB1FB435453F28A6F05CB3 +:10FDB000FE177B88D2B9A7DA0444A2BFEB96C42C05 +:10FDC000B46E911CA2069FB96BE978CDBABE663AB3 +:10FDD0008F66DD8CFA90AE3D6F7D93AE5DA5539E30 +:10FDE00074FD5EE0BF7C31B41CE869CF3F6D0FD37A +:10FDF00075C41A122CD28CA73DC50F5379DD0C0B9C +:10FE00007A29B2AFA4AF5A12A2E07E2D5E7B1DA16B +:10FE1000FC63AD2651B3807CB31AD64989AC967386 +:10FE200080FE9903C837CE90657444035F7736C36C +:10FE3000172199CA7B148E33E966F225E5D70D3E6A +:10FE400082FCBB335DEA6DA77CDA75C111EC03BAA5 +:10FE5000DDD46217E83AFB724C424A3E215E93922F +:10FE60003295B6935B49F0182D368FBCEB837AD66A +:10FE7000F95260F7041EB3059CAFA78D28EF152734 +:10FE80004AFC55D179A0A472909159243454E2D3FC +:10FE9000510F8521235630B495AE276E4C933CD537 +:10FEA000544E82790827E570C48FF784E95D6B3979 +:10FEB0002D1BD4E76C5FDE861AE53DCD3E43126B09 +:10FEC00017C8976D38CED0BF740EDF3F15BA2F4BD1 +:10FED0000979A580D55F496774C88DE3A912E71534 +:10FEE000042B3E778FA40F4D91C6A6CFFF6DF9036B +:10FEF000039E1E8592F2D23E5E7E9F976AFF1F4A46 +:10FF0000EECC0F6750F0E69039C8379C9EC234069D +:10FF10007FDEFA4C1D3E366D9652EC12F0AFFE7944 +:10FF2000EEDA4C1D5E3CD5FAF6AC467DFB9FD5293A +:10FF3000379AE93C1FB49D108F5278F6B7517EA6D0 +:10FF4000E5C54DB37F9EA2C1CBB7CD4C0E9AA3C2DF +:10FF500092ED940F773B48D34012BDF573C9847876 +:10FF6000CE6969D4AD4BC29A3AE593A6F52B74EDF0 +:10FF7000B7ACD5D71B9BF5F5658D2B74701F9DCC49 +:10FF8000E8D9232487E3ACC4F4F9B1C922A77B38AC +:10FF900027E4A6F25CDF770EE4ECA09F48C0FF29BF +:10FFA000A0E769BBB3A94F96E93CB916D2619F9D02 +:10FFB000B033AA7D39BEE2869C11DA9E13B2AD360B +:10FFC000537E75808C83DE51CCFB605CAA89E1E7AF +:10FFD000B5A8791FE8896189DBA7D75CEDA659141C +:10FFE0004E8081AEABAC23D16354947288D2594514 +:10FFF000CB5BD77D7FE8287DEE1348D84C87E4158E +:020000021000EC +:10000000A623DC879BD73CBA960EE9013C83BD381A +:10001000B120E75DCD3E5715727974B3FD1F4CD703 +:10002000E3E116DEBE0C4ABA76A723D244A85D925D +:100030000A7B965A7200FE0189D0F57C85F747EA63 +:10004000BE9618E75D100D87E83CD6ECA7CBD6D05E +:1000500072B735397E9FE3F81D8FCE7D9C4E653596 +:10006000E16D56AA1752BE4D825DF45146435800C9 +:100070007D96ED65FCB888E2F4CB145A5FABE7D708 +:10008000CC267D3DBD2E88E3BC0DFAE7AABC609D61 +:10009000F2EA19A00D85CF4B9FE578593999D29591 +:1000A000D4B37EC545B41FDDC25F717B73C8196DC3 +:1000B0000A25D9E75FE5323C665C4A274A06D5D374 +:1000C0005B2501F828AE6FE7307DEB6DA8BACB4217 +:1000D0008D7FC6D4D9AB054AC27B7AF784EC5368CE +:1000E000DD29BEB680D643CADE507D59627D153FFC +:1000F00013D5277EFB881DD63DC4F589FA7C28BC24 +:10010000C0017C7920BCC641800FAA177808C5CFF2 +:10011000A134C68F62EF6D4B941AB097CFE2786B23 +:10012000992914A5FD06FCD41FD2ECB73C9FC96DDC +:100130006B3EDBEFC36DA10AB0B7DD6D4D580EC746 +:10014000160856F06F9A493005E9108A98693DD330 +:100150004FD04EA49311D240E589F847644B25D483 +:1001600089E2463A2B02D8C9B83E9B4A105FD96152 +:10017000BD1EEA5EF4443D8CFBDEB634D95C097AE0 +:100180004DDE5F4045B33B9DD12523A4A7B70AF7B9 +:10019000DE3672A81DFD8430C2E9AE1C51002EA7C8 +:1001A0005F9C0D70BDBCE84302729C160E0B308F35 +:1001B000513F66F9E5E114DA3F9DDA5D7B3EEAEBFB +:1001C000C85A8ADFF4CB8F0BA1C0957C95D140141F +:1001D0000F95676F3D93E78365241AC8C7E7C45E30 +:1001E00009F5E167A0AEC277B02C9CE3D2E079E7D5 +:1001F000AA276480E7E0D62801789CB12789E40625 +:1002000078A3244CFD990CBFB4CD84FB97F24D74B8 +:10021000FF073F37A3FC1FCC1773BC2EC05355F606 +:100220001A5A3F9CCFE4DAC82716FB9C6BD7CE49FD +:10023000D4D344CA9754B688D60E50BE5B9ACFF832 +:100240007E3CF9989CCFE428C8F98658220B2C7480 +:10025000DF3BA664F6765110BA268D5AC01F96CCA5 +:10026000A2204C4EF0D1C136A5E203B47F1D58A6A2 +:100270009AA8FCD371E44EE66778EB47F3605C160E +:10028000F511CC15093C5BA79A187F18F4404693EA +:100290009E6E54D1BC964DE7CB26F681AE4AE083E4 +:1002A00008D2BFABECFE5AF06F1C3BD244D0A7EE95 +:1002B000CA56AC7B3BDCE9504FABBFBADEF8AAFDB7 +:1002C000806E2EAFBF164C288FBF9AFC3DF4230FD3 +:1002D000AFCB42B948AFA316641694E1552030075E +:1002E000879E2481998C1FD6D332DD2F0A0D010DF4 +:1002F0001FACBAC1B346C34F170D7C00F46FCF18C3 +:100300009FFE3FE0F4A7FC4EC2A5402F3B968FB660 +:1003100089584E6E886DA3EE34B15AD8B895690CE1 +:100320003F935BF5F8CB36E867B256BF8E11BF3B03 +:10033000C19FA63AF7C9DC0321258F904B230BB34D +:10034000419F8F85BF9E367FC5518D9F64B4F73D19 +:1003500026D202F5C54B187F9EE0FAEBDE027DB98E +:100360003397D9E3AC91D52D44A3770B42750E8812 +:1003700023162FA5E303A84FD02F53CB137C7C77F4 +:100380005BEB7CE0AFC36D9BE7B37844C132AB4E0F +:10039000DE669112FB5CC4F59BD16E4D6ED1D777B2 +:1003A0005A5B87C01E762D22C13E3ADE5767E46F46 +:1003B0003DDEA614083A3F3F67B289C51784C91FBE +:1003C000B8B75D15208F8CDF25CAFF422ECA1DCA23 +:1003D0000931D9078E55821DA6ED60873BDDE95DA9 +:1003E000419097CF500E1D5476CDE97F3C5F3FDCA6 +:1003F000D682F24EF185F2E86B6815AC1AFC58B95A +:100400003F1EDFC754B60FA33DB0EE146BC11E9064 +:10041000A5545F48C0979B713EAB43DA06FA872C20 +:1004200091F0B9D12E18F5FB957E8197E93372E8EA +:100430002598FF605E66B44BA3AF079A589E8090E4 +:100440006813E0315BC94B07FD92D02B53518F9C51 +:10045000C9657A2E287C66013B40031372AC22A149 +:10046000973A041FEA25EA1786416E557C65673284 +:10047000BDB786FAA542CE95F853E35AEB3CC68F3A +:1004800003D50C1E15BEC202E6779D2950EDB41EA1 +:10049000DF190D8C1FB2885EAFAA7836F265465D13 +:1004A000AB00798AC31CBF46FE31FA59463E36E29C +:1004B00037D5C4F607320EF838B86503CE47BADC34 +:1004C000E9A9B980C7832F01FD1CD32C5173FEC449 +:1004D000F96DA2FC779399B40E24D127430576C415 +:1004E000D74DE6DE26B0EB9B6928AAD3231CAFFBD1 +:1004F00079F9485B3097D9AFEA5CC0CB7353C39DA1 +:100500005EBAAF03827D783B85FF403A895D4FEB51 +:10051000CA0507FAF307FD8232695662BE47381FE3 +:10052000F5D49BD04F48BD90D30B71FDC1660B3EF7 +:10053000F72EB6C880A7F8F330EBFF708349D13FA0 +:1005400067FD33965862DA79D475FEEC0B7318F6B2 +:1005500031F46E4A2DB41F582CF5A5D0F603173E82 +:10056000F6819FF02AD71BFB72A23EC88B78FDBB99 +:100570008605F00D0D7EE83EEE07D7DEE4EF6DCF89 +:1005800064F902F0F3368FF4FAA666423E20854005 +:100590009CB893FB63BBC4B03D1DF601FCED827EAD +:1005A000AB05AD5DDA992BA8F6E53F65BE60278FF8 +:1005B0001F1E699391FE3D6DF5C80FA102F6DC7C0C +:1005C000F9E64E2FE089D887BB00EFFE35C81F0A39 +:1005D00015D9625AEE082D780DF8FE7BF36C12D017 +:1005E000435E1B6D87FE6981E09C2E8AC7C70A6C3B +:1005F000889F75E6D06305B4B491560279C67D6EC6 +:1006000016EF517CC9DFA6EBBD3C8FFAAFE0FF3699 +:1006100030BD97190A5681FADC4CFD6D1BE0AD9A8E +:1006200048C7A81CA585E41CE2D6F07D01D34F077E +:100630005674A31F9B03FC0E7AADB15B80FCE84DA2 +:100640005C2FA97CAE8EFB6D814367675EA963F862 +:10065000C859CBFC949CB5C9FD941C7F44E7A76C9A +:100660005BF5A1EFBD00F0E54787EE00FC5C289B41 +:100670000DFCB48FC753FB963EE103BB2FE6F51E7E +:10068000027B94D66423E04FA63571FE34F82B0329 +:10069000058C3F9F9B2AE700FF1D48677832CAF907 +:1006A00062AE17F781BDA725B184FD18F7C4F3C367 +:1006B000A263A9064FC3F93C3F5CC7E221637E58A1 +:1006C0006D574B353F7C2A5F4A9A1F0E72BD5D56AF +:1006D00047ED07D8D96DAAFDB0A11E707C4BEC0583 +:1006E000BDA7EAF144DE8EDBC14CA6BFA3F4FF60D8 +:1006F0001F8CF63B3B53EA12D312F0FD5A208A308E +:10070000FB8FD79B079BB9DDBB44FB51E3710040D6 +:100710002B847C4744A87525F416F92D6BDFC7445C +:1007200092E454D3F640427F9117597B973ADECF3B +:10073000C7733D462E7F81ED07F97815AE9F707C1B +:10074000FCA480D12DA72922405EE5C0933D7AFE0E +:10075000EDEF31F02F93CFC43C4CCFC7F7F3E9381E +:10076000FB393FCE7EB68CB79FCFAFBA9FCF39DF74 +:100770001E76D3780FF2B7F5FDB24CCBDFF2FC90CA +:100780009A6FEAB426E767359F965B28F179A8BF90 +:1007900089F63D35047628B3298AF379B74BA8B793 +:1007A0009DB7DAD09FA41C84F6C06797BCE0175EA3 +:1007B000B8EF2107E8E7DFF2F96C6027611F02B3A9 +:1007C0008771F99798DE56CB45E6236138E7D8B4B0 +:1007D000CA16847CA0C3C6F07ED090FF5BCDF34CDC +:1007E0002ABC87693C7194F2D93442B603DE1EA755 +:1007F0007105D4F7B6F908F8F3BD6D129647DAFC27 +:10080000584EFECE25CC831DE479B0C9B903EFEE76 +:1008100002FDB6DD89F1E2C1457AFC7C8BE7B76E5B +:10082000E3EB4E530C79A8D6469D7DCBDFA46F4FEA +:10083000AF0ED7823DCBEA68D4D985C23A7D3D3729 +:10084000A2AFAB79C7833CAFF71B89E981E3ABB2B9 +:10085000587EB08EE507D5FCA1919ECB0B197F1F6A +:100860005C6A720A904770B27C9BB15F1DDF5F1DAE +:10087000EF2F598862F7025E09C71BC3AFE7B207C3 +:10088000FD882C8544417F52BA77425C31CD4F249C +:10089000B0334E328A78A5BFF0B120E48F441CFFFC +:1008A000D8FD6FADFB31E07B5B6E10F0B0B190F125 +:1008B000EB63B92C9E32E2BB8BE379172F275F2FB6 +:1008C000A21EEE9EC4F8C0B7BADD5102F66D9EB707 +:1008D000427B6EB095EF636F9B8CF0AACFF756BE4C +:1008E00087E7276ADD3DF70311EA463A1AF142AA83 +:1008F000F574CD5BABEFAFD2C76B4B8ED78D1C9E23 +:100900008D06BC4EF49CE6D759A1870BE9386501EA +:10091000F1B7BA12CF8DFD1D400BAAB4069C149FEF +:1009200049FCCDC739BE7FC8F1E9D9FC4F591FD06A +:10093000B8FD478584D7DFCFFA600E213FE672AF5E +:100940008EDB3F3FEB1CE4B7F60AAE567390CD8BBF +:10095000FE769D2D0A7EC05EFBFB388FDBF14F38A3 +:100960003E8E6F2EAFDD86F8F9550EC7AB1C2FD12A +:10097000B6E12CF007A83F897E68F75C12853C79C8 +:100980003E111F453FBECE46601D220E13B0A37F11 +:100990006380CF5DF706813C24A91111CE0CD926C6 +:1009A000417CD56D0D0A6B61BE74535011E1F9ABFA +:1009B00067C1CE67C4FCDF2658B2FC2969D0DBFDD5 +:1009C000EE4536CCF78A9544467D5B9429005ED58A +:1009D000F59E2F7420DC463A51F863B0FEFE250CDC +:1009E000FEFD171C39C05F911C3107FCE0EEF9C316 +:1009F0003ED07B1995379C407FA32813E99F51393E +:100A000031B8D475D471E3F14D3CFFE961F9813817 +:100A10003DDB2239FF8079D64339FF500CF88F62D5 +:100A2000D9D7D68FE5136D03D8AEF6176BF4F197CF +:100A3000D79037C857F4ED851DFA7AE9A1E4F19B08 +:100A40007ACE9480EB055C37DA16E3709CE0700E8A +:100A500073F8CE5E152E231CC6758D701BE11C4BE2 +:100A6000AED4D243823781AB2792D1109470B609AD +:100A70007C914186D10E3F9819761441FE9F88E8FB +:100A800097512E796D2BE583C72FDF88F9DEFD4561 +:100A900024BA1D64747E245648EBEE5F38942EC849 +:100AA00017D6CCC67CD9D09E4FECA0BFF7EF99EDFE +:100AB000847C7AD9D35B74F0FAEDA318A7971CD184 +:100AC0003F7FBC668107F85F22EC39C20BF2D2C1CE +:100AD000F48BA3D2B8CF0881791C9732893227B121 +:100AE0006F4198CBE3172BF93295FA077C7F27CC1F +:100AF0007241D1DC841FD7C7CB2778BEAA9FD79F6E +:100B0000E6F5015E8FF2FA4F78DD7FA2D9037EF120 +:100B10007E5E7F8AB7932206A7B7CE44623AFA3840 +:100B200075F5D2435E5DBD2C9A4B629A7DCDA40EC5 +:100B3000BBB6DD7F9EAD37163D2B6226DDF87C45CA +:100B4000BFDEAC17F4EBD11DA1DC8B35FA7567F471 +:100B5000EBD71D6BBD9EF9A47E2EA57B643EE303FF +:100B60008F4CE38E7228A9FC43BEB4461F1F3B8501 +:100B700038FE97154D4AE08DF899FCEFA9592641AA +:100B80001E252E3F69C32D2117A32F8B4342D2B2BE +:100B9000ABEC7FA868FB76D4B79526D4579D45DE8D +:100BA000C50574EA9F513A803DEDAE647CB5B3E46F +:100BB0002D3C3FE87C3082FEA423F6289E1FBC40DB +:100BC000FD02A514F8C18EA5A32882E7096E8BB299 +:100BD00010CE1368B8980FF932B73DB2D0047AFC42 +:100BE000035AA785DB252DC0F60E5E1783ACBE87A2 +:100BF000F5FF29F517141AB815F1FD57148966F099 +:100C00007FAB49C40CE7874F15ADE8B1CF83503EA9 +:100C100068D2D631F584F73256F4C4289C3FBB9C89 +:100C200082F8EEE67267D91A918BB47257576086D4 +:100C3000FD7F6F01259F469F1AE585E27F3BF0FF10 +:100C40007EC339D8CF6A58FC863FB03B95622FF3FC +:100C50008758DD51CFEA078A98BDA3FA612FCCE30C +:100C6000E1FAC1F3B109F360463937CAB751AE9F13 +:100C70002A223C8EE3725C6792C15E38C8A6C4B873 +:100C80007C84FB5158EF592E67CF70F8A91EC3F82A +:100C9000515DFF6B2F0E635E64D66004EF0FA97287 +:100CA0007D3423FC388C2F7B41DC9E46E932EB45BA +:100CB00009CF0F1ECC948FE2F3A79B75782A39A237 +:100CC000AF4B84D5E3FA28C2F876DE88893A407AB9 +:100CD000395734E3661FF7EADA55FD44F5DFDFC222 +:100CE00039DD5E4246817E2A7FC4F9B9A6C70EFE71 +:100CF00070674D9F13FD0112BD09F4AC63D88CB130 +:100D0000D45872F024E7B7672FFFD889FCDD4FF184 +:100D1000599E149F2FC3BE070DF89CBE90A0DDAF57 +:100D2000BAC614ED03980232D27F6F5101FAC71E82 +:100D300032BC3D15FC24E00380BF81DDB711616248 +:100D40005AEF94991FFD17AA7C5FA670A9F92A3360 +:100D5000E4676F36BBE1BCB09D04C1BF7E2A23FCB3 +:100D600006F2D1FF342D802B01749D6CC2E8F2266F +:100D7000E809327F18F9C2DD3F1BFD88B2A76D4438 +:100D8000D2D1495F57E9329DFE77F36CA01B6B57B8 +:100D9000E9469FCB29704E5769F447A2C887B43DF6 +:100DA0009642819D0EF62403F07908F3C34FB445B3 +:100DB00031BF4BFD0A2C8F4EFA10F9AB1D86CE03C6 +:100DC000976D00E35B2709DAA19C757464BB93EE11 +:100DD0006F7AB184F49E7928F612B5A1D41A0D6CFD +:100DE00087735242ED2CE8F31733C29FC1FEDD51E9 +:100DF0009B02718FBB92EA1DD053DE07F07C03EE9D +:100E00004795D229444B643405F44A1191205FEA96 +:100E100088750A36E0871A52E180763B935372C098 +:100E2000C6EE47AC1D25AB35F187A76814EF6750B8 +:100E30003D9AABD5A3C70416A7F46F8D90652EA677 +:100E40000F0B6602DCCCAFDECBDB8985FAC9747E82 +:100E5000735A492FF8A33B7BDF403DEAB68CC82686 +:100E60009647AB40FD678FC9A81F83B42E817E1CB7 +:100E700060F5006F17A3ACEE67EDD6A210C2B9B350 +:100E800077D75BB03F37DD5F697E422F27F47084F0 +:100E9000E9D5A3AA1E8EB27A3FAFBBC20B70DE4368 +:100EA000BC2EB6B2FA11A6970B8A187E0A2AC5285C +:100EB000D514717C1F280C971403FE23B677CD69D7 +:100EC000807F6266E7ED8C3EBFC8084F2F9E742579 +:100ED0007D663C4D94540FE811366F7F318906E8EA +:100EE000BCE52FB073ECFEE2E167A03E73107DEF2E +:100EF000783D40D9C49799A8D37988A46957E9D295 +:100F00005FACE4EACEBD397E3C950C3FEED839C4E7 +:100F10008FBB72988469E9B18C2E007D425E64FBC0 +:100F2000F7D84716801C9317D8FE3DAE61D63EC851 +:100F3000EB628CD50758FF19950326C8DBF443FEF6 +:100F40003149DCF709D7FBD38F5279D0C8DBD9C23E +:100F50007008F0577A28AA7B5ED841E544AFF7D0F5 +:100F60003EF71F30E179D1B103059EAB9D5BFE15C5 +:100F7000B5C784EAB1E7A83D26A5E08789581FD305 +:100F8000FFD931DCCAFC05F16DF04F3BE74A05980B +:100F90000FAD1E2590C76FE3FCBCF3155B2DE85524 +:100FA000D1C2E24977EC35027870831C1194237C1E +:100FB0009E1A60F243631DCC9B39FDBC2EB2766B4A +:100FC000A641BE2A47318F442C11DF32CDFDD94EC8 +:100FD0001E2F56788775F1B40ACF03C5EAB924E30A +:100FE0003777D4A4A4C05D9EC2701BF25D9C2F19FC +:100FF000DFB5814E9D7B65FFE78A687F1D1F8F628D +:10100000FF3981D61DB0BFCAF304324BA48BEBA3CA +:10101000EA6AE965908FAAD3EC7930336806F8D58F +:10102000F9A81CE23CAB8AC25D6CDE5DBFD3C23165 +:10103000E7178CFFAF39CFF8BF732EBBC75175963A +:10104000F17FE75C768F63EE69C6FF6A9DB22BF293 +:10105000BF5AA7F320FFABF538DEE6467C2E0D7EA7 +:1010600077161F3C7B75FE6F5D88FC7C5EE5FFF0AC +:1010700042E4FFB32AFF8758FB6995FF65561F6658 +:10108000FDE75406CDC0FF9D9CFF8FB9949B605F28 +:10109000C7A25E41C9D7C2C1F273FDB2A53E999CF9 +:1010A0002CE3ED538BE4678B914E8A6F0D9D676344 +:1010B000AF6D00EC9DBDA023F76E38DF2CB605C1E7 +:1010C000DE75147461DD5E62C7BABD700F6B2F717F +:1010D00062FDA129BB587BA90BEB2953D9F887E600 +:1010E000D2F174BE87A6B2F1295576ACEFED7B2321 +:1010F0007837CA5BEBE8107DEECF73E2BABB72EED5 +:101100000F8659BC72A808E2178B628238DEAF44A2 +:101110006288871A6A57406FCAAD31C8538807483A +:1011200005F005B53F87021A391EE2FBF313291BB0 +:10113000EC5C7C1E6261F9657136DAC35D6D245228 +:10114000A4896FFFAEB800F9B6384F5130AFEFA3A6 +:101150007C2761190924895B876A3E3901FE4E6745 +:101160008B09CFD13A6BD839E0FE1835D402F84F4D +:1011700064474925C675E8FFEE2F2AE88250E2D37E +:10118000A82908B30C75F0FED43F81F3A3FD1D9F81 +:10119000D8210EDD5FB4201BCA59FC3E1A75BFD0A2 +:1011A000BFD803FFA5FE571E7D1EA571647FF413F3 +:1011B00011F453F04ABFE91F81AE8F71FFE630F79B +:1011C0009F7EC4CBA92DE202C8F34A9B87876C128D +:1011D000FA9D9F407FAF325A0BFB98B62562C279C9 +:1011E000A3CCCF4D32FF6720F763CD4FFDA5CB30A9 +:1011F0005FFE26E5251B98D128C1F9A8BFF4398CDC +:10120000CB7B91DAA9B42BFDD9BC170764C8CB18E6 +:10121000FD5A1264F16ADE8B1D21527EA59F9BF759 +:101220006244863CCE2CEE0FA97E52DE8B2332F434 +:10123000CFA3CF015F67E6307FCA4A0317B887683C +:1012400001DF711EEE472C49126F18CB78BC273690 +:10125000E2384A17A4BFD79F393B99BF0B69718009 +:10126000E3C62239AF641294E169B04EF724FFDF80 +:10127000424A8D58D83D43355F673591F073C89F1A +:101280009538FFF5979F15E11C644FB04FD49EBB76 +:1012900012B20DE77DA3582E85F98898897C416AA2 +:1012A000189F783A981F6A8C6FE3792ADE7FAC7DAD +:1012B000AAFDBCF5D19BF01C9F6E14F29056EEFF78 +:1012C000BB4AC2D5B09F67EA8E3B611F3FA17E0536 +:1012D000F81DD75F7E07F325CEB9EC7C8C645632BF +:1012E000B8A8BB3D9DCED3FE0D862757C5E0098823 +:1012F0007B7BEA8BF0FE5EEACCE3CE191037D6B1E9 +:10130000BABA3F918CCA3CCF7303EC73EF608F0283 +:10131000ED9E32CB6B5B69595BD68EF69AFAF91863 +:101320004FEFF51F1D6E837A0B955A019FA3DEF8D0 +:1013300034401902FD591A7754E17EF0E778E179DB +:1013400005E493D0F83405EED25B22B1ADB4DEFEF5 +:1013500013AB04F26AE44F1AA7E0B9B4913F1D033E +:10136000EF3503FF19F9D231F8DE56E03F92C9FCA0 +:101370007D35FF63D9C2E3C8169687720492E7C52C +:10138000D471E3D1C9630F0EE13D9A30BB77675644 +:10139000E9D43A42E0DED286122FF6A37E633BD830 +:1013A000B5D46AD2CBDF3FD800744C6D68C5380124 +:1013B0002600B8C400C5BB09E8F42901FBB45BB63C +:1013C00023FD53E7150CC17CB34BC27F0EF490C9CB +:1013D00028E2373DC8E224511EC1F717DA4D2C1F11 +:1013E0004E5C8D9CFE74CF593C0EA13F79CB3601EB +:1013F000CEB5D30262058C8399409FDBF2689D24B1 +:10140000E4669D59DE01F011D704F3AF13EC975653 +:101410003F2CC3BD3755FE1F0BBEE75848503E0F4B +:10142000C0BE7607661F867DFF88D831FFEE25D2C5 +:101430004D0B05904F2AEF80E71E13E239AD9AE578 +:10144000E5CD7922E253DE5211239A7D3D56628A20 +:101450009FFFA39C72FC0ED5B03CD03EC803D17157 +:10146000FB6ADE43BDBFAF92DDEB1D0BFE346E0F9A +:10147000E2753A632B256D1AF513211E7C7CEF87EC +:1014800078DEBEFFF235CE64E72269453DCB7010B1 +:1014900019413E773C4DF99CEE2FADA3270676E926 +:1014A0005702455075D2387C10E8B0DB907FECDEF7 +:1014B000F209F2CDB44010F31AF95BA4C510074E3F +:1014C0003B2A755377389ED7A0F6E07FC1FED33B09 +:1014D0004D28B7D2965111AE49537BF03730EF7893 +:1014E000798D847E1B407FD22867A97BB8BE0B18FC +:1014F000E36596974BE37641950B5FB53404FF4D5A +:1015000015D87D81BCD66119E8ED92C50A33F23158 +:10151000A36B7A25A3EB794EC7BD25E137611FEE9A +:101520007AF22EF89F8E4A4900FB3961FEA4FA6CCC +:101530006126E6214601EFEEA065684125828BF722 +:10154000623CC1E118F8BBE2023BD6D3089D5F4084 +:1015500079FB10F127C762009FBB7220A99C5D290F +:101560005704EF1950B9EAD5DE7FD3C8D7BFFC299D +:10157000E4AB4716D3F1FE9E89EEAB1AA088AD828C +:101580007D655079827D8B6478C8949F903F897C7B +:101590002A839FE6ADF0A21CA6DA075EBF01C657FC +:1015A0003239CBB8B747013FE2DF2EA438C0AF9F36 +:1015B000E2D29FB3394A597CE22C3571BD49728120 +:1015C0004F5665CAA9A573917F5D50AAFCAB8EDB0F +:1015D0001DF03AB4F1DDEEB48116761F3C2481DDB6 +:1015E00055ED70369F77ACFD0E05A83C831FC7F301 +:1015F000BAFB03D48F73419DE573C7C29703E459C7 +:10160000737ED7B9C1D604F9CDEEBA1EFB6ACDB848 +:10161000E9A52CAEFDB2502E2ED5D86FAB2D82F998 +:101620002AD5AE18E1EAB628F5FF1DEC2AB57F0AE7 +:1016300045516A1DB3374639490561FD03FC0287F0 +:101640009DFADFC0B70DECDEA69A37F7D58FCAC07A +:101650009FD77178A97DB90EE0953BB6611E282D04 +:10166000C0EC847A0FCA6D89105B3E68FF61027A14 +:101670007532B5336077F7048F0EC13CBF2F092F49 +:1016800002BA8995B161784F20A381F1BD95DF47FA +:1016900023FE31EC8B3251FBC2DF1BE2F97DB51C1E +:1016A0006FFF625D4C013BE8A99104B0BBA9E01F4C +:1016B00089787F0BEBB932F397443272E2061D9FB3 +:1016C0009FC67D4F761096072B66EF09A5533B0BFF +:1016D000F9E0EEC0EC5AD0A32A9FEF73917AEDF9AE +:1016E000FC9D9CCFEFE2F8A50BE4823DA17CDEC21D +:1016F000F97C5DE984FC58651DF0B9ACF46E33E803 +:101700000B59AB2F3695AAF64BDE543A2961B776C2 +:10171000737F6B77CD7368B77617FD817CBECE89FA +:101720007CFE0342303E753895D560AF76F07D750E +:10173000960ABCE4F735391FEF053E067D5F995CDC +:10174000DFB7A87CACE6E96B889A77D8077871ACEC +:10175000B760BEC051C4F20E13E5774F5E8480BF00 +:10176000A0DA8F2BF6077604F234953101DF33E1EE +:101770007684584614F08F5C0D8CEF7ECCF7935E28 +:1017800017C3FCB597FB552B4AC37D80DF747934B2 +:10179000066E982B38C0DEA799B05D19961756E2F1 +:1017A000FB38283FEEA0B716EC8A686276654F706A +:1017B00010ED86ABB80FED3495AB01C0C7E43A52DB +:1017C0000BFE745A35CB97C4E58ADB13EADFA0FD24 +:1017D000B0AAFE8DB2541674FC12C6FB011A7BF23D +:1017E0003F60DEAFDA9EA8F2939A19FA39CCBF2790 +:1017F0006842B8326A595E9FF2FD09C0DF1E359F0C +:101800003F065DF7D8425248739F43A5E7CBA5A199 +:10181000D771DE403BFA055653CC8E7EDE75713FA4 +:101820008FC85A3F4FD1FB796FC5F55DE82DD4CFF6 +:10183000DCCF73D5989414CA6FAE6AA79AA77A07BB +:10184000DA5D61E577102FB9820CEF13C5439CDF99 +:10185000E4B009F4C5EEF2BB31BFFC03C18EFA4718 +:10186000B39FDFC23A2587628BC1EEBA086B8FEF58 +:10187000EB7EB62F883FB5EFD167F94D6ABCFA0908 +:10188000E023EEEFF2FEF21681C8A0C7F3D473375F +:1018900046FFDF27F4C4EF61DDFD975350BF1D867F +:1018A000734088835AC63CDFF912D6E9359C6F171E +:1018B000B58FA23E2C39C4F8AF4066742EEC089B5D +:1018C0004075161C1946BFF3877C5CC6861EEC7FEC +:1018D00034239CEA0779BDCFBB1DCE1BCA3AA42195 +:1018E000588EFA992EFF04FC4CCB9631FCCB96E433 +:1018F000FA6668D373E720DF77B88EBD67BAF3DE88 +:10190000271697825FBDC944C00F4E8F75A2BE4C8B +:101910006F31451DB4FDB19602D49363D17B37CFAF +:1019200027EFE5F964876540463F8A9F4B38EC31E5 +:101930007CEF4E3DB770B88659BD92B78B23AC3F54 +:101940003FE7D86FC8477BEA68540CF949D91B8335 +:10195000F7065C011324C5E2FB175B697C8BF14140 +:1019600094F9CD954E7D7B0D0D323479361BE7B75A +:101970001D456BEA1780DC045A15D05FDEB2F07C9F +:101980003F1D6F370D0CC13906C98D2AF8BE5B0BA0 +:10199000B3FF7BF83DC845E61A0FDC1F263E66BF45 +:1019A000F3F859EE123FB3735689EA53D03FD4CFC0 +:1019B000884A90CF6EC5F3BBC979742E8ACF2E8A20 +:1019C000AF3A2BAC175A0CEBA5E445F11ED19E3172 +:1019D000EE592EE3FC8DC95DB0F716454A765F419E +:1019E00095B79F65841A816F004EC8C7AB7ADED861 +:1019F000FF6C616D931FE3BBE009785F60E7142221 +:101A0000817CECB8BCD00E767627DC0B86EF4028C4 +:101A1000DB32878AC69673B58CD07D3558F13D721E +:101A20002C77B8C82A3CBC2C234A5D0D21BB2CE185 +:101A30007A78CF7743FFB71A33218F0934A1F3BFE8 +:101A4000EC570EC03DDF1DBC0E220BF48A38D4BA11 +:101A5000D23891F1540204D05FCF5BC2F7C1FEA926 +:101A60009DC27C9DB73E68057D7592BF2FEC934962 +:101A7000BBE8D1E0AD8CE1D76767E7113EEEA7FB8D +:101A80002CACFE433FB3EBCF72FAF6F0FAC3B514B9 +:101A9000CA59B4E4F3D2F80BF58737CCEE51B78BC3 +:101AA000EFE1FB9EBE0A665777FB99BEF1D4307F0B +:101AB00090C665A46C6E020E5F98EB550832270144 +:101AC0007B51BF4C00F815211FE21099E9436A775A +:101AD00049196D9F1C966A2DA8E745413BAE07E06A +:101AE000A2FBEBE1FC24CA9200E7299E1A22807F28 +:101AF0007E98C3F1416908E7F1D63378D4F1BF2A63 +:101B00006570A5829F0872513FA26B4FAB8EE68035 +:101B1000BCA6D2480FF67738BE7FB1169E7B2BD974 +:101B20007E5303EC7D57572BAB3FC9D7FD45498802 +:101B3000CF3FA2C0FCEABC5E39B60DED7D80E53931 +:101B40001EE6FB14793F156F0938941CE6C732383E +:101B50000EC5F7AB8723AD7A14FD963CF06FE8D045 +:101B60009F7179BAAB84EDDF9317DCA685C315604E +:101B7000FB9ECBD777D745624292F54F4C52DB6341 +:101B800002F8D579AD7A3C69F8F1E757E3C72BE461 +:101B900098F3A3388DDD832E22F60AD04387C355F0 +:101BA00019E0DF1EFA3C98B39CAEF30F7EF69E461A +:101BB000245D5A05F21AB97BFB39F0E37A6A483E94 +:101BC000E4110F6D8D3AEE047B4F668A701FDB13B4 +:101BD00073207F7AAAC55EB8034AE3804EC8237A91 +:101BE0004E641038DF50EF137860B3D4DF4F8B7D35 +:101BF0008CE7D50F6F6570AA7A5E85332D38120396 +:101C0000B8D2AAD97B1F97FD92CEDEA7D58C20DE55 +:101C10005D8160099C4744D2C9C710CFF42CB149FB +:101C200070FFE1E5254F38807EFBB7D964D097453A +:101C3000E4B2EF382D7B1A6C04F4EDC35B83B81F5C +:101C40005F8D5800F7727CB1273B8B68BB8FC28BCE +:101C5000B9500EAF8FC34BF5D8390FECA73A0BEF45 +:101C600075FAC28AB0DA9D80DB13FB3DEE671FDF99 +:101C70008F27388AF07B6A18FC717B131E25360D7E +:101C8000DCA44CD2DDE334DA9F9DD610BEBF94D0E5 +:101C900097E58D439644FF5D3C5E30D2796A51AD45 +:101CA000BD4CA3D7C7F53B27DA8FC8694216E0932E +:101CB000FD5248AD09DE93BAE83313F0B317995DCE +:101CC000688FD236F3FBB30D752FC17D27AA7C64D4 +:101CD000C87BA411F1A53ADA3EB5D63EAAE0898FB9 +:101CE0008CE3F3603CADE7476CBA7B6DB9EB6DBA42 +:101CF0007B6D79640F9E674E259A7E70DE71FEE3E0 +:101D0000F378AE4134FD21BF6D6EF6803CA8FEB283 +:101D1000715F9BCFAF8E1ED7CC1F2C7367E2776CA1 +:101D2000AE21D7E0FB9A7CFC5878F9B7B670F4780E +:101D300031F825725599265FB0A7E20629D9B80473 +:101D40001EA34207C5C314884FA8DF717399C49FAF +:101D500093909DE27732C76F2EA5B56536F5ABD26D +:101D6000ABD0DE8E058779F35F57D469F2A0665752 +:101D70000CED3EF506C40F299E04F97DBC4F3936A3 +:101D80007D2DE443159F66F02BD83931F8F920D723 +:101D9000ED6E764EEC0AB273E276373BF74D0DB03E +:101DA00094905A77FA192BA97578F75DD2B4ABEBFA +:101DB000B5BB659FEE9E44FA0D784E6CA68609422F +:101DC0005D5B6C1D9E13DB7C61BC4762A671A3C08A +:101DD000FC383CF735DB63781E496D369E0B9B5D06 +:101DE00003AC1EE0ED6294D5FDACDDEA0B11B8BF8B +:101DF000D7CEDFD332EEBFB64C7D2F89D16791D8D5 +:101E0000DA0E7CBC886E6F07A54F7673A81DF05064 +:101E10002F1211DE1756FD417279397EBFE8E6C5F3 +:101E200044EC4A4FD46F7C80FA62E92027C121B08C +:101E300017914AF6FD8F88BCECAAFCB48BEA935844 +:101E400029DC73B59358927B1329FC3DCFEE693F93 +:101E500024E0273A5CA3BE6590DF2E63FEC3D0FC6E +:101E6000833EB8DFF3C8B42F7C780F6DFE2E1FE4DD +:101E7000233AF23F23DA753D70AF3C091CFF5AC686 +:101E8000FC8FA24B0FE1B95544D27F2F23C12FEC19 +:101E90003C2A6227F8DDA93FD5BE9EE2F0FCB1FBEB +:101EA000BA613AC34FC43E6A17015F355F15BCFB88 +:101EB000C87B2E806B1FBEA7DA995F5200E71743DD +:101EC0009C1E6AFFA1FC5D087F47F14184BBB3788B +:101ED00017D1E659EDFC9EBF719DEF4E67FB8F88D1 +:101EE000FF6FE03E372EDC0749B2F51D63E0FD9041 +:101EF0008A771F85DFF5A787FF775F31FC5338FEB0 +:101F00001F286379D188A4F2FB46B47317C3A415C4 +:101F1000E2C6B1E425C5A7BFDFEDAD73EAEA05452A +:101F2000214F68E6D8F8F827C047CAF8F2F5CFBCC9 +:101F3000DFC71C6F054523AF7E0DE0E3F9AF7B647F +:101F40009677196BFC3DD6812CF12AF3AF7FDAAC82 +:101F5000837B3C780E94B17B23DF7D413FEEEEA383 +:101F6000A9BABAAA6FF7D7E8F1A9E2F90AFA7F4548 +:101F7000F81C8F0FC7C5670DBFEFF515E1733C78EF +:101F80001EE0FEC178F834F2E558F3FDFFCA974F22 +:101F9000717F7B3C3C1AF9F14F8DC7FF6CFC3834E4 +:101FA000417EFC2F3C5E1D9E7313C4A3AA27FB6DCC +:101FB000EC7CBBF4B14D271753BB77B261CE1C76D6 +:101FC000AE22CD5C4EF173793A8BDB4BC7C8CB5D4B +:101FD000E6F6ECA42DF8CB4A18FF86394867262789 +:101FE000F9B9B9B1FFA936668FDF9E9E8EF39EAC1C +:101FF00037633C70B1A1F8AADF31210DE6441C869D +:10200000F70E34F484EF0810F6FE8D72DA8CE77D5B +:10201000E3D1F564FDF23F8EAEF5E6AF54CFA8F004 +:102020009C6A28742783EBEFA64FD4FEF1F7A488AF +:102030002CE07DF40759DC40A3262BE461979D4FEB +:10204000C1FBEB6FC2A37990EF095966503A2CABF4 +:10205000AFD0E579D47BFEEF7796F5E13944F372A2 +:10206000F67EC30CBD3F14A78FCA4FFC3B52D9CD9F +:10207000B2557BBEDE38231E0F4D0138066DF28C43 +:1020800067805FBE9182DF534D59DEB0DB4DF17B3F +:102090006655BAA0FD5E66295FAFAA99F9B383675A +:1020A000C3569386AFEA787BCAF2E6DB93BD275E20 +:1020B0003883F1E72D214166DF5D0B4DD1DECBFE8C +:1020C000061FAFB61BC757CE4863DF091AE3FB985C +:1020D000B3F8FC8D4D571F4F9A33F8397A706A3236 +:1020E000BDA3E2EFA5E9E16AA0C7594199723FF0AB +:1020F000F3123B3F470A97C0FB1A2A1EE83E309E68 +:10210000BCF9EBECBB04C4229B815E4E93F409D076 +:102110005B854B5DD74BDB217F758D4C5AB7D1FE6C +:10212000EF5BA512529874FDFA1973C75E3FBE0F9C +:102130008B8CDF4510BFC3BE9765DC573C2FC1FBBE +:102140009FFAFDC2AF43FFC19326717BFED8FD55B8 +:102150007D547248CF3FEB66B07C6C26FFDE02B147 +:1021600028539A34E70A77CC60EF2FFFA17C950DB6 +:10217000DF8AA5E34A0E285689CEDBC4DF0780F943 +:10218000B5EFC7881C9FCDBC7FA65971C27D4BF2AD +:10219000A619F1D3DFD73525D97B0C27417F507D98 +:1021A000973EC3AFCBCB2DAFAF7805AE6EDE12EA54 +:1021B0000E82780D9EFCDA1490BF5B781EBFDFA6FE +:1021C0004CA9007EB749F7C279EA44F7A1E27B2C1B +:1021D000BDA3E279F06CC80AE7648146C6B72B1A42 +:1021E000874CF7D2B297CBEFBB5C3FA8E386F8FEF3 +:1021F000FB6DE11D8E2021DF9FF1EAF73BFC28EF0C +:1022000098477CFE2FFEF6FB78AED1CED65FD1B8D4 +:1022100014F31B25F52CBF316863F71ECECC77B3C2 +:10222000F785ED72ED7DB47EE7971ECCF3A97A6B4E +:102230008D29FC1D961F65FAEA794BF851E0475548 +:102240006F5DA1A7DA97F37326A9645952B9DACE64 +:10225000E1667CD51F5DE6B943C3572767D8747420 +:1022600051EDD31B867871E55916CF0DDA58DEE6AD +:10227000ADC562FA762677DB404E6EFE729A00F9A3 +:10228000C6939C4F2F46D73C0FE7A52A3EE8BECA0F +:102290009FD2D8B7C6067352BDBDA2C9A0CFF978E8 +:1022A000BF59BE07EFB37C3D05BF539459BF12E53C +:1022B000FFCBAF1311DAFB6DA1ED6EFABCA4F17781 +:1022C0009BD83DD328CE77670AC5A719F539FA4DB3 +:1022D000FEDD39F8DECDA41D23F7015F7DEA0A7922 +:1022E000BC1ABEFD25A773827F991D847E60CF96A0 +:1022F00059246B32BBB6BCDE9C14EE3569D1B0F606 +:102300007B2E463E54DFC7BAD860C7F7055711C5C4 +:102310000AF45F49E4F98C0F46ADA0272E7038D43B +:10232000F117C8F0926BE838A5DE8CF7A32E6C5A33 +:10233000EE81F77B6EB7C6DCB369F911978BF39B1F +:10234000CDF87D998F395DA91DB7C2386AC72F02B4 +:10235000DFDD7ED48CFED9EDADE677B5F6FC9B9B38 +:10236000CCBA3C71BFADF5E462D0870FB2F5A8FEE0 +:10237000BA17F0F90E115B41DFAA7E4C7F68329EDE +:10238000A39F32497BC11F52EE54FBB3F3D730FBFE +:102390002FB9A539B8B7923EFF7C463EBB6F74405B +:1023A000D905E70427EB0B5F80EFDF5F546605B5C7 +:1023B000797E6319DEA287AFE480DEBFAD027B8445 +:1023C000766278CA37357A6C49792AB3778D42D2EA +:1023D000FC507AC085EDA7BE30B724B3776BCA191D +:1023E0007FAC3892DCDEAD2977B3F668F2F6E766AB +:1023F000B2F58925867EC08AA6E4709C0BA461BFD5 +:102400000B1B3EBA1DDE573C6DF027FF2EC0E8FBCC +:102410004C80C9DBA9BEAE577300DF1B0511AEA708 +:10242000DC99112E07FE696E7DDD067AF98900833D +:10243000FBBB65A1C200EDDF12DDB06B26ED9F3D59 +:102440006C12C1DF55F583118E190113D7F7AADD80 +:1024500051ED5EC401768FFEF703788F944EA97814 +:10246000BC4077E56EE00BA5CF29821F7AAA81FBDD +:10247000B7CACCA8F67B73D704F47E94919E2D47FF +:10248000F47AE01D837FFBCE9639C87FE71A524568 +:10249000F09BC9E53933B5DFE352FDDC53E097D358 +:1024A0007EA7DE2844BF7C2C7E1AD7DF6D307FA547 +:1024B00071CCA906E6EFD27DB8D72419170EE44FE8 +:1024C000288E7967CBD5FDF877B8DC7FC4EDB0CA2C +:1024D00047A7434C5FA8FDD605F47AAF69AD7EDD12 +:1024E0005B9A5375F451E5E374688713FC146AAF83 +:1024F0004A404FA9FE2F699F33CEF917CB77ABF037 +:10250000C884EA0B8AEFE5A70B67C379E2C97A862C +:1025100097070C7C62DCCF29D3E82F510FFED082C5 +:102520007AA6F8C86A532EB992EF7619E69928DF91 +:10253000A971B2AACF8DE3E37CD6F047C6537F22C0 +:10254000FE1A1BFFD109C553AADC375B62D679019D +:10255000A64FD6D1528297E126412961D9CCBF4BF3 +:1025600044315A057278AACF49E0BC4839EC8EC292 +:10257000AB9DA797DD53AE85E765CE6FCD47965AE5 +:10258000815EA74DD1C824A0E377CC04FCC9B7CFA6 +:10259000BEB473121DEF7CDD240A12F0D91D3BA1DD +:1025A000FDE25909BF33150BB0F87945E36AAB7604 +:1025B0005E23DFAE30F06D20C0EFE3C6E30722A25A +:1025C0001EE3FBA47A11F5E88AD6EE7966E487D794 +:1025D000AD65F4F973B05F0AEF5FF2FDDEAEFAC9E4 +:1025E00076BA5FCA1FE7C1A703F8FF5C40FD442C21 +:1025F0002356AD3EFAE6A68F16C17BA5463DFE09E1 +:10260000E7CB0B5CCF7EB72C7C4F00CF2D43788F70 +:10261000EACEFFC6CEC156346EC07B23F7804DA3F1 +:10262000FDD6031C7313FB70DEC4F671738AF404C9 +:10263000E8FD383E37527CD2AEE7CF2E43FC8D8585 +:10264000CF7F1C433EC6C3E7E9BE5B717D85AE5FAD +:10265000ACF373A7E0BDBC7B38BE34FE2EFA892AEA +:102660003F9CBFEFA3DBC3BA784E4C877D14482153 +:102670000FE0F58B990C2F0FBBF5F7ADDE8AFB331E +:102680004C3E2FAC1322708E4DCB6846F995FDC69B +:1026900092835B795EA7FFFE9496BE24F66FC14CD1 +:1026A00081FB69A14588AFA81064F7BBF5FECC4853 +:1026B000EA83BBDC1AFB32A6BFD6C8E2A584BF16EC +:1026C000457F6D0A5FE7AD2BFDB59D55C9FCB596FD +:1026D000ABFB6B674868C95CA04B035BEFDCDA853A +:1026E000F7027FBED330C304FAF04CE3C3A85FE720 +:1026F000F2754F71BD7DA6516F170233F576E10A71 +:102700007D7956FF7D9DB1EC8BBACE44ED0BF5E79C +:10271000A780BE3BD3DB7CFB7D80B75E67105ED9B4 +:1027200036D2472C3773FFC7897CA7EA1B95EF0683 +:102730006DC1FF3D48C79F79747270BB047A7161A7 +:102740002DCCD77F799A00F7B3FA97A5B6809FD69C +:10275000CFC7DFF90D7F1FDEBF2534BEA5F5666E3E +:102760008F4AB8DFA7EA09757D954EAA3D5A3A937C +:10277000E9899623EF623CFD4D554F10A61F320E9E +:10278000E7E0BDF7F326AE2F9E72E3F7D6202ED3F7 +:10279000E2EB3603DEEF3E7A753B752E5A80DF7929 +:1027A00000FFA8383FB1DE5DD1FC3EEDF76B6EDF78 +:1027B000CCEAE7D632FBF8D1FA597DE03FA976ECB6 +:1027C000F4B2DD18D7BF4DFDA5ABF9DFE3DAB3E80E +:1027D000579BF705FC5CCD9E1D9A39317FE923C2DA +:1027E000DE772097BFF7AB79B0CFEF64E0FBA21F95 +:1027F0001D61FCDAC9F1FEB66D60A616BE8FF87ECB +:102800002F703A7F1455BFEFDD9AA6D5F30AD7573C +:102810006F7339787BBD5E0E0E1AE4A0E5889EAE1C +:10282000DFDCA487F7F199CC5EBDBD7E8733CCECAD +:1028300007C6B134AE423B733AB4D03D17F552816E +:102840008E5E8FFF81F276AB20A3BD215B093946F6 +:10285000F578819FF9F117A3B96297C66F5F5B6E38 +:10286000D2F1655C0FFB991EBECD32A08B8F5366F3 +:102870004ABAFEB7B518FC149364827B67CA1B661C +:10288000948353DFB8763593433BBB6B4E181CE102 +:10289000C79DA2F6FDB2F8BA41B6EEAD96A86EDDC0 +:1028A000D7801FAEB6EE38FED17FC523FAFE9F4C0F +:1028B00050BEBEAA78E43F0CFA6F3CFEB5727FC8EA +:1028C00018979C02FF2433E19FDC9C12FEE741A095 +:1028D0008F2B5C057C33B59CC9C95DD40FC5F3074C +:1028E0005368277C97493969128FA1BDB86307D413 +:1028F0002F1EC9D7C9D73D067F49B537E3D9C7339E +:102900002B4AB7839EF6BF69C6F39E332B565A9364 +:10291000E1EB964B93494C73FF4CCD13809C2DD724 +:10292000E4F9AE9DC9CEA7AE35C8D98A4B53717CA8 +:10293000DCAF3DC2FCDADB1BBBE7099A7D98CB9983 +:102940001F6F2967E3E37EAD85F9B563E5C9669737 +:10295000EBE97386D355CD93ADB08492E6C96E6929 +:10296000341BF40EF3BF605F5A79910D7A469D5F78 +:10297000D533139D7F7D807D9F55CDC31504425770 +:10298000FD7E607C1DDECFB8CE75E57A3C1BD7831B +:102990006FD95F2D7FB491F35B15CF1F517D87E712 +:1029A00086A797BD5C037EF83B5BFEF5CCCA4CB0B6 +:1029B000CFAFD400BF6D847CD224D037C4E6037D72 +:1029C0001316D09F5B7964B53597F5C7F8F714F502 +:1029D00053607C2BA70BD5333AFB6594BBCF673094 +:1029E00038BD1C3FB4750AE0753CFCBC65C0CF1F08 +:1029F000AAEF3F9FC1D7A3FA11D613D4788C0C63EA +:102A00003E6CAC385B2DE3F97B1BF916F0E5A04575 +:102A10004E05BE54BF8BFB1BFEDDDA16FEDDDA353C +:102A2000FC9EEA6FDCC9DFD7385EC1E82193480914 +:102A3000DC67BE83A405E13BFC3BD32377823E1FCA +:102A40003DE610FBE0DEEDBE6EACDF71344584FB8D +:102A5000D895A78E54417FA74082F0FE5DD5F082C5 +:102A6000BF80F389BB8EA64AF01D88EB8205EC7D02 +:102A7000A5EB227F0FEDEB9E4891201EF2EEA9B050 +:102A800049148EE7FAB7A7C179C1F1E88E34B87F4F +:102A9000F7146C8DBD4FA1C0FB14BF89D73B1FA994 +:102AA000A3EDD3270D9A5C1455DE599D8FC077D3C3 +:102AB000766E0BF944AACF8E97AF7E04FE3E585631 +:102AC000963C7C3D8DABBE28BF63A57D3E21158520 +:102AD000EAF8B52BE53C8AA7C3BCAEAC7B04EA7F21 +:102AE0006D0AE70BB47FC92C6525FC1D378B505749 +:102AF00061A2F3F99FFDD523307EDD8F1FBDFF015D +:102B0000BADEE2678FAEB4E4E3B91B1FFFE4CA8507 +:102B100016BACF1AC2FF6EDD33D950CF4C0D4926FD +:102B20001AB73D5F7EDB4A0B8567D02B6F808F37EE +:102B3000DE31EB3684AF3A1C7ED94AE77BFE278331 +:102B40002BBF4E45BB7A84FD3DAFB1E89CB37921E4 +:102B5000799FD2F1E305AD0B2D14CE479E7DFE91FA +:102B60008083906BF6D4A6C27B2A3F7AF6972B53CC +:102B70002AF0BCAB42A265EFB3C3B84E55B3321DC9 +:102B8000DE3BB191D38FD4D3E7DF098C74C027BB70 +:102B9000D699997E4EB38615B8D796F2C24F15C610 +:102BA00095FCBC384F2A617F8F8DD7FD2C9F15AFC8 +:102BB000FB58FDF5D7EE5E8B7E929D88A66B693D36 +:102BC0003D1C807BB44A4E6A10E37EBBF2CD5FD0E1 +:102BD000F6D70571037CAF9F5894BF07FBF37A6F5C +:102BE000693EF82F3F2A6770BCD4FBD054F83B7C79 +:102BF000AFF7664F013B35B89DF1B3110FDF0AB255 +:102C0000FCEEA03379FB252EEFEAB9A8E72C919FC3 +:102C1000A6E52BCED14DB0AE890C6FDD06E743762D +:102C2000A9E4760AFF7BE52EDDBDDCF879AA5DF626 +:102C30005EA2F0AE994DE3038D9FF519D7578541FC +:102C40009E4F2731CB7250496613C233C92C7C6B1F +:102C5000297D9EE524E19FD2725206C17A0315A90F +:102C60009FD2F64585A1A378EF373BA762079DB7B2 +:102C700068DBAF2D6857F878350F958057DC00F08A +:102C80004E322FABD810D0E03FC0E833E8E572FFFA +:102C9000EF2C7E193C59D007E769BD06BD5C35BCF9 +:102CA000D106F7139704B97E91D8F8490B597E6283 +:102CB000B4D31105B926F6A8A43D8775CC62F85C9B +:102CC0007FA90CBFE7A33E5F6F89D940CFADBF148A +:102CD000C0E7937624A7879AD75C6F781F59DD6782 +:102CE000621EF63EBD119E32200CDDD7A6327F5407 +:102CF000FF3D0536AFAAE736B9E56CEFD5FCBB4B17 +:102D0000C218F05BF079FE34AA71D1CEC7104F2AF9 +:102D10007C65357236E063D34F6BB3D9F736D5EFA8 +:102D2000CE72FC73BD0BF83569D6BF6616F7A39A51 +:102D300009BF67C0EE4FAC99EE477E1AFCF78533AA +:102D400096E27CEC3C72D0C2DEB3A8B2C8782E5EAC +:102D500035EC15E1FB0137A7849EC6733EBB98FE98 +:102D6000D0BC041D07BDADB588A75E01F5B171BF2C +:102D7000D7F1F5ABF8B94B7673D8ACFD2E9DCAE709 +:102D800063C9057E8114E052E3C3A054A23DFF56FF +:102D9000E13E06DF36988BF467742BB3B3EF837292 +:102DA000FC5CC90793C7E183A9D85E35FC920DF09E +:102DB000BD9EC3997D36963623C0F60139BF794151 +:102DC000761EF46439E3E7CABF5C987A2DCF8FC2D0 +:102DD000AC5535AA7ECE3BBBA0888E53EBC04F12BC +:102DE000E29B7F4797BA2BF644FFC0405E537B11AE +:102DF000E047AE40BCD35F71927B653FE57AE0F976 +:102E000072A2BE6F61905BD2AAE2532BA72ADED5D5 +:102E1000791EE2F2B583D32BA17704E4F7AF5ECF3E +:102E200008E3E899A55CCFB07692195A0FED5926C0 +:102E3000FEFE81C8F6B3E6B5EF95C02637FACC1290 +:102E4000F8177709CA2EB0F36B6CC15D6E4D7CDC50 +:102E50004211E0A2F8DD007F0F883EBF6BD889EFFA +:102E600091DD71C481CFE1077ED0271101F96C2378 +:102E70005D61F3EC2BF963A3CF86EBACE92CF68410 +:102E8000B5F059A87C409E3495C36737D82D8BBECA +:102E9000BEA624BC5A306BDA5DCC8E7D395DEE9BCC +:102EA00045EBEFF37B3DA46392CEEF7AD1E0DFAB4D +:102EB000F662DB0CF9491867EC3F969F5635BC0C5F +:102EC000F30AD95B087ECC397B8060FE821C627974 +:102ED000BAECE69869BD863FEA8333997C99D9DFDD +:102EE000A3F968850B3EB69BC8C308943EE0073B38 +:102EF0008808798A57D24395F08AD02B93DCC11D7C +:102F0000A03FCCCA71F886D86B9CCF26A5323E7CF8 +:102F1000C5D17A04C65988E4453EE5FAE9C6EB66B0 +:102F2000603E4CD56B89F750CCB1EB69FBAFA7B2D3 +:102F3000FB5FAF084BF3D83AD9B377081A7E8ACF34 +:102F40004B4498F7C62FFEF5B7D7C3FB3E056CBEC2 +:102F50004CBAFE328D1C5C53CFF4E39B1CBE37672A +:102F6000A5B279F2438300CF2BE944DC41F7F52A7F +:102F7000B00DADBF5A2204774809FD04FC0FF4CA16 +:102F8000E27FB726CBC6EA35156CBED6202BFF8D67 +:102F9000975969AC9F913E0DDCEF7DD4CCF4D9BE3E +:102FA00086F742706EA0FA49A976FDF7BABA6AE9C7 +:102FB0007E92CCF3FE2CE69F503B86FBBDD2AEA8A2 +:102FC000766BA403BE63477CEC9CCEE8A71BC7FDD1 +:102FD000C61A7909FC66E50CCB0B5D1C78D70EE7A9 +:102FE00049177D1613C89DD3997C5F6EBE6F27FF6E +:102FF000CE443BCFA3A45D4AC578F8FF0061750FAE +:10300000AC008000000000001F8B080000000000E2 +:10301000000BE57D097854E5B9F077E69C59422626 +:10302000939364B202F18400060DE1640FFBC9863C +:1030300051633B6C1A1074580C014218D7C6B6B7CE +:103040009910A029D76BE3A5C558D13B41505B51DE +:1030500003D28A8A18D6EABD2E8162D516BD71299F +:10306000BB24E54AC54AEBFFBEEF774E66CE24216E +:1030700068DBFFE97FFFF8F87C7CE7DBDFFD7DBFE5 +:10308000651CAA85B17CC6A4A44F34E686B48831F9 +:103090004560CCCA3C7ED9C9E02F40E556D9C23A3A +:1030A0003218FD7D05FFBB2EB858471C63B517725B +:1030B0005900D2AFF06F6AB07EADD461C3F6B517D8 +:1030C0000AA87C4C9227DA13C5D8F9A3374533F800 +:1030D0009E7605639DD83FD46399C1F646DAD10048 +:1030E000FFDB83792D492A6321F32966F26AECBF5D +:1030F0009889A679C537B15B3DCEBEFD8D51053EA1 +:10310000AF0B22F3E706BF07E769337DEF68703046 +:103110007FE8F827F8F8C17123993F64DCD3E3B462 +:10312000ABD478CC4D928F5D0D49047C17192B9848 +:10313000C4B400AC2F11D23668B7436215DB20BF90 +:1031400010A6C3C633767CB693C9E3187B7E5C7148 +:103150008E0AF32BE8DC6BC3716AF576AC193A4D35 +:1031600086767FFE1F7F14E067C7E111B1ABE0F305 +:1031700053597C3D4F65E1A2E17B2C5F379394D19D +:1031800033C606E7BD741CAFC7989FEAD5C352DAB1 +:10319000A1DE09C7C7099F005E6A224E277C12B2D2 +:1031A000EE1302AB6A8771B7ED9F9184F4B0DD2115 +:1031B0000B6236636B223C49B7C3F707B238BD3C9C +:1031C000A08F1BE728D542DB3F3F4EA1F2F57A3FA7 +:1031D0008CF952713EF1A530813CC67AC638029B0B +:1031E00084BEF8B911F1138F788830D153103F4E57 +:1031F000FA3E107E196BD4F11B63C2635F7A74537D +:1032000079C124AF3816D6C7EE13D8289872611941 +:10321000C03BA4DF65AA93DA2D5323695E05F3381A +:103220003E16E9A951AF0EEBC5631AA9C3998F7772 +:103230006048CF5D083F8096AF11F0CC1CCA68A4EF +:103240007FC65AA87C6182778100F45158C1C7AD0E +:10325000D3E921EDD4619B02F0FAB9EAA27E576569 +:103260006B77235DB5FDA534D005FDF5344A6C932D +:103270001BDB6981AE3C5C172048057A9C53A63461 +:1032800042DEFABA55B5C37AD84E4E37E17072D6DF +:103290000BDA6280E32A03DE6EBE9E5A77876D24C6 +:1032A000CC23A596CF6758FB1E410A59E7B01A5E9A +:1032B000EF5F552BCD3FA54A6288CF149FB699A5E5 +:1032C00031F663FC0EFDFD1BCC45878330348FDA6D +:1032D000B175309F1495F7EB5403C2A2CCE07A9BF2 +:1032E0002DD33365584F7342A4DA04DFE41CEF4F4B +:1032F000910F6A8F767420B80A8F764A5E68372EEF +:1033000047DB40FCA5AF4B11E51496CE58E4513E87 +:10331000AF9658335DC04CF5796CA27931A7271B65 +:10332000E79BE0522CEBB2896D47CC800112629989 +:1033300017F921218179B723FF38A01ECC27610816 +:10334000D48B09E293314F9E05BE07E2C7E6AC83FA +:1033500079A6DFE7D98CFD55BAC7E488907F71A3C1 +:10336000A522D00F5D3EA7CB1D98FF33B8AE81F0EC +:10337000129C37E753A39E75C8A5E93D52A79FE26B +:1033800039EEB938EFDAD5BF8AB4C39029ED6D4272 +:1033900024F1DFFD54CF8037CCE3159C474A7B31C5 +:1033A000D14F8A5F6202CAFD21A901062427C516F2 +:1033B0002522BC079A676DBDA82D0E959FAB6D04A5 +:1033C000FF361BAB69CF0C9DDF2A1AF75DD42FD0D7 +:1033D000D56D399EB7107F753B1FB061FF4B377FAE +:1033E00068F3F623F77BDB5F269C841A4F2DAD5BD9 +:1033F00066B23D1BE1B07823E265B903F280BFDA23 +:10340000AD02E93556E5088C0218D4B66F3B980238 +:10341000F9A1B55ABE0874990034D09919D443293A +:10342000B540571684CFB60E0BC2E7FB0C29BA176E +:103430007EA01952F7235D33A6AE837ECE58BDB56C +:1034400038DE99E448D50F7CF0EB6DEF28DF83EF91 +:10345000ABA15C4C42FADE94E480F2E6AB6C6A53BA +:103460001AC2DF7B0EE1102B797660BB187794DAF5 +:10347000087D2B7696235F02EEE1EB36E486F1BD04 +:10348000F0FB9C0F4666BB747AF5A6E1BA15917DF8 +:103490001FE9DD991D45DF0F5A99DF110BCBD5D7F9 +:1034A000E35335211BEB231326E3BA027B6C697DC2 +:1034B000C70DA11F7B76FCD79967BB4D81792DD7AE +:1034C000E547F19CCDC2C721784FC816B93CD9DA7F +:1034D000262844C79B1BCBDD549FA11C4B01FC61DC +:1034E000BBE5507E9B496E2C9887EB6B1EC2E4A611 +:1034F00018921BC3715E072CB7EF433D792087A953 +:103500004D0CE548E77E12BBFA7C0FD8BC1BC9CE38 +:1035100001FA6884FC986C85E679D0E65D8CF83811 +:103520009802FD6563FFAB327CCE205F87F3E198A4 +:103530006C4ED729559B054B26AEB393D6B9A24AFC +:1035400022BCECBDE996C538CE0A7772B61DE039CB +:10355000C17FEDBD280FAFDF1123AC83E914647385 +:103560003DBAA245207DCC5A0ED96687E8ED0DBF45 +:103570003C447AE0FA1D02F5B762C7366911DA4DAC +:10358000A7F612FDAD00FA8AC8437CF0F99FB17628 +:10359000A422FD446DFFCE30A43F265B88FE222B83 +:1035A000B83C630EC646C5707B85E4DBAAD10194A6 +:1035B0006386DCF4E97620C8499273090963B3D7BE +:1035C000C1BCAFD5D7698C533E44DD8BF45C9E23E0 +:1035D000107C0D7D55992D73B9C5B89C55800C9103 +:1035E000EE8CFEFBCAFBAB7350DEDF99CDF510E02D +:1035F0006F56763F72DFE83FEDD1194C890AC1075B +:10360000C239848E1665DBA89F45D9924EFF9A82F7 +:1036100070522CC0A7904A364FA6826982CEA7313D +:10362000EF2A8D263E5D4872A43985EB21A0F3C5B3 +:10363000484F7B6F7A466C45F992290450AEFEE400 +:10364000B9E904CF5AC419CA17EF62C2334B62F208 +:1036500016D42B5EAE176BAB6E0C20FC7AF5D576CC +:1036600081E05EEB770622E09FD7B74F277A63EEC3 +:103670000855974B845F836F7CAADCCBC71E58FF2D +:103680001D49A282F69A735E8F9F297DF92D1A0C2F +:103690000C27D8A33E105E5FC1B8052ACFE31FDA1E +:1036A000A7E75A840A94CF7700A8EB73827ACD6893 +:1036B0007F47928DFA5F5EFF5F64172E4B7A8D52C3 +:1036C0007724E00FDA594798E9FF3E1D6F77EBE961 +:1036D000FA6C6EF72DCF6B2739BAFC131FF183B349 +:1036E00082F3BDF3A8595E81A5A0AFEF3E6ABF3C4F +:1036F0000FE421C06709C843A11FFBD0489708CC3D +:1037000083EB987AF12D57A89DDBA6D3E9F127C169 +:103710001F2079EE233BFACC46C16FCF1ABC9FE144 +:103720001D65E3FF00F838FD64B48AFC7966EBCCD4 +:103730007B31EFDF1CADA27D586EEB142A617EE574 +:10374000DBC5C7508EBB9B385CCEB497123D9C4AFC +:10375000542C682737B6AF9FF2118CFBBCCEDFA785 +:103760009E13EB71DDAB9E7876CA44D44B01210EDB +:10377000DC0A76F2D93DF7FF19DA9D7C4C4840D639 +:10378000687AEA155B17D4B304DAFE8AFAA9E6C9A7 +:103790006899EA3DF6C0148467537B13959F7AAC11 +:1037A0008DF27B9F78566CCD0BD2E5A9E7DA76FFD8 +:1037B00019F31E978AF451EBFDC90F30CF66B9D4C7 +:1037C0002D4446FB6DB3A342E4CBB63DC457061D62 +:1037D0005CDFCEE99355D902A3D282F478FCB521FF +:1037E0004C00FFE4780CD8F3905F245A68DD8B44DA +:1037F00081D226DD0F71E5703AF8405FF7F10635AA +:10380000E5132BFA1B2D6F56B9890C3BB7E4E1F792 +:1038100062FACE2EE6A6225D1FDF2C56909FC3D4FF +:10382000D4E930BF255B440FE525C843F909A3DC83 +:10383000C1F33546B993D737D6F3F1FB1155FDD90E +:103840005FC1F9314A17592CDC4FBAB8FECD22843A +:10385000BF45D98E7ADCA8FF994ECFC1F9737FC9D5 +:1038600098B7512F38EF962CF3BC216F9A37CF07BA +:10387000E7CDEB1BFD9CFC20A2A6BF791BF09410AA +:103880007E0837801FCEF3E446BDDFC58CEC9AFB83 +:103890008BCA36A31C5F741FC75FE4306DB308F892 +:1038A000FB6B36B7D3978A865CF6328477D3E6F51E +:1038B0006FA2BD77EEBE0805F5D2A258F518C9A1D2 +:1038C000FBEDCA16C8EFFBB7C2D4AE90F91C6F600F +:1038D0009A3564DD1FB7658F66D0CFC78F648FB60A +:1038E00042FAF99EF1A9289717DD6FBF55BBC43A7C +:1038F0009A747FB1D7FFB1050268BFCF28C91C8E6B +:1039000072DA2F821C9EC2D8E16B391EEB409CE319 +:10391000BCEAE6C6B4F9A10B8B43661ACC7B5645CC +:103920004C1BAE2F3387F37B2DC02209E75F299014 +:103930007DD76CF33F49FA5D6E4F45FD1E99D96105 +:103940001B0AF99BE66D9B0296064CDDCF8E6590B7 +:103950005FB6F92BB06367B62E998FE36C14992C80 +:103960002663BD466A9F0AF68148FA52928F3974DF +:10397000392A5ECADE91A85FA35EAF1DAFF357B3CD +:103980008DDB5D60AFB008480BEEE272F180B0B045 +:1039900089EC95BB3B26A13E7DF1C41D436A3343B0 +:1039A000E5236F9FB283DB412B76B435DAA0FE7539 +:1039B00019D90538CC8AFA52F631CA699D1FEBFC39 +:1039C0004E935E2CD7E19F207BCA705D0ECD13FF16 +:1039D00043D447768F447AFA568FB511F596D4932F +:1039E0003A9B0CA52D26BDB0C1EA4DCEC7719B7583 +:1039F000FB66339F37B4A7FE9452CD8DEDA17FEACD +:103A0000CF314F93B07F0200E4BB5FBE69F3BAB41D +:103A1000503805FAF49FE7443BC55F4574A8D85475 +:103A2000943FA7B02AF5E3CF9A3F36088F040BF8EE +:103A30006B307E828DFB6DA81F919F6ECB29F6E6C1 +:103A4000E407D38421BC3C1C4F9BB01CE5548E463C +:103A5000297B328EEC92C1EC58C30EA8ABD0ED801E +:103A6000973E243D57E795B8FDE6FD84ECB7D30DAE +:103A70001AFB7814ACEB850F49BECED8C9F156B706 +:103A800033CD8A7EEF063D2E525772263594EE973F +:103A9000577C588DEB1FB1335946FD5737A56B3412 +:103AA000CAA9B32F707E3860B1103C0F6CBABA0D42 +:103AB000ED13A186DB71753E6513CEC7F007C1FF1C +:103AC00079A01CEDC31A467180BA1D6DA427582633 +:103AD000E78FBA9D87A60D0DF17FC0AE1AA6B8D1AB +:103AE0000FB1AB6897A49475D2BC50208F42FFA44D +:103AF000CCFB407908BDEDBD69F75A078E5B06FE29 +:103B000015B4DF305C7B01FBF3BF20B02D98B7B656 +:103B10009448D06E43B92203E4003EB37AED1C947E +:103B20002FCC3B8BFC9E3AF77C15E5D6BA46EE3F90 +:103B3000AD03FF09F5EA86171A33703E75CA1035D2 +:103B400002F2D7EF14EEA0F67E2743BA6052D75A9E +:103B5000B4A34F6409B9A8A70D3C5D5FD695BADF41 +:103B60001D9CF7596BE72D089FB3BFB433BF10A45A +:103B7000BB9832DFC6EFA11D2EE7A8A28A7E58A708 +:103B800017ED656075B511F22D568F5DC538D5B549 +:103B900002C5A96274FB25BD82E3F1299D9F9ED2D7 +:103BA000E5CF5339369D4FB95C63B23F0BE5ECA7C7 +:103BB0003A1DE09F9200F8A57F005E1677101FA1C6 +:103BC0005F8A7875DBB5EC3B43E8D45DCAED8A7853 +:103BD000E0E7E9945A284D982311BE5300DF28FFEF +:103BE0000CBC5DE7BE3207E1F4A63EAF940C81E267 +:103BF00000CC6F237825CCD92C55633F71FDC711BC +:103C00000EE7707D1D1FE7C943BD109F1845F66F75 +:103C1000BC586C89C07853B6A06E52303F83E21D09 +:103C20003DF1C9EAA610781A7191130951844F1613 +:103C3000784B427BEA831CC37E35FB0346BBF274A0 +:103C40001E3F294F8C20BC9FB07448B80E5C37CE05 +:103C5000D35877A0714855A83C7B3787EBF3C01841 +:103C60003DBE287B887E122C6A1CC66BCAE35807AF +:103C7000AEBFFCB1E58F35D13C9B082E7B74FD1F98 +:103C80009FEEA1B85C4F7C14AD233E9D2DC4F6F190 +:103C90004D4942535A289C65D233B7E9F0E9E57F94 +:103CA000B4B7D290FFB9FD5E0774CD042E07743A05 +:103CB0000D6C1182F2A057CEE9F2E0FA9D1CEF756F +:103CC0003BB97D65C46F18EB1A8D7C77C2929A83DD +:103CD000FE4A9DAD8BF8B0CEA2E434BA83FC3D9889 +:103CE0005C288F0C50BCA1FCEAD139B81EA3DD5969 +:103CF000AB528CF5CE96038542BD5FBFF04E2034AB +:103D00004E61E0E5A0CD4FFC7770C41095C30FE87D +:103D1000392A288FE51C8F2317F56E45D768362280 +:103D2000283FEB5EFCD1686FBF712A430FFAC95E72 +:103D3000393182713AD1C773806E8DCAA1D4EF84B4 +:103D400034B29EC3233293F947E2FA8B0E3F8DF1D2 +:103D5000352629B44ED7D8CEC9C8F729B94EEAD7E7 +:103D6000B06F6CF53EFF5046F13CB21BD8A6C800C0 +:103D7000CA1B23AE173EAFA85CC1143F33FCD4046A +:103D800017AF5F98CBF17E955E4FCB154CFAB80F0D +:103D90005D3BB99F3690DE31DAFFBDE28DC63886D5 +:103DA000FE0BC29BE31BD781FC81EB9A9E3970BD51 +:103DB000963D5CDE209EA787D0EB745DBE597339BB +:103DC000DF3C2370FB7F84774EF48C7EFA31F23F28 +:103DD000C67D9B2B07D6A7F25F459A9704E62BF684 +:103DE000239754A80BA1DF1B73B9FC0AAF2F31E94D +:103DF000B32EC3AE4AC3F1BF20FE3CEF653E8457ED +:103E00005F7A33DB17F224F3BE95418FB80ECFD81B +:103E100081E7D91CB6FFD49CBE9B61BC32D2E122A3 +:103E20007A998ACE25CCE347CAB036C40FF6379DBF +:103E3000ECA755A6F1C3E713A1F43F9FC1E0DB6CEB +:103E4000D95683F479BF3EAF111B2F3DFF633A1E55 +:103E50003E6A7050EA54954609FDEB8D69187183EE +:103E6000FE94920DA8B77F2B129FC8533BBB44A072 +:103E7000AF85CD8D6356A5A15E6EAF42BA5822794B +:103E80006DD9A83F3CE67927560D611D8E603ED95D +:103E90001B6BCA0FAD4931D51FEE1B612ABFA2FEB5 +:103EA0002A53799A3FC7944F6F9E60AA3FAAA5C430 +:103EB00094BFB2F53A53FD318119A6FCD54FCE35EA +:103EC000D51FDBBED0541EFDD7F4BD0FA19CC0F59D +:103ED000A37C7174A9A1FC61A4EDB923083F4B5ADE +:103EE000CDFB8C8B9A234DFD0F444FE1F88F2E3282 +:103EF000C37184F75A9257E73319C58B22279DF077 +:103F0000235D252D623E3BC8D5C830FA1FAC3F83E8 +:103F10009E5645665910BFE547C400CA8BDD58D48C +:103F20008F9D7B388CCECB2BA2B93EBA306310BBB1 +:103F300098D3F90C3BF321DDCE88E4A9517E56E7F6 +:103F4000E763BA1C1D8C5E4FEAF47ADCA0D7CD691A +:103F5000251B103F307FB45B973D29EC4986F5C4A3 +:103F60007A9D64B72D933A5876C8783FD1DB6FD0ED +:103F7000DBB736C8B4AE9F352451BAB141A1EF8F3B +:103F80003664501A6850E9FBA686224A3783BD86FC +:103F9000E9E30D15943ED9E0A17ABF68A8A2746B3D +:103FA0008397F39D778C95F0A5CB1F7621B6DF38EC +:103FB000F8CC0A7100B933DEDA81F24B917CEBD494 +:103FC00081E1D1A7BD382FBA3FFD6AA4F547170498 +:103FD000F687D0E35F72A3DCC722E11F85AC90FCBB +:103FE000D141DA7FDEE00DEC1F35B85C34E8855D49 +:103FF000CC1DE5E9875F66E09813187B23F77F1EE9 +:10400000F23B07864F908E0CB88CD989FB9BE79BBF +:10401000058ABF61D886FB7F5D29A1F3391D46AFB4 +:104020000BB7466BFDC54FEECDE3FA6BB94E9FCB98 +:10403000C3E8F3E63C4E9F13F2FE77D1E7996D514A +:10404000642FE37E407CC8F867B645D2779621336B +:10405000D4032C562B43FAC52D001BD85D3FCCB39F +:10406000EA76DA4899E218115F2FDE31626332D9BD +:1040700077E765A6A13DB45C9249AE255542DF883D +:1040800047AFCCF7E196E9F6920478457DA95A82CC +:104090007214ED49362448F7E2C0F4F8489E62B243 +:1040A000176AB78A6172F535DBE5F05978BBAFCB9B +:1040B00067CBF2FE317C66D039BBB86F747F7CB6BB +:1040C0005CE7B3B4BCE13F433E33E8BC16EDAB90D4 +:1040D000F11FD4E9FC419D1FCEF4DA19AFDD427225 +:1040E000ACFDCAD8D0F8CC8FF5FA83C3F7059B494D +:1040F0000E86F1E960ED716706F5D372E01F1C7F53 +:10410000B9C3E58F747D1DFC5E1A7E7DC6DBE9BEFA +:10411000AC388F9BF96F463AAD6616DADFAD76386C +:10412000FD22C62E5BAD67BA42E874EF55DA93798B +:10413000C82F1A53E404E223F2EFE1CFE3807CB608 +:1041400091F7DF4E7C50C8841EA47BA12B41AC8329 +:104150007E37DEE922BFABB0AB9AECC88D1807C240 +:10416000FDE53230451208B5FCCFEBE3FE4C89A3E8 +:104170000BDB3B30CE900E3C24A8CD22D29B5BD8EB +:104180007F18DA8BFB18EDE7E538D426B7059B7866 +:1041900044AC2730EECF167CC2CB27B1CE2637B445 +:1041A0009BC27AA8BCC8D1DE24C13CAF601765A20F +:1041B000E3C4C7577C052E1D73C65E16BCFC25BE26 +:1041C000FFC07304FE55126B82F4C1C81F3C81729C +:1041D000BCDE6F97EDC8EF122F3F6973C8C887A385 +:1041E00044EFA13C90B727E5EF1792FFC87CE33C72 +:1041F00014DF933E423BC702CEE95730AF12675EF1 +:10420000D56DB86CFD3BC13D2D58CF900FE1F99FA6 +:10421000AEE17181A61F713A6F6AE4F9D379DCFFD0 +:10422000EAD2E9FB339D1FE06F35C22F2289C38795 +:10423000300AF0B7EBF8B3387C1D7E8C9BFA005F38 +:10424000324AA776827FC48DAD343FC6E6D1792F3E +:10425000A1C3C3BE8A0CC225BC1F2DE35FA81F1BD0 +:10426000F4B34E467FB74573C0FA23E705FCD64B3F +:10427000F7B33F2D8FCEE5D1FC968ADE3F13DD31BB +:104280004DBB0DE3FD0040ECCF2E7B1987A7D1EE8F +:104290001BE3C79A1F3F387EC4A8B277315E541221 +:1042A000B02B182709C7D30994F938EE17366E5F7B +:1042B0000F82B72BF3393E4AEAAF0DE0BEE3D48B51 +:1042C0000D2E1CB7BCBE3480E7CBCAEA8B292D79F2 +:1042D00084EFA3945815772CA4A5F5D753FDE2FAE3 +:1042E0009954AED54FA7746AFDCDF47D4AFD1C4AA2 +:1042F0000DBA2D73433F2172A1C409E385C8F3BCF5 +:104300007C85FBFBD274D3F72917AB4CEDAC259E13 +:10431000DB3CDCFF9E8670B0B11401E336A2AB82B9 +:10432000E0B23639290DE192AFAFCBE260D228C4BA +:1043300017E0510C91B7B656E143942F80D73C84D7 +:10434000BB2DC9477EA6B15F037A7228A6BBF5B81C +:1043500071381F4EC937E212C338FFB24BEBED6D17 +:1043600037C4FCDE4D275AAEB8F975903FDB8A633F +:104370006E7603FD580A36CF950067DB0E31123E8C +:104380005DBFDCF3B01FC6DB363BE6E178A87F5BA0 +:10439000E1FC87AD583E5FA0F263BFE2E5B7E67A85 +:1043A0002B71DEB9AF6BC3D1AE98CB2415FDC8C35A +:1043B00007261CB02818CF54BB44F83E7B915DA162 +:1043C000B8E145984701638FE114449E9F5A80F2FB +:1043D00056FFD3CB37E3BF81CED25B6FFFEF7F4178 +:1043E000F9D729AA184EAD6E4DDBE386FED21767CA +:1043F000CBD87C64ABBE6FB9D14EFB96D5AD5CDE3D +:104400008E646A0FEEDFB4631C1618ECB055697247 +:10441000A2BF3B96A918A7BE62313F1774EC117B6F +:104420001BC6CF8FE1DCB07CB840FEF0DB0D4C5BEF +:104430003D8A0D28DF0B8D3CF08304F9C961E586C8 +:10444000FC17BCDF11EF0991F793BD89A6BCDACC4C +:104450004A6D18F75FCC6441413AF271FB4C7374BA +:1044600035A13E00DC6805747CC3E89FF443B99134 +:10447000F7FAA4BB113EB1A0AF5434DB02498E74ED +:104480002C4C2BC6F588D73019F56B6A45C75E2BC7 +:10449000D4CFD58A49EEE733EFBE4E48C76BDB7405 +:1044A0003D1068024DC12C18D780FE265DE4F2460F +:1044B00063B284E5254CA5142912CBCB9204D2DB40 +:1044C00015AC85BE5FC7DA29AD649D947E8BF5502F +:1044D000EA61B215D3290ED057204F5AF3D30C7E80 +:1044E000A078694E85BD0DFDD3D9B3408F41BEAADA +:1044F0008391BF3AB342B12A2176CC0C89EFC3C273 +:10450000A28793DD2829C36F0CD1FF871FB9693EAD +:10451000EE3F2AFAFE90F1FDD17C6EDFFF3C9FCB8F +:10452000FD0D822E9796723C33C9FBD06D909FEBA8 +:10453000B952C5738A50DE41E5731C54BEC1EA69A5 +:104540004C80FC914FC732DC1F784F970F46FF47D6 +:10455000A62F49467E6D5B33DA8AE90C2FDF2740B0 +:104560004AE2F3F40F0F8D031F5B00F3D4E371A154 +:10457000719EE7743E7E0F7919FD66580F9DC373D7 +:10458000F0F9267C2B86E24CE5AC4AC273B87BF589 +:104590007505044F19CD7705635B6282FC54A3D384 +:1045A000474D40203857560AB46F60CC7F6E80C7A5 +:1045B000A1E7D64CDFE3C6F29A150CF55BF03C1C84 +:1045C0003F3F513CA78CF647AB5AED0CE3DE428DE2 +:1045D000F703E4E739F3EC0AF24DD5E2E9343E2281 +:1045E0001ACF17557917AC46BA9BE3D0643C0F71CC +:1045F000CDBC1FD2F8ABE7012D023D47CDBB89EF03 +:104600004382F2C4FD56803FB54F28019B06DA5F16 +:1046100051B947E07A27C0308EDD3686C78B6325D7 +:1046200046FB403160ECE279B9391B1F2847BCA436 +:10463000D4323AEFA030AF0DE13D90BDF6C80F2F58 +:10464000C6D0B96CB46FAE20FC109C1DF5A282FAE6 +:10465000224D8F2FBFB39F91FFD93CAF89E230E746 +:104660002B613058F7CC96EC0308271888E40770C4 +:104670002EC5CB1C9E6B149C1F6E89E2BE57B5C421 +:10468000E338D98CC765EEC0F338243CCC7E8DA3CB +:10469000DE46E3563B6AB97D071DDA93FBCA8FF00D +:1046A00075089EEF307DBFBA2B0EE543862CDE8D5C +:1046B000F2E20E572FFFA35CD532C7D27AD457F956 +:1046C0007A723B3511BF3B74BB90B1EF737D11F132 +:1046D000B8106A6F94CAFE5BDC30CEE1FD8BD73A2E +:1046E000617CAB5B7D5FCE43FE673EA40F835EF7CC +:1046F0000D6F198EFAEFBD646E674DBDF86C54688E +:10470000FC5829E0F49983FA1CD6998DFA19F470B3 +:104710003EEA7348F3509F439AB394EBF35CD4E3BF +:10472000504F45FD0DDF2374FDEDD0F577B6558E66 +:10473000437D9F774433E9E19CD72B4C7ADA187F8D +:104740005401A77375BFC754EE1869D6E325BA1E86 +:10475000FF4DB1677EE8FED8A802CE8FA3F594BDC9 +:10476000EE4F45FAC2BD5A84EBF137586015149DDF +:104770007883E31D8C38DDCE31E30FE5B98EDFAEF3 +:10478000F5805F6163E2BE7B43E43FBBCA4F7A7052 +:1047900020BC1516F0F8635EEB74110F2D3CD75654 +:1047A000B81EBBCB1C84DE07C2EF4BB9DAD48278CB +:1047B000D48FF2CDB5E8DF78ED344EB958BB16FD95 +:1047C000E5738067BBDCB7BF1C9C1C0C3CA7930542 +:1047D000024250AF427DB503BEE7BD2DAA7E58AF61 +:1047E000BA983521DF2637737D16EF011637C58D50 +:1047F0001D78F6B2379FEC954DF9A13549A6FAC35D +:104800007D8AA9FC8AFA0C53799A5F35E5D39B8B94 +:104810004CF547B568A6FC95AD15A6FA63021E5384 +:10482000FEEA27AB4CF5995F3B9C19A2EFC7B67B1C +:104830004DF5912D52115F4922433B7CDCCE1A731A +:10484000FBA360E73AF05C9E8FE098C7789ECA4170 +:104850004E00C9EF7B04F54F915DEE80F673175B58 +:1048600083763143BB8A898897995E27F19F1A66C0 +:104870006787C72396BCEA3F887C9BF3AA97CE59EB +:10488000FFA020CA4D724F8F4F948B4EC2D7B923D1 +:10489000A28ABEC912F450DC41BC9EC38E109F7B1D +:1048A0005880F6CDC3D66FC42F6A74BCCF857E3ACC +:1048B000A0C89E64C6738462C673648619CF51AA69 +:1048C00019CFD145663CC768663CAB47EF155361CD +:1048D0009E6F268B4C28622CAEC28C7703CE45F09F +:1048E0005F7F700E87ABCAEEFB23F2CD60F07C3C9D +:1048F0000C7E4C9C4472FFBC87FB3DF037CB5110C3 +:1049000022AF4150223C85D7B91E08E77F037ED9EC +:104910009E4476F7A5E48073C55A8C27AA9D5C0E49 +:10492000E457A6E1F120F6EE82C2A188D714B6CBF7 +:10493000B867E4C5734C21FCFD12F27764BDDAE57B +:10494000C7715BED747EF13707EE3988F6B85631E2 +:1049500082F49A2BB37332DA3BFB0A9CFA3931CFDB +:10496000BE827CDA47ED4035746CB26F3ED67B5721 +:10497000B0A8ABDC282FF8BAAA5FEFF593CD7A2A5E +:10498000DC4EF62F58DB41710FEE9FA23F83ED27DF +:10499000E3B979B453C2E44BB6374CAF85C5418413 +:1049A00079663B9A2D34C3ABA9C89B26A4F7959F83 +:1049B00003C741BAE8FB54E66F42FD3EB142FDFD3C +:1049C0005D08A71BDE198A765C9F784810BEC73940 +:1049D0007CDBE97E00AB1408BEE1704DAD570FA043 +:1049E0009F621BD63919CFD9741718FBD55A37C215 +:1049F000797B04B71FDE7E84FB45798716F373D974 +:104A000082A2A2DDB43D86D3CDDB02EBDA0EF9FC47 +:104A100023DC7F49AF4953910CB7A7A9FB30FFF6C0 +:104A20000A41DD04F982773511CF918DF441398C3B +:104A300097B3CA531A05ED67DFC3CF6FBCF469356E +:104A40009D330B7C97976F2FF6D139F9B7FF859778 +:104A5000171EF58B2EC88FF1EBFD0B2DA52ED46BF9 +:104A60006B046EEFF4C12FF77BA61AF8D9F8F9BEE4 +:104A70007BF382F85978423DE882EF8B7B3CD3A2EE +:104A8000595F7C197EC61489FB11867F51C63C9400 +:104A90004E633E4A2FD7BF98509841F09DC154CAEB +:104AA0006BBABF1159A1153F8378F2B9D8A810FB92 +:104AB000C5485B623D2B709FD35DEAB91BF5FF844F +:104AC000426EB7045363DF5E1B8E57BD8E58B9BD6F +:104AD00003869F40F85AA68A3CFEE99390DF02C302 +:104AE000B373713D5985FC3C7AFA7D3EB26FBF05C8 +:104AF000661EFAA31D0F4A31789E1061DC9F7F1E4F +:104B00008CAF859D2794FC745E364754AEC61B2936 +:104B1000B39EFF8F87D15F47DA0061C0A615FEE222 +:104B200066FF24A253B25306AB77443F9FB4DDC265 +:104B3000EFEDCCF2A45950AE6CCF36DB41B30AB9DD +:104B4000DF64A4F947F83ABF354C5051FE5D23B1FC +:104B50000EDC3FF8A6EBCA59E5A738F4EC4D76C653 +:104B6000CF15B194D073DD869C99CD8C3FCF01A435 +:104B7000B36A3D8E767CAC8FF07DBCEDCAFD33E030 +:104B8000FBB1E942408079DDE8008B0CF0FFCE817B +:104B90000D941AFD55B7FEFA5DC1751976D383578A +:104BA000895F5D1DE47B718ADF82F33CFC90407677 +:104BB0009F31AF78831F4ABC24EF045DDE25566D1C +:104BC0001392C4BEFD87EB03E02B86FA23555F5D8D +:104BD0007C45A2FFAE503997D1DE7817D6D7ED7B52 +:104BE00023FE0B7FE42FAF9BCEE55982C3AFFB4D75 +:104BF000FC9C6C720DFF3E9CF508585F61F2AAF8B0 +:104C0000740C11AA16CC271ED8DF88F38E41398781 +:104C1000EBFCD1DEBC503907CBF3639C10A4A6EFAC +:104C20006730AED551A9D5C278B0261FEAFAA5A241 +:104C3000F75F0BA19E368C82CDCC95C4F59D5D6E41 +:104C4000D70425B41F9EDAEB2313D1BE0F8F47DAAA +:104C500025DF1398677EBB8CE7C31F8CFC0195D7BB +:104C60004B0ED94E712A5F21D2FD2F0B63F53817F9 +:104C70008F478A0E39D1148F93931243EDFCEC0EBB +:104C8000C5549EFB6A86A93CBF5335E50BDF2D3228 +:104C9000D51FDFA599F2134F5498EA4FEEF198F221 +:104CA000532F5499EA17B305A6F252C7525379B954 +:104CB0007CBB297F4DD2BDA6FAD72A8DA672E6F518 +:104CC000DE82F4C52C2EBACFD227EE14269F27B74A +:104CD00026FA43FD8CDEB84E928DE8C28E7809D557 +:104CE0009FE35505D3A902C85F4863F2BC070BF3E5 +:104CF000490E0F437A5994F16113F63B422B7A081F +:104D0000F193D52831DC1F591F51E75B8074BFCA6E +:104D1000250B2057D68F32EE7503D5835CC91AFF59 +:104D2000EF7B315E90355E0AE0E482F7BE79B90D23 +:104D3000790DD7337408C55B1EC44D20ECFF2A895A +:104D4000CED9568BA09D613EC72CDED1388F384B13 +:104D5000A70DD385968082E928D17BB490E2D5ADAA +:104D600059E81F65C574B5A4D3786E86FEC88ECE8B +:104D700033CD13203F8EB11EEC775C51CE7B8B710F +:104D8000BC574586E1BDAC1776D4A11CFFCCC1440D +:104D900094CFAEF16589A8FF4FDFC3CF452D74884E +:104DA0001E09F9425293F17CC8DCF13C9EFBD10014 +:104DB000F1D87BB38AE5222C4FE6EDC3CBBFD0F50B +:104DC0008A719F7844869A78735468FB6F517B236D +:104DD0006FBD10C3BC71A1ED157E1F5F02CDE7C48E +:104DE000723795C3F2FC18772E857FA03E8A8EC954 +:104DF00090101EC5CECF2C2817E2D17A84F21E81E6 +:104E00009F6B655240A1F8F224A9A7D7FE1D81ED42 +:104E1000B9DD4C717EA857EC30DBCDE398391F1E0D +:104E2000C7F78CE77AC27A61A8E91EB667BCC2BF31 +:104E3000F7CE3B95CA77D8F8B9BB1D921699E344D3 +:104E4000BCF2F89D14EBA0F5444F8E6D0B8D97DFEF +:104E500050C4E1B7034C03AC1707F5B739FBAEA359 +:104E6000D85F5C857ED33C969583745A5C2498DA2F +:104E7000315D7ECFD7F965BE7CF00BD40B9BC6F3BA +:104E80007A16879CF034D0C92D7E17433BEDD67936 +:104E9000CC3516EA79C7B8DFD420FDE8A1B18FBFC1 +:104EA00080E9CFC6FC69B582D7ED3AE95C35BB5FD6 +:104EB000B7975819EDA30BFEA1A4472E571FBE317B +:104EC0006EC19788FFB52E6F860CF35C9B728ACEFD +:104ED000554E009F87EEC9E9F0C1F3A2A1E795DE28 +:104EE0001857FC65119EE7B3B28E58C4F3CBF6C0D9 +:104EF00026F44FF6333FDA892B77276F42BE7F6661 +:104F0000BCF70BAC67DC7767FB7B46631CB294296C +:104F1000644FF5C1BF4E3FE1748013473B63307A65 +:104F200028D0E7BD503F8FC89234BA77F7E349EEF7 +:104F3000EC750AAF877459EA8869A37DE022CE5FD9 +:104F4000C6B85F973EDDE95C9E18743ED8FC005EF3 +:104F5000A673D15FE87462A4069CC2EFDB7EA1D386 +:104F6000E11745FCBEED33E33D04D795337A3E8827 +:104F700041F964DC4F1864BD3FD0FBF9A6EBBD5C82 +:104F80003C78D0A78271160EB9BC793DF037E2E1CA +:104F900072E775D1A08FACCB9BD796BF115E1AE399 +:104FA000F8196C5E80CF8B884F56D643E72F16C614 +:104FB0005EDEFC5EFB3BCC2FF6F2E6F702CA09D6BA +:104FC000C1E77723F83D686FF673BFA99CFCEA45FB +:104FD0003CFEBED6C6E3DC6B6708AA9FA1BD30D2FB +:104FE000CADFA5F866F79C7AF197C03A6250FEEDE9 +:104FF000B6F338A8DA333A341EFC960E9767C66BC0 +:105000004770DE0B47EBF2A0C25CEF4858BD75C598 +:10501000FAF9E44A0BED23DC5F3492E498C5C1F45D +:10502000FB6EFC3EC4D122C1741EBC77FF344F21FD +:10503000BBDC06762BEA01DBD0EB087FB6FFB2E2E1 +:10504000CB0C6C61D2EBEF0AE80734839D1E8227FC +:10505000633EA71A5E95475A0786C772717B81AF78 +:105060009FF33EB7E77ABB8B42F689963FF99A3CAD +:1050700032C4BE1BCBBA2CE42CB11E0B87BF7EEE14 +:105080002AF1EBC1FFAD040EFF37C67948FE1BFACB +:10509000A2EEC5A51998A2DE47FBAB276A08E983F3 +:1050A000A69409194A885D12D3ABAFCDEFE204F59F +:1050B000F4DFF62E4ED08E11983FAEBFFE25FAFEDD +:1050C0008CA050FC19D8C2877EC042E77F5E122FA9 +:1050D0001D0D1D33F03EE6EA86A29998EE6DD0666E +:1050E0007E0206DDF171C595E3F3F17C735A591325 +:1050F000D93B4CC5F752E23DAFCE08B5AF13AB3A42 +:105100004DF964EFBB3342EDEDA1355DA672E3FCD2 +:10511000B4D5ADD0F9E9E1BE13A6FACD160BED7BFF +:10512000F52C60BE4DD918A7EE319597684E7F4C8F +:1051300034C6AB2F98FA5DD7C8E93BBD99CD0CFDBD +:105140006E953486E7AE47B5386686F67365AB6C08 +:10515000CA8F092499DA5DFDA4622A1FDB9E61EEE5 +:10516000572E329517EBE7C54A1DC5E6EF6C8F69E0 +:10517000FE065CF1DC7E3DBE1F21FD88E2A7B8671C +:105180003C29A7EF39FDE3E3B4CAF1F17DE9DCFF87 +:10519000C349FA3E1C8F1318FCD964E1FC69D0E7BF +:1051A00040F82FCFD56EC27E538CFBF119B24AFE68 +:1051B000C3107EAE30BEB4FF7B4E7EDDAE3B6DEBEA +:1051C000BFBCBA970FCCEF0F05E994BF3F74BA8408 +:1051D000B71FC3B4C4D0FDDB3BF5FEB32C5C4FDC82 +:1051E00015A525C65EE21CA0F542240BF4CB6F2E5C +:1051F000FA7E7A44FFE3F8BFF638E200EBB15DF2E5 +:105200003DA5070C78C5F65FFE6FBDF04A36F1F597 +:105210000368E79BFC9361546E0D7B9729D47FF163 +:1052200053FCFAD2FECB90218CECD35E39F877F7A1 +:105230005B18CDFBEBDAC1D5897C5E83F5FF9FE37C +:10524000B574D2D7DF50CF0E4165954CFD3C8FF43D +:10525000AFB15A1FF76F5C744E9185F9332CC34D73 +:10526000E7F7D6BA3AD7EC417D7F874BF503CBDC25 +:105270006AE989477E5CC0BAD6A03FFEDF2F47D8D7 +:1052800010CEDD2FFF7A389D37E8F55B2245DC37FD +:10529000BCDCF919711EE39D14B09BAA90AFC789BD +:1052A000E07FC1B8D1968B49C4A7B29243FBFEFA06 +:1052B000BD96F3EC4C2CC630EE3A747E15C6155CE8 +:1052C00020FFE354A80F8265680EBE6B01A88EC54F +:1052D00094EFD744EF924E85C2F9C78CC3257CDF8B +:1052E000E6FDF1E67D9B736C5E7487A277361EFD4A +:1052F000FEB268F4F30D7FBFABA15996ACC1FD9926 +:10530000F0F57A07901BA7743E192E69A7102FDEBF +:1053100001DE6BEA36F856D2BAA99EDE1FD69FDEB2 +:105320004F9C60E5048B297E3650FCDD88FF08AD7C +:10533000EF3499F695BD0AA378D1391E975B2BF807 +:10534000286E18727EB455C4737C969E382E9F03C7 +:10535000FC5E263E6082E7431DBE6148EF839D1FD1 +:10536000FC3C82BF1BF552AED73981C7E70AF979F9 +:10537000411EA7B3EDF5DED2417AD8A56EA2B8A73B +:105380007F74E8B9DDD8095C8E6CCAD36227407A95 +:105390007EBC1687FD1C8E48257B4FC9662A1B4A9A +:1053A000F900CBC2F701AE89C6B8D1674C8B96FB2A +:1053B000819B9162DC667588BCF928A67FBC8CD085 +:1053C000C7F74EE0FC1F9BABA5E3F827F03D2BA8E9 +:1053D0007F62889EBA789C3CABB73E4F4B2770BC2F +:1053E0009ED0E3E8276279FD5EBAD1EB95EBF53EFE +:1053F0006970785687D893CA83761FFA95F1E9C603 +:105400003D3DE02C5877DDAE44F22716B77C68C3EB +:10541000FB71DF9E50EC45F8603D5CC762A9CB860E +:10542000E7218A72BC13F17B9DC2B4EDD85EE9B26C +:10543000CD04F876EBE7BCBBAD3C4ED51DC1536344 +:105440003EDF9E30DD8BEBEC9EDC45F134235FC705 +:105450007A6EC173C5DF9EE0A1F120FF6858FE039C +:1054600049A478B28AF6CE42877E9E3F83DB6FCC1A +:10547000A2EFF785E9EDF07711B5617FA946FA1C37 +:10548000487E591C9D071E86EFB7E8E76EBD3BFFBF +:1054900078E07BF0BD063795E07BCD5A21E04FFBED +:1054A000DBE555F7F04E1BD2FBBAE29ED49FE551E7 +:1054B000DC44C6FD305679F820DE13BF5F1D4D7108 +:1054C000772675929DE21214BEBE1DE6F5ADD0F1B1 +:1054D000BB1437D7707FD0E12327CCF043C2ED1E39 +:1054E000CF78DD4F31E27083F1F7AE77F67D2F9400 +:1054F000BF77BF3614F973D2EE37E230ED87BFDFE6 +:105500007D296D70FEAE632D36BE9FD0350DFB5FDD +:10551000A6DA685F65B5FCD1B487F3E8DEBA0FEFB1 +:10552000B3B09DE6F52E0D3D0F2CA07F630DEEB7B9 +:10553000C3FFB58CC76957B49BBFF739071C66BF5B +:1055400085D3C9273A5F2A8CDFF3AE010D82F56A55 +:105550001C1B5D8D7C1FC567C77DAF80797EC6FB38 +:1055600066A344CFA348D7276DDE3481F49E62E35F +:10557000FACFACDF8DF7CF163967913E5CD41C3E75 +:105580006F8DCEDBDCD632C87A8CF72270DE90FAD3 +:105590002728FC9DAF2195AF6A589CD749FB7830EE +:1055A000AFED1308FF2D2EF4474FEAF6AF51FFD3AE +:1055B000FCCEC73B043A67ED40BDFCC638EF4E5CFD +:1055C000C7F077BB8E0948574E2FF57376E7C9DFD2 +:1055D000E23E274B72EBEFD3756D9888FCB1539484 +:1055E000797CC2BF16DF1DEACEE678AD71383B6824 +:1055F000DF2B10CE9F7CDE30AF03FDCDCB888787BD +:10560000F3D5565D4FDD3C59FB4F6C671DD14EEF16 +:10561000EBF5DCCDF795016E74BF79B5C404C45BBE +:105620005157CF9D742F2889D1F940E37D29A66A6F +:105630000EB47393F5F74CDE974B1CE80724C4585F +:105640003C281F57CB0B631685C8D504C1E2E1E7A0 +:105650004117C6E0BB25F3ED5C2EA6DDF3E572BE77 +:10566000BFA6C4E2FD4977A497DEC3E88911693E6D +:10567000C5733ECBC5F72B522E3A73707FE1973A34 +:10568000BC8D7EA796F6E4FA9C4178B8D3F9FCEA83 +:10569000E2A7B5A21E0C34B905610AEE835450FE90 +:1056A00033292906E1FAAC0E87D5BDFB1F0119FD90 +:1056B000E2BA08EDC725389F4322BEACC23E93B57F +:1056C000E898CCBEEFDFC637B5ECC53873CF212BD9 +:1056D000C52DEFDA569CC842D62B4CE472FB1FF561 +:1056E0007EAD1117AF8B91983B3AD8CE58579DFE9F +:1056F0005E5638FE8DF297FE2AF64B1FA913793CB1 +:105700006720BF2C5E5F57DD8531263FA50EF41B59 +:10571000CEB3EE42E625FD94672718ED634C7EC8B4 +:10572000B313B81C0EF6E3A6F25FE8EBFCC5AB962C +:105730008A4DFDCC77CA44BE9EABE2253A97787578 +:10574000077FB777A07AC67DFE81E6B5A3A4EB16E6 +:105750009C37C691FB1B2F475FFFB3BA9CDB11DB65 +:10576000558D70DC711DA37739CFBE9CB809F79BAE +:105770008DFA3FD5E17DF65AAECF0B24DF2D07F22F +:1057800050ADC802EECB27CEEBB02C7006F1F2FC88 +:10579000386DEF84103BD2C0C383918F5A882F0F8E +:1057A0008DA2F763C2E7BD5ADFDF32FCCBC1DE6BEF +:1057B000AEBB2098F0D717FE129507F78535979066 +:1057C000807298EBB7077F9365B37179D383EF78D5 +:1057D000968BC3A6BD88F92491E13EF04990DB5435 +:1057E000AE81A308E52737C7AD1560BDD50B403F97 +:1057F00081BFB87075B8FFD592F529CA413FDFA7C0 +:105800005C7C545D4B6136B1D646E77A81D5B0DD1C +:10581000E2FBCCF2FCE4E1FB6DB48FBFD0E913E80E +:105820005D0CFFB417217FDB4E1BDD8FA9FE89794C +:105830009C9AB0736609BADE09F747564ED4EF0951 +:1058400016B002D4132F36ECE4EFC3E8F705273087 +:10585000E37C7BA714BAAF63F8231F8925F74C04B8 +:10586000FAB801CFC167E2FAD3131786D0DD6FA66D +:1058700008A6FB72A780FF4742BB330D32A5EB267B +:105880006A3FC0F60F4DF4AEC214DF7BFA14D6B5F2 +:105890007215874FF7216EC7B32AAE07EDE2ED35DB +:1058A0000827FB50FE1E26A8591F9D77B180FE05D4 +:1058B000B889E29DA28BEC2FFEEE4DC21FF29250F2 +:1058C0006FAE2BD6B67D370FCF725B58938CEFE45B +:1058D000C957A13C768BCC87EF742EFBC58FA89F50 +:1058E000402C97FFE95B8B2DF86EC7981D026EBFA9 +:1058F000817EF067A02A762A4354BC0710DDD54587 +:10590000DF0DFB253E329084E7AEE2AFE6EFA9BAA9 +:10591000C5E26C94D70A0B103D9FC5F801F4FBF06B +:10592000CE747A67FCDCAE2B2935EE95E0582CADB1 +:105930002FFD9E6980EF21EF565CD53E5DA0FD3CBA +:1059400070D4228BE8FD4D0BF78FF93C6A57752414 +:10595000DC8C7AEEE7129DBF72BF722DBD079226D6 +:105960002902C2EF6641E676956EC7CDE1A4C0E696 +:10597000EC7AFEA7148F9F08EB073A59C8D454ACB1 +:105980006771707F6DAE57A0FB0FB020BAFF7473C4 +:10599000697B3EE9A3E5D618B45FBFF6B9219DDF68 +:1059A000C2EB9DB27655FF2E2F181F3D2BF48CE6CF +:1059B00076A22F80F3EB8E61B188E7B72672BBB673 +:1059C000CE88D78F043B2A8FDEA5B983CE3D1DE15B +:1059D000EFEF760B72ACE9FD12B9E557683FAEB454 +:1059E000C86477801EF5E37934F72B576EC277656C +:1059F000CE5ABBE8BDD23A907702949F9878763E13 +:105A00009E53AA4B01FB06F27193BE9C2FE1BB3261 +:105A100023BAAA2D909FB02BEE16CA5FD5750CF352 +:105A2000659352793EA7AB1AFD835B2765DE42ED95 +:105A3000518EA6E0FBE9B9B7E0BDD853315C7F9F3A +:105A4000B5F238F8D917C66CF287E0BF6A12D74FA3 +:105A5000A72278BD5369ECD61908EF8CAED1A1719D +:105A6000B749930C7F9CD3FBD297223A90308D7626 +:105A7000D03FC5AFC2FBFF93AEFF96EAEF3A01DF1E +:105A80003D87F0DA9FA4C492BD7B02640DC21BDA8D +:105A9000E1BEC6D189B1FA7B3D5DA9B1997DC75BF5 +:105AA000867AD849E35585EA1D7112E77F96C9FBCE +:105AB000AF4B9163101F09B1DC6E0684C4F077D937 +:105AC000DA74BB86E3C72DCAD9C8A7534BB9BE99B0 +:105AD0001A17D7867C35D07C8DF15C93747FA749EB +:105AE0008717F485F64BDD8B63E89E0ACE1FED9C8D +:105AF0005B75B85585D4A77E8775D13BF5E1EF5925 +:105B00000CB64E45EFE71FBD4E96C7DB019D67AF54 +:105B10009383EB30E256A7F4B83D2B32E6A110FD9B +:105B20002F7DE9DE56BA8F262BB1749F97FD3B6F10 +:105B3000E7E8C9C5FD83FD173373D0AF37DEED133A +:105B4000B4B76CC8E7BDEFEBB5F37B39413ED3EE9C +:105B50000AE52B773A5FA75BD4DC4DC47F304FE278 +:105B60003F8DFBA961F4D20BEF70BEEDD39F126B9A +:105B7000EE4FA1FE06C2C3F4BF371E9AFA87A731C3 +:105B8000CFA9F8FB01543F7D13D537F82FAD97FF10 +:105B9000E83C6E38FF950DC4B769DF703C7D3F72FD +:105BA000C5BD803F8C5B2B663A5EB123CDB23033EE +:105BB00058FFFE273FF2A07CEF8D0BECB89DDEA9CD +:105BC0005AB96B01437DB2E2F9A77FE587F6CB9E18 +:105BD000FDA98B81BC3929B524A8D0BE76CB1A1774 +:105BE000DE133B21F95D28274F06F8BB9FE172FCCD +:105BF00009030FBA3D55C74877B053BFF872ED7728 +:105C000061FE7F12C0CE91F11DC02FD6A25E3EA8CC +:105C1000397A5812F60BFE3EE4972E70FAF05EDBEE +:105C2000CA9D663B68D9133F4D50C860F20FB590CE +:105C30001DD43114DBD56DB6AA18E7A93B22AA0AF8 +:105C4000AE83F5ACC5F985B75FD9FE31D95932D8E5 +:105C500073C326F62D07CD4374BF72C7BFFE5174C0 +:105C6000617AF27718DF5B19761EBF66007BEAA1C6 +:105C700049E6F8AE011F168827FBA5E9E74F3C432C +:105C8000F6E3EF12B3F19EC399CDFFE51232F1BDF9 +:105C9000DEF4E805A4C75799E48E919E453BC01EEB +:105CA000AA4F395E959D02C56ED82E9ED65A3B5C92 +:105CB000E867D7B65955D0B0ACF6E9C71EC7F8119A +:105CC0007B8F9FB7AF7DFA7F6CF87E57ADA0F5084C +:105CD000FCF7065C4241103FCB9FFE038FAF248B45 +:105CE000AC12F0B3ECB9F3BC3ED8B711F87EC6B62F +:105CF0000F291E53EB75FA1CFDE0A7B47D0FBD07FD +:105D0000DC073FED1F4EA3F7827FFE39C1FFE46E33 +:105D10008125A6F56D5FB3E534BDDF70061021C7A0 +:105D200020BEC405B6E8BEF5CE6C8E24D97E6617BB +:105D30003F573B18BEEEC5584C3CD135C1BFE67746 +:105D400076B512C77BE64E17BE1B7B5CF271FA7EFE +:105D5000644D02DED7ACB1FA13644AF9F79A47EF03 +:105D600026BA5B72E8EE0446FA4F4BB614D13A936A +:105D7000717DB76D9C4DEBAB665EA2BB1ABC0F0E7E +:105D8000E979FD7755C2F1397432E70F3BBB3DEB42 +:105D9000BBDCEE67787EF238BE2F8BF196C3FCFD3C +:105DA000273BDBF401CAC7F39DF102CA67F190D526 +:105DB00081EBBEEBE59836BCF7D8A3CB91D243E795 +:105DC000A7211FDD9526D13D2958BF5F8797C0EFDA +:105DD000F931452AC0EF8CEEE3DBD939DB7C8C133B +:105DE000C0773C471B529FEF936EB20FA1F79513FC +:105DF00078FC18FE0EB302FDBD74E4A3278F139D3B +:105E0000B0A4744B34ACFFBAC95CCFE3F79F217FD9 +:105E1000819F120DF0F9ECC8C7B614A8E7775BE8CC +:105E20009C7B5DE08F346EA5C0FE88F461C063E5A5 +:105E30004EBBE9DDAA959BFF10C6A7E672B0070925 +:105E40006E2B59B4827EC2715BCFB497701C1877E9 +:105E50008B8CFE90DDF4CE46902E6CC1EF69417EB6 +:105E600033FC9D253A5F87E32B9CCF132687DDBF4C +:105E7000D9187F59EF09D55A038F237C6A811FFDFA +:105E8000C48F9CBF18C843BCA77A7AEBBEDFCE850F +:105E9000759C6EB7BA2B6934B3FCACD90EFC09F50E +:105EA00045F03F2354949F9FDB50BF2495827F0A87 +:105EB000F33EED547173BB2F5FC2F77EF9D2C9EF89 +:105EC0004BFDDF929B4B06909B5A183CCFB3CC689E +:105ED0001806F4C5F22BE8DD8130F81AFE67B85CCD +:105EE0007C7F9242700E978BF0F75B1602C7654F6E +:105EF0007D4AF4FB279073A8870CBA05E547740B1D +:105F0000791BC60B65702C315F17D8330BF7FDFB7F +:105F1000AEDB0CCFF0720903E5F941FC5B5731FAB7 +:105F2000BDA49E97457EDED57BC185F85BBE4BB494 +:105F3000207FAFD1EDF66EB9C78576F69A1823CFDC +:105F40006EC5F3CCDDFE2C19DFEBE889D0F7513CB0 +:105F50003DAE1867F03DF0D5FAEF274961BF9FB419 +:105F60003A4ADF6F49E2F58DEF79AF882EBCCFDE7C +:105F7000156015FDC58B8C774ABB182F2F172F3E48 +:105F800083F1C573FE9116DC673BE7E87906F7DD20 +:105F9000CE4919B17EBA4FC5EDD04FFCD724C09C75 +:105FA000D81F98E7B7E8AA31BF664B06F82FE2A0E2 +:105FB0006135AF35B9D02F17A3F20EBE04EDAB811A +:105FC0009E319E1F1EF758C63CD11D697DE31BA064 +:105FD000FFE81DA525802F8A1F6F34972FDB759A48 +:105FE000E86F5918FD79F5FDEA70FA6B99ACC74175 +:105FF000B259B67E1F91FCF6EE57453AEF7DCEC101 +:10600000C8BEC0FB898049F0DF45B616E1B055082F +:10601000A0DFCEFCF144D72B19DFB732E833DC7FA9 +:10602000EFE3DFFFF2FD82EF4195DA5FFD3EEB61CA +:1060300048CFFCEABDD12F61FEF977527FCFFAD667 +:106040002FDDFD05BD1FDCBDDBCE705EDDBB7F9DA2 +:106050008AFAB8FB453BDD37EF5E65A7FD49FFEEE9 +:10606000287AFFAB7BB8FEEECCCB9F6775911C5FA7 +:106070004DF8796932BF07746ED7971FA0BD7B6E4C +:10608000975DC175ACDCCDF5EACA1723E85C7CF7F7 +:10609000CB9F1784BE1BF5B7AEA74E3F7FDA0DF43A +:1060A000B89DFB37A9387EDDEEC971E47FECD8637B +:1060B000C3787AE92B7FC94279D5BD7D8F0DE5196B +:1060C000F86D8FE2BDA1832F773E6A05389F451B8F +:1060D00010FCE985BB636E457F3A1C2ED0EF59B4A6 +:1060E0002357BE1249BFF30470A9413B6C2078BC12 +:1060F000FF4F0A8F6E6BE7347C57BA7B9B908BFA0D +:1061000022081781F05CBB2B2AE01070FD2FB8A885 +:10611000DE08D0FF2AC2E1F32C8C2F0DB6EE8BFFE8 +:106120005BD66D615F6BDD43A7FC73AEDBA0FFB692 +:10613000C95C8F85F3415FFE7FFE1ECA3F1345EFAA +:106140003D5F2EFF4F9CC2DF07FF675BFFD7C07B21 +:1061500016C641BF2EDEE7FE3F8BF7D774BC47C99A +:1061600068F777BFFC97545AEF65AEFBDE7F527C31 +:106170000FB6EE5EBB49F43846C0FC9C517B1D68EF +:1061800037ACD1ED9135F8A81CF4D78CE7ADB96FD9 +:10619000427E8A1EAB668F4FE17ED61A96A3B5A1CA +:1061A0005F0576C616B253200FEB6EF64EA2771837 +:1061B000ED8CD3D779B7F3718C134ACA1D54DFB075 +:1061C000078DBC3CC12E637E8D929384FBB56B9C86 +:1061D0003655E8276E6FA4A2FBF52AB41B25A7CD80 +:1061E000E4BF38C3FC9021236D267F2582ED95F115 +:1061F000BC4D842AB100F98121EDA1FEEA29FC9C65 +:10620000E91016D07F0F75503891DFD82C1B70D253 +:1062100068FD7665E41D683F1DEA85D31D0CDF59D6 +:10622000F71F118D7743383C99F1A7C32D2997DECD +:106230009560924A79EBA25A82A3C4C08FE4EB30F6 +:10624000F99D781E17E7130AD792227C07CF47F9EA +:10625000A6F176B9C9DC9ED6B946296123DCB48E95 +:106260001EFC3D4949B17C88BF9BF48F82EBCF0770 +:1062700080AB91E6B11E3A37E6D6CF07B91DC3E829 +:106280005C14FCF5F077726486FE9C58C2DA296EC5 +:10629000E791C2EEF1CA1D689734DDCEEF09B30C69 +:1062A000A6F073F6E6F325EB5FF65891AEBD36DC4B +:1062B0006307F8DE7023E56F70324D807E6F601EDD +:1062C0002B9E8340F6DE42F1554FE762C8BF91B77F +:1062D0003E09ED1DABA0ACA6F26BF5F7A498BA276A +:1062E00012F2B35725C7E2BCE32A9915DF01983DA6 +:1062F00083DFBB7F93F51C99897AA34AE4BFCBC4A3 +:10630000D8AC57016F3375ACDF1875577924D4FBBF +:10631000720ADF07989DDF64457C7EABC9E3C37DCD +:10632000DB6FA7F68C8C098D734C492378CD963C96 +:10633000567C176A36CE34B62F7FCCC6CEE1FB6CC6 +:10634000D963E5E71BF47353DA55DFE8DCD4381B77 +:106350008FDF2EAFB4D37DE8E5AAFAFE72845BA589 +:106360005D861AAC246FC170948BE5E2A447F07D82 +:10637000B2C35BEDF416E2E9877E330CE3DC6ADE40 +:1063800077A6A13CCD66EA1A3CC7572DA8FC7DA58F +:106390007C7E7FCEAAFB0F4B362EA0DF2B9AB95501 +:1063A00010F09EC79553791C46DC2A903C8D6B15E6 +:1063B00002D7C03F1B27F3774C4EB7F1DF6729ADFB +:1063C000F41EC438CDFA22BB7E8F5873A15FB44C43 +:1063D00087F35B56F5B59158FF69ABBA4AC12F01F7 +:1063E000AABF547FC7E574E52A7ADE3777AA42E36D +:1063F000558B938AE3E09F332B0FD1EFD219EFA295 +:1064000004FBF3DE3F3EA4BFC6C94F507FBF05BFAC +:1064100017E344A75B9BA6E1F6773553E93E36AC1C +:106420006B2DBEFFB114E6877EF10D4C7D200FE988 +:1064300047AC25BD107E9ECA889BC4E585C5F13654 +:106440009BF3D550273207C7B9F4BB26C5539DC16E +:10645000776BAF0CF6CF9058FB89CB187E56AFFC0C +:10646000D3F1B3B388C75DC7C56ADED0F319BEA93F +:106470007CDFCB4877EEFAD3EF9623DDE7D955FEE4 +:10648000AC5E4C19EEF3CEA929CE43B22A7164EF6B +:10649000C7FCCD3EC803FCE64EE5BF5F355FFEB0EE +:1064A0003C06F2B7260907315DA0A44D8B85740523 +:1064B000E2251FEF25171FC49F7CA854A7D37B3765 +:1064C000E03797205D9C83B5E3EF7FEEEC3A3CAC80 +:1064D000BFF7788BF14590107955EA8830BD3F536E +:1064E0002EC798F2D724259BEA5FABA499CAAFCFF9 +:1064F00018632AAF54B34DE55BA7F2F37ECFE61FD6 +:10650000AFBC13D6F9EC78514610BE89707107E123 +:10651000F2E6F8CF4B908EDF18E3B18A21BF6FF01F +:106520009DA912B5FF0EF224EDDF733F7F692FFDA9 +:1065300031A2FFF5D38500BEDFFF46FE8307F19E43 +:10654000F309DDDF2F178FCEBB13F921C07F1F7832 +:1065500009F31ED4A0DE7AE63B88F26856B1A307A1 +:10656000E30A33300E20F4A5ABC6C9306F6C0FF3CD +:10657000463EAEDE682E7F36FFCA0338DEB3A05F2C +:1065800070FF7656D8B98819787EDB85A9F97B38F3 +:106590005DFE64AAF93DE567051E37F3BFCDE5E56D +:1065A0004072CAA0CF703ADCAACB0B232D1733A3BD +:1065B000512E8DB399EB19E97B608749D0CFEF1B42 +:1065C0001C94BEDF2053FADF0D49947ED8A050FA08 +:1065D000714306A55BA7F2786C5C3DE03BE4FC4BA5 +:1065E0005CA5C776297E0ACA57BF2E4F7B8E227CB8 +:1065F000E3DEE4E7D40CFE32CE2DC4613EE4BEC03F +:106600000DF5FBBC65B98C1DD1C7678BDB0EA07E79 +:106610008429F8A3A03DABDD7300F71B7BF3777DE6 +:10662000682EFFBE70D0945F9D66CEDF577C30B47D +:10663000FD40F38FAB54AC5ED0AB337E22F4FB0E47 +:10664000BB31BF371AD539B4DFE6D614FA9D0C1426 +:10665000F6C9586EE9F77C82019739227FD7FA860E +:10666000127541E8F932D0CE9C0F342E5F0C3833CE +:106670005553FAFF1D067FBFE3FCFF9EFE1FF1A3EB +:1066800075730080000000001F8B080000000000F0 +:10669000000BCD7D0B7854D5B5F03E8F792593E472 +:1066A0002499C084976742802011861020408493EB +:1066B000076102094C8252B0D40E4831B42023F64F +:1066C000915AFF6642488C5425800F6AA31D3056AC +:1066D0006E6BAFA9975A6AD13B3CF4D2163555B4CC +:1066E000E8A5FE237A15EB8311B4DA5EBECB5D6BB1 +:1066F000ED7332730E090F6F7BFF3F7CED769FBD0C +:10670000CF7EACF75A7BED33AFDD38C9162A66ACC5 +:106710009131AD17CA6BF6B11C751263E7F06F0EBD +:1067200063599AC0D854C65ECB0ACD0DBA19FD097B +:10673000A58CBD5A3F64D7665FB29FB5DCBE6CC501 +:10674000C80218AF323859884399BB6A918D41F914 +:106750006AC39B2296930AFC2B70BCEBCEA9231B29 +:10676000DCC9F7C6682263798CBD74175BDAEB3E2F +:106770007FDC51D80EEB795D644DD8FE7A6668E413 +:1067800032D3FB4E7A7F8CA652F96A061F6792CCF1 +:1067900064A984B17A9C17E667C59ADA7015941ECD +:1067A000D84C7E725EEB7C8C45E8393B0BF569B0CA +:1067B0000F7C349AB1EBEB98162DC6F56B231B5367 +:1067C000E69FA2C3EB683BCC0BEDAF017C57A4B4B2 +:1067D000AFD6D76FC0DB3ADF6AFDFDD6AB1DB03652 +:1067E00084338B3A7C38A9BFF55BB0D4C63287B20C +:1067F00059616CAEE4F6C7100F4725BF83B0A265A0 +:10680000E60F61EC46FC4FD8FAABCC2FC4E0FDC6D6 +:1068100015EE70C4CFD88BB6D04884F78D4B6FACD3 +:106820006313A14FB7ED441C40E5847FE70A189B32 +:106830001C93A98E7FE718AE2FA5EEC37D9BEBCDF1 +:10684000C757440FA5F45FA0B93DEF4C80FF98CE29 +:10685000A69F1B07F86BD9CBDEB225D7795A5FE725 +:1068600060FBFEAC25143D348631C52B31790A63BB +:10687000CB74389C90B46B35289FB771784EB23189 +:106880005776CAFBCB74784EAA108351C4B32D71CE +:10689000FC1698EFA5C3634A0073ECA5C0999C95BC +:1068A000C549BC18EFE536B7850AA7A4D06BAD6320 +:1068B00029E253655A06D2C54BC129AE0A77125F49 +:1068C000DB83677218D2BF07803A83E0AD06AFBAA8 +:1068D00000BDE8FD06E30FA3DF0B713180F3BE308E +:1068E000FBD34AC4F7C9224514263326C372F1FDEF +:1068F000EF68D9D4EF64D95B6E01FAED8D9F7023F8 +:10690000BF2E63511B9318FB328BD9901EBFC2E27E +:1069100054FF2A63762C573095CA1B9866C7F62C0D +:106920002548E50B38F530FCBF8DA1580A5D4E4473 +:10693000BC20FC18EB147392CFF7EAFB9F3747EBB0 +:10694000D0601D9372FA8E2F06F8E6CEB6B15D4088 +:10695000671AD0596306E067EA74D7CA01F0EA986B +:10696000B3728B960AF7BA901DFB3D2E707C3219DC +:10697000FE07E3C9430A4DF2E43E1D5FF1D99A5C7C +:1069800001A55CC1080E9372B8DC602C21E27BB9D2 +:1069900045AAB8393BF95E2FBE97C2C793EC213B9D +:1069A000F2FB6A7FD8AEC07B95DD935DF101E48A8E +:1069B000634EA847CB33AF33E446FA2DCE8A0FB0EF +:1069C000AF241D4D66320885D75A608D40BFFFDE6B +:1069D000E2A4F24F2D0A95FFB7C54BE59B2D2A95F2 +:1069E0006FB51451995B17A4F17F3147FB05C2477E +:1069F000165908E121E72CF5227C98720DE17FAF52 +:106A0000856EADF433B1ECAD3BA7001C589DE81F7B +:106A100003F898B857FD533AD0D1F6C83245F2245E +:106A2000FBBF5077E24021F47B612F5304E8B73D70 +:106A300030DD857278BB3B320AE17352F0BB6E8564 +:106A4000FE914724E511E2EAC472A4C71BEB861449 +:106A5000205E165D3DB54F83FABB75BE12202BF646 +:106A6000177D5DEF318EBF4850883E02FD4ED6DE69 +:106A70003E0AC7797EEAD0129C874967EFF926B4AF +:106A80007FDA2DE5E07BAF96DE78ED2DF88EACD980 +:106A9000515E7D499757EFF6DCF2EC2AE8F7AE1726 +:106AA0008894CB371AF7F9801075C054CF33EDD9DD +:106AB0001928CF2A9C8908B42F596E33C92B435EFD +:106AC000BE8BF212FA2F0E9ADB73BBDF3D8E447E33 +:106AD000BE5CBBF36329F3E2F2ED5D2DC3F34EBA66 +:106AE0002EDFA4F3E5DA7B6E1640FE69DCC71E08D4 +:106AF00065315615F0D9DE71237D08441F867C6B05 +:106B0000ACF3EF97711F8115539CB0EFACE8744163 +:106B100005F857D5A973D361BCFA80300DC733F09F +:106B2000561FB8D9CE40CED477DF6C5733901F8232 +:106B30009F737A090667C23A6FEC9EFC5B7CEFAAF2 +:106B4000888BF0BDA8FEB488F0DFBEC7AE0820F782 +:106B5000B747C765209E5FEA39E361C503F14597F2 +:106B60005D413DDDF3F130E48BA47CD0A231A24342 +:106B70000FE947C682DE0BCA3BBDDFC5E45DA492C8 +:106B8000158589AF8E8C42FC9E1E01BC07F26E619A +:106B9000D9FE5188FF1B3601C9C0BA3F18F98EFCD7 +:106BA000020C19AB72865919AF4F8476505509E61D +:106BB000857AFEE7DD71686F6B03013202DBFF420D +:106BC000F54DB253C1FE572700464549FCCDF91C8F +:106BD000F832059F152CDB545F1B3FB107DF57369A +:106BE0003A942C18AFCA996F7A7FAF3DD67104E6FC +:106BF0004FDCCBD82EA44FC5677A7F9E77BCA97F88 +:106C0000AD3AD9545F5034C3D4BF812564A457A092 +:106C1000FDF01680DB5AA6D8101E364D4944A05E02 +:106C2000EFAF30F55F54566B1A6FCA91981DDF6F46 +:106C300084F725805F833368DE4FF35F88EE663527 +:106C40009F257D3A39D66B6A9F7278AF693C7F9FEA +:106C50005205E4C54A8EF90F62F9996BA1B715D6B2 +:106C6000A30A2CCC66032BC68355C0266CDAC9F068 +:106C7000412C2395E147115E1180571B94F7A77FA4 +:106C8000FFC771E8DF0CF07700FEBE23B176067C0B +:106C9000F899180AA3DED92EB29D2BA0FE9ED89596 +:106CA000B902E8768C146A44B95E96E8AA02766165 +:106CB000B3CE46DBB0DCD357DE39B314E1017886BE +:106CC00071D7BA452D4AF4B26F22DA9DA71F4B9FA8 +:106CD00082FC6DD0D5FBDF665F257BCEAB7957405C +:106CE000FF764F61C966E0AB6055862641FF754F60 +:106CF0008EDB2541FF89D5152B2B80FEA48C6A677E +:106D000088F4B89C881BFB2FC0762D3213D6A35471 +:106D10004A2477588D2DFA08BCD72146155C3F329E +:106D2000043E4FABB1EDDC0CCF4F54703D33AD4F53 +:106D3000DCE986E78B197033D24F0EC8F114FDB22F +:106D40003820D0FA6FADE07AD4D0770D79471FE3C1 +:106D5000E364F07102939FB5E1BC8AAC8098608DCA +:106D6000C782CA55284F02150B2A4A719E97464A78 +:106D70002AF657A9FFD0BA8A5B2A907E8A6486FDDC +:106D8000F728D5E9D47FB95F4CC3E7876DD13100CF +:106D9000E70D573B68DD1BEAD37E8EF8683CC6E7FB +:106DA00067756E6A0739FC0DD2A355C7D454FDFB35 +:106DB00036E83375DCE0FCFC76D75417CAADED9AA3 +:106DC000DFE5C7F21E49971B2C82A64BAEA4CB91E0 +:106DD000C8F3F16A68DF0DDB6733A93DC600EEDB5F +:106DE000EDFD75E6C23AD3EB91E743D5688714B061 +:106DF000FEF1909F15E3FDC88B211CAF7F7C7DBC0D +:106E0000DDC9F6F849C4AFACE40533CE5FF709B489 +:106E10002310CF62681ADA47EF88A1B188DF5C518E +:106E20001D8BF5EF4E0CFD04E984B913FBCF015C1B +:106E3000B6FF418A229EAE38BB6828CA3FB0077EA3 +:106E4000B203E9B0DA46727F8F3DF4E46B00EF44A1 +:106E50005E9A7F17D46D3FFA59F487F85CD6D24B0F +:106E6000601D8AC2F9D0B023564BFDFBD6C0F46634 +:106E7000ABC5FE7D68C88FEF24E1A4153A896FFA8F +:106E8000F7E984FACAFEF60F426FA3BDBA6A77919A +:106E900000F39F61EEF0662C8BE62F417C9EE902A9 +:106EA000E31BF0B907BB229F7ADD44CFCC132C6AD9 +:106EB00000B8BCD0C7EDCE5EC0B3E6C07A89E84466 +:106EC000FA7E7E7454807E67CA8756D138B7C13B3C +:106ED000205F56C5ED4C857D4C2BAAFE41A507E9E8 +:106EE000B14014D4245C8FE138402FB3ABB5DF132D +:106EF000FC58B5F20EEC47D06E95CEA55F482FC872 +:106F0000EC1D830F113672C24E7C56C0C268D7ADDD +:106F10002F6B2D46BD3DBB8AD3FDFA6AE14D07D4E8 +:106F2000D7377F42726D6DF319822F93A3648F7FE1 +:106F3000D0CAE5016CFFAB0D50AEFD2FE9ABE85FA9 +:106F4000823CE9144AB03C60DF90A20759EFC7FDCC +:106F500072719278717B2F2D5447F33608CAB56849 +:106F6000A78C3D3879850C765A834BB95680FAE95F +:106F7000CA912B6490DF0D23956B45A86756DECA36 +:106F8000DBF3957B45908B93AAB6F3BA4F7905EB6B +:106F9000E32AF5FA64E51506F5615577ADA81E46B6 +:106FA000F68586783B1D7091FF37D87A1637FF86B5 +:106FB000F63F68BB2470F9B894F3FD87B5F93B91AF +:106FC000CF5961C887F2749DA86C4038DB2AB93C60 +:106FD000F38C0EAEC57E1E89296DF0FCC3FFE85B05 +:106FE0002D92FCF3CFFD11CAE390DB8FFEE7E2E6C2 +:106FF0006768DE97447524F24D434DC85D3915C767 +:107000008BBF81FCF472DDCB4350CEFEAA4AE17205 +:107010004F4914223F2E6321F25396A1BD057817E4 +:10702000415A9C83A9AF7117DA18C0FF9AA566BBB5 +:107030006D318B911FD358677ECEF4F70DBAF928C6 +:10704000A3EF7A3BCC6BD3E1B12EC737465FD715A0 +:1070500095184F10D4ABB06EF3F40DE176FD5AE203 +:107060009BD3DE3486F0ED18F6FAC4D00078EF6DCD +:1070700001BD09ACF404F8B3586EABE2F263A81C8E +:10708000B7FB619C9B8E315D3FAD95AE42B9B0D7E9 +:10709000C752EDB75F55713B396B2FD7039ED100B7 +:1070A000770FC237761BC297157378AF136323101F +:1070B0000FBF422D3C35895780DBBF201D1CF2429B +:1070C0003BF0E19C2AC003F49F73C3117F5B0A1E4F +:1070D0007E85EB827DEE49E3FC9EF8A52BBACB774B +:1070E000FE3A1755F2F558D7FBF75EE7AF905FA76A +:1070F0000EBE5E836F0D38197CCB7479B56CA96FA9 +:1071000017CA5DA3DE58E723FFD058E7F9F4B3AA06 +:10711000088D432BFD5C8C6E66237DE625E587019B +:1071200047637D863C00391AE835AD2F7BA7797D12 +:10713000D9C45759CDBF26F92065C8F4FC1AEFB061 +:107140009D687F64F59D267B2D4B6537A33CFD7EB6 +:1071500065018777EF5F3B724BF1B94D40FECF6A17 +:10716000DEC7E31FD6FD5DF6BE0696975783202047 +:107170007987325940BB3864B2032BD81A939D5893 +:10718000E5BCD9549FAB7CD7D47F9EB7D5D45EAB3A +:10719000DE61B17BB79AEAF5FE1F5AECDA9DA6F6DE +:1071A00006E76E53BD3CDE4776E70B2D01F29B6789 +:1071B0009F4C90FD19D3FDEB03BA7F7D08FD6BE07A +:1071C000CFE7D0BF86F2708B9F9EFFAEA58CCA23FF +:1071D0002D1A957D2D412AAD7C5DDA172FFD1EE01D +:1071E000A7CC93C5242089B016FA1DCAB31947133A +:1071F000854857B38E47DBD02E6EDF3F43B4A3BD27 +:1072000074448ABA484F4ECF6217D017599F4B4CDF +:107210004B893365D5259806FC95A5C75B1ADC6FAD +:1072200057933DD6AC0859A0071CB29F95427D5498 +:1072300048B93902F5172B795C32A8B5927FB004B2 +:10724000BA4AC07F4B9D60F7C07A973609D1368A1B +:107250000F46A8FDCB005BE4BF270E6FA4FA3237C0 +:107260008B617FF80B3AC1DFBE5627D90ACFE267A0 +:10727000893EC3CC8FFD97DE1E59B782C6D1F57605 +:10728000E475F1DC844BD7DB2F5632A2E776C14F91 +:10729000718248B6ECC73882559FFE44DFCFC236B4 +:1072A000AEE7133E16DE05EB5B847A15F8AD4101BF +:1072B00078A0FDDAAC8A080F830FCBE2898E5C7868 +:1072C0005EAADAC83F5CCB3EAEC110DB5AAD28D116 +:1072D00006F5A96F87DA902E0CBFC7A077F01B0EBA +:1072E00066A29C3BCEFC0E60898ED97748C0836C29 +:1072F000C627DCDF9873B65742B97F31FFC858FF05 +:10730000BE96A5442FCFB484A88CB534E97418A6D2 +:10731000FAA19666AA3FD712A1F2704BA74E875DDD +:10732000D47EA46507D55F6889EAF4B89B9ECFD662 +:10733000F5CAA795BA3C7256903C62322F4567C495 +:107340008A7F968AFF8E1C68877A471AC23E851EFE +:1073500000FF28AFD77A75397D113A3896D3F92DC9 +:107360003BA0E883DEED36F293BE203D5CE3BEC772 +:10737000867C6395634B984AF14AAB3C03FBC25F42 +:107380004A7E14B7FB2E556E3B50B8C2FA1D139CB3 +:10739000D136E1F2ED8B34BBDF7629F685811F31E2 +:1073A0007D7904F5E23A9125100F1F4E0D2AC8375A +:1073B000865F791E5C2C7E66046DF7BCCB5F27C0B0 +:1073C000C7867470B1757AABB5595579297A8D85B0 +:1073D0008AD0CE4B1B96C6503FA5D943BB77227FA0 +:1073E0003DE5F23F027CC0DCA1510D297E527515AE +:1073F000F7539F9FA45557919D7076FF39B493FA28 +:107400006C1457BBE9A9D72EC94E5AAF9C31D9E7A6 +:10741000FD7A5E1049CFAF1759E809284B1CCC29DB +:10742000E400DD555536E2BAE74AE57D1AF2AB22B3 +:10743000FB53ED286BB9BEF9631A7FD07691FBE15F +:10744000EB9F9EAAAC4CC1CBB62A41878BACBCE368 +:107450004CC2ED52E9FAEAC452939CF8FF4E7F6A9F +:10746000FF646A672C5E8AFC719D87EB8545A15A93 +:10747000C2C732D64B7CB89CF551793D4B5019624E +:107480000A9D13AC647E2A57317E6E109F1DEA441C +:10749000FCC8F6A08274BBE8C9F7DDC8DF52F6D19C +:1074A0008FD077B7CAC54B958386FC33E4A1DDC185 +:1074B000C268676DCAB6139FD9F272764A29FECFA9 +:1074C000033A7D0EC65FA726ABB4DE53BF9C25BA38 +:1074D000E1FD53CF4BE4CF82A7FCDCF780AEDA4A64 +:1074E000ECE4BF4C59AE76E0F918FC85C780FE602D +:1074F0009DB60F52C73953FE25D2CB67301A3D19BE +:10750000C9C05FF49594F8679B7EFEB81BCA5FC044 +:107510007A3397C7653585CEF6E8EBAC5856CD5033 +:10752000FFC9CB3586E747990A3F379CEB64A52E08 +:10753000F047D9D933C538EE42DD4ED86C6331E41B +:1075400087A1659305B42BDE9DA4FD12F930727BF3 +:1075500079369DAF618CF50AE4139043C827A042A9 +:107560001DE8BF65DF47F27609D39ED5005E37F987 +:1075700055922F8B198787154E579C3DF5DC76D891 +:10758000FF377F2D289BD9F9FCBB72EFFE6342E6E3 +:10759000FFDC0E5DE974C7A489E7C317F6D537D0C1 +:1075A000BE8C38F13A1627BFEFEEEE13412CD760B0 +:1075B000F02B0F0FB77AB5E1B8BFBD373394432531 +:1075C0009240F1AD442DF777ACFCFBB68E87B5BA8F +:1075D0003C6021750AD2D529412D417EA03FA8AF3C +:1075E0009F3F9EFC8BB37A7F631D208FDA7FC4E1BF +:1075F0001C7600DD7CE0E27E8A759E44153FA75B29 +:10760000ECFCC424EF6E6AFEAB494EDD54CCF15F56 +:10761000D2A64EB919CA5BF473BEA76705CF203C4A +:10762000D6FCFE31FB7015E7EDFEF6EB38EF613767 +:10763000D92DEC481EC1E894603E175FECFC58D78A +:10764000EB3B4DE75E2FD7FF91E434FAEDBF2945C0 +:10765000FF17F4AA925CDF4B62DF3B3FF225E53374 +:10766000F8CF6F7CCF87F2D9F7836284E72F6D1450 +:10767000CF5A8BEB47BBAC26E8AC263F89515CE286 +:10768000A5F9E3C83F33ECBB53EF0D7C5E6FACCF85 +:1076900098C758D707826082635EB57E2EAEEBAD89 +:1076A0000F33FD5FC1793E7C7238925EFFF397B372 +:1076B000FB2666BB93F8B9985D64B58B2B3C6D5483 +:1076C000BFE6227611ECF859EC776C03B78B96F590 +:1076D000B6915DF445ED2163BDE04444ED58D79883 +:1076E000AAC07C5C34318A9ACA43D03FE375C1FD9D +:1076F000EAC110ECA3FB964CBFE4857D327E1E569A +:10770000EEB5533CD281E3C1382E16F56229898942 +:107710005C2CE7B290CC68BE28C1F3DF84781BC62E +:107720000199E6F762FCA5DD53A9A2DC38C9DC614A +:107730008C8F5F9B1DB81AA665CB56D786902FAE4F +:1077400069CBA47324D9EE97F7A35F329F9FEB8197 +:107750003F41F6FA2B1A3F6F30E0B55887969C1DD3 +:10776000A9213FE63A40C9703C9FF0933DBA04EC32 +:107770004AECFF47399C57ECC373B27B260A22F2CE +:107780007334F32AD8C79F5FFAE9B4E7E1B5F75934 +:10779000CCEE86F6758780EFA17DFD659E6F7F8DAF +:1077A00085A87E23EB7A70238CF3DA9007BEB59F11 +:1077B00025E1B054FBF17F6C02B87E237BD3341CEF +:1077C000DF3887FACCF550E67E4FF29CE362E71A89 +:1077D00063A4D01AE483F7ECE1E9FC5C203C89EC7B +:1077E000749618B502FACD82A13643792A8FD361F7 +:1077F000E46346F03B65F3935D13F95425BFA81489 +:10780000E50CC2EB9C4A71D959FAF9A321674B27C1 +:1078100088F43EFB4F95DEBF3A61CECF289DB44D34 +:10782000A2F7412E3E8271A1CFE50BCA61E75CEE63 +:107830007795E68AE1D438469B77088F07EA758703 +:10784000AA505C235AADF767898F54787E13C69788 +:107850004BA9D735CE69B44FA2D359FBDEEFC07325 +:10786000D06E09E8A20C1FF656E138E5E84FF83172 +:10787000FE1BD6B83FC7189E73B1BD663D80EA5562 +:10788000847697C67A91CF360B7D12C2753698D71B +:10789000586A4C91B1AC647E2AAB5990CA1A16A6AC +:1078A00032C0BAA89CCF7AA9AC637DBCBF373D2259 +:1078B0009662A8DC19C5FD953BFDFE129AEF368550 +:1078C000CE716B6F14312E5DFA25B037DC1787C788 +:1078D000015D3E79111EA55F1C1EB85F3CFFAD0126 +:1078E0008241F9F3F782C73C1621BEAF65512A17D2 +:1078F000B098CCE9533DD40AE3D59F642437D8959A +:1079000031920765F190CCF583051E55065D31F681 +:1079100048F6F972ED884E17DF99CBA8EC10C294A7 +:107920000FF5B76A95EA4ED6C5F8BC512FE78B2EF6 +:1079300089FC5281CB5F436E6D16BAA82C4DAF3CCB +:10794000A382683F59BD7625C6C14BA754DE321AC3 +:10795000EA67AABFC3EBB32AFFA500EA9F56DFBAC6 +:1079600012E3EAA5932AA7D8008EADC2F756564374 +:10797000FB68D5EFFD10FD13D83E9E7FB4FDE1FB03 +:107980004D381FD8508A00FD4FBBBFED57508F8E2A +:1079900070FB71DF4E07D041291DC3855B67A0EAEC +:1079A0000D537F40AC82F1969C40388CF551800895 +:1079B000945B4FB540DBB8E4FE4A86C60ED8609CA7 +:1079C000BC939165782EB16856F0FDEAA9C886305F +:1079D0000E8CFB23852988D7BF55EBFE9767EBC13B +:1079E0005029DA29B06758F7CF660513D8FF5486B7 +:1079F00033226525C7DDADDB9333E42EE916373E30 +:107A000067446F83954573B5CF510E599F0FA68F6D +:107A1000C4F4B3D7DF84760EEA0A28B3E786C4B984 +:107A2000181F14E3A3A6C0B38DE96FD8891E34A034 +:107A30004FB4930DFA6C027A447A38C0E911285990 +:107A4000E9B7D700CF33566912988B6CC8D2C4F50A +:107A50009930EE34C6C79FBE3C417216E6C99A0BF8 +:107A6000EB5A6F8F8F9A0CF3DCB3589F878DE074BD +:107A7000A7CBA7F5CFFCF5A308CCF3B4087CC3EDE6 +:107A8000F2204BE1ABF5CFB864E4ABF57F66D1747F +:107A90001FF2D93FB5A13D3F03F80CCF07D7EDF951 +:107AA000C541B473F6A1BE04D0AFFFD7A70FE279EA +:107AB00045F90217C58BAE7EF9F868B48FE71C8FC5 +:107AC000531CEFD4D37F1CCED7619C537D267C11F1 +:107AD0007D3E57BAED6ED40F1B5A65E680F9360825 +:107AE000615EB73915CC53010FA76339C25D7326A8 +:107AF00036539DE7E935E9FB82719E9B01FD3FF41A +:107B00004A8CDAA3DC9E56E11FC903E9AC1DFD9443 +:107B10004F43A0AFA17DFA31AB9C4F3C8779316BCD +:107B2000F7DA15A4AF75BD667B7C7DAA1E1820AF61 +:107B3000A572AE9ED732928DC47D3D85797B78A0AB +:107B40002C2DCFC278C64C3D4E09FB9053E3044622 +:107B50003ECB09A9B216F15B2FF3BCBEB9925B44D0 +:107B6000FED9F0E0E85D78AEB2E1C15B88FF368C0B +:107B70002C2E41FE7B79B6EE7FC7942BB1DFE368F4 +:107B800097225DC5730586F98BFADAD6740A4CC55F +:107B900038FA688995813FB4F3279FADA4FC245837 +:107BA000A300F6505BFBDFA88E8CEC9889F92CDCE7 +:107BB0002E7F3C3B5140E366AB14076B73250A50A4 +:107BC0009E469E76FA518FB2EE5CA2DDD111FF0E79 +:107BD000D4F31B5A3D02CA8D6FEBFAD177AC6C0718 +:107BE000E2EF34E87BC4C7868CB143D90076AD514F +:107BF00096E23A53ECFDFD7F58928EF6F02FE56049 +:107C00003AE69B9D3E5A70C1F8F0D4186CE80271B8 +:107C10008CD2A377F6617E52E90E99E061D0DD53F4 +:107C20002DDA80F9952A8B56D9715F5F63E4D76DA1 +:107C3000F8EDC36D4EACDFC188FAEE4F9F9885F02A +:107C4000D9F35B89613C671ADBDD560EF5A9409FCD +:107C500051A09FA758AF8472D9E115999A42272E57 +:107C6000358DA9297186F4A21C533DC33FCCD43F66 +:107C7000ABACC0D4CE22DA4BC529F66DB676A5A939 +:107C8000FF74D627AD837D94011FC460A5B981120E +:107C9000533BFB84D37D19FCE37A92E3CF11712827 +:107CA000A887677E60E68BB27898215C5C3ADFB883 +:107CB0008EA6F001FCCFE17EE738CB447D74E1BCB9 +:107CC000AF9F18FC31828D1828EFEBFEF44C91C366 +:107CD00093C7C7A6B1C2FBCBA17DEA611B8BAAE407 +:107CE00037323DCF298A7E8CC137C0E86DD86F16F8 +:107CF000CA05807B5ED00CEFA14BCDF0CE0F99E191 +:107D00003DBCC90CEF916133BCAF6836C3D71731A6 +:107D1000C37374E74C53FF315D95A6FAB81DF34D5C +:107D2000FDC7471B4DF509BBAF33F5BFAA77A5A922 +:107D30007DD2DEAF9BF10F621DE1F0549CB1077C58 +:107D4000E7D3C3E4D806737FE9B8B40EE51ED003C9 +:107D5000CAEF29876F1D901E22F00FE9C18AFF36F6 +:107D6000D7F709FFF115EEB03093E821867AD855A0 +:107D7000E65006A4878BE5FF59E8C0908F83F1ADEC +:107D800081E7C3A897494FB8DB8B8D780DEC27E8C6 +:107D9000F63E8BFE8052E94C38CA908E4691BF1455 +:107DA0001CCDC2980FF7996BA20DE596DA2A24181C +:107DB000F853567F5170373F8A72AABB0DF63302D3 +:107DC000E37E82290EB838E032C5012F76BE31B588 +:107DD0002F66AA4F3ECA24D49353DF56DB3260BECF +:107DE00029C7799E96D54F2D8DF37397591FF41D92 +:107DF0008CA0DE0F73FD5B9630CE57C23F463E9D92 +:107E000005F214F1C8C25E01F5BA5DE1EF03FF149B +:107E1000A13DDCCCD2FCC83FDF91B87FFC99182291 +:107E2000BFD6EAE7B65504C9BE05FB7F04DA99F769 +:107E3000CC0C8DA8C9E38B417C4BA719D9FB73D01F +:107E4000EF2560F532F47B4F098951989FF1432962 +:107E5000F78600E6D37898129F86F14EFE7742E0CF +:107E6000F1CF8F2A86DB4BD5241E4B6AB47135A027 +:107E7000DFC6D5703C0E5DDE4B71A77727694535AF +:107E80007917CF1731E269467C6D4F4B8CCAF4628B +:107E9000BF84F4638D7FC5453593FCC634D687F621 +:107EA000F7FBB8B81938CF88EAC9483F6141BF0F1E +:107EB000C0FDEFAFE878109D7DED787E79BD0EFFB7 +:107EC00095829FFCE16F783FE0F10D8DEB61E98ACF +:107ED000E292CDA673BEE1D2E5D83D17DBEF37BC09 +:107EE000EF99E25FECB1DC4BCA0B4DEEB3F8A16F3A +:107EF000723E61C827276A8757A29C3E7F9E8F28C3 +:107F0000AEF695F01F4C74FDD5E6D74C74BC22F24A +:107F1000A6A93DEE49D8860B88D7D00D88BF754FEE +:107F2000BAEEBE07E5449A407226F4ABA1355F660F +:107F300097B2CFF769FEE32D7D844F639F6FB41C2A +:107F4000A37ABC254EA5759F46DCC128ED07C21457 +:107F50005F4880FDB8CB73F1F8039BC7F306BE23DF +:107F600085DEE0719ED848CC9BFDAC8309DCBF4C1C +:107F70005C8F7CB05CC8F4A35EECC87FEE4F1897B2 +:107F80007845CCA2FDB1A6D89F304F72FD66EE8F2A +:107F9000302DF620FA87A73233A97EF3CCD0EDC47A +:107FA0004FC57ABF5C91DBA59ED848A4CB8FA00DAE +:107FB000FD829C29C1CD351427554228D79B72C01C +:107FC000BF85E727C5C844E4B3679F5B7903FA6FB1 +:107FD00027D3221FA1E5F174CDF537A0FF76D2C8D3 +:107FE000FB8BAC7E98F28BB5B81DFDC4574489FC61 +:107FF0001FE68EDBF1FE05E66F619E7F5949F03E7C +:108000005A0F3C6FBC2A19FF3CA5DF0739E5E2E5B2 +:108010008335DCAE7CC852FE4AE7DBE7B1A4F3ACA3 +:108020003BC752DE4F9D83F27E605E8DECC3671CC2 +:1080300014671992C3F35C7063B7E7631E8C7A060A +:10804000F9CA2331CA5FE9ADF1F1BC173D8ECAE22E +:108050003C1EFA616D3EF9D7C6BAD9519E2FFA611E +:108060002D8F2BE34E316FA0F1C9A1145FE8ADE174 +:10807000F6E6BADF9E7803FDA4869AD09E9A943CD9 +:10808000A5B5ACEF1D05E4D173352ACD67C0C72176 +:10809000B14D783EB0CEC9E364178B8F0FB6EF0FAA +:1080A000BFD6771FC6E33ECA50C7A0DC33E685754E +:1080B0003C579312C736D6911CE7C27C61C47B8DB6 +:1080C000FACBF5B78F45395782796803E8CBE33AA5 +:1080D0001C8EDB98254FCD809B91A7A6529EDA6718 +:1080E0003A5EDFABE1FB7DD6AEDE22727CF9D19F3A +:1080F000F78C0E47111F9E5CA6B44D4E8E3B248715 +:1081000085F09CA6E4F7476C43A17DCDCFF83D8672 +:108110007E7DAD8FFBF42CEDAD9A143F1AE88DF007 +:1081200018A975117DAC7BE6B537BE07EFAD79F4C4 +:10813000AA29085FE33D2B7C01AE9417F79218A3A0 +:10814000F824C03581707DE2F04B947F66C0F78BD8 +:10815000C2F3D4C83E92EFA7767E378AEB3B95CF29 +:108160001401E0B36EDFBF1D1326227DE8E72E7BEE +:10817000CCF125ABBE5158E8CBE85F3A1897170E03 +:10818000E3BD11B2E9BD03576AF679A467998AFA8B +:10819000DA21EBF1245D0F4DD5F5A8706C491BDA9F +:1081A000F146DC9A5D097A9CC749699D4E278F8FFD +:1081B000F4EB73C1AF527B483A741AC6955EE6FA87 +:1081C0007B3A7A7A12AA8410E9718774B33F4C7EA5 +:1081D000A81EAFBAE339F2D791AFD06F1CA9CFFF79 +:1081E00050FA47BF88415910F457A2582E5C1A3CE8 +:1081F00060A396282DF2C72BFEE2EB805A4584DF60 +:108200001719715B9ABE8F887E2ECCF76384003776 +:10821000A68F3A8071895D7A5CA1207DAD88226C41 +:10822000DCAAC8462CC7AFF50FBB514D8E3F7A4331 +:10823000D99F4350AFE8728828D76C1AF78B9D639B +:10824000C18346FA96C34EF40767CEE374EF72CE4D +:108250007ED1C706C7FF9616EFABD563927545660C +:1082600082E24ECEA7348F78B51AE8C3D53CF6D556 +:108270006AD047B66AEEAF6F4CFFFE611FEC2FFF6E +:1082800048DE64140DFDF434CF7CCF11467875556B +:10829000CA393863DE5757A5E87BF06E4D75B6AA2C +:1082A00028D99FFB61E6765666194FB3D4A33AB13D +:1082B000042CEF054D755BC0BC8F8C23B9A67D40A7 +:1082C0008B29DEF5C396A257AB53F4ED30396A82A1 +:1082D000D3B0E662825346F33482530ABE9906F85D +:1082E000CED6F19D5DA7BD87FE7636D83D2752FCE0 +:1082F00001965A9778A90E4179CBC83EB527DB3550 +:108300008CDF0F86CF4B2DB7B480ED93B29F5CD638 +:1083100040F47A7B88855B41AEED1FB1D2897263F0 +:108320004B8BF6F2DBD0AF634409C519B2E404C34A +:108330007C7CA51C9E9BE2445113BC6CDA357D0805 +:108340000F3B0B38D13ECECF6924BA549946F5760F +:10835000A591C673EAE793D6F56D82F5C51CC9BA37 +:10836000ACDFEB64181C9F91842BE6C8911D7EF650 +:108370009C84FE8B1DFF5B4DC2CF66B4B3565A5F23 +:108380005AF97D911BB83C0F3BBC58DF116943B9CA +:10839000E193A96E5BB53BF630C0C15BE50C8BD4B5 +:1083A0007EE7C728AF5C4529F861497CD0FA107F89 +:1083B0009EFEF617916EFFA7F8B9D4B2DD82C7F31F +:1083C000DAED5A13EAA7F6BC69426A9E4A685EE58E +:1083D0009E79C82778F87209F6F325F763BE7CC446 +:1083E000AF811F0A0A013E94400DD1BD82704B89B6 +:1083F000170E44F7E4BFFD83E8BEC302AF6D363508 +:108400001FF9785BAB30E0F9F2BFCE339FD7174549 +:1084100018C5636CDD62D427602C3A42F761A6D799 +:10842000F1FCBF7C7BA42F03EAED7F125182F4C7DD +:1084300021A6195BF3ACAE437F03C8EFF7E381EEEF +:108440006C472586F78984D5CDC390DF6CDDEFD0EE +:108450003D420C4FA3DE1C177287D16E9EB05B6449 +:10846000B114BF63D2DE34164BA1C7AB7A734CF59F +:108470001B3A879BFAAF898E36B5AFEB9D606A5F7A +:10848000BF778AA97EE38E59A6FE0E76F381AB30C4 +:108490005EA2C799E541F8961DB3D338A096487EF1 +:1084A0008F63F6E4B880EFF17576D33C364BFBC5AD +:1084B000E21ED6B84966C07C6FD2787FB0FB82C915 +:1084C000F89841AFA1CA6EE86AF7886417E40FE133 +:1084D00072A9AA3BC8F0BEA281BFE93A1D1BFBDE10 +:1084E00086F229E5FE922DA056E07BF63A4E1FB9A2 +:1084F000309EC6F3175AF1BCA3E328A3785E8787A2 +:108500009FBB7E1A0081E9C37BBA5D2BD06E19E751 +:10851000B1AB986A381DE96322D2C3522FD2438E81 +:1085200087D3C39AA864829B03851A8EE3E17652AF +:108530000E5B1EF19592DCA278CF7978396E277C9C +:108540001AF7F1AD701F77D48C979CFF215E2A102B +:108550002FC67DFD2F80177BA42B9685FCA130159F +:10856000E336735737519E93CDEBCFC27879000530 +:108570000BB67BF97D5CAB1ED9D9C262A9FADAB61B +:1085800049A964747EB03682F790DA3B191BAA229F +:108590004A434EB4A3DABD954EBA7F1F0DD1B9E25E +:1085A00026D04FB8DE4D4A6807FAB79B8E39FC11CA +:1085B000C49F2FE44579D1B15320BF5058BD83F0FB +:1085C000D7913DC4E7203D137389742E1B71A1FE22 +:1085D000803F272F63322F23326FD7A81CDB6DE635 +:1085E0006B86576FA15F6E24CDF25C13B1FF9702CB +:1085F00005049FEC408EA9DDA50D33F78FB0978A57 +:10860000A7E9AA50257A1157E8F14EE45F17F02741 +:10861000DAC52E6F8D86F6CF0B15CE845086CFB976 +:10862000BE63114E2F46FC5366F6A43C007A28D850 +:1086300064A61797955E74BE31E6CFB7737C6D1A4A +:10864000C3A21B85F3D723AC0E7891DF7C6C1BC3D0 +:10865000E7BE328712E5CA83F849067C3D00EFB5D4 +:108660006B5D241765FDBB13D6755AE9EAB2D77D59 +:108670009974FED060F267107D69A5F34E5F8703A1 +:10868000FB37EBE7609B9C6F0D791BEC26D9F5FE61 +:1086900090B7F17C0A690AC6D9E4E27109E6BE46E0 +:1086A000BF2FCD88FF6D8AA2E713A8029E9F6DB9E8 +:1086B000FA2F718CEB6CABF5923D6BD8B1C6F745D8 +:1086C000C80E9592750231D0414E79DA9B8477A617 +:1086D00056A0FF05FD3454E33920CE66E740B9AA21 +:1086E000F36629254E965DD8C5BA603DAEB3F73323 +:1086F000B42F5C858A80FB7015FA2F08BF680BEBDE +:10870000ADBE80BDA24A3C3FD3FAFCF58093F6A1F2 +:1087100006F83D236B7B3CC0F5B4C3B0137538013C +:10872000080E394A06B25774B86012E70C3CBF8095 +:1087300075A5D0C5F9FD23A6EFB418F689E2E5EBDF +:10874000C9AE562AF11C4C51143C86663981205B17 +:1087500001EBF0493CFFC33ADE27FA7E7C019EAF75 +:10876000676DFF5B80FB51D6FDF8703F39FF1BFB47 +:108770006122EDC7A3101DE5043486DF9971C95D40 +:108780000CE59F8B39F9BA58174B3DB775550FBC9F +:108790009F678CFDC8FA79AFBE1F45F367AD18A07F +:1087A000BF753F409397B61FBDFF60F4D5AF5FFE26 +:1087B000417EC9E0F372FFA343F7A78CE7F6DBF82D +:1087C000FB7639C486A4D0C9845A89D639B596DFD8 +:1087D0006F7478CDFE963D729E3F14F24ED3FD210C +:1087E000C097D6C3F3BF328B55CAA3741572796193 +:1087F0001FA1D27D75633D6B246D6AAD1E5C217F28 +:108800000AFFC387A5D53F055C19FE2833D9E5FDCE +:10881000EDE86FC9BA3C919376FEDFC56EBFD41206 +:10882000F17362CC05DAEDFE26FD1EE088FC69944A +:1088300087628117CFC7BAAE56D4E113BCAE16E932 +:10884000C51DC62449B64958112B40B98B21753F27 +:10885000E67B8662785F7913D8C598BFBBC9A3B49D +:10886000627CFD0C18F88A9FC34536E002F3B84AD3 +:10887000BF19A9E2FE6722CB8B69DF7B62863F9A34 +:108880005586DF9418D28AFA4D59E9267FD4C04B19 +:108890009A0E7757E90636DAC3CFF5F0FDF4F2DD2C +:1088A000E4CF02BDF2FED55A5F3F9F1460FB4FC973 +:1088B000BF550AB87FEB280CF4A5F2918DFD227606 +:1088C00010FD155D9FCADEA0A93DCD037E1BE88586 +:1088D000B4E214BF8D25F16DD7E9E5DCB9147F183A +:1088E000FD36D017182764DEBFAF5F6CC5AFA16738 +:1088F0000190DE81EEE35FAEFF3A57726FC478FD00 +:1089000016AF4876E516EF46EF4AA8DF5528FB116B +:108910007F7795AEEC24BBDB2B926EEEF4FDA513B6 +:10892000EDA733E522A64AB22C5D5F1BE3E2B97BDB +:10893000AABD81E7EEA97ED596F2C60BEACBFC90E4 +:10894000F9FDE14DE6F72737867E81F439326CF682 +:10895000FFAE6836DB83871AB52790CF3B7DD30601 +:108960009CAFBD517B12C7B9AB94AF87950F2C4715 +:10897000EFD1FD9EFB5A9C545E6CFD3BF4FE0FE86C +:10898000FDBB5B142A1F6AF15269C01DF8320BF35C +:108990006A0793BB8EE6DFBF5C9D12A7769C170F1C +:1089A000D28A1A06FC7E0C9773F7D5068F72397738 +:1089B000F8E57EFA063A1DFBC9D70FFC336CF58E3D +:1089C00098487E54E7FED369E807748E39FDBB09E9 +:1089D000F0BCF7A844781F6C7F5BF4FDF5C62E0C45 +:1089E000878E16B3BFE81C660FA19E35F46F872EE5 +:1089F000378DF6F76B055AB77314F42B4EF6BB1D83 +:108A0000FB49C9F9C63067FA40748FF935A9F8BF38 +:108A1000D4F519FD7A6546F94546BBFDDC566EE78F +:108A2000A94ED2EF8E73DCFF7479D94EB4E78DE78F +:108A300063714240C91D23D8CED4EF7DF4168A015C +:108A4000DCAF755D8FEF3B4DE71F9F962BD9C84F6D +:108A50001FD7723BC1B8BF7AC8B7BAF227A5F87E54 +:108A6000CE4EE447A5DCFC7ED97CDE7FECDACD4B34 +:108A70000BA0DFE37A3C65703E17937C8270DCD7F5 +:108A800078C1FC296B7F94C4B1A2D47A8EA53ECC68 +:108A9000D2BFC0D27EA5A5BDC4529F69E95F69A9B6 +:108AA000CFB7F46FB4D4AFB3F45F6969FFBAA57DF3 +:108AB00083A57EABA9FF58F9CB5903D197956E8C4E +:108AC0007E68C7607CD8AEE36F307A7C665E45F521 +:108AD0007CC4DBD9CDEA46C4EF119B1FF3C93AF73A +:108AE00037927FDF2FD72DF629FCF5A5C6F12B0A8B +:108AF000CA860EF4BDB524FE42C7063E1F683A96EC +:108B00003A8E5DC733BDE76397AC2F6C1E1E3F1ACC +:108B1000572746F11E595577D79BF81DB4714087EA +:108B2000180FCC651151CF5716795C545B887607C6 +:108B300099202A8FDF22FC1CAC210BE30EE33C4181 +:108B40008D515CA1AC15CF251F85350C85AE35D276 +:108B50009D07D6407D3BF8C5784EBFBDAF6B05F293 +:108B6000DF950FDAD508CC5BC48E50BB7738CC8B41 +:108B7000F1855E73BCC7EE31FBBD575AFCE2A241E2 +:108B8000FCE0C1E27C563FB865BE1EEF99C24A3197 +:108B90006FF752E33D2578C1236FF07E5678DB03F3 +:108BA0008CDBB11E1EF799BBBA995ECD3E2A457982 +:108BB000FC25A4A1FF9A7B04E400C1AD783FC691D7 +:108BC000B67A791C29E00D511CC9C083BEE5FE7838 +:108BD000D1D6A03F1BE59E5D8F1709AB9746D00FFE +:108BE000EAB883E301E3B274EEE6E571B97C7B9009 +:108BF000F2823AC07EDA08F65F91578FEF467578B9 +:108C00000A4C40F85BE30EB916F80F1607BD54F88E +:108C10003F3E5F8F43E4B229FF48F80B054E827F49 +:108C2000C7180E7F07DB1AA1380E7E37D49FFCAE23 +:108C30005E4731D3F1C1F39133757A77DAFB083FA0 +:108C4000ED024B6CF4A3DE8B6BF87E7ABEC422146B +:108C5000973AAEC92971CC8C3233DCB234BBC9CE61 +:108C600049B7C071B078CEA5C2F1D8FC2F164FBE5F +:108C70005C381A719DA7E687DE4539981D61AD788D +:108C80005635747982F1EFC7F03CE7BB8A443D1F4B +:108C9000ABAF13F59B4BD76F467CCDADD36FC59271 +:108CA000A52B787FBB8AFDDD459C0E0DF9BC49B72D +:108CB000BF1C1AF3A37F6103BB268AE4B92440F8E2 +:108CC000C233F3A1884F4F881F97318DF2DAE42227 +:108CD0009EC76AF7D7119D6FC6F30805E7D9A6D0DE +:108CE000E47E9EE7A8C0BF81EC7B97253FDC3EC2B7 +:108CF0009C47295F242F326D81398E6C0B04B3623F +:108D0000BEC1E16BE0A3789EA62CB88C78400A3EE9 +:108D1000F2F1BDEC286BB5C33CC3D79AF1B1B59B5A +:108D2000FB0550F2F87B218FE38F405A413FAE8A1A +:108D3000D17D2BEB3C9B753C44753C6C453BD8810D +:108D4000F29FDBC1DB6AFF1245BADF22F07C62BB17 +:108D50005775A1DCB94372F6E23DBA34D6D7570055 +:108D6000F3DC55FCB682E0DC32FF770174E9DBF31B +:108D7000EE8BA19EC83AC7F3AFEECE3B19DA89DB82 +:108D8000AE7D2250047492DEDEB3E310943996383F +:108D9000D4AC05DCBE9CB5C038DF628F650C3154A5 +:108DA0002CFABDA1590887A45FCCCF190C3F78AC31 +:108DB0003CCC45F1931A6E3F197A1A4993F45D59E8 +:108DC00082E1FAA11EC95093F3667F2EB1D805BE89 +:108DD00027B5F5C07801BF43B975A35A81F01DE7E7 +:108DE000658A13CF27228A1081F56F9E1FAA5F0024 +:108DF000EBB557FB05FCCE494E1D3B20C3F8772C45 +:108E0000E071926DB6F0309CFFD13C3F9DCF57D5BD +:108E1000A9F928EFB7D5AEBE62A0EF0A24E9401346 +:108E2000F4B8FC6595D6F7ADE33A5858C3206BEB20 +:108E300002A605A0DD2605FDF81D1ECFE65F8FD931 +:108E40003513F0377414C54DB30B3329EE86EB4C54 +:108E5000FD9EF3ED0BCCF9146A39F10253710D4309 +:108E6000B9FB43A55F7F5EACD78B78BD6581CAE354 +:108E7000A69AFEBC903FBF183C2E771EEBF89D0BC8 +:108E80008CEF43A8F9FC9E16EBCE34D3D7ED88C700 +:108E9000C1E88BC92A9D233F0AF8443C3E3A92F32D +:108EA00057A4DECEBF3327FBF397A4F87BDBEA970A +:108EB0002CD510CF96FBCB8B74FA9E562718F965EC +:108EC0002EA207D03638AE819F57E6FFFE6B01E039 +:108ED000FF8AD54D959827D951C7E52E94F4DDBA70 +:108EE000AD01467EE0A7D5A284EB53F4FCA1E92CAA +:108EF00044F7E6A6328DCADFB4F0F8E0AF91CF1D9B +:108F0000680EA9F47C3203471EFA2F9F1F7A04F9DA +:108F1000AA00BF38C8F350441CAFA9A741E3DF4300 +:108F200061D7D8860C1E97FAF982FEB8D4CF17A461 +:108F3000C4A56635061F47788EEF691531FDB86404 +:108F4000B1D68BED6F6D594FF2CBAED3174090CEAB +:108F5000ABB7B5AB93518F8CEFE9A238F5733A9D5F +:108F60007902A15F2F48A1B79C4058C4F7E33A7F2C +:108F7000AD49449E435D0ECAA302635265BBC3075D +:108F8000D3609C697B8307D3A12CEDF557A1FA9C94 +:108F9000D5183A80E39474661FF4AAA6751DC475AB +:108FA000BEB5658E80F4978BEB2AE6F846FF7DBB55 +:108FB000C0F3B90C3C3239E4C5E7FDF001BC37A67B +:108FC000F8231D83E0FD37FA7EFEA897F8A6DD4C56 +:108FD0007F7FBC10FDF9A25D1AEEEBCA78EF019419 +:108FE0005F138F252AB12CEEEB3B80CB787D5EE8BA +:108FF0000DDCDFCAC3FE1A37EE4F8B88F8BCE9835D +:109000002E3BE6A58F2F8C54E2F7775F9FA7BD8993 +:10901000F3CC90955AF40B6680DE8DA883EB25D7B0 +:1090200026D164DF607C1DE13EF36DF37920D0A989 +:10903000B60BFD012FA75328493F6D03FD84FA08A5 +:109040004A8ADF7F5ACD280AB92D50993E90FFFFFA +:10905000844EAFBD3ABD1ACFFDFDF7B2585CBA00E1 +:109060003D9ED3E10BF4788EE4B20E3F3549EF52CA +:10907000DDD424BD675707891E0D7C3645B7D60C55 +:10908000837516F5A825183F2B39EC3F88A069EAAF +:10909000C9A673878C3A832E8379384E7635A7C755 +:1090A000BC3A467031E86A56A396599747F49585BD +:1090B000A531FE94236A1B8EB7269A6DCAEF72D72C +:1090C000713E02FCD0B8C03F43F1BDF147221BDD29 +:1090D0009C4EBD585751A3A3DE8F3105F7BBA7FAAD +:1090E000740CF5F1A7BBB93C985016C72FBAB2491A +:1090F000FED80111EA5715A994376B3DAF9F1C3379 +:10910000C7ED807EC6E2F8371446A83FE099F29496 +:109110002FD55E81BF0F32A799E87972DD85E4E92A +:10912000258E3B2F102CC371D44817E1E992D773D9 +:109130009976D6B3B55A35EE7F13DE4BA5F3AD5213 +:1091400093DD5CABE37D886E5717CF0B2EC075B1F6 +:109150006AEE7F5DEE7CF0FE627A5F0B925D0B76CD +:10916000DE129C3F3B2EB4E27DDBF3ECEE72CE5779 +:1091700063E5D70F8F46BBF728F727079BEF4EDD38 +:109180009EBB1BED3907DADB2AD9755D2D4554DF0F +:10919000D6E2A7FA0F5ACAA8EC6809E8F1CF90887E +:1091A000F75AE4721E7FBCDD167C13E7B3C37C98CC +:1091B0003F347709F7B7B68C30FC2996897EABE14E +:1091C0004FF5EFD79B22373045E04A4E079F7AB9DB +:1091D0007D2A2C69D2F0DC00E6A0730A3BD3222B57 +:1091E000A1FD2EDD6FDB52BA32F630DA9F9A338C56 +:1091F000CC9F670FC7701D77553813E8D75AC777CC +:10920000B037B51B3CC9F3FBB13DB5E41F6CD1FDD4 +:1092100083B1855FAFEC46B895F2BC9AFE7596E9CE +:10922000FE9AEE172B1EBB25CFC8ECCF59CFEFF31C +:1092300066737B73EC077F730E1497CAA936CBCF86 +:10924000BC693C9E54B1E49873A038517A9DB9FF33 +:109250005D45FAF89F6C3E46F02A1509EF9DE34FF5 +:109260003B53E384D679983F453E1724E3E883D106 +:109270008BE19719F173235E66D8D16988EB9478F6 +:10928000B071EEB8AFCE673ACF6F67BC5F1EF871B2 +:109290006837DA8AF8F96BDE92A5A4D7ADE3ED431F +:1092A0003B288FBE5D4EF640DE1267F5958027B9EC +:1092B0004CD925F173BC32C7349D6FD4647F902F95 +:1092C000FB907FD25998848EE40E71BB424E1CD61F +:1092D000E995F4DA60FBB529E6F8DFC5E0638D17A0 +:1092E0005E2C0E69C0C7E827CB1A9D53CBFA79F3E1 +:1092F0001876CC89E7D4D675BCA1EB81B1AC2F80B0 +:10930000FBD802FB407CDF25F739F17D900381D447 +:10931000F36C6B3CF8155D4E3D334F7B03E19325B9 +:10932000852A1F425B798E4876AAFDEC756FA6CA26 +:109330000F031FC639A951B7C93ABEEB8A683C95DD +:109340004576A0BFBFA5741BBD2733BE6E5A07FA72 +:1093500081E566BF8BCE07A501E06EF1B76C454194 +:109360000DEF11B07246BFE7801295E35FD5BF875E +:109370009A88E1FDF874A5B004E7FD2F1DFFF057B2 +:10938000E834DB4FFF85FB35E84056C2741F04E923 +:109390000EEB2A8B525E95C14F83C96BE64989BBA0 +:1093A0001624E5F60FB3F9BDBE48ABCC1EF1D03D97 +:1093B00025BAB73421E250F01E7CA492DF6B8AD824 +:1093C0009D0A7E9FF1FEF44C9277CDC733484E7EC6 +:1093D0002646421D00A7FC7A1FFF2E8EA0915D3904 +:1093E0004186FDC2FB9D33D8AE8D5C9E3E269AF72A +:1093F000955F4F7917BD263AEFD67F4FC47AAE0EF0 +:109400007FBD620ABFF8EA0D7E09FAEA53ECA1318A +:10941000527034D6DF53BA6FE2FA3EE5BB57B02E36 +:10942000EF97F9F75BD80446DF6F49B3C44DACDF63 +:109430005B39EFFB81F59C8EF3FBEF0144D310EE1B +:1094400036E7EC2D57B20BC9A132535EBB430E1366 +:10945000DF389ACB298F3D6F416816AEDBD65CC3EF +:10946000F3DAA11DF1DA13D0CAF1796EADD68465B5 +:10947000533DA37D7BBFCAE30C1BD3AF67A9791D06 +:109480008DE7ADAF97CED97EF658C945E4A436C86E +:10949000FAAA8DF52DE2EB5B48F9F70CE413F27FA5 +:1094A000649E16ACA7733F585F5ECAFABEC4F38BC6 +:1094B00036A62F64A97EF6CA41E0F7D3DD175E5FBA +:1094C0007B8BDF747F02CF3F707D4DF52A8D676FF8 +:1094D0002EA575CACDB3F5F5B152D96CB7D1FA0640 +:1094E000B3DB0AE6696BEA09AEFE38DA09EC6776A7 +:1094F000FAAEA203F3F76810FEFD1B5B9065E377FD +:109500000EECC83FA3E9FE0BB5A7B318D533589CA2 +:10951000EA59A879A1FEBD7AAE47B2F1CB4448E73B +:10952000CC4FCF0DF8383D613A97F3342BC2463C0F +:109530005FED95681E690AB7FB5911BFA70313D2E7 +:109540007A85DDCFFD5520A344BF3FE3AA16CEA503 +:1095500027F9B99F5F37CA0CF3110C7E6ED6F91943 +:10956000EC0D6AEFB439958DF4FB0E9150BB8FBEB4 +:1095700087F403DCFF67A2B614D73918FF48193DFA +:10958000C4A797CB3760E7DF8B74B243D0263F8BFD +:109590007225DF4EFC67C573AF4E1F9E799CBE3BA4 +:1095A0006AB9BFD951C1E5C2AE7A1E5FE8D1CB9F7F +:1095B000D473BD10ACD39EC6F19F46FA83B2D2528B +:1095C0007F6B3ED4F392F5A43CE6704D679AF22C83 +:1095D0009733BB8514BA31E412D00F8D67ACD390AA +:1095E000C3C6789E2A8E4FB47B53CFC7F7E9EB34BE +:1095F000F68376756A1E577FFB02BD3D606E7F5A0B +:10960000DF5FF13CBE1FEF3CED997AD213CBE9FB53 +:109610002D4264B47E7F8AE3DF38D73FD4183C8480 +:10962000FD5C634A89AF8CF23CBE6AD40EE3B8CECF +:1096300082B20BE653DA312F20E5FB16C6F95EBF86 +:109640003DC5FA287E70A9E779F7A74F14E742D7FE +:109650001E9F4C7AA447D086AD41BAF071BEDB8A1A +:10966000F999305F36E667023FDF89AFC2B85B8D9C +:109670007B7C53797C2A3827B8EE97E847CC4FF3A8 +:109680006F5431EFA286C6718EF5F811877F0B7289 +:10969000F8390B3AE318BFBD6527CFFFDEFDE6388A +:1096A000E9EBA8F71BD2548C03DFB37C6E3692C56E +:1096B000BDC16B1BA6AA7CBFAB60DEFB567D6D2BCC +:1096C0003EBF7FE9B7FE80CF77AC6DCFC63B063F8C +:1096D0000CDDDB300DEA9F28658B2A893D13C7D04E +:1096E0004E67C71D44D7AD577F7B1CC6BF6A7D72CE +:1096F00030358F32AF81EB2D452F31FFEF42F1C175 +:10970000A88DD3BF5C15DC907AEF922D9408FE0FE4 +:1097100034707E79A0E5B0B209BFBBE9FDFD51927E +:109720007F60C8A0FEE890F939C4EE88D30F906737 +:10973000C3254DC57BC2AC8D7FD77977749B3375BC +:10974000FEBC85F9FCBB44DE17F8381139114FF126 +:1097500047B216EAE7047EE647BE96730259175AE7 +:10976000BFB1AEFE7AD3818AAF79280F232CE97975 +:109770005B9877453F8D81E786D30E57B4E37A55E2 +:1097800099BED3382C78B802ED1206FE12E655F5D4 +:10979000450F085FC3383CF83F783EEB2D8F0A8FAA +:1097A000407D0CF49F87BFBB1036DF1F32EE2B19B4 +:1097B0007E1C15469E970F9FF37C2B5A1FC6219542 +:1097C00028DB08F33D1C72AB94F75C64CEAB7AF8EF +:1097D0009ECAF9F41DDED62CFAFDC4F6ECE07598AD +:1097E000AF71A06B9782F65E4F919C43F45CE67775 +:1097F000E1EF314D5F984378EE09F85D3950DFAA0B +:10980000FF8E614FD04FBF7FF7A395C1AF235EB7E7 +:10981000EF091DC6B8D5983B7314C4D3C37B956CB0 +:109820003CDF9FA3D3EF18AF48FE4687339C968F4B +:1098300071DABA8D69E3A9DDC9BF3BA50881D4EF10 +:109840009F8D6CF23FCCF395FDBF2D82BAA3AB4444 +:10985000C2386467835DCFBFAA4BC3FBB68F7C530E +:1098600056E89C25FDFA34E4ABD14D32DD7B75EA38 +:10987000E7454257053B978B72BFF400B68FE80669 +:10988000FEC173986F9ACF979C05CD313C17FF04AA +:10989000BFCB8178B09C3739F4DFE7B27E9FC3A09D +:1098A0008BBB5B58DF26DBF9F786BEB2503F27F44F +:1098B000B3C9A87FE64AC7AFFD12AEBB49A47B403F +:1098C0008FB0E85DD3607F9F34C944DF3F6AFAE51B +:1098D0001F902FBB6F7B361BEF923C187EA5613A21 +:1098E000D47334896D827D3CB4E93FB6E2F32BFE3C +:1098F000CF993BBEA4E2F7CCB6062B510E3C2FF914 +:109900005BE1F9960CC32ED1C89FCDD4F39F3AECFE +:1099100080A7143AFFF9422EB78DB2A3E5F051B4F7 +:109920004FEE6E09D03EA22D412A95E6AA3E9C77C5 +:10993000F761ED3AF20722592C7D54329FE22E3125 +:109940001EA80078FDFC85258F3A5D30DFFED3CE62 +:109950003A45AF037CA247C5C67A7FB29E35A6EAD8 +:10996000BADD29ED3D42647E11B56B3706D2501E3B +:109970001D8B08788F20A729887490B195E7CF3187 +:10998000FD3E6C964EF7955107D91999013BC50DCF +:109990007ED0123AB60ACFE5DDAB94F1D0255D8ECC +:1099A0002A187F4BF793C466EEE250328F83FE1F76 +:1099B000F83A55DF979AE5448F918724B0606A9E04 +:1099C000F96D412EAF762ED4F3C8BBC408FEAE812C +:1099D000C30BF0338DAFEBB7D8C70CF59B7DCCCA6A +:1099E000AE0A84DF56FEFB785639638CDBD3B56153 +:1099F000C0EF771BEBB0CE63B4F7048DF339F3BC43 +:109A0000D6BAB3A04943F98379A7A8371CC1260D5C +:109A1000E5155379DEA7FD9A5BC98F32F2400DBF81 +:109A200091E40FD0AFDA9C7E14F5A83DF86D56E7AF +:109A3000499EBFB311A108FA8399FA399E20F79085 +:109A40005F173D7087A85E85624813511E446726E4 +:109A500018FE8EDCDC82CF23889FA26EFAD91F56B7 +:109A6000D81D14F19CCE7E4FF040168C33BA5CCFDB +:109A7000C328F78B69D06FDC119E2753C4E29ACBC1 +:109A800097CC1F78B88BC7BB8C7C8347AEE6BF539F +:109A90006AE46964DD5373A0A834796F65DCA604B9 +:109AA000DD0BF181FCC533AAA24E75234FB2E1F95B +:109AB00007E37411E4B4478621BF8C8BEA791ADD81 +:109AC000BA3DD89FA761FE6E4FA1C59ECCB2D4DF30 +:109AD000B0E89DA8FEBBA42AD3D2104E2AF3A78DCE +:109AE000473CC03E07B22B8DF2A72DFCF78DFEB987 +:109AF000C549E5632D0A01F0448B97EA772CAEFC4B +:109B0000F3C2A9C8AF6113BFBEB5256B06D2D50D90 +:109B10005274237E1763C28BF78E4B037EFDD98868 +:109B2000138D15BC4EFCF8CFB12772EAFCC9FA635D +:109B3000470F10FF1AF5C70B5F2E6246FF6CE0DB84 +:109B400007EDFA7734EE7D345698225FF473964928 +:109B50003BC5E02ED4FF394EFA8EF627A50A7D4785 +:109B60005BCE81F5227F8FCFA1DF2599B088D3AF5F +:109B70001C6CE0715B2B7F22291AF95DF067BFF343 +:109B8000AB144704BAF5CFF39ECFBF36FD7E92CD1E +:109B90002BFF3955CE672DEA97C784874F5839D99F +:109BA0003F03C817EE67E9F245CAF0B8D04E686FB8 +:109BB000E934D903ED79F6C9A9F6832D33B872A03B +:109BC000EF4BACD1ED9C438DDAA8455393F2733043 +:109BD000BBD69067493B37341EDF4B9BDC4BF6A36B +:109BE000BB98687100B966E67735C24484FB967B02 +:109BF000787C15F43FF9AB0F979750D9D375BA130A +:109C0000432E67D07343BD94075E53D6E5D39DD1F1 +:109C1000CFA033A36ED0DB775FDC67A237A89BE8C9 +:109C2000CDA81BF466D40D7AA33AD2DBBD76FDF73E +:109C3000DCF63D1A9307A0B7AB2F8DDEBEBB88DBE9 +:109C400025FF687AFBCA2233DFFF6FD1DBD8603F84 +:109C5000BDADFD82F4F69D4579974F6F3D8A96869E +:109C6000718D9E3B793CD490D35B220AE5E56EC1B1 +:109C700057A0EEFCA1B213F31127E978A82AD3F379 +:109C800023A3FC3CC5B94B3F97B8131C3521299F32 +:109C90004954ABF49D9310CAFB9E7B781E93507081 +:109CA000B812FDA62DF9A027805E76EB71F34CBCAF +:109CB00017381AC78DD3FD8922B0EF50EE8FEE61B1 +:109CC000A42FC677B3287EA79EF5CAA6DFA1EE61B2 +:109CD00071D2136047D37D87F151EBF72EC307D0C4 +:109CE0002EF5E9F79CC759E47DA6C54E7CC842070E +:109CF00077EBF2DF80B761A759F102F2BC6711C5BB +:109D00007913A44F1F2EBF701EB2B16FA35ED41380 +:109D1000AC1CC8BF39BB88DB7DB31AB55E1CFF32F3 +:109D2000D6F324F6BF987EF9ECC5FF34F13BD44D51 +:109D3000FC6ED40D7E37EA06BF53DDA45FFE736070 +:109D40007EBF44FDF2D9FF12BFFFFBFF23FD9291BE +:109D5000E4F73F237EBE00BF7FFA45F8BD28BAB5C1 +:109D600012C57113D2D900F33CAEEBF5BBF4F3DBB3 +:109D70008A82E6B413E8FFC9FEA13968EF05791CB1 +:109D8000E1BF01DF83D66600800000001F8B080062 +:109D900000000000000BA5597D505CD5153FFBDE8F +:109DA000DBDD072CCB4BB2240B25F1B1C08209219E +:109DB000CF884A3BB43E773263A226BE5DACA2E3B5 +:109DC0004C578C955875D6646A49C7665FF8888188 +:109DD00026869834A635131704D9A4D641DB3FFC58 +:109DE000A37596984EA3AD8AD398A153DBC124E303 +:109DF00058EBB4586D6DA7547ACEBDEFB11F2C044B +:109E00002333E1E6BE7BEF39F79CF33B5F9799196B +:109E1000FCB91E60C61A5D1DF74E6C5D963197A2A7 +:109E2000A078E8FBB7D9F7B1CDBADB2805006D29DA +:109E3000C057D3FB7247001300F7956E01363A5DA9 +:109E4000C65D8667EEBEBF1B02C035B85E68B4193A +:109E5000F573D71BA450A981EB6D2DC60AC6171246 +:109E6000AA510C703AA2FB697E43A069C524D22D89 +:109E7000A8692C89E6A1FFC3787462AB333DEF89F2 +:109E800044ABE85CE155A33A34027890273868C4C3 +:109E90007D75C07E66D8EFBB95F7D7E052EA639830 +:109EA000C1F1B35B81DF731E391E21394A1794A3B8 +:109EB00081F8A21C5A8E1C57917C972147339DFB39 +:109EC000A272ECB4E4908300E37446D24AA09EF8F8 +:109ED000EF553B914E725CD4DC2AC0D321F326A20D +:109EE0003BFCA613062B01F6C401CE3BE7DECBD527 +:109EF00071CFC4D6ABF3E1656BD6F7A371E5DC0691 +:109F000027D1F19FDB50035026F53B9622DFC3712A +:109F1000957D3F16AF63637F5C63E393F126361E46 +:109F20008FEB6C3C12DFC8C627E2061B9F0E180F92 +:109F3000909E891FD1298B227D392DB7DB8F7C32F2 +:109F4000F4506AA859EB2B637559EB4B742D6BBE1B +:109F50006C6353D6FE2B3AF4ACF9D8E6E88364C7B9 +:109F600015AD1BB3CE95341959F3C5FAC94A49DF6B +:109F70006E303FC04F3E809A559020BDBBEBCE4C1B +:109F800038BC38FA5CA6D8806B15D2479336FD00F2 +:109F9000C3D54ECB3FB270A519DCCE43526C23D94A +:109FA000D13520C06EA497AC163626D03EA72B8F95 +:109FB0004C88F87D645F20E046DCB851A73AF27522 +:109FC0002F51074DDCF727C3C1EEF5EC31414BE1D2 +:109FD000BE4FCF8A1A202E24F0B07BB8FD67CE6624 +:109FE000CA392B8F3271B65B4EDFAFE3DD7B12A730 +:109FF00033F4D66F787CEF17915E409B11013EA938 +:10A00000BEAD24A5CEAF9FCFE2D1C4E91AC20DF2F6 +:10A01000AB997F9FCB691612EE92D59D85AB510E01 +:10A02000D32F69352A637BC6B31C404471E8FEFA1E +:10A0300010FA29CAE3AD5707FBF0DBD01607D3D3DC +:10A0400036D118DA82F2BA3C310081BEF3B8857A93 +:10A0500062FA4BF60B407A1A6A8E9513EE46064268 +:10A060002590C74FEDB12B8E7AC8E32FF628BA2082 +:10A070003A9A274EBC63C5C3A1FEF50C078FAB10FF +:10A080001397907D74E68FEE836847760FAD9CE260 +:10A09000D0C87E572BD9B36BAC17D4B524A3072EE9 +:10A0A00064E0E335A392D1933C1976C17FCFD2FD12 +:10A0B000F3F0FF02F707F81AC0CFC71F489A1E46F1 +:10A0C00076BCF85AFCCE59A03EA36F112ED3FA8667 +:10A0D00004E9DBD6EF62E98379677B6A013DE7E259 +:10A0E0003037DEFDCCB223BC5AA0A5509F12E2B897 +:10A0F0008070A164EBC99D104C771E5CE7E2F7838A +:10A100002F89DF23965FA2BF4F5DA6BF7F962F1FCB +:10A11000AEB0E81E2C50FE000A7D3FDE7EBA09F389 +:10A120004401FEB71CFF85F727CD0A80BD0E3E5FB8 +:10A13000F9F648D244FBEFADBC96E51B98C6FBA2EE +:10A14000FD6AE86855BE38FFDF773664C6F9C3A0FC +:10A1500013EE5C7EE5E67ABCBFFC7A603DD9DEE9B1 +:10A16000D399BDDFDBA10A5086ACC23C8E5CDCAC6F +:10A17000703B28065B2F46B9FB962C3E3EDAFB105F +:10A18000667E9277BE7D1737AB6CAC3A03758E75E1 +:10A1900038EE335592EF89B8567E11F13654E748C0 +:10A1A000B84AD2F2D6F9818176A809E3623DA35379 +:10A1B0001E2EA6B9C4E712CED792BFF1B809B23DA0 +:10A1C00097F8DCC3F7DBF75867C99BFC9FD83A9A2E +:10A1D00007B7578779BCD952656CA7383236B0A714 +:10A1E000FC3CC5ADCA3DAAE0A1FBF33A62BF532BCC +:10A1F0006973CCAF1F57477862C3B24CF9138C6EAA +:10A200003AFFDEC6D66DFBCEA75F6FC71F995DDD37 +:10A210001D7F65A3579A34451F056AD08681E8FCE7 +:10A2200085AF5798C23D78DFB630BF9FADBF6AE0BB +:10A23000FA73F7DB78D085B68CB812CEB17F75850E +:10A24000A9EACC1E7AF94504DBAA3064D12BB1E827 +:10A25000B99AA3A6C3BA474D1EFFDA1CE671127F56 +:10A2600052C2F274DC21C72C203F0798EAD328FEA3 +:10A2700084A010E75E5D66738C4B1737E3B92288C4 +:10A28000A6A85E92941844EBE97EDC7FBC32E864B9 +:10A2900037944BCFB4DF3396DD4A2D795AC3963CC1 +:10A2A0007EF394439DBF2EDC61ED477F7F38CCEE7B +:10A2B0001B03C2EFA5FC7C813AF27B61EEFF3BC33E +:10A2C000D975E4F7C397570FF7842FA38E5C732BD0 +:10A2D000B75B67A293D58D07ACBAF18034FECD3B56 +:10A2E00050DFC3ED8236487339B1FF5A9C1F68F7BF +:10A2F00069BB215D471ED0077E743B9EFBD743821E +:10A3000066E2BEAF3CF4EA6B77901A1EF97DC11D80 +:10A31000385FF9DD0B9B5A195F5314D047FFDC51AE +:10A32000F522D52BAB1C9E185622881F18A7FC714E +:10A33000FF1685D9E58A1F7CD24BE7161B4FE4CF69 +:10A34000EFE538338A98FE5DC6FE71D19BC6A1D772 +:10A350008A83AEDBDCEF31FB40D424FEF85D2F5E58 +:10A3600020DE7BAB4DA11F7558377DA340F6ABEEC9 +:10A370009F64F8AAEED716F4C3C371185DA8BEF1A6 +:10A3800089101BB5E2B488F71B4680533DE33B1CA4 +:10A390001336E1F757C232D343AD1FFD10F9F9660A +:10A3A00076ABE10C7E6FD9F8253AF5693A07246E51 +:10A3B000E3D2664DD884DF7F4374287EFAB93F9795 +:10A3C000129DFAB974AA9BF83A6858A7609CAF9698 +:10A3D0007461691EBC02ECE6FB41D6195FD0058AA8 +:10A3E00097F2E722CBEF17DF38D7CEEA8745DAEDD1 +:10A3F0006091579A463C895148503DF654D13752A6 +:10A4000084DBE3C52ED55DC94431E4E5EC4A0CC7D5 +:10A410006CC0394BE1A8AFB1E2A049F9B66B1B683B +:10A420006EFCD4B5D3C5F2EFF1520CA0783E2815DE +:10A43000B279971FEB15CAC718800807C78B791D1B +:10A44000F3CF3ABE6F55FD3800FAE92AD21FF94D15 +:10A450001324A86E2E21AE5554DF6060AA25A69362 +:10A4600077D2FA1210B43EA22BE9AAD4482324A82A +:10A470001EEFAA57CCFB71FE74CCAB0988EBA5A0EC +:10A48000B1F3B05A67F82CC278C6E6F098C2EA8EEB +:10A49000820B305394A50FA03819784CB0F4D170CA +:10A4A0008AF875F5E6D1876AFD5A4E7271FD8CF512 +:10A4B000065F9EC4F383DBBCCC7F078B83A3293666 +:10A4C000F7B07A7FB066B64F94A9DEDD51FC8F817C +:10A4D00076FCDE59D47017F111512EE697EE97CA2B +:10A4E000781056A49D244F1BAFF7BAB16FDB8A34A6 +:10A4F0005C745F94C369E9CB598DFAC27567C72D47 +:10A50000E7E85D41ECB8FD1CF58B0884565A2FB482 +:10A51000F405A1FEB128CE1DA81F8ADF2CE2D97553 +:10A5200026E767B6E37A91B5EE8171C6C70B536C27 +:10A53000544061FACCD52BAA058CB5997A151D9992 +:10A540007A759D8A3D3349F2754A3048FD44283674 +:10A55000427A323BDD4A978FF4BC8BAD7748B2E24A +:10A5600046BE0D9100CF6310BB8ED38DADA3F15CC1 +:10A57000585F1BB9264DF7DF617D5DA4343DB7C739 +:10A5800039F9DDFFDBB399F97D8F04050ADAA15FA4 +:10A590007F528ED667FA4582F9973D57FC6F9EA58C +:10A5A0007CFD2C2DA13F3524A6425462D69A894EBB +:10A5B000AA7B83433C3EACFE251F6B5FE6E3CD11D7 +:10A5C00091DD634384E7557BBE666F2224E3B9CAFD +:10A5D00021EEEFF6B935B3E79C6CDF8E88608D1203 +:10A5E0001B1D81F6D04F504F2FFC8AE3527E25C2AF +:10A5F000FA251678D07EABADF88AF1C05B86785C20 +:10A60000CB4D0BB26B8AF53509F21F02A9F8EEA902 +:10A61000EF90DFF945A0B85F678E8654E47B65F75D +:10A620006827E5F5DA24A8379059518DE4B7EAF3A5 +:10A63000981011F7B5DDA34208E741CCFB3AE1E6FB +:10A6400017D279965F1DE0A0FCAA4E8B0C87816320 +:10A65000904890DF9BD63AF07C17845827F1AD6C78 +:10A66000722B294C316B20639DE8C3BE8F292FD4F8 +:10A67000E67CCFED171E8E14FB286FC275701DF59A +:10A680000B20DEBD601EB0FB853A13BB24269F90D5 +:10A69000A844BAF289F385D4AF89C71202E577D806 +:10A6A000B79439F50B4963C13EF4A4A5C717E2324C +:10A6B0001B9F8F2B2C2E9D8FFBD9FC83B8CAE61FC6 +:10A6C000C5EBD8F8B7B8C6BEBF1F6FE2FAB7F059EE +:10A6D000ECE078BA541FEE76440DBA379449304C0A +:10A6E000F1A7B1919DB3FBE813C980407838D96CCC +:10A6F0009647EAF3F56F3C5F248717EE4F9FA3FE62 +:10A7000071817B04A97FA4BE07EE3E41FDE3C964CD +:10A710009B40FCD3FD74E226BAA7FB047F17994344 +:10A720007FEC4A81F5D37BB14FCC78CF38D9AC32AE +:10A730007CD61ECDEEA707078277B17787B745DEB7 +:10A74000436129E3445C77592137DD072B03141754 +:10A750005FB2FC6C9B68BC14C9787758B45CE69611 +:10A760006DA9CC38D0E8637898EF5D26378FDAFB97 +:10A770002F956F6DBBE7AE2FFE3D86F74DC9C476B2 +:10A7800099FA071B0F672DF967713307079CFFE3E1 +:10A7900092E96FA3F797DF393572F1F4FBD5A30C7B +:10A7A00067C98A6A81E539F42BEA3B9E8B1BACBEF4 +:10A7B000EDFD7AAC3082FB3E8EF0F78F91445B88E2 +:10A7C000F67F7A5465792FD871FB04CF375B058A01 +:10A7D000D3B9FC83D63B171C5DF83DEBC3C8977B10 +:10A7E0000F105A20EB7D2268BF4F1CBDBCF7896952 +:10A7F000BACF9ACBBFCFFCF68C317B8E58FAB7ED2F +:10A80000482CA98E9CEF7D4DA4BD2897AB421D64BA +:10A810007B2CFFDE262A59385C2C1EBB1DD09AEFFC +:10A82000DD6C658BC3CAA7153C9F933EC4F4B94643 +:10A83000D0264D7A3F335C5A1F7D0EC54CD2379ED1 +:10A840008AF5D17B494EFF4595C37DB85FB2EA0AD0 +:10A85000274459DD205BF560218CB2F1D2F5865D8D +:10A86000BFF1BE0FA099F55150907D3F7BEC89BFA1 +:10A870000C1732ECE0B4FA5079574C203CD7A6EED6 +:10A880008400E2D5B0E4FD302E3BB2F627AF725023 +:10A890007FBD8CCEA19E9C2A9C22FD1FF20506A99D +:10A8A0009EBD7E3A5E18C9387FC8B7BE80E2ECA173 +:10A8B0005B220BE6A51EAB9EB5F7F51C1358BF68CF +:10A8C000DEE24AD420A91EC990F3D5FFE11635CBAC +:10A8D000CF5D3E0152197845A096915EE4405D49F6 +:10A8E000748178EF942FAC9032EAA19E8258B946D9 +:10A8F000EFB0CEFC7888B6B818DF43F3E0C5C6E108 +:10A9000072DBFF2CFDF7D17EC2AC5F5777537E1808 +:10A91000AF5ADF8722484B3B148A2F0F5A7A4BD30A +:10A9200039A374DBB811198EA62633E2C5E988F184 +:10A93000700BEEFF443DA2B4A9F3BFC7F444F4ED9D +:10A940002DEC1EBC9E10B0389E219C09DAB88E7A80 +:10A95000C65E83BDC7C8B46ED3AF4CEF4FE33D7B3B +:10A96000DE39EB1739EF0E3AC6376F3EDCE7F88F6A +:10A9700067717DD990854379D71450DF5B92FA0FC8 +:10A98000A8C8AFA4DF10088F35161E558F0102BD71 +:10A99000071CE678CCB5C7707384D539D74F7FEBE9 +:10A9A000A62B691FC643F2D74BE172F8B0854BEB7B +:10A9B0009D6E3E3CB65D128F569CA1FFA2DC78C511 +:10A9C00053F7A10A2B533F66F21498515D47BA958D +:10A9D000DD4A88F02F07820131438E5F6F0AFDB494 +:10A9E00005E9574A8A40F1B25205ABEFC5D880FB62 +:10A9F000071A79FEB7F70FB7F0BA79A07BFD82FE90 +:10AA0000B7276E8C537CDE1BD7C7F3C569B7D5D784 +:10AA10001FACDA05F49EF854D5AE14F97DEFCA20C8 +:10AA2000FBFBCE1B2D8E2CB9C7563EEA9FC4FD8F73 +:10AA3000D71CF193BE7BC776B2BF1FCCD22339910E +:10AA40004E71A3C9E2F9328ADF5487563DE66FF3AF +:10AA5000CCA5376BC71C3C456FD4DF207D144BCA97 +:10AA6000EBECDDB75B00EAFB064CC746E667CAFACB +:10AA70002C7CBD68E923175FF6FCFFE92993DFB062 +:10AA80001E000000000000001F8B080000000000F6 +:10AA9000000BFB51CFC0F00309FB08A0F28FA0F11F +:10AAA0007FF1A2F2CBD0F873D1F8CADCA8FCD5FCB8 +:10AAB000A8FC7368EA49C53CEC0C0C22402CC38E00 +:10AAC0002A5ECB00A185A1340B902E6543C82BB024 +:10AAD0006037AF4D11426B02E958206E07E22E0934 +:10AAE000202DC5C0700F48CF92A0CCBDE8B85E8CB9 +:10AAF000BAE68D62D270B81A2AFFB6210383983164 +:10AB00000343820984EF87245F0114BB630861F368 +:10AB1000E830307C05AA7355C36E2E2F50FE1B50B3 +:10AB2000BED304BFFD2156A8FC4B96A8FCED6EA831 +:10AB3000FC5634F9E05054FEC57054BE64248406BB +:10AB40000020D1F7DBE80300000000000000000057 +:10AB50001F8B080000000000000BED7D7B7C54D5AE +:10AB6000B5F03EAF796466924998C00492702604AD +:10AB7000081270020111A99E848701831D116DAE18 +:10AB800057E9F0B84A1575A0B4C616CD0909218455 +:10AB9000A0C1DA8A16617859F06A1B112DDADA6FD2 +:10ABA0000444B4DC1A7AD1A2053B285AEB551B6940 +:10ABB0002DDCFBE9F55B6BED7332E74C3201FBB842 +:10ABC000DE3FBED8FE0EFBECB35FEBBDD65E7B8FE7 +:10ABD000336B3C532F63EC73FC8367A1C8189B90C5 +:10ABE0007AEAD5E104AB84E744166E825782147585 +:10ABF000B37CC6BCFE4E4D8032F3C759C4C798E43F +:10AC00008DEABF0A30E666AC5BCAC50AA6B1818C84 +:10AC100039F15F2A63B23FAA613F591A7C5BC19840 +:10AC200012E864D17278B28DFE77473306C3793F5C +:10AC30001F801FEB0CFBCF9E04FF84FEB20A595C01 +:10AC400082819C89FF4C48D0DE59CAC26E15BF8BE9 +:10AC50006958EF2864FE4743F0BE907FEF2C635B9A +:10AC60003DF0BD434E2604F89E95B1D00E78E460C9 +:10AC70003D94DDA5FE6D227CEF703141AEA4B98517 +:10AC800077407F7EA3BD4BE5F55965BCDC5EC0E235 +:10AC9000E502B683BA4A2C773D8E6517B6B194713A +:10ACA00024EC6F9D90156E0BE1FB44D0EB4DC1B5CC +:10ACB0003D24D47542997DBA3F38D76779FFD9BF13 +:10ACC00007999FB15D4505FAB48BA15C312207E17C +:10ACD000D2AE24827E4B7BF3D9D2102B9787F77E9E +:10ACE000DF532FB2C5348EDC159CE34338268E39F2 +:10ACF0002B098EAA14EA0DC75515DFEE81E3C87F34 +:10AD0000201CD7221C432938AE45B885527034CB5D +:10AD1000E63AD61674DAE0B716E1578EF07B323891 +:10AD2000778CE5FD9883C1287CB716E11866EC5650 +:10AD300006701CCC58484EEAB8CEB5B0CE3618C313 +:10AD4000A9E90949ED0D2F47BDA49E1A6029BBA2B0 +:10AD5000874A60BEBEA3125222F3751CD124283349 +:10AD6000E87D07A139CAACF87303E5265C8C8D80B9 +:10AD7000E7E7083F358B25CAE843F639C3FE1DD403 +:10AD80003FF04D0CF9C937299190E07D96AB93C9FE +:10AD900000DF9C29AA7025F45FA0DBF96680C1372B +:10ADA0009257AD4278E723DF40FD407FAC0AC9AD42 +:10ADB000FEBAE877904F8293E2820CDFDD73F15F99 +:10ADC00018C2C187FCE4217E2AB5F253A8EE8ECDCD +:10ADD0004918E7135D666DD05FE357623FC2B2ACBE +:10ADE0003BFD2B03C8E7B1CD49E47387CBDF04708B +:10ADF0007CC0934D78AE3FEE8B3B61C0F606C61229 +:10AE000023196B6B70B10430756B839FCA2D0D4194 +:10AE10007A0216F56FC1F767268BF136F85E0E30B1 +:10AE20000DF1D5F32CE5CF634CA0F96C6159F4DC3E +:10AE300087E509443EAE08E0F51EEF9C1C569E993E +:10AE4000BE7D61D1065F4F5916C1DF2CBBD53C5B7F +:10AE5000D9191C6CFB1E241BC187CA8088C50297A8 +:10AE600073B2ACB130CE538679021CA59CDAE08D6A +:10AE70009679AC6712CD5792AA621178DF2C30A276 +:10AE800047B37EB02052FD18C145FD0558F7FECFEF +:10AE900001AE8A17E00174E1F5CDD113C827028B0A +:10AEA0000DF7234FC81F24CD799640BD92F0E7954A +:10AEB0007FF97030D777D9A797B9E658F8EC3F0DEE +:10AEC000BC65F9C4481CE093A50089A15CF195C458 +:10AED000F5D09739DF8A6E84AB3CC011DEAAF6C686 +:10AEE000CBBBC80913107F1C2F32E2A532859736E1 +:10AEF0002FC70B70499F78D98DC219D6DD26C75D43 +:10AF000079065C50DFF9100E50F6211C505E201CB3 +:10AF1000842F110E4DD575112FAE2F4CF050FC2300 +:10AF2000C6B5317C5FD29980F935E58F18B792218B +:10AF30001C38BF35358AA48FCC79A5AF3B1D8ED781 +:10AF40000ABCDD54A4EFFC141CD67AC51A84C35A7B +:10AF500099C361ADF7CB858339AF769C17ACAF5DF4 +:10AF6000E674DAEEFD92E9D4A3D5F5C557263ED6B0 +:10AF700019705C67C071DDFF12387A0C3AF71874EB +:10AF8000EEF992E9DC9C57AB01AF56035EAD5F1260 +:10AF9000BC4CFDCA5CE13A9CC762BF4345B9728BA9 +:10AFA000A43BE6A3BC07236A07E853B4615901D860 +:10AFB0005BDE95AFA92ACC5370F376D2F539510BED +:10AFC0001F2E9641938E83276BEF924005B3B8D224 +:10AFD0006DE5CBFAE347C61EB0CCE73B822F80F687 +:10AFE00033BB885D84F3F98495BFA2B2CCEB7FBFFD +:10AFF000A1BB0CEDC7330D5D630F28BDEB6F9158FE +:10B000008CEC2C57A783D6B3A2C3DD5681EB1A3143 +:10B01000AD03E6F37D43BF312F5482BD7ACBCE8F93 +:10B02000CB64CB7C167BC593CE3EE6DD0327B31DF8 +:10B030009813CEBCDEED33B5FB40883E28C0539359 +:10B04000233521F4334051A27C931F5BAA0F565342 +:10B05000FDA6E60D32DB9837CBEE639E81F39B674E +:10B0600026389ADF9DF6AE6C61D0AEC93BAE0EE5D8 +:10B07000CC2AC03FE2DA1CD7C4BB09F726EFCA814D +:10B08000567CF782BBD43E03E7FF09D3CBD04F8277 +:10B09000F288C5F0FED706BDF49AC739E8E3174831 +:10B0A0001F9EFF39FA78DDD00F5F027D9CF8DF48E4 +:10B0B0001F8AE15F84E428D9758A2BD21A023A915B +:10B0C000D0BF8079491D15E45FC39C0CFF026C77EB +:10B0D000D4DF418DEC932C706AB09DABD42EB7E4D5 +:10B0E00042BB9F11AC8B523F9F006DA1BFA3187E46 +:10B0F00007BA13282F652F4BB8713DCC41ED902C2A +:10B100003F1FC6D89AD265AC3340F3894BA1CCEB34 +:10B1100091B11DC001CD00F273D83FE744C6F4B72A +:10B120007EFB38C1B9919C88EFFCBF675E597DD723 +:10B1300002F7CCED64F6AE0907A0EFC146DCC2848D +:10B14000BF165F467219FCB4701BFAA5AEF0A1F9E8 +:10B1500050BB1A3F01FCB530CE9F2C9847E50F0439 +:10B1600095DBF9851CFFB237061E5FAAFE5CF80E60 +:10B1700019FCFE7331324684F2D67CD6218D4D7D8A +:10B18000A7385894F8A7792E7DB775CDB5EA7C2FEE +:10B19000D2879A7595CFDADF4A5AC7A686387B7B65 +:10B1A00038FAE5DD02C54B02318A9B14D747C8DF68 +:10B1B000731626057C9AEF4D7A63CD9C3E57B58277 +:10B1C0003EC47A972A623CA1A423B4D265A3B708EF +:10B1D000F9B34319A7AF7F35FC58207C1ADF596FAC +:10B1E000D78F3D74D57C7EF47F07CA0B18F7CCDD72 +:10B1F0009A630ECC6F5162A6A304E8E61B22B77BCC +:10B20000CEDCCD16233CDE6A384BEB34DB2F110746 +:10B2100052FDA2F62AC7548B3E5FC4B81F099E9206 +:10B22000E3AA31D6F11A0DFB202781F87EEB90447A +:10B23000FC93697E0B834F8E95C7A7CA6FB74A648C +:10B240004F30397C25F2D1827649ECABBD09975459 +:10B250003F4F533F67EED21C687FBFD5E012DE56EA +:10B26000F83A5580EBA2D62A87E63DF7BCAF43BA41 +:10B27000CD4FC16DB3D1CF99BB9202DA8DC5893F55 +:10B2800008D85FF18A649586FD780987EC74BDBAA9 +:10B2900005E779D9A77F74A35D69F667F63F14D7F0 +:10B2A00069896F6CAE178D7576CFC4F6C52BC4F364 +:10B2B0005AE7505CA7259E60C2B90DE12C648673E5 +:10B2C0006B43E7D8FEE255AE51DCBE74293AF9BFB4 +:10B2D000E79A875B85FE2CF468CEA3F51CF85E83A5 +:10B2E000F3B0E8B33695C3C1F4EBCE356E5629B44E +:10B2F000B7D9813A2B0312251310F9A579F98522C4 +:10B30000C653BC59AC8DF8473E8D7A4334E499EC72 +:10B31000BA92AD1897EA4FF243BDAD3F434E071CBA +:10B320003ACA0B66ADB7E81D17EA038CB7065A3E5A +:10B33000C6EFA440968E76A21490DF4DBAECF323AC +:10B34000FD532C4491FF9A4C39C7D80119E7591A7B +:10B35000DE86F33C283A0CBAD3B4C600C56B636DE5 +:10B360007ED2A707517EC97E9DE48A393F65601968 +:10B37000C52799B76F79B8292D3E69C27193C28CE0 +:10B38000F8DDD5718C472A62D9D2B670E67ED2E557 +:10B39000485351C5B128C6A90A1C24B75665584F51 +:10B3A00012D743F25FD3D1FEB6AC27294EE8BD9E3B +:10B3B000261F8FB7B240DFF36832D6934E0F4DE6AB +:10B3C0007A32B44B9FBFA9679CA54CB7EA83354539 +:10B3D000465C98717E76FA611DC04F6B86CF082E51 +:10B3E00084FEFFCBC08F56DBC1ACFA16D6F35F7D6F +:10B3F000E16775D10FB495B0EED3B06E09E19B4112 +:10B400006FB95DDF2E47B9D54357929FD6972598E0 +:10B41000708D517FCE699C1E3F14A32E09F54159B2 +:10B420000BF925CEC20ED23F9E7258CF85E05771E0 +:10B430009DC2D617F138AF37CCE3BCEB8B785C17E5 +:10B44000BEA338AF5936E7B1BEC85FE0B5F0DFAA9A +:10B45000E9035F47FA70173295E2D1893B19CA3D7B +:10B460006721E83778BAE52E1E8FAE64218C37BB92 +:10B470005D898480F1D9308F4F7B0A3B5915F4B731 +:10B48000FE3389C3B5AC92D6D3C3779268B3A37B9E +:10B49000F8C458773A9CB6151971E7343A8301DF3E +:10B4A000584CF89A381EEDAD0B25479FF639E0E968 +:10B4B00042A90F3C6D5B67D25DDF7AB4C4F54D1BCA +:10B4C0007E9811170E1AA4923B4D7B10D73D1AF1AE +:10B4D0000CA8DB109C9410547237A9BF3621B2A679 +:10B4E00011FE3D2F3B7A19E22DF498BA0FEB8351F0 +:10B4F00026E2B8263F4E9796B8DF82E70FEA4A72F7 +:10B500001600BCFE4512FA5CC7AA065803F0C1AE8D +:10B5100006173DCF9C1849F3CF44F72D0DACDC2A1C +:10B520006F5B0232C563947CB97920A0C4315CDDC5 +:10B530004ABE118BD4CD47B816AAE3108ED71AE3B2 +:10B5400003DCAE952CFCE60872F8495A978676CC57 +:10B5500068D64571F9415E164E1830912DF0F155BF +:10B56000EA55C3A1BE04F7A3C2048728F637FA7AC6 +:10B57000FF3E85F5860363D135F8FD032F0DA7B88F +:10B580009939EE53128F1FB2F200E70B391CECCB46 +:10B590008E35F1F410C0A91C07600901BF2B5CCCEB +:10B5A000E2C83FF7E17B805B488AC4901E0A636172 +:10B5B0001A7F2BC6D9BC68F7BA0E14107DF9B77084 +:10B5C000FA8AEF7A84E86B6005C2E5BB69746BA107 +:10B5D000AFEF4A7DC835778D9E90A154E5883648F7 +:10B5E00044DF5A2E2AABC18B13C4B78AC8482FC078 +:10B5F000B47F8D745584B8505372A820AC6EC57951 +:10B600006C33F03140D5AB50978526BD26FC0BE05E +:10B61000AF35EAD5507E0F2E8AE796203FBE2A31FD +:10B62000E4C782C881AA2A68EF1759770E20A36061 +:10B630005182CA433417E1A138D695C0FD8AD60697 +:10B6400046FB08039674343A59EF75B91C7A10ED2D +:10B65000A922F5C65A06F0134A8E553951CFDFC5D7 +:10B66000C24E68EF55DF3D8E7EDBE0901E0C7B11F5 +:10B670009F09B600E631587345901F5C4C6D7420ED +:10B680001C659215CC150D937D3074459CEC68AF0C +:10B690001ABD15FBAD7044B7217CBC610E3F25FF80 +:10B6A00000C1E701A58BF931BE3B25A1E13C56E580 +:10B6B000B7B0F916BF7D8F810F90715ABC3C457FA2 +:10B6C0001B240EC7EFCF5DE9BEC98BDF65F1F81F04 +:10B6D0006B36E856676827F8906E55A2CB27717CC9 +:10B6E00035AA8A04DFCACE6AEC02F87110CEE701EF +:10B6F000255680ED1EC877D4D1383A7B8D4D84F61F +:10B70000224BFD05703DDA765CDFCD9242E3B5ED6C +:10B7100048241E86F7032739FD2AC0C317399878B5 +:10B720000EE0109CEA8AC893A09C7C3E7102CA0776 +:10B73000EB3CC434AE9D9C9FF2CB58586324BF555C +:10B740009CA7B488EFBF0683E30464A6BCBA2E4D61 +:10B7500051096E2FE3BC0797E99CFDD404D15D8BA2 +:10B760001CFBDD5DD0AEE5901446FFB6876F18F088 +:10B770008D457F3983201FFAB057CCEFCFA54F53AB +:10B780007E2DD74F669C05F8EB3897B79CBFCED778 +:10B790004F67BAB6BF14E03ABB07A85D723134AD4B +:10B7A0000D4A8CEC944AE594DD1E93536540D8878E +:10B7B00077EE3FF030EE235CECF4EFF0F7AEAFC580 +:10B7C000B2B95ED46B32E7AB7D4FFD6604CAF15768 +:10B7D00080AA719FEDB0D0F52EEDB75749EA8E10D3 +:10B7E0009F9F6B22B667DC39C6996319051DD895F2 +:10B7F000AF6892360DDA77550A71AC77B293CD9770 +:10B80000607FC06F68F7744DD97F3C07CAB305B637 +:10B8100094553076E55E49778EED0D87DA3DCE930F +:10B8200008C75A5CA7052F57FEDCB26EF8FF50E43C +:10B8300027A0AF7D2706CDFE218EC37222A8AFD9E7 +:10B84000B4E5EC6978CE9EC4EDF05BB3BB6B2BA185 +:10B850003E3245424F96BD32E9DF03E8B3546902F8 +:10B86000D9EB574E11E2CE3ED607EF1515E8A45698 +:10B87000FB98D6017FDD4EA0D73327F9BA0E835C43 +:10B8800069F4E33AFED47C098CE7AF76919CE9B584 +:10B890009EF4754CB1977BF03E8DEFDBCB8CEFDBEC +:10B8A000972BD11132FAF18F5DAE4F45FF2AC1BA05 +:10B8B000DB48BE46492E98ED66E62F22B9227B452D +:10B8C000DA1F057A4CA828AF81EE69BF3920F60946 +:10B8D0006756E840E164A1A30CF16443DF5315F41B +:10B8E000577556E6F9106146FE968F25C9F9C8418D +:10B8F000A8011DE43255E0CE4898F40E635328AFFA +:10B9000022E0FE7BF77B3DF52B68EBD9E79E2FD03D +:10B91000AF9C247AFDBBF77B8EF9BA53F92501EB76 +:10B920007EF81AB063D039686AF0D3D389992B189E +:10B930003F2B6744BFAB1B823C79457E4A4339E8C5 +:10B940000D3B5494035EFF6E8AB3F97FE164396462 +:10B950006CF0B895E9E779CAD84911F0EE093B6C6B +:10B96000711357A1E3BCF61156E58F18D49F5D857E +:10B97000941A72A5DA65FAEE1FFD6C02FD1DB2D8AD +:10B9800077B2B72445D7FDAC4F0A47C928C3B8934F +:10B99000551FC8228F8B357917B8486E7FFAF9E7A3 +:10B9A000D244C3BF6698071199D4175C36C9219B4E +:10B9B0005FA6F85B960AD9183F5DA459F93D8E72CF +:10B9C0000BEDA0E0122D791E7890648D197E06E5AE +:10B9D000B5ACF7CC6327511F7BE611FE5BF20786FF +:10B9E000B8FCE2713AE6F2921C33E9F4F9FC6B839D +:10B9F00049F87E55C1B541947BAB944810E3388734 +:10BA0000F29FD6D02F6DF9348739819E5A822564F2 +:10BA100047B77C3A6C50AC8FF579189717598C1949 +:10BA2000713907E6E2F4CC17AC168A277B0CB9B360 +:10BA3000DEF30B0DF35E1CAA1CC3FE1DDE08D951FC +:10BA400035959D1ADAD98EA837EAF4F7EEC71C07A8 +:10BA5000FE84CF519EE13726DF09B6FA3EE7915EBC +:10BA600076948A5C3E0658BCA98FEF1557B6EE193E +:10BA70008BF95F3DEFFD386EE9E1311457C6EF55A4 +:10BA80008C37834440BE4AD17FDC866F3434591FE3 +:10BA9000719216874672422F66F11DB81E59A3FD9A +:10BAA0009966216F1CE6BF64A26B39D84A71158074 +:10BAB0005142E0F15F1DE106E3842F2791D0DE259E +:10BAC0008CA5E7C7E407FBE5F7AD74F6816CDF8F63 +:10BAD0005B1528E9D74F423E622333D74B0E2D1A10 +:10BAE00021FB32760CED04858D1D87716CA5F0E08D +:10BAF000B1108CFF996147286807617C3F6D1F7FFB +:10BB0000B5A87D26A3FD99C5FB49EF7F83582D2855 +:10BB1000D07E9B1C9515CC0BF0CD203BB865F06416 +:10BB200043DFA5F1873FEFBCEC33FFF5612E14999D +:10BB3000962D0CE4F48B7F59E561A40916BC44F200 +:10BB4000A31D8AF844BB53413B0B69AE4C7E0BF9F5 +:10BB50005383FF70FED953A06C8D3F578E63DBB9C2 +:10BB6000DE8FA0FC5518FFDEA44B09F182F660DAE7 +:10BB7000FBA18A7D1FACA961AF2DDE2C319EF7930E +:10BB8000BE9E5AB17AB892DF071CCE336ED51AEC3E +:10BB9000682539C2C04E81F5BA0CFFBC19F10EFA06 +:10BBA0006583A187EE37F45087A177EE6950892E1F +:10BBB000EE6B28A3E70F1AC2F4FEA18649546E6902 +:10BBC000D0A8DCDE5043E58D0D1123D9324E72B57D +:10BBD000B940DB20A0DDAA27AA0F4393669F760C0D +:10BBE000F3E318FB392FA38F3A99B1CB95A7AB7527 +:10BBF000587773AE5627C2141E1FF0A39507707EA8 +:10BC0000C3B56302949B563DBAAF19BF1FC3BF9F14 +:10BC1000AFBCC4BF7773BF95A973CF01072E1FBFF9 +:10BC200085E3013C9AF30D7FFB3CDBDD85EDE0D93C +:10BC30001CFA62E365C9718DAFF764F5D120E6DBCC +:10BC4000C13F07A33FF50ACD9F44D664DCDE3BB27B +:10BC5000522FA7F51971B808BBC6A297BEA7707F6F +:10BC6000AAB9E28BCDFBFBC6BC736A92E4877B94D6 +:10BC7000680CF9CB5797D01D80DA567537F7D7D5B2 +:10BC8000F3F3777E8B4EF384D4F74AE9B80492D26B +:10BC90003D69EF7D951AF57BB7C2F39636C6AA5D6E +:10BCA0009C8F35DA7F6C51789CCF81AFD0BEF5CBBD +:10BCB00064EF3467F8DE8142BF32F55DC679FACFB2 +:10BCC00061D79EE73A991C21BF6E99ECB7ADEBEBBB +:10BCD00069E52C2FE7D7F3C547C2C0C7A5325FA7D8 +:10BCE000D9CFF8B47EE5C74436691CDA1116BD0217 +:10BCF000FF2F8866D9EC9BFC489EAD9CAB0DB67DB2 +:10BD00009F33C96E0F0DA8B9C0563FA86E9CAD3CBD +:10BD100064F164DBF7CE60B5ADEC0BCFB27D5F14A0 +:10BD20009B632BFFB5F09E9B068F9969E5F3EDC7EA +:10BD3000B97C290B039DCC3B2A915F57CF92D30747 +:10BD4000A1DEAC17282E84DFF9C13EBA01FF0965D8 +:10BD5000B1FEC874A4BF79806A672E3CE5A48271E5 +:10BD60008E1BEA9D697632EFFFF9E480950BE0FBCC +:10BD7000E3CB25C36F4CCCBE08C68BC6406F40E9F1 +:10BD800078EC4FAF5E04F59FD44B615CFE9B2CB901 +:10BD90000ECBBA2E19FB9CC922A4AB6B8C38C149BF +:10BDA00023FEF48691CFCAE46411E64BBFA1C46FB1 +:10BDB000E072E3B3EAA320F7DE70278BB0DCC83C67 +:10BDC000539B27E3FBF696CB2DEB58B05CA0F88F86 +:10BDD00016515B8218B756C3E3DB98F147714D1ECD +:10BDE000CFFFA3E230E29ADA1F510E044B23FDEE9F +:10BDF0009F9F30E667965F52A267510F2D589EEBCA +:10BE0000C0FCA605AD4714E4F3410E035F729CD657 +:10BE1000F7A691B7172CE5E37FB278E416EBFEDCCA +:10BE200020873DBE9B3ECEFCE54738DE960861DAB2 +:10BE3000F670C58BE659E639D091CDCF052CE5E3F8 +:10BE4000E805822D4FD06BF43FC8C1E3637FC53A4C +:10BE5000073926F4B54E66ECEBB06C5C2778533EA0 +:10BE6000C4EF89A3DCEE7DE9E48B4A12E5C1DC7CFA +:10BE70009B3C58D02CD9FCB07F5EECB195AF5F7E77 +:10BE8000754E5FF9383DF4AD5BE8D1625F56616095 +:10BE900011F09D3797FB8B2C2D6F3BC0A28200EFDA +:10BEA0000731BD1163530553789EB669BF0E99A63D +:10BEB000BE0EFF027BEBDA021EB765AA0C743504D6 +:10BEC000FFC5E34B7AD2B4C7013E43C24CC3FC8DDD +:10BED00021A9F764D7142C966DF1990151D916E771 +:10BEE000F0D5D8CBAEB43894B91E73BDF9867DC2F7 +:10BEF000B438C5B9DB7D8920DA011DD9C39A66E261 +:10BF0000F904335E3EF77EFE5D92111C94FCBAED9F +:10BF10007DEF2337D37ADD49B50AE3A979353A3F76 +:10BF20003F500B73C57DA262C6BA683FBACB85F895 +:10BF30001E50CBE3B0F35049423BF1B1B01BE7B127 +:10BF4000AEB63A17EBDD7A94B522DC6BC5783CC40B +:10BF500045A40BE3A901399E0851DC5B43FEDF7762 +:10BF6000E237AEA4852ECDF66CAE19C78FA87DD171 +:10BF7000654FDE4847155B5849E7596214FF03F4E3 +:10BF800036617C07FC2AB453E5B04CF9211F08D177 +:10BF90005B1C7DECEF98E39C53DF9DE777A1490E96 +:10BFA00082DBAAE302D15B4E717714F39CD86B3C21 +:10BFB000EEAE57878F45316E38D641E774B227759C +:10BFC00053FCD679DCE397280E1EBBE86A1FDFC757 +:10BFD0004958FC8D3369F9291788D1165C8F30B028 +:10BFE0002E8AE3DDF1964071C99C293CDF247B3425 +:10BFF000CFFFAABBA490FD11ED766FF411AC0F0634 +:10C0000022FABB50FF138744785312FF44FB768A11 +:10C0100037AC61FE83C22A288EAEB8C2F4DC6BC88E +:10C0200087478DE74F0CB901E08BB28129BF7F5E56 +:10C0300076F4019C4F89E6AF46FE91BCE6BE4DF218 +:10C04000C19B70BDC3F97EF074A8203B25A06E751E +:10C050005AE870A743B0F98BAB61FDB82F7536393C +:10C060008CFC32A590C78F95423D6185030B748F80 +:10C07000962DF64C6BC975DC1F0A745E78CA220FC8 +:10C08000F61AF277EDF0A7E91CCA0429F238D14379 +:10C09000293F17E328E479683DDFF9F8770A2C1483 +:10C0A000E355D997D42690AE5619FBB55A9DC6D004 +:10C0B000CF731BED4C7A023ADBEBB0C6390226BDDA +:10C0C000B10F105E0E035E6BC7DCE8EACBDF1CE944 +:10C0D0008826ACED1DC170BFE745CC7DA105938CD2 +:10C0E0008E997A29C6C3BF61F869CB9E7AF820C6BB +:10C0F000BB975D0C9E7218F330361F7C0EE901CCA5 +:10C1000046F2E358C7C113505E54E7E1F1731621BC +:10C11000B9FD21136BD06EFB90F1F8C087DE89DB8F +:10C120001A43389CC6AE067E7CC7C1F5A4ECE5FB7D +:10C13000CC32CABB32430E529C95E7C3312F978352 +:10C140003A7335925C6EE5F15D1DFEC3F2BF74D8A3 +:10C15000E3BD376DB0976F647306227E6EBC5F617E +:10C1600071E8F71BD6783DCCE7570E6E17DEC46238 +:10C170002D6897AC56B87F70EB4FC738103FDF186B +:10C18000EF0F617EA609CF0F0D3A7E1FE84BB5E891 +:10C19000B39B037187C6F1E4C2F536E5727DF1E128 +:10C1A0009EA909E4D7B7419E20DED3D7B95AE9BA90 +:10C1B00012E3DDFA3A25CCED27AE1FD09740D0DD53 +:10C1C000BCB34AC3F837404B1D606F4FF35FD86A6A +:10C1D0005FEFB9E091BE7ED36ECEB41EC74E6EF750 +:10C1E000A4D399EC146C794C3DE78A56CAACA912D9 +:10C1F000E36777D3B9A37ADDE9C7FDBC33EEE23854 +:10C20000EEE395E2A61EE9F7D8453CFE13BB109F6E +:10C21000E7DBBEEC6F6C5F8EEDF37BB75F13E888F6 +:10C22000209F7E20F07A972B46FA5D90B99FB52625 +:10C23000788EFA42A897FAA92FEDBF3DC64171BF8B +:10C24000077316F13B731FED2DC36EFA44E679E7D1 +:10C250009F781D0CF3DF9B72FD6487EAAB0415E544 +:10C26000E2FCF6AB72905EE71F950262C860E500E3 +:10C27000DA1D35A4AF2F7272FF16EC5F19F973FE49 +:10C28000A4D00C94D74D4A38988BFBED77F3B86C5B +:10C29000D5A48A28EDDB78EB1494AF2F3E369EC6EA +:10C2A000BDD93B83505E8DFDC0FC3F7CF489890C79 +:10C2B000E6D7F4B88F2548AFC7C98EBB798F44F451 +:10C2C00072CB4F7C740EF4E6DDB76EAB857E849F37 +:10C2D000FA683ED2EE9B1EE1767D13F573F3D357D9 +:10C2E000BFA2E33C5F95E88C6053A36177E8E1204F +:10C2F000EAB15B9DECEB3CDFCE6E3F2E6C0FB504DC +:10C30000715E3B4315A8437AE85686EFA1FD7C7821 +:10C31000CEE9836E6F7272FEFDC0C7F759859DCF5F +:10C32000CFA3F5757E4DC1F509CDB98E7760BCEB15 +:10C330008D75C277B40E7D97101F0EF51FEC12F8A5 +:10C34000BA3AC76C71E33EECCE2D8E05B4AFC1F3A3 +:10C35000F1CCF92EDC196A195C89FC190A89B0AE96 +:10C36000A93F793C1BEDD65B7EF259CBE44ACAAFBC +:10C37000EEAE057EBE7DA77412F78F16B64A69FE33 +:10C38000108FA7DD461201BE7FF2F7337E0BEDDE84 +:10C3900007B9EC0691F57ED73B8E9F6139EA8DA1F6 +:10C3A0005CBE7DAF628B9FDDBEF36DCA7FC6FDF9BB +:10C3B000C24B40041FB6C7D77A7DCF22396857DDFC +:10C3C000DEB986E29DB7EFF9F00DE497DBD3E26BBF +:10C3D000EFE33F0A7AE79FDFE3B4C7DD9648BC3F4F +:10C3E000B673409F7EBB99776ECA8F8FF6FE6993B6 +:10C3F0000EF4F4C1EEFFD8A4033C0F7DF6A74DDF89 +:10C4000045B83FE7F6237DDFFEE83B9BBE837A64B9 +:10C41000AF53443AB9F9D13FBC89F57F7966641EC0 +:10C420009EF7DC69C8A38F426706A23DB2FCB9E95A +:10C4300083901E973F357510EBC7EEFF08E82A6E14 +:10C44000A12BD36E57F70A68D433F673E399860F9E +:10C4500076B8DB81F9DB7F1158771BF8B5B7C5CE0D +:10C4600038D00E3BA8B16E84CFFE3D6F1FFC0E94FA +:10C470003F04FC38FBC00FAC6C8848FB4A8921B8EC +:10C480002F7FDB9EABBFFA954A7C2A6195F0D14D98 +:10C49000FAA8179E8E025E2B5378CD8847233E7AEA +:10C4A0007BECF76F60FE433A1E3FC47F5CDC1B8F62 +:10C4B0002F3AED71EDBFECFAA79C0456EE19D0A708 +:10C4C000FD6AE2F1D6A7AEE9D7BFFA288D7F33C166 +:10C4D00079B1E197DCEFD47EE39C80F4F0AF8F3C40 +:10C4E0000470FCE87567B81600F3D1E39F1483313C +:10C4F000C3DE53BAE7211CBA9F73FAB7429B9B9FD6 +:10C50000FB0DE9AB8F9E3AE25049AEB36C01E4E912 +:10C5100047ACE7EFD7984F719BC00BB7AADD33DE6E +:10C5200008E03962D6AD237EB67FE8B803E13A5819 +:10C53000A2FDBEDBE257D5A8742E209FD67D5B9C62 +:10C54000F3C56DF1E7E7E2BE403ADC735CA2998F78 +:10C55000DE83576112E2F3E40CA4BF4CF834D7EF4A +:10C56000C7F55F84F3B0F36D6FBAE976A05EB0E013 +:10C57000B718E9ECC7428E2A4C81F52ADD0E943BB0 +:10C58000FA13921FCF23A5E31DCF21CD273B65A52D +:10C59000CD5E369FE9F4E076D9F9DA3CC764C2E5AE +:10C5A0005C7C7DEEF57C3178FDA7A1FFD3E1D63828 +:10C5B000DD4972F9572127EDD31F51D407BE89F405 +:10C5C000F192C2F0BCE89525BF97D53EFCC057D08C +:10C5D000EEB1F84991491F370FA8C47C06D02B6AE9 +:10C5E0008A4E7BEAA748B45F65CEC77C9F37B3B25B +:10C5F0001DF5EF69CC4303F97CA020B291F603440A +:10C6000039E60CA6F20E4B3446F6F0B22227D98753 +:10C6100078DE9AC7F9F9BE40ABB91FED8D929EFE48 +:10C62000B5313FB6F3D1471F05F9330B070652DB8F +:10C63000CFC2ABF210CFE55CFF0BE54FC8A85FAEF1 +:10C64000A87942C6FCBE0346BED9D10617D975B833 +:10C65000338AF9E873235BA8FE05237E346B2E949E +:10C660002D7AF28AB22764B40BAE28DF5288F2F832 +:10C6700065CCAFEC438F36BBB8BFD538EA6B74EEF0 +:10C68000F2E53B797EC4CB450F1422FE0E0CFFD1A0 +:10C69000C665F0FE509940795C87EA577A511E1FB3 +:10C6A00052ED7198E747FD5EC0791707B7C828B704 +:10C6B000B71A7EEB76235EF78871FE7CA771FEFCCD +:10C6C000D106959E8F359451FD8F1BC254EE6C9808 +:10C6D00044E5DD0D1A95F734D450F9E9860895F74D +:10C6E00036D4D1F3E70D8BE97D76DBCE66841FBBB4 +:10C6F00040E8C4F8D72F1A62549F68A8A7FA6906C1 +:10C700003F17B7823D7F21F0453DCFFFDAAA44E8CD +:10C71000FCAD397FF3BB7A031E3903A23117D0FD7C +:10C72000E99A456330BEA38891BA65215CF73091E0 +:10C730009FF7E2E7FB5F1AFE00D959D20817B39EB4 +:10C74000C7B97960B4DE65A1B79256074B8C477CB8 +:10C75000C60F0410DFB301DF00CF59912DCD9852E1 +:10C760003AB726A4A27DF182D0D99C877EC418A3B3 +:10C770007EEE554A75F9B9F1788531FF17AB6285C0 +:10C78000C86F2F0A3CCE77758DC4CA2C72E09A8888 +:10C79000BD7C918BDB5179334BFBCD6FC57398F624 +:10C7A000F835E72767D01E5777ABF6B8BAE4DFAFA6 +:10C7B0009D1ADFBB3FF32965D770BBD92FBF8BF222 +:10C7C0000D60207C2EA6E40E794AA63DADE2FEB2B5 +:10C7D000974D03F85DB784C7556E604905ED75F454 +:10C7E000B31478FF755DA03C93052CEC40FB7B11E6 +:10C7F0008BD0F34616A3A7B330A1F0FD92697E3C1F +:10C80000872468974898BF92697EE9E795D2F38FAD +:10C810009DC63991E06457D4EA5FFDD4C0C70BC60A +:10C820005371A8F74EEB673FC6941FA6DC18158816 +:10C83000FC1F97052FE63353FB74FC98F361486C9B +:10C8400005D87EF98B4580DAAD1DEA3894875317F9 +:10C85000B43A8BA16A73BB3A0EC5CA28A6903CDBDA +:10C86000743CB495C7471B0D3DD8BD6624C60BEF7D +:10C8700016296E9F7757C92B23D9B9D7912E071F39 +:10C88000183A763DE26DE82189E4C8FAA1FFFD3C43 +:10C89000E6A11527B95C29F6C646A2BD5FF5E61FDD +:10C8A0000A300E382A104DBA2C71CE4D77C586A2AB +:10C8B000DCD9E4D24E225F9DAE59EE74B314BDE6CE +:10C8C000AD59F922DA9399E0B1B5B5FF7DFDF47960 +:10C8D000F7D05F067E48D107FF6E9FE7B21908BF09 +:10C8E000B724E6C73843B5E72BA42F17E4300DE58E +:10C8F000C4D7EB9378229B3DE18AFE5F5CD70DB8ED +:10C90000C3C5FDC381A81FEECEE7FA70D3C0770B75 +:10C91000289E2C27433C6E729EE72D18B3E9F1D573 +:10C920008CD5205D4E614901F74944CF0705A81F0A +:10C930007C6EA14F7B81D5DBF3109C4298E68F0182 +:10C94000D51D30FF856244E3413E4DCE85F7C5BA23 +:10C950004079D7D30302F983F3F5D0168C9BFFC936 +:10C96000150DBAF3793F743EA259A0FCE885DE0BA1 +:10C97000E8DCE6F9AE87693071CB7D44E6FAE6651E +:10C98000478761FF25FEDCEA5C95EEBFA1F8624FA8 +:10C990003CB195C59DFDF0D98F301F1E48FD252364 +:10C9A000AE58B291C7537F0678C73CF9FD40AFF847 +:10C9B0007E07E8272CBF00FA09CBCF817EC2E7E3D0 +:10C9C000A09FF0B90BF413D66F02FD84CF38E8278F +:10C9D0007CFF22E8277C86A4C84534CF569ED7DA50 +:10C9E000E4E0E7E6CCF384E67C34031FE6B3CAADAB +:10C9F000D2FAB7A2ED857AE21D479CF24AE58E2174 +:10CA0000745E0C9E482F39FED0548024BBE48324EE +:10CA1000DD0F3487B9C218979AD2ADFD104916437D +:10CA200083F87EF8FD911FA208F0E93994B771CF21 +:10CA3000A5EFC597C0103F7DE92FF176788E2F7B4B +:10CA40005E473EF289B10388573698E74F859A933F +:10CA50008945883F109668078DDC9864B742B9E233 +:10CA6000CFD954CE3E3A91C67953CA412263D98771 +:10CA70001EFDC31218E762A411B20393FAFD501E03 +:10CA8000B7D8C7E3897252DF83E50F8A281ED922FF +:10CA900044A6E178FA55FC5CE38CE0491D537FF332 +:10CAA00063BCFFAFFC3949E78106FA4511D7F59021 +:10CAB00023D98479B17BE6B1F056F8FEDE99EB7E9E +:10CAC000DB0CCF0DB3CF46A6C27C831739DCC84E32 +:10CAD000C15F6D7809FD8B67C3F71D41B03D5458A8 +:10CAE00079DD12786E74F3BCB3F6F03ED730E867A8 +:10CAF000E3923CB20BC7FFDB012AEF8E9552FC613B +:10CB00007C05BF2F65F714B9C62ACF97BA799CFC6C +:10CB1000BBEE9EF34A0CDB019A286F57393C439BCE +:10CB20008A7688E6A2FC57D91F49D456E23D462EA4 +:10CB3000B22331EFDF8D78DE7E9586F6A479DED9DB +:10CB40008C1737B88D7D6D161E9005F5CF168A7E31 +:10CB5000D463CF166EF5A01DF66CE11C86F24F096A +:10CB60008B1ACE6FFC91F8DAB130FEEAD8B28B1A8C +:10CB7000A99FB8E76B401F77BB79FEFA6A44EA8445 +:10CB80007EDA7F0CED619CD54BA0BD9A6ADFE2E6B0 +:10CB9000F7FCDC8BEDF3FB691FDAC2DBC796DBC663 +:10CBA000BFC718FF8173B44FE7CB1F18ED9E7D6F91 +:10CBB000772EF2CB36411D8E396D7BD77435CBC0C5 +:10CBC000F703C4F049DAE76D3935ADEE62DC4F3179 +:10CBD000F7A1C259D8EF1C51DD9785F4DB2612BFAF +:10CBE0006C0379DF5FBC808C6F4B5E26653CD9F4AB +:10CBF0007C5E5A7970DAF725B6FA03EE12C35EB995 +:10CC000020EDBB71B6F29CC323A6A11F3FE7E8C08D +:10CC10006A7A763934948B99E6F96B1F1F9A04E38C +:10CC2000248403A33C18A69F9A360DF7DFB279F946 +:10CC3000A535EF37377AA99EE4CB5E9FFD3E9897E6 +:10CC4000DC3CAEF2AADB3C3F18D6DA036437D1FEF7 +:10CC500098747C8686FC0DE62FF939526D0DF1AF84 +:10CC6000BF84FB3DB23FCC6EAD247940F16FA0E7AD +:10CC70005751BE699DFC3C7C3A3DEF3FF1033102C8 +:10CC8000EF9F3CC6FD896784F0DA31C8EF474486E0 +:10CC9000FCBEEFCA599E3150BFDDB00752F8D43DFB +:10CCA00088CF614C277FE489A3FCDE9F92C7340FB5 +:10CCB000B6FF698D4CE3A4EBEB9D591CFEDB0F8C9A +:10CCC000BB02FB1D309B1FB8D87B7C9F84722377EF +:10CCD0008280B733B0612B548A3B95D6C774CC7130 +:10CCE000BBC21FCA198372A05DDDCFFD3C9E9F5E53 +:10CCF000D1A14AEE002D87F2C0005E4D3595B45F9C +:10CD000042FC7E0518B678548D4D7575A37FBEB56F +:10CD1000758E8EE5670DBF71FCA1B47C119C1FDA86 +:10CD20008107EC79236793E35F2E437F339917B62E +:10CD3000C63FD39F5B1B34DB39CD6D867EDF37F179 +:10CD40001282D3EE4009EDA3ED0ECCC911BD389E81 +:10CD50003D6F20D58FE197310B5DC17CB6B78A0658 +:10CD60005DB995E9A5B40E5BFDB3ED222F1BF57BF4 +:10CD700099BEB606D639A4CD377D2E00526E9D4B96 +:10CD8000EB873F829FFCDE9C04AECBCCF797FDACDB +:10CD900019CF133A4BF9F914D9A56B824AF9154307 +:10CDA000B2F251BFC49C682F7C5565B101606F4CD5 +:10CDB000DE903C80A45DB13D2A22AB46CA8EC839C4 +:10CDC000F0FD578BC307B01F364EE0792232D823CF +:10CDD00050BEE3C20ACA2BF8952F528D78DBA30808 +:10CDE000A4279E7E6FC1AC5A787EB524F675ECFF01 +:10CDF000CC5B828AE7EC2667E572BFF7C41D23D1BE +:10CE0000DEDC7FAC5AC267E58169927136323C1C28 +:10CE1000FAAB78612EBBC9C2478AA690FCAA78619A +:10CE200011D1F3AAC0F6C98837AD5DE0FBE4FEF886 +:10CE3000A348AF93B39C7C5F4C53E85C01F0CBE418 +:10CE4000AC09B8F71D63829AE2935A89E9745FDDF1 +:10CE50007F883CEFB526EEB19E377F5656E81C5EC4 +:10CE600095F242E5BFC377CDFEC9E3516FFD728CE9 +:10CE700093D62D8F0CD391AF9959265FF373A0668B +:10CE80007B187766561FFBDD2A037F04C7FB94558A +:10CE90003FC9E996E440CEA739D531283F6DEC9BD8 +:10CEA000C397EB719DB30F8B6A1BCDDB2E37C7EE9B +:10CEB000C9B2D1B9B821CF565699C51F0CF5969B6A +:10CEC000ECF8685B1EDAE99A3D32D9BFBA965D0587 +:10CED000F6DF5534059023FE4E3AAF33FB62A75F71 +:10CEE000A779F915F45F2618FB9B5B0C7910C7FC3A +:10CEF0004C783EDBBAFB00EE6FEED15C11CC87388C +:10CF0000D82586F15E2DE7519037F0A953EF3C808C +:10CF1000FB9D15751EA6A25E99C6E3532EF80FE77A +:10CF200031A1B953C6EF4B41DE69505F7AC01E771D +:10CF30009F9D168FBB22AD9C1E7FBB33CB1E7FBB3C +:10CF4000E73B5298EE317B8DE73B3D7B71EC8712DE +:10CF5000F18FCCA44B51CE5EB2F636947F6C682E26 +:10CF6000E60F3357FCB7485FB96FFA43485F667CFA +:10CF70006E6D16F7DFF79D70D2399DED4946F2B61A +:10CF8000EAB8360B8F66951C13C986DE90A512BDD4 +:10CF90009724A3BF2C877E86D58868DAB361EDFA23 +:10CFA00028F487F74D7E7408C6BD56791D943FD08E +:10CFB00024C4981FE57511D7A7CFFA2287306F7D5B +:10CFC000F75191AD443A005860FE58EE82ACAD681E +:10CFD000A76CC8CAE3F49788ACC5FE37CCCAA37B5C +:10CFE0004D7E2A98E7C8F55174BFE5366D08C65DD9 +:10CFF000F66CE1EF355930F4073F4729BA9891872D +:10D00000E5DF82F194B8B13E901371A4E3EC615B6B +:10D0100086A09FF8AC713FE7B9DAEFCCE2FE37B4F7 +:10D02000DF89FC578E7101F43BE1BB36BABF31D9C1 +:10D030008878582872FA4FF783A29828398CFC9A7E +:10D0400027B1BD93997E5078C66DE80781C2A4765A +:10D05000E7EFD7E818BF36FD9AA1E8C730AB7F13DA +:10D06000F9058E53B282D1F9DF1EBF6605C76B6624 +:10D07000FDC00C3F849FF71DDA0A7E4D36C6DFFCEB +:10D08000E48FFC12FD1A7E9EF565EC7FE80AD32F33 +:10D090008944D1CE7A2B6BE974F962F43BB47158B0 +:10D0A0003E9AB57415DECB398A755C550370DC2E5B +:10D0B0006A59A3901E6E160DB9DB215AEF3FC9DEE7 +:10D0C0009EB813ED982B8C73AAD9E59753DC5D15A8 +:10D0D000EDFE4EDCA087ECA6934B910E4E197AEA3A +:10D0E000948167B33CDA153D85F8C6F00F9ED31CDA +:10D0F0006AC26B053FD7750A9537ACE39D2CC36EAA +:10D10000963B06F37D6078FAD025E1FEEB5F81E780 +:10D110006E1CD7C4736DB862C6CD951CCFD217B83C +:10D12000FFC08CD7A4FBE53D7AE4EC6872D232F5FF +:10D13000A318F7B0ACCABFB60CF7A756170D142941 +:10D140002FC838871392A2B26782251F2660E0D3CA +:10D15000B84F76AB62B7FFF23C9C0FCC6776D355E5 +:10D160003184BF095F8A67A9A9EF47BB16F83DB6AE +:10D17000FC9528C3F8C1008FDFD433946FC6E41840 +:10D18000ED6FFFB5F02E86F5209C01EEC538DEC2AE +:10D19000426E1F9B7AEC7CE13DB598E70DB095326D +:10D1A000DB51C97ADD8FAA789792DA486F7F07CA78 +:10D1B0005E30D5A696C42E0C93FDC9F3AE2E10A3F7 +:10D1C00015D6F5839D40F683995FB5105339480E07 +:10D1D000F81D38CFEA016A25CFDFDF3CFD7010F77C +:10D1E000D799612F6D9A8E71F86A0F2FDFE279A6B9 +:10D1F00005F3D7AB71AF8CECADA779FD305E7F3B0B +:10D20000D643B9C8AD5DEAB1E46580DC885BEF6701 +:10D210009E971D9D86F5A6FCF8A2F2C29413DB0D25 +:10D22000B901F47425F5A7F378484A3EF41DB7F820 +:10D230009A87F3A9F9ACF3A8F6B8C5F71DC6399ECD +:10D24000C8E0393EFE443AD9BF7E22C9DFAD788CB2 +:10D25000822CF204D9AF0BBFC3F36C46B1771A51DD +:10D26000EF6E31ED91343F2F9D8E4A1E0BCFF806A5 +:10D27000FA11288701FED9FFDD347F8D90A22F2778 +:10D28000D2173C633E637ECD22E987BC3B199DBF2C +:10D29000DDD691978B7EE22759DA12CF8414BCF742 +:10D2A0006669B7A5C13F9A06FFE5E703FFA15EB730 +:10D2B0006E85A709BFC346FCE957463CAACB90D36D +:10D2C0002149BB0BE7D1E450295EAABF2C513C2673 +:10D2D000131E33C55B4D7C997260818FE329F5E4A1 +:10D2E000F2F6B091275532894DF6E7A4FADD60E0F9 +:10D2F000F5B0716E247DDC073CBC7D765372299DB0 +:10D300007732CEED875AFDB6FCE5073D8211D75046 +:10D31000452E9FFDF4AC75703D316C129BE2BFD081 +:10D32000129F33C6ADCDE2F5E9E33E62CA2FE9A410 +:10D330006DDCD276AEFFCDEF767ACCBCA6B0C8CF8E +:10D34000AB6A346EA895DFCB356C058F1BAA1DC95F +:10D350002AD427872B5E2CFD1EDA3FF965E3F87E81 +:10D3600061B211ED31590F89687F3D63F4F7902365 +:10D370004CF754370B02C37B98B5C2AB74BAFF4469 +:10D380007351DEA9E2D53FE6F298DBDB607F3F8395 +:10D39000F894FD319BFD6DC23D5B66D39C967B8608 +:10D3A000225ED1E6B799EBAC0D1F99362080F6B618 +:10D3B0009FE254574EE271D7515A21D939EB8C76FE +:10D3C0003BB6FBAFF3703F2C867EEB1867D7B25F9E +:10D3D0004239BECE11C673DDBBB66F1D85F7A07492 +:10D3E00030C6785CADFB00F6BBE93A1E571BA4358E +:10D3F000FED32DF01CFBB38DB32E80F7C16F8A14C2 +:10D400002793BD21EA7FD7F6FBE8FD0F63017ABFC2 +:10D410006BFBEE5CBC67E1C1FBEF9B3902ED83ED7A +:10D4200022E5A1EF4A8B9FBDEEE1F1B3B73D3DF19F +:10D43000336D54A5257EA6CF48A4C5CF34ECCF12BA +:10D440003F7BDBD34FFCECF71E337ED6E1C638D0F2 +:10D450002E2F8F9FEDF2DE47726397D7883F6922A8 +:10D46000EDFF3DD8D531EB02E8A72966C6BF3AB239 +:10D47000BE06FDBCEBE171A83FA2BC9E606DFF96AD +:10D4800080CF62B37D7707C1A16989197FE3ED3F42 +:10D49000F2F0F8D9995EEDD3C657D7F3F6183FB33B +:10D4A0008CFF17A33D9DA9CECF3C3EC2FD260B7F2E +:10D4B000FCB731EFB17B3BAA11AEA38D7B54466E16 +:10D4C0008F92CBE693122ED4579B1FEF48529C4C61 +:10D4D000926308E77F35F697473EBC88F25037A73E +:10D4E000DD23ECF7727E1BEAE57CBC7FE31C86FB48 +:10D4F000BCCAC6B98407B68211BE473EFC67C13AB2 +:10D500009FA18B789C6FE4C3CB5F1ED58F9F3CD4CB +:10D51000EBE4F73C2F1275233F7BA837BFB79F7C06 +:10D52000BA6651354E7B4C333F3739A6BD85F2384C +:10D53000C6ECD145E45FF5EC78C6E07F43CF56906A +:10D540005D557CF6122A2B672FA6F24EB1BB11E176 +:10D55000A28B8CE235CA0699FCF2A1FA385B3C66D4 +:10D560001DDA1B6857D54FB6F9B166FE712639BC76 +:10D57000292D3EB3D988CF0C635C8E6F3F348CEE7F +:10D58000CB31EBD779B93C1921B0087EB7D990DB04 +:10D5900066FDBEC61159188FD8DA31A7DF38E626E6 +:10D5A000239ED3D3DF5D3C7E4D7F189FF6F37B46F1 +:10D5B00036AF5870DF4C2CE74EAB44BE5DE7E579E3 +:10D5C000849A6B7D7ABC609DD712A7105D3CAF71C9 +:10D5D0009D97D3B3A90F00F4D3F0BECFD47AFA96B7 +:10D5E0005BE63C3AEACC7B727879507420E989B5E5 +:10D5F00046BBD3350708BF41A9AB7A401FFB37E7CD +:10D60000C2EFE362B730DA8ADFCEBEF1BBF61F8429 +:10D61000DF4D69F85D6BE0A33C237E1D59C847F1DF +:10D62000FAFEEF3F36F1DBD35F46FCEECBBBC282A6 +:10D63000DFB599F1BBB62FFC8E7645D621DF697236 +:10D640009459F533E8A766AB7E1AE64BC3B3A1FF46 +:10D650004DFD343A6ED74F23513F09297B63CB965A +:10D66000F0E02C1EE720F953E6642FB92BC92FEC0C +:10D670005E0922FCAB53B6907E1A8822CA8FFA0943 +:10D680005429EA27DCF781F96ED8D2F2F1CB50F7B2 +:10D69000A38DCB48AE98FB38BFF1F2789EF9BEF06F +:10D6A00056AE9F1EDC087AA932B35E7ACCCBF5D297 +:10D6B000D3DE9E7BF512D8FE0BE8A5A7096E19F400 +:10D6C000D2B3DEF3D44B1BB9BCCCA4979EF11ABFE6 +:10D6D000BFE0CDA017CCF619F4D2F346FB97BD19E5 +:10D6E000F492D93E835E7AC9CBF5CBAF7BB5B78FC9 +:10D6F0009FAE978E18EDC63ED6B10FB7361DAC2B38 +:10D70000CCF7BDD92CA483768433F0EBE6673AE2FC +:10D710001E8B5EFAB1D0316716DA130522D9BFE944 +:10D720007AE96D432F9D36F5920E7A09D7B11DF433 +:10D730005220A59746EDE85B2F8DDA216795F5A37A +:10D74000974EF7D64BA7FBD64B5C6E95197AA9CCB2 +:10D75000D04B65F1AEF3D24BE72BB716F8FE67F46A +:10D7600092E91F64965B5F4C2F99FD6DEEE4F7C95B +:10D77000A5E456F411BBDC5A3411F975814FCA2463 +:10D78000B716F8FA905B94B33D21E52F00E89BAD06 +:10D790007A69410679752EBD34CF67EAA545865E64 +:10D7A000D2FF2ABD74BE76C7BC7F107ED3F5D23CB3 +:10D7B000DFB9EC8E2FA697CCFE366FB0E377EC1E68 +:10D7C000C0AF90B23BC63E05F8A57572FC8A2EBE6E +:10D7D0001F241BFB4180DF793E4BBCC5B947D7D125 +:10D7E000041EED02BCF33820E581A5C701A7E03A8D +:10D7F00031EE84F7A9905A4952FC4031CF01A6C5B9 +:10D800000BC0AF1350BFA5E7079D2B8F6DF6C43B30 +:10D8100089DEFEE4D296FA2C7101C91D59EE23BDB2 +:10D8200069C4AB7AF2D674DB39C096D439C0B8FD7E +:10D830001C20FFDD23BD98FF5E570EC6A1282E6772 +:10D840003FFFD7E4BB91CEA1F575FE0FE196F1FC49 +:10D85000DFC87010E35A4DB9E6BD8926FFF17B3170 +:10D86000B32FF93449E7D9FC13C7237EEEF371FFD8 +:10D870004CABEB757FE97D56FEEB3937699CA355C0 +:10D880008CAE5B0AAECD749EED219F850F9540FF57 +:10D89000E7D9F266566E4039BE4C90FCB83FD624AC +:10D8A000F07BBF74212BBCA30F3EC478AA0A7CF77F +:10D8B000335F898DDF572911D2CBF5C705F27F8100 +:10D8C0009E1EF3913E6632D293396F8C6FE27C4E8E +:10D8D0004AD14EACBF67F2FBC7102F1F3EE5A6DF53 +:10D8E000E1BA5D4D5E394CC57924F83D3545C63DFC +:10D8F000352CA627F8FC38BD19F188A63B07F37331 +:10D90000C685407F96F38777E7737B6093EFDDF9F9 +:10D91000B8CFF56F86FCC2BF423CBF67D0F742BCB0 +:10D92000C07D18E63D76539ED83CD645798E4FB8DB +:10D93000A2FB717ED7B318C5B5567AC65E8AF3FED0 +:10D940007BCFCBC4C3E99A69841CBD5AD3914E40A6 +:10D950008EC5309E8AF900D6FCDF55C6BD27C98624 +:10D9600063DA299047C71B92DA2905CFEBBF47E559 +:10D97000EF65475E47FC2B8118A614B1F9FAEBDA84 +:10D98000290B7FBD901D4D62FD0DB193DA29DBF9A6 +:10D99000EF3FD8BE33DB9B716BD9809779DF1BE0FB +:10D9A000F7F756397246D19D28EFF34008613CFAEB +:10D9B000B44B2079C3AA99EE80F2D400CF179DC151 +:10D9C0006232C2B38675D0F38BCA8759AC93DAD56D +:10D9D000B22E7A5EC9BAE9097A4AE6F9A6E67D6905 +:10D9E000F5A2F5BE34C9C5F363F56A5616F3A6EE83 +:10D9F00029D64AB9FDEC56D5AD56FD2417AAB4DF99 +:10DA000026650BE6BE96943DC1928F3ECA41F875DD +:10DA10007B757EFECCC837A7299458F1C5CF09AED7 +:10DA200033F2CA95A04676A0ECD7286FCC51CE54DD +:10DA30009407427927F9FB9EF24410CFF3B41BF709 +:10DA4000F4A6F3DFAC6CAE071A2BAEA5FCE8769F0C +:10DA500068DEFBB001EF81B8C3EFA0FCD103B9339E +:10DA60005CC93EDA377BABE93C7968D20C17EE3300 +:10DA7000361DE5F23C93FE7176482C3100F7C3E782 +:10DA8000F47B5EC5D9CABFCB54DF5CC85A851C1C69 +:10DA9000BF7F7DD7D4603F87DD5C14FB1DF19BE425 +:10DAA0008D4993B1AC05F1DC907EC2E347FE13B221 +:10DAB00027D9E4F1D4E20D2B23011CC7808BAC1DC8 +:10DAC000C2AB3AEEF8CD3759BFEB3C2BD0FC37B99F +:10DAD000342D1BE0FB7CC544B273A5D2049DD7F660 +:10DAE0008635BA67590E74D2FD670AE00DF3C8CFC8 +:10DAF00085AF4036B79F1D01919559EF1B08C48330 +:10DB000078DF93ABCC4177746657DAEBDB8CBC7271 +:10DB10009791F76CF6E730FABBCE7822EDE0BD2C9A +:10DB200092EB20D137DEC447E791B01FA8BC219B00 +:10DB3000CBBD1FB8B47FCE9ED0BB3EA547F9792D93 +:10DB400083D5C0546914F15CF327C6BEBF196F1F9B +:10DB50007A3F8FB78FD49B45B4EB41186818FF1CF0 +:10DB6000CA6222E6ED0CAF7275F3BC019DDA0F3389 +:10DB7000EE091D19B7DFF3176AB5978719F7860DF8 +:10DB80006796FB01017FC38EFFE138EE530D4B7B9F +:10DB90006F9EABC9743F757A5EC08A6CFB39ADF479 +:10DBA000DF174A7F9AFBFEDF14B5950437233F79D0 +:10DBB000D39DD7AA7DE95D138EAB72276A4837CD16 +:10DBC0007781DE463E4FCC24FA9140CF90BFA40B24 +:10DBD00015688F482EBF83E27ACD50C6E978130AC4 +:10DBE000956346BDBF8B9797F3FA9EFE7D33A8FFE2 +:10DBF000A6BBC2D4BF94B898F7EF053D3106952D6A +:10DC00003BC8F83874EFB7ECF21F647C1CBA175CA1 +:10DC1000F6265E607C1C5EEFEFE2E5E5BC9E22D658 +:10DC2000485FDEB85205F0397BF2F27EEDE2DF812B +:10DC30005DDC6CB9EF30897631DA437777CFBE0699 +:10DC4000FA5DB06218FDBEDA82C428FA7D0B33DFBC +:10DC5000DDD45FCAE4F7A6A39C32F5D83C99D1394C +:10DC60005D134EF35C7E3AB76AC2699E37B18ACAC9 +:10DC7000069CE6F9BB78D98093A907CDF9A4EBBF40 +:10DC8000EB5AB72818473F97FEFB7A70467933F175 +:10DC900093FC5FA8BF51FFE17D7BAF1AF77599F840 +:10DCA00030EF2DCBA48FA3FA52DB7E84B6AF600693 +:10DCB000CE17EC71CA8FC1F83CE2CBE1E7BFD78A3F +:10DCC000D70C71FDC3B67A42F83BA306DD14F27B94 +:10DCD000DDE71BF5A9DF194D2883105E653CBFF712 +:10DCE0007AACAFC4DF1735EABD5DFCDE1A2FAFBFDB +:10DCF000C1682F798D7A7F7C15DE3B6EFE8EE775CD +:10DD0000467B4790D79BBF7BBA2ED7FE7BAFEB728B +:10DD1000F9EFBBE2EF98FA2D651413C140AAEC00AD +:10DD2000B747B5D47F0FE805E1B22ED7E837743096 +:10DD30008EBF13716F430D7F3F9FEF1BEAB3793E98 +:10DD40000CFC252E83F2BD950EDB3D2AEB329CCFD9 +:10DD5000999563C42926F0BCC8B6529E17D956DAE5 +:10DD6000BF1FFDFD067EDE12F7F7F0B9C6383FB5DE +:10DD700016CF4BD17DA8FCBCD4BE5113691FD5EC86 +:10DD8000F781A13FAEC17BBEEB8F4A0CF32BEB8D2D +:10DD9000FBF23AB46A37DE9BBEA6B4C476DE7A8D57 +:10DDA000CCFDC696343D77730ED7EBAB26BC46BF91 +:10DDB0004B2B7BF93DFF52E2753A4F2E553A985B5B +:10DDC000F8FBF1B9C9DF267DAEEB9157409FDC5FD0 +:10DDD000E4BF833B61069D1344FA1CF9B7D0673951 +:10DDE000CF7737E9D353FEF7A5CFB65CFBEFE8B6A4 +:10DDF000E5DA7F5FC12C9BF469964DFA34CB263E61 +:10DE0000DA72E341EBEF2FB4CD178DFCAA6DB6DFCC +:10DE1000296EFB6C1BD95DFA04479FFBC767B3797A +:10DE20007C43AED59D6817A6CBA373C9A15795E8CF +:10DE30003539F9785B50F879B417F415028DD3AA07 +:10DE4000E8C16588AF29FAE5D86FCE946EA52F7D1D +:10DE500006EDAFE7ED39DD99ED5A15FBBD81815A2D +:10DE6000E04BCB3CFC53801F2DF348E9B995B67BC2 +:10DE7000E1D2E56326BDD852779F4B8571D718BF95 +:10DE80003FE9B8E67E57A965BE77E4F038FA1A2F65 +:10DE90008F6FAC9E7B9FABB4BC8F7ABF688B2B9B84 +:10DEA000CF9C1C99C6A9675DC42F0CF805ED43EF04 +:10DEB00057F67595027EEFAD2DA138F5FFA7F7BF98 +:10DEC00091DE47BD1644F8B57D26515ECDAC9C155C +:10DED000AB31CFE67CEFC37B213BF278CE84941F3D +:10DEE00096C91EFDDDEC930F633C42C7CB662F4DF8 +:10DEF000F523FA2ABB70FDCB1AF9BDF099C63BDEBB +:10DF000000AEDDF0DEEF930ADBC4EFB163BA027658 +:10DF1000EB094C5F0717F3857B4FADC67CA013025E +:10DF20002BC6BCBC4F733EBDBC15F8E238EA77582F +:10DF3000E76FEFFD23ADF3B8712E20BFC3DB8ADF9F +:10DF4000FF4E800963BCE45B1E330FA70ECFD39C4A +:10DF5000F87611F95537385931C6994E64B1E27ADD +:10DF60005CCFB77DE6BD3584C757AF1DB3D59AC723 +:10DF7000E1F673FD7583F17B82E9F3FF738E68C46C +:10DF800031BAC6F0BCB0E8046BFC36FDFCF50D31CF +:10DF9000412BB5F071CF7C973A8DF34E7CBEC7977D +:10DFA00016505EF7F50E3EDFE36E982F7DE7EE77B5 +:10DFB000BEDD395CBE99F7EB3139F6CEF7A15DF2E3 +:10DFC0009AD1140F05C1F026968F5F33260FE161B9 +:10DFD0007E9F14787FFA351E631E9CCE5FBDB68887 +:10DFE000FCEAEBCDDFE16089226BFEE3AB39669E94 +:10DFF0000BAC9BE7217278655AE7B79C76BC7C8BAB +:10E00000AFF3065C27CCF784DBC0CBB7DC3DBF3376 +:10E0100088F3FA7F881F1E80008000001F8B080095 +:10E0200000000000000BCD7D0B7854D5B9E8DA8FE5 +:10E03000994C9249B2934C92C97BE781040830090C +:10E0400009068DB813028D187490574094E1A5B459 +:10E05000A246C4D34169B3431E84083558B1542540 +:10E060004E28B6F6DC5A53AF9E72FCAC1D1E5AF415 +:10E07000804644A45ED420D6AFDE43CF89202DD77E +:10E08000D28FFBFFFFDA3BD97B92F050CF3D377E3A +:10E09000EDE2DF6BEDF5F8D7FF5EFFDAF3DEFCF1C2 +:10E0A0003B3B04C62EE0DFF58C5DA50090C2D86D29 +:10E0B000220BF41433F8EBCD9E3D7EB0FEBD04A8D8 +:10E0C0002F67EC6C8242ED180B94FBA1FE2381D5E7 +:10E0D000537BB9E14FDBCA18EB9B37AEB44345988D +:10E0E0007D84F087F3C72721DC9B20D2FB7DD00DF8 +:10E0F000F330A6CF8B0D3D9347ED188376EFCDCF50 +:10E100000E75E419F5D7307624E1AB8D3AF4FBB106 +:10E11000C074ACD7EF33DBFBEB97027C7C4DB6AF22 +:10E1200003C0C5512CC707ED8EC7B09C20B65B134A +:10E13000E77B86197F1EECD7BECE7285AF63B1C474 +:10E140001A7ADCD8283C7E76DCB7B0CE797C9D92FA +:10E1500032C23A19D3701DF316C4761BEBACE7E359 +:10E160000F8FE728181ECB4B8D7B1CF10BA08AE389 +:10E17000A65CC9B8C3AFBB10C7A575EB546EC47F0E +:10E180004E61AC3BDE5FAB207D3C302F2500F33988 +:10E190009562E0272B89B174AAFF9FC9E583F57AC0 +:10E1A000B5BAB506F7E34DC9D70CCDD6CE5A9BCD3F +:10E1B000F2193B5A29D78660FCF864B6C4EF1E1CDE +:10E1C000FF0F8A44E3FFC15847472363A1D18C6DF9 +:10E1D00086924119DF2C844558577FB618DA09EB2F +:10E1E000F85B63113DEF285BE37A1DD7972D8A0218 +:10E1F000E0E56F0E3DCA5F4CB03F04E596EA9855E6 +:10E20000589AE36C497150FF2753AAFE4581F17C6F +:10E21000EEBE6A44D944055003F363D532D1A390CE +:10E22000C5424837CDCCCF580122A146F90C8614FF +:10E2300058805D881DEC2FB2C48DC176F8770196A9 +:10E24000F46E35A7EFFE7971346FC6FC2F4948EFA5 +:10E2500062BCD881F38E62921BE178D5D702F3FFBE +:10E26000B5DCB72116F7CFC37CCF001CB71D2691B4 +:10E27000CC587BA3178882B19E845BD6E1BC1788FB +:10E280008107705E7B26C750FF7FDD12158A82FEF4 +:10E29000FFBACEF7D14BF0FE5F616F751F6387C584 +:10E2A000D28F5E44BC258A6C27C233AFFDE8256857 +:10E2B000BFFC71116815A6737ED2EDEF41FDC90C4C +:10E2C0008975003CF1155F0ED2CF320F13A5445A69 +:10E2D00046BC0843C717F80EA8D84F93E4DB09F3F0 +:10E2E000727ACF689F261379C58B158C2DBDE18C72 +:10E2F00003F7F776D6EB60B0EEC54CEB790FA6BE10 +:10E30000CB13D8AA103DF5AEC27E5B60BE88D79312 +:10E3100089BE9C35B02FF95F007D7A90E65C9C5EEB +:10E32000FB194B00F8843EEF19A45713AF8174D842 +:10E330004FA017977703AB877A971A906872059C5E +:10E340008EC678024F235EAA5D25FB15A85F12CC0E +:10E350002B95609ED33D557222C08BD772787E1468 +:10E36000F03D8C1BE7033A33F709FE17AD66D8E0A2 +:10E370005F1A7C2CC3DA83A550BAE51351F150A182 +:10E38000C8FD7D2EA35D3EEE235B85FCE45DBC8075 +:10E39000DD62E1E3170D3913040451FD5A7BBD839F +:10E3A000C97FED437A42D94474C161A4B00B446F74 +:10E3B00059CA67B1837464D229D36455998CAD90DE +:10E3C000E939DD3A44240D834E359F0BE595855E92 +:10E3D000850BE32E9F5EEF36E48E5EED7B87F8F7CC +:10E3E000B083F8F77D87FA484DDE503EDC1858EFD1 +:10E3F000128B87F2EB207FDE92A2123FAE5942FBD6 +:10E400007C425047C1E495ABD72BF83C6AA993F600 +:10E41000D5E453933F97270FF0E92B285702EEBE20 +:10E42000E9C8DF28CEAC7CB804F9561C996F1731C7 +:10E43000DF821A8097ACEF9E8EF5B7069982746DD5 +:10E44000F2D5A20A972EC1BE2EEA6BEA952640B9F4 +:10E450005E609F58E8E0C205805D367C299FB90662 +:10E46000F175B9784D9859B21DE93224391B841CD5 +:10E47000809D5C4EB3F971A167602A6D714E8295E3 +:10E4800005E34251085FF5EFAD69305F254DF14579 +:10E49000A92847FA5F43B83F9111FFB5352A240FE9 +:10E4A0004C7972D49027A69C00B9427CF5DEA2F18B +:10E4B000A116E8EFC78D2A0BC07E7C64E85B7D71F6 +:10E4C000348DDB01FB84CFB735FA5880CB17472258 +:10E4D000E0DBE1F4312FECEFFB426FC33E6CFFC792 +:10E4E0005886F268EE9CE5CFA37C4AFCE33822C252 +:10E4F0002D93BF97CB8A51EE04729562EBFA4319C4 +:10E50000283740E364A07C0062CDE430339E0732BC +:10E51000F9F310953B806E3E812D8F4BCE23FA830D +:10E520007D36DEEBA3F79484DE68C2579A53798672 +:10E5300088DF578EFA6B8713F8BF7828FE6724723E +:10E54000FE9D2375AA0C5095B7B5B356063D96B8F7 +:10E5500035716B39C8C151004F1F8BF5FE63D70F62 +:10E56000B38F3350F601FD3DDD7840FB74D4E0F30A +:10E57000DCF50D4200F82B6DB1DFABC3F8ADFF90B9 +:10E580004417CAEBDB580FE2079F3759F8DC97C8EE +:10E59000F519B423BDDBDAE4F72659E6DB2A08A433 +:10E5A000DF5BF744D3FEA7D5DDB62B5AB0CE43A62A +:10E5B00075B436713B207771BFB092FA6910D0EE16 +:10E5C000490BAF13549887BA98892B2CFDAAEB619D +:10E5D000DE163A6E15420EEC3F711D53F412907721 +:10E5E000CED074E4EFE85B623A9B003F8B56733AFF +:10E5F00037DBE3DF2716FA6DFDC71C91E8E61D89BE +:10E60000E8667FCA5522F52730210AFAFBB2664533 +:10E6100015C25FD6035520BF25727B3212AF3B6116 +:10E620009F75A0B35D8D2EA603DDFD1CE818E16784 +:10E63000816EB1FC67A0532C7F057489F5BF06BAC3 +:10E6400044B8A7B182E0171A35825F6CAC25F85F39 +:10E650001AFD04EF6EACA7F2E5C60095AF34AEA28A +:10E66000FA571B1B080E3706099E63C8FF699B6497 +:10E670005D84F5A469193B516FA63D25FF7215E233 +:10E680009F81E007FAD867EC5B9AF7962D47CA900E +:10E690005C450664C0DABC9FD41FA176537DC87761 +:10E6A0003FF74B5F1C223CC4FB68FFE63647BF8741 +:10E6B000FD064405E5D54E872A25037E9E4F3C5C2A +:10E6C000EB1A437CDF9C04F87E7EEB7F6C42785231 +:10E6D000D917DF7B01C67B69EBFBED2E948BD7CE80 +:10E6E00038AC12FC41BB0BE65550591587F361FA63 +:10E6F00007EDFBE1BD9B7A9183685B7494FF5A4000 +:10E70000207B19615721D8CD81355535D0FEE5AD37 +:10E710001FB73F060F9F703654D594A0BEF9B07D49 +:10E72000EE187A5F4E55A8FFDAF1C2607D8AEBBD24 +:10E73000F6B9D158AF1C1ACFEBDB6B0005EFD41440 +:10E740006CC07DFF6D3BF349309F23F9FD7239CAE0 +:10E75000A12DB0368B3EA53F5C7FADD2DD210CC232 +:10E76000099A4276E776831FD398FC29EA39510744 +:10E770003D07EDDEAD4B160240CF89B5FCB9497FB0 +:10E78000091AC0367AB4D44B23EBDDE949DF4CEFEC +:10E790004E4FE27C7F249FFB1DFD5531A19DD0761D +:10E7A00005F2C328A40B6EF7761A78E8FC91CA50DC +:10E7B0003FEE4B54CDF7C2B86EF3BDC876D8AF6804 +:10E7C000A937DF63E7CF50BB56C02BDAF39DF96C56 +:10E7D0000CDA47D67EC5B291FBB5B463D2C5C76724 +:10E7E000C245FA31F1D4E9D4E2CAB19FE932E99BDA +:10E7F00054592B473B317571BE4FC7F9C5D8EDF75A +:10E8000084E4EAEE24C07B7712DFE7CE1865760D4C +:10E81000BE7F1D7F9F3DBB7426CA9B7F7A4264E802 +:10E82000BF78647503E2C9D3AE94E8640FF2F7626F +:10E830003C2B6EC1E731DB65A6C2F358A63B52CB39 +:10E84000B0147C61A40B67E7F454D4034E81ECE36D +:10E85000B28AFB6E2C83F279FFFD73E6C2F3E78F79 +:10E860007B7CC8177F4FE6FC5B3231AE01ED8B1B22 +:10E8700027664F5A5E4CF2CADFE31E2A9734836E36 +:10E880007631568BF542D7B106B2ABCBDD02D9D586 +:10E890005F70FD76DA98E768275F3FAC94ECE3267B +:10E8A0002FC8E9AB81AED37939DA19F0E33A46677C +:10E8B000C80CD7E7FCC7D52ED453CDE7A26A0DBF4D +:10E8C0008FEC6667744049443B78AB487E5AB3127C +:10E8D0001342DA4C882B257B9B55893E943B09D704 +:10E8E000C9C44F9DEEF921E4C347F644537B479CCE +:10E8F0002B140DF02EEDB45208F5BB2A6505D7BFD9 +:10E90000AB7D2E8DAF2BA2328A1B8BFB4795613BD3 +:10E910006F3FDAF9094298EC00F60023793EFFD602 +:10E92000F132B66F16947EA984D84C95C1CECCC472 +:10E930007F01CD343B7AF7ECC0FEA64429CF28A452 +:10E940007F0F95A13DDFA6F8703FAF510EEFF91D87 +:10E95000C29ACB9F0FF2C7917878CF87D07F4B3D7B +:10E96000EC1CB4EFD4AA5D4B494EC8BAC1D7C285DE +:10E97000286C2F923F88F5CB112F2DECF54218779C +:10E980001ACD009E2B2F0879D0AFE36ED0E100B7EF +:10E99000245DA32E75E3BC06FA213E9EE6DE4DED16 +:10E9A000E0AF5F00BC662AA5720EDA4FE0D724C044 +:10E9B000FE64BA1D367992E772D8E48DC3A08B6BE2 +:10E9C000FF6C973BD956B903E35C67D049247E229C +:10E9D000D795E9591B8DF3C97439681D91F3CDF4AE +:10E9E00094C9DD65042A091588BF17AAAA005635FF +:10E9F000573FCAFF4BCDF75AF0C414986FAE6E97CD +:10EA00009B91F3BD465B135D08FD5EB358C469C0BE +:10EA10007B3DCDF85E82B15E9033363E3E99281143 +:10EA2000DF003FB7274159D02E826219EC7F1430A6 +:10EA3000BE6E196FF4F6241B3C2694616B3FEED931 +:10EA40007C5BFDF89EB1B6FA89BB4B6D7049F81A34 +:10EA50005BFB4907AA6D7079EF4C5BFBAB8FDD6206 +:10EA600083A7F42DB2B5BFF6CFCB6CF5D7F57FCF2A +:10EA7000567FFDB93536B88A3D646B6FEA37294E4B +:10EA8000D605D84F3931A95BB2F8A5771BF26EC015 +:10EA9000EEBD4CFF3098C4EDA3AFABA7A2BCA0A8BD +:10EAA0002CF38C8FE5FB7829BFB6CDA05F4F5D3E80 +:10EAB0000B58DE8F2D1ACB029676A9734B6DF5910C +:10EAC000FE68EB3F0AC8FE43D9F60CD8CA2D29F3DD +:10EAD000292EB726CE45FECA9A37E61D433DB466B9 +:10EAE0008A53457B70A5B1DEEFA56A9DA827F2DBAE +:10EAF0009D4C07FF6BCF146718E55082DB497E4FB2 +:10EB000082FBF100D90D852E86767042653F437BEE +:10EB1000BBA5B15D2B0456EA6CD4B54210888E4A71 +:10EB20002D8CF69703A49D08E32995CA1E84951A97 +:10EB30000EAF4C5269BC440DDA5BD6E150A01FCB3E +:10EB40003A0F8B22C9D5FE2D51E4CFCA8A8FE2231A +:10EB5000CBDC8CE22327678DA375B6A0DF947EE91A +:10EB6000F849B3BB94E2277D46FC24BE40DD8272A7 +:10EB7000B2BFD5E1DB09CD9780BB8E7EE96D2C4C11 +:10EB80006525EB95B09CCAFAA9DCC51AF2317EE284 +:10EB900070EA5206CCE7BBBBDEA1B8C994B2182616 +:10EBA000F178CACB883FF9D659452877CC38CA13B3 +:10EBB0004EFF9623149F71905D16983DFED15A80AA +:10EBC000033F157D28FE5B14BECE9FE88E6E49186C +:10EBD000E47B7053493E1CED282C45BBC323FBABA3 +:10EBE000703F3C731541477C187A34C65376408594 +:10EBF000E7319DB24F457A616A35F6170B76611899 +:10EC0000FABB255FDDDB8CE3470BCA4EC043E66AE7 +:10EC100075EF0F004E57F27D12C8B3AC8686475D84 +:10EC20006588426F3FE22DC1097A1DE5F5E38CE26C +:10EC3000B52D2957553B915EAA5C5F60EC73CD1BE7 +:10EC40000ED26F6B7E2A87907ED25772FD97BFE3FC +:10EC50002AD27FF1AE7D147F3A19CDE3C127B7C424 +:10EC6000FA9A61623F12D41605FD946EDEEF0EA48F +:10EC700017A09B9F1AF433C6DD2DA2A934CEB3672B +:10EC80000396E3B34E8868F24D2C149A91644A8A35 +:10EC9000F3A46415EDF2AA662CCB2B974A1E28AF7D +:10ECA000AE11E45468773A299FF0B170C56CA2EFB9 +:10ECB0002AC5ADE27C7EE45077360B483330AF494D +:10ECC00023C705A4F8DD64EFB2D5F2672827805684 +:10ECD000850B80E2AA6437F141A6C10750D27A338E +:10ECE0003DA0DF910F9C3D7B103FEC1EF033A1C88F +:10ECF00059DD2768C5F8DE2B421FEAC3F0BF921F1B +:10ED000098BDBA738F13FAC95EC14A304096B13AC2 +:10ED1000242C8376396B751BDD8FF104E46458472E +:10ED2000C68A761B7FC4BB5E27BCB6A0DC82F78E8A +:10ED30002AE218B41713ABC696A22CC2B8EDECE2C7 +:10ED400041FA3968F849870C3A31F58669470FD896 +:10ED5000CB63C1CF06FAFE797FA0630CCA0DDDC17B +:10ED6000E3F4FD6109E37D811FCCA6787E8E115707 +:10ED7000BCFDCBDED604808F3AFBF725E07EAE11DA +:10ED8000A8FDCE68BBBFBF2499CBB34546D9D501FA +:10ED90001604BCD8E5E4F3A73FE83F777F12F921DA +:10EDA0002449612343F80FF4FB93B9FC9EF08A5287 +:10EDB000CD603D7961652F95078D723F94C3C4176F +:10EDC000CCB2BBC5F326D67733E54DC55AB624C5BC +:10EDD00006C60FD3FE4377BB00F3EBCE33E2FA59FE +:10EDE0004C43FCE6B57AE89C0227160770CEBA427F +:10EDF000F2A3BAF39447C9EFFE410C433B4D0DCA51 +:10EE00005A74FCD07E7319D8177C7F45F4AB98CE2A +:10EE100061176B6F42FA9AB87BA0DED0B37678D2D6 +:10EE2000013B5CDE6B87AF3E66878F19F8062FE9E2 +:10EE300028DA6B2813F0FFD4BE2F04F4535EC748C2 +:10EE4000EE140628EC6FFA0EE07F11D835281F2348 +:10EE5000ED9545C73F3FCEE269576CFEDDA2E3B1B9 +:10EE600027C478D4E7767B6CD1F1BBEFC6F68B2252 +:10EE7000EC9C936EDFFCA5506A8F051EBD01C65B3E +:10EE8000A64B3E01E6736247EA550CE3834C49C545 +:10EE9000B8E81864668C27AE33E2C9417B3CF9615F +:10EEA000DF618A77CDFF6314C3F7A74B070F34A246 +:10EEB0001CCA96D5288A5BAE7E3A16E08D588F76AE +:10EEC000739E9A4676F41B0E86F1EB8DC679CD467D +:10EED000073F6731E39941035F6B4DBC313D96C7F6 +:10EEE000B7C2B1E83F4CDCCD58B1052FF0E7E6F5ED +:10EEF0009A1BEB4BC291F55A7CD564D31485B2AF03 +:10EF00004AC2F8A28977A8277882C6FA3B400F95B3 +:10EF10001D913FB1E231ADDE0E4F381EDDBC18DA77 +:10EF2000BF55E522FB9949A7F6A23D7F16EC7994DF +:10EF3000DF138EC749C8474745DEBF8FC1FB16FCAC +:10EF4000A7B2136218FDC380BB2184ED23EA83C7F7 +:10EF5000DF99B0DF36FFB00BFDE0B849229D07A472 +:10EF6000B106B267B725C779C8CE2866C54807D3AA +:10EF700025B72F8CF87F4FF261B833EAC4E8F797D2 +:10EF8000A21C7C4762280F926E58EBC57E4E6B6EBA +:10EF9000867258896525256E8C3FF74ED80FA87F5D +:10EFA000FC828FB53806E3CBBF6E640CF5404FA3EF +:10EFB0008BA11DF142A342F08B8D5E82FFA551A56E +:10EFC00072776311952F37FAA8FE95C60A825F6D96 +:10EFD000D4080E37D6127C32A58ACEBD8E433B8C28 +:10EFE000773FECDBA94C43FAC9E6F19F483E9D7799 +:10EFF000DFFDAE05C007339551B52930DFF90F4865 +:10F00000463C6754ED9E424B9C3B22CE3F18F70690 +:10F01000FE1E4771EF800B54D1870AA7E781F8FFE6 +:10F020002A1EFFBF743FFC5C00E3E78EE1FA31CF9C +:10F03000118ADE696B87F56C62AC01F997C9BD6D09 +:10F04000A8E7A3F364824FE120FC7C674601B48B00 +:10F05000423E0754B85EAC62C8774E476F03D28D0C +:10F06000B3DC4DB622F8C5BD8DE817C78B2ADA1779 +:10F07000A63F6CFAC191FE8825BE60D32B6021911A +:10F080003C8A71095C7F32BB7F75039E4DC17AC695 +:10F090002AEFEC4DA478DBFB144F2BF67E519DE458 +:10F0A0001B8427A889FB922CF5BEA29269C916B8C9 +:10F0B000C825FC66B9251E571857BA37D9021FC193 +:10F0C0000179FC4D433DF05F1F9F33FAD73F68D76E +:10F0D000C0247AE7B848FDB7427B1DFAFF3891EFAC +:10F0E000E3FF48F96D12C66FF4E7648A5BBE96F2DF +:10F0F000DB0CF2AF99F2C1A132D417F13E3C2FE8FC +:10F10000CED3C518D42FCFF0F346F41544AB3EEA66 +:10F11000071EF3D8F4D161B2FB0D7D9493C8627CD5 +:10F12000C3EC97451F49E4BFA84C754EC6E78CE871 +:10F13000C2AC8725842F18F142D4CB545F807A4229 +:10F14000D4A227D8FAA17D2D0A59F699A17F69D7B3 +:10F150004BE37BECF07F95DE33E96B8BDCEB42B964 +:10F16000B5E5FCF074BBCE63CAFB81798B17AE1E8C +:10F17000C4470E3EC9C792D76BE012E13A976D764D +:10F18000D8C65DAADBE1DBD7DBE1C56BEDB0653C42 +:10F19000D2A7570E871CC8FF9F829C44B966EAE934 +:10F1A00015ACFB35D40B77805E4039BF92855EFB92 +:10F1B00010E03BEB635918E8D681F9234867BAF6AB +:10F1C000BED52EB8737BACCD5FBDD79348784113C5 +:10F1D0003807ED336F01F94F4CE7FADE059840FF31 +:10F1E000F9470F368FF939D2E70F9D9C3E23EC8407 +:10F1F000959DF63849A45D90280A1AC61D739B593F +:10F2000008EDF3BFE5E56FC238D9D31B3C3E1DFACC +:10F21000CB2BFBA4AA00F509C82D8C132D2A4BAAD1 +:10F22000B6C239653BA75B6197DADFF43380F3B48C +:10F23000A235E8C7E404430EB4AF87D8352D76D89D +:10F24000CCA7C02524270D5DE795AECBECEF33D0DE +:10F2500057740E781EE86DB2857FE43E01F9F28E98 +:10F2600020D350EFDDB99E69DDE8D3B2898918C794 +:10F27000F860718148F6B0CEC88E500D1E7CCAC3AE +:10F28000FDF4C8FDBA639544FB748757622AFA6F90 +:10F29000E71B9D68F77CF094C09EC8433E68D83257 +:10F2A00019EAB73CE65011AF2C984FB284F8207F92 +:10F2B000909E60DD9FF075BB68DD8B8E2FA47EDE97 +:10F2C0001258BF908EE33A3EB1DB7BDC0E5C1961D5 +:10F2D0004F58EC40DBF309B857C86F65EFB435DB26 +:10F2E000F596336778BD45E347A19D5432A8B7E250 +:10F2F000A7F9DAAF2AA3BC0915FDE99615726DB717 +:10F300003D7EE9BC80C13FFC772AC6DD18F1F1BB28 +:10F3100031CA04948FEF3A15A11948FC68BD44FE28 +:10F32000478B2E51DCE870A26FBCC8E3ABBAAB12BE +:10F33000E068DF730CE0A88DB7CDACBD6E108EE930 +:10F340006899590B9DBE9BA4EE40F85D0FD36B2AC4 +:10F35000B17F0E6F74DD3D733FD6C730D207671F94 +:10F360006BECD02B29FE47F303D4E846DCC8C6D7A4 +:10F370006352F8BAB76BA14D12D049FEC2935E5CDE +:10F38000AFF95E12BE275CE43D7F68933CCC7B6E98 +:10F39000F33DC06DDB64B4E7383ED28C7AD1988FF0 +:10F3A000757C5942FF929F47E44F71869AF2BEF9ED +:10F3B0003C522FB5EE406893431AFA1E4CA3C99CE9 +:10F3C000BF38FCFC43586F1DDF7191F97FDBF8B843 +:10F3D000547F4EA3FE8AE707CD37A45EC67A617ECE +:10F3E0000EC0F75195DB0723F6073272C3F0EBED41 +:10F3F0008CE82F9AE6E705B3F06BF407EBDD1AB162 +:10F40000DE6867C1D0FE903FC3A914BAA349248027 +:10F41000EF22A3BFB654E4F946814E3AB77E22C02C +:10F4200024E4FF21E3AFE0FA3F86E921B4338F16ED +:10F4300031DDBAFE47F64CA173901DEB990FCC332A +:10F44000B643EEA473F9F415FA348CD7A4AD95192C +:10F45000BA33D9B7F52662BC26FB446FA20A9D5782 +:10F46000AC3DB215C7ADD81CC7D43C4CB1EBA4B869 +:10F470007CFE7532F9A509D77DD9B91CE35D89A554 +:10F4800012E62D31238F4F4EBEE6676887E53BB409 +:10F49000F6ABB0FF4A594179DB027622C67DF4DB38 +:10F4A000994A7908B222E69511DEFA75A0811D8B82 +:10F4B000558A23A4B5C84C20FE50293E98A6A7D053 +:10F4C000F9CD0E9647B0DE22197AB641B8258EC620 +:10F4D000A5738E01FC099D7BD0BF01814CFE57DED8 +:10F4E0006D9D4D388FBCBFC4A9744E8D7F930D792F +:10F4F000887684CCED9C9F0EEC5FEF1E07CAE8B5C2 +:10F50000FC7D3249094F8CC7678CF39F058CD3660D +:10F51000FA5AF95BB66BECB01CD5B06707AEE75A88 +:10F52000F35CCB5E9F76FC2107E24D1159A263CAC2 +:10F53000A5FB4B3BFE03079E3B1DCD908876F31643 +:10F54000DBF5782EB3C433F286C6372A021BA62118 +:10F5500052D286E8FB4ED26B269D0CF1EBDAB8DF77 +:10F56000D6BCAAC1C8575CAC7C366ED05FEC1238F2 +:10F570009EF56C7EDE37E4FD4A45FF05E2215F66BD +:10F58000E8BF35AB7EDABFA8A88610C537989AD4F5 +:10F59000943E68D70A4EE64A2F05FBC7B0F79A0497 +:10F5A00026233C386E1FC371832C1087F606738B9D +:10F5B000E42F6C749D1987F1BDA8E8BF8FC338692B +:10F5C0000218C0BD94DFEA5770DD1B1DEADE189CEF +:10F5D000E72107F1E7FD29652EE4E7FBE3C4449C3E +:10F5E000ECC6381E5F69F6FA5C25C578EEA1DEC66A +:10F5F00040CFEE48E99BE942FD89F996E00FFD72A4 +:10F60000DB071D7A168C732E93052CF1D828B9814F +:10F6100021FEA2CEE5D89EEF6D64940765C2D5EEBB +:10F62000FC1A9C4F18E54B399E47FA5AF0BD692EDB +:10F63000C9764E12752E9D059287EB3FCBF67C2F37 +:10F64000D8D1985F75E9FE636DE72E51E70A46E869 +:10F65000FFAA88FE9561FB1FEC37D9D66FABECFF94 +:10F660008B07F10C92F419C0EF0267E00166C983C1 +:10F67000EA49A87E2DA5DC92DFE1F5F56AD07E632C +:10F6800096A784F28F19A7A7199E44F20BDF4FE1CA +:10F6900071D49ABA0299E26D59F673B01906DD9BDE +:10F6A000791F351E47447E874FF6C7E1BC239F5F15 +:10F6B0005EDE473045F846791F41B4055306E3380E +:10F6C0001B9D0D0D888F91E239661C677A67BE3DE0 +:10F6D0008EA3E7D7568153BB556086DFEFB8310C58 +:10F6E000F33953B7A688F062D8E9B76215F169CF4C +:10F6F00074C463D45D8262CD53EF027AD4603F4319 +:10F70000403758EE84FDD54663DE9497E09F83DD55 +:10F71000AF51DE541195FF0CF3C6FA5F3556106CED +:10F72000F653BC4AD0509F8C5F2D68DDC3C4B1B581 +:10F73000546EEF6F4D5716AE407AA88AE1F27FD52E +:10F74000B5E0F258EDF71EE2CB2DF3594907ED462F +:10F750006803C25B6773D8FD8F5F28D33C9477AD95 +:10F760006C0078A3CA8C3C07F02F5251DD1A340389 +:10F77000F8C6B8649F3E7D17AEF7DA5407ED5BC25A +:10F78000F9DCD7F7A05FE273AA689FFF785532D9FA +:10F79000EB8BD32526FA500E717A63770924170272 +:10F7A0002D763F81A9A1D7303F61EB942805E5D79D +:10F7B000A2E3FF46F96E20B7FB516EBBF3B89FEA98 +:10F7C0005E184B79D1297E7BFC7311DBFC45723CC2 +:10F7D0000E515585F1FB14E6A778E4BC1351744E25 +:10F7E000BE355A49C7B8625414BF37B038D21F89E2 +:10F7F00080C16AE17E88B43801CF7BCC3CFA48FCFA +:10F8000047C645CB53EDF1CFD3B57313C25869E466 +:10F81000D947BE6FC639FFC3A0DF8D4ECE1F91ED15 +:10F82000CCF96C31DA75359ED33E750CCE2F07FCC2 +:10F8300045CA2708C2730B5E644F9F807C39D2FC97 +:10F84000BB8453E96C98F1CC3207F08A79B5398CD6 +:10F850009F77215B20FF47AE7B2EAE7BDCE0BACFEB +:10F86000B2CAB70BD9507E49BAE145E297D3AB048F +:10F8700005FD29132F261EFE5FF38D8887826610F3 +:10F88000DE12CF9136F854D29BA9229D0BE478AAC0 +:10F890003F9727F0FA4F6C7462CFB394F67E2EA890 +:10F8A000E387C93B0DF60BAD9887B081FBF539E1D5 +:10F8B000CF79DE6790892DEEC1FC343A40B2E42363 +:10F8C00044E6814AEE86A7FB007F5E5DA63C31BD23 +:10F8D000BAE11708EB1BA2148CEBFE24F6874FF756 +:10F8E000C1BC83B24B89023EF9BE1408A01CFC9B2C +:10F8F0001850F260C96FE6063A52F17E86B26B5537 +:10F9000037C889564FA982F73D16071F0AD7803E90 +:10F910005592878F832D36EC846DA95C4E1F7784BA +:10F92000B331DEFB556EF5B6D4F261DA077F48FDE0 +:10F930004D95B8FE89ACFF95D1CF93863E5870F7B0 +:10F940000B9F639C28562D2E45391D5B1CF6CC81E0 +:10F95000F5B4BF5D508A66DA2E63BFC0262B437AAA +:10F960006ECA0AFCCC3AAE4B55643A97653D53B02B +:10F970007EEADF8B7FF336F4D77EA35B41FB5B2B04 +:10F98000F025CCC91B3A0FE8E757D88FEB5C07D1BD +:10F99000B9D9CFABD17D4FF2BCCDDFDD78AC02E081 +:10F9A000C4BE4C01E0171F7FEA460FF0D1AB297DA2 +:10F9B00099585F2BDCF5F07EA0DF571D5C5FFC23C0 +:10F9C000F5AE8775787FEACC533F7B04E5DD554E75 +:10F9D000CAFFDA64DCDB19D8D7349EA7A3A6D9F115 +:10F9E000706835E0C133321EF60FC5C3FED494A152 +:10F9F00078B85FD55EC375C12469DDED8D2CBC027E +:10FA0000E6A8A5F5DC3009BA48577B7EF90874935F +:10FA100051A813BD433F87B01FD7B9F62F309FDEE3 +:10FA2000ECE764AEF6163E3FB47A2FCD23FA203FC2 +:10FA300097631E5D433F4A83FD7DC247EFBF37DCBE +:10FA4000FBE67EDC99CDE556A597F35B92717FAB23 +:10FA5000C3D9E99D0DA552F8F8FD0ABCD796D75336 +:10FA60003F5C3EF8B1347E3E9D68D8072DCA0BAE90 +:10FA7000659676670D7A5A99A37D8AEB8EC5FC2828 +:10FA8000A87FB802F007F38C3F985C4A7672212B6E +:10FA900043BB42F1F2F630EF5338EFD8299D28BB33 +:10FAA0005874219FF7C3DEC718FA79D1C550D2F335 +:10FAB0003E867C12CD020AFAF07F7FFCC1875BBCD8 +:10FAC000B88E5011D24196377E33E6A777636C101B +:10FAD000EC885480319ED3058E6E12FA75194ED281 +:10FAE0007B91EB3A9FC6F7F3E62CEDCEECF261F09A +:10FAF00014D5F7B347300E36DEE9839D6253C5CE89 +:10FB0000FA65485733DDA4E7E1797DC84257C50659 +:10FB10003D15A7F173CB4DFFC7558FF1C3483C5F2F +:10FB20002EBD25A50DA1B7A4B4E1E92D396D387A14 +:10FB30004B1891DE32D386A7B761F1100943CF3A53 +:10FB4000E68D48181F04FCCBE726EBCF03EC1258D8 +:10FB5000439417E10AFD6DB41FF26582356FB5BE9F +:10FB60001FEAA3036E6A7F4A08BC4C7CEF6A209DA3 +:10FB700026B935DADF9753BF5EFFA24BD396613DBE +:10FB8000F42FF1FE1D880F1897A1FF149DC5283F83 +:10FB9000C21CC791C6C7993AD31DC0FD9B6ADCDB66 +:10FBA00034F1FABFD2645AEF2F0DBA1F892FE2BC8D +:10FBB000DC6E1F892FBE4C1BE08BEF20BE2FC517BC +:10FBC000A306F9E2669CFFC87CF12295B1C59C2F83 +:10FBD00062912F7C381ED36BBD385FCE07B7A74527 +:10FBE000111F987C52EA4DB7F1C93880D1CF1B69FB +:10FBF0007DF1C6FAE2717D505F57E2A0FCEB336CF9 +:10FC0000FC4ECC838AAF50645CEF4A834E9BB2B407 +:10FC100015691417EE6348AFDDAC7F4F14F29FC631 +:10FC2000F38D6FD67B3517AE17FC71BC7F72B78131 +:10FC30009F2EB46F518F5EC58C7BAA9DE47F44F2EA +:10FC40006F7461D817B0F09B68E0EB3AAF7F2D8EF0 +:10FC5000DB252A3168E798FB11B99E3BB379FB6C31 +:10FC6000A4F394A1747D29BDB1C3D01B3B8C79272B +:10FC7000FDDDD5301C7F4FBDE765E2EB91FA79C21F +:10FC8000C0D756A31F53BEC7A27C47F47875BA27C6 +:10FC90006691EF5B911E5CAB3B6CFC0A7CFFE8B0AD +:10FCA0007C9F0C7C9F372CDF3F71257CFF2DF079EA +:10FCB00053DA307CDE947679F8FE731ABFD7FA6790 +:10FCC000035F5F17DF070C3CFFFEF2F1FDFB11F055 +:10FCD0001D46FC5D01BE0F503F43F1FD46DA707AD0 +:10FCE000DD3B44AFF70E370F178E2F70BD8FF52C0D +:10FCF0004BD7118FDA72379DCF98EDEECC560C3D75 +:10FD0000C6285F3DE9DEF8509330B2BEFB16F6FB25 +:10FD100033A2AF88FD9E2A72FB6CEA4F8E3CAC1773 +:10FD20007F2BE33C3F1C5D3D6FD0D5A5F4BED33B9C +:10FD3000A0F7BF4A4B192A2FBB8D7B0C376705FEF6 +:10FD40009E4A78E9BB01E553D7834902C659B3B44B +:10FD5000B080F6B789BF35692A95E67B591A6F9F3F +:10FD6000154C12306FC3D25FAC3765E4FE22E70159 +:10FD7000F38BF7927CD3D6A559E4D580FD66D811D4 +:10FD8000DD493DAB507E6719F23ACB908B26FC7172 +:10FD90008E96E6E57A2503CB333EC75A4CDD45F90E +:10FDA000CDED442EAFCDFE457F0FEB43BD52C1CF0D +:10FDB0003F07E5FE6DCF98727F25D1976CE82BAD9C +:10FDC000C09B32486F667F23CDB3D49857A931CFFB +:10FDD000D2C179167B498F04265E6C9E9178BADC7D +:10FDE000F92E32F43ACC778AB77CE4FECCF3617317 +:10FDF000DF9C4864E0671C6A31E54641293E9A3E33 +:10FE0000A0AFFD3538EFAA62F6A2912F1783FD3E11 +:10FE100069E4513EB9FAD12A3CCFE85EAF505E2981 +:10FE2000F8994D083FD9AC503CF066A39F483A1D65 +:10FE300078DFD933665231E1650E8E737D25B713B5 +:10FE4000130E4A746A5005AA5F9090CF752FFAB7C7 +:10FE5000ED82EE457B48BFC1CDF344BD73878D7FF6 +:10FE600098A519DF30D7CBBC659768DF44ED95586E +:10FE7000BDC17F25EDA3F47A6C3F88C7E412C4634B +:10FE80006C31BF2F56C5B229BFFA7E831E609FEE2C +:10FE9000217EF17A18CFCBE3781DDA3FDFAF2A7FDE +:10FEA0008380788D2E82A1E069B45F27FB49543BA3 +:10FEB000893E620A397D30EF11EA6F701E9326D9B0 +:10FEC000E771DDCF24C1DA7F9B4937FA95CCC76C47 +:10FED00037325E783BBDBA81E206FA0699E1B9FB9A +:10FEE0004F627F487185A01EA54441F9B7E89C1078 +:10FEF0001A616FE6061EE574DB7035BFA7DE3011B0 +:10FF00004B3753E8BEF2F53EB0734BA074B975F4AD +:10FF1000A7D979F994358E6C395F102EC47EADF176 +:10FF2000770E37FEE5C62F9EF30E895F3CE71D86F0 +:10FF3000EECDF8453CEBD3F15E02F87CC6B99A42AF +:10FF40007A2CDEA7D23ACDF6FF6AD04BC20876DF14 +:10FF5000BF1AE39AF4BDA0B59AE5933C69D0116F3E +:10FF6000DDF54CC13C4FD4FB389FBA9207E8F91934 +:10FF7000BCEF5E8279EAEC458F38B83E73BD66FF10 +:10FF8000070D7D32307F27F7278E3B58FD6FDC7CD5 +:10FF9000BDA5967925AA5507BD2943D71B39EF037F +:10FFA0008DC1708D03CF2702542607A7B19378FE29 +:10FFB000E3E2FBEDAC8739A7E33161EFED6B600A5B +:10FFC00027A4C0FB38FFBBAFFAFC4778D1A0D735D8 +:10FFD000A909ED897BEBE09D3CCA279670BFBE6DF9 +:10FFE000FA688EFB278A8BED71B814BAD711411FBE +:10FFF000CDD34BEA3D24A9BAEA0E823E6F3EE43BE4 +:020000022000DC +:10000000E606F8B4B7ABCE0BF36F7EC7578F9F44AD +:1000100029FCE9439B3703BF34CF168CF380CCB85F +:100020002AC05BF30D1C3EBFFDA53A8CEF342F14A4 +:10003000C89E10D2BBEAD09E68DE63B7F706F9AB64 +:1000400095E67F7506B70B9AAB8411DA71F9E74C28 +:10005000E7FAAF79D6C5DB7DDF6C771BBF7F3E52F9 +:10006000BB7A63DC20BA2E689F9E13491E376B490A +:10007000FAAD88AFF322DD9F16827FFA37F453DFA3 +:10008000AA4C533B789C30319DF84C3938119E3F37 +:100090005A2D8AE8BFEEBB2E6DF324803BAB4501A1 +:1000A000EF0945C97E3AD7C69CCC269447EA7D44E1 +:1000B000176D0B819E4B889ED3D3510E69FCB9F608 +:1000C000107F8E17ADFCE347A633A0A33C7CEF8DD9 +:1000D00051EFDF8176D45F04EE57F7BA0A36FBA002 +:1000E0009F7B774B744F69247A196EBD0B007EBBE2 +:1000F00042EAC63C7061F7595AC7EFB57C01D7F5A3 +:10010000F6F94F68FD9D15A3559647EB9F986EE154 +:100110008F7D53A2C6F491FEF397E073D07765719B +:10012000D245E73FE59BCDDF772C80F33FEFA4F985 +:100130000BBB5368FE6F5514D0799D14F7A51BE7D0 +:1001400003EB8946FD02F39D8EE349D97D59281FB3 +:10015000CCF95EAE5CF4A70F918BFEF48BC845B46E +:1001600003D2B97DF4E5BD2ADEBBE2F6D148F2291F +:10017000906EB72F2E433E05ACE35FAE7C02BCAF62 +:10018000C2F7BE2EDE99C6542515EF73B1817C6B84 +:10019000CA2FF330FABE9570AE817FEFC6C5941BAF +:1001A00091DED7FB395C0A3626C8EFB69212975318 +:1001B0001AB9FF3773FDEB709F1C9E3EE94AE2EED1 +:1001C0002D43F7A7E562FB335D3AD58CF76E4E57AA +:1001D0000AB45EED1CA3EFFBE84C4DC0F94ED51CF4 +:1001E00094B72F2B7DCD98F73F4B951BE85E5705B5 +:1001F0003CB39C37246A2E265BCE93926B151B9CD6 +:10020000E2F7DADAA7D5ABB6FAF44091AD3E7395D2 +:10021000CF06673754D8DAE706351B9CA7D7DADA5A +:1002200017B4FB6DF0A8CE7A5BFBD1DB03B6FA31D5 +:10023000A155B6FA71CF36D8E0F13D415BFB89BBE1 +:10024000755B7D49B8DD563FE940A70D2EEFDD6EA9 +:100250006B7FF5B190AD7E4ADFB3B6FA6BFFDC631E +:1002600083AFEBDF6D6B3F950DE4CB083C7F4E54C5 +:1002700065931E455B3D3F7FD2D9E142A89FC3CC29 +:100280003F9F03CF5DA77A25CA036175FCDEB10EDF +:10029000FFA17EF547E4A56865F6F37AA0877D782F +:1002A0000E5B5511457A746A44BE4B15CB4FC07B2B +:1002B00084530F482C04F02CA42B71285D31A03FEF +:1002C000A4ABB3065D0D5D977089756987318FC8E2 +:1002D0005CD7CDB82E18F7265857D8B22ECDC8BF48 +:1002E000D52A4E486C98F54DC5BCE70943D739155A +:1002F000CF35E387AE2FF25CF33FD38D734DB06BF8 +:10030000ADF7594E1FE1F759746C88F8D004920F7D +:10031000A719F013C0FE3CB9415786AEC33CE7AC09 +:10032000D25D3EC44F15F413C20A8C3958ECA06854 +:10033000D5CE77B14576BE8BF3792F4E37B02117E6 +:10034000C5EF0874A2C27FC3D1C9CD0CE802D6752F +:1003500033D005E2FF66F9EBE1333DC38ECFB3AC9A +:1003600032017183FEA3A760A83C33F1057E4F6E76 +:1003700046F9C8FAA538E38AEDDFE28CAF61FF8267 +:100380007E29CBF806FA05E4FF147C9FC901F54AE3 +:10039000FC969A8C21F2BF26E372FC964A1EF76601 +:1003A00085B3B95D06B617B7BFFA28BEEDCFB8B8AA +:1003B000DFE2CF88F45B4ECBE8B7EC717C9FFC1397 +:1003C000ED56EE9F803DD091CDFD32EECF04B99D2C +:1003D000575559923007C6EF30E23A8378D016224B +:1003E000FE2F77FD2B8CFDB5AC7F8575FF22D7FFE7 +:1003F0006A138F4FBC7A48A27BDB6CF1ECBA128C8B +:100400006BDE28D23D69F3BCA536C028EE5F256FB0 +:100410007D96F178E63DD86FAD5A257CD78DCFEF2C +:10042000A37224BA7B28E38AED9A8732BE9E5DD3FD +:10043000FC4DE8EE4AFDA88DE847611E612BC78F91 +:10044000FE619CF13D4AEE4F6DDC64DC936CE27E14 +:10045000CF2F8CFDD966E06365263FB7AA8AAF200F +:100460003BB6558823790914E5FD21E2DBEBA4EFC7 +:10047000C800BE9FC275ED4F9F9C80F6EA9983FB32 +:100480003CD6F395E3061E8E0EE26117B6FFF081AF +:10049000F7EF48B3E2A17EF996721B1EECDF3B300A +:1004A000D7EF547A282E3E437293DC6E2964745F32 +:1004B0001B28E3A6E9938D2B13F07E4B96CE503E7E +:1004C000C6A64B8CE4B8CAF38DDAE13FF253A5A778 +:1004D000C2280FCF1A7AD2E1B5E40F313C27E67972 +:1004E00033B1CC92A784E747C63D9CE84BDCAF7C98 +:1004F00035C3C82372B2349C7F4BE36E76D292EF41 +:10050000231BE76123C9CB83C63ED489DAEB88AFCE +:100510004F8C7BAD91EDCD7691F8DADF77B2639CAD +:1005200007EFCD8AC6BE05BC567FCD2C132AFAC76D +:100530005AEFA5276AE7C65AEFA327D7B2715638F4 +:10054000C5EF1A676D9F56AFD8E0F480D7D63E73DB +:10055000956AABCF6E28B2D5E7067D36384FAFB07F +:10056000B52F68D76CF0A8CE5A5BFBD1DBFD36788F +:100570004CA8DED67EDCB3015BFDF89E55B6FA5F73 +:10058000B3BE991812F2663E32AB06946DDB890554 +:100590005ECCA76A4D99EF0A0C836FB3DC9FC2E96A +:1005A0007DA47A93FF5F6DF4876B46E17DD57A9BDE +:1005B0003CA835E4E2FEC65554FF7A63033D8FCD77 +:1005C000E4FB89E7D1F8FD1A983A7DAF41F354EB8B +:1005D000B89FD1C63DEE534220363305EDBD063AF5 +:1005E000B7404B0AE388D79F83F12CEBAD620BC376 +:1005F0003596F54E732DB5D54F57BE6BABAF05C2D3 +:10060000BC067CA1EF78EFB33DBF415D677BAF29AE +:100610006BD976E4BF8D200790FF283F8DF22D1F08 +:1006200099A5C1BA36E2F73A32401E646C9E45E79E +:10063000C34243FB386110DF8B337F33AB2607F1B6 +:10064000FD1D2FFABFFB13019FC3E88FCBC56724A5 +:100650001E0F18E777B54EFBB9BCDF906B6609F249 +:10066000AB2C13F9EC90F46540C5F95F3CAE113941 +:100670007EE4B820DFAEC7FEFE0272FE513654BEE5 +:10068000D765F2F38D56412FC473E65A47A816F585 +:1006900052149B4972FAACA2EE443BB43565860F06 +:1006A000BF81323373F8B8BE0C82256C914B42DEA9 +:1006B000BC7A7CBF36C54971BADA11BEB35565AC98 +:1006C000FB9BD2C9D7A78FDFCCC27B18267DE46500 +:1006D000FE7A163F2F195EDEC3DF7EBC47211772FC +:1006E000FF1DE83C1C2823BE30EE91055623BE2397 +:1006F000F920526F068DFB1BCCCDCFF34851A01FC4 +:100700007080C76346A2BB8D8D8A22C3BE9E56D41D +:1007100004CCCF34BF2F0006B0F796B8FFFA762688 +:100720006CE61546B60FE23F317EE175D3BA10ADE7 +:10073000FCB248A008F3239E30F6BB325B7B04F189 +:100740005499EDDF8A7283B902458827807F8CCF68 +:100750009932006F23D80B30C65F15E5B2CE1FE08B +:10076000BDA732B95D6CF6D345E3B8793F0087A8E1 +:10077000DE3300EFA4FA2CDEFE72C7B1EC275F7700 +:100780002FFF1EE697B29680DFF59C1F5C4EF6D8D1 +:10079000C2E077A96C6F541231CFF6E346AD18BFB3 +:1007A00043307FE12405F35E16AE5C4EA5D97FC0D1 +:1007B000E017679E4CDFAD96F244FF2E8AEFF3738D +:1007C00027490819786D31F46D3F7DCFD665DC5B24 +:1007D0000CACAF2A6EB1DD93E964B8CE6855FECAA1 +:1007E000EA67BDE7D0C28407F7E59DEB0C5D2730D3 +:1007F000048CFBA5BB30A4133F542BC39D1F99EB66 +:100800001DA9FFC008F2C15CAF89B7C87CD64D8571 +:10081000D57E3C179504573FDA6D78BD9EF82ACEF9 +:10082000F87EB4D17E09F4FF02D2A9EC53914E9721 +:1008300018E349C639E81240DDFAA4C1F1DE73F8C5 +:10084000FF84781982C7CBC4D33194C30EF4737A72 +:10085000A2E9DE135304AB1CAF37F2A6007DF43DD2 +:10086000848F478FA5FBB79B96BDE412117F99DC5F +:10087000FE7DB8F874397E57F661D6FFC04EB49B42 +:10088000D7C7D17777EB979E2DB77E5776C9BE9F96 +:100890002A98275C3FAA2505CF139630F94BAB9DCC +:1008A0001839CFFAE03D448F7A93607CFF9DEFEBDF +:1008B000123DD1F6BDCEE5ED89740FAB239BFB75E0 +:1008C0004B0C3BD3BCB721C5799C28E796EAF6FCD4 +:1008D000FBE5ED11F9F856FB541AF4DF744CDEC059 +:1008E00075B58A444F4F029E500FE5B030951DD923 +:1008F00049A6DCA576D9EB059A4F8029AF6B7943E1 +:10090000E713398F65CCE7C47E2E773E1DC6797F0D +:10091000948BE9B130B40770DF8BF89179DEDA633C +:100920006E13D6E9B29ABF909FC346ABBCDE3C576C +:100930004F0BF430BC7F1753C6E89E8888EDD0EF8C +:100940008BEDD5F0BEEFCCAC513779C7E0F96DC077 +:100950002B2A04BF25A7607E0187C1B27C6B7F165E +:100960007D3F682CE6093FDC9AFBD6816CC63F8D43 +:1009700043E748B96FA15DD36DC26002E0FDEAEEC6 +:10098000980158737901CE1F807584BB8CBC15EC1F +:10099000FF535C87ABB7AE08FDD8284141FF6924FF +:1009A000BA6ECAD2A667911CFE76CF89BBBD2B3A20 +:1009B000AB70FF55FE5DCB4D8CD9CEDDEFCB72F227 +:1009C000EF98660716E0F871EBFB296CE54CFFD455 +:1009D0008D7437B83FBDB41F83FBD3C3F7A7AC9763 +:1009E000F627AEB897F627573DCDF261BDB9953CD5 +:1009F0001CAFC23AF2617CB54554C2F8A03089E61A +:100A00002D96F173F7B80A41413BA9C3C85BB8A959 +:100A10008CD13D00258AFBEFDFCBE27CB12E4B323F +:100A20004ACEB709EA06CA6774D58A743E9F80A584 +:100A3000DBBAFE16A3BD6CD323F7AB8107B22CF152 +:100A400091432DFC3B6DAEBCC26EBCAB54A5CA6BD2 +:100A5000D1DF7CDAC8D36ACAF2CFCD82F70E9525F2 +:100A6000C704F879D2FAAC94A1FB6AAEEB52FB361C +:100A7000D27E99FEF248F5F3174A744F557405B6C5 +:100A8000CD83F9DEBD3BB904F3E48FD64B65BD00E1 +:100A9000DFF3BB34CA13792C8BEBFF7BC5FE549478 +:100AA0008B9BDC8FFAE95EE1EE260DAFCF9F4266AD +:100AB000B1CCE3DE57AAC88EDA101B5F897E6AE4E8 +:100AC0003C8E9EFF839BBE3B86DF8D29A60DA538FD +:100AD000E512E443910D7C8FEA7643A6EDCEE2F673 +:100AE000EB11C35E3E2AF7F1FB995E89EE01457E6C +:100AF000B773995F70E2A770960C3EE7F1CEA0E362 +:100B000053EB770B96CAB39D381EC81F5B1C73DE70 +:100B1000DCD9AFA35FBFDCF0EB410ED9EA5746C486 +:100B20004517D40FDAB967E8FF435CBFCB9A03CF10 +:100B3000BD0FCE16281E3ECF6FB78FDFFF8744DF75 +:100B4000413B8AEF02BE8F2E1EBD13F3B422F1216A +:100B50006573FA3C62F80D03F861D496CDF59F20D9 +:100B60007C2C037C48F6FBAF848F4BE121C01267DD +:100B7000E06B9178583E17F0933F74FD47653FE175 +:100B8000E728E007E32291F89821D5D1BA97C3BAB4 +:100B9000AD711573BE91F88AC40BD8A547F1FBF46B +:100BA0002737F37384C3C6BAA5F07F0EC4FFE97B71 +:100BB0001041AE1F30199FE70DA8ADC950BF12906C +:100BC00088FC3307F58AAD5FBF13E3EDCB023C3FF2 +:100BD00071887E9116BF6E8DE7447EAF22729E9122 +:100BE000EB9865E89121DFC992C35968479CCB32E5 +:100BF000E2DE1378DCFB8C6F1EBF17569632ACDC3E +:100C000035E33883FCCEE96A4970B6CD4F1258609F +:100C10000056406FAEF14A2ADECF3D5C3F6A1B9220 +:100C2000E11C571FDDE704A945E7164B8E48745FAA +:100C30007C0E73A96E98E74350897AF8A6DA68D5D6 +:100C40006DE9F774E71774FF4E0FB0866780CFD653 +:100C500040F7F83B1AE63AD7789D344EA4DD12B936 +:100C6000FEB4EC81754FB892756F035D8A74AF2442 +:100C7000F37C9BFEEF32B6B36430FECAB2346ED75B +:100C8000A672BF6E5C76A261573790FF761971D855 +:100C900071D9C3C4FFDDACCF81EFDFEE7287293F8E +:100CA00025E838354007B6FC9400FD7E455BC6F765 +:100CB000281FBC2D267E0206D1DBB1C914F24F26B7 +:100CC000633CBC2D86E72D3195DF738BC67D943058 +:100CD0003F0CEC7A0B9E86E8E3FD2B9EEDF6E07769 +:100CE000C064FA9EB8C85C941716582784B8BDA78C +:100CF000B6ED29233B98F25197041DA7ADFD05E2FF +:100D00000AE9BB28813C404809CE732CC15215EB3F +:100D1000C7E47456C4FDA881717578DF72FE14C0F3 +:100D20006DC6FBE02E572AF957ED96FEF3871B0F91 +:100D3000A4D645E25991FD47F6D766E4674A712B80 +:100D400056915FEDCD50C8D62FE27EE8A26CD1A6B9 +:100D50006796B99215D9727FFA9374B7ED1E8C59C4 +:100D60009AEF99781DB0D7F4B0CD5E73B7BD1C6112 +:100D7000AFBDFCCDEC35E81FEDB5BF7DF81D3A7772 +:100D800039DD0082AA04F950A138428E9137C5643A +:100D9000758C55BFBB8299B42E33CF4A5659382E25 +:100DA0001EED5C95E83B59F50988E764D947DFA952 +:100DB0007874E03B99FCDCE5D10C25B1837EF787A4 +:100DC000E767C9F58A80FEA5E90F98FD9AE3251724 +:100DD000F904BC2F3BD2F9C6E3D9577CAEF6F870C4 +:100DE0007C755068F8F80778EEF08644FED06DDE2A +:100DF00075F43CD2DF0E19E39D900221E49FDEFAE8 +:100E0000776FFB3EC6BF5E8CA238F47FD4BF7BC732 +:100E10004F54C413EC3FBEBFF0C7F3F0BB459BDC9F +:100E200032FE620F6BCFE6713BA949207F7193EAD6 +:100E3000AC7D11CA6733AB0E617F6A6DF063FCAEA7 +:100E4000EDE922BF03F9EAD9CC1A7A7EBA88E7AB7A +:100E50009EF6C6D0F7E7CDF7DB62F8F74ADB8CDF0A +:100E600029F9BD916FFC7B039FBF35E8ABDD1128ED +:100E70006A28C63C7B817E9766603F659DEEFBBB22 +:100E8000CEC9F45C1204F223DB6202450F58F0660F +:100E9000F6EB3A07C261D270EF3BE939AE87DE4F1D +:100EA000B27F47F580F1FE01635EAE73B1345E5BE5 +:100EB00012CCCB6DED279E3F1787BF675C923DED4F +:100EC00020E2E3D94CED5036F18D210FBD078E099C +:100ED000F1972317F9B9D35B5E30FB71BFD70BA134 +:100EE00051E88F169D6EE5F2C845E73516BBC4C8BC +:100EF00007E0DF295982FFA2FEFA5B2795E1292549 +:100F0000539FF00DB5633EAE38B30DD580F9BD11DA +:100F1000D35E04367F1DF3213E32C0A5EEC21968B0 +:100F2000C7DE5CC9EDA4E56827717969B36B22ED72 +:100F30001F370B74627ED84AAF4CF678A41DD4518B +:100F40003187EC850EB017986FA81D64CA9BCD4100 +:100F50009169D02E6E8A14C2EFB6C48DE97BE37A14 +:100F60008C77943B54FA8E47515F1D9E53C64D9922 +:100F700044E36CC157A7507B1E17298926FCBD5539 +:100F8000F1AEB2DCB25F71E59F8E41BDD365EC235B +:100F90007E4F747AAA050F8CDBC92BBD0522D94B75 +:100FA000469C64FF8331F43B301F97C5D0B9D7749A +:100FB000E31C6CF91689E0E5E51F54E139E0F256CF +:100FC00081ACEB40833F01FDAC25EBE738D17E508F +:100FD00096B91B30476849D06E3F45FAF1606F11F2 +:100FE0007E96017E86B3B722EDAB48BB2127C7B002 +:100FF0001B4A5929DA0D6F1BE75FA6FD70B371FE1E +:1010000005E4E1B4FEFE9E693FD489D5A37200FFDA +:10101000CB647EAECDCA6E21BC4E974EBD713DF203 +:101020007F597E3E7DAFDCF02FB6043F70A1FFB943 +:10103000E5BCC4FD12B9EFBB283FEB1EBC2619ED81 +:101040008B3D0F8E4D3B09F51539DCBFED12D59F59 +:1010500054A27DF4A683E4D9487ACF15945821F0A0 +:101060005B7450A0D2DC87B86034932D7C1E67ACD3 +:1010700027A5AC5FC8B7F0F58C1C3EBFC4F5DC8F6C +:101080004D017F167F57E29EC2FC9DE85F82822061 +:10109000BB203A4FA5DF1534DB9FC21F6DC0F39D07 +:1010A0009A063D53C5733289C653611EA85FF2820A +:1010B000B104E70793A92C0826525918CCA4FA5179 +:1010C000C1022AAF0AE6D1F3D1C171041705275135 +:1010D00039265842E5D8E0B5548E03BD82ED8A83A7 +:1010E00055548E0FDE48CF2704E7503931389B4ADC +:1010F0005FF056AA2F092EA7B234B8949E4F0ADE8D +:10110000457059F07E82CB83F7513939F8109557E5 +:10111000079BA9AC083651BB29C18709BE26F863D5 +:101120002AAF0D6EA5B232F824D59BFCE736ECD57C +:101130009B125F50F8BD887021DA3D5D23C8BFD691 +:101140001C2E3FCF666B77E7940FB6AB8BB89F69C9 +:10115000B66BCAB1DF4B165D615701F9D305F47B5D +:10116000755DC0FF982F75CFA87CBAAFB8DED89F49 +:101170006887AE65E60DFACF8935FCFED03DBBEF42 +:10118000E3E710BECB8BC7ACCEE1EF77C93AC3B86B +:101190006A5703A3EF224617F6D277CABBBDFCF706 +:1011A0001A9DE95FEE41BE9E55AE95A13C74A6CB5B +:1011B000F4BB576F555611FC528EC388DB689B7188 +:1011C000DDB9652933512EE5B688E84EB3C4320740 +:1011D000FFBD289D7E836520DED11D63D743CF19D7 +:1011E0007801F9F318BEDF35A190FFDEA571DFA805 +:1011F000EEC17CF2EBBA9C6101BFE3A58363F18C85 +:10120000257ED9D5B6ECE7C86FF9EDBEBD38BF5C19 +:10121000DD3709E7F79CC177799D6A7534F457B0DB +:101220005DDB8BDFEB1A150A54C7003CFA597D2FA2 +:1012300096637A42D5B1508EDB1DDE8BC741E3C386 +:101240007DD56E80271E60FB500C94F4AAD3E2007B +:101250009E744CDB87666D795F605A3CEE9333D4A5 +:101260001C0FF3E9FA88F99A009ED2AFEF435B7046 +:1012700060FFC1EEF98D655F5C6AA786F8CE5AAB58 +:1012800050DCA44BEE8B4E2C1EBA3FDDB86E5C6773 +:10129000907F47224BEBA77DC82A63A5D08275B704 +:1012A00088C63EE4D17DEB3F1AF401FBF03B945F2E +:1012B000DD314A5591874E0B949D1C8F8F61FCAD9B +:1012C000BB58A6DF0D35E90E9E8FB1FE1EE87346B2 +:1012D0003F91DF511F09BF7FFCFF04BFAB909ECB46 +:1012E00047C6EF4D063F5F8A8FFFF7201F7F66E5F9 +:1012F000E3C87609B9467E53049EBB64652CE1CBF6 +:10130000CD44FCBD35BC1F87F6534CAE784578956F +:10131000739DD4FEBF1BAF270C3931125E5905F700 +:10132000C7CDFBCB23C91BEC6F2439C7286E98B7F8 +:1013300013BFEB929ECBEDF84DE7B6FAB13F53CE1B +:10134000C9AF3469A88F4C39F72763BF47945F381A +:1013500034F24F0DFFBD43E7C0FEF7D6E17EBDE39B +:1013600010880F461BFBD894E51F954BF154564649 +:10137000E78F11F16FB7A454C9183718C77F5FC240 +:10138000AF7DB13F99F64B2DE5F7E2F8396FDD837C +:1013900031748E9E07F6830C7E30FC338C655C992D +:1013A00022E27D73335F8E294BBD56BE33F5FB20A1 +:1013B0005F9AF461FE7E41B810DBDF65E067B01F25 +:1013C0007EAED2B62EC3769ED3ED4BA7F7EECAE51E +:1013D000F18DD933D2B397BA47A6E7274C7A6E3945 +:1013E0004CF88DABE47643424B12D177424D00BFAF +:1013F0009461B91FBACC8971C795B9FC5EB929CF80 +:10140000C1AF5D82F79BBB937869E265F68C31DDF5 +:101410005C7E5F1EFD97FD37D17F592EA371738DC2 +:10142000DF95C9AD618A0AF5DD95A8CB502F3A4307 +:10143000FC3B8A8CECE10420EF2704C22BFD4E9B81 +:101440002EF2DFF5AC738634FADEA43351413BAFA4 +:10145000292B707FEE45F8E81D875A82FEC0B6A79B +:10146000C337BBD3F15E27F013DEEB7AFACD9B379F +:1014700063BC20A98F19F02358FFF5E30B6FBEFD65 +:10148000A945DF28B1E6EF9929D9D6EFA6751874DA +:10149000F6718EB611E70DFCB12DB79CF26DD78AAF +:1014A000C097DB104F2943E31403F18711E215665F +:1014B0009C62208EA06AC4BFF0A8078FE2CDF8C45A +:1014C000E59E2B997265500E2825A61CC0DF1D03D2 +:1014D00039FE74AEE53C6B24BBACC690CF3DB997EA +:1014E000B2CB92480E80BC32F89EF3ED26C6CF37C1 +:1014F000469257E67CBB72D58BDA5D71AECEEDBB02 +:10150000D8603CD615117789F6B6D1EFD546D7B15C +:10151000135113D0FE7751FC753DC663812E5D8556 +:10152000AE8878AC407E8919878D3C5737E3B1E6A9 +:10153000773222F1FC46AE3DCF17EDB7172CEBE921 +:10154000DCC0F9407F4BA273F8339AF839DA296787 +:10155000CA04FAFD27F35E4C1DBEA2129D31949B76 +:10156000F8D39EE89FB31FFA5CF8FDD6BAAF04A685 +:10157000C13C0E7E255129333FC56367F9F66431BE +:10158000A0CB3D257FC8C2F3BD8327008679EC2F11 +:10159000B99AF2B60E0AE12395C2D0792F082C1D14 +:1015A000363F3672FD0B6E7B8FCE179F54AA5D9827 +:1015B000EF33D2F9E417863C3A921DF877E487B806 +:1015C00015FD2DF853BE2DCA27F4BE79EE96AEBE9A +:1015D000108DE78CE9ABB9FD9BC142F43DB948BA27 +:1015E000BD5F0D9CC57E9E34CFFF56479CFFDD9BA3 +:1015F0005159ADE2EF1799E77F813F231D6BC93D3C +:101600002548674F7EB5FB067457CEB2832BC83F83 +:1016100099F4470FE6052C2E7F8D7E87DD8CB7472A +:10162000AEFFFF025586B019008000001F8B080036 +:1016300000000000000BE57D097854D5F5F87933FA +:101640006F9690ED65259104DE0402C184648000EC +:1016500041A34E082056C0610F24CA84354080A0A3 +:101660005669C532104044FC1B95C5B6D4FF40B145 +:10167000A5750B884B2BE044941FD42A415151513E +:10168000A2E00654228B8EAD96FF39E7DE97CC1B85 +:1016900012C0B6BFEFEBF7FDD3AF5EEEBBEB39F791 +:1016A0006CF7DC73EF542CFC4570705F8085870FFE +:1016B000E4BF9203FC771EFF6FD363933F8BC67F1B +:1016C000E443FE792BC039288E1F4385852900030A +:1016D000B10EFD5DD79A562CBC8BFBF9767163FE7B +:1016E0002B3680C3B660A61673613D800040BFF004 +:1016F0007662FC0A053C904C032B81C71480D7A965 +:101700006A3AC0920C6F471DEB83133CCE428012A5 +:10171000E8155885E5C32DEEF8312E9A4FD245E7EE +:101720000310CCF6C6B651AE80B7BE8DF9F5D21512 +:101730009E5F850D267BB15C59F0EA349A5745EFE0 +:1017400028C581452A34DB46F702C894F526BBEF4D +:10175000FDDA9A8F29A8679B9C127F2E2AD7B87C26 +:10176000B83DD88DF040F870E75D3E3EDE53FD3762 +:10177000D3B8EFF91C9A1FFB1B5E39A023B4D1DE4E +:1017800048DF5F0CC169D9D81DE1A45FD87A754BD9 +:101790006E133F8716570507DB5AD7EB82F2CAA8AC +:1017A000B200CEBB8CF01436EE4409F75D3205472B +:1017B0005D0EC177EF94679D8078B92FEF743F3F3E +:1017C000E2FB3E68FEE9261CDABF28161ED3B19F55 +:1017D000CA73FD96F46A7FFE9371F95FE873211E68 +:1017E00023EBDDA5EB02EFBB7FA9E9D85F59F6B289 +:1017F000143F8EFFC6E217E068368D0B0CEF4800F1 +:101800000FAD2F806E1F1536EE70CBA0C93A92F047 +:10181000145596E78DE6FAB03BCAE2C7F9461DC8F3 +:10182000DE1485E31EEF24E1B3AE1E3708E9EE9C1B +:10183000CFE64636802845D065E4BCCA16CEE375AF +:1018400033F2D1210502496179B51E084FD12195A6 +:10185000BF47F2DBD5C46FB9ADFC66AC4F7BF83245 +:10186000D627F2BBB13EADF57E99A3D3FA7480AA18 +:10187000FA36E8E7E988FAEF2CF699C67DF707EB28 +:10188000646F1BED1EA07688C733BE811D81E8C43E +:10189000EECFBE1C7E37F0F4CEF7EB35EA37EA3BED +:1018A00007F3A1C5E95B3B0EF13FB230B137E1F977 +:1018B0009D32AB0710EFB1BDB48D561C6AA56EE129 +:1018C0007E6E4DB3EAC792880FC11DC4F2C907AD41 +:1018D000EE553AD18DBF81F8D0589F91E0D4631076 +:1018E000BF778105CEE3B7E8429137F07DBA4E1954 +:1018F00046F8B815405BD8A7757EB7A6D9B9FF489A +:101900003A8C5CAF3F44C8C733EE71F1C18BF09B9A +:10191000C167B7E9823F23F11C994EB083AF2DF91F +:10192000B444AED719DF2FC7F5C7A16EEBA76A8005 +:101930007DC6BAEA5E5F5C487DDB74929FA0FB3394 +:10194000D761796CE5008DF083EC10372415E01633 +:10195000660980469417D536E21B2937C06F237C71 +:101960001FD5A1665502C0288F121CEC6C85F7A606 +:10197000A2A8E0E030F801BEB075C6FEDF48B3C2F1 +:101980002A374AD9CACF878FC1FCD48156CD81A5C9 +:10199000B103FBA6521EEEB741368EF746112289DF +:1019A000E6B3B677C0EA6AA5830E03C632DEDECBA5 +:1019B000A9B0D37A4655C6D400F617F58383EB4712 +:1019C000DDAB0436213C1D1C3EA0F975E8911C5886 +:1019D00042324EF1B5CC4FEF0A509A5B3C9EF8F480 +:1019E000C86A1B3870BCA6C535C1C108D7F4C35F2F +:1019F0001E86B856BA98BCC8FAB183E4F542DB2714 +:101A00004D61F055FACDF9A92BCDF9E9A07ED2644C +:101A1000C0DF063D9C88A007431E1974D19E3C324E +:101A2000E802E5D269D2732D72A9DB589E6F69EE88 +:101A30000EF824A6551E1972E17D09DFA19E1BEE4A +:101A40007F19F17468BA95E732294FD0C1A46EAA04 +:101A50004EBA00F1E86D8BEFFB1AF21B7C2DEB4ABE +:101A6000789CE89BD59227F62DAF5A605AF748FD2F +:101A7000D1BE7CBAB8DC795EB7B3FC30F40B383C2D +:101A8000BCDEF7FEA26013E9BB7BA7D8581EDFD7E8 +:101A900098BDC9E96AA5FBCBD52F91FAA1AC72AD6F +:101AA0009BDA61BAC58FDFA37A74A809E4B5AF6F7A +:101AB0008CF1A2435608F40DFFAE8BEF2DF2DCCE75 +:101AC000E5F897A322DE17420737D927AF76F2E46D +:101AD000B9B0DE7B9D3CBD289DD7C993EF0A9383A7 +:101AE000B5362823B8AD16F06D25F8C19B363ACC33 +:101AF0004E19E712F2757989A8D790D23FED534C71 +:101B00006B3FEE9D66C3716F72A93C8F5762FBC736 +:101B1000375DC42E7840D2C97D246F308D9774789C +:101B2000BF5C3FB4523C5B31BFDCE64D4B08EBA7DA +:101B3000D095C0E3C70DDCD6988578AED52C9AA297 +:101B400053AA0E23BC2D8B51876DE676C07CB93C21 +:101B5000D6F318AD1B7607E362A9BD989F1AA3FEC2 +:101B60003D9C8FC649FBC4802B72BEE35C161EF7FA +:101B7000A34E9EB184AF7B3B79C651BA50F53B086A +:101B8000DF0BD10E6CAB5DB94BAC57AEEC1F2046F2 +:101B9000637D4AE3226BF807D5FCDF269CA77FA96B +:101BA0000AB598AE8FFEC5EF9B10AE85D8AD035336 +:101BB00055C3724C9DAA53B3A2FCF94B17DF0C1707 +:101BC000CEA336EE8E019045BDD414787BB5DA9560 +:101BD0005A92B00F23E7516111727B815C3FB2FBD7 +:101BE00008AF7FEF326801F577417D69EF2DC9F0CD +:101BF000ADCAC47997E8703640C3A93E9DC65B491B +:101C0000FF1EC876F0426A0FCE9A7139384F8F4363 +:101C100011725D4F6439F19045EB005DDBD2BF7E00 +:101C20009E478C947F473A7B16533FD8DF124A4B2E +:101C30008AE0760BC1E7167AEB214B135CAC1FFFF1 +:101C400020C8A989B9343E2146E0D36E776AAB3407 +:101C5000C6671DCF1F6A06105C3F169FBF96EB1B21 +:101C600086CF5F87F353243EBFFDB023EF274EBBE3 +:101C7000519BF46E9F3F9C0B9334358CBF57269835 +:101C8000E7B1A28FC8FF5E8E9F9929E8F345B9BEE0 +:101C9000CE85A57014ED058713FC516847388783FE +:101CA00087F8E321BB59EEBDE88AE5FADBBB0C7A85 +:101CB00091F0B0C2A594115C2B12446AD4BBDD55DF +:101CC000F222C1F5AC1CEF4549CF1BB380EDB00447 +:101CD000C9BF46FDBB65FDBB5D83384582E84978D9 +:101CE000B55BAD6DE23328F96B5526703AD41AC353 +:101CF000FC3BF57E6B80F637D8FDC821FD5BED849B +:101D0000A93B9B6C9DA93CDD0A7EE40B907A53C3F2 +:101D1000FF9DCF22BD082B2C38C7CA3C2FEBB948FA +:101D20003D8A72CD1EC47598E28BA9213AB840AFA6 +:101D30001EFE999FC67F6320684AFAA5F5EC2157DD +:101D40008B9DEC26BEDE4F7AD6D6AA676F02211F86 +:101D50002EA2678FB8C2ED7F08E684CB5D5786C0A0 +:101D60007B530768D3EEFD46AEFB6A8061D49EE4E8 +:101D700029C9EF442BD4B01C57C53EF6A13E576C81 +:101D8000243DD04287659A428BF78DC47F92A41B75 +:101D900015C5647C22D151274D1576AD9FF249BA05 +:101DA000072CD80E3FD56B88B724D5ADD0FEB1C96E +:101DB000DEB4BC23E2ABB917B837E1FA74ACD01A81 +:101DC0003A62BDE8C13A9005B0C205714554DEDB08 +:101DD000C2E50963B51536CC27E89048CBDBE41F94 +:101DE000C376F5EA32D0ACC817B95909623FB5E8F5 +:101DF0006BB0E0F794620405DB6D046D681AF1774F +:101E000019B81FC376AF2F5B0A5961F888CF1278D3 +:101E100088D791DE098F4E3FB7F738127AAF82F03C +:101E20007A02DE25199EB82CE67FAD03EDC713E8D4 +:101E30009F2427DC3181C7709DBDD0AC92DC39A0D6 +:101E400034020192D9A53439AB5F2B1FADB6409552 +:101E5000D093357EC6EF155AC22AEE4463FCAA8899 +:101E6000DF55084FE72C337E8D7924E5B8158DF8C2 +:101E700012FBA1753B80FA57AC57CD91BB71DE0FB9 +:101E8000FD2549A179ABAAE82F03FB5B3290F063F3 +:101E9000EEEF72D729BA42E025927E064BBC75CD93 +:101EA000F0B8191FDF9F3F6FED4FEE0DC16FD115D9 +:101EB000EE2AE2972888732B94EA1A78C8AE772A1C +:101EC000816C6CEAD46B985FA38ADC4956827F9A56 +:101ED0000554B4EB4B657B4F19289FE5300A41C888 +:101EE0006D153E33F8873E7ADCAF04B0DF21B7C50D +:101EF000B9C96EC77D978FE01D9C867A0FD7A16305 +:101F0000B73A0FC1D331399EB8BD055F9170ACCAE5 +:101F100014FBB144AB2FCDA251CDDE075E2966BACA +:101F2000B952C19631F6DC037BAF0132BD01AEA0E0 +:101F3000FFE41EF0E451B9918720E0BC367668C911 +:101F40007B9C692CE78CBC9FF28FE2307095E8FF98 +:101F5000581EF1D3F5829F6A5000F526E834A6E7B3 +:101F6000CE654863E9042ECABFD870F92ED6AB857A +:101F7000DF7408C6C6D1FC759E7F92EE56C8AF626C +:101F8000AC9B211791226D3AF67BC80ACD4457E3EA +:101F900060D9DD34AEE604ED3E1CC7FF77C4B3B3B1 +:101FA00015CFA7764E78F5D7587FC5823837D90F29 +:101FB000B64182BE6D3F8F0FD4B25D14E0F114C8FC +:101FC00061FA1D5BA6B889DE4ED985BC383543E180 +:101FD0007DCDA99DEF66927DFAE1DD676201E13872 +:101FE000A236C7D2BCBE58F456AC07D7E1C345569B +:101FF000B6BF6E216646FA9CBCF887FE53C81E9396 +:1020000074D594E5B92B2B4C2FC2C214D6FBB30266 +:1020100038D330393A674BB4243A919F5B9F64CAF6 +:102020001BFA7EAE036A68FDE73CD160EF84F39C47 +:10203000B52581F7E75F200310DEBFD89EB991EC8C +:10204000BE17259F34657957D3F8342F1FB63BB29E +:10205000C30141E6B3461BB0BCF58C5490DE7D62F3 +:10206000A80BE6B56757273BC991E90A343B98BFEF +:10207000610FE1F553B9CF8C9CF7F40F353BD1EBF1 +:10208000F41268F6F7A6792A2BEE2C14FA86D621DC +:1020900012AE0BF679F50BEC403466CD1B4A72F4A8 +:1020A000DC4A0548FE45EA29943B7B5EC47EA7498D +:1020B0003D36BDCE5C7E7AEF6D7B7E4D76F20B7643 +:1020C000B61F67921EBB88FF606B96D463FD61C02C +:1020D00079947BB53159F1BE8BD8F15F2CC6BAB873 +:1020E000253EBED8C9E9C9C51AA77765E98CF73975 +:1020F0002F34ECE9C4ECDED89FF4FF887DA5CE49EF +:1021000010E62FD93826F86B9DE815F5B48BF82624 +:1021100068233EB1493FC963D24F62D5301F0E5785 +:102120005DC3AB2FD23E0BE17E0CE11AD12FDB4118 +:10213000F45A0B7096E48F313FC36F527109BF4957 +:102140006396DC270F40B871E94FC78C66BDDD1E72 +:10215000DC86DE6E0FFEF6DACD457DDCD63EC1E0D4 +:1021600093BB24BD4EDB3C6AC5158897DA9D9F77EB +:102170006E8A61AA67BAB66E5002AB70FED6B454CE +:10218000A62F27D1633AE14FF54BF814C2173678E2 +:1021900007C2E879E68E68A683B44E567014D1174C +:1021A000419F560FCA11A2E718D1DE09CE25643F20 +:1021B000CDDC11B5E7032C7FAA32A6464963BE4B9E +:1021C000B3701A4CB31431BD1E8BF04B98F2488794 +:1021D000A6FC57B6A6CE242F90FE8E85AFC3574AD5 +:1021E000DBFBAD4FB2B2582E4DD33D43493F4E07B6 +:1021F000EF0A8DF9B48EBFCFDA71CF48C207F32949 +:10220000F633F7F9279F23F934FBE9B571249FBE14 +:1022100054EB5269BCEAC796C7917CFF42F5C7519F +:10222000FB2F03424E458EE7E9AA48F9EA8953504D +:102230006FCDA37F22FE615AF38A9FE338DF209E91 +:1022400089CFE76DFF8EF37B3CCE6648A37E9B86ED +:10225000DE45F3403C2DC1F2F92F98F96FF6EFD728 +:10226000A6EAB18CBF4E127F9DA8DDBCCD3637E902 +:10227000D37907AD6E1A663E34337C91EDE7D71FF4 +:10228000B5B37CB74073C6D51796A3456527BE9AEC +:102290000FABD9DF3F7FFB97EF03A511F66A95944B +:1022A000CB91745FD055F2BBA47BC40FFB2FFD38DC +:1022B0002F76BF05849CAEFD83C363C7EF5FBEDF8F +:1022C00071A303FB3BB9F9B53825AF950F0096F222 +:1022D000BA9CACEF7A5179F195E497163D20F58FD1 +:1022E000FE024EB023667788B4DA168CBB1AE1AED4 +:1022F000DE687313ED573F69F5C4905DF69E83ED7C +:102300008DEA27CF30FD562B9E66A537831347F203 +:10231000DB58B7394F7E3A94E4F31CDC1F0C479628 +:102320009CFDCC39511FE93D8AE4F1D68F87DE450B +:1023300079941FCE36D6ADB4BEC1DE14D3C6BAD59D +:102340007F3C94F472ED1FBEE575F97297021D5D36 +:1023500017B6AF7AEC849DE8F3242E909640EB6894 +:10236000ADB4C75F58EFE4E668E6EB933B9480E2D8 +:10237000BAF43AC6A34C66FDF7FC934FFD19C7AFFC +:102380007ADFE11E4EE33D755B1C9D737CAED60883 +:10239000BAFFCDF254D2CB55367FAAC6A9F85EF566 +:1023A000E84F991E671EF8692AB0DDEA49B7B03CCC +:1023B000F0A7137CD3378C63F866808FE9B1EA37D6 +:1023C000562FD98BE75418B6B58D757D56F28D030F +:1023D00016E4FF9CF414F6B40AE1F9DC0E6C67F81D +:1023E000DFB4F2B99903367DA4D07945638AC2F28D +:1023F000EB80CD4970DFBE3381E9E9DEAE42EE9578 +:102400001E383794F8EB76975AE3D0187EB35CC346 +:10241000D555FBD377FCCBA27E4FDB6FC6FA67F1B5 +:10242000FBAFDCA6FA8CAFCF37393A280598A60A5D +:102430007B1DFFDE24B9384FF405F3B77CCE740260 +:10244000695D2DF108FFB1AE629F45DF7F457C37A6 +:1024500025A6261EF173F6E051FB15C417C916C850 +:10246000C679CD0B7CCDE30E57E06BA20F031FF3B3 +:102470005F40BB229C7F377F1AC1BFE672D4DF8CDE +:10248000B7F9B86359954C786B1E4AFADC8FE33E76 +:1024900086E3CC5883F5C3F8B5952EECADDF5DAD82 +:1024A000FC07D68A78B26F664A7E8F5CAF48FE7FA3 +:1024B000BAAB59EF19ED61434A9BE749ADFCEEE732 +:1024C000F5AAB6057E4778AA7ECFE1F6EBC49782DF +:1024D000CFD0A06CCE46BA3FF1C4EE7726213C2780 +:1024E000EA6DC9C37954B37CADDA867C4AF628DA42 +:1024F00051512C5FBF653B2BAD14F51ACEFF44B292 +:102500001788AE2FE04FFCDE267F268BF397FF98CF +:102510005CDD7EDFD7D6B8F6F971663B72F5FD0853 +:10252000B97A0EF2E2711838FEC7395D483E46E2CC +:10253000D7C06BA47CBCA3ABCE788E948FF8F70E7B +:1025400084E171F6E37F633AFE06E59D556BA55F76 +:10255000F009FAC5BCFD0A8237D502949F176818A6 +:10256000ABE4B705B7199F91E5BF21F9D3AF75FD6E +:102570006D4BC11F8BFD36EFB4F279C829BD392EE2 +:1025800011E15B1E25FC14A734994F30F230B912CB +:10259000E779CA9FAF911FBD390AD8CF74CADB1C37 +:1025A00097407E54E947AA759EC93DD617C931EABE +:1025B0001FB9C7C2F6CBB5B1B27E9AA86F7CFF78BF +:1025C00087354E273F4440F83F22E9962D43DA07EE +:1025D00048FFC810EBF74F919FF0B4BF9B85FC827A +:1025E000A7979D13793527117887B984E13CE6BF19 +:1025F0003E15E7049F82F79DABD9AEF2D8D311EF19 +:1026000053054AA06A5F6D1CD9E9D6D8C23D648FD4 +:10261000CE403A263B7BDAEA083B40DAB733D6D8DD +:102620005AE987FF1B603FD44C69BF576D3097CF85 +:10263000DE7182E96E7604DDF9A4DF3492EE7A76FB +:1026400093FCDC1B7A13DD0DB1C658781FB757F821 +:10265000D14E2FB3C10A82F70925C067F2A0EF2738 +:102660003D3B6F2FEE638861FC228EC2A07F037F0B +:1026700027892E7BB4AFD74F3EFB61FFBBB04AF535 +:10268000731FE4FF1AD393CFBDD7FD45CA3FFF6E3A +:10269000E70FE0C2FAA5BBBEBB85E7B5CB0134AFFF +:1026A00053BBFEA733E9E3537F76B8899E4F2D7560 +:1026B000F0FED9BF2B96F5FDA94C6127D6EEFC366E +:1026C000BF89E5F8325E9FB1DDC479CDE91DFFF821 +:1026D00088FC12A77738F87C69FE2EA157E7FF39EE +:1026E0002A00D47EE7B7BCEFFB4FC1334F9E839ED9 +:1026F000427ADCC6FBC8E6CE34FEBC5DD724917EB0 +:102700009BBBBDC13E15CB4B5FFA219FE4D4A96DA5 +:102710000D76926368073F4AF435B95BE643365C51 +:10272000BFAFC836BC0220D4EDE6D1741E148917A1 +:10273000ECF72BB22FE7BF14CDEB8378A922FBB5C2 +:102740003D7CDCF15F8A8F53B6C6A19D88EFB72A26 +:102750007D494FB4E245E175AEDE111BC0BD0CC131 +:102760002FBEEFFA369FF6E5978277CDFF67F06EC2 +:102770002378FBFDF7C16BD0FB55DD84BE8AA4FB3B +:102780000BF9FDF93B38FF54AC9BE77B99FCFEE667 +:102790007F29FCFF5BEBDDFC5F0AEFA5D77B9F5C2D +:1027A000EF58CDC1FEC31F3AC38F803B3EFBBF93A2 +:1027B000AF2F05778B5D64713B0B717E935236C7EB +:1027C000927D502BED8E5A54C78497C6B1AE4D56AC +:1027D000B107E1FDC848FA3776599C2DF61FB5F0D0 +:1027E000C9E04ADA3FA13DF118FBB13F510F22DCAD +:1027F0008DBE62B6131C20E8EA5CB2F37734AF9B5F +:102800003C636CEBC2EC3DCA6F277BEF2A8746F92D +:102810005ACFD10C8A53AC2D72B81557FBF81999C1 +:10282000BCB74C89A3B81AF33E6552C47E63429983 +:10283000B97C3C6C4AA13883F155360828E49736B8 +:10284000D7BF82364D88970950B35CF8712E89271F +:10285000DE1F3666E89BAC6CA7D4C01D08CF38BD20 +:10286000DBADE487A9CA16FBCE5AB815F464F65757 +:10287000F03E13C0C27EEBC6E4A2DFAD0AC7AF983C +:102880000AC2F78D5A88E57B90B5C8BE1DE9F9816B +:10289000F369A5CE66F28B3900F78F62DEA6FDA63E +:1028A00083BBA67090563C0FC2FA6F2CF1DAB617B4 +:1028B000D239A143AB759BDA33DCB59EBE4E3DE603 +:1028C0007F1FBFD7658BB8CE48FC1A691E34DF4224 +:1028D00076661CC4B9697F1EE7CC0035999BB3FFAF +:1028E000904E4ED91F3808EAD91F58A49E6C818398 +:1028F000E30CB420D921B50BB03DD16306E8E2BCAE +:10290000BC82E31914F0C1F9E8567B737F11DA9B9E +:102910002E4E995FF76F16F6E6B9E26756F4463A1F +:1029200027DFB7BF3FD9B5F2CFDF5441EDAC6071BF +:10293000D33E183C1E5DEB4FFD0ABE882FB298F6C1 +:10294000C1099E0E26FC240D4B34E553BC5798EA72 +:10295000772CCB3295A7FBAE349577AAEA63CA678A +:10296000D65C65AADF65E12053DEE5FF89A97ED745 +:1029700095A34DF9ECBA49A6FA3D1E99622AEF19C2 +:10298000986D2ACFDD72AB29DFABFEE7A6FA052FE3 +:102990002C3595F70EAE3295F7DDFB9029DFAFF1C0 +:1029A00057A6FA030E6D32950F6CFAA3A9FCEA2F15 +:1029B000B699F2D734FFD954FFBAD0CBA67C09BC64 +:1029C00066AA5FEA7CCB941FA27D60AA7F7DDAD1E4 +:1029D00008BF87E6BFAD908E39C579DF0DFA095380 +:1029E0007DDCA95510DDD8243DDC9873C6543EC269 +:1029F000FD0F537F76940F744EEB24FF30A61DA07D +:102A00009ED31868E4747B5FDFEBD9B46F7DD4BFCD +:102A10008288EA8D81DF7626BDB1BFF8363EF73A6F +:102A20009726CE9D55685689AE6F72C6F869DF6FDE +:102A3000F06D5CC80A41DC8FC687144EB550340473 +:102A4000715F9A108AE2343194C4DF9342099C2664 +:102A5000873AF1F794503AA7A9A1AE9C760CB93801 +:102A60004D0BE5729A1EEAC9E915A1BEDCAE53A86A +:102A700037A719A1ABF97B666820A79D43A5FCBDCC +:102A80004BA884533D7423A7AED00D9C6685C670B9 +:102A9000BDAEA1519C760B95F3F7ECD0444EBB87AD +:102AA000A672DA2354C9694E680EA73D43B338BDF8 +:102AB00032741BB7CB0D2DE0342F74177FEF15FA4E +:102AC00019A7F9A15A4E0B424B387587EEE37ABD30 +:102AD00043F772DA27F4307FEF1B7A90D3C2D0AF7E +:102AE000F97BBFD02F39ED1FFA2DA703421B392DDB +:102AF0000A3DCEE9C0D01F38BD2AF40CB7BB3AB4AA +:102B000095D3E2D08BFCFD9AD09F38BD36B49BBFE5 +:102B10005F176AE0D4137A8DBF9784F6713A28F470 +:102B2000167F2F0D1DE07470E803FE3E24F41EA7EF +:102B300043434739BD3EF431A7C3422738BD21F492 +:102B400025A73F099DE1763786BEE67478E81FFC2D +:102B50007D44E83B4E5BFC08C5B608B9D822FF2C83 +:102B6000E7C9DF1393D8A6DFADA5BD94C70F463FD5 +:102B70000AE4FF1859A3F0BE7C7DF457AFB09C1C4B +:102B8000E8D029BF9CAAA68B71B454809BE91F3A58 +:102B900040C340117FFAC6DDA2DD8A92A3876F236E +:102BA000FDB7C001140F11297F8D71F717ED4E216C +:102BB000BB6B459FA66AF2C3DCEF6AAAA07460777C +:102BC000616FB8653AA0BBF0C3EEEB2BF475C5821C +:102BD0006CF6E743F2E5C175A7D44346FDDC5CD152 +:102BE0000FC43477667D7199FD5C6EBD4BC57B7DEE +:102BF0001BD5394087FD19DD7D23BAB711E7F52FC5 +:102C0000F433FE3FD4CFE48BF503AAC73E02F55F51 +:102C1000B95CF7C3366F19F9CD9A322DEEA5F86974 +:102C200079CA73B6859877A40B7F13AE3BFB3D9BA7 +:102C30000E5ADD64AB4C89F0FF3AAACD7E2587B6EB +:102C4000DD46FEF3F2DB45DC716439FEC5917D5053 +:102C50009E6181556C7FD5BFEAC2FE7D1E6733E958 +:102C6000FFF28873E4250B9ECF0C8FF7F4557FCECF +:102C7000F1CD3E799EE1BB44FC94BFBBD95FAACBAA +:102C800038FA0F641CFDEE943BF6F627F85EB77237 +:102C90001C3568F5998CAF95C28F6AF84F2B513E61 +:102CA0007B907F3F48792E93FC81BBE7DE9946F607 +:102CB000F93DCBB7DAE85CB0297301406C381D05EB +:102CC000445C5526D8292EB7DCBF40257AB7596019 +:102CD00003FBB13B03C70159A217E9A42FAC16733C +:102CE000FCBBA587883731D22374664FFC384FDC94 +:102CF00017BAC75E939328FAF389B82E7F35F1F996 +:102D0000B4D53DB2C83E1DA68253ED63B21B3BB0A5 +:102D10003F5FC53EC3ED4E30DB954F764F907ED87A +:102D20001AA0F3F2A38AF08BD21FF9D7B91DF96A62 +:102D3000D51ACF121A0F34FD575A183DD48D9A4325 +:102D4000EB7344C6D1D01FC5FB9413DD20FECB1717 +:102D5000457B7A62F9362917903EFCE1FE4C1BD583 +:102D6000A37393B90AE3C780CBB1DA9125E845CEC6 +:102D700083EA219D25F510FD1C55247E96C87638E2 +:102D8000BF12A22B9A1FC5A7648AF263F72B814D4D +:102D9000A21CD2303FF5E0151C6731B9E38AC1C0EF +:102DA0007408E4E304DFB205412AF7E1E2D0D52656 +:102DB000870AAA1DF15929E3C460B5C2716226F8D9 +:102DC000703EC7966F7D95CA9B143D4BC37E0F49DD +:102DD000389B32055C4DF78BF8FEE577C7F23ECBAA +:102DE000B75AD948768381BFF2D54B1600D375BD4B +:102DF000ED674427276375DAA795CBF1275B457C00 +:102E00004A24DECAC94E41FCAA121FA8C93E7A173D +:102E1000FB9FEA77B07F0FC7BF85E2234175739CA4 +:102E2000A0316F830E962B3541AAEF57407F96F65F +:102E30001B721ECB53EE009AC7D1BFC5EAE4FF8FC9 +:102E4000EB9128FCDD4BEEE4FDD0B14A5DB1F636E6 +:102E5000C903D3BC88E1208C6E22E9CD6691EB2DAD +:102E6000F9C1E003837E7E907AC348335AE00B3B7E +:102E70008FB3D277CD44B7D7879763BFD7672C007E +:102E8000E2BF2332BEEABBEEFF670CF945D7779766 +:102E90007A44AFC921BEB7B6F01378984F24DD3A13 +:102EA000629C9E9E74DFA687D81F2E57506E12BD5F +:102EB000DDEF603AB8C01FD05D91FB24F0D90D79E9 +:102EC0006BA1EF3A7F2F5FEDF044617FE575CFDFB7 +:102ED00049E7259FC878051CB633AF8F26F126E950 +:102EE0006AAFEC6FAF6CBF1CB374EEE97FD021CE3C +:102EF00041257D44E2D790FB1FD1FE17FB5F4F9F1A +:102F000050AEED8E9FAF4C413873253CA9328EB444 +:102F1000C13159A90C9343253D04DE53A0ED38F48B +:102F200012D9DE63C4A17E8FDFFBF37EDB14575D15 +:102F30002CFB31F243632D5EF2D3DCB8BEEDB895C5 +:102F40002D39629D6F7CA0FEEC9B441FE57637DD3A +:102F50007B58B7044CF1C3C572FCED3912DF1597ED +:102F6000A7DF3F5A688D22B95B173AFEF8D3D87FA6 +:102F7000A2D7CEA73389D0F4F8D3C4771407AA1305 +:102F80009E4E713E6E6C561F8A93AAF3F461BCF597 +:102F900094F333FA5D5B641946E7D9BBE36F4A9F4C +:102FA00086F0AC193543991636CF54359EE3A41BF1 +:102FB0001C37A557C9F22A2CDF35FAB35CD2270D8E +:102FC000E5EE1D14B79AA283464B9EA48BB86AA760 +:102FD0000E51549FC6AD0AEB2F69AC286F183334DD +:102FE0007D3AB6AB1BBB7420B5ABF30C4A9F9E4C2D +:102FF000E54B8B68BE467DE770B8211BBF27A0DE7E +:1030000055F07B62469F4514D296A82EDE4BFA17E8 +:103010008AC14DF7961A1C5D9470BFD7448957CF6B +:103020003011DF798F6E3E077B2347E8275B4FE146 +:10303000577B39BACBA26C92D7632D1A1DFB32DFB6 +:1030400053FFC3ECCCDF0F2B4D7D899F4AAD5A3126 +:10305000A5A37B0ABA58A3A05E2CE4632229F7BD7E +:103060007ED2D3765DAD21F96C6BE56727FB4FA46B +:103070001EE323E32C5339D3FDBD3DC47D8EBD76C5 +:1030800031FE83297A60A9F0BBB0FEE07638FE837A +:103090008AD76F0B937BF82FD603A948D014070962 +:1030A000AA4F1915A6D76D65DE392417D74A7E4277 +:1030B000F64E0F8FBB7E54CAA7B519BE895EF6F3D4 +:1030C000690A953FAC680AE9EB35B2DC886B474684 +:1030D00057D8DE90F50C7D17AFDB75D2E32B5BE4A0 +:1030E0008298B75DC28BF3F2109EE3A57E33C6B71C +:1030F000177B59FFDA07FB1750FA9022E0F197008F +:103100003CD69BCEC355937C5E37D1CE7AF1C17449 +:103110002D407EC36D3D0CFDEF4BE77DF260BB851E +:10312000F4AE26F5CB8399DA44A1476A80F0F2B079 +:10313000313F15184F8CD6B0757178BCFE69EC1F05 +:10314000023D09659AADC8CF7AC556F6DC9DE4AF5D +:103150007AB8153E8F9DE053849CB40FB7B39DF0B1 +:1031600082E46FFBE0E7584E46CEDFD02FC67A46AA +:10317000D2C1057A2022FFC0287B3A8D9740F07695 +:10318000E5CFAB5BFC72D8F74323F630FDDC930C44 +:10319000EC675AB2E07FF89EF29A8176DE4FC1B2B8 +:1031A000B43DDDFAB3E9C7F5EF193B1A88FF5616AF +:1031B00039E8CA00AC531AFD5309FF684F533CE18C +:1031C00047FA9B9E24CCAFD960078A1BBE0FBB2D4C +:1031D000C17E1FCAC962381F18B7D449F78F627AF7 +:1031E0005B981AD7783F89257E7C49EAC36BCE0667 +:1031F0006AE388BF87EB1C976A7C1F782C688DC7B1 +:10320000EF89C3B43EF4FDEA1175E49CC3BC9FF59D +:10321000DE0325EF8C1840FEB93C95CF41D729C17C +:1032200095569AD70DC0FBBBC4C141AD54C8071E0B +:10323000D73338386C00E56FB7B2BC48181C6C1C2B +:1032400089F53D275585FA5F439564DC32F9DC6AE0 +:103250006D32EF0F8DA9CA207C069D04FFC22DDFC1 +:103260008F5107CAFB3858AE6E2918EBCFA3F24630 +:10327000211790B4982EE1E010CEFB1027587F9FC5 +:10328000AD91ED8B7DC8134B28EE92EC0EB287A367 +:103290002BD2081F2392FC2AD5B797026C22BFA21B +:1032A000F530D7B7F5D5B3C2ED91F3927E564BFF0B +:1032B0006F4CC43DF88552BE4D9669ECCB0B80E255 +:1032C000A0D7BE6D6579B1B6C4AC6F8C34A6D06E94 +:1032D000F21375C833E79DDDCC795B8639BF4C8E20 +:1032E000B73BFE3C103CC63DB57511718B5DA47CAF +:1032F00035D297ECFAED04E74B1D624966615EC872 +:1033000037FF57AA949BEEE23161F2E8A91CBB1C7F +:1033100067BE427460E8F98F42C7EF277A48F664C7 +:10332000F5E139C9FA865E4B8EB87763A483A41E93 +:103330001F91E4AB69EBBECD7512AEDAC50BF93E59 +:10334000A8F1DD2AFBEB7FC85B4A711D8E64BD4F7F +:10335000B87EEA27DBBD93EBE997132E1F77472949 +:10336000AED8F0FEC5F85A8CCF43F1975031BACDA4 +:1033700078A2567D2FE2970CFB27B2FC518957CFDC +:1033800025EC97B1B2DEE5DA2F7FBE4CFB65ACAC25 +:10339000F7924C2FD77E29B5369D71919DD2C5C22B +:1033A000FC7B4F46965219368F57259E66F600A134 +:1033B000BFEB0601ED87A200789F6D717A821E6CCB +:1033C000EFC47D37D9F5AAE6F6907D80728FF3D6EB +:1033D00062FBC7B4BF3EA9F866D17A58CB5670BC21 +:1033E0009235C6C3F224924FDA9BEFBFCB27C87F3A +:1033F0006CAF2FCB895A43F6BA6735C291FC2FC107 +:10340000B1B42D380CB93439C7B286E49211A7D6BD +:103410001E3C91FE85D5393126FFC2A5DA1BFE84FC +:1034200044EA03E7E372BFA6911DFFB05B657FC866 +:10343000E1112F3BE95CF08CDBC287146BA029B64D +:10344000ADFB89CE90153C4928FFC82F81E9911E1C +:103450003AF7E7D4EB589ED8D384DCDF1DFF00A7F2 +:10346000CE16FBBE8B894E0CBA8EBC6767A4A5B284 +:103470007C6C8EA0A3610E5F19EBFF8A3E26BEEB2B +:103480001F61DF1B746AE8A75DA16DAFE5235CA92E +:1034900065426F75C9D14DFC945AE62EA6795FF747 +:1034A000FD7551640F0D1D61F1B6759FC8B0F78BA6 +:1034B0007B08FC19F389AC3752D2BF31EFEBBE3F2A +:1034C000E5E47E07B6DDAFC18746FD8F42579D25F7 +:1034D000FE225DCB7A3DE313BF8DF46B11F07D09C5 +:1034E0005B91B0874BBBDCEAEC9027F86F760CF170 +:1034F0009B83FB31F8EEDA76E2F2A7F614786DB82A +:103500004EDFD14C767F06B849CF3AC05B42F628F1 +:10351000A8F12C2FFC3DBD6C67A1DED3695F764B13 +:10352000ABBD5C16EEF789D7BBB3DF27CCFEB18706 +:10353000FB7BDAB3934FE62418E7796C27DA3C601B +:1035400021BB37D2EE34EC2B50BD8C8748BBD32641 +:10355000ED4EFAB3F50FB353C117A4F3C5381947AD +:103560008BF6785437B2A7C659DC4B09AF649F2657 +:10357000B7DAA7A07A783F13579CCAFEB98714C35D +:103580002EF3F9C95E4938D80188EFFFD376E02BD6 +:10359000D27F50A7B8D3A97DF87E2D7C3F67DC5F32 +:1035A0004B91633694D7009DC33AC6EA0AE9A32437 +:1035B000B94F4AFCDEBAEF3A846BEDD841D94BB132 +:1035C000FF5D1611279C38D6A2507DCDA315FB04B4 +:1035D0007ED3C95FB1EBEF1DD26784D1C9B5A59F7A +:1035E000E592DDFC90CBCEF7D0574ABF98FFBB0EDB +:1035F000BCDF2FEDDA3F3DFCFCF70649176BCB7CB7 +:103600001EF2C7AF74A52A53C2FA1BDF53D0F703CB +:10361000A366B0BDFB72F462960B2DFBB365C2AF1F +:103620001849A7037A0A7E73487CAC19678972F23D +:103630007E749042FBD2013DA304DED47885C6752A +:1036400078C4BEF4E1215A31D149DCB2056C25A21F +:10365000DCB1CF24FDDFB383B867AF19FB1F606314 +:10366000A3EE9AD48DABC2CE154A8CF92AC0EBBF1B +:10367000CE66D0BB97F7B1EB52BAF521FA78E09A53 +:10368000EEBF243CD97ED18BED09A35D5D77DF2BA6 +:103690003DC86F3A68FCA16940FE15B74EBEEB57B6 +:1036A000245F7EA8814A72F74314B24B14EADFEB21 +:1036B000A5A37FDBB5DF3C3B4D6FA3BD0DDBBB5A44 +:1036C000DBFBBA7B6FEC89E50F8F18CFF6E8DA32B7 +:1036D00077FA14DEAFDA991457BAC4BE2A61787744 +:1036E0007EFFC3804B97EB34BEA7E8E781512BD216 +:1036F000683DB27AEA92FE7C4C7FC6BE70A5AB7F75 +:10370000FA14EAA74CC81DC37E5B33CACEFEC307BA +:103710002676E7780F5A4FF24BE872BDB264FF6B22 +:103720003DA7D3A6D37C245D1BE3187C5587FB52B1 +:103730004AE3697DC3E87BAD5C9A97A3E3190E87E2 +:103740009EBA91E07853CA559C8FA80FDAA2669A68 +:103750009FD7DE8FD683F8643ACFEF1BC64B43B9B1 +:103760008FE93D55F247E270496F65F640B62B9CF4 +:103770004F4677633E413EF0319FF4E176C67CAF21 +:10378000FDC7550D746EF0902DDE4DAC60F8112E16 +:10379000D75EF2BC1CC5705873EC7CBE9516A3595D +:1037A0007E47F983D640168E5BF2729447966F0A75 +:1037B0003FDF5A25E5ECB2C5004107B4D887AAF42B +:1037C0000BA6C5404BBFD4CFA0887E562C76723B4B +:1037D000A31FA33DFBB9BB5ED8BE94DA17B6B65F94 +:1037E000B95883608F0BDBDBDB693F3862FCFB166B +:1037F000A7C9F105BC7EB4D7789F20FB71B403C77D +:10380000908879D834739C44E47C9CEDF43334A2E2 +:103810001F479A39BE22B29FA876E0BA3E02AE2870 +:103820003DF1A2FD44B7331F500369A37B5DB8BED1 +:1038300046BB18397EE43B4E3179E6B88F232CB96C +:10384000010EF4F4FE95E400EAAD7CF6E32C12EFF1 +:10385000B355581AB2E9DD888AA5414E23E971189B +:103860004AC546F6A3B853496EBA6AAE8A273D7078 +:103870006675BF78DAB7FBE244B9A2FA06507ED883 +:103880003FA70EB0932DF27E2CD0FADDDC15268FEB +:10389000C6EF9315318F9B6B6F1846FE91A392FF75 +:1038A000F723BD7A906E0E20FD7970FDDF423AA2BB +:1038B000FCDB480F947F77B1CEE97B8B73383D6694 +:1038C0001776DACDF25D0ABAC747F3F952CAAB2FC1 +:1038D0007B1AFEECDBD328BE69D83FDFEAC7F7A02E +:1038E000FF786EEC0D9D5BE16B92EFBCDCE431DFA9 +:1038F000732D1B6BBEC75AE9BDDA540E397D5BF3DD +:103900006C3700D3CD94952E7E5760E2F02453FDA2 +:10391000F12B3B99F2CA953ACF6FD4B0AEA6EF9394 +:103920002A724DF9CA10CA658A6F8034CB52ECFFF7 +:10393000B60356BEF778DB82EBE3EF1479D6EB9152 +:10394000F83F66DC3B7A47F20F7EA7F538772813FD +:10395000F8BCED9F5620BB1DFE28FCF1531F51C043 +:103960008F5386663FC72BDEBED1C1EFE44C7BC4CC +:103970000A3E7E3F47613978FC40F6A655BC9EFE64 +:1039800047A95E33D6A3F3214BF46A6EF76514E8BA +:1039900074EF746A93EC4FE9C3F7270E2FB887E3EF +:1039A00007E7A66239DA4D7F1B5137C342746BFDBE +:1039B0006B0A9D2FFE6D9B15485ECF5AF0767F0DEA +:1039C000F1397B4FFD3B45D8EFB13A2B6838EE8992 +:1039D0002D8E8D224ED0D391FC8EADF006388E7296 +:1039E0005A576F8F2B119FC76704F239EE6B510A3C +:1039F000D3751B7899F12EE1C512A73F86E9541BB8 +:103A0000E205FB9FFA5E26EBD556BA97F788643F2E +:103A10007E284C07B4A58FADB6F1BDC963F21D89F0 +:103A200063755D37FA795EDB98CEA6A8BA9DC69F0E +:103A3000B2DACA7685F1CE85C19FF0A0D5877B2FFB +:103A4000F0AF547CE2FE8A66F1937DF9864DAEEBD1 +:103A5000007EAFCDB83F1EA91FBE42DEF185DD8BD3 +:103A600099BD53DC4B8342CD42F71946360E798C13 +:103A7000D6EDF4DEAEF1A47FBE3C38C626F026E2D9 +:103A80004967D536E4D33B522746F83F53317DDBB7 +:103A9000E1BBE94AFCFE457AFD3ABAD7716AC76FC5 +:103AA0003BD33B4C4DF27D2C631C5FFBEFF58D232C +:103AB000BCB7BCD721EFB3CFFEA390A3DF645EB940 +:103AC00031DC9E68C5EF12810F591FFFD2C4FDBBC8 +:103AD000602ADDB3F5E9C0F75DCBA15EC6F109FC54 +:103AE000E9846CC49F56ADF0FD9FA916F72D6F9128 +:103AF0007E5E1AABD17A1AFD1F957C3DE74A2107FD +:103B00000CF9F77B999F6A9CE3ED127624DD13266E +:103B1000BF681583C8F70FEDC45FC63DE19F5F998D +:103B200028FDCCCDF63B93E93EB79DDFCD9941A76B +:103B30001F98AFDEE2080410CE67255FCFB63FB90D +:103B40008E1C55336981B19FB99B954050A1FA1BDA +:103B500087721C34404DA0379507863652B9AED6D1 +:103B600004C9931910F7859DB81122B9E287C08A5C +:103B700044EC7FBA8C37802D581E2677E6D69BEF13 +:103B800017CFA77BC5A6F334EF0A3A979846E712FA +:103B90001ABFDF62BE475867E3F337E3BEB3373A75 +:103BA00096E34D67AF117135ADF3B1C279C4D90C4D +:103BB0005F60CF4886577107E0C2F9CCA4F1925BF1 +:103BC000E1B9D4FC22E733C32DE44C759D1208B44F +:103BD000313F03BFF1C5A093DC98837825FAC67105 +:103BE0000727101E715E41AC32C3EF8D9B5048F722 +:103BF000372148EF6920BAF91EEAFC0D0AFC4AACED +:103C0000F79BDD525BD7FBD3E4667EDFEE535F4C60 +:103C10008D9FEE1FD57CCBEBBF07D799F87ED6D60C +:103C2000809DF4F309A88B8B41BEA97EE4C01E22BF +:103C3000DB4FD73C934A7663456230DB8272EFB547 +:103C40003F96AF1DDC99BAF7B23E9AEE5CDD181EC6 +:103C50003F67A4B30266BCCCD962CEFF58BC818C4E +:103C6000CF25DB99F6B1D3375BF9BC36AC9EE97C46 +:103C7000B5CADFCCF7ADAA10DE5A8DBEFA992EA7D1 +:103C8000BB41A7B8D77F777E60AD60BA3B877460D1 +:103C90006D8BEE2E73BE91FEAB6357CA7B5D6EF1EA +:103CA000BED0E91AF9AEE3A2B6DF998DBCA77918A8 +:103CB0000D43D2A3CD07C43D3D170CBB09841EB5EF +:103CC00090DC6C4FFECE90FA713AE9434C3F7BE4B6 +:103CD00099385A7763FD67929EC96BD533774C0D3F +:103CE0006612FDDCF17C941B47868ADF38D8AF7002 +:103CF00072BB83CF6522E769EFEA835CB257A4BE4B +:103D00003CAE1CE8AF917E94F2F152FB857F15AE7C +:103D10002904575FD2FF02AE4F560A788EAE16F0D6 +:103D20004DBB002EB40F08AEDF3ADC248ABF880AF0 +:103D3000B2FEFE62AB156A795D85FD70CE8974D4E2 +:103D40009BED02D6FB5FA608BD6FC037F7D6773F65 +:103D50005271DD67756FCCA7FB80150F3A58CFCF36 +:103D60007A3696F1735C29E948FC76B2CEE1892176 +:103D7000BC6D89E2EFADF369D1FBDD73C3F5FE6580 +:103D8000E28B4E08493FCE03F1EEC3BC1D1DF97D09 +:103D9000A4D525506FE57B7F4D2CC79074F83C1758 +:103DA0005E30C73B3AC0ED74D2FAB413FF4D06360D +:103DB000BD3F3383EA231CDF647F7DCBAD8C9FE660 +:103DC000EE2417E67708DAE83D93E6AD8A7B13F137 +:103DD000D3ED2571E43AB6C9F8DD21B9C22F302CF4 +:103DE00057C83BC553C3F1B97E1DB407687E1B4459 +:103DF0009C3ABC0CF57CEEBB41C0837B738647D1FB +:103E000035767952BC3FDD7780184B9BFE923BE4C0 +:103E10003873AD16B6A3ABEDC29E3E25F719E3721B +:103E200085BE1C972BECEAF25C236EA5F951A283A8 +:103E3000033B1D1ADF2F50612ECDEF8062E1B8FAEF +:103E4000B3B9BE49B42ECBDE7364933C1EED8CBB7C +:103E500099F87C59C20CBEF77B0B34DA687D4716A3 +:103E60002DD842ED3EBA0234AB784FC60B61F17EDD +:103E70006FD80E0FB99DFC4858D78A7B90F2A2CF1D +:103E800033A9FE06CA231E3E8AAA1F723BB577A934 +:103E900040F70EFC3B1D6C17D8063565B27FB003AA +:103EA000406D6F8A0FDDBD9CE8674F5A528E86F5D4 +:103EB00027AB1DDCF2DEC9E0AFB19E5A25DE1381CF +:103EC000654DFD687D0A609946EB87506F3F9F7492 +:103ED000317A32BFDF544DEF0AF17B484868458C98 +:103EE0005753BEDA6E94EF19773683F1A8D2BD8DA1 +:103EF0003741BC63549DD5ACD2F94033D2219D13D8 +:103F00008E2B6A663F279285FB26E49BE03EF3FBFF +:103F100051138259FC2E2C78F49A78B6A3F421849C +:103F20009F43B9221E40811CCE8F1C0689941F0D11 +:103F30002EA6A3D11E97BB16F15BBDF472E7FBD68C +:103F4000B8B3C594D6DB285EEC16C937D5966D3C60 +:103F5000BE31DF72B589C7CB280685D6677E22EED3 +:103F6000E3089E59228ECDE214E515559048F2A043 +:103F7000DAA230BD3DE2FB84BFFB5C7A62F879E8EF +:103F800066833E8D7D9EDAB49CDFC12D13EF8BF5E9 +:103F9000C66986AFD37C7BCB7E50A7FEE6A0994056 +:103FA000F5E6EC783E9BDF5553740BCDAB5EF63BEC +:103FB000C71913A4F31678C2CCDF6FD219C945F81C +:103FC00062BFE48BFD922F5ECC35F69BF5ACF7E734 +:103FD000ECF89F43B4BF6DAFFFB90E08F2FE69A7BE +:103FE00083F1A2589ABBF17B6BC02F50503FD994FC +:103FF0009F81728AE6FF7AAE886333E87B86D4B706 +:104000001614C2E7D9FEF1DB07BAF8DEF4B1F0F816 +:10401000D55920EC96D99BCDDF215C5F5B4DF28BAF +:10402000E3B7157B33BFABAE5C1BE526B95E6EAF65 +:1040300067BF8042722DA755AE45B6B3D509FBCDFB +:10404000B65A617BD8F0D73AD09E23395F99D1DC3C +:104050008BE4C094E41AE16F9776F70C3115985110 +:10406000732790DDB007ED12A23F47CDE7EFB39F76 +:10407000FE11317F55DAC55323DED5A95C6986EF81 +:10408000881D4D469CFF915408909E7244BCB773A6 +:10409000C432CA4FF2DD9FA5F2FB1261FE77699F21 +:1040A0007841C4698BEFAAB43F3FCEB599EEFD1BB2 +:1040B000747A0EBE5789088DBC7730C0B57DC8AF05 +:1040C000A004880E6EF294EC15E99220DF7B520179 +:1040D0003A25F27B8850CCF5C43BF5DE618A3F9AE5 +:1040E000CA3DB6E3E1F0ECA77FB4F1BE823DAF9DDF +:1040F000772B8A932EEBDD0AE3BDD00A92C75D5B76 +:10410000E3E62BF6897BF2DF46FDB3F341CCEB0A05 +:104110002204EDDA3B3B7CF4AA0FF34D3FC48372DB +:1041200005D95FAFFE86E2BA2B96A8BCCE15717793 +:1041300070DC77D0E164BBD93F28F81B8E03B73B16 +:10414000F95ED87A02AE90E08815FD5B9A78DCC9FA +:10415000D07482DE29BB3EB93196C4B0116FBFA2C4 +:10416000A4EF23744FDC9D9736DE99C9E7DE328ECB +:1041700023F31D7AD7652CF9C138DF79BCA700F984 +:10418000F3D5E65B7064B8FE89CEE35584FFD4DADC +:10419000E647293FF9891C91BFBFB97314E70BC6E5 +:1041A000539CC7A925B23F7FC178F2F79EFAA5C8F4 +:1041B000F7C3723FCB916036E9D59135516ED20F7E +:1041C00003481FF76BF59355585EE614F2B05EE1B5 +:1041D000A5EBCDCAF30EC8A573DDD8631C27539594 +:1041E000EF19407AB2F84AAF278FE4C7C1406A0A94 +:1041F0008E37DB028DA4478D77A9EFB198DF2B1D99 +:10420000902BCEE38C74442F2FF763E00DFBFBC99A +:10421000BFD3DFE13C737F863D335DF23DF63F3E29 +:10422000AFDFBFDEBF21478CFE7E77E1FCA7FC3B02 +:10423000F3CFC8177836FA33EC5E038E5E640B2139 +:10424000DD65906D97D23A1FE3FB7225983281E4C9 +:10425000C33E2B9F6BBABCE57CEFE04C91AB379D26 +:104260001B9CA919106FC17E6BF384DC5F7EB7F0D5 +:10427000372C4F199F46F6D689276726917D314FF7 +:104280009E7B9F6878CF4EEF0DCD97E7DFF3B63773 +:10429000D887E6D17B2A0DF6D230BBB5BAC5CFD2CE +:1042A000A4D2BBA7CB533E532B791C8BD42F4B2EC0 +:1042B0001A1FF2609EA187049CF9129E5F15785622 +:1042C000E585E1DDF86EBC731DD9CFDBB29FD979EE +:1042D00060EAAF4011EB55D141E8C37E07DD33DE24 +:1042E000E27D76BE85CE3BFB1FAAB1D3B9CEB42BFF +:1042F000073D123E9ED1AED58FDC6CF623EF107ECB +:1043000064631CB79C5F4562E3ED14DFFE76DED884 +:1043100075C4FF37AE8796F728C93F3BCC61F0EFF5 +:10432000ECF18333845F93F22FE44D5B47F1117B13 +:104330003B34FEF42DD2B3F7C6C226E4FB9B07C480 +:1043400076DE46FE3E7FBC0268CF943862BBD3392E +:10435000F5BE9E256F33BD01B07DBEAFA7772BCDD7 +:10436000BFC9156D416310E9C83683DFB5F447B1A5 +:104370009FD2971FED23FFDE5E0B0C86C456BC3D1B +:104380009D27E8EF6D82A51F8D2FDE7B2101B58D66 +:10439000FC854BBB2844C7C6B8077A961C643E927E +:1043A000E31EE8E96D90F390F5E3F91DA9F6C68FD9 +:1043B0005CB75D72FC8372DDBCC5487F617A72F4C4 +:1043C000E068537EECF024F084FBA9C77632E5CB9D +:1043D0002ABA9AEA4F9A966B2A1FE1682C0CB70BFF +:1043E0008C75BBDC7D5863832F39A590E3599B9F67 +:1043F0002DE4F5DA3E8AD2759D34F24BCC5979031F +:10440000FBBFE343E59C56D7DDC08FB9CE0D8DE1F0 +:10441000FCBC5034E7F75B1B87F2FEE87985CF1BC5 +:10442000B09FB3F49ED4DEC43E40FDCCDBBEB5F0FD +:10443000A0B0AFBC14873AC2FA6621E9A1115D347D +:104440004B2DBD4B168AE27E1A077D5048FD0CA30A +:10445000FD05D9B7DB069611FD94D4C66A44DFED9D +:10446000F1CBF779C29EB43589F90E098DE2FE8C45 +:10447000724BAF2C93BD604BD9AC129F1870D89A79 +:10448000144E7F12CAE574FEF6512AC559FF25E77E +:10449000B7C9A427B07E0CA52EEFD5825F50FE4091 +:1044A0004CFBF87548B9532EEF014515783AF6C222 +:1044B000F98D5CD4A43A090F31768DF683238B7A7B +:1044C000A7CD08EBA7B66122909C7224839DF46B64 +:1044D00039A6A561E5BE76E26E327B99E553CBEF56 +:1044E000291C7E820F816FD104CD1874D1A1973918 +:1044F000FEA691E433ADDFB3E23C22ABC0E7EE456C +:10450000F4510265DB585E3476A6B892FFD4FCB154 +:10451000675EE7919AD81FC4A94D40F1CEFD5AE0DD +:1045200010F4792938B264FDFD56584874B1FFBAC9 +:10453000EB1A69BFD37057DFBE74FE0D5AF3F7EC68 +:1045400077DC757557DA270FE96597F188C07690A3 +:1045500061FF63BDCFE8DDA4533B7B6AF4EEECFC66 +:10456000B8E6EE245F0F15F886D0BAED7FE9BB8F71 +:10457000E8DEB9272656C4BBEEF8F6337AE7CA134D +:104580008AE1FCAC3CCF50C2577BF3BC141FBABCD1 +:10459000739249CF9EC129D17B59676ADEDD3E8A7D +:1045A000D235D11C17EC5B29F8CE27F9AF52D2EDEA +:1045B00014C97F956A3DF3D7640A84C7794D59A41D +:1045C000F4A2F7007031384EDF46F4D897E852D0A5 +:1045D00063752841F2B14BF623E83E922FE78592AE +:1045E000B89EC19F3717F86EEFD54FACDF421CEF76 +:1045F000279A85EF43F996A617127F5C9A3EBE5321 +:10460000E97E9BAD58B1117D38302D0DE367AF5C6D +:10461000EFCA69621F5359E4DA147EDFE967BD2CE3 +:10462000D2FEBF3C3A9F21E9634A0CEA49F627C50E +:1046300001F9E92A5274F6B7DE7A2F3BEBE0565BBC +:10464000309BFC39B72E8862BFDACC43BEA1B1FAE9 +:1046500085EB3531940F3AE2694CA81BA7D3AEF431 +:10466000DD43F8A80C8D9778CC17E7857A1A9F2B35 +:104670009DFDAB38573A5B33A0E39D22CF7E957EFC +:104680001EE1C7B3051CEE8D2EF2E3F9ACC40F5F3B +:104690006482F630FB7344B9E1C723FF20F9095B5C +:1046A000CF03FD2D7E3DE21F47B2C5746E79817F39 +:1046B000AF44D8532737DBC4FB780D6FF6A7DF353F +:1046C00038EEF2B09F6F5A575F80E0983D3AF09411 +:1046D0008DFCEC75CFBC53A4B7E2B16210DCC8FB13 +:1046E00092972DEC67AC5F6D1D26E239207A54F865 +:1046F0007D51693FEC03616F44D2F5EC5057C68F92 +:10470000A1570C79FDFCE234DEAC1A72FB52FA665A +:10471000AEDAB8FD00E267EE9A78CDCFEFF51D383E +:104720004BEF35D2437A74F517F987E5CB990CDC5A +:104730001586E99711D66D850759FF68DE5AD23381 +:10474000A55717F3BD8308797D7CCB5BDC9ECEE457 +:10475000480F0D7AFC1FCFBC0FA48F267AE97B4946 +:10476000AE02D636FC79861E36E037F0F11799DFB7 +:104770009BEF3974797A208AED55877F14B01CC578 +:10478000345C8EDA22EC54E3FB873F520FBCD6CB6D +:10479000BC1F30E6D96837EC2631FFD740D815C6A4 +:1047A000385905A3CFB2BC43BD40E37FD74BD8AB4C +:1047B000FF39B8DAD60FDFFD48FDF059047C061C3E +:1047C000065C7F95F05EAEFE88CBBF3CFD61559ADE +:1047D0003F637FD2CE28FEBDA9FD2F45717D8F336B +:1047E0009EFDE8A52F7D7E86DE9BFE55C198B8FC18 +:1047F0007EA44F1C2A84D971C6BC8C79BE2EE78D4D +:104800007A26293F6CBF647CFF57F5CED0515B9967 +:104810001FF0CF7BD3B568DFDFD7C87A07D6476BE9 +:10482000E49789E4D7483E8DE44BB4FB58AEEE7D67 +:104830002E81E584C1BF91FCE9F27EC07A86F893AF +:10484000E4DB991A472F7A27E88C2EF4EB08F283E1 +:10485000129FE62604A89FDDD6FA87AF52E8DD4A0C +:10486000611F0E92F661A45E7B3CDF3B84F059F23F +:10487000CC77CFBCAF5F0E3DFEC9C6FAA85A617BAC +:10488000C58169B83EF2B5C3673FC9FF717AA848D0 +:10489000D6DF4F6B4A7656BC9DEDAC4BD15B45BE27 +:1048A0007877EB3F486F15443F06BDB5674F57E635 +:1048B0000B7B1AE9AD32FFDFB26B5E64FA42F9EFAF +:1048C000A57DD48DAFB9396E861041F710905E0A80 +:1048D000C9FFBEB77FA69B7E07E0C6F3623F823A60 +:1048E00089F72391FB817229A77D721FBFA2C0BBEC +:1048F0002C5FECF318DEBDF64CFE3D81CBB553CBFF +:10490000936B80FC4E3E4CC3E590A3E57752CCEB15 +:104910007EEF8F5CF73BF37F9C7DFACBCB5CEF3077 +:10492000FBF4B7B43E97B24FDD36CDB20CDBBB5FC4 +:10493000B706C8CF77A9FD8BF51181DF167C055529 +:1049400043DF2791BE47BAD8FCEFD0C588D2FAB36F +:104950004E5CCF579EBA6502F905C753EC09FB11AF +:1049600026AFF7A82487C03807613F03F30DE5FDA4 +:10497000BE7707231E6F7C185ACF49B07C48717CE4 +:104980008B5F4281F0FA95EF9EA475F435A9E1EFB3 +:104990008846CEC778CF1D0AB15E6C58BE2822BFAC +:1049A00041F443FA28FC1DF8567D05207E77C5E8C2 +:1049B000B77928C5458CDC2E7E8F6A52F1293BF9E8 +:1049C00059469436EDE984F5DE796AE6841864D5B3 +:1049D00049DB159EFF67F9F3D7FBF9B723FC2C27BA +:1049E00046D62BFC7BAE8EFA86A19E36F8F4B31623 +:1049F0007A34C603FEBD936AB91C8E7A0528BEAA16 +:104A0000BA48E178C6CB694FE77FDC3E8BDB07E92C +:104A1000BD90CB6D3FA1B8EDDF75396BD493719329 +:104A2000DC3FAED1987AC5D3961FE57BC9378D168A +:104A3000CB5CB2DFD482DAF5CE6B709D41D089BDFC +:104A400060E904BFF0EB802702DE8BCDF7781BF026 +:104A5000EAE6F6C18BE1AB39DF6C7FB4AC7F9599A8 +:104A60004E86149FE7F8B421C5A8ABB19F79DEA8A4 +:104A7000D574696F44A9A473B87F8207CB1AA3C009 +:104A8000E44F6BA15BF83F1388CEE781515EB79E80 +:104A9000F493D702A67B944376282DED7354BE176A +:104AA000C8EDF58207D6137E26148BFA9C572F4249 +:104AB000E7F511F96241E7ADF42DF2CCA7249F8B05 +:104AC000C4EFED44E2E7EA02819FBFC9FB208D837A +:104AD000841DD9287F9F6B5281D02B830AC43AFC56 +:104AE00044D66F0CFB9D1BC8685D6790BF8313069F +:104AF00037E36962B201F7931386235C8D89D04B4B +:104B0000413A195BF087F5CB984EBC2A9D5BA8F023 +:104B1000F8FABFA27C9928F132A9E08977F95CA163 +:104B2000084DA864E64BDE9F39B61F6893BF7A1420 +:104B30005C402F7E9277739970A89DE2A1FB37733A +:104B4000895EDAC047AF0BDB7B22DA03DD7BB8FC82 +:104B5000F6723D8647ACD7B088F51A1C91AF30E7A6 +:104B6000E35421AFE228F608EDAF8955AE15F4FB0A +:104B700035B39F505892A37CB6D3EF19CC7FFAB9C6 +:104B8000093103892E755B272CB9EDE917DE7522F3 +:104B9000CD8E2279C5F2F54FEB3DDD908F89AF398F +:104BA000FFE7099E78A2939AE56958FF674FBFB85F +:104BB0009E62BD272D7BD0467E8CBB9FDEB95EC535 +:104BC000759A58F8F41EEA4F5DF2D2BBC3958BD0AC +:104BD000655D041C1B22F2FE88FA6B2E21BF9745EF +:104BE000B45F1451BE3A22FF48447E65245F684397 +:104BF0005349BE2F5380F4F2A5F8E38102C31EA8E7 +:104C00002FA473B175057F5DBF1CDBDC582BE8FB5F +:104C100091A7FF2AE49A419FC9C0F2BF3CD9EB6932 +:104C20008B3EEF6B8F3E7222F59428BF2EBA573C15 +:104C3000CDEF583FD0895F8E45E9F17CAF7B1FDA1D +:104C400063B40ECEC615C5545E52C4BF3342EFE402 +:104C50008F088BCB7CE54107C3377DBB389F1C1C7D +:104C6000FD9BA1E9C97C7EDCECE0B8BDF543D30B2C +:104C70005B7F9764C661818F193B9400FD64E8AC4B +:104C800040C43BEFD6D556F6736C502009F970E658 +:104C90002317BE7F4FE7C4F4FB18AB443CE305E5A4 +:104CA000140F5AFB27BB46E591EFE21FA17FB4F139 +:104CB0003EF9CE02731C9B116F6B9CDFFA2EFD7BBD +:104CC000B4AF14F40B8BBB95F16FA0065328EEB173 +:104CD000765F521FA287972CE02C0A3B9F30ECC6D0 +:104CE000938B7DFC3EEC578BAB3835DA9F521AEC38 +:104CF000F47E6FF3A7C07149576DDF7ADFD53AD5DF +:104D0000AF61A3F4AB9385C5E497FE6AF14279B82D +:104D10002FE3A4657CEE35DB1BACF43B475FBD7035 +:104D2000349AFDD5747840FBAA932AD3D1999A6F0F +:104D3000779FE7BC85F7052E08ED3E8FE3DD161B58 +:104D40001F10EF94BA3B123E5F7AC3C6EF0019F80A +:104D50003BFE33E0B87F639E0D8F27EDB88AF631B6 +:104D6000D1F11AA16DA6F44B1DDF62E5F1BE70C64C +:104D7000FF6E38F9B5368C49A5C70EA6DB9AED6EE5 +:104D80009C8F7BE728FE1D9C4FB15E90FDCA012BD6 +:104D9000D943570D8331D4EEAAA00A3AB6FB547515 +:104DA0002B44175F1D438AC6FC89A0F85D5590F619 +:104DB000E7F43F59F93EF5E71B9EE1DFDFF9727337 +:104DC0004A028DF7D5E6B753C9CF351BB4068A27FB +:104DD000EBE416FCF6C51685E7351BE9967EBFFCAD +:104DE000CB2DC2BF381BE992EFA244D079E99625BA +:104DF0004C57FF0F25AAA7E7008000001F8B080073 +:104E000000000000000BED7D7B7C54D5D5E83EE72B +:104E1000CC2BC924993C8401423C09100718E2C9F3 +:104E200003081070780403043A3CA4E1A14C10116B +:104E30001175A4B4C4169B09492084A81145A91F63 +:104E4000EA8062690B1890F68BD6EA1014015FD1E4 +:104E5000AAE5AB5506B55A2D5F1BA5D6F4ABB7DC5A +:104E6000B5D6DE2773CE9004ACF7FE717FBF1B7EF4 +:104E7000BAB3CF7EAFBDDE7BED9DD56E85D95D8C9F +:104E8000ADF6312D520CE95B8AA6AA8CB1B0F58340 +:104E9000A8833107FC3B9FCB581AEBB4453219BBB2 +:104EA00039E00C463448F7F272FC394FFFEFB4ADED +:104EB00087F2356D36571394DFD26A2EBF8D593E77 +:104EC000887A443E87B1EA3FBC91FF8227569EA173 +:104ED00025677E9C04BF14B2C2F30A635F04AF4926 +:104EE0008D60E1860CC6C6411DFCB92A967E55D35D +:104EF00091FF8295B1B33550E78AD8F78CC339D288 +:104F000020EA35C4D86598FADDFE518CBD8FBF8E7E +:104F1000C7CFEF57FABC8C1D55449E311F2C911DF5 +:104F2000C1FC402A3FF582F3C2F1E253C62CBE8F8A +:104F3000A1DD3609BE41DBE764B6AAD54BE3941F79 +:104F4000ECA1FDC30512CDE7E83F3FFBC59300E7A9 +:104F5000D0E5366D18C299695F7702DC3E186C1B8C +:104F6000DDA4C6EA1FB9DC561D867E8ED86BDC3701 +:104F70007863DF8F5EDEEFEB2A687FB43F73418F8B +:104F8000ECE88F8AA87DE836451B06F9E7B23FBEFC +:104F90006B2CE49FBB5529C272BD9D758DE20B43FE +:104FA0003FD6CCD6E41B0CF33B7A5B51A9EA8DAD1E +:104FB000E74B5CCF10C6DECDFA818B79711EEB3AE0 +:104FC00026E37CFB5B68BEF67F2C7549F07DAAC2A8 +:104FD00082B85EBF26D3BADEEF5ADCD101F51A9C47 +:104FE000B932415DE3EB6DC85AE8C07EEA32E57242 +:104FF0005C8F35F95A97CDB01E5FA685CF2B87F908 +:105000005B8DEB14FDEED66C94B62B2E5A37CCC3C9 +:10501000B507E6B1EC9F4B4F75C038D6EC312A830B +:10502000AAF6822154EFB4EC2A6543707ED122A601 +:10503000C4D6B548E6EBB2CA6CA70CF061D92CBC5B +:105040002707CB8321C4EBBA1C4B10F1D6CE2C2101 +:1050500081A78EF308400B63F218FC0E3FB2A99CA7 +:10506000F0F8760DFE379AB1A81C64382EFE48FD84 +:10507000A01EB685F18FDBD8323FACABDC02E53049 +:105080008E6B01AC610094673A7C0929905AD83440 +:105090006B3ACC4B82F5237C06B35BE739B197566C +:1050A000AB3F99B11F0B38EAFD2E11F3886EFC75EA +:1050B000D9649CB7C4D40C98F7120BB3D80A012E4C +:1050C000FD6D73983396D7C75F22C659A684A63163 +:1050D00080239BCAD89E02187F8D3564A4D3BA3B27 +:1050E00093699ED16C35CC6069771BC6570C70886C +:1050F000660723BFC37A32530FB9681D345E83C479 +:105100002A711D76E7AFD64B2938CF1FF9B0BFBA49 +:105110002A262905544EFD876E91C27B244E7F3688 +:105120005C17FE0E7C6649A6CD371CDA2D81F63958 +:10513000F9317C889F2743DAE927E633E4C27DB959 +:105140001AF38EDEF312E2852786172ACC0DF7F1CB +:10515000C8E5FD36103DF57710BE3FF73F3F3C55A3 +:1051600005F9D3FD1C458A913EFBBB4B55A4CFDB13 +:105170003236741AE8E3DD35F35DD77BB19D7315E4 +:10518000E2F591FE1F3DF53AB43F529364A2C74940 +:10519000357FFEF37F66221E27BA241A67BC1A8069 +:1051A000FA8A1C25FEC0FE2791F07C6A6AA55B3551 +:1051B000D0C533B81F30CF409EAF4D8354E907F8B8 +:1051C000EF8CF139A5DFC200D26BDD602243B61946 +:1051D000500FE9AA4EEC4B373C0B387DD9055FB236 +:1051E00017B8F83E5BD46CEC6792A0EF23975BAAEC +:1051F000C386F17F27F0E177823E8F5CFE03828FCA +:105200000EAF23F6E75F1D03796BBF051A92DF240B +:10521000E477B8CE9A240DD779A4BF83F6FF487FF0 +:105220005B58CA41F8412D845FAA233C8CF0C145EC +:10523000F09FD4DF42FCD05EA0D23831B86712DCD8 +:10524000DB95E029CE0F1CDA1E8670CFF81AD76DD9 +:10525000B5A6BA709F4ECB9DA391FEEC05E9042F35 +:1052600045F6BB397D727EB038C60F76C8C5317E33 +:105270006077347728F9267CB221BE5C8C0F7C8164 +:105280007C80E824C8906EFF5D3E803FD631313A85 +:105290003F6E6B2DC37575029D1FD2B07DABD5D807 +:1052A0005EA7EBFFDB74B2388E4EDA717311FE9B92 +:1052B00025829BF5B2B66466C02F7701C7D3234918 +:1052C000A95C8EDD96F135E2455556C026A9C67A11 +:1052D0000AC73F472AC98123F6AB02B8AF55CE852E +:1052E00056DC47C4C76B001FFB1758A8BFBA34C0B1 +:1052F000632FEEAF5FC5F5B4E405B20AA0FD075613 +:105300008EDF3E5747B204ED7DEB32D242526CFE47 +:10531000BA5CD3F7FFEF225F7BFB4BB40EFB1A297D +:105320008C7BF581D4FA22B60F8DB3BBF60049B061 +:105330007AF7B1A1B01F2B99D89B3B6FB1AD87F223 +:10534000CDA03731D88FCD992BA767C0BA36EFB42F +:10535000511E7E9A2D50FF7A51FF8FC0DE26037CAE +:105360006A0A7239DDFEC9353D05D6F57ED63C7F29 +:105370006D26A61686F078FE5FCA323FCCBFB4B366 +:10538000636A2AC229945368E43781B396E92847AF +:10539000AB986B930BEA9D4EA92EC7F6750F4BB4D5 +:1053A000C71F48C16301A443C823DF9830B8B8F2CF +:1053B0007730CF09B559846FEFB38ED9A81784EE33 +:1053C000B712BDD459835CAEDF954179DFCE375E2D +:1053D000CDC944B8290C51768963CD7492135E9778 +:1053E0006407FD6BA6E0174B2C011BF6072074D554 +:1053F00001FE9DB0769461FE4415C0B2009529E689 +:10540000C3FD392E03C5803C989DC1F1DE8FED4769 +:10541000232DF07E9714A9B94A5A8C3F59D28A3B62 +:105420007CD0CF5FDA6E1883A865BD6C4100D7F7DA +:10543000D7676F1E837058827802EDB7346FF3130D +:105440001EB7D58610BE6725CE1F6E6BDCFCB90279 +:105450007474DBB39319F251BBC4F5898BF5BB525D +:10546000E0DF9616E857B9847E77583F32C9CB9F64 +:105470002438A42B195B717FDC772BC7D3AA90F952 +:10548000FB926673BEB11B2E4B53037DE89DF1FA70 +:10549000F21D054EAE2F8F656351FFBC587B5D5FDB +:1054A0006E44FA8575E5683F7249008773807F4DC9 +:1054B000B0E1E782EB1D88F7E7B2603EA4174593A1 +:1054C000510EC4F713057DDB07CC64ACE0033A7DD5 +:1054D000E9F4047A7535AEFB039037A8073F6F53A4 +:1054E000D7217E3C9F38580A117F6FCD980BFCF175 +:1054F00041814FCFDBB8DE0CC4533A1FC67B1EF58B +:10550000682796F3FDFEF5D9C2525CD7735D85A579 +:10551000CB8DFAA112FDC558921B32237C063C7A32 +:10552000AA87F5E76B8A699EBABEAEF381FBC4BC5D +:10553000753C8D6F7F58F0B1684D35FB7098811EBA +:1055400011CF61BC31A7FC539333918FAB267A7D89 +:1055500067E4947D05A363F4C08E2E6239B03EB635 +:10556000A188B101D82FDF77A0D9E93E94DF6EBFC3 +:105570007B5E72ACFD2D5E0E1F7DDEF775F3AF6FA7 +:105580006ACF8C79E7A36F60CFDC2BE0E3639D47A4 +:10559000CF23FD3B65D2D396CA6C1AD2B35EFF6DA2 +:1055A000B17FD393653FF2EDA58991616B219DF5A4 +:1055B00020D71BCAED6CD95C1877693AFF1E6BC700 +:1055C000F58759F7F07AB3EA788AFDEC72C6CA9784 +:1055D0004EE1EDF4BC0E077D7EB77885BE22ECC3AC +:1055E000F8F987A6304F10FAABB3051F8D229E6CD9 +:1055F000B4B03DC8FFA6047F1AC574A3DD5507E902 +:1056000083493FA6F26A8BC36507FEBD5E71BD8804 +:105610000CD05FC8E5F957B26A453D657E66741ADD +:1056200089F2A9B28FEC873A3BC9BD7838FE45ECC8 +:10563000EBD6424E67E9852ECADB999FE46F9DAE9B +:10564000FF5ED66D7F90BEA0B7FFBBC0B7F442959A +:10565000EB2D4532C1276A65D905A4E7B90663FD7C +:10566000B949E95FAAD0B57CE87CA505F069EE846C +:10567000F4EF0F81F92715DA1651BE28FD97B9907E +:105680004F3E64E1F92BD3475B215F2BD9174D03C4 +:10569000788D2CF4B142C3FCF47EE1BB82DFAFCF46 +:1056A0000DD80BE97BE74AB48FFE2AA5684DB8EE0A +:1056B000A19DF9887F7ABBE86F060D463DA53B0F9B +:1056C000F3D4BC98D7D7DF735A59E87315F6F01D99 +:1056D00037F21CECC7F21229DC04F0911DAAADBA16 +:1056E00018ED499BA670F9EA77803EF31DFC0D404A +:1056F000F41D8BBA09E707522EA8B891A15ACF76AC +:10570000EB37207287B37A17E2054C71E7F98C3ECC +:10571000F19F7DACB743DA09755E47762183752327 +:105720001DEC74310BAE5F669D4D20B72400FE5218 +:1057300098B3F4EC4BFF90F2B1D552D7C723114F79 +:1057400003F2794C03A77E8578B5AE16F82BB4CB5F +:1057500009FC9EF25F029EA19DB9F697EFA5A830C5 +:10576000A99B101F607FCECE89E44560BDC7735EE4 +:10577000CA467EF7490DD38602BF29B6074A701F75 +:10578000F4797EB2B32E653CF4F7DF0714AD029ACC +:10579000AE413D1DF1E26B2572157C2FCFBD623706 +:1057A000C2EDECC1CD5955B00FBE424EA76773B8DC +:1057B0003C3A7BD02EEA2D7A5C81B15FAB6933F144 +:1057C000B53982AF01706D730DFCBF429E321DE78B +:1057D000B1DC22CA1FBF86E63DC319F4919E50A9D1 +:1057E000A66F06BC5A3D8CE3AFDDE2A7EF6EC4396D +:1057F000A2CF168E67EAF7E8FBA69B98ABA980EFCD +:10580000271B13DB4F9F769EECD33941A6219C6466 +:1058100047A705F3FE72A08534DCCF9D2E947BFA5A +:105820007E96291BEE46B8AE0538DB615D6BA52080 +:10583000CF5B1DAE10EA6FAC63D352F87E9BCFD125 +:10584000D944795FCA6C186F95180F36FAD838A802 +:10585000FFDFA0CF51B9F07BA9F00FF187295F934B +:10586000DFEBCB8033A840F91C9725DEEF756CDCAD +:10587000B7F07BAD2D147EAF02568078A7EF872E50 +:10588000CF7BDB0F5D9EC3BEDC61DC9732C5292375 +:105890007F59FBF090DDF61C4CE7AB1684C7659E84 +:1058A0004294EBFAFE30DF718670BF51CC95EDCC9F +:1058B000A0FD9CDD3688A9F0EB4D6D607080A8AA34 +:1058C00068CBA07C4AD700CA0380A8FDEC9FDEE825 +:1058D0002E2C26552188ED3E7DE2DD753F84712B0F +:1058E000B6C2D45D340F07CEE30B1FE8D53904EA06 +:1058F0000684E35AF4B3B890EFE63F588A76EA0993 +:105900002BD9267ED66D7748E477616A2AEDFB7144 +:10591000D817E4933E6ED7A8CC518BFB6277CB4C63 +:1059200035C0D9125AD480FD59619FC3B00F096A9E +:1059300022530D707E9B05AC64FF857C6FA23E5F99 +:1059400029F63FC9936EAAC794E6170348A7800FAC +:10595000C86F92B581A671A09B8F4CF8C1A2165C4E +:10596000A7BF54620FC1BCAFA98472437F7EB661EA +:1059700007E2A3BBCEEEB297C2FC4A3F2739622DA5 +:1059800035EB81FEAC8FFFC052080E1FF5852F6DE1 +:105990003ABE0C67C3115F00CEE4B7FDE22D45B3FC +:1059A000D392FC3B747A40BE63612AC179E1712BCA +:1059B0000BC37ABF606C3F967F11B2BB42C5313CCE +:1059C0006243A11DAEC3CEF9536A8919BE693E3345 +:1059D0003C33CACD70BBCC6F8653FFCA5C53F98091 +:1059E000C00853F9A05585A6FCE0E07853FDCBAB89 +:1059F000A798F239A199A6FA431AE799F2C35A1661 +:105A00009BEA5FB163B9A97C7878B5A97CE4DEB57F +:105A1000A6FCA8D61F9AEA5FD9B6D1545E106932A7 +:105A200095171DDF66CA8FEE78C8547FECA9DDA6F6 +:105A3000F271D19F9BCA27FCE990293FB1F319531A +:105A4000FDABBADA4DF9C9EC6553FDA98EDF9AF2C8 +:105A500065AE774DF5AF767F682A9FA1FED9543E9B +:105A6000CB73CE949FADFDD354BF83D50F43793410 +:105A70007158C05104F2434E3A4B787EEA5A896518 +:105A800000027F717CBE0BEDA16F6AB7B88ACCF8BB +:105A90001B1DE64F8DF4A047C5F3B9B3C2DE2853F2 +:105AA0002A18DA295FB44A84EF7FB56EE0FA5D9D6B +:105AB000852993603A4E2EA76F05C68CFE466BA6CD +:105AC0008BA1BE764B84B5A2FC482D019A30CC2721 +:105AD000CDE76016031C32CA5DA6FC657EB7A97EC1 +:105AE000FF4AD5543E20E031950F5AA599F28383A1 +:105AF00025A6FA9757FB4CF99C50B9A9FE9046BFD2 +:105B0000293FACA5D254FF8A1D0153F9F0F02A5366 +:105B1000F9C8BD41537E546BB5A9FE956D215379EB +:105B200041A4D1545E74BCC5941FDDB1C3547FEC55 +:105B3000A9B0A97C5C74AFA97CC29F5A4DF9899D1C +:105B40006DA6FA5775454CF9C9EC84A9FE54C71BDC +:105B5000A67C99EBBF4CF5AF769F3195CF503F3582 +:105B600095AFF933E8F7A88F00BFDD538C78FEB905 +:105B7000A9FCAB84ECC88FE0BBB43645934A10EF68 +:105B8000FF61EAEFC1A4140FE24F354BD4D01FB42C +:105B90005EE17EFDEA22EEBFF94A66D104D4E3431A +:105BA0007EC6CF173A991BEAA7C32FA8CF48EC6F40 +:105BB000A4DFA7F8582BEA89A0BF90BEE3027D06B8 +:105BC000E5898ED7E9724E0EDA274931FD34EB7C38 +:105BD000D1A5EBA79B5016035D1E2E0AFCA808E674 +:105BE000B5BAF5E0743CF75AE568B1A11FBD4CF1B8 +:105BF000A646813E5F4BE8D9AE9DE100B819C63B91 +:105C000091D09255D8071DCF709CA5FADDFD5A7929 +:105C1000BF122CD668DFDD5D0333057A6DA901BAAA +:105C2000023D665B8D8BF2F7D7B829FF408D4AE9BC +:105C30008E1A0FA50FD56854BEB3A684F28FD4F880 +:105C4000281FAE29A774778D9FBE3F5E5349F92761 +:105C50006A0294EEAD5945E9CF6B8254BE0FEC73E6 +:105C6000CC1FA80951DA5AD348DF0FD5B450FE70C3 +:105C7000CD0ECAFFAA264C695BCD5E4A9FA969A5D5 +:105C8000F26741EFC2FC733511CA476A8E53BEBD3D +:105C9000A683F22FD49CA2FCB19A28A5C76BFE4420 +:105CA000E9C99A4E2A7FA5A68BF26785FFE250913B +:105CB0003837519CB4FFFE2957EC467D5BFFFEB799 +:105CC00091FE43C8573726A5DC82E5F398AC2968D6 +:105CD0005FC4D911F1FBF099E8DF3A056C03D47782 +:105CE00006E6EDAE03FE592B4B8477B5E9EA6EB4B8 +:105CF000317F23C6D99CC84209858436A467DF88D2 +:105D0000BFA978EE5673EC47507F6510EC1B32DD6F +:105D1000000F3D8487AF7C233B499CB3968EF0BF38 +:105D200082EB61CEF03B3930AFD532EB40BB69C579 +:105D300088C0EB889F2B9D411B3FEED1F2D0CE9CBB +:105D40006D8F5CF65DF46B9F50B4DD6AEFE3DDD6DA +:105D5000320398721FE5CF7D9A85F2A7FC5F4A0057 +:105D6000E1F29A35B912FD1167C4FACF14C9A6F44D +:105D7000B311FE28CEF3C6E7EEB84E063A597AFBC9 +:105D8000B0549463607F907E3897A956A4EBF9CC09 +:105D9000F7620EEA73A83742FEBB2C44E989E18121 +:105DA0004F713D8BC050C07C54624F7C4FC2F50890 +:105DB000FF7EDC3C3E2FE2FAF6E745B229B58EF4D1 +:105DC0007F8EF35831FEEAEB64F83461A44ADFE7D2 +:105DD000B0CE47701EB765074E0F1A1283AFEECFD5 +:105DE00060B84500B7A5C715B28F41FF23FFF5D2B4 +:105DF000EF73FFF5A6C9DFE3F2B096FB3BD627BEF3 +:105E00005F86E5D19B00A706E1B9FA8B0FA39EB789 +:105E100014CAA9DDED3CFF05D8A5C89FBE4A789FEE +:105E2000FCB9D272F86F404FFC30EABC8CFC161102 +:105E3000EAF7AB118C21DF1B39929F832E45E713C4 +:105E4000F6BB410A735F4784CE2BFE3ADA45F54A2A +:105E50004704D28BC9AF107EA008BEBF8678827877 +:105E6000EF0AE7A15F61B3CCF1227452D1D08F6DFC +:105E700071F97DE8A75CB933AD80CE03007FD00E09 +:105E80005A5CCCE1A8E3C7AD8D901AF819E05D76B5 +:105E900031C0ED2F4F8FF5207EDCF6DC383A5FAB5A +:105EA000C3FE3363FD337475C1784AAA775713DF95 +:105EB000479A7FE7B8E4F0EE1CF2A3551FEC817F10 +:105EC0004E2DE6F8F59ADB5A1EA67E395DEAE5A569 +:105ED000627EA5C57CFF67B79F188CE706B71EB723 +:105EE0006A761CB738EA35FA7DBAF1B9FAB13143AE +:105EF0000DEBB8ADED0CF9072D8CCFCB5A326837CE +:105F0000CED3EA704632F263E3B04CCBD96E7B223B +:105F100017E1C3E5838E8F8A2D39B0CB699C7F371B +:105F20003D4C4138DD98524DF4F045F08FEBE87C64 +:105F30001740178171028FBA6C888FCB9946E90A96 +:105F4000E6A7F44616B221FEFB43F792BC59CD5AA0 +:105F5000E9FBAD25D76763FE36D639CD0DF0BBA67C +:105F6000B1F64574CBCC6FB9B76C00AC7B5EB8EAC8 +:105F7000454CE73E2E7D1C52899EE6233E44A5609B +:105F8000C340186F41DBAE1707C2F7390AC72F3677 +:105F9000969F532B290EF2BBADD8C6F9A8BE8EC56D +:105FA00002BED691BEC5D8CFD28D8CF0A5F3377680 +:105FB000DABF6EBA2AB9F9F42019F54546E7D17F60 +:105FC000FDCDF0702DE131D717570BF98D791CC736 +:105FD0008AF29BF2C147913E6E0E717B6A7DE2BFF1 +:105FE000AEA3F37149D6A46C809F95FB173FB33ADB +:105FF0005C751AD269389BCEC56C745685F443FB28 +:1060000056FD8764A2CFAFF43881EC80BB10D29BE1 +:106010005868131AD19FC9E1312943489EFF00D720 +:1060200071CC0D763B8E9BE9D0142C4F0B6773FA25 +:10603000EF960FEC7C12322DDEDFDDA80767C6F489 +:10604000E0F589D90CED7EE04F9DD204D27B685DEE +:10605000D214D68A742D95FC2080F3DA99C45CCAD8 +:10606000B89EE83CE0C60393AF64CD81FD83BC8954 +:10607000A0DE6D951D9CAEE3E601645489F6BD5D1E +:10608000F8CB8EFFAF0C826B08C6DF93161B5F9DAB +:10609000CC5A19F021C9F503D2D376829EA6644169 +:1060A000BBC4E05E9C8FEC662EF41785A608BFADDE +:1060B0008DC3F5423872FD6B7731E73B75B854E21A +:1060C000972E8F0BED5E4BA2867492E508EC42781A +:1060D000E604063E6CB48B8FE7F4A7FC1C1BE77B41 +:1060E000ECEBBA2CE43F4EA686707FE7F824AD892E +:1060F000F843B41EEDEBB98008E41F2AB19AE88C8E +:10610000C5F9AF008DA661FB79E8BF82FABED25413 +:106110009AF79C0A298CF319CEFEA0C38DFC57FB7D +:106120008683AD85FB6AF1519CCC5056E2C079D490 +:106130003BE7A5627E63D21C3A778AE7139B40BF98 +:106140008AD80D794BC0E1EA437FD3FD36B61D29CD +:106150002C02FCC5D295C722DF62FC86B8F1E3535E +:10616000ABD5EFBA94F958A3FA7C86527A8FE0A3A4 +:10617000B08FE4EFAA5A10399546FED58D54BFCAA8 +:10618000E10CE1791CAB37FB7963F15E7A3A99E473 +:10619000E4DE8765929384A1FDC416C1FFD4F0F4B8 +:1061A0004FB11FD046D907067F0B72DA0FF4FD55A9 +:1061B000788AFB6BC354C1B4BBDC775EEA7D7D9704 +:1061C0009A36D5D0D975777EAF35787238CEFB6DDB +:1061D0004543FEB877F2ED33AD48470FCB6C4F0F18 +:1061E000E3A13A1031CD3791454CFA597A5C7E6083 +:1061F0005CFDDCB8F21171E58571F9F171F5A7C4A8 +:10620000E567C6D59F17975F1C577F795CF9EAB899 +:10621000F2B571F91FC6D5DF1857DE1457BECD94FD +:106220007FAF3857E0C74371ED76C7B50B51BD1846 +:106230007D80A94672D84178F5E4471CAF5A9F6D1E +:106240001FF10BC81FF04B743A71E0A30F9A46A2DE +:10625000BFB8D542F9F98EEBAC652AEF37DA8FFC7F +:10626000B9E4349DD3EA38837126CFC2FE47AE40ED +:106270007BC341E97EB09790AE9E047B09D3A7C053 +:106280005EC2F439B09730F5FE91D3656FF834B142 +:10629000538EAD8BA17D9D145B17FC977F38DD5429 +:1062A000AE3D3BD0942F7E25D754FFAAAE11A6F267 +:1062B0007DC966782C5850642ACFF3FDAF448A7F9D +:1062C000A99810FB9E8B702AA479C7E3CB1C23BE30 +:1062D00018FC4027012E3E435CE7CB772814DFD122 +:1062E000FEDE7AF62B80EF81C3E9BB500E3CE94D10 +:1062F000AA4F0716BB7C34D7830E3CBB8DE6F572E4 +:106300004ACB2CDC872B3F929173B0C9CFB208EEF9 +:106310009BD6C6487EAC19ADD2FE6A6D1DB20AF39B +:106320001D75B8636080DA0519CA8FA7DBE4F046F3 +:10633000984FFBA807B7623FFBA11FD4DB9E3E7CB2 +:10634000C88B72F069A74DE5E7E4303FE00FA3503A +:10635000C951627156ECEB8E8178CE1D8357341192 +:10636000E795C71CBE69D0BEB594CB8303912FA619 +:10637000E543FFE77C8E4E1E3F1290DF427B31C229 +:10638000F1EB40640A875BC8F7BBA186B892330281 +:106390003EB5078F2D467973E0884D453F3BC22DB2 +:1063A00004DF4F013E85EC08B722DB1AE41F03141B +:1063B000B647433BD545DFD1816D1B83D4C828EE5A +:1063C0000E3DE842AEC9E7AFC4EF16E16F67477014 +:1063D0005F162CB0C6E286F07F15863823737BB13A +:1063E000AFE638A293A8C0E2BAEF9776F3388010F0 +:1063F000738C31D0C3E185366F3155FFDC0EB05C54 +:10640000119962F3A25DE0737F910AF9AFCECCA53A +:10641000F2D7A6B83FAFD562E52ED945E50DF51FF9 +:106420009E2DC47D038681E7B8AC99FBE11DDD7E1E +:106430007A835F1DE6F7B48535DC0CF55B4BEC2EFB +:10644000EC6F51C0EC8F6FF5FC3611CFD5E3FDF149 +:10645000FB233C8E754E9CFF3E3EFEE3C9D1DC3EE5 +:10646000388E78067859190A95B9BC6837B634A0C1 +:106470005C9C6D098736C2F8A3609F43D0EF28ED7E +:106480008D2949B8FE6249C40547685F67B7B954AA +:10649000C493C96DDCEE1BF7AC4CF81B4FF7AF464D +:1064A000DE4C443C19D7065808FD6BAD0F28989771 +:1064B0003E6275D13EF8456BD88C9FFBDB807EA099 +:1064C000FED3825E7B6B774AE0DF494BD8D9979C3D +:1064D0009FE55158C8787E22E4FEA240120B19F0C5 +:1064E00069B69661CAD71EB4913FE3F0D38CCE8FC4 +:1064F000F659A3F22DB0FE43E3ECAE8D4427FC1C0D +:10650000AF48D0839D15D4AD11E7364DAE985D7C74 +:1065100038C2E9FD3053A7227C35D04743D03E9F97 +:106520007929EF9EEAE8B49780947BC566E27B7692 +:10653000CD9CD740F2470C78901F97D7FDE0688E2E +:10654000F414AF1EEF07FF7C74B2297E677FDCB9BD +:10655000DF28FDDC0F83AAA1BF7D77AA0AC605EB61 +:10656000FEF098FCAF2578EEAF7148D8BE30F2A9A6 +:10657000AC8E423E1F95117FF359746312D2D161E4 +:1065800046715E7A7FAAD315FA3E7C3FD4964BE7DC +:10659000C5078EE726C9D0FF555F5FB915E9EAC088 +:1065A0005B430A9B58AC7FD69149E783FAB84FA268 +:1065B000DC023E72E8F83C9AEF936D32D9C14F5A33 +:1065C0003A13D37BC01B7DDFF5BCF6AC594EC5F743 +:1065D0007F61FB10D1531DFE0AF57E3B3A3070CC33 +:1065E0006884533BCB80F9CF2EBE9DF4D46EB8396E +:1065F000E751BD59F933643CE7DA9E9DBE0BED4689 +:10660000D067E5478AF1BE01E4A15D6688C79F6651 +:106610009664EFE2760DD733678D30D3C581AC3702 +:1066200013510FFB32C4E3A367A598CB67E53FBDC9 +:1066300002BFFF628143C57EA5FC450390EE1E109C +:10664000707AFDF0DAC49EE8B0BF3598D617FDF435 +:106650008F5A482FCEE8CA227D7D5621C8FF3EEAD8 +:10666000DBBB14AAAFE7372744DDE897B2BBFFE3F3 +:10667000DD8F8CDFB3D213105E79BE3B1D28AF0FC8 +:1066800064F5AD576C137A8A9EBF0FE5B117E5B17B +:106690003D84F06BDE9B45F2787345627D3AC88F8E +:1066A0006BC670FF4233C08DE2939D4192DB764D05 +:1066B00026B9B75FDB48FCEABE940E19E73719F03C +:1066C00015E11318A352BBFCAC08433C766AFE826A +:1066D00000D503B98CE364815C86F6EDB3C70C4743 +:1066E00039BCDF0D720FF72D12398E7EC7CB8A644D +:1066F0008676DB2689D1BC423F738A38732EA72F5A +:10670000439B1EB6BCF9301F3F8FDD228750BE670A +:1067100071799BC79E5E3112C7790BF808BB709FD9 +:10672000555707D76F9CE944473A5C74F89529FBA5 +:1067300076A3DD7D803982288754167418FD3C7A53 +:10674000FD0784BE775FC5A1745CDF83DADA13C30B +:1067500010BF963A89BB9529DE4FD18FD1BC34D179 +:1067600085EB7BA0725BBAF19CEDC2719D32C631A4 +:106770006F06BD05F9657A449D8C7895C1B45A4C75 +:106780001F1278B8538CFB1F42CFDC817A26E41F9E +:106790005AD55E8E7A4EE6DB0A433FDBC07581999F +:1067A0007990AA5A48B2219CD7813DCB62E3EF1081 +:1067B000E33F22ECC0C7B03FC8EF12FD6D6EDB3681 +:1067C00019DB7D19E05A4DEE86965A3BADAB424E31 +:1067D00040F88418F9C1F4FEF47E1E17ED0F1C9EDC +:1067E000528BF11C5FA2E70BF8796675202101FD41 +:1067F0001712E849C0AFF7DCCFCBFB2558E89C7EE9 +:10680000CF033329FFA093E7F78BF96556FB343CA0 +:10681000577F44ACF780E83FAFE3BF6BED38BF165E +:1068200046767E769BBF1DE777E5B39D92D1DE3D30 +:1068300020FA6915F3CBEB788FE4F2976D4E8A9BC3 +:10684000EC9D5F717E77659B99CF1544124D724523 +:10685000C7A38BF1BD8618DF7B1AF99E776687EC9C +:10686000C038D86911F20D76F3BD4CCEF7F43890EC +:106870003A15F4E41C6ED7E7427ECB5B1912F17532 +:106880001107B195E93F9CEFA576F33DCD81F8BEA8 +:1068900059E08DEE6F7084B472ECC70EF481F10490 +:1068A00036A6B6A1DFC9E6645A845D38FF46D1DE5C +:1068B000166A24BFC2164B4B9F7E8A841D9CDF291B +:1068C0005DD9C4EFA64C7238908EB738B91EB0456A +:1068D0002DA4FB3A5B544B10314B6106BD55227021 +:1068E000A9967EE2682ED754CEE3D9277591DFAB07 +:1068F0003159F00D216F939C2B2B18F9193446F761 +:1069000028541E8F81791CCF117072FF8FD7628A35 +:10691000FF700C95CFD85350CFB47C641CC79665DC +:1069200031E983CA45E23ACE8D017D6024BB209EC9 +:106930009765F68C1FDD711BBABFA3977AF1783487 +:10694000C2514276D0568DE33D868FE07EBEECE1AB +:10695000747FD2339FC6DD894D7AE8AF2E4E0E2864 +:106960003ADE050B451C66B819F5F09DEF6490FE04 +:1069700070C4AB907F7D6B7004C523E5B1B6E3189E +:1069800037D4E419221BF58BBCC8FEE65CAC07F3D8 +:10699000E07E37B35FC369817EB1DD5B8AB611CA21 +:1069A0009BBCED8E9EE4A03EBFCD82CFB508BED489 +:1069B000ACCDEB334EA141B4D3EB592D7EA6F520DF +:1069C0000F6D99B2897EF38E5F9BDA931F5F4F1F25 +:1069D00016FDEAF5065B3A24EC77B0809B5E2F7BD0 +:1069E0009DB9DFB163B9FC7CB7D8377A2CF92BFCA1 +:1069F0008497D66ADB0328C795B469F22399B88FC8 +:106A00009CDFDB59AB7308870FC92D4BDAE1468455 +:106A10006733CC17D1A9DE75D804AF78F85A46C9C8 +:106A2000229EF889414786423B95DB1BCD1EB04F25 +:106A3000804E1A3C5CEF68B0F87BA4DFF8FE9A3118 +:106A40007E99E28F772DC1FEDABDD7B346C37C2194 +:106A500025FE54EF55C2186F3B98F9082F18CC7FCC +:106A60004F0F7CA4B771E2FD5D378ECD15F1AC7D83 +:106A7000FBBDF23AFADEB78B8D73D23395F4C62F95 +:106A800031CE240DF13F9DF82E36D960B88F637159 +:106A9000C6E9B9422E38B2124DDFD37CE966B9207F +:106AA000FABB183DC7EBA94399A70DFDDAFB5B398B +:106AB0007DB3CAE84CD467D83B1C2F9EEC85AEF75B +:106AC000C7F9730F407F7DF1E9FC1D4EE2CF07ACA3 +:106AD000AC4D4A65788AA6BAFA31C643F780BF8DB5 +:106AE0000FDC8D78EBEDCA277E2EB51DA3385980BB +:106AF0003B9DBF7CA9F1734356EA277DBA6E36E40D +:106B0000118EADF3A97CD3F7998BF296F040C4FBBC +:106B10007D428EE8F3DC9713598CF7650EFCFA7D05 +:106B2000D9782FE0D1B1FC3C689423C517EE817E63 +:106B3000C3A2DC6E61A1443C177F96C3D9CD5C36FD +:106B4000C4878BFA972B2395383F26CB3C2E386E83 +:106B5000DDFB311D80EBF7EF1F8BF70E34BEEE66C9 +:106B6000BF3F84FA590014323601EA1CE6FCDACB46 +:106B7000FCB4DE2A8DAFFF756D1EE59DB3F1EE1AF4 +:106B8000CE67A988AF652EFB00EC87C7DB066E06D3 +:106B9000AD68504FF3E4F8D50D5701C7D735994D7F +:106BA000427DD26D23FA631EAD92FAED651DF78B1F +:106BB0007544C6FB8FE13E4A4EBE8E7B009D297E0A +:106BC0003DC546F1EB6F16075E194BF4C67C0AF41F +:106BD00073CF4295EC49E6F54BE8FF62FE4B934BD1 +:106BE000975CCFE3EB13FE75290319DE47BC676D95 +:106BF0000AC5DB18D6719AF6C3D9E427392FC663C4 +:106C0000CE08F1B9BA061E6F7EB1FD8FE9477E87C7 +:106C100091DEEA039CDEEA24BF03ED90D0DB9C8F7B +:106C20006D13E3C3DC7C6817341C74D33817F21976 +:106C300049DCEF30F319B7918F91BFF1FFACFFDE64 +:106C40005E9223F865DF7EFCF1A073931E6AF5BBAC +:106C5000517ED93A6E91DF43B8BDA598D6139FEA0D +:106C6000FA9FAE3F3626F82AFD3DF0954D876CAB76 +:106C7000C286EF45259C4E8B4AB85F17404B71AEDC +:106C8000F56E99EC10874B23383B405EA04FA0B7C0 +:106C9000F1135433FFB5BBE3F4EF6F18BFE82931AC +:106CA000FB6D1A24985726ED37F7AFE00FE457DC59 +:106CB00034609738775A9304F8795AE0A7DEAFAE7C +:106CC000BFD9C4FA1E2DF5D94AF07C4EC0F95F63D6 +:106CD000FCA331BFEFE018467A6039C7D79DE29D2B +:106CE00081DEE843B1B100DD372AE776401E2B771D +:106CF000CCED41CEE9FA7ECC3FCDF1B9C1358FA7BD +:106D0000995C0FD2C78D6FAFEB59DDFB2AF4AC86CF +:106D1000CC2926B9D81B5C7B938BF1FB93A0C6C909 +:106D2000C55EE673011C24A6DB4BCB108EDE291D4D +:106D300072764FF6927381C95EBACFCBCF15EE1340 +:106D4000FBD81C74ED42FD87F4195CD71AD72EEEE0 +:106D5000F7E7F01BCCC212BF57DC22A1FCB84BE016 +:106D60007BBDD03F1F147667A338CFC1F8364E0FD6 +:106D7000E554BEBB26406953CD2AFA0E60A338877E +:106D80006C30C0F09C3A35F233E2F7E915CC95004F +:106D9000E366ECEC28473D8FAD93297E255C13E438 +:106DA00076F8A4E8160BE46B4A6C029F0235259C2A +:106DB0002F47AD807FCB046AAE90C2C370BEFBACE0 +:106DC0007C7DCE698CCE39266BFCDC2315E819D787 +:106DD0009FAAB5A27062899E367633F2F57246FAA2 +:106DE00083541E0945E91C87FB5FFB09BCAE3DF8D7 +:106DF0002B77D44047CDE16E3B32819FFB682770F3 +:106E0000DECE7299FAD9569E5E3B14F2F6C98E4ECA +:106E1000E4D3473DED8B719DF795F2730CA777E5B1 +:106E200091EB613EAF0D5018C6693A99F7C850C84A +:106E3000BB1546FEDAF40A6E77A5579AFDB4431ADD +:106E4000CDF9B4383FADB317BFEDA5D2FFDE9278D0 +:106E50003BCD49F2E34BAF1C46BF5F8C9E3A898E17 +:106E60006C3EEE2FDCE6E5F2E59EF24396F24CC274 +:106E70002F3AEFD1F9807D94CCFB2995C35C98B56E +:106E80004E5B05F566FA1C64770E657B2D1EC447C4 +:106E9000BCC7A219CF255BE9DCFE94C0BB3A89C30D +:106EA00059973FB6F0A8043A879A51982019F806E6 +:106EB000FAE58DF487FE78139D79D24DE7775BB5BF +:106EC000BEFD834D821F6C4C7A8EFCB04D96709F38 +:106ED000767E701C3F874DDC61233D32A9AB1FA538 +:106EE00079918934FFAD6F713B709F554B4079713B +:106EF0009F3737C138BE6D83997F6C2BEFDBBED3D4 +:106F0000E7A7D74BB484594FF34BF298FBBD987D5C +:106F1000D722E0AED773599884FDBA2C66FB2ECDEC +:106F200067EEF71F82EF2BEE73577CD443DCEFBB89 +:106F3000C581BF9718FCE58AFB91773F02F8B0AF97 +:106F4000CF931FB33B1E41D883898E72F26BDF2330 +:106F5000FCABFB26B60F1C8278077044FADC9CC0A1 +:106F6000ED39BB97FB4F13AEEA647EE785FDB12C8C +:106F7000D9B4EFDBBC7CDF5F2ACE9590BE53CB81CA +:106F80002FC03A93BCD119A45F963217E27D6A797B +:106F9000C487716A2F551C227EB5CD29CB48C7AF57 +:106FA00054A413DFBCCFCBCFADEEF2E66E413A0E68 +:106FB000AD91E99CCB26F41F5A670EFA43DB1D788E +:106FC0002E37B8367525C6C3668DE3F7B39B515E81 +:106FD00018F0BDB918F2DE189D0D1BC7EF1FDE5368 +:106FE00071A811FB1F7C0B7FFF027B47FBE12E8DFD +:106FF0009F4FB8BE3EEFE807E9B1D276C7C75E6CD7 +:10700000C7FB776D8850BB7BD6C80CE32E5E2ECDB8 +:107010004DC0F56EAB78338DE89825937CD8562A11 +:10702000E03B630A23FFEC0AEEDF6C2E5DCEA66424 +:1070300072B927CE71D9F4620AAB217AB5A9B3D956 +:1070400072B47F919E917E472D679B900F689CDE66 +:107050002D6E337EDC570AFB87FC208B22FF60FC01 +:1070600013E477BCAFDCA6221FF98F0A2E8F9ADDBE +:107070008CDA1F75F2FC7D2EEE27EB1FE7A7B04FD1 +:10708000DC1D195A6C9C1F4B99DD0FE3CF39FF4E65 +:10709000AC38145A01E5AE810AC3F3D4DA832B1954 +:1070A0008E7F0FF067BB4B87A4E80FF54636397229 +:1070B0003DF65762A7FB425B8682FE08F9AC2A7E4A +:1070C0004F6E6760772DFA936C1D77BA10FE895E5C +:1070D000335F1E506233ADD716C7972DCC668A0B2F +:1070E000B898BD5E2FE8B051C8DD7A6BA4D2CFE569 +:1070F00014D9538D8AAB80EC4DA0CB01B82FE95940 +:10710000A49F05C7E9FA65A804F1EE3EB13FF6D9A0 +:10711000DB886F03BC82AE3EF418ABCBBC6F78EF5C +:10712000CCC4475D21963946C46FAA985A3E46BBE7 +:10713000A211639A25A3BC88101EAB8037781E71FC +:107140004F39C7B3E6F243F47D6B29A743E6CCEC95 +:1071500051FF195C6DDE6F5D9F1A1434CF67C02A32 +:1071600073FC476FFDC5EB53F78A7BD2F9210B43C4 +:10717000BFF983497F69477C3BF434F7A35EEC5E3B +:10718000F591A7F979EE81F778FC1EA8250FE17932 +:10719000ED57876CA40FD4254717E37EFDDCAA0EBC +:1071A000C27BCE874E3C31B00AD29F8CE37EB04387 +:1071B00012BFBF1A3FBF87C749BABEF3F038F29378 +:1071C000B1B34A0FFA0EAB549718EDDDEAF181C75F +:1071D000C6D13D48B3FD281D073B17F40A9B329FDB +:1071E000A1BD9E0FF6FA6EF443B020C505E6AF12BE +:1071F000F7561D7EA2B7FC0A95FC187661C767AFEB +:1072000063AE5AD027878E0E3C49FD5BD686F09C34 +:10721000D9FBC354A213C0D21188C74E1620FBA9B4 +:107220004AD84FB68EC1748FF9498C33C47A71F63F +:10723000A7BEDE5621C7F6093C6FCD89921F64FFB9 +:107240007FFEC5E4077941C0255FF841F0A526D44B +:10725000035ADB3F4BACEA41EEBD34BEEA05849FE6 +:107260009ECF6FD314BC3FACA254C07D76EAFE9A89 +:10727000CE263C1FAE7B9BCBE7DEF0A62062A68B22 +:1072800051AD7174D11D3FEA97F09E838E672FA791 +:10729000054DF1EB17C3ABE8B89CEEF7A910FEEB78 +:1072A0006F4EA0F8683DBFE2BD9104DF474BFD5132 +:1072B000811F0E7CC747C78FEE781DBDFE4DC3777B +:1072C0000BBBCD29231E491C2F3E19C7E339C04EE5 +:1072D000FB04FBB96571E033DC5FEF885747E039A9 +:1072E000C3ACFC13038DE746A3E2FCBB7A3A773CC0 +:1072F000E7373397840FE37D7C58F6B5AF00BF9D29 +:10730000F9DDF0DFACC037673FF3CFA5F5F8DE8AD3 +:107310009DFB4FA73D93F77008FAB91BE701F941B0 +:10732000CF645E1B8271FA8DF175E13C9E18EBFB18 +:1073300007E1199B46F7377478F64ECFE6FB1B033F +:10734000D0E76BF2230688DFE039399E9B839D46A8 +:107350007AED2667DFE7CEDF341EF59DB181F4F1CB +:107360003DC4A3C6D6D14271C597BA8EA1A37D7381 +:10737000B1BFB9623D53F367C8E1629C37D73B2E7A +:10738000367FA56B82E9DC5CB188773BA6AD5FBF39 +:107390007E8C883B18122B1F2EF651E99A44EDBEC5 +:1073A0002DFCBE6D3CEDF36303A5E37B88A7FD7761 +:1073B000E1A9E345F5585FD9F8CBFE7DFCD2F70390 +:1073C000F8F35CDE0F5BA318E86FC5F0FDC378FC33 +:1073D0005916DDEBD7DBC5EEBDC4DEEFA823B9F34C +:1073E00063E207D521BB0BCF7B5326F0B8772FC6BE +:1073F00071BB882EAF4538AC572223C8CE9D587D2F +:107400002533F0CF514C73A3FE73FD33E31FC677D2 +:1074100031145B54C348CDEBC7173C5C8E73B50089 +:107420007F06E24DB93ADA7A14E545868DECECFA3E +:10743000195CFED44FE6FC62CD78CE0F6E1DCFF9FD +:107440006C50E0C39212DF3A5CE73AEC0BF21F8F0C +:1074500035E77F3906F2A36379800BE5E1A7513266 +:10746000CAAD71FB082E80D7DFE7E53DC387550B1A +:107470003FAF53F8CF19CFDBB304BFD6E3ACD10590 +:107480009A4E292B2B0496E60925A31CB257CDEF63 +:10749000132F75BB32B6BF6111BF65B61F1D5EF3FA +:1074A00079C6F67E3A3D84785CB9EF26D2C31BDDFF +:1074B000976647C68F976469257B2DA9CB427CA22E +:1074C000B7F6936FFFA503FD135B83A3FB1CE77463 +:1074D0000DEB98360CE3281D94EADF031BA48E699C +:1074E000063975058B2457023C4F7BB9DFA2CE9B32 +:1074F000BB90EE7F345A292E23BAE1A9E31887F214 +:1075000037AF4D65867880ADC91C5F96D727744C20 +:1075100033EA5B5F3F750AED808037407E4C8CE339 +:10752000C478CDFF1CCFDF299AEA6D656877248582 +:107530003EB762FCCB6FC6ABB4CFCB3648B600E4E7 +:1075400003F569368CEB827EC8FE0099E3427937F9 +:10755000D5DB69C5752F0B1DA4B89924C863FD65DB +:107560008D39BCBE787F6379BD628AB353F08522C2 +:10757000BCDF812F1A915E1FA23401E1AE18E0CF6B +:1075800022E27DCB0ED6971EFE94883F636D4EF6A9 +:10759000A1293E94E36BEDC244C2CFA63BF8BB10D9 +:1075A00000C186E5789E21EC08DDAFB4027F85A599 +:1075B000DBAFF5DF84F503C36D2AFAE1AE63159BFB +:1075C000107EEE410A433F106B31BF539B1332BF15 +:1075D000CF11887B7FE33A662847BD4BF8093F1CF3 +:1075E0006F7E7F565D1A267CB50F177AB7BB673D55 +:1075F0003949C45BC5C7B76DF52E4F34FA235A7CA1 +:1076000032C5319C5359187D93DB6D218A63D89420 +:1076100063096E44FB4AC4632C17EB86FF6DC27787 +:10762000F0968978C6097F9299CFB0AE899D89CCB2 +:1076300067D8C7ABBAD24DF9C96C90A9FE54C71030 +:107640005379996BA4A9FC6A7791293F439D60AA5D +:10765000EF60DDEF06F2380B26519C0535914DE5C4 +:10766000DCAFD6C8E3617DF00FF725DDD769C5B87B +:10767000E7A5E27D0E1D0F36E5707B75595C7C44F5 +:10768000060B85F01C6709E005BE37BC24688EAF89 +:1076900075B0667A97ED82B80BB19F832798FDF499 +:1076A000BDED5F8CCF70FCEC9D6FF178D83CF52E72 +:1076B0008AE782FD7A6728D49D2EF66BFA825514EC +:1076C0003F62EB4A633EC48767C73E99D78F9E5996 +:1076D00025F8D82C01E25FB6AE4C2ADF9E2BD3FBF7 +:1076E00028E7D07EC779E3BB932974BFC41CCFA21F +:1076F000F27816F2CFE49ACA853F33407101E580F3 +:1077000087D8EFD55D12F3017FB42D10F12B6E0EEB +:10771000379D3EA60A78DD583644A2F71E55F37B06 +:107720002536846B3E8D63DA8F7B19876B793C5CE1 +:10773000A75D9A3F3E59DEB502ED94E6A54AB9F140 +:107740005CB6750297A3F32748E21C2A7E1F5C29CA +:107750007C1F1252709D6742F3FBE4EB33BB8698AB +:10776000E4C3C5E293670ABD737B8A79BC3C569E2D +:107770005606FBF3FB0512E7D3AB86D039DFB90A17 +:107780007ECF230FFDBA90FFBD8FFB75CFAC52CAE1 +:107790006E80FA7F037C25FF4A5C7CBD1EAF8F0B99 +:1077A0008C18EE81C4C7EBEBF1F92FDFA1D03D813E +:1077B000D044FD9DDCBEE3F3D982B878FC6F1C9FFA +:1077C0001F227AFC7D8944F1E82394B99BC614E317 +:1077D0003D4CF6791DD929E6FB072B564DDD84EF8C +:1077E00079EAF1F937AC2A9ADE40FEA30C7A63639A +:1077F000CE820A6A0F4C85E2F9BF3A73E6058CEF38 +:10780000786D8A7B6D2D7F8789DADFC0D42F28AE13 +:107810002A2E5EBFA1FE9C6504D4FF03F00B8AE70D +:107820008F8BDF6FD6DA67E37C7FBA4E21FF637CF4 +:10783000FCFE7B9E0F937B8ADF7FAF5AB9A4F8FDD5 +:1078400043021F2B43E10ADCE74A8F82273DDDF12B +:10785000FBF178F4EFC6B9574DE0EFD859C1DE48D7 +:107860004DC77B0120EFD02FB0412279377943DA21 +:1078700074645DD715F3F74EAAB4332FF647B8AE4C +:107880009218BF27E0BF09EDE4AA601A9D3F277A4E +:10789000F65AB13CBA4622FBBC2AA490DF17D64D5B +:1078A0007C4682EF244F8BA55D574BBDD34534DC1E +:1078B000ED97A2775D4F5A3A92F1FDD0931B14A435 +:1078C0005076BABAE892EE077C5BF8E8FC40EFE746 +:1078D0001DBCCC03EBD9B2500AEF96904EAFA5FB7E +:1078E000E52F33F601EABFDBF3E737E0F9D939C614 +:1078F000DE443A9C5CF0B7A3E733511FE2FA4688B6 +:10790000F9ADD83E9139CE60FD24EFDC86D178CE3A +:10791000E2900ECA50BFA386BF6F39331026F93CE0 +:107920005FB504550DEBC7F16507E7CB89F825D79F +:10793000542ECEE9FD568C179F556A25F93D6B45AF +:10794000C44FEF3C801EE9CB61DDF2C3786F14E9D0 +:107950006701CA7B18EFF2AFBF5386F1F933F5B870 +:107960004381AF32FC43FA70325FD976284F14FE60 +:10797000CAAD9E5D3EE43FB380FFE03A162C30E393 +:10798000F32CDF63E49F65D0DF30289F57612E4FD3 +:107990008CA393A4527E3EA3CBD3ADDE79E4D7C7AC +:1079A000B8143CD77D792E344985D4DAEA6E01FCCF +:1079B000787DD4F423A8C739B7CB0CE935B954C8BE +:1079C000092FF37E13F96BBF36528B71BE5B99237F +:1079D0008AF6F3EF6FE7FBBD282485CB615E535732 +:1079E0004894CFAAE6EF1D5C1E64C7307E7111F08B +:1079F00089AB61DCAC559132C4CBEDB696176DF016 +:107A00007DE72D12DB46F0E57AA5AE5FD52E1C6131 +:107A1000BB11CAFF6B00FFFB07A0AF98F448D0373B +:107A20004C7AE4752B3E21797AA13EC9F59078BD58 +:107A30003251C02DBF549C1776EB952DF4AEAAFDA4 +:107A400086BEE5D84E61779D8E7B9F6F997E6EEDE9 +:107A500029E67125AC95CD83FEB62F7CC661F4FF77 +:107A6000E971959B1607AE2A35D04F92D765A3775B +:107A70009B3C97B61F975ACF203F93B9FC5C25E3F8 +:107A8000958E577D0AF9B1F3987B7651712C3E3172 +:107A9000563FE2E4F7DBD89B467AB020FC60DCDF9F +:107AA0000A7B70FB94BEEDD40E51AF4C79A519F151 +:107AB000E10D1807E3CB3B7630D59E1AABF7DBE937 +:107AC00023ADF89EBA6E67CE8B0C1FACF660CF3438 +:107AD0004D7FD782EF8CCF8EFC8C6179A225EC365E +:107AE000C683BE2AFA6D1AFD18C373AF374670BE3F +:107AF0009D586C5713102F3D917AB4E3B23C9DD33F +:107B0000BE877409748DEF750ED624D2FB667A5841 +:107B100018F940EDC29F87902E5F013B00F1F00203 +:107B20003E13063E33A62F3E1326FD2F51FB44C4C1 +:107B30002B87295EB942F08D373C914CBC77A6F378 +:107B40000F0FFC33FA93F5B4224E8F9EE9ED9B3F65 +:107B50005CFEF5938D18C7FF0AD029FAD39B60DF2E +:107B6000719C37B4C71C080FFFF0E51B711FD86468 +:107B7000477418CCE34D6BD8B100F2AF0C97FBD52E +:107B8000C2BEBC32F97A2A7F63B2E36319CBCBAEB3 +:107B900018AC1AF6B7E9276C5200E13BFC09F74A2A +:107BA000585F9EE7EF35817CEC87FB5F7E3BFD17DE +:107BB00083730CFB915E3AF9A152D41F318801E81E +:107BC00062842D9CDB53FCAE8EAF8BDB7F46FE398F +:107BD000F4BF27F421073F1074784AF8DBAB1AD3BF +:107BE000A6FB7AEC97D3DBE23C46EF6DACB8D76AE4 +:107BF000AB32D47BBE5436D987D10DFCDDEB1547B3 +:107C0000126C7906FC6B2BE57E8040208DDEFD88B2 +:107C10001FE7A552B39EBCA296D9709D81C8001BD8 +:107C2000DADD552B2EADDDE211629E4706D8729249 +:107C30008DF5F83CAB9A7BEE478F7BF13D3E85DEC0 +:107C4000014F10EF669C9554EAD7C17C91FE801FCE +:107C50002B5AF87DAC0BF579EE1F75683EF97EC4A2 +:107C60008F4CFEBEF0A6CCC28BF847B95C6E06FD09 +:107C700018F50A4764119DB7208FC7B8186B978D08 +:107C8000EC9FBCD02A8671880D1ABFAFE2ECEA47A0 +:107C9000F650FBC2D5E417BAF4711C344E9318EFBA +:107CA000811A37A57F2E4D13FE28FEBE695226A3EA +:107CB00077AD1D0ECE97D1CE4BA37533E765067F0A +:107CC0001EC68D1BEDE964CD6CBFE33B94C6FCA3DF +:107CD000A51C9EFD2B079AECF21539E13DB2C19F20 +:107CE00052A63837A2BED3E4E571D54DDEE5F2EFFA +:107CF000615E5F7AB8BE073F128A0AFF346EA7E85A +:107D00007C75AEBF7301DAAB2FEBFC7544DFF22854 +:107D1000DE2F97E8DDE5EB093F522772FC49D27868 +:107D2000F95C7C5ECF100FED9AC8EDBDB916805995 +:107D300021F04521CF2AC43BD97ABD0113F9B99F5F +:107D40009E3E5A1A183091FB4923AE1ECEF7743D61 +:107D50002FD1C3F53C48CBD6A1DE077C10F90B40F0 +:107D6000ABECFEE298BEE4F67E4BFD2E4E7F730A2E +:107D7000FD2D517F47364E5FF34F33F3D301C0FEE5 +:107D8000515F9B27FC1B17EA63DC0E8FE7BB2513B3 +:107D9000CDF14779EC553FF9D33CFC9DD4ED23BEA2 +:107DA0003882EF767FE9E57101273DF34D7ADB49B3 +:107DB0006FD842FE40C1273BE2F675A68FFF9DA01B +:107DC00093A0DFB980FF9EB486B3EE85FDC9F47C35 +:107DD000772658C6ECE4F09F3AABBC5CCE18F9D9D4 +:107DE000EB9EA3AE33867E7BC3231D6F9FD8F178B5 +:107DF00008F136A4328A034910FAD2D11DEA4ED4D2 +:107E0000FF58C82DA54C626C9DC0A73CF61BF2C361 +:107E10006CCFEFDB7FACAFE7B5F1BEA5132FEB4323 +:107E20007F82F9E37BEBDB17FEDCB11CF22B274AE8 +:107E3000A6F580DEB472A2219FE8E17AD3D69FB086 +:107E40006CD47BDB47D92AC33DE0FFD61DAD8D3412 +:107E50007FA69E49C936CC2BFF901BEFD73EB1C3FE +:107E600042F6271BCAF5B7AD3FF364E17ADA931FF8 +:107E7000CB35FE9D175D9ECC28F57D1FE7D155EAD9 +:107E8000FB01A60EFD3D79D17EA185BD60FCFB1FE7 +:107E9000F1ED674F10EF7B0FE57A9C9E5E6C7FB62D +:107EA000488110FA9743398CCE3FE2EBDD23E8F8A6 +:107EB0009DDCC02A7FCFE7A77B530DE7A7FA7C1E86 +:107EC0002D65947E6722B77B1D6A98C7B7768FCBE6 +:107ED00036E2B97BA84AA1F872550BBAD08F70FA76 +:107EE000AD2164CFDAEF2C4A957B80BB2EA7A3FA95 +:107EF0007D44B19F68771AF9E76C2DC9C467BF53F9 +:107F00009261CA5FCF547AC7CAE0074CE6F18B2072 +:107F1000AFD0EEBC939FD79FDAC0EDDF842B9AAD34 +:107F20003DBD8FA3A7A7EEE4FA4AC2D17F5851CE38 +:107F300043DAE0467F4263D518909DEC5713B9BCF5 +:107F40005FD49544724A6FF7DC4495FB1F4091C0A3 +:107F5000FE1775A55079425DA715E5FDB2C8163A22 +:107F60001F58D49540722FA12EF4229A58CB9A25EF +:107F70000D20DD5D1E6BEFA47AD7372A7171B7CC67 +:107F8000EF349CC7E972A72A648E075C316CDF0D61 +:107F9000B21CDB275D8E6C9BE83B8178A97A5AC9BD +:107FA0002F6A1FC5CF397BE303977C9EE4898F1727 +:107FB000E0EFF794E32F845FA117507F9C81FA07CD +:107FC000BDDF74FE3C9E2BCE633ABEB5D4A3BFEE9C +:107FD0006AC6820F01AA950FB5C6DEF911FDA9D0B8 +:107FE0005F19FE026B29737CAF3EB398E24B83E9C5 +:107FF00078AE9065A5777ECE9F6796F3B8EECCEE0F +:10800000F6AF1BCF3354244998C7EBC06F112F6EC6 +:10801000F2B5923E7F13C895B08BDE157B1541B14A +:108020009A393A23909F2A6B6FE1BB77781F07E953 +:108030004AB7AF6B933FC932DE0F5F79BF625AFF19 +:1080400075EB924CF0B9C69F612A5FB57390295FBA +:10805000E61A62CA5FED1E696A3F4335BFDB32BF75 +:108060007C82A97E12EBD9DF4F4790B2A99CE452E3 +:10807000F6A4341187A12D45789479F3E8DD0AFD43 +:108080005CA35CC0BCDCBBD082EF561EC3F74EF0D5 +:10809000CD14E17FD6CF09A6EE3D48F2B62CCE1E18 +:1080A000492AE1F6CDD4C7CD723249D8DF4971F5FE +:1080B000AF9C64969357822C213E28EC4C7D3E88E1 +:1080C00047E8B728137E97F8F90079588A518F103E +:1080D000717CF1F35ABDF760E87BD07E2AC8718CC1 +:1080E00063BED4F95DAA3F64B25A45F7D3DB9D0A5B +:1080F000E935ED6AAD251DC6DB9A2969887C5B9D53 +:10810000535F4943BF34E017DE93CE634F131DEA3C +:10811000FE07BDBF76A1D71E177AED4B5945162332 +:10812000DF6ACF0E646940B7C79273EA31BEF34489 +:10813000424E96E07B2965FD88CE4CF717DA4771F1 +:108140003DFAD891E116E433532C010BB69F9EF50E +:1081500014D9C357635B98D7942CEEA7F9548C0FAE +:10816000E46829288EC173CAE3F7D2DF354ADA3BC7 +:10817000771AAE63B5C3AEF9609C9B22EA526C7F5E +:1081800093D3AE8689DE5B5E08E23EE8FB3494FB67 +:1081900067FCF00FF749CADC45F6C88B3F93587F60 +:1081A000186FF5E3D60F8CE71A4999803FF9F4F779 +:1081B000AD4CFE1BC3FE98FC37374C329F73A82092 +:1081C000A510AE2FB8B99EDC9B5FA45DE81F7F169B +:1081D000F6E21F45FCFF7B22FEFF2D7CCFE90AFC67 +:1081E000FB0EFC3DA7176A34CA1FAB29A1F4B8B82F +:1081F0001FF026DE0FB0C7F040EFFF6E89D9507E2A +:1082000084EE94E8BE49B77FCE51D4EC875F3F9CA3 +:10821000C4ED93651BB89FB7BDC443F1276F4FF4FE +:10822000FD78D2E8DEF1EDDF4D5FA831BF5F76412A +:10823000B98DDD8AFAC150E6CBC2F71B4E3BAF4881 +:1082400037DE17FA7012D7238E5E03F216E12AE2A8 +:108250007BB76E788AA7DEC23EE3BA93C2F349AE1B +:10826000F556BE55DC97618A93DE83786F9477B7B5 +:1082700062187FBF18BFBBBFC842EAEFDAC6052449 +:108280006F9F98643E176EF11D22BC3E1760417CC3 +:108290005FBCD779897EE2E90FF102D33F0ABBF2D6 +:1082A0003D6157225EE077C40BCC235E601EF182F5 +:1082B000D3AD8FBE235E607ABAA692D2BB65EDF5D0 +:1082C0005C89E32DCAC7D8F931976FC4AF419F5974 +:1082D0001DBAF7587FF8B5AAA56F78556DBAC38D4A +:1082E0007C61B394730CCF5F4FCF4D0CE279CDF22C +:1082F0008BBC9397142BF77179312FA6578977DFB1 +:108300007C86FAA78F3C4D710A816AE50163FC3BCC +:108310008C4D7A7640C4B57F5BFC3C1D879F97CA25 +:10832000778B27053E9944711707231AEC77B98F8D +:10833000DF5349F2062D888FBDDA156EDD2FCB6C29 +:10834000DCBE484C59EE34F6AFFB65552E8FC47C2D +:1083500002A134EE97BDC4F9E9EFE0FCCF24A7C930 +:10836000BF7CA9EF49B4F836D23DCA73F8EE349D0C +:10837000D399E3608F2E1C48F1EA5B82291AFAF345 +:108380003789F186E289267C6F74F2F8A22DEA3CE7 +:108390007E2F2A8BE1DF3061926B21953B0A5800DA +:1083A000E761B3F03859979F85F0EFC3D8C20B89C6 +:1083B000AE00A503F88EBA03E3EE30EEAF5A23B950 +:1083C000E5B084E89CDC817175A678409FFC4DE2A5 +:1083D000D798FBD2E0502FE28ABBDF9B54FFBDF75A +:1083E0002609B5118E1E7E5EBBDDC6DF15DE345C50 +:1083F000DABD91FC055CEFF0F32ED84C8FD480727F +:10840000FC8D029BAAF0788806A4B793781E01F928 +:108410003724DE5F6800FF3B51360FD77F74BD1BEA +:108420004F2222C6F3215F9CDE82CC16E3487D9664 +:1084300033F67CBCCD69D63FE2E329E2CFFB753C45 +:108440009D7E55DC39CE25DAF7975A4F8F8BF9D2BE +:10845000CD484EA5FB02E497592AF4E70CD66A3AB8 +:108460006FC53818A3DE8A713046BD15E3608C797C +:108470008C8331D6C73818B39E6CD68B310EC6AC00 +:10848000279BF5E20BE23398D4677C86BECE3CF5A1 +:1084900055DACFFB33B99DB07DDE3CDF0D28473088 +:1084A0005E80E27FD83BA827D39F0E5531DBE16B7E +:1084B000401076EBA5DC1FD55F8CD30FE33D803EEB +:1084C0003245BC871E6FA2FBABEC7EBF16817EEEF1 +:1084D000975A76E13BCEF75B7D03108EF74B9229DE +:1084E0008E7E0033EBF9FDE3E75F6C31C58FE8FE6C +:1084F000283D7EC45E6931C58F58E3F0E8CEAB6499 +:10850000139DE4A97751DCE1F6E545E23D4858BD0D +:10851000C1AE50AAB8FD5409FB8F7FBF499FE752F7 +:1085200011DFB204D76B900B063BC482F3AFCC6A69 +:10853000F5097F44C8AEBF6F83F420B5B27EC5F4A1 +:10854000F733731E0278FE5ACC4B6F6F61EEDAF38D +:10855000BAAFC22037E3ED1CB06F28EE3450AFD075 +:10856000FB3F0D25DA7115F3A08F8568D4CA63C669 +:10857000382EC9D85EA1F785294E42D763AB1ACDF4 +:10858000F137CB42E67C12C6F1E45F48AFF1768565 +:108590000506C3F9FD17D2168FB30DA33DACC33545 +:1085A000B67EA6E2FA0DEBDE45EBFA7F7CDDF17AD2 +:1085B000F2FF4F2F2DFDDF62F2AC120080000000B1 +:1085C0001F8B080000000000000BE57D0B6054D5F8 +:1085D00099F0B973E795CC240C09E8A0A037E161C4 +:1085E000C0891D1E41C4606E92490890C040620C53 +:1085F000C863020906AA6DDC6A975A777303498C2F +:1086000089C568C1475BDB497808EDBA1B2C2AB5E0 +:1086100076FFE1A1A2901A44115A150474416D1B12 +:10862000ABDDA55DBAECF77DE7DC997B2713923EC5 +:10863000F6DFDDFF4F1F8773EFB9E7F19DEFFD7D9B +:10864000E7CCB1E4E0F7474E63EC8CE4604D503288 +:1086500005FE7705632BA060998CF5A4F4BDBC6E74 +:1086600004631FD918EBF233B677F36DDF67D8FEDA +:1086700041077364602365F937A01EDAE4606DF08A +:10868000ED72D6CD98CC589A0A2F47326671E552D2 +:10869000FB15EB53982C31F6E1E67FCB0EB9193B75 +:1086A00096165A1E84F2439BFF1A09FA3FB93EDB25 +:1086B000A2C1FB63C9A78AB0FD4716E6E91A0EF509 +:1086C000AA33360BBC3FE1677E79326397F02F0FF8 +:1086D000FAD36CDA2927A3BF4BF0BF900A1FE7300B +:1086E000B6C4C242DD6E7C1ADE9603DF9DAD1D6B03 +:1086F000C179C19FE6980EEDA019B330F6A4681FAA +:10870000AA5B63C3F15880B1829B62FDC79730DFDB +:10871000AFE07CE39FD78A7E8E8DEE5B963E02E1D2 +:10872000C83CEB099EFEF7FF16EA1AC0691B8E6F64 +:1087300085FFC173FBD55775B64904375AB7BD01DC +:10874000E607A0CA11FD9CC4B6F89D3739BC0DDB05 +:1087500059435995297C9D92795F9A73104E125313 +:108760009EF5C0F38E7FB1E177CF01DCD8288097EA +:10877000A7AF792FD43F04606BB06F2BBC1F17E1FC +:10878000FBAF4D811D86F7A1FBCDF06B54D368BFC5 +:108790003EDCF4ED94900F1E7858C80EE385C47843 +:1087A000A1875EF85BE906AC5BE93BF8EFDE4B3096 +:1087B0006F09EB59A21FD8F7C5B05F2B615E9E64AD +:1087C000D6310CC671D57D58548AF502A96F18C0F0 +:1087D000D7CD4E1535233E7865D606F35EBCCE76F2 +:1087E000D6388F0DEEDF16D5C2FB9A190E8F0CF31B +:1087F000AEF159CF46FBE7C543D6E9625EF0777B21 +:10880000BDF9FB15CCDD827081EEFB1C33084F4CAB +:10881000DF87550FC1F944DDB691CC87FBCAF7E578 +:10882000A3F552B88BF645BD269812DBDF89AA85E1 +:10883000E0821B6633C07F45D5B79B11BF98EAEC39 +:108840002BF072F8E3BA9F837527826F3C1C36B811 +:108850004F131C6A60A27202389CA87B99F060C911 +:10886000DF496100F2A07008557D5E548BF301B8BA +:108870000D9B91082E0F7D26DF90081E8CD6777AEF +:108880004C5F593ACCE734E06F17942737151663DD +:10889000FD046202F6CB82F66036FF4E9E1EC30BCD +:1088A000C06BFB28785FCB3CCA77FC31BC89C2A97E +:1088B000D5513C0AFAF9E62A37B3C0BC42DE9977B3 +:1088C000B054033EC5C109F90FAE8BBE97B1B4C613 +:1088D000DE27C0B7B938FF1C8200E17F08E8B86D19 +:1088E00032CE0BF6313B111DC3BBAB605F2353424D +:1088F000DA68FC4EA3F5EFAF4C4E1A07DF6F382C49 +:10890000FB1DF0741C9B4B78D1A2B2FA36E0431BDE +:10891000BC8B863103FD5BC3954C9D1AABCB176EA8 +:10892000661163DD0A0CCB87CF6F313DB746CAE9CC +:108930003B5BEB42D3F7D1F732ABEF86EF9AF72EE2 +:108940006699D938AF99CED3488FAC91D66975F86E +:108950005B33703FDE90D9367C3CC2CDCEE8F0016F +:10896000785BD373BDC85F3724B12AEC47EFF7209B +:10897000F21758678F28ADC3F838F1E333B69EC6B7 +:10898000912F2499E60798C29FC3BA3C6E7CEFA64C +:10899000F7F20589A9E9976B67A5F7F205D720EDEE +:1089A00052E9BDBE1F4A409DB60BE0DFAE3A3C6DBA +:1089B000F0B437891DC984BAF6B658F745E807F010 +:1089C00064B1C013BDEEC2FA5840C3227537EEDF62 +:1089D00069D591AE65603B0B8B38C5F819D82ED997 +:1089E000545FCCD258242B56B7E64FA0F9B90059A2 +:1089F0008CCF3B54CB985D00FFDFF9ECE9386C631A +:108A00006532D1E9A96A298CF2B0DDA635CFC079EB +:108A1000E63BFBB6013D1CC8B63327BC5F5854BBD0 +:108A2000C541FC25A4E2BC5C02AF36DBBBD93A9C55 +:108A3000E74D0ECF7A3F6D636A3ED04FB5A08550AB +:108A400060640BCA5F6468C380CFD8C3152C027002 +:108A50002AD0587105F251E03F61F82ED4643B6D85 +:108A6000A4A34290C311F86E79C85D1F81F7CBEFC4 +:108A700037BFAF62D6D346BA72C5D5F57DB0C3BF96 +:108A800072D3FAEF9B5ED7E7A3B7EF50A70C43FC76 +:108A9000B3E25A13C85357B83C21DEEB65BB85D50A +:108AA000215E32D91D41B8BE97EDEB923362EFC71C +:108AB000E64BA6F15D114E87CB5A2B087F46E7A700 +:108AC0008CF80891600A9B82FCA1437D96E8F8F33C +:108AD00010AB37EA0FFDE61589A3E7D67213BE6E19 +:108AE00090809EDC488F732D619857CB88CC2EDC0C +:108AF0004FFDFD0C31AF171B3C4CBD8EB1971ABC1E +:108B00004C0546F2CF0D0A9591862C7ABEAFC14F27 +:108B1000F5030D33A8FE4A834AF5830D2554B68C20 +:108B200098427C26EF8F152C64E0379FCE0CCDC881 +:108B300037ACDB766102CD6FA30E2FCF348277077F +:108B4000CA2B98DFE7FE8C2E59E2FBA9023ECD939B +:108B5000383ED11FBC9FEB53BAB81ED228F827FC71 +:108B600001FD246399C1ABCA1524E7899EE6E59609 +:108B70009E47F931CF6F63A70DF2C3950575035E6C +:108B800039B3ACA6F78C2D62AA815F834403911997 +:108B9000AB0F93177A894FAE931F3B3B15F9DE1A43 +:108BA000A680FC95BD7E5ABFBCCE4ECFF575B735BD +:108BB00000ADD870BDB0885103EFA78E8F436D977D +:108BC0009CAFAE44F82A79C11A2C995B63A807348C +:108BD0000D2F5E8CF8F39864F1CB24EF99E2B90283 +:108BE000E51087A714FC88E0F9BDB1AC3E7D147E8A +:108BF000E7D1500ECB8A95F41B1B4A4A58A703C7EE +:108C0000813209E947467A8B105C6188B085E0A221 +:108C1000D2788C2DF57C743DF6DFC12E211EBBD39E +:108C200012D251FCFC9B1BD6B133E3A1BA3F89E4BD +:108C3000981DE458125437601398977D445055514D +:108C40002F764FA13AB3FAFD8B12C8471D1F3AD5B4 +:108C500060733EF42B472A882EEECA535BF2471A04 +:108C6000F0DF6D0923FEB7B8A798E4627CD92CF039 +:108C70003CCF16627E6867037140F8EAD79871FCB2 +:108C8000A704FDF4E4063721FCED17C6D1B8B01FE8 +:108C90008FE1B8FA7E00857B88BE757C1A227C58ED +:108CA000D34F7FFAD3E9B81F8CE06F03B98CF4D3AC +:108CB000931BDA82FDEBE3E1BC701C1877DB5F6588 +:108CC000DC21B68379ECC6F1A27CD5AB31D4C337B5 +:108CD0004A5C8EEB707F2C087C2703CB45C32CC8E5 +:108CE0008FF2B93C8FEFD716A78F44E17EE0D7BF54 +:108CF000FE35E06F330E6D89BDDF9FCFF55C9BD0F5 +:108D000057DEB1D7DFC5406EBCB1F7D7A111802FB8 +:108D1000EF80CE867A13637D6115FA79189AB3993C +:108D20009CBD20936892C47BEDB7E13A789F64D1F3 +:108D3000EB174388771BC5FBDFEDBD18D2A01E7271 +:108D4000FA0F2A40572959CCDF46DDF4AAA80FDBD9 +:108D5000845DC0A65963FA6B26F22583FE4BFCC9DD +:108D600050C7FDACF8E85DD42B6D71ED5ECD67B4F6 +:108D7000AE5775B97023BB11DBEBCF7F901B7A35F3 +:108D80009FEBF7DEF1BADE0A7F3552783CD2A7DEE0 +:108D90006E33BCEB45FAB1869218AD4FB56C427E8E +:108DA000B0C812DE26F68325D0A76274A0B088C3AF +:108DB000B0BFD610E93D8877283FF57DD6DFFF5E4E +:108DC000ECAB5EEA7C3EBEDFEAFC82DFE3FC015FE7 +:108DD000FFFDB27CAB80119F92DC2CDC46F0F330BF +:108DE000B4B36CF5A97E8237E37CCB2EF8D665F858 +:108DF000D529696C227E1512FC6AC490F0BD2DC67F +:108E0000AF48CE3B97BAC249302FBBC4F995334B1C +:108E1000E3FCCA3B6D10FECDF915F0A7AB0AA0DF4D +:108E20005DF9C1D158327F8891BDE21DDA7C86DAC6 +:108E30000EE50F9FF71C9B02FD578879EAF366DE6B +:108E40000A2ABF54C0F9190B8E6467747C043C1E57 +:108E500086FB00CF2717B84720DC743D655881C7D3 +:108E6000348F21CF7B537D15F92F2C167FDB34D621 +:108E70004F3EAD9BA9503B69F42BBF97803E244FDA +:108E80004B10E944FF3EBE5FA7D0DB1E9DA5061038 +:108E90008EF1FCE744D358E23F279ACA89FF941722 +:108EA00024E63F55C87F0CFA5315F21FDCCFA61FEE +:108EB000FEF087C0878FE3143263EFCB0B38FFA936 +:108EC00042FE03DF4D083F55BF0FC63B5E23F9D17D +:108ED0007FB379657942FA3AF1777C7E27615F2228 +:108EE000206792F63F699B0078B9AA4026382FBECA +:108EF0005F2A263C52A60D024F8E475F2EE0F49E5D +:108F0000B441B3A1BCAA8A8CB2A33E52AD413FBECC +:108F1000A1F7A3F3CFAFEE9B514DFC33B9FE574001 +:108F200072CCDE78537509D437E6A977237CEF1627 +:108F3000F830A140FD06D6BF21C61F86F59C581DFE +:108F4000F814BD87BF807B7A7F3E652D94C89E0351 +:108F50005E1C213FD3D2AB3BDB0C7AF3B7C43E356A +:108F6000FD22311F79407FFFA2D027BD8CE8D2BE01 +:108F7000F4FA2E733F7C9FAC0E3E9ED52599ECC82B +:108F80008DA21FBDB48F8675CB4897EA469C7FFBA8 +:108F90004CF5615C57D20AB03F01BE492FB0FA6769 +:108FA00013CCE709413F49E5BC5DFCFB2E9C07BCA7 +:108FB000DF57B9D6D24A782987395E4EBD2C1FB605 +:108FC000C7D9A1313ECCEDCF24E13F8CE7B767C5CF +:108FD0007A8E8A79E976CE40E3FCA576CEFF29B871 +:108FE000BC9DF39382BFCCCED1FD1DC77B757FC7DF +:108FF00077528C7E2FBD447B4613F68C26EC194DA0 +:10900000D8339AB0673461CF68C29ED1843D8365FE +:10901000DE1F9BCAA6C3BC927B65D089FBF7FF7E8F +:109020008162E21FC9176E601AEA7D6E4F2ACEC7B1 +:10903000D15C78D9FD7CA981897939C5BC3C54EED5 +:1090400013F33D80F3A579F1F936CC0C9D463CBC79 +:10905000E5424496D00E07F30CE1953B6B037A068C +:10906000C1CE52CF703A3BA5A0FC78D0C2E9405B9C +:10907000EE227F6C91ECDE27135FE27CF0780DE747 +:10908000835FC4ED975EB609BE14DDF7ECD5EB2D1A +:1090900030EEA402760AFD9B13B2FAF2911FA7E507 +:1090A00086BEC071278099E848A5E72A037B6BFB41 +:1090B00013D69230F47FE209EDA92494E39A574A3B +:1090C000BD05DEB331A90B013EA30B393D6E6E49E0 +:1090D000CC1FF5B257CCE3E733D54B487F271BF6BF +:1090E000901CD3DF033FE1FC9971BD7C73659B73DA +:1090F00025EA3985E675B52C0925151AEA4EC563AA +:10910000473DF58327D9356C18C0A3D951154E308A +:109110008F0F9EF06CA4F933E583D46B0CF36A498E +:10912000BF06E1A7AF93F93CDF6F43BE13BA92E2EB +:1091300009C76BB7642ABED83A818F5C89E333656F +:1091400068765D52341EC0F59FD49BB34CFC4C2D09 +:1091500034EB57F04774B1F1E763A7B4B1D877A502 +:109160005919642FEBED490342BB9A19FE2E633F58 +:1091700033D67D603FF4E30A26D7A37EF5D7B7A3A5 +:109180001BC7A0BCB20B3BFAF8DE27493FB1D7544E +:10919000931D6D1FC08E9E93ABE617C27A2EE4AA74 +:1091A0000558AE9BA91662C9D669CB70DD1B586203 +:1091B000BDA2ECE6D03CDA874D1EF6757CFF37A0E9 +:1091C00047FA63FA05E8A36585067D34A627AA1643 +:1091D000D21387B87F436DA7EB5F40DFCB0A69DF0F +:1091E0003BFC8D12C29FC7A3D402EEF7FF53F52BB1 +:1091F00097D0879C4A88E008F251D841D0C049F204 +:109200002F5A77A2DFC6DEEBB3003FD95DF841A746 +:109210007516C069ACDEFE7827EA2179D916611788 +:109220001DED54C73176CC6EE86F06D85B7D56F1E4 +:10923000FE8DEA3AF8A75DFD20E001B8AEDF7FB809 +:10924000D30978252FD6BF7FFD03FC7E6696BAC36F +:10925000054BDBB8FF40C683C3717C75470A8CFFA2 +:10926000C9C433D5076FC27ADFD547A19E7E206976 +:10927000A53309E79B5F8FFDDD74E0C36A27BCEF70 +:10928000C9E4E34F0C9CAB467FB85A106CA27D0B2F +:1092900076F891FFC17841A4E799C0978C74BDB965 +:1092A00050E6745368A332CF1691115FF23298AA38 +:1092B000C13CF2B3589305F0E48DDCFDE9C81F8290 +:1092C0000146F087FE3BA8FF2AE83FA5FF77C100D3 +:1092D0009707F1DFC3778F135E56F0EF66222DCC30 +:1092E000E4EB6EB4D2FBEFD2FB7AFE7EBE7572C7A2 +:1092F000780FCE736FA75B8AB57FB0F0D5EAC671E1 +:10930000D4BE93DA77F3F683C3D9FCBDAE271D66CE +:10931000AC04CB4DC3B5AA20FAB1029C4FC59760EF +:1093200037A7E338C7EC7DEE05B0CEEBD98B9D8136 +:10933000249AC7B3048F3D1CDE3A7E3C5DB8A75A21 +:10934000E3F37C9EE659C7E73910BEFEB9A58E9FB0 +:10935000DD852F54A35D0EE31DA0F196F2F9E8F828 +:10936000B1BBF0F94E2D17F1E73359453E2E336D61 +:109370001BE055E9D43F5E6DD483C689F5F6646A77 +:1093800075088FE4AC3EDA5F555198512FC90F082C +:109390003E0A7B6C998EDC8DFFDB5E22A92807607C +:1093A0005E26BD725680EB7B45A23C66E7FDC3940A +:1093B0009CF2148E272BE1BBF70B2D267915A527E0 +:1093C00036AE0BF7316FF2998007F0E26CA1B5CBA6 +:1093D000BCCF974CFBFC49E11F743CF988E0310895 +:1093E0003D5C12F4F005D203FAB132FBCA511F6B97 +:1093F000FD0F2BE371458EE77685F9D1EF9F0CDFEA +:10940000E3FB7C2FEB940D7EE43C6F7725F24F035A +:10941000BDFCAB915EFED47E757A8AEF1FFA950291 +:1094200039FDE9E98BFDBFD3E9C916C075EFE6EB5D +:109430001E087F07A2830C8107F1A5DE8F4E9F9740 +:109440000A7F6BA24F03DC47D2FC427CFCC1F816BA +:10945000F3727B1FF483AB0309F0CA5922717F9525 +:10946000764D976A8DE1FD3BFB33BB04DEA7D278D6 +:1094700062BDA9087F839DA3E3B30EC79BC47A7A1C +:10948000853E00DF5F4FE3D6707826C06B816703AF +:109490008E3F3560A0BB3C0606735A8CBE065BFF50 +:1094A00055B8CF39063B7034C813C40BAF42F90628 +:1094B000D07F5EC0C01FF5F18B0E7CA2D37D21ADA5 +:1094C0005FF099DE42EE8F007CB20AFEFB8E914F78 +:1094D000BD53C8F475CFA5EF041FFD53E98BF98682 +:1094E00028DF233C5E7A84B18472DB2E733B9105C6 +:1094F000A6D2FBFD222ED7EE1D477AFA38964C7481 +:10950000D19AC5E31ED6B43DCE4C78FFCE9B63B94D +:10951000FB5DD8EDCF835E8471983D604F60F99715 +:10952000C6739CD3240DF562BBF0A363BC0CCBE4E3 +:109530000BD3C9CE916DD50CF576BB12069B077186 +:10954000E5E00159D71B614B7BC67633D41B5C8A9F +:10955000C6EAA1AC290CDD67C4EF20E37F87FD3F9D +:10956000267F31FCBD946CF063FE2097D33F0BA4A3 +:10957000139C757F815E1F0CEEB13ADB27A3BD946F +:10958000650923FC1C139FD592A0FE3B959D621498 +:10959000B7ECD650BF77DECFC87FE87A42D3486FAA +:1095A000048C4BF532B6B7F2456ADF0B0CDB01EDEC +:1095B0009D3E1E8FC53FD46F7B2BD65A34F8BEB567 +:1095C00046A67C87D69A55965EB467555E67D6E008 +:1095D000C469507FF04D99A15E7E3C0E0F7E89FBE1 +:1095E000761DB773D0EE1B5D1FB125B2CF8FECFB9C +:1095F000C95DBBD11EAD7378920034B7DFD3DD8A6D +:109600007AC67BF76C21FDEEC8244D432767E5D869 +:109610008E31E8C26EB76A14B770DEF363F2F39D61 +:10962000B08572D2306F647D37973F55652519A993 +:1096300031FB257EBC7342CEFD62EFCE56844FAF28 +:10964000E43C85E5A41F3A97113ED63A3C68F79F63 +:1096500098F8E818ECBFF2F694655F87F76DF9F0BB +:109660001CE6D5BBD349F6546FFE03DED506FE5388 +:1096700039D65E8FE31DC95C4DF952C9257E7B1238 +:10968000F1FFDE6F61BED4B17BA6527CBA3563BBFD +:109690007715B65BFD4ED98DD0CE59254FC7B89002 +:1096A00053E920F85CAB68DA29C41B357400E9780B +:1096B00071FDDE22C447E79DBB9A31AE73EDC587CD +:1096C00069DE2798F314DA656D19EB9DF8BCB56671 +:1096D0008313E71BCC5869413A62F9CE53C8CF5B7C +:1096E000D566E704783E41B154DF91DA1F1EAD4FD5 +:1096F000B25B425FC279B57857A760BB7F6D08A5A2 +:10970000D27A13DA8D2703DCFE9C3469F5732B11B2 +:109710006E99768F04706995342FE6DB688B53FC65 +:10972000980F10FFDD8C220EF7DBEF89D8D0BF0138 +:10973000FB437CE7DC81CA2ECD8A79207CFF2AADF1 +:10974000CC6933C4B7D372F3CF207D4D9AB49DEC6E +:10975000CECAEB5BBC4897AD19AB73105EAD228EE1 +:1097600031A3E82B5D9A0FEDE9E027D81ED6F52D41 +:10977000849362017AB86560FBFA04D8C99E61B12E +:10978000E799455C5F013CA8223BDFF7684F662202 +:109790003B79F5B7C7A09DDCAEFB03763A89BFB530 +:1097A0002E737512BDE4CB11F22B5CC53AA50C9457 +:1097B00083F917713FFF17E05D7AD1C8FF56BC23CC +:1097C000BC3879606D17E9DB602F06C9FFF1A23361 +:1097D00011FF6859129A5864E08B2E1FF77FE0BE84 +:1097E000B22FC5F631FEBB134F747C2BA1FF43ECA7 +:1097F000EBF6A1EFEB8D45B0AF17857EC84243E392 +:10980000E31B2D3C9F465BE9F020BD0485BDAC0405 +:10981000EA7B6DD330CF66AC847E9145826E3C4549 +:10982000B0C588376FC9D84334BF2684FF4E906FC8 +:10983000A38F171A24CF26149767139F5F73DCA694 +:109840008D413CD49E73FA296F12730DA19E7DD574 +:10985000B42D6D063DF99B45769AA79E7F733C9B80 +:10986000513CDA15BA71433EACE7E712EB9366E080 +:10987000E4D4D4FCE9E41A2599B9D9EEA7F7C7F3E3 +:109880009D7DEB29EEA5CA38DE9730EE0872696A35 +:10989000AFD59C47E334E7CDB8D8450BCA216FA1BB +:1098A00093F20BBF34481ECD578A524C719E81F8FB +:1098B00082C24EA52C04BCEB5D573E4C827A63916C +:1098C00025A13FF11F851FAF1BF4138C273E0BFA18 +:1098D00009D677837E82F5478A385E1C17719B0311 +:1098E000D57750DEA7BD8C498EE1B8DC1CDAF7AA2B +:1098F00022AEBF6ECCE3ED8780F7AD4539FDF11E9A +:10990000E74DFAE2BACBFB1F079B3753470EC91F3F +:1099100093777118F9E7002F296E3CF078AD62BC9F +:109920000E2A9F6D78428C1736C5619F5365A2BB86 +:1099300040FA4FBD193EE3783C0FAEDD66CEFBE941 +:10994000F54DD982FA2494C36468DF8D7898609FBE +:109950005C1764539C615611D7C35CD66E8A37B8C6 +:109960002ED8E9FD2E6137C5FAE7F17DECDFE28EF6 +:10997000E9A57F6EFF3ADC52E58EB2746EB77BB616 +:109980004D13CA21D2559687E2C1BA5EED641E3BE3 +:10999000D2F75B45193C1EC7C2E341B766726DA1A1 +:1099A0007B32C629765B27A3FC7D2625E4C57CE8AF +:1099B0007DA3EC63908FF7FE2474ADE732F110D8ED +:1099C00060AFC54BA35E21CA1116A2CF8805EBF18B +:1099D000ED7B77BF3512E5EF33CF398978B55196F6 +:1099E000F0F88CFEEDD28B39BFCA7E6E37E16D3B4D +:1099F000267843FBA5A0E82AF0CFC54D4748FEDCFA +:109A00005E25FB55D2F3DEBEF536E42FAAEC1F4FE0 +:109A1000F5A3246F4FECB6E232598B7AF4D61BA132 +:109A2000DE724FCE1538BBBEA22BF4FC529277EFFC +:109A30009584EC985FDAE2EEBDF536A8B740BF5DDD +:109A4000C8A758AF0DE9E0847A3405E7DD57C4F5BF +:109A500096676CE6B8BE5EDE599C385E700CF121EC +:109A6000011CC1D0FA57A4BF65526F0AEADBA9C531 +:109A70007F5C691D85F0399785F55BFEE5D3AEC047 +:109A8000649AC7129C6736C835DCD7DE7CC77BB8C2 +:109A9000CFCFD43A14F407ECAB7DC17B0AE184FB51 +:109AA00075197A1D6CBF96E54B9AE306B0931A8F31 +:109AB0002C6907BEF2E82B0B565927027C60FC7616 +:109AC000E0AB278A1CABD0DFB851E4815CF94AF9DE +:109AD0002AD49774BB23D5A196CE4BB09F317995EC +:109AE000384EF9B4D8EFC1E26FF670E2FC5ABD6CA3 +:109AF000C1FE137CBF46ECCB6345EAB8628CF7A984 +:109B0000EA782C8F65727D9105CA07E1539C6F043A +:109B1000239E1617D289A4BDEC4AB0CE5EB1CF8089 +:109B2000E78BE6C1FE2CCBCE9C8274A5BF7F42ACF6 +:109B3000B345B4D3E935B42E83E217C0789D186FCE +:109B400020390E30FE8590DBC79243CF90DD7B83BA +:109B50005DED8276419FBD98F23E30E103E61D74D3 +:109B6000BAEDA8A7392733BF6314DA8FD1FC6ACBCB +:109B70002568F437C5C3F9B8DEDFD23900FD3CC52E +:109B800092AB785EE1C99AEBBA7810809FA720FF6C +:109B90007826EC97809B0BCF53209F11E72998C81C +:109BA0009B273B15DA05BDBF6DA6FC6591371FAC41 +:109BB00071D88D79F32ED5A619F3D397D7D98A4BBF +:109BC0004718F3E62DC5CD505F8A79F3FEFEF9EC18 +:109BD00027F5BC79D007300EB3342EAF9E89BC79FF +:109BE000DD6E0E7A9F55310F46CF9B776659CF9A1F +:109BF000E5FD439FC9A9342FD3F35F14794C7C67EB +:109C00005691BAB63827862FE38B999E57F92D5C6B +:109C1000AF4B95298FB90FF9343CEFAD9752508F68 +:109C20004806FE81ECC37567A3C6DC89E065B1A375 +:109C3000DD03BBDD51308AE041F0F5543286E72B7D +:109C4000986AC89FC77C7BAFA5D87CDE8211BC5CBC +:109C500042BF8987D70637AC1FE189E72D3C83C314 +:109C6000AB3F7CDCB49FFA798B7838DD51CCE1D402 +:109C700022CE5B94162BC20FC8F3F55D98AF8F7A96 +:109C800089B5630CF2CFF7843CD4FD3800A9910B61 +:109C900013F8BD75B9B8312FF81D8437D871116B21 +:109CA0001A1BB25FA3406524270A3C72382C61BEA0 +:109CB000B47A27CEA7D0E3621169603EC634D79646 +:109CC000C865F88E5E023EFC03E2C3407CE3FA38CE +:109CD000FE1F8D770D71FE13424ECAEF6E1BCDC86D +:109CE0001FF3A32C91F75B2711DE17C94B5BD15FE4 +:109CF00073BECEC678DE396B457E5129F6B135A7E5 +:109D0000F1FD34B457258B1FEDD5E598C70F206FB3 +:109D1000C95E48FDB03290F957631CBE2395F8C95F +:109D2000682BC371AABC9F5F7716A6A81504B95CFF +:109D3000FE3AF36C80FD5BC62236B4036E67F529EC +:109D400085307E92F59EBB508F4876FE7DCE4AE8E8 +:109D5000EE81CE3B9EAB86D291CDF3456F93FBDE79 +:109D60009A0BF87876EE995A0FC88D548B56360EAA +:109D7000E0FDD01CA6DDE3C4BCA3BE8A00BC5F72BC +:109D8000F0AE2D4D00FFE381D324E75C3D3F5A8DBB +:109D90007AAC9E4FF8CBE2EC1A942BFAFEDCFB5621 +:109DA000E887E8CFACC23828EA3FC24ED1E3B055CD +:109DB0000AF7DB57A19E8072FE04EB7273F8503CE9 +:109DC000371DFF0DF32F2BE1FC343DB776C329E19E +:109DD000C7BAD6CBFBC3F32F7544A9F47F12EACDE3 +:109DE000E9C7E3E3B53CFE4BF611DA251593A4ABC6 +:109DF000A6119DD4A7A11C2DB152BCF7D22566BDDA +:109E00008473F745BF7FE352E6E0F8F5D72A1F6D6C +:109E1000E071E001DFDBB5BB107F1F9D336114A64D +:109E2000980F1B3B210DFD0656943A00BF73A0AF5F +:109E3000225E2C2AE1F8DC7A2BEAAE44CFA9B8CF17 +:109E40000F481DA93351DFDA29D339B88F7DA755C3 +:109E50008C1FB528AC8FC13E2E98F5A18AFD0CAFA2 +:109E600066F532D41F2BC9A07E3C3BE50751CCB52B +:109E700078FF4A7936CE6EFF22031FE92AE1F69574 +:109E8000EE571EE87BDDAF1CFF7CCA6CBEDE683E71 +:109E9000F40E99E743EF90C9CFFCC5BB5CFE30766A +:109EA000CA14B7C370EFFD5318BBF1828FFCBFF12A +:109EB0007E61BDDD5FDB0FFD6843153DCFBE504DBC +:109EC00076C13F36D451BDBBA19ECA671BD651B9DE +:109ED000BB41A3F633EE63441F1FD73AC2EB611DAB +:109EE0001F2745CE60DE8B36CAAEF073899C7F9EFD +:109EF000A8BE8EF84F8B14CA1E86EFA56486E75E57 +:109F00005A524E75EFA7F659E49F6356CD8BEF8FEB +:109F1000376631F40B1FB36BD7A4A21D0E464E1744 +:109F20003C3FFF5998EA210B10FB2DC4E77E89E7DF +:109F30002353D3B314D47736A4D6E730D06F6B5EF7 +:109F4000FF609B15F8686BE7D3915FC3389143DFDF +:109F50005D8D398B27246D0CE6D75D3537651BC6C3 +:109F600047969F8DF8905F38CADEAF750DC7F392A4 +:109F70002C96AF3C23163F61DA3F6DAD1B0DEBDB3A +:109F8000E610F1A1676A304E614DAEF7925F5BBBA0 +:109F9000547B10E8BEF2DAD0BD58BFF6D0F3AB70F8 +:109FA000FCCA2B797F5BE67F6707F29B0792EABDCD +:109FB000C049D94365AFACC6F70F4CE6FD2F9BFBFC +:109FC000CA6AE44F72350B221EC9D521CB9B688F1C +:109FD00067ADDC8EE792364F9A32CC0ECF3F992B8D +:109FE000EB79251EA6F30D405197F3A15E3C77B1A6 +:109FF00014ED3DC08FDB059F8EE23F8B9E87B3A2A1 +:10A00000FE76EFA86EF257B68FD1E87C2D137A5A00 +:10A010002BFE0BD72C691AC27521F364E079BD9928 +:10A0200065222EE7612194F376BD1D0BB1FB603FE5 +:10A03000829FA628A83738BD56935E46BCEF0AD14A +:10A040005EC6D27C4E8F6955AF8C9B8EF6236FEB2C +:10A05000661A9D77B48BFCEEF8737CF2DD21D2C3D7 +:10A060008E801E82E7558BDC5D912BE0BBE61911DB +:10A07000DB95305FE0B17E4DC171F839C6787A5C0E +:10A080001832EB3545717A48B2CFACB7D8459EB897 +:10A09000152647E7BDECFE9747209FBF42E2F8CA6E +:10A0A0000E86310E93CCA27F0AC65B968BF56C2A86 +:10A0B000E17A72CFF59E00F2C565616932B2F1199D +:10A0C000A82F637CF85C78432ACCBBCEDB7193313C +:10A0D000EFEDDB254E1ECF0A371E1F81780023606F +:10A0E0001E5AD38B6A37C6F716CDD9B9D549791B15 +:10A0F0003ABE1ED8AA027E2E5B27E2976CDF568CF2 +:10A100001FF614E8F8FBB31A7C1FCD33D15ED88A52 +:10A1100079AA03E7953C575347717059D477517F1B +:10A12000F232FF78C4EF83F3CAB725E17911E61F55 +:10A1300083F5AAD74EAF0A40BB40C9DD8191B08EEE +:10A140008A6035C503E3E17F68B6399FF958018F0E +:10A1500003C7F2BC1FB4633ED2A37338BE95176821 +:10A16000B5415F7F3B4F7FAF977559610DFD9F559F +:10A17000408D99307EAE85EB39B933BD9D8D24B7C6 +:10A1800043965EE4133F4AA738E7B7E770BE5EE543 +:10A19000FDEE2F31DF09F64AB11BF0FAB835B20AED +:10A1A000F9D6793CE9311CCFA947C63AD15FD0E74F +:10A1B00054C384B7EC9D7186F377E9CC43FAF3ED91 +:10A1C00080B711C0DB35DEEFFF92F40A66B09B6EFC +:10A1D0008CE1BF2ACE45DF7CCE4C2FB3FACCF5BC48 +:10A1E0000BE67A3E33DB3D854E73BDC863AECFF6DA +:10A1F0009AEB7314739D3571FC07E9417641FC7944 +:10A20000097AA2D32FEB7F5E387F720DD16332D0F3 +:10A2100023C6EBEC71E72ACE6FFD7CFF2580CB23B4 +:10A220005E1646BF42B237B813E5FC9AC332C37814 +:10A230009A860DA7A1FF4522FFD262E7E8E2C0346B +:10A24000CA2FEF75A01EE5644A74FC4C1EB743B9D3 +:10A25000038CC88EFE6857AE8DEC95C5CC6C9FF60E +:10A26000E733EC18F29952B15FAEA65703C867BC4A +:10A2700057CB0CED11E6E7EBB2C07F381CBAD527FF +:10A28000701EAA93F2F05C4D66BEB1261409227EC0 +:10A29000AD007D5AC920BEA5DA914E35897D87D1A2 +:10A2A000796553FB6B2F7E95EC2717C009FB8B87D5 +:10A2B000539B2F48FA801D2668198E79465B5AF108 +:10A2C0001C2BF35BFD4816CC1DF21AF5927BE77050 +:10A2D000BD735F651BE5F57FCE2C7E07EAE39BB877 +:10A2E000BE8DB91B642FC59F43532AF939B46B81C6 +:10A2F00096817E1DEBAE3E82A684E4E1CFC1DE0FE7 +:10A30000A1FDE1B006A9EE08324D9B4C797C852574 +:10A3100039D8FE1A6AEF60FE56874CE779AA783E74 +:10A32000A4C78E7EE96AEF2BC787C3D87385DE5436 +:10A33000ED746B6817039E7D1A5D2FC1372ECF4FCA +:10A34000D82B7A9E487CBEF822D1DF5562DD86FC90 +:10A350003AD59C5F975D13F0A13EC9E5F092926CEF +:10A36000E2932DB398E08B4BB6EE0579F7F8BEDF9C +:10A37000BF558E7C77ABE4C7F8EEE3DB1BC9FFE18A +:10A38000DC217950B5BC726CDF5BE5E8B72BB2FA23 +:10A39000116E2DA3AE7804F5F2CF7D4C41B298ED4D +:10A3A0000BAE4138AF093B146E37A9A9E8029CC92E +:10A3B000F4BFB08C72F146614F83FEFC66C0865BD1 +:10A3C00050BF3F1FED24D5D987789016A9EFC5BAA5 +:10A3D00053B5FAC30AD93D12F6DB01B8EF817E9D71 +:10A3E0005B33F2513F6EAC5CCBE33D606F5D89F84F +:10A3F0007CCE7A1AE11984FF5C127298EC8B12738E +:10A400005CC2AEF0F34E37C6C51B74F96867BC1F5B +:10A41000FD794389F9FCD3718C43D8D08F769AF4B7 +:10A42000EF2F6001E9C3495ED339318C07205E62AA +:10A430003C00F380511FD5843EAA39FEF2BCF042A5 +:10A44000A13FEB718496256AE1EC91F89C111E4CBA +:10A450003FAED1F37F9ACDFD0733CFF1FCCB4A4716 +:10A46000E273EB2367733C1AB23D6035DB038A98D5 +:10A47000CF3206787D43FF7CFBA74BCCF9F62DDE6F +:10A480003FEF5CF110EC0D42B6ACD94F92BF74C1F6 +:10A49000AC5A2FEA176B72DD0CEDAEC7B77F46F8EA +:10A4A000ED0A58FD250CF1FD1B9FA17C5CABD81972 +:10A4B000E27B6BC6F6629A979779902F0F1FC5F9CA +:10A4C000701DD82316A8CF0E73FFF81A9585F9FDD5 +:10A4D0002DDCEE9D2EB05BC7E7175C5F3954AE20D4 +:10A4E0001E77ABE8274E077641710581B74E16DA25 +:10A4F000BF1FFA490F26D3F972DD2E5EC3627FD1EA +:10A50000FC67615FE74E8FE98B79171F56B7E13A19 +:10A51000426E05E965CD56E9A64476DEF477CD7640 +:10A52000B54BB59AF2A4F1BC9AF1FD30399FDB2D01 +:10A5300019967023DA2DB746CFED51FCB845B10816 +:10A54000BBD542F61994D4FEFC71467926E7B7AE26 +:10A55000DA8F76CBE78AB51EFD611FEF7D90EC5751 +:10A560003BD031C6AFED5EE00F48D73EBBE2CA48F4 +:10A57000C01F8E8B3C6D8C555A906E97C4F2B619E5 +:10A58000D2FB0FF7A3BFF3DC2899F26056887CED6D +:10A59000E7851DBE42E1FBB5C2CBF76B85C8DB4E3C +:10A5A000C417880F09B913CF1F6E546B5804FD8070 +:10A5B0002BDDF5E8D7ECCF27CCFCE1FCD633AA8A1B +:10A5C000FC09F900E0B36D8E995F0C14B73CBF55E0 +:10A5D000E67E278FB753A67E0A8755C3F30B151661 +:10A5E00053FE90B5A3C214AFFAEBF313CE3774FE4B +:10A5F000EF8CF27F33BD38ADF5442FF61D0EF420FD +:10A60000027D84BF8F70AC3B2CFB517F8FD2C7BBC8 +:10A610003A7DC4F37FE0F3F8BDE0F33ABD38C658A5 +:10A620002DF89DA7530E231C80FF7B6692DFD7C2B7 +:10A6300090FFA7B3700BD2914E3F9BED613BE11DA4 +:10A64000F0FD4733082F0AEF43F921F0227EBFFBCC +:10A65000F17FDF9FC6FFF306D8CF78FEAFEFEB7F29 +:10A6600035FF7FA484DF3784FC1FF376F5FDDB958F +:10A670001FAA9C33D290C73802148869B13C46DDCA +:10A680002E6A7DED17AB301F592D08BE8C7283F9F1 +:10A6900078FEE1CBD80FE5CD8656E1F3D4ABD76594 +:10A6A000A31DCDFE81E72DAE1AE8FD0EFEBDFE3ED8 +:10A6B000415EEB32B457560B7B39BEDC3B5B9C2FC3 +:10A6C00010F9AD30AFBB701DB1BC486E6FAD7AED07 +:10A6D000D42A91D77DF71C433E65D45ED34E6E419C +:10A6E0007B4EB7D7BEFCDAC95598AFC4DCDD5ED46B +:10A6F0008B5B1A53C87F32B544A171DB6D616F0764 +:10A70000C0EF8D89C58DC857DC9B2D843F7A9E1282 +:10A71000D3DE257F352BE1E30C2477D402753DCEC3 +:10A7200057B723BFFADA7B247F609E2DB48E80C892 +:10A73000071776E7375F7B778B807F1BBD57F93A2A +:10A74000753BB5E9B55FD2BC336F56BF85EF57A0F7 +:10A750003D66A0FF93F7A72789F3ED263F6E72169B +:10A7600097F3755E7E8EB16AA92B9C99207EF615B3 +:10A77000C15F5AA5C4F1D5B4DC82EFCD213B3332A1 +:10A78000168F9054FDD6E911F9D2ABE81C90CCF3AA +:10A79000A573D773FB317792A513CFB077955FDEA2 +:10A7A0007E4C53B532FC7E69586643B117F32737A8 +:10A7B00091FC7006408F57705DDFE7FDB2FFB7ED8B +:10A7C000C7CD935692FDF839C82796C02ECABB381C +:10A7D000CC49745D2391FFD0E9ED68C678461DC869 +:10A7E0005D8BC7600FC6D98983D983D5E2BC0F7052 +:10A7F000E2E2C008D2477A514FAF0B815D89761DE6 +:10A80000D8958A8725B01BF75ED66E74DBB8DDD885 +:10A810000A7623FAA7E2ED4637EB28B64F1BDC4E4B +:10A820005C8BF23A813DDDBA63619C9DB8C1793998 +:10A830003B71C122498F93F338CC4C27DD43407FD5 +:10A8400088DF3727539C38FE3E98A922AE817F7F50 +:10A85000CEF9B5B9E2FC1AC37CA194FF8A736CBB34 +:10A86000BC986F5B2DE237ED7B7732F41B55678127 +:10A870009D40CFED8F19F9887E8E6D2A0AF71CB4A2 +:10A88000E778BE4E4BF62314DF6252DA64D9906F3C +:10A890005751C6E9FB7C06E71B2DC343DEC906BD45 +:10A8A0003324F8798BC8DB60591C9EF6A5376F31CD +:10A8B0009E1B9C3497E7FDECCA5727CE25786A2269 +:10A8C0009F4ABD7E6E4ECCCED5E588FE9D7F2E1F65 +:10A8D0007FCA5C49C8BBE0146CCF4688FB0ADC9198 +:10A8E000B0E50A637C89FB1D753F64CF964E3BFA49 +:10A8F000F7D68AF3276C5387E91E97DCB992906FDD +:10A900006A2ECE6B42813A0BFBCFB5AC277F7A6EB5 +:10A91000A65D41BF59AB2D7246227F3DF36F1B4EA2 +:10A92000E7B0C6221EE5C137E817033E3916FD978A +:10A93000059BAE273BB7B982CFB798D55B111F4AAD +:10A94000580795C1BCD03C1C675FF62CEB08986F8C +:10A9500051497E00CB8979C1325A17D3CFFF717C20 +:10A9600079FBE6D0427C0EFA18E58FB87C61E2F7FD +:10A97000FDF1D81C37F9410587DB8C02F536FCBEAA +:10A98000EC66B50A4B252FB884C619E89CA1D817E8 +:10A9900090532BB05DD227F5D938EF1FE48656F1DE +:10A9A0007D631D63129CA7D7BF3B2CECC59E149002 +:10A9B000FF063CB97F3E9F8FE7565ECAD5E112CCB9 +:10A9C000AF6AC78B34A06C0A84BE8AFDB767ADA49A +:10A9D000FB255B2A604EA057BFE7ED1A8F7CACCEFB +:10A9E00027ED91864189B84FCAE5AC6D98D71AEF2B +:10A9F000FF68FA855EFFD9EA3A9FC11FA2FDF36A9C +:10AA00006C6F75F0FADF95FD6C3BCACF3A459CE35D +:10AA10007D57558C78F1B0C0B7C5856A03C201F087 +:10AA200042C3F258018FEF25909F4D38FF6368E7CE +:10AA30005A68DF5AB11EBF6FB01F0F8AFD6813FB43 +:10AA4000F110C17590FD18C81FB469AEF0FF964BA8 +:10AA500082BE828F517F823E60DE8F0F32EFEFD257 +:10AA6000FBD8BC7F30C0BCC3F81CE6DD29E6BD6561 +:10AA70002878E49AF6C8FB1427D09214E9164C7390 +:10AA8000017AC0FB51FC1C7F5D5E29ACA11D29E948 +:10AA9000FB3A61279DDF704FFB10EDC90F5E5FB27F +:10AAA000CD3932E65F7F75F64BAB5BBDA8C7F4DEF0 +:10AAB00089F5B16F9F59651D0370C8E0FBEE7DFB02 +:10AAC000CC163CDF539EE91F2F015DDED953BDCD6F +:10AAD000394BC843C3FD3B47A3E3FD647B1D8C5743 +:10AAE0001E8D1FD46D53414F2B4FD6BC183F7B7723 +:10AAF000EE97297ED6138D0FF4AEC1F7FA780F9733 +:10AB00007F651B8EB7A8641743FE803E37941B8B6E +:10AB1000CE692DA930BF9EB92C82B920B1F34CABC0 +:10AB2000B761BCAC3C8D8FB7B667592DCD37AECE73 +:10AB3000B2B8FE087CE9A708F79FCE6504CF8A204B +:10AB40001FA718C781395478CCEBAA5078BDE9E823 +:10AB5000F2DA5658D7AD15BCFD6C31AF5B19AC0BB2 +:10AB6000BE79F7F5FD6BF8BAD451283F1F2EEF5D83 +:10AB70001300BE2FA734D1B918A72FEEBC9E285FB3 +:10AB8000157E1F3683EBAF30BF57D12E7855D823B3 +:10AB90008B0B831FE17CADAF00DF90896F909F0A24 +:10ABA00019DA9509EE0BD2ED98F254AD36688CF7B0 +:10ABB00085D33B358ACF0527CEC4F8434FBA24C18D +:10ABC000DA1E16F288C5C5FDCE8FE9D6D07E3F9736 +:10ABD00061ADEFF2F48FFFB1B8B85E7C1C7083E01A +:10ABE0004FB1781F8BDECFF9DF19E7DBE0E67A6142 +:10ABF00091B8DF35F9CE5D0C43A9CD33FC1EF4735B +:10AC0000078B64A619ECD8F8FDFA4BE37C9D627FB4 +:10AC1000AC769ED706384471D93D8D8D64DF3D25D5 +:10AC2000E096B688E345E1425D5FD296E37DA8E514 +:10AC300000413C8F2077BEE0C43CCF76DFB30731C4 +:10AC40007E77CC6B57107F5B46ADF6223C93FED6E9 +:10AC500041F75DBC375C4941BBBFDDB3E11A7E4EB5 +:10AC6000AAF9DC418C8F0B7A9D3A6F3EC58FDF5479 +:10AC700038FD1DEE3D7F8EF22415D829C33ED99DA7 +:10AC8000B9CD956847E4F3BC73C33ED07EE39FCD56 +:10AC9000D01EE0ACE13DB8A03728E938AE97B7F751 +:10ACA000B2538D946F22EE698DC699C53E3985FDEC +:10ACB00021DFAD3E84F7DBB67B640FC65DF57DD644 +:10ACC000CF33C6EFAB9B29A67D7755ADA2FC24DD23 +:10ACD000FFE42A31EF5B72A9B90EF68A69DF0AAA8E +:10ACE0005691BE5C0078A2E0FCAD7E2BE9B5C34076 +:10ACF000BF86F91D88E545527E9A53CC2B30BC594E +:10AD0000C3791F609E3EC42FBB62C687A211D54D7A +:10AD1000C3B15FF7F0C9B83F40F12330BEB16A9EBE +:10AD2000DBE4DFD5CFE1E9F64DCFD5DD2ACA77D018 +:10AD3000CB3CE83F3A82714D1B9EDF6BB4633D19FB +:10AD4000B3053258BF7379FAFD566BF17E2B8C93A5 +:10AD5000F922EEA9D83E2CFB2568BB36A0C7374A9E +:10AD600077A0FF6DA8F70BFC6AC1A5A74DF70B688C +:10AD70005F3C8D72E6DC45FDBCF36F9EC6B8EE808D +:10AD80007160F6C91D1807D6CFBD6F3C54B313F3DD +:10AD900028A2E735D9BB1FE2F7FAFD02BB0EBD3E84 +:10ADA000FEC1C9B1FB05D6CF96761C1C15BB5FA0B2 +:10ADB000BDB7A8CE78BFC0A65E6B9D73542CCFA242 +:10ADC00035E8AC13F70B74CC437A1AE43CF59E7962 +:10ADD000FCFEA65DF3F879EAC1EE17F8BF152FD394 +:10ADE000E364A0AF6A0ED457532DFC9E6E56CFEF8E +:10ADF0005D8BF347DC21FC09DF10FACC65F4D31F2F +:10AE0000CFC3F703DC8BF0E43C65A07B115EA4EFBD +:10AE1000E2CE71E37EF173D4717EAE83663F17E8B4 +:10AE200057FB703FEC6EAE17EBF381E72F63BF76F5 +:10AE300085CB3DFD7961D4CFD5A1603F152CCCF5F4 +:10AE400021E000E8CFAFF08429AF816993A8FEF13B +:10AE5000CEC7DFC7FA038D498A4CEDBA19D2DBD1D0 +:10AE6000791C1E24DFB1BD8F89FBCEB9DFF1E3323F +:10AE7000290DCFCDC6F4A8553BD1EE69B3811E8410 +:10AE80007EF943AFAFE67A10D7A3BE98C7D400E8E7 +:10AE9000510FD8F4F69C7E08C4441F7FBF1AF5A258 +:10AEA0008F6D66FABA9589F6DA37496FD2F5B0AF89 +:10AEB000BD75DAA487FDE1D069F2770DD4FF1F4B91 +:10AEC0007F53DBEA8BE949309F08BAE8EC257757D6 +:10AED000A17EF2FEBC3F6C039C32B5A7BCA1687F8B +:10AEE000BF21FD3FFE3D9EFF9F67F06F0ED69E95F2 +:10AEF00046F5988BB87FAFCE5608CEF1F91BBADC79 +:10AF00008B97AFABCAB8BCFB59916A2D85EFE6EDC4 +:10AF1000DF706FA27BEF534AB99E3E2FAFDB8B727F +:10AF2000B37D0CB7BBE3DB7DAF94EF33F4730DB6A9 +:10AF30003BD798B8DDD468BB2D74AEA46D2F6F8756 +:10AF4000FD2F34B4BFBA94D3537B4A62BFDF9E5205 +:10AF5000DDFE0D8EC1F9B387383CC06EB8A67424EF +:10AF6000DAABC10C2CA3F43599DBBB60AF8EC5E71F +:10AF7000CCAA919DD16EE3748F30956F4EC03F7C0B +:10AF800066FE11CF37A2FC6711D3F0BC889217F28E +:10AF9000E37C36ACABE7FEA941EC8C7979FC7C4DC7 +:10AFA0004B0A8743BC1F214DC0E153E107D2EF7527 +:10AFB000C37B108C7EA279A29DCEA78B0E67AE3686 +:10AFC000F2E992D2FBD718F93463F7ED447BA0CCB9 +:10AFD000C1EBC1D289AB851F388FE079BFE04FE864 +:10AFE0003833FAE9E3EE1BD895AF96223CCB0688BE +:10AFF000D72E2A9574BEB788E07E8FEE07E7765D80 +:10B00000FCBD1E4B4BCDE7E1408E9590FFA3DBECE2 +:10B01000FF581ADD7F7529EDF364399848EFBF7545 +:10B0200091D08F7D0723B27E8E5121BA564DFE9668 +:10B030002F85CDFE96D60E53DC786D6CBCB5A5DCA5 +:10B040002E50515FD6E3A03D4F3716D1FD8396B009 +:10B05000DD38CF31E2BB9E1FF1F779769E0F15FFE9 +:10B06000FE80B00F007FBF5E9A63F0D300CEA23C9B +:10B07000CAB54CE955C9AF23F91B61FE73B3F6920B +:10B080007FBB80313FE6D316FAF2AD98AE5434ADB3 +:10B09000BA09CB605EA811E7393BF7033FEA89B9EB +:10B0A000EB23633B7C84FF1B4A851F8BFC7A82EE7B +:10B0B000110F171AE6D52EF6A1654C62FA7BB54C36 +:10B0C0009773517FCFC3A543F1F7B8B91C68B9692D +:10B0D00074D878CEF38D4551BFCF63A5DC5E7FBCBD +:10B0E00094DBEB4F9692BFAF45DC7B90988EF43C9F +:10B0F0003EDD9F565E7A24F72A18A7689DA470FD4E +:10B100008FFBD79689F7FAB8E7CA242F9EE7D5F3C5 +:10B11000F2AADFF4EFA4BCD27B24212F6ED889766B +:10B120006F340F8F05D698F2F058DECECBE7E1CD25 +:10B130005CC3F3F0A6F6DAA0FFFF5894B3D30BFB81 +:10B14000551E3D6750B2339200BE7A792FD25F4EC2 +:10B150007FBEA0973F16FB30105FF8B9E0DF3A5F83 +:10B1600038585A63E20B870EBFB7DA78CF08D3DEC0 +:10B17000D94E7C41ACEFE8E1B5AB857CDA4778236A +:10B18000F8C23E31AFCBF0853770DFE2EFF7D1CBBD +:10B19000B7637CE1EDA1F08593A5E638F3407CE14F +:10B1A00064B45FF524D1D1007CE1E932335F58CB40 +:10B1B000A27FC417A274FDA346E20B755BF97D451F +:10B1C000F17CE15731BEF02B235FD0ED949EB15A54 +:10B1D00011DD276AD1ECC6EFA27C618B8E67A9AB2B +:10B1E000D12ED0E39EF7969EDE2EF4E8DF133F9E2D +:10B1F000C6E13E98DE02ED2F517B3F87E75FAA074D +:10B20000F5D32B23E6F8AA1EEFEB1F3FEB2BA3F39E +:10B21000993ECB90E267EDBE348A13BAFE3F899B1C +:10B22000D9C53DD6F1F1A1F83829E8E73795E5F41D +:10B23000D7DB1926A8E9F630EECBFF70FFCF63A865 +:10B240009F8E1CD80F04EBACA4757ACC76C8A733BC +:10B2500043B7E3F368DE458685F22E1C19962494E5 +:10B2600025438D3743FF2BCBD0FE196786E3C63CC1 +:10B27000B5A68CF45199E8C279D8BE5DD0511D3E77 +:10B28000D7EF898A8FFBFF7C2ECF57D3FD9DFDFD25 +:10B29000A84CA7BB08FE5F9D5ED796D51EC438BFDD +:10B2A000EFF2F7BCC5FB4F4FCF15E38BEFE2FDE5A7 +:10B2B0008F8976BA1EC60EAB8A91DF2C2E2C68C4FD +:10B2C000F5C3B235FC7D2903BFD34CFC4AE777E2D6 +:10B2D000FC147BCBDC4F435C7CA101C7E57AF846CC +:10B2E000EC3FE95FCCF06D0A843A917FC8D5DA7CF7 +:10B2F000F4AB61DCA411CBB04C5788BF57971496C0 +:10B300000CFE3ADDAEEA2C6391A08276D564B203DE +:10B310003B7B7AB73B7306B78BCAD3EAABF0BCD1A1 +:10B32000FB87A0FDA88476D69632C3BE0DD6DF403B +:10B33000F9217B85FC882FCF947A4CF79F312D6AB9 +:10B34000A7ED2ACBE92F57757D90AD33CB953D65A1 +:10B350005139B607BFDB57CAE927FEBEB09ECC3EC7 +:10B3600019E9E238D078179E4569EAF01BCF51BE43 +:10B3700021F4B8EE32A6CBDB678C78FD8C78AEE793 +:10B3800075C078F7A2FCD0F50E3D7F1FE3D2C67ED4 +:10B390003F17F1D33F352EFD69546FFC9F1A976E0E +:10B3A000A4B8B47EAEB055C4A5ABB234BACFA66AC9 +:10B3B00080B8B4410FEE2B4BA007835EFB59994137 +:10B3C000AF7D5CC07773AA9EB718A6BCC59D5B57BE +:10B3D000D2FD586B14CEE7DA14FE7B03989F5636E5 +:10B3E0009DF83BD1A96399E6349EEB7F1DE641F7BA +:10B3F0006BC84BE91C5DDB44292C1BEEC7793D353E +:10B4000044BF5365DF2AD17EACCD92C218DA29DC65 +:10B4100021897816CF83BBD617B6623EC21AD5D91A +:10B42000371BF31FD6F50678FEF2775E413FD8C78B +:10B43000932576A582796D210DF3D8CEE3EF1951CE +:10B44000DEC7E8A2FB8C7915017E9F8A13FE83F28A +:10B45000B1749AF97E95B983E429AE7BF7C80D07DC +:10B460000CFB76D57C735EAE9ED7A6AF7705D3EF87 +:10B4700035EE16F71AF37CB67F6BE8BDE100ECCF32 +:10B48000B8F99C9E5A9684C6CD37E891B1FB4DC25F +:10B49000C7110EED5EE641BCB5471E3C88F745ACD2 +:10B4A000794B6649C4CDFAF65F82F78BC3FC9CC327 +:10B4B0009AF02394C7B216F358004E6BAD3C9FDC54 +:10B4C000157650DCFDB0D88F9D3EB61EF3B99C3B7F +:10B4D00064CAF32C54EA3B302E940CFD629E50B2A9 +:10B4E000BF3182798B800E7DE8FF762CD62253A166 +:10B4F000DE06F0C7FC13D4AB8C7931F3150BDDA35A +:10B50000A3C365B03C19FDDE9CD6517A9E63886169 +:10B51000FED81A919FC234F54D94EB313AECB6E265 +:10B520003E3A45DE3BF371FFBDBE8F4C7E4843B8CB +:10B53000FC0EE68772DDC90C7E7784CBB46A8A077D +:10B540009485DCF52ABC2FF3DB12C66906DAE7DB4B +:10B55000E2F679A795F9313ED6FE964CE7C2DAB706 +:10B56000EEA67DD1B65A78BE0C0B913F3884F71702 +:10B57000A37F3122D1EFCADD2EE8A47D6177733538 +:10B580003C57BE768D1FF97C7BF6F336ACB7678CE3 +:10B5900060E8EF6616752F9EBB5FF63D59E27C852D +:10B5A000F1FB04D70D0FF3DF4D0AF37C2260D6D8F0 +:10B5B000BF8E4F0B04DDD43549741E7425F3DB9127 +:10B5C0004FD5B02095AB593D9512F3515EE3927A79 +:10B5D000FEFB06ED22EFF4D4560BE5D1AA37DB864D +:10B5E0007FE4E4AEA2447A805E6264EB2303DF3A38 +:10B5F0005426F40167C88B7C677161A8617E8E5107 +:10B600004F57E95EF3E879486D5A2DDAADBA9D37A8 +:10B61000E2ED69DBF8EFE2FDEFD223D3D13F9E33B9 +:10B62000B01E09F2ED0748DF495FE57A882CF44047 +:10B6300078B206F59A3D8D3CCE32FE5027C529E4FE +:10B64000C9AC88FCD87324FE7B73EE836765B37E38 +:10B65000340EF37474BFC1E48599DC2F72B12915DF +:10B66000CD949E1F5553DC77B9CFD289F45DE57E2A +:10B67000D486706A9E113C8F7C74718FB8576B8032 +:10B68000F39E3A3C968AC19245FCD729E2BF4B2BE8 +:10B69000EA4AD14E888FFBB20EBE6FF1713D2BF39B +:10B6A000765ECA88ED837E6F97E1FB84BFAFC8EA00 +:10B6B000399D67410F1837740B79565563A65F178C +:10B6C000DA2D375CE6FE0CC10FF438ACEE57B9F951 +:10B6D000C8533BD0CF60B5E8F8584F71ACA89F85F0 +:10B6E000FDCDD3E86721F966B0570D7E15D589F7F2 +:10B6F000889C6351BFBC731CEA53DAC60C8CB3BE82 +:10B70000FDB5A74B92B01EA2DFE3E87CA3E769E793 +:10B7100098981FE6E81BBD77887CDCA348276C045B +:10B72000D77F8ECE67513F043D57B81EF476ECF9B3 +:10B73000797A2EF277CF792D2589FC098F2EE0FAC0 +:10B74000502E6CF624D0CFFAE69BE38C0F8838A2FB +:10B750001E27B48B38A17DB4467EC1F8FEFE20E4DE +:10B76000D55D79EA05C467D0F7FF40F310BF77A332 +:10B77000B8F9FDC018074479E4E9DCBF1FE5C6E766 +:10B78000C09771FD84734857E3F8BD1176E7F7540D +:10B79000CC93744AEC149ECBCB7F6A1343BE96FCC9 +:10B7A00092953980EE827D16D3F985BC80CB5437D3 +:10B7B000D031C999F87CCD783A4FC68405E87FF13D +:10B7C000567E3FD39A873C45183FAABAC0E87E26EA +:10B7D0003D2F53D767F0263AE4030E2177DCAC5EA9 +:10B7E000453965073942722860CED3748CAB23BECD +:10B7F000E099E9F0E07A1CE3CCF8188FB71AF02D45 +:10B8000094232EEC2F419EAA2789E761B4823CA79E +:10B81000BCCF187DF0F5C6C9C9C6CA25743EE4E39D +:10B820006CBB383F2699E091A6761F40B982F7D7C6 +:10B8300084FDFDE1E3C21BF650AF15F255157E0401 +:10B8400097B252BB4FAC8BE2E971F2355DACE37657 +:10B85000F17B8FFDFC0A71EB0AAA4764D46F0A16CC +:10B8600008B9EA633EC4C7EB6C1DCB113FDA406EEA +:10B870006A586EDD4AE715B5EF59E9BE2C4C18B48D +:10B880001AF4F37D952F06705E9FD7A7FA1D242723 +:10B89000C35EC49FEBA43112E6A9B74D6CB91A7F01 +:10B8A000C2A96DDB950A86B2836A7E23AE1FF408B7 +:10B8B00049F68B4E50AFA9E072558FC39E6F0C3185 +:10B8C000D48F342985F1FBCAD42A6CB70CF428C470 +:10B8D000EB05DE7AFE3B9AC0AB09CE683B5F81F197 +:10B8E0004846419A5B03BBADA8877A32AD2C7546BA +:10B8F0002C6E9B6A39E547F896B15394B7B58079B9 +:10B900006C582E627EBABFA412181EDD13C23AA86C +:10B910005CC2BAA95CCA4ED9B8BDA1109C5764716B +:10B920007D6FFD820CA2C7522723FEDEE6EB4DA100 +:10B930007B4207891F35493C3EA4012FC27BD4A31B +:10B94000F1E8A92C24033F547FCF24A3FC97C2B76E +:10B95000F1F8D2424059FC9D83055CDEB0C7FCADD6 +:10B960008EB1424E437FD5A3F97D6E3ABFF853CFD7 +:10B9700069CE3CA770FE00F4897AC84CF46F62FE71 +:10B980009497A9C67B2DBFBC80C7E7BF2CF85BB9D5 +:10B990003548F70CE205728D37619ECC22AA97DFFD +:10B9A0000FB21AF3EC3F9B46F7A7BD5F45B215BE39 +:10B9B00053E8BB77BFD83712C5DDEDEEC6668FD230 +:10B9C000DF9ED6C77B5C8CF3E482687CEFC90506FA +:10B9D0007BF557F3CDF635BC7F6A01D6F798FDC7E6 +:10B9E000F1FCF40DD15FDEE4FD9497C1465908CF18 +:10B9F000E3DBBD2AC65F54C27F4FE3981DF006D635 +:10BA0000F5FC82F7EE40F915644A732AF28FA6B767 +:10BA1000EFA89AC8ED691ADF297E5FE05CE2FCB30B +:10BA20001F2FB0EBEBF931B577F3F9FE7A3E874F74 +:10BA30002E0CABA4C5E23420E0F53CBA3DD83EC89C +:10BA4000421AFA45F47117E2C5C824173F20B9B964 +:10BA50000765BE1EAF063A389222DE6BA7EFC07BA9 +:10BA60002FE2BF8779BC44F310E3BCB480D1FC5E05 +:10BA70005820F44A2B5F8FEEFFD0EF27D3F74B5DB2 +:10BA8000C8E1145F6ED7BF17FBA3FBE9E3E1D1B9AF +:10BA900020EAFFEFA47988F3339D621EF0FC38EDB5 +:10BAA0007BDCEF360C9CBFC2D7BFF9D0F15ABCD7B4 +:10BAB0007E20BFCDBF8BFD8D2F63F7DEEB708D6CCD +:10BAC000339ECF39B62052ABF1FBF23F5960D40719 +:10BAD000441ECEFB0BFEB956E817BFA1F5FC17FFBD +:10BAE0008EC3F9053FAB15F1DAB346FA388BF0E3B4 +:10BAF00070C59FA48BDE33FF9F7F838C4F00800037 +:10BB0000000000001F8B080000000000000BE57C17 +:10BB10000D7C15D5B5EF9A3373CE997C4F20C24179 +:10BB2000A34E4290D89EE0218498069009090A49C4 +:10BB300090934F4284F68068134A5F8F1F3CB96A26 +:10BB40009B81F01113B0B1626BAD6D0F5CB470D519 +:10BB5000DBA0D6DA96DEDFE1A3D69F4089F5A3DC31 +:10BB600056EF8D4A2DB6BEDF8B556FE97BDECB5B82 +:10BB70006BED9973664E4E82F6B6BF777FEF851FE9 +:10BB80000C7B66CFDE7BADBDF65AFFF53139590C23 +:10BB9000001703FC8FE5871E310B018C4561253CA6 +:10BBA00017EFAD1A0C85CB0094ACF764A300DB3221 +:10BBB000988FCC06689CF3EF9744B201CED3CF4266 +:10BBC00080DEB00700FB9F2C36BF180E62BFAE515F +:10BBD000192A0032A66BD03F3BD92F8FFA5D44E380 +:10BBE0001B79347E66292811EAAF03782A01D683AF +:10BBF000F8F1ED978C18DD8F0E869ACB92EF4F0DF2 +:10BC00004BF6FB53E9FD65D3213A44FD9EC57E39D1 +:10BC1000C97E85D46F2EF72B0C63FF577D625DF3D1 +:10BC20000154B91CE0D4FCA393D7E2FAA75BEBB6AE +:10BC3000DF3B35AA301FC09CBCDF28015838FBAD64 +:10BC40003A4D03F854B878BF8A43CA2BF7F67AB056 +:10BC5000ED530267690AE4D374E6D310F22987C66C +:10BC6000036B7DE120DF0F0BFEC92B3D61A2C79E58 +:10BC7000C7BE96877D76FF72EEDF2AC6A92E052302 +:10BC80005DFFAAB062D115AEE2FE1DA2FFC9E23887 +:10BC9000F3FB743184F622BF177A63A6A780AE52F5 +:10BCA000C8C46E0FB45FDC5487EDACB2E27219DB2E +:10BCB000CB2DFED8E37EA33AF2CD065C07FE37EE2D +:10BCC00041FE6405E35EDADF6F3600F7DBFA63E816 +:10BCD000223E9F005842D7DDF9E66AE2E71DD67E94 +:10BCE000A65E014627D3BAAE57660FCE407E85C208 +:10BCF00017EDCF2E62BAF01F80CA7061E96624E5A5 +:10BD0000815C80619C0714538520CD13F19848878E +:10BD100039CB137B04FBF705FF584B74BD4F7B3CBD +:10BD20007B2C3FECEB8E1EE4C94C80177A5430FC20 +:10BD3000C9FB37858B5D74AA8BD7A980F3357887CB +:10BD40000A34BCAA851E304A85CC9D87B1E336945F +:10BD500066B99EF7066EF500F2F19DFD72CC8F2C50 +:10BD6000DC5E38786F35B6B7BF28C31694E17B7AAE +:10BD700062BF39E3C5760E740CE1F847A7F9E20B10 +:10BD800071FDEABE358FFA8B687D481BAEF3CEB0ED +:10BD9000CC7C52F71D041DF9A4963C1BA7FDF2C5EF +:10BDA000A4A10C3A3EA57BC0409A3303313E1FDF6D +:10BDB0006CD0B87F43291E4035B91E94837A968390 +:10BDC000A7859CD55BF2071FDD189070DEEEFD9213 +:10BDD000D68FF3D6EEDF0C23C1F1E7BB3DACF37B8E +:10BDE0005D419C379BE61D5268FF15BFC4E7CB3E03 +:10BDF000D7365F765BE7464B9CB3B0C6EB5827E47B +:10BE0000514B9E835D74FE2062EB919AA816C2F797 +:10BE100087952E751A8D2BF44E5F58ED22BD038148 +:10BE20000850BF8335068F678FF3355A1FB6955A72 +:10BE3000B11E280493F6C117D0F7F4E312BEB8D0B0 +:10BE4000F826F53F5813BEB581D61112E3DC6AC956 +:10BE50002FEA170D50BFF8887138A74F9DBFAD1D51 +:10BE6000DF576BD4517F15DD57CC11C157E5BCC4EA +:10BE7000575D72F4EFCD5E6BCE457E66E2FDC92163 +:10BE80005AA7E81F8091CDE79115387AC43705CFBE +:10BE90000DF5C7F6B18EA78C23D8FFD8BB39BAA44D +:10BEA000D17DEC8F7284AF1C3E8FFB21DF12075ACD +:10BEB000FF40006226CD67763C5782F33583D085FC +:10BEC00092D59FF71945A5B9B50BE238DE7391EC11 +:10BED00028E07AB33A6E346EC2B656EDD7F2A8BDFA +:10BEE000C47B66C421A7998DEE76AD8A6D87DC2C64 +:10BEF000EA900D9A7F5155764C27F980D0563A0F2B +:10BF0000C7E87C6773B79D4A25AF97D75397BFCDD6 +:10BF10009C5B40CFB55119E9F7E98A6BBC350D62DE +:10BF20007F1617ACD99A4FE366E7CF96757A6A14F5 +:10BF30003495F118053025C9CFD72F8D98444F5F20 +:10BF40009112DDABB9F8EF23FEA4F21FAD04CFAF21 +:10BF500078407F484BC37F086D6BC7F17C863ADA27 +:10BF6000AF8975C995C9FD006508EEA4E7A0E90F82 +:10BF700085C6F23B2BA02FDE86E3072E9169D0C445 +:10BF80007E26E4457F0636E3F3BB4E6580A78AE450 +:10BF9000E149DEDF4CDC5F99F637E0D82F6B4CC50A +:10BFA0005EBFECA20FC4FE1B3B899E014DD6CC3474 +:10BFB000FB0D0ACA078E9F7B09C4FA8BC6EE07EEFB +:10BFC0003FC4F17D6D6D76F42FDBFF5E96E745A8EB +:10BFD000A8758DF63F62DC84E3D556F9B57828293B +:10BFE0000775F96D75B49FC754B19F63F75D13E78B +:10BFF0000B22BCEF7539F9B3FB75E7FB37A96BADC5 +:10C00000EB1ABC4E6A127AA34E82F050F6587D9B12 +:10C01000DF2CF4C9761A92ECC0D3107B046F9565BF +:10C020008E44898F57A96F1CA1ED1DD2E6D4E6E39B +:10C030003C3F5D1CB9B809F54379A066A088E44D82 +:10C04000192E6E42FD53768BC4EFAF2A8598CEE74A +:10C0500039169F82EDBA0D123C84FD72655D998A96 +:10C06000F78FDD3EF7D8146C17376517BCFD69EC08 +:10C07000560EE5CC7FFDF963B2BDFFF873F2922155 +:10C080006332D2D7852CF7E0382FF66C82B750CFC9 +:10C09000CBDECD3E6A670620044590C03161EB3DA2 +:10C0A000389A11A773B67E55562C03E7CB0CC6B34E +:10C0B000E750FF981C92B0EF7A6404E9BF07C33FD2 +:10C0C000BA89EC1EEACB53D7233D1993A36544EFFD +:10C0D000A9EBC1D6AF954D78CD784BDCFFEEFC488F +:10C0E0007513DB59085E8AEBFC9C35DD3A29360373 +:10C0F000A6D3FF4CD69B076B222F5EEFD49B05F88F +:10C10000A022A9375F4C8E7F72398D67D99193CB6E +:10C11000C5FD9F2E36EA689E7B3DC2FE27E893C48C +:10C12000FF65EF1A6332EB457D128DBBA641B2F479 +:10C13000ADE09F2DAF9981E1F9646F32F74BBC1DE3 +:10C14000EBF52188E278EB6A23CD445756D004B250 +:10C150007327424FF175D028CF8BA4910FFBEA8B48 +:10C16000B5803179FCE7DB69BD69DE3FD924F06336 +:10C170002465BF2F345F16CD3767FCE703367FE4B5 +:10C180006C83F8F07A5970AF5C947CBEA9C98DB706 +:10C19000B2E2ED3CDEEABE56A6E3D6A69C82B7B379 +:10C1A0009CEB7992E5F7FD0844E509708F3D4E5B05 +:10C1B0005DF84EE223A8864EF6F7FC35C65DB46FF7 +:10C1C0007F5763DCDD24F09BC0B524182AD961C9F0 +:10C1D0006A1FDEDF154CDAE1634D93BAC90E233FC7 +:10C1E000988EF761E2F9E5BE765EFFD5A711473973 +:10C1F000F4C26746325DB869DED949AEF682D18BAA +:10C200005DFD179E2B763DAF814FBB9ED7AA735C19 +:10C21000EDC5DA3C57FFEB02B5AEF652BDC1D5BF56 +:10C22000ECDC3A5EE755CFAE77F59B1DBFD5D5DE8A +:10C2300063441E25BECD79FE4ED7FB7387B7B8FA8F +:10C240001D69AFCE1B4179D92A21CE43FE6583E615 +:10C25000233BE7C92ABC8CF49C7FD3252FD639E435 +:10C26000F3605331CB9D5F8982C6CF2FE3E7B0D512 +:10C27000FB6E424FD31E40A1C67200C20EFC80E48A +:10C28000D42117FFB7F45256DD0732F5278C9E37BD +:10C290008DFC891F6BE9CE0BFA115B9A9C726EF9CB +:10C2A000115B9A80E947393DC57A4B49C8E930F5B9 +:10C2B000BF2BE53CDE65F57FFD52D659803630B6A2 +:10C2C00057D0E1C211840BC80EAA7A41B43F94162C +:10C2D0004780E4EC0F11B67BE3E28854BB5F5AC998 +:10C2E000B8E2AE5A7594EC3EFD387105E200B8B381 +:10C2F00020890B11F701E9B96348B4443803710789 +:10C30000E1865CC40DB4BEAC92437748B99F1C2F44 +:10C31000644348F313DE0D7AA0FF63E0451F041762 +:10C320006FAB107886F16DEB334CF72F10EF4A7F2F +:10C33000115E985E477ED3DF1A27B62B105726A1D1 +:10C34000BD59684C6EC6FDBFA8F9BF86FC27FDD459 +:10C35000582EF121D54FFD3DF9A9057FB99F5ADD32 +:10C360002CF4C35FCB4F9D895E22D971DB1FED0D8D +:10C37000EC55495F6D2F8CA9C515497F35D54F5DAB +:10C380005F1A7994FCDAF5A543704559D25FBDB8C0 +:10C390004DF8ABEBC96FAC70FAA9F7F9C84FEDB621 +:10C3A000FCD42D4D020FA6F1539FA8A7735F22F076 +:10C3B000C513F520704276EC322FF9CF9B73A01F86 +:10C3C000C73DB754E7797EEF350383B8AE5345D701 +:10C3D0004A6BF17EF6031EF087C68F437CBE59C4BC +:10C3E0001D52AF91461B9F8A7804AEE373CDD4AE45 +:10C3F000B3700E0260F63F9BDB1E35E7335EBA89F1 +:10C40000E46E3CBCF4D9DB258E5FAC6E6EBDD92CDE +:10C41000E1F16E6876E0A61B9A61C278C95DCD0233 +:10C42000FFA65EEDF5C9ABC1B2CB3D076AB07F8B0D +:10C4300047B49F3EB1E48019E4F9EE6876C49B16D8 +:10C44000CE9E33EC45BEFC47F3DC0381FCB4FDA378 +:10C45000CEF545ADF5E17D93EF3F2BEEBFEA8324AA +:10C460003EA872C6C1AABBBB4A2E3CCF59C97EBFEB +:10C47000EDD1389D932562DCF1CE81B1C8F86AB365 +:10C4800088DFF17B5F696EBFD9C4F75AC13C5D405C +:10C4900076C6CC844790EFADDAD0E9820A6A5FA90C +:10C4A000531B91C9BFD0731F14423FF5830850DC62 +:10C4B000EF5BCD02D7B5EA60B05E52F03ECEDFBF93 +:10C4C0004C9A047988CF12EB6B3F40F2DAE70DCD3E +:10C4D00020FDFCFDE6CF76AB0B00DEF1820B1FB139 +:10C4E0007EA9A67F86BABB70BCFE94E76D89E74F34 +:10C4F0001CA0E767A5E10DA869E0C696CE9B151CB8 +:10C500006F7791E8FFA3E6CE47AD78EA779A1DF200 +:10C51000FF1D6B1F9ACFC664B439F05473F81D35F4 +:10C52000DFD2E73C4FB89BF91814FB3C011F633482 +:10C530006E8C5EA4F11B457FBCBFB111C7DFD8E88C +:10C540009EE74833C4EB42CE79D61CA0784FCB246B +:10C55000E4473E99BC70F7D6CBF07669FAFD7BDAFA +:10C560009A07E97995E32C163DAF3624EE1F673A1A +:10C57000A3621D76FCEFD9869F3F922D25E37F0FA6 +:10C580001C3F7D13C5FF58F3A33E6F00C74F25DB4B +:10C590005300CB7EEBB61FC17ECDD0B1A3B8EFF771 +:10C5A000366746C9CF7FDF38A2901DCE829842768B +:10C5B000B321E485371D7A30AB14DB0E3DA4962AF7 +:10C5C000AEE7C409C36137013A93B80FDB79F2E6ED +:10C5D000CB42C89F8E4DF2D7CF205E3B7BF89B3E6F +:10C5E0001DE9EDD8B799714DC7261FDFB7F9D38F75 +:10C5F000FAF24D9495076CBD931D09107F16FACC85 +:10C600009B382EBEC91DA77EAF3911CF7E8FCEC3FA +:10C61000C2469DDF5B080A18939271763013FBFACD +:10C620006FC4DF657EB17FE1C62B6F3619BF8FDA2D +:10C63000F15FA0F82F6C1D0C3539E6696C14FAF027 +:10C64000436BFF7C15F7FD8B386719BA740DAA434D +:10C650008832FF7C845938AE26C54CE4FF3B9225D6 +:10C66000E7E6363E37BEEC8ADF925D9FD7B2E380C5 +:10C670003A3729F71D2F55BBE4BEF5A56A5BEEBD21 +:10C680002D0EB9F7B608796C2916F2B6A465E70144 +:10C6900015315E8BCF3E4FF71D30500FB7649A9720 +:10C6A000911DAD6CD97D40F90CD297D04F8F75D3C9 +:10C6B000737B9EC52DDF3A40F3342F590314EFAC42 +:10C6C0000BA00E2D4ACAFB4D2D29F26E3E69C9BB47 +:10C6D000984F7BE9497E3FB5DD1A16E35D4BE34990 +:10C6E000A487ECF58141C2887A86DB0B5AEEE9EE2D +:10C6F000C3F1DA5A45FFEBACF9DB00D7AFD1FA1F33 +:10C70000ECFE38EBA7F87F0BC94B85D8E7B3965FF3 +:10C7100031E6BCB7087B21E76C653F590D80114BB2 +:10C7200083C337360AB9FAD9321137862A5B7EC2FB +:10C7300093783F42623F2659FB71D2CA8FEC2E128A +:10C7400076CA1EA7BD458C53D9E249D52F95B4DED4 +:10C750004AEBFDB1FC4FE8CB784255F23F7DDDCF8F +:10C76000073F965ED3689D5A0BB8E9B0E6BFB6C5E1 +:10C770003A5F961D4F3CB7DA48E72AA633C1CF0B84 +:10C78000EAE77DCD0EBEECB3F4F38F9BDDE32EB76D +:10C79000E7B5F4E3A0B1F663F9C97F6B7FD767F91A +:10C7A000E1E3F9A39BADFD4B5DD758FF7395467E42 +:10C7B000980486E73C3B39A6ADD77F5A3F37C99FDF +:10C7C0009FD6837DFF1EA7DCF659F3A7CAD36BF56E +:10C7D000428E62963CBD563F469E5EA3F15FB370AB +:10C7E000E13219A26CC7870DDD99FF5B59BBE8EBFD +:10C7F0002D22EEB54E72F81D27A74309E9ADCC20D6 +:10C80000C43C457CE57301A7F17D879CF558EB5846 +:10C81000596BF4D07C3DD67C832DEE7D0E2F34FEFB +:10C820009EE6D9DC9EC9FAF0F7D380F33D574097D6 +:10C8300049FE5E7F955F23FB939ABFEA2B6DEE2640 +:10C8400079F8709F5F07F6D3E0972568BF9681FD62 +:10C85000335C47EFD70764F607A142F85D06FE2177 +:10C86000FED71BEB38CE6FC775EBC1E13F215D37BB +:10C8700044DD7E998F9E97269F1FD887F3933FB400 +:10C88000DFAFCB56BE29EE67B595BB0CF9D564F189 +:10C89000AB69FFF71E9C84FD9E0335CAF1EE3AEFAB +:10C8A0009B34AE8A7F681D2FE44687BD847B750F5D +:10C8B0006C2E62BC1FA27575BF2C8796907CEE1300 +:10C8C000F1D5AC5289F9727930A6145BF1F7EBC857 +:10C8D000CFDD34CCFEE2E6F6F5713FDE3F3B5B8216 +:10C8E000A9BC4A919769AC10F325E888FDEE35C8DC +:10C8F000657ADF74D2EB839DEFC9B398CE379D7410 +:10C900006E7AEDC559C71CF2FFEB1677FCEC5F7B26 +:10C910009E85B766605B5EC571BDCF81850B618802 +:10C9200071E103ED3F56D7E27EFDA96778D631B4B9 +:10C93000D7672CB9DCDE1939D3E238275941CD4706 +:10C940007A76E147791EF603F6CB1C8FEFDBDF9298 +:10C9500047FBDD9F634288F470FCEF06C98FE92A2C +:10C96000F540063EEF0A0CFAC8CE9CB0F8DFADC029 +:10C9700016E267564C8E6DC6A90E04A35A35F95BB4 +:10C980002FCBE0D1293F27F889FA3C46794235245C +:10C99000A9D46E0C8AF8B53AFF079C2F015D61B9E6 +:10C9A000F0556C8E93BFBA0CF96DA01C5E8FFB1412 +:10C9B00077E21E48C4033CE745AC56579C710D70A6 +:10C9C000C717C0347E49F1041B873D401D29CF594C +:10C9D00004B12DF87EC3BE1D6631C90BCEC7F2125D +:10C9E00014726BCB0B9E9310C5617EFF8A1C42C9EB +:10C9F0004FECB39A22BFBEFDB8CFB89FCB42A9720D +:10CA00009CD8E73313EDF3D456F73E1F5080E57200 +:10CA100000E592F22803FB9E7E9ED669EEF38466C3 +:10CA2000F05B6607D111014F88FD85B8C471961B74 +:10CA3000AC7330D034E425FF52BFEDB210D9A781DA +:10CA4000B267BC6B282F5354005964F33DC6E1B55F +:10CA5000D85EFDB02CD97925CEDB6DCA8F711C064E +:10CA60004C1FEDEBE7D079A1F16D795A1E93B85FB9 +:10CA7000F75689F7732D847C845FD74198AF37438D +:10CA800094AF1204D9BFEC8C4AA17E5EBF786F646C +:10CA90009F670F9D5F639E37FF6D95434290CEAEBB +:10CAA00024F438E2C5B71D38B666F60747CF173805 +:10CAB000E42910F10C57905E90631E9CE2817F90F8 +:10CAC000552BAF1E633D05431C47EB40F9623A55B9 +:10CAD000B7BC209D8BA97E60252A30D25BC314C7CA +:10CAE00060BD627A89FEEEF95EE8D7C6CA5D1A3982 +:10CAF0007BB5C481F757467E58E78C53D972E5C1A0 +:10CB00003F24575D9141EFD789BF861AD54364D73B +:10CB1000E261C6A7BA8883AD8CB8E5A87B9DC863DF +:10CB200045503F1BD83F72B73BAE75F9475F62FD7A +:10CB30009A19C9B6E3852E79EB2B0DB33DF7A1DF2A +:10CB4000E4C9277DD6CBF11208292C4FEF3441A63A +:10CB50007615F98B4381FBF0DCAF6F1578EC54D977 +:10CB6000B5879D718A0D29727A6EA9655F54F407A5 +:10CB700072385FFDA556CECF846F6965DC21CECBC0 +:10CB80008356BF5717998130EA8FFFDDE0C6390B16 +:10CB9000463D2938223305474C76B56BD54B52704C +:10CBA000C474D773FFA50AEB356D8F1C2379BB2E98 +:10CBB000E0C621FE3D7206C7FDAE035ED7C22B065E +:10CBC0002F237BFECE0C1137CAAA53CCA9B9221E43 +:10CBD000BC260D5EFD46F59A7B5B5DFA34EEA57EC4 +:10CBE0008B20A290FC5F0726FB1D4B91C10545647D +:10CBF0007723BB5B293F58D7B4B500CF43C35565F6 +:10CC000085A4BFAF5C18FE7A2BC7494C20FE911E4D +:10CC1000A7EB2BF3220FD1F8B40EFF2C1A3F06D44A +:10CC2000FF5E8A4F507CAE5AE5F81C9E2817DE6CDA +:10CC3000AFB7F254F05FDDFFDC7319D917DBFFFCEF +:10CC4000FDE16EAEDFE8089813FA9F558B8C9F10BC +:10CC50005F96CD330E11DFF485E17F62FE65DBFC6C +:10CC60004B8FF376489051427C3B29871EC1BBED28 +:10CC70007E515F658FFFF35681DB5E6B15F6F21315 +:10CC8000E4C5CC7479317B9C847CA4E4C55EA1733B +:10CC9000E4CAD37DB2BC98DDF6C59B265CA7CFC2A3 +:10CCA0009B47DBEB3D31D2EF81E2BDA43707021E8B +:10CCB000AE93F8E0357D2FC943ED75B6DC087922D7 +:10CCC000FD787739C0D5E782603AC67FC6D28FCF6C +:10CCD0005A71DE1FF7681CF73DD413E0F63FF5E804 +:10CCE0007C8DF794F2FD233D216E1FEBA9E2F673D4 +:10CCF0003D06B79FEF59E28A13D75EA7F3FCBE78D3 +:10CD00002BD3E38B89AB41E7C1C235E9F232886BA3 +:10CD1000CEB7BAF23202D7BCBFAF7679B54ED603E2 +:10CD2000DDB3F2B1EF2983ADAE3C2BD1655A7499D6 +:10CD3000165DA6459769D1655A7499165DA6459703 +:10CD400069D1655A74D1D5D62BA9F545F6B5BB5E28 +:10CD5000E8D795B5916EC2EBB9976C2AE37A8EFD50 +:10CD6000227FD46DF9216FD65B7AD2F227ECFAA735 +:10CD70004C1D34B213B57ACC47F54F14D7A6F84DF5 +:10CD80006A1C7B69B36ED53FDDC7B8ADDBAA7F4AAD +:10CD90008C6BE95FFB9C1CDD58B493DE4733344A4F +:10CDA000B841211B8A7EFEC0139BFB28FF0332E2A1 +:10CDB00024F42F0772FC1D5CC7A855F0F3D5D70CDF +:10CDC000059AD3EC0F22289E67C02BF4AADDFFA89A +:10CDD000777831CD3350A4976F457BF4874B87BD6F +:10CDE00024FF4717E89E2D28FFAB83FFF6597D5699 +:10CDF000F2FDA3D6FB6D57840A9B1CFCBCB64DF01C +:10CE0000F1E80CE19FF5E9CD5ECEAB053549CE27C3 +:10CE1000B9F9078DFC44BB5F527F47AE6D73B433E5 +:10CE20004B453E0F3D3996B7CCD64C9370DBD905B8 +:10CE3000918636E44BA62ABF417A38B334C4F980D0 +:10CE400057E609BE8286934DA379F7AA5CEF69B5D0 +:10CE5000C7C73382CF8BE5BBBF3B82F49E443341CF +:10CE6000F9AF5C0F7A5B648F3FE501A1D75B591F77 +:10CE7000F8D15E539DA90ED1EF8D60BF174CF4CF52 +:10CE800008CF04DE9F49FA9107443DDE6EA9F83FC2 +:10CE9000657C967196F4DF419390CFDFC8CA2D551B +:10CEA000B0BD093243E4CFDC2147CB48DFFFC933B3 +:10CEB000A8D3F5DB6D45BC9E5F8594FB080EF59706 +:10CEC000FE7D1FE182C14285BC38385DE75992AED4 +:10CED0005EF3BFB565F37BEF561B7B883F7BDA843F +:10CEE000BC3AEA29745FA555EFE2E155FE8AF0D11C +:10CEF0001BD63AF758FB717DE05BBF213A2619DA61 +:10CF0000B554A7B40AFDC718CE3C19461A89FE1BB2 +:10CF1000423241DB71F9D918F8CE6FCECCA1111392 +:10CF200078CC73FEEA243E33ACBAB47967DD79C9B4 +:10CF300005A3EEF6C273EE760D78CD94BCA1ABBD21 +:10CF40005873B7AF0BB8DB4B75771BB60A3CA75AC3 +:10CF5000FE3038F1992CAE8A23FF37C61F6E7D9BB9 +:10CF6000FDC8545C67F37DBC7D2A9EB76C4F9B83E4 +:10CF7000CFF74AD1E11AB283D33CA14750847F5105 +:10CF8000353923E278EF076DC20E24EC45A987718D +:10CF9000F6406933FB85E3ED837A6E1EC41DFA54B7 +:10CFA00055EC7CC59C397390AE3E5AB0EC9C47EC76 +:10CFB000BF7AEE1A7E6FD19EDBF9E834BE2CF37C8B +:10CFC000B65F7F2DB02C25FCB6176E91D86F6B1C09 +:10CFD0008C6CBD95E37232E89CEFF643DCE1E767C9 +:10CFE000D13993C97F7B617106F63B9E837E3A8E71 +:10CFF00053AB897E365FD5E00FE335058EFC317289 +:10D0000038F19CFC0BF2DF72E9EABE6FFBDFE3F163 +:10D0100023D5BF7BA9CDC2CD57C3D5B4DF1FC2FC7A +:10D02000533590F4E7EDF76C7F9EF04E9D37E9772E +:10D03000BDD9966FD96751FF9CA5EBA17E98D02EE4 +:10D04000BED996C6DFDF784DE46DBABF3D509C4D2A +:10D05000E32C926094EAFC1E68CFF4D138A55EC13F +:10D06000E7812A95EB37137E670CFD049DC9793C57 +:10D07000B3325997F5DDF9915192AF3E6B7F3ABFCC +:10D08000E6E5F83ABE3189E2747DB9E659E0BAC402 +:10D090004F7FE144C0EAC7F1D2F3EB395F65B5FFDA +:10D0A00057DBF43F509EAC6F8AD945F9ABC3EDDF37 +:10D0B000F84201E9558AB5E2DFFA153F7CCCB4E2CB +:10D0C0001C64077FD2AE0B9CA67B4C7F6E121F2385 +:10D0D0007D523BDE7F413F72B206BB445A3FF53280 +:10D0E000F1F9F81387574D25FDDA8B9B7819B66750 +:10D0F000FB058E9E01B1194867CDB75FF672DDB0B2 +:10D100000EE5FED914771C8462E1178E907F66C20B +:10D110002070DCE89002C25F16759E7ECBAF74F87B +:10D1200083222EA15E282E01AF9638E256FE922968 +:10D13000893A4DF617EBC4F9B7FD4580A8B185E2F1 +:10D1400080E82F727C8D2A1528EE12107594FE123D +:10D1500025455F3C63505EF117124425E47BE6CE23 +:10D1600008FB871DE81F525CA5639D5BBF6445D12A +:10D17000BEA5D12F6717843FD53E97F82BECDE4C28 +:10D18000EFF02A9AF73878425427707CDFD327CA09 +:10D19000898F0F27E483E560E66F352B8EE0E1B8D9 +:10D1A000C4D5169DC79BA2B5B7617FC38A4B1C2F00 +:10D1B000F373FFE3EF68B12C71EE0FDF8AED7901B5 +:10D1C0002B2E81F092FC16C37A9FEC33C5A3E64365 +:10D1D0000EC72596D35A695F3E10F180B80F248A96 +:10D1E00017D871856B50BCC9CE0557087991A094AA +:10D1F000EBAB2B4780CFCFCC69B19DB4FEC38A3750 +:10D2000024D470C2FFAA6F4F235FFE9591C58C2F67 +:10D210005621CDF92C6FCBA95F9F2A5F4B7E457FAE +:10D22000697101F1290B6122BD77455BA4C51AE73D +:10D230000DA71FD78B6E95C83FFDE40B86427A5928 +:10D24000C8F9F75EF9F57A92731D8617135D277496 +:10D250005C27CEE39F7DDB20C9DFF10A99FDB70F84 +:10D260008347778590A4EB5B0FFE0C8F0974C6EEA5 +:10D27000F352DD684741FE36EC8EF64A76C5CD3670 +:10D280003C9EE5D27B37EF9EEC7AFED9DB2F713DD9 +:10D290006F0B4F77B5BB1EFEB4ABBD589BE37AFF57 +:10D2A000BAC03CD7F3A57AADABDDB2A4C1D53F5C23 +:10D2B000F89E324967FEDD41F255BF4F62FE2D9A5E +:10D2C0007B74EBC5BAC093849B0772860294A7B4A3 +:10D2D000F1A38D13078A22955BF293FAED9176D92B +:10D2E000853353F5E1FDEDC2BF6B2B1E8AA4C3E36A +:10D2F000093D1995CC99B384DFBF36ADDFBF7657B2 +:10D30000BBCBDF887BA95F5BD52DCF4DA17DE86AC4 +:10D3100062FC49B587843FEBD635911A806BEB6E82 +:10D32000211806CBE76F56220E3D9645383397718C +:10D33000E6837CCE2AC439B4CFDBF160CB8476E6B9 +:10D34000B7E8A7501CF675F453E8FA32FA2971F4DD +:10D35000477E877E4A9CFD9310B79F433F85AECFA3 +:10D36000A39F42F77F897E0A5D9F24E038F76F3FD5 +:10D37000CF6AA4E5E2728E27F826A3FCD6971E3466 +:10D380001EA13822E59734A6FF593E27858A754E9F +:10D3900004FD093EA59CC357D0FF277E515D95B77C +:10D3A000FCC2E709E5EC188DDF4F7601927661FB50 +:10D3B000C6175FBBB880FC9D6CB60B27A7F9845FCE +:10D3C00063E9B18C427D2FE9D79A6FEF667BE0036A +:10D3D000FD4D8A83FDCF768193C84E903E5A897663 +:10D3E000817088897A9AED881D8753EFE6B65AA333 +:10D3F00044FD81FFBC9D4085C8F56F8D769E658C90 +:10D400009DF86476A191EC42C14476E1A5C5E46F34 +:10D410006AC510A2FAC834F6217F85C33EE4AF0086 +:10D420003E672608BDECB7D7A16E60FEA9128C102E +:10D430001FFC9012C7B7F8C0A1578FEBB9E00344A7 +:10D4400098CF0AD95FC61322DEFA196BAB94C0607D +:10D45000AD33DE5AF3ED3A93D6DD6820DFC98E9CFA +:10D46000515CF1574EDFE2780D85627D8D7D51FE76 +:10D47000EE645E955FA37D54026EBE35EC8C329FE8 +:10D48000AA894F387FF5BBEEE7FE947C40FE0A3751 +:10D49000DE9BE98DAF267E9CB4ECE6C97D2F37CEAE +:10D4A000F90476F3645354BEC361374FCE1576F357 +:10D4B00064D26ED6DC36A1DD8CB8ED6640EC4FD67A +:10D4C0000722FF379EDD1C632FCB627DB48FB6BD74 +:10D4D000DCB4C28A2314C4B81E64B5C7C3E3AE9ECD +:10D4E000059C0FCA6AFDF54DECD70284FCD3F89C6D +:10D4F0005792BC1C519F8A931F42DF2951DD456D15 +:10D50000D018AE81E47947FB5BBD223DBE5BC0EF26 +:10D51000EB2505D4DFC6ADFD1B0FBACEF1F12BED27 +:10D5200073FCF23649E0E572F2A395FCD66ED23B6D +:10D5300059655794537DE621EB1CDB7A0ED777C8EB +:10D54000ADDF855C1F6A17724D01A50F90AF19D62C +:10D55000969DD878F0B473DE81D957ABF548CF1DCE +:10D560002B0E3C46B193543DB4FA9AE1428A7F9F18 +:10D57000CC0FA91482B9E3578F3DA65C39B6DF17EB +:10D58000EE8C719CBC7F5AC81AEF1F1F5332C6F62F +:10D59000EBD37FF933E2EFF2220851DCB01E86387C +:10D5A000FEDC08C37CFDF982C88DC4C7EB11375D72 +:10D5B00044F9B6D87B8D2B1C7C76D89FAE1569F4C8 +:10D5C000EFF205E1F52B382F2DE22217D2B3F853F5 +:10D5D00098E5F60F6EA3FDEAF41853A8CEB94FFFF5 +:10D5E000630E8D7BC17102429E5031719E0B3C9E39 +:10D5F00010D5516EAA8E7C85D763A0BA9D0222C534 +:10D6000083FB28059EFBB384EB7ED5037199FC95C3 +:10D610005C1FC7C753EDD8B2794B7B57B01FA5F934 +:10D6200088FE35A5CF9DA6F7D6A8D9CC87F1EB0605 +:10D63000C2D2798AD75AF19B92917F5649AF0F0097 +:10D64000F0775919C123DC7E1FD451AA8FF14E7D8A +:10D65000172269F0837A4E76C51D29443164D91B9F +:10D660008AD76B44109DE78FCECB445FA6C871C2AA +:10D67000F32B443C59AB10E7410347BCDD11CF67A6 +:10D68000B92CA238BF928CCF633BA3CABC85EAB346 +:10D69000A12471FF14D1379EBDFF6B5FFB287E3F35 +:10D6A0006382E73EB38BE4BD04CC80C6F1BB2B267E +:10D6B000F53BF6CFA67FA00D6098F8A50C715DC272 +:10D6C0004069F98471898CC189E3E3191E88A4FD3E +:10D6D0009EC69A2FB7CA34A6A3DC2DC17D263D5520 +:10D6E000718D2EBE6F0D7918A7A97A94F1DC1FAC4D +:10D6F00078F86FAD7838E124BADAF272C5F097396C +:10D70000DEF7A1A9703DB0B948C4F3CC2D7EADB70A +:10D7100080E2745FE1E79B1455F3B37F17BD5AD4E1 +:10D720003903E3296C5FC56DAFD941F8D50FABF371 +:10D730009C75706FAD10F836437BF437222EE8638A +:10D74000BC4DEEBC882FB9BFBFC8F069E6469C6FE0 +:10D75000579187FDF55D335EEBB891D67551A6B054 +:10D76000471AAAFD4A610F58B6B22360E23A77CD54 +:10D7700057D85ECAA0BC4DF6AE8F645912E24B7A00 +:10D78000C83B35730FD7115434F3FEE810E17AED3E +:10D79000BC69CD793001BEBCCFA2B317F94878F18E +:10D7A000FE2568977293CFBFB6641D8FA7D0F7751B +:10D7B00084AD97DECE76664745F15EB25F3B2AFECA +:10D7C000A8920A2EEE10FA7C7BE338F130EBB94ECA +:10D7D00075E4C8BFAFEA13C7B57AAD75D96D5933D3 +:10D7E0000D3AD7F7EBA34B68FEFBE74F9244BC23FF +:10D7F0001AE07A9E1562FC1D39221EAD6821AEC763 +:10D80000DF35B7B29278A96687E06D5CA7AA19F0F8 +:10D81000165EB755FABAA89E678737B494E9595689 +:10D82000EC311D723FD35AEF8EA2F47E4D5E87C756 +:10D83000A2F78FBC1E73BE0766A48997CA56BFBCE9 +:10D840009C7094D69377A90F28BEB3E3D2F610C983 +:10D85000EF0EFA1E05F571DECA738F6DCE2679FDC7 +:10D8600022BC4EF25AA8301EB97F89C2DF87FBE680 +:10D870007A62521ABD6ACBE900ED1F5E33D4689814 +:10D88000CE4DC6CB32F4EA14EF3E641C263E186A35 +:10D8900094E43BF5FDCC128FCB5FF44E7DDC247C11 +:10D8A00090619DBB5D10D3E87B81EC60A6AB9FFDD2 +:10D8B000FEC08A88D1E1887765968AEFEEEC7DF626 +:10D8C000174D2C7FA9EBBF47427946BFE29E7C7182 +:10D8D000DEBC53B3399FBCAB68D21ED9C1DF2F5910 +:10D8E0007CBDD0F8A9F48D47C71329F1C0322B1E97 +:10D8F000983ADEEBD6BCBB366E76E18FBEB902F746 +:10D9000020CE70E5633EDF21F4D92EAB8E6D17CAB1 +:10D91000E79369C6EDB5FA8D376FB1356F525E3D4D +:10D9200040F2BAA348C8CFA5A7FD8F0B1C30C8F89A +:10D93000345715F98B9F57476EEFA03C5750D8AF1F +:10D94000DCAA904C7297E4AB27467CFD1BF291D782 +:10D95000F77AC7AC0D22BE32C8DF33F59520AEE5AD +:10D9600079BFC6F8FE43944FB2DFCA60DCFC730196 +:10D97000DBE7E8430E795561E730E1850BADC30F76 +:10D98000DBC478961F483F1F397063C6837966965B +:10D9900043BFA9253ED7FB9F34BEFCDD0EB7BF5168 +:10D9A00054A570DD52DFCB32D7DF8C378E1D5F86FA +:10D9B000E913F37DA047D47B8DF73C2B77D803F98F +:10D9C00000474F773CBE95E2E8565DF007A7EFDED3 +:10D9D0004075A8A9FA448761355D9D6CEA39F4CF9A +:10D9E000FD1ACBD1872453F97FB95CD8FB5F7C7AD1 +:10D9F000EE0693F3F6851C0FFD300C5C1F42E68BA0 +:10DA0000FC1FC9F4089C67E0DF29D6AFFCB0EDDB52 +:10DA1000144EED311E1B53BF45DA948DA5C676E931 +:10DA2000E20DC2AF2C84118970F8E5E4D071E82EC4 +:10DA3000F2A33FE3789706D6BDB716C779B5C3AA58 +:10DA400003B0F6ED42FB6EEF572A3D4FF4A812C922 +:10DA5000FBAE2F0F03E9AB9CF83DE2F7613C3DCCF8 +:10DA6000BF6F2307860D99FCB0A781EB1F167EF4CC +:10DA7000B925452C1FD3CB9DF2B1AAC3ED0F7DDF95 +:10DA8000DAF76D05CDBCAEEFEB6857E9AA8C664EB0 +:10DA90000A8EAF275675E433F34287DCF57BA9EB9A +:10DAA000DEE1313E24BDAD121EC7876B82BEB438A5 +:10DAB0003C2BD38C84D3CCF3A067D1BF935E499524 +:10DAC0002FA0EA15A4AFACC2C3EDBF969C1DEED04B +:10DAD00099AE0B9FFF6F1B7B683CCA0F8492B82CDA +:10DAE00075BC0BE1341B3F225E647C686E51A0B7AD +:10DAF00082F122E3C74DA69FBF9FCC9E7DFB77A9F5 +:10DB0000DD88F891ECE51D7234A716E9FE95277AB9 +:10DB100015C99F3D5F8EE7B03A07E9BBBEF3FE0D26 +:10DB20005B71DE9DE4C5F3F703EF3C1E2F41BF5947 +:10DB30008A17527FDF1CD8C8DF7528F14227CE3CF8 +:10DB40003EDBBF3A9D7CBEBB52D885C57236CBFF4B +:10DB5000F1421157380EE27B42FF9532E7939275FE +:10DB6000C52835783D5EDAC2FD3F6C04FEBE7026E6 +:10DB70007DC98874BC703B6814F78694FC36F9DF65 +:10DB8000A353927AF4F10BE8A5FEA78FF13CBDA157 +:10DB9000A7B2A94EE244E1D0CE721CFFC42BE23BF7 +:10DBA00041BBDF090BAF1D9DFD43E5ED6072DC93CA +:10DBB0002BC5F7810D43718584B73154A3F3EF8FE3 +:10DBC00021BF210D6EDCB3529C9F5C0A34D1799B3E +:10DBD00025B31F6AE7EBFD65B771FE75D010F9F547 +:10DBE000DFAD9426CCDFAEEFCC71E7D553F2E86B16 +:10DBF0005ABB1A35E4E98E9502FFFB12F9F4F8627C +:10DC00002D4879F408E3C21B8232C48B209197B768 +:10DC1000E38DA9F335503E9DFD87FF3FF3E9361FA5 +:10DC20006C3EDAF1A5ED8149AE3CB9AF54E0988D78 +:10DC3000D744BEBA92F84E71935CFE9E92FD419518 +:10DC40009E731EA17FBCEFC9BFBED28157555DD464 +:10DC50009F9CD8B8C715C77A61B6DFC2734385CD1C +:10DC6000C1B172765C127EC171C27369E4E7234B65 +:10DC7000BE12FA31DBC3764987A15574CE4ED8F572 +:10DC8000C386A16B95C9780A746871CAC3C1ADB95E +:10DC900021D25FDB2D7D1950C279E9ECF6F623A283 +:10DCA0007E0F02BEA4BE2FA67957A7ED6F5FFBAC17 +:10DCB00073B6DDF2FB7A43BD1F4B0F6FAA8EC457BC +:10DCC00022FD1929F5E1FE805B0FBF3ACEEFCB585C +:10DCD000366FE931E27F364439BEB9A614F50D7DC1 +:10DCE0005F365FDB4EB8A9570281DB2E100FDAD00A +:10DCF00009BC0F27F2630AD533D6961E5448CF3499 +:10DD00003C8DFA22C7A52FD8EE2DFFE761C69F3BB9 +:10DD10001F3EC2749A5B25CE3FAF514FF07EE0713B +:10DD20002BF7178E9DF7C64EB18FB03BCCFA92649D +:10DD300097F563CABE49A1153CEEC30838E46944AF +:10DD400067E40CD1099B845EED0D81FE10EBD56874 +:10DD5000DA7AC9592B053D13D493FC81C6DB61F5F2 +:10DD60007BC12BC6259AE479C44FD15E5328707FBE +:10DD7000EAFAD6A8ABF839E03AA64E4BC3DFDD9AF3 +:10DD800049751DB6DCF921D4E797C75F677FE92F96 +:10DD9000BD14DFB5E39F0061CEBFD507C5FC0D10F4 +:10DDA000E738E83218E13AD69F2F88783BE726E338 +:10DDB000A0ADE13D20F271A27E544DC643333B0934 +:10DDC0009758F1505517F1D023EDEB3D7D746E4A15 +:10DDD000C5EF4943E9657B927B4A068A8F8F6B8743 +:10DDE0007A44DDE43F529C6826D9178DDB4356DD2B +:10DDF0006450195D44EB0E1E02F6CBB34ADDF5D03C +:10DE0000573DEBAE871EA88EE8B4BEB2A14929BF2C +:10DE1000F7C3FD3DD6F205E1E24E5137C2F1DBFF1B +:10DE200007F5404DE77F4E0F2CEEFC2BEA8107A64D +:10DE3000247E9F4236C5957C730CCF6EE477F82A1A +:10DE4000997FCFC70B688719EF84FCE2FB0405B804 +:10DE50000EF744D954C6A95E148FBC49499CE53FCE +:10DE600037DD5557957AF57BA31C1749BD3F6B6588 +:10DE7000910BC7FBCF5DC1E3BC4BE7E6228ECB7FA6 +:10DE8000BE939D1B785C4AFB7B96DC38D43E6FEFDB +:10DE9000561B3B48EFDAE7DFC6A76510CAFB421AFC +:10DEA0009C9DB097EA6D41E7EF8DD99E11E5BC3E90 +:10DEB000C9A5882758F5A1CAB0A73D2739EEA3F414 +:10DEC0005F4EF28D4A243F97C73FC375AEF2FC9078 +:10DED00041F5AC97DF1D02679EFE3F2A17F5903C87 +:10DEE0005CAE8C4AC497CBEDEFE61F2CE771EC7E5D +:10DEF0007776BAEB41EDF9ECF6BF5AFE948FF6C88F +:10DF000051CFF9C6DD43407E4856FC472CE7597790 +:10DF10004B5C571BB1BFC30A54707F3D5B33375214 +:10DF20007EC09CCEF9E391A027D713E4EFAD72AB8E +:10DF3000E8BEE577D9F5ADA9FCB2FDAE1153E4E535 +:10DF4000BF1F74FB5DE3F139D5DFF2674647C82593 +:10DF5000DDD7B9E28BF4BDAEDFF2CB0F74469F2064 +:10DF6000FFEB604DE40CF1EB0D54379C37B91818FA +:10DF7000AFAED9F1E532FAFD66672CB90ED8F99249 +:10DF800071F22476BF847E0924F44B07C9FB08880C +:10DF9000FCCD187B15BC99F5F5C32880F267927A01 +:10DFA000204085DB344E952AFCB90ED09DDFEDF77D +:10DFB0001D592AF48CE6889B7C0C3DB3C31ADF8E76 +:10DFC000336F376F13F35C58CFFC42D803B7DFA72A +:10DFD00064BBF54CBCDA3845FD26D0372FFD35F44F +:10DFE0000D040A5CF29C7AB5E519CFF919A1FFD1AD +:10DFF000AC548E3DE7B8DEDF76A6913F2814FB6671 +:10E00000E7DD6091C6F6510A3EF767CE2325D613A9 +:10E0100001FECEE263AEE7E3F6B3DBFF07D63EF5E3 +:10E0200001C05700000000000000000000000000D8 +:10E030001F8B080000000000000BFBC2CFC0F0A344 +:10E040001E817DD0F884F06612D5A3E3E74C0C0C5A +:10E0500022CC949901C28E7CA87C5E0E06866FDC71 +:10E060000C0CC2EC0C0C656C0C0C6E403C8917213E +:10E070001FC601A14D84106213042877C7281EDA39 +:10E0800078912803C3523104DF421C557EB12882A7 +:10E090006D2B4D995D7E40FD006A20A0FF8003003E +:10E0A00000000000000000001F8B080000000000BE +:10E0B000000BE57D0D7854D5B5E83E3367CE9CF96D +:10E0C000CB9C901F664242CE0C0182069C848068E5 +:10E0D000F17A0854D10F6FA768BDE196B6035205D7 +:10E0E0007FA7966B69ABCD84FC903F6450A4A89544 +:10E0F0000E51106BBD4DADF66A6FDB37A08F52AF7E +:10E10000F735B5D6A2D536566BAD456FAC45D25E68 +:10E11000AD6FADB5F749CE399984D8DA77BF7E2F88 +:10E120007CBAB3CFDE67EFB5D7DF5E6BEDB54FBC22 +:10E13000FE852C5ECDD87BF8732E6367F819636576 +:10E1400063E5FECF2F7C6E63236399BB94C47E7816 +:10E1500074F8B6033BCF83FA811BE30D5E9DB17B60 +:10E1600043699706F57BB3F1FEAD31C6CE6712BDAC +:10E17000777728E59F570AEFDDEE62F8DEFE9B52C7 +:10E180004FCC837EF1A30BD956782F9E9FE79A152B +:10E1900062EC74A630B688B18EDBDE5E361464ACF9 +:10E1A000624866AC640C9EBB5BF2275FF630F640BB +:10E1B000CB512AABE5C45615C6617DAC1EC7AD5622 +:10E1C0008DAD2ACCC3B2508771AB8383BCFD215186 +:10E1D000D78678FB23BC7EA065F0E4CBB3A1CE321A +:10E1E0004C5D0CEDF82B3CAFE983796A19FDBC0757 +:10E1F000FFCDE94AB9D6D531B6E0A1A3B6E773F7AA +:10E20000C0FBEA58BD9AC97F1832DB61FDCF328E60 +:10E21000B7EA3D7C1DA78DC0FA16E2FA2E7DCE0B23 +:10E22000705577317D6E6C6C5D88073DF4F7B7BE35 +:10E23000C32F9CFFC44698F7000B27715D07B20DF2 +:10E24000CF31A8DF9B83D9A09F3775FFCEF3B0BD38 +:10E25000CB95E881572A366DAE9E09F5AFDEA368EF +:10E260006E68AF55D33DC81FEC2BC01F005F6D908B +:10E27000190340FF5A194A80EB73828F1EC512F8AA +:10E28000638F28EFBB89B918E231E7CA21BF55E790 +:10E290003FEF3F0DEB4FBB994F1FE31B6719DFA308 +:10E2A000B03CD0A363FF9CA6A1BAF17C159713875D +:10E2B000BD16BCC755E3B0D782F7787090B70BBCDA +:10E2C000C7B521DEEEC0BB39DF9C1B01BFC1F178B1 +:10E2D00077E2DB49A7A9E2BF63BFE2427CC7F7B898 +:10E2E00072C84FF7EE591D667513AF1FF911D77F2E +:10E2F000DF4DC352D2B2FEEAFC1F252BFFFDBDE16C +:10E3000041675992AB7B6E647A4F0CF172839FF434 +:10E310000CF0C35C36B63E273E2A86801F164EACF4 +:10E3200067FE5EF170D08287D3A68407CE177FEF99 +:10E3300078C0FE888789F83FDBA29FA881F574B575 +:10E34000B01335004F5F8B4AE5CD2D1A3DEF69893B +:10E35000509905B58DFA25FB38CB65605CD029272F +:10E360006A2CF38612F09E05CEF012CD560FD446DD +:10E370006CFD8B0DDDD6CE589A1D04FCCC4FB872C7 +:10E3800048A79B5B1833E6225C2A33BC8C5D5FFF99 +:10E3900094CA003FDB1B6F694638EAE72B3AEA4B29 +:10E3A00096317E122927D0081FBE22E3B1F550D93D +:10E3B0001E75B3AD1A63DD7F1E6CBA0CEABD6779BA +:10E3C000B5AD0968F70E1E5E0FF36C5FA626B1BDF2 +:10E3D0002BF60CB5F7AC093037B487B67CBCF865C2 +:10E3E000E07F357E3492C2F93CAC19F52F933D3471 +:10E3F000495D56DB87F0F9BC1A3370DC45D3F66D06 +:10E4000005155C2DB908CF3D8B0E4F4338BBFF9CE3 +:10E410003D26211CF3141DF5714DED916669018CAB +:10E420003328FF6A08F0500BFFDE8BC33A18AF9B0E +:10E43000F40A2FB1D479C14A81DEB3C4FA6AEA166C +:10E44000BB6A00FEFF9258425B02F8C2F72DF4EE61 +:10E45000AB329A2E83F61E5C1FACA766C03EDEACC4 +:10E46000DA4BAF928A906F2DCF018E451297972786 +:10E47000662B4612F133C072DED87878B7CB078F9F +:10E48000215FD701FE33D278F89DF03AD7D3579564 +:10E4900020F8BB24368CF877C23FAB4E59E7423C9C +:10E4A0000DD8E19BA503DC0BC6C36DF2F7D75A3438 +:10E4B000E293432DB554DE0D751DEBEFBA897E3A1C +:10E4C000E3FCBBFB71BDBFC7CA37121F6BB3C4F7F8 +:10E4D000D1C31EDE2FF330CBED877EDB6682C10712 +:10E4E000F0EEFDFC9C7DC86FA6DCEC95385F5CBF50 +:10E4F000A6E1426A5FEB92702BDEBBA56135F1E7C6 +:10E50000275C2EECBFAC485B4BED6B381FCC5ADB65 +:10E51000707836EA0123F2FB7004A66A7E66EB157A +:10E52000503FB204180AE8B9CCAB1D0F375AFA8F26 +:10E5300094331DF8717EB3F222E265FE96CBAF6193 +:10E5400040BF99C8A716FDB417F9B46E3C9F4AACFA +:10E55000F479E4C3BDCDE531ACFF8BE05393AE0657 +:10E56000FC433C3EFC85A6AD9F0638EAEA159D6952 +:10E57000E3E93A0AD7260ED7E9074FC1A75B16D3BE +:10E580003A27E2D345D5C6D6CBA1FDAE89F8747340 +:10E59000613E35E93D56DAE765F2A2C3B371FD8C01 +:10E5A0000DF7C0B84F78FEE977A877F76E54742B53 +:10E5B0003F9BEBDE2B2FD97A39F65FA61A99C4F868 +:10E5C000753BD7397E1DE928DA0DE3F875EDD4E007 +:10E5D000EF69C9B19740DFF6B64448DF813E26FEB9 +:10E5E000DD8E7C0CF530F26774BCDEBED9C53622F8 +:10E5F000BD6FF6B38D0FE2FC4B1B0BF6334BC65AC7 +:10E6000089BF7B91BFCF26700CE4B760ED683DEF0A +:10E61000AF81F9ADED95303ECE5FC138C0B08EE22E +:10E62000B1FE9900F4EFF5F1FA4BD28C6599CAB1BD +:10E63000FABBD2345BDD6CCF7AB4565731F05BEB6A +:10E6400073469DCF36BE81E35BE153978E1F2F2B20 +:10E65000EAC55B43CB32D0DE2D0D4690F85402DF85 +:10E660007E5762C68A25382ED4819EDF8DFC22F328 +:10E6700078D43ACFB091077C6D73251F73C526C639 +:10E68000D762C93824717CAD6100EF8F715C98AF9F +:10E6900038C1E7FF41EBABACCD82AF9F4B273308CE +:10E6A0000FA229087AA51C7FC5399702F39D8578AA +:10E6B0004B2DDB04BF82A99196004E5723AF4F37F5 +:10E6C000D4B417C62C5F2BBF3264DB0FC7F8A4D0BD +:10E6D0007841319E6A8EA74F713CF1FEC47CC2FB2B +:10E6E0002D9692872428B72949B70CF31EC2B90189 +:10E6F0001F4D0B96FC0859CD37E849009B325FED62 +:10E7000000E99B20DA07F5F8FE40FE5CDCF7622C9E +:10E71000DD0378FBB6A4F379E56C24098B0FD6559D +:10E72000B09C052E73DC0F1A6F00FF9F907E269D14 +:10E730004FB51E15D703A0AAB89E52CB7A64580FC6 +:10E74000D4BB713DF5637872AE23EBCB3427613FC8 +:10E75000686A5AF2117C5F1D9CEDF2E21C32AA60DD +:10E76000B4237417BE3FDFC5F719132F6A2D3B84FE +:10E77000E317EB600015A35D641FD71C0FF0CD50AD +:10E780007FF96A613C80B778143EFEFE387C33C066 +:10E79000F7FCF1E3BD25E0D90C60648AE9F1212B97 +:10E7A000BDCCF7CC71CCF58E1BE7C96F11DD711CA8 +:10E7B000B785EE4E3C292E9DD63B11DE4E058FF9D6 +:10E7C000DE5F0ACFA9D6E58467AAF25135328F19E8 +:10E7D000B0FFCE461A43FFADDB15E29B1DCD60377F +:10E7E000C1B31D473F4C7EE75DAEE1A3C85F99A76B +:10E7F0003CE4CFDF85FA1AEDC95D8DF4DEDDA1E1E1 +:10E80000C8EAE0C4FAFA2EB0833320683B84BD71B5 +:10E8100010EA39D817AA36CA99E9B0BF1CCCADF7AF +:10E8200061BC6287D8FF6BF73DDD8AF185DD46E488 +:10E830004DB46777F8F8F3FBEEF9157FCE34FE3C64 +:10E84000C4C79BB7FF655B7F73FE999B5D2C63C15B +:10E850008BF9BC5C49AF4B16F0A73B5DDCAE78187A +:10E86000F731B2BFF83E56EE4FAD43BC4C9FE9D7EF +:10E87000FB817F77AFD95DB11EE6BD6F7FA76B7D52 +:10E880001D8639B83CECC67D1074E9E1FD374818A7 +:10E89000EF9ADE9C6AF5008AA66F412D0EE37A8618 +:10E8A0005A4340D72FB8989106B8A61F4BFC33B6F1 +:10E8B00074BBCE91BC306FCD5A5E7FA06785F48368 +:10E8C000455867A497F7BA2E59867A7ADBFFB9B80C +:10E8D0008DF8ECA7D00BA79493EE34D1A1B4E0BE91 +:10E8E00079DF4FD5E61CC0B7E89ECEC18B711F679C +:10E8F000391B1F2F7E1AF8C662173C8CEB9D8BEBE1 +:10E90000E6FBF826404721FDBD4805FDD54843A557 +:10E91000DB00DEE96BB93E5B0CFACC0DFAAD3C676F +:10E92000D76700F7722BDC1F14BC8B51992E1A1B72 +:10E930000FF4E33E5719C29374E37C8B65538EEC5E +:10E94000F097EF5232EE222A5F742F180FEF4E1716 +:10E95000D7AB30DEFD85C6FB5BAD07C67D8CE4FF23 +:10E96000AF1C77BA63DC89C671EA83E55FD848716A +:10E97000A7FE1B5DE437ED55F427E6423DF38C9B83 +:10E98000E2BC7136EC43FDE37CBF2A3BCF166770D7 +:10E99000964D37D4FA511EFA6FE471ACBD5F38ADB5 +:10E9A0002265D117FD42EEFB859CFF4AC8D390CB70 +:10E9B00043E5CBA2BEB708ECC5827A66ABD87FB37D +:10E9C00054D68D0429FE3356571C751E1719AB17E4 +:10E9D000893AC743A6894932EABB0A9668037D573C +:10E9E000BC22CD520097B79265DC67000FA0CCF136 +:10E9F000FD3457077892810D55DA37061FC0BA07E4 +:10EA0000DA344B5D011F29523A568771986E693787 +:10EA1000D7D11DCB468216BDD4317B37F9A97E9D57 +:10EA2000C795D5FCEDCD1817507729093421553DF0 +:10EA3000C3526054F8E50473A13F166431A4935F98 +:10EA400035C0C6805F34A803FCFE6092D74B45BB3F +:10EA500096E2FD23BCEED5D36C19CCDB2DFCCCC7E4 +:10EA6000665F4E7CD0ADC7FB910FBAF586B00B9EAA +:10EA700087DD3C6EBB5D4ABD867251CB322AF20304 +:10EA8000F49B8EF182D784DC0046FE84F2E446FEDD +:10EA9000C3FFB1A0F6CAE9821FDD6378EEC178D466 +:10EAA0006C8C8F1CA5B20FE3491EC47F2E4FFE6BEA +:10EAB00011C73F98F563F1217ADF124FA2FAA0AD9A +:10EAC0001ED03206FA8B72294BB8E1FDE08A2C4346 +:10EAD0007A7A23BC8E74F486C7E8782BD2511AA3B5 +:10EAE000E3AD4817698C8E66DDA4A35937E968D673 +:10EAF0004DBADD1A4B446D74BC68F1B3763A9EF59D +:10EB0000EC86BF211D6F453A16D8DF86644EBFC71D +:10EB10006EBB9CE2EC5D4BB99CEFAFDA4AF5CC459D +:10EB20002E8A171CBEED069786F65882B7772DDD24 +:10EB30007AB406DADF3AEA21FFF45FE412CE0789FD +:10EB400086E9D6B8F45745BCAB47C42FCCE78FCD88 +:10EB50009B131EB2F4EB157E5FD382A32A3EEFF522 +:10EB6000EBC46F9905F1DC7E00B1AFCE1EEF9EE5E0 +:10EB7000E6F2FF3D185F87F1FFAD45A5B808C6D79F +:10EB80005250DE02752CF7B46854EE83FD2B05FD60 +:10EB9000FE17B4E7E7523C90E5D1FEF8836B25EA17 +:10EBA000CD3B5BC0649B8D7EAA4AE5A32DDA5B1842 +:10EBB0007238D012A172578B4E25AC83DABB5A1231 +:10EBC00054FFF79625545FE15A7DAD1BD6BF63A96C +:10EBD0008BF8A762FB9C7E0431FC822B89E387CFF4 +:10EBE0000183B071ECB9B98E15AEA6CFBA611DB76D +:10EBF000FE415E9903DEBB7595CB6085FB6DC1F16F +:10EC00004B5E9093D8AFE422D9904A0BF6BB09FB38 +:10EC1000DD3EE2A2F16EDFE0CA4C30DE56EC177D3D +:10EC2000D145E3453F2D6726186F1BF6EB1F910971 +:10EC30004FFD5DAE3C2BDCAF0FD7117F51A6F5C663 +:10EC4000BBE5FC04EBDD89FDAAA70D92BD55F40ED2 +:10EC500023FBB66495BE0F4355D525839FC1E7D3EB +:10EC600070B383E7454BF8735DF48F24B87C0613CB +:10EC7000E2B9E81F6BE4E3841AC5380AEFBFF32258 +:10EC8000FE3CBC54EB57E179EF45FC7D9C0FEBD586 +:10EC90005EFE7EF1D9434C9A8F71BD6126013E0222 +:10ECA000507781FC952C4948A8E77473BC863C9347 +:10ECB000E0793801FD904FA1EE82F74A12D00FEAB9 +:10ECC000BA39DE9983D4EF76613705CE1C36DC087D +:10ECD000DF525D42B5B55BD891258D7CFC707A38EA +:10ECE000AF80AE5903DBD02A68BFFD338CECBC4744 +:10ECF000DD2F523C206C30F2F3A7B72F3C9C01BBB8 +:10ED0000AFBA224BFE12F3337D3FD81F8FFEFAEDD0 +:10ED100028C6D9AB67B034CAD159AF8CCCC3BA5E60 +:10ED2000C152587FF4157F05D5CDF6DF044FC3FAE5 +:10ED30005B4F2E9F9E2AA017F41BC120B5D83F150C +:10ED40001BECF643C92509C903F0CE467841FE778E +:10ED50000B787FE43E4EF096D47278DF6DAB3E9C2C +:10ED6000011BA97A668AFC2113DEAE9880B71AE0EF +:10ED700009625C5AC03B13E085B22B2EE035DB679D +:10ED800009786563BA360578A737DBFD9FFF0FF476 +:10ED90003BE17BA87D5F6B06EB6B982CC17A6FF52E +:10EDA000717FE82D39D54A76A44F8F672CFEE73165 +:10EDB000B17F570BBC571F5732250B26B6DB4C7A59 +:10EDC000551F575FC47E26BDF4E3FE49DF33E9A833 +:10EDD0001F0FBE585234F6FC97B8F92E3A35FDFA9B +:10EDE0003E0DEB013BAB4FD883519575690D63E345 +:10EDF0001C16FB41B5E0F703B7DBE561CE1D767964 +:10EE0000387007E7AFC3E6FC66BF3B399F7509FC66 +:10EE1000757946F1B76C4AF8AB01FC154D017F35A9 +:10EE20002AE161147F35FE49DF1BC55F4DF0452B9C +:10EE30009EA78ABF1D6B38FE4CFF18D67388FC95C1 +:10EE400053AD67788AEB1976AC67788AEB19FECBFD +:10EE5000D6B3FDD39C3EE63956549E9C1FBEF35B51 +:10EE60003B3F9CFD9A9D1FBEF35A617E38FB779C09 +:10EE70001F7AC57CBD21C17F41986FDAC4F3DD7B69 +:10EE8000977DBEB97BEDF3DDBBB7F07C73BFCAE7FE +:10EE90009BAB7FBC6226C6797485E1F94617D064C6 +:10EEA000107597AC935D7D28D61941BBBFB7D24F83 +:10EEB000F1CAC3B1C5D3D19FEA6D6C08637B0F9EC5 +:10EEC0007B7AC6E0EB6AC9BF7D353F07A5FD6822A6 +:10EED000BAF4B9B83FD527E239CE76D3EEEAD1B944 +:10EEE000DDE46CFF89B027999C88A21F80E7A97593 +:10EEF00005E22D263C269C7F2D5C3F944DB8FAB54B +:10EF000026B011727272AB0A78EBAD793089F5EFE9 +:10EF1000B3E4D615B1FF79B8BED5BEC606D77D9984 +:10EF2000355B5748FFF3701D912FB3C1D5CB2E9B96 +:10EF3000145FB74AACA03F61F2C7732C350BEDBC30 +:10EF40006DE576BE9D85BE19F0C70F70E3B5F089FB +:10EF50003FC6EDC6DE1A3B5F6D975D349E59DE2CD1 +:10EF60007379F1CD97F9E1F8454A6EB6C0DF6AD8FA +:10EF70004F1F9245FC478CBBCF318FE987A25BFACC +:10EF80001E1DAE15F643D591009D4F06477C543AA1 +:10EF9000D7D925FC95BE7A45F8FDDCCE7507F3E49C +:10EFA0009F17D7E9713AC717F1CE8EFA0306CAA7A1 +:10EFB0005FE43BC99A26617CD3AFF27A20BF86FC1E +:10EFC00053FF0A566FCD6B2AAED5961984BF4C6499 +:10EFD000B5259FA34BE0DFB4678AF5F27D563B5B16 +:10EFE000F3707C05DD5CCFF6C5B3916916BC76DFA6 +:10EFF000946368A776CCDE4D70F91C70F9045C7ED2 +:10F00000840BE3F44EB86A2687CB892F130FCE7397 +:10F01000C2CA1137D8F08CCD1891A8AC10788F22C5 +:10F02000DEA11E1929A172FA48313D2F1F9941F521 +:10F03000B29128D54B476651BD6424466568E47497 +:10F040002A8323F3A80C8C2CA4D23F524FA56FE443 +:10F0500043549AF2A18E9C45F5ED8B381DB3E770B1 +:10F060003A8ED26DD1628A3B14AD6089B9B0FE226E +:10F0700079F018E5BBAC043B561AC35791CAF3D9D3 +:10F08000A6097C1521BE2CF25BBC04F05587F81A4A +:10F090008EACB6C4CBCCF8F7281D9796DBCEE32F09 +:10F0A00010740CB9F9FEB03DCEA2563A762C53C876 +:10F0B000CE2C5AC9EDCC2299C3F141C135111D673F +:10F0C000A45D4CB7F803D18D7E5B7D7A6A9AAD5E04 +:10F0D00006FBB76ED11F41685B0AFB7549326E7F34 +:10F0E000DE789AED3D338EE9AF6BB03D576BCEB60F +:10F0F000BD67F2D334913F609E2FDF22D6E13C47BB +:10F10000DE20F03AB62EFE7E087F45BD92E47912ED +:10F110008C19AD6D80B7F284A2F76888A70FB7DEAF +:10F120000DF5B2EF7A199EC34B6C45EB63D07FA708 +:10F13000A126B1BECD13177C0EBCB4985242F92162 +:10F14000BEFB7833E68794FF93CC28DEC4CE227FC3 +:10F15000E8C416D0C1188F9EE07CA69C292CAF0A6B +:10F160007D056B2ABD84D7C7D60D758E8797517FD5 +:10F1700079D99A70B240DED794C75B65A95BCEF5AA +:10F180009DF08E1B17D4F18C69EF7FFC5D9E50E9DA +:10F190002B01A89CC9CE24FD3BC573AAA9F68BA15F +:10F1A0007E013DA1A37E81B25AE8979942AF5709EB +:10F1B000FD5289FA85F4D00C7A5E21F44B14F5CB1C +:10F1C00042D44331B11F9C4E6500F50B948AE03365 +:10F1D0003FEA9985A85FB89E31E3592CC2F94E45A4 +:10F1E000BD03ED5EA16F18E3FBC42D67E9F11EAB13 +:10F1F000BEA95F4CF19590D03721873C87843C179E +:10F2000089FD22E494E746539EF5A8559E6F71EA66 +:10F210009925F6FDE2D971FB453E82F963B75C3072 +:10F22000A73EA35BF4CD057348DF84925CDF4C04FA +:10F230005FA9D03713C33764DB376E16FB8689AFFF +:10F2400089E9CAF1D457FF6DE24705D4B61BFC1714 +:10F25000ADE1EAC8DDD05AD4F04AED6300EF5A4F71 +:10F260006AC803F42F5AF81C1E52B03BAF7D2D9292 +:10F27000A2FD7A37C54D8A147E6E7373C3F104BE46 +:10F2800007FD7FE3E172BB4641B8999A4679BEF922 +:10F29000D32C87E7417ABB5DDFCDBCD16FD33F95DF +:10F2A0009BA7D9EA155757D8FA238BA3BEA36002B0 +:10F2B000F06D64835DEF051276BDE7AB6D70E837E6 +:10F2C0007E2EE1D5CFB6EBC7C8D4E4202AF6D98884 +:10F2D000D8678328072563FC1B10FBADF99EB93F57 +:10F2E0009AF4606C80F6BDEE18E757775093D6D746 +:10F2F0008DA74BC7FC1BC89EF03AF8C22BF84215ED +:10F300007CEB75F245A5C91759DB3ED4EDE45B876C +:10F310009D9350F8F96C40EC8FBDF181639807D94B +:10F320003DDBC1B7E2DC04FED3E74A13C3173A253D +:10F330007C85ED9DA9F36D2743B9CA4A2C8DE7D290 +:10F34000BDF33BF308AF1297A91E38A32F7F1863B4 +:10F35000504DFCDC14F8F26C05F37516F4E4FBE197 +:10F3600079E7BA203D2FD207B99215F4A72D6E1A6E +:10F37000F2959D4F03097FC17D72AA7CB346D1C52A +:10F38000F957829FBF34F0F3177FE9001D47EA4F1A +:10F39000AB4497CEE725CA6FDD1EE5F1EF136B6135 +:10F3A000E3C67AD56004E3559998A2E17E1AA9498B +:10F3B00049B81F96B1F4BA5618A0B385C7E3BF1C6D +:10F3C000BBE18CF538AD9C3EF362C06F7F30B54633 +:10F3D00081794F465916E54FAAD898C2F93FF72BC5 +:10F3E00049C73C047F2D3F770B8A78F0F6283F779A +:10F3F0000BD4F178DEF6283F47837E14CF33EBE65B +:10F40000FAA01E095AEC9B8E45CF107FF846E37593 +:10F41000DD0CF3A7CD389D4FCEF3B85B82C7DD7C02 +:10F42000EA008FCBD589389D9EA338DC7671CEE279 +:10F430000E1A0CF55FB04EABC7FD9E6949E22B5F1B +:10F44000AD56DF03F50B15AE6FCB03C66715D23B88 +:10F45000951AED83CCEE87987CAFD6801E8275FB23 +:10F46000F217D0B8BE4A96407B1C3889CE0B941A4E +:10F47000A67D0DDB6B787F68EB0F60FC524E1804A5 +:10F48000A7CEE194B11DF9BB52BB1BF3871495C302 +:10F49000C5228CEEFB78C4FB4A84B7AB3AAFF78940 +:10F4A000734D8C7F227EFB2CE7989AA5CEF04A47BD +:10F4B00023DA8FFE04EA89BE58DE767ED91793B828 +:10F4C0003DF6CE63914B2C72D4F7EE5B94D776DF8A +:10F4D0005D17B6AD88A29CCC0993BEF6E4235A0111 +:10F4E0003BB4B3E560B1EC99987F3B4DFD25EC5AF8 +:10F4F000D32F033C527EB5138F1DF5BB47F138F770 +:10F500006F88C75E117736F1D86B89336B96BAB9BD +:10F510008EDED8800D7FBD883FD437EF7C2B72897B +:10F52000454FF6CE3F4279DDBD8847D00F839D80A1 +:10F53000C7B3C1FE91B9DCF6D6B004F29DAC6558F4 +:10F54000A178BF778B5B7FD9E2E77AD5F4D138C059 +:10F550001B7EDACD508F86B36FE6F1FC8201BEF6DA +:10F5600013DFA599757E1F2823B4EBE64289769FA9 +:10F5700047F7DBEC3EEF1685C6CFBE7B998E87C082 +:10F580009A2B15C1B23C90FA29CA7930C8F5892F57 +:10F59000983324E2A3149D3FEE38EAC9211FEDF50C +:10F5A00018C7504EAE8F0DAF443C5E7F8E8B619E70 +:10F5B000F60EDDB592E8CCD2AE074BB17FD9BE1EB8 +:10F5C0000BFE7E26F687F73CC610BDEF73BECF5606 +:10F5D00016F2577F29E4332BE439BBECF25C2BBCE9 +:10F5E000B7ADAAB601E5596BDAB8671DD667D6354F +:10F5F000A0B8BEA94822EE30C830CE007AFB4DC577 +:10F60000928FE5AD1C22BCBF097607C2F347A15714 +:10F6100015399D473DE9294D30A4DF8E7338DF4F02 +:10F62000C4D7CA96AF17E3512BE805D27FC84794D9 +:10F630009F55663FCFD851C6F908F58766A99BE369 +:10F64000EC281BB6EBBF73DE3E85FE4B737D57C9BE +:10F65000F9DFE738A770EB09D27F3B44BE8013EE99 +:10F660003F087C4EA4E73443E8B95AAEE7FCF9E81A +:10F670003219EA7EE05B1FF5CE917C7A6B41CF09AF +:10F68000BD8EFDFD423E613F6FB5CA67B168F7D5DB +:10F6900070F9F3AA7A2B8E67F2EF34D16ECAAF29D4 +:10F6A0009F5DF3B89E43F9473C76CD1BCBCFD02C62 +:10F6B0007553CF6D433D87F1D979191B3EBB46E5A4 +:10F6C000B4CD26A75DEF7E96EBB9CADBDB569C85F1 +:10F6D000FD38BDBB3C99827AAEFB147AAE7B54CF29 +:10F6E000A5C92ED18C0CD969BE3AAEE70288C746AF +:10F6F000BCA722F45CECDB8447B58EEB39DC2F71C0 +:10F70000DD811A8E47556687689FABE1FB5C711DF2 +:10F71000D773FE5A8127138FBAC0A3685775DE6E60 +:10F72000EACDEEF91C8F4827CA8399CFF18678D6A7 +:10F730002CF5D175CCB7E7B9748FEE13B7DAF6892B +:10F74000EED99D64C777231E81D7AFF2021E2B50DE +:10F75000CFF1FC9CEE04A3FB87FE950306860A4FBF +:10F76000A5E7B6D5F0BC02D0770CF1EFCD4A86D034 +:10F7700027A4DF8242AFCD41BD86EBA92BACD74099 +:10F780008F5DEB5D64D1632AE831F8A50B936F2D93 +:10F79000CF3DA53992F36D55222EA173FC45D62697 +:10F7A000EEE67E20C75FF925BCDEE555483EB6C5CE +:10F7B00058D376E4CFD9AE5C2BF25BEC8666D4CF1F +:10F7C0005FFEA99B726AF0472EC77B94FC07DACFD5 +:10F7D000B0E6536D473BCB927F717211D85596F3CB +:10F7E00099D09F7F42F61503FB0AED3469F196B973 +:10F7F0004396F7FB834D5DB83EA7DDB54DEC67A69C +:10F80000DDB54DEC5FA6DDB5CDB19F6D8BA5EDF9F6 +:10F810004C55377C2076D736A1A7CD7D631BEE03F0 +:10F8200016FEFA8C97EB9F691E631FE6555E1F4B11 +:10F83000AFC47ED757C13E00FDB6E13E5237B68F0A +:10F8400038DFCF89F77F2D1BF779691F71BECFC4D1 +:10F850003EC4F152B494DF53410E762FC6783AFF7E +:10F8600039E8E5FB91FE6473B850DE9C5932C177EC +:10F87000637AD22FE23CEF515D7F64F2F7CDFC96C4 +:10F880006D2D1AD9D7FA867F9EB47FB7B0C3BDEC71 +:10F89000E3D4CF579B3550CE828941C3CDF56483E5 +:10F8A000E033039326FDCCFCB9274F7E3E50E80E93 +:10F8B0000D9F3F9FE9437E5ECE86BDA0DFFC8D8E0F +:10F8C000F88F7B6D385540CF99E596E77F5BF2B8AE +:10F8D000C55F39E6B5C7874EB0E7591EFD1E36989D +:10F8E000EF43FD6FB0616B3EF5287FB7BC5AF2382D +:10F8F000A6261D6D9E341EE605BF18F300CD75BB10 +:10F900002AB30CF38F7C7A9A9C2A7F25CBFB8AC67C +:10F91000AFA31761A07B17FFBD3C1F3C353D6F16A1 +:10F92000F2D78B7499E4DC6674DCCC89361CD7CBB7 +:10F930007E6E903F05F8C5B85B517098EC56F001AB +:10F94000296F2D509AB4D9734E38CD754D349F1C04 +:10F950007C7FFD95D2D178A3F0270BEFE7FA40E446 +:10F9600018F2CD098DE9A8C76439FDD5A152749F5D +:10F9700061A36EA4FABD4328C719AFB61FFDCA26FE +:10F9800068C7525135CC1FDE26F0D521F838AECEEF +:10F9900022F9FB72A088F4E596E743948F7ED29516 +:10F9A000557BA1C91D5E45FB82DB5D9FC6FB0AE757 +:10F9B000BE73AE6A8D232C50B97DB62DC8CF97B6D5 +:10F9C000C96915F72E9D192AF247B736F97D6AB530 +:10F9D000D265C39352EA9F140F1FC3BE808776116E +:10F9E0001F68F7259AADF9E54DAA8FDAE3022E9D3F +:10F9F0000D3FF61EACAB3DC8EF8976056F5163E84D +:10FA00003783FD8DD7FBBBE48C3AED6F00DFB9EF98 +:10FA10007C84E2686D1A233BDB1B6ACAE4912E12D8 +:10FA20004BCFC678B7261F1FCD838E43BB87515E51 +:10FA30009EB7384EF76547F5C7078CBFD138458A62 +:10FA4000DB5932E376D67A5F6AAD8AF85A72A1D171 +:10FA50000E70FC1EE5BF0CEDDE14EDABE67B1794DB +:10FA60006D203E91019F745F8519791DE13EEA2664 +:10FA70003FC85BEACA780BE4ABB04A852E1F99EB0E +:10FA80009D102EA107A909C65B3622737B34C1F1F4 +:10FA900018624394EC1A464C027F16335DE21B75E4 +:10FAA000424AD221C3523A772CF57DD0E3AEA571FC +:10FAB0002563277B2FF03EC69587E89CE2031FF75E +:10FAC00014F0FAD857685C8C1ABD67C9B7EE06B94E +:10FAD0000765C4DA60FFC2D20B3D919E27EA18C9C0 +:10FAE000C7B696083D67F2C306DA07413C9F49E076 +:10FAF00069EE83E4EF6ADFF732BC876A9E8F98E78E +:10FB0000BD6007D37DD340C2AEF7D4CAA9E9B58E94 +:10FB1000B23905F3E546F907383566D9B727EAF76C +:10FB2000B72EDB407FC62C7E831C8C8FF1F524EB37 +:10FB3000732752142FC70330EB3E20BB78DE4A5B9D +:10FB400070BD9A22BFE6BDF7D0AE316D4F7730B9A8 +:10FB5000A4105E9EC6A4028B1FECD13A3F83F747E8 +:10FB60003D910D86F5FEE933F8FB227C7EB53134FC +:10FB7000053AB86583F26981D6E487EC0C7C92BDC6 +:10FB80005887FBC32789FE9D65E531BA176BDE03F5 +:10FB90005083F47D01934F0F955D1AC17DBE237A8A +:10FBA0006904F7F90E4F3282FAF968D9B78D75F802 +:10FBB000FE3B6186F7F03A2371F2CF3ADF99353D8B +:10FBC0005D607D01C6F505DA43FC9EB88249F0A36D +:10FBD000F08215DB85B9A901A1777606BE4F79A021 +:10FBE0008A2ED33D3F2508F3C2FC2B1B070C8C2724 +:10FBF00028A960CAAB8D1FC79C077E248CAFA0EFDD +:10FC0000332A7792ADBD201CCEBA52E3E2FAB1940A +:10FC1000E5DA0AF4F7A8459900C88967ECB986F3D4 +:10FC2000D63C393FCCF328148A334BA01150AEC6D2 +:10FC3000F83F673F57D55C63E35ACE133B1583F417 +:10FC4000446626A3FC6E261BF4FD8376695A430F97 +:10FC5000E2BFA22752889FE448D79B180F061CE5F5 +:10FC6000918FE4603A8378837912E7934AE81BC462 +:10FC7000FBF450BE89FE8D57935FB3F259DC07F653 +:10FC800024E67B087BB2A3343E69BC05E5884D625F +:10FC9000AFB9152395E47EC331B4CB3C6C41430F1F +:10FCA0009695478EC560FE853E89D6EB09F2FB45E9 +:10FCB000AC14F653CBFE7287DF58E8437EF6F3713F +:10FCC0009CE3DFEF6F3AD307F87C564D9D8D655B63 +:10FCD000E83CB2F7BA628BC57EE7900F4C4A9BC2F4 +:10FCE000BD1E6D6D822B45661449167BDE5F974005 +:10FCF0009E60910FB9357909A727DA719E889BD14B +:10FD0000F9772DBF276EDE332F5A6ABF47EE696C35 +:10FD100060F734D2F94512F5AFC771AFDC8D745975 +:10FD200080A5FDF9C71C74696B7984EE8F8FE29909 +:10FD3000F1F319E77A3EE56FFAB8AFAC001E82D353 +:10FD4000A674BED115C976911E61EA7018D68BE6ED +:10FD500018BED78E74A7FB037C1FDA25F6A1ACD89A +:10FD6000776E6ED1892F6E69A9A572774B829EDF5F +:10FD7000D1B284EA9D2D06D5FB5A5652FD2B2D4952 +:10FD8000B15FE518EE7BED51638F843E74E6E72B9F +:10FD90009E8457DA43C6317E23F0672B9E8429DA8E +:10FDA000C5FDEB9B7C3F5E81F9BCEDC546B30B40C6 +:10FDB00078A0E470FBE308DF6CE3185E757BB4FBAE +:10FDC0007F3FDE8EEFCFE7FDBFEC7B79452688F6DF +:10FDD000A6195FB8E41478E0FAF17E0CB2A1BD5A1E +:10FDE00026CEB3A6F8DEB7CCF762EF6F3EBF9C33EA +:10FDF000F87ADF59F17484F2A0C8EFF94FDF6BB4E1 +:10FE00005E5259B09E677CC7DB69FDF3C5F8B02F21 +:10FE10007DCCB22FFDD0C7EF83B5D7BF3FB8FF432E +:10FE2000C01D5E3994C72BC7CB7CA903285FA1E610 +:10FE30007C0643B35DFA8324670C8DC629C8533111 +:10FE400006D7CAC6FA7B6A1AF2C84A8FABF6E7A190 +:10FE50004683C67DC8C7F3D2BE926E52B91C1B74CE +:10FE60006FEABB3E9EBF866162D48FBFD764B27714 +:10FE7000BE239E3BFB2BA8F41BC7FA4D08A7760AAE +:10FE8000BB768AEB647292F8F7A0AAD9D6759B2A42 +:10FE9000F2EE44DD2FBEEF35557ABC8DF48072B39F +:10FEA000639C4D8EBAFC75175BD2807684655F814A +:10FEB000FFA229BFCDBE294B4EB3D5F15EB5B57FAC +:10FEC0007889DD1E2A59799AAD7D7A7383AD3E63B8 +:10FED000E3D9B6FEDE4893AD1E4A5C68EB5F955EE3 +:10FEE0006DABFFA5F8EE71E0B9C5519FEA380AC6BF +:10FEF0003D4B304ECAFD5D454D917FE916E73BEE27 +:10FF00006C3DD94DE6F9153218DAD58A66901DEFA9 +:10FF10000761457E536B5D363BD953698F87CAC1F4 +:10FF20004CAB878F4BE7BF0AC647C9AE37886FE433 +:10FF3000208FA7987639CA08DA0F3DB5D7B301F1FB +:10FF40009E7B123E96457E11C65671DF3855BCC267 +:10FF5000394FE492E4A4F120677F1694F5572C7290 +:10FF600033F17B327BC5623FCDF7335BBEA391BBE0 +:10FF7000BE99FC22E64AA07DA0AA89A3EBA0751B2E +:10FF80007601F9E8C412E91911FB96D027EE4AD799 +:10FF90008B5EB497836996D22DEDA7A07740EC6372 +:10FFA000CEF61FF953CBFD6578EE99C1E32F3CD710 +:10FFB000B5C5813BCDEFEDD471B9EDABEFD4313F99 +:10FFC0002226E7D58F86D838B9ED14DF7961759C84 +:10FFD0000F9508BF176BF2DBE8B889D59497AEA8E8 +:10FFE000798AB307B38798DBC66F29764968EC1C1A +:10FFF000F17E116F37ED49AF6E8F178CF255DDD45E +:020000023000CC +:10000000F8FF7322AFE9E497F2F26A806F55FE873A +:10001000721CF8E6463F8FBF9CFC12CFD77AAA65C8 +:10002000C46677B4F8CBA97DD5AA43F2728B7DB6AE +:100030008AF1FC58C6F2F247E75BE76BA5FEE7BE24 +:1000400013A67396278FBA27D5CB17452EA3F33C5B +:10005000B3FE9F0937C5A7983CB80ADF5FD5E8769D +:10006000157ADF69675F14B99CC63979535E467F9C +:10007000E2A91655C2EF0EE03A319EBE6AE521199B +:10008000F3754F05F735E23BA026DE7AC538276FBA +:100090004A51BEB092DF44F179A52E65F07C18C6B6 +:1000A000F79F884EF1EE73DFB98EE26EE678E6F8E0 +:1000B0003EC73ABB23FC7E2293B32BF9B9BBCB6579 +:1000C0003DB79D689D3EB14E133E13CF9D88E7021C +:1000D000EF9B657B4B6AD2733439CAEF69CA1E4302 +:1000E0002B146773C2E1D1603C0B3F9A70B49F82BE +:1000F000DE1D088785BF3A351E8FEC945305E37BE0 +:10010000CE79955278DFE6C767586DB9B017505E63 +:10011000DA379F817ADB1BF1337EFE20FF7E481D9C +:100120008B7F78D57F64375AEEC92895D06EDBA7D0 +:10013000D2A4A7BDBAF057ACED16FF4DC5FD00FA2D +:10014000B94B3BB93D5FEAA7FEEE52F99521077C1A +:10015000A4C72466935375A694E27CC81E477F43C8 +:10016000AE4DDC8DF0AA719E4FD45E95B81BF78121 +:100170009FFB15A147453CC297FAB9DF820F339F19 +:10018000418DD7921FC782A505F59E335FC4C4EB8E +:10019000A8BE7BE7B23DE8BF754AB59F213F6782A5 +:1001A000719C7AA5ADAAFE580AFDD828FF5E6E871D +:1001B000A9C71DEBFA839F9FE301FC7FF0937C1995 +:1001C000198C33804B90C6F9542D497197B6103F66 +:1001D0000F66A585F57C9B5887932FDACC754CF07C +:1001E0009E136EEF04FB4357552BDD2BCA54292277 +:1001F000CFC3BE8EAE9862A34F38A0087D314A9F10 +:1002000070A06C3C7DB65575B2ADA82718CF7B6346 +:100210009585F5B6AAFE6BB1BC700CCEAA00B7FFEF +:100220007C928957C19F8D9C3FA540AA0AE7F3D6CF +:10023000740E92BF5FC9E71B971F56653FA7DC5E30 +:10024000653FA734EB261C98B7663BA714F9616A93 +:10025000A5C81FCC7F9EF4A0B7324DE794AA9CA7F7 +:10026000FBCEE639A5AA0ED0B9D8E83965A53D3F41 +:100270008CE1E579CBFA2381C2F9E8663DEAA0D7A3 +:100280001D5522BFC0419F3B36D9E9B33C304E7E5D +:1002900096070AC8CF1D9B04DF6D284C97A87ABF2C +:1002A0008D2EE3F98AC781A771D167B768AF46D6AB +:1002B000C1BA7B843CC42BB52649C77CC96115CF24 +:1002C000AFAFD05297201CA1CABC814B9BB67280A5 +:1002D000E030E5F1C3EEA0EF57987763C4C3F85D53 +:1002E0009D2F06241B7EC6E401D6301BBF33A052CF +:1002F00079F285B993C673DA5B549BFE6D0FF27B7E +:10030000EDED5AC3A0518AF1A01A3AE73436825C67 +:1003100037E27D5BBD01D770B5985FD6B87D0378B5 +:10032000BC1AF9CE53CAF167E2376E0C1868DFC405 +:10033000D8401EF57071174BE4054E640B7E0275B4 +:10034000FAA1598D746E3A8CF99C808F1B101FB1E5 +:100350001579432E800F86A91530DECE1FCE267864 +:100360004CF8FF2320BE7B58CBE59EC9894821FB72 +:10037000D6A4DB9D80AF3AFA5EB42121BCA557F329 +:10038000FCE65E7C0E7A657120D989EB2A4DE62465 +:100390009CFF76717E2531F5F128F1193FD7BEF328 +:1003A0005ABFE0338DEEAB64032E279F650BE90146 +:1003B0006F5D8A7CFB4DA1D4AE00ED0B390D1FCCD7 +:1003C000B83A4BF12CB78BDF1F05709F427EAA30E5 +:1003D00073221897E3921AFE9DCB47033CAE168A10 +:1003E000E8F4C933FDE983ADF87DD0CE54D0407D2B +:1003F0003A237ACB21839F9B0E639C61465596EAF4 +:100400006C993ABC1FDAA31B12AD4D50AF32D461C8 +:10041000CABB6DCCB662BE88998F1ADCA04BB86996 +:100420003AF1A828298AD756442E5FC5282FF560AF +:10043000AB82F6C7E7197D67AD645596E291154B1F +:10044000BC1A8E3B2336D48AF9389D1F6509B088C3 +:1004500058D566DE5E026E18D23DB431C5E3ED724A +:100460008A5D6CA19B2F92A2EF61AE0DA51E453C4B +:10047000F96AF8F996695FEFF40C30BC071F589AD7 +:1004800035109EB6D0E56C9D85EF9F10F450EAC004 +:10049000F5088EF1DF2DE47BE2772AE2BE2B82D8CD +:1004A000CFCFCF21D90603C78BB1147D0722807C23 +:1004B000AB135FFE10E78FD5E5E9D83DB07290FC35 +:1004C0000690CBE91C0E2D8AFCBE33A4D0F78780A2 +:1004D0006ECF308CB3BBEC74F3458C7BD03ECB0439 +:1004E00078BCA6EBA66CFE2E8C13029E74C04360F3 +:1004F000C9EEFCF730EEB85C4D62DC3130B433FF4E +:1005000002B41F690EA08F00F2B99EF4B67729BF1E +:1005100053E3AE310EE127D8BCA08F51CEA6ADE299 +:10052000796380AF5F22BC21966732FA87C1813C34 +:100530002EB95D4EFFF2266E9F2532CC222F2C1154 +:10054000B1FA8F1E4D1D675F59E5EB54FBEA989F8A +:100550000BFBD38231BB07E4EACD009D5372B99AFD +:10056000AA7D61E6FF7A228CFC6245E4AD2ABA9945 +:10057000FF9BE27971119E178779A494775ACAFA82 +:1005800003B87E3941F434BF1F20637BE358BE9625 +:1005900087B7B18E28DF1F315C8578EE88F2FD3099 +:1005A000D3C46AF17B621DD1A43D5F5032F3DB2ED0 +:1005B000B6E567754C90FF777B90CB6B07E631C152 +:1005C000F87D51179D1FF745F939C489E7258A172A +:1005D000F455259BD12ECABC10207BEA509942EBE2 +:1005E000EB7B3E74B7D762579B726AD6CD3C71B332 +:1005F000EECC178F673651BCAC2F627E6F79F5A4B5 +:1006000079285D2D3CFFA053E41F8CCE3BC1BDB8C3 +:10061000F3825CDEF01C09E5C11D4C92BDA054F2D2 +:100620003C3C2FD20DE9A4F37CC68EB21B28AFC38D +:1006300053C934CC7B32F338818E9487E79113DC35 +:100640007E10DF799045BB493793CEDBCB789E9DFA +:1006500049B7ED658E3CF7327B9EFB76C9CCABFB90 +:10066000892D2F71FBA24BF977A1C577246E0FAAB4 +:100670009D18778D67AEA2785147F430E1ED446262 +:100680003D39131DB154C17CC51E4117E0F78F04DD +:1006900051FF44C43E22EEE9FB857EEF1178AC1396 +:1006A00078BB49F0C74D41BE9FF525FA89EE27D0AA +:1006B0005EAC676C3A66EB62BEB09E5C8672DF1F12 +:1006C0004C7D02C73FF98B2F4611EE80232E556AD1 +:1006D000EE236C90FCCBCE9FCE22FF12E9837E5698 +:1006E0005DD06E4F285DFC7B6026DD800E7A21791F +:1006F000EB28BB9CE00279A4FCC95179AB1CA55B3B +:1007000086EC409127EB943793CE7F6BBA7DC79FE1 +:100710006C41FC303943FBB1932FFF5ED707A375C3 +:10072000F2BCA84FBCAFB8DFC4791C59CA43883E9D +:10073000EF257D5D3AA6AFEF45FC4537D8F9972503 +:100740002FE1F62C1EB2C0BAF62723FD85E3333C19 +:100750003E7612C61EA43849CA8FF9310776ADF726 +:10076000A31C1DD833B9FEB95DE89F7D42FFDC892B +:10077000797C163D74A7D0B35F71DCB72E0D71790B +:10078000FA8590A7036AD28F74678FADB910FFFE08 +:1007900046CDD36ED23F33760E144F367FE5D576F5 +:1007A000797ABF797B3F0ADACFF34EF5BE99AFF77E +:1007B000D7E2E52B483FE093D2ED9FEA4412B9F32C +:1007C00061E2C7F8669E8F12ED4AF5308E07CC4481 +:1007D00061E177BE41F701FBFBC007A2788951B404 +:1007E0000EEC24329175FC7B26AB5DF8774CAAA207 +:1007F0006EE6425F72173FEF54E11F8F87E4973137 +:10080000EE32D1F7616765EDE7A151710E5DE53814 +:10081000EF8C3EFFDBE7D17E8C3ABECBFDD7E2FD0D +:10082000CF41C77DDAFF4778BF531EF059F78319D0 +:10083000124B227FCEB8E665DB3DC19210E74BB686 +:1008400025C85EB2C4D56748F928EAF77D578BB84A +:10085000209A6CA8876A87FE15E9B667DD0DFF85CB +:10086000F66147D9ABFF80798FD5A100F767AEBE9F +:10087000DE7E9FC597AA0E2D1AF3CBF6B5AF26BB29 +:10088000F9CE773E7B08BFBB3A7B334BE0DF238258 +:100890009F67F03BF9BAA0F38A5D8CE81C8FB8190A +:1008A000E55F64EC748E6FE07A6E761FCB21DFCC4F +:1008B000DA9891F09E68CD169630E0FDAA2D16FAD2 +:1008C000C27F35BBC67D47BE09F9647A82E998AF1D +:1008D0005A934D1F42FB372AFC84E90EFE70CE7FEF +:1008E000401DB880F6C3AB79BEF16C3D2DE571FEBD +:1008F00054309DC323A166FBFC515826D2C3C98F37 +:10090000CE79FE5A7E5B15B2CBF909B6F69F0F027F +:100910003EEEEEF8FA8FE750AF9CCBEA8F9AFC26BA +:10092000336335D289254B85DF6AC40AE9F3513D2B +:100930009D9C9ABDEC651F9D745F2849DAF3BE4209 +:100940002BED75675E989759EAB1B179CCF31570C4 +:10095000976CFE7677284BE7F85F0C3D725E29B402 +:1009600077E3379A2BB09EA77D59C21320584A5F70 +:1009700050267DC4E474F52CA8BB4F9319E525B22D +:10098000C3143F30CF3582988F554AF75659898422 +:10099000E7C7DC0F1C871FD11FFC197D32FFDFC8A2 +:1009A0002E3330BEE7477D45E7EF86B115C7D765E3 +:1009B0008A4382FC7485B81F63A07FEC01FF189FF7 +:1009C0009BFEFB54CF5BA6DACFBC3FDA8EF74761C4 +:1009D0007DC533B5187DCB0FBF2FAB5BBEBB3A9344 +:1009E00025DA187E77558BD1B9E4F301CDCDF147E7 +:1009F000F745DB5B1CF71B8AF9B9D639FE547FC873 +:100A0000128790A6ADB4F9051196E676254B52A94A +:100A10004D67F58FE3FC253CFED916EA8CE1BACD93 +:100A2000BC08739CD743DC7EFC56C84DA516E0E796 +:100A30004B4CCD44ADE72A7211D777D0FE19E48B29 +:100A40003F855E3CD205FEAD1666F598BF91DDF19F +:100A5000FA792B814FB459E2FDCA09DE9FC5BE89E0 +:100A6000FD87B7BF704406BC6AD58CF223DE0EBD8D +:100A70004BFB9C3697DF7F668DFABE76807FCF2753 +:100A8000CAE99E69C93F6E89E1F7A446C7399DF35B +:100A9000E308BE87FD819D98258F0FFCFD1FA05C9C +:100AA0008656E6292FC21D34E350A93DE49795F1FF +:100AB00038F787DD419177A0F77B2D71D36321BB98 +:100AC0005D8D7E1AC6DB468666515C4E8E70BF58C1 +:100AD0008E64F2567F8D692BC7CE53E278AFEE421B +:100AE000CE6FDAD1D2972DCFE5227EFEDDB14E2535 +:100AF000FF29B25E21BF1F5691C17891651D4385C4 +:100B0000D761C617EBC2BFB2C8D1AB0EB831EFDCAC +:100B10007A5EF0E5288F9399F3B7AD57E9FCD29C44 +:100B2000FF8D90C8530866F8778634284363FDB379 +:100B3000CBBF24A1DC5E1048BD85FCE85D9924B8DC +:100B4000CE8B18649F8F8E0BEB922CE39ACF598437 +:100B50008F3B5A5FC9EB1E6650DEAEB67C15E5438F +:100B60007788F8BAACB176F4EDBDE23EDD3839F401 +:100B7000A5E4A245E3E397FD41C35344F23F81BDA1 +:100B80002CE272EB97084433FD1F70DFDC24F2C3C4 +:100B9000AE7FF8AE23B8AF5D7F16ECA2093C17FB21 +:100BA000EA11DCB7DDF87D14CA6BCC1E7901EA1BB3 +:100BB0009A038CEB9F6411E2E975C6EF71BECE9E7D +:100BC0002A5A6891B35945227EDDE5A17D2C03FFA9 +:100BD000900F3E9DF5D8F6B52BF6D8EB97B3D5E53B +:100BE000A8372EDFE5613958FF26C7BE5722F078B7 +:100BF000054B77A2BEED107C71CDBFCD57D01FDA6B +:100C0000B4508BB92DDF3939BD88DBD5AFB530FA9B +:100C1000CEACF9FCCA604EC173D0971E5A78E987F2 +:100C2000188E93EBAC68A46FFE93FE70E2FDB22EBB +:100C30003B9CA75A87136ED3AF98080EF9A044F1D6 +:100C40003EE7BC671549B67C84D1FB165B65D6D6FA +:100C50008879B35FBA17EF676CC978358C579EF403 +:100C6000CDCC61FCF1A345BAF093D267F2BCCFF4CE +:100C70001958F694E692C877669E82AAA6C98E9203 +:100C8000E424ED4F3D9153B45742BB7B92F69AC991 +:100C9000DFC7FCE3F716F3943AFE4772781CCF8C5B +:100CA000DB9C9013946F7122A8D03DDFB6627E7FEB +:100CB0003553C574FA6E664D328C74F63EED2E7562 +:100CC000C5042B639C36BAF21EF4E7D61679CCEF36 +:100CD00086F1F3A660C6C0F373D08311BC13A97C60 +:100CE00089E7432F0BA652F89E3BD2ECC1F8D40FF4 +:100CF000BE7E19CD7B65E43C19F5E215453CDEF975 +:100D0000FAD7BEB998017C9D0F84589EFCC19C8285 +:100D1000FEE0950FB90D8C9B5EF58D10CD7FE583C0 +:100D2000571C5805E348FF768EFE0AD9C16D04C7EB +:100D300095DFBEF84719686FFBA99B7CEAB6567130 +:100D40002E90494470FFBBC6CB3E8571E02EC73E56 +:100D5000E8ABC990BD71E5C1583D7D7BDBE4171957 +:100D6000FAD7D1BDD94FAD2E705ED22BF8FDB88821 +:100D7000EB4A070F7D92E01BF8270FAE4BAA4CB34E +:100D80005F07F17BDC1EB31FC50D32F749F43DB69A +:100D9000E3F7ED5330BFE2CA83FB94F5747F40E480 +:100DA0001708387D075B3328273E5D8F613C67F964 +:100DB000371E28C2FB86577DE3DDCEB3E1F9556EC1 +:100DC00036BC0AF4C37507DD2FE23D0D9FEEB0532C +:100DD00045DEEAB5A482A0FFB77E73DECFE1BDD7C2 +:100DE000400F61AADC6B83BF56FE1DEB601FA31E84 +:100DF000BAEE11BB5C5D77F02505D7A3B9D870E5D5 +:100E00008730EE6BB793C7F567C9701EE872DD4097 +:100E100037F973D73DF4FA73281FD739E4F335FC5B +:100E2000253ADE4EFE6691C32F3B5832257BF6AA4B +:100E3000074EECCD001E8F3FF8BBBD19C0E3D57F38 +:100E40007E6BEF17312EF87D9F86FAE5BAAFFD7AFB +:100E5000EF17609DAF3FE275215F5CF9B5DFFEE201 +:100E60008B507FFBD1B9D3D04F7A42C8FD1BDFFC3A +:100E700063B90EE36CFEDE87E9FBDC9B1F5E4EDF91 +:100E8000E39B68FE375AF0CEA3159E1CBFA7F488DB +:100E9000844E04FD41222A1D7460D96105E5EC6D84 +:100EA00089DFCBBB76E05D05F9EF88C186112F8F16 +:100EB0003DF4D2912F40FD75A08BB7005D60DD330E +:100EC0005C746F233F03E3FED73E74F147CE69C4E1 +:100ED000D293D0890EC3A4AFC7D1E769A067E31846 +:100EE0003D27A4DFD7BB295FE1BA01A0DF82F1F47F +:100EF0007B1D7F396B3CFD7E5B64F773DEBE6F4DFF +:100F0000388F8D0F9514B4734D3FE79A873F36A9FC +:100F10003FF586435E27C2F346E16F7CBBC8F823EA +:100F2000EEDBC71FBCFFC01D80C7379EF5265601EC +:100F300062DE78E0C44C3C4C7CD533FC49C4C3F041 +:100F4000F7BC5A3FBC73E5F77E46FBC21B0FFF5848 +:100F5000D1497FB32209F4E61B6CF4E729B4FFAE54 +:100F600015E76CD7DCF3DFE73D07EF5F83E766202B +:100F700047D7DDF3BA8272A555B8E93ECDB5B98F32 +:100F8000AED4312F245746EBBE36C7E5E1DADCA1FB +:100F90004B30EFDE89F744D865E6138DD2555A827F +:100FA000F47CF13CE4BF89E869AE5FC3F59F8970CA +:100FB000D8E5753CDF0C2BA8FF2DF49D897CF6AF9E +:100FC00052589796C27A3DC30AEDCBDF746BFB1380 +:100FD000E3E98E7EEF3AB283B6163C6776F2C3E958 +:100FE00061477C4BE0E354F27CEA75BC3F3CCD08A2 +:100FF000EBDC8F72E0AB35AA907DEC2E52E87BFDE6 +:101000009D1EFD6719E48B1F7A583FBCD256B498D9 +:1010100015FAFBA0E847E99673154FD0A0BC508F96 +:10102000A6F3EFD88CCB837239BED7C7EF792A19D4 +:10103000F0671BC7DFEB74DA199F731BCFA662E45E +:10104000A75D1A2EC3FB9CE94786302EFD8BCF0D82 +:10105000A7187E1F8EEF73BB42F673977561AED7EC +:10106000CC7217FAD938CFC7CCFB2449C99AAF48FC +:101070002C087ECF86F00FCE27BF07DA915FCCE732 +:10108000B0739F9FB7EC83E6BC9E52F11D9F4AF15F +:101090001D9F141B42F96917C2B359F0F7155AF294 +:1010A0001A843FA00D52DE37FA174305F655B3EC0C +:1010B00012F90A9D2D292A5BC28CC60996A62966BB +:1010C0000DFECBE7713C982F87F289BE02EAD7F775 +:1010D0003FBEC678BE10CF9B591C48B58517D13985 +:1010E000149D97792B797CDBAD88FB5D0ACF833427 +:1010F000C7D91EE67EA3599A7170A562E3C17DA58A +:10110000F85D9488E08B24F9AD378B7E805FF24FD9 +:101110006E935886EC2E49E5743198AE95F3B83C41 +:10112000AEC70D6E1CDA811E5828A3EF1766A8F40F +:10113000219FD1BDA73CD97703E1B8F83EE3907079 +:10114000F20CE2EF708249B8CFEC0A25E8EF1C649C +:10115000D6316D7FFD587BE739E2FB8AB5BC1E496D +:101160006A0CFB7F2D3C4DD8C34686E272294DC3E5 +:101170007EFDC1E401C47B194B513CA0114A5C4780 +:10118000B91AE4F970CDF6FBB0A3FC596C8F0F7C53 +:1011900043E06120CCED28CCD1A99866BBEFC8AC68 +:1011A000F71DCD384887F88E56F14C6D1DE6674F18 +:1011B000180789A7CF48A07D28E21F1D2DFCDCADB4 +:1011C00078058F0F9D2CE3F405B93A1CB6C8AB54D3 +:1011D000DEEC887FF0EF71458A2E95300F413B831E +:1011E000BD4971EECC6BE7E33D146D2EFB26D6DBDB +:1011F000E457CFA738C542212F99DFD9E4453B53A7 +:10120000C42F96D8E317CF8AF5FF18F91BF1BD94C8 +:10121000FBAD2F8535339F86FCE21F87855F6B70A2 +:10122000BF79B4BE82F71FADD7F1F6BFC2EF7D29FB +:101230005C206F07FCDE97C3C40F137C9F26C4F3AA +:1012400043C7EBF53EEEB78BEFB0B4055D514CA153 +:10125000D26E2BAFE7DF095A721453F4EFDE542A33 +:10126000E484EF2F3213F102111F35E7F19FB3FA37 +:1012700059D4377BC08AC538C06D52EA76AC672432 +:101280001FDD93DF2D093DF7893942CF657C73D08F +:101290007F0BC5E97EE11EF476B03DC9FF6ECB8EB3 +:1012A000DACDA48FF76476911EFBBF556B8F980043 +:1012B000800000001F8B080000000000000BE57C90 +:1012C0007B7C15D5B5FF9AC77924392493F7C99348 +:1012D00049022440D093049057AFC3438C98EA014D +:1012E000B5A26DE5F05022842446ACB4F5960941D0 +:1012F00044E0E34DABD568B13D50405B899F008130 +:10130000466FE01E9062B0680345147FB68D5A1593 +:10131000E591988AD85B6FF9ADB5F60C39E72411E1 +:10132000FAB9F7FE75413FC39E3DB3F7DA6B7FD73D +:1013300073AF39E6B4DAE7BA5200CC552EAD01AF3F +:101340004F04EA7EC16DD5AD0DD7009E8A8B07187C +:101350000BB0E2DD2141970470410E1E2EC0EB3C24 +:101360002D172015E0E9A2191D0500F06F3EB53CD0 +:10137000E801881D39C33DBF18E022FDB91660A6FB +:1013800026F17376BF7DDFBE7E571BC2FDB11365AC +:101390007FB0B87FBFFDBEDD1F3B5235899ED58132 +:1013A00063CD0A76FDDB9403DA74A4F7E1948353EA +:1013B00014A4A3C01A6F75911A725D0560ACD804AD +:1013C000FE31008E141302F83E809FDB176302F992 +:1013D0001A3EA74E90DFA3E754AD96FB9BC0700367 +:1013E0002EE8E384C0086D1CF2037CEEBC3CE4C331 +:1013F00077C717053CB4DE2D8769BDF8671A8CC71F +:10140000F7E85F3AC04F250346205DE67C8FB615AE +:10141000F9066E83E95474485A9708F024D24A6D4D +:10142000732404B7E6D14BD88F74C71789FEA7245D +:101430001F0C0F7FDF30740DC797ACF1013430B053 +:10144000ED00EBCFA800109D2E307112801868E1DE +:10145000B6073AF97AA396CF7C488060F90889EEFE +:10146000071F1D81F3A54E48F1ADD3FBF89BEAF6AB +:10147000980A6E31DCAA9EE92A12435FCCA7F136A6 +:101480006A1F8D0690A99D4C774D1EEF09B7F9286C +:10149000CDF77182FF06E24FC35DE3DD79385EA1CF +:1014A00086448FEBE38F1BE9A5F5A5FAC047EB93C4 +:1014B000E03BF5A1B17CAB769DAFFF7CB43E5A6FAB +:1014C00096B5BC7430259A87F8EBC0F7322A21B85C +:1014D0000ED7910D9D12AD2F177AF8AA8326D3351A +:1014E000D508D4431ED1FDAEF6511CD26DCAD2C56B +:1014F000D17D745F6FD187F4C7D0F30DD441380F1D +:10150000C8D67E0013F744407E7E5D1EAD47E7E7F8 +:10151000F1B9F2160FEF67CCDC217DE3E106C54B94 +:10152000694487F8E382F7A45C7CFFBC5781753877 +:10153000D5758A87F73BA60A586E728AFFB23F1F9D +:10154000FB21E0311226109D9DFBA7613B6BAABBDE +:10155000C7247E4017BF9F41EF633B678513423628 +:101560007FF07FCF586CBBFBDA19B0E133DAB72CD0 +:10157000087B0EE9CE78F79377E12AEA0F7B9ED6B7 +:10158000A77C2781F0FB08DD98D85FCE56BCFB49CD +:10159000F2C1B0F91ED686A4D0FEC33570CD45A5E4 +:1015A000EFFDE8F7ECEB8595A7920F2238D7C41A28 +:1015B000EB49AE203B8988803519426EA29FB7F96E +:1015C000684EABFD4517E17E950A0D6349DFFC8847 +:1015D000F5D10AD3A5B9F07A21263708844FA8BDE2 +:1015E00086E416AF57D3B5616AC9DB29C8A7D4977B +:1015F0002BCACB711E456D914856F6DFB6E624F135 +:10160000FD19907DF43E18A06B697D72F4E5BD492B +:10161000700FF6FFBC36DE4710B5E52ACE9633CD07 +:10162000A8A77DB5E51A4AFD2C4F4EB88FE5CC0D25 +:10163000C108398B871EBEC654F940426139B06279 +:101640005A629787C6DB30A0FCD8B8E85D8EB8C870 +:10165000A379462750DBBB5C8520129911F02784C3 +:10166000685ED338E645BA6C68261AF86CD8FE2452 +:1016700097BB410DC343AA5F8B68E34264C293D713 +:10168000C263FA5C6FC4FBB05A7D9FE44FC7BF24AE +:101690007F3920DA365E1C60EE7F16E9CA9AE0D206 +:1016A00042F87EC622530AE178D9014FAD827CCF41 +:1016B000AAC5E7C3E6F346BD1F8DA7DF139EE298D8 +:1016C000DD1AE109F9E0237DD07B5CF1B9F0B6DAEF +:1016D000E562BE64225F880FBDF422B673E643D094 +:1016E000CCEBCF0F1B6FF89F8FE8CAC571422487E0 +:1016F000DE483EC5E8917C8A2B8AE4D3105F245FE4 +:10170000F2BAEA79DD8770DD80729A30418FE4ABFE +:10171000C5B722FC3B10DFB22B5BEA693DFDF983C4 +:10172000F27AD5E5F9F4B92D77169F144FF00ED261 +:101730004B59886785EC892AF0A16A5D27E97E36D6 +:10174000DD4FE1D7FDEE34163981DB28DC5FE2574F +:101750004A63FD3DF87C0EE29FF6D128CE31171387 +:101760004EB04D3881D240945D09F2350E427C7FF7 +:101770000874713B0110EF0584DF60BD9844D8D533 +:1017800038D2BF8CFB0F205CFF62BF49728D72554F +:10179000FB0CCEEB7057840234AF02B5B467688F90 +:1017A000531353893E389887EB74174190ECBB0371 +:1017B0006A41CA0B1F475C2535C4FA5AD988CF91B4 +:1017C0001C4DAB5D453890C8BED03A36A27DB1F90C +:1017D0004FF625DF60FA112E6FD37B0EE4DB3AE67D +:1017E0009B160AE07C4E6BFD975BB7A2F558FCD9BF +:1017F00028EC0C44CA77C186503DE9B342A4239932 +:10180000F5BA7182703BC2DA87EC15012197590A4B +:10181000B8105FF91BBA24C20B3409BCB8F12FD140 +:101820005BB0A245A2C1F33744E228CF8C6C83D2CF +:10183000CE783D8F785590FE1C470BCBE92F504E4C +:10184000C9AE6445E14DD73BF71762BF6E08BB9345 +:1018500067826F5118FE7202F1BE456500C3694F81 +:1018600027F6C7677962A45DB87FF6AD8CC75F3C89 +:10187000B43971203DFFC24AAF6FD170806757BA4B +:101880007D8B107F852D9DA1589CBF78ADE047FED4 +:101890005CFF33A4A7F3C1538B2ED0259C065702BF +:1018A0003FFFB3951A5F5508CC4D447BFCCBEFBF8F +:1018B000BCCA8DEF8D5A1B988ABE151C928D3BE8D1 +:1018C0003E3C91C2E02F5E91ED5B84FB317A452E68 +:1018D0005FA3ED4DCE03C78FAEC447B73C043AE1DA +:1018E0006BE8972EA3A598EC85586F01EEC7026CA4 +:1018F00057250ABF7354A2FF1EC265FE5A9FCCFE35 +:1019000063A5B06B83F12D7ABE9F4B3097FC876740 +:10191000971F9B7D3DCEBB5A4B2921739AA71AB1C5 +:10192000B3D19F589928B39FE15CA1E87F09A377C1 +:101930004DE39C043432E0741BB286D7618D53E5CD +:1019400098B1AC487C5B79D600DC3A84F027B3FDD3 +:101950007F10AF1791E4F4C4C08F981F5A6C9FFD9D +:10196000CFA7F19D3C7ECE033362691D5BDC5D1227 +:10197000C9418E04B56609E2B22A723D79B570C0DC +:10198000097DF4D8EBCB757BF83A2A31B08EE6218D +:101990007ED1BEDBFC5142092C97439B84BF46F8A5 +:1019A00074113E1B597C20ABB1478AC17D9BA95461 +:1019B000C476B13F6EDC347FBC259A787F4BC0C7BC +:1019C000F23122430193E4D8C23FAA43CB4F34649F +:1019D000D233D90F85E11AFF1F66E9D71110261FF0 +:1019E00088F761E40FC5537FA41C44EF5F7615E2CE +:1019F0002C4CAEA2D71B2D07BFB2E5201D322E22E4 +:101A0000F1E7614AFA757A1F3E7251D14D48EAEF0B +:101A10001FF5E123C8FB6E8F5F128A9CDF1E6730C3 +:101A20007FAB4F0F9A06EB332F688467F0997748A6 +:101A3000A4D764D46F8497A838420A1CFA9B847C8C +:101A400072969B928EFCF756044C89FC8F72F0E9DB +:101A5000D86F1CCF63BF3856EFFCC63A7C25B9C29D +:101A6000949C347E76E73748DE3A123D3CEFC51849 +:101A7000A383F63F99EC00FBE9B69F54CB5737346C +:101A8000F23516E31253E9F397EE4A0C1C2579B2AE +:101A9000FDA67CDC6F8F4CFDB5BCAF85148F207D1F +:101AA000D1FA3B2E5ADF7A9206F463A3F9E352038C +:101AB000A1057A7F3E20D9BA7F48DFF38FE4409BAF +:101AC0007435F667237FE2495E710327D1305F9456 +:101AD0001BC300D6DFB6C39BCAFE228434D4DBEB23 +:101AE0006F90B8DFF393F8474D64C9FAD9A29D9877 +:101AF0001423DA77603B137164F5CB6E4D0E221F11 +:101B0000DD2932DBAB0BA9756E40FE3F923DE76BE2 +:101B1000FDEA8695386161DF7379AA8FF7FB11FCC6 +:101B200037C957F4F3AA478E881BD68F996990BEA0 +:101B3000C72DE8217B6FEB1975B9FA9E0BD7B90653 +:101B4000C7253A9CEE5AD0F0EA6ABC2FC4F889D275 +:101B5000336E4BCF7C8FF44C1EEB990F691F957041 +:101B60003D037D7AE6438CF988FFC56335F6E35C77 +:101B7000180702EA99A4245DEC8B1E92754F9FBE54 +:101B80004EC2ED247970AB7EF0E17D47792D50BFD8 +:101B9000ABC26F103D2EC227E31166E4101E8B808E +:101BA000E37FD96DC2327C2E2BC9C3EF232EB392B3 +:101BB00070FCDC24CDF2177C929FE3B65AA0EB5D5B +:101BC000897E3D099FCBCFF6AD222C506847F82F78 +:101BD000F458FA0AD08F182BFC9401FD08FA63C759 +:101BE000E17903E33D3C3E4820BFA16000FC6A2947 +:101BF0005724DF8F398DC4EBF0D186371CBECDFA68 +:101C000095C74BB6FDB4EDAE6D476D7BBC2829CFB3 +:101C1000E28F88AB18EFF8FE86774707A5305C6D3A +:101C20005884F16F31E10EF18BF3ADCB5EB08DE2F4 +:101C3000E30B390B629DC8BC85490AF37D5BD395E4 +:101C4000E1D87E4E5131FC1AE0F968FCAACB6593CD +:101C5000F233D1B875BA036BF369DF8EA39D40BE32 +:101C60001436DE776020FB688F2BF7C7EFC2A4AF76 +:101C7000B1936D89C622EA7FACD457E91F80CE1F8D +:101C8000260BBBFDECF22762488F3EBD48E4096C91 +:101C90003E3515219F285F36B28EF9B4D6E2D37354 +:101CA0001BAF8C4FF673FF037C72535ECA63F1C99E +:101CB000D3B81F947F8E4F6BBF8E4FEBFC9BD7E644 +:101CC0008B3C8A6F388EFF845F0E5D8BEDA72BE512 +:101CD000EDA4E79EF06F760F275C351DC88EC3FE1E +:101CE0006DC943045EB450073D670E93F5ADC8A7B8 +:101CF000475521878F34C9BF34C3F0B72D5BE6BC8D +:101D0000E123D90B621786F1615BD3016F381FB7EE +:101D1000919F3540FEF09BC912CFF7CC2299F11D5F +:101D20001380A08CB766A04EA776468A88C3330C72 +:101D3000D1263DA063FFC192355355D2B38B900796 +:101D40003AF92BDB43149734A11E7509BF9EFD168B +:101D50003B6FD0140872BFC3CAE7C47595849E4D0B +:101D6000E98B23638BA3FDF629407EFA798AA729A4 +:101D7000BEDE18D9EF88F25734C317223F3FC1F2B5 +:101D8000F395CBC4918933BA389FB92FE9929F322A +:101D900094FC9486956DF0C170B894CF41541A2D7F +:101DA00003E0CBF6578E5A387FC6BF4A32F0B90DE2 +:101DB000F31B25B217195F29EC3703347AEF1CD3D4 +:101DC000F7DEBB49B1AC573638C47E941CC41096BC +:101DD000F29C53B412F21FECE7DE4912FBB221462B +:101DE0003C37EEB8A10CF9BAE786083F7AE25F4CBF +:101DF000257E80E7DA894ED2676A682EEDE3A32557 +:101E00004E8DF4D40649E84FF375878577B1CFDB63 +:101E1000EED636917CEEECC85F5F4C3808E8A5340E +:101E2000DE4E3D20E77B06D79F0792455C30A21C23 +:101E3000EDB0277CBCD076613F42DEEF203F5E4FA5 +:101E400016F668672CEA0FE653207376189FAEB734 +:101E5000F86AF3698F1E583F86EC1CD241C3246593 +:101E6000D7825CDC37DFCE6C31DFCEB765B6FF19C9 +:101E7000BE13DBC9FED8E3D9F3ED891D585FDD60E1 +:101E8000F1C7E6F7CB7A70FD5561F3B9CA23E77362 +:101E90002DC2F9689F4FC99CC71E6CBE970799EF6A +:101EA000467B7DD6BEEDD3BBD65F8DE3C4D27CC866 +:101EB000E7589ACF33C07C5FFE441A1226C7479278 +:101EC00085BFB9CFE6A31AC89C13A6AF32ACF79F63 +:101ED000433DB310C77D74F89A18C2FD3629C87AFD +:101EE000CF2C91612BDEDFB0B137447992E70C60E3 +:101EF000E94D9C604EC5A013FE353949BCBF711A2F +:101F0000BF27A98DF52AE5599A38774FF6F16D5A12 +:101F10007FAE9D2F88F223332AB4D07CBC9F6CE522 +:101F200013BD4DB5AF8DA4BCEF0AD9C77E6648027C +:101F3000757C5F5EC60D26E7730AADF13202DFE302 +:101F4000BCC546056A15D41303F81B3EB0F3E2D4B2 +:101F50002E3538EFE240BD1D9E8FEC9F9F094DA5A9 +:101F6000EB5052E90A75199C271F6EE56BF20C7D48 +:101F70009A8AF48C680A4C237A9296E36B79E4CFC0 +:101F8000D5F2FB124A0EF94B7105CF265ECA634E9D +:101F900006788B7C17E4578FED5FE17E90FFF08F22 +:101FA00024915FB7DB9EE4C8B671642AD0F9036A56 +:101FB000871EF2AB2EC6046E494E25FFCD30689FBA +:101FC000DC86BB87F49A4BF3F33A9FF1CB227FFE7A +:101FD0007F4C5F2F4FB6F2A496BEB6F5B4ADB707EF +:101FE000D3D3145B53FC71F4F105379838CEBB8919 +:101FF0004625F9C11446D23E61DC559F4CFB716BFE +:10200000E37EC27701C50F34BC479769FC68DC23C7 +:102010008E394F1683388501E2483720EEC9FFB26A +:10202000F38651386F72887C9C8902A44C623B21F4 +:1020300051DE3DD77EFE32384798E90AC5958407C0 +:1020400085FC6C7340FFDA8E23B355FB3CC8C77820 +:102050001F067EC67B26C65D84F3FC197A3DE51D0E +:1020600046587E460EE2C6E4C56840FEBE0B71B619 +:102070008EFD95F7590F0C867BC4AB49FE8E9BE213 +:102080002981E366E62B18407E8E03714CEB5335B5 +:102090005073685C2B8FB9CE3F2D86FAB7F9E416E2 +:1020A000D27FD1FE0F688DE5C4E76DD9A51CD73569 +:1020B00015FD2486FC29F47FD89F322BE5E0F0BC87 +:1020C0002BF28338EEFCE6E33771DCB92111D85EE0 +:1020D00098C39D7CCEF52EC55F48EF949ECEE9094E +:1020E00029844F61473738425E5F313D1F9ABB807C +:1020F000F4E6B3426F3EE78FD69B41F742BC6625BC +:10210000278AF3C08DAB6EE0F85A35595FD8F3E7F4 +:102110003FBE8FE7074FC84BF2BF61765D2CD92FCA +:102120005BCF463F372FD638467C3C32881FF77648 +:10213000F2B413A42F7E6BC589FDF2C033EC3CB022 +:10214000561F91079E1185331D38EF054976BCF760 +:10215000DFCC0713FE94C1F3C1DD7BDFCA3171FD13 +:102160007FBCFBAF43F025F8B3DA3384F87CEAA1F7 +:102170003F0C217FEA8F0F29E574AE7D97956F9D07 +:10218000B7F2BFC653FEF1BF2CBB76478A719EF1F2 +:10219000B5229585EBDEA042870F97F4C6D2E7E320 +:1021A000188C767B594B7244DBA663990B6AC90E77 +:1021B0002FDDBEDF9985EBBCF7F944CE439EA283A9 +:1021C0002E5CEFA9D69C4D74CE322E45B6E6F53B7B +:1021D00052C6097A085F7F6E774188ED6FA743F892 +:1021E0003DC64DD2788A1EC49F68BA0EEDCB72CA26 +:1021F00038EEDD12EADF44BEBD660FCEFBA175BE30 +:10220000194DF7DD7FD49C32F6DF3D157A281FB9D2 +:1022100074BBB4E6417C7F8175DE14BDAEF9A623A4 +:1022200042FF2E6CB9CFC9CC578A67A6939E5E2B0E +:10223000B11E5BB836F23984C5A17FC77117E1B80A +:10224000B4BF773746F6F776DCBF660FF6EF6C73F0 +:10225000B2DE5E1C954F8CD6DBA3522C7D3D1EAEAC +:10226000217DDDDB3187F3E183C577B6BE3E857125 +:102270001E82063E5DE9E6EB99950C36389F2CE40C +:102280007369DBFE43AC0BD5CEF1243F3B3B3E886C +:10229000BB13BBEABC22BEFB974D7F6DD883DD65C7 +:1022A000E04F08F13962C841F2772DB8750FD2B707 +:1022B000D5CA07977D89EDF0F535EEFFEDBF73BC0C +:1022C000E6A9DD8A7CAD43C0AF28EDA3AFCE2BE2FB +:1022D000BAEF80FAF9D7ADFB067BDDD639C07F7740 +:1022E000DD83BDB70CFDA281F4812D1FE72D3FB327 +:1022F00061EF533333715DE77E2CF95C48C7394792 +:10230000700DB77F2AF9EA7526FB04A4F5E115974D +:10231000CD785B4CFE08E23350F943C6C521E40B8F +:10232000D9FF407B0EF77BA7237E512E17579E7E49 +:10233000479C439B5ED94BD790579E30000EA3F02D +:10234000168DAF738EAE5C92FF685C9D1B44EF7D73 +:102350003745D4712CD28D99949FBB1BFC6B3421D3 +:102360007F6FFD6FACE740EBFDA011FE3B54AE5B11 +:10237000283D2CE2E6D2D79D41F2FF77393ACFB122 +:102380003D392CEC16F5537C57FA5B4F909D83AF8B +:102390004CD627257FD7D89E9E4D326FA2F64ED4BD +:1023A0000F9B59DF2A1C4F94FCBE48F4AF282BA08A +:1023B0005498F9A5C747F6E9DA197FF9F6111E779F +:1023C000F950B2B3D7FE2D5622FB79393E1BC132EC +:1023D00065D2583AF5869E045C4F69F083E993D93B +:1023E0005F77D7513B7A1FCA828A1AFE3CB91BD449 +:1023F0002E338A7A483F45EFCFBDED2E95E8BCB726 +:10240000034AE9DEBF7C15E9FF951E89F2176DBD11 +:10241000FB9BE63DA4FF97FCBF9FC4035E3F511B9F +:10242000D368FF9BB73C1C6F901D50CD78DACF4F1F +:1024300082C20E44EFFF47299265EF44BD493593B0 +:102440008AFFAFED59F303A4E70BD4AF446FF5C196 +:10245000FFE4F621F43FC04BE376CDFC21AEE7DE8E +:10246000F99EDA7AECAF698B5CFF92E77E9AA68BD5 +:102470007A962C6BFFB3E8BDEA2D0E3E4FAF3EAE11 +:1024800070BEB5067A186FD1EFD7B47CE0241C106B +:10249000FFB227F7EF47183A496FD558E7323507AB +:1024A0003F65BCD544F9C195839C33BE19A55F90A7 +:1024B0003F5C2F60225D94BE80A0B0870DBF7299F3 +:1024C0006EA4E39377D237515C7066CBEFE2A5E25E +:1024D0003E7D03B08AF977A6A5202130007FEDEB81 +:1024E000394B2FD96DFB7C466FA343356CB68B6B94 +:1024F00033DA4B37D25175D2C5FE63D5D15E962BF8 +:10250000C47ECF7094BB3D6F1F481B83FD4B773853 +:10251000522AC472E2C94EDAFBB664D78733B7D306 +:10252000FB68076368DF5A2FB09DB4E572E90E2996 +:102530008EF2115541878FCE39A3F93ABD65BFB3ED +:10254000CB33C0BEB5BC3793E2E7865F5DE07DF973 +:10255000649F04E979FDDFAFDC7ADA49F277063768 +:10256000484BA47D54E63B13FA3F77664B1CCBF1F6 +:1025700099762948E7EF97DBC7DDC40381F7175F3A +:10258000C67F57BEE3F2D1FA2B5FBC9F71FFB15AF1 +:10259000CBB8AF7AF6E134F27B2A1D669AC6577142 +:1025A000BFF2E70F301E171F7D200DC4B96006E98A +:1025B000235C6706ADEFEE8DB7F1FAEE8100E3B173 +:1025C000F259C54F79C1F32A94EF18605FEF4C15AB +:1025D00072E382FBAE22B9388F23D179D8C774A8B1 +:1025E00049FAE6981224FDE582CD7FA278E07C6767 +:1025F000AA44FA4839EA70D3BA97EF4D643C5D9D1E +:102600002AFCA1E947CFCFFC01DDCF536B3142A4B7 +:10261000F59B16BFA48BACD740A7F8A786FE954FB5 +:10262000E3F63ABF8BCF7F8EF7A9DE21EC79E6D7B0 +:10263000C79B5DB174DEF4711A548A3C1A1CA3F86E +:10264000A75A8C0535CF7F3CF3671477790B64D29A +:102650004F8FA60A7B47F79F21B95BE0A9A53AB245 +:10266000CF8F7FE0CC24B940BF8DEA35AB839FF19B +:10267000BC15127C46F8B0F951D3E68A38A7A9D91F +:10268000F26194FC46F6A39FC47CAB81049DFCE2FE +:102690008F9D3D33C99E98382FD527DEF3842B229A +:1026A000FF5CD3FAC93B54775613558F66CB9F1DF9 +:1026B000C72EB6E43D7ABFA2E5FFB6D448F9878DB0 +:1026C000A957745E52E5086E23FEA07CFA28DF5DF0 +:1026D000D57C3E423E4F6F7FE5C49DB88ED32DB66C +:1026E0007C46EAD5CA9D1FCEFC19C51383C8E7698D +:1026F0000FDE1C33805CE2FD01E5D203ACB7FEC700 +:10270000F469EB7AAEFBEBE377A41C2E1E449FAE7C +:102710004C8DACDB380FC509380D7CFAEBA543B9FD +:10272000AE218ABFB6FE8CD68BD9A93AF3395A2F7F +:1027300082E55F5DD2732F9C65FC7E91A100F9D18B +:10274000366E2120708B6D27F9675A9A0CD4AE0E25 +:10275000EEBF95CEA5FBAF3B929FFDF84E3928B654 +:102760008F3D77119F15395E9C7B635C4FF9A00606 +:10277000B28F25449306B48F300D5AB81EB5FD555F +:102780003E078F8EDBCC6950544BF91667DF39DB7F +:10279000D6143E778BA8937E2AEE47DCBF42756B3A +:1027A000945FFA7B6A9E45872F44FBF8E02B50BA72 +:1027B0004EE00BE8FCF2C2216CEB54DFA42BE17677 +:1027C000C8375DAE1D28FFDE962AFCDAB169627D4E +:1027D000EF13DFF1BA5AF15BC99E163ECF6CA0FD34 +:1027E00026BA12E339BE7758F9111CD94BF525EFFB +:1027F0005BE3F8E2E4BF220BE08D9FBE3F4BC57D5B +:10280000F695C9F71760FB8FA9E7447BB2BC2B1F75 +:10281000DB7F4EED16EDABE53207AEEB39E89935CF +:1028200003F1A4CA3B2A492FAA32680DC8BFD5F1CB +:102830002DB5D4A6BA8355197DF481BE2B40F4ACD6 +:10284000C9008DF8AC4E03B6236ABC3348B4AAF273 +:10285000D4B9E1E3AC771AA738BF94027A3D8E135E +:10286000E76A0950DB89E3521BF482E9D45E938363 +:10287000FA1BD757AAEAD3392F85CBA478F5D2BC57 +:1028800060E894BF6A4874FB28AE5F9D6878691F52 +:10289000DF277CA45EF9B5C1CAC72B71625F9404BF +:1028A000B97607F967961DF834D5CA7B6A625DDD93 +:1028B0007B0B37893C424F2EC9A7A26C6E265CF475 +:1028C000D4ABB03985FA9F6B26DCBCE5746B14C7BA +:1028D000DE9EB0C1310A492E75E7DE4FA07B47DA94 +:1028E000FE005D7F9716389FCAE7B110227B74E720 +:1028F0005DCA661ED7533B84F6110CC4F358AE472D +:1029000066FF1E02886792A70388E71212C1C87A81 +:10291000ED683A9484ED4CC7ED2E41C7DC607E43F0 +:1029200017D251E20AE650FC88F33BD270FE3B5DC1 +:10293000C1E1842FD3031D44C75BF3860A3A209B71 +:10294000E584E58EEB37CFBC48E3D5E0F874EE7C48 +:102950002EF6E70AF14342FD256508BD3A3F8D5941 +:1029600064D5AF1B0D14774EB6E27FE814FEB25D5E +:102970007F0ACA5769F4F0F9233290BF5F7A30B208 +:10298000BE67E2919D4A28CCEE4D8CD27B93DB4E04 +:10299000B33E9C7C99785D4FB3F4602664D23A5A7A +:1029A000A2CEC37CD679186E831A7E5E63EBC379A0 +:1029B000B1D30A894F15AA784E07C3E07A5E9F2EDD +:1029C000D3BEF41E5900A5D406BD0EB0FDB4E587F4 +:1029D00044CB776B945EB5713CE6B8B690FCAB31F6 +:1029E000C7611EADE752BDF02991F72EE972CB9C6D +:1029F000AFEA70709DEC5371573D3505FB571F765C +:102A000000C5BD76DD6CEF71AB6E56A96AA0FEF312 +:102A1000945FE70C9ECEFBB42704F00CF93F5E19DF +:102A2000F4307D1AA3C7821EC6AFB8A2A488B65DD3 +:102A3000875B266EC1105F66C4FB65DAF820E1E2B1 +:102A400090895E5236E517F323DF3F12593F3BFE74 +:102A500078E43E3B5282BCCFD758791F5F28F88A72 +:102A600089F44EA03C3AB627BC1BF9FCA4CBE4D5B4 +:102A7000EF8ADAEFE8BAE3128897598F5D8E9FA745 +:102A8000043FFBE28A00F3759C95EF4D3422F998E0 +:102A90005C1EC9C7547F241FD3E746F22D2310C9FB +:102AA000A7ACCA5111FD39B5A511EDA12B26453CA6 +:102AB0009F87862BBC5DB07656C4F3C31BE744B436 +:102AC0000B9BEE8C787E64704144FFE8E79744EE00 +:102AD0005B146EA27130A6A52EF279658A42E703D7 +:102AE000F43D04EDDBD56D3F8818DFC681897F0793 +:102AF000C28112FBA242FBD485F1AB3409F1906292 +:102B00009224F4DF7FCF29AEEFBB1C0E7E9166F9D5 +:102B100093160EAEF47B86DD967F7121265722FD3B +:102B2000ABA33F418714DD8E6C89F4AF391D5A1475 +:102B300074A41E8CCDDD4FF176D77DF13E2933ACE8 +:102B40004E07F57E836FA0EFA8743E877B42F1F3BA +:102B5000772E38649E8C767BB52CE281C764795ED3 +:102B6000F8B9EA4B69C2FF7F294DD8A1ACB8967B72 +:102B7000490FC89AB093AB655E1BFD31284F1A4FC1 +:102B80003968AE5F9BB77E4636D9C3AE221DF5D1FC +:102B9000AB4FCE5B5FFE2FE895C7BDC8F6A0D454FF +:102BA000453D0804B95D82F681F07CA78C7601A7CB +:102BB0009C9B52EB9074B20FC6A134E443961BCC9D +:102BC000F852B693F3E83C361152A4BA623A6FBC9D +:102BD000647FF48B65FDF9F9CA92C932F95FBD8B48 +:102BE000145E7F6FE5D367CFA784C917AEB5933660 +:102BF00058D5B9EEF5A453BF793CF1EF3585CF2117 +:102C0000DEA0E706F0FF2F974FACDCF4F810AA2304 +:102C10003B5924EA73ECFBA7D3845E3E9DA688B89B +:102C20006AD169E79DCC07F4F3D91FFD2BC7C95AB8 +:102C30003ED426A0FF03AB7BB9BDCE10FEE4453ADF +:102C40004CC2F7621DA6E921BFABFD3E537CBB64BD +:102C5000F2FDDBDF1279CBDBFF0E11FEDD57690ED3 +:102C6000EEFFCA9AB7B423308EF6F1661230CE93D7 +:102C700007C691DDF56BA0D33C7303F31F3882EDDB +:102C8000D91B24F6A3A99F9E9F837B4AFD7F00DF6B +:102C90009BBB712931E9829E5BC1EF20FFEF0404E9 +:102CA000CEBE8974BD95289EEF9140DF1C36DECDE7 +:102CB000D6786FDDB57437F9A7341FCD4FF4D0FC4B +:102CC000B335C8A7B63D4EF4BCB780E1107EA6DF91 +:102CD000417E0FFE33948CFD75275D7CAE52776F7D +:102CE0001C505EA66EAF8BF382DD4B2E343F8924E1 +:102CF000FE697ECF6E3ABFB6F9714793023AE2E5BC +:102D00004CB291944EB23621F98AEA3AA7FF7A2260 +:102D1000E3A96EABC013B2EF298ACF47753880FCA8 +:102D2000ECBA2197F0944E78AADB5A90CEF596F43F +:102D3000E800E33F8C38D25D74CE8A8C28E47AF3C5 +:102D400042A2E7E11451D7BE5A2BCD243E6D95DC4B +:102D50007CFE6B7FDF74393A49164DD493B73389C3 +:102D600000AF5B389EDB9E5C66F97D65E988C377C2 +:102D7000F635E7A06A85D7463E379CE3B1B157C622 +:102D800007D44B2F909ED1D10FA38FD1D0BEB17F4E +:102D9000D01D92992FA8975E20B9EE72B835D2A3B4 +:102DA00097D74B066FA61D4728B2CFAB929FD4AEE4 +:102DB000C411FFE2C989B7F50CCA49BC220B3D43D7 +:102DC00099568CCF46DB7AC8DC79E34191A78EF621 +:102DD00003A76F0FF703958D4AB1F04FF89C71B2BE +:102DE000F55D9BED1FFAF12FD987C2A6C8FC6A3F9B +:102DF000FF8FF25257E0FF05D223FD812BB5033B35 +:102E0000C94FC46B4B91D0572DA158F6074A2DFDE1 +:102E100005218FF51D61A4DF88FEE2B2F4307F3119 +:102E20007AFCFBD3851EFA3EC5D0F8DC0CAFB03778 +:102E3000AADA22BE0F9D0B9A49F117B470DE3CD579 +:102E400010F1561CEAE1049CFC834CF1BC533A5748 +:102E5000E44679FDD7F497D6AF4519750FB3EDC1A8 +:102E60004BEB5F41685CFBD5B572298E37F6B0C27B +:102E700079F7DE83A3B8EE77B0758F45B924E31EEA +:102E80003A3489FDA3EE0E2167CD49FAEF27535C52 +:102E9000715801AA478D51BB9C8903AC6B0FE96542 +:102EA00094A357D345FCE96E930CCA6FBB75110F01 +:102EB000C7685A09D7AB0780F39D677714707C3CCD +:102EC000C32BECDCF614FF4F492E3E958E8ED70AAD +:102ED000FAF86F8F5F4A7E7AF180FCFE5938BF5B4B +:102EE00042C7A6B17D29D765A5A43FDFED764D5336 +:102EF00019171D543725F37524E537F0564D48F062 +:102F0000E15C5B43D240F9E39AF4CE03C40FF87D51 +:102F10000CD0795ACD7FFC91E5EF85D9082DDC8F57 +:102F20005F7F399AC76B4D4FB4E2D44EA667945F6A +:102F300097285EA871093B71EE4B859FB3C71DD3DF +:102F40003655D1500E8A438D0738DE6D77E984B748 +:102F5000982D20F8D71EC37A55D57A3E22BF436DEF +:102F600077690DC8BFE6D89E3FD1F83D7B5D3A9D9D +:102F7000B7C4688D9044E70D4E61AF4722DF767A83 +:102F8000FAEEDBF3C5B43FC5C5D0881B83F2AA3186 +:102F90006A237C236C5F6778C577D56F5A386D8E4E +:102FA0000DC974EED383B1D366A6AB8F4EE0796DB5 +:102FB0003A47729EBCD98974A6305D1AE16624082E +:102FC0003AA1BD5027B951911EB23BEA309049C594 +:102FD00044D355731504D1C980C756C1257D43FA22 +:102FE000A726B6AFED46D96CCEB771DFB37EC694D7 +:102FF000F0362ACC097DEF9F7EAA77FDEA29B42E10 +:10300000613751DE8C70798B510D512F7A2BAAD6F6 +:1030100044923783FBD3708CFA89DC0EB17F70AB9E +:10302000C85B146D52FF4AFD3B421E1FD521247C14 +:1030300025BE83A9EE74B03DACFAC72D09C5743E18 +:10304000211FF8DE76BC9E9EDF3282FCAB3DF18113 +:10305000F384F3DFBCBB80EBFF3E6D76F82A90A4CF +:10306000A2972488C7F197FC2A86EB9F1E79BB376D +:103070007491E4F02589E3C0A2973EBB8BE6AFC60E +:103080007DA7FEEAF68F9D749E747DDB7B4EFAAEC3 +:10309000E6496FE01F240713DAEAA713FF2642630D +:1030A00003E51D513F07582EBC60C5892336D793D1 +:1030B0001CF60486CE41392AF646CA45BB25C7FB15 +:1030C000C8BF2A1C5C5F987080F373BB2DBF70155E +:1030D0001CCC227EEFDE7F47818EE37607C5F7FFAB +:1030E000A34FB8E71961B81BE115FA6184356F9BEE +:1030F0003790EA45BA97EE7FDF198F7C382DF5CCF3 +:103100008C97FE29F9CFF28E0B937FF427C371DEE3 +:103110004FEEA3E4AE46ED71727EF614B0BE7AE1D6 +:10312000441BC7F72FFC404B24FD013DFE6F53FBB2 +:103130008B379D9C8FDA6DE58BEADFFCE22ACAFFB4 +:103140007EB177E950E2778CD7C1F3A09C4C8B25F8 +:1031500079DC01AC2F6D792E267946528A35518F54 +:10316000544C72924772D2398BE577B7CCE7A528D9 +:10317000272C3728271AD5AF166B2837FC7E21EB72 +:1031800083E6CE63A3F87705707B8697505B669CD9 +:10319000368766711DFF5847E800BD3F16E7AFD779 +:1031A000FBE47BAC04FEF0F3E6BAF478CBFE08FD5A +:1031B000BB3A1D06CC5BC4515156983C85D97FD192 +:1031C000B6FD0373D686CF51BE0A8C3299FCF8BA8D +:1031D000D785DDA9FBEDA49BB78B36FB03E38DDA26 +:1031E000E9548232A1BC91CC144CF2B74CA7F09AAE +:1031F000EC8F8EFB320EAF06EADF29733B5F11BF07 +:103200007D608CA6BC67EB811B46533CD67DD20506 +:1032100031E45F36CF7A81EA99BA4FC6802CF5A7A0 +:103220009BF2C844DF60F8ED96BAE2291FBAAC6998 +:103230007C851A83F234D15ED7B88A903AF87BF64F +:10324000F5ACD75846B88BCB0C2C23FC761FFDCFA2 +:1032500034FA5C7DF7F1F7E3C9BF68751AA335BE90 +:10326000627C3780BDBCDD2BE282B1569D0EC92742 +:10327000E5AFCF36256F62F9343A6F223B738FA4E6 +:10328000EDA7F398C7BC56BDB31587DF2D5C1CA80E +:103290006CBD6526F9575AA602746E74CF138E88DA +:1032A00078798469721C538D100B225EAAACFA9156 +:1032B000CA28BFA910424ECAC3D4043CB5F4FD7756 +:1032C00074DEBDCA3A07ACBA4CDCFD98D7F2B70A37 +:1032D000A080FC2DC407E75F7ADE547C9BF1B643E7 +:1032E000850E170AF30BB2E00BFA35AB1392FAFC1A +:1032F000AE6B328D0F3253FBFC9C662B9FDCD32CC4 +:1033000005593E9E0796CF49A7F44DFC71B8699CBC +:10331000F0A6D17A80F1354935F9BC7592B700A88D +:10332000CE7302AA75928F7BDAA560909E0F8A7584 +:10333000A9F897FCCCF3B07D0DB99F13A187D7BF37 +:1033400098D6CFF54A51EB6F3A7A88D29CCB5AA2E5 +:10335000CE7106391FDD0930E0B9CC4E9B3FB990E4 +:103360001BEE8F42C7C0F1455FFEC9E4FD3FED1083 +:10337000F5D5C7ACF1F14F3CD5B97E60ADFF0D4B33 +:10338000BF02F8980FA7ACDF03A8B6F850F5BCC58C +:10339000870D0227F6F7C73510E4F52FB3D61FBD0A +:1033A0004E9CFF10C5CB8BD16F273C566E8CC4D979 +:1033B000128B0F4BA2F8501D90C4BC4145CC6BC57D +:1033C000070BC1FE23E85C62D1194DD75287384FF5 +:1033D0005B8AF8A1F3BDFF2D3AA3F7E9637B9F4613 +:1033E000C1A8887D2A4FBEA27D2A003D81E264DB10 +:1033F000EFB6F110FDDE4CCBEFBEBE49F89FAD9DA0 +:1034000007D692DC97EE5534F20B5A3B7BE3A9BE0C +:10341000A06CAFC2C740DDED65EB4DD487BB3A86EB +:10342000DD42DF21951E95591ECA5E2F0DC6507CC8 +:10343000F27A695C01D779E8C9347FF71161874B6B +:103440005FEF7DA382C79D9E42E3D41F298D23BFDA +:103450006197F57B27D2EB9FBF41F3961D56C7536B +:103460009E740DEE078D7BFDD3F3B791FFF10FAF87 +:10347000C85F1CEAACBB95F673D91159A3FBE78E64 +:1034800088BAEDAA6795A0CCF9E78752BE8DFDE713 +:10349000DB1D9AA0D7C1F3D7EC1D9EBC302C3E5C3F +:1034A00060E1B534517F9CE8828C38FE5EE3FA1C03 +:1034B00007DBC7339971BFACC0F146187997F0119B +:1034C000C4FD3EF3F2FD22DE6D96804CD721EFFD68 +:1034D0004E8A27CE4C7387689C337B8E3AE9BC7644 +:1034E0007AEB51513761D50DD978EAA7C73B63AD67 +:1034F0003AC74627EDD3B2A376BBCB4976DD6FF949 +:1035000057D55BDEE3F6128A13889E2D12D7A1BF32 +:10351000B2F7377C8E5BBD5DD45F2C69FBB193F055 +:10352000BA04F1A9931E8146D6CF4BDB9CDA407AD0 +:1035300065715364FBDECBE072528695D71C09237C +:1035400009975F4C15FABC25B4606833E5D7DE7681 +:10355000314EBE069F6C178F5879B4DE906C38AF31 +:10356000EE7BEEDC915E27D56BCC6CFF8CF957D1EE +:10357000BE7F06F1E59B10A8A2757EB33D4E233FAA +:10358000B6A24BE89359ED2ECEA37F135A5693BDA6 +:10359000EBDEF7EA1ACA939BD3DC3DC3B53EFDB41C +:1035A000D8DA6F805AE6C7193B1F806DE69F0FF28D +:1035B000283EEA7674B17C77CF17BF67001B23F7EC +:1035C000EFC6A2487ECD02A15F666D177AED46E890 +:1035D000E2F16F247EE3FCDD19A36F667F09E357F8 +:1035E000AAA7AEDA1EF97E75941DACC87044D42F1C +:1035F0000C66FFA3F7655986A52FAC7DA9E8117A63 +:103600006BD671C517C47577845615539D88CDA7A1 +:10361000E87DE9D0BFBE5EE90DCB2FB7DB375BFE9F +:10362000708B167CB20CD77B18B4A3660A93C3F5D3 +:10363000E3CB7764F039E5C90CE1379C1FF6CA5536 +:103640003AFEB3EAD597739DF91C873C9C4175A758 +:1036500072FB93E4E6BE9AAD400AC523187F90DC66 +:103660003DE2FDE0B1B2B15CDFD249E77D356A638E +:10367000059D73D56C77F8EA6916B5670DE98BD3AC +:103680007B259DE2F8EB092F488FBF5DBA8EF08253 +:103690007EFD8F697CBF91E860FF63860454C23968 +:1036A0007BC6674EE2EB9128FFBE6270FFFEA98CDD +:1036B00030FFFEF0B08284057455F574FA0478305A +:1036C000FFBEFA4BE14FDAF7AB519E89EFD5ED1211 +:1036D000FBC37DFE64BAC4FEE4DE079D14BF764BD7 +:1036E000DA6771C8904319C28EB61EF8BE93F451C2 +:1036F000CF54E8C9A77CADB49AE5A79A9D56BCEE15 +:1037000096C4B9DB4BE4BCA05E3D16CBF574E74E26 +:1037100088F326F24FA84EE21E011538B720C0F8F4 +:10372000A43A09C2F732A85AC3DFE32F845AAED3B2 +:103730008CD2074B8B37ADA112F87A58C5F1D62A37 +:1037400058CDD7D1FBDE62BD38FA65A7266B9CAF9A +:1037500070721E3118F67E7E7F7DB3EC32F9B29323 +:103760005138C6F5AC27FABA0F2B1AE5835A0FFC6D +:10377000EDE7547FD4837E783EADDBF25B5A0FC415 +:10378000701CD27DD413247E7E6AE1F58C95A7AFA0 +:103790009FA0307FE489E23A7ADF6FF20907DD7B90 +:1037A0002FE40670BF5FD8F79B5106EF7F50D443DC +:1037B0003F1F595FBEAC25B27EDCE6738DC567A4A2 +:1037C0006B04FD6E814DD76EB52BDE37809C49D2E0 +:1037D00001DE3F593A18111FD4BCA444FC1E1DAE93 +:1037E000671EE9C1D3160E10EF696C4F337496A7AC +:1037F000FA76B1DFF25E71C5F9BF25F2300E9EBFD9 +:103800005FFF34B38AE3C8BC38AE63E850C14CC034 +:1038100076C7DB318C9FEF1D5B52189E9F0349C416 +:10382000D7358E1EAE9BAB392A7E0FAFE6686FDAB6 +:10383000300FE9BD4D33A83EF8464B9F1CCA8FABF5 +:10384000245C9B346F3AE5070FF2FBF76788EF9033 +:103850006BACDFD35B65E1A8F5D8AC38CA3F74EF39 +:103860004DE5EF413EB7FCC6B84CBF93FC6F3B8EB5 +:1038700019CC2F0D8BB3C4790AAE93E469D7DBAEB4 +:1038800060854471F18513DFA6F51E56F9BBB8FAC1 +:10389000BD2E93E2B59A7762389F0181C0D514D7C7 +:1038A0007D6FDFE242F151FE2ADE8F2FF61D5ECBE7 +:1038B000EFED71B0F558B6F74DAE0F5CB67BDCE3BB +:1038C000E4F7A09F7323F93DBBDA1DECF794BE3EED +:1038D00096F1B6EBC8D8E402FEBD305F1C8DBBECA0 +:1038E000B0CAF582BB8E1C7FB202E7DDD57A1DFB24 +:1038F0003DD2EB6393494F95513C4C7ECFE161DC67 +:10390000B6D7939329FC9CEEFD319CB790205FE0E5 +:10391000058645E0A5AAF5B7EC0F54B52946386EE3 +:10392000ECF74A32551E675CA6CE7CAD6F910CC693 +:10393000C30E71AD6ADB9546EB58EA68E1FDADDF79 +:10394000EE10FDCDE20AF4FB02F89EE993793F7F89 +:1039500047B7701F5E93828BC8C0BF66C501AF9D1D +:103960000C0C253DF8DAD440215DFF2353C4F33617 +:103970003D264C63BA419AC3FB7EB6D531E0EF32A7 +:10398000EECD147A343E1922CE21EDEBAF33053E55 +:103990006639453E89FCB88C34EB9C8EED7AD70CA9 +:1039A000D24773BCC912D9F5E5D6F37FB0CEA74094 +:1039B000993284EB3DE83BAA44CAABFB1D641F6F00 +:1039C000B1EA956F3B38E9CD5BB1FDA20421291B1B +:1039D0009F9F20FCF6C1CE036CBA6E298FD46FB7BF +:1039E0005DC67F5A9069E9B7113042F8F59E38D22A +:1039F000FBE73BD05FE5F82438CC3FA6FFFA6DFD2E +:103A00007188CE8D50AF75A05EA3EB3F91A7AACD74 +:103A10001C77F97381FA916F715EE9B5FD275F4CF0 +:103A2000643D1B03F912E5F3FF9C36105DF530870A +:103A3000F77715DC1A814F7B9FCF82F83D87E87DB1 +:103A40005E9769E513A06B4D1DC9A5E1E6DF69AC82 +:103A500056826B8B0AC43927C5D735EDB381FD205B +:103A6000EBFCF3923D6DBB8FBF5FAC1F796135E915 +:103A7000FDB3D6773F4877AE2BCC3E9CCDF88CFB80 +:103A8000BF370D7A4CECDF3F52FCEEDBB21992757A +:103A90008ED7E9F460FBB65689F36B235A673B482F +:103AA000AF7F0BFD67C3C7EAE504D5C9DE64D9CF94 +:103AB0006BBFEA669C2DB3FCC77A4832853E4FE166 +:103AC000EBB2D6F756F3F966006A297F77F384489C +:103AD0007C1442E0E154ECBFBD5CF2A1A581D94663 +:103AE00064FFEDDF997D1D8D7F8BF53DD0E5F07591 +:103AF0003033D04CFBDADDD9FBAD313A9DE77D9C0C +:103B00004B7CA9B6E4C457A8B7D1799CEF775A4942 +:103B100003BEF37CB0770FB5BBCD1489CEE1DB2CAF +:103B200039294E0FECCD1476660F9DD7553BDD1A23 +:103B3000ADCF1E6F2FE54352FBE4D3970E65F779A7 +:103B4000C2F7558C633F3731537C8FFB9A2398CD56 +:103B5000DF8F145FD9F962FDC857AF227DF8DAFE16 +:103B6000C35739C3F6F14C5DA090EDD0DE57D27447 +:103B70004F38FE640B7F2A5F25698E655F23F178DD +:103B800086F0584CD737D3E83B8DB3ADD353253DA2 +:103B9000CCFEEEFE43FCF0B071CFB68BEF23300EBF +:103BA0001B71DB90703A1F663ACFB688F1501AF954 +:103BB000DCAC7A4FC978517F0926D569545BBFC701 +:103BC000C11574A9107E7E6F64E5F1EFCC99597927 +:103BD0007DEB6E715ABF0FBACFC5E77ADD687E38CC +:103BE0000E39A96D12DF8DD62AD9D89E00DA671456 +:103BF000A7FCE392FCD42A06DE9F6888BA3CD4DB9B +:103C00005CBF38B9429C9B633FD72F4EA9059F8864 +:103C10007744FFA472D1FF0DE8E2C0FE5A4A49A1E1 +:103C2000DC4D055DA5F674301B28B4696FDDA95025 +:103C3000B8174A53133F728B52D0AFCB4BD2301FC1 +:103C4000D9F8C487D139E2FCBC040F29649FC7832B +:103C5000DE6BD1C5F53D130C7D27AD67789664D535 +:103C60008D82C8B79D05CEB7D9F44D563B791D431B +:103C7000743D89CE4B761CACE3F63E8C72B96E2B4C +:103C8000D97AEF137C0FF9778D1AE475A6D58AE7F8 +:103C9000274268C0757A6913C6F5ADB7DBD1C27625 +:103CA000BDFB5E146CA42B374BD45F4E6A94E06D61 +:103CB00054AEBE02B11E1C5FE1F3196BFC38B7684D +:103CC0006782BEF3C7F47B5C5992B53F3334E28719 +:103CD000144A932FC65D39DFBAD380E98D5FD8735C +:103CE000EE8763FBCEB17CEDE99CA7DD20C93D0AE0 +:103CF000D5CDBAB3459D71085AC87F47B51FF1FDB0 +:103D00006969D61C5F16C97540FCFE5474DDE6F384 +:103D1000C1CD5C8733D7AECB41DB772AADAF7EC058 +:103D2000912FEA741C747EAF711D6919C591BF4B48 +:103D30000BF0B8EF48DB87F3606A709C3FECF76AE2 +:103D4000E3C098407CBE1093CBF4DA754C0FC6E606 +:103D500032BD5D53A1459ADCBF3E20CED552C9DFAE +:103D6000CBBA41A373AFFEF502A21E19A54AA7FA6A +:103D700025751A84AEC1E7D54C51EF1B5D5F7D21DF +:103D800046D41DD9F50A0FC6BEC875AA767D02AD08 +:103D9000778ABD5EF94AEA154CC7A8BCBE7A5AE4D8 +:103DA000C377B352FBEA6AD17E0F177C08715E209D +:103DB000CE10DFFD6AB84FAA888F7B5C94C835FAB5 +:103DC000FF1E31E98DD5D36D396E799EEB2E910FA3 +:103DD000DCCEF7B907FA1DC8FF0FF9187211505B56 +:103DE00000000000000000001F8B08000000000021 +:103DF000000BEB916760F8518FC06F8451F9E87840 +:103E000099282A5F4C14BF7A42F8150B82AD28C856 +:103E1000C0708A0382BBA0D80E8835A1F81D147F1C +:103E2000E344E859C5CFC0B0098877F1A39AEBC144 +:103E300004A13D1919185A191818E480B8920B21D9 +:103E4000AFC50CA1F99D18183ADD10E282D60C0C12 +:103E500031406C664399BF46F1D0C0F191A8FC8A0D +:103E60002054FEAC100686FF486A2A834833BF3DC3 +:103E70008A81A1230AB73C6F3C2AFF69062ABF2129 +:103E80000E95DF5D8CCABF05D50F00C9F94DA3C8DB +:103E900003000000000000001F8B0800000000006D +:103EA000000BCD7D0B741CC59568F5744F4FCF4C3E +:103EB000CFA8258FE4912CDB3DB28C4590715B1629 +:103EC00046FC42FB8B9370F206932582254EFBB392 +:103ED000427C33386CD0BE18A6657D2CCBB219C796 +:103EE0003E468081C118627E896081C04B76CF08D2 +:103EF0003B8EB34BDE73429267F20C2B1BD6813C98 +:103F000048142760729E03AFEEAD6A4D777B24DBC9 +:103F100059F6331C28AABBAAFAD6ADFBAF5BA55055 +:103F2000641EA99F4EC827F0BB9C90D93221E48221 +:103F30006249885920CD847C8690CCFD0982BFB728 +:103F4000E713D2408A3FA98A9073E17F02844CD65E +:103F5000EC57A07DB74032930D42EE81E7D5F09F3C +:103F60005C6025ED7FDE3E85F46B84349283013204 +:103F70008390F3C9289606D144289B8881653349EC +:103F800063F9BB0523DF80F2806625019E5B546BDD +:103F90007A847EE71B470FBE29D0E7AF496635C25A +:103FA000796905211715E7E12F09B109A924A45E54 +:103FB00059610A148E0F8688D10F4F171A383FFBAC +:103FC000496274D1BAA20E050452ECD79B25A430E5 +:103FD0008BCE51CB10AB9190CF121DF1D298B40F74 +:103FE0008A715A0E59C452114F241D23A42564CD41 +:103FF00086F7922ADBE2F9D06F5486F7BF2D27AD02 +:1040000043EAA9705D0248A3ED7B624BCD113A7E75 +:10401000D75D0649D3522C5C44743A9EA81A848E0C +:104020004824298F78257B48EA310A82A40CBD42B6 +:10403000603D9EA6750270690C2EB5105840BF13E6 +:1040400008599F85F90A0017EDDF155B9A04F8E51A +:1040500024B1C539749E740CE8DF554EF28D2942A7 +:1040600042B5F45933D40F3E0375DA8E68AEBA0305 +:104070006F57B991541B8BF59ED8FC4321DA2EA8BB +:10408000117D166D27153E87704B9A492C5A0625CF +:104090009B0800B7CEE00E2A1956AF657559B3C814 +:1040A0000298F79FC592F83997E3E7337B18BC92E3 +:1040B0004AF2A200F879F99508AD8B496284910A19 +:1040C0000D13F0135489F624BC57597B5123BBA21E +:1040D00002C09167F8D2D877CFE3EFE5A4F6682065 +:1040E00005701502D1667C66003E1BE13D8C976031 +:1040F000EF25CD8B2FC08F1B5FC1C499E1AB2B2562 +:10410000E03CC9C979C92FC55CCFF9FCE1F70EF0D5 +:10411000978038C39F4AEBE70AECFFD7D115057C9F +:10412000B8F8E29BC81784F205AD7FE3C9832B087A +:10413000E38B75F03C44BE5206EB3F3E5FC8A440A3 +:10414000993902342FE2D7B463E7B16FB13AE39BF8 +:104150001635BF48D0110F0D5233B05AC410534515 +:104160003CCBB02E50A7EB0FFC2526BCEB22C1BAEE +:10417000B8DAD375DB1505BC4AF65EA4EB24A3E3DD +:104180008BF8FB31BC2BF9AE385B3703D6ED62FE02 +:104190005ED2D87B5807A86F8DD17511D83AC0BAB6 +:1041A0006C8DD17510D8BA69AE3A456A35E0636B4B +:1041B0004CAB565DF4B6756C5D2655BBD765EB9F71 +:1041C000675453E1448CD4D5F6622AC7B62E39A77A +:1041D000CC6A1C1F9F5DD9F47DD24C575D607CDF9B +:1041E0001526ADCFD1D2DCAD5DBB06604CEA4DFDEE +:1041F0000C3F872C984F82D59F87F5A5F8FE38682D +:104200003E0FEBD715D0AE45F9B454268FA540D854 +:10421000EAD5CB29FC2D23DAEBC07714EF3AE387FC +:10422000FB16C55D78EF59327F0CEFB3FE1DF1BE72 +:10423000D187F78D3EBC3B75071F1B63B9A41BEFED +:104240001BC7F0BECDC30F1B67565583DCDCC8F11E +:10425000FF0EA1F8AF212425D9629C8EDB47F9BE61 +:104260001FE8F19DB419D74F5D07B143D4DF9EE439 +:10427000AA2B86524761ACF8B9486CDABE2297EA9D +:10428000043A262AE377D040EEEFCB54EE141442E2 +:1042900066D1F213984F228275E40B02E3CB38FE0D +:1042A0002554BEC5293E9221EB3DE4B7B72D1BE056 +:1042B000216A1AE52E2A06AA1F838EAE149621DEE5 +:1042C000CA5B48BE9FF65B225E6F021C54F71893D0 +:1042D00029CE2683C89EC1EA05FA3C5EA91A36CAD1 +:1042E000012D0CFA2544FEDAC3CF4A82D8E1325AB6 +:1042F0009ABAA051BA0CB6C81E3883CB48217C3E6E +:10430000FC7F2C817C7D21B990F1B52EC0381592AF +:104310008E7810EB03C62E26720484E7FA694DFDF1 +:104320002EBC96094C0EC763EB15AABC49677D935A +:1043300002FAAA4F5D5E4626E007F1239114289EFB +:10434000B48F042C45357311F0CFBDA1CC9FFE1561 +:10435000E85127F85D2A5B74A04745D5775D214079 +:1043600099230B69BB4681F1C3E27A2647C2949E2A +:104370004329786F1393BE0FEB06EAE57235330CD1 +:1043800078A55347BB63B26AA35EDF9892F590703D +:104390002A5CC3A9DE24C23F737E12E0EF1A0E33FB +:1043A000FED0E57CB8447B2AFF4CF81E91ECE47209 +:1043B000179DF4017FD3E793AF37C82A171E240A4D +:1043C000BD5089F815344AC7152631A1DD56490B71 +:1043D00097BBDA118ED7AD26593654028F1F82FE55 +:1043E000A3E344ABCCF9C2056C5DC1FE9A4F8A3F92 +:1043F000D00F1712B6789790D169125DDFDB428536 +:10440000FDC114EA87CB018E0F5F677A818C58B3A8 +:10441000808EA87E30E1F999EA87F0983EA8D58E83 +:10442000454FD50F7E3BEA3CADB010C4ED6C752412 +:10443000007AA33735BA50A0F0BC239BFF0DBE3BDA +:10444000261F87372675FAFDBE27E6B79A144F7DDB +:10445000CFB6B49A2E3C5CC3F1B382D3414F751BE7 +:10446000DA1B54AEA1BDE1D849927490E9F7E7C9CF +:104470005C661F8DB0FA4BAC3E471D0DACA4E3F655 +:1044800006AD24AC47AF2377889DBCCA35FF2FF219 +:10449000EFCD7EDEAFD7DE5D1F3D2BBDC6E1E1F285 +:1044A000F5FC53E4EBE82B51977C9DC3ED0DBF7CED +:1044B000EDF5C9D75E9F7CEDF5C9D7DE98E591AFE4 +:1044C00063F33CB9DA235F7BFFDC95049371F8A9B1 +:1044D00002EAB5DEEA89F5DA804FAF0D0419DDF79F +:1044E0004E65A5F33C2F30FB64AB20633950CEDE24 +:1044F0000F503E79AEC4F84E7B475EA7246B702503 +:104500009DD7860626DFBB6A9B6CC0C307802BB095 +:10451000B372579982476E1792AB01EFF526DAF323 +:10452000CEB8112EBF1BB8FC26F511A463A4DBBACC +:10453000A2FC1E0858AD48B7358E7E65FC3DFB7960 +:104540008BD9B563FA95AF7F2D5D7F1DE8701CFD9B +:104550009AF0AD7FC2BBFEA1DA335BFF20EB4BEDDF +:104560006BB6FE8E7DDEE35BFF1EDFFAF7C4D29EE4 +:10457000F5EF195BFFAB3DEBDF53D99604FDDAC3D2 +:10458000E9E0506701F5EB9C1F680B010EB1368026 +:10459000743FFB79836C023ED0A50CB5A549F0258C +:1045A000EA0FBAF4825FCF76D54EAC0F1CBD7A0EFF +:1045B000AC4BAA845E55D204F8F3D475F6EA67676B +:1045C000FDA8DEFD3F201795E7333688A5A06215CC +:1045D00000FF9FAD320F839C49FF6DFA4D78FFCCF1 +:1045E0000BC7504F903D06195161BDAC569BF27DF3 +:1045F000AF60256B1BDDFCC2E8F5547EA1C2EE6204 +:1046000080E3A45998607E4ED91049BF0FDFEFAD0B +:10461000DE81FEE198DC79822A27F4EBEC569B964A +:104620007DD5BD9EF5EA4B11BE5E5DC92FCD763FAF +:1046300067EBD50770D480D8FA835DE0FEC2489559 +:10464000D71F477F81EB83DFADA47E8258F40F0E26 +:10465000686912A8F4F80942E02CF400FAC633F0B5 +:104660002B25FD8473EC5587807E3E208AD50FF282 +:10467000EBB28C9256912ED05ED8504BEB203792F5 +:10468000B222503FB457A57A0FDE733FBB37B9AAA9 +:104690002F857E99354F74F1F3A2A4857E057D3E6A +:1046A0002994F23E7F4B453F3229527CCA99850AB4 +:1046B000CCA3475BAE10175E65D54ACAF4F90695E0 +:1046C000E9D9DE60E6400AE4672D99B79E7E27446B +:1046D000FDFB79F4F9707221C2D9A3AD2D00FDF56F +:1046E000820AA6E5A25A4AB0B40C2556E5C19EE856 +:1046F0004D503A57E17906BFEFC797331FA71E52B7 +:10470000334476E117BE27BAE82B24650A02F7671F +:1047100077D17523B97B4D05EC46EE0706F4B48DD1 +:10472000710BF39CA67E4A42970698DC3C659D126D +:10473000B247CEF5868D56C03F490B44993FFE786F +:10474000D4A23BA3F19C751E5B6F6BEDC323308E2F +:104750002D917E8A9FCECB32DF86BA6487B4F5096D +:10476000B00B320F8F807C9515AD8B7EE7DE681C19 +:10477000E55CC7E118E2710BE02904FA45C1B23FDC +:10478000AB61D9974D62498845CEA1ED4F2C0CE421 +:10479000FBD10E6776D45859CFCA1702CC3EB82544 +:1047A00010C1720BC70F352F911E72A7B153CB5A90 +:1047B00002C579D27F6386572E451B2A3CF5B05E31 +:1047C000E369EFB78BCE05E2AD043D601203E094E0 +:1047D000289C2077CAAE4CB6B9E0B83E20623B5167 +:1047E000BC2A03EBD42D78F5E98900B3FF4E0614FB +:1047F0009C8F4146F77E0276841A40FF211E5B6E35 +:10480000174057082433136314D27B230E9C74BDC6 +:104810002281F4DD01B0DB83235A45E37F3E3E4431 +:1048200071EE28F835C14932DAFDDD9DCB913E9D10 +:10483000EFBE1D60F6D7F57CFDC4906134A09E9359 +:10484000F55D2998BFC9E332FA23400F5D9D4DA362 +:10485000307FBB5C463DEA8C13A40E02C4DFFCF83B +:10486000F0E377B2C8E84612197E2F3F79B902F615 +:10487000F16635B02C4FDB6D9628DF27A05E97B729 +:1048800085FF4278F3CDE3A7637863F390804E9A77 +:104890008B7432A0523A6946AE453A1990983C1B47 +:1048A0008079A58AF3F2E3EB3F6A7E0EDECB62816C +:1048B000749ED2435990C15716F3C2F71F8D7707E4 +:1048C0002E95C3A572B8D4FF2270450216F2F716D2 +:1048D0004EAF5BA41105F8FCEE00A79B681AF90B1C +:1048E000DA2F77E91F87BF9CFEF7407FDAEE1E695B +:1048F000D4D3DFF94E0CE64F9FC7828C1F62B1FF05 +:104900005C7E70E0EAE770F7737AEE57FF73D66566 +:104910004C2F36930609E4338918209FE64B9621E5 +:10492000C2BEC3AB5F213DF4F9713330DA7F01C8F9 +:104930002F67DF80F5FB5CE51A66FF537E0D619CF7 +:10494000D22CE8E02F1C10D10F0A250276E8FC12C9 +:10495000FAB956C6A007C25137015C3C0E85AFE8D4 +:10496000780B3E92D0BF881804F56A8C8C10B01377 +:10497000CB78FCA99CE802C1FE860078A61607DA6F +:104980007B89F0A73DEEF538AE606E259F44CF627F +:104990005C898E3BE3DF61DCD3C01B263B715CCAC4 +:1049A0001E894F2615C7DD48ED176A4453BB4FC318 +:1049B00032041113B0831B599C6F03B567E0399122 +:1049C0005E3003F47BAA21EB6077A9DA731837D144 +:1049D000FE3144CAC0E7E77636B01FD8D9D1067297 +:1049E0002440D73D6A78E37A4AAD7C46F4D85379BF +:1049F000CEE489FC7AD01429A5D86FBC76FFDE25D9 +:104A0000D8CBA960B12EA97545BA9E607EA261116E +:104A10008274CFE2AD63FD03C402FDD8A5AE52D0CF +:104A2000EF3BF9C927E27CC2969280FF956E2985FB +:104A3000973DE0F4BAE25341ADF776819AACC1E418 +:104A40001A73C405CF933010F071F21673E40CD6CC +:104A500041A47620FAB3CDCCDFDF1A5D418E401C35 +:104A600034BA02D7BFB7B22A057E0D21EBD9BEAB4F +:104A7000A2A2BDEED0E970E53518AFECA9BE2609BB +:104A80007E474F309D043FEA40E58B26C44B7A4F6A +:104A900096919001FE531DC6717A4FCE989C293194 +:104AA000BF2861F202F77B528CDE1CE711E0B5896A +:104AB000D5077E5194CB9DADD17F34C566E6FFC34B +:104AC000F8B24ABF4BBFBFAC79C884FD5CD952ADC8 +:104AD0009076EA38CE77E84FC0F80BB471F84EF014 +:104AE000BC2F0987BF2ED707987C4C907C5789F63E +:104AF00041256E47CF07B93BF65C83EFD6BF3ABB83 +:104B00008CC5E165A22BF069C104BE2AD27FDEE329 +:104B1000F7102D501CD7E5EFF4CA26CA097B1AC935 +:104B20003F06F391CC56B6CF5DD1047ECF78742D7D +:104B300025FB7E0F7628C55101E8485233F64A8C92 +:104B4000FB048C2B50240C1C14CEC7F2F7B09F1C16 +:104B5000D2A4DFB8E9EC43D11BB7EF49D49D66FF7F +:104B600089C0A6C5F8F178D9B4806EA819784840F4 +:104B70003D757E13F8E9C1DAFD8752F07D89D9C30E +:104B800041D8BFA675BF3D789F6C8624A0E7081B5F +:104B9000C73FFE93F2C2A804F116D18A43BBAED838 +:104BA000528CBBF4D65CCCF59D8F3FB40ACC0F1869 +:104BB0005F3E31FC6BD71B4C2812332E5431FA85E3 +:104BC0005FA4D1009A20C94B444D6A61EB29C27C95 +:104BD0009222E619506D7C14F8D3A4FF00FCF14B2F +:104BE00069DDBD3FD2DC447683FC5DA8A441FE06AE +:104BF000096BEFD0A508EB723E94DEE7E74ADE755D +:104C0000E9CABE44DE72C547E923B3D47EF60A7909 +:104C1000E11CA9B2041ED433CB5FE84BE6FA508EF8 +:104C20001065B48CCE57015AA4FDBA61DDA97E1976 +:104C3000E47A683BD74339AE77B66475A48B6F6569 +:104C40001BB0DC9135F0F9FDD916ACF7664DAC0F11 +:104C50006497617D6736CDF49592C7BC86EE6A7322 +:104C600050803881BD64E1AB74C8EE98798860DC0F +:104C70006001ABC306D7C5845C255DB2D0063FB6E4 +:104C8000DC6C0D50109E99D4B87E1FC037D33C24E5 +:104C9000D0FAE6EE39AF7443FBD9ACFDCDD217178D +:104CA000DA943EBAC33CEEA57FE9347860F2314B2A +:104CB000D53694DD953C5E7786FD36403F8AC7EE5B +:104CC000D4D97D2F22E54D36DFB6853FA7F047804A +:104CD000866A087944FA12CE1745169DCF93D235CD +:104CE000EB71FEB3F9F8542FFD954B2F3D280519B4 +:104CF000DC73CF0EEE8739DC65CB460AF8BF92F540 +:104D0000DF81CF62AD055BA64BDBA73FC7E29B60AF +:104D1000349E013FFDABA8333DC3DB07EB9B0A404C +:104D20004A83BEE7B16613C7ED93587EC9CECC4225 +:104D300085E7BBB038027F0EE942201F8F6B12DA85 +:104D40003B5BC6692F83D06F2EB61B174EED3476B2 +:104D5000ED19CE934869A4DF75A2E699D78D50AFBF +:104D60002CD6232AE3D7335D8F7FE2EBB1CC37CE4D +:104D700065BEEF484F07484B13D8112EBD42FFAD1B +:104D8000B6221EFBA6325DE1A9979B359EF6652DE6 +:104D90005E7B68D2B2CF78DE4F6E6DF2D4A7B45F7F +:104DA000EC691F4A2EF4D463C6E73DEDA766967BF7 +:104DB000EA7F29BE57F8E67FB50F3F67BC6E44D245 +:104DC000B99CB659BC79ACCEED83D3D54FCEF2D6D3 +:104DD000D9B821725D19F30F981FF055C2DBF8E1C5 +:104DE000305CF6B508ED585DA77E33DA33C4FBBE00 +:104DF000B80FCAE39DEB25D2D50CF6DDDD180FED1B +:104E0000B0435A889627C2D3F284EAD5D782D671A6 +:104E1000A607321732FB243307F3B484D279620E2B +:104E2000DDF5648D6D6FBBECE460AD80746BF2FDFD +:104E30002325693CDA9F62D3BB9ACEF36389EDC325 +:104E40007D1C343F067941EDC856B03F8EB7C84649 +:104E500048A7580BEA6C5CEE273876F4E60B8E61B7 +:104E6000BE5850E2FB31F502C659619FE02A57DC7B +:104E70003A160C78ED271F5EF2A017203E313575EB +:104E8000CFA580979F88B89FB3059E435CED827342 +:104E90001E813802E4CDD4D367F7644901F619BB0B +:104EA00082075B5743FB1F07D15EDE9455F0F9F094 +:104EB00005E794811D2C06031E3B7DD3EC482BC4D3 +:104EC00027C4788B05E39E983B741E84F6B6A40A2B +:104ED000680F9C38FAEC259D04FAC5B1DFE6948092 +:104EE000F8B22BA93D87F8A2DF83B846B386790FC5 +:104EF0005BA6668806F6DE2F447C2F3753BC7BFC0E +:104F0000918328578874905C8DEB67C6ABDD7689FA +:104F100091B902ECE6FD969A2154C50AF18E59002A +:104F2000F7E2D9CD6CFFE952DB245C3F60FE452DF2 +:104F3000D5C53AD40D02F1CC20ED07FE61F44FF354 +:104F40000A0F82BD7851487B8CD6C5C37F4DEE4B8E +:104F500080BD12180D523925365BB7128873363072 +:104F6000BC6BF41F909721DDEB1F06DDEB82768D85 +:104F7000B71EFDF3DFA7011F9B9BD7463A81BEC535 +:104F8000EBCB406E479B034720EE10B5E285C5F39F +:104F90008AF8560F877FB8CF35FE1782A5ED2167B7 +:104FA0009CF1ECA11359E587FBE8BA3F1A6476E758 +:104FB0000AD9BC3A48E9E537416F7CD3291FE5EBB4 +:104FC000FEA664E6A19D435F915985A4A1E27E33CC +:104FD000EAE5353DBF7C05EC8A48979184F87B571C +:104FE000D0F77C117F1E2EFD9D67822C2EBF85FA87 +:104FF00059DC69447921F3F5DD22588555401FB706 +:10500000C70D58179958B81F5CB14C17EC6A68BCAB +:10501000E7A5A310BFD1E2B82FEDBCAF5EC3DE6F32 +:105020004AA5910FED7215E99BBC37746815EC7BAE +:105030005F50E5D9C7DEC1F1B229C8E4C2E6A05786 +:105040003E74F3F77630C8DAC5B85DA17D3DE9E678 +:10505000D3B171003F5435F4057F8476CA0EE07FEA +:1050600098277D0DFE803D5566FE8D99C17D70D7D8 +:105070007BBBDCFD5EBB3D09F1442A9D3FF9A40AE0 +:10508000F40BC1788CAB3D83A340DF533F3604B2B1 +:105090009FE23172DE9536E0A5970ABC491AF0ED21 +:1050A00052DCE79557AA19D1003965ED08D2FEA662 +:1050B00066223C4A82E5E93AF9B58EFC1E577FF834 +:1050C000E4B65CEB8D9B805D5198C8AE70F2847342 +:1050D000D74EB81FDA9FF5EEEF6D4A0DE13EFAB5F7 +:1050E000C1E7164AB0BEC1A124D8CB5F0D7E6721AF +:1050F000ECAB6FBACC24C904CB1F5D0FFBF964493C +:1051000001F2FE3EA010A39F727901FD6AF88DCED8 +:10511000E7740672A7E18B04E412D125F41725EE9B +:10512000274A49DFBC389F8D076F878F5F87815F74 +:10513000A3457EAD4F2B986FD6F373D1437FE3F138 +:105140002B993C717CB587E3E71741F327B09E5D4F +:105150009C9F0919F1E4DBE4393FFF0DE7E3A2FE70 +:10516000CFF1BA91847508CA8605F8C1FD4B97FD49 +:10517000F02ED73FC1087BEF8783FAA36F809C088E +:10518000C60DE6F7269A991D22191E388AFA8BED6C +:105190008352F9F236F4238904DA830E1CE3D92B07 +:1051A000494E9F5282E57D138DFACDAE3802F59BB4 +:1051B0007F0B789800CEE3F8FE2CE17C0BF056597B +:1051C00084735CBE70E250637936198C9F3BF91A88 +:1051D000A4C1B0717F1B62E9A01F724CDF3B79173D +:1051E000B2EE8D978F970F996CCDB3B8A7CAE2A98D +:1051F000216E975033300F711F492585701CFC9527 +:10520000261E0FF0E615F8F31BFDA54418DD43DA62 +:1052100010E8ADD3B5F78F9FFC527A62F9E1CF73F6 +:105220005025FDD804FB61C57E1239E6923BE78D1F +:105230009D9F607837F3AB305EA4908001F1A2208F +:1052400099DFB752473988EBBC014AA0B35A160F11 +:10525000F998DB656292E95F49B56C1CBCF6CCE25B +:105260002521CD2A40CD890FFC4F397DB90C71EA3B +:105270006A92135DFB08637CC9FD9E506DAE751587 +:10528000C64F9273C1154C4939C5AD471C3BB42B71 +:105290009B47FD2E27997FE8EC67485A1A4B5165CA +:1052A000CF1D7A73ECFEAE7A9637212A39B42BC320 +:1052B000B9AD6600E219BE3C1F274FE8299E27E4DE +:1052C000C4E9C6A3BB33F52BEE144906F4E789BB4A +:1052D000F3F2725ADE547842AEA3F4F34D99E9C763 +:1052E00013779376C0C7FBD98F3CF19CBBE52A7C32 +:1052F0007FD34B8FC88B5CFC7B13B76B287CB217BA +:105300004F9D7C3FB9AC00F6E86F0E88C80FE3C133 +:10531000D79EDCBB4F72E551BDB347C4FD3C22D9DB +:105320005F84FE37E5C540297FD91FBF6C4FEEC7AC +:10533000714EDC9597D3380F45001901F3843CC9B1 +:105340009B9E7F44065FE17470DFE2A3DF3C1FE7B2 +:10535000C45DA3783EA5ACF027CCBB2CB347595E07 +:105360002C8C057EC5A5FA2300E7E5273FC1FD4645 +:105370007F5E4918E6E9B223375ECAF6EF88945B90 +:1053800086FBBDF58140293CF9E7198679CE2BC211 +:10539000E7E0790BE07982B8C240B6B04F0A8EFFE1 +:1053A0005EBD88ED73AAC102E64B9C0E8E9841C784 +:1053B00073D1A303C7C069D67B33C0E1A2AF2D86EA +:1053C00077FFF674DF8D37D3FE1E7FDD260D55A0E7 +:1053D0008708DA0DA4FB8E39B0CF047106E60F4AB8 +:1053E000C7C11F76F695AA952F92754DC5F1926BA0 +:1053F000E87BCF7839DCEFAA6EE57160F77B575C0C +:105400005CA1FC0AEDC4FA5E1627AD8F607BB1414A +:105410003A36A278E183F6F2B495F94EE0F70A192C +:10542000F9BD87CB3FF34A463F4A82F9AFAFCBB2D3 +:105430006F1F86E9556A1FBE2E637E83650AE88763 +:10544000337F55AE69C0B83849948EA3FACF65381A +:10545000F81C937F27E71DC2F33D42C3ED688F8D93 +:10546000338E5F9EF44E5D39B892D9C568C73BF361 +:10547000A1BF7D109796743A1F0AE71F6479EC3C30 +:10548000DD4A8CBB13F4EFE87CFE007259D2BCE716 +:10549000C89C7CDC7FFB7C1A6FC7FCAE339C8F53AF +:1054A000177D7656F7D40549D867B2633297D36C27 +:1054B0007E41DD893738E758E6CF03FBB13CE45D38 +:1054C0003FA7A4F32D0F79F6BFD3CEF93402747140 +:1054D0009CE205FC00A296B66724E59AFB24D7BEA1 +:1054E000EBF4108B2F397621E80F184FAC67741B43 +:1054F0000859D3E17B62A2F720D227D74BFE737005 +:105500001B7D79B6CEB915E71CDCE9CEB1F4CCDC55 +:1055100051322FBD787E8F9D4720BA737E2FC3EA0C +:10552000CE3938D522706E6FA3730E8CDB7FCEF828 +:1055300035216FBCC399FF6D5CBFFBF1F4BBA94E75 +:105540007EBB970EA977F1E63761DD34B64E4B434B +:1055500072C9BC3FBA4E4B4325E8F277FF308BD17E +:10556000E54B9525F5ED6DCAD59EF529C2CBFCE737 +:1055700032463BE49E44C3423071227CDDB6543E49 +:105580009E04E134758EF557B05EB9C4A1FDD04ECE +:10559000BF74A417C4C83D9CAE9788B5E1A3149E00 +:1055A000AD8BEBCA56D1725D48284967B01F0272B5 +:1055B000FEA1AC82E58937664DB86FD693B53DF252 +:1055C000B84793501E9BED0BB40560B725EA3DE745 +:1055D000616EF57DD7A1678AB75B016FDDE5D7788E +:1055E000F0269A4326D83B7564A800723949ED9D90 +:1055F00002C785E4C24BB47194D4D3F7B7D2858285 +:10560000D029C5C79D808F3A6B4486387FD9A524A1 +:1056100000F3B867CC9FD23E07ED077F3CB3C9EDDE +:10562000B7FD84D30B69E0FE0BF5234AD9BDCE3A12 +:105630003D40F1D53813E508CAFD9A5B481EF8676E +:10564000133C0FC2B9D6F40698574D3B3FCFCAFD65 +:105650007B8128FBAA91BEB447187D0DBDFB38D2D3 +:1056600057D55C80E75B3EBA75D1D7B74AD197D2A0 +:10567000988133416441C4DA81EF85110DE206530C +:105680006E1942BE75F6F529D83F037A9ACAF359C6 +:10569000F107FAAE5EDF05F2E8FB2196DF14AB1DE1 +:1056A0002501FABE7ECFE14EF0A33758AA09F27069 +:1056B000CAD4A19FC23E37F9854880FF6AB5ED9DE7 +:1056C0008BC0CF369551D8078C35170458F728ADC5 +:1056D000C33AD46618DE376459BE6AF59A8200F57B +:1056E000582627282EBC87E40CFAF1536BDBAE84D6 +:1056F000B89C30EDD00288FB6EE821066CA7A5BAF5 +:10570000730590A3352D210DE4DC945406E3506518 +:1057100097B2E7534C252DE2D6DC28C653A6DC42CF +:10572000306EA4D692474597FC09D7B2B85F75C4CE +:10573000FA3ED047B89E9D4F0ED5DA580E06870820 +:105740009C078B5E9A3331AFB4FC1B64A54B5EBDE6 +:105750001A627E73A891BA268D453ABC4764F8CC8C +:1057600099C7951B5468C7F269457207A75F96A74A +:105770001C05FAD5913EFF19D649BFF4E07E81D6CB +:105780006F6BD45F017C53FE9CCCE0B0ABA1DF60BB +:10579000B9DC8A769E4D7E098797A20152FC25606E +:1057A0003EE66E58B7CE108B63F5FF5DAEF060330A +:1057B0009C930B693AC4415B7614FE01F8669192A2 +:1057C000867DDEE8C8D6C21B105F6D8DA2D1135A4C +:1057D00097C3BC1AFA2DC3443E223AD46BD6B0F319 +:1057E0003B65899F619E08C5D711C097BAD8C6731B +:1057F0000C9AC9E8AA47CAFCCB5DB47DCF01919D44 +:10580000B773F8C6E7F7CB09DB63EF8DC52B1ACE6C +:10581000CCFFA60426C1788B9528EAA7BD84C96F62 +:10582000CA5F7F003C2ED67E8FFC45D44967E4CF0B +:10583000F89F7F64186580EFD5C995DBEBA97DBC27 +:10584000AA63EBF67A3A547BC713DBC05E3E3AB0EC +:105850003AEE8E131DEBFBDB388BFB67E2D7D129C9 +:10586000AC1A64791F278256FC625AFFF546D1585C +:105870000FF8E0F9336D7CC9861F0CA15FFFEB4781 +:1058800004CC576B1F146C48ED3E516E4D03FFE086 +:10589000D7F7DD39CD9D7FEF946D8785009903EFB4 +:1058A000574E2B153F6A1FDC80F936ED7D41D32C16 +:1058B00081E73B034652803C88EC9E9D6FCF2CDAFB +:1058C0002975A0C8D93E24F36B1403E3930BDEFCC7 +:1058D0005C12E2ED1F85AC940272F9C815983FB3D3 +:1058E000B77C6912ECB0B56F84902FEF9433B3346A +:1058F00017BC77C6650BF942DDEE59875A25E8DB00 +:10590000EFB0F9BE0F6985F3E8769C68909FB258B6 +:1059100035D00F383E22E0F83DDC5FF6CF57EA780D +:105920006A9BDBEF931206D15DF172B1C11B376F39 +:105930005122F8FD4B1411CB2AC5BA44B980ED3F72 +:10594000775440BCE0E96D4CFF963E9F612FD40E2A +:10595000C17E88FD19590738FB673B7A24CFCEAB4F +:105960004A7902785B2F31B9B1B8216F075CF3D85F +:1059700000F328E13FF5673BB681FE1CC866B649D7 +:1059800078D835AF40DC6ABD52C03C9330B5AB200F +:105990006F7973D6C676FD0DBB15D0DFEB35F69D5E +:1059A000FEC65D0A9C9F5CAF3BF5DDAC6EF27A33C0 +:1059B0007F6FB37A57B68F8DD3CCDB91ADAC5D0BD7 +:1059C0006F47BEC5EBCEFBEDCB802EFBD55DECBBB0 +:1059D0006490D7191C02F763D6ABB965E0CF0628EF +:1059E000FC700E456C08A0DE779E4BF4F98212CF56 +:1059F0007BB23984C7F187FA13FC3BFCBD46F2CB7E +:105A0000409FF8FBE9248FF956FEE7FD490657A8A9 +:105A1000E33B1EFAA0EBFD778A8BFE227CBDA9AE8C +:105A2000C57334926140CC9C1466E8C7839714DB3D +:105A30006D50983EEC70E84A37508E53086EDFE0A8 +:105A4000A26F71B181FB5149CBF75CA3FE9CC73FAC +:105A50001C8FBEC86018E8AB82F28100F28CE5BDF5 +:105A600039F4339E3CA3748574D3936DC53244D806 +:105A7000B90E7FBBFB9400F7A3BCDFEFA07857986B +:105A80007D3DFAD85CB0F70D9BCD4F5BBB01FD822D +:105A90000C9E7B75E67DCAFC125E7FD579DEE5E360 +:105AA000DB619033A00FF5E50AF2A9CAF4AD2367D4 +:105AB000BA8F5C88E789F7C6E61FB29A8BF265BC9D +:105AC000796FCAB66EAF9F09F9A316965D46930229 +:105AD000E3F4A80182E7BB2413632B527D9EC551DA +:105AE000A95D48CAA99C6B64E76DA57A3A711DD679 +:105AF000277303FA1387C364660AECAA1CB9C1852D +:105B0000BF305FF7C8C96C7D07F5FBC31D6DA817D3 +:105B100022C935A827EE8C53BBAA84BC7E42617E85 +:105B20005C9592FE11D09DD2B17B62F9B295DD0FEA +:105B3000219288D1897290E9F7E387C3A82728BE0C +:105B400042A5F629A48ED5A89F30D67A01E0F3228B +:105B5000CC77BC5336927727501EC317CE18AFC1EF +:105B60008E6D383FB1E39B5816D7D9407C8A1AC353 +:105B70001FDCF73153077C19EC7CAE991915CBDD8E +:105B8000E3EC60E358DB27C4D36B8ACCE5B1F97F43 +:105B90009512F439869F67C821D013276244837D0C +:105BA000D6BD6F5C8870AC3DC2F863B19A67F8A24D +:105BB000EB1C2A477E6AC8A86E3E69473A19C8DAC4 +:105BC000DB61BF3CCAF116323238AF5023B3CF2865 +:105BD00055E0BCA28DB609F25EA5062C8031F6BE5A +:105BE00099BE47BDD4C7E82E9B61E3351E2460F7FC +:105BF00089890C5CD2536C9F70C6336DE0E7A07F3F +:105C0000BCA4F3DE42BA8B19143E173F51FD5B1E54 +:105C100006FD9CE8F33C8F24195EC7C3D7BE23B3AF +:105C2000CA464AE0DB2973D94194BB7DA0776899C5 +:105C30004B19AD69B4D33B508EF483BE0902BE98B4 +:105C4000BED802729AD63F174E717B4CC33CDB3EE6 +:105C5000C27F32A3D7909E403F62639030BE6B20DC +:105C6000F95D98B75A40BBDCC913A77285C52D6B87 +:105C7000A9FC86F66103F50ED527CAF212FED606F8 +:105C8000752DCAF58DE5ACDD06D2A1AC6D847B0A1D +:105C9000785DCA603D2CD33AE03F98D1B01E61F5E3 +:105CA000F1C60DC5D66A306EB882F7133A58BF3ABE +:105CB000EF381B65F69D3EC966DF8D4C0C6F9FBAB1 +:105CC0009EC15BC1FB913ED6AFCE3BCE78EBA3D459 +:105CD000D275F09CABB0B779EDE73CF3D30CBA3E8C +:105CE0009E7CA79CA7BEF78D5993475CDFD93732BE +:105CF0006342BA380674E1B2538E85AD1520371F62 +:105D0000D838B4B89BDA22C782D63481D6A7693F87 +:105D1000EB5E7619213774AC44B9D6C6E5C6AA8EB7 +:105D20009B597D60B50C72BE6DA76082FFD2C6E53F +:105D30000121960CFAE6DD54E6443F1D675338E234 +:105D4000D1AF6D9AB51FE58B4FBFB625ADA5A5F4B4 +:105D50004F5B5FD0A35F9DE7AB3A56237F8CD5079F +:105D600066203CABB87E5C05721CF9479FD60AF6EC +:105D700056388C701C7DECDE69A097DE15722BFE08 +:105D80003BE8E31B239EF3714EE9C4E73F0A31B9B8 +:105D90004B246B3F9C1B3BDA298EF6CF1D7F9C3634 +:105DA000AE37FCE37486D9386D1C0FA19365C83FEC +:105DB000AB1EBB770FC609A5DCB46B299D7D3DAC3E +:105DC00078ECE855205F27FDE5F3FE268C5709F3B4 +:105DD00067DF3FD3FECEFBEF71BC15F79DF3E78283 +:105DE000BDF097D2C5FD75942E28FEBEFF29D38540 +:105DF0002317DB4E6609E871671D3EE271506ABFEA +:105E00009F0B767C11FF73AAAE75F1F52E8EF79776 +:105E1000C37A49FCFBE7FF6E7B240071D2770F2C1D +:105E2000C17DE2FBE5DC0A9027ED1C2F0E3E8E5172 +:105E30007DD4EDE2B71B0656EF6FA1F3BC7177AAD4 +:105E40005C70D1F38DBBB72EADA1F3BC613085FB87 +:105E50008BEDBB19FE6E18ECDCDEED910B0E1E73A4 +:105E60007F023C8E70B8C7F0D8602D0D94B05FDB18 +:105E70000C6B7FA084FD3A1E1E6FE4E3DD1FCF6D27 +:105E8000799CF67B8B3C7CED7AE0EB038BCAC28D70 +:105E9000457CAD4A323FFA2D6E671FA3FAC53DDF40 +:105EA000A38333E2105F794B62E7CB8F0ECE64752C +:105EB00085D777D2F7B47C8B9F773FBA7326D6FD10 +:105EC000FC78CABA249D75B19D7B56DEC9431CFE81 +:105ED000CD90D1459BFE55D83A097AB5337E713BBA +:105EE000E8AD3B8F0A78DFCD5BEAAE77213E339E8B +:105EF0005EDD9CD505B71F171BC7DEFE242C78CEB0 +:105F00007B7765973DE1CE3F142503F77125953EDC +:105F10002F613F9FE9779291C059C1158D089EFD71 +:105F2000C9EA76577E3EFD37E6CBF38F1ADEBA42DA +:105F30005CF554711CC4D8FCE27D4D8E7E82DF7B03 +:105F400055E0FF118C8F0547CA57431EE782FA1CA4 +:105F5000C6E78EAB01DD7D2FC1A9729614C6F41E73 +:105F6000AE835218D36F902FA74E7CAEA33BDBBA03 +:105F7000C31D9F1E3B57CEF12375ACD8017CB88F53 +:105F80008E7304FDF9F54EFE0CBF872AEFA12BB1ED +:105F9000E3F16DEE38BDC6F711683B4FBC6B53782B +:105FA000E810E435B546EA7B20DFD0C91F5BD13F5E +:105FB000AF07F2C79CBC34626E67FDE967F09EB024 +:105FC000F2D6DDA5F7ABBB110EA5308CF14415EC74 +:105FD000D666B6E73209EC2B8AE38300BF94C3FB95 +:105FE0001B62CD2CAEB92AC2F822AC1CC23CF28D89 +:105FF000CD4735904727A6D2F66AB1BDD38E8CE83F +:1060000026F0B17401BB37C0693FFCC697491FEC4D +:10601000F718EC9C252DD1DF8D974B79DC373513A4 +:106020003CEFC6D4278A979BB90598FFA7C03E1EB0 +:106030009E7F320BF0BDA02EE1BE9ED42861DEC64D +:10604000C741EB6B9112716EE73BE3D30BA7C733EC +:106050006CF7ADACBE0DE261F57B54C467D761014E +:10606000F7C1B7671B305F98FA112CDFF53A767EDF +:106070006AD234E308A44C905FB2F837DC70077240 +:1060800073F2E1A8C6F474E6C2AB5DF377EEB3A891 +:1060900058C6F6CFA8FFE2C923B944B636C33C05BB +:1060A000C8BF6D2ECAA149571A38EF8AC9FA5C38A1 +:1060B000FF41657D219DA4F5A8FE2C9CA7080C7CC2 +:1060C000B244A5F3AB00FBA386DA67FD5FE805BA2F +:1060D000AA98A1CF0DE07993454B5F6DA1F529FA00 +:1060E000EFA17F4FD45CBA8CD259C52CC2EF634963 +:1060F0002F857C868AF358BD7F80F577F4C406CA65 +:106100003730FF4D596B07E0E7512E674220B7E863 +:106110003C1E077A017F9EF2CFDBEC7E329C5F94BF +:10612000BF173BDA76BC3D0F9EB33831F5732CE2D6 +:10613000920F53E7584F4528BDDD9A1E590AFB5967 +:10614000C184B33F337A08F397F9BD044BC4C6B298 +:10615000A32E7BF504975FA2C4F87780E297F9310C +:106160001A96DFE77046885E364D807C62B69F19CE +:1061700031FAF0DED1D7389D8FD1414361704C9E0A +:10618000D415E7EFA79761FEDD48C73F0FC2BC5E9D +:10619000818465F84EC7DE41F73D3EFD73E70F820F +:1061A0007EB505353393AE43D75C05E3F7CEFB1FD1 +:1061B00073F85E1B93C366A1BBB9B8AF6D3E6DDAD1 +:1061C000C81FC00F74DDD4A66504F0D1B340C17BF5 +:1061D00084A406762E8EF2C76B803F3F7F1C1F790A +:1061E0004B60E73A4716EC6D46B72CC3EE29F19E9B +:1061F000F3241D2FED1C93AB75702F55A115E8EA04 +:1062000058E46B4B12944E06C205945FEBC5AF2F5A +:1062100001BA5184345904F6974086206F97686913 +:1062200013EE29E97D5ED601CEF7393DC8B3AED174 +:1062300016225F481F43FE6A0FF0B808EFB99D456C +:106240002CCC9F83FDE1772A10BE42A809C118AC6F +:1062500077EEFBAB83BCF1C091209D675864FB0BCC +:10626000E49F458F1D0EA75C3A5C7918C1E4C141DB +:10627000B77FB479FE750C2F898F1E78DBB5BED140 +:106280005A1EC7E0F4636BC4FE2CC4591BD83E9C55 +:1062900033DE6551B64E3DD9659E730307642B10FE +:1062A0008579F2FC32D9BA721BACFF63D976E41758 +:1062B000C2F76BA7723A9F46BE540607847AB2199A +:1062C000E4A30D591BDB4D3BFCBF3BC3CD28D58D53 +:1062D000492DD0FEBDE17D607F2D0A8C42CEEFD4EA +:1062E0000EE943B75EF6E7A15644BD79A81BB37427 +:1062F0009EF07DF13DE18709B89F2680F1987003FB +:10630000590878909369BCBF5754F5B9FC2CAF0776 +:10631000CEB1FC54F130DE07F801C005FBA8FC1C2F +:106320009F1F1E071F7EB86646BDF9EC333A1E4517 +:106330007EF980BCB7C0AC03B94550CFCDB883E47B +:1063400041EF4FEF7800F94719C81420FEAAD67B19 +:10635000E109AC3BB800F8693ABFE77146C7E338DA +:10636000DEB4C3571C80FD8EE91D0F617F3F7C9416 +:10637000FEB0EEE4234E35D87D8EE3B5DBB7A60A3A +:10638000DBED9B639AB0BE26E096F2D7C3D9C1413C +:10639000947FD9FC20E0D759E719BA867A416B205F +:1063A00079168FFA76E12ED01F5AC080F3BED295AF +:1063B000517CFF6882E5737610E300DCC7421A2443 +:1063C000D41B4193E573FAE54CB0C10B5F3ACAE2C6 +:1063D000B6BDD93EFCEE551CAEDE6C8ED19BF834BA +:1063E000DA511FE8243389DAFB1BD6E54D58FF1438 +:1063F0005D7FE28AC7C9779901A0FB608EE1C1FF8A +:106400001D871E1CF91CECCEDB3F0478E9388BE0BD +:106410009C1BA7037F3FFFFAFF8D8F2E2F3F5966EE +:10642000C0B98CD4CFD9FE18E9A03FD77972FFFC50 +:106430009D7577EA7BDF9855E68E5FF8CB9EECE0A2 +:106440000E88573C9CCD63D993588BE7E6A83EC98C +:1064500087E0FC792DE55328550BEFC7A27543D291 +:10646000811F72C80F244046CB6A299F745B851434 +:10647000DFC7867B5E6475F4C7B3129007CFDAF787 +:10648000248E0FC37EF434C2F6B583957F1C86FD3F +:106490000715F6B9E97A4F57A9490374DA411E8105 +:1064A000A3C06A3789C0D626A1FD21BE17AC9402CD +:1064B00040DFB584B5EF4D065E81FE71BE4FAEF391 +:1064C000FE7A86F6A77C11EF66E7C9493B8B37CA8F +:1064D000D554BA01BDB5934760EF4EEBB672B02FFD +:1064E00042B52A8E5FB72E303C8B96D3EF62ED66B5 +:1064F00058B41D1DA7AE7BF4A757001C2D6C1C9B28 +:10650000AA2CA0432DA7E17ACCE8667527EEA977DF +:10651000B2FE620BEB5FDF4D4D17E85FCFDEDBA411 +:1065200040607F4AEC66FBDF36F57BA1EEE8CD2EBE +:1065300085E94331CCF4A4C33F3DD93DC83FBBB24C +:106540002F613D9F1DC2D239B715EC63E3CDB4C9AD +:1065500042D8C77999CB5F7F19BA2B6FA2FC00880C +:10656000E70205E579FC998C423C89724C016C622A +:10657000AA5E8CFB8D5274CEEAD3E80FE8D3A12F2C +:10658000274EB6EFC8851E7A231D94BEDCF97B9991 +:10659000BCB7DEBE67875B8F126BC8FBDE7CC95B56 +:1065A0006F2978EBC6016FBDFEA0A7EEA2F36D8B3D +:1065B00071BFA315E3CD3D957A0DC4117755F2F364 +:1065C0002DB00F128473C91D58E678BC7B90C7A705 +:1065D0003740DC9BD6D58E47B7C179A4FE6C2B8E95 +:1065E000B7259BC3F70FF078F6112E6F28FFEC83C9 +:1065F000735854ADE3BDE1D4DE3812057B83A46D3E +:10660000C81F8C3430BBA3274CAE83B846B4FE20E1 +:1066100009B8F0F6DB28B36F54675F596274537C96 +:106620001FF0C425CCA98C8EEC540EF751DFE7FD8A +:106630000FC8E66F411EF754D2EFA89077A02D90B7 +:1066400030CEAC37810C49523690697D4A86D6757A +:10665000C8B31921107755A99F06F3546AE9BC5DA8 +:10666000EB5F7B4B9FA7DE53CEE08F431C8AB68F38 +:10667000F1F85622BCF0CF30DFBCCAEC96EEF2B691 +:106680006AB04F1B22E9BC7A01E445DD8BF3C7DC1D +:106690000CB0E3929415AA3CF66D489DC8BE8D459A +:1066A000301FD06FDFDEADB2B8818317C7BEED01FA +:1066B000FB16E3F22C2FAB3B9BF4E467F9F9CEB960 +:1066C00067744396DA4541C81364F72086A85D5580 +:1066D00049E578BFCCF2B5FDF2B45EE5F6738864A7 +:1066E000F01E905A1BF51809683F8D5E42F1295142 +:1066F000BA68826B3602852A97FEA22CA0B4376155 +:106700007940AC807B024B9F0FBB50E5FA8C7F5FDA +:106710009E3240209F20F4BDAA14C8454966FB4420 +:106720004A2250A88C17EBC1CA6ECD1DF771C6095D +:106730000A24CDF2F598BDD907F6E68CF1F585521D +:10674000EBB5135599DB97FFC4CE578ED7AF3BAB54 +:1067500079F246A566C99E4CF138C0E72135C84795 +:1067600026D1BACAF116D4687BF73ECEC88C09E3AD +:1067700014BD596A8FD3F16F77F05FC3F3284826B1 +:1067800060835DB1B56E973B2E703BA793DDB989F1 +:10679000E31F403F702F411FDC6F300BE7E1B9E78B +:1067A000C2B90FEDDE79BFC57B559CE73773FCC6D8 +:1067B00047589C31FC75B2365DE2FDCDAAE3C710A7 +:1067C00009E29394D6F32CAF95DD9328713F3FD81F +:1067D000C0FCAFA02A1FE1FECBCDEA05A7E6B3EED1 +:1067E000568D5690E7BB5599C07D545D2B03085FCD +:1067F000E433ED49F7FA5FC5BFBF49B0CB3E0BFCB0 +:10680000F463E61F44CF5F66ACF2F053CAE3EF8552 +:106810009214CF2EFE3F5D7EA364B2BC59470E7426 +:10682000C56F4239706528DDA5D27A22ADF541FCED +:10683000424CB07CA9B17631262FFE18A7E8AB2CCC +:10684000CA898762661FAB7BDB75F1BC1CE7BBA204 +:1068500073AE1E7E6077DC613D0E7664C5172E3DFB +:10686000D24DEB0FDDD1361FE45D5E151DFCEF0B45 +:1068700042DC4667F6E6C3AAEECDB3BCC3B22154F0 +:1068800050F1852BD1DFECE1F9C266AB4D4AC56B07 +:10689000C63B97F271D044F907F16E58AF9690B5A8 +:1068A0001BE6133E1C423F3B5CCFF31C797CAB6282 +:1068B000522E39D7B51E07F8BA6D1CCBC3E4F1418F +:1068C0009E3F873F8813409DEABF5754769EB4622F +:1068D000B2B91EE59048322FD0F94FCE113C77F572 +:1068E000484C66F77E4969B31DF8E4870D84F9BB0F +:1068F00026DE7F0CFEEFFD18674AE3B9C190A5A222 +:10690000BFAA40BC7E06C40986B054C9412CE33CF2 +:106910007F5083C8DE8CE23DB00734EB4730CF5B5D +:10692000146B3A5C75FD8DCF1F7C13F2A97E046B4E +:10693000449FD745CCBDF07E82F62BE0F96B92796F +:1069400000F0F7A664FE98E1B1F439CAE191D507E9 +:1069500080AEEEB3E304F2A37BD73C3702F5E3EB62 +:106960000298B7F0D0EC43AFAFA2E503B36B865704 +:10697000D15E0FD75A785FECA6EC089ED370EE87F5 +:106980006DFFC0C2F5551B47BCE71EA4B7EFC37C23 +:10699000C435541720DE87D07F91A9FF02F891D724 +:1069A00030FF446EA4F6927B7F61B1CB9EA2EBF3E5 +:1069B0008030742DC4093E1AF8C65238BFF94078A9 +:1069C000E875A8C73777B27AF9D0B5107FAADF3C4F +:1069D00080F5078583D8FEC2CDF72E952EA2F5F05F +:1069E000416C7FC5E68759BDFC20B6EFDBF06D8CAE +:1069F000573D7417A3938786DFAD06BB6ECA2DD6AD +:106A000024F73DF3530A2F0FA3FEBFC57811B6003C +:106A10009CE7BFE6F43FA57E08DF876FB1FE1E52FC +:106A200027A734E4C9A2C64F61DC5A3A2EED17827B +:106A300071E9A329BAFDE98C7B808DDBE48CFBAA8C +:106A4000217E2AE316181E0C070FFBB44F67DC9D4E +:106A50006CDC59CEB8793BF0A98CDBCDC64D39E35F +:106A6000F6E925C79DBECE3BEE8A18EB3FBDF02769 +:106A70001637A837E6C3F8D3E9BAAF3EBBFEC390DA +:106A8000AF31BD96F6A7DF9F4ED7F72CFB77AAF064 +:106A9000FE00EF4FD7F12CFB0B7094637A81C34F4C +:106AA000D7EB6CE1877CB2E93B797FBA2E67D21FC6 +:106AB000F0067EEAF46EDE8FE21DFA2535162F1BF6 +:106AC000FEBB63D56E7BD5D9BF7E709CFB37EE8A4B +:106AD00031795FFCEE9F847366C377478536BC4F80 +:106AE0006407BE9FBE3D1D584AFB3FF46736CE4348 +:106AF0009D43C2FC46A093D7857368BBB53191C74F +:106B00000FF3D87EEA1D23029C0F993668054C9C32 +:106B100097C0FB1DA9867327D56B8CAA4ED7BCAA3C +:106B20000BF7E138D56B72F8DD6AD520F03D783E81 +:106B300023561C17DEAF86F79A49E0BCE229705352 +:106B400038DB506FF5223C45784785F92A5BB773EF +:106B5000DCF3A2F0B595804F4E7AE1930B3712E843 +:106B60002753B8DAD4223CF01CE093293CABD5A2E1 +:106B70007EF0E379EF8888767A4F2D417DD833F225 +:106B8000F502E47BF50C083AC475BBAAD616C08E94 +:106B90003C8E571953B965B75D09FB702175DD1738 +:106BA000F11E0CDF3E17A9D53DF161EADFE4DDF10E +:106BB000FB9DF09F8BD0CFD91DAB2CE5E770FD9EE0 +:106BC00069C2764BC08048C07EDF398F40DC0FE061 +:106BD000B569FDC95A7D17D49788EB0A60873FAD28 +:106BE000D535B17BF1185D6DCEB2F328F783DF8325 +:106BF00071031DCB2747F64670FFB056C220DF2039 +:106C0000B79FDA17ACDF514F9F9FBFDBF93B3103D2 +:106C10005533E9B84F0D31BC3C9A3576B27CC90684 +:106C2000B4B7EFC9EA585F027F8880F6DB9D6471D4 +:106C3000C925E22D36FC5DABEF42DC11EEA9A8F5CB +:106C4000EAC11069C72056E8F00D26E4A53971DCC9 +:106C500025E2959FC7FB81295C304E52B377CC0467 +:106C6000BB25C7EE4B59221E8EB8E30BFE71659211 +:106C70002136DCBF3094417CC07D778BE8B84F294A +:106C8000190DF655DA573E172865AF8D3B4E2E830A +:106C90007ADD19E7BB2A1FE7C6E36737CED3DE717B +:106CA000063436CE7876B37F1CFAC502FCDD86103A +:106CB000C465E8FAFE2156C7E239147F4017DD6942 +:106CC000F2AC08FBA0E2E1CFE3BD16D313C47D6EA6 +:106CD000E374E3C7E0ACE50580DFF776DC46FB3F15 +:106CE000FD125B6F5AAFFA1AACEB6E561FEB4F9B5F +:106CF0007FA56982F9BEE49DEFD3C9B39D6F07DA22 +:106D0000C721885353FEDA5DCBFA13DF7D28F26E7C +:106D10006E67F1F8EA29E39CE5FD1495716FFC9D1F +:106D2000D235DE4F71FCE722E6493A72DC3F8E1322 +:106D300077DDC8E30D1B38BF3DC7F7D58620DE40A1 +:106D4000CB6F03FFD1768F641BB05E1F67FEDF63DE +:106D500059039F77655BB05C30D2199A46D7F50925 +:106D6000EA97C17D49D524570375F20319E3DFCFB4 +:106D700008B91AB09F8992AB81FCB94DE0FFBAE225 +:106D8000BE9B663F5E0372E4C9A0F92BCCBBEF8CBF +:106D9000EB8FD1790CBFF0E175703FD4779E9109EC +:106DA0008CFBDDADC76AEE86F57E59667FC727CEC0 +:106DB000FCE2CE975FFCD54DB0EEB3659CF7F09149 +:106DC0001FD5DC4CC719981DC1FAABAA75499CC2E6 +:106DD000BD7BEE7E8C8BEC9BFBA20E7C79BA7E4E4B +:106DE0007BDA7F11F4DF47EBD06F2036A4C3FA0EB5 +:106DF0001FF9DEAF6EC2F6ACFFD3CF2EAD81F353D9 +:106E00009BBE231BE0AFD17E9FC77ECFF07ED54EC9 +:106E1000BF13F7C3BC9E9A2DE3F581BB9FD98FF3B7 +:106E2000A7ED9763FB675FBC0EF86280E201E2D0DA +:106E3000DF7D66FF20EC3B6F3A5F41F947E1FC15CF +:106E4000E86DE7FDEEB91FDEDF0BED299E00CDFBFF +:106E5000E67EC8E6F12C1B9F8E7B7D9CE2E9A9674C +:106E6000F6B7829DB469B682FCF6F4B32F36581398 +:106E7000CDE37F8CCD6335F4DFF7F28B35308FA710 +:106E800066D379A870FFCFC11A2C1FE3E796A4BE82 +:106E90002A386727FF809D5322C442B916D416367C +:106EA000839F313BCECE2DCD51D20590B794748DBA +:106EB0001CC46D93DEB8AD2CB5B27B70EA7DCF0FEC +:106EC0007FB9E096BFFE7EE729D411A4E3D653B97B +:106ED0006E0BEEEF333F47A9F5B6AF57D204F6E598 +:106EE000CE0538B4F1E19877C027370E7FD98C34BE +:106EF0008F0FC7B90007FDEEEC71E0985BF08E973D +:106F0000D4D226FE5D453ADE0B25E020D221F4875F +:106F1000E51FB07B47A836F3BC7F285EC1E2633F24 +:106F2000B03C722C48D5E5572A5CFB39BE71EBBAF0 +:106F3000BDF517B95CBDEDDD6B300E519F264310DA +:106F4000671F0F2FFEFE142F243CC1FA10DFBE1363 +:106F50009196B179ED66F3F2E3F59CEDDEFEE3CDBB +:106F60004352FF6D72F41FE3DE7DAC0FC80FF012C9 +:106F7000807CE78B26F0A9C4E327D166763E3A6A87 +:106F8000F7231C8E1C8D36B2FC8DBD237F8840BE3E +:106F9000ED77476694953AD7958B593F89BBEC3985 +:106FA000A22577BAE3FF2619423D126D51F01C7FEE +:106FB000B4857D8FF67B0DFA39DF75BE673BEDDB5F +:106FC00079FBF6B1F6AF976ABF0FEC46B4CB98DD0C +:106FD0002376C83B316F837E1FEE39A852AC91B83F +:106FE0003BFFC962E7669C7C99019E2F33699A91A9 +:106FF0009A01F2DDC98BC9B0FB5626D565E640BEC5 +:10700000959317E3E4C38C7F2F509EE577C8C6089D +:10701000F04BC7E190B19E14EF8173C61D6F1DC781 +:10702000F2DF47E615E0EF7D1C2F88781EC0B10F18 +:10703000315FFD229CD7FF9B685E5DC57979F27D4B +:10704000FCF371FAFBFF6E8D3FCFC79FDF43247EB9 +:10705000FF03C7770719F9E5D7E03BB5EC9EE4DB02 +:107060009E09610A5348D3793CD5443E16B9BCA069 +:10707000F632EEFB76C119CE5451CFF7703D3F0684 +:1070800017313590C7626DE9FD6651F3F289083713 +:10709000FE8A701ECEF4C88D25E2F598AFDFAB31C5 +:1070A000BB36047F6FAA841DE11F8F90C5488F12E5 +:1070B000B7837A15D363078DDD2B9E60FBD263F710 +:1070C00006FBC6F1F3675399973FFD76CE78F4D16E +:1070D000C5ED9B5EBE8FA2537B0FE073F8B69BDBC2 +:1070E0003B145F18F79679E9F48F94F1F83C2FA5DB +:1070F0005A7E0E586F3ACD3956E6CF24C7EE4BFD77 +:1071000099878E236562C9F391443F337ADF1A8DE4 +:10711000CB2067EE8DC6314FFA686708E9EC88EF3F +:10712000EF9D0C53B30CF86864E32C3C67BA7763AB +:10713000280EFD7AD7CD88BBFD9291BED2F2CA2926 +:10714000FF85EFBBB7713CDC56A623FC964464E098 +:107150000F6BDD7D3BDCF1466B9D8078A2EFD1DECD +:10716000B7D67D79B79D72CFA3DB337F7FFF627E79 +:10717000F5E8549697C9F1C3CFB3AF6A711488FE8E +:1071800059B0336FE4F758AF7DE1C1FD701E7AED61 +:1071900045D4AB34201FE1E1FD701E5A349534CB49 +:1071A0003FCCED7F83D6D7B44679DC381D07BE7C53 +:1071B0009F04307EFA3EF9597C9E0B2F0365EC5CF0 +:1071C00017E90B621EAC4DFF0139FD37B9A0274FFF +:1071D000F686416FBD8D2CAF827CC9B6ED4192170A +:1071E000207FDA7B2FF6BA3276FFEB0D24D30BFC2F +:1071F000DAC3FDE75BBF375B8638ED8DF3B49438B7 +:10720000B708C7F6321657F90DA5673D547C7E9333 +:107210009A97211EF2D6F3F3AEB984C038F9DE9AFC +:1072200066C8A72325CF31ACEEF3C279BA79F8E16D +:1072300076F265C78343DA2378F8C729779579F31F +:1072400090CFF4FED757389DF9EF7F3DD3FEFBA1D9 +:107250007FE55FDEFF9FC6E9DF97B0D3B05FE0DC7C +:107260003F2653F908FE8820F17BA093A7795F4B56 +:10727000DF8B13BCAF9FB83F9C3387FD4F1340C2D9 +:107280007B7F997EDD9B65F72E7C20B17DB50F60FD +:107290005F4DC0FB14F7411CCA16041DF63D4DEDB1 +:1072A000AA32A033F3E7622290E2AC9480FDA96594 +:1072B00068B7FFA22CC8CF491C14615CF38FDA6257 +:1072C000C81FED0A1A49F8BBACE2DDEC7E89057FE8 +:1072D0003450CF5DA6B60641FEFCE8E979F8DD9BA7 +:1072E000D4A512D447F838EF3FF9EC7C02F7D73C2D +:1072F000132305D4A77919F28C6F7A5E443971F3A0 +:107300007763A8DF6E7AEED647AFA4DF17BE1763A8 +:107310007F27F2B91B1E677FEFA18BDD2BF6E2D52D +:10732000FF0BEC84AE5F8878274D57278F3BD946FB +:1073300012F4F3AD21F255D81771F0E0D0DF626D91 +:10734000EE3EB8A7F6A63D29CC871BA35B89B66F96 +:1073500084DB06C8579797D06F781F35C5FFFF07A6 +:10736000B254ABFC008000001F8B0800000000003E +:10737000000BC57D0B7854D5B5F03E675E6792492A +:10738000E6244C8649988493F030D0201308886D09 +:10739000B44354048A75406C13AB380490A718BCEE +:1073A0005463ADCD490201C204468DE1218F01C471 +:1073B0008B0A6DB04AE95FBD1D10B9686FEF17B950 +:1073C000D6478B36446A6DAF8FD15AB4F7ABFAAF5C +:1073D000B5F63E93339389606FFFEF9FEFD3C33EC3 +:1073E000679FBDD75EAFBD5EFBE4DD1C7B6DAC82ED +:1073F00031E9C0B179CCC3D8B2EEEFDA1C12B4993E +:1074000064FD838BB1FF71DB189BC4D8BB39F620B8 +:10741000AB624C7F4C8A8D82E7EF3E26517B59F759 +:10742000B83DCE52B81ED863AFCF61F06BA6FEB7A1 +:107430003BD8AD2178FFEA03956B8AA0DFD5AED2A9 +:10744000525963ECAA9F1CCAED85FBCB7FF259DB36 +:10745000D7E1FE720B4BCC0A3076C701CB59C7A5DA +:10746000D8CFC2E2E58C7E5FD0FF83B99297B19509 +:10747000F84F787FF94FFF38ED77F0DE9F7D16E605 +:1074800054E1DAF307FB2FB01D7635301CE7A8ADC9 +:10749000AF57E97FFF8E036FD9715DAACC12FE6FE3 +:1074A00030F6CD4FADA9CFD3FBB3903B0EEBB9A3D4 +:1074B0007BC387965CB83EF5DE6F195E19BC67C06A +:1074C00005CFFF8CFF2864ACF18CF3F91326782BE1 +:1074D000D41CCFDB5F837F5CC62EFBC2C2D80A0BF5 +:1074E0001F8F1D18C2D8E5D0077FDFECBF7ED2A466 +:1074F0003C7FC2866FEB8C15C0FA0EFD75973E0E71 +:10750000F0FBE47FEFD2019F2B3EFFCBAE7B017EF1 +:10751000F66F4E753FACFF8EC7FFB0EB07B0DEF7DE +:107520008E3A6405DACB1EFFD39BF742FBFCCF2FCC +:10753000C9B7407B9A2AD138EF1FFE9B57837156FB +:107540003F7BCD5006F45DFDF45543996BE0FCC6DE +:10755000F5FD26C6628EFE36B4888EDA51186F2885 +:10756000349F11D7347ABC7BF813BB8CF34B2C615E +:10757000A984FBDD9FD96580F7649025103FCF3D3E +:10758000F5D6C91F40FB3DA08F23037D60DDC3649A +:107590001F5EE3C3185C573E75C3F55754E1D5161B +:1075A000D0881E8936D595814E2F035DABFAE93A16 +:1075B000281D0F021D2F457A021D2F1D48C7F7F009 +:1075C0001F970FA4E322A463763F1DCF3F56E78E9B +:1075D000E3C3A78610DD07A3E3ED4FDFE80E5F00EE +:1075E000CFF18BC0F31289C335410D7E5F2D407EF4 +:1075F000C8D67DB0DEF75F77C466C1B3F7D7FEA506 +:1076000084017FBC634BCC433C249E75A87BE1FE88 +:10761000FC675FB50761FEF79F7EC98EF4875FAE9A +:107620003419DA2CF93BCDA0BD52E28D3B1EC9893D +:107630003B90BF1F79EFE43AC4679185B9910EB1D1 +:10764000D9D3B55C04AF80D6BB32C6E56165ECD852 +:107650005CE9D281F83E0884C07598E9294D413A29 +:107660009E9D867C37181D8D75ABB8EECBE0B9FEBC +:107670008714791DC82F097B681C8E17E174FDE102 +:107680003B25C85F3F96DC9A540DEBB425ECA86F00 +:10769000F4C316757F6020BD99E566F7FC0A6CB5EA +:1076A00010BCE9F449E78347D3F800DF47FA1A78BA +:1076B000B9903C5F783D5F0D5F5DAA96C22F06DEF4 +:1076C0009AD73A481FBF59E988A1FE3E6BD3B6DC72 +:1076D0000DF3265EB0B1BDF0CABC097FB4693903B1 +:1076E000E1FD3DF0A366E2C770E3876B87C27BE1F3 +:1076F0001F96565A583F7F269FFFD0C234137E569E +:107700003A126F4A302FFBA593ED87792DFFE6944F +:10771000108E3B76D9620E94BF2C16C7F5FF71A769 +:1077200033A6437BCB4F9BE6A13EFB609783C1B45E +:107730006CF1AE9F117E6E63AC8181FE78EEE9BB89 +:10774000CFA33E7F7FB7853940BF2FCEEE26395F6E +:10775000BC406D68CD83F77EFEC5A3D87FE9C16CC0 +:10776000DCA4A0FFE27912B4DF7FD821E17CEF3DF9 +:10777000FDC7CF71FC3B7EE16608FF7F1FF9D9A5ED +:10778000A8FF0CF8176FB569BD26F89732AB96C401 +:107790002FF287B90D032CEFEEE841BE5F8EF7F9AB +:1077A0007BD2174276508E96E375045C8FBA83CEF7 +:1077B0004B53FAD17877381277055C44E722790A7F +:1077C000D1B908E9BDFC402A1CEFA2FC20BFD813A8 +:1077D000B7F1FED122CE173DF4DEDF50AF4FEA7F86 +:1077E0009EFEBED1FF13B52CA59FF1FE4A076BE8A4 +:1077F000CEA097AC797CDCE5073EBB24753CCEBFC0 +:1078000003E7E1F7BF2F311DF53C3BEC8CED8775AD +:10781000AEB0C747E757D0FD5077457FBB48CC8B0C +:10782000ED3C68FFC2C66AA99DC5DB47EC6C09F553 +:10783000CF8536EAAD5C9800C6BDFD480EF1CBEDB4 +:10784000475E3DFF3B68BF8B3807797EB7A0E73CBA +:10785000EE77EFEEB4305D453B235EF230EABFC316 +:107860000EB617F1688B97E49BE87DFB33CEB3A887 +:107870002792ED6EE03A65E07A5A9B6ABBCE8D6244 +:107880006C4D5398AE16D6B0BB17D7A75BD97EB850 +:107890005A59C3BFF2F65015DB7A0D3C473D63578A +:1078A000D456806B4B36304915EA8F1C92BF6979EC +:1078B00079342EB0F578D4576B9BA63F780EF582BD +:1078C000A233D58BE331DA3FADCCFA36E2F77F0451 +:1078D000BF1870DA6D613500EBB0233E012F366BB7 +:1078E000787D298C6FF3792A0162D6E69B1344BE1A +:1078F0008F54A824A757E771FE71C0F8C88FEC44D5 +:1079000027C37915BFF523B3FE70B168F008EA23E9 +:10791000D89F3783FE62234DCF81755C15D036D159 +:10792000DBEE01B853E8EF52C9BE11F2F10B29E0CA +:107930003B8F786876A8FBE15AC7A236A41FB394A0 +:107940007FB819D6B165C117A37B2BF07EE735410F +:10795000DC5FAEF27FB47978FF3AEB9E59D723E52E +:10796000E2B57001EECF75AED17FC02B105BC9823E +:10797000FECF49ACBB1DED47E52F0F9F9B086DC1A6 +:107980003F27B03DA47F9C13781FE669656CFA61C0 +:107990009C4F89DA5699F86DFC33A11BAE03B86E83 +:1079A00059326A02E2ABA23BF4AD71D0BE79C9880C +:1079B0000968372DCBE376D3095B77C158A42FCC68 +:1079C0008BEB99C71236C46798A976C2ABD087F5FE +:1079D0002C20DAF083FEDFBB7D44ACBD74E0FB37C6 +:1079E000C763375E075D6E3911BB0EB7E379A71227 +:1079F000CFA35886BBD569D9CC34DED1C0C96C368B +:107A0000703CC0EFD6DE4CF8659E8F10BF01A65CBF +:107A1000A5E3FD45057BDBA581F25D97F3DA4D68B3 +:107A2000BFD6E58C3E81D7C1EC12038E747A7C8C74 +:107A30008F804F56E705DBF2E0F90D79C17579804B +:107A4000A7154AA2C40AFC724A0D6FC4FB2B2DE194 +:107A5000E15EC0C75D735E7A5342BCF464B677FBE7 +:107A6000E7D3857CE8721CD6F3FA425B0CE16FC960 +:107A7000BE722BCAD96BAD0ED502EBFA0B768171B3 +:107A80006E62DD4487D773BB8A71FD352058D2E51D +:107A9000A4F76E89239E596EA01DE4F016D66B43A1 +:107AA000C57F2BB02E5EE7338DAE0B5890E8B588BE +:107AB000C5DB70DF00B8F7E23A0CB899BFA704E560 +:107AC00085FD4766FB2E1DEE734DD187519E8DFBC4 +:107AD0007FCC0B1FC2F11682605F3901E689DEFFA1 +:107AE000B0596E8C7EAD824F99129C3C1BFD256D6A +:107AF000FC5417EC235B853EA8AAE176942FAE9C3C +:107B0000453B2B7D1C16BE3A9894CF32249BCC5C0F +:107B1000A04F7C82758CF7D2FB19F3FB1AAF626F12 +:107B20004D4478837184371DAEF4F5FE2A8FC3531C +:107B30008FEF99E4AD3EACD935E85FFF777710DF82 +:107B4000ABAAB1115E7E096A8FD3357812F5617DDB +:107B50009835B4572299B604719D069CE9EBAAEFBB +:107B60005C274590AF834A6094FA8FAFF34C9E3503 +:107B7000055ED67D72AA32F9C2EFB1A08D5D4CBF11 +:107B8000AA1ABEBE00A005D7C76ECAA2FDAFBEB17D +:107B900095E66B95A23EE4B7743CF695692B916F20 +:107BA00037D41595B6407FD01E61C45B5F8DF6E378 +:107BB00094FBF9E27EBE76A902F7BB467BE9BE31B3 +:107BC000CE0689EB33435EBB64B6E4496C5B03BE0F +:107BD00039C0BF7D1BAE7DFB3F01AE982587C9250F +:107BE000C08F380F3EF7E87D3F86F1167A59593B32 +:107BF000E0B7D1CA886EB0F0D173800FDF6B3AB0B6 +:107C000003F97961FBB5A3D15EBA5D85E7F05EE368 +:107C1000FA6B47D79BE633E0F8C5038535A8271AEA +:107C200019EFD7A73CB715F573BDF3575BCD7AB9FC +:107C30002F87F3D5276F5CEB1D4BF2AC1E46B93690 +:107C40009E97E4F37D6BA1B01B7E51C36E9D03D75D +:107C50003F35A9DBAE1E85EB0A8E6E07B8FB9AC7CF +:107C600095E13EB0B07D5D0DDAF77D9276D809F2F0 +:107C70005EFEC8E1AF211D5C2A184820B77DFB37A6 +:107C8000F2E793B4523980FD582DE2A7FC91978218 +:107C900079979AF54E94D6D39AC427BF6FC0A54062 +:107CA0001BFD5A56CE02FB193A515C0F157CE75367 +:107CB0001FFA0F13F2B95C145C2A13BD1E92B91D92 +:107CC000B3598C7769BE859E1BFD26E4733BEB732D +:107CD0005B78423E5C83C1D0FCB5B02EC5C702EDD7 +:107CE000B84C16A27DFB213BA83AB467AFB06B48F5 +:107CF000F70D524F0BDA3BFA6FB218FA33CEE13D73 +:107D0000C71740FB03B07F5AA03DB5CD5784F6B7E7 +:107D1000FBA82380F66F28BF94E659127BE938DA76 +:107D2000C1A341AB5802385E741AE2E5F19D2C8084 +:107D3000FB5D01C8520FD2DF9AC8457F638CF2A960 +:107D400082FAEF83EA1A37CBA007FAF59FCC744387 +:107D50001EC841C862BA626EE7A7B58BD2FA97A572 +:107D60003C1FE6E99170BD56E8D30AF8F559BB8F80 +:107D7000213D7D373315EDFD432DDD53F1796C1930 +:107D8000637B2B51A9C7A9AD284C6D067A173378B0 +:107D90008EF46F64AA0EEFEF93BBA793BE177850D3 +:107DA000AD89192D12CAF5517A0FE43BBFB5D2BC8B +:107DB000FEDE5C5C2FAC3F17D7FFFE331355C4C704 +:107DC00083F6C02AECBFF9598786EF37B238E19DB8 +:107DD0003DE3203A74DA7A8E235DDE9F9DC55A40DA +:107DE0009E3AED4027EC3FC34974D980F20072E01F +:107DF000447900B9F0D8F5E30B90AEA556EA3FEE12 +:107E0000E8BFD7A07C57CA4A3702E571246AB3910C +:107E1000AECD0ED602F72BD6E834FEBBFBAD0CED93 +:107E2000F7CD52B4B61EED8A527B00E340EB73529D +:107E3000F5754B3EB75F5A843CC19BF370BC15BAD5 +:107E400083A1DC040F1C6B43F800F50D28FFC087ED +:107E50002DF9D0CFC682C4772BBAE733F46B9FEBF2 +:107E6000FD977F2F86FE9B351670C03CCE928472A4 +:107E700025C59F2C0CE5E0507194F0BDB996A92D55 +:107E800095C82FA765C4D32695A90C753FEBA1F61D +:107E90001DF09CF4BEB5A705E5E88ECE090CE71DE4 +:107EA00077E6E7448757BE038ED4E5E4E79E1C8659 +:107EB000E36B2E5A97137531FA877B46C79A25E4F0 +:107EC0002EDE6607E518FA971F3C7BF7AD38FFFA00 +:107ED0002B599905DA53AB1B7E7F1F3C5FF94CE9A8 +:107EE00004F4271F1378F824AF218EE3BA75376B9B +:107EF000C178929FF34D96C2E1CCAA86F9F1FEC1FA +:107F0000AC18DA036C8A87F6FDAB8F4AF16F221D3D +:107F10003AECE4BFB2BFFFA5C4028FF696D819DAD7 +:107F200063EB3E8BF94215FDFA6364B93D2EE722FF +:107F30005E74F795A8775FB204D0DF1E668D139E3E +:107F400064301C9B619D7BBF33B9E894D64FAF77FB +:107F50009A8EEE58338AF44E09EAEDE47D9B3E0F8B +:107F6000FD9C230FDC36C303F0BCE3842E5F077A4D +:107F70003D70FF061DF5CBD300F778B81A7644792B +:107F800042996D7AFF9742CF18EDCD4ED16F644282 +:107F900009517C36A1E07C9FD8006F4897A352A07E +:107FA00005E01A2707FA46C0FAA63EF321437B1DD7 +:107FB000EECBCC0DF87B660F3A0D80CF04C375670E +:107FC00055F7DA515EAE3EFAA1AFD7E44F6EEE78C8 +:107FD000A704EF7F98AFD1FCEF0B3C19F8D960EF05 +:107FE00091D15FD48F803E8579C68DFE9F5AC4D3D0 +:107FF0003B62DF39979FC7E347D6840FD7B341F879 +:108000008506FC4BC47EF4563EB7337E2FF4EA1B44 +:1080100082DEC0CF6F203F072B407157915E25FB5A +:10802000D9AACC0BB6301C5FE572A1247C8807E886 +:10803000FF16E9E18AE892BD663D2CFA039E7CA812 +:108040000F365F7117F1DB887F9334E2B767561103 +:10805000BFB9016FC86FFF289ED2F13372EE264779 +:10806000098CFBD76A8003E971E4802F531C71C926 +:10807000A716169F686A0BBCD4F4BE5456827C7B4C +:10808000A86802CAED07673FF44930FE88215C1FEB +:10809000940DE1760BD0A106E540FF3663FB513E1F +:1080A0005D81B2D9A6B8907B08E71F03FF60919469 +:1080B000DD38CEFC9CE37F4396785E3EC8FBB9F08A +:1080C0001CF7D591E9CF39DD3E7983CBB1BB9C114B +:1080D0005E47CEFDFC24CAD95F415E71BF9F5ACE78 +:1080E000E9B2F22985F4D04AC42FDA1179BD76CCF1 +:1080F0002B1878C83AFA21C7F3338067E293C46B30 +:10810000EB515F1C053DAD219E7507E2A5FD0A16EA +:1081100040BA36F64E6D413DFA84AC852C6A3F7EFE +:108120006A7AF7D0FBED57748F453A76499CEFFC9D +:108130000AD71BB2A2E6E37E532FE2190FC19A7A47 +:10814000C8EE0ABAB17F8D58D7A8ADABA72F42FDB4 +:10815000C572545CC7BA672C64277E74508A31E0BC +:10816000C7873E0BBDEE80F6BA318CF6F7ACF8D27D +:10817000FBAFC1751EB4049C00EFBAFBA261D4FF33 +:10818000FAA16CD287B12698C381D68995F4A02331 +:1081900026919FB452EF9DA6C038DA9AF044DCCF06 +:1081A0001D738F9CDC89EB0EBB5407EC27A5BA8CA2 +:1081B000B60BDF67E1BF15AC87FC9FB18170FD1086 +:1081C00058EF321625BFC8EDD7E71D87E7F5C81F62 +:1081D000007FDB8DDF699981F0FFDC42718C0F7EBF +:1081E0007EC3EB0E6C039D18C15BF7BA1BE6CDF2A4 +:1081F000DB35A7C92EFDE09911EEF097D80DC63AF0 +:10820000D6DDC7F51958222FC44DFC9DA5B39AA001 +:10821000A97DA3E0D7AC35709FF8B081E496591BD7 +:108220007C734CFCB44ED02958A51DED2539562B36 +:10823000518EEB37DE528774B07AD44AC4CFAD8208 +:108240003E9FDB82B7E2FADF6D628935C0CA7F6E7E +:108250005212A887DF6952A96DF03D6CCBD3280E6E +:10826000B5429530AFB1DCCAD638C0AF5B95261F9A +:1082700046BF154B4236D16FAE231FFBA5CA89D12D +:108280006F594372BC13BC9F889B8BFDE7F66E2928 +:10829000B1C614AF597EC09958638E57C6F252DAF0 +:1082A000497B56BC7F21BF156C8D18C62D9D7C085F +:1082B0008C2FD17BC5E3C36B86001C8EEA1E7B210D +:1082C000E04B1BD93B0DC343D75866B9512E1C8CCC +:1082D000FB0BE9E33E047445FC6D6852E81A6B52EF +:1082E00019E2F19D261FB51F6CD2A8BD43E0AD5425 +:1082F000E6FEC81E61271BE33C28F060F4434ADB1E +:10830000AB301ACB88DFD16246B9B6A1FD02FBA320 +:10831000754D1BC565ADBA9DE27BA0CF7720FC569D +:10832000354C760CF4677CBF8B51BE608A231C23CE +:10833000BE1FA9E8D87FD9810FEDD86F939DEBA917 +:10834000F76DA9F01C18C2F7950386FEC47D8DF069 +:10835000E7213FC0E1D719F2BBD166D67049284367 +:108360007CDD84F75ECCC37806E2FDA708D7EDD1AB +:10837000B3D310EF9E10980C15887717E98D8FAB4B +:1083800019D92183D1D5C0BB4107F74816C5F5C51A +:108390009AC28CF3F512C2FF834D0D749DE208C59D +:1083A000713E7775E24BD7FFBCA0C38B063D2E72A2 +:1083B0009DED86BD013D8702FC362DB0AF9DE2EA02 +:1083C000B1ADF5248F9327A27CFE66883D63FE0540 +:1083D000E8F81B84CFE631E818A23866597EE855E4 +:1083E000BCAFB0E893F5309E478991DDEA1979205A +:1083F000BE10E57E2DD004EC64CFDC47E35668ABBD +:108400000F480CF5A027148B5BD10EEE9418FA419F +:1084100059B3C2D330AED53E3EDC87E36595072421 +:10842000C4F79059DD76333D2F2C4717D7AFAF49AE +:10843000A3B86F325EDC6265AD55183F2A7F10E34A +:10844000CC5BB27F4471E546DDA13A883978DCF92E +:1084500036ABA2229F7FC31EFE04E1BCFBC1593A8A +:10846000C6262C9155E31F83EBFD05A1BFE1FD3D21 +:108470006BDB4A10EE7AB7761EED46F03C67FEC71E +:1084800014DAA7B89ED5A599A857EBB3797B43E733 +:10849000AA761DDB43B5BB24E83FC7639FE981751E +:1084A000D40FE7CF6FC3E730DEA12141AB87E4D023 +:1084B00096F7B6C2289792699DFDEBB5B2B74D7E8F +:1084C000DE9F3DCCE07B9D79FBF50DF07B9EC7C424 +:1084D000EFCE915F8DDFD3F58D7B2EF07B2EF2B743 +:1084E0006AF0B7DF7311FC5DEAE1F23DC2C3F97BCC +:1084F000A64715F627E76FA7D053E9F38F15FD8D33 +:10850000384CBA7DE0B5807D00EB3976D3E337A1F6 +:108510001FE13830BA0CD7F37871AC08E3281E0B92 +:10852000B71F1EFFDBBEA239789DFD78513DDA8B67 +:1085300062BE761BEC6FD0AEF09F9FA7019F568C5A +:1085400064B151748D9795C23A3DA25FA72D5088B2 +:10855000FDC6CDF22EC03CED4C0157236B203F925F +:1085600081DF87798A743FD4D82F37E4A4E2636629 +:10857000120F461EF7606D36CA2BFA8F1EF41FA726 +:10858000EAF5A9FEE34CE40F1B0B334932EBDBFFAA +:108590001DBFFC6848682EE7BB04C9FD3F61BC797C +:1085A0001EEE57FC53E07B27CDEE1B67E7F46735E3 +:1085B0004C257B3AC0E311FBEA819679A6FD0DEDCF +:1085C0000C1BF16F82F3AF4AD71F78789E0886386C +:1085D000619F80E3F1F89F07430A13FADFFF818769 +:1085E000DB13E3B292CFAD683FF43FE774F3CE659F +:1085F00029F681679692D2F62B4C57E0BDAC916A72 +:108600008A9DF1BFC5CBDDF822FEFB9B8CE2A16009 +:10861000DF8F47BF7F5DB157B698E419F6E1FB499C +:108620003EFD76DA870D3935E413F06A2F84F7DEE4 +:108630002E1E4D769C3DBAEA35B497378F514B517B +:108640008E7EE7E1FB31D8A12D33D00E1D29C79CCA +:10865000C07F9B477DA4203D365797911DBAEEB34E +:1086600004F957E9F01B76E866B4438B504EE6BC3C +:10867000986A87268241D37B8FE29A26A11D0AF74A +:10868000693FFAAA76E875F642931DDAED49DAA158 +:10869000DD8887515B1F5170BD9B85BF70EEBED8D2 +:1086A000A91170759EB230F4CB9DF1196FA2BD3D3A +:1086B000A49ADBDB43664559781CC14FF33D98F41F +:1086C0000F387F3BE1B90DFB87C223B0DE0AECFD1A +:1086D00038CE73EEFE4FC89FF4CC4AF50BCEA5F111 +:1086E000F36074DF20ECE4E47AC78015391E787CEF +:1086F0000C70FB786C9FF7658A1B3E38864D41FFF6 +:1087000078F3755DF47C832D1D4FDA84543C6994B5 +:108710008FFB8DC78897067FE3A1789689AF298E56 +:10872000A8F4F32FB5D5B4F6FF72DFFA07DF77B3FD +:10873000B0EE03D017443E8C639C0048D38076870C +:1087400012BD3F88F634F0FF87B89EACAD873194F8 +:108750003A80FFEDC3F9FE618CAF14707E570A2496 +:108760000117D8E65E8AEB52BE087F11685F82FF70 +:108770002823FE94318E507E42A178DB184C9C0059 +:108780005C5F637119EDA571AC97DAE37169D0AEE6 +:1087900004F71BDB1359A2C46EC17C58BC0DFDBC91 +:1087A000536AD85E00F39DDFD6F3A604F71FCD5EB3 +:1087B000F9AF128CEF2CE0FBA48B05C8AE56F10A82 +:1087C0003CB44071913CB388ED5D733EF94D6B3024 +:1087D000A780F4B95F7D3BDB4C1F3DB91ECC0BD9A4 +:1087E00098F18B19F63F0B9AF2E4B6DEBC0598BF00 +:1087F0007C00ED29E0C39107B8BDD07A46A2384F7E +:1088000027DA53646731BAAFDFC462AD282F258100 +:10881000B31AD2F4150BC503404197A25E1A7A260B +:108820005B25BBD4DA70D90D26396E05798A0332FF +:10883000F3A707C9BEFF2487DBD3C673B0C7C62220 +:108840005EA4DC29619CE7EE3E49433F79C8AC0059 +:10885000D9ABF9E3B50F31EFC0F487C90ECBBF44F4 +:108860003B8C6D8B6DEBCCE96067E55FC6F5CE5553 +:10887000053B5F443B6C5281C6F54B281AB4217C02 +:108880004A03ED7B463B886D80EFE755C1AB70DE58 +:10889000AB0AB83E4A7F4F17FDF2BF352BBE06E04C +:1088A0005A2BF82E58ABB34CF6BA615FC33E4EE379 +:1088B0005AD510B52D2EBE6E2CC7C1F7805FAFC53F +:1088C000E78E330EA2AFC39FCAAFE9E3CE16FCAA70 +:1088D000160467E17B1FCCEFBD0BF90BF82984ED83 +:1088E000154A78B8045DEE9AD9330FEFFF97353803 +:1088F0001BEF039FCCF9323E49CA9BE2A23CDD82CA +:1089000024BF4CB0637C67E1DFDD0CEDE505CCCE28 +:108910003485C78D793D4FF0E4B355D43F84F2B030 +:10892000F0CC15142739D9E856413325FB33D15FF4 +:1089300067C16968F72C98E520F959A0CC3AB913BA +:10894000E38953158AABB0A8A3BFFEA92CE5FD941B +:10895000BA2082AF74E0F8CCDCB6646A73B94ABF5F +:10896000BF40C9D5B32FCD341EC00C72B250C889D8 +:10897000F17E9FD43D16EDFBB50FC567AE07B89FDE +:10898000C8EF2952A0BDEEA113ED6BAAC1BE6FE6E0 +:108990007C08ED99BA1FDBDA3CDC2F175AD9099B0A +:1089A000C9EED854C0F5F02621F7F05CC7E7ED0515 +:1089B0003C9E8A390D3FB4D107F3835D71EEE084AC +:1089C000FF1CAB0DAE2F1744BF7098EBC7927A20F7 +:1089D000C834CF642AE9E2EB3819D01D96FEBC9862 +:1089E0001DF811AF0AC6DD47207DBBE9EA623D7480 +:1089F000CD85FD0FAF2A5325BCE6B3005D3D2C4469 +:108A0000572F6BA0AB8F45E95AC4BAE9EA673D74AA +:108A10002D6109BA6A58A967AAF328C34C2FB44735 +:108A2000B1205D0F95723FAEAFD9CA303E097E1DB1 +:108A3000F96F7A8B436DF5903F47CF1BC17FC37AA7 +:108A4000D75F17F07AACA1B7F0F8DDC7678A631675 +:108A5000A21BAF0B4AC78F4519B1638D29BEDBFA44 +:108A60009842F5D9067D8CFBBF16FBC1AF85BC1DB6 +:108A70006A0EBC1646B81E53025807F5443E8F3B9B +:108A8000F5F7E7FD7E25DE1B39F7CA3719C55B739D +:108A900035B43B06A3D7E0F1E6CA12DC67FA30DE54 +:108AA0000CF3F59D9D5A82F1E6731D3F1B2BB9C84F +:108AB000AEB04B6EB43B5E2D237D12B733ABB79F88 +:108AC000BE1666EDB5229E35D867CBC53E3BECE2BF +:108AD000F7D9FB0B82AFA1BE38F563F09C60DD7760 +:108AE00076483C5F630DB4613D49BDF053D2F7A3B6 +:108AF0001B0B82BFC7F70CFC8C9C9B4B79A0BF1E45 +:108B00002C4AA99F79AF80DB6987CAB4958877031F +:108B10000FE38E2844C7B73A86EE453A5E081F6FCA +:108B2000DDCFF17163413841FACDAA917C9EFAF113 +:108B3000D8A19817B8101C9F1BF4FD27C181E280B3 +:108B4000FAD3D0174F5C1928C178FAC28883D73B73 +:108B500044AF099AF1B530BA8535E6F3BA165BFE33 +:108B6000C0E7E0D1E7A1BE36EC24439E6D22BE05EE +:108B70001352DEE963CF5E96CBF5932F13DF3F24CC +:108B8000FCA3AD222EBBA68EC5CCFBEEDA9B96FDD8 +:108B900009FD00D0C1DA25B05E8795AFD71EDF761C +:108BA000552EACD75ECE2A317EEE50F8FDAFBF1306 +:108BB00063F34DFC9FE58B71FB5DD44924E54BF8D5 +:108BC000F16B8A53F7B3CBBC5C4E2ABD3C4EE56DCE +:108BD0000D3420FE7DE100AB378D6B653563BC0540 +:108BE000E8F757D2F3C285039E8FF34EEA8F0B143A +:108BF000CC0DB0A52EF3F319955E6EEF7C25FB76B8 +:108C0000AD2BA4A830DE5ACD319DD77754A5C47FB3 +:108C100073BC72EABE29E8B2B18905A8BE31491F0A +:108C2000EECFAC1B1764584F6E5503B578FEA0B558 +:108C300078B2CF655A476B9E88EBFD7DA26FAED9A7 +:108C40005EFA6CE26B61D47FC53C2F7D32E7951AEA +:108C50008C3F7C5CAE11FF21BDD14FBAC39B9A976C +:108C60005CDFA40688CE4D0A5DD3F9616D59FB3BEC +:108C7000486FBBCAE96D17F52AD6F89F5A707C2B4E +:108C8000D21B774985DF1FFF4C1ABDD518F97183B8 +:108C9000D17BDDB1BAD0541CC7553601C7B1A2AEE5 +:108CA000E0FEC7DE6C986F9980375B0DC535E8979D +:108CB0001D541268C7D918C09BB2FFAA01335DD6F4 +:108CC000D91A7C58B7BDEE334BC67AAAA95EAE5707 +:108CD00000B7817326FFFBEECAF06AE403FB532161 +:108CE0001DCD1F4509C6110EE6BAB838A3C7119AA3 +:108CF000BF16E0ECBA3C8BF2CF05F9A19939D0DE72 +:108D0000246B31AC0F3CD6797A3AB623EBB30388A7 +:108D1000D743528F3202EDE46B64B28BB3043F6CE5 +:108D20009AD6477EF4019F93C675467F3623074047 +:108D3000D8C8941EAC23D8B4227FC648B846AB79B5 +:108D4000B4315A2113DEF49B653A1734E4FABF17A5 +:108D50009AF3406D3E0B8DB3E9D3BFD42DC2F91AFF +:108D600019CD57D3189889E3EE949457109E87EE47 +:108D70007B651BDA5D3B5E5F4C76D3713FAF9FD95D +:108D8000B1C75E1B73713CE13C3B6F0FED6F97FA0F +:108D9000DB25E573F6A31DDFEAE3755FD1E09C57A1 +:108DA000CBE1BE56C1540BE99BA085D75127AF4EEE +:108DB000733B1D9FA3441D52FAFD5BFD9C1FB63102 +:108DC0007DEA0C98AFBD73AE8C781AD5D84379DFA5 +:108DD0009C881C4438B7597BE238FFB6AAA0478765 +:108DE000F9732A42B215EEFFC2CBE337A3226576B0 +:108DF000EC5F2FFAA7CF63F4DB660DD538AB701CA0 +:108E000016000AB351300EFACF177AFFA75E2B7FF8 +:108E10009FB1E9B88E9DB65E09F3283BEF512582DC +:108E2000A72AA6601CF25742BF4517CA2C4E7A31BA +:108E30002CE1B8FB92ED5E09E7DBFDFDF33AD2676A +:108E4000F7157CBF18561B7D6114AC6FD8CD32B5B9 +:108E500077DB381D76DFC3A85E9BB19E42D4EFDD81 +:108E6000D678E162B89FD3C902686A8EAA6241B41B +:108E700063BE7FE32B758BABF07EF47209E19975CD +:108E8000868D81F91243158227A7AA87A1FC18FDB8 +:108E9000D3D777A9A003F0A5847C08FD18E6CB61A1 +:108EA0001EEABFC3162FF49AF0E217FC67F051FADE +:108EB000783B04BE87ADE8117E4F37E9432CAAA664 +:108EC00078FCBFD8A9EE04D648F5EE9155F603C854 +:108ED0007F1B2523CF11F7617E7B0BE21BE5DE7F35 +:108EE0003A8879ECBEAA32AA3336E6F9EFA11CDF44 +:108EF000EBAAE4E908C76E5BA20EF136AA719A15D7 +:108F0000EB5CE4CE40CB3917F6E3E7ED7675848A67 +:108F1000901EFBF35821E223BAEA6421D26347E5AD +:108F2000498AA344725C64175A26DE351DE34596D0 +:108F3000E1F54851D37C5C7E3AE55811FA01EA50DC +:108F40007D23DAFD9DB09DA1DD7FBD7FFD468CF3C5 +:108F500017CC037A939ED49D38DFF19BE74C0CC06D +:108F600078B1A09DFCDAA824658D46B9DD60A1F337 +:108F7000675BC246BCA887FAF7559D9E7E09C63B33 +:108F8000A7737EC8BFA5FE5839B4F325F52330C6B4 +:108F9000D9A2927A7528C0F160A4FE18F2CD83415F +:108FA000DF47A839BCB54CAA17728D7621AA5F7C21 +:108FB0001FF02E21BF61013EC553AB5933FAEBBB05 +:108FC00024D688F54454EC8ECFBFC7385DD4B08426 +:108FD0003EC82E49277B6FD3A70B8E21FE75D0D7B5 +:108FE000FB558CAF847E8BFD7704156611FE12C68F +:108FF0001BDC42856CB425887F61ACFF6AC9A3FB8A +:109000002E2FF833EE2A59C27A6BF6F1952C670AA7 +:109010006A79FB59CC33A89DE783A8B72EB728AF50 +:1090200060DD96DAFBA18E7AF48BAB94BBD09F54B3 +:109030006B4DFE19FC179118F9156A635B0FDA572F +:10904000EAD5F6B30B72691D640F809C6D43BDBCFD +:10905000ABB9C38976B8911F60D6848E721279F647 +:1090600012F26B0B641EF7850D90F633A35F819CA3 +:10907000201F8C7DFD12AA4B437E24FF51F433E662 +:1090800071075EB917E327EE337FFA8CAE417BCAD6 +:10909000399E5F163A45DC459628AE73263B2E2353 +:1090A000BC676E9F85F932F5A9C02D743DE33C4B3A +:1090B000F5F9E6F7C10E9C5D1CFAD650E0EFDDF73E +:1090C000D9299FE631E2C157093A1974C67F93DD69 +:1090D000C8CAF179EEF78CFC2E580A26BA1C3E213C +:1090E000933D1C9D52B1176D954D4F879BB1CE3B63 +:1090F000586A6D90BE8EFB5722887CAF4B2C81EB5B +:10910000F64E391F3C006DDF554A831DE8E0AD4E39 +:109110005DDF66FF1892BF12F4F7F8C12619E5DC8F +:10912000932DE800B48C4FA673481C3E68CB5EE1DB +:10913000C743FF1DFE5211AF529D58BFBA70FD8844 +:109140007C825BED21FBC6A00FB0B0B275025DA7BB +:109150008F83EBDD3E2EF79A8BE96EB09FB5B90A8F +:109160009D13CAB530AA936337908C133C5467B4EF +:1091700042D3DAF30412009EC5129F7F9A2F9917EB +:10918000A7FB6E01E7FDFE848EA9FF2E18FA499514 +:10919000E83E6324B447ACCF53512FB2AD0EE24743 +:1091A000107BFD0B8C37461ADA9E8379402D6A2A94 +:1091B000ED838920D635BADECDD1287E628E6FA0B0 +:1091C00048EE70A4F0B33B43FC01E96A8607CF295F +:1091D00076484C7B00E5AFEAE47494977B2D4A8F88 +:1091E000EC477936BD4F7C901AE7286E4C951F9B53 +:1091F0009A4AC7C3A2EE5ABF93EB6595999E033C6A +:10920000910356A1CF18ED67631FB3D2B9B8488355 +:10921000FD8045F059DCC01FF49F04F283F962C061 +:109220007EE86958BFBBA16D15F2B7BBF3C8DD7806 +:1092300035F4BCA157DFF67339A9F0093BAEFA73D8 +:1092400087195E4F6EA8EE57385E8B9DEA255B6DE1 +:10925000ECB728C7AD4FBBF064347B3C2F56742766 +:109260008CB7C7CFF922B98F94CF15F638AF9F1CB2 +:109270009BA7C9C407D6D0EB27E07DE768BF847100 +:10928000F221CF9D96319FBDF129B59211FEF9399A +:10929000C676D67D0AF75BBD4A5671DE8EAA39B412 +:1092A000BF7477B27CD47B1DD6D07184A33BA2C996 +:1092B0006807BC2AF6A39A486015DA657D5750AC5A +:1092C0009AD5546BBBD0BEEE78DDC150FF3B1D3D3F +:1092D0005BD12E73FECE89B296C9FE4CB3AFE2B21B +:1092E000B83A32D957D9636409CF0D0C0F76EB65C4 +:1092F0006847809EBE16F09E1BEC0D22BDB429204F +:109300003A97C17EBEA247C77D0E6C6F6AC33BFC15 +:10931000FA437E1D7BCBDEFC4CF986A45E2DF75014 +:109320003DF8945BFAC87EDDCDB6BECE32C439C0FE +:109330001321FC753405F9F9AC726E6FEFBAD9B030 +:1093400083E25477D651755AF9363C6A5F2D6BE645 +:10935000733BAE73890D6580AFCBA7C81A0AFDA613 +:10936000D52D43C215FDE3306B54CBE4EF26EB253E +:109370001AB56999D671AFD01BC67A86893A7BE354 +:10938000F9DF84BDD4ECE37E5EC98ADEF50887BFD1 +:1093900082F3A2BF22CAEE413B4B6754770657B215 +:1093A0008F76DE77D70C9487DDB7D4DBF17E7D3501 +:1093B0000B225EDC15B73D8AC199669F45E8991876 +:1093C000AF176D58F2C51793697ED243392B4235DA +:1093D000648706E70C25FB6B45F73049EB87EB2DDF +:1093E0006F2EB773C19E423D04F6998A781915DC39 +:1093F0007B0A51E22D979906ED2DD604D9C95BAAB7 +:10940000998A7291239EE7943F998DE3F58FD3401B +:10941000F08EBA595611BE51C18FE2685F78E13DB6 +:109420004DCBC05FBE6C82FF2DD049B40E013FD939 +:10943000172390DF04FC7A6828D6CF8D5A7F78985E +:10944000D96E3A8BF34EA2FB9252D50FBFD6193B81 +:1094500045F30E067F55B7B41CC6ED13EF8F4019C8 +:109460002840FD90AACF2E14FF7D225FE8B7093C6B +:109470008F3AE0B935AE63BCF10958593480AE4734 +:10948000AA3E6EC57D4AEC131817A694B746F2485B +:1094900079054F6E0F9D1B64352C80FB8EEBE071C0 +:1094A000F62DB47398FA119EFBCE3928EBF81D0601 +:1094B00057D5E72971DAC787B28BDB7F589CFCC38D +:1094C00011EB2515F5152570B01D50F93E9FB61FFF +:1094D000C1FE13473CEF98EF223BE7B00CFB11EACB +:1094E000B1F77334B4DF06EC4742DF2B4C8FE37ADD +:1094F000FF7FEF4717DA7F0823A6FD06EB1070BF4A +:10950000D921E9A1ED01DC9F4E28A82FD2F79D4972 +:10951000881BCC4FB37FF9764D05ED13D43E30D484 +:109520001BC1BC11F220DA19770CD5B87DA1B2208D +:10953000DA1B869DE18CBE4AF41E867E14E9B1EEEC +:1095400063E8076E9C149EDC6E921BABCF4EEF5B04 +:109550007D3CBEBF51EA89DB4B517E34B13FC5141F +:109560006E2FF5503EE86E4B0FE18F01FEB0BEE46A +:1095700093325E471EA91C5D89FBCA21EE2B317D0B +:109580005CD2EE8B6EF162FC9DF3A1EFF29619189E +:10959000F69DEBF7F1F8CAC4DB9C23E17EA935A662 +:1095A00064D293DEDA38E5A5BC8D16ED9C290EDD7C +:1095B000553EE74BCFA9F860438F03DDE6C015E9C0 +:1095C000921DC8A2B6413756156EA673264003E415 +:1095D0004B57F41843BB8ED5B200CF1386A5B90004 +:1095E0004FF3F07087D714B7F236DA098E0E5C109D +:1095F000C665A786EB30EE173866D591AE91F2FCC2 +:109600003DB8DF1EBFF115DF598C2B8A78CF9E5CE9 +:10961000E3BC09CFB37BB27BB6BA70BEDF39E8DCFE +:109620003CF08B8E7E4BC718792FC6333AAEE3FEE3 +:10963000DD709F33B1C6749EAA57C439F08DB4FD56 +:10964000D622CE97537B3FD65199CE7BBAC539628D +:10965000FAA11E0EAA7B70DD81632FD7629D6C5725 +:10966000B048C278C96F855D33A09E43D0B96FC33F +:109670002544676F6D228876830FF38C6A3F7DD413 +:10968000F8477A23DE1F616DA03A64AB968B7CD3DA +:10969000B5FE065AB757D1ECAA691FAB8F96B661D3 +:1096A000299D8177836ED70BBAD1596D1CAF963D3A +:1096B00082F0023D7EEB9B84FE4B2A3D9374B1C544 +:1096C000A78F4179AF9419C209781C82CAFFDCD6F2 +:1096D000EFCDB281FF18B95AA63A374B6174960E96 +:1096E000A80C08BC0CE023B1AF26F1309EF3B38187 +:1096F000878E499CDFC1A20A22FEBC22DFE08D3F9B +:1097000049FACB58BFB756AD41F8731A65CAFB1872 +:1097100078628A2E115E1ABF9C8F99191F004B76B2 +:109720005556CAF771BC0A8F97E4445FA2B8430646 +:10973000FEFDC25730907F010FD333C543B4424979 +:10974000AC3B2CCD223917FE55E049927B55663152 +:109750007735E221112F23BDAA25F01CFE276F3893 +:10976000084F1DE3D418DAD9A5D6781DF68FE8592D +:10977000018C1BEE5875247EC2437C487969E6EB68 +:10978000E678D2AC54CFEBADE5F1977439F72A61A6 +:1097900027FAD7EACB16B498981A95246B867526C3 +:1097A000F95CE06BB6E01F58BF565890016F020F8E +:1097B000EE9759CC0ECAF9FE6A11C72B3F8EB6261A +:1097C00073FD50CE187F5A59E820FC44F0BDF1706B +:1097D00015719F4DD3648A67BA25DF4B48EF98CE49 +:1097E000E3A29B2B54D207D30B0DB9E2FCC0EE963B +:1097F00053F8C9D09FE9FA925575937FEF0BBB04DC +:109800009E06D187ABBF9C8FDC17D0875E25CE30FC +:109810009FF0257A707A61063D68D8A77DCFB33A6C +:10982000F41B347D87139C6CD013DF6DC9C2F537F0 +:10983000EF267F798D57495DFF02B17E512716A92A +:10984000E47562EE4E9DEABADD411E6F7107DAE8FB +:109850003B2F49B911764C57F8389B09E3FF150B9C +:1098600005919FA670791A6CDDCB0D7D1230F14108 +:10987000D945AD7B716106F9B9FFEA276760DCC69F +:10988000CD941E94BB2D2CF1FA098C53AC7880DD5D +:10989000E3A1B838D9DD141F077DD3B675DAC666E3 +:1098A0002BDA772A7D1F455FC6CFDF78F2834BD155 +:1098B0002E35C6BFA490FBF917CA0B36171AF9C983 +:1098C000F052DC7FDC98171CD29F17047C525ED0CC +:1098D000ADF2FCC8F1B3FFEEFB11CAA7C80B769C32 +:1098E0007D95CE0745261DA1BCE03AB9FB453C9FBE +:1098F000AB3F69A5F3AEA77E9C457EF39DC5597B22 +:10990000CCF5B83F11F3FA1A9FD88175A5DB9A748C +:10991000F6D62868AB99CF07FC54E8932764711EEC +:1099200088C56B1F457A375F2AA15ED866E7FAB50E +:109930006392772F9E8779429CABD876DB8B94CF4E +:10994000E9A864B23A7EE0B8914AA6A8EE7E3C1936 +:10995000FD8DE7F09ED5FC1EF4CF32B73B2A6FABEE +:109960000B9AF6C336BF9FF643CC8FE23973B7C468 +:10997000E5EF27063DAEE4FE547BA11C6BA17E1FE4 +:10998000EAF5D0765CA5D077075875EA397137E6E5 +:109990004D318E8879D309039FEFCE3973AA544392 +:1099A0007A6B34BE65F80FD7237B3A9A6E9B3E42A2 +:1099B00033E38BC31799349AEC82427BB48EE2195D +:1099C00093F8B970035F91453DB568DFF5B60C9724 +:1099D000D895E0BFE2B805FDF8319EEB72093D3F36 +:1099E0007225F00DA7C756D2EBAC7C423BC9A1FD56 +:1099F0006AFCFE4FB45423FE7941ACDFA8C3F8DC07 +:109A0000167EC1AC07D420AF2332F24F6C0BCF03CC +:109A1000A6D3AB42C43B3C6E11DF043936D74F1A94 +:109A2000CF01B1A5284F6A23C63418931AD9B1675C +:109A30003DA49A431827B8FBF739C7DE403BA4D0B2 +:109A4000C2D0EE50037A08CFCF5D283E39B724F458 +:109A5000FB42537C9261819349CF46D3E28BF85B02 +:109A60006F8A477A83E729DE08EE71C20EFBBA7B64 +:109A70004DD676947FD80F030EFFC078639583D3BD +:109A8000CDBB98C5F0BB5C2D47B2829CCFD5BD182D +:109A90005739D66C27BB66E714179DB3DAA9F0FED9 +:109AA000FBB64A318CB32C623C6EDC21F22B1D5785 +:109AB000A8B1353CBF528BEDE22A568AFC908C1738 +:109AC00033EEF7141AF15555FD56058C9FBBB88C33 +:109AD000EA2B0F89BCE7D4AA1E05EB0EF6551D57DD +:109AE00070BF786498D3A8D3273F85549FCC92F158 +:109AF0004F322D2DA638296853D493C518FF447FC3 +:109B000027C8CFD1F6757AF7621E23B7489C3F0667 +:109B1000DAB44DC6F3D9021E162A0A99E2A46E8C55 +:109B200093E6D375FA38B88E12F477A3FF82728366 +:109B300071D25C8C932678BC5FC4495526DA2B34ED +:109B4000EDB9CB691A8AB3968ABC902AFC1F758A34 +:109B50008BDE8FF8051D229C0EE497417B444865FF +:109B6000743E197F186735D6AD733A1AFEE9E2F5EF +:109B700016EACF5630ADA610F0B13AD51F3C94DFAF +:109B80007012FDD7AE7A17DB1B1818578F04EE9CA6 +:109B9000B614E31AEFE6D039FCC569FE628E587739 +:109BA00044D0DFB79A11FD7DFE5011F2971700DE09 +:109BB0008BEBB5C64F219E8BABBC5ABBB08BE5C9B6 +:109BC0000816C7EF7E293E0DF3263AF8D1220F3052 +:109BD0000DE3BA4B455C77096BA0F37E0A166991D9 +:109BE000FF105F4FF9D3804CE79A8DF9DD419EC796 +:109BF00073FBE30ACEE7ED94D95EF25BA13FF2FB83 +:109C0000EA7CEA6FF02BF8D6D41FE06D273CAF97C3 +:109C100098C033E3762FF7FBEBFDA11769BC6ABB55 +:109C2000C69FF3F594E8FDEB41615C2AD613F1473A +:109C3000ED18E7EC02E5B257ED7FBEC4A013D3DB0D +:109C400070BD6A98C70D223E1EC7DA1F647B107F65 +:109C5000067E0CBA2ED5EF9A867C7BEF02179DA765 +:109C6000379E9788F976FA7B259C6F1FE00FCFE728 +:109C7000EFF7EB27D1EE8ABD97A3E1797E63FE650E +:109C8000421E8CB6211F8B236F4B4B70FC0F72341E +:109C9000F4BF225A5C41BB9C75F378078010477E65 +:109CA0005A7A20359EBE3896DAF6A5C51B2281D396 +:109CB00064171F11F27BECCD2CC26B5F75F431D4AD +:109CC0001B11BF964B7992871E70E2BE24F9795C16 +:109CD000707F40CED2A07F2C20CF447D1A69E47AD9 +:109CE000AEC4A06B9809BA723AB9ABD4641EC62C44 +:109CF0000F3E7F83BD9CFB37DA93817EBAE5AC16BD +:109D00007453391E0DBDA155359C443CFB00CF88D2 +:109D10009C88DA60C7DAC008F021FA09148833E8B1 +:109D20003802D727D7503E58C8C761998FAFDF6533 +:109D3000D7F69BF4E6FE87F4C7D00E39767A2C7DF1 +:109D40003FB44FE975A2DDB62B203BD15EDF6F0B30 +:109D5000C9B5AE81F89CDA9950F0FC62B47A42162B +:109D6000EABB7D81091C1F618E0F9F9FAFDF5B6582 +:109D7000E8871E46DFE5117830E24887F213147752 +:109D8000EC92391EDC55A19BD07FF7B55A2586632E +:109D9000B04410E3EF4BDF2DD6D00FD4D2F683F7CB +:109DA00086C9A9729E941BBE5EEF6A432E84DCC4F2 +:109DB000F26283C939E5374D728EF32E4639570763 +:109DC000CAF53B69F3965473FD027C40F2EC0DCB6F +:109DD000425EF50DC4074024E4030DF984E4D9C2C2 +:109DE000F984699B08AE4E1E2F49C2195109CE5104 +:109DF000B80EEC1F8475105F69FF89ED118D83CA61 +:109E0000379DF71E4CBE9706DB48AF26E515E41DCF +:109E1000F9C42DF49921EFD16A9077139E927A3C80 +:109E20004DBEB7FA1B086F3B51BEE1FDA8BFF71846 +:109E3000F2694CC87BBA7C2F5E0DF2ECE997E774AF +:109E400079FF67C937ECE7E45717AF6131B4BF3A20 +:109E500054CE0FFBC1CFC075EDC70F0DA15E02BA86 +:109E6000E139AB4884B7917F9864E2DF1D12E75F68 +:109E7000C1B706BF80BC9E44BE2D66AA86F146438C +:109E80005E9719CF817FB0CE6101EA51CE3F6DC898 +:109E90004FC502CFFB027D94E7DFA5F63A919EF510 +:109EA000E0D7225CF5FE5EF2EBBC11637F0890FE0A +:109EB000778755E2BB989FBD88FDBB3A0DBE8E915A +:109EC0005EC809FB699E24DCBA903B8DE377B9A09C +:109ED000DFAE29DD44AFAD00970E702CEF3C4FF59F +:109EE0004BF76ECC0EC8D5E0574E17FA7E35DBD354 +:109EF0006C5AB76ABCEFD767601C283A893264B0E5 +:109F0000CFEA2F107F060C7802049FB67EA886FC4D +:109F1000AC823B8F7ACAE0AFA9BF774D1D03ED5DE0 +:109F2000D06528D64FE8FA2ACC9B1B7C65F0F1D28D +:109F3000D54CC27DD6077C82F9FF1D573FD0D6286D +:109F4000F49DA472B0AC869D09706DEDAC97309E07 +:109F5000B11343B62AD289F38315F907E058763056 +:109F600035DECD1E49E5AFF478F3D1DEB26F23FFC5 +:109F700044C10F45FF3BB2DEF202E259D74126351C +:109F8000DCD7E284B77D92F2327E57E09B7FBFE35D +:109F900018F2B5CF90A34699F2631D98D0C2ABDEFC +:109FA000331DE1F3EFB0058826B5A976B4DA10A722 +:109FB0007AA251AB9986DF65488F972FDAEAF8D2FB +:109FC0007879F4CC4D35C86FB1F512D50217A6AD2E +:109FD000E750BE4EF074B56707D0EE51A11FD96BA4 +:109FE0008FF0FADE633AE7FF8E85FC9C687DA4471C +:109FF000C1FA945D0D72F23C0CF2C122BCC2F3DFD7 +:10A000000D2B257B67CAD9731B2E81710A3B6CDD32 +:10A01000B87DEF083CE045BE4EB7C716A5E513D2A4 +:10A02000EBED97A6B5D3E1C7FC470EF757489E2F37 +:10A030004FEB7F283FCEC6E13E52A324F666C8DF31 +:10A04000347F3D8BFB7B5399A867063419DF2503CA +:10A05000FCFF17AE07F5F94B2FFAB0EEA66F122FE3 +:10A06000A6E8FBAC792AFA279BD76A71D467493FE7 +:10A07000B7DA7E0CF933B29685911F3B9EE7FCAAB6 +:10A08000EDB706319F90EC277179D4BF2FF24ED6F1 +:10A0900078FC760FE90D5157F31C7F6EE5E71C7DC8 +:10A0A000ABE304E7E54301EB6017BBCEB0A938EEA4 +:10A0B0001F10B920072F0E1B4270423F1DF1F1E621 +:10A0C0006E468BD828B163941FB81CC6C9C35B27E2 +:10A0D000685C98425A7F39E1ED049BD01F57776145 +:10A0E0008907DAF313199D3F2157279FAE71BC6E84 +:10A0F0009D00F77371FEB0ACD2550BAAD8EF8C4A15 +:10A100005723BF1E9DC0DF37D6DB3D4C4EA94755B8 +:10A11000C383E4BB00E6E3DE54BF28490F58EB6D70 +:10A12000BF9E9B3B0E1E56BD34D79BAC7B21FFB11F +:10A13000EF3AF3B942C37F32DA76CCEDE039997069 +:10A14000AA7C5C303F88FB2EE0EF8980516F97FA44 +:10A15000DC25CE89A4F315FE32E50329DF4879A674 +:10A16000E111AC974D9E0BF10F8FE8A06751DFB561 +:10A1700078FBFDB8DC224D7C4727BE1EF54CEE4631 +:10A180008B8AFA737F6174768544F8A6F3AFF82D55 +:10A190002EE4131772F0840C7415F4DA318C8F9757 +:10A1A0004EB7F4F841C74BBDDB28EF24B100C537EB +:10A1B0002A2717A13DD72CDE5723DE1AAACF7A2DE6 +:10A1C0005A2367783F5D4ED3E5F8ABEA8165C33823 +:10A1D0007FBC83F898C492FB82D93F904D7C0248A3 +:10A1E0009F87A5BC2A08107DCFCEA8FB1076C56638 +:10A1F000EC32A2FFBDA8C0B7CDCFF9D4B0DF8A3B07 +:10A2000039DD8B0DBB31C2ED2D78CEEB5C3AB93D1B +:10A2100094E4EB4EBE6FA991237763FD59BA7F9A00 +:10A22000107CF8804157611F18F6B926FCC6CF870D +:10A23000A929EB748B75ADB8E8F5833F8BEB0776F6 +:10A2400040BDB8FF22D73FC69F6ABF8E58CFE323D9 +:10A25000230C7BB391EFE7C9F5AF9768FD86DFA4C8 +:10A26000AE6FE6EB6F84F567A87BFB7E11A7237EBC +:10A27000561BF3A97E810755E4538D78821B9FC33B +:10A28000D523D68B71558C5B18F18A127F66FC9CA6 +:10A290002E14F7D5B8C89FF27518F58BE9F9A443C9 +:10A2A00052E045F4B7F4A532C5618BEE096555C09F +:10A2B000FD51D7AD58BA08AE3761DE14E9E4EFA915 +:10A2C00025BBA376077DB7AAD4DAA3648A7F7B6B0C +:10A2D000357BA6BC4A57D59C2F3DEF5B8471F3724A +:10A2E0000CBBC80CED92FACEF4BC13CFE3A5E7EF9C +:10A2F0004C71F35733E54D5F157953F5D3521684FE +:10A300002D62CBCD65049F3A94E355BD59A6BA633F +:10A31000F5D391F4DC17666B3C30BE5D639457FA5D +:10A32000DC969A8FB55684743CFF68E463E139CDBE +:10A330001B9CB5A719ED94E477BD6A4341A7D63FAE +:10A340007F920E8B07A3037FAED7F1E73E161DB3B6 +:10A3500018F7FBE7EAEBD0B6B84FD0C13BB9CD391F +:10A360004BEBCF730EC47F4C1A24AFB501EB2672B2 +:10A37000445E6BB0FC9DD13F3D2F5AB430951E809A +:10A38000EF47E99C89C0B3915F7C54ACD71807F0C4 +:10A3900043FD82D5CD92DD938A1FC071B2FFA166C5 +:10A3A000AEA7D3D773A5C80F7B72E341D43F461D38 +:10A3B00049CEC1D32975242EAC23C91DBC8EC463DC +:10A3C00009FC17E517EFB5F2F58A7DD65C7F993C5D +:10A3D0004709B47ACFCFBF9350FCD2CB4E2C6FED50 +:10A3E0008F4766AEC75C3A94EB8DA543B59478244D +:10A3F0009D7B92F97B9847ECD8C0F7AF27F263BFFB +:10A40000C5EFF7E98FDB356EFF24E8BC8273B48BB0 +:10A41000E2D0E9799827FDA9F997017917918F4939 +:10A42000E6A1FE497918FAC1FB8E61F994AFF83FB5 +:10A43000423F1A7918A3EE6CB77FEF6B7186FB3140 +:10A44000FF6EB85ECCF58965F88A5374565C7CBFA4 +:10A45000B07DCC919934DE4F64AA137CE8BE47C925 +:10A460005FD82F293DA44FE3A7095F91D8776E5A93 +:10A470008AE3AC9702E8571CD87352417BD3150886 +:10A480004EC2BA01639DF50196F15C42AB4F31EAD1 +:10A4900016449D82718DDBCDEDF4F7860D929F2FD2 +:10A4A0002FE671D3DDB6EED92837BB616C94DB9C07 +:10A4B000729EB7EDB6B2EC0AB8EF0FCC9984264D78 +:10A4C00072BC627E3EC2DF69A77E60A3A4D477AA75 +:10A4D000C559F4FC2F229EFCBCD0EBFB6DA122D40D +:10A4E00077CD5FFF33E5FD764A609FE3F59E8FE20F +:10A4F0008CFC75E030B4773AE5F9F6DC81F53A8604 +:10A500001D65F05F922F157583D98EEA2864644724 +:10A5100025F5D3C4CCF51787A41E824397781D8EEA +:10A520006F52D889FB84F7BAFF5882FAA9A098EB3A +:10A53000A7ADAB8F77376A667D144DD147BEB0D0DB +:10A540004F0ACFCB968465B22F4AA2F39DA371FE2A +:10A5500097F9773F7DFE7033E7BF54BD94BE4F80BF +:10A560001ECA2DC6BAC88599EB33CE097C76C78F33 +:10A57000F3BAA72A517F78B34CF18C64DD912DA6F4 +:10A58000A03DB0A98AE7E54DFA8BC60FCE6A965278 +:10A59000F47B00F601B8E61673FD85F5F3585FBA53 +:10A5A000A59AE79172CAF72A180F6DC74F0E21DEE0 +:10A5B000AAF8777DBBAD21B9D2347E9FA8D719B553 +:10A5C0005E22FE60D66E1F8F0776533DFD5BE2DC98 +:10A5D0008C515F98A4D37296319F9FBE8F14B2D8CE +:10A5E000D2A5702D12FBC8344127EF842EDA47180C +:10A5F000D201E9A9CBB14CDF73F7D6C607DB4F9C7C +:10A6000028FA2EDC4FB4C1F3D9FDF630A79BB19FD9 +:10A6100000DD5EF3C37AFC4B32D749BCE61FB08F36 +:10A6200050FF60F5FD53D3F6111DF711A3BFA18FA5 +:10A6300006B3338C3A586FFC6385EA3AC024C5FDF3 +:10A64000434D2C94BE8DF007156A6F063F3854D5E4 +:10A650007FAE23FD9CC5F8A3E97E5433D167B312C6 +:10A66000F4CC46FCD7CA8487CB5E4BED37BDF4797A +:10A67000CF0D68474E9527F0F362E23D172B984BBC +:10A68000F3F1FDE91BEFA4BED70FBFE8AFF2F3561D +:10A69000DFFCF402FD3CBC5E241DFEAB144766F8F3 +:10A6A0007DC1821BABFAE1BFD697DAAF76FEF30528 +:10A6B000DFCD04BF1F58C5D30FFFB7CA1D5F0E976C +:10A6C000C6E1BF7ECA05FA8DCC0CFF0DD30781BF52 +:10A6D0003C311DFF8EC5776B2F30AE95CFFFBD256A +:10A6E0005FDEEFD6C6F479749137E6D768B09EEA9C +:10A6F00096C09F48507E982D92AE4FE323E287AFDD +:10A70000CC47BA678E898FD2F96156A5AD606E4687 +:10A710003E12F41374B8207F083E4AE7878BE5A306 +:10A7200074FEE8E723BDE03B263E4AE707D8878969 +:10A730008FD4DA91F4FDD9817CC4DFBB207F083E41 +:10A740004AE787817CC4F9221DFE743EF97FCE1F43 +:10A75000EA22D22B66FE98F30FF1479CF48881DF42 +:10A76000743A87A65E53706346FE107411FC714103 +:10A77000BA0BFE48A7F3C5F2C740BA1BFC01F43779 +:10A78000F1473A9DC3CD8BF2F8F718937C71717441 +:10A79000D680CEAE8B97FFF478733ABDFF613A6BEB +:10A7A0008B48EECD74BEE11FDA4F18C9B981A7748A +:10A7B0007ACD9DBDB6E03B19E92CF02BE87C41FA3F +:10A7C000093A5F506F0F42E774FAF5D399F1386E8A +:10A7D0002DB72BD3E9077476A6D2F9ABD1EF42F2AD +:10A7E000994EDF0BD1F1A141BE335457C2FD9ED922 +:10A7F000C2DE7BC899B9DFBC126ECF6DC77E93E80D +:10A80000BBCD19CFE52F10E3BD29FA0D2B61C25F37 +:10A81000E1701C6AE95E827EDE244B2B7D77317D00 +:10A820005D5B25599C07D625735DD33D25DC8FD80C +:10A83000D9040EE025FDF7A3AB7BA6629CC3D7D855 +:10A84000DB8CD792D5F9C09A03F1E6FD74040B4E68 +:10A8500034CF17E371923A7E5EDBFBE9687ABEB3D0 +:10A8600049A1F1717E8CEB0E1C3F6B90F10B2F30E8 +:10A87000BE9F9E0FF80E9365167D670F3F2793C905 +:10A88000BEDBDA148B66FAAE8371F57DB4607E4868 +:10A89000D42D295E3AAF4EBF27AE0C24F0FB2DDB42 +:10A8A00017E557E2F7EF7E309CD3C597CBE31160F5 +:10A8B000E897A31DEECB8A36DF867256A304307F5D +:10A8C000DC9A33C547DF37597875CAF749D6C9FCD2 +:10A8D000EF15E8738C7396D163E80F5B6496A0BAAA +:10A8E000BDB4FEDF10F3B58AFA3B5FA36507DABF9C +:10A8F000E57B164AF3A13D6C38E727256615717E86 +:10A90000400CC0396E9F5D7C6FB563F3122B7E1FC8 +:10A9100054C74835FBA8E49EEBA7170D8E877E7CB5 +:10A9200005A4B74CF8F2A59DF732AE1F957CB5FA99 +:10A93000CBAF0DE7FC67D413762D5A46F5A7318BC4 +:10A940007A27FB467FFDE5F6A5E9F597CB68BDDBE9 +:10A95000EB988C7596E9E376D5A5D75FF2FEC673C2 +:10A9600078CF6A7E0FFA6765AAE3ECEF1FAE0B663D +:10A9700080FF23213F465D261D91D4904F5800F95A +:10A98000A4EB250B7DD7DDC11E6AC678CD5F834A57 +:10A9900080F2D8D3C385747E2D8DBE5D395D12D60D +:10A9A000716E6FB62624E007CBB22EFA7EA705F8AB +:10A9B00003FDF7F4FEECEF5FD0F931CADFD277A4E4 +:10A9C00080AF15011FFAC3B8191050612924EA4657 +:10A9D0001246DC1B9EFB9495C4A74C9503D7E279E5 +:10A9E0000016A173E0DEB03DF53C8A90AFEDB6F005 +:10A9F000EB2079C9EF94745D91AAAF3E13F8281942 +:10AA00006E31EA25298F63AB3DF91A8E6B33BEC3D5 +:10AA1000E7B1A67CF7A855E674D6EFE47E68D7A820 +:10AA2000389D7F893B59BE6D18CC2BB120E6277429 +:10AA300049499ED7C6BF53374CC865D731FE7758B2 +:10AA4000B6DFC724FCBB1F4FE4075B705DBACC4286 +:10AA50005887B2FDFE58A193FC376DB60D7567306F +:10AA6000A8794CDF7BDABEF660A185F86C7425C648 +:10AA7000995A1BF9F7B8B67FC6683FDA3E5F8B215B +:10AA8000FFEDC4EF73C1D2462EB1D3F9F301DF1746 +:10AA900012F81E8C8F0C3C76E53C5A8871C45629FE +:10AAA000F01AD6157DBAEB47D7D7827CB65E11B7C0 +:10AAB000E03A5A0B58ACB9B41F5F03C649C35F12E2 +:10AAC000CF2EC073EEE078FE0CD75E60AEDF0D9344 +:10AAD000BC6D97B43BB1DED0A8DFED5AEA2DC57A44 +:10AAE0002D43DEB62FE272D6B588E5A39C1872B569 +:10AAF0007D51B80EFD6BDD524475BB83CB0F23FD3A +:10AB0000F31BD037BAA7FF7DA6768F9D33AE5FCFFC +:10AB1000160ADADE2AF48263F8337F46BA6C5B6287 +:10AB2000D7902EE9EF19E3172EB19FC575A7CB4734 +:10AB3000A1F82E54A18F9F1B4C7F7EFD701E2FD934 +:10AB400057C2BF17677CF7EA5059B0E60F8887579E +:10AB50002C31CC5F19F1D3AE3A1E3F1DB05FA4C5B6 +:10AB6000537DC978EAE2C21F217E453C75FBD97F3F +:10AB70002DC4786AD7D22363F1BAAF444BD9B72E2C +:10AB800076FE24BE04FF3A86EF20BBE81F85C3E8AB +:10AB9000FF447EF79FA93E63998833ABB08F41FB9A +:10ABA000899AF240A6FDE842F8BD4EEC47D70F6700 +:10ABB000DC0E11FB6E44F0E1C5CA8BB18FFFDC1EC9 +:10ABC0005A331CF7977098E24C6D88BF49263D07B1 +:10ABD000FB2FE9B98B1C97597EC8D0BFFAF8650BDB +:10ABE000E56FD2F569BABED46BF466FA4EBACC1AE8 +:10ABF0001E5407EA5B2FABD93C1DF1561E96B05E82 +:10AC0000BBB5D44AFA3E5D9F6EB03538F0BBC06B21 +:10AC10009A42DBF0BBB58F004EF0FB2D8D2E85EAFE +:10AC2000F7D788BA6A3D87FFFDB674F87F53C6F13F +:10AC3000FA785EB40EED9443D2FD29F990A1A59C5B +:10AC4000AF654DD43B57859D5CFFAF39FD4D18B7BF +:10AC5000AD5AA6BAB7B6EA166526C0D9B642A64F0F +:10AC60005F3CECAB772EC37957CBEA286AB79CC61A +:10AC7000EF84EB0B650DBF9F7462613DC5EBB7AD13 +:10AC80009027221F4D13DF45DFA1F27A908757CB23 +:10AC9000B4EFE9AA8BE2F08CF5CCC0BA16C70A3B38 +:10ACA0007D571F14EFB72B4D75EB276E3FCFF07B11 +:10ACB00070FB7CFCEFE976444EF7A0B93D7A614D1C +:10ACC0001CBF6B39628A43D554FC7E6C308EDFC961 +:10ACD000F40595501CEB5222DD5803CD1E96E22F51 +:10ACE000D870BEF9329D533CB6675A1CEBEFF7D5CE +:10ACF00066D3780FEF59F30286F8CA8B47D27C7D72 +:10AD000042AF1CD833B908F9E7E13D6DF41D9B9CB7 +:10AD1000EAD4BFBB7EACE34821CA617620F5FEC30E +:10AD200075F142ACEB7430D37D218F589F5E24E4E3 +:10AD3000F1D4AA57A45E2A2E48ED57BC242093FFD5 +:10AD40001271D1DF617F03E0413939200765DC9F53 +:10AD5000F437258AFB3E62D31D667AEEBA94C3BDF2 +:10AD6000467C1FADBC540E61FC77ADD887AD2E2E4E +:10AD7000E706DDD3AF651BAEFED2BF7F52A8DCB0C5 +:10AD8000CDFC5DC76DC2AFB1AA3DB20AF81CF69406 +:10AD90005A992DE17788F87791775C538261E9249D +:10ADA0001FEE38F64221D63F7A0FBAE8EFC4E0F939 +:10ADB0003C3AC73D84C7774FAEBA8BCE51DD596759 +:10ADC00097914F3E7963289D67E89AEFA7F399C65C +:10ADD000BCE027D2DFCBC86BF40446023CFF17E887 +:10ADE0009A3D8E00800000001F8B080000000000CC +:10ADF000000BED7D09781CD595EEADEA5D4B7749EA +:10AE00004872B7DD96BBB559B624D3928D913D02F9 +:10AE10004AC603069CA4BD221192D75E918C9CC8A1 +:10AE2000608219202EC9F28AB0DB9B22754BF3DABF +:10AE3000924DBC92B603667924D33226310432C2D5 +:10AE400043482026B1C936C964F2899D9947C89CF8 +:10AE500073EF2D7575A95BB2310CC3F79EBECF5F42 +:10AE6000F9F65DEA2EE79EF39FE5DE923C79BEA2FD +:10AE70002B0831AE33FB7E0BCF1BBE573EE67C3931 +:10AE8000217FC3BFEB863F83EB255F918990B6F5A9 +:10AE900056FA0C0AA42E0AE5CBBE37D7B134235E8E +:10AEA0006E8C4720E4AA78DAB22E3DD836359E362D +:10AEB0008D17FD11A8077FAE7915F1DFFF99D753E4 +:10AEC000DBD5BF5FCD27D364676D0E21E1356669A1 +:10AED0009B8790DAACC75CABA611D2D364962C905A +:10AEE000EE5EFDEAD6DB21ADBC6C20C550BC7BCD4F +:10AEF00049D74A4DFFC2D87EC6F0F6A7F3F60FBA7F +:10AF00009490E0838ACAF9052F3A216D534204D305 +:10AF1000E4370B5EAC863414233331FF770B64E8DF +:10AF2000E741980B329690A9914D0B1468F7609603 +:10AF3000729B281172C5E657769F9E01E962E575FE +:10AF400001D2272692D86C6CCFCBCA87BEEB0A2AD7 +:10AF500058BF82A5FFF777FFB800D3611C0F8CCFD5 +:10AF6000B8CF4C2729BCAF2D9B40BB6D59FB5D1E54 +:10AF7000C80F551217F627DBBB75C0EA827242C4B0 +:10AF800045A0FD573C77FA67CFC4F928FA0E8EBF6B +:10AF900067C0E4C3F9089906B6DE8EF305F3D10263 +:10AFA000E9F0F801973FC9FCB6AF77FADA61C2B6AB +:10AFB000F1A7FA7BA6CFE93B6AA55D217F837FE9F4 +:10AFC000A589E9B03040FBF3B06795DF08E3ED31C8 +:10AFD0000D7461FAC1C82CBF11FAD79339E0C2F1E0 +:10AFE000AF8ECC64F9B9035D38BFB747AAFCB36133 +:10AFF000DC6153D4E51B81EE3E71BF78BB9FB47E0C +:10B00000AAF7ABEDFE3F5CBFDE97317AFD57747C4B +:10B0100060583BDE8B6BE772E9E0FFD7FF6CEB3FDC +:10B02000EC292024F762E881D072924802C8DF3709 +:10B03000E6CCB22ED1ECFB8D53444A2F63783942D3 +:10B0400064E2CF04FED57883350074D2434E3F6F5F +:10B050002924A474DF7E1BA6DB22A76D5EE0735D4E +:10B06000CDC06DA14ED7471BAC5EE0735DEDA2D4A1 +:10B070000AE936E9EC4D25901FAE132503B4D65DE1 +:10B0800057957633CA85B5A28472A1A3EE946D99C3 +:10B09000460E74AF15E7A05CEA6E3E9B202F7AB88F +:10B0A000BC004E1BB340FBDB0305BDDBBCF1FCABBE +:10B0B0002B189DF7AC9EB585BEAF46A4633E7DCFF1 +:10B0C000FB67AE433E5C237A2C50FE74CDD99B26A1 +:10B0D00042FD1D7344CA974B78DA3DC7E8F3407AC6 +:10B0E000225682F4783789C4A0C9324B746B09A404 +:10B0F0002DE344A240BEA37940B640917E69E99910 +:10B10000EBE0F76E27B40BE5361129A6B071450EBA +:10B1100078518E3F10EB81745FB545B250B9451C34 +:10B120009579208FF07F38B7A439F603C84F97ADD3 +:10B13000FE6D3E1C7795904FDB835982F4C7E55E28 +:10B140003A9E70D35DB137A0DCC6BA746200FEDDF2 +:10B15000DD7E424239943DD7F8E679CDBA66D624F1 +:10B16000A689D1EF27502F986B24DBA07FE9449369 +:10B170000F4D5B74E9215C2001AE288DB793254B00 +:10B180000969BD5C685BFF24F98D299E3602C124E4 +:10B19000C30DDF46BAA2F41475F941D6AE23CDBF74 +:10B1A0007E10C64B060CBE034827D6673B7F0BF8C4 +:10B1B000C468FB4927E220D7BAF46E4CB7654DFF4F +:10B1C000D795506E4F669A0FE967F7CAE93602A421 +:10B1D0007E0CE537D2DD4DC648AF80FD18E86C0324 +:10B1E00082B2052D2417CA6FCEC888E0B86D62D030 +:10B1F00047805E378B1E1B81066ABC05745EF7882C +:10B200009280E9338FAE0A228EB9EB25830FD77572 +:10B21000CCD7663B0223C8C15C6B6177DB15F1F4C8 +:10B22000DE43D6BA48121C23F07D74C418ABCF801D +:10B23000F63B884542FAE8883E569F01CF10317AA6 +:10B2400004786E6F1029BD75D5992313A1BF397786 +:10B250004F7F6B255D3F36BE8ED525741C39064663 +:10B2600097E44E73E400621FA3EF366C27DC92254F +:10B270006D83E7F16327FF7418E96F9ED587FBAAFA +:10B28000CFC4CAEF5D6DDEA740F963EAFE31465CCC +:10B2900075991A1CD6B8D82BC3EF7B387E823F85B0 +:10B2A000005D180DF1B415F273D2E53548977F3D76 +:10B2B0005673AB15F0C3B134967FDFA31F772835E3 +:10B2C000809F164D2F45FCF342C18A9DB64AE8B7D0 +:10B2D00010BC0BD3E2E4AF7538017F1C170586D78D +:10B2E00090A1007E8B22AEA2F8CDF0B3D94530AF4D +:10B2F000B85D69FE877B10CF55C6DF4F44E8CF614C +:10B300009B9AFF87850DF0BEBDFD6696AF5C935B93 +:10B310000B73757C16CF577217C96E7C5F62FDE3A5 +:10B3200066B57EE5C206C8AFBC5E2DFF83A00CEDFE +:10B33000950FBD9F95AF2C54D3EF76E0FBD4F1AAC7 +:10B34000FDCFB1F0B4F256474339D267A44082F141 +:10B35000DE3CF9CB8BE6E423DD2EF6227FAC2C0C11 +:10B36000AEF153BEE5F7CECF1C4E2787B3D4F7FC22 +:10B37000E52C8EFBC87C2B6FF7FBBBE4223A6FB742 +:10B3800018A0CC0F0FFC7C57864B336FE4DFCFCA7D +:10B3900046BAAE34BDDDEB5FD09A115F67FD7B220C +:10B3A0002536BAFF605E6583868EA20BCD4404BA53 +:10B3B00019D7603E28407A9C91EDDF50A3F98AB9F5 +:10B3C000506EE76A71A601F99535E6BA0DF66D8FF4 +:10B3D000378DB6B3D7C4DEF3E479F121A4B370B3EB +:10B3E000946580FA6273ACE502FCFE7E49362DE777 +:10B3F0008E9D7209900EBB7BEB4528A7349849318E +:10B40000940BAD59697B0ED2219B40E93C9479AEF7 +:10B41000AA1CF31F6F22C5F0BECDEE37A9BC51FBAD +:10B420006F9D68A0ED6D6FAA8AAE64FB5BC2A16FD1 +:10B4300030456FC6FA1B8E89A445C07D1D198BB897 +:10B44000F669EFCF836DB0CE7BCC6C9DA695BE1117 +:10B4500044BD202C796C2628DF590DFC1C784867E8 +:10B46000DDFC7D85B8CFDA99BCE8AB9B3FD507ED15 +:10B47000EFAA367B88107FFF7641A0E3CD36F9B680 +:10B4800016437EF697B20545C30FFF52A0F237422E +:10B4900032A61392C6FE4B72171F9497A3BC124993 +:10B4A000B3C18774132107906FBD6727BDC8F733F9 +:10B4B000FD5E01F2D366A689D81F42CED721BF48D0 +:10B4C00087C6715F6FFFF2D30A8EB71B0406D5875C +:10B4D00048EC79946F196B45B20D52690D2763984A +:10B4E000966659072DD5F87B2FC98734F9C84132A4 +:10B4F000ABB1DFB1580FCEEB7D0EE900D0675AB982 +:10B50000997834FC3C83405A2307EC85D94CBF23FF +:10B51000308F502FF3A0D987FC270AB4E681769D9F +:10B520003289E03C4BE7D263E2147CAE9E4BF0F9EB +:10B5300098EF6BF479CE76019F44D6BC0758EEBCE9 +:10B54000F1FE5F7BA15D678008C85F819F7970DD38 +:10B55000C85709E367F0E701F9E8E0F3167A3CD051 +:10B5600012837CD96B6C1680BE1D4D4B5B5662F905 +:10B570004046C0E1C41283F241E89FFD7A6BF33686 +:10B5800018575E4DE2B8F00FF9ABA33AA3771B6FE3 +:10B59000DF88EDE3FF61A98E9F667C7747B3278242 +:10B5A000741BC6B945FEB99C50F9ADDF3FBF9B681F +:10B5B000A6EB3BC447A10F3158E7A5C8A70B585AC3 +:10B5C00084F63D980652FDF9441B9DC79C74D21C1D +:10B5D000A57A76D46680F60B9B0AB211B71029E2E1 +:10B5E000427EF0CB0281B69B2BFA976CC47DF92D7D +:10B5F000339587FAF75FE0E5E81FBC379FB0F7D8CF +:10B600000DE76BEF9846FFEF791CC660FFBB732E0A +:10B61000EDBEF983AEDE047C026F9BB0D62CDBA6B8 +:10B62000C4E7653C61E318DF24D2DFC7379CBC5711 +:10B63000B0C36F5B2C745E61F4CADF60CA3CED1A64 +:10B640007A817FF90F24CEFB781D3DB99A13CB9BED +:10B65000A4C4F20E5DF9E3B871501ECE2254AEC3FD +:10B660005F2DEE074700700C8C4F32922D0E20D1CB +:10B67000F20286F7AE421C9B84DFED9CC8F89D9ECB +:10B680000E89F67D86E1E923D99C0E66AA74999805 +:10B690006FB7DA957498173BD1B40BFD7EB5C83BF4 +:10B6A00034CF8A868E613F53FC9C631F94911EC9E0 +:10B6B0002CE23B00FCDC7EF44D720BA689F436D202 +:10B6C00033E4C726E750DA1CC47D6AAFF9D8E249F3 +:10B6D00082BB2E1472FBC8E3CF503B44D8C4EC3479 +:10B6E00036DD3C440ACCB45C84F3A59DA7B3273D6A +:10B6F000077435EB896788827CF7354304F170E87D +:10B7000029CF06C411EFD7121FC5B72F9E27D05DD2 +:10B7100068DF5D8BBFBB030241BB81DA2E148988D1 +:10B72000CED19F1DCF4529CE0900EE11AE4D926FAF +:10B730008ABE867C6DEFBC0C9F42E2BF4763276CDC +:10B74000C81FDC3171082F2067D6E007C50AF278E0 +:10B75000D2103ED8307F44BCA0DC351FE53DE02050 +:10B760009EBF3F3B112FEC998FF23F355ED83C1FB7 +:10B77000E5FF105E407CE41E092F9CDA3D325E78C6 +:10B780006C7703E2AD4CB5FCC90588BF268BC2437C +:10B790000470D38E82C86E94F37B4CB20FF1D6FD49 +:10B7A000FB7E1044BCA5E2AF5041F3622DFE3A5F30 +:10B7B000FEA59D88BFA2D6812ACC6F0FD6EE7C1E37 +:10B7C000F35B59FED3BD4BE7296ECC57C75BBBB3C8 +:10B7D0001FF991356AF3570CDF3717BBCE6163D47D +:10B7E00026A13CE5EBB4A160CEBC96229C07D9B95A +:10B7F00004D6D575ABD5D74B87EF57D2800E724F95 +:10B80000167870FFAA78E75C717FB005FA51610085 +:10B81000FE9864FF9EE4FBBBA2CFDC8CFAE0AC2771 +:10B8200032285FE85BBD783FEA5BB326D684D2114D +:10B83000FFBE76AB09E9F8B10223A5F3F053818985 +:10B8400012E3B754CF403B0BEDE7E3E704D49BF49E +:10B85000E3181F31CBD8BEFEF7A3058C7F878BD9A9 +:10B860007B0F3E9E11215E9CD7606332BBDD739CD3 +:10B87000CFB6AD8705A74A644CC07DBF5B92658299 +:10B88000F49CE357F0FD2650BCE5247ABDF1C3716A +:10B8900044D6E815D95932C17AC60FF3E9EF8B6C5B +:10B8A000FE1F1740FBBF99D3DBF810D40B899C4FC8 +:10B8B0009598A9BC22C6A013EDB89BF2E59F60B98C +:10B8C0000DA2BC634E123916D7DBFC5D6D1AFB412D +:10B8D0009B29396EDC3F411D17D3F340EF28C5711A +:10B8E000A19863F4BDC38FF4BB81EF87D6293B28B1 +:10B8F000CECA15A33623F2B36F8812E5A3C0433630 +:10B900004DA7A287CADF9E45075DF83473FE047217 +:10B910002CFA2CF2C37B41FE11C610448D9C53FBC4 +:10B92000935920727C925C6EE51478181FE6F555E9 +:10B9300079A7CA339928745D56E407DEC67972D6B2 +:10B94000898A654A1C97EC99FF3A959FF8370A8EC9 +:10B9500093EFF81F8CE37EE6CDE2F22811C7011FBA +:10B960006A4EA69F7F3091EDB71C07DB8F541FCB2B +:10B9700041BCE7E9C5F10801D2FF831C9C4ACFFC1A +:10B980001BA57879D01FFAD13EE1741AA89C90DAF1 +:10B9900015BF7811787061BEDF5BA8C183F857AD21 +:10B9A000919BB221529F0EEFCB831D83F387F80F3B +:10B9B000F12000AC6607CCC7340BC37F2EC07FBD1F +:10B9C00088FF1A36AD31D887E340A994D14B695A24 +:10B9D0007009EE5BD21CB1CDD7F03DA95448C469C3 +:10B9E00001C8CFD4E8DBD7313CA8D29B8A1FA1E69F +:10B9F0002DA8AFD8AF13ABB61146DFB81FED1B3C77 +:10BA000011C477542FC3F57A90E18862E213918EC6 +:10BA10009D39E7050168B3A494E193A1F7723CB99D +:10BA200082D3B38A279772FA2557AAF8226243FD78 +:10BA30006D59B38A23075C389E5C6ECF83A2D6CE45 +:10BA40002AFA9C5301CF39A56CFF16661005715375 +:10BA5000E1422BDD277603F407C7B78010C423B477 +:10BA60007F986EF2789E9D8169567F36AF5FCCEBF2 +:10BA7000175767C8363B5F24E8EF4ADEDF903B602C +:10BA80009E08E307D1E53941E9DB2FE27CB8FD40B0 +:10BA9000FFC8F38D7EDABEBB49F2D0F41E0BA5576A +:10BAA00015572E6DB724ACDB344BC06CC1F69665D0 +:10BAB000D0FD55B8271147AE5C0BFB790ABE3F910C +:10BAC000EED57556D7F71ABEFED7F07586F9DB8A24 +:10BAD000FD1A5F07FD82F279EE602DD5CF8D03024E +:10BAE000F24FB47D20DF58C6C7753CCD7703DA1B13 +:10BAF000BB96B27EC0386FCA9C46ED91BDADA8B76B +:10BB00005A7D37201F08FD39D3A3407E5B215F2774 +:10BB1000EC9366FDFACFA62988FF7ADAB37B515EF3 +:10BB20001D473902EFEDAF1309F2C99E76711FCAA6 +:10BB3000B59E8653364F06DAF9CEDA90FF87DC8C55 +:10BB4000AEFAD690482BE2B5B54BA91CCB730F6C5F +:10BB5000457EE16A100995B3C698302F33BE2E6832 +:10BB600003A27A4E9A7F16DA37BB44B62EC5CDCAE9 +:10BB70001A00AFA4B89DCD5FA93971BE66F0F55625 +:10BB80009F43F3D5CCE6CB9D62BE54BE5EB816DAB9 +:10BB90009F82FD66FE2D751E96F37980F99A754792 +:10BBA0004E7CBE8083D071E43589D23612DF672E99 +:10BBB000DE9E9E2E42EE603F960F09C4B30BF65CEC +:10BBC00071D0924017792FEE69413E2BFD25D3832A +:10BBD0007CA2707922DD4C5012D3CE7589E994FA9B +:10BBE000C8B5A08F20BDE870BF6340BC60B127A975 +:10BBF0006766EBABCEEB3F15323957C07142CBCC09 +:10BC0000C33765E6503F6804E93CDC78C2750CC771 +:10BC100005FA12CAAEEEBF0A0CEF5C03EB4EF590CC +:10BC20004105EDD0F63612431CE5387D5E467CFDBD +:10BC3000E80690C4D5341D6B80F4573603E486744F +:10BC4000A8FD7D99DA1D7F67A47CD95ED7311FF9E5 +:10BC5000B27D989E3CB23EA4EA2F17AB07E15F325B +:10BC6000FD87EA5514FFE6EF44BC7EAC85A55FDF97 +:10BC70009F4FF1AB5E7F519F37727C00F51B90BFE9 +:10BC8000152DB453BDFEBDA363A95EAF967BA790EF +:10BC9000EDF363050C9F393F349018E0A68A935664 +:10BCA0003A8FE1D579BD06E89F5362F6AD53179EF2 +:10BCB000707D1BE9F0D8D82A84E6A10BDF7509A8AE +:10BCC0004F359E9C8CF6AACD62F485C988AF4E187C +:10BCD000291E39F3689A8CFBE0AEF169FB2C1A5CE3 +:10BCE000E52D62FD73AE3BD28D76EBAEF50AF94DD4 +:10BCF00071FC3DFAF1A45FC9D6FF8808E3A138239F +:10BD00005AFF08B5E34E1150CE759919BD851AF347 +:10BD10007A71BF1F31B37177AD7C5A403F4D6835A2 +:10BD200011A52B87B71B5E4DAC92233E4F6A793528 +:10BD30001FEA19B5F5A07C9A361D5ADD512F73DC28 +:10BD400083EFDFE476EFA376133FB01BDC8FDC8656 +:10BD5000E22DE2FDBF3648EE435CE312295F22FE8E +:10BD60009D2DCB206DB9DEEA43FA24CB67CB43FE91 +:10BD700005E0A3AEE077C83AA0011790AB297B7825 +:10BD80007E74E1B7CEA0DF685C83E8133C6887F47B +:10BD90000D52791F6078B0C379EAB57EF87DB3B3F0 +:10BDA0006AB01FD2954593E97AFBFA8D0AAE4B78BB +:10BDB000ED2387D18E6359B6724B0949629F6CE0BF +:10BDC000F6C98681960B302FB796333BD7F8D859F2 +:10BDD0006A9FEC68627E27FDBCCE2F37D1723B8B09 +:10BDE00023548F08DDF3880BF96F77A3B90ECB7757 +:10BDF000349DEA42BBD4E68CB939CC1EC9ECF21BA7 +:10BE00005A6463CBB4787DFCBB14BB600FE2C96994 +:10BE1000713C994E62947FAA38B20771A484F116DE +:10BE20002762C817BA65EB20EA7F690D3F22288791 +:10BE300041CD18B00086E8132214472A7F7590037D +:10BE4000BEE1B8115007F55365AE73486847D3E3B8 +:10BE5000C8AF95B17DF529D8FFFE5751EE17C7FE43 +:10BE6000574806A97F08F897807AE4A232664FD136 +:10BE7000DAFFB472566F0FBCBE8CDB9F54BB2096AA +:10BE80002B1CDD1EB899F313BDBE84E51127845623 +:10BE9000839CF4C6F15E3EE2BD6CFA9C5301CFEB8D +:10BEA000CAD8FECC47BC06F82D1FF19E9DEA57026A +:10BEB0009D6F8EF726109EE6786F02C77B5379FD43 +:10BEC000091CEF4DD0E0BD447DEB6D81E245C077AC +:10BED000B366A07EF53E4DDFFF4DE211113F6E4986 +:10BEE00094CBFF53EC864F1725DA0D5B66A6B55051 +:10BEF0007E7B5FD065A944BE7B92E2BB10091E42E7 +:10BF00009CFD749135217E22CE2F97DA900F38EA6E +:10BF1000C4256694FFA707E621AE72C897265F3F47 +:10BF2000A9BDF1EAB24BB3371E397AE205B42FEE60 +:10BF3000A816A9A9ECC8D137AD4B47F073EAED8F2D +:10BF400037A24E82F4DF12AC4F66FFB886EBE539BC +:10BF5000F6F332EA9BEA7B1D47DF4EB073DA8F328D +:10BF60007D5BDF7E0ED218C507853B510ED9B83DEB +:10BF7000EE777D853BD19E70AF81F951C90642F9BC +:10BF8000E40705CDBF7E10F9FEEA924AB45B1E13AA +:10BF9000405FC4796CC9A0F920195AD3507F551C51 +:10BFA000641BD2C59A8EB75642B90FCA4B693FBBC4 +:10BFB00056755CB042DA6B54B2311E211CD8E5C311 +:10BFC0003836FDB85CCB63945FB9D6193CBFD5C495 +:10BFD000CFB9AC41AABFE7BD62200ABC2D2FB8A4DF +:10BFE000C584FD5B4EA8FD1E23E8166AF44C376C31 +:10BFF000E218BCFA4E78529C1448A3693A7E98DB4A +:10C0000096090163712EBEC74CDF43AA999D42F584 +:10C0100073CE397035B3AF019BB164A75EB7213BD6 +:10C02000A8323D6B5679DC0EFABBFDD3E721CEBAC0 +:10C03000D720DD7914FB79471AEDE7F07924E9D4AC +:10C040000FB742A4721770D32CA44FD7BDE221C4FE +:10C050004FA45C11EAA15F63AE4CDC17AEE5E705C7 +:10C06000B49B2499A79B501E8DC37982F6C7058F78 +:10C07000F79BA7A59EA729384FD0F4549C2781CEC3 +:10C08000CB3D05F09EFC67D2E8EF2ABDA8F3740F04 +:10C09000D265AE665C5F1D655CF589E3CADB01E3D2 +:10C0A000C27D5774BE15ED0DCEA6E00CA483F9A594 +:10C0B0006C7CFAF174B5CF77902438557D8EE3FD12 +:10C0C000AFE0FD7759A302DA23538D1BC637BB18A7 +:10C0D000DE93F78C861E34E31BB24B2B33E97AAA2E +:10C0E0007669FB8199CCAEBB50F5A35FFD720CE87D +:10C0F000A323B6B4F1A807E783D9713E78E3DE2B1A +:10C10000453A0F79A2C11B975FE1D5BFA7E3CDBB2D +:10C110009BCC4092F11A074FE1FEE9C4F16373A989 +:10C12000C61F80F1A3FCF230FAD48F5FA5731F1FE6 +:10C130007F5E936EDD469F8F15C55ABA52E781DB4D +:10C14000EB271DA8A6FAC210BF20A7FC310D3F1A8D +:10C150004D4F5857FCF9E8098FF0F75EAC9E30B1AF +:10C16000EC8BAD273C52CCE4ACAA2784514FA0E520 +:10C1700076F6237EFDA47A4238F3E8F3C8860C13E2 +:10C180001ED8824FCB3719DEBFD438898EE7C8D38B +:10C1900004C675C5571F11909EC7A21F2059DC44C5 +:10C1A0008195AEC37D79F249E4CFA3F9DD9E29667E +:10C1B00038F14B5CCFAF300C4CB60296EB90E6EF0B +:10C1C0009C7D0DDD97940F91EBC4147C8AF131E5D1 +:10C1D0009AB4043EE5D8C1F9AF9BF1DFDB4A59BF01 +:10C1E000D4FDE9A861B81AE55269CEC5F35B89EFC1 +:10C1F000D7AF72B904FBEFD5628A2B34FCC810DFCD +:10C200008730AF75C9F4A46D5E73D2F1665D214DC0 +:10C210007AAE12F7E13F2CB6DAB85D558D03B2A2C3 +:10C220005F52E4FCED1F1637C03A496706631940B8 +:10C2300017BF2F7E679715FA631F50CBF7FB6388F4 +:10C24000AD8D51975F6B9FBD9BC743717B6CA821E0 +:10C25000BB6A9B87D3E7746A7AA2F8D9F1D2F21647 +:10C2600094D7A4D61A2D9678BB58BF5D8A20A91200 +:10C27000A3D2520EF9DD823448F589175B5B30FE9C +:10C2800085805E85B825BC6665FF831447D83D056B +:10C2900048B7C608B55B15CECEF621BF9465B7F298 +:10C2A000269D2F980FE85B5E00D21ABEB7E345A625 +:10C2B0006F280D66FA3EBF9F9517B07C218E7BA03C +:10C2C00005FD644499408AA70DAF5FB816E60BF5EB +:10C2D000BE46F33E7485E6056AF8FB587EB87125C4 +:10C2E000ADDF05790514FF44A9DE02F3C5EC742423 +:10C2F00087B6F7335C67E8DFB8BA880BED30A17B0F +:10C300003AEA916E9ECB62F9B7CE66F9A556AB912B +:10C31000DA1D650F8DB37C7EB29014077F56CFF087 +:10C320007AA2BC09FC713B3E4185EE6F6AB59DCF98 +:10C3300040F9748AE2EEFEEAD65685E2363182761C +:10C34000D3B039BAB510D7E71B22E985F50FB79FEF +:10C35000B2A15EBCF6251355BED4767F3199F1E1CA +:10C36000103FDFA0CE8B90CEE85C2DB7B984EB09EF +:10C3700086A963514EF4F1F81F7D3FAF9DC4F4B51B +:10C38000ED76559E6491080DF28C0968975F509286 +:10C39000386FCEFCD62502DABF49C9823320C79C4C +:10C3A000699AFD500DFB8190A1B83BDCE29D1BD347 +:10C3B000B87CDFB27736D0FF765E7E41C9BABD2841 +:10C3C00007B5F9182FA6CF773F209375A0D7B98D61 +:10C3D00044999B8DFEFCE97718517636E7C4E9A7AE +:10C3E000205E0F24E4DE18D4EBBF60E9BF02E561F4 +:10C3F0003DA17102E1371A6B51DFEE7EC9A6A0BDE7 +:10C40000A2DBA5507B48FB2B314A67A69B597B26B4 +:10C41000D8EB48CFEEC0A601B42FE735E724D071A2 +:10C42000FF853B5CB88E1D6F3C45FD6CC19CE35D98 +:10C4300002B5FF9A89369E37AF89D5BF587A51E940 +:10C4400024653E5F1F6224AE791ADCF26F9C1EF2F7 +:10C4500088663E46F09B7E5ACF8BEDAFFE77B5BF28 +:10C460006A3C745064725CCD7FA894D1E38FB8FDB0 +:10C470003E84BC0DF1C9BC346AD750E3BED5F23D51 +:10C4800025ACDC7A4EC7450BBFEE18292E40C54BB4 +:10C4900043E9219CF4F3826FA3DE3CCF5945CFBB27 +:10C4A000709C147A7C8E17715216D09F393B1EDF18 +:10C4B0007847F129BF02F4BA0F687180AE8B4C71D6 +:10C4C000F5A94566C588387406DBD739E9FE7A6A6E +:10C4D000A7B8D74CB0FF9DCF1305F5F2F76788BD1D +:10C4E00018D7DAB9F6A46D2EBCAF3326D27845A59D +:10C4F0004EA4F1AFF94EDB209E770AC54ED9E62255 +:10C50000DD9518557DD92A52FB51CCC29EC42C56BC +:10C51000D3ED66C274CF3D8BEB91CFE63500C6F00C +:10C52000D2278D0F0807DA283F09378B9558DA296B +:10C53000103FCE7F347696F62FB4B684E2EB9E7B26 +:10C5400056DA50AFBE3085CD6B472CB95DF1D112B4 +:10C5500013B75F2EA771F41DA0E2E13CEE354568EC +:10C56000BCF9F8764F9542E2E54F4D617C04E4C09A +:10C57000107F40D500FAC3E5E7825B517E6E6F52B3 +:10C58000D3E75E457919AE3E21A03F69DC3A3129F7 +:10C59000BE595361617EC81471188B2B04356E34FB +:10C5A000A9DF78BBD7CAF5AF44FD5CC5257A7CE32B +:10C5B00035829C43BBA7AA97578B02FA83DE038E72 +:10C5C0008436AFBEC7492DFADB3C85C666E4472EEC +:10C5D0002BE96F80F458D9DAAC4874DCFD68077435 +:10C5E00004329AA95D471E24A8BF839C1FC4F8F893 +:10C5F000B1C17D2D668D1E9EA7D3BB012751392C5D +:10C600002D27FBA9DE276BF413A6876FF726D1C36E +:10C61000B723F682F9DF6B63FBEE9941F19615487B +:10C620000F757959181F1B350628DDD8DBF38416E2 +:10C63000283BB782ED53FBC21FD1F9179BCF2B7854 +:10C64000AEAF6F46CC8578F372E3611FF1329C691F +:10C650007B765700F1CD68F693F0EA475C28E74314 +:10C66000A6083DEF7302CF8F00093EC69F53F939EC +:10C670002135FF243F5FF2648AFCA779FE33FCA9D1 +:10C68000CFFF21AF174B51FF14AF773A45FD1FF194 +:10C690007A6752E4BFC0F35F4CD1FE4F79BD81147D +:10C6A000F5CFF27AAFA4A8FF2AAFF78B61F96CFD42 +:10C6B0005FE7F9E774EDFF8A973FCF7F9FEEF1B018 +:10C6C00038A214E70935785841BAD0C4E1537C1C2C +:10C6D0008F2B23B2D19990A6717093F32305681420 +:10C6E0000A4C8CEEF6609C9841AEC77DB4722291E4 +:10C6F000E7546BCB5FDD21D7C4E3C076F4D6EEC43C +:10C70000F8ABA855AE44BF01A637CEC0F74B53F1E6 +:10C71000DCE437CABFBFDB3A3E59F9C4F4A5BF4FCA +:10C7200057DF21A56BE37BF4CFCA0CA26480DCA8A1 +:10C73000C3982AE44307076EC6381E7D3B303D95FB +:10C7400028B786E2EA147927DA053E78E34607F748 +:10C750003750FE4632A467717FE5DC2265611C829A +:10C76000FA9ECEF5128D877AB8C09B80D73A03D94E +:10C77000E95AFDB8E3B4183339E2FCBA324062B981 +:10C780001A9CE23E4DC60A0E8C5F7C4AF0407F3A0E +:10C79000BF116CA4FECE5989F2BC6522E3AB0F73C6 +:10C7A0003DB132302023DE193EBFC9F9F29A721E24 +:10C7B00007952119E8780C64705B657CBE2AA32478 +:10C7C000669A82CF8159D8EE503CA272DD3C3C1F64 +:10C7D000A1C623367EF7BA9D78DEB565E60B89FEE5 +:10C7E000E83522B58BF7AD83D585761DED23DBB912 +:10C7F000A770FB7018F74F79EAFD3765222B77B0E9 +:10C8000082E16FE44B2B34F35235D144E7E36025EA +:10C81000B7530DED9B1251DD3722949FC9E76FBAD4 +:10C8200087D1C5C1AC787BCB34EDE5E3B9014DBF11 +:10C8300052F1ADB19CBED472A9F8CB645DB9547C01 +:10C84000A44A572E153FCC9F98386FA9F85E89AE41 +:10C85000BD54FC394F57EE515E2ECA9FF6898C6E3F +:10C8600046E34B7AFE1656CF577B7A762B942E7D75 +:10C87000FF42F5E3BB99DD0BFD5CA7D47817EE0F03 +:10C8800043FD1B97079D58734BD97990AE815D5935 +:10C890005FA2288C90D6BCB87F4B2860FD21D6E8DB +:10C8A00056F48BD9BFC9FC5C21D7A0BF9CC6158CA0 +:10C8B00016A790E89FD2E70FC5B5EBFC46FA72A326 +:10C8C000F9990A389DE3791ED45BA4008B8B89C744 +:10C8D000C7113FC6C75D465C9CB1F4BF212EAE8236 +:10C8E000C7911F4FE371486767DECCFC5E522FEEA5 +:10C8F000FFFE7691C62B85D616D078A5A96A798CCD +:10C900002BCE89C7C38094A278A5A7DA4DE3DE8633 +:10C91000EC321BE27EDD84B83949BA05ED2CF6EB2A +:10C920000AA89D26559C5CBEA4D40A902F173A995C +:10C93000BED3D04BE3A186E86E4322DD69E3E690E7 +:10C94000EED4B82BD3952C0E72C2CBEFDAD00C12EA +:10C95000F7BF268FA3BB89C7E9A06D109F691F7A17 +:10C96000893C351E17FA0E8F2F4D334608EABF69F2 +:10C970001F16D1FC48A14ABF2C1E4A8D7702842F76 +:10C98000D2F819FEBBDA2F18A7199FC755BD5B71E6 +:10C990002F447959CAEDFB7BFADC0B517F47EC87BA +:10C9A000F17CB716B2F71683BE857E5A351EAF905E +:10C9B000E77F85E717F27C35DE6F347FB3C0FD7605 +:10C9C000BFE474FDB129B0B814DA911F3BDF8AFED1 +:10C9D00000AB9350FB96B1CE1F4BF78CEE8F80FAD5 +:10C9E0005F47FA959BDE8AE1FC0ED5474771E1E887 +:10C9F00076D94BF5E34C79929D2370D775D3F3A18B +:10CA0000573E13151AA19D4D3AFF455E9D42FD53B9 +:10CA10005E63C086EBD15537B21F47F563A87E2809 +:10CA20006753A27F8694075B90EE9D4D849EAF1D59 +:10CA3000C19FF14DD427D47655BDE29BDEA1F96E9E +:10CA4000A3F31D4B31DF3ABF0794A7EDC92F262F63 +:10CA5000AFB60BEA506C2EEE33F80FEA495672412E +:10CA60002E42BE215BA3DBA8FDF35D5281FDE5F6FE +:10CA70004DD99368BF84BF8FFE369D6D277ACEE86F +:10CA8000DC1DB5E8D7EDBE02087A06FA6F13ED9308 +:10CA90004E63A09FC60BFB886F43E570FBA5BEBC31 +:10CAA000B2F01D8278CDD136F30E23F2C11A66277B +:10CAB000BA1AE811F9E0C5DA512EF579D1762212C9 +:10CAC00075B178CA28DD274F727BCAF6B6B439A88B +:10CAD00047A31D1AEDAA6A7BA5D6067A9EA2BFFAC5 +:10CAE00014B5537657B3F8CD9EBA5923D259DE8781 +:10CAF0005944D1D853B69B03F5807D887BD2B2854B +:10CB00006D56AD5D6ECF1EB4CB11A344E336F6ACCB +:10CB1000E271B592EC1DC95E33147787F6F34BF0E2 +:10CB200093BDC1ED48FFDD7EB2F44997164F274D06 +:10CB3000FA62FBC9D2D5FE733F5948134F87768EF0 +:10CB40004FDB4FA6D203B5BF6568E78DF533DC58E0 +:10CB500042EDFD2E7390DAB5C28D795EEDBC85573E +:10CB600044EA91CF9D6F9D20906B09F9CF524F42BF +:10CB70007CA69AAF88F9343F2F8FC4F55B900F796C +:10CB8000F173518ACEDE2D63A84D7848FF5DB667FC +:10CB90007639B56FD2747BC9B2854AC6F0B47EFFD0 +:10CBA0000CF9390A0CD40EDDB1312DE9F9FCCBE5D5 +:10CBB0001F1BF8BAF557B7DAD0AED3595D9586FB8F +:10CBC000BDD4BA85CA97BE00DBF7DBB95DA614F603 +:10CBD00033CA4762F44FF5C1FC04EBCD1E9CE70E4F +:10CBE000C140F596FE0B37CE41FE1ABEC6D38B76FA +:10CBF0004FFFF38FBD86E73DF2DA4BA83DF51FF9F5 +:10CC0000FBFAB8DDDD81F6753BEAADE4D06F4DE8A7 +:10CC10002FB11EFA2DEE93C020C38D351ABB3BD029 +:10CC2000C3B82626FFD4F9C9BD56A4F3E37A20D1B0 +:10CC30003EEF0EE424F8954ED4118AEFDCCB093D8B +:10CC4000FFB47DBD44DFA7CE87BD3A4ADB753425EE +:10CC5000B6F3FD17DF26F47DCD8332DAE35CB0DE78 +:10CC6000999EF8FB69B9247A7FD78A1FDD84F47313 +:10CC7000778B5D46BCF26EF3897A3C63D09515AC38 +:10CC8000479CDA19F70B4596433FFE713D39887A88 +:10CC90007BC71212419C9BBF6EB01FED87EE66A949 +:10CCA0000AC558671AE35F1D26565F7DCFEE490C13 +:10CCB000F7ECE0FC466D37D5BA77A6298D04F8ED80 +:10CCC000FD87EED98B76911E8E5B88F2F77BE4248C +:10CCD00074D9D9F63ABD0FEAA18350BE72787E4F5F +:10CCE00009DB374181C4987DDECAF032F073943B92 +:10CCF0009F7CDF745FD4BEE9443996849FAE99C4AB +:10CD000070FEB3AB4F0A28C7C60500BF42B9C2E6E2 +:10CD1000980B0F867673BF999DDFF3E1C027CA3B5E +:10CD20003E9FEA536D67CD2489E11123F1523BEA1E +:10CD30007A27A5D3F07A0F7DDAAB19BD8E6B3A4F07 +:10CD400098BEC3E8C304BC03E9D3F140223DBAABAB +:10CD500013E9ACFD9558CC8138A78650FDA3737DAF +:10CD600029A54F155738038C3E5D4D89EDF483BCE2 +:10CD70003AAF799F4A8FE1379EA738BFDBC5CE0D0A +:10CD8000DAB91FCA5E9358FFD3E2279F94FFA4CC61 +:10CD9000B70FB8D05E43E9CE357CDDEF3504A8FD92 +:10CDA0009D6C70A488A30BD03836658995E2D8EEC7 +:10CDB000E7585C9D072BE7A3DEA9BCB51296B668C1 +:10CDC0007229DB376B361DC2FD59BA8FF931F4F188 +:10CDD00042CE008B9FCBAB93681CC3B88048E36DF9 +:10CDE00087E288AA478E231A8A976B4A8C97BB885A +:10CDF00038A2BF4C4A1247A4C6D3DD7FF8313FC6E4 +:10CE0000D3DD6B9009DAE101E30E627CF407057E65 +:10CE100019F5D3706DE9209E4FF9E08D5B63885B57 +:10CE2000C28244FD0BA8F0DE0CE50D809B11479BF0 +:10CE3000727C31D43FA0D566CC077CFEF124C4E7D8 +:10CE4000B7D712E4E7D61C86CF0D1932A5EF787C50 +:10CE5000DEF7256D7CDE4F0F7DDF8FF26192417A28 +:10CE600087DECFF1950C0FFABB30DECF5C459FA774 +:10CE70002DF0FC1ACE05E232BCAC83B6130D222E87 +:10CE80007492A00DE302EE3528D9D83F7207C3593A +:10CE900029F5A7252CFE24BC7AD324A617056B718F +:10CEA0001EC30FB0F8B78EC929E2BF9AD8BA8D3623 +:10CEB000FF13F8FA55A58E772C987C95C6CFE266BD +:10CEC00074A0DE033378E8B85FD1F02798D7499390 +:10CED000715E8FB608E644BD52317993ADEB278C75 +:10CEE0000754E31C75F180FF27D57CAC65F3916A8C +:10CEF0003F7E8278C01B709CA3C7033E21CDCA88A9 +:10CF0000EBDF4B0F3E41E9E753F3274CF6EDD5FA43 +:10CF1000131A0FFFC08FFC442DFFADC3D3F6B2F739 +:10CF20005D663EB7FFA7B273ABF6EC3DA6C4FB2827 +:10CF3000EFF7323C74178F4B69CBCADB807C2DF73F +:10CF4000A4E8C1F88454EBA1BF8F477F1E5DCDD705 +:10CF5000D76BE47EF724E7DB93B6138FCB7C6CE0D2 +:10CF600072E2328907F826A5C35D8750BE3D7B99E2 +:10CF7000FB521F9F09F4B667447AE3F687B2C38F6A +:10CF800007B9FD2184FB563E03FC4267DF310BC32A +:10CF9000F76F8E81DFF3F52FEC9EAF54FE97219C47 +:10CFA000C5FD30F77B47F6C374733F4C770A3F4C9F +:10CFB00021F7C3148EE28739C1E947A527A02303CF +:10CFC000CE5BEE7472597404F3F44F932FCA8E96AD +:10CFD0007C1F43FD1F4FBE08BB90BA2E9F35DE500D +:10CFE0009FFAF80D153F3D6167784DAD175E8F3E96 +:10CFF00049C4E75612B0D075A5CF21F9AEC363136B +:10D00000D625A64920517FD1E3B410DE778AF8BA3D +:10D0100074EC6EBC0F438F7354BC391A4EEFAFE102 +:10D020007165352CAE4CD5DFBA03B3C610BABEB1AC +:10D03000A4F8448DF352D3437AE76C43C23CA8F181 +:10D040005E0565CA22D41B9C69920DF9EB78A57523 +:10D05000D11CD7C5C767A9F759A45A9FB8FDA92AFB +:10D060000DC7D357CDC6D35D07E328473B52D485C0 +:10D07000FACBBB87B72C6AABA67E3E3E2F9316C475 +:10D08000B83D0BE95E6A4DF3A0DDA465F5C9D7A8EC +:10D09000BDEF6503BD37B1A279E5BF23E81FFEFEF2 +:10D0A000C47B24F44FBB85FB5D01DAA0BD6C54BD8D +:10D0B00009F5F572D61FED397D7319D3D34C65840C +:10D0C000C5155FA6DD622F1AD6AF4A6DB798E0612D +:10D0D00076F5BD451EE63FE07675F55C947A0EC6A2 +:10D0E0009E438CEE2A769E06F9D34F8A989C182888 +:10D0F000F2F0F3302C3E78E8FC4D4D018580F9D8F4 +:10D100003EB4F3306F3F1FDBCF8E9FDB1ACD9FE61F +:10D110007E698FADC283F156DD595FF268E4BEF2DD +:10D12000DD45318DFC52EDFF6A7A3DEE59F46FE832 +:10D13000FC6F9B793F52FBDFF4FEB5017A0E1BFAC0 +:10D14000E709F9E27E9B301FB747777E2EC7E25F83 +:10D15000B211E511BFDF434F272BCB8584FB270896 +:10D160008908DAF557F381DFEEA374DA4E08E2326C +:10D17000A19DF4E33D9A4EF4BB215EFF553AF5BB09 +:10D1800075BB0CF4BE4C29A0F8453B95C7B5C84704 +:10D190009D732DCC1F97DAFFB6B62CF793FBDF1CDF +:10D1A0006DABD8F9F3A51901BCC743EF779B666156 +:10D1B00072437F4FC18DDC9F7FA33A0FE984A01D8E +:10D1C00083DCC9EE13FDACEEA55886F73468FC5439 +:10D1D0007F57CEEEBD19ED3E8A547EB4904CA8DE4A +:10D1E000D3BD36AF17E3A0226589E719D57B15803B +:10D1F0007E283F4B756FC5D5E5C265DD5B3195CFA8 +:10D20000E317F5DE8AF272366FE57C1E3EEB7B2B70 +:10D210007E59E61DF25F7E11EFAD28E5EBAD3E4392 +:10D2200056F6FEBC6612C138D13C77E4791C876B98 +:10D23000ADD983E743219FC6D3879A09BD1F75D80F +:10D240003D16FC7DFAFB2B0AD7F27BF13EE77B2BE8 +:10D250002EFA3CEC65DE5B91C7E9F0103FF7AFDEDC +:10D260005BD1817142F86C5C9AF4DE8A9E6BD8BA0D +:10D270005FC4BD1532C67F0EDD5BB1F67D9ADFA7B8 +:10D28000DE5BD19EFCDE8A67B81CFBA0CC73797E86 +:10D290007792B318E3A154BFFBBF95E52C46FCADD4 +:10D2A000FADD1FE5EDA7F2BB3F82F949FCEEA3C50D +:10D2B00025785E7A97CAEF9E791FD17898B8DE3EBE +:10D2C0006DB1D64FA797DF9D656CDC171BB7B1A971 +:10D2D0004C8DDB60E5893C60C3FDB6898F4B6D5793 +:10D2E0008DAFB891C7371C3132FBC891A20C5F8B50 +:10D2F00007893BF2FAB5D0AEED30F35BC4E3604F83 +:10D30000D89668E8E5EB9C5FEDCD64FAFA69C990C0 +:10D3100081F7A9869B18EE01397C0B3BC742243468 +:10D3200061F59822B52B90BF3C4C24B4CB88ED918D +:10D3300016B4CBF6340ED038D90E1ECF7C55D1A4FE +:10D34000C52D40322BCB242E4F22EC7C0BC7312A2B +:10D35000DF8BF0F520D6C856944BF6BB617FE27B9D +:10D3600010C708A9E3078770C7907FD523AAFE5589 +:10D3700094BB5B78BC998A17F5F8459F9FCAAFBAF2 +:10D38000A5FCF3397F78B2FCD2FCAA7F2CFF62FBAC +:10D39000554FAAFDFF8CFCAA5B26323AD3FB5717E8 +:10D3A000E5FA9F29A7F2DA63E6F7DE8C480F2F7CB7 +:10D3B000CAF4B02837F092F6FD671E9D3C06F5C111 +:10D3C000D1FAF1CB4FB91F478E5675221D96679A39 +:10D3D00025B4F7ABFD986461FB4E3CFCE800EA7BAA +:10D3E000C7BC4C8F6ACB5A4CF97EEE744F81D6EE97 +:10D3F0001252E36347B1B75CAE3E78A0DC33A23E85 +:10D40000F88762EEC7E27A38FC9D1E0BEF317A484E +:10D41000443B8F1F9BF839FEE501EAFF7406FCF4DC +:10D4200069446083F196D308DD9F8ACCFD7D869A9E +:10D430005AECAF656AA0C4A0B18759BCECBEEBD171 +:10D44000EEF91FED5EFFD1EEF3CFAEC8CCF93DCAC9 +:10D45000141FF1A15DE586EF95EF9A83FCE3650368 +:10D46000FD3EC27E932CDA20BDEE9CE0C3D03FFD92 +:10D470007E76591774E1391BF57B445D3C3E5EFDB9 +:10D480004E11ACD71C7ADEE2B6EC2C5C8F1BF8B9DF +:10D4900088FEBA567A8F76A85D9428FD9C59B115FE +:10D4A000CF3DBE9B2352145E6A0AB0FC26D1A76012 +:10D4B0007E5DEB16C411F1EF4C2CA3F95D9248FB95 +:10D4C000156A78730EE697DE234A781EA38F7F478E +:10D4D000A2676D55DA326A07394BF1297E37A3CD41 +:10D4E00014CFEF6BEF55D0FFD3D315F061BDF4F23D +:10D4F0006611D7AB27C53DEA7FF2303E1A46BB2303 +:10D50000E49B725FA1FA419F531270FDCA9EB55110 +:10D51000FA1B9723EDB379F1FB40ACBC659D817E8E +:10D52000DFC9D4CE70D738773341FBA8857FF76940 +:10D530008C97F1131381794C884F95E269C3F0F50C +:10D5400054EBE9D755BDA713E4F02D94DE6610091E +:10D55000F5C5E8C2DFCB786EA5630DA1F7A78BCD2B +:10D56000EAB91533B911E54509DB0731727D462566 +:10D5700095DBD9D48FAE9E5BF19057A87DEC389F98 +:10D58000BFE3A7B3A99F6547CDD84A9C3F92A3505C +:10D590003CFFB312919F0B4A6EEF1E3AB7DCB4E921 +:10D5A0002DC3143C97C3FC83529318C17CBD3D5BD3 +:10D5B0009D7FBD5D5B3DBF5CA7FA99347177159483 +:10D5C0000F263FC7ACFAE15E2BF9B1D44AF9239399 +:10D5D000FBCA2AE00595308C6CB99168EC782FF382 +:10D5E000739CA3F1D1B68ACF276EEA44C5A5C9F7CB +:10D5F0009F577CB1E5FB09B5FF9FF23D64E1CC9AF2 +:10D6000017B0198D5C3F83E413C7E7471663FFF437 +:10D61000F473AFCE2EA33FFF166A54CFBF0DD2FDD9 +:10D62000D747083DBFD6D5FEB68278E43D8F919EA0 +:10D630007F73590302C6378F45C58972C2403FF2D6 +:10D640003509FDCD3E3CDF26B4E0F70AE08FFAABAA +:10D65000C736100171BA2B9041EF1153CFBB2D5437 +:10D66000F74306EB977339D9BF8DF97BCEE2BE70D5 +:10D67000C8C9EF53899F179C5589FD597CECC95740 +:10D680004D5949F6CB65CADB7D159E11E5EDB0F32A +:10D690003CE4CB8BD07F3359647EEFFBBDC5F47C7B +:10D6A000732ABFA14FFDDECCA59E8F49F97D8F91D6 +:10D6B000FB6134C8C7F11CD57D8F1E0DE2F7D67211 +:10D6C0002C038759FAE38ED9301E13EA1D49CE3355 +:10D6D000D7E31A5D15B727EF5DF4488176BFD470A4 +:10D6E000F9A1E6EBF50F271F671E3F1F5AB4F0871D +:10D6F000F5F87D8BF714BB07CF57EADF37542FE5DA +:10D7000039DEE4FC28B49AF1A3BE45C42CC07EEDFA +:10D710007BF8D502B48F7E5EDFB7013E48CBDFB524 +:10D72000DA4CED4FC704DF6DD4AEB9C84C58FD914B +:10D73000BF73F31FC78ED27BAA47D3FBFE5C91C891 +:10D74000F7F5F3A8CF4F25176E9CF2F9C8857BF843 +:10D7500077882E562EECE274F445950BF7A8FDFF62 +:10D7600094F5BE3F737EA5CA05688FDC9743BF0B57 +:10D7700046E957D5634CA70764AF5DBBBFD9BAFF75 +:10D780001575865C7A4F7A43327E95CFCB7DDD2C42 +:10D790006F9882FE262FD337FE74E8091A8FB6D110 +:10D7A000A8CCC77177448CF43B37687F65F7735812 +:10D7B000E939F93E1D7EEEA89B95705E587DAAF86A +:10D7C000778CC79360FF99581E6845F7C1E5F2F55D +:10D7D000E55346E6EB074DCA583C97766ADF261AB2 +:10D7E0007FD7F954608294A49FEAF3F0040FD7BB6B +:10D7F000141B3FB76FC3F3FAAA7C1D92BBD7337FCC +:10D8000086D748A89DB5939F7BE80A882D283FDFDF +:10D8100003F988F24C95C73DF730799C44DE0AE85D +:10D820000F70F0F8AEB1C1B7E4154CDE36E3BDEBD6 +:10D83000631B06A9BDD205F25A2B6FFD3C9E827078 +:10D84000BBB346DEC6A68C206FD5F3FA4F55ACDCD1 +:10D850008DF6AD11C645C7D1C7CFBD77B5DF45F150 +:10D86000F47B6BCD227EA7E88337BED3C2EC6A126D +:10D87000BBB7800C523B635EF3DB146F4822A1FE02 +:10D8800029FDF978BC47938D67366D571DCF57D466 +:10D89000F3F2BA7EC3785E9BA28DDBB2B2B8AD5014 +:10D8A000AC4A44157AAF6980E2F58BBDA7E0C54765 +:10D8B000CEBDAA18695C225D07350E4F9D07FD7A23 +:10D8C000E8F1545EDD205D1F278FBF037C45EF47E5 +:10D8D000ED80F5A1F354B78BCECB7B0D042FDB414C +:10D8E000FCC4E65566F30AF8897E3FC7255BE97AF2 +:10D8F000622986A7E6D2FA4E1EBF35C27CFCDF64E1 +:10D90000F311BF17C24CD47B21E83D0F3136EE58DE +:10D91000C9AD0B304EED267E6E6BB87F2C62C37B9B +:10D92000307AD6303FACDECE39542F859DF372F776 +:10D93000B15434F23EFED8C4EEE51B760E69398B45 +:10D940004F51EFE5C33034F694ED02F4BF8977C947 +:10D9500042FACDF8BDC3F79C0682EBFAF7860CBA03 +:10D960006F1CFB05CACFEE544E9B4B71DF05326432 +:10D97000EA57255133DA251A6BAD7C9FC6687D2F97 +:10D98000AF7F67D492B02EDF78CC9210CFE425ED34 +:10D9900054CF6C24E6F8EF307EEFB93F9E433F8FC3 +:10D9A00057F73B31DCEEC0F5C2EB18D0A9A3E74B2B +:10D9B000EBCED99E3BAD69FFEFAEE47694ABC9D513 +:10D9C000F4FC14AF9F8AAF7DB0DEFADC69E0C31BC4 +:10D9D000CD72ED95383F78386B06E8D1D7FCBE3470 +:10D9E000D9F707D579B4F8A231B4CB64941305ED17 +:10D9F00008F06CB16870E566F7092B8BF38FD0F5F2 +:10DA0000DBEC26D588D736BB7BADD8AEBDBA998CBA +:10DA1000F47D43287F2D3ABBA1BC94BC1F43ED4647 +:10DA20004CB4DDB3127B1FEB5FCA76614F0C509C88 +:10DA3000258F781ECAE261F7B6A46AAFFCA3D6535D +:10DA4000653055B65266774B7377C4301EEFEE9F44 +:10DA5000DA14A041F83D313E7CF383D1334B806E24 +:10DA60006C24536AC57AB1FB7E81F1E2693EB3074B +:10DA7000D7B658D9AF201FDD5A4AA2184FD0FE2082 +:10DA8000F35B3C545440FB59DCBEC79A2CEEA663B2 +:10DA90003D25E2A174DAED110571F7983A5F89A886 +:10DAA00069670CCA690D9DA8EDA61AFF68EDAAF377 +:10DAB000AFE6EBDBB71C7D8B8CC352E323BF421C6C +:10DAC000AA6C70D0B8ED88A09C2AC37431D34F6D76 +:10DAD00007C7BC8EF9F3C54C0C0A243BC607637D0F +:10DAE000900EFCB34D41FE54FE91F8421FE21B988C +:10DAF00037D423767CBB59C67B5856CD7191568955 +:10DB0000A66398DFF8E224A515F6A3A528317E6B5D +:10DB100055AC5EC4FDBACA9D1DA17BE823E82FF079 +:10DB2000B755F87F904B1137D30BDEDE2FECC37364 +:10DB3000253B3E8E6C427BEABE43023D62DC18AB65 +:10DB40003F45F77BA490D6DFC7E7732BCECFC4F851 +:10DB5000F81B4B8337A0FDAE717FE574DC7643BFC5 +:10DB60001FDC49DB4B2BF2D18B0376707B5E1AC630 +:10DB7000E768E8231279E75FD16FF6F641C18BF2CF +:10DB80006155EC3F687AD5FEAC8264FD6E8C31FB4A +:10DB90005EE37E2FB5EFA9FD5975709F794966BC8C +:10DBA0009F17DB2FFD7AEAFBB78E9FAFD888DF4740 +:10DBB00045FB217E1F752ABD6687F2A58D29EC9451 +:10DBC000AFF17BE637F2B859188701E339B6623D09 +:10DBD000CDB836F2F41B570A49EF77DB6853EF49AB +:10DBE0006372C454E4493C277825D32FB07D390FA4 +:10DBF000F719FF83F6D7E7A13D53FD0B96C988BF00 +:10DC0000CBD9BE25C67504E366AC886724FC5D8964 +:10DC1000A15C07A0E2BBBE1AF980F1FDF35A7BA616 +:10DC2000E11985CA71E80BBDE7BD1C80E0147C1FBB +:10DC30002B47FBE31D5E2FDDD94C508EA6CBA4599C +:10DC4000C9C2FEE8CA972B340E807848F3F5AE249B +:10DC5000EFE5E5519C215FD7F3FDFF44BE9F3E9C5D +:10DC6000EF133432CC48CDF755FEF65F1F52478292 +:10DC7000008000001F8B080000000000000BED7DFD +:10DC80007D7C14E5B5F033FBBD9BDD641212F241DF +:10DC90001266C306160DB2493621848093103122D4 +:10DCA0006D174405449C4884C8E782D4622F36131C +:10DCB000085F1125284240AC0B1545ABBE915AE5D3 +:10DCC000A2F62E0111BCDEDE48810A450C9452B545 +:10DCD00016D3D656FA5E3FDE73CE33939D5D82E255 +:10DCE000AFB7EF7BFF78E34F26679E679E8FF37D8C +:10DCF000CE7366C25898853C8CD91B4C67ACC970F2 +:10DD0000F57FDAC4F0CAAA9ACF3A18FD7CE5C57F40 +:10DD1000D355848F1598D857668455C632F8554D1B +:10DD2000672C67098BB442BF9CA223CD330166A246 +:10DD30002990920570F068F38A20828C255500ECBA +:10DD40003FD2FC1380B7AD669209DBFD479BF7031A +:10DD5000FCD558183C8BA6FBFCAB72C6F2F1379889 +:10DD600027DF77A49AC63BC0DBF38215B32DD7C05B +:10DD70007569AE7AD6AFAD0FFECF09E4AABDEB65EB +:10DD8000B1F5C138263688B17581B3D563619C275A +:10DD90006447875964EC8122534D0DC03F868EE65F +:10DDA000406CDE026D5E80BE42D88E303CEF2EF6B7 +:10DDB000D514C03A070AD04CFD238C95C1F8FECE8D +:10DDC000FB8464BC02DE605D5FE1CFB5B1AB1DFAE0 +:10DDD000B3918CAD77B1C68E22C696322677B863E2 +:10DDE000ED2303265A673020D078FD97FE7BFBB9E0 +:10DDF0007EF02BCE41F0FEF673A58C8D0E4804EB21 +:10DE0000CF6D9A3A6E8B15D6B3567087713F382E08 +:10DE10000398856C919D4087B58EFD348ED3F9EFC4 +:10DE2000F4BCFEDC5A279B82EBD828C0D5B08EE923 +:10DE3000DA3AA6E33AE01A69DAB5ED9C95B17D6766 +:10DE4000EC2A8EBB712A8BD8615C2F93B708E9341A +:10DE50000FC37998A80813817F6EC6F565C4C6EB19 +:10DE60001F9A2530189F55C927CCD07F418B4D6A0A +:10DE700085A1375ABBC73502BC31D5145045BC7F8C +:10DE8000F05D01F0B6A0CA7F17F2DD82AAF2D916C2 +:10DE9000B8B23D1931FA0251364EEC6F52603CEF88 +:10DEA00014264770DCDC7401F1AACF3721E08C9B8B +:10DEB0005FA73FAC3F8AF347FE5588202D22EF65D0 +:10DEC000E7E038DBB3E56C11F1305AC90EC175C11A +:10DED000947187908E302E63D908C3BA92BF795D52 +:10DEE000BD72A03D9748FFC4F5F4D2A1A96DE8EF3B +:10DEF00000BF0F34B5D3F5A1A6C8D0DF1532D6DEEA +:10DF0000B48BAE5B9B3AE87EEC792E7F420ADC0351 +:10DF10007E74F9D2E3F8DD5D941E270F2915F170A8 +:10DF2000B6120F0F688C877BC71FC848BE63EBDC37 +:10DF3000A3AD2FAAADEB90B6EE2EBAB637BD1BB788 +:10DF4000CEC47525AE2371DEC47527AE53C79B8B37 +:10DF5000B5915C5A3479F2B028C9656E40792C00CD +:10DF60007291C42287EE077E6C571E1615A0271BE0 +:10DF7000AD1E6E02BE75FA4DC477D29A6571EBCABA +:10DF80005F160FDB1987691F308EE5FE36B5004836 +:10DF90006A7FDBA9B68AA8174B48EFEC537638BAEC +:10DFA000817F5A951D4EE46FBF639703F5E7567F57 +:10DFB0004D0AF1BBC8F9C0EE4BDC87A6672FA6332C +:10DFC000B55F6C5F8250C6F1CEACECABA4D8FEBEA0 +:10DFD00072CA2F053210FF4C3D0B787F10AF80E7DF +:10DFE000F51ADCAE5DB769F723DAF501EDFA63AD3A +:10DFF0007DE8A1C92938EF6AEDFE56EDAAAFD3E559 +:10E0000033B1A8010FC941178B1AD62D56A5C5B536 +:10E01000672B3971ED79E182B8F6A1A7F87C979367 +:10E0200003AF6A8A7BDE5DE48A7B7EE0D2F8F97416 +:10E030003DEBC8CD89BB3FA0317EDECBCDF7E0689C +:10E040005657067CF0C05016590EB87515ADEA4209 +:10E050007DE32AE27A87F90DFC0AF29C14C3FF39AA +:10E0600023FE5911C717283EC9B8BFB5C96D8DA881 +:10E070003F18F227AC935942D2A4AFD9FFBEDCE5DA +:10E08000CB555C8FCF44FA7475EEEE435E18FA9967 +:10E090002213999D077C9C8F56E66F95BB61DCD55A +:10E0A0003F02BE81AB3D7A1F9360DC8E26E01C3BB5 +:10E0B000D2DFC1D421703F37CC14B8EFB4B0FDA487 +:10E0C00097A3CCBB132E4E87B85F407B70006009CE +:10E0D00060B7BA8F60456B17DB38DCC0DB9F6C1212 +:10E0E000693C9DFF7CB9B2A91AE60D30D1CC80FF06 +:10E0F0002B8B1F6F778C4413DC2618611F6EBD12AB +:10E10000FF79BC3D0AEB7EE6733BC7772EC7B7E5C8 +:10E11000FE7014E5C889720436CD5934C984F6E41A +:10E120009E1A209F417F27CA0BE03FBDB82C867FF7 +:10E13000BDDF333E535DA488F76330AE27206E6F9A +:10E14000F5C6E0243F870717737B06FA6160710606 +:10E15000A74F68183CFF24D70FDF561F541633CD46 +:10E16000DFD1E4B8C8245BC84F5A125BB797D67D9D +:10E1700035AE7B87B66E5D2E9DAC8BF455811A4112 +:10E180008FA4570EC70D574A717DEE96B6D05540F5 +:10E190008782353D02AE2F372007711C69CDF438D8 +:10E1A000BCE42F8B87ED8CC3FA3A75B92E8E9A9802 +:10E1B0001A27B72EA61A9E2B6C4B8B8313EDD325F3 +:10E1C0007CEB07BE85A1576B7CDBEA5FBC06FDA13B +:10E1D000ED61E05B099F8FDE80B0BDCBCC5A25831B +:10E1E0001E4B18E7318DCFB67FFEA63304FC620FBD +:10E1F0005F168F93112FB96319D96FFF10536407FE +:10E20000EEAF48263AAFCD2D88A05E7F52C3F31300 +:10E210001A3ED7E60272D12FF2B38819DA45D6B387 +:10E22000FF2B80571771FF5452DB0E79014E3E646D +:10E230002579D3F9E2716D9CEF0E576621DE75FFEB +:10E240000F553A76DCDEC2F906E8329BDA47B711A1 +:10E250001F38C3DC2E486B6C4C8AA3533CACD325CF +:10E26000177E5D5A82FBE5ED3ADDE0BE6C87FBCCA4 +:10E2700017AF8F74FD07ED517B1A5C35FBB1B529E3 +:10E28000F0CC39B20315747DB0497E06FDB547BDAB +:10E29000E502F2D70A7C14E64B63A280EB1759C85B +:10E2A0004BFCD7D8B3CF064D7B8A25EEBF2A5DD570 +:10E2B00036F8D5C1A2D5882F1D1FD3862BAB10FFF2 +:10E2C000CEE936D50CF471FA40CF903EEAAA494225 +:10E2D00079F6B3C072867ACA45F8B657D92243E0B8 +:10E2E00079BB85FBB7D7EC89B07AD45B0E0E3BA324 +:10E2F0007FEFC4E7EC7E56EC64067F213722CB2803 +:10E30000CF969EAC49C362F7D76BFEE9E6FBC36CC0 +:10E3100092A6FF0A86E1BAB99F9C61620AFAB12B04 +:10E320006FDF24A33D765A025C9F4D60C55CFF49B8 +:10E33000FB481FD6014CFA4FE4EDB51A2C320ECB38 +:10E34000BCBF235765F5A8776FBFF7841DFD865CBA +:10E35000260DF1C6F46E4CCF46F8738D9A5E757437 +:10E36000F079E6697AF51BF4AC2757D35B3E31624E +:10E370001262F8BD2AA0BC847CE59C6C3BC3F1DD35 +:10E38000C314778C1E0DC3953D7DD10396A526A59C +:10E39000A0DEE0E36ECE63912258F7C065B0A720FF +:10E3A000C25DCF239C0F01826880F396802E4F8F31 +:10E3B000C1300E930CED3A1D36E785B3DD4531587B +:10E3C000C78FCB07F8C1F547B7107E9CBE36A6C0F5 +:10E3D0003A5D16A9C684FB5DC3F7EF72F4549B1037 +:10E3E0003FCBF8FE5DEE6E0E2FD5DAC5AE6AEABF02 +:10E3F00084C3B9BEA8508D74FFC21C179FE8D7E52F +:10E40000A8D7CBD0FE03FF1BF4DB8280721AF197F2 +:10E41000AD803C18E42E3928C7F5033D477A6C736C +:10E420009589F4C7FAAA8214A5E8F27AEFA92652D0 +:10E43000B260771D74FD09E82F36E4F2FD7D2BDA1A +:10E44000C221A29B7C12F1B4BA502AC079FA4D883D +:10E45000B03B611E4F098FAF566E7899EC7B9245A9 +:10E46000978FA1CD162E57C54EC053922637A9B50A +:10E470005C8E92DC00C355943558E4ED0E89C331AF +:10E48000FF1BE409E7B784B38C7EC86A81C77DBEF1 +:10E49000B4362564C0ABBE1E8776D5F9CD39DDA470 +:10E4A000DA81CF1E0D289E9238BE5405E44B0FEA48 +:10E4B000AAB24BFBD71443FF0C63FF08F1F1E0094C +:10E4C000E14E0BE0C3BF0DE27E782AAB84EB9FE206 +:10E4D000DA8009E9DF3F04F7E156A05631E1FAF5A9 +:10E4E000F1400E699C3F04942C3EEEAA3F19F93F7F +:10E4F0003DC4F9DF1FE1FCBFBA90F3FF906D9CFFB4 +:10E500005717727E1EDCCEF95F87FB4FE1FCAFC36D +:10E51000300EF1BF0EF7E2AD309CE536E06B65DE04 +:10E52000BDEF7E3DFFAB9CFF233AFF8739BC4D8397 +:10E53000DD0A87DB357910152E0F53389CEE938951 +:10E54000FF5723FFC3FED6BBC337A07E5D3F3D4DC3 +:10E550005085D83AFA9570FF66B36CA9EB4B4EBA6A +:10E5600035FFA723208F2E213A29EDF530CFE2DBAE +:10E570006D1D689F6D396BA277C1B8AB04164E0252 +:10E58000BF6C554E2BC1B6024B18788BD906ACE345 +:10E59000ED350E6A5F99B18AB7CF74136CEDBFF495 +:10E5A000C45DE9880F5B2009ED40FF1F126CCD7739 +:10E5B00010BC7AC6BD3D77C1D59AB98EE1FE568EA4 +:10E5C00061812498B725D54674B2DEC122E86BAFCD +:10E5D0006962BB7C60B7322D6141847D64AA61466B +:10E5E000F89198B493E4B547C6E7337DA284EB066F +:10E5F000D9D8556490E75009D70729E95226DABDE2 +:10E60000DE719885E485B94BC80EB634B188CFE089 +:10E61000474E2B2920FCA4A42B0CF5B355E4FC0792 +:10E62000D748511F7ED13EFF8E35E8C7AE9E670AA0 +:10E63000604E68B59FFB19AD2F01A5058C03DFED7A +:10E640001C8CFC030FA09FDB9A9B36DE0FF0A7ED1E +:10E65000A600EC85ED6B31D1BE5B7D3C8FF254FBA7 +:10E660008E3A3FCAFB50EEF7B7E6D664A2B371F517 +:10E67000C554A69632B641B3DFFA7A73E07EC490F1 +:10E68000C71986FE92213F07FED20F513E1E4B88CE +:10E690001775BF66DCF05013F281BBA2A71AFDB557 +:10E6A00061EDE0775DD3E7382BBE6E9CEF0E975798 +:10E6B00097905F2DAFC16BCE73608FAEB9D44FCD45 +:10E6C00079AE43C6F82AD15F65B569E417E63CB771 +:10E6D00026C4F38CF1FE6BCE736D32E6D1AE463FAD +:10E6E000A79431DDFFC979AE5BC6FE39701FF170AA +:10E6F000AC94C70B56F0CBBFB2C7C5CD8F95645C49 +:10E700001A37245E7BE33671323D077AAC0EE9EBB3 +:10E7100091D34B5A595FF99BE5B48E1301F9E91275 +:10E72000BA2ACFE2755D46D6F80209F56D17E9C140 +:10E7300075021F471D6A0AA03C5BC14FD94DF30407 +:10E74000699E6B3F4F49C57CD95A9F29F5CE22E37C +:10E75000F8CD34FE5D25F2CF485E357F9155456892 +:10E760005C574B09CF3FF913FD43CE9F7AFFCBEDAA +:10E7700057EF971B0EBF650B9229EBC1BCA155E06B +:10E780007CB6B9447903F136607ECB78D4D3CF60C0 +:10E790003BF0F1B3E04F207DAFFDFC09CA738885E3 +:10E7A000A610C55FE9412D1E0EBF3514A66E29E7E0 +:10E7B000784BBDEED34383D231DFEA2B41BE4E19F5 +:10E7C0006D21BE7FC02FED307B63FB84B8EC08EE7B +:10E7D000B3F5D4661993AE62F5462D2EFB76F14E55 +:10E7E00075750BC5D3E0F7935CAD952DEF34617C67 +:10E7F000D008D28CF359DA28BE6E39C2E312F48401 +:10E80000553DAF8B7055589D8372081BA1F8B471AC +:10E8100071F47E8C4F5FB04A8E2CE8B7CD74C60A77 +:10E82000FBB747CE4E277E7DF2ECFDC89F2C3D9D69 +:10E83000E8A9E7732CCBB4B8B091D3E9D2FC8F46EA +:10E8400027EDB96FA293C7A10A36B40B0D8CF8C897 +:10E85000ACD129B982B5A0DD724B6C3BE2F3734DAC +:10E86000FF7D69553E477CDA949096C496693DB029 +:10E870007F15F3DCF06B0FEECFE37F980DC27C7C4D +:10E880008DA307F3F3BF28512CA5F05C96C22CA8EA +:10E89000CF72E7F1B829C527929E00B5D5C8F5E833 +:10E8A000648DDE30647FB8CF7F65F2B20DD5C84F7E +:10E8B0008E2CB118E96F1143E48FE8F2F2A535947C +:10E8C0005C5A66588FFBCAF67FA5FD5C810E19F96C +:10E8D0004C97FFB5BEB493182F3EC11C61E45F9006 +:10E8E0005309E78F1475AD253B6B623D2915888F61 +:10E8F000EEB53502CA27C82BDA9B569057DACF9F60 +:10E90000A266C37E989657B7A4F3BC82BF94DBD5AA +:10E910002FADB21FC7DDE7E371F1037ECE7F0FF8A5 +:10E92000763B5811C23C8F73B9F5A7687ABE17467B +:10E930004902539562E171E0F6957FCB42BF69C70A +:10E94000E799AE501FFE694AEEC393901F81ACD188 +:10E95000FB31AE7ACE2A619E32455D2CA35DF9A5CE +:10E960000008AAE833AEBEB63423963FDCA9E70D13 +:10E97000973D4C7C33B03D5A07EE2DF8B9FC3EC4B0 +:10E98000C3D7637FF77D3B0EDD0FFC90BCACAD0DB4 +:10E990008703FD5F577A05F989981EE37E62A2FC22 +:10E9A0003A75BD7649DCCBF369299A1D700A2AF7BE +:10E9B0000B46C7CB4396D21145BA66075931F2EBE5 +:10E9C0005D1A7D5CFE288F9F2C11E2BBAC5245C1C5 +:10E9D000F5BAAAD8193B9D73F5C818075F313FB245 +:10E9E0008E684D30264749FE2332CA9588FC047252 +:10E9F00094DD1051B13D57D3AB20570B116F9E6082 +:10EA00004446FE1A203B489FA6F8C57DA63EE42A50 +:10EA1000518E70E546BE4BB443C07F4B49AEFE9B62 +:10EA2000E5A9D5DF5987F2E316F87A1FF01F95D1D3 +:10EA3000AF72B16835CA986E2F1ECBFB88C9703F84 +:10EA400015E214D4EF0CFC1A3C0F6A3DF5EBB6C18D +:10EA5000B0BF5C2D5ED1C75F5FCAE3F6368D3E2C3A +:10EA6000BD3B0BE9E208C81B104FC0970F97F6910A +:10EA7000EF5BEBEB7418E3B3B5C9E1462DBEF24F83 +:10EA80001CC67AEDD0E3A5A6B8F3B1C47DED03B9F9 +:10EA9000C4784B974FBFA39DEC999E6FBD1C5EEC55 +:10EAA00028A7FD0CF1C07CDB143A7F626186F3A7D6 +:10EAB000D6461D68EF56E7A711FFBDA4ED4FEF0F37 +:10EAC000F1D3FF2A35ACCB9ECBE327DD0EB4D8C201 +:10EAD0009417D4ED48E2BAD759D4BA9FA33D05FCA8 +:10EAE000AA282F81BEE56503FA4ADFC2BED81D2AD7 +:10EAF000F9E54C61A4F75234BABA03DCBE64A37DD5 +:10EB0000817B874A7BEDCB21DC87AD2144F94B5DCE +:10EB10009F2759C2B2CD8B50878A7C9E037C4E764C +:10EB2000A628B2A68621FD76905D5F5EAA74219D1F +:10EB3000B39436924BA74F243CF4CA41D565EC8B75 +:10EB4000FA4DF645E2716855BAE6C76976A6EACA93 +:10EB5000F090D418D1F28007488F246BF2ADF3F90E +:10EB600086868DB4DF0740DEF19A8DC92BD44343EE +:10EB700081DF05E4F737BB709F1BDC2C2E0EFB6397 +:10EB8000298FA72FE8FC2E02BF0F237EFF44E3F757 +:10EB90009ED23EFC54C0579FFC2EABCD42827E8855 +:10EBA000B34BFFD54B27F9BF4A336276A9D72FF273 +:10EBB0003F4C7CBF36F75BF27BBD8BF87D0B83FD52 +:10EBC000611ECE15A6FC812BC8E713837C9F629043 +:10EBD000EFB355E3D7569D5FFD7DF3EB273ABFEAD0 +:10EBE000F9743FD3F3071941E4CF060BC5FDF65C7A +:10EBF0009E3FB862BEAEE822F68CD9079E47EBDD99 +:10EC00009FC042B80FB40FC847C0EF84C71CBF48AD +:10EC1000FC5EA4EDA3BB5419122CA3F965F407DC28 +:10EC20009AFE76F9DB283FFF6DED462AF29588764D +:10EC3000236D5FB5C16E38832027C0C239B5912ED0 +:10EC40007457414ECA70FF9EA27014F5C92572A276 +:10EC5000DB0BF5123FE59BECC598E03FC15EE87E1B +:10EC6000170B846EC475CB8CDB5BE0EF0941E3F9D5 +:10EC7000D965E293B5B690C4F5B91AA73753A4087D +:10EC8000C99DCB6721BED0E959170C4D0966C4E870 +:10EC900080F15547DFF2C164033EEE08F6CAC71D96 +:10ECA000F4BC8FE7975C8AEB0CC6377F08280D41D0 +:10ECB000F20FD43F21ECF2F3FCD295E2C15ED1C356 +:10ECC000C89F60D1C3984FF031AE077DB91D279022 +:10ECD0004ECCE408A3DF69D8C7229CCFD7A6EF4368 +:10ECE000F343EFE57E28C693130DF9BB2DDAFA2125 +:10ECF000FEFC01AE3FB17F1F7E6BDCFE9B82BD7EC2 +:10ED00006B13CEFBF8E7768ACBB66AE774F6C6CB10 +:10ED10009EC3ACC4F912CFB3F4F36527934C0E0134 +:10ED2000E91E750EC1BC58D012C0386BDC70E5A16D +:10ED3000A076AE85FEA4E15C6B7DF00AFC46CBB20A +:10ED4000CBF88B8DFCBC25519FEC5BB29BF2D25B68 +:10ED5000AB9884FA6EE5FCA76EC0F5D89798305D45 +:10ED6000CB52A26B491FA6349A224E687FBCB18059 +:10ED70009FD75F86BE6B31EF3B04CFD31D74B55B6D +:10ED8000DAE81C0A084BE707764784C37E0D7677DE +:10ED900070B8889F27D8C5288703BCFDC184BCB143 +:10EDA000A7AA9B9F03C86951732A3F8767C673F858 +:10EDB00030AFC7D2F31F784E1ED71E4CC3B97B614C +:10EDC000AB3F70C80BF3D834FE5A955B8BEE19CB72 +:10EDD0001BAE4411DF9B84EE7126D8B7359D45905C +:10EDE0003FE7AB10E701BCDECAF3C2D799AB52CE06 +:10EDF00022BF6771FBEBC27160BC2E4DBF5BA58863 +:10EE00008AFEB75565818884E3C86407E7C3EFFDD0 +:10EE1000A04B1BE0ABB610E70BBD8DF339A46E1B06 +:10EE2000D25B1F3F11BFC7347EA4242CEA0F8B9204 +:10EE30001D1A7679F99A3A3CF46B1C17D789E73D8D +:10EE4000BA1E4FECBF2050FD1BD2732C70E85A58ED +:10EE5000DF4A2FA3FA8F159F8F75601CB5B21AA4D5 +:10EE6000340787FDB79C7DBECBCBB57E7D08F635DC +:10EE700001F87D1D5E617F2BDCDD53F0FC7B5919B1 +:10EE8000536BAB00CF16A50E68CC3E7D69DBB47426 +:10EE9000C43BD2A812C294B25F6C55619D2B34184A +:10EEA000C511E9F79053877F31ED4A9E87850A881F +:10EEB000970ABB7211F79555E1A0F31FB06B36B4FA +:10EEC0000B17ACFC9C2CBB82B588C363EB5E56C6AB +:10EED000F545B6768E90ADF9E3D9DA79437E19A778 +:10EEE000EBD5DA355DBB7A82EA1633E5879219F203 +:10EEF0006FBB46BFE48A1EE2E7AC22B1989FF7EAF7 +:10EF00007117E81B8053CA383D21CE5A5686FA3015 +:10EF1000B74DC07356A76637ED0D5C3F2E43DA64DC +:10EF2000208B4604E4BF6EEC4FFB6A4B45FEB5E711 +:10EF3000F2B84DEFB76124600D82E30DBDEB5005D3 +:10EF4000B4DB9E60379DD70DD0E6BD3B28D3BCFA1D +:10EF500073938221829D41B5D96C98772B8E077867 +:10EF6000DAAAE12D715F9E6094F6EDF4038C2A40DD +:10EF70001BFFE65299D6A98F9313E4FBCCAA00B9E4 +:10EF80002779E47EA4DEBE459B678B368F3BD0ADF0 +:10EF9000E2B82E858FABAF3FA8D1E92F25211ADF2C +:10EFA000217591DDD1C7C9AA88D0F9FABF697872F5 +:10EFB00006C30CE3C72C251E4FADC3F97AE65645B0 +:10EFC000541C1FFC1B9BB1DDC047D5655FC347893F +:10EFD000FCAFF351F24016267C0D6ACB2E85F56D01 +:10EFE000F942CDBE09AEF565361AFFA1D4C854B4B6 +:10EFF000E385AC4DD7C35E94BB94E8961376D4BB3F +:10F0000041B100F5AE7EAE4EF106C43D0FCDE179C3 +:10F01000F40D41B61DF3E82955911B6605311F9289 +:10F0200027E279B1279ABD76305E0F0DC2DC3F6BC7 +:10F03000BFBF6F7DA2EBEB5EFDEAEFA273034F3023 +:10F04000508EF8585A26C5F9179EAA2EA2BBCB1788 +:10F05000188C7AF2A1D4EE0FF01C776BBD4DDA015B +:10F06000EBD85F7F8B09EDE7FAEBB8FFBC7EE4BA23 +:10F070006CF49FDBEF57693FD95562C172B89F1D91 +:10F080007D662D8E93ADF6979DF87C2DDFCF9FABDF +:10F09000603F86FD66E37ECD64874EA4103E064B3E +:10F0A0004E01F3066D42FDB0D8FA1FBC9FD321C5B7 +:10F0B000CFCF3D52AAF8FA7BFDA2861ED96658F73B +:10F0C00032DC9721BE4CB4232BADA12C3C0FE9D5EB +:10F0D0007B2C3CCDA8F75631D6E7F95147A0BAA50D +:10F0E000CCA09FBFD15FBCC27E33978E65BF05DFCA +:10F0F000FF651BAFCB5037099437786563F1383C17 +:10F10000FFBCEB03CAC5B299F7DDF808D6AF8E3C59 +:10F110002756E3FD99DB52038887055DE171946F03 +:10F1200008B34021E895E5493F2AC6D47AE374F74D +:10F1300068D4278F76B23B50CF679A17152F22FFDE +:10F140004D96DC80FF7AC6ED59A639751CD6CD6682 +:10F15000DE640BB4C0F31F5BC5836FC078AA33991C +:10F16000ED04B8BEE3BE7A1A5F04971DF471BD4585 +:10F170005C85B04392529B01CE743187B384B1F267 +:10F18000E5E2C17F81717AEEF6883B44D423E2C187 +:10F19000C770FDE17CD1581FACEFFF2E396443FEF0 +:10F1A000B97A972D8E3EC33AE2E1E17BE2E1E26873 +:10F1B0003C5C7A281EF6C3DE709EA5ACC3467EA6D4 +:10F1C000C2C23B8B19FB50ABFFBD5BABFF7DF50BA8 +:10F1D00033C37DF73C93C4EB6822E40BB0393F1D89 +:10F1E000B61DE5F4E52FEF791FF3883DFF610EECC6 +:10F1F00080E697AF02DB4F7519917C5CF7475B9F08 +:10F20000FEF17DD0FED1B39969C8CA9D1FDC79FAA1 +:10F210009730DE5C9387A13C5C68EA6A47FB3F76E7 +:10F22000EE6BF9689F2FECF9D98F116F7F78C1CE03 +:10F23000902E7FD0E2977D27F79EDF8AF3BE905411 +:10F240008C39F83F3CFFCA60D4E7737EFA7A3EEA15 +:10F25000C38F9EFD6939C1CF3E730D5E3F7AE6E9EB +:10F26000C1F5640723F9E80FEBE3CC7DCE79A65F07 +:10F270001FF5D6FAF5DB8E3B57AB2799FBDCEAAEE0 +:10F280007EA017E7EEF2A8789DB3EB813FF1ABF0DB +:10F290000EBF3653FB1CC04C05B8601F7AB8BCCEFD +:10F2A000DD658FA3CB90F6783A7D08FA7537F41BAD +:10F2B0001A89BF7F5E80FB988FBA307DBC3799F783 +:10F2C000C3759C87EB8BD07F21DC4F85FB17B4F88F +:10F2D0003B719FFF55C6F36A0BF7C4CFBFD7D277F8 +:10F2E0007FA19CEB733F5A63839F9F63E7FA3DB115 +:10F2F000BF5DEBFFECB3BDFDCDBCFE1FC409FCC47C +:10F30000B99A5CBDAAD517C0CF9201C09373914939 +:10F310000A62F7E732C3BE61BEBF3892778860D712 +:10F320005FD0ECCB67562EB71F35C98F603DD3F940 +:10F330002659AE35D415CFDE56BF2A1BF866DE8BB4 +:10F3400085C5467D38EF999F986E83FB1F839F612B +:10F3500002B9FB68D7FE4D780EFD518795E179F330 +:10F36000BC67F6F7C77A828F3BDE48C67EB3DBBD4B +:10F3700064E77BC76DBF4EAE35F8D1DF563E5FA95F +:10F38000E07A6C6E87358271D0DC8E63E306A0FE76 +:10F3900068170285304FB94531A33DF00465AB4A8B +:10F3A000E77FFF763007DA17BE5E568E7E53AB29B5 +:10F3B00074D37750FFFCD84C71DCCF8FDE6946B92F +:10F3C000993D8C99302EE8F43F6C3B0BEBAF2CE76A +:10F3D000FE59EB2DEE46CCC7945BD80113E8A1E4AF +:10F3E00027055983DF35013F32B96D46149EFFC0B2 +:10F3F000941C680D127F529CA13E6F263D3BE2BDDE +:10F400004FCD9F033C77A799CE7966B7C7F34DE3FD +:10F410006B56D50E72B570E78A64AC4378F94BB37E +:10F4200080FAB767A7407A41C75BA3196B3800CF52 +:10F43000DB3D6BB026FDA38C483ED6D37FE489E448 +:10F44000A7F1E7EE407FA071D79B7FC773E0BB2396 +:10F45000F1F324F2C31DE57AFD09F31BF92AB11F6C +:10F460006A244B79AC7DDE52B01386739479E7DA67 +:10F470006C18D7DD3DC1F6B5F3015F3289F0E224A7 +:10F48000BCCCBDAA6330EA43C122D6B4F03CA4E0B0 +:10F4900080793EC2DF067198C1BAE6205F03CBFED9 +:10F4A000E5D49B0F9981BF73CC1DA717A0DE057C07 +:10F4B000ECE47A7FD50BE9A4A718C6FFBD7149D645 +:10F4C000AFDA6B0D79B58FF7FC6CD52F916F15778F +:10F4D00018FDFF8FA568721AE06FAF668F3F16396F +:10F4E000ACF76FEED89F8CF9EBB91DFD6AD06FDBDE +:10F4F000FBBC906602BC7FFCC153497DE5F3E67C12 +:10F50000905663BBE652BDA4DBE133F82BF0E3AACF +:10F5100072B9B91C7DC4967E143766F60B1787FB4B +:10F52000184F7F2ECDF1C86388EF7A2DEFF3B035F9 +:10F530005C4C78BCDD1DD8E9BDF4B907CBB9FF7CC4 +:10F54000B822D456CEE30B2FF2539AE20820FFFDE7 +:10F55000D61CB85704FCDEC5141B39D02D141CB0C2 +:10F56000D90CE848780F8C43F9993301F009F2304F +:10F5700073721BD9FF8D8B58C05C01B02542F679A0 +:10F580002678048F801DF6ACB333D920CFB3360272 +:10F590006CDCFF36433BD06FCE93F1ED735994E6AC +:10F5A0009DF7DC5776E338BDF5DD4CB6617EEBAFF9 +:10F5B0001AFE0E57C8CF20FE84490EF2FBEE795E8C +:10F5C000207F31DDD641EBEC8175A27F304DF37B9E +:10F5D0007E670ED17E17DE572F3700FCC9D2997295 +:10F5E000433FADCE14F54607F787E6D6761C243D9B +:10F5F000C2C4DDB7414C3ECF11E27E8FC4C4EB6183 +:10F60000DECAE726D2BE5923136F1C0070E344C242 +:10F610005365983C17364DA3133BCAE97A126BFE2B +:10F62000D1DFDAC2C79FCD54C2F7DDAC8BF67BB019 +:10F630003C8DF677681FAFCFF9CB9E547A5F46A713 +:10F64000E35F582005E51BFC1FE64CBB94CE897890 +:10F650006EDC968077239E0B10BFF1745AF012E097 +:10F66000BB0F3E7D54B31FA7217C36E60FF53A82CF +:10F67000479B056A7FF4661BB9A09BA6CEFA09E5F5 +:10F68000350007DCDFE5E7A0ADE82CF3383CEA8085 +:10F69000795CA5BD30B5972FD7E1C5B75D84B87C3F +:10F6A0009355C9160D72B069A28D45B93FE4447FE8 +:10F6B000A8A852F908E93ED31C3A88759C0D263952 +:10F6C000DF4281463FAD9E223C34DC87FDD5F7B555 +:10F6D0003E35DC4CFC51CCC41DC5C45F04270D6213 +:10F6E00022F239785FDD98A779A0DC41F90BFDF9AA +:10F6F0004C13B8AA7DE0BFB7DDC254771A5D9907F5 +:10F70000AF30A1E76BFAEB7E6AE655E145387F261C +:10F7100004972B603D9949E1E2C54586764B5B3500 +:10F72000F24F16F09F0AFBF39CBDA79AF257254CA7 +:10F730005C918AF9A52ECA93ABF70B64C7925E7BE6 +:10F74000318AFC3BBF4E32A19ECEB8751D3DFF6095 +:10F75000896432C3F8B923B8BE4FD1FCF52DC286F7 +:10F760006C6CDF922D09385EF025B06B707FFE4B1C +:10F77000D5E6F96EA227F7EB93C2DBA91EEC0E7F4C +:10F78000C90AA0B3778444EB7395B6EDC3E77B1643 +:10F790004984CFACE5AA17D79FD2A9E17922C773D4 +:10F7A000C6ADCB9AB1DF03392C0DD791C59A05ECC4 +:10F7B000B72A83F3D1AA7AEE8F599848E702B95352 +:10F7C00044A17924EE5F26B97030F1455829B4B3CD +:10F7D0009614B07F8F26F3756598CC774C443E2CF9 +:10F7E000E170DA3241DE4142BD81F69969677542C6 +:10F7F0001ABF8FFB0216945F741BF03B96E33B73BA +:10F8000010BF0E751C723F04F32F115818EDF8DB72 +:10F81000E9BA3F1E7523FF7D6295334B51EFBE63FE +:10F82000655437981FDF5EE0AB4BC178FFD3C058FB +:10F83000CA737EEA965352E1BA07FDAC3EF4FB77F9 +:10F8400046687EE4C5012C62B0530BA7FC8DE2969E +:10F850008517F3E3EE7F0CF16AC4106FCF6BEC1CDD +:10F8600087FDE6B3AE552837F33BCC2C6290EF3DD5 +:10F870004E3E2FA8698A33CEBE5D5882FE4FA23C11 +:10F880002FBC68A6F37EFD3DC9D8FCB6B87A898541 +:10F8900017FBC59D53C5FAF58FBF7F518887F77C4D +:10F8A000A6F5B3F0F7B02ABA93519F27C64BA3CC65 +:10F8B00026BE5E8B948CE7BCA306B25E18EBD447E1 +:10F8C00099058275BF7E02D8F706AA5783FE30DEFF +:10F8D00085C06F9311EF672DDC9E9F8D98D4C2E198 +:10F8E0008837FEDECE59CD9FD7C7D3D7A7DFBF203D +:10F8F0007693FDCF31835F8EB0D41DE70F603BE27E +:10F90000F9C2145D2F452D38DFD6C03E8B04F0BC04 +:10F91000C0BE71CCC05F31BA24C5BDF7D17F455799 +:10F92000D404F2F6F088438F150D0556EDD4F5E0BA +:10F930005B8FC9A007FB9B4D717A3229D8AB374941 +:10F940005D3F6A326B7AF6DF1FC37C660CE6FD63AF +:10F95000CFBF7D5B6D2EC875117F7EDB88FFF8CD34 +:10F96000727A79487F6FAA279FCE6D75D89100BBB8 +:10F97000011E6680C584F6F484F6AC043897F79FC0 +:10F9800091D25D86F1F9D323DEB9CD02723D634099 +:10F99000F7F70580D7ADF8D56DB523295F340EF59F +:10F9A000D8C23D82C8C31C8EBF0501FEDEA93BD074 +:10F9B0006D9B598478081CC47CF83CE827001F27FD +:10F9C000154519EABB851DF09C6478AE83FBE7F30F +:10F9D0003ACED073971DDF6F22BDD0EA3F4BFDE6D4 +:10F9E0002FFDA30DFDCC35F39687D04EEBE7DC164B +:10F9F000A6C80340EF2DD833517B3F80DB930BD952 +:10FA0000F27E5C8FFABA20EE34C8D5421CD71D9323 +:10FA10002FBDFF6F86BD760CCB6C9296FCA9D902E8 +:10FA2000FDDF9BFFFB329CEF37D86524EAF3C8501B +:10FA30009C777AE39D43F17E5A51D7B15BA0DF6991 +:10FA40006BF7E3E8AFFE7EC48784BFD39EEE3C0134 +:10FA5000FC9B0F477C7A9B05F4E2E98CEEC7119F73 +:10FA6000B32AFECAE1BCEE3C8CCB2E8C289D4EFD09 +:10FA70000BBB1F4778684506878775E761BD4C1942 +:10FA8000EB3FBD16FAEF14B9FEFC31C4F9A8877F2D +:10FA90009360F7DFD3F4D467E3E57747E07EE67160 +:10FAA0007B3B636BD754D4CF334C609F809F777E72 +:10FAB000FCDBE777023E762E4D623B383B86306EAC +:10FAC000C8E4AC0FF6A48DEC408F17EC02F4F7E01D +:10FAD0000BE718A75D63892CF7C6E8D26B5713ECC8 +:10FAE0004E53B93CBBA22C762DBE0EAE80D7D91595 +:10FAF000927EAE5D8CF5E4D3A7BB0368BF99A5BB2E +:10FB00000CF971BD93EF0FE488E8EDD6E8F3A96630 +:10FB10000F3F1DC1FDE5A7CBAFA371214E51B18EA3 +:10FB20005D9DC8DFEBDE3851CE76A5F3F7A1D5B8E1 +:10FB3000BC8D95E2B38DE84B60FBFC423A7FCF3140 +:10FB4000F37DB147789CA3EF671AEA2B835EDC78DC +:10FB5000F758CA6F6EF4CAD9A86774FD7B79BDD80F +:10FB60009111AF173B32FAD28BE0D06618CF316FCC +:10FB7000B3B2108E7BDB76AE0F7BEF6BE739FA38D2 +:10FB8000577A7F632A5FAF6E7733577490DDCEDC90 +:10FB9000EC4D5B41F59F78060AFCBC61C80EA4439E +:10FBA00051E524C2EBC6894F39EF2C8AF1FBB01B1B +:10FBB000E502BC3FCDCCF3203A5FE10FD6C3CE7C4B +:10FBC0002493CE51675770FA80BF770DFACD8E4AD5 +:10FBD0004EFFD9A0EB185D456A9F618FD20B66FF7F +:10FBE0009F7EFFD7E837ED1FA1DFFCA5BFBF327DA9 +:10FBF000ABC9F126216ACDE4FA563BAFEF2EC3F72D +:10FC00006D9C2394F91586738619FF323F9BEA0891 +:10FC1000B4F524FDE095BA5B013C3DEDA39D4FC1D9 +:10FC2000F3A77FE8A43C46627C9054D4FDFC831883 +:10FC300027338F88E70BA76DDDC302180799949FC0 +:10FC4000BC82F3E69845D095101731EDFCB49BF6D5 +:10FC5000F9FE48A53FFA556F5498691CCC733023C0 +:10FC6000FFAD0DFCFAFE3EF9D04C7CD7F3BA3982D9 +:10FC7000E71F1B8B235B6661FBCD450115C6736ACD +:10FC8000FC06FCC8EBFD6EB351FDD3C642934AFCA3 +:10FC90003AD545EF416CF4F2F9364EF513FF2E6577 +:10FCA0009C9F59A389E6EF831FF9BC85269A17FC10 +:10FCB00000F29F627CD9938C78BD942F7BC82FD3A0 +:10FCC000F1F68996EFFC04FDAC14C37D2D9FA28F45 +:10FCD00073A5F775BEECBF425F07E7C3730F6752AA +:10FCE000BE1CC46B30AE737705CF5FEAFADC51A956 +:10FCF000BC80F48FF9F7BCBE68E67A9E67DF5DC111 +:10FD0000F96AB587F3FB3621BA05DB4D0E310DCF0D +:10FD1000170E57C83F437E5C9E946C43BCFC1EF894 +:10FD2000B91FD8A7598CDD2B18E2CBA42285E2FDA0 +:10FD3000196116407F663698C931F84E961A1F67CA +:10FD400033668BC1E64B61CCFFC5E739BEB4C7F75C +:10FD500057357BC6ED61BBB0680BAEAB3D9BC77D35 +:10FD6000338A7AF230CF7B27E61B60697FF9D8654A +:10FD700012402F9CD5CE130FBD5D4AE7F57AFEE009 +:10FD80001D0D5F87F695A7603E4BBFBF80F5503EC7 +:10FD900003583ABC1EF6B730B97B30CAE75226F397 +:10FDA000F318D52321BFE97996F36BCD949F608832 +:10FDB000EA20FAB502BDDF3BCFF1393FAFA9676159 +:10FDC0003BC8C5D6C13DE3D02FDA5AC3C2E817E01D +:10FDD0000494C7C327A1FF269B32D418E72F74755C +:10FDE000E7935F9DD163C3712FD4C3D4F0DC42F598 +:10FDF0000BFA2E4E62DC84797723FE2E20AB97F42B +:10FE0000C5E7679389CF614D14EF5F615CA1C713AC +:10FE1000BDF141423C9118375C2E9E58603A3378D0 +:10FE2000B1219E48DCC70278B4AA84AE07CC9847BB +:10FE300066DDE57D7DC76181E92C8D9378BFB7BD17 +:10FE4000FDF75FD0F7525E4AC8FF24F0DDBC182CE6 +:10FE50007C25203D0CED5E831E0C6AFAA396450AB4 +:10FE600089DE5D32EA4390CDD1A8E7166A79B58C78 +:10FE7000CEEE7188374FB083DD8971E3075C1E2BAE +:10FE80005FDBBE1FFDF2B4DAAE3C7C7CA1962F4E48 +:10FE9000F4EF46BEB6C18CF1D2520B93E97D5D877B +:10FEA00087F415E0FF1CE6696B565C23611CFE4776 +:10FEB000EDBB383549434FBD40F753245CDF7C919F +:10FEC000CB399BC2F5E2528793F445CD2343A8CEAC +:10FED000A6A852291E59867627508EF625C9D2F13A +:10FEE000D32EE87F570B939A912759C7D578FE5C9C +:10FEF000636312E67F6AD2F87954B56B68D1EFE09C +:10FF0000DA79D65B6485F58D1B69A1755FB0CB1579 +:10FF100023332E7F6E5F3B92DBB99AD34E05FDCB28 +:10FF20001A9793ECC3FA8787ECB0D3BE3A488F3761 +:10FF30006CF2A6A1DCD48EE4FE675165A87624C9D4 +:10FF40007BA01CED5CE948EECFD4D8241FCAC5AB1A +:10FF5000AECDB5B84F2FE81DFC7E1353AB7DE92025 +:10FF60004F35FCDB4DF0D3D61286F68930C156D022 +:10FF70004B5B6ABAB2D06FDE526E0BAC802926B1F1 +:10FF8000401ECAF58D42A405ED8585E5E6E1F96DD3 +:10FF90005DAD3D80EBB8C1DE16C4FC33BBDB9A7AA5 +:10FFA000DEC13FC5F475F53938C2795DFEA0F32690 +:10FFB000575716AE6F930D96867216E07027CCD504 +:10FFC0004A79360E4F7070B873EAC92CC44327E0E3 +:10FFD0005C48C5FBBF96B07D1DF43783AC3E2884DA +:10FFE000B7230C2417F1FC6682A38BE88D37ECD97C +:10FFF000D8DE46FADB26F2BC180B583FEE36E49703 +:020000024000BC +:10000000335DBCBF09E66BA6F1585420F9CA4D3DDB +:100010007F756C7F33ED1DC5F41EF9429E47DF5698 +:100020002D6F6D0BA27D60135700097CAE61E7F068 +:10003000BC95A9F95E2BC4D19B34FA5ECAAFB2E974 +:100040000CF2D17F16923ED4F915F8F8251CAFC1F9 +:10005000E5A1F7A0E66BEF0F2F750C0DDE497C2FA5 +:100060003544711C961CC0B8E99E42CE9FF7AC1473 +:1000700025FC4E13F025F1E33D422013F34835C92A +:10008000BCEEF21E27C05FA30FEE5C63668AC14F11 +:100090001DF5803D8C727976AD9DE465D423437760 +:1000A000980DF9CD061B1F37719CFF9D5ABD09E5C0 +:1000B00067665217D10B5FE0C273EE07852EA21759 +:1000C000E251257A801C05892DBC482F7F02BDF5A1 +:1000D000FE160BEF3FC1718ADA71CC2BA1E793CEEC +:1000E0001B7784094FE2442BF0BCC7C4C737E5F245 +:1000F000F1B6D4A843919FB7DCE90AA0FFFAAAADF4 +:10010000E36AE2E7047AEBDF99395C11DA8DF28673 +:10011000C7C54ED2BFCA18EA643943766CD60F7889 +:100120003E3896AF8FF07312ED7B3489F6FB0226D2 +:10013000A3A1E9C26E2182F3E3B95BBC7D8F92DF9C +:10014000301FE417EB91D9AE447FA18BE65D0876B2 +:1001500078AB887635FEF9857BFA3E177915F3EB97 +:1001600025063F28E6FFD07AEE6ACCD981FCD88DEF +:10017000CE2ED5E92FD7BEE360D6EC9F9C8DEF172E +:100180006FBABB80DE234CB270BFFDAEB6213B9A86 +:10019000357F0BFD343DDFAAEBA7A2CA9AF7912F5A +:1001A0004E57D69C24BD8549BD2BA957D1FA61BEB7 +:1001B000F5EBCEBB2AB57394C57F04BF06FCCABD60 +:1001C000DAF97CDDE1C24CF46B160B5226FA2F1FD4 +:1001D0008FD4FD9AC171F7CF9B153AEF89D12FCA01 +:1001E000E9A7D1610ED281CE0D95554497464EEFC9 +:1001F00079B5DCBF636126DE3892D3D9F83D11A40E +:100200006BDCF745808E521F745C80740C703A4A28 +:10021000F174233F6E21F039CA05D235AE7D23C774 +:100220004F3DDA5783FCA6B66C37B3A2187E524A0C +:1002300064EF4ACCA31C86F81548FB3B6CA2B84B74 +:100240002E47FFE67045CD39A48B0BE34E78EE9C2C +:100250008935225F603E7F12FA594D4CC6F7BF8147 +:10026000FEE57D7D37A975AFB311F929AB32FEBD2F +:100270009AB7465A09DF746E837ED55ABB163F483B +:10028000F9384E7941AF5F45F51D0D5A7DC3825B4C +:10029000DC0AE91FFD7B0895DCEEF92A6D349E0E21 +:1002A000EBFB83F1691C57697CDEFCAA4A41CBA7B2 +:1002B000F1FCBE5EBFBAC91A71DEE545FF3C44756C +:1002C000753AFF6CB249FF89FEC2A6E52912D62114 +:1002D000EB7C74E8D020F28F1B347D505EC9CFE1F7 +:1002E000FECC24F28B819FA85D877BE3A90F4CE4B1 +:1002F000675CEA672E8EABE3C1B805F968EF073992 +:10030000F4BD0BF03755B4C73D2F3A357C71FBB1C6 +:10031000F7A521642FC0FF24BDDCF3BA87EA843E31 +:10032000B42A5B502ED5170B799CCB22CF3C85EBA2 +:100330007F2D3B80727A1EEB7EAC546FC2EB0CF6C5 +:1003400024911D5ADABD3DE92A803F11D86EF4D7B9 +:1003500074BCEDED8DBB224948A7F331F8EA9B0C44 +:10036000F4DF8B753E9837B545071BCFC57558AF81 +:10037000574118EDCFAB9A1F34CFC5E1B454654651 +:100380006506D699F17AA179C970DF7D25F8FB73EE +:1003900032EEB747605D786EABEBA5BD6B3269BFDF +:1003A000803FFA5E808E1F8847C88F3AFFA1690799 +:1003B000C623A3CC7F7A19EBA47AB2CD5417F6A149 +:1003C0007EEEFAAF5ECD3EF7F8111F400F09F1BD8A +:1003D000FC23FEFD9CBD4FF1EF13EEB5B41D7C1C5C +:1003E000FBCB8E00C6F77BB5789648D99FE240FAE2 +:1003F00049C4E3266DFF1BAD527EA93BB6EF856B6A +:10040000ECF41ECDC20FCE4EC7F79617367E3E8354 +:10041000AE09F542171AFF9C4FEF0D3F698FD505C6 +:1004200015F411EF383EB6E1FBD68E7DAC07ED2515 +:100430004BEFE9DF579CB0F0C3D690F96BEAB312EB +:10044000E7A7F8BA9CEC0E19C98509F549CC089BB9 +:100450002F851FEF95C7F8FB4FE0D94319E22D7E9A +:10046000BC73D6D038AC27EAF9B9407AEBBC355228 +:100470007A1FDCFFD732E5A9CA0C0DC9D0DEF80718 +:10048000178FF7813F31AE626DBC3EE19C559E8176 +:10049000FA20B5366A33BEC7FF5A25B70333ED3CA1 +:1004A000CE023D6F33EA35BDBDBCA6EF73B85735FC +:1004B000FDE3E9E276F4FBEC2766639EE3554D0F1E +:1004C000BE5629D138033FE0E712039785EC81201F +:1004D0009E33D4D3F9F7C065BCFEF79C55A13CC24E +:1004E00039C114DE8DFEEF3A5EAF34EBA702E9832B +:1004F0005776559B3DD03E679B10C0FADA4A2D9E39 +:100500009A0576CB9897C07D103ED05EC138951D78 +:10051000DE3DDD0057BE24D0F72DE659BA6C5B00F6 +:10052000CE55DC6133F845B3D629143F83DFB96873 +:1005300075764C8F2657446C587FA7E3678EAC5076 +:100540005DC39C4696CA8A63FB4CAC4B62C6FA21DB +:10055000E4D35DF17C8AF62DBECEE54B7B3CBFA893 +:100560005764CF75FBF57B4D0FEB763CD1AE1FAEDC +:10057000903FA8E474E4F6E74581D75526FA579AE8 +:100580001DD5EDF16CCD1E9F37737F60967D035DA9 +:100590003FAFF4D27C7358B756F7D263437B7239BE +:1005A0003EF85CE3832F12F860DEB2E8AA64C2BBB7 +:1005B000F233AA1B59C6A21E90C35996703DBDE7DF +:1005C00006F69EEA58C72AB49ECC7B9888E7FDB30E +:1005D000B026A2E4DBFB19897E45A21FA1AF57E735 +:1005E000ABC4B8BB725984FC89834DD22318A7A829 +:1005F00035E127BA51FF2DB730FC6EF0E6A41F3D60 +:100600008D7CB654B58B5867FA99734C7B2ADC17EE +:100610004C96B05001F1F06AC6F3E3EFEBF14F787E +:1006200038E26DC55AAE0F573473FA568EE2FA416E +:100630001AC5E5EBA6515C0E3B71DE42C60E34F9DD +:1006400069FE718E620BEAC15AB198BE7B3B01060E +:10065000EC0757B41DE88F9A5FB3F3BC13E82B3750 +:10066000E8E3EB3555316EC0E828E273BFC726F1E9 +:10067000EF5C408400EDE3F017E87FBD7B560BB6DE +:100680004F32B1702AAC7B813DBA0AEFFF2DFB9D42 +:100690001948FF7B5D132D48F743A252360AE36DDC +:1006A00047C0770F8D225B703FBF02FF6814FAB915 +:1006B0001679C428D273B9E2F9A44BF95BDF0FF8BD +:1006C000C7B4FEB1C86FE9B87EA9055FC133670939 +:1006D000F4FD9AC4F59BB5FDAD78DDCECFBF2C817E +:1006E0006D88E705664B98FBA7F1FBD1F195B8AF94 +:1006F000790EE5895413EDE3BBB88F3F5A95A7F106 +:10070000A0D3E4902CA88F601FDFC3FBB08FD0A8CC +:100710008CCBEF037E0EE0FB23168945B47CAB8ABD +:10072000F1A84DFB4EC79756651AE201DF07E6E7D1 +:10073000A0DA7BBF86EF52D3F7919292FD9887594A +:10074000CA5C01A49B4FFCD113C84F6FA81686F951 +:100750009C1FB89277E0FB259F39F32398B7BA58CE +:10076000A8D75128544771309DE7C50F9EF244A881 +:100770009E9F89812A78EEB3FE76AACB79A3BAEF41 +:10078000FCCB228DDFDED8A7D7C52AEB901E3539EA +:100790008304E3FB993F1CA5E5694CA1F5C5C2A5FF +:1007A000E3E8D7CD4DA0590CF516A3EEB085E95C72 +:1007B000D7123E81FE49CD85A2B87A8A1AEDBD488E +:1007C000DFE41929687F0EFE91957B619F6B35FEF2 +:1007D0001F65F62E417FFCFA8B66160515E5FFB8FE +:1007E0004BC43AE3EB45FE9E504D777D6E3E8CBB8D +:1007F000DF995982FCB2FF8C375780F13AB387D02A +:10080000B5771D8ECC99F89D64DFA1EF9C42BDF3B6 +:100810005715F08272606D13C8EF0174F61B45E442 +:10082000A13C119112D6C95AC46818FDB0C5C914AB +:10083000FFBCA9ED0FDF6D417CFF753AA7FB9B0262 +:1008400087D57AFE7D8140A783E003F325AA5F6503 +:100850007B40ED1BF878290B5B16E1B8E83F21DF00 +:10086000E6DA63DF9BA5B8483E85CF43B82E22FD6C +:100870003B35FFAF46F3FF584517AD7BC512FEDE93 +:1008800058A756DFED5B33CF8DE725FB99F822EEB5 +:10089000EF33CF4D2902FAA51AFD0E26D467EBFBE4 +:1008A00079B5469A67FC7E478786FF9F6BCFF973C1 +:1008B0005F34F3EF7643CC908DE349DAFD7DF4BDF0 +:1008C000237FEE3B32E2F7CDFCB91617CAB3EA94A8 +:1008D000B07E609CDBDB821FA3A8B148B56857B12E +:1008E0005FEA3546FE95DC98CFF48963DCA83F3A91 +:1008F000DD33899F85FDA5B946BF63FF65F8F7B075 +:10090000C6BFFBBF817F8F687AF460D64D294A1F2E +:10091000E3E8D74E0D1F407C1FCAE9A824BBC6BF21 +:10092000D2B6F015F0EF7E8D7FCF68EBFA66FE2D24 +:1009300026FEEDCCE6FCDB79A69EF8F6A067763CB9 +:10094000FF6601FF02DE0E781409F56367B65DDE0F +:10095000C19974DB2278FE80E061486F8803728D54 +:10096000F6F78073C874AC2BF7639D18B48F0D48ED +:100970002518B79B928A480EF6370F29403F3FA9AA +:100980008AAF37513EF471983B3EBFA4DF7F03F13D +:1009900065477908511DD71B5ABC1AE8F4E7A2BF76 +:1009A000C9DA36CBC8F7D769F2749DC37E86BE67B5 +:1009B0009C6E8F7D17B900E7BD3DA5AFF72ABF79C3 +:1009C0009E3A3E4F3BC857B9611EB1EF7912F35BB7 +:1009D000F75428295558A7610DBF8FDF53EA99E8CE +:1009E000203F3BAD8EBF07FCBEF67D4F3F93979FE8 +:1009F00042FC1DED47E7B3A6A4091AFE32BD88BF2D +:100A0000922A53DFDFF548C01BF047019E3B5D7E15 +:100A10003F15B998E7BC046F6ED84FF2FF1CBC4D70 +:100A20004A09BD3516F67B46E8F1E0CDB7C0801B1C +:100A3000EDD9E5FCA4B7D11E17F6E52F71BB06660C +:100A40007304AF87E2FED1B8EFD57F9A4E767DCEA4 +:100A50001D6F839F38EEFAFA2508FFE2171577B865 +:100A6000410F8D1B2B501DD78DAFFD2882EFA18E1E +:100A7000BBB57E4906B4DF736D7F251DFCD971B708 +:100A800009DA7BB47314948371770854D7754B14C7 +:100A9000FA17611E50B1621DDA2D162E8FEE84BF3B +:100AA0007B70739599E87A7315D783B75471BD47F6 +:100AB000A8417D3885D729831DB652DCC5142BF992 +:100AC00041A39909DFABBCC5A2E4B519F4EAF1EF83 +:100AD000D86FA7EF5E423FE379D9DD55827E8E4421 +:100AE0007E74221D1B35FED2EB70F0F99B8719DB5B +:100AF000F979CBDDDAFADC92F6F707605D9387F1DE +:100B0000AB31FE3D3EB5DA8A65853707413F4B483C +:100B10004F6561153CB73FFB0B0F7D98C222525DBC +:100B2000DAFBD68085EC9A97857F0EFE776D45A817 +:100B3000055328EFDF3FFB76F2DB929364F4231F2B +:100B4000D7D6B721E91ABA3F9599024857FC59A759 +:100B5000DB3DE0A323376C7E03C77BB3D0DEEB7FA6 +:100B60006695C7FCB5FDEF80C303281FCF3A2C3C28 +:100B7000BE08D72E46FFB6CE29629CF21DD64DED9B +:100B8000DFC3938D41787E13A0EB27D5DD745EA57E +:100B9000FB757FCCE3FE1CF877ADB8AF494C79AD5F +:100BA0009BF4659B05F1E06611BE7E5827DAD744B9 +:100BB000BB3FD6B14DE07121EBCACCBE548E69B9B2 +:100BC000FD63755AE027A8F7627FCD4F386D51B6A7 +:100BD000E2BC59AC83BE6B9C877DD2F13BF4FC3BFD +:100BE00006AC22E0E07C1E2F57BD7510F502E57DB6 +:100BF000C02F24BD7DB85ED0CEC398B9A55CC327F5 +:100C00003CE4BB78BFA53FEA6BD9C1103F1B927E85 +:100C100054BB18FA8F3FE0607658C7787798F6F99A +:100C20002BC114584EFB091F58921EC3E7A15E7BCF +:100C3000174F873AE8F77DEC2F59B87F02FE0ACEAE +:100C4000F39D976C34CF77590FD127C444C2FFDE90 +:100C50002A2FF15DFFD0C4EA0CC0DF00A9FEB56EFB +:100C600078EA5884A956B087C7B43CD0F50EF07B1B +:100C7000280FA6BD4FE4B5D277B20251712C7EE2A7 +:100C8000607C512ABDF7547228B01FE109410E174C +:100C900075F0EF397FB78AC3D7ECE9A1EF34876AE3 +:100CA000393CFCB5A809E11BFDDE128407B0D08DEC +:100CB000C390FF24338D0F74F7A05F728320EE463C +:100CC000BB76A281FBCB37140E22FFEC68531DE9E3 +:100CD000A5D4E993ABF1FD433681D7CB8C0CD53746 +:100CE000233CB24EC0BF38C22AD5EC6A8C3FA684E2 +:100CF0008AE9FB11BFAEEACFF59E526BBD05BFB3CB +:100D0000A4F03ACA4AF506EB4DC3882FEFD5E2A509 +:100D1000DFA09DD1F9F35ED73BA7B14EE26513E7A3 +:100D20000B7596AE4778DDCAD4C93CCF893F93FB9B +:100D3000537C447C791C8B18913F8EF1F7A44E9E16 +:100D400008D4225D5417D76BCC1168B9179E3FF6B3 +:100D50006801E3F150643A8E97857C8EF66BF26AF7 +:100D60002103AE0E8175601CC4DC097AFE9C2DC186 +:100D70000F559B51FE32C3C93C4FC00CEDB0FE4C29 +:100D800047B29A04F62253B1C5FDBD04CC6B18FBE3 +:100D9000411CF577DCBFC4CED179B3DF2B8888BF87 +:100DA00057A47A7A8F6C3C9EC514E37B670B099E2F +:100DB0001AE4EFD18CF757D7FC0EE0E4A3FC3D30EA +:100DC0006BCE1E33D2F1F0CD16C98EEBD1DE5B2691 +:100DD000D303787EB944F72BC35654E6BADFF5AA9D +:100DE000D0369DF076C24DF51922EB588EF9D167B9 +:100DF000C322F9432C5D5011BEFA951C9E47CBE2ED +:100E000074B9EABB5EA2C3F88645567CEF8A290214 +:100E10002BF4D2F73129FF3CDE3782FC7FDFE41F61 +:100E2000BD978CF1806A22BFC9A44C24B99B847AF7 +:100E300010AF75EF0838DECBCD2C82F5FC6F4D3E40 +:100E400042B00A342AC4F92D9153E847DCC4069213 +:100E50001F771CC6B419E209E650F6E327C40EFF5B +:100E6000BC3FC9DFF5F84D4CE4D330FFBE534DF71E +:100E7000A23CF4234F4E053F12F07AF28C409FF2D1 +:100E80003CFE600EC583C76FFFFD0A5CCFF1B23434 +:100E9000AA7FAAB998C4A294E7102C16831EABB1FE +:100EA00074ACF83EEEF38043C2BCEE25F1103898E6 +:100EB000AC5C3B3A215865D83E007FF5E2F76F33D2 +:100EC000657C7EDDA2E400E63D404229DF37702AE2 +:100ED000FFAEFD75A30BC84ED8F04B45E97875D031 +:100EE000F9DFE450FD7BE84F65A8262FC60DBD76DF +:100EF0004A506EC75A9889AFEF988175B8C79DCA96 +:100F0000ED280277BFFEC20CACDB3D9EADBC87F086 +:100F100083EBF6CEA803F8B3F77E7007EE734A832F +:100F200040F6A5BA6183A53FCC73AB9AC2900EB7C9 +:100F3000FA160D443A4F9204FAEEE62469BB15E323 +:100F40008DDAC6FA3CACF37970B444EB3BEE91F326 +:100F5000B08EE078B66C423D08F408E1F9F27FDB30 +:100F6000F8A9303EC0C7F360FCF47FC2F819DAFA82 +:100F7000BDFFA4F1ADDAFA87F68D9F493E181F98A0 +:100F8000A6DAB76825F2ED146DFC29D3F9F8758D52 +:100F9000303EDA99C67A92D3DA297CFC44BFA7772F +:100FA0003E279FCF17B2474DD7FC23F36CA0794E55 +:100FB00014B7DD8EE74BC727DAD1B7E91DD7376500 +:100FC0007597292EBFD2E6E1F1E9773D68AF4F84EE +:100FD00066122CEC1F9B678C4F8F5E263E7D7C3407 +:100FE000F7EB8EC6E2D30751EE6BA6417C6AC8A32D +:100FF0003C359AFB4F985F29F35EDE9FD7ED756F06 +:101000005C38488F4FD5DCC557109F1ED1E2D39F67 +:101010008FD6F32BC2F7BF3E3EF572BDE2D5F54A3F +:10102000732EE6130EDDB03A3E3E95787EE533AB87 +:101030006442FDFEEE7433E5E7DE9DBE82F4DC5FC4 +:10104000C15130E6CD2F1777F7AE5BF3C34731952B +:10105000DEDF12974A6954E7C03A9AB1FEE4A1C5AF +:1010600010C7C2784747F3B8F52D81BF3FA51633A7 +:1010700011EB2D32D3BB68DE34B0412BB20DEF85BE +:1010800069F5121E47B899BEBB21B112AC0F04EB33 +:1010900045CF3B1C3CEF9CA7BDE7E6D6DE23FBB566 +:1010A000C6871E16A6F5243530137FFFB64344BE0F +:1010B000C8B2748CC5F1F365C6E81CC2D2EDC7FB9B +:1010C000DF149F25EEBB53E89B8F668FE1F40A2463 +:1010D000B1EF23DFF5CAB1CF5BC0F97F3BF967B74A +:1010E000AAC34DC8FF7FD1F072AB9FCBC1B43A2EDB +:1010F000CFCDEF3DBD123F5177D82BD0B7856B25B3 +:101100002E779D85B3F350EF1E0379403FF398533C +:101110007E0FBFFFF1D02CBB8475B7B3C748FCFC72 +:10112000B901E404F3680D5C4E02FDD8ED21037FA4 +:1011300025AEB7979E1705B2371D2EF6537C2FE3C9 +:10114000ABD79D7764813EEFC8617F40FD3D7E4C0B +:10115000D61DA8CF3BFA33F263327E51FA04C67330 +:101160001DDAF9EA67EFCDB61AFF7E408E363EBE35 +:10117000F6CEE3BBD227F0FDA2185E74BDA0E34516 +:10118000D36F3A3EA670BD306DCA06AE171ABC7951 +:10119000DDDA15F9EB98D74E7F136FD6184EF7634B +:1011A00079EAA99420E90BC287AE2FBE3786D79D76 +:1011B000E1FA30AF5463E17904880BC97F4CA46332 +:1011C000E1182D8EB4A82B3334BDBB1CAED5D3EBA8 +:1011D000AD38EF34D0BB88FF698A97D63549AAE687 +:1011E000EB0B6DA0F5E9EB3991DDF61EF2E1F19B19 +:1011F000417F91FFC1E9F29955A67127E9E3D6F144 +:1012000071EB1AF8B875A189A4CF6F06BD4F7ADDCE +:10121000571F37EE716B2457D3EBCB171BF47AE2D1 +:10122000BE3EB3B6ADCC00F86675A0807145F564DE +:101230009807FDEB29A95EC4DB186D9F37346CA7B6 +:10124000F7BDC64F59C4F731BD99F8EDDDD408E9B3 +:10125000737DDE935F28A44F7D53F47DB4B5E03EEB +:10126000A6E23E70FC064EB7F10ADFC778DF22DA4D +:10127000C7AD4A338D5F2B6DA771E1FA38F9393765 +:10128000703E9EA68D7FE4EF725EC8603FBE894EC1 +:10129000D3C7707D7C8B254CF81CAFE3D3CFF139DD +:1012A000A58EAF63CAF4EDB4AF6975CD1C9F5235FE +:1012B000E723A9FA765C2FD207F10176B8C6682732 +:1012C000678D1139BEB57DEB749BA6EFB791E31323 +:1012D000ED303E3F09E906FD6E967AED582ECE734D +:1012E000B8B86D3AD9B1BB343ED0E553B3639D4D28 +:1012F00032FB2D9EED5744296E58E1E6E7A935B53E +:101300008116FCFE422555EEB03EE2DBF8B854CF24 +:10131000EB4C7684F72593DF272F7F1FF1007EB9F2 +:1013200016A798D6F48FC5A5AC76515C7CBDE1A616 +:10133000FF7497227FB8AD74AEB359683B40FEF896 +:1013400050BB84FEEDE69B5228EE398E71AE10B391 +:101350007326078F3B6B20BEC5FA71884B5B34FF49 +:1013600054FB8E41B805F9B416E359EDFCC718C714 +:10137000322D8EBD0EE2D8D62B8863378EE1E79BE7 +:1013800013206EC70FC81CBD69BD1BE38D83E6F833 +:10139000FA9043FFCFE359C98379FEC38CED46FC35 +:1013A0001EA9D3E2D9EF78294E4ACC8740FCF9DC5C +:1013B000988C585E847E504FF8AC14EF407CF6FC5D +:1013C00018CC2FB1501CDD2EC98324C603897CD3D1 +:1013D00022CA9437D0F22099C895665C7F54A07CCD +:1013E0004EC2B9C5E5F84C64EA3F9C9FB1E871096B +:1013F000FD08229E0BE66ACF0BCA6C8A87B68D6207 +:1014000022D6CFB255615ADF698BF2CE183AB7E4D3 +:10141000FE4316AE1358E227FD8BD798CD975F6F2A +:10142000FA48F918E2F73AB33B80F5A97F3E6A26FD +:101430003E9F206FA9453D7783EF1DCAA3D5F905CF +:10144000D6CFE0DF0D6987751AE2E6A11107B31860 +:10145000EA03AEDE25C6C1C33AB2E2FA0FDF23C506 +:10146000B51743D06D6C2F3D148883CBBA2AE2FAAE +:101470008F78578E834776D7C5F51FF541280E1E06 +:10148000CC22F4874046F74C897BEECF4CE9C47AF6 +:10149000A0AB46DA458C69992A1FC16F3E0DD3B0C7 +:1014A0007FED4525619C5326F42BB30698991DE2E8 +:1014B000C46A7677DC78EC25CB59A46718FE437AAA +:1014C0005EC50036D4DD8F97AC3198C68B6F5F7ADE +:1014D000CAF9C601C37CAE6B3DE94837A07910F369 +:1014E0001197D0090BA5D12FD8C5221101F7437D43 +:1014F000D9555BF8F78113F7F35993E38D0356CC75 +:101500004782A8A31CC13851E02B7B563C3D9D521D +:101510003C3D93FCF1F4F404E2E99952114FCF54AD +:10152000399E9EFDEAE2E999118AA767E694787AE6 +:10153000662BF1F41CD0184FCFBC703C1D072E8DCC +:10154000A793576D8C6B1FB4261C070F3E75C29472 +:101550000FFBFF65B69961BC5FD8B634EE799D8EFE +:101560002AFCD7171D273526D2711DFDDDA46FA2D9 +:10157000676D023D9979FAD79EEBE9F4023D37FE9B +:10158000DA0CCC932EB89DF4A5969FC11F639EFAEA +:10159000F8D4CD649FDE1CCAF3D463996C41B9DDE5 +:1015A0009F7D7B6D3F89F74FB0336487EA743BA41E +:1015B000E5A5B0EC06E5E5C64BF2D612BD7779138A +:1015C000EBC9B70CC2FA85E82AF4CFFF96CDF382B7 +:1015D000F7BA36E8751677E27A27B02E82C76B79AC +:1015E0006C370BD3FA8DFA11EBD2AE583F4E10A3E5 +:1015F000DF4A4F4B7931BD474A55E5F180984F7529 +:10160000064727DB494F1AEA12284E3E56AD78CAE4 +:10161000D02E4E3533E3FBDEFAB5F95AEEC71FDBA9 +:10162000C7E39ECBC5C7ADD75E597CFC8FD61F1CC8 +:10163000C3F818BF8779ED95C6C713F390FF8FDE07 +:10164000C0E3E3A367207E80FB476E1E42D7DE75B2 +:10165000D4F1F35BDF218F8A79AFBF36DAC90F6B24 +:101660007EEF07E487D6BC0D7E11D14D20BD53F32C +:1016700001FF9E23B334921DBC4EA3F37EED3C6F5D +:10168000ECD2B121AC03B8EED466B253A289D3B97F +:101690002E5D501C58173456CA4B437FC2CCC23BF8 +:1016A000C8EF515D582793C51CBB91DE9F69F59E1D +:1016B0003DA9BC1E6CEC7DD5345EEFF9C37C9E77F2 +:1016C000AC716FCFC33CE3D846BB804BAB714F7C52 +:1016D0000FCF9F91E151D79DDCCEC88F38B9488A92 +:1016E000F0F7337F45EBE9F93EA3EF539E2C662AD2 +:1016F000C695273D05D43E56FBFE44A7D04D7960E4 +:101700007524C4EB0CDB7F46DF693DF9A840AB3D97 +:101710000973A39F7D72C3107AAEB71E769DE7EB67 +:10172000DFCFDCE0E4F56D16A919F3F47B97895A55 +:101730003DACEA7B18DBA7BAE87C9759D4E0116C82 +:101740006FBC8AB79B9B8B76A7C7CE7F3FB44A8F6F +:101750002F413C4C1DACD71327D1DF7148F043F625 +:101760005A4415E5480D275F52076B3C1F4AAC836E +:10177000D5F9E29BEE9F8438C9F83D8D93775F4F92 +:10178000F9FDA35E0BFDDD98DAC976FA3E6AADB8C5 +:10179000C182E7D545950A93CBF07DD7ED8BD282F8 +:1017A000A47B884E5B7D42C4FE3575AEFFD3AFFF90 +:1017B00007B21EA9B9008000000000001F8B0800BE +:1017C00000000000000BE57D0978545596F07DF58A +:1017D0005E6DA9AAE425842C249097402060C00A5D +:1017E00084C866FBB212652B70035BB112028425BC +:1017F0000BD0DAB1C5A6424258040D121111B54002 +:1018000041ED7129EC88A8418B80488FCBC46EEDE7 +:10181000716B262C2ACA921215ED16DBFF9C73DF22 +:101820004BAA2A89D0D3FFFCFFCC3799691FF7BD9B +:10183000BB9E7BF673EE2DC6BC37B358C6F299C17A +:10184000B92E9BD1DFFA38C626E23FD218DB687B7F +:1018500076DB52787F63B2D9698657454977BDCE2A +:10186000A07CA0C4AC8802AF9F9003EFF11F50CEC4 +:10187000B3A8123360A15ABA1DEA15165BE575329A +:1018800063C5AC516203199BC4FCF49CC2DA2526E3 +:1018900032368D312396A733C588E56B59608004B5 +:1018A000E54AD1DFC052193B9FF8EE1101DE1F96C9 +:1018B000DD096A5FC66E8FD84EED57DA2A27B8ED7C +:1018C0008C1D91D444753463E34FABD26D305E9E72 +:1018D00022558B30DE7BD11E86F32C70085E0FCD37 +:1018E000D359EF87759E155835CE87D98DA7DB3331 +:1018F000F8FC7F8275B65ABF1B80FD155C67F688C1 +:1019000091F094374AEE4CF8867F57753D475DE17C +:101910001E8AF3D0CB57C778ADB21D7B498EFEEC43 +:1019200032864B60F89E3118BF2FC2EF919B711E1B +:10193000D7007CCD3DC0F70FE94F1CC4EF6F4CE9D9 +:101940000D9ECE82BE50AF80B968DD00D783BF82C6 +:101950007514235C9D178767476E7B0E3E175BDC13 +:101960008F46C3BE9CE9EF7E42E6F0CCC3755CCDEA +:10197000BC1287BBBBA53D95E0998FF0B433D72D42 +:10198000382F1D2FF22DDB04C6E7DF169F08FF5509 +:10199000D9A0D8389A22634A7778D2F4E17B3CD335 +:1019A000FEEA6515F7872D8D74E2BC13984F206011 +:1019B000B13601F12FF9574C59879D8D715A5CC38F +:1019C0007B87679168A77DFD5016BCE6547CAF4EBF +:1019D0004DCC41FCE27F1FAEF1480370DF1345E6BA +:1019E00071E2DC8CC7705E4EF83F9C571E7345F960 +:1019F000A1DD1427BCB768F385FFE57D3294D6FBE3 +:101A00008E60700A1310DED2B1CEF5A4623BBEFE2A +:101A10000491AF3F2FEC7B383C6A3EB1BE7E30A3D1 +:101A2000AB7F58BF07F74D5F7F3CF3D0FA93985FC9 +:101A3000A07D1DD346FDD76970B84D75C4E2FAA1EB +:101A4000AF213FC1F7D6157BD9F174288B374721D9 +:101A50009EE6C1883E7B77FCFC6E85E5F58346C635 +:101A6000D6A8D009ECE36C937A17EEF397029B8922 +:101A7000F565E69466381833D8262497DABBEA85EC +:101A8000F713BE9F80170D8817E1FB0263DDE2822A +:101A90007E5EEF7B63D94658DF9047878DC46FAF7A +:101AA000C7FDF257EF62F991C1234580C7BD380EDB +:101AB000CC6357BF05CF2F81728141988BED32B235 +:101AC0003FBC297504F463E5FD1425AE123C008784 +:101AD000BBDDCA4811E05A6062546FD2E515A34AD3 +:101AE00083E8F1516DDE9344568DEB4A9238FC0643 +:101AF00064C88207F6A73F639238129E095E498642 +:101B0000FE4D12932262E099D0689791BE2378BF70 +:101B10006F65FDFB48ECB7208D972F73DA8E0EC4EE +:101B2000F90802CDE7B20CC13F14CA0531FCFBE451 +:101B3000914FF543B815E4E9F5A77C81F50B0CCC82 +:101B40008DF3B8EA42079360DD33676E4C5C07EBB8 +:101B50007CD19D6B1C0AF0DEAB5A68BE37B804D549 +:101B60000BF5123CEDF57D109F66E666D7295DEB1F +:101B70007A5135129CAE1BC3EB5DE72A319605AD59 +:101B8000FB0635C018946F987954423CD8689B7D09 +:101B90000BD2CF7561FC653AFE03E8FDFDEB271221 +:101BA000BF7EF79650FEE2C27FA4127F39D817EAB3 +:101BB000CD604E23E72FF2EBB7417F3768FC6526F7 +:101BC0006BA4F737311F3D6F666DF4EC38DAC957F7 +:101BD0005262D342F8CADB8827D73117D5BB91B1FF +:101BE0007DC857EC80772E07F2113BF1D71EF0EB42 +:101BF0008F88A73FC347699D37E13A63BBF3D1376D +:101C0000E65E518FEBB8C9EEB78F82EFFFEA303A4C +:101C1000572A3DF1D34EF954BFB447F9D446FC706E +:101C20002A0B50D9C5645A870E9F9FE1A7A771DD83 +:101C300093918F129CBDB45E58D7195C17ACFFA26C +:101C4000FC54CAF9197E3A59F6FF1CFFE80F7C14C0 +:101C5000F19129FDBBE097D4053FF83B980AE34991 +:101C60000AF3129F65AAA70DCA260004F6F777A308 +:101C70005BCA85F94BB28BB9499EA90CE7DFD59EAB +:101C80003FCB80F1043F9FC8516716423B5B365300 +:101C9000BD99F80C346CC8462134C220C07C1FB6F4 +:101CA000B23556A0C31539B9354550AF4A02BE0505 +:101CB000F5CA8A146A6F6B63EA7618CF28794A10DE +:101CC0001E468B1C5D1BCD584E5E9BDF00ED037DD9 +:101CD00099BC03AA3ADA78FF0F3B9807FB2B2BE25B +:101CE000FCA4AC48A627B4AF45FC306640FB2CD81A +:101CF000E75F7239717EADD96BC6F54AEE9468F82C +:101D00001EF7B199E1FA8FAF3397237D959A38DDAD +:101D1000C66A7C84B106EA6F486E2AD1AB87E52596 +:101D200082B0828D5997404FB692DE9746B35B5D85 +:101D3000309FF3D1CA6C1CF7FCDA7801F58C52A302 +:101D40005A3416C63DBE315AE0F8C7EBA7E42ABCA8 +:101D50005DAAFA550D7C0F4CB73B77D0B6B8B3A649 +:101D600083BC338B83A65A44946FCB7D7BE17B4548 +:101D70007FBB6C463E99F2C9E63150FEA2D9C850ED +:101D8000FF5AB0F3DA283F3693D4049493E17C7B76 +:101D9000813754AE2D7A32B45CE10B2D5785C9B131 +:101DA00070B955940B72C84638E944397402E5108D +:101DB000B0285D0E9531BE9F80EFA6E98EEE726869 +:101DC000B6296F4A2EC073A1B6EF6673F5C9ED0050 +:101DD0002FF3DD4347D6127C02FB919EE336A58E9E +:101DE000447E5996C7F97A52AEEB7AC44773CA84D7 +:101DF0001124EF5226137E9C7FD0AAA0DC3F6F15E2 +:101E0000F8FEEE03FD0ECA4D032E343C08FD348D62 +:101E100033CB8293F077EA68E00FE51A3DC59AD498 +:101E20000558FFB3E911F24ACE072D06DA4F60CC10 +:101E3000F02C6BAC6DB803BEA7808047FD71316B91 +:101E40008B4422DA96CBF194899387D642FF55D7FB +:101E500046106D2DAAF79A108CD28F920BF1723525 +:101E600076351658AE459573A15EC5DEE82CACB745 +:101E700024D740EDD74C58E9C2867F37723C3035C5 +:101E80004FF720795EF56301433D737ECDF84D2712 +:101E900046E13C037D72113FD68A84F7F3EF184B7D +:101EA000EF8519C56D57E1FCD7DA14C4E7030F9A23 +:101EB00069FD9FC1FAB1FCD9C31C1EF393ED5E8B83 +:101EC000D07DFDF582DFC4F97B5B24E2CDE70FFF17 +:101ED0003A12E1FA39B03EDA3FB93A92E85DA98E9A +:101EE0009C118457C7B689C548279F6F1B78CF18A8 +:101EF00084EF8C6B46A33CBF2A7A50A462EFFACEE3 +:101F00002446E34B316376217D5DF5A348F42181BE +:101F10005CDC0DDF0FAE9BB400E9E4982B221AE7DE +:101F2000ABAC79AC089822AE8BF6F5D85A2BAD2B1A +:101F300095F91A646857BEE6AF0D3550FFD018B357 +:101F4000CCC620FC3347EC847A55778B04FF637250 +:101F50004624B63FC6A4E29EF4A0AC5C91E09E9BF2 +:101F60006277FAB1FFF74427D253919839D582F4BA +:101F7000B5566438DEC1191F6DC675E9F425CCA8C5 +:101F800009ECC7FA1BE03BD43FEE7146A27E7F7896 +:101F9000FDD70D48B7C7613E3023B6E071F1A8798F +:101FA000C43F4F6FF8E707BE5FAAED5338FD95AE0B +:101FB0001F684279CFD6707DF0C55C81FD64F84F13 +:101FC000D1E1ABC174C8926710BEEAF574BAEBD424 +:101FD000FF347E6FCF30901E62713275273CE3CDA7 +:101FE0004C1580FF1ECF95A8FEF15C13D593FEBA69 +:101FF000F4C9B761FEE5B9EEB7916E53989A85F8CA +:1020000096FA0D334431947F205050DE0D327977AB +:10201000C2BA371B5D06C247C9FDFBB791EFAF5986 +:10202000300AE9BF5DEB2F29D7FD679C6FD972F7A6 +:1020300057FB19E2DD38E20365DF5F675060FEF6AB +:102040002646F34A6FF23311F97EAC4A78A9F3F1D0 +:102050007498EFF61EEC37431ED7AFD2635DD4CF32 +:10206000AA7C2E3F9A90C6A19FAD35115ED48BAE4F +:10207000BA906230C0BCEE015244FDC03266864167 +:10208000E47A47201DCAA9177EEA530370B08F3146 +:102090006872CFD5FA13D4B77BA2BE11A0AFA50941 +:1020A000A272A20F7E8FE1ED540BB54BCF8869FD74 +:1020B00009CA726BD437515706CD8B59143BE0C90E +:1020C0007AF817E2456A132FEB7870AE51203A5D2B +:1020D0000A4D715C8BB6DF2877517E2E4D30D1785A +:1020E0007A7F47C6E55EC07D60AA3A283687E04F12 +:1020F0007FFF9ACFF90FD8234CC4FD3030DF56E074 +:1021000097B6CC7623F2217DDEE39AD406C4C7705D +:10211000F89569F3DC80F3049419E7847246EFF3D1 +:10212000FC8F5C2504AFF479DAB2DDED8748FF89D6 +:1021300062081790835EE4AF0F4B0EB68EF877DB24 +:102140005A2C2765880CE12F5A363D847CF061E6D5 +:1021500056709FECB15CCFFFCE3A757B3BF4A3D4B5 +:10216000023E0E80FAE29227DAB15D5DBC5C87F632 +:1021700094B1FA51FCEE01C56227F4E3C953B7E309 +:10218000778FC922D7C1380FD822896FD57CE2203A +:102190003EFA9DC145CA53765E1AE14522AB26FD43 +:1021A000AAEFA2438200AF9C03B9DC0F87CB65790D +:1021B0005C1F790274177C3AF379BDD58293E60BE4 +:1021C0003334D48EC5F9CDA0F19244E5DCA6681C69 +:1021D00087D31D1242275F80F11F36829E138374BE +:1021E000DEF8D00963F7F1F4E75C6D9C8C26C19BA7 +:1021F0001ED9F57E82361F4B8C7A651E3C6B24D52A +:102200007014E1FD9691E86F59BA7326F2C565C264 +:1022100000A787E0C4F9B767A3957F179CF1D18029 +:1022200034750E6E372EB342B98775EBCFD2352297 +:102230007307E1DFF8BBCDD54817C7D69A89EEC73B +:102240006F1ABA03ED8F4E3CD2F4AEF07EFE169DAF +:102250007B6D1EC02341DB6F80E407CF42FBAD9E48 +:102260002805F5E62DFA3C17447877427FCE560BC9 +:10227000D16D5D7A8C17ED45B617D61CD7C54FE3E7 +:10228000EA94436E94A7B916E70EC4AB35856A2766 +:102290003F46BDDAD2CE24F8BE791C93D7417143B4 +:1022A0005E34ED47DD580FB7CB35FAA9D2E8476861 +:1022B00011FC8E116847F0F9591BE7B7E3FC6CB5C8 +:1022C0007C7EADFAFC6EB368F33BFC20CECF1421CC +:1022D000CB623475A15A82F83DAB571A10CFD1109A +:1022E00043BC2FCD2CA3FE18AC376A420FF365A177 +:1022F000EBD3E7617B10F04CC4F17D8DBB10BF8741 +:102300004BF24E85C32701C7AF4CE6F0616DA9289B +:10231000E74B132C478548EAE4501EDA0106E073C8 +:102320003DC0E7B1427515E2CF64A6248BE88798DB +:10233000352C19E5FE64CB1B1F0823F0C97C64CF44 +:1023400039C3FD3FA1765C654DBE8BEB37CC634155 +:10235000BD7EBAC9BB03E65379472EBD7F45A8FEB3 +:102360008FBB106E6F1B9D3B91DF4F57132350DFC8 +:10237000981E6740BD7ACFDF071A709F026F8BD41B +:102380000EF48644E45F552E9381FC40DA3EE970FA +:10239000C96F89F62464D3BEF9E281EEABF672FD13 +:1023A000A8728DD16B49C5F5FF694B198C1B53EC95 +:1023B0003A82F89F82A2149E4D6B450BD66B9A15FC +:1023C0004972E0ACD0FEC89D846F7627C2B329D590 +:1023D000E747B9D074B5E20409C96A18971BCCCE97 +:1023E000F7FB0BCB812DC8DF1658DFDC82EB1A2FF1 +:1023F0001A6E25BB4C52E250CF1F9FC23ACBA86742 +:102400008D17052A7F6164339F27260DF582E477B7 +:10241000A991B9904E4AB71B3CE99707BD17E07DDB +:1024200066573F97FADEDA383111EDB252801BEA77 +:1024300069359A3EF0B5E48CFA39FA2EFB5E646A8F +:10244000107D9749DCFF746FA433677A50BBF47C2E +:10245000AEEFCED1E4B0B5F1898F9F85F1F26A532A +:1024600052D7C576E1FF318D9E3ECFE3F5E3108F65 +:1024700083FADF6CE47CC7D9FA64524950FFA52780 +:102480004D4711EF5E3E33ACC105FBD02EB28061EB +:10249000DCC5E944EF9F6D516251FFBD58FFA516A1 +:1024A000A3DF1CD9BDDF34E0E1C81F5E31F17DB48C +:1024B000360E3981F4DADBFA12101EA3BBE8541F82 +:1024C000A715C7CFC4F133069504F1C1528B95E827 +:1024D00032EF2CAC2FF6D2D7A7F7AFAFEF62FDF7F4 +:1024E000B6BEA70B5531BF2FD94BDB11AF5BAD5635 +:1024F0006525D0C17EEB44ADEC20FB4B88B0123D8E +:10250000E545D8C80F2BD8866F6BC47DB659498F67 +:102510008E8D5192113EADD6A18350F92888B8BA5C +:1025200004DBE7459849CFDF6F1D7202DB43FF0CE8 +:10253000DBB75A876763BDAE76BCBC64AC42F8516A +:102540006073109DE5D9B83D9F97A464A39D30C7E3 +:10255000EC3C82F8C5EAA2949DF03C1ECDD7ADAF0D +:10256000778006FF81F95C1ECEB1015E6676AFA76B +:10257000E36DBA56EFB9B1EA7C9443F3353F872354 +:10258000D3956A07FE68DDBFB63D02F15584FAE3D4 +:10259000086C1EB44F6CC8B3C769FB0FFFB9DF00EE +:1025A0009CAF1F16B7EC2898105CE6F53BDB7B3E32 +:1025B0002D2D4826FDBAF33B9A6FA077EB65D50A1F +:1025C0002058EDE8FA2E81BD6A592368E33D575A39 +:1025D0003888B14F056D7CCFCEED2AACEB5E2B0B6E +:1025E000192F787E5258FF6892DA15BD7EBDBB1058 +:1025F0002ADC3F522F1FF3AA30BF7B8DA1FD11CAE9 +:1026000068EDB1A08FF74261DD8EF5C95DFA3FD864 +:1026100003D3109F94809C8776806E27D8E46B4903 +:1026200029357E7F1D433DDC18CBFD9D46D8C34137 +:1026300068672B693B485E498A07F1C492A8907F7E +:1026400060563ED797FE6E94E929B54C5751AC1AA7 +:1026500099B2EBED54B21B6EC987F77129930F2124 +:102660001E76D90D928AF8930EF68700F52C4D8DC3 +:102670000CED7D966CF0A60B7C59E86F5A7BBF6B16 +:1026800034EA012FE4BBE7E507C579D29B5413EA8E +:10269000C7C735BA6A5A90661082F0E74E0DCFD29E +:1026A00033B83D90DEE45D9306FD49D1D765A35D67 +:1026B000A2D74B93071970DD69C99ADD007608FA35 +:1026C0000BD29ADC71388B34C93D0BD79B36739E85 +:1026D00009FD1A77E6733B367B8DD78A7E01566EED +:1026E00060E9D0DF1C4D8F37CA65DC6F36D3624797 +:1026F00079B5D5B5CB8AFDA767ECA0F1992C39B196 +:102700003E935C7956A8F7488C347A5DD07CD6C964 +:102710005231CE2347742F2139D6679C8AFA5F92B3 +:10272000F86EEA76D453FB8C14EB00D49B85507A78 +:10273000D19F31857C3FEA0597671ACAC92CC650DC +:102740007EEBDF539CDC4EBB2FDF44F5148F9C8760 +:10275000F27FC2372EB2D7EECB97687DAF4AED3607 +:10276000B4B3D399BAA414D7E9B22B286F417C93A0 +:102770001F307685E2C4795B62DBEFBE1CBF3B0D88 +:102780004E0C87E87E87B32FC5EF407936A8C0FD91 +:1027900028EE5B8ED8BE691AAEE76E89E4F6D9974B +:1027A000B81E1A7B67A617F550636C1BC1796D02C2 +:1027B00023BDEC176B4FD850DDB3C4BA18EA3736D7 +:1027C000D826D49BEC76C18B4ED96CA7B380ECD7BE +:1027D0006AE604DB92D99D3253E1FB359677B95E08 +:1027E000156667A5033E7D6621177CFD4F28779C03 +:1027F000DCDE2A62DCDE3A7CE13AF2431B2C6EF22C +:102800008B14CC8C6038AF4EFBACA1FD75038EDB16 +:10281000E6951603DC1D4E9F8A727B2ED23D54290D +:10282000CD2835E160F39A04C2A3320DEF98E41C81 +:1028300080FADDBE7C9B6657D4D3B38C7138B1F57A +:1028400066D2EF4B1B73C9AFA0EF1363B5BC5E1329 +:10285000A743D34A2EDF4A35BF2E0092BE1FD6F8BB +:10286000A3EED764AC913FB571233AF5F6503D77AE +:102870009D11E80DF5D27D22E9491DE5E72291EE93 +:1028800023CE4618842892C34A889CCAE0FA696914 +:102890008BD8A39C625BBCA42777A05D101B326E13 +:1028A000885C5C670CDCB32B9BC695112FF571B669 +:1028B0006A7EAF8B8DF3B9C66F5A679D8F6C87FAAE +:1028C0005B5B1EB322DC364F074D9AF43827F9A123 +:1028D000AEB7BA4E23DF390EF489703E5ECEFD08E6 +:1028E0009B853655E474417AEDEC413396BC0EF38A +:1028F0008DC91E3612E79720318B0876DE4FDA3805 +:1029000051ADDC9E7B50D89888FD3C98A80875682E +:102910002716733A8A2956C50AD4BBA2DB0BD350BB +:102920001FBE9A31F423C7DBAAB7239DC4DF9A31B7 +:10293000B20EC6950A381E458C6ADC8FFD049628B7 +:10294000F20EA0CD84959ED4A599384E35F9CB03CF +:10295000D319BDEF7BE3F25AAC77773F1623623D84 +:10296000562B60BD86BE02D17D4309E8A7E8CF6340 +:1029700032D151F24C59407B361ED82AF66361F2AF +:102980006E983192637D14C88EFB23F93AFA1AC40B +:102990005B513F047942E518E0073B60FE7D0BA2E6 +:1029A000098FE2CDAC5888E1EF11CFD0AF81FEC2E4 +:1029B000F8FCEA2C1C3F7E207FAECBE271EEADCC62 +:1029C000BB05FD809E0C13EDE72B670ED523BFE8FA +:1029D000C8323945A0ABB89B0ED7E37CCE0A3C0F7A +:1029E00020DC2E1975457E4A018C7B7FEDF45973EE +:1029F000B19FE15CAF679EDDCE6B29DE116AB748FF +:102A00009ADE78EE34C7D37A4D6F3C7C786054BB45 +:102A10009DC39EC1BA8717C410BCCF31250AF59259 +:102A2000C3FB07D377BD5CC3C0BE417EF496487834 +:102A3000D0839D40700C6449DE1D42175FB347C7C9 +:102A400079D7A592DDE0A178C86E2B7D3FBBA26D42 +:102A50004B413AD5F353BD1786F07AE274E2138105 +:102A6000DD4627FA8FC1AE20B9E7D9379CE80EC002 +:102A70004B7A987D5FBC82F5CF0E0B0CC6C5DA8D04 +:102A8000DC3EB0A39D11D545877681DB1F4CF2CB90 +:102A900018373EABFB8B2535E1DA20FBA25E930FA6 +:102AA0008B4DFEC131995DEDF4723F33B707B08CA9 +:102AB00076C62B1A1C1747F0724CB4FB3ADC973DD4 +:102AC00026564EFD44C27B7B907DE5947AB1AF469D +:102AD000DE83722E20B0B61D32C1C343EBDBD09F24 +:102AE000E25CE35378FBC05A81E026CCB0103C3E58 +:102AF000CB9276A01E395ECCDA837C299028CAD886 +:102B0000BECB0EF3CBD383D667373A4D73711EB964 +:102B100096EA9DCE8BC3497F3F6764D964067C6586 +:102B2000CEC2E553596477F9D9596F8D5953AAB874 +:102B30001F4D7F2F85D9453AFE01DF0DF1F37A0A4B +:102B4000B8FEE10DF3172DF0B0FD64E73F0EFD0771 +:102B5000D1417D01D3F9B709ED85059F58C9EE092B +:102B6000AF77DE0A7202F0E3F6FBA653FC601EAB01 +:102B7000A66739B4E3F1041E4751D6480467E54916 +:102B8000C1ABF0BC0C8B01FDF64C36E0FB4520865A +:102B9000B6A2E8F200D7BB025E0B20DDE0BB520F0D +:102BA000E57858E75AC983F276FB0736AF00F55649 +:102BB000C72A26948FABEB393FF5AC17BCE9BCDFD5 +:102BC0000494339E7A838AFD3C5EC0F5A39602EEA0 +:102BD000370694F7D27CB427C08BDBDBDA78B5CC30 +:102BE000E0C7A741E0CFD5A8FFF4E087D2FBAB3721 +:102BF000565B503F0BF437503CE6BC499D49F1BE53 +:102C000098C10CF5B37A47F59A62FE9D78C179AB0D +:102C1000BF98BE6719B8228FEC01F5B90FADDB1173 +:102C20001FB71668F671D87ECF6D0C2DCFDF125A04 +:102C30005EE00D2DCF61EEE712448C3784BEDF5A83 +:102C4000C0FDD9739842FB536F54FE8871DFC05AA0 +:102C500089E1FC6B9339DC0CFDF9332DBA6026E970 +:102C600005D126867AF07A89D3CBFA35B1DB71FEAD +:102C7000F5D11CDFFED9F986CFF360C160AE3746CF +:102C8000F3F1EAD7EA795A3C4E30E769F363C89F1B +:102C9000140DFF4F099C1F7AD68AA4BF6C2D87FDA7 +:102CA0008376C7D6A793FEE5350632D0CFEED9E0BE +:102CB00050904F1C179CBB30CF47604A1CE2CB3171 +:102CC0008D3F1BEEBD3207F9F25B617452EA14DEF0 +:102CD0001501FFF3AF5D9F83FD8EEBC39C6698DB10 +:102CE000CB26AF0D4573F8FAE14F9174FD06B6346B +:102CF00065B95224C0FC2AE07D1FE443C1F5C95EDA +:102D00003775D115ECDB4BA35DE70A603EE3F2F9C2 +:102D1000BAC63D64F6D60968271EDFFD4636F1794E +:102D2000E2DF95CB03BB30BFE19ED1EEBF62FDD3A6 +:102D3000777C542428AC533E74ECE37A6F767D1094 +:102D4000DDE27FD687D2315B1343F11ED614FABE83 +:102D50007C5B583BF67773F03C75FD6EB3C93D1450 +:102D6000F5F3ADAE9C1C9CCF66636331F285CC71EC +:102D70006E5B21E0DB8942D72103A7CFC1C84F5E3C +:102D8000BD5047FA842783C93B299EDF3E09CB39D2 +:102D90007F3308B8CEC7343D5787BFAEFFEB7A67A5 +:102DA000383DC66B76467AA1BA16F5FBAB2EBCA6AB +:102DB000E27ED7B50832D905F6567F12F26728A30E +:102DC00058AC54DA0F613C466EADFA3AAA3FB4B340 +:102DD000A7915C00C586ECA1CA26FE9D79E0FB9513 +:102DE0005D7159A9A5B6380DD667DC5BEBC275C21B +:102DF00078AB703CB4D390FF1BCB297904E35784A4 +:102E0000A79BE11BF281EC58AE9F0126523F712631 +:102E10006E6FC5C5F99D1EDC2FE632F07C8A649981 +:102E2000E2E91A7CB30AD51908BF4FF105E8117F12 +:102E300018A38EC2B25BD367BF45BDE372C6DA3555 +:102E4000BBF3F07BD7925EF12D73915E31BE90F3B0 +:102E500093C3FB6F8842FD547FFF99E8BE5D06FA7D +:102E60009FCF3CC4BF17302F3D59531F8E07CC5DF9 +:102E700084F35F3C1974AB685E3622FEBA4CE4877B +:102E8000467AF687D1737099013DFB83F068B1D41F +:102E9000D6407A2158487DC660DC33B47E250B10BD +:102EA0003FAADAFB9339A41F0DBFE2C5A559D50887 +:102EB000BF7F305EF58FD6FF42698C43570CE80127 +:102EC000443FAD5AFCBC48B4AB5A5C98E78B74CB1A +:102ED0001F083454A3FF699C595EC9E35314373E5D +:102EE000D36C64887F4C5CDF80FEAFAA2491A11E66 +:102EF0001A1E175EC87663A60A5BACE51FFEB3799F +:102F000019771476E607A6FE27F3323C8541F1E0F7 +:102F10006EFE5E2D2E75C0FE759FE03CD8BC4C0F3A +:102F2000F96B72F27AA6D37B343AB569F93A16C9CD +:102F3000C382FDCABDB5DB5CC8F59703A6C007BE5A +:102F40006CD2E718C66B120C3C2FC86091636A13F1 +:102F5000D12FE3DA82F9461645F7C7801D8F7C3FF3 +:102F600011F84C16BEF76529E80F596C77A25CB0D2 +:102F700065822202DF67B30CF2274DD2ECAC4E3CE7 +:102F800009C31FC1C928BE83FE0FEC37096815EDC0 +:102F90002F93C1B71BCB82CC640FD04F470E6FBFAE +:102FA000CDDA964AF383CDE5F13DB78265F43D79FC +:102FB000C6F27E502E24FDDAE244BBCC14E15B82E3 +:102FC000DF4D314CC67EA52B14A2DF6D465F16F691 +:102FD0006F48E6FD984C6DA9984768BA1DDAC19410 +:102FE000F715BA5E2C247D4D1D417C449B77A58648 +:102FF0009F4178EF213E1886F7E8FFC3F8096B344C +:10300000931E45A846E544D2AB8F6019C6B58C73B4 +:10301000BDCEC7D1E4F0BDC3496F61357D883FADFA +:1030200076703B6E9BE07F30785FBAFC081E5A4F8B +:103030004E5E1BE9D981BB601F83E27E291A5EFCCC +:1030400051C313FDBD532BC714A97FC2F1B3B3FD08 +:103050008F601E592528CD08BF4ADFAF9F7C3B9665 +:10306000D65B4DE50C6E2F31979DFC77E5B9EEBF31 +:10307000F079B737E0FA5362590EFAF1D665CC60B1 +:1030800073ECE4173C8AF80E727A17F603F4518D4C +:10309000F2E3F88C85945F90F3537E43319FAF8CBD +:1030A0007A5CAC99FB893BD755C4F1537FFE58C875 +:1030B000FD20A781CB61AA584AAC3A4B08F2CFD980 +:1030C000943695E6D9CC959A1CE4BD38DF3B93093C +:1030D000DE95CDB959E807603E6B16D6CFF9D84ECC +:1030E000F03E7D473FF24F0D2A709FC7F93AB20379 +:1030F00002EEDFE9DD5767F5C4EFE2C518CA7F8845 +:1031000017996F93DC85077126F72CE4B7B3334129 +:1031100094C0944F16F2F7299A9C4A59EE6273EDC7 +:103120005D657B2CDF17786FC071D20B0B4F223C93 +:103130004F16F23C0F3D2F4061F24AF46B84D36F7F +:103140002AE37900776B7901CC1394BF90D63D2F99 +:10315000409F8FDEBE332FE07B89F0324DE67E5AF2 +:10316000C71A0D4F9733C2DB0981B6FC2858EFA070 +:1031700026FF04F41F621A18E225ECFBDD97A39FDB +:10318000B08F3401F9F12335235B91EEA5B56D576E +:1031900022E8539B98015DD47ABE16FDC5A2FF2C90 +:1031A0009AE3B7549D8176DB955A5E6179AE3AA871 +:1031B000089E79EF1B799ED9061EE7381F9DFBC537 +:1031C0007ED4EF373810D37BB5E73CAC95F205D30E +:1031D000307FC78EEBE07E3A36081002FD241B3E9E +:1031E000F6A0BC91D6BED71FA77243919DC6C576E7 +:1031F000683739D68B060BF7F73991BE91C309634F +:10320000B01C9B87EDE6360A4E9CF6DC2DB9066BAA +:103210002C911DF943D39B64833B88BF4E29E274F4 +:10322000F5DA0591F2A40C16EE5FAF5062B68BDCB6 +:10323000CF40745A3130763BEADB1335FC969AA6C0 +:103240007B12952EBD48EFAFA2B984E787F6C27F07 +:103250005E9338FF790D30BBD1D9857FF5460E6F6F +:10326000CF8F06C2FF144D3E1DBFE78744C2EB4E11 +:103270007FA2978F6F541A307E2BD5B6FF02E15C88 +:10328000D6186DA8CCC47E9C95A4576EB031B403FB +:1032900052D60F6CC5FCC89435321314ECAF22051E +:1032A000FD1F9E8FCC0CF145DA6023384A1B55C4B4 +:1032B000222645C711FCA4FBA10CF5338A783ED029 +:1032C000802245F36307B473096A16EAB13145EE0B +:1032D0000598B74AF11384734D048F17486D44AFB6 +:1032E0008FE4B4F547FC7944F35BB4DE73D90C9EEC +:1032F0000F2A09882F0ECC3B857A8E0FE2494FBCEE +:10330000AD88EB6B3DE04B12E1CB3ED185F42869F3 +:103310007904D25AB0C352317FD64DF9B3133C6D04 +:10332000F94856E8AFCE55FE7139D01927543D21E2 +:10333000790DAD4699F467B0C17C2F38BBCF6F7E55 +:103340001EC70BA796E70EFB64457AD1E3630FA077 +:103350003D958EF9355ABECD4A8961FECD03B6DF63 +:10336000523E4E8DC72C639EE777D6015EF48324D0 +:1033700068764FE02F0E8AE7430B8309BF1B2CCFE3 +:10338000AF0B1AFF7E0D7F6B24C580F290BDC5ED9B +:10339000BFAF25A516E5D9D7CB65D2AF6323DEF93C +:1033A00004FDC14A6D94827940AC5EA5BC2066B232 +:1033B000507EB7DE5F0CC6B183E2B0319AFEF34AAD +:1033C0000C2B904776BDDFA9D1C1618D1F609C9CFD +:1033D000F8BB16E7C7BC9477A02CAE1C41FEE733C0 +:1033E0002B9EDC86F6A418098A01C0A742E6F1F1FB +:1033F0001A7B8E82E7052C316E5F51D0BEBF1299C9 +:103400009087FE96FF4179398770FE6F69FE80B71D +:10341000CE441852C12E89C1BC8E3EDDF33A6230D3 +:10342000AFA30FE675781F9C87F3BF5ECB9FE8962E +:10343000D7B18CFCA281B78D940FADE775F4C3BCF6 +:103440000EF89E5FCEE9AE5F0BD7CBFB15FB4F604E +:10345000BC37C613A5201D8B98C7D1A70BAF9B1CEB +:103460006984274D6F8BE47FBF4F501E2C8B0DCE90 +:10347000DFE0F06C2A51286FB8D3BF58C67ACBDF93 +:10348000E0FEC30AC6F114C413F2978E6A59F7CB53 +:10349000F2EFB7E8DF793E51C71885ECD2F1085C4E +:1034A000FC3ECB44FEC72FF4FD9C95A1E111A3F88F +:1034B00066C7CC7ED4DF5AD666A5735B9A1FC65307 +:1034C0001E41FB0E3D440E8BA5B8C5F398671493BF +:1034D000E95C8353EB407F2CF91D0391C17EC78BC0 +:1034E000BD6F8A5613D12FDB9527707810E641E81F +:1034F000F9207A1E559EC61F80DEA44D486F6A8251 +:1035000093CE55590AD560BF7A38BE4C09A3B3296A +:103510005ABFE1F922B32686E68BE87915FAF7CC93 +:10352000899CFEF5E71C4D2FD3F150AF97A4F5D33E +:1035300059CFD6733D65A241EBCFA0F5C7F149CF76 +:103540001F981C138AFF83B57A63270A21F903E1C8 +:10355000F5F4758CD59EB3F0600AB4DB90DA46F9C9 +:103560007F1B046E476C10DAC83E403C42FB608310 +:10357000D0384BB31F645EE6DF250BD934ECC1BCF9 +:10358000B6048A03C5E9ED81458FA4A71FE3261B76 +:10359000AC6D09683777E5A35D417C30BF331FCD43 +:1035A00049EBF3D4F2F5395BF75EB60C9E0756C9CA +:1035B0000AC547B4389DBECF194C39580DED26AB1E +:1035C0003C1F8D6D510E629ECD0141CB0F0BDB7701 +:1035D0005D8E84E7A1086BF6D3794BF8AB9E342659 +:1035E00018CFC6109EE15F307EE5D9B5BC17BBD9B8 +:1035F0008F79D5DDC6B9487E595C5DCF76E56F35EC +:103600003EFE5E8E3A7BE2E8AEF986CBCB5746C6ED +:1036100093BC0452F3C58CE9D25BFE84F5601F9E17 +:103620009FE89A3F11F5C11BC7A2C79AB51A40DEA1 +:10363000237D4DE6FE149389DB4BA61B9276D4F5D1 +:10364000A01FEBFACD2B5A9C8425F89E473E322CC6 +:10365000461989FE174C4D45F9F2BBE67EA48FDE74 +:10366000A6E1DD30C1B7347AE03F227F8A489E88E8 +:10367000EF18296E5D216BFCAD91CB0F5D1ED54817 +:103680002067687F229D184F5B96EE3BE581F23202 +:10369000C00B8F4C7287E6F9FF51DE3421BCC3E1C9 +:1036A000CC24D7F0E0BCB670F87A27AA0FD13E6BD5 +:1036B000F57B9BA76EA79A4CCE85782E15B4BE6A73 +:1036C0008CFFBC879FD06E370766237C92C4486707 +:1036D0001D3C3FB0CD3ED417F6BD38DAFD14F63FA1 +:1036E000F3C6AB1BB02CB4F65196C2FC3A4ADA735F +:1036F000D0DE3A2CBB9FC179E3B9B838D8C2DBCF52 +:10370000B5D1F965E6EAA3D929AEE13D9DDBD1E764 +:103710007350C3B71951EE3D384EAB21E070529E45 +:10372000BC3C80CEC5CA7C5DFFA1EDCF7EA3F34239 +:1037300000E6BF7F634A561DD29FED2FBFAC42FB10 +:10374000F681F82CB48F74B8E46976D25C832BCE02 +:103750002F86CCF7008EB3D85E9292C8E73B9B8849 +:10376000CAD25783B792E972F43E5FF44D909CBA87 +:103770004BD0E494FF292CBFC864795D166366744E +:10378000B6A1FCAB15483EFE9B06DF878D500FF1BE +:10379000D9C2C87F9010C1FB49D86CF022FDB8F2A5 +:1037A0005E223FC963957627E24B09C633448C6B92 +:1037B000A8E447FC34F7877DEDB0BEA313DD9F205E +:1037C000BC31CC84ED6FFD3882EC1857BE83CE73CC +:1037D000B3091CEE17C3830C4A3E03B84F11B4F370 +:1037E00071CAFB95D9788E91513EFADC4E3B53E974 +:1037F0008BF5AEC7F7B0BE1B58359D0BECED9CE4C6 +:103800006C26EFC3F3807FAC8DBFED0E6833C31021 +:10381000186012BBCEB703FCBF46F89F2FE4E7DC6D +:10382000D9F29221B4CF4D7D2F097FA70B1C9EC0EA +:103830009F7E20FED467543DD27D27DD605015E782 +:103840002DB5D745C17AA6C7A566A15FE4AA0B72BC +:1038500032AEA388C902C6FB0BB573D56D27E4ED64 +:10386000FC5CB56E8FA99189FA394BF87BE0EB4887 +:10387000160BEDDAD2447EFE5A5D22354319B4367A +:103880002D6FDFDDAF03CA6F81BE8F7CA98DF1FC88 +:10389000ECB631FC9CD635091B31F2CFDEA865743D +:1038A0002EE78DF74527E2EDD42D87A46C28BF9332 +:1038B0006B090814376C9790FE26B9EDD5C1F64018 +:1038C00071B2B1CB2F0AFFBB665068797266A81F30 +:1038D00075EA45FCA869C59A1F75181B86FEF80392 +:1038E000617ED4FC8BFB5187168F0E3A5723338AA7 +:1038F00077EEBAB2CF0EC4C3B60907C677A0DED43E +:10390000923A92C69CC2F5889B8B5D59C5F0AC3447 +:10391000B5CF463C39B602061A827E5C0B53CD8C7D +:103920007DB642A6F2C91509F4FC728542CFD32BAD +:1039300032E8FBD9154E2AEF2856C7E2F80AABDE6B +:103940008276D6B25A89A1DC5FE658CACB468B8C08 +:10395000C26575FF43061B94577BB93F6141B3B7FE +:1039600001C3108B5A5413E6FE2DEB1F936FC7FA59 +:10397000F7F3D373F30E571F42F4A97CFFC45444EA +:10398000477DDD15DF0BC4DF174C568B71DCCF573D +:103990008CA1F97CB142A5F99C5A514CCFD78A5DD4 +:1039A00053687D6B848349D0FF94A78F4AF82C54C9 +:1039B00005F237FC42655E6F2AE6F3BBDD88775B74 +:1039C00012B97F3477F88C877F85D09EE8BE11DBF3 +:1039D0005F1F33A7B04F2AE2293F2F7DD5CD82D379 +:1039E000AF74E1F5C5E843616D6751AE9FF170B802 +:1039F000FCA9F94F543E27015C60A5E79A6D249716 +:103A0000CE7D1041F292C53AAF1F0F65F39BDCAF3C +:103A10003F48FEEDC97708AE912467413F257C7E83 +:103A2000E53E2BF1A953B06FE8ECD5C77DF1E992E3 +:103A3000E3FD90AFADB230733FF8FECCAFDBB1BC6D +:103A40005AB057635CE0548C168F66D536C4A7B362 +:103A50009DF1FC6A1BEAE99526DDBE765F86E5539B +:103A6000117A7DF76558BF533F67D54E9483BADC12 +:103A700037A7FCC68979499D7667F26F9CA5A4CFCC +:103A80005797239D05CBF9FD41727EB589F3095DFA +:103A9000CEAF8EE47E0C5DCE9B35FEF25F28E7371D +:103AA000E23E9F79B536063D340AE899EC2AB4CB5C +:103AB00060DF484FE6E77696BE70593C9D834B8E9B +:103AC000ED71DF711F942141E5675EBC0CDB0F8E49 +:103AD000931484FBAE67369EEB87FA8E68A9361383 +:103AE0007FF1127F7BEAD987D3EE84D293BEFBFBB2 +:103AF0003D04CFE31B5E4CC2F90F017B04F9E29C4D +:103B00007B5E4A7A09DA3D01E205FB79C5E83CBBF8 +:103B100017E5DDC316B2279FD8503112F97AD97D47 +:103B2000B38A1291EEF7303AF7B9B798DB01F3B6E2 +:103B3000ECBE0FF5B64C2773627F976F3B6AE807C0 +:103B4000EDB21E17EAF039EAE954918E6927F87E42 +:103B5000837839CCC09CE8AF61171EEB172C77F740 +:103B6000152B217EA3CBFA171FC67317994D5FE55E +:103B7000F563C1FA6304C9AFCBE2B7C7205F199EF2 +:103B8000B2E7CB5AA4172DCE367ADFF56F8E67A831 +:103B9000877A12D15EF794989C24B7BD3CF7F64C17 +:103BA000F340D23FF7183C94EFED29857542F98C2C +:103BB000CB43FEFE0AA88F767B4556DB51CC9BA9F2 +:103BC000884EA37B364E7A97911D7385C0645C67DF +:103BD00065F3FD4588F7672630A700E397BFF0350A +:103BE000C51BF16206F49F9D69AE8BBB09DADF9DB0 +:103BF000994779A02ED147E3B12A3E5E55CB6E0B93 +:103C00009631350CF333A35B720F24295DFB666894 +:103C1000BF2715EDECBE6EB053A0FE96544F22DACE +:103C200041BA7E7174A2EB08F227266FA27CA74FDF +:103C3000615E14E7BC447DC064A85EA0C58BC92E3C +:103C4000D3FBED6FF0D3396230DF64B4CF76CA3C7A +:103C5000FE8423DD4BE3BACFE2B8496209D97D493E +:103C6000666EB731F95ACA8FBCD4F11FB0FD9DF40E +:103C7000CF2A4324DDEBA0EB6F33FBD4D17D0ABF09 +:103C80008A76FF0DC799ABE9434C722AA8375C1BB3 +:103C9000ADFE80EF175B40CF30907EF113962B4541 +:103CA000D0470706E9A3964BD32FEAA355E3D5A344 +:103CB0002FBDBEC29C5BD0EFD62987BE1D192287BF +:103CC000983CEA033C8FF5A9C3C0500F61070D8BE8 +:103CD0000F813D7625FEDBD0D5DF32C748A2F73A0B +:103CE000C67A84D7AB40EF6E80AD1FE4A57B085643 +:103CF0006AABC3B8800AFFEF003CF9C5F70630E0B5 +:103D0000BAE47C787BD8A781B8AE5C660BA9A7B271 +:103D1000688A2B327BCC25AED7FF58A8DC6D7D2C72 +:103D200078BD13CE7D6043D512E0108FCFDED6B3C1 +:103D30004F5BCF6BB81E787E3FC5351AE777E53706 +:103D400032DDF3F10B09F86D90DE02F31F8FDFD542 +:103D50000B1121F3EFC4B34B9CFF6D02CF2B645FBB +:103D600099C8AE6CD1FC532D0B32291F670FFAF5A1 +:103D7000A0EC99C1CFEDB638781E63CBDB7D9D1EDC +:103D800046797C5CFF2FE17ED9162BA78796445994 +:103D9000C65CF07E66F65933D2BD18C5D0FFD0D9C7 +:103DA0007F5F99F4C15704A6F9C3F8F8DDFD8322BB +:103DB000C993C0AC08F29F3565F92F7B8EBE679022 +:103DC000DF57F7FFF51379DE1FABE3F9CD4D8EA575 +:103DD0006F0E87764DB536D2679A52BD6B305FB69F +:103DE000E9AE81D4AE86F91FA2FC808089E208BDCD +:103DF0009FDBF23842CF6D791C3D9FDB827A00F762 +:103E00000FB5FDFD40E27EB60FBCA1E7B63EE8CCA3 +:103E10009FE4FD5CEA7BDD5FF7917EFE20BAB12F67 +:103E2000E679D45FEDBE13F160D6DC9D5677905FE6 +:103E3000FE7AABEBAEAB617FB74638A7DE80FCBD48 +:103E40008CDB8D1FE9F9A07F35109C5E2D7B7D0EEC +:103E5000C2F7D540020B8EEBE9F8D1E91F5DCEEB3E +:103E60007787D352CD7F2BF2FB2CB4BCA447ED3D1A +:103E7000E7AD1663FE25EA5BCB0D5AFEA5C0F355F0 +:103E80005F30EBFED1B07C55EE5779D4D797E49AEA +:103E90005FCB7B7D54F2275521DEB458299F167ADB +:103EA000B00E83F259037B1EF5B45B357EF92853BF +:103EB000A208BF0E8BB4CF0FD822A9FF8EBB607CA7 +:103EC00028FB3BE1EE4CB83648DED669F7252DD607 +:103ED000F2571FD5EA2DBEF47CD667715F7ACD67A5 +:103EE000ED159E068A7707EE1043FCCD8F56F7D767 +:103EF000E0C9E31A01E0373BB01F899F677E54CACF +:103F0000A03847A7BFB942D0E0E95D3B18D7BF2F23 +:103F10009DE0A4E7BD7C769781ECBCB3CB8FE76CCA +:103F200051B03D1B81F78E789ACD54EFD130BC7DD6 +:103F3000B4134E012BE2A71BF539281F91DB1DC1DD +:103F4000FEA023AECF1CC8E73EA911FDA69FC977EE +:103F5000BD79CBE73FB211F074998E62DEDDCDCB37 +:103F60008FDD8C71A19BCB2FCCA6F78BC3F3ED42D9 +:103F7000F3E77EBC5AFD00E1DB09CF93865EFDF7D7 +:103F8000044F8741CFABA6FD7FF9643F3D3F98FCCE +:103F9000EF812FEC1ABCF9F9CE979B539D289F3ADD +:103FA000E1F9A099BE77D1BBD7169C1FFCB2C4E142 +:103FB000F3B237342FF8E54E3FBC97F47B1D6E7596 +:103FC000B2D3120CB79746BBBF417A5D691F69C176 +:103FD0003CAEF2A8BCC3E80F7DE11AF7F75793BED9 +:103FE00073B608F5F82AD0E311BF2B32FDB3E91EF2 +:103FF000A3E59726971745B454E2F9F52F5B76EEC3 +:10400000C127CC83E0C29EE77CFBB4EC8FC4F9B837 +:104010000D3E13C1B3945563DEDE22CC1BCB262AA2 +:10402000AC5E3DB67B1E27917C1CD6833FCA07F64B +:1040300099C6C762BE1353B6CAF8DED4559FFC0AB0 +:104040005ED203A1FE52D4C71645EFBD673CBC5FEC +:1040500068B75B96C774DFE785CDABDBF07EADF06C +:10406000F7DDE711C6AF7CE245CEE3FA23915F7737 +:10407000F1753FC549BAF375A817B4CFA7B57D3E12 +:104080001DB6CFA73BF799F753A3DDCFB64A1BDF89 +:10409000A88D7FDA777C00EA1767753FB0CACF1D1D +:1040A0002F7A8EE7D9ACD2F8FBA23EBE1CDC8F7E05 +:1040B00062681E8AFE5C94E1A37C3B595596AC4E27 +:1040C000ECF22B2FF2FA4CA8C75B14FE7E8FE607AA +:1040D0005AC8BC543FC12D2FC5F78B5C8C8D01781D +:1040E0002FCCF0D27EEBFD2C347807E03EEAF3E8EB +:1040F000366E18DCAFBE86DB39ABF4B89683EB09BD +:10410000C84F116E43B69842EA9F75986E55613E4E +:1041100043BDA1EFF5FEAFBF86C76F3282F73BB557 +:104120007738FCF21AEE4FF9DDEF3AEB8B3C6F1566 +:104130004F526B78A9703D03F31B3D1F6AF30315C3 +:104140003A09F4CE45C813D2BAE0B427CB9D146324 +:104150002739427C7B4F349433517FE6E3EBE54EC5 +:104160007887E1F7CA0F7348FFDD532B0918EF5E1C +:10417000ABC1A7C5E0DCA2DF3B81F66CAD23271EF7 +:10418000F338BF5CA16EC2B879F8BA3E5BA1AA65EC +:1041900041EFE76DC9B2D03D41DBB22CA541767449 +:1041A000DD938FB52AD0EF69D5123080A6F3E59361 +:1041B000A328FFFC4BBB81D930E6F4E4280BC2FBFB +:1041C000B4BDF51DAC377F4B6A56F079C4F95B0A74 +:1041D000D5B2A07DB8ECC9D07D19EE0B2D5FBE37EE +:1041E000B4BCE91A46EBFB47DB65F943CBA30E876A +:1041F000965F1C1310313F57B21BE83E23C9BED255 +:10420000C4F375A302E968C7BE5F6F42B9F83963AA +:10421000E7D12E3FB967750EF2C353CCF7E729B04B +:104220000FF35A369A2405F7B5BA6838C23DCF1253 +:10423000D8E9EC9EA70E5F1A2AA0DF85D5C057E506 +:104240008BE7ADEBE7E4E02F2318BFC2F16021F369 +:10425000D1FD518B6B266D0A3EF73DD6B791F281A9 +:10426000164C0E5DEF224962C8FF7AE36B52645B25 +:1042700011EEEBD1BB05B68EF057FE05DE8F34A7ED +:10428000C940F7A340F9B7ABA05CE68AA0B8DDB897 +:104290009A7C761CF33CD62F39847E901291E7816C +:1042A000C863E41CBCCF60AE4520FB64A5EDB794A9 +:1042B0002F570EEBC778A09E273CAE65BB88F32C2A +:1042C0000DCB2B2F5B1F36BF8BE4932F7CFC27730A +:1042D000687E395FCF5C6D7EA287DFDF324EF3CF21 +:1042E0009DC02A63310FDAF5E76BFAE23D34B9FC81 +:1042F000BBC4EDA90AC6F39A2B2CEEDBB5F8813CC2 +:1043000011EA1F769888EF7FBD258AFCD25F633F54 +:1043100058DEC6FDCEFA79958A3EFC7DC5EF05F2E2 +:10432000DF558825248F2A96F17C4CC40F3568BE52 +:10433000880FC165D6A8C771FCD46E6135E3715290 +:10434000D8373524DFDF6F3A09E3547A04DFD668C3 +:104350009E0F1DD20FE3E74FAB18F74B605E74E87A +:10436000772FE1D9A3461E4F013546E6676B034F11 +:10437000EDE27613B7CBA6737E76B1BC8AA62CBECF +:10438000EEA605E964D7F5431E89F0DBC4E3826538 +:104390008677C96E2BEBC7E160D4ECAA8F702A89AF +:1043A000188E68A5784D9300BB904579141E2BF5A7 +:1043B000378CFAABD1EF779A69EA45EE3ECFEFF34F +:1043C000BB5FE8B413907E6FDA181F9A47B141CBF8 +:1043D0000792D4C116FA3E94FC3B9D7A585F16AE04 +:1043E00087F50D96CF3769E7D86E0A3B9F7553E77F +:1043F000F92C6FDFE07C888BBDD7EDAECC71EE8CF5 +:104400004941FEB7A668EDDEDFF24B8B33EED4EC0C +:10441000A2C0462BCDFF84C0CF4B9445B8D65D8556 +:1044200070DF9C9686F8386612977F3979EA609932 +:10443000D777123C546E579F403F16C0BF2C4D1D7E +:104440008CE722F57CEA23595C1EE9F730E64EE260 +:104450007231779221E4C90AB85FEF8495E3DDDC1D +:104460006CBF11F9E64E85E7F596995CFF7A65D049 +:104470007C3AE3744CA138DD24ADDF3283A0A2FF87 +:10448000ADEC3E33D111CC83F63F67A9B003638214 +:104490002734F9A8E30FD3CE3FDEF46F7DE91CBFCC +:1044A000CE472F8EC75AFC708151B3FFF9384DB3F8 +:1044B0000613DE4577D9FF1C9FEF75F07E0AF312D5 +:1044C000C95FEC9D9688FA7C34DE7792DAA597F581 +:1044D000AE17023E85E8851C2FBAEB85FFCFF0EEC4 +:1044E000D73F8777D07EF4CFC5672B5E7C668F077A +:1044F000E6B9F0B9FB2319D4FB426A8C73A23DBA2A +:10450000735524DE137152F2D0FD765F7845BA07F9 +:1045100020BC9F3D1A3E621C10EF73D6F326BEFCF2 +:10452000DD0F0DBF817D392FB000CA8DCAE6BF36C1 +:10453000FC06E07C08F410CC633C29B517A19C591B +:104540005062AFAE75227F0B3B0FF1C4FD710ABF05 +:104550005F3489DFC3E8A7FCC7CAC78D4EF47B561A +:10456000BE273A114DAA58A001E717DEBECA779CB4 +:10457000EBAD0616481EDFFD3B3A76D01F5AD57CC0 +:10458000F757E827AF6AFEE223B42BC3CF55946BED +:10459000F18DF0B8E0CE495A5CF00A7605EA930056 +:1045A0001F8A577A605EE97CFB09AFEB9E7AE2D9FD +:1045B00097611E5F7C149F8539FFA71F7F3312EF21 +:1045C00085D0E3837A1CF5B46F60544FF789EBCF45 +:1045D000B32B58481C49E7FF0ADE5B849768B7F0A5 +:1045E000E762A33F12EDABC5DB8DE47F5BFCCC63E0 +:1045F000BBB622DE7F68A6734D8B9FF9DA847C768A +:10460000B1A006842C5A4EA41094EFB2E8994F8BB7 +:104610001E427B2351649361DF16FEFE5B5E5F6585 +:10462000012BD45FB4FB68D19D5876DBAB2D3DECFC +:104630005BBE6FBFA9DDDEC3BEF98E1691BFF6A9C2 +:10464000EF685FBE785560F1A9DDDB97EF3C45F67A +:1046500024D84B0119E59E4F2C314575AF77FA717F +:104660001BD1F3E91681F2C02FB68FAB26310DDFD7 +:104670001D0CEF792DFFC8EC9D8CFB7BCF32C2FB6C +:10468000CFA56A8EF70FAF8A437DB8DCE88993E93E +:10469000C9DF973F729B868F6A223FB7EAA17B5F93 +:1046A000E76EBB9ED6358FB9090FCB1FE6F9B9DF90 +:1046B000821DB8BB87FD1C3699F347335B3202E994 +:1046C000E35BE809F59ACFB5B8A1E78FDC2E35B3E7 +:1046D0001D47D0FEFEB6ADAF807C497CD748F74E73 +:1046E000FD6A5F34F965FE3E89E7FFE4BFFB6D11AB +:1046F000D2D5AF52A56ABC7712D6EDD1E024FCC466 +:10470000FD63740E91F278D3B0DF73A65BA0FE3721 +:10471000687F3B43EA139C3EDF618EC0F3649FC712 +:1047200071FB06FEFEC8103F785FACEAC9CF0FAD43 +:10473000467C4A18688882F5CF9ACCE91FDE176D4F +:10474000457A2BB55747017CBE79EFB809E33B9E0C +:104750005803DDDF57E9FD8AC685EA5F215EE8F090 +:10476000A8DA1B7A0EACEAF14FC3E836EC5C19AB61 +:1047700026B855317EAFC3E7A68009F98107C64543 +:10478000BB695E53D0B933EC6FF9490D1F4C5DEF37 +:1047900053BBE84E8FE3CFEF258E194EF783266B80 +:1047A000F7DD6A74AFB767DB7A8E3777D1B987F6F2 +:1047B0007DB1917964A49F0FCD249F166FE4F4C856 +:1047C000804FA603BE1F5F7F200EEF073EE533C676 +:1047D0004EA65143F96AF9F39F1E5A0DF5FB258841 +:1047E000CC4A7CF53B13CAAF847C1630C3FC4F9592 +:1047F0007B0536BC07BA84F73DD26539FBBFCB4F8A +:10480000D9FAAFD05FD705F7503A9CDF0B3F9D3602 +:1048100039949F7ECB32A3300EC9E492148A578418 +:10482000C157876B385F3C3549E1719730BE087FCF +:104830007F66417064AC9DF0F8BC9697A2E32F733D +:1048400073FC85B209E3C1729C8161B9D2BBFF3AA6 +:10485000CCC7EEBEEE5078867F8FC14D84F9B85E2E +:10486000E2E74416B708DAF9410FD95D55188FA26F +:10487000DA8D87926283CBDEB0B22FACBE1A567649 +:1048800085D5778795AB43EA2FDE7BC0C40F09F946 +:1048900043EA996B2691DDD55D5FF0723A6FFECAEF +:1048A000E441FC480ED0FD30C695CCE340FD6B9F43 +:1048B00048FA5787128844BD649595EB8B1DB25614 +:1048C0008ED6CBECD6926CBC9765848CF984012B88 +:1048D000F78B77B802919AFF9BF4AF3A4DFF1235F0 +:1048E000FDABD39FA1E5197624F0FAFAFBA32D22A4 +:1048F000DD17D3EE653DDEF74B9135D88776CD0FCA +:1049000057285E7816EDC6739E4106F4C39CABFF34 +:104910009697A58C18461121AE7F9EF04C8C439F34 +:10492000E1A7CCF5E7F1B86F1ED584F94E73F81600 +:10493000B3F23FD445A27E2C3AB20FBD02FDCC4B60 +:10494000E0E73BCBD6879FEFE4E73AE73585E62300 +:1049500061DE10D2DF7CCC6392D13E0EFDBEB0E5AD +:1049600014D1D1C2303A726BF18B703ADAABF3A743 +:104970002C9685745428DA29DFA8E330CF8F3F576F +:104980006F640DB8DEA705CA7F0762F837D4172A0F +:104990000F8BFC9CAA47CBEBD3E85987DF69A4B304 +:1049A00021DDE1DAF9FD85BFE4609EC4E23D1F8FA1 +:1049B000C03C89D37B3E1CFC0A965FFCF7011FB309 +:1049C000EEF5F35FFD2BDD8BDEF1AA9972483A5EBE +:1049D0007D6300EA151D2F9B29FFA86325CF13F1E6 +:1049E000BCEAA0F3341DFDB9BD50B7EFBB11ED24F7 +:1049F00097F8BD45C727F37BA3CEB5FC7004EDC582 +:104A0000732D6605D755F52AD70FAA5EB652DE4E2E +:104A1000C7BEEF7282CF3DFDB3EBD1F3703A1CFC01 +:104A2000DE1B260506E0F895AF5ED907E57545F370 +:104A30007E139E2BCC7FEDC711C8773B9EDF6F4264 +:104A4000BE7CD6D8FE08E2D7D9B7CA761913D1DF13 +:104A5000C9E85EB4D56F3F3ECF93D91D2ED0EF5934 +:104A6000D493AB5EB3D1FE005CCA510FEF0D1EC6EE +:104A700029FF3DE1D1616C2B42FED3B15B1885F17A +:104A8000D52EB8082AE78B0EF2E3C1FAF9FB57BF1F +:104A90001B81FCE962EB1D3885DFC3F1BF65BDB941 +:104AA000FF4DF757C7F73F4C56B85E1A86F7DDE95A +:104AB000FDC5DBA9FCACC349F3BD447A2FF95FB651 +:104AC000DF2BFE9BAEF7E2FBFD076DBF1D32DA2B3D +:104AD0001DFB7E1CC0FE81753FF23F74DDBA9E9FB8 +:104AE000273A0F6741FD498EDFDBD1EEAAD3F48E62 +:104AF0003A3BCF437F232195DF5FA9D957F99A7DB0 +:104B0000F5E6146E4FD5B191F578CF8107F4899D04 +:104B1000E4BF1F79107F2FE90DF704D213CC8CE38B +:104B2000D5B71607FD9E4241F21C6919DA659AFE57 +:104B30000AE583BB517F1D6796B15C973C2A19FD3E +:104B4000A57576B313EF4FEA0D3EF996B767625C31 +:104B5000B9C01E6A774D0AB39FAE5642BF17B3E77E +:104B600063D1DF579C69646081B022AC1F64573EFB +:104B70003585DF3B74356BAC97ED970427B277DF53 +:104B800090150D4EAADF0BE52265D0525CFF779D94 +:104B9000705ACA306EE5794FD4F2410C14BF7FC30E +:104BA00072E5AE75C1F0255507D737E960167C3F31 +:104BB000040A0EEAEBF9C953A89C906F0960DEA7BE +:104BC000C4C01EE6EB0CB19F25EA1A9E0867CD4EC5 +:104BD000C883FA076ADD0777C3BC0E8C35CB780F24 +:104BE00066507B5A37C0DDA2D8FFEBE1FBCE147EC6 +:104BF000DF69387C93A52C09E9EA4A4DAF2F90A2D2 +:104C00007939B94D7411BD79391E7FE39450AFCF16 +:104C1000B5474BFCBC756036FAB34443A4F6BB7F82 +:104C200032FD6E551D9EF3CAC2DF2D729BA7D2398D +:104C30001A99E5213CF2980FFDC542CB1B7FA57B5D +:104C4000C258B5C145F1DD43740FF8108BDD4FF745 +:104C5000806F934E87DCD318F67B446AAB95E823CC +:104C6000629089F4D5E1196A1EEE6F04EC6F1AACFC +:104C700033B7D5AA6ADF293F4787EB5A2D1FA70E06 +:104C8000E8DF8FF97E17E03DEC1B9D61C73C578440 +:104C9000ADD62FF69317D6CFAA1516E63777F5A31C +:104CA000B797B0BDD8BD7D3EB6CFEE6ABF7A854C12 +:104CB000E386B737F6327E41D8F877AF48D0C6E7FB +:104CC000EBF5BCCFF32EF47E4CBDF45318360F0930 +:104CD000F84BB0FF237C3EE65ED65314D68F2936C0 +:104CE000E267FBB1F4D2CFC4B0755992637EB61FB0 +:104CF0005B2FFD30A9312138CF2DBC9D5D83878E80 +:104D0000BF7A3D7B66BF90F198ECCBC57E4BEEE45D +:104D1000F7184DB5FB73F5F8C64AC0E3FE929BE465 +:104D2000892983C918BF28D9F4622E964BE6032E31 +:104D30006721FD68BF3F083A3B7E37B166FA5D2EBA +:104D400093CCE43AF85E12E5E7F5E7407FFCFE7E9F +:104D500086FC66103ED3309DD947ED230AF8794D85 +:104D6000601CB4CEB4743E1F23930760BE6D4ABE70 +:104D70007CFB07680FAFB252FC6B725EE8EF48EC49 +:104D80009DCAE333FA73CA3485DFBB657026201CE5 +:104D9000A6D60F257BBCCEEAAA7801E5C63336CA73 +:104DA0003F2F69B865CA689CDFB37DE83E882FA7AE +:104DB000EEA6735DA5F5B36E7B1FDEBB9FB4D2FB81 +:104DC00025D3DC1EA4E72F0565F60BE897F2A4DED9 +:104DD000301ADA4FF5ED3E8BFEEBA9D7D9284F7B81 +:104DE0002AF3BD330EE9FD3A91FA3FFAACC384F9D8 +:104DF000E9537C5F49A8FF4C9920D03189A35679AB +:104E0000C0924C8A2B535EC4FAA91ABFB6F2F84876 +:104E10004943FFC16999F8BB943DFF4EE1BEA9DC4F +:104E20004F9A52E74CC0F34401C12AEFC8EEAA8F53 +:104E3000FD60BF0734783C3055BB1F482BA7E4F317 +:104E4000F84CD91AF3D18191F834FA87C033677AD4 +:104E5000DE43B8CEC969AC684B36E5D1D1BD7C47DD +:104E6000AD2012709C8DA90AFA31DC4CCB7F5A9F81 +:104E70004A72E568AED384F7F41DDD982AE37924FD +:104E80005BA67A08F77D5EA3A0A07C3A9ACBF137A7 +:104E9000E0E0E7DB8FC8F200AC7F2461A08CE7285C +:104EA00052C4FD83285E97C5E3753F4D733F37B508 +:104EB0006F173E0FD3E880315F06FABBEEBE09E8FC +:104EC0000FF1BDEBFED8669CF7F11A91F258F5FB95 +:104ED0006363353C4811FD8328EF5CE678F688A9CA +:104EE0007D16F6B76C2AFF3E3946CEB173FC6238A8 +:104EF0007E498C3C9BF0B66108E5EB4F5EC9F16DD5 +:104F0000ADE4237CF6AA8AC103F8D988EDF13C52BE +:104F1000ADE4C2DF9149B630C91103FAD774F70383 +:104F2000389F29BEDA23E83F99839DE073FD46133D +:104F3000EA6329DA79DB29D95C4F59E01D1272DE68 +:104F4000A36A7ADE5B5383F7E9BAAFE87E23262BA8 +:104F500086A844C47FB5A86F2C3E95A5285761DF6D +:104F6000FE88F50BC516A2DF7335C0CBA2F1FED4C7 +:104F7000365E4EE0F16FA04F2A9BCA785E7DB22567 +:104F8000947E9334FA9306F1F2AE15FC2E8D2781B0 +:104F9000FFE3F377C0C725A0CDA7811F63F9D9151B +:104FA0000A3D7D2B32E8FDF32B9C546E5E3186CAA0 +:104FB0007B56A854DEBBA2989E2FAF70D1FBD98A36 +:104FC0009FEECF4DB03019F3E2FA4B3EE21BDDF815 +:104FD000C0501EAFD5F7D1B826D7807A86BE7F8560 +:104FE0006226DDDBA6DF13DB9BDEF65FB58E418C30 +:104FF000E3C3801A7EEF945E46F822FC0631BECEF3 +:10500000380BE79F69DAEFB5CAC083315F2C49528C +:105010000D84976EA6D0BD55F8CB92C80F91D412CF +:10502000717F14F24F25BB59752D8713DFBF023EE8 +:105030009E0E17A6F5F3480553E89C86D43E14E966 +:10504000A4503CBDE10A787FAEDC40BF3F7C8EB50A +:105050003FF32295ED94C73DC0C4CEE27D89A00DFB +:1050600029E200D4679C0966E4B7BF2D4E453DE7B1 +:1050700097E5029382E4C52DD5563A5BAF976FADA5 +:10508000890E29BF76853B7D1ACCE796E5471FFE42 +:1050900077E8FFC86F3FFBF40985E6B1F3011C77A1 +:1050A0007904FD8ED839A88BF87BAEDE48F925F857 +:1050B000177CEF74C95DC34C784EE8A86A710A3258 +:1050C000EEB75284F7C5790C8CF2903EC2FD04F81D +:1050D0007FA2EDA7B5F13BCA7339AAE5C184DF43CE +:1050E0007DD5B434A2D323BFF981E7FB1A2D32FA60 +:1050F000218F96C7905F9485DDB75DEAB1F1DFB18E +:10510000A817F979FAF0FBB39D5CDF3B86FA1EC95C +:1051100035D0F3505EF8B99E77ECAE380FC6218ECD +:105120002D8974E28940F79A78CF7C28AFC77B96A7 +:10513000D11FDEC21AD0AF09B8CC7F4FD9630CD5CE +:10514000FBDA93A3D14FA99FCFB7657B49DF07B4A3 +:105150009251EE9666B4D2BDA8AC5190316E89F7EB +:10516000935B62908F6BF72449EEA1D7C1FEDF38C5 +:105170004D24FCB87D2ABF87EA8DA98CE060654E7E +:10518000F25F96ADE7F79597356699E605C99952AE +:10519000EDFD9C0CFEFB65FAFB79D3F87DB19B4DD0 +:1051A000DEDA04D8B77E19FCDE742CE33DC29B170F +:1051B000AAB11ED655DF3D4DD2C6E7E3BE814C8A6B +:1051C000E2E1FC7EFFCDEB72E9F70200E826C4576E +:1051D0007DBCD28C910D78DEA0747D6E2C470E378D +:1051E0009D1BAA9B759384F6DCC2B07E176B720F71 +:1051F000EFE3C57C809398184A7C84FBA9BFFCDD53 +:10520000BF7C8672FAFC530EFCB951B6F0722E7751 +:1052100059A63787DF5B1D1A472AF8973314FF38E2 +:1052200003F625C50D9B8F9BE8BC03D021F2DFAAB6 +:1052300066F128DE771E1ECF38F8ECC7913DC69187 +:105240009A79FCFB627124FD1C71D54B3C0ED2296E +:105250000F84EF29DE5AB56F559CBB077D00E3979D +:1052600035313DFD3EDEA5C59DC2FDE40F4F0B8DE2 +:1052700037E971BCDEF8AB1E6FD2CBE53523066291 +:105280005C62614DCE408C5354D6FC6260F03DCCE4 +:1052900067B473C27AB9A29773C2B34D79CF4CEB9E +:1052A000DB753EB8BCE632ADDF51D45F40D383142A +:1052B000498942FC39E74D8F623F33CFAA2DB018A0 +:1052C000BC8F1CEA63DC3AE89E17D2DB16BD363091 +:1052D00006F17141CB269301DE7F3B8DEB6567C202 +:1052E000E268954F1FA7B876056BA37D84FD659690 +:1052F000E0B82AE6EDF6E93EAF45FFE2A846FC5EDF +:10530000E013D49DD07E9159B917F9F9A237AF3582 +:105310007A82F6FB5D0DBFC3E77D48E3F7FA7B9C1D +:1053200027A37E7C673F424A79CEC6F8EF3E04DE73 +:10533000C1B8C5A96DA3E8771F16F8765792FEF09D +:10534000B44D46FFE19761F9C97FD1C6FBCB34ED7F +:105350009E3EE6A3FAA79EB651BE24CE17E95CFF97 +:105360001D6CBDDDF169FCF7278E4FE3FB70DB346C +:1053700046EDF5FA0BEC8D263A3FFCF2B5B12B6108 +:105380001E1D7BFF143908DE9FD1C6EB68B6D1FD28 +:10539000D10B9A7F98FA0AE0FDE2E6FC5821887F5B +:1053A000FC6D1ABF5FEC4C0BCFAF615E9E3F588126 +:1053B000F0053C38A5E5059C7AB60FDDF3A5B7D31B +:1053C000CF6B9E6AFE7DA421B36BFFAA2C9E354352 +:1053D000D2BAEE65B318DD1ED413A516FE7BA24427 +:1053E000FFD0FF9A0C8F0BED80CEDF1BB5A864AF0A +:1053F00054EE9D4EF7B7E971A3FF03B14267300049 +:10540000800000001F8B080000000000000BDD7D05 +:105410000B7C54D5D5EF3E671E992493E424249049 +:10542000100C932701024C780942714802A2A08611 +:1054300077801026109147A0C3438D969A09090FD3 +:1054400029D68058915A9CA0A0B654A3D28A96B669 +:105450000322D222159FD54A61106B456D1D435121 +:10546000ECB5F6AEFFDAE724738644EAF7BBF7BB88 +:10547000BFEFC65FBB5967BFD76BAFBDF6DA7B56D0 +:10548000FEC21688C916A26A906BE69CA142886388 +:1054900036B1DB25C4CABE22A8A40A71BE2EA1C59E +:1054A000AF0871CA59D0432578C7719B1004570DB6 +:1054B00011BED6222A9F1E1A36798010B51B15E11F +:1054C0001922449DF0AC3D82765EB6047653BB67EC +:1054D000B2DDAF6CA07AE1E316B18B3ED7062CC2E9 +:1054E0004BE58408164CA17A6244B0607282105970 +:1054F000DB2D5CDF55AE0A318CFAB38B45AD4E2AFD +:105500009F132C48A67E7A5BD479E58053820529C7 +:10551000047FA2880ACEDF152CB051FBB54FF7559A +:1055200030CE4F508FF26BA7040B34A483A93E9565 +:10553000FB37FEAE26F88E430502DFE7B71622FFE3 +:105540004CB6F67741E30DFF2241ECA2FAEAB33400 +:10555000186A6FD9A3B1BB80172102AFBE44F98D81 +:105560000DBD944DF47D18C69726C44E21FC2A7DAE +:10557000F73F12CBF3145677FAD4848E7E1AF5F1E6 +:105580002DB637F3787B2AA21CE33260637E80312C +:10559000BF4F6C541EF9713AACCF637162338FFF09 +:1055A0008C4D78408FF0E331815DD4DF4719273E81 +:1055B000C7B83F7ABCAFC0BCCF640716EEE7FC5853 +:1055C000B18BE8279CCDF6748297943AC29B344AFB +:1055D0007FFAE8E71BA8FCB99F588470D3F8BEBFD8 +:1055E0007738EAD39FAA660A713461CF70CCBBCDFD +:1055F0002AD498642A670B70FEB9584DF513DC263F +:105600009AAB1482DB1E89613C9F539AB3302EAF54 +:10561000101ECCE3DCEE07B280D773BB1F1D7F07E3 +:10562000B5F35089C3677177E0C348973C122344B0 +:1056300021F72BFE2D306EC17435F267942B8CDF71 +:10564000193A9E67976B9C2EEDFBDA2F85CAE59978 +:105650003E44AF00E8B5E3A9588697FE3C6D97C875 +:10566000069FECB2FF18F41CEBF0EDC2BCF7DE674E +:10567000F7C8798613328875EFDC6E47F9C66AE1A0 +:10568000C33CC7599CAA9FF2CFB75A580ECEB70E4B +:1056900049C23CCE5B03051A7D5FF578EC60C6AF6E +:1056A0004D8E93F861CFB354FFDCCE6E62931B6CCA +:1056B0001CB8F55DE04975B980E74929815BEB309D +:1056C000BEBB07895D947F2E45C7638A4BF88BB9B3 +:1056D0003EE379590F213651FFCB36FCEC732FC1D5 +:1056E00022D3A2E57782AFAEF02684BD0326923E98 +:1056F0005A6E65B9A92539F276A37663249E96EE93 +:10570000510218FFD2F5F182E9FD5325904FF35C69 +:10571000151B4C1C85F9EDB6B8FDF479A9BDB52073 +:105720008DE6B7556F87CA7B03451DED2DB5BBEFE1 +:10573000E7F6FE309DF96D6B792AD3E593D67BBBF6 +:105740007B8B2E2DBF2AD6DD437346967B3811E521 +:10575000DAE5502FD73EBF56CB999881847771E216 +:10576000D677A9CA3FF6C6F2B88468CD2A4FB87476 +:10577000FE34DE2ACC67E91331C24FF3F96B3DC921 +:10578000621F213E4EF6DC8371FA5FB588DD72DE62 +:10579000DEDDD4EFCD0173FDF3AE13C3C1CFE7F768 +:1057A0005D6F45FDFBCB6D3CCE651B46DDC8787A51 +:1057B000C526F2954BE970875EAE5D1E7F1ECF7CDD +:1057C000F8714FC1F8FDF8893E01B47726396007BA +:1057D0005F850F8AF02EA2F3C7B6D62C2B95FFF863 +:1057E000E77D8A493788257596604C22C1CA53598E +:1057F0000A7FEF31B83192CF82A45A87139EE89B7B +:10580000C8EDE87FA963F3090BE169297D1E3E9885 +:10581000D3604C0AA58FD1FC1C1DF39B9442ED4034 +:105820008F409E889E82785374A772688FF55AAB1A +:105830001D7ADB90DFDABDE6FA46FECBBA3CD29F9A +:105840002BB5BBEC97E5D0D66A4FC7FC14E17A9A2A +:10585000F87669D38AC582E6B3D4B7658EC0F8AC52 +:1058600062829DC67546B1F038CEC48A7953B05E67 +:1058700044F6932353AD7BC73CDFD2C7FBA7729797 +:10588000E467FADC4CEDD436299BD1AEA12F8455C8 +:10589000CEC7A84768B0631D393356CFEF62BE0646 +:1058A0007EA3E76BE0F7EFBADE3993EDBA67B45C3D +:1058B000B7DC58B7DABE1A929452D4B57C421E3D7A +:1058C000467B248FFFAB5C703B415D7FD552FF1858 +:1058D00067C1837653BF858F98E17E7BCD70D13EC3 +:1058E000333CF08019761F36C367F57EF7903CB8DD +:1058F000481E1EAB7770FAD37A4DB868CA7BEBD3DB +:10590000197EA2DEC5696B7D217F7FBADECDF0BE38 +:10591000FA110CFFB2DEC3B081EFFDF513187EBEA5 +:10592000BE9CF3874E9678AA1352CF880FD500E419 +:10593000ED9CE385EDEF935C2F8E3DB6FD7D5ACF58 +:1059400047595461059F9C73F2BA25AC7ED67FCF30 +:105950006B9A1BFA6F546F5D8E66D9598E98AE5450 +:10596000FEF94545814DD9A8AF78787D3E17C7F53A +:10597000CFD13AF9B4D4C3F1A06723FE497AFD79B7 +:10598000E237AC97CF07547F7E92101F2827D66747 +:10599000507BCF0BFACEFC12889F42FCF1DC306FBB +:1059A000F6E461921F31AFAB72034356823FD7BD1D +:1059B00054702FF51352128485D21F0EF316A0DCFB +:1059C000F2ED9F55891CACCFE13DA05FA8C1F5CA9F +:1059D000D5863D43E3A926EC83CF8593FE6F240D46 +:1059E000BD294A4F6F8E80C1EFDBCCF0A2072FD5C7 +:1059F000EB917C44DCCF72F0902D9C017D3ACE324D +:105A00007AE7261ADF4A25418BA1719C8D156BD749 +:105A100041DFFDCEC2F827AADF5349F082A3B96265 +:105A200093AB833F4B264BBBCA80175C24E244E810 +:105A3000DF059B15550C12A2CF76D5349EBE81385A +:105A4000137FF57F2CC5040F68ED692A3F687F8EB0 +:105A5000293FCFEB199F063DEB153EAC97C5C17EA4 +:105A6000663DBC66A31DF43D8F0FC40F53370F3145 +:105A7000D5AF291F652A9FA57854D6CFC76D3CDFC7 +:105A80001AD88D586FBEBF713DF86A558BE2867D7E +:105A9000EAAADB381EF027C4FEE033834F88FFEC10 +:105AA000D0FB1752E5F705FA3A744E39916521FAA1 +:105AB0002EEED7FCA3D1547F99A5254B23F84F1385 +:105AC000BD8BC10744F9C9686FF553B6944DB03327 +:105AD0008F8EBB01E3F8A4D596CCFA45A77F96AD8F +:105AE000752CBEB78C10BCDEB7345B26605D6C696C +:105AF000EE1697C77CEB67B9C913FEEEA9B0B78461 +:105B000038017A8EB314B19D7CFEA84560E976D544 +:105B10004D287110BCF2555B00FD19E3AF1DFCD29E +:105B2000CE1422D1FB24DF28F8897AE8F30D587FC0 +:105B30008A5B0B82585776B4749F4DE319AC79EBAE +:105B400031EE95C74B134762BE7B6DB056C45FB64E +:105B50003DBCD34F72B3A1F9617B88C6B5C41AB0FE +:105B6000BB295DF4788BDD43E9358FB5F0F7858F80 +:105B7000558F871D74B3F0AD07DF7D6893F6AC31A8 +:105B8000CF7196CD05A94CB78C64F0E1695D1F2CEF +:105B90008A135E949B3A69AC2D0DF6E7DEE4620B46 +:105BA000F1E1F469CADA7554BEF668B7160B8D7365 +:105BB000BB5EBEED650BCB7BDB344B40EAE9F2010B +:105BC000E5032ED5AF532F6633BF4EBBD85F0862B7 +:105BD00091E9C1BE0CBB8AC26CCF111EC3A067DBAA +:105BE000CBE7ED53D19EC711C61AB0C87E623CF315 +:105BF0008B2A7CBB29DF557182F96D5536F123D193 +:105C000067D5F1D7253C568405C1E5A32D267EFB3B +:105C10006E59BC891F2B4404FFD39066889E26785A +:105C2000DAA45C53F999D3FA47C9F7E08E7C96EF72 +:105C3000AB4C761C496A147C9DA9FC3231A5239F8C +:105C4000F1D53CBE27ECC97DD9C590F7452AE1BF07 +:105C500088F9CCD69DBE2FDF2FBF0B4184D1EB2519 +:105C6000513BCBF711DF9BD67BF19A188EF6C17CA6 +:105C70006447979E3882FD4238C3C276ECF2E657FD +:105C8000D763BF430683EF1EA2FF327FC89E817E8B +:105C90003D22DC588C7A12CF4EB72B7B6D46071F06 +:105CA0002CDF677B2F1431FFE54725BE3555847BFC +:105CB0008DBA349FF4FA7ACC67F92485C7BD74EFA6 +:105CC000197B90CA4FF3F6F259889E376FA7F211ED +:105CD000E3AE6D3DC3E39CBEBFBB86FDC67261ED06 +:105CE000C827FCB8A6C8F5577C457C341CF4136C57 +:105CF0002F90DD7F08F3217963BBBFEDE587158326 +:105D00008F44F1A5F858B6E6433BD6B123C8A7F9AE +:105D1000F774BFB91EFB616DBEF025655CCA37C064 +:105D20008F35023F3DC14711F90B85E4C385B4ECC3 +:105D3000068ABF3D9E6EC63F28FFE6FD4A20987D3D +:105D4000295E167A438CB7855EA72FA05D3A9FE542 +:105D50006BDE3E027DF304D157197129DE6E1627E2 +:105D6000787E3713BD83C9CC0F7607EFBB1437D6C7 +:105D700069D78890DD363452EE5E67FAB7B9498A42 +:105D8000311FB243D6A4707F8E6E833BE478CA4540 +:105D90003BCBEF8C8B564EA74D32CBD7F48BDDF936 +:105DA000FBB7E79B901DFB84E562F36796C44BF15C +:105DB000B17CCD877F827D1A3DCFDEA5D20E685F94 +:105DC0001F2C9549D52C3F6B4DEBA591D69D8C7D15 +:105DD000F17044BFFDA624A47E40224E6587B1BC6D +:105DE000527D6F849E8CAEFF45BDE3C5C336D4F6AD +:105DF000335F8EB34C52ED34AFEADFE97CB8C6C1F5 +:105E0000EB799BDFC6FA308F505581F5BEC1C6EBEA +:105E1000F9CAEF17F61011FB652FAD5F91EB7856BD +:105E200043B7EEC8AF8ED5BA43AF573758CAB1FEA5 +:105E30005453395744B9F54DB959D0F3EFDDD5670F +:105E4000A79FF0F6DEEDA9DD47503F67D7D9521D79 +:105E5000AE8E72EFAD1B9725481F9FDD125311A028 +:105E6000767BDFE91016F0F52F7BB01E171667F76B +:105E70000A82FFF674B7624C7FF214A9D76BD7FD84 +:105E80002291D84A2C5DF7FA708D4C823513BDDE15 +:105E90002984CF8F94963D1A0A6A2D03A1E7BDA4E9 +:105EA000CE50BE7ADDBA2CD07709B56961F9F357C7 +:105EB000F17A1B2BD7E90F63451076D7874FC506BC +:105EC000B04F128E062EFF499AD090EF255C61BF2D +:105ED0007EE19104DEEF7EA21ED4D7457F01D6F588 +:105EE000551AF50F3F827A6006C6B564534B96A0EB +:105EF000712CAA1B980B3B7559DD704EBD0DF949ED +:105F0000D8A786EAF78BB3F91178D6F749A49F781A +:105F10009F617CAFB2972CC6BC9658291FEB685D79 +:105F20007F6EA77D5F70A3DCCFECD1D76BD8E34841 +:105F3000618F8B3ED21E070C7B1C29EC717CFFEE1F +:105F400076B37D5671838BDBF954B7677B5B3E2B51 +:105F500086DDEA2F11853EA7E4A307B08EFD4EFA39 +:105F6000F35629BE8742B0871AAC02FB507F89EFF7 +:105F700051C0FEB5315A23A5F7C7DFF95088BED707 +:105F8000591D5A0C5B06BE2B418FEF84C9A68AE0CF +:105F9000EFAB2F3A444D841C8D25232D122E7564B2 +:105FA00098CA8FD3B24DF9D7A4F735E55FEB2A36FF +:105FB000C1130B479ACA5FEF1E6B826F1C71ADA9AC +:105FC000FC64CF64133C75C22C53F9E9E5D5A6FCFB +:105FD00099158B4DF9B3BC2B4CF09C45B79BCACFA0 +:105FE000F53598F2BFA0ED0BD68B03D84F117D7E0F +:105FF00083FD14A5875E4EB3621F6CD06774A9EA57 +:106000006B755E2AEFFBA648BBDB31CDF3C414DE13 +:10601000479FC806DF66D2BF607FBC3045D2D5F847 +:10602000DECB2ABF139C017A4497EFAADCE8F84341 +:10603000E75DC45285AFAF5E6C25BD33FACA4343FA +:106040007209AE9DBA7FB195F4DAE851879EC921F5 +:1060500078F5EBFF92F0A043E791FFD5EB07243CE6 +:1060600055B02922C46F1F0F125F1D720CE9013D4C +:1060700036FA6A95FDBC4ED2AFF0D72E773883B989 +:1060800089120F35241F41E263A487888F911E2651 +:106090003EAE21FD7684F818E951DA57E2FBEF694C +:1060A0005F89F465DA5722FD03ED27919EA0FD2458 +:1060B000D2D7EA2B387DA3DECBF5DEAA5FC4E9DBBD +:1060C000F53EFEFEA7FA3A4E4FD6FBF93BE801F843 +:1060D000DD29BA7F63BFED93F6F500FB2C9FC6FB6D +:1060E000CE467D7D12073451827DEA21D1CA780BDC +:1060F00059933F203A431575B69FEFD8D75BC50734 +:1061000011F6D829ABE7AF928EBDB40FE23BBED7F4 +:106110005CE3FD04DFDFCC9E9A3F84E0995F79D792 +:10612000D13654BCA94A3F6F74BB2FE87CF1E7A974 +:106130009ECF50EF3B8E53B3A0EF5C1964B58E0237 +:10614000FC9BB180953BE87F449FEF584F34B2DF12 +:10615000F24BE15A4BF27D30E108976F8C155A0CE7 +:10616000CD47B97882ED973124CBF06B367E49303C +:10617000CD7F0CC64EF9DFD1E4BEA4F1265AD98AF0 +:1061800091DF2AF335EA4FDA3B02F6411E52C25F35 +:10619000D9C513A59CEFB4BB6208C563F2F4F265E0 +:1061A000A44392B97F1E5FE30AD9FF235F9EE07D7F +:1061B0003AF60C368CD711E4FC315EA1AD4DC6F831 +:1061C0007CDC3FC1C6F8B8FC18D449C6F8BCEC4723 +:1061D00068EC4BE5E5F85670FD7439FE1E5659DE45 +:1061E0004EF36B18C9E3ABE6FA50A7949F6095EDA8 +:1061F000136B6AFE0CECA2F715C3AF60AF75BAB1B2 +:106200005E8C293A91A1B7A7F923CA27B909A6F646 +:10621000F2FE29FB07026C04E728E56C271AF2F965 +:10622000E0D813D968EFC15B1CDC5EA6E5A962E883 +:106230005DABC72360274DBDDEC2FBB48BD77807AB +:106240004E257A5A53551E6FA32781FD18AF29DDBD +:10625000FE1C4FED4DD6EDF36FE0872153FF4BFC55 +:10626000F0CB76FAC630BE5B253F107D4DFCE06E6C +:10627000E707CE6F1C47FCD009BF5CCA0FC1593A73 +:10628000BEB9BD31791DFC81F5F660C25B1E6E6F33 +:1062900080ECFF912F7D3C5E2C9CC0673B3FF82437 +:1062A0007D958B1DFC1153FC3F871F865A5B5BF06D +:1062B0003DA6D6E1C6BC2FC71FF3C2627C1215F9FA +:1062C000D304EF0BB013AA2FBA8E00AEB116DB6168 +:1062D000961BF967BBC8F7FE236C036C7C8FBB561B +:1062E000965B20C68E47BE35F5B578E87FA31DA323 +:1062F0005CE125E5063B601FAF1AD7FA20EC800968 +:10630000B00B303F21E1EBC80ED8C4FB044F623123 +:1063100099E0A5F827B5232CA30FAF845D956E11E6 +:10632000D85F09A7B4AB5DF41FF4ECD517AD263BDD +:10633000FB3AB1D90A3C52F1700CE17D02ECED88D8 +:10634000FDEA75457F653BFCBA283B3CDAAEBE6F83 +:10635000AA6E57678B6CE8D717608FC16ED6EDEBCE +:106360005221EDAD687BCCB0AFC92E7B107264D8E2 +:106370006502FA8FE6B9A75A53793D106E7530C1A0 +:10638000E33CAE9580FF7DBDF47317C278A6EF6540 +:10639000190ACB3375F3C67282AFC1FAAB613ECD39 +:1063A0006C0F5C275A399D244E707A8308735A2EDD +:1063B000DC0742349FC317860F1D02B95183EB617E +:1063C000C77F5A1D1A8EFCA39AF7A9A94497CF1329 +:1063D0005E3DA560F1097BFB807E87CAE4F8564EDE +:1063E000977EA3438EDC246F277AE277B4CEE6E56E +:1063F000031F82D317691DCEA3F9BE44EB30E0EB37 +:106400000A1B04EA8D7729C21A814FA3FE44AD54BA +:1064100058BB75BDDE4D1CF85C2FE0F758729F32FB +:10642000D0E958F29565F0BB1F4BEEA1CA34C68E79 +:10643000B4ABFA863C4C2CDAC0E71413B5F1DC5F40 +:106440003B5ED3CC781D0FBCBA815FBF158BF1B515 +:1064500022C0E94411647C5E4F0B35E01B490C59A6 +:106460001FC7DF50F95DEAA27448691EBED73AC261 +:10647000597695F1FA02D6D1E516EF69F8ED6E6D11 +:106480003BC1F87D41DF5F1C72BCFE4BD8BB6DE8A1 +:1064900086D2BCA6130CAFB649BE5FF6ECF5252E2E +:1064A000E0FF4D4B00FB9A731822F1EF98BA513C74 +:1064B000FEABEB4672FAD77AE107BE6B1D128F7FF7 +:1064C000F31F1C68A17E5E4BF27E027EAB550F244B +:1064D0005E45E3FBEB83AF3F817D95C1B7B516D732 +:1064E0006637E4ED98C58DF375F1D50B59F0477714 +:1064F000C5C7C4BFFF981AB1AF104E6F4FF8BBC5E8 +:106500002353795C06BFD63AC69BE869EC2BCF4F84 +:10651000F0B0FC6B22B802F2B89CFE09BB67B9E38D +:10652000E5C5ACD7088E21BD166D370D8F0BB29E19 +:10653000B5939E875E35E89919135CCC7668BCD01C +:10654000E0CF10DE21FDA04F52477A62A70D63FF16 +:10655000E55E03BFF0078E09F64F42F909472D2289 +:1065600040437D296EE05EE89910E15B213BF39AA0 +:10657000FE3E670ED1E9D1EBBDA9A82F2C5F59D003 +:10658000EFCBF98AE846E5DB8E0E71F23E5A97F7BB +:10659000AEF82D5A6FF49AA6EB8D816220F4C638BE +:1065A0008BD30D3F48DB1B1637FCAAF7C727AABCC5 +:1065B000AEE8FBA431A2E0FED1945F7AD426028239 +:1065C000FD19D21F992ECF4D0D7D72B5286FC2795E +:1065D0005099C7110EC2C64A57852B42EFC5BAE281 +:1065E000842B621CF185292638C1DDD3543E6944D1 +:1065F0008E293FD9D3CF94DF6DC260139C567E9510 +:10660000A97C8F8A12139CE1BDCE543E73D1141322 +:106610007C856FB6A97CEFBAF9A6FC6CFF1253FE1D +:106620008BA23C097E25E1F7BC56381C7A4FFEE56B +:106630006E5C692A47050EE3FC3A93143EE428BFDA +:10664000F90E53BBC225FD347EFA0FFC352EDDEC6E +:10665000B7C914A303E09BF4C6182D6634D1411BBF +:106660007B18CB50A966F6DF643A3F3C097D94194C +:10667000B59E44D3BF12F48FFF16F4F7F6EB9CFEE1 +:10668000B582CF713BFC3592FEE389FED0573827A7 +:10669000899C27CE4922F18273924818E72491E51C +:1066A000714E12998F7391C8FC2147CDF41F76C2A9 +:1066B0004CFF2BDF2E89A24398E5E7454D113B3A6D +:1066C000A1DBC890993F846533D3CD58D7477D3837 +:1066D000A553BA55D07FFF1D74BB378A6E17C4E629 +:1066E00061C539D0E3A4DF2D5DFBD19A93E5BEFAF5 +:1066F00009E879D2235FC47EDD023DE322FB4664D4 +:1067000009715B1CC1433BF48EBFC4C77E0FBFDD64 +:10671000A135BA991F98DE75271302D8E77CA186A8 +:1067200012B0AE9C529B15A4FE2BBD8F423FCD2BC9 +:10673000F229D8EFA72D5DAFC01EFEF48AF0A9EFB5 +:10674000A19DDB13A43E2F927C53D5D883D7B77677 +:106750003D9E29E3A45AA7E9E7E86E192FF5CC344A +:10676000E9274B706B76F6D715090FFC74B4DDCCB6 +:10677000AAA27C478A77BFD4ABA3B7DF0D7F2021C5 +:10678000316668047FAEB1327FD6593DEA19D8CC64 +:106790002FDB380E6955BEDB1B84DF47C972C3EFA0 +:1067A00063B10B69C76E8DE5F3B2558ABB07E2761C +:1067B0002C89D23F8F388DE46F38D79EBFD11CA76C +:1067C00031EA0731BE00FB0D63D8FE1E756FDF5D39 +:1067D0009688F9D6D865BBD1EDFC3379EC1F309F94 +:1067E000F6F3E2452A8FF7D2F3E2D7785F12A6BC20 +:1067F0005D5867AC725FB2234F13F2BC3818DB07E9 +:10680000F9F7A97C2E6F9C17EFA87519E7C57E3E96 +:106810002FFEBE3C4F3E6793F9FE5B0AF4F351D95D +:106820007FAF456A0BE8D467BB30D9493BACD2BFD8 +:10683000B603E7C88320D70E618DE0E71D429E3383 +:106840000B6B2016FE90FE8F69A6FC01ADE9A6F643 +:1068500006ED7799F28B8385A6FC2147DD26386407 +:106860000B3F5540E3F3FFC42276BB21F7234CF5E1 +:10687000AF7CDB638247862698EA274DCF91FE10D6 +:1068800057F8B327981F7B735CD2A80FCB4DE53226 +:10689000AD27D8DECC4A97FB1DDA1F316CAF21DD66 +:1068A0004878EEE590FE845ED85F65407EBD8C370B +:1068B0006B9E84299FF74B6AA1393FB950B647FBBD +:1068C000250FE427F546178F274F8466719C863580 +:1068D000D4177643558CF0C97379C1FBC69D777484 +:1068E0006F89949BB4E9723F9C4A861FE464B74366 +:1068F000C6B308ABFBED97505E71E5201ECF287F35 +:10690000C574295FAF5CE7C99CCEF534AEBFD31E1A +:106910007E07EB78D520D95FA5AACE9B5C24E3F354 +:106920009E8EE0FB42BDBE63A64C8D715725C9F11A +:1069300089EFD9F5383F3FEF3377C68964F0E3DC60 +:10694000CDAD77F7A1A295F6661B3B9344C0067BBD +:106950007E5209D9ADC5F0DBA63FEE24FCECACB30A +:10696000EAFEB51F2F21CB96F60D61C69FD347B423 +:106970001E093B57FA97A3E5E6C119161EC7F5D3C2 +:10698000A57E1B6739C0746AAB93FBEC36116C6053 +:106990007D40FB6AF865AE10D2CF135723DB15C8D4 +:1069A000A7F23687B4FF68A83C9FBC3A3BEB29F8B6 +:1069B000A5AD36E997460ABFB4355FFAA501C32FE6 +:1069C0008D147E697C479C0860C48900469C0860E1 +:1069D000C48720457C08BE1BF837E83D69ADA49FFD +:1069E0006B85AD7C17CD73922A262811E7424FCED6 +:1069F000D0E349F479A21CF4CC38CBCB793CBF541A +:106A00004D95F37525417F19E5A3F1F57F6B3E990F +:106A1000D620E335CB21FD095758BDAC57ECC4EF68 +:106A2000CCFF7A7E864FF23FD181E5C7A919FE8758 +:106A3000C39C6FF792FD9CACEBA108FF4AA690F2B5 +:106A4000960C5B09E750BA3CE5E4CB3841831F6DF7 +:106A5000517214C85339BE604382C4AF8187C77472 +:106A6000F999AAF335D90389C5C3B955FE1B67F94E +:106A7000AA1AEDDF9420FD7B37DDEE38027BE0A61D +:106A80000C8BF093CC8FF16876F8B5E6932A6D8184 +:106A90007F28368BE1D05811563269BDF29BD7F969 +:106AA0009B612F2A6C27F379FC0284BE11BF2DD87D +:106AB0001855CEF901DB033745D903371BE7769725 +:106AC000F10B6C9FAEDB0983C42079DEE65C8B732F +:106AD000CC0B01DAB76547C887EE076D0B3C23E1A5 +:106AE0003582FD4AD1F68301BB708E16716E4378F4 +:106AF0008D2BC4BAD16475E7BB2EE53303AF443F99 +:106B00008E6B68F34BFF9F11C7F109E238A8DE27AF +:106B1000FEF36718DE17EB86F0FDADF8C440D8D55C +:106B2000467C89717E97E715FE24B4F3582CB7D3C1 +:106B3000B686180DE37E2C3E80789690FF99EE9DE8 +:106B4000ED83BC21F3F95F74BA66A237383D0DE7D7 +:106B50005AB619C0C3C74E55039EEE721EEAEE71B7 +:106B60007EAB73AE23D323FC2993689DB4A444EC7D +:106B70003BF5732EB2B7F5F34B0BDB536DFEF312FF +:106B8000FFAB05FBED6E24C3127AF24D415A12FEA3 +:106B90001345E37DFDB73D1F9B7AB1589E1F5F1CD7 +:106BA000C5F3F76E1CC970416FBF1A077D3D477171 +:106BB000EFA664E623625D9C0B715B3387017FEF78 +:106BC000EB742BD0D79F687C4DD7F5CACA1986BE07 +:106BD00075B29CAF6C5078BFB0123604E0BB15B6EE +:106BE000BF0CF87CB30E8F93F0AA7512A6BF2AECE7 +:106BF0003FE68B4437E27CF6E87E1BCC1329E6099E +:106C00007FC25EDDAF837922C53CF11DFA0930F405 +:106C10001360E827C0D04F48A19FF0BD469467E1BC +:106C20000016E7776511F286F3BBB208F9C1F95D8A +:106C3000248CF3BBC8F238BF8BCCC7F95D643ECE61 +:106C4000EF22619CDF4596C7F95D242C465CDB0191 +:106C5000E35CC633D9044FA5FD455984BCE3FC2E43 +:106C6000B27D9CDF99DAF3AE30D59F43166564FDA3 +:106C70005C5F83A9FCBC3AC574BE476A89D7E70547 +:106C8000DBBB31BF9CB9A63C6706ECFB99E15F8793 +:106C9000A4FE60FFC8CA65716E49EFE60992FE2A3C +:106CA000C7193F6473F500FCD0718B90F49671CED8 +:106CB000D17C84F3A9329B3C27438A7332A43827C2 +:106CC000438A73B2B27C794E8614E764F88E7332CD +:106CD000A43827438A7332A43827438A7332A438EE +:106CE00027433D9C9321C53919BEE39C0C29CEC98D +:106CF000F0FD148DA32642CFC1DECD33ED5B890FAD +:106D00004DFB56CD04C39E8D2C0F7B36321FF66C87 +:106D1000643EECD94818F66B6479D8AF91F04DD346 +:106D20005D2C6FB06323EBC15E8D840734FB5F8401 +:106D30004FEE86074F1D465A9054FDB4422A62C159 +:106D40005B0396E2FCB220BE7A7032E97C9B32642F +:106D50006919A902AF1EDF38508455E8172F36A7EE +:106D600044376F50F0BE60C097199C5F71836EA767 +:106D7000E08FE83EE0B0C6FAD7386F37EA17E3A8ED +:106D800030B7A37C07DC79B9E8FE8D721C7315312E +:106D90008EDED83C51BFBD5F72051A899FF6A80AE6 +:106DA000C7A3EC592BE3A5FBEFF5A8B1945FB14F56 +:106DB000E3383A217C83A197EF9F21D777A33CB595 +:106DC0005882761E9DE7D2FDDB723E370CCDDE8504 +:106DD000F9D4CF90FAB9E206C1F8263DE1413CC7AB +:106DE00077FE11B4245139AF7FF250B43FC9AEDB06 +:106DF000D9C27715F6A9FDFD8A6757047FDFA5B7CD +:106E0000D37FAFE0FB258F3E5425EBC5B5D7FBE71D +:106E100039FA5E3D22DB8D7895D17B85A705F70099 +:106E2000F4F18E0EB71E827EAE6E92FD19ED563FC6 +:106E3000986577393BF0542D7C7720BE5C0C550467 +:106E4000F47801E647708F4A9702FB6839BAA2745A +:106E500063A1BF1CF8FDDA26EBD91D1EB6A796EF7D +:106E60009F2CA0EFBF3334791CE214C501E12671D9 +:106E700010D70F7DB554CE77EC30894F42D370B424 +:106E80002FD838F6FA57A89817A1C9D78DF8E97AFC +:106E9000828147AF57F8B28B118C53CD782EAC144A +:106EA0000AE254FA56B6A8A954AFBFF7A08A7E07E3 +:106EB00034873835E6E11E9D6C013CD91A9C86F179 +:106EC0004F76DB586FD07ACF764B5B938DF7ADD191 +:106ED000F19F79C27D23E26A56AEB3894D02713FBC +:106EE00017CF20CE6DE52FCC768477BBC27AAC76F7 +:106EF000C59BC3D59C8E389F8FB2037B92092F1FF1 +:106F0000E53C9538429176C00CC4B537493BA27A2E +:106F1000DD8B7C1FE37CD32FECF06B18E73E353A1A +:106F20001E449187E3C3AA33A45F4F580E703CD927 +:106F300005AF93E3F0DE23BDE2E9C3FA92CB9DDF18 +:106F40006F977124CDD2DE33FC46D5C7653C52B471 +:106F50001DB8B8C9566DA7FDF5E2283B70E965EC90 +:106F6000BFB767E8FE5DB770C3FE7B2FEA5C68FEC3 +:106F7000E5CF854ECF88F0ABBB44703AAFDFBE7C27 +:106F80001574A83E6E61B9696B75F17D22C3AEA917 +:106F90006C28653914BF907C54D920CB553EE70945 +:106FA0002854E415DD7E99723193E9F1BA6EAF4C45 +:106FB00047BC2AD1635228568F7BCBE074E6451933 +:106FC000BF3AC529F541E8D722B096EDA518E9DF0B +:106FD000392CF47858337F4EB606D454057CD5B09E +:106FE000368DE0EB61FF507B15B087BA81DF57BC6F +:106FF00088786BF148E7FC3E45E7C3293A1F7E13CA +:10700000BF2BC9117A4B8F27157B05DB55055671B0 +:10701000D846FBB7AA787D1FEF947EAD767B91C6EC +:1070200022F7BB5B9622AEB80AC1103D793A1EC466 +:10703000FB2514C9FCBC995B963659C1EF72DF9AE7 +:107040005527CF730D18FE08ECAFF2F47D6C7787EF +:10705000DC6FE5E8FB258D786303EFBF645C386D7A +:10706000CB5C0DECCF2867FAC4D182BF85FD152E0D +:107070009E572F9A17F2AFB0CAF3367B99D19F086B +:10708000761F1CE937A07D9645FA0BA05FE7AE5648 +:10709000B8FD051BF35BE43EA3A8C719FAFE6645DD +:1070A000496105ECC5BBF24D7179D1E902A213E447 +:1070B000B22A29748B4278F6CC149EB21142CC12BB +:1070C000069E4410F1A1B37578C9CCA73EDE58C422 +:1070D000F8D5F377FE2C48ED6F5CB396F59DDD5146 +:1070E000EEC1F627BEC8C3E77D5FDB84EEB7308F05 +:1070F000DFF04F2C9929E918EDA7585024D701A6A5 +:10710000CB50F8F5FEFAB3483FCC7B46DCB708F32A +:107110003EE64753D2F57862B9BEEC58D28BFD36C5 +:107120007367AAFF47EF9D44DF37291E573E73263A +:10713000AFD3CD7C8E2D0AC30FECA6FEABEAED1CBF +:107140001769EC8F1F5A12C7F378E80E3BEF9B8C40 +:107150007D72A5FDC48B8EEC0E3CBC5BB7D506BD25 +:1071600047F49572BC44E1F5F7CD8AF21AF4135F47 +:10717000E4B6439F788B028A8BF0DB5393FBA2DE4D +:10718000B9E1E25B282DAC90ED4CCA91EB5E6F8BC0 +:10719000388CD0F09D577A96CE441C50857739DADA +:1071A000597020FB48A60BEB51B21D74AAEAA1DF6F +:1071B0009B15613EFF33F0DC3053EA99ABC0108879 +:1071C000F3D3EF830A5D0E66D5690AFC379942FA5C +:1071D000DD320A35057E868699725DB58B37243F90 +:1071E000A74BFF82E1BF5375FF9D819F4D85F379CA +:1071F000BE3662784B72049FDBB523EC374DB0BBD3 +:107200006097543B0BC6F720B8BA594951A86A8D0C +:1072100053DE33A9D996BB0BF1264FCF34F67B450D +:10722000F60CAC4B77291AD6AD4929AE99B86F1038 +:10723000FE9D8DEFA1CE5F7D309FE586F294E24BFF +:10724000E5A266FB48968B9A00A543BA969F935B8E +:107250007E9536127C17F4709C6F8DE6B147DEC7C1 +:107260005AD0AC301F47C3BB664AFF59A5386AC322 +:10727000382AF35C0ACE2F9FD6F960EEEA6CFB7CCD +:10728000F805A9657530D353E2618BA2E17E0FFA50 +:10729000191CD1EE7CB41BD1AF41FFBD3313B8BD77 +:1072A000F9CDC97605EB9EA6F1F868FE36F687E4BF +:1072B000C9F94F4A71DB9D687F31B54F289CAD05F8 +:1072C000C7217F76914B34103DE63715F3798077EF +:1072D000B3ECC7BB31D93E00EBB555B35F41706528 +:1072E0009C943B1A1FDB8F35848F14A7BCEF87B5A6 +:1072F000241A2FD5FA786B685C3799BE6FB181AFCD +:1073000067E9FBFDF94D93B3EEA771D5F807A4A08B +:10731000FD1AAB9CF749DD1FEAD5F15999D23CEE35 +:1073200076C8CBC2E4E44657477BC775F93F09BC32 +:10733000A675E06596D66C433BED78BD4FCEFB2637 +:107340002D98CFFE27879C773B3F6C93FDD46CAB89 +:10735000B61751BAD05A9E753F955BE83FDE0BF1E8 +:107360002A2781E7341EC7BA0C1E87A2611C42F38C +:10737000F23DD10FEE9B99C5F3DA76BF4DF0BC5EBE +:10738000E5F3FE9ACD0AAF9F065F18F7D78D7EC34F +:10739000339DDC6E589727637D88AB93FEB89ACDFA +:1073A000AF32BC80E40BEBA25D1C66BF2BCEC91BC9 +:1073B0008B3BFC77196EC3EFEA653ACDCA93719A9D +:1073C00086FCEDB4851643DE166C96F6A9A10F680F +:1073D0007DF43DDDC9FA515821C7335BA753A52A77 +:1073E000F58C91DFA342B74F72CCF7A8D11EDAB566 +:1073F00019F925C1FC15451DE58D7E2B53643DD043 +:107400000BFC63D3FB43F9955C5E35F97556DE2DB5 +:10741000FD3A2BEF7E781DEC81954F296C8F7EBC59 +:10742000F2D93FCCA0F4235B607946C47DD59BC8DC +:107430002E817C2FD4D7BF9A60E772BEE2466F6A76 +:10744000C5B0083EB8F7E705D0971F3F718CF5C768 +:10745000C904A9AF668BD637AFCAEE18FFFC8D2DD5 +:107460001B7352B1CE250F867DD37EAE51E85241BB +:10747000B7427DBE0B9A24FD04D12F3F19FB8F6AC2 +:10748000E1815E4A77BBB19E67EAF64586C3F0DFCD +:107490004AFA39F324FDBBA25F654EB3491EA3E748 +:1074A000555C21E5676885948BD93AFFC58A00E36E +:1074B0006FFEC6E2E158BF66B57F6F1E17F9BDDDEE +:1074C0009FB6D926FD699BF3D7A7B37D2AF1BED419 +:1074D000D23AF0361AFFC7B5BB9767F07DDA40168F +:1074E000D6F59B74FFD842DD3EBC99F0DE999F90A3 +:1074F000F05E5A11E147BFF92189F7CA9CD6BF3F18 +:107500008F79AD88E173B68FF70E61BFEE1C45F839 +:10751000B0EF99DDBAC59609BD55939D8C65765A35 +:1075200045B6F97EA1AF58839F779A31EF28FE3593 +:10753000F029AC520FECB4493F773B9C2261A3DEAB +:107540002CE1E9013D20FCBD04D6FD8E7E9253B4B2 +:1075500081B4C6E97C6AE81D23FFEC8AEA1F225E3B +:10756000E96CACE4EF5A6A0FE73E67C7BAB3C0DF15 +:10757000867D275283CC6755BD69FF0C798EF7BA9B +:10758000308ECC78570AE4FB369D8FF2F25CFDF02A +:107590003D5125FB18E75CC40B230683EF887683F7 +:1075A000BB5EBF7E1CD7DAD7F70DF6615E6DE833A0 +:1075B0008C13EC86769026100E1ED2ED0C9C137464 +:1075C0001FDC61A746EBA74BD77F79FEA0D648FB0F +:1075D000D668279AAF37154E917CACE381E61D90B3 +:1075E000713E72DE346E8E43FD718A84B7E9FC7C95 +:1075F00036DB5382FB53E1910E0DEF2CEC525D2BE9 +:1076000039FE97F611B0C745A1E7901DF6D9F78A64 +:10761000347E2721CFC3F67755A6C6F735CE364838 +:107620007BFDEC2CA93FFFD3799ECD96F21DCE10A9 +:107630001ACE872FA78767D5549BEC1D51181A8641 +:1076400073DB76B96AD6EFDD340FE1FB246DD87BAE +:10765000627C2B6239DEED6CB6E1D7F024627D3CB2 +:10766000E51F908C73C76FEBAF7EBE42AE8F9571F6 +:10767000C63B1244036AE7545D37F6CF18DF8D75B9 +:10768000FC94164A4889D0CFB5229400791375B975 +:10769000FC3ECBA9E6B3092AF3B11C9F517EB54D40 +:1076A000DA0722C1CEE7DD73574FB6E33ED3DCBA2B +:1076B000D76D0AA52FEA7CDC3BB7D5D32395ED3DEA +:1076C0000D765A63823B9DEF4125BBD323ED87782E +:1076D000E70CF6CB9CCD0EE6E13C225C1CEB865D14 +:1076E00074CA39633CD6DF53DB93DD90FFD58AFB48 +:1076F000541DE8BF2E86F787B5AD07F3781F992E86 +:1077000054E88BB3D9AD9FFF09FCB22EDE8DFE2667 +:10771000A962239FFFDDE8BD11FAA7B745F763E92A +:10772000F7F4FAA151C4FD55487BB8B7DDC3F7A4FF +:10773000C2BFB3B09E35CE5D56B6584CFE939B7E0D +:1077400027CF5D6E6AC9FDA3843978A7FD7E578770 +:10775000DD29CF7B6E82BF24623D5ABFADB43BEEC4 +:1077600045D56C19F723DC93CDC2BB2D4EDCEBF570 +:10777000F07DDF0F5BFA243744E8F97703317CFEB4 +:10778000F661CBB3C787537F7FDF9FC6F7A0845FC7 +:10779000E57DC846572AEF8F3ED3E96FF8A9ACAB19 +:1077A000ABFDC2D5E1A7AA69D9C0F7AC6A96351678 +:1077B00020FDB02596EF5B956993CB9261FF3C2845 +:1077C000EFD1BE5B2BFD0E4B5ECDDF8575CB364B0F +:1077D000CA63EDD72FECC479D24DD9FA3DA8D6783B +:1077E0008E5FABADDF9F6551F93EB098354CDE7FC3 +:1077F000821DBD64474B96E0F2AE4EFDD746FA417E +:10780000BDBCF7B2ECCEB7B99DBFA92FDF308BEA74 +:10781000D72E7B2611ED2CBDEFF5E19ACAFE25E7A8 +:10782000ACB488FB5DDBE5FDAE8FA2CE9796747D90 +:10783000BE94322BE27C297A1CC9FA7EA387BE3F14 +:107840009A94523E6396E407E6A7AEC6BF68BF624D +:107850003AD79B1B48B22356C71B1476BCFFE3D50F +:1078600004DBCB1F5A441D9F6BE97690F1BDDF2CE2 +:10787000D9EF8749CD59E0CFC57BEECF823C9C4BF9 +:1078800090B0F791976EBA83C6E1DDA6E22685F047 +:107890005A05DFA75EE0977677F43DC0A1B3E2B961 +:1078A000BDC551F7BB04A2CFE8FB39FD1D03DCEFDA +:1078B00082BDF6AE357813F8E85D5FACDBCFF496A9 +:1078C000EBE9BBCD16BE6FE95FADF03B25EF363F70 +:1078D0009380FBE564F7B19E15BF92F14009435BCD +:1078E0008338B75DB68FEC2321FD16E06FEFBEEC59 +:1078F000FBE7A4E23EB68DB7C9B5D6A0BD333E586E +:10790000A2DB6DEDF0BEA7ECB0AF6BF76E91EFC9E7 +:10791000EC93EFC92CDD7BD00EFDB47C7FF170BE03 +:1079200053A3975FBE4FE2215684EC91EF23551786 +:10793000A6ACCF241D3DF39DE796DE47E5AB41277E +:10794000F839FCCFF53F88981E6B98EDF9E8F1AC5B +:107950009A29F47DEC6BBC9F5ED624DB5F56F8DA87 +:10796000FA1C9E67B14D89E0878A59F2BD9655335E +:10797000E53D60C203D76B8F035B6B158D43F93E0A +:107980001CDF8FABF3C7F0BB0A3B16DFCAF7E7D2A9 +:10799000621C7CAFD891E25D348BFD0FF29E1CA57A +:1079A000839076127F55013FA9117FD568C41F6D62 +:1079B00091EF4419F1578D09D2AFF2DF187F752787 +:1079C000C61F5CF6FBFE3C1E0BD92F641A7A968FFD +:1079D0007EFB08CD33D8E84430AC78D077E863C478 +:1079E0000D791A925C98F74F848C83BB5A8F7FF382 +:1079F0005FE9BD0B729A8EF8065674410574FAF46D +:107A0000D77F1D02BC222E0E7260538ED49691BE7B +:107A1000DD324B3F5F290A0D01BED20E19EFB79C34 +:107A200060BBC296EE4A813D10D4CF51FD5FCAB80B +:107A3000B0034AF0616E5FB3DC8278B613EAC0C16E +:107A400058778FEAF278F49AF207300EE1B2E4A3A5 +:107A5000DD4F6D27B3D19E9FC4CB9249F640CF1125 +:107A6000DB41BFB18DC44CA3C90E52D204EE63FFFB +:107A700040A861C4055CA1E7BF4FF41523A8885D49 +:107A80001325D4FFE843A295E3EF8BE6BB9AB93CFC +:107A90002DE3F07FD76941C4FB8995896ED833996E +:107AA00096CF5EC0797DE66D8A1B6B4B55DB078BED +:107AB000819F535FEE8D85BFFFB7577A9F04BE7BD2 +:107AC0005A3C677037F5075A30F71E2AFF83BA7899 +:107AD00077834BAEFF8EEE7CDB9FFF0EDCFE656294 +:107AE0001AE20AC305D627A9DCA71E871B7EC2534C +:107AF00077F43F8C779A46AB220CBFBB708CF3981F +:107B0000EEB911A91CC33BDA896DEED35E9FEDAED1 +:107B100022D7E151A9FA3D38F7A5F54B443811F7C2 +:107B2000633F0D5F4C845E2B39F0C2DB0AD93D25E3 +:107B30000E6710F118C261FBA4DD1F8FFE4E5C9131 +:107B40000CFF3BCB38E1B97BA3A4E79824F37EFA82 +:107B50009D59D21E7F47A797D5E5667C233E1C74AE +:107B600074098231CEF67B27AE57BC04FF89D66FED +:107B70009C77B41DC8E577B8BA928BD7617F915DC9 +:107B8000E5B9D6F3CE2CF6978DE6F6FC446FCB180C +:107B90008E57617A2BAA1A869D4EF463FA1AF7FF64 +:107BA000AEFE4AD273AE2FD10DBC12FD06DC23D837 +:107BB0001FF6935714A6DF07E0AF1D17C9CA54215B +:107BC000AFE3B3BD45FFFFD0ED8BD8C43DC05747F1 +:107BD0009C2CC1A9DF264EB63CAE4F36EBC5F8D97A +:107BE000C3605A855F54B3A1177CAC17FE07E9C583 +:107BF0006C8CBF3D2ED5D9D53B469DC7A536222ED0 +:107C0000B598DF31F2639D0DDF9EA0BF63449845B8 +:107C1000FE1A971BFC3C4A3FE70DDF1E6F8E4BBDE3 +:107C20003DD7884BE5B8D546BF8C1F0EA952BF4241 +:107C30007DB15EF309197F28DC8E7E04FF44114F6D +:107C4000239EC4984763FB3B476E07FCCA865C0AC9 +:107C5000ABF81CF75AAA1ECAE573BCD8E698CF9FAA +:107C6000005FF907715CE8B5B3A57CFE606D8250DA +:107C7000923AF8928F6A484FF52C8A3BA310E97B21 +:107C80003A557EAF4C2C2AF344F255D36CB91EFF03 +:107C90004A117E07E63359C6496E9BECC9C039EFDD +:107CA000B6C9DD55D8A1BFFC7AD5E9EF63FEC76D33 +:107CB000EC4FD8562CE7B5EDD7B96CA79E52030F01 +:107CC0002C44FD194E8EA7FE91E27D1CF6A925FDE0 +:107CD000F5ED3544871D6AB303F8D896A0166C1FDE +:107CE0008A761DECFFD8962DF1B86D7111B7D34E81 +:107CF000C7CD095DC4174B7F7F78B1AABF47154E2A +:107D0000841D4AF4D3F1154E04FE46E9FB918EF72B +:107D1000A6A85CC4F9D6A7BA9DF6A9FEDE54FBF767 +:107D2000763AC8762EF7FD8DE1DE55B3D33AF2B739 +:107D3000257B326077C6363F5BF8B6947F17E87CC8 +:107D40005F43F1468E0B4E50B5DDE2523ADD377D92 +:107D5000CFC15D941F5FEA607D26FC2D0741F77857 +:107D60008B9BF507F0B91BF86D90FBB3683A86F46E +:107D7000B877D18BF6C711E333FC34BDFD671E1015 +:107D8000ACB7427DB1DE1AEF0E9CB29D64B9F0E74C +:107D9000CA75F70B5DEFBA1411C6A5F52B84D4BBD9 +:107DA000B1415A574742CF64F96F2338B422D1AD5D +:107DB000F4FC4FF48C94835E5405F76749DF3C0074 +:107DC0007C5954777A0CDB1FF2FEFBA5FAC6352BE3 +:107DD00052DF6CED42DF6CFDEFD7374F42DFAC1A5C +:107DE000E1DD379BED490FDF4FE8D928D74503DEAA +:107DF0006197EBA251EFB4FE9E68A108DBC0AFF320 +:107E000048CF77237D7F7CB65C67C59A287DAFF32A +:107E10004795CE1FB1CD5FFC19723F8FEC3AF453FA +:107E2000B526E60CD68BAA353629D775E33C51F535 +:107E3000799D33EA8BF2332FDE86FA63E5FA346FED +:107E4000F13FD3B0EE74593FD42B19719AC6FDFAA5 +:107E50002949E5AF806E679470829B3EBEFC2F0B74 +:107E60009F6FE559537662BE2B1BF2548CEBE5E213 +:107E70001E0C57D90B53C0C77F9C2DF7B7CF699EF7 +:107E8000B7185F5FBDD00BF666EC95E5EF00BE2B33 +:107E9000AF8DCFE9E689D015580F4FCDFAE80A8C9F +:107EA0006B5EDD4BBC1ECE33D6C3CBE3278DEFD14B +:107EB0002E6E6BC793F2FF004FA505C4D145AC27CA +:107EC00012707E915FF11B27C675BA686A12C36291 +:107ED000BFB3B37DD1E97AB708923DB4363E51E2E3 +:107EE000C31AB6613F37EFE2701124BE2D4D34B78F +:107EF000EBBD3854048774B4DB15DF9FA9C7039327 +:107F0000186DC0E4DF1DBF4169055EAF6B1FAFC7D1 +:107F1000017B2DBF628C03E36D724EF946FBED745D +:107F2000FD086E377ABC463FF32E8EE1F1792F8E35 +:107F300096E3EF77EDA17DA96857657FDDE5DA5F10 +:107F40005F5FC8F8881EB7BDDDFFE067BEEAC0B757 +:107F5000D7013C58B5F2B57F815D9FAAF23DD04C68 +:107F60008F774236F4CA1B168E43EAAABFBBEB35A5 +:107F7000EE6F7DBD8BE7553C47FA7BD6C69FE27816 +:107F8000FB446AC392DD319E848BDD795E89175391 +:107F9000799E9965725C6BE39F50AA23E831618EEC +:107FA0002EDF6484060DBE61BD1727828591708A1D +:107FB00009EE49FF018669F16FB62F72A2CAF78BED +:107FC0006A6F70141CD0FBBD2AAA5E8909CE9C6022 +:107FD0008C7B39EBC198744D89D483C63B4A467B70 +:107FE000F68B053CDF988B799C1A74C0DFE6EEB8FF +:107FF000F7CB43152F245CE307DE8E29C2D78DD241 +:10800000643D7ECFEA56785DC05FF3707E1D8DEFD4 +:10801000E55B9D8126E43751F9AD5AC47B4EA2D56C +:108020005A4DDFAF9F10CB7EE88E7BDA32EE788A36 +:1080300070733A4D94733A43F838FDB421341C42BE +:108040007954F3DE3C6718EED97A1FC2BB7BB7C602 +:10805000E9F7B6BB78DFA963DEFE4EEF27F09B4958 +:108060001972FCFEEE1DE3C79F73B83E7FC1FDDFB2 +:10807000AADF17BF6D4E9AA9FF2AB9EFB6BA743DB1 +:10808000E2FF77AE0996748273796427DF2F81BF90 +:10809000EA6386E5B8F3EB6E140AE16D7D2FC171DA +:1080A0007C56CDE3CFA62637921C44FA77A2D3465E +:1080B000E88B3E11F3D5E52D46B76337380B5A10E0 +:1080C0003F903F690CDBA9423474CADF1B2E23DFCB +:1080D00097F463750BF8DDAC4EB5833FE97FF9D3B8 +:1080E000AA923AD397976BC718F725ED1DAE4CC2ED +:1080F000FAFBC49CCEEF9F5C4E4E0FBAA6F07BD32A +:10810000EB7A493D56202A1C39B0FBD3558E635972 +:10811000DF6B3EEBA1F5E953BEF1DE73B3AE9737EB +:10812000D73B38BD0BFA87D20D65228075C6326EFB +:108130009A2344F5D7018F946E299BC6FA39394D9D +:10814000D5E389DE1F003FDB0697CF11E9F78B1ED1 +:10815000FF056B795264FE865455373A43CB507F06 +:108160007D7A0ADB7F1770013559CE6F23F844D72B +:10817000D3D1E34EF698F199E08EEBE80FD8CA4BD5 +:1081800031E56FD4F900EFAB7746C70E3D7539FD89 +:1081900028F95A4994EF853FF980D0F588F7D052F5 +:1081A00082FB8E88617B6B9C650DFBCF9F7CC3A29D +:1081B000E7CBB848B72E974FE6B96BA067FA3E25D4 +:1081C000DF3D7972AFB02CC5FA906E1149E9A0A7D6 +:1081D000BCC752A8CBB931CE417B05BF6F3D2868E3 +:1081E00037CD779C166382FB8A887CE60F33FC6D63 +:1081F000EFC37F3D478F97BC525C093CEC898A975F +:108200002C30E225034379BCA5770655C41D47DF12 +:108210008F31E4744FBD4341FDA2E0EDAA6B00E253 +:10822000C97D2AEE91F411BE431C1FB95DC8FBB095 +:108230007A7B2EA75760DFB2F7C19C5D38A779B46F +:10824000F5509CEA84FFE595B8FEF4FDD13772073E +:108250006F12117A20906AD2AB8FEB7CBEB755CAF1 +:10826000C3E30FCAFB4E8F5B9BE33A7B8F397ABD2A +:10827000EFF7886AC26F74FB5DE9EDCD42D2EFD4AF +:108280009CF2824A8CCBDFAA82FFDAF1E59E62A2E1 +:108290006FFF4AFD5C74B5D0DFF57396A8DFC25E50 +:1082A00031F4D006C833A5AE39DEE1E8D7AAF91516 +:1082B000CCDB3AC1775001FDF57BDDFCF414E1B96C +:1082C00014F77BA13FD244007A756CE27341DCE382 +:1082D0006A227E84DFD2E0F7C67C9DDF2D959C7FED +:1082E00081F81DF6B5CD5F21E05F6DF43A7DEC8736 +:1082F0002B92F1B738CCE0FDBD9356D36FE0B7D8E1 +:10830000A8F8DD1E5EABE99EB8ED32F7BEA754EAD1 +:10831000F7B974FE6C7F3FD1FDCDEF27D6CE11FAB1 +:108320007DEAFF6C1DBE9C5D7D1D70D3493BA7EBB4 +:108330003D9DDAA9BB96799754B29D3A5EB753CB6F +:10834000D89EDB9020DFC93A063F11C7E1CB73F816 +:10835000896E19079489D7F3610F7A649C4926FCCA +:10836000EB545E5B24E1890E593F7D9A8C6B9DA88E +:10837000C7FFA57B3586EF58EEBDA312F30E3CC3B5 +:10838000ED3C7CA76C776291C2E3C3FAD4D9FBB908 +:108390001DF3917C16D2D78DD3D9AD95F0739CD9AE +:1083A000F05BEBFC08FEDC5429FD42131D89F21C36 +:1083B000AB70D865F0ACCB6F611ACB05DEA773A6A6 +:1083C000744D0FA3DCE5E866D8712487F7B31C8AE7 +:1083D000A74D72185DEF5FAB4B7E8C725BE27FA3A3 +:1083E0007880F75AE106DFDF1FFF9BC31C673D2043 +:1083F000C605790C353CCB781D3844C605B8848C4D +:1084000033C81E21E34E0E0E78F6E44A824FFFDA9F +:10841000CEEF469CD6CB3F01876D71243F919540AE +:10842000F83BF8FC6CDE375434C8788263FEB33F07 +:10843000FD19E4CCCBAF268981FE151CE737D0238C +:10844000EF579FDEEFE7FEBCA524689942BCB2E679 +:108450005E6EFFD822F9BED646EC5F62F44567B87F +:10846000DC5AC20FEDB0BAF6C34FEBC8136E3FBE75 +:10847000391C0E6B447CB8E3E240DDAEA6D2DD3998 +:10848000FE5948BF8DE4A37E0BE4FC622F1671B940 +:10849000FE99EE7E237399AF0E83AFB207587E3FED +:1084A00098DA29D82E989F4A1347F27A37D1AFB875 +:1084B00060BB8EF57FF6620AC6ED4FE2775EBC6B5D +:1084C0008AF360277A8B1417361BDEA2338730AF0E +:1084D00079FB055E8215656B26AB88DB3BA6E32541 +:1084E000DD1DE2F3C9744DE2E1585F099FBE42BE53 +:1084F0002BD7B14F95783DE62F3D749BB42FCAB171 +:10850000081B7A35B446AECFE91E49B7F409D45EEC +:1085100031F84E97974532EEF55E7DFDD8A8EBD544 +:10852000D09A674EC22F7B41587D686FA3AB2D0553 +:10853000712C458A83FDF4681FF18246FBC7A017A2 +:10854000E0DFBA4BFA8537EAEDDDD7DEDEBD1E8C03 +:10855000E742B9341150DF1A313ED525EB9F5C2D2F +:10856000DF3D4A170D0AFC66CFEB72D8AACBE11E9D +:108570007DFF185AF3F00F06A2BD5695DB233A7023 +:10858000FD6EFE183EEF2F3EEC5522DF8532DAD924 +:10859000A38F67E6A7FEB589588715D11A43BC1C7F +:1085A0007A20B416EBB20BC11B57613EFE0DF19859 +:1085B0008F62F5218E6AA3DEEF4CFF86B5D8A31635 +:1085C0000F161824FE76C60EE5F7EEF9776FEA4827 +:1085D0001E314F1194F1FF1BE157C553EDF0AB92E3 +:1085E000DEFBD5DFD673BF3F1D265CC0E3465BC014 +:1085F00006FFAFBF21D685770C46FDFD31BE97D073 +:108600008FD62348C44FFFFEFC8EC5849BFE3BF6ED +:10861000FFF4716A6FD8DC1C96F7E2BCE0B03A1741 +:10862000CE21FCE9F3A97CE56FD399CF8FE9FEAFAA +:1086300068792F9C2BF55481C588AB6EDD8C791C35 +:1086400013FEE7306EE3FBEC22CB195B22E7F7AABF +:1086500088B0238F9D133DB7244596FBE3F7E0EFE9 +:10866000C1BB6889BCFFDC148B76DC735D26BB6202 +:1086700076D14BB723BE2D6FD15709D0B74FDC3918 +:10868000F51BD777836F0CF8AEBC5D69A0E31FE3E1 +:108690005A6BCB3BA9377B510BE3CFBB3A3D471D10 +:1086A00021F90AEF2D9FD6EFD59E26B9809FEC4287 +:1086B0009185E3DC0725B61E64BFF70CA1EDE67BD0 +:1086C000FE4D2991F6F2599D4F0C39785EDF2F9CB3 +:1086D000AE4F6738FF706D8ECA72E1E477FAF764C7 +:1086E000DF3AF8104DF9D19C3BE61FA2661FCD5F23 +:1086F000B29276F2624FC1FA600F4A63FD5B06BF29 +:10870000233AD693B3C73D039F83DC3F1AC7F43A9D +:10871000A3F7F3F896FB731E101DE3F0AEB198ECCF +:10872000B1817D0C79276C127D4345439264DC6EE8 +:10873000BC691FF0C4F3B3F95D66A31DE3FED16904 +:108740009A07D25BE6E698E873FAFBB7E5437F85C4 +:10875000EA4F6C3F9C0F3C87581F1F7B4BC68B0C0E +:10876000144F3B11473950A4B7E23DDC6345AB647D +:108770001CF638A158641C22DF6709D56B0FC0DED8 +:10878000F8AECE9FED7CE77FD58373110CD19B7241 +:1087900029BE2FE153BF12B40D447AD003BE994FC6 +:1087A0001A741CF60D35F2770C7EA8F317F1DD6113 +:1087B000C4659D5C9BC5EF5B4C2C3A3800EB72C7DF +:1087C000BDA6D6939CAF6A9C3FBB68C321C0BF7E49 +:1087D000B6204725B95D3F57DAA183BAF03F37E9A4 +:1087E000F262F05DA1F0F1BC4599A66C86BD2E0E3B +:1087F000DF02FD59B8E20A05F6FABC358A5D198434 +:10880000F4E0008E13B4042F70F94645C08F5E4229 +:10881000E60CE2FCDE5998D0C2BF9755D3CCF17577 +:108820003FD4FBA98CD1E5D2DB3C0CFBE6A79779C2 +:10883000EE994BDF9F4834D3FDE8CA39BC4E9C2EDD +:1088400092FC1D2A3A7FFC4A82CFD758F89CE79DBC +:1088500092CF8E5F4DE39AB3CCC2EF2E46FB5FC042 +:10886000879E18C9774843FE87FF82FB0BE58A4342 +:10887000DE57DB78EFDFB04E4DFDBE227D30FA3E95 +:10888000C1B2E6A926EC932716F9AE403CD01E9D56 +:108890000E38F767FF894BEE3B1B6DEE74F8052E23 +:1088A000675F35E9726ED8F14DB1BE8AF24EE8B01D +:1088B000A15FECA2C8FB0AC775BA1D9F2BFD0A5623 +:1088C0004DB861975B7BA91C5F60D3CCFBE6E8F6F3 +:1088D0001CBDE24CF9DF769FF8C25CB31D4EE4E5A7 +:1088E000FEFD6F5ADCFA799388EF2E9FDB013DF88D +:1088F0007E159C248FAC15A0AB6197EF9E2BFD9548 +:108900005FDB3CBBE7A60116D28E9B53FE0AE0D28A +:10891000C46BF9BE92F1FB68A268B0898E6FE8F56E +:108920008D7D946B4EF95BE01751E611A043ED1C71 +:10893000239E2445FAD1F4F45BD891218C43849E84 +:108940005241C7AEECC8B3AB4BDE47BFD4FF0748BC +:10895000AD9E00CFD7B03FB68E90FBBAFC4903EF77 +:10896000CA25F89E3764DCC2E5F862BDBEDE1BEBAB +:10897000EE565DFF96DA5DB1E093ADA3A77CA33F11 +:108980007E7394BFCA69D514EC47921DDA58D83566 +:10899000B817C9F4B296FBBF20F88867F01ED81D3F +:1089A000DDAE6E2D9C41E56EA992F76112CACCFC3A +:1089B000545A32A504F6EB9637E47AD2ED6A194799 +:1089C000A60D55F95EE225FC1BB59EC59039857153 +:1089D000387A99F7DB5B86CA7DEF4B5ADB0BFFA633 +:1089E000F693870AC69B5616A641501AFC32087B9E +:1089F0004B1BA1BA6389AF12BFD34A262EFA0D07CB +:108A0000311F8DC887754911612E77779193CFD328 +:108A1000356B58B8A9BFA432BF07F70B8DB85136D4 +:108A200099C99E7D69C27B7C6F7FCB08AB0A7D12A2 +:108A300023E47C79BCD88F0F4DB9360FFC5DA8F2CA +:108A4000FB1E2F4F2871C0CFBF95E40D6D6C9DD0DC +:108A500076B499E09886A485E87700F0467C73CFD9 +:108A600008AB08B2DE3AC1FEB47B20970C87181E13 +:108A70005E25F9F387135E9B80F663FAAA2C2FAA72 +:108A800008F1BDB5A611EA04C8BD734D30087C34A9 +:108A90008F986F873E3B32E235C7075C5FF673778E +:108AA000D92EF6031EF3A4C4225E6FCB8495BC0FAF +:108AB000EFB08F5DB1806DC2C174DAE251390E76CC +:108AC0006B59890771703FC4EF54D03AFE434F4948 +:108AD000300FEB3A7E0F05F7E3BD156233F8B54C66 +:108AE000657BB474CCAE09C8B78C94E32C1D59E3F4 +:108AF000C7B9D7DD2EC178882932D3334E33FBEB8B +:108B0000ECA9667F9D65EC2E4FEE50E90FD49D6673 +:108B1000FCEE4C87BF22C0F9CD631DE1B5F03FA448 +:108B2000B68A1AEA2FD6785F36CA8FA724DECEEF30 +:108B3000A06C7D53AE0B76E161FADA4794F86BC016 +:108B40001F57C5684923A097A4DF2DAEC8EC5F73FB +:108B5000E499613BFC6911FE086B947FED3FD5EF12 +:108B6000861C37D9FC15329EDBC3E73CEB2D5AB18E +:108B7000BCC72082F9D0DF29BD5A40975BAAA45E0A +:108B8000074EF747DC13B866B9F796AAB44BF57BE6 +:108B90004CBA19CFB5733CB75641EFFD87E70EFFCE +:108BA00069B9CBC5417E119B1580BDD261A7B912B1 +:108BB000C1E7EFE9EFAE9D3F297F6FC188878CEE5B +:108BC000A7AA2EF7C1B288F8DB5373655C7374B93A +:108BD0008DCB4BB6020FC67B463BEBAC2C27DBCADA +:108BE00065BA53C75F74DAFBABA438E863EF46C5D8 +:108BF00003FFF97CBF32DED3893E7FA44A31CE9990 +:108C000002B6E1F2BC157F5FDBBC8FA05FCF232AE9 +:108C1000CFC7912E588EACCE72DE6F0B87B310E7A4 +:108C2000C40BF5F2F7C7EFBC7E38F645B42E22CE62 +:108C3000FC9D9A0576FCDE63DB57490276C696F802 +:108C400081FCBB845E417A2455D6F174C7F9B4FC2B +:108C50005BA8F35F9CCE6FECEBC27EF10185FD77E4 +:108C6000467B17EA9234D9DED7EB42DC9EF0F580E2 +:108C70007FAE501118CFCDBA3C799DD2BF84B74B8F +:108C8000F04EF6C228FEF68B661EEFC2372C7C8EA5 +:108C9000B3D07180FD4B0EE20DBCFFBAD0BF81EBAB +:108CA000A7970ACDCEE745E6DF958C684FC139E23C +:108CB000851A8B7C2F0063E9AEE305F3B036CBF762 +:108CC000E21609CD8275D9235CB8B7AEE8E38C1EF5 +:108CD000D73B35D27F75C1A3FFDEC701CDCFF707E4 +:108CE000F4F8CA4BF935621CB92658F7EF9BE179C5 +:108CF000FE18933C9D1CD3CCF623E8063CDFEC9792 +:108D0000E7FADFD00FB7A3BACABF511F880723FC09 +:108D1000F7391DE545F3FD1EC40518748AEE2FBA18 +:108D2000DEAE659E36F0E11DCBCB2F54319FCAFBE2 +:108D3000685EAF70C3BF977F7812EBF90B4D0AF3F3 +:108D400067B5C3E9E7B88626F3FBBDED72A6EBA9CC +:108D5000B3BA9E3A952DAA60EFBF7F6F923DD2CFF6 +:108D6000679B27E5C2ABFBF94EDD116F8FDC67FD1A +:108D7000AFE5636DF386717C43103F5D35AFCE6226 +:108D8000C26BCDE678B37F3D2A9EA1E3776E9C3C13 +:108D9000FE536BA41F885296B70B4EF9CEC1E5F473 +:108DA00010B13FC7635BF578D15287791CE334F388 +:108DB00038AE49EF6682AF75659ACA4F2CCC35E55F +:108DC000E7354B3FF905D2679B38EE48DAB776E1D5 +:108DD000E3F5C681DFE1CBC5FB3DD2FE3AACE3153E +:108DE00071AB589FE2B06F4EC53A17E4720922C4C6 +:108DF000F5932002888D724C7DC03A04578B5C320B +:108E0000AE8FBAC3FC4F5F2F02B84F72DA884F9A09 +:108E10002CE3FCD28497CBF580BFD802D335C06950 +:108E20002622A57311571562B837B4940522E8E2DB +:108E3000345778F8BD997FAD5E380674CBC78D0482 +:108E4000FA7E2AF6E727E1072C99E3DA277F09EE75 +:108E5000E1EFBE4CFBC59299AE7FD8089FA9EAAE60 +:108E6000EF1E26B92D8991E783D3E7ED7DD24F7CA4 +:108E7000B0ADD253358FE85705054669DB6C337CBE +:108E800039BF7A5772D355FC47D53C57A7F11F73AA +:108E90002B3D33980FE749FBEAF7B6402F192F22F5 +:108EA0004296EE267D5E85725DEA73119E8BEFD54C +:108EB000A49F1157277CDA7ABC6FDFE8B6CBB8DB0A +:108EC00028BD55EDE815BC8DCB25BAE14F8B96B783 +:108ED00053D6F225C08738205CE5F25E598912B17D +:108EE0008F35F060F0BFF13D1A1F97E36711C9CFCE +:108EF000ECCFED69B2932E87EF68BE3DA2EF3F8EB7 +:108F0000EAFB8FDF236E25625FF15FFD7D94E8F958 +:108F10009F9A1E3E8E77F64FBD69110D2EF061E7C8 +:108F20007EBCCB8D6FF29CF13F623C47FDEE4AFB6D +:108F3000EF291AF29B2EF5A3F19E3C29626BA45FE8 +:108F400026BA9F3667CBFB38EF1516A72FE6AAAED9 +:108F5000E769C8AF0137C67AD2B1FF68B2753E9FE4 +:108F6000B3ABC7EF051FD27EF7BF14B764C01DF1C6 +:108F70004A6460523B473272D99EECAAFE11C5B5D5 +:108F8000DA4A2272745EE849BC8B558280123EEF49 +:108F9000FFCB77714E5B52CAAC238ECCFBE049BF4E +:108FA00093CF190F03AFF45DFA69CA04FF6E8E55B3 +:108FB00073F1BD35B23B5FC33C5E83BC53FAE7B986 +:108FC000667817E0B40E38B7D29C4F7FDB54B3BD40 +:108FD000C5E5BB92CF5356CFEB9DD2F93FB467B7EF +:108FE000D6BBEE7D3F9FF8E131A73C173D29F9C183 +:108FF000885735CA77CB729F417CAC78CBC2F729B2 +:10900000BBE5F806B9598FF9AE34FD8EBBCE2F29DA +:1090100013E43B2B5F2488664BC43A3ECAEEFD0442 +:10902000F355124778D1DF6DEF29FC9E66B7496E84 +:10903000B6ED524AA5DFA83156BEE7113DEEF3F377 +:10904000E47EFC81799EB679C33AE691327152B0E2 +:1090500089DA5B479A07FB224F855F74E65FB4A508 +:109060007AB91FC2EB57F3D86F54CEB0C529C7DB0E +:10907000115F65A4325ED1A1EBB7FF0D7E2D1B679A +:10908000008000001F8B080000000000000BED7D39 +:109090000B7C54E599F77BCECC9C99904972924C0D +:1090A000E204039CDC24B6210C10102DD50937A353 +:1090B000463B844B830B32B9900B37075CDBE8C629 +:1090C000E5845C21C4A6307191521C31E9767BE1C4 +:1090D0009765D55AD7AF9D80A5DE9BDADD0A5B1672 +:1090E000072269D9AF7E9B8AEED2EFC3F57B9EE75C +:1090F0003D273373262111ADDDF6FBC2AF3DBEF334 +:10910000BEE7BD3EEFF3FC9FCBFB1EE6C9626211DA +:1091100063ADFF640AECC982A7BC8F3DE460AC2359 +:10912000530C080263676EED2F67906E1544D72EBF +:1091300028C7DC6EC591CE186431A630365B9283A9 +:1091400095F8FB8E44579FCCD8E2C40E7705A43B1C +:10915000DD369755C632120BDA18FD7D944D0FB7E8 +:109160006D016336EDFD767B2EB5DF01ED637B9DF2 +:109170007673301EDAEB64B600365268EF7F29DB77 +:10918000814FB3AB195E39B3E3BB3756DAE17D8764 +:10919000744E288CAD7FA1175E9ACF589EFA9B63C0 +:1091A000AFE2B842826B0FE41D7D7ECFEA2C48FF10 +:1091B000E7EB266682B4A98CB141A887997D365623 +:1091C00080FD284A6490FE08FF6E83FEEC848ECEFC +:1091D000646CDF4E1B3D4DD92E0FF6D396CBFBBDF5 +:1091E0003ACE5BE04D632C4E1161405AFBF0BFD488 +:1091F0009229CC9D1F4E77DE284BD86067C24BC5A5 +:10920000388F5D714C169219AB287A56C0F4DE8DFA +:1092100050770614F4C96D41A81FC6E8DB83F3D666 +:1092200062F96D283F3C2E16CA4C1E8E67D477EC2F +:10923000DF5A2FA371DE36F2EFC75E7584C7694A25 +:10924000175930625C79EA732FE1B85BED66B607B7 +:10925000FA5D9E76FE3BDF85F4A53356171B731E21 +:109260005E9CF503C81FAA9B42F91F633EEEF1CE38 +:10927000FFE3CD0793E1E58C707F8D4FC654C66048 +:10928000BD4C12F3F617E0D3A5CC8D58EF3A8D6E96 +:10929000FE6B83BB0AC731D9FA5E99C65411E9F552 +:1092A000A1F8C02ED83F9D30161C87FA5042A04F1F +:1092B000887DEF01AF48EDD4EE70FB907E5A2A1402 +:1092C0004A4383922701E6A1E1D5534222D493C6B3 +:1092D000CAB19FC6F71FD2DECF7FC0BDAB02DEDFB3 +:1092E00055C1A81FA7DF0C643AA1DD273C92A2421A +:1092F0003F663FF29EE92348B797F27DDCDEBFE38D +:10930000A52CEC57A6D99507AF7CAFFFBC88FDB460 +:10931000C6B998690E63FE26EF636B61BED56926F8 +:10932000571F74C97A77D9F20C5C1F457089907EFB +:10933000A271DFF2A948672E61AE09D24D1529D47A +:109340002E504F490EFCFE7A66AE0BE96BA0285BEF +:1093500008C1BCD697307700FA5FDF2B880CEA2D66 +:10936000CD9CFB2D13F4E36CE6715312947F3FD731 +:10937000BB80513D26AA27CF7BF904F6F770110B6D +:10938000EC8172A71AF62D3741FA522396626C517E +:10939000A3E7CB53A19E4525928C3F0C38B219CE42 +:1093A0007B0FF00D2B94EFE9FD3A7B08F2BB1AC559 +:1093B0000083F19B2F9B983B15D6F9B2404FB379B0 +:1093C0007009B69BAA30970A15984AA3E9747D697B +:1093D000FF8B66ECFFFA99A7B1BF9D774B8A15EA20 +:1093E000E92AFDA589E8F47D58A1AC30FF326BFC79 +:1093F000AB4BE93F85FD6C6F905813E4EF17465E69 +:10940000C6FDA6268B32CEE3995B393D3C314B221B +:10941000FA60E6D05D388ECEDF67CBB85FEF14B769 +:109420009FCC80F49DC704570BA40FCF5A1EAC8568 +:10943000744FB1CDC564220B23FF64B6F470FB4CAE +:10944000E3DF8735FE7D78D56366EC3FD43522C0F7 +:10945000BAD6FBCF6DC2744983A410D356DD6FE634 +:1094600043FF37EBEFB3FE366C6FABD3C4F6C08E61 +:109470003737FEB2ED2648CB8B6D2326676CFB5F3A +:109480001C11991A316FB75D9EC2D488FD5DCC5214 +:10949000A3D24B6CD747955F26E744E5DFEEFC7C13 +:1094A00054FE1DCABCA8F4FAFC2F44A5D9F72CE73A +:1094B000439076C33FEC4FD3F353188EAFE79B0234 +:1094C000D1C15666A67C2A0FF35117D8BE7C23CC97 +:1094D0007FCD42AB6C82F9ACE987F723DADF7FF707 +:1094E0005724E433FBBC769F09C65F6B787FD89B1B +:1094F000E0403EC36E62377D04A46A4D13797B4E13 +:1095000089E8ECADF55F5D2F40BA6DAA9D99209D6D +:10951000B0D9FB2EF28FE6CCA27C06457B648FECA3 +:10952000B25375CEDC05DA9611F12985F922F28D58 +:10953000F556A293C3F52CC0852BAC05AC73BAB617 +:109540004E17337B9B3E877484EB2A63BF6B0630D8 +:10955000DD26B01113716A89E8194522F673EAB75E +:10956000370D7C87AFA3CF8AEBC83C3601CA9B4B33 +:109570004519F7577A9D1445FFD886B280F353FCFE +:10958000CBC95CA276427906F392B410DA6B9CBB2D +:109590006BB583E4FA087371BAC0FE4315365C07F5 +:1095A0006B5E7F472EB417E7301359E5F8AD517C59 +:1095B0005F1F0F8D9FC6E739590CF5A5A88CE13EBA +:1095C000C0F95023E6E3F043C38FE3FE8E9857279C +:1095D000F2BBE6C6B9750CDA4B515415E5953EAFB2 +:1095E00071F85FD9F88C1817BCE7CE76BB71BD80D7 +:1095F000058CEC490ECFD3026D9EDA04EF2933EED1 +:10960000D7D58CF89E715E4CAB981A0FFCD8244BC2 +:1096100051E3C951A3CB1556246B83E3FBD382FFDF +:1096200091156E8F69ED590CFD93BCDFF660FF9EBE +:109630005825325C97A37FFDDEC047C81F4AC4513E +:109640003A50F5FD2EC4D677A24024BA695158C0CD +:109650003A467B30CFBB715D2C4EB382FCD9986FFC +:10966000337BD410BC9F09723615D6B920E39D7B9D +:10967000B13EF690C4F2A03E8B123DEEC309FDC58B +:10968000D8DFFD7780EC01FEB21EE625727F1696CC +:109690003E46F9AC0EE43AC8CF3515D9342FD9522D +:1096A0007023D69BBD238EF8640F8C17F9D694EDEA +:1096B000714F9A685CAEC7E3219D2D26B03D58BF1F +:1096C00045C9E8867DF3B33B86775563B90C1343F0 +:1096D000C4D2F09CEF09C4874C00BABE85E3416F49 +:1096E000849C2C94421932A40FAF7FF771E46BEA8B +:1096F0000F6D24EF003064AF98857815E43FD4DB1C +:109700009EF9A6AD82F051830DE56E5740FD67943A +:109710008F43AF9950B28F2BF78D38C8661B2C4101 +:109720003A451C84EF010EBABF6212B85061EEB523 +:10973000381F154C74E1782B6CAF111E820D255B20 +:1097400011FF1870B611FF081EC04BF0DEA15A8E33 +:10975000979A7D2C148FEB7D8DB8A86733C713467D +:109760001C5261B3ABA6C4D8F6816264E28B3A9D09 +:109770004DB29D49E3B46D1616C4FD6D0ED8109719 +:10978000AF4DB269690FA5F57DA6EB11BA1C6C410E +:10979000390893D6E288D663664BC1774D4897293E +:1097A0009282B86C71E26F08FFB4428FAC73908EF6 +:1097B000E283487F07C5FC00D2A34D06FD02C73DEA +:1097C00091FE929F1DA5BFB4E69F273CBE2724CCE7 +:1097D000C522479F7F784665047D8E576F0C9D5943 +:1097E000D873C26CC67E5191C5F1A1811E04E5E417 +:1097F000EFB19E3CB583E8B73C6B6E12CE8B11CFB8 +:10980000EFC99C3B815E132831E0F89F564C02C79C +:10981000B76838BE45C3F17B10C7C33C56E473BA82 +:10982000BC561CFF3EE2D9ABEA352A1F97C2F59819 +:109830003DA8C728B87E7F2176E0FA658BB47E9F6D +:10984000E27C5CFC63CE07B34365374FBC5FB2C5B7 +:10985000609F1DE9FB5FACAC0FF12F120ABC37E330 +:10986000CA8F6DC8F7FEAA2A9BE6754F41595C3135 +:10987000C94DB72002BF9F32EB98CD0DF3D15320D5 +:109880009604E05930ABEC65D4B73B0BCA1C82128E +:109890006EA773D531D2C37B569515B188DF7BCCCB +:1098A000ACA4DF1EDB2FB58AEB539B377B932BA138 +:1098B0007F9DB95C8F077275F5110DF7D33C65DF9D +:1098C000E9667B609ED6BDE29D218F514F789CBC9E +:1098D000BF8049146B12F6AF320DF9FEBDD3BD3D0A +:1098E000884B7A56305793824F8FB817E6211EF671 +:1098F0007D09EA050337BF8BFC39CD23C11A523DE0 +:1099000089F361FF2ED1F6917F5A19F5E35201A038 +:109910006D98B735B3428497ADAB244584F4ED9987 +:10992000AEA51B21ED007C8CF68C78162203C2AF0D +:1099300035BAD1F167FBEFB8FC751C3AD77C13D46C +:10994000570B3849419C64E778B51CFEE1FAC6071D +:10995000064EA07DA40EF0A81BEAAB3B148D476F0A +:1099600035E0CF456CEFEF4C85F83487CBC1EF374E +:10997000576AB874015B80FCF7DF763EC78650D02B +:1099800075FF8DE74318DF462C08BF6F826E8EB5DA +:109990003E490F2E76E3BA9C6D9897E4BDCABCBFD2 +:1099A000B273215B0A60E605182F3E5FF966718687 +:1099B000C78EFA22D74F7F04FB067F0FEE94E9791A +:1099C0007CA7939E2FEE54D852E8CFC99DF9F47C22 +:1099D00069A78B7EAF69B88B2D9D077A49C31D6C33 +:1099E0002980B28D0D2B29FDB7D5A2A6C78E981060 +:1099F000FFF80BC400E9B12B16C7E5E1FC3A4417A8 +:109A000092F4447A6C897FFBDEB5F0BB75D6E23800 +:109A1000A4EB7A8FE846BA5658D09484F582DE8952 +:109A2000FCE4ACE7CD25987E5FF1221484F64D9CD2 +:109A3000EF5CD9F065D473D30A24D2CFEA57F59FEF +:109A4000C2FA1D05400FD081459EFE5395905EE4FD +:109A5000945C8A827AEB2913AEBF1FF4C38388E338 +:109A600085EEE5A8CFA95902433A3FE539928B220A +:109A7000EF527E9C1B99F78F7A05C26B3FCAE5F2C5 +:109A8000C238DF5335BD351DF5569897A9668F80CE +:109A9000FB221DF05224BFB96BD5E0328B82F63A1F +:109AA0004F1CEA173DBD2BE218EDE33571C8E72CDA +:109AB000AB8F39110F3373BFB30CE443B300EB65C5 +:109AC000473DE3260FCEA73F813804F3DFE8CE40C1 +:109AD000FDA833638A0B3809FB466532CD43E7ACFA +:109AE000679DA8C74AA9A26052C2726FAAB66FE268 +:109AF000BA6792DCF36B7AE7995BDD7760BD9DF521 +:109B0000A2BC0BCB7856C4A15C8A195F8126FFEA00 +:109B1000C6D66BF5FA45C5B37B00FAF5419D48EB17 +:109B2000301E7D8E57DFA7ADA7D61EE27AF416E071 +:109B30000BA88F18F556A35E6DD46341CF263D5414 +:109B4000D7B327D66BFFA50DF94867B16D04716FC8 +:109B50004D60BB84EB69D46F6B0B86CFA0D267D40A +:109B60006B6B916F24C6EAB3C1CA687D168911E791 +:109B7000DDC18BB0D3D54B9A9E447A05F984FA3275 +:109B8000F4A809E570DA9524EA775AEF92265C1773 +:109B9000D42B512F3C5DBDB26900E6E53D2C0FF999 +:109BA0008E55D1FA429BC0B83D6C050BA05CFAD52E +:109BB0009625C5C5B8EF402C53F917863F648958E0 +:109BC000245A2F423D85E9F5603F7BADE1FC6C9462 +:109BD000CF528C7EC9745C26F2A492AEE9850CF556 +:109BE000D21615C7059550BF6DB6BD83C857AF5A7D +:109BF0004F0EAFC6911EA15FF636B99F2DE2BF97FB +:109C000039B11C7F1FA62AF8118E35978F03B24EEB +:109C1000623FFF1AE5A0A617CAE9E17A6D4EC91D99 +:109C200057187E7F74DC38E77A39219C6FD6EA9F1B +:109C3000FDA3E718CABD9907A2FB1D6F073E0FBF22 +:109C4000C79BA3F9FDF7AB79FB2F68FC15FF500FFD +:109C5000AFD5E6E9AD29BEB63568BF12D9C81158EF +:109C60008F1B0F59A370CE286ED5E479FE2183DDBA +:109C700040D3BF1DDAFCC4AE236F8FA652C1FF7361 +:109C80001D47BB451EEAE32ED4CF3DBB309DA6A5A4 +:109C90008D760C7D1DA76B4B93F3BD7B7745DB3534 +:109CA000BCE51648CFF030C28939FEE8FEA5675EF4 +:109CB0006A8AB463B40921C182F42830DF33D0DE6C +:109CC000F4C6E8794C2FB79CB3023DA61BEC179F56 +:109CD000AB8AD6EFF5F531EAD392F737A43FFB0B09 +:109CE00024AECF9769F6A23A16A5CF133DC1FC9CCE +:109CF0005875EC14E6EFF6480ADAAFA65846B8FEF7 +:109D0000BF0AE49F30067DC4E8F7C6747F491EB4DD +:109D10009F8EFA3E8BCD9F6AF636858A22F5FDA787 +:109D2000B9DE09FA7C5E72ACFD637DAE14C5070B2B +:109D30003D8FF1F29A7EBFAF9AEB2746FDBEB3E0AE +:109D4000888C745A28F53B65923BFF83E4A6511F2B +:109D5000D7E512938B26C0B94D9A5FA7DC53CCF19F +:109D600001ADF76C494DC3F1B2374C0CED3796E4B9 +:109D700010E90D967302C9B3CE02D01330FDAFD7F0 +:109D8000B9707A747B8111F75BF254B213114614E7 +:109D900062F13EE801F555F36371BF65852B11ED66 +:109DA0000DB9CC57FE89F4F94CEEFFF8B4F479679D +:109DB000A542F3D5AEE1E5F64C8E97472A65CDDF97 +:109DC000A03294CFBA3F047002F5B7F90E59403C67 +:109DD000CECCB09E688FD991918CF2DD5EC9FD0E1C +:109DE00089A27B37DABB817784FA90CE3D472EA0DB +:109DF0005D71CD6A2903F52EBFA74CDC8B782973E2 +:109E0000DFDFA19C7456DAE8BD9E150AE18578C0B3 +:109E10000B63E1F2581C0E7984C3C500C7E18CF6D0 +:109E200091A380E3ECD36F86C8AFD06E435B7B1801 +:109E30008FB7671E797109D7EB47507E390E3DD930 +:109E400082E56A1732594946FCCDF1579D9D05DCE4 +:109E5000882FA7BDF712FA2F3A7B059700FDE8EC93 +:109E60002F13DB085F8A01B47F9DCA2C7B2BA708C8 +:109E7000FB259134FC9AE3BDD7512EB7679A48EF82 +:109E80004C28EAA7FD6B037C88E3EF14001F22FE39 +:109E9000CB9048CF89C5736E01E925DD134D5F77FF +:109EA00079062D88E7DA6537E1397FC157C8CE6179 +:109EB00099B63883E499D99D51368B8A47E1B0DA57 +:109EC00090FBF483383EE0370186B8EC0707705EFC +:109ED000FD4E3BC375F367EE9270BC0761DCC902AF +:109EE000E234AEDFB4AF9014F257CDAAC98FC4FFED +:109EF0005333AF0D9F01FEF965BE6EDF55705D6B8C +:109F00004A91894F58EF2A8E4F6CF08FE39E879DC0 +:109F1000A102C447D178C69409382731565F326907 +:109F2000FA91C9A01FFD6B15E09CCFB33F7D9CE368 +:109F3000FAD3C0397DD582C6573E2D9C532E8C85D1 +:109F400073D2349C9366C0393FD670CE879F10E79A +:109F5000E469F5FCA1708E03D3325FF78F89739C9F +:109F6000885B66AC62E4678DC1398D3138A71871A2 +:109F7000D18438C7B02EB7577F4C9CB32A1AE7B4A8 +:109F80008F877332CB4E8F85737A32AF15E7785E49 +:109F9000CEFA0C71CE1BE3E09C9E55651EF4634D1A +:109FA0005921925FBC50F2901DB2671AB75F944F6F +:109FB0002B5B8B7ADFA5E76C242F7AD6AF97515EA7 +:109FC000AA40C079344E8E570ACF27D3BACE9642D4 +:109FD00064D76467ADE48FD271CA991D77C521CE6D +:109FE00039986E9E83ED8CFA1FCC9ED1380C958DDE +:109FF000895BD4EAABE296FE4F865B0A3E5DDCC22B +:10A000001437F981D6697E20867E12C4216B2437ED +:10A01000CAB39FAD1E5E8CF638DD1F345E7DD78AD5 +:10A020003BD75471FE61EC5742B5ACED0B8E9BEE05 +:10A03000F3BABF5DFD31E24460632EDF5444FC8817 +:10A04000ECBEB501EF721C9F9C6DF6C53B79FA3BE7 +:10A05000505526EC77B690A75F81F4B44ABB0FED5C +:10A060009E35A3F47DC36EDC1F0AAB963C308E9AFE +:10A070003ACB390BECE39A43D1FA8AAD8A51BB371C +:10A0800006A4317FFFACFB9357CD68FFACCB56B233 +:10A0900091491AFD76FE1F02DA019CEAB7F89CE4AA +:10A0A000F79B367CBC22629D75DCDFEEE1B8DF9267 +:10A0B000ACB6A31FD022987DAA03F7D90EF20B5E8F +:10A0C00062D05F17EDC30C5C7FD86FB4FF8CEBAF31 +:10A0D000EF2BDD1F6833BB697FD91CE639B88F468B +:10A0E000F58215B0BFE0F7A1B07FEF7F564FC2BF3A +:10A0F000F7DF6D5F19E9405F8FC9BE3FA0BE7702F1 +:10A10000F9B57B44F7333333DA4F6F350BE45796A9 +:10A11000D19C08E9E590AF64218E9B4A7E8F609ABE +:10A12000C0AE83F472D36B261F3435B0D02A5B39AE +:10A13000DEBA674E841D7EE035C0A5907FAB6055CA +:10A14000501E2C628BCC58DE793DAC3FD09B6E47C5 +:10A1500097E11FCECF32E74476F3683CF822FE0742 +:10A160008C53D9A8D9BFE6B2A26BB49BCFDC98467A +:10A170007E155ACF8112C630AE20CB62BAD305E32A +:10A180003DF69AA860BC143C693E549F95F48863E0 +:10A19000AF1D7FB300CA1F7B696E3AADB99C4A7C84 +:10A1A000E798A2741660B90E89F8FDD38756BEBA37 +:10A1B000169ECF061E88BF179ECFF5EEBF0B9F0CD5 +:10A1C000D13DAC57CDE316D2A3FEA1437A0AF58D5B +:10A1D000E10339F188DF753DEE3ECDEFA3C7B7DD72 +:10A1E000B691E399FD159ADED79046F3A0C7AD6D01 +:10A1F00068880FEC82221BE4118B80F617B577C7B5 +:10A200001998EF0DB69165186762DBF5D4DC9350B1 +:10A21000DF06C420B73076F785BF3DA6423BCB763C +:10A22000B8576F84FA566FE474F45343BAFC01488C +:10A23000A785D3FFB1233A0D7FC1B8887893FFB2C9 +:10A240007829DFDDCBE7CDE664645736DB3D1ACEF7 +:10A25000BD46BFB436DE89E8FB8810FC26FACFD4B1 +:10A26000D35686FEE1B7357AD1CB65D76619E402BD +:10A270004B423E78EFF4EE44DC071704166A82671F +:10A28000556FD5EA5B60BD2E74AD203DB846E5FA4A +:10A29000EE85819BBF8FF1741B01DF2326BAD8B4F2 +:10A2A0007239E9BB7B6196217F4D17DF3F357E21F7 +:10A2B000807E86DB0F703DD57B59DF6FD17E2BA36F +:10A2C000FF6908FD4FF08AD7E07F3A2A7924F467C6 +:10A2D000849E14D83E7875D1DE9BCC0D50FE0DE0E7 +:10A2E000AB42C4BED2FD53D7EA8FEADCA8E95BD704 +:10A2F000EE8FDA87F4D32CB8BE7653D6F8EB15E39D +:10A300008F9AD67D9F87EC172E27F2F58B966BF3ED +:10A310004B6D6A5842FE28DD3F75632DF707E579DE +:10A320006D8751AE0C81F2867C3C24A8AF2F443A55 +:10A3300079DD44FE9D3B9FF32D47BD4EEF9FB7DC7B +:10A34000A2CE84F9A9D6F4FE3B353C77E72ECB5C50 +:10A350008CEFAB367B25C45D555A5CE25D077EDE33 +:10A360009A01EB79796BE53338FEAA03A6283EED16 +:10A3700055E748183FD02C742F4D4139D62A109FED +:10A38000B8536C32A760BD7B04578BA26D22C87F87 +:10A3900059353D89785CADE1F69A4B0D274E62FD4B +:10A3A00046FFC428DD3C2368F43548717F4837A850 +:10A3B000AFD4E4DFCC9646F4E3A8E43BD900F50F34 +:10A3C000DF6C9577215E602FB43D14C19FEF00A133 +:10A3D000BB34521F32F83362E3F22A24E45BB17ECD +:10A3E0008BE872BFDC18EDAF989DA8B4619C2BCBB5 +:10A3F000E6F370474BC5E157713F55CFFBD202E4FE +:10A400009B355C7F01FD3B09F1C53A6B70FE5B88B3 +:10A4100023BF66257BCC9086FBF4F5126B397F7CDD +:10A42000B946D31BDD762FDA572AB579BAD89BD334 +:10A430008671A5EF5D49626827A8D4F414A73E4E43 +:10A440005FB284712500AB948373E0A9E9F955B13B +:10A45000FAA11BF55DAA97F859B4DE5FA9E9E97A7C +:10A46000FDEBA000BE37FB474E09D7A9BED414446C +:10A47000FF6685510F0F415FD2A97DDA5F7ABBA0DD +:10A4800047BB23F56C6A37275CBFDE2FA37E5D6F69 +:10A49000E7FBB3DECCF56C7D9E666BF3F457B5E25B +:10A4A000A89E3F967E1D42FD5A1E5FBF4EAEB9BAB2 +:10A4B0007E4DE3C81E73FE7A711C352CFC87FA7240 +:10A4C00085B64E30D036F4BBC2387D07C7F0237C4A +:10A4D000FEDBD1E3BCEDCAEC36D497AB405F467AE5 +:10A4E000AFE888EEAFE45DD886710517B4FD60EC87 +:10A4F000CF125B34BE5D2647A76F7746A7EF506249 +:10A50000E3216DFABA65C5D67FF4B1A14A5CF78B39 +:10A510007BAD04120366D097B13F074CA42FE39F95 +:10A52000AAAFEB18FAF9D0FA2F9E453EAFE3DE133F +:10A53000BD2B1FBD19D2E71B2D8A55892DCF188F32 +:10A54000EB2B5C2CB3C838493DBFE09167A2F467A0 +:10A5500063FE7A98BF487F665A2DD797CF5814B2BA +:10A56000139CD92DC9A80F5FF09BA6E0BE1FD5BFD5 +:10A570001AE74D209FB9DD7FB6D47D1FB52F8AAE77 +:10A580003EB26F45E3673D9E6B488FE7AAE1F29AC2 +:10A59000BD20BB1FC6F23B125DB88EA1BD2B493F4B +:10A5A0000FF59A8EE0CB0DCF353EF15D86FA48E788 +:10A5B000EA5BE0F7836F9818EAD7E1B8210FC50B83 +:10A5C00085FCF31259C47E888D1B62F718E2867CE5 +:10A5D0003593D01386316E08F6E530C60D61BFF4B1 +:10A5E000B821F5079F2C6EA83175527143E1383BB5 +:10A5F00096181D67E74A8C8CB3ABD6E6598FB31B10 +:10A60000D6FCFEC37B4FBC8BFE8077FC5645C84210 +:10A61000FBF3AFBB508E5C7CCDE4D2ECC251720731 +:10A62000E508EED3E1BF175C182750EDFF01C91113 +:10A63000792ACC3B32D56EEB98F1767AFB17D51C94 +:10A640008AFB7F478BB79B488ED505B69FC47DA0FC +:10A65000C77FD7B2D2E524B796D85CA45718DA5B87 +:10A660008F722F62BD3EAE5C9B489EF5D77C3C79D5 +:10A670007666634A943C634BEDD593914F48322400 +:10A680001F0E24B7A1DD7012F269295B3079F954ED +:10A69000A3C9A7F711D8A55D43BFBA9325EC5725E9 +:10A6A000F60BF84925F6AB30563EE9FDD2E582B10E +:10A6B0005F55D8AF88F15463BF8470BFF438C221AE +:10A6C0003D8EF051931647D8CDF775EF10F907433B +:10A6D000C638C26F9902E8BF2AEF9B9784FBFE53EE +:10A6E000E007EFFD29F0838F8D7FD464C93CB975F5 +:10A6F00024FC33D975F41AE8AB59F0100E579B12AD +:10A7000018F2FF0B80D9910F5CDC6E0DB4703BEA40 +:10A7100062E4F3477A4486F3B1BA2685E4C6CFFAF9 +:10A72000AC5342F6C98FDFB2D19D530BCF332F7B91 +:10A7300067C8639CBFAADBA850BD463DF0E68DEE1E +:10A74000CFE17B939E6783FDADA6B7419A82F45219 +:10A750006CEB477B7F4DEFC3D214E48B3B6C84AF33 +:10A760006B7A1B29EDFCAA4DB18E697F3313FEAFC6 +:10A77000E910882FD7D4E5B575A23DAFD24EF63C8F +:10A78000A33D8E4D8CB70CF82A1A7FDD766506E165 +:10A79000AD2AC45B63F8338C78EBBF3BBEA295B99E +:10A7A0000A9E3AD16BBA13E7F7BC1FF49D49F9270B +:10A7B000A2D3BABD68D8CD28DED588CF8CF8E98C75 +:10A7C00085FBE3CF00DE52A1FC118BE71EC46F476F +:10A7D0009A44571395F23C7A33E417FE751AD9DF81 +:10A7E0000A1EB1907336EDD733FF4135C7DAFB2629 +:10A7F000B1DEFF4FE3EB3FB7F59F2C1F9A716583E6 +:10A80000A816F173A26837983EED3CF9D55A1D663B +:10A810000561C051E0C9838407DD143FDF527ABC73 +:10A820000CE7ED83221EA7D1EA384FF104F1A53CD5 +:10A83000FE41C7634FD5737B941E87DE0EF231084D +:10A84000536D65E75E47B9F841263FEFF4648379BD +:10A85000DF4C25DCAFF644B7E082761CC13B6C4A86 +:10A86000023C8BDC25380F9525A28C76344781720B +:10A8700007C6A59ACA45A504DE3B51CECF3F557801 +:10A8800046ED6403D8FF048DAE12F6F2F8C8E6DD9B +:10A890006FB120CA8F0ABB2F0F7E2F485BDC81F17E +:10A8A000AA2D724A0A5F7E77E29C88F3762D76B7EE +:10A8B0008DE28CED228F5797BD03780EA9D9398F81 +:10A8C000E203607E285EDE925626DF05BF7728957C +:10A8D0002621621C1D8E5DB69CC8730676B104CF1E +:10A8E000C37628736D35F0AC0876BB11479CB01F5A +:10A8F0002946BB6327BC7B1DFCCFA6B806B28B7074 +:10A900009E78FC4A6A8178CE0AFD4F2D9758308296 +:10A91000BEADB91171148CFBA347F3611E125844EC +:10A920003EDAD36A3F71BCB8540772EFF4F4EE59C3 +:10A93000D8DF144562A8CF994AD87194C3091DA6DF +:10A94000C0ED309109D807A4A715DCAFBB5BE87751 +:10A95000A641BD1D598FD1F9DC8E127E3E23A12860 +:10A96000D4B510DEEBAA17C9AFB2BBBE2C898DD10E +:10A97000AEFE9C7E19701B90F4F0566F465D84FC11 +:10A980003DDCC0E39A2E55AF1482C0D74E1FF7347A +:10A99000E1B9FFF31F263195F89467A0C2417E7597 +:10A9A000E243D38BD61457A13DC8CDFDEAE73B6601 +:10A9B00012CE4E6B30C41930F7CF16C0F8CE4A9E77 +:10A9C00026B4F79D15D96013C68568F8C6787E133E +:10A9D000FF9C0BC2FEFBF31F0EC57934FD89459E1B +:10A9E000FBCC94CE218E36E29F340D5F1BFB11F51C +:10A9F0003EE0C2B4EA788AA7D0DB1FB5037979FBC1 +:10AA0000A3E5C2F11451762063BEDEFF63F77B96A7 +:10AA1000E0BCEA71175EE612B19C52C0DA306EE11A +:10AA2000A9D1B8052E476668E39961A8E7EC5EB145 +:10AA30000DE316CEC3FC629BBB77CFA338AD0FE00E +:10AA40007D166137888C7BB0437D1BB4A1E63C77D3 +:10AA5000F9279F83F24E131B419C734EE31BB42DC9 +:10AA6000D3B57661BD367CEFDE625C173CA78CE522 +:10AA7000D25A40FF4BA462D52C426E6D50A3E5CE56 +:10AA80008C16418D87C667EC8DB63FA519E413FE81 +:10AA9000D922CEAB1ACFA7966E73D7D541E66E4BAF +:10AAA0007F39D2D3EE5992AC427BBBF36E88C3FDA3 +:10AAB0003B03F815DA1166D817539A7944C6FD8F0F +:10AAC0005C9FEDD0DAD857729CF4E78EF2F42CD468 +:10AAD0003792EBB87DADD9CECFB7C7FD13D743744E +:10AAE0007AB795F338AA513E1E7B3E2DEA5C9CA8AE +:10AAF000F0F30A1F2822C5178CB7BFF47A8DF5FD35 +:10AB00007CABBB95E84272BD741BEAA9F7880AC604 +:10AB1000371D2F7D8FCE691C2C109F44BEEBAF5B81 +:10AB20004CE70F1ED5FABFBF20FABC965FE1F9676C +:10AB3000B6BABF86F3B6DFA3CB956E8A7303FDA8C2 +:10AB4000077FD7ED31FEDCE3B37EE008DF43D1ECD5 +:10AB50003846FA502BEAEC4047ADFD66E2A7ADFD62 +:10AB600045A7314EB0959598F11CF6FEBB1764547D +:10AB7000CF62ECAD7B24B71BF9BECCF9EE5B9247FC +:10AB8000443F714289F824FABBBE54C4E34F1C050C +:10AB9000EC4994536FD6713DBB15FA85ED3C99C9CC +:10ABA000E85C6A58FE0DD238BA4A525E21F955CE99 +:10ABB00051D15189976F4960E4476B7AFE6115FD69 +:10ABC0002F4F6871FBA6461EB7B60FE97826F2F53F +:10ABD0003924873ED07091711DF625AA0CE59FADF2 +:10ABE0003CD0C4601C4BEA1489F4174D3EA5687430 +:10ABF00033A3234B40FF780E6C94DB512FEB761779 +:10AC000093BDA684CB013D9E2EC70F70017E4FF5EC +:10AC100044CB0BAB413E980CF2E32775D1F2426175 +:10AC20002E1BFAF7CFDACB92B473D7EC4A84DC3020 +:10AC30008EA35F1BAF2E67F4DFAF225FDE443ADBEB +:10AC40006F0912EE01AA914D5F60B1E71E4BC7F389 +:10AC50008B9B93876D617D777CDC6366C3117C770A +:10AC6000B2FEEF65A62D6725C48B4C92ADF4E4EBE4 +:10AC70007E760B2339D79E1052D10F70F18BCC7595 +:10AC800004FA195039BD66CD9145B4DB77285AFADC +:10AC900011453401FD6EF0865E5A06E5AE67DDA40F +:10ACA000D7DB993CD87D33DA83583E9E4767E21460 +:10ACB00017FA21E167CACFFC4BA6205EDAE33922FE +:10ACC0002F839F9FADE7F6CD23AAF94EDCF64EE623 +:10ACD0001370F0853347F715D9292E9A5D4963E93A +:10ACE000B1FAB3A221E710FABBF4F4B9F571E5812A +:10ACF00031D6A763DB62A91E99617E37E9E1200F97 +:10AD000065F4870D0BA1A9E8279EBDE9F2D3B62F04 +:10AD1000A23CF69FA5FB01D44B4FBF04CFACBCC5F2 +:10AD200071CBE079FBD2DD4F2F15303ED84C7E64DD +:10AD300050429E71E762BE48E9F64DAFFFA50AE9B1 +:10AD40008A8D1E07B5637629486F594DA207F72FE4 +:10AD5000FAB35322C631542F109FA9D8E8CEC0F2BF +:10AD6000932837BD1E9E0F6E9C457CF502DA0FD1ED +:10AD70001E5DFD3A9D0BBED06B550421CC3F75790D +:10AD800054BC757522F29761C4FD0296DFFA06FA8B +:10AD900039DE3E60628242F64E926F1760A510D790 +:10ADA000CF9682FCFCFB1426F7611CF50BFDB47EEC +:10ADB000A858515CB56F64D9C38823DD36B247B358 +:10ADC000466B78DF45D83BF5F62F1CE0F6CEB7B5DD +:10ADD000FE0EBB3C64071F66D92EE467C6FD716694 +:10ADE000C7F56EC459077724BA103F16FEE3956580 +:10ADF00068176980F64C1447F31BF2475E3C6325E5 +:10AE00007BD8F088BAFA1647F8DCBBB13F317460E2 +:10AE1000B073D9ECDE7B0CE7DFBF543F093B57260C +:10AE2000FAF3675DC58F6FB05FEDC9E778DBD89F38 +:10AE300083F5DC9FC4CC3C1EDC24F275F87D85F7DD +:10AE4000BE7AEE4F967950A69BF8975E8F914E4E44 +:10AE50006AF5FCBEC25D85EF4DA25C5D7D449CA49D +:10AE6000BE5EBA7DFCA2661FBF281F27FA7AFB00D0 +:10AE7000A72FA097E364D77B8EB930DF482F172D1B +:10AE80009C5ED46A68FB7AA49F91565C4FB6787238 +:10AE9000F412C2FBB422E8250F18A915ED9B76AE7B +:10AEA000DF95379DA0FB9D2EA15C5562E967C381AC +:10AEB000EBDC489F32D28F33B6BD617B4B3BDAA7C8 +:10AEC000753A38FAFC2D328EEF3F13CC8CCECDDBA9 +:10AED000BDE467B2D9A3E3A84CBF7319E3A8FC7F14 +:10AEE000083A119520E1A90F603FE3FC827EE38ED2 +:10AEF0005C9F0DBDD6FB707E6551749932118273D3 +:10AF0000795301F286FC5E86F18A8ADC46F25AD3D6 +:10AF10001F98476091F3BDA1F707248FE41ACD2E47 +:10AF20006B8CEB32AE97B1FF2FC80CFDEABA7F8A6B +:10AF3000F9B89C8DB1DF6A72E8A810227BB5FABA25 +:10AF400089F4D2F1F87A68E7E0018C6B80F5A1F31F +:10AF5000BD17542160998DFEB7A7D222E3EE423B84 +:10AF6000E5C79746C8E77CF5E76EC481FFBB4EE1B5 +:10AF7000E7BD5421D85388CF01374814BC1FEBA735 +:10AF8000B86E7FEEF3BCBFC2FD4E7D849E09FC808F +:10AF9000E4D4DA7A2EA782B5EEDFD4931FFC1AE34D +:10AFA00092B4763EAEBC361BE475CBF8F2FA0AAE2C +:10AFB00053DE8B5BE87CFC077EEE8F532D7C3F19C4 +:10AFC000CB376B786DCEFD5ECBA68838A735C98CA4 +:10AFD000F4AA9025285C0D975DCF824D989FE1667D +:10AFE000B27A33D2592A43FBD69AED5C0E7D529C3D +:10AFF0006691CD2ADA418E3E7FAFEC1D637E2E6FC7 +:10B00000F56646F6DBE270517CC9FFD9E699BE09C8 +:10B01000E540E2144A7FB4CD3D6353DAE4D74DAF47 +:10B02000AF7567C70FDFC9C379EAA627861621184F +:10B03000971CF07B04FF32DB213F4A7F1F7BDD87BB +:10B04000B7BA5DD88F57A679297EE9B691276625CC +:10B0500020CEE84D15904FCFEEDB7F0FFAA32F38AF +:10B0600052E60830BFEF6CE2F12917FACBC80E1890 +:10B070003EFFBE43AEC238D7CDDE4591E3B73EFEBC +:10B0800080ECB67F72FA04397A3BD60B72D049F75E +:10B090005B302E4FC7938FBFDDC4F116C8C7527CFB +:10B0A0006F12E5566CBA8A1C1DF533EB72B47772D9 +:10B0B000727438568E12EEFACCE468EF75EA435794 +:10B0C00091A3172794A3DDB4FE9390A38F207D7FD7 +:10B0D000DA7254C7D3E3E12DC0E97BB05DC05DB443 +:10B0E0000EA6E7F93A8C87C3FF7DD3280EFFDAA6B8 +:10B0F000ABE0F588727E2CF7A78ED7F3D4BA4494D0 +:10B1000093170E98449C9FF29E68BAD1ED1DC323FD +:10B11000BC9D2168471DA39D8B781F50D2C4F8DBCE +:10B120004887639C07398EF32AF4FEF4F7787FEAA8 +:10B13000FFC75B57C701C371DEE9688F19B68C7D05 +:10B140001FE7C8F6E517711FDCBA4919F31E4FC097 +:10B150004BEF623ED03BF967743D17F0C508FEFE29 +:10B16000E73E7FFA5360FEBB17C07B697A5C10F341 +:10B170000C04605CD3DFB193BF3ECDF96F030AE9E5 +:10B18000B39A3DF7B9DFD2794B904574FE64F4FC75 +:10B19000A5DB46E72F63EDF5A1013C77D026788A41 +:10B1A000F13C962AB041BC8FF8575B560E6C86F482 +:10B1B000FB0D4932BD37C639B3A8F3970D1176613F +:10B1C000CD9E1A69BFA7698A38A737DDB1AA29EAD7 +:10B1D000BCA5E19CE564EDFA4C3B7F49F542BBD34D +:10B1E000ED65C5CF3AF8EF78FE32C6DEDF107DFEA2 +:10B1F00072CD6621EAFCE5A89D5F3B7F1933EE48DE +:10B200007F8010E52FD0CE5F5E1EF3FCE50CEDFCD9 +:10B21000E50CC3F9CBF2CD5C2ED46EBEFAF9CBE6C9 +:10B2200009E243F578BFD8F8504E475FDCAC9FC3C6 +:10B23000F208B8CF3EEB734CE39DA731D27BF18D82 +:10B24000EFD37DB6964CEE97B468E7D7E3CA199D65 +:10B25000678F2BE1E7B0E3332505E976B9C94EF9ED +:10B26000BB15EE37D5CFC7E874B6FBB510F9B1D230 +:10B27000334C4CC5B56BE0F1F7FA7918DDEFDABA6B +:10B2800082BF6F2B751763799B76CF94ADC01C1569 +:10B2900097966E884B736871FD0E435CBF847D0189 +:10B2A0003ED1BEF9139F9B797433D22706BB817EB2 +:10B2B00030F7F179FBF19C4BD13757FE029F0B9E83 +:10B2C0007C2035F29CCBC2BEFD2B793A9887EBFCF3 +:10B2D0004AD39CA9E84F7BAA89C78D9AB47EE9F529 +:10B2E000EFD8CAE97FC4E7FE06B6F34AD3B90CC467 +:10B2F000D5879BC6E6DBEBB4F2A5CC5D4EF2DE2E25 +:10B30000CAE8D768CE346BF18F8A8076EE1265CEAC +:10B310002E3C8F18C79218DD7BC01401E3F0DB5779 +:10B32000F17B4B3B721F3885D358B24A1D44B8702D +:10B33000C3D62CAAB725EF843915DE7B792F2339A4 +:10B340006F5DAD9A453B6E49CFBDD41E135D7DF058 +:10B35000BCEF1F6DA178E433063EFCEAE66CAA4719 +:10B36000F00F535CEBA178CEAF0B651E175058A2BF +:10B3700008CD7322CED17AF879D31ECF3EC2335294 +:10B380003D888C643CF79A4B710E6CB74DC6734880 +:10B39000472DFC5E877DDBE3C87FDBB32AFB34D619 +:10B3A00037E56EEEBF7F642B8F9F2F2C958291E740 +:10B3B0001A8CCF426984CED73DB1FEC3D3B58ED8A7 +:10B3C000F375CCC77155B326A70082BB25BC11F11C +:10B3D0001AF5BF4BD54B7E861775BDB5FED709A8AC +:10B3E000171C4CE638B987B93290CFF9056F06E7DC +:10B3F000A3A10CDCBF271EFA8F69E837399AACACE1 +:10B4000045BA797B5688EE03BDD0C3E6D814146BD9 +:10B41000BE41BA7FB63195E2298635BE9587F7568B +:10B420008F41BFBFDEA2DB19950CA4C756DC83F0A9 +:10B43000FE53F92C80E7809F6A7C2A487E1FED7EB0 +:10B44000DCC704CF59D23FBA243A4F04941987E796 +:10B4500010A54691EE613FD855A3E239D6BE0B76D2 +:10B46000E2C553FC356A0DE7F7E497EE4BF306EBC4 +:10B4700020BD272BD787FBFD7475958A718C7A1CAC +:10B480005E4F6319F9D3F6DCB8662ADE877F418BFD +:10B49000A7DEDF53E3AE877AF717F3739052BE91BE +:10B4A0008F7A084F487E2905F1465F82373813FBB3 +:10B4B00021288378AE4361DE20CACBA71A66CBC8A9 +:10B4C0004FA509EE2B28DBC2F791B98BFBEF99D979 +:10B4D000EDC179C991CD74FF84711E1FDDC9FDB91D +:10B4E000A37C6161341FBD60F14CC57ECFDF72E388 +:10B4F00057CC40EF7D16CF414C2B5BD2BEB2142F00 +:10B500009FB031DA0F397E919F0FEBE1ED9A2D6EEE +:10B5100079ACFB03276A2FC7CC481FC0FAD4CFB041 +:10B52000BE0B5D12D96D26AA4F9FDF1CF9DAEAD552 +:10B53000CB19EB35BEF759951F6F9CF3B784710398 +:10B54000E2A229F8D4F017E22D49CB9A525743F4DE +:10B550002A8B3C3EC02F04548C8355B3CC3EC47B15 +:10B56000539C31E74AA83E7A9FC71B109FD5EB97A3 +:10B57000AABF1BBCA988FF8E384BA7F7519C951F0B +:10B580008DB37EB7251A67E9F5FA57D430DCDF189A +:10B5900032913AD6BED1F01695CF0AE747DC774113 +:10B5A000F62923DEDAA89DC7D968388FF3A826BF0D +:10B5B0003AB75EFD3CCEBE09F056B3361E23DE6AB6 +:10B5C000C7B1E3BCDEC8EF33418F668283FAEFE395 +:10B5D000E743022AFA01AF636C3BEAC9FB041FDDB3 +:10B5E0004F0EB87BA4CF155EB72436FA4771237689 +:10B5F0007D5D15968B7AEBD76E2BA4F36AF671EE10 +:10B60000D3481E7D5D1EC0B81059BF272C3F1AA716 +:10B610005FF7ED2902DE2FAAD3455CAE3C80B82F40 +:10B6200051D317985950D1D52B5D5F40EDE52C7A59 +:10B63000832D76905E44F7A727AF8B1EBFDCF061A9 +:10B64000F03A07C5A1F8AE233A0BAAAB713E8A6D5A +:10B6500034BE2477F43AD90DF4DCBF85CB516B1E90 +:10B66000E3F74A654A81B1E20A1F13383EE93087A1 +:10B67000E83EE88E867401FDC9FAFA5CD2F6C5E1AF +:10B6800064BEAF916ED48879D2CBFD6AB325EADE71 +:10B690000E3D4E40B7A37569F72277959E24FBC9EE +:10B6A000BE3A89CE6BCC96BAE99E64768F48DFAB02 +:10B6B000389EBC46EC80F4E146D311C4ADE58F0C56 +:10B6C000D177542E85B2B4FB8C3FD7548376AAE24F +:10B6D0007CB2EBEAF106FA3A30CD1EA2B7BF7F1575 +:10B6E0008F63D9A7D943CEECF88BDDB87F0FAEC9F5 +:10B6F000E618C0C05F53EAB4EFBA18EAB56BF49E1F +:10B70000A0DDA3D4B2223A1E7F759CF75FB7407EBE +:10B710008F7FE51D88D386F89E86F2662A9FA796BE +:10B72000C4212E285F313729326E3FA67D3CB719E0 +:10B73000615FFFE65685E63545BE81F060CA6589E2 +:10B74000F21F4C33D3FEF0AF95685CFE040FDD03AF +:10B75000E27FC4E43AC29BA675DFB7563AB22762CD +:10B760003D7FBD59A1711C5CFBAD0CACCF3ABD2E29 +:10B7700003F5ACCD5BF8F9EC1C0CE4CAC1F8581B1E +:10B780008FA35CC8CF41C7CA611EAF4A7C0C71DD74 +:10B79000A33C0EF209170B8C75EFFC89C6F36EBA49 +:10B7A00097185081558ECD37A60F5B822ADE9F7287 +:10B7B0005860BE6E3996BED7E747DF97D261566DA7 +:10B7C000C8EF814EC9CEF1FC6FDF7DB0C98C76ED3C +:10B7D0000D749EE2B1466EC76D592BEAE78B28EED9 +:10B7E000A7FC91952FA3DE7F691557AE8DEBAADBE1 +:10B7F000C77AFC27A2BE4BA3D3813EAFB0FE995BB4 +:10B8000071FD8B0689C9FCA1D63DCF6B2339FC762F +:10B810001DC71FA71A9F8ABADFB5F6D0D7E9FB1B51 +:10B820005B90AF000BB0649DA37B0D4AFCD631BF8B +:10B83000BFA1B7AB8F27C5DC4FE793D281F1A01D25 +:10B8400030A13CFADED7B3757C9D2F3D2D103FD142 +:10B85000EF09D5E38D6A99579A8AEB6FF69D44BC40 +:10B860006BBDC52A23BFC4FB5023F91BDE871A59C1 +:10B870002FDE871A99C6FB5023CBE37DA8D1F1D7E1 +:10B880009F8FCAC7FB4EA3EE23CAFF42B41CFE988B +:10B89000E7A6D2CB7DF45D8EF5E37C9723BDBCDFBC +:10B8A0008CF2F2DEADD1E7A98E6AF68152D71C1177 +:10B8B000F7D58FBA05DA47D5A077834607B8DF3BBF +:10B8C000E044BD64AFC0BECE62F5BD52A63C3A1B9B +:10B8D00079478789BEDF3279FD6F64099AF9DD6A9D +:10B8E00013E9818BBA7F7E02D347353DAEB2A3B850 +:10B8F0007C2ED4736B2E3F5F685D1D24FDB0642FDA +:10B90000DD120D7A23A3728397B3DB92141AA6D9A2 +:10B91000BC00CFDF733AB99BBD6F4E8271DFF3BEBF +:10B920005B42993AE2F33EBC15C659F5BE7C12D390 +:10B93000407C841F22F45EDA87EBB60E3EA3E27EE3 +:10B94000525C07515E87EFD571D1B9CCEC44C98DFB +:10B95000FCE96709C3C7BD4593B95787EB7DAF6E57 +:10B96000E6FB633CFDCF681F69860DF1C7B87766BB +:10B97000B4DD49DEA3FE0D418D233D52EEE6716636 +:10B980008C75E3B926E082946EF6717D761ABE82DC +:10B99000FD5AC7E8BB3E4ED64FF929B94CE9CA401B +:10B9A0003B3AF723E0197D4C83FE1B34A5703DD84C +:10B9B0004CC23140EB8DBFE76ABF178284CD5D7505 +:10B9C0005FD258FE59FD59A5C5418FA6658E0B174C +:10B9D000FFE36BDF47FDF0D5EDD7CFE5E77B79FDE2 +:10B9E000AFFEF0854C01F2CF14FE749650101EA7E6 +:10B9F0006E376895B93ED12A1F23BB424B09C04719 +:10BA000020E0967E3F8FC3AB63329EF75D2729957A +:10BA1000985EB7C746E7785B1DC6EF77ECD270A893 +:10BA2000E700D259F6289DF17EB45ADCFC5E9FE413 +:10BA30006131F25E9FD1FB659EBF97E4047EAF014A +:10BA4000ED571D9973AF1A0F6ED5EE5708AF1F6FE4 +:10BA5000C79AEB23FE6F457E9D1AFEBE47F9B48957 +:10BA6000EA8B9627A3F579763092D39A3C59B3B6F0 +:10BA70008FEEBBDCD06B9571DC17FBBE5C88FBEEF8 +:10BA8000E2235F6F6311F75DFFE25BBF9B86EDE52D +:10BA9000050F2462FB6F6BE7082F1C7F5C5222CAE4 +:10BAA000D59BBB25F42FACE9FB9D05FDB5B7377ED3 +:10BAB0005DC2FB0FF5FB3D60A75BC8BEAEF5A7FE00 +:10BAC000D0F6E558CF8640531B7DDF8D95278E75C8 +:10BAD000CF7671575A22D6736E6F1E9D533CEF9FDF +:10BAE0007755F9774E6B2FA4F9B96F60CEC4483AF9 +:10BAF0001CEAE0F53477ACA47A2FB4E4BC81F3F00F +:10BB00007E07976B7AB9F3091CCFB22B3987D14FD7 +:10BB100050D1514171C74350BF0AFA5FFA367EAF28 +:10BB2000C6928E2C8A6BAD6C49961468A752CD587C +:10BB30008EA6C1CA16A13F0ECA4FDFA6703FE0DE37 +:10BB400064C95D80F5CC21FE06F54A02D52BC828D4 +:10BB50007F27AAA7A21BDEB763F96289CECFB26E98 +:10BB6000AAB77AAF29EABC4D1ECB1FF3BEF2E2158D +:10BB7000FF64C3F176798AE85EF51BD842FA9E4EDF +:10BB8000D76B2676B578EA766D3EC7CBF72BBCBE71 +:10BB9000E6D2EC38AC7F5FD1DC97693E4BA5A8F9C3 +:10BBA000DC3F3A9FF34E57237F29F592FF04EB5772 +:10BBB000A1FE5BF5F92C75D177D7524B0619D2D778 +:10BBC000526DFE128A5C8217D2A9993E46F1005747 +:10BBD000E60902D5C3E83B504B4A0719BE9750E22D +:10BBE00012F0BD544863F90445E5E5B5F9B2658A3C +:10BBF00051788F15A86C617AF83B6466661E46F929 +:10BC0000DD817B5208EF6BFD1E2E9D7EC7BB8F6BC7 +:10BC1000F4FC25F369FE105EBEC5D24FE9D36F86F2 +:10BC2000B6927DBB219EF84FBB25447620784B26EB +:10BC3000FFBEC17EAADB878F6CF56CD886FCFF0542 +:10BC400039887C47F75B9DB95521BDA4FD9F4D14F4 +:10BC5000B7ADFBDD2C7C88CC92C9F590517EE0908D +:10BC60000C7E360FF169DDBF36D9F7AE394E7992C9 +:10BC7000F20B2682E6658393CBA95CD427500FCEC6 +:10BC80006772D3CD742F19D965D3AB19DB9D81F7BA +:10BC9000D9B845DCA7EA434932DA4F98D92D1EC0FE +:10BCA000F7175E27F3F31E7C1D72D5578553F0DE20 +:10BCB0005FC50BB20872BAB0710EDD7B138E5F7276 +:10BCC000117F194F7E9DDFE93C847166A19DF98744 +:10BCD000302E6D547EA98284DFB9A9DA3B300BF790 +:10BCE000F744F26D48936F433F5C349DE4DAA35C04 +:10BCF000AEE9E55FDAF18544A4E7A12BF3DEC0F3FA +:10BD000021BFAA36D177432BD9C879341E3CFBBF5B +:10BD10003C5F6D011CF165BC6409F0D1D16D7FF110 +:10BD2000557511F0BFA6261171217B5A52C45B5084 +:10BD30002F0E2C233FE77F242AA8EFBF356564AB85 +:10BD400027A29D67B7717BF0B3DB44EDA9F07B4D73 +:10BD5000986F19DD53B194B1BD78DF187BF1419C28 +:10BD6000EFFCED09640F3D57DFB42BFD2AED7CB9E4 +:10BD70006ECE61CCFF7953225D5E39D4F5D3F938AC +:10BD80002F4396E0FCE4028A0F9F4EE5EF8BA3FB66 +:10BD9000025828F801D9D95BB328BE6071CB9CE961 +:10BDA000E789CF713FDA3A93CB2961F976137D1792 +:10BDB00066A8EBBA37F0FDD3DB2CDC1CE6ED9EBFAA +:10BDC00002F6FB4FB671FD7A1DC0272A5F9BC0EDBE +:10BDD0003E5AFEE9E932DD5BA4D383A9654E1BF22E +:10BDE000ADAA02DF34390257E8F79474E5725CD1EA +:10BDF00095CB7185B918F60CD0A3F9EF9FE6F11633 +:10BE0000DA3D22C6FB41BA8A38AE08F8AC065C318E +:10BE1000780071F891A6685CD165E9E6B8226F7880 +:10BE200031DEBB1CF08B8CEBB7BC3F47017760FF6A +:10BE30005A12DC4EF403B432CE175ED9E639B76D30 +:10BE40003EFA5324F273FC78ABE65774A4D03ED389 +:10BE50009F13EDB7DD161E773C1E1F1272879F41A0 +:10BE60003C74C8047ACCC2B03F8DBD10E27E991BF1 +:10BE700024A28B57B6793FC0FEEC5EFFCD72BA3F6D +:10BE8000DAC81F35BF59A699E34C11F62FEE67DDCE +:10BE9000FF6EEC973718473883A9096C28CA9FCDE5 +:10BEA000F32F55E7D0B93766B3E723FF4AD5FA7BBE +:10BEB000FACA3CBA07F9FD2B49ACD985E6761F31A1 +:10BEC000AB54CD3F8CF6066E7FE0FC33558BCF4AEA +:10BED0007DA18DEC0B671F602EC1192ECFB4F22A05 +:10BEE000F3D177E65223CE0F47FA11CEDCEA6AC2CD +:10BEF000B885962CB36F972BEA7D81E489663FA5C0 +:10BF00007E0AB1F5CFD2F402C82AFE680C3B9B3101 +:10BF10006D550C76E27CCEC71D4CFF8BB0B399F00B +:10BF20001CA09BCEDB9C5D6C7335615F3CE3C8035A +:10BF30004D8EE8F53864833CF018ED657C3D0A5081 +:10BF40008040FD558D02F9936C6BE72F477A1FDE19 +:10BF50002DD07D3D6F1FBC89BEFFB1B883EBB335DB +:10BF60002AFFDE25BCFE4BB4276CD5D6AFE637835F +:10BF70006D68AFAB749A186A9655BFF5F6A0DD727E +:10BF80005B6382CB0D45CEB120BFA77AAF40F6BE32 +:10BF90008AD6F9273743FE865BAC141FD1ACED8FF0 +:10BFA00095F7733F66A8DCB2AD1C7F339DA1FBEA19 +:10BFB000AAE6B16CB46B8C8EE769AED783FCA7F1AF +:10BFC0006C50A3F5F86D1DD1E92A837F79FDFDD171 +:10BFD000FAFBFAFB59D43D7B38AED4944FDE0EB356 +:10BFE000F3FD3CCB3C288EE5D7D1D761F47BA2F39F +:10BFF000753FFCA01BF14AEA42AB260FF93D7CBA23 +:10C000005FFEA8E46A42FB4B4FB16D04FD6709EC8B +:10C01000B7C5587EF4DE4ACD4F3FDEFD7AA906BB98 +:10C02000468221ADF38BAFDE1F7DBF9EFEDD269DD8 +:10C030002F18C7A3DF8FF771EFC1D3EFD7D3EFC1AD +:10C04000D3E745619C3ECF69F74B9C6D19A2F885FB +:10C050004B8D1CFF373DFF30DDEB73EE71C145C7E3 +:10C0600035353B97579B276FE3CCE528774EC23C8D +:10C07000A25EFF59DBA3EE427B5454BC8642F6A578 +:10C080000A3C8787EBAAD1936E9FAA6830D1B9EB9F +:10C090000AE3BD75072CE134435C119DAFEF9FEFC0 +:10C0A0001BE85AA7BF89E4897EBFB9D10FF4777D19 +:10C0B0008F55EE81F91B7E3C83EE7FFEC9FDBABF32 +:10C0C000CC47F166B50146F68F3F54BC8BF1BE7587 +:10C0D000FDF9DAFDC204F13063FBA5DA3E611C9084 +:10C0E000FE3C3DBDFBEE05B08E535F33B9E01766F5 +:10C0F000AAEB7F1DD3D70D9A5CB72BE1F5380BFF68 +:10C100008DF46A4EB6D179BDC7D8A093EB19BE01A4 +:10C11000FA8ED57A7E8F392008F2EF9F58B1662AC1 +:10C12000E29BA3C9218A1FE89BC5BF93D5D32544B1 +:10C13000C70FF8535C4D90FEAFFBB91FAE4AFBEE44 +:10C14000F58369ABE8BEE2E11E1EBF3D9C10C858F6 +:10C15000610F97B38AFA77371401BFEBF0CA342521 +:10C160006305A4FF53CBD7E7615F9CA6FF31452051 +:10C17000F9A2953FA8FBE7BAAC84D3524AB8BFC135 +:10C18000FCA8F508E2A68FEE57B47952281EE26F9C +:10C19000BABE9AC1FDF33C7EA127C163C3F3B2FFCF +:10C1A00017BC977E8C008000000000001F8B0800E9 +:10C1B00000000000000BB55A0F7454D599FFDE9BA8 +:10C1C000376F66C20CF3F20F1348E085242A6B9098 +:10C1D000494862D286F012FE054CB78F1830545C85 +:10C1E00027088AAD844908165D3413120889890C22 +:10C1F0009244E839BB8CC4B1D5F5D0AC676BC57F30 +:10C200006740EC82AD367AD8AEBA5483D0D453F4BA +:10C210009CD9B6B0E3AE2DFB7DF7BEC9FC4902D474 +:10C22000EE8E476EBE77EFFDEEFDFEFDBEEFDEF754 +:10C23000C6FA4C8A570038DF2F0214031CE8053F6A +:10C2400020FDD4A1DBAAE7217DBECA1A0217808493 +:10C25000DD9086FF3F02FE008DEFFBADD08EF4D067 +:10C260006FEC6052904E1F3DBE896841F57871FCBD +:10C2700081CD63ED0F133F55F200F67FB8F17CFBE3 +:10C28000CFB1FFF75F39D97880D1E39BB1FF5ECDA5 +:10C29000EAE9C1F1B37B65D06E06F6BBC2FE759FBD +:10C2A000CEC3F1B31B44E85101FAFAC68E13DD2761 +:10C2B000C008ED67F66B637F82E9D802CEB31AF34C +:10C2C00072E85F1920C2C70430D06701984954FA58 +:10C2D0008EA084EB4920921CF71E34F9BD385E3ADB +:10C2E0007487130AB0356B8A62C739F45B1C6D3FE3 +:10C2F000690308DE14A5DD3B2DD1F52096BFF3E5DB +:10C30000601E7FAECEC0D5D81F0001D08FE7A19CA4 +:10C310005E805040E1FD504AFBC6DF5C6CD7CBE746 +:10C320004CB7469FA7529B8BEDC68BED41D237EAA7 +:10C33000AFBA0CC7D5C7EB2715388D2C8357D01E45 +:10C34000951E812DBAD8838B96F06DA445F681B6E3 +:10C350004BEF17351B5B47177407C00F046818466F +:10C36000B9C1E09B01F0B32B73397F05E7A5223BF0 +:10C3700040FDAD20BEC8AFC6A3B03675B3ACD9A6DC +:10C38000D32817E313D9C7B8FE49C619861C42B48F +:10C390005F32F6F9E2565DF7E0A616BCD120B8711F +:10C3A000FD2E5A87F4B386FBD5DBD97ABB83FC4ECE +:10C3B00000CFAE426C6D7AFB34D403F635B717B2BA +:10C3C0006532F262F59760FF808DFBA97740F00738 +:10C3D00072A2F2B17E1CBF115499E46A2447413D18 +:10C3E000DFEFC9654ABA073C0DF41CD5D6A990DF2A +:10C3F000F50BA5E4771BED397232B68D69C21E6A62 +:10C400005764FDA7D96DA77D7AAD73695FDD26D727 +:10C410002EB2B363F427FF4E72743B5C0175A21F0A +:10C420007DDF2332FD3D497AB7B3ED6822CA912FF3 +:10C4300040E4E716516F070CA2DB93CCF55DAB57D8 +:10C44000DB709D735D738A687B1D1E60CF514EC685 +:10C4500027719DDDB44E7ADC3ACF903DC60C7FBC8F +:10C46000EF6072656301F1170CE740D7C4FE1463F7 +:10C47000DD941AA592E4EB217B53BF74AE509F8FDD +:10C48000EB25737E9AA854AE7644D7EB31D6032BB6 +:10C490001FF703C1BF2E4CFA3F24B802F87863BFE0 +:10C4A00025CE6F1B0F0ADE69E83F8D7BE3E3E81EB4 +:10C4B0006F3C3D68F81DC4DAD7C470C8CDFC16B80F +:10C4C0009D3774E61CE911A2747AADCAE857C7E734 +:10C4D000FBCF0AF83CA5D7A2F6E4903F71BF9F8836 +:10C4E0001BEA729A3F7BAF5044F37F18D18F74AE32 +:10C4F0008AFC73C33670F5A04A1AFF453F368A7A24 +:10C50000B4C4ECC31B8917E423BBCB6C75A887614B +:10C51000637E444F47FF76AE8D70E6CD9A22DB28CE +:10C52000EAF1EED61C81F49CA887447913E9F41D46 +:10C53000F13890522B8337867E9DFC239DCBE78D6F +:10C54000916FAFA4AD23F9F6EAF81CB7D69F2C374C +:10C55000F8C93FF41C1051BEC367963C13D1A375B4 +:10C5600006938FFDCE6F35337E878B07E1619CDFAD +:10C570009527FA05E4B7400E7E61C279502AAB14C4 +:10C58000B727922F9BAE20DD7FD0F4B425272AB7A2 +:10C59000A5583E27105E64C9108CEC87E38C664575 +:10C5A000FFB7187E29AABEBDF938FF5296A8F490AD +:10C5B000FDF50D4C5F89FE3D15BF5F1BF1D579C8B8 +:10C5C0000441924BF2D800DBC1F59C4FBEF7B31784 +:10C5D0007F8EFC07460517C575C39A4F9FFF2794AA +:10C5E000E70F672D2EE2D1B91A6084CDF3B3F18342 +:10C5F0009B4FCCFF29F69FDF9CC4FA23EB9BC30221 +:10C6000068A9517A8DCD7D91F06C304D075ACF1CC1 +:10C6100096583FD831A2CA27EE3FD2B28C80F38E13 +:10C62000973C05942707D7887ED2DB60C99D02D945 +:10C6300069285B647978A8BC79A40AFB2FA74B2EE4 +:10C640002FEEDBE6FBEDE30B90CE2D363339F0B762 +:10C6500094F2469A1102B5BD419393885A70E573DE +:10C66000EFB48865AC95C50CD69AA9AD7509DE54B2 +:10C670001C3790B5F95913AEDB415D99A8DF35EF52 +:10C680002F61F357F2F98EB097E50F1B6819849765 +:10C6900098B71DE42FD31409289E06C3752BF37198 +:10C6A0007C7F9AB450C0FDBC5362637E654EAF4F31 +:10C6B00076C7E0D3A6661E0F5D66ED018AA7C0A30C +:10C6C000DC0F2D8F5DFEF07EF2A3BA24B65E60E033 +:10C6D000A10C778CDD5F6A96D9BCC0DD3C6E3F163D +:10C6E00061F3705CBF85D9FDA5661EEFDF7A80E33C +:10C6F000C01CAC63547C94BBC3DD4EF6ECAF97AA70 +:10C70000599EE915FDF93944D7AFBE83F65DBC4C9F +:10C71000A27D4B7D752B49CF817A91A932A0FF6212 +:10C720006915FE75C985E881FDFD32E607F2EFD98E +:10C73000CB25AA1B3E9647E717A37CAF36E7C7C5B4 +:10C74000F98C9D62D42F692B16AD9919A70D54CA87 +:10C75000474B77723A57B703D93BB77E29A367F4A3 +:10C76000CB6043DADAE0F39A711D6B9E7BA109D7A7 +:10C770007D33591669DDDC06EE1FFDC498E4D0ED6B +:10C780002C5FE6F62FF791FE73CF98C086E33BCD82 +:10C79000AE132441276210F94B20F9CC7AE22FF531 +:10C7A000C902E1D31B32D7CF1BA5E94F93FE573700 +:10C7B000CF65FBB7A9B8EF181CB1828FD521C7FB95 +:10C7C0004A3FA23A2D50627151AC56683AA32B1AD7 +:10C7D000645430C022701F223F5AF48105823957B9 +:10C7E000F5F749FDB0BF013BB02E1980917AB287B1 +:10C7F000372CB2FC59111A617E985AA316911EFA71 +:10C8000097EB3353D08E63869D07D22E7438490F31 +:10C81000C5E8A724E7C05AEE8733A4121ABF7D8D5E +:10C82000E825DC3FDCB73620E094A46689E3984332 +:10C830005F493873788DE43A42DB4873CD5C3D3F05 +:10C84000BACFA181E5F3288ED18F8DBAAE8BD57585 +:10C8500095FF93C4F436F400F889DF90CDF5D166E6 +:10C86000DA6F898DEDF7649F0C76E42B676E1CB24E +:10C87000607FFB2BDF09FE82D6E9E3769BB9F3727A +:10C8800027F9D3BB028404D2C32CC41BCA1F929BBA +:10C89000E10DC2E1F4128CE3D5061E1E95439DE422 +:10C8A0008F87B1FEDE857967B037E5ADFB71FE603D +:10C8B00006260144A46F2F357F3A1A572FFB852097 +:10C8C000F989DBEEA13CB528247D3A1A9B57ECAEE2 +:10C8D0005D24F7B7AACB42546FE7424C3FED2F815E +:10C8E000DEDDEC481B9B46F80EA594777ED7F6322A +:10C8F0009CA700F53DA5FF09F7B98906E2F3EFE231 +:10C90000C627AB439CDBAB7B9B791DCAFCF79D47DD +:10C91000453FE597C356F7E99B901EC2F306F9E73A +:10C92000606FDDAA79A4D733A6389C4D6CDF35EA59 +:10C93000F0407F9D93704555463BC9EF023B80E137 +:10C94000E0B72B1A57129F99187F64FF2EB33E93BE +:10C95000EAF9B483D320B810E981B5BF2475E9BAE8 +:10C96000E8B560FED0B546211667DE23FEE8E04359 +:10C97000BD9CFF54FB88F03BBC938FEBD78B1CEE28 +:10C9800049F2D41983DFF8383994A9144CC4BB4454 +:10C99000BE113ABD3997F979BFBE81F11F2C5E6691 +:10C9A000530BA279A5A276A4033D1ADE81D12526D8 +:10C9B00061625E19C79D7D06EEF4727A0EC62DF98E +:10C9C000E71CBD2E99FC21BF5E52A864B6F6FB346D +:10C9D0005B0CEE0C3ADC873691FFADB6B3381934F8 +:10C9E000707B70F54C81F0EFCDE4871A18BFAC195D +:10C9F00002F1FBB7669E7F913FC7AB7ED16FC3E765 +:10CA0000D280C8E2E612E215E1CF6072F109CA1FD6 +:10CA1000D27CEEE7897A4BC4211BC9934BB833C251 +:10CA2000708CE10EF23DBEEE3EB6BF082E05D6C9B3 +:10CA30003C3E4BCC6C9DA1F273DFA37D5CFE328942 +:10CA4000E5994530D231D9F9EE5AB814C1814DCDAE +:10CA50005D2F7BA5A8FEB7A77F63A68AFC861CA1D5 +:10CA6000757AC144FD5F6FFEAFA5F8C1F96443CA92 +:10CA7000BF91FECBCDBCAEAE6BD2A085F8B500D3D6 +:10CA8000EF87EFFBACE447DD797556F28B05F94F84 +:10CA90005AC92FBA879FAC994B78982531BF5A1C39 +:10CAA000FA65D22DA88FEE2C6921D553218F9BF1E9 +:10CAB00019AFA3F25B14CD4EEBFBBCD3C81FC10969 +:10CAC00001AAEFC05B5384FAEBCC3FA0919D4E6767 +:10CAD000C92EB2537E0BB7EFDBD9BE0C4C5DD06DC7 +:10CAE000D4D1F96EAB467AEECECA789AEA8155E295 +:10CAF000D379FBB1FF8616BEFF0FF28A9C93D571E6 +:10CB000091D61E3681867E9F64D45576C90764A768 +:10CB1000FC1695AD979427C6D5BBB7E78D2C13B1FE +:10CB2000ABDB1139DFF837D2FA8D376756F5C4C45D +:10CB3000C11C63BF855BF5FC166C57CDC002A6888F +:10CB4000F842E4DCE3A1F39789B3863F9BDD6C9C5C +:10CB5000F60CBF07B166809FE491EC3AAB7F766F2D +:10CB6000D56E6C61F61A65FE8D0912028513E59982 +:10CB70006FC8FD5993564AFC4A0DBBDDAAF858BC54 +:10CB8000DC0AA2AB83E252D3D8F95C30F03E4B1AF8 +:10CB900066759FB8117307FA0DBCA6681B685CCB5D +:10CBA0007417E1F5DFBD5A66B550DD3C2A258F5973 +:10CBB000F9BE27D367D4BF24188BB907F960AB56E9 +:10CBC00049FB796F8BAE51DB993C08844B604FBBBE +:10CBD0002E3F7D3B5BCB203F8FD4899DC6F9F36808 +:10CBE00095D610EBFFF586DEEB5B789E961ACC2C83 +:10CBF0008E8EBEB24A990C57C35BDC77C5FAA5A4EA +:10CC0000B8641A779761A76BCDCF69C2F925B1F3E4 +:10CC10003576AE5A25733B09A8AB8ECC683C9E0690 +:10CC20004FEF3AB46BA859E5F1F7A3F7EC748FB066 +:10CC30004AF6E7F962F0F55AFA500BDC036B5075CF +:10CC40001D8AE8A2F8D2CCA3EFA84837621D46742B +:10CC5000623C47DA45A1787C5B1C4E8AAB17AB205F +:10CC6000358E5E629D15377E99921BD7BF22E39663 +:10CC7000B8FEC2ADEE36D2C74A7561DCF3DB6FFE9B +:10CC800066DCBCB12D7A3B8D5B91BD299D7064C380 +:10CC9000566D17D15F23CF77D3BCFB2A75E61FBB38 +:10CCA000D30DBF78E5BB4C3FE6F49442E6ABC6F843 +:10CCB0001F1BF181767B32D66EE6346EB74E45642B +:10CCC000F5EB5A87E8A773C9C7F6BAABE24705E2A6 +:10CCD0004710716311E207B595E169AC5D1CB6B10F +:10CCE000560BA7B2B62A9CCCDAEAF02CD62E0967EE +:10CCF000B276693897E5DD65E11CD62E0FDFC2DA22 +:10CD000015E179ACAD092F64E356860B59BB2AFCBB +:10CD10004DD6DE1E2E676D5D93FE3C93FFD0763BB5 +:10CD2000E9F183ADFA0B44770978FACE65F1364C18 +:10CD30003420AED17DD9B0E1D7579AB46186EBAF3C +:10CD400069EC5C0122FA11B647B6B85F62CF13F006 +:10CD500041507EF6259D7B1F6972BFC2FAAD56AB6E +:10CD600084F6311BF8654E031637679BB45759FF9D +:10CD7000D7C489EBC583A339A1BB290FFCC6C083E7 +:10CD8000FC86C76C7528DFAF8CB83F7A63A4BE0DF4 +:10CD900039A89EFE643DDA91F0A63F7552FE26C387 +:10CDA0008E11FACE261E9F26C9C5F281292CB3FE0C +:10CDB000B12DEE8F48BE15D90186FBA76EB669E48A +:10CDC00027ABE622BEA7309CFE8F168EFBBF667A8D +:10CDD000302B32E9FD1333C703DCBD629AC5F47C06 +:10CDE00081D92541CF88BBC1EFC7E02EEAFB33369E +:10CDF0008E143E83EE09F9EF9E9D02D3F7D7D5F34B +:10CE000095267E9F1AD1C7547A49D47B045750BEC9 +:10CE10002F49BEA084F2612DD5A1FE44A33B3C5B0B +:10CE2000C8AB39597CBBFF4CFD96B01E247A6DCE41 +:10CE30001276358B717EE56BC6B9BC8DC5F908CB12 +:10CE4000FF7D8E910C17B5661EEF6F678F34E8314A +:10CE5000F3666E3331F952B6F17C70DABEEB245DC5 +:10CE60002955E48D98A8DDBDD59D42FC2AB3424BDF +:10CE7000482449C1935001E59311964F08F76F9AE2 +:10CE8000CE717FC324F11FDEB261E6B684BC41E3FC +:10CE900030EFCEDAF657F83FC6652EEDEB7AE32099 +:10CEA000C61E05B4AE57F2DA8B280F18790171F659 +:10CEB000567A7E4ABD3782B30BB67D3DFD9772FD33 +:10CEC000BB781ECEE1F5975911BD37303D7D4769DE +:10CED0009C343F362E8ED513E12CDDFF4E823BCBAA +:10CEE000B64D120F31B8B392F54F8D3BABFE3ABD44 +:10CEF0001BF160E8FD2FC5A18FE951791487EEDFA2 +:10CF0000C6EF9BA6C4A11DA993E66713E59198738C +:10CF1000D8441C92583FDAFB01D287264D892F9EB8 +:10CF2000C9F43909BEB432BDFD7FE18B21E754F26B +:10CF300026EAD302773B094F64E5896317164E361C +:10CF40004E6675055DC15E61F781590ABB2730D613 +:10CF50008DF0C93FB9F3F0289DFBF0D044FEE5AD5C +:10CF6000F6FC9068EF2E8B42F5EF53D31E3B3C8AC4 +:10CF7000CF77485685DFC07A6EA3750F18E766A491 +:10CF80001730DA0CEBC8BEB4AFD8F70EFFB08DD7B0 +:10CF900011A9B4CFD46BEF6B4593F68F648F54D93E +:10CFA0000D37E2FAFBE789ECFD9F6A57D66DC47D29 +:10CFB00074655859BCA6AE580B5EB28F93DF13E26E +:10CFC000F9E2540EF6EF9927B2BA0E514AA57DEC5C +:10CFD000C9067E3FE47DF0BF8305B4BA95BD57DC3A +:10CFE0009F25B2734347D6D5EB96BD869CE37E97CB +:10CFF0000F7EAA73A3747F4D35F2F3E1F987D4E174 +:10D000005BBA4121BFB5E5A3DCDFA075373F42EF36 +:10D010003355085999BD1671BF9E6ABDCE84F5A4DB +:10D0200034A872B37B279742F5D6E38E3C21F6FCF9 +:10D03000F46E2BCFE38F3B0C9C49D380EED3BAB276 +:10D040004B4BC9CC564583315CCF9AA6C3796CBB98 +:10D0500032AD0D7E1CB7CC54A157A3BEF6AB29C987 +:10D0600016F277E35E6BC0F0EB53AD3C1FF4B5F9FD +:10D070008E5D3093BDF7B216A3D4DB88F3ECC6FB0C +:10D08000E054AB4BF0D0FD4D2DF6C7D4B1D38B712E +:10D090005E4C1DBBC7311EDF56927FAF5A47778269 +:10D0A000E028C3FA1145D857F67BF65C85512BC5AD +:10D0B000E9BEB2ABDBE509434F4FB659E3F435DEC9 +:10D0C0003F7B34C385F39F28193D782FEAC39965C8 +:10D0D00075D5100E06CB3E3421FD44850CFC5EDE7A +:10D0E000783FBA543C47F74DFBCA711F0513F761EF +:10D0F00039F125A8483BA510105FA7FA3ED0B97CAE +:10D10000D0D8C78A620F28288FF38CC94FF72CCE4E +:10D110000660E7D319C5FC7EBB3DF35741C460D818 +:10D1200077379EB9491F669E9FED156367F1B089F9 +:10D13000A2AFAFA27D66CC328185EE39EAF97B934E +:10D1400006FC8FDE9BDCD020C79D0BE87DED389D73 +:10D1500043F3E5E83982E2C1B4FEAAF7633BCEDAD5 +:10D16000DE3A196BAFD6F87BC46BCDFFAF36EB5B05 +:10D1700027D11FF65FC34EBD6D654C3FFBDB34D638 +:10D18000EE6BAB61F783CF525E3547C7DD68DCAF2E +:10D19000EC797404EAB075041F86B9182FC5867F30 +:10D1A0003FDB661562C75B0E8240FA47F41424CA5F +:10D1B0008F0781DDEF2EFEEAC77BE97DEFFE33B9F5 +:10D1C00045840391F1113E11FA39C36E3D37F37B6B +:10D1D000BFE7968A351417CF49BEA494ABC8F3377E +:10D1E000CFC4BF37883C8FC4C778BC08A0D1CBDA86 +:10D1F00003C91C17FB82DDECFDA47226F7882D26DF +:10D200007E17B7F2FC974A804C85A116FFBE6C5F73 +:10D21000218AB8E0DAF115E1B77F11CC062C24F7AA +:10D220002D93599C3B2B95CCBA183BBE6EACB73FA7 +:10D2300099E3456F3664D6154CECF719EF917D36BE +:10D24000687871127DBCDECAEBC65EE3FD75C47EF4 +:10D25000D17E2BE3F37AAB81FFAA26905D52356B2A +:10D26000A88370033EF75E207D88E0B9A16CA27CA4 +:10D2700092CF033A8EB7633C11DE25CA6B87DE116D +:10D28000F67E117F5F216E39E80F1CE7A87917D869 +:10D29000F7186EBB6705F2B517C7C7CD5F1A17CD74 +:10D2A0001417B7005D70DA785CD48ABB71DF978A97 +:10D2B000F9B9973E07D01D53C707DC7675BCDFD799 +:10D2C00016FFDD4A62EB9C1E724321E2E51FAB1E96 +:10D2D000E9AC607A66F96CFF1F6B1FF1A2BE0FC943 +:10D2E0005A676B3A5D73F1F3456385EC65DFA974AA +:10D2F0009A3F1F7FEF807EE44C82467D123B3E2F9B +:10D3000057F7B6B2F7E728C7FC89768CB4870CBF0D +:10D3100048F473F4DB2014919D557E9F7D0D3F45AD +:10D32000FD01BDFFB8A403D39FF784208CD74DB374 +:10D33000C8FF712BA5C6D59F4058E915A833D12E3B +:10D340009974BB6CA2D7334181CEEFD930CAE8398A +:10D35000740B68A257FC2A6B734113A93F1FED445D +:10D36000F44DE065ED3CF0B3F61608B2FEF9745FDB +:10D37000C82F19258AD305417EAF5808AA899E2F48 +:10D3800004CD04ECAADFCDE8DBC0CBDA72701FBBA2 +:10D3900040F96BD17D8594A77F3AC15FAE0F474FAF +:10D3A000B502AFEB54FEDE634FE64353DDA39D6C45 +:10D3B0008DC1314B16BF8F99CA6EEF19F167320FCD +:10D3C000B37B4DD37CFE3EF7F19CC9BF4B3969D48A +:10D3D0006BB2D9CDBEB33245EA18387B8CDEAF4D87 +:10D3E0002547A4DD63769DA275F63844A0BA2D5A70 +:10D3F0007F9D39763C667FFF57F5EBC79276A1B5E6 +:10D400006492FEEBBC1F7C96FE2CA77380F605C5CC +:10D41000C12CD20EEEDFAA81E22D27DA27903FD869 +:10D4200037239DC9FCAD9DFAA7BBC145FD782E08E9 +:10D43000B3F8017E2FDC81FEDB5318A5DD6E833E41 +:10D4400098725D753DD47AD8F71F91F3DEC556B753 +:10D45000693BBB6702558A3DEFADC7F3DEAD4C7E3D +:10D46000697B09E54123FEAD76AF69FAC4F807355B +:10D470003B99FC723CCEAE533FBFA3BC8BE7DFA30E +:10D480008F0565C28F0783A765AA831EFCD13FCB9A +:10D49000947FEF31CED5DF33FC0F7696305A768B02 +:10D4A00027488E8BC3B947288E2E0E9B583D74B1EA +:10D4B00033E7080971F1853FBC7985CE1DD8CFCE01 +:10D4C000E6D01EF91E8E7D6F22197242ADA695B36D +:10D4D000F32FB0F7A191BC7DF1853B78DE1E36B10C +:10D4E000BC7DB6D2B78AF87F1E10C55DC86FD395D4 +:10D4F00025F0F7346F89D515C0799B9EFA62FE86B8 +:10D50000187F4FCCE3A2AAECA1EF482EB964FEFD30 +:10D5100090A1C7097A51267C1FC3BEC389EC57541A +:10D52000F5A663C487EE15D4A9F52B0D5BCE91FD4E +:10D530003E37C3CB827312BE09F64EB4E7C5567DA3 +:10D5400029F98530FCAFCC0F26D87767FA75D9F763 +:10D550007AC73D6EC4094008C8CF9CC172560F9B64 +:10D56000CA5C9A4675468506B1FAEDB8ABFA4EF23A +:10D570004BAA9709479CAAE11F054571EBD56D178A +:10D58000E3BECB88ACF7BFB2D1354FF02A00000024 +:10D59000000000000000000000000040000000004B +:10D5A000000000000000004000000000000000003B +:10D5B0000000002800000000000000000000001033 +:10D5C000000000000000000000000040000000001B +:10D5D000000000000000001000000000000000003B +:10D5E0000000000800000000000000000000000033 +:10D5F00000000000000000000000003D00000000EE +:10D60000000000000000003C0000000000000000DE +:10D610000000000000000000000000000000000802 +:10D6200000000000000000000000000000000000FA +:10D63000000000000000000C0000000000000000DE +:10D640000000000E000000000000000000000004C8 +:10D6500000000000000000000000001800000000B2 +:10D66000000000000000001C00000000000000009E +:10D670000000001C0000000000000000000000137B +:10D6800000000000000000000000003E000000005C +:10D690000000000000000001000000000000000089 +:10D6A0000000000200000000000000000000000177 +:10D6B000000000000000000000000010000000005A +:10D6C000000000000000005000000000000000000A +:10D6D0000000000000000000000000000000000347 +:10D6E0000000000000000000000000AB000000008F +:10D6F0000000000000000008000000000000000022 +:10D700000000C00000100000000000080000C00879 +:10D7100000100000000000020000C0000010000027 +:10D720000000001000009C0800040000000000043D +:10D730000000C08000100000000000040000C0884D +:10D7400000100000000000020000C0800010000077 +:10D7500000000010000093380001000400000001E8 +:10D760000000934000000000000000020000934809 +:10D7700000000000000000080000934C00000000C2 +:10D7800000000002000093500000000000000008AC +:10D7900000009698004000000000004000009358F0 +:10D7A0000080000000000048000094580040000085 +:10D7B000000000080000946800400000000000180D +:10D7C00000063010002800000000002800009950DA +:10D7D000000800000000000100009951000800004E +:10D7E0000000000100009952000800000000000144 +:10D7F00000002008001000000000001000002000C1 +:10D80000000000000000000800009BB800000000BD +:10D8100000000008000000010000000000000000FF +:10D8200000000002000000000000000000000003F3 +:10D8300000000000000000000000000400000000E4 +:10D8400000000000000000050000000000000000D3 +:10D8500000000006000000000000000000000007BB +:10D8600000000000000000000000000800000000B0 +:10D87000000000000000000900000000000000009F +:10D880000000000A00000000000000000000000B83 +:10D8900000000000000000000000000C000000007C +:10D8A0000000000000000001000000000000000077 +:10D8B000000000090000000000000000000000025D +:10D8C00000000000000000000000C4C000000000D4 +:10D8D000000000200000C4E600000000000000017D +:10D8E0000000600000200000000000200000730025 +:10D8F000000800000000000800009BF0000000008D +:10D900000000000100009B900000000000000008E3 +:10D9100000009B93000000000000000100009B91AC +:10D92000000000000000000100009B9600000000C5 +:10D930000000000100009B970000000000000000B4 +:10D9400080000000000000000000000080000000D7 +:10D9500000000000000000000000000000000000C7 +:10D9600000000000000000000000000000000000B7 +:10D9700000000000000000000000000000000000A7 +:10D980000000000000000000000000000000000097 +:10D990000000000000060000000000000000002061 +:10D9A00000009B98000000000000000100009BD8D0 +:10D9B000000000000000000800000053000000000C +:10D9C0000000000000009BE00000000000000002DA +:10D9D00000009BE4000000000000000100009BE547 +:10D9E000000000000000000100000009000000002D +:10D9F0000000000000000001000000000000000026 +:10DA000000000044000000000000000000000001D1 +:10DA100000000000000000000000005000000000B6 +:10DA2000000000000000008900000000000000006D +:10DA30008000000000000000000000000000000066 +:10DA40000000000000000000000016C800000000F8 +:10DA50000000000800002008001000000000001076 +:10DA600000002000000000000000000800001AA8CC +:10DA7000000000000000001000001AB800000000C4 +:10DA80000000001000000001000000000000000085 +:10DA9000000000020000000000000000000017E08D +:10DAA0000008000000000001000017E1000800006D +:10DAB00000000001000017E2000800000000000163 +:10DAC000000620780038000000000038000016F042 +:10DAD0000000000000000002000016F2000000003C +:10DAE000000000020000A040000000000000002034 +:10DAF0008000000000000000000000000000E000C6 +:10DB000000200000000000200000F30000080000DA +:10DB1000000000080000170800000000000000D806 +:10DB20000000174F00000000000000010000172750 +:10DB30000000000000000001800000000000000064 +:10DB40000000000080000000000000000000000055 +:10DB500000000000000000000000000000000000C5 +:10DB600000000000000000000000000000000000B5 +:10DB700000000000000000000000000000000000A5 +:10DB800000000000000000000000000000001788F6 +:10DB90000000000000000001000017C800000000A5 +:10DBA000000000080000005100000000000000001C +:10DBB000000017B00000000000000004000017B4CF +:10DBC0000000000000000004000017B80000000082 +:10DBD00000000004000017BC000000000000000866 +:10DBE000000017A80000000000000008000017D87F +:10DBF00000000000000000020006000000400000DD +:10DC0000000000400000C000004000000000004094 +:10DC10000000C02E00400000000000010000C00015 +:10DC200000400002000000010000C00100400002AE +:10DC3000000000000000E2000020000000000020C2 +:10DC40000000E20400020008002000028000000042 +:10DC500000000000000000000000E20000080020BA +:10DC6000000000040000F50000280000000000286B +:10DC70000000F64000100000000000100000F64A0E +:10DC800000100000000000010000F6C000200000AD +:10DC9000000000200000F6C000020020000000028A +:10DCA0000000F300004000000000004000002008D9 +:10DCB0000010000000000010000020000000000024 +:10DCC00000000008000011A800080000000000018A +:10DCD000000011A90008000000000001000011AAC6 +:10DCE00000080000000000010000400000200004C7 +:10DCF0000000001000005900003000180000001063 +:10DD00000000590800300018000000020000570011 +:10DD1000000800000000000100005701000800009A +:10DD20000000000100001158000000000000000188 +:10DD3000000011600000000000000010000011ACA5 +:10DD40000008000000000004000040000020000067 +:10DD50000000002000005300001000000000001030 +:10DD600000000000000000000000000000000000B3 +:10DD700000000000000000000000000000000000A3 +:10DD80000000000000000000000000000000000093 +:10DD9000000014700000000000000001000014B03A +:10DDA000000000000000000800000050000000001B +:10DDB00000000000000014780000000000000004D3 +:10DDC0000000147C0000000000000004000014802B +:10DDD00000000000000000040000148400000000A7 +:10DDE000000000040000148800000000000000088B +:10DDF00000002AF000800000000000800000000108 +:10DE000000000000000000000000200800100000DA +:10DE100000000010000020000000000000000008CA +:10DE200000002C70000800000000000100002C71B0 +:10DE3000000800000000000100002C720008000033 +:10DE400000000001000041580038000000000038C8 +:10DE500080000000000000000000000000002C44D2 +:10DE6000000800000000000200002C46000800002E +:10DE70000000000200002C5400100000000000040C +:10DE800000002EB000000000000000200000600034 +:10DE900000200000000000200000730000080000C7 +:10DEA000000000080000000000000000000000006A +:10DEB0000000000000000000000000000000000062 +:10DEC0000000000000000000000000000000000052 +:10DED0000000000000002F580000000000000001BA +:10DEE00000002F9800000000000000080000005013 +:10DEF000000000000000000000002F800000000073 +:10DF00000000000400002F84000000000000000456 +:10DF100000002F88000000000000000400002F8C8B +:10DF2000000000000000000800002FA80000000012 +:10DF3000000000028000000000000000000000005F +:10DF400080000000000000000000000080000000D1 +:10DF50000000000000000000800000000000000041 +:10DF6000000000000000312800080000000000014F +:10DF700000003129000800000000000100062A20EE +:10DF800026000040000000080000A0000000000083 +:10DF900000002000000040C100000000000000015F +:10DFA000000040F0000000000000000280000000BF +:10DFB00000000000000000000000600000200000E1 +:10DFC0000000000800004000000800000000000100 +:10DFD0000000400100080000000000010000404077 +:10DFE0000008000400000002000040600008000477 +:10DFF0000000000400004080000800000000000451 +:10E000000000400000080000000000040000400480 +:10E010000008000000000004000040400000000074 +:10E020000000000800004048000000000000000858 +:10E0300000008000000000000000001000005040C0 +:10E04000000100040000000100005000000000007A +:10E050000000002000005008001000000000000434 +:10E060000000500C0010000000000001000052C72A +:10E070000000000000000001000052C60000000087 +:10E0800000000001000030000040002000000004FB +:10E0900000003004004000200000000400003008B0 +:10E0A00000400020000000020000300A0040002074 +:10E0B000000000020000300C0040002000000001C1 +:10E0C0000000300D00400020000000010000300E74 +:10E0D000004000200000000100003010004000203F +:10E0E0000000000400003014004000200000000484 +:10E0F0000000301800400020000000040000301C28 +:10E1000000400020000000040000C000010000806A +:10E11000000800040000C0040100008000080004A2 +:10E120000000000A00000000000000000000C068BD +:10E1300001000080000000010000C06901000080B3 +:10E14000000000010000C06C01000080000000021F +:10E150000000C06E01000080000000020000C070DE +:10E1600001000080000000040000C0740100008075 +:10E17000000000040000C0660100008000000002F2 +:10E180000000C06401000080000000010000C060C9 +:10E1900001000080000000020000C0620100008059 +:10E1A000000000020000C0500100008000000004D8 +:10E1B0000000C05401000080000000040000C058AE +:10E1C00001000080000000040000C05C010000802D +:10E1D000000000040000C07C01000080000000017D +:10E1E0000000C07D01000080000000010000101848 +:10E1F000001000000000000400001090001000005B +:10E20000000000040000109800100000000000044E +:10E2100000001110000000000000000200001112B8 +:10E2200000000000000000020000111400000000C7 +:10E2300000000002000011160000000000000002B3 +:10E240000000604000080000000000020000604282 +:10E250000008000000000002000060440008000008 +:10E2600000000002000060460008000000000002FC +:10E27000000060800008000000000008000060004E +:10E28000000800000000000200006002000800001A +:10E29000000000010000600400080000000000020F +:10E2A000000060C0000800000000000800006100DD +:10E2B00000080000000000040000610400080000E5 +:10E2C00000000001000061400008000000000002A2 +:10E2D00000006144000800000000000200006142EC +:10E2E000000800000000000200006180000800003B +:10E2F00000000004000030000008000000000002E0 +:10E30000000030020008000000000001000030049E +:10E31000000800000000000200003040000800007B +:10E32000000000020000304400080000000000026D +:10E3300000003046000800000000000200003660C7 +:10E340000008000000000008000030800008000005 +:10E3500000000002000030840008000000000002FD +:10E36000000036A000080000000000080000804007 +:10E3700000080000000000010000804100080000CB +:10E3800000000001000080420008000000000001C1 +:10E390000000804300080000000000010000800031 +:10E3A00000080000000000020000800200080000D9 +:10E3B00000000001000080040008000000000002CE +:10E3C000000080C00008000000000002000080C2C1 +:10E3D0000008000000000002000080C400080000E7 +:10E3E0000000000200008080000800000000000122 +:10E3F0000000808100080000000000010000808211 +:10E4000000080000000000010000808300080000F8 +:10E4100000000001000080840008000000000001EE +:10E4200000008085000800000000000100008086D8 +:10E43000000800000000000100006000000800006B +:10E44000000000020000600200080000000000015F +:10E4500000006004000800000000000200006042AC +:10E4600000C00018000000020000604000C000185A +:10E47000000000020000604C00C00018000000080E +:10E480000000604400C00018000000080000605751 +:10E4900000C00018000000010000605400C0001817 +:10E4A000000000020000605600C0001800000001DB +:10E4B00000006640000800000000000800006680C0 +:10E4C0000008000000000008000066C0000800000E +:10E4D000000000080000DA820018000000000002BE +:10E4E0000000DBA000000000000000000000E000D1 +:10E4F00000000000000000040000D1000000000047 +:10E50000000000040000D10400000000000000042E +:10E510000000D10800000000000000040000D10C41 +:10E5200000000000000000040000D1100000000006 +:10E53000000000040000D1140000000000000004EE +:10E540000000D11800000000000000040000D1000D +:10E550000000000000000020000092800000000089 +:10E56000000000040000928000000000000000286D +:10E570000000805000A8000000000001000080544E +:10E5800000A8000000000001000080000000000062 +:10E59000000000500000805000000000000000104B +:10E5A000000096000000000000000004000094003D +:10E5B00000000000000000040000940400000000BF +:10E5C00000000004000094080000000000000004A7 +:10E5D0000000940C000000000000000400009410F3 +:10E5E000000000000000000400009414000000007F +:10E5F0000000000400009418000000000000000467 +:10E600000000940000000000000000400000942082 +:10E61000000000000000000400009424000000003E +:10E620000000000400009428000000000000000426 +:10E630000000941C00000000000000040000943062 +:10E6400000000000000000040000942C0000000006 +:10E6500000000004000094340000000000000004EA +:10E66000000092840000000000000004000092807E +:10E670000000000000000004000092900000000074 +:10E6800000000004000092A400000000000000044C +:10E690000000943800000000000000040000943CDA +:10E6A00000000000000000040000B9880000000025 +:10E6B000000000000000D000000000000000000486 +:10E6C0000000B10000000000000000040000B104E0 +:10E6D00000000000000000040000B108000000007D +:10E6E000000000040000B100000000000000001065 +:10E6F0000000BCB000000000000000040000BCB43A +:10E7000000000000000000040000BCB00000000099 +:10E71000000000480000D86800000000000000046D +:10E720000000D86000000000000000040000D86471 +:10E7300000000000000000040000D86C0000000091 +:10E74000000000040000D86000000000000000107D +:10E750000000D85000000000000000040000D85461 +:10E7600000000000000000040000D850000000007D +:10E77000000000080000D4C80000000000000008ED +:10E780000000D4D80000000000000080000000104D +:10E7900000000000000000000000D4D800000000CD +:10E7A0000000000800000000070A3300000000001D +:00000001FF --- linux-raspi2-4.2.0.orig/fs/Kconfig +++ linux-raspi2-4.2.0/fs/Kconfig @@ -218,6 +218,7 @@ source "fs/sysv/Kconfig" source "fs/ufs/Kconfig" source "fs/exofs/Kconfig" +source "fs/aufs/Kconfig" endif # MISC_FILESYSTEMS --- linux-raspi2-4.2.0.orig/fs/Makefile +++ linux-raspi2-4.2.0/fs/Makefile @@ -126,3 +126,4 @@ obj-$(CONFIG_CEPH_FS) += ceph/ obj-$(CONFIG_PSTORE) += pstore/ obj-$(CONFIG_EFIVAR_FS) += efivarfs/ +obj-$(CONFIG_AUFS_FS) += aufs/ --- linux-raspi2-4.2.0.orig/fs/aufs/Kconfig +++ linux-raspi2-4.2.0/fs/aufs/Kconfig @@ -0,0 +1,185 @@ +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_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-raspi2-4.2.0.orig/fs/aufs/Makefile +++ linux-raspi2-4.2.0/fs/aufs/Makefile @@ -0,0 +1,44 @@ + +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_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-raspi2-4.2.0.orig/fs/aufs/aufs.h +++ linux-raspi2-4.2.0/fs/aufs/aufs.h @@ -0,0 +1,59 @@ +/* + * Copyright (C) 2005-2015 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 "dynop.h" +#include "file.h" +#include "fstype.h" +#include "inode.h" +#include "loop.h" +#include "module.h" +#include "opts.h" +#include "rwsem.h" +#include "spl.h" +#include "super.h" +#include "sysaufs.h" +#include "vfsub.h" +#include "whout.h" +#include "wkq.h" + +#endif /* __KERNEL__ */ +#endif /* __AUFS_H__ */ --- linux-raspi2-4.2.0.orig/fs/aufs/branch.c +++ linux-raspi2-4.2.0/fs/aufs/branch.c @@ -0,0 +1,1414 @@ +/* + * Copyright (C) 2005-2015 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); + + if (br->br_xino.xi_file) + fput(br->br_xino.xi_file); + mutex_destroy(&br->br_xino.xi_nondir_mtx); + + AuDebugOn(atomic_read(&br->br_count)); + + 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); + kfree(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 */ + lockdep_off(); + path_put(&br->br_path); + lockdep_on(); + kfree(wbr); + kfree(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_bend + 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, bend; + + bend = au_sbend(sb); + for (bindex = 0; bindex <= bend; 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; + root = sb->s_root; + add_branch = kmalloc(sizeof(*add_branch), GFP_NOFS); + if (unlikely(!add_branch)) + goto out; + + err = au_hnotify_init_br(add_branch, perm); + if (unlikely(err)) + goto out_br; + + add_branch->br_wbr = NULL; + if (au_br_writable(perm)) { + /* may be freed separately at changing the branch permission */ + add_branch->br_wbr = kmalloc(sizeof(*add_branch->br_wbr), + GFP_NOFS); + if (unlikely(!add_branch->br_wbr)) + goto out_hnotify; + } + + add_branch->br_fhsm = NULL; + if (au_br_fhsm(perm)) { + err = au_fhsm_br_alloc(add_branch); + if (unlikely(err)) + goto out_wbr; + } + + err = au_sbr_realloc(au_sbi(sb), new_nbranch); + if (!err) + err = au_di_realloc(au_di(root), new_nbranch); + if (!err) { + inode = d_inode(root); + err = au_ii_realloc(au_ii(inode), new_nbranch); + } + if (!err) + return add_branch; /* success */ + +out_wbr: + kfree(add_branch->br_wbr); +out_hnotify: + au_hnotify_fin_br(add_branch); +out_br: + kfree(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 bend, bindex; + struct dentry *root, *h_dentry; + struct inode *inode, *h_inode; + + root = sb->s_root; + bend = au_sbend(sb); + if (unlikely(bend >= 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 <= bend)) { + pr_err("number of branches exceeded %s\n", add->pathname); + goto out; + } + + err = -EDOM; + if (unlikely(add->bindex < 0 || bend + 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 (bend < 0) + return 0; /* success */ + + err = -EINVAL; + for (bindex = 0; bindex <= bend; 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 mutex *h_mtx; + 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_mtx = NULL; + bindex = au_br_index(sb, br->br_id); + if (0 <= bindex) { + hdir = au_hi(d_inode(sb->s_root), bindex); + au_hn_imtx_lock_nested(hdir, AuLsc_I_PARENT); + } else { + h_dentry = au_br_dentry(br); + h_mtx = &d_inode(h_dentry)->i_mutex; + mutex_lock_nested(h_mtx, 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_imtx_unlock(hdir); + else + mutex_unlock(h_mtx); + vfsub_mnt_drop_write(au_br_mnt(br)); + br->br_perm = old_perm; + + if (!err && wbr && !au_br_writable(new_perm)) { + kfree(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); + memset(wbr->wbr_wh, 0, sizeof(wbr->wbr_wh)); + atomic_set(&wbr->wbr_wh_running, 0); + wbr->wbr_bytes = 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 inode *h_inode; + + err = 0; + memset(&br->br_xino, 0, sizeof(br->br_xino)); + mutex_init(&br->br_xino.xi_nondir_mtx); + br->br_perm = add->perm; + br->br_path = add->path; /* set first, path_get() later */ + spin_lock_init(&br->br_dykey_lock); + memset(br->br_dykey, 0, sizeof(br->br_dykey)); + atomic_set(&br->br_count, 0); + atomic_set(&br->br_xino_running, 0); + br->br_id = au_new_br_id(sb); + AuDebugOn(br->br_id < 0); + + 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)) { + h_inode = d_inode(add->path.dentry); + err = au_xino_br(sb, br, h_inode->i_ino, + au_sbr(sb, 0)->br_xino.xi_file, /*do_test*/1); + if (unlikely(err)) { + AuDebugOn(br->br_xino.xi_file); + 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 bend, + 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_bend++; + if (unlikely(bend < 0)) + sbinfo->si_bend = 0; +} + +static void au_br_do_add_hdp(struct au_dinfo *dinfo, aufs_bindex_t bindex, + aufs_bindex_t bend, aufs_bindex_t amount) +{ + struct au_hdentry *hdp; + + AuRwMustWriteLock(&dinfo->di_rwsem); + + hdp = dinfo->di_hdentry + bindex; + memmove(hdp + 1, hdp, sizeof(*hdp) * amount); + au_h_dentry_init(hdp); + dinfo->di_bend++; + if (unlikely(bend < 0)) + dinfo->di_bstart = 0; +} + +static void au_br_do_add_hip(struct au_iinfo *iinfo, aufs_bindex_t bindex, + aufs_bindex_t bend, aufs_bindex_t amount) +{ + struct au_hinode *hip; + + AuRwMustWriteLock(&iinfo->ii_rwsem); + + hip = iinfo->ii_hinode + bindex; + memmove(hip + 1, hip, sizeof(*hip) * amount); + hip->hi_inode = NULL; + au_hn_init(hip); + iinfo->ii_bend++; + if (unlikely(bend < 0)) + iinfo->ii_bstart = 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 bend, amount; + + root = sb->s_root; + root_inode = d_inode(root); + bend = au_sbend(sb); + amount = bend + 1 - bindex; + h_dentry = au_br_dentry(br); + au_sbilist_lock(); + au_br_do_add_brp(au_sbi(sb), bindex, br, bend, amount); + au_br_do_add_hdp(au_di(root), bindex, bend, amount); + au_br_do_add_hip(au_ii(root_inode), bindex, bend, 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 bend, 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); + err = test_add(sb, add, remount); + if (unlikely(err < 0)) + goto out; + if (err) { + err = 0; + goto out; /* success */ + } + + bend = au_sbend(sb); + add_branch = au_br_alloc(sb, bend + 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; + if (!remount) + au_br_do_add(sb, add_branch, add_bindex); + else { + sysaufs_brs_del(sb, add_bindex); + au_br_do_add(sb, add_branch, add_bindex); + sysaufs_brs_add(sb, add_bindex); + } + + 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)); + + /* + * this test/set prevents aufs from handling unnecesary notify events + * of xino files, in case of re-adding a writable branch which was + * once detached from aufs. + */ + if (au_xino_brid(sb) < 0 + && au_br_writable(add_branch->br_perm) + && !au_test_fs_bad_xino(h_dentry->d_sb) + && add_branch->br_xino.xi_file + && add_branch->br_xino.xi_file->f_path.dentry->d_parent == h_dentry) + au_xino_brid_set(sb, add_branch->br_id); + +out: + return err; +} + +/* ---------------------------------------------------------------------- */ + +static unsigned long long au_farray_cb(void *a, + unsigned long long max __maybe_unused, + void *arg) +{ + unsigned long long n; + struct file **p, *f; + struct au_sphlhead *files; + struct au_finfo *finfo; + struct super_block *sb = arg; + + n = 0; + p = a; + files = &au_sbi(sb)->si_files; + spin_lock(&files->spin); + hlist_for_each_entry(finfo, &files->head, 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); + } + } + spin_unlock(&files->spin); + + return n; +} + +static struct file **au_farray_alloc(struct super_block *sb, + unsigned long long *max) +{ + *max = atomic_long_read(&au_sbi(sb)->si_nfiles); + return au_array_alloc(max, au_farray_cb, sb); +} + +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]); + au_array_free(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 bstart, + aufs_bindex_t bend) +{ + return (inode && !S_ISDIR(inode->i_mode)) || bstart == bend; +} + +static int au_test_dbusy(struct dentry *dentry, aufs_bindex_t bstart, + aufs_bindex_t bend) +{ + return au_test_ibusy(d_inode(dentry), bstart, bend); +} + +/* + * 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 bstart, bend; + 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); */ + bstart = au_dbstart(d); + bend = au_dbend(d); + if (bstart <= bindex + && bindex <= bend + && au_h_dptr(d, bindex) + && au_test_dbusy(d, bstart, bend)) { + 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 bstart, bend; + + 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; + } + } + + bstart = au_ibstart(i); + bend = au_ibend(i); + if (bstart <= bindex + && bindex <= bend + && au_h_iptr(i, bindex) + && au_test_ibusy(i, bstart, bend)) { + 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, bend; + 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); + bend = au_fbend_dir(file); + for (bindex = au_fbstart(file); bindex <= bend; 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 bstart; + 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); + bstart = au_fbstart(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, bstart, bend, 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); + bstart = au_fbstart(file); + bend = au_fbend_dir(file); + for (bindex = bstart; bindex <= bend; 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 == bstart) { + for (bstart++; bstart <= bend; bstart++) + if (au_hf_dir(file, bstart)) { + au_set_fbstart(file, bstart); + 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 bend) +{ + struct au_branch **brp, **p; + + AuRwMustWriteLock(&sbinfo->si_rwsem); + + brp = sbinfo->si_branch + bindex; + if (bindex < bend) + memmove(brp, brp + 1, sizeof(*brp) * (bend - bindex)); + sbinfo->si_branch[0 + bend] = NULL; + sbinfo->si_bend--; + + p = krealloc(sbinfo->si_branch, sizeof(*p) * bend, AuGFP_SBILIST); + 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 bend) +{ + struct au_hdentry *hdp, *p; + + AuRwMustWriteLock(&dinfo->di_rwsem); + + hdp = dinfo->di_hdentry; + if (bindex < bend) + memmove(hdp + bindex, hdp + bindex + 1, + sizeof(*hdp) * (bend - bindex)); + hdp[0 + bend].hd_dentry = NULL; + dinfo->di_bend--; + + p = krealloc(hdp, sizeof(*p) * bend, AuGFP_SBILIST); + 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 bend) +{ + struct au_hinode *hip, *p; + + AuRwMustWriteLock(&iinfo->ii_rwsem); + + hip = iinfo->ii_hinode + bindex; + if (bindex < bend) + memmove(hip, hip + 1, sizeof(*hip) * (bend - bindex)); + iinfo->ii_hinode[0 + bend].hi_inode = NULL; + au_hn_init(iinfo->ii_hinode + bend); + iinfo->ii_bend--; + + p = krealloc(iinfo->ii_hinode, sizeof(*p) * bend, AuGFP_SBILIST); + 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 bend; + 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); + bend = sbinfo->si_bend; + + 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, bend); + au_br_do_del_hdp(au_di(root), bindex, bend); + au_br_do_del_hip(au_ii(inode), bindex, bend); + au_sbilist_unlock(); + + dput(h_root); + iput(h_inode); + au_br_do_free(br); +} + +static unsigned long long empty_cb(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, bend, 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); + bend = au_sbend(sb); + if (unlikely(!bend)) { + AuVerbose(verbose, "no more branches left\n"); + goto out; + } + br = au_sbr(sb, bindex); + AuDebugOn(!path_equal(&br->br_path, &del->h_path)); + + br_id = br->br_id; + opened = atomic_read(&br->br_count); + if (unlikely(opened)) { + to_free = au_array_alloc(&opened, empty_cb, 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); + } + + if (!remount) + au_br_do_del(sb, bindex, br); + else { + sysaufs_brs_del(sb, bindex); + au_br_do_del(sb, bindex, br); + sysaufs_brs_add(sb, bindex); + } + + 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); + + if (au_xino_brid(sb) == br_id) + au_xino_brid_set(sb, -1); + 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 bstart, bend; + 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) + err = !access_ok(VERIFY_WRITE, &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_sbend(sb))) + goto out_unlock; + + err = 0; + ibusy.h_ino = 0; /* invalid */ + inode = ilookup(sb, ibusy.ino); + if (!inode + || inode->i_ino == AUFS_ROOT_INO + || is_bad_inode(inode)) + goto out_unlock; + + ii_read_lock_child(inode); + bstart = au_ibstart(inode); + bend = au_ibend(inode); + if (bstart <= ibusy.bindex && ibusy.bindex <= bend) { + h_inode = au_h_iptr(inode, ibusy.bindex); + if (h_inode && au_test_ibusy(inode, bstart, bend)) + 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; + + 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) { + put_write_access(file_inode(hf)); + __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 = kmalloc(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 = kmalloc(sizeof(*br->br_wbr), GFP_NOFS); + if (br->br_wbr) { + err = au_wbr_init(br, sb, mod->perm); + if (unlikely(err)) { + kfree(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); + kfree(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: + kfree(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-raspi2-4.2.0.orig/fs/aufs/branch.h +++ linux-raspi2-4.2.0/fs/aufs/branch.h @@ -0,0 +1,279 @@ +/* + * Copyright (C) 2005-2015 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 "dynop.h" +#include "rwsem.h" +#include "super.h" + +/* ---------------------------------------------------------------------- */ + +/* a xino file */ +struct au_xino_file { + struct file *xi_file; + struct mutex xi_nondir_mtx; + + /* todo: make xino files an array to support huge inode number */ + +#ifdef CONFIG_DEBUG_FS + struct dentry *xi_dbgaufs; +#endif +}; + +/* 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_file 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]; + atomic_t br_count; + + struct au_wbr *br_wbr; + struct au_br_fhsm *br_fhsm; + + /* xino truncation */ + atomic_t br_xino_running; + +#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 +}; + +/* ---------------------------------------------------------------------- */ + +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 ((au_br_sb(br)->s_flags & MS_RDONLY) + || !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 && (au_br_mnt(br)->mnt_flags & MNT_NOEXEC))) + err = -EACCES; + + return err; +} + +/* ---------------------------------------------------------------------- */ + +/* 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; + +int au_xib_trunc(struct super_block *sb); +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); +struct file *au_xino_create2(struct file *base_file, struct file *copy_src); +struct file *au_xino_create(struct super_block *sb, char *fname, int silent); +ino_t au_xino_new_ino(struct super_block *sb); +void au_xino_delete_inode(struct inode *inode, const int unlinked); +int au_xino_write(struct super_block *sb, aufs_bindex_t bindex, ino_t h_ino, + ino_t ino); +int au_xino_read(struct super_block *sb, aufs_bindex_t bindex, ino_t h_ino, + ino_t *ino); +int au_xino_br(struct super_block *sb, struct au_branch *br, ino_t hino, + struct file *base_file, int do_test); +int au_xino_trunc(struct super_block *sb, aufs_bindex_t bindex); + +struct au_opt_xino; +int au_xino_set(struct super_block *sb, struct au_opt_xino *xino, int remount); +void au_xino_clr(struct super_block *sb); +struct file *au_xino_def(struct super_block *sb); +int au_xino_path(struct seq_file *seq, struct file *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 void au_sbr_put(struct super_block *sb, aufs_bindex_t bindex) +{ + atomic_dec(&au_sbr(sb, bindex)->br_count); +} + +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)); +} + +/* ---------------------------------------------------------------------- */ + +/* + * wbr_wh_read_lock, wbr_wh_write_lock + * wbr_wh_read_unlock, wbr_wh_write_unlock, wbr_wh_downgrade_lock + */ +AuSimpleRwsemFuncs(wbr_wh, struct au_wbr *wbr, &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-raspi2-4.2.0.orig/fs/aufs/conf.mk +++ linux-raspi2-4.2.0/fs/aufs/conf.mk @@ -0,0 +1,38 @@ + +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 \ + 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-raspi2-4.2.0.orig/fs/aufs/cpup.c +++ linux-raspi2-4.2.0/fs/aufs/cpup.c @@ -0,0 +1,1319 @@ +/* + * Copyright (C) 2005-2015 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 "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_ibstart(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, bend; + + sb = inode->i_sb; + bindex = au_ibstart(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)) { + bend = au_ibend(inode); + for (bindex++; bindex <= bend; 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_ibstart(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_ibstart(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 mutex *h_mtx; + /* 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_mtx = &file_inode(dst)->i_mutex; + mutex_lock_nested(h_mtx, AuLsc_I_CHILD2); + /* no delegation since it is just created */ + err = vfsub_notify_change(&dst->f_path, ia, + /*delegated*/NULL); + mutex_unlock(h_mtx); + } + } + + 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; + + err = -ENOMEM; + blksize = dst->f_path.dentry->d_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) + kfree(buf); + else + free_page((unsigned long)buf); + +out: + 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; + void *label; + } *f, file[] = { + { + .bindex = cpg->bsrc, + .flags = O_RDONLY | O_NOATIME | O_LARGEFILE, + .label = &&out + }, + { + .bindex = cpg->bdst, + .flags = O_WRONLY | O_NOATIME | O_LARGEFILE, + .force_wr = !!au_ftest_cpup(cpg->flags, RWDST), + .label = &&out_src + } + }; + struct super_block *sb; + + /* 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); + err = PTR_ERR(f->file); + if (IS_ERR(f->file)) + goto *f->label; + } + + /* try stopping to update while we copyup */ + IMustLock(d_inode(file[SRC].dentry)); + err = au_copy_file(file[DST].file, file[SRC].file, cpg->len); + + fput(file[DST].file); + au_sbr_put(sb, file[DST].bindex); + +out_src: + fput(file[SRC].file); + au_sbr_put(sb, file[SRC].bindex); +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 */ + mutex_lock_nested(&h_src_inode->i_mutex, 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 = vfs_getattr(&h_path, &h_src_attr->st); + else { + mutex_unlock(&h_src_inode->i_mutex); + err = vfs_getattr(&h_path, &h_src_attr->st); + mutex_lock_nested(&h_src_inode->i_mutex, AuLsc_I_CHILD); + } + if (unlikely(err)) { + mutex_unlock(&h_src_inode->i_mutex); + goto out; + } + h_src_attr->valid = 1; + err = au_cp_regular(cpg); + mutex_unlock(&h_src_inode->i_mutex); + 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; + struct inode *h_inode = d_inode(h_src); + const struct inode_operations *h_iop = h_inode->i_op; + + err = -ENOSYS; + if (unlikely(!h_iop->readlink)) + goto out; + + 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 = h_iop->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; +} + +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, *dir, *inode; + 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, mode | S_IWUSR, + /*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) { + /* + * strange behaviour from the users view, + * particularry setattr case + */ + dir = d_inode(dst_parent); + if (au_ibstart(dir) == cpg->bdst) + au_cpup_attr_nlink(dir, /*force*/1); + inode = d_inode(cpg->dentry); + au_cpup_attr_nlink(inode, /*force*/1); + } + 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; + } + + 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); + 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. + */ +static int au_cpup_single(struct au_cp_generic *cpg, struct dentry *dst_parent) +{ + int err, rerr; + aufs_bindex_t old_ibstart; + 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 reuduce 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 a upper branch " + "but not pseudo-linked\n", + inode->i_ino); + 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_ibstart = au_ibstart(inode); + err = cpup_entry(cpg, dst_parent, &a->h_src_attr); + if (unlikely(err)) + goto out_rev; + dst_inode = d_inode(h_dst); + mutex_lock_nested(&dst_inode->i_mutex, 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 */ + mutex_unlock(&dst_inode->i_mutex); + goto out_rev; + } + + if (cpg->bdst < old_ibstart) { + 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); */ + mutex_unlock(&dst_inode->i_mutex); + goto out_rev; + } + } + au_set_ibstart(inode, cpg->bdst); + } else + au_set_ibend(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); */ + mutex_unlock(&dst_inode->i_mutex); + 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); + kfree(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_dbstart(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, bend; + struct dentry *dentry, *h_dentry; + + if (cpg->bsrc < 0) { + dentry = cpg->dentry; + bend = au_dbend(dentry); + for (bsrc = cpg->bdst + 1; bsrc <= bend; bsrc++) { + h_dentry = au_h_dptr(dentry, bsrc); + if (h_dentry) { + AuDebugOn(d_is_negative(h_dentry)); + break; + } + } + AuDebugOn(bsrc > bend); + 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 dentry *h_d_dst, *h_d_start; + struct au_dinfo *dinfo; + struct au_hdentry *hdp; + + dinfo = au_di(cpg->dentry); + AuRwMustWriteLock(&dinfo->di_rwsem); + + bsrc_orig = cpg->bsrc; + cpg->bsrc = dinfo->di_bstart; + hdp = dinfo->di_hdentry; + h_d_dst = hdp[0 + cpg->bdst].hd_dentry; + dinfo->di_bstart = cpg->bdst; + hdp[0 + cpg->bdst].hd_dentry = wh_dentry; + h_d_start = NULL; + if (file) { + h_d_start = hdp[0 + cpg->bsrc].hd_dentry; + hdp[0 + cpg->bsrc].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); + hdp[0 + cpg->bsrc].hd_dentry = h_d_start; + } + hdp[0 + cpg->bdst].hd_dentry = h_d_dst; + dinfo->di_bstart = 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); + + mutex_lock_nested(&h_tmpdir->i_mutex, 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) { + mutex_unlock(&h_tmpdir->i_mutex); + /* 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_dbstart(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-raspi2-4.2.0.orig/fs/aufs/cpup.h +++ linux-raspi2-4.2.0/fs/aufs/cpup.h @@ -0,0 +1,94 @@ +/* + * Copyright (C) 2005-2015 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 */ + +#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 timespec 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-raspi2-4.2.0.orig/fs/aufs/dbgaufs.c +++ linux-raspi2-4.2.0/fs/aufs/dbgaufs.c @@ -0,0 +1,432 @@ +/* + * Copyright (C) 2005-2015 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 = S_IRUSR | S_IRGRP | S_IROTH; + +/* 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) +{ + kfree(file->private_data); + return 0; +} + +static int dbgaufs_xi_open(struct file *xf, struct file *file, int do_fcnt) +{ + 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 = vfs_getattr(&xf->f_path, &st); + if (!err) { + if (do_fcnt) + p->n = snprintf + (p->a, sizeof(p->a), "%ld, %llux%lu %lld\n", + (long)file_count(xf), st.blocks, st.blksize, + (long long)st.size); + else + p->n = snprintf(p->a, sizeof(p->a), "%llux%lu %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 au_sphlhead *sphl; + + 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, sphl = sbinfo->si_plink; + i < AuPlink_NHASH; + i++, sphl++) { + n = au_sphl_count(sphl); + 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); + 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; + long l; + struct au_sbinfo *sbinfo; + struct super_block *sb; + struct file *xf; + struct qstr *name; + + err = -ENOENT; + xf = NULL; + 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; + err = kstrtol(name->name + sizeof(DbgaufsXi_PREFIX) - 1, 10, &l); + if (unlikely(err)) + goto out; + + sbinfo = inode->i_private; + sb = sbinfo->si_sb; + si_noflush_read_lock(sb); + if (l <= au_sbend(sb)) { + xf = au_sbr(sb, (aufs_bindex_t)l)->br_xino.xi_file; + err = dbgaufs_xi_open(xf, file, /*do_fcnt*/1); + } else + err = -ENOENT; + si_read_unlock(sb); + +out: + 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_brs_del(struct super_block *sb, aufs_bindex_t bindex) +{ + aufs_bindex_t bend; + struct au_branch *br; + struct au_xino_file *xi; + + if (!au_sbi(sb)->si_dbgaufs) + return; + + bend = au_sbend(sb); + for (; bindex <= bend; bindex++) { + br = au_sbr(sb, bindex); + xi = &br->br_xino; + debugfs_remove(xi->xi_dbgaufs); + xi->xi_dbgaufs = NULL; + } +} + +void dbgaufs_brs_add(struct super_block *sb, aufs_bindex_t bindex) +{ + struct au_sbinfo *sbinfo; + struct dentry *parent; + struct au_branch *br; + struct au_xino_file *xi; + aufs_bindex_t bend; + char name[sizeof(DbgaufsXi_PREFIX) + 5]; /* "xi" bindex NULL */ + + sbinfo = au_sbi(sb); + parent = sbinfo->si_dbgaufs; + if (!parent) + return; + + bend = au_sbend(sb); + for (; bindex <= bend; bindex++) { + snprintf(name, sizeof(name), DbgaufsXi_PREFIX "%d", bindex); + br = au_sbr(sb, bindex); + xi = &br->br_xino; + AuDebugOn(xi->xi_dbgaufs); + xi->xi_dbgaufs = debugfs_create_file(name, dbgaufs_mode, parent, + sbinfo, &dbgaufs_xino_fop); + /* ignore an error */ + if (unlikely(!xi->xi_dbgaufs)) + AuWarn1("failed %s under debugfs\n", name); + } +} + +/* ---------------------------------------------------------------------- */ + +#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); + 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; + kobject_put(&sbinfo->si_kobj); +} + +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; + kobject_get(&sbinfo->si_kobj); + + 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; + + 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; + + err = dbgaufs_xigen_init(sbinfo); + if (!err) + goto out; /* success */ + +out_dir: + dbgaufs_si_fin(sbinfo); +out: + 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-raspi2-4.2.0.orig/fs/aufs/dbgaufs.h +++ linux-raspi2-4.2.0/fs/aufs/dbgaufs.h @@ -0,0 +1,48 @@ +/* + * Copyright (C) 2005-2015 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; + +#ifdef CONFIG_DEBUG_FS +/* dbgaufs.c */ +void dbgaufs_brs_del(struct super_block *sb, aufs_bindex_t bindex); +void dbgaufs_brs_add(struct super_block *sb, aufs_bindex_t bindex); +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_brs_del, struct super_block *sb, aufs_bindex_t bindex) +AuStubVoid(dbgaufs_brs_add, struct super_block *sb, aufs_bindex_t bindex) +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-raspi2-4.2.0.orig/fs/aufs/dcsub.c +++ linux-raspi2-4.2.0/fs/aufs/dcsub.c @@ -0,0 +1,224 @@ +/* + * Copyright (C) 2005-2015 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: + kfree(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++); + kfree(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); + 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 *), + void (*finish)(void *)); + +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, NULL); + + 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-raspi2-4.2.0.orig/fs/aufs/dcsub.h +++ linux-raspi2-4.2.0/fs/aufs/dcsub.h @@ -0,0 +1,136 @@ +/* + * Copyright (C) 2005-2015 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-raspi2-4.2.0.orig/fs/aufs/debug.c +++ linux-raspi2-4.2.0/fs/aufs/debug.c @@ -0,0 +1,440 @@ +/* + * Copyright (C) 2005-2015 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 "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, S_IRUGO | S_IWUSR | S_IWGRP); + +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 %lu\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)timespec_to_ns(&inode->i_ctime) & 0x0ffff, + inode->i_mapping ? inode->i_mapping->nrpages : 0, + inode->i_state, inode->i_flags, inode->i_version, + inode->i_generation, + l ? ", wh " : "", l, n); + return 0; +} + +void au_dpri_inode(struct inode *inode) +{ + struct au_iinfo *iinfo; + aufs_bindex_t bindex; + int err, hn; + + err = do_pri_inode(-1, inode, -1, NULL); + if (err || !au_test_aufs(inode->i_sb)) + return; + + iinfo = au_ii(inode); + if (!iinfo) + return; + dpri("i-1: bstart %d, bend %d, gen %d\n", + iinfo->ii_bstart, iinfo->ii_bend, au_iigen(inode, NULL)); + if (iinfo->ii_bstart < 0) + return; + hn = 0; + for (bindex = iinfo->ii_bstart; bindex <= iinfo->ii_bend; bindex++) { + hn = !!au_hn(iinfo->ii_hinode + bindex); + do_pri_inode(bindex, iinfo->ii_hinode[0 + bindex].hi_inode, hn, + iinfo->ii_hinode[0 + bindex].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 au_iinfo *iinfo; + + 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; + if (bindex >= 0 + && d_is_positive(dentry) + && au_test_aufs(dentry->d_sb)) { + iinfo = au_ii(d_inode(dentry)); + if (iinfo) { + hn = !!au_hn(iinfo->ii_hinode + bindex); + wh = iinfo->ii_hinode[0 + bindex].hi_whdentry; + } + } + do_pri_inode(bindex, d_inode(dentry), hn, wh); + return 0; +} + +void au_dpri_dentry(struct dentry *dentry) +{ + struct au_dinfo *dinfo; + aufs_bindex_t bindex; + int err; + struct au_hdentry *hdp; + + 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: bstart %d, bend %d, bwh %d, bdiropq %d, gen %d, tmp %d\n", + dinfo->di_bstart, dinfo->di_bend, + dinfo->di_bwh, dinfo->di_bdiropq, au_digen(dentry), + dinfo->di_tmpfile); + if (dinfo->di_bstart < 0) + return; + hdp = dinfo->di_hdentry; + for (bindex = dinfo->di_bstart; bindex <= dinfo->di_bend; bindex++) + do_pri_dentry(bindex, hdp[0 + 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, cnt %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, atomic_read(&br->br_count), + 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), !!br->br_xino.xi_file); + 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 reuduce 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_perm = 0; + a->fake.br_path.mnt = &a->mnt; + a->fake.br_xino.xi_file = NULL; + atomic_set(&a->fake.br_count, 0); + smp_mb(); /* atomic_set */ + err = do_pri_br(-1, &a->fake); + kfree(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, + atomic_read(&sbinfo->si_kobj.kref.refcount)); + for (bindex = 0; bindex <= sbinfo->si_bend; 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, bend, bi; + + if (!inode /* || au_di(dentry)->di_lsc == AuLsc_DI_TMP */) + return; + + bend = au_dbend(dentry); + bi = au_ibend(inode); + if (bi < bend) + bend = bi; + bindex = au_dbstart(dentry); + bi = au_ibstart(inode); + if (bi > bindex) + bindex = bi; + + for (; bindex <= bend; 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-raspi2-4.2.0.orig/fs/aufs/debug.h +++ linux-raspi2-4.2.0/fs/aufs/debug.h @@ -0,0 +1,225 @@ +/* + * Copyright (C) 2005-2015 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-raspi2-4.2.0.orig/fs/aufs/dentry.c +++ linux-raspi2-4.2.0/fs/aufs/dentry.c @@ -0,0 +1,1105 @@ +/* + * Copyright (C) 2005-2015 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 "aufs.h" + +#define AuLkup_ALLOW_NEG 1 +#define AuLkup_IGNORE_PERM (1 << 1) +#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) + +struct au_do_lookup_args { + unsigned int flags; + mode_t type; +}; + +/* + * 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 qstr *wh_name, + 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, wh_name, /*try_sio*/0); + 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_dbend(dentry, bindex); */ + au_set_dbwh(dentry, bindex); + if (!allow_neg) + return NULL; /* success */ + +real_lookup: + if (!ignore_perm) + h_dentry = vfsub_lkup_one(&dentry->d_name, h_parent); + else + h_dentry = au_sio_lkup_one(&dentry->d_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; + + if (au_dbend(dentry) <= bindex) + au_set_dbend(dentry, bindex); + if (au_dbstart(dentry) < 0 || bindex < au_dbstart(dentry)) + au_set_dbstart(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 */ + + mutex_lock_nested(&h_inode->i_mutex, AuLsc_I_CHILD); + opq = au_diropq_test(h_dentry); + mutex_unlock(&h_inode->i_mutex); + 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 bstart, mode_t type) +{ + int npositive, err; + aufs_bindex_t bindex, btail, bdiropq; + unsigned char isdir, dirperm1; + struct qstr whname; + struct au_do_lookup_args args = { + .flags = 0, + .type = type + }; + const struct qstr *name = &dentry->d_name; + struct dentry *parent; + struct super_block *sb; + + sb = dentry->d_sb; + err = au_test_shwh(sb, name); + if (unlikely(err)) + goto out; + + err = au_wh_name_alloc(&whname, name); + if (unlikely(err)) + goto out; + + isdir = !!d_is_dir(dentry); + if (!type) + au_fset_lkup(args.flags, ALLOW_NEG); + dirperm1 = !!au_opt_test(au_mntflags(sb), DIRPERM1); + + npositive = 0; + parent = dget_parent(dentry); + btail = au_dbtaildir(parent); + for (bindex = bstart; bindex <= btail; bindex++) { + struct dentry *h_parent, *h_dentry; + struct inode *h_inode, *h_dir; + + h_dentry = au_h_dptr(dentry, bindex); + if (h_dentry) { + if (d_is_positive(h_dentry)) + npositive++; + if (type != S_IFDIR) + break; + continue; + } + h_parent = au_h_dptr(parent, bindex); + if (!h_parent || !d_is_dir(h_parent)) + continue; + + h_dir = d_inode(h_parent); + mutex_lock_nested(&h_dir->i_mutex, AuLsc_I_PARENT); + h_dentry = au_do_lookup(h_parent, dentry, bindex, &whname, + &args); + mutex_unlock(&h_dir->i_mutex); + 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) >= 0) + 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; + } + } + + if (npositive) { + AuLabel(positive); + au_update_dbstart(dentry); + } + err = npositive; + if (unlikely(!au_opt_test(au_mntflags(sb), UDBA_NONE) + && au_dbstart(dentry) < 0)) { + err = -EIO; + AuIOErr("both of real entry and whiteout found, %pd, err %d\n", + dentry, err); + } + +out_parent: + dput(parent); + kfree(whname.name); +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_dbstart(dentry)) + au_set_dbstart(dentry, bindex); + if (au_dbend(dentry) < bindex) + au_set_dbend(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 = h_inode->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_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) + || ia->i_version != h_inode->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, bend, 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); + bend = dinfo->di_bend; + bwh = dinfo->di_bwh; + bdiropq = dinfo->di_bdiropq; + p = dinfo->di_hdentry + dinfo->di_bstart; + for (bindex = dinfo->di_bstart; bindex <= bend; 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 = dinfo->di_hdentry + new_bindex; + tmp = *q; + *q = *p; + *p = tmp; + if (tmp.hd_dentry) { + bindex--; + p--; + } + } + + dinfo->di_bwh = -1; + if (bwh >= 0 && bwh <= au_sbend(sb) && au_sbr_whable(sb, bwh)) + dinfo->di_bwh = bwh; + + dinfo->di_bdiropq = -1; + if (bdiropq >= 0 + && bdiropq <= au_sbend(sb) + && au_sbr_whable(sb, bdiropq)) + dinfo->di_bdiropq = bdiropq; + + err = -EIO; + dinfo->di_bstart = -1; + dinfo->di_bend = -1; + bend = au_dbend(parent); + p = dinfo->di_hdentry; + for (bindex = 0; bindex <= bend; bindex++, p++) + if (p->hd_dentry) { + dinfo->di_bstart = bindex; + break; + } + + if (dinfo->di_bstart >= 0) { + p = dinfo->di_hdentry + bend; + for (bindex = bend; bindex >= 0; bindex--, p--) + if (p->hd_dentry) { + dinfo->di_bend = 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, bend; + struct { + struct dentry *dentry; + struct inode *inode; + mode_t mode; + } orig_h, tmp_h; + struct au_hdentry *hd; + struct inode *inode, *h_inode; + struct dentry *h_dentry; + + err = 0; + AuDebugOn(dinfo->di_bstart < 0); + orig_h.mode = 0; + orig_h.dentry = dinfo->di_hdentry[dinfo->di_bstart].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; + } + memset(&tmp_h, 0, sizeof(tmp_h)); + if (tmp->di_bstart >= 0) { + tmp_h.dentry = tmp->di_hdentry[tmp->di_bstart].hd_dentry; + tmp_h.inode = NULL; + 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("nagative originally\n"); + if (inode) { + au_hide(dentry); + goto out; + } + AuDebugOn(inode); + AuDebugOn(dinfo->di_bstart != dinfo->di_bend); + AuDebugOn(dinfo->di_bdiropq != -1); + + if (!tmp_h.inode) { + AuDbg("negative --> negative\n"); + /* should have only one negative lower */ + if (tmp->di_bstart >= 0 + && tmp->di_bstart < dinfo->di_bstart) { + AuDebugOn(tmp->di_bstart != tmp->di_bend); + AuDebugOn(dinfo->di_bstart != dinfo->di_bend); + au_set_h_dptr(dentry, dinfo->di_bstart, NULL); + au_di_cp(dinfo, tmp); + hd = tmp->di_hdentry + tmp->di_bstart; + au_set_h_dptr(dentry, tmp->di_bstart, + 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_bstart) + 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_bstart > tmp->di_bstart) { + /* + * 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_bstart > tmp->di_bstart) + dinfo->di_bstart = tmp->di_bstart; + if (dinfo->di_bend < tmp->di_bend) + dinfo->di_bend = tmp->di_bend; + dinfo->di_bwh = tmp->di_bwh; + dinfo->di_bdiropq = tmp->di_bdiropq; + hd = tmp->di_hdentry; + bend = dinfo->di_bend; + for (bindex = tmp->di_bstart; bindex <= bend; + bindex++) { + if (au_h_dptr(dentry, bindex)) + continue; + h_dentry = hd[bindex].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)); + } + 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; +} + +int au_refresh_dentry(struct dentry *dentry, struct dentry *parent) +{ + int err, ebrange; + 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; + + dinfo = au_di(dentry); + err = au_di_realloc(dinfo, au_sbend(sb) + 1); + 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_dbstart(dentry) < 0 && au_dbend(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, /*bstart*/0, /*type*/0); + 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_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 err; + umode_t mode, h_mode; + aufs_bindex_t bindex, btail, bstart, 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_ibstart(inode); + ibe = au_ibend(inode); + } + + bstart = au_dbstart(dentry); + btail = bstart; + if (inode && S_ISDIR(inode->i_mode)) + btail = au_dbtaildir(dentry); + for (bindex = bstart; 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 + && !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; + 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 && 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)) + goto out_inval; + + do_udba = !au_opt_test(au_mntflags(sb), UDBA_NONE); + if (do_udba && inode) { + aufs_bindex_t bstart = au_ibstart(inode); + struct inode *h_inode; + + if (bstart >= 0) { + h_inode = au_h_iptr(inode, bstart); + if (h_inode && au_test_higen(inode, h_inode)) + goto out_inval; + } + } + + err = h_d_revalidate(dentry, inode, flags, do_udba); + if (unlikely(!err && do_udba && au_dbstart(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 +}; --- linux-raspi2-4.2.0.orig/fs/aufs/dentry.h +++ linux-raspi2-4.2.0/fs/aufs/dentry.h @@ -0,0 +1,233 @@ +/* + * Copyright (C) 2005-2015 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 "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_bstart, di_bend, di_bwh, di_bdiropq; + unsigned char di_tmpfile; /* to allow the different name */ + struct au_hdentry *di_hdentry; +} ____cacheline_aligned_in_smp; + +/* ---------------------------------------------------------------------- */ + +/* dentry.c */ +extern const struct dentry_operations aufs_dop; +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 bstart, mode_t type); +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); + +/* 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); + +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_dbstart(struct dentry *dentry); +void au_update_dbend(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 void au_hdput(struct au_hdentry *hd) +{ + if (hd) + dput(hd->hd_dentry); +} + +static inline aufs_bindex_t au_dbstart(struct dentry *dentry) +{ + DiMustAnyLock(dentry); + return au_di(dentry)->di_bstart; +} + +static inline aufs_bindex_t au_dbend(struct dentry *dentry) +{ + DiMustAnyLock(dentry); + return au_di(dentry)->di_bend; +} + +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_dbstart(struct dentry *dentry, aufs_bindex_t bindex) +{ + DiMustWriteLock(dentry); + au_di(dentry)->di_bstart = bindex; +} + +static inline void au_set_dbend(struct dentry *dentry, aufs_bindex_t bindex) +{ + DiMustWriteLock(dentry); + au_di(dentry)->di_bend = bindex; +} + +static inline void au_set_dbwh(struct dentry *dentry, aufs_bindex_t bindex) +{ + DiMustWriteLock(dentry); + /* dbwh can be outside of bstart - bend 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-raspi2-4.2.0.orig/fs/aufs/dinfo.c +++ linux-raspi2-4.2.0/fs/aufs/dinfo.c @@ -0,0 +1,550 @@ +/* + * Copyright (C) 2005-2015 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; + static struct lock_class_key aufs_di; + + au_rw_init(&dinfo->di_rwsem); + au_rw_class(&dinfo->di_rwsem, &aufs_di); +} + +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_sbend(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_bstart = -1; + dinfo->di_bend = -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 bend, bindex; + + /* dentry may not be revalidated */ + bindex = dinfo->di_bstart; + if (bindex >= 0) { + bend = dinfo->di_bend; + p = dinfo->di_hdentry + bindex; + while (bindex++ <= bend) + au_hdput(p++); + } + kfree(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, bstart); + DiSwap(bi, bend); + 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_bstart = src->di_bstart; + dst->di_bend = src->di_bend; + 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 err, sz; + struct au_hdentry *hdp; + + AuRwMustWriteLock(&dinfo->di_rwsem); + + err = -ENOMEM; + sz = sizeof(*hdp) * (dinfo->di_bend + 1); + if (!sz) + sz = sizeof(*hdp); + hdp = au_kzrealloc(dinfo->di_hdentry, sz, sizeof(*hdp) * nbr, GFP_NOFS); + 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)) { + di_write_lock_child(d1); + di_write_lock_child2(d2); + } else { + /* there should be no races */ + 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)) { + di_write_lock_parent(d1); + di_write_lock_parent2(d2); + } else { + /* there should be no races */ + 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_dbstart(dentry) < 0 || bindex < au_dbstart(dentry)) + return NULL; + AuDebugOn(bindex < 0); + d = au_di(dentry)->di_hdentry[0 + 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_dbstart(dentry) <= bindex + && bindex <= au_dbend(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_ibstart(inode)); + AuDebugOn(au_ibend(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 bend, bwh; + + bend = au_dbend(dentry); + if (0 <= bend) { + bwh = au_dbwh(dentry); + if (!bwh) + return bwh; + if (0 < bwh && bwh < bend) + return bwh - 1; + } + return bend; +} + +aufs_bindex_t au_dbtaildir(struct dentry *dentry) +{ + aufs_bindex_t bend, bopq; + + bend = au_dbtail(dentry); + if (0 <= bend) { + bopq = au_dbdiropq(dentry); + if (0 <= bopq && bopq < bend) + bend = bopq; + } + return bend; +} + +/* ---------------------------------------------------------------------- */ + +void au_set_h_dptr(struct dentry *dentry, aufs_bindex_t bindex, + struct dentry *h_dentry) +{ + struct au_hdentry *hd = au_di(dentry)->di_hdentry + bindex; + struct au_branch *br; + + DiMustWriteLock(dentry); + + 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 bstart, bend; + + err = 0; + bstart = au_dbstart(dentry); + bend = au_dbend(dentry); + if (bstart >= 0) + AuDebugOn(bend < 0 && bstart > bend); + else { + err = -EIO; + AuDebugOn(bend >= 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; + + DiMustWriteLock(dentry); + + dinfo = au_di(dentry); + if (!dinfo || dinfo->di_bstart < 0) + return; + + hdp = dinfo->di_hdentry; + if (do_put_zero) { + aufs_bindex_t bindex, bend; + + bend = dinfo->di_bend; + for (bindex = dinfo->di_bstart; bindex <= bend; bindex++) { + h_d = hdp[0 + bindex].hd_dentry; + if (h_d && d_is_negative(h_d)) + au_set_h_dptr(dentry, bindex, NULL); + } + } + + dinfo->di_bstart = -1; + while (++dinfo->di_bstart <= dinfo->di_bend) + if (hdp[0 + dinfo->di_bstart].hd_dentry) + break; + if (dinfo->di_bstart > dinfo->di_bend) { + dinfo->di_bstart = -1; + dinfo->di_bend = -1; + return; + } + + dinfo->di_bend++; + while (0 <= --dinfo->di_bend) + if (hdp[0 + dinfo->di_bend].hd_dentry) + break; + AuDebugOn(dinfo->di_bstart > dinfo->di_bend || dinfo->di_bend < 0); +} + +void au_update_dbstart(struct dentry *dentry) +{ + aufs_bindex_t bindex, bend; + struct dentry *h_dentry; + + bend = au_dbend(dentry); + for (bindex = au_dbstart(dentry); bindex <= bend; bindex++) { + h_dentry = au_h_dptr(dentry, bindex); + if (!h_dentry) + continue; + if (d_is_positive(h_dentry)) { + au_set_dbstart(dentry, bindex); + return; + } + au_set_h_dptr(dentry, bindex, NULL); + } +} + +void au_update_dbend(struct dentry *dentry) +{ + aufs_bindex_t bindex, bstart; + struct dentry *h_dentry; + + bstart = au_dbstart(dentry); + for (bindex = au_dbend(dentry); bindex >= bstart; bindex--) { + h_dentry = au_h_dptr(dentry, bindex); + if (!h_dentry) + continue; + if (d_is_positive(h_dentry)) { + au_set_dbend(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, bend; + + bend = au_dbend(dentry); + for (bindex = au_dbstart(dentry); bindex <= bend; bindex++) + if (au_h_dptr(dentry, bindex) == h_dentry) + return bindex; + return -1; +} --- linux-raspi2-4.2.0.orig/fs/aufs/dir.c +++ linux-raspi2-4.2.0/fs/aufs/dir.c @@ -0,0 +1,753 @@ +/* + * Copyright (C) 2005-2015 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 "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, bend; + struct file *h_file; + struct dentry *h_dentry; + + sz = 0; + if (file) { + AuDebugOn(!d_is_dir(file->f_path.dentry)); + + bend = au_fbend_dir(file); + for (bindex = au_fbstart(file); + bindex <= bend && 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)); + + bend = au_dbtaildir(dentry); + for (bindex = au_dbstart(dentry); + bindex <= bend && 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 bstart, bindex; + + sb = a->dentry->d_sb; + if (d_really_is_negative(a->dentry)) + goto out; + aufs_read_lock(a->dentry, AuLock_DW | AuLock_DIR); /* noflush */ + + /* no dir->i_mutex lock */ + dir = d_inode(a->dentry); + bstart = au_ibstart(dir); + bindex = au_br_index(sb, a->brid); + if (bindex < bstart) + 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, bstart); + if (!au_br_writable(br->br_perm)) + goto out_unlock; + h_path.dentry = au_h_dptr(a->dentry, bstart); + h_path.mnt = au_br_mnt(br); + err = vfsub_mnt_want_write(h_path.mnt); + if (err) + goto out_unlock; + hdir = au_hi(dir, bstart); + au_hn_imtx_lock_nested(hdir, AuLsc_I_PARENT); + h_dir = au_h_iptr(dir, bstart); + if (h_dir->i_nlink + && timespec_compare(&h_dir->i_mtime, &dt.dt_mtime) < 0) { + dt.dt_h_path = h_path; + au_dtime_revert(&dt); + } + au_hn_imtx_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); + kfree(arg); +} + +void au_dir_ts(struct inode *dir, aufs_bindex_t bindex) +{ + int perm, wkq_err; + aufs_bindex_t bstart; + 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; + bstart = au_ibstart(dir); + if (bstart == bindex) { + au_cpup_attr_timesizes(dir); + goto out; + } + + perm = au_sbr_perm(sb, bstart); + 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); + kfree(arg); + } + +out: + dput(dentry); +} + +/* ---------------------------------------------------------------------- */ + +static int reopen_dir(struct file *file) +{ + int err; + unsigned int flags; + aufs_bindex_t bindex, btail, bstart; + struct dentry *dentry, *h_dentry; + struct file *h_file; + + /* open all lower dirs */ + dentry = file->f_path.dentry; + bstart = au_dbstart(dentry); + for (bindex = au_fbstart(file); bindex < bstart; bindex++) + au_set_h_fptr(file, bindex, NULL); + au_set_fbstart(file, bstart); + + btail = au_dbtaildir(dentry); + for (bindex = au_fbend_dir(file); btail < bindex; bindex--) + au_set_h_fptr(file, bindex, NULL); + au_set_fbend_dir(file, btail); + + flags = vfsub_file_flags(file); + for (bindex = bstart; 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; + + FiMustWriteLock(file); + AuDebugOn(h_file); + + err = 0; + dentry = file->f_path.dentry; + file->f_version = d_inode(dentry)->i_version; + bindex = au_dbstart(dentry); + au_set_fbstart(file, bindex); + btail = au_dbtaildir(dentry); + au_set_fbend_dir(file, btail); + for (; !err && bindex <= btail; bindex++) { + h_dentry = au_h_dptr(dentry, bindex); + if (!h_dentry) + continue; + + 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_fbstart(file); bindex <= btail; bindex++) + au_set_h_fptr(file, bindex, NULL); + au_set_fbstart(file, -1); + au_set_fbend_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)) + kfree(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; + aufs_bindex_t bindex, bend; + + finfo = au_fi(file); + fidir = finfo->fi_hdir; + if (fidir) { + au_sphl_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) { + /* + * calls fput() instead of filp_close(), + * since no dnotify or lock for the lower file. + */ + bend = fidir->fd_bbot; + for (; bindex <= bend; bindex++) + au_set_h_fptr(file, bindex, NULL); + } + kfree(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, bend; + struct file *h_file; + + err = 0; + bend = au_fbend_dir(file); + for (bindex = au_fbstart(file); !err && bindex <= bend; 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 bend, bindex; + struct inode *inode; + struct super_block *sb; + + err = 0; + sb = dentry->d_sb; + inode = d_inode(dentry); + IMustLock(inode); + bend = au_dbend(dentry); + for (bindex = au_dbstart(dentry); !err && bindex <= bend; 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 bend, bindex; + struct file *h_file; + struct super_block *sb; + struct inode *inode; + + err = au_reval_and_lock_fdi(file, reopen_dir, /*wlock*/1); + if (unlikely(err)) + goto out; + + inode = file_inode(file); + sb = inode->i_sb; + bend = au_fbend_dir(file); + for (bindex = au_fbstart(file); !err && bindex <= bend; 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; + struct mutex *mtx; + + err = 0; + dentry = file->f_path.dentry; + inode = d_inode(dentry); + mtx = &inode->i_mutex; + mutex_lock(mtx); + 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); + mutex_unlock(mtx); + return err; +} + +/* ---------------------------------------------------------------------- */ + +static int aufs_iterate(struct file *file, struct dir_context *ctx) +{ + int err; + struct dentry *dentry; + struct inode *inode, *h_inode; + struct super_block *sb; + + AuDbg("%pD, ctx{%pf, %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); + 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_ibstart(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; + + 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); + au_sbr_put(dentry->d_sb, arg->bindex); +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? */ + mutex_lock_nested(&h_inode->i_mutex, AuLsc_I_CHILD); + err = au_test_h_perm_sio(h_inode, MAY_EXEC | MAY_READ); + mutex_unlock(&h_inode->i_mutex); + 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, bstart, 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; + bstart = au_dbstart(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 = bstart; + err = test_empty(dentry, &arg); + if (unlikely(err)) + goto out_whlist; + + au_fset_testempty(arg.flags, WHONLY); + btail = au_dbtaildir(dentry); + for (bindex = bstart + 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_dbstart(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 = aufs_iterate, + .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-raspi2-4.2.0.orig/fs/aufs/dir.h +++ linux-raspi2-4.2.0/fs/aufs/dir.h @@ -0,0 +1,131 @@ +/* + * Copyright (C) 2005-2015 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[0]; +} __packed; + +struct au_vdir_dehstr { + struct hlist_node hash; + struct au_vdir_destr *str; +} ____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; + + unsigned long vd_version; + unsigned int vd_deblk_sz; + unsigned long vd_jiffy; +} ____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-raspi2-4.2.0.orig/fs/aufs/dynop.c +++ linux-raspi2-4.2.0/fs/aufs/dynop.c @@ -0,0 +1,369 @@ +/* + * Copyright (C) 2010-2015 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 au_splhead dynop[AuDyLast]; + +static struct au_dykey *dy_gfind_get(struct au_splhead *spl, const void *h_op) +{ + struct au_dykey *key, *tmp; + struct list_head *head; + + key = NULL; + head = &spl->head; + rcu_read_lock(); + list_for_each_entry_rcu(tmp, head, dk_list) + if (tmp->dk_op.dy_hop == h_op) { + key = tmp; + kref_get(&key->dk_kref); + break; + } + rcu_read_unlock(); + + 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 au_splhead *spl, struct au_dykey *key) +{ + struct au_dykey *tmp, *found; + struct list_head *head; + const void *h_op = key->dk_op.dy_hop; + + found = NULL; + head = &spl->head; + spin_lock(&spl->spin); + list_for_each_entry(tmp, head, dk_list) + if (tmp->dk_op.dy_hop == h_op) { + kref_get(&tmp->dk_kref); + found = tmp; + break; + } + if (!found) + list_add_rcu(&key->dk_list, head); + spin_unlock(&spl->spin); + + 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 au_splhead *spl; + + key = container_of(kref, struct au_dykey, dk_kref); + spl = dynop + key->dk_op.dy_type; + au_spl_del_rcu(&key->dk_list, spl); + 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(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 au_splhead *spl; + 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; + + spl = dynop + op->dy_type; + key = dy_gfind_get(spl, 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(spl, key); + if (old) { + kfree(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 defaut 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 bstart; + struct inode *h_inode; + + err = 0; + if (S_ISREG(inode->i_mode)) { + bstart = au_ibstart(inode); + h_inode = au_h_iptr(inode, bstart); + err = au_dy_iaop(inode, bstart, h_inode); + } + return err; +} + +void au_dy_arefresh(int do_dx) +{ + struct au_splhead *spl; + struct list_head *head; + struct au_dykey *key; + + spl = dynop + AuDy_AOP; + head = &spl->head; + spin_lock(&spl->spin); + list_for_each_entry(key, head, dk_list) + dy_adx((void *)key, do_dx); + spin_unlock(&spl->spin); +} + +/* ---------------------------------------------------------------------- */ + +void __init au_dy_init(void) +{ + int i; + + /* make sure that 'struct au_dykey *' can be any type */ + BUILD_BUG_ON(offsetof(struct au_dyaop, da_key)); + + for (i = 0; i < AuDyLast; i++) + au_spl_init(dynop + i); +} + +void au_dy_fin(void) +{ + int i; + + for (i = 0; i < AuDyLast; i++) + WARN_ON(!list_empty(&dynop[i].head)); +} --- linux-raspi2-4.2.0.orig/fs/aufs/dynop.h +++ linux-raspi2-4.2.0/fs/aufs/dynop.h @@ -0,0 +1,74 @@ +/* + * Copyright (C) 2010-2015 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 list_head dk_list; + 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 */ +}; + +/* ---------------------------------------------------------------------- */ + +/* 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-raspi2-4.2.0.orig/fs/aufs/export.c +++ linux-raspi2-4.2.0/fs/aufs/export.c @@ -0,0 +1,832 @@ +/* + * Copyright (C) 2005-2015 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 "../fs/mount.h" +#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 file *base) +{ + int err; + struct au_sbinfo *sbinfo; + struct file *file; + + SiMustWriteLock(sb); + + sbinfo = au_sbi(sb); + file = au_xino_create2(base, 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: + 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(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); + mutex_lock(&dir->i_mutex); + dentry = vfsub_lookup_one_len(arg.name, parent, arg.namelen); + mutex_unlock(&dir->i_mutex); + 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()? */ + h_parent = exportfs_decode_fh(h_mnt, (void *)(fh + Fh_tail), + fh_len - Fh_tail, fh[Fh_h_type], + h_acceptable, /*context*/NULL); + 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; + + 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); + atomic_inc(&br->br_count); + 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) + atomic_dec(&br->br_count); + 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_ibstart(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_ibstart(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; + + 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-raspi2-4.2.0.orig/fs/aufs/f_op.c +++ linux-raspi2-4.2.0/fs/aufs/f_op.c @@ -0,0 +1,738 @@ +/* + * Copyright (C) 2005-2015 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; + 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_dbstart(dentry); + if (!h_file) + h_file = au_h_open(dentry, bindex, flags, file, /*force_wr*/0); + else + get_file(h_file); + if (IS_ERR(h_file)) + err = PTR_ERR(h_file); + else { + 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_fbstart(file, bindex); + au_set_h_fptr(file, bindex, h_file); + au_update_figen(file); + /* todo: necessary? */ + /* file->f_ra = h_file->f_ra; */ + } + + 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_sphl_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-mamagement (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) +{ + struct file *h_file; + int err; + + err = au_reval_and_lock_fdi(file, au_reopen_nondir, /*wlock*/0); + 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 { + blkcnt_t blks; + aufs_bindex_t bstart; +}; + +/* + * 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; + struct au_pin pin; + + err = au_reval_and_lock_fdi(file, au_reopen_nondir, /*wlock*/1); + 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->bstart = au_fbstart(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_ibstart(inode) != wpre->bstart); + h_inode = file_inode(h_file); + inode->i_mode = h_inode->i_mode; + ii_write_unlock(inode); + fput(h_file); + + /* AuDbg("blks %llu, %llu\n", (u64)blks, (u64)h_inode->i_blocks); */ + if (written > 0) + au_fhsm_wrote(inode->i_sb, wpre->bstart, + /*force*/h_inode->i_blocks > wpre->blks); +} + +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); + 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) { + mutex_lock(&inode->i_mutex); + err = si_read_lock(sb, AuLock_FLUSH | AuLock_NOPLM); + if (!err) + break; + mutex_unlock(&inode->i_mutex); + 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); + + 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); + mutex_unlock(&inode->i_mutex); + 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; + 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*/0); + err = PTR_ERR(h_file); + if (IS_ERR(h_file)) + goto out; + + 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); + + 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); + mutex_unlock(&inode->i_mutex); + 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*/1); + 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 = vfsub_splice_to(h_file, ppos, pipe, len, flags); + /* todo: necessasry? */ + /* 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); + + 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); + mutex_unlock(&inode->i_mutex); + 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); + + 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); + mutex_unlock(&inode->i_mutex); + return err; +} + +/* ---------------------------------------------------------------------- */ + +/* + * 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 definitly bad, but is not a problem since "si_rwsem for + * read" allows muliple 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 = h_file->f_op->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); + + 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); + mutex_unlock(&inode->i_mutex); +out: + return err; +} + +/* no one supports this operation, currently */ +#if 0 +static int aufs_aio_fsync_nondir(struct kiocb *kio, int datasync) +{ + int err; + struct au_write_pre wpre; + struct inode *inode; + struct file *file, *h_file; + + err = 0; /* -EBADF; */ /* posix? */ + if (unlikely(!(file->f_mode & FMODE_WRITE))) + goto out; + + file = kio->ki_filp; + inode = file_inode(file); + au_mtx_and_read_lock(inode); + + h_file = au_write_pre(file, /*do_ready*/1, &wpre); + err = PTR_ERR(h_file); + if (IS_ERR(h_file)) + goto out_unlock; + + err = -ENOSYS; + h_file = au_hf_top(file); + if (h_file->f_op->aio_fsync) { + struct mutex *h_mtx; + + h_mtx = &file_inode(h_file)->i_mutex; + if (!is_sync_kiocb(kio)) { + get_file(h_file); + fput(file); + } + kio->ki_filp = h_file; + err = h_file->f_op->aio_fsync(kio, datasync); + mutex_lock_nested(h_mtx, AuLsc_I_CHILD); + if (!err) + vfsub_update_h_iattr(&h_file->f_path, /*did*/NULL); + /*ignore*/ + mutex_unlock(h_mtx); + } + au_write_post(inode, h_file, &wpre, /*written*/0); + +out_unlock: + si_read_unlock(inode->sb); + mutex_unlock(&inode->i_mutex); +out: + return err; +} +#endif + +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); + 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; +} + +/* ---------------------------------------------------------------------- */ + +/* no one supports this operation, currently */ +#if 0 +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, + /* .aio_fsync = aufs_aio_fsync_nondir, */ + .fasync = aufs_fasync, + /* .sendpage = aufs_sendpage, */ + .splice_write = aufs_splice_write, + .splice_read = aufs_splice_read, +#if 0 + .aio_splice_write = aufs_aio_splice_write, + .aio_splice_read = aufs_aio_splice_read, +#endif + .fallocate = aufs_fallocate +}; --- linux-raspi2-4.2.0.orig/fs/aufs/fhsm.c +++ linux-raspi2-4.2.0/fs/aufs/fhsm.c @@ -0,0 +1,426 @@ +/* + * Copyright (C) 2011-2015 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, bend; + struct au_branch *br; + + /* exclude the bottom */ + bend = au_fhsm_bottom(sb); + for (bindex = 0; bindex < bend; bindex++) { + br = au_sbr(sb, bindex); + if (au_br_fhsm(br->br_perm)) + au_fhsm_wrote(sb, bindex, force); + } +} + +/* ---------------------------------------------------------------------- */ + +static unsigned int au_fhsm_poll(struct file *file, + struct poll_table_struct *wait) +{ + unsigned int 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 = POLLIN /* | POLLRDNORM */; + + AuTraceErr((int)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, bend; + struct au_branch *br; + struct au_br_fhsm *bf; + + /* except the bottom branch */ + err = 0; + nstbr = 0; + bend = au_fhsm_bottom(sb); + for (bindex = 0; !err && bindex < bend; 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, bend; + 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; + bend = au_fhsm_bottom(sb); + for (bindex = 0; bindex < bend; 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 reglardless '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-raspi2-4.2.0.orig/fs/aufs/file.c +++ linux-raspi2-4.2.0/fs/aufs/file.c @@ -0,0 +1,841 @@ +/* + * Copyright (C) 2005-2015 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; + atomic_inc(&br->br_count); + 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: + atomic_dec(&br->br_count); +out: + return h_file; +} + +static int au_cmoo(struct dentry *dentry) +{ + int err, cmoo; + 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_dbstart(dentry); + if (!cpg.bsrc) + goto out; + + sb = dentry->d_sb; + sbinfo = au_sbi(sb); + fhsm = &sbinfo->si_fhsm; + pid = au_fhsm_pid(fhsm); + if (pid + && (current->pid == pid + || current->real_parent->pid == pid)) + 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, no_lock = args->no_lock; + struct dentry *dentry; + struct au_finfo *finfo; + + if (!no_lock) + 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)); + if (!no_lock) { + di_write_lock_child(dentry); + err = au_cmoo(dentry); + di_downgrade_lock(dentry, AuLock_IR); + if (!err) + err = args->open(file, vfsub_file_flags(file), NULL); + di_read_unlock(dentry, AuLock_IR); + } else { + err = au_cmoo(dentry); + if (!err) + err = args->open(file, vfsub_file_flags(file), + args->h_file); + if (!err && au_fbstart(file) != au_dbstart(dentry)) + /* + * cmoo happens after h_file was opened. + * need to refresh file later. + */ + atomic_dec(&au_fi(file)->fi_generation); + } + + finfo = au_fi(file); + if (!err) { + finfo->fi_file = file; + au_sphl_add(&finfo->fi_hlist, + &au_sbi(file->f_path.dentry->d_sb)->si_files); + } + if (!no_lock) + 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: + return err; +} + +int au_reopen_nondir(struct file *file) +{ + int err; + aufs_bindex_t bstart; + struct dentry *dentry; + struct file *h_file, *h_file_tmp; + + dentry = file->f_path.dentry; + bstart = au_dbstart(dentry); + h_file_tmp = NULL; + if (au_fbstart(file) == bstart) { + 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_set_h_fptr(file, bstart, NULL); + } + AuDebugOn(au_fi(file)->fi_hdir); + /* + * it can happen + * file exists on both of rw and ro + * open --> dbstart and fbstart are both 0 + * prepend a branch as rw, "rw" become ro + * remove rw/file + * delete the top branch, "rw" becomes rw again + * --> dbstart is 1, fbstart is still 0 + * write --> fbstart is 0 but dbstart is 1 + */ + /* AuDebugOn(au_fbstart(file) < bstart); */ + + h_file = au_h_open(dentry, bstart, vfsub_file_flags(file) & ~O_TRUNC, + file, /*force_wr*/0); + err = PTR_ERR(h_file); + if (IS_ERR(h_file)) { + if (h_file_tmp) { + atomic_inc(&au_sbr(dentry->d_sb, bstart)->br_count); + au_set_h_fptr(file, bstart, h_file_tmp); + h_file_tmp = NULL; + } + goto out; /* todo: close all? */ + } + + err = 0; + au_set_fbstart(file, bstart); + au_set_h_fptr(file, bstart, h_file); + au_update_figen(file); + /* todo: necessary? */ + /* file->f_ra = h_file->f_ra; */ + +out: + if (h_file_tmp) + fput(h_file_tmp); + return err; +} + +/* ---------------------------------------------------------------------- */ + +static int au_reopen_wh(struct file *file, aufs_bindex_t btgt, + struct dentry *hi_wh) +{ + int err; + aufs_bindex_t bstart; + struct au_dinfo *dinfo; + struct dentry *h_dentry; + struct au_hdentry *hdp; + + dinfo = au_di(file->f_path.dentry); + AuRwMustWriteLock(&dinfo->di_rwsem); + + bstart = dinfo->di_bstart; + dinfo->di_bstart = btgt; + hdp = dinfo->di_hdentry; + h_dentry = hdp[0 + btgt].hd_dentry; + hdp[0 + btgt].hd_dentry = hi_wh; + err = au_reopen_nondir(file); + hdp[0 + btgt].hd_dentry = h_dentry; + dinfo->di_bstart = bstart; + + 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_dbstart(cpg.dentry); + inode = d_inode(cpg.dentry); + h_inode = NULL; + if (au_dbstart(cpg.dentry) <= bcpup + && au_dbend(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 dbstart; + 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_fbstart(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; + + dbstart = au_dbstart(cpg.dentry); + if (dbstart <= cpg.bdst) + cpg.bsrc = cpg.bdst; + + if (dbstart <= 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 (dbstart > 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_ibstart(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_dbstart(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, bend, 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; + bend = fidir->fd_bbot; + for (bindex = finfo->fi_btop; bindex <= bend; 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)) { + bend = au_sbend(sb); + for (finfo->fi_btop = 0; finfo->fi_btop <= bend; + finfo->fi_btop++, p++) + if (p->hf_file) { + if (file_inode(p->hf_file)) + break; + au_hfput(p, file); + } + } else { + bend = au_br_index(sb, brid); + for (finfo->fi_btop = 0; finfo->fi_btop < bend; + finfo->fi_btop++, p++) + if (p->hf_file) + au_hfput(p, file); + bend = au_sbend(sb); + } + + p = fidir->fd_hfile + bend; + for (fidir->fd_bbot = bend; fidir->fd_bbot >= finfo->fi_btop; + fidir->fd_bbot--, p--) + if (p->hf_file) { + if (file_inode(p->hf_file)) + break; + au_hfput(p, file); + } + 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; + aufs_bindex_t bend, bindex; + struct dentry *dentry; + struct au_finfo *finfo; + struct au_hfile *hfile; + + dentry = file->f_path.dentry; + finfo = au_fi(file); + if (!finfo->fi_hdir) { + hfile = &finfo->fi_htop; + AuDebugOn(!hfile->hf_file); + bindex = au_br_index(dentry->d_sb, hfile->hf_br->br_id); + AuDebugOn(bindex < 0); + if (bindex != finfo->fi_btop) + au_set_fbstart(file, bindex); + } else { + err = au_fidir_realloc(finfo, au_sbend(dentry->d_sb) + 1); + 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 (!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) { + bend = au_fbend_dir(file); + for (bindex = au_fbstart(file); bindex <= bend; 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) +{ + int err; + unsigned int sigen, figen; + aufs_bindex_t bstart; + 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(file); + figen = au_figen(file); + di_write_lock_child(dentry); + bstart = au_dbstart(dentry); + pseudo_link = (bstart != au_ibstart(inode)); + if (sigen == figen && !pseudo_link && au_fbstart(file) == bstart) { + 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, + loff_t offset) +{ 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; } +static int aufs_migratepage(struct address_space *mapping, struct page *newpage, + struct page *page, enum migrate_mode mode) +{ AuUnsupport(); return 0; } +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, + .migratepage = aufs_migratepage, + .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-raspi2-4.2.0.orig/fs/aufs/file.h +++ linux-raspi2-4.2.0/fs/aufs/file.h @@ -0,0 +1,291 @@ +/* + * Copyright (C) 2005-2015 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 "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_node fi_hlist; + struct file *fi_file; /* very ugly */ +} ____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 no_lock; + 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); +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 +unsigned int aufs_poll(struct file *file, poll_table *wait); +#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); + +/* finfo.c */ +void au_hfput(struct au_hfile *hf, struct file *file); +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); + +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; +} + +/* ---------------------------------------------------------------------- */ + +/* + * fi_read_lock, fi_write_lock, + * fi_read_unlock, fi_write_unlock, fi_downgrade_lock + */ +AuSimpleRwsemFuncs(fi, struct file *f, &au_fi(f)->fi_rwsem); + +#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_fbstart(struct file *file) +{ + FiMustAnyLock(file); + return au_fi(file)->fi_btop; +} + +static inline aufs_bindex_t au_fbend_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_fbstart(struct file *file, aufs_bindex_t bindex) +{ + FiMustWriteLock(file); + au_fi(file)->fi_btop = bindex; +} + +static inline void au_set_fbend_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-raspi2-4.2.0.orig/fs/aufs/finfo.c +++ linux-raspi2-4.2.0/fs/aufs/finfo.c @@ -0,0 +1,157 @@ +/* + * Copyright (C) 2005-2015 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, struct file *file) +{ + /* todo: direct access f_flags */ + if (vfsub_file_flags(file) & __FMODE_EXEC) + allow_write_access(hf->hf_file); + fput(hf->hf_file); + hf->hf_file = NULL; + atomic_dec(&hf->hf_br->br_count); + 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, 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_sbend(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; + fidir->fd_vdir_cache = NULL; + } + + return fidir; +} + +int au_fidir_realloc(struct au_finfo *finfo, int nbr) +{ + 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); + 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_nfiles_dec(file->f_path.dentry->d_sb); + + 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; + static struct lock_class_key aufs_fi; + + au_rw_init(&finfo->fi_rwsem); + au_rw_class(&finfo->fi_rwsem, &aufs_fi); +} + +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_nfiles_inc(dentry->d_sb); + /* verbose coding for lock class name */ + if (!fidir) + au_rw_class(&finfo->fi_rwsem, au_lc_key + AuLcNonDir_FIINFO); + else + au_rw_class(&finfo->fi_rwsem, au_lc_key + AuLcDir_FIINFO); + 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-raspi2-4.2.0.orig/fs/aufs/fstype.h +++ linux-raspi2-4.2.0/fs/aufs/fstype.h @@ -0,0 +1,400 @@ +/* + * Copyright (C) 2005-2015 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 defined(CONFIG_ISO9660_FS) || defined(CONFIG_ISO9660_FS_MODULE) + return sb->s_magic == ISOFS_SUPER_MAGIC; +#else + return 0; +#endif +} + +static inline int au_test_romfs(struct super_block *sb __maybe_unused) +{ +#if defined(CONFIG_ROMFS_FS) || defined(CONFIG_ROMFS_FS_MODULE) + return sb->s_magic == ROMFS_MAGIC; +#else + return 0; +#endif +} + +static inline int au_test_cramfs(struct super_block *sb __maybe_unused) +{ +#if defined(CONFIG_CRAMFS) || defined(CONFIG_CRAMFS_MODULE) + return sb->s_magic == CRAMFS_MAGIC; +#endif + return 0; +} + +static inline int au_test_nfs(struct super_block *sb __maybe_unused) +{ +#if defined(CONFIG_NFS_FS) || defined(CONFIG_NFS_FS_MODULE) + return sb->s_magic == NFS_SUPER_MAGIC; +#else + return 0; +#endif +} + +static inline int au_test_fuse(struct super_block *sb __maybe_unused) +{ +#if defined(CONFIG_FUSE_FS) || defined(CONFIG_FUSE_FS_MODULE) + return sb->s_magic == FUSE_SUPER_MAGIC; +#else + return 0; +#endif +} + +static inline int au_test_xfs(struct super_block *sb __maybe_unused) +{ +#if defined(CONFIG_XFS_FS) || defined(CONFIG_XFS_FS_MODULE) + 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 defined(CONFIG_ECRYPT_FS) || defined(CONFIG_ECRYPT_FS_MODULE) + 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 defined(CONFIG_UBIFS_FS) || defined(CONFIG_UBIFS_FS_MODULE) + 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 defined(CONFIG_CONFIGFS_FS) || defined(CONFIG_CONFIGFS_FS_MODULE) + return sb->s_magic == CONFIGFS_MAGIC; +#else + return 0; +#endif +} + +static inline int au_test_minix(struct super_block *sb __maybe_unused) +{ +#if defined(CONFIG_MINIX_FS) || defined(CONFIG_MINIX_FS_MODULE) + 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 defined(CONFIG_FAT_FS) || defined(CONFIG_FAT_FS_MODULE) + 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 defined(CONFIG_SQUASHFS) || defined(CONFIG_SQUASHFS_MODULE) + return sb->s_magic == SQUASHFS_MAGIC; +#else + return 0; +#endif +} + +static inline int au_test_btrfs(struct super_block *sb __maybe_unused) +{ +#if defined(CONFIG_BTRFS_FS) || defined(CONFIG_BTRFS_FS_MODULE) + return sb->s_magic == BTRFS_SUPER_MAGIC; +#else + return 0; +#endif +} + +static inline int au_test_xenfs(struct super_block *sb __maybe_unused) +{ +#if defined(CONFIG_XENFS) || defined(CONFIG_XENFS_MODULE) + 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 defined(CONFIG_NILFS) || defined(CONFIG_NILFS_MODULE) + return sb->s_magic == NILFS_SUPER_MAGIC; +#else + return 0; +#endif +} + +static inline int au_test_hfsplus(struct super_block *sb __maybe_unused) +{ +#if defined(CONFIG_HFSPLUS_FS) || defined(CONFIG_HFSPLUS_FS_MODULE) + 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 MS_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-raspi2-4.2.0.orig/fs/aufs/hfsnotify.c +++ linux-raspi2-4.2.0/fs/aufs/hfsnotify.c @@ -0,0 +1,288 @@ +/* + * Copyright (C) 2005-2015 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(); + 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, au_hfsn_free_mark); + 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_mark(mark, br->br_hfsn->hfsn_group, hinode->hi_inode, + /*mnt*/NULL, /*allow_dups*/1); + /* even if err */ + fsnotify_put_mark(mark); + 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_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"); + kfree(hfsn); +} + +static int au_hfsn_handle_event(struct fsnotify_group *group, + struct inode *inode, + struct fsnotify_mark *inode_mark, + struct fsnotify_mark *vfsmount_mark, + u32 mask, void *data, int data_type, + const unsigned char *file_name, u32 cookie) +{ + int err; + struct au_hnotify *hnotify; + struct inode *h_dir, *h_inode; + struct qstr h_child_qstr = QSTR_INIT(file_name, strlen(file_name)); + + 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 + + AuDebugOn(!inode_mark); + hnotify = container_of(inode_mark, struct au_hnotify, hn_mark); + err = au_hnotify(h_dir, hnotify, mask, &h_child_qstr, 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 +}; + +/* ---------------------------------------------------------------------- */ + +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: + kfree(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-raspi2-4.2.0.orig/fs/aufs/hfsplus.c +++ linux-raspi2-4.2.0/fs/aufs/hfsplus.c @@ -0,0 +1,56 @@ +/* + * Copyright (C) 2010-2015 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 aqucires an inode mutex + * at final closing a file, eg, hfsplus. + * + * This trick is very simple and stupid, just to open the file before really + * neceeary 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) +{ + if (h_file) { + fput(h_file); + au_sbr_put(dentry->d_sb, bindex); + } +} --- linux-raspi2-4.2.0.orig/fs/aufs/hnotify.c +++ linux-raspi2-4.2.0/fs/aufs/hnotify.c @@ -0,0 +1,710 @@ +/* + * Copyright (C) 2005-2015 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 "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 assignes a new inode + * number and set the monitor again. + * For the lower dir, the old monitnor 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, bend; + struct inode *hi; + struct dentry *iwhdentry; + + bend = au_ibend(inode); + for (bindex = au_ibstart(inode); bindex <= bend; bindex++) { + hi = au_h_iptr(inode, bindex); + if (!hi) + continue; + + /* mutex_lock_nested(&hi->i_mutex, 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); + /* mutex_unlock(&hi->i_mutex); */ + } +} + +/* ---------------------------------------------------------------------- */ + +static int hn_xino(struct inode *inode, struct inode *h_inode) +{ + int err; + aufs_bindex_t bindex, bend, bfound, bstart; + 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; + bend = au_ibend(inode); + bstart = au_ibstart(inode); +#if 0 /* reserved for future use */ + if (bindex == bend) { + /* keep this ino in rename case */ + goto out; + } +#endif + for (bindex = bstart; bindex <= bend; bindex++) + if (au_h_iptr(inode, bindex) == h_inode) { + bfound = bindex; + break; + } + if (bfound < 0) + goto out; + + for (bindex = bstart; bindex <= bend; 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); + +#if 0 + /* discard children */ + dentry_unhash(dentry); + dput(dentry); +#endif +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) { + mutex_lock_nested(&a->h_inode->i_mutex, 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 */ + mutex_unlock(&a->h_inode->i_mutex); + } + + /* 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); */ + /* a->inode->i_version++; */ + } + + /* 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, bend, 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); + + ii_read_lock_parent(a->dir); + bfound = -1; + bend = au_ibend(a->dir); + for (bindex = au_ibstart(a->dir); bindex <= bend; 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); + kfree(a); +} + +/* ---------------------------------------------------------------------- */ + +int au_hnotify(struct inode *h_dir, struct au_hnotify *hnotify, u32 mask, + 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 & FS_EVENTS_POSS_ON_CHILD) { + 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); + kfree(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_cachep[AuCache_HNOTIFY]); + au_cachep[AuCache_HNOTIFY] = NULL; +} + +int __init au_hnotify_init(void) +{ + int err; + + err = -ENOMEM; + au_cachep[AuCache_HNOTIFY] = AuCache(au_hnotify); + if (au_cachep[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_cachep[AuCache_HNOTIFY]) + au_hn_destroy_cache(); +} --- linux-raspi2-4.2.0.orig/fs/aufs/i_op.c +++ linux-raspi2-4.2.0/fs/aufs/i_op.c @@ -0,0 +1,1443 @@ +/* + * Copyright (C) 2005-2015 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 vfsmount *h_mnt, int brperm) +{ + int err; + const unsigned char write_mask = !!(mask & (MAY_WRITE | MAY_APPEND)); + + err = -EACCES; + if ((write_mask && IS_IMMUTABLE(h_inode)) + || ((mask & MAY_EXEC) + && S_ISREG(h_inode->i_mode) + && ((h_mnt->mnt_flags & MNT_NOEXEC) + || !(h_inode->i_mode & S_IXUGO)))) + 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 MS_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 %pf\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); + +#if 0 + if (!err) { + /* todo: do we need to call ima_path_check()? */ + struct path h_path = { + .dentry = + .mnt = h_mnt + }; + err = ima_path_check(&h_path, + mask & (MAY_READ | MAY_WRITE | MAY_EXEC), + IMA_COUNT_LEAVE); + } +#endif + +out: + return err; +} + +static int aufs_permission(struct inode *inode, int mask) +{ + int err; + aufs_bindex_t bindex, bend; + 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 + 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_ibstart(inode)); + if (unlikely(!h_inode + || (h_inode->i_mode & S_IFMT) + != (inode->i_mode & S_IFMT))) + goto out; + + err = 0; + bindex = au_ibstart(inode); + br = au_sbr(sb, bindex); + err = h_permission(h_inode, mask, au_br_mnt(br), 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; + bend = au_ibend(inode); + for (bindex = au_ibstart(inode); !err && bindex <= bend; 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, au_br_mnt(br), + 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) { + npositive = au_lkup_dentry(dentry, au_dbstart(parent), + /*type*/0); + 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 + 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); + if (inode) { + /* verbose coding for lock class name */ + if (unlikely(S_ISLNK(inode->i_mode))) + au_rw_class(&au_di(dentry)->di_rwsem, + au_lc_key + AuLcSymlink_DIINFO); + else if (unlikely(S_ISDIR(inode->i_mode))) + au_rw_class(&au_di(dentry)->di_rwsem, + au_lc_key + AuLcDir_DIINFO); + else /* likely */ + au_rw_class(&au_di(dentry)->di_rwsem, + au_lc_key + AuLcNonDir_DIINFO); + } +out_si: + si_read_unlock(sb); +out: + return ret; +} + +/* ---------------------------------------------------------------------- */ + +struct aopen_node { + struct hlist_node hlist; + struct file *file, *h_file; +}; + +static int au_do_aopen(struct inode *inode, struct file *file) +{ + struct au_sphlhead *aopen; + struct aopen_node *node; + struct au_do_open_args args = { + .no_lock = 1, + .open = au_do_open_nondir + }; + + aopen = &au_sbi(inode->i_sb)->si_aopen; + spin_lock(&aopen->spin); + hlist_for_each_entry(node, &aopen->head, hlist) + if (node->file == file) { + args.h_file = node->h_file; + break; + } + spin_unlock(&aopen->spin); + /* AuDebugOn(!args.h_file); */ + + return au_do_open(file, &args); +} + +static int aufs_atomic_open(struct inode *dir, struct dentry *dentry, + struct file *file, unsigned int open_flag, + umode_t create_mode, int *opened) +{ + int err, h_opened = *opened; + struct dentry *parent; + struct dentry *d; + struct au_sphlhead *aopen; + struct vfsub_aopen_args args = { + .open_flag = open_flag, + .create_mode = create_mode, + .opened = &h_opened + }; + struct aopen_node aopen_node = { + .file = file + }; + + IMustLock(dir); + AuDbg("open_flag 0x%x\n", open_flag); + AuDbgDentry(dentry); + + err = 0; + if (!au_di(dentry)) { + d = aufs_lookup(dir, dentry, /*flags*/0); + if (IS_ERR(d)) { + err = PTR_ERR(d); + goto out; + } else if (d) { + /* + * obsoleted dentry found. + * another error will be returned later. + */ + d_drop(d); + dput(d); + AuDbgDentry(d); + } + AuDbgDentry(dentry); + } + + if (d_is_positive(dentry) + || d_unhashed(dentry) + || d_unlinked(dentry) + || !(open_flag & O_CREAT)) + goto out_no_open; + + err = aufs_read_lock(dentry, AuLock_DW | AuLock_FLUSH | AuLock_GEN); + if (unlikely(err)) + goto out; + + parent = dentry->d_parent; /* dir is locked */ + di_write_lock_parent(parent); + err = au_lkup_dentry(dentry, /*bstart*/0, /*type*/0); + if (unlikely(err)) + goto out_unlock; + + AuDbgDentry(dentry); + if (d_is_positive(dentry)) + goto out_unlock; + + args.file = get_empty_filp(); + err = PTR_ERR(args.file); + if (IS_ERR(args.file)) + goto out_unlock; + + args.file->f_flags = file->f_flags; + err = au_aopen_or_create(dir, dentry, &args); + AuTraceErr(err); + AuDbgFile(args.file); + if (unlikely(err < 0)) { + if (h_opened & FILE_OPENED) + fput(args.file); + else + put_filp(args.file); + goto out_unlock; + } + + /* some filesystems don't set FILE_CREATED while succeeded? */ + *opened |= FILE_CREATED; + if (h_opened & FILE_OPENED) + aopen_node.h_file = args.file; + else { + put_filp(args.file); + args.file = NULL; + } + aopen = &au_sbi(dir->i_sb)->si_aopen; + au_sphl_add(&aopen_node.hlist, aopen); + err = finish_open(file, dentry, au_do_aopen, opened); + au_sphl_del(&aopen_node.hlist, aopen); + AuTraceErr(err); + AuDbgFile(file); + if (aopen_node.h_file) + fput(aopen_node.h_file); + +out_unlock: + di_write_unlock(parent); + aufs_read_unlock(dentry, AuLock_DW); + AuDbgDentry(dentry); + if (unlikely(err)) + goto out; +out_no_open: + if (!err && !(*opened & FILE_CREATED)) { + AuLabel(out_no_open); + dget(dentry); + err = finish_no_open(file, dentry); + } +out: + AuDbg("%pd%s%s\n", dentry, + (*opened & FILE_CREATED) ? " created" : "", + (*opened & FILE_OPENED) ? " opened" : ""); + AuTraceErr(err); + 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 bstart) +{ + 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 (bstart > bcpup) + err = au_cpup_dirs(dentry, bcpup); + else if (bstart < 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); + mutex_lock_nested(&h_dir->i_mutex, AuLsc_I_PARENT); + err = au_lkup_neg(dentry, bcpup, /*wh*/0); + /* todo: no unlock here */ + mutex_unlock(&h_dir->i_mutex); + + AuDbg("bcpup %d\n", bcpup); + if (!err) { + if (d_really_is_negative(dentry)) + au_set_h_dptr(dentry, bstart, 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, bstart, src_bstart; + 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); + bstart = au_dbstart(dentry); + bcpup = bstart; + if (args->force_btgt < 0) { + if (src_dentry) { + src_bstart = au_dbstart(src_dentry); + if (src_bstart < bstart) + bcpup = src_bstart; + } 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("bstart %d, bcpup %d\n", bstart, bcpup); + err = bcpup; + if (bcpup == bstart) + goto out; /* success */ + + /* copyup the new parent into the branch we process */ + err = au_wr_dir_cpup(dentry, parent, add_entry, bcpup, bstart); + if (err >= 0) { + if (d_really_is_negative(dentry)) { + au_set_h_dptr(dentry, bstart, NULL); + au_set_dbstart(dentry, bcpup); + au_set_dbend(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_imtx_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_imtx_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; +} + +void au_pin_hdir_set_owner(struct au_pin *p, struct task_struct *task) +{ +#if defined(CONFIG_DEBUG_MUTEXES) || defined(CONFIG_SMP) + p->hdir->hi_inode->i_mutex.owner = task; +#endif +} + +void au_pin_hdir_acquire_nest(struct au_pin *p) +{ + if (p->hdir) { + mutex_acquire_nest(&p->hdir->hi_inode->i_mutex.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); + mutex_release(&p->hdir->hi_inode->i_mutex.dep_map, 1, _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_dbend(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 bstart, ibstart; + 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 */ + bstart = au_dbstart(dentry); + inode = d_inode(dentry); + ibstart = au_ibstart(inode); + if (bstart != ibstart && !au_test_ro(inode->i_sb, ibstart, inode)) + wr_dir_args.force_btgt = ibstart; + err = au_wr_dir(dentry, /*src_dentry*/NULL, &wr_dir_args); + if (unlikely(err < 0)) + goto out; + a->btgt = err; + if (err != bstart) + 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; + + a->h_path.dentry = au_h_dptr(dentry, bstart); + sz = -1; + a->h_inode = d_inode(a->h_path.dentry); + if (ia && (ia->ia_valid & ATTR_SIZE)) { + mutex_lock_nested(&a->h_inode->i_mutex, AuLsc_I_CHILD); + if (ia->ia_size < i_size_read(a->h_inode)) + sz = ia->ia_size; + mutex_unlock(&a->h_inode->i_mutex); + } + + 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 = bstart, + .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) + mutex_lock_nested(&a->h_inode->i_mutex, 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 = -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); + 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; + mutex_unlock(&a->h_inode->i_mutex); + err = vfsub_trunc(&a->h_path, ia->ia_size, ia->ia_valid, f); + mutex_lock_nested(&a->h_inode->i_mutex, 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; + } + } + if (!err) + au_cpup_attr_changeable(inode); + +out_unlock: + mutex_unlock(&a->h_inode->i_mutex); + au_unpin(&a->pin); + if (unlikely(err)) + au_update_dbstart(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: + kfree(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_srxattr(struct dentry *dentry, struct au_srxattr *arg) +{ + int err; + struct path h_path; + struct super_block *sb; + struct au_icpup_args *a; + struct inode *inode, *h_inode; + + inode = d_inode(dentry); + 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; + + mutex_unlock(&a->h_inode->i_mutex); + switch (arg->type) { + case AU_XATTR_SET: + 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_XATTR_REMOVE: + err = vfsub_removexattr(h_path.dentry, arg->u.remove.name); + break; + case AU_ACL_SET: + err = -EOPNOTSUPP; + h_inode = d_inode(h_path.dentry); + if (h_inode->i_op->set_acl) + 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_dbstart(dentry); + +out_di: + di_write_unlock(dentry); + si_read_unlock(sb); +out_kfree: + kfree(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 aufs_getxattr(). + * returns zero or negative (an error). + * @dentry will be read-locked in success. + */ +int au_h_path_getattr(struct dentry *dentry, int force, struct path *h_path) +{ + int err; + unsigned int mnt_flags, sigen; + unsigned char udba_none; + aufs_bindex_t bindex; + struct super_block *sb, *h_sb; + struct inode *inode; + + 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); + + /* 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); + + inode = d_inode(dentry); + bindex = au_ibstart(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_dbstart(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(struct vfsmount *mnt __maybe_unused, + struct dentry *dentry, struct kstat *st) +{ + int err; + unsigned char positive; + struct path h_path; + struct inode *inode; + struct super_block *sb; + + 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, /*force*/0, &h_path); + 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) + err = vfs_getattr(&h_path, st); + 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 int h_readlink(struct dentry *dentry, int bindex, char __user *buf, + int bufsiz) +{ + int err; + struct super_block *sb; + struct dentry *h_dentry; + struct inode *inode, *h_inode; + + err = -EINVAL; + h_dentry = au_h_dptr(dentry, bindex); + h_inode = d_inode(h_dentry); + if (unlikely(!h_inode->i_op->readlink)) + goto out; + + err = security_inode_readlink(h_dentry); + if (unlikely(err)) + goto out; + + sb = dentry->d_sb; + inode = d_inode(dentry); + if (!au_test_ro(sb, bindex, inode)) { + vfsub_touch_atime(au_sbr_mnt(sb, bindex), h_dentry); + fsstack_copy_attr_atime(inode, h_inode); + } + err = h_inode->i_op->readlink(h_dentry, buf, bufsiz); + +out: + return err; +} + +static int aufs_readlink(struct dentry *dentry, char __user *buf, int bufsiz) +{ + int err; + + err = aufs_read_lock(dentry, AuLock_IR | AuLock_GEN); + if (unlikely(err)) + goto out; + err = au_d_hashed_positive(dentry); + if (!err) + err = h_readlink(dentry, au_dbstart(dentry), buf, bufsiz); + aufs_read_unlock(dentry, AuLock_IR); + +out: + return err; +} + +static const char *aufs_follow_link(struct dentry *dentry, void **cookie) +{ + int err; + mm_segment_t old_fs; + union { + char *k; + char __user *u; + } buf; + + err = -ENOMEM; + buf.k = (void *)__get_free_page(GFP_NOFS); + if (unlikely(!buf.k)) + goto out; + + err = aufs_read_lock(dentry, AuLock_IR | AuLock_GEN); + if (unlikely(err)) + goto out_name; + + err = au_d_hashed_positive(dentry); + if (!err) { + old_fs = get_fs(); + set_fs(KERNEL_DS); + err = h_readlink(dentry, au_dbstart(dentry), buf.u, PATH_MAX); + set_fs(old_fs); + } + aufs_read_unlock(dentry, AuLock_IR); + + if (err >= 0) { + buf.k[err] = 0; + + /* will be freed by put_link */ + return *cookie = buf.k; + } + +out_name: + free_page((unsigned long)buf.k); +out: + AuTraceErr(err); + return ERR_PTR(err); +} + +static void aufs_put_link(struct inode *inode __maybe_unused, void *cookie) +{ + if (!IS_ERR_OR_NULL(cookie)) + free_page((unsigned long)cookie); +} + +/* ---------------------------------------------------------------------- */ + +static int aufs_update_time(struct inode *inode, struct timespec *ts, int flags) +{ + int err; + struct super_block *sb; + struct inode *h_inode; + + sb = inode->i_sb; + /* mmap_sem might be acquired already, cf. aufs_mmap() */ + lockdep_off(); + si_read_lock(sb, AuLock_FLUSH); + ii_write_lock_child(inode); + lockdep_on(); + h_inode = au_h_iptr(inode, au_ibstart(inode)); + err = vfsub_update_time(h_inode, ts, flags); + lockdep_off(); + 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; +} + +/* ---------------------------------------------------------------------- */ + +struct inode_operations aufs_symlink_iop = { + .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 + .setxattr = aufs_setxattr, + .getxattr = aufs_getxattr, + .listxattr = aufs_listxattr, + .removexattr = aufs_removexattr, +#endif + + .readlink = aufs_readlink, + .follow_link = aufs_follow_link, + .put_link = aufs_put_link, + + /* .update_time = aufs_update_time */ +}; + +struct inode_operations aufs_dir_iop = { + .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 + .setxattr = aufs_setxattr, + .getxattr = aufs_getxattr, + .listxattr = aufs_listxattr, + .removexattr = aufs_removexattr, +#endif + + .update_time = aufs_update_time, + .atomic_open = aufs_atomic_open, + .tmpfile = aufs_tmpfile +}; + +struct inode_operations aufs_iop = { + .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 + .setxattr = aufs_setxattr, + .getxattr = aufs_getxattr, + .listxattr = aufs_listxattr, + .removexattr = aufs_removexattr, +#endif + + .update_time = aufs_update_time +}; --- linux-raspi2-4.2.0.orig/fs/aufs/i_op_add.c +++ linux-raspi2-4.2.0/fs/aufs/i_op_add.c @@ -0,0 +1,932 @@ +/* + * Copyright (C) 2005-2015 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 "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); + dir->i_version++; + 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_dbstart(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 bstart; + unsigned char created; + const unsigned char try_aopen + = (arg->type == Creat && arg->u.c.try_aopen); + struct dentry *wh_dentry, *parent; + struct inode *h_dir; + struct super_block *sb; + struct au_branch *br; + /* to reuduce 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; + + bstart = au_dbstart(dentry); + sb = dentry->d_sb; + br = au_sbr(sb, bstart); + a->h_path.dentry = au_h_dptr(dentry, bstart); + a->h_path.mnt = au_br_mnt(br); + h_dir = au_pinned_h_dir(&a->pin); + switch (arg->type) { + case Creat: + err = 0; + 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); + else + err = vfsub_atomic_open(h_dir, a->h_path.dentry, + arg->u.c.aopen, br); + break; + case Symlink: + err = vfsub_symlink(h_dir, &a->h_path, arg->u.s.symname); + break; + case Mknod: + err = vfsub_mknod(h_dir, &a->h_path, arg->u.m.mode, + arg->u.m.dev); + break; + default: + BUG(); + } + created = !err; + if (!err) + err = epilog(dir, bstart, wh_dentry, dentry); + + /* revert */ + if (unlikely(created && err && 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 (!err && try_aopen && !h_dir->i_op->atomic_open) + *arg->u.c.aopen->opened |= FILE_CREATED; + + au_unpin(&a->pin); + dput(wh_dentry); + +out_parent: + if (!try_aopen) + di_write_unlock(parent); +out_unlock: + if (unlikely(err)) { + au_update_dbstart(dentry); + d_drop(dentry); + } + if (!try_aopen) + aufs_read_unlock(dentry, AuLock_DW); +out_free: + kfree(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 */ + mutex_lock(&dir->i_mutex); + + 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_dbstart(parent); + au_set_dbstart(dentry, bindex); + au_set_dbend(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); + err = inode_permission(d_inode(h_parent), MAY_WRITE | MAY_EXEC); + if (unlikely(err)) + goto out_mnt; + + err = -ENOMEM; + h_dentry = d_alloc(h_parent, &dentry->d_name); + if (unlikely(!h_dentry)) + goto out_mnt; + + err = h_dir->i_op->tmpfile(h_dir, h_dentry, mode); + if (unlikely(err)) + goto out_dentry; + + au_set_dbstart(dentry, bindex); + au_set_dbend(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_dbstart(dentry, -1); + au_set_dbend(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_ibstart(dir) == au_dbstart(dentry)) + au_cpup_attr_timesizes(dir); + } + +out_dentry: + dput(h_dentry); +out_mnt: + vfsub_mnt_drop_write(h_mnt); +out_parent: + di_write_unlock(parent); + dput(parent); + di_write_unlock(dentry); + if (!err) +#if 0 + /* verbose coding for lock class name */ + au_rw_class(&au_di(dentry)->di_rwsem, + au_lc_key + AuLcNonDir_DIINFO); +#else + ; +#endif + else { + au_di_fin(dentry); + dentry->d_fsdata = NULL; + } +out_si: + si_read_unlock(sb); +out: + mutex_unlock(&dir->i_mutex); + 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 bend; + 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_ibstart(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. */ + bend = au_dbend(dentry); + if (bend < a->bsrc) + au_set_dbend(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_dbend(dentry, bend); + } 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_ibstart(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_dbstart(dentry); + a->h_path.dentry = au_h_dptr(dentry, a->bdst); + a->h_path.mnt = au_sbr_mnt(sb, a->bdst); + a->bsrc = au_ibstart(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_dbstart(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; + } + + 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); + dir->i_version++; + 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_dbstart(dentry); + d_drop(dentry); + } + aufs_read_and_write_unlock2(dentry, src_dentry); +out_kfree: + kfree(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 mutex *h_mtx; + 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_dbstart(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_mtx = &d_inode(h_path.dentry)->i_mutex; + if (wh_dentry + || au_opt_test(au_mntflags(sb), ALWAYS_DIROPQ)) { + mutex_lock_nested(h_mtx, AuLsc_I_CHILD); + opq_dentry = au_diropq_create(dentry, bindex); + mutex_unlock(h_mtx); + 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); + mutex_lock_nested(h_mtx, AuLsc_I_CHILD); + rerr = au_diropq_remove(dentry, bindex); + mutex_unlock(h_mtx); + 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_dbstart(dentry); + d_drop(dentry); + } + aufs_read_unlock(dentry, AuLock_DW); +out_free: + kfree(a); +out: + return err; +} --- linux-raspi2-4.2.0.orig/fs/aufs/i_op_del.c +++ linux-raspi2-4.2.0/fs/aufs/i_op_del.c @@ -0,0 +1,510 @@ +/* + * Copyright (C) 2005-2015 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 "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 bstart; + struct super_block *sb; + + sb = dentry->d_sb; + bstart = au_dbstart(dentry); + if (*bcpup < 0) { + *bcpup = bstart; + if (au_test_ro(sb, bstart, d_inode(dentry))) { + err = AuWbrCopyup(au_sbi(sb), dentry); + *bcpup = err; + if (unlikely(err < 0)) + goto out; + } + } else + AuDebugOn(bstart < *bcpup + || au_test_ro(sb, *bcpup, d_inode(dentry))); + AuDbg("bcpup %d, bstart %d\n", *bcpup, bstart); + + if (*bcpup != bstart) { + 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, bstart + 1, /*type*/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 diciding 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_dbstart(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); + dir->i_version++; +} + +/* + * 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, bstart; + struct inode *inode, *h_dir, *delegated; + struct dentry *parent, *wh_dentry; + /* to reuduce 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? */ + + bstart = au_dbstart(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, bstart); + a->h_path.dentry = au_h_dptr(dentry, bstart); + dget(a->h_path.dentry); + if (bindex == bstart) { + 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 == bstart) { + 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: + kfree(a); +out: + return err; +} + +int aufs_rmdir(struct inode *dir, struct dentry *dentry) +{ + int err, rmdir_later; + aufs_bindex_t bwh, bindex, bstart; + struct inode *inode; + struct dentry *parent, *wh_dentry, *h_dentry; + struct au_whtmp_rmdir *args; + /* to reuduce 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; + + bstart = au_dbstart(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, bstart); + dget(h_dentry); + rmdir_later = 0; + if (bindex == bstart) { + err = renwh_and_rmdir(dentry, bstart, &args->whlist, dir); + if (err > 0) { + rmdir_later = err; + err = 0; + } + } else { + /* stop monitoring */ + au_hn_free(au_hi(inode, bstart)); + + /* 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, bstart, 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: + kfree(a); +out: + AuTraceErr(err); + return err; +} --- linux-raspi2-4.2.0.orig/fs/aufs/i_op_ren.c +++ linux-raspi2-4.2.0/fs/aufs/i_op_ren.c @@ -0,0 +1,1017 @@ +/* + * Copyright (C) 2005-2015 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 "aufs.h" + +enum { AuSRC, AuDST, AuSrcDst }; +enum { AuPARENT, AuCHILD, AuParentChild }; + +#define AuRen_ISDIR 1 +#define AuRen_ISSAMEDIR (1 << 1) +#define AuRen_WHSRC (1 << 2) +#define AuRen_WHDST (1 << 3) +#define AuRen_MNT_WRITE (1 << 4) +#define AuRen_DT_DSTDIR (1 << 5) +#define AuRen_DIROPQ (1 << 6) +#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) + +struct au_ren_args { + struct { + struct dentry *dentry, *h_dentry, *parent, *h_parent, + *wh_dentry; + struct inode *dir, *inode; + struct au_hinode *hdir; + struct au_dtime dt[AuParentChild]; + aufs_bindex_t bstart; + } 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_h_dir sd[AuSRC].hdir->hi_inode +#define src_dt sd[AuSRC].dt +#define src_bstart sd[AuSRC].bstart + +#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_h_dir sd[AuDST].hdir->hi_inode +#define dst_dt sd[AuDST].dt +#define dst_bstart sd[AuDST].bstart + + struct dentry *h_trap; + struct au_branch *br; + struct au_hinode *src_hinode; + struct path h_path; + struct au_nhash whlist; + aufs_bindex_t btgt, src_bwh, src_bdiropq; + + unsigned int flags; + + struct au_whtmp_rmdir *thargs; + struct dentry *h_dst; +}; + +/* ---------------------------------------------------------------------- */ + +/* + * functions for reverting. + * when an error happened in a single rename systemcall, we should revert + * everything as if nothing happend. + * 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_rev_diropq(int err, struct au_ren_args *a) +{ + int rerr; + + au_hn_imtx_lock_nested(a->src_hinode, AuLsc_I_CHILD); + rerr = au_diropq_remove(a->src_dentry, a->btgt); + au_hn_imtx_unlock(a->src_hinode); + au_set_dbdiropq(a->src_dentry, a->src_bdiropq); + if (rerr) + RevertFailure("remove diropq %pd", a->src_dentry); +} + +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); + 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); + 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_dbstart(d) == a->btgt) { + a->h_path.dentry = a->dst_h_dentry; + if (au_ftest_ren(a->flags, DIROPQ) + && au_dbdiropq(d) == a->btgt) + au_fclr_ren(a->flags, DIROPQ); + AuDebugOn(au_dbstart(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); + 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_diropq(struct au_ren_args *a) +{ + int err; + struct dentry *diropq; + + err = 0; + a->src_bdiropq = au_dbdiropq(a->src_dentry); + a->src_hinode = au_hi(a->src_inode, a->btgt); + au_hn_imtx_lock_nested(a->src_hinode, AuLsc_I_CHILD); + diropq = au_diropq_create(a->src_dentry, a->btgt); + au_hn_imtx_unlock(a->src_hinode); + if (IS_ERR(diropq)) + err = PTR_ERR(diropq); + else + dput(diropq); + + return err; +} + +static int do_rename(struct au_ren_args *a) +{ + int err; + struct dentry *d, *h_d; + + /* prepare workqueue args for asynchronous rmdir */ + h_d = a->dst_h_dentry; + if (au_ftest_ren(a->flags, ISDIR) && 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->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->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_bstart != a->btgt); + + /* rename by vfs_rename or cpup */ + d = a->dst_dentry; + if (au_ftest_ren(a->flags, ISDIR) + && (a->dst_wh_dentry + || au_dbdiropq(d) == a->btgt + /* hide the lower to keep xino */ + || a->btgt < au_dbend(d) + || au_opt_test(au_mntflags(d->d_sb), ALWAYS_DIROPQ))) + au_fset_ren(a->flags, DIROPQ); + err = au_ren_or_cpup(a); + if (unlikely(err)) + /* leave the copied-up one */ + goto out_whtmp; + + /* make dir opaque */ + if (au_ftest_ren(a->flags, DIROPQ)) { + err = au_ren_diropq(a); + if (unlikely(err)) + goto out_rename; + } + + /* update target timestamps */ + AuDebugOn(au_dbstart(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; + + /* 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: + if (au_ftest_ren(a->flags, 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 @dentry dir can be rename source or not. + * if it can, return 0 and @children is filled. + * success means, + * - it is a logically empty dir. + * - or, it exists on writable branch and has no children including whiteouts + * on the lower branch. + */ +static int may_rename_srcdir(struct dentry *dentry, aufs_bindex_t btgt) +{ + int err; + unsigned int rdhash; + aufs_bindex_t bstart; + + bstart = au_dbstart(dentry); + if (bstart != btgt) { + struct au_nhash whlist; + + 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; + err = au_test_empty(dentry, &whlist); + au_nhash_wh_free(&whlist); + goto out; + } + + if (bstart == au_dbtaildir(dentry)) + return 0; /* success */ + + err = au_test_empty_lower(dentry); + +out: + if (err == -ENOTEMPTY) { + 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->flags, ISDIR) && 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; + + au_set_dbstart(d, a->dst_bstart); + err = may_rename_dstdir(d, &a->whlist); + au_set_dbstart(d, a->btgt); + } + a->dst_h_dentry = au_h_dptr(d, au_dbstart(d)); + if (unlikely(err)) + goto out; + + d = a->src_dentry; + a->src_h_dentry = au_h_dptr(d, au_dbstart(d)); + if (au_ftest_ren(a->flags, ISDIR)) { + err = may_rename_srcdir(d, a->btgt); + 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_bstart == a->btgt) { + err = au_may_del(a->src_dentry, a->btgt, a->src_h_parent, + au_ftest_ren(a->flags, ISDIR)); + if (unlikely(err)) + goto out; + err = -EINVAL; + if (unlikely(a->src_h_dentry == a->h_trap)) + goto out; + } + + err = 0; + if (a->dst_bstart != a->btgt) + goto out; + + err = -ENOTEMPTY; + if (unlikely(a->dst_h_dentry == a->h_trap)) + goto out; + + err = -EIO; + isdir = !!au_ftest_ren(a->flags, ISDIR); + 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 exitsts + * (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->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->flags, MNT_WRITE); + 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_dbstart(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_dbstart(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; + dir->i_version++; + if (au_ftest_ren(a->flags, ISDIR)) { + /* 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 (au_ftest_ren(a->flags, ISSAMEDIR)) + return; + + dir = a->src_dir; + dir->i_version++; + if (au_ftest_ren(a->flags, ISDIR)) + 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 bend, 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 (!au_ftest_ren(a->flags, ISDIR)) + vfsub_drop_nlink(i); + else { + vfsub_dead_dir(i); + au_cpup_attr_timesizes(i); + } + au_update_dbrange(d, /*do_put_zero*/1); + } else { + bend = a->btgt; + for (bindex = au_dbstart(d); bindex < bend; bindex++) + au_set_h_dptr(d, bindex, NULL); + bend = au_dbend(d); + for (bindex = a->btgt + 1; bindex <= bend; bindex++) + au_set_h_dptr(d, bindex, NULL); + au_update_dbrange(d, /*do_put_zero*/0); + } + + d = a->src_dentry; + au_set_dbwh(d, -1); + bend = au_dbend(d); + for (bindex = a->btgt + 1; bindex <= bend; bindex++) { + h_d = au_h_dptr(d, bindex); + if (h_d) + au_set_h_dptr(d, bindex, NULL); + } + au_set_dbend(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 */ + + bend = au_ibend(i); + for (bindex = a->btgt + 1; bindex <= bend; 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_ibend(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_bstart, dst_bstart 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_bstart = au_dbstart(a->src_dentry); + a->dst_bstart = au_dbstart(a->dst_dentry); + if (au_ftest_ren(a->flags, ISDIR)) + au_fset_wrdir(wr_dir_args.flags, ISDIR); + wr_dir_args.force_btgt = a->src_bstart; + if (a->dst_inode && a->dst_bstart < a->src_bstart) + wr_dir_args.force_btgt = a->dst_bstart; + 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; + + 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->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->flags, DT_DSTDIR); + if (!au_ftest_ren(a->flags, ISDIR)) + 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->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 mutex *h_mtx; + + au_dtime_revert(a->src_dt + AuPARENT); + if (!au_ftest_ren(a->flags, ISSAMEDIR)) + au_dtime_revert(a->dst_dt + AuPARENT); + + if (au_ftest_ren(a->flags, ISDIR) && err != -EIO) { + h_d = a->src_dt[AuCHILD].dt_h_path.dentry; + h_mtx = &d_inode(h_d)->i_mutex; + mutex_lock_nested(h_mtx, AuLsc_I_CHILD); + au_dtime_revert(a->src_dt + AuCHILD); + mutex_unlock(h_mtx); + + if (au_ftest_ren(a->flags, DT_DSTDIR)) { + h_d = a->dst_dt[AuCHILD].dt_h_path.dentry; + h_mtx = &d_inode(h_d)->i_mutex; + mutex_lock_nested(h_mtx, AuLsc_I_CHILD); + au_dtime_revert(a->dst_dt + AuCHILD); + mutex_unlock(h_mtx); + } + } +} + +/* ---------------------------------------------------------------------- */ + +int aufs_rename(struct inode *_src_dir, struct dentry *_src_dentry, + struct inode *_dst_dir, struct dentry *_dst_dentry) +{ + int err, flags; + /* reduce stack space */ + struct au_ren_args *a; + + AuDbg("%pd, %pd\n", _src_dentry, _dst_dentry); + IMustLock(_src_dir); + IMustLock(_dst_dir); + + err = -ENOMEM; + BUILD_BUG_ON(sizeof(*a) > PAGE_SIZE); + a = kzalloc(sizeof(*a), GFP_NOFS); + if (unlikely(!a)) + goto out; + + 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) { + IMustLock(a->dst_inode); + au_igrab(a->dst_inode); + } + + err = -ENOTDIR; + flags = AuLock_FLUSH | AuLock_NOPLM | AuLock_GEN; + if (d_is_dir(a->src_dentry)) { + au_fset_ren(a->flags, ISDIR); + if (unlikely(d_really_is_positive(a->dst_dentry) + && !d_is_dir(a->dst_dentry))) + goto out_free; + err = aufs_read_and_write_lock2(a->dst_dentry, a->src_dentry, + AuLock_DIR | flags); + } else + err = aufs_read_and_write_lock2(a->dst_dentry, a->src_dentry, + 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 dst_dentry before this + * function. It means we cannot rely upon d_unhashed(). + */ + if (unlikely(!a->dst_inode->i_nlink)) + goto out_unlock; + if (!S_ISDIR(a->dst_inode->i_mode)) { + err = au_d_hashed_positive(a->dst_dentry); + if (unlikely(err)) + 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 happend (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->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_bstart == a->btgt) { + au_fset_ren(a->flags, WHDST); + } else { + err = au_cpup_dirs(a->dst_dentry, a->btgt); + if (unlikely(err)) + goto out_children; + } + + 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->flags, ISDIR), + &a->btgt); + di_write_unlock(a->src_parent); + di_write_lock2_parent(a->src_parent, a->dst_parent, /*isdir*/1); + au_fclr_ren(a->flags, ISSAMEDIR); + } else + err = au_wr_dir_need_wh(a->src_dentry, + au_ftest_ren(a->flags, ISDIR), + &a->btgt); + if (unlikely(err < 0)) + goto out_children; + if (err) + au_fset_ren(a->flags, WHSRC); + + /* cpup src */ + if (a->src_bstart != a->btgt) { + struct au_pin pin; + + 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_bstart, + .len = -1, + .pin = &pin, + .flags = AuCpup_DTIME | AuCpup_HOPEN + }; + AuDebugOn(au_dbstart(a->src_dentry) != a->src_bstart); + err = au_sio_cpup_simple(&cpg); + au_unpin(&pin); + } + if (unlikely(err)) + goto out_children; + a->src_bstart = a->btgt; + a->src_h_dentry = au_h_dptr(a->src_dentry, a->btgt); + au_fset_ren(a->flags, WHSRC); + } + + /* lock them all */ + err = au_ren_lock(a); + if (unlikely(err)) + /* leave the copied-up one */ + goto out_children; + + 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); + + /* here we go */ + err = do_rename(a); + if (unlikely(err)) + goto out_dt; + + /* update dir attributes */ + au_ren_refresh_dir(a); + + /* dput/iput all lower dentries */ + au_ren_refresh(a); + + goto out_hdir; /* success */ + +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_bstart != a->btgt) { + AuDbg("bstart %d, btgt %d\n", a->dst_bstart, a->btgt); + au_set_h_dptr(a->dst_dentry, a->btgt, NULL); + au_set_dbstart(a->dst_dentry, a->dst_bstart); + } +out_parent: + if (!err) + d_move(a->src_dentry, a->dst_dentry); + else { + au_update_dbstart(a->dst_dentry); + if (!a->dst_inode) + d_drop(a->dst_dentry); + } + if (au_ftest_ren(a->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); + kfree(a); +out: + AuTraceErr(err); + return err; +} --- linux-raspi2-4.2.0.orig/fs/aufs/iinfo.c +++ linux-raspi2-4.2.0/fs/aufs/iinfo.c @@ -0,0 +1,277 @@ +/* + * Copyright (C) 2005-2015 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; + + IiMustAnyLock(inode); + + h_inode = au_ii(inode)->ii_hinode[0 + bindex].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 = iinfo->ii_hinode + 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_bstart) + 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_ii(inode)->ii_hinode + 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(&iinfo->ii_genspin); + 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(&iinfo->ii_genspin); +} + +/* 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, bend; + + iinfo = au_ii(inode); + if (!iinfo) + return; + + IiMustWriteLock(inode); + + if (do_put_zero && iinfo->ii_bstart >= 0) { + for (bindex = iinfo->ii_bstart; bindex <= iinfo->ii_bend; + bindex++) { + struct inode *h_i; + + h_i = iinfo->ii_hinode[0 + 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_bstart = -1; + iinfo->ii_bend = -1; + bend = au_sbend(inode->i_sb); + for (bindex = 0; bindex <= bend; bindex++) + if (iinfo->ii_hinode[0 + bindex].hi_inode) { + iinfo->ii_bstart = bindex; + break; + } + if (iinfo->ii_bstart >= 0) + for (bindex = bend; bindex >= iinfo->ii_bstart; bindex--) + if (iinfo->ii_hinode[0 + bindex].hi_inode) { + iinfo->ii_bend = bindex; + break; + } + AuDebugOn(iinfo->ii_bstart > iinfo->ii_bend); +} + +/* ---------------------------------------------------------------------- */ + +void au_icntnr_init_once(void *_c) +{ + struct au_icntnr *c = _c; + struct au_iinfo *iinfo = &c->iinfo; + static struct lock_class_key aufs_ii; + + spin_lock_init(&iinfo->ii_genspin); + au_rw_init(&iinfo->ii_rwsem); + au_rw_class(&iinfo->ii_rwsem, &aufs_ii); + inode_init_once(&c->vfs_inode); +} + +int au_iinfo_init(struct inode *inode) +{ + struct au_iinfo *iinfo; + struct super_block *sb; + int nbr, i; + + sb = inode->i_sb; + iinfo = &(container_of(inode, struct au_icntnr, vfs_inode)->iinfo); + nbr = au_sbend(sb) + 1; + if (unlikely(nbr <= 0)) + nbr = 1; + iinfo->ii_hinode = kcalloc(nbr, sizeof(*iinfo->ii_hinode), GFP_NOFS); + if (iinfo->ii_hinode) { + au_ninodes_inc(sb); + for (i = 0; i < nbr; i++) + iinfo->ii_hinode[i].hi_id = -1; + + iinfo->ii_generation.ig_generation = au_sigen(sb); + iinfo->ii_bstart = -1; + iinfo->ii_bend = -1; + iinfo->ii_vdir = NULL; + return 0; + } + return -ENOMEM; +} + +int au_ii_realloc(struct au_iinfo *iinfo, int nbr) +{ + int err, sz; + struct au_hinode *hip; + + AuRwMustWriteLock(&iinfo->ii_rwsem); + + err = -ENOMEM; + sz = sizeof(*hip) * (iinfo->ii_bend + 1); + if (!sz) + sz = sizeof(*hip); + hip = au_kzrealloc(iinfo->ii_hinode, sz, sizeof(*hip) * nbr, GFP_NOFS); + if (hip) { + iinfo->ii_hinode = 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, bend; + const unsigned char unlinked = !inode->i_nlink; + + iinfo = au_ii(inode); + /* bad_inode case */ + if (!iinfo) + return; + + sb = inode->i_sb; + au_ninodes_dec(sb); + 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(); + } + + if (iinfo->ii_vdir) + au_vdir_free(iinfo->ii_vdir); + + bindex = iinfo->ii_bstart; + if (bindex >= 0) { + hi = iinfo->ii_hinode + bindex; + bend = iinfo->ii_bend; + while (bindex++ <= bend) { + if (hi->hi_inode) + au_hiput(hi); + hi++; + } + } + kfree(iinfo->ii_hinode); + iinfo->ii_hinode = NULL; + AuRwDestroy(&iinfo->ii_rwsem); +} --- linux-raspi2-4.2.0.orig/fs/aufs/inode.c +++ linux-raspi2-4.2.0/fs/aufs/inode.c @@ -0,0 +1,500 @@ +/* + * Copyright (C) 2005-2015 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 "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->i_version++; +} + +static int au_ii_refresh(struct inode *inode, int *update) +{ + int err, e; + umode_t type; + aufs_bindex_t bindex, new_bindex; + struct super_block *sb; + struct au_iinfo *iinfo; + struct au_hinode *p, *q, tmp; + + IiMustWriteLock(inode); + + *update = 0; + sb = inode->i_sb; + type = inode->i_mode & S_IFMT; + iinfo = au_ii(inode); + err = au_ii_realloc(iinfo, au_sbend(sb) + 1); + if (unlikely(err)) + goto out; + + AuDebugOn(iinfo->ii_bstart < 0); + p = iinfo->ii_hinode + iinfo->ii_bstart; + for (bindex = iinfo->ii_bstart; bindex <= iinfo->ii_bend; + 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_bstart) + iinfo->ii_bstart = new_bindex; + if (iinfo->ii_bend < new_bindex) + iinfo->ii_bend = new_bindex; + /* swap two lower inode, and loop again */ + q = iinfo->ii_hinode + new_bindex; + tmp = *q; + *q = *p; + *p = tmp; + if (tmp.hi_inode) { + bindex--; + p--; + } + } + au_update_ibrange(inode, /*do_put_zero*/0); + e = au_dy_irefresh(inode); + if (unlikely(e && !err)) + err = e; + +out: + AuTraceErr(err); + return err; +} + +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, bend; + 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 = iinfo->ii_hinode + iinfo->ii_bstart; + mode = (inode->i_mode & S_IFMT); + isdir = S_ISDIR(mode); + flags = au_hi_flags(inode, isdir); + bend = au_dbend(dentry); + for (bindex = au_dbstart(dentry); bindex <= bend; 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_bstart <= bindex && bindex <= iinfo->ii_bend) { + h_i = au_h_iptr(inode, bindex); + if (h_i) { + if (h_i == h_inode) + continue; + err = -EIO; + break; + } + } + if (bindex < iinfo->ii_bstart) + iinfo->ii_bstart = bindex; + if (iinfo->ii_bend < bindex) + iinfo->ii_bend = 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, bstart, btail; + unsigned char isdir; + struct dentry *h_dentry; + struct inode *h_inode; + struct au_iinfo *iinfo; + + IiMustWriteLock(inode); + + err = 0; + isdir = 0; + bstart = au_dbstart(dentry); + h_dentry = au_h_dptr(dentry, bstart); + 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 = &aufs_iop; + inode->i_fop = &aufs_file_fop; + err = au_dy_iaop(inode, bstart, h_inode); + if (unlikely(err)) + goto out; + break; + case S_IFDIR: + isdir = 1; + btail = au_dbtaildir(dentry); + inode->i_op = &aufs_dir_iop; + inode->i_fop = &aufs_dir_fop; + break; + case S_IFLNK: + btail = au_dbtail(dentry); + inode->i_op = &aufs_symlink_iop; + break; + case S_IFBLK: + case S_IFCHR: + case S_IFIFO: + case S_IFSOCK: + btail = au_dbtail(dentry); + inode->i_op = &aufs_iop; + 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_bstart = bstart; + iinfo->ii_bend = btail; + for (bindex = bstart; 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; + struct au_iigen iigen; + aufs_bindex_t bindex, bend; + 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_dbstart(dentry)); + h_dinode = d_inode(h_dentry); + bend = au_ibend(inode); + for (bindex = au_ibstart(inode); bindex <= bend; bindex++) { + h_inode = au_h_iptr(inode, bindex); + if (!h_inode || h_inode != h_dinode) + continue; + + err = 0; + gen = au_iigen(inode, &iigen); + if (gen == au_digen(dentry) + && !au_ig_ftest(iigen.ig_flags, 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; + struct mutex *mtx; + + /* prevent hardlinked inode number from race condition */ + mtx = NULL; + if (d_type != DT_DIR) { + mtx = &au_sbr(sb, bindex)->br_xino.xi_nondir_mtx; + mutex_lock(mtx); + } + err = au_xino_read(sb, bindex, h_ino, ino); + if (unlikely(err)) + goto out; + + if (!*ino) { + err = -EIO; + *ino = au_xino_new_ino(sb); + if (unlikely(!*ino)) + goto out; + err = au_xino_write(sb, bindex, h_ino, *ino); + if (unlikely(err)) + goto out; + } + +out: + if (mtx) + mutex_unlock(mtx); + 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; + struct mutex *mtx; + ino_t h_ino, ino; + int err; + aufs_bindex_t bstart; + + sb = dentry->d_sb; + bstart = au_dbstart(dentry); + h_dentry = au_h_dptr(dentry, bstart); + h_inode = d_inode(h_dentry); + h_ino = h_inode->i_ino; + + /* + * stop 'race'-ing between hardlinks under different + * parents. + */ + mtx = NULL; + if (!d_is_dir(h_dentry)) + mtx = &au_sbr(sb, bstart)->br_xino.xi_nondir_mtx; + +new_ino: + if (mtx) + mutex_lock(mtx); + err = au_xino_read(sb, bstart, h_ino, &ino); + inode = ERR_PTR(err); + if (unlikely(err)) + goto out; + + if (!ino) { + ino = au_xino_new_ino(sb); + if (unlikely(!ino)) { + inode = ERR_PTR(-EIO); + goto out; + } + } + + AuDbg("i%lu\n", (unsigned long)ino); + inode = au_iget_locked(sb, ino); + err = PTR_ERR(inode); + if (IS_ERR(inode)) + goto out; + + AuDbg("%lx, new %d\n", inode->i_state, !!(inode->i_state & I_NEW)); + if (inode->i_state & I_NEW) { + /* verbose coding for lock class name */ + if (unlikely(d_is_symlink(h_dentry))) + au_rw_class(&au_ii(inode)->ii_rwsem, + au_lc_key + AuLcSymlink_IIINFO); + else if (unlikely(d_is_dir(h_dentry))) + au_rw_class(&au_ii(inode)->ii_rwsem, + au_lc_key + AuLcDir_IIINFO); + else /* likely */ + au_rw_class(&au_ii(inode)->ii_rwsem, + au_lc_key + AuLcNonDir_IIINFO); + + ii_write_lock_new_child(inode); + err = set_inode(inode, dentry); + if (!err) { + unlock_new_inode(inode); + goto out; /* 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, bstart, 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 (mtx) + mutex_unlock(mtx); + err = reval_inode(inode, dentry); + if (unlikely(err < 0)) { + mtx = NULL; + goto out_iput; + } + + if (!err) { + mtx = NULL; + goto out; /* success */ + } else if (mtx) + mutex_lock(mtx); + } + + 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", + bstart, au_sbtype(h_dentry->d_sb), dentry, + (unsigned long)h_ino, (unsigned long)ino); + ino = 0; + err = au_xino_write(sb, bstart, h_ino, /*ino*/0); + if (!err) { + iput(inode); + if (mtx) + mutex_unlock(mtx); + goto new_ino; + } + +out_iput: + iput(inode); + inode = ERR_PTR(err); +out: + if (mtx) + mutex_unlock(mtx); + 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_ibstart(inode) <= bindex + && bindex <= au_ibend(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-raspi2-4.2.0.orig/fs/aufs/inode.h +++ linux-raspi2-4.2.0/fs/aufs/inode.h @@ -0,0 +1,673 @@ +/* + * Copyright (C) 2005-2015 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 */ +#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 { + __u32 ig_generation, ig_flags; +}; + +struct au_vdir; +struct au_iinfo { + spinlock_t ii_genspin; + struct au_iigen ii_generation; + struct super_block *ii_hsb1; /* no get/put */ + + struct au_rwsem ii_rwsem; + aufs_bindex_t ii_bstart, ii_bend; + __u32 ii_higen; + struct au_hinode *ii_hinode; + struct au_vdir *ii_vdir; +}; + +struct au_icntnr { + struct au_iinfo iinfo; + struct inode vfs_inode; +} ____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_set_owner(struct au_pin *p, struct task_struct *task); +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) +{ + struct au_iinfo *iinfo; + + iinfo = &(container_of(inode, struct au_icntnr, vfs_inode)->iinfo); + if (iinfo->ii_hinode) + return iinfo; + return NULL; /* debugging bad_inode case */ +} + +/* ---------------------------------------------------------------------- */ + +/* inode.c */ +struct inode *au_igrab(struct inode *inode); +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 */ +extern struct inode_operations aufs_iop, aufs_symlink_iop, aufs_dir_iop; + +/* 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, int force, struct path *h_path); + +/* 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); + +/* 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); +int au_iinfo_init(struct inode *inode); +void au_iinfo_fin(struct inode *inode); +int au_ii_realloc(struct au_iinfo *iinfo, int nbr); + +#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); +ssize_t aufs_getxattr(struct dentry *dentry, const char *name, void *value, + size_t size); +int aufs_setxattr(struct dentry *dentry, const char *name, const void *value, + size_t size, int flags); +int aufs_removexattr(struct dentry *dentry, const char *name); + +/* 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_XATTR_REMOVE, + AU_ACL_SET +}; + +struct au_srxattr { + int type; + union { + struct { + const char *name; + const void *value; + size_t size; + int flags; + } set; + struct { + const char *name; + } remove; + struct { + struct posix_acl *acl; + int type; + } acl_set; + } u; +}; +ssize_t au_srxattr(struct dentry *dentry, struct au_srxattr *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 + +/* + * ii_read_unlock, ii_write_unlock, ii_downgrade_lock + */ +AuSimpleUnlockRwsemFuncs(ii, struct inode *i, &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, struct au_iigen *iigen) +{ + unsigned int gen; + struct au_iinfo *iinfo; + + iinfo = au_ii(inode); + spin_lock(&iinfo->ii_genspin); + if (iigen) + *iigen = iinfo->ii_generation; + gen = iinfo->ii_generation.ig_generation; + spin_unlock(&iinfo->ii_genspin); + + 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; + + iinfo = au_ii(inode); + spin_lock(&iinfo->ii_genspin); + iinfo->ii_generation.ig_generation--; + spin_unlock(&iinfo->ii_genspin); +} + +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 aufs_bindex_t au_ii_br_id(struct inode *inode, + aufs_bindex_t bindex) +{ + IiMustAnyLock(inode); + return au_ii(inode)->ii_hinode[0 + bindex].hi_id; +} + +static inline aufs_bindex_t au_ibstart(struct inode *inode) +{ + IiMustAnyLock(inode); + return au_ii(inode)->ii_bstart; +} + +static inline aufs_bindex_t au_ibend(struct inode *inode) +{ + IiMustAnyLock(inode); + return au_ii(inode)->ii_bend; +} + +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_ii(inode)->ii_hinode[0 + bindex].hi_whdentry; +} + +static inline void au_set_ibstart(struct inode *inode, aufs_bindex_t bindex) +{ + IiMustWriteLock(inode); + au_ii(inode)->ii_bstart = bindex; +} + +static inline void au_set_ibend(struct inode *inode, aufs_bindex_t bindex) +{ + IiMustWriteLock(inode); + au_ii(inode)->ii_bend = 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_ii(inode)->ii_hinode + 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, + 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_imtx_lock(struct au_hinode *hdir) +{ + mutex_lock(&hdir->hi_inode->i_mutex); + au_hn_suspend(hdir); +} + +static inline void au_hn_imtx_lock_nested(struct au_hinode *hdir, + unsigned int sc __maybe_unused) +{ + mutex_lock_nested(&hdir->hi_inode->i_mutex, sc); + au_hn_suspend(hdir); +} + +static inline void au_hn_imtx_unlock(struct au_hinode *hdir) +{ + au_hn_resume(hdir); + mutex_unlock(&hdir->hi_inode->i_mutex); +} + +#endif /* __KERNEL__ */ +#endif /* __AUFS_INODE_H__ */ --- linux-raspi2-4.2.0.orig/fs/aufs/ioctl.c +++ linux-raspi2-4.2.0/fs/aufs/ioctl.c @@ -0,0 +1,219 @@ +/* + * Copyright (C) 2005-2015 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, bend; + 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); + bend = au_sbend(sb); + if (wbrfd.brid >= 0) { + wbi = au_br_index(sb, wbrfd.brid); + if (unlikely(wbi < 0 || wbi > bend)) + 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 <= bend; 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; + + atomic_dec(&br->br_count); /* 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-raspi2-4.2.0.orig/fs/aufs/loop.c +++ linux-raspi2-4.2.0/fs/aufs/loop.c @@ -0,0 +1,161 @@ +/* + * Copyright (C) 2005-2015 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); + 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; + + AuDebugOn(sizeof(sb->s_magic) != sizeof(unsigned long)); + + 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) +{ + symbol_put(loop_backing_file); + kfree(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-raspi2-4.2.0.orig/fs/aufs/loop.h +++ linux-raspi2-4.2.0/fs/aufs/loop.h @@ -0,0 +1,58 @@ +/* + * Copyright (C) 2005-2015 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) + +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-raspi2-4.2.0.orig/fs/aufs/magic.mk +++ linux-raspi2-4.2.0/fs/aufs/magic.mk @@ -0,0 +1,30 @@ + +# 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-raspi2-4.2.0.orig/fs/aufs/module.c +++ linux-raspi2-4.2.0/fs/aufs/module.c @@ -0,0 +1,210 @@ +/* + * Copyright (C) 2005-2015 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" + +void *au_kzrealloc(void *p, unsigned int nused, unsigned int new_sz, gfp_t gfp) +{ + if (new_sz <= nused) + return p; + + p = krealloc(p, new_sz, gfp); + if (p) + memset(p + nused, 0, new_sz - nused); + return p; +} + +/* ---------------------------------------------------------------------- */ + +/* + * aufs caches + */ +struct kmem_cache *au_cachep[AuCache_Last]; +static int __init au_cache_init(void) +{ + au_cachep[AuCache_DINFO] = AuCacheCtor(au_dinfo, au_di_init_once); + if (au_cachep[AuCache_DINFO]) + /* SLAB_DESTROY_BY_RCU */ + au_cachep[AuCache_ICNTNR] = AuCacheCtor(au_icntnr, + au_icntnr_init_once); + if (au_cachep[AuCache_ICNTNR]) + au_cachep[AuCache_FINFO] = AuCacheCtor(au_finfo, + au_fi_init_once); + if (au_cachep[AuCache_FINFO]) + au_cachep[AuCache_VDIR] = AuCache(au_vdir); + if (au_cachep[AuCache_VDIR]) + au_cachep[AuCache_DEHSTR] = AuCache(au_vdir_dehstr); + if (au_cachep[AuCache_DEHSTR]) + return 0; + + return -ENOMEM; +} + +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++) + if (au_cachep[i]) { + kmem_cache_destroy(au_cachep[i]); + au_cachep[i] = NULL; + } +} + +/* ---------------------------------------------------------------------- */ + +int au_dir_roflags; + +#ifdef CONFIG_AUFS_SBILIST +/* + * iterate_supers_type() doesn't protect us from + * remounting (branch management) + */ +struct au_splhead au_sbilist; +#endif + +struct lock_class_key au_lc_key[AuLcKey_Last]; + +/* + * 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, S_IRUGO); + +/* this module parameter has no meaning when USER_NS is disabled */ +static bool au_userns; +MODULE_PARM_DESC(allow_userns, "allow unprivileged to mount under userns"); +module_param_named(allow_userns, au_userns, bool, S_IRUGO); + +/* ---------------------------------------------------------------------- */ + +static char au_esc_chars[0x20 + 3]; /* 0x01-0x20, backslash, del, and NULL */ + +int au_seq_path(struct seq_file *seq, struct path *path) +{ + return seq_path(seq, path, au_esc_chars); +} + +/* ---------------------------------------------------------------------- */ + +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); + + au_sbilist_init(); + sysaufs_brs_init(); + au_debug_init(); + au_dy_init(); + err = sysaufs_init(); + if (unlikely(err)) + goto out; + err = au_procfs_init(); + if (unlikely(err)) + goto out_sysaufs; + 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_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(); + sysaufs_fin(); + au_dy_fin(); +} + +module_init(aufs_init); +module_exit(aufs_exit); --- linux-raspi2-4.2.0.orig/fs/aufs/module.h +++ linux-raspi2-4.2.0/fs/aufs/module.h @@ -0,0 +1,104 @@ +/* + * Copyright (C) 2005-2015 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 + +struct path; +struct seq_file; + +/* module parameters */ +extern int sysaufs_brs; + +/* ---------------------------------------------------------------------- */ + +extern int au_dir_roflags; + +enum { + AuLcNonDir_FIINFO, + AuLcNonDir_DIINFO, + AuLcNonDir_IIINFO, + + AuLcDir_FIINFO, + AuLcDir_DIINFO, + AuLcDir_IIINFO, + + AuLcSymlink_DIINFO, + AuLcSymlink_IIINFO, + + AuLcKey_Last +}; +extern struct lock_class_key au_lc_key[AuLcKey_Last]; + +void *au_kzrealloc(void *p, unsigned int nused, unsigned int new_sz, gfp_t gfp); +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 +}; + +#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) + +extern struct kmem_cache *au_cachep[]; + +#define AuCacheFuncs(name, index) \ +static inline struct au_##name *au_cache_alloc_##name(void) \ +{ return kmem_cache_alloc(au_cachep[AuCache_##index], GFP_NOFS); } \ +static inline void au_cache_free_##name(struct au_##name *p) \ +{ kmem_cache_free(au_cachep[AuCache_##index], 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-raspi2-4.2.0.orig/fs/aufs/mvdown.c +++ linux-raspi2-4.2.0/fs/aufs/mvdown.c @@ -0,0 +1,694 @@ +/* + * Copyright (C) 2011-2015 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, bend; + struct au_branch *br; + + sb = a->sb; + bindex = a->mvd_bsrc; + bend = au_sbend(sb); + if (a->mvdown.flags & AUFS_MVDOWN_FHSM_LOWER) + for (bindex++; bindex <= bend; bindex++) { + br = au_sbr(sb, bindex); + if (au_br_fhsm(br->br_perm) + && (!(au_br_sb(br)->s_flags & MS_RDONLY))) + return bindex; + } + else if (!(a->mvdown.flags & AUFS_MVDOWN_ROLOWER)) + for (bindex++; bindex <= bend; bindex++) { + br = au_sbr(sb, bindex); + if (!au_br_rdonly(br)) + return bindex; + } + else + for (bindex++; bindex <= bend; bindex++) { + br = au_sbr(sb, bindex); + if (!(au_br_sb(br)->s_flags & MS_RDONLY)) { + 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_dbend(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_dbstart(a->dentry, a->mvd_bdst); + au_set_h_iptr(a->inode, a->mvd_bsrc, NULL, /*flags*/0); + au_set_ibstart(a->inode, a->mvd_bdst); + } + if (au_dbend(a->dentry) < a->mvd_bdst) + au_set_dbend(a->dentry, a->mvd_bdst); + if (au_ibend(a->inode) < a->mvd_bdst) + au_set_ibend(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_dbstart(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_dbstart(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, /*type*/0); + if (!err) + a->bwh = au_dbwh(a->dentry); + else if (err > 0) + a->bfound = au_dbstart(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_ibstart(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_dbstart(a->dentry) + || au_dbend(a->dentry) < a->mvd_bsrc + || !au_h_dptr(a->dentry, a->mvd_bsrc)) + || (a->mvd_bsrc < au_ibstart(a->inode) + || au_ibend(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_sbend(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_sbend(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; + + 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) + err = !access_ok(VERIFY_WRITE, 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 = d_inode(dentry); + 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); + mutex_lock_nested(&args->dir->i_mutex, 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; + } + + mutex_lock_nested(&args->inode->i_mutex, I_MUTEX_CHILD); + err = aufs_read_lock(dentry, AuLock_DW | AuLock_FLUSH); + 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(args->inode); + au_cpup_igen(args->inode, au_h_iptr(args->inode, args->mvd_bdst)); + /* au_digen_dec(dentry); */ + +out_parent: + di_write_unlock(args->parent); + aufs_read_unlock(dentry, AuLock_DW); +out_inode: + mutex_unlock(&args->inode->i_mutex); +out_dir: + mutex_unlock(&args->dir->i_mutex); +out_free: + e = copy_to_user(uarg, &args->mvdown, sizeof(args->mvdown)); + if (unlikely(e)) + err = -EFAULT; + kfree(args); +out: + AuTraceErr(err); + return err; +} --- linux-raspi2-4.2.0.orig/fs/aufs/opts.c +++ linux-raspi2-4.2.0/fs/aufs/opts.c @@ -0,0 +1,1835 @@ +/* + * Copyright (C) 2005-2015 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_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_FHSM + {Opt_fhsm_sec, "fhsm_sec=%d"}, +#else + {Opt_ignore_silent, "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_silent, "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_silent, "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"}, + + {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} +}; + +/* + * cf. linux/lib/parser.c and cmdline.c + * gave up calling memparse() since it uses simple_strtoull() instead of + * kstrto...(). + */ +static int noinline_for_stack +au_match_ull(substring_t *s, unsigned long long *result) +{ + int err; + unsigned int len; + char a[32]; + + err = -ERANGE; + len = s->to - s->from; + if (len + 1 <= sizeof(a)) { + memcpy(a, s->from, len); + a[len] = '\0'; + err = kstrtoull(a, 0, result); + } + return err; +} + +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 (!au_match_ull(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_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_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: + AuDbg("%llu watermark\n", + u.create->mfsrr_watermark); + break; + case AuWbrCreate_MFSRRV: + 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_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 & MS_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_sbend(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 permssion %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_sbend(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); + 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 bend, 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); + bend = au_sbend(sb); + for (bindex = 0; bindex <= bend; 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_sbend(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_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; + } + } + + kfree(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_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); + 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); + 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_acl: + sb->s_flags |= MS_POSIXACL; + break; + case Opt_noacl: + sb->s_flags &= ~MS_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_sbend(sb) + 1; + if (opt->add.bindex < 0) + opt->add.bindex = 0; + goto add; + case Opt_prepend: + opt->add.bindex = 0; + 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; + aufs_bindex_t bend, bindex; + struct dentry *root, *parent, *h_root; + + 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; + au_xino_brid_set(sb, -1); + + /* safe d_parent access */ + parent = opt->xino.file->f_path.dentry->d_parent; + root = sb->s_root; + bend = au_sbend(sb); + for (bindex = 0; bindex <= bend; bindex++) { + h_root = au_h_dptr(root, bindex); + if (h_root == parent) { + au_xino_brid_set(sb, au_sbr_id(sb, bindex)); + break; + } + } + break; + + case Opt_noxino: + au_xino_clr(sb); + au_xino_brid_set(sb, -1); + *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, bend; + unsigned char do_plink, skip, do_free; + struct au_branch *br; + struct au_wbr *wbr; + struct dentry *root; + 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 & MS_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("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("udba=*notify requires xino\n"); + + if (au_opt_test(sbinfo->si_mntflags, DIRPERM1)) + pr_warn("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); + bend = au_sbend(sb); + for (bindex = 0; !err && bindex <= bend; 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 + if ((br->br_perm & AuBrAttr_ICEX_SEC) + && (au_br_sb(br)->s_flags & MS_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 (au_br_fhsm(br->br_perm)) { + fhsm++; + AuDebugOn(!br->br_fhsm); + } + + if (skip) + continue; + + hdir = au_hi(dir, bindex); + au_hn_imtx_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_imtx_unlock(hdir); + + if (!err && do_free) { + kfree(wbr); + br->br_wbr = NULL; + } + } + + if (fhsm >= 2) { + au_fset_si(sbinfo, FHSM); + for (bindex = bend; 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, bend; + 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; + + bend = au_sbend(sb); + if (unlikely(bend < 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; + bend = au_sbend(sb); + for (bindex = 0; bindex <= bend; 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; + struct inode *dir; + struct au_opt_xino *opt_xino; + struct au_opt *opt; + struct au_sbinfo *sbinfo; + + SiMustWriteLock(sb); + + dir = d_inode(sb->s_root); + sbinfo = au_sbi(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) + 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 */ + + rerr = au_opts_verify(sb, opts->sb_flags, /*pending*/0); + if (unlikely(rerr && !err)) + err = rerr; + + 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_fset_opts(opts->flags, REFRESH); + + AuDbg("status 0x%x\n", opts->flags); + return err; +} + +/* ---------------------------------------------------------------------- */ + +unsigned int au_opt_udba(struct super_block *sb) +{ + return au_mntflags(sb) & AuOptMask_UDBA; +} --- linux-raspi2-4.2.0.orig/fs/aufs/opts.h +++ linux-raspi2-4.2.0/fs/aufs/opts.h @@ -0,0 +1,210 @@ +/* + * Copyright (C) 2005-2015 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; +struct super_block; + +/* ---------------------------------------------------------------------- */ + +/* 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) /* busy inode when del-branch */ +#define AuOpt_DIO (1 << 14) /* direct io */ + +#ifndef CONFIG_AUFS_HNOTIFY +#undef AuOpt_UDBA_HNOTIFY +#define AuOpt_UDBA_HNOTIFY 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_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 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) + +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); +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-raspi2-4.2.0.orig/fs/aufs/plink.c +++ linux-raspi2-4.2.0/fs/aufs/plink.c @@ -0,0 +1,528 @@ +/* + * Copyright (C) 2005-2015 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 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 */ + rcu_read_lock(); + ppid = task_pid_vnr(rcu_dereference(current->real_parent)); + rcu_read_unlock(); + if (pid == ppid) + goto out; + + 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_head *plink_hlist; + struct pseudo_link *plink; + + 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++) { + plink_hlist = &sbinfo->si_plink[i].head; + rcu_read_lock(); + hlist_for_each_entry_rcu(plink, plink_hlist, hlist) + AuDbg("%lu\n", plink->inode->i_ino); + rcu_read_unlock(); + } +} +#endif + +/* is the inode pseudo-linked? */ +int au_plink_test(struct inode *inode) +{ + int found, i; + struct au_sbinfo *sbinfo; + struct hlist_head *plink_hlist; + struct pseudo_link *plink; + + 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); + plink_hlist = &sbinfo->si_plink[i].head; + rcu_read_lock(); + hlist_for_each_entry_rcu(plink, plink_hlist, hlist) + if (plink->inode == inode) { + found = 1; + break; + } + rcu_read_unlock(); + 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 mutex *h_mtx; + + h_mtx = &d_inode(h_parent)->i_mutex; + mutex_lock_nested(h_mtx, AuLsc_I_CHILD2); + h_dentry = vfsub_lkup_one(tgtname, h_parent); + mutex_unlock(h_mtx); + 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); + mutex_lock_nested(&h_dir->i_mutex, 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: + mutex_unlock(&h_dir->i_mutex); + 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; +} + +/* free a single plink */ +static void do_put_plink(struct pseudo_link *plink, int do_del) +{ + if (do_del) + hlist_del(&plink->hlist); + iput(plink->inode); + kfree(plink); +} + +static void do_put_plink_rcu(struct rcu_head *rcu) +{ + struct pseudo_link *plink; + + plink = container_of(rcu, struct pseudo_link, rcu); + iput(plink->inode); + kfree(plink); +} + +/* + * 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_head *plink_hlist; + struct pseudo_link *plink, *tmp; + struct au_sphlhead *sphl; + 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); + sphl = sbinfo->si_plink + i; + plink_hlist = &sphl->head; + tmp = kmalloc(sizeof(*plink), GFP_NOFS); + if (tmp) + tmp->inode = au_igrab(inode); + else { + err = -ENOMEM; + goto out; + } + + spin_lock(&sphl->spin); + hlist_for_each_entry(plink, plink_hlist, hlist) { + if (plink->inode == inode) { + found = 1; + break; + } + } + if (!found) + hlist_add_head_rcu(&tmp->hlist, plink_hlist); + spin_unlock(&sphl->spin); + if (!found) { + cnt = au_sphl_count(sphl); +#define msg "unexpectedly unblanced 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)); + } else { + do_put_plink(tmp, 0); + return; + } + +out: + if (unlikely(err)) { + pr_warn("err %d, damaged pseudo link.\n", err); + if (tmp) { + au_sphl_del_rcu(&tmp->hlist, sphl); + call_rcu(&tmp->rcu, do_put_plink_rcu); + } + } +} + +/* free all plinks */ +void au_plink_put(struct super_block *sb, int verbose) +{ + int i, warned; + struct au_sbinfo *sbinfo; + struct hlist_head *plink_hlist; + struct hlist_node *tmp; + struct pseudo_link *plink; + + 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++) { + plink_hlist = &sbinfo->si_plink[i].head; + if (!warned && verbose && !hlist_empty(plink_hlist)) { + pr_warn("pseudo-link is not flushed"); + warned = 1; + } + hlist_for_each_entry_safe(plink, tmp, plink_hlist, hlist) + do_put_plink(plink, 0); + INIT_HLIST_HEAD(plink_hlist); + } +} + +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 bstart, bend, bindex; + + do_put = 0; + bstart = au_ibstart(inode); + bend = au_ibend(inode); + if (bstart >= 0) { + for (bindex = bstart; bindex <= bend; 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 = bstart; bindex <= bend; 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_head *plink_hlist; + struct hlist_node *tmp; + struct pseudo_link *plink; + 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 spin_lock since sbinfo is write-locked */ + for (i = 0; i < AuPlink_NHASH; i++) { + plink_hlist = &sbinfo->si_plink[i].head; + hlist_for_each_entry_safe(plink, tmp, plink_hlist, hlist) { + inode = au_igrab(plink->inode); + ii_write_lock_child(inode); + do_put = au_plink_do_half_refresh(inode, br_id); + if (do_put) + do_put_plink(plink, 1); + ii_write_unlock(inode); + iput(inode); + } + } +} --- linux-raspi2-4.2.0.orig/fs/aufs/poll.c +++ linux-raspi2-4.2.0/fs/aufs/poll.c @@ -0,0 +1,52 @@ +/* + * Copyright (C) 2005-2015 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" + +unsigned int aufs_poll(struct file *file, poll_table *wait) +{ + unsigned int mask; + int err; + struct file *h_file; + struct super_block *sb; + + /* We should pretend an error happened. */ + mask = POLLERR /* | POLLIN | POLLOUT */; + sb = file->f_path.dentry->d_sb; + si_read_lock(sb, AuLock_FLUSH | AuLock_NOPLMW); + + h_file = au_read_pre(file, /*keep_fi*/0); + err = PTR_ERR(h_file); + if (IS_ERR(h_file)) + goto out; + + /* it is not an error if h_file has no operation */ + mask = DEFAULT_POLLMASK; + if (h_file->f_op->poll) + mask = h_file->f_op->poll(h_file, wait); + fput(h_file); /* instead of au_read_post() */ + +out: + si_read_unlock(sb); + AuTraceErr((int)mask); + return mask; +} --- linux-raspi2-4.2.0.orig/fs/aufs/posix_acl.c +++ linux-raspi2-4.2.0/fs/aufs/posix_acl.c @@ -0,0 +1,99 @@ +/* + * Copyright (C) 2014-2015 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 +#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 & MS_POSIXACL)) + goto out; + + bindex = au_ibstart(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); + +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_srxattr arg = { + .type = AU_ACL_SET, + .u.acl_set = { + .acl = acl, + .type = type + }, + }; + + mutex_lock(&inode->i_mutex); + 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_srxattr(dentry, &arg); + dput(dentry); + err = ssz; + if (ssz >= 0) + err = 0; + +out: + mutex_unlock(&inode->i_mutex); + return err; +} --- linux-raspi2-4.2.0.orig/fs/aufs/procfs.c +++ linux-raspi2-4.2.0/fs/aufs/procfs.c @@ -0,0 +1,169 @@ +/* + * Copyright (C) 2010-2015 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; + + err = -EBUSY; + if (unlikely(file->private_data)) + goto out; + + sb = NULL; + /* don't use au_sbilist_lock() here */ + spin_lock(&au_sbilist.spin); + list_for_each_entry(sbinfo, &au_sbilist.head, si_list) + if (id == sysaufs_si_id(sbinfo)) { + kobject_get(&sbinfo->si_kobj); + sb = sbinfo->si_sb; + break; + } + spin_unlock(&au_sbilist.spin); + + 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 file_operations au_procfs_plm_fop = { + .write = au_procfs_plm_write, + .release = au_procfs_plm_release, + .owner = THIS_MODULE +}; + +/* ---------------------------------------------------------------------- */ + +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 | S_IWUSR, + au_procfs_dir, &au_procfs_plm_fop); + 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-raspi2-4.2.0.orig/fs/aufs/rdu.c +++ linux-raspi2-4.2.0/fs/aufs/rdu.c @@ -0,0 +1,388 @@ +/* + * Copyright (C) 2005-2015 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 bend; + 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; + + err = !access_ok(VERIFY_WRITE, 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)) + 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); +#if 1 + mutex_lock(&inode->i_mutex); +#else + err = mutex_lock_killable(&inode->i_mutex); + AuTraceErr(err); + if (unlikely(err)) + goto out; +#endif + + 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); + } + bend = au_fbstart(file); + if (cookie->bindex < bend) + cookie->bindex = bend; + bend = au_fbend_dir(file); + /* AuDbg("b%d, b%d\n", cookie->bindex, bend); */ + for (; !err && cookie->bindex <= bend; + 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_ibstart(inode))); + ii_read_unlock(inode); + +out_unlock: + fi_read_unlock(file); +out_si: + si_read_unlock(arg.sb); +out_mtx: + mutex_unlock(&inode->i_mutex); +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) + err = !access_ok(VERIFY_WRITE, &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-raspi2-4.2.0.orig/fs/aufs/rwsem.h +++ linux-raspi2-4.2.0/fs/aufs/rwsem.h @@ -0,0 +1,191 @@ +/* + * Copyright (C) 2005-2015 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" + +struct au_rwsem { + struct rw_semaphore rwsem; +#ifdef CONFIG_AUFS_DEBUG + /* just for debugging, not almighty counter */ + atomic_t rcnt, wcnt; +#endif +}; + +#ifdef CONFIG_AUFS_DEBUG +#define AuDbgCntInit(rw) do { \ + atomic_set(&(rw)->rcnt, 0); \ + atomic_set(&(rw)->wcnt, 0); \ + smp_mb(); /* atomic set */ \ +} while (0) + +#define AuDbgRcntInc(rw) atomic_inc(&(rw)->rcnt) +#define AuDbgRcntDec(rw) WARN_ON(atomic_dec_return(&(rw)->rcnt) < 0) +#define AuDbgWcntInc(rw) atomic_inc(&(rw)->wcnt) +#define AuDbgWcntDec(rw) WARN_ON(atomic_dec_return(&(rw)->wcnt) < 0) +#else +#define AuDbgCntInit(rw) do {} while (0) +#define AuDbgRcntInc(rw) do {} while (0) +#define AuDbgRcntDec(rw) do {} while (0) +#define AuDbgWcntInc(rw) do {} while (0) +#define AuDbgWcntDec(rw) do {} while (0) +#endif /* CONFIG_AUFS_DEBUG */ + +/* to debug easier, do not make them inlined functions */ +#define AuRwMustNoWaiters(rw) AuDebugOn(!list_empty(&(rw)->rwsem.wait_list)) +/* rwsem_is_locked() is unusable */ +#define AuRwMustReadLock(rw) AuDebugOn(atomic_read(&(rw)->rcnt) <= 0) +#define AuRwMustWriteLock(rw) AuDebugOn(atomic_read(&(rw)->wcnt) <= 0) +#define AuRwMustAnyLock(rw) AuDebugOn(atomic_read(&(rw)->rcnt) <= 0 \ + && atomic_read(&(rw)->wcnt) <= 0) +#define AuRwDestroy(rw) AuDebugOn(atomic_read(&(rw)->rcnt) \ + || atomic_read(&(rw)->wcnt)) + +#define au_rw_class(rw, key) lockdep_set_class(&(rw)->rwsem, key) + +static inline void au_rw_init(struct au_rwsem *rw) +{ + AuDbgCntInit(rw); + init_rwsem(&rw->rwsem); +} + +static inline void au_rw_init_wlock(struct au_rwsem *rw) +{ + au_rw_init(rw); + down_write(&rw->rwsem); + AuDbgWcntInc(rw); +} + +static inline void au_rw_init_wlock_nested(struct au_rwsem *rw, + unsigned int lsc) +{ + au_rw_init(rw); + down_write_nested(&rw->rwsem, lsc); + AuDbgWcntInc(rw); +} + +static inline void au_rw_read_lock(struct au_rwsem *rw) +{ + down_read(&rw->rwsem); + AuDbgRcntInc(rw); +} + +static inline void au_rw_read_lock_nested(struct au_rwsem *rw, unsigned int lsc) +{ + down_read_nested(&rw->rwsem, lsc); + AuDbgRcntInc(rw); +} + +static inline void au_rw_read_unlock(struct au_rwsem *rw) +{ + AuRwMustReadLock(rw); + AuDbgRcntDec(rw); + up_read(&rw->rwsem); +} + +static inline void au_rw_dgrade_lock(struct au_rwsem *rw) +{ + AuRwMustWriteLock(rw); + AuDbgRcntInc(rw); + AuDbgWcntDec(rw); + downgrade_write(&rw->rwsem); +} + +static inline void au_rw_write_lock(struct au_rwsem *rw) +{ + down_write(&rw->rwsem); + AuDbgWcntInc(rw); +} + +static inline void au_rw_write_lock_nested(struct au_rwsem *rw, + unsigned int lsc) +{ + down_write_nested(&rw->rwsem, lsc); + AuDbgWcntInc(rw); +} + +static inline void au_rw_write_unlock(struct au_rwsem *rw) +{ + AuRwMustWriteLock(rw); + AuDbgWcntDec(rw); + up_write(&rw->rwsem); +} + +/* why is not _nested version defined */ +static inline int au_rw_read_trylock(struct au_rwsem *rw) +{ + int ret; + + ret = down_read_trylock(&rw->rwsem); + if (ret) + AuDbgRcntInc(rw); + return ret; +} + +static inline int au_rw_write_trylock(struct au_rwsem *rw) +{ + int ret; + + ret = down_write_trylock(&rw->rwsem); + if (ret) + AuDbgWcntInc(rw); + return ret; +} + +#undef AuDbgCntInit +#undef AuDbgRcntInc +#undef AuDbgRcntDec +#undef AuDbgWcntInc +#undef AuDbgWcntDec + +#define AuSimpleLockRwsemFuncs(prefix, param, rwsem) \ +static inline void prefix##_read_lock(param) \ +{ au_rw_read_lock(rwsem); } \ +static inline void prefix##_write_lock(param) \ +{ au_rw_write_lock(rwsem); } \ +static inline int prefix##_read_trylock(param) \ +{ return au_rw_read_trylock(rwsem); } \ +static inline int prefix##_write_trylock(param) \ +{ return au_rw_write_trylock(rwsem); } +/* why is not _nested version defined */ +/* static inline void prefix##_read_trylock_nested(param, lsc) +{ au_rw_read_trylock_nested(rwsem, lsc)); } +static inline void prefix##_write_trylock_nestd(param, lsc) +{ au_rw_write_trylock_nested(rwsem, lsc); } */ + +#define AuSimpleUnlockRwsemFuncs(prefix, param, rwsem) \ +static inline void prefix##_read_unlock(param) \ +{ au_rw_read_unlock(rwsem); } \ +static inline void prefix##_write_unlock(param) \ +{ au_rw_write_unlock(rwsem); } \ +static inline void prefix##_downgrade_lock(param) \ +{ au_rw_dgrade_lock(rwsem); } + +#define AuSimpleRwsemFuncs(prefix, param, rwsem) \ + AuSimpleLockRwsemFuncs(prefix, param, rwsem) \ + AuSimpleUnlockRwsemFuncs(prefix, param, rwsem) + +#endif /* __KERNEL__ */ +#endif /* __AUFS_RWSEM_H__ */ --- linux-raspi2-4.2.0.orig/fs/aufs/sbinfo.c +++ linux-raspi2-4.2.0/fs/aufs/sbinfo.c @@ -0,0 +1,356 @@ +/* + * Copyright (C) 2005-2015 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 "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_empty(&sbinfo->si_plink[i].head)); + AuDebugOn(atomic_read(&sbinfo->si_nowait.nw_len)); + + au_rw_write_lock(&sbinfo->si_rwsem); + au_br_free(sbinfo); + au_rw_write_unlock(&sbinfo->si_rwsem); + + AuDebugOn(radix_tree_gang_lookup + (&sbinfo->au_si_pid.tree, (void **)&locked, + /*first_index*/PID_MAX_DEFAULT - 1, + /*max_items*/sizeof(locked)/sizeof(*locked))); + + kfree(sbinfo->si_branch); + kfree(sbinfo->au_si_pid.bitmap); + mutex_destroy(&sbinfo->si_xib_mtx); + AuRwDestroy(&sbinfo->si_rwsem); + + kfree(sbinfo); +} + +int au_si_alloc(struct super_block *sb) +{ + int err, i; + struct au_sbinfo *sbinfo; + static struct lock_class_key aufs_si; + + err = -ENOMEM; + sbinfo = kzalloc(sizeof(*sbinfo), GFP_NOFS); + if (unlikely(!sbinfo)) + goto out; + + BUILD_BUG_ON(sizeof(unsigned long) != + sizeof(*sbinfo->au_si_pid.bitmap)); + sbinfo->au_si_pid.bitmap = kcalloc(BITS_TO_LONGS(PID_MAX_DEFAULT), + sizeof(*sbinfo->au_si_pid.bitmap), + GFP_NOFS); + if (unlikely(!sbinfo->au_si_pid.bitmap)) + goto out_sbinfo; + + /* will be reallocated separately */ + sbinfo->si_branch = kzalloc(sizeof(*sbinfo->si_branch), GFP_NOFS); + if (unlikely(!sbinfo->si_branch)) + goto out_pidmap; + + err = sysaufs_si_init(sbinfo); + if (unlikely(err)) + goto out_br; + + au_nwt_init(&sbinfo->si_nowait); + au_rw_init_wlock(&sbinfo->si_rwsem); + au_rw_class(&sbinfo->si_rwsem, &aufs_si); + spin_lock_init(&sbinfo->au_si_pid.tree_lock); + INIT_RADIX_TREE(&sbinfo->au_si_pid.tree, GFP_ATOMIC | __GFP_NOFAIL); + + atomic_long_set(&sbinfo->si_ninodes, 0); + atomic_long_set(&sbinfo->si_nfiles, 0); + + sbinfo->si_bend = -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); + sbinfo->si_xino_brid = -1; + /* leave si_xib_last_pindex and si_xib_next_bit */ + + au_sphl_init(&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++) + au_sphl_init(sbinfo->si_plink + i); + init_waitqueue_head(&sbinfo->si_plink_wq); + spin_lock_init(&sbinfo->si_plink_maint_lock); + + au_sphl_init(&sbinfo->si_files); + + /* 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: + kfree(sbinfo->si_branch); +out_pidmap: + kfree(sbinfo->au_si_pid.bitmap); +out_sbinfo: + kfree(sbinfo); +out: + return err; +} + +int au_sbr_realloc(struct au_sbinfo *sbinfo, int nbr) +{ + int err, sz; + struct au_branch **brp; + + AuRwMustWriteLock(&sbinfo->si_rwsem); + + err = -ENOMEM; + sz = sizeof(*brp) * (sbinfo->si_bend + 1); + if (unlikely(!sz)) + sz = sizeof(*brp); + brp = au_kzrealloc(sbinfo->si_branch, sz, sizeof(*brp) * nbr, GFP_NOFS); + 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->i_version++; + 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)); + AuDebugOn(!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, DIR)); + + 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); +} + +/* ---------------------------------------------------------------------- */ + +int si_pid_test_slow(struct super_block *sb) +{ + void *p; + + rcu_read_lock(); + p = radix_tree_lookup(&au_sbi(sb)->au_si_pid.tree, current->pid); + rcu_read_unlock(); + + return (long)!!p; +} + +void si_pid_set_slow(struct super_block *sb) +{ + int err; + struct au_sbinfo *sbinfo; + + AuDebugOn(si_pid_test_slow(sb)); + + sbinfo = au_sbi(sb); + err = radix_tree_preload(GFP_NOFS | __GFP_NOFAIL); + AuDebugOn(err); + spin_lock(&sbinfo->au_si_pid.tree_lock); + err = radix_tree_insert(&sbinfo->au_si_pid.tree, current->pid, + /*any valid ptr*/sb); + spin_unlock(&sbinfo->au_si_pid.tree_lock); + AuDebugOn(err); + radix_tree_preload_end(); +} + +void si_pid_clr_slow(struct super_block *sb) +{ + void *p; + struct au_sbinfo *sbinfo; + + AuDebugOn(!si_pid_test_slow(sb)); + + sbinfo = au_sbi(sb); + spin_lock(&sbinfo->au_si_pid.tree_lock); + p = radix_tree_delete(&sbinfo->au_si_pid.tree, current->pid); + spin_unlock(&sbinfo->au_si_pid.tree_lock); +} --- linux-raspi2-4.2.0.orig/fs/aufs/spl.h +++ linux-raspi2-4.2.0/fs/aufs/spl.h @@ -0,0 +1,111 @@ +/* + * Copyright (C) 2005-2015 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 list protected by a spinlock + */ + +#ifndef __AUFS_SPL_H__ +#define __AUFS_SPL_H__ + +#ifdef __KERNEL__ + +struct au_splhead { + spinlock_t spin; + struct list_head head; +}; + +static inline void au_spl_init(struct au_splhead *spl) +{ + spin_lock_init(&spl->spin); + INIT_LIST_HEAD(&spl->head); +} + +static inline void au_spl_add(struct list_head *list, struct au_splhead *spl) +{ + spin_lock(&spl->spin); + list_add(list, &spl->head); + spin_unlock(&spl->spin); +} + +static inline void au_spl_del(struct list_head *list, struct au_splhead *spl) +{ + spin_lock(&spl->spin); + list_del(list); + spin_unlock(&spl->spin); +} + +static inline void au_spl_del_rcu(struct list_head *list, + struct au_splhead *spl) +{ + spin_lock(&spl->spin); + list_del_rcu(list); + spin_unlock(&spl->spin); +} + +/* ---------------------------------------------------------------------- */ + +struct au_sphlhead { + spinlock_t spin; + struct hlist_head head; +}; + +static inline void au_sphl_init(struct au_sphlhead *sphl) +{ + spin_lock_init(&sphl->spin); + INIT_HLIST_HEAD(&sphl->head); +} + +static inline void au_sphl_add(struct hlist_node *hlist, + struct au_sphlhead *sphl) +{ + spin_lock(&sphl->spin); + hlist_add_head(hlist, &sphl->head); + spin_unlock(&sphl->spin); +} + +static inline void au_sphl_del(struct hlist_node *hlist, + struct au_sphlhead *sphl) +{ + spin_lock(&sphl->spin); + hlist_del(hlist); + spin_unlock(&sphl->spin); +} + +static inline void au_sphl_del_rcu(struct hlist_node *hlist, + struct au_sphlhead *sphl) +{ + spin_lock(&sphl->spin); + hlist_del_rcu(hlist); + spin_unlock(&sphl->spin); +} + +static inline unsigned long au_sphl_count(struct au_sphlhead *sphl) +{ + unsigned long cnt; + struct hlist_node *pos; + + cnt = 0; + spin_lock(&sphl->spin); + hlist_for_each(pos, &sphl->head) + cnt++; + spin_unlock(&sphl->spin); + return cnt; +} + +#endif /* __KERNEL__ */ +#endif /* __AUFS_SPL_H__ */ --- linux-raspi2-4.2.0.orig/fs/aufs/super.c +++ linux-raspi2-4.2.0/fs/aufs/super.c @@ -0,0 +1,1007 @@ +/* + * Copyright (C) 2005-2015 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 "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); + c->vfs_inode.i_version = 1; /* sigen(sb); */ + c->iinfo.ii_hinode = NULL; + return &c->vfs_inode; + } + return NULL; +} + +static void aufs_destroy_inode_cb(struct rcu_head *head) +{ + struct inode *inode = container_of(head, struct inode, i_rcu); + + INIT_HLIST_HEAD(&inode->i_dentry); + au_cache_free_icntnr(container_of(inode, struct au_icntnr, vfs_inode)); +} + +static void aufs_destroy_inode(struct inode *inode) +{ + au_iinfo_fin(inode); + call_rcu(&inode->i_rcu, aufs_destroy_inode_cb); +} + +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->i_version++; + 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, bend; + struct path path; + struct au_hdentry *hdp; + struct au_branch *br; + au_br_perm_str_t perm; + + err = 0; + bend = au_sbend(sb); + hdp = au_di(sb->s_root)->di_hdentry; + for (bindex = 0; !err && bindex <= bend; bindex++) { + br = au_sbr(sb, bindex); + path.mnt = au_br_mnt(br); + path.dentry = hdp[bindex].hd_dentry; + err = au_seq_path(seq, &path); + if (err > 0) { + au_optstr_br_perm(&perm, br->br_perm); + err = seq_printf(seq, "=%s", perm.a); + if (err == -1) + err = -E2BIG; + } + if (!err && bindex != bend) + err = seq_putc(seq, ':'); + } + + return err; +} + +static void au_show_wbr_create(struct seq_file *m, int v, + struct au_sbinfo *sbinfo) +{ + const char *pat; + + AuRwMustAnyLock(&sbinfo->si_rwsem); + + seq_puts(m, ",create="); + pat = au_optstr_wbr_create(v); + switch (v) { + case AuWbrCreate_TDP: + case AuWbrCreate_RR: + case AuWbrCreate_MFS: + case AuWbrCreate_PMFS: + seq_puts(m, pat); + break; + case AuWbrCreate_MFSV: + seq_printf(m, /*pat*/"mfs:%lu", + jiffies_to_msecs(sbinfo->si_wbr_mfs.mfs_expire) + / MSEC_PER_SEC); + break; + case AuWbrCreate_PMFSV: + seq_printf(m, /*pat*/"pmfs:%lu", + jiffies_to_msecs(sbinfo->si_wbr_mfs.mfs_expire) + / MSEC_PER_SEC); + break; + case AuWbrCreate_MFSRR: + seq_printf(m, /*pat*/"mfsrr:%llu", + sbinfo->si_wbr_mfs.mfsrr_watermark); + break; + case AuWbrCreate_MFSRRV: + seq_printf(m, /*pat*/"mfsrr:%llu:%lu", + sbinfo->si_wbr_mfs.mfsrr_watermark, + jiffies_to_msecs(sbinfo->si_wbr_mfs.mfs_expire) + / MSEC_PER_SEC); + break; + case AuWbrCreate_PMFSRR: + seq_printf(m, /*pat*/"pmfsrr:%llu", + sbinfo->si_wbr_mfs.mfsrr_watermark); + break; + case AuWbrCreate_PMFSRRV: + seq_printf(m, /*pat*/"pmfsrr:%llu:%lu", + sbinfo->si_wbr_mfs.mfsrr_watermark, + jiffies_to_msecs(sbinfo->si_wbr_mfs.mfs_expire) + / MSEC_PER_SEC); + break; + } +} + +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_hdentry *hdp; + + 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; + brid = au_xino_brid(sb); + if (brid >= 0) { + bindex = au_br_index(sb, brid); + hdp = au_di(sb->s_root)->di_hdentry; + h_root = hdp[0 + bindex].hd_dentry; + } + 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 & MS_POSIXACL) + seq_puts(m, ",acl"); + + /* 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(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 bend, 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; + bend = au_sbend(sb); + for (bindex = 0; bindex <= bend; 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 bend, bindex; + struct au_branch *br; + struct super_block *h_sb; + + err = 0; + si_noflush_read_lock(sb); + bend = au_sbend(sb); + for (bindex = 0; bindex <= bend; bindex++) { + br = au_sbr(sb, bindex); + if (!au_br_writable(br->br_perm)) + continue; + + h_sb = au_sbr_sb(sb, bindex); + if (h_sb->s_op->sync_fs) { + e = h_sb->s_op->sync_fs(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) + return; + + dbgaufs_si_fin(sbinfo); + kobject_put(&sbinfo->si_kobj); +} + +/* ---------------------------------------------------------------------- */ + +void au_array_free(void *array) +{ + if (array) { + if (!is_vmalloc_addr(array)) + kfree(array); + else + vfree(array); + } +} + +void *au_array_alloc(unsigned long long *hint, au_arraycb_t cb, 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(array, *hint, arg); + AuDebugOn(n > *hint); + +out: + *hint = n; + return array; +} + +static unsigned long long au_iarray_cb(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(&inode_sb_list_lock); + list_for_each_entry(inode, head, i_sb_list) { + if (!is_bad_inode(inode) + && au_ii(inode)->ii_bstart >= 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(&inode_sb_list_lock); + + return n; +} + +struct inode **au_iarray_alloc(struct super_block *sb, unsigned long long *max) +{ + *max = atomic_long_read(&au_sbi(sb)->si_ninodes); + return au_array_alloc(max, au_iarray_cb, &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]); + au_array_free(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) +{ + 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); + + AuTraceErr(err); + return err; +} + +static int au_refresh_d(struct super_block *sb) +{ + 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); + + 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); + 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) +{ + 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; + if (au_iigen(inode, NULL) != sigen) { + ii_write_lock_child(inode); + e = au_refresh_hinode_self(inode); + ii_write_unlock(inode); + if (unlikely(e)) { + pr_err("error %d, i%lu\n", e, inode->i_ino); + if (!err) + err = e; + /* go on even if err */ + } + } + } + + au_iarray_free(array, max); + +out: + return err; +} + +static void au_remount_refresh(struct super_block *sb) +{ + int err, e; + unsigned int udba; + aufs_bindex_t bindex, bend; + struct dentry *root; + struct inode *inode; + struct au_branch *br; + + au_sigen_inc(sb); + au_fclr_si(au_sbi(sb), FAILED_REFRESH_DIR); + + root = sb->s_root; + DiMustNoWaiters(root); + inode = d_inode(root); + IiMustNoWaiters(inode); + + udba = au_opt_udba(sb); + bend = au_sbend(sb); + for (bindex = 0; bindex <= bend; 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)); + + di_write_unlock(root); + err = au_refresh_d(sb); + e = au_refresh_i(sb); + 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; + 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; + memset(&opts, 0, sizeof(opts)); + 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); + mutex_lock(&inode->i_mutex); + 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); + + 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: + mutex_unlock(&inode->i_mutex); +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, + /* 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_dir_iop; + 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; + 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; + memset(&opts, 0, sizeof(opts)); + 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; + + /* all timestamps always follow the ones on the branch */ + sb->s_flags |= MS_NOATIME | MS_NODIRATIME; + 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. */ + mutex_lock(&inode->i_mutex); + aufs_write_lock(root); + err = au_opts_mount(sb, &opts); + au_opts_free(&opts); + aufs_write_unlock(root); + mutex_unlock(&inode->i_mutex); + if (!err) + goto out_opts; /* success */ + +out_root: + dput(root); + sb->s_root = NULL; +out_info: + dbgaufs_si_fin(au_sbi(sb)); + kobject_put(&au_sbi(sb)->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; + struct super_block *sb; + + /* 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; + + sb = root->d_sb; + si_write_lock(sb, !AuLock_FLUSH); + sysaufs_brs_add(sb, 0); + si_write_unlock(sb); + au_sbilist_add(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); + } + if (au_opt_test(sbinfo->si_mntflags, PLINK)) + au_plink_put(sb, /*verbose*/1); + au_xino_clr(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-raspi2-4.2.0.orig/fs/aufs/super.h +++ linux-raspi2-4.2.0/fs/aufs/super.h @@ -0,0 +1,635 @@ +/* + * Copyright (C) 2005-2015 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 "rwsem.h" +#include "spl.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; +}; + +struct pseudo_link { + union { + struct hlist_node hlist; + struct rcu_head rcu; + }; + struct inode *inode; +}; + +#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 dependecy between i_mutex. + * rwsem for au_sbinfo is necessary. + */ + struct au_rwsem si_rwsem; + + /* prevent recursive locking in deleting inode */ + struct { + unsigned long *bitmap; + spinlock_t tree_lock; + struct radix_tree_root tree; + } au_si_pid; + + /* + * dirty approach to protect sb->sb_inodes and ->s_files (gone) from + * remount. + */ + atomic_long_t si_ninodes, si_nfiles; + + /* branch management */ + unsigned int si_generation; + + /* see AuSi_ flags */ + unsigned char au_si_status; + + aufs_bindex_t si_bend; + + /* 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; + 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; + aufs_bindex_t si_xino_brid; + 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 */ + struct file *si_xigen; + atomic_t si_xigen_next; +#endif + + /* dirty trick to suppoer atomic_open */ + struct au_sphlhead 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 au_sphlhead 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 au_sphlhead si_files; + + /* + * sysfs and lifetime management. + * this is not a small structure and it may be a waste of memory in case + * of sysfs is disabled, particulary 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 list_head 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 unnecesary + */ +#define AuSi_FAILED_REFRESH_DIR 1 + +#define AuSi_FHSM (1 << 1) /* fhsm is active now */ + +#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_DIR (1 << 4) /* target is a dir */ +#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)(void *array, unsigned long long max, + void *arg); +void au_array_free(void *array); +void *au_array_alloc(unsigned long long *hint, au_arraycb_t cb, 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); + +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); + +int si_pid_test_slow(struct super_block *sb); +void si_pid_set_slow(struct super_block *sb); +void si_pid_clr_slow(struct super_block *sb); + +/* 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 bstart); + +/* 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 file *base); +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 file *base) +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 au_splhead au_sbilist; + +static inline void au_sbilist_init(void) +{ + au_spl_init(&au_sbilist); +} + +static inline void au_sbilist_add(struct super_block *sb) +{ + au_spl_add(&au_sbi(sb)->si_list, &au_sbilist); +} + +static inline void au_sbilist_del(struct super_block *sb) +{ + au_spl_del(&au_sbi(sb)->si_list, &au_sbilist); +} + +#ifdef CONFIG_AUFS_MAGIC_SYSRQ +static inline void au_sbilist_lock(void) +{ + spin_lock(&au_sbilist.spin); +} + +static inline void au_sbilist_unlock(void) +{ + spin_unlock(&au_sbilist.spin); +} +#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 +} + +/* ---------------------------------------------------------------------- */ + +static inline pid_t si_pid_bit(void) +{ + /* the origin of pid is 1, but the bitmap's is 0 */ + return current->pid - 1; +} + +static inline int si_pid_test(struct super_block *sb) +{ + pid_t bit; + + bit = si_pid_bit(); + if (bit < PID_MAX_DEFAULT) + return test_bit(bit, au_sbi(sb)->au_si_pid.bitmap); + return si_pid_test_slow(sb); +} + +static inline void si_pid_set(struct super_block *sb) +{ + pid_t bit; + + bit = si_pid_bit(); + if (bit < PID_MAX_DEFAULT) { + AuDebugOn(test_bit(bit, au_sbi(sb)->au_si_pid.bitmap)); + set_bit(bit, au_sbi(sb)->au_si_pid.bitmap); + /* smp_mb(); */ + } else + si_pid_set_slow(sb); +} + +static inline void si_pid_clr(struct super_block *sb) +{ + pid_t bit; + + bit = si_pid_bit(); + if (bit < PID_MAX_DEFAULT) { + AuDebugOn(!test_bit(bit, au_sbi(sb)->au_si_pid.bitmap)); + clear_bit(bit, au_sbi(sb)->au_si_pid.bitmap); + /* smp_mb(); */ + } else + si_pid_clr_slow(sb); +} + +/* ---------------------------------------------------------------------- */ + +/* lock superblock. mainly for entry point functions */ +/* + * __si_read_lock, __si_write_lock, + * __si_read_unlock, __si_write_unlock, __si_downgrade_lock + */ +AuSimpleRwsemFuncs(__si, struct super_block *sb, &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_sbend(struct super_block *sb) +{ + SiMustAnyLock(sb); + return au_sbi(sb)->si_bend; +} + +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 void au_ninodes_inc(struct super_block *sb) +{ + atomic_long_inc(&au_sbi(sb)->si_ninodes); +} + +static inline void au_ninodes_dec(struct super_block *sb) +{ + AuDebugOn(!atomic_long_read(&au_sbi(sb)->si_ninodes)); + atomic_long_dec(&au_sbi(sb)->si_ninodes); +} + +static inline void au_nfiles_inc(struct super_block *sb) +{ + atomic_long_inc(&au_sbi(sb)->si_nfiles); +} + +static inline void au_nfiles_dec(struct super_block *sb) +{ + AuDebugOn(!atomic_long_read(&au_sbi(sb)->si_nfiles)); + atomic_long_dec(&au_sbi(sb)->si_nfiles); +} + +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 void au_xino_brid_set(struct super_block *sb, aufs_bindex_t brid) +{ + SiMustWriteLock(sb); + au_sbi(sb)->si_xino_brid = brid; +} + +static inline aufs_bindex_t au_xino_brid(struct super_block *sb) +{ + SiMustAnyLock(sb); + return au_sbi(sb)->si_xino_brid; +} + +#endif /* __KERNEL__ */ +#endif /* __AUFS_SUPER_H__ */ --- linux-raspi2-4.2.0.orig/fs/aufs/sysaufs.c +++ linux-raspi2-4.2.0/fs/aufs/sysaufs.c @@ -0,0 +1,104 @@ +/* + * Copyright (C) 2005-2015 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)); + + dbgaufs_si_null(sbinfo); + if (!err) { + err = dbgaufs_si_init(sbinfo); + if (unlikely(err)) + kobject_put(&sbinfo->si_kobj); + } + return err; +} + +void sysaufs_fin(void) +{ + dbgaufs_fin(); + 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); + goto out; + } + + err = dbgaufs_init(); + if (unlikely(err)) + sysaufs_fin(); +out: + return err; +} --- linux-raspi2-4.2.0.orig/fs/aufs/sysaufs.h +++ linux-raspi2-4.2.0/fs/aufs/sysaufs.h @@ -0,0 +1,101 @@ +/* + * Copyright (C) 2005-2015 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-raspi2-4.2.0.orig/fs/aufs/sysfs.c +++ linux-raspi2-4.2.0/fs/aufs/sysfs.c @@ -0,0 +1,372 @@ +/* + * Copyright (C) 2005-2015 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); + au_seq_path(seq, &path); + au_optstr_br_perm(&perm, br->br_perm); + err = seq_printf(seq, "=%s\n", perm.a); + break; + case AuBrSysfs_BRID: + err = seq_printf(seq, "%d\n", br->br_id); + break; + } + di_read_unlock(root, !AuLock_IR); + if (err == -1) + 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 bend; + 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) { + bend = au_sbend(sb); + if (l <= bend) + 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; + } + kfree(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, bend; + size_t sz; + char *buf; + struct seq_file *seq; + struct au_branch *br; + + si_read_lock(sb, AuLock_FLUSH); + bend = au_sbend(sb); + err = bend + 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 <= bend; bindex++, arg++) { + err = !access_ok(VERIFY_WRITE, 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; + + au_seq_path(seq, &br->br_path); + err = seq_putc(seq, '\0'); + if (!err && seq->count <= sz) { + 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: + kfree(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 = S_IRUGO; + 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 bend; + + dbgaufs_brs_del(sb, bindex); + + if (!sysaufs_brs) + return; + + kobj = &au_sbi(sb)->si_kobj; + bend = au_sbend(sb); + for (; bindex <= bend; 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 bend; + struct kobject *kobj; + struct au_branch *br; + struct au_brsysfs *br_sysfs; + + dbgaufs_brs_add(sb, bindex); + + if (!sysaufs_brs) + return; + + kobj = &au_sbi(sb)->si_kobj; + bend = au_sbend(sb); + for (; bindex <= bend; 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-raspi2-4.2.0.orig/fs/aufs/sysrq.c +++ linux-raspi2-4.2.0/fs/aufs/sysrq.c @@ -0,0 +1,157 @@ +/* + * Copyright (C) 2005-2015 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 hanlder + */ + +/* #include */ +#include +#include "aufs.h" + +/* ---------------------------------------------------------------------- */ + +static void sysrq_sb(struct super_block *sb) +{ + char *plevel; + struct au_sbinfo *sbinfo; + struct file *file; + struct au_sphlhead *files; + struct au_finfo *finfo; + + 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 + pr("root dentry\n"); + au_dpri_dentry(sb->s_root); + pr("root inode\n"); + au_dpri_inode(d_inode(sb->s_root)); +#endif + +#if 0 + 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 + +#if 1 + { + struct inode *i; + + pr("isolated inode\n"); + spin_lock(&inode_sb_list_lock); + list_for_each_entry(i, &sb->s_inodes, i_sb_list) { + spin_lock(&i->i_lock); + if (1 || hlist_empty(&i->i_dentry)) + au_dpri_inode(i); + spin_unlock(&i->i_lock); + } + spin_unlock(&inode_sb_list_lock); + } +#endif + pr("files\n"); + files = &au_sbi(sb)->si_files; + spin_lock(&files->spin); + hlist_for_each_entry(finfo, &files->head, fi_hlist) { + umode_t mode; + + file = finfo->fi_file; + mode = file_inode(file)->i_mode; + if (!special_file(mode)) + au_dpri_file(file); + } + spin_unlock(&files->spin); + pr("done\n"); + +#undef pr + au_plevel = plevel; +} + +/* ---------------------------------------------------------------------- */ + +/* module parameter */ +static char *aufs_sysrq_key = "a"; +module_param_named(sysrq, aufs_sysrq_key, charp, S_IRUGO); +MODULE_PARM_DESC(sysrq, "MagicSysRq key for " AUFS_NAME); + +static void au_sysrq(int key __maybe_unused) +{ + struct au_sbinfo *sbinfo; + + lockdep_off(); + au_sbilist_lock(); + list_for_each_entry(sbinfo, &au_sbilist.head, 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-raspi2-4.2.0.orig/fs/aufs/vdir.c +++ linux-raspi2-4.2.0/fs/aufs/vdir.c @@ -0,0 +1,888 @@ +/* + * Copyright (C) 2005-2015 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 "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 apropriate 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 + 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) + kfree(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++); + } + kfree(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; + 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 = krealloc(vdir->vd_deblk, sizeof(*o) * (vdir->vd_nblk + 1), + GFP_NOFS); + 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--) + kfree(*deblk++); + kfree(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 apropriate 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 */ + + kfree(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) { + kfree(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 */ + + 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 bend, bindex, bstart; + 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); + } + bstart = au_fbstart(file); + bend = au_fbend_dir(file); + for (bindex = bstart; !err && bindex <= bend; 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 != bend + && 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); + 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->i_version != 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->i_version; + 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 = krealloc(tgt->vd_deblk, sizeof(*p) * src->vd_nblk, + GFP_NOFS); + 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 = krealloc(tgt->vd_deblk[0], deblk_sz, GFP_NOFS); + 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->i_version; + 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(); */ + AuTraceErr(!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; + + vdir_cache = au_fvdir_cache(file); + if (!seek_vdir(file, ctx)) + return 0; + + 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-raspi2-4.2.0.orig/fs/aufs/vfsub.c +++ linux-raspi2-4.2.0/fs/aufs/vfsub.c @@ -0,0 +1,848 @@ +/* + * Copyright (C) 2005-2015 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 "aufs.h" + +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 = vfs_getattr(h_path, &st); + + return err; +} + +/* ---------------------------------------------------------------------- */ + +struct file *vfsub_dentry_open(struct path *path, int flags) +{ + struct file *file; + + file = dentry_open(path, flags /* | __FMODE_NONOTIFY */, + current_cred()); + if (!IS_ERR_OR_NULL(file) + && (file->f_mode & (FMODE_READ | FMODE_WRITE)) == FMODE_READ) + i_readcount_inc(d_inode(path->dentry)); + + return file; +} + +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, struct au_branch *br) +{ + int err; + 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; + + args->file->f_path.dentry = DENTRY_NOT_SET; + args->file->f_path.mnt = au_br_mnt(br); + err = dir->i_op->atomic_open(dir, dentry, file, args->open_flag, + args->create_mode, args->opened); + if (err >= 0) { + /* some filesystems don't set FILE_CREATED while succeeded? */ + if (*args->opened & FILE_CREATED) + fsnotify_create(dir, dentry); + } else + goto out; + + + if (!err) { + /* todo: call VFS:may_open() here */ + err = open_check_o_direct(file); + /* todo: ima_file_check() too? */ + if (!err && (args->open_flag & __FMODE_EXEC)) + err = deny_write_access(file); + if (unlikely(err)) + /* note that the file is created and still opened */ + goto out; + } + + atomic_inc(&br->br_count); + fsnotify_open(file); + +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(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) +{ + 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*/0); + 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{%pf, %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-raspi2-4.2.0.orig/fs/aufs/vfsub.h +++ linux-raspi2-4.2.0/fs/aufs/vfsub.h @@ -0,0 +1,286 @@ +/* + * Copyright (C) 2005-2015 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 "debug.h" + +/* copied from linux/fs/internal.h */ +/* todo: BAD approach!! */ +extern void __mnt_drop_write(struct vfsmount *); +extern spinlock_t inode_sb_list_lock; +extern int open_check_o_direct(struct file *f); + +/* ---------------------------------------------------------------------- */ + +/* 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) MtxMustLock(&(i)->i_mutex) + +/* ---------------------------------------------------------------------- */ + +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 (inode->i_sb->s_flags & MS_RDONLY) + || IS_RDONLY(inode) + /* || IS_APPEND(inode) */ + || IS_IMMUTABLE(inode); +} + +/* ---------------------------------------------------------------------- */ + +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 vfsub_aopen_args { + struct file *file; + unsigned int open_flag; + umode_t create_mode; + int *opened; +}; +struct au_branch; +int vfsub_atomic_open(struct inode *dir, struct dentry *dentry, + struct vfsub_aopen_args *args, struct au_branch *br); +int vfsub_kern_path(const char *name, unsigned int flags, struct path *path); + +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); +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; +} + +#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 + +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*/ +} + +static inline int vfsub_update_time(struct inode *h_inode, struct timespec *ts, + int flags) +{ + return generic_update_time(h_inode, ts, flags); + /* no vfsub_update_h_iattr() since we don't have struct path */ +} + +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); + +/* ---------------------------------------------------------------------- */ + +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_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-raspi2-4.2.0.orig/fs/aufs/wbr_policy.c +++ linux-raspi2-4.2.0/fs/aufs/wbr_policy.c @@ -0,0 +1,765 @@ +/* + * Copyright (C) 2005-2015 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, bstart; + struct path h_path; + struct dentry *parent; + struct inode *h_dir, *h_inode, *inode, *dir; + unsigned int *flags = arg; + + bstart = au_dbstart(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, + S_IRWXU | S_IRUGO | S_IXUGO); + 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); + mutex_lock_nested(&h_inode->i_mutex, AuLsc_I_CHILD); + if (au_ftest_cpdown(*flags, WHED)) { + err = au_cpdown_dir_opq(dentry, bdst, flags); + if (unlikely(err)) { + mutex_unlock(&h_inode->i_mutex); + goto out_dir; + } + } + + err = au_cpdown_attr(&h_path, au_h_dptr(dentry, bstart)); + mutex_unlock(&h_inode->i_mutex); + 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_ibend(inode) < bdst) + au_set_ibend(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)) { + mutex_lock_nested(&h_inode->i_mutex, AuLsc_I_CHILD); + rerr = au_diropq_remove(dentry, bdst); + mutex_unlock(&h_inode->i_mutex); + 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_dbend(dentry) == bdst) + au_update_dbend(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 bstart, bindex; + struct super_block *sb; + struct dentry *parent, *h_parent; + + sb = dentry->d_sb; + bstart = au_dbstart(dentry); + err = bstart; + if (!au_br_rdonly(au_sbr(sb, bstart))) + goto out; + + err = -EROFS; + parent = dget_parent(dentry); + for (bindex = au_dbstart(parent); bindex < bstart; 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, bstart - 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_sbend(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, bend; + 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; + bend = au_sbend(sb); + nbr = bend + 1; + for (bindex = 0; bindex <= bend; 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, bend; + 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; + bend = au_sbend(sb); + } else { + bindex = au_dbstart(parent); + bend = au_dbtaildir(parent); + } + + for (; bindex <= bend; 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); + kfree(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; +} + +/* ---------------------------------------------------------------------- */ + +/* 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, bstart, bend; + 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); + bstart = au_dbstart(parent); + bend = au_dbtaildir(parent); + if (bstart == bend) + 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 = bstart; bindex <= bend; 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, bstart; + struct dentry *parent, *h_parent; + struct super_block *sb; + + err = -EROFS; + sb = dentry->d_sb; + parent = dget_parent(dentry); + bstart = au_dbstart(parent); + for (bindex = au_dbstart(dentry); bindex >= bstart; 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, bstart - 1); + + AuDbg("b%d\n", err); + return err; +} + +/* bottom up */ +int au_wbr_do_copyup_bu(struct dentry *dentry, aufs_bindex_t bstart) +{ + int err; + + err = au_wbr_bu(dentry->d_sb, bstart); + AuDbg("b%d\n", err); + if (err > bstart) + 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 bstart; + + bstart = au_dbstart(dentry); + err = au_wbr_do_copyup_bu(dentry, bstart); + 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_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-raspi2-4.2.0.orig/fs/aufs/whout.c +++ linux-raspi2-4.2.0/fs/aufs/whout.c @@ -0,0 +1,1063 @@ +/* + * Copyright (C) 2005-2015 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 S_IRUGO + +/* + * 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) + kfree(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); + 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; +} + +/* 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 = S_IRWXU; + + if (au_test_nfs(path->dentry->d_sb)) + mode |= S_IXUGO; + 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: succuess + * 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_imtx_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_imtx_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); + atomic_dec(&a->br->br_count); + si_write_unlock(a->sb); + au_nwt_done(&au_sbi(a->sb)->si_nowait); + kfree(arg); + 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; + atomic_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); + atomic_dec(&br->br_count); + kfree(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); + kfree(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 = kmalloc(sizeof(*whtmp), gfp); + if (unlikely(!whtmp)) { + whtmp = ERR_PTR(-ENOMEM); + goto out; + } + + whtmp->dir = NULL; + whtmp->br = NULL; + whtmp->wh_dentry = NULL; + /* 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)) { + kfree(whtmp); + whtmp = ERR_PTR(err); + } + +out: + return whtmp; +} + +void au_whtmp_rmdir_free(struct au_whtmp_rmdir *whtmp) +{ + if (whtmp->br) + atomic_dec(&whtmp->br->br_count); + dput(whtmp->wh_dentry); + iput(whtmp->dir); + au_nhash_wh_free(&whtmp->whlist); + kfree(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); + mutex_lock_nested(&wh_inode->i_mutex, 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; + } + mutex_unlock(&wh_inode->i_mutex); + + 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_ibstart(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 */ + /* mutex_lock(&a->dir->i_mutex); */ + 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_imtx_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_imtx_unlock(hdir); + vfsub_mnt_drop_write(au_br_mnt(a->br)); + +out_mnt: + dput(h_parent); + ii_write_unlock(a->dir); +out: + /* mutex_unlock(&a->dir->i_mutex); */ + 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); + atomic_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-raspi2-4.2.0.orig/fs/aufs/whout.h +++ linux-raspi2-4.2.0/fs/aufs/whout.h @@ -0,0 +1,85 @@ +/* + * Copyright (C) 2005-2015 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-raspi2-4.2.0.orig/fs/aufs/wkq.c +++ linux-raspi2-4.2.0/fs/aufs/wkq.c @@ -0,0 +1,213 @@ +/* + * Copyright (C) 2005-2015 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 dredential 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; + + struct completion *comp; +}; + +/* ---------------------------------------------------------------------- */ + +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); + + wkinfo->func(wkinfo->args); + if (au_ftest_wkq(wkinfo->flags, WAIT)) + complete(wkinfo->comp); + else { + kobject_put(wkinfo->kobj); + module_put(THIS_MODULE); /* todo: ?? */ + kfree(wkinfo); + } +} + +/* + * Since struct completion is large, try allocating it dynamically. + */ +#if 1 /* defined(CONFIG_4KSTACKS) || defined(AuTest4KSTACKS) */ +#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) +{ + kfree(comp); +} + +#else + +/* no braces */ +#define AuWkqCompDeclare(name) \ + DECLARE_COMPLETION_ONSTACK(_ ## name); \ + struct completion *comp = &_ ## name + +static int au_wkq_comp_alloc(struct au_wkinfo *wkinfo, struct completion **comp) +{ + wkinfo->comp = *comp; + return 0; +} + +static void au_wkq_comp_free(struct completion *comp __maybe_unused) +{ + /* empty */ +} +#endif /* 4KSTACKS */ + +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?\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 (!err) { + au_wkq_run(&wkinfo); + /* no timeout, no interrupt */ + wait_for_completion(wkinfo.comp); + au_wkq_comp_free(comp); + 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; + 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-raspi2-4.2.0.orig/fs/aufs/wkq.h +++ linux-raspi2-4.2.0/fs/aufs/wkq.h @@ -0,0 +1,91 @@ +/* + * Copyright (C) 2005-2015 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__ + +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) + +#ifndef CONFIG_AUFS_HNOTIFY +#undef AuWkq_NEST +#define AuWkq_NEST 0 +#endif + +/* 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-raspi2-4.2.0.orig/fs/aufs/xattr.c +++ linux-raspi2-4.2.0/fs/aufs/xattr.c @@ -0,0 +1,344 @@ +/* + * Copyright (C) 2014-2015 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 "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); + mutex_unlock(&h_idst->i_mutex); + err = vfsub_setxattr(h_dst, name, *buf, ssz, /*flags*/0); + mutex_lock_nested(&h_idst->i_mutex, 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); + mutex_unlock(&h_idst->i_mutex); + mutex_lock_nested(&h_isrc->i_mutex, AuLsc_I_CHILD); + mutex_lock_nested(&h_idst->i_mutex, 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); + } + mutex_unlock(&h_isrc->i_mutex); + 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); + } + + kfree(value); + +out_free: + kfree(o); +out: + if (!unlocked) + mutex_unlock(&h_isrc->i_mutex); + AuTraceErr(err); + return err; +} + +/* ---------------------------------------------------------------------- */ + +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 au_lgxattr *arg) +{ + ssize_t err; + struct path h_path; + struct super_block *sb; + + sb = dentry->d_sb; + err = si_read_lock(sb, AuLock_FLUSH | AuLock_NOPLM); + if (unlikely(err)) + goto out; + err = au_h_path_getattr(dentry, /*force*/1, &h_path); + 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: + err = vfs_getxattr(h_path.dentry, + arg->u.get.name, arg->u.get.value, + arg->u.get.size); + break; + } + +out_di: + di_read_unlock(dentry, AuLock_IR); +out_si: + 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, &arg); +} + +ssize_t aufs_getxattr(struct dentry *dentry, 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, &arg); +} + +int aufs_setxattr(struct dentry *dentry, const char *name, const void *value, + size_t size, int flags) +{ + struct au_srxattr arg = { + .type = AU_XATTR_SET, + .u.set = { + .name = name, + .value = value, + .size = size, + .flags = flags + }, + }; + + return au_srxattr(dentry, &arg); +} + +int aufs_removexattr(struct dentry *dentry, const char *name) +{ + struct au_srxattr arg = { + .type = AU_XATTR_REMOVE, + .u.remove = { + .name = name + }, + }; + + return au_srxattr(dentry, &arg); +} + +/* ---------------------------------------------------------------------- */ + +#if 0 +static size_t au_xattr_list(struct dentry *dentry, char *list, size_t list_size, + const char *name, size_t name_len, int type) +{ + return aufs_listxattr(dentry, list, list_size); +} + +static int au_xattr_get(struct dentry *dentry, const char *name, void *buffer, + size_t size, int type) +{ + return aufs_getxattr(dentry, name, buffer, size); +} + +static int au_xattr_set(struct dentry *dentry, const char *name, + const void *value, size_t size, int flags, int type) +{ + return aufs_setxattr(dentry, name, value, size, flags); +} + +static const struct xattr_handler au_xattr_handler = { + /* no prefix, no flags */ + .list = au_xattr_list, + .get = au_xattr_get, + .set = au_xattr_set + /* why no remove? */ +}; + +static const struct xattr_handler *au_xattr_handlers[] = { + &au_xattr_handler +}; + +void au_xattr_init(struct super_block *sb) +{ + /* sb->s_xattr = au_xattr_handlers; */ +} +#endif --- linux-raspi2-4.2.0.orig/fs/aufs/xino.c +++ linux-raspi2-4.2.0/fs/aufs/xino.c @@ -0,0 +1,1297 @@ +/* + * Copyright (C) 2005-2015 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 + */ + +#include +#include +#include "aufs.h" + +/* 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; + + buf.k = kbuf; + oldfs = get_fs(); + set_fs(KERNEL_DS); + do { + /* todo: signal_pending? */ + err = func(file, buf.u, size, pos); + } while (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; +} + +/* ---------------------------------------------------------------------- */ + +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; + + buf.k = kbuf; + oldfs = get_fs(); + set_fs(KERNEL_DS); + do { + /* todo: signal_pending? */ + err = func(file, buf.u, size, pos); + } while (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); +} + +ssize_t xino_fwrite(vfs_writef_t func, struct file *file, void *buf, + size_t size, loff_t *pos) +{ + ssize_t err; + + /* todo: signal block and no wkq? */ + if (rlimit(RLIMIT_FSIZE) == RLIM_INFINITY) { + lockdep_off(); + err = do_xino_fwrite(func, file, buf, size, pos); + lockdep_on(); + } else { + /* + * it breaks RLIMIT_FSIZE and normal user's limit, + * users should care about quota and real 'filesystem full.' + */ + int wkq_err; + struct do_xino_fwrite_args args = { + .errp = &err, + .func = func, + .file = file, + .buf = buf, + .size = size, + .pos = pos + }; + + wkq_err = au_wkq_wait(call_do_xino_fwrite, &args); + if (unlikely(wkq_err)) + err = wkq_err; + } + + return err; +} + +/* ---------------------------------------------------------------------- */ + +/* + * create a new xinofile at the same place/path as @base_file. + */ +struct file *au_xino_create2(struct file *base_file, struct file *copy_src) +{ + struct file *file; + struct dentry *base, *parent; + struct inode *dir, *delegated; + struct qstr *name; + struct path path; + int err; + + base = base_file->f_path.dentry; + parent = base->d_parent; /* dir inode is locked */ + dir = d_inode(parent); + IMustLock(dir); + + file = ERR_PTR(-EINVAL); + name = &base->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", + base, PTR_ERR(path.dentry)); + goto out; + } + + /* no need to mnt_want_write() since we call dentry_open() later */ + err = vfs_create(dir, path.dentry, S_IRUGO | S_IWUGO, NULL); + if (unlikely(err)) { + file = ERR_PTR(err); + pr_err("%pd create err %d\n", base, err); + goto out_dput; + } + + path.mnt = base_file->f_path.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", base, PTR_ERR(file)); + goto out_dput; + } + + delegated = NULL; + err = vfsub_unlink(dir, &file->f_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)) { + pr_err("%pd unlink err %d\n", base, 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", base, err); + goto out_fput; + } + } + goto out_dput; /* success */ + +out_fput: + fput(file); + file = ERR_PTR(err); +out_dput: + dput(path.dentry); +out: + return file; +} + +struct au_xino_lock_dir { + struct au_hinode *hdir; + struct dentry *parent; + struct mutex *mtx; +}; + +static void au_xino_lock_dir(struct super_block *sb, struct file *xino, + struct au_xino_lock_dir *ldir) +{ + aufs_bindex_t brid, bindex; + + ldir->hdir = NULL; + bindex = -1; + brid = au_xino_brid(sb); + if (brid >= 0) + bindex = au_br_index(sb, brid); + if (bindex >= 0) { + ldir->hdir = au_hi(d_inode(sb->s_root), bindex); + au_hn_imtx_lock_nested(ldir->hdir, AuLsc_I_PARENT); + } else { + ldir->parent = dget_parent(xino->f_path.dentry); + ldir->mtx = &d_inode(ldir->parent)->i_mutex; + mutex_lock_nested(ldir->mtx, AuLsc_I_PARENT); + } +} + +static void au_xino_unlock_dir(struct au_xino_lock_dir *ldir) +{ + if (ldir->hdir) + au_hn_imtx_unlock(ldir->hdir); + else { + mutex_unlock(ldir->mtx); + dput(ldir->parent); + } +} + +/* ---------------------------------------------------------------------- */ + +/* trucate xino files asynchronously */ + +int au_xino_trunc(struct super_block *sb, aufs_bindex_t bindex) +{ + int err; + unsigned long jiffy; + blkcnt_t blocks; + aufs_bindex_t bi, bend; + struct kstatfs *st; + struct au_branch *br; + struct file *new_xino, *file; + struct super_block *h_sb; + struct au_xino_lock_dir ldir; + + err = -ENOMEM; + st = kzalloc(sizeof(*st), GFP_NOFS); + if (unlikely(!st)) + goto out; + + err = -EINVAL; + bend = au_sbend(sb); + if (unlikely(bindex < 0 || bend < bindex)) + goto out_st; + br = au_sbr(sb, bindex); + file = br->br_xino.xi_file; + if (!file) + goto out_st; + + err = vfs_statfs(&file->f_path, st); + if (unlikely(err)) + AuErr1("statfs err %d, ignored\n", err); + jiffy = jiffies; + blocks = file_inode(file)->i_blocks; + pr_info("begin truncating xino(b%d), ib%llu, %llu/%llu free blks\n", + bindex, (u64)blocks, st->f_bfree, st->f_blocks); + + au_xino_lock_dir(sb, file, &ldir); + /* mnt_want_write() is unnecessary here */ + new_xino = au_xino_create2(file, file); + au_xino_unlock_dir(&ldir); + err = PTR_ERR(new_xino); + if (IS_ERR(new_xino)) { + pr_err("err %d, ignored\n", err); + goto out_st; + } + err = 0; + fput(file); + br->br_xino.xi_file = new_xino; + + h_sb = au_br_sb(br); + for (bi = 0; bi <= bend; bi++) { + if (unlikely(bi == bindex)) + continue; + br = au_sbr(sb, bi); + if (au_br_sb(br) != h_sb) + continue; + + fput(br->br_xino.xi_file); + br->br_xino.xi_file = new_xino; + get_file(new_xino); + } + + err = vfs_statfs(&new_xino->f_path, st); + if (!err) { + pr_info("end truncating xino(b%d), ib%llu, %llu/%llu free blks\n", + bindex, (u64)file_inode(new_xino)->i_blocks, + st->f_bfree, st->f_blocks); + if (file_inode(new_xino)->i_blocks < blocks) + au_sbi(sb)->si_xino_jiffy = jiffy; + } else + AuErr1("statfs err %d, ignored\n", err); + +out_st: + kfree(st); +out: + return err; +} + +struct xino_do_trunc_args { + struct super_block *sb; + struct au_branch *br; +}; + +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; + aufs_bindex_t bindex; + + err = 0; + sb = args->sb; + dir = d_inode(sb->s_root); + br = args->br; + + si_noflush_write_lock(sb); + ii_read_lock_parent(dir); + bindex = au_br_index(sb, br->br_id); + err = au_xino_trunc(sb, bindex); + ii_read_unlock(dir); + if (unlikely(err)) + pr_warn("err b%d, (%d)\n", bindex, err); + atomic_dec(&br->br_xino_running); + atomic_dec(&br->br_count); + si_write_unlock(sb); + au_nwt_done(&au_sbi(sb)->si_nowait); + kfree(args); +} + +static int xino_trunc_test(struct super_block *sb, struct au_branch *br) +{ + int err; + struct kstatfs st; + struct au_sbinfo *sbinfo; + + /* 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 0; + + /* truncation border */ + err = vfs_statfs(&br->br_xino.xi_file->f_path, &st); + if (unlikely(err)) { + AuErr1("statfs err %d, ignored\n", err); + return 0; + } + if (div64_u64(st.f_bfree * 100, st.f_blocks) >= AUFS_XINO_DEF_TRUNC) + return 0; + + return 1; +} + +static void xino_try_trunc(struct super_block *sb, struct au_branch *br) +{ + struct xino_do_trunc_args *args; + int wkq_err; + + if (!xino_trunc_test(sb, br)) + return; + + if (atomic_inc_return(&br->br_xino_running) > 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_args; + } + + atomic_inc(&br->br_count); + args->sb = sb; + args->br = br; + wkq_err = au_wkq_nowait(xino_do_trunc, args, sb, /*flags*/0); + if (!wkq_err) + return; /* success */ + + pr_err("wkq %d\n", wkq_err); + atomic_dec(&br->br_count); + +out_args: + kfree(args); +out: + atomic_dec(&br->br_xino_running); +} + +/* ---------------------------------------------------------------------- */ + +static int au_xino_do_write(vfs_writef_t write, struct file *file, + ino_t h_ino, ino_t ino) +{ + loff_t pos; + ssize_t sz; + + pos = h_ino; + if (unlikely(au_loff_max / sizeof(ino) - 1 < pos)) { + AuIOErr1("too large hi%lu\n", (unsigned long)h_ino); + return -EFBIG; + } + pos *= sizeof(ino); + sz = xino_fwrite(write, file, &ino, sizeof(ino), &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_branch *br; + + BUILD_BUG_ON(sizeof(long long) != sizeof(au_loff_max) + || ((loff_t)-1) > 0); + SiMustAnyLock(sb); + + mnt_flags = au_mntflags(sb); + if (!au_opt_test(mnt_flags, XINO)) + return 0; + + br = au_sbr(sb, bindex); + err = au_xino_do_write(au_sbi(sb)->si_xwrite, br->br_xino.xi_file, + h_ino, ino); + if (!err) { + 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 */ + } + + AuIOErr("write failed (%d)\n", err); + return -EIO; +} + +/* ---------------------------------------------------------------------- */ + +/* aufs 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); +} + +/* 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, bend, 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; + + 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); + if (!iinfo) + return; + + bindex = iinfo->ii_bstart; + if (bindex < 0) + return; + + xwrite = au_sbi(sb)->si_xwrite; + try_trunc = !!au_opt_test(mnt_flags, TRUNC_XINO); + hi = iinfo->ii_hinode + bindex; + bend = iinfo->ii_bend; + for (; bindex <= bend; 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); + err = au_xino_do_write(xwrite, br->br_xino.xi_file, + h_inode->i_ino, /*ino*/0); + if (!err && try_trunc + && au_test_fs_trunc_xino(au_br_sb(br))) + xino_try_trunc(sb, br); + } +} + +/* 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; +} + +/* + * read @ino from xinofile for the specified branch{@sb, @bindex} + * at the position of @h_ino. + * if @ino does not exist and @do_new is true, get new one. + */ +int au_xino_read(struct super_block *sb, aufs_bindex_t bindex, ino_t h_ino, + ino_t *ino) +{ + int err; + ssize_t sz; + loff_t pos; + struct file *file; + struct au_sbinfo *sbinfo; + + *ino = 0; + if (!au_opt_test(au_mntflags(sb), XINO)) + return 0; /* no xino */ + + err = 0; + sbinfo = au_sbi(sb); + pos = h_ino; + if (unlikely(au_loff_max / sizeof(*ino) - 1 < pos)) { + AuIOErr1("too large hi%lu\n", (unsigned long)h_ino); + return -EFBIG; + } + pos *= sizeof(*ino); + + file = au_sbr(sb, bindex)->br_xino.xi_file; + if (vfsub_f_size_read(file) < pos + sizeof(*ino)) + return 0; /* no ino */ + + sz = xino_fread(sbinfo->si_xread, file, ino, sizeof(*ino), &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; +} + +/* ---------------------------------------------------------------------- */ + +/* create and set a new xino file */ + +struct file *au_xino_create(struct super_block *sb, char *fname, int silent) +{ + struct file *file; + struct dentry *h_parent, *d; + struct inode *h_dir, *inode; + int err; + + /* + * 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. + */ + file = vfsub_filp_open(fname, O_RDWR | O_CREAT | O_EXCL | O_LARGEFILE + /* | __FMODE_NONOTIFY */, + S_IRUGO | S_IWUGO); + if (IS_ERR(file)) { + if (!silent) + pr_err("open %s(%ld)\n", fname, PTR_ERR(file)); + return file; + } + + /* keep file count */ + err = 0; + inode = file_inode(file); + h_parent = dget_parent(file->f_path.dentry); + h_dir = d_inode(h_parent); + mutex_lock_nested(&h_dir->i_mutex, AuLsc_I_PARENT); + /* mnt_want_write() is unnecessary here */ + /* no delegation since it is just created */ + if (inode->i_nlink) + err = vfsub_unlink(h_dir, &file->f_path, /*delegated*/NULL, + /*force*/0); + mutex_unlock(&h_dir->i_mutex); + dput(h_parent); + if (unlikely(err)) { + if (!silent) + pr_err("unlink %s(%d)\n", fname, err); + goto out; + } + + err = -EINVAL; + d = file->f_path.dentry; + if (unlikely(sb == d->d_sb)) { + if (!silent) + pr_err("%s must be outside\n", fname); + goto out; + } + if (unlikely(au_test_fs_bad_xino(d->d_sb))) { + if (!silent) + pr_err("xino doesn't support %s(%s)\n", + fname, au_sbtype(d->d_sb)); + goto out; + } + return file; /* success */ + +out: + fput(file); + file = ERR_PTR(err); + return file; +} + +/* + * find another branch who is on the same filesystem of the specified + * branch{@btgt}. search until @bend. + */ +static int is_sb_shared(struct super_block *sb, aufs_bindex_t btgt, + aufs_bindex_t bend) +{ + aufs_bindex_t bindex; + struct super_block *tgt_sb = au_sbr_sb(sb, btgt); + + for (bindex = 0; bindex < btgt; bindex++) + if (unlikely(tgt_sb == au_sbr_sb(sb, bindex))) + return bindex; + for (bindex++; bindex <= bend; bindex++) + if (unlikely(tgt_sb == au_sbr_sb(sb, bindex))) + return bindex; + return -1; +} + +/* ---------------------------------------------------------------------- */ + +/* + * 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 @do_test is true. + */ +int au_xino_br(struct super_block *sb, struct au_branch *br, ino_t h_ino, + struct file *base_file, int do_test) +{ + int err; + ino_t ino; + aufs_bindex_t bend, bindex; + struct au_branch *shared_br, *b; + struct file *file; + struct super_block *tgt_sb; + + shared_br = NULL; + bend = au_sbend(sb); + if (do_test) { + tgt_sb = au_br_sb(br); + for (bindex = 0; bindex <= bend; bindex++) { + b = au_sbr(sb, bindex); + if (tgt_sb == au_br_sb(b)) { + shared_br = b; + break; + } + } + } + + if (!shared_br || !shared_br->br_xino.xi_file) { + struct au_xino_lock_dir ldir; + + au_xino_lock_dir(sb, base_file, &ldir); + /* mnt_want_write() is unnecessary here */ + file = au_xino_create2(base_file, NULL); + au_xino_unlock_dir(&ldir); + err = PTR_ERR(file); + if (IS_ERR(file)) + goto out; + br->br_xino.xi_file = file; + } else { + br->br_xino.xi_file = shared_br->br_xino.xi_file; + get_file(br->br_xino.xi_file); + } + + ino = AUFS_ROOT_INO; + err = au_xino_do_write(au_sbi(sb)->si_xwrite, br->br_xino.xi_file, + h_ino, ino); + if (unlikely(err)) { + fput(br->br_xino.xi_file); + br->br_xino.xi_file = NULL; + } + +out: + return err; +} + +/* ---------------------------------------------------------------------- */ + +/* trucate 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; + aufs_bindex_t bindex, bend; + void *page; + + err = -ENOMEM; + page = (void *)__get_free_page(GFP_NOFS); + if (unlikely(!page)) + goto out; + + err = 0; + bend = au_sbend(sb); + for (bindex = 0; !err && bindex <= bend; bindex++) + if (!bindex || is_sb_shared(sb, bindex, bindex - 1) < 0) + err = do_xib_restore + (sb, au_sbr(sb, bindex)->br_xino.xi_file, page); + else + AuDbg("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_xino_lock_dir ldir; + 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; + + au_xino_lock_dir(sb, file, &ldir); + /* mnt_want_write() is unnecessary here */ + file = au_xino_create2(sbinfo->si_xib, NULL); + au_xino_unlock_dir(&ldir); + 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; +} + +/* ---------------------------------------------------------------------- */ + +/* + * 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); + sbinfo->si_xread = NULL; + sbinfo->si_xwrite = NULL; + if (sbinfo->si_xib) + fput(sbinfo->si_xib); + sbinfo->si_xib = NULL; + free_page((unsigned long)sbinfo->si_xib_buf); + sbinfo->si_xib_buf = NULL; +} + +static int au_xino_set_xib(struct super_block *sb, struct file *base) +{ + int err; + loff_t pos; + struct au_sbinfo *sbinfo; + struct file *file; + + SiMustWriteLock(sb); + + sbinfo = au_sbi(sb); + file = au_xino_create2(base, 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); + + 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: + 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; + sbinfo->si_xread = NULL; + sbinfo->si_xwrite = NULL; +out: + return err; +} + +/* xino for each branch */ +static void xino_clear_br(struct super_block *sb) +{ + aufs_bindex_t bindex, bend; + struct au_branch *br; + + bend = au_sbend(sb); + for (bindex = 0; bindex <= bend; bindex++) { + br = au_sbr(sb, bindex); + if (!br || !br->br_xino.xi_file) + continue; + + fput(br->br_xino.xi_file); + br->br_xino.xi_file = NULL; + } +} + +static int au_xino_set_br(struct super_block *sb, struct file *base) +{ + int err; + ino_t ino; + aufs_bindex_t bindex, bend, bshared; + struct { + struct file *old, *new; + } *fpair, *p; + struct au_branch *br; + struct inode *inode; + vfs_writef_t writef; + + SiMustWriteLock(sb); + + err = -ENOMEM; + bend = au_sbend(sb); + fpair = kcalloc(bend + 1, sizeof(*fpair), GFP_NOFS); + if (unlikely(!fpair)) + goto out; + + inode = d_inode(sb->s_root); + ino = AUFS_ROOT_INO; + writef = au_sbi(sb)->si_xwrite; + for (bindex = 0, p = fpair; bindex <= bend; bindex++, p++) { + br = au_sbr(sb, bindex); + bshared = is_sb_shared(sb, bindex, bindex - 1); + if (bshared >= 0) { + /* shared xino */ + *p = fpair[bshared]; + get_file(p->new); + } + + if (!p->new) { + /* new xino */ + p->old = br->br_xino.xi_file; + p->new = au_xino_create2(base, br->br_xino.xi_file); + err = PTR_ERR(p->new); + if (IS_ERR(p->new)) { + p->new = NULL; + goto out_pair; + } + } + + err = au_xino_do_write(writef, p->new, + au_h_iptr(inode, bindex)->i_ino, ino); + if (unlikely(err)) + goto out_pair; + } + + for (bindex = 0, p = fpair; bindex <= bend; bindex++, p++) { + br = au_sbr(sb, bindex); + if (br->br_xino.xi_file) + fput(br->br_xino.xi_file); + get_file(p->new); + br->br_xino.xi_file = p->new; + } + +out_pair: + for (bindex = 0, p = fpair; bindex <= bend; bindex++, p++) + if (p->new) + fput(p->new); + else + break; + kfree(fpair); +out: + 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); + 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 *xino, int remount) +{ + int err, skip; + struct dentry *parent, *cur_parent; + struct qstr *dname, *cur_name; + struct file *cur_xino; + struct inode *dir; + struct au_sbinfo *sbinfo; + + SiMustWriteLock(sb); + + err = 0; + sbinfo = au_sbi(sb); + parent = dget_parent(xino->file->f_path.dentry); + if (remount) { + skip = 0; + dname = &xino->file->f_path.dentry->d_name; + cur_xino = sbinfo->si_xib; + if (cur_xino) { + cur_parent = dget_parent(cur_xino->f_path.dentry); + cur_name = &cur_xino->f_path.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); + dir = d_inode(parent); + mutex_lock_nested(&dir->i_mutex, AuLsc_I_PARENT); + /* mnt_want_write() is unnecessary here */ + err = au_xino_set_xib(sb, xino->file); + if (!err) + err = au_xigen_set(sb, xino->file); + if (!err) + err = au_xino_set_br(sb, xino->file); + mutex_unlock(&dir->i_mutex); + if (!err) + goto out; /* success */ + + /* reset all */ + AuIOErr("failed creating xino(%d).\n", err); + au_xigen_clr(sb); + xino_clear_xib(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 bend, bindex, bwr; + + br = NULL; + bend = au_sbend(sb); + bwr = -1; + for (bindex = 0; bindex <= bend; 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); + if (!IS_ERR(file)) + au_xino_brid_set(sb, br->br_id); + } + free_page((unsigned long)page); + } else { + file = au_xino_create(sb, AUFS_XINO_DEFPATH, /*silent*/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); + } + if (!IS_ERR(file)) + au_xino_brid_set(sb, -1); + } + +out: + return file; +} + +/* ---------------------------------------------------------------------- */ + +int au_xino_path(struct seq_file *seq, struct file *file) +{ + int err; + + err = au_seq_path(seq, &file->f_path); + if (unlikely(err < 0)) + goto out; + + err = 0; +#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-raspi2-4.2.0.orig/fs/binfmt_elf.c +++ linux-raspi2-4.2.0/fs/binfmt_elf.c @@ -759,16 +759,16 @@ */ would_dump(bprm, interpreter); - retval = kernel_read(interpreter, 0, bprm->buf, - BINPRM_BUF_SIZE); - if (retval != BINPRM_BUF_SIZE) { + /* Get the exec headers */ + retval = kernel_read(interpreter, 0, + (void *)&loc->interp_elf_ex, + sizeof(loc->interp_elf_ex)); + if (retval != sizeof(loc->interp_elf_ex)) { if (retval >= 0) retval = -EIO; goto out_free_dentry; } - /* Get the exec headers */ - loc->interp_elf_ex = *((struct elfhdr *)bprm->buf); break; } elf_ppnt++; --- linux-raspi2-4.2.0.orig/fs/block_dev.c +++ linux-raspi2-4.2.0/fs/block_dev.c @@ -1241,6 +1241,13 @@ goto out_clear; } bd_set_size(bdev, (loff_t)bdev->bd_part->nr_sects << 9); + /* + * If the partition is not aligned on a page + * boundary, we can't do dax I/O to it. + */ + if ((bdev->bd_part->start_sect % (PAGE_SIZE / 512)) || + (bdev->bd_part->nr_sects % (PAGE_SIZE / 512))) + bdev->bd_inode->i_flags &= ~S_DAX; } } else { if (bdev->bd_contains == bdev) { --- linux-raspi2-4.2.0.orig/fs/btrfs/backref.c +++ linux-raspi2-4.2.0/fs/btrfs/backref.c @@ -1809,7 +1809,6 @@ int found = 0; struct extent_buffer *eb; struct btrfs_inode_extref *extref; - struct extent_buffer *leaf; u32 item_size; u32 cur_offset; unsigned long ptr; @@ -1837,9 +1836,8 @@ btrfs_set_lock_blocking_rw(eb, BTRFS_READ_LOCK); btrfs_release_path(path); - leaf = path->nodes[0]; - item_size = btrfs_item_size_nr(leaf, slot); - ptr = btrfs_item_ptr_offset(leaf, slot); + item_size = btrfs_item_size_nr(eb, slot); + ptr = btrfs_item_ptr_offset(eb, slot); cur_offset = 0; while (cur_offset < item_size) { @@ -1853,7 +1851,7 @@ if (ret) break; - cur_offset += btrfs_inode_extref_name_len(leaf, extref); + cur_offset += btrfs_inode_extref_name_len(eb, extref); cur_offset += sizeof(*extref); } btrfs_tree_read_unlock_blocking(eb); --- linux-raspi2-4.2.0.orig/fs/btrfs/ctree.h +++ linux-raspi2-4.2.0/fs/btrfs/ctree.h @@ -3404,7 +3404,7 @@ int btrfs_free_extent(struct btrfs_trans_handle *trans, struct btrfs_root *root, u64 bytenr, u64 num_bytes, u64 parent, u64 root_objectid, - u64 owner, u64 offset, int no_quota); + u64 owner, u64 offset); int btrfs_free_reserved_extent(struct btrfs_root *root, u64 start, u64 len, int delalloc); @@ -3417,7 +3417,7 @@ int btrfs_inc_extent_ref(struct btrfs_trans_handle *trans, struct btrfs_root *root, u64 bytenr, u64 num_bytes, u64 parent, - u64 root_objectid, u64 owner, u64 offset, int no_quota); + u64 root_objectid, u64 owner, u64 offset); int btrfs_start_dirty_block_groups(struct btrfs_trans_handle *trans, struct btrfs_root *root); --- linux-raspi2-4.2.0.orig/fs/btrfs/delayed-ref.c +++ linux-raspi2-4.2.0/fs/btrfs/delayed-ref.c @@ -197,6 +197,119 @@ trans->delayed_ref_updates--; } +static bool merge_ref(struct btrfs_trans_handle *trans, + struct btrfs_delayed_ref_root *delayed_refs, + struct btrfs_delayed_ref_head *head, + struct btrfs_delayed_ref_node *ref, + u64 seq) +{ + struct btrfs_delayed_ref_node *next; + bool done = false; + + next = list_first_entry(&head->ref_list, struct btrfs_delayed_ref_node, + list); + while (!done && &next->list != &head->ref_list) { + int mod; + struct btrfs_delayed_ref_node *next2; + + next2 = list_next_entry(next, list); + + if (next == ref) + goto next; + + if (seq && next->seq >= seq) + goto next; + + if (next->type != ref->type) + goto next; + + if ((ref->type == BTRFS_TREE_BLOCK_REF_KEY || + ref->type == BTRFS_SHARED_BLOCK_REF_KEY) && + comp_tree_refs(btrfs_delayed_node_to_tree_ref(ref), + btrfs_delayed_node_to_tree_ref(next), + ref->type)) + goto next; + if ((ref->type == BTRFS_EXTENT_DATA_REF_KEY || + ref->type == BTRFS_SHARED_DATA_REF_KEY) && + comp_data_refs(btrfs_delayed_node_to_data_ref(ref), + btrfs_delayed_node_to_data_ref(next))) + goto next; + + if (ref->action == next->action) { + mod = next->ref_mod; + } else { + if (ref->ref_mod < next->ref_mod) { + swap(ref, next); + done = true; + } + mod = -next->ref_mod; + } + + drop_delayed_ref(trans, delayed_refs, head, next); + ref->ref_mod += mod; + if (ref->ref_mod == 0) { + drop_delayed_ref(trans, delayed_refs, head, ref); + done = true; + } else { + /* + * Can't have multiples of the same ref on a tree block. + */ + WARN_ON(ref->type == BTRFS_TREE_BLOCK_REF_KEY || + ref->type == BTRFS_SHARED_BLOCK_REF_KEY); + } +next: + next = next2; + } + + return done; +} + +void btrfs_merge_delayed_refs(struct btrfs_trans_handle *trans, + struct btrfs_fs_info *fs_info, + struct btrfs_delayed_ref_root *delayed_refs, + struct btrfs_delayed_ref_head *head) +{ + struct btrfs_delayed_ref_node *ref; + u64 seq = 0; + + assert_spin_locked(&head->lock); + + if (list_empty(&head->ref_list)) + return; + + /* We don't have too many refs to merge for data. */ + if (head->is_data) + return; + + spin_lock(&fs_info->tree_mod_seq_lock); + if (!list_empty(&fs_info->tree_mod_seq_list)) { + struct seq_list *elem; + + elem = list_first_entry(&fs_info->tree_mod_seq_list, + struct seq_list, list); + seq = elem->seq; + } + spin_unlock(&fs_info->tree_mod_seq_lock); + + ref = list_first_entry(&head->ref_list, struct btrfs_delayed_ref_node, + list); + while (&ref->list != &head->ref_list) { + if (seq && ref->seq >= seq) + goto next; + + if (merge_ref(trans, delayed_refs, head, ref, seq)) { + if (list_empty(&head->ref_list)) + break; + ref = list_first_entry(&head->ref_list, + struct btrfs_delayed_ref_node, + list); + continue; + } +next: + ref = list_next_entry(ref, list); + } +} + int btrfs_check_delayed_seq(struct btrfs_fs_info *fs_info, struct btrfs_delayed_ref_root *delayed_refs, u64 seq) @@ -292,8 +405,7 @@ exist = list_entry(href->ref_list.prev, struct btrfs_delayed_ref_node, list); /* No need to compare bytenr nor is_head */ - if (exist->type != ref->type || exist->no_quota != ref->no_quota || - exist->seq != ref->seq) + if (exist->type != ref->type || exist->seq != ref->seq) goto add_tail; if ((exist->type == BTRFS_TREE_BLOCK_REF_KEY || @@ -524,7 +636,7 @@ struct btrfs_delayed_ref_head *head_ref, struct btrfs_delayed_ref_node *ref, u64 bytenr, u64 num_bytes, u64 parent, u64 ref_root, int level, - int action, int no_quota) + int action) { struct btrfs_delayed_tree_ref *full_ref; struct btrfs_delayed_ref_root *delayed_refs; @@ -546,7 +658,6 @@ ref->action = action; ref->is_head = 0; ref->in_tree = 1; - ref->no_quota = no_quota; ref->seq = seq; full_ref = btrfs_delayed_node_to_tree_ref(ref); @@ -579,7 +690,7 @@ struct btrfs_delayed_ref_head *head_ref, struct btrfs_delayed_ref_node *ref, u64 bytenr, u64 num_bytes, u64 parent, u64 ref_root, u64 owner, - u64 offset, int action, int no_quota) + u64 offset, int action) { struct btrfs_delayed_data_ref *full_ref; struct btrfs_delayed_ref_root *delayed_refs; @@ -602,7 +713,6 @@ ref->action = action; ref->is_head = 0; ref->in_tree = 1; - ref->no_quota = no_quota; ref->seq = seq; full_ref = btrfs_delayed_node_to_data_ref(ref); @@ -633,17 +743,13 @@ struct btrfs_trans_handle *trans, u64 bytenr, u64 num_bytes, u64 parent, u64 ref_root, int level, int action, - struct btrfs_delayed_extent_op *extent_op, - int no_quota) + struct btrfs_delayed_extent_op *extent_op) { struct btrfs_delayed_tree_ref *ref; struct btrfs_delayed_ref_head *head_ref; struct btrfs_delayed_ref_root *delayed_refs; struct btrfs_qgroup_extent_record *record = NULL; - if (!is_fstree(ref_root) || !fs_info->quota_enabled) - no_quota = 0; - BUG_ON(extent_op && extent_op->is_data); ref = kmem_cache_alloc(btrfs_delayed_tree_ref_cachep, GFP_NOFS); if (!ref) @@ -672,8 +778,7 @@ bytenr, num_bytes, action, 0); add_delayed_tree_ref(fs_info, trans, head_ref, &ref->node, bytenr, - num_bytes, parent, ref_root, level, action, - no_quota); + num_bytes, parent, ref_root, level, action); spin_unlock(&delayed_refs->lock); return 0; @@ -694,17 +799,13 @@ u64 bytenr, u64 num_bytes, u64 parent, u64 ref_root, u64 owner, u64 offset, int action, - struct btrfs_delayed_extent_op *extent_op, - int no_quota) + struct btrfs_delayed_extent_op *extent_op) { struct btrfs_delayed_data_ref *ref; struct btrfs_delayed_ref_head *head_ref; struct btrfs_delayed_ref_root *delayed_refs; struct btrfs_qgroup_extent_record *record = NULL; - if (!is_fstree(ref_root) || !fs_info->quota_enabled) - no_quota = 0; - BUG_ON(extent_op && !extent_op->is_data); ref = kmem_cache_alloc(btrfs_delayed_data_ref_cachep, GFP_NOFS); if (!ref) @@ -740,7 +841,7 @@ add_delayed_data_ref(fs_info, trans, head_ref, &ref->node, bytenr, num_bytes, parent, ref_root, owner, offset, - action, no_quota); + action); spin_unlock(&delayed_refs->lock); return 0; --- linux-raspi2-4.2.0.orig/fs/btrfs/delayed-ref.h +++ linux-raspi2-4.2.0/fs/btrfs/delayed-ref.h @@ -68,7 +68,6 @@ unsigned int action:8; unsigned int type:8; - unsigned int no_quota:1; /* is this node still in the rbtree? */ unsigned int is_head:1; unsigned int in_tree:1; @@ -233,15 +232,13 @@ struct btrfs_trans_handle *trans, u64 bytenr, u64 num_bytes, u64 parent, u64 ref_root, int level, int action, - struct btrfs_delayed_extent_op *extent_op, - int no_quota); + struct btrfs_delayed_extent_op *extent_op); int btrfs_add_delayed_data_ref(struct btrfs_fs_info *fs_info, struct btrfs_trans_handle *trans, u64 bytenr, u64 num_bytes, u64 parent, u64 ref_root, u64 owner, u64 offset, int action, - struct btrfs_delayed_extent_op *extent_op, - int no_quota); + struct btrfs_delayed_extent_op *extent_op); int btrfs_add_delayed_extent_op(struct btrfs_fs_info *fs_info, struct btrfs_trans_handle *trans, u64 bytenr, u64 num_bytes, --- linux-raspi2-4.2.0.orig/fs/btrfs/extent-tree.c +++ linux-raspi2-4.2.0/fs/btrfs/extent-tree.c @@ -95,8 +95,7 @@ struct btrfs_root *root, u64 parent, u64 root_objectid, u64 flags, struct btrfs_disk_key *key, - int level, struct btrfs_key *ins, - int no_quota); + int level, struct btrfs_key *ins); static int do_chunk_alloc(struct btrfs_trans_handle *trans, struct btrfs_root *extent_root, u64 flags, int force); @@ -1941,8 +1940,7 @@ int btrfs_inc_extent_ref(struct btrfs_trans_handle *trans, struct btrfs_root *root, u64 bytenr, u64 num_bytes, u64 parent, - u64 root_objectid, u64 owner, u64 offset, - int no_quota) + u64 root_objectid, u64 owner, u64 offset) { int ret; struct btrfs_fs_info *fs_info = root->fs_info; @@ -1954,12 +1952,12 @@ ret = btrfs_add_delayed_tree_ref(fs_info, trans, bytenr, num_bytes, parent, root_objectid, (int)owner, - BTRFS_ADD_DELAYED_REF, NULL, no_quota); + BTRFS_ADD_DELAYED_REF, NULL); } else { ret = btrfs_add_delayed_data_ref(fs_info, trans, bytenr, num_bytes, parent, root_objectid, owner, offset, - BTRFS_ADD_DELAYED_REF, NULL, no_quota); + BTRFS_ADD_DELAYED_REF, NULL); } return ret; } @@ -1980,15 +1978,11 @@ u64 num_bytes = node->num_bytes; u64 refs; int ret; - int no_quota = node->no_quota; path = btrfs_alloc_path(); if (!path) return -ENOMEM; - if (!is_fstree(root_objectid) || !root->fs_info->quota_enabled) - no_quota = 1; - path->reada = 1; path->leave_spinning = 1; /* this will setup the path even if it fails to insert the back ref */ @@ -2223,8 +2217,7 @@ parent, ref_root, extent_op->flags_to_set, &extent_op->key, - ref->level, &ins, - node->no_quota); + ref->level, &ins); } else if (node->action == BTRFS_ADD_DELAYED_REF) { ret = __btrfs_inc_extent_ref(trans, root, node, parent, ref_root, @@ -2365,7 +2358,21 @@ } } + /* + * We need to try and merge add/drops of the same ref since we + * can run into issues with relocate dropping the implicit ref + * and then it being added back again before the drop can + * finish. If we merged anything we need to re-loop so we can + * get a good ref. + * Or we can get node references of the same type that weren't + * merged when created due to bumps in the tree mod seq, and + * we need to merge them to prevent adding an inline extent + * backref before dropping it (triggering a BUG_ON at + * insert_inline_extent_backref()). + */ spin_lock(&locked_ref->lock); + btrfs_merge_delayed_refs(trans, fs_info, delayed_refs, + locked_ref); /* * locked_ref is the head node, so we have to go one @@ -3038,7 +3045,7 @@ int level; int ret = 0; int (*process_func)(struct btrfs_trans_handle *, struct btrfs_root *, - u64, u64, u64, u64, u64, u64, int); + u64, u64, u64, u64, u64, u64); if (btrfs_test_is_dummy_root(root)) @@ -3079,15 +3086,14 @@ key.offset -= btrfs_file_extent_offset(buf, fi); ret = process_func(trans, root, bytenr, num_bytes, parent, ref_root, key.objectid, - key.offset, 1); + key.offset); if (ret) goto fail; } else { bytenr = btrfs_node_blockptr(buf, i); num_bytes = root->nodesize; ret = process_func(trans, root, bytenr, num_bytes, - parent, ref_root, level - 1, 0, - 1); + parent, ref_root, level - 1, 0); if (ret) goto fail; } @@ -6137,7 +6143,6 @@ int extent_slot = 0; int found_extent = 0; int num_to_del = 1; - int no_quota = node->no_quota; u32 item_size; u64 refs; u64 bytenr = node->bytenr; @@ -6146,9 +6151,6 @@ bool skinny_metadata = btrfs_fs_incompat(root->fs_info, SKINNY_METADATA); - if (!info->quota_enabled || !is_fstree(root_objectid)) - no_quota = 1; - path = btrfs_alloc_path(); if (!path) return -ENOMEM; @@ -6474,7 +6476,7 @@ buf->start, buf->len, parent, root->root_key.objectid, btrfs_header_level(buf), - BTRFS_DROP_DELAYED_REF, NULL, 0); + BTRFS_DROP_DELAYED_REF, NULL); BUG_ON(ret); /* -ENOMEM */ } @@ -6522,7 +6524,7 @@ /* Can return -ENOMEM */ int btrfs_free_extent(struct btrfs_trans_handle *trans, struct btrfs_root *root, u64 bytenr, u64 num_bytes, u64 parent, u64 root_objectid, - u64 owner, u64 offset, int no_quota) + u64 owner, u64 offset) { int ret; struct btrfs_fs_info *fs_info = root->fs_info; @@ -6545,13 +6547,13 @@ ret = btrfs_add_delayed_tree_ref(fs_info, trans, bytenr, num_bytes, parent, root_objectid, (int)owner, - BTRFS_DROP_DELAYED_REF, NULL, no_quota); + BTRFS_DROP_DELAYED_REF, NULL); } else { ret = btrfs_add_delayed_data_ref(fs_info, trans, bytenr, num_bytes, parent, root_objectid, owner, offset, BTRFS_DROP_DELAYED_REF, - NULL, no_quota); + NULL); } return ret; } @@ -7333,8 +7335,7 @@ struct btrfs_root *root, u64 parent, u64 root_objectid, u64 flags, struct btrfs_disk_key *key, - int level, struct btrfs_key *ins, - int no_quota) + int level, struct btrfs_key *ins) { int ret; struct btrfs_fs_info *fs_info = root->fs_info; @@ -7424,7 +7425,7 @@ ret = btrfs_add_delayed_data_ref(root->fs_info, trans, ins->objectid, ins->offset, 0, root_objectid, owner, offset, - BTRFS_ADD_DELAYED_EXTENT, NULL, 0); + BTRFS_ADD_DELAYED_EXTENT, NULL); return ret; } @@ -7641,7 +7642,7 @@ ins.objectid, ins.offset, parent, root_objectid, level, BTRFS_ADD_DELAYED_EXTENT, - extent_op, 0); + extent_op); if (ret) goto out_free_delayed; } @@ -8189,7 +8190,7 @@ } } ret = btrfs_free_extent(trans, root, bytenr, blocksize, parent, - root->root_key.objectid, level - 1, 0, 0); + root->root_key.objectid, level - 1, 0); BUG_ON(ret); /* -ENOMEM */ } btrfs_tree_unlock(next); --- linux-raspi2-4.2.0.orig/fs/btrfs/extent_io.c +++ linux-raspi2-4.2.0/fs/btrfs/extent_io.c @@ -2798,7 +2798,8 @@ bio_end_io_t end_io_func, int mirror_num, unsigned long prev_bio_flags, - unsigned long bio_flags) + unsigned long bio_flags, + bool force_bio_submit) { int ret = 0; struct bio *bio; @@ -2816,6 +2817,7 @@ contig = bio_end_sector(bio) == sector; if (prev_bio_flags != bio_flags || !contig || + force_bio_submit || merge_bio(rw, tree, page, offset, page_size, bio, bio_flags) || bio_add_page(bio, page, page_size, offset) < page_size) { ret = submit_one_bio(rw, bio, mirror_num, @@ -2909,7 +2911,8 @@ get_extent_t *get_extent, struct extent_map **em_cached, struct bio **bio, int mirror_num, - unsigned long *bio_flags, int rw) + unsigned long *bio_flags, int rw, + u64 *prev_em_start) { struct inode *inode = page->mapping->host; u64 start = page_offset(page); @@ -2957,6 +2960,7 @@ } while (cur <= end) { unsigned long pnr = (last_byte >> PAGE_CACHE_SHIFT) + 1; + bool force_bio_submit = false; if (cur >= last_byte) { char *userpage; @@ -3007,6 +3011,49 @@ block_start = em->block_start; if (test_bit(EXTENT_FLAG_PREALLOC, &em->flags)) block_start = EXTENT_MAP_HOLE; + + /* + * If we have a file range that points to a compressed extent + * and it's followed by a consecutive file range that points to + * to the same compressed extent (possibly with a different + * offset and/or length, so it either points to the whole extent + * or only part of it), we must make sure we do not submit a + * single bio to populate the pages for the 2 ranges because + * this makes the compressed extent read zero out the pages + * belonging to the 2nd range. Imagine the following scenario: + * + * File layout + * [0 - 8K] [8K - 24K] + * | | + * | | + * points to extent X, points to extent X, + * offset 4K, length of 8K offset 0, length 16K + * + * [extent X, compressed length = 4K uncompressed length = 16K] + * + * If the bio to read the compressed extent covers both ranges, + * it will decompress extent X into the pages belonging to the + * first range and then it will stop, zeroing out the remaining + * pages that belong to the other range that points to extent X. + * So here we make sure we submit 2 bios, one for the first + * range and another one for the third range. Both will target + * the same physical extent from disk, but we can't currently + * make the compressed bio endio callback populate the pages + * for both ranges because each compressed bio is tightly + * coupled with a single extent map, and each range can have + * an extent map with a different offset value relative to the + * uncompressed data of our extent and different lengths. This + * is a corner case so we prioritize correctness over + * non-optimal behavior (submitting 2 bios for the same extent). + */ + if (test_bit(EXTENT_FLAG_COMPRESSED, &em->flags) && + prev_em_start && *prev_em_start != (u64)-1 && + *prev_em_start != em->orig_start) + force_bio_submit = true; + + if (prev_em_start) + *prev_em_start = em->orig_start; + free_extent_map(em); em = NULL; @@ -3056,7 +3103,8 @@ bdev, bio, pnr, end_bio_extent_readpage, mirror_num, *bio_flags, - this_bio_flag); + this_bio_flag, + force_bio_submit); if (!ret) { nr++; *bio_flags = this_bio_flag; @@ -3083,7 +3131,8 @@ get_extent_t *get_extent, struct extent_map **em_cached, struct bio **bio, int mirror_num, - unsigned long *bio_flags, int rw) + unsigned long *bio_flags, int rw, + u64 *prev_em_start) { struct inode *inode; struct btrfs_ordered_extent *ordered; @@ -3103,7 +3152,7 @@ for (index = 0; index < nr_pages; index++) { __do_readpage(tree, pages[index], get_extent, em_cached, bio, - mirror_num, bio_flags, rw); + mirror_num, bio_flags, rw, prev_em_start); page_cache_release(pages[index]); } } @@ -3113,7 +3162,8 @@ int nr_pages, get_extent_t *get_extent, struct extent_map **em_cached, struct bio **bio, int mirror_num, - unsigned long *bio_flags, int rw) + unsigned long *bio_flags, int rw, + u64 *prev_em_start) { u64 start = 0; u64 end = 0; @@ -3134,7 +3184,7 @@ index - first_index, start, end, get_extent, em_cached, bio, mirror_num, bio_flags, - rw); + rw, prev_em_start); start = page_start; end = start + PAGE_CACHE_SIZE - 1; first_index = index; @@ -3145,7 +3195,8 @@ __do_contiguous_readpages(tree, &pages[first_index], index - first_index, start, end, get_extent, em_cached, bio, - mirror_num, bio_flags, rw); + mirror_num, bio_flags, rw, + prev_em_start); } static int __extent_read_full_page(struct extent_io_tree *tree, @@ -3171,7 +3222,7 @@ } ret = __do_readpage(tree, page, get_extent, NULL, bio, mirror_num, - bio_flags, rw); + bio_flags, rw, NULL); return ret; } @@ -3197,7 +3248,7 @@ int ret; ret = __do_readpage(tree, page, get_extent, NULL, &bio, mirror_num, - &bio_flags, READ); + &bio_flags, READ, NULL); if (bio) ret = submit_one_bio(READ, bio, mirror_num, bio_flags); return ret; @@ -3450,7 +3501,7 @@ sector, iosize, pg_offset, bdev, &epd->bio, max_nr, end_bio_extent_writepage, - 0, 0, 0); + 0, 0, 0, false); if (ret) SetPageError(page); } @@ -3752,7 +3803,7 @@ ret = submit_extent_page(rw, tree, p, offset >> 9, PAGE_CACHE_SIZE, 0, bdev, &epd->bio, -1, end_bio_extent_buffer_writepage, - 0, epd->bio_flags, bio_flags); + 0, epd->bio_flags, bio_flags, false); epd->bio_flags = bio_flags; if (ret) { set_btree_ioerr(p); @@ -4156,6 +4207,7 @@ struct page *page; struct extent_map *em_cached = NULL; int nr = 0; + u64 prev_em_start = (u64)-1; for (page_idx = 0; page_idx < nr_pages; page_idx++) { page = list_entry(pages->prev, struct page, lru); @@ -4172,12 +4224,12 @@ if (nr < ARRAY_SIZE(pagepool)) continue; __extent_readpages(tree, pagepool, nr, get_extent, &em_cached, - &bio, 0, &bio_flags, READ); + &bio, 0, &bio_flags, READ, &prev_em_start); nr = 0; } if (nr) __extent_readpages(tree, pagepool, nr, get_extent, &em_cached, - &bio, 0, &bio_flags, READ); + &bio, 0, &bio_flags, READ, &prev_em_start); if (em_cached) free_extent_map(em_cached); --- linux-raspi2-4.2.0.orig/fs/btrfs/file.c +++ linux-raspi2-4.2.0/fs/btrfs/file.c @@ -756,8 +756,16 @@ } btrfs_item_key_to_cpu(leaf, &key, path->slots[0]); - if (key.objectid > ino || - key.type > BTRFS_EXTENT_DATA_KEY || key.offset >= end) + + if (key.objectid > ino) + break; + if (WARN_ON_ONCE(key.objectid < ino) || + key.type < BTRFS_EXTENT_DATA_KEY) { + ASSERT(del_nr == 0); + path->slots[0]++; + goto next_slot; + } + if (key.type > BTRFS_EXTENT_DATA_KEY || key.offset >= end) break; fi = btrfs_item_ptr(leaf, path->slots[0], @@ -776,8 +784,8 @@ btrfs_file_extent_inline_len(leaf, path->slots[0], fi); } else { - WARN_ON(1); - extent_end = search_start; + /* can't happen */ + BUG(); } /* @@ -847,7 +855,7 @@ disk_bytenr, num_bytes, 0, root->root_key.objectid, new_key.objectid, - start - extent_offset, 1); + start - extent_offset); BUG_ON(ret); /* -ENOMEM */ } key.offset = start; @@ -925,7 +933,7 @@ disk_bytenr, num_bytes, 0, root->root_key.objectid, key.objectid, key.offset - - extent_offset, 0); + extent_offset); BUG_ON(ret); /* -ENOMEM */ inode_sub_bytes(inode, extent_end - key.offset); @@ -1204,7 +1212,7 @@ ret = btrfs_inc_extent_ref(trans, root, bytenr, num_bytes, 0, root->root_key.objectid, - ino, orig_offset, 1); + ino, orig_offset); BUG_ON(ret); /* -ENOMEM */ if (split == start) { @@ -1231,7 +1239,7 @@ del_nr++; ret = btrfs_free_extent(trans, root, bytenr, num_bytes, 0, root->root_key.objectid, - ino, orig_offset, 0); + ino, orig_offset); BUG_ON(ret); /* -ENOMEM */ } other_start = 0; @@ -1248,7 +1256,7 @@ del_nr++; ret = btrfs_free_extent(trans, root, bytenr, num_bytes, 0, root->root_key.objectid, - ino, orig_offset, 0); + ino, orig_offset); BUG_ON(ret); /* -ENOMEM */ } if (del_nr == 0) { @@ -1868,8 +1876,13 @@ struct btrfs_log_ctx ctx; int ret = 0; bool full_sync = 0; - const u64 len = end - start + 1; + u64 len; + /* + * The range length can be represented by u64, we have to do the typecasts + * to avoid signed overflow if it's [0, LLONG_MAX] eg. from fsync() + */ + len = (u64)end - (u64)start + 1; trace_btrfs_sync_file(file, datasync); /* @@ -2057,8 +2070,7 @@ } } if (!full_sync) { - ret = btrfs_wait_ordered_range(inode, start, - end - start + 1); + ret = btrfs_wait_ordered_range(inode, start, len); if (ret) { btrfs_end_transaction(trans, root); goto out; --- linux-raspi2-4.2.0.orig/fs/btrfs/inode.c +++ linux-raspi2-4.2.0/fs/btrfs/inode.c @@ -1294,8 +1294,14 @@ num_bytes = 0; btrfs_item_key_to_cpu(leaf, &found_key, path->slots[0]); - if (found_key.objectid > ino || - found_key.type > BTRFS_EXTENT_DATA_KEY || + if (found_key.objectid > ino) + break; + if (WARN_ON_ONCE(found_key.objectid < ino) || + found_key.type < BTRFS_EXTENT_DATA_KEY) { + path->slots[0]++; + goto next_slot; + } + if (found_key.type > BTRFS_EXTENT_DATA_KEY || found_key.offset > end) break; @@ -2569,7 +2575,7 @@ ret = btrfs_inc_extent_ref(trans, root, new->bytenr, new->disk_len, 0, backref->root_id, backref->inum, - new->file_pos, 0); /* start - extent_offset */ + new->file_pos); /* start - extent_offset */ if (ret) { btrfs_abort_transaction(trans, root, ret); goto out_free_path; @@ -4184,6 +4190,47 @@ } +static int truncate_inline_extent(struct inode *inode, + struct btrfs_path *path, + struct btrfs_key *found_key, + const u64 item_end, + const u64 new_size) +{ + struct extent_buffer *leaf = path->nodes[0]; + int slot = path->slots[0]; + struct btrfs_file_extent_item *fi; + u32 size = (u32)(new_size - found_key->offset); + struct btrfs_root *root = BTRFS_I(inode)->root; + + fi = btrfs_item_ptr(leaf, slot, struct btrfs_file_extent_item); + + if (btrfs_file_extent_compression(leaf, fi) != BTRFS_COMPRESS_NONE) { + loff_t offset = new_size; + loff_t page_end = ALIGN(offset, PAGE_CACHE_SIZE); + + /* + * Zero out the remaining of the last page of our inline extent, + * instead of directly truncating our inline extent here - that + * would be much more complex (decompressing all the data, then + * compressing the truncated data, which might be bigger than + * the size of the inline extent, resize the extent, etc). + * We release the path because to get the page we might need to + * read the extent item from disk (data not in the page cache). + */ + btrfs_release_path(path); + return btrfs_truncate_page(inode, offset, page_end - offset, 0); + } + + btrfs_set_file_extent_ram_bytes(leaf, fi, size); + size = btrfs_file_extent_calc_inline_size(size); + btrfs_truncate_item(root, path, size, 1); + + if (test_bit(BTRFS_ROOT_REF_COWS, &root->state)) + inode_sub_bytes(inode, item_end + 1 - new_size); + + return 0; +} + /* * this can truncate away extent items, csum items and directory items. * It starts at a high offset and removes keys until it can't find @@ -4378,27 +4425,40 @@ * special encodings */ if (!del_item && - btrfs_file_extent_compression(leaf, fi) == 0 && btrfs_file_extent_encryption(leaf, fi) == 0 && btrfs_file_extent_other_encoding(leaf, fi) == 0) { - u32 size = new_size - found_key.offset; - - if (test_bit(BTRFS_ROOT_REF_COWS, &root->state)) - inode_sub_bytes(inode, item_end + 1 - - new_size); /* - * update the ram bytes to properly reflect - * the new size of our item + * Need to release path in order to truncate a + * compressed extent. So delete any accumulated + * extent items so far. */ - btrfs_set_file_extent_ram_bytes(leaf, fi, size); - size = - btrfs_file_extent_calc_inline_size(size); - btrfs_truncate_item(root, path, size, 1); + if (btrfs_file_extent_compression(leaf, fi) != + BTRFS_COMPRESS_NONE && pending_del_nr) { + err = btrfs_del_items(trans, root, path, + pending_del_slot, + pending_del_nr); + if (err) { + btrfs_abort_transaction(trans, + root, + err); + goto error; + } + pending_del_nr = 0; + } + + err = truncate_inline_extent(inode, path, + &found_key, + item_end, + new_size); + if (err) { + btrfs_abort_transaction(trans, + root, err); + goto error; + } } else if (test_bit(BTRFS_ROOT_REF_COWS, &root->state)) { - inode_sub_bytes(inode, item_end + 1 - - found_key.offset); + inode_sub_bytes(inode, item_end + 1 - new_size); } } delete: @@ -4428,7 +4488,7 @@ ret = btrfs_free_extent(trans, root, extent_start, extent_num_bytes, 0, btrfs_header_owner(leaf), - ino, extent_offset, 0); + ino, extent_offset); BUG_ON(ret); if (btrfs_should_throttle_delayed_refs(trans, root)) btrfs_async_run_delayed_refs(root, @@ -5051,7 +5111,8 @@ goto no_delete; } /* do we really want it for ->i_nlink > 0 and zero btrfs_root_refs? */ - btrfs_wait_ordered_range(inode, 0, (u64)-1); + if (!special_file(inode->i_mode)) + btrfs_wait_ordered_range(inode, 0, (u64)-1); btrfs_free_io_failure_record(inode, 0, (u64)-1); --- linux-raspi2-4.2.0.orig/fs/btrfs/ioctl.c +++ linux-raspi2-4.2.0/fs/btrfs/ioctl.c @@ -3195,41 +3195,6 @@ return ret; } -/* Helper to check and see if this root currently has a ref on the given disk - * bytenr. If it does then we need to update the quota for this root. This - * doesn't do anything if quotas aren't enabled. - */ -static int check_ref(struct btrfs_trans_handle *trans, struct btrfs_root *root, - u64 disko) -{ - struct seq_list tree_mod_seq_elem = SEQ_LIST_INIT(tree_mod_seq_elem); - struct ulist *roots; - struct ulist_iterator uiter; - struct ulist_node *root_node = NULL; - int ret; - - if (!root->fs_info->quota_enabled) - return 1; - - btrfs_get_tree_mod_seq(root->fs_info, &tree_mod_seq_elem); - ret = btrfs_find_all_roots(trans, root->fs_info, disko, - tree_mod_seq_elem.seq, &roots); - if (ret < 0) - goto out; - ret = 0; - ULIST_ITER_INIT(&uiter); - while ((root_node = ulist_next(roots, &uiter))) { - if (root_node->val == root->objectid) { - ret = 1; - break; - } - } - ulist_free(roots); -out: - btrfs_put_tree_mod_seq(root->fs_info, &tree_mod_seq_elem); - return ret; -} - static int clone_finish_inode_update(struct btrfs_trans_handle *trans, struct inode *inode, u64 endoff, @@ -3320,6 +3285,150 @@ &BTRFS_I(inode)->runtime_flags); } +/* + * Make sure we do not end up inserting an inline extent into a file that has + * already other (non-inline) extents. If a file has an inline extent it can + * not have any other extents and the (single) inline extent must start at the + * file offset 0. Failing to respect these rules will lead to file corruption, + * resulting in EIO errors on read/write operations, hitting BUG_ON's in mm, etc + * + * We can have extents that have been already written to disk or we can have + * dirty ranges still in delalloc, in which case the extent maps and items are + * created only when we run delalloc, and the delalloc ranges might fall outside + * the range we are currently locking in the inode's io tree. So we check the + * inode's i_size because of that (i_size updates are done while holding the + * i_mutex, which we are holding here). + * We also check to see if the inode has a size not greater than "datal" but has + * extents beyond it, due to an fallocate with FALLOC_FL_KEEP_SIZE (and we are + * protected against such concurrent fallocate calls by the i_mutex). + * + * If the file has no extents but a size greater than datal, do not allow the + * copy because we would need turn the inline extent into a non-inline one (even + * with NO_HOLES enabled). If we find our destination inode only has one inline + * extent, just overwrite it with the source inline extent if its size is less + * than the source extent's size, or we could copy the source inline extent's + * data into the destination inode's inline extent if the later is greater then + * the former. + */ +static int clone_copy_inline_extent(struct inode *src, + struct inode *dst, + struct btrfs_trans_handle *trans, + struct btrfs_path *path, + struct btrfs_key *new_key, + const u64 drop_start, + const u64 datal, + const u64 skip, + const u64 size, + char *inline_data) +{ + struct btrfs_root *root = BTRFS_I(dst)->root; + const u64 aligned_end = ALIGN(new_key->offset + datal, + root->sectorsize); + int ret; + struct btrfs_key key; + + if (new_key->offset > 0) + return -EOPNOTSUPP; + + key.objectid = btrfs_ino(dst); + key.type = BTRFS_EXTENT_DATA_KEY; + key.offset = 0; + ret = btrfs_search_slot(NULL, root, &key, path, 0, 0); + if (ret < 0) { + return ret; + } else if (ret > 0) { + if (path->slots[0] >= btrfs_header_nritems(path->nodes[0])) { + ret = btrfs_next_leaf(root, path); + if (ret < 0) + return ret; + else if (ret > 0) + goto copy_inline_extent; + } + btrfs_item_key_to_cpu(path->nodes[0], &key, path->slots[0]); + if (key.objectid == btrfs_ino(dst) && + key.type == BTRFS_EXTENT_DATA_KEY) { + ASSERT(key.offset > 0); + return -EOPNOTSUPP; + } + } else if (i_size_read(dst) <= datal) { + struct btrfs_file_extent_item *ei; + u64 ext_len; + + /* + * If the file size is <= datal, make sure there are no other + * extents following (can happen do to an fallocate call with + * the flag FALLOC_FL_KEEP_SIZE). + */ + ei = btrfs_item_ptr(path->nodes[0], path->slots[0], + struct btrfs_file_extent_item); + /* + * If it's an inline extent, it can not have other extents + * following it. + */ + if (btrfs_file_extent_type(path->nodes[0], ei) == + BTRFS_FILE_EXTENT_INLINE) + goto copy_inline_extent; + + ext_len = btrfs_file_extent_num_bytes(path->nodes[0], ei); + if (ext_len > aligned_end) + return -EOPNOTSUPP; + + ret = btrfs_next_item(root, path); + if (ret < 0) { + return ret; + } else if (ret == 0) { + btrfs_item_key_to_cpu(path->nodes[0], &key, + path->slots[0]); + if (key.objectid == btrfs_ino(dst) && + key.type == BTRFS_EXTENT_DATA_KEY) + return -EOPNOTSUPP; + } + } + +copy_inline_extent: + /* + * We have no extent items, or we have an extent at offset 0 which may + * or may not be inlined. All these cases are dealt the same way. + */ + if (i_size_read(dst) > datal) { + /* + * If the destination inode has an inline extent... + * This would require copying the data from the source inline + * extent into the beginning of the destination's inline extent. + * But this is really complex, both extents can be compressed + * or just one of them, which would require decompressing and + * re-compressing data (which could increase the new compressed + * size, not allowing the compressed data to fit anymore in an + * inline extent). + * So just don't support this case for now (it should be rare, + * we are not really saving space when cloning inline extents). + */ + return -EOPNOTSUPP; + } + + btrfs_release_path(path); + ret = btrfs_drop_extents(trans, root, dst, drop_start, aligned_end, 1); + if (ret) + return ret; + ret = btrfs_insert_empty_item(trans, root, path, new_key, size); + if (ret) + return ret; + + if (skip) { + const u32 start = btrfs_file_extent_calc_inline_size(0); + + memmove(inline_data + start, inline_data + start + skip, datal); + } + + write_extent_buffer(path->nodes[0], inline_data, + btrfs_item_ptr_offset(path->nodes[0], + path->slots[0]), + size); + inode_add_bytes(dst, datal); + + return 0; +} + /** * btrfs_clone() - clone a range from inode file to another * @@ -3344,9 +3453,7 @@ u32 nritems; int slot; int ret; - int no_quota; const u64 len = olen_aligned; - u64 last_disko = 0; u64 last_dest_end = destoff; ret = -ENOMEM; @@ -3392,7 +3499,6 @@ nritems = btrfs_header_nritems(path->nodes[0]); process_slot: - no_quota = 1; if (path->slots[0] >= nritems) { ret = btrfs_next_leaf(BTRFS_I(src)->root, path); if (ret < 0) @@ -3544,35 +3650,13 @@ btrfs_set_file_extent_num_bytes(leaf, extent, datal); - /* - * We need to look up the roots that point at - * this bytenr and see if the new root does. If - * it does not we need to make sure we update - * quotas appropriately. - */ - if (disko && root != BTRFS_I(src)->root && - disko != last_disko) { - no_quota = check_ref(trans, root, - disko); - if (no_quota < 0) { - btrfs_abort_transaction(trans, - root, - ret); - btrfs_end_transaction(trans, - root); - ret = no_quota; - goto out; - } - } - if (disko) { inode_add_bytes(inode, datal); ret = btrfs_inc_extent_ref(trans, root, disko, diskl, 0, root->root_key.objectid, btrfs_ino(inode), - new_key.offset - datao, - no_quota); + new_key.offset - datao); if (ret) { btrfs_abort_transaction(trans, root, @@ -3586,21 +3670,6 @@ } else if (type == BTRFS_FILE_EXTENT_INLINE) { u64 skip = 0; u64 trim = 0; - u64 aligned_end = 0; - - /* - * Don't copy an inline extent into an offset - * greater than zero. Having an inline extent - * at such an offset results in chaos as btrfs - * isn't prepared for such cases. Just skip - * this case for the same reasons as commented - * at btrfs_ioctl_clone(). - */ - if (last_dest_end > 0) { - ret = -EOPNOTSUPP; - btrfs_end_transaction(trans, root); - goto out; - } if (off > key.offset) { skip = off - key.offset; @@ -3618,42 +3687,22 @@ size -= skip + trim; datal -= skip + trim; - aligned_end = ALIGN(new_key.offset + datal, - root->sectorsize); - ret = btrfs_drop_extents(trans, root, inode, - drop_start, - aligned_end, - 1); + ret = clone_copy_inline_extent(src, inode, + trans, path, + &new_key, + drop_start, + datal, + skip, size, buf); if (ret) { if (ret != -EOPNOTSUPP) btrfs_abort_transaction(trans, - root, ret); - btrfs_end_transaction(trans, root); - goto out; - } - - ret = btrfs_insert_empty_item(trans, root, path, - &new_key, size); - if (ret) { - btrfs_abort_transaction(trans, root, - ret); + root, + ret); btrfs_end_transaction(trans, root); goto out; } - - if (skip) { - u32 start = - btrfs_file_extent_calc_inline_size(0); - memmove(buf+start, buf+start+skip, - datal); - } - leaf = path->nodes[0]; slot = path->slots[0]; - write_extent_buffer(leaf, buf, - btrfs_item_ptr_offset(leaf, slot), - size); - inode_add_bytes(inode, datal); } /* If we have an implicit hole (NO_HOLES feature). */ @@ -4647,6 +4696,11 @@ bctl->flags |= BTRFS_BALANCE_TYPE_MASK; } + if (bctl->flags & ~(BTRFS_BALANCE_ARGS_MASK | BTRFS_BALANCE_TYPE_MASK)) { + ret = -EINVAL; + goto out_bctl; + } + do_balance: /* * Ownership of bctl and mutually_exclusive_operation_running @@ -4658,12 +4712,15 @@ need_unlock = false; ret = btrfs_balance(bctl, bargs); + bctl = NULL; if (arg) { if (copy_to_user(arg, bargs, sizeof(*bargs))) ret = -EFAULT; } +out_bctl: + kfree(bctl); out_bargs: kfree(bargs); out_unlock: --- linux-raspi2-4.2.0.orig/fs/btrfs/relocation.c +++ linux-raspi2-4.2.0/fs/btrfs/relocation.c @@ -1716,7 +1716,7 @@ ret = btrfs_inc_extent_ref(trans, root, new_bytenr, num_bytes, parent, btrfs_header_owner(leaf), - key.objectid, key.offset, 1); + key.objectid, key.offset); if (ret) { btrfs_abort_transaction(trans, root, ret); break; @@ -1724,7 +1724,7 @@ ret = btrfs_free_extent(trans, root, bytenr, num_bytes, parent, btrfs_header_owner(leaf), - key.objectid, key.offset, 1); + key.objectid, key.offset); if (ret) { btrfs_abort_transaction(trans, root, ret); break; @@ -1900,23 +1900,21 @@ ret = btrfs_inc_extent_ref(trans, src, old_bytenr, blocksize, path->nodes[level]->start, - src->root_key.objectid, level - 1, 0, - 1); + src->root_key.objectid, level - 1, 0); BUG_ON(ret); ret = btrfs_inc_extent_ref(trans, dest, new_bytenr, blocksize, 0, dest->root_key.objectid, level - 1, - 0, 1); + 0); BUG_ON(ret); ret = btrfs_free_extent(trans, src, new_bytenr, blocksize, path->nodes[level]->start, - src->root_key.objectid, level - 1, 0, - 1); + src->root_key.objectid, level - 1, 0); BUG_ON(ret); ret = btrfs_free_extent(trans, dest, old_bytenr, blocksize, 0, dest->root_key.objectid, level - 1, - 0, 1); + 0); BUG_ON(ret); btrfs_unlock_up_safe(path, 0); @@ -2746,7 +2744,7 @@ node->eb->start, blocksize, upper->eb->start, btrfs_header_owner(upper->eb), - node->level, 0, 1); + node->level, 0); BUG_ON(ret); ret = btrfs_drop_subtree(trans, root, eb, upper->eb); --- linux-raspi2-4.2.0.orig/fs/btrfs/send.c +++ linux-raspi2-4.2.0/fs/btrfs/send.c @@ -2351,8 +2351,14 @@ } TLV_PUT_STRING(sctx, BTRFS_SEND_A_PATH, name, namelen); - TLV_PUT_UUID(sctx, BTRFS_SEND_A_UUID, - sctx->send_root->root_item.uuid); + + if (!btrfs_is_empty_uuid(sctx->send_root->root_item.received_uuid)) + TLV_PUT_UUID(sctx, BTRFS_SEND_A_UUID, + sctx->send_root->root_item.received_uuid); + else + TLV_PUT_UUID(sctx, BTRFS_SEND_A_UUID, + sctx->send_root->root_item.uuid); + TLV_PUT_U64(sctx, BTRFS_SEND_A_CTRANSID, le64_to_cpu(sctx->send_root->root_item.ctransid)); if (parent_root) { --- linux-raspi2-4.2.0.orig/fs/btrfs/transaction.c +++ linux-raspi2-4.2.0/fs/btrfs/transaction.c @@ -1893,8 +1893,11 @@ spin_unlock(&root->fs_info->trans_lock); wait_for_commit(root, prev_trans); + ret = prev_trans->aborted; btrfs_put_transaction(prev_trans); + if (ret) + goto cleanup_transaction; } else { spin_unlock(&root->fs_info->trans_lock); } --- linux-raspi2-4.2.0.orig/fs/btrfs/tree-log.c +++ linux-raspi2-4.2.0/fs/btrfs/tree-log.c @@ -700,7 +700,7 @@ ret = btrfs_inc_extent_ref(trans, root, ins.objectid, ins.offset, 0, root->root_key.objectid, - key->objectid, offset, 0); + key->objectid, offset); if (ret) goto out; } else { --- linux-raspi2-4.2.0.orig/fs/btrfs/volumes.h +++ linux-raspi2-4.2.0/fs/btrfs/volumes.h @@ -376,6 +376,14 @@ #define BTRFS_BALANCE_ARGS_VRANGE (1ULL << 4) #define BTRFS_BALANCE_ARGS_LIMIT (1ULL << 5) +#define BTRFS_BALANCE_ARGS_MASK \ + (BTRFS_BALANCE_ARGS_PROFILES | \ + BTRFS_BALANCE_ARGS_USAGE | \ + BTRFS_BALANCE_ARGS_DEVID | \ + BTRFS_BALANCE_ARGS_DRANGE | \ + BTRFS_BALANCE_ARGS_VRANGE | \ + BTRFS_BALANCE_ARGS_LIMIT) + /* * Profile changing flags. When SOFT is set we won't relocate chunk if * it already has the target profile (even though it may be --- linux-raspi2-4.2.0.orig/fs/btrfs/xattr.c +++ linux-raspi2-4.2.0/fs/btrfs/xattr.c @@ -313,8 +313,10 @@ /* check to make sure this item is what we want */ if (found_key.objectid != key.objectid) break; - if (found_key.type != BTRFS_XATTR_ITEM_KEY) + if (found_key.type > BTRFS_XATTR_ITEM_KEY) break; + if (found_key.type < BTRFS_XATTR_ITEM_KEY) + goto next; di = btrfs_item_ptr(leaf, slot, struct btrfs_dir_item); if (verify_dir_item(root, leaf, di)) --- linux-raspi2-4.2.0.orig/fs/buffer.c +++ linux-raspi2-4.2.0/fs/buffer.c @@ -2473,7 +2473,7 @@ * Update file times before taking page lock. We may end up failing the * fault so this update may be superfluous but who really cares... */ - file_update_time(vma->vm_file); + vma_file_update_time(vma); ret = __block_page_mkwrite(vma, vmf, get_block); sb_end_pagefault(sb); --- linux-raspi2-4.2.0.orig/fs/cachefiles/rdwr.c +++ linux-raspi2-4.2.0/fs/cachefiles/rdwr.c @@ -905,6 +905,15 @@ cache = container_of(object->fscache.cache, struct cachefiles_cache, cache); + pos = (loff_t)page->index << PAGE_SHIFT; + + /* We mustn't write more data than we have, so we have to beware of a + * partial page at EOF. + */ + eof = object->fscache.store_limit_l; + if (pos >= eof) + goto error; + /* write the page to the backing filesystem and let it store it in its * own time */ path.mnt = cache->mnt; @@ -912,40 +921,38 @@ file = dentry_open(&path, O_RDWR | O_LARGEFILE, cache->cache_cred); if (IS_ERR(file)) { ret = PTR_ERR(file); - } else { - pos = (loff_t) page->index << PAGE_SHIFT; - - /* we mustn't write more data than we have, so we have - * to beware of a partial page at EOF */ - eof = object->fscache.store_limit_l; - len = PAGE_SIZE; - if (eof & ~PAGE_MASK) { - ASSERTCMP(pos, <, eof); - if (eof - pos < PAGE_SIZE) { - _debug("cut short %llx to %llx", - pos, eof); - len = eof - pos; - ASSERTCMP(pos + len, ==, eof); - } - } - - data = kmap(page); - ret = __kernel_write(file, data, len, &pos); - kunmap(page); - if (ret != len) - ret = -EIO; - fput(file); + goto error_2; } - if (ret < 0) { - if (ret == -EIO) - cachefiles_io_error_obj( - object, "Write page to backing file failed"); - ret = -ENOBUFS; + len = PAGE_SIZE; + if (eof & ~PAGE_MASK) { + if (eof - pos < PAGE_SIZE) { + _debug("cut short %llx to %llx", + pos, eof); + len = eof - pos; + ASSERTCMP(pos + len, ==, eof); + } } - _leave(" = %d", ret); - return ret; + data = kmap(page); + ret = __kernel_write(file, data, len, &pos); + kunmap(page); + fput(file); + if (ret != len) + goto error_eio; + + _leave(" = 0"); + return 0; + +error_eio: + ret = -EIO; +error_2: + if (ret == -EIO) + cachefiles_io_error_obj(object, + "Write page to backing file failed"); +error: + _leave(" = -ENOBUFS [%d]", ret); + return -ENOBUFS; } /* --- linux-raspi2-4.2.0.orig/fs/ceph/mds_client.c +++ linux-raspi2-4.2.0/fs/ceph/mds_client.c @@ -1935,7 +1935,7 @@ len = sizeof(*head) + pathlen1 + pathlen2 + 2*(1 + sizeof(u32) + sizeof(u64)) + - sizeof(struct timespec); + sizeof(struct ceph_timespec); /* calculate (max) length for cap releases */ len += sizeof(struct ceph_mds_request_release) * --- linux-raspi2-4.2.0.orig/fs/ceph/super.c +++ linux-raspi2-4.2.0/fs/ceph/super.c @@ -479,7 +479,7 @@ if (fsopt->max_readdir_bytes != CEPH_MAX_READDIR_BYTES_DEFAULT) seq_printf(m, ",readdir_max_bytes=%d", fsopt->max_readdir_bytes); if (strcmp(fsopt->snapdir_name, CEPH_SNAPDIRNAME_DEFAULT)) - seq_printf(m, ",snapdirname=%s", fsopt->snapdir_name); + seq_show_option(m, "snapdirname", fsopt->snapdir_name); return 0; } --- linux-raspi2-4.2.0.orig/fs/cifs/cifsencrypt.c +++ linux-raspi2-4.2.0/fs/cifs/cifsencrypt.c @@ -444,6 +444,48 @@ return 0; } +/* Server has provided av pairs/target info in the type 2 challenge + * packet and we have plucked it and stored within smb session. + * We parse that blob here to find the server given timestamp + * as part of ntlmv2 authentication (or local current time as + * default in case of failure) + */ +static __le64 +find_timestamp(struct cifs_ses *ses) +{ + unsigned int attrsize; + unsigned int type; + unsigned int onesize = sizeof(struct ntlmssp2_name); + unsigned char *blobptr; + unsigned char *blobend; + struct ntlmssp2_name *attrptr; + + if (!ses->auth_key.len || !ses->auth_key.response) + return 0; + + blobptr = ses->auth_key.response; + blobend = blobptr + ses->auth_key.len; + + while (blobptr + onesize < blobend) { + attrptr = (struct ntlmssp2_name *) blobptr; + type = le16_to_cpu(attrptr->type); + if (type == NTLMSSP_AV_EOL) + break; + blobptr += 2; /* advance attr type */ + attrsize = le16_to_cpu(attrptr->length); + blobptr += 2; /* advance attr size */ + if (blobptr + attrsize > blobend) + break; + if (type == NTLMSSP_AV_TIMESTAMP) { + if (attrsize == sizeof(u64)) + return *((__le64 *)blobptr); + } + blobptr += attrsize; /* advance attr value */ + } + + return cpu_to_le64(cifs_UnixTimeToNT(CURRENT_TIME)); +} + static int calc_ntlmv2_hash(struct cifs_ses *ses, char *ntlmv2_hash, const struct nls_table *nls_cp) { @@ -641,6 +683,7 @@ struct ntlmv2_resp *ntlmv2; char ntlmv2_hash[16]; unsigned char *tiblob = NULL; /* target info blob */ + __le64 rsp_timestamp; if (ses->server->negflavor == CIFS_NEGFLAVOR_EXTENDED) { if (!ses->domainName) { @@ -659,6 +702,12 @@ } } + /* Must be within 5 minutes of the server (or in range +/-2h + * in case of Mac OS X), so simply carry over server timestamp + * (as Windows 7 does) + */ + rsp_timestamp = find_timestamp(ses); + baselen = CIFS_SESS_KEY_SIZE + sizeof(struct ntlmv2_resp); tilen = ses->auth_key.len; tiblob = ses->auth_key.response; @@ -675,8 +724,8 @@ (ses->auth_key.response + CIFS_SESS_KEY_SIZE); ntlmv2->blob_signature = cpu_to_le32(0x00000101); ntlmv2->reserved = 0; - /* Must be within 5 minutes of the server */ - ntlmv2->time = cpu_to_le64(cifs_UnixTimeToNT(CURRENT_TIME)); + ntlmv2->time = rsp_timestamp; + get_random_bytes(&ntlmv2->client_chal, sizeof(ntlmv2->client_chal)); ntlmv2->reserved2 = 0; --- linux-raspi2-4.2.0.orig/fs/cifs/cifsfs.c +++ linux-raspi2-4.2.0/fs/cifs/cifsfs.c @@ -394,17 +394,17 @@ struct sockaddr *srcaddr; srcaddr = (struct sockaddr *)&tcon->ses->server->srcaddr; - seq_printf(s, ",vers=%s", tcon->ses->server->vals->version_string); + seq_show_option(s, "vers", tcon->ses->server->vals->version_string); cifs_show_security(s, tcon->ses); cifs_show_cache_flavor(s, cifs_sb); if (cifs_sb->mnt_cifs_flags & CIFS_MOUNT_MULTIUSER) seq_puts(s, ",multiuser"); else if (tcon->ses->user_name) - seq_printf(s, ",username=%s", tcon->ses->user_name); + seq_show_option(s, "username", tcon->ses->user_name); if (tcon->ses->domainName) - seq_printf(s, ",domain=%s", tcon->ses->domainName); + seq_show_option(s, "domain", tcon->ses->domainName); if (srcaddr->sa_family != AF_UNSPEC) { struct sockaddr_in *saddr4; --- linux-raspi2-4.2.0.orig/fs/cifs/inode.c +++ linux-raspi2-4.2.0/fs/cifs/inode.c @@ -2034,7 +2034,6 @@ struct tcon_link *tlink = NULL; struct cifs_tcon *tcon = NULL; struct TCP_Server_Info *server; - struct cifs_io_parms io_parms; /* * To avoid spurious oplock breaks from server, in the case of @@ -2056,18 +2055,6 @@ rc = -ENOSYS; cifsFileInfo_put(open_file); cifs_dbg(FYI, "SetFSize for attrs rc = %d\n", rc); - if ((rc == -EINVAL) || (rc == -EOPNOTSUPP)) { - unsigned int bytes_written; - - io_parms.netfid = open_file->fid.netfid; - io_parms.pid = open_file->pid; - io_parms.tcon = tcon; - io_parms.offset = 0; - io_parms.length = attrs->ia_size; - rc = CIFSSMBWrite(xid, &io_parms, &bytes_written, - NULL, NULL, 1); - cifs_dbg(FYI, "Wrt seteof rc %d\n", rc); - } } else rc = -EINVAL; @@ -2093,28 +2080,7 @@ else rc = -ENOSYS; cifs_dbg(FYI, "SetEOF by path (setattrs) rc = %d\n", rc); - if ((rc == -EINVAL) || (rc == -EOPNOTSUPP)) { - __u16 netfid; - int oplock = 0; - - rc = SMBLegacyOpen(xid, tcon, full_path, FILE_OPEN, - GENERIC_WRITE, CREATE_NOT_DIR, &netfid, - &oplock, NULL, cifs_sb->local_nls, - cifs_remap(cifs_sb)); - if (rc == 0) { - unsigned int bytes_written; - - io_parms.netfid = netfid; - io_parms.pid = current->tgid; - io_parms.tcon = tcon; - io_parms.offset = 0; - io_parms.length = attrs->ia_size; - rc = CIFSSMBWrite(xid, &io_parms, &bytes_written, NULL, - NULL, 1); - cifs_dbg(FYI, "wrt seteof rc %d\n", rc); - CIFSSMBClose(xid, tcon, netfid); - } - } + if (tlink) cifs_put_tlink(tlink); --- linux-raspi2-4.2.0.orig/fs/cifs/ioctl.c +++ linux-raspi2-4.2.0/fs/cifs/ioctl.c @@ -70,6 +70,12 @@ goto out_drop_write; } + if (src_file.file->f_op->unlocked_ioctl != cifs_ioctl) { + rc = -EBADF; + cifs_dbg(VFS, "src file seems to be from a different filesystem type\n"); + goto out_fput; + } + if ((!src_file.file->private_data) || (!dst_file->private_data)) { rc = -EBADF; cifs_dbg(VFS, "missing cifsFileInfo on copy range src file\n"); --- linux-raspi2-4.2.0.orig/fs/cifs/smb2ops.c +++ linux-raspi2-4.2.0/fs/cifs/smb2ops.c @@ -50,9 +50,13 @@ break; default: server->echoes = true; - server->oplocks = true; + if (enable_oplocks) { + server->oplocks = true; + server->oplock_credits = 1; + } else + server->oplocks = false; + server->echo_credits = 1; - server->oplock_credits = 1; } server->credits -= server->echo_credits + server->oplock_credits; return 0; --- linux-raspi2-4.2.0.orig/fs/cifs/smb2pdu.c +++ linux-raspi2-4.2.0/fs/cifs/smb2pdu.c @@ -46,6 +46,7 @@ #include "smb2status.h" #include "smb2glob.h" #include "cifspdu.h" +#include "cifs_spnego.h" /* * The following table defines the expected "StructureSize" of SMB2 requests @@ -486,19 +487,15 @@ cifs_dbg(FYI, "missing security blob on negprot\n"); rc = cifs_enable_signing(server, ses->sign); -#ifdef CONFIG_SMB2_ASN1 /* BB REMOVEME when updated asn1.c ready */ if (rc) goto neg_exit; - if (blob_length) + if (blob_length) { rc = decode_negTokenInit(security_blob, blob_length, server); - if (rc == 1) - rc = 0; - else if (rc == 0) { - rc = -EIO; - goto neg_exit; + if (rc == 1) + rc = 0; + else if (rc == 0) + rc = -EIO; } -#endif - neg_exit: free_rsp_buf(resp_buftype, rsp); return rc; @@ -592,7 +589,8 @@ __le32 phase = NtLmNegotiate; /* NTLMSSP, if needed, is multistage */ struct TCP_Server_Info *server = ses->server; u16 blob_length = 0; - char *security_blob; + struct key *spnego_key = NULL; + char *security_blob = NULL; char *ntlmssp_blob = NULL; bool use_spnego = false; /* else use raw ntlmssp */ @@ -620,7 +618,8 @@ ses->ntlmssp->sesskey_per_smbsess = true; /* FIXME: allow for other auth types besides NTLMSSP (e.g. krb5) */ - ses->sectype = RawNTLMSSP; + if (ses->sectype != Kerberos && ses->sectype != RawNTLMSSP) + ses->sectype = RawNTLMSSP; ssetup_ntlmssp_authenticate: if (phase == NtLmChallenge) @@ -649,7 +648,48 @@ iov[0].iov_base = (char *)req; /* 4 for rfc1002 length field and 1 for pad */ iov[0].iov_len = get_rfc1002_length(req) + 4 - 1; - if (phase == NtLmNegotiate) { + + if (ses->sectype == Kerberos) { +#ifdef CONFIG_CIFS_UPCALL + struct cifs_spnego_msg *msg; + + spnego_key = cifs_get_spnego_key(ses); + if (IS_ERR(spnego_key)) { + rc = PTR_ERR(spnego_key); + spnego_key = NULL; + goto ssetup_exit; + } + + msg = spnego_key->payload.data; + /* + * check version field to make sure that cifs.upcall is + * sending us a response in an expected form + */ + if (msg->version != CIFS_SPNEGO_UPCALL_VERSION) { + cifs_dbg(VFS, + "bad cifs.upcall version. Expected %d got %d", + CIFS_SPNEGO_UPCALL_VERSION, msg->version); + rc = -EKEYREJECTED; + goto ssetup_exit; + } + ses->auth_key.response = kmemdup(msg->data, msg->sesskey_len, + GFP_KERNEL); + if (!ses->auth_key.response) { + cifs_dbg(VFS, + "Kerberos can't allocate (%u bytes) memory", + msg->sesskey_len); + rc = -ENOMEM; + goto ssetup_exit; + } + ses->auth_key.len = msg->sesskey_len; + blob_length = msg->secblob_len; + iov[1].iov_base = msg->data + msg->sesskey_len; + iov[1].iov_len = blob_length; +#else + rc = -EOPNOTSUPP; + goto ssetup_exit; +#endif /* CONFIG_CIFS_UPCALL */ + } else if (phase == NtLmNegotiate) { /* if not krb5 must be ntlmssp */ ntlmssp_blob = kmalloc(sizeof(struct _NEGOTIATE_MESSAGE), GFP_KERNEL); if (ntlmssp_blob == NULL) { @@ -672,6 +712,8 @@ /* with raw NTLMSSP we don't encapsulate in SPNEGO */ security_blob = ntlmssp_blob; } + iov[1].iov_base = security_blob; + iov[1].iov_len = blob_length; } else if (phase == NtLmAuthenticate) { req->hdr.SessionId = ses->Suid; ntlmssp_blob = kzalloc(sizeof(struct _NEGOTIATE_MESSAGE) + 500, @@ -699,6 +741,8 @@ } else { security_blob = ntlmssp_blob; } + iov[1].iov_base = security_blob; + iov[1].iov_len = blob_length; } else { cifs_dbg(VFS, "illegal ntlmssp phase\n"); rc = -EIO; @@ -710,8 +754,6 @@ cpu_to_le16(sizeof(struct smb2_sess_setup_req) - 1 /* pad */ - 4 /* rfc1001 len */); req->SecurityBufferLength = cpu_to_le16(blob_length); - iov[1].iov_base = security_blob; - iov[1].iov_len = blob_length; inc_rfc1001_len(req, blob_length - 1 /* pad */); @@ -722,6 +764,7 @@ kfree(security_blob); rsp = (struct smb2_sess_setup_rsp *)iov[0].iov_base; + ses->Suid = rsp->hdr.SessionId; if (resp_buftype != CIFS_NO_BUFFER && rsp->hdr.Status == STATUS_MORE_PROCESSING_REQUIRED) { if (phase != NtLmNegotiate) { @@ -739,7 +782,6 @@ /* NTLMSSP Negotiate sent now processing challenge (response) */ phase = NtLmChallenge; /* process ntlmssp challenge */ rc = 0; /* MORE_PROCESSING is not an error here but expected */ - ses->Suid = rsp->hdr.SessionId; rc = decode_ntlmssp_challenge(rsp->Buffer, le16_to_cpu(rsp->SecurityBufferLength), ses); } @@ -796,6 +838,10 @@ kfree(ses->auth_key.response); ses->auth_key.response = NULL; } + if (spnego_key) { + key_invalidate(spnego_key); + key_put(spnego_key); + } kfree(ses->ntlmssp); return rc; --- linux-raspi2-4.2.0.orig/fs/coredump.c +++ linux-raspi2-4.2.0/fs/coredump.c @@ -513,10 +513,10 @@ const struct cred *old_cred; struct cred *cred; int retval = 0; - int flag = 0; int ispipe; struct files_struct *displaced; - bool need_nonrelative = false; + /* require nonrelative corefile path and be extra careful */ + bool need_suid_safe = false; bool core_dumped = false; static atomic_t core_dump_count = ATOMIC_INIT(0); struct coredump_params cprm = { @@ -550,9 +550,8 @@ */ if (__get_dumpable(cprm.mm_flags) == SUID_DUMP_ROOT) { /* Setuid core dump mode */ - flag = O_EXCL; /* Stop rewrite attacks */ cred->fsuid = GLOBAL_ROOT_UID; /* Dump root private */ - need_nonrelative = true; + need_suid_safe = true; } retval = coredump_wait(siginfo->si_signo, &core_state); @@ -633,7 +632,7 @@ if (cprm.limit < binfmt->min_coredump) goto fail_unlock; - if (need_nonrelative && cn.corename[0] != '/') { + if (need_suid_safe && cn.corename[0] != '/') { printk(KERN_WARNING "Pid %d(%s) can only dump core "\ "to fully qualified path!\n", task_tgid_vnr(current), current->comm); @@ -641,8 +640,35 @@ goto fail_unlock; } + /* + * Unlink the file if it exists unless this is a SUID + * binary - in that case, we're running around with root + * privs and don't want to unlink another user's coredump. + */ + if (!need_suid_safe) { + mm_segment_t old_fs; + + old_fs = get_fs(); + set_fs(KERNEL_DS); + /* + * If it doesn't exist, that's fine. If there's some + * other problem, we'll catch it at the filp_open(). + */ + (void) sys_unlink((const char __user *)cn.corename); + set_fs(old_fs); + } + + /* + * There is a race between unlinking and creating the + * file, but if that causes an EEXIST here, that's + * fine - another process raced with us while creating + * the corefile, and the other process won. To userspace, + * what matters is that at least one of the two processes + * writes its coredump successfully, not which one. + */ cprm.file = filp_open(cn.corename, - O_CREAT | 2 | O_NOFOLLOW | O_LARGEFILE | flag, + O_CREAT | 2 | O_NOFOLLOW | + O_LARGEFILE | O_EXCL, 0600); if (IS_ERR(cprm.file)) goto fail_unlock; @@ -659,11 +685,15 @@ if (!S_ISREG(inode->i_mode)) goto close_fail; /* - * Dont allow local users get cute and trick others to coredump - * into their pre-created files. + * Don't dump core if the filesystem changed owner or mode + * of the file during file creation. This is an issue when + * a process dumps core while its cwd is e.g. on a vfat + * filesystem. */ if (!uid_eq(inode->i_uid, current_fsuid())) goto close_fail; + if ((inode->i_mode & 0677) != 0600) + goto close_fail; if (!(cprm.file->f_mode & FMODE_CAN_WRITE)) goto close_fail; if (do_truncate(cprm.file->f_path.dentry, 0, 0, cprm.file)) --- linux-raspi2-4.2.0.orig/fs/dax.c +++ linux-raspi2-4.2.0/fs/dax.c @@ -116,7 +116,8 @@ unsigned len; if (pos == max) { unsigned blkbits = inode->i_blkbits; - sector_t block = pos >> blkbits; + long page = pos >> PAGE_SHIFT; + sector_t block = page << (PAGE_SHIFT - blkbits); unsigned first = pos - (block << blkbits); long size; @@ -161,8 +162,10 @@ else len = iov_iter_zero(max - pos, iter); - if (!len) + if (!len) { + retval = -EFAULT; break; + } pos += len; addr += len; --- linux-raspi2-4.2.0.orig/fs/dcache.c +++ linux-raspi2-4.2.0/fs/dcache.c @@ -1167,7 +1167,7 @@ * * The @enter() and @finish() 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 *), void (*finish)(void *)) { @@ -1272,6 +1272,7 @@ seq = 1; goto again; } +EXPORT_SYMBOL(d_walk); /* * Search for at least 1 mount point in the dentry's subdirs. @@ -2926,6 +2927,13 @@ if (dentry == vfsmnt->mnt_root || IS_ROOT(dentry)) { struct mount *parent = ACCESS_ONCE(mnt->mnt_parent); + /* Escaped? */ + if (dentry != vfsmnt->mnt_root) { + bptr = *buffer; + blen = *buflen; + error = 3; + break; + } /* Global root? */ if (mnt != parent) { dentry = ACCESS_ONCE(mnt->mnt_mountpoint); --- linux-raspi2-4.2.0.orig/fs/debugfs/inode.c +++ linux-raspi2-4.2.0/fs/debugfs/inode.c @@ -271,8 +271,12 @@ dput(dentry); dentry = ERR_PTR(-EEXIST); } - if (IS_ERR(dentry)) + + if (IS_ERR(dentry)) { mutex_unlock(&d_inode(parent)->i_mutex); + simple_release_fs(&debugfs_mount, &debugfs_mount_count); + } + return dentry; } --- linux-raspi2-4.2.0.orig/fs/ecryptfs/dentry.c +++ linux-raspi2-4.2.0/fs/ecryptfs/dentry.c @@ -45,20 +45,20 @@ static int ecryptfs_d_revalidate(struct dentry *dentry, unsigned int flags) { struct dentry *lower_dentry = ecryptfs_dentry_to_lower(dentry); - int rc; - - if (!(lower_dentry->d_flags & DCACHE_OP_REVALIDATE)) - return 1; + int rc = 1; if (flags & LOOKUP_RCU) return -ECHILD; - rc = lower_dentry->d_op->d_revalidate(lower_dentry, flags); + if (lower_dentry->d_flags & DCACHE_OP_REVALIDATE) + rc = lower_dentry->d_op->d_revalidate(lower_dentry, flags); + if (d_really_is_positive(dentry)) { - struct inode *lower_inode = - ecryptfs_inode_to_lower(d_inode(dentry)); + struct inode *inode = d_inode(dentry); - fsstack_copy_attr_all(d_inode(dentry), lower_inode); + fsstack_copy_attr_all(inode, ecryptfs_inode_to_lower(inode)); + if (!inode->i_nlink) + return 0; } return rc; } --- linux-raspi2-4.2.0.orig/fs/exec.c +++ linux-raspi2-4.2.0/fs/exec.c @@ -57,6 +57,8 @@ #include #include +#include + #include #include #include @@ -787,6 +789,8 @@ if (name->name[0] != '\0') fsnotify_open(file); + trace_open_exec(name->name); + out: return file; --- linux-raspi2-4.2.0.orig/fs/ext4/crypto.c +++ linux-raspi2-4.2.0/fs/ext4/crypto.c @@ -296,7 +296,6 @@ else res = crypto_ablkcipher_encrypt(req); if (res == -EINPROGRESS || res == -EBUSY) { - BUG_ON(req->base.data != &ecr); wait_for_completion(&ecr.completion); res = ecr.res; } --- linux-raspi2-4.2.0.orig/fs/ext4/crypto_fname.c +++ linux-raspi2-4.2.0/fs/ext4/crypto_fname.c @@ -121,7 +121,6 @@ ablkcipher_request_set_crypt(req, &src_sg, &dst_sg, ciphertext_len, iv); res = crypto_ablkcipher_encrypt(req); if (res == -EINPROGRESS || res == -EBUSY) { - BUG_ON(req->base.data != &ecr); wait_for_completion(&ecr.completion); res = ecr.res; } @@ -183,7 +182,6 @@ ablkcipher_request_set_crypt(req, &src_sg, &dst_sg, iname->len, iv); res = crypto_ablkcipher_decrypt(req); if (res == -EINPROGRESS || res == -EBUSY) { - BUG_ON(req->base.data != &ecr); wait_for_completion(&ecr.completion); res = ecr.res; } --- linux-raspi2-4.2.0.orig/fs/ext4/crypto_key.c +++ linux-raspi2-4.2.0/fs/ext4/crypto_key.c @@ -71,7 +71,6 @@ EXT4_AES_256_XTS_KEY_SIZE, NULL); res = crypto_ablkcipher_encrypt(req); if (res == -EINPROGRESS || res == -EBUSY) { - BUG_ON(req->base.data != &ecr); wait_for_completion(&ecr.completion); res = ecr.res; } @@ -208,7 +207,12 @@ goto out; } crypt_info->ci_keyring_key = keyring_key; - BUG_ON(keyring_key->type != &key_type_logon); + if (keyring_key->type != &key_type_logon) { + printk_once(KERN_WARNING + "ext4: key type must be logon\n"); + res = -ENOKEY; + goto out; + } ukp = ((struct user_key_payload *)keyring_key->payload.data); if (ukp->datalen != sizeof(struct ext4_encryption_key)) { res = -EINVAL; @@ -217,7 +221,13 @@ master_key = (struct ext4_encryption_key *)ukp->data; BUILD_BUG_ON(EXT4_AES_128_ECB_KEY_SIZE != EXT4_KEY_DERIVATION_NONCE_SIZE); - BUG_ON(master_key->size != EXT4_AES_256_XTS_KEY_SIZE); + if (master_key->size != EXT4_AES_256_XTS_KEY_SIZE) { + printk_once(KERN_WARNING + "ext4: key size incorrect: %d\n", + master_key->size); + res = -ENOKEY; + goto out; + } res = ext4_derive_key_aes(ctx.nonce, master_key->raw, raw_key); got_key: --- linux-raspi2-4.2.0.orig/fs/ext4/crypto_policy.c +++ linux-raspi2-4.2.0/fs/ext4/crypto_policy.c @@ -137,7 +137,8 @@ if ((parent == NULL) || (child == NULL)) { pr_err("parent %p child %p\n", parent, child); - BUG_ON(1); + WARN_ON(1); /* Should never happen */ + return 0; } /* no restrictions if the parent directory is not encrypted */ if (!ext4_encrypted_inode(parent)) --- linux-raspi2-4.2.0.orig/fs/ext4/ext4_jbd2.c +++ linux-raspi2-4.2.0/fs/ext4/ext4_jbd2.c @@ -88,13 +88,13 @@ return 0; } + err = handle->h_err; if (!handle->h_transaction) { - err = jbd2_journal_stop(handle); - return handle->h_err ? handle->h_err : err; + rc = jbd2_journal_stop(handle); + return err ? err : rc; } sb = handle->h_transaction->t_journal->j_private; - err = handle->h_err; rc = jbd2_journal_stop(handle); if (!err) --- linux-raspi2-4.2.0.orig/fs/ext4/page-io.c +++ linux-raspi2-4.2.0/fs/ext4/page-io.c @@ -425,6 +425,7 @@ struct buffer_head *bh, *head; int ret = 0; int nr_submitted = 0; + int nr_to_submit = 0; blocksize = 1 << inode->i_blkbits; @@ -477,11 +478,13 @@ unmap_underlying_metadata(bh->b_bdev, bh->b_blocknr); } set_buffer_async_write(bh); + nr_to_submit++; } while ((bh = bh->b_this_page) != head); bh = head = page_buffers(page); - if (ext4_encrypted_inode(inode) && S_ISREG(inode->i_mode)) { + if (ext4_encrypted_inode(inode) && S_ISREG(inode->i_mode) && + nr_to_submit) { data_page = ext4_encrypt(inode, page); if (IS_ERR(data_page)) { ret = PTR_ERR(data_page); --- linux-raspi2-4.2.0.orig/fs/ext4/resize.c +++ linux-raspi2-4.2.0/fs/ext4/resize.c @@ -1040,7 +1040,7 @@ * do not copy the full number of backups at this time. The resize * which changed s_groups_count will backup again. */ -static void update_backups(struct super_block *sb, int blk_off, char *data, +static void update_backups(struct super_block *sb, sector_t blk_off, char *data, int size, int meta_bg) { struct ext4_sb_info *sbi = EXT4_SB(sb); @@ -1065,7 +1065,7 @@ group = ext4_list_backups(sb, &three, &five, &seven); last = sbi->s_groups_count; } else { - group = ext4_meta_bg_first_group(sb, group) + 1; + group = ext4_get_group_number(sb, blk_off) + 1; last = (ext4_group_t)(group + EXT4_DESC_PER_BLOCK(sb) - 2); } --- linux-raspi2-4.2.0.orig/fs/ext4/super.c +++ linux-raspi2-4.2.0/fs/ext4/super.c @@ -325,6 +325,22 @@ ext4_commit_super(sb, 1); } +/* + * The del_gendisk() function uninitializes the disk-specific data + * structures, including the bdi structure, without telling anyone + * else. Once this happens, any attempt to call mark_buffer_dirty() + * (for example, by ext4_commit_super), will cause a kernel OOPS. + * This is a kludge to prevent these oops until we can put in a proper + * hook in del_gendisk() to inform the VFS and file system layers. + */ +static int block_device_ejected(struct super_block *sb) +{ + struct inode *bd_inode = sb->s_bdev->bd_inode; + struct backing_dev_info *bdi = inode_to_bdi(bd_inode); + + return bdi->dev == NULL; +} + static void ext4_journal_commit_callback(journal_t *journal, transaction_t *txn) { struct super_block *sb = journal->j_private; @@ -381,9 +397,13 @@ smp_wmb(); sb->s_flags |= MS_RDONLY; } - if (test_opt(sb, ERRORS_PANIC)) + if (test_opt(sb, ERRORS_PANIC)) { + if (EXT4_SB(sb)->s_journal && + !(EXT4_SB(sb)->s_journal->j_flags & JBD2_REC_ERR)) + return; panic("EXT4-fs (device %s): panic forced after error\n", sb->s_id); + } } #define ext4_error_ratelimit(sb) \ @@ -572,8 +592,12 @@ jbd2_journal_abort(EXT4_SB(sb)->s_journal, -EIO); save_error_info(sb, function, line); } - if (test_opt(sb, ERRORS_PANIC)) + if (test_opt(sb, ERRORS_PANIC)) { + if (EXT4_SB(sb)->s_journal && + !(EXT4_SB(sb)->s_journal->j_flags & JBD2_REC_ERR)) + return; panic("EXT4-fs panic from previous error\n"); + } } void __ext4_msg(struct super_block *sb, @@ -1763,10 +1787,10 @@ } if (sbi->s_qf_names[USRQUOTA]) - seq_printf(seq, ",usrjquota=%s", sbi->s_qf_names[USRQUOTA]); + seq_show_option(seq, "usrjquota", sbi->s_qf_names[USRQUOTA]); if (sbi->s_qf_names[GRPQUOTA]) - seq_printf(seq, ",grpjquota=%s", sbi->s_qf_names[GRPQUOTA]); + seq_show_option(seq, "grpjquota", sbi->s_qf_names[GRPQUOTA]); #endif } @@ -4617,7 +4641,7 @@ struct buffer_head *sbh = EXT4_SB(sb)->s_sbh; int error = 0; - if (!sbh) + if (!sbh || block_device_ejected(sb)) return error; if (buffer_write_io_error(sbh)) { /* @@ -4833,10 +4857,11 @@ error = jbd2_journal_flush(journal); if (error < 0) goto out; + + /* Journal blocked and flushed, clear needs_recovery flag. */ + EXT4_CLEAR_INCOMPAT_FEATURE(sb, EXT4_FEATURE_INCOMPAT_RECOVER); } - /* Journal blocked and flushed, clear needs_recovery flag. */ - EXT4_CLEAR_INCOMPAT_FEATURE(sb, EXT4_FEATURE_INCOMPAT_RECOVER); error = ext4_commit_super(sb, 1); out: if (journal) @@ -4854,8 +4879,11 @@ if (sb->s_flags & MS_RDONLY) return 0; - /* Reset the needs_recovery flag before the fs is unlocked. */ - EXT4_SET_INCOMPAT_FEATURE(sb, EXT4_FEATURE_INCOMPAT_RECOVER); + if (EXT4_SB(sb)->s_journal) { + /* Reset the needs_recovery flag before the fs is unlocked. */ + EXT4_SET_INCOMPAT_FEATURE(sb, EXT4_FEATURE_INCOMPAT_RECOVER); + } + ext4_commit_super(sb, 1); return 0; } --- linux-raspi2-4.2.0.orig/fs/f2fs/dir.c +++ linux-raspi2-4.2.0/fs/f2fs/dir.c @@ -787,7 +787,6 @@ else d_type = DT_UNKNOWN; - /* encrypted case */ de_name.name = d->filename[bit_pos]; de_name.len = le16_to_cpu(de->name_len); @@ -795,12 +794,20 @@ int save_len = fstr->len; int ret; + de_name.name = kmalloc(de_name.len, GFP_NOFS); + if (!de_name.name) + return false; + + memcpy(de_name.name, d->filename[bit_pos], de_name.len); + ret = f2fs_fname_disk_to_usr(d->inode, &de->hash_code, &de_name, fstr); - de_name = *fstr; - fstr->len = save_len; + kfree(de_name.name); if (ret < 0) return true; + + de_name = *fstr; + fstr->len = save_len; } if (!dir_emit(ctx, de_name.name, de_name.len, --- linux-raspi2-4.2.0.orig/fs/f2fs/namei.c +++ linux-raspi2-4.2.0/fs/f2fs/namei.c @@ -940,8 +940,13 @@ /* Symlink is encrypted */ sd = (struct f2fs_encrypted_symlink_data *)caddr; - cstr.name = sd->encrypted_path; cstr.len = le16_to_cpu(sd->len); + cstr.name = kmalloc(cstr.len, GFP_NOFS); + if (!cstr.name) { + res = -ENOMEM; + goto errout; + } + memcpy(cstr.name, sd->encrypted_path, cstr.len); /* this is broken symlink case */ if (cstr.name[0] == 0 && cstr.len == 0) { @@ -963,6 +968,8 @@ if (res < 0) goto errout; + kfree(cstr.name); + paddr = pstr.name; /* Null-terminate the name */ @@ -972,6 +979,7 @@ page_cache_release(cpage); return *cookie = paddr; errout: + kfree(cstr.name); f2fs_fname_crypto_free_buffer(&pstr); kunmap(cpage); page_cache_release(cpage); --- linux-raspi2-4.2.0.orig/fs/file_table.c +++ linux-raspi2-4.2.0/fs/file_table.c @@ -147,6 +147,7 @@ } return ERR_PTR(-ENFILE); } +EXPORT_SYMBOL(get_empty_filp); /** * alloc_file - allocate and initialize a 'struct file' @@ -308,6 +309,7 @@ file_free(file); } } +EXPORT_SYMBOL(put_filp); void __init files_init(void) { --- linux-raspi2-4.2.0.orig/fs/fscache/netfs.c +++ linux-raspi2-4.2.0/fs/fscache/netfs.c @@ -22,6 +22,7 @@ int __fscache_register_netfs(struct fscache_netfs *netfs) { struct fscache_netfs *ptr; + struct fscache_cookie *cookie; int ret; _enter("{%s}", netfs->name); @@ -29,29 +30,25 @@ INIT_LIST_HEAD(&netfs->link); /* allocate a cookie for the primary index */ - netfs->primary_index = - kmem_cache_zalloc(fscache_cookie_jar, GFP_KERNEL); + cookie = kmem_cache_zalloc(fscache_cookie_jar, GFP_KERNEL); - if (!netfs->primary_index) { + if (!cookie) { _leave(" = -ENOMEM"); return -ENOMEM; } /* initialise the primary index cookie */ - atomic_set(&netfs->primary_index->usage, 1); - atomic_set(&netfs->primary_index->n_children, 0); - atomic_set(&netfs->primary_index->n_active, 1); - - netfs->primary_index->def = &fscache_fsdef_netfs_def; - netfs->primary_index->parent = &fscache_fsdef_index; - netfs->primary_index->netfs_data = netfs; - netfs->primary_index->flags = 1 << FSCACHE_COOKIE_ENABLED; + atomic_set(&cookie->usage, 1); + atomic_set(&cookie->n_children, 0); + atomic_set(&cookie->n_active, 1); + + cookie->def = &fscache_fsdef_netfs_def; + cookie->parent = &fscache_fsdef_index; + cookie->netfs_data = netfs; + cookie->flags = 1 << FSCACHE_COOKIE_ENABLED; - atomic_inc(&netfs->primary_index->parent->usage); - atomic_inc(&netfs->primary_index->parent->n_children); - - spin_lock_init(&netfs->primary_index->lock); - INIT_HLIST_HEAD(&netfs->primary_index->backing_objects); + spin_lock_init(&cookie->lock); + INIT_HLIST_HEAD(&cookie->backing_objects); /* check the netfs type is not already present */ down_write(&fscache_addremove_sem); @@ -62,6 +59,10 @@ goto already_registered; } + atomic_inc(&cookie->parent->usage); + atomic_inc(&cookie->parent->n_children); + + netfs->primary_index = cookie; list_add(&netfs->link, &fscache_netfs_list); ret = 0; @@ -70,11 +71,8 @@ already_registered: up_write(&fscache_addremove_sem); - if (ret < 0) { - netfs->primary_index->parent = NULL; - __fscache_cookie_put(netfs->primary_index); - netfs->primary_index = NULL; - } + if (ret < 0) + kmem_cache_free(fscache_cookie_jar, cookie); _leave(" = %d", ret); return ret; --- linux-raspi2-4.2.0.orig/fs/fscache/page.c +++ linux-raspi2-4.2.0/fs/fscache/page.c @@ -816,7 +816,7 @@ goto superseded; page = results[0]; _debug("gang %d [%lx]", n, page->index); - if (page->index > op->store_limit) { + if (page->index >= op->store_limit) { fscache_stat(&fscache_n_store_pages_over_limit); goto superseded; } --- linux-raspi2-4.2.0.orig/fs/gfs2/super.c +++ linux-raspi2-4.2.0/fs/gfs2/super.c @@ -1334,11 +1334,11 @@ if (is_ancestor(root, sdp->sd_master_dir)) seq_puts(s, ",meta"); if (args->ar_lockproto[0]) - seq_printf(s, ",lockproto=%s", args->ar_lockproto); + seq_show_option(s, "lockproto", args->ar_lockproto); if (args->ar_locktable[0]) - seq_printf(s, ",locktable=%s", args->ar_locktable); + seq_show_option(s, "locktable", args->ar_locktable); if (args->ar_hostdata[0]) - seq_printf(s, ",hostdata=%s", args->ar_hostdata); + seq_show_option(s, "hostdata", args->ar_hostdata); if (args->ar_spectator) seq_puts(s, ",spectator"); if (args->ar_localflocks) --- linux-raspi2-4.2.0.orig/fs/hfs/bnode.c +++ linux-raspi2-4.2.0/fs/hfs/bnode.c @@ -288,7 +288,6 @@ page_cache_release(page); goto fail; } - page_cache_release(page); node->page[i] = page; } @@ -398,11 +397,11 @@ void hfs_bnode_free(struct hfs_bnode *node) { - //int i; + int i; - //for (i = 0; i < node->tree->pages_per_bnode; i++) - // if (node->page[i]) - // page_cache_release(node->page[i]); + for (i = 0; i < node->tree->pages_per_bnode; i++) + if (node->page[i]) + page_cache_release(node->page[i]); kfree(node); } --- linux-raspi2-4.2.0.orig/fs/hfs/brec.c +++ linux-raspi2-4.2.0/fs/hfs/brec.c @@ -131,13 +131,16 @@ hfs_bnode_write(node, entry, data_off + key_len, entry_len); hfs_bnode_dump(node); - if (new_node) { - /* update parent key if we inserted a key - * at the start of the first node - */ - if (!rec && new_node != node) - hfs_brec_update_parent(fd); + /* + * update parent key if we inserted a key + * at the start of the node and it is not the new node + */ + if (!rec && new_node != node) { + hfs_bnode_read_key(node, fd->search_key, data_off + size); + hfs_brec_update_parent(fd); + } + if (new_node) { hfs_bnode_put(fd->bnode); if (!new_node->parent) { hfs_btree_inc_height(tree); @@ -166,9 +169,6 @@ goto again; } - if (!rec) - hfs_brec_update_parent(fd); - return 0; } @@ -366,6 +366,8 @@ if (IS_ERR(parent)) return PTR_ERR(parent); __hfs_brec_find(parent, fd); + if (fd->record < 0) + return -ENOENT; hfs_bnode_dump(parent); rec = fd->record; --- linux-raspi2-4.2.0.orig/fs/hfs/super.c +++ linux-raspi2-4.2.0/fs/hfs/super.c @@ -136,9 +136,9 @@ struct hfs_sb_info *sbi = HFS_SB(root->d_sb); if (sbi->s_creator != cpu_to_be32(0x3f3f3f3f)) - seq_printf(seq, ",creator=%.4s", (char *)&sbi->s_creator); + seq_show_option_n(seq, "creator", (char *)&sbi->s_creator, 4); if (sbi->s_type != cpu_to_be32(0x3f3f3f3f)) - seq_printf(seq, ",type=%.4s", (char *)&sbi->s_type); + seq_show_option_n(seq, "type", (char *)&sbi->s_type, 4); seq_printf(seq, ",uid=%u,gid=%u", from_kuid_munged(&init_user_ns, sbi->s_uid), from_kgid_munged(&init_user_ns, sbi->s_gid)); --- linux-raspi2-4.2.0.orig/fs/hfsplus/bnode.c +++ linux-raspi2-4.2.0/fs/hfsplus/bnode.c @@ -454,7 +454,6 @@ page_cache_release(page); goto fail; } - page_cache_release(page); node->page[i] = page; } @@ -566,13 +565,11 @@ void hfs_bnode_free(struct hfs_bnode *node) { -#if 0 int i; for (i = 0; i < node->tree->pages_per_bnode; i++) if (node->page[i]) page_cache_release(node->page[i]); -#endif kfree(node); } --- linux-raspi2-4.2.0.orig/fs/hfsplus/options.c +++ linux-raspi2-4.2.0/fs/hfsplus/options.c @@ -218,9 +218,9 @@ struct hfsplus_sb_info *sbi = HFSPLUS_SB(root->d_sb); if (sbi->creator != HFSPLUS_DEF_CR_TYPE) - seq_printf(seq, ",creator=%.4s", (char *)&sbi->creator); + seq_show_option_n(seq, "creator", (char *)&sbi->creator, 4); if (sbi->type != HFSPLUS_DEF_CR_TYPE) - seq_printf(seq, ",type=%.4s", (char *)&sbi->type); + seq_show_option_n(seq, "type", (char *)&sbi->type, 4); seq_printf(seq, ",umask=%o,uid=%u,gid=%u", sbi->umask, from_kuid_munged(&init_user_ns, sbi->uid), from_kgid_munged(&init_user_ns, sbi->gid)); --- linux-raspi2-4.2.0.orig/fs/hostfs/hostfs_kern.c +++ linux-raspi2-4.2.0/fs/hostfs/hostfs_kern.c @@ -260,7 +260,7 @@ size_t offset = strlen(root_ino) + 1; if (strlen(root_path) > offset) - seq_printf(seq, ",%s", root_path + offset); + seq_show_option(seq, root_path + offset, NULL); if (append) seq_puts(seq, ",append"); --- linux-raspi2-4.2.0.orig/fs/hpfs/namei.c +++ linux-raspi2-4.2.0/fs/hpfs/namei.c @@ -8,6 +8,17 @@ #include #include "hpfs_fn.h" +static void hpfs_update_directory_times(struct inode *dir) +{ + time_t t = get_seconds(); + if (t == dir->i_mtime.tv_sec && + t == dir->i_ctime.tv_sec) + return; + dir->i_mtime.tv_sec = dir->i_ctime.tv_sec = t; + dir->i_mtime.tv_nsec = dir->i_ctime.tv_nsec = 0; + hpfs_write_inode_nolock(dir); +} + static int hpfs_mkdir(struct inode *dir, struct dentry *dentry, umode_t mode) { const unsigned char *name = dentry->d_name.name; @@ -99,6 +110,7 @@ result->i_mode = mode | S_IFDIR; hpfs_write_inode_nolock(result); } + hpfs_update_directory_times(dir); d_instantiate(dentry, result); hpfs_unlock(dir->i_sb); return 0; @@ -187,6 +199,7 @@ result->i_mode = mode | S_IFREG; hpfs_write_inode_nolock(result); } + hpfs_update_directory_times(dir); d_instantiate(dentry, result); hpfs_unlock(dir->i_sb); return 0; @@ -262,6 +275,7 @@ insert_inode_hash(result); hpfs_write_inode_nolock(result); + hpfs_update_directory_times(dir); d_instantiate(dentry, result); brelse(bh); hpfs_unlock(dir->i_sb); @@ -340,6 +354,7 @@ insert_inode_hash(result); hpfs_write_inode_nolock(result); + hpfs_update_directory_times(dir); d_instantiate(dentry, result); hpfs_unlock(dir->i_sb); return 0; @@ -423,6 +438,8 @@ out1: hpfs_brelse4(&qbh); out: + if (!err) + hpfs_update_directory_times(dir); hpfs_unlock(dir->i_sb); return err; } @@ -477,6 +494,8 @@ out1: hpfs_brelse4(&qbh); out: + if (!err) + hpfs_update_directory_times(dir); hpfs_unlock(dir->i_sb); return err; } @@ -595,7 +614,7 @@ goto end1; } - end: +end: hpfs_i(i)->i_parent_dir = new_dir->i_ino; if (S_ISDIR(i->i_mode)) { inc_nlink(new_dir); @@ -610,6 +629,10 @@ brelse(bh); } end1: + if (!err) { + hpfs_update_directory_times(old_dir); + hpfs_update_directory_times(new_dir); + } hpfs_unlock(i->i_sb); return err; } --- linux-raspi2-4.2.0.orig/fs/inode.c +++ linux-raspi2-4.2.0/fs/inode.c @@ -58,6 +58,7 @@ static __cacheline_aligned_in_smp DEFINE_SPINLOCK(inode_hash_lock); __cacheline_aligned_in_smp DEFINE_SPINLOCK(inode_sb_list_lock); +EXPORT_SYMBOL(inode_sb_list_lock); /* * Empty aops. Can be used for the cases where the user does not --- linux-raspi2-4.2.0.orig/fs/jbd2/checkpoint.c +++ linux-raspi2-4.2.0/fs/jbd2/checkpoint.c @@ -417,17 +417,16 @@ * journal_clean_one_cp_list * * Find all the written-back checkpoint buffers in the given list and - * release them. + * release them. If 'destroy' is set, clean all buffers unconditionally. * * Called with j_list_lock held. * Returns 1 if we freed the transaction, 0 otherwise. */ -static int journal_clean_one_cp_list(struct journal_head *jh) +static int journal_clean_one_cp_list(struct journal_head *jh, bool destroy) { struct journal_head *last_jh; struct journal_head *next_jh = jh; int ret; - int freed = 0; if (!jh) return 0; @@ -436,12 +435,14 @@ do { jh = next_jh; next_jh = jh->b_cpnext; - ret = __try_to_free_cp_buf(jh); + if (!destroy) + ret = __try_to_free_cp_buf(jh); + else + ret = __jbd2_journal_remove_checkpoint(jh) + 1; if (!ret) - return freed; + return 0; if (ret == 2) return 1; - freed = 1; /* * This function only frees up some memory * if possible so we dont have an obligation @@ -449,20 +450,21 @@ * requested: */ if (need_resched()) - return freed; + return 0; } while (jh != last_jh); - return freed; + return 0; } /* * journal_clean_checkpoint_list * * Find all the written-back checkpoint buffers in the journal and release them. + * If 'destroy' is set, release all buffers unconditionally. * * Called with j_list_lock held. */ -void __jbd2_journal_clean_checkpoint_list(journal_t *journal) +void __jbd2_journal_clean_checkpoint_list(journal_t *journal, bool destroy) { transaction_t *transaction, *last_transaction, *next_transaction; int ret; @@ -476,7 +478,8 @@ do { transaction = next_transaction; next_transaction = transaction->t_cpnext; - ret = journal_clean_one_cp_list(transaction->t_checkpoint_list); + ret = journal_clean_one_cp_list(transaction->t_checkpoint_list, + destroy); /* * This function only frees up some memory if possible so we * dont have an obligation to finish processing. Bail out if @@ -492,7 +495,7 @@ * we can possibly see not yet submitted buffers on io_list */ ret = journal_clean_one_cp_list(transaction-> - t_checkpoint_io_list); + t_checkpoint_io_list, destroy); if (need_resched()) return; /* @@ -506,6 +509,28 @@ } /* + * Remove buffers from all checkpoint lists as journal is aborted and we just + * need to free memory + */ +void jbd2_journal_destroy_checkpoint(journal_t *journal) +{ + /* + * We loop because __jbd2_journal_clean_checkpoint_list() may abort + * early due to a need of rescheduling. + */ + while (1) { + spin_lock(&journal->j_list_lock); + if (!journal->j_checkpoint_transactions) { + spin_unlock(&journal->j_list_lock); + break; + } + __jbd2_journal_clean_checkpoint_list(journal, true); + spin_unlock(&journal->j_list_lock); + cond_resched(); + } +} + +/* * journal_remove_checkpoint: called after a buffer has been committed * to disk (either by being write-back flushed to disk, or being * committed to the log). --- linux-raspi2-4.2.0.orig/fs/jbd2/commit.c +++ linux-raspi2-4.2.0/fs/jbd2/commit.c @@ -510,7 +510,7 @@ * frees some memory */ spin_lock(&journal->j_list_lock); - __jbd2_journal_clean_checkpoint_list(journal); + __jbd2_journal_clean_checkpoint_list(journal, false); spin_unlock(&journal->j_list_lock); jbd_debug(3, "JBD2: commit phase 1\n"); --- linux-raspi2-4.2.0.orig/fs/jbd2/journal.c +++ linux-raspi2-4.2.0/fs/jbd2/journal.c @@ -1693,8 +1693,17 @@ while (journal->j_checkpoint_transactions != NULL) { spin_unlock(&journal->j_list_lock); mutex_lock(&journal->j_checkpoint_mutex); - jbd2_log_do_checkpoint(journal); + err = jbd2_log_do_checkpoint(journal); mutex_unlock(&journal->j_checkpoint_mutex); + /* + * If checkpointing failed, just free the buffers to avoid + * looping forever + */ + if (err) { + jbd2_journal_destroy_checkpoint(journal); + spin_lock(&journal->j_list_lock); + break; + } spin_lock(&journal->j_list_lock); } @@ -2062,8 +2071,12 @@ __jbd2_journal_abort_hard(journal); - if (errno) + if (errno) { jbd2_journal_update_sb_errno(journal); + write_lock(&journal->j_state_lock); + journal->j_flags |= JBD2_REC_ERR; + write_unlock(&journal->j_state_lock); + } } /** --- linux-raspi2-4.2.0.orig/fs/libfs.c +++ linux-raspi2-4.2.0/fs/libfs.c @@ -1185,7 +1185,7 @@ inode->i_uid = GLOBAL_ROOT_UID; inode->i_gid = GLOBAL_ROOT_GID; inode->i_rdev = 0; - inode->i_size = 2; + inode->i_size = 0; inode->i_blkbits = PAGE_SHIFT; inode->i_blocks = 0; --- linux-raspi2-4.2.0.orig/fs/lockd/host.c +++ linux-raspi2-4.2.0/fs/lockd/host.c @@ -116,7 +116,7 @@ atomic_inc(&nsm->sm_count); else { host = NULL; - nsm = nsm_get_handle(ni->sap, ni->salen, + nsm = nsm_get_handle(ni->net, ni->sap, ni->salen, ni->hostname, ni->hostname_len); if (unlikely(nsm == NULL)) { dprintk("lockd: %s failed; no nsm handle\n", @@ -534,17 +534,18 @@ /** * nlm_host_rebooted - Release all resources held by rebooted host + * @net: network namespace * @info: pointer to decoded results of NLM_SM_NOTIFY call * * We were notified that the specified host has rebooted. Release * all resources held by that peer. */ -void nlm_host_rebooted(const struct nlm_reboot *info) +void nlm_host_rebooted(const struct net *net, const struct nlm_reboot *info) { struct nsm_handle *nsm; struct nlm_host *host; - nsm = nsm_reboot_lookup(info); + nsm = nsm_reboot_lookup(net, info); if (unlikely(nsm == NULL)) return; --- linux-raspi2-4.2.0.orig/fs/lockd/mon.c +++ linux-raspi2-4.2.0/fs/lockd/mon.c @@ -51,7 +51,6 @@ }; static const struct rpc_program nsm_program; -static LIST_HEAD(nsm_handles); static DEFINE_SPINLOCK(nsm_lock); /* @@ -264,33 +263,35 @@ } } -static struct nsm_handle *nsm_lookup_hostname(const char *hostname, - const size_t len) +static struct nsm_handle *nsm_lookup_hostname(const struct list_head *nsm_handles, + const char *hostname, const size_t len) { struct nsm_handle *nsm; - list_for_each_entry(nsm, &nsm_handles, sm_link) + list_for_each_entry(nsm, nsm_handles, sm_link) if (strlen(nsm->sm_name) == len && memcmp(nsm->sm_name, hostname, len) == 0) return nsm; return NULL; } -static struct nsm_handle *nsm_lookup_addr(const struct sockaddr *sap) +static struct nsm_handle *nsm_lookup_addr(const struct list_head *nsm_handles, + const struct sockaddr *sap) { struct nsm_handle *nsm; - list_for_each_entry(nsm, &nsm_handles, sm_link) + list_for_each_entry(nsm, nsm_handles, sm_link) if (rpc_cmp_addr(nsm_addr(nsm), sap)) return nsm; return NULL; } -static struct nsm_handle *nsm_lookup_priv(const struct nsm_private *priv) +static struct nsm_handle *nsm_lookup_priv(const struct list_head *nsm_handles, + const struct nsm_private *priv) { struct nsm_handle *nsm; - list_for_each_entry(nsm, &nsm_handles, sm_link) + list_for_each_entry(nsm, nsm_handles, sm_link) if (memcmp(nsm->sm_priv.data, priv->data, sizeof(priv->data)) == 0) return nsm; @@ -353,6 +354,7 @@ /** * nsm_get_handle - Find or create a cached nsm_handle + * @net: network namespace * @sap: pointer to socket address of handle to find * @salen: length of socket address * @hostname: pointer to C string containing hostname to find @@ -365,11 +367,13 @@ * @hostname cannot be found in the handle cache. Returns NULL if * an error occurs. */ -struct nsm_handle *nsm_get_handle(const struct sockaddr *sap, +struct nsm_handle *nsm_get_handle(const struct net *net, + const struct sockaddr *sap, const size_t salen, const char *hostname, const size_t hostname_len) { struct nsm_handle *cached, *new = NULL; + struct lockd_net *ln = net_generic(net, lockd_net_id); if (hostname && memchr(hostname, '/', hostname_len) != NULL) { if (printk_ratelimit()) { @@ -384,9 +388,10 @@ spin_lock(&nsm_lock); if (nsm_use_hostnames && hostname != NULL) - cached = nsm_lookup_hostname(hostname, hostname_len); + cached = nsm_lookup_hostname(&ln->nsm_handles, + hostname, hostname_len); else - cached = nsm_lookup_addr(sap); + cached = nsm_lookup_addr(&ln->nsm_handles, sap); if (cached != NULL) { atomic_inc(&cached->sm_count); @@ -400,7 +405,7 @@ } if (new != NULL) { - list_add(&new->sm_link, &nsm_handles); + list_add(&new->sm_link, &ln->nsm_handles); spin_unlock(&nsm_lock); dprintk("lockd: created nsm_handle for %s (%s)\n", new->sm_name, new->sm_addrbuf); @@ -417,19 +422,22 @@ /** * nsm_reboot_lookup - match NLMPROC_SM_NOTIFY arguments to an nsm_handle + * @net: network namespace * @info: pointer to NLMPROC_SM_NOTIFY arguments * * Returns a matching nsm_handle if found in the nsm cache. The returned * nsm_handle's reference count is bumped. Otherwise returns NULL if some * error occurred. */ -struct nsm_handle *nsm_reboot_lookup(const struct nlm_reboot *info) +struct nsm_handle *nsm_reboot_lookup(const struct net *net, + const struct nlm_reboot *info) { struct nsm_handle *cached; + struct lockd_net *ln = net_generic(net, lockd_net_id); spin_lock(&nsm_lock); - cached = nsm_lookup_priv(&info->priv); + cached = nsm_lookup_priv(&ln->nsm_handles, &info->priv); if (unlikely(cached == NULL)) { spin_unlock(&nsm_lock); dprintk("lockd: never saw rebooted peer '%.*s' before\n", --- linux-raspi2-4.2.0.orig/fs/lockd/netns.h +++ linux-raspi2-4.2.0/fs/lockd/netns.h @@ -15,6 +15,7 @@ spinlock_t nsm_clnt_lock; unsigned int nsm_users; struct rpc_clnt *nsm_clnt; + struct list_head nsm_handles; }; extern int lockd_net_id; --- linux-raspi2-4.2.0.orig/fs/lockd/svc.c +++ linux-raspi2-4.2.0/fs/lockd/svc.c @@ -587,6 +587,7 @@ INIT_DELAYED_WORK(&ln->grace_period_end, grace_ender); INIT_LIST_HEAD(&ln->lockd_manager.list); spin_lock_init(&ln->nsm_clnt_lock); + INIT_LIST_HEAD(&ln->nsm_handles); return 0; } --- linux-raspi2-4.2.0.orig/fs/lockd/svc4proc.c +++ linux-raspi2-4.2.0/fs/lockd/svc4proc.c @@ -421,7 +421,7 @@ return rpc_system_err; } - nlm_host_rebooted(argp); + nlm_host_rebooted(SVC_NET(rqstp), argp); return rpc_success; } --- linux-raspi2-4.2.0.orig/fs/lockd/svcproc.c +++ linux-raspi2-4.2.0/fs/lockd/svcproc.c @@ -464,7 +464,7 @@ return rpc_system_err; } - nlm_host_rebooted(argp); + nlm_host_rebooted(SVC_NET(rqstp), argp); return rpc_success; } --- linux-raspi2-4.2.0.orig/fs/namei.c +++ linux-raspi2-4.2.0/fs/namei.c @@ -560,6 +560,24 @@ return 0; } +/** + * path_connected - Verify that a path->dentry is below path->mnt.mnt_root + * @path: nameidate to verify + * + * Rename can sometimes move a file or directory outside of a bind + * mount, path_connected allows those cases to be detected. + */ +static bool path_connected(const struct path *path) +{ + struct vfsmount *mnt = path->mnt; + + /* Only bind mounts can have disconnected paths */ + if (mnt->mnt_root == mnt->mnt_sb->s_root) + return true; + + return is_subdir(path->dentry, mnt->mnt_root); +} + static inline int nd_alloc_stack(struct nameidata *nd) { if (likely(nd->depth != EMBEDDED_LEVELS)) @@ -847,8 +865,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; /** * may_follow_link - Check symlink following for unsafe situations @@ -937,26 +955,23 @@ * - sysctl_protected_hardlinks enabled * - fsuid does not match inode * - hardlink source is unsafe (see safe_hardlink_source() above) - * - not CAP_FOWNER + * - not CAP_FOWNER in a namespace with the inode owner uid mapped * * Returns 0 if successful, -ve on error. */ static int may_linkat(struct path *link) { - const struct cred *cred; struct inode *inode; if (!sysctl_protected_hardlinks) return 0; - cred = current_cred(); inode = link->dentry->d_inode; /* Source inode owner (or CAP_FOWNER) can hardlink all they like, * otherwise, it must be a safe source. */ - if (uid_eq(cred->fsuid, inode->i_uid) || safe_hardlink_source(inode) || - capable(CAP_FOWNER)) + if (inode_owner_or_capable(inode) || safe_hardlink_source(inode)) return 0; audit_log_link_denied("linkat", link); @@ -1296,6 +1311,8 @@ return -ECHILD; nd->path.dentry = parent; nd->seq = seq; + if (unlikely(!path_connected(&nd->path))) + return -ENOENT; break; } else { struct mount *mnt = real_mount(nd->path.mnt); @@ -1396,7 +1413,7 @@ } } -static void follow_dotdot(struct nameidata *nd) +static int follow_dotdot(struct nameidata *nd) { if (!nd->root.mnt) set_root(nd); @@ -1412,6 +1429,8 @@ /* rare case of legitimate dget_parent()... */ nd->path.dentry = dget_parent(nd->path.dentry); dput(old); + if (unlikely(!path_connected(&nd->path))) + return -ENOENT; break; } if (!follow_up(&nd->path)) @@ -1419,6 +1438,7 @@ } follow_mount(&nd->path); nd->inode = nd->path.dentry->d_inode; + return 0; } /* @@ -1535,8 +1555,6 @@ negative = d_is_negative(dentry); if (read_seqcount_retry(&dentry->d_seq, seq)) return -ECHILD; - if (negative) - return -ENOENT; /* * This sequence count validates that the parent had no @@ -1557,6 +1575,12 @@ goto unlazy; } } + /* + * Note: do negative dentry check after revalidation in + * case that drops it. + */ + if (negative) + return -ENOENT; path->mnt = mnt; path->dentry = dentry; if (likely(__follow_mount_rcu(nd, path, inode, seqp))) @@ -1634,7 +1658,7 @@ if (nd->flags & LOOKUP_RCU) { return follow_dotdot_rcu(nd); } else - follow_dotdot(nd); + return follow_dotdot(nd); } return 0; } --- linux-raspi2-4.2.0.orig/fs/namespace.c +++ linux-raspi2-4.2.0/fs/namespace.c @@ -463,6 +463,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 @@ -1803,6 +1804,7 @@ } return 0; } +EXPORT_SYMBOL(iterate_mounts); static void cleanup_group_ids(struct mount *mnt, struct mount *end) { --- linux-raspi2-4.2.0.orig/fs/nfs/delegation.c +++ linux-raspi2-4.2.0/fs/nfs/delegation.c @@ -113,7 +113,8 @@ return status; } -static int nfs_delegation_claim_opens(struct inode *inode, const nfs4_stateid *stateid) +static int nfs_delegation_claim_opens(struct inode *inode, + const nfs4_stateid *stateid, fmode_t type) { struct nfs_inode *nfsi = NFS_I(inode); struct nfs_open_context *ctx; @@ -140,7 +141,7 @@ /* Block nfs4_proc_unlck */ mutex_lock(&sp->so_delegreturn_mutex); seq = raw_seqcount_begin(&sp->so_reclaim_seqcount); - err = nfs4_open_delegation_recall(ctx, state, stateid); + err = nfs4_open_delegation_recall(ctx, state, stateid, type); if (!err) err = nfs_delegation_claim_locks(ctx, state, stateid); if (!err && read_seqcount_retry(&sp->so_reclaim_seqcount, seq)) @@ -411,7 +412,8 @@ do { if (test_bit(NFS_DELEGATION_REVOKED, &delegation->flags)) break; - err = nfs_delegation_claim_opens(inode, &delegation->stateid); + err = nfs_delegation_claim_opens(inode, &delegation->stateid, + delegation->type); if (!issync || err != -EAGAIN) break; /* --- linux-raspi2-4.2.0.orig/fs/nfs/delegation.h +++ linux-raspi2-4.2.0/fs/nfs/delegation.h @@ -54,7 +54,7 @@ /* NFSv4 delegation-related procedures */ int nfs4_proc_delegreturn(struct inode *inode, struct rpc_cred *cred, const nfs4_stateid *stateid, int issync); -int nfs4_open_delegation_recall(struct nfs_open_context *ctx, struct nfs4_state *state, const nfs4_stateid *stateid); +int nfs4_open_delegation_recall(struct nfs_open_context *ctx, struct nfs4_state *state, const nfs4_stateid *stateid, fmode_t type); int nfs4_lock_delegation_recall(struct file_lock *fl, struct nfs4_state *state, const nfs4_stateid *stateid); bool nfs4_copy_delegation_stateid(nfs4_stateid *dst, struct inode *inode, fmode_t flags); --- linux-raspi2-4.2.0.orig/fs/nfs/filelayout/filelayout.c +++ linux-raspi2-4.2.0/fs/nfs/filelayout/filelayout.c @@ -629,23 +629,18 @@ goto out; } -static void filelayout_free_fh_array(struct nfs4_filelayout_segment *fl) +static void _filelayout_free_lseg(struct nfs4_filelayout_segment *fl) { int i; - for (i = 0; i < fl->num_fh; i++) { - if (!fl->fh_array[i]) - break; - kfree(fl->fh_array[i]); + if (fl->fh_array) { + for (i = 0; i < fl->num_fh; i++) { + if (!fl->fh_array[i]) + break; + kfree(fl->fh_array[i]); + } + kfree(fl->fh_array); } - kfree(fl->fh_array); - fl->fh_array = NULL; -} - -static void -_filelayout_free_lseg(struct nfs4_filelayout_segment *fl) -{ - filelayout_free_fh_array(fl); kfree(fl); } @@ -716,21 +711,21 @@ /* Do we want to use a mempool here? */ fl->fh_array[i] = kmalloc(sizeof(struct nfs_fh), gfp_flags); if (!fl->fh_array[i]) - goto out_err_free; + goto out_err; p = xdr_inline_decode(&stream, 4); if (unlikely(!p)) - goto out_err_free; + goto out_err; fl->fh_array[i]->size = be32_to_cpup(p++); if (sizeof(struct nfs_fh) < fl->fh_array[i]->size) { printk(KERN_ERR "NFS: Too big fh %d received %d\n", i, fl->fh_array[i]->size); - goto out_err_free; + goto out_err; } p = xdr_inline_decode(&stream, fl->fh_array[i]->size); if (unlikely(!p)) - goto out_err_free; + goto out_err; memcpy(fl->fh_array[i]->data, p, fl->fh_array[i]->size); dprintk("DEBUG: %s: fh len %d\n", __func__, fl->fh_array[i]->size); @@ -739,8 +734,6 @@ __free_page(scratch); return 0; -out_err_free: - filelayout_free_fh_array(fl); out_err: __free_page(scratch); return -EIO; --- linux-raspi2-4.2.0.orig/fs/nfs/flexfilelayout/flexfilelayout.c +++ linux-raspi2-4.2.0/fs/nfs/flexfilelayout/flexfilelayout.c @@ -1199,6 +1199,11 @@ hdr->res.verf->committed == NFS_DATA_SYNC) ff_layout_set_layoutcommit(hdr); + /* zero out fattr since we don't care DS attr at all */ + hdr->fattr.valid = 0; + if (task->tk_status >= 0) + nfs_writeback_update_inode(hdr); + return 0; } --- linux-raspi2-4.2.0.orig/fs/nfs/flexfilelayout/flexfilelayoutdev.c +++ linux-raspi2-4.2.0/fs/nfs/flexfilelayout/flexfilelayoutdev.c @@ -500,16 +500,19 @@ range->offset, range->length)) continue; /* offset(8) + length(8) + stateid(NFS4_STATEID_SIZE) - * + deviceid(NFS4_DEVICEID4_SIZE) + status(4) + opnum(4) + * + array length + deviceid(NFS4_DEVICEID4_SIZE) + * + status(4) + opnum(4) */ p = xdr_reserve_space(xdr, - 24 + NFS4_STATEID_SIZE + NFS4_DEVICEID4_SIZE); + 28 + NFS4_STATEID_SIZE + NFS4_DEVICEID4_SIZE); if (unlikely(!p)) return -ENOBUFS; p = xdr_encode_hyper(p, err->offset); p = xdr_encode_hyper(p, err->length); p = xdr_encode_opaque_fixed(p, &err->stateid, NFS4_STATEID_SIZE); + /* Encode 1 error */ + *p++ = cpu_to_be32(1); p = xdr_encode_opaque_fixed(p, &err->deviceid, NFS4_DEVICEID4_SIZE); *p++ = cpu_to_be32(err->status); --- linux-raspi2-4.2.0.orig/fs/nfs/inode.c +++ linux-raspi2-4.2.0/fs/nfs/inode.c @@ -1273,13 +1273,6 @@ return 0; } -static int nfs_ctime_need_update(const struct inode *inode, const struct nfs_fattr *fattr) -{ - if (!(fattr->valid & NFS_ATTR_FATTR_CTIME)) - return 0; - return timespec_compare(&fattr->ctime, &inode->i_ctime) > 0; -} - static atomic_long_t nfs_attr_generation_counter; static unsigned long nfs_read_attr_generation_counter(void) @@ -1428,7 +1421,6 @@ const struct nfs_inode *nfsi = NFS_I(inode); return ((long)fattr->gencount - (long)nfsi->attr_gencount) > 0 || - nfs_ctime_need_update(inode, fattr) || ((long)nfsi->attr_gencount - (long)nfs_read_attr_generation_counter() > 0); } @@ -1491,6 +1483,13 @@ { unsigned long invalid = NFS_INO_INVALID_ATTR|NFS_INO_REVAL_PAGECACHE; + /* + * Don't revalidate the pagecache if we hold a delegation, but do + * force an attribute update + */ + if (NFS_PROTO(inode)->have_delegation(inode, FMODE_READ)) + invalid = NFS_INO_INVALID_ATTR|NFS_INO_REVAL_FORCED; + if (S_ISDIR(inode->i_mode)) invalid |= NFS_INO_INVALID_DATA; nfs_set_cache_invalid(inode, invalid); @@ -1817,7 +1816,11 @@ if ((long)fattr->gencount - (long)nfsi->attr_gencount > 0) nfsi->attr_gencount = fattr->gencount; } - invalid &= ~NFS_INO_INVALID_ATTR; + + /* Don't declare attrcache up to date if there were no attrs! */ + if (fattr->valid != 0) + invalid &= ~NFS_INO_INVALID_ATTR; + /* Don't invalidate the data if we were to blame */ if (!(S_ISREG(inode->i_mode) || S_ISDIR(inode->i_mode) || S_ISLNK(inode->i_mode))) --- linux-raspi2-4.2.0.orig/fs/nfs/internal.h +++ linux-raspi2-4.2.0/fs/nfs/internal.h @@ -490,6 +490,9 @@ void nfs_commitdata_release(struct nfs_commit_data *data); void nfs_request_add_commit_list(struct nfs_page *req, struct list_head *dst, struct nfs_commit_info *cinfo); +void nfs_request_add_commit_list_locked(struct nfs_page *req, + struct list_head *dst, + struct nfs_commit_info *cinfo); void nfs_request_remove_commit_list(struct nfs_page *req, struct nfs_commit_info *cinfo); void nfs_init_cinfo(struct nfs_commit_info *cinfo, @@ -623,13 +626,15 @@ * Record the page as unstable and mark its inode as dirty. */ static inline -void nfs_mark_page_unstable(struct page *page) +void nfs_mark_page_unstable(struct page *page, struct nfs_commit_info *cinfo) { - struct inode *inode = page_file_mapping(page)->host; + if (!cinfo->dreq) { + struct inode *inode = page_file_mapping(page)->host; - inc_zone_page_state(page, NR_UNSTABLE_NFS); - inc_wb_stat(&inode_to_bdi(inode)->wb, WB_RECLAIMABLE); - __mark_inode_dirty(inode, I_DIRTY_DATASYNC); + inc_zone_page_state(page, NR_UNSTABLE_NFS); + inc_wb_stat(&inode_to_bdi(inode)->wb, WB_RECLAIMABLE); + __mark_inode_dirty(inode, I_DIRTY_DATASYNC); + } } /* --- linux-raspi2-4.2.0.orig/fs/nfs/nfs42proc.c +++ linux-raspi2-4.2.0/fs/nfs/nfs42proc.c @@ -175,10 +175,12 @@ { struct nfs_server *server = NFS_SERVER(file_inode(filep)); struct nfs4_exception exception = { }; - int err; + loff_t err; do { err = _nfs42_proc_llseek(filep, offset, whence); + if (err >= 0) + break; if (err == -ENOTSUPP) return -EOPNOTSUPP; err = nfs4_handle_exception(server, err, &exception); --- linux-raspi2-4.2.0.orig/fs/nfs/nfs4client.c +++ linux-raspi2-4.2.0/fs/nfs/nfs4client.c @@ -33,7 +33,7 @@ return ret; idr_preload(GFP_KERNEL); spin_lock(&nn->nfs_client_lock); - ret = idr_alloc(&nn->cb_ident_idr, clp, 0, 0, GFP_NOWAIT); + ret = idr_alloc(&nn->cb_ident_idr, clp, 1, 0, GFP_NOWAIT); if (ret >= 0) clp->cl_cb_ident = ret; spin_unlock(&nn->nfs_client_lock); --- linux-raspi2-4.2.0.orig/fs/nfs/nfs4proc.c +++ linux-raspi2-4.2.0/fs/nfs/nfs4proc.c @@ -1127,6 +1127,21 @@ return ret; } +static bool nfs4_mode_match_open_stateid(struct nfs4_state *state, + fmode_t fmode) +{ + switch(fmode & (FMODE_READ|FMODE_WRITE)) { + case FMODE_READ|FMODE_WRITE: + return state->n_rdwr != 0; + case FMODE_WRITE: + return state->n_wronly != 0; + case FMODE_READ: + return state->n_rdonly != 0; + } + WARN_ON_ONCE(1); + return false; +} + static int can_open_cached(struct nfs4_state *state, fmode_t mode, int open_mode) { int ret = 0; @@ -1156,6 +1171,8 @@ return 0; if ((delegation->type & fmode) != fmode) return 0; + if (test_bit(NFS_DELEGATION_NEED_RECLAIM, &delegation->flags)) + return 0; if (test_bit(NFS_DELEGATION_RETURNING, &delegation->flags)) return 0; nfs_mark_delegation_referenced(delegation); @@ -1220,6 +1237,7 @@ } static void nfs_clear_open_stateid_locked(struct nfs4_state *state, + nfs4_stateid *arg_stateid, nfs4_stateid *stateid, fmode_t fmode) { clear_bit(NFS_O_RDWR_STATE, &state->flags); @@ -1238,8 +1256,9 @@ if (stateid == NULL) return; /* Handle races with OPEN */ - if (!nfs4_stateid_match_other(stateid, &state->open_stateid) || - !nfs4_stateid_is_newer(stateid, &state->open_stateid)) { + if (!nfs4_stateid_match_other(arg_stateid, &state->open_stateid) || + (nfs4_stateid_match_other(stateid, &state->open_stateid) && + !nfs4_stateid_is_newer(stateid, &state->open_stateid))) { nfs_resync_open_stateid_locked(state); return; } @@ -1248,10 +1267,12 @@ nfs4_stateid_copy(&state->open_stateid, stateid); } -static void nfs_clear_open_stateid(struct nfs4_state *state, nfs4_stateid *stateid, fmode_t fmode) +static void nfs_clear_open_stateid(struct nfs4_state *state, + nfs4_stateid *arg_stateid, + nfs4_stateid *stateid, fmode_t fmode) { write_seqlock(&state->seqlock); - nfs_clear_open_stateid_locked(state, stateid, fmode); + nfs_clear_open_stateid_locked(state, arg_stateid, stateid, fmode); write_sequnlock(&state->seqlock); if (test_bit(NFS_STATE_RECLAIM_NOGRACE, &state->flags)) nfs4_schedule_state_manager(state->owner->so_server->nfs_client); @@ -1555,17 +1576,13 @@ return opendata; } -static int nfs4_open_recover_helper(struct nfs4_opendata *opendata, fmode_t fmode, struct nfs4_state **res) +static int nfs4_open_recover_helper(struct nfs4_opendata *opendata, + fmode_t fmode) { struct nfs4_state *newstate; int ret; - if ((opendata->o_arg.claim == NFS4_OPEN_CLAIM_DELEGATE_CUR || - opendata->o_arg.claim == NFS4_OPEN_CLAIM_DELEG_CUR_FH) && - (opendata->o_arg.u.delegation_type & fmode) != fmode) - /* This mode can't have been delegated, so we must have - * a valid open_stateid to cover it - not need to reclaim. - */ + if (!nfs4_mode_match_open_stateid(opendata->state, fmode)) return 0; opendata->o_arg.open_flags = 0; opendata->o_arg.fmode = fmode; @@ -1581,14 +1598,14 @@ newstate = nfs4_opendata_to_nfs4_state(opendata); if (IS_ERR(newstate)) return PTR_ERR(newstate); + if (newstate != opendata->state) + ret = -ESTALE; nfs4_close_state(newstate, fmode); - *res = newstate; - return 0; + return ret; } static int nfs4_open_recover(struct nfs4_opendata *opendata, struct nfs4_state *state) { - struct nfs4_state *newstate; int ret; /* Don't trigger recovery in nfs_test_and_clear_all_open_stateid */ @@ -1599,27 +1616,15 @@ clear_bit(NFS_DELEGATED_STATE, &state->flags); clear_bit(NFS_OPEN_STATE, &state->flags); smp_rmb(); - if (state->n_rdwr != 0) { - ret = nfs4_open_recover_helper(opendata, FMODE_READ|FMODE_WRITE, &newstate); - if (ret != 0) - return ret; - if (newstate != state) - return -ESTALE; - } - if (state->n_wronly != 0) { - ret = nfs4_open_recover_helper(opendata, FMODE_WRITE, &newstate); - if (ret != 0) - return ret; - if (newstate != state) - return -ESTALE; - } - if (state->n_rdonly != 0) { - ret = nfs4_open_recover_helper(opendata, FMODE_READ, &newstate); - if (ret != 0) - return ret; - if (newstate != state) - return -ESTALE; - } + ret = nfs4_open_recover_helper(opendata, FMODE_READ|FMODE_WRITE); + if (ret != 0) + return ret; + ret = nfs4_open_recover_helper(opendata, FMODE_WRITE); + if (ret != 0) + return ret; + ret = nfs4_open_recover_helper(opendata, FMODE_READ); + if (ret != 0) + return ret; /* * We may have performed cached opens for all three recoveries. * Check if we need to update the current stateid. @@ -1743,18 +1748,32 @@ return err; } -int nfs4_open_delegation_recall(struct nfs_open_context *ctx, struct nfs4_state *state, const nfs4_stateid *stateid) +int nfs4_open_delegation_recall(struct nfs_open_context *ctx, + struct nfs4_state *state, const nfs4_stateid *stateid, + fmode_t type) { struct nfs_server *server = NFS_SERVER(state->inode); struct nfs4_opendata *opendata; - int err; + int err = 0; opendata = nfs4_open_recoverdata_alloc(ctx, state, NFS4_OPEN_CLAIM_DELEG_CUR_FH); if (IS_ERR(opendata)) return PTR_ERR(opendata); nfs4_stateid_copy(&opendata->o_arg.u.delegation, stateid); - err = nfs4_open_recover(opendata, state); + clear_bit(NFS_DELEGATED_STATE, &state->flags); + switch (type & (FMODE_READ|FMODE_WRITE)) { + case FMODE_READ|FMODE_WRITE: + case FMODE_WRITE: + err = nfs4_open_recover_helper(opendata, FMODE_READ|FMODE_WRITE); + if (err) + break; + err = nfs4_open_recover_helper(opendata, FMODE_WRITE); + if (err) + break; + case FMODE_READ: + err = nfs4_open_recover_helper(opendata, FMODE_READ); + } nfs4_opendata_put(opendata); return nfs4_handle_delegation_recall_error(server, state, stateid, err); } @@ -2425,7 +2444,7 @@ goto err_free_label; state = ctx->state; - if ((opendata->o_arg.open_flags & O_EXCL) && + if ((opendata->o_arg.open_flags & (O_CREAT|O_EXCL)) == (O_CREAT|O_EXCL) && (opendata->o_arg.createmode != NFS4_CREATE_GUARDED)) { nfs4_exclusive_attrset(opendata, sattr); @@ -2684,7 +2703,8 @@ goto out_release; } } - nfs_clear_open_stateid(state, res_stateid, calldata->arg.fmode); + nfs_clear_open_stateid(state, &calldata->arg.stateid, + res_stateid, calldata->arg.fmode); out_release: nfs_release_seqid(calldata->arg.seqid); nfs_refresh_inode(calldata->inode, calldata->res.fattr); @@ -4984,7 +5004,7 @@ return 0; retry: rcu_read_lock(); - len = 10 + strlen(clp->cl_ipaddr) + 1 + + len = 14 + strlen(clp->cl_ipaddr) + 1 + strlen(rpc_peeraddr2str(clp->cl_rpcclient, RPC_DISPLAY_ADDR)) + 1 + strlen(rpc_peeraddr2str(clp->cl_rpcclient, RPC_DISPLAY_PROTO)) + @@ -8661,6 +8681,7 @@ .reboot_recovery_ops = &nfs41_reboot_recovery_ops, .nograce_recovery_ops = &nfs41_nograce_recovery_ops, .state_renewal_ops = &nfs41_state_renewal_ops, + .mig_recovery_ops = &nfs41_mig_recovery_ops, }; #endif --- linux-raspi2-4.2.0.orig/fs/nfs/pagelist.c +++ linux-raspi2-4.2.0/fs/nfs/pagelist.c @@ -77,8 +77,8 @@ void nfs_set_pgio_error(struct nfs_pgio_header *hdr, int error, loff_t pos) { spin_lock(&hdr->lock); - if (pos < hdr->io_start + hdr->good_bytes) { - set_bit(NFS_IOHDR_ERROR, &hdr->flags); + if (!test_and_set_bit(NFS_IOHDR_ERROR, &hdr->flags) + || pos < hdr->io_start + hdr->good_bytes) { clear_bit(NFS_IOHDR_EOF, &hdr->flags); hdr->good_bytes = pos - hdr->io_start; hdr->error = error; @@ -508,7 +508,7 @@ * for it without upsetting the slab allocator. */ if (((mirror->pg_count + req->wb_bytes) >> PAGE_SHIFT) * - sizeof(struct page) > PAGE_SIZE) + sizeof(struct page *) > PAGE_SIZE) return 0; return min(mirror->pg_bsize - mirror->pg_count, (size_t)req->wb_bytes); --- linux-raspi2-4.2.0.orig/fs/nfs/pnfs_nfs.c +++ linux-raspi2-4.2.0/fs/nfs/pnfs_nfs.c @@ -359,26 +359,31 @@ return false; } +/* + * Checks if 'dsaddrs1' contains a subset of 'dsaddrs2'. If it does, + * declare a match. + */ static bool _same_data_server_addrs_locked(const struct list_head *dsaddrs1, const struct list_head *dsaddrs2) { struct nfs4_pnfs_ds_addr *da1, *da2; + struct sockaddr *sa1, *sa2; + bool match = false; - /* step through both lists, comparing as we go */ - for (da1 = list_first_entry(dsaddrs1, typeof(*da1), da_node), - da2 = list_first_entry(dsaddrs2, typeof(*da2), da_node); - da1 != NULL && da2 != NULL; - da1 = list_entry(da1->da_node.next, typeof(*da1), da_node), - da2 = list_entry(da2->da_node.next, typeof(*da2), da_node)) { - if (!same_sockaddr((struct sockaddr *)&da1->da_addr, - (struct sockaddr *)&da2->da_addr)) - return false; + list_for_each_entry(da1, dsaddrs1, da_node) { + sa1 = (struct sockaddr *)&da1->da_addr; + match = false; + list_for_each_entry(da2, dsaddrs2, da_node) { + sa2 = (struct sockaddr *)&da2->da_addr; + match = same_sockaddr(sa1, sa2); + if (match) + break; + } + if (!match) + break; } - if (da1 == NULL && da2 == NULL) - return true; - - return false; + return match; } /* @@ -863,9 +868,10 @@ } set_bit(PG_COMMIT_TO_DS, &req->wb_flags); cinfo->ds->nwritten++; - spin_unlock(cinfo->lock); - nfs_request_add_commit_list(req, list, cinfo); + nfs_request_add_commit_list_locked(req, list, cinfo); + spin_unlock(cinfo->lock); + nfs_mark_page_unstable(req->wb_page, cinfo); } EXPORT_SYMBOL_GPL(pnfs_layout_mark_request_commit); --- linux-raspi2-4.2.0.orig/fs/nfs/read.c +++ linux-raspi2-4.2.0/fs/nfs/read.c @@ -72,6 +72,9 @@ { struct nfs_pgio_mirror *mirror; + if (pgio->pg_ops && pgio->pg_ops->pg_cleanup) + pgio->pg_ops->pg_cleanup(pgio); + pgio->pg_ops = &nfs_pgio_rw_ops; /* read path should never have more than one mirror */ --- linux-raspi2-4.2.0.orig/fs/nfs/write.c +++ linux-raspi2-4.2.0/fs/nfs/write.c @@ -768,6 +768,28 @@ } /** + * nfs_request_add_commit_list_locked - add request to a commit list + * @req: pointer to a struct nfs_page + * @dst: commit list head + * @cinfo: holds list lock and accounting info + * + * This sets the PG_CLEAN bit, updates the cinfo count of + * number of outstanding requests requiring a commit as well as + * the MM page stats. + * + * The caller must hold the cinfo->lock, and the nfs_page lock. + */ +void +nfs_request_add_commit_list_locked(struct nfs_page *req, struct list_head *dst, + struct nfs_commit_info *cinfo) +{ + set_bit(PG_CLEAN, &req->wb_flags); + nfs_list_add_request(req, dst); + cinfo->mds->ncommit++; +} +EXPORT_SYMBOL_GPL(nfs_request_add_commit_list_locked); + +/** * nfs_request_add_commit_list - add request to a commit list * @req: pointer to a struct nfs_page * @dst: commit list head @@ -784,13 +806,10 @@ nfs_request_add_commit_list(struct nfs_page *req, struct list_head *dst, struct nfs_commit_info *cinfo) { - set_bit(PG_CLEAN, &(req)->wb_flags); spin_lock(cinfo->lock); - nfs_list_add_request(req, dst); - cinfo->mds->ncommit++; + nfs_request_add_commit_list_locked(req, dst, cinfo); spin_unlock(cinfo->lock); - if (!cinfo->dreq) - nfs_mark_page_unstable(req->wb_page); + nfs_mark_page_unstable(req->wb_page, cinfo); } EXPORT_SYMBOL_GPL(nfs_request_add_commit_list); @@ -1204,7 +1223,7 @@ return 1; if (!flctx || (list_empty_careful(&flctx->flc_flock) && list_empty_careful(&flctx->flc_posix))) - return 0; + return 1; /* Check to see if there are whole file write locks */ ret = 0; @@ -1332,6 +1351,9 @@ { struct nfs_pgio_mirror *mirror; + if (pgio->pg_ops && pgio->pg_ops->pg_cleanup) + pgio->pg_ops->pg_cleanup(pgio); + pgio->pg_ops = &nfs_pgio_rw_ops; nfs_pageio_stop_mirroring(pgio); --- linux-raspi2-4.2.0.orig/fs/nfsd/blocklayout.c +++ linux-raspi2-4.2.0/fs/nfsd/blocklayout.c @@ -56,14 +56,6 @@ u32 device_generation = 0; int error; - /* - * We do not attempt to support I/O smaller than the fs block size, - * or not aligned to it. - */ - if (args->lg_minlength < block_size) { - dprintk("pnfsd: I/O too small\n"); - goto out_layoutunavailable; - } if (seg->offset & (block_size - 1)) { dprintk("pnfsd: I/O misaligned\n"); goto out_layoutunavailable; --- linux-raspi2-4.2.0.orig/fs/nfsd/nfs4state.c +++ linux-raspi2-4.2.0/fs/nfsd/nfs4state.c @@ -765,25 +765,80 @@ s->sc_type = 0; } -static void +/** + * nfs4_get_existing_delegation - Discover if this delegation already exists + * @clp: a pointer to the nfs4_client we're granting a delegation to + * @fp: a pointer to the nfs4_file we're granting a delegation on + * + * Return: + * On success: NULL if an existing delegation was not found. + * + * On error: -EAGAIN if one was previously granted to this nfs4_client + * for this nfs4_file. + * + */ + +static int +nfs4_get_existing_delegation(struct nfs4_client *clp, struct nfs4_file *fp) +{ + struct nfs4_delegation *searchdp = NULL; + struct nfs4_client *searchclp = NULL; + + lockdep_assert_held(&state_lock); + lockdep_assert_held(&fp->fi_lock); + + list_for_each_entry(searchdp, &fp->fi_delegations, dl_perfile) { + searchclp = searchdp->dl_stid.sc_client; + if (clp == searchclp) { + return -EAGAIN; + } + } + return 0; +} + +/** + * hash_delegation_locked - Add a delegation to the appropriate lists + * @dp: a pointer to the nfs4_delegation we are adding. + * @fp: a pointer to the nfs4_file we're granting a delegation on + * + * Return: + * On success: NULL if the delegation was successfully hashed. + * + * On error: -EAGAIN if one was previously granted to this + * nfs4_client for this nfs4_file. Delegation is not hashed. + * + */ + +static int hash_delegation_locked(struct nfs4_delegation *dp, struct nfs4_file *fp) { + int status; + struct nfs4_client *clp = dp->dl_stid.sc_client; + lockdep_assert_held(&state_lock); lockdep_assert_held(&fp->fi_lock); + status = nfs4_get_existing_delegation(clp, fp); + if (status) + return status; + ++fp->fi_delegees; atomic_inc(&dp->dl_stid.sc_count); dp->dl_stid.sc_type = NFS4_DELEG_STID; list_add(&dp->dl_perfile, &fp->fi_delegations); - list_add(&dp->dl_perclnt, &dp->dl_stid.sc_client->cl_delegations); + list_add(&dp->dl_perclnt, &clp->cl_delegations); + return 0; } -static void +static bool unhash_delegation_locked(struct nfs4_delegation *dp) { struct nfs4_file *fp = dp->dl_stid.sc_file; lockdep_assert_held(&state_lock); + if (list_empty(&dp->dl_perfile)) + return false; + dp->dl_stid.sc_type = NFS4_CLOSED_DELEG_STID; /* Ensure that deleg break won't try to requeue it */ ++dp->dl_time; @@ -792,16 +847,21 @@ list_del_init(&dp->dl_recall_lru); list_del_init(&dp->dl_perfile); spin_unlock(&fp->fi_lock); + return true; } static void destroy_delegation(struct nfs4_delegation *dp) { + bool unhashed; + spin_lock(&state_lock); - unhash_delegation_locked(dp); + unhashed = unhash_delegation_locked(dp); spin_unlock(&state_lock); - put_clnt_odstate(dp->dl_clnt_odstate); - nfs4_put_deleg_lease(dp->dl_stid.sc_file); - nfs4_put_stid(&dp->dl_stid); + if (unhashed) { + put_clnt_odstate(dp->dl_clnt_odstate); + nfs4_put_deleg_lease(dp->dl_stid.sc_file); + nfs4_put_stid(&dp->dl_stid); + } } static void revoke_delegation(struct nfs4_delegation *dp) @@ -1004,16 +1064,20 @@ sop->so_ops->so_free(sop); } -static void unhash_ol_stateid(struct nfs4_ol_stateid *stp) +static bool unhash_ol_stateid(struct nfs4_ol_stateid *stp) { struct nfs4_file *fp = stp->st_stid.sc_file; lockdep_assert_held(&stp->st_stateowner->so_client->cl_lock); + if (list_empty(&stp->st_perfile)) + return false; + spin_lock(&fp->fi_lock); - list_del(&stp->st_perfile); + list_del_init(&stp->st_perfile); spin_unlock(&fp->fi_lock); list_del(&stp->st_perstateowner); + return true; } static void nfs4_free_ol_stateid(struct nfs4_stid *stid) @@ -1063,25 +1127,27 @@ list_add(&stp->st_locks, reaplist); } -static void unhash_lock_stateid(struct nfs4_ol_stateid *stp) +static bool unhash_lock_stateid(struct nfs4_ol_stateid *stp) { struct nfs4_openowner *oo = openowner(stp->st_openstp->st_stateowner); lockdep_assert_held(&oo->oo_owner.so_client->cl_lock); list_del_init(&stp->st_locks); - unhash_ol_stateid(stp); nfs4_unhash_stid(&stp->st_stid); + return unhash_ol_stateid(stp); } static void release_lock_stateid(struct nfs4_ol_stateid *stp) { struct nfs4_openowner *oo = openowner(stp->st_openstp->st_stateowner); + bool unhashed; spin_lock(&oo->oo_owner.so_client->cl_lock); - unhash_lock_stateid(stp); + unhashed = unhash_lock_stateid(stp); spin_unlock(&oo->oo_owner.so_client->cl_lock); - nfs4_put_stid(&stp->st_stid); + if (unhashed) + nfs4_put_stid(&stp->st_stid); } static void unhash_lockowner_locked(struct nfs4_lockowner *lo) @@ -1129,7 +1195,7 @@ while (!list_empty(&lo->lo_owner.so_stateids)) { stp = list_first_entry(&lo->lo_owner.so_stateids, struct nfs4_ol_stateid, st_perstateowner); - unhash_lock_stateid(stp); + WARN_ON(!unhash_lock_stateid(stp)); put_ol_stateid_locked(stp, &reaplist); } spin_unlock(&clp->cl_lock); @@ -1142,21 +1208,26 @@ { struct nfs4_ol_stateid *stp; + lockdep_assert_held(&open_stp->st_stid.sc_client->cl_lock); + while (!list_empty(&open_stp->st_locks)) { stp = list_entry(open_stp->st_locks.next, struct nfs4_ol_stateid, st_locks); - unhash_lock_stateid(stp); + WARN_ON(!unhash_lock_stateid(stp)); put_ol_stateid_locked(stp, reaplist); } } -static void unhash_open_stateid(struct nfs4_ol_stateid *stp, +static bool unhash_open_stateid(struct nfs4_ol_stateid *stp, struct list_head *reaplist) { + bool unhashed; + lockdep_assert_held(&stp->st_stid.sc_client->cl_lock); - unhash_ol_stateid(stp); + unhashed = unhash_ol_stateid(stp); release_open_stateid_locks(stp, reaplist); + return unhashed; } static void release_open_stateid(struct nfs4_ol_stateid *stp) @@ -1164,8 +1235,8 @@ LIST_HEAD(reaplist); spin_lock(&stp->st_stid.sc_client->cl_lock); - unhash_open_stateid(stp, &reaplist); - put_ol_stateid_locked(stp, &reaplist); + if (unhash_open_stateid(stp, &reaplist)) + put_ol_stateid_locked(stp, &reaplist); spin_unlock(&stp->st_stid.sc_client->cl_lock); free_ol_stateid_reaplist(&reaplist); } @@ -1210,8 +1281,8 @@ while (!list_empty(&oo->oo_owner.so_stateids)) { stp = list_first_entry(&oo->oo_owner.so_stateids, struct nfs4_ol_stateid, st_perstateowner); - unhash_open_stateid(stp, &reaplist); - put_ol_stateid_locked(stp, &reaplist); + if (unhash_open_stateid(stp, &reaplist)) + put_ol_stateid_locked(stp, &reaplist); } spin_unlock(&clp->cl_lock); free_ol_stateid_reaplist(&reaplist); @@ -1714,7 +1785,7 @@ spin_lock(&state_lock); while (!list_empty(&clp->cl_delegations)) { dp = list_entry(clp->cl_delegations.next, struct nfs4_delegation, dl_perclnt); - unhash_delegation_locked(dp); + WARN_ON(!unhash_delegation_locked(dp)); list_add(&dp->dl_recall_lru, &reaplist); } spin_unlock(&state_lock); @@ -3332,6 +3403,7 @@ stp->st_access_bmap = 0; stp->st_deny_bmap = 0; stp->st_openstp = NULL; + init_rwsem(&stp->st_rwsem); spin_lock(&oo->oo_owner.so_client->cl_lock); list_add(&stp->st_perstateowner, &oo->oo_owner.so_stateids); spin_lock(&fp->fi_lock); @@ -3920,6 +3992,18 @@ return fl; } +/** + * nfs4_setlease - Obtain a delegation by requesting lease from vfs layer + * @dp: a pointer to the nfs4_delegation we're adding. + * + * Return: + * On success: Return code will be 0 on success. + * + * On error: -EAGAIN if there was an existing delegation. + * nonzero if there is an error in other cases. + * + */ + static int nfs4_setlease(struct nfs4_delegation *dp) { struct nfs4_file *fp = dp->dl_stid.sc_file; @@ -3951,16 +4035,19 @@ goto out_unlock; /* Race breaker */ if (fp->fi_deleg_file) { - status = 0; - ++fp->fi_delegees; - hash_delegation_locked(dp, fp); + status = hash_delegation_locked(dp, fp); goto out_unlock; } fp->fi_deleg_file = filp; - fp->fi_delegees = 1; - hash_delegation_locked(dp, fp); + fp->fi_delegees = 0; + status = hash_delegation_locked(dp, fp); spin_unlock(&fp->fi_lock); spin_unlock(&state_lock); + if (status) { + /* Should never happen, this is a new fi_deleg_file */ + WARN_ON_ONCE(1); + goto out_fput; + } return 0; out_unlock: spin_unlock(&fp->fi_lock); @@ -3980,6 +4067,15 @@ if (fp->fi_had_conflict) return ERR_PTR(-EAGAIN); + spin_lock(&state_lock); + spin_lock(&fp->fi_lock); + status = nfs4_get_existing_delegation(clp, fp); + spin_unlock(&fp->fi_lock); + spin_unlock(&state_lock); + + if (status) + return ERR_PTR(status); + dp = alloc_init_deleg(clp, fh, odstate); if (!dp) return ERR_PTR(-ENOMEM); @@ -3998,9 +4094,7 @@ status = -EAGAIN; goto out_unlock; } - ++fp->fi_delegees; - hash_delegation_locked(dp, fp); - status = 0; + status = hash_delegation_locked(dp, fp); out_unlock: spin_unlock(&fp->fi_lock); spin_unlock(&state_lock); @@ -4161,15 +4255,20 @@ */ if (stp) { /* Stateid was found, this is an OPEN upgrade */ + down_read(&stp->st_rwsem); status = nfs4_upgrade_open(rqstp, fp, current_fh, stp, open); - if (status) + if (status) { + up_read(&stp->st_rwsem); goto out; + } } else { stp = open->op_stp; open->op_stp = NULL; init_open_stateid(stp, fp, open); + down_read(&stp->st_rwsem); status = nfs4_get_vfs_file(rqstp, fp, current_fh, stp, open); if (status) { + up_read(&stp->st_rwsem); release_open_stateid(stp); goto out; } @@ -4181,6 +4280,7 @@ } update_stateid(&stp->st_stid.sc_stateid); memcpy(&open->op_stateid, &stp->st_stid.sc_stateid, sizeof(stateid_t)); + up_read(&stp->st_rwsem); if (nfsd4_has_session(&resp->cstate)) { if (open->op_deleg_want & NFS4_SHARE_WANT_NO_DELEG) { @@ -4345,7 +4445,7 @@ new_timeo = min(new_timeo, t); break; } - unhash_delegation_locked(dp); + WARN_ON(!unhash_delegation_locked(dp)); list_add(&dp->dl_recall_lru, &reaplist); } spin_unlock(&state_lock); @@ -4751,7 +4851,7 @@ if (check_for_locks(stp->st_stid.sc_file, lockowner(stp->st_stateowner))) break; - unhash_lock_stateid(stp); + WARN_ON(!unhash_lock_stateid(stp)); spin_unlock(&cl->cl_lock); nfs4_put_stid(s); ret = nfs_ok; @@ -4795,10 +4895,13 @@ * revoked delegations are kept only for free_stateid. */ return nfserr_bad_stateid; + down_write(&stp->st_rwsem); status = check_stateid_generation(stateid, &stp->st_stid.sc_stateid, nfsd4_has_session(cstate)); - if (status) - return status; - return nfs4_check_fh(current_fh, &stp->st_stid); + if (status == nfs_ok) + status = nfs4_check_fh(current_fh, &stp->st_stid); + if (status != nfs_ok) + up_write(&stp->st_rwsem); + return status; } /* @@ -4845,6 +4948,7 @@ return status; oo = openowner(stp->st_stateowner); if (!(oo->oo_flags & NFS4_OO_CONFIRMED)) { + up_write(&stp->st_rwsem); nfs4_put_stid(&stp->st_stid); return nfserr_bad_stateid; } @@ -4875,11 +4979,14 @@ goto out; oo = openowner(stp->st_stateowner); status = nfserr_bad_stateid; - if (oo->oo_flags & NFS4_OO_CONFIRMED) + if (oo->oo_flags & NFS4_OO_CONFIRMED) { + up_write(&stp->st_rwsem); goto put_stateid; + } oo->oo_flags |= NFS4_OO_CONFIRMED; update_stateid(&stp->st_stid.sc_stateid); memcpy(&oc->oc_resp_stateid, &stp->st_stid.sc_stateid, sizeof(stateid_t)); + up_write(&stp->st_rwsem); dprintk("NFSD: %s: success, seqid=%d stateid=" STATEID_FMT "\n", __func__, oc->oc_seqid, STATEID_VAL(&stp->st_stid.sc_stateid)); @@ -4958,6 +5065,7 @@ memcpy(&od->od_stateid, &stp->st_stid.sc_stateid, sizeof(stateid_t)); status = nfs_ok; put_stateid: + up_write(&stp->st_rwsem); nfs4_put_stid(&stp->st_stid); out: nfsd4_bump_seqid(cstate, status); @@ -4967,20 +5075,23 @@ static void nfsd4_close_open_stateid(struct nfs4_ol_stateid *s) { struct nfs4_client *clp = s->st_stid.sc_client; + bool unhashed; LIST_HEAD(reaplist); s->st_stid.sc_type = NFS4_CLOSED_STID; spin_lock(&clp->cl_lock); - unhash_open_stateid(s, &reaplist); + unhashed = unhash_open_stateid(s, &reaplist); if (clp->cl_minorversion) { - put_ol_stateid_locked(s, &reaplist); + if (unhashed) + put_ol_stateid_locked(s, &reaplist); spin_unlock(&clp->cl_lock); free_ol_stateid_reaplist(&reaplist); } else { spin_unlock(&clp->cl_lock); free_ol_stateid_reaplist(&reaplist); - move_to_close_lru(s, clp->net); + if (unhashed) + move_to_close_lru(s, clp->net); } } @@ -5008,6 +5119,7 @@ goto out; update_stateid(&stp->st_stid.sc_stateid); memcpy(&close->cl_stateid, &stp->st_stid.sc_stateid, sizeof(stateid_t)); + up_write(&stp->st_rwsem); nfsd4_close_open_stateid(stp); @@ -5238,6 +5350,7 @@ stp->st_access_bmap = 0; stp->st_deny_bmap = open_stp->st_deny_bmap; stp->st_openstp = open_stp; + init_rwsem(&stp->st_rwsem); list_add(&stp->st_locks, &open_stp->st_locks); list_add(&stp->st_perstateowner, &lo->lo_owner.so_stateids); spin_lock(&fp->fi_lock); @@ -5406,6 +5519,7 @@ &open_stp, nn); if (status) goto out; + up_write(&open_stp->st_rwsem); open_sop = openowner(open_stp->st_stateowner); status = nfserr_bad_stateid; if (!same_clid(&open_sop->oo_owner.so_client->cl_clientid, @@ -5413,6 +5527,8 @@ goto out; status = lookup_or_create_lock_state(cstate, open_stp, lock, &lock_stp, &new); + if (status == nfs_ok) + down_write(&lock_stp->st_rwsem); } else { status = nfs4_preprocess_seqid_op(cstate, lock->lk_old_lock_seqid, @@ -5518,6 +5634,8 @@ seqid_mutating_err(ntohl(status))) lock_sop->lo_owner.so_seqid++; + up_write(&lock_stp->st_rwsem); + /* * If this is a new, never-before-used stateid, and we are * returning an error, then just go ahead and release it. @@ -5688,6 +5806,7 @@ fput: fput(filp); put_stateid: + up_write(&stp->st_rwsem); nfs4_put_stid(&stp->st_stid); out: nfsd4_bump_seqid(cstate, status); @@ -6019,7 +6138,7 @@ static u64 nfsd_foreach_client_lock(struct nfs4_client *clp, u64 max, struct list_head *collect, - void (*func)(struct nfs4_ol_stateid *)) + bool (*func)(struct nfs4_ol_stateid *)) { struct nfs4_openowner *oop; struct nfs4_ol_stateid *stp, *st_next; @@ -6033,9 +6152,9 @@ list_for_each_entry_safe(lst, lst_next, &stp->st_locks, st_locks) { if (func) { - func(lst); - nfsd_inject_add_lock_to_list(lst, - collect); + if (func(lst)) + nfsd_inject_add_lock_to_list(lst, + collect); } ++count; /* @@ -6305,7 +6424,7 @@ continue; atomic_inc(&clp->cl_refcount); - unhash_delegation_locked(dp); + WARN_ON(!unhash_delegation_locked(dp)); list_add(&dp->dl_recall_lru, victims); } ++count; @@ -6635,7 +6754,7 @@ spin_lock(&state_lock); list_for_each_safe(pos, next, &nn->del_recall_lru) { dp = list_entry (pos, struct nfs4_delegation, dl_recall_lru); - unhash_delegation_locked(dp); + WARN_ON(!unhash_delegation_locked(dp)); list_add(&dp->dl_recall_lru, &reaplist); } spin_unlock(&state_lock); --- linux-raspi2-4.2.0.orig/fs/nfsd/nfs4xdr.c +++ linux-raspi2-4.2.0/fs/nfsd/nfs4xdr.c @@ -2140,6 +2140,27 @@ return nfsd4_encode_user(xdr, rqstp, ace->who_uid); } +static inline __be32 +nfsd4_encode_layout_type(struct xdr_stream *xdr, enum pnfs_layouttype layout_type) +{ + __be32 *p; + + if (layout_type) { + p = xdr_reserve_space(xdr, 8); + if (!p) + return nfserr_resource; + *p++ = cpu_to_be32(1); + *p++ = cpu_to_be32(layout_type); + } else { + p = xdr_reserve_space(xdr, 4); + if (!p) + return nfserr_resource; + *p++ = cpu_to_be32(0); + } + + return 0; +} + #define WORD0_ABSENT_FS_ATTRS (FATTR4_WORD0_FS_LOCATIONS | FATTR4_WORD0_FSID | \ FATTR4_WORD0_RDATTR_ERROR) #define WORD1_ABSENT_FS_ATTRS FATTR4_WORD1_MOUNTED_ON_FILEID @@ -2688,20 +2709,16 @@ p = xdr_encode_hyper(p, stat.ino); } #ifdef CONFIG_NFSD_PNFS - if ((bmval1 & FATTR4_WORD1_FS_LAYOUT_TYPES) || - (bmval2 & FATTR4_WORD2_LAYOUT_TYPES)) { - if (exp->ex_layout_type) { - p = xdr_reserve_space(xdr, 8); - if (!p) - goto out_resource; - *p++ = cpu_to_be32(1); - *p++ = cpu_to_be32(exp->ex_layout_type); - } else { - p = xdr_reserve_space(xdr, 4); - if (!p) - goto out_resource; - *p++ = cpu_to_be32(0); - } + if (bmval1 & FATTR4_WORD1_FS_LAYOUT_TYPES) { + status = nfsd4_encode_layout_type(xdr, exp->ex_layout_type); + if (status) + goto out; + } + + if (bmval2 & FATTR4_WORD2_LAYOUT_TYPES) { + status = nfsd4_encode_layout_type(xdr, exp->ex_layout_type); + if (status) + goto out; } if (bmval2 & FATTR4_WORD2_LAYOUT_BLKSIZE) { --- linux-raspi2-4.2.0.orig/fs/nfsd/state.h +++ linux-raspi2-4.2.0/fs/nfsd/state.h @@ -534,15 +534,16 @@ * Better suggestions welcome. */ struct nfs4_ol_stateid { - struct nfs4_stid st_stid; /* must be first field */ - struct list_head st_perfile; - struct list_head st_perstateowner; - struct list_head st_locks; - struct nfs4_stateowner * st_stateowner; - struct nfs4_clnt_odstate * st_clnt_odstate; - unsigned char st_access_bmap; - unsigned char st_deny_bmap; - struct nfs4_ol_stateid * st_openstp; + struct nfs4_stid st_stid; + struct list_head st_perfile; + struct list_head st_perstateowner; + struct list_head st_locks; + struct nfs4_stateowner *st_stateowner; + struct nfs4_clnt_odstate *st_clnt_odstate; + unsigned char st_access_bmap; + unsigned char st_deny_bmap; + struct nfs4_ol_stateid *st_openstp; + struct rw_semaphore st_rwsem; }; static inline struct nfs4_ol_stateid *openlockstateid(struct nfs4_stid *s) --- linux-raspi2-4.2.0.orig/fs/notify/group.c +++ linux-raspi2-4.2.0/fs/notify/group.c @@ -22,6 +22,7 @@ #include #include #include +#include #include #include "fsnotify.h" @@ -72,6 +73,7 @@ { atomic_inc(&group->refcnt); } +EXPORT_SYMBOL(fsnotify_get_group); /* * Drop a reference to a group. Free it if it's through. @@ -81,6 +83,7 @@ if (atomic_dec_and_test(&group->refcnt)) fsnotify_final_destroy_group(group); } +EXPORT_SYMBOL(fsnotify_put_group); /* * Create a new fsnotify_group and hold a reference for the group returned. @@ -109,6 +112,7 @@ return group; } +EXPORT_SYMBOL(fsnotify_alloc_group); int fsnotify_fasync(int fd, struct file *file, int on) { --- linux-raspi2-4.2.0.orig/fs/notify/mark.c +++ linux-raspi2-4.2.0/fs/notify/mark.c @@ -109,6 +109,7 @@ mark->free_mark(mark); } } +EXPORT_SYMBOL(fsnotify_put_mark); /* Calculate mask of events for a list of marks */ u32 fsnotify_recalc_mask(struct hlist_head *head) @@ -202,6 +203,7 @@ fsnotify_destroy_mark_locked(mark, group); mutex_unlock(&group->mark_mutex); } +EXPORT_SYMBOL(fsnotify_destroy_mark); /* * Destroy all marks in the given list. The marks must be already detached from @@ -386,6 +388,7 @@ mutex_unlock(&group->mark_mutex); return ret; } +EXPORT_SYMBOL(fsnotify_add_mark); /* * Given a list of marks, find the mark associated with given group. If found @@ -475,6 +478,7 @@ atomic_set(&mark->refcnt, 1); mark->free_mark = free_mark; } +EXPORT_SYMBOL(fsnotify_init_mark); static int fsnotify_mark_destroy(void *ignored) { --- linux-raspi2-4.2.0.orig/fs/ocfs2/dlm/dlmmaster.c +++ linux-raspi2-4.2.0/fs/ocfs2/dlm/dlmmaster.c @@ -1439,6 +1439,7 @@ int found, ret; int set_maybe; int dispatch_assert = 0; + int dispatched = 0; if (!dlm_grab(dlm)) return DLM_MASTER_RESP_NO; @@ -1658,15 +1659,18 @@ mlog(ML_ERROR, "failed to dispatch assert master work\n"); response = DLM_MASTER_RESP_ERROR; dlm_lockres_put(res); - } else + } else { + dispatched = 1; __dlm_lockres_grab_inflight_worker(dlm, res); + } spin_unlock(&res->spinlock); } else { if (res) dlm_lockres_put(res); } - dlm_put(dlm); + if (!dispatched) + dlm_put(dlm); return response; } @@ -2090,7 +2094,6 @@ /* queue up work for dlm_assert_master_worker */ - dlm_grab(dlm); /* get an extra ref for the work item */ dlm_init_work_item(dlm, item, dlm_assert_master_worker, NULL); item->u.am.lockres = res; /* already have a ref */ /* can optionally ignore node numbers higher than this node */ --- linux-raspi2-4.2.0.orig/fs/ocfs2/dlm/dlmrecovery.c +++ linux-raspi2-4.2.0/fs/ocfs2/dlm/dlmrecovery.c @@ -1694,6 +1694,7 @@ unsigned int hash; int master = DLM_LOCK_RES_OWNER_UNKNOWN; u32 flags = DLM_ASSERT_MASTER_REQUERY; + int dispatched = 0; if (!dlm_grab(dlm)) { /* since the domain has gone away on this @@ -1719,8 +1720,10 @@ dlm_put(dlm); /* sender will take care of this and retry */ return ret; - } else + } else { + dispatched = 1; __dlm_lockres_grab_inflight_worker(dlm, res); + } spin_unlock(&res->spinlock); } else { /* put.. incase we are not the master */ @@ -1730,7 +1733,8 @@ } spin_unlock(&dlm->spinlock); - dlm_put(dlm); + if (!dispatched) + dlm_put(dlm); return master; } --- linux-raspi2-4.2.0.orig/fs/ocfs2/file.c +++ linux-raspi2-4.2.0/fs/ocfs2/file.c @@ -2372,6 +2372,20 @@ /* buffered aio wouldn't have proper lock coverage today */ BUG_ON(written == -EIOCBQUEUED && !(iocb->ki_flags & IOCB_DIRECT)); + /* + * deep in g_f_a_w_n()->ocfs2_direct_IO we pass in a ocfs2_dio_end_io + * function pointer which is called when o_direct io completes so that + * it can unlock our rw lock. + * Unfortunately there are error cases which call end_io and others + * that don't. so we don't have to unlock the rw_lock if either an + * async dio is going to do it in the future or an end_io after an + * error has already done it. + */ + if ((written == -EIOCBQUEUED) || (!ocfs2_iocb_is_rw_locked(iocb))) { + rw_level = -1; + unaligned_dio = 0; + } + if (unlikely(written <= 0)) goto no_sync; @@ -2396,20 +2410,6 @@ } no_sync: - /* - * deep in g_f_a_w_n()->ocfs2_direct_IO we pass in a ocfs2_dio_end_io - * function pointer which is called when o_direct io completes so that - * it can unlock our rw lock. - * Unfortunately there are error cases which call end_io and others - * that don't. so we don't have to unlock the rw_lock if either an - * async dio is going to do it in the future or an end_io after an - * error has already done it. - */ - if ((ret == -EIOCBQUEUED) || (!ocfs2_iocb_is_rw_locked(iocb))) { - rw_level = -1; - unaligned_dio = 0; - } - if (unaligned_dio) { ocfs2_iocb_clear_unaligned_aio(iocb); mutex_unlock(&OCFS2_I(inode)->ip_unaligned_aio); --- linux-raspi2-4.2.0.orig/fs/ocfs2/namei.c +++ linux-raspi2-4.2.0/fs/ocfs2/namei.c @@ -365,6 +365,8 @@ mlog_errno(status); goto leave; } + /* update inode->i_mode after mask with "umask". */ + inode->i_mode = mode; handle = ocfs2_start_trans(osb, ocfs2_mknod_credits(osb->sb, S_ISDIR(mode), --- linux-raspi2-4.2.0.orig/fs/ocfs2/super.c +++ linux-raspi2-4.2.0/fs/ocfs2/super.c @@ -1550,8 +1550,8 @@ seq_printf(s, ",localflocks,"); if (osb->osb_cluster_stack[0]) - seq_printf(s, ",cluster_stack=%.*s", OCFS2_STACK_LABEL_LEN, - osb->osb_cluster_stack); + seq_show_option_n(s, "cluster_stack", osb->osb_cluster_stack, + OCFS2_STACK_LABEL_LEN); if (opts & OCFS2_MOUNT_USRQUOTA) seq_printf(s, ",usrquota"); if (opts & OCFS2_MOUNT_GRPQUOTA) --- linux-raspi2-4.2.0.orig/fs/open.c +++ linux-raspi2-4.2.0/fs/open.c @@ -34,6 +34,9 @@ #include "internal.h" +#define CREATE_TRACE_POINTS +#include + int do_truncate(struct dentry *dentry, loff_t length, unsigned int time_attrs, struct file *filp) { @@ -64,6 +67,7 @@ mutex_unlock(&dentry->d_inode->i_mutex); return ret; } +EXPORT_SYMBOL(do_truncate); long vfs_truncate(struct path *path, loff_t length) { @@ -678,6 +682,7 @@ } return 0; } +EXPORT_SYMBOL(open_check_o_direct); static int do_dentry_open(struct file *f, struct inode *inode, @@ -1029,6 +1034,7 @@ } else { fsnotify_open(f); fd_install(fd, f); + trace_do_sys_open(tmp->name, flags, mode); } } putname(tmp); --- linux-raspi2-4.2.0.orig/fs/overlayfs/Kconfig +++ linux-raspi2-4.2.0/fs/overlayfs/Kconfig @@ -8,3 +8,10 @@ merged with the 'upper' object. For more information see Documentation/filesystems/overlayfs.txt + +config OVERLAY_FS_V1 + bool "Overlayfs filesystem (V1) format support" + help + Support the older whiteout format overlayfs filesystems via + the overlay module. This is needed to support legacy kernels + built using the original overlayfs patch set. --- linux-raspi2-4.2.0.orig/fs/overlayfs/copy_up.c +++ linux-raspi2-4.2.0/fs/overlayfs/copy_up.c @@ -81,11 +81,11 @@ if (len == 0) return 0; - old_file = ovl_path_open(old, O_RDONLY); + old_file = ovl_path_open(old, O_LARGEFILE | O_RDONLY); if (IS_ERR(old_file)) return PTR_ERR(old_file); - new_file = ovl_path_open(new, O_WRONLY); + new_file = ovl_path_open(new, O_LARGEFILE | O_WRONLY); if (IS_ERR(new_file)) { error = PTR_ERR(new_file); goto out_fput; @@ -267,7 +267,7 @@ out_cleanup: ovl_cleanup(wdir, newdentry); - goto out; + goto out2; } /* @@ -302,9 +302,17 @@ if (WARN_ON(!workdir)) return -EROFS; + err = ovl_dentry_root_may(dentry, lowerpath, MAY_READ); + if (err) + return err; + ovl_path_upper(parent, &parentpath); upperdir = parentpath.dentry; + err = ovl_dentry_root_may(dentry, &parentpath, MAY_WRITE); + if (err) + return err; + err = vfs_getattr(&parentpath, &pstat); if (err) return err; --- linux-raspi2-4.2.0.orig/fs/overlayfs/dir.c +++ linux-raspi2-4.2.0/fs/overlayfs/dir.c @@ -48,6 +48,34 @@ return temp; } +#ifdef CONFIG_OVERLAY_FS_V1 +static const char *ovl_whiteout_symlink = "(overlay-whiteout)"; +int ovl_do_whiteout_v1(struct inode *workdir, + struct dentry *dentry) +{ + int err; + + err = vfs_symlink(workdir, dentry, ovl_whiteout_symlink); + if (err) + return err; + + err = vfs_setxattr(dentry, ovl_whiteout_xattr, "y", 1, 0); + if (err) + vfs_unlink(workdir, dentry, NULL); + + if (err) { + /* + * There's no way to recover from failure to whiteout. + * What should we do? Log a big fat error and... ? + */ + pr_err("overlayfs: ERROR - failed to whiteout '%s'\n", + dentry->d_name.name); + } + + return err; +} +#endif + /* caller holds i_mutex on workdir */ static struct dentry *ovl_whiteout(struct dentry *workdir, struct dentry *dentry) @@ -60,7 +88,7 @@ if (IS_ERR(whiteout)) return whiteout; - err = ovl_do_whiteout(wdir, whiteout); + err = ovl_do_whiteout(wdir, whiteout, dentry); if (err) { dput(whiteout); whiteout = ERR_PTR(err); @@ -699,6 +727,51 @@ return ovl_do_remove(dentry, true); } +/* + * ovl_downgrade_whiteout -- build a symlink whiteout and install it + * over the existing chardev whiteout. + */ +static void ovl_downgrade_whiteout(struct dentry *old_upperdir, + struct dentry *old) +{ + struct dentry *workdir = ovl_workdir(old); + struct dentry *legacy_whiteout = NULL; + struct dentry *whtdentry; + int err; + + err = ovl_lock_rename_workdir(workdir, old_upperdir); + if (err) + goto out; + + whtdentry = lookup_one_len(old->d_name.name, old_upperdir, + old->d_name.len); + if (IS_ERR(whtdentry)) { + err = PTR_ERR(whtdentry); + goto out_unlock_workdir; + } + + legacy_whiteout = ovl_whiteout(workdir, old); + if (IS_ERR(legacy_whiteout)) { + err = PTR_ERR(legacy_whiteout); + goto out_dput; + } + + err = ovl_do_rename(workdir->d_inode, legacy_whiteout, + old_upperdir->d_inode, whtdentry, 0); + if (err) + ovl_cleanup(workdir->d_inode, legacy_whiteout); + +out_dput: + dput(whtdentry); + dput(legacy_whiteout); +out_unlock_workdir: + unlock_rename(workdir, old_upperdir); +out: + if (err) + pr_err("overlayfs: dowgrade of '%pd2' whiteout failed (%i)\n", + old, err); +} + static int ovl_rename2(struct inode *olddir, struct dentry *old, struct inode *newdir, struct dentry *new, unsigned int flags) @@ -919,6 +992,9 @@ dput(newdentry); out_unlock: unlock_rename(new_upperdir, old_upperdir); + + if (!err && ovl_config_legacy(old) && flags & RENAME_WHITEOUT) + ovl_downgrade_whiteout(old_upperdir, old); out_revert_creds: if (old_opaque || new_opaque) { revert_creds(old_cred); --- linux-raspi2-4.2.0.orig/fs/overlayfs/inode.c +++ linux-raspi2-4.2.0/fs/overlayfs/inode.c @@ -49,13 +49,13 @@ if (err) goto out; - upperdentry = ovl_dentry_upper(dentry); - if (upperdentry) { + err = ovl_copy_up(dentry); + if (!err) { + upperdentry = ovl_dentry_upper(dentry); + mutex_lock(&upperdentry->d_inode->i_mutex); err = notify_change(upperdentry, attr, NULL); mutex_unlock(&upperdentry->d_inode->i_mutex); - } else { - err = ovl_copy_up_last(dentry, attr, false); } ovl_drop_write(dentry); out: @@ -363,6 +363,9 @@ ovl_path_upper(dentry, &realpath); } + if (realpath.dentry->d_flags & DCACHE_OP_SELECT_INODE) + return realpath.dentry->d_op->d_select_inode(realpath.dentry, file_flags); + return d_backing_inode(realpath.dentry); } --- linux-raspi2-4.2.0.orig/fs/overlayfs/overlayfs.h +++ linux-raspi2-4.2.0/fs/overlayfs/overlayfs.h @@ -27,6 +27,8 @@ #define OVL_XATTR_PRE_LEN 16 #define OVL_XATTR_OPAQUE OVL_XATTR_PRE_NAME"opaque" +extern const char *ovl_whiteout_xattr; /* XXX: should be ^^ */ + static inline int ovl_do_rmdir(struct inode *dir, struct dentry *dentry) { int err = vfs_rmdir(dir, dentry); @@ -124,12 +126,28 @@ return err; } -static inline int ovl_do_whiteout(struct inode *dir, struct dentry *dentry) +#ifdef CONFIG_OVERLAY_FS_V1 +extern int ovl_config_legacy(struct dentry *dentry); +#else +#define ovl_config_legacy(x) (0) +#endif + +int ovl_do_whiteout_v1(struct inode *dir, struct dentry *dentry); + +static inline int ovl_do_whiteout_v2(struct inode *dir, struct dentry *dentry) { int err = vfs_whiteout(dir, dentry); pr_debug("whiteout(%pd2) = %i\n", dentry, err); return err; } +static inline int ovl_do_whiteout(struct inode *dir, struct dentry *dentry, + struct dentry *ovlentry) +{ + if (ovl_config_legacy(ovlentry)) + return ovl_do_whiteout_v1(dir, dentry); + + return ovl_do_whiteout_v2(dir, dentry); +} enum ovl_path_type ovl_path_type(struct dentry *dentry); u64 ovl_dentry_version_get(struct dentry *dentry); @@ -149,7 +167,7 @@ void ovl_drop_write(struct dentry *dentry); bool ovl_dentry_is_opaque(struct dentry *dentry); void ovl_dentry_set_opaque(struct dentry *dentry, bool opaque); -bool ovl_is_whiteout(struct dentry *dentry); +bool ovl_is_whiteout(struct dentry *dentry, int is_legacy); void ovl_dentry_update(struct dentry *dentry, struct dentry *upperdentry); struct dentry *ovl_lookup(struct inode *dir, struct dentry *dentry, unsigned int flags); @@ -157,6 +175,7 @@ struct dentry *ovl_upper_create(struct dentry *upperdir, struct dentry *dentry, struct kstat *stat, const char *link); +int ovl_dentry_root_may(struct dentry *dentry, struct path *realpath, int mode); /* readdir.c */ extern const struct file_operations ovl_dir_operations; --- linux-raspi2-4.2.0.orig/fs/overlayfs/readdir.c +++ linux-raspi2-4.2.0/fs/overlayfs/readdir.c @@ -14,6 +14,7 @@ #include #include #include +#include #include #include "overlayfs.h" @@ -43,6 +44,7 @@ struct ovl_cache_entry *first_maybe_whiteout; int count; int err; + int is_legacy; }; struct ovl_dir_file { @@ -98,7 +100,7 @@ p->ino = ino; p->is_whiteout = false; - if (d_type == DT_CHR) { + if ((d_type == DT_CHR && !rdd->is_legacy) || (d_type == DT_LNK && rdd->is_legacy)) { p->next_maybe_whiteout = rdd->first_maybe_whiteout; rdd->first_maybe_whiteout = p; } @@ -224,7 +226,7 @@ rdd->first_maybe_whiteout = p->next_maybe_whiteout; dentry = lookup_one_len(p->name, dir, p->len); if (!IS_ERR(dentry)) { - p->is_whiteout = ovl_is_whiteout(dentry); + p->is_whiteout = ovl_is_whiteout(dentry, rdd->is_legacy); dput(dentry); } } @@ -290,12 +292,17 @@ .list = list, .root = RB_ROOT, .is_merge = false, + .is_legacy = ovl_config_legacy(dentry), }; int idx, next; for (idx = 0; idx != -1; idx = next) { next = ovl_path_next(idx, dentry, &realpath); + err = ovl_dentry_root_may(dentry, &realpath, MAY_READ); + if (err) + break; + if (next != -1) { err = ovl_dir_read(&realpath, &rdd); if (err) @@ -369,8 +376,13 @@ if (!ctx->pos) ovl_dir_reset(file); - if (od->is_real) + if (od->is_real) { + int res = ovl_dentry_root_may(dentry, &(od->realfile->f_path), MAY_READ); + if (res) + return res; + return iterate_dir(od->realfile, ctx); + } if (!od->cache) { struct ovl_dir_cache *cache; --- linux-raspi2-4.2.0.orig/fs/overlayfs/super.c +++ linux-raspi2-4.2.0/fs/overlayfs/super.c @@ -39,8 +39,10 @@ struct vfsmount **lower_mnt; struct dentry *workdir; long lower_namelen; + int legacy; /* pathnames of lower and upper dirs, for show_options */ struct ovl_config config; + struct cred *mounter_creds; }; struct ovl_dir_cache; @@ -236,13 +238,72 @@ return oe->version; } -bool ovl_is_whiteout(struct dentry *dentry) +int ovl_dentry_root_may(struct dentry *dentry, struct path *realpath, int mode) +{ + const struct cred *old_cred; + int err = 0; + struct ovl_fs *ofs = dentry->d_sb->s_fs_info; + + old_cred = override_creds(ofs->mounter_creds); + + if (inode_permission(realpath->dentry->d_inode, mode)) + err = -EACCES; + + revert_creds(old_cred); + + return err; +} + +#ifdef CONFIG_OVERLAY_FS_V1 +int ovl_config_legacy(struct dentry *dentry) +{ + struct super_block *sb = dentry->d_sb; + struct ovl_fs *ufs = sb->s_fs_info; + + return ufs->legacy; +} + +const char *ovl_whiteout_xattr = "trusted.overlay.whiteout"; + +bool ovl_is_whiteout_v1(struct dentry *dentry) +{ + int res; + char val; + + if (!dentry) + return false; + if (!dentry->d_inode) + return false; + if (!S_ISLNK(dentry->d_inode->i_mode)) + return false; + if (!dentry->d_inode->i_op->getxattr) + return false; + + res = dentry->d_inode->i_op->getxattr(dentry, ovl_whiteout_xattr, &val, 1); + if (res == 1 && val == 'y') + return true; + + return false; +} +#else +#define ovl_is_whiteout_v1(x) (0) +#endif + +bool ovl_is_whiteout_v2(struct dentry *dentry) { struct inode *inode = dentry->d_inode; return inode && IS_WHITEOUT(inode); } +bool ovl_is_whiteout(struct dentry *dentry, int is_legacy) +{ + if (is_legacy) + return ovl_is_whiteout_v2(dentry) || ovl_is_whiteout_v1(dentry); + + return ovl_is_whiteout_v2(dentry); +} + static bool ovl_is_opaquedir(struct dentry *dentry) { int res; @@ -407,6 +468,7 @@ struct dentry *this, *prev = NULL; unsigned int i; int err; + int is_legacy = ovl_config_legacy(dentry); upperdir = ovl_upperdentry_dereference(poe); if (upperdir) { @@ -421,7 +483,7 @@ err = -EREMOTE; goto out; } - if (ovl_is_whiteout(this)) { + if (ovl_is_whiteout(this, is_legacy)) { dput(this); this = NULL; upperopaque = true; @@ -455,7 +517,7 @@ } if (!this) continue; - if (ovl_is_whiteout(this)) { + if (ovl_is_whiteout(this, is_legacy)) { dput(this); break; } @@ -540,10 +602,12 @@ struct ovl_fs *ufs = sb->s_fs_info; unsigned i; + put_cred(ufs->mounter_creds); dput(ufs->workdir); mntput(ufs->upper_mnt); for (i = 0; i < ufs->numlower; i++) mntput(ufs->lower_mnt[i]); + kfree(ufs->lower_mnt); kfree(ufs->config.lowerdir); kfree(ufs->config.upperdir); @@ -588,10 +652,10 @@ struct super_block *sb = dentry->d_sb; struct ovl_fs *ufs = sb->s_fs_info; - seq_printf(m, ",lowerdir=%s", ufs->config.lowerdir); + seq_show_option(m, "lowerdir", ufs->config.lowerdir); if (ufs->config.upperdir) { - seq_printf(m, ",upperdir=%s", ufs->config.upperdir); - seq_printf(m, ",workdir=%s", ufs->config.workdir); + seq_show_option(m, "upperdir", ufs->config.upperdir); + seq_show_option(m, "workdir", ufs->config.workdir); } return 0; } @@ -1037,6 +1101,11 @@ if (!root_dentry) goto out_free_oe; + /* Record the mounter. */ + ufs->mounter_creds = prepare_creds(); + if (!ufs->mounter_creds) + goto out_put_root; + mntput(upperpath.mnt); for (i = 0; i < numlower; i++) mntput(stack[i].mnt); @@ -1048,6 +1117,7 @@ oe->lowerstack[i].dentry = stack[i].dentry; oe->lowerstack[i].mnt = ufs->lower_mnt[i]; } + kfree(stack); root_dentry->d_fsdata = oe; @@ -1058,6 +1128,8 @@ return 0; +out_put_root: + dput(root_dentry); out_free_oe: kfree(oe); out_put_lower_mnt: @@ -1097,17 +1169,63 @@ .name = "overlay", .mount = ovl_mount, .kill_sb = kill_anon_super, + .fs_flags = FS_USERNS_MOUNT, }; MODULE_ALIAS_FS("overlay"); +#ifdef CONFIG_OVERLAY_FS_V1 +static int ovl_v1_fill_super(struct super_block *sb, void *data, int silent) +{ + int ret; + struct ovl_fs *ufs; + + ret = ovl_fill_super(sb, data, silent); + if (ret) + return ret; + + /* Mark this as a overlayfs format. */ + ufs = sb->s_fs_info; + ufs->legacy = 1; + + return ret; +} + +static struct dentry *ovl_mount_v1(struct file_system_type *fs_type, int flags, + const char *dev_name, void *raw_data) +{ + return mount_nodev(fs_type, flags, raw_data, ovl_v1_fill_super); +} + +static struct file_system_type ovl_v1_fs_type = { + .owner = THIS_MODULE, + .name = "overlayfs", + .mount = ovl_mount_v1, + .kill_sb = kill_anon_super, + .fs_flags = FS_USERNS_MOUNT, /* XXX */ +}; +MODULE_ALIAS_FS("overlayfs"); +MODULE_ALIAS("overlayfs"); +#endif + static int __init ovl_init(void) { + int ret; + + if (IS_ENABLED(CONFIG_OVERLAY_FS_V1)) { + ret = register_filesystem(&ovl_v1_fs_type); + if (ret) + return ret; + } + return register_filesystem(&ovl_fs_type); } static void __exit ovl_exit(void) { unregister_filesystem(&ovl_fs_type); + + if (IS_ENABLED(CONFIG_OVERLAY_FS_V1)) + unregister_filesystem(&ovl_v1_fs_type); } module_init(ovl_init); --- linux-raspi2-4.2.0.orig/fs/pipe.c +++ linux-raspi2-4.2.0/fs/pipe.c @@ -366,18 +366,17 @@ int offset = buf->offset + buf->len; if (ops->can_merge && offset + chars <= PAGE_SIZE) { - int error = ops->confirm(pipe, buf); - if (error) + ret = ops->confirm(pipe, buf); + if (ret) goto out; ret = copy_page_from_iter(buf->page, offset, chars, from); if (unlikely(ret < chars)) { - error = -EFAULT; + ret = -EFAULT; goto out; } do_wakeup = 1; - buf->len += chars; - ret = chars; + buf->len += ret; if (!iov_iter_count(from)) goto out; } --- linux-raspi2-4.2.0.orig/fs/proc/Makefile +++ linux-raspi2-4.2.0/fs/proc/Makefile @@ -30,3 +30,4 @@ proc-$(CONFIG_PROC_VMCORE) += vmcore.o proc-$(CONFIG_PRINTK) += kmsg.o proc-$(CONFIG_PROC_PAGE_MONITOR) += page.o +proc-y += version_signature.o --- linux-raspi2-4.2.0.orig/fs/proc/array.c +++ linux-raspi2-4.2.0/fs/proc/array.c @@ -372,7 +372,7 @@ static int do_task_stat(struct seq_file *m, struct pid_namespace *ns, struct pid *pid, struct task_struct *task, int whole) { - unsigned long vsize, eip, esp, wchan = ~0UL; + unsigned long vsize, eip, esp, wchan = 0; int priority, nice; int tty_pgrp = -1, tty_nr = 0; sigset_t sigign, sigcatch; @@ -504,7 +504,19 @@ seq_put_decimal_ull(m, ' ', task->blocked.sig[0] & 0x7fffffffUL); seq_put_decimal_ull(m, ' ', sigign.sig[0] & 0x7fffffffUL); seq_put_decimal_ull(m, ' ', sigcatch.sig[0] & 0x7fffffffUL); - seq_put_decimal_ull(m, ' ', wchan); + + /* + * We used to output the absolute kernel address, but that's an + * information leak - so instead we show a 0/1 flag here, to signal + * to user-space whether there's a wchan field in /proc/PID/wchan. + * + * This works with older implementations of procps as well. + */ + if (wchan) + seq_puts(m, " 1"); + else + seq_puts(m, " 0"); + seq_put_decimal_ull(m, ' ', 0); seq_put_decimal_ull(m, ' ', 0); seq_put_decimal_ll(m, ' ', task->exit_signal); --- linux-raspi2-4.2.0.orig/fs/proc/base.c +++ linux-raspi2-4.2.0/fs/proc/base.c @@ -430,13 +430,10 @@ wchan = get_wchan(task); - if (lookup_symbol_name(wchan, symname) < 0) { - if (!ptrace_may_access(task, PTRACE_MODE_READ)) - return 0; - seq_printf(m, "%lu", wchan); - } else { + if (wchan && ptrace_may_access(task, PTRACE_MODE_READ) && !lookup_symbol_name(wchan, symname)) seq_printf(m, "%s", symname); - } + else + seq_putc(m, '0'); return 0; } @@ -1939,7 +1936,7 @@ down_read(&mm->mmap_sem); 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; } --- linux-raspi2-4.2.0.orig/fs/proc/fd.c +++ linux-raspi2-4.2.0/fs/proc/fd.c @@ -291,11 +291,19 @@ */ int proc_fd_permission(struct inode *inode, int mask) { - int rv = generic_permission(inode, mask); + struct task_struct *p; + int rv; + + rv = generic_permission(inode, mask); if (rv == 0) - return 0; - if (task_tgid(current) == proc_pid(inode)) + return rv; + + rcu_read_lock(); + p = pid_task(proc_pid(inode), PIDTYPE_PID); + if (p && same_thread_group(p, current)) rv = 0; + rcu_read_unlock(); + return rv; } --- linux-raspi2-4.2.0.orig/fs/proc/nommu.c +++ linux-raspi2-4.2.0/fs/proc/nommu.c @@ -45,7 +45,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-raspi2-4.2.0.orig/fs/proc/task_mmu.c +++ linux-raspi2-4.2.0/fs/proc/task_mmu.c @@ -279,7 +279,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; @@ -1479,7 +1482,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 mm_walk walk = { .hugetlb_entry = gather_hugetlb_stats, --- linux-raspi2-4.2.0.orig/fs/proc/task_nommu.c +++ linux-raspi2-4.2.0/fs/proc/task_nommu.c @@ -160,7 +160,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-raspi2-4.2.0.orig/fs/proc/version_signature.c +++ linux-raspi2-4.2.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 file_operations version_signature_proc_fops = { + .open = version_signature_proc_open, + .read = seq_read, + .llseek = seq_lseek, + .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-raspi2-4.2.0.orig/fs/read_write.c +++ linux-raspi2-4.2.0/fs/read_write.c @@ -494,6 +494,30 @@ } EXPORT_SYMBOL(__vfs_write); +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); +} +EXPORT_SYMBOL(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); +} +EXPORT_SYMBOL(vfs_writef); + ssize_t __kernel_write(struct file *file, const char *buf, size_t count, loff_t *pos) { mm_segment_t old_fs; --- linux-raspi2-4.2.0.orig/fs/reiserfs/super.c +++ linux-raspi2-4.2.0/fs/reiserfs/super.c @@ -714,18 +714,20 @@ seq_puts(seq, ",acl"); if (REISERFS_SB(s)->s_jdev) - seq_printf(seq, ",jdev=%s", REISERFS_SB(s)->s_jdev); + seq_show_option(seq, "jdev", REISERFS_SB(s)->s_jdev); if (journal->j_max_commit_age != journal->j_default_max_commit_age) seq_printf(seq, ",commit=%d", journal->j_max_commit_age); #ifdef CONFIG_QUOTA if (REISERFS_SB(s)->s_qf_names[USRQUOTA]) - seq_printf(seq, ",usrjquota=%s", REISERFS_SB(s)->s_qf_names[USRQUOTA]); + seq_show_option(seq, "usrjquota", + REISERFS_SB(s)->s_qf_names[USRQUOTA]); else if (opts & (1 << REISERFS_USRQUOTA)) seq_puts(seq, ",usrquota"); if (REISERFS_SB(s)->s_qf_names[GRPQUOTA]) - seq_printf(seq, ",grpjquota=%s", REISERFS_SB(s)->s_qf_names[GRPQUOTA]); + seq_show_option(seq, "grpjquota", + REISERFS_SB(s)->s_qf_names[GRPQUOTA]); else if (opts & (1 << REISERFS_GRPQUOTA)) seq_puts(seq, ",grpquota"); if (REISERFS_SB(s)->s_jquota_fmt) { --- linux-raspi2-4.2.0.orig/fs/seq_file.c +++ linux-raspi2-4.2.0/fs/seq_file.c @@ -24,12 +24,17 @@ static void *seq_buf_alloc(unsigned long size) { void *buf; + gfp_t gfp = GFP_KERNEL; /* - * __GFP_NORETRY to avoid oom-killings with high-order allocations - - * it's better to fall back to vmalloc() than to kill things. + * For high order allocations, use __GFP_NORETRY to avoid oom-killing - + * it's better to fall back to vmalloc() than to kill things. For small + * allocations, just use GFP_KERNEL which will oom kill, thus no need + * for vmalloc fallback. */ - buf = kmalloc(size, GFP_KERNEL | __GFP_NORETRY | __GFP_NOWARN); + if (size > PAGE_SIZE) + gfp |= __GFP_NORETRY | __GFP_NOWARN; + buf = kmalloc(size, gfp); if (!buf && size > PAGE_SIZE) buf = vmalloc(size); return buf; --- linux-raspi2-4.2.0.orig/fs/splice.c +++ linux-raspi2-4.2.0/fs/splice.c @@ -1102,8 +1102,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) { ssize_t (*splice_write)(struct pipe_inode_info *, struct file *, loff_t *, size_t, unsigned int); @@ -1115,13 +1115,14 @@ return splice_write(pipe, out, ppos, len, flags); } +EXPORT_SYMBOL(do_splice_from); /* * 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) { ssize_t (*splice_read)(struct file *, loff_t *, struct pipe_inode_info *, size_t, unsigned int); @@ -1141,6 +1142,7 @@ return splice_read(in, ppos, pipe, len, flags); } +EXPORT_SYMBOL(do_splice_to); /** * splice_direct_to_actor - splices data directly between two non-pipes --- linux-raspi2-4.2.0.orig/fs/tracefs/inode.c +++ linux-raspi2-4.2.0/fs/tracefs/inode.c @@ -340,8 +340,12 @@ dput(dentry); dentry = ERR_PTR(-EEXIST); } - if (IS_ERR(dentry)) + + if (IS_ERR(dentry)) { mutex_unlock(&parent->d_inode->i_mutex); + simple_release_fs(&tracefs_mount, &tracefs_mount_count); + } + return dentry; } --- linux-raspi2-4.2.0.orig/fs/ubifs/xattr.c +++ linux-raspi2-4.2.0/fs/ubifs/xattr.c @@ -652,11 +652,8 @@ { int err; - mutex_lock(&inode->i_mutex); err = security_inode_init_security(inode, dentry, qstr, &init_xattrs, 0); - mutex_unlock(&inode->i_mutex); - if (err) { struct ubifs_info *c = dentry->i_sb->s_fs_info; ubifs_err(c, "cannot initialize security for inode %lu, error %d", --- linux-raspi2-4.2.0.orig/fs/xattr.c +++ linux-raspi2-4.2.0/fs/xattr.c @@ -207,6 +207,7 @@ *xattr_value = value; return error; } +EXPORT_SYMBOL(vfs_getxattr_alloc); /* Compare an extended attribute value with the given value */ int vfs_xattr_cmp(struct dentry *dentry, const char *xattr_name, --- linux-raspi2-4.2.0.orig/fs/xfs/libxfs/xfs_da_format.h +++ linux-raspi2-4.2.0/fs/xfs/libxfs/xfs_da_format.h @@ -680,8 +680,15 @@ typedef struct xfs_attr_leafblock { xfs_attr_leaf_hdr_t hdr; /* constant-structure header block */ xfs_attr_leaf_entry_t entries[1]; /* sorted on key, not name */ - xfs_attr_leaf_name_local_t namelist; /* grows from bottom of buf */ - xfs_attr_leaf_name_remote_t valuelist; /* grows from bottom of buf */ + /* + * The rest of the block contains the following structures after the + * leaf entries, growing from the bottom up. The variables are never + * referenced and definining them can actually make gcc optimize away + * accesses to the 'entries' array above index 0 so don't do that. + * + * xfs_attr_leaf_name_local_t namelist; + * xfs_attr_leaf_name_remote_t valuelist; + */ } xfs_attr_leafblock_t; /* --- linux-raspi2-4.2.0.orig/fs/xfs/libxfs/xfs_dir2_data.c +++ linux-raspi2-4.2.0/fs/xfs/libxfs/xfs_dir2_data.c @@ -252,7 +252,8 @@ return; case cpu_to_be32(XFS_DIR2_DATA_MAGIC): case cpu_to_be32(XFS_DIR3_DATA_MAGIC): - xfs_dir3_data_verify(bp); + bp->b_ops = &xfs_dir3_data_buf_ops; + bp->b_ops->verify_read(bp); return; default: xfs_buf_ioerror(bp, -EFSCORRUPTED); --- linux-raspi2-4.2.0.orig/fs/xfs/libxfs/xfs_dir2_node.c +++ linux-raspi2-4.2.0/fs/xfs/libxfs/xfs_dir2_node.c @@ -2132,6 +2132,7 @@ int error; /* error return value */ int i; /* btree level */ xfs_ino_t inum; /* new inode number */ + int ftype; /* new file type */ xfs_dir2_leaf_t *leaf; /* leaf structure */ xfs_dir2_leaf_entry_t *lep; /* leaf entry being changed */ int rval; /* internal return value */ @@ -2145,7 +2146,14 @@ state = xfs_da_state_alloc(); state->args = args; state->mp = args->dp->i_mount; + + /* + * We have to save new inode number and ftype since + * xfs_da3_node_lookup_int() is going to overwrite them + */ inum = args->inumber; + ftype = args->filetype; + /* * Lookup the entry to change in the btree. */ @@ -2183,7 +2191,7 @@ * Fill in the new inode number and log the entry. */ dep->inumber = cpu_to_be64(inum); - args->dp->d_ops->data_put_ftype(dep, args->filetype); + args->dp->d_ops->data_put_ftype(dep, ftype); xfs_dir2_data_log_entry(args, state->extrablk.bp, dep); rval = 0; } --- linux-raspi2-4.2.0.orig/fs/xfs/xfs_aops.c +++ linux-raspi2-4.2.0/fs/xfs/xfs_aops.c @@ -356,7 +356,8 @@ { xfs_ioend_t *ioend = bio->bi_private; - ioend->io_error = test_bit(BIO_UPTODATE, &bio->bi_flags) ? 0 : error; + if (!ioend->io_error && !test_bit(BIO_UPTODATE, &bio->bi_flags)) + ioend->io_error = error; /* Toss bio and pass work off to an xfsdatad thread */ bio->bi_private = NULL; --- linux-raspi2-4.2.0.orig/fs/xfs/xfs_super.c +++ linux-raspi2-4.2.0/fs/xfs/xfs_super.c @@ -511,9 +511,9 @@ seq_printf(m, "," MNTOPT_LOGBSIZE "=%dk", mp->m_logbsize >> 10); if (mp->m_logname) - seq_printf(m, "," MNTOPT_LOGDEV "=%s", mp->m_logname); + seq_show_option(m, MNTOPT_LOGDEV, mp->m_logname); if (mp->m_rtname) - seq_printf(m, "," MNTOPT_RTDEV "=%s", mp->m_rtname); + seq_show_option(m, MNTOPT_RTDEV, mp->m_rtname); if (mp->m_dalign > 0) seq_printf(m, "," MNTOPT_SUNIT "=%d", @@ -846,17 +846,18 @@ goto out_destroy_unwritten; mp->m_reclaim_workqueue = alloc_workqueue("xfs-reclaim/%s", - WQ_FREEZABLE, 0, mp->m_fsname); + WQ_MEM_RECLAIM|WQ_FREEZABLE, 0, mp->m_fsname); if (!mp->m_reclaim_workqueue) goto out_destroy_cil; mp->m_log_workqueue = alloc_workqueue("xfs-log/%s", - WQ_FREEZABLE|WQ_HIGHPRI, 0, mp->m_fsname); + WQ_MEM_RECLAIM|WQ_FREEZABLE|WQ_HIGHPRI, 0, + mp->m_fsname); if (!mp->m_log_workqueue) goto out_destroy_reclaim; mp->m_eofblocks_workqueue = alloc_workqueue("xfs-eofblocks/%s", - WQ_FREEZABLE, 0, mp->m_fsname); + WQ_MEM_RECLAIM|WQ_FREEZABLE, 0, mp->m_fsname); if (!mp->m_eofblocks_workqueue) goto out_destroy_log; --- linux-raspi2-4.2.0.orig/include/asm-generic/preempt.h +++ linux-raspi2-4.2.0/include/asm-generic/preempt.h @@ -71,9 +71,10 @@ /* * Returns true when we need to resched and can (barring IRQ state). */ -static __always_inline bool should_resched(void) +static __always_inline bool should_resched(int preempt_offset) { - return unlikely(!preempt_count() && tif_need_resched()); + return unlikely(preempt_count() == preempt_offset && + tif_need_resched()); } #ifdef CONFIG_PREEMPT --- linux-raspi2-4.2.0.orig/include/asm-generic/qspinlock.h +++ linux-raspi2-4.2.0/include/asm-generic/qspinlock.h @@ -111,8 +111,8 @@ cpu_relax(); } -#ifndef virt_queued_spin_lock -static __always_inline bool virt_queued_spin_lock(struct qspinlock *lock) +#ifndef virt_spin_lock +static __always_inline bool virt_spin_lock(struct qspinlock *lock) { return false; } --- linux-raspi2-4.2.0.orig/include/drm/drm_dp_mst_helper.h +++ linux-raspi2-4.2.0/include/drm/drm_dp_mst_helper.h @@ -253,6 +253,7 @@ u8 *bytes; }; +#define DP_REMOTE_I2C_READ_MAX_TRANSACTIONS 4 struct drm_dp_remote_i2c_read { u8 num_transactions; u8 port_number; @@ -262,7 +263,7 @@ u8 *bytes; u8 no_stop_bit; u8 i2c_transaction_delay; - } transactions[4]; + } transactions[DP_REMOTE_I2C_READ_MAX_TRANSACTIONS]; u8 read_i2c_device_id; u8 num_bytes_read; }; --- linux-raspi2-4.2.0.orig/include/drm/i915_component.h +++ linux-raspi2-4.2.0/include/drm/i915_component.h @@ -34,6 +34,17 @@ void (*codec_wake_override)(struct device *, bool enable); int (*get_cdclk_freq)(struct device *); } *ops; + + const struct i915_audio_component_audio_ops { + void *audio_ptr; + /** + * Call from i915 driver, notifying the HDA driver that + * pin sense and/or ELD information has changed. + * @audio_ptr: HDA driver object + * @port: Which port has changed (PORTA / PORTB / PORTC etc) + */ + void (*pin_eld_notify)(void *audio_ptr, int port); + } *audio_ops; }; #endif /* _I915_COMPONENT_H_ */ --- linux-raspi2-4.2.0.orig/include/dt-bindings/clock/bcm2835.h +++ linux-raspi2-4.2.0/include/dt-bindings/clock/bcm2835.h @@ -0,0 +1,47 @@ +/* + * Copyright (C) 2015 Broadcom Corporation + * + * 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. + * + * This program is distributed "as is" WITHOUT ANY WARRANTY of any + * kind, whether express or implied; without even the implied warranty + * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + */ + +#define BCM2835_PLLA 0 +#define BCM2835_PLLB 1 +#define BCM2835_PLLC 2 +#define BCM2835_PLLD 3 +#define BCM2835_PLLH 4 + +#define BCM2835_PLLA_CORE 5 +#define BCM2835_PLLA_PER 6 +#define BCM2835_PLLB_ARM 7 +#define BCM2835_PLLC_CORE0 8 +#define BCM2835_PLLC_CORE1 9 +#define BCM2835_PLLC_CORE2 10 +#define BCM2835_PLLC_PER 11 +#define BCM2835_PLLD_CORE 12 +#define BCM2835_PLLD_PER 13 +#define BCM2835_PLLH_RCAL 14 +#define BCM2835_PLLH_AUX 15 +#define BCM2835_PLLH_PIX 16 + +#define BCM2835_CLOCK_TIMER 17 +#define BCM2835_CLOCK_OTP 18 +#define BCM2835_CLOCK_UART 19 +#define BCM2835_CLOCK_VPU 20 +#define BCM2835_CLOCK_V3D 21 +#define BCM2835_CLOCK_ISP 22 +#define BCM2835_CLOCK_H264 23 +#define BCM2835_CLOCK_VEC 24 +#define BCM2835_CLOCK_HSM 25 +#define BCM2835_CLOCK_SDRAM 26 +#define BCM2835_CLOCK_TSENS 27 +#define BCM2835_CLOCK_EMMC 28 +#define BCM2835_CLOCK_PERI_IMAGE 29 + +#define BCM2835_CLOCK_COUNT 30 --- linux-raspi2-4.2.0.orig/include/kvm/arm_vgic.h +++ linux-raspi2-4.2.0/include/kvm/arm_vgic.h @@ -25,6 +25,7 @@ #include #include #include +#include #define VGIC_NR_IRQS_LEGACY 256 #define VGIC_NR_SGIS 16 @@ -35,11 +36,7 @@ #define VGIC_V3_MAX_LRS 16 #define VGIC_MAX_IRQS 1024 #define VGIC_V2_MAX_CPUS 8 - -/* Sanity checks... */ -#if (KVM_MAX_VCPUS > 255) -#error Too many KVM VCPUs, the VGIC only supports up to 255 VCPUs for now -#endif +#define VGIC_V3_MAX_CPUS 255 #if (VGIC_NR_IRQS_LEGACY & 31) #error "VGIC_NR_IRQS must be a multiple of 32" @@ -144,7 +141,11 @@ bool (*queue_sgi)(struct kvm_vcpu *, int irq); void (*add_sgi_source)(struct kvm_vcpu *, int irq, int source); int (*init_model)(struct kvm *); + void (*destroy_model)(struct kvm *); int (*map_resources)(struct kvm *, const struct vgic_params *); + bool (*queue_lpis)(struct kvm_vcpu *); + void (*unqueue_lpi)(struct kvm_vcpu *, int irq); + int (*inject_msi)(struct kvm *, struct kvm_msi *); }; struct vgic_io_device { @@ -155,6 +156,19 @@ struct kvm_io_device dev; }; +struct vgic_its { + bool enabled; + struct vgic_io_device iodev; + spinlock_t lock; + u64 cbaser; + int creadr; + int cwriter; + struct list_head device_list; + struct list_head collection_list; + /* memory used for buffering guest's memory */ + void *buffer_page; +}; + struct vgic_dist { spinlock_t lock; bool in_kernel; @@ -163,6 +177,9 @@ /* vGIC model the kernel emulates for the guest (GICv2 or GICv3) */ u32 vgic_model; + /* Do injected MSIs require an additional device ID? */ + bool msis_require_devid; + int nr_cpus; int nr_irqs; @@ -177,6 +194,9 @@ phys_addr_t vgic_redist_base; }; + /* The base address of the ITS control register frame */ + phys_addr_t vgic_its_base; + /* Distributor enabled */ u32 enabled; @@ -252,6 +272,15 @@ struct vgic_vm_ops vm_ops; struct vgic_io_device dist_iodev; struct vgic_io_device *redist_iodevs; + + /* Address of LPI configuration table shared by all redistributors */ + u64 propbaser; + + /* Addresses of LPI pending tables per redistributor */ + u64 *pendbaser; + + bool lpis_enabled; + struct vgic_its its; }; struct vgic_v2_cpu_if { @@ -279,9 +308,6 @@ }; struct vgic_cpu { - /* per IRQ to LR mapping */ - u8 *vgic_irq_lr_map; - /* Pending/active/both interrupts on this VCPU */ DECLARE_BITMAP( pending_percpu, VGIC_NR_PRIVATE_IRQS); DECLARE_BITMAP( active_percpu, VGIC_NR_PRIVATE_IRQS); @@ -292,9 +318,6 @@ unsigned long *active_shared; unsigned long *pend_act_shared; - /* Bitmap of used/free list registers */ - DECLARE_BITMAP( lr_used, VGIC_V2_MAX_LRS); - /* Number of list registers on this CPU */ int nr_lr; --- linux-raspi2-4.2.0.orig/include/linux/acpi.h +++ linux-raspi2-4.2.0/include/linux/acpi.h @@ -197,6 +197,12 @@ void acpi_irq_stats_init(void); extern u32 acpi_irq_handled; extern u32 acpi_irq_not_handled; +extern unsigned int acpi_sci_irq; +#define INVALID_ACPI_IRQ ((unsigned)-1) +static inline bool acpi_sci_irq_valid(void) +{ + return acpi_sci_irq != INVALID_ACPI_IRQ; +} extern int sbf_port; extern unsigned long acpi_realmode_flags; @@ -221,7 +227,7 @@ int acpi_pci_irq_enable (struct pci_dev *dev); void acpi_penalize_isa_irq(int irq, int active); - +void acpi_penalize_sci_irq(int irq, int trigger, int polarity); void acpi_pci_irq_disable (struct pci_dev *dev); extern int ec_read(u8 addr, u8 *val); --- linux-raspi2-4.2.0.orig/include/linux/backing-dev.h +++ linux-raspi2-4.2.0/include/linux/backing-dev.h @@ -18,13 +18,17 @@ #include int __must_check bdi_init(struct backing_dev_info *bdi); -void bdi_destroy(struct backing_dev_info *bdi); +void bdi_exit(struct backing_dev_info *bdi); __printf(3, 4) int bdi_register(struct backing_dev_info *bdi, struct device *parent, const char *fmt, ...); int bdi_register_dev(struct backing_dev_info *bdi, dev_t dev); +void bdi_unregister(struct backing_dev_info *bdi); + int __must_check bdi_setup_and_register(struct backing_dev_info *, char *); +void bdi_destroy(struct backing_dev_info *bdi); + void wb_start_writeback(struct bdi_writeback *wb, long nr_pages, bool range_cyclic, enum wb_reason reason); void wb_start_background_writeback(struct bdi_writeback *wb); --- linux-raspi2-4.2.0.orig/include/linux/broadcom/bcm2835_smi.h +++ linux-raspi2-4.2.0/include/linux/broadcom/bcm2835_smi.h @@ -0,0 +1,391 @@ +/** + * Declarations and definitions for Broadcom's Secondary Memory Interface + * + * Written by Luke Wren + * Copyright (c) 2015, Raspberry Pi (Trading) Ltd. + * Copyright (c) 2010-2012 Broadcom. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions, and the following disclaimer, + * without modification. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The names of the above-listed copyright holders may not be used + * to endorse or promote products derived from this software without + * specific prior written permission. + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") version 2, as published by the Free + * Software Foundation. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS + * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef BCM2835_SMI_H +#define BCM2835_SMI_H + +#include + +#ifndef __KERNEL__ +#include +#include +#endif + +#define BCM2835_SMI_IOC_MAGIC 0x1 +#define BCM2835_SMI_INVALID_HANDLE (~0) + +/* IOCTLs 0x100...0x1ff are not device-specific - we can use them */ +#define BCM2835_SMI_IOC_GET_SETTINGS _IO(BCM2835_SMI_IOC_MAGIC, 0) +#define BCM2835_SMI_IOC_WRITE_SETTINGS _IO(BCM2835_SMI_IOC_MAGIC, 1) +#define BCM2835_SMI_IOC_ADDRESS _IO(BCM2835_SMI_IOC_MAGIC, 2) +#define BCM2835_SMI_IOC_MAX 2 + +#define SMI_WIDTH_8BIT 0 +#define SMI_WIDTH_16BIT 1 +#define SMI_WIDTH_9BIT 2 +#define SMI_WIDTH_18BIT 3 + +/* max number of bytes where DMA will not be used */ +#define DMA_THRESHOLD_BYTES 128 +#define DMA_BOUNCE_BUFFER_SIZE (1024 * 1024 / 2) +#define DMA_BOUNCE_BUFFER_COUNT 3 + + +struct smi_settings { + int data_width; + /* Whether or not to pack multiple SMI transfers into a + single 32 bit FIFO word */ + bool pack_data; + + /* Timing for reads (writes the same but for WE) + * + * OE ----------+ +-------------------- + * | | + * +----------+ + * SD -<==============================>----------- + * SA -<=========================================>- + * <-setup-> <-strobe -> <-hold -> <- pace -> + */ + + int read_setup_time; + int read_hold_time; + int read_pace_time; + int read_strobe_time; + + int write_setup_time; + int write_hold_time; + int write_pace_time; + int write_strobe_time; + + bool dma_enable; /* DREQs */ + bool dma_passthrough_enable; /* External DREQs */ + int dma_read_thresh; + int dma_write_thresh; + int dma_panic_read_thresh; + int dma_panic_write_thresh; +}; + +/**************************************************************************** +* +* Declare exported SMI functions +* +***************************************************************************/ + +#ifdef __KERNEL__ + +#include /* for enum dma_transfer_direction */ +#include +#include + +struct bcm2835_smi_instance; + +struct bcm2835_smi_bounce_info { + struct semaphore callback_sem; + void *buffer[DMA_BOUNCE_BUFFER_COUNT]; + dma_addr_t phys[DMA_BOUNCE_BUFFER_COUNT]; + struct scatterlist sgl[DMA_BOUNCE_BUFFER_COUNT]; +}; + + +void bcm2835_smi_set_regs_from_settings(struct bcm2835_smi_instance *); + +struct smi_settings *bcm2835_smi_get_settings_from_regs( + struct bcm2835_smi_instance *inst); + +void bcm2835_smi_write_buf( + struct bcm2835_smi_instance *inst, + const void *buf, + size_t n_bytes); + +void bcm2835_smi_read_buf( + struct bcm2835_smi_instance *inst, + void *buf, + size_t n_bytes); + +void bcm2835_smi_set_address(struct bcm2835_smi_instance *inst, + unsigned int address); + +ssize_t bcm2835_smi_user_dma( + struct bcm2835_smi_instance *inst, + enum dma_transfer_direction dma_dir, + char __user *user_ptr, + size_t count, + struct bcm2835_smi_bounce_info **bounce); + +struct bcm2835_smi_instance *bcm2835_smi_get(struct device_node *node); + +#endif /* __KERNEL__ */ + +/**************************************************************** +* +* Implementation-only declarations +* +****************************************************************/ + +#ifdef BCM2835_SMI_IMPLEMENTATION + +/* Clock manager registers for SMI clock: */ +#define CM_SMI_BASE_ADDRESS ((BCM2708_PERI_BASE) + 0x1010b0) +/* Clock manager "password" to protect registers from spurious writes */ +#define CM_PWD (0x5a << 24) + +#define CM_SMI_CTL 0x00 +#define CM_SMI_DIV 0x04 + +#define CM_SMI_CTL_FLIP (1 << 8) +#define CM_SMI_CTL_BUSY (1 << 7) +#define CM_SMI_CTL_KILL (1 << 5) +#define CM_SMI_CTL_ENAB (1 << 4) +#define CM_SMI_CTL_SRC_MASK (0xf) +#define CM_SMI_CTL_SRC_OFFS (0) + +#define CM_SMI_DIV_DIVI_MASK (0xf << 12) +#define CM_SMI_DIV_DIVI_OFFS (12) +#define CM_SMI_DIV_DIVF_MASK (0xff << 4) +#define CM_SMI_DIV_DIVF_OFFS (4) + +/* SMI register mapping:*/ +#define SMI_BASE_ADDRESS ((BCM2708_PERI_BASE) + 0x600000) + +#define SMICS 0x00 /* control + status register */ +#define SMIL 0x04 /* length/count (n external txfers) */ +#define SMIA 0x08 /* address register */ +#define SMID 0x0c /* data register */ +#define SMIDSR0 0x10 /* device 0 read settings */ +#define SMIDSW0 0x14 /* device 0 write settings */ +#define SMIDSR1 0x18 /* device 1 read settings */ +#define SMIDSW1 0x1c /* device 1 write settings */ +#define SMIDSR2 0x20 /* device 2 read settings */ +#define SMIDSW2 0x24 /* device 2 write settings */ +#define SMIDSR3 0x28 /* device 3 read settings */ +#define SMIDSW3 0x2c /* device 3 write settings */ +#define SMIDC 0x30 /* DMA control registers */ +#define SMIDCS 0x34 /* direct control/status register */ +#define SMIDA 0x38 /* direct address register */ +#define SMIDD 0x3c /* direct data registers */ +#define SMIFD 0x40 /* FIFO debug register */ + + + +/* Control and Status register bits: + * SMICS_RXF : RX fifo full: 1 when RX fifo is full + * SMICS_TXE : TX fifo empty: 1 when empty. + * SMICS_RXD : RX fifo contains data: 1 when there is data. + * SMICS_TXD : TX fifo can accept data: 1 when true. + * SMICS_RXR : RX fifo needs reading: 1 when fifo more than 3/4 full, or + * when "DONE" and fifo not emptied. + * SMICS_TXW : TX fifo needs writing: 1 when less than 1/4 full. + * SMICS_AFERR : AXI FIFO error: 1 when fifo read when empty or written + * when full. Write 1 to clear. + * SMICS_EDREQ : 1 when external DREQ received. + * SMICS_PXLDAT : Pixel data: write 1 to enable pixel transfer modes. + * SMICS_SETERR : 1 if there was an error writing to setup regs (e.g. + * tx was in progress). Write 1 to clear. + * SMICS_PVMODE : Set to 1 to enable pixel valve mode. + * SMICS_INTR : Set to 1 to enable interrupt on RX. + * SMICS_INTT : Set to 1 to enable interrupt on TX. + * SMICS_INTD : Set to 1 to enable interrupt on DONE condition. + * SMICS_TEEN : Tear effect mode enabled: Programmed transfers will wait + * for a TE trigger before writing. + * SMICS_PAD1 : Padding settings for external transfers. For writes: the + * number of bytes initially written to the TX fifo that + * SMICS_PAD0 : should be ignored. For reads: the number of bytes that will + * be read before the data, and should be dropped. + * SMICS_WRITE : Transfer direction: 1 = write to external device, 0 = read + * SMICS_CLEAR : Write 1 to clear the FIFOs. + * SMICS_START : Write 1 to start the programmed transfer. + * SMICS_ACTIVE : Reads as 1 when a programmed transfer is underway. + * SMICS_DONE : Reads as 1 when transfer finished. For RX, not set until + * FIFO emptied. + * SMICS_ENABLE : Set to 1 to enable the SMI peripheral, 0 to disable. + */ + +#define SMICS_RXF (1 << 31) +#define SMICS_TXE (1 << 30) +#define SMICS_RXD (1 << 29) +#define SMICS_TXD (1 << 28) +#define SMICS_RXR (1 << 27) +#define SMICS_TXW (1 << 26) +#define SMICS_AFERR (1 << 25) +#define SMICS_EDREQ (1 << 15) +#define SMICS_PXLDAT (1 << 14) +#define SMICS_SETERR (1 << 13) +#define SMICS_PVMODE (1 << 12) +#define SMICS_INTR (1 << 11) +#define SMICS_INTT (1 << 10) +#define SMICS_INTD (1 << 9) +#define SMICS_TEEN (1 << 8) +#define SMICS_PAD1 (1 << 7) +#define SMICS_PAD0 (1 << 6) +#define SMICS_WRITE (1 << 5) +#define SMICS_CLEAR (1 << 4) +#define SMICS_START (1 << 3) +#define SMICS_ACTIVE (1 << 2) +#define SMICS_DONE (1 << 1) +#define SMICS_ENABLE (1 << 0) + +/* Address register bits: */ + +#define SMIA_DEVICE_MASK ((1 << 9) | (1 << 8)) +#define SMIA_DEVICE_OFFS (8) +#define SMIA_ADDR_MASK (0x3f) /* bits 5 -> 0 */ +#define SMIA_ADDR_OFFS (0) + +/* DMA control register bits: + * SMIDC_DMAEN : DMA enable: set 1: DMA requests will be issued. + * SMIDC_DMAP : DMA passthrough: when set to 0, top two data pins are used by + * SMI as usual. When set to 1, the top two pins are used for + * external DREQs: pin 16 read request, 17 write. + * SMIDC_PANIC* : Threshold at which DMA will panic during read/write. + * SMIDC_REQ* : Threshold at which DMA will generate a DREQ. + */ + +#define SMIDC_DMAEN (1 << 28) +#define SMIDC_DMAP (1 << 24) +#define SMIDC_PANICR_MASK (0x3f << 18) +#define SMIDC_PANICR_OFFS (18) +#define SMIDC_PANICW_MASK (0x3f << 12) +#define SMIDC_PANICW_OFFS (12) +#define SMIDC_REQR_MASK (0x3f << 6) +#define SMIDC_REQR_OFFS (6) +#define SMIDC_REQW_MASK (0x3f) +#define SMIDC_REQW_OFFS (0) + +/* Device settings register bits: same for all 4 (or 3?) device register sets. + * Device read settings: + * SMIDSR_RWIDTH : Read transfer width. 00 = 8bit, 01 = 16bit, + * 10 = 18bit, 11 = 9bit. + * SMIDSR_RSETUP : Read setup time: number of core cycles between chip + * select/address and read strobe. Min 1, max 64. + * SMIDSR_MODE68 : 1 for System 68 mode (i.e. enable + direction pins, + * rather than OE + WE pin) + * SMIDSR_FSETUP : If set to 1, setup time only applies to first + * transfer after address change. + * SMIDSR_RHOLD : Number of core cycles between read strobe going + * inactive and CS/address going inactive. Min 1, max 64 + * SMIDSR_RPACEALL : When set to 1, this device's RPACE value will always + * be used for the next transaction, even if it is not + * to this device. + * SMIDSR_RPACE : Number of core cycles spent waiting between CS + * deassert and start of next transfer. Min 1, max 128 + * SMIDSR_RDREQ : 1 = use external DMA request on SD16 to pace reads + * from device. Must also set DMAP in SMICS. + * SMIDSR_RSTROBE : Number of cycles to assert the read strobe. + * min 1, max 128. + */ +#define SMIDSR_RWIDTH_MASK ((1<<31)|(1<<30)) +#define SMIDSR_RWIDTH_OFFS (30) +#define SMIDSR_RSETUP_MASK (0x3f << 24) +#define SMIDSR_RSETUP_OFFS (24) +#define SMIDSR_MODE68 (1 << 23) +#define SMIDSR_FSETUP (1 << 22) +#define SMIDSR_RHOLD_MASK (0x3f << 16) +#define SMIDSR_RHOLD_OFFS (16) +#define SMIDSR_RPACEALL (1 << 15) +#define SMIDSR_RPACE_MASK (0x7f << 8) +#define SMIDSR_RPACE_OFFS (8) +#define SMIDSR_RDREQ (1 << 7) +#define SMIDSR_RSTROBE_MASK (0x7f) +#define SMIDSR_RSTROBE_OFFS (0) + +/* Device write settings: + * SMIDSW_WWIDTH : Write transfer width. 00 = 8bit, 01 = 16bit, + * 10= 18bit, 11 = 9bit. + * SMIDSW_WSETUP : Number of cycles between CS assert and write strobe. + * Min 1, max 64. + * SMIDSW_WFORMAT : Pixel format of input. 0 = 16bit RGB 565, + * 1 = 32bit RGBA 8888 + * SMIDSW_WSWAP : 1 = swap pixel data bits. (Use with SMICS_PXLDAT) + * SMIDSW_WHOLD : Time between WE deassert and CS deassert. 1 to 64 + * SMIDSW_WPACEALL : 1: this device's WPACE will be used for the next + * transfer, regardless of that transfer's device. + * SMIDSW_WPACE : Cycles between CS deassert and next CS assert. + * Min 1, max 128 + * SMIDSW_WDREQ : Use external DREQ on pin 17 to pace writes. DMAP must + * be set in SMICS. + * SMIDSW_WSTROBE : Number of cycles to assert the write strobe. + * Min 1, max 128 + */ +#define SMIDSW_WWIDTH_MASK ((1<<31)|(1<<30)) +#define SMIDSW_WWIDTH_OFFS (30) +#define SMIDSW_WSETUP_MASK (0x3f << 24) +#define SMIDSW_WSETUP_OFFS (24) +#define SMIDSW_WFORMAT (1 << 23) +#define SMIDSW_WSWAP (1 << 22) +#define SMIDSW_WHOLD_MASK (0x3f << 16) +#define SMIDSW_WHOLD_OFFS (16) +#define SMIDSW_WPACEALL (1 << 15) +#define SMIDSW_WPACE_MASK (0x7f << 8) +#define SMIDSW_WPACE_OFFS (8) +#define SMIDSW_WDREQ (1 << 7) +#define SMIDSW_WSTROBE_MASK (0x7f) +#define SMIDSW_WSTROBE_OFFS (0) + +/* Direct transfer control + status register + * SMIDCS_WRITE : Direction of transfer: 1 -> write, 0 -> read + * SMIDCS_DONE : 1 when a transfer has finished. Write 1 to clear. + * SMIDCS_START : Write 1 to start a transfer, if one is not already underway. + * SMIDCE_ENABLE: Write 1 to enable SMI in direct mode. + */ + +#define SMIDCS_WRITE (1 << 3) +#define SMIDCS_DONE (1 << 2) +#define SMIDCS_START (1 << 1) +#define SMIDCS_ENABLE (1 << 0) + +/* Direct transfer address register + * SMIDA_DEVICE : Indicates which of the device settings banks should be used. + * SMIDA_ADDR : The value to be asserted on the address pins. + */ + +#define SMIDA_DEVICE_MASK ((1<<9)|(1<<8)) +#define SMIDA_DEVICE_OFFS (8) +#define SMIDA_ADDR_MASK (0x3f) +#define SMIDA_ADDR_OFFS (0) + +/* FIFO debug register + * SMIFD_FLVL : The high-tide mark of FIFO count during the most recent txfer + * SMIFD_FCNT : The current FIFO count. + */ +#define SMIFD_FLVL_MASK (0x3f << 8) +#define SMIFD_FLVL_OFFS (8) +#define SMIFD_FCNT_MASK (0x3f) +#define SMIFD_FCNT_OFFS (0) + +#endif /* BCM2835_SMI_IMPLEMENTATION */ + +#endif /* BCM2835_SMI_H */ --- linux-raspi2-4.2.0.orig/include/linux/broadcom/vc_cma.h +++ linux-raspi2-4.2.0/include/linux/broadcom/vc_cma.h @@ -0,0 +1,29 @@ +/***************************************************************************** +* Copyright 2012 Broadcom Corporation. All rights reserved. +* +* Unless you and Broadcom execute a separate written software license +* agreement governing use of this software, this software is licensed to you +* under the terms of the GNU General Public License version 2, available at +* http://www.broadcom.com/licenses/GPLv2.php (the "GPL"). +* +* Notwithstanding the above, under no circumstances may you combine this +* software in any way with any other Broadcom software provided under a +* license other than the GPL, without Broadcom's express prior written +* consent. +*****************************************************************************/ + +#if !defined( VC_CMA_H ) +#define VC_CMA_H + +#include + +#define VC_CMA_IOC_MAGIC 0xc5 + +#define VC_CMA_IOC_RESERVE _IO(VC_CMA_IOC_MAGIC, 0) + +#ifdef __KERNEL__ +extern void __init vc_cma_early_init(void); +extern void __init vc_cma_reserve(void); +#endif + +#endif /* VC_CMA_H */ --- linux-raspi2-4.2.0.orig/include/linux/broadcom/vc_mem.h +++ linux-raspi2-4.2.0/include/linux/broadcom/vc_mem.h @@ -0,0 +1,35 @@ +/***************************************************************************** +* Copyright 2010 - 2011 Broadcom Corporation. All rights reserved. +* +* Unless you and Broadcom execute a separate written software license +* agreement governing use of this software, this software is licensed to you +* under the terms of the GNU General Public License version 2, available at +* http://www.broadcom.com/licenses/GPLv2.php (the "GPL"). +* +* Notwithstanding the above, under no circumstances may you combine this +* software in any way with any other Broadcom software provided under a +* license other than the GPL, without Broadcom's express prior written +* consent. +*****************************************************************************/ + +#ifndef _VC_MEM_H +#define _VC_MEM_H + +#include + +#define VC_MEM_IOC_MAGIC 'v' + +#define VC_MEM_IOC_MEM_PHYS_ADDR _IOR( VC_MEM_IOC_MAGIC, 0, unsigned long ) +#define VC_MEM_IOC_MEM_SIZE _IOR( VC_MEM_IOC_MAGIC, 1, unsigned int ) +#define VC_MEM_IOC_MEM_BASE _IOR( VC_MEM_IOC_MAGIC, 2, unsigned int ) +#define VC_MEM_IOC_MEM_LOAD _IOR( VC_MEM_IOC_MAGIC, 3, unsigned int ) + +#if defined( __KERNEL__ ) +#define VC_MEM_TO_ARM_ADDR_MASK 0x3FFFFFFF + +extern unsigned long mm_vc_mem_phys_addr; +extern unsigned int mm_vc_mem_size; +extern int vc_mem_get_current_size( void ); +#endif + +#endif /* _VC_MEM_H */ --- linux-raspi2-4.2.0.orig/include/linux/cgroup-defs.h +++ linux-raspi2-4.2.0/include/linux/cgroup-defs.h @@ -463,31 +463,8 @@ unsigned int depends_on; }; -extern struct percpu_rw_semaphore cgroup_threadgroup_rwsem; - -/** - * cgroup_threadgroup_change_begin - threadgroup exclusion for cgroups - * @tsk: target task - * - * Called from threadgroup_change_begin() and allows cgroup operations to - * synchronize against threadgroup changes using a percpu_rw_semaphore. - */ -static inline void cgroup_threadgroup_change_begin(struct task_struct *tsk) -{ - percpu_down_read(&cgroup_threadgroup_rwsem); -} - -/** - * cgroup_threadgroup_change_end - threadgroup exclusion for cgroups - * @tsk: target task - * - * Called from threadgroup_change_end(). Counterpart of - * cgroup_threadcgroup_change_begin(). - */ -static inline void cgroup_threadgroup_change_end(struct task_struct *tsk) -{ - percpu_up_read(&cgroup_threadgroup_rwsem); -} +void cgroup_threadgroup_change_begin(struct task_struct *tsk); +void cgroup_threadgroup_change_end(struct task_struct *tsk); #else /* CONFIG_CGROUPS */ --- linux-raspi2-4.2.0.orig/include/linux/device.h +++ linux-raspi2-4.2.0/include/linux/device.h @@ -959,6 +959,8 @@ extern void device_del(struct device *dev); extern int device_for_each_child(struct device *dev, void *data, int (*fn)(struct device *dev, void *data)); +extern int device_for_each_child_reverse(struct device *dev, void *data, + int (*fn)(struct device *dev, void *data)); extern struct device *device_find_child(struct device *dev, void *data, int (*match)(struct device *dev, void *data)); extern int device_rename(struct device *dev, const char *new_name); --- linux-raspi2-4.2.0.orig/include/linux/file.h +++ linux-raspi2-4.2.0/include/linux/file.h @@ -19,6 +19,7 @@ struct path; extern struct file *alloc_file(struct path *, fmode_t mode, const struct file_operations *fop); +extern struct file *get_empty_filp(void); static inline void fput_light(struct file *file, int fput_needed) { --- linux-raspi2-4.2.0.orig/include/linux/fs.h +++ linux-raspi2-4.2.0/include/linux/fs.h @@ -1677,6 +1677,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_read(struct file *, char __user *, size_t, loff_t *); @@ -1718,6 +1724,10 @@ struct shrink_control *); long (*free_cached_objects)(struct super_block *, struct shrink_control *); +#if defined(CONFIG_BLK_DEV_LOOP) || defined(CONFIG_BLK_DEV_LOOP_MODULE) + /* and aufs */ + struct file *(*real_loop)(struct file *); +#endif }; /* --- linux-raspi2-4.2.0.orig/include/linux/fsl_devices.h +++ linux-raspi2-4.2.0/include/linux/fsl_devices.h @@ -93,6 +93,8 @@ unsigned suspended:1; unsigned already_suspended:1; + unsigned has_fsl_erratum_a007792:1; + unsigned has_fsl_erratum_a005275:1; /* register save area for suspend/resume */ u32 pm_command; --- linux-raspi2-4.2.0.orig/include/linux/hyperv.h +++ linux-raspi2-4.2.0/include/linux/hyperv.h @@ -977,6 +977,11 @@ const char *mod_name); void vmbus_driver_unregister(struct hv_driver *hv_driver); +int vmbus_allocate_mmio(struct resource **new, struct hv_device *device_obj, + resource_size_t min, resource_size_t max, + resource_size_t size, resource_size_t align, + bool fb_overlap_ok); + /** * VMBUS_DEVICE - macro used to describe a specific hyperv vmbus device * @@ -1233,8 +1238,6 @@ void hv_process_channel_removal(struct vmbus_channel *channel, u32 relid); -extern struct resource hyperv_mmio; - /* * Negotiated version with the Host. */ --- linux-raspi2-4.2.0.orig/include/linux/iio/iio.h +++ linux-raspi2-4.2.0/include/linux/iio/iio.h @@ -645,6 +645,15 @@ #define IIO_DEGREE_TO_RAD(deg) (((deg) * 314159ULL + 9000000ULL) / 18000000ULL) /** + * IIO_RAD_TO_DEGREE() - Convert rad to degree + * @rad: A value in rad + * + * Returns the given value converted from rad to degree + */ +#define IIO_RAD_TO_DEGREE(rad) \ + (((rad) * 18000000ULL + 314159ULL / 2) / 314159ULL) + +/** * IIO_G_TO_M_S_2() - Convert g to meter / second**2 * @g: A value in g * @@ -652,4 +661,12 @@ */ #define IIO_G_TO_M_S_2(g) ((g) * 980665ULL / 100000ULL) +/** + * IIO_M_S_2_TO_G() - Convert meter / second**2 to g + * @ms2: A value in meter / second**2 + * + * Returns the given value converted from meter / second**2 to g + */ +#define IIO_M_S_2_TO_G(ms2) (((ms2) * 100000ULL + 980665ULL / 2) / 980665ULL) + #endif /* _INDUSTRIAL_IO_H_ */ --- linux-raspi2-4.2.0.orig/include/linux/init_task.h +++ linux-raspi2-4.2.0/include/linux/init_task.h @@ -25,6 +25,13 @@ extern struct files_struct init_files; extern struct fs_struct init_fs; +#ifdef CONFIG_CGROUPS +#define INIT_GROUP_RWSEM(sig) \ + .group_rwsem = __RWSEM_INITIALIZER(sig.group_rwsem), +#else +#define INIT_GROUP_RWSEM(sig) +#endif + #ifdef CONFIG_CPUSETS #define INIT_CPUSET_SEQ(tsk) \ .mems_allowed_seq = SEQCNT_ZERO(tsk.mems_allowed_seq), @@ -48,6 +55,7 @@ }, \ .cred_guard_mutex = \ __MUTEX_INITIALIZER(sig.cred_guard_mutex), \ + INIT_GROUP_RWSEM(sig) \ } extern struct nsproxy init_nsproxy; --- linux-raspi2-4.2.0.orig/include/linux/ipv6.h +++ linux-raspi2-4.2.0/include/linux/ipv6.h @@ -224,7 +224,7 @@ struct ipv6_ac_socklist *ipv6_ac_list; struct ipv6_fl_socklist __rcu *ipv6_fl_list; - struct ipv6_txoptions *opt; + struct ipv6_txoptions __rcu *opt; struct sk_buff *pktoptions; struct sk_buff *rxpmtu; struct inet6_cork cork; --- linux-raspi2-4.2.0.orig/include/linux/irqchip/arm-gic-v3.h +++ linux-raspi2-4.2.0/include/linux/irqchip/arm-gic-v3.h @@ -177,16 +177,25 @@ #define GITS_CWRITER 0x0088 #define GITS_CREADR 0x0090 #define GITS_BASER 0x0100 +#define GITS_IDREGS_BASE 0xffd0 #define GITS_PIDR2 GICR_PIDR2 +#define GITS_PIDR4 0xffd0 +#define GITS_CIDR0 0xfff0 +#define GITS_CIDR1 0xfff4 +#define GITS_CIDR2 0xfff8 +#define GITS_CIDR3 0xfffc #define GITS_TRANSLATER 0x10040 #define GITS_CTLR_ENABLE (1U << 0) #define GITS_CTLR_QUIESCENT (1U << 31) +#define GITS_TYPER_PLPIS (1UL << 0) +#define GITS_TYPER_IDBITS_SHIFT 8 #define GITS_TYPER_DEVBITS_SHIFT 13 #define GITS_TYPER_DEVBITS(r) ((((r) >> GITS_TYPER_DEVBITS_SHIFT) & 0x1f) + 1) #define GITS_TYPER_PTA (1UL << 19) +#define GITS_TYPER_HWCOLLCNT_SHIFT 24 #define GITS_CBASER_VALID (1UL << 63) #define GITS_CBASER_nCnB (0UL << 59) @@ -229,6 +238,7 @@ #define GITS_BASER_PAGE_SIZE_16K (1UL << GITS_BASER_PAGE_SIZE_SHIFT) #define GITS_BASER_PAGE_SIZE_64K (2UL << GITS_BASER_PAGE_SIZE_SHIFT) #define GITS_BASER_PAGE_SIZE_MASK (3UL << GITS_BASER_PAGE_SIZE_SHIFT) +#define GITS_BASER_PAGES_MAX 256 #define GITS_BASER_TYPE_NONE 0 #define GITS_BASER_TYPE_DEVICE 1 @@ -244,7 +254,10 @@ */ #define GITS_CMD_MAPD 0x08 #define GITS_CMD_MAPC 0x09 -#define GITS_CMD_MAPVI 0x0a +#define GITS_CMD_MAPTI 0x0a +/* older GIC documentation used MAPVI for this command */ +#define GITS_CMD_MAPVI GITS_CMD_MAPTI +#define GITS_CMD_MAPI 0x0b #define GITS_CMD_MOVI 0x01 #define GITS_CMD_DISCARD 0x0f #define GITS_CMD_INV 0x0c --- linux-raspi2-4.2.0.orig/include/linux/jbd2.h +++ linux-raspi2-4.2.0/include/linux/jbd2.h @@ -1007,6 +1007,7 @@ #define JBD2_ABORT_ON_SYNCDATA_ERR 0x040 /* Abort the journal on file * data write error in ordered * mode */ +#define JBD2_REC_ERR 0x080 /* The errno in the sb has been recorded */ /* * Function declarations for the journaling transaction and buffer @@ -1042,8 +1043,9 @@ extern void jbd2_journal_commit_transaction(journal_t *); /* Checkpoint list management */ -void __jbd2_journal_clean_checkpoint_list(journal_t *journal); +void __jbd2_journal_clean_checkpoint_list(journal_t *journal, bool destroy); int __jbd2_journal_remove_checkpoint(struct journal_head *); +void jbd2_journal_destroy_checkpoint(journal_t *journal); void __jbd2_journal_insert_checkpoint(struct journal_head *, transaction_t *); --- linux-raspi2-4.2.0.orig/include/linux/kexec.h +++ linux-raspi2-4.2.0/include/linux/kexec.h @@ -323,6 +323,7 @@ struct task_struct; static inline void crash_kexec(struct pt_regs *regs) { } static inline int kexec_should_crash(struct task_struct *p) { return 0; } +#define kexec_in_progress false #endif /* CONFIG_KEXEC */ #endif /* !defined(__ASSEBMLY__) */ --- linux-raspi2-4.2.0.orig/include/linux/klist.h +++ linux-raspi2-4.2.0/include/linux/klist.h @@ -63,6 +63,7 @@ extern void klist_iter_init_node(struct klist *k, struct klist_iter *i, struct klist_node *n); extern void klist_iter_exit(struct klist_iter *i); +extern struct klist_node *klist_prev(struct klist_iter *i); extern struct klist_node *klist_next(struct klist_iter *i); #endif --- linux-raspi2-4.2.0.orig/include/linux/kvm_host.h +++ linux-raspi2-4.2.0/include/linux/kvm_host.h @@ -321,7 +321,11 @@ unsigned irqchip; unsigned pin; } irqchip; - struct msi_msg msi; + struct { + struct msi_msg msi; + u32 flags; + u32 devid; + }; struct kvm_s390_adapter_int adapter; }; struct hlist_node link; @@ -436,6 +440,17 @@ (vcpup = kvm_get_vcpu(kvm, idx)) != NULL; \ idx++) +static inline struct kvm_vcpu *kvm_get_vcpu_by_id(struct kvm *kvm, int id) +{ + struct kvm_vcpu *vcpu; + int i; + + kvm_for_each_vcpu(i, vcpu, kvm) + if (vcpu->vcpu_id == id) + return vcpu; + return NULL; +} + #define kvm_for_each_memslot(memslot, slots) \ for (memslot = &slots->memslots[0]; \ memslot < slots->memslots + KVM_MEM_SLOTS_NUM && memslot->npages;\ @@ -991,6 +1006,8 @@ #ifdef CONFIG_S390 #define KVM_MAX_IRQ_ROUTES 4096 //FIXME: we can have more than that... +#elif defined(CONFIG_ARM64) +#define KVM_MAX_IRQ_ROUTES 4096 #else #define KVM_MAX_IRQ_ROUTES 1024 #endif --- linux-raspi2-4.2.0.orig/include/linux/leds.h +++ linux-raspi2-4.2.0/include/linux/leds.h @@ -48,6 +48,9 @@ #define SET_BRIGHTNESS_ASYNC (1 << 21) #define SET_BRIGHTNESS_SYNC (1 << 22) #define LED_DEV_CAP_FLASH (1 << 23) + /* Additions for Raspberry Pi PWR LED */ +#define SET_GPIO_INPUT (1 << 30) +#define SET_GPIO_OUTPUT (1 << 31) /* Set LED brightness level */ /* Must not sleep, use a workqueue if needed */ --- linux-raspi2-4.2.0.orig/include/linux/lockd/lockd.h +++ linux-raspi2-4.2.0/include/linux/lockd/lockd.h @@ -235,7 +235,8 @@ struct nlm_host * nlm_get_host(struct nlm_host *); void nlm_shutdown_hosts(void); void nlm_shutdown_hosts_net(struct net *net); -void nlm_host_rebooted(const struct nlm_reboot *); +void nlm_host_rebooted(const struct net *net, + const struct nlm_reboot *); /* * Host monitoring @@ -243,11 +244,13 @@ int nsm_monitor(const struct nlm_host *host); void nsm_unmonitor(const struct nlm_host *host); -struct nsm_handle *nsm_get_handle(const struct sockaddr *sap, +struct nsm_handle *nsm_get_handle(const struct net *net, + const struct sockaddr *sap, const size_t salen, const char *hostname, const size_t hostname_len); -struct nsm_handle *nsm_reboot_lookup(const struct nlm_reboot *info); +struct nsm_handle *nsm_reboot_lookup(const struct net *net, + const struct nlm_reboot *info); void nsm_release(struct nsm_handle *nsm); /* --- linux-raspi2-4.2.0.orig/include/linux/mei_cl_bus.h +++ linux-raspi2-4.2.0/include/linux/mei_cl_bus.h @@ -6,6 +6,7 @@ #include struct mei_cl_device; +struct mei_device; typedef void (*mei_cl_event_cb_t)(struct mei_cl_device *device, u32 events, void *context); @@ -17,6 +18,8 @@ * Drivers for MEI devices will get an mei_cl_device pointer * when being probed and shall use it for doing ME bus I/O. * + * @bus_list: device on the bus list + * @bus: parent mei device * @dev: linux driver model device pointer * @me_cl: me client * @cl: mei client @@ -25,10 +28,16 @@ * @event_cb: Drivers register this callback to get asynchronous ME * events (e.g. Rx buffer pending) notifications. * @event_context: event callback run context + * @events_mask: Events bit mask requested by driver. * @events: Events bitmask sent to the driver. + * + * @do_match: wheather device can be matched with a driver + * @is_added: device is already scanned * @priv_data: client private data */ struct mei_cl_device { + struct list_head bus_list; + struct mei_device *bus; struct device dev; struct mei_me_client *me_cl; @@ -38,8 +47,12 @@ struct work_struct event_work; mei_cl_event_cb_t event_cb; void *event_context; + unsigned long events_mask; unsigned long events; + unsigned int do_match:1; + unsigned int is_added:1; + void *priv_data; }; @@ -65,10 +78,12 @@ ssize_t mei_cl_recv(struct mei_cl_device *device, u8 *buf, size_t length); int mei_cl_register_event_cb(struct mei_cl_device *device, + unsigned long event_mask, mei_cl_event_cb_t read_cb, void *context); #define MEI_CL_EVENT_RX 0 #define MEI_CL_EVENT_TX 1 +#define MEI_CL_EVENT_NOTIF 2 void *mei_cl_get_drvdata(const struct mei_cl_device *device); void mei_cl_set_drvdata(struct mei_cl_device *device, void *data); --- linux-raspi2-4.2.0.orig/include/linux/mfd/lpc_ich.h +++ linux-raspi2-4.2.0/include/linux/mfd/lpc_ich.h @@ -20,12 +20,6 @@ #ifndef LPC_ICH_H #define LPC_ICH_H -/* Watchdog resources */ -#define ICH_RES_IO_TCO 0 -#define ICH_RES_IO_SMI 1 -#define ICH_RES_MEM_OFF 2 -#define ICH_RES_MEM_GCS_PMC 0 - /* GPIO resources */ #define ICH_RES_GPIO 0 #define ICH_RES_GPE0 1 --- linux-raspi2-4.2.0.orig/include/linux/mfd/rpisense/core.h +++ linux-raspi2-4.2.0/include/linux/mfd/rpisense/core.h @@ -0,0 +1,47 @@ +/* + * Raspberry Pi Sense HAT core driver + * http://raspberrypi.org + * + * Copyright (C) 2015 Raspberry Pi + * + * Author: Serge Schneider + * + * 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. + * + */ + +#ifndef __LINUX_MFD_RPISENSE_CORE_H_ +#define __LINUX_MFD_RPISENSE_CORE_H_ + +#include +#include + +/* + * Register values. + */ +#define RPISENSE_FB 0x00 +#define RPISENSE_WAI 0xF0 +#define RPISENSE_VER 0xF1 +#define RPISENSE_KEYS 0xF2 +#define RPISENSE_EE_WP 0xF3 + +#define RPISENSE_ID 's' + +struct rpisense { + struct device *dev; + struct i2c_client *i2c_client; + + /* Client devices */ + struct rpisense_js joystick; + struct rpisense_fb framebuffer; +}; + +struct rpisense *rpisense_get_dev(void); +s32 rpisense_reg_read(struct rpisense *rpisense, int reg); +int rpisense_reg_write(struct rpisense *rpisense, int reg, u16 val); +int rpisense_block_write(struct rpisense *rpisense, const char *buf, int count); + +#endif --- linux-raspi2-4.2.0.orig/include/linux/mfd/rpisense/framebuffer.h +++ linux-raspi2-4.2.0/include/linux/mfd/rpisense/framebuffer.h @@ -0,0 +1,32 @@ +/* + * Raspberry Pi Sense HAT framebuffer driver + * http://raspberrypi.org + * + * Copyright (C) 2015 Raspberry Pi + * + * Author: Serge Schneider + * + * 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. + * + */ + +#ifndef __LINUX_RPISENSE_FB_H_ +#define __LINUX_RPISENSE_FB_H_ + +#define SENSEFB_FBIO_IOC_MAGIC 0xF1 + +#define SENSEFB_FBIOGET_GAMMA _IO(SENSEFB_FBIO_IOC_MAGIC, 0) +#define SENSEFB_FBIOSET_GAMMA _IO(SENSEFB_FBIO_IOC_MAGIC, 1) +#define SENSEFB_FBIORESET_GAMMA _IO(SENSEFB_FBIO_IOC_MAGIC, 2) + +struct rpisense; + +struct rpisense_fb { + struct platform_device *pdev; + struct fb_info *info; +}; + +#endif --- linux-raspi2-4.2.0.orig/include/linux/mfd/rpisense/joystick.h +++ linux-raspi2-4.2.0/include/linux/mfd/rpisense/joystick.h @@ -0,0 +1,35 @@ +/* + * Raspberry Pi Sense HAT joystick driver + * http://raspberrypi.org + * + * Copyright (C) 2015 Raspberry Pi + * + * Author: Serge Schneider + * + * 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. + * + */ + +#ifndef __LINUX_RPISENSE_JOYSTICK_H_ +#define __LINUX_RPISENSE_JOYSTICK_H_ + +#include +#include +#include +#include + +struct rpisense; + +struct rpisense_js { + struct platform_device *pdev; + struct input_dev *keys_dev; + struct gpio_desc *keys_desc; + struct work_struct keys_work_s; + int keys_irq; +}; + + +#endif --- linux-raspi2-4.2.0.orig/include/linux/mlx5/driver.h +++ linux-raspi2-4.2.0/include/linux/mlx5/driver.h @@ -151,8 +151,8 @@ }; enum mlx5_port_status { - MLX5_PORT_UP = 1 << 1, - MLX5_PORT_DOWN = 1 << 2, + MLX5_PORT_UP = 1, + MLX5_PORT_DOWN = 2, }; struct mlx5_uuar_info { @@ -380,7 +380,7 @@ u32 index; struct list_head bf_list; unsigned free_bf_bmap; - void __iomem *wc_map; + void __iomem *bf_map; void __iomem *map; }; @@ -435,6 +435,8 @@ struct mlx5_uuar_info uuari; MLX5_DECLARE_DOORBELL_LOCK(cq_uar_lock); + struct io_mapping *bf_mapping; + /* pages stuff */ struct workqueue_struct *pg_wq; struct rb_root page_root; @@ -463,6 +465,10 @@ /* end: mr staff */ /* start: alloc staff */ + /* protect buffer alocation according to numa node */ + struct mutex alloc_mutex; + int numa_node; + struct mutex pgdir_mutex; struct list_head pgdir_list; /* end: alloc staff */ @@ -672,6 +678,8 @@ void __init mlx5_health_init(void); void mlx5_start_health_poll(struct mlx5_core_dev *dev); void mlx5_stop_health_poll(struct mlx5_core_dev *dev); +int mlx5_buf_alloc_node(struct mlx5_core_dev *dev, int size, + struct mlx5_buf *buf, int node); int mlx5_buf_alloc(struct mlx5_core_dev *dev, int size, struct mlx5_buf *buf); void mlx5_buf_free(struct mlx5_core_dev *dev, struct mlx5_buf *buf); struct mlx5_cmd_mailbox *mlx5_alloc_cmd_mailbox_chain(struct mlx5_core_dev *dev, @@ -752,9 +760,10 @@ u8 local_port); int mlx5_set_port_proto(struct mlx5_core_dev *dev, u32 proto_admin, int proto_mask); -int mlx5_set_port_status(struct mlx5_core_dev *dev, - enum mlx5_port_status status); -int mlx5_query_port_status(struct mlx5_core_dev *dev, u8 *status); +int mlx5_set_port_admin_status(struct mlx5_core_dev *dev, + enum mlx5_port_status status); +int mlx5_query_port_admin_status(struct mlx5_core_dev *dev, + enum mlx5_port_status *status); int mlx5_set_port_mtu(struct mlx5_core_dev *dev, int mtu, u8 port); void mlx5_query_port_max_mtu(struct mlx5_core_dev *dev, int *max_mtu, u8 port); @@ -773,6 +782,8 @@ int mlx5_cq_debugfs_init(struct mlx5_core_dev *dev); void mlx5_cq_debugfs_cleanup(struct mlx5_core_dev *dev); int mlx5_db_alloc(struct mlx5_core_dev *dev, struct mlx5_db *db); +int mlx5_db_alloc_node(struct mlx5_core_dev *dev, struct mlx5_db *db, + int node); void mlx5_db_free(struct mlx5_core_dev *dev, struct mlx5_db *db); const char *mlx5_command_str(int command); --- linux-raspi2-4.2.0.orig/include/linux/mlx5/mlx5_ifc.h +++ linux-raspi2-4.2.0/include/linux/mlx5/mlx5_ifc.h @@ -1936,9 +1936,9 @@ }; enum { - MLX5_TIRC_RX_HASH_FN_HASH_NONE = 0x0, - MLX5_TIRC_RX_HASH_FN_HASH_INVERTED_XOR8 = 0x1, - MLX5_TIRC_RX_HASH_FN_HASH_TOEPLITZ = 0x2, + MLX5_RX_HASH_FN_NONE = 0x0, + MLX5_RX_HASH_FN_INVERTED_XOR8 = 0x1, + MLX5_RX_HASH_FN_TOEPLITZ = 0x2, }; enum { --- linux-raspi2-4.2.0.orig/include/linux/mm.h +++ linux-raspi2-4.2.0/include/linux/mm.h @@ -916,6 +916,27 @@ #endif } +#ifdef CONFIG_MEMCG +static inline struct mem_cgroup *page_memcg(struct page *page) +{ + return page->mem_cgroup; +} + +static inline void set_page_memcg(struct page *page, struct mem_cgroup *memcg) +{ + page->mem_cgroup = memcg; +} +#else +static inline struct mem_cgroup *page_memcg(struct page *page) +{ + return NULL; +} + +static inline void set_page_memcg(struct page *page, struct mem_cgroup *memcg) +{ +} +#endif + /* * Some inline functions in vmstat.h depend on page_zone() */ @@ -1201,6 +1222,28 @@ } #endif +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, int write); extern int access_remote_vm(struct mm_struct *mm, unsigned long addr, void *buf, int len, int write); --- linux-raspi2-4.2.0.orig/include/linux/mm_types.h +++ linux-raspi2-4.2.0/include/linux/mm_types.h @@ -250,6 +250,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 @@ -314,6 +315,7 @@ unsigned long vm_pgoff; /* Offset (within vm_file) in PAGE_SIZE units, *not* PAGE_CACHE_SIZE */ 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) */ #ifndef CONFIG_MMU --- linux-raspi2-4.2.0.orig/include/linux/mmc/host.h +++ linux-raspi2-4.2.0/include/linux/mmc/host.h @@ -143,7 +143,9 @@ * I/O. Returns the number of supported blocks for the request. */ int (*multi_io_quirk)(struct mmc_card *card, - unsigned int direction, int blk_size); + unsigned int direction, + u32 blk_pos, + int blk_size); }; struct mmc_card; @@ -289,6 +291,7 @@ #define MMC_CAP2_HSX00_1_2V (MMC_CAP2_HS200_1_2V_SDR | MMC_CAP2_HS400_1_2V) #define MMC_CAP2_SDIO_IRQ_NOTHREAD (1 << 17) #define MMC_CAP2_NO_WRITE_PROTECT (1 << 18) /* No physical write protect pin, assume that card is always read-write */ +#define MMC_CAP2_FORCE_MULTIBLOCK (1 << 31) /* Always use multiblock transfers */ mmc_pm_flag_t pm_caps; /* supported pm features */ --- linux-raspi2-4.2.0.orig/include/linux/netlink.h +++ linux-raspi2-4.2.0/include/linux/netlink.h @@ -68,8 +68,17 @@ extern void __netlink_clear_multicast_users(struct sock *sk, unsigned int group); extern void netlink_ack(struct sk_buff *in_skb, struct nlmsghdr *nlh, int err); extern int netlink_has_listeners(struct sock *sk, unsigned int group); -extern struct sk_buff *netlink_alloc_skb(struct sock *ssk, unsigned int size, - u32 dst_portid, gfp_t gfp_mask); + +extern struct sk_buff *__netlink_alloc_skb(struct sock *ssk, unsigned int size, + unsigned int ldiff, u32 dst_portid, + gfp_t gfp_mask); +static inline struct sk_buff * +netlink_alloc_skb(struct sock *ssk, unsigned int size, u32 dst_portid, + gfp_t gfp_mask) +{ + return __netlink_alloc_skb(ssk, size, 0, dst_portid, gfp_mask); +} + extern int netlink_unicast(struct sock *ssk, struct sk_buff *skb, __u32 portid, int nonblock); extern int netlink_broadcast(struct sock *ssk, struct sk_buff *skb, __u32 portid, __u32 group, gfp_t allocation); --- linux-raspi2-4.2.0.orig/include/linux/omap-dma.h +++ linux-raspi2-4.2.0/include/linux/omap-dma.h @@ -17,7 +17,7 @@ #include -#define INT_DMA_LCD 25 +#define INT_DMA_LCD (NR_IRQS_LEGACY + 25) #define OMAP1_DMA_TOUT_IRQ (1 << 0) #define OMAP_DMA_DROP_IRQ (1 << 1) --- linux-raspi2-4.2.0.orig/include/linux/pci.h +++ linux-raspi2-4.2.0/include/linux/pci.h @@ -180,6 +180,8 @@ PCI_DEV_FLAGS_NO_BUS_RESET = (__force pci_dev_flags_t) (1 << 6), /* Do not use PM reset even if device advertises NoSoftRst- */ PCI_DEV_FLAGS_NO_PM_RESET = (__force pci_dev_flags_t) (1 << 7), + /* Get VPD from function 0 VPD */ + PCI_DEV_FLAGS_VPD_REF_F0 = (__force pci_dev_flags_t) (1 << 8), }; enum pci_irq_reroute_variant { --- linux-raspi2-4.2.0.orig/include/linux/platform_data/bcm2708.h +++ linux-raspi2-4.2.0/include/linux/platform_data/bcm2708.h @@ -0,0 +1,23 @@ +/* + * include/linux/platform_data/bcm2708.h + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + * + * (C) 2014 Julian Scheel + * + */ +#ifndef __BCM2708_H_ +#define __BCM2708_H_ + +typedef enum { + BCM2708_PULL_OFF, + BCM2708_PULL_UP, + BCM2708_PULL_DOWN +} bcm2708_gpio_pull_t; + +extern int bcm2708_gpio_setpull(struct gpio_chip *gc, unsigned offset, + bcm2708_gpio_pull_t value); + +#endif --- linux-raspi2-4.2.0.orig/include/linux/platform_data/dma-bcm2708.h +++ linux-raspi2-4.2.0/include/linux/platform_data/dma-bcm2708.h @@ -0,0 +1,143 @@ +/* + * Copyright (C) 2010 Broadcom + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + */ + +#ifndef _PLAT_BCM2708_DMA_H +#define _PLAT_BCM2708_DMA_H + +/* DMA CS Control and Status bits */ +#define BCM2708_DMA_ACTIVE BIT(0) +#define BCM2708_DMA_INT BIT(2) +#define BCM2708_DMA_ISPAUSED BIT(4) /* Pause requested or not active */ +#define BCM2708_DMA_ISHELD BIT(5) /* Is held by DREQ flow control */ +#define BCM2708_DMA_ERR BIT(8) +#define BCM2708_DMA_ABORT BIT(30) /* stop current CB, go to next, WO */ +#define BCM2708_DMA_RESET BIT(31) /* WO, self clearing */ + +/* DMA control block "info" field bits */ +#define BCM2708_DMA_INT_EN BIT(0) +#define BCM2708_DMA_TDMODE BIT(1) +#define BCM2708_DMA_WAIT_RESP BIT(3) +#define BCM2708_DMA_D_INC BIT(4) +#define BCM2708_DMA_D_WIDTH BIT(5) +#define BCM2708_DMA_D_DREQ BIT(6) +#define BCM2708_DMA_S_INC BIT(8) +#define BCM2708_DMA_S_WIDTH BIT(9) +#define BCM2708_DMA_S_DREQ BIT(10) + +#define BCM2708_DMA_BURST(x) (((x) & 0xf) << 12) +#define BCM2708_DMA_PER_MAP(x) ((x) << 16) +#define BCM2708_DMA_WAITS(x) (((x) & 0x1f) << 21) + +#define BCM2708_DMA_DREQ_EMMC 11 +#define BCM2708_DMA_DREQ_SDHOST 13 + +#define BCM2708_DMA_CS 0x00 /* Control and Status */ +#define BCM2708_DMA_ADDR 0x04 +/* the current control block appears in the following registers - read only */ +#define BCM2708_DMA_INFO 0x08 +#define BCM2708_DMA_SOURCE_AD 0x0c +#define BCM2708_DMA_DEST_AD 0x10 +#define BCM2708_DMA_NEXTCB 0x1C +#define BCM2708_DMA_DEBUG 0x20 + +#define BCM2708_DMA4_CS (BCM2708_DMA_CHAN(4) + BCM2708_DMA_CS) +#define BCM2708_DMA4_ADDR (BCM2708_DMA_CHAN(4) + BCM2708_DMA_ADDR) + +#define BCM2708_DMA_TDMODE_LEN(w, h) ((h) << 16 | (w)) + +/* When listing features we can ask for when allocating DMA channels give + those with higher priority smaller ordinal numbers */ +#define BCM_DMA_FEATURE_FAST_ORD 0 +#define BCM_DMA_FEATURE_BULK_ORD 1 +#define BCM_DMA_FEATURE_NORMAL_ORD 2 +#define BCM_DMA_FEATURE_LITE_ORD 3 +#define BCM_DMA_FEATURE_FAST BIT(BCM_DMA_FEATURE_FAST_ORD) +#define BCM_DMA_FEATURE_BULK BIT(BCM_DMA_FEATURE_BULK_ORD) +#define BCM_DMA_FEATURE_NORMAL BIT(BCM_DMA_FEATURE_NORMAL_ORD) +#define BCM_DMA_FEATURE_LITE BIT(BCM_DMA_FEATURE_LITE_ORD) +#define BCM_DMA_FEATURE_COUNT 4 + +struct bcm2708_dma_cb { + unsigned long info; + unsigned long src; + unsigned long dst; + unsigned long length; + unsigned long stride; + unsigned long next; + unsigned long pad[2]; +}; + +struct scatterlist; +struct platform_device; + +#ifdef CONFIG_DMA_BCM2708_LEGACY + +int bcm_sg_suitable_for_dma(struct scatterlist *sg_ptr, int sg_len); +void bcm_dma_start(void __iomem *dma_chan_base, dma_addr_t control_block); +void bcm_dma_wait_idle(void __iomem *dma_chan_base); +bool bcm_dma_is_busy(void __iomem *dma_chan_base); +int bcm_dma_abort(void __iomem *dma_chan_base); + +/* return channel no or -ve error */ +int bcm_dma_chan_alloc(unsigned preferred_feature_set, + void __iomem **out_dma_base, int *out_dma_irq); +int bcm_dma_chan_free(int channel); + +int bcm_dmaman_probe(struct platform_device *pdev, void __iomem *base, + u32 chans_available); +int bcm_dmaman_remove(struct platform_device *pdev); + +#else /* CONFIG_DMA_BCM2708_LEGACY */ + +static inline int bcm_sg_suitable_for_dma(struct scatterlist *sg_ptr, + int sg_len) +{ + return 0; +} + +static inline void bcm_dma_start(void __iomem *dma_chan_base, + dma_addr_t control_block) { } + +static inline void bcm_dma_wait_idle(void __iomem *dma_chan_base) { } + +static inline bool bcm_dma_is_busy(void __iomem *dma_chan_base) +{ + return false; +} + +static inline int bcm_dma_abort(void __iomem *dma_chan_base) +{ + return -EINVAL; +} + +static inline int bcm_dma_chan_alloc(unsigned preferred_feature_set, + void __iomem **out_dma_base, + int *out_dma_irq) +{ + return -EINVAL; +} + +static inline int bcm_dma_chan_free(int channel) +{ + return -EINVAL; +} + +static inline int bcm_dmaman_probe(struct platform_device *pdev, + void __iomem *base, u32 chans_available) +{ + return 0; +} + +static inline int bcm_dmaman_remove(struct platform_device *pdev) +{ + return 0; +} + +#endif /* CONFIG_DMA_BCM2708_LEGACY */ + +#endif /* _PLAT_BCM2708_DMA_H */ --- linux-raspi2-4.2.0.orig/include/linux/platform_data/itco_wdt.h +++ linux-raspi2-4.2.0/include/linux/platform_data/itco_wdt.h @@ -0,0 +1,19 @@ +/* + * Platform data for the Intel TCO Watchdog + */ + +#ifndef _ITCO_WDT_H_ +#define _ITCO_WDT_H_ + +/* Watchdog resources */ +#define ICH_RES_IO_TCO 0 +#define ICH_RES_IO_SMI 1 +#define ICH_RES_MEM_OFF 2 +#define ICH_RES_MEM_GCS_PMC 0 + +struct itco_wdt_platform_data { + char name[32]; + unsigned int version; +}; + +#endif /* _ITCO_WDT_H_ */ --- linux-raspi2-4.2.0.orig/include/linux/pm_qos.h +++ linux-raspi2-4.2.0/include/linux/pm_qos.h @@ -161,6 +161,8 @@ int dev_pm_qos_update_flags(struct device *dev, s32 mask, bool set); s32 dev_pm_qos_get_user_latency_tolerance(struct device *dev); int dev_pm_qos_update_user_latency_tolerance(struct device *dev, s32 val); +int dev_pm_qos_expose_latency_tolerance(struct device *dev); +void dev_pm_qos_hide_latency_tolerance(struct device *dev); static inline s32 dev_pm_qos_requested_resume_latency(struct device *dev) { @@ -229,6 +231,9 @@ { return PM_QOS_LATENCY_TOLERANCE_NO_CONSTRAINT; } static inline int dev_pm_qos_update_user_latency_tolerance(struct device *dev, s32 val) { return 0; } +static inline int dev_pm_qos_expose_latency_tolerance(struct device *dev) + { return 0; } +static inline void dev_pm_qos_hide_latency_tolerance(struct device *dev) {} static inline s32 dev_pm_qos_requested_resume_latency(struct device *dev) { return 0; } static inline s32 dev_pm_qos_requested_flags(struct device *dev) { return 0; } --- linux-raspi2-4.2.0.orig/include/linux/preempt.h +++ linux-raspi2-4.2.0/include/linux/preempt.h @@ -84,13 +84,21 @@ */ #define in_nmi() (preempt_count() & NMI_MASK) +/* + * The preempt_count offset after preempt_disable(); + */ #if defined(CONFIG_PREEMPT_COUNT) -# define PREEMPT_DISABLE_OFFSET 1 +# define PREEMPT_DISABLE_OFFSET PREEMPT_OFFSET #else -# define PREEMPT_DISABLE_OFFSET 0 +# define PREEMPT_DISABLE_OFFSET 0 #endif /* + * The preempt_count offset after spin_lock() + */ +#define PREEMPT_LOCK_OFFSET PREEMPT_DISABLE_OFFSET + +/* * The preempt_count offset needed for things like: * * spin_lock_bh() @@ -103,7 +111,7 @@ * * Work as expected. */ -#define SOFTIRQ_LOCK_OFFSET (SOFTIRQ_DISABLE_OFFSET + PREEMPT_DISABLE_OFFSET) +#define SOFTIRQ_LOCK_OFFSET (SOFTIRQ_DISABLE_OFFSET + PREEMPT_LOCK_OFFSET) /* * Are we running in atomic context? WARNING: this macro cannot @@ -124,7 +132,8 @@ #if defined(CONFIG_DEBUG_PREEMPT) || defined(CONFIG_PREEMPT_TRACER) extern void preempt_count_add(int val); extern void preempt_count_sub(int val); -#define preempt_count_dec_and_test() ({ preempt_count_sub(1); should_resched(); }) +#define preempt_count_dec_and_test() \ + ({ preempt_count_sub(1); should_resched(0); }) #else #define preempt_count_add(val) __preempt_count_add(val) #define preempt_count_sub(val) __preempt_count_sub(val) @@ -184,7 +193,7 @@ #define preempt_check_resched() \ do { \ - if (should_resched()) \ + if (should_resched(0)) \ __preempt_schedule(); \ } while (0) --- linux-raspi2-4.2.0.orig/include/linux/pxa2xx_ssp.h +++ linux-raspi2-4.2.0/include/linux/pxa2xx_ssp.h @@ -197,6 +197,7 @@ QUARK_X1000_SSP, LPSS_LPT_SSP, /* Keep LPSS types sorted with lpss_platforms[] */ LPSS_BYT_SSP, + LPSS_SPT_SSP, }; struct ssp_device { --- linux-raspi2-4.2.0.orig/include/linux/sched.h +++ linux-raspi2-4.2.0/include/linux/sched.h @@ -754,6 +754,18 @@ unsigned audit_tty_log_passwd; struct tty_audit_buf *tty_audit_buf; #endif +#ifdef CONFIG_CGROUPS + /* + * group_rwsem prevents new tasks from entering the threadgroup and + * member tasks from exiting,a more specifically, setting of + * PF_EXITING. fork and exit paths are protected with this rwsem + * using threadgroup_change_begin/end(). Users which require + * threadgroup to remain stable should use threadgroup_[un]lock() + * which also takes care of exec path. Currently, cgroup is the + * only user. + */ + struct rw_semaphore group_rwsem; +#endif oom_flags_t oom_flags; short oom_score_adj; /* OOM kill score adjustment */ @@ -2897,12 +2909,6 @@ extern int __cond_resched_lock(spinlock_t *lock); -#ifdef CONFIG_PREEMPT_COUNT -#define PREEMPT_LOCK_OFFSET PREEMPT_OFFSET -#else -#define PREEMPT_LOCK_OFFSET 0 -#endif - #define cond_resched_lock(lock) ({ \ ___might_sleep(__FILE__, __LINE__, PREEMPT_LOCK_OFFSET);\ __cond_resched_lock(lock); \ --- linux-raspi2-4.2.0.orig/include/linux/security.h +++ linux-raspi2-4.2.0/include/linux/security.h @@ -946,7 +946,7 @@ unsigned long arg4, unsigned long arg5) { - return cap_task_prctl(option, arg2, arg3, arg3, arg5); + return cap_task_prctl(option, arg2, arg3, arg4, arg5); } static inline void security_task_to_inode(struct task_struct *p, struct inode *inode) --- linux-raspi2-4.2.0.orig/include/linux/seq_file.h +++ linux-raspi2-4.2.0/include/linux/seq_file.h @@ -149,6 +149,41 @@ #endif } +/** + * seq_show_options - display mount options with appropriate escapes. + * @m: the seq_file handle + * @name: the mount option name + * @value: the mount option name's value, can be NULL + */ +static inline void seq_show_option(struct seq_file *m, const char *name, + const char *value) +{ + seq_putc(m, ','); + seq_escape(m, name, ",= \t\n\\"); + if (value) { + seq_putc(m, '='); + seq_escape(m, value, ", \t\n\\"); + } +} + +/** + * seq_show_option_n - display mount options with appropriate escapes + * where @value must be a specific length. + * @m: the seq_file handle + * @name: the mount option name + * @value: the mount option name's value, cannot be NULL + * @length: the length of @value to display + * + * This is a macro since this uses "length" to define the size of the + * stack buffer. + */ +#define seq_show_option_n(m, name, value, length) { \ + char val_buf[length + 1]; \ + strncpy(val_buf, value, length); \ + val_buf[length] = '\0'; \ + seq_show_option(m, name, val_buf); \ +} + #define SEQ_START_TOKEN ((void *)1) /* * Helpers for iteration over list_head-s in seq_files --- linux-raspi2-4.2.0.orig/include/linux/shmem_fs.h +++ linux-raspi2-4.2.0/include/linux/shmem_fs.h @@ -26,10 +26,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 */ kuid_t uid; /* Mount uid for root directory */ kgid_t gid; /* Mount gid for root directory */ --- linux-raspi2-4.2.0.orig/include/linux/skbuff.h +++ linux-raspi2-4.2.0/include/linux/skbuff.h @@ -37,6 +37,7 @@ #include #include #include +#include /* A. Checksumming of received packets by device. * @@ -922,14 +923,90 @@ PKT_HASH_TYPE_L4, /* Input: src_IP, dst_IP, src_port, dst_port */ }; -static inline void -skb_set_hash(struct sk_buff *skb, __u32 hash, enum pkt_hash_types type) +static inline void skb_clear_hash(struct sk_buff *skb) { - skb->l4_hash = (type == PKT_HASH_TYPE_L4); + skb->hash = 0; skb->sw_hash = 0; + skb->l4_hash = 0; +} + +static inline void skb_clear_hash_if_not_l4(struct sk_buff *skb) +{ + if (!skb->l4_hash) + skb_clear_hash(skb); +} + +static inline void +__skb_set_hash(struct sk_buff *skb, __u32 hash, bool is_sw, bool is_l4) +{ + skb->l4_hash = is_l4; + skb->sw_hash = is_sw; skb->hash = hash; } +static inline void +skb_set_hash(struct sk_buff *skb, __u32 hash, enum pkt_hash_types type) +{ + /* Used by drivers to set hash from HW */ + __skb_set_hash(skb, hash, false, type == PKT_HASH_TYPE_L4); +} + +static inline void +__skb_set_sw_hash(struct sk_buff *skb, __u32 hash, bool is_l4) +{ + __skb_set_hash(skb, hash, true, is_l4); +} + +void __skb_get_hash(struct sk_buff *skb); +u32 skb_get_poff(const struct sk_buff *skb); +u32 __skb_get_poff(const struct sk_buff *skb, void *data, + const struct flow_keys *keys, int hlen); +__be32 __skb_flow_get_ports(const struct sk_buff *skb, int thoff, u8 ip_proto, + void *data, int hlen_proto); + +static inline __be32 skb_flow_get_ports(const struct sk_buff *skb, + int thoff, u8 ip_proto) +{ + return __skb_flow_get_ports(skb, thoff, ip_proto, NULL, 0); +} + +void skb_flow_dissector_init(struct flow_dissector *flow_dissector, + const struct flow_dissector_key *key, + unsigned int key_count); + +bool __skb_flow_dissect(const struct sk_buff *skb, + struct flow_dissector *flow_dissector, + void *target_container, + void *data, __be16 proto, int nhoff, int hlen, + unsigned int flags); + +static inline bool skb_flow_dissect(const struct sk_buff *skb, + struct flow_dissector *flow_dissector, + void *target_container, unsigned int flags) +{ + return __skb_flow_dissect(skb, flow_dissector, target_container, + NULL, 0, 0, 0, flags); +} + +static inline bool skb_flow_dissect_flow_keys(const struct sk_buff *skb, + struct flow_keys *flow, + unsigned int flags) +{ + memset(flow, 0, sizeof(*flow)); + return __skb_flow_dissect(skb, &flow_keys_dissector, flow, + NULL, 0, 0, 0, flags); +} + +static inline bool skb_flow_dissect_flow_keys_buf(struct flow_keys *flow, + void *data, __be16 proto, + int nhoff, int hlen, + unsigned int flags) +{ + memset(flow, 0, sizeof(*flow)); + return __skb_flow_dissect(NULL, &flow_keys_buf_dissector, flow, + data, proto, nhoff, hlen, flags); +} + static inline __u32 skb_get_hash(struct sk_buff *skb) { if (!skb->l4_hash && !skb->sw_hash) @@ -938,24 +1015,31 @@ return skb->hash; } -__u32 skb_get_hash_perturb(const struct sk_buff *skb, u32 perturb); +__u32 __skb_get_hash_flowi6(struct sk_buff *skb, struct flowi6 *fl6); -static inline __u32 skb_get_hash_raw(const struct sk_buff *skb) +static inline __u32 skb_get_hash_flowi6(struct sk_buff *skb, struct flowi6 *fl6) { + if (!skb->l4_hash && !skb->sw_hash) + __skb_get_hash_flowi6(skb, fl6); + return skb->hash; } -static inline void skb_clear_hash(struct sk_buff *skb) +__u32 __skb_get_hash_flowi4(struct sk_buff *skb, struct flowi4 *fl); + +static inline __u32 skb_get_hash_flowi4(struct sk_buff *skb, struct flowi4 *fl4) { - skb->hash = 0; - skb->sw_hash = 0; - skb->l4_hash = 0; + if (!skb->l4_hash && !skb->sw_hash) + __skb_get_hash_flowi4(skb, fl4); + + return skb->hash; } -static inline void skb_clear_hash_if_not_l4(struct sk_buff *skb) +__u32 skb_get_hash_perturb(const struct sk_buff *skb, u32 perturb); + +static inline __u32 skb_get_hash_raw(const struct sk_buff *skb) { - if (!skb->l4_hash) - skb_clear_hash(skb); + return skb->hash; } static inline void skb_copy_hash(struct sk_buff *to, const struct sk_buff *from) @@ -1943,7 +2027,7 @@ if (skb_transport_header_was_set(skb)) return; - else if (skb_flow_dissect_flow_keys(skb, &keys)) + else if (skb_flow_dissect_flow_keys(skb, &keys, 0)) skb_set_transport_header(skb, keys.control.thoff); else skb_set_transport_header(skb, offset_hint); @@ -2601,6 +2685,9 @@ { if (skb->ip_summed == CHECKSUM_COMPLETE) skb->csum = csum_sub(skb->csum, csum_partial(start, len, 0)); + else if (skb->ip_summed == CHECKSUM_PARTIAL && + skb_checksum_start_offset(skb) < 0) + skb->ip_summed = CHECKSUM_NONE; } unsigned char *skb_pull_rcsum(struct sk_buff *skb, unsigned int len); --- linux-raspi2-4.2.0.orig/include/linux/splice.h +++ linux-raspi2-4.2.0/include/linux/splice.h @@ -83,4 +83,10 @@ extern void spd_release_page(struct splice_pipe_desc *, unsigned int); extern const struct pipe_buf_operations page_cache_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-raspi2-4.2.0.orig/include/linux/sunrpc/svc_rdma.h +++ linux-raspi2-4.2.0/include/linux/sunrpc/svc_rdma.h @@ -172,13 +172,6 @@ #define RDMAXPRT_SQ_PENDING 2 #define RDMAXPRT_CONN_PENDING 3 -#define RPCRDMA_MAX_SVC_SEGS (64) /* server max scatter/gather */ -#if RPCSVC_MAXPAYLOAD < (RPCRDMA_MAX_SVC_SEGS << PAGE_SHIFT) -#define RPCRDMA_MAXPAYLOAD RPCSVC_MAXPAYLOAD -#else -#define RPCRDMA_MAXPAYLOAD (RPCRDMA_MAX_SVC_SEGS << PAGE_SHIFT) -#endif - #define RPCRDMA_LISTEN_BACKLOG 10 /* The default ORD value is based on two outstanding full-size writes with a * page size of 4k, or 32k * 2 ops / 4k = 16 outstanding RDMA_READ. */ @@ -187,6 +180,8 @@ #define RPCRDMA_MAX_REQUESTS 32 #define RPCRDMA_MAX_REQ_SIZE 4096 +#define RPCSVC_MAXPAYLOAD_RDMA RPCSVC_MAXPAYLOAD + /* svc_rdma_marshal.c */ extern int svc_rdma_xdr_decode_req(struct rpcrdma_msg **, struct svc_rqst *); extern int svc_rdma_xdr_encode_error(struct svcxprt_rdma *, --- linux-raspi2-4.2.0.orig/include/linux/sunrpc/xprtsock.h +++ linux-raspi2-4.2.0/include/linux/sunrpc/xprtsock.h @@ -42,6 +42,7 @@ /* * Connection of transports */ + unsigned long sock_state; struct delayed_work connect_worker; struct sockaddr_storage srcaddr; unsigned short srcport; @@ -76,6 +77,8 @@ */ #define TCP_RPC_REPLY (1UL << 6) +#define XPRT_SOCK_CONNECTING 1U + #endif /* __KERNEL__ */ #endif /* _LINUX_SUNRPC_XPRTSOCK_H */ --- linux-raspi2-4.2.0.orig/include/linux/tracepoint.h +++ linux-raspi2-4.2.0/include/linux/tracepoint.h @@ -167,10 +167,11 @@ * structure. Force alignment to the same alignment as the section start. * * When lockdep is enabled, we make sure to always do the RCU portions of - * the tracepoint code, regardless of whether tracing is on or we match the - * condition. This lets us find RCU issues triggered with tracepoints even - * when this tracepoint is off. This code has no purpose other than poking - * RCU a bit. + * the tracepoint code, regardless of whether tracing is on. However, + * don't check if the condition is false, due to interaction with idle + * instrumentation. This lets us find RCU issues triggered with tracepoints + * even when this tracepoint is off. This code has no purpose other than + * poking RCU a bit. */ #define __DECLARE_TRACE(name, proto, args, cond, data_proto, data_args) \ extern struct tracepoint __tracepoint_##name; \ --- linux-raspi2-4.2.0.orig/include/linux/tty.h +++ linux-raspi2-4.2.0/include/linux/tty.h @@ -605,7 +605,7 @@ /* tty_audit.c */ #ifdef CONFIG_AUDIT -extern void tty_audit_add_data(struct tty_struct *tty, unsigned char *data, +extern void tty_audit_add_data(struct tty_struct *tty, const void *data, size_t size, unsigned icanon); extern void tty_audit_exit(void); extern void tty_audit_fork(struct signal_struct *sig); @@ -613,8 +613,8 @@ extern void tty_audit_push(struct tty_struct *tty); extern int tty_audit_push_current(void); #else -static inline void tty_audit_add_data(struct tty_struct *tty, - unsigned char *data, size_t size, unsigned icanon) +static inline void tty_audit_add_data(struct tty_struct *tty, const void *data, + size_t size, unsigned icanon) { } static inline void tty_audit_tiocsti(struct tty_struct *tty, char ch) --- linux-raspi2-4.2.0.orig/include/linux/vmstat.h +++ linux-raspi2-4.2.0/include/linux/vmstat.h @@ -241,7 +241,11 @@ static inline void __dec_zone_state(struct zone *zone, enum zone_stat_item item) { atomic_long_dec(&zone->vm_stat[item]); + if (item == NR_FILE_DIRTY && unlikely(atomic_long_read(&zone->vm_stat[item]) < 0)) + atomic_long_set(&zone->vm_stat[item], 0); atomic_long_dec(&vm_stat[item]); + if (item == NR_FILE_DIRTY && unlikely(atomic_long_read(&vm_stat[item]) < 0)) + atomic_long_set(&vm_stat[item], 0); } static inline void __inc_zone_page_state(struct page *page, --- linux-raspi2-4.2.0.orig/include/linux/vt_kern.h +++ linux-raspi2-4.2.0/include/linux/vt_kern.h @@ -130,7 +130,8 @@ 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); + extern 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-raspi2-4.2.0.orig/include/linux/w1-gpio.h +++ linux-raspi2-4.2.0/include/linux/w1-gpio.h @@ -18,6 +18,7 @@ struct w1_gpio_platform_data { unsigned int pin; unsigned int is_open_drain:1; + unsigned int parasitic_power:1; void (*enable_external_pullup)(int enable); unsigned int ext_pullup_enable_pin; unsigned int pullup_duration; --- linux-raspi2-4.2.0.orig/include/misc/cxl.h +++ linux-raspi2-4.2.0/include/misc/cxl.h @@ -200,4 +200,14 @@ ssize_t cxl_fd_read(struct file *file, char __user *buf, size_t count, loff_t *off); +/* + * For EEH, a driver may want to assert a PERST will reload the same image + * from flash into the FPGA. + * + * This is a property of the entire adapter, not a single AFU, so drivers + * should set this property with care! + */ +void cxl_perst_reloads_same_image(struct cxl_afu *afu, + bool perst_reloads_same_image); + #endif /* _MISC_CXL_H */ --- linux-raspi2-4.2.0.orig/include/net/af_unix.h +++ linux-raspi2-4.2.0/include/net/af_unix.h @@ -62,8 +62,13 @@ #define UNIX_GC_CANDIDATE 0 #define UNIX_GC_MAYBE_CYCLE 1 struct socket_wq peer_wq; + wait_queue_t peer_wake; }; -#define unix_sk(__sk) ((struct unix_sock *)__sk) + +static inline struct unix_sock *unix_sk(struct sock *sk) +{ + return (struct unix_sock *)sk; +} #define peer_wait peer_wq.wait --- linux-raspi2-4.2.0.orig/include/net/dst.h +++ linux-raspi2-4.2.0/include/net/dst.h @@ -306,6 +306,39 @@ } } +/** + * dst_hold_safe - Take a reference on a dst if possible + * @dst: pointer to dst entry + * + * This helper returns false if it could not safely + * take a reference on a dst. + */ +static inline bool dst_hold_safe(struct dst_entry *dst) +{ + if (dst->flags & DST_NOCACHE) + return atomic_inc_not_zero(&dst->__refcnt); + dst_hold(dst); + return true; +} + +/** + * skb_dst_force_safe - makes sure skb dst is refcounted + * @skb: buffer + * + * If dst is not yet refcounted and not destroyed, grab a ref on it. + */ +static inline void skb_dst_force_safe(struct sk_buff *skb) +{ + if (skb_dst_is_noref(skb)) { + struct dst_entry *dst = skb_dst(skb); + + if (!dst_hold_safe(dst)) + dst = NULL; + + skb->_skb_refdst = (unsigned long)dst; + } +} + /** * __skb_tunnel_rx - prepare skb for rx reinsert --- linux-raspi2-4.2.0.orig/include/net/flow_dissector.h +++ linux-raspi2-4.2.0/include/net/flow_dissector.h @@ -2,7 +2,6 @@ #define _NET_FLOW_DISSECTOR_H #include -#include #include #include @@ -134,23 +133,6 @@ unsigned short int offset[FLOW_DISSECTOR_KEY_MAX]; }; -void skb_flow_dissector_init(struct flow_dissector *flow_dissector, - const struct flow_dissector_key *key, - unsigned int key_count); - -bool __skb_flow_dissect(const struct sk_buff *skb, - struct flow_dissector *flow_dissector, - void *target_container, - void *data, __be16 proto, int nhoff, int hlen); - -static inline bool skb_flow_dissect(const struct sk_buff *skb, - struct flow_dissector *flow_dissector, - void *target_container) -{ - return __skb_flow_dissect(skb, flow_dissector, target_container, - NULL, 0, 0, 0); -} - struct flow_keys { struct flow_dissector_key_control control; #define FLOW_KEYS_HASH_START_FIELD basic @@ -170,38 +152,6 @@ extern struct flow_dissector flow_keys_dissector; extern struct flow_dissector flow_keys_buf_dissector; -static inline bool skb_flow_dissect_flow_keys(const struct sk_buff *skb, - struct flow_keys *flow) -{ - memset(flow, 0, sizeof(*flow)); - return __skb_flow_dissect(skb, &flow_keys_dissector, flow, - NULL, 0, 0, 0); -} - -static inline bool skb_flow_dissect_flow_keys_buf(struct flow_keys *flow, - void *data, __be16 proto, - int nhoff, int hlen) -{ - memset(flow, 0, sizeof(*flow)); - return __skb_flow_dissect(NULL, &flow_keys_buf_dissector, flow, - data, proto, nhoff, hlen); -} - -__be32 __skb_flow_get_ports(const struct sk_buff *skb, int thoff, u8 ip_proto, - void *data, int hlen_proto); - -static inline __be32 skb_flow_get_ports(const struct sk_buff *skb, - int thoff, u8 ip_proto) -{ - return __skb_flow_get_ports(skb, thoff, ip_proto, NULL, 0); -} - -u32 flow_hash_from_keys(struct flow_keys *keys); -void __skb_get_hash(struct sk_buff *skb); -u32 skb_get_poff(const struct sk_buff *skb); -u32 __skb_get_poff(const struct sk_buff *skb, void *data, - const struct flow_keys *keys, int hlen); - /* struct flow_keys_digest: * * This structure is used to hold a digest of the full flow keys. This is a @@ -217,4 +167,9 @@ void make_flow_keys_digest(struct flow_keys_digest *digest, const struct flow_keys *flow); +static inline bool flow_keys_have_l4(struct flow_keys *keys) +{ + return (keys->ports.ports || keys->tags.flow_label); +} + #endif --- linux-raspi2-4.2.0.orig/include/net/inet_common.h +++ linux-raspi2-4.2.0/include/net/inet_common.h @@ -41,7 +41,8 @@ static inline void inet_ctl_sock_destroy(struct sock *sk) { - sock_release(sk->sk_socket); + if (sk) + sock_release(sk->sk_socket); } #endif --- linux-raspi2-4.2.0.orig/include/net/inet_frag.h +++ linux-raspi2-4.2.0/include/net/inet_frag.h @@ -108,7 +108,15 @@ int inet_frags_init(struct inet_frags *); void inet_frags_fini(struct inet_frags *); -void inet_frags_init_net(struct netns_frags *nf); +static inline int inet_frags_init_net(struct netns_frags *nf) +{ + return percpu_counter_init(&nf->mem, 0, GFP_KERNEL); +} +static inline void inet_frags_uninit_net(struct netns_frags *nf) +{ + percpu_counter_destroy(&nf->mem); +} + void inet_frags_exit_net(struct netns_frags *nf, struct inet_frags *f); void inet_frag_kill(struct inet_frag_queue *q, struct inet_frags *f); @@ -154,11 +162,6 @@ __percpu_counter_add(&nf->mem, i, frag_percpu_counter_batch); } -static inline void init_frag_mem_limit(struct netns_frags *nf) -{ - percpu_counter_init(&nf->mem, 0, GFP_KERNEL); -} - static inline unsigned int sum_frag_mem_limit(struct netns_frags *nf) { unsigned int res; --- linux-raspi2-4.2.0.orig/include/net/ip.h +++ linux-raspi2-4.2.0/include/net/ip.h @@ -370,22 +370,6 @@ flow->control.addr_type = FLOW_DISSECTOR_KEY_IPV4_ADDRS; } -static inline void inet_set_txhash(struct sock *sk) -{ - struct inet_sock *inet = inet_sk(sk); - struct flow_keys keys; - - memset(&keys, 0, sizeof(keys)); - - keys.addrs.v4addrs.src = inet->inet_saddr; - keys.addrs.v4addrs.dst = inet->inet_daddr; - keys.control.addr_type = FLOW_DISSECTOR_KEY_IPV4_ADDRS; - keys.ports.src = inet->inet_sport; - keys.ports.dst = inet->inet_dport; - - sk->sk_txhash = flow_hash_from_keys(&keys); -} - static inline __wsum inet_gro_compute_pseudo(struct sk_buff *skb, int proto) { const struct iphdr *iph = skb_gro_network_header(skb); --- linux-raspi2-4.2.0.orig/include/net/ip6_fib.h +++ linux-raspi2-4.2.0/include/net/ip6_fib.h @@ -165,7 +165,8 @@ static inline u32 rt6_get_cookie(const struct rt6_info *rt) { - if (rt->rt6i_flags & RTF_PCPU || unlikely(rt->dst.flags & DST_NOCACHE)) + if (rt->rt6i_flags & RTF_PCPU || + (unlikely(rt->dst.flags & DST_NOCACHE) && rt->dst.from)) rt = (struct rt6_info *)(rt->dst.from); return rt->rt6i_node ? rt->rt6i_node->fn_sernum : 0; --- linux-raspi2-4.2.0.orig/include/net/ip6_tunnel.h +++ linux-raspi2-4.2.0/include/net/ip6_tunnel.h @@ -83,11 +83,12 @@ err = ip6_local_out_sk(sk, skb); if (net_xmit_eval(err) == 0) { - struct pcpu_sw_netstats *tstats = this_cpu_ptr(dev->tstats); + struct pcpu_sw_netstats *tstats = get_cpu_ptr(dev->tstats); u64_stats_update_begin(&tstats->syncp); tstats->tx_bytes += pkt_len; tstats->tx_packets++; u64_stats_update_end(&tstats->syncp); + put_cpu_ptr(tstats); } else { stats->tx_errors++; stats->tx_aborted_errors++; --- linux-raspi2-4.2.0.orig/include/net/ip_fib.h +++ linux-raspi2-4.2.0/include/net/ip_fib.h @@ -306,7 +306,7 @@ /* Exported by fib_semantics.c */ int ip_fib_check_default(__be32 gw, struct net_device *dev); -int fib_sync_down_dev(struct net_device *dev, unsigned long event); +int fib_sync_down_dev(struct net_device *dev, unsigned long event, bool force); int fib_sync_down_addr(struct net *net, __be32 local); int fib_sync_up(struct net_device *dev, unsigned int nh_flags); void fib_select_multipath(struct fib_result *res); --- linux-raspi2-4.2.0.orig/include/net/ip_tunnels.h +++ linux-raspi2-4.2.0/include/net/ip_tunnels.h @@ -51,6 +51,20 @@ __be32 saddr; }; +/* 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_tunnel_fan { +/* u32 __rcu *map;*/ + u32 map[FAN_OVERLAY_CNT]; +}; + struct ip_tunnel { struct ip_tunnel __rcu *next; struct hlist_node hash_node; @@ -82,6 +96,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; int ip_tnl_net_id; struct gro_cells gro_cells; }; @@ -101,6 +116,7 @@ #define TUNNEL_VXLAN_OPT __cpu_to_be16(0x1000) #define TUNNEL_OPTIONS_PRESENT (TUNNEL_GENEVE_OPT | TUNNEL_VXLAN_OPT) +#define TUNNEL_FAN __cpu_to_be16(0x4000) struct tnl_ptk_info { __be16 flags; @@ -207,12 +223,13 @@ struct pcpu_sw_netstats __percpu *stats) { if (err > 0) { - struct pcpu_sw_netstats *tstats = this_cpu_ptr(stats); + struct pcpu_sw_netstats *tstats = get_cpu_ptr(stats); u64_stats_update_begin(&tstats->syncp); tstats->tx_bytes += err; tstats->tx_packets++; u64_stats_update_end(&tstats->syncp); + put_cpu_ptr(tstats); } else if (err < 0) { err_stats->tx_errors++; err_stats->tx_aborted_errors++; --- linux-raspi2-4.2.0.orig/include/net/ipv6.h +++ linux-raspi2-4.2.0/include/net/ipv6.h @@ -205,6 +205,7 @@ */ struct ipv6_txoptions { + atomic_t refcnt; /* Length of this structure */ int tot_len; @@ -217,7 +218,7 @@ struct ipv6_opt_hdr *dst0opt; struct ipv6_rt_hdr *srcrt; /* Routing Header */ struct ipv6_opt_hdr *dst1opt; - + struct rcu_head rcu; /* Option buffer, as read by IPV6_PKTOPTIONS, starts here. */ }; @@ -252,6 +253,24 @@ struct rcu_head rcu; }; +static inline struct ipv6_txoptions *txopt_get(const struct ipv6_pinfo *np) +{ + struct ipv6_txoptions *opt; + + rcu_read_lock(); + opt = rcu_dereference(np->opt); + if (opt && !atomic_inc_not_zero(&opt->refcnt)) + opt = NULL; + rcu_read_unlock(); + return opt; +} + +static inline void txopt_put(struct ipv6_txoptions *opt) +{ + if (opt && atomic_dec_and_test(&opt->refcnt)) + kfree_rcu(opt, rcu); +} + struct ip6_flowlabel *fl6_sock_lookup(struct sock *sk, __be32 label); struct ipv6_txoptions *fl6_merge_options(struct ipv6_txoptions *opt_space, struct ip6_flowlabel *fl, @@ -490,6 +509,7 @@ u32 user; const struct in6_addr *src; const struct in6_addr *dst; + int iif; u8 ecn; }; @@ -707,25 +727,6 @@ } #if IS_ENABLED(CONFIG_IPV6) -static inline void ip6_set_txhash(struct sock *sk) -{ - struct inet_sock *inet = inet_sk(sk); - struct ipv6_pinfo *np = inet6_sk(sk); - struct flow_keys keys; - - memset(&keys, 0, sizeof(keys)); - - memcpy(&keys.addrs.v6addrs.src, &np->saddr, - sizeof(keys.addrs.v6addrs.src)); - memcpy(&keys.addrs.v6addrs.dst, &sk->sk_v6_daddr, - sizeof(keys.addrs.v6addrs.dst)); - keys.control.addr_type = FLOW_DISSECTOR_KEY_IPV6_ADDRS; - keys.ports.src = inet->inet_sport; - keys.ports.dst = inet->inet_dport; - - sk->sk_txhash = flow_hash_from_keys(&keys); -} - static inline __be32 ip6_make_flowlabel(struct net *net, struct sk_buff *skb, __be32 flowlabel, bool autolabel) { --- linux-raspi2-4.2.0.orig/include/net/netfilter/br_netfilter.h +++ linux-raspi2-4.2.0/include/net/netfilter/br_netfilter.h @@ -59,7 +59,7 @@ br_nf_pre_routing_ipv6(const struct nf_hook_ops *ops, struct sk_buff *skb, const struct nf_hook_state *state) { - return NF_DROP; + return NF_ACCEPT; } #endif --- linux-raspi2-4.2.0.orig/include/net/netfilter/nf_conntrack.h +++ linux-raspi2-4.2.0/include/net/netfilter/nf_conntrack.h @@ -183,10 +183,6 @@ void nf_ct_free_hashtable(void *hash, unsigned int size); -struct nf_conntrack_tuple_hash * -__nf_conntrack_find(struct net *net, u16 zone, - const struct nf_conntrack_tuple *tuple); - int nf_conntrack_hash_check_insert(struct nf_conn *ct); bool nf_ct_delete(struct nf_conn *ct, u32 pid, int report); @@ -292,6 +288,7 @@ void init_nf_conntrack_hash_rnd(void); struct nf_conn *nf_ct_tmpl_alloc(struct net *net, u16 zone, gfp_t flags); +void nf_ct_tmpl_free(struct nf_conn *tmpl); #define NF_CT_STAT_INC(net, count) __this_cpu_inc((net)->ct.stat->count) #define NF_CT_STAT_INC_ATOMIC(net, count) this_cpu_inc((net)->ct.stat->count) --- linux-raspi2-4.2.0.orig/include/net/netfilter/nf_tables.h +++ linux-raspi2-4.2.0/include/net/netfilter/nf_tables.h @@ -125,7 +125,7 @@ static inline enum nft_registers nft_type_to_reg(enum nft_data_types type) { - return type == NFT_DATA_VERDICT ? NFT_REG_VERDICT : NFT_REG_1; + return type == NFT_DATA_VERDICT ? NFT_REG_VERDICT : NFT_REG_1 * NFT_REG_SIZE / NFT_REG32_SIZE; } unsigned int nft_parse_register(const struct nlattr *attr); --- linux-raspi2-4.2.0.orig/include/net/sch_generic.h +++ linux-raspi2-4.2.0/include/net/sch_generic.h @@ -61,6 +61,9 @@ */ #define TCQ_F_WARN_NONWC (1 << 16) #define TCQ_F_CPUSTATS 0x20 /* run using percpu statistics */ +#define TCQ_F_NOPARENT 0x40 /* root of its hierarchy : + * qdisc_tree_decrease_qlen() should stop. + */ u32 limit; const struct Qdisc_ops *ops; struct qdisc_size_table __rcu *stab; --- linux-raspi2-4.2.0.orig/include/net/sock.h +++ linux-raspi2-4.2.0/include/net/sock.h @@ -387,6 +387,7 @@ sk_no_check_rx : 1, sk_userlocks : 4, sk_protocol : 8, +#define SK_PROTOCOL_MAX U8_MAX sk_type : 16; kmemcheck_bitfield_end(flags); int sk_wmem_queued; @@ -722,6 +723,8 @@ SOCK_SELECT_ERR_QUEUE, /* Wake select on error queue */ }; +#define SK_FLAGS_TIMESTAMP ((1UL << SOCK_TIMESTAMP) | (1UL << SOCK_TIMESTAMPING_RX_SOFTWARE)) + static inline void sock_copy_flags(struct sock *nsk, struct sock *osk) { nsk->sk_flags = osk->sk_flags; @@ -796,7 +799,7 @@ static inline void __sk_add_backlog(struct sock *sk, struct sk_buff *skb) { /* dont let skb dst not refcounted, we are going to leave rcu lock */ - skb_dst_force(skb); + skb_dst_force_safe(skb); if (!sk->sk_backlog.tail) sk->sk_backlog.head = skb; @@ -826,6 +829,14 @@ if (sk_rcvqueues_full(sk, limit)) return -ENOBUFS; + /* + * If the skb was allocated from pfmemalloc reserves, only + * allow SOCK_MEMALLOC sockets to use it as this socket is + * helping free memory + */ + if (skb_pfmemalloc(skb) && !sock_flag(sk, SOCK_MEMALLOC)) + return -ENOMEM; + __sk_add_backlog(sk, skb); sk->sk_backlog.len += skb->truesize; return 0; @@ -1685,6 +1696,14 @@ kuid_t sock_i_uid(struct sock *sk); unsigned long sock_i_ino(struct sock *sk); +static inline void sk_set_txhash(struct sock *sk) +{ + sk->sk_txhash = prandom_u32(); + + if (unlikely(!sk->sk_txhash)) + sk->sk_txhash = 1; +} + static inline struct dst_entry * __sk_dst_get(struct sock *sk) { --- linux-raspi2-4.2.0.orig/include/net/switchdev.h +++ linux-raspi2-4.2.0/include/net/switchdev.h @@ -268,7 +268,7 @@ struct net_device *filter_dev, int idx) { - return -EOPNOTSUPP; + return idx; } #endif --- linux-raspi2-4.2.0.orig/include/net/vxlan.h +++ linux-raspi2-4.2.0/include/net/vxlan.h @@ -78,7 +78,7 @@ }; /* VXLAN header flags. */ -#define VXLAN_HF_RCO BIT(24) +#define VXLAN_HF_RCO BIT(21) #define VXLAN_HF_VNI BIT(27) #define VXLAN_HF_GBP BIT(31) --- linux-raspi2-4.2.0.orig/include/rdma/ib_verbs.h +++ linux-raspi2-4.2.0/include/rdma/ib_verbs.h @@ -467,7 +467,7 @@ IB_EVENT_GID_CHANGE, }; -__attribute_const__ const char *ib_event_msg(enum ib_event_type event); +const char *__attribute_const__ ib_event_msg(enum ib_event_type event); struct ib_event { struct ib_device *device; @@ -720,7 +720,7 @@ IB_WC_GENERAL_ERR }; -__attribute_const__ const char *ib_wc_status_msg(enum ib_wc_status status); +const char *__attribute_const__ ib_wc_status_msg(enum ib_wc_status status); enum ib_wc_opcode { IB_WC_SEND, --- linux-raspi2-4.2.0.orig/include/rdma/rdma_cm.h +++ linux-raspi2-4.2.0/include/rdma/rdma_cm.h @@ -62,7 +62,7 @@ RDMA_CM_EVENT_TIMEWAIT_EXIT }; -__attribute_const__ const char *rdma_event_msg(enum rdma_cm_event_type event); +const char *__attribute_const__ rdma_event_msg(enum rdma_cm_event_type event); enum rdma_port_space { RDMA_PS_SDP = 0x0001, --- linux-raspi2-4.2.0.orig/include/scsi/libiscsi.h +++ linux-raspi2-4.2.0/include/scsi/libiscsi.h @@ -331,19 +331,12 @@ struct iscsi_transport *tt; struct Scsi_Host *host; struct iscsi_conn *leadconn; /* leading connection */ - /* Between the forward and the backward locks exists a strict locking - * hierarchy. The mutual exclusion zone protected by the forward lock - * can enclose the mutual exclusion zone protected by the backward lock - * but not vice versa. - */ - spinlock_t frwd_lock; /* protects session state, * - * cmdsn, queued_cmdsn * + spinlock_t lock; /* protects session state, * + * sequence numbers, * * session resources: * - * - cmdpool kfifo_out , * - * - mgmtpool, */ - spinlock_t back_lock; /* protects cmdsn_exp * - * cmdsn_max, * - * cmdpool kfifo_in */ + * - cmdpool, * + * - mgmtpool, * + * - r2tpool */ int state; /* session state */ int age; /* counts session re-opens */ --- linux-raspi2-4.2.0.orig/include/scsi/libiscsi_tcp.h +++ linux-raspi2-4.2.0/include/scsi/libiscsi_tcp.h @@ -83,8 +83,6 @@ struct iscsi_pool r2tpool; struct kfifo r2tqueue; void *dd_data; - spinlock_t pool2queue; - spinlock_t queue2pool; }; enum { --- linux-raspi2-4.2.0.orig/include/soc/bcm2835/raspberrypi-firmware.h +++ linux-raspi2-4.2.0/include/soc/bcm2835/raspberrypi-firmware.h @@ -0,0 +1,123 @@ +/* + * Copyright © 2015 Broadcom + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + */ + +#include +#include + +struct rpi_firmware; + +enum rpi_firmware_property_status { + RPI_FIRMWARE_STATUS_REQUEST = 0, + RPI_FIRMWARE_STATUS_SUCCESS = 0x80000000, + RPI_FIRMWARE_STATUS_ERROR = 0x80000001, +}; + +/** + * struct rpi_firmware_property_tag_header - Firmware property tag header + * @tag: One of enum_mbox_property_tag. + * @buf_size: The number of bytes in the value buffer following this + * struct. + * @req_resp_size: On submit, the length of the request (though it doesn't + * appear to be currently used by the firmware). On return, + * the length of the response (always 4 byte aligned), with + * the low bit set. + */ +struct rpi_firmware_property_tag_header { + u32 tag; + u32 buf_size; + u32 req_resp_size; +}; + +enum rpi_firmware_property_tag { + RPI_FIRMWARE_PROPERTY_END = 0, + RPI_FIRMWARE_GET_FIRMWARE_REVISION = 0x00000001, + + RPI_FIRMWARE_SET_CURSOR_INFO = 0x00008010, + RPI_FIRMWARE_SET_CURSOR_STATE = 0x00008011, + + RPI_FIRMWARE_GET_BOARD_MODEL = 0x00010001, + RPI_FIRMWARE_GET_BOARD_REVISION = 0x00010002, + RPI_FIRMWARE_GET_BOARD_MAC_ADDRESS = 0x00010003, + RPI_FIRMWARE_GET_BOARD_SERIAL = 0x00010004, + RPI_FIRMWARE_GET_ARM_MEMORY = 0x00010005, + RPI_FIRMWARE_GET_VC_MEMORY = 0x00010006, + RPI_FIRMWARE_GET_CLOCKS = 0x00010007, + RPI_FIRMWARE_GET_POWER_STATE = 0x00020001, + RPI_FIRMWARE_GET_TIMING = 0x00020002, + RPI_FIRMWARE_SET_POWER_STATE = 0x00028001, + RPI_FIRMWARE_GET_CLOCK_STATE = 0x00030001, + RPI_FIRMWARE_GET_CLOCK_RATE = 0x00030002, + RPI_FIRMWARE_GET_VOLTAGE = 0x00030003, + RPI_FIRMWARE_GET_MAX_CLOCK_RATE = 0x00030004, + RPI_FIRMWARE_GET_MAX_VOLTAGE = 0x00030005, + RPI_FIRMWARE_GET_TEMPERATURE = 0x00030006, + RPI_FIRMWARE_GET_MIN_CLOCK_RATE = 0x00030007, + RPI_FIRMWARE_GET_MIN_VOLTAGE = 0x00030008, + RPI_FIRMWARE_GET_TURBO = 0x00030009, + RPI_FIRMWARE_GET_MAX_TEMPERATURE = 0x0003000a, + RPI_FIRMWARE_GET_STC = 0x0003000b, + RPI_FIRMWARE_ALLOCATE_MEMORY = 0x0003000c, + RPI_FIRMWARE_LOCK_MEMORY = 0x0003000d, + RPI_FIRMWARE_UNLOCK_MEMORY = 0x0003000e, + RPI_FIRMWARE_RELEASE_MEMORY = 0x0003000f, + RPI_FIRMWARE_EXECUTE_CODE = 0x00030010, + RPI_FIRMWARE_EXECUTE_QPU = 0x00030011, + RPI_FIRMWARE_SET_ENABLE_QPU = 0x00030012, + RPI_FIRMWARE_GET_DISPMANX_RESOURCE_MEM_HANDLE = 0x00030014, + RPI_FIRMWARE_GET_EDID_BLOCK = 0x00030020, + RPI_FIRMWARE_GET_CUSTOMER_OTP = 0x00030021, + RPI_FIRMWARE_SET_CLOCK_STATE = 0x00038001, + RPI_FIRMWARE_SET_CLOCK_RATE = 0x00038002, + RPI_FIRMWARE_SET_VOLTAGE = 0x00038003, + RPI_FIRMWARE_SET_TURBO = 0x00038009, + RPI_FIRMWARE_SET_CUSTOMER_OTP = 0x00038021, + + /* Dispmanx TAGS */ + RPI_FIRMWARE_FRAMEBUFFER_ALLOCATE = 0x00040001, + RPI_FIRMWARE_FRAMEBUFFER_BLANK = 0x00040002, + RPI_FIRMWARE_FRAMEBUFFER_GET_PHYSICAL_WIDTH_HEIGHT = 0x00040003, + RPI_FIRMWARE_FRAMEBUFFER_GET_VIRTUAL_WIDTH_HEIGHT = 0x00040004, + RPI_FIRMWARE_FRAMEBUFFER_GET_DEPTH = 0x00040005, + RPI_FIRMWARE_FRAMEBUFFER_GET_PIXEL_ORDER = 0x00040006, + RPI_FIRMWARE_FRAMEBUFFER_GET_ALPHA_MODE = 0x00040007, + RPI_FIRMWARE_FRAMEBUFFER_GET_PITCH = 0x00040008, + RPI_FIRMWARE_FRAMEBUFFER_GET_VIRTUAL_OFFSET = 0x00040009, + RPI_FIRMWARE_FRAMEBUFFER_GET_OVERSCAN = 0x0004000a, + RPI_FIRMWARE_FRAMEBUFFER_GET_PALETTE = 0x0004000b, + RPI_FIRMWARE_FRAMEBUFFER_GET_TOUCHBUF = 0x0004000f, + RPI_FIRMWARE_FRAMEBUFFER_RELEASE = 0x00048001, + RPI_FIRMWARE_FRAMEBUFFER_TEST_PHYSICAL_WIDTH_HEIGHT = 0x00044003, + RPI_FIRMWARE_FRAMEBUFFER_TEST_VIRTUAL_WIDTH_HEIGHT = 0x00044004, + RPI_FIRMWARE_FRAMEBUFFER_TEST_DEPTH = 0x00044005, + RPI_FIRMWARE_FRAMEBUFFER_TEST_PIXEL_ORDER = 0x00044006, + RPI_FIRMWARE_FRAMEBUFFER_TEST_ALPHA_MODE = 0x00044007, + RPI_FIRMWARE_FRAMEBUFFER_TEST_VIRTUAL_OFFSET = 0x00044009, + RPI_FIRMWARE_FRAMEBUFFER_TEST_OVERSCAN = 0x0004400a, + RPI_FIRMWARE_FRAMEBUFFER_TEST_PALETTE = 0x0004400b, + RPI_FIRMWARE_FRAMEBUFFER_TEST_VSYNC = 0x0004400e, + RPI_FIRMWARE_FRAMEBUFFER_SET_PHYSICAL_WIDTH_HEIGHT = 0x00048003, + RPI_FIRMWARE_FRAMEBUFFER_SET_VIRTUAL_WIDTH_HEIGHT = 0x00048004, + RPI_FIRMWARE_FRAMEBUFFER_SET_DEPTH = 0x00048005, + RPI_FIRMWARE_FRAMEBUFFER_SET_PIXEL_ORDER = 0x00048006, + RPI_FIRMWARE_FRAMEBUFFER_SET_ALPHA_MODE = 0x00048007, + RPI_FIRMWARE_FRAMEBUFFER_SET_VIRTUAL_OFFSET = 0x00048009, + RPI_FIRMWARE_FRAMEBUFFER_SET_OVERSCAN = 0x0004800a, + RPI_FIRMWARE_FRAMEBUFFER_SET_PALETTE = 0x0004800b, + RPI_FIRMWARE_FRAMEBUFFER_SET_VSYNC = 0x0004800e, + + RPI_FIRMWARE_VCHIQ_INIT = 0x00048010, + + RPI_FIRMWARE_GET_COMMAND_LINE = 0x00050001, + RPI_FIRMWARE_GET_DMA_CHANNELS = 0x00060001, +}; + +int rpi_firmware_property(struct rpi_firmware *fw, + u32 tag, void *data, size_t len); +int rpi_firmware_property_list(struct rpi_firmware *fw, + void *data, size_t tag_size); +struct rpi_firmware *rpi_firmware_get(struct device_node *firmware_node); --- linux-raspi2-4.2.0.orig/include/soc/tegra/mc.h +++ linux-raspi2-4.2.0/include/soc/tegra/mc.h @@ -66,6 +66,7 @@ bool supports_round_robin_arbitration; bool supports_request_limit; + unsigned int num_tlb_lines; unsigned int num_asids; const struct tegra_smmu_ops *ops; --- linux-raspi2-4.2.0.orig/include/sound/hda_i915.h +++ linux-raspi2-4.2.0/include/sound/hda_i915.h @@ -4,14 +4,17 @@ #ifndef __SOUND_HDA_I915_H #define __SOUND_HDA_I915_H +#include + #ifdef CONFIG_SND_HDA_I915 int snd_hdac_set_codec_wakeup(struct hdac_bus *bus, bool enable); int snd_hdac_display_power(struct hdac_bus *bus, bool enable); int snd_hdac_get_display_clk(struct hdac_bus *bus); int snd_hdac_i915_init(struct hdac_bus *bus); int snd_hdac_i915_exit(struct hdac_bus *bus); +int snd_hdac_i915_register_notifier(const struct i915_audio_component_audio_ops *); #else -static int snd_hdac_set_codec_wakeup(struct hdac_bus *bus, bool enable) +static inline int snd_hdac_set_codec_wakeup(struct hdac_bus *bus, bool enable) { return 0; } @@ -31,6 +34,10 @@ { return 0; } +static inline int snd_hdac_i915_register_notifier(const struct i915_audio_component_audio_ops *ops) +{ + return -ENODEV; +} #endif #endif /* __SOUND_HDA_I915_H */ --- linux-raspi2-4.2.0.orig/include/sound/pcm.h +++ linux-raspi2-4.2.0/include/sound/pcm.h @@ -285,8 +285,6 @@ unsigned int mask; }; -struct snd_pcm_hwptr_log; - /* * userspace-provided audio timestamp config to kernel, * structure is for internal use only and filled with dedicated unpack routine @@ -428,10 +426,6 @@ /* -- OSS things -- */ struct snd_pcm_oss_runtime oss; #endif - -#ifdef CONFIG_SND_PCM_XRUN_DEBUG - struct snd_pcm_hwptr_log *hwptr_log; -#endif }; struct snd_pcm_group { /* keep linked substreams */ --- linux-raspi2-4.2.0.orig/include/sound/soc.h +++ linux-raspi2-4.2.0/include/sound/soc.h @@ -86,7 +86,7 @@ .access = SNDRV_CTL_ELEM_ACCESS_TLV_READ | \ SNDRV_CTL_ELEM_ACCESS_READWRITE, \ .tlv.p = (tlv_array),\ - .info = snd_soc_info_volsw, \ + .info = snd_soc_info_volsw_sx, \ .get = snd_soc_get_volsw_sx,\ .put = snd_soc_put_volsw_sx, \ .private_value = (unsigned long)&(struct soc_mixer_control) \ @@ -156,7 +156,7 @@ .access = SNDRV_CTL_ELEM_ACCESS_TLV_READ | \ SNDRV_CTL_ELEM_ACCESS_READWRITE, \ .tlv.p = (tlv_array), \ - .info = snd_soc_info_volsw, \ + .info = snd_soc_info_volsw_sx, \ .get = snd_soc_get_volsw_sx, \ .put = snd_soc_put_volsw_sx, \ .private_value = (unsigned long)&(struct soc_mixer_control) \ @@ -573,6 +573,8 @@ struct snd_ctl_elem_value *ucontrol); int snd_soc_info_volsw(struct snd_kcontrol *kcontrol, struct snd_ctl_elem_info *uinfo); +int snd_soc_info_volsw_sx(struct snd_kcontrol *kcontrol, + struct snd_ctl_elem_info *uinfo); #define snd_soc_info_bool_ext snd_ctl_boolean_mono_info int snd_soc_get_volsw(struct snd_kcontrol *kcontrol, struct snd_ctl_elem_value *ucontrol); --- linux-raspi2-4.2.0.orig/include/sound/wm8904.h +++ linux-raspi2-4.2.0/include/sound/wm8904.h @@ -119,7 +119,7 @@ #define WM8904_MIC_REGS 2 #define WM8904_GPIO_REGS 4 #define WM8904_DRC_REGS 4 -#define WM8904_EQ_REGS 25 +#define WM8904_EQ_REGS 24 /** * DRC configurations are specified with a label and a set of register --- linux-raspi2-4.2.0.orig/include/target/iscsi/iscsi_target_core.h +++ linux-raspi2-4.2.0/include/target/iscsi/iscsi_target_core.h @@ -776,7 +776,6 @@ enum iscsi_timer_flags_table np_login_timer_flags; u32 np_exports; enum np_flags_table np_flags; - unsigned char np_ip[IPV6_ADDRESS_SPACE]; u16 np_port; spinlock_t np_thread_lock; struct completion np_restart_comp; --- linux-raspi2-4.2.0.orig/include/trace/events/fs.h +++ linux-raspi2-4.2.0/include/trace/events/fs.h @@ -0,0 +1,53 @@ +#undef TRACE_SYSTEM +#define TRACE_SYSTEM fs + +#if !defined(_TRACE_FS_H) || defined(TRACE_HEADER_MULTI_READ) +#define _TRACE_FS_H + +#include +#include + +TRACE_EVENT(do_sys_open, + + TP_PROTO(const char *filename, int flags, int mode), + + TP_ARGS(filename, flags, mode), + + TP_STRUCT__entry( + __string( filename, filename ) + __field( int, flags ) + __field( int, mode ) + ), + + TP_fast_assign( + __assign_str(filename, filename); + __entry->flags = flags; + __entry->mode = mode; + ), + + TP_printk("\"%s\" %x %o", + __get_str(filename), __entry->flags, __entry->mode) +); + +TRACE_EVENT(open_exec, + + TP_PROTO(const char *filename), + + TP_ARGS(filename), + + TP_STRUCT__entry( + __string( filename, filename ) + ), + + TP_fast_assign( + __assign_str(filename, filename); + ), + + TP_printk("\"%s\"", + __get_str(filename)) +); + +#endif /* _TRACE_FS_H */ + +/* This part must be outside protection */ +#include --- linux-raspi2-4.2.0.orig/include/trace/events/sunrpc.h +++ linux-raspi2-4.2.0/include/trace/events/sunrpc.h @@ -529,18 +529,21 @@ TP_STRUCT__entry( __field(struct svc_xprt *, xprt) - __field(struct svc_rqst *, rqst) + __field_struct(struct sockaddr_storage, ss) + __field(int, pid) + __field(unsigned long, flags) ), TP_fast_assign( __entry->xprt = xprt; - __entry->rqst = rqst; + xprt ? memcpy(&__entry->ss, &xprt->xpt_remote, sizeof(__entry->ss)) : memset(&__entry->ss, 0, sizeof(__entry->ss)); + __entry->pid = rqst? rqst->rq_task->pid : 0; + __entry->flags = xprt ? xprt->xpt_flags : 0; ), TP_printk("xprt=0x%p addr=%pIScp pid=%d flags=%s", __entry->xprt, - (struct sockaddr *)&__entry->xprt->xpt_remote, - __entry->rqst ? __entry->rqst->rq_task->pid : 0, - show_svc_xprt_flags(__entry->xprt->xpt_flags)) + (struct sockaddr *)&__entry->ss, + __entry->pid, show_svc_xprt_flags(__entry->flags)) ); TRACE_EVENT(svc_xprt_dequeue, @@ -589,16 +592,20 @@ TP_STRUCT__entry( __field(struct svc_xprt *, xprt) __field(int, len) + __field_struct(struct sockaddr_storage, ss) + __field(unsigned long, flags) ), TP_fast_assign( __entry->xprt = xprt; + xprt ? memcpy(&__entry->ss, &xprt->xpt_remote, sizeof(__entry->ss)) : memset(&__entry->ss, 0, sizeof(__entry->ss)); __entry->len = len; + __entry->flags = xprt ? xprt->xpt_flags : 0; ), TP_printk("xprt=0x%p addr=%pIScp len=%d flags=%s", __entry->xprt, - (struct sockaddr *)&__entry->xprt->xpt_remote, __entry->len, - show_svc_xprt_flags(__entry->xprt->xpt_flags)) + (struct sockaddr *)&__entry->ss, + __entry->len, show_svc_xprt_flags(__entry->flags)) ); #endif /* _TRACE_SUNRPC_H */ --- linux-raspi2-4.2.0.orig/include/uapi/drm/drm_fourcc.h +++ linux-raspi2-4.2.0/include/uapi/drm/drm_fourcc.h @@ -151,7 +151,7 @@ /* add more to the end as needed */ #define fourcc_mod_code(vendor, val) \ - ((((u64)DRM_FORMAT_MOD_VENDOR_## vendor) << 56) | (val & 0x00ffffffffffffffULL)) + ((((__u64)DRM_FORMAT_MOD_VENDOR_## vendor) << 56) | (val & 0x00ffffffffffffffULL)) /* * Format Modifier tokens: --- linux-raspi2-4.2.0.orig/include/uapi/linux/Kbuild +++ linux-raspi2-4.2.0/include/uapi/linux/Kbuild @@ -59,6 +59,7 @@ header-y += atm_tcp.h header-y += atm_zatm.h header-y += audit.h +header-y += aufs_type.h header-y += auto_fs4.h header-y += auto_fs.h header-y += auxvec.h --- linux-raspi2-4.2.0.orig/include/uapi/linux/aufs_type.h +++ linux-raspi2-4.2.0/include/uapi/linux/aufs_type.h @@ -0,0 +1,419 @@ +/* + * Copyright (C) 2005-2015 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 +#else +#include +#include +#endif /* __KERNEL__ */ + +#include + +#define AUFS_VERSION "4.x-rcN-20150629" + +/* todo? move this to linux-2.6.19/include/magic.h */ +#define AUFS_SUPER_MAGIC ('a' << 24 | 'u' << 16 | 'f' << 8 | 's') + +/* ---------------------------------------------------------------------- */ + +#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 + +#ifdef __KERNEL__ +#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 + +#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 +#define ALIGN(x, a) __ALIGN_MASK(x, (typeof(x))(a)-1) +#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[0]; +} __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); + +/* ---------------------------------------------------------------------- */ + +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[0]; + }; +} __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-raspi2-4.2.0.orig/include/uapi/linux/dm-ioctl.h +++ linux-raspi2-4.2.0/include/uapi/linux/dm-ioctl.h @@ -267,9 +267,9 @@ #define DM_DEV_SET_GEOMETRY _IOWR(DM_IOCTL, DM_DEV_SET_GEOMETRY_CMD, struct dm_ioctl) #define DM_VERSION_MAJOR 4 -#define DM_VERSION_MINOR 32 +#define DM_VERSION_MINOR 33 #define DM_VERSION_PATCHLEVEL 0 -#define DM_VERSION_EXTRA "-ioctl (2015-6-26)" +#define DM_VERSION_EXTRA "-ioctl (2015-8-18)" /* Status bits */ #define DM_READONLY_FLAG (1 << 0) /* In/Out */ --- linux-raspi2-4.2.0.orig/include/uapi/linux/fb.h +++ linux-raspi2-4.2.0/include/uapi/linux/fb.h @@ -34,6 +34,11 @@ #define FBIOPUT_MODEINFO 0x4617 #define FBIOGET_DISPINFO 0x4618 #define FBIO_WAITFORVSYNC _IOW('F', 0x20, __u32) +/* + * HACK: use 'z' in order not to clash with any other ioctl numbers which might + * be concurrently added to the mainline kernel + */ +#define FBIOCOPYAREA _IOW('z', 0x21, struct fb_copyarea) #define FB_TYPE_PACKED_PIXELS 0 /* Packed Pixels */ #define FB_TYPE_PLANES 1 /* Non interleaved planes */ --- linux-raspi2-4.2.0.orig/include/uapi/linux/if_tunnel.h +++ linux-raspi2-4.2.0/include/uapi/linux/if_tunnel.h @@ -57,6 +57,10 @@ IFLA_IPTUN_ENCAP_FLAGS, IFLA_IPTUN_ENCAP_SPORT, IFLA_IPTUN_ENCAP_DPORT, + + __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) @@ -131,4 +135,20 @@ }; #define IFLA_VTI_MAX (__IFLA_VTI_MAX - 1) + +enum { + IFLA_FAN_UNSPEC, + IFLA_FAN_MAPPING, + __IFLA_FAN_MAX, +}; + +#define IFLA_FAN_MAX (__IFLA_FAN_MAX - 1) + +struct ip_tunnel_fan_map { + __be32 underlay; + __be32 overlay; + __u16 underlay_prefix; + __u16 overlay_prefix; +}; + #endif /* _UAPI_IF_TUNNEL_H_ */ --- linux-raspi2-4.2.0.orig/include/uapi/linux/kd.h +++ linux-raspi2-4.2.0/include/uapi/linux/kd.h @@ -45,6 +45,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-raspi2-4.2.0.orig/include/uapi/linux/kvm.h +++ linux-raspi2-4.2.0/include/uapi/linux/kvm.h @@ -817,6 +817,7 @@ #define KVM_CAP_DISABLE_QUIRKS 116 #define KVM_CAP_X86_SMM 117 #define KVM_CAP_MULTI_ADDRESS_SPACE 118 +#define KVM_CAP_MSI_DEVID 119 #ifdef KVM_CAP_IRQ_ROUTING @@ -829,7 +830,10 @@ __u32 address_lo; __u32 address_hi; __u32 data; - __u32 pad; + union { + __u32 pad; + __u32 devid; + }; }; struct kvm_irq_routing_s390_adapter { @@ -968,12 +972,14 @@ __u64 addr; }; +#define KVM_MSI_VALID_DEVID (1U << 0) struct kvm_msi { __u32 address_lo; __u32 address_hi; __u32 data; __u32 flags; - __u8 pad[16]; + __u32 devid; + __u8 pad[12]; }; struct kvm_arm_device_addr { --- linux-raspi2-4.2.0.orig/include/uapi/linux/mei.h +++ linux-raspi2-4.2.0/include/uapi/linux/mei.h @@ -107,4 +107,23 @@ }; }; +/** + * DOC: set and unset event notification for a connected client + * + * The IOCTL argument is 1 for enabling event notification and 0 for + * disabling the service + * Return: -EOPNOTSUPP if the devices doesn't support the feature + */ +#define IOCTL_MEI_NOTIFY_SET _IOW('H', 0x02, __u32) + +/** + * DOC: retrieve notification + * + * The IOCTL output argument is 1 if an event was is pending and 0 otherwise + * the ioctl has to be called in order to acknowledge pending event + * + * Return: -EOPNOTSUPP if the devices doesn't support the feature + */ +#define IOCTL_MEI_NOTIFY_GET _IOR('H', 0x03, __u32) + #endif /* _LINUX_MEI_H */ --- linux-raspi2-4.2.0.orig/include/uapi/linux/perf_event.h +++ linux-raspi2-4.2.0/include/uapi/linux/perf_event.h @@ -922,6 +922,7 @@ * * in_tx: running in a hardware transaction * abort: aborting a hardware transaction + * cycles: cycles from last branch (or 0 if not supported) */ struct perf_branch_entry { __u64 from; @@ -930,7 +931,8 @@ predicted:1,/* target predicted */ in_tx:1, /* in transaction */ abort:1, /* transaction abort */ - reserved:60; + cycles:16, /* cycle count to last branch */ + reserved:44; }; #endif /* _UAPI_LINUX_PERF_EVENT_H */ --- linux-raspi2-4.2.0.orig/include/uapi/misc/cxl.h +++ linux-raspi2-4.2.0/include/uapi/misc/cxl.h @@ -29,8 +29,10 @@ #define CXL_START_WORK_AMR 0x0000000000000001ULL #define CXL_START_WORK_NUM_IRQS 0x0000000000000002ULL +#define CXL_START_WORK_ERR_FF 0x0000000000000004ULL #define CXL_START_WORK_ALL (CXL_START_WORK_AMR |\ - CXL_START_WORK_NUM_IRQS) + CXL_START_WORK_NUM_IRQS |\ + CXL_START_WORK_ERR_FF) /* Possible modes that an afu can be in */ --- linux-raspi2-4.2.0.orig/include/uapi/scsi/Kbuild +++ linux-raspi2-4.2.0/include/uapi/scsi/Kbuild @@ -3,3 +3,4 @@ header-y += scsi_bsg_fc.h header-y += scsi_netlink.h header-y += scsi_netlink_fc.h +header-y += cxlflash_ioctl.h --- linux-raspi2-4.2.0.orig/include/uapi/scsi/cxlflash_ioctl.h +++ linux-raspi2-4.2.0/include/uapi/scsi/cxlflash_ioctl.h @@ -0,0 +1,184 @@ +/* + * CXL Flash Device Driver + * + * Written by: Manoj N. Kumar , IBM Corporation + * Matthew R. Ochs , IBM Corporation + * + * Copyright (C) 2015 IBM Corporation + * + * 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. + */ + +#ifndef _CXLFLASH_IOCTL_H +#define _CXLFLASH_IOCTL_H + +#include + +/* + * Structure and flag definitions CXL Flash superpipe ioctls + */ + +#define DK_CXLFLASH_VERSION_0 0 + +struct dk_cxlflash_hdr { + __u16 version; /* Version data */ + __u16 rsvd[3]; /* Reserved for future use */ + __u64 flags; /* Input flags */ + __u64 return_flags; /* Returned flags */ +}; + +/* + * Return flag definitions available to all ioctls + * + * Similar to the input flags, these are grown from the bottom-up with the + * intention that ioctl-specific return flag definitions would grow from the + * top-down, allowing the two sets to co-exist. While not required/enforced + * at this time, this provides future flexibility. + */ +#define DK_CXLFLASH_ALL_PORTS_ACTIVE 0x0000000000000001ULL + +/* + * Notes: + * ----- + * The 'context_id' field of all ioctl structures contains the context + * identifier for a context in the lower 32-bits (upper 32-bits are not + * to be used when identifying a context to the AFU). That said, the value + * in its entirety (all 64-bits) is to be treated as an opaque cookie and + * should be presented as such when issuing ioctls. + * + * For DK_CXLFLASH_ATTACH ioctl, user specifies read/write access + * permissions via the O_RDONLY, O_WRONLY, and O_RDWR flags defined in + * the fcntl.h header file. + */ +#define DK_CXLFLASH_ATTACH_REUSE_CONTEXT 0x8000000000000000ULL + +struct dk_cxlflash_attach { + struct dk_cxlflash_hdr hdr; /* Common fields */ + __u64 num_interrupts; /* Requested number of interrupts */ + __u64 context_id; /* Returned context */ + __u64 mmio_size; /* Returned size of MMIO area */ + __u64 block_size; /* Returned block size, in bytes */ + __u64 adap_fd; /* Returned adapter file descriptor */ + __u64 last_lba; /* Returned last LBA on the device */ + __u64 max_xfer; /* Returned max transfer size, blocks */ + __u64 reserved[8]; /* Reserved for future use */ +}; + +struct dk_cxlflash_detach { + struct dk_cxlflash_hdr hdr; /* Common fields */ + __u64 context_id; /* Context to detach */ + __u64 reserved[8]; /* Reserved for future use */ +}; + +struct dk_cxlflash_udirect { + struct dk_cxlflash_hdr hdr; /* Common fields */ + __u64 context_id; /* Context to own physical resources */ + __u64 rsrc_handle; /* Returned resource handle */ + __u64 last_lba; /* Returned last LBA on the device */ + __u64 reserved[8]; /* Reserved for future use */ +}; + +#define DK_CXLFLASH_UVIRTUAL_NEED_WRITE_SAME 0x8000000000000000ULL + +struct dk_cxlflash_uvirtual { + struct dk_cxlflash_hdr hdr; /* Common fields */ + __u64 context_id; /* Context to own virtual resources */ + __u64 lun_size; /* Requested size, in 4K blocks */ + __u64 rsrc_handle; /* Returned resource handle */ + __u64 last_lba; /* Returned last LBA of LUN */ + __u64 reserved[8]; /* Reserved for future use */ +}; + +struct dk_cxlflash_release { + struct dk_cxlflash_hdr hdr; /* Common fields */ + __u64 context_id; /* Context owning resources */ + __u64 rsrc_handle; /* Resource handle to release */ + __u64 reserved[8]; /* Reserved for future use */ +}; + +struct dk_cxlflash_resize { + struct dk_cxlflash_hdr hdr; /* Common fields */ + __u64 context_id; /* Context owning resources */ + __u64 rsrc_handle; /* Resource handle of LUN to resize */ + __u64 req_size; /* New requested size, in 4K blocks */ + __u64 last_lba; /* Returned last LBA of LUN */ + __u64 reserved[8]; /* Reserved for future use */ +}; + +struct dk_cxlflash_clone { + struct dk_cxlflash_hdr hdr; /* Common fields */ + __u64 context_id_src; /* Context to clone from */ + __u64 context_id_dst; /* Context to clone to */ + __u64 adap_fd_src; /* Source context adapter fd */ + __u64 reserved[8]; /* Reserved for future use */ +}; + +#define DK_CXLFLASH_VERIFY_SENSE_LEN 18 +#define DK_CXLFLASH_VERIFY_HINT_SENSE 0x8000000000000000ULL + +struct dk_cxlflash_verify { + struct dk_cxlflash_hdr hdr; /* Common fields */ + __u64 context_id; /* Context owning resources to verify */ + __u64 rsrc_handle; /* Resource handle of LUN */ + __u64 hint; /* Reasons for verify */ + __u64 last_lba; /* Returned last LBA of device */ + __u8 sense_data[DK_CXLFLASH_VERIFY_SENSE_LEN]; /* SCSI sense data */ + __u8 pad[6]; /* Pad to next 8-byte boundary */ + __u64 reserved[8]; /* Reserved for future use */ +}; + +#define DK_CXLFLASH_RECOVER_AFU_CONTEXT_RESET 0x8000000000000000ULL + +struct dk_cxlflash_recover_afu { + struct dk_cxlflash_hdr hdr; /* Common fields */ + __u64 reason; /* Reason for recovery request */ + __u64 context_id; /* Context to recover / updated ID */ + __u64 mmio_size; /* Returned size of MMIO area */ + __u64 adap_fd; /* Returned adapter file descriptor */ + __u64 reserved[8]; /* Reserved for future use */ +}; + +#define DK_CXLFLASH_MANAGE_LUN_WWID_LEN 16 +#define DK_CXLFLASH_MANAGE_LUN_ENABLE_SUPERPIPE 0x8000000000000000ULL +#define DK_CXLFLASH_MANAGE_LUN_DISABLE_SUPERPIPE 0x4000000000000000ULL +#define DK_CXLFLASH_MANAGE_LUN_ALL_PORTS_ACCESSIBLE 0x2000000000000000ULL + +struct dk_cxlflash_manage_lun { + struct dk_cxlflash_hdr hdr; /* Common fields */ + __u8 wwid[DK_CXLFLASH_MANAGE_LUN_WWID_LEN]; /* Page83 WWID, NAA-6 */ + __u64 reserved[8]; /* Rsvd, future use */ +}; + +union cxlflash_ioctls { + struct dk_cxlflash_attach attach; + struct dk_cxlflash_detach detach; + struct dk_cxlflash_udirect udirect; + struct dk_cxlflash_uvirtual uvirtual; + struct dk_cxlflash_release release; + struct dk_cxlflash_resize resize; + struct dk_cxlflash_clone clone; + struct dk_cxlflash_verify verify; + struct dk_cxlflash_recover_afu recover_afu; + struct dk_cxlflash_manage_lun manage_lun; +}; + +#define MAX_CXLFLASH_IOCTL_SZ (sizeof(union cxlflash_ioctls)) + +#define CXL_MAGIC 0xCA +#define CXL_IOWR(_n, _s) _IOWR(CXL_MAGIC, _n, struct _s) + +#define DK_CXLFLASH_ATTACH CXL_IOWR(0x80, dk_cxlflash_attach) +#define DK_CXLFLASH_USER_DIRECT CXL_IOWR(0x81, dk_cxlflash_udirect) +#define DK_CXLFLASH_RELEASE CXL_IOWR(0x82, dk_cxlflash_release) +#define DK_CXLFLASH_DETACH CXL_IOWR(0x83, dk_cxlflash_detach) +#define DK_CXLFLASH_VERIFY CXL_IOWR(0x84, dk_cxlflash_verify) +#define DK_CXLFLASH_RECOVER_AFU CXL_IOWR(0x85, dk_cxlflash_recover_afu) +#define DK_CXLFLASH_MANAGE_LUN CXL_IOWR(0x86, dk_cxlflash_manage_lun) +#define DK_CXLFLASH_USER_VIRTUAL CXL_IOWR(0x87, dk_cxlflash_uvirtual) +#define DK_CXLFLASH_VLUN_RESIZE CXL_IOWR(0x88, dk_cxlflash_resize) +#define DK_CXLFLASH_VLUN_CLONE CXL_IOWR(0x89, dk_cxlflash_clone) + +#endif /* ifndef _CXLFLASH_IOCTL_H */ --- linux-raspi2-4.2.0.orig/include/xen/interface/io/ring.h +++ linux-raspi2-4.2.0/include/xen/interface/io/ring.h @@ -181,6 +181,20 @@ #define RING_GET_REQUEST(_r, _idx) \ (&((_r)->sring->ring[((_idx) & (RING_SIZE(_r) - 1))].req)) +/* + * Get a local copy of a request. + * + * Use this in preference to RING_GET_REQUEST() so all processing is + * done on a local copy that cannot be modified by the other end. + * + * Note that https://gcc.gnu.org/bugzilla/show_bug.cgi?id=58145 may cause this + * to be ineffective where _req is a struct which consists of only bitfields. + */ +#define RING_COPY_REQUEST(_r, _idx, _req) do { \ + /* Use volatile to force the copy into _req. */ \ + *(_req) = *(volatile typeof(_req))RING_GET_REQUEST(_r, _idx); \ +} while (0) + #define RING_GET_RESPONSE(_r, _idx) \ (&((_r)->sring->ring[((_idx) & (RING_SIZE(_r) - 1))].rsp)) --- linux-raspi2-4.2.0.orig/include/xen/interface/sched.h +++ linux-raspi2-4.2.0/include/xen/interface/sched.h @@ -107,5 +107,13 @@ #define SHUTDOWN_suspend 2 /* Clean up, save suspend info, kill. */ #define SHUTDOWN_crash 3 /* Tell controller we've crashed. */ #define SHUTDOWN_watchdog 4 /* Restart because watchdog time expired. */ +/* + * Domain asked to perform 'soft reset' for it. The expected behavior is to + * reset internal Xen state for the domain returning it to the point where it + * was created but leaving the domain's memory contents and vCPU contexts + * intact. This will allow the domain to start over and set up all Xen specific + * interfaces again. + */ +#define SHUTDOWN_soft_reset 5 #endif /* __XEN_PUBLIC_SCHED_H__ */ --- linux-raspi2-4.2.0.orig/init/Kconfig +++ linux-raspi2-4.2.0/init/Kconfig @@ -208,6 +208,15 @@ but you may wish to use a different default here to make a minimal system more usable with less configuration. +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 --- linux-raspi2-4.2.0.orig/init/noinitramfs.c +++ linux-raspi2-4.2.0/init/noinitramfs.c @@ -22,6 +22,8 @@ #include #include +LIST_HEAD(populate_rootfs_domain); + /* * Create a simple rootfs that is similar to the default initramfs */ --- linux-raspi2-4.2.0.orig/init/version.c +++ linux-raspi2-4.2.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-raspi2-4.2.0.orig/ipc/msg.c +++ linux-raspi2-4.2.0/ipc/msg.c @@ -137,13 +137,6 @@ return retval; } - /* ipc_addid() locks msq upon success. */ - id = ipc_addid(&msg_ids(ns), &msq->q_perm, ns->msg_ctlmni); - if (id < 0) { - ipc_rcu_putref(msq, msg_rcu_free); - return id; - } - msq->q_stime = msq->q_rtime = 0; msq->q_ctime = get_seconds(); msq->q_cbytes = msq->q_qnum = 0; @@ -153,6 +146,13 @@ INIT_LIST_HEAD(&msq->q_receivers); INIT_LIST_HEAD(&msq->q_senders); + /* ipc_addid() locks msq upon success. */ + id = ipc_addid(&msg_ids(ns), &msq->q_perm, ns->msg_ctlmni); + if (id < 0) { + ipc_rcu_putref(msq, msg_rcu_free); + return id; + } + ipc_unlock_object(&msq->q_perm); rcu_read_unlock(); --- linux-raspi2-4.2.0.orig/ipc/sem.c +++ linux-raspi2-4.2.0/ipc/sem.c @@ -1984,6 +1984,14 @@ error = get_queue_result(&queue); /* + * wake_up_sem_queue_do operates on queue without locking, so we + * need a barrier here to order our read of queue.status and the + * subsequent reuse of queue (queue is on the stack so will be + * most likely reused in the next function call). + */ + smp_mb(); + + /* * Array removed? If yes, leave without sem_unlock(). */ if (IS_ERR(sma)) { --- linux-raspi2-4.2.0.orig/ipc/shm.c +++ linux-raspi2-4.2.0/ipc/shm.c @@ -551,12 +551,6 @@ if (IS_ERR(file)) goto no_file; - id = ipc_addid(&shm_ids(ns), &shp->shm_perm, ns->shm_ctlmni); - if (id < 0) { - error = id; - goto no_id; - } - shp->shm_cprid = task_tgid_vnr(current); shp->shm_lprid = 0; shp->shm_atim = shp->shm_dtim = 0; @@ -565,6 +559,13 @@ shp->shm_nattch = 0; shp->shm_file = file; shp->shm_creator = current; + + id = ipc_addid(&shm_ids(ns), &shp->shm_perm, ns->shm_ctlmni); + if (id < 0) { + error = id; + goto no_id; + } + list_add(&shp->shm_clist, ¤t->sysvshm.shm_clist); /* --- linux-raspi2-4.2.0.orig/ipc/util.c +++ linux-raspi2-4.2.0/ipc/util.c @@ -237,6 +237,10 @@ rcu_read_lock(); spin_lock(&new->lock); + current_euid_egid(&euid, &egid); + new->cuid = new->uid = euid; + new->gid = new->cgid = egid; + id = idr_alloc(&ids->ipcs_idr, new, (next_id < 0) ? 0 : ipcid_to_idx(next_id), 0, GFP_NOWAIT); @@ -249,10 +253,6 @@ ids->in_use++; - current_euid_egid(&euid, &egid); - new->cuid = new->uid = euid; - new->gid = new->cgid = egid; - if (next_id < 0) { new->seq = ids->seq++; if (ids->seq > IPCID_SEQ_MAX) --- linux-raspi2-4.2.0.orig/kernel/bpf/arraymap.c +++ linux-raspi2-4.2.0/kernel/bpf/arraymap.c @@ -104,7 +104,7 @@ /* all elements already exist */ return -EEXIST; - memcpy(array->value + array->elem_size * index, value, array->elem_size); + memcpy(array->value + array->elem_size * index, value, map->value_size); return 0; } --- linux-raspi2-4.2.0.orig/kernel/bpf/syscall.c +++ linux-raspi2-4.2.0/kernel/bpf/syscall.c @@ -155,14 +155,15 @@ void __user *ukey = u64_to_ptr(attr->key); void __user *uvalue = u64_to_ptr(attr->value); int ufd = attr->map_fd; - struct fd f = fdget(ufd); struct bpf_map *map; void *key, *value, *ptr; + struct fd f; int err; if (CHECK_ATTR(BPF_MAP_LOOKUP_ELEM)) return -EINVAL; + f = fdget(ufd); map = bpf_map_get(f); if (IS_ERR(map)) return PTR_ERR(map); @@ -213,14 +214,15 @@ void __user *ukey = u64_to_ptr(attr->key); void __user *uvalue = u64_to_ptr(attr->value); int ufd = attr->map_fd; - struct fd f = fdget(ufd); struct bpf_map *map; void *key, *value; + struct fd f; int err; if (CHECK_ATTR(BPF_MAP_UPDATE_ELEM)) return -EINVAL; + f = fdget(ufd); map = bpf_map_get(f); if (IS_ERR(map)) return PTR_ERR(map); @@ -265,14 +267,15 @@ { void __user *ukey = u64_to_ptr(attr->key); int ufd = attr->map_fd; - struct fd f = fdget(ufd); struct bpf_map *map; + struct fd f; void *key; int err; if (CHECK_ATTR(BPF_MAP_DELETE_ELEM)) return -EINVAL; + f = fdget(ufd); map = bpf_map_get(f); if (IS_ERR(map)) return PTR_ERR(map); @@ -305,14 +308,15 @@ void __user *ukey = u64_to_ptr(attr->key); void __user *unext_key = u64_to_ptr(attr->next_key); int ufd = attr->map_fd; - struct fd f = fdget(ufd); struct bpf_map *map; void *key, *next_key; + struct fd f; int err; if (CHECK_ATTR(BPF_MAP_GET_NEXT_KEY)) return -EINVAL; + f = fdget(ufd); map = bpf_map_get(f); if (IS_ERR(map)) return PTR_ERR(map); --- linux-raspi2-4.2.0.orig/kernel/cgroup.c +++ linux-raspi2-4.2.0/kernel/cgroup.c @@ -46,7 +46,6 @@ #include #include #include -#include #include #include #include @@ -104,8 +103,6 @@ */ static DEFINE_SPINLOCK(release_agent_path_lock); -struct percpu_rw_semaphore cgroup_threadgroup_rwsem; - #define cgroup_assert_mutex_or_rcu_locked() \ rcu_lockdep_assert(rcu_read_lock_held() || \ lockdep_is_held(&cgroup_mutex), \ @@ -870,6 +867,48 @@ return cset; } +void cgroup_threadgroup_change_begin(struct task_struct *tsk) +{ + down_read(&tsk->signal->group_rwsem); +} + +void cgroup_threadgroup_change_end(struct task_struct *tsk) +{ + up_read(&tsk->signal->group_rwsem); +} + +/** + * threadgroup_lock - lock threadgroup + * @tsk: member task of the threadgroup to lock + * + * Lock the threadgroup @tsk belongs to. No new task is allowed to enter + * and member tasks aren't allowed to exit (as indicated by PF_EXITING) or + * change ->group_leader/pid. This is useful for cases where the threadgroup + * needs to stay stable across blockable operations. + * + * fork and exit explicitly call threadgroup_change_{begin|end}() for + * synchronization. While held, no new task will be added to threadgroup + * and no existing live task will have its PF_EXITING set. + * + * de_thread() does threadgroup_change_{begin|end}() when a non-leader + * sub-thread becomes a new leader. + */ +static void threadgroup_lock(struct task_struct *tsk) +{ + down_write(&tsk->signal->group_rwsem); +} + +/** + * threadgroup_unlock - unlock threadgroup + * @tsk: member task of the threadgroup to unlock + * + * Reverse threadgroup_lock(). + */ +static inline void threadgroup_unlock(struct task_struct *tsk) +{ + up_write(&tsk->signal->group_rwsem); +} + static struct cgroup_root *cgroup_root_from_kf(struct kernfs_root *kf_root) { struct cgroup *root_cgrp = kf_root->kn->priv; @@ -1334,7 +1373,7 @@ for_each_subsys(ss, ssid) if (root->subsys_mask & (1 << ssid)) - seq_printf(seq, ",%s", ss->name); + seq_show_option(seq, ss->name, NULL); if (root->flags & CGRP_ROOT_NOPREFIX) seq_puts(seq, ",noprefix"); if (root->flags & CGRP_ROOT_XATTR) @@ -1342,13 +1381,14 @@ spin_lock(&release_agent_path_lock); if (strlen(root->release_agent_path)) - seq_printf(seq, ",release_agent=%s", root->release_agent_path); + seq_show_option(seq, "release_agent", + root->release_agent_path); spin_unlock(&release_agent_path_lock); if (test_bit(CGRP_CPUSET_CLONE_CHILDREN, &root->cgrp.flags)) seq_puts(seq, ",clone_children"); if (strlen(root->name)) - seq_printf(seq, ",name=%s", root->name); + seq_show_option(seq, "name", root->name); return 0; } @@ -2065,9 +2105,9 @@ lockdep_assert_held(&css_set_rwsem); /* - * We are synchronized through cgroup_threadgroup_rwsem against - * PF_EXITING setting such that we can't race against cgroup_exit() - * changing the css_set to init_css_set and dropping the old one. + * We are synchronized through threadgroup_lock() against PF_EXITING + * setting such that we can't race against cgroup_exit() changing the + * css_set to init_css_set and dropping the old one. */ WARN_ON_ONCE(tsk->flags & PF_EXITING); old_cset = task_css_set(tsk); @@ -2124,11 +2164,10 @@ * @src_cset and add it to @preloaded_csets, which should later be cleaned * up by cgroup_migrate_finish(). * - * This function may be called without holding cgroup_threadgroup_rwsem - * even if the target is a process. Threads may be created and destroyed - * but as long as cgroup_mutex is not dropped, no new css_set can be put - * into play and the preloaded css_sets are guaranteed to cover all - * migrations. + * This function may be called without holding threadgroup_lock even if the + * target is a process. Threads may be created and destroyed but as long + * as cgroup_mutex is not dropped, no new css_set can be put into play and + * the preloaded css_sets are guaranteed to cover all migrations. */ static void cgroup_migrate_add_src(struct css_set *src_cset, struct cgroup *dst_cgrp, @@ -2231,7 +2270,7 @@ * @threadgroup: whether @leader points to the whole process or a single task * * Migrate a process or task denoted by @leader to @cgrp. If migrating a - * process, the caller must be holding cgroup_threadgroup_rwsem. The + * process, the caller must be holding threadgroup_lock of @leader. The * caller is also responsible for invoking cgroup_migrate_add_src() and * cgroup_migrate_prepare_dst() on the targets before invoking this * function and following up with cgroup_migrate_finish(). @@ -2359,7 +2398,7 @@ * @leader: the task or the leader of the threadgroup to be attached * @threadgroup: attach the whole threadgroup? * - * Call holding cgroup_mutex and cgroup_threadgroup_rwsem. + * Call holding cgroup_mutex and threadgroup_lock of @leader. */ static int cgroup_attach_task(struct cgroup *dst_cgrp, struct task_struct *leader, bool threadgroup) @@ -2451,13 +2490,14 @@ if (!cgrp) return -ENODEV; - percpu_down_write(&cgroup_threadgroup_rwsem); +retry_find_task: rcu_read_lock(); if (pid) { tsk = find_task_by_vpid(pid); if (!tsk) { + rcu_read_unlock(); ret = -ESRCH; - goto out_unlock_rcu; + goto out_unlock_cgroup; } } else { tsk = current; @@ -2473,23 +2513,37 @@ */ if (tsk == kthreadd_task || (tsk->flags & PF_NO_SETAFFINITY)) { ret = -EINVAL; - goto out_unlock_rcu; + rcu_read_unlock(); + goto out_unlock_cgroup; } get_task_struct(tsk); rcu_read_unlock(); + threadgroup_lock(tsk); + if (threadgroup) { + if (!thread_group_leader(tsk)) { + /* + * a race with de_thread from another thread's exec() + * may strip us of our leadership, if this happens, + * there is no choice but to throw this task away and + * try again; this is + * "double-double-toil-and-trouble-check locking". + */ + threadgroup_unlock(tsk); + put_task_struct(tsk); + goto retry_find_task; + } + } + ret = cgroup_procs_write_permission(tsk, cgrp, of); if (!ret) ret = cgroup_attach_task(cgrp, tsk, threadgroup); - put_task_struct(tsk); - goto out_unlock_threadgroup; + threadgroup_unlock(tsk); -out_unlock_rcu: - rcu_read_unlock(); -out_unlock_threadgroup: - percpu_up_write(&cgroup_threadgroup_rwsem); + put_task_struct(tsk); +out_unlock_cgroup: cgroup_kn_unlock(of->kn); return ret ?: nbytes; } @@ -2634,8 +2688,6 @@ lockdep_assert_held(&cgroup_mutex); - percpu_down_write(&cgroup_threadgroup_rwsem); - /* look up all csses currently attached to @cgrp's subtree */ down_read(&css_set_rwsem); css_for_each_descendant_pre(css, cgroup_css(cgrp, NULL)) { @@ -2691,8 +2743,17 @@ goto out_finish; last_task = task; + threadgroup_lock(task); + /* raced against de_thread() from another thread? */ + if (!thread_group_leader(task)) { + threadgroup_unlock(task); + put_task_struct(task); + continue; + } + ret = cgroup_migrate(src_cset->dfl_cgrp, task, true); + threadgroup_unlock(task); put_task_struct(task); if (WARN(ret, "cgroup: failed to update controllers for the default hierarchy (%d), further operations may crash or hang\n", ret)) @@ -2702,7 +2763,6 @@ out_finish: cgroup_migrate_finish(&preloaded_csets); - percpu_up_write(&cgroup_threadgroup_rwsem); return ret; } @@ -5012,7 +5072,6 @@ unsigned long key; int ssid, err; - BUG_ON(percpu_init_rwsem(&cgroup_threadgroup_rwsem)); BUG_ON(cgroup_init_cftypes(NULL, cgroup_dfl_base_files)); BUG_ON(cgroup_init_cftypes(NULL, cgroup_legacy_base_files)); @@ -5412,6 +5471,29 @@ } __setup("cgroup_disable=", cgroup_disable); +static int __init cgroup_enable(char *str) +{ + struct cgroup_subsys *ss; + char *token; + int i; + + while ((token = strsep(&str, ",")) != NULL) { + if (!*token) + continue; + + for_each_subsys(ss, i) { + if (!strcmp(token, ss->name)) { + ss->disabled = 0; + printk(KERN_INFO "Enabling %s control group" + " subsystem\n", ss->name); + break; + } + } + } + return 1; +} +__setup("cgroup_enable=", cgroup_enable); + static int __init cgroup_set_legacy_files_on_dfl(char *str) { printk("cgroup: using legacy files on the default hierarchy\n"); --- linux-raspi2-4.2.0.orig/kernel/cpu.c +++ linux-raspi2-4.2.0/kernel/cpu.c @@ -194,6 +194,7 @@ cpu_hotplug_disabled = 1; cpu_maps_update_done(); } +EXPORT_SYMBOL_GPL(cpu_hotplug_disable); void cpu_hotplug_enable(void) { @@ -201,7 +202,7 @@ cpu_hotplug_disabled = 0; cpu_maps_update_done(); } - +EXPORT_SYMBOL_GPL(cpu_hotplug_enable); #endif /* CONFIG_HOTPLUG_CPU */ /* Need to know about CPUs going up/down? */ --- linux-raspi2-4.2.0.orig/kernel/events/core.c +++ linux-raspi2-4.2.0/kernel/events/core.c @@ -6644,6 +6644,10 @@ { void *record = data->raw->data; + /* only top level events have filters set */ + if (event->parent) + event = event->parent; + if (likely(!event->filter) || filter_match_preds(event->filter, record)) return 1; return 0; --- linux-raspi2-4.2.0.orig/kernel/fork.c +++ linux-raspi2-4.2.0/kernel/fork.c @@ -461,7 +461,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); @@ -1146,6 +1146,10 @@ tty_audit_fork(sig); sched_autogroup_fork(sig); +#ifdef CONFIG_CGROUPS + init_rwsem(&sig->group_rwsem); +#endif + sig->oom_score_adj = current->signal->oom_score_adj; sig->oom_score_adj_min = current->signal->oom_score_adj_min; @@ -1871,13 +1875,21 @@ CLONE_NEWUSER|CLONE_NEWPID)) return -EINVAL; /* - * Not implemented, but pretend it works if there is nothing to - * unshare. Note that unsharing CLONE_THREAD or CLONE_SIGHAND - * needs to unshare vm. + * Not implemented, but pretend it works if there is nothing + * to unshare. Note that unsharing the address space or the + * signal handlers also need to unshare the signal queues (aka + * CLONE_THREAD). */ if (unshare_flags & (CLONE_THREAD | CLONE_SIGHAND | CLONE_VM)) { - /* FIXME: get_task_mm() increments ->mm_users */ - if (atomic_read(¤t->mm->mm_users) > 1) + if (!thread_group_empty(current)) + return -EINVAL; + } + if (unshare_flags & (CLONE_SIGHAND | CLONE_VM)) { + if (atomic_read(¤t->sighand->count) > 1) + return -EINVAL; + } + if (unshare_flags & CLONE_VM) { + if (!current_is_single_threaded()) return -EINVAL; } @@ -1946,16 +1958,16 @@ if (unshare_flags & CLONE_NEWUSER) unshare_flags |= CLONE_THREAD | CLONE_FS; /* - * If unsharing a thread from a thread group, must also unshare vm. - */ - if (unshare_flags & CLONE_THREAD) - unshare_flags |= CLONE_VM; - /* * If unsharing vm, must also unshare signal handlers. */ if (unshare_flags & CLONE_VM) unshare_flags |= CLONE_SIGHAND; /* + * If unsharing a signal handlers, must also unshare the signal queues. + */ + if (unshare_flags & CLONE_SIGHAND) + unshare_flags |= CLONE_THREAD; + /* * If unsharing namespace, must also unshare filesystem information. */ if (unshare_flags & CLONE_NEWNS) --- linux-raspi2-4.2.0.orig/kernel/irq/Kconfig +++ linux-raspi2-4.2.0/kernel/irq/Kconfig @@ -87,6 +87,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-raspi2-4.2.0.orig/kernel/irq/manage.c +++ linux-raspi2-4.2.0/kernel/irq/manage.c @@ -22,14 +22,20 @@ #include "internals.h" #ifdef CONFIG_IRQ_FORCED_THREADING -__read_mostly bool force_irqthreads; +__read_mostly bool force_irqthreads = IS_ENABLED(CONFIG_IRQ_FORCED_THREADING_DEFAULT); static int __init setup_forced_irqthreads(char *arg) { 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) --- linux-raspi2-4.2.0.orig/kernel/irq/proc.c +++ linux-raspi2-4.2.0/kernel/irq/proc.c @@ -12,6 +12,7 @@ #include #include #include +#include #include "internals.h" @@ -323,18 +324,29 @@ void register_irq_proc(unsigned int irq, struct irq_desc *desc) { + static DEFINE_MUTEX(register_lock); char name [MAX_NAMELEN]; - if (!root_irq_dir || (desc->irq_data.chip == &no_irq_chip) || desc->dir) + if (!root_irq_dir || (desc->irq_data.chip == &no_irq_chip)) return; + /* + * irq directories are registered only when a handler is + * added, not when the descriptor is created, so multiple + * tasks might try to register at the same time. + */ + mutex_lock(®ister_lock); + + if (desc->dir) + goto out_unlock; + memset(name, 0, MAX_NAMELEN); sprintf(name, "%d", irq); /* create /proc/irq/1234 */ desc->dir = proc_mkdir(name, root_irq_dir); if (!desc->dir) - return; + goto out_unlock; #ifdef CONFIG_SMP /* create /proc/irq//smp_affinity */ @@ -355,6 +367,9 @@ proc_create_data("spurious", 0444, desc->dir, &irq_spurious_proc_fops, (void *)(long)irq); + +out_unlock: + mutex_unlock(®ister_lock); } void unregister_irq_proc(unsigned int irq, struct irq_desc *desc) --- linux-raspi2-4.2.0.orig/kernel/kthread.c +++ linux-raspi2-4.2.0/kernel/kthread.c @@ -294,6 +294,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 @@ -307,6 +318,7 @@ */ wait_for_completion(&done); } +ready: task = create->result; if (!IS_ERR(task)) { static const struct sched_param param = { .sched_priority = 0 }; --- linux-raspi2-4.2.0.orig/kernel/locking/qspinlock.c +++ linux-raspi2-4.2.0/kernel/locking/qspinlock.c @@ -289,7 +289,7 @@ if (pv_enabled()) goto queue; - if (virt_queued_spin_lock(lock)) + if (virt_spin_lock(lock)) return; /* --- linux-raspi2-4.2.0.orig/kernel/module.c +++ linux-raspi2-4.2.0/kernel/module.c @@ -1063,11 +1063,15 @@ if (core_kernel_text(a)) return; - /* module_text_address is safe here: we're supposed to have reference - * to module from symbol_get, so it can't go away. */ + /* + * Even though we hold a reference on the module; we still need to + * disable preemption in order to safely traverse the data structure. + */ + preempt_disable(); modaddr = __module_text_address(a); BUG_ON(!modaddr); module_put(modaddr); + preempt_enable(); } EXPORT_SYMBOL_GPL(symbol_put_addr); --- linux-raspi2-4.2.0.orig/kernel/printk/printk.c +++ linux-raspi2-4.2.0/kernel/printk/printk.c @@ -269,6 +269,9 @@ #define PREFIX_MAX 32 #define LOG_LINE_MAX (1024 - PREFIX_MAX) +#define LOG_LEVEL(v) ((v) & 0x07) +#define LOG_FACILITY(v) ((v) >> 3 & 0xff) + /* record buffer */ #if defined(CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS) #define LOG_ALIGN 4 @@ -611,7 +614,6 @@ static ssize_t devkmsg_write(struct kiocb *iocb, struct iov_iter *from) { char *buf, *line; - int i; int level = default_message_loglevel; int facility = 1; /* LOG_USER */ size_t len = iov_iter_count(from); @@ -641,12 +643,13 @@ line = buf; if (line[0] == '<') { char *endp = NULL; + unsigned int u; - i = simple_strtoul(line+1, &endp, 10); + u = simple_strtoul(line + 1, &endp, 10); if (endp && endp[0] == '>') { - level = i & 7; - if (i >> 3) - facility = i >> 3; + level = LOG_LEVEL(u); + if (LOG_FACILITY(u) != 0) + facility = LOG_FACILITY(u); endp++; len -= endp - line; line = endp; --- linux-raspi2-4.2.0.orig/kernel/ptrace.c +++ linux-raspi2-4.2.0/kernel/ptrace.c @@ -207,12 +207,32 @@ return ret; } -static int ptrace_has_cap(struct user_namespace *ns, unsigned int mode) +static bool ptrace_has_cap(const struct cred *tcred, unsigned int mode) { + struct user_namespace *tns = tcred->user_ns; + struct user_namespace *curns = current_cred()->user_ns; + + /* When a root-owned process enters a user namespace created by a + * malicious user, the user shouldn't be able to execute code under + * uid 0 by attaching to the root-owned process via ptrace. + * Therefore, similar to the capable_wrt_inode_uidgid() check, + * verify that all the uids and gids of the target process are + * mapped into the current namespace. + * No fsuid/fsgid check because __ptrace_may_access doesn't do it + * either. + */ + if (!kuid_has_mapping(curns, tcred->euid) || + !kuid_has_mapping(curns, tcred->suid) || + !kuid_has_mapping(curns, tcred->uid) || + !kgid_has_mapping(curns, tcred->egid) || + !kgid_has_mapping(curns, tcred->sgid) || + !kgid_has_mapping(curns, tcred->gid)) + return false; + if (mode & PTRACE_MODE_NOAUDIT) - return has_ns_capability_noaudit(current, ns, CAP_SYS_PTRACE); + return has_ns_capability_noaudit(current, tns, CAP_SYS_PTRACE); else - return has_ns_capability(current, ns, CAP_SYS_PTRACE); + return has_ns_capability(current, tns, CAP_SYS_PTRACE); } /* Returns 0 on success, -errno on denial. */ @@ -241,7 +261,7 @@ gid_eq(cred->gid, tcred->sgid) && gid_eq(cred->gid, tcred->gid)) goto ok; - if (ptrace_has_cap(tcred->user_ns, mode)) + if (ptrace_has_cap(tcred, mode)) goto ok; rcu_read_unlock(); return -EPERM; @@ -252,7 +272,7 @@ dumpable = get_dumpable(task->mm); rcu_read_lock(); if (dumpable != SUID_DUMP_USER && - !ptrace_has_cap(__task_cred(task)->user_ns, mode)) { + !ptrace_has_cap(__task_cred(task), mode)) { rcu_read_unlock(); return -EPERM; } --- linux-raspi2-4.2.0.orig/kernel/sched/core.c +++ linux-raspi2-4.2.0/kernel/sched/core.c @@ -2461,11 +2461,11 @@ * If a task dies, then it sets TASK_DEAD in tsk->state and calls * schedule one last time. The schedule call will never return, and * the scheduled task must drop that reference. - * The test for TASK_DEAD must occur while the runqueue locks are - * still held, otherwise prev could be scheduled on another cpu, die - * there before we look at prev->state, and then the reference would - * be dropped twice. - * Manfred Spraul + * + * We must observe prev->state before clearing prev->on_cpu (in + * finish_lock_switch), otherwise a concurrent wakeup can get prev + * running on another CPU and we could rave with its RUNNING -> DEAD + * transition, resulting in a double drop. */ prev_state = prev->state; vtime_task_switch(prev); @@ -2614,13 +2614,20 @@ /* * Check if only the current task is running on the cpu. + * + * Caution: this function does not check that the caller has disabled + * preemption, thus the result might have a time-of-check-to-time-of-use + * race. The caller is responsible to use it correctly, for example: + * + * - from a non-preemptable section (of course) + * + * - from a thread that is bound to a single CPU + * + * - in a loop with very short iterations (e.g. a polling loop) */ bool single_task_running(void) { - if (cpu_rq(smp_processor_id())->nr_running == 1) - return true; - else - return false; + return raw_rq()->nr_running == 1; } EXPORT_SYMBOL(single_task_running); @@ -4492,7 +4499,7 @@ int __sched _cond_resched(void) { - if (should_resched()) { + if (should_resched(0)) { preempt_schedule_common(); return 1; } @@ -4510,7 +4517,7 @@ */ int __cond_resched_lock(spinlock_t *lock) { - int resched = should_resched(); + int resched = should_resched(PREEMPT_LOCK_OFFSET); int ret = 0; lockdep_assert_held(lock); @@ -4532,7 +4539,7 @@ { BUG_ON(!in_softirq()); - if (should_resched()) { + if (should_resched(SOFTIRQ_DISABLE_OFFSET)) { local_bh_enable(); preempt_schedule_common(); local_bh_disable(); @@ -5433,6 +5440,14 @@ case CPU_STARTING: set_cpu_rq_start_time(); return NOTIFY_OK; + case CPU_ONLINE: + /* + * At this point a starting CPU has marked itself as online via + * set_cpu_online(). But it might not yet have marked itself + * as active, which is essential from here on. + * + * Thus, fall-through and help the starting CPU along. + */ case CPU_DOWN_FAILED: set_cpu_active((long)hcpu, true); return NOTIFY_OK; --- linux-raspi2-4.2.0.orig/kernel/sched/deadline.c +++ linux-raspi2-4.2.0/kernel/sched/deadline.c @@ -1066,8 +1066,9 @@ int target = find_later_rq(p); if (target != -1 && - dl_time_before(p->dl.deadline, - cpu_rq(target)->dl.earliest_dl.curr)) + (dl_time_before(p->dl.deadline, + cpu_rq(target)->dl.earliest_dl.curr) || + (cpu_rq(target)->dl.dl_nr_running == 0))) cpu = target; } rcu_read_unlock(); @@ -1417,7 +1418,8 @@ later_rq = cpu_rq(cpu); - if (!dl_time_before(task->dl.deadline, + if (later_rq->dl.dl_nr_running && + !dl_time_before(task->dl.deadline, later_rq->dl.earliest_dl.curr)) { /* * Target rq has tasks of equal or earlier deadline, --- linux-raspi2-4.2.0.orig/kernel/sched/sched.h +++ linux-raspi2-4.2.0/kernel/sched/sched.h @@ -1091,9 +1091,10 @@ * After ->on_cpu is cleared, the task can be moved to a different CPU. * We must ensure this doesn't happen until the switch is completely * finished. + * + * Pairs with the control dependency and rmb in try_to_wake_up(). */ - smp_wmb(); - prev->on_cpu = 0; + smp_store_release(&prev->on_cpu, 0); #endif #ifdef CONFIG_DEBUG_SPINLOCK /* this is a valid case when another task releases the spinlock */ --- linux-raspi2-4.2.0.orig/kernel/sys.c +++ linux-raspi2-4.2.0/kernel/sys.c @@ -1099,6 +1099,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-raspi2-4.2.0.orig/kernel/sys_ni.c +++ linux-raspi2-4.2.0/kernel/sys_ni.c @@ -140,6 +140,7 @@ cond_syscall(sys_ssetmask); cond_syscall(sys_vm86old); cond_syscall(sys_vm86); +cond_syscall(sys_modify_ldt); cond_syscall(sys_ipc); cond_syscall(compat_sys_ipc); cond_syscall(compat_sys_sysctl); --- linux-raspi2-4.2.0.orig/kernel/task_work.c +++ linux-raspi2-4.2.0/kernel/task_work.c @@ -18,6 +18,8 @@ * 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. + * * RETURNS: * 0 if succeeds or -ESRCH. */ @@ -108,16 +110,6 @@ raw_spin_unlock_wait(&task->pi_lock); smp_mb(); - /* Reverse the list to run the works in fifo order */ - head = NULL; - do { - next = work->next; - work->next = head; - head = work; - work = next; - } while (work); - - work = head; do { next = work->next; work->func(work); --- linux-raspi2-4.2.0.orig/kernel/time/clocksource.c +++ linux-raspi2-4.2.0/kernel/time/clocksource.c @@ -217,7 +217,7 @@ continue; /* Check the deviation from the watchdog clocksource. */ - if ((abs(cs_nsec - wd_nsec) > WATCHDOG_THRESHOLD)) { + if (abs64(cs_nsec - wd_nsec) > WATCHDOG_THRESHOLD) { pr_warn("timekeeping watchdog: Marking clocksource '%s' as unstable because the skew is too large:\n", cs->name); pr_warn(" '%s' wd_now: %llx wd_last: %llx mask: %llx\n", --- linux-raspi2-4.2.0.orig/kernel/time/timekeeping.c +++ linux-raspi2-4.2.0/kernel/time/timekeeping.c @@ -1244,7 +1244,7 @@ set_normalized_timespec64(&tmp, -boot.tv_sec, -boot.tv_nsec); tk_set_wall_to_mono(tk, tmp); - timekeeping_update(tk, TK_MIRROR); + timekeeping_update(tk, TK_MIRROR | TK_CLOCK_WAS_SET); write_seqcount_end(&tk_core.seq); raw_spin_unlock_irqrestore(&timekeeper_lock, flags); @@ -1607,7 +1607,7 @@ negative = (tick_error < 0); /* Sort out the magnitude of the correction */ - tick_error = abs(tick_error); + tick_error = abs64(tick_error); for (adj = 0; tick_error > interval; adj++) tick_error >>= 1; --- linux-raspi2-4.2.0.orig/kernel/time/timer.c +++ linux-raspi2-4.2.0/kernel/time/timer.c @@ -970,13 +970,29 @@ */ void add_timer_on(struct timer_list *timer, int cpu) { - struct tvec_base *base = per_cpu_ptr(&tvec_bases, cpu); + struct tvec_base *new_base = per_cpu_ptr(&tvec_bases, cpu); + struct tvec_base *base; unsigned long flags; timer_stats_timer_set_start_info(timer); BUG_ON(timer_pending(timer) || !timer->function); - spin_lock_irqsave(&base->lock, flags); - timer->flags = (timer->flags & ~TIMER_BASEMASK) | cpu; + + /* + * If @timer was on a different CPU, it should be migrated with the + * old base locked to prevent other operations proceeding with the + * wrong base locked. See lock_timer_base(). + */ + base = lock_timer_base(timer, &flags); + if (base != new_base) { + timer->flags |= TIMER_MIGRATING; + + spin_unlock(&base->lock); + base = new_base; + spin_lock(&base->lock); + WRITE_ONCE(timer->flags, + (timer->flags & ~TIMER_BASEMASK) | cpu); + } + debug_activate(timer, timer->expires); internal_add_timer(base, timer); spin_unlock_irqrestore(&base->lock, flags); --- linux-raspi2-4.2.0.orig/kernel/trace/trace.c +++ linux-raspi2-4.2.0/kernel/trace/trace.c @@ -6602,7 +6602,7 @@ tracing_set_nop(tr); event_trace_del_tracer(tr); ftrace_destroy_function_files(tr); - debugfs_remove_recursive(tr->dir); + tracefs_remove_recursive(tr->dir); free_trace_buffers(tr); kfree(tr->name); --- linux-raspi2-4.2.0.orig/kernel/trace/trace_stack.c +++ linux-raspi2-4.2.0/kernel/trace/trace_stack.c @@ -94,6 +94,12 @@ local_irq_save(flags); arch_spin_lock(&max_stack_lock); + /* + * RCU may not be watching, make it see us. + * The stack trace code uses rcu_sched. + */ + rcu_irq_enter(); + /* In case another CPU set the tracer_frame on us */ if (unlikely(!frame_size)) this_size -= tracer_frame; @@ -174,6 +180,7 @@ } out: + rcu_irq_exit(); arch_spin_unlock(&max_stack_lock); local_irq_restore(flags); } --- linux-raspi2-4.2.0.orig/kernel/workqueue.c +++ linux-raspi2-4.2.0/kernel/workqueue.c @@ -1458,13 +1458,13 @@ timer_stats_timer_set_start_info(&dwork->timer); dwork->wq = wq; + /* timer isn't guaranteed to run in this cpu, record earlier */ + if (cpu == WORK_CPU_UNBOUND) + cpu = raw_smp_processor_id(); dwork->cpu = cpu; timer->expires = jiffies + delay; - if (unlikely(cpu != WORK_CPU_UNBOUND)) - add_timer_on(timer, cpu); - else - add_timer(timer); + add_timer_on(timer, cpu); } /** @@ -2614,7 +2614,7 @@ out_unlock: mutex_unlock(&wq->mutex); } -EXPORT_SYMBOL_GPL(flush_workqueue); +EXPORT_SYMBOL(flush_workqueue); /** * drain_workqueue - drain a workqueue --- linux-raspi2-4.2.0.orig/lib/842/842.h +++ linux-raspi2-4.2.0/lib/842/842.h @@ -76,6 +76,7 @@ #include #include #include +#include #include #include @@ -98,6 +99,7 @@ #define I2_BITS (8) #define I4_BITS (9) #define I8_BITS (8) +#define CRC_BITS (32) #define REPEAT_BITS_MAX (0x3f) #define SHORT_DATA_BITS_MAX (0x7) --- linux-raspi2-4.2.0.orig/lib/842/842_compress.c +++ linux-raspi2-4.2.0/lib/842/842_compress.c @@ -490,6 +490,7 @@ int ret; u64 last, next, pad, total; u8 repeat_count = 0; + u32 crc; BUILD_BUG_ON(sizeof(*p) > SW842_MEM_COMPRESS); @@ -580,6 +581,18 @@ if (ret) return ret; + /* + * crc(0:31) is appended to target data starting with the next + * bit after End of stream template. + * nx842 calculates CRC for data in big-endian format. So doing + * same here so that sw842 decompression can be used for both + * compressed data. + */ + crc = crc32_be(0, in, ilen); + ret = add_bits(p, crc, CRC_BITS); + if (ret) + return ret; + if (p->bit) { p->out++; p->olen--; --- linux-raspi2-4.2.0.orig/lib/842/842_decompress.c +++ linux-raspi2-4.2.0/lib/842/842_decompress.c @@ -285,6 +285,7 @@ struct sw842_param p; int ret; u64 op, rep, tmp, bytes, total; + u64 crc; p.in = (u8 *)in; p.bit = 0; @@ -375,6 +376,22 @@ } } while (op != OP_END); + /* + * crc(0:31) is saved in compressed data starting with the + * next bit after End of stream template. + */ + ret = next_bits(&p, &crc, CRC_BITS); + if (ret) + return ret; + + /* + * Validate CRC saved in compressed data. + */ + if (crc != (u64)crc32_be(0, out, total - p.olen)) { + pr_debug("CRC mismatch for decompression\n"); + return -EINVAL; + } + if (unlikely((total - p.olen) > UINT_MAX)) return -ENOSPC; --- linux-raspi2-4.2.0.orig/lib/decompress_bunzip2.c +++ linux-raspi2-4.2.0/lib/decompress_bunzip2.c @@ -743,12 +743,12 @@ } #ifdef PREBOOT -STATIC int INIT decompress(unsigned char *buf, long len, +STATIC int INIT __decompress(unsigned char *buf, long len, long (*fill)(void*, unsigned long), long (*flush)(void*, unsigned long), - unsigned char *outbuf, + unsigned char *outbuf, long olen, long *pos, - void(*error)(char *x)) + void (*error)(char *x)) { return bunzip2(buf, len - 4, fill, flush, outbuf, pos, error); } --- linux-raspi2-4.2.0.orig/lib/decompress_inflate.c +++ linux-raspi2-4.2.0/lib/decompress_inflate.c @@ -1,4 +1,5 @@ #ifdef STATIC +#define PREBOOT /* Pre-boot environment: included */ /* prevent inclusion of _LINUX_KERNEL_H in pre-boot environment: lots @@ -33,23 +34,23 @@ } /* Included from initramfs et al code */ -STATIC int INIT gunzip(unsigned char *buf, long len, +STATIC int INIT __gunzip(unsigned char *buf, long len, long (*fill)(void*, unsigned long), long (*flush)(void*, unsigned long), - unsigned char *out_buf, + unsigned char *out_buf, long out_len, long *pos, void(*error)(char *x)) { u8 *zbuf; struct z_stream_s *strm; int rc; - size_t out_len; rc = -1; if (flush) { out_len = 0x8000; /* 32 K */ out_buf = malloc(out_len); } else { - out_len = ((size_t)~0) - (size_t)out_buf; /* no limit */ + if (!out_len) + out_len = ((size_t)~0) - (size_t)out_buf; /* no limit */ } if (!out_buf) { error("Out of memory while allocating output buffer"); @@ -181,4 +182,24 @@ return rc; /* returns Z_OK (0) if successful */ } -#define decompress gunzip +#ifndef PREBOOT +STATIC int INIT gunzip(unsigned char *buf, long len, + long (*fill)(void*, unsigned long), + long (*flush)(void*, unsigned long), + unsigned char *out_buf, + long *pos, + void (*error)(char *x)) +{ + return __gunzip(buf, len, fill, flush, out_buf, 0, pos, error); +} +#else +STATIC int INIT __decompress(unsigned char *buf, long len, + long (*fill)(void*, unsigned long), + long (*flush)(void*, unsigned long), + unsigned char *out_buf, long out_len, + long *pos, + void (*error)(char *x)) +{ + return __gunzip(buf, len, fill, flush, out_buf, out_len, pos, error); +} +#endif --- linux-raspi2-4.2.0.orig/lib/decompress_unlz4.c +++ linux-raspi2-4.2.0/lib/decompress_unlz4.c @@ -196,12 +196,12 @@ } #ifdef PREBOOT -STATIC int INIT decompress(unsigned char *buf, long in_len, +STATIC int INIT __decompress(unsigned char *buf, long in_len, long (*fill)(void*, unsigned long), long (*flush)(void*, unsigned long), - unsigned char *output, + unsigned char *output, long out_len, long *posp, - void(*error)(char *x) + void (*error)(char *x) ) { return unlz4(buf, in_len - 4, fill, flush, output, posp, error); --- linux-raspi2-4.2.0.orig/lib/decompress_unlzma.c +++ linux-raspi2-4.2.0/lib/decompress_unlzma.c @@ -667,13 +667,12 @@ } #ifdef PREBOOT -STATIC int INIT decompress(unsigned char *buf, long in_len, +STATIC int INIT __decompress(unsigned char *buf, long in_len, long (*fill)(void*, unsigned long), long (*flush)(void*, unsigned long), - unsigned char *output, + unsigned char *output, long out_len, long *posp, - void(*error)(char *x) - ) + void (*error)(char *x)) { return unlzma(buf, in_len - 4, fill, flush, output, posp, error); } --- linux-raspi2-4.2.0.orig/lib/decompress_unlzo.c +++ linux-raspi2-4.2.0/lib/decompress_unlzo.c @@ -31,6 +31,7 @@ */ #ifdef STATIC +#define PREBOOT #include "lzo/lzo1x_decompress_safe.c" #else #include @@ -287,4 +288,14 @@ return ret; } -#define decompress unlzo +#ifdef PREBOOT +STATIC int INIT __decompress(unsigned char *buf, long len, + long (*fill)(void*, unsigned long), + long (*flush)(void*, unsigned long), + unsigned char *out_buf, long olen, + long *pos, + void (*error)(char *x)) +{ + return unlzo(buf, len, fill, flush, out_buf, pos, error); +} +#endif --- linux-raspi2-4.2.0.orig/lib/decompress_unxz.c +++ linux-raspi2-4.2.0/lib/decompress_unxz.c @@ -394,4 +394,14 @@ * This macro is used by architecture-specific files to decompress * the kernel image. */ -#define decompress unxz +#ifdef XZ_PREBOOT +STATIC int INIT __decompress(unsigned char *buf, long len, + long (*fill)(void*, unsigned long), + long (*flush)(void*, unsigned long), + unsigned char *out_buf, long olen, + long *pos, + void (*error)(char *x)) +{ + return unxz(buf, len, fill, flush, out_buf, pos, error); +} +#endif --- linux-raspi2-4.2.0.orig/lib/devres.c +++ linux-raspi2-4.2.0/lib/devres.c @@ -423,7 +423,7 @@ if (!iomap) return; - for (i = 0; i < DEVICE_COUNT_RESOURCE; i++) { + for (i = 0; i < PCIM_IOMAP_MAX; i++) { if (!(mask & (1 << i))) continue; --- linux-raspi2-4.2.0.orig/lib/fault-inject.c +++ linux-raspi2-4.2.0/lib/fault-inject.c @@ -44,7 +44,7 @@ printk(KERN_NOTICE "FAULT_INJECTION: forcing a failure.\n" "name %pd, interval %lu, probability %lu, " "space %d, times %d\n", attr->dname, - attr->probability, attr->interval, + attr->interval, attr->probability, atomic_read(&attr->space), atomic_read(&attr->times)); if (attr->verbose > 1) --- linux-raspi2-4.2.0.orig/lib/hexdump.c +++ linux-raspi2-4.2.0/lib/hexdump.c @@ -169,11 +169,15 @@ } } else { for (j = 0; j < len; j++) { - if (linebuflen < lx + 3) + if (linebuflen < lx + 2) goto overflow2; ch = ptr[j]; linebuf[lx++] = hex_asc_hi(ch); + if (linebuflen < lx + 2) + goto overflow2; linebuf[lx++] = hex_asc_lo(ch); + if (linebuflen < lx + 2) + goto overflow2; linebuf[lx++] = ' '; } if (j) --- linux-raspi2-4.2.0.orig/lib/iommu-common.c +++ linux-raspi2-4.2.0/lib/iommu-common.c @@ -21,8 +21,7 @@ static inline bool need_flush(struct iommu_map_table *iommu) { - return (iommu->lazy_flush != NULL && - (iommu->flags & IOMMU_NEED_FLUSH) != 0); + return ((iommu->flags & IOMMU_NEED_FLUSH) != 0); } static inline void set_flush(struct iommu_map_table *iommu) @@ -211,7 +210,8 @@ goto bail; } } - if (n < pool->hint || need_flush(iommu)) { + if (iommu->lazy_flush && + (n < pool->hint || need_flush(iommu))) { clear_flush(iommu); iommu->lazy_flush(iommu); } --- linux-raspi2-4.2.0.orig/lib/klist.c +++ linux-raspi2-4.2.0/lib/klist.c @@ -324,6 +324,47 @@ } /** + * klist_prev - Ante up prev node in list. + * @i: Iterator structure. + * + * First grab list lock. Decrement the reference count of the previous + * node, if there was one. Grab the prev node, increment its reference + * count, drop the lock, and return that prev node. + */ +struct klist_node *klist_prev(struct klist_iter *i) +{ + void (*put)(struct klist_node *) = i->i_klist->put; + struct klist_node *last = i->i_cur; + struct klist_node *prev; + + spin_lock(&i->i_klist->k_lock); + + if (last) { + prev = to_klist_node(last->n_node.prev); + if (!klist_dec_and_del(last)) + put = NULL; + } else + prev = to_klist_node(i->i_klist->k_list.prev); + + i->i_cur = NULL; + while (prev != to_klist_node(&i->i_klist->k_list)) { + if (likely(!knode_dead(prev))) { + kref_get(&prev->n_ref); + i->i_cur = prev; + break; + } + prev = to_klist_node(prev->n_node.prev); + } + + spin_unlock(&i->i_klist->k_lock); + + if (put && last) + put(last); + return i->i_cur; +} +EXPORT_SYMBOL_GPL(klist_prev); + +/** * klist_next - Ante up next node in list. * @i: Iterator structure. * --- linux-raspi2-4.2.0.orig/lib/rhashtable.c +++ linux-raspi2-4.2.0/lib/rhashtable.c @@ -506,10 +506,11 @@ if (!iter->walker) return -ENOMEM; - mutex_lock(&ht->mutex); - iter->walker->tbl = rht_dereference(ht->tbl, ht); + spin_lock(&ht->lock); + iter->walker->tbl = + rcu_dereference_protected(ht->tbl, lockdep_is_held(&ht->lock)); list_add(&iter->walker->list, &iter->walker->tbl->walkers); - mutex_unlock(&ht->mutex); + spin_unlock(&ht->lock); return 0; } @@ -523,10 +524,10 @@ */ void rhashtable_walk_exit(struct rhashtable_iter *iter) { - mutex_lock(&iter->ht->mutex); + spin_lock(&iter->ht->lock); if (iter->walker->tbl) list_del(&iter->walker->list); - mutex_unlock(&iter->ht->mutex); + spin_unlock(&iter->ht->lock); kfree(iter->walker); } EXPORT_SYMBOL_GPL(rhashtable_walk_exit); @@ -550,14 +551,12 @@ { struct rhashtable *ht = iter->ht; - mutex_lock(&ht->mutex); + rcu_read_lock(); + spin_lock(&ht->lock); if (iter->walker->tbl) list_del(&iter->walker->list); - - rcu_read_lock(); - - mutex_unlock(&ht->mutex); + spin_unlock(&ht->lock); if (!iter->walker->tbl) { iter->walker->tbl = rht_dereference_rcu(ht->tbl, ht); @@ -726,9 +725,6 @@ if (params->nulls_base && params->nulls_base < (1U << RHT_BASE_SHIFT)) return -EINVAL; - if (params->nelem_hint) - size = rounded_hashtable_size(params); - memset(ht, 0, sizeof(*ht)); mutex_init(&ht->mutex); spin_lock_init(&ht->lock); @@ -748,6 +744,9 @@ ht->p.min_size = max(ht->p.min_size, HASH_MIN_SIZE); + if (params->nelem_hint) + size = rounded_hashtable_size(&ht->p); + /* The maximum (not average) chain length grows with the * size of the hash table, at a rate of (log N)/(log log N). * The value of 16 is selected so that even if the hash --- linux-raspi2-4.2.0.orig/mm/Makefile +++ linux-raspi2-4.2.0/mm/Makefile @@ -21,7 +21,7 @@ mm_init.o mmu_context.o percpu.o slab_common.o \ compaction.o vmacache.o \ interval_tree.o list_lru.o workingset.o \ - debug.o $(mmu-y) + prfile.o debug.o $(mmu-y) obj-y += init-mm.o --- linux-raspi2-4.2.0.orig/mm/backing-dev.c +++ linux-raspi2-4.2.0/mm/backing-dev.c @@ -823,7 +823,7 @@ synchronize_rcu_expedited(); } -void bdi_destroy(struct backing_dev_info *bdi) +void bdi_unregister(struct backing_dev_info *bdi) { /* make sure nobody finds us on the bdi_list anymore */ bdi_remove_from_list(bdi); @@ -835,9 +835,19 @@ device_unregister(bdi->dev); bdi->dev = NULL; } +} +void bdi_exit(struct backing_dev_info *bdi) +{ + WARN_ON_ONCE(bdi->dev); wb_exit(&bdi->wb); } + +void bdi_destroy(struct backing_dev_info *bdi) +{ + bdi_unregister(bdi); + bdi_exit(bdi); +} EXPORT_SYMBOL(bdi_destroy); /* --- linux-raspi2-4.2.0.orig/mm/filemap.c +++ linux-raspi2-4.2.0/mm/filemap.c @@ -2089,7 +2089,7 @@ int ret = VM_FAULT_LOCKED; sb_start_pagefault(inode->i_sb); - file_update_time(vma->vm_file); + vma_file_update_time(vma); lock_page(page); if (page->mapping != inode->i_mapping) { unlock_page(page); @@ -2488,6 +2488,11 @@ break; } + if (fatal_signal_pending(current)) { + status = -EINTR; + break; + } + status = a_ops->write_begin(file, mapping, pos, bytes, flags, &page, &fsdata); if (unlikely(status < 0)) @@ -2525,10 +2530,6 @@ written += copied; balance_dirty_pages_ratelimited(mapping); - if (fatal_signal_pending(current)) { - status = -EINTR; - break; - } } while (iov_iter_count(i)); return written ? written : status; --- linux-raspi2-4.2.0.orig/mm/huge_memory.c +++ linux-raspi2-4.2.0/mm/huge_memory.c @@ -2132,7 +2132,8 @@ for (_pte = pte; _pte < pte+HPAGE_PMD_NR; _pte++, address += PAGE_SIZE) { pte_t pteval = *_pte; - if (pte_none(pteval) || is_zero_pfn(pte_pfn(pteval))) { + if (pte_none(pteval) || (pte_present(pteval) && + is_zero_pfn(pte_pfn(pteval)))) { if (++none_or_zero <= khugepaged_max_ptes_none) continue; else --- linux-raspi2-4.2.0.orig/mm/hugetlb.c +++ linux-raspi2-4.2.0/mm/hugetlb.c @@ -2974,6 +2974,14 @@ continue; /* + * Shared VMAs have their own reserves and do not affect + * MAP_PRIVATE accounting but it is possible that a shared + * VMA is using the same page so check and skip such VMAs. + */ + if (iter_vma->vm_flags & VM_MAYSHARE) + continue; + + /* * Unmap the page from other VMAs without their own reserves. * They get marked to be SIGKILLed if they fault in these * areas. This is because a future no-page fault on this VMA --- linux-raspi2-4.2.0.orig/mm/memcontrol.c +++ linux-raspi2-4.2.0/mm/memcontrol.c @@ -806,12 +806,14 @@ } /* + * Return page count for single (non recursive) @memcg. + * * Implementation Note: reading percpu statistics for memcg. * * Both of vmstat[] and percpu_counter has threshold and do periodic * synchronization to implement "quick" read. There are trade-off between * reading cost and precision of value. Then, we may have a chance to implement - * a periodic synchronizion of counter in memcg's counter. + * a periodic synchronization of counter in memcg's counter. * * But this _read() function is used for user interface now. The user accounts * memory usage by memory cgroup and he _always_ requires exact value because @@ -821,17 +823,24 @@ * * If there are kernel internal actions which can make use of some not-exact * value, and reading all cpu value can be performance bottleneck in some - * common workload, threashold and synchonization as vmstat[] should be + * common workload, threshold and synchronization as vmstat[] should be * implemented. */ -static long mem_cgroup_read_stat(struct mem_cgroup *memcg, - enum mem_cgroup_stat_index idx) +static unsigned long +mem_cgroup_read_stat(struct mem_cgroup *memcg, enum mem_cgroup_stat_index idx) { long val = 0; int cpu; + /* Per-cpu values can be negative, use a signed accumulator */ for_each_possible_cpu(cpu) val += per_cpu(memcg->stat->count[idx], cpu); + /* + * Summing races with updates, so val may be negative. Avoid exposing + * transient negative values. + */ + if (val < 0) + val = 0; return val; } @@ -1498,7 +1507,7 @@ for (i = 0; i < MEM_CGROUP_STAT_NSTATS; i++) { if (i == MEM_CGROUP_STAT_SWAP && !do_swap_account) continue; - pr_cont(" %s:%ldKB", mem_cgroup_stat_names[i], + pr_cont(" %s:%luKB", mem_cgroup_stat_names[i], K(mem_cgroup_read_stat(iter, i))); } @@ -3119,20 +3128,17 @@ enum mem_cgroup_stat_index idx) { struct mem_cgroup *iter; - long val = 0; + unsigned long val = 0; - /* Per-cpu values can be negative, use a signed accumulator */ for_each_mem_cgroup_tree(iter, memcg) val += mem_cgroup_read_stat(iter, idx); - if (val < 0) /* race ? */ - val = 0; return val; } -static inline u64 mem_cgroup_usage(struct mem_cgroup *memcg, bool swap) +static inline unsigned long mem_cgroup_usage(struct mem_cgroup *memcg, bool swap) { - u64 val; + unsigned long val; if (mem_cgroup_is_root(memcg)) { val = tree_stat(memcg, MEM_CGROUP_STAT_CACHE); @@ -3145,7 +3151,7 @@ else val = page_counter_read(&memcg->memsw); } - return val << PAGE_SHIFT; + return val; } enum { @@ -3179,9 +3185,9 @@ switch (MEMFILE_ATTR(cft->private)) { case RES_USAGE: if (counter == &memcg->memory) - return mem_cgroup_usage(memcg, false); + return (u64)mem_cgroup_usage(memcg, false) * PAGE_SIZE; if (counter == &memcg->memsw) - return mem_cgroup_usage(memcg, true); + return (u64)mem_cgroup_usage(memcg, true) * PAGE_SIZE; return (u64)page_counter_read(counter) * PAGE_SIZE; case RES_LIMIT: return (u64)counter->limit * PAGE_SIZE; @@ -3469,7 +3475,7 @@ for (i = 0; i < MEM_CGROUP_STAT_NSTATS; i++) { if (i == MEM_CGROUP_STAT_SWAP && !do_swap_account) continue; - seq_printf(m, "%s %ld\n", mem_cgroup_stat_names[i], + seq_printf(m, "%s %lu\n", mem_cgroup_stat_names[i], mem_cgroup_read_stat(memcg, i) * PAGE_SIZE); } @@ -3494,13 +3500,13 @@ (u64)memsw * PAGE_SIZE); for (i = 0; i < MEM_CGROUP_STAT_NSTATS; i++) { - long long val = 0; + unsigned long long val = 0; if (i == MEM_CGROUP_STAT_SWAP && !do_swap_account) continue; for_each_mem_cgroup_tree(mi, memcg) val += mem_cgroup_read_stat(mi, i) * PAGE_SIZE; - seq_printf(m, "total_%s %lld\n", mem_cgroup_stat_names[i], val); + seq_printf(m, "total_%s %llu\n", mem_cgroup_stat_names[i], val); } for (i = 0; i < MEM_CGROUP_EVENTS_NSTATS; i++) { @@ -5518,6 +5524,7 @@ .dfl_cftypes = memory_files, .legacy_cftypes = mem_cgroup_legacy_files, .early_init = 0, + .disabled = 1, }; /** --- linux-raspi2-4.2.0.orig/mm/memory.c +++ linux-raspi2-4.2.0/mm/memory.c @@ -2034,7 +2034,7 @@ } if (!page_mkwrite) - file_update_time(vma->vm_file); + vma_file_update_time(vma); } return VM_FAULT_WRITE; --- linux-raspi2-4.2.0.orig/mm/memory_hotplug.c +++ linux-raspi2-4.2.0/mm/memory_hotplug.c @@ -1248,6 +1248,14 @@ mem_hotplug_begin(); + /* + * Add new range to memblock so that when hotadd_new_pgdat() is called + * to allocate new pgdat, get_pfn_range_for_nid() will be able to find + * this new range and calculate total pages correctly. The range will + * be removed at hot-remove time. + */ + memblock_add_node(start, size, nid); + new_node = !node_online(nid); if (new_node) { pgdat = hotadd_new_pgdat(nid, start); @@ -1277,7 +1285,6 @@ /* create new memmap entry */ firmware_map_add_hotplug(start, start + size, "System RAM"); - memblock_add_node(start, size, nid); goto out; @@ -1286,6 +1293,7 @@ if (new_pgdat) rollback_node_hotadd(nid, pgdat); release_memory_resource(res); + memblock_remove(start, size); out: mem_hotplug_done(); --- linux-raspi2-4.2.0.orig/mm/migrate.c +++ linux-raspi2-4.2.0/mm/migrate.c @@ -734,6 +734,15 @@ if (PageSwapBacked(page)) SetPageSwapBacked(newpage); + /* + * Indirectly called below, migrate_page_copy() copies PG_dirty and thus + * needs newpage's memcg set to transfer memcg dirty page accounting. + * So perform memcg migration in two steps: + * 1. set newpage->mem_cgroup (here) + * 2. clear page->mem_cgroup (below) + */ + set_page_memcg(newpage, page_memcg(page)); + mapping = page_mapping(page); if (!mapping) rc = migrate_page(mapping, newpage, page, mode); @@ -750,9 +759,10 @@ rc = fallback_migrate_page(mapping, newpage, page, mode); if (rc != MIGRATEPAGE_SUCCESS) { + set_page_memcg(newpage, NULL); newpage->mapping = NULL; } else { - mem_cgroup_migrate(page, newpage, false); + set_page_memcg(page, NULL); if (page_was_mapped) remove_migration_ptes(page, newpage); page->mapping = NULL; @@ -1068,7 +1078,7 @@ if (rc != MIGRATEPAGE_SUCCESS && put_new_page) put_new_page(new_hpage, private); else - put_page(new_hpage); + putback_active_hugepage(new_hpage); if (result) { if (rc) --- linux-raspi2-4.2.0.orig/mm/mmap.c +++ linux-raspi2-4.2.0/mm/mmap.c @@ -274,7 +274,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)); kmem_cache_free(vm_area_cachep, vma); return next; @@ -886,7 +886,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); @@ -1671,8 +1671,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); @@ -2473,7 +2473,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); @@ -2492,7 +2492,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)); @@ -2635,7 +2635,6 @@ struct vm_area_struct *vma; unsigned long populate = 0; unsigned long ret = -EINVAL; - struct file *file; pr_warn_once("%s (%d) uses deprecated remap_file_pages() syscall. " "See Documentation/vm/remap_file_pages.txt.\n", @@ -2679,10 +2678,10 @@ munlock_vma_pages_range(vma, start, start + size); } - file = get_file(vma->vm_file); + vma_get_file(vma); ret = do_mmap_pgoff(vma->vm_file, start, size, prot, flags, pgoff, &populate); - fput(file); + vma_fput(vma); out: up_write(&mm->mmap_sem); if (populate) @@ -2949,7 +2948,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-raspi2-4.2.0.orig/mm/nommu.c +++ linux-raspi2-4.2.0/mm/nommu.c @@ -671,7 +671,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 */ @@ -829,7 +829,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); kmem_cache_free(vm_area_cachep, vma); } @@ -1354,7 +1354,7 @@ goto error_just_free; } } - fput(region->vm_file); + vmr_fput(region); kmem_cache_free(vm_region_jar, region); region = pregion; result = start; @@ -1429,10 +1429,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); kmem_cache_free(vm_area_cachep, vma); return ret; --- linux-raspi2-4.2.0.orig/mm/oom_kill.c +++ linux-raspi2-4.2.0/mm/oom_kill.c @@ -561,6 +561,12 @@ /* mm cannot safely be dereferenced after task_unlock(victim) */ mm = victim->mm; + /* + * We should send SIGKILL before setting TIF_MEMDIE in order to prevent + * the OOM victim from depleting the memory reserves from the user + * space under its control. + */ + do_send_sig_info(SIGKILL, SEND_SIG_FORCED, victim, true); mark_oom_victim(victim); pr_err("Killed process %d (%s) total-vm:%lukB, anon-rss:%lukB, file-rss:%lukB\n", task_pid_nr(victim), victim->comm, K(victim->mm->total_vm), @@ -592,7 +598,6 @@ } rcu_read_unlock(); - do_send_sig_info(SIGKILL, SEND_SIG_FORCED, victim, true); put_task_struct(victim); } #undef K --- linux-raspi2-4.2.0.orig/mm/page_alloc.c +++ linux-raspi2-4.2.0/mm/page_alloc.c @@ -6311,6 +6311,15 @@ { int rc; + /* + * hack for smsc95xx: if reduced below this, smsc ethernet driver + * can blow up with spew of + * smsc95xx 1-1.1:1.0: eth0: kevent 2 may have been dropped + */ + + if (min_free_kbytes < 32768) + min_free_kbytes = 32768; + rc = proc_dointvec_minmax(table, write, buffer, length, ppos); if (rc) return rc; --- linux-raspi2-4.2.0.orig/mm/prfile.c +++ linux-raspi2-4.2.0/mm/prfile.c @@ -0,0 +1,86 @@ +/* + * Mainly for aufs which mmap(2) diffrent 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 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, %p\n", func, line, func2, + f ? (char *)f->f_path.dentry->d_name.name : "(null)"); +#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-raspi2-4.2.0.orig/mm/shmem.c +++ linux-raspi2-4.2.0/mm/shmem.c @@ -110,9 +110,13 @@ return totalram_pages / 2; } -static unsigned long shmem_default_max_inodes(void) +static int shmem_default_max_inodes(void) { - return min(totalram_pages - totalhigh_pages, totalram_pages / 2); + unsigned long ul; + + ul = INT_MAX; + ul = min3(ul, totalram_pages - totalhigh_pages, totalram_pages / 2); + return ul; } #endif @@ -587,6 +591,7 @@ static void shmem_evict_inode(struct inode *inode) { struct shmem_inode_info *info = SHMEM_I(inode); + struct shmem_sb_info *sbinfo = SHMEM_SB(inode->i_sb); if (inode->i_mapping->a_ops == &shmem_aops) { shmem_unacct_size(info->flags, inode->i_size); @@ -602,6 +607,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); } @@ -1401,13 +1411,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; @@ -1448,6 +1458,25 @@ mpol_shared_policy_init(&info->policy, NULL); 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(); } else shmem_free_inode(sb); return inode; @@ -2665,8 +2694,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; } @@ -2677,14 +2705,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 = d_find_alias(inode); iput(inode); @@ -2696,30 +2721,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; } @@ -2784,7 +2794,7 @@ goto bad_val; } else if (!strcmp(this_char,"nr_inodes")) { sbinfo->max_inodes = memparse(value, &rest); - if (*rest) + if (*rest || sbinfo->max_inodes < 2) goto bad_val; } else if (!strcmp(this_char,"mode")) { if (remount) @@ -2837,7 +2847,7 @@ { struct shmem_sb_info *sbinfo = SHMEM_SB(sb); struct shmem_sb_info config = *sbinfo; - unsigned long inodes; + int inodes; int error = -EINVAL; config.mpol = NULL; @@ -2885,7 +2895,7 @@ seq_printf(seq, ",size=%luk", sbinfo->max_blocks << (PAGE_CACHE_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 != (S_IRWXUGO | S_ISVTX)) seq_printf(seq, ",mode=%03ho", sbinfo->mode); if (!uid_eq(sbinfo->uid, GLOBAL_ROOT_UID)) @@ -2974,6 +2984,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); @@ -2992,6 +3004,8 @@ if (!sbinfo) return -ENOMEM; + mutex_init(&sbinfo->idr_lock); + idr_init(&sbinfo->idr); sbinfo->mode = S_IRWXUGO | S_ISVTX; sbinfo->uid = current_fsuid(); sbinfo->gid = current_fsgid(); @@ -3095,6 +3109,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, @@ -3230,6 +3253,7 @@ printk(KERN_ERR "Could not kern_mount tmpfs\n"); goto out1; } + shmem_no_idr(shm_mnt->mnt_sb); return 0; out1: --- linux-raspi2-4.2.0.orig/mm/slab.c +++ linux-raspi2-4.2.0/mm/slab.c @@ -282,6 +282,7 @@ #define CFLGS_OFF_SLAB (0x80000000UL) #define OFF_SLAB(x) ((x)->flags & CFLGS_OFF_SLAB) +#define OFF_SLAB_MIN_SIZE (max_t(size_t, PAGE_SIZE >> 5, KMALLOC_MIN_SIZE + 1)) #define BATCHREFILL_LIMIT 16 /* @@ -2190,9 +2191,16 @@ size += BYTES_PER_WORD; } #if FORCED_DEBUG && defined(CONFIG_DEBUG_PAGEALLOC) - if (size >= kmalloc_size(INDEX_NODE + 1) - && cachep->object_size > cache_line_size() - && ALIGN(size, cachep->align) < PAGE_SIZE) { + /* + * To activate debug pagealloc, off-slab management is necessary + * requirement. In early phase of initialization, small sized slab + * doesn't get initialized so it would not be possible. So, we need + * to check size >= 256. It guarantees that all necessary small + * sized slab is initialized in current slab initialization sequence. + */ + if (!slab_early_init && size >= kmalloc_size(INDEX_NODE) && + size >= 256 && cachep->object_size > cache_line_size() && + ALIGN(size, cachep->align) < PAGE_SIZE) { cachep->obj_offset += PAGE_SIZE - ALIGN(size, cachep->align); size = PAGE_SIZE; } @@ -2205,7 +2213,7 @@ * it too early on. Always use on-slab management when * SLAB_NOLEAKTRACE to avoid recursive calls into kmemleak) */ - if ((size >= (PAGE_SIZE >> 5)) && !slab_early_init && + if (size >= OFF_SLAB_MIN_SIZE && !slab_early_init && !(flags & SLAB_NOLEAKTRACE)) /* * Size is large, assume best to place the slab management obj @@ -2269,7 +2277,7 @@ /* * This is a possibility for one of the kmalloc_{dma,}_caches. * But since we go off slab only for object size greater than - * PAGE_SIZE/8, and kmalloc_{dma,}_caches get created + * OFF_SLAB_MIN_SIZE, and kmalloc_{dma,}_caches get created * in ascending order,this should not happen at all. * But leave a BUG_ON for some lucky dude. */ --- linux-raspi2-4.2.0.orig/mm/vmscan.c +++ linux-raspi2-4.2.0/mm/vmscan.c @@ -1190,7 +1190,7 @@ if (PageSwapCache(page)) try_to_free_swap(page); unlock_page(page); - putback_lru_page(page); + list_add(&page->lru, &ret_pages); continue; activate_locked: --- linux-raspi2-4.2.0.orig/net/ax25/af_ax25.c +++ linux-raspi2-4.2.0/net/ax25/af_ax25.c @@ -805,6 +805,9 @@ struct sock *sk; ax25_cb *ax25; + if (protocol < 0 || protocol > SK_PROTOCOL_MAX) + return -EINVAL; + if (!net_eq(net, &init_net)) return -EAFNOSUPPORT; --- linux-raspi2-4.2.0.orig/net/batman-adv/distributed-arp-table.c +++ linux-raspi2-4.2.0/net/batman-adv/distributed-arp-table.c @@ -19,6 +19,7 @@ #include "main.h" #include +#include #include #include #include @@ -453,7 +454,7 @@ int j; /* check if orig node candidate is running DAT */ - if (!(candidate->capabilities & BATADV_ORIG_CAPA_HAS_DAT)) + if (!test_bit(BATADV_ORIG_CAPA_HAS_DAT, &candidate->capabilities)) goto out; /* Check if this node has already been selected... */ @@ -713,9 +714,9 @@ uint16_t tvlv_value_len) { if (flags & BATADV_TVLV_HANDLER_OGM_CIFNOTFND) - orig->capabilities &= ~BATADV_ORIG_CAPA_HAS_DAT; + clear_bit(BATADV_ORIG_CAPA_HAS_DAT, &orig->capabilities); else - orig->capabilities |= BATADV_ORIG_CAPA_HAS_DAT; + set_bit(BATADV_ORIG_CAPA_HAS_DAT, &orig->capabilities); } /** --- linux-raspi2-4.2.0.orig/net/batman-adv/multicast.c +++ linux-raspi2-4.2.0/net/batman-adv/multicast.c @@ -19,6 +19,8 @@ #include "main.h" #include +#include +#include #include #include #include @@ -588,19 +590,26 @@ * * If the BATADV_MCAST_WANT_ALL_UNSNOOPABLES flag of this originator, * orig, has toggled then this method updates counter and list accordingly. + * + * Caller needs to hold orig->mcast_handler_lock. */ static void batadv_mcast_want_unsnoop_update(struct batadv_priv *bat_priv, struct batadv_orig_node *orig, uint8_t mcast_flags) { + struct hlist_node *node = &orig->mcast_want_all_unsnoopables_node; + struct hlist_head *head = &bat_priv->mcast.want_all_unsnoopables_list; + /* switched from flag unset to set */ if (mcast_flags & BATADV_MCAST_WANT_ALL_UNSNOOPABLES && !(orig->mcast_flags & BATADV_MCAST_WANT_ALL_UNSNOOPABLES)) { atomic_inc(&bat_priv->mcast.num_want_all_unsnoopables); spin_lock_bh(&bat_priv->mcast.want_lists_lock); - hlist_add_head_rcu(&orig->mcast_want_all_unsnoopables_node, - &bat_priv->mcast.want_all_unsnoopables_list); + /* flag checks above + mcast_handler_lock prevents this */ + WARN_ON(!hlist_unhashed(node)); + + hlist_add_head_rcu(node, head); spin_unlock_bh(&bat_priv->mcast.want_lists_lock); /* switched from flag set to unset */ } else if (!(mcast_flags & BATADV_MCAST_WANT_ALL_UNSNOOPABLES) && @@ -608,7 +617,10 @@ atomic_dec(&bat_priv->mcast.num_want_all_unsnoopables); spin_lock_bh(&bat_priv->mcast.want_lists_lock); - hlist_del_rcu(&orig->mcast_want_all_unsnoopables_node); + /* flag checks above + mcast_handler_lock prevents this */ + WARN_ON(hlist_unhashed(node)); + + hlist_del_init_rcu(node); spin_unlock_bh(&bat_priv->mcast.want_lists_lock); } } @@ -621,19 +633,26 @@ * * If the BATADV_MCAST_WANT_ALL_IPV4 flag of this originator, orig, has * toggled then this method updates counter and list accordingly. + * + * Caller needs to hold orig->mcast_handler_lock. */ static void batadv_mcast_want_ipv4_update(struct batadv_priv *bat_priv, struct batadv_orig_node *orig, uint8_t mcast_flags) { + struct hlist_node *node = &orig->mcast_want_all_ipv4_node; + struct hlist_head *head = &bat_priv->mcast.want_all_ipv4_list; + /* switched from flag unset to set */ if (mcast_flags & BATADV_MCAST_WANT_ALL_IPV4 && !(orig->mcast_flags & BATADV_MCAST_WANT_ALL_IPV4)) { atomic_inc(&bat_priv->mcast.num_want_all_ipv4); spin_lock_bh(&bat_priv->mcast.want_lists_lock); - hlist_add_head_rcu(&orig->mcast_want_all_ipv4_node, - &bat_priv->mcast.want_all_ipv4_list); + /* flag checks above + mcast_handler_lock prevents this */ + WARN_ON(!hlist_unhashed(node)); + + hlist_add_head_rcu(node, head); spin_unlock_bh(&bat_priv->mcast.want_lists_lock); /* switched from flag set to unset */ } else if (!(mcast_flags & BATADV_MCAST_WANT_ALL_IPV4) && @@ -641,7 +660,10 @@ atomic_dec(&bat_priv->mcast.num_want_all_ipv4); spin_lock_bh(&bat_priv->mcast.want_lists_lock); - hlist_del_rcu(&orig->mcast_want_all_ipv4_node); + /* flag checks above + mcast_handler_lock prevents this */ + WARN_ON(hlist_unhashed(node)); + + hlist_del_init_rcu(node); spin_unlock_bh(&bat_priv->mcast.want_lists_lock); } } @@ -654,19 +676,26 @@ * * If the BATADV_MCAST_WANT_ALL_IPV6 flag of this originator, orig, has * toggled then this method updates counter and list accordingly. + * + * Caller needs to hold orig->mcast_handler_lock. */ static void batadv_mcast_want_ipv6_update(struct batadv_priv *bat_priv, struct batadv_orig_node *orig, uint8_t mcast_flags) { + struct hlist_node *node = &orig->mcast_want_all_ipv6_node; + struct hlist_head *head = &bat_priv->mcast.want_all_ipv6_list; + /* switched from flag unset to set */ if (mcast_flags & BATADV_MCAST_WANT_ALL_IPV6 && !(orig->mcast_flags & BATADV_MCAST_WANT_ALL_IPV6)) { atomic_inc(&bat_priv->mcast.num_want_all_ipv6); spin_lock_bh(&bat_priv->mcast.want_lists_lock); - hlist_add_head_rcu(&orig->mcast_want_all_ipv6_node, - &bat_priv->mcast.want_all_ipv6_list); + /* flag checks above + mcast_handler_lock prevents this */ + WARN_ON(!hlist_unhashed(node)); + + hlist_add_head_rcu(node, head); spin_unlock_bh(&bat_priv->mcast.want_lists_lock); /* switched from flag set to unset */ } else if (!(mcast_flags & BATADV_MCAST_WANT_ALL_IPV6) && @@ -674,7 +703,10 @@ atomic_dec(&bat_priv->mcast.num_want_all_ipv6); spin_lock_bh(&bat_priv->mcast.want_lists_lock); - hlist_del_rcu(&orig->mcast_want_all_ipv6_node); + /* flag checks above + mcast_handler_lock prevents this */ + WARN_ON(hlist_unhashed(node)); + + hlist_del_init_rcu(node); spin_unlock_bh(&bat_priv->mcast.want_lists_lock); } } @@ -697,39 +729,42 @@ uint8_t mcast_flags = BATADV_NO_FLAGS; bool orig_initialized; - orig_initialized = orig->capa_initialized & BATADV_ORIG_CAPA_HAS_MCAST; + if (orig_mcast_enabled && tvlv_value && + (tvlv_value_len >= sizeof(mcast_flags))) + mcast_flags = *(uint8_t *)tvlv_value; + + spin_lock_bh(&orig->mcast_handler_lock); + orig_initialized = test_bit(BATADV_ORIG_CAPA_HAS_MCAST, + &orig->capa_initialized); /* If mcast support is turned on decrease the disabled mcast node * counter only if we had increased it for this node before. If this * is a completely new orig_node no need to decrease the counter. */ if (orig_mcast_enabled && - !(orig->capabilities & BATADV_ORIG_CAPA_HAS_MCAST)) { + !test_bit(BATADV_ORIG_CAPA_HAS_MCAST, &orig->capabilities)) { if (orig_initialized) atomic_dec(&bat_priv->mcast.num_disabled); - orig->capabilities |= BATADV_ORIG_CAPA_HAS_MCAST; + set_bit(BATADV_ORIG_CAPA_HAS_MCAST, &orig->capabilities); /* If mcast support is being switched off or if this is an initial * OGM without mcast support then increase the disabled mcast * node counter. */ } else if (!orig_mcast_enabled && - (orig->capabilities & BATADV_ORIG_CAPA_HAS_MCAST || + (test_bit(BATADV_ORIG_CAPA_HAS_MCAST, &orig->capabilities) || !orig_initialized)) { atomic_inc(&bat_priv->mcast.num_disabled); - orig->capabilities &= ~BATADV_ORIG_CAPA_HAS_MCAST; + clear_bit(BATADV_ORIG_CAPA_HAS_MCAST, &orig->capabilities); } - orig->capa_initialized |= BATADV_ORIG_CAPA_HAS_MCAST; - - if (orig_mcast_enabled && tvlv_value && - (tvlv_value_len >= sizeof(mcast_flags))) - mcast_flags = *(uint8_t *)tvlv_value; + set_bit(BATADV_ORIG_CAPA_HAS_MCAST, &orig->capa_initialized); batadv_mcast_want_unsnoop_update(bat_priv, orig, mcast_flags); batadv_mcast_want_ipv4_update(bat_priv, orig, mcast_flags); batadv_mcast_want_ipv6_update(bat_priv, orig, mcast_flags); orig->mcast_flags = mcast_flags; + spin_unlock_bh(&orig->mcast_handler_lock); } /** @@ -763,11 +798,15 @@ { struct batadv_priv *bat_priv = orig->bat_priv; - if (!(orig->capabilities & BATADV_ORIG_CAPA_HAS_MCAST) && - orig->capa_initialized & BATADV_ORIG_CAPA_HAS_MCAST) + spin_lock_bh(&orig->mcast_handler_lock); + + if (!test_bit(BATADV_ORIG_CAPA_HAS_MCAST, &orig->capabilities) && + test_bit(BATADV_ORIG_CAPA_HAS_MCAST, &orig->capa_initialized)) atomic_dec(&bat_priv->mcast.num_disabled); batadv_mcast_want_unsnoop_update(bat_priv, orig, BATADV_NO_FLAGS); batadv_mcast_want_ipv4_update(bat_priv, orig, BATADV_NO_FLAGS); batadv_mcast_want_ipv6_update(bat_priv, orig, BATADV_NO_FLAGS); + + spin_unlock_bh(&orig->mcast_handler_lock); } --- linux-raspi2-4.2.0.orig/net/batman-adv/network-coding.c +++ linux-raspi2-4.2.0/net/batman-adv/network-coding.c @@ -19,6 +19,7 @@ #include "main.h" #include +#include #include #include #include @@ -134,9 +135,9 @@ uint16_t tvlv_value_len) { if (flags & BATADV_TVLV_HANDLER_OGM_CIFNOTFND) - orig->capabilities &= ~BATADV_ORIG_CAPA_HAS_NC; + clear_bit(BATADV_ORIG_CAPA_HAS_NC, &orig->capabilities); else - orig->capabilities |= BATADV_ORIG_CAPA_HAS_NC; + set_bit(BATADV_ORIG_CAPA_HAS_NC, &orig->capabilities); } /** @@ -894,7 +895,7 @@ goto out; /* check if orig node is network coding enabled */ - if (!(orig_node->capabilities & BATADV_ORIG_CAPA_HAS_NC)) + if (!test_bit(BATADV_ORIG_CAPA_HAS_NC, &orig_node->capabilities)) goto out; /* accept ogms from 'good' neighbors and single hop neighbors */ --- linux-raspi2-4.2.0.orig/net/batman-adv/originator.c +++ linux-raspi2-4.2.0/net/batman-adv/originator.c @@ -696,8 +696,13 @@ orig_node->last_seen = jiffies; reset_time = jiffies - 1 - msecs_to_jiffies(BATADV_RESET_PROTECTION_MS); orig_node->bcast_seqno_reset = reset_time; + #ifdef CONFIG_BATMAN_ADV_MCAST orig_node->mcast_flags = BATADV_NO_FLAGS; + INIT_HLIST_NODE(&orig_node->mcast_want_all_unsnoopables_node); + INIT_HLIST_NODE(&orig_node->mcast_want_all_ipv4_node); + INIT_HLIST_NODE(&orig_node->mcast_want_all_ipv6_node); + spin_lock_init(&orig_node->mcast_handler_lock); #endif /* create a vlan object for the "untagged" LAN */ --- linux-raspi2-4.2.0.orig/net/batman-adv/soft-interface.c +++ linux-raspi2-4.2.0/net/batman-adv/soft-interface.c @@ -202,6 +202,7 @@ int gw_mode; enum batadv_forw_mode forw_mode; struct batadv_orig_node *mcast_single_orig = NULL; + int network_offset = ETH_HLEN; if (atomic_read(&bat_priv->mesh_state) != BATADV_MESH_ACTIVE) goto dropped; @@ -214,14 +215,18 @@ case ETH_P_8021Q: vhdr = vlan_eth_hdr(skb); - if (vhdr->h_vlan_encapsulated_proto != ethertype) + if (vhdr->h_vlan_encapsulated_proto != ethertype) { + network_offset += VLAN_HLEN; break; + } /* fall through */ case ETH_P_BATMAN: goto dropped; } + skb_set_network_header(skb, network_offset); + if (batadv_bla_tx(bat_priv, skb, vid)) goto dropped; --- linux-raspi2-4.2.0.orig/net/batman-adv/translation-table.c +++ linux-raspi2-4.2.0/net/batman-adv/translation-table.c @@ -19,6 +19,7 @@ #include "main.h" #include +#include #include #include #include @@ -1882,7 +1883,7 @@ } spin_unlock_bh(list_lock); } - orig_node->capa_initialized &= ~BATADV_ORIG_CAPA_HAS_TT; + clear_bit(BATADV_ORIG_CAPA_HAS_TT, &orig_node->capa_initialized); } static bool batadv_tt_global_to_purge(struct batadv_tt_global_entry *tt_global, @@ -2841,7 +2842,7 @@ return; } } - orig_node->capa_initialized |= BATADV_ORIG_CAPA_HAS_TT; + set_bit(BATADV_ORIG_CAPA_HAS_TT, &orig_node->capa_initialized); } static void batadv_tt_fill_gtable(struct batadv_priv *bat_priv, @@ -3343,7 +3344,8 @@ bool has_tt_init; tt_vlan = (struct batadv_tvlv_tt_vlan_data *)tt_buff; - has_tt_init = orig_node->capa_initialized & BATADV_ORIG_CAPA_HAS_TT; + has_tt_init = test_bit(BATADV_ORIG_CAPA_HAS_TT, + &orig_node->capa_initialized); /* orig table not initialised AND first diff is in the OGM OR the ttvn * increased by one -> we can apply the attached changes --- linux-raspi2-4.2.0.orig/net/batman-adv/types.h +++ linux-raspi2-4.2.0/net/batman-adv/types.h @@ -221,6 +221,7 @@ * @batadv_dat_addr_t: address of the orig node in the distributed hash * @last_seen: time when last packet from this node was received * @bcast_seqno_reset: time when the broadcast seqno window was reset + * @mcast_handler_lock: synchronizes mcast-capability and -flag changes * @mcast_flags: multicast flags announced by the orig node * @mcast_want_all_unsnoop_node: a list node for the * mcast.want_all_unsnoopables list @@ -268,13 +269,15 @@ unsigned long last_seen; unsigned long bcast_seqno_reset; #ifdef CONFIG_BATMAN_ADV_MCAST + /* synchronizes mcast tvlv specific orig changes */ + spinlock_t mcast_handler_lock; uint8_t mcast_flags; struct hlist_node mcast_want_all_unsnoopables_node; struct hlist_node mcast_want_all_ipv4_node; struct hlist_node mcast_want_all_ipv6_node; #endif - uint8_t capabilities; - uint8_t capa_initialized; + unsigned long capabilities; + unsigned long capa_initialized; atomic_t last_ttvn; unsigned char *tt_buff; int16_t tt_buff_len; @@ -313,10 +316,10 @@ * (= orig node announces a tvlv of type BATADV_TVLV_MCAST) */ enum batadv_orig_capabilities { - BATADV_ORIG_CAPA_HAS_DAT = BIT(0), - BATADV_ORIG_CAPA_HAS_NC = BIT(1), - BATADV_ORIG_CAPA_HAS_TT = BIT(2), - BATADV_ORIG_CAPA_HAS_MCAST = BIT(3), + BATADV_ORIG_CAPA_HAS_DAT, + BATADV_ORIG_CAPA_HAS_NC, + BATADV_ORIG_CAPA_HAS_TT, + BATADV_ORIG_CAPA_HAS_MCAST, }; /** --- linux-raspi2-4.2.0.orig/net/bluetooth/hidp/core.c +++ linux-raspi2-4.2.0/net/bluetooth/hidp/core.c @@ -401,6 +401,20 @@ { struct hidp_session *session = (struct hidp_session *) arg; + /* The HIDP user-space API only contains calls to add and remove + * devices. There is no way to forward events of any kind. Therefore, + * we have to forcefully disconnect a device on idle-timeouts. This is + * unfortunate and weird API design, but it is spec-compliant and + * required for backwards-compatibility. Hence, on idle-timeout, we + * signal driver-detach events, so poll() will be woken up with an + * error-condition on both sockets. + */ + + session->intr_sock->sk->sk_err = EUNATCH; + session->ctrl_sock->sk->sk_err = EUNATCH; + wake_up_interruptible(sk_sleep(session->intr_sock->sk)); + wake_up_interruptible(sk_sleep(session->ctrl_sock->sk)); + hidp_session_terminate(session); } --- linux-raspi2-4.2.0.orig/net/bluetooth/mgmt.c +++ linux-raspi2-4.2.0/net/bluetooth/mgmt.c @@ -3090,6 +3090,11 @@ } else { u8 addr_type; + if (cp->addr.type == BDADDR_LE_PUBLIC) + addr_type = ADDR_LE_DEV_PUBLIC; + else + addr_type = ADDR_LE_DEV_RANDOM; + conn = hci_conn_hash_lookup_ba(hdev, LE_LINK, &cp->addr.bdaddr); if (conn) { @@ -3105,13 +3110,10 @@ */ if (!cp->disconnect) conn = NULL; + } else { + hci_conn_params_del(hdev, &cp->addr.bdaddr, addr_type); } - if (cp->addr.type == BDADDR_LE_PUBLIC) - addr_type = ADDR_LE_DEV_PUBLIC; - else - addr_type = ADDR_LE_DEV_RANDOM; - hci_remove_irk(hdev, &cp->addr.bdaddr, addr_type); err = hci_remove_ltk(hdev, &cp->addr.bdaddr, addr_type); --- linux-raspi2-4.2.0.orig/net/bluetooth/sco.c +++ linux-raspi2-4.2.0/net/bluetooth/sco.c @@ -520,6 +520,9 @@ if (!addr || addr->sa_family != AF_BLUETOOTH) return -EINVAL; + if (addr_len < sizeof(struct sockaddr_sco)) + return -EINVAL; + lock_sock(sk); if (sk->sk_state != BT_OPEN) { --- linux-raspi2-4.2.0.orig/net/bluetooth/smp.c +++ linux-raspi2-4.2.0/net/bluetooth/smp.c @@ -2311,12 +2311,6 @@ if (!conn) return 1; - chan = conn->smp; - if (!chan) { - BT_ERR("SMP security requested but not available"); - return 1; - } - if (!hci_dev_test_flag(hcon->hdev, HCI_LE_ENABLED)) return 1; @@ -2330,6 +2324,12 @@ if (smp_ltk_encrypt(conn, hcon->pending_sec_level)) return 0; + chan = conn->smp; + if (!chan) { + BT_ERR("SMP security requested but not available"); + return 1; + } + l2cap_chan_lock(chan); /* If SMP is already in progress ignore this request */ --- linux-raspi2-4.2.0.orig/net/bridge/br_multicast.c +++ linux-raspi2-4.2.0/net/bridge/br_multicast.c @@ -991,7 +991,7 @@ ih = igmpv3_report_hdr(skb); num = ntohs(ih->ngrec); - len = sizeof(*ih); + len = skb_transport_offset(skb) + sizeof(*ih); for (i = 0; i < num; i++) { len += sizeof(*grec); @@ -1052,7 +1052,7 @@ icmp6h = icmp6_hdr(skb); num = ntohs(icmp6h->icmp6_dataun.un_data16[1]); - len = sizeof(*icmp6h); + len = skb_transport_offset(skb) + sizeof(*icmp6h); for (i = 0; i < num; i++) { __be16 *nsrcs, _nsrcs; --- linux-raspi2-4.2.0.orig/net/bridge/br_netlink.c +++ linux-raspi2-4.2.0/net/bridge/br_netlink.c @@ -839,7 +839,7 @@ .kind = "bridge", .priv_size = sizeof(struct net_bridge), .setup = br_dev_setup, - .maxtype = IFLA_BRPORT_MAX, + .maxtype = IFLA_BR_MAX, .policy = br_policy, .validate = br_validate, .newlink = br_dev_newlink, --- linux-raspi2-4.2.0.orig/net/ceph/ceph_common.c +++ linux-raspi2-4.2.0/net/ceph/ceph_common.c @@ -517,8 +517,11 @@ struct ceph_options *opt = client->options; size_t pos = m->count; - if (opt->name) - seq_printf(m, "name=%s,", opt->name); + if (opt->name) { + seq_puts(m, "name="); + seq_escape(m, opt->name, ", \t\n\\"); + seq_putc(m, ','); + } if (opt->key) seq_puts(m, "secret=,"); --- linux-raspi2-4.2.0.orig/net/core/dst.c +++ linux-raspi2-4.2.0/net/core/dst.c @@ -287,7 +287,7 @@ if (unlikely(newrefcnt < 0)) net_warn_ratelimited("%s: dst:%p refcnt:%d\n", __func__, dst, newrefcnt); - if (unlikely(dst->flags & DST_NOCACHE) && !newrefcnt) + if (!newrefcnt && unlikely(dst->flags & DST_NOCACHE)) call_rcu(&dst->rcu_head, dst_destroy_rcu); } } --- linux-raspi2-4.2.0.orig/net/core/ethtool.c +++ linux-raspi2-4.2.0/net/core/ethtool.c @@ -1284,7 +1284,7 @@ gstrings.len = ret; - data = kmalloc(gstrings.len * ETH_GSTRING_LEN, GFP_USER); + data = kcalloc(gstrings.len, ETH_GSTRING_LEN, GFP_USER); if (!data) return -ENOMEM; --- linux-raspi2-4.2.0.orig/net/core/fib_rules.c +++ linux-raspi2-4.2.0/net/core/fib_rules.c @@ -615,15 +615,17 @@ { int idx = 0; struct fib_rule *rule; + int err = 0; rcu_read_lock(); list_for_each_entry_rcu(rule, &ops->rules_list, list) { if (idx < cb->args[1]) goto skip; - if (fib_nl_fill_rule(skb, rule, NETLINK_CB(cb->skb).portid, - cb->nlh->nlmsg_seq, RTM_NEWRULE, - NLM_F_MULTI, ops) < 0) + err = fib_nl_fill_rule(skb, rule, NETLINK_CB(cb->skb).portid, + cb->nlh->nlmsg_seq, RTM_NEWRULE, + NLM_F_MULTI, ops); + if (err) break; skip: idx++; @@ -632,7 +634,7 @@ cb->args[1] = idx; rules_ops_put(ops); - return skb->len; + return err; } static int fib_nl_dumprule(struct sk_buff *skb, struct netlink_callback *cb) @@ -648,7 +650,9 @@ if (ops == NULL) return -EAFNOSUPPORT; - return dump_rules(skb, cb, ops); + dump_rules(skb, cb, ops); + + return skb->len; } rcu_read_lock(); --- linux-raspi2-4.2.0.orig/net/core/filter.c +++ linux-raspi2-4.2.0/net/core/filter.c @@ -1412,6 +1412,7 @@ return dev_forward_skb(dev, skb2); skb2->dev = dev; + skb_sender_cpu_clear(skb2); return dev_queue_xmit(skb2); } @@ -1701,9 +1702,13 @@ goto out; /* We're copying the filter that has been originally attached, - * so no conversion/decode needed anymore. + * so no conversion/decode needed anymore. eBPF programs that + * have no original program cannot be dumped through this. */ + ret = -EACCES; fprog = filter->prog->orig_prog; + if (!fprog) + goto out; ret = fprog->len; if (!len) --- linux-raspi2-4.2.0.orig/net/core/flow_dissector.c +++ linux-raspi2-4.2.0/net/core/flow_dissector.c @@ -121,7 +121,8 @@ bool __skb_flow_dissect(const struct sk_buff *skb, struct flow_dissector *flow_dissector, void *target_container, - void *data, __be16 proto, int nhoff, int hlen) + void *data, __be16 proto, int nhoff, int hlen, + unsigned int flags) { struct flow_dissector_key_control *key_control; struct flow_dissector_key_basic *key_basic; @@ -557,7 +558,7 @@ static inline u32 ___skb_get_hash(const struct sk_buff *skb, struct flow_keys *keys, u32 keyval) { - if (!skb_flow_dissect_flow_keys(skb, keys)) + if (!skb_flow_dissect_flow_keys(skb, keys, 0)) return 0; return __flow_hash_from_keys(keys, keyval); @@ -609,10 +610,9 @@ hash = ___skb_get_hash(skb, &keys, hashrnd); if (!hash) return; - if (keys.ports.ports) - skb->l4_hash = 1; - skb->sw_hash = 1; - skb->hash = hash; + + __skb_set_sw_hash(skb, hash, + flow_keys_have_l4(&keys)); } EXPORT_SYMBOL(__skb_get_hash); @@ -624,6 +624,51 @@ } EXPORT_SYMBOL(skb_get_hash_perturb); +__u32 __skb_get_hash_flowi6(struct sk_buff *skb, struct flowi6 *fl6) +{ + struct flow_keys keys; + + memset(&keys, 0, sizeof(keys)); + + memcpy(&keys.addrs.v6addrs.src, &fl6->saddr, + sizeof(keys.addrs.v6addrs.src)); + memcpy(&keys.addrs.v6addrs.dst, &fl6->daddr, + sizeof(keys.addrs.v6addrs.dst)); + keys.control.addr_type = FLOW_DISSECTOR_KEY_IPV6_ADDRS; + keys.ports.src = fl6->fl6_sport; + keys.ports.dst = fl6->fl6_dport; + keys.keyid.keyid = fl6->fl6_gre_key; + keys.tags.flow_label = (__force u32)fl6->flowlabel; + keys.basic.ip_proto = fl6->flowi6_proto; + + __skb_set_sw_hash(skb, flow_hash_from_keys(&keys), + flow_keys_have_l4(&keys)); + + return skb->hash; +} +EXPORT_SYMBOL(__skb_get_hash_flowi6); + +__u32 __skb_get_hash_flowi4(struct sk_buff *skb, struct flowi4 *fl4) +{ + struct flow_keys keys; + + memset(&keys, 0, sizeof(keys)); + + keys.addrs.v4addrs.src = fl4->saddr; + keys.addrs.v4addrs.dst = fl4->daddr; + keys.control.addr_type = FLOW_DISSECTOR_KEY_IPV4_ADDRS; + keys.ports.src = fl4->fl4_sport; + keys.ports.dst = fl4->fl4_dport; + keys.keyid.keyid = fl4->fl4_gre_key; + keys.basic.ip_proto = fl4->flowi4_proto; + + __skb_set_sw_hash(skb, flow_hash_from_keys(&keys), + flow_keys_have_l4(&keys)); + + return skb->hash; +} +EXPORT_SYMBOL(__skb_get_hash_flowi4); + u32 __skb_get_poff(const struct sk_buff *skb, void *data, const struct flow_keys *keys, int hlen) { @@ -683,7 +728,7 @@ { struct flow_keys keys; - if (!skb_flow_dissect_flow_keys(skb, &keys)) + if (!skb_flow_dissect_flow_keys(skb, &keys, 0)) return 0; return __skb_get_poff(skb, skb->data, &keys, skb_headlen(skb)); --- linux-raspi2-4.2.0.orig/net/core/neighbour.c +++ linux-raspi2-4.2.0/net/core/neighbour.c @@ -2210,7 +2210,7 @@ ndm->ndm_pad2 = 0; ndm->ndm_flags = pn->flags | NTF_PROXY; ndm->ndm_type = RTN_UNICAST; - ndm->ndm_ifindex = pn->dev->ifindex; + ndm->ndm_ifindex = pn->dev ? pn->dev->ifindex : 0; ndm->ndm_state = NUD_NONE; if (nla_put(skb, NDA_DST, tbl->key_len, pn->key)) @@ -2285,7 +2285,7 @@ if (h > s_h) s_idx = 0; for (n = tbl->phash_buckets[h], idx = 0; n; n = n->next) { - if (dev_net(n->dev) != net) + if (pneigh_net(n) != net) continue; if (idx < s_idx) goto next; --- linux-raspi2-4.2.0.orig/net/core/net-sysfs.c +++ linux-raspi2-4.2.0/net/core/net-sysfs.c @@ -987,15 +987,12 @@ } #ifdef CONFIG_XPS -static inline unsigned int get_netdev_queue_index(struct netdev_queue *queue) +static unsigned int get_netdev_queue_index(struct netdev_queue *queue) { struct net_device *dev = queue->dev; - int i; - - for (i = 0; i < dev->num_tx_queues; i++) - if (queue == &dev->_tx[i]) - break; + unsigned int i; + i = queue - dev->_tx; BUG_ON(i >= dev->num_tx_queues); return i; --- linux-raspi2-4.2.0.orig/net/core/rtnetlink.c +++ linux-raspi2-4.2.0/net/core/rtnetlink.c @@ -3021,6 +3021,7 @@ u32 portid = NETLINK_CB(cb->skb).portid; u32 seq = cb->nlh->nlmsg_seq; u32 filter_mask = 0; + int err; if (nlmsg_len(cb->nlh) > sizeof(struct ifinfomsg)) { struct nlattr *extfilt; @@ -3041,20 +3042,25 @@ struct net_device *br_dev = netdev_master_upper_dev_get(dev); if (br_dev && br_dev->netdev_ops->ndo_bridge_getlink) { - if (idx >= cb->args[0] && - br_dev->netdev_ops->ndo_bridge_getlink( - skb, portid, seq, dev, filter_mask, - NLM_F_MULTI) < 0) - break; + if (idx >= cb->args[0]) { + err = br_dev->netdev_ops->ndo_bridge_getlink( + skb, portid, seq, dev, + filter_mask, NLM_F_MULTI); + if (err < 0 && err != -EOPNOTSUPP) + break; + } idx++; } if (ops->ndo_bridge_getlink) { - if (idx >= cb->args[0] && - ops->ndo_bridge_getlink(skb, portid, seq, dev, - filter_mask, - NLM_F_MULTI) < 0) - break; + if (idx >= cb->args[0]) { + err = ops->ndo_bridge_getlink(skb, portid, + seq, dev, + filter_mask, + NLM_F_MULTI); + if (err < 0 && err != -EOPNOTSUPP) + break; + } idx++; } } --- linux-raspi2-4.2.0.orig/net/core/scm.c +++ linux-raspi2-4.2.0/net/core/scm.c @@ -305,6 +305,8 @@ err = put_user(cmlen, &cm->cmsg_len); if (!err) { cmlen = CMSG_SPACE(i*sizeof(int)); + if (msg->msg_controllen < cmlen) + cmlen = msg->msg_controllen; msg->msg_control += cmlen; msg->msg_controllen -= cmlen; } --- linux-raspi2-4.2.0.orig/net/core/skbuff.c +++ linux-raspi2-4.2.0/net/core/skbuff.c @@ -2958,11 +2958,12 @@ */ unsigned char *skb_pull_rcsum(struct sk_buff *skb, unsigned int len) { + unsigned char *data = skb->data; + BUG_ON(len > skb->len); - skb->len -= len; - BUG_ON(skb->len < skb->data_len); - skb_postpull_rcsum(skb, skb->data, len); - return skb->data += len; + __skb_pull(skb, len); + skb_postpull_rcsum(skb, data, len); + return skb->data; } EXPORT_SYMBOL_GPL(skb_pull_rcsum); @@ -3642,7 +3643,8 @@ serr->ee.ee_info = tstype; if (sk->sk_tsflags & SOF_TIMESTAMPING_OPT_ID) { serr->ee.ee_data = skb_shinfo(skb)->tskey; - if (sk->sk_protocol == IPPROTO_TCP) + if (sk->sk_protocol == IPPROTO_TCP && + sk->sk_type == SOCK_STREAM) serr->ee.ee_data -= sk->sk_tskey; } @@ -4267,7 +4269,8 @@ return NULL; } - memmove(skb->data - ETH_HLEN, skb->data - VLAN_ETH_HLEN, 2 * ETH_ALEN); + memmove(skb->data - ETH_HLEN, skb->data - skb->mac_len - VLAN_HLEN, + 2 * ETH_ALEN); skb->mac_header += VLAN_HLEN; return skb; } --- linux-raspi2-4.2.0.orig/net/core/sock.c +++ linux-raspi2-4.2.0/net/core/sock.c @@ -422,8 +422,6 @@ } } -#define SK_FLAGS_TIMESTAMP ((1UL << SOCK_TIMESTAMP) | (1UL << SOCK_TIMESTAMPING_RX_SOFTWARE)) - static void sock_disable_timestamp(struct sock *sk, unsigned long flags) { if (sk->sk_flags & flags) { @@ -862,7 +860,8 @@ if (val & SOF_TIMESTAMPING_OPT_ID && !(sk->sk_tsflags & SOF_TIMESTAMPING_OPT_ID)) { - if (sk->sk_protocol == IPPROTO_TCP) { + if (sk->sk_protocol == IPPROTO_TCP && + sk->sk_type == SOCK_STREAM) { if (sk->sk_state != TCP_ESTABLISHED) { ret = -EINVAL; break; --- linux-raspi2-4.2.0.orig/net/core/sock_diag.c +++ linux-raspi2-4.2.0/net/core/sock_diag.c @@ -90,6 +90,9 @@ goto out; fprog = filter->prog->orig_prog; + if (!fprog) + goto out; + flen = bpf_classic_proglen(fprog); attr = nla_reserve(skb, attrtype, flen); --- linux-raspi2-4.2.0.orig/net/dccp/ipv6.c +++ linux-raspi2-4.2.0/net/dccp/ipv6.c @@ -202,7 +202,9 @@ security_req_classify_flow(req, flowi6_to_flowi(&fl6)); - final_p = fl6_update_dst(&fl6, np->opt, &final); + rcu_read_lock(); + final_p = fl6_update_dst(&fl6, rcu_dereference(np->opt), &final); + rcu_read_unlock(); dst = ip6_dst_lookup_flow(sk, &fl6, final_p); if (IS_ERR(dst)) { @@ -219,7 +221,10 @@ &ireq->ir_v6_loc_addr, &ireq->ir_v6_rmt_addr); fl6.daddr = ireq->ir_v6_rmt_addr; - err = ip6_xmit(sk, skb, &fl6, np->opt, np->tclass); + rcu_read_lock(); + err = ip6_xmit(sk, skb, &fl6, rcu_dereference(np->opt), + np->tclass); + rcu_read_unlock(); err = net_xmit_eval(err); } @@ -415,6 +420,7 @@ { struct inet_request_sock *ireq = inet_rsk(req); struct ipv6_pinfo *newnp, *np = inet6_sk(sk); + struct ipv6_txoptions *opt; struct inet_sock *newinet; struct dccp6_sock *newdp6; struct sock *newsk; @@ -534,13 +540,15 @@ * Yes, keeping reference count would be much more clever, but we make * one more one thing there: reattach optmem to newsk. */ - if (np->opt != NULL) - newnp->opt = ipv6_dup_options(newsk, np->opt); - + opt = rcu_dereference(np->opt); + if (opt) { + opt = ipv6_dup_options(newsk, opt); + RCU_INIT_POINTER(newnp->opt, opt); + } inet_csk(newsk)->icsk_ext_hdr_len = 0; - if (newnp->opt != NULL) - inet_csk(newsk)->icsk_ext_hdr_len = (newnp->opt->opt_nflen + - newnp->opt->opt_flen); + if (opt) + inet_csk(newsk)->icsk_ext_hdr_len = opt->opt_nflen + + opt->opt_flen; dccp_sync_mss(newsk, dst_mtu(dst)); @@ -793,6 +801,7 @@ struct ipv6_pinfo *np = inet6_sk(sk); struct dccp_sock *dp = dccp_sk(sk); struct in6_addr *saddr = NULL, *final_p, final; + struct ipv6_txoptions *opt; struct flowi6 fl6; struct dst_entry *dst; int addr_type; @@ -892,7 +901,8 @@ fl6.fl6_sport = inet->inet_sport; security_sk_classify_flow(sk, flowi6_to_flowi(&fl6)); - final_p = fl6_update_dst(&fl6, np->opt, &final); + opt = rcu_dereference_protected(np->opt, sock_owned_by_user(sk)); + final_p = fl6_update_dst(&fl6, opt, &final); dst = ip6_dst_lookup_flow(sk, &fl6, final_p); if (IS_ERR(dst)) { @@ -912,9 +922,8 @@ __ip6_dst_store(sk, dst, NULL, NULL); icsk->icsk_ext_hdr_len = 0; - if (np->opt != NULL) - icsk->icsk_ext_hdr_len = (np->opt->opt_flen + - np->opt->opt_nflen); + if (opt) + icsk->icsk_ext_hdr_len = opt->opt_flen + opt->opt_nflen; inet->inet_dport = usin->sin6_port; --- linux-raspi2-4.2.0.orig/net/decnet/af_decnet.c +++ linux-raspi2-4.2.0/net/decnet/af_decnet.c @@ -678,6 +678,9 @@ { struct sock *sk; + if (protocol < 0 || protocol > SK_PROTOCOL_MAX) + return -EINVAL; + if (!net_eq(net, &init_net)) return -EAFNOSUPPORT; --- linux-raspi2-4.2.0.orig/net/dsa/slave.c +++ linux-raspi2-4.2.0/net/dsa/slave.c @@ -348,12 +348,17 @@ static int dsa_slave_port_attr_set(struct net_device *dev, struct switchdev_attr *attr) { - int ret = 0; + struct dsa_slave_priv *p = netdev_priv(dev); + struct dsa_switch *ds = p->parent; + int ret; switch (attr->id) { case SWITCHDEV_ATTR_PORT_STP_STATE: - if (attr->trans == SWITCHDEV_TRANS_COMMIT) - ret = dsa_slave_stp_update(dev, attr->u.stp_state); + if (attr->trans == SWITCHDEV_TRANS_PREPARE) + ret = ds->drv->port_stp_update ? 0 : -EOPNOTSUPP; + else + ret = ds->drv->port_stp_update(ds, p->port, + attr->u.stp_state); break; default: ret = -EOPNOTSUPP; --- linux-raspi2-4.2.0.orig/net/ethernet/eth.c +++ linux-raspi2-4.2.0/net/ethernet/eth.c @@ -132,7 +132,7 @@ /* parse any remaining L2/L3 headers, check for L4 */ if (!skb_flow_dissect_flow_keys_buf(&keys, data, eth->h_proto, - sizeof(*eth), len)) + sizeof(*eth), len, 0)) return max_t(u32, keys.control.thoff, sizeof(*eth)); /* parse for any L4 headers */ --- linux-raspi2-4.2.0.orig/net/ieee802154/6lowpan/reassembly.c +++ linux-raspi2-4.2.0/net/ieee802154/6lowpan/reassembly.c @@ -523,14 +523,19 @@ { struct netns_ieee802154_lowpan *ieee802154_lowpan = net_ieee802154_lowpan(net); + int res; ieee802154_lowpan->frags.high_thresh = IPV6_FRAG_HIGH_THRESH; ieee802154_lowpan->frags.low_thresh = IPV6_FRAG_LOW_THRESH; ieee802154_lowpan->frags.timeout = IPV6_FRAG_TIMEOUT; - inet_frags_init_net(&ieee802154_lowpan->frags); - - return lowpan_frags_ns_sysctl_register(net); + res = inet_frags_init_net(&ieee802154_lowpan->frags); + if (res) + return res; + res = lowpan_frags_ns_sysctl_register(net); + if (res) + inet_frags_uninit_net(&ieee802154_lowpan->frags); + return res; } static void __net_exit lowpan_frags_exit_net(struct net *net) --- linux-raspi2-4.2.0.orig/net/ipv4/af_inet.c +++ linux-raspi2-4.2.0/net/ipv4/af_inet.c @@ -259,6 +259,9 @@ int try_loading_module = 0; int err; + if (protocol < 0 || protocol >= IPPROTO_MAX) + return -EINVAL; + sock->state = SS_UNCONNECTED; /* Look for the requested type/protocol pair. */ --- linux-raspi2-4.2.0.orig/net/ipv4/datagram.c +++ linux-raspi2-4.2.0/net/ipv4/datagram.c @@ -74,7 +74,7 @@ inet->inet_daddr = fl4->daddr; inet->inet_dport = usin->sin_port; sk->sk_state = TCP_ESTABLISHED; - inet_set_txhash(sk); + sk_set_txhash(sk); inet->inet_id = jiffies; sk_dst_set(sk, &rt->dst); --- linux-raspi2-4.2.0.orig/net/ipv4/fib_frontend.c +++ linux-raspi2-4.2.0/net/ipv4/fib_frontend.c @@ -1063,9 +1063,10 @@ net->ipv4.fibnl = NULL; } -static void fib_disable_ip(struct net_device *dev, unsigned long event) +static void fib_disable_ip(struct net_device *dev, unsigned long event, + bool force) { - if (fib_sync_down_dev(dev, event)) + if (fib_sync_down_dev(dev, event, force)) fib_flush(dev_net(dev)); rt_cache_flush(dev_net(dev)); arp_ifdown(dev); @@ -1093,7 +1094,7 @@ /* Last address was deleted from this interface. * Disable IP. */ - fib_disable_ip(dev, event); + fib_disable_ip(dev, event, true); } else { rt_cache_flush(dev_net(dev)); } @@ -1110,7 +1111,7 @@ unsigned int flags; if (event == NETDEV_UNREGISTER) { - fib_disable_ip(dev, event); + fib_disable_ip(dev, event, true); rt_flush_dev(dev); return NOTIFY_DONE; } @@ -1131,14 +1132,14 @@ rt_cache_flush(net); break; case NETDEV_DOWN: - fib_disable_ip(dev, event); + fib_disable_ip(dev, event, false); break; case NETDEV_CHANGE: flags = dev_get_flags(dev); if (flags & (IFF_RUNNING | IFF_LOWER_UP)) fib_sync_up(dev, RTNH_F_LINKDOWN); else - fib_sync_down_dev(dev, event); + fib_sync_down_dev(dev, event, false); /* fall through */ case NETDEV_CHANGEMTU: rt_cache_flush(net); --- linux-raspi2-4.2.0.orig/net/ipv4/fib_semantics.c +++ linux-raspi2-4.2.0/net/ipv4/fib_semantics.c @@ -1132,7 +1132,13 @@ return ret; } -int fib_sync_down_dev(struct net_device *dev, unsigned long event) +/* Event force Flags Description + * NETDEV_CHANGE 0 LINKDOWN Carrier OFF, not for scope host + * NETDEV_DOWN 0 LINKDOWN|DEAD Link down, not for scope host + * NETDEV_DOWN 1 LINKDOWN|DEAD Last address removed + * NETDEV_UNREGISTER 1 LINKDOWN|DEAD Device removed + */ +int fib_sync_down_dev(struct net_device *dev, unsigned long event, bool force) { int ret = 0; int scope = RT_SCOPE_NOWHERE; @@ -1141,8 +1147,7 @@ struct hlist_head *head = &fib_info_devhash[hash]; struct fib_nh *nh; - if (event == NETDEV_UNREGISTER || - event == NETDEV_DOWN) + if (force) scope = -1; hlist_for_each_entry(nh, head, nh_hash) { @@ -1291,6 +1296,13 @@ if (!(dev->flags & IFF_UP)) return 0; + if (nh_flags & RTNH_F_DEAD) { + unsigned int flags = dev_get_flags(dev); + + if (flags & (IFF_RUNNING | IFF_LOWER_UP)) + nh_flags |= RTNH_F_LINKDOWN; + } + prev_fi = NULL; hash = fib_devindex_hashfn(dev->ifindex); head = &fib_info_devhash[hash]; --- linux-raspi2-4.2.0.orig/net/ipv4/fib_trie.c +++ linux-raspi2-4.2.0/net/ipv4/fib_trie.c @@ -1561,7 +1561,7 @@ do { /* record parent and next child index */ pn = n; - cindex = key ? get_index(key, pn) : 0; + cindex = (key > pn->key) ? get_index(key, pn) : 0; if (cindex >> pn->bits) break; --- linux-raspi2-4.2.0.orig/net/ipv4/fou.c +++ linux-raspi2-4.2.0/net/ipv4/fou.c @@ -24,6 +24,7 @@ u16 type; struct udp_offload udp_offloads; struct list_head list; + struct rcu_head rcu; }; #define FOU_F_REMCSUM_NOPARTIAL BIT(0) @@ -421,7 +422,7 @@ list_del(&fou->list); udp_tunnel_sock_release(sock); - kfree(fou); + kfree_rcu(fou, rcu); } static int fou_encap_init(struct sock *sk, struct fou *fou, struct fou_cfg *cfg) --- linux-raspi2-4.2.0.orig/net/ipv4/gre_offload.c +++ linux-raspi2-4.2.0/net/ipv4/gre_offload.c @@ -36,7 +36,8 @@ SKB_GSO_TCP_ECN | SKB_GSO_GRE | SKB_GSO_GRE_CSUM | - SKB_GSO_IPIP))) + SKB_GSO_IPIP | + SKB_GSO_SIT))) goto out; if (!skb->encapsulation) --- linux-raspi2-4.2.0.orig/net/ipv4/igmp.c +++ linux-raspi2-4.2.0/net/ipv4/igmp.c @@ -2368,11 +2368,11 @@ struct ip_sf_socklist *psl; struct net *net = sock_net(sk); + ASSERT_RTNL(); + if (!ipv4_is_multicast(addr)) return -EINVAL; - rtnl_lock(); - imr.imr_multiaddr.s_addr = msf->imsf_multiaddr; imr.imr_address.s_addr = msf->imsf_interface; imr.imr_ifindex = 0; @@ -2393,7 +2393,6 @@ goto done; msf->imsf_fmode = pmc->sfmode; psl = rtnl_dereference(pmc->sflist); - rtnl_unlock(); if (!psl) { len = 0; count = 0; @@ -2412,7 +2411,6 @@ return -EFAULT; return 0; done: - rtnl_unlock(); return err; } @@ -2426,6 +2424,8 @@ struct inet_sock *inet = inet_sk(sk); struct ip_sf_socklist *psl; + ASSERT_RTNL(); + psin = (struct sockaddr_in *)&gsf->gf_group; if (psin->sin_family != AF_INET) return -EINVAL; @@ -2433,8 +2433,6 @@ if (!ipv4_is_multicast(addr)) return -EINVAL; - rtnl_lock(); - err = -EADDRNOTAVAIL; for_each_pmc_rtnl(inet, pmc) { @@ -2446,7 +2444,6 @@ goto done; gsf->gf_fmode = pmc->sfmode; psl = rtnl_dereference(pmc->sflist); - rtnl_unlock(); count = psl ? psl->sl_count : 0; copycount = count < gsf->gf_numsrc ? count : gsf->gf_numsrc; gsf->gf_numsrc = count; @@ -2466,7 +2463,6 @@ } return 0; done: - rtnl_unlock(); return err; } --- linux-raspi2-4.2.0.orig/net/ipv4/inet_connection_sock.c +++ linux-raspi2-4.2.0/net/ipv4/inet_connection_sock.c @@ -577,21 +577,22 @@ static bool reqsk_queue_unlink(struct request_sock_queue *queue, struct request_sock *req) { - struct listen_sock *lopt = queue->listen_opt; struct request_sock **prev; + struct listen_sock *lopt; bool found = false; spin_lock(&queue->syn_wait_lock); - - for (prev = &lopt->syn_table[req->rsk_hash]; *prev != NULL; - prev = &(*prev)->dl_next) { - if (*prev == req) { - *prev = req->dl_next; - found = true; - break; + lopt = queue->listen_opt; + if (lopt) { + for (prev = &lopt->syn_table[req->rsk_hash]; *prev != NULL; + prev = &(*prev)->dl_next) { + if (*prev == req) { + *prev = req->dl_next; + found = true; + break; + } } } - spin_unlock(&queue->syn_wait_lock); if (timer_pending(&req->rsk_timer) && del_timer_sync(&req->rsk_timer)) reqsk_put(req); @@ -685,20 +686,20 @@ req->num_timeout = 0; req->sk = NULL; + setup_timer(&req->rsk_timer, reqsk_timer_handler, (unsigned long)req); + mod_timer_pinned(&req->rsk_timer, jiffies + timeout); + req->rsk_hash = hash; + /* before letting lookups find us, make sure all req fields * are committed to memory and refcnt initialized. */ smp_wmb(); atomic_set(&req->rsk_refcnt, 2); - setup_timer(&req->rsk_timer, reqsk_timer_handler, (unsigned long)req); - req->rsk_hash = hash; spin_lock(&queue->syn_wait_lock); req->dl_next = lopt->syn_table[hash]; lopt->syn_table[hash] = req; spin_unlock(&queue->syn_wait_lock); - - mod_timer_pinned(&req->rsk_timer, jiffies + timeout); } EXPORT_SYMBOL(reqsk_queue_hash_req); --- linux-raspi2-4.2.0.orig/net/ipv4/inet_fragment.c +++ linux-raspi2-4.2.0/net/ipv4/inet_fragment.c @@ -209,12 +209,6 @@ } EXPORT_SYMBOL(inet_frags_init); -void inet_frags_init_net(struct netns_frags *nf) -{ - init_frag_mem_limit(nf); -} -EXPORT_SYMBOL(inet_frags_init_net); - void inet_frags_fini(struct inet_frags *f) { cancel_work_sync(&f->frags_work); --- linux-raspi2-4.2.0.orig/net/ipv4/ip_fragment.c +++ linux-raspi2-4.2.0/net/ipv4/ip_fragment.c @@ -845,6 +845,8 @@ static int __net_init ipv4_frags_init_net(struct net *net) { + int res; + /* Fragment cache limits. * * The fragment memory accounting code, (tries to) account for @@ -868,9 +870,13 @@ */ net->ipv4.frags.timeout = IP_FRAG_TIME; - inet_frags_init_net(&net->ipv4.frags); - - return ip4_frags_ns_ctl_register(net); + res = inet_frags_init_net(&net->ipv4.frags); + if (res) + return res; + res = ip4_frags_ns_ctl_register(net); + if (res) + inet_frags_uninit_net(&net->ipv4.frags); + return res; } static void __net_exit ipv4_frags_exit_net(struct net *net) --- linux-raspi2-4.2.0.orig/net/ipv4/ip_output.c +++ linux-raspi2-4.2.0/net/ipv4/ip_output.c @@ -114,7 +114,7 @@ { int err; - err = __ip_local_out(skb); + err = __ip_local_out_sk(sk, skb); if (likely(err == 1)) err = dst_output_sk(sk, skb); @@ -451,7 +451,7 @@ skb->priority = sk->sk_priority; skb->mark = sk->sk_mark; - res = ip_local_out(skb); + res = ip_local_out_sk(sk, skb); rcu_read_unlock(); return res; --- linux-raspi2-4.2.0.orig/net/ipv4/ip_sockglue.c +++ linux-raspi2-4.2.0/net/ipv4/ip_sockglue.c @@ -1251,11 +1251,22 @@ * the _received_ ones. The set sets the _sent_ ones. */ +static bool getsockopt_needs_rtnl(int optname) +{ + switch (optname) { + case IP_MSFILTER: + case MCAST_MSFILTER: + return true; + } + return false; +} + static int do_ip_getsockopt(struct sock *sk, int level, int optname, char __user *optval, int __user *optlen, unsigned int flags) { struct inet_sock *inet = inet_sk(sk); - int val; + bool needs_rtnl = getsockopt_needs_rtnl(optname); + int val, err = 0; int len; if (level != SOL_IP) @@ -1269,6 +1280,8 @@ if (len < 0) return -EINVAL; + if (needs_rtnl) + rtnl_lock(); lock_sock(sk); switch (optname) { @@ -1386,39 +1399,35 @@ case IP_MSFILTER: { struct ip_msfilter msf; - int err; if (len < IP_MSFILTER_SIZE(0)) { - release_sock(sk); - return -EINVAL; + err = -EINVAL; + goto out; } if (copy_from_user(&msf, optval, IP_MSFILTER_SIZE(0))) { - release_sock(sk); - return -EFAULT; + err = -EFAULT; + goto out; } err = ip_mc_msfget(sk, &msf, (struct ip_msfilter __user *)optval, optlen); - release_sock(sk); - return err; + goto out; } case MCAST_MSFILTER: { struct group_filter gsf; - int err; if (len < GROUP_FILTER_SIZE(0)) { - release_sock(sk); - return -EINVAL; + err = -EINVAL; + goto out; } if (copy_from_user(&gsf, optval, GROUP_FILTER_SIZE(0))) { - release_sock(sk); - return -EFAULT; + err = -EFAULT; + goto out; } err = ip_mc_gsfget(sk, &gsf, (struct group_filter __user *)optval, optlen); - release_sock(sk); - return err; + goto out; } case IP_MULTICAST_ALL: val = inet->mc_all; @@ -1485,6 +1494,12 @@ return -EFAULT; } return 0; + +out: + release_sock(sk); + if (needs_rtnl) + rtnl_unlock(); + return err; } int ip_getsockopt(struct sock *sk, int level, --- linux-raspi2-4.2.0.orig/net/ipv4/ip_tunnel.c +++ linux-raspi2-4.2.0/net/ipv4/ip_tunnel.c @@ -1095,6 +1095,11 @@ } EXPORT_SYMBOL_GPL(ip_tunnel_newlink); +static int ip_tunnel_is_fan(struct ip_tunnel *tunnel) +{ + return tunnel->parms.i_flags & TUNNEL_FAN; +} + int ip_tunnel_changelink(struct net_device *dev, struct nlattr *tb[], struct ip_tunnel_parm *p) { @@ -1104,7 +1109,7 @@ struct ip_tunnel_net *itn = net_generic(net, tunnel->ip_tnl_net_id); if (dev == itn->fb_tunnel_dev) - return -EINVAL; + return ip_tunnel_is_fan(tunnel) ? 0 : -EINVAL; t = ip_tunnel_find(itn, p, dev->type); --- linux-raspi2-4.2.0.orig/net/ipv4/ipip.c +++ linux-raspi2-4.2.0/net/ipv4/ipip.c @@ -107,6 +107,7 @@ #include #include #include +#include #include #include @@ -208,6 +209,40 @@ return 0; } +static int ipip_tunnel_is_fan(struct ip_tunnel *tunnel) +{ + return tunnel->parms.i_flags & TUNNEL_FAN; +} + +/* + * Determine fan tunnel endpoint to send packet to, based on the inner IP + * address. 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 with an overlay of 99 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 99.6.7.0/24. + */ +static int ipip_build_fan_iphdr(struct ip_tunnel *tunnel, struct sk_buff *skb, struct iphdr *iph) +{ + unsigned int overlay; + u32 daddr, underlay; + + daddr = ntohl(ip_hdr(skb)->daddr); + overlay = daddr >> 24; + underlay = tunnel->fan.map[overlay]; + if (!underlay) + return -EINVAL; + + *iph = tunnel->parms.iph; + iph->daddr = htonl(underlay | ((daddr >> 8) & 0x0000ffff)); + return 0; +} + /* * This function assumes it is being called from dev_queue_xmit() * and that skb is filled properly by that function. @@ -215,7 +250,8 @@ static netdev_tx_t ipip_tunnel_xmit(struct sk_buff *skb, struct net_device *dev) { struct ip_tunnel *tunnel = netdev_priv(dev); - const struct iphdr *tiph = &tunnel->parms.iph; + const struct iphdr *tiph; + struct iphdr fiph; if (unlikely(skb->protocol != htons(ETH_P_IP))) goto tx_error; @@ -224,6 +260,14 @@ if (IS_ERR(skb)) goto out; + if (ipip_tunnel_is_fan(tunnel)) { + if (ipip_build_fan_iphdr(tunnel, skb, &fiph)) + goto tx_error; + tiph = &fiph; + } else { + tiph = &tunnel->parms.iph; + } + skb_set_inner_ipproto(skb, IPPROTO_IPIP); ip_tunnel_xmit(skb, dev, tiph, tiph->protocol); @@ -378,21 +422,88 @@ return ret; } +static void ipip_fan_free_map(struct ip_tunnel *t) +{ + memset(&t->fan.map, 0, sizeof(t->fan.map)); +} + +static int ipip_fan_set_map(struct ip_tunnel *t, struct ip_tunnel_fan_map *map) +{ + u32 overlay, overlay_mask, underlay, underlay_mask; + + if ((map->underlay_prefix && map->underlay_prefix != 16) || + (map->overlay_prefix && map->overlay_prefix != 8)) + return -EINVAL; + + overlay = ntohl(map->overlay); + overlay_mask = ntohl(inet_make_mask(map->overlay_prefix)); + + underlay = ntohl(map->underlay); + underlay_mask = ntohl(inet_make_mask(map->underlay_prefix)); + + if ((overlay & ~overlay_mask) || (underlay & ~underlay_mask)) + return -EINVAL; + + if (!(overlay & overlay_mask) && (underlay & underlay_mask)) + return -EINVAL; + + t->parms.i_flags |= TUNNEL_FAN; + + /* Special case: overlay 0 and underlay 0 clears all mappings */ + if (!overlay && !underlay) { + ipip_fan_free_map(t); + return 0; + } + + overlay >>= (32 - map->overlay_prefix); + t->fan.map[overlay] = underlay; + + return 0; +} + + +static int ipip_netlink_fan(struct nlattr *data[], struct ip_tunnel *t, + struct ip_tunnel_parm *parms) +{ + struct ip_tunnel_fan_map *map; + struct nlattr *attr; + int rem, rv; + + if (!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_set_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 ip_tunnel_parm p; struct ip_tunnel_encap ipencap; + struct ip_tunnel *t = netdev_priv(dev); + int err; if (ipip_netlink_encap_parms(data, &ipencap)) { - struct ip_tunnel *t = netdev_priv(dev); - 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); + err = ipip_netlink_fan(data, t, &p); + if (err < 0) + return err; return ip_tunnel_newlink(dev, tb, &p); } @@ -401,16 +512,20 @@ { struct ip_tunnel_parm p; struct ip_tunnel_encap ipencap; + struct ip_tunnel *t = netdev_priv(dev); + int err; if (ipip_netlink_encap_parms(data, &ipencap)) { - struct ip_tunnel *t = netdev_priv(dev); - 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); + 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)) @@ -442,6 +557,8 @@ nla_total_size(2) + /* IFLA_IPTUN_ENCAP_DPORT */ nla_total_size(2) + + /* IFLA_IPTUN_FAN_MAP */ + nla_total_size(sizeof(struct ip_tunnel_fan_map)) * 256 + 0; } @@ -469,6 +586,29 @@ tunnel->encap.flags)) goto nla_put_failure; + if (tunnel->parms.i_flags & TUNNEL_FAN) { + struct nlattr *fan_nest; + int i; + + fan_nest = nla_nest_start(skb, IFLA_IPTUN_FAN_MAP); + if (!fan_nest) + goto nla_put_failure; + for (i = 0; i < 256; i++) { + if (tunnel->fan.map[i]) { + struct ip_tunnel_fan_map map; + + map.underlay = htonl(tunnel->fan.map[i]); + map.underlay_prefix = 16; + map.overlay = htonl(i << 24); + map.overlay_prefix = 8; + 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: @@ -486,6 +626,9 @@ [IFLA_IPTUN_ENCAP_FLAGS] = { .type = NLA_U16 }, [IFLA_IPTUN_ENCAP_SPORT] = { .type = NLA_U16 }, [IFLA_IPTUN_ENCAP_DPORT] = { .type = NLA_U16 }, + + [__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 = { @@ -526,6 +669,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; @@ -544,9 +704,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: xfrm4_tunnel_deregister(&ipip_handler, AF_INET); xfrm_tunnel_failed: @@ -556,6 +729,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-raspi2-4.2.0.orig/net/ipv4/ipmr.c +++ linux-raspi2-4.2.0/net/ipv4/ipmr.c @@ -134,7 +134,7 @@ struct mfc_cache *c, struct rtmsg *rtm); static void mroute_netlink_event(struct mr_table *mrt, struct mfc_cache *mfc, int cmd); -static void mroute_clean_tables(struct mr_table *mrt); +static void mroute_clean_tables(struct mr_table *mrt, bool all); static void ipmr_expire_process(unsigned long arg); #ifdef CONFIG_IP_MROUTE_MULTIPLE_TABLES @@ -351,7 +351,7 @@ static void ipmr_free_table(struct mr_table *mrt) { del_timer_sync(&mrt->ipmr_expire_timer); - mroute_clean_tables(mrt); + mroute_clean_tables(mrt, true); kfree(mrt); } @@ -1209,7 +1209,7 @@ * Close the multicast socket, and clear the vif tables etc */ -static void mroute_clean_tables(struct mr_table *mrt) +static void mroute_clean_tables(struct mr_table *mrt, bool all) { int i; LIST_HEAD(list); @@ -1218,8 +1218,9 @@ /* Shut down all active vif entries */ for (i = 0; i < mrt->maxvif; i++) { - if (!(mrt->vif_table[i].flags & VIFF_STATIC)) - vif_delete(mrt, i, 0, &list); + if (!all && (mrt->vif_table[i].flags & VIFF_STATIC)) + continue; + vif_delete(mrt, i, 0, &list); } unregister_netdevice_many(&list); @@ -1227,7 +1228,7 @@ for (i = 0; i < MFC_LINES; i++) { list_for_each_entry_safe(c, next, &mrt->mfc_cache_array[i], list) { - if (c->mfc_flags & MFC_STATIC) + if (!all && (c->mfc_flags & MFC_STATIC)) continue; list_del_rcu(&c->list); mroute_netlink_event(mrt, c, RTM_DELROUTE); @@ -1262,7 +1263,7 @@ NETCONFA_IFINDEX_ALL, net->ipv4.devconf_all); RCU_INIT_POINTER(mrt->mroute_sk, NULL); - mroute_clean_tables(mrt); + mroute_clean_tables(mrt, false); } } rtnl_unlock(); @@ -1683,8 +1684,8 @@ { struct ip_options *opt = &(IPCB(skb)->opt); - IP_INC_STATS_BH(dev_net(skb_dst(skb)->dev), IPSTATS_MIB_OUTFORWDATAGRAMS); - IP_ADD_STATS_BH(dev_net(skb_dst(skb)->dev), IPSTATS_MIB_OUTOCTETS, skb->len); + IP_INC_STATS(dev_net(skb_dst(skb)->dev), IPSTATS_MIB_OUTFORWDATAGRAMS); + IP_ADD_STATS(dev_net(skb_dst(skb)->dev), IPSTATS_MIB_OUTOCTETS, skb->len); if (unlikely(opt->optlen)) ip_forward_options(skb); @@ -1746,7 +1747,7 @@ * to blackhole. */ - IP_INC_STATS_BH(dev_net(dev), IPSTATS_MIB_FRAGFAILS); + IP_INC_STATS(dev_net(dev), IPSTATS_MIB_FRAGFAILS); ip_rt_put(rt); goto out_free; } --- linux-raspi2-4.2.0.orig/net/ipv4/sysctl_net_ipv4.c +++ linux-raspi2-4.2.0/net/ipv4/sysctl_net_ipv4.c @@ -47,14 +47,14 @@ { bool same_parity = !((range[0] ^ range[1]) & 1); - write_seqlock(&net->ipv4.ip_local_ports.lock); + write_seqlock_bh(&net->ipv4.ip_local_ports.lock); if (same_parity && !net->ipv4.ip_local_ports.warned) { net->ipv4.ip_local_ports.warned = true; pr_err_ratelimited("ip_local_port_range: prefer different parity for start/end values.\n"); } net->ipv4.ip_local_ports.range[0] = range[0]; net->ipv4.ip_local_ports.range[1] = range[1]; - write_sequnlock(&net->ipv4.ip_local_ports.lock); + write_sequnlock_bh(&net->ipv4.ip_local_ports.lock); } /* Validate changes from /proc interface. */ --- linux-raspi2-4.2.0.orig/net/ipv4/tcp_cubic.c +++ linux-raspi2-4.2.0/net/ipv4/tcp_cubic.c @@ -151,6 +151,21 @@ tcp_sk(sk)->snd_ssthresh = initial_ssthresh; } +static void bictcp_cwnd_event(struct sock *sk, enum tcp_ca_event event) +{ + if (event == CA_EVENT_TX_START) { + s32 delta = tcp_time_stamp - tcp_sk(sk)->lsndtime; + struct bictcp *ca = inet_csk_ca(sk); + + /* We were application limited (idle) for a while. + * Shift epoch_start to keep cwnd growth to cubic curve. + */ + if (ca->epoch_start && delta > 0) + ca->epoch_start += delta; + return; + } +} + /* calculate the cubic root of x using a table lookup followed by one * Newton-Raphson iteration. * Avg err ~= 0.195% @@ -450,6 +465,7 @@ .cong_avoid = bictcp_cong_avoid, .set_state = bictcp_state, .undo_cwnd = bictcp_undo_cwnd, + .cwnd_event = bictcp_cwnd_event, .pkts_acked = bictcp_acked, .owner = THIS_MODULE, .name = "cubic", --- linux-raspi2-4.2.0.orig/net/ipv4/tcp_input.c +++ linux-raspi2-4.2.0/net/ipv4/tcp_input.c @@ -2902,9 +2902,6 @@ * Karn's algorithm forbids taking RTT if some retransmitted data * is acked (RFC6298). */ - if (flag & FLAG_RETRANS_DATA_ACKED) - seq_rtt_us = -1L; - if (seq_rtt_us < 0) seq_rtt_us = sack_rtt_us; @@ -3146,7 +3143,7 @@ flag |= FLAG_SACK_RENEGING; skb_mstamp_get(&now); - if (likely(first_ackt.v64)) { + if (likely(first_ackt.v64) && !(flag & FLAG_RETRANS_DATA_ACKED)) { seq_rtt_us = skb_mstamp_us_delta(&now, &first_ackt); ca_rtt_us = skb_mstamp_us_delta(&now, &last_ackt); } @@ -4434,19 +4431,34 @@ int tcp_send_rcvq(struct sock *sk, struct msghdr *msg, size_t size) { struct sk_buff *skb; + int err = -ENOMEM; + int data_len = 0; bool fragstolen; if (size == 0) return 0; - skb = alloc_skb(size, sk->sk_allocation); + if (size > PAGE_SIZE) { + int npages = min_t(size_t, size >> PAGE_SHIFT, MAX_SKB_FRAGS); + + data_len = npages << PAGE_SHIFT; + size = data_len + (size & ~PAGE_MASK); + } + skb = alloc_skb_with_frags(size - data_len, data_len, + PAGE_ALLOC_COSTLY_ORDER, + &err, sk->sk_allocation); if (!skb) goto err; + skb_put(skb, size - data_len); + skb->data_len = data_len; + skb->len = size; + if (tcp_try_rmem_schedule(sk, skb, skb->truesize)) goto err_free; - if (memcpy_from_msg(skb_put(skb, size), msg, size)) + err = skb_copy_datagram_from_iter(skb, 0, &msg->msg_iter, size); + if (err) goto err_free; TCP_SKB_CB(skb)->seq = tcp_sk(sk)->rcv_nxt; @@ -4462,7 +4474,8 @@ err_free: kfree_skb(skb); err: - return -ENOMEM; + return err; + } static void tcp_data_queue(struct sock *sk, struct sk_buff *skb) @@ -5620,6 +5633,7 @@ } tp->rcv_nxt = TCP_SKB_CB(skb)->seq + 1; + tp->copied_seq = tp->rcv_nxt; tp->rcv_wup = TCP_SKB_CB(skb)->seq + 1; /* RFC1323: The window in SYN & SYN/ACK segments is --- linux-raspi2-4.2.0.orig/net/ipv4/tcp_ipv4.c +++ linux-raspi2-4.2.0/net/ipv4/tcp_ipv4.c @@ -222,7 +222,7 @@ if (err) goto failure; - inet_set_txhash(sk); + sk_set_txhash(sk); rt = ip_route_newports(fl4, rt, orig_sport, orig_dport, inet->inet_sport, inet->inet_dport, sk); @@ -922,7 +922,8 @@ } md5sig = rcu_dereference_protected(tp->md5sig_info, - sock_owned_by_user(sk)); + sock_owned_by_user(sk) || + lockdep_is_held(&sk->sk_lock.slock)); if (!md5sig) { md5sig = kmalloc(sizeof(*md5sig), gfp); if (!md5sig) @@ -1277,7 +1278,7 @@ newinet->mc_ttl = ip_hdr(skb)->ttl; newinet->rcv_tos = ip_hdr(skb)->tos; inet_csk(newsk)->icsk_ext_hdr_len = 0; - inet_set_txhash(newsk); + sk_set_txhash(newsk); if (inet_opt) inet_csk(newsk)->icsk_ext_hdr_len = inet_opt->opt.optlen; newinet->inet_id = newtp->write_seq ^ jiffies; @@ -1410,7 +1411,7 @@ if (nsk != sk) { sock_rps_save_rxhash(nsk, skb); - sk_mark_napi_id(sk, skb); + sk_mark_napi_id(nsk, skb); if (tcp_child_process(sk, nsk, skb)) { rsk = nsk; goto reset; @@ -1508,7 +1509,7 @@ if (likely(sk->sk_rx_dst)) skb_dst_drop(skb); else - skb_dst_force(skb); + skb_dst_force_safe(skb); __skb_queue_tail(&tp->ucopy.prequeue, skb); tp->ucopy.memory += skb->truesize; @@ -1710,8 +1711,7 @@ { struct dst_entry *dst = skb_dst(skb); - if (dst) { - dst_hold(dst); + if (dst && dst_hold_safe(dst)) { sk->sk_rx_dst = dst; inet_sk(sk)->rx_dst_ifindex = skb->skb_iif; } --- linux-raspi2-4.2.0.orig/net/ipv4/tcp_output.c +++ linux-raspi2-4.2.0/net/ipv4/tcp_output.c @@ -2898,6 +2898,7 @@ skb_reserve(skb, MAX_TCP_HEADER); tcp_init_nondata_skb(skb, tcp_acceptable_seq(sk), TCPHDR_ACK | TCPHDR_RST); + skb_mstamp_get(&skb->skb_mstamp); /* Send it off. */ if (tcp_transmit_skb(sk, skb, 0, priority)) NET_INC_STATS(sock_net(sk), LINUX_MIB_TCPABORTFAILED); @@ -3147,7 +3148,7 @@ { struct tcp_sock *tp = tcp_sk(sk); struct tcp_fastopen_request *fo = tp->fastopen_req; - int syn_loss = 0, space, err = 0, copied; + int syn_loss = 0, space, err = 0; unsigned long last_syn_loss = 0; struct sk_buff *syn_data; @@ -3185,17 +3186,18 @@ goto fallback; syn_data->ip_summed = CHECKSUM_PARTIAL; memcpy(syn_data->cb, syn->cb, sizeof(syn->cb)); - copied = copy_from_iter(skb_put(syn_data, space), space, - &fo->data->msg_iter); - if (unlikely(!copied)) { - kfree_skb(syn_data); - goto fallback; - } - if (copied != space) { - skb_trim(syn_data, copied); - space = copied; + if (space) { + int copied = copy_from_iter(skb_put(syn_data, space), space, + &fo->data->msg_iter); + if (unlikely(!copied)) { + kfree_skb(syn_data); + goto fallback; + } + if (copied != space) { + skb_trim(syn_data, copied); + space = copied; + } } - /* No more data pending in inet_wait_for_connect() */ if (space == fo->size) fo->data = NULL; @@ -3405,7 +3407,7 @@ */ tcp_init_nondata_skb(skb, tp->snd_una - !urgent, TCPHDR_ACK); skb_mstamp_get(&skb->skb_mstamp); - NET_INC_STATS_BH(sock_net(sk), mib); + NET_INC_STATS(sock_net(sk), mib); return tcp_transmit_skb(sk, skb, 0, GFP_ATOMIC); } --- linux-raspi2-4.2.0.orig/net/ipv4/tcp_timer.c +++ linux-raspi2-4.2.0/net/ipv4/tcp_timer.c @@ -176,6 +176,18 @@ syn_set = true; } else { if (retransmits_timed_out(sk, sysctl_tcp_retries1, 0, 0)) { + /* Some middle-boxes may black-hole Fast Open _after_ + * the handshake. Therefore we conservatively disable + * Fast Open on this path on recurring timeouts with + * few or zero bytes acked after Fast Open. + */ + if (tp->syn_data_acked && + tp->bytes_acked <= tp->rx_opt.mss_clamp) { + tcp_fastopen_cache_set(sk, 0, NULL, true, 0); + if (icsk->icsk_retransmits == sysctl_tcp_retries1) + NET_INC_STATS_BH(sock_net(sk), + LINUX_MIB_TCPFASTOPENACTIVEFAIL); + } /* Black hole detection */ tcp_mtu_probing(icsk, sk); --- linux-raspi2-4.2.0.orig/net/ipv4/udp.c +++ linux-raspi2-4.2.0/net/ipv4/udp.c @@ -1262,6 +1262,7 @@ int peeked, off = 0; int err; int is_udplite = IS_UDPLITE(sk); + bool checksum_valid = false; bool slow; if (flags & MSG_ERRQUEUE) @@ -1287,11 +1288,12 @@ */ if (copied < ulen || UDP_SKB_CB(skb)->partial_cov) { - if (udp_lib_checksum_complete(skb)) + checksum_valid = !udp_lib_checksum_complete(skb); + if (!checksum_valid) goto csum_copy_err; } - if (skb_csum_unnecessary(skb)) + if (checksum_valid || skb_csum_unnecessary(skb)) err = skb_copy_datagram_msg(skb, sizeof(struct udphdr), msg, copied); else { --- linux-raspi2-4.2.0.orig/net/ipv6/addrconf.c +++ linux-raspi2-4.2.0/net/ipv6/addrconf.c @@ -343,6 +343,12 @@ setup_timer(&ndev->rs_timer, addrconf_rs_timer, (unsigned long)ndev); memcpy(&ndev->cnf, dev_net(dev)->ipv6.devconf_dflt, sizeof(ndev->cnf)); + + if (ndev->cnf.stable_secret.initialized) + ndev->addr_gen_mode = IN6_ADDR_GEN_MODE_STABLE_PRIVACY; + else + ndev->addr_gen_mode = IN6_ADDR_GEN_MODE_EUI64; + ndev->cnf.mtu6 = dev->mtu; ndev->cnf.sysctl = NULL; ndev->nd_parms = neigh_parms_alloc(dev, &nd_tbl); @@ -411,6 +417,7 @@ if (err) { ipv6_mc_destroy_dev(ndev); del_timer(&ndev->regen_timer); + snmp6_unregister_dev(ndev); goto err_release; } /* protected by rtnl_lock */ @@ -2385,7 +2392,7 @@ #ifdef CONFIG_IPV6_OPTIMISTIC_DAD if (in6_dev->cnf.optimistic_dad && !net->ipv6.devconf_all->forwarding && sllao) - addr_flags = IFA_F_OPTIMISTIC; + addr_flags |= IFA_F_OPTIMISTIC; #endif /* Do not allow to create too much of autoconfigured --- linux-raspi2-4.2.0.orig/net/ipv6/af_inet6.c +++ linux-raspi2-4.2.0/net/ipv6/af_inet6.c @@ -109,6 +109,9 @@ int try_loading_module = 0; int err; + if (protocol < 0 || protocol >= IPPROTO_MAX) + return -EINVAL; + /* Look for the requested type/protocol pair. */ lookup_protocol: err = -ESOCKTNOSUPPORT; @@ -426,9 +429,11 @@ /* Free tx options */ - opt = xchg(&np->opt, NULL); - if (opt) - sock_kfree_s(sk, opt, opt->tot_len); + opt = xchg((__force struct ipv6_txoptions **)&np->opt, NULL); + if (opt) { + atomic_sub(opt->tot_len, &sk->sk_omem_alloc); + txopt_put(opt); + } } EXPORT_SYMBOL_GPL(inet6_destroy_sock); @@ -657,7 +662,10 @@ fl6.fl6_sport = inet->inet_sport; security_sk_classify_flow(sk, flowi6_to_flowi(&fl6)); - final_p = fl6_update_dst(&fl6, np->opt, &final); + rcu_read_lock(); + final_p = fl6_update_dst(&fl6, rcu_dereference(np->opt), + &final); + rcu_read_unlock(); dst = ip6_dst_lookup_flow(sk, &fl6, final_p); if (IS_ERR(dst)) { --- linux-raspi2-4.2.0.orig/net/ipv6/datagram.c +++ linux-raspi2-4.2.0/net/ipv6/datagram.c @@ -167,8 +167,10 @@ security_sk_classify_flow(sk, flowi6_to_flowi(&fl6)); - opt = flowlabel ? flowlabel->opt : np->opt; + rcu_read_lock(); + opt = flowlabel ? flowlabel->opt : rcu_dereference(np->opt); final_p = fl6_update_dst(&fl6, opt, &final); + rcu_read_unlock(); dst = ip6_dst_lookup_flow(sk, &fl6, final_p); err = 0; @@ -199,7 +201,7 @@ NULL); sk->sk_state = TCP_ESTABLISHED; - ip6_set_txhash(sk); + sk_set_txhash(sk); out: fl6_sock_release(flowlabel); return err; --- linux-raspi2-4.2.0.orig/net/ipv6/exthdrs.c +++ linux-raspi2-4.2.0/net/ipv6/exthdrs.c @@ -727,6 +727,7 @@ *((char **)&opt2->dst1opt) += dif; if (opt2->srcrt) *((char **)&opt2->srcrt) += dif; + atomic_set(&opt2->refcnt, 1); } return opt2; } @@ -790,7 +791,7 @@ return ERR_PTR(-ENOBUFS); memset(opt2, 0, tot_len); - + atomic_set(&opt2->refcnt, 1); opt2->tot_len = tot_len; p = (char *)(opt2 + 1); --- linux-raspi2-4.2.0.orig/net/ipv6/exthdrs_offload.c +++ linux-raspi2-4.2.0/net/ipv6/exthdrs_offload.c @@ -36,6 +36,6 @@ return ret; out_rt: - inet_del_offload(&rthdr_offload, IPPROTO_ROUTING); + inet6_del_offload(&rthdr_offload, IPPROTO_ROUTING); goto out; } --- linux-raspi2-4.2.0.orig/net/ipv6/inet6_connection_sock.c +++ linux-raspi2-4.2.0/net/ipv6/inet6_connection_sock.c @@ -77,7 +77,9 @@ memset(fl6, 0, sizeof(*fl6)); fl6->flowi6_proto = IPPROTO_TCP; fl6->daddr = ireq->ir_v6_rmt_addr; - final_p = fl6_update_dst(fl6, np->opt, &final); + rcu_read_lock(); + final_p = fl6_update_dst(fl6, rcu_dereference(np->opt), &final); + rcu_read_unlock(); fl6->saddr = ireq->ir_v6_loc_addr; fl6->flowi6_oif = ireq->ir_iif; fl6->flowi6_mark = ireq->ir_mark; @@ -207,7 +209,9 @@ fl6->fl6_dport = inet->inet_dport; security_sk_classify_flow(sk, flowi6_to_flowi(fl6)); - final_p = fl6_update_dst(fl6, np->opt, &final); + rcu_read_lock(); + final_p = fl6_update_dst(fl6, rcu_dereference(np->opt), &final); + rcu_read_unlock(); dst = __inet6_csk_dst_check(sk, np->dst_cookie); if (!dst) { @@ -240,7 +244,8 @@ /* Restore final destination back after routing done */ fl6.daddr = sk->sk_v6_daddr; - res = ip6_xmit(sk, skb, &fl6, np->opt, np->tclass); + res = ip6_xmit(sk, skb, &fl6, rcu_dereference(np->opt), + np->tclass); rcu_read_unlock(); return res; } --- linux-raspi2-4.2.0.orig/net/ipv6/ip6_gre.c +++ linux-raspi2-4.2.0/net/ipv6/ip6_gre.c @@ -1553,13 +1553,11 @@ return -EEXIST; } else { t = nt; - - ip6gre_tunnel_unlink(ign, t); - ip6gre_tnl_change(t, &p, !tb[IFLA_MTU]); - ip6gre_tunnel_link(ign, t); - netdev_state_change(dev); } + ip6gre_tunnel_unlink(ign, t); + ip6gre_tnl_change(t, &p, !tb[IFLA_MTU]); + ip6gre_tunnel_link(ign, t); return 0; } --- linux-raspi2-4.2.0.orig/net/ipv6/ip6_output.c +++ linux-raspi2-4.2.0/net/ipv6/ip6_output.c @@ -1248,6 +1248,7 @@ struct rt6_info *rt = (struct rt6_info *)cork->dst; struct ipv6_txoptions *opt = v6_cork->opt; int csummode = CHECKSUM_NONE; + unsigned int maxnonfragsize, headersize; skb = skb_peek_tail(queue); if (!skb) { @@ -1265,38 +1266,43 @@ maxfraglen = ((mtu - fragheaderlen) & ~7) + fragheaderlen - sizeof(struct frag_hdr); - if (mtu <= sizeof(struct ipv6hdr) + IPV6_MAXPLEN) { - unsigned int maxnonfragsize, headersize; + headersize = sizeof(struct ipv6hdr) + + (opt ? opt->opt_flen + opt->opt_nflen : 0) + + (dst_allfrag(&rt->dst) ? + sizeof(struct frag_hdr) : 0) + + rt->rt6i_nfheader_len; + + if (cork->length + length > mtu - headersize && dontfrag && + (sk->sk_protocol == IPPROTO_UDP || + sk->sk_protocol == IPPROTO_RAW)) { + ipv6_local_rxpmtu(sk, fl6, mtu - headersize + + sizeof(struct ipv6hdr)); + goto emsgsize; + } - headersize = sizeof(struct ipv6hdr) + - (opt ? opt->opt_flen + opt->opt_nflen : 0) + - (dst_allfrag(&rt->dst) ? - sizeof(struct frag_hdr) : 0) + - rt->rt6i_nfheader_len; - - if (ip6_sk_ignore_df(sk)) - maxnonfragsize = sizeof(struct ipv6hdr) + IPV6_MAXPLEN; - else - maxnonfragsize = mtu; - - /* dontfrag active */ - if ((cork->length + length > mtu - headersize) && dontfrag && - (sk->sk_protocol == IPPROTO_UDP || - sk->sk_protocol == IPPROTO_RAW)) { - ipv6_local_rxpmtu(sk, fl6, mtu - headersize + - sizeof(struct ipv6hdr)); - goto emsgsize; - } + if (ip6_sk_ignore_df(sk)) + maxnonfragsize = sizeof(struct ipv6hdr) + IPV6_MAXPLEN; + else + maxnonfragsize = mtu; - if (cork->length + length > maxnonfragsize - headersize) { + if (cork->length + length > maxnonfragsize - headersize) { emsgsize: - ipv6_local_error(sk, EMSGSIZE, fl6, - mtu - headersize + - sizeof(struct ipv6hdr)); - return -EMSGSIZE; - } + ipv6_local_error(sk, EMSGSIZE, fl6, + mtu - headersize + + sizeof(struct ipv6hdr)); + return -EMSGSIZE; } + /* CHECKSUM_PARTIAL only with no extension headers and when + * we are not going to fragment + */ + if (transhdrlen && sk->sk_protocol == IPPROTO_UDP && + headersize == sizeof(struct ipv6hdr) && + length < mtu - headersize && + !(flags & MSG_MORE) && + rt->dst.dev->features & NETIF_F_V6_CSUM) + csummode = CHECKSUM_PARTIAL; + if (sk->sk_type == SOCK_DGRAM || sk->sk_type == SOCK_RAW) { sock_tx_timestamp(sk, &tx_flags); if (tx_flags & SKBTX_ANY_SW_TSTAMP && @@ -1304,16 +1310,6 @@ tskey = sk->sk_tskey++; } - /* If this is the first and only packet and device - * supports checksum offloading, let's use it. - * Use transhdrlen, same as IPv4, because partial - * sums only work when transhdrlen is set. - */ - if (transhdrlen && sk->sk_protocol == IPPROTO_UDP && - length + fragheaderlen < mtu && - rt->dst.dev->features & NETIF_F_V6_CSUM && - !exthdrlen) - csummode = CHECKSUM_PARTIAL; /* * Let's try using as much space as possible. * Use MTU if total length of the message fits into the MTU. --- linux-raspi2-4.2.0.orig/net/ipv6/ip6mr.c +++ linux-raspi2-4.2.0/net/ipv6/ip6mr.c @@ -118,7 +118,7 @@ int cmd); static int ip6mr_rtm_dumproute(struct sk_buff *skb, struct netlink_callback *cb); -static void mroute_clean_tables(struct mr6_table *mrt); +static void mroute_clean_tables(struct mr6_table *mrt, bool all); static void ipmr_expire_process(unsigned long arg); #ifdef CONFIG_IPV6_MROUTE_MULTIPLE_TABLES @@ -335,7 +335,7 @@ static void ip6mr_free_table(struct mr6_table *mrt) { del_timer_sync(&mrt->ipmr_expire_timer); - mroute_clean_tables(mrt); + mroute_clean_tables(mrt, true); kfree(mrt); } @@ -550,7 +550,7 @@ if (it->cache == &mrt->mfc6_unres_queue) spin_unlock_bh(&mfc_unres_lock); - else if (it->cache == mrt->mfc6_cache_array) + else if (it->cache == &mrt->mfc6_cache_array[it->ct]) read_unlock(&mrt_lock); } @@ -1543,7 +1543,7 @@ * Close the multicast socket, and clear the vif tables etc */ -static void mroute_clean_tables(struct mr6_table *mrt) +static void mroute_clean_tables(struct mr6_table *mrt, bool all) { int i; LIST_HEAD(list); @@ -1553,8 +1553,9 @@ * Shut down all active vif entries */ for (i = 0; i < mrt->maxvif; i++) { - if (!(mrt->vif6_table[i].flags & VIFF_STATIC)) - mif6_delete(mrt, i, &list); + if (!all && (mrt->vif6_table[i].flags & VIFF_STATIC)) + continue; + mif6_delete(mrt, i, &list); } unregister_netdevice_many(&list); @@ -1563,7 +1564,7 @@ */ for (i = 0; i < MFC6_LINES; i++) { list_for_each_entry_safe(c, next, &mrt->mfc6_cache_array[i], list) { - if (c->mfc_flags & MFC_STATIC) + if (!all && (c->mfc_flags & MFC_STATIC)) continue; write_lock_bh(&mrt_lock); list_del(&c->list); @@ -1626,7 +1627,7 @@ net->ipv6.devconf_all); write_unlock_bh(&mrt_lock); - mroute_clean_tables(mrt); + mroute_clean_tables(mrt, false); err = 0; break; } --- linux-raspi2-4.2.0.orig/net/ipv6/ipv6_sockglue.c +++ linux-raspi2-4.2.0/net/ipv6/ipv6_sockglue.c @@ -111,7 +111,8 @@ icsk->icsk_sync_mss(sk, icsk->icsk_pmtu_cookie); } } - opt = xchg(&inet6_sk(sk)->opt, opt); + opt = xchg((__force struct ipv6_txoptions **)&inet6_sk(sk)->opt, + opt); sk_dst_reset(sk); return opt; @@ -231,9 +232,12 @@ sk->sk_socket->ops = &inet_dgram_ops; sk->sk_family = PF_INET; } - opt = xchg(&np->opt, NULL); - if (opt) - sock_kfree_s(sk, opt, opt->tot_len); + opt = xchg((__force struct ipv6_txoptions **)&np->opt, + NULL); + if (opt) { + atomic_sub(opt->tot_len, &sk->sk_omem_alloc); + txopt_put(opt); + } pktopt = xchg(&np->pktoptions, NULL); kfree_skb(pktopt); @@ -403,7 +407,8 @@ if (optname != IPV6_RTHDR && !ns_capable(net->user_ns, CAP_NET_RAW)) break; - opt = ipv6_renew_options(sk, np->opt, optname, + opt = rcu_dereference_protected(np->opt, sock_owned_by_user(sk)); + opt = ipv6_renew_options(sk, opt, optname, (struct ipv6_opt_hdr __user *)optval, optlen); if (IS_ERR(opt)) { @@ -432,8 +437,10 @@ retv = 0; opt = ipv6_update_options(sk, opt); sticky_done: - if (opt) - sock_kfree_s(sk, opt, opt->tot_len); + if (opt) { + atomic_sub(opt->tot_len, &sk->sk_omem_alloc); + txopt_put(opt); + } break; } @@ -486,6 +493,7 @@ break; memset(opt, 0, sizeof(*opt)); + atomic_set(&opt->refcnt, 1); opt->tot_len = sizeof(*opt) + optlen; retv = -EFAULT; if (copy_from_user(opt+1, optval, optlen)) @@ -502,8 +510,10 @@ retv = 0; opt = ipv6_update_options(sk, opt); done: - if (opt) - sock_kfree_s(sk, opt, opt->tot_len); + if (opt) { + atomic_sub(opt->tot_len, &sk->sk_omem_alloc); + txopt_put(opt); + } break; } case IPV6_UNICAST_HOPS: @@ -1110,10 +1120,11 @@ case IPV6_RTHDR: case IPV6_DSTOPTS: { + struct ipv6_txoptions *opt; lock_sock(sk); - len = ipv6_getsockopt_sticky(sk, np->opt, - optname, optval, len); + opt = rcu_dereference_protected(np->opt, sock_owned_by_user(sk)); + len = ipv6_getsockopt_sticky(sk, opt, optname, optval, len); release_sock(sk); /* check if ipv6_getsockopt_sticky() returns err code */ if (len < 0) --- linux-raspi2-4.2.0.orig/net/ipv6/mcast.c +++ linux-raspi2-4.2.0/net/ipv6/mcast.c @@ -1651,7 +1651,6 @@ if (!err) { ICMP6MSGOUT_INC_STATS(net, idev, ICMPV6_MLD2_REPORT); ICMP6_INC_STATS(net, idev, ICMP6_MIB_OUTMSGS); - IP6_UPD_PO_STATS(net, idev, IPSTATS_MIB_OUTMCAST, payload_len); } else { IP6_INC_STATS(net, idev, IPSTATS_MIB_OUTDISCARDS); } @@ -2014,7 +2013,6 @@ if (!err) { ICMP6MSGOUT_INC_STATS(net, idev, type); ICMP6_INC_STATS(net, idev, ICMP6_MIB_OUTMSGS); - IP6_UPD_PO_STATS(net, idev, IPSTATS_MIB_OUTMCAST, full_len); } else IP6_INC_STATS(net, idev, IPSTATS_MIB_OUTDISCARDS); --- linux-raspi2-4.2.0.orig/net/ipv6/netfilter/nf_conntrack_reasm.c +++ linux-raspi2-4.2.0/net/ipv6/netfilter/nf_conntrack_reasm.c @@ -190,7 +190,7 @@ /* Creation primitives. */ static inline struct frag_queue *fq_find(struct net *net, __be32 id, u32 user, struct in6_addr *src, - struct in6_addr *dst, u8 ecn) + struct in6_addr *dst, int iif, u8 ecn) { struct inet_frag_queue *q; struct ip6_create_arg arg; @@ -200,6 +200,7 @@ arg.user = user; arg.src = src; arg.dst = dst; + arg.iif = iif; arg.ecn = ecn; local_bh_disable(); @@ -603,7 +604,7 @@ fhdr = (struct frag_hdr *)skb_transport_header(clone); fq = fq_find(net, fhdr->identification, user, &hdr->saddr, &hdr->daddr, - ip6_frag_ecn(hdr)); + skb->dev ? skb->dev->ifindex : 0, ip6_frag_ecn(hdr)); if (fq == NULL) { pr_debug("Can't find and can't create new queue\n"); goto ret_orig; @@ -648,12 +649,18 @@ static int nf_ct_net_init(struct net *net) { + int res; + net->nf_frag.frags.high_thresh = IPV6_FRAG_HIGH_THRESH; net->nf_frag.frags.low_thresh = IPV6_FRAG_LOW_THRESH; net->nf_frag.frags.timeout = IPV6_FRAG_TIMEOUT; - inet_frags_init_net(&net->nf_frag.frags); - - return nf_ct_frag6_sysctl_register(net); + res = inet_frags_init_net(&net->nf_frag.frags); + if (res) + return res; + res = nf_ct_frag6_sysctl_register(net); + if (res) + inet_frags_uninit_net(&net->nf_frag.frags); + return res; } static void nf_ct_net_exit(struct net *net) --- linux-raspi2-4.2.0.orig/net/ipv6/raw.c +++ linux-raspi2-4.2.0/net/ipv6/raw.c @@ -731,6 +731,7 @@ static int rawv6_sendmsg(struct sock *sk, struct msghdr *msg, size_t len) { + struct ipv6_txoptions *opt_to_free = NULL; struct ipv6_txoptions opt_space; DECLARE_SOCKADDR(struct sockaddr_in6 *, sin6, msg->msg_name); struct in6_addr *daddr, *final_p, final; @@ -837,8 +838,10 @@ if (!(opt->opt_nflen|opt->opt_flen)) opt = NULL; } - if (!opt) - opt = np->opt; + if (!opt) { + opt = txopt_get(np); + opt_to_free = opt; + } if (flowlabel) opt = fl6_merge_options(&opt_space, flowlabel, opt); opt = ipv6_fixup_options(&opt_space, opt); @@ -904,6 +907,7 @@ dst_release(dst); out: fl6_sock_release(flowlabel); + txopt_put(opt_to_free); return err < 0 ? err : len; do_confirm: dst_confirm(dst); --- linux-raspi2-4.2.0.orig/net/ipv6/reassembly.c +++ linux-raspi2-4.2.0/net/ipv6/reassembly.c @@ -108,7 +108,10 @@ return fq->id == arg->id && fq->user == arg->user && ipv6_addr_equal(&fq->saddr, arg->src) && - ipv6_addr_equal(&fq->daddr, arg->dst); + ipv6_addr_equal(&fq->daddr, arg->dst) && + (arg->iif == fq->iif || + !(ipv6_addr_type(arg->dst) & (IPV6_ADDR_MULTICAST | + IPV6_ADDR_LINKLOCAL))); } EXPORT_SYMBOL(ip6_frag_match); @@ -180,7 +183,7 @@ static struct frag_queue * fq_find(struct net *net, __be32 id, const struct in6_addr *src, - const struct in6_addr *dst, u8 ecn) + const struct in6_addr *dst, int iif, u8 ecn) { struct inet_frag_queue *q; struct ip6_create_arg arg; @@ -190,6 +193,7 @@ arg.user = IP6_DEFRAG_LOCAL_DELIVER; arg.src = src; arg.dst = dst; + arg.iif = iif; arg.ecn = ecn; hash = inet6_hash_frag(id, src, dst); @@ -551,7 +555,7 @@ } fq = fq_find(net, fhdr->identification, &hdr->saddr, &hdr->daddr, - ip6_frag_ecn(hdr)); + skb->dev ? skb->dev->ifindex : 0, ip6_frag_ecn(hdr)); if (fq) { int ret; @@ -706,13 +710,19 @@ static int __net_init ipv6_frags_init_net(struct net *net) { + int res; + net->ipv6.frags.high_thresh = IPV6_FRAG_HIGH_THRESH; net->ipv6.frags.low_thresh = IPV6_FRAG_LOW_THRESH; net->ipv6.frags.timeout = IPV6_FRAG_TIMEOUT; - inet_frags_init_net(&net->ipv6.frags); - - return ip6_frags_ns_sysctl_register(net); + res = inet_frags_init_net(&net->ipv6.frags); + if (res) + return res; + res = ip6_frags_ns_sysctl_register(net); + if (res) + inet_frags_uninit_net(&net->ipv6.frags); + return res; } static void __net_exit ipv6_frags_exit_net(struct net *net) --- linux-raspi2-4.2.0.orig/net/ipv6/route.c +++ linux-raspi2-4.2.0/net/ipv6/route.c @@ -139,6 +139,9 @@ struct net_device *loopback_dev = net->loopback_dev; int cpu; + if (dev == loopback_dev) + return; + for_each_possible_cpu(cpu) { struct uncached_list *ul = per_cpu_ptr(&rt6_uncached_list, cpu); struct rt6_info *rt; @@ -148,14 +151,12 @@ struct inet6_dev *rt_idev = rt->rt6i_idev; struct net_device *rt_dev = rt->dst.dev; - if (rt_idev && (rt_idev->dev == dev || !dev) && - rt_idev->dev != loopback_dev) { + if (rt_idev->dev == dev) { rt->rt6i_idev = in6_dev_get(loopback_dev); in6_dev_put(rt_idev); } - if (rt_dev && (rt_dev == dev || !dev) && - rt_dev != loopback_dev) { + if (rt_dev == dev) { rt->dst.dev = loopback_dev; dev_hold(rt->dst.dev); dev_put(rt_dev); @@ -400,6 +401,14 @@ } } +static bool __rt6_check_expired(const struct rt6_info *rt) +{ + if (rt->rt6i_flags & RTF_EXPIRES) + return time_after(jiffies, rt->dst.expires); + else + return false; +} + static bool rt6_check_expired(const struct rt6_info *rt) { if (rt->rt6i_flags & RTF_EXPIRES) { @@ -1254,7 +1263,8 @@ static struct dst_entry *rt6_dst_from_check(struct rt6_info *rt, u32 cookie) { - if (rt->dst.obsolete == DST_OBSOLETE_FORCE_CHK && + if (!__rt6_check_expired(rt) && + rt->dst.obsolete == DST_OBSOLETE_FORCE_CHK && rt6_check((struct rt6_info *)(rt->dst.from), cookie)) return &rt->dst; else @@ -1274,7 +1284,8 @@ rt6_dst_from_metrics_check(rt); - if ((rt->rt6i_flags & RTF_PCPU) || unlikely(dst->flags & DST_NOCACHE)) + if (rt->rt6i_flags & RTF_PCPU || + (unlikely(dst->flags & DST_NOCACHE) && rt->dst.from)) return rt6_dst_from_check(rt, cookie); else return rt6_check(rt, cookie); @@ -1325,6 +1336,12 @@ rt6_update_expires(rt, net->ipv6.sysctl.ip6_rt_mtu_expires); } +static bool rt6_cache_allowed_for_pmtu(const struct rt6_info *rt) +{ + return !(rt->rt6i_flags & RTF_CACHE) && + (rt->rt6i_flags & RTF_PCPU || rt->rt6i_node); +} + static void __ip6_rt_update_pmtu(struct dst_entry *dst, const struct sock *sk, const struct ipv6hdr *iph, u32 mtu) { @@ -1338,7 +1355,7 @@ if (mtu >= dst_mtu(dst)) return; - if (rt6->rt6i_flags & RTF_CACHE) { + if (!rt6_cache_allowed_for_pmtu(rt6)) { rt6_do_update_pmtu(rt6, mtu); } else { const struct in6_addr *daddr, *saddr; @@ -1727,7 +1744,7 @@ return -EINVAL; } -int ip6_route_add(struct fib6_config *cfg) +int ip6_route_info_create(struct fib6_config *cfg, struct rt6_info **rt_ret) { int err; struct net *net = cfg->fc_nlinfo.nl_net; @@ -1735,7 +1752,6 @@ struct net_device *dev = NULL; struct inet6_dev *idev = NULL; struct fib6_table *table; - struct mx6_config mxc = { .mx = NULL, }; int addr_type; if (cfg->fc_dst_len > 128 || cfg->fc_src_len > 128) @@ -1941,6 +1957,32 @@ cfg->fc_nlinfo.nl_net = dev_net(dev); + *rt_ret = rt; + + return 0; +out: + if (dev) + dev_put(dev); + if (idev) + in6_dev_put(idev); + if (rt) + dst_free(&rt->dst); + + *rt_ret = NULL; + + return err; +} + +int ip6_route_add(struct fib6_config *cfg) +{ + struct mx6_config mxc = { .mx = NULL, }; + struct rt6_info *rt = NULL; + int err; + + err = ip6_route_info_create(cfg, &rt); + if (err) + goto out; + err = ip6_convert_metrics(&mxc, cfg); if (err) goto out; @@ -1948,14 +1990,12 @@ err = __ip6_ins_rt(rt, &cfg->fc_nlinfo, &mxc); kfree(mxc.mx); + return err; out: - if (dev) - dev_put(dev); - if (idev) - in6_dev_put(idev); if (rt) dst_free(&rt->dst); + return err; } @@ -2554,7 +2594,8 @@ fib6_clean_all(net, fib6_ifdown, &adn); icmp6_clean_all(fib6_ifdown, &adn); - rt6_uncached_list_flush_dev(net, dev); + if (dev) + rt6_uncached_list_flush_dev(net, dev); } struct rt6_mtu_change_arg { @@ -2727,19 +2768,78 @@ return err; } -static int ip6_route_multipath(struct fib6_config *cfg, int add) +struct rt6_nh { + struct rt6_info *rt6_info; + struct fib6_config r_cfg; + struct mx6_config mxc; + struct list_head next; +}; + +static void ip6_print_replace_route_err(struct list_head *rt6_nh_list) +{ + struct rt6_nh *nh; + + list_for_each_entry(nh, rt6_nh_list, next) { + pr_warn("IPV6: multipath route replace failed (check consistency of installed routes): %pI6 nexthop %pI6 ifi %d\n", + &nh->r_cfg.fc_dst, &nh->r_cfg.fc_gateway, + nh->r_cfg.fc_ifindex); + } +} + +static int ip6_route_info_append(struct list_head *rt6_nh_list, + struct rt6_info *rt, struct fib6_config *r_cfg) +{ + struct rt6_nh *nh; + struct rt6_info *rtnh; + int err = -EEXIST; + + list_for_each_entry(nh, rt6_nh_list, next) { + /* check if rt6_info already exists */ + rtnh = nh->rt6_info; + + if (rtnh->dst.dev == rt->dst.dev && + rtnh->rt6i_idev == rt->rt6i_idev && + ipv6_addr_equal(&rtnh->rt6i_gateway, + &rt->rt6i_gateway)) + return err; + } + + nh = kzalloc(sizeof(*nh), GFP_KERNEL); + if (!nh) + return -ENOMEM; + nh->rt6_info = rt; + err = ip6_convert_metrics(&nh->mxc, r_cfg); + if (err) { + kfree(nh); + return err; + } + memcpy(&nh->r_cfg, r_cfg, sizeof(*r_cfg)); + list_add_tail(&nh->next, rt6_nh_list); + + return 0; +} + +static int ip6_route_multipath_add(struct fib6_config *cfg) { struct fib6_config r_cfg; struct rtnexthop *rtnh; + struct rt6_info *rt; + struct rt6_nh *err_nh; + struct rt6_nh *nh, *nh_safe; int remaining; int attrlen; - int err = 0, last_err = 0; + int err = 1; + int nhn = 0; + int replace = (cfg->fc_nlinfo.nlh && + (cfg->fc_nlinfo.nlh->nlmsg_flags & NLM_F_REPLACE)); + LIST_HEAD(rt6_nh_list); remaining = cfg->fc_mp_len; -beginning: rtnh = (struct rtnexthop *)cfg->fc_mp; - /* Parse a Multipath Entry */ + /* Parse a Multipath Entry and build a list (rt6_nh_list) of + * rt6_info structs per nexthop + */ while (rtnh_ok(rtnh, remaining)) { memcpy(&r_cfg, cfg, sizeof(*cfg)); if (rtnh->rtnh_ifindex) @@ -2755,22 +2855,32 @@ r_cfg.fc_flags |= RTF_GATEWAY; } } - err = add ? ip6_route_add(&r_cfg) : ip6_route_del(&r_cfg); + + err = ip6_route_info_create(&r_cfg, &rt); + if (err) + goto cleanup; + + err = ip6_route_info_append(&rt6_nh_list, rt, &r_cfg); if (err) { - last_err = err; - /* If we are trying to remove a route, do not stop the - * loop when ip6_route_del() fails (because next hop is - * already gone), we should try to remove all next hops. - */ - if (add) { - /* If add fails, we should try to delete all - * next hops that have been already added. - */ - add = 0; - remaining = cfg->fc_mp_len - remaining; - goto beginning; - } + dst_free(&rt->dst); + goto cleanup; } + + rtnh = rtnh_next(rtnh, &remaining); + } + + err_nh = NULL; + list_for_each_entry(nh, &rt6_nh_list, next) { + err = __ip6_ins_rt(nh->rt6_info, &cfg->fc_nlinfo, &nh->mxc); + /* nh->rt6_info is used or freed at this point, reset to NULL*/ + nh->rt6_info = NULL; + if (err) { + if (replace && nhn) + ip6_print_replace_route_err(&rt6_nh_list); + err_nh = nh; + goto add_errout; + } + /* Because each route is added like a single route we remove * these flags after the first nexthop: if there is a collision, * we have already failed to add the first nexthop: @@ -2780,6 +2890,63 @@ */ cfg->fc_nlinfo.nlh->nlmsg_flags &= ~(NLM_F_EXCL | NLM_F_REPLACE); + nhn++; + } + + goto cleanup; + +add_errout: + /* Delete routes that were already added */ + list_for_each_entry(nh, &rt6_nh_list, next) { + if (err_nh == nh) + break; + ip6_route_del(&nh->r_cfg); + } + +cleanup: + list_for_each_entry_safe(nh, nh_safe, &rt6_nh_list, next) { + if (nh->rt6_info) + dst_free(&nh->rt6_info->dst); + if (nh->mxc.mx) + kfree(nh->mxc.mx); + list_del(&nh->next); + kfree(nh); + } + + return err; +} + +static int ip6_route_multipath_del(struct fib6_config *cfg) +{ + struct fib6_config r_cfg; + struct rtnexthop *rtnh; + int remaining; + int attrlen; + int err = 1, last_err = 0; + + remaining = cfg->fc_mp_len; + rtnh = (struct rtnexthop *)cfg->fc_mp; + + /* Parse a Multipath Entry */ + while (rtnh_ok(rtnh, remaining)) { + memcpy(&r_cfg, cfg, sizeof(*cfg)); + if (rtnh->rtnh_ifindex) + r_cfg.fc_ifindex = rtnh->rtnh_ifindex; + + attrlen = rtnh_attrlen(rtnh); + if (attrlen > 0) { + struct nlattr *nla, *attrs = rtnh_attrs(rtnh); + + nla = nla_find(attrs, attrlen, RTA_GATEWAY); + if (nla) { + nla_memcpy(&r_cfg.fc_gateway, nla, 16); + r_cfg.fc_flags |= RTF_GATEWAY; + } + } + err = ip6_route_del(&r_cfg); + if (err) + last_err = err; + rtnh = rtnh_next(rtnh, &remaining); } @@ -2796,7 +2963,7 @@ return err; if (cfg.fc_mp) - return ip6_route_multipath(&cfg, 0); + return ip6_route_multipath_del(&cfg); else return ip6_route_del(&cfg); } @@ -2811,7 +2978,7 @@ return err; if (cfg.fc_mp) - return ip6_route_multipath(&cfg, 1); + return ip6_route_multipath_add(&cfg); else return ip6_route_add(&cfg); } --- linux-raspi2-4.2.0.orig/net/ipv6/sit.c +++ linux-raspi2-4.2.0/net/ipv6/sit.c @@ -1394,34 +1394,20 @@ return 0; } -static int __net_init ipip6_fb_tunnel_init(struct net_device *dev) +static void __net_init ipip6_fb_tunnel_init(struct net_device *dev) { struct ip_tunnel *tunnel = netdev_priv(dev); struct iphdr *iph = &tunnel->parms.iph; struct net *net = dev_net(dev); struct sit_net *sitn = net_generic(net, sit_net_id); - tunnel->dev = dev; - tunnel->net = dev_net(dev); - iph->version = 4; iph->protocol = IPPROTO_IPV6; iph->ihl = 5; iph->ttl = 64; - dev->tstats = netdev_alloc_pcpu_stats(struct pcpu_sw_netstats); - if (!dev->tstats) - return -ENOMEM; - - tunnel->dst_cache = alloc_percpu(struct ip_tunnel_dst); - if (!tunnel->dst_cache) { - free_percpu(dev->tstats); - return -ENOMEM; - } - dev_hold(dev); rcu_assign_pointer(sitn->tunnels_wc[0], tunnel); - return 0; } static int ipip6_validate(struct nlattr *tb[], struct nlattr *data[]) @@ -1831,23 +1817,19 @@ */ sitn->fb_tunnel_dev->features |= NETIF_F_NETNS_LOCAL; - err = ipip6_fb_tunnel_init(sitn->fb_tunnel_dev); - if (err) - goto err_dev_free; - - ipip6_tunnel_clone_6rd(sitn->fb_tunnel_dev, sitn); err = register_netdev(sitn->fb_tunnel_dev); if (err) goto err_reg_dev; + ipip6_tunnel_clone_6rd(sitn->fb_tunnel_dev, sitn); + ipip6_fb_tunnel_init(sitn->fb_tunnel_dev); + t = netdev_priv(sitn->fb_tunnel_dev); strcpy(t->parms.name, sitn->fb_tunnel_dev->name); return 0; err_reg_dev: - dev_put(sitn->fb_tunnel_dev); -err_dev_free: ipip6_dev_free(sitn->fb_tunnel_dev); err_alloc_dev: return err; --- linux-raspi2-4.2.0.orig/net/ipv6/syncookies.c +++ linux-raspi2-4.2.0/net/ipv6/syncookies.c @@ -225,7 +225,7 @@ memset(&fl6, 0, sizeof(fl6)); fl6.flowi6_proto = IPPROTO_TCP; fl6.daddr = ireq->ir_v6_rmt_addr; - final_p = fl6_update_dst(&fl6, np->opt, &final); + final_p = fl6_update_dst(&fl6, rcu_dereference(np->opt), &final); fl6.saddr = ireq->ir_v6_loc_addr; fl6.flowi6_oif = sk->sk_bound_dev_if; fl6.flowi6_mark = ireq->ir_mark; --- linux-raspi2-4.2.0.orig/net/ipv6/tcp_ipv6.c +++ linux-raspi2-4.2.0/net/ipv6/tcp_ipv6.c @@ -93,10 +93,9 @@ { struct dst_entry *dst = skb_dst(skb); - if (dst) { + if (dst && dst_hold_safe(dst)) { const struct rt6_info *rt = (const struct rt6_info *)dst; - dst_hold(dst); sk->sk_rx_dst = dst; inet_sk(sk)->rx_dst_ifindex = skb->skb_iif; inet6_sk(sk)->rx_dst_cookie = rt6_get_cookie(rt); @@ -120,6 +119,7 @@ struct ipv6_pinfo *np = inet6_sk(sk); struct tcp_sock *tp = tcp_sk(sk); struct in6_addr *saddr = NULL, *final_p, final; + struct ipv6_txoptions *opt; struct flowi6 fl6; struct dst_entry *dst; int addr_type; @@ -235,7 +235,8 @@ fl6.fl6_dport = usin->sin6_port; fl6.fl6_sport = inet->inet_sport; - final_p = fl6_update_dst(&fl6, np->opt, &final); + opt = rcu_dereference_protected(np->opt, sock_owned_by_user(sk)); + final_p = fl6_update_dst(&fl6, opt, &final); security_sk_classify_flow(sk, flowi6_to_flowi(&fl6)); @@ -263,9 +264,9 @@ tcp_fetch_timewait_stamp(sk, dst); icsk->icsk_ext_hdr_len = 0; - if (np->opt) - icsk->icsk_ext_hdr_len = (np->opt->opt_flen + - np->opt->opt_nflen); + if (opt) + icsk->icsk_ext_hdr_len = opt->opt_flen + + opt->opt_nflen; tp->rx_opt.mss_clamp = IPV6_MIN_MTU - sizeof(struct tcphdr) - sizeof(struct ipv6hdr); @@ -276,7 +277,7 @@ if (err) goto late_failure; - ip6_set_txhash(sk); + sk_set_txhash(sk); if (!tp->write_seq && likely(!tp->repair)) tp->write_seq = secure_tcpv6_sequence_number(np->saddr.s6_addr32, @@ -461,7 +462,8 @@ fl6->flowlabel = ip6_flowlabel(ipv6_hdr(ireq->pktopts)); skb_set_queue_mapping(skb, queue_mapping); - err = ip6_xmit(sk, skb, fl6, np->opt, np->tclass); + err = ip6_xmit(sk, skb, fl6, rcu_dereference(np->opt), + np->tclass); err = net_xmit_eval(err); } @@ -991,6 +993,7 @@ struct inet_request_sock *ireq; struct ipv6_pinfo *newnp, *np = inet6_sk(sk); struct tcp6_sock *newtcp6sk; + struct ipv6_txoptions *opt; struct inet_sock *newinet; struct tcp_sock *newtp; struct sock *newsk; @@ -1090,7 +1093,7 @@ newsk->sk_v6_rcv_saddr = ireq->ir_v6_loc_addr; newsk->sk_bound_dev_if = ireq->ir_iif; - ip6_set_txhash(newsk); + sk_set_txhash(newsk); /* Now IPv6 options... @@ -1126,13 +1129,15 @@ but we make one more one thing there: reattach optmem to newsk. */ - if (np->opt) - newnp->opt = ipv6_dup_options(newsk, np->opt); - + opt = rcu_dereference(np->opt); + if (opt) { + opt = ipv6_dup_options(newsk, opt); + RCU_INIT_POINTER(newnp->opt, opt); + } inet_csk(newsk)->icsk_ext_hdr_len = 0; - if (newnp->opt) - inet_csk(newsk)->icsk_ext_hdr_len = (newnp->opt->opt_nflen + - newnp->opt->opt_flen); + if (opt) + inet_csk(newsk)->icsk_ext_hdr_len = opt->opt_nflen + + opt->opt_flen; tcp_ca_openreq_child(newsk, dst); @@ -1263,7 +1268,7 @@ */ if (nsk != sk) { sock_rps_save_rxhash(nsk, skb); - sk_mark_napi_id(sk, skb); + sk_mark_napi_id(nsk, skb); if (tcp_child_process(sk, nsk, skb)) goto reset; if (opt_skb) --- linux-raspi2-4.2.0.orig/net/ipv6/tunnel6.c +++ linux-raspi2-4.2.0/net/ipv6/tunnel6.c @@ -144,6 +144,16 @@ break; } +static void tunnel46_err(struct sk_buff *skb, struct inet6_skb_parm *opt, + u8 type, u8 code, int offset, __be32 info) +{ + struct xfrm6_tunnel *handler; + + for_each_tunnel_rcu(tunnel46_handlers, handler) + if (!handler->err_handler(skb, opt, type, code, offset, info)) + break; +} + static const struct inet6_protocol tunnel6_protocol = { .handler = tunnel6_rcv, .err_handler = tunnel6_err, @@ -152,7 +162,7 @@ static const struct inet6_protocol tunnel46_protocol = { .handler = tunnel46_rcv, - .err_handler = tunnel6_err, + .err_handler = tunnel46_err, .flags = INET6_PROTO_NOPOLICY|INET6_PROTO_FINAL, }; --- linux-raspi2-4.2.0.orig/net/ipv6/udp.c +++ linux-raspi2-4.2.0/net/ipv6/udp.c @@ -399,6 +399,7 @@ int peeked, off = 0; int err; int is_udplite = IS_UDPLITE(sk); + bool checksum_valid = false; int is_udp4; bool slow; @@ -430,11 +431,12 @@ */ if (copied < ulen || UDP_SKB_CB(skb)->partial_cov) { - if (udp_lib_checksum_complete(skb)) + checksum_valid = !udp_lib_checksum_complete(skb); + if (!checksum_valid) goto csum_copy_err; } - if (skb_csum_unnecessary(skb)) + if (checksum_valid || skb_csum_unnecessary(skb)) err = skb_copy_datagram_msg(skb, sizeof(struct udphdr), msg, copied); else { @@ -1107,6 +1109,7 @@ DECLARE_SOCKADDR(struct sockaddr_in6 *, sin6, msg->msg_name); struct in6_addr *daddr, *final_p, final; struct ipv6_txoptions *opt = NULL; + struct ipv6_txoptions *opt_to_free = NULL; struct ip6_flowlabel *flowlabel = NULL; struct flowi6 fl6; struct dst_entry *dst; @@ -1260,8 +1263,10 @@ opt = NULL; connected = 0; } - if (!opt) - opt = np->opt; + if (!opt) { + opt = txopt_get(np); + opt_to_free = opt; + } if (flowlabel) opt = fl6_merge_options(&opt_space, flowlabel, opt); opt = ipv6_fixup_options(&opt_space, opt); @@ -1370,6 +1375,7 @@ out: dst_release(dst); fl6_sock_release(flowlabel); + txopt_put(opt_to_free); if (!err) return len; /* --- linux-raspi2-4.2.0.orig/net/ipv6/xfrm6_output.c +++ linux-raspi2-4.2.0/net/ipv6/xfrm6_output.c @@ -136,6 +136,7 @@ struct dst_entry *dst = skb_dst(skb); struct xfrm_state *x = dst->xfrm; int mtu; + bool toobig; #ifdef CONFIG_NETFILTER if (!x) { @@ -144,25 +145,29 @@ } #endif + if (x->props.mode != XFRM_MODE_TUNNEL) + goto skip_frag; + if (skb->protocol == htons(ETH_P_IPV6)) mtu = ip6_skb_dst_mtu(skb); else mtu = dst_mtu(skb_dst(skb)); - if (skb->len > mtu && xfrm6_local_dontfrag(skb)) { + toobig = skb->len > mtu && !skb_is_gso(skb); + + if (toobig && xfrm6_local_dontfrag(skb)) { xfrm6_local_rxpmtu(skb, mtu); return -EMSGSIZE; - } else if (!skb->ignore_df && skb->len > mtu && skb->sk) { + } else if (!skb->ignore_df && toobig && skb->sk) { xfrm_local_error(skb, mtu); return -EMSGSIZE; } - if (x->props.mode == XFRM_MODE_TUNNEL && - ((skb->len > mtu && !skb_is_gso(skb)) || - dst_allfrag(skb_dst(skb)))) { + if (toobig || dst_allfrag(skb_dst(skb))) return ip6_fragment(sk, skb, x->outer_mode->afinfo->output_finish); - } + +skip_frag: return x->outer_mode->afinfo->output_finish(sk, skb); } --- linux-raspi2-4.2.0.orig/net/irda/af_irda.c +++ linux-raspi2-4.2.0/net/irda/af_irda.c @@ -1086,6 +1086,9 @@ struct sock *sk; struct irda_sock *self; + if (protocol < 0 || protocol > SK_PROTOCOL_MAX) + return -EINVAL; + if (net != &init_net) return -EAFNOSUPPORT; --- linux-raspi2-4.2.0.orig/net/irda/irlmp.c +++ linux-raspi2-4.2.0/net/irda/irlmp.c @@ -1839,7 +1839,7 @@ for (element = hashbin_get_first(iter->hashbin); element != NULL; element = hashbin_get_next(iter->hashbin)) { - if (!off || *off-- == 0) { + if (!off || (*off)-- == 0) { /* NB: hashbin left locked */ return element; } --- linux-raspi2-4.2.0.orig/net/l2tp/l2tp_core.c +++ linux-raspi2-4.2.0/net/l2tp/l2tp_core.c @@ -1319,7 +1319,7 @@ tunnel = container_of(work, struct l2tp_tunnel, del_work); sk = l2tp_tunnel_sock_lookup(tunnel); if (!sk) - return; + goto out; sock = sk->sk_socket; @@ -1341,6 +1341,8 @@ } l2tp_tunnel_sock_put(sk); +out: + l2tp_tunnel_dec_refcount(tunnel); } /* Create a socket for the tunnel, if one isn't set up by @@ -1636,8 +1638,13 @@ */ int l2tp_tunnel_delete(struct l2tp_tunnel *tunnel) { + l2tp_tunnel_inc_refcount(tunnel); l2tp_tunnel_closeall(tunnel); - return (false == queue_work(l2tp_wq, &tunnel->del_work)); + if (false == queue_work(l2tp_wq, &tunnel->del_work)) { + l2tp_tunnel_dec_refcount(tunnel); + return 1; + } + return 0; } EXPORT_SYMBOL_GPL(l2tp_tunnel_delete); --- linux-raspi2-4.2.0.orig/net/l2tp/l2tp_ip6.c +++ linux-raspi2-4.2.0/net/l2tp/l2tp_ip6.c @@ -486,6 +486,7 @@ DECLARE_SOCKADDR(struct sockaddr_l2tpip6 *, lsa, msg->msg_name); struct in6_addr *daddr, *final_p, final; struct ipv6_pinfo *np = inet6_sk(sk); + struct ipv6_txoptions *opt_to_free = NULL; struct ipv6_txoptions *opt = NULL; struct ip6_flowlabel *flowlabel = NULL; struct dst_entry *dst = NULL; @@ -575,8 +576,10 @@ opt = NULL; } - if (opt == NULL) - opt = np->opt; + if (!opt) { + opt = txopt_get(np); + opt_to_free = opt; + } if (flowlabel) opt = fl6_merge_options(&opt_space, flowlabel, opt); opt = ipv6_fixup_options(&opt_space, opt); @@ -631,6 +634,7 @@ dst_release(dst); out: fl6_sock_release(flowlabel); + txopt_put(opt_to_free); return err < 0 ? err : len; --- linux-raspi2-4.2.0.orig/net/mac80211/debugfs.c +++ linux-raspi2-4.2.0/net/mac80211/debugfs.c @@ -148,7 +148,7 @@ for (i = 0; i < NUM_IEEE80211_HW_FLAGS; i++) { if (test_bit(i, local->hw.flags)) - pos += scnprintf(pos, end - pos, "%s", + pos += scnprintf(pos, end - pos, "%s\n", hw_flag_names[i]); } --- linux-raspi2-4.2.0.orig/net/mac80211/mlme.c +++ linux-raspi2-4.2.0/net/mac80211/mlme.c @@ -3378,7 +3378,7 @@ if (ifmgd->rssi_min_thold != ifmgd->rssi_max_thold && ifmgd->count_beacon_signal >= IEEE80211_SIGNAL_AVE_MIN_COUNT) { - int sig = ifmgd->ave_beacon_signal; + int sig = ifmgd->ave_beacon_signal / 16; int last_sig = ifmgd->last_ave_beacon_signal; struct ieee80211_event event = { .type = RSSI_EVENT, @@ -4999,6 +4999,25 @@ return 0; } + if (ifmgd->assoc_data && + ether_addr_equal(ifmgd->assoc_data->bss->bssid, req->bssid)) { + sdata_info(sdata, + "aborting association with %pM by local choice (Reason: %u=%s)\n", + req->bssid, req->reason_code, + ieee80211_get_reason_code_string(req->reason_code)); + + drv_mgd_prepare_tx(sdata->local, sdata); + ieee80211_send_deauth_disassoc(sdata, req->bssid, + IEEE80211_STYPE_DEAUTH, + req->reason_code, tx, + frame_buf); + ieee80211_destroy_assoc_data(sdata, false); + ieee80211_report_disconnect(sdata, frame_buf, + sizeof(frame_buf), true, + req->reason_code); + return 0; + } + if (ifmgd->associated && ether_addr_equal(ifmgd->associated->bssid, req->bssid)) { sdata_info(sdata, --- linux-raspi2-4.2.0.orig/net/mac80211/trace.h +++ linux-raspi2-4.2.0/net/mac80211/trace.h @@ -33,11 +33,11 @@ __field(u32, chan_width) \ __field(u32, center_freq1) \ __field(u32, center_freq2) -#define CHANDEF_ASSIGN(c) \ - __entry->control_freq = (c)->chan ? (c)->chan->center_freq : 0; \ - __entry->chan_width = (c)->width; \ - __entry->center_freq1 = (c)->center_freq1; \ - __entry->center_freq2 = (c)->center_freq2; +#define CHANDEF_ASSIGN(c) \ + __entry->control_freq = (c) ? ((c)->chan ? (c)->chan->center_freq : 0) : 0; \ + __entry->chan_width = (c) ? (c)->width : 0; \ + __entry->center_freq1 = (c) ? (c)->center_freq1 : 0; \ + __entry->center_freq2 = (c) ? (c)->center_freq2 : 0; #define CHANDEF_PR_FMT " control:%d MHz width:%d center: %d/%d MHz" #define CHANDEF_PR_ARG __entry->control_freq, __entry->chan_width, \ __entry->center_freq1, __entry->center_freq2 --- linux-raspi2-4.2.0.orig/net/mac80211/tx.c +++ linux-raspi2-4.2.0/net/mac80211/tx.c @@ -311,9 +311,6 @@ if (tx->sdata->vif.type == NL80211_IFTYPE_WDS) return TX_CONTINUE; - if (tx->sdata->vif.type == NL80211_IFTYPE_MESH_POINT) - return TX_CONTINUE; - if (tx->flags & IEEE80211_TX_PS_BUFFERED) return TX_CONTINUE; --- linux-raspi2-4.2.0.orig/net/mac80211/util.c +++ linux-raspi2-4.2.0/net/mac80211/util.c @@ -2984,6 +2984,13 @@ if (end > 0) return false; + /* One shot NOA */ + if (data->count[i] == 1) + return false; + + if (data->desc[i].interval == 0) + return false; + /* End time is in the past, check for repetitions */ skip = DIV_ROUND_UP(-end, data->desc[i].interval); if (data->count[i] < 255) { --- linux-raspi2-4.2.0.orig/net/netfilter/ipset/ip_set_hash_gen.h +++ linux-raspi2-4.2.0/net/netfilter/ipset/ip_set_hash_gen.h @@ -152,9 +152,13 @@ #define SET_HOST_MASK(family) (family == AF_INET ? 32 : 128) #ifdef IP_SET_HASH_WITH_NET0 +/* cidr from 0 to SET_HOST_MASK() value and c = cidr + 1 */ #define NLEN(family) (SET_HOST_MASK(family) + 1) +#define CIDR_POS(c) ((c) - 1) #else +/* cidr from 1 to SET_HOST_MASK() value and c = cidr + 1 */ #define NLEN(family) SET_HOST_MASK(family) +#define CIDR_POS(c) ((c) - 2) #endif #else @@ -305,7 +309,7 @@ } else if (h->nets[i].cidr[n] < cidr) { j = i; } else if (h->nets[i].cidr[n] == cidr) { - h->nets[cidr - 1].nets[n]++; + h->nets[CIDR_POS(cidr)].nets[n]++; return; } } @@ -314,7 +318,7 @@ h->nets[i].cidr[n] = h->nets[i - 1].cidr[n]; } h->nets[i].cidr[n] = cidr; - h->nets[cidr - 1].nets[n] = 1; + h->nets[CIDR_POS(cidr)].nets[n] = 1; } static void @@ -325,8 +329,8 @@ for (i = 0; i < nets_length; i++) { if (h->nets[i].cidr[n] != cidr) continue; - h->nets[cidr - 1].nets[n]--; - if (h->nets[cidr - 1].nets[n] > 0) + h->nets[CIDR_POS(cidr)].nets[n]--; + if (h->nets[CIDR_POS(cidr)].nets[n] > 0) return; for (j = i; j < net_end && h->nets[j].cidr[n]; j++) h->nets[j].cidr[n] = h->nets[j + 1].cidr[n]; --- linux-raspi2-4.2.0.orig/net/netfilter/ipset/ip_set_hash_netnet.c +++ linux-raspi2-4.2.0/net/netfilter/ipset/ip_set_hash_netnet.c @@ -131,6 +131,13 @@ #define HOST_MASK 32 #include "ip_set_hash_gen.h" +static void +hash_netnet4_init(struct hash_netnet4_elem *e) +{ + e->cidr[0] = HOST_MASK; + e->cidr[1] = HOST_MASK; +} + static int hash_netnet4_kadt(struct ip_set *set, const struct sk_buff *skb, const struct xt_action_param *par, @@ -160,7 +167,7 @@ { const struct hash_netnet *h = set->data; ipset_adtfn adtfn = set->variant->adt[adt]; - struct hash_netnet4_elem e = { .cidr = { HOST_MASK, HOST_MASK, }, }; + struct hash_netnet4_elem e = { }; struct ip_set_ext ext = IP_SET_INIT_UEXT(set); u32 ip = 0, ip_to = 0, last; u32 ip2 = 0, ip2_from = 0, ip2_to = 0, last2; @@ -169,6 +176,7 @@ if (tb[IPSET_ATTR_LINENO]) *lineno = nla_get_u32(tb[IPSET_ATTR_LINENO]); + hash_netnet4_init(&e); if (unlikely(!tb[IPSET_ATTR_IP] || !tb[IPSET_ATTR_IP2] || !ip_set_optattr_netorder(tb, IPSET_ATTR_CADT_FLAGS))) return -IPSET_ERR_PROTOCOL; @@ -357,6 +365,13 @@ #define IP_SET_EMIT_CREATE #include "ip_set_hash_gen.h" +static void +hash_netnet6_init(struct hash_netnet6_elem *e) +{ + e->cidr[0] = HOST_MASK; + e->cidr[1] = HOST_MASK; +} + static int hash_netnet6_kadt(struct ip_set *set, const struct sk_buff *skb, const struct xt_action_param *par, @@ -385,13 +400,14 @@ enum ipset_adt adt, u32 *lineno, u32 flags, bool retried) { ipset_adtfn adtfn = set->variant->adt[adt]; - struct hash_netnet6_elem e = { .cidr = { HOST_MASK, HOST_MASK, }, }; + struct hash_netnet6_elem e = { }; struct ip_set_ext ext = IP_SET_INIT_UEXT(set); int ret; if (tb[IPSET_ATTR_LINENO]) *lineno = nla_get_u32(tb[IPSET_ATTR_LINENO]); + hash_netnet6_init(&e); if (unlikely(!tb[IPSET_ATTR_IP] || !tb[IPSET_ATTR_IP2] || !ip_set_optattr_netorder(tb, IPSET_ATTR_CADT_FLAGS))) return -IPSET_ERR_PROTOCOL; --- linux-raspi2-4.2.0.orig/net/netfilter/ipset/ip_set_hash_netportnet.c +++ linux-raspi2-4.2.0/net/netfilter/ipset/ip_set_hash_netportnet.c @@ -142,6 +142,13 @@ #define HOST_MASK 32 #include "ip_set_hash_gen.h" +static void +hash_netportnet4_init(struct hash_netportnet4_elem *e) +{ + e->cidr[0] = HOST_MASK; + e->cidr[1] = HOST_MASK; +} + static int hash_netportnet4_kadt(struct ip_set *set, const struct sk_buff *skb, const struct xt_action_param *par, @@ -175,7 +182,7 @@ { const struct hash_netportnet *h = set->data; ipset_adtfn adtfn = set->variant->adt[adt]; - struct hash_netportnet4_elem e = { .cidr = { HOST_MASK, HOST_MASK, }, }; + struct hash_netportnet4_elem e = { }; struct ip_set_ext ext = IP_SET_INIT_UEXT(set); u32 ip = 0, ip_to = 0, ip_last, p = 0, port, port_to; u32 ip2_from = 0, ip2_to = 0, ip2_last, ip2; @@ -185,6 +192,7 @@ if (tb[IPSET_ATTR_LINENO]) *lineno = nla_get_u32(tb[IPSET_ATTR_LINENO]); + hash_netportnet4_init(&e); if (unlikely(!tb[IPSET_ATTR_IP] || !tb[IPSET_ATTR_IP2] || !ip_set_attr_netorder(tb, IPSET_ATTR_PORT) || !ip_set_optattr_netorder(tb, IPSET_ATTR_PORT_TO) || @@ -412,6 +420,13 @@ #define IP_SET_EMIT_CREATE #include "ip_set_hash_gen.h" +static void +hash_netportnet6_init(struct hash_netportnet6_elem *e) +{ + e->cidr[0] = HOST_MASK; + e->cidr[1] = HOST_MASK; +} + static int hash_netportnet6_kadt(struct ip_set *set, const struct sk_buff *skb, const struct xt_action_param *par, @@ -445,7 +460,7 @@ { const struct hash_netportnet *h = set->data; ipset_adtfn adtfn = set->variant->adt[adt]; - struct hash_netportnet6_elem e = { .cidr = { HOST_MASK, HOST_MASK, }, }; + struct hash_netportnet6_elem e = { }; struct ip_set_ext ext = IP_SET_INIT_UEXT(set); u32 port, port_to; bool with_ports = false; @@ -454,6 +469,7 @@ if (tb[IPSET_ATTR_LINENO]) *lineno = nla_get_u32(tb[IPSET_ATTR_LINENO]); + hash_netportnet6_init(&e); if (unlikely(!tb[IPSET_ATTR_IP] || !tb[IPSET_ATTR_IP2] || !ip_set_attr_netorder(tb, IPSET_ATTR_PORT) || !ip_set_optattr_netorder(tb, IPSET_ATTR_PORT_TO) || --- linux-raspi2-4.2.0.orig/net/netfilter/ipset/ip_set_list_set.c +++ linux-raspi2-4.2.0/net/netfilter/ipset/ip_set_list_set.c @@ -297,7 +297,7 @@ ip_set_timeout_expired(ext_timeout(n, set)))) n = NULL; - e = kzalloc(set->dsize, GFP_KERNEL); + e = kzalloc(set->dsize, GFP_ATOMIC); if (!e) return -ENOMEM; e->id = d->id; --- linux-raspi2-4.2.0.orig/net/netfilter/nf_conntrack_core.c +++ linux-raspi2-4.2.0/net/netfilter/nf_conntrack_core.c @@ -320,12 +320,13 @@ } EXPORT_SYMBOL_GPL(nf_ct_tmpl_alloc); -static void nf_ct_tmpl_free(struct nf_conn *tmpl) +void nf_ct_tmpl_free(struct nf_conn *tmpl) { nf_ct_ext_destroy(tmpl); nf_ct_ext_free(tmpl); kfree(tmpl); } +EXPORT_SYMBOL_GPL(nf_ct_tmpl_free); static void destroy_conntrack(struct nf_conntrack *nfct) --- linux-raspi2-4.2.0.orig/net/netfilter/nf_log.c +++ linux-raspi2-4.2.0/net/netfilter/nf_log.c @@ -107,12 +107,17 @@ void nf_log_unregister(struct nf_logger *logger) { + const struct nf_logger *log; int i; mutex_lock(&nf_log_mutex); - for (i = 0; i < NFPROTO_NUMPROTO; i++) - RCU_INIT_POINTER(loggers[i][logger->type], NULL); + for (i = 0; i < NFPROTO_NUMPROTO; i++) { + log = nft_log_dereference(loggers[i][logger->type]); + if (log == logger) + RCU_INIT_POINTER(loggers[i][logger->type], NULL); + } mutex_unlock(&nf_log_mutex); + synchronize_rcu(); } EXPORT_SYMBOL(nf_log_unregister); --- linux-raspi2-4.2.0.orig/net/netfilter/nf_nat_redirect.c +++ linux-raspi2-4.2.0/net/netfilter/nf_nat_redirect.c @@ -55,7 +55,7 @@ rcu_read_lock(); indev = __in_dev_get_rcu(skb->dev); - if (indev != NULL) { + if (indev && indev->ifa_list) { ifa = indev->ifa_list; newdst = ifa->ifa_local; } --- linux-raspi2-4.2.0.orig/net/netfilter/nf_synproxy_core.c +++ linux-raspi2-4.2.0/net/netfilter/nf_synproxy_core.c @@ -378,7 +378,7 @@ err3: free_percpu(snet->stats); err2: - nf_conntrack_free(ct); + nf_ct_tmpl_free(ct); err1: return err; } --- linux-raspi2-4.2.0.orig/net/netfilter/nfnetlink.c +++ linux-raspi2-4.2.0/net/netfilter/nfnetlink.c @@ -444,6 +444,7 @@ static void nfnetlink_rcv(struct sk_buff *skb) { struct nlmsghdr *nlh = nlmsg_hdr(skb); + u_int16_t res_id; int msglen; if (nlh->nlmsg_len < NLMSG_HDRLEN || @@ -468,7 +469,12 @@ nfgenmsg = nlmsg_data(nlh); skb_pull(skb, msglen); - nfnetlink_rcv_batch(skb, nlh, nfgenmsg->res_id); + /* Work around old nft using host byte order */ + if (nfgenmsg->res_id == NFNL_SUBSYS_NFTABLES) + res_id = NFNL_SUBSYS_NFTABLES; + else + res_id = ntohs(nfgenmsg->res_id); + nfnetlink_rcv_batch(skb, nlh, res_id); } else { netlink_rcv_skb(skb, &nfnetlink_rcv_msg); } @@ -486,7 +492,7 @@ type = nfnl_group2type[group]; rcu_read_lock(); - ss = nfnetlink_get_subsys(type); + ss = nfnetlink_get_subsys(type << 8); rcu_read_unlock(); if (!ss) request_module("nfnetlink-subsys-%d", type); --- linux-raspi2-4.2.0.orig/net/netfilter/nfnetlink_queue_core.c +++ linux-raspi2-4.2.0/net/netfilter/nfnetlink_queue_core.c @@ -301,7 +301,7 @@ __be32 **packet_id_ptr) { size_t size; - size_t data_len = 0, cap_len = 0; + size_t data_len = 0, cap_len = 0, rem_len = 0; unsigned int hlen = 0; struct sk_buff *skb; struct nlattr *nla; @@ -360,6 +360,7 @@ hlen = min_t(unsigned int, hlen, data_len); size += sizeof(struct nlattr) + hlen; cap_len = entskb->len; + rem_len = data_len - hlen; break; } @@ -377,7 +378,7 @@ size += nla_total_size(seclen); } - skb = nfnetlink_alloc_skb(net, size, queue->peer_portid, + skb = __netlink_alloc_skb(net->nfnl, size, rem_len, queue->peer_portid, GFP_ATOMIC); if (!skb) { skb_tx_error(entskb); --- linux-raspi2-4.2.0.orig/net/netfilter/nft_compat.c +++ linux-raspi2-4.2.0/net/netfilter/nft_compat.c @@ -619,6 +619,13 @@ static struct nft_expr_type nft_match_type; +static bool nft_match_cmp(const struct xt_match *match, + const char *name, u32 rev, u32 family) +{ + return strcmp(match->name, name) == 0 && match->revision == rev && + (match->family == NFPROTO_UNSPEC || match->family == family); +} + static const struct nft_expr_ops * nft_match_select_ops(const struct nft_ctx *ctx, const struct nlattr * const tb[]) @@ -626,7 +633,7 @@ struct nft_xt *nft_match; struct xt_match *match; char *mt_name; - __u32 rev, family; + u32 rev, family; if (tb[NFTA_MATCH_NAME] == NULL || tb[NFTA_MATCH_REV] == NULL || @@ -641,8 +648,7 @@ list_for_each_entry(nft_match, &nft_match_list, head) { struct xt_match *match = nft_match->ops.data; - if (strcmp(match->name, mt_name) == 0 && - match->revision == rev && match->family == family) { + if (nft_match_cmp(match, mt_name, rev, family)) { if (!try_module_get(match->me)) return ERR_PTR(-ENOENT); @@ -693,6 +699,13 @@ static struct nft_expr_type nft_target_type; +static bool nft_target_cmp(const struct xt_target *tg, + const char *name, u32 rev, u32 family) +{ + return strcmp(tg->name, name) == 0 && tg->revision == rev && + (tg->family == NFPROTO_UNSPEC || tg->family == family); +} + static const struct nft_expr_ops * nft_target_select_ops(const struct nft_ctx *ctx, const struct nlattr * const tb[]) @@ -700,7 +713,7 @@ struct nft_xt *nft_target; struct xt_target *target; char *tg_name; - __u32 rev, family; + u32 rev, family; if (tb[NFTA_TARGET_NAME] == NULL || tb[NFTA_TARGET_REV] == NULL || @@ -715,8 +728,7 @@ list_for_each_entry(nft_target, &nft_target_list, head) { struct xt_target *target = nft_target->ops.data; - if (strcmp(target->name, tg_name) == 0 && - target->revision == rev && target->family == family) { + if (nft_target_cmp(target, tg_name, rev, family)) { if (!try_module_get(target->me)) return ERR_PTR(-ENOENT); --- linux-raspi2-4.2.0.orig/net/netfilter/xt_CT.c +++ linux-raspi2-4.2.0/net/netfilter/xt_CT.c @@ -233,7 +233,7 @@ return 0; err3: - nf_conntrack_free(ct); + nf_ct_tmpl_free(ct); err2: nf_ct_l3proto_module_put(par->family); err1: --- linux-raspi2-4.2.0.orig/net/netlink/af_netlink.c +++ linux-raspi2-4.2.0/net/netlink/af_netlink.c @@ -124,6 +124,24 @@ return group ? 1 << (group - 1) : 0; } +static struct sk_buff *netlink_to_full_skb(const struct sk_buff *skb, + gfp_t gfp_mask) +{ + unsigned int len = skb_end_offset(skb); + struct sk_buff *new; + + new = alloc_skb(len, gfp_mask); + if (new == NULL) + return NULL; + + NETLINK_CB(new).portid = NETLINK_CB(skb).portid; + NETLINK_CB(new).dst_group = NETLINK_CB(skb).dst_group; + NETLINK_CB(new).creds = NETLINK_CB(skb).creds; + + memcpy(skb_put(new, len), skb->data, len); + return new; +} + int netlink_add_tap(struct netlink_tap *nt) { if (unlikely(nt->dev->type != ARPHRD_NETLINK)) @@ -205,7 +223,11 @@ int ret = -ENOMEM; dev_hold(dev); - nskb = skb_clone(skb, GFP_ATOMIC); + + if (netlink_skb_is_mmaped(skb) || is_vmalloc_addr(skb->head)) + nskb = netlink_to_full_skb(skb, GFP_ATOMIC); + else + nskb = skb_clone(skb, GFP_ATOMIC); if (nskb) { nskb->dev = dev; nskb->protocol = htons((u16) sk->sk_protocol); @@ -278,11 +300,6 @@ } #ifdef CONFIG_NETLINK_MMAP -static bool netlink_skb_is_mmaped(const struct sk_buff *skb) -{ - return NETLINK_CB(skb).flags & NETLINK_SKB_MMAPED; -} - static bool netlink_rx_is_mmaped(struct sock *sk) { return nlk_sk(sk)->rx_ring.pg_vec != NULL; @@ -834,7 +851,6 @@ } #else /* CONFIG_NETLINK_MMAP */ -#define netlink_skb_is_mmaped(skb) false #define netlink_rx_is_mmaped(sk) false #define netlink_tx_is_mmaped(sk) false #define netlink_mmap sock_no_mmap @@ -1082,8 +1098,8 @@ lock_sock(sk); - err = -EBUSY; - if (nlk_sk(sk)->portid) + err = nlk_sk(sk)->portid == portid ? 0 : -EBUSY; + if (nlk_sk(sk)->bound) goto err; err = -ENOMEM; @@ -1103,10 +1119,14 @@ err = -EOVERFLOW; if (err == -EEXIST) err = -EADDRINUSE; - nlk_sk(sk)->portid = 0; sock_put(sk); + goto err; } + /* We need to ensure that the socket is hashed and visible. */ + smp_wmb(); + nlk_sk(sk)->bound = portid; + err: release_sock(sk); return err; @@ -1491,6 +1511,7 @@ struct sockaddr_nl *nladdr = (struct sockaddr_nl *)addr; int err; long unsigned int groups = nladdr->nl_groups; + bool bound; if (addr_len < sizeof(struct sockaddr_nl)) return -EINVAL; @@ -1507,9 +1528,14 @@ return err; } - if (nlk->portid) + bound = nlk->bound; + if (bound) { + /* Ensure nlk->portid is up-to-date. */ + smp_rmb(); + if (nladdr->nl_pid != nlk->portid) return -EINVAL; + } if (nlk->netlink_bind && groups) { int group; @@ -1525,7 +1551,10 @@ } } - if (!nlk->portid) { + /* No need for barriers here as we return to user-space without + * using any of the bound attributes. + */ + if (!bound) { err = nladdr->nl_pid ? netlink_insert(sk, nladdr->nl_pid) : netlink_autobind(sock); @@ -1573,7 +1602,10 @@ !netlink_allowed(sock, NL_CFG_F_NONROOT_SEND)) return -EPERM; - if (!nlk->portid) + /* No need for barriers here as we return to user-space without + * using any of the bound attributes. + */ + if (!nlk->bound) err = netlink_autobind(sock); if (err == 0) { @@ -1832,15 +1864,16 @@ } EXPORT_SYMBOL(netlink_unicast); -struct sk_buff *netlink_alloc_skb(struct sock *ssk, unsigned int size, - u32 dst_portid, gfp_t gfp_mask) +struct sk_buff *__netlink_alloc_skb(struct sock *ssk, unsigned int size, + unsigned int ldiff, u32 dst_portid, + gfp_t gfp_mask) { #ifdef CONFIG_NETLINK_MMAP + unsigned int maxlen, linear_size; struct sock *sk = NULL; struct sk_buff *skb; struct netlink_ring *ring; struct nl_mmap_hdr *hdr; - unsigned int maxlen; sk = netlink_getsockbyportid(ssk, dst_portid); if (IS_ERR(sk)) @@ -1851,7 +1884,11 @@ if (ring->pg_vec == NULL) goto out_put; - if (ring->frame_size - NL_MMAP_HDRLEN < size) + /* We need to account the full linear size needed as a ring + * slot cannot have non-linear parts. + */ + linear_size = size + ldiff; + if (ring->frame_size - NL_MMAP_HDRLEN < linear_size) goto out_put; skb = alloc_skb_head(gfp_mask); @@ -1865,13 +1902,14 @@ /* check again under lock */ maxlen = ring->frame_size - NL_MMAP_HDRLEN; - if (maxlen < size) + if (maxlen < linear_size) goto out_free; netlink_forward_ring(ring); hdr = netlink_current_frame(ring, NL_MMAP_STATUS_UNUSED); if (hdr == NULL) goto err2; + netlink_ring_setup_skb(skb, sk, ring, hdr); netlink_set_status(hdr, NL_MMAP_STATUS_RESERVED); atomic_inc(&ring->pending); @@ -1897,7 +1935,7 @@ #endif return alloc_skb(size, gfp_mask); } -EXPORT_SYMBOL_GPL(netlink_alloc_skb); +EXPORT_SYMBOL_GPL(__netlink_alloc_skb); int netlink_has_listeners(struct sock *sk, unsigned int group) { @@ -2314,7 +2352,7 @@ int pos, idx, shift; err = 0; - netlink_table_grab(); + netlink_lock_table(); for (pos = 0; pos * 8 < nlk->ngroups; pos += sizeof(u32)) { if (len - pos < sizeof(u32)) break; @@ -2329,7 +2367,7 @@ } if (put_user(ALIGN(nlk->ngroups / 8, sizeof(u32)), optlen)) err = -EFAULT; - netlink_table_ungrab(); + netlink_unlock_table(); break; } default: @@ -2391,10 +2429,13 @@ dst_group = nlk->dst_group; } - if (!nlk->portid) { + if (!nlk->bound) { err = netlink_autobind(sock); if (err) goto out; + } else { + /* Ensure nlk is hashed and visible. */ + smp_rmb(); } /* It's a really convoluted way for userland to ask for mmaped @@ -2715,6 +2756,7 @@ struct sk_buff *skb = NULL; struct nlmsghdr *nlh; int len, err = -ENOBUFS; + int alloc_min_size; int alloc_size; mutex_lock(nlk->cb_mutex); @@ -2723,9 +2765,6 @@ goto errout_skb; } - cb = &nlk->cb; - alloc_size = max_t(int, cb->min_dump_alloc, NLMSG_GOODSIZE); - if (!netlink_rx_is_mmaped(sk) && atomic_read(&sk->sk_rmem_alloc) >= sk->sk_rcvbuf) goto errout_skb; @@ -2735,23 +2774,35 @@ * to reduce number of system calls on dump operations, if user * ever provided a big enough buffer. */ - if (alloc_size < nlk->max_recvmsg_len) { - skb = netlink_alloc_skb(sk, - nlk->max_recvmsg_len, - nlk->portid, + cb = &nlk->cb; + alloc_min_size = max_t(int, cb->min_dump_alloc, NLMSG_GOODSIZE); + + if (alloc_min_size < nlk->max_recvmsg_len) { + alloc_size = nlk->max_recvmsg_len; + skb = netlink_alloc_skb(sk, alloc_size, nlk->portid, GFP_KERNEL | __GFP_NOWARN | __GFP_NORETRY); - /* available room should be exact amount to avoid MSG_TRUNC */ - if (skb) - skb_reserve(skb, skb_tailroom(skb) - - nlk->max_recvmsg_len); } - if (!skb) + if (!skb) { + alloc_size = alloc_min_size; skb = netlink_alloc_skb(sk, alloc_size, nlk->portid, GFP_KERNEL); + } if (!skb) goto errout_skb; + + /* Trim skb to allocated size. User is expected to provide buffer as + * large as max(min_dump_alloc, 16KiB (mac_recvmsg_len capped at + * netlink_recvmsg())). dump will pack as many smaller messages as + * could fit within the allocated skb. skb is typically allocated + * with larger space than required (could be as much as near 2x the + * requested size with align to next power of 2 approach). Allowing + * dump to use the excess space makes it difficult for a user to have a + * reasonable static buffer based on the expected largest dump of a + * single netdev. The outcome is MSG_TRUNC error. + */ + skb_reserve(skb, skb_tailroom(skb) - alloc_size); netlink_skb_set_owner_r(skb, sk); len = cb->dump(skb, cb); --- linux-raspi2-4.2.0.orig/net/netlink/af_netlink.h +++ linux-raspi2-4.2.0/net/netlink/af_netlink.h @@ -35,6 +35,7 @@ unsigned long state; size_t max_recvmsg_len; wait_queue_head_t wait; + bool bound; bool cb_running; struct netlink_callback cb; struct mutex *cb_mutex; @@ -59,6 +60,15 @@ return container_of(sk, struct netlink_sock, sk); } +static inline bool netlink_skb_is_mmaped(const struct sk_buff *skb) +{ +#ifdef CONFIG_NETLINK_MMAP + return NETLINK_CB(skb).flags & NETLINK_SKB_MMAPED; +#else + return false; +#endif /* CONFIG_NETLINK_MMAP */ +} + struct netlink_table { struct rhashtable hash; struct hlist_head mc_list; --- linux-raspi2-4.2.0.orig/net/nfc/nci/hci.c +++ linux-raspi2-4.2.0/net/nfc/nci/hci.c @@ -101,6 +101,20 @@ #define NCI_HCP_MSG_GET_CMD(header) (header & 0x3f) #define NCI_HCP_MSG_GET_PIPE(header) (header & 0x7f) +static int nci_hci_result_to_errno(u8 result) +{ + switch (result) { + case NCI_HCI_ANY_OK: + return 0; + case NCI_HCI_ANY_E_REG_PAR_UNKNOWN: + return -EOPNOTSUPP; + case NCI_HCI_ANY_E_TIMEOUT: + return -ETIME; + default: + return -1; + } +} + /* HCI core */ static void nci_hci_reset_pipes(struct nci_hci_dev *hdev) { @@ -146,18 +160,18 @@ if (!conn_info) return -EPROTO; - skb = nci_skb_alloc(ndev, 2 + conn_info->max_pkt_payload_len + + i = 0; + skb = nci_skb_alloc(ndev, conn_info->max_pkt_payload_len + NCI_DATA_HDR_SIZE, GFP_KERNEL); if (!skb) return -ENOMEM; - skb_reserve(skb, 2 + NCI_DATA_HDR_SIZE); + skb_reserve(skb, NCI_DATA_HDR_SIZE + 2); *skb_push(skb, 1) = data_type; - i = 0; - len = conn_info->max_pkt_payload_len; - do { + len = conn_info->max_pkt_payload_len; + /* If last packet add NCI_HFP_NO_CHAINING */ if (i + conn_info->max_pkt_payload_len - (skb->len + 1) >= data_len) { @@ -177,9 +191,15 @@ return r; i += len; + if (i < data_len) { - skb_trim(skb, 0); - skb_pull(skb, len); + skb = nci_skb_alloc(ndev, + conn_info->max_pkt_payload_len + + NCI_DATA_HDR_SIZE, GFP_KERNEL); + if (!skb) + return -ENOMEM; + + skb_reserve(skb, NCI_DATA_HDR_SIZE + 1); } } while (i < data_len); @@ -212,7 +232,8 @@ const u8 *param, size_t param_len, struct sk_buff **skb) { - struct nci_conn_info *conn_info; + struct nci_hcp_message *message; + struct nci_conn_info *conn_info; struct nci_data data; int r; u8 pipe = ndev->hci_dev->gate2pipe[gate]; @@ -232,9 +253,15 @@ r = nci_request(ndev, nci_hci_send_data_req, (unsigned long)&data, msecs_to_jiffies(NCI_DATA_TIMEOUT)); + if (r == NCI_STATUS_OK) { + message = (struct nci_hcp_message *)conn_info->rx_skb->data; + r = nci_hci_result_to_errno( + NCI_HCP_MSG_GET_CMD(message->header)); + skb_pull(conn_info->rx_skb, NCI_HCI_HCP_MESSAGE_HEADER_LEN); - if (r == NCI_STATUS_OK) - *skb = conn_info->rx_skb; + if (!r && skb) + *skb = conn_info->rx_skb; + } return r; } @@ -328,9 +355,6 @@ struct nci_conn_info *conn_info; u8 status = result; - if (result != NCI_HCI_ANY_OK) - goto exit; - conn_info = ndev->hci_dev->conn_info; if (!conn_info) { status = NCI_STATUS_REJECTED; @@ -340,7 +364,7 @@ conn_info->rx_skb = skb; exit: - nci_req_complete(ndev, status); + nci_req_complete(ndev, NCI_STATUS_OK); } /* Receive hcp message for pipe, with type and cmd. @@ -378,7 +402,7 @@ u8 pipe, type, instruction; while ((skb = skb_dequeue(&hdev->msg_rx_queue)) != NULL) { - pipe = skb->data[0]; + pipe = NCI_HCP_MSG_GET_PIPE(skb->data[0]); skb_pull(skb, NCI_HCI_HCP_PACKET_HEADER_LEN); message = (struct nci_hcp_message *)skb->data; type = NCI_HCP_MSG_GET_TYPE(message->header); @@ -395,7 +419,7 @@ { struct nci_dev *ndev = (struct nci_dev *)context; struct nci_hcp_packet *packet; - u8 pipe, type, instruction; + u8 pipe, type; struct sk_buff *hcp_skb; struct sk_buff *frag_skb; int msg_len; @@ -415,7 +439,7 @@ /* it's the last fragment. Does it need re-aggregation? */ if (skb_queue_len(&ndev->hci_dev->rx_hcp_frags)) { - pipe = packet->header & NCI_HCI_FRAGMENT; + pipe = NCI_HCP_MSG_GET_PIPE(packet->header); skb_queue_tail(&ndev->hci_dev->rx_hcp_frags, skb); msg_len = 0; @@ -434,7 +458,7 @@ *skb_put(hcp_skb, NCI_HCI_HCP_PACKET_HEADER_LEN) = pipe; skb_queue_walk(&ndev->hci_dev->rx_hcp_frags, frag_skb) { - msg_len = frag_skb->len - NCI_HCI_HCP_PACKET_HEADER_LEN; + msg_len = frag_skb->len - NCI_HCI_HCP_PACKET_HEADER_LEN; memcpy(skb_put(hcp_skb, msg_len), frag_skb->data + NCI_HCI_HCP_PACKET_HEADER_LEN, msg_len); } @@ -452,11 +476,10 @@ packet = (struct nci_hcp_packet *)hcp_skb->data; type = NCI_HCP_MSG_GET_TYPE(packet->message.header); if (type == NCI_HCI_HCP_RESPONSE) { - pipe = packet->header; - instruction = NCI_HCP_MSG_GET_CMD(packet->message.header); - skb_pull(hcp_skb, NCI_HCI_HCP_PACKET_HEADER_LEN + - NCI_HCI_HCP_MESSAGE_HEADER_LEN); - nci_hci_hcp_message_rx(ndev, pipe, type, instruction, hcp_skb); + pipe = NCI_HCP_MSG_GET_PIPE(packet->header); + skb_pull(hcp_skb, NCI_HCI_HCP_PACKET_HEADER_LEN); + nci_hci_hcp_message_rx(ndev, pipe, type, + NCI_STATUS_OK, hcp_skb); } else { skb_queue_tail(&ndev->hci_dev->msg_rx_queue, hcp_skb); schedule_work(&ndev->hci_dev->msg_rx_work); @@ -488,6 +511,7 @@ int nci_hci_set_param(struct nci_dev *ndev, u8 gate, u8 idx, const u8 *param, size_t param_len) { + struct nci_hcp_message *message; struct nci_conn_info *conn_info; struct nci_data data; int r; @@ -520,6 +544,12 @@ r = nci_request(ndev, nci_hci_send_data_req, (unsigned long)&data, msecs_to_jiffies(NCI_DATA_TIMEOUT)); + if (r == NCI_STATUS_OK) { + message = (struct nci_hcp_message *)conn_info->rx_skb->data; + r = nci_hci_result_to_errno( + NCI_HCP_MSG_GET_CMD(message->header)); + skb_pull(conn_info->rx_skb, NCI_HCI_HCP_MESSAGE_HEADER_LEN); + } kfree(tmp); return r; @@ -529,6 +559,7 @@ int nci_hci_get_param(struct nci_dev *ndev, u8 gate, u8 idx, struct sk_buff **skb) { + struct nci_hcp_message *message; struct nci_conn_info *conn_info; struct nci_data data; int r; @@ -553,8 +584,15 @@ r = nci_request(ndev, nci_hci_send_data_req, (unsigned long)&data, msecs_to_jiffies(NCI_DATA_TIMEOUT)); - if (r == NCI_STATUS_OK) - *skb = conn_info->rx_skb; + if (r == NCI_STATUS_OK) { + message = (struct nci_hcp_message *)conn_info->rx_skb->data; + r = nci_hci_result_to_errno( + NCI_HCP_MSG_GET_CMD(message->header)); + skb_pull(conn_info->rx_skb, NCI_HCI_HCP_MESSAGE_HEADER_LEN); + + if (!r && skb) + *skb = conn_info->rx_skb; + } return r; } --- linux-raspi2-4.2.0.orig/net/nfc/netlink.c +++ linux-raspi2-4.2.0/net/nfc/netlink.c @@ -1518,12 +1518,13 @@ if (!dev || !dev->vendor_cmds || !dev->n_vendor_cmds) return -ENODEV; - data = nla_data(info->attrs[NFC_ATTR_VENDOR_DATA]); - if (data) { + if (info->attrs[NFC_ATTR_VENDOR_DATA]) { + data = nla_data(info->attrs[NFC_ATTR_VENDOR_DATA]); data_len = nla_len(info->attrs[NFC_ATTR_VENDOR_DATA]); if (data_len == 0) return -EINVAL; } else { + data = NULL; data_len = 0; } --- linux-raspi2-4.2.0.orig/net/openvswitch/datapath.c +++ linux-raspi2-4.2.0/net/openvswitch/datapath.c @@ -920,7 +920,7 @@ if (error) goto err_kfree_flow; - ovs_flow_mask_key(&new_flow->key, &key, &mask); + ovs_flow_mask_key(&new_flow->key, &key, true, &mask); /* Extract flow identifier. */ error = ovs_nla_get_identifier(&new_flow->id, a[OVS_FLOW_ATTR_UFID], @@ -1047,7 +1047,7 @@ struct sw_flow_key masked_key; int error; - ovs_flow_mask_key(&masked_key, key, mask); + ovs_flow_mask_key(&masked_key, key, true, mask); error = ovs_nla_copy_actions(a, &masked_key, &acts, log); if (error) { OVS_NLERR(log, --- linux-raspi2-4.2.0.orig/net/openvswitch/flow_table.c +++ linux-raspi2-4.2.0/net/openvswitch/flow_table.c @@ -56,20 +56,21 @@ } void ovs_flow_mask_key(struct sw_flow_key *dst, const struct sw_flow_key *src, - const struct sw_flow_mask *mask) + bool full, const struct sw_flow_mask *mask) { - const long *m = (const long *)((const u8 *)&mask->key + - mask->range.start); - const long *s = (const long *)((const u8 *)src + - mask->range.start); - long *d = (long *)((u8 *)dst + mask->range.start); + int start = full ? 0 : mask->range.start; + int len = full ? sizeof *dst : range_n_bytes(&mask->range); + const long *m = (const long *)((const u8 *)&mask->key + start); + const long *s = (const long *)((const u8 *)src + start); + long *d = (long *)((u8 *)dst + start); int i; - /* The memory outside of the 'mask->range' are not set since - * further operations on 'dst' only uses contents within - * 'mask->range'. + /* If 'full' is true then all of 'dst' is fully initialized. Otherwise, + * if 'full' is false the memory outside of the 'mask->range' is left + * uninitialized. This can be used as an optimization when further + * operations on 'dst' only use contents within 'mask->range'. */ - for (i = 0; i < range_n_bytes(&mask->range); i += sizeof(long)) + for (i = 0; i < len; i += sizeof(long)) *d++ = *s++ & *m++; } @@ -91,7 +92,8 @@ /* Initialize the default stat node. */ stats = kmem_cache_alloc_node(flow_stats_cache, - GFP_KERNEL | __GFP_ZERO, 0); + GFP_KERNEL | __GFP_ZERO, + node_online(0) ? 0 : NUMA_NO_NODE); if (!stats) goto err; @@ -473,7 +475,7 @@ u32 hash; struct sw_flow_key masked_key; - ovs_flow_mask_key(&masked_key, unmasked, mask); + ovs_flow_mask_key(&masked_key, unmasked, false, mask); hash = flow_hash(&masked_key, &mask->range); head = find_bucket(ti, hash); hlist_for_each_entry_rcu(flow, head, flow_table.node[ti->node_ver]) { --- linux-raspi2-4.2.0.orig/net/openvswitch/flow_table.h +++ linux-raspi2-4.2.0/net/openvswitch/flow_table.h @@ -86,5 +86,5 @@ bool ovs_flow_cmp(const struct sw_flow *, const struct sw_flow_match *); void ovs_flow_mask_key(struct sw_flow_key *dst, const struct sw_flow_key *src, - const struct sw_flow_mask *mask); + bool full, const struct sw_flow_mask *mask); #endif /* flow_table.h */ --- linux-raspi2-4.2.0.orig/net/packet/af_packet.c +++ linux-raspi2-4.2.0/net/packet/af_packet.c @@ -229,6 +229,8 @@ } sa; }; +#define vio_le() virtio_legacy_is_little_endian() + #define PACKET_SKB_CB(__skb) ((struct packet_skb_cb *)((__skb)->cb)) #define GET_PBDQC_FROM_RB(x) ((struct tpacket_kbdq_core *)(&(x)->prb_bdqc)) @@ -1498,10 +1500,10 @@ static bool match_fanout_group(struct packet_type *ptype, struct sock *sk) { - if (ptype->af_packet_priv == (void *)((struct packet_sock *)sk)->fanout) - return true; + if (sk->sk_family != PF_PACKET) + return false; - return false; + return ptype->af_packet_priv == pkt_sk(sk)->fanout; } static int fanout_add(struct sock *sk, u16 id, u16 type_flags) @@ -1620,6 +1622,20 @@ kfree_rcu(po->rollover, rcu); } +static bool packet_extra_vlan_len_allowed(const struct net_device *dev, + struct sk_buff *skb) +{ + /* Earlier code assumed this would be a VLAN pkt, double-check + * this now that we have the actual packet in hand. We can only + * do this check on Ethernet devices. + */ + if (unlikely(dev->type != ARPHRD_ETHER)) + return false; + + skb_reset_mac_header(skb); + return likely(eth_hdr(skb)->h_proto == htons(ETH_P_8021Q)); +} + static const struct proto_ops packet_ops; static const struct proto_ops packet_ops_spkt; @@ -1781,18 +1797,10 @@ goto retry; } - if (len > (dev->mtu + dev->hard_header_len + extra_len)) { - /* Earlier code assumed this would be a VLAN pkt, - * double-check this now that we have the actual - * packet in hand. - */ - struct ethhdr *ehdr; - skb_reset_mac_header(skb); - ehdr = eth_hdr(skb); - if (ehdr->h_proto != htons(ETH_P_8021Q)) { - err = -EMSGSIZE; - goto out_unlock; - } + if (len > (dev->mtu + dev->hard_header_len + extra_len) && + !packet_extra_vlan_len_allowed(dev, skb)) { + err = -EMSGSIZE; + goto out_unlock; } skb->protocol = proto; @@ -2211,6 +2219,15 @@ return false; } +static void tpacket_set_protocol(const struct net_device *dev, + struct sk_buff *skb) +{ + if (dev->type == ARPHRD_ETHER) { + skb_reset_mac_header(skb); + skb->protocol = eth_hdr(skb)->h_proto; + } +} + static int tpacket_fill_skb(struct packet_sock *po, struct sk_buff *skb, void *frame, struct net_device *dev, int size_max, __be16 proto, unsigned char *addr, int hlen) @@ -2247,8 +2264,6 @@ skb_reserve(skb, hlen); skb_reset_network_header(skb); - if (!packet_use_direct_xmit(po)) - skb_probe_transport_header(skb, 0); if (unlikely(po->tp_tx_has_off)) { int off_min, off_max, off; off_min = po->tp_hdrlen - sizeof(struct sockaddr_ll); @@ -2294,6 +2309,8 @@ dev->hard_header_len); if (unlikely(err)) return err; + if (!skb->protocol) + tpacket_set_protocol(dev, skb); data += dev->hard_header_len; to_write -= dev->hard_header_len; @@ -2328,6 +2345,8 @@ len = ((to_write > len_max) ? len_max : to_write); } + skb_probe_transport_header(skb, 0); + return tp_len; } @@ -2372,12 +2391,13 @@ if (unlikely(!(dev->flags & IFF_UP))) goto out_put; - reserve = dev->hard_header_len + VLAN_HLEN; + if (po->sk.sk_socket->type == SOCK_RAW) + reserve = dev->hard_header_len; size_max = po->tx_ring.frame_size - (po->tp_hdrlen - sizeof(struct sockaddr_ll)); - if (size_max > dev->mtu + reserve) - size_max = dev->mtu + reserve; + if (size_max > dev->mtu + reserve + VLAN_HLEN) + size_max = dev->mtu + reserve + VLAN_HLEN; do { ph = packet_current_frame(po, &po->tx_ring, @@ -2404,18 +2424,10 @@ tp_len = tpacket_fill_skb(po, skb, ph, dev, size_max, proto, addr, hlen); if (likely(tp_len >= 0) && - tp_len > dev->mtu + dev->hard_header_len) { - struct ethhdr *ehdr; - /* Earlier code assumed this would be a VLAN pkt, - * double-check this now that we have the actual - * packet in hand. - */ + tp_len > dev->mtu + reserve && + !packet_extra_vlan_len_allowed(dev, skb)) + tp_len = -EMSGSIZE; - skb_reset_mac_header(skb); - ehdr = eth_hdr(skb); - if (ehdr->h_proto != htons(ETH_P_8021Q)) - tp_len = -EMSGSIZE; - } if (unlikely(tp_len < 0)) { if (po->tp_loss) { __packet_set_status(po, ph, @@ -2561,15 +2573,15 @@ goto out_unlock; if ((vnet_hdr.flags & VIRTIO_NET_HDR_F_NEEDS_CSUM) && - (__virtio16_to_cpu(false, vnet_hdr.csum_start) + - __virtio16_to_cpu(false, vnet_hdr.csum_offset) + 2 > - __virtio16_to_cpu(false, vnet_hdr.hdr_len))) - vnet_hdr.hdr_len = __cpu_to_virtio16(false, - __virtio16_to_cpu(false, vnet_hdr.csum_start) + - __virtio16_to_cpu(false, vnet_hdr.csum_offset) + 2); + (__virtio16_to_cpu(vio_le(), vnet_hdr.csum_start) + + __virtio16_to_cpu(vio_le(), vnet_hdr.csum_offset) + 2 > + __virtio16_to_cpu(vio_le(), vnet_hdr.hdr_len))) + vnet_hdr.hdr_len = __cpu_to_virtio16(vio_le(), + __virtio16_to_cpu(vio_le(), vnet_hdr.csum_start) + + __virtio16_to_cpu(vio_le(), vnet_hdr.csum_offset) + 2); err = -EINVAL; - if (__virtio16_to_cpu(false, vnet_hdr.hdr_len) > len) + if (__virtio16_to_cpu(vio_le(), vnet_hdr.hdr_len) > len) goto out_unlock; if (vnet_hdr.gso_type != VIRTIO_NET_HDR_GSO_NONE) { @@ -2612,7 +2624,7 @@ hlen = LL_RESERVED_SPACE(dev); tlen = dev->needed_tailroom; skb = packet_alloc_skb(sk, hlen + tlen, hlen, len, - __virtio16_to_cpu(false, vnet_hdr.hdr_len), + __virtio16_to_cpu(vio_le(), vnet_hdr.hdr_len), msg->msg_flags & MSG_DONTWAIT, &err); if (skb == NULL) goto out_unlock; @@ -2636,18 +2648,10 @@ sock_tx_timestamp(sk, &skb_shinfo(skb)->tx_flags); - if (!gso_type && (len > dev->mtu + reserve + extra_len)) { - /* Earlier code assumed this would be a VLAN pkt, - * double-check this now that we have the actual - * packet in hand. - */ - struct ethhdr *ehdr; - skb_reset_mac_header(skb); - ehdr = eth_hdr(skb); - if (ehdr->h_proto != htons(ETH_P_8021Q)) { - err = -EMSGSIZE; - goto out_free; - } + if (!gso_type && (len > dev->mtu + reserve + extra_len) && + !packet_extra_vlan_len_allowed(dev, skb)) { + err = -EMSGSIZE; + goto out_free; } skb->protocol = proto; @@ -2659,8 +2663,8 @@ if (po->has_vnet_hdr) { if (vnet_hdr.flags & VIRTIO_NET_HDR_F_NEEDS_CSUM) { - u16 s = __virtio16_to_cpu(false, vnet_hdr.csum_start); - u16 o = __virtio16_to_cpu(false, vnet_hdr.csum_offset); + u16 s = __virtio16_to_cpu(vio_le(), vnet_hdr.csum_start); + u16 o = __virtio16_to_cpu(vio_le(), vnet_hdr.csum_offset); if (!skb_partial_csum_set(skb, s, o)) { err = -EINVAL; goto out_free; @@ -2668,7 +2672,7 @@ } skb_shinfo(skb)->gso_size = - __virtio16_to_cpu(false, vnet_hdr.gso_size); + __virtio16_to_cpu(vio_le(), vnet_hdr.gso_size); skb_shinfo(skb)->gso_type = gso_type; /* Header must be checked, and gso_segs computed. */ @@ -2678,8 +2682,8 @@ len += vnet_hdr_len; } - if (!packet_use_direct_xmit(po)) - skb_probe_transport_header(skb, reserve); + skb_probe_transport_header(skb, reserve); + if (unlikely(extra_len == 4)) skb->no_fcs = 1; @@ -2782,22 +2786,40 @@ * Attach a packet hook. */ -static int packet_do_bind(struct sock *sk, struct net_device *dev, __be16 proto) +static int packet_do_bind(struct sock *sk, const char *name, int ifindex, + __be16 proto) { struct packet_sock *po = pkt_sk(sk); struct net_device *dev_curr; __be16 proto_curr; bool need_rehook; + struct net_device *dev = NULL; + int ret = 0; + bool unlisted = false; - if (po->fanout) { - if (dev) - dev_put(dev); - + if (po->fanout) return -EINVAL; - } lock_sock(sk); spin_lock(&po->bind_lock); + rcu_read_lock(); + + if (name) { + dev = dev_get_by_name_rcu(sock_net(sk), name); + if (!dev) { + ret = -ENODEV; + goto out_unlock; + } + } else if (ifindex) { + dev = dev_get_by_index_rcu(sock_net(sk), ifindex); + if (!dev) { + ret = -ENODEV; + goto out_unlock; + } + } + + if (dev) + dev_hold(dev); proto_curr = po->prot_hook.type; dev_curr = po->prot_hook.dev; @@ -2805,14 +2827,29 @@ need_rehook = proto_curr != proto || dev_curr != dev; if (need_rehook) { - unregister_prot_hook(sk, true); + if (po->running) { + rcu_read_unlock(); + __unregister_prot_hook(sk, true); + rcu_read_lock(); + dev_curr = po->prot_hook.dev; + if (dev) + unlisted = !dev_get_by_index_rcu(sock_net(sk), + dev->ifindex); + } po->num = proto; po->prot_hook.type = proto; - po->prot_hook.dev = dev; - po->ifindex = dev ? dev->ifindex : 0; - packet_cached_dev_assign(po, dev); + if (unlikely(unlisted)) { + dev_put(dev); + po->prot_hook.dev = NULL; + po->ifindex = -1; + packet_cached_dev_reset(po); + } else { + po->prot_hook.dev = dev; + po->ifindex = dev ? dev->ifindex : 0; + packet_cached_dev_assign(po, dev); + } } if (dev_curr) dev_put(dev_curr); @@ -2820,7 +2857,7 @@ if (proto == 0 || !need_rehook) goto out_unlock; - if (!dev || (dev->flags & IFF_UP)) { + if (!unlisted && (!dev || (dev->flags & IFF_UP))) { register_prot_hook(sk); } else { sk->sk_err = ENETDOWN; @@ -2829,9 +2866,10 @@ } out_unlock: + rcu_read_unlock(); spin_unlock(&po->bind_lock); release_sock(sk); - return 0; + return ret; } /* @@ -2843,8 +2881,6 @@ { struct sock *sk = sock->sk; char name[15]; - struct net_device *dev; - int err = -ENODEV; /* * Check legality @@ -2854,19 +2890,13 @@ return -EINVAL; strlcpy(name, uaddr->sa_data, sizeof(name)); - dev = dev_get_by_name(sock_net(sk), name); - if (dev) - err = packet_do_bind(sk, dev, pkt_sk(sk)->num); - return err; + return packet_do_bind(sk, name, 0, pkt_sk(sk)->num); } static int packet_bind(struct socket *sock, struct sockaddr *uaddr, int addr_len) { struct sockaddr_ll *sll = (struct sockaddr_ll *)uaddr; struct sock *sk = sock->sk; - struct net_device *dev = NULL; - int err; - /* * Check legality @@ -2877,16 +2907,8 @@ if (sll->sll_family != AF_PACKET) return -EINVAL; - if (sll->sll_ifindex) { - err = -ENODEV; - dev = dev_get_by_index(sock_net(sk), sll->sll_ifindex); - if (dev == NULL) - goto out; - } - err = packet_do_bind(sk, dev, sll->sll_protocol ? : pkt_sk(sk)->num); - -out: - return err; + return packet_do_bind(sk, NULL, sll->sll_ifindex, + sll->sll_protocol ? : pkt_sk(sk)->num); } static struct proto packet_proto = { @@ -3042,9 +3064,9 @@ /* This is a hint as to how much should be linear. */ vnet_hdr.hdr_len = - __cpu_to_virtio16(false, skb_headlen(skb)); + __cpu_to_virtio16(vio_le(), skb_headlen(skb)); vnet_hdr.gso_size = - __cpu_to_virtio16(false, sinfo->gso_size); + __cpu_to_virtio16(vio_le(), sinfo->gso_size); if (sinfo->gso_type & SKB_GSO_TCPV4) vnet_hdr.gso_type = VIRTIO_NET_HDR_GSO_TCPV4; else if (sinfo->gso_type & SKB_GSO_TCPV6) @@ -3062,9 +3084,9 @@ if (skb->ip_summed == CHECKSUM_PARTIAL) { vnet_hdr.flags = VIRTIO_NET_HDR_F_NEEDS_CSUM; - vnet_hdr.csum_start = __cpu_to_virtio16(false, + vnet_hdr.csum_start = __cpu_to_virtio16(vio_le(), skb_checksum_start_offset(skb)); - vnet_hdr.csum_offset = __cpu_to_virtio16(false, + vnet_hdr.csum_offset = __cpu_to_virtio16(vio_le(), skb->csum_offset); } else if (skb->ip_summed == CHECKSUM_UNNECESSARY) { vnet_hdr.flags = VIRTIO_NET_HDR_F_DATA_VALID; --- linux-raspi2-4.2.0.orig/net/rds/ib_send.c +++ linux-raspi2-4.2.0/net/rds/ib_send.c @@ -510,7 +510,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-raspi2-4.2.0.orig/net/rds/send.c +++ linux-raspi2-4.2.0/net/rds/send.c @@ -986,11 +986,13 @@ release_sock(sk); } - /* racing with another thread binding seems ok here */ + lock_sock(sk); if (daddr == 0 || rs->rs_bound_addr == 0) { + release_sock(sk); ret = -ENOTCONN; /* XXX not a great errno */ goto out; } + release_sock(sk); /* size of rm including all sgs */ ret = rds_rm_size(msg, payload_len); --- linux-raspi2-4.2.0.orig/net/rds/tcp_recv.c +++ linux-raspi2-4.2.0/net/rds/tcp_recv.c @@ -214,8 +214,15 @@ } to_copy = min(tc->t_tinc_data_rem, left); - pskb_pull(clone, offset); - pskb_trim(clone, to_copy); + if (!pskb_pull(clone, offset) || + pskb_trim(clone, to_copy)) { + pr_warn("rds_tcp_data_recv: pull/trim failed " + "left %zu data_rem %zu skb_len %d\n", + left, tc->t_tinc_data_rem, skb->len); + kfree_skb(clone); + desc->error = -ENOMEM; + goto out; + } skb_queue_tail(&tinc->ti_skb_list, clone); rdsdebug("skb %p data %p len %d off %u to_copy %zu -> " --- linux-raspi2-4.2.0.orig/net/sched/act_mirred.c +++ linux-raspi2-4.2.0/net/sched/act_mirred.c @@ -168,6 +168,7 @@ skb2->skb_iif = skb->dev->ifindex; skb2->dev = dev; + skb_sender_cpu_clear(skb2); err = dev_queue_xmit(skb2); out: --- linux-raspi2-4.2.0.orig/net/sched/cls_flow.c +++ linux-raspi2-4.2.0/net/sched/cls_flow.c @@ -301,7 +301,7 @@ keymask = f->keymask; if (keymask & FLOW_KEYS_NEEDED) - skb_flow_dissect_flow_keys(skb, &flow_keys); + skb_flow_dissect_flow_keys(skb, &flow_keys, 0); for (n = 0; n < f->nkeys; n++) { key = ffs(keymask) - 1; --- linux-raspi2-4.2.0.orig/net/sched/cls_flower.c +++ linux-raspi2-4.2.0/net/sched/cls_flower.c @@ -129,7 +129,7 @@ * so do it rather here. */ skb_key.basic.n_proto = skb->protocol; - skb_flow_dissect(skb, &head->dissector, &skb_key); + skb_flow_dissect(skb, &head->dissector, &skb_key, 0); fl_set_masked_key(&skb_mkey, &skb_key, &head->mask); --- linux-raspi2-4.2.0.orig/net/sched/cls_fw.c +++ linux-raspi2-4.2.0/net/sched/cls_fw.c @@ -33,7 +33,6 @@ struct fw_head { u32 mask; - bool mask_set; struct fw_filter __rcu *ht[HTSIZE]; struct rcu_head rcu; }; @@ -84,7 +83,7 @@ } } } else { - /* old method */ + /* Old method: classify the packet using its skb mark. */ if (id && (TC_H_MAJ(id) == 0 || !(TC_H_MAJ(id ^ tp->q->handle)))) { res->classid = id; @@ -114,14 +113,9 @@ static int fw_init(struct tcf_proto *tp) { - struct fw_head *head; - - head = kzalloc(sizeof(struct fw_head), GFP_KERNEL); - if (head == NULL) - return -ENOBUFS; - - head->mask_set = false; - rcu_assign_pointer(tp->root, head); + /* We don't allocate fw_head here, because in the old method + * we don't need it at all. + */ return 0; } @@ -252,7 +246,7 @@ int err; if (!opt) - return handle ? -EINVAL : 0; + return handle ? -EINVAL : 0; /* Succeed if it is old method. */ err = nla_parse_nested(tb, TCA_FW_MAX, opt, fw_policy); if (err < 0) @@ -302,11 +296,17 @@ if (!handle) return -EINVAL; - if (!head->mask_set) { - head->mask = 0xFFFFFFFF; + if (!head) { + u32 mask = 0xFFFFFFFF; if (tb[TCA_FW_MASK]) - head->mask = nla_get_u32(tb[TCA_FW_MASK]); - head->mask_set = true; + mask = nla_get_u32(tb[TCA_FW_MASK]); + + head = kzalloc(sizeof(*head), GFP_KERNEL); + if (!head) + return -ENOBUFS; + head->mask = mask; + + rcu_assign_pointer(tp->root, head); } f = kzalloc(sizeof(struct fw_filter), GFP_KERNEL); --- linux-raspi2-4.2.0.orig/net/sched/sch_api.c +++ linux-raspi2-4.2.0/net/sched/sch_api.c @@ -253,7 +253,8 @@ } /* We know handle. Find qdisc among all qdisc's attached to device - (root qdisc, all its children, children of children etc.) + * (root qdisc, all its children, children of children etc.) + * Note: caller either uses rtnl or rcu_read_lock() */ static struct Qdisc *qdisc_match_from_root(struct Qdisc *root, u32 handle) @@ -264,7 +265,7 @@ root->handle == handle) return root; - list_for_each_entry(q, &root->list, list) { + list_for_each_entry_rcu(q, &root->list, list) { if (q->handle == handle) return q; } @@ -277,15 +278,18 @@ struct Qdisc *root = qdisc_dev(q)->qdisc; WARN_ON_ONCE(root == &noop_qdisc); - list_add_tail(&q->list, &root->list); + ASSERT_RTNL(); + list_add_tail_rcu(&q->list, &root->list); } } EXPORT_SYMBOL(qdisc_list_add); void qdisc_list_del(struct Qdisc *q) { - if ((q->parent != TC_H_ROOT) && !(q->flags & TCQ_F_INGRESS)) - list_del(&q->list); + if ((q->parent != TC_H_ROOT) && !(q->flags & TCQ_F_INGRESS)) { + ASSERT_RTNL(); + list_del_rcu(&q->list); + } } EXPORT_SYMBOL(qdisc_list_del); @@ -750,14 +754,18 @@ if (n == 0) return; drops = max_t(int, n, 0); + rcu_read_lock(); while ((parentid = sch->parent)) { if (TC_H_MAJ(parentid) == TC_H_MAJ(TC_H_INGRESS)) - return; + break; + if (sch->flags & TCQ_F_NOPARENT) + break; + /* TODO: perform the search on a per txq basis */ sch = qdisc_lookup(qdisc_dev(sch), TC_H_MAJ(parentid)); if (sch == NULL) { - WARN_ON(parentid != TC_H_ROOT); - return; + WARN_ON_ONCE(parentid != TC_H_ROOT); + break; } cops = sch->ops->cl_ops; if (cops->qlen_notify) { @@ -768,6 +776,7 @@ sch->q.qlen -= n; __qdisc_qstats_drop(sch, drops); } + rcu_read_unlock(); } EXPORT_SYMBOL(qdisc_tree_decrease_qlen); --- linux-raspi2-4.2.0.orig/net/sched/sch_choke.c +++ linux-raspi2-4.2.0/net/sched/sch_choke.c @@ -170,13 +170,13 @@ if (!choke_skb_cb(skb1)->keys_valid) { choke_skb_cb(skb1)->keys_valid = 1; - skb_flow_dissect_flow_keys(skb1, &temp); + skb_flow_dissect_flow_keys(skb1, &temp, 0); make_flow_keys_digest(&choke_skb_cb(skb1)->keys, &temp); } if (!choke_skb_cb(skb2)->keys_valid) { choke_skb_cb(skb2)->keys_valid = 1; - skb_flow_dissect_flow_keys(skb2, &temp); + skb_flow_dissect_flow_keys(skb2, &temp, 0); make_flow_keys_digest(&choke_skb_cb(skb2)->keys, &temp); } --- linux-raspi2-4.2.0.orig/net/sched/sch_generic.c +++ linux-raspi2-4.2.0/net/sched/sch_generic.c @@ -743,7 +743,7 @@ return; } if (!netif_is_multiqueue(dev)) - qdisc->flags |= TCQ_F_ONETXQUEUE; + qdisc->flags |= TCQ_F_ONETXQUEUE | TCQ_F_NOPARENT; } dev_queue->qdisc_sleeping = qdisc; } --- linux-raspi2-4.2.0.orig/net/sched/sch_mq.c +++ linux-raspi2-4.2.0/net/sched/sch_mq.c @@ -63,7 +63,7 @@ if (qdisc == NULL) goto err; priv->qdiscs[ntx] = qdisc; - qdisc->flags |= TCQ_F_ONETXQUEUE; + qdisc->flags |= TCQ_F_ONETXQUEUE | TCQ_F_NOPARENT; } sch->flags |= TCQ_F_MQROOT; @@ -156,7 +156,7 @@ *old = dev_graft_qdisc(dev_queue, new); if (new) - new->flags |= TCQ_F_ONETXQUEUE; + new->flags |= TCQ_F_ONETXQUEUE | TCQ_F_NOPARENT; if (dev->flags & IFF_UP) dev_activate(dev); return 0; --- linux-raspi2-4.2.0.orig/net/sched/sch_mqprio.c +++ linux-raspi2-4.2.0/net/sched/sch_mqprio.c @@ -132,7 +132,7 @@ goto err; } priv->qdiscs[i] = qdisc; - qdisc->flags |= TCQ_F_ONETXQUEUE; + qdisc->flags |= TCQ_F_ONETXQUEUE | TCQ_F_NOPARENT; } /* If the mqprio options indicate that hardware should own @@ -209,7 +209,7 @@ *old = dev_graft_qdisc(dev_queue, new); if (new) - new->flags |= TCQ_F_ONETXQUEUE; + new->flags |= TCQ_F_ONETXQUEUE | TCQ_F_NOPARENT; if (dev->flags & IFF_UP) dev_activate(dev); --- linux-raspi2-4.2.0.orig/net/sctp/auth.c +++ linux-raspi2-4.2.0/net/sctp/auth.c @@ -809,8 +809,8 @@ if (!has_sha1) return -EINVAL; - memcpy(ep->auth_hmacs_list->hmac_ids, &hmacs->shmac_idents[0], - hmacs->shmac_num_idents * sizeof(__u16)); + for (i = 0; i < hmacs->shmac_num_idents; i++) + ep->auth_hmacs_list->hmac_ids[i] = htons(hmacs->shmac_idents[i]); ep->auth_hmacs_list->param_hdr.length = htons(sizeof(sctp_paramhdr_t) + hmacs->shmac_num_idents * sizeof(__u16)); return 0; --- linux-raspi2-4.2.0.orig/net/sctp/ipv6.c +++ linux-raspi2-4.2.0/net/sctp/ipv6.c @@ -635,6 +635,7 @@ struct sock *newsk; struct ipv6_pinfo *newnp, *np = inet6_sk(sk); struct sctp6_sock *newsctp6sk; + struct ipv6_txoptions *opt; newsk = sk_alloc(sock_net(sk), PF_INET6, GFP_KERNEL, sk->sk_prot, 0); if (!newsk) @@ -654,6 +655,13 @@ memcpy(newnp, np, sizeof(struct ipv6_pinfo)); + rcu_read_lock(); + opt = rcu_dereference(np->opt); + if (opt) + opt = ipv6_dup_options(newsk, opt); + RCU_INIT_POINTER(newnp->opt, opt); + rcu_read_unlock(); + /* Initialize sk's sport, dport, rcv_saddr and daddr for getsockname() * and getpeername(). */ --- linux-raspi2-4.2.0.orig/net/sctp/protocol.c +++ linux-raspi2-4.2.0/net/sctp/protocol.c @@ -1166,7 +1166,7 @@ unregister_inetaddr_notifier(&sctp_inetaddr_notifier); } -static int __net_init sctp_net_init(struct net *net) +static int __net_init sctp_defaults_init(struct net *net) { int status; @@ -1259,12 +1259,6 @@ sctp_dbg_objcnt_init(net); - /* Initialize the control inode/socket for handling OOTB packets. */ - if ((status = sctp_ctl_sock_init(net))) { - pr_err("Failed to initialize the SCTP control sock\n"); - goto err_ctl_sock_init; - } - /* Initialize the local address list. */ INIT_LIST_HEAD(&net->sctp.local_addr_list); spin_lock_init(&net->sctp.local_addr_lock); @@ -1280,9 +1274,6 @@ return 0; -err_ctl_sock_init: - sctp_dbg_objcnt_exit(net); - sctp_proc_exit(net); err_init_proc: cleanup_sctp_mibs(net); err_init_mibs: @@ -1291,15 +1282,12 @@ return status; } -static void __net_exit sctp_net_exit(struct net *net) +static void __net_exit sctp_defaults_exit(struct net *net) { /* Free the local address list */ sctp_free_addr_wq(net); sctp_free_local_addr_list(net); - /* Free the control endpoint. */ - inet_ctl_sock_destroy(net->sctp.ctl_sock); - sctp_dbg_objcnt_exit(net); sctp_proc_exit(net); @@ -1307,9 +1295,32 @@ sctp_sysctl_net_unregister(net); } -static struct pernet_operations sctp_net_ops = { - .init = sctp_net_init, - .exit = sctp_net_exit, +static struct pernet_operations sctp_defaults_ops = { + .init = sctp_defaults_init, + .exit = sctp_defaults_exit, +}; + +static int __net_init sctp_ctrlsock_init(struct net *net) +{ + int status; + + /* Initialize the control inode/socket for handling OOTB packets. */ + status = sctp_ctl_sock_init(net); + if (status) + pr_err("Failed to initialize the SCTP control sock\n"); + + return status; +} + +static void __net_init sctp_ctrlsock_exit(struct net *net) +{ + /* Free the control endpoint. */ + inet_ctl_sock_destroy(net->sctp.ctl_sock); +} + +static struct pernet_operations sctp_ctrlsock_ops = { + .init = sctp_ctrlsock_init, + .exit = sctp_ctrlsock_exit, }; /* Initialize the universe into something sensible. */ @@ -1442,8 +1453,11 @@ sctp_v4_pf_init(); sctp_v6_pf_init(); - status = sctp_v4_protosw_init(); + status = register_pernet_subsys(&sctp_defaults_ops); + if (status) + goto err_register_defaults; + status = sctp_v4_protosw_init(); if (status) goto err_protosw_init; @@ -1451,9 +1465,9 @@ if (status) goto err_v6_protosw_init; - status = register_pernet_subsys(&sctp_net_ops); + status = register_pernet_subsys(&sctp_ctrlsock_ops); if (status) - goto err_register_pernet_subsys; + goto err_register_ctrlsock; status = sctp_v4_add_protocol(); if (status) @@ -1469,12 +1483,14 @@ err_v6_add_protocol: sctp_v4_del_protocol(); err_add_protocol: - unregister_pernet_subsys(&sctp_net_ops); -err_register_pernet_subsys: + unregister_pernet_subsys(&sctp_ctrlsock_ops); +err_register_ctrlsock: sctp_v6_protosw_exit(); err_v6_protosw_init: sctp_v4_protosw_exit(); err_protosw_init: + unregister_pernet_subsys(&sctp_defaults_ops); +err_register_defaults: sctp_v4_pf_exit(); sctp_v6_pf_exit(); sctp_sysctl_unregister(); @@ -1507,12 +1523,14 @@ sctp_v6_del_protocol(); sctp_v4_del_protocol(); - unregister_pernet_subsys(&sctp_net_ops); + unregister_pernet_subsys(&sctp_ctrlsock_ops); /* Free protosw registrations */ sctp_v6_protosw_exit(); sctp_v4_protosw_exit(); + unregister_pernet_subsys(&sctp_defaults_ops); + /* Unregister with socket layer. */ sctp_v6_pf_exit(); sctp_v4_pf_exit(); --- linux-raspi2-4.2.0.orig/net/sctp/sm_make_chunk.c +++ linux-raspi2-4.2.0/net/sctp/sm_make_chunk.c @@ -1652,7 +1652,7 @@ /* Set an expiration time for the cookie. */ cookie->c.expiration = ktime_add(asoc->cookie_life, - ktime_get()); + ktime_get_real()); /* Copy the peer's init packet. */ memcpy(&cookie->c.peer_init[0], init_chunk->chunk_hdr, @@ -1780,7 +1780,7 @@ if (sock_flag(ep->base.sk, SOCK_TIMESTAMP)) kt = skb_get_ktime(skb); else - kt = ktime_get(); + kt = ktime_get_real(); if (!asoc && ktime_before(bear_cookie->expiration, kt)) { /* --- linux-raspi2-4.2.0.orig/net/sctp/socket.c +++ linux-raspi2-4.2.0/net/sctp/socket.c @@ -7163,6 +7163,7 @@ newsk->sk_type = sk->sk_type; newsk->sk_bound_dev_if = sk->sk_bound_dev_if; newsk->sk_flags = sk->sk_flags; + newsk->sk_tsflags = sk->sk_tsflags; newsk->sk_no_check_tx = sk->sk_no_check_tx; newsk->sk_no_check_rx = sk->sk_no_check_rx; newsk->sk_reuse = sk->sk_reuse; @@ -7195,6 +7196,9 @@ newinet->mc_ttl = 1; newinet->mc_index = 0; newinet->mc_list = NULL; + + if (newsk->sk_flags & SK_FLAGS_TIMESTAMP) + net_enable_timestamp(); } static inline void sctp_copy_descendant(struct sock *sk_to, @@ -7375,6 +7379,13 @@ #if IS_ENABLED(CONFIG_IPV6) +#include +static void sctp_v6_destroy_sock(struct sock *sk) +{ + sctp_destroy_sock(sk); + inet6_destroy_sock(sk); +} + struct proto sctpv6_prot = { .name = "SCTPv6", .owner = THIS_MODULE, @@ -7384,7 +7395,7 @@ .accept = sctp_accept, .ioctl = sctp_ioctl, .init = sctp_init_sock, - .destroy = sctp_destroy_sock, + .destroy = sctp_v6_destroy_sock, .shutdown = sctp_shutdown, .setsockopt = sctp_setsockopt, .getsockopt = sctp_getsockopt, --- linux-raspi2-4.2.0.orig/net/socket.c +++ linux-raspi2-4.2.0/net/socket.c @@ -1702,6 +1702,7 @@ msg.msg_name = addr ? (struct sockaddr *)&address : NULL; /* We assume all kernel code knows the size of sockaddr_storage */ msg.msg_namelen = 0; + msg.msg_iocb = NULL; if (sock->file->f_flags & O_NONBLOCK) flags |= MSG_DONTWAIT; err = sock_recvmsg(sock, &msg, iov_iter_count(&msg.msg_iter), flags); --- linux-raspi2-4.2.0.orig/net/sunrpc/auth_gss/auth_gss.c +++ linux-raspi2-4.2.0/net/sunrpc/auth_gss/auth_gss.c @@ -1411,17 +1411,16 @@ { struct gss_cred *gss_cred = container_of(rc, struct gss_cred, gc_base); struct gss_cl_ctx *ctx; - unsigned long now = jiffies; - unsigned long expire; + unsigned long timeout = jiffies + (gss_key_expire_timeo * HZ); + int ret = 0; rcu_read_lock(); ctx = rcu_dereference(gss_cred->gc_ctx); - if (ctx) - expire = ctx->gc_expiry - (gss_key_expire_timeo * HZ); + if (!ctx || time_after(timeout, ctx->gc_expiry)) + ret = -EACCES; rcu_read_unlock(); - if (!ctx || time_after(now, expire)) - return -EACCES; - return 0; + + return ret; } static int --- linux-raspi2-4.2.0.orig/net/sunrpc/xprt.c +++ linux-raspi2-4.2.0/net/sunrpc/xprt.c @@ -614,6 +614,7 @@ clear_bit(XPRT_CLOSE_WAIT, &xprt->state); xprt->ops->close(xprt); xprt_release_write(xprt, NULL); + wake_up_bit(&xprt->state, XPRT_LOCKED); } /** @@ -723,6 +724,7 @@ xprt->ops->release_xprt(xprt, NULL); out: spin_unlock_bh(&xprt->transport_lock); + wake_up_bit(&xprt->state, XPRT_LOCKED); } /** @@ -1394,6 +1396,10 @@ static void xprt_destroy(struct rpc_xprt *xprt) { dprintk("RPC: destroying transport %p\n", xprt); + + /* Exclude transport connect/disconnect handlers */ + wait_on_bit_lock(&xprt->state, XPRT_LOCKED, TASK_UNINTERRUPTIBLE); + del_timer_sync(&xprt->timer); rpc_xprt_debugfs_unregister(xprt); --- linux-raspi2-4.2.0.orig/net/sunrpc/xprtrdma/svc_rdma_recvfrom.c +++ linux-raspi2-4.2.0/net/sunrpc/xprtrdma/svc_rdma_recvfrom.c @@ -146,7 +146,8 @@ ctxt->read_hdr = head; pages_needed = min_t(int, pages_needed, rdma_read_max_sge(xprt, pages_needed)); - read = min_t(int, pages_needed << PAGE_SHIFT, rs_length); + read = min_t(int, (pages_needed << PAGE_SHIFT) - *page_offset, + rs_length); for (pno = 0; pno < pages_needed; pno++) { int len = min_t(int, rs_length, PAGE_SIZE - pg_off); @@ -245,7 +246,8 @@ ctxt->direction = DMA_FROM_DEVICE; ctxt->frmr = frmr; pages_needed = min_t(int, pages_needed, xprt->sc_frmr_pg_list_len); - read = min_t(int, pages_needed << PAGE_SHIFT, rs_length); + read = min_t(int, (pages_needed << PAGE_SHIFT) - *page_offset, + rs_length); frmr->kva = page_address(rqstp->rq_arg.pages[pg_no]); frmr->direction = DMA_FROM_DEVICE; --- linux-raspi2-4.2.0.orig/net/sunrpc/xprtrdma/svc_rdma_sendto.c +++ linux-raspi2-4.2.0/net/sunrpc/xprtrdma/svc_rdma_sendto.c @@ -384,6 +384,7 @@ int byte_count) { struct ib_send_wr send_wr; + u32 xdr_off; int sge_no; int sge_bytes; int page_no; @@ -418,8 +419,8 @@ ctxt->direction = DMA_TO_DEVICE; /* Map the payload indicated by 'byte_count' */ + xdr_off = 0; for (sge_no = 1; byte_count && sge_no < vec->count; sge_no++) { - int xdr_off = 0; sge_bytes = min_t(size_t, vec->sge[sge_no].iov_len, byte_count); byte_count -= sge_bytes; ctxt->sge[sge_no].addr = @@ -457,6 +458,13 @@ } rqstp->rq_next_page = rqstp->rq_respages + 1; + /* The loop above bumps sc_dma_used for each sge. The + * xdr_buf.tail gets a separate sge, but resides in the + * same page as xdr_buf.head. Don't count it twice. + */ + if (sge_no > ctxt->count) + atomic_dec(&rdma->sc_dma_used); + if (sge_no > rdma->sc_max_sge) { pr_err("svcrdma: Too many sges (%d)\n", sge_no); goto err; --- linux-raspi2-4.2.0.orig/net/sunrpc/xprtrdma/svc_rdma_transport.c +++ linux-raspi2-4.2.0/net/sunrpc/xprtrdma/svc_rdma_transport.c @@ -91,7 +91,7 @@ .xcl_name = "rdma", .xcl_owner = THIS_MODULE, .xcl_ops = &svc_rdma_ops, - .xcl_max_payload = RPCRDMA_MAXPAYLOAD, + .xcl_max_payload = RPCSVC_MAXPAYLOAD_RDMA, .xcl_ident = XPRT_TRANSPORT_RDMA, }; --- linux-raspi2-4.2.0.orig/net/sunrpc/xprtrdma/verbs.c +++ linux-raspi2-4.2.0/net/sunrpc/xprtrdma/verbs.c @@ -157,59 +157,41 @@ } } -static int -rpcrdma_sendcq_poll(struct ib_cq *cq, struct rpcrdma_ep *ep) +/* The common case is a single send completion is waiting. By + * passing two WC entries to ib_poll_cq, a return code of 1 + * means there is exactly one WC waiting and no more. We don't + * have to invoke ib_poll_cq again to know that the CQ has been + * properly drained. + */ +static void +rpcrdma_sendcq_poll(struct ib_cq *cq) { - struct ib_wc *wcs; - int budget, count, rc; + struct ib_wc *pos, wcs[2]; + int count, rc; - budget = RPCRDMA_WC_BUDGET / RPCRDMA_POLLSIZE; do { - wcs = ep->rep_send_wcs; + pos = wcs; - rc = ib_poll_cq(cq, RPCRDMA_POLLSIZE, wcs); - if (rc <= 0) - return rc; + rc = ib_poll_cq(cq, ARRAY_SIZE(wcs), pos); + if (rc < 0) + break; count = rc; while (count-- > 0) - rpcrdma_sendcq_process_wc(wcs++); - } while (rc == RPCRDMA_POLLSIZE && --budget); - return 0; + rpcrdma_sendcq_process_wc(pos++); + } while (rc == ARRAY_SIZE(wcs)); + return; } -/* - * Handle send, fast_reg_mr, and local_inv completions. - * - * Send events are typically suppressed and thus do not result - * in an upcall. Occasionally one is signaled, however. This - * prevents the provider's completion queue from wrapping and - * losing a completion. +/* Handle provider send completion upcalls. */ static void rpcrdma_sendcq_upcall(struct ib_cq *cq, void *cq_context) { - struct rpcrdma_ep *ep = (struct rpcrdma_ep *)cq_context; - int rc; - - rc = rpcrdma_sendcq_poll(cq, ep); - if (rc) { - dprintk("RPC: %s: ib_poll_cq failed: %i\n", - __func__, rc); - return; - } - - rc = ib_req_notify_cq(cq, - IB_CQ_NEXT_COMP | IB_CQ_REPORT_MISSED_EVENTS); - if (rc == 0) - return; - if (rc < 0) { - dprintk("RPC: %s: ib_req_notify_cq failed: %i\n", - __func__, rc); - return; - } - - rpcrdma_sendcq_poll(cq, ep); + do { + rpcrdma_sendcq_poll(cq); + } while (ib_req_notify_cq(cq, IB_CQ_NEXT_COMP | + IB_CQ_REPORT_MISSED_EVENTS) > 0); } static void @@ -246,69 +228,43 @@ goto out_schedule; } -static int -rpcrdma_recvcq_poll(struct ib_cq *cq, struct rpcrdma_ep *ep) +/* The wc array is on stack: automatic memory is always CPU-local. + * + * struct ib_wc is 64 bytes, making the poll array potentially + * large. But this is at the bottom of the call chain. Further + * substantial work is done in another thread. + */ +static void +rpcrdma_recvcq_poll(struct ib_cq *cq) { - struct list_head sched_list; - struct ib_wc *wcs; - int budget, count, rc; + struct ib_wc *pos, wcs[4]; + LIST_HEAD(sched_list); + int count, rc; - INIT_LIST_HEAD(&sched_list); - budget = RPCRDMA_WC_BUDGET / RPCRDMA_POLLSIZE; do { - wcs = ep->rep_recv_wcs; + pos = wcs; - rc = ib_poll_cq(cq, RPCRDMA_POLLSIZE, wcs); - if (rc <= 0) - goto out_schedule; + rc = ib_poll_cq(cq, ARRAY_SIZE(wcs), pos); + if (rc < 0) + break; count = rc; while (count-- > 0) - rpcrdma_recvcq_process_wc(wcs++, &sched_list); - } while (rc == RPCRDMA_POLLSIZE && --budget); - rc = 0; + rpcrdma_recvcq_process_wc(pos++, &sched_list); + } while (rc == ARRAY_SIZE(wcs)); -out_schedule: rpcrdma_schedule_tasklet(&sched_list); - return rc; } -/* - * Handle receive completions. - * - * It is reentrant but processes single events in order to maintain - * ordering of receives to keep server credits. - * - * It is the responsibility of the scheduled tasklet to return - * recv buffers to the pool. NOTE: this affects synchronization of - * connection shutdown. That is, the structures required for - * the completion of the reply handler must remain intact until - * all memory has been reclaimed. +/* Handle provider receive completion upcalls. */ static void rpcrdma_recvcq_upcall(struct ib_cq *cq, void *cq_context) { - struct rpcrdma_ep *ep = (struct rpcrdma_ep *)cq_context; - int rc; - - rc = rpcrdma_recvcq_poll(cq, ep); - if (rc) { - dprintk("RPC: %s: ib_poll_cq failed: %i\n", - __func__, rc); - return; - } - - rc = ib_req_notify_cq(cq, - IB_CQ_NEXT_COMP | IB_CQ_REPORT_MISSED_EVENTS); - if (rc == 0) - return; - if (rc < 0) { - dprintk("RPC: %s: ib_req_notify_cq failed: %i\n", - __func__, rc); - return; - } - - rpcrdma_recvcq_poll(cq, ep); + do { + rpcrdma_recvcq_poll(cq); + } while (ib_req_notify_cq(cq, IB_CQ_NEXT_COMP | + IB_CQ_REPORT_MISSED_EVENTS) > 0); } static void @@ -686,7 +642,7 @@ cq_attr.cqe = ep->rep_attr.cap.max_send_wr + 1; sendcq = ib_create_cq(ia->ri_device, rpcrdma_sendcq_upcall, - rpcrdma_cq_async_error_upcall, ep, &cq_attr); + rpcrdma_cq_async_error_upcall, NULL, &cq_attr); if (IS_ERR(sendcq)) { rc = PTR_ERR(sendcq); dprintk("RPC: %s: failed to create send CQ: %i\n", @@ -703,7 +659,7 @@ cq_attr.cqe = ep->rep_attr.cap.max_recv_wr + 1; recvcq = ib_create_cq(ia->ri_device, rpcrdma_recvcq_upcall, - rpcrdma_cq_async_error_upcall, ep, &cq_attr); + rpcrdma_cq_async_error_upcall, NULL, &cq_attr); if (IS_ERR(recvcq)) { rc = PTR_ERR(recvcq); dprintk("RPC: %s: failed to create recv CQ: %i\n", --- linux-raspi2-4.2.0.orig/net/sunrpc/xprtrdma/xprt_rdma.h +++ linux-raspi2-4.2.0/net/sunrpc/xprtrdma/xprt_rdma.h @@ -51,7 +51,6 @@ #include /* rpc_xprt */ #include /* RPC/RDMA protocol */ #include /* xprt parameters */ -#include /* RPCSVC_MAXPAYLOAD */ #define RDMA_RESOLVE_TIMEOUT (5000) /* 5 seconds */ #define RDMA_CONNECT_RETRY_MAX (2) /* retries if no listener backlog */ @@ -80,9 +79,6 @@ * RDMA Endpoint -- one per transport instance */ -#define RPCRDMA_WC_BUDGET (128) -#define RPCRDMA_POLLSIZE (16) - struct rpcrdma_ep { atomic_t rep_cqcount; int rep_cqinit; @@ -93,8 +89,6 @@ struct rdma_conn_param rep_remote_cma; struct sockaddr_storage rep_remote_addr; struct delayed_work rep_connect_worker; - struct ib_wc rep_send_wcs[RPCRDMA_POLLSIZE]; - struct ib_wc rep_recv_wcs[RPCRDMA_POLLSIZE]; }; /* --- linux-raspi2-4.2.0.orig/net/sunrpc/xprtsock.c +++ linux-raspi2-4.2.0/net/sunrpc/xprtsock.c @@ -829,6 +829,7 @@ sk->sk_user_data = NULL; xs_restore_old_callbacks(transport, sk); + xprt_clear_connected(xprt); write_unlock_bh(&sk->sk_callback_lock); xs_sock_reset_connection_flags(xprt); @@ -1432,6 +1433,7 @@ static void xs_tcp_state_change(struct sock *sk) { struct rpc_xprt *xprt; + struct sock_xprt *transport; read_lock_bh(&sk->sk_callback_lock); if (!(xprt = xprt_from_sock(sk))) @@ -1443,13 +1445,12 @@ sock_flag(sk, SOCK_ZAPPED), sk->sk_shutdown); + transport = container_of(xprt, struct sock_xprt, xprt); trace_rpc_socket_state_change(xprt, sk->sk_socket); switch (sk->sk_state) { case TCP_ESTABLISHED: spin_lock(&xprt->transport_lock); if (!xprt_test_and_set_connected(xprt)) { - struct sock_xprt *transport = container_of(xprt, - struct sock_xprt, xprt); /* Reset TCP record info */ transport->tcp_offset = 0; @@ -1458,6 +1459,8 @@ transport->tcp_flags = TCP_RCV_COPY_FRAGHDR | TCP_RCV_COPY_XID; xprt->connect_cookie++; + clear_bit(XPRT_SOCK_CONNECTING, &transport->sock_state); + xprt_clear_connecting(xprt); xprt_wake_pending_tasks(xprt, -EAGAIN); } @@ -1493,6 +1496,9 @@ smp_mb__after_atomic(); break; case TCP_CLOSE: + if (test_and_clear_bit(XPRT_SOCK_CONNECTING, + &transport->sock_state)) + xprt_clear_connecting(xprt); xs_sock_mark_closed(xprt); } out: @@ -2176,6 +2182,7 @@ /* Tell the socket layer to start connecting... */ xprt->stat.connect_count++; xprt->stat.connect_start = jiffies; + set_bit(XPRT_SOCK_CONNECTING, &transport->sock_state); ret = kernel_connect(sock, xs_addr(xprt), xprt->addrlen, O_NONBLOCK); switch (ret) { case 0: @@ -2237,7 +2244,6 @@ case -EINPROGRESS: case -EALREADY: xprt_unlock_connect(xprt, transport); - xprt_clear_connecting(xprt); return; case -EINVAL: /* Happens, for instance, if the user specified a link @@ -2279,13 +2285,14 @@ WARN_ON_ONCE(!xprt_lock_connect(xprt, task, transport)); - /* Start by resetting any existing state */ - xs_reset_transport(transport); - - if (transport->sock != NULL && !RPC_IS_SOFTCONN(task)) { + if (transport->sock != NULL) { dprintk("RPC: xs_connect delayed xprt %p for %lu " "seconds\n", xprt, xprt->reestablish_timeout / HZ); + + /* Start by resetting any existing state */ + xs_reset_transport(transport); + queue_delayed_work(rpciod_workqueue, &transport->connect_worker, xprt->reestablish_timeout); --- linux-raspi2-4.2.0.orig/net/tipc/msg.c +++ linux-raspi2-4.2.0/net/tipc/msg.c @@ -121,7 +121,7 @@ { struct sk_buff *head = *headbuf; struct sk_buff *frag = *buf; - struct sk_buff *tail; + struct sk_buff *tail = NULL; struct tipc_msg *msg; u32 fragid; int delta; @@ -141,9 +141,15 @@ if (unlikely(skb_unclone(frag, GFP_ATOMIC))) goto err; head = *headbuf = frag; - skb_frag_list_init(head); - TIPC_SKB_CB(head)->tail = NULL; *buf = NULL; + TIPC_SKB_CB(head)->tail = NULL; + if (skb_is_nonlinear(head)) { + skb_walk_frags(head, tail) { + TIPC_SKB_CB(head)->tail = tail; + } + } else { + skb_frag_list_init(head); + } return 0; } --- linux-raspi2-4.2.0.orig/net/tipc/msg.h +++ linux-raspi2-4.2.0/net/tipc/msg.h @@ -357,7 +357,7 @@ if (likely((usr <= TIPC_CRITICAL_IMPORTANCE) && !msg_errcode(m))) return usr; if ((usr == MSG_FRAGMENTER) || (usr == MSG_BUNDLER)) - return msg_bits(m, 5, 13, 0x7); + return msg_bits(m, 9, 0, 0x7); return TIPC_SYSTEM_IMPORTANCE; } @@ -366,7 +366,7 @@ int usr = msg_user(m); if (likely((usr == MSG_FRAGMENTER) || (usr == MSG_BUNDLER))) - msg_set_bits(m, 5, 13, 0x7, i); + msg_set_bits(m, 9, 0, 0x7, i); else if (i < TIPC_SYSTEM_IMPORTANCE) msg_set_user(m, i); else --- linux-raspi2-4.2.0.orig/net/tipc/udp_media.c +++ linux-raspi2-4.2.0/net/tipc/udp_media.c @@ -48,6 +48,7 @@ #include #include "core.h" #include "bearer.h" +#include "msg.h" /* IANA assigned UDP port */ #define UDP_PORT_DEFAULT 6118 @@ -216,6 +217,10 @@ { struct udp_bearer *ub; struct tipc_bearer *b; + int usr = msg_user(buf_msg(skb)); + + if ((usr == LINK_PROTOCOL) || (usr == NAME_DISTRIBUTOR)) + skb_linearize(skb); ub = rcu_dereference_sk_user_data(sk); if (!ub) { --- linux-raspi2-4.2.0.orig/net/unix/af_unix.c +++ linux-raspi2-4.2.0/net/unix/af_unix.c @@ -326,6 +326,118 @@ return s; } +/* Support code for asymmetrically connected dgram sockets + * + * If a datagram socket is connected to a socket not itself connected + * to the first socket (eg, /dev/log), clients may only enqueue more + * messages if the present receive queue of the server socket is not + * "too large". This means there's a second writeability condition + * poll and sendmsg need to test. The dgram recv code will do a wake + * up on the peer_wait wait queue of a socket upon reception of a + * datagram which needs to be propagated to sleeping would-be writers + * since these might not have sent anything so far. This can't be + * accomplished via poll_wait because the lifetime of the server + * socket might be less than that of its clients if these break their + * association with it or if the server socket is closed while clients + * are still connected to it and there's no way to inform "a polling + * implementation" that it should let go of a certain wait queue + * + * In order to propagate a wake up, a wait_queue_t of the client + * socket is enqueued on the peer_wait queue of the server socket + * whose wake function does a wake_up on the ordinary client socket + * wait queue. This connection is established whenever a write (or + * poll for write) hit the flow control condition and broken when the + * association to the server socket is dissolved or after a wake up + * was relayed. + */ + +static int unix_dgram_peer_wake_relay(wait_queue_t *q, unsigned mode, int flags, + void *key) +{ + struct unix_sock *u; + wait_queue_head_t *u_sleep; + + u = container_of(q, struct unix_sock, peer_wake); + + __remove_wait_queue(&unix_sk(u->peer_wake.private)->peer_wait, + q); + u->peer_wake.private = NULL; + + /* relaying can only happen while the wq still exists */ + u_sleep = sk_sleep(&u->sk); + if (u_sleep) + wake_up_interruptible_poll(u_sleep, key); + + return 0; +} + +static int unix_dgram_peer_wake_connect(struct sock *sk, struct sock *other) +{ + struct unix_sock *u, *u_other; + int rc; + + u = unix_sk(sk); + u_other = unix_sk(other); + rc = 0; + spin_lock(&u_other->peer_wait.lock); + + if (!u->peer_wake.private) { + u->peer_wake.private = other; + __add_wait_queue(&u_other->peer_wait, &u->peer_wake); + + rc = 1; + } + + spin_unlock(&u_other->peer_wait.lock); + return rc; +} + +static void unix_dgram_peer_wake_disconnect(struct sock *sk, + struct sock *other) +{ + struct unix_sock *u, *u_other; + + u = unix_sk(sk); + u_other = unix_sk(other); + spin_lock(&u_other->peer_wait.lock); + + if (u->peer_wake.private == other) { + __remove_wait_queue(&u_other->peer_wait, &u->peer_wake); + u->peer_wake.private = NULL; + } + + spin_unlock(&u_other->peer_wait.lock); +} + +static void unix_dgram_peer_wake_disconnect_wakeup(struct sock *sk, + struct sock *other) +{ + unix_dgram_peer_wake_disconnect(sk, other); + wake_up_interruptible_poll(sk_sleep(sk), + POLLOUT | + POLLWRNORM | + POLLWRBAND); +} + +/* preconditions: + * - unix_peer(sk) == other + * - association is stable + */ +static int unix_dgram_peer_wake_me(struct sock *sk, struct sock *other) +{ + int connected; + + connected = unix_dgram_peer_wake_connect(sk, other); + + if (unix_recvq_full(other)) + return 1; + + if (connected) + unix_dgram_peer_wake_disconnect(sk, other); + + return 0; +} + static inline int unix_writable(struct sock *sk) { return (atomic_read(&sk->sk_wmem_alloc) << 2) <= sk->sk_sndbuf; @@ -430,6 +542,8 @@ skpair->sk_state_change(skpair); sk_wake_async(skpair, SOCK_WAKE_WAITD, POLL_HUP); } + + unix_dgram_peer_wake_disconnect(sk, skpair); sock_put(skpair); /* It may now die */ unix_peer(sk) = NULL; } @@ -440,6 +554,7 @@ if (state == TCP_LISTEN) unix_release_sock(skb->sk, 1); /* passed fds are erased in the kfree_skb hook */ + UNIXCB(skb).consumed = skb->len; kfree_skb(skb); } @@ -664,6 +779,7 @@ INIT_LIST_HEAD(&u->link); mutex_init(&u->readlock); /* single task reading lock */ init_waitqueue_head(&u->peer_wait); + init_waitqueue_func_entry(&u->peer_wake, unix_dgram_peer_wake_relay); unix_insert_socket(unix_sockets_unbound(sk), sk); out: if (sk == NULL) @@ -1031,6 +1147,8 @@ if (unix_peer(sk)) { struct sock *old_peer = unix_peer(sk); unix_peer(sk) = other; + unix_dgram_peer_wake_disconnect_wakeup(sk, old_peer); + unix_state_double_unlock(sk, other); if (other != old_peer) @@ -1432,6 +1550,14 @@ return err; } +static bool unix_passcred_enabled(const struct socket *sock, + const struct sock *other) +{ + return test_bit(SOCK_PASSCRED, &sock->flags) || + !other->sk_socket || + test_bit(SOCK_PASSCRED, &other->sk_socket->flags); +} + /* * Some apps rely on write() giving SCM_CREDENTIALS * We include credentials if source or destination socket @@ -1442,14 +1568,41 @@ { if (UNIXCB(skb).pid) return; - if (test_bit(SOCK_PASSCRED, &sock->flags) || - !other->sk_socket || - test_bit(SOCK_PASSCRED, &other->sk_socket->flags)) { + if (unix_passcred_enabled(sock, other)) { UNIXCB(skb).pid = get_pid(task_tgid(current)); current_uid_gid(&UNIXCB(skb).uid, &UNIXCB(skb).gid); } } +static int maybe_init_creds(struct scm_cookie *scm, + struct socket *socket, + const struct sock *other) +{ + int err; + struct msghdr msg = { .msg_controllen = 0 }; + + err = scm_send(socket, &msg, scm, false); + if (err) + return err; + + if (unix_passcred_enabled(socket, other)) { + scm->pid = get_pid(task_tgid(current)); + current_uid_gid(&scm->creds.uid, &scm->creds.gid); + } + return err; +} + +static bool unix_skb_scm_eq(struct sk_buff *skb, + struct scm_cookie *scm) +{ + const struct unix_skb_parms *u = &UNIXCB(skb); + + return u->pid == scm->pid && + uid_eq(u->uid, scm->creds.uid) && + gid_eq(u->gid, scm->creds.gid) && + unix_secdata_eq(scm, skb); +} + /* * Send AF_UNIX data. */ @@ -1470,6 +1623,7 @@ struct scm_cookie scm; int max_level; int data_len = 0; + int sk_locked; wait_for_unix_gc(); err = scm_send(sock, msg, &scm, false); @@ -1548,12 +1702,14 @@ goto out_free; } + sk_locked = 0; unix_state_lock(other); +restart_locked: err = -EPERM; if (!unix_may_send(sk, other)) goto out_unlock; - if (sock_flag(other, SOCK_DEAD)) { + if (unlikely(sock_flag(other, SOCK_DEAD))) { /* * Check with 1003.1g - what should * datagram error @@ -1561,10 +1717,14 @@ unix_state_unlock(other); sock_put(other); + if (!sk_locked) + unix_state_lock(sk); + err = 0; - unix_state_lock(sk); if (unix_peer(sk) == other) { unix_peer(sk) = NULL; + unix_dgram_peer_wake_disconnect_wakeup(sk, other); + unix_state_unlock(sk); unix_dgram_disconnected(sk, other); @@ -1590,21 +1750,38 @@ goto out_unlock; } - if (unix_peer(other) != sk && unix_recvq_full(other)) { - if (!timeo) { - err = -EAGAIN; - goto out_unlock; + if (unlikely(unix_peer(other) != sk && unix_recvq_full(other))) { + if (timeo) { + timeo = unix_wait_for_peer(other, timeo); + + err = sock_intr_errno(timeo); + if (signal_pending(current)) + goto out_free; + + goto restart; } - timeo = unix_wait_for_peer(other, timeo); + if (!sk_locked) { + unix_state_unlock(other); + unix_state_double_lock(sk, other); + } - err = sock_intr_errno(timeo); - if (signal_pending(current)) - goto out_free; + if (unix_peer(sk) != other || + unix_dgram_peer_wake_me(sk, other)) { + err = -EAGAIN; + sk_locked = 1; + goto out_unlock; + } - goto restart; + if (!sk_locked) { + sk_locked = 1; + goto restart_locked; + } } + if (unlikely(sk_locked)) + unix_state_unlock(sk); + if (sock_flag(other, SOCK_RCVTSTAMP)) __net_timestamp(skb); maybe_add_creds(skb, sock, other); @@ -1618,6 +1795,8 @@ return len; out_unlock: + if (sk_locked) + unix_state_unlock(sk); unix_state_unlock(other); out_free: kfree_skb(skb); @@ -1739,8 +1918,10 @@ static ssize_t unix_stream_sendpage(struct socket *socket, struct page *page, int offset, size_t size, int flags) { - int err = 0; - bool send_sigpipe = true; + int err; + bool send_sigpipe = false; + bool init_scm = true; + struct scm_cookie scm; struct sock *other, *sk = socket->sk; struct sk_buff *skb, *newskb = NULL, *tail = NULL; @@ -1758,7 +1939,7 @@ newskb = sock_alloc_send_pskb(sk, 0, 0, flags & MSG_DONTWAIT, &err, 0); if (!newskb) - return err; + goto err; } /* we must acquire readlock as we modify already present @@ -1767,12 +1948,12 @@ err = mutex_lock_interruptible(&unix_sk(other)->readlock); if (err) { err = flags & MSG_DONTWAIT ? -EAGAIN : -ERESTARTSYS; - send_sigpipe = false; goto err; } if (sk->sk_shutdown & SEND_SHUTDOWN) { err = -EPIPE; + send_sigpipe = true; goto err_unlock; } @@ -1781,23 +1962,34 @@ if (sock_flag(other, SOCK_DEAD) || other->sk_shutdown & RCV_SHUTDOWN) { err = -EPIPE; + send_sigpipe = true; goto err_state_unlock; } + if (init_scm) { + err = maybe_init_creds(&scm, socket, other); + if (err) + goto err_state_unlock; + init_scm = false; + } + skb = skb_peek_tail(&other->sk_receive_queue); if (tail && tail == skb) { skb = newskb; - } else if (!skb) { - if (newskb) + } else if (!skb || !unix_skb_scm_eq(skb, &scm)) { + if (newskb) { skb = newskb; - else + } else { + tail = skb; goto alloc_skb; + } } else if (newskb) { /* this is fast path, we don't necessarily need to * call to kfree_skb even though with newskb == NULL * this - does no harm */ consume_skb(newskb); + newskb = NULL; } if (skb_append_pagefrags(skb, page, offset, size)) { @@ -1810,14 +2002,20 @@ skb->truesize += size; atomic_add(size, &sk->sk_wmem_alloc); - if (newskb) + if (newskb) { + err = unix_scm_to_skb(&scm, skb, false); + if (err) + goto err_state_unlock; + spin_lock(&other->sk_receive_queue.lock); __skb_queue_tail(&other->sk_receive_queue, newskb); + spin_unlock(&other->sk_receive_queue.lock); + } unix_state_unlock(other); mutex_unlock(&unix_sk(other)->readlock); other->sk_data_ready(other); - + scm_destroy(&scm); return size; err_state_unlock: @@ -1828,6 +2026,8 @@ kfree_skb(newskb); if (send_sigpipe && !(flags & MSG_NOSIGNAL)) send_sig(SIGPIPE, current, 0); + if (!init_scm) + scm_destroy(&scm); return err; } @@ -2055,17 +2255,16 @@ /* Lock the socket to prevent queue disordering * while sleeps in memcpy_tomsg */ - err = mutex_lock_interruptible(&u->readlock); - if (unlikely(err)) { - /* recvmsg() in non blocking mode is supposed to return -EAGAIN - * sk_rcvtimeo is not honored by mutex_lock_interruptible() - */ - err = noblock ? -EAGAIN : -ERESTARTSYS; - goto out; - } + mutex_lock(&u->readlock); + + if (flags & MSG_PEEK) + skip = sk_peek_offset(sk, flags); + else + skip = 0; do { int chunk; + bool drop_skb; struct sk_buff *skb, *last; unix_state_lock(sk); @@ -2100,19 +2299,18 @@ timeo = unix_stream_data_wait(sk, timeo, last, last_len); - if (signal_pending(current) || - mutex_lock_interruptible(&u->readlock)) { + if (signal_pending(current)) { err = sock_intr_errno(timeo); goto out; } + mutex_lock(&u->readlock); continue; unlock: unix_state_unlock(sk); break; } - skip = sk_peek_offset(sk, flags); while (skip >= unix_skb_len(skb)) { skip -= unix_skb_len(skb); last = skb; @@ -2126,10 +2324,7 @@ if (check_creds) { /* Never glue messages from different writers */ - if ((UNIXCB(skb).pid != scm.pid) || - !uid_eq(UNIXCB(skb).uid, scm.creds.uid) || - !gid_eq(UNIXCB(skb).gid, scm.creds.gid) || - !unix_secdata_eq(&scm, skb)) + if (!unix_skb_scm_eq(skb, &scm)) break; } else if (test_bit(SOCK_PASSCRED, &sock->flags)) { /* Copy credentials */ @@ -2147,7 +2342,11 @@ } chunk = min_t(unsigned int, unix_skb_len(skb) - skip, size); + skb_get(skb); chunk = state->recv_actor(skb, skip, chunk, state); + drop_skb = !unix_skb_len(skb); + /* skb is only safe to use if !drop_skb */ + consume_skb(skb); if (chunk < 0) { if (copied == 0) copied = -EFAULT; @@ -2156,6 +2355,18 @@ copied += chunk; size -= chunk; + if (drop_skb) { + /* the skb was touched by a concurrent reader; + * we should not expect anything from this skb + * anymore and assume it invalid - we can be + * sure it was dropped from the socket queue + * + * let's report a short read + */ + err = 0; + break; + } + /* Mark read part of skb as used */ if (!(flags & MSG_PEEK)) { UNIXCB(skb).consumed += chunk; @@ -2181,6 +2392,17 @@ sk_peek_offset_fwd(sk, chunk); + if (UNIXCB(skb).fp) + break; + + skip = 0; + last = skb; + last_len = skb->len; + unix_state_lock(sk); + skb = skb_peek_next(skb, &sk->sk_receive_queue); + if (skb) + goto again; + unix_state_unlock(sk); break; } } while (size); @@ -2438,14 +2660,16 @@ return mask; writable = unix_writable(sk); - other = unix_peer_get(sk); - if (other) { - if (unix_peer(other) != sk) { - sock_poll_wait(file, &unix_sk(other)->peer_wait, wait); - if (unix_recvq_full(other)) - writable = 0; - } - sock_put(other); + if (writable) { + unix_state_lock(sk); + + other = unix_peer(sk); + if (other && unix_peer(other) != sk && + unix_recvq_full(other) && + unix_dgram_peer_wake_me(sk, other)) + writable = 0; + + unix_state_unlock(sk); } if (writable) --- linux-raspi2-4.2.0.orig/net/wireless/nl80211.c +++ linux-raspi2-4.2.0/net/wireless/nl80211.c @@ -3408,12 +3408,6 @@ wdev->iftype)) return -EINVAL; - if (info->attrs[NL80211_ATTR_ACL_POLICY]) { - params.acl = parse_acl_data(&rdev->wiphy, info); - if (IS_ERR(params.acl)) - return PTR_ERR(params.acl); - } - if (info->attrs[NL80211_ATTR_SMPS_MODE]) { params.smps_mode = nla_get_u8(info->attrs[NL80211_ATTR_SMPS_MODE]); @@ -3437,6 +3431,12 @@ params.smps_mode = NL80211_SMPS_OFF; } + if (info->attrs[NL80211_ATTR_ACL_POLICY]) { + params.acl = parse_acl_data(&rdev->wiphy, info); + if (IS_ERR(params.acl)) + return PTR_ERR(params.acl); + } + wdev_lock(wdev); err = rdev_start_ap(rdev, dev, ¶ms); if (!err) { --- linux-raspi2-4.2.0.orig/scripts/dtc/checks.c +++ linux-raspi2-4.2.0/scripts/dtc/checks.c @@ -458,21 +458,91 @@ struct node *node, struct property *prop) { struct marker *m = prop->val.markers; + struct fixup *f, **fp; + struct fixup_entry *fe, **fep; struct node *refnode; cell_t phandle; + int has_phandle_refs; + + has_phandle_refs = 0; + for_each_marker_of_type(m, REF_PHANDLE) { + has_phandle_refs = 1; + break; + } + + if (!has_phandle_refs) + return; for_each_marker_of_type(m, REF_PHANDLE) { assert(m->offset + sizeof(cell_t) <= prop->val.len); refnode = get_node_by_ref(dt, m->ref); - if (! refnode) { + if (!refnode && !symbol_fixup_support) { FAIL(c, "Reference to non-existent node or label \"%s\"\n", - m->ref); + m->ref); continue; } - phandle = get_node_phandle(dt, refnode); - *((cell_t *)(prop->val.val + m->offset)) = cpu_to_fdt32(phandle); + if (!refnode) { + /* allocate fixup entry */ + fe = xmalloc(sizeof(*fe)); + + fe->node = node; + fe->prop = prop; + fe->offset = m->offset; + fe->next = NULL; + + /* search for an already existing fixup */ + for_each_fixup(dt, f) + if (strcmp(f->ref, m->ref) == 0) + break; + + /* no fixup found, add new */ + if (f == NULL) { + f = xmalloc(sizeof(*f)); + f->ref = m->ref; + f->entries = NULL; + f->next = NULL; + + /* add it to the tree */ + fp = &dt->fixups; + while (*fp) + fp = &(*fp)->next; + *fp = f; + } + + /* and now append fixup entry */ + fep = &f->entries; + while (*fep) + fep = &(*fep)->next; + *fep = fe; + + /* mark the entry as unresolved */ + phandle = 0xdeadbeef; + } else { + phandle = get_node_phandle(dt, refnode); + + /* if it's a plugin, we need to record it */ + if (symbol_fixup_support && dt->is_plugin) { + + /* allocate a new local fixup entry */ + fe = xmalloc(sizeof(*fe)); + + fe->node = node; + fe->prop = prop; + fe->offset = m->offset; + fe->next = NULL; + + /* append it to the local fixups */ + fep = &dt->local_fixups; + while (*fep) + fep = &(*fep)->next; + *fep = fe; + } + } + + *((cell_t *)(prop->val.val + m->offset)) = + cpu_to_fdt32(phandle); } } ERROR(phandle_references, NULL, NULL, fixup_phandle_references, NULL, @@ -652,6 +722,45 @@ } TREE_WARNING(obsolete_chosen_interrupt_controller, NULL); +static void check_auto_label_phandles(struct check *c, struct node *dt, + struct node *node) +{ + struct label *l; + struct symbol *s, **sp; + int has_label; + + if (!symbol_fixup_support) + return; + + has_label = 0; + for_each_label(node->labels, l) { + has_label = 1; + break; + } + + if (!has_label) + return; + + /* force allocation of a phandle for this node */ + (void)get_node_phandle(dt, node); + + /* add the symbol */ + for_each_label(node->labels, l) { + + s = xmalloc(sizeof(*s)); + s->label = l; + s->node = node; + s->next = NULL; + + /* add it to the symbols list */ + sp = &dt->symbols; + while (*sp) + sp = &((*sp)->next); + *sp = s; + } +} +NODE_WARNING(auto_label_phandles, NULL); + static struct check *check_table[] = { &duplicate_node_names, &duplicate_property_names, &node_name_chars, &node_name_format, &property_name_chars, @@ -670,6 +779,8 @@ &avoid_default_addr_size, &obsolete_chosen_interrupt_controller, + &auto_label_phandles, + &always_fail, }; --- linux-raspi2-4.2.0.orig/scripts/dtc/dtc-lexer.l +++ linux-raspi2-4.2.0/scripts/dtc/dtc-lexer.l @@ -113,6 +113,11 @@ return DT_V1; } +<*>"/plugin/" { + DPRINT("Keyword: /plugin/\n"); + return DT_PLUGIN; + } + <*>"/memreserve/" { DPRINT("Keyword: /memreserve/\n"); BEGIN_DEFAULT(); --- linux-raspi2-4.2.0.orig/scripts/dtc/dtc-lexer.lex.c_shipped +++ linux-raspi2-4.2.0/scripts/dtc/dtc-lexer.lex.c_shipped @@ -9,7 +9,7 @@ #define FLEX_SCANNER #define YY_FLEX_MAJOR_VERSION 2 #define YY_FLEX_MINOR_VERSION 5 -#define YY_FLEX_SUBMINOR_VERSION 39 +#define YY_FLEX_SUBMINOR_VERSION 35 #if YY_FLEX_SUBMINOR_VERSION > 0 #define FLEX_BETA #endif @@ -162,12 +162,7 @@ typedef struct yy_buffer_state *YY_BUFFER_STATE; #endif -#ifndef YY_TYPEDEF_YY_SIZE_T -#define YY_TYPEDEF_YY_SIZE_T -typedef size_t yy_size_t; -#endif - -extern yy_size_t yyleng; +extern int yyleng; extern FILE *yyin, *yyout; @@ -176,7 +171,6 @@ #define EOB_ACT_LAST_MATCH 2 #define YY_LESS_LINENO(n) - #define YY_LINENO_REWIND_TO(ptr) /* Return all but the first "n" matched characters back to the input stream. */ #define yyless(n) \ @@ -194,6 +188,11 @@ #define unput(c) yyunput( c, (yytext_ptr) ) +#ifndef YY_TYPEDEF_YY_SIZE_T +#define YY_TYPEDEF_YY_SIZE_T +typedef size_t yy_size_t; +#endif + #ifndef YY_STRUCT_YY_BUFFER_STATE #define YY_STRUCT_YY_BUFFER_STATE struct yy_buffer_state @@ -211,7 +210,7 @@ /* Number of characters read into yy_ch_buf, not including EOB * characters. */ - yy_size_t yy_n_chars; + int yy_n_chars; /* Whether we "own" the buffer - i.e., we know we created it, * and can realloc() it to grow it, and should free() it to @@ -281,8 +280,8 @@ /* yy_hold_char holds the character lost when yytext is formed. */ static char yy_hold_char; -static yy_size_t yy_n_chars; /* number of characters read into yy_ch_buf */ -yy_size_t yyleng; +static int yy_n_chars; /* number of characters read into yy_ch_buf */ +int yyleng; /* Points to current character in buffer. */ static char *yy_c_buf_p = (char *) 0; @@ -310,7 +309,7 @@ YY_BUFFER_STATE yy_scan_buffer (char *base,yy_size_t size ); YY_BUFFER_STATE yy_scan_string (yyconst char *yy_str ); -YY_BUFFER_STATE yy_scan_bytes (yyconst char *bytes,yy_size_t len ); +YY_BUFFER_STATE yy_scan_bytes (yyconst char *bytes,int len ); void *yyalloc (yy_size_t ); void *yyrealloc (void *,yy_size_t ); @@ -342,7 +341,7 @@ /* Begin user sect3 */ -#define yywrap() 1 +#define yywrap(n) 1 #define YY_SKIP_YYWRAP typedef unsigned char YY_CHAR; @@ -373,8 +372,8 @@ *yy_cp = '\0'; \ (yy_c_buf_p) = yy_cp; -#define YY_NUM_RULES 30 -#define YY_END_OF_BUFFER 31 +#define YY_NUM_RULES 31 +#define YY_END_OF_BUFFER 32 /* This struct is not used in this scanner, but its presence is necessary. */ struct yy_trans_info @@ -382,25 +381,26 @@ flex_int32_t yy_verify; flex_int32_t yy_nxt; }; -static yyconst flex_int16_t yy_accept[159] = +static yyconst flex_int16_t yy_accept[166] = { 0, - 0, 0, 0, 0, 0, 0, 0, 0, 31, 29, - 18, 18, 29, 29, 29, 29, 29, 29, 29, 29, - 29, 29, 29, 29, 29, 29, 15, 16, 16, 29, - 16, 10, 10, 18, 26, 0, 3, 0, 27, 12, - 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, - 21, 23, 25, 24, 22, 0, 9, 28, 0, 0, - 0, 14, 14, 16, 16, 16, 10, 10, 10, 0, - 12, 0, 11, 0, 0, 0, 20, 0, 0, 0, - 0, 0, 0, 0, 0, 16, 10, 10, 10, 0, - 13, 19, 0, 0, 0, 0, 0, 0, 0, 0, - - 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 16, 6, 0, 0, 0, 0, 0, 0, 2, - 0, 0, 0, 0, 0, 0, 0, 0, 4, 17, - 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, - 5, 8, 0, 0, 0, 0, 7, 0 + 0, 0, 0, 0, 0, 0, 0, 0, 32, 30, + 19, 19, 30, 30, 30, 30, 30, 30, 30, 30, + 30, 30, 30, 30, 30, 30, 16, 17, 17, 30, + 17, 11, 11, 19, 27, 0, 3, 0, 28, 13, + 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, + 0, 22, 24, 26, 25, 23, 0, 10, 29, 0, + 0, 0, 15, 15, 17, 17, 17, 11, 11, 11, + 0, 13, 0, 12, 0, 0, 0, 21, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 17, 11, 11, + 11, 0, 14, 20, 0, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 17, 7, 0, 0, 0, + 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 4, 18, 0, 0, 5, 2, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1, 0, 0, 0, 0, 6, 9, 0, + 0, 0, 0, 8, 0 } ; static yyconst flex_int32_t yy_ec[256] = @@ -416,9 +416,9 @@ 22, 22, 22, 22, 24, 22, 22, 25, 22, 22, 1, 26, 27, 1, 22, 1, 21, 28, 29, 30, - 31, 21, 22, 22, 32, 22, 22, 33, 34, 35, - 36, 37, 22, 38, 39, 40, 41, 42, 22, 25, - 43, 22, 44, 45, 46, 1, 1, 1, 1, 1, + 31, 21, 32, 22, 33, 22, 22, 34, 35, 36, + 37, 38, 22, 39, 40, 41, 42, 43, 22, 25, + 44, 22, 45, 46, 47, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -435,163 +435,165 @@ 1, 1, 1, 1, 1 } ; -static yyconst flex_int32_t yy_meta[47] = +static yyconst flex_int32_t yy_meta[48] = { 0, 1, 1, 1, 1, 1, 1, 2, 3, 1, 2, 2, 2, 4, 5, 5, 5, 6, 1, 1, 1, 7, 8, 8, 8, 8, 1, 1, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 8, - 8, 8, 8, 3, 1, 4 + 8, 8, 8, 8, 3, 1, 4 } ; -static yyconst flex_int16_t yy_base[173] = +static yyconst flex_int16_t yy_base[180] = { 0, - 0, 383, 34, 382, 65, 381, 37, 105, 387, 391, - 54, 111, 367, 110, 109, 109, 112, 41, 366, 104, - 367, 338, 124, 117, 0, 144, 391, 0, 121, 0, - 135, 155, 140, 179, 391, 160, 391, 379, 391, 0, - 368, 141, 391, 167, 370, 376, 346, 103, 342, 345, - 391, 391, 391, 391, 391, 358, 391, 391, 175, 342, - 338, 391, 355, 0, 185, 339, 184, 347, 346, 0, - 0, 322, 175, 357, 175, 363, 352, 324, 330, 323, - 332, 326, 201, 324, 329, 322, 391, 333, 181, 309, - 391, 341, 340, 313, 320, 338, 178, 311, 146, 317, - - 314, 315, 335, 331, 303, 300, 309, 299, 308, 188, - 336, 335, 391, 305, 320, 281, 283, 271, 203, 288, - 281, 271, 266, 264, 245, 242, 208, 104, 391, 391, - 244, 218, 204, 219, 206, 224, 201, 212, 204, 229, - 215, 208, 207, 200, 219, 391, 233, 221, 200, 181, - 391, 391, 149, 122, 86, 41, 391, 391, 245, 251, - 259, 263, 267, 273, 280, 284, 292, 300, 304, 310, - 318, 326 + 0, 393, 35, 392, 66, 391, 38, 107, 397, 401, + 55, 113, 377, 112, 111, 111, 114, 42, 376, 106, + 377, 347, 126, 120, 0, 147, 401, 0, 124, 0, + 137, 158, 170, 163, 401, 153, 401, 389, 401, 0, + 378, 120, 401, 131, 380, 386, 355, 139, 351, 355, + 351, 401, 401, 401, 401, 401, 367, 401, 401, 185, + 350, 346, 401, 364, 0, 185, 347, 189, 356, 355, + 0, 0, 330, 180, 366, 141, 372, 361, 332, 338, + 331, 341, 334, 326, 205, 331, 337, 329, 401, 341, + 167, 316, 401, 349, 348, 320, 328, 346, 180, 318, + + 324, 209, 324, 320, 322, 342, 338, 309, 306, 315, + 305, 315, 312, 192, 342, 341, 401, 293, 306, 282, + 268, 252, 255, 203, 285, 282, 272, 268, 252, 233, + 232, 239, 208, 107, 401, 401, 238, 211, 401, 211, + 212, 208, 228, 203, 215, 207, 233, 222, 212, 211, + 203, 227, 401, 237, 225, 204, 185, 401, 401, 149, + 128, 88, 42, 401, 401, 253, 259, 267, 271, 275, + 281, 288, 292, 300, 308, 312, 318, 326, 334 } ; -static yyconst flex_int16_t yy_def[173] = +static yyconst flex_int16_t yy_def[180] = { 0, - 158, 1, 1, 3, 158, 5, 1, 1, 158, 158, - 158, 158, 158, 159, 160, 161, 158, 158, 158, 158, - 162, 158, 158, 158, 163, 162, 158, 164, 165, 164, - 164, 158, 158, 158, 158, 159, 158, 159, 158, 166, - 158, 161, 158, 161, 167, 168, 158, 158, 158, 158, - 158, 158, 158, 158, 158, 162, 158, 158, 158, 158, - 158, 158, 162, 164, 165, 164, 158, 158, 158, 169, - 166, 170, 161, 167, 167, 168, 158, 158, 158, 158, - 158, 158, 158, 158, 158, 164, 158, 158, 169, 170, - 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, - - 158, 164, 158, 158, 158, 158, 158, 158, 158, 171, - 158, 164, 158, 158, 158, 158, 158, 158, 171, 158, - 171, 158, 158, 158, 158, 158, 158, 158, 158, 158, - 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, - 172, 158, 158, 158, 172, 158, 172, 158, 158, 158, - 158, 158, 158, 158, 158, 158, 158, 0, 158, 158, - 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, - 158, 158 + 165, 1, 1, 3, 165, 5, 1, 1, 165, 165, + 165, 165, 165, 166, 167, 168, 165, 165, 165, 165, + 169, 165, 165, 165, 170, 169, 165, 171, 172, 171, + 171, 165, 165, 165, 165, 166, 165, 166, 165, 173, + 165, 168, 165, 168, 174, 175, 165, 165, 165, 165, + 165, 165, 165, 165, 165, 165, 169, 165, 165, 165, + 165, 165, 165, 169, 171, 172, 171, 165, 165, 165, + 176, 173, 177, 168, 174, 174, 175, 165, 165, 165, + 165, 165, 165, 165, 165, 165, 165, 171, 165, 165, + 176, 177, 165, 165, 165, 165, 165, 165, 165, 165, + + 165, 165, 165, 165, 171, 165, 165, 165, 165, 165, + 165, 165, 165, 178, 165, 171, 165, 165, 165, 165, + 165, 165, 165, 178, 165, 178, 165, 165, 165, 165, + 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, + 165, 165, 165, 165, 165, 165, 165, 179, 165, 165, + 165, 179, 165, 179, 165, 165, 165, 165, 165, 165, + 165, 165, 165, 165, 0, 165, 165, 165, 165, 165, + 165, 165, 165, 165, 165, 165, 165, 165, 165 } ; -static yyconst flex_int16_t yy_nxt[438] = +static yyconst flex_int16_t yy_nxt[449] = { 0, 10, 11, 12, 11, 13, 14, 10, 15, 16, 10, 10, 10, 17, 10, 10, 10, 10, 18, 19, 20, 21, 21, 21, 21, 21, 10, 10, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, - 21, 21, 21, 10, 22, 10, 24, 25, 25, 25, - 32, 33, 33, 157, 26, 34, 34, 34, 51, 52, - 27, 26, 26, 26, 26, 10, 11, 12, 11, 13, - 14, 28, 15, 16, 28, 28, 28, 24, 28, 28, - 28, 10, 18, 19, 20, 29, 29, 29, 29, 29, - 30, 10, 29, 29, 29, 29, 29, 29, 29, 29, - - 29, 29, 29, 29, 29, 29, 29, 29, 10, 22, - 10, 23, 34, 34, 34, 37, 39, 43, 32, 33, - 33, 45, 54, 55, 46, 59, 45, 64, 156, 46, - 64, 64, 64, 79, 44, 38, 59, 57, 134, 47, - 135, 48, 80, 49, 47, 50, 48, 99, 61, 43, - 50, 110, 41, 67, 67, 67, 60, 63, 63, 63, - 57, 155, 68, 69, 63, 37, 44, 66, 67, 67, - 67, 63, 63, 63, 63, 73, 59, 68, 69, 70, - 34, 34, 34, 43, 75, 38, 154, 92, 83, 83, - 83, 64, 44, 120, 64, 64, 64, 67, 67, 67, - - 44, 57, 99, 68, 69, 107, 68, 69, 120, 127, - 108, 153, 152, 121, 83, 83, 83, 133, 133, 133, - 146, 133, 133, 133, 146, 140, 140, 140, 121, 141, - 140, 140, 140, 151, 141, 158, 150, 149, 148, 144, - 147, 143, 142, 139, 147, 36, 36, 36, 36, 36, - 36, 36, 36, 40, 138, 137, 136, 40, 40, 42, - 42, 42, 42, 42, 42, 42, 42, 56, 56, 56, - 56, 62, 132, 62, 64, 131, 130, 64, 129, 64, - 64, 65, 128, 158, 65, 65, 65, 65, 71, 127, - 71, 71, 74, 74, 74, 74, 74, 74, 74, 74, - - 76, 76, 76, 76, 76, 76, 76, 76, 89, 126, - 89, 90, 125, 90, 90, 124, 90, 90, 119, 119, - 119, 119, 119, 119, 119, 119, 145, 145, 145, 145, - 145, 145, 145, 145, 123, 122, 59, 59, 118, 117, - 116, 115, 114, 113, 45, 112, 108, 111, 109, 106, - 105, 104, 46, 103, 91, 87, 102, 101, 100, 98, - 97, 96, 95, 94, 93, 77, 75, 91, 88, 87, - 86, 57, 85, 84, 57, 82, 81, 78, 77, 75, - 72, 158, 58, 57, 53, 35, 158, 31, 23, 23, - 9, 158, 158, 158, 158, 158, 158, 158, 158, 158, - - 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, - 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, - 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, - 158, 158, 158, 158, 158, 158, 158 + 21, 21, 21, 21, 10, 22, 10, 24, 25, 25, + 25, 32, 33, 33, 164, 26, 34, 34, 34, 52, + 53, 27, 26, 26, 26, 26, 10, 11, 12, 11, + 13, 14, 28, 15, 16, 28, 28, 28, 24, 28, + 28, 28, 10, 18, 19, 20, 29, 29, 29, 29, + 29, 30, 10, 29, 29, 29, 29, 29, 29, 29, + + 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, + 10, 22, 10, 23, 34, 34, 34, 37, 39, 43, + 32, 33, 33, 45, 55, 56, 46, 60, 43, 45, + 65, 163, 46, 65, 65, 65, 44, 38, 60, 74, + 58, 47, 141, 48, 142, 44, 49, 47, 50, 48, + 76, 51, 62, 94, 50, 41, 44, 51, 37, 61, + 64, 64, 64, 58, 34, 34, 34, 64, 162, 80, + 67, 68, 68, 68, 64, 64, 64, 64, 38, 81, + 69, 70, 71, 68, 68, 68, 60, 161, 43, 69, + 70, 65, 69, 70, 65, 65, 65, 125, 85, 85, + + 85, 58, 68, 68, 68, 44, 102, 110, 125, 133, + 102, 69, 70, 111, 114, 160, 159, 126, 85, 85, + 85, 140, 140, 140, 140, 140, 140, 153, 126, 147, + 147, 147, 153, 148, 147, 147, 147, 158, 148, 165, + 157, 156, 155, 151, 150, 149, 146, 154, 145, 144, + 143, 139, 154, 36, 36, 36, 36, 36, 36, 36, + 36, 40, 138, 137, 136, 40, 40, 42, 42, 42, + 42, 42, 42, 42, 42, 57, 57, 57, 57, 63, + 135, 63, 65, 134, 165, 65, 133, 65, 65, 66, + 132, 131, 66, 66, 66, 66, 72, 130, 72, 72, + + 75, 75, 75, 75, 75, 75, 75, 75, 77, 77, + 77, 77, 77, 77, 77, 77, 91, 129, 91, 92, + 128, 92, 92, 127, 92, 92, 124, 124, 124, 124, + 124, 124, 124, 124, 152, 152, 152, 152, 152, 152, + 152, 152, 60, 60, 123, 122, 121, 120, 119, 118, + 117, 45, 116, 111, 115, 113, 112, 109, 108, 107, + 46, 106, 93, 89, 105, 104, 103, 101, 100, 99, + 98, 97, 96, 95, 78, 76, 93, 90, 89, 88, + 58, 87, 86, 58, 84, 83, 82, 79, 78, 76, + 73, 165, 59, 58, 54, 35, 165, 31, 23, 23, + + 9, 165, 165, 165, 165, 165, 165, 165, 165, 165, + 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, + 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, + 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, + 165, 165, 165, 165, 165, 165, 165, 165 } ; -static yyconst flex_int16_t yy_chk[438] = +static yyconst flex_int16_t yy_chk[449] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 3, 3, 3, 3, - 7, 7, 7, 156, 3, 11, 11, 11, 18, 18, - 3, 3, 3, 3, 3, 5, 5, 5, 5, 5, + 1, 1, 1, 1, 1, 1, 1, 3, 3, 3, + 3, 7, 7, 7, 163, 3, 11, 11, 11, 18, + 18, 3, 3, 3, 3, 3, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, - 5, 8, 12, 12, 12, 14, 15, 16, 8, 8, - 8, 17, 20, 20, 17, 23, 24, 29, 155, 24, - 29, 29, 29, 48, 16, 14, 31, 29, 128, 17, - 128, 17, 48, 17, 24, 17, 24, 99, 24, 42, - 24, 99, 15, 33, 33, 33, 23, 26, 26, 26, - 26, 154, 33, 33, 26, 36, 42, 31, 32, 32, - 32, 26, 26, 26, 26, 44, 59, 32, 32, 32, - 34, 34, 34, 73, 75, 36, 153, 75, 59, 59, - 59, 65, 44, 110, 65, 65, 65, 67, 67, 67, - - 73, 65, 83, 89, 89, 97, 67, 67, 119, 127, - 97, 150, 149, 110, 83, 83, 83, 133, 133, 133, - 141, 127, 127, 127, 145, 136, 136, 136, 119, 136, - 140, 140, 140, 148, 140, 147, 144, 143, 142, 139, - 141, 138, 137, 135, 145, 159, 159, 159, 159, 159, - 159, 159, 159, 160, 134, 132, 131, 160, 160, 161, - 161, 161, 161, 161, 161, 161, 161, 162, 162, 162, - 162, 163, 126, 163, 164, 125, 124, 164, 123, 164, - 164, 165, 122, 121, 165, 165, 165, 165, 166, 120, - 166, 166, 167, 167, 167, 167, 167, 167, 167, 167, - - 168, 168, 168, 168, 168, 168, 168, 168, 169, 118, - 169, 170, 117, 170, 170, 116, 170, 170, 171, 171, - 171, 171, 171, 171, 171, 171, 172, 172, 172, 172, - 172, 172, 172, 172, 115, 114, 112, 111, 109, 108, - 107, 106, 105, 104, 103, 102, 101, 100, 98, 96, - 95, 94, 93, 92, 90, 88, 86, 85, 84, 82, - 81, 80, 79, 78, 77, 76, 74, 72, 69, 68, - 66, 63, 61, 60, 56, 50, 49, 47, 46, 45, + 5, 5, 5, 8, 12, 12, 12, 14, 15, 16, + 8, 8, 8, 17, 20, 20, 17, 23, 42, 24, + 29, 162, 24, 29, 29, 29, 16, 14, 31, 44, + 29, 17, 134, 17, 134, 42, 17, 24, 17, 24, + 76, 17, 24, 76, 24, 15, 44, 24, 36, 23, + 26, 26, 26, 26, 34, 34, 34, 26, 161, 48, + 31, 32, 32, 32, 26, 26, 26, 26, 36, 48, + 32, 32, 32, 33, 33, 33, 60, 160, 74, 91, + 91, 66, 33, 33, 66, 66, 66, 114, 60, 60, + + 60, 66, 68, 68, 68, 74, 85, 99, 124, 133, + 102, 68, 68, 99, 102, 157, 156, 114, 85, 85, + 85, 133, 133, 133, 140, 140, 140, 148, 124, 143, + 143, 143, 152, 143, 147, 147, 147, 155, 147, 154, + 151, 150, 149, 146, 145, 144, 142, 148, 141, 138, + 137, 132, 152, 166, 166, 166, 166, 166, 166, 166, + 166, 167, 131, 130, 129, 167, 167, 168, 168, 168, + 168, 168, 168, 168, 168, 169, 169, 169, 169, 170, + 128, 170, 171, 127, 126, 171, 125, 171, 171, 172, + 123, 122, 172, 172, 172, 172, 173, 121, 173, 173, + + 174, 174, 174, 174, 174, 174, 174, 174, 175, 175, + 175, 175, 175, 175, 175, 175, 176, 120, 176, 177, + 119, 177, 177, 118, 177, 177, 178, 178, 178, 178, + 178, 178, 178, 178, 179, 179, 179, 179, 179, 179, + 179, 179, 116, 115, 113, 112, 111, 110, 109, 108, + 107, 106, 105, 104, 103, 101, 100, 98, 97, 96, + 95, 94, 92, 90, 88, 87, 86, 84, 83, 82, + 81, 80, 79, 78, 77, 75, 73, 70, 69, 67, + 64, 62, 61, 57, 51, 50, 49, 47, 46, 45, 41, 38, 22, 21, 19, 13, 9, 6, 4, 2, - 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, - 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, - 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, - 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, - 158, 158, 158, 158, 158, 158, 158 + 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, + 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, + 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, + 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, + 165, 165, 165, 165, 165, 165, 165, 165 } ; static yy_state_type yy_last_accepting_state; @@ -662,7 +664,7 @@ static void push_input_file(const char *filename); static bool pop_input_file(void); static void lexical_error(const char *fmt, ...); -#line 666 "dtc-lexer.lex.c" +#line 668 "dtc-lexer.lex.c" #define INITIAL 0 #define BYTESTRING 1 @@ -704,7 +706,7 @@ void yyset_out (FILE * out_str ); -yy_size_t yyget_leng (void ); +int yyget_leng (void ); char *yyget_text (void ); @@ -853,6 +855,10 @@ register char *yy_cp, *yy_bp; register int yy_act; +#line 68 "dtc-lexer.l" + +#line 861 "dtc-lexer.lex.c" + if ( !(yy_init) ) { (yy_init) = 1; @@ -879,11 +885,6 @@ yy_load_buffer_state( ); } - { -#line 68 "dtc-lexer.l" - -#line 886 "dtc-lexer.lex.c" - while ( 1 ) /* loops until end-of-file is reached */ { yy_cp = (yy_c_buf_p); @@ -901,7 +902,7 @@ yy_match: do { - register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)] ; + register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)]; if ( yy_accept[yy_current_state] ) { (yy_last_accepting_state) = yy_current_state; @@ -910,13 +911,13 @@ while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 159 ) + if ( yy_current_state >= 166 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; ++yy_cp; } - while ( yy_current_state != 158 ); + while ( yy_current_state != 165 ); yy_cp = (yy_last_accepting_cpos); yy_current_state = (yy_last_accepting_state); @@ -1007,23 +1008,31 @@ YY_RULE_SETUP #line 116 "dtc-lexer.l" { + DPRINT("Keyword: /plugin/\n"); + return DT_PLUGIN; + } + YY_BREAK +case 6: +YY_RULE_SETUP +#line 121 "dtc-lexer.l" +{ DPRINT("Keyword: /memreserve/\n"); BEGIN_DEFAULT(); return DT_MEMRESERVE; } YY_BREAK -case 6: +case 7: YY_RULE_SETUP -#line 122 "dtc-lexer.l" +#line 127 "dtc-lexer.l" { DPRINT("Keyword: /bits/\n"); BEGIN_DEFAULT(); return DT_BITS; } YY_BREAK -case 7: +case 8: YY_RULE_SETUP -#line 128 "dtc-lexer.l" +#line 133 "dtc-lexer.l" { DPRINT("Keyword: /delete-property/\n"); DPRINT("\n"); @@ -1031,9 +1040,9 @@ return DT_DEL_PROP; } YY_BREAK -case 8: +case 9: YY_RULE_SETUP -#line 135 "dtc-lexer.l" +#line 140 "dtc-lexer.l" { DPRINT("Keyword: /delete-node/\n"); DPRINT("\n"); @@ -1041,9 +1050,9 @@ return DT_DEL_NODE; } YY_BREAK -case 9: +case 10: YY_RULE_SETUP -#line 142 "dtc-lexer.l" +#line 147 "dtc-lexer.l" { DPRINT("Label: %s\n", yytext); yylval.labelref = xstrdup(yytext); @@ -1051,9 +1060,9 @@ return DT_LABEL; } YY_BREAK -case 10: +case 11: YY_RULE_SETUP -#line 149 "dtc-lexer.l" +#line 154 "dtc-lexer.l" { char *e; DPRINT("Integer Literal: '%s'\n", yytext); @@ -1073,10 +1082,10 @@ return DT_LITERAL; } YY_BREAK -case 11: -/* rule 11 can match eol */ +case 12: +/* rule 12 can match eol */ YY_RULE_SETUP -#line 168 "dtc-lexer.l" +#line 173 "dtc-lexer.l" { struct data d; DPRINT("Character literal: %s\n", yytext); @@ -1098,18 +1107,18 @@ return DT_CHAR_LITERAL; } YY_BREAK -case 12: +case 13: YY_RULE_SETUP -#line 189 "dtc-lexer.l" +#line 194 "dtc-lexer.l" { /* label reference */ DPRINT("Ref: %s\n", yytext+1); yylval.labelref = xstrdup(yytext+1); return DT_REF; } YY_BREAK -case 13: +case 14: YY_RULE_SETUP -#line 195 "dtc-lexer.l" +#line 200 "dtc-lexer.l" { /* new-style path reference */ yytext[yyleng-1] = '\0'; DPRINT("Ref: %s\n", yytext+2); @@ -1117,27 +1126,27 @@ return DT_REF; } YY_BREAK -case 14: +case 15: YY_RULE_SETUP -#line 202 "dtc-lexer.l" +#line 207 "dtc-lexer.l" { yylval.byte = strtol(yytext, NULL, 16); DPRINT("Byte: %02x\n", (int)yylval.byte); return DT_BYTE; } YY_BREAK -case 15: +case 16: YY_RULE_SETUP -#line 208 "dtc-lexer.l" +#line 213 "dtc-lexer.l" { DPRINT("/BYTESTRING\n"); BEGIN_DEFAULT(); return ']'; } YY_BREAK -case 16: +case 17: YY_RULE_SETUP -#line 214 "dtc-lexer.l" +#line 219 "dtc-lexer.l" { DPRINT("PropNodeName: %s\n", yytext); yylval.propnodename = xstrdup((yytext[0] == '\\') ? @@ -1146,75 +1155,75 @@ return DT_PROPNODENAME; } YY_BREAK -case 17: +case 18: YY_RULE_SETUP -#line 222 "dtc-lexer.l" +#line 227 "dtc-lexer.l" { DPRINT("Binary Include\n"); return DT_INCBIN; } YY_BREAK -case 18: -/* rule 18 can match eol */ -YY_RULE_SETUP -#line 227 "dtc-lexer.l" -/* eat whitespace */ - YY_BREAK case 19: /* rule 19 can match eol */ YY_RULE_SETUP -#line 228 "dtc-lexer.l" -/* eat C-style comments */ +#line 232 "dtc-lexer.l" +/* eat whitespace */ YY_BREAK case 20: /* rule 20 can match eol */ YY_RULE_SETUP -#line 229 "dtc-lexer.l" -/* eat C++-style comments */ +#line 233 "dtc-lexer.l" +/* eat C-style comments */ YY_BREAK case 21: +/* rule 21 can match eol */ YY_RULE_SETUP -#line 231 "dtc-lexer.l" -{ return DT_LSHIFT; }; +#line 234 "dtc-lexer.l" +/* eat C++-style comments */ YY_BREAK case 22: YY_RULE_SETUP -#line 232 "dtc-lexer.l" -{ return DT_RSHIFT; }; +#line 236 "dtc-lexer.l" +{ return DT_LSHIFT; }; YY_BREAK case 23: YY_RULE_SETUP -#line 233 "dtc-lexer.l" -{ return DT_LE; }; +#line 237 "dtc-lexer.l" +{ return DT_RSHIFT; }; YY_BREAK case 24: YY_RULE_SETUP -#line 234 "dtc-lexer.l" -{ return DT_GE; }; +#line 238 "dtc-lexer.l" +{ return DT_LE; }; YY_BREAK case 25: YY_RULE_SETUP -#line 235 "dtc-lexer.l" -{ return DT_EQ; }; +#line 239 "dtc-lexer.l" +{ return DT_GE; }; YY_BREAK case 26: YY_RULE_SETUP -#line 236 "dtc-lexer.l" -{ return DT_NE; }; +#line 240 "dtc-lexer.l" +{ return DT_EQ; }; YY_BREAK case 27: YY_RULE_SETUP -#line 237 "dtc-lexer.l" -{ return DT_AND; }; +#line 241 "dtc-lexer.l" +{ return DT_NE; }; YY_BREAK case 28: YY_RULE_SETUP -#line 238 "dtc-lexer.l" -{ return DT_OR; }; +#line 242 "dtc-lexer.l" +{ return DT_AND; }; YY_BREAK case 29: YY_RULE_SETUP -#line 240 "dtc-lexer.l" +#line 243 "dtc-lexer.l" +{ return DT_OR; }; + YY_BREAK +case 30: +YY_RULE_SETUP +#line 245 "dtc-lexer.l" { DPRINT("Char: %c (\\x%02x)\n", yytext[0], (unsigned)yytext[0]); @@ -1230,12 +1239,12 @@ return yytext[0]; } YY_BREAK -case 30: +case 31: YY_RULE_SETUP -#line 255 "dtc-lexer.l" +#line 260 "dtc-lexer.l" ECHO; YY_BREAK -#line 1239 "dtc-lexer.lex.c" +#line 1248 "dtc-lexer.lex.c" case YY_END_OF_BUFFER: { @@ -1365,7 +1374,6 @@ "fatal flex scanner internal error--no action found" ); } /* end of action switch */ } /* end of scanning one token */ - } /* end of user's declarations */ } /* end of yylex */ /* yy_get_next_buffer - try to read in a new buffer @@ -1421,21 +1429,21 @@ else { - yy_size_t num_to_read = + int num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1; while ( num_to_read <= 0 ) { /* Not enough room in the buffer - grow it. */ /* just a shorter name for the current buffer */ - YY_BUFFER_STATE b = YY_CURRENT_BUFFER_LVALUE; + YY_BUFFER_STATE b = YY_CURRENT_BUFFER; int yy_c_buf_p_offset = (int) ((yy_c_buf_p) - b->yy_ch_buf); if ( b->yy_is_our_buffer ) { - yy_size_t new_size = b->yy_buf_size * 2; + int new_size = b->yy_buf_size * 2; if ( new_size <= 0 ) b->yy_buf_size += b->yy_buf_size / 8; @@ -1466,7 +1474,7 @@ /* Read in more data. */ YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]), - (yy_n_chars), num_to_read ); + (yy_n_chars), (size_t) num_to_read ); YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); } @@ -1528,7 +1536,7 @@ while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 159 ) + if ( yy_current_state >= 166 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; @@ -1556,13 +1564,13 @@ while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 159 ) + if ( yy_current_state >= 166 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; - yy_is_jam = (yy_current_state == 158); + yy_is_jam = (yy_current_state == 165); - return yy_is_jam ? 0 : yy_current_state; + return yy_is_jam ? 0 : yy_current_state; } #ifndef YY_NO_INPUT @@ -1589,7 +1597,7 @@ else { /* need more input */ - yy_size_t offset = (yy_c_buf_p) - (yytext_ptr); + int offset = (yy_c_buf_p) - (yytext_ptr); ++(yy_c_buf_p); switch ( yy_get_next_buffer( ) ) @@ -1863,7 +1871,7 @@ */ static void yyensure_buffer_stack (void) { - yy_size_t num_to_alloc; + int num_to_alloc; if (!(yy_buffer_stack)) { @@ -1960,12 +1968,12 @@ * * @return the newly allocated buffer state object. */ -YY_BUFFER_STATE yy_scan_bytes (yyconst char * yybytes, yy_size_t _yybytes_len ) +YY_BUFFER_STATE yy_scan_bytes (yyconst char * yybytes, int _yybytes_len ) { YY_BUFFER_STATE b; char *buf; yy_size_t n; - yy_size_t i; + int i; /* Get memory for full buffer, including space for trailing EOB's. */ n = _yybytes_len + 2; @@ -2047,7 +2055,7 @@ /** Get the length of the current token. * */ -yy_size_t yyget_leng (void) +int yyget_leng (void) { return yyleng; } @@ -2195,7 +2203,7 @@ #define YYTABLES_NAME "yytables" -#line 254 "dtc-lexer.l" +#line 260 "dtc-lexer.l" --- linux-raspi2-4.2.0.orig/scripts/dtc/dtc-parser.tab.c_shipped +++ linux-raspi2-4.2.0/scripts/dtc/dtc-parser.tab.c_shipped @@ -1,19 +1,19 @@ -/* A Bison parser, made by GNU Bison 3.0.2. */ +/* A Bison parser, made by GNU Bison 2.5. */ /* Bison implementation for Yacc-like parsers in C - - Copyright (C) 1984, 1989-1990, 2000-2013 Free Software Foundation, Inc. - + + Copyright (C) 1984, 1989-1990, 2000-2011 Free Software Foundation, Inc. + 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 3 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 . */ @@ -26,7 +26,7 @@ special exception, which will cause the skeleton and the resulting Bison output files to be licensed under the GNU General Public License without this special exception. - + This special exception was added by the Free Software Foundation in version 2.2 of Bison. */ @@ -44,7 +44,7 @@ #define YYBISON 1 /* Bison version. */ -#define YYBISON_VERSION "3.0.2" +#define YYBISON_VERSION "2.5" /* Skeleton name. */ #define YYSKELETON_NAME "yacc.c" @@ -58,13 +58,18 @@ /* Pull parsers. */ #define YYPULL 1 +/* Using locations. */ +#define YYLSP_NEEDED 1 /* Copy the first part of user declarations. */ -#line 20 "dtc-parser.y" /* yacc.c:339 */ + +/* Line 268 of yacc.c */ +#line 20 "dtc-parser.y" #include +#include #include "dtc.h" #include "srcpos.h" @@ -80,15 +85,14 @@ extern struct boot_info *the_boot_info; extern bool treesource_error; -#line 84 "dtc-parser.tab.c" /* yacc.c:339 */ -# ifndef YY_NULLPTR -# if defined __cplusplus && 201103L <= __cplusplus -# define YY_NULLPTR nullptr -# else -# define YY_NULLPTR 0 -# endif -# endif +/* Line 268 of yacc.c */ +#line 91 "dtc-parser.tab.c" + +/* Enabling traces. */ +#ifndef YYDEBUG +# define YYDEBUG 0 +#endif /* Enabling verbose error messages. */ #ifdef YYERROR_VERBOSE @@ -98,53 +102,51 @@ # define YYERROR_VERBOSE 0 #endif -/* In a future release of Bison, this section will be replaced - by #include "dtc-parser.tab.h". */ -#ifndef YY_YY_DTC_PARSER_TAB_H_INCLUDED -# define YY_YY_DTC_PARSER_TAB_H_INCLUDED -/* Debug traces. */ -#ifndef YYDEBUG -# define YYDEBUG 0 -#endif -#if YYDEBUG -extern int yydebug; +/* Enabling the token table. */ +#ifndef YYTOKEN_TABLE +# define YYTOKEN_TABLE 0 #endif -/* Token type. */ + +/* Tokens. */ #ifndef YYTOKENTYPE # define YYTOKENTYPE - enum yytokentype - { - DT_V1 = 258, - DT_MEMRESERVE = 259, - DT_LSHIFT = 260, - DT_RSHIFT = 261, - DT_LE = 262, - DT_GE = 263, - DT_EQ = 264, - DT_NE = 265, - DT_AND = 266, - DT_OR = 267, - DT_BITS = 268, - DT_DEL_PROP = 269, - DT_DEL_NODE = 270, - DT_PROPNODENAME = 271, - DT_LITERAL = 272, - DT_CHAR_LITERAL = 273, - DT_BYTE = 274, - DT_STRING = 275, - DT_LABEL = 276, - DT_REF = 277, - DT_INCBIN = 278 - }; + /* Put the tokens into the symbol table, so that GDB and other debuggers + know about them. */ + enum yytokentype { + DT_V1 = 258, + DT_PLUGIN = 259, + DT_MEMRESERVE = 260, + DT_LSHIFT = 261, + DT_RSHIFT = 262, + DT_LE = 263, + DT_GE = 264, + DT_EQ = 265, + DT_NE = 266, + DT_AND = 267, + DT_OR = 268, + DT_BITS = 269, + DT_DEL_PROP = 270, + DT_DEL_NODE = 271, + DT_PROPNODENAME = 272, + DT_LITERAL = 273, + DT_CHAR_LITERAL = 274, + DT_BYTE = 275, + DT_STRING = 276, + DT_LABEL = 277, + DT_REF = 278, + DT_INCBIN = 279 + }; #endif -/* Value type. */ + + #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED -typedef union YYSTYPE YYSTYPE; -union YYSTYPE +typedef union YYSTYPE { -#line 38 "dtc-parser.y" /* yacc.c:355 */ + +/* Line 293 of yacc.c */ +#line 39 "dtc-parser.y" char *propnodename; char *labelref; @@ -162,37 +164,37 @@ struct node *nodelist; struct reserve_info *re; uint64_t integer; + int is_plugin; -#line 167 "dtc-parser.tab.c" /* yacc.c:355 */ -}; + + +/* Line 293 of yacc.c */ +#line 173 "dtc-parser.tab.c" +} YYSTYPE; # define YYSTYPE_IS_TRIVIAL 1 +# define yystype YYSTYPE /* obsolescent; will be withdrawn */ # define YYSTYPE_IS_DECLARED 1 #endif -/* Location type. */ #if ! defined YYLTYPE && ! defined YYLTYPE_IS_DECLARED -typedef struct YYLTYPE YYLTYPE; -struct YYLTYPE +typedef struct YYLTYPE { int first_line; int first_column; int last_line; int last_column; -}; +} YYLTYPE; +# define yyltype YYLTYPE /* obsolescent; will be withdrawn */ # define YYLTYPE_IS_DECLARED 1 # define YYLTYPE_IS_TRIVIAL 1 #endif -extern YYSTYPE yylval; -extern YYLTYPE yylloc; -int yyparse (void); - -#endif /* !YY_YY_DTC_PARSER_TAB_H_INCLUDED */ - /* Copy the second part of user declarations. */ -#line 196 "dtc-parser.tab.c" /* yacc.c:358 */ + +/* Line 343 of yacc.c */ +#line 198 "dtc-parser.tab.c" #ifdef short # undef short @@ -206,8 +208,11 @@ #ifdef YYTYPE_INT8 typedef YYTYPE_INT8 yytype_int8; -#else +#elif (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) typedef signed char yytype_int8; +#else +typedef short int yytype_int8; #endif #ifdef YYTYPE_UINT16 @@ -227,7 +232,8 @@ # define YYSIZE_T __SIZE_TYPE__ # elif defined size_t # define YYSIZE_T size_t -# elif ! defined YYSIZE_T +# elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) # include /* INFRINGES ON USER NAME SPACE */ # define YYSIZE_T size_t # else @@ -241,68 +247,39 @@ # if defined YYENABLE_NLS && YYENABLE_NLS # if ENABLE_NLS # include /* INFRINGES ON USER NAME SPACE */ -# define YY_(Msgid) dgettext ("bison-runtime", Msgid) +# define YY_(msgid) dgettext ("bison-runtime", msgid) # endif # endif # ifndef YY_ -# define YY_(Msgid) Msgid -# endif -#endif - -#ifndef YY_ATTRIBUTE -# if (defined __GNUC__ \ - && (2 < __GNUC__ || (__GNUC__ == 2 && 96 <= __GNUC_MINOR__))) \ - || defined __SUNPRO_C && 0x5110 <= __SUNPRO_C -# define YY_ATTRIBUTE(Spec) __attribute__(Spec) -# else -# define YY_ATTRIBUTE(Spec) /* empty */ -# endif -#endif - -#ifndef YY_ATTRIBUTE_PURE -# define YY_ATTRIBUTE_PURE YY_ATTRIBUTE ((__pure__)) -#endif - -#ifndef YY_ATTRIBUTE_UNUSED -# define YY_ATTRIBUTE_UNUSED YY_ATTRIBUTE ((__unused__)) -#endif - -#if !defined _Noreturn \ - && (!defined __STDC_VERSION__ || __STDC_VERSION__ < 201112) -# if defined _MSC_VER && 1200 <= _MSC_VER -# define _Noreturn __declspec (noreturn) -# else -# define _Noreturn YY_ATTRIBUTE ((__noreturn__)) +# define YY_(msgid) msgid # endif #endif /* Suppress unused-variable warnings by "using" E. */ #if ! defined lint || defined __GNUC__ -# define YYUSE(E) ((void) (E)) +# define YYUSE(e) ((void) (e)) #else -# define YYUSE(E) /* empty */ +# define YYUSE(e) /* empty */ #endif -#if defined __GNUC__ && 407 <= __GNUC__ * 100 + __GNUC_MINOR__ -/* Suppress an incorrect diagnostic about yylval being uninitialized. */ -# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \ - _Pragma ("GCC diagnostic push") \ - _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")\ - _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"") -# define YY_IGNORE_MAYBE_UNINITIALIZED_END \ - _Pragma ("GCC diagnostic pop") +/* Identity function, used to suppress warnings about constant conditions. */ +#ifndef lint +# define YYID(n) (n) #else -# define YY_INITIAL_VALUE(Value) Value -#endif -#ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN -# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN -# define YY_IGNORE_MAYBE_UNINITIALIZED_END +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static int +YYID (int yyi) +#else +static int +YYID (yyi) + int yyi; #endif -#ifndef YY_INITIAL_VALUE -# define YY_INITIAL_VALUE(Value) /* Nothing. */ +{ + return yyi; +} #endif - #if ! defined yyoverflow || YYERROR_VERBOSE /* The parser invokes alloca or malloc; define the necessary symbols. */ @@ -320,9 +297,9 @@ # define alloca _alloca # else # define YYSTACK_ALLOC alloca -# if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS +# if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) # include /* INFRINGES ON USER NAME SPACE */ - /* Use EXIT_SUCCESS as a witness for stdlib.h. */ # ifndef EXIT_SUCCESS # define EXIT_SUCCESS 0 # endif @@ -332,8 +309,8 @@ # endif # ifdef YYSTACK_ALLOC - /* Pacify GCC's 'empty if-body' warning. */ -# define YYSTACK_FREE(Ptr) do { /* empty */; } while (0) + /* Pacify GCC's `empty if-body' warning. */ +# define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0)) # ifndef YYSTACK_ALLOC_MAXIMUM /* The OS might guarantee only one guard page at the bottom of the stack, and a page size can be as small as 4096 bytes. So we cannot safely @@ -349,7 +326,7 @@ # endif # if (defined __cplusplus && ! defined EXIT_SUCCESS \ && ! ((defined YYMALLOC || defined malloc) \ - && (defined YYFREE || defined free))) + && (defined YYFREE || defined free))) # include /* INFRINGES ON USER NAME SPACE */ # ifndef EXIT_SUCCESS # define EXIT_SUCCESS 0 @@ -357,13 +334,15 @@ # endif # ifndef YYMALLOC # define YYMALLOC malloc -# if ! defined malloc && ! defined EXIT_SUCCESS +# if ! defined malloc && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */ # endif # endif # ifndef YYFREE # define YYFREE free -# if ! defined free && ! defined EXIT_SUCCESS +# if ! defined free && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) void free (void *); /* INFRINGES ON USER NAME SPACE */ # endif # endif @@ -373,8 +352,8 @@ #if (! defined yyoverflow \ && (! defined __cplusplus \ - || (defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL \ - && defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL))) + || (defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL \ + && defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL))) /* A type that is properly aligned for any stack member. */ union yyalloc @@ -400,35 +379,35 @@ elements in the stack, and YYPTR gives the new location of the stack. Advance YYPTR to a properly aligned location for the next stack. */ -# define YYSTACK_RELOCATE(Stack_alloc, Stack) \ - do \ - { \ - YYSIZE_T yynewbytes; \ - YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \ - Stack = &yyptr->Stack_alloc; \ - yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \ - yyptr += yynewbytes / sizeof (*yyptr); \ - } \ - while (0) +# define YYSTACK_RELOCATE(Stack_alloc, Stack) \ + do \ + { \ + YYSIZE_T yynewbytes; \ + YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \ + Stack = &yyptr->Stack_alloc; \ + yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \ + yyptr += yynewbytes / sizeof (*yyptr); \ + } \ + while (YYID (0)) #endif #if defined YYCOPY_NEEDED && YYCOPY_NEEDED -/* Copy COUNT objects from SRC to DST. The source and destination do +/* Copy COUNT objects from FROM to TO. The source and destination do not overlap. */ # ifndef YYCOPY # if defined __GNUC__ && 1 < __GNUC__ -# define YYCOPY(Dst, Src, Count) \ - __builtin_memcpy (Dst, Src, (Count) * sizeof (*(Src))) +# define YYCOPY(To, From, Count) \ + __builtin_memcpy (To, From, (Count) * sizeof (*(From))) # else -# define YYCOPY(Dst, Src, Count) \ - do \ - { \ - YYSIZE_T yyi; \ - for (yyi = 0; yyi < (Count); yyi++) \ - (Dst)[yyi] = (Src)[yyi]; \ - } \ - while (0) +# define YYCOPY(To, From, Count) \ + do \ + { \ + YYSIZE_T yyi; \ + for (yyi = 0; yyi < (Count); yyi++) \ + (To)[yyi] = (From)[yyi]; \ + } \ + while (YYID (0)) # endif # endif #endif /* !YYCOPY_NEEDED */ @@ -439,39 +418,37 @@ #define YYLAST 136 /* YYNTOKENS -- Number of terminals. */ -#define YYNTOKENS 47 +#define YYNTOKENS 48 /* YYNNTS -- Number of nonterminals. */ -#define YYNNTS 28 +#define YYNNTS 29 /* YYNRULES -- Number of rules. */ -#define YYNRULES 80 -/* YYNSTATES -- Number of states. */ -#define YYNSTATES 144 +#define YYNRULES 82 +/* YYNRULES -- Number of states. */ +#define YYNSTATES 147 -/* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned - by yylex, with out-of-bounds checking. */ +/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ #define YYUNDEFTOK 2 -#define YYMAXUTOK 278 +#define YYMAXUTOK 279 -#define YYTRANSLATE(YYX) \ +#define YYTRANSLATE(YYX) \ ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) -/* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM - as returned by yylex, without out-of-bounds checking. */ +/* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */ static const yytype_uint8 yytranslate[] = { 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 46, 2, 2, 2, 44, 40, 2, - 32, 34, 43, 41, 33, 42, 2, 25, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 37, 24, - 35, 28, 29, 36, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 47, 2, 2, 2, 45, 41, 2, + 33, 35, 44, 42, 34, 43, 2, 26, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 38, 25, + 36, 29, 30, 37, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 30, 2, 31, 39, 2, 2, 2, 2, 2, + 2, 31, 2, 32, 40, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 26, 38, 27, 45, 2, 2, 2, + 2, 2, 2, 27, 39, 28, 46, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, @@ -486,292 +463,335 @@ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, - 15, 16, 17, 18, 19, 20, 21, 22, 23 + 15, 16, 17, 18, 19, 20, 21, 22, 23, 24 }; #if YYDEBUG - /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ +/* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in + YYRHS. */ +static const yytype_uint16 yyprhs[] = +{ + 0, 0, 3, 9, 10, 13, 14, 17, 22, 25, + 28, 32, 37, 41, 46, 52, 53, 56, 61, 64, + 68, 71, 74, 78, 83, 86, 96, 102, 105, 106, + 109, 112, 116, 118, 121, 124, 127, 129, 131, 135, + 137, 139, 145, 147, 151, 153, 157, 159, 163, 165, + 169, 171, 175, 177, 181, 185, 187, 191, 195, 199, + 203, 207, 211, 213, 217, 221, 223, 227, 231, 235, + 237, 239, 242, 245, 248, 249, 252, 255, 256, 259, + 262, 265, 269 +}; + +/* YYRHS -- A `-1'-separated list of the rules' RHS. */ +static const yytype_int8 yyrhs[] = +{ + 49, 0, -1, 3, 25, 50, 51, 53, -1, -1, + 4, 25, -1, -1, 52, 51, -1, 5, 60, 60, + 25, -1, 22, 52, -1, 26, 54, -1, 53, 26, + 54, -1, 53, 22, 23, 54, -1, 53, 23, 54, + -1, 53, 16, 23, 25, -1, 27, 55, 75, 28, + 25, -1, -1, 55, 56, -1, 17, 29, 57, 25, + -1, 17, 25, -1, 15, 17, 25, -1, 22, 56, + -1, 58, 21, -1, 58, 59, 30, -1, 58, 31, + 74, 32, -1, 58, 23, -1, 58, 24, 33, 21, + 34, 60, 34, 60, 35, -1, 58, 24, 33, 21, + 35, -1, 57, 22, -1, -1, 57, 34, -1, 58, + 22, -1, 14, 18, 36, -1, 36, -1, 59, 60, + -1, 59, 23, -1, 59, 22, -1, 18, -1, 19, + -1, 33, 61, 35, -1, 62, -1, 63, -1, 63, + 37, 61, 38, 62, -1, 64, -1, 63, 13, 64, + -1, 65, -1, 64, 12, 65, -1, 66, -1, 65, + 39, 66, -1, 67, -1, 66, 40, 67, -1, 68, + -1, 67, 41, 68, -1, 69, -1, 68, 10, 69, + -1, 68, 11, 69, -1, 70, -1, 69, 36, 70, + -1, 69, 30, 70, -1, 69, 8, 70, -1, 69, + 9, 70, -1, 70, 6, 71, -1, 70, 7, 71, + -1, 71, -1, 71, 42, 72, -1, 71, 43, 72, + -1, 72, -1, 72, 44, 73, -1, 72, 26, 73, + -1, 72, 45, 73, -1, 73, -1, 60, -1, 43, + 73, -1, 46, 73, -1, 47, 73, -1, -1, 74, + 20, -1, 74, 22, -1, -1, 76, 75, -1, 76, + 56, -1, 17, 54, -1, 16, 17, 25, -1, 22, + 76, -1 +}; + +/* YYRLINE[YYN] -- source line where rule number YYN was defined. */ static const yytype_uint16 yyrline[] = { - 0, 104, 104, 113, 116, 123, 127, 135, 139, 144, - 155, 165, 180, 188, 191, 198, 202, 206, 210, 218, - 222, 226, 230, 234, 250, 260, 268, 271, 275, 282, - 298, 303, 322, 336, 343, 344, 345, 352, 356, 357, - 361, 362, 366, 367, 371, 372, 376, 377, 381, 382, - 386, 387, 388, 392, 393, 394, 395, 396, 400, 401, - 402, 406, 407, 408, 412, 413, 414, 415, 419, 420, - 421, 422, 427, 430, 434, 442, 445, 449, 457, 461, - 465 + 0, 108, 108, 119, 122, 130, 133, 140, 144, 152, + 156, 161, 172, 182, 197, 205, 208, 215, 219, 223, + 227, 235, 239, 243, 247, 251, 267, 277, 285, 288, + 292, 299, 315, 320, 339, 353, 360, 361, 362, 369, + 373, 374, 378, 379, 383, 384, 388, 389, 393, 394, + 398, 399, 403, 404, 405, 409, 410, 411, 412, 413, + 417, 418, 419, 423, 424, 425, 429, 430, 431, 432, + 436, 437, 438, 439, 444, 447, 451, 459, 462, 466, + 474, 478, 482 }; #endif -#if YYDEBUG || YYERROR_VERBOSE || 0 +#if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM. First, the terminals, then, starting at YYNTOKENS, nonterminals. */ static const char *const yytname[] = { - "$end", "error", "$undefined", "DT_V1", "DT_MEMRESERVE", "DT_LSHIFT", - "DT_RSHIFT", "DT_LE", "DT_GE", "DT_EQ", "DT_NE", "DT_AND", "DT_OR", - "DT_BITS", "DT_DEL_PROP", "DT_DEL_NODE", "DT_PROPNODENAME", "DT_LITERAL", - "DT_CHAR_LITERAL", "DT_BYTE", "DT_STRING", "DT_LABEL", "DT_REF", - "DT_INCBIN", "';'", "'/'", "'{'", "'}'", "'='", "'>'", "'['", "']'", - "'('", "','", "')'", "'<'", "'?'", "':'", "'|'", "'^'", "'&'", "'+'", - "'-'", "'*'", "'%'", "'~'", "'!'", "$accept", "sourcefile", - "memreserves", "memreserve", "devicetree", "nodedef", "proplist", - "propdef", "propdata", "propdataprefix", "arrayprefix", "integer_prim", - "integer_expr", "integer_trinary", "integer_or", "integer_and", - "integer_bitor", "integer_bitxor", "integer_bitand", "integer_eq", - "integer_rela", "integer_shift", "integer_add", "integer_mul", - "integer_unary", "bytestring", "subnodes", "subnode", YY_NULLPTR + "$end", "error", "$undefined", "DT_V1", "DT_PLUGIN", "DT_MEMRESERVE", + "DT_LSHIFT", "DT_RSHIFT", "DT_LE", "DT_GE", "DT_EQ", "DT_NE", "DT_AND", + "DT_OR", "DT_BITS", "DT_DEL_PROP", "DT_DEL_NODE", "DT_PROPNODENAME", + "DT_LITERAL", "DT_CHAR_LITERAL", "DT_BYTE", "DT_STRING", "DT_LABEL", + "DT_REF", "DT_INCBIN", "';'", "'/'", "'{'", "'}'", "'='", "'>'", "'['", + "']'", "'('", "','", "')'", "'<'", "'?'", "':'", "'|'", "'^'", "'&'", + "'+'", "'-'", "'*'", "'%'", "'~'", "'!'", "$accept", "sourcefile", + "plugindecl", "memreserves", "memreserve", "devicetree", "nodedef", + "proplist", "propdef", "propdata", "propdataprefix", "arrayprefix", + "integer_prim", "integer_expr", "integer_trinary", "integer_or", + "integer_and", "integer_bitor", "integer_bitxor", "integer_bitand", + "integer_eq", "integer_rela", "integer_shift", "integer_add", + "integer_mul", "integer_unary", "bytestring", "subnodes", "subnode", 0 }; #endif # ifdef YYPRINT -/* YYTOKNUM[NUM] -- (External) token number corresponding to the - (internal) symbol number NUM (which must be that of a token). */ +/* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to + token YYLEX-NUM. */ static const yytype_uint16 yytoknum[] = { 0, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, - 275, 276, 277, 278, 59, 47, 123, 125, 61, 62, - 91, 93, 40, 44, 41, 60, 63, 58, 124, 94, - 38, 43, 45, 42, 37, 126, 33 + 275, 276, 277, 278, 279, 59, 47, 123, 125, 61, + 62, 91, 93, 40, 44, 41, 60, 63, 58, 124, + 94, 38, 43, 45, 42, 37, 126, 33 }; # endif -#define YYPACT_NINF -81 - -#define yypact_value_is_default(Yystate) \ - (!!((Yystate) == (-81))) - -#define YYTABLE_NINF -1 - -#define yytable_value_is_error(Yytable_value) \ - 0 - - /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing - STATE-NUM. */ -static const yytype_int8 yypact[] = +/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ +static const yytype_uint8 yyr1[] = { - 16, -11, 21, 10, -81, 25, 10, 19, 10, -81, - -81, -9, 25, -81, 2, 51, -81, -9, -9, -9, - -81, 1, -81, -6, 50, 14, 28, 29, 36, 3, - 58, 44, -3, -81, 47, -81, -81, 65, 68, 2, - 2, -81, -81, -81, -81, -9, -9, -9, -9, -9, - -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, - -9, -9, -9, -9, -81, 63, 69, 2, -81, -81, - 50, 57, 14, 28, 29, 36, 3, 3, 58, 58, - 58, 58, 44, 44, -3, -3, -81, -81, -81, 79, - 80, -8, 63, -81, 72, 63, -81, -81, -9, 76, - 77, -81, -81, -81, -81, -81, 78, -81, -81, -81, - -81, -81, 35, 4, -81, -81, -81, -81, 86, -81, - -81, -81, 73, -81, -81, 33, 71, 84, 39, -81, - -81, -81, -81, -81, 41, -81, -81, -81, 25, -81, - 74, 25, 75, -81 + 0, 48, 49, 50, 50, 51, 51, 52, 52, 53, + 53, 53, 53, 53, 54, 55, 55, 56, 56, 56, + 56, 57, 57, 57, 57, 57, 57, 57, 58, 58, + 58, 59, 59, 59, 59, 59, 60, 60, 60, 61, + 62, 62, 63, 63, 64, 64, 65, 65, 66, 66, + 67, 67, 68, 68, 68, 69, 69, 69, 69, 69, + 70, 70, 70, 71, 71, 71, 72, 72, 72, 72, + 73, 73, 73, 73, 74, 74, 74, 75, 75, 75, + 76, 76, 76 }; - /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. - Performed when YYTABLE does not specify something else to do. Zero - means the default is an error. */ -static const yytype_uint8 yydefact[] = +/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ +static const yytype_uint8 yyr2[] = { - 0, 0, 0, 3, 1, 0, 0, 0, 3, 34, - 35, 0, 0, 6, 0, 2, 4, 0, 0, 0, - 68, 0, 37, 38, 40, 42, 44, 46, 48, 50, - 53, 60, 63, 67, 0, 13, 7, 0, 0, 0, - 0, 69, 70, 71, 36, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 5, 75, 0, 0, 10, 8, - 41, 0, 43, 45, 47, 49, 51, 52, 56, 57, - 55, 54, 58, 59, 61, 62, 65, 64, 66, 0, - 0, 0, 0, 14, 0, 75, 11, 9, 0, 0, - 0, 16, 26, 78, 18, 80, 0, 77, 76, 39, - 17, 79, 0, 0, 12, 25, 15, 27, 0, 19, - 28, 22, 0, 72, 30, 0, 0, 0, 0, 33, - 32, 20, 31, 29, 0, 73, 74, 21, 0, 24, - 0, 0, 0, 23 + 0, 2, 5, 0, 2, 0, 2, 4, 2, 2, + 3, 4, 3, 4, 5, 0, 2, 4, 2, 3, + 2, 2, 3, 4, 2, 9, 5, 2, 0, 2, + 2, 3, 1, 2, 2, 2, 1, 1, 3, 1, + 1, 5, 1, 3, 1, 3, 1, 3, 1, 3, + 1, 3, 1, 3, 3, 1, 3, 3, 3, 3, + 3, 3, 1, 3, 3, 1, 3, 3, 3, 1, + 1, 2, 2, 2, 0, 2, 2, 0, 2, 2, + 2, 3, 2 }; - /* YYPGOTO[NTERM-NUM]. */ -static const yytype_int8 yypgoto[] = +/* YYDEFACT[STATE-NAME] -- Default reduction number in state STATE-NUM. + Performed when YYTABLE doesn't specify something else to do. Zero + means the default is an error. */ +static const yytype_uint8 yydefact[] = { - -81, -81, 100, 104, -81, -38, -81, -80, -81, -81, - -81, -5, 66, 13, -81, 70, 67, 81, 64, 82, - 37, 27, 34, 38, -14, -81, 22, 24 + 0, 0, 0, 3, 1, 0, 5, 4, 0, 0, + 0, 5, 36, 37, 0, 0, 8, 0, 2, 6, + 0, 0, 0, 70, 0, 39, 40, 42, 44, 46, + 48, 50, 52, 55, 62, 65, 69, 0, 15, 9, + 0, 0, 0, 0, 71, 72, 73, 38, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 7, 77, 0, + 0, 12, 10, 43, 0, 45, 47, 49, 51, 53, + 54, 58, 59, 57, 56, 60, 61, 63, 64, 67, + 66, 68, 0, 0, 0, 0, 16, 0, 77, 13, + 11, 0, 0, 0, 18, 28, 80, 20, 82, 0, + 79, 78, 41, 19, 81, 0, 0, 14, 27, 17, + 29, 0, 21, 30, 24, 0, 74, 32, 0, 0, + 0, 0, 35, 34, 22, 33, 31, 0, 75, 76, + 23, 0, 26, 0, 0, 0, 25 }; - /* YYDEFGOTO[NTERM-NUM]. */ +/* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int16 yydefgoto[] = { - -1, 2, 7, 8, 15, 36, 65, 93, 112, 113, - 125, 20, 21, 22, 23, 24, 25, 26, 27, 28, - 29, 30, 31, 32, 33, 128, 94, 95 + -1, 2, 6, 10, 11, 18, 39, 68, 96, 115, + 116, 128, 23, 24, 25, 26, 27, 28, 29, 30, + 31, 32, 33, 34, 35, 36, 131, 97, 98 }; - /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If - positive, shift that token. If negative, reduce the rule whose - number is the opposite. If YYTABLE_NINF, syntax error. */ -static const yytype_uint8 yytable[] = +/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing + STATE-NUM. */ +#define YYPACT_NINF -84 +static const yytype_int8 yypact[] = { - 12, 68, 69, 41, 42, 43, 45, 34, 9, 10, - 53, 54, 104, 3, 5, 107, 101, 118, 35, 1, - 102, 4, 61, 11, 119, 120, 121, 122, 35, 97, - 46, 6, 55, 17, 123, 44, 18, 19, 56, 124, - 62, 63, 9, 10, 14, 51, 52, 86, 87, 88, - 9, 10, 48, 103, 129, 130, 115, 11, 135, 116, - 136, 47, 131, 57, 58, 11, 37, 49, 117, 50, - 137, 64, 38, 39, 138, 139, 40, 89, 90, 91, - 78, 79, 80, 81, 92, 59, 60, 66, 76, 77, - 67, 82, 83, 96, 98, 99, 100, 84, 85, 106, - 110, 111, 114, 126, 134, 127, 133, 141, 16, 143, - 13, 109, 71, 74, 72, 70, 105, 108, 0, 0, - 132, 0, 0, 0, 0, 0, 0, 0, 0, 73, - 0, 0, 75, 140, 0, 0, 142 + 15, -12, 35, 42, -84, 27, 9, -84, 24, 9, + 43, 9, -84, -84, -10, 24, -84, 60, 44, -84, + -10, -10, -10, -84, 55, -84, -7, 52, 53, 51, + 54, 10, 2, 38, 37, -4, -84, 68, -84, -84, + 71, 73, 60, 60, -84, -84, -84, -84, -10, -10, + -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, + -10, -10, -10, -10, -10, -10, -10, -84, 56, 72, + 60, -84, -84, 52, 61, 53, 51, 54, 10, 2, + 2, 38, 38, 38, 38, 37, 37, -4, -4, -84, + -84, -84, 81, 83, 34, 56, -84, 74, 56, -84, + -84, -10, 76, 78, -84, -84, -84, -84, -84, 79, + -84, -84, -84, -84, -84, -6, 3, -84, -84, -84, + -84, 87, -84, -84, -84, 75, -84, -84, 32, 70, + 86, 36, -84, -84, -84, -84, -84, 47, -84, -84, + -84, 24, -84, 77, 24, 80, -84 }; -static const yytype_int16 yycheck[] = +/* YYPGOTO[NTERM-NUM]. */ +static const yytype_int8 yypgoto[] = { - 5, 39, 40, 17, 18, 19, 12, 12, 17, 18, - 7, 8, 92, 24, 4, 95, 24, 13, 26, 3, - 28, 0, 25, 32, 20, 21, 22, 23, 26, 67, - 36, 21, 29, 42, 30, 34, 45, 46, 35, 35, - 43, 44, 17, 18, 25, 9, 10, 61, 62, 63, - 17, 18, 38, 91, 21, 22, 21, 32, 19, 24, - 21, 11, 29, 5, 6, 32, 15, 39, 33, 40, - 31, 24, 21, 22, 33, 34, 25, 14, 15, 16, - 53, 54, 55, 56, 21, 41, 42, 22, 51, 52, - 22, 57, 58, 24, 37, 16, 16, 59, 60, 27, - 24, 24, 24, 17, 20, 32, 35, 33, 8, 34, - 6, 98, 46, 49, 47, 45, 92, 95, -1, -1, - 125, -1, -1, -1, -1, -1, -1, -1, -1, 48, - -1, -1, 50, 138, -1, -1, 141 + -84, -84, -84, 98, 101, -84, -41, -84, -83, -84, + -84, -84, -8, 63, 12, -84, 66, 67, 65, 69, + 82, 29, 18, 25, 26, -17, -84, 20, 28 }; - /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing - symbol of state STATE-NUM. */ -static const yytype_uint8 yystos[] = +/* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If + positive, shift that token. If negative, reduce the rule which + number is the opposite. If YYTABLE_NINF, syntax error. */ +#define YYTABLE_NINF -1 +static const yytype_uint8 yytable[] = { - 0, 3, 48, 24, 0, 4, 21, 49, 50, 17, - 18, 32, 58, 50, 25, 51, 49, 42, 45, 46, - 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, - 68, 69, 70, 71, 58, 26, 52, 15, 21, 22, - 25, 71, 71, 71, 34, 12, 36, 11, 38, 39, - 40, 9, 10, 7, 8, 29, 35, 5, 6, 41, - 42, 25, 43, 44, 24, 53, 22, 22, 52, 52, - 62, 59, 63, 64, 65, 66, 67, 67, 68, 68, - 68, 68, 69, 69, 70, 70, 71, 71, 71, 14, - 15, 16, 21, 54, 73, 74, 24, 52, 37, 16, - 16, 24, 28, 52, 54, 74, 27, 54, 73, 60, - 24, 24, 55, 56, 24, 21, 24, 33, 13, 20, - 21, 22, 23, 30, 35, 57, 17, 32, 72, 21, - 22, 29, 58, 35, 20, 19, 21, 31, 33, 34, - 58, 33, 58, 34 + 15, 71, 72, 44, 45, 46, 48, 37, 12, 13, + 56, 57, 107, 3, 8, 110, 118, 121, 1, 119, + 54, 55, 64, 14, 122, 123, 124, 125, 120, 100, + 49, 9, 58, 20, 126, 4, 21, 22, 59, 127, + 65, 66, 12, 13, 60, 61, 5, 89, 90, 91, + 12, 13, 7, 106, 132, 133, 138, 14, 139, 104, + 40, 38, 134, 105, 50, 14, 41, 42, 140, 17, + 43, 92, 93, 94, 81, 82, 83, 84, 95, 62, + 63, 141, 142, 79, 80, 85, 86, 38, 87, 88, + 47, 52, 51, 67, 69, 53, 70, 99, 102, 101, + 103, 113, 109, 114, 117, 129, 136, 137, 130, 19, + 16, 144, 74, 112, 73, 146, 76, 75, 111, 0, + 135, 77, 0, 108, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 143, 0, 78, 145 }; - /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ -static const yytype_uint8 yyr1[] = +#define yypact_value_is_default(yystate) \ + ((yystate) == (-84)) + +#define yytable_value_is_error(yytable_value) \ + YYID (0) + +static const yytype_int16 yycheck[] = { - 0, 47, 48, 49, 49, 50, 50, 51, 51, 51, - 51, 51, 52, 53, 53, 54, 54, 54, 54, 55, - 55, 55, 55, 55, 55, 55, 56, 56, 56, 57, - 57, 57, 57, 57, 58, 58, 58, 59, 60, 60, - 61, 61, 62, 62, 63, 63, 64, 64, 65, 65, - 66, 66, 66, 67, 67, 67, 67, 67, 68, 68, - 68, 69, 69, 69, 70, 70, 70, 70, 71, 71, - 71, 71, 72, 72, 72, 73, 73, 73, 74, 74, - 74 + 8, 42, 43, 20, 21, 22, 13, 15, 18, 19, + 8, 9, 95, 25, 5, 98, 22, 14, 3, 25, + 10, 11, 26, 33, 21, 22, 23, 24, 34, 70, + 37, 22, 30, 43, 31, 0, 46, 47, 36, 36, + 44, 45, 18, 19, 6, 7, 4, 64, 65, 66, + 18, 19, 25, 94, 22, 23, 20, 33, 22, 25, + 16, 27, 30, 29, 12, 33, 22, 23, 32, 26, + 26, 15, 16, 17, 56, 57, 58, 59, 22, 42, + 43, 34, 35, 54, 55, 60, 61, 27, 62, 63, + 35, 40, 39, 25, 23, 41, 23, 25, 17, 38, + 17, 25, 28, 25, 25, 18, 36, 21, 33, 11, + 9, 34, 49, 101, 48, 35, 51, 50, 98, -1, + 128, 52, -1, 95, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 141, -1, 53, 144 }; - /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */ -static const yytype_uint8 yyr2[] = +/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing + symbol of state STATE-NUM. */ +static const yytype_uint8 yystos[] = { - 0, 2, 4, 0, 2, 4, 2, 2, 3, 4, - 3, 4, 5, 0, 2, 4, 2, 3, 2, 2, - 3, 4, 2, 9, 5, 2, 0, 2, 2, 3, - 1, 2, 2, 2, 1, 1, 3, 1, 1, 5, - 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, - 1, 3, 3, 1, 3, 3, 3, 3, 3, 3, - 1, 3, 3, 1, 3, 3, 3, 1, 1, 2, - 2, 2, 0, 2, 2, 0, 2, 2, 2, 3, - 2 + 0, 3, 49, 25, 0, 4, 50, 25, 5, 22, + 51, 52, 18, 19, 33, 60, 52, 26, 53, 51, + 43, 46, 47, 60, 61, 62, 63, 64, 65, 66, + 67, 68, 69, 70, 71, 72, 73, 60, 27, 54, + 16, 22, 23, 26, 73, 73, 73, 35, 13, 37, + 12, 39, 40, 41, 10, 11, 8, 9, 30, 36, + 6, 7, 42, 43, 26, 44, 45, 25, 55, 23, + 23, 54, 54, 64, 61, 65, 66, 67, 68, 69, + 69, 70, 70, 70, 70, 71, 71, 72, 72, 73, + 73, 73, 15, 16, 17, 22, 56, 75, 76, 25, + 54, 38, 17, 17, 25, 29, 54, 56, 76, 28, + 56, 75, 62, 25, 25, 57, 58, 25, 22, 25, + 34, 14, 21, 22, 23, 24, 31, 36, 59, 18, + 33, 74, 22, 23, 30, 60, 36, 21, 20, 22, + 32, 34, 35, 60, 34, 60, 35 }; - -#define yyerrok (yyerrstatus = 0) -#define yyclearin (yychar = YYEMPTY) -#define YYEMPTY (-2) -#define YYEOF 0 - -#define YYACCEPT goto yyacceptlab -#define YYABORT goto yyabortlab -#define YYERROR goto yyerrorlab - +#define yyerrok (yyerrstatus = 0) +#define yyclearin (yychar = YYEMPTY) +#define YYEMPTY (-2) +#define YYEOF 0 + +#define YYACCEPT goto yyacceptlab +#define YYABORT goto yyabortlab +#define YYERROR goto yyerrorlab + + +/* Like YYERROR except do call yyerror. This remains here temporarily + to ease the transition to the new meaning of YYERROR, for GCC. + Once GCC version 2 has supplanted version 1, this can go. However, + YYFAIL appears to be in use. Nevertheless, it is formally deprecated + in Bison 2.4.2's NEWS entry, where a plan to phase it out is + discussed. */ + +#define YYFAIL goto yyerrlab +#if defined YYFAIL + /* This is here to suppress warnings from the GCC cpp's + -Wunused-macros. Normally we don't worry about that warning, but + some users do, and we want to make it easy for users to remove + YYFAIL uses, which will produce warnings from Bison 2.5. */ +#endif #define YYRECOVERING() (!!yyerrstatus) -#define YYBACKUP(Token, Value) \ -do \ - if (yychar == YYEMPTY) \ - { \ - yychar = (Token); \ - yylval = (Value); \ - YYPOPSTACK (yylen); \ - yystate = *yyssp; \ - goto yybackup; \ - } \ - else \ - { \ +#define YYBACKUP(Token, Value) \ +do \ + if (yychar == YYEMPTY && yylen == 1) \ + { \ + yychar = (Token); \ + yylval = (Value); \ + YYPOPSTACK (1); \ + goto yybackup; \ + } \ + else \ + { \ yyerror (YY_("syntax error: cannot back up")); \ - YYERROR; \ - } \ -while (0) - -/* Error token number */ -#define YYTERROR 1 -#define YYERRCODE 256 + YYERROR; \ + } \ +while (YYID (0)) + + +#define YYTERROR 1 +#define YYERRCODE 256 /* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N]. If N is 0, then set CURRENT to the empty location which ends the previous symbol: RHS[0] (always defined). */ +#define YYRHSLOC(Rhs, K) ((Rhs)[K]) #ifndef YYLLOC_DEFAULT -# define YYLLOC_DEFAULT(Current, Rhs, N) \ - do \ - if (N) \ - { \ - (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \ - (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \ - (Current).last_line = YYRHSLOC (Rhs, N).last_line; \ - (Current).last_column = YYRHSLOC (Rhs, N).last_column; \ - } \ - else \ - { \ - (Current).first_line = (Current).last_line = \ - YYRHSLOC (Rhs, 0).last_line; \ - (Current).first_column = (Current).last_column = \ - YYRHSLOC (Rhs, 0).last_column; \ - } \ - while (0) +# define YYLLOC_DEFAULT(Current, Rhs, N) \ + do \ + if (YYID (N)) \ + { \ + (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \ + (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \ + (Current).last_line = YYRHSLOC (Rhs, N).last_line; \ + (Current).last_column = YYRHSLOC (Rhs, N).last_column; \ + } \ + else \ + { \ + (Current).first_line = (Current).last_line = \ + YYRHSLOC (Rhs, 0).last_line; \ + (Current).first_column = (Current).last_column = \ + YYRHSLOC (Rhs, 0).last_column; \ + } \ + while (YYID (0)) #endif -#define YYRHSLOC(Rhs, K) ((Rhs)[K]) - - -/* Enable debugging if requested. */ -#if YYDEBUG - -# ifndef YYFPRINTF -# include /* INFRINGES ON USER NAME SPACE */ -# define YYFPRINTF fprintf -# endif - -# define YYDPRINTF(Args) \ -do { \ - if (yydebug) \ - YYFPRINTF Args; \ -} while (0) - /* YY_LOCATION_PRINT -- Print the location on the stream. This macro was not mandated originally: define only if we know @@ -779,73 +799,82 @@ #ifndef YY_LOCATION_PRINT # if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL - -/* Print *YYLOCP on YYO. Private, do not rely on its existence. */ - -YY_ATTRIBUTE_UNUSED -static unsigned -yy_location_print_ (FILE *yyo, YYLTYPE const * const yylocp) -{ - unsigned res = 0; - int end_col = 0 != yylocp->last_column ? yylocp->last_column - 1 : 0; - if (0 <= yylocp->first_line) - { - res += YYFPRINTF (yyo, "%d", yylocp->first_line); - if (0 <= yylocp->first_column) - res += YYFPRINTF (yyo, ".%d", yylocp->first_column); - } - if (0 <= yylocp->last_line) - { - if (yylocp->first_line < yylocp->last_line) - { - res += YYFPRINTF (yyo, "-%d", yylocp->last_line); - if (0 <= end_col) - res += YYFPRINTF (yyo, ".%d", end_col); - } - else if (0 <= end_col && yylocp->first_column < end_col) - res += YYFPRINTF (yyo, "-%d", end_col); - } - return res; - } - -# define YY_LOCATION_PRINT(File, Loc) \ - yy_location_print_ (File, &(Loc)) - +# define YY_LOCATION_PRINT(File, Loc) \ + fprintf (File, "%d.%d-%d.%d", \ + (Loc).first_line, (Loc).first_column, \ + (Loc).last_line, (Loc).last_column) # else # define YY_LOCATION_PRINT(File, Loc) ((void) 0) # endif #endif -# define YY_SYMBOL_PRINT(Title, Type, Value, Location) \ -do { \ - if (yydebug) \ - { \ - YYFPRINTF (stderr, "%s ", Title); \ - yy_symbol_print (stderr, \ - Type, Value, Location); \ - YYFPRINTF (stderr, "\n"); \ - } \ -} while (0) +/* YYLEX -- calling `yylex' with the right arguments. */ +#ifdef YYLEX_PARAM +# define YYLEX yylex (YYLEX_PARAM) +#else +# define YYLEX yylex () +#endif -/*----------------------------------------. -| Print this symbol's value on YYOUTPUT. | -`----------------------------------------*/ +/* Enable debugging if requested. */ +#if YYDEBUG +# ifndef YYFPRINTF +# include /* INFRINGES ON USER NAME SPACE */ +# define YYFPRINTF fprintf +# endif + +# define YYDPRINTF(Args) \ +do { \ + if (yydebug) \ + YYFPRINTF Args; \ +} while (YYID (0)) + +# define YY_SYMBOL_PRINT(Title, Type, Value, Location) \ +do { \ + if (yydebug) \ + { \ + YYFPRINTF (stderr, "%s ", Title); \ + yy_symbol_print (stderr, \ + Type, Value, Location); \ + YYFPRINTF (stderr, "\n"); \ + } \ +} while (YYID (0)) + + +/*--------------------------------. +| Print this symbol on YYOUTPUT. | +`--------------------------------*/ + +/*ARGSUSED*/ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) static void yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, YYLTYPE const * const yylocationp) +#else +static void +yy_symbol_value_print (yyoutput, yytype, yyvaluep, yylocationp) + FILE *yyoutput; + int yytype; + YYSTYPE const * const yyvaluep; + YYLTYPE const * const yylocationp; +#endif { - FILE *yyo = yyoutput; - YYUSE (yyo); - YYUSE (yylocationp); if (!yyvaluep) return; + YYUSE (yylocationp); # ifdef YYPRINT if (yytype < YYNTOKENS) YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep); +# else + YYUSE (yyoutput); # endif - YYUSE (yytype); + switch (yytype) + { + default: + break; + } } @@ -853,11 +882,23 @@ | Print this symbol on YYOUTPUT. | `--------------------------------*/ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) static void yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, YYLTYPE const * const yylocationp) +#else +static void +yy_symbol_print (yyoutput, yytype, yyvaluep, yylocationp) + FILE *yyoutput; + int yytype; + YYSTYPE const * const yyvaluep; + YYLTYPE const * const yylocationp; +#endif { - YYFPRINTF (yyoutput, "%s %s (", - yytype < YYNTOKENS ? "token" : "nterm", yytname[yytype]); + if (yytype < YYNTOKENS) + YYFPRINTF (yyoutput, "token %s (", yytname[yytype]); + else + YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]); YY_LOCATION_PRINT (yyoutput, *yylocationp); YYFPRINTF (yyoutput, ": "); @@ -870,8 +911,16 @@ | TOP (included). | `------------------------------------------------------------------*/ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) static void yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop) +#else +static void +yy_stack_print (yybottom, yytop) + yytype_int16 *yybottom; + yytype_int16 *yytop; +#endif { YYFPRINTF (stderr, "Stack now"); for (; yybottom <= yytop; yybottom++) @@ -882,42 +931,50 @@ YYFPRINTF (stderr, "\n"); } -# define YY_STACK_PRINT(Bottom, Top) \ -do { \ - if (yydebug) \ - yy_stack_print ((Bottom), (Top)); \ -} while (0) +# define YY_STACK_PRINT(Bottom, Top) \ +do { \ + if (yydebug) \ + yy_stack_print ((Bottom), (Top)); \ +} while (YYID (0)) /*------------------------------------------------. | Report that the YYRULE is going to be reduced. | `------------------------------------------------*/ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static void +yy_reduce_print (YYSTYPE *yyvsp, YYLTYPE *yylsp, int yyrule) +#else static void -yy_reduce_print (yytype_int16 *yyssp, YYSTYPE *yyvsp, YYLTYPE *yylsp, int yyrule) +yy_reduce_print (yyvsp, yylsp, yyrule) + YYSTYPE *yyvsp; + YYLTYPE *yylsp; + int yyrule; +#endif { - unsigned long int yylno = yyrline[yyrule]; int yynrhs = yyr2[yyrule]; int yyi; + unsigned long int yylno = yyrline[yyrule]; YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n", - yyrule - 1, yylno); + yyrule - 1, yylno); /* The symbols being reduced. */ for (yyi = 0; yyi < yynrhs; yyi++) { YYFPRINTF (stderr, " $%d = ", yyi + 1); - yy_symbol_print (stderr, - yystos[yyssp[yyi + 1 - yynrhs]], - &(yyvsp[(yyi + 1) - (yynrhs)]) - , &(yylsp[(yyi + 1) - (yynrhs)]) ); + yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi], + &(yyvsp[(yyi + 1) - (yynrhs)]) + , &(yylsp[(yyi + 1) - (yynrhs)]) ); YYFPRINTF (stderr, "\n"); } } -# define YY_REDUCE_PRINT(Rule) \ -do { \ - if (yydebug) \ - yy_reduce_print (yyssp, yyvsp, yylsp, Rule); \ -} while (0) +# define YY_REDUCE_PRINT(Rule) \ +do { \ + if (yydebug) \ + yy_reduce_print (yyvsp, yylsp, Rule); \ +} while (YYID (0)) /* Nonzero means print parse trace. It is left uninitialized so that multiple parsers can coexist. */ @@ -931,7 +988,7 @@ /* YYINITDEPTH -- initial size of the parser's stacks. */ -#ifndef YYINITDEPTH +#ifndef YYINITDEPTH # define YYINITDEPTH 200 #endif @@ -954,8 +1011,15 @@ # define yystrlen strlen # else /* Return the length of YYSTR. */ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) static YYSIZE_T yystrlen (const char *yystr) +#else +static YYSIZE_T +yystrlen (yystr) + const char *yystr; +#endif { YYSIZE_T yylen; for (yylen = 0; yystr[yylen]; yylen++) @@ -971,8 +1035,16 @@ # else /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in YYDEST. */ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) static char * yystpcpy (char *yydest, const char *yysrc) +#else +static char * +yystpcpy (yydest, yysrc) + char *yydest; + const char *yysrc; +#endif { char *yyd = yydest; const char *yys = yysrc; @@ -1002,27 +1074,27 @@ char const *yyp = yystr; for (;;) - switch (*++yyp) - { - case '\'': - case ',': - goto do_not_strip_quotes; - - case '\\': - if (*++yyp != '\\') - goto do_not_strip_quotes; - /* Fall through. */ - default: - if (yyres) - yyres[yyn] = *yyp; - yyn++; - break; - - case '"': - if (yyres) - yyres[yyn] = '\0'; - return yyn; - } + switch (*++yyp) + { + case '\'': + case ',': + goto do_not_strip_quotes; + + case '\\': + if (*++yyp != '\\') + goto do_not_strip_quotes; + /* Fall through. */ + default: + if (yyres) + yyres[yyn] = *yyp; + yyn++; + break; + + case '"': + if (yyres) + yyres[yyn] = '\0'; + return yyn; + } do_not_strip_quotes: ; } @@ -1045,11 +1117,12 @@ yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg, yytype_int16 *yyssp, int yytoken) { - YYSIZE_T yysize0 = yytnamerr (YY_NULLPTR, yytname[yytoken]); + YYSIZE_T yysize0 = yytnamerr (0, yytname[yytoken]); YYSIZE_T yysize = yysize0; + YYSIZE_T yysize1; enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 }; /* Internationalized format string. */ - const char *yyformat = YY_NULLPTR; + const char *yyformat = 0; /* Arguments of yyformat. */ char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM]; /* Number of reported tokens (one for the "unexpected", one per @@ -1057,6 +1130,10 @@ int yycount = 0; /* There are many possibilities here to consider: + - Assume YYFAIL is not used. It's too flawed to consider. See + + for details. YYERROR is fine as it does not invoke this + function. - If this state is a consistent state with a default action, then the only way this function was invoked is if the default action is an error action. In that case, don't check for expected @@ -1105,13 +1182,11 @@ break; } yyarg[yycount++] = yytname[yyx]; - { - YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULLPTR, yytname[yyx]); - if (! (yysize <= yysize1 - && yysize1 <= YYSTACK_ALLOC_MAXIMUM)) - return 2; - yysize = yysize1; - } + yysize1 = yysize + yytnamerr (0, yytname[yyx]); + if (! (yysize <= yysize1 + && yysize1 <= YYSTACK_ALLOC_MAXIMUM)) + return 2; + yysize = yysize1; } } } @@ -1131,12 +1206,10 @@ # undef YYCASE_ } - { - YYSIZE_T yysize1 = yysize + yystrlen (yyformat); - if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM)) - return 2; - yysize = yysize1; - } + yysize1 = yysize + yystrlen (yyformat); + if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM)) + return 2; + yysize = yysize1; if (*yymsg_alloc < yysize) { @@ -1173,21 +1246,50 @@ | Release the memory associated to this symbol. | `-----------------------------------------------*/ +/*ARGSUSED*/ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) static void yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocationp) +#else +static void +yydestruct (yymsg, yytype, yyvaluep, yylocationp) + const char *yymsg; + int yytype; + YYSTYPE *yyvaluep; + YYLTYPE *yylocationp; +#endif { YYUSE (yyvaluep); YYUSE (yylocationp); + if (!yymsg) yymsg = "Deleting"; YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp); - YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN - YYUSE (yytype); - YY_IGNORE_MAYBE_UNINITIALIZED_END + switch (yytype) + { + + default: + break; + } } +/* Prevent warnings from -Wmissing-prototypes. */ +#ifdef YYPARSE_PARAM +#if defined __STDC__ || defined __cplusplus +int yyparse (void *YYPARSE_PARAM); +#else +int yyparse (); +#endif +#else /* ! YYPARSE_PARAM */ +#if defined __STDC__ || defined __cplusplus +int yyparse (void); +#else +int yyparse (); +#endif +#endif /* ! YYPARSE_PARAM */ /* The lookahead symbol. */ @@ -1195,12 +1297,10 @@ /* The semantic value of the lookahead symbol. */ YYSTYPE yylval; + /* Location data for the lookahead symbol. */ -YYLTYPE yylloc -# if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL - = { 1, 1, 1, 1 } -# endif -; +YYLTYPE yylloc; + /* Number of syntax errors so far. */ int yynerrs; @@ -1209,19 +1309,38 @@ | yyparse. | `----------*/ +#ifdef YYPARSE_PARAM +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +int +yyparse (void *YYPARSE_PARAM) +#else +int +yyparse (YYPARSE_PARAM) + void *YYPARSE_PARAM; +#endif +#else /* ! YYPARSE_PARAM */ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) int yyparse (void) +#else +int +yyparse () + +#endif +#endif { int yystate; /* Number of tokens to shift before error messages enabled. */ int yyerrstatus; /* The stacks and their tools: - 'yyss': related to states. - 'yyvs': related to semantic values. - 'yyls': related to locations. + `yyss': related to states. + `yyvs': related to semantic values. + `yyls': related to locations. - Refer to the stacks through separate pointers, to allow yyoverflow + Refer to the stacks thru separate pointers, to allow yyoverflow to reallocate them elsewhere. */ /* The state stack. */ @@ -1247,7 +1366,7 @@ int yyn; int yyresult; /* Lookahead token as an internal (translated) token number. */ - int yytoken = 0; + int yytoken; /* The variables used to return semantic value and location from the action routines. */ YYSTYPE yyval; @@ -1266,9 +1385,10 @@ Keep to zero when no symbol should be popped. */ int yylen = 0; - yyssp = yyss = yyssa; - yyvsp = yyvs = yyvsa; - yylsp = yyls = yylsa; + yytoken = 0; + yyss = yyssa; + yyvs = yyvsa; + yyls = yylsa; yystacksize = YYINITDEPTH; YYDPRINTF ((stderr, "Starting parse\n")); @@ -1277,7 +1397,21 @@ yyerrstatus = 0; yynerrs = 0; yychar = YYEMPTY; /* Cause a token to be read. */ - yylsp[0] = yylloc; + + /* Initialize stack pointers. + Waste one element of value and location stack + so that they stay on the same level as the state stack. + The wasted elements are never initialized. */ + yyssp = yyss; + yyvsp = yyvs; + yylsp = yyls; + +#if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL + /* Initialize the default location before parsing starts. */ + yylloc.first_line = yylloc.last_line = 1; + yylloc.first_column = yylloc.last_column = 1; +#endif + goto yysetstate; /*------------------------------------------------------------. @@ -1298,26 +1432,26 @@ #ifdef yyoverflow { - /* Give user a chance to reallocate the stack. Use copies of - these so that the &'s don't force the real ones into - memory. */ - YYSTYPE *yyvs1 = yyvs; - yytype_int16 *yyss1 = yyss; - YYLTYPE *yyls1 = yyls; - - /* Each stack pointer address is followed by the size of the - data in use in that stack, in bytes. This used to be a - conditional around just the two extra args, but that might - be undefined if yyoverflow is a macro. */ - yyoverflow (YY_("memory exhausted"), - &yyss1, yysize * sizeof (*yyssp), - &yyvs1, yysize * sizeof (*yyvsp), - &yyls1, yysize * sizeof (*yylsp), - &yystacksize); - - yyls = yyls1; - yyss = yyss1; - yyvs = yyvs1; + /* Give user a chance to reallocate the stack. Use copies of + these so that the &'s don't force the real ones into + memory. */ + YYSTYPE *yyvs1 = yyvs; + yytype_int16 *yyss1 = yyss; + YYLTYPE *yyls1 = yyls; + + /* Each stack pointer address is followed by the size of the + data in use in that stack, in bytes. This used to be a + conditional around just the two extra args, but that might + be undefined if yyoverflow is a macro. */ + yyoverflow (YY_("memory exhausted"), + &yyss1, yysize * sizeof (*yyssp), + &yyvs1, yysize * sizeof (*yyvsp), + &yyls1, yysize * sizeof (*yylsp), + &yystacksize); + + yyls = yyls1; + yyss = yyss1; + yyvs = yyvs1; } #else /* no yyoverflow */ # ifndef YYSTACK_RELOCATE @@ -1325,23 +1459,23 @@ # else /* Extend the stack our own way. */ if (YYMAXDEPTH <= yystacksize) - goto yyexhaustedlab; + goto yyexhaustedlab; yystacksize *= 2; if (YYMAXDEPTH < yystacksize) - yystacksize = YYMAXDEPTH; + yystacksize = YYMAXDEPTH; { - yytype_int16 *yyss1 = yyss; - union yyalloc *yyptr = - (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize)); - if (! yyptr) - goto yyexhaustedlab; - YYSTACK_RELOCATE (yyss_alloc, yyss); - YYSTACK_RELOCATE (yyvs_alloc, yyvs); - YYSTACK_RELOCATE (yyls_alloc, yyls); + yytype_int16 *yyss1 = yyss; + union yyalloc *yyptr = + (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize)); + if (! yyptr) + goto yyexhaustedlab; + YYSTACK_RELOCATE (yyss_alloc, yyss); + YYSTACK_RELOCATE (yyvs_alloc, yyvs); + YYSTACK_RELOCATE (yyls_alloc, yyls); # undef YYSTACK_RELOCATE - if (yyss1 != yyssa) - YYSTACK_FREE (yyss1); + if (yyss1 != yyssa) + YYSTACK_FREE (yyss1); } # endif #endif /* no yyoverflow */ @@ -1351,10 +1485,10 @@ yylsp = yyls + yysize - 1; YYDPRINTF ((stderr, "Stack size increased to %lu\n", - (unsigned long int) yystacksize)); + (unsigned long int) yystacksize)); if (yyss + yystacksize - 1 <= yyssp) - YYABORT; + YYABORT; } YYDPRINTF ((stderr, "Entering state %d\n", yystate)); @@ -1383,7 +1517,7 @@ if (yychar == YYEMPTY) { YYDPRINTF ((stderr, "Reading a token: ")); - yychar = yylex (); + yychar = YYLEX; } if (yychar <= YYEOF) @@ -1423,9 +1557,7 @@ yychar = YYEMPTY; yystate = yyn; - YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN *++yyvsp = yylval; - YY_IGNORE_MAYBE_UNINITIALIZED_END *++yylsp = yylloc; goto yynewstate; @@ -1448,7 +1580,7 @@ yylen = yyr2[yyn]; /* If YYLEN is nonzero, implement the default value of the action: - '$$ = $1'. + `$$ = $1'. Otherwise, the following line sets YYVAL to garbage. This behavior is undocumented and Bison @@ -1463,273 +1595,322 @@ switch (yyn) { case 2: -#line 105 "dtc-parser.y" /* yacc.c:1646 */ + +/* Line 1806 of yacc.c */ +#line 109 "dtc-parser.y" { - the_boot_info = build_boot_info((yyvsp[-1].re), (yyvsp[0].node), - guess_boot_cpuid((yyvsp[0].node))); + (yyvsp[(5) - (5)].node)->is_plugin = (yyvsp[(3) - (5)].is_plugin); + (yyvsp[(5) - (5)].node)->is_root = 1; + the_boot_info = build_boot_info((yyvsp[(4) - (5)].re), (yyvsp[(5) - (5)].node), + guess_boot_cpuid((yyvsp[(5) - (5)].node))); } -#line 1472 "dtc-parser.tab.c" /* yacc.c:1646 */ break; case 3: -#line 113 "dtc-parser.y" /* yacc.c:1646 */ + +/* Line 1806 of yacc.c */ +#line 119 "dtc-parser.y" { - (yyval.re) = NULL; + (yyval.is_plugin) = 0; } -#line 1480 "dtc-parser.tab.c" /* yacc.c:1646 */ break; case 4: -#line 117 "dtc-parser.y" /* yacc.c:1646 */ + +/* Line 1806 of yacc.c */ +#line 123 "dtc-parser.y" { - (yyval.re) = chain_reserve_entry((yyvsp[-1].re), (yyvsp[0].re)); + (yyval.is_plugin) = 1; } -#line 1488 "dtc-parser.tab.c" /* yacc.c:1646 */ break; case 5: -#line 124 "dtc-parser.y" /* yacc.c:1646 */ + +/* Line 1806 of yacc.c */ +#line 130 "dtc-parser.y" { - (yyval.re) = build_reserve_entry((yyvsp[-2].integer), (yyvsp[-1].integer)); + (yyval.re) = NULL; } -#line 1496 "dtc-parser.tab.c" /* yacc.c:1646 */ break; case 6: -#line 128 "dtc-parser.y" /* yacc.c:1646 */ + +/* Line 1806 of yacc.c */ +#line 134 "dtc-parser.y" { - add_label(&(yyvsp[0].re)->labels, (yyvsp[-1].labelref)); - (yyval.re) = (yyvsp[0].re); + (yyval.re) = chain_reserve_entry((yyvsp[(1) - (2)].re), (yyvsp[(2) - (2)].re)); } -#line 1505 "dtc-parser.tab.c" /* yacc.c:1646 */ break; case 7: -#line 136 "dtc-parser.y" /* yacc.c:1646 */ + +/* Line 1806 of yacc.c */ +#line 141 "dtc-parser.y" { - (yyval.node) = name_node((yyvsp[0].node), ""); + (yyval.re) = build_reserve_entry((yyvsp[(2) - (4)].integer), (yyvsp[(3) - (4)].integer)); } -#line 1513 "dtc-parser.tab.c" /* yacc.c:1646 */ break; case 8: -#line 140 "dtc-parser.y" /* yacc.c:1646 */ + +/* Line 1806 of yacc.c */ +#line 145 "dtc-parser.y" { - (yyval.node) = merge_nodes((yyvsp[-2].node), (yyvsp[0].node)); + add_label(&(yyvsp[(2) - (2)].re)->labels, (yyvsp[(1) - (2)].labelref)); + (yyval.re) = (yyvsp[(2) - (2)].re); } -#line 1521 "dtc-parser.tab.c" /* yacc.c:1646 */ break; case 9: -#line 145 "dtc-parser.y" /* yacc.c:1646 */ - { - struct node *target = get_node_by_ref((yyvsp[-3].node), (yyvsp[-1].labelref)); - add_label(&target->labels, (yyvsp[-2].labelref)); - if (target) - merge_nodes(target, (yyvsp[0].node)); - else - ERROR(&(yylsp[-1]), "Label or path %s not found", (yyvsp[-1].labelref)); - (yyval.node) = (yyvsp[-3].node); +/* Line 1806 of yacc.c */ +#line 153 "dtc-parser.y" + { + (yyval.node) = name_node((yyvsp[(2) - (2)].node), ""); } -#line 1536 "dtc-parser.tab.c" /* yacc.c:1646 */ break; case 10: -#line 156 "dtc-parser.y" /* yacc.c:1646 */ - { - struct node *target = get_node_by_ref((yyvsp[-2].node), (yyvsp[-1].labelref)); - if (target) - merge_nodes(target, (yyvsp[0].node)); - else - ERROR(&(yylsp[-1]), "Label or path %s not found", (yyvsp[-1].labelref)); - (yyval.node) = (yyvsp[-2].node); +/* Line 1806 of yacc.c */ +#line 157 "dtc-parser.y" + { + (yyval.node) = merge_nodes((yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node)); } -#line 1550 "dtc-parser.tab.c" /* yacc.c:1646 */ break; case 11: -#line 166 "dtc-parser.y" /* yacc.c:1646 */ + +/* Line 1806 of yacc.c */ +#line 162 "dtc-parser.y" { - struct node *target = get_node_by_ref((yyvsp[-3].node), (yyvsp[-1].labelref)); + struct node *target = get_node_by_ref((yyvsp[(1) - (4)].node), (yyvsp[(3) - (4)].labelref)); + add_label(&target->labels, (yyvsp[(2) - (4)].labelref)); if (target) - delete_node(target); + merge_nodes(target, (yyvsp[(4) - (4)].node)); else - ERROR(&(yylsp[-1]), "Label or path %s not found", (yyvsp[-1].labelref)); - - - (yyval.node) = (yyvsp[-3].node); + ERROR(&(yylsp[(3) - (4)]), "Label or path %s not found", (yyvsp[(3) - (4)].labelref)); + (yyval.node) = (yyvsp[(1) - (4)].node); } -#line 1566 "dtc-parser.tab.c" /* yacc.c:1646 */ break; case 12: -#line 181 "dtc-parser.y" /* yacc.c:1646 */ + +/* Line 1806 of yacc.c */ +#line 173 "dtc-parser.y" { - (yyval.node) = build_node((yyvsp[-3].proplist), (yyvsp[-2].nodelist)); + struct node *target = get_node_by_ref((yyvsp[(1) - (3)].node), (yyvsp[(2) - (3)].labelref)); + + if (target) + merge_nodes(target, (yyvsp[(3) - (3)].node)); + else + ERROR(&(yylsp[(2) - (3)]), "Label or path %s not found", (yyvsp[(2) - (3)].labelref)); + (yyval.node) = (yyvsp[(1) - (3)].node); } -#line 1574 "dtc-parser.tab.c" /* yacc.c:1646 */ break; case 13: -#line 188 "dtc-parser.y" /* yacc.c:1646 */ + +/* Line 1806 of yacc.c */ +#line 183 "dtc-parser.y" { - (yyval.proplist) = NULL; + struct node *target = get_node_by_ref((yyvsp[(1) - (4)].node), (yyvsp[(3) - (4)].labelref)); + + if (target) + delete_node(target); + else + ERROR(&(yylsp[(3) - (4)]), "Label or path %s not found", (yyvsp[(3) - (4)].labelref)); + + + (yyval.node) = (yyvsp[(1) - (4)].node); } -#line 1582 "dtc-parser.tab.c" /* yacc.c:1646 */ break; case 14: -#line 192 "dtc-parser.y" /* yacc.c:1646 */ + +/* Line 1806 of yacc.c */ +#line 198 "dtc-parser.y" { - (yyval.proplist) = chain_property((yyvsp[0].prop), (yyvsp[-1].proplist)); + (yyval.node) = build_node((yyvsp[(2) - (5)].proplist), (yyvsp[(3) - (5)].nodelist)); } -#line 1590 "dtc-parser.tab.c" /* yacc.c:1646 */ break; case 15: -#line 199 "dtc-parser.y" /* yacc.c:1646 */ + +/* Line 1806 of yacc.c */ +#line 205 "dtc-parser.y" { - (yyval.prop) = build_property((yyvsp[-3].propnodename), (yyvsp[-1].data)); + (yyval.proplist) = NULL; } -#line 1598 "dtc-parser.tab.c" /* yacc.c:1646 */ break; case 16: -#line 203 "dtc-parser.y" /* yacc.c:1646 */ + +/* Line 1806 of yacc.c */ +#line 209 "dtc-parser.y" { - (yyval.prop) = build_property((yyvsp[-1].propnodename), empty_data); + (yyval.proplist) = chain_property((yyvsp[(2) - (2)].prop), (yyvsp[(1) - (2)].proplist)); } -#line 1606 "dtc-parser.tab.c" /* yacc.c:1646 */ break; case 17: -#line 207 "dtc-parser.y" /* yacc.c:1646 */ + +/* Line 1806 of yacc.c */ +#line 216 "dtc-parser.y" { - (yyval.prop) = build_property_delete((yyvsp[-1].propnodename)); + (yyval.prop) = build_property((yyvsp[(1) - (4)].propnodename), (yyvsp[(3) - (4)].data)); } -#line 1614 "dtc-parser.tab.c" /* yacc.c:1646 */ break; case 18: -#line 211 "dtc-parser.y" /* yacc.c:1646 */ + +/* Line 1806 of yacc.c */ +#line 220 "dtc-parser.y" { - add_label(&(yyvsp[0].prop)->labels, (yyvsp[-1].labelref)); - (yyval.prop) = (yyvsp[0].prop); + (yyval.prop) = build_property((yyvsp[(1) - (2)].propnodename), empty_data); } -#line 1623 "dtc-parser.tab.c" /* yacc.c:1646 */ break; case 19: -#line 219 "dtc-parser.y" /* yacc.c:1646 */ + +/* Line 1806 of yacc.c */ +#line 224 "dtc-parser.y" { - (yyval.data) = data_merge((yyvsp[-1].data), (yyvsp[0].data)); + (yyval.prop) = build_property_delete((yyvsp[(2) - (3)].propnodename)); } -#line 1631 "dtc-parser.tab.c" /* yacc.c:1646 */ break; case 20: -#line 223 "dtc-parser.y" /* yacc.c:1646 */ + +/* Line 1806 of yacc.c */ +#line 228 "dtc-parser.y" { - (yyval.data) = data_merge((yyvsp[-2].data), (yyvsp[-1].array).data); + add_label(&(yyvsp[(2) - (2)].prop)->labels, (yyvsp[(1) - (2)].labelref)); + (yyval.prop) = (yyvsp[(2) - (2)].prop); } -#line 1639 "dtc-parser.tab.c" /* yacc.c:1646 */ break; case 21: -#line 227 "dtc-parser.y" /* yacc.c:1646 */ + +/* Line 1806 of yacc.c */ +#line 236 "dtc-parser.y" { - (yyval.data) = data_merge((yyvsp[-3].data), (yyvsp[-1].data)); + (yyval.data) = data_merge((yyvsp[(1) - (2)].data), (yyvsp[(2) - (2)].data)); } -#line 1647 "dtc-parser.tab.c" /* yacc.c:1646 */ break; case 22: -#line 231 "dtc-parser.y" /* yacc.c:1646 */ + +/* Line 1806 of yacc.c */ +#line 240 "dtc-parser.y" { - (yyval.data) = data_add_marker((yyvsp[-1].data), REF_PATH, (yyvsp[0].labelref)); + (yyval.data) = data_merge((yyvsp[(1) - (3)].data), (yyvsp[(2) - (3)].array).data); } -#line 1655 "dtc-parser.tab.c" /* yacc.c:1646 */ break; case 23: -#line 235 "dtc-parser.y" /* yacc.c:1646 */ + +/* Line 1806 of yacc.c */ +#line 244 "dtc-parser.y" + { + (yyval.data) = data_merge((yyvsp[(1) - (4)].data), (yyvsp[(3) - (4)].data)); + } + break; + + case 24: + +/* Line 1806 of yacc.c */ +#line 248 "dtc-parser.y" + { + (yyval.data) = data_add_marker((yyvsp[(1) - (2)].data), REF_PATH, (yyvsp[(2) - (2)].labelref)); + } + break; + + case 25: + +/* Line 1806 of yacc.c */ +#line 252 "dtc-parser.y" { - FILE *f = srcfile_relative_open((yyvsp[-5].data).val, NULL); + FILE *f = srcfile_relative_open((yyvsp[(4) - (9)].data).val, NULL); struct data d; - if ((yyvsp[-3].integer) != 0) - if (fseek(f, (yyvsp[-3].integer), SEEK_SET) != 0) + if ((yyvsp[(6) - (9)].integer) != 0) + if (fseek(f, (yyvsp[(6) - (9)].integer), SEEK_SET) != 0) die("Couldn't seek to offset %llu in \"%s\": %s", - (unsigned long long)(yyvsp[-3].integer), (yyvsp[-5].data).val, + (unsigned long long)(yyvsp[(6) - (9)].integer), (yyvsp[(4) - (9)].data).val, strerror(errno)); - d = data_copy_file(f, (yyvsp[-1].integer)); + d = data_copy_file(f, (yyvsp[(8) - (9)].integer)); - (yyval.data) = data_merge((yyvsp[-8].data), d); + (yyval.data) = data_merge((yyvsp[(1) - (9)].data), d); fclose(f); } -#line 1675 "dtc-parser.tab.c" /* yacc.c:1646 */ break; - case 24: -#line 251 "dtc-parser.y" /* yacc.c:1646 */ + case 26: + +/* Line 1806 of yacc.c */ +#line 268 "dtc-parser.y" { - FILE *f = srcfile_relative_open((yyvsp[-1].data).val, NULL); + FILE *f = srcfile_relative_open((yyvsp[(4) - (5)].data).val, NULL); struct data d = empty_data; d = data_copy_file(f, -1); - (yyval.data) = data_merge((yyvsp[-4].data), d); + (yyval.data) = data_merge((yyvsp[(1) - (5)].data), d); fclose(f); } -#line 1689 "dtc-parser.tab.c" /* yacc.c:1646 */ break; - case 25: -#line 261 "dtc-parser.y" /* yacc.c:1646 */ + case 27: + +/* Line 1806 of yacc.c */ +#line 278 "dtc-parser.y" { - (yyval.data) = data_add_marker((yyvsp[-1].data), LABEL, (yyvsp[0].labelref)); + (yyval.data) = data_add_marker((yyvsp[(1) - (2)].data), LABEL, (yyvsp[(2) - (2)].labelref)); } -#line 1697 "dtc-parser.tab.c" /* yacc.c:1646 */ break; - case 26: -#line 268 "dtc-parser.y" /* yacc.c:1646 */ + case 28: + +/* Line 1806 of yacc.c */ +#line 285 "dtc-parser.y" { (yyval.data) = empty_data; } -#line 1705 "dtc-parser.tab.c" /* yacc.c:1646 */ break; - case 27: -#line 272 "dtc-parser.y" /* yacc.c:1646 */ + case 29: + +/* Line 1806 of yacc.c */ +#line 289 "dtc-parser.y" { - (yyval.data) = (yyvsp[-1].data); + (yyval.data) = (yyvsp[(1) - (2)].data); } -#line 1713 "dtc-parser.tab.c" /* yacc.c:1646 */ break; - case 28: -#line 276 "dtc-parser.y" /* yacc.c:1646 */ + case 30: + +/* Line 1806 of yacc.c */ +#line 293 "dtc-parser.y" { - (yyval.data) = data_add_marker((yyvsp[-1].data), LABEL, (yyvsp[0].labelref)); + (yyval.data) = data_add_marker((yyvsp[(1) - (2)].data), LABEL, (yyvsp[(2) - (2)].labelref)); } -#line 1721 "dtc-parser.tab.c" /* yacc.c:1646 */ break; - case 29: -#line 283 "dtc-parser.y" /* yacc.c:1646 */ + case 31: + +/* Line 1806 of yacc.c */ +#line 300 "dtc-parser.y" { unsigned long long bits; - bits = (yyvsp[-1].integer); + bits = (yyvsp[(2) - (3)].integer); if ((bits != 8) && (bits != 16) && (bits != 32) && (bits != 64)) { - ERROR(&(yylsp[-1]), "Array elements must be" + ERROR(&(yylsp[(2) - (3)]), "Array elements must be" " 8, 16, 32 or 64-bits"); bits = 32; } @@ -1737,23 +1918,25 @@ (yyval.array).data = empty_data; (yyval.array).bits = bits; } -#line 1741 "dtc-parser.tab.c" /* yacc.c:1646 */ break; - case 30: -#line 299 "dtc-parser.y" /* yacc.c:1646 */ + case 32: + +/* Line 1806 of yacc.c */ +#line 316 "dtc-parser.y" { (yyval.array).data = empty_data; (yyval.array).bits = 32; } -#line 1750 "dtc-parser.tab.c" /* yacc.c:1646 */ break; - case 31: -#line 304 "dtc-parser.y" /* yacc.c:1646 */ + case 33: + +/* Line 1806 of yacc.c */ +#line 321 "dtc-parser.y" { - if ((yyvsp[-1].array).bits < 64) { - uint64_t mask = (1ULL << (yyvsp[-1].array).bits) - 1; + if ((yyvsp[(1) - (2)].array).bits < 64) { + uint64_t mask = (1ULL << (yyvsp[(1) - (2)].array).bits) - 1; /* * Bits above mask must either be all zero * (positive within range of mask) or all one @@ -1762,258 +1945,293 @@ * within the mask to one (i.e. | in the * mask), all bits are one. */ - if (((yyvsp[0].integer) > mask) && (((yyvsp[0].integer) | mask) != -1ULL)) - ERROR(&(yylsp[0]), "Value out of range for" - " %d-bit array element", (yyvsp[-1].array).bits); + if (((yyvsp[(2) - (2)].integer) > mask) && (((yyvsp[(2) - (2)].integer) | mask) != -1ULL)) + ERROR(&(yylsp[(2) - (2)]), "Value out of range for" + " %d-bit array element", (yyvsp[(1) - (2)].array).bits); } - (yyval.array).data = data_append_integer((yyvsp[-1].array).data, (yyvsp[0].integer), (yyvsp[-1].array).bits); + (yyval.array).data = data_append_integer((yyvsp[(1) - (2)].array).data, (yyvsp[(2) - (2)].integer), (yyvsp[(1) - (2)].array).bits); } -#line 1773 "dtc-parser.tab.c" /* yacc.c:1646 */ break; - case 32: -#line 323 "dtc-parser.y" /* yacc.c:1646 */ + case 34: + +/* Line 1806 of yacc.c */ +#line 340 "dtc-parser.y" { - uint64_t val = ~0ULL >> (64 - (yyvsp[-1].array).bits); + uint64_t val = ~0ULL >> (64 - (yyvsp[(1) - (2)].array).bits); - if ((yyvsp[-1].array).bits == 32) - (yyvsp[-1].array).data = data_add_marker((yyvsp[-1].array).data, + if ((yyvsp[(1) - (2)].array).bits == 32) + (yyvsp[(1) - (2)].array).data = data_add_marker((yyvsp[(1) - (2)].array).data, REF_PHANDLE, - (yyvsp[0].labelref)); + (yyvsp[(2) - (2)].labelref)); else - ERROR(&(yylsp[0]), "References are only allowed in " + ERROR(&(yylsp[(2) - (2)]), "References are only allowed in " "arrays with 32-bit elements."); - (yyval.array).data = data_append_integer((yyvsp[-1].array).data, val, (yyvsp[-1].array).bits); + (yyval.array).data = data_append_integer((yyvsp[(1) - (2)].array).data, val, (yyvsp[(1) - (2)].array).bits); } -#line 1791 "dtc-parser.tab.c" /* yacc.c:1646 */ break; - case 33: -#line 337 "dtc-parser.y" /* yacc.c:1646 */ + case 35: + +/* Line 1806 of yacc.c */ +#line 354 "dtc-parser.y" { - (yyval.array).data = data_add_marker((yyvsp[-1].array).data, LABEL, (yyvsp[0].labelref)); + (yyval.array).data = data_add_marker((yyvsp[(1) - (2)].array).data, LABEL, (yyvsp[(2) - (2)].labelref)); } -#line 1799 "dtc-parser.tab.c" /* yacc.c:1646 */ break; - case 36: -#line 346 "dtc-parser.y" /* yacc.c:1646 */ + case 38: + +/* Line 1806 of yacc.c */ +#line 363 "dtc-parser.y" { - (yyval.integer) = (yyvsp[-1].integer); + (yyval.integer) = (yyvsp[(2) - (3)].integer); } -#line 1807 "dtc-parser.tab.c" /* yacc.c:1646 */ - break; - - case 39: -#line 357 "dtc-parser.y" /* yacc.c:1646 */ - { (yyval.integer) = (yyvsp[-4].integer) ? (yyvsp[-2].integer) : (yyvsp[0].integer); } -#line 1813 "dtc-parser.tab.c" /* yacc.c:1646 */ break; case 41: -#line 362 "dtc-parser.y" /* yacc.c:1646 */ - { (yyval.integer) = (yyvsp[-2].integer) || (yyvsp[0].integer); } -#line 1819 "dtc-parser.tab.c" /* yacc.c:1646 */ + +/* Line 1806 of yacc.c */ +#line 374 "dtc-parser.y" + { (yyval.integer) = (yyvsp[(1) - (5)].integer) ? (yyvsp[(3) - (5)].integer) : (yyvsp[(5) - (5)].integer); } break; case 43: -#line 367 "dtc-parser.y" /* yacc.c:1646 */ - { (yyval.integer) = (yyvsp[-2].integer) && (yyvsp[0].integer); } -#line 1825 "dtc-parser.tab.c" /* yacc.c:1646 */ + +/* Line 1806 of yacc.c */ +#line 379 "dtc-parser.y" + { (yyval.integer) = (yyvsp[(1) - (3)].integer) || (yyvsp[(3) - (3)].integer); } break; case 45: -#line 372 "dtc-parser.y" /* yacc.c:1646 */ - { (yyval.integer) = (yyvsp[-2].integer) | (yyvsp[0].integer); } -#line 1831 "dtc-parser.tab.c" /* yacc.c:1646 */ + +/* Line 1806 of yacc.c */ +#line 384 "dtc-parser.y" + { (yyval.integer) = (yyvsp[(1) - (3)].integer) && (yyvsp[(3) - (3)].integer); } break; case 47: -#line 377 "dtc-parser.y" /* yacc.c:1646 */ - { (yyval.integer) = (yyvsp[-2].integer) ^ (yyvsp[0].integer); } -#line 1837 "dtc-parser.tab.c" /* yacc.c:1646 */ + +/* Line 1806 of yacc.c */ +#line 389 "dtc-parser.y" + { (yyval.integer) = (yyvsp[(1) - (3)].integer) | (yyvsp[(3) - (3)].integer); } break; case 49: -#line 382 "dtc-parser.y" /* yacc.c:1646 */ - { (yyval.integer) = (yyvsp[-2].integer) & (yyvsp[0].integer); } -#line 1843 "dtc-parser.tab.c" /* yacc.c:1646 */ + +/* Line 1806 of yacc.c */ +#line 394 "dtc-parser.y" + { (yyval.integer) = (yyvsp[(1) - (3)].integer) ^ (yyvsp[(3) - (3)].integer); } break; case 51: -#line 387 "dtc-parser.y" /* yacc.c:1646 */ - { (yyval.integer) = (yyvsp[-2].integer) == (yyvsp[0].integer); } -#line 1849 "dtc-parser.tab.c" /* yacc.c:1646 */ + +/* Line 1806 of yacc.c */ +#line 399 "dtc-parser.y" + { (yyval.integer) = (yyvsp[(1) - (3)].integer) & (yyvsp[(3) - (3)].integer); } break; - case 52: -#line 388 "dtc-parser.y" /* yacc.c:1646 */ - { (yyval.integer) = (yyvsp[-2].integer) != (yyvsp[0].integer); } -#line 1855 "dtc-parser.tab.c" /* yacc.c:1646 */ + case 53: + +/* Line 1806 of yacc.c */ +#line 404 "dtc-parser.y" + { (yyval.integer) = (yyvsp[(1) - (3)].integer) == (yyvsp[(3) - (3)].integer); } break; case 54: -#line 393 "dtc-parser.y" /* yacc.c:1646 */ - { (yyval.integer) = (yyvsp[-2].integer) < (yyvsp[0].integer); } -#line 1861 "dtc-parser.tab.c" /* yacc.c:1646 */ - break; - case 55: -#line 394 "dtc-parser.y" /* yacc.c:1646 */ - { (yyval.integer) = (yyvsp[-2].integer) > (yyvsp[0].integer); } -#line 1867 "dtc-parser.tab.c" /* yacc.c:1646 */ +/* Line 1806 of yacc.c */ +#line 405 "dtc-parser.y" + { (yyval.integer) = (yyvsp[(1) - (3)].integer) != (yyvsp[(3) - (3)].integer); } break; case 56: -#line 395 "dtc-parser.y" /* yacc.c:1646 */ - { (yyval.integer) = (yyvsp[-2].integer) <= (yyvsp[0].integer); } -#line 1873 "dtc-parser.tab.c" /* yacc.c:1646 */ + +/* Line 1806 of yacc.c */ +#line 410 "dtc-parser.y" + { (yyval.integer) = (yyvsp[(1) - (3)].integer) < (yyvsp[(3) - (3)].integer); } break; case 57: -#line 396 "dtc-parser.y" /* yacc.c:1646 */ - { (yyval.integer) = (yyvsp[-2].integer) >= (yyvsp[0].integer); } -#line 1879 "dtc-parser.tab.c" /* yacc.c:1646 */ + +/* Line 1806 of yacc.c */ +#line 411 "dtc-parser.y" + { (yyval.integer) = (yyvsp[(1) - (3)].integer) > (yyvsp[(3) - (3)].integer); } break; case 58: -#line 400 "dtc-parser.y" /* yacc.c:1646 */ - { (yyval.integer) = (yyvsp[-2].integer) << (yyvsp[0].integer); } -#line 1885 "dtc-parser.tab.c" /* yacc.c:1646 */ + +/* Line 1806 of yacc.c */ +#line 412 "dtc-parser.y" + { (yyval.integer) = (yyvsp[(1) - (3)].integer) <= (yyvsp[(3) - (3)].integer); } break; case 59: -#line 401 "dtc-parser.y" /* yacc.c:1646 */ - { (yyval.integer) = (yyvsp[-2].integer) >> (yyvsp[0].integer); } -#line 1891 "dtc-parser.tab.c" /* yacc.c:1646 */ + +/* Line 1806 of yacc.c */ +#line 413 "dtc-parser.y" + { (yyval.integer) = (yyvsp[(1) - (3)].integer) >= (yyvsp[(3) - (3)].integer); } + break; + + case 60: + +/* Line 1806 of yacc.c */ +#line 417 "dtc-parser.y" + { (yyval.integer) = (yyvsp[(1) - (3)].integer) << (yyvsp[(3) - (3)].integer); } break; case 61: -#line 406 "dtc-parser.y" /* yacc.c:1646 */ - { (yyval.integer) = (yyvsp[-2].integer) + (yyvsp[0].integer); } -#line 1897 "dtc-parser.tab.c" /* yacc.c:1646 */ + +/* Line 1806 of yacc.c */ +#line 418 "dtc-parser.y" + { (yyval.integer) = (yyvsp[(1) - (3)].integer) >> (yyvsp[(3) - (3)].integer); } break; - case 62: -#line 407 "dtc-parser.y" /* yacc.c:1646 */ - { (yyval.integer) = (yyvsp[-2].integer) - (yyvsp[0].integer); } -#line 1903 "dtc-parser.tab.c" /* yacc.c:1646 */ + case 63: + +/* Line 1806 of yacc.c */ +#line 423 "dtc-parser.y" + { (yyval.integer) = (yyvsp[(1) - (3)].integer) + (yyvsp[(3) - (3)].integer); } break; case 64: -#line 412 "dtc-parser.y" /* yacc.c:1646 */ - { (yyval.integer) = (yyvsp[-2].integer) * (yyvsp[0].integer); } -#line 1909 "dtc-parser.tab.c" /* yacc.c:1646 */ - break; - case 65: -#line 413 "dtc-parser.y" /* yacc.c:1646 */ - { (yyval.integer) = (yyvsp[-2].integer) / (yyvsp[0].integer); } -#line 1915 "dtc-parser.tab.c" /* yacc.c:1646 */ +/* Line 1806 of yacc.c */ +#line 424 "dtc-parser.y" + { (yyval.integer) = (yyvsp[(1) - (3)].integer) - (yyvsp[(3) - (3)].integer); } break; case 66: -#line 414 "dtc-parser.y" /* yacc.c:1646 */ - { (yyval.integer) = (yyvsp[-2].integer) % (yyvsp[0].integer); } -#line 1921 "dtc-parser.tab.c" /* yacc.c:1646 */ + +/* Line 1806 of yacc.c */ +#line 429 "dtc-parser.y" + { (yyval.integer) = (yyvsp[(1) - (3)].integer) * (yyvsp[(3) - (3)].integer); } break; - case 69: -#line 420 "dtc-parser.y" /* yacc.c:1646 */ - { (yyval.integer) = -(yyvsp[0].integer); } -#line 1927 "dtc-parser.tab.c" /* yacc.c:1646 */ + case 67: + +/* Line 1806 of yacc.c */ +#line 430 "dtc-parser.y" + { (yyval.integer) = (yyvsp[(1) - (3)].integer) / (yyvsp[(3) - (3)].integer); } break; - case 70: -#line 421 "dtc-parser.y" /* yacc.c:1646 */ - { (yyval.integer) = ~(yyvsp[0].integer); } -#line 1933 "dtc-parser.tab.c" /* yacc.c:1646 */ + case 68: + +/* Line 1806 of yacc.c */ +#line 431 "dtc-parser.y" + { (yyval.integer) = (yyvsp[(1) - (3)].integer) % (yyvsp[(3) - (3)].integer); } break; case 71: -#line 422 "dtc-parser.y" /* yacc.c:1646 */ - { (yyval.integer) = !(yyvsp[0].integer); } -#line 1939 "dtc-parser.tab.c" /* yacc.c:1646 */ + +/* Line 1806 of yacc.c */ +#line 437 "dtc-parser.y" + { (yyval.integer) = -(yyvsp[(2) - (2)].integer); } break; case 72: -#line 427 "dtc-parser.y" /* yacc.c:1646 */ - { - (yyval.data) = empty_data; - } -#line 1947 "dtc-parser.tab.c" /* yacc.c:1646 */ + +/* Line 1806 of yacc.c */ +#line 438 "dtc-parser.y" + { (yyval.integer) = ~(yyvsp[(2) - (2)].integer); } break; case 73: -#line 431 "dtc-parser.y" /* yacc.c:1646 */ - { - (yyval.data) = data_append_byte((yyvsp[-1].data), (yyvsp[0].byte)); - } -#line 1955 "dtc-parser.tab.c" /* yacc.c:1646 */ + +/* Line 1806 of yacc.c */ +#line 439 "dtc-parser.y" + { (yyval.integer) = !(yyvsp[(2) - (2)].integer); } break; case 74: -#line 435 "dtc-parser.y" /* yacc.c:1646 */ + +/* Line 1806 of yacc.c */ +#line 444 "dtc-parser.y" { - (yyval.data) = data_add_marker((yyvsp[-1].data), LABEL, (yyvsp[0].labelref)); + (yyval.data) = empty_data; } -#line 1963 "dtc-parser.tab.c" /* yacc.c:1646 */ break; case 75: -#line 442 "dtc-parser.y" /* yacc.c:1646 */ + +/* Line 1806 of yacc.c */ +#line 448 "dtc-parser.y" { - (yyval.nodelist) = NULL; + (yyval.data) = data_append_byte((yyvsp[(1) - (2)].data), (yyvsp[(2) - (2)].byte)); } -#line 1971 "dtc-parser.tab.c" /* yacc.c:1646 */ break; case 76: -#line 446 "dtc-parser.y" /* yacc.c:1646 */ + +/* Line 1806 of yacc.c */ +#line 452 "dtc-parser.y" { - (yyval.nodelist) = chain_node((yyvsp[-1].node), (yyvsp[0].nodelist)); + (yyval.data) = data_add_marker((yyvsp[(1) - (2)].data), LABEL, (yyvsp[(2) - (2)].labelref)); } -#line 1979 "dtc-parser.tab.c" /* yacc.c:1646 */ break; case 77: -#line 450 "dtc-parser.y" /* yacc.c:1646 */ + +/* Line 1806 of yacc.c */ +#line 459 "dtc-parser.y" { - ERROR(&(yylsp[0]), "Properties must precede subnodes"); - YYERROR; + (yyval.nodelist) = NULL; } -#line 1988 "dtc-parser.tab.c" /* yacc.c:1646 */ break; case 78: -#line 458 "dtc-parser.y" /* yacc.c:1646 */ + +/* Line 1806 of yacc.c */ +#line 463 "dtc-parser.y" { - (yyval.node) = name_node((yyvsp[0].node), (yyvsp[-1].propnodename)); + (yyval.nodelist) = chain_node((yyvsp[(1) - (2)].node), (yyvsp[(2) - (2)].nodelist)); } -#line 1996 "dtc-parser.tab.c" /* yacc.c:1646 */ break; case 79: -#line 462 "dtc-parser.y" /* yacc.c:1646 */ + +/* Line 1806 of yacc.c */ +#line 467 "dtc-parser.y" { - (yyval.node) = name_node(build_node_delete(), (yyvsp[-1].propnodename)); + ERROR(&(yylsp[(2) - (2)]), "Properties must precede subnodes"); + YYERROR; } -#line 2004 "dtc-parser.tab.c" /* yacc.c:1646 */ break; case 80: -#line 466 "dtc-parser.y" /* yacc.c:1646 */ + +/* Line 1806 of yacc.c */ +#line 475 "dtc-parser.y" { - add_label(&(yyvsp[0].node)->labels, (yyvsp[-1].labelref)); - (yyval.node) = (yyvsp[0].node); + (yyval.node) = name_node((yyvsp[(2) - (2)].node), (yyvsp[(1) - (2)].propnodename)); } -#line 2013 "dtc-parser.tab.c" /* yacc.c:1646 */ break; + case 81: -#line 2017 "dtc-parser.tab.c" /* yacc.c:1646 */ +/* Line 1806 of yacc.c */ +#line 479 "dtc-parser.y" + { + (yyval.node) = name_node(build_node_delete(), (yyvsp[(2) - (3)].propnodename)); + } + break; + + case 82: + +/* Line 1806 of yacc.c */ +#line 483 "dtc-parser.y" + { + add_label(&(yyvsp[(2) - (2)].node)->labels, (yyvsp[(1) - (2)].labelref)); + (yyval.node) = (yyvsp[(2) - (2)].node); + } + break; + + + +/* Line 1806 of yacc.c */ +#line 2235 "dtc-parser.tab.c" default: break; } /* User semantic actions sometimes alter yychar, and that requires @@ -2036,7 +2254,7 @@ *++yyvsp = yyval; *++yylsp = yyloc; - /* Now 'shift' the result of the reduction. Determine what state + /* Now `shift' the result of the reduction. Determine what state that goes to, based on the state we popped back to and the rule number reduced by. */ @@ -2051,9 +2269,9 @@ goto yynewstate; -/*--------------------------------------. -| yyerrlab -- here on detecting error. | -`--------------------------------------*/ +/*------------------------------------. +| yyerrlab -- here on detecting error | +`------------------------------------*/ yyerrlab: /* Make sure we have latest lookahead translation. See comments at user semantic actions for why this is necessary. */ @@ -2104,20 +2322,20 @@ if (yyerrstatus == 3) { /* If just tried and failed to reuse lookahead token after an - error, discard it. */ + error, discard it. */ if (yychar <= YYEOF) - { - /* Return failure if at end of input. */ - if (yychar == YYEOF) - YYABORT; - } + { + /* Return failure if at end of input. */ + if (yychar == YYEOF) + YYABORT; + } else - { - yydestruct ("Error: discarding", - yytoken, &yylval, &yylloc); - yychar = YYEMPTY; - } + { + yydestruct ("Error: discarding", + yytoken, &yylval, &yylloc); + yychar = YYEMPTY; + } } /* Else will try to reuse lookahead token after shifting the error @@ -2137,7 +2355,7 @@ goto yyerrorlab; yyerror_range[1] = yylsp[1-yylen]; - /* Do not reclaim the symbols of the rule whose action triggered + /* Do not reclaim the symbols of the rule which action triggered this YYERROR. */ YYPOPSTACK (yylen); yylen = 0; @@ -2150,37 +2368,35 @@ | yyerrlab1 -- common code for both syntax error and YYERROR. | `-------------------------------------------------------------*/ yyerrlab1: - yyerrstatus = 3; /* Each real token shifted decrements this. */ + yyerrstatus = 3; /* Each real token shifted decrements this. */ for (;;) { yyn = yypact[yystate]; if (!yypact_value_is_default (yyn)) - { - yyn += YYTERROR; - if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR) - { - yyn = yytable[yyn]; - if (0 < yyn) - break; - } - } + { + yyn += YYTERROR; + if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR) + { + yyn = yytable[yyn]; + if (0 < yyn) + break; + } + } /* Pop the current state because it cannot handle the error token. */ if (yyssp == yyss) - YYABORT; + YYABORT; yyerror_range[1] = *yylsp; yydestruct ("Error: popping", - yystos[yystate], yyvsp, yylsp); + yystos[yystate], yyvsp, yylsp); YYPOPSTACK (1); yystate = *yyssp; YY_STACK_PRINT (yyss, yyssp); } - YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN *++yyvsp = yylval; - YY_IGNORE_MAYBE_UNINITIALIZED_END yyerror_range[2] = yylloc; /* Using YYLLOC is tempting, but would change the location of @@ -2209,7 +2425,7 @@ yyresult = 1; goto yyreturn; -#if !defined yyoverflow || YYERROR_VERBOSE +#if !defined(yyoverflow) || YYERROR_VERBOSE /*-------------------------------------------------. | yyexhaustedlab -- memory exhaustion comes here. | `-------------------------------------------------*/ @@ -2228,14 +2444,14 @@ yydestruct ("Cleanup: discarding lookahead", yytoken, &yylval, &yylloc); } - /* Do not reclaim the symbols of the rule whose action triggered + /* Do not reclaim the symbols of the rule which action triggered this YYABORT or YYACCEPT. */ YYPOPSTACK (yylen); YY_STACK_PRINT (yyss, yyssp); while (yyssp != yyss) { yydestruct ("Cleanup: popping", - yystos[*yyssp], yyvsp, yylsp); + yystos[*yyssp], yyvsp, yylsp); YYPOPSTACK (1); } #ifndef yyoverflow @@ -2246,12 +2462,18 @@ if (yymsg != yymsgbuf) YYSTACK_FREE (yymsg); #endif - return yyresult; + /* Make sure YYID is used. */ + return YYID (yyresult); } -#line 472 "dtc-parser.y" /* yacc.c:1906 */ + + + +/* Line 2067 of yacc.c */ +#line 489 "dtc-parser.y" void yyerror(char const *s) { ERROR(&yylloc, "%s", s); } + --- linux-raspi2-4.2.0.orig/scripts/dtc/dtc-parser.tab.h_shipped +++ linux-raspi2-4.2.0/scripts/dtc/dtc-parser.tab.h_shipped @@ -1,19 +1,19 @@ -/* A Bison parser, made by GNU Bison 3.0.2. */ +/* A Bison parser, made by GNU Bison 2.5. */ /* Bison interface for Yacc-like parsers in C - - Copyright (C) 1984, 1989-1990, 2000-2013 Free Software Foundation, Inc. - + + Copyright (C) 1984, 1989-1990, 2000-2011 Free Software Foundation, Inc. + 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 3 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 . */ @@ -26,55 +26,50 @@ special exception, which will cause the skeleton and the resulting Bison output files to be licensed under the GNU General Public License without this special exception. - + This special exception was added by the Free Software Foundation in version 2.2 of Bison. */ -#ifndef YY_YY_DTC_PARSER_TAB_H_INCLUDED -# define YY_YY_DTC_PARSER_TAB_H_INCLUDED -/* Debug traces. */ -#ifndef YYDEBUG -# define YYDEBUG 0 -#endif -#if YYDEBUG -extern int yydebug; -#endif -/* Token type. */ +/* Tokens. */ #ifndef YYTOKENTYPE # define YYTOKENTYPE - enum yytokentype - { - DT_V1 = 258, - DT_MEMRESERVE = 259, - DT_LSHIFT = 260, - DT_RSHIFT = 261, - DT_LE = 262, - DT_GE = 263, - DT_EQ = 264, - DT_NE = 265, - DT_AND = 266, - DT_OR = 267, - DT_BITS = 268, - DT_DEL_PROP = 269, - DT_DEL_NODE = 270, - DT_PROPNODENAME = 271, - DT_LITERAL = 272, - DT_CHAR_LITERAL = 273, - DT_BYTE = 274, - DT_STRING = 275, - DT_LABEL = 276, - DT_REF = 277, - DT_INCBIN = 278 - }; + /* Put the tokens into the symbol table, so that GDB and other debuggers + know about them. */ + enum yytokentype { + DT_V1 = 258, + DT_PLUGIN = 259, + DT_MEMRESERVE = 260, + DT_LSHIFT = 261, + DT_RSHIFT = 262, + DT_LE = 263, + DT_GE = 264, + DT_EQ = 265, + DT_NE = 266, + DT_AND = 267, + DT_OR = 268, + DT_BITS = 269, + DT_DEL_PROP = 270, + DT_DEL_NODE = 271, + DT_PROPNODENAME = 272, + DT_LITERAL = 273, + DT_CHAR_LITERAL = 274, + DT_BYTE = 275, + DT_STRING = 276, + DT_LABEL = 277, + DT_REF = 278, + DT_INCBIN = 279 + }; #endif -/* Value type. */ + + #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED -typedef union YYSTYPE YYSTYPE; -union YYSTYPE +typedef union YYSTYPE { -#line 38 "dtc-parser.y" /* yacc.c:1909 */ + +/* Line 2068 of yacc.c */ +#line 39 "dtc-parser.y" char *propnodename; char *labelref; @@ -92,30 +87,32 @@ struct node *nodelist; struct reserve_info *re; uint64_t integer; + int is_plugin; + + -#line 97 "dtc-parser.tab.h" /* yacc.c:1909 */ -}; +/* Line 2068 of yacc.c */ +#line 96 "dtc-parser.tab.h" +} YYSTYPE; # define YYSTYPE_IS_TRIVIAL 1 +# define yystype YYSTYPE /* obsolescent; will be withdrawn */ # define YYSTYPE_IS_DECLARED 1 #endif -/* Location type. */ +extern YYSTYPE yylval; + #if ! defined YYLTYPE && ! defined YYLTYPE_IS_DECLARED -typedef struct YYLTYPE YYLTYPE; -struct YYLTYPE +typedef struct YYLTYPE { int first_line; int first_column; int last_line; int last_column; -}; +} YYLTYPE; +# define yyltype YYLTYPE /* obsolescent; will be withdrawn */ # define YYLTYPE_IS_DECLARED 1 # define YYLTYPE_IS_TRIVIAL 1 #endif - -extern YYSTYPE yylval; extern YYLTYPE yylloc; -int yyparse (void); -#endif /* !YY_YY_DTC_PARSER_TAB_H_INCLUDED */ --- linux-raspi2-4.2.0.orig/scripts/dtc/dtc-parser.y +++ linux-raspi2-4.2.0/scripts/dtc/dtc-parser.y @@ -19,6 +19,7 @@ */ %{ #include +#include #include "dtc.h" #include "srcpos.h" @@ -52,9 +53,11 @@ struct node *nodelist; struct reserve_info *re; uint64_t integer; + int is_plugin; } %token DT_V1 +%token DT_PLUGIN %token DT_MEMRESERVE %token DT_LSHIFT DT_RSHIFT DT_LE DT_GE DT_EQ DT_NE DT_AND DT_OR %token DT_BITS @@ -71,6 +74,7 @@ %type propdata %type propdataprefix +%type plugindecl %type memreserve %type memreserves %type arrayprefix @@ -101,10 +105,23 @@ %% sourcefile: - DT_V1 ';' memreserves devicetree + DT_V1 ';' plugindecl memreserves devicetree { - the_boot_info = build_boot_info($3, $4, - guess_boot_cpuid($4)); + $5->is_plugin = $3; + $5->is_root = 1; + the_boot_info = build_boot_info($4, $5, + guess_boot_cpuid($5)); + } + ; + +plugindecl: + /* empty */ + { + $$ = 0; + } + | DT_PLUGIN ';' + { + $$ = 1; } ; --- linux-raspi2-4.2.0.orig/scripts/dtc/dtc.c +++ linux-raspi2-4.2.0/scripts/dtc/dtc.c @@ -29,6 +29,7 @@ int minsize; /* Minimum blob size */ int padsize; /* Additional padding to blob */ int phandle_format = PHANDLE_BOTH; /* Use linux,phandle or phandle properties */ +int symbol_fixup_support = 0; static void fill_fullpaths(struct node *tree, const char *prefix) { @@ -51,7 +52,7 @@ #define FDT_VERSION(version) _FDT_VERSION(version) #define _FDT_VERSION(version) #version static const char usage_synopsis[] = "dtc [options] "; -static const char usage_short_opts[] = "qI:O:o:V:d:R:S:p:fb:i:H:sW:E:hv"; +static const char usage_short_opts[] = "qI:O:o:V:d:R:S:p:fb:i:H:sW:E:hv@"; static struct option const usage_long_opts[] = { {"quiet", no_argument, NULL, 'q'}, {"in-format", a_argument, NULL, 'I'}, @@ -69,6 +70,7 @@ {"phandle", a_argument, NULL, 'H'}, {"warning", a_argument, NULL, 'W'}, {"error", a_argument, NULL, 'E'}, + {"symbols", a_argument, NULL, '@'}, {"help", no_argument, NULL, 'h'}, {"version", no_argument, NULL, 'v'}, {NULL, no_argument, NULL, 0x0}, @@ -99,6 +101,7 @@ "\t\tboth - Both \"linux,phandle\" and \"phandle\" properties", "\n\tEnable/disable warnings (prefix with \"no-\")", "\n\tEnable/disable errors (prefix with \"no-\")", + "\n\tSymbols and Fixups support", "\n\tPrint this help and exit", "\n\tPrint version and exit", NULL, @@ -186,7 +189,9 @@ case 'E': parse_checks_option(false, true, optarg); break; - + case '@': + symbol_fixup_support = 1; + break; case 'h': usage(NULL); default: --- linux-raspi2-4.2.0.orig/scripts/dtc/dtc.h +++ linux-raspi2-4.2.0/scripts/dtc/dtc.h @@ -54,6 +54,7 @@ extern int minsize; /* Minimum blob size */ extern int padsize; /* Additional padding to blob */ extern int phandle_format; /* Use linux,phandle or phandle properties */ +extern int symbol_fixup_support;/* enable symbols & fixup support */ #define PHANDLE_LEGACY 0x1 #define PHANDLE_EPAPR 0x2 @@ -132,6 +133,25 @@ struct label *next; }; +struct fixup_entry { + int offset; + struct node *node; + struct property *prop; + struct fixup_entry *next; +}; + +struct fixup { + char *ref; + struct fixup_entry *entries; + struct fixup *next; +}; + +struct symbol { + struct label *label; + struct node *node; + struct symbol *next; +}; + struct property { bool deleted; char *name; @@ -158,6 +178,12 @@ int addr_cells, size_cells; struct label *labels; + + int is_root; + int is_plugin; + struct fixup *fixups; + struct symbol *symbols; + struct fixup_entry *local_fixups; }; #define for_each_label_withdel(l0, l) \ @@ -181,6 +207,18 @@ for_each_child_withdel(n, c) \ if (!(c)->deleted) +#define for_each_fixup(n, f) \ + for ((f) = (n)->fixups; (f); (f) = (f)->next) + +#define for_each_fixup_entry(f, fe) \ + for ((fe) = (f)->entries; (fe); (fe) = (fe)->next) + +#define for_each_symbol(n, s) \ + for ((s) = (n)->symbols; (s); (s) = (s)->next) + +#define for_each_local_fixup_entry(n, fe) \ + for ((fe) = (n)->local_fixups; (fe); (fe) = (fe)->next) + void add_label(struct label **labels, char *label); void delete_labels(struct label **labels); --- linux-raspi2-4.2.0.orig/scripts/dtc/flattree.c +++ linux-raspi2-4.2.0/scripts/dtc/flattree.c @@ -262,6 +262,12 @@ struct property *prop; struct node *child; bool seen_name_prop = false; + struct symbol *sym; + struct fixup *f; + struct fixup_entry *fe; + char *name, *s; + const char *fullpath; + int namesz, nameoff, vallen; if (tree->deleted) return; @@ -276,8 +282,6 @@ emit->align(etarget, sizeof(cell_t)); for_each_property(tree, prop) { - int nameoff; - if (streq(prop->name, "name")) seen_name_prop = true; @@ -310,6 +314,139 @@ flatten_tree(child, emit, etarget, strbuf, vi); } + if (!symbol_fixup_support) + goto no_symbols; + + /* add the symbol nodes (if any) */ + if (tree->symbols) { + + emit->beginnode(etarget, NULL); + emit->string(etarget, "__symbols__", 0); + emit->align(etarget, sizeof(cell_t)); + + for_each_symbol(tree, sym) { + + vallen = strlen(sym->node->fullpath); + + nameoff = stringtable_insert(strbuf, sym->label->label); + + emit->property(etarget, NULL); + emit->cell(etarget, vallen + 1); + emit->cell(etarget, nameoff); + + if ((vi->flags & FTF_VARALIGN) && vallen >= 8) + emit->align(etarget, 8); + + emit->string(etarget, sym->node->fullpath, + strlen(sym->node->fullpath)); + emit->align(etarget, sizeof(cell_t)); + } + + emit->endnode(etarget, NULL); + } + + /* add the fixup nodes */ + if (tree->fixups) { + + /* emit the external fixups */ + emit->beginnode(etarget, NULL); + emit->string(etarget, "__fixups__", 0); + emit->align(etarget, sizeof(cell_t)); + + for_each_fixup(tree, f) { + + namesz = 0; + for_each_fixup_entry(f, fe) { + fullpath = fe->node->fullpath; + if (fullpath[0] == '\0') + fullpath = "/"; + namesz += strlen(fullpath) + 1; + namesz += strlen(fe->prop->name) + 1; + namesz += 32; /* space for : + '\0' */ + } + + name = xmalloc(namesz); + + s = name; + for_each_fixup_entry(f, fe) { + fullpath = fe->node->fullpath; + if (fullpath[0] == '\0') + fullpath = "/"; + snprintf(s, name + namesz - s, "%s:%s:%d", + fullpath, + fe->prop->name, fe->offset); + s += strlen(s) + 1; + } + + nameoff = stringtable_insert(strbuf, f->ref); + vallen = s - name - 1; + + emit->property(etarget, NULL); + emit->cell(etarget, vallen + 1); + emit->cell(etarget, nameoff); + + if ((vi->flags & FTF_VARALIGN) && vallen >= 8) + emit->align(etarget, 8); + + emit->string(etarget, name, vallen); + emit->align(etarget, sizeof(cell_t)); + + free(name); + } + + emit->endnode(etarget, tree->labels); + } + + /* add the local fixup property */ + if (tree->local_fixups) { + + /* emit the external fixups */ + emit->beginnode(etarget, NULL); + emit->string(etarget, "__local_fixups__", 0); + emit->align(etarget, sizeof(cell_t)); + + namesz = 0; + for_each_local_fixup_entry(tree, fe) { + fullpath = fe->node->fullpath; + if (fullpath[0] == '\0') + fullpath = "/"; + namesz += strlen(fullpath) + 1; + namesz += strlen(fe->prop->name) + 1; + namesz += 32; /* space for : + '\0' */ + } + + name = xmalloc(namesz); + + s = name; + for_each_local_fixup_entry(tree, fe) { + fullpath = fe->node->fullpath; + if (fullpath[0] == '\0') + fullpath = "/"; + snprintf(s, name + namesz - s, "%s:%s:%d", + fullpath, fe->prop->name, + fe->offset); + s += strlen(s) + 1; + } + + nameoff = stringtable_insert(strbuf, "fixup"); + vallen = s - name - 1; + + emit->property(etarget, NULL); + emit->cell(etarget, vallen + 1); + emit->cell(etarget, nameoff); + + if ((vi->flags & FTF_VARALIGN) && vallen >= 8) + emit->align(etarget, 8); + + emit->string(etarget, name, vallen); + emit->align(etarget, sizeof(cell_t)); + + free(name); + + emit->endnode(etarget, tree->labels); + } + +no_symbols: emit->endnode(etarget, tree->labels); } --- linux-raspi2-4.2.0.orig/scripts/dtc/version_gen.h +++ linux-raspi2-4.2.0/scripts/dtc/version_gen.h @@ -1 +1 @@ -#define DTC_VERSION "DTC 1.4.1-g9d3649bd" +#define DTC_VERSION "DTC 1.4.1-g9d3649bd-dirty" --- linux-raspi2-4.2.0.orig/scripts/kconfig/expr.c +++ linux-raspi2-4.2.0/scripts/kconfig/expr.c @@ -1113,7 +1113,7 @@ fn(data, e->left.sym, e->left.sym->name); else fn(data, NULL, ""); - fn(data, NULL, e->type == E_LEQ ? ">=" : ">"); + fn(data, NULL, e->type == E_GEQ ? ">=" : ">"); fn(data, e->right.sym, e->right.sym->name); break; case E_UNEQUAL: --- linux-raspi2-4.2.0.orig/scripts/kconfig/lkc.h +++ linux-raspi2-4.2.0/scripts/kconfig/lkc.h @@ -88,7 +88,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-raspi2-4.2.0.orig/scripts/knlinfo +++ linux-raspi2-4.2.0/scripts/knlinfo @@ -0,0 +1,168 @@ +#!/usr/bin/env perl +# ---------------------------------------------------------------------- +# knlinfo by Phil Elwell for Raspberry Pi +# +# (c) 2014,2015 Raspberry Pi (Trading) Limited +# +# Licensed under the terms of the GNU General Public License. +# ---------------------------------------------------------------------- + +use strict; +use integer; + +use Fcntl ":seek"; + +my $trailer_magic = 'RPTL'; + +my %atom_formats = +( + 'DTOK' => \&format_bool, + 'KVer' => \&format_string, + '283x' => \&format_bool, +); + +if (@ARGV != 1) +{ + print ("Usage: knlinfo \n"); + exit(1); +} + +my $kernel_file = $ARGV[0]; + + +my ($atoms, $pos) = read_trailer($kernel_file); + +exit(1) if (!$atoms); + +printf("Kernel trailer found at %d/0x%x:\n", $pos, $pos); + +foreach my $atom (@$atoms) +{ + printf(" %s: %s\n", $atom->[0], format_atom($atom)); +} + +exit(0); + +sub read_trailer +{ + my ($kernel_file) = @_; + my $fh; + + if (!open($fh, '<', $kernel_file)) + { + print ("* Failed to open '$kernel_file'\n"); + return undef; + } + + if (!seek($fh, -12, SEEK_END)) + { + print ("* seek error in '$kernel_file'\n"); + return undef; + } + + my $last_bytes; + sysread($fh, $last_bytes, 12); + + my ($trailer_len, $data_len, $magic) = unpack('VVa4', $last_bytes); + + if (($magic ne $trailer_magic) || ($data_len != 4)) + { + print ("* no trailer\n"); + return undef; + } + if (!seek($fh, -12, SEEK_END)) + { + print ("* seek error in '$kernel_file'\n"); + return undef; + } + + $trailer_len -= 12; + + while ($trailer_len > 0) + { + if ($trailer_len < 8) + { + print ("* truncated atom header in trailer\n"); + return undef; + } + if (!seek($fh, -8, SEEK_CUR)) + { + print ("* seek error in '$kernel_file'\n"); + return undef; + } + $trailer_len -= 8; + + my $atom_hdr; + sysread($fh, $atom_hdr, 8); + my ($atom_len, $atom_type) = unpack('Va4', $atom_hdr); + + if ($trailer_len < $atom_len) + { + print ("* truncated atom data in trailer\n"); + return undef; + } + + my $rounded_len = (($atom_len + 3) & ~3); + if (!seek($fh, -(8 + $rounded_len), SEEK_CUR)) + { + print ("* seek error in '$kernel_file'\n"); + return undef; + } + $trailer_len -= $rounded_len; + + my $atom_data; + sysread($fh, $atom_data, $atom_len); + + if (!seek($fh, -$atom_len, SEEK_CUR)) + { + print ("* seek error in '$kernel_file'\n"); + return undef; + } + + push @$atoms, [ $atom_type, $atom_data ]; + } + + if (($$atoms[-1][0] eq "\x00\x00\x00\x00") && + ($$atoms[-1][1] eq "")) + { + pop @$atoms; + } + else + { + print ("* end marker missing from trailer\n"); + } + + return ($atoms, tell($fh)); +} + +sub format_atom +{ + my ($atom) = @_; + + my $format_func = $atom_formats{$atom->[0]} || \&format_hex; + return $format_func->($atom->[1]); +} + +sub format_bool +{ + my ($data) = @_; + return unpack('V', $data) ? 'true' : 'false'; +} + +sub format_int +{ + my ($data) = @_; + return unpack('V', $data); +} + +sub format_string +{ + my ($data) = @_; + return '"'.$data.'"'; +} + +sub format_hex +{ + my ($data) = @_; + return unpack('H*', $data); +} --- linux-raspi2-4.2.0.orig/scripts/mkknlimg +++ linux-raspi2-4.2.0/scripts/mkknlimg @@ -0,0 +1,244 @@ +#!/usr/bin/env perl +# ---------------------------------------------------------------------- +# mkknlimg by Phil Elwell for Raspberry Pi +# based on extract-ikconfig by Dick Streefland +# +# (c) 2009,2010 Dick Streefland +# (c) 2014,2015 Raspberry Pi (Trading) Limited +# +# Licensed under the terms of the GNU General Public License. +# ---------------------------------------------------------------------- + +use strict; +use warnings; +use integer; + +my $trailer_magic = 'RPTL'; + +my $tmpfile1 = "/tmp/mkknlimg_$$.1"; +my $tmpfile2 = "/tmp/mkknlimg_$$.2"; + +my $dtok = 0; +my $is_283x = 0; + +while (@ARGV && ($ARGV[0] =~ /^-/)) +{ + my $arg = shift(@ARGV); + if ($arg eq '--dtok') + { + $dtok = 1; + } + elsif ($arg eq '--283x') + { + $is_283x = 1; + } + else + { + print ("* Unknown option '$arg'\n"); + usage(); + } +} + +usage() if (@ARGV != 2); + +my $kernel_file = $ARGV[0]; +my $out_file = $ARGV[1]; + +if (! -r $kernel_file) +{ + print ("* File '$kernel_file' not found\n"); + usage(); +} + +my @wanted_strings = +( + 'bcm2708_fb', + 'brcm,bcm2835-mmc', + 'brcm,bcm2835-sdhost', + 'brcm,bcm2708-pinctrl', + 'brcm,bcm2835-gpio', + 'brcm,bcm2835', + 'brcm,bcm2836' +); + +my $res = try_extract($kernel_file, $tmpfile1); +$res = try_decompress('\037\213\010', 'xy', 'gunzip', 0, + $kernel_file, $tmpfile1, $tmpfile2) if (!$res); +$res = try_decompress('\3757zXZ\000', 'abcde', 'unxz --single-stream', -1, + $kernel_file, $tmpfile1, $tmpfile2) if (!$res); +$res = try_decompress('BZh', 'xy', 'bunzip2', 0, + $kernel_file, $tmpfile1, $tmpfile2) if (!$res); +$res = try_decompress('\135\0\0\0', 'xxx', 'unlzma', 0, + $kernel_file, $tmpfile1, $tmpfile2) if (!$res); +$res = try_decompress('\211\114\132', 'xy', 'lzop -d', 0, + $kernel_file, $tmpfile1, $tmpfile2) if (!$res); +$res = try_decompress('\002\041\114\030', 'xy', 'lz4 -d', 1, + $kernel_file, $tmpfile1, $tmpfile2) if (!$res); + +my $append_trailer; +my $trailer; +my $kver = '?'; + +$append_trailer = $dtok; + +if ($res) +{ + $kver = $res->{''} || '?'; + print("Version: $kver\n"); + + $append_trailer = $dtok; + if (!$dtok) + { + if (config_bool($res, 'bcm2708_fb') || + config_bool($res, 'brcm,bcm2835-mmc') || + config_bool($res, 'brcm,bcm2835-sdhost')) + { + $dtok ||= config_bool($res, 'brcm,bcm2708-pinctrl'); + $dtok ||= config_bool($res, 'brcm,bcm2835-gpio'); + $is_283x ||= config_bool($res, 'brcm,bcm2835'); + $is_283x ||= config_bool($res, 'brcm,bcm2836'); + $dtok ||= $is_283x; + $append_trailer = 1; + } + else + { + print ("* This doesn't look like a Raspberry Pi kernel. In pass-through mode.\n"); + } + } +} +elsif (!$dtok) +{ + print ("* Is this a valid kernel? In pass-through mode.\n"); +} + +if ($append_trailer) +{ + printf("DT: %s\n", $dtok ? "y" : "n"); + printf("283x: %s\n", $is_283x ? "y" : "n"); + + my @atoms; + + push @atoms, [ $trailer_magic, pack('V', 0) ]; + push @atoms, [ 'KVer', $kver ]; + push @atoms, [ 'DTOK', pack('V', $dtok) ]; + push @atoms, [ '283x', pack('V', $is_283x) ]; + + $trailer = pack_trailer(\@atoms); + $atoms[0]->[1] = pack('V', length($trailer)); + + $trailer = pack_trailer(\@atoms); +} + +my $ofh; +my $total_len = 0; + +if ($out_file eq $kernel_file) +{ + die "* Failed to open '$out_file' for append\n" + if (!open($ofh, '>>', $out_file)); + $total_len = tell($ofh); +} +else +{ + die "* Failed to open '$kernel_file'\n" + if (!open(my $ifh, '<', $kernel_file)); + die "* Failed to create '$out_file'\n" + if (!open($ofh, '>', $out_file)); + + my $copybuf; + while (1) + { + my $bytes = sysread($ifh, $copybuf, 64*1024); + last if (!$bytes); + syswrite($ofh, $copybuf, $bytes); + $total_len += $bytes; + } + close($ifh); +} + +if ($trailer) +{ + # Pad to word-alignment + syswrite($ofh, "\x000\x000\x000", (-$total_len & 0x3)); + syswrite($ofh, $trailer); +} + +close($ofh); + +exit($trailer ? 0 : 1); + +END { + unlink($tmpfile1) if ($tmpfile1); + unlink($tmpfile2) if ($tmpfile2); +} + + +sub usage +{ + print ("Usage: mkknlimg [--dtok] [--283x] \n"); + exit(1); +} + +sub try_extract +{ + my ($knl, $tmp) = @_; + + my $ver = `strings "$knl" | grep -a -E "^Linux version [1-9]"`; + + return undef if (!$ver); + + chomp($ver); + + my $res = { ''=>$ver }; + my $string_pattern = '^('.join('|', @wanted_strings).')$'; + + my @matches = `strings \"$knl\" | grep -E \"$string_pattern\"`; + foreach my $match (@matches) + { + chomp($match); + $res->{$match} = 1; + } + + return $res; +} + + +sub try_decompress +{ + my ($magic, $subst, $zcat, $idx, $knl, $tmp1, $tmp2) = @_; + + my $pos = `tr "$magic\n$subst" "\n$subst=" < "$knl" | grep -abo "^$subst"`; + if ($pos) + { + chomp($pos); + $pos = (split(/[\r\n]+/, $pos))[$idx]; + return undef if (!defined($pos)); + $pos =~ s/:.*[\r\n]*$//s; + my $cmd = "tail -c+$pos \"$knl\" | $zcat > $tmp2 2> /dev/null"; + my $err = (system($cmd) >> 8); + return undef if (($err != 0) && ($err != 2)); + + return try_extract($tmp2, $tmp1); + } + + return undef; +} + +sub pack_trailer +{ + my ($atoms) = @_; + my $trailer = pack('VV', 0, 0); + for (my $i = $#$atoms; $i>=0; $i--) + { + my $atom = $atoms->[$i]; + $trailer .= pack('a*x!4Va4', $atom->[1], length($atom->[1]), $atom->[0]); + } + return $trailer; +} + +sub config_bool +{ + my ($configs, $wanted) = @_; + my $val = $configs->{$wanted} || 'n'; + return (($val eq 'y') || ($val eq '1')); +} --- linux-raspi2-4.2.0.orig/scripts/recordmcount.c +++ linux-raspi2-4.2.0/scripts/recordmcount.c @@ -42,6 +42,7 @@ #ifndef EM_AARCH64 #define EM_AARCH64 183 +#define R_AARCH64_NONE 0 #define R_AARCH64_ABS64 257 #endif @@ -160,6 +161,22 @@ return 0; } +static unsigned char ideal_nop4_arm64[4] = {0x1f, 0x20, 0x03, 0xd5}; +static int make_nop_arm64(void *map, size_t const offset) +{ + uint32_t *ptr; + + ptr = map + offset; + /* bl <_mcount> is 0x94000000 before relocation */ + if (*ptr != 0x94000000) + return -1; + + /* Convert to nop */ + ulseek(fd_map, offset, SEEK_SET); + uwrite(fd_map, ideal_nop, 4); + return 0; +} + /* * Get the whole file as a programming convenience in order to avoid * malloc+lseek+read+free of many pieces. If successful, then mmap @@ -353,7 +370,12 @@ altmcount = "__gnu_mcount_nc"; break; case EM_AARCH64: - reltype = R_AARCH64_ABS64; gpfx = '_'; break; + reltype = R_AARCH64_ABS64; + make_nop = make_nop_arm64; + rel_type_nop = R_AARCH64_NONE; + ideal_nop = ideal_nop4_arm64; + gpfx = '_'; + break; case EM_IA_64: reltype = R_IA64_IMM64; gpfx = '_'; break; case EM_METAG: reltype = R_METAG_ADDR32; altmcount = "_mcount_wrapper"; --- linux-raspi2-4.2.0.orig/scripts/recordmcount.h +++ linux-raspi2-4.2.0/scripts/recordmcount.h @@ -377,7 +377,7 @@ if (mcountsym == Elf_r_sym(relp) && !is_fake_mcount(relp)) { if (make_nop) - ret = make_nop((void *)ehdr, shdr->sh_offset + relp->r_offset); + ret = make_nop((void *)ehdr, _w(shdr->sh_offset) + _w(relp->r_offset)); if (warn_on_notrace_sect && !once) { printf("Section %s has mcount callers being ignored\n", txtname); --- linux-raspi2-4.2.0.orig/security/apparmor/Kconfig +++ linux-raspi2-4.2.0/security/apparmor/Kconfig @@ -30,14 +30,62 @@ If you are unsure how to answer this question, answer 1. +config SECURITY_APPARMOR_STATS + bool "enable debug statistics" + depends on SECURITY_APPARMOR + select APPARMOR_LABEL_STATS + default n + help + This enables keeping statistics on various internal structures + and functions in apparmor. + + If you are unsure how to answer this question, answer N. + +config SECURITY_APPARMOR_UNCONFINED_INIT + bool "Set init to unconfined on boot" + depends on SECURITY_APPARMOR + default y + help + This option determines policy behavior during early boot by + placing the init process in the unconfined state, or the + 'default' profile. + + This option determines policy behavior during early boot by + placing the init process in the unconfined state, or the + 'default' profile. + + 'Y' means init and its children are not confined, unless the + init process is re-execed after a policy load; loaded policy + will only apply to processes started after the load. + + 'N' means init and its children are confined in a profile + named 'default', which can be replaced later and thus + provide for confinement for processes started early at boot, + though not confined during early boot. + + If you are unsure how to answer this question, answer Y. + config SECURITY_APPARMOR_HASH - bool "SHA1 hash of loaded profiles" + bool "enable introspection of sha1 hashes for loaded profiles" depends on SECURITY_APPARMOR depends on CRYPTO select CRYPTO_SHA1 default y help - This option selects whether sha1 hashing is done against loaded - profiles and exported for inspection to user space via the apparmor - filesystem. + This option selects whether introspection of loaded policy + is available to userspace via the apparmor filesystem. + +config SECURITY_APPARMOR_HASH_DEFAULT + bool "Enable policy hash introspection by default" + depends on SECURITY_APPARMOR_HASH + default y + + help + This option selects whether sha1 hashing of loaded policy + is enabled by default. The generation of sha1 hashes for + loaded policy provide system administrators a quick way + to verify that policy in the kernel matches what is expected, + however it can slow down policy load on some devices. In + these cases policy hashing can be disabled by default and + enabled only if needed. --- linux-raspi2-4.2.0.orig/security/apparmor/Makefile +++ linux-raspi2-4.2.0/security/apparmor/Makefile @@ -4,11 +4,44 @@ apparmor-y := apparmorfs.o audit.o capability.o context.o ipc.o lib.o match.o \ path.o domain.o policy.o policy_unpack.o procattr.o lsm.o \ - resource.o sid.o file.o + resource.o sid.o file.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 +clean-files := capability_names.h rlim_names.h net_names.h +# Build a lower case string table of address family names +# Transform lines from +# define AF_LOCAL 1 /* POSIX name for AF_UNIX */ +# #define AF_INET 2 /* Internet IP Protocol */ +# to +# [1] = "local", +# [2] = "inet", +# +# and build the securityfs entries for the mapping. +# Transforms lines from +# #define AF_INET 2 /* Internet IP Protocol */ +# to +# #define AA_FS_AF_MASK "local inet" +quiet_cmd_make-af = GEN $@ +cmd_make-af = echo "static const char *address_family_names[] = {" > $@ ;\ + sed $< >>$@ -r -n -e "/AF_MAX/d" -e "/AF_LOCAL/d" -e "/AF_ROUTE/d" -e \ + 's/^\#define[ \t]+AF_([A-Z0-9_]+)[ \t]+([0-9]+)(.*)/[\2] = "\L\1",/p';\ + echo "};" >> $@ ;\ + echo -n '\#define AA_FS_AF_MASK "' >> $@ ;\ + sed -r -n -e "/AF_MAX/d" -e "/AF_LOCAL/d" -e "/AF_ROUTE/d" -e \ + 's/^\#define[ \t]+AF_([A-Z0-9_]+)[ \t]+([0-9]+)(.*)/\L\1/p'\ + $< | tr '\n' ' ' | sed -e 's/ $$/"\n/' >> $@ + +# Build a lower case string table of sock type names +# Transform lines from +# SOCK_STREAM = 1, +# to +# [1] = "stream", +quiet_cmd_make-sock = GEN $@ +cmd_make-sock = echo "static const char *sock_type_names[] = {" >> $@ ;\ + sed $^ >>$@ -r -n \ + -e 's/^\tSOCK_([A-Z0-9_]+)[\t]+=[ \t]+([0-9]+)(.*)/[\2] = "\L\1",/p';\ + echo "};" >> $@ # Build a lower case string table of capability names # Transforms lines from @@ -61,6 +94,7 @@ tr '\n' ' ' | sed -e 's/ $$/"\n/' >> $@ $(obj)/capability.o : $(obj)/capability_names.h +$(obj)/net.o : $(obj)/net_names.h $(obj)/resource.o : $(obj)/rlim_names.h $(obj)/capability_names.h : $(srctree)/include/uapi/linux/capability.h \ $(src)/Makefile @@ -68,3 +102,8 @@ $(obj)/rlim_names.h : $(srctree)/include/uapi/asm-generic/resource.h \ $(src)/Makefile $(call cmd,make-rlim) +$(obj)/net_names.h : $(srctree)/include/linux/socket.h \ + $(srctree)/include/linux/net.h \ + $(src)/Makefile + $(call cmd,make-af) + $(call cmd,make-sock) --- linux-raspi2-4.2.0.orig/security/apparmor/af_unix.c +++ linux-raspi2-4.2.0/security/apparmor/af_unix.c @@ -0,0 +1,631 @@ +/* + * 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. + */ + +#include + +#include "include/af_unix.h" +#include "include/apparmor.h" +#include "include/context.h" +#include "include/file.h" +#include "include/label.h" +#include "include/path.h" +#include "include/policy.h" + +static inline int unix_fs_perm(int op, u32 mask, struct aa_label *label, + struct unix_sock *u, int flags) +{ + AA_BUG(!label); + AA_BUG(!u); + AA_BUG(!UNIX_FS(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 file_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 + */ + 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, + 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) +{ + u16 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)->target = aa_peer_name(peer); + + if (state) { + state = aa_dfa_match(profile->policy.dfa, state, aa_peer_name(peer)); + 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; + + AA_BUG(!profile); + AA_BUG(profile_unconfined(profile)); + + if ((state = PROFILE_MEDIATES_AF(profile, AF_UNIX))) { + DEFINE_AUDIT_UNIX(sa, OP_CREATE, NULL, type, protocol); + + 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, OP_CREATE, family, type, protocol, + NULL); +} + +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, int op, + u32 request, struct sock *sk) +{ + unsigned int state; + + 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) { + DEFINE_AUDIT_UNIX(sa, op, sk, sk->sk_type, sk->sk_protocol); + + state = match_to_sk(profile, state, unix_sk(sk), + &aad(&sa)->info); + return do_perms(profile, state, request, &sa); + } + + return aa_profile_af_perm(profile, op, sk->sk_family, sk->sk_type, + sk->sk_protocol, sk); +} + +int aa_unix_label_sk_perm(struct aa_label *label, int 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, int 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(int op, u32 request, struct socket *sock) +{ + return unix_label_sock_perm(aa_current_label(), op, request, sock); +} + +static int profile_bind_perm(struct aa_profile *profile, struct sock *sk, + struct sockaddr *addr, int addrlen) +{ + unsigned int state; + + 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 */ + DEFINE_AUDIT_UNIX(sa, OP_BIND, sk, sk->sk_type, + sk->sk_protocol); + 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_perm(profile, OP_BIND, sk->sk_family, sk->sk_type, + sk->sk_protocol, sk); +} + +int aa_unix_bind_perm(struct socket *sock, struct sockaddr *address, + int addrlen) +{ + struct aa_profile *profile; + struct aa_label *label = aa_current_label(); + + /* fs bind is handled by mknod */ + if (unconfined(label) || unix_addr_fs(address, addrlen)) + return 0; + + return fn_for_each_confined(label, profile, + profile_bind_perm(profile, sock->sk, address, addrlen)); +} + +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; + + 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) { + u16 b = cpu_to_be16(backlog); + DEFINE_AUDIT_UNIX(sa, OP_LISTEN, sk, sk->sk_type, + sk->sk_protocol); + + 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_perm(profile, OP_LISTEN, sk->sk_family, + sk->sk_type, sk->sk_protocol, sk); +} + +int aa_unix_listen_perm(struct socket *sock, int backlog) +{ + struct aa_profile *profile; + struct aa_label *label = aa_current_label(); + + if (unconfined(label) || UNIX_FS(sock->sk)) + return 0; + + return fn_for_each_confined(label, profile, + profile_listen_perm(profile, sock->sk, backlog)); +} + + +static inline int profile_accept_perm(struct aa_profile *profile, + struct sock *sk, + struct sock *newsk) +{ + unsigned int state; + + 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) { + DEFINE_AUDIT_UNIX(sa, OP_ACCEPT, sk, sk->sk_type, + sk->sk_protocol); + + 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_perm(profile, OP_ACCEPT, sk->sk_family, + sk->sk_type, sk->sk_protocol, 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 = aa_current_label(); + + if (unconfined(label) || UNIX_FS(sock->sk)) + return 0; + + return fn_for_each_confined(label, profile, + profile_accept_perm(profile, sock->sk, newsock->sk)); +} + + +/* 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(int op, u32 request, struct socket *sock, + struct msghdr *msg, int size) +{ + return 0; +} + + +static int profile_opt_perm(struct aa_profile *profile, int op, u32 request, + struct sock *sk, int level, int optname) +{ + unsigned int state; + + 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) { + u16 b = cpu_to_be16(optname); + DEFINE_AUDIT_UNIX(sa, op, sk, sk->sk_type, sk->sk_protocol); + + 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_perm(profile, op, sk->sk_family, + sk->sk_type, sk->sk_protocol, sk); +} + +int aa_unix_opt_perm(int op, u32 request, struct socket *sock, int level, + int optname) +{ + struct aa_profile *profile; + struct aa_label *label = aa_current_label(); + + if (unconfined(label) || UNIX_FS(sock->sk)) + return 0; + + return fn_for_each_confined(label, profile, + profile_opt_perm(profile, op, request, sock->sk, + level, optname)); +} + +/* null peer_label is allowed, in which case the peer_sk label is used */ +static int profile_peer_perm(struct aa_profile *profile, int 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_cxt *peer_cxt = SK_CXT(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_cxt->label; + return fn_for_each(peer_label, peerp, + match_label(profile, peerp, state, request, + sa)); + } + + return aa_profile_af_perm(profile, op, sk->sk_family, sk->sk_type, + sk->sk_protocol, sk); +} + +/** + * + * Requires: lock held on both @sk and @peer_sk + */ +int aa_unix_peer_perm(struct aa_label *label, int 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(peeru)) + return unix_fs_perm(op, request, label, peeru, 0); + else if (UNIX_FS(u)) + return unix_fs_perm(op, request, label, u, 0); + else { + struct aa_profile *profile; + DEFINE_AUDIT_UNIX(sa, op, sk, sk->sk_type, sk->sk_protocol); + 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, int 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_cxt *pcxt = SK_CXT(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(pcxt->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-raspi2-4.2.0.orig/security/apparmor/apparmorfs.c +++ linux-raspi2-4.2.0/security/apparmor/apparmorfs.c @@ -18,15 +18,18 @@ #include #include #include +#include #include #include #include +#include #include "include/apparmor.h" #include "include/apparmorfs.h" #include "include/audit.h" #include "include/context.h" #include "include/crypto.h" +#include "include/ipc.h" #include "include/policy.h" #include "include/resource.h" @@ -37,7 +40,7 @@ * * Returns: length of mangled name */ -static int mangle_name(char *name, char *target) +static int mangle_name(const char *name, char *target) { char *t = target; @@ -186,6 +189,147 @@ .llseek = default_llseek, }; +/** + * query_label - queries a label and writes permissions to buf + * @buf: the resulting permissions string is stored here (NOT NULL) + * @buf_len: size of buf + * @query: binary query string to match against the dfa + * @query_len: size of query + * + * The buffers pointed to by buf and query may overlap. The query buffer is + * parsed before buf is written to. + * + * The query should look like "LABEL_NAME\0DFA_STRING" where LABEL_NAME is + * the name of the label, in the current namespace, that is to be queried and + * DFA_STRING is a binary string to match against the label(s)'s DFA. + * + * LABEL_NAME must be NUL terminated. DFA_STRING may contain NUL characters + * but must *not* be NUL terminated. + * + * Returns: number of characters written to buf or -errno on failure + */ +static ssize_t query_label(char *buf, size_t buf_len, + char *query, size_t query_len) +{ + struct aa_profile *profile; + struct aa_label *label; + char *label_name, *match_str; + size_t label_name_len, match_len; + struct aa_perms perms; + unsigned int state = 0; + struct label_it i; + + if (!query_len) + return -EINVAL; + + label_name = query; + label_name_len = strnlen(query, query_len); + if (!label_name_len || label_name_len == query_len) + return -EINVAL; + + /** + * The extra byte is to account for the null byte between the + * profile name and dfa string. profile_name_len is greater + * than zero and less than query_len, so a byte can be safely + * added or subtracted. + */ + match_str = label_name + label_name_len + 1; + match_len = query_len - label_name_len - 1; + + label = aa_label_parse(aa_current_label(), label_name, GFP_KERNEL, + false); + if (IS_ERR(label)) + return PTR_ERR(label); + + aa_perms_all(&perms); + label_for_each_confined(i, label, profile) { + struct aa_perms tmp; + struct aa_dfa *dfa; + if (profile->file.dfa && *match_str == AA_CLASS_FILE) { + dfa = profile->file.dfa; + state = aa_dfa_match_len(dfa, profile->file.start, + match_str + 1, match_len - 1); + } else if (profile->policy.dfa) { + if (!PROFILE_MEDIATES_SAFE(profile, *match_str)) + continue; /* no change to current perms */ + dfa = profile->policy.dfa; + state = aa_dfa_match_len(dfa, profile->policy.start[0], + match_str, match_len); + } + if (state) + aa_compute_perms(dfa, state, &tmp); + else + aa_perms_clear(&tmp); + aa_apply_modes_to_perms(profile, &tmp); + aa_perms_accum_raw(&perms, &tmp); + } + aa_put_label(label); + + return scnprintf(buf, buf_len, + "allow 0x%08x\ndeny 0x%08x\naudit 0x%08x\nquiet 0x%08x\n", + perms.allow, perms.deny, perms.audit, perms.quiet); +} + +#define QUERY_CMD_LABEL "label\0" +#define QUERY_CMD_LABEL_LEN 6 +#define QUERY_CMD_PROFILE "profile\0" +#define QUERY_CMD_PROFILE_LEN 8 + +/** + * aa_write_access - generic permissions query + * @file: pointer to open apparmorfs/access file + * @ubuf: user buffer containing the complete query string (NOT NULL) + * @count: size of ubuf + * @ppos: position in the file (MUST BE ZERO) + * + * Allows for one permission query per open(), write(), and read() sequence. + * The only query currently supported is a label-based query. For this query + * ubuf must begin with "label\0", followed by the profile query specific + * format described in the query_label() function documentation. + * + * Returns: number of bytes written or -errno on failure + */ +static ssize_t aa_write_access(struct file *file, const char __user *ubuf, + size_t count, loff_t *ppos) +{ + char *buf; + ssize_t len; + + if (*ppos) + return -ESPIPE; + + buf = simple_transaction_get(file, ubuf, count); + if (IS_ERR(buf)) + return PTR_ERR(buf); + + if (count > QUERY_CMD_PROFILE_LEN && + !memcmp(buf, QUERY_CMD_PROFILE, QUERY_CMD_PROFILE_LEN)) { + len = query_label(buf, SIMPLE_TRANSACTION_LIMIT, + buf + QUERY_CMD_PROFILE_LEN, + count - QUERY_CMD_PROFILE_LEN); + } else if (count > QUERY_CMD_LABEL_LEN && + !memcmp(buf, QUERY_CMD_LABEL, QUERY_CMD_LABEL_LEN)) { + len = query_label(buf, SIMPLE_TRANSACTION_LIMIT, + buf + QUERY_CMD_LABEL_LEN, + count - QUERY_CMD_LABEL_LEN); + } else + len = -EINVAL; + + if (len < 0) + return len; + + simple_transaction_set(file, len); + + return count; +} + +static const struct file_operations aa_fs_access = { + .write = aa_write_access, + .read = simple_transaction_read, + .release = simple_transaction_release, + .llseek = generic_file_llseek, +}; + static int aa_fs_seq_show(struct seq_file *seq, void *v) { struct aa_fs_entry *fs_file = seq->private; @@ -249,9 +393,10 @@ static int aa_fs_seq_profname_show(struct seq_file *seq, void *v) { struct aa_replacedby *r = seq->private; - struct aa_profile *profile = aa_get_profile_rcu(&r->profile); + struct aa_label *label = aa_get_label_rcu(&r->label); + struct aa_profile *profile = labels_profile(label); seq_printf(seq, "%s\n", profile->base.name); - aa_put_profile(profile); + aa_put_label(label); return 0; } @@ -272,9 +417,10 @@ static int aa_fs_seq_profmode_show(struct seq_file *seq, void *v) { struct aa_replacedby *r = seq->private; - struct aa_profile *profile = aa_get_profile_rcu(&r->profile); + struct aa_label *label = aa_get_label_rcu(&r->label); + struct aa_profile *profile = labels_profile(label); seq_printf(seq, "%s\n", aa_profile_mode_names[profile->mode]); - aa_put_profile(profile); + aa_put_label(label); return 0; } @@ -295,14 +441,15 @@ static int aa_fs_seq_profattach_show(struct seq_file *seq, void *v) { struct aa_replacedby *r = seq->private; - struct aa_profile *profile = aa_get_profile_rcu(&r->profile); + struct aa_label *label = aa_get_label_rcu(&r->label); + struct aa_profile *profile = labels_profile(label); if (profile->attach) seq_printf(seq, "%s\n", profile->attach); else if (profile->xmatch) seq_puts(seq, "\n"); else seq_printf(seq, "%s\n", profile->base.name); - aa_put_profile(profile); + aa_put_label(label); return 0; } @@ -323,7 +470,8 @@ static int aa_fs_seq_hash_show(struct seq_file *seq, void *v) { struct aa_replacedby *r = seq->private; - struct aa_profile *profile = aa_get_profile_rcu(&r->profile); + struct aa_label *label = aa_get_label_rcu(&r->label); + struct aa_profile *profile = labels_profile(label); unsigned int i, size = aa_hash_size(); if (profile->hash) { @@ -349,6 +497,11 @@ }; /** fns to setup dynamic per profile/namespace files **/ + +/** + * + * Requires: @profile->ns->lock held + */ void __aa_fs_profile_rmdir(struct aa_profile *profile) { struct aa_profile *child; @@ -356,6 +509,7 @@ if (!profile) return; + AA_BUG(!mutex_is_locked(&profiles_ns(profile)->lock)); list_for_each_entry(child, &profile->base.profiles, base.list) __aa_fs_profile_rmdir(child); @@ -372,13 +526,23 @@ } } +/** + * + * Requires: @old->ns->lock held + */ void __aa_fs_profile_migrate_dents(struct aa_profile *old, struct aa_profile *new) { int i; + AA_BUG(!old); + AA_BUG(!new); + AA_BUG(!mutex_is_locked(&profiles_ns(old)->lock)); + for (i = 0; i < AAFS_PROF_SIZEOF; i++) { new->dents[i] = old->dents[i]; + if (new->dents[i]) + new->dents[i]->d_inode->i_mtime = CURRENT_TIME; old->dents[i] = NULL; } } @@ -387,7 +551,7 @@ struct aa_profile *profile, const struct file_operations *fops) { - struct aa_replacedby *r = aa_get_replacedby(profile->replacedby); + struct aa_replacedby *r = aa_get_replacedby(profile->label.replacedby); struct dentry *dent; dent = securityfs_create_file(name, S_IFREG | 0444, dir, r, fops); @@ -397,13 +561,19 @@ return dent; } -/* requires lock be held */ +/** + * + * Requires: @profile->ns->lock held + */ int __aa_fs_profile_mkdir(struct aa_profile *profile, struct dentry *parent) { struct aa_profile *child; struct dentry *dent = NULL, *dir; int error; + AA_BUG(!profile); + AA_BUG(!mutex_is_locked(&profiles_ns(profile)->lock)); + if (!parent) { struct aa_profile *p; p = aa_deref_parent(profile); @@ -474,6 +644,10 @@ return error; } +/** + * + * Requires: @ns->lock held + */ void __aa_fs_namespace_rmdir(struct aa_namespace *ns) { struct aa_namespace *sub; @@ -482,6 +656,7 @@ if (!ns) return; + AA_BUG(!mutex_is_locked(&ns->lock)); list_for_each_entry(child, &ns->base.profiles, base.list) __aa_fs_profile_rmdir(child); @@ -498,6 +673,10 @@ } } +/** + * + * Requires: @ns->lock held + */ int __aa_fs_namespace_mkdir(struct aa_namespace *ns, struct dentry *parent, const char *name) { @@ -506,6 +685,10 @@ struct dentry *dent, *dir; int error; + AA_BUG(!ns); + AA_BUG(!parent); + AA_BUG(!mutex_is_locked(&ns->lock)); + if (!name) name = ns->base.name; @@ -571,6 +754,10 @@ { struct aa_namespace *parent, *next; + AA_BUG(!root); + AA_BUG(!ns); + AA_BUG(ns != root && !mutex_is_locked(&ns->parent->lock)); + /* is next namespace a child */ if (!list_empty(&ns->sub_ns)) { next = list_first_entry(&ns->sub_ns, typeof(*ns), base.list); @@ -597,14 +784,17 @@ /** * __first_profile - find the first profile in a namespace * @root: namespace that is root of profiles being displayed (NOT NULL) - * @ns: namespace to start in (NOT NULL) + * @ns: namespace to start in (MAY BE NULL) * * Returns: unrefcounted profile or NULL if no profile - * Requires: profile->ns.lock to be held + * Requires: ns.lock to be held */ static struct aa_profile *__first_profile(struct aa_namespace *root, struct aa_namespace *ns) { + AA_BUG(!root); + AA_BUG(ns && !mutex_is_locked(&ns->lock)); + for (; ns; ns = __next_namespace(root, ns)) { if (!list_empty(&ns->base.profiles)) return list_first_entry(&ns->base.profiles, @@ -627,6 +817,8 @@ struct aa_profile *parent; struct aa_namespace *ns = p->ns; + AA_BUG(!mutex_is_locked(&profiles_ns(p)->lock)); + /* is next profile a child */ if (!list_empty(&p->base.profiles)) return list_first_entry(&p->base.profiles, typeof(*p), @@ -682,7 +874,7 @@ static void *p_start(struct seq_file *f, loff_t *pos) { struct aa_profile *profile = NULL; - struct aa_namespace *root = aa_current_profile()->ns; + struct aa_namespace *root = labels_ns(aa_current_label()); loff_t l = *pos; f->private = aa_get_namespace(root); @@ -789,6 +981,16 @@ { } }; +static struct aa_fs_entry aa_fs_entry_ptrace[] = { + AA_FS_FILE_STRING("mask", "read trace"), + { } +}; + +static struct aa_fs_entry aa_fs_entry_signal[] = { + AA_FS_FILE_STRING("mask", AA_FS_SIG_MASK), + { } +}; + static struct aa_fs_entry aa_fs_entry_domain[] = { AA_FS_FILE_BOOLEAN("change_hat", 1), AA_FS_FILE_BOOLEAN("change_hatv", 1), @@ -797,18 +999,48 @@ { } }; +static struct aa_fs_entry aa_fs_entry_versions[] = { + AA_FS_FILE_BOOLEAN("v5", 1), + AA_FS_FILE_BOOLEAN("v6", 1), + AA_FS_FILE_BOOLEAN("v7", 1), + { } +}; + static struct aa_fs_entry aa_fs_entry_policy[] = { - AA_FS_FILE_BOOLEAN("set_load", 1), - {} + AA_FS_DIR("versions", aa_fs_entry_versions), + AA_FS_FILE_BOOLEAN("set_load", 1), + { } +}; + +static struct aa_fs_entry aa_fs_entry_mount[] = { + AA_FS_FILE_STRING("mask", "mount umount"), + { } +}; + +static struct aa_fs_entry aa_fs_entry_namespaces[] = { + AA_FS_FILE_BOOLEAN("profile", 1), + AA_FS_FILE_BOOLEAN("pivot_root", 1), + { } +}; + +static struct aa_fs_entry aa_fs_entry_dbus[] = { + AA_FS_FILE_STRING("mask", "acquire send receive"), + { } }; static struct aa_fs_entry aa_fs_entry_features[] = { AA_FS_DIR("policy", aa_fs_entry_policy), AA_FS_DIR("domain", aa_fs_entry_domain), AA_FS_DIR("file", aa_fs_entry_file), + AA_FS_DIR("network", aa_fs_entry_network), + AA_FS_DIR("mount", aa_fs_entry_mount), + AA_FS_DIR("namespaces", aa_fs_entry_namespaces), AA_FS_FILE_U64("capability", VFS_CAP_FLAGS_MASK), AA_FS_DIR("rlimit", aa_fs_entry_rlimit), AA_FS_DIR("caps", aa_fs_entry_caps), + AA_FS_DIR("ptrace", aa_fs_entry_ptrace), + AA_FS_DIR("signal", aa_fs_entry_signal), + AA_FS_DIR("dbus", aa_fs_entry_dbus), { } }; @@ -816,6 +1048,7 @@ AA_FS_FILE_FOPS(".load", 0640, &aa_fs_profile_load), AA_FS_FILE_FOPS(".replace", 0640, &aa_fs_profile_replace), AA_FS_FILE_FOPS(".remove", 0640, &aa_fs_profile_remove), + AA_FS_FILE_FOPS(".access", 0666, &aa_fs_access), AA_FS_FILE_FOPS("profiles", 0640, &aa_fs_profiles_fops), AA_FS_DIR("features", aa_fs_entry_features), { } @@ -925,6 +1158,51 @@ aafs_remove_dir(&aa_fs_entry); } + +#define NULL_FILE_NAME ".null" +struct path aa_null; + +static int aa_mk_null_file(struct dentry *parent) +{ + struct vfsmount *mount = NULL; + struct dentry *dentry; + struct inode *inode; + int count = 0; + int error = simple_pin_fs(parent->d_sb->s_type, &mount, &count); + if (error) + return error; + + mutex_lock(&parent->d_inode->i_mutex); + dentry = lookup_one_len(NULL_FILE_NAME, parent, strlen(NULL_FILE_NAME)); + if (IS_ERR(dentry)) { + error = PTR_ERR(dentry); + goto out; + } + inode = new_inode(parent->d_inode->i_sb); + if (!inode) { + error = -ENOMEM; + goto out1; + } + + inode->i_ino = get_next_ino(); + inode->i_mode = S_IFCHR | S_IRUGO | S_IWUGO; + inode->i_atime = inode->i_mtime = inode->i_ctime = CURRENT_TIME; + init_special_inode(inode, S_IFCHR | S_IRUGO | S_IWUGO, + MKDEV(MEM_MAJOR, 3)); + d_instantiate(dentry, inode); + aa_null.dentry = dget(dentry); + aa_null.mnt = mntget(mount); + + error = 0; + +out1: + dput(dentry); +out: + mutex_unlock(&parent->d_inode->i_mutex); + simple_release_fs(&mount, &count); + return error; +} + /** * aa_create_aafs - create the apparmor security filesystem * @@ -949,12 +1227,21 @@ if (error) goto error; + mutex_lock(&root_ns->lock); error = __aa_fs_namespace_mkdir(root_ns, aa_fs_entry.dentry, "policy"); + mutex_unlock(&root_ns->lock); + if (error) goto error; - /* TODO: add support for apparmorfs_null and apparmorfs_mnt */ + error = aa_mk_null_file(aa_fs_entry.dentry); + if (error) + goto error; + + if (!aa_g_unconfined_init) { + /* TODO: add default profile to apparmorfs */ + } /* Report that AppArmor fs is enabled */ aa_info_message("AppArmor Filesystem Enabled"); --- linux-raspi2-4.2.0.orig/security/apparmor/audit.c +++ linux-raspi2-4.2.0/security/apparmor/audit.c @@ -39,10 +39,16 @@ "getattr", "open", + "file_receive", "file_perm", "file_lock", "file_mmap", "file_mprotect", + "file_inherit", + + "pivotroot", + "mount", + "umount", "create", "post_create", @@ -59,6 +65,7 @@ "socket_shutdown", "ptrace", + "signal", "exec", "change_hat", @@ -114,34 +121,41 @@ if (aa_g_audit_header) { audit_log_format(ab, "apparmor="); - audit_log_string(ab, aa_audit_type[sa->aad->type]); + audit_log_string(ab, aa_audit_type[aad(sa)->type]); } - if (sa->aad->op) { + if (aad(sa)->op) { audit_log_format(ab, " operation="); - audit_log_string(ab, op_table[sa->aad->op]); + audit_log_string(ab, op_table[aad(sa)->op]); } - if (sa->aad->info) { + if (aad(sa)->info) { audit_log_format(ab, " info="); - audit_log_string(ab, sa->aad->info); - if (sa->aad->error) - audit_log_format(ab, " error=%d", sa->aad->error); - } - - if (sa->aad->profile) { - struct aa_profile *profile = sa->aad->profile; - if (profile->ns != root_ns) { - audit_log_format(ab, " namespace="); - audit_log_untrustedstring(ab, profile->ns->base.hname); + audit_log_string(ab, aad(sa)->info); + if (aad(sa)->error) + audit_log_format(ab, " error=%d", aad(sa)->error); + } + + if (aad(sa)->label) { + struct aa_label *label = aad(sa)->label; + if (label_isprofile(label)) { + struct aa_profile *profile = labels_profile(label); + if (profile->ns != root_ns) { + audit_log_format(ab, " namespace="); + audit_log_untrustedstring(ab, + profile->ns->base.hname); + } + audit_log_format(ab, " profile="); + audit_log_untrustedstring(ab, profile->base.hname); + } else { + audit_log_format(ab, " label="); + aa_label_audit(ab, root_ns, label, false, GFP_ATOMIC); } - audit_log_format(ab, " profile="); - audit_log_untrustedstring(ab, profile->base.hname); } - if (sa->aad->name) { + if (aad(sa)->name) { audit_log_format(ab, " name="); - audit_log_untrustedstring(ab, sa->aad->name); + audit_log_untrustedstring(ab, aad(sa)->name); } } @@ -153,7 +167,12 @@ void aa_audit_msg(int type, struct common_audit_data *sa, void (*cb) (struct audit_buffer *, void *)) { - sa->aad->type = type; + /* TODO: redirect messages for profile to the correct ns + * rejects from subns should goto the audit associated + * with it, and audits from parent ns should got ns + * associated with it + */ + aad(sa)->type = type; common_lsm_audit(sa, audit_pre, cb); } @@ -161,7 +180,6 @@ * aa_audit - Log a profile based audit event to the audit subsystem * @type: audit type for the message * @profile: profile to check against (NOT NULL) - * @gfp: allocation flags to use * @sa: audit event (NOT NULL) * @cb: optional callback fn for type specific fields (MAYBE NULL) * @@ -169,14 +187,13 @@ * * Returns: error on failure */ -int aa_audit(int type, struct aa_profile *profile, gfp_t gfp, - struct common_audit_data *sa, +int aa_audit(int type, struct aa_profile *profile, struct common_audit_data *sa, void (*cb) (struct audit_buffer *, void *)) { BUG_ON(!profile); if (type == AUDIT_APPARMOR_AUTO) { - if (likely(!sa->aad->error)) { + if (likely(!aad(sa)->error)) { if (AUDIT_MODE(profile) != AUDIT_ALL) return 0; type = AUDIT_APPARMOR_AUDIT; @@ -188,22 +205,22 @@ if (AUDIT_MODE(profile) == AUDIT_QUIET || (type == AUDIT_APPARMOR_DENIED && AUDIT_MODE(profile) == AUDIT_QUIET)) - return sa->aad->error; + return aad(sa)->error; if (KILL_MODE(profile) && type == AUDIT_APPARMOR_DENIED) type = AUDIT_APPARMOR_KILL; - if (!unconfined(profile)) - sa->aad->profile = profile; + aad(sa)->label = &profile->label; aa_audit_msg(type, sa, cb); - if (sa->aad->type == AUDIT_APPARMOR_KILL) + if (aad(sa)->type == AUDIT_APPARMOR_KILL) (void)send_sig_info(SIGKILL, NULL, - sa->u.tsk ? sa->u.tsk : current); + sa->type == LSM_AUDIT_DATA_TASK && sa->u.tsk ? + sa->u.tsk : current); - if (sa->aad->type == AUDIT_APPARMOR_ALLOWED) - return complain_error(sa->aad->error); + if (aad(sa)->type == AUDIT_APPARMOR_ALLOWED) + return complain_error(aad(sa)->error); - return sa->aad->error; + return aad(sa)->error; } --- linux-raspi2-4.2.0.orig/security/apparmor/capability.c +++ linux-raspi2-4.2.0/security/apparmor/capability.c @@ -53,6 +53,7 @@ /** * audit_caps - audit a capability + * @sa: audit data * @profile: profile being tested for confinement (NOT NULL) * @cap: capability tested * @error: error code returned by test @@ -62,17 +63,12 @@ * * Returns: 0 or sa->error on success, error code on failure */ -static int audit_caps(struct aa_profile *profile, int cap, int error) +static int audit_caps(struct common_audit_data *sa, struct aa_profile *profile, + int cap, int error) { struct audit_cache *ent; int type = AUDIT_APPARMOR_AUTO; - struct common_audit_data sa; - struct apparmor_audit_data aad = {0,}; - sa.type = LSM_AUDIT_DATA_CAP; - sa.aad = &aad; - sa.u.cap = cap; - sa.aad->op = OP_CAPABLE; - sa.aad->error = error; + aad(sa)->error = error; if (likely(!error)) { /* test if auditing is being forced */ @@ -104,24 +100,40 @@ } put_cpu_var(audit_cache); - return aa_audit(type, profile, GFP_ATOMIC, &sa, audit_cb); + return aa_audit(type, profile, sa, audit_cb); } /** * profile_capable - test if profile allows use of capability @cap * @profile: profile being enforced (NOT NULL, NOT unconfined) * @cap: capability to test if allowed + * @sa: audit data (MAY BE NULL indicating no auditing) * * Returns: 0 if allowed else -EPERM */ -static int profile_capable(struct aa_profile *profile, int cap) +static int profile_capable(struct aa_profile *profile, int cap, + struct common_audit_data *sa) { - return cap_raised(profile->caps.allow, cap) ? 0 : -EPERM; + int error; + + if (cap_raised(profile->caps.allow, cap) && + !cap_raised(profile->caps.denied, cap)) + error = 0; + else + error = -EPERM; + + if (!sa) { + if (COMPLAIN_MODE(profile)) + return complain_error(error); + return error; + } + + return audit_caps(sa, profile, cap, error); } /** * aa_capable - test permission to use capability - * @profile: profile being tested against (NOT NULL) + * @label: label being tested for capability (NOT NULL) * @cap: capability to be tested * @audit: whether an audit record should be generated * @@ -129,15 +141,15 @@ * * Returns: 0 on success, or else an error code. */ -int aa_capable(struct aa_profile *profile, int cap, int audit) +int aa_capable(struct aa_label *label, int cap, int audit) { - int error = profile_capable(profile, cap); + struct aa_profile *profile; + int error = 0; + DEFINE_AUDIT_DATA(sa, LSM_AUDIT_DATA_CAP, OP_CAPABLE); + sa.u.cap = cap; - if (!audit) { - if (COMPLAIN_MODE(profile)) - return complain_error(error); - return error; - } + error = fn_for_each_confined(label, profile, + profile_capable(profile, cap, audit ? &sa : NULL)); - return audit_caps(profile, cap, error); + return error; } --- linux-raspi2-4.2.0.orig/security/apparmor/context.c +++ linux-raspi2-4.2.0/security/apparmor/context.c @@ -14,9 +14,9 @@ * * * AppArmor sets confinement on every task, via the the aa_task_cxt and - * the aa_task_cxt.profile, both of which are required and are not allowed + * the aa_task_cxt.label, both of which are required and are not allowed * to be NULL. The aa_task_cxt is not reference counted and is unique - * to each cred (which is reference count). The profile pointed to by + * to each cred (which is reference count). The label pointed to by * the task_cxt is reference counted. * * TODO @@ -47,9 +47,9 @@ void aa_free_task_context(struct aa_task_cxt *cxt) { if (cxt) { - aa_put_profile(cxt->profile); - aa_put_profile(cxt->previous); - aa_put_profile(cxt->onexec); + aa_put_label(cxt->label); + aa_put_label(cxt->previous); + aa_put_label(cxt->onexec); kzfree(cxt); } @@ -63,41 +63,41 @@ void aa_dup_task_context(struct aa_task_cxt *new, const struct aa_task_cxt *old) { *new = *old; - aa_get_profile(new->profile); - aa_get_profile(new->previous); - aa_get_profile(new->onexec); + aa_get_label(new->label); + aa_get_label(new->previous); + aa_get_label(new->onexec); } /** - * aa_get_task_profile - Get another task's profile + * aa_get_task_label - Get another task's label * @task: task to query (NOT NULL) * - * Returns: counted reference to @task's profile + * Returns: counted reference to @task's label */ -struct aa_profile *aa_get_task_profile(struct task_struct *task) +struct aa_label *aa_get_task_label(struct task_struct *task) { - struct aa_profile *p; + struct aa_label *p; rcu_read_lock(); - p = aa_get_profile(__aa_task_profile(task)); + p = aa_get_newest_label(__aa_task_raw_label(task)); rcu_read_unlock(); return p; } /** - * aa_replace_current_profile - replace the current tasks profiles - * @profile: new profile (NOT NULL) + * aa_replace_current_label - replace the current tasks label + * @label: new label (NOT NULL) * * Returns: 0 or error on failure */ -int aa_replace_current_profile(struct aa_profile *profile) +int aa_replace_current_label(struct aa_label *label) { struct aa_task_cxt *cxt = current_cxt(); struct cred *new; - BUG_ON(!profile); + BUG_ON(!label); - if (cxt->profile == profile) + if (cxt->label == label) return 0; new = prepare_creds(); @@ -105,19 +105,15 @@ return -ENOMEM; cxt = cred_cxt(new); - if (unconfined(profile) || (cxt->profile->ns != profile->ns)) - /* if switching to unconfined or a different profile namespace + if (unconfined(label) || (labels_ns(cxt->label) != labels_ns(label))) + /* if switching to unconfined or a different label namespace * clear out context state */ aa_clear_task_cxt_trans(cxt); - /* be careful switching cxt->profile, when racing replacement it - * is possible that cxt->profile->replacedby->profile is the reference - * keeping @profile valid, so make sure to get its reference before - * dropping the reference on cxt->profile */ - aa_get_profile(profile); - aa_put_profile(cxt->profile); - cxt->profile = profile; + aa_get_label(label); + aa_put_label(cxt->label); + cxt->label = label; commit_creds(new); return 0; @@ -125,11 +121,11 @@ /** * aa_set_current_onexec - set the tasks change_profile to happen onexec - * @profile: system profile to set at exec (MAYBE NULL to clear value) + * @label: system label to set at exec (MAYBE NULL to clear value) * * Returns: 0 or error on failure */ -int aa_set_current_onexec(struct aa_profile *profile) +int aa_set_current_onexec(struct aa_label *label) { struct aa_task_cxt *cxt; struct cred *new = prepare_creds(); @@ -137,9 +133,9 @@ return -ENOMEM; cxt = cred_cxt(new); - aa_get_profile(profile); - aa_put_profile(cxt->onexec); - cxt->onexec = profile; + aa_get_label(label); + aa_put_label(cxt->onexec); + cxt->onexec = label; commit_creds(new); return 0; @@ -147,7 +143,7 @@ /** * aa_set_current_hat - set the current tasks hat - * @profile: profile to set as the current hat (NOT NULL) + * @label: label to set as the current hat (NOT NULL) * @token: token value that must be specified to change from the hat * * Do switch of tasks hat. If the task is currently in a hat @@ -155,29 +151,29 @@ * * Returns: 0 or error on failure */ -int aa_set_current_hat(struct aa_profile *profile, u64 token) +int aa_set_current_hat(struct aa_label *label, u64 token) { struct aa_task_cxt *cxt; struct cred *new = prepare_creds(); if (!new) return -ENOMEM; - BUG_ON(!profile); + BUG_ON(!label); cxt = cred_cxt(new); if (!cxt->previous) { /* transfer refcount */ - cxt->previous = cxt->profile; + cxt->previous = cxt->label; cxt->token = token; } else if (cxt->token == token) { - aa_put_profile(cxt->profile); + aa_put_label(cxt->label); } else { /* previous_profile && cxt->token != token */ abort_creds(new); return -EACCES; } - cxt->profile = aa_get_newest_profile(profile); + cxt->label = aa_get_newest_label(label); /* clear exec on switching context */ - aa_put_profile(cxt->onexec); + aa_put_label(cxt->onexec); cxt->onexec = NULL; commit_creds(new); @@ -185,15 +181,15 @@ } /** - * aa_restore_previous_profile - exit from hat context restoring the profile + * aa_restore_previous_label - exit from hat context restoring previous label * @token: the token that must be matched to exit hat context * - * Attempt to return out of a hat to the previous profile. The token + * Attempt to return out of a hat to the previous label. The token * must match the stored token value. * * Returns: 0 or error of failure */ -int aa_restore_previous_profile(u64 token) +int aa_restore_previous_label(u64 token) { struct aa_task_cxt *cxt; struct cred *new = prepare_creds(); @@ -205,15 +201,15 @@ abort_creds(new); return -EACCES; } - /* ignore restores when there is no saved profile */ + /* ignore restores when there is no saved label */ if (!cxt->previous) { abort_creds(new); return 0; } - aa_put_profile(cxt->profile); - cxt->profile = aa_get_newest_profile(cxt->previous); - BUG_ON(!cxt->profile); + aa_put_label(cxt->label); + cxt->label = aa_get_newest_label(cxt->previous); + BUG_ON(!cxt->label); /* clear exec && prev information when restoring to previous context */ aa_clear_task_cxt_trans(cxt); --- linux-raspi2-4.2.0.orig/security/apparmor/domain.c +++ linux-raspi2-4.2.0/security/apparmor/domain.c @@ -51,34 +51,38 @@ /** * may_change_ptraced_domain - check if can change profile on ptraced task * @to_profile: profile to change to (NOT NULL) + * @info: message if there is an error * * Check if current is ptraced and if so if the tracing task is allowed * to trace the new domain * * Returns: %0 or error if change not allowed */ -static int may_change_ptraced_domain(struct aa_profile *to_profile) +static int may_change_ptraced_domain(struct aa_profile *to_profile, + const char **info) { struct task_struct *tracer; - struct aa_profile *tracerp = NULL; + struct aa_label *tracerl = NULL; int error = 0; rcu_read_lock(); tracer = ptrace_parent(current); if (tracer) /* released below */ - tracerp = aa_get_task_profile(tracer); + tracerl = aa_get_task_label(tracer); /* not ptraced */ - if (!tracer || unconfined(tracerp)) + if (!tracer || unconfined(tracerl)) goto out; - error = aa_may_ptrace(tracerp, to_profile, PTRACE_MODE_ATTACH); + error = aa_may_ptrace(tracerl, &to_profile->label, PTRACE_MODE_ATTACH); out: rcu_read_unlock(); - aa_put_profile(tracerp); + aa_put_label(tracerl); + if (error) + *info = "ptrace prevents transition"; return error; } @@ -101,7 +105,7 @@ struct path_cond cond = { }; unsigned int state; - if (unconfined(profile)) { + if (profile_unconfined(profile)) { perms.allow = AA_MAY_CHANGE_PROFILE | AA_MAY_ONEXEC; perms.audit = perms.quiet = perms.kill = 0; return perms; @@ -143,7 +147,7 @@ struct aa_profile *profile, *candidate = NULL; list_for_each_entry_rcu(profile, head, base.list) { - if (profile->flags & PFLAG_NULL) + if (profile->label.flags & FLAG_NULL) continue; if (profile->xmatch && profile->xmatch_len > len) { unsigned int state = aa_dfa_match(profile->xmatch, @@ -236,7 +240,7 @@ * * Returns: refcounted profile, or NULL on failure (MAYBE NULL) */ -static struct aa_profile *x_table_lookup(struct aa_profile *profile, u32 xindex) +struct aa_profile *x_table_lookup(struct aa_profile *profile, u32 xindex) { struct aa_profile *new_profile = NULL; struct aa_namespace *ns = profile->ns; @@ -337,6 +341,7 @@ int apparmor_bprm_set_creds(struct linux_binprm *bprm) { struct aa_task_cxt *cxt; + struct aa_label *label; struct aa_profile *profile, *new_profile = NULL; struct aa_namespace *ns; char *buffer = NULL; @@ -355,7 +360,8 @@ cxt = cred_cxt(bprm->cred); BUG_ON(!cxt); - profile = aa_get_newest_profile(cxt->profile); + label = aa_get_newest_label(cxt->label); + profile = labels_profile(label); /* * get the namespace from the replacement profile as replacement * can change the namespace @@ -364,11 +370,12 @@ state = profile->file.start; /* buffer freed below, name is pointer into buffer */ - error = aa_path_name(&bprm->file->f_path, profile->path_flags, &buffer, - &name, &info); + get_buffers(buffer); + error = aa_path_name(&bprm->file->f_path, profile->path_flags, buffer, + &name, &info, profile->disconnected); if (error) { - if (unconfined(profile) || - (profile->flags & PFLAG_IX_ON_NAME_ERROR)) + if (profile_unconfined(profile) || + (profile->label.flags & FLAG_IX_ON_NAME_ERROR)) error = 0; name = bprm->filename; goto audit; @@ -377,11 +384,11 @@ /* Test for onexec first as onexec directives override other * x transitions. */ - if (unconfined(profile)) { + if (profile_unconfined(profile)) { /* unconfined task */ if (cxt->onexec) /* change_profile on exec already been granted */ - new_profile = aa_get_profile(cxt->onexec); + new_profile = labels_profile(aa_get_label(cxt->onexec)); else new_profile = find_attach(ns, &ns->base.profiles, name); if (!new_profile) @@ -407,13 +414,13 @@ * exec\0change_profile */ state = aa_dfa_null_transition(profile->file.dfa, state); - cp = change_profile_perms(profile, cxt->onexec->ns, - cxt->onexec->base.name, + cp = change_profile_perms(profile, labels_profile(cxt->onexec)->ns, + labels_profile(cxt->onexec)->base.name, AA_MAY_ONEXEC, state); if (!(cp.allow & AA_MAY_ONEXEC)) goto audit; - new_profile = aa_get_newest_profile(cxt->onexec); + new_profile = labels_profile(aa_get_newest_label(cxt->onexec)); goto apply; } @@ -430,17 +437,19 @@ new_profile = aa_get_profile(profile); goto x_clear; } else if (perms.xindex & AA_X_UNCONFINED) { - new_profile = aa_get_newest_profile(ns->unconfined); + new_profile = labels_profile(aa_get_newest_label(&ns->unconfined->label)); info = "ux fallback"; } else { - error = -ENOENT; + error = -EACCES; info = "profile not found"; /* remove MAY_EXEC to audit as failure */ perms.allow &= ~MAY_EXEC; } } } else if (COMPLAIN_MODE(profile)) { - /* no exec permission - are we in learning mode */ + /* no exec permission - learning mode. break rcu lock */ + put_buffers(buffer); + name = NULL; new_profile = aa_new_null_profile(profile, 0); if (!new_profile) { error = -ENOMEM; @@ -450,6 +459,12 @@ target = new_profile->base.hname; } perms.xindex |= AA_X_UNSAFE; + /* re-aquire buffer and rcu readlock and re-get name */ + get_buffers(buffer); + if (!error) + error = aa_path_name(&bprm->file->f_path, + profile->path_flags, buffer, + &name, &info, profile->disconnected); } else /* fail exec */ error = -EACCES; @@ -473,7 +488,7 @@ } if (bprm->unsafe & (LSM_UNSAFE_PTRACE | LSM_UNSAFE_PTRACE_CAP)) { - error = may_change_ptraced_domain(new_profile); + error = may_change_ptraced_domain(new_profile, &info); if (error) { aa_put_profile(new_profile); goto audit; @@ -503,20 +518,20 @@ bprm->per_clear |= PER_CLEAR_ON_SETID; x_clear: - aa_put_profile(cxt->profile); + aa_put_label(cxt->label); /* transfer new profile reference will be released when cxt is freed */ - cxt->profile = new_profile; + cxt->label = &new_profile->label; /* clear out all temporary/transitional state from the context */ aa_clear_task_cxt_trans(cxt); audit: - error = aa_audit_file(profile, &perms, GFP_KERNEL, OP_EXEC, MAY_EXEC, - name, target, cond.uid, info, error); + error = aa_audit_file(profile, &perms, OP_EXEC, MAY_EXEC, name, target, + cond.uid, info, error); cleanup: - aa_put_profile(profile); - kfree(buffer); + aa_put_label(label); + put_buffers(buffer); return error; } @@ -538,36 +553,6 @@ return 0; } -/** - * apparmor_bprm_committing_creds - do task cleanup on committing new creds - * @bprm: binprm for the exec (NOT NULL) - */ -void apparmor_bprm_committing_creds(struct linux_binprm *bprm) -{ - struct aa_profile *profile = __aa_current_profile(); - struct aa_task_cxt *new_cxt = cred_cxt(bprm->cred); - - /* bail out if unconfined or not changing profile */ - if ((new_cxt->profile == profile) || - (unconfined(new_cxt->profile))) - return; - - current->pdeath_signal = 0; - - /* reset soft limits and set hard limits for the new profile */ - __aa_transition_rlimits(profile, new_cxt->profile); -} - -/** - * apparmor_bprm_commited_cred - do cleanup after new creds committed - * @bprm: binprm for the exec (NOT NULL) - */ -void apparmor_bprm_committed_creds(struct linux_binprm *bprm) -{ - /* TODO: cleanup signals - ipc mediation */ - return; -} - /* * Functions for self directed profile change */ @@ -605,7 +590,8 @@ { const struct cred *cred; struct aa_task_cxt *cxt; - struct aa_profile *profile, *previous_profile, *hat = NULL; + struct aa_label *label, *previous; + struct aa_profile *profile, *hat = NULL; char *name = NULL; int i; struct file_perms perms = {}; @@ -623,10 +609,12 @@ /* released below */ cred = get_current_cred(); cxt = cred_cxt(cred); - profile = aa_cred_profile(cred); - previous_profile = cxt->previous; + label = aa_get_newest_cred_label(cred); + previous = cxt->previous; + + profile = labels_profile(label); - if (unconfined(profile)) { + if (unconfined(label)) { info = "unconfined"; error = -EPERM; goto audit; @@ -638,7 +626,7 @@ if (PROFILE_IS_HAT(profile)) root = aa_get_profile_rcu(&profile->parent); else - root = aa_get_profile(profile); + root = aa_get_profile(labels_profile(label)); /* find first matching hat */ for (i = 0; i < count && !hat; i++) @@ -684,15 +672,14 @@ } } - error = may_change_ptraced_domain(hat); + error = may_change_ptraced_domain(hat, &info); if (error) { - info = "ptraced"; error = -EPERM; goto audit; } if (!permtest) { - error = aa_set_current_hat(hat, token); + error = aa_set_current_hat(&hat->label, token); if (error == -EACCES) /* kill task in case of brute force attacks */ perms.kill = AA_MAY_CHANGEHAT; @@ -700,12 +687,12 @@ /* reset error for learning of new hats */ error = -ENOENT; } - } else if (previous_profile) { - /* Return to saved profile. Kill task if restore fails + } else if (previous) { + /* Return to saved label. Kill task if restore fails * to avoid brute force attacks */ - target = previous_profile->base.hname; - error = aa_restore_previous_profile(token); + target = previous->hname; + error = aa_restore_previous_label(token); perms.kill = AA_MAY_CHANGEHAT; } else /* ignore restores when there is no saved profile */ @@ -713,12 +700,13 @@ audit: if (!permtest) - error = aa_audit_file(profile, &perms, GFP_KERNEL, - OP_CHANGE_HAT, AA_MAY_CHANGEHAT, NULL, - target, GLOBAL_ROOT_UID, info, error); + error = aa_audit_file(profile, &perms, OP_CHANGE_HAT, + AA_MAY_CHANGEHAT, NULL, target, + GLOBAL_ROOT_UID, info, error); out: aa_put_profile(hat); + aa_put_label(label); kfree(name); put_cred(cred); @@ -744,6 +732,7 @@ bool permtest) { const struct cred *cred; + struct aa_label *label; struct aa_profile *profile, *target = NULL; struct aa_namespace *ns = NULL; struct file_perms perms = {}; @@ -763,7 +752,8 @@ } cred = get_current_cred(); - profile = aa_cred_profile(cred); + label = aa_get_newest_cred_label(cred); + profile = labels_profile(label); /* * Fail explicitly requested domain transitions if no_new_privs @@ -772,7 +762,8 @@ * no_new_privs is set because this aways results in a reduction * of permissions. */ - if (task_no_new_privs(current) && !unconfined(profile)) { + if (task_no_new_privs(current) && !unconfined(label)) { + aa_put_label(label); put_cred(cred); return -EPERM; } @@ -793,7 +784,7 @@ /* if the name was not specified, use the name of the current profile */ if (!hname) { - if (unconfined(profile)) + if (profile_unconfined(profile)) hname = ns->unconfined->base.hname; else hname = profile->base.hname; @@ -823,27 +814,26 @@ } /* check if tracing task is allowed to trace target domain */ - error = may_change_ptraced_domain(target); - if (error) { - info = "ptrace prevents transition"; + error = may_change_ptraced_domain(target, &info); + if (error) goto audit; - } if (permtest) goto audit; if (onexec) - error = aa_set_current_onexec(target); + error = aa_set_current_onexec(&target->label); else - error = aa_replace_current_profile(target); + error = aa_replace_current_label(&target->label); audit: if (!permtest) - error = aa_audit_file(profile, &perms, GFP_KERNEL, op, request, - name, hname, GLOBAL_ROOT_UID, info, error); + error = aa_audit_file(profile, &perms, op, request, name, + hname, GLOBAL_ROOT_UID, info, error); aa_put_namespace(ns); aa_put_profile(target); + aa_put_label(label); put_cred(cred); return error; --- linux-raspi2-4.2.0.orig/security/apparmor/file.c +++ linux-raspi2-4.2.0/security/apparmor/file.c @@ -12,8 +12,14 @@ * License. */ +#include +#include +#include + +#include "include/af_unix.h" #include "include/apparmor.h" #include "include/audit.h" +#include "include/context.h" #include "include/file.h" #include "include/match.h" #include "include/path.h" @@ -22,6 +28,17 @@ struct file_perms nullperms; +static u32 map_mask_to_chr_mask(u32 mask) +{ + u32 m = mask & PERMS_CHRS_MASK; + if (mask & AA_MAY_GETATTR) + m |= MAY_READ; + if (mask & (AA_MAY_SETATTR | AA_MAY_CHMOD | AA_MAY_CHOWN)) + m |= MAY_WRITE; + + return m; +} + /** * audit_file_mask - convert mask to permission string * @buffer: buffer to write string to (NOT NULL) @@ -31,29 +48,7 @@ { char str[10]; - char *m = str; - - if (mask & AA_EXEC_MMAP) - *m++ = 'm'; - if (mask & (MAY_READ | AA_MAY_META_READ)) - *m++ = 'r'; - if (mask & (MAY_WRITE | AA_MAY_META_WRITE | AA_MAY_CHMOD | - AA_MAY_CHOWN)) - *m++ = 'w'; - else if (mask & MAY_APPEND) - *m++ = 'a'; - if (mask & AA_MAY_CREATE) - *m++ = 'c'; - if (mask & AA_MAY_DELETE) - *m++ = 'd'; - if (mask & AA_MAY_LINK) - *m++ = 'l'; - if (mask & AA_MAY_LOCK) - *m++ = 'k'; - if (mask & MAY_EXEC) - *m++ = 'x'; - *m = '\0'; - + aa_perm_mask_to_str(str, aa_file_perm_chrs, map_mask_to_chr_mask(mask)); audit_log_string(ab, str); } @@ -67,24 +62,24 @@ struct common_audit_data *sa = va; kuid_t fsuid = current_fsuid(); - if (sa->aad->fs.request & AA_AUDIT_FILE_MASK) { + if (aad(sa)->request & AA_AUDIT_FILE_MASK) { audit_log_format(ab, " requested_mask="); - audit_file_mask(ab, sa->aad->fs.request); + audit_file_mask(ab, aad(sa)->request); } - if (sa->aad->fs.denied & AA_AUDIT_FILE_MASK) { + if (aad(sa)->denied & AA_AUDIT_FILE_MASK) { audit_log_format(ab, " denied_mask="); - audit_file_mask(ab, sa->aad->fs.denied); + audit_file_mask(ab, aad(sa)->denied); } - if (sa->aad->fs.request & AA_AUDIT_FILE_MASK) { + if (aad(sa)->request & AA_AUDIT_FILE_MASK) { audit_log_format(ab, " fsuid=%d", from_kuid(&init_user_ns, fsuid)); audit_log_format(ab, " ouid=%d", - from_kuid(&init_user_ns, sa->aad->fs.ouid)); + from_kuid(&init_user_ns, aad(sa)->fs.ouid)); } - if (sa->aad->fs.target) { + if (aad(sa)->target) { audit_log_format(ab, " target="); - audit_log_untrustedstring(ab, sa->aad->fs.target); + audit_log_untrustedstring(ab, aad(sa)->target); } } @@ -92,7 +87,6 @@ * aa_audit_file - handle the auditing of file operations * @profile: the profile being enforced (NOT NULL) * @perms: the permissions computed for the request (NOT NULL) - * @gfp: allocation flags * @op: operation being mediated * @request: permissions requested * @name: name of object being mediated (MAYBE NULL) @@ -104,53 +98,85 @@ * Returns: %0 or error on failure */ int aa_audit_file(struct aa_profile *profile, struct file_perms *perms, - gfp_t gfp, int op, u32 request, const char *name, - const char *target, kuid_t ouid, const char *info, int error) + int op, u32 request, const char *name, const char *target, + kuid_t ouid, const char *info, int error) { int type = AUDIT_APPARMOR_AUTO; - struct common_audit_data sa; - struct apparmor_audit_data aad = {0,}; - sa.type = LSM_AUDIT_DATA_NONE; - sa.aad = &aad; - aad.op = op, - aad.fs.request = request; - aad.name = name; - aad.fs.target = target; - aad.fs.ouid = ouid; - aad.info = info; - aad.error = error; - if (likely(!sa.aad->error)) { + DEFINE_AUDIT_DATA(sa, LSM_AUDIT_DATA_NONE, op); + aad(&sa)->request = request; + aad(&sa)->name = name; + aad(&sa)->target = target; + aad(&sa)->fs.ouid = ouid; + aad(&sa)->info = info; + aad(&sa)->error = error; + sa.u.tsk = NULL; + + if (likely(!aad(&sa)->error)) { u32 mask = perms->audit; if (unlikely(AUDIT_MODE(profile) == AUDIT_ALL)) mask = 0xffff; /* mask off perms that are not being force audited */ - sa.aad->fs.request &= mask; + aad(&sa)->request &= mask; - if (likely(!sa.aad->fs.request)) + if (likely(!aad(&sa)->request)) return 0; type = AUDIT_APPARMOR_AUDIT; } else { /* only report permissions that were denied */ - sa.aad->fs.request = sa.aad->fs.request & ~perms->allow; + aad(&sa)->request = aad(&sa)->request & ~perms->allow; - if (sa.aad->fs.request & perms->kill) + if (aad(&sa)->request & perms->kill) type = AUDIT_APPARMOR_KILL; /* quiet known rejects, assumes quiet and kill do not overlap */ - if ((sa.aad->fs.request & perms->quiet) && + if ((aad(&sa)->request & perms->quiet) && AUDIT_MODE(profile) != AUDIT_NOQUIET && AUDIT_MODE(profile) != AUDIT_ALL) - sa.aad->fs.request &= ~perms->quiet; + aad(&sa)->request &= ~perms->quiet; - if (!sa.aad->fs.request) - return COMPLAIN_MODE(profile) ? 0 : sa.aad->error; + if (!aad(&sa)->request) + return COMPLAIN_MODE(profile) ? 0 : aad(&sa)->error; } - sa.aad->fs.denied = sa.aad->fs.request & ~perms->allow; - return aa_audit(type, profile, gfp, &sa, file_audit_cb); + aad(&sa)->denied = aad(&sa)->request & ~perms->allow; + return aa_audit(type, profile, &sa, file_audit_cb); +} + +/** + * is_deleted - test if a file has been completely unlinked + * @dentry: dentry of file to test for deletion (NOT NULL) + * + * Returns: %1 if deleted else %0 + */ +static inline bool is_deleted(struct dentry *dentry) +{ + if (d_unlinked(dentry) && d_backing_inode(dentry)->i_nlink == 0) + return 1; + return 0; +} + +static int path_name(int op, struct aa_label *label, struct path *path, + int flags, char *buffer, const char**name, + struct path_cond *cond, u32 request, bool delegate_deleted) +{ + struct aa_profile *profile; + const char *info = NULL; + int error = aa_path_name(path, flags, buffer, name, &info, + labels_profile(label)->disconnected); + if (error) { + if (error == -ENOENT && is_deleted(path->dentry) && + delegate_deleted) + return 0; + fn_for_each_confined(label, profile, + aa_audit_file(profile, &nullperms, op, request, *name, + NULL, cond->uid, info, error)); + return error; + } + + return 0; } /** @@ -163,10 +189,11 @@ { u32 new = old & 0xf; if (old & MAY_READ) - new |= AA_MAY_META_READ; + new |= AA_MAY_GETATTR | AA_MAY_OPEN; if (old & MAY_WRITE) - new |= AA_MAY_META_WRITE | AA_MAY_CREATE | AA_MAY_DELETE | - AA_MAY_CHMOD | AA_MAY_CHOWN; + new |= AA_MAY_SETATTR | AA_MAY_CREATE | AA_MAY_DELETE | + AA_MAY_CHMOD | AA_MAY_CHOWN | AA_MAY_OPEN | + AA_MAY_DELETE; if (old & 0x10) new |= AA_MAY_LINK; /* the old mapping lock and link_subset flags where overlaid @@ -214,7 +241,7 @@ perms.quiet = map_old_perms(dfa_other_quiet(dfa, state)); perms.xindex = dfa_other_xindex(dfa, state); } - perms.allow |= AA_MAY_META_READ; + perms.allow |= AA_MAY_GETATTR; /* change_profile wasn't determined by ownership in old mapping */ if (ACCEPT_TABLE(dfa)[state] & 0x80000000) @@ -251,23 +278,25 @@ return state; } -/** - * is_deleted - test if a file has been completely unlinked - * @dentry: dentry of file to test for deletion (NOT NULL) - * - * Returns: %1 if deleted else %0 - */ -static inline bool is_deleted(struct dentry *dentry) -{ - if (d_unlinked(dentry) && d_backing_inode(dentry)->i_nlink == 0) - return 1; - return 0; +int __aa_path_perm(int op, struct aa_profile *profile, const char *name, + u32 request, struct path_cond *cond, int flags, + struct file_perms *perms) +{ + int e = 0; + 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) + e = -EACCES; + return aa_audit_file(profile, perms, op, request, name, NULL, + cond->uid, NULL, e); } /** * aa_path_perm - do permissions check & audit for @path * @op: operation being checked - * @profile: profile being enforced (NOT NULL) + * @label: profile being enforced (NOT NULL) * @path: path to check permissions of (NOT NULL) * @flags: any additional path flags beyond what the profile specifies * @request: requested permissions @@ -275,35 +304,28 @@ * * Returns: %0 else error if access denied or other error */ -int aa_path_perm(int op, struct aa_profile *profile, struct path *path, +int aa_path_perm(int op, struct aa_label *label, struct path *path, int flags, u32 request, struct path_cond *cond) { - char *buffer = NULL; struct file_perms perms = {}; - const char *name, *info = NULL; + char *buffer = NULL; + const char *name; + struct aa_profile *profile; int error; - flags |= profile->path_flags | (S_ISDIR(cond->mode) ? PATH_IS_DIR : 0); - error = aa_path_name(path, flags, &buffer, &name, &info); - if (error) { - if (error == -ENOENT && is_deleted(path->dentry)) { - /* Access to open files that are deleted are - * give a pass (implicit delegation) - */ - error = 0; - info = NULL; - perms.allow = request; - } - } else { - aa_str_perms(profile->file.dfa, profile->file.start, name, cond, - &perms); - if (request & ~perms.allow) - error = -EACCES; - } - error = aa_audit_file(profile, &perms, GFP_KERNEL, op, request, name, - NULL, cond->uid, info, error); - kfree(buffer); + /* TODO: fix path lookup flags */ + flags |= labels_profile(label)->path_flags | + (S_ISDIR(cond->mode) ? PATH_IS_DIR : 0); + get_buffers(buffer); + + error = path_name(op, label, path, flags, buffer, &name, cond, + request, true); + if (!error) + error = fn_for_each_confined(label, profile, + __aa_path_perm(op, profile, name, request, cond, + flags, &perms)); + put_buffers(buffer); return error; } @@ -327,65 +349,25 @@ return 1; } -/** - * aa_path_link - Handle hard link permission check - * @profile: the profile being enforced (NOT NULL) - * @old_dentry: the target dentry (NOT NULL) - * @new_dir: directory the new link will be created in (NOT NULL) - * @new_dentry: the link being created (NOT NULL) - * - * Handle the permission test for a link & target pair. Permission - * is encoded as a pair where the link permission is determined - * first, and if allowed, the target is tested. The target test - * is done from the point of the link match (not start of DFA) - * making the target permission dependent on the link permission match. - * - * The subset test if required forces that permissions granted - * on link are a subset of the permission granted to target. - * - * Returns: %0 if allowed else error - */ -int aa_path_link(struct aa_profile *profile, struct dentry *old_dentry, - struct path *new_dir, struct dentry *new_dentry) +static int profile_path_link(struct aa_profile *profile, const char *lname, + const char *tname, struct path_cond *cond) { - struct path link = { new_dir->mnt, new_dentry }; - struct path target = { new_dir->mnt, old_dentry }; - struct path_cond cond = { - d_backing_inode(old_dentry)->i_uid, - d_backing_inode(old_dentry)->i_mode - }; - char *buffer = NULL, *buffer2 = NULL; - const char *lname, *tname = NULL, *info = NULL; struct file_perms lperms, perms; + const char *info = NULL; u32 request = AA_MAY_LINK; unsigned int state; - int error; - - lperms = nullperms; - - /* buffer freed below, lname is pointer in buffer */ - error = aa_path_name(&link, profile->path_flags, &buffer, &lname, - &info); - if (error) - goto audit; + int e = -EACCES; - /* buffer2 freed below, tname is pointer in buffer2 */ - error = aa_path_name(&target, profile->path_flags, &buffer2, &tname, - &info); - if (error) - goto audit; - - error = -EACCES; /* aa_str_perms - handles the case of the dfa being NULL */ state = aa_str_perms(profile->file.dfa, profile->file.start, lname, - &cond, &lperms); + cond, &lperms); if (!(lperms.allow & AA_MAY_LINK)) goto audit; /* test to see if target can be paired with link */ state = aa_dfa_null_transition(profile->file.dfa, state); - aa_str_perms(profile->file.dfa, state, tname, &cond, &perms); + aa_str_perms(profile->file.dfa, state, tname, cond, &perms); /* force audit/quiet masks for link are stored in the second entry * in the link pair. @@ -403,10 +385,10 @@ if (!(perms.allow & AA_LINK_SUBSET)) goto done_tests; - /* Do link perm subset test requiring allowed permission on link are a - * subset of the allowed permissions on target. + /* Do link perm subset test requiring allowed permission on link are + * a subset of the allowed permissions on target. */ - aa_str_perms(profile->file.dfa, profile->file.start, tname, &cond, + aa_str_perms(profile->file.dfa, profile->file.start, tname, cond, &perms); /* AA_MAY_LINK is not considered in the subset test */ @@ -425,13 +407,175 @@ } done_tests: - error = 0; + e = 0; audit: - error = aa_audit_file(profile, &lperms, GFP_KERNEL, OP_LINK, request, - lname, tname, cond.uid, info, error); - kfree(buffer); - kfree(buffer2); + return aa_audit_file(profile, &lperms, OP_LINK, request, lname, tname, + cond->uid, info, e); +} + +/** + * aa_path_link - Handle hard link permission check + * @label: the label being enforced (NOT NULL) + * @old_dentry: the target dentry (NOT NULL) + * @new_dir: directory the new link will be created in (NOT NULL) + * @new_dentry: the link being created (NOT NULL) + * + * Handle the permission test for a link & target pair. Permission + * is encoded as a pair where the link permission is determined + * first, and if allowed, the target is tested. The target test + * is done from the point of the link match (not start of DFA) + * making the target permission dependent on the link permission match. + * + * The subset test if required forces that permissions granted + * on link are a subset of the permission granted to target. + * + * Returns: %0 if allowed else error + */ +int aa_path_link(struct aa_label *label, struct dentry *old_dentry, + struct path *new_dir, struct dentry *new_dentry) +{ + struct path link = { new_dir->mnt, new_dentry }; + struct path target = { new_dir->mnt, old_dentry }; + struct path_cond cond = { + d_backing_inode(old_dentry)->i_uid, + d_backing_inode(old_dentry)->i_mode + }; + char *buffer = NULL, *buffer2 = NULL; + const char *lname, *tname = NULL; + struct aa_profile *profile; + int error; + + /* TODO: fix path lookup flags, auditing of failed path for profile */ + profile = labels_profile(label); + /* buffer freed below, lname is pointer in buffer */ + get_buffers(buffer, buffer2); + error = path_name(OP_LINK, label, &link, + labels_profile(label)->path_flags, buffer, + &lname, &cond, AA_MAY_LINK, false); + if (error) + goto out; + + /* buffer2 freed below, tname is pointer in buffer2 */ + error = path_name(OP_LINK, label, &target, + labels_profile(label)->path_flags, buffer2, &tname, + &cond, AA_MAY_LINK, false); + if (error) + goto out; + + error = fn_for_each_confined(label, profile, + profile_path_link(profile, lname, tname, &cond)); + +out: + put_buffers(buffer, buffer2); + + return error; +} + +static void update_file_cxt(struct aa_file_cxt *fcxt, struct aa_label *label, + u32 request) +{ + struct aa_label *l, *old; + + /* update caching of label on file_cxt */ + spin_lock(&fcxt->lock); + old = rcu_dereference_protected(fcxt->label, + spin_is_locked(&fcxt->lock)); + l = aa_label_merge(old, label, GFP_ATOMIC); + if (l) { + if (l != old) { + rcu_assign_pointer(fcxt->label, l); + aa_put_label(old); + } else + aa_put_label(l); + fcxt->allow |= request; + } + spin_unlock(&fcxt->lock); +} + +static int __file_path_perm(int op, struct aa_label *label, + struct aa_label *flabel, struct file *file, + u32 request, u32 denied) +{ + struct aa_profile *profile; + struct file_perms perms = {}; + struct path_cond cond = { + .uid = file_inode(file)->i_uid, + .mode = file_inode(file)->i_mode + }; + const char *name; + char *buffer; + int flags, error; + + /* revalidation due to label out of date. No revocation at this time */ + if (!denied && aa_label_is_subset(flabel, label)) + /* TODO: check for revocation on stale profiles */ + return 0; + + /* TODO: fix path lookup flags */ + flags = PATH_DELEGATE_DELETED | labels_profile(label)->path_flags | + (S_ISDIR(cond.mode) ? PATH_IS_DIR : 0); + get_buffers(buffer); + + error = path_name(op, label, &file->f_path, flags, buffer, &name, &cond, + request, true); + if (error) { + if (error == 1) + /* Access to open files that are deleted are + * given a pass (implicit delegation) + */ + /* TODO not needed when full perms cached */ + error = 0; + goto out; + } + + /* check every profile in task label not in current cache */ + error = fn_for_each_not_in_set(flabel, label, profile, + __aa_path_perm(op, profile, name, request, &cond, 0, + &perms)); + if (denied) { + /* check every profile in file label that was not tested + * in the initial check above. + */ + /* TODO: cache full perms so this only happens because of + * conditionals */ + /* TODO: don't audit here */ + last_error(error, + fn_for_each_not_in_set(label, flabel, profile, + __aa_path_perm(op, profile, name, request, + &cond, 0, &perms))); + } + if (!error) + update_file_cxt(file_cxt(file), label, request); + +out: + put_buffers(buffer); + + return error; +} + +static int __file_sock_perm(int op, struct aa_label *label, + struct aa_label *flabel, struct file *file, + u32 request, u32 denied) +{ + struct socket *sock = (struct socket *) file->private_data; + int error; + + AA_BUG(!sock); + + /* revalidation due to label out of date. No revocation at this time */ + if (!denied && aa_label_is_subset(flabel, label)) + return 0; + + /* TODO: improve to skip profiles cached in flabel */ + error = aa_sock_file_perm(label, op, request, sock); + if (denied) { + /* TODO: improve to skip profiles checked above */ + /* check every profile in file label to is cached */ + last_error(error, aa_sock_file_perm(flabel, op, request, sock)); + } + if (!error) + update_file_cxt(file_cxt(file), label, request); return error; } @@ -439,20 +583,117 @@ /** * aa_file_perm - do permission revalidation check & audit for @file * @op: operation being checked - * @profile: profile being enforced (NOT NULL) + * @label: label being enforced (NOT NULL) * @file: file to revalidate access permissions on (NOT NULL) * @request: requested permissions * * Returns: %0 if access allowed else error */ -int aa_file_perm(int op, struct aa_profile *profile, struct file *file, +int aa_file_perm(int op, struct aa_label *label, struct file *file, u32 request) { - struct path_cond cond = { - .uid = file_inode(file)->i_uid, - .mode = file_inode(file)->i_mode - }; + struct aa_file_cxt *fcxt; + struct aa_label *flabel; + u32 denied; + int error = 0; + + AA_BUG(!label); + AA_BUG(!file); + + fcxt = file_cxt(file); + + rcu_read_lock(); + flabel = rcu_dereference(fcxt->label); + AA_BUG(!flabel); + + /* revalidate access, if task is unconfined, or the cached cred + * doesn't match or if the request is for more permissions than + * was granted. + * + * Note: the test for !unconfined(flabel) is to handle file + * delegation from unconfined tasks + */ + denied = request & ~fcxt->allow; + if (unconfined(label) || unconfined(flabel) || + (!denied && aa_label_is_subset(flabel, label))) + goto done; + + /* TODO: label cross check */ + + if (file->f_path.mnt && path_mediated_fs(file->f_path.dentry)) { + error = __file_path_perm(op, label, flabel, file, request, + denied); + + } else if (S_ISSOCK(file_inode(file)->i_mode)) { + error = __file_sock_perm(op, label, flabel, file, request, + denied); + } +done: + rcu_read_unlock(); + + return error; +} + +static void revalidate_tty(struct aa_label *label) +{ + struct tty_struct *tty; + int drop_tty = 0; - return aa_path_perm(op, profile, &file->f_path, PATH_DELEGATE_DELETED, - request, &cond); + tty = get_current_tty(); + if (!tty) + return; + + spin_lock(&tty_files_lock); + if (!list_empty(&tty->tty_files)) { + struct tty_file_private *file_priv; + struct file *file; + /* TODO: Revalidate access to controlling tty. */ + file_priv = list_first_entry(&tty->tty_files, + struct tty_file_private, list); + file = file_priv->file; + + if (aa_file_perm(OP_INHERIT, label, file, MAY_READ | MAY_WRITE)) + drop_tty = 1; + } + spin_unlock(&tty_files_lock); + tty_kref_put(tty); + + if (drop_tty) + no_tty(); +} + +static int match_file(const void *p, struct file *file, unsigned fd) +{ + struct aa_label *label = (struct aa_label *)p; + if (aa_file_perm(OP_INHERIT, label, file, aa_map_file_to_perms(file))) + return fd + 1; + return 0; +} + + +/* based on selinux's flush_unauthorized_files */ +void aa_inherit_files(const struct cred *cred, struct files_struct *files) +{ + struct aa_label *label = aa_get_newest_cred_label(cred); + struct file *devnull = NULL; + unsigned n; + + revalidate_tty(label); + + /* Revalidate access to inherited open files. */ + n = iterate_fd(files, 0, match_file, label); + if (!n) /* none found? */ + goto out; + + devnull = dentry_open(&aa_null, O_RDWR, cred); + if (IS_ERR(devnull)) + devnull = NULL; + /* replace all the matching ones with this */ + do { + replace_fd(n - 1, devnull, 0); + } while ((n = iterate_fd(files, n, match_file, label)) != 0); + if (devnull) + fput(devnull); +out: + aa_put_label(label); } --- linux-raspi2-4.2.0.orig/security/apparmor/include/af_unix.h +++ linux-raspi2-4.2.0/security/apparmor/include/af_unix.h @@ -0,0 +1,121 @@ +/* + * 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_cxt && sock_cxt->label && sock_cxt->label->hname ? sock_cxt->label->hname : ""); print_sk(sock); \ + printk(" other %s:", other_cxt && other_cxt->label && other_cxt->label->hname ? other_cxt->label->hname : ""); print_sk(other); \ + printk(" new %s", new_cxt && new_cxt->label && new_cxt->label->hname ? new_cxt->label->hname : ""); print_sk(newsk); \ +} while (0) + + +#define DEFINE_AUDIT_UNIX(NAME, OP, SK, T, P) \ + struct lsm_network_audit NAME ## _net = { .sk = (SK), \ + .family = (AF_UNIX)}; \ + DEFINE_AUDIT_DATA(NAME, LSM_AUDIT_DATA_NONE, OP); \ + NAME.u.net = &(NAME ## _net); \ + aad(&NAME)->net.type = (T); \ + aad(&NAME)->net.protocol = (P) + + +int aa_unix_peer_perm(struct aa_label *label, int 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, int op, u32 request, + struct sock *sk); +int aa_unix_sock_perm(int 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(int op, u32 request, struct socket *sock, + struct msghdr *msg, int size); +int aa_unix_opt_perm(int op, u32 request, struct socket *sock, int level, + int optname); +int aa_unix_file_perm(struct aa_label *label, int op, u32 request, + struct socket *sock); + +#endif /* __AA_AF_UNIX_H */ --- linux-raspi2-4.2.0.orig/security/apparmor/include/apparmor.h +++ linux-raspi2-4.2.0/security/apparmor/include/apparmor.h @@ -4,7 +4,7 @@ * This file contains AppArmor basic global and lib definitions * * Copyright (C) 1998-2008 Novell/SUSE - * Copyright 2009-2010 Canonical Ltd. + * Copyright 2009-2013 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 @@ -20,6 +20,17 @@ #include "match.h" +/* Provide our own test for whether a write lock is held for asserts + * this is because on none SMP systems write_can_lock will always + * resolve to true, which is what you want for code making decisions + * based on it, but wrong for asserts checking that the lock is held + */ +#ifdef CONFIG_SMP +#define write_is_locked(X) !write_can_lock(X) +#else +#define write_is_locked(X) (1) +#endif /* CONFIG_SMP */ + /* * Class of mediation types in the AppArmor policy db */ @@ -30,17 +41,23 @@ #define AA_CLASS_NET 4 #define AA_CLASS_RLIMITS 5 #define AA_CLASS_DOMAIN 6 +#define AA_CLASS_MOUNT 7 +#define AA_CLASS_PTRACE 9 +#define AA_CLASS_SIGNAL 10 +#define AA_CLASS_LABEL 16 -#define AA_CLASS_LAST AA_CLASS_DOMAIN +#define AA_CLASS_LAST AA_CLASS_LABEL /* Control parameters settable through module/boot flags */ extern enum audit_mode aa_g_audit; extern bool aa_g_audit_header; extern bool aa_g_debug; +extern bool aa_g_hash_policy; extern bool aa_g_lock_policy; extern bool aa_g_logsyscall; extern bool aa_g_paranoid_load; extern unsigned int aa_g_path_max; +extern bool aa_g_unconfined_init; /* * DEBUG remains global (no per profile flag) since it is mostly used in sysctl @@ -53,6 +70,12 @@ printk(KERN_DEBUG "AppArmor: " fmt, ##args); \ } while (0) +#define AA_WARN(X) WARN((X), "APPARMOR WARN %s: %s\n", __FUNCTION__, #X) + +#define AA_BUG(X, args...) AA_BUG_FMT((X), "" args ) +#define AA_BUG_FMT(X, fmt, args...) \ + WARN((X), "AppArmor WARN %s: (" #X "): " fmt, __FUNCTION__ , ##args ) + #define AA_ERROR(fmt, args...) \ do { \ if (printk_ratelimit()) \ @@ -64,6 +87,7 @@ /* fn's in lib */ char *aa_split_fqname(char *args, char **ns_name); +char *aa_splitn_fqname(char *fqname, size_t n, char **ns_name, size_t *ns_len); void aa_info_message(const char *str); void *__aa_kvmalloc(size_t size, gfp_t flags); @@ -112,9 +136,40 @@ return aa_dfa_next(dfa, start, 0); } -static inline bool mediated_filesystem(struct dentry *dentry) +static inline bool path_mediated_fs(struct dentry *dentry) { return !(dentry->d_sb->s_flags & MS_NOUSER); } + +struct counted_str { + struct kref count; + char name[]; +}; + +#define str_to_counted(str) \ + ((struct counted_str *)(str - offsetof(struct counted_str,name))) + +#define __counted /* atm just a notation */ + +void aa_str_kref(struct kref *kref); +char *aa_str_alloc(int size, gfp_t gfp); + + +static inline __counted char *aa_get_str(__counted char *str) +{ + if (str) + kref_get(&(str_to_counted(str)->count)); + + return str; +} + +static inline void aa_put_str(__counted char *str) +{ + if (str) + kref_put(&str_to_counted(str)->count, aa_str_kref); +} + +const char *aa_imode_name(umode_t mode); + #endif /* __APPARMOR_H */ --- linux-raspi2-4.2.0.orig/security/apparmor/include/apparmorfs.h +++ linux-raspi2-4.2.0/security/apparmor/include/apparmorfs.h @@ -15,6 +15,8 @@ #ifndef __AA_APPARMORFS_H #define __AA_APPARMORFS_H +extern struct path aa_null; + enum aa_fs_type { AA_FS_TYPE_BOOLEAN, AA_FS_TYPE_STRING, --- linux-raspi2-4.2.0.orig/security/apparmor/include/audit.h +++ linux-raspi2-4.2.0/security/apparmor/include/audit.h @@ -22,8 +22,7 @@ #include #include "file.h" - -struct aa_profile; +#include "label.h" extern const char *const audit_mode_names[]; #define AUDIT_MAX_INDEX 5 @@ -67,10 +66,16 @@ OP_GETATTR, OP_OPEN, + OP_FRECEIVE, OP_FPERM, OP_FLOCK, OP_FMMAP, OP_FMPROT, + OP_INHERIT, + + OP_PIVOTROOT, + OP_MOUNT, + OP_UMOUNT, OP_CREATE, OP_POST_CREATE, @@ -84,9 +89,10 @@ OP_GETPEERNAME, OP_GETSOCKOPT, OP_SETSOCKOPT, - OP_SOCK_SHUTDOWN, + OP_SHUTDOWN, OP_PTRACE, + OP_SIGNAL, OP_EXEC, OP_CHANGE_HAT, @@ -106,37 +112,69 @@ int error; int op; int type; - void *profile; + struct aa_label *label; const char *name; const char *info; + u32 request; + u32 denied; union { - void *target; struct { - long pos; - void *target; - } iface; + const void *target; + union { + struct { + long pos; + } iface; + struct { + kuid_t ouid; + } fs; + struct { + int type, protocol; + struct sock *peer_sk; + void *addr; + int addrlen; + } net; + int signal; + }; + }; struct { int rlim; unsigned long max; } rlim; struct { - const char *target; - u32 request; - u32 denied; - kuid_t ouid; - } fs; + const char *src_name; + const char *type; + const char *trans; + const char *data; + unsigned long flags; + } mnt; }; }; -/* define a short hand for apparmor_audit_data structure */ -#define aad apparmor_audit_data +/* macros for dealing with apparmor_audit_data structure */ +#define aad(SA) (SA)->apparmor_audit_data +#define DEFINE_AUDIT_DATA(NAME, T, X) \ + /* TODO: cleanup audit init so we don't need _aad = {0,} */ \ + struct apparmor_audit_data NAME ## _aad = { .op = (X), }; \ + struct common_audit_data NAME = \ + { \ + .type = (T), \ + .u.tsk = NULL, \ + }; \ + NAME.apparmor_audit_data = &(NAME ## _aad) void aa_audit_msg(int type, struct common_audit_data *sa, void (*cb) (struct audit_buffer *, void *)); -int aa_audit(int type, struct aa_profile *profile, gfp_t gfp, - struct common_audit_data *sa, +int aa_audit(int type, struct aa_profile *profile, struct common_audit_data *sa, void (*cb) (struct audit_buffer *, void *)); +#define aa_audit_error(ERROR, SA, CB) \ +({ \ + aad((SA))->error = (ERROR); \ + aa_audit_msg(AUDIT_APPARMOR_ERROR, (SA), (CB)); \ + aad((SA))->error; \ +}) + + static inline int complain_error(int error) { if (error == -EPERM || error == -EACCES) --- linux-raspi2-4.2.0.orig/security/apparmor/include/capability.h +++ linux-raspi2-4.2.0/security/apparmor/include/capability.h @@ -19,11 +19,12 @@ #include "apparmorfs.h" -struct aa_profile; +struct aa_label; /* aa_caps - confinement data for capabilities * @allowed: capabilities mask * @audit: caps that are to be audited + * @denied: caps that are explicitly denied * @quiet: caps that should not be audited * @kill: caps that when requested will result in the task being killed * @extended: caps that are subject finer grained mediation @@ -31,6 +32,7 @@ struct aa_caps { kernel_cap_t allow; kernel_cap_t audit; + kernel_cap_t denied; kernel_cap_t quiet; kernel_cap_t kill; kernel_cap_t extended; @@ -38,7 +40,7 @@ extern struct aa_fs_entry aa_fs_entry_caps[]; -int aa_capable(struct aa_profile *profile, int cap, int audit); +int aa_capable(struct aa_label *label, int cap, int audit); static inline void aa_free_cap_rules(struct aa_caps *caps) { --- linux-raspi2-4.2.0.orig/security/apparmor/include/context.h +++ linux-raspi2-4.2.0/security/apparmor/include/context.h @@ -19,59 +19,29 @@ #include #include +#include "label.h" #include "policy.h" #define cred_cxt(X) (X)->security #define current_cxt() cred_cxt(current_cred()) - -/* struct aa_file_cxt - the AppArmor context the file was opened in - * @perms: the permission the file was opened with - * - * The file_cxt could currently be directly stored in file->f_security - * as the profile reference is now stored in the f_cred. However the - * cxt struct will expand in the future so we keep the struct. - */ -struct aa_file_cxt { - u16 allow; -}; - -/** - * aa_alloc_file_context - allocate file_cxt - * @gfp: gfp flags for allocation - * - * Returns: file_cxt or NULL on failure - */ -static inline struct aa_file_cxt *aa_alloc_file_context(gfp_t gfp) -{ - return kzalloc(sizeof(struct aa_file_cxt), gfp); -} - -/** - * aa_free_file_context - free a file_cxt - * @cxt: file_cxt to free (MAYBE_NULL) - */ -static inline void aa_free_file_context(struct aa_file_cxt *cxt) -{ - if (cxt) - kzfree(cxt); -} +#define current_ns() labels_ns(aa_current_raw_label()) /** * struct aa_task_cxt - primary label for confined tasks - * @profile: the current profile (NOT NULL) - * @exec: profile to transition to on next exec (MAYBE NULL) - * @previous: profile the task may return to (MAYBE NULL) - * @token: magic value the task must know for returning to @previous_profile + * @label: the current label (NOT NULL) + * @exec: label to transition to on next exec (MAYBE NULL) + * @previous: label the task may return to (MAYBE NULL) + * @token: magic value the task must know for returning to @previous * - * Contains the task's current profile (which could change due to + * Contains the task's current label (which could change due to * change_hat). Plus the hat_magic needed during change_hat. * * TODO: make so a task can be confined by a stack of contexts */ struct aa_task_cxt { - struct aa_profile *profile; - struct aa_profile *onexec; - struct aa_profile *previous; + struct aa_label *label; + struct aa_label *onexec; + struct aa_label *previous; u64 token; }; @@ -79,39 +49,50 @@ void aa_free_task_context(struct aa_task_cxt *cxt); void aa_dup_task_context(struct aa_task_cxt *new, const struct aa_task_cxt *old); -int aa_replace_current_profile(struct aa_profile *profile); -int aa_set_current_onexec(struct aa_profile *profile); -int aa_set_current_hat(struct aa_profile *profile, u64 token); -int aa_restore_previous_profile(u64 cookie); -struct aa_profile *aa_get_task_profile(struct task_struct *task); +int aa_replace_current_label(struct aa_label *label); +int aa_set_current_onexec(struct aa_label *label); +int aa_set_current_hat(struct aa_label *label, u64 token); +int aa_restore_previous_label(u64 cookie); +struct aa_label *aa_get_task_label(struct task_struct *task); /** - * aa_cred_profile - obtain cred's profiles - * @cred: cred to obtain profiles from (NOT NULL) + * aa_cred_raw_label - obtain cred's label + * @cred: cred to obtain label from (NOT NULL) * - * Returns: confining profile + * Returns: confining label * * does NOT increment reference count */ -static inline struct aa_profile *aa_cred_profile(const struct cred *cred) +static inline struct aa_label *aa_cred_raw_label(const struct cred *cred) { struct aa_task_cxt *cxt = cred_cxt(cred); - BUG_ON(!cxt || !cxt->profile); - return cxt->profile; + BUG_ON(!cxt || !cxt->label); + return cxt->label; } /** - * __aa_task_profile - retrieve another task's profile + * aa_get_newest_cred_label - obtain the newest version of the label on a cred + * @cred: cred to obtain label from (NOT NULL) + * + * Returns: newest version of confining label + */ +static inline struct aa_label *aa_get_newest_cred_label(const struct cred *cred) +{ + return aa_get_newest_label(aa_cred_raw_label(cred)); +} + +/** + * __aa_task_raw_label - retrieve another task's label * @task: task to query (NOT NULL) * - * Returns: @task's profile without incrementing its ref count + * Returns: @task's label without incrementing its ref count * * If @task != current needs to be called in RCU safe critical section */ -static inline struct aa_profile *__aa_task_profile(struct task_struct *task) +static inline struct aa_label *__aa_task_raw_label(struct task_struct *task) { - return aa_cred_profile(__task_cred(task)); + return aa_cred_raw_label(__task_cred(task)); } /** @@ -122,44 +103,93 @@ */ static inline bool __aa_task_is_confined(struct task_struct *task) { - return !unconfined(__aa_task_profile(task)); + return !unconfined(__aa_task_raw_label(task)); } /** - * __aa_current_profile - find the current tasks confining profile + * aa_current_raw_label - find the current tasks confining label * - * Returns: up to date confining profile or the ns unconfined profile (NOT NULL) + * Returns: up to date confining label or the ns unconfined label (NOT NULL) * * This fn will not update the tasks cred to the most up to date version - * of the profile so it is safe to call when inside of locks. + * of the label so it is safe to call when inside of locks. + */ +static inline struct aa_label *aa_current_raw_label(void) +{ + return aa_cred_raw_label(current_cred()); +} + +/** + * aa_get_current_label - get the newest version of the current tasks label + * + * Returns: newest version of confining label (NOT NULL) + * + * This fn will not update the tasks cred, so it is safe inside of locks + * + * The returned reference must be put with aa_put_label() + */ +static inline struct aa_label *aa_get_current_label(void) +{ + struct aa_label *l = aa_current_raw_label(); + + if (label_invalid(l)) + return aa_get_newest_label(l); + return aa_get_label(l); +} + +/** + * aa_begin_current_label - find newest version of the current tasks label + * + * Returns: newest version of confining label (NOT NULL) + * + * This fn will not update the tasks cred, so it is safe inside of locks + * + * The returned reference must be put with aa_end_current_label() + */ +static inline struct aa_label *aa_begin_current_label(void) +{ + struct aa_label *l = aa_current_raw_label(); + + if (label_invalid(l)) + l = aa_get_newest_label(l); + return l; +} + +/** + * aa_end_current_label - put a reference found with aa_begin_current_label + * @label: label reference to put + * + * Should only be used with a reference obtained with aa_begin_current_label + * and never used in situations where the task cred may be updated */ -static inline struct aa_profile *__aa_current_profile(void) +static inline void aa_end_current_label(struct aa_label *label) { - return aa_cred_profile(current_cred()); + if (label != aa_current_raw_label()) + aa_put_label(label); } /** - * aa_current_profile - find the current tasks confining profile and do updates + * aa_current_label - find the current tasks confining label and update it * - * Returns: up to date confining profile or the ns unconfined profile (NOT NULL) + * Returns: up to date confining label or the ns unconfined label (NOT NULL) * - * This fn will update the tasks cred structure if the profile has been + * This fn will update the tasks cred structure if the label has been * replaced. Not safe to call inside locks */ -static inline struct aa_profile *aa_current_profile(void) +static inline struct aa_label *aa_current_label(void) { const struct aa_task_cxt *cxt = current_cxt(); - struct aa_profile *profile; - BUG_ON(!cxt || !cxt->profile); + struct aa_label *label; + BUG_ON(!cxt || !cxt->label); - if (PROFILE_INVALID(cxt->profile)) { - profile = aa_get_newest_profile(cxt->profile); - aa_replace_current_profile(profile); - aa_put_profile(profile); + if (label_invalid(cxt->label)) { + label = aa_get_newest_label(cxt->label); + aa_replace_current_label(label); + aa_put_label(label); cxt = current_cxt(); } - return cxt->profile; + return cxt->label; } /** @@ -168,8 +198,8 @@ */ static inline void aa_clear_task_cxt_trans(struct aa_task_cxt *cxt) { - aa_put_profile(cxt->previous); - aa_put_profile(cxt->onexec); + aa_put_label(cxt->previous); + aa_put_label(cxt->onexec); cxt->previous = NULL; cxt->onexec = NULL; cxt->token = 0; --- linux-raspi2-4.2.0.orig/security/apparmor/include/domain.h +++ linux-raspi2-4.2.0/security/apparmor/include/domain.h @@ -23,6 +23,8 @@ char **table; }; +struct aa_profile *x_table_lookup(struct aa_profile *profile, u32 xindex); + int apparmor_bprm_set_creds(struct linux_binprm *bprm); int apparmor_bprm_secureexec(struct linux_binprm *bprm); void apparmor_bprm_committing_creds(struct linux_binprm *bprm); --- linux-raspi2-4.2.0.orig/security/apparmor/include/file.h +++ linux-raspi2-4.2.0/security/apparmor/include/file.h @@ -15,38 +15,75 @@ #ifndef __AA_FILE_H #define __AA_FILE_H +#include + #include "domain.h" #include "match.h" +#include "label.h" +#include "perms.h" struct aa_profile; struct path; -/* - * We use MAY_EXEC, MAY_WRITE, MAY_READ, MAY_APPEND and the following flags - * for profile permissions - */ -#define AA_MAY_CREATE 0x0010 -#define AA_MAY_DELETE 0x0020 -#define AA_MAY_META_WRITE 0x0040 -#define AA_MAY_META_READ 0x0080 - -#define AA_MAY_CHMOD 0x0100 -#define AA_MAY_CHOWN 0x0200 -#define AA_MAY_LOCK 0x0400 -#define AA_EXEC_MMAP 0x0800 - -#define AA_MAY_LINK 0x1000 -#define AA_LINK_SUBSET AA_MAY_LOCK /* overlaid */ -#define AA_MAY_ONEXEC 0x40000000 /* exec allows onexec */ -#define AA_MAY_CHANGE_PROFILE 0x80000000 -#define AA_MAY_CHANGEHAT 0x80000000 /* ctrl auditing only */ +#define mask_mode_t(X) (X & (MAY_EXEC | MAY_WRITE | MAY_READ | MAY_APPEND)) #define AA_AUDIT_FILE_MASK (MAY_READ | MAY_WRITE | MAY_EXEC | MAY_APPEND |\ AA_MAY_CREATE | AA_MAY_DELETE | \ - AA_MAY_META_READ | AA_MAY_META_WRITE | \ + AA_MAY_GETATTR | AA_MAY_SETATTR | \ AA_MAY_CHMOD | AA_MAY_CHOWN | AA_MAY_LOCK | \ AA_EXEC_MMAP | AA_MAY_LINK) +#define file_cxt(X) ((struct aa_file_cxt *)(X)->f_security) + +/* struct aa_file_cxt - the AppArmor context the file was opened in + * @lock: lock to update the cxt + * @label: label currently cached on the cxt + * @perms: the permission the file was opened with + */ +struct aa_file_cxt { + spinlock_t lock; + struct aa_label __rcu *label; + u32 allow; +}; + +/** + * aa_alloc_file_cxt - allocate file_cxt + * @label: initial label of task creating the file + * @gfp: gfp flags for allocation + * + * Returns: file_cxt or NULL on failure + */ +static inline struct aa_file_cxt *aa_alloc_file_cxt(struct aa_label *label, gfp_t gfp) +{ + struct aa_file_cxt *cxt; + + cxt = kzalloc(sizeof(struct aa_file_cxt), gfp); + if (cxt) { + spin_lock_init(&cxt->lock); + rcu_assign_pointer(cxt->label, aa_get_label(label)); + } + return cxt; +} + +/** + * aa_free_file_cxt - free a file_cxt + * @cxt: file_cxt to free (MAYBE_NULL) + */ +static inline void aa_free_file_cxt(struct aa_file_cxt *cxt) +{ + if (cxt) { + aa_put_label(rcu_access_pointer(cxt->label)); + kzfree(cxt); + } +} + +static inline struct aa_label *aa_get_file_label(struct aa_file_cxt *cxt) +{ + return aa_get_label_rcu(&cxt->label); +} + +#define inode_cxt(X) (X)->i_security + /* * The xindex is broken into 3 parts * - index - an index into either the exec name table or the variable table @@ -145,8 +182,8 @@ dfa_map_xindex((ACCEPT_TABLE(dfa)[state] >> 14) & 0x3fff) int aa_audit_file(struct aa_profile *profile, struct file_perms *perms, - gfp_t gfp, int op, u32 request, const char *name, - const char *target, kuid_t ouid, const char *info, int error); + int op, u32 request, const char *name, const char *target, + kuid_t ouid, const char *info, int error); /** * struct aa_file_rules - components used for file rule permissions @@ -171,15 +208,20 @@ const char *name, struct path_cond *cond, struct file_perms *perms); -int aa_path_perm(int op, struct aa_profile *profile, struct path *path, +int __aa_path_perm(int op, struct aa_profile *profile, const char *name, + u32 request, struct path_cond *cond, int flags, + struct file_perms *perms); +int aa_path_perm(int op, struct aa_label *label, struct path *path, int flags, u32 request, struct path_cond *cond); -int aa_path_link(struct aa_profile *profile, struct dentry *old_dentry, +int aa_path_link(struct aa_label *label, struct dentry *old_dentry, struct path *new_dir, struct dentry *new_dentry); -int aa_file_perm(int op, struct aa_profile *profile, struct file *file, +int aa_file_perm(int op, struct aa_label *label, struct file *file, u32 request); +void aa_inherit_files(const struct cred *cred, struct files_struct *files); + static inline void aa_free_file_rules(struct aa_file_rules *rules) { aa_put_dfa(rules->dfa); --- linux-raspi2-4.2.0.orig/security/apparmor/include/ipc.h +++ linux-raspi2-4.2.0/security/apparmor/include/ipc.h @@ -4,7 +4,7 @@ * This file contains AppArmor ipc mediation function definitions. * * Copyright (C) 1998-2008 Novell/SUSE - * Copyright 2009-2010 Canonical Ltd. + * Copyright 2009-2013 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 @@ -19,10 +19,22 @@ struct aa_profile; -int aa_may_ptrace(struct aa_profile *tracer, struct aa_profile *tracee, - unsigned int mode); - -int aa_ptrace(struct task_struct *tracer, struct task_struct *tracee, - unsigned int mode); +#define AA_PTRACE_TRACE MAY_WRITE +#define AA_PTRACE_READ MAY_READ +#define AA_MAY_BE_TRACED AA_MAY_APPEND +#define AA_MAY_BE_READ AA_MAY_CREATE +#define PTRACE_PERM_SHIFT 2 + +#define AA_PTRACE_PERM_MASK (AA_PTRACE_READ | AA_PTRACE_TRACE | \ + AA_MAY_BE_READ | AA_MAY_BE_TRACED) +#define AA_SIGNAL_PERM_MASK (MAY_READ | MAY_WRITE) + +#define AA_FS_SIG_MASK "hup int quit ill trap abrt bus fpe kill usr1 " \ + "segv usr2 pipe alrm term stkflt chld cont stop stp ttin ttou urg " \ + "xcpu xfsz vtalrm prof winch io pwr sys emt lost" + +int aa_may_ptrace(struct aa_label *tracer, struct aa_label *tracee, + u32 request); +int aa_may_signal(struct aa_label *sender, struct aa_label *target, int sig); #endif /* __AA_IPC_H */ --- linux-raspi2-4.2.0.orig/security/apparmor/include/label.h +++ linux-raspi2-4.2.0/security/apparmor/include/label.h @@ -0,0 +1,419 @@ +/* + * AppArmor security module + * + * This file contains AppArmor label definitions + * + * Copyright 2013 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_LABEL_H +#define __AA_LABEL_H + +#include +#include +#include +#include + +#include "apparmor.h" + +struct aa_namespace; + +struct labelset_stats { + atomic_t sread; + atomic_t fread; + atomic_t msread; + atomic_t mfread; + + atomic_t insert; + atomic_t existing; + atomic_t minsert; + atomic_t mexisting; + + atomic_t invalid; /* outstanding invalid */ +}; + +struct label_stats { + struct labelset_stats set_stats; + + atomic_t allocated; + atomic_t failed; + atomic_t freed; + + atomic_t printk_name_alloc; + atomic_t printk_name_fail; + atomic_t seq_print_name_alloc; + atomic_t seq_print_name_fail; + atomic_t audit_name_alloc; + atomic_t audit_name_fail; +}; + + +#ifdef AA_LABEL_STATS +#define labelstats_inc(X) atomic_inc(stats.(X)) +#define labelstats_dec(X) atomic_dec(stats.(X)) +#define labelsetstats_inc(LS, X) \ + do { \ + labelstats_inc(set_stats.##X); \ + atomic_inc((LS)->stats.(X)); \ + } while (0) +#define labelsetstats_dec(LS, X) \ + do { \ + labelstats_dec(set_stats.##X); \ + atomic_dec((LS)->stats.(X)); \ + } while (0) +#else +#define labelstats_inc(X) +#define labelstats_dec(X) +#define labelsetstats_inc(LS, X) +#define labelsetstats_dec(LS, X) +#endif +#define labelstats_init(X) + +/* struct aa_labelset - set of labels for a namespace + * + * Labels are reference counted; aa_labelset does not contribute to label + * reference counts. Once a label's last refcount is put it is removed from + * the set. + */ +struct aa_labelset { + rwlock_t lock; + + struct rb_root root; + + /* stats */ +#ifdef APPARMOR_LABEL_STATS + struct labelset_stats stats; +#endif + +}; + +#define __labelset_for_each(LS, N) \ + for((N) = rb_first(&(LS)->root); (N); (N) = rb_next(N)) + +void aa_labelset_destroy(struct aa_labelset *ls); +void aa_labelset_init(struct aa_labelset *ls); + + +enum label_flags { + FLAG_HAT = 1, /* profile is a hat */ + FLAG_UNCONFINED = 2, /* label unconfined only if all + * constituant profiles unconfined */ + FLAG_NULL = 4, /* profile is null learning profile */ + FLAG_IX_ON_NAME_ERROR = 8, /* fallback to ix on name lookup fail */ + FLAG_IMMUTIBLE = 0x10, /* don't allow changes/replacement */ + FLAG_USER_DEFINED = 0x20, /* user based profile - lower privs */ + FLAG_NO_LIST_REF = 0x40, /* list doesn't keep profile ref */ + FLAG_NS_COUNT = 0x80, /* carries NS ref count */ + FLAG_IN_TREE = 0x100, /* label is in tree */ + FLAG_PROFILE = 0x200, /* label is a profile */ + FALG_EXPLICIT = 0x400, /* explict static label */ + FLAG_INVALID = 0x800, /* replaced/removed */ + FLAG_RENAMED = 0x1000, /* label has renaming in it */ + FLAG_REVOKED = 0x2000, /* label has revocation in it */ + + /* These flags must correspond with PATH_flags */ + /* TODO: add new path flags */ +}; + +struct aa_label; +struct aa_replacedby { + struct kref count; + struct aa_label __rcu *label; +}; + +struct label_it { + int i, j; +}; + +/* struct aa_label - lazy labeling struct + * @count: ref count of active users + * @node: rbtree position + * @rcu: rcu callback struct + * @replacedby: is set to the label that replaced this label + * @hname: text representation of the label (MAYBE_NULL) + * @flags: invalid and other flags - values may change under label set lock + * @sid: sid that references this label + * @size: number of entries in @ent[] + * @ent: set of profiles for label, actual size determined by @size + */ +struct aa_label { + struct kref count; + struct rb_node node; + struct rcu_head rcu; + struct aa_replacedby *replacedby; + __counted char *hname; + long flags; + u32 sid; + int size; + struct aa_profile *ent[2]; +}; + +#define last_error(E, FN) \ +do { \ + int __subE = (FN); \ + if (__subE) \ + (E) = __subE; \ +} while (0) + +#define label_isprofile(X) ((X)->flags & FLAG_PROFILE) +#define label_unconfined(X) ((X)->flags & FLAG_UNCONFINED) +#define unconfined(X) label_unconfined(X) +#define label_invalid(X) ((X)->flags & FLAG_INVALID) +#define __label_invalidate(X) do { \ + labelsetstats_inc(labels_set(X), invalid); \ + ((X)->flags |= FLAG_INVALID); \ +} while (0) +#define labels_last(X) ((X)->ent[(X)->size - 1]) +#define labels_ns(X) (labels_last(X)->ns) +#define labels_set(X) (&labels_ns(X)->labels) +#define labels_profile(X) ({ \ + AA_BUG(!label_isprofile(X)); \ + container_of((X), struct aa_profile, label); \ +}) + +int aa_label_next_confined(struct aa_label *l, int i); + +/* for each profile in a label */ +#define label_for_each(I, L, P) \ + for ((I).i = 0; ((P) = (L)->ent[(I).i]); ++((I).i)) + +#define label_for_each_at(I, L, P) \ + for (; ((P) = (L)->ent[(I).i]); ++((I).i)) + +#define next_comb(I, L1, L2) \ +do { \ + (I).j++; \ + if ((I).j >= (L2)->size) { \ + (I).i++; \ + (I).j = 0; \ + } \ +} while (0) + +/* TODO: label_for_each_ns_comb */ + +/* for each combination of P1 in L1, and P2 in L2 */ +#define label_for_each_comb(I, L1, L2, P1, P2) \ +for ((I).i = (I).j = 0; \ + ((P1) = (L1)->ent[(I).i]) && ((P2) = (L2)->ent[(I).j]); \ + (I) = next_comb(I, L1, L2)) + +#define fn_for_each_comb(L1, L2, P1, P2, FN) \ +({ \ + struct label_it i; \ + int __E = 0; \ + label_for_each_comb(i, (L1), (L2), (P1), (P2)) { \ + last_error(__E, (FN)); \ + } \ + __E; \ +}) + +/* internal cross check */ +//fn_for_each_comb(L1, L2, P1, P2, xcheck(...)); + +/* external cross check */ +// xcheck(fn_for_each_comb(L1, L2, ...), +// fn_for_each_comb(L2, L1, ...)); + +/* for each profile that is enforcing confinement in a label */ +#define label_for_each_confined(I, L, P) \ + for ((I).i = aa_label_next_confined((L), 0); \ + ((P) = (L)->ent[(I).i]); \ + (I).i = aa_label_next_confined((L), (I).i + 1)) + +#define label_for_each_in_merge(I, A, B, P) \ + for ((I).i = (I).j = 0; \ + ((P) = aa_label_next_in_merge(&(I), (A), (B))); \ + ) + +#define label_for_each_not_in_set(I, SET, SUB, P) \ + for ((I).i = (I).j = 0; \ + ((P) = aa_label_next_not_in_set(&(I), (SET), (SUB))); \ + ) + +#define fn_for_each_XXX(L, P, FN, ...) \ +({ \ + struct label_it i; \ + int __E = 0; \ + label_for_each ## __VA_ARGS__ (i, (L), (P)) { \ + last_error(__E, (FN)); \ + } \ + __E; \ +}) + +#define fn_for_each(L, P, FN) fn_for_each_XXX(L, P, FN) +#define fn_for_each_confined(L, P, FN) fn_for_each_XXX(L, P, FN, _confined) + +#define fn_for_each2_XXX(L1, L2, P, FN, ...) \ +({ \ + struct label_it i; \ + int __E = 0; \ + label_for_each ## __VA_ARGS__(i, (L1), (L2), (P)) { \ + last_error(__E, (FN)); \ + } \ + __E; \ +}) + +#define fn_for_each_in_merge(L1, L2, P, FN) \ + fn_for_each2_XXX((L1), (L2), P, FN, _in_merge) +#define fn_for_each_not_in_set(L1, L2, P, FN) \ + fn_for_each2_XXX((L1), (L2), P, FN, _not_in_set) + +#define LABEL_MEDIATES(L, C) \ +({ \ + struct aa_profile *profile; \ + struct label_it i; \ + int ret = 0; \ + label_for_each(i, (L), profile) { \ + if (PROFILE_MEDIATES(profile, (C))) { \ + ret = 1; \ + break; \ + } \ + } \ + ret; \ +}) + +void aa_labelset_destroy(struct aa_labelset *ls); +void aa_labelset_init(struct aa_labelset *ls); +void __aa_labelset_update_all(struct aa_namespace *ns); + +void aa_label_destroy(struct aa_label *label); +void aa_label_free(struct aa_label *label); +void aa_label_kref(struct kref *kref); +bool aa_label_init(struct aa_label *label, int size); +struct aa_label *aa_label_alloc(int size, gfp_t gfp); + +bool aa_label_is_subset(struct aa_label *set, struct aa_label *sub); +struct aa_profile * aa_label_next_not_in_set(struct label_it *I, + struct aa_label *set, + struct aa_label *sub); +bool aa_label_remove(struct aa_labelset *ls, struct aa_label *label); +struct aa_label *aa_label_insert(struct aa_labelset *ls, struct aa_label *l); +struct aa_label *aa_label_remove_and_insert(struct aa_labelset *ls, + struct aa_label *remove, + struct aa_label *insert); +bool aa_label_replace(struct aa_labelset *ls, struct aa_label *old, + struct aa_label *new); +bool aa_label_make_newest(struct aa_labelset *ls, struct aa_label *old, + struct aa_label *new); + +struct aa_label *aa_label_find(struct aa_labelset *ls, struct aa_label *l); +struct aa_label *aa_label_vec_find(struct aa_labelset *ls, + struct aa_profile **vec, + int n); +struct aa_label *aa_label_vec_merge(struct aa_profile **vec, int len, + gfp_t gfp); + +struct aa_profile *aa_label_next_in_merge(struct label_it *I, + struct aa_label *a, + struct aa_label *b); +struct aa_label *aa_label_find_merge(struct aa_label *a, struct aa_label *b); +struct aa_label *aa_label_merge(struct aa_label *a, struct aa_label *b, + gfp_t gfp); + +bool aa_update_label_name(struct aa_namespace *ns, struct aa_label *label, + gfp_t gfp); + +int aa_profile_snprint(char *str, size_t size, struct aa_namespace *ns, + struct aa_profile *profile, bool mode); +int aa_label_snprint(char *str, size_t size, struct aa_namespace *ns, + struct aa_label *label, bool mode); +int aa_label_asprint(char **strp, struct aa_namespace *ns, + struct aa_label *label, bool mode, gfp_t gfp); +int aa_label_acntsprint(char __counted **strp, struct aa_namespace *ns, + struct aa_label *label, bool mode, gfp_t gfp); +void aa_label_audit(struct audit_buffer *ab, struct aa_namespace *ns, + struct aa_label *label, bool mode, gfp_t gfp); +void aa_label_seq_print(struct seq_file *f, struct aa_namespace *ns, + struct aa_label *label, bool mode, gfp_t gfp); +void aa_label_printk(struct aa_namespace *ns, struct aa_label *label, + bool mode, gfp_t gfp); +struct aa_label *aa_label_parse(struct aa_label *base, char *str, + gfp_t gfp, bool create); + +static inline struct aa_label *aa_get_label(struct aa_label *l) +{ + if (l) + kref_get(&(l->count)); + + return l; +} + +static inline struct aa_label *aa_get_label_not0(struct aa_label *l) +{ + if (l && kref_get_not0(&l->count)) + return l; + + return NULL; +} + +/** + * aa_get_label_rcu - increment refcount on a label that can be replaced + * @l: pointer to label that can be replaced (NOT NULL) + * + * Returns: pointer to a refcounted label. + * else NULL if no label + */ +static inline struct aa_label *aa_get_label_rcu(struct aa_label __rcu **l) +{ + struct aa_label *c; + + rcu_read_lock(); + do { + c = rcu_dereference(*l); + } while (c && !kref_get_not0(&c->count)); + rcu_read_unlock(); + + return c; +} + +/** + * aa_get_newest_label - find the newest version of @l + * @l: the label to check for newer versions of + * + * Returns: refcounted newest version of @l taking into account + * replacement, renames and removals + * return @l. + */ +static inline struct aa_label *aa_get_newest_label(struct aa_label *l) +{ + if (!l) + return NULL; + + if (label_invalid(l)) + return aa_get_label_rcu(&l->replacedby->label); + + return aa_get_label(l); +} + +static inline void aa_put_label(struct aa_label *l) +{ + if (l) + kref_put(&l->count, aa_label_kref); +} + + +struct aa_replacedby *aa_alloc_replacedby(struct aa_label *l); +void aa_free_replacedby_kref(struct kref *kref); + +static inline struct aa_replacedby *aa_get_replacedby(struct aa_replacedby *r) +{ + if (r) + kref_get(&(r->count)); + + return r; +} + +static inline void aa_put_replacedby(struct aa_replacedby *r) +{ + if (r) + kref_put(&r->count, aa_free_replacedby_kref); +} + +void __aa_update_replacedby(struct aa_label *orig, struct aa_label *new); + +#endif /* __AA_LABEL_H */ --- linux-raspi2-4.2.0.orig/security/apparmor/include/match.h +++ linux-raspi2-4.2.0/security/apparmor/include/match.h @@ -127,6 +127,21 @@ void aa_dfa_free_kref(struct kref *kref); /** + * aa_get_dfa - increment refcount on dfa @p + * @dfa: dfa (MAYBE NULL) + * + * Returns: pointer to @dfa if @dfa is NULL will return NULL + * Requires: @dfa must be held with valid refcount when called + */ +static inline struct aa_dfa *aa_get_dfa(struct aa_dfa *dfa) +{ + if (dfa) + kref_get(&(dfa->count)); + + return dfa; +} + +/** * aa_put_dfa - put a dfa refcount * @dfa: dfa to put refcount (MAYBE NULL) * --- linux-raspi2-4.2.0.orig/security/apparmor/include/mount.h +++ linux-raspi2-4.2.0/security/apparmor/include/mount.h @@ -0,0 +1,54 @@ +/* + * AppArmor security module + * + * This file contains AppArmor file mediation function definitions. + * + * Copyright 2012 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_MOUNT_H +#define __AA_MOUNT_H + +#include +#include + +#include "domain.h" +#include "policy.h" + +/* mount perms */ +#define AA_MAY_PIVOTROOT 0x01 +#define AA_MAY_MOUNT 0x02 +#define AA_MAY_UMOUNT 0x04 +#define AA_AUDIT_DATA 0x40 +#define AA_MNT_CONT_MATCH 0x40 + +#define AA_MS_IGNORE_MASK (MS_KERNMOUNT | MS_NOSEC | MS_ACTIVE | MS_BORN) + +int aa_remount(struct aa_label *label, struct path *path, unsigned long flags, + void *data); + +int aa_bind_mount(struct aa_label *label, struct path *path, + const char *old_name, unsigned long flags); + + +int aa_mount_change_type(struct aa_label *label, struct path *path, + unsigned long flags); + +int aa_move_mount(struct aa_label *label, struct path *path, + const char *old_name); + +int aa_new_mount(struct aa_label *label, const char *dev_name, + struct path *path, const char *type, unsigned long flags, + void *data); + +int aa_umount(struct aa_label *label, struct vfsmount *mnt, int flags); + +int aa_pivotroot(struct aa_label *label, struct path *old_path, + struct path *new_path); + +#endif /* __AA_MOUNT_H */ --- linux-raspi2-4.2.0.orig/security/apparmor/include/net.h +++ linux-raspi2-4.2.0/security/apparmor/include/net.h @@ -0,0 +1,110 @@ +/* + * AppArmor security module + * + * This file contains AppArmor network mediation definitions. + * + * Copyright (C) 1998-2008 Novell/SUSE + * Copyright 2009-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_NET_H +#define __AA_NET_H + +#include + +#include "apparmorfs.h" +#include "label.h" +#include "perms.h" +#include "policy.h" + +#define AA_MAY_SEND AA_MAY_WRITE +#define AA_MAY_RECEIVE AA_MAY_READ + +#define AA_MAY_SHUTDOWN AA_MAY_DELETE + +#define AA_MAY_CONNECT AA_MAY_OPEN +#define AA_MAY_ACCEPT 0x00100000 + +#define AA_MAY_BIND 0x00200000 +#define AA_MAY_LISTEN 0x00400000 + +#define AA_MAY_SETOPT 0x01000000 +#define AA_MAY_GETOPT 0x02000000 + +#define NET_PERMS_MASK (AA_MAY_SEND | AA_MAY_RECEIVE | AA_MAY_CREATE | \ + AA_MAY_SHUTDOWN | AA_MAY_BIND | AA_MAY_LISTEN | \ + AA_MAY_CONNECT | AA_MAY_ACCEPT | AA_MAY_SETATTR | \ + AA_MAY_GETATTR | AA_MAY_SETOPT | AA_MAY_GETOPT) + +#define NET_FS_PERMS (AA_MAY_SEND | AA_MAY_RECEIVE | AA_MAY_CREATE | \ + AA_MAY_SHUTDOWN | AA_MAY_CONNECT | AA_MAY_RENAME |\ + AA_MAY_SETATTR | AA_MAY_GETATTR | AA_MAY_CHMOD | \ + AA_MAY_CHOWN | AA_MAY_CHGRP | AA_MAY_LOCK | \ + AA_MAY_MPROT) + +#define NET_PEER_MASK (AA_MAY_SEND | AA_MAY_RECEIVE | AA_MAY_CONNECT | \ + AA_MAY_ACCEPT) +struct aa_sk_cxt { + struct aa_label *label; + struct aa_label *peer; +}; + +#define SK_CXT(X) (X)->sk_security +#define SOCK_CXT(X) SOCK_INODE(X)->i_security +#define DEFINE_AUDIT_NET(NAME, OP, SK, F, T, P) \ + struct lsm_network_audit NAME ## _net = { .sk = (SK), \ + .family = (F)}; \ + DEFINE_AUDIT_DATA(NAME, \ + (SK) ? LSM_AUDIT_DATA_NET : LSM_AUDIT_DATA_NONE,\ + OP); \ + NAME.u.net = &(NAME ## _net); \ + aad(&NAME)->net.type = (T); \ + aad(&NAME)->net.protocol = (P) + +/* struct aa_net - network confinement data + * @allowed: basic network families permissions + * @audit_network: which network permissions to force audit + * @quiet_network: which network permissions to quiet rejects + */ +struct aa_net { + u16 allow[AF_MAX]; + u16 audit[AF_MAX]; + u16 quiet[AF_MAX]; +}; + + +extern struct aa_fs_entry aa_fs_entry_network[]; + +void audit_net_cb(struct audit_buffer *ab, void *va); +int aa_profile_af_perm(struct aa_profile *profile, int op, u16 family, + int type, int protocol, struct sock *sk); +int aa_af_perm(struct aa_label *label, int op, u32 request, u16 family, + int type, int protocol, struct sock *sk); +int aa_sock_perm(int op, u32 request, struct socket *sock); +int aa_sock_create_perm(struct aa_label *label, int family, int type, + int protocol); +int aa_sock_bind_perm(struct socket *sock, struct sockaddr *address, + int addrlen); +int aa_sock_connect_perm(struct socket *sock, struct sockaddr *address, + int addrlen); +int aa_sock_listen_perm(struct socket *sock, int backlog); +int aa_sock_accept_perm(struct socket *sock, struct socket *newsock); +int aa_sock_msg_perm(int op, u32 request, struct socket *sock, + struct msghdr *msg, int size); +int aa_sock_opt_perm(int op, u32 request, struct socket *sock, int level, + int optname); +int aa_sock_file_perm(struct aa_label *label, int op, u32 request, + struct socket *sock); + + +static inline void aa_free_net_rules(struct aa_net *new) +{ + /* NOP */ +} + +#endif /* __AA_NET_H */ --- linux-raspi2-4.2.0.orig/security/apparmor/include/path.h +++ linux-raspi2-4.2.0/security/apparmor/include/path.h @@ -18,15 +18,72 @@ 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 */ PATH_DELEGATE_DELETED = 0x08000, /* delegate deleted files */ - PATH_MEDIATE_DELETED = 0x10000, /* mediate deleted paths */ + PATH_MEDIATE_DELETED = 0x10000, /* mediate deleted paths */ }; -int aa_path_name(struct path *path, int flags, char **buffer, - const char **name, const char **info); +int aa_path_name(struct path *path, int flags, char *buffer, + const char **name, const char **info, const char *disconnect); + +#define MAX_PATH_BUFFERS 2 + +/* Per cpu buffers used during mediation */ +/* preallocated buffers to use during path lookups */ +struct aa_buffers { + char *buf[MAX_PATH_BUFFERS]; +}; + +#include +#include + +DECLARE_PER_CPU(struct aa_buffers, aa_buffers); + +#define COUNT_ARGS(X...) COUNT_ARGS_HELPER ( , ##X ,9,8,7,6,5,4,3,2,1,0) +#define COUNT_ARGS_HELPER(_0,_1,_2,_3,_4,_5,_6,_7,_8,_9,n,X...) n +#define CONCAT(X, Y) X ## Y +#define CONCAT_AFTER(X, Y) CONCAT(X, Y) + +#define ASSIGN(FN, X, N) do { (X) = FN(N); } while (0) +#define EVAL1(FN, X) ASSIGN(FN, X, 0) /*X = FN(0)*/ +#define EVAL2(FN, X, Y...) ASSIGN(FN, X, 1); /*X = FN(1);*/ EVAL1(FN, Y) +#define EVAL(FN, X...) CONCAT_AFTER(EVAL, COUNT_ARGS(X))(FN, X) + +#define for_each_cpu_buffer(I) for ((I) = 0; (I) < MAX_PATH_BUFFERS; (I)++) + +#ifdef CONFIG_DEBUG_PREEMPT +#define AA_BUG_PREEMPT_ENABLED(X) AA_BUG(preempt_count() <= 0, X) +#else +#define AA_BUG_PREEMPT_ENABLED(X) /* nop */ +#endif + +#define __get_buffer(N) ({ \ + struct aa_buffers *__cpu_var; \ + AA_BUG_PREEMPT_ENABLED("__get_buffer without preempt disabled"); \ + __cpu_var = this_cpu_ptr(&aa_buffers); \ + __cpu_var->buf[(N)]; }) + +#define __get_buffers(X...) \ +do { \ + EVAL(__get_buffer, X); \ +} while (0) + +#define __put_buffers(X, Y...) (void)&(X) + +#define get_buffers(X...) \ +do { \ + preempt_disable(); \ + __get_buffers(X); \ +} while (0) + +#define put_buffers(X, Y...) \ +do { \ + __put_buffers(X, Y); \ + preempt_enable(); \ +} while (0) #endif /* __AA_PATH_H */ --- linux-raspi2-4.2.0.orig/security/apparmor/include/perms.h +++ linux-raspi2-4.2.0/security/apparmor/include/perms.h @@ -0,0 +1,174 @@ +/* + * AppArmor security module + * + * This file contains AppArmor basic permission sets definitions. + * + * Copyright 2013 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_PERM_H +#define __AA_PERM_H + +#include +#include "label.h" + +#define AA_MAY_EXEC MAY_EXEC +#define AA_MAY_WRITE MAY_WRITE +#define AA_MAY_READ MAY_READ +#define AA_MAY_APPEND MAY_APPEND + +#define AA_MAY_CREATE 0x0010 +#define AA_MAY_DELETE 0x0020 +#define AA_MAY_OPEN 0x0040 +#define AA_MAY_RENAME 0x0080 /* pair */ + +#define AA_MAY_SETATTR 0x0100 /* meta write */ +#define AA_MAY_GETATTR 0x0200 /* meta read */ +#define AA_MAY_SETCRED 0x0400 /* security cred/attr */ +#define AA_MAY_GETCRED 0x0800 + +#define AA_MAY_CHMOD 0x1000 /* pair */ +#define AA_MAY_CHOWN 0x2000 /* pair */ +#define AA_MAY_CHGRP 0x4000 /* pair */ +#define AA_MAY_LOCK 0x8000 /* LINK_SUBSET overlaid */ + +#define AA_EXEC_MMAP 0x00010000 +#define AA_MAY_MPROT 0x00020000 /* extend conditions */ +#define AA_MAY_LINK 0x00040000 /* pair */ +#define AA_MAY_SNAPSHOT 0x00080000 /* pair */ + +#define AA_MAY_DELEGATE +#define AA_CONT_MATCH 0x08000000 + +#define AA_MAY_STACK 0x10000000 +#define AA_MAY_ONEXEC 0x20000000 /* either stack or change_profile */ +#define AA_MAY_CHANGE_PROFILE 0x40000000 +#define AA_MAY_CHANGEHAT 0x80000000 + +#define AA_LINK_SUBSET AA_MAY_LOCK /* overlaid */ + + +#define PERMS_CHRS_MASK (MAY_READ | MAY_WRITE | AA_MAY_CREATE | \ + AA_MAY_DELETE | AA_MAY_LINK | AA_MAY_LOCK | \ + AA_MAY_EXEC | AA_EXEC_MMAP | AA_MAY_APPEND) + +#define PERMS_NAMES_MASK (PERMS_CHRS_MASK | AA_MAY_OPEN | AA_MAY_RENAME | \ + AA_MAY_SETATTR | AA_MAY_GETATTR | AA_MAY_SETCRED | \ + AA_MAY_GETCRED | AA_MAY_CHMOD | AA_MAY_CHOWN | \ + AA_MAY_CHGRP | AA_MAY_MPROT | AA_MAY_SNAPSHOT | \ + AA_MAY_STACK | AA_MAY_ONEXEC | \ + AA_MAY_CHANGE_PROFILE | AA_MAY_CHANGEHAT) + +extern const char aa_file_perm_chrs[]; +extern const char *aa_file_perm_names[]; + + +struct aa_perms { + u32 allow; + u32 audit; /* set only when allow is set */ + + u32 deny; /* explicit deny, or conflict if allow also set */ + u32 quiet; /* set only when ~allow | deny */ + u32 kill; /* set only when ~allow | deny */ + u32 stop; /* set only when ~allow | deny */ + + u32 complain; /* accumulates only used when ~allow & ~deny */ + u32 cond; /* set only when ~allow and ~deny */ + + u32 hide; /* set only when ~allow | deny */ + u32 prompt; /* accumulates only used when ~allow & ~deny */ + + /* Reserved: + * u32 subtree; / * set only when allow is set * / + */ +}; + +#define ALL_PERMS_MASK 0xffffffff + +#define aa_perms_clear(X) memset((X), 0, sizeof(*(X))); +#define aa_perms_all(X) \ + do { \ + aa_perms_clear(X); \ + (X)->allow = ALL_PERMS_MASK; \ + /* the following are only used for denials */ \ + (X)->quiet = ALL_PERMS_MASK; \ + (X)->hide = ALL_PERMS_MASK; \ + } while (0) + +#define xcheck(FN1, FN2) \ +({ \ + int e, error = FN1; \ + e = FN2; \ + if (e) \ + error = e; \ + error; \ +}) + + +/* TODO: update for labels pointing to labels instead of profiles +* Note: this only works for profiles from a single namespace +*/ + +#define xcheck_profile_label(P, L, FN, args...) \ +({ \ + struct aa_profile *__p2; \ + fn_for_each((L), __p2, FN((P), __p2, args)); \ +}) + +#define xcheck_ns_labels(L1, L2, FN, args...) \ +({ \ + struct aa_profile *__p1; \ + fn_for_each((L1), __p1, FN(__p1, (L2), args)); \ +}) + +/* todo: fix to handle multiple namespaces */ +#define xcheck_labels(L1, L2, FN, args...) \ + xcheck_ns_labels((L1), (L2), FN, args) + +/* Do the cross check but applying FN at the profiles level */ +#define xcheck_labels_profiles(L1, L2, FN, args...) \ + xcheck_ns_labels((L1), (L2), xcheck_profile_label, (FN), args) + + +#define FINAL_CHECK true + +void aa_perm_mask_to_str(char *str, const char *chrs, u32 mask); +void aa_audit_perm_names(struct audit_buffer *ab, const char **names, u32 mask); +void aa_audit_perm_mask(struct audit_buffer *ab, u32 mask, const char *chrs, + u32 chrsmask, const char **names, u32 namesmask); +void aa_apply_modes_to_perms(struct aa_profile *profile, + struct aa_perms *perms); +void aa_compute_perms(struct aa_dfa *dfa, unsigned int state, + struct aa_perms *perms); +void aa_perms_accum(struct aa_perms *accum, struct aa_perms *addend); +void aa_perms_accum_raw(struct aa_perms *accum, struct aa_perms *addend); +void aa_profile_match_label(struct aa_profile *profile, const char *label, + int type, struct aa_perms *perms); +int aa_profile_label_perm(struct aa_profile *profile, struct aa_profile *target, + u32 request, int type, u32 *deny, + struct common_audit_data *sa); +int aa_check_perms(struct aa_profile *profile, struct aa_perms *perms, + u32 request, struct common_audit_data *sa, + void (*cb) (struct audit_buffer *, void *)); +const char *aa_peer_name(struct aa_profile *peer); + + +static inline int aa_xlabel_perm(struct aa_profile *profile, + struct aa_profile *target, + int type, u32 request, u32 reverse, + u32 * deny, struct common_audit_data *sa) +{ + /* TODO: ??? 2nd aa_profile_label_perm needs to reverse perms */ + return xcheck(aa_profile_label_perm(profile, target, request, type, + deny, sa), + aa_profile_label_perm(target, profile, request /*??*/, type, + deny, sa)); +} + + +#endif /* __AA_PERM_H */ --- linux-raspi2-4.2.0.orig/security/apparmor/include/policy.h +++ linux-raspi2-4.2.0/security/apparmor/include/policy.h @@ -27,8 +27,11 @@ #include "capability.h" #include "domain.h" #include "file.h" +#include "label.h" +#include "net.h" #include "resource.h" +extern const char *aa_hidden_ns_name; extern const char *const aa_profile_mode_names[]; #define APPARMOR_MODE_NAMES_MAX_INDEX 4 @@ -40,9 +43,9 @@ #define KILL_MODE(_profile) PROFILE_MODE((_profile), APPARMOR_KILL) -#define PROFILE_IS_HAT(_profile) ((_profile)->flags & PFLAG_HAT) +#define PROFILE_IS_HAT(_profile) ((_profile)->label.flags & FLAG_HAT) -#define PROFILE_INVALID(_profile) ((_profile)->flags & PFLAG_INVALID) +#define PROFILE_INVALID(_profile) ((_profile)->label.flags & FLAG_INVALID) #define on_list_rcu(X) (!list_empty(X) && (X)->prev != LIST_POISON2) @@ -59,32 +62,18 @@ APPARMOR_UNCONFINED, /* profile set to unconfined */ }; -enum profile_flags { - PFLAG_HAT = 1, /* profile is a hat */ - PFLAG_NULL = 4, /* profile is null learning profile */ - PFLAG_IX_ON_NAME_ERROR = 8, /* fallback to ix on name lookup fail */ - PFLAG_IMMUTABLE = 0x10, /* don't allow changes/replacement */ - PFLAG_USER_DEFINED = 0x20, /* user based profile - lower privs */ - PFLAG_NO_LIST_REF = 0x40, /* list doesn't keep profile ref */ - PFLAG_OLD_NULL_TRANS = 0x100, /* use // as the null transition */ - PFLAG_INVALID = 0x200, /* profile replaced/removed */ - PFLAG_NS_COUNT = 0x400, /* carries NS ref count */ - - /* These flags must correspond with PATH_flags */ - PFLAG_MEDIATE_DELETED = 0x10000, /* mediate instead delegate deleted */ -}; struct aa_profile; /* struct aa_policy - common part of both namespaces and profiles * @name: name of the object - * @hname - The hierarchical name + * @hname - The hierarchical name, NOTE: is .name of struct counted_str * @list: list policy object is on * @profiles: head of the profiles list contained in the object */ struct aa_policy { - char *name; - char *hname; + const char *name; + __counted char *hname; struct list_head list; struct list_head profiles; }; @@ -136,6 +125,8 @@ struct list_head sub_ns; atomic_t uniq_null; long uniq_id; + int level; + struct aa_labelset labels; struct dentry *dents[AAFS_NS_SIZEOF]; }; @@ -151,31 +142,24 @@ }; -struct aa_replacedby { - struct kref count; - struct aa_profile __rcu *profile; -}; - - /* struct aa_profile - basic confinement data * @base - base components of the profile (name, refcount, lists, lock ...) - * @count: reference count of the obj - * @rcu: rcu head used when removing from @list + * @label - label this profile is an extension of * @parent: parent of profile * @ns: namespace the profile is in - * @replacedby: is set to the profile that replaced this profile * @rename: optional profile name that this profile renamed * @attach: human readable attachment string * @xmatch: optional extended matching for unconfined executables names * @xmatch_len: xmatch prefix len, used to determine xmatch priority * @audit: the auditing mode of the profile * @mode: the enforcement mode of the profile - * @flags: flags controlling profile behavior * @path_flags: flags controlling path generation behavior + * @disconnected: what to prepend if attach_disconnected is specified * @size: the memory consumed by this profiles rules * @policy: general match rules governing policy * @file: The set of rules governing basic file access and domain transitions * @caps: capabilities for the profile + * @net: network controls for the profile * @rlimits: rlimits for the profile * * @dents: dentries for the profiles file entries in apparmorfs @@ -197,12 +181,10 @@ */ struct aa_profile { struct aa_policy base; - struct kref count; - struct rcu_head rcu; + struct aa_label label; struct aa_profile __rcu *parent; struct aa_namespace *ns; - struct aa_replacedby *replacedby; const char *rename; const char *attach; @@ -210,13 +192,14 @@ int xmatch_len; enum audit_mode audit; long mode; - long flags; u32 path_flags; + const char *disconnected; int size; struct aa_policydb policy; struct aa_file_rules file; struct aa_caps caps; + struct aa_net net; struct aa_rlimit rlimits; unsigned char *hash; @@ -227,25 +210,33 @@ extern struct aa_namespace *root_ns; extern enum profile_mode aa_g_profile_mode; +#define profiles_ns(P) ((P)->ns) void aa_add_profile(struct aa_policy *common, struct aa_profile *profile); bool aa_ns_visible(struct aa_namespace *curr, struct aa_namespace *view); const char *aa_ns_name(struct aa_namespace *parent, struct aa_namespace *child); +void aa_free_namespace(struct aa_namespace *ns); int aa_alloc_root_ns(void); void aa_free_root_ns(void); void aa_free_namespace_kref(struct kref *kref); struct aa_namespace *aa_find_namespace(struct aa_namespace *root, const char *name); +struct aa_namespace *aa_findn_namespace(struct aa_namespace *root, + const char *name, size_t n); +struct aa_label *aa_setup_default_label(void); -void aa_free_replacedby_kref(struct kref *kref); struct aa_profile *aa_alloc_profile(const char *name); struct aa_profile *aa_new_null_profile(struct aa_profile *parent, int hat); void aa_free_profile(struct aa_profile *profile); void aa_free_profile_kref(struct kref *kref); struct aa_profile *aa_find_child(struct aa_profile *parent, const char *name); +struct aa_profile *aa_lookupn_profile(struct aa_namespace *ns, + const char *hname, size_t n); struct aa_profile *aa_lookup_profile(struct aa_namespace *ns, const char *name); +struct aa_profile *aa_fqlookupn_profile(struct aa_label *base, char *fqname, + size_t n); struct aa_profile *aa_match_profile(struct aa_namespace *ns, const char *name); ssize_t aa_replace_profiles(void *udata, size_t size, bool noreplace); @@ -254,7 +245,40 @@ #define PROF_ADD 1 #define PROF_REPLACE 0 -#define unconfined(X) ((X)->mode == APPARMOR_UNCONFINED) +#define profile_unconfined(X) ((X)->mode == APPARMOR_UNCONFINED) + +/** + * aa_get_newest_profile - simple wrapper fn to wrap the label version + * @p: profile (NOT NULL) + * + * Returns refcount to newest version of the profile (maybe @p) + * + * Requires: @p must be held with a valid refcount + */ +static inline struct aa_profile *aa_get_newest_profile(struct aa_profile *p) +{ + return labels_profile(aa_get_newest_label(&p->label)); +} + +#define PROFILE_MEDIATES(P, T) ((P)->policy.start[(T)]) +/* safe version of POLICY_MEDIATES for full range input */ +static inline unsigned int PROFILE_MEDIATES_SAFE(struct aa_profile *profile, + unsigned char class) +{ + if (profile->policy.dfa) + return aa_dfa_match_len(profile->policy.dfa, + profile->policy.start[0], &class, 1); + return 0; +} + +static inline unsigned int PROFILE_MEDIATES_AF(struct aa_profile *profile, + u16 AF) { + unsigned int state = PROFILE_MEDIATES(profile, AA_CLASS_NET); + u16 be_af = cpu_to_be16(AF); + if (!state) + return 0; + return aa_dfa_match_len(profile->policy.dfa, state, (char *) &be_af, 2); +} static inline struct aa_profile *aa_deref_parent(struct aa_profile *p) @@ -273,7 +297,7 @@ static inline struct aa_profile *aa_get_profile(struct aa_profile *p) { if (p) - kref_get(&(p->count)); + kref_get(&(p->label.count)); return p; } @@ -287,7 +311,7 @@ */ static inline struct aa_profile *aa_get_profile_not0(struct aa_profile *p) { - if (p && kref_get_not0(&p->count)) + if (p && kref_get_not0(&p->label.count)) return p; return NULL; @@ -307,65 +331,20 @@ rcu_read_lock(); do { c = rcu_dereference(*p); - } while (c && !kref_get_not0(&c->count)); + } while (c && !kref_get_not0(&c->label.count)); rcu_read_unlock(); return c; } /** - * aa_get_newest_profile - find the newest version of @profile - * @profile: the profile to check for newer versions of - * - * Returns: refcounted newest version of @profile taking into account - * replacement, renames and removals - * return @profile. - */ -static inline struct aa_profile *aa_get_newest_profile(struct aa_profile *p) -{ - if (!p) - return NULL; - - if (PROFILE_INVALID(p)) - return aa_get_profile_rcu(&p->replacedby->profile); - - return aa_get_profile(p); -} - -/** * aa_put_profile - decrement refcount on profile @p * @p: profile (MAYBE NULL) */ static inline void aa_put_profile(struct aa_profile *p) { if (p) - kref_put(&p->count, aa_free_profile_kref); -} - -static inline struct aa_replacedby *aa_get_replacedby(struct aa_replacedby *p) -{ - if (p) - kref_get(&(p->count)); - - return p; -} - -static inline void aa_put_replacedby(struct aa_replacedby *p) -{ - if (p) - kref_put(&p->count, aa_free_replacedby_kref); -} - -/* requires profile list write lock held */ -static inline void __aa_update_replacedby(struct aa_profile *orig, - struct aa_profile *new) -{ - struct aa_profile *tmp; - tmp = rcu_dereference_protected(orig->replacedby->profile, - mutex_is_locked(&orig->ns->lock)); - rcu_assign_pointer(orig->replacedby->profile, aa_get_profile(new)); - orig->flags |= PFLAG_INVALID; - aa_put_profile(tmp); + kref_put(&p->label.count, aa_label_kref); } /** @@ -405,4 +384,30 @@ bool aa_may_manage_policy(int op); + +#define LOCAL_VEC_ENTRIES 8 +#define DEFINE_PROFILE_VEC(V, T) \ + struct aa_profile *(T)[LOCAL_VEC_ENTRIES]; \ + struct aa_profile **(V) + +#define aa_setup_profile_vec(V, T, L) \ +({ \ + if ((L) > LOCAL_VEC_ENTRIES) \ + (V) = kmalloc(sizeof(struct aa_profile *) * (L), GFP_KERNEL);\ + else \ + (V) = (T); \ + (V) ? 0 : -ENOMEM; \ +}) + +static inline void aa_cleanup_profile_vec(struct aa_profile **vec, \ + struct aa_profile **tmp, int len) \ +{ \ + int i; \ + for (i = 0; i < len; i++) \ + aa_put_profile(vec[i]); \ + if (vec != tmp) \ + kfree(vec); \ +} + + #endif /* __AA_POLICY_H */ --- linux-raspi2-4.2.0.orig/security/apparmor/include/procattr.h +++ linux-raspi2-4.2.0/security/apparmor/include/procattr.h @@ -18,7 +18,7 @@ #define AA_DO_TEST 1 #define AA_ONEXEC 1 -int aa_getprocattr(struct aa_profile *profile, char **string); +int aa_getprocattr(struct aa_label *label, char **string); int aa_setprocattr_changehat(char *args, size_t size, int test); int aa_setprocattr_changeprofile(char *fqname, bool onexec, int test); --- linux-raspi2-4.2.0.orig/security/apparmor/include/resource.h +++ linux-raspi2-4.2.0/security/apparmor/include/resource.h @@ -37,10 +37,10 @@ extern struct aa_fs_entry aa_fs_entry_rlimit[]; int aa_map_resource(int resource); -int aa_task_setrlimit(struct aa_profile *profile, struct task_struct *, +int aa_task_setrlimit(struct aa_label *label, struct task_struct *, unsigned int resource, struct rlimit *new_rlim); -void __aa_transition_rlimits(struct aa_profile *old, struct aa_profile *new); +void __aa_transition_rlimits(struct aa_label *old, struct aa_label *new); static inline void aa_free_rlimit_rules(struct aa_rlimit *rlims) { --- linux-raspi2-4.2.0.orig/security/apparmor/include/sig_names.h +++ linux-raspi2-4.2.0/security/apparmor/include/sig_names.h @@ -0,0 +1,95 @@ +#include + +#define SIGUNKNOWN 0 +#define MAXMAPPED_SIG 35 +/* provide a mapping of arch signal to internal signal # for mediation + * those that are always an alias SIGCLD for SIGCLHD and SIGPOLL for SIGIO + * map to the same entry those that may/or may not get a separate entry + */ +static const int sig_map[MAXMAPPED_SIG] = { + [0] = MAXMAPPED_SIG, /* existance test */ + [SIGHUP] = 1, + [SIGINT] = 2, + [SIGQUIT] = 3, + [SIGILL] = 4, + [SIGTRAP] = 5, /* -, 5, - */ + [SIGABRT] = 6, /* SIGIOT: -, 6, - */ + [SIGBUS] = 7, /* 10, 7, 10 */ + [SIGFPE] = 8, + [SIGKILL] = 9, + [SIGUSR1] = 10, /* 30, 10, 16 */ + [SIGSEGV] = 11, + [SIGUSR2] = 12, /* 31, 12, 17 */ + [SIGPIPE] = 13, + [SIGALRM] = 14, + [SIGTERM] = 15, + [SIGSTKFLT] = 16, /* -, 16, - */ + [SIGCHLD] = 17, /* 20, 17, 18. SIGCHLD -, -, 18 */ + [SIGCONT] = 18, /* 19, 18, 25 */ + [SIGSTOP] = 19, /* 17, 19, 23 */ + [SIGTSTP] = 20, /* 18, 20, 24 */ + [SIGTTIN] = 21, /* 21, 21, 26 */ + [SIGTTOU] = 22, /* 22, 22, 27 */ + [SIGURG] = 23, /* 16, 23, 21 */ + [SIGXCPU] = 24, /* 24, 24, 30 */ + [SIGXFSZ] = 25, /* 25, 25, 31 */ + [SIGVTALRM] = 26, /* 26, 26, 28 */ + [SIGPROF] = 27, /* 27, 27, 29 */ + [SIGWINCH] = 28, /* 28, 28, 20 */ + [SIGIO] = 29, /* SIGPOLL: 23, 29, 22 */ + [SIGPWR] = 30, /* 29, 30, 19. SIGINFO 29, -, - */ +#ifdef SIGSYS + [SIGSYS] = 31, /* 12, 31, 12. often SIG LOST/UNUSED */ +#endif +#ifdef SIGEMT + [SIGEMT] = 32, /* 7, - , 7 */ +#endif +#if defined(SIGLOST) && SIGPWR != SIGLOST /* sparc */ + [SIGLOST] = 33, /* unused on Linux */ +#endif +#if defined(SIGLOST) && defined(SIGSYS) && SIGLOST != SIGSYS + [SIGUNUSED] = 34, /* -, 31, - */ +#endif +}; + +/* this table is ordered post sig_map[sig] mapping */ +static const char *const sig_names[MAXMAPPED_SIG + 1] = { + "unknown", + "hup", + "int", + "quit", + "ill", + "trap", + "abrt", + "bus", + "fpe", + "kill", + "usr1", + "segv", + "usr2", + "pipe", + "alrm", + "term", + "stkflt", + "chld", + "cont", + "stop", + "stp", + "ttin", + "ttou", + "urg", + "xcpu", + "xfsz", + "vtalrm", + "prof", + "winch", + "io", + "pwr", + "sys", + "emt", + "lost", + "unused", + + "exists", /* always last existance test mapped to MAXMAPPED_SIG */ +}; + --- linux-raspi2-4.2.0.orig/security/apparmor/ipc.c +++ linux-raspi2-4.2.0/security/apparmor/ipc.c @@ -4,7 +4,7 @@ * This file contains AppArmor ipc mediation * * Copyright (C) 1998-2008 Novell/SUSE - * Copyright 2009-2010 Canonical Ltd. + * Copyright 2009-2013 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 @@ -20,92 +20,201 @@ #include "include/context.h" #include "include/policy.h" #include "include/ipc.h" +#include "include/sig_names.h" + +/** + * audit_ptrace_mask - convert mask to permission string + * @buffer: buffer to write string to (NOT NULL) + * @mask: permission mask to convert + */ +static void audit_ptrace_mask(struct audit_buffer *ab, u32 mask) +{ + switch (mask) { + case MAY_READ: + audit_log_string(ab, "read"); + break; + case MAY_WRITE: + audit_log_string(ab, "trace"); + break; + case AA_MAY_BE_READ: + audit_log_string(ab, "readby"); + break; + case AA_MAY_BE_TRACED: + audit_log_string(ab, "tracedby"); + break; + } +} /* call back to audit ptrace fields */ -static void audit_cb(struct audit_buffer *ab, void *va) +static void audit_ptrace_cb(struct audit_buffer *ab, void *va) { struct common_audit_data *sa = va; - audit_log_format(ab, " target="); - audit_log_untrustedstring(ab, sa->aad->target); + + if (aad(sa)->request & AA_PTRACE_PERM_MASK) { + audit_log_format(ab, " requested_mask="); + audit_ptrace_mask(ab, aad(sa)->request); + + if (aad(sa)->denied & AA_PTRACE_PERM_MASK) { + audit_log_format(ab, " denied_mask="); + audit_ptrace_mask(ab, aad(sa)->denied); + } + } + audit_log_format(ab, " peer="); + audit_log_untrustedstring(ab, aad(sa)->target); } -/** - * aa_audit_ptrace - do auditing for ptrace - * @profile: profile being enforced (NOT NULL) - * @target: profile being traced (NOT NULL) - * @error: error condition - * - * Returns: %0 or error code - */ -static int aa_audit_ptrace(struct aa_profile *profile, - struct aa_profile *target, int error) +/* TODO: conditionals */ +static int profile_ptrace_perm(struct aa_profile *profile, + struct aa_profile *peer, u32 request, + struct common_audit_data *sa) { - struct common_audit_data sa; - struct apparmor_audit_data aad = {0,}; - sa.type = LSM_AUDIT_DATA_NONE; - sa.aad = &aad; - aad.op = OP_PTRACE; - aad.target = target; - aad.error = error; + struct aa_perms perms; - return aa_audit(AUDIT_APPARMOR_AUTO, profile, GFP_ATOMIC, &sa, - audit_cb); + /* need because of peer in cross check */ + if (profile_unconfined(profile) || + !PROFILE_MEDIATES(profile, AA_CLASS_PTRACE)) + return 0; + + aad(sa)->target = peer->base.hname; + aa_profile_match_label(profile, aa_peer_name(peer), AA_CLASS_PTRACE, + &perms); + aa_apply_modes_to_perms(profile, &perms); + return aa_check_perms(profile, &perms, request, sa, audit_ptrace_cb); +} + +static int cross_ptrace_perm(struct aa_profile *tracer, + struct aa_profile *tracee, u32 request, + struct common_audit_data *sa) +{ + if (PROFILE_MEDIATES(tracer, AA_CLASS_PTRACE)) + return xcheck(profile_ptrace_perm(tracer, tracee, request, sa), + profile_ptrace_perm(tracee, tracer, + request << PTRACE_PERM_SHIFT, + sa)); + /* policy uses the old style capability check for ptrace */ + if (profile_unconfined(tracer) || tracer == tracee) + return 0; + + aad(sa)->label = &tracer->label; + aad(sa)->target = tracee->base.hname; + aad(sa)->request = 0; + aad(sa)->error = aa_capable(&tracer->label, CAP_SYS_PTRACE, 1); + return aa_audit(AUDIT_APPARMOR_AUTO, tracer, sa, audit_ptrace_cb); } /** * aa_may_ptrace - test if tracer task can trace the tracee - * @tracer: profile of the task doing the tracing (NOT NULL) - * @tracee: task to be traced - * @mode: whether PTRACE_MODE_READ || PTRACE_MODE_ATTACH + * @tracer: label of the task doing the tracing (NOT NULL) + * @tracee: task label to be traced + * @request: permission request * * Returns: %0 else error code if permission denied or error */ -int aa_may_ptrace(struct aa_profile *tracer, struct aa_profile *tracee, - unsigned int mode) +int aa_may_ptrace(struct aa_label *tracer, struct aa_label *tracee, + u32 request) { - /* TODO: currently only based on capability, not extended ptrace - * rules, - * Test mode for PTRACE_MODE_READ || PTRACE_MODE_ATTACH - */ + DEFINE_AUDIT_DATA(sa, LSM_AUDIT_DATA_NONE, OP_PTRACE); - if (unconfined(tracer) || tracer == tracee) - return 0; - /* log this capability request */ - return aa_capable(tracer, CAP_SYS_PTRACE, 1); + return xcheck_labels_profiles(tracer, tracee, cross_ptrace_perm, + request, &sa); +} + + +static inline int map_signal_num(int sig) +{ + if (sig > SIGRTMAX) + return SIGUNKNOWN; + else if (sig >= SIGRTMIN) + return sig - SIGRTMIN + 128; /* rt sigs mapped to 128 */ + else if (sig <= MAXMAPPED_SIG) + return sig_map[sig]; + return SIGUNKNOWN; } /** - * aa_ptrace - do ptrace permission check and auditing - * @tracer: task doing the tracing (NOT NULL) - * @tracee: task being traced (NOT NULL) - * @mode: ptrace mode either PTRACE_MODE_READ || PTRACE_MODE_ATTACH - * - * Returns: %0 else error code if permission denied or error + * audit_file_mask - convert mask to permission string + * @buffer: buffer to write string to (NOT NULL) + * @mask: permission mask to convert */ -int aa_ptrace(struct task_struct *tracer, struct task_struct *tracee, - unsigned int mode) +static void audit_signal_mask(struct audit_buffer *ab, u32 mask) { - /* - * tracer can ptrace tracee when - * - tracer is unconfined || - * - tracer is in complain mode - * - tracer has rules allowing it to trace tracee currently this is: - * - confined by the same profile || - * - tracer profile has CAP_SYS_PTRACE - */ - - struct aa_profile *tracer_p = aa_get_task_profile(tracer); - int error = 0; - - if (!unconfined(tracer_p)) { - struct aa_profile *tracee_p = aa_get_task_profile(tracee); + if (mask & MAY_READ) + audit_log_string(ab, "receive"); + if (mask & MAY_WRITE) + audit_log_string(ab, "send"); +} - error = aa_may_ptrace(tracer_p, tracee_p, mode); - error = aa_audit_ptrace(tracer_p, tracee_p, error); +/** + * audit_cb - call back for signal specific audit fields + * @ab: audit_buffer (NOT NULL) + * @va: audit struct to audit values of (NOT NULL) + */ +static void audit_signal_cb(struct audit_buffer *ab, void *va) +{ + struct common_audit_data *sa = va; - aa_put_profile(tracee_p); + if (aad(sa)->request & AA_SIGNAL_PERM_MASK) { + audit_log_format(ab, " requested_mask="); + audit_signal_mask(ab, aad(sa)->request); + if (aad(sa)->denied & AA_SIGNAL_PERM_MASK) { + audit_log_format(ab, " denied_mask="); + audit_signal_mask(ab, aad(sa)->denied); + } } - aa_put_profile(tracer_p); + if (aad(sa)->signal <= MAXMAPPED_SIG) + audit_log_format(ab, " signal=%s", sig_names[aad(sa)->signal]); + else + audit_log_format(ab, " signal=rtmin+%d", + aad(sa)->signal - 128); + audit_log_format(ab, " peer="); + audit_log_untrustedstring(ab, aad(sa)->target); +} + +/* TODO: update to handle compound name&name2, conditionals */ +static void profile_match_signal(struct aa_profile *profile, const char *label, + int signal, struct aa_perms *perms) +{ + unsigned int state; + if (profile->policy.dfa) { + /* TODO: secondary cache check */ + state = aa_dfa_next(profile->policy.dfa, + profile->policy.start[AA_CLASS_SIGNAL], + signal); + state = aa_dfa_match(profile->policy.dfa, state, label); + aa_compute_perms(profile->policy.dfa, state, perms); + } else + memset(perms, 0, sizeof(*perms)); +} - return error; +static int profile_signal_perm(struct aa_profile *profile, + struct aa_profile *peer, u32 request, + struct common_audit_data *sa) +{ + struct aa_perms perms; + + if (profile_unconfined(profile) || + !PROFILE_MEDIATES(profile, AA_CLASS_SIGNAL)) + return 0; + + aad(sa)->target = peer->base.hname; + profile_match_signal(profile, aa_peer_name(peer), aad(sa)->signal, + &perms); + aa_apply_modes_to_perms(profile, &perms); + return aa_check_perms(profile, &perms, request, sa, audit_signal_cb); +} + +static int aa_signal_cross_perm(struct aa_profile *sender, + struct aa_profile *target, + struct common_audit_data *sa) +{ + return xcheck(profile_signal_perm(sender, target, MAY_WRITE, sa), + profile_signal_perm(target, sender, MAY_READ, sa)); +} + +int aa_may_signal(struct aa_label *sender, struct aa_label *target, int sig) +{ + DEFINE_AUDIT_DATA(sa, LSM_AUDIT_DATA_NONE, OP_SIGNAL); + aad(&sa)->signal = map_signal_num(sig); + return xcheck_labels_profiles(sender, target, aa_signal_cross_perm, + &sa); } --- linux-raspi2-4.2.0.orig/security/apparmor/label.c +++ linux-raspi2-4.2.0/security/apparmor/label.c @@ -0,0 +1,1844 @@ +/* + * AppArmor security module + * + * This file contains AppArmor label definitions + * + * Copyright 2013 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 "include/apparmor.h" +#include "include/label.h" +#include "include/policy.h" +#include "include/sid.h" + + +/* + * the aa_label represents the set of profiles confining an object + * + * Labels maintain a reference count to the set of pointers they reference + * Labels are ref counted by + * tasks and object via the security field/security context off the field + * code - will take a ref count on a label if it needs the label + * beyond what is possible with an rcu_read_lock. + * profiles - each profile is a label + * sids - a pinned sid will keep a refcount of the label it is + * referencing + * objects - inode, files, sockets, ... + * + * Labels are not ref counted by the label set, so they maybe removed and + * freed when no longer in use. + * + */ + +static void free_replacedby(struct aa_replacedby *r) +{ + if (r) { + /* r->label will not updated any more as r is dead */ + aa_put_label(rcu_dereference_protected(r->label, true)); + kzfree(r); + } +} + +void aa_free_replacedby_kref(struct kref *kref) +{ + struct aa_replacedby *r = container_of(kref, struct aa_replacedby, + count); + free_replacedby(r); +} + +struct aa_replacedby *aa_alloc_replacedby(struct aa_label *l) +{ + struct aa_replacedby *r; + + r = kzalloc(sizeof(struct aa_replacedby), GFP_KERNEL); + if (r) { + kref_init(&r->count); + rcu_assign_pointer(r->label, aa_get_label(l)); + } + return r; +} + +/* requires profile list write lock held */ +void __aa_update_replacedby(struct aa_label *orig, struct aa_label *new) +{ + struct aa_label *tmp; + + AA_BUG(!orig); + AA_BUG(!new); + AA_BUG(!mutex_is_locked(&labels_ns(orig)->lock)); + + tmp = rcu_dereference_protected(orig->replacedby->label, + &labels_ns(orig)->lock); + rcu_assign_pointer(orig->replacedby->label, aa_get_label(new)); + orig->flags |= FLAG_INVALID; + aa_put_label(tmp); +} + +/* helper fn for label_for_each_confined */ +int aa_label_next_confined(struct aa_label *l, int i) +{ + AA_BUG(!l); + AA_BUG(i < 0); + + for (; i < l->size; i++) { + if (!profile_unconfined(l->ent[i])) + return i; + } + + return i; +} + +#if 0 +static int label_profile_pos(struct aa_label *l, struct aa_profile *profile) +{ + struct aa_profile *p; + struct label_it i; + + AA_BUG(!profile); + AA_BUG(!l); + + label_for_each(i, l, p) { + if (p == profile) + return i.i; + } + + return -1; +} +#endif + +#if 0 +static bool profile_in_label(struct aa_profile *profile, struct aa_label *l) +{ + return label_profile_pos(l, profile) != -1; +} +#endif + +static bool label_profiles_unconfined(struct aa_label *label) +{ + struct aa_profile *profile; + struct label_it i; + + AA_BUG(!label); + + label_for_each(i, label, profile) { + if (!profile_unconfined(profile)) + return false; + } + + return true; +} + +static int profile_cmp(struct aa_profile *a, struct aa_profile *b); +/** + * aa_label_next_not_in_set - return the next profile of @sub not in @set + * @I: label iterator + * @set: label to test against + * @sub: label to if is subset of @set + * + * Returns: profile in @sub that is not in @set, with iterator set pos after + * else NULL if @sub is a subset of @set + */ +struct aa_profile * aa_label_next_not_in_set(struct label_it *I, + struct aa_label *set, + struct aa_label *sub) +{ + AA_BUG(!set); + AA_BUG(!I); + AA_BUG(I->i < 0); + AA_BUG(I->i > set->size); + AA_BUG(!sub); + AA_BUG(I->j < 0); + AA_BUG(I->j > sub->size); + + while (I->j < sub->size && I->i < set->size) { + int res = profile_cmp(sub->ent[I->j], set->ent[I->i]); + if (res == 0) { + (I->j)++; + (I->i)++; + } else if (res > 0) + (I->i)++; + else + return sub->ent[(I->j)++]; + } + + if (I->j < sub->size) + return sub->ent[(I->j)++]; + + return NULL; +} + +/** + * aa_label_is_subset - test if @sub is a subset of @set + * @set: label to test against + * @sub: label to test if is subset of @set + * + * Returns: true if @sub is subset of @set + * else false + */ +bool aa_label_is_subset(struct aa_label *set, struct aa_label *sub) +{ + struct label_it i = { }; + + AA_BUG(!set); + AA_BUG(!sub); + + if (sub == set) + return true; + + return aa_label_next_not_in_set(&i, set, sub) == NULL; +} + +void aa_label_destroy(struct aa_label *label) +{ + AA_BUG(!label); + + if (label_invalid(label)) + labelsetstats_dec(labels_set(label), invalid); + + if (!label_isprofile(label)) { + struct aa_profile *profile; + struct label_it i; + + aa_put_str(label->hname); + + label_for_each(i, label, profile) + aa_put_profile(profile); + } + + aa_free_sid(label->sid); + aa_put_replacedby(label->replacedby); +} + +void aa_label_free(struct aa_label *label) +{ + if (!label) + return; + + aa_label_destroy(label); + labelstats_inc(freed); + kzfree(label); +} + +static void label_free_rcu(struct rcu_head *head) +{ + struct aa_label *l = container_of(head, struct aa_label, rcu); + + if (l->flags & FLAG_NS_COUNT) + aa_free_namespace(labels_ns(l)); + else if (label_isprofile(l)) + aa_free_profile(labels_profile(l)); + else + aa_label_free(l); +} + +bool aa_label_remove(struct aa_labelset *ls, struct aa_label *label); +void aa_label_kref(struct kref *kref) +{ + struct aa_label *l = container_of(kref, struct aa_label, count); + struct aa_namespace *ns = labels_ns(l); + + if (!ns) { + /* never live, no rcu callback needed, just using the fn */ + label_free_rcu(&l->rcu); + return; + } + + (void) aa_label_remove(&ns->labels, l); + + /* TODO: if compound label and not invalid add to reclaim cache */ + call_rcu(&l->rcu, label_free_rcu); +} + +bool aa_label_init(struct aa_label *label, int size) +{ + AA_BUG(!label); + AA_BUG(size < 1); + + label->sid = aa_alloc_sid(); + if (label->sid == AA_SID_INVALID) + return false; + + label->size = size; /* doesn't include null */ + label->ent[size] = NULL; /* null terminate */ + kref_init(&label->count); + RB_CLEAR_NODE(&label->node); + + return true; +} + +/** + * aa_label_alloc - allocate a label with a profile vector of @size length + * @size: size of profile vector in the label + * @gfp: memory allocation type + * + * Returns: new label + * else NULL if failed + */ +struct aa_label *aa_label_alloc(int size, gfp_t gfp) +{ + struct aa_label *label; + + AA_BUG(size < 1); + + /* vector: size - 2 (size of array in label struct) + 1 for null */ + label = kzalloc(sizeof(*label) + sizeof(struct aa_label *) * (size - 1), + gfp); + AA_DEBUG("%s (%p)\n", __func__, label); + if (!label) + goto fail; + + if (!aa_label_init(label, size)) + goto fail; + + labelstats_inc(allocated); + + return label; + +fail: + kfree(label); + labelstats_inc(failed); + + return NULL; +} + +static bool __aa_label_remove(struct aa_labelset *ls, struct aa_label *label) +{ + AA_BUG(!ls); + AA_BUG(!label); + AA_BUG(!write_is_locked(&ls->lock)); + AA_BUG(labels_set(label) != ls); + + if (label_invalid(label)) + labelstats_dec(invalid_intree); + else + __label_invalidate(label); + + if (label->flags & FLAG_IN_TREE) { + labelsetstats_dec(ls, intree); + rb_erase(&label->node, &ls->root); + label->flags &= ~FLAG_IN_TREE; + return true; + } + + return false; +} + +/** + * aa_label_remove - remove a label from the labelset + * @ls: set to remove the label from + * @l: label to remove + * + * Returns: true if @l was removed from the tree + * else @l was not in tree so it could not be removed + */ +bool aa_label_remove(struct aa_labelset *ls, struct aa_label *l) +{ + unsigned long flags; + bool res; + + write_lock_irqsave(&ls->lock, flags); + res = __aa_label_remove(ls, l); + write_unlock_irqrestore(&ls->lock, flags); + + return res; +} + +#if 0 +/* don't use when using ptr comparisons because nodes should never be + * the same + */ +static bool __aa_label_replace(struct aa_labelset *ls, struct aa_label *old, + struct aa_label *new) +{ + AA_BUG(!ls); + AA_BUG(!old); + AA_BUG(!new); + AA_BUG(!write_is_locked(&ls->lock)); + AA_BUG(labels_set(old) != ls); + AA_BUG(new->flags & FLAG_IN_TREE); + + if (label_invalid(old)) + labelstats_dec(invalid_intree); + else + __label_invalidate(old); + + if (old->flags & FLAG_IN_TREE) { + rb_replace_node(&old->node, &new->node, &ls->root); + old->flags &= ~FLAG_IN_TREE; + new->flags |= FLAG_IN_TREE; + return true; + } + + return false; +} +#endif + +static struct aa_label *__aa_label_insert(struct aa_labelset *ls, + struct aa_label *l); + +static struct aa_label *__aa_label_remove_and_insert(struct aa_labelset *ls, + struct aa_label *remove, + struct aa_label *insert) +{ + AA_BUG(!ls); + AA_BUG(!remove); + AA_BUG(!insert); + AA_BUG(!write_is_locked(&ls->lock)); + AA_BUG(labels_set(remove) != ls); + AA_BUG(insert->flags & FLAG_IN_TREE); + + __aa_label_remove(ls, remove); + return __aa_label_insert(ls, insert); +} + +struct aa_label *aa_label_remove_and_insert(struct aa_labelset *ls, + struct aa_label *remove, + struct aa_label *insert) +{ + unsigned long flags; + struct aa_label *l; + + write_lock_irqsave(&ls->lock, flags); + l = aa_get_label(__aa_label_remove_and_insert(ls, remove, insert)); + write_unlock_irqrestore(&ls->lock, flags); + + return l; +} + +/** + * aa_label_replace - replace a label @old with a new version @new + * @ls: labelset being manipulated + * @old: label to replace + * @new: label replacing @old + * + * Returns: true if @old was in tree and replaced + * else @old was not in tree, and @new was not inserted + */ +bool aa_label_replace(struct aa_labelset *ls, struct aa_label *old, + struct aa_label *new) +{ + struct aa_label *l; + unsigned long flags; + bool res; + + write_lock_irqsave(&ls->lock, flags); + if (!(old->flags & FLAG_IN_TREE)) + l = __aa_label_insert(ls, new); + else + l = __aa_label_remove_and_insert(ls, old, new); + res = (l == new); + write_unlock_irqrestore(&ls->lock, flags); + + return res; +} + +static int ns_cmp(struct aa_namespace *a, struct aa_namespace *b) +{ + int res; + + AA_BUG(!a); + AA_BUG(!b); + AA_BUG(!a->base.name); + AA_BUG(!b->base.name); + + if (a == b) + return 0; + + res = a->level - b->level; + if (res) + return res; + + return strcmp(a->base.name, b->base.name); +} + +/** + * profile_cmp - profile comparision for set ordering + * @a: profile to compare (NOT NULL) + * @b: profile to compare (NOT NULL) + * + * Returns: <0 if a < b + * ==0 if a == b + * >0 if a > b + */ +static int profile_cmp(struct aa_profile *a, struct aa_profile *b) +{ + int res; + + AA_BUG(!a); + AA_BUG(!b); + AA_BUG(!a->ns); + AA_BUG(!b->ns); + AA_BUG(!a->base.hname); + AA_BUG(!b->base.hname); + + if (a == b || a->base.hname == b->base.hname) + return 0; + res = ns_cmp(a->ns, b->ns); + if (res) + return res; + + return strcmp(a->base.hname, b->base.hname); +} + +/** + * label_vec_cmp - label comparision for set ordering + * @a: label to compare (NOT NULL) + * @vec: vector of profiles to compare (NOT NULL) + * @n: length of @vec + * + * Returns: <0 if a < vec + * ==0 if a == vec + * >0 if a > vec + */ +static int label_vec_cmp(struct aa_label *a, struct aa_profile **vec, int n) +{ + int i; + + AA_BUG(!a); + AA_BUG(!vec); + AA_BUG(!*vec); + AA_BUG(n <= 0); + + for (i = 0; i < a->size && i < n; i++) { + int res = profile_cmp(a->ent[i], vec[i]); + if (res != 0) + return res; + } + + return a->size - n; +} + +/** + * label_cmp - label comparision for set ordering + * @a: label to compare (NOT NULL) + * @b: label to compare (NOT NULL) + * + * Returns: <0 if a < b + * ==0 if a == b + * >0 if a > b + */ +static int label_cmp(struct aa_label *a, struct aa_label *b) +{ + AA_BUG(!b); + + if (a == b) + return 0; + + return label_vec_cmp(a, b->ent, b->size); +} + +/** + * __aa_label_vec_find - find label that matches @vec in label set + * @ls: set of labels to search (NOT NULL) + * @vec: vec of profiles to find matching label for (NOT NULL) + * @n: length of @vec + * + * Requires: @ls lock held + * caller to hold a valid ref on l + * + * Returns: unref counted @label if matching label is in tree + * else NULL if @vec equiv is not in tree + */ +static struct aa_label *__aa_label_vec_find(struct aa_labelset *ls, + struct aa_profile **vec, int n) +{ + struct rb_node *node; + + AA_BUG(!ls); + AA_BUG(!vec); + AA_BUG(!*vec); + AA_BUG(n <= 0); + + node = ls->root.rb_node; + while (node) { + struct aa_label *this = rb_entry(node, struct aa_label, node); + int result = label_vec_cmp(this, vec, n); + + if (result > 0) + node = node->rb_left; + else if (result < 0) + node = node->rb_right; + else + return this; + } + + return NULL; +} + +/** + * __aa_label_find - find label @l in label set + * @ls: set of labels to search (NOT NULL) + * @l: label to find (NOT NULL) + * + * Requires: @ls lock held + * caller to hold a valid ref on l + * + * Returns: unref counted @l if @l is in tree + * unref counted label that is equiv to @l in tree + * else NULL if @l or equiv is not in tree + */ +static struct aa_label *__aa_label_find(struct aa_labelset *ls, + struct aa_label *l) +{ + AA_BUG(!l); + + return __aa_label_vec_find(ls, l->ent, l->size); +} + +/** + * aa_label_vec_find - find label @l in label set + * @ls: set of labels to search (NOT NULL) + * @vec: array of profiles to find equiv label for (NOT NULL) + * @n: length of @vec + * + * Returns: refcounted label if @vec equiv is in tree + * else NULL if @vec equiv is not in tree + */ +struct aa_label *aa_label_vec_find(struct aa_labelset *ls, + struct aa_profile **vec, + int n) +{ + struct aa_label *label; + unsigned long flags; + + AA_BUG(!ls); + AA_BUG(!vec); + AA_BUG(!*vec); + AA_BUG(n <= 0); + + read_lock_irqsave(&ls->lock, flags); + label = aa_get_label(__aa_label_vec_find(ls, vec, n)); + labelstats_inc(sread); + read_unlock_irqrestore(&ls->lock, flags); + + return label; +} + +/** + * aa_label_find - find label @l in label set + * @ls: set of labels to search (NOT NULL) + * @l: label to find (NOT NULL) + * + * Requires: caller to hold a valid ref on l + * + * Returns: refcounted @l if @l is in tree + * refcounted label that is equiv to @l in tree + * else NULL if @l or equiv is not in tree + */ +struct aa_label *aa_label_find(struct aa_labelset *ls, struct aa_label *l) +{ + AA_BUG(!l); + + return aa_label_vec_find(ls, l->ent, l->size); +} + +/** + * __aa_label_insert - attempt to insert @l into a label set + * @ls: set of labels to insert @l into (NOT NULL) + * @l: new label to insert (NOT NULL) + * + * Requires: @ls->lock + * caller to hold a valid ref on l + * + * Returns: @l if successful in inserting @l + * else ref counted equivalent label that is already in the set. + */ +static struct aa_label *__aa_label_insert(struct aa_labelset *ls, + struct aa_label *l) +{ + struct rb_node **new, *parent = NULL; + + AA_BUG(!ls); + AA_BUG(!l); + AA_BUG(!write_is_locked(&ls->lock)); + AA_BUG(l->flags & FLAG_IN_TREE); + + /* Figure out where to put new node */ + new = &ls->root.rb_node; + while (*new) { + struct aa_label *this = rb_entry(*new, struct aa_label, node); + int result = label_cmp(l, this); + + parent = *new; + if (result == 0) { + labelsetstats_inc(ls, existing); + return this; + } else if (result < 0) + new = &((*new)->rb_left); + else /* (result > 0) */ + new = &((*new)->rb_right); + } + + /* Add new node and rebalance tree. */ + rb_link_node(&l->node, parent, new); + rb_insert_color(&l->node, &ls->root); + l->flags |= FLAG_IN_TREE; + labelsetstats_inc(ls, insert); + labelsetstats_inc(ls, intree); + + return l; +} + +/** + * aa_label_insert - insert label @l into @ls or return existing label + * @ls - labelset to insert @l into + * @l - label to insert + * + * Requires: caller to hold a valid ref on l + * + * Returns: ref counted @l if successful in inserting @l + * else ref counted equivalent label that is already in the set + */ +struct aa_label *aa_label_insert(struct aa_labelset *ls, struct aa_label *l) +{ + struct aa_label *label; + unsigned long flags; + + AA_BUG(!ls); + AA_BUG(!l); + + /* check if label exists before taking lock */ + if (!label_invalid(l)) { + read_lock_irqsave(&ls->lock, flags); + label = aa_get_label(__aa_label_find(ls, l)); + read_unlock_irqrestore(&ls->lock, flags); + labelstats_inc(fread); + if (label) + return label; + } + + write_lock_irqsave(&ls->lock, flags); + label = aa_get_label(__aa_label_insert(ls, l)); + write_unlock_irqrestore(&ls->lock, flags); + + return label; +} + +struct aa_label *aa_label_vec_find_or_create(struct aa_labelset *ls, + struct aa_profile **vec, int len) +{ + struct aa_label *label = aa_label_vec_find(ls, vec, len); + if (label) + return label; + + return aa_label_vec_merge(vec, len, GFP_KERNEL); +} + +/** + * aa_label_next_in_merge - find the next profile when merging @a and @b + * @I: label iterator + * @a: label to merge + * @b: label to merge + * + * Returns: next profile + * else null if no more profiles + */ +struct aa_profile *aa_label_next_in_merge(struct label_it *I, + struct aa_label *a, + struct aa_label *b) +{ + AA_BUG(!a); + AA_BUG(!b); + AA_BUG(!I); + AA_BUG(I->i < 0); + AA_BUG(I->i > a->size); + AA_BUG(I->j < 0); + AA_BUG(I->j > b->size); + + if (I->i < a->size) { + if (I->j < b->size) { + int res = profile_cmp(a->ent[I->i], b->ent[I->j]); + if (res > 0) + return b->ent[(I->j)++]; + if (res == 0) + (I->j)++; + } + + return a->ent[(I->i)++]; + } + + if (I->j < b->size) + return b->ent[(I->j)++]; + + return NULL; +} + +/** + * label_merge_cmp - cmp of @a merging with @b against @z for set ordering + * @a: label to merge then compare (NOT NULL) + * @b: label to merge then compare (NOT NULL) + * @z: label to compare merge against (NOT NULL) + * + * Assumes: using the most recent versions of @a, @b, and @z + * + * Returns: <0 if a < b + * ==0 if a == b + * >0 if a > b + */ +static int label_merge_cmp(struct aa_label *a, struct aa_label *b, + struct aa_label *z) +{ + struct aa_profile *p = NULL; + struct label_it i = { }; + int k; + + AA_BUG(!a); + AA_BUG(!b); + AA_BUG(!z); + + for (k = 0; + k < z->size && (p = aa_label_next_in_merge(&i, a, b)); + k++) { + int res = profile_cmp(p, z->ent[k]); + + if (res != 0) + return res; + } + + if (p) + return 1; + else if (k < z->size) + return -1; + return 0; +} + +#if 0 +/** + * label_merge_len - find the length of the merge of @a and @b + * @a: label to merge (NOT NULL) + * @b: label to merge (NOT NULL) + * + * Assumes: using newest versions of labels @a and @b + * + * Returns: length of a label vector for merge of @a and @b + */ +static int label_merge_len(struct aa_label *a, struct aa_label *b) +{ + int len = a->size + b->size; + int i, j; + + AA_BUG(!a); + AA_BUG(!b); + + /* find entries in common and remove from count */ + for (i = j = 0; i < a->size && j < b->size; ) { + int res = profile_cmp(a->ent[i], b->ent[j]); + if (res == 0) { + len--; + i++; + j++; + } else if (res < 0) + i++; + else + j++; + } + + return len; +} +#endif + +/** + * aa_sort_and_merge_profiles - canonical sort and merge a list of profiles + * @n: number of refcounted profiles in the list (@n > 0) + * @ps: list of profiles to sort and merge + * + * Returns: the number of duplicates eliminated == references put + */ +static int aa_sort_and_merge_profiles(int n, struct aa_profile **ps) +{ + int i, dups = 0; + + AA_BUG(n < 1); + AA_BUG(!ps); + + /* label lists are usually small so just use insertion sort */ + for (i = 1; i < n; i++) { + struct aa_profile *tmp = ps[i]; + int pos, j; + + for (pos = i - 1 - dups; pos >= 0; pos--) { + int res = profile_cmp(ps[pos], tmp); + if (res == 0) { + aa_put_profile(tmp); + dups++; + goto continue_outer; + } else if (res < 0) + break; + } + pos++; + + for (j = i - dups; j > pos; j--) + ps[j] = ps[j - 1]; + ps[pos] = tmp; + continue_outer: + ; /* sigh empty statement required after the label */ + } + + return dups; +} + +/** + * __label_merge - create a new label by merging @a and @b + * @l: preallocated label to merge into (NOT NULL) + * @a: label to merge with @b (NOT NULL) + * @b: label to merge with @a (NOT NULL) + * + * Returns: ref counted label either l if merge is unique + * a if b is a subset of a + * b if a is a subset of b + * + * NOTE: will not use l if the merge results in l == a or b + * + * Must be used within labelset write lock to avoid racing with + * label invalidation. + */ +static struct aa_label *__label_merge(struct aa_label *l, struct aa_label *a, + struct aa_label *b) +{ + struct aa_profile *next; + struct label_it i; + int k = 0, invcount = 0; + + AA_BUG(!a); + AA_BUG(a->size < 0); + AA_BUG(!b); + AA_BUG(b->size < 0); + AA_BUG(!l); + AA_BUG(l->size < a->size + b->size); + + if (a == b) + return aa_get_label(a); + + label_for_each_in_merge(i, a, b, next) { + if (PROFILE_INVALID(next)) { + l->ent[k] = aa_get_newest_profile(next); + if (next->label.replacedby != + l->ent[k]->label.replacedby) + invcount++; + k++; + } else + l->ent[k++] = aa_get_profile(next); + } + /* set to actual size which is <= allocated len */ + l->size = k; + l->ent[k] = NULL; + + if (invcount) { + l->size -= aa_sort_and_merge_profiles(l->size, &l->ent[0]); + if (label_profiles_unconfined(l)) + l->flags |= FLAG_UNCONFINED; + } else { + /* merge is same as at least one of the labels */ + if (k == a->size) + return aa_get_label(a); + else if (k == b->size) + return aa_get_label(b); + + l->flags |= a->flags & b->flags & FLAG_UNCONFINED; + } + + return aa_get_label(l); +} + +/** + * labelset_of_merge - find into which labelset a merged label should be inserted + * @a: label to merge and insert + * @b: label to merge and insert + * + * Returns: labelset that the merged label should be inserted into + */ +static struct aa_labelset *labelset_of_merge(struct aa_label *a, struct aa_label *b) +{ + struct aa_namespace *nsa = labels_ns(a); + struct aa_namespace *nsb = labels_ns(b); + + if (ns_cmp(nsa, nsb) <= 0) + return &nsa->labels; + return &nsb->labels; +} + +/** + * __aa_label_find_merge - find label that is equiv to merge of @a and @b + * @ls: set of labels to search (NOT NULL) + * @a: label to merge with @b (NOT NULL) + * @b: label to merge with @a (NOT NULL) + * + * Requires: read_lock held + * + * Returns: unref counted label that is equiv to merge of @a and @b + * else NULL if merge of @a and @b is not in set + */ +static struct aa_label *__aa_label_find_merge(struct aa_labelset *ls, + struct aa_label *a, + struct aa_label *b) +{ + struct rb_node *node; + + AA_BUG(!ls); + AA_BUG(!a); + AA_BUG(!b); + + if (a == b) + return __aa_label_find(ls, a); + + node = ls->root.rb_node; + while (node) { + struct aa_label *this = container_of(node, struct aa_label, + node); + int result = label_merge_cmp(a, b, this); + + if (result < 0) + node = node->rb_left; + else if (result > 0) + node = node->rb_right; + else + return this; + } + + return NULL; +} + + +/** + * __aa_label_find_merge - find label that is equiv to merge of @a and @b + * @a: label to merge with @b (NOT NULL) + * @b: label to merge with @a (NOT NULL) + * + * Requires: labels be fully constructed with a valid ns + * + * Returns: ref counted label that is equiv to merge of @a and @b + * else NULL if merge of @a and @b is not in set + */ +struct aa_label *aa_label_find_merge(struct aa_label *a, struct aa_label *b) +{ + struct aa_labelset *ls; + struct aa_label *label, *ar = NULL, *br = NULL; + unsigned long flags; + + AA_BUG(!a); + AA_BUG(!b); + + ls = labelset_of_merge(a, b); + read_lock_irqsave(&ls->lock, flags); + if (label_invalid(a)) + a = ar = aa_get_newest_label(a); + if (label_invalid(b)) + b = br = aa_get_newest_label(b); + label = aa_get_label(__aa_label_find_merge(ls, a, b)); + read_unlock_irqrestore(&ls->lock, flags); + aa_put_label(ar); + aa_put_label(br); + labelsetstats_inc(ls, msread); + + return label; +} + +/** + * aa_label_merge - attempt to insert new merged label of @a and @b + * @ls: set of labels to insert label into (NOT NULL) + * @a: label to merge with @b (NOT NULL) + * @b: label to merge with @a (NOT NULL) + * @gfp: memory allocation type + * + * Requires: caller to hold valid refs on @a and @b + * labels be fully constructed with a valid ns + * + * Returns: ref counted new label if successful in inserting merge of a & b + * else ref counted equivalent label that is already in the set. + * else NULL if could not create label (-ENOMEM) + */ +struct aa_label *aa_label_merge(struct aa_label *a, struct aa_label *b, + gfp_t gfp) +{ + struct aa_label *label = NULL; + struct aa_labelset *ls; + unsigned long flags; + + AA_BUG(!a); + AA_BUG(!b); + + if (a == b) + return aa_get_newest_label(a); + + ls = labelset_of_merge(a, b); + + /* TODO: enable when read side is lockless + * check if label exists before taking locks + if (!label_invalid(a) && !label_invalid(b)) + label = aa_label_find_merge(a, b); + */ + + if (!label) { + struct aa_label *new, *l; + + a = aa_get_newest_label(a); + b = aa_get_newest_label(b); + + /* could use label_merge_len(a, b), but requires double + * comparison for small savings + */ + new = aa_label_alloc(a->size + b->size, gfp); + if (!new) + return NULL; + + write_lock_irqsave(&ls->lock, flags); + l = __label_merge(new, a, b); + if (l != new) { + /* new may not be fully setup so no put_label */ + aa_label_free(new); + new = NULL; + } + if (!(l->flags & FLAG_IN_TREE)) + label = aa_get_label(__aa_label_insert(ls, l)); + write_unlock_irqrestore(&ls->lock, flags); + aa_put_label(new); + aa_put_label(l); + aa_put_label(a); + aa_put_label(b); + } + + return label; +} + +/* requires sort and merge done first */ +struct aa_label *aa_label_vec_merge(struct aa_profile **vec, int len, + gfp_t gfp) +{ + struct aa_label *label = NULL; + struct aa_labelset *ls; + unsigned long flags; + struct aa_label *new; + int i; + + AA_BUG(!vec); + + if (len == 1) + return aa_get_label(&vec[0]->label); + + ls = labels_set(&vec[len - 1]->label); + + /* TODO: enable when read side is lockless + * check if label exists before taking locks + */ + new = aa_label_alloc(len, gfp); + if (!new) + return NULL; + + write_lock_irqsave(&ls->lock, flags); + for (i = 0; i < len; i++) { + new->ent[i] = aa_get_profile(vec[i]); + label = __aa_label_insert(ls, new); + if (label != new) { + aa_get_label(label); + /* not fully constructed don't put */ + aa_label_free(new); + } + } + write_unlock_irqrestore(&ls->lock, flags); + + return label; +} + +/** + * aa_update_label_name - update a label to have a stored name + * @ns: ns being viewed from (NOT NULL) + * @label: label to update (NOT NULL) + * @gfp: type of memory allocation + * + * Requires: labels_set(label) not locked in caller + * + * note: only updates the label name if it does not have a name already + * and if it is in the labelset + */ +bool aa_update_label_name(struct aa_namespace *ns, struct aa_label *label, + gfp_t gfp) +{ + struct aa_labelset *ls; + unsigned long flags; + char __counted *name; + bool res = false; + + AA_BUG(!ns); + AA_BUG(!label); + + if (label->hname || labels_ns(label) != ns) + return res; + + if (aa_label_acntsprint(&name, ns, label, false, gfp) == -1) + return res; + + ls = labels_set(label); + write_lock_irqsave(&ls->lock, flags); + if (!label->hname && label->flags & FLAG_IN_TREE) { + label->hname = name; + res = true; + } else + aa_put_str(name); + write_unlock_irqrestore(&ls->lock, flags); + + return res; +} + +/* cached label name is present and visible + * @label->hname only exists if label is namespace hierachical */ +static inline bool label_name_visible(struct aa_namespace *ns, + struct aa_label *label) +{ + if (label->hname && labels_ns(label) == ns) + return true; + + return false; +} + +/* helper macro for snprint routines */ +#define update_for_len(total, len, size, str) \ +do { \ + AA_BUG(len < 0); \ + total += len; \ + len = min(len, size); \ + size -= len; \ + str += len; \ +} while (0) + +/** + * aa_modename_snprint - print the mode name of a profile or label to a buffer + * @str: buffer to write to (MAY BE NULL if @size == 0) + * @size: size of buffer + * @ns: namespace profile is being viewed from (NOT NULL) + * @label: label to print the mode of (NOT NULL) + * + * Returns: size of name written or would be written if larger than + * available buffer + * + * Note: will print every mode name visible (mode1)(mode2)(mode3) + * this is likely not what is desired for most interfaces + * use aa_mode_snprint to get the standard mode format + */ +static int aa_modename_snprint(char *str, size_t size, struct aa_namespace *ns, + struct aa_label *label) +{ + struct aa_profile *profile; + struct label_it i; + int total = 0; + size_t len; + + label_for_each(i, label, profile) { + const char *modestr; + if (!aa_ns_visible(ns, profile->ns)) + continue; + /* no mode for 'unconfined' */ + if (profile_unconfined(profile) && + profile == profile->ns->unconfined) + break; + modestr = aa_profile_mode_names[profile->mode]; + len = snprintf(str, size, "(%s)", modestr); + update_for_len(total, len, size, str); + } + + return total; +} + +/** + * aa_modechr_snprint - print the mode chr of a profile or labels to a buffer + * @str: buffer to write to (MAY BE NULL if @size == 0) + * @size: size of buffer + * @ns: namespace profile is being viewed from (NOT NULL) + * @label: label to print the mode chr of (NOT NULL) + * + * Returns: size of mode string written or would be written if larger than + * available buffer + * + * Note: will print the chr of every visible profile (123) + * this is likely not what is desired for most interfaces + * use aa_mode_snprint to get the standard mode format + */ +static int aa_modechr_snprint(char *str, size_t size, struct aa_namespace *ns, + struct aa_label *label) +{ + struct aa_profile *profile; + struct label_it i; + int total = 0; + size_t len; + + len = snprintf(str, size, "("); + update_for_len(total, len, size, str); + label_for_each(i, label, profile) { + const char *modestr; + if (!aa_ns_visible(ns, profile->ns)) + continue; + modestr = aa_profile_mode_names[profile->mode]; + /* just the first char of the modestr */ + len = snprintf(str, size, "%c", *modestr); + update_for_len(total, len, size, str); + } + len = snprintf(str, size, ")"); + update_for_len(total, len, size, str); + + return total; +} + +/** + * aa_mode_snprint - print the mode of a profile or label to a buffer + * @str: buffer to write to (MAY BE NULL if @size == 0) + * @size: size of buffer + * @ns: namespace profile is being viewed from (NOT NULL) + * @label: label to print the mode of (NOT NULL) + * @count: number of label entries to be printed (<= 0 if unknown) + * + * Returns: size of name written or would be written if larger than + * available buffer + * + * Note: dynamically switches between mode name, and mode char format as + * appropriate + * will not print anything if the label is not visible + */ +static int aa_mode_snprint(char *str, size_t size, struct aa_namespace *ns, + struct aa_label *label, int count) +{ + struct aa_profile *profile; + struct label_it i; + + if (count <= 0) { + count = 0; + label_for_each(i, label, profile) { + if (aa_ns_visible(ns, profile->ns)) + count++; + } + } + + if (count == 0) + return 0; + + if (count == 1) + return aa_modename_snprint(str, size, ns, label); + + return aa_modechr_snprint(str, size, ns, label); +} + +/** + * aa_snprint_profile - print a profile name to a buffer + * @str: buffer to write to. (MAY BE NULL if @size == 0) + * @size: size of buffer + * @ns: namespace profile is being viewed from (NOT NULL) + * @profile: profile to view (NOT NULL) + * @mode: whether to include the mode string + * + * Returns: size of name written or would be written if larger than + * available buffer + * + * Note: will not print anything if the profile is not visible + */ +int aa_profile_snprint(char *str, size_t size, struct aa_namespace *ns, + struct aa_profile *profile, bool mode) +{ + const char *ns_name = aa_ns_name(ns, profile->ns); + + AA_BUG(!str && size != 0); + AA_BUG(!ns); + AA_BUG(!profile); + + if (!ns_name) + return 0; + + if (mode && profile != profile->ns->unconfined) { + const char *modestr = aa_profile_mode_names[profile->mode]; + if (strlen(ns_name)) + return snprintf(str, size, ":%s://%s (%s)", ns_name, + profile->base.hname, modestr); + return snprintf(str, size, "%s (%s)", profile->base.hname, + modestr); + } + + if (strlen(ns_name)) + return snprintf(str, size, ":%s://%s", ns_name, + profile->base.hname); + return snprintf(str, size, "%s", profile->base.hname); +} + +/** + * aa_label_snprint - print a label name to a string buffer + * @str: buffer to write to. (MAY BE NULL if @size == 0) + * @size: size of buffer + * @ns: namespace profile is being viewed from (NOT NULL) + * @label: label to view (NOT NULL) + * @mode: whether to include the mode string + * + * Returns: size of name written or would be written if larger than + * available buffer + * + * Note: labels do not have to be strictly hierarchical to the ns as + * objects may be shared across different namespaces and thus + * pickup labeling from each ns. If a particular part of the + * label is not visible it will just be excluded. And if none + * of the label is visible "---" will be used. + */ +int aa_label_snprint(char *str, size_t size, struct aa_namespace *ns, + struct aa_label *label, bool mode) +{ + struct aa_profile *profile; + struct label_it i; + int count = 0, total = 0; + size_t len; + + AA_BUG(!str && size != 0); + AA_BUG(!ns); + AA_BUG(!label); + + label_for_each(i, label, profile) { + if (aa_ns_visible(ns, profile->ns)) { + if (count > 0) { + len = snprintf(str, size, "//&"); + update_for_len(total, len, size, str); + } + len = aa_profile_snprint(str, size, ns, profile, false); + update_for_len(total, len, size, str); + count++; + } + } + + if (count == 0) + return snprintf(str, size, aa_hidden_ns_name); + + /* count == 1 && ... is for backwards compat where the mode + * is not displayed for 'unconfined' in the current ns + */ + if (mode && + !(count == 1 && labels_ns(label) == ns && + labels_profile(label) == ns->unconfined)) { + len = snprintf(str, size, " "); + update_for_len(total, len, size, str); + len = aa_mode_snprint(str, size, ns, label, count); + update_for_len(total, len, size, str); + } + + return total; +} +#undef update_for_len + +/** + * aa_label_asprint - allocate a string buffer and print label into it + * @strp: Returns - the allocated buffer with the label name. (NOT NULL) + * @ns: namespace profile is being viewed from (NOT NULL) + * @label: label to view (NOT NULL) + * @mode: whether to include the mode string + * @gfp: kernel memory allocation type + * + * Returns: size of name written or would be written if larger than + * available buffer + */ +int aa_label_asprint(char **strp, struct aa_namespace *ns, + struct aa_label *label, bool mode, gfp_t gfp) +{ + int size; + + AA_BUG(!strp); + AA_BUG(!ns); + AA_BUG(!label); + + size = aa_label_snprint(NULL, 0, ns, label, mode); + if (size < 0) + return size; + + *strp = kmalloc(size + 1, gfp); + if (!*strp) + return -ENOMEM; + return aa_label_snprint(*strp, size + 1, ns, label, mode); +} + +/** + * aa_label_acntsprint - allocate a __counted string buffer and print label + * @strp: buffer to write to. (MAY BE NULL if @size == 0) + * @ns: namespace profile is being viewed from (NOT NULL) + * @label: label to view (NOT NULL) + * @mode: whether to include the mode string + * @gfp: kernel memory allocation type + * + * Returns: size of name written or would be written if larger than + * available buffer + */ +int aa_label_acntsprint(char __counted **strp, struct aa_namespace *ns, + struct aa_label *label, bool mode, gfp_t gfp) +{ + int size; + + AA_BUG(!strp); + AA_BUG(!ns); + AA_BUG(!label); + + size = aa_label_snprint(NULL, 0, ns, label, mode); + if (size < 0) + return size; + + *strp = aa_str_alloc(size + 1, gfp); + if (!*strp) + return -ENOMEM; + return aa_label_snprint(*strp, size + 1, ns, label, mode); +} + + +void aa_label_audit(struct audit_buffer *ab, struct aa_namespace *ns, + struct aa_label *label, bool mode, gfp_t gfp) +{ + const char *str; + char *name = NULL; + int len; + + AA_BUG(!ab); + AA_BUG(!ns); + AA_BUG(!label); + + if (label_name_visible(ns, label)) { + str = (char *) label->hname; + len = strlen(str); + } else { + labelstats_inc(audit_name_alloc); + len = aa_label_asprint(&name, ns, label, mode, gfp); + if (len == -1) { + labelstats_inc(audit_name_fail); + AA_DEBUG("label print error"); + return; + } + str = name; + } + + if (audit_string_contains_control(str, len)) + audit_log_n_hex(ab, str, len); + else + audit_log_n_string(ab, str, len); + + kfree(name); +} + +void aa_label_seq_print(struct seq_file *f, struct aa_namespace *ns, + struct aa_label *label, bool mode, gfp_t gfp) +{ + AA_BUG(!f); + AA_BUG(!ns); + AA_BUG(!label); + + if (!label_name_visible(ns, label)) { + char *str; + int len; + + labelstats_inc(seq_print_name_alloc); + len = aa_label_asprint(&str, ns, label, mode, gfp); + if (len == -1) { + labelstats_inc(seq_print_name_fail); + AA_DEBUG("label print error"); + return; + } + seq_printf(f, "%s", str); + kfree(str); + } else + seq_printf(f, "%s", label->hname); +} + +void aa_label_printk(struct aa_namespace *ns, struct aa_label *label, bool mode, + gfp_t gfp) +{ + char *str; + int len; + + AA_BUG(!ns); + AA_BUG(!label); + + if (!label_name_visible(ns, label)) { + labelstats_inc(printk_name_alloc); + len = aa_label_asprint(&str, ns, label, mode, gfp); + if (len == -1) { + labelstats_inc(printk_name_fail); + AA_DEBUG("label print error"); + return; + } + printk("%s", str); + kfree(str); + } else + printk("%s", label->hname); +} + +static int label_count_str_entries(const char *str) +{ + const char *split; + int count = 1; + + AA_BUG(!str); + + for (split = strstr(str, "//&"); split; split = strstr(str, "//&")) { + count++; + str = split + 3; + } + + return count; +} + +/** + * aa_label_parse - parse, validate and convert a text string to a label + * @base: base label to use for lookups (NOT NULL) + * @str: null terminated text string (NOT NULL) + * @gfp: allocation type + * @create: true if should create compound labels if they don't exist + * + * Returns: the matching refcounted label if present + * else ERRPTR + */ +struct aa_label *aa_label_parse(struct aa_label *base, char *str, gfp_t gfp, + bool create) +{ + DEFINE_PROFILE_VEC(vec, tmp); + struct aa_label *l; + int i, len, error; + char *split; + + AA_BUG(!base); + AA_BUG(!str); + + len = label_count_str_entries(str); + error = aa_setup_profile_vec(vec, tmp, len); + if (error) + return ERR_PTR(error); + + for (split = strstr(str, "//&"), i = 0; split && i < len; i++) { + vec[i] = aa_fqlookupn_profile(base, str, split - str); + if (!vec[i]) + goto fail; + str = split + 3; + split = strstr(str, "//&"); + } + vec[i] = aa_fqlookupn_profile(base, str, strlen(str)); + if (!vec[i]) + goto fail; + if (len == 1) + /* no need to free vec as len < LOCAL_VEC_ENTRIES */ + return &vec[0]->label; + + i = aa_sort_and_merge_profiles(len, vec); + len -= i; + + if (create) + l = aa_label_vec_find_or_create(labels_set(base), vec, len); + else + l = aa_label_vec_find(labels_set(base), vec, len); + if (!l) + l = ERR_PTR(-ENOENT); + +out: + /* use adjusted len from after sort_and_merge, not original */ + aa_cleanup_profile_vec(vec, tmp, len); + return l; + +fail: + l = ERR_PTR(-ENOENT); + goto out; +} + + +/** + * aa_labelset_destroy - remove all labels from the label set + * @ls: label set to cleanup (NOT NULL) + * + * Labels that are removed from the set may still exist beyond the set + * being destroyed depending on their reference counting + */ +void aa_labelset_destroy(struct aa_labelset *ls) +{ + struct rb_node *node; + unsigned long flags; + + AA_BUG(!ls); + + write_lock_irqsave(&ls->lock, flags); + for (node = rb_first(&ls->root); node; node = rb_first(&ls->root)) { + struct aa_label *this = rb_entry(node, struct aa_label, node); + __aa_label_remove(ls, this); + } + write_unlock_irqrestore(&ls->lock, flags); +} + +/* + * @ls: labelset to init (NOT NULL) + */ +void aa_labelset_init(struct aa_labelset *ls) +{ + AA_BUG(!ls); + + rwlock_init(&ls->lock); + ls->root = RB_ROOT; + labelstats_init(&ls); +} + +static struct aa_label *labelset_next_invalid(struct aa_labelset *ls) +{ + struct aa_label *label; + struct rb_node *node; + unsigned long flags; + + AA_BUG(!ls); + + read_lock_irqsave(&ls->lock, flags); + + __labelset_for_each(ls, node) { + struct aa_profile *p; + struct label_it i; + + label = rb_entry(node, struct aa_label, node); + if (label_invalid(label)) + goto out; + + label_for_each(i, label, p) { + if (PROFILE_INVALID(p)) + goto out; + } + } + label = NULL; + +out: + aa_get_label(label); + read_unlock_irqrestore(&ls->lock, flags); + + return label; +} + +/** + * __label_update - insert updated version of @label into labelset + * @label - the label to update/repace + * + * Returns: new label that is up to date + * else NULL on failure + * + * Requires: @ns lock be held + * + * Note: worst case is the stale @label does not get updated and has + * to be updated at a later time. + */ +static struct aa_label *__label_update(struct aa_label *label) +{ + struct aa_label *l, *tmp; + struct aa_labelset *ls; + struct aa_profile *p; + struct label_it i; + unsigned long flags; + int invcount = 0; + + AA_BUG(!label); + AA_BUG(!mutex_is_locked(&labels_ns(label)->lock)); + + l = aa_label_alloc(label->size, GFP_KERNEL); + if (!l) + return NULL; + + if (!label->replacedby) { + struct aa_replacedby *r = aa_alloc_replacedby(l); + if (!r) { + aa_put_label(l); + return NULL; + } + /* only label update will set replacedby so ns lock is enough */ + label->replacedby = r; + } + + /* while holding the ns_lock will stop profile replacement, removal, + * and label updates, label merging and removal can be occuring + */ + + ls = labels_set(label); + write_lock_irqsave(&ls->lock, flags); + /* circular ref only broken by replace or remove */ + l->replacedby = aa_get_replacedby(label->replacedby); + __aa_update_replacedby(label, l); + + label_for_each(i, label, p) { + l->ent[i.i] = aa_get_newest_profile(p); + if (&l->ent[i.i]->label.replacedby != &p->label.replacedby) + invcount++; + } + + /* updated label invalidated by being removed/renamed from labelset */ + if (invcount) { + l->size -= aa_sort_and_merge_profiles(l->size, &l->ent[0]); + if (labels_set(label) == labels_set(l)) { + AA_BUG(__aa_label_remove_and_insert(labels_set(label), label, l) != l); + } else { + aa_label_remove(labels_set(label), label); + goto other_ls_insert; + } + } else { + AA_BUG(labels_ns(label) != labels_ns(l)); + AA_BUG(__aa_label_remove_and_insert(labels_set(label), label, l) != l); + } + write_unlock_irqrestore(&ls->lock, flags); + + return l; + +other_ls_insert: + write_unlock_irqrestore(&ls->lock, flags); + tmp = aa_label_insert(labels_set(l), l); + if (tmp != l) { + aa_put_label(l); + l = tmp; + } + + return l; +} + +/** + * __labelset_update - invalidate and update labels in @ns + * @ns: namespace to update and invalidate labels in (NOT NULL) + * + * Requires: @ns lock be held + * + * Walk the labelset ensuring that all labels are up to date and valid + * Any label that is outdated is replaced and by an updated version + * invalidated and removed from the tree. + * + * If failures happen due to memory pressures then stale labels will + * be left in place until the next pass. + */ +static void __labelset_update(struct aa_namespace *ns) +{ + struct aa_label *label; + + AA_BUG(!ns); + AA_BUG(!mutex_is_locked(&ns->lock)); + + do { + label = labelset_next_invalid(&ns->labels); + if (label) { + struct aa_label *l; + l = __label_update(label); + aa_put_label(l); + aa_put_label(label); + } + } while (label); +} + +/** + * __aa_labelset_invalidate_all - invalidate labels in @ns and below + * @ns: ns to start invalidation at (NOT NULL) + * + * Requires: @ns lock be held + * + * Invalidates labels based on @p in @ns and any children namespaces. +*/ +void __aa_labelset_update_all(struct aa_namespace *ns) +{ + struct aa_namespace *child; + + AA_BUG(!ns); + AA_BUG(!mutex_is_locked(&ns->lock)); + + __labelset_update(ns); + + list_for_each_entry(child, &ns->sub_ns, base.list) { + mutex_lock(&child->lock); + __aa_labelset_update_all(child); + mutex_unlock(&child->lock); + } +} --- linux-raspi2-4.2.0.orig/security/apparmor/lib.c +++ linux-raspi2-4.2.0/security/apparmor/lib.c @@ -4,7 +4,7 @@ * This file contains basic common functions used in AppArmor * * Copyright (C) 1998-2008 Novell/SUSE - * Copyright 2009-2010 Canonical Ltd. + * Copyright 2009-2013 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 @@ -12,14 +12,17 @@ * License. */ +#include #include #include #include #include -#include "include/audit.h" #include "include/apparmor.h" - +#include "include/audit.h" +#include "include/label.h" +#include "include/perms.h" +#include "include/policy.h" /** * aa_split_fqname - split a fqname into a profile and namespace name @@ -60,17 +63,64 @@ } /** + * skipn_spaces - Removes leading whitespace from @str. + * @str: The string to be stripped. + * + * Returns a pointer to the first non-whitespace character in @str. + * if all whitespace will return NULL + */ + +static char *skipn_spaces(const char *str, size_t n) +{ + for (;n && isspace(*str); --n) + ++str; + if (n) + return (char *)str; + return NULL; +} + +char *aa_splitn_fqname(char *fqname, size_t n, char **ns_name, size_t *ns_len) +{ + char *end = fqname + n; + char *name = skipn_spaces(fqname, n); + if (!name) + return NULL; + *ns_name = NULL; + *ns_len = 0; + if (name[0] == ':') { + char *split = strnchr(name + 1, end - name - 1, ':'); + *ns_name = skipn_spaces(&name[1], end - &name[1]); + if (!*ns_name) + return NULL; + if (split) { + *ns_len = split - *ns_name - 1; + if (*ns_len == 0) + *ns_name = NULL; + split++; + if (end - split > 1 && strncmp(split, "//", 2) == 0) + split += 2; + name = skipn_spaces(split, end - split); + } else { + /* a ns name without a following profile is allowed */ + name = NULL; + *ns_len = end - *ns_name; + } + } + if (name && *name == 0) + name = NULL; + + return name; +} + +/** * aa_info_message - log a none profile related status message * @str: message to log */ void aa_info_message(const char *str) { if (audit_enabled) { - struct common_audit_data sa; - struct apparmor_audit_data aad = {0,}; - sa.type = LSM_AUDIT_DATA_NONE; - sa.aad = &aad; - aad.info = str; + DEFINE_AUDIT_DATA(sa, LSM_AUDIT_DATA_NONE, 0); + aad(&sa)->info = str; aa_audit_msg(AUDIT_APPARMOR_STATUS, &sa, NULL); } printk(KERN_INFO "AppArmor: %s\n", str); @@ -104,3 +154,371 @@ } return buffer; } + + +__counted char *aa_str_alloc(int size, gfp_t gfp) +{ + struct counted_str *str; + str = kmalloc(sizeof(struct counted_str) + size, gfp); + if (!str) + return NULL; + + kref_init(&str->count); + return str->name; +} + +void aa_str_kref(struct kref *kref) +{ + kfree(container_of(kref, struct counted_str, count)); +} + + +const char aa_file_perm_chrs[] = "xwracd km l "; +const char *aa_file_perm_names[] = { + "exec", + "write", + "read", + "append", + + "create", + "delete", + "open", + "rename", + + "setattr", + "getattr", + "setcred", + "getcred", + + "chmod", + "chown", + "chgrp", + "lock", + + "mmap", + "mprot", + "link", + "snapshot", + + "unknown", + "unknown", + "unknown", + "unknown", + + "unknown", + "unknown", + "unknown", + "unknown", + + "stack", + "change_onexec", + "change_profile", + "change_hat", +}; + +/** + * aa_perm_mask_to_str - convert a perm mask to its short string + * @str: character buffer to store string in (at least 10 characters) + * @mask: permission mask to convert + */ +void aa_perm_mask_to_str(char *str, const char *chrs, u32 mask) +{ + unsigned int i, perm = 1; + for (i = 0; i < 32; perm <<= 1, i++) { + if (mask & perm) + *str++ = chrs[i]; + } + *str = '\0'; +} + +void aa_audit_perm_names(struct audit_buffer *ab, const char **names, u32 mask) +{ + const char *fmt = "%s"; + unsigned int i, perm = 1; + bool prev = false; + for (i = 0; i < 32; perm <<= 1, i++) { + if (mask & perm) { + audit_log_format(ab, fmt, names[i]); + if (!prev) { + prev = true; + fmt = " %s"; + } + } + } +} + +void aa_audit_perm_mask(struct audit_buffer *ab, u32 mask, const char *chrs, + u32 chrsmask, const char **names, u32 namesmask) +{ + char str[33]; + + audit_log_format(ab, "\""); + if ((mask & chrsmask) && chrs) { + aa_perm_mask_to_str(str, chrs, mask & chrsmask); + mask &= ~chrsmask; + audit_log_format(ab, "%s", str); + if (mask & namesmask) + audit_log_format(ab, " "); + } + if ((mask & namesmask) && names) + aa_audit_perm_names(ab, names, mask & namesmask); + audit_log_format(ab, "\""); +} + +/** + * aa_audit_perms_cb - generic callback fn for auditing perms + * @ab: audit buffer (NOT NULL) + * @va: audit struct to audit values of (NOT NULL) + */ +static void aa_audit_perms_cb(struct audit_buffer *ab, void *va) +{ + struct common_audit_data *sa = va; + + if (aad(sa)->request) { + audit_log_format(ab, " requested_mask="); + aa_audit_perm_mask(ab, aad(sa)->request, aa_file_perm_chrs, + PERMS_CHRS_MASK, aa_file_perm_names, + PERMS_NAMES_MASK); + } + if (aad(sa)->denied) { + audit_log_format(ab, "denied_mask="); + aa_audit_perm_mask(ab, aad(sa)->denied, aa_file_perm_chrs, + PERMS_CHRS_MASK, aa_file_perm_names, + PERMS_NAMES_MASK); + } + audit_log_format(ab, " target="); + audit_log_untrustedstring(ab, aad(sa)->target); +} + +void map_old_policy_perms(struct aa_dfa *dfa, unsigned int state, + struct aa_perms *perms) +{ + +} + +/** + * aa_apply_modes_to_perms - apply namespace and profile flags to perms + * @profile: that perms where computed from + * @perms: perms to apply mode modifiers to + * + * TODO: split into profile and ns based flags for when accumulating perms + */ +void aa_apply_modes_to_perms(struct aa_profile *profile, struct aa_perms *perms) +{ + switch (AUDIT_MODE(profile)) { + case AUDIT_ALL: + perms->audit = ALL_PERMS_MASK; + /* fall through */ + case AUDIT_NOQUIET: + perms->quiet = 0; + break; + case AUDIT_QUIET: + perms->audit = 0; + /* fall through */ + case AUDIT_QUIET_DENIED: + perms->quiet = ALL_PERMS_MASK; + break; + } + + if (KILL_MODE(profile)) + perms->kill = ALL_PERMS_MASK; + else if (COMPLAIN_MODE(profile)) + perms->complain = ALL_PERMS_MASK; +/* TODO: + else if (PROMPT_MODE(profile)) + perms->prompt = ALL_PERMS_MASK; +*/ +} + +static u32 map_other(u32 x) +{ + return ((x & 0x3) << 8) | /* SETATTR/GETATTR */ + ((x & 0x1c) << 18) | /* ACCEPT/BIND/LISTEN */ + ((x & 0x60) << 19); /* SETOPT/GETOPT */ +} + +void aa_compute_perms(struct aa_dfa *dfa, unsigned int state, + struct aa_perms *perms) +{ + perms->deny = 0; + perms->kill = perms->stop = 0; + perms->complain = perms->cond = 0; + perms->hide = 0; + perms->prompt = 0; + perms->allow = dfa_user_allow(dfa, state); + perms->audit = dfa_user_audit(dfa, state); + perms->quiet = dfa_user_quiet(dfa, state); + + /* 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->audit |= map_other(dfa_other_audit(dfa, state)); + perms->quiet |= map_other(dfa_other_quiet(dfa, state)); +// perms->xindex = dfa_user_xindex(dfa, state); +} + +/** + * aa_perms_accum_raw - accumulate perms with out masking off overlapping perms + * @accum - perms struct to accumulate into + * @addend - perms struct to add to @accum + */ +void aa_perms_accum_raw(struct aa_perms *accum, struct aa_perms *addend) +{ + accum->deny |= addend->deny; + accum->allow &= addend->allow & ~addend->deny; + accum->audit |= addend->audit & addend->allow; + accum->quiet &= addend->quiet & ~addend->allow; + accum->kill |= addend->kill & ~addend->allow; + accum->stop |= addend->stop & ~addend->allow; + accum->complain |= addend->complain & ~addend->allow & ~addend->deny; + accum->cond |= addend->cond & ~addend->allow & ~addend->deny; + accum->hide &= addend->hide & ~addend->allow; + accum->prompt |= addend->prompt & ~addend->allow & ~addend->deny; +} + +/** + * aa_perms_accum - accumulate perms, masking off overlapping perms + * @accum - perms struct to accumulate into + * @addend - perms struct to add to @accum + */ +void aa_perms_accum(struct aa_perms *accum, struct aa_perms *addend) +{ + accum->deny |= addend->deny; + accum->allow &= addend->allow & ~accum->deny; + accum->audit |= addend->audit & accum->allow; + accum->quiet &= addend->quiet & ~accum->allow; + accum->kill |= addend->kill & ~accum->allow; + accum->stop |= addend->stop & ~accum->allow; + accum->complain |= addend->complain & ~accum->allow & ~accum->deny; + accum->cond |= addend->cond & ~accum->allow & ~accum->deny; + accum->hide &= addend->hide & ~accum->allow; + accum->prompt |= addend->prompt & ~accum->allow & ~accum->deny; +} + +void aa_profile_match_label(struct aa_profile *profile, const char *label, + int type, struct aa_perms *perms) +{ + /* TODO: doesn't yet handle extended types */ + unsigned int state; + if (profile->policy.dfa) { + state = aa_dfa_next(profile->policy.dfa, + profile->policy.start[AA_CLASS_LABEL], + type); + state = aa_dfa_match(profile->policy.dfa, state, label); + aa_compute_perms(profile->policy.dfa, state, perms); + } else + memset(perms, 0, sizeof(*perms)); +} + + +int aa_profile_label_perm(struct aa_profile *profile, struct aa_profile *target, + u32 request, int type, u32 *deny, + struct common_audit_data *sa) +{ + struct aa_perms perms; + aad(sa)->label = &profile->label; + aad(sa)->target = target; + aad(sa)->request = request; + + aa_profile_match_label(profile, target->base.hname, type, &perms); + aa_apply_modes_to_perms(profile, &perms); + *deny |= request & perms.deny; + return aa_check_perms(profile, &perms, request, sa, aa_audit_perms_cb); +} + +/** + * aa_check_perms - do audit mode selection based on perms set + * @profile: profile being checked + * @perms: perms computed for the request + * @request: requested perms + * @deny: Returns: explicit deny set + * @sa: initialized audit structure (MAY BE NULL if not auditing) + * @cb: callback fn for tpye specific fields (MAY BE NULL) + * + * Returns: 0 if permission else error code + * + * Note: profile audit modes need to be set before calling by setting the + * perm masks appropriately. + * + * If not auditing then complain mode is not enabled and the + * error code will indicate whether there was an explicit deny + * with a positive value. + */ +int aa_check_perms(struct aa_profile *profile, struct aa_perms *perms, + u32 request, struct common_audit_data *sa, + void (*cb) (struct audit_buffer *, void *)) +{ + int type, error; + bool stop = false; + u32 denied = request & (~perms->allow | perms->deny); + if (likely(!denied)) { + /* mask off perms that are not being force audited */ + request &= perms->audit; + if (!request || !sa) + return 0; + + type = AUDIT_APPARMOR_AUDIT; + error = 0; + } else { + error = -EACCES; + + if (denied & perms->kill) + type = AUDIT_APPARMOR_KILL; + else if (denied == (denied & perms->complain)) + type = AUDIT_APPARMOR_ALLOWED; + else + type = AUDIT_APPARMOR_DENIED; + + if (denied & perms->stop) + stop = true; + if (denied == (denied & perms->hide)) + error = -ENOENT; + + denied &= ~perms->quiet; + if (type != AUDIT_APPARMOR_ALLOWED && (!sa || !denied)) + return error; + } + + if (sa) { + aad(sa)->label = &profile->label; + aad(sa)->request = request; + aad(sa)->denied = denied; + aad(sa)->error = error; + aa_audit_msg(type, sa, cb); + } + + if (type == AUDIT_APPARMOR_ALLOWED) + error = 0; + + return error; +} + +const char *aa_imode_name(umode_t mode) +{ + switch(mode & S_IFMT) { + case S_IFSOCK: + return "sock"; + case S_IFLNK: + return "link"; + case S_IFREG: + return "reg"; + case S_IFBLK: + return "blkdev"; + case S_IFDIR: + return "dir"; + case S_IFCHR: + return "chrdev"; + case S_IFIFO: + return "fifo"; + } + return "unknown"; +} + +const char *aa_peer_name(struct aa_profile *peer) +{ + if (profile_unconfined(peer)) + return "unconfined"; + + return peer->base.hname; +} --- linux-raspi2-4.2.0.orig/security/apparmor/lsm.c +++ linux-raspi2-4.2.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" @@ -32,19 +33,24 @@ #include "include/context.h" #include "include/file.h" #include "include/ipc.h" +#include "include/net.h" #include "include/path.h" #include "include/policy.h" #include "include/procattr.h" +#include "include/mount.h" /* Flag indicating whether initialization completed */ int apparmor_initialized __initdata; +DEFINE_PER_CPU(struct aa_buffers, aa_buffers); + + /* * LSM hook functions */ /* - * free the associated aa_task_cxt and put its profiles + * free the associated aa_task_cxt and put its labels */ static void apparmor_cred_free(struct cred *cred) { @@ -96,34 +102,58 @@ static int apparmor_ptrace_access_check(struct task_struct *child, unsigned int mode) { - return aa_ptrace(current, child, mode); + struct aa_label *tracer, *tracee; + int error; + + tracer = aa_current_label(); + tracee = aa_get_task_label(child); + error = aa_may_ptrace(tracer, tracee, + mode == PTRACE_MODE_READ ? AA_PTRACE_READ : AA_PTRACE_TRACE); + aa_put_label(tracee); + return error; } static int apparmor_ptrace_traceme(struct task_struct *parent) { - return aa_ptrace(parent, current, PTRACE_MODE_ATTACH); + struct aa_label *tracer, *tracee; + int error; + + tracee = aa_current_label(); + tracer = aa_get_task_label(parent); + error = aa_may_ptrace(tracer, tracee, AA_PTRACE_TRACE); + aa_put_label(tracer); + return error; } /* Derived from security/commoncap.c:cap_capget */ static int apparmor_capget(struct task_struct *target, kernel_cap_t *effective, kernel_cap_t *inheritable, kernel_cap_t *permitted) { - struct aa_profile *profile; + struct aa_label *label; const struct cred *cred; rcu_read_lock(); cred = __task_cred(target); - profile = aa_cred_profile(cred); + label = aa_get_newest_cred_label(cred); /* * cap_capget is stacked ahead of this and will * initialize effective and permitted. */ - if (!unconfined(profile) && !COMPLAIN_MODE(profile)) { - *effective = cap_intersect(*effective, profile->caps.allow); - *permitted = cap_intersect(*permitted, profile->caps.allow); + if (!unconfined(label)) { + struct aa_profile *profile; + struct label_it i; + label_for_each_confined(i, label, profile) { + if (COMPLAIN_MODE(profile)) + continue; + *effective = cap_intersect(*effective, + profile->caps.allow); + *permitted = cap_intersect(*permitted, + profile->caps.allow); + } } rcu_read_unlock(); + aa_put_label(label); return 0; } @@ -131,12 +161,14 @@ static int apparmor_capable(const struct cred *cred, struct user_namespace *ns, int cap, int audit) { - struct aa_profile *profile; + struct aa_label *label; int error = 0; - profile = aa_cred_profile(cred); - if (!unconfined(profile)) - error = aa_capable(profile, cap, audit); + label = aa_get_newest_cred_label(cred); + if (!unconfined(label)) + error = aa_capable(label, cap, audit); + aa_put_label(label); + return error; } @@ -152,16 +184,36 @@ static int common_perm(int op, struct path *path, u32 mask, struct path_cond *cond) { - struct aa_profile *profile; + struct aa_label *label; int error = 0; - profile = __aa_current_profile(); - if (!unconfined(profile)) - error = aa_path_perm(op, profile, path, 0, mask, cond); + label = aa_begin_current_label(); + if (!unconfined(label)) + error = aa_path_perm(op, label, path, 0, mask, cond); + aa_end_current_label(label); return error; } +static int common_perm_cond(int op, struct path *path, u32 mask) +{ + struct path_cond cond = { d_backing_inode(path->dentry)->i_uid, + d_backing_inode(path->dentry)->i_mode + }; + + return common_perm(op, path, mask, &cond); +} + +static void apparmor_inode_free_security(struct inode *inode) +{ + struct aa_label *cxt = inode_cxt(inode); + + if (cxt) { + inode_cxt(inode) = NULL; + aa_put_label(cxt); + } +} + /** * common_perm_dir_dentry - common permission wrapper when path is dir, dentry * @op: operation being checked @@ -194,11 +246,8 @@ struct dentry *dentry, u32 mask) { struct path path = { mnt, dentry }; - struct path_cond cond = { d_backing_inode(dentry)->i_uid, - d_backing_inode(dentry)->i_mode - }; - return common_perm(op, &path, mask, &cond); + return common_perm_cond(op, &path, mask); } /** @@ -216,7 +265,7 @@ struct inode *inode = d_backing_inode(dentry); struct path_cond cond = { }; - if (!inode || !dir->mnt || !mediated_filesystem(dentry)) + if (!inode || !dir->mnt || !path_mediated_fs(dentry)) return 0; cond.uid = inode->i_uid; @@ -240,7 +289,7 @@ { struct path_cond cond = { current_fsuid(), mode }; - if (!dir->mnt || !mediated_filesystem(dir->dentry)) + if (!dir->mnt || !path_mediated_fs(dir->dentry)) return 0; return common_perm_dir_dentry(op, dir, dentry, mask, &cond); @@ -271,15 +320,10 @@ static int apparmor_path_truncate(struct path *path) { - struct path_cond cond = { d_backing_inode(path->dentry)->i_uid, - d_backing_inode(path->dentry)->i_mode - }; - - if (!path->mnt || !mediated_filesystem(path->dentry)) + if (!path->mnt || !path_mediated_fs(path->dentry)) return 0; - return common_perm(OP_TRUNC, path, MAY_WRITE | AA_MAY_META_WRITE, - &cond); + return common_perm_cond(OP_TRUNC, path, MAY_WRITE | AA_MAY_SETATTR); } static int apparmor_path_symlink(struct path *dir, struct dentry *dentry, @@ -292,42 +336,42 @@ static int apparmor_path_link(struct dentry *old_dentry, struct path *new_dir, struct dentry *new_dentry) { - struct aa_profile *profile; + struct aa_label *label; int error = 0; - if (!mediated_filesystem(old_dentry)) + if (!path_mediated_fs(old_dentry)) return 0; - profile = aa_current_profile(); - if (!unconfined(profile)) - error = aa_path_link(profile, old_dentry, new_dir, new_dentry); + label = aa_current_label(); + if (!unconfined(label)) + error = aa_path_link(label, old_dentry, new_dir, new_dentry); return error; } static int apparmor_path_rename(struct path *old_dir, struct dentry *old_dentry, struct path *new_dir, struct dentry *new_dentry) { - struct aa_profile *profile; + struct aa_label *label; int error = 0; - if (!mediated_filesystem(old_dentry)) + if (!path_mediated_fs(old_dentry)) return 0; - profile = aa_current_profile(); - if (!unconfined(profile)) { + label = aa_current_label(); + if (!unconfined(label)) { struct path old_path = { old_dir->mnt, old_dentry }; struct path new_path = { new_dir->mnt, new_dentry }; struct path_cond cond = { d_backing_inode(old_dentry)->i_uid, d_backing_inode(old_dentry)->i_mode }; - error = aa_path_perm(OP_RENAME_SRC, profile, &old_path, 0, - MAY_READ | AA_MAY_META_READ | MAY_WRITE | - AA_MAY_META_WRITE | AA_MAY_DELETE, + error = aa_path_perm(OP_RENAME_SRC, label, &old_path, 0, + MAY_READ | AA_MAY_GETATTR | MAY_WRITE | + AA_MAY_SETATTR | AA_MAY_DELETE, &cond); if (!error) - error = aa_path_perm(OP_RENAME_DEST, profile, &new_path, - 0, MAY_WRITE | AA_MAY_META_WRITE | + error = aa_path_perm(OP_RENAME_DEST, label, &new_path, + 0, MAY_WRITE | AA_MAY_SETATTR | AA_MAY_CREATE, &cond); } @@ -336,40 +380,36 @@ static int apparmor_path_chmod(struct path *path, umode_t mode) { - if (!mediated_filesystem(path->dentry)) + if (!path_mediated_fs(path->dentry)) return 0; - return common_perm_mnt_dentry(OP_CHMOD, path->mnt, path->dentry, AA_MAY_CHMOD); + return common_perm_cond(OP_CHMOD, path, AA_MAY_CHMOD); } static int apparmor_path_chown(struct path *path, kuid_t uid, kgid_t gid) { - struct path_cond cond = { d_backing_inode(path->dentry)->i_uid, - d_backing_inode(path->dentry)->i_mode - }; - - if (!mediated_filesystem(path->dentry)) + if (!path_mediated_fs(path->dentry)) return 0; - return common_perm(OP_CHOWN, path, AA_MAY_CHOWN, &cond); + return common_perm_cond(OP_CHOWN, path, AA_MAY_CHOWN); } static int apparmor_inode_getattr(const struct path *path) { - if (!mediated_filesystem(path->dentry)) + if (!path_mediated_fs(path->dentry)) return 0; return common_perm_mnt_dentry(OP_GETATTR, path->mnt, path->dentry, - AA_MAY_META_READ); + AA_MAY_GETATTR); } static int apparmor_file_open(struct file *file, const struct cred *cred) { - struct aa_file_cxt *fcxt = file->f_security; - struct aa_profile *profile; + struct aa_file_cxt *fcxt = file_cxt(file); + struct aa_label *label; int error = 0; - if (!mediated_filesystem(file->f_path.dentry)) + if (!path_mediated_fs(file->f_path.dentry)) return 0; /* If in exec, permission is handled by bprm hooks. @@ -382,16 +422,17 @@ return 0; } - profile = aa_cred_profile(cred); - if (!unconfined(profile)) { + label = aa_get_newest_cred_label(cred); + if (!unconfined(label)) { struct inode *inode = file_inode(file); struct path_cond cond = { inode->i_uid, inode->i_mode }; - error = aa_path_perm(OP_OPEN, profile, &file->f_path, 0, + error = aa_path_perm(OP_OPEN, label, &file->f_path, 0, aa_map_file_to_perms(file), &cond); /* todo cache full allowed permissions set and state */ fcxt->allow = aa_map_file_to_perms(file); } + aa_put_label(label); return error; } @@ -399,8 +440,8 @@ static int apparmor_file_alloc_security(struct file *file) { /* freed by apparmor_file_free_security */ - file->f_security = aa_alloc_file_context(GFP_KERNEL); - if (!file->f_security) + file->f_security = aa_alloc_file_cxt(aa_current_label(), GFP_KERNEL); + if (!file_cxt(file)) return -ENOMEM; return 0; @@ -408,39 +449,26 @@ static void apparmor_file_free_security(struct file *file) { - struct aa_file_cxt *cxt = file->f_security; - - aa_free_file_context(cxt); + aa_free_file_cxt(file_cxt(file)); } static int common_file_perm(int op, struct file *file, u32 mask) { - struct aa_file_cxt *fcxt = file->f_security; - struct aa_profile *profile, *fprofile = aa_cred_profile(file->f_cred); + struct aa_label *label; int error = 0; - BUG_ON(!fprofile); - - if (!file->f_path.mnt || - !mediated_filesystem(file->f_path.dentry)) - return 0; - - profile = __aa_current_profile(); - - /* revalidate access, if task is unconfined, or the cached cred - * doesn't match or if the request is for more permissions than - * was granted. - * - * Note: the test for !unconfined(fprofile) is to handle file - * delegation from unconfined tasks - */ - if (!unconfined(profile) && !unconfined(fprofile) && - ((fprofile != profile) || (mask & ~fcxt->allow))) - error = aa_file_perm(op, profile, file, mask); + label = aa_begin_current_label(); + error = aa_file_perm(op, label, file, mask); + aa_end_current_label(label); return error; } +static int apparmor_file_receive(struct file *file) +{ + return common_file_perm(OP_FRECEIVE, file, aa_map_file_to_perms(file)); +} + static int apparmor_file_permission(struct file *file, int mask) { return common_file_perm(OP_FPERM, file, mask); @@ -461,7 +489,7 @@ { int mask = 0; - if (!file || !file->f_security) + if (!file || !file_cxt(file)) return 0; if (prot & PROT_READ) @@ -491,6 +519,64 @@ !(vma->vm_flags & VM_SHARED) ? MAP_PRIVATE : 0); } +static int apparmor_sb_mount(const char *dev_name, struct path *path, + const char *type, unsigned long flags, void *data) +{ + struct aa_label *label; + int error = 0; + + /* Discard magic */ + if ((flags & MS_MGC_MSK) == MS_MGC_VAL) + flags &= ~MS_MGC_MSK; + + flags &= ~AA_MS_IGNORE_MASK; + + label = aa_begin_current_label(); + if (!unconfined(label)) { + if (flags & MS_REMOUNT) + error = aa_remount(label, path, flags, data); + else if (flags & MS_BIND) + error = aa_bind_mount(label, path, dev_name, flags); + else if (flags & (MS_SHARED | MS_PRIVATE | MS_SLAVE | + MS_UNBINDABLE)) + error = aa_mount_change_type(label, path, flags); + else if (flags & MS_MOVE) + error = aa_move_mount(label, path, dev_name); + else + error = aa_new_mount(label, dev_name, path, type, + flags, data); + } + aa_end_current_label(label); + + return error; +} + +static int apparmor_sb_umount(struct vfsmount *mnt, int flags) +{ + struct aa_label *label; + int error = 0; + + label = aa_begin_current_label(); + if (!unconfined(label)) + error = aa_umount(label, mnt, flags); + aa_end_current_label(label); + + return error; +} + +static int apparmor_sb_pivotroot(struct path *old_path, struct path *new_path) +{ + struct aa_label *label; + int error = 0; + + label = aa_begin_current_label(); + if (!unconfined(label)) + error = aa_pivotroot(label, old_path, new_path); + aa_end_current_label(label); + + return error; +} + static int apparmor_getprocattr(struct task_struct *task, char *name, char **value) { @@ -498,21 +584,21 @@ /* released below */ const struct cred *cred = get_task_cred(task); struct aa_task_cxt *cxt = cred_cxt(cred); - struct aa_profile *profile = NULL; + struct aa_label *label = NULL; if (strcmp(name, "current") == 0) - profile = aa_get_newest_profile(cxt->profile); + label = aa_get_newest_label(cxt->label); else if (strcmp(name, "prev") == 0 && cxt->previous) - profile = aa_get_newest_profile(cxt->previous); + label = aa_get_newest_label(cxt->previous); else if (strcmp(name, "exec") == 0 && cxt->onexec) - profile = aa_get_newest_profile(cxt->onexec); + label = aa_get_newest_label(cxt->onexec); else error = -EINVAL; - if (profile) - error = aa_getprocattr(profile, value); + if (label) + error = aa_getprocattr(label, value); - aa_put_profile(profile); + aa_put_label(label); put_cred(cred); return error; @@ -521,11 +607,10 @@ static int apparmor_setprocattr(struct task_struct *task, char *name, void *value, size_t size) { - struct common_audit_data sa; - struct apparmor_audit_data aad = {0,}; char *command, *args = value; size_t arg_size; int error; + DEFINE_AUDIT_DATA(sa, LSM_AUDIT_DATA_NONE, OP_SETPROCATTR); if (size == 0) return -EINVAL; @@ -583,34 +668,472 @@ return error; fail: - sa.type = LSM_AUDIT_DATA_NONE; - sa.aad = &aad; - aad.profile = aa_current_profile(); - aad.op = OP_SETPROCATTR; - aad.info = name; - aad.error = -EINVAL; + aad(&sa)->label = aa_current_label(); + aad(&sa)->info = name; + aad(&sa)->error = -EINVAL; aa_audit_msg(AUDIT_APPARMOR_DENIED, &sa, NULL); return -EINVAL; } +/** + * apparmor_bprm_committing_creds - do task cleanup on committing new creds + * @bprm: binprm for the exec (NOT NULL) + */ +void apparmor_bprm_committing_creds(struct linux_binprm *bprm) +{ + struct aa_label *label = aa_current_raw_label(); + struct aa_task_cxt *new_cxt = cred_cxt(bprm->cred); + + /* bail out if unconfined or not changing profile */ + if ((new_cxt->label->replacedby == label->replacedby) || + (unconfined(new_cxt->label))) + return; + + aa_inherit_files(bprm->cred, current->files); + + current->pdeath_signal = 0; + + /* reset soft limits and set hard limits for the new label */ + __aa_transition_rlimits(label, new_cxt->label); +} + +/** + * apparmor_bprm_commited_cred - do cleanup after new creds committed + * @bprm: binprm for the exec (NOT NULL) + */ +void apparmor_bprm_committed_creds(struct linux_binprm *bprm) +{ + /* TODO: cleanup signals - ipc mediation */ + return; +} + static int apparmor_task_setrlimit(struct task_struct *task, unsigned int resource, struct rlimit *new_rlim) { - struct aa_profile *profile = __aa_current_profile(); + struct aa_label *label = aa_begin_current_label(); int error = 0; - if (!unconfined(profile)) - error = aa_task_setrlimit(profile, task, resource, new_rlim); + if (!unconfined(label)) + error = aa_task_setrlimit(label, task, resource, new_rlim); + aa_end_current_label(label); + + return error; +} + +/** + * 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_cxt *cxt; + + cxt = kzalloc(sizeof(*cxt), flags); + if (!cxt) + return -ENOMEM; + + SK_CXT(sk) = cxt; + //??? set local too current??? + + return 0; +} + +/** + * apparmor_sk_free_security - free the sk_security field + */ +static void apparmor_sk_free_security(struct sock *sk) +{ + struct aa_sk_cxt *cxt = SK_CXT(sk); + + SK_CXT(sk) = NULL; + aa_put_label(cxt->label); + aa_put_label(cxt->peer); + kfree(cxt); +} + +/** + * apparmor_clone_security - clone the sk_security field + */ +static void apparmor_sk_clone_security(const struct sock *sk, + struct sock *newsk) +{ + struct aa_sk_cxt *cxt = SK_CXT(sk); + struct aa_sk_cxt *new = SK_CXT(newsk); + + new->label = aa_get_label(cxt->label); + new->peer = aa_get_label(cxt->peer); +} + +/** + * 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_cxt *sk_cxt = SK_CXT(sk); + struct aa_sk_cxt *peer_cxt = SK_CXT(peer_sk); + struct aa_sk_cxt *new_cxt = SK_CXT(newsk); + struct aa_label *label; + int error; + + label = aa_begin_current_label(); + 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_cxt->label, OP_CONNECT, + (AA_MAY_ACCEPT | AA_MAY_SEND | AA_MAY_RECEIVE), + peer_sk, sk, label)); + } + aa_end_current_label(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_cxt->label) + new_cxt->label = aa_get_label(peer_cxt->label); + + /* Cross reference the peer labels for SO_PEERSEC */ + if (new_cxt->peer) + aa_put_label(new_cxt->peer); + + if (sk_cxt->peer) + aa_put_label(sk_cxt->peer); + + new_cxt->peer = aa_get_label(sk_cxt->label); + sk_cxt->peer = aa_get_label(peer_cxt->label); + + 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_cxt *peer_cxt = SK_CXT(peer->sk); + struct aa_label *label = aa_begin_current_label(); + int error; + + error = xcheck(aa_unix_peer_perm(label, OP_SENDMSG, AA_MAY_SEND, + sock->sk, peer->sk, NULL), + aa_unix_peer_perm(peer_cxt->label, OP_SENDMSG, AA_MAY_RECEIVE, + peer->sk, sock->sk, label)); + aa_end_current_label(label); + + return error; +} + +/** + * apparmor_socket_create - check perms before creating a new socket + */ +static int apparmor_socket_create(int family, int type, int protocol, int kern) +{ + struct aa_label *label; + + label = aa_current_label(); + if (kern || unconfined(label)) + return 0; + + return aa_sock_create_perm(label, family, type, protocol); +} + +/** + * apparmor_socket_post_create - setup the per-socket security struct + * + * Note: + * - kernel sockets currently labeled unconfined but we may want to + * move to a special kernel label + * - socket may not have sk here if created with sock_create_lite or + * sock_alloc. These should be accept cases which will be handled in + * sock_graft. + */ +static int apparmor_socket_post_create(struct socket *sock, int family, + int type, int protocol, int kern) +{ + struct aa_label *label; + + if (kern) + label = aa_get_label(¤t_ns()->unconfined->label); + else + label = aa_get_label(aa_current_label()); + + if (sock->sk) { + struct aa_sk_cxt *cxt = SK_CXT(sock->sk); + aa_put_label(cxt->label); + cxt->label = aa_get_label(label); + } + aa_put_label(label); + + return 0; +} + +/** + * apparmor_socket_bind - check perms before bind addr to socket + */ +static int apparmor_socket_bind(struct socket *sock, + struct sockaddr *address, int addrlen) +{ + return aa_sock_bind_perm(sock, address, addrlen); +} + +/** + * apparmor_socket_connect - check perms before connecting @sock to @address + */ +static int apparmor_socket_connect(struct socket *sock, + struct sockaddr *address, int addrlen) +{ + return aa_sock_connect_perm(sock, address, addrlen); +} + +/** + * apparmor_socket_list - check perms before allowing listen + */ +static int apparmor_socket_listen(struct socket *sock, int backlog) +{ + return aa_sock_listen_perm(sock, backlog); +} + +/** + * apparmor_socket_accept - check perms before accepting a new connection. + * + * Note: while @newsock is created and has some information, the accept + * has not been done. + */ +static int apparmor_socket_accept(struct socket *sock, struct socket *newsock) +{ + return aa_sock_accept_perm(sock, newsock); +} + +/** + * apparmor_socket_sendmsg - check perms before sending msg to another socket + */ +static int apparmor_socket_sendmsg(struct socket *sock, + struct msghdr *msg, int size) +{ + int error = aa_sock_msg_perm(OP_SENDMSG, AA_MAY_SEND, sock, msg, size); + if (!error) { + /* TODO: setup delegation on scm rights + see smack for AF_INET, AF_INET6 */ + ; + } return error; } +/** + * apparmor_socket_recvmsg - check perms before receiving a message + */ +static int apparmor_socket_recvmsg(struct socket *sock, + struct msghdr *msg, int size, int flags) +{ + return aa_sock_msg_perm(OP_RECVMSG, AA_MAY_RECEIVE, sock, msg, size); +} + +/** + * apparmor_socket_getsockname - check perms before getting the local address + */ +static int apparmor_socket_getsockname(struct socket *sock) +{ + return aa_sock_perm(OP_GETSOCKNAME, AA_MAY_GETATTR, sock); +} + +/** + * apparmor_socket_getpeername - check perms before getting remote address + */ +static int apparmor_socket_getpeername(struct socket *sock) +{ + return aa_sock_perm(OP_GETPEERNAME, AA_MAY_GETATTR, sock); +} + +/** + * apparmor_getsockopt - check perms before getting socket options + */ +static int apparmor_socket_getsockopt(struct socket *sock, int level, + int optname) +{ + return aa_sock_opt_perm(OP_GETSOCKOPT, AA_MAY_GETOPT, sock, + level, optname); +} + +/** + * apparmor_setsockopt - check perms before setting socket options + */ +static int apparmor_socket_setsockopt(struct socket *sock, int level, + int optname) +{ + return aa_sock_opt_perm(OP_SETSOCKOPT, AA_MAY_SETOPT, sock, + level, optname); +} + +/** + * apparmor_socket_shutdown - check perms before shutting down @sock conn + */ +static int apparmor_socket_shutdown(struct socket *sock, int how) +{ + return aa_sock_perm(OP_SHUTDOWN, AA_MAY_SHUTDOWN, sock); +} + +/** + * apparmor_socket_sock_recv_skb - check perms before associating skb to sk + * + * Note: can not sleep maybe called with locks held + +dont want protocol specific in __skb_recv_datagram() +to deny an incoming connection socket_sock_rcv_skb() + + */ +static int apparmor_socket_sock_rcv_skb(struct sock *sk, struct sk_buff *skb) +{ + /* TODO: */ + return 0; +} + + +static struct aa_label *sk_peer_label(struct sock *sk) +{ + struct sock *peer_sk; + struct aa_sk_cxt *cxt = SK_CXT(sk); + + if (cxt->peer) + return cxt->peer; + + 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(sk); + if (peer_sk) { + cxt = SK_CXT(peer_sk); + if (cxt->label) + return cxt->label; + } + + return ERR_PTR(-ENOPROTOOPT); +} + +/** + * apparmor_socket_getpeersec_stream - get security context of peer + * + * Note: for tcp only valid if using ipsec or cipso on lan + */ +static int apparmor_socket_getpeersec_stream(struct socket *sock, + char __user *optval, + int __user *optlen, unsigned len) +{ + char *name; + int slen, error = 0; + struct aa_label *label = aa_current_label(); + struct aa_label *peer = sk_peer_label(sock->sk); + + if (IS_ERR(peer)) + return PTR_ERR(peer); + + slen = aa_label_asprint(&name, labels_ns(label), peer, true, GFP_KERNEL); + /* don't include terminating \0 in slen, it breaks some apps */ + if (slen < 0) { + error = -ENOMEM; + } else { + if (slen > len) { + error = -ERANGE; + } else if (copy_to_user(optval, name, slen)) { + error = -EFAULT; + goto out; + } + if (put_user(slen, optlen)) + error = -EFAULT; + out: + kfree(name); + + } + + return error; +} + +/** + * 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, and netlabel */ + return -ENOPROTOOPT; +} + +/** + * apparmor_sock_graft - Initialize newly created socket + * @sk: child sock + * @parent: parent socket + * + * Note: could set off of SOCK_CXT(parent) but need to track inode and we can + * just set sk security information off of current creating process label + * Labeling of sk for accept case - probably should be sock based + * instead of task, because of the case where an implicitly labeled + * socket is shared by different tasks. + */ +static void apparmor_sock_graft(struct sock *sk, struct socket *parent) +{ + struct aa_sk_cxt *cxt = SK_CXT(sk); + if (!cxt->label) + cxt->label = aa_get_current_label(); +} + +static int apparmor_task_kill(struct task_struct *target, struct siginfo *info, + int sig, u32 secid) +{ + struct aa_label *cl, *tl; + int error; + + if (secid) + /* TODO: after secid to label mapping is done. + * Dealing with USB IO specific behavior + */ + return 0; + cl = aa_begin_current_label(); + tl = aa_get_task_label(target); + error = aa_may_signal(cl, tl, sig); + aa_put_label(tl); + aa_end_current_label(cl); + + return error; +} + +#ifndef LSM_HOOKS_NAME +#define LSM_HOOKS_NAME(X) //.name = (X), +#endif static struct security_hook_list apparmor_hooks[] = { + LSM_HOOKS_NAME("apparmor") + LSM_HOOK_INIT(ptrace_access_check, apparmor_ptrace_access_check), LSM_HOOK_INIT(ptrace_traceme, apparmor_ptrace_traceme), LSM_HOOK_INIT(capget, apparmor_capget), LSM_HOOK_INIT(capable, apparmor_capable), + LSM_HOOK_INIT(inode_free_security, apparmor_inode_free_security), + + LSM_HOOK_INIT(sb_mount, apparmor_sb_mount), + LSM_HOOK_INIT(sb_umount, apparmor_sb_umount), + LSM_HOOK_INIT(sb_pivotroot, apparmor_sb_pivotroot), + LSM_HOOK_INIT(path_link, apparmor_path_link), LSM_HOOK_INIT(path_unlink, apparmor_path_unlink), LSM_HOOK_INIT(path_symlink, apparmor_path_symlink), @@ -624,16 +1147,43 @@ LSM_HOOK_INIT(inode_getattr, apparmor_inode_getattr), LSM_HOOK_INIT(file_open, apparmor_file_open), + LSM_HOOK_INIT(file_receive, apparmor_file_receive), LSM_HOOK_INIT(file_permission, apparmor_file_permission), LSM_HOOK_INIT(file_alloc_security, apparmor_file_alloc_security), LSM_HOOK_INIT(file_free_security, apparmor_file_free_security), LSM_HOOK_INIT(mmap_file, apparmor_mmap_file), + LSM_HOOK_INIT(mmap_addr, cap_mmap_addr), LSM_HOOK_INIT(file_mprotect, apparmor_file_mprotect), LSM_HOOK_INIT(file_lock, apparmor_file_lock), 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), + LSM_HOOK_INIT(socket_connect, apparmor_socket_connect), + LSM_HOOK_INIT(socket_listen, apparmor_socket_listen), + LSM_HOOK_INIT(socket_accept, apparmor_socket_accept), + LSM_HOOK_INIT(socket_sendmsg, apparmor_socket_sendmsg), + LSM_HOOK_INIT(socket_recvmsg, apparmor_socket_recvmsg), + LSM_HOOK_INIT(socket_getsockname, apparmor_socket_getsockname), + LSM_HOOK_INIT(socket_getpeername, apparmor_socket_getpeername), + LSM_HOOK_INIT(socket_getsockopt, apparmor_socket_getsockopt), + LSM_HOOK_INIT(socket_setsockopt, apparmor_socket_setsockopt), + LSM_HOOK_INIT(socket_shutdown, apparmor_socket_shutdown), + LSM_HOOK_INIT(socket_sock_rcv_skb, apparmor_socket_sock_rcv_skb), + 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), + LSM_HOOK_INIT(cred_alloc_blank, apparmor_cred_alloc_blank), LSM_HOOK_INIT(cred_free, apparmor_cred_free), LSM_HOOK_INIT(cred_prepare, apparmor_cred_prepare), @@ -645,6 +1195,7 @@ LSM_HOOK_INIT(bprm_secureexec, apparmor_bprm_secureexec), LSM_HOOK_INIT(task_setrlimit, apparmor_task_setrlimit), + LSM_HOOK_INIT(task_kill, apparmor_task_kill), }; /* @@ -692,6 +1243,10 @@ module_param_call(mode, param_set_mode, param_get_mode, &aa_g_profile_mode, S_IRUSR | S_IWUSR); +/* whether policy verification hashing is enabled */ +bool aa_g_hash_policy = CONFIG_SECURITY_APPARMOR_HASH_DEFAULT; +module_param_named(hash_policy, aa_g_hash_policy, aabool, S_IRUSR | S_IWUSR); + /* Debug mode */ bool aa_g_debug; module_param_named(debug, aa_g_debug, aabool, S_IRUSR | S_IWUSR); @@ -735,6 +1290,11 @@ static bool apparmor_enabled = CONFIG_SECURITY_APPARMOR_BOOTPARAM_VALUE; module_param_named(enabled, apparmor_enabled, bool, S_IRUGO); +/* Boot time to set use of default or unconfined as initial profile */ +bool aa_g_unconfined_init = CONFIG_SECURITY_APPARMOR_UNCONFINED_INIT; +module_param_named(unconfined, aa_g_unconfined_init, bool, S_IRUSR); + + static int __init apparmor_enabled_setup(char *str) { unsigned long enabled; @@ -863,8 +1423,6 @@ /** * set_init_cxt - set a task context and profile on the first task. - * - * TODO: allow setting an alternate profile than unconfined */ static int __init set_init_cxt(void) { @@ -875,12 +1433,56 @@ if (!cxt) return -ENOMEM; - cxt->profile = aa_get_profile(root_ns->unconfined); + if (!aa_g_unconfined_init) { + cxt->label = aa_setup_default_label(); + if (!cxt->label) { + aa_free_task_context(cxt); + return -ENOMEM; + } + /* fs setup of default is done in aa_create_aafs() */ + } else + cxt->label = aa_get_label(&root_ns->unconfined->label); cred_cxt(cred) = cxt; return 0; } +static void destroy_buffers(void) +{ + u32 i, j; + + for_each_possible_cpu(i) { + for_each_cpu_buffer(j) { + kfree(per_cpu(aa_buffers, i).buf[j]); + per_cpu(aa_buffers, i).buf[j] = NULL; + } + } +} + +static int __init alloc_buffers(void) +{ + u32 i, j; + + for_each_possible_cpu(i) { + for_each_cpu_buffer(j) { + char *buffer; + if (cpu_to_node(i) > num_online_nodes()) + /* fallback to kmalloc for offline nodes */ + buffer = kmalloc(aa_g_path_max, GFP_KERNEL); + else + buffer = kmalloc_node(aa_g_path_max, GFP_KERNEL, + cpu_to_node(i)); + if (!buffer) { + destroy_buffers(); + return -ENOMEM; + } + per_cpu(aa_buffers, i).buf[j] = buffer; + } + } + + return 0; +} + static int __init apparmor_init(void) { int error; @@ -897,11 +1499,17 @@ goto alloc_out; } + error = alloc_buffers(); + if (error) { + AA_ERROR("Unable to allocate work buffers\n"); + goto buffers_out; + } + error = set_init_cxt(); if (error) { AA_ERROR("Failed to set context on init task\n"); aa_free_root_ns(); - goto alloc_out; + goto buffers_out; } security_add_hooks(apparmor_hooks, ARRAY_SIZE(apparmor_hooks)); @@ -916,6 +1524,9 @@ return error; +buffers_out: + destroy_buffers(); + alloc_out: aa_destroy_aafs(); --- linux-raspi2-4.2.0.orig/security/apparmor/mount.c +++ linux-raspi2-4.2.0/security/apparmor/mount.c @@ -0,0 +1,703 @@ +/* + * AppArmor security module + * + * This file contains AppArmor mediation of files + * + * Copyright (C) 1998-2008 Novell/SUSE + * Copyright 2009-2012 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 + +#include "include/apparmor.h" +#include "include/audit.h" +#include "include/context.h" +#include "include/domain.h" +#include "include/file.h" +#include "include/match.h" +#include "include/mount.h" +#include "include/path.h" +#include "include/policy.h" + + +static void audit_mnt_flags(struct audit_buffer *ab, unsigned long flags) +{ + if (flags & MS_RDONLY) + audit_log_format(ab, "ro"); + else + audit_log_format(ab, "rw"); + if (flags & MS_NOSUID) + audit_log_format(ab, ", nosuid"); + if (flags & MS_NODEV) + audit_log_format(ab, ", nodev"); + if (flags & MS_NOEXEC) + audit_log_format(ab, ", noexec"); + if (flags & MS_SYNCHRONOUS) + audit_log_format(ab, ", sync"); + if (flags & MS_REMOUNT) + audit_log_format(ab, ", remount"); + if (flags & MS_MANDLOCK) + audit_log_format(ab, ", mand"); + if (flags & MS_DIRSYNC) + audit_log_format(ab, ", dirsync"); + if (flags & MS_NOATIME) + audit_log_format(ab, ", noatime"); + if (flags & MS_NODIRATIME) + audit_log_format(ab, ", nodiratime"); + if (flags & MS_BIND) + audit_log_format(ab, flags & MS_REC ? ", rbind" : ", bind"); + if (flags & MS_MOVE) + audit_log_format(ab, ", move"); + if (flags & MS_SILENT) + audit_log_format(ab, ", silent"); + if (flags & MS_POSIXACL) + audit_log_format(ab, ", acl"); + if (flags & MS_UNBINDABLE) + audit_log_format(ab, flags & MS_REC ? ", runbindable" : + ", unbindable"); + if (flags & MS_PRIVATE) + audit_log_format(ab, flags & MS_REC ? ", rprivate" : + ", private"); + if (flags & MS_SLAVE) + audit_log_format(ab, flags & MS_REC ? ", rslave" : + ", slave"); + if (flags & MS_SHARED) + audit_log_format(ab, flags & MS_REC ? ", rshared" : + ", shared"); + if (flags & MS_RELATIME) + audit_log_format(ab, ", relatime"); + if (flags & MS_I_VERSION) + audit_log_format(ab, ", iversion"); + if (flags & MS_STRICTATIME) + audit_log_format(ab, ", strictatime"); + if (flags & MS_NOUSER) + audit_log_format(ab, ", nouser"); +} + +/** + * audit_cb - call back for mount specific audit fields + * @ab: audit_buffer (NOT NULL) + * @va: audit struct to audit values of (NOT NULL) + */ +static void audit_cb(struct audit_buffer *ab, void *va) +{ + struct common_audit_data *sa = va; + + if (aad(sa)->mnt.type) { + audit_log_format(ab, " fstype="); + audit_log_untrustedstring(ab, aad(sa)->mnt.type); + } + if (aad(sa)->mnt.src_name) { + audit_log_format(ab, " srcname="); + audit_log_untrustedstring(ab, aad(sa)->mnt.src_name); + } + if (aad(sa)->mnt.trans) { + audit_log_format(ab, " trans="); + audit_log_untrustedstring(ab, aad(sa)->mnt.trans); + } + if (aad(sa)->mnt.flags || aad(sa)->op == OP_MOUNT) { + audit_log_format(ab, " flags=\""); + audit_mnt_flags(ab, aad(sa)->mnt.flags); + audit_log_format(ab, "\""); + } + if (aad(sa)->mnt.data) { + audit_log_format(ab, " options="); + audit_log_untrustedstring(ab, aad(sa)->mnt.data); + } +} + +/** + * audit_mount - handle the auditing of mount operations + * @profile: the profile being enforced (NOT NULL) + * @op: operation being mediated (NOT NULL) + * @name: name of object being mediated (MAYBE NULL) + * @src_name: src_name of object being mediated (MAYBE_NULL) + * @type: type of filesystem (MAYBE_NULL) + * @trans: name of trans (MAYBE NULL) + * @flags: filesystem idependent mount flags + * @data: filesystem mount flags + * @request: permissions requested + * @perms: the permissions computed for the request (NOT NULL) + * @info: extra information message (MAYBE NULL) + * @error: 0 if operation allowed else failure error code + * + * Returns: %0 or error on failure + */ +static int audit_mount(struct aa_profile *profile, int op, const char *name, + const char *src_name, const char *type, + const char *trans, unsigned long flags, + const void *data, u32 request, struct file_perms *perms, + const char *info, int error) +{ + int audit_type = AUDIT_APPARMOR_AUTO; + DEFINE_AUDIT_DATA(sa, LSM_AUDIT_DATA_NONE, op); + + if (likely(!error)) { + u32 mask = perms->audit; + + if (unlikely(AUDIT_MODE(profile) == AUDIT_ALL)) + mask = 0xffff; + + /* mask off perms that are not being force audited */ + request &= mask; + + if (likely(!request)) + return 0; + audit_type = AUDIT_APPARMOR_AUDIT; + } else { + /* only report permissions that were denied */ + request = request & ~perms->allow; + + if (request & perms->kill) + audit_type = AUDIT_APPARMOR_KILL; + + /* quiet known rejects, assumes quiet and kill do not overlap */ + if ((request & perms->quiet) && + AUDIT_MODE(profile) != AUDIT_NOQUIET && + AUDIT_MODE(profile) != AUDIT_ALL) + request &= ~perms->quiet; + + if (!request) + return COMPLAIN_MODE(profile) ? + complain_error(error) : error; + } + + aad(&sa)->name = name; + aad(&sa)->mnt.src_name = src_name; + aad(&sa)->mnt.type = type; + aad(&sa)->mnt.trans = trans; + aad(&sa)->mnt.flags = flags; + if (data && (perms->audit & AA_AUDIT_DATA)) + aad(&sa)->mnt.data = data; + aad(&sa)->info = info; + aad(&sa)->error = error; + + return aa_audit(audit_type, profile, &sa, audit_cb); +} + +/** + * match_mnt_flags - Do an ordered match on mount flags + * @dfa: dfa to match against + * @state: state to start in + * @flags: mount flags to match against + * + * Mount flags are encoded as an ordered match. This is done instead of + * checking against a simple bitmask, to allow for logical operations + * on the flags. + * + * Returns: next state after flags match + */ +static unsigned int match_mnt_flags(struct aa_dfa *dfa, unsigned int state, + unsigned long flags) +{ + unsigned int i; + + for (i = 0; i <= 31 ; ++i) { + if ((1 << i) & flags) + state = aa_dfa_next(dfa, state, i + 1); + } + + return state; +} + +/** + * compute_mnt_perms - compute mount permission associated with @state + * @dfa: dfa to match against (NOT NULL) + * @state: state match finished in + * + * Returns: mount permissions + */ +static struct file_perms compute_mnt_perms(struct aa_dfa *dfa, + unsigned int state) +{ + struct file_perms perms; + + perms.kill = 0; + perms.allow = dfa_user_allow(dfa, state); + perms.audit = dfa_user_audit(dfa, state); + perms.quiet = dfa_user_quiet(dfa, state); + perms.xindex = dfa_user_xindex(dfa, state); + + return perms; +} + +static const char *mnt_info_table[] = { + "match succeeded", + "failed mntpnt match", + "failed srcname match", + "failed type match", + "failed flags match", + "failed data match" +}; + +/* + * Returns 0 on success else element that match failed in, this is the + * index into the mnt_info_table above + */ +static int do_match_mnt(struct aa_dfa *dfa, unsigned int start, + const char *mntpnt, const char *devname, + const char *type, unsigned long flags, + void *data, bool binary, struct file_perms *perms) +{ + unsigned int state; + + state = aa_dfa_match(dfa, start, mntpnt); + state = aa_dfa_null_transition(dfa, state); + if (!state) + return 1; + + if (devname) + state = aa_dfa_match(dfa, state, devname); + state = aa_dfa_null_transition(dfa, state); + if (!state) + return 2; + + if (type) + state = aa_dfa_match(dfa, state, type); + state = aa_dfa_null_transition(dfa, state); + if (!state) + return 3; + + state = match_mnt_flags(dfa, state, flags); + if (!state) + return 4; + *perms = compute_mnt_perms(dfa, state); + if (perms->allow & AA_MAY_MOUNT) + return 0; + + /* only match data if not binary and the DFA flags data is expected */ + if (data && !binary && (perms->allow & AA_MNT_CONT_MATCH)) { + state = aa_dfa_null_transition(dfa, state); + if (!state) + return 4; + + state = aa_dfa_match(dfa, state, data); + if (!state) + return 5; + *perms = compute_mnt_perms(dfa, state); + if (perms->allow & AA_MAY_MOUNT) + return 0; + } + + /* failed at end of flags match */ + return 4; +} + +/** + * match_mnt - handle path matching for mount + * @profile: the confining profile + * @mntpnt: string for the mntpnt (NOT NULL) + * @devname: string for the devname/src_name (MAYBE NULL) + * @type: string for the dev type (MAYBE NULL) + * @flags: mount flags to match + * @data: fs mount data (MAYBE NULL) + * @binary: whether @data is binary + * @perms: Returns: permission found by the match + * @info: Returns: infomation string about the match for logging + * + * Returns: 0 on success else error + */ +static int match_mnt(struct aa_profile *profile, const char *mntpnt, + const char *devname, const char *type, + unsigned long flags, void *data, bool binary) +{ + struct file_perms perms = { }; + const char *info = NULL; + int pos, error = -EACCES; + + if (!profile->policy.dfa) + goto audit; + + pos = do_match_mnt(profile->policy.dfa, + profile->policy.start[AA_CLASS_MOUNT], + mntpnt, devname, type, flags, data, binary, &perms); + if (pos) { + info = mnt_info_table[pos]; + goto audit; + } + error = 0; + +audit: + return audit_mount(profile, OP_MOUNT, mntpnt, devname, type, NULL, + flags, data, AA_MAY_MOUNT, &perms, info, error); +} + +static int path_flags(struct aa_profile *profile, struct path *path) +{ + return profile->path_flags | + (S_ISDIR(path->dentry->d_inode->i_mode) ? PATH_IS_DIR : 0); +} + +int aa_remount(struct aa_label *label, struct path *path, unsigned long flags, + void *data) +{ + struct aa_profile *profile; + const char *name, *info = NULL; + char *buffer = NULL; + bool binary; + int error; + + binary = path->dentry->d_sb->s_type->fs_flags & FS_BINARY_MOUNTDATA; + + get_buffers(buffer); + error = aa_path_name(path, path_flags(labels_profile(label), path), + buffer, &name, &info, + labels_profile(label)->disconnected); + if (error) { + error = audit_mount(labels_profile(label), OP_MOUNT, name, NULL, + NULL, NULL, flags, data, AA_MAY_MOUNT, + &nullperms, info, error); + goto out; + } + + error = fn_for_each_confined(label, profile, + match_mnt(profile, name, NULL, NULL, flags, data, + binary)); + +out: + put_buffers(buffer); + + return error; +} + +int aa_bind_mount(struct aa_label *label, struct path *path, + const char *dev_name, unsigned long flags) +{ + struct aa_profile *profile; + char *buffer = NULL, *old_buffer = NULL; + const char *name, *old_name = NULL, *info = NULL; + struct path old_path; + int error; + + if (!dev_name || !*dev_name) + return -EINVAL; + + flags &= MS_REC | MS_BIND; + + get_buffers(buffer, old_buffer); + error = aa_path_name(path, path_flags(labels_profile(label), path), buffer, &name, + &info, labels_profile(label)->disconnected); + if (error) + goto error; + + error = kern_path(dev_name, LOOKUP_FOLLOW|LOOKUP_AUTOMOUNT, &old_path); + if (error) + goto error; + + error = aa_path_name(&old_path, path_flags(labels_profile(label), + &old_path), + old_buffer, &old_name, &info, + labels_profile(label)->disconnected); + path_put(&old_path); + if (error) + goto error; + + error = fn_for_each_confined(label, profile, + match_mnt(profile, name, old_name, NULL, flags, NULL, + false)); + +out: + put_buffers(buffer, old_buffer); + + return error; + +error: + error = fn_for_each(label, profile, + audit_mount(profile, OP_MOUNT, name, old_name, NULL, + NULL, flags, NULL, AA_MAY_MOUNT, &nullperms, + info, error)); + goto out; +} + +int aa_mount_change_type(struct aa_label *label, struct path *path, + unsigned long flags) +{ + struct aa_profile *profile; + char *buffer = NULL; + const char *name, *info = NULL; + int error; + + /* These are the flags allowed by do_change_type() */ + flags &= (MS_REC | MS_SILENT | MS_SHARED | MS_PRIVATE | MS_SLAVE | + MS_UNBINDABLE); + + get_buffers(buffer); + error = aa_path_name(path, path_flags(labels_profile(label), path), + buffer, &name, &info, + labels_profile(label)->disconnected); + if (error) { + error = fn_for_each(label, profile, + audit_mount(profile, OP_MOUNT, name, NULL, + NULL, NULL, flags, NULL, + AA_MAY_MOUNT, &nullperms, info, + error)); + goto out; + } + + error = fn_for_each_confined(label, profile, + match_mnt(profile, name, NULL, NULL, flags, NULL, + false)); + +out: + put_buffers(buffer); + + return error; +} + +int aa_move_mount(struct aa_label *label, struct path *path, + const char *orig_name) +{ + struct aa_profile *profile; + char *buffer = NULL, *old_buffer = NULL; + const char *name, *old_name = NULL, *info = NULL; + struct path old_path; + int error; + + if (!orig_name || !*orig_name) + return -EINVAL; + + get_buffers(buffer, old_buffer); + error = aa_path_name(path, path_flags(labels_profile(label), path), + buffer, &name, &info, + labels_profile(label)->disconnected); + if (error) + goto error; + + error = kern_path(orig_name, LOOKUP_FOLLOW, &old_path); + if (error) + goto error; + + error = aa_path_name(&old_path, path_flags(labels_profile(label), + &old_path), + old_buffer, &old_name, &info, + labels_profile(label)->disconnected); + path_put(&old_path); + if (error) + goto error; + + error = fn_for_each_confined(label, profile, + match_mnt(profile, name, old_name, NULL, MS_MOVE, NULL, + false)); + +out: + put_buffers(buffer, old_buffer); + + return error; + +error: + error = fn_for_each(label, profile, + audit_mount(profile, OP_MOUNT, name, old_name, NULL, + NULL, MS_MOVE, NULL, AA_MAY_MOUNT, + &nullperms, info, error)); + goto out; +} + +int aa_new_mount(struct aa_label *label, const char *orig_dev_name, + struct path *path, const char *type, unsigned long flags, + void *data) +{ + struct aa_profile *profile; + char *buffer = NULL, *dev_buffer = NULL; + const char *name = NULL, *dev_name = NULL, *info = NULL; + bool binary = true; + int error; + + dev_name = orig_dev_name; + get_buffers(buffer, dev_buffer); + if (type) { + int requires_dev; + struct file_system_type *fstype = get_fs_type(type); + if (!fstype) + return -ENODEV; + + binary = fstype->fs_flags & FS_BINARY_MOUNTDATA; + requires_dev = fstype->fs_flags & FS_REQUIRES_DEV; + put_filesystem(fstype); + + if (requires_dev) { + struct path dev_path; + + if (!dev_name || !*dev_name) { + error = -ENOENT; + goto out; + } + + error = kern_path(dev_name, LOOKUP_FOLLOW, &dev_path); + if (error) + goto error; + + error = aa_path_name(&dev_path, + path_flags(labels_profile(label), + &dev_path), + dev_buffer, &dev_name, &info, + labels_profile(label)->disconnected); + path_put(&dev_path); + if (error) + goto error; + } + } + + error = aa_path_name(path, path_flags(labels_profile(label), path), + buffer, &name, &info, + labels_profile(label)->disconnected); + if (error) + goto error; + + error = fn_for_each_confined(label, profile, + match_mnt(profile, name, dev_name, type, flags, data, + binary)); + +cleanup: + put_buffers(buffer, dev_buffer); + +out: + return error; + +error: + error = fn_for_each(label, profile, + audit_mount(labels_profile(label), OP_MOUNT, name, + dev_name, type, NULL, flags, data, + AA_MAY_MOUNT, &nullperms, info, error)); + goto cleanup; +} + +static int profile_umount(struct aa_profile *profile, const char *name) +{ + struct file_perms perms = { }; + const char *info = NULL; + int e = 0; + + if (profile->policy.dfa) { + unsigned int state; + state = aa_dfa_match(profile->policy.dfa, + profile->policy.start[AA_CLASS_MOUNT], + name); + perms = compute_mnt_perms(profile->policy.dfa, state); + if (AA_MAY_UMOUNT & ~perms.allow) + e = -EACCES; + } else + e = -EACCES; + return audit_mount(profile, OP_UMOUNT, name, NULL, NULL, NULL, 0, NULL, + AA_MAY_UMOUNT, &perms, info, e); +} + +int aa_umount(struct aa_label *label, struct vfsmount *mnt, int flags) +{ + struct aa_profile *profile; + char *buffer = NULL; + const char *name, *info = NULL; + int error; + + struct path path = { mnt, mnt->mnt_root }; + get_buffers(buffer); + error = aa_path_name(&path, path_flags(labels_profile(label), &path), + buffer, &name, &info, + labels_profile(label)->disconnected); + if (error) { + error = fn_for_each(label, profile, + audit_mount(profile, OP_UMOUNT, name, NULL, + NULL, NULL, 0, NULL, AA_MAY_UMOUNT, + &nullperms, info, error)); + goto out; + } + + error = fn_for_each_confined(label, profile, + profile_umount(profile, name)); + +out: + put_buffers(buffer); + + return error; +} + +static int profile_pivotroot(struct aa_profile *profile, const char *new_name, + const char *old_name, struct aa_profile **trans) +{ + struct aa_profile *target = NULL; + struct file_perms perms = { }; + const char *info = NULL; + int error = -EACCES; + + /* TODO: actual domain transition computation for multiple + * profiles + */ + if (profile->policy.dfa) { + unsigned int state; + state = aa_dfa_match(profile->policy.dfa, + profile->policy.start[AA_CLASS_MOUNT], + new_name); + state = aa_dfa_null_transition(profile->policy.dfa, state); + state = aa_dfa_match(profile->policy.dfa, state, old_name); + perms = compute_mnt_perms(profile->policy.dfa, state); + + if (AA_MAY_PIVOTROOT & perms.allow) { + if ((perms.xindex & AA_X_TYPE_MASK) == AA_X_TABLE) { + target = x_table_lookup(profile, perms.xindex); + if (!target) + error = -ENOENT; + else + *trans = target; + } else + error = 0; + } + } + + error = audit_mount(profile, OP_PIVOTROOT, new_name, old_name, + NULL, target ? target->base.name : NULL, + 0, NULL, AA_MAY_PIVOTROOT, &perms, info, + error); + if (!*trans) + aa_put_profile(target); + + return error; +} + +int aa_pivotroot(struct aa_label *label, struct path *old_path, + struct path *new_path) +{ + struct aa_profile *profile, *target = NULL; + char *old_buffer = NULL, *new_buffer = NULL; + const char *old_name, *new_name = NULL, *info = NULL; + int error; + + get_buffers(old_buffer, new_buffer); + error = aa_path_name(old_path, path_flags(labels_profile(label), + old_path), + old_buffer, &old_name, &info, + labels_profile(label)->disconnected); + if (error) + goto error; + + error = aa_path_name(new_path, path_flags(labels_profile(label), + new_path), + new_buffer, &new_name, &info, + labels_profile(label)->disconnected); + if (error) + goto error; + + error = fn_for_each(label, profile, + profile_pivotroot(profile, new_name, old_name, + &target)); +out: + put_buffers(old_buffer, new_buffer); + + if (target) + error = aa_replace_current_label(&target->label); + + return error; + +error: + error = fn_for_each(label, profile, + audit_mount(profile, OP_PIVOTROOT, new_name, old_name, + NULL, NULL, + 0, NULL, AA_MAY_PIVOTROOT, &nullperms, info, + error)); + goto out; +} --- linux-raspi2-4.2.0.orig/security/apparmor/net.c +++ linux-raspi2-4.2.0/security/apparmor/net.c @@ -0,0 +1,397 @@ +/* + * AppArmor security module + * + * This file contains AppArmor network mediation + * + * Copyright (C) 1998-2008 Novell/SUSE + * Copyright 2009-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. + */ + +#include "include/af_unix.h" +#include "include/apparmor.h" +#include "include/audit.h" +#include "include/context.h" +#include "include/label.h" +#include "include/net.h" +#include "include/policy.h" + +#include "net_names.h" + + +struct aa_fs_entry aa_fs_entry_network[] = { + AA_FS_FILE_STRING("af_mask", AA_FS_AF_MASK), + AA_FS_FILE_BOOLEAN("af_unix", 1), + { } +}; + +static const char *net_mask_names[] = { + "unknown", + "send", + "receive", + "unknown", + + "create", + "shutdown", + "connect", + "unknown", + + "setattr", + "getattr", + "setcred", + "getcred", + + "chmod", + "chown", + "chgrp", + "lock", + + "mmap", + "mprot", + "unknown", + "unknown", + + "accept", + "bind", + "listen", + "unknown", + + "setopt", + "getopt", + "unknown", + "unknown", + + "unknown", + "unknown", + "unknown", + "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) +{ + struct common_audit_data *sa = va; + + audit_log_format(ab, " family="); + if (address_family_names[sa->u.net->family]) { + audit_log_string(ab, address_family_names[sa->u.net->family]); + } else { + audit_log_format(ab, "\"unknown(%d)\"", sa->u.net->family); + } + audit_log_format(ab, " sock_type="); + if (sock_type_names[aad(sa)->net.type]) { + audit_log_string(ab, sock_type_names[aad(sa)->net.type]); + } else { + audit_log_format(ab, "\"unknown(%d)\"", aad(sa)->net.type); + } + audit_log_format(ab, " protocol=%d", aad(sa)->net.protocol); + + if (aad(sa)->request & NET_PERMS_MASK) { + audit_log_format(ab, " requested_mask="); + aa_audit_perm_mask(ab, aad(sa)->request, NULL, 0, + net_mask_names, NET_PERMS_MASK); + + if (aad(sa)->denied & NET_PERMS_MASK) { + audit_log_format(ab, " denied_mask="); + aa_audit_perm_mask(ab, aad(sa)->denied, NULL, 0, + 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)->target) { + audit_log_format(ab, " peer="); + audit_log_untrustedstring(ab, aad(sa)->target); + } +} + +/** + * audit_net - audit network access + * @profile: profile being enforced (NOT NULL) + * @op: operation being checked + * @family: network family + * @type: network type + * @protocol: network protocol + * @sk: socket auditing is being applied to + * @error: error code for failure else 0 + * + * Returns: %0 or sa->error else other errorcode on failure + */ +static int audit_net(struct aa_profile *profile, int op, u16 family, int type, + int protocol, struct sock *sk, int error) +{ + int audit_type = AUDIT_APPARMOR_AUTO; + DEFINE_AUDIT_NET(sa, op, sk, family, type, protocol); + aad(&sa)->error = error; + + if (likely(!aad(&sa)->error)) { + u16 audit_mask = profile->net.audit[sa.u.net->family]; + if (likely((AUDIT_MODE(profile) != AUDIT_ALL) && + !(1 << aad(&sa)->net.type & audit_mask))) + return 0; + audit_type = AUDIT_APPARMOR_AUDIT; + } else { + u16 quiet_mask = profile->net.quiet[sa.u.net->family]; + u16 kill_mask = 0; + u16 denied = (1 << aad(&sa)->net.type); + + if (denied & kill_mask) + audit_type = AUDIT_APPARMOR_KILL; + + if ((denied & quiet_mask) && + AUDIT_MODE(profile) != AUDIT_NOQUIET && + AUDIT_MODE(profile) != AUDIT_ALL) + return COMPLAIN_MODE(profile) ? 0 : aad(&sa)->error; + } + + return aa_audit(audit_type, profile, &sa, audit_net_cb); +} + +static inline int aa_af_mask_perm(struct aa_profile *profile, u16 family, + int type) +{ + u16 family_mask; + + AA_BUG(family >= AF_MAX); + AA_BUG(type < 0 && type >= SOCK_MAX); + + if (profile_unconfined(profile)) + return 0; + + family_mask = profile->net.allow[family]; + return (family_mask & (1 << type)) ? 0 : -EACCES; + +} + +/* Generic af perm */ +int aa_profile_af_perm(struct aa_profile *profile, int op, u16 family, + int type, int protocol, struct sock *sk) +{ + int error = aa_af_mask_perm(profile, family, type); + + return audit_net(profile, op, family, type, protocol, sk, error); +} + +int aa_af_perm(struct aa_label *label, int op, u32 request, u16 family, + int type, int protocol, struct sock *sk) +{ + struct aa_profile *profile; + + return fn_for_each_confined(label, profile, + aa_profile_af_perm(profile, op, family, type, protocol, + sk)); +} + +static int aa_label_sk_perm(struct aa_label *label, int op, u32 request, + struct sock *sk) +{ + struct aa_profile *profile; + + AA_BUG(!label); + AA_BUG(!sk); + + if (unconfined(label)) + return 0; + + return fn_for_each_confined(label, profile, + aa_profile_af_perm(profile, op, sk->sk_family, + sk->sk_type, sk->sk_protocol, + sk)); + +} + +static int aa_sk_perm(int op, u32 request, struct sock *sk) +{ + struct aa_label *label; + + AA_BUG(!sk); + AA_BUG(in_interrupt()); + + /* TODO: switch to begin_current_label ???? */ + label = aa_current_label(); + return aa_label_sk_perm(label, op, request, sk); +} + +#define af_select(FAMILY, FN, DEF_FN) \ +({ \ + int __e; \ + switch ((FAMILY)) { \ + case AF_UNIX: \ + __e = aa_unix_ ## FN; \ + break; \ + default: \ + __e = DEF_FN; \ + } \ + __e; \ +}) + +/* TODO: push into lsm.c ???? */ + +/* revaliation, get/set attr, shutdown */ +int aa_sock_perm(int op, u32 request, struct socket *sock) +{ + AA_BUG(!sock); + AA_BUG(!sock->sk); + AA_BUG(in_interrupt()); + + return af_select(sock->sk->sk_family, + sock_perm(op, request, sock), + aa_sk_perm(op, request, sock->sk)); +} + +int aa_sock_create_perm(struct aa_label *label, int family, int type, + int protocol) +{ + AA_BUG(!label); + /* TODO: .... */ + AA_BUG(in_interrupt()); + + return af_select(family, + create_perm(label, family, type, protocol), + aa_af_perm(label, OP_CREATE, AA_MAY_CREATE, family, + type, protocol, NULL)); +} + +int aa_sock_bind_perm(struct socket *sock, struct sockaddr *address, + int addrlen) +{ + AA_BUG(!sock); + AA_BUG(!sock->sk); + AA_BUG(!address); + /* TODO: .... */ + AA_BUG(in_interrupt()); + + return af_select(sock->sk->sk_family, + bind_perm(sock, address, addrlen), + aa_sk_perm(OP_BIND, AA_MAY_BIND, sock->sk)); +} + +int aa_sock_connect_perm(struct socket *sock, struct sockaddr *address, + int addrlen) +{ + AA_BUG(!sock); + AA_BUG(!sock->sk); + AA_BUG(!address); + /* TODO: .... */ + AA_BUG(in_interrupt()); + + return af_select(sock->sk->sk_family, + connect_perm(sock, address, addrlen), + aa_sk_perm(OP_CONNECT, AA_MAY_CONNECT, sock->sk)); +} + +int aa_sock_listen_perm(struct socket *sock, int backlog) +{ + AA_BUG(!sock); + AA_BUG(!sock->sk); + /* TODO: .... */ + AA_BUG(in_interrupt()); + + return af_select(sock->sk->sk_family, + listen_perm(sock, backlog), + aa_sk_perm(OP_LISTEN, AA_MAY_LISTEN, sock->sk)); +} + +/* ability of sock to connect, not peer address binding */ +int aa_sock_accept_perm(struct socket *sock, struct socket *newsock) +{ + AA_BUG(!sock); + AA_BUG(!sock->sk); + AA_BUG(!newsock); + /* TODO: .... */ + AA_BUG(in_interrupt()); + + return af_select(sock->sk->sk_family, + accept_perm(sock, newsock), + aa_sk_perm(OP_ACCEPT, AA_MAY_ACCEPT, sock->sk)); +} + +/* sendmsg, recvmsg */ +int aa_sock_msg_perm(int op, u32 request, struct socket *sock, + struct msghdr *msg, int size) +{ + AA_BUG(!sock); + AA_BUG(!sock->sk); + AA_BUG(!msg); + /* TODO: .... */ + AA_BUG(in_interrupt()); + + return af_select(sock->sk->sk_family, + msg_perm(op, request, sock, msg, size), + aa_sk_perm(op, request, sock->sk)); +} + +/* revaliation, get/set attr, opt */ +int aa_sock_opt_perm(int op, u32 request, struct socket *sock, int level, + int optname) +{ + AA_BUG(!sock); + AA_BUG(!sock->sk); + AA_BUG(in_interrupt()); + + return af_select(sock->sk->sk_family, + opt_perm(op, request, sock, level, optname), + aa_sk_perm(op, request, sock->sk)); +} + +int aa_sock_file_perm(struct aa_label *label, int op, u32 request, + struct socket *sock) +{ + AA_BUG(!label); + AA_BUG(!sock); + AA_BUG(!sock->sk); + + return af_select(sock->sk->sk_family, + file_perm(label, op, request, sock), + aa_label_sk_perm(label, op, request, sock->sk)); +} --- linux-raspi2-4.2.0.orig/security/apparmor/path.c +++ linux-raspi2-4.2.0/security/apparmor/path.c @@ -25,7 +25,6 @@ #include "include/path.h" #include "include/policy.h" - /* modified from dcache.c */ static int prepend(char **buffer, int buflen, const char *str, int namelen) { @@ -39,13 +38,50 @@ #define CHROOT_NSCONNECT (PATH_CHROOT_REL | PATH_CHROOT_NSCONNECT) +/* If the path is not connected to the expected root, + * check if it is a sysctl and handle specially else remove any + * leading / that __d_path may have returned. + * Unless + * specifically directed to connect the path, + * OR + * if in a chroot and doing chroot relative paths and the path + * resolves to the namespace root (would be connected outside + * of chroot) and specifically directed to connect paths to + * namespace root. + */ +static int disconnect(struct path *path, char *buf, char **name, int flags, + const char *disconnected) +{ + int error = 0; + + if (!(flags & PATH_CONNECT_PATH) && + !(((flags & CHROOT_NSCONNECT) == CHROOT_NSCONNECT) && + our_mnt(path->mnt))) { + /* disconnected path, don't return pathname starting + * with '/' + */ + error = -EACCES; + if (**name == '/') + *name = *name + 1; + } else { + if (**name != '/') + /* CONNECT_PATH with missing root */ + error = prepend(name, *name - buf, "/", 1); + if (!error && disconnected) + error = prepend(name, *name - buf, disconnected, + strlen(disconnected)); + } + + return error; +} + /** * d_namespace_path - lookup a name associated with a given path * @path: path to lookup (NOT NULL) * @buf: buffer to store path to (NOT NULL) - * @buflen: length of @buf * @name: Returns - pointer for start of path name with in @buf (NOT NULL) * @flags: flags controlling path lookup + * @disconnected: string to prefix to disconnected paths * * Handle path name lookup. * @@ -53,12 +89,14 @@ * When no error the path name is returned in @name which points to * to a position in @buf */ -static int d_namespace_path(struct path *path, char *buf, int buflen, - char **name, int flags) +static int d_namespace_path(struct path *path, char *buf, char **name, + int flags, const char *disconnected) { char *res; int error = 0; int connected = 1; + int isdir = (flags & PATH_IS_DIR) ? 1 : 0; + int buflen = aa_g_path_max - isdir; if (path->mnt->mnt_flags & MNT_INTERNAL) { /* it's not mounted anywhere */ @@ -73,9 +111,12 @@ /* TODO: convert over to using a per namespace * control instead of hard coded /proc */ - return prepend(name, *name - buf, "/proc", 5); - } - return 0; + error = prepend(name, *name - buf, "/proc", 5); + goto out; + } else + error = disconnect(path, buf, name, flags, + disconnected); + goto out; } /* resolve paths relative to chroot?*/ @@ -94,8 +135,11 @@ * be returned. */ if (!res || IS_ERR(res)) { - if (PTR_ERR(res) == -ENAMETOOLONG) - return -ENAMETOOLONG; + if (PTR_ERR(res) == -ENAMETOOLONG) { + error = -ENAMETOOLONG; + *name = buf; + goto out; + } connected = 0; res = dentry_path_raw(path->dentry, buf, buflen); if (IS_ERR(res)) { @@ -120,78 +164,28 @@ goto out; } - /* If the path is not connected to the expected root, - * check if it is a sysctl and handle specially else remove any - * leading / that __d_path may have returned. - * Unless - * specifically directed to connect the path, - * OR - * if in a chroot and doing chroot relative paths and the path - * resolves to the namespace root (would be connected outside - * of chroot) and specifically directed to connect paths to - * namespace root. - */ - if (!connected) { - if (!(flags & PATH_CONNECT_PATH) && - !(((flags & CHROOT_NSCONNECT) == CHROOT_NSCONNECT) && - our_mnt(path->mnt))) { - /* disconnected path, don't return pathname starting - * with '/' - */ - error = -EACCES; - if (*res == '/') - *name = res + 1; - } - } + if (!connected) + error = disconnect(path, buf, name, flags, disconnected); out: - return error; -} - -/** - * get_name_to_buffer - get the pathname to a buffer ensure dir / is appended - * @path: path to get name for (NOT NULL) - * @flags: flags controlling path lookup - * @buffer: buffer to put name in (NOT NULL) - * @size: size of buffer - * @name: Returns - contains position of path name in @buffer (NOT NULL) - * - * Returns: %0 else error on failure - */ -static int get_name_to_buffer(struct path *path, int flags, char *buffer, - int size, char **name, const char **info) -{ - int adjust = (flags & PATH_IS_DIR) ? 1 : 0; - int error = d_namespace_path(path, buffer, size - adjust, name, flags); - - if (!error && (flags & PATH_IS_DIR) && (*name)[1] != '\0') - /* - * Append "/" to the pathname. The root directory is a special - * case; it already ends in slash. - */ - strcpy(&buffer[size - 2], "/"); - - if (info && error) { - if (error == -ENOENT) - *info = "Failed name lookup - deleted entry"; - else if (error == -EACCES) - *info = "Failed name lookup - disconnected path"; - else if (error == -ENAMETOOLONG) - *info = "Failed name lookup - name too long"; - else - *info = "Failed name lookup"; - } + /* + * Append "/" to the pathname. The root directory is a special + * case; it already ends in slash. + */ + if (!error && isdir && ((*name)[1] != '\0' || (*name)[0] != '/')) + strcpy(&buf[aa_g_path_max - 2], "/"); return error; } /** - * aa_path_name - compute the pathname of a file + * aa_path_name - get the pathname to a buffer ensure dir / is appended * @path: path the file (NOT NULL) * @flags: flags controlling path name generation - * @buffer: buffer that aa_get_name() allocated (NOT NULL) + * @buffer: buffer to put name in (NOT NULL) * @name: Returns - the generated path name if !error (NOT NULL) * @info: Returns - information on why the path lookup failed (MAYBE NULL) + * @disconnected: string to prepend to disconnected paths * * @name is a pointer to the beginning of the pathname (which usually differs * from the beginning of the buffer), or NULL. If there is an error @name @@ -204,33 +198,24 @@ * * Returns: %0 else error code if could retrieve name */ -int aa_path_name(struct path *path, int flags, char **buffer, const char **name, - const char **info) +int aa_path_name(struct path *path, int flags, char *buffer, const char **name, + const char **info, const char *disconnected) { - char *buf, *str = NULL; - int size = 256; - int error; - - *name = NULL; - *buffer = NULL; - for (;;) { - /* freed by caller */ - buf = kmalloc(size, GFP_KERNEL); - if (!buf) - return -ENOMEM; - - error = get_name_to_buffer(path, flags, buf, size, &str, info); - if (error != -ENAMETOOLONG) - break; - - kfree(buf); - size <<= 1; - if (size > aa_g_path_max) - return -ENAMETOOLONG; - *info = NULL; + char *str = NULL; + int error = d_namespace_path(path, buffer, &str, flags, disconnected); + + + if (info && error) { + if (error == -ENOENT) + *info = "Failed name lookup - deleted entry"; + else if (error == -EACCES) + *info = "Failed name lookup - disconnected path"; + else if (error == -ENAMETOOLONG) + *info = "Failed name lookup - name too long"; + else + *info = "Failed name lookup"; } - *buffer = buf; - *name = str; + *name = str; return error; } --- linux-raspi2-4.2.0.orig/security/apparmor/policy.c +++ linux-raspi2-4.2.0/security/apparmor/policy.c @@ -82,6 +82,7 @@ #include "include/context.h" #include "include/file.h" #include "include/ipc.h" +#include "include/label.h" #include "include/match.h" #include "include/path.h" #include "include/policy.h" @@ -92,6 +93,9 @@ /* root profile namespace */ struct aa_namespace *root_ns; +/* Note: mode names must be unique in the first character because of + * modechrs used to print modes on compound labels on some interfaces + */ const char *const aa_profile_mode_names[] = { "enforce", "complain", @@ -128,16 +132,22 @@ static bool policy_init(struct aa_policy *policy, const char *prefix, const char *name) { + char *hname; + /* freed by policy_free */ if (prefix) { - policy->hname = kmalloc(strlen(prefix) + strlen(name) + 3, - GFP_KERNEL); - if (policy->hname) - sprintf(policy->hname, "%s//%s", prefix, name); - } else - policy->hname = kstrdup(name, GFP_KERNEL); - if (!policy->hname) + hname = aa_str_alloc(strlen(prefix) + strlen(name) + 3, + GFP_KERNEL); + if (hname) + sprintf(hname, "%s//%s", prefix, name); + } else { + hname = aa_str_alloc(strlen(name) + 1, GFP_KERNEL); + if (hname) + strcpy(hname, name); + } + if (!hname) return 0; + policy->hname = hname; /* base.name is a substring of fqname */ policy->name = (char *)hname_tail(policy->hname); INIT_LIST_HEAD(&policy->list); @@ -166,7 +176,7 @@ } /* don't free name as its a subset of hname */ - kzfree(policy->hname); + aa_put_str(policy->hname); } /** @@ -219,7 +229,7 @@ * Routines for AppArmor namespaces */ -static const char *hidden_ns_name = "---"; +const char *aa_hidden_ns_name = "---"; /** * aa_ns_visible - test if @view is visible from @curr * @curr: namespace to treat as the parent (NOT NULL) @@ -261,7 +271,7 @@ */ return view->base.hname + strlen(curr->base.hname) + 2; } else - return hidden_ns_name; + return aa_hidden_ns_name; } /** @@ -290,9 +300,12 @@ ns->unconfined = aa_alloc_profile("unconfined"); if (!ns->unconfined) goto fail_unconfined; + ns->unconfined->label.replacedby = aa_alloc_replacedby(NULL); + if (!ns->unconfined->label.replacedby) + goto fail_replacedby; - ns->unconfined->flags = PFLAG_IX_ON_NAME_ERROR | - PFLAG_IMMUTABLE | PFLAG_NS_COUNT; + ns->unconfined->label.flags |= FLAG_IX_ON_NAME_ERROR | + FLAG_IMMUTIBLE | FLAG_NS_COUNT | FLAG_UNCONFINED; ns->unconfined->mode = APPARMOR_UNCONFINED; /* ns and ns->unconfined share ns->unconfined refcount */ @@ -300,8 +313,13 @@ atomic_set(&ns->uniq_null, 0); + aa_labelset_init(&ns->labels); + return ns; +fail_replacedby: + aa_free_profile(ns->unconfined); + fail_unconfined: kzfree(ns->base.hname); fail_ns: @@ -310,18 +328,19 @@ } /** - * free_namespace - free a profile namespace + * aa_free_namespace - free a profile namespace * @ns: the namespace to free (MAYBE NULL) * * Requires: All references to the namespace must have been put, if the * namespace was referenced by a profile confining a task, */ -static void free_namespace(struct aa_namespace *ns) +void aa_free_namespace(struct aa_namespace *ns) { if (!ns) return; policy_destroy(&ns->base); + aa_labelset_destroy(&ns->labels); aa_put_namespace(ns->parent); ns->unconfined->ns = NULL; @@ -330,43 +349,60 @@ } /** - * __aa_find_namespace - find a namespace on a list by @name + * __aa_findn_namespace - find a namespace on a list by @name * @head: list to search for namespace on (NOT NULL) * @name: name of namespace to look for (NOT NULL) - * + * @n: length of @name * Returns: unrefcounted namespace * * Requires: rcu_read_lock be held */ -static struct aa_namespace *__aa_find_namespace(struct list_head *head, - const char *name) +static struct aa_namespace *__aa_findn_namespace(struct list_head *head, + const char *name, size_t n) { - return (struct aa_namespace *)__policy_find(head, name); + return (struct aa_namespace *)__policy_strn_find(head, name, n); } /** * aa_find_namespace - look up a profile namespace on the namespace list * @root: namespace to search in (NOT NULL) * @name: name of namespace to find (NOT NULL) + * @n: length of @name * * Returns: a refcounted namespace on the list, or NULL if no namespace * called @name exists. * * refcount released by caller */ -struct aa_namespace *aa_find_namespace(struct aa_namespace *root, - const char *name) +struct aa_namespace *aa_findn_namespace(struct aa_namespace *root, + const char *name, size_t n) { struct aa_namespace *ns = NULL; rcu_read_lock(); - ns = aa_get_namespace(__aa_find_namespace(&root->sub_ns, name)); + ns = aa_get_namespace(__aa_findn_namespace(&root->sub_ns, name, n)); rcu_read_unlock(); return ns; } /** + * aa_find_namespace - look up a profile namespace on the namespace list + * @root: namespace to search in (NOT NULL) + * @name: name of namespace to find (NOT NULL) + * + * Returns: a refcounted namespace on the list, or NULL if no namespace + * called @name exists. + * + * refcount released by caller + */ +struct aa_namespace *aa_find_namespace(struct aa_namespace *root, + const char *name) +{ + return aa_findn_namespace(root, name, strlen(name)); +} + +/** * aa_prepare_namespace - find an existing or create a new namespace of @name * @name: the namespace to find or add (MAYBE NULL) * @@ -376,7 +412,7 @@ { struct aa_namespace *ns, *root; - root = aa_current_profile()->ns; + root = labels_ns(aa_current_label()); mutex_lock(&root->lock); @@ -389,7 +425,8 @@ /* try and find the specified ns and if it doesn't exist create it */ /* released by caller */ - ns = aa_get_namespace(__aa_find_namespace(&root->sub_ns, name)); + ns = aa_get_namespace(__aa_findn_namespace(&root->sub_ns, name, + strlen(name))); if (!ns) { ns = alloc_namespace(root->base.hname, name); if (!ns) @@ -397,11 +434,12 @@ if (__aa_fs_namespace_mkdir(ns, ns_subns_dir(root), name)) { AA_ERROR("Failed to create interface for ns %s\n", ns->base.name); - free_namespace(ns); + aa_free_namespace(ns); ns = NULL; goto out; } ns->parent = aa_get_namespace(root); + ns->level = root->level + 1; list_add_rcu(&ns->base.list, &root->sub_ns); /* add list ref */ aa_get_namespace(ns); @@ -414,7 +452,7 @@ } /** - * __list_add_profile - add a profile to a list + * __add_profile - add a profiles to list and label tree * @list: list to add it to (NOT NULL) * @profile: the profile to add (NOT NULL) * @@ -422,12 +460,21 @@ * * Requires: namespace lock be held, or list not be shared */ -static void __list_add_profile(struct list_head *list, - struct aa_profile *profile) +static void __add_profile(struct list_head *list, struct aa_profile *profile) { + struct aa_label *l; + + AA_BUG(!list); + AA_BUG(!profile); + AA_BUG(!profile->ns); + AA_BUG(!mutex_is_locked(&profile->ns->lock)); + list_add_rcu(&profile->base.list, list); /* get list reference */ aa_get_profile(profile); + l = aa_label_insert(&profile->ns->labels, &profile->label); + AA_BUG(l != &profile->label); + aa_put_label(l); } /** @@ -444,6 +491,10 @@ */ static void __list_remove_profile(struct aa_profile *profile) { + AA_BUG(!profile); + AA_BUG(!profile->ns); + AA_BUG(!mutex_is_locked(&profile->ns->lock)); + list_del_rcu(&profile->base.list); aa_put_profile(profile); } @@ -458,10 +509,16 @@ */ static void __remove_profile(struct aa_profile *profile) { + AA_BUG(!profile); + AA_BUG(!profile->ns); + AA_BUG(!mutex_is_locked(&profile->ns->lock)); + /* release any children lists first */ __profile_list_release(&profile->base.profiles); /* released by free_profile */ - __aa_update_replacedby(profile, profile->ns->unconfined); + aa_label_remove(&profile->ns->labels, &profile->label); + __aa_update_replacedby(&profile->label, + &profile->ns->unconfined->label); __aa_fs_profile_rmdir(profile); __list_remove_profile(profile); } @@ -498,7 +555,8 @@ __ns_list_release(&ns->sub_ns); if (ns->parent) - __aa_update_replacedby(ns->unconfined, ns->parent->unconfined); + __aa_update_replacedby(&ns->unconfined->label, + &ns->parent->unconfined->label); __aa_fs_namespace_rmdir(ns); mutex_unlock(&ns->lock); } @@ -560,23 +618,6 @@ } -static void free_replacedby(struct aa_replacedby *r) -{ - if (r) { - /* r->profile will not be updated any more as r is dead */ - aa_put_profile(rcu_dereference_protected(r->profile, true)); - kzfree(r); - } -} - - -void aa_free_replacedby_kref(struct kref *kref) -{ - struct aa_replacedby *r = container_of(kref, struct aa_replacedby, - count); - free_replacedby(r); -} - /** * aa_free_profile - free a profile * @profile: the profile to free (MAYBE NULL) @@ -603,41 +644,18 @@ aa_free_file_rules(&profile->file); aa_free_cap_rules(&profile->caps); + aa_free_net_rules(&profile->net); aa_free_rlimit_rules(&profile->rlimits); kzfree(profile->dirname); aa_put_dfa(profile->xmatch); aa_put_dfa(profile->policy.dfa); - aa_put_replacedby(profile->replacedby); kzfree(profile->hash); kzfree(profile); } /** - * aa_free_profile_rcu - free aa_profile by rcu (called by aa_free_profile_kref) - * @head: rcu_head callback for freeing of a profile (NOT NULL) - */ -static void aa_free_profile_rcu(struct rcu_head *head) -{ - struct aa_profile *p = container_of(head, struct aa_profile, rcu); - if (p->flags & PFLAG_NS_COUNT) - free_namespace(p->ns); - else - aa_free_profile(p); -} - -/** - * aa_free_profile_kref - free aa_profile by kref (called by aa_put_profile) - * @kr: kref callback for freeing of a profile (NOT NULL) - */ -void aa_free_profile_kref(struct kref *kref) -{ - struct aa_profile *p = container_of(kref, struct aa_profile, count); - call_rcu(&p->rcu, aa_free_profile_rcu); -} - -/** * aa_alloc_profile - allocate, initialize and return a new profile * @hname: name of the profile (NOT NULL) * @@ -652,20 +670,18 @@ if (!profile) return NULL; - profile->replacedby = kzalloc(sizeof(struct aa_replacedby), GFP_KERNEL); - if (!profile->replacedby) - goto fail; - kref_init(&profile->replacedby->count); - if (!policy_init(&profile->base, NULL, hname)) goto fail; - kref_init(&profile->count); + if (!aa_label_init(&profile->label, 1)) + goto fail; + profile->label.hname = profile->base.hname; + profile->label.flags |= FLAG_PROFILE; + profile->label.ent[0] = profile; /* refcount released by caller */ return profile; fail: - kzfree(profile->replacedby); kzfree(profile); return NULL; @@ -702,26 +718,57 @@ if (!profile) goto fail; + profile->label.replacedby = aa_alloc_replacedby(NULL); + if (!profile->label.replacedby) + goto fail; + profile->mode = APPARMOR_COMPLAIN; - profile->flags = PFLAG_NULL; + profile->label.flags |= FLAG_NULL; if (hat) - profile->flags |= PFLAG_HAT; + profile->label.flags |= FLAG_HAT; /* released on free_profile */ rcu_assign_pointer(profile->parent, aa_get_profile(parent)); profile->ns = aa_get_namespace(parent->ns); mutex_lock(&profile->ns->lock); - __list_add_profile(&parent->base.profiles, profile); + __add_profile(&parent->base.profiles, profile); mutex_unlock(&profile->ns->lock); /* refcount released by caller */ return profile; fail: + aa_free_profile(profile); return NULL; } +/** + * aa_setup_default_label - create the initial default label + */ +struct aa_label *aa_setup_default_label(void) +{ + struct aa_profile *profile = aa_alloc_profile("default"); + if (!profile) + return NULL; + + /* the default profile pretends to be unconfined until it is replaced */ + profile->label.flags |= FLAG_IX_ON_NAME_ERROR | FLAG_UNCONFINED; + profile->mode = APPARMOR_UNCONFINED; + + profile->ns = aa_get_namespace(root_ns); + + /* replacedby being set needed by fs interface */ + profile->label.replacedby = aa_alloc_replacedby(&profile->label); + if (!profile->label.replacedby) { + aa_free_profile(profile); + return NULL; + } + __add_profile(&root_ns->base.profiles, profile); + + return &profile->label; +} + /* TODO: profile accounting - setup in remove */ /** @@ -810,9 +857,10 @@ } /** - * __lookup_profile - lookup the profile matching @hname + * __lookupn_profile - lookup the profile matching @hname * @base: base list to start looking up profile name from (NOT NULL) * @hname: hierarchical profile name (NOT NULL) + * @n: length of @hname * * Requires: rcu_read_lock be held * @@ -820,53 +868,88 @@ * * Do a relative name lookup, recursing through profile tree. */ -static struct aa_profile *__lookup_profile(struct aa_policy *base, - const char *hname) +static struct aa_profile *__lookupn_profile(struct aa_policy *base, + const char *hname, size_t n) { struct aa_profile *profile = NULL; - char *split; + const char *split, *name = hname; - for (split = strstr(hname, "//"); split;) { - profile = __strn_find_child(&base->profiles, hname, - split - hname); + for (split = strstr(hname, "//"); split && (split - hname <= n);) { + profile = __strn_find_child(&base->profiles, name, + split - name); if (!profile) return NULL; base = &profile->base; - hname = split + 2; - split = strstr(hname, "//"); + name = split + 2; + split = strstr(name, "//"); } - profile = __find_child(&base->profiles, hname); + if (name - hname <= n) + return __strn_find_child(&base->profiles, name, + n - (name - hname)); + return NULL; +} - return profile; +static struct aa_profile *__lookup_profile(struct aa_policy *base, + const char *hname) +{ + return __lookupn_profile(base, hname, strlen(hname)); } /** * aa_lookup_profile - find a profile by its full or partial name * @ns: the namespace to start from (NOT NULL) * @hname: name to do lookup on. Does not contain namespace prefix (NOT NULL) + * @n: size of @hname * * Returns: refcounted profile or NULL if not found */ -struct aa_profile *aa_lookup_profile(struct aa_namespace *ns, const char *hname) +struct aa_profile *aa_lookupn_profile(struct aa_namespace *ns, + const char *hname, size_t n) { struct aa_profile *profile; rcu_read_lock(); do { - profile = __lookup_profile(&ns->base, hname); + profile = __lookupn_profile(&ns->base, hname, n); } while (profile && !aa_get_profile_not0(profile)); rcu_read_unlock(); /* the unconfined profile is not in the regular profile list */ - if (!profile && strcmp(hname, "unconfined") == 0) + if (!profile && strncmp(hname, "unconfined", n) == 0) profile = aa_get_newest_profile(ns->unconfined); /* refcount released by caller */ return profile; } +struct aa_profile *aa_lookup_profile(struct aa_namespace *ns, const char *hname) +{ + return aa_lookupn_profile(ns, hname, strlen(hname)); +} + +struct aa_profile *aa_fqlookupn_profile(struct aa_label *base, char *fqname, + size_t n) +{ + struct aa_profile *profile; + struct aa_namespace *ns; + char *name, *ns_name; + size_t ns_len; + + name = aa_splitn_fqname(fqname, n, &ns_name, &ns_len); + if (ns_name) { + ns = aa_findn_namespace(labels_ns(base), ns_name, ns_len); + if (!ns) + return NULL; + } else + ns = aa_get_namespace(labels_ns(base)); + profile = aa_lookupn_profile(ns, name, n - (name - fqname)); + aa_put_namespace(ns); + + return profile; +} + /** * replacement_allowed - test to see if replacement is allowed * @profile: profile to test if it can be replaced (MAYBE NULL) @@ -879,7 +962,7 @@ const char **info) { if (profile) { - if (profile->flags & PFLAG_IMMUTABLE) { + if (profile->label.flags & FLAG_IMMUTIBLE) { *info = "cannot replace immutible profile"; return -EPERM; } else if (noreplace) { @@ -893,27 +976,23 @@ /** * aa_audit_policy - Do auditing of policy changes * @op: policy operation being performed - * @gfp: memory allocation flags * @name: name of profile being manipulated (NOT NULL) * @info: any extra information to be audited (MAYBE NULL) * @error: error code * * Returns: the error to be returned after audit is done */ -static int audit_policy(int op, gfp_t gfp, const char *name, const char *info, +static int audit_policy(int op, const char *name, const char *info, int error) { - struct common_audit_data sa; - struct apparmor_audit_data aad = {0,}; - sa.type = LSM_AUDIT_DATA_NONE; - sa.aad = &aad; - aad.op = op; - aad.name = name; - aad.info = info; - aad.error = error; + DEFINE_AUDIT_DATA(sa, LSM_AUDIT_DATA_NONE, op); + // aad(&sa)->op = op; + aad(&sa)->name = name; + aad(&sa)->info = info; + aad(&sa)->error = error; - return aa_audit(AUDIT_APPARMOR_STATUS, __aa_current_profile(), gfp, - &sa, NULL); + return aa_audit(AUDIT_APPARMOR_STATUS, + labels_profile(aa_current_raw_label()), &sa, NULL); } /** @@ -926,12 +1005,12 @@ { /* check if loading policy is locked out */ if (aa_g_lock_policy) { - audit_policy(op, GFP_KERNEL, NULL, "policy_locked", -EACCES); + audit_policy(op, NULL, "policy_locked", -EACCES); return 0; } if (!capable(CAP_MAC_ADMIN)) { - audit_policy(op, GFP_KERNEL, NULL, "not policy admin", -EACCES); + audit_policy(op, NULL, "not policy admin", -EACCES); return 0; } @@ -1008,14 +1087,13 @@ struct aa_profile *parent = aa_deref_parent(old); rcu_assign_pointer(new->parent, aa_get_profile(parent)); } - __aa_update_replacedby(old, new); - if (share_replacedby) { - aa_put_replacedby(new->replacedby); - new->replacedby = aa_get_replacedby(old->replacedby); - } else if (!rcu_access_pointer(new->replacedby->profile)) + __aa_update_replacedby(&old->label, &new->label); + if (share_replacedby) + new->label.replacedby = aa_get_replacedby(old->label.replacedby); + else if (!rcu_access_pointer(new->label.replacedby->label)) /* aafs interface uses replacedby */ - rcu_assign_pointer(new->replacedby->profile, - aa_get_profile(new)); + rcu_assign_pointer(new->label.replacedby->label, + aa_get_label(&new->label)); __aa_fs_profile_migrate_dents(old, new); if (list_empty(&new->base.list)) { @@ -1053,6 +1131,35 @@ return 0; } +static void share_name(struct aa_profile *old, struct aa_profile *new) +{ + aa_put_str(new->base.hname); + aa_get_str(old->base.hname); + new->base.hname = old->base.hname; + new->base.name = old->base.name; + new->label.hname = old->label.hname; +} + +/* Update to newest version of parent after previous replacements + * Returns: unrefcount newest version of parent + */ +static struct aa_profile *update_to_newest_parent(struct aa_profile *new) +{ + struct aa_profile *parent, *newest; + parent = rcu_dereference_protected(new->parent, + mutex_is_locked(&new->ns->lock)); + newest = aa_get_newest_profile(parent); + + /* parent replaced in this atomic set? */ + if (newest != parent) { + aa_put_profile(parent); + rcu_assign_pointer(new->parent, newest); + } else + aa_put_profile(newest); + + return newest; +} + /** * aa_replace_profiles - replace profile(s) on the profile list * @udata: serialized data stream (NOT NULL) @@ -1134,6 +1241,7 @@ /* create new fs entries for introspection if needed */ list_for_each_entry(ent, &lh, list) { + struct aa_replacedby *r; if (ent->old) { /* inherit old interface files */ @@ -1143,6 +1251,14 @@ TODO: support rename */ } else { struct dentry *parent; + r = aa_alloc_replacedby(NULL); + if (!r) { + info = "failed to create"; + error = -ENOMEM; + goto fail_lock; + } + ent->new->label.replacedby = r; + if (rcu_access_pointer(ent->new->parent)) { struct aa_profile *p; p = aa_deref_parent(ent->new); @@ -1153,7 +1269,7 @@ } if (error) { - info = "failed to create "; + info = "failed to create"; goto fail_lock; } } @@ -1163,46 +1279,40 @@ list_del_init(&ent->list); op = (!ent->old && !ent->rename) ? OP_PROF_LOAD : OP_PROF_REPL; - audit_policy(op, GFP_ATOMIC, ent->new->base.name, NULL, error); + audit_policy(op, ent->new->base.name, NULL, error); if (ent->old) { + share_name(ent->old, ent->new); __replace_profile(ent->old, ent->new, 1); + aa_label_replace(&ns->labels, &ent->old->label, + &ent->new->label); if (ent->rename) { /* aafs interface uses replacedby */ - struct aa_replacedby *r = ent->new->replacedby; - rcu_assign_pointer(r->profile, - aa_get_profile(ent->new)); + rcu_assign_pointer(ent->new->label.replacedby->label, + aa_get_label(&ent->new->label)); __replace_profile(ent->rename, ent->new, 0); } } else if (ent->rename) { /* aafs interface uses replacedby */ - rcu_assign_pointer(ent->new->replacedby->profile, - aa_get_profile(ent->new)); - __replace_profile(ent->rename, ent->new, 0); - } else if (ent->new->parent) { - struct aa_profile *parent, *newest; - parent = aa_deref_parent(ent->new); - newest = aa_get_newest_profile(parent); - - /* parent replaced in this atomic set? */ - if (newest != parent) { - aa_get_profile(newest); - aa_put_profile(parent); - rcu_assign_pointer(ent->new->parent, newest); - } else - aa_put_profile(newest); - /* aafs interface uses replacedby */ - rcu_assign_pointer(ent->new->replacedby->profile, - aa_get_profile(ent->new)); - __list_add_profile(&parent->base.profiles, ent->new); + rcu_assign_pointer(ent->new->label.replacedby->label, + aa_get_label(&ent->new->label)); } else { + struct list_head *lh; + if (rcu_access_pointer(ent->new->parent)) { + struct aa_profile *parent; + parent = update_to_newest_parent(ent->new); + lh = &parent->base.profiles; + } else + lh = &ns->base.profiles; + /* aafs interface uses replacedby */ - rcu_assign_pointer(ent->new->replacedby->profile, - aa_get_profile(ent->new)); - __list_add_profile(&ns->base.profiles, ent->new); + rcu_assign_pointer(ent->new->label.replacedby->label, + aa_get_label(&ent->new->label)); + __add_profile(lh, ent->new); } aa_load_ent_free(ent); } + __aa_labelset_update_all(ns); mutex_unlock(&ns->lock); out: @@ -1215,7 +1325,7 @@ fail_lock: mutex_unlock(&ns->lock); fail: - error = audit_policy(op, GFP_KERNEL, name, info, error); + error = audit_policy(op, name, info, error); list_for_each_entry_safe(ent, tmp, &lh, list) { list_del_init(&ent->list); @@ -1250,7 +1360,7 @@ goto fail; } - root = aa_current_profile()->ns; + root = labels_ns(aa_current_label()); if (fqname[0] == ':') { char *ns_name; @@ -1282,11 +1392,12 @@ } name = profile->base.hname; __remove_profile(profile); + __aa_labelset_update_all(ns); mutex_unlock(&ns->lock); } /* don't fail removal if audit fails */ - (void) audit_policy(OP_PROF_RM, GFP_KERNEL, name, info, error); + (void) audit_policy(OP_PROF_RM, name, info, error); aa_put_namespace(ns); aa_put_profile(profile); return size; @@ -1296,6 +1407,6 @@ aa_put_namespace(ns); fail: - (void) audit_policy(OP_PROF_RM, GFP_KERNEL, name, info, error); + (void) audit_policy(OP_PROF_RM, name, info, error); return error; } --- linux-raspi2-4.2.0.orig/security/apparmor/policy_unpack.c +++ linux-raspi2-4.2.0/security/apparmor/policy_unpack.c @@ -26,9 +26,18 @@ #include "include/context.h" #include "include/crypto.h" #include "include/match.h" +#include "include/path.h" #include "include/policy.h" #include "include/policy_unpack.h" +#define K_ABI_MASK 0x3ff +#define FORCE_COMPLAIN_FLAG 0x800 +#define VERSION_CMP(OP, X, Y) (((X) & K_ABI_MASK) OP ((Y) & K_ABI_MASK)) + +#define v5 5 /* base version */ +#define v6 6 /* per entry policydb mediation check */ +#define v7 7 /* full network masking */ + /* * The AppArmor interface treats data as a type byte followed by the * actual data. The interface has the notion of a a named entry @@ -70,13 +79,13 @@ static void audit_cb(struct audit_buffer *ab, void *va) { struct common_audit_data *sa = va; - if (sa->aad->iface.target) { - struct aa_profile *name = sa->aad->iface.target; + if (aad(sa)->target) { + const struct aa_profile *name = aad(sa)->target; audit_log_format(ab, " name="); audit_log_untrustedstring(ab, name->base.hname); } - if (sa->aad->iface.pos) - audit_log_format(ab, " offset=%ld", sa->aad->iface.pos); + if (aad(sa)->iface.pos) + audit_log_format(ab, " offset=%ld", aad(sa)->iface.pos); } /** @@ -92,20 +101,16 @@ static int audit_iface(struct aa_profile *new, const char *name, const char *info, struct aa_ext *e, int error) { - struct aa_profile *profile = __aa_current_profile(); - struct common_audit_data sa; - struct apparmor_audit_data aad = {0,}; - sa.type = LSM_AUDIT_DATA_NONE; - sa.aad = &aad; + struct aa_profile *profile = labels_profile(aa_current_raw_label()); + DEFINE_AUDIT_DATA(sa, LSM_AUDIT_DATA_NONE, 0); if (e) - aad.iface.pos = e->pos - e->start; - aad.iface.target = new; - aad.name = name; - aad.info = info; - aad.error = error; + aad(&sa)->iface.pos = e->pos - e->start; + aad(&sa)->target = new; + aad(&sa)->name = name; + aad(&sa)->info = info; + aad(&sa)->error = error; - return aa_audit(AUDIT_APPARMOR_STATUS, profile, GFP_KERNEL, &sa, - audit_cb); + return aa_audit(AUDIT_APPARMOR_STATUS, profile, &sa, audit_cb); } /* test if read will be in packed data bounds */ @@ -193,6 +198,19 @@ return 0; } +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((u16 *) e->pos)); + e->pos += sizeof(u16); + return 1; + } + return 0; +} + static bool unpack_u32(struct aa_ext *e, u32 *data, const char *name) { if (unpack_nameX(e, AA_U32, name)) { @@ -476,6 +494,7 @@ { struct aa_profile *profile = NULL; const char *name = NULL; + size_t size = 0; int i, error = -EPROTO; kernel_cap_t tmpcap; u32 tmp; @@ -510,16 +529,19 @@ profile->xmatch_len = tmp; } + /* disconnected attachment string is optional */ + (void) unpack_str(e, &profile->disconnected, "disconnected"); + /* per profile debug flags (complain, audit) */ if (!unpack_nameX(e, AA_STRUCT, "flags")) goto fail; if (!unpack_u32(e, &tmp, NULL)) goto fail; if (tmp & PACKED_FLAG_HAT) - profile->flags |= PFLAG_HAT; + profile->label.flags |= FLAG_HAT; if (!unpack_u32(e, &tmp, NULL)) goto fail; - if (tmp == PACKED_MODE_COMPLAIN) + if (tmp == PACKED_MODE_COMPLAIN || (e->version & FORCE_COMPLAIN_FLAG)) profile->mode = APPARMOR_COMPLAIN; else if (tmp == PACKED_MODE_KILL) profile->mode = APPARMOR_KILL; @@ -534,11 +556,9 @@ goto fail; /* path_flags is optional */ - if (unpack_u32(e, &profile->path_flags, "path_flags")) - profile->path_flags |= profile->flags & PFLAG_MEDIATE_DELETED; - else + if (!unpack_u32(e, &profile->path_flags, "path_flags")) /* set a default value if path_flags field is not present */ - profile->path_flags = PFLAG_MEDIATE_DELETED; + profile->path_flags = PATH_MEDIATE_DELETED; if (!unpack_u32(e, &(profile->caps.allow.cap[0]), NULL)) goto fail; @@ -576,6 +596,37 @@ if (!unpack_rlimits(e, profile)) goto fail; + size = unpack_array(e, "net_allowed_af"); + if (size) { + + 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.allow[i], NULL)) + goto fail; + if (!unpack_u16(e, &profile->net.audit[i], NULL)) + goto fail; + if (!unpack_u16(e, &profile->net.quiet[i], NULL)) + goto fail; + } + if (!unpack_nameX(e, AA_ARRAYEND, NULL)) + goto fail; + } + if (VERSION_CMP(<, e->version, v7)) { + /* old policy always allowed these too */ + profile->net.allow[AF_UNIX] = 0xffff; + profile->net.allow[AF_NETLINK] = 0xffff; + } + if (unpack_nameX(e, AA_STRUCT, "policydb")) { /* generic policy dfa - optional and may be NULL */ profile->policy.dfa = unpack_dfa(e); @@ -604,12 +655,16 @@ error = PTR_ERR(profile->file.dfa); profile->file.dfa = NULL; goto fail; + } else if (profile->file.dfa) { + if (!unpack_u32(e, &profile->file.start, "dfa_start")) + /* default start state */ + profile->file.start = DFA_START; + } else if (profile->policy.dfa && + profile->policy.start[AA_CLASS_FILE]) { + profile->file.dfa = aa_get_dfa(profile->policy.dfa); + profile->file.start = profile->policy.start[AA_CLASS_FILE]; } - if (!unpack_u32(e, &profile->file.start, "dfa_start")) - /* default start state */ - profile->file.start = DFA_START; - if (!unpack_trans_table(e, profile)) goto fail; @@ -650,15 +705,17 @@ error); return error; } - - /* check that the interface version is currently supported */ - if (e->version != 5) { - audit_iface(NULL, NULL, "unsupported interface version", - e, error); - return error; - } } + /* Check that the interface version is currently supported. + * if not specified use previous version + * Mask off everything that is not kernel abi version + */ + if (VERSION_CMP(<, e->version, v5) && VERSION_CMP(>, e->version, v7)) { + audit_iface(NULL, NULL, "unsupported interface version", + e, error); + return error; + } /* read the namespace if present */ if (unpack_str(e, &name, "namespace")) { @@ -775,8 +832,9 @@ if (error) goto fail_profile; - error = aa_calc_profile_hash(profile, e.version, start, - e.pos - start); + if (aa_g_hash_policy) + error = aa_calc_profile_hash(profile, e.version, start, + e.pos - start); if (error) goto fail_profile; --- linux-raspi2-4.2.0.orig/security/apparmor/procattr.c +++ linux-raspi2-4.2.0/security/apparmor/procattr.c @@ -33,50 +33,29 @@ * * Returns: size of string placed in @string else error code on failure */ -int aa_getprocattr(struct aa_profile *profile, char **string) +int aa_getprocattr(struct aa_label *label, char **string) { - char *str; - int len = 0, mode_len = 0, ns_len = 0, name_len; - const char *mode_str = aa_profile_mode_names[profile->mode]; - const char *ns_name = NULL; - struct aa_namespace *ns = profile->ns; - struct aa_namespace *current_ns = __aa_current_profile()->ns; - char *s; + struct aa_namespace *ns = labels_ns(label); + struct aa_namespace *current_ns = labels_ns(aa_current_label()); + int len; if (!aa_ns_visible(current_ns, ns)) return -EACCES; - ns_name = aa_ns_name(current_ns, ns); - ns_len = strlen(ns_name); + len = aa_label_snprint(NULL, 0, current_ns, label, true); + AA_BUG(len < 0); - /* if the visible ns_name is > 0 increase size for : :// seperator */ - if (ns_len) - ns_len += 4; - - /* unconfined profiles don't have a mode string appended */ - if (!unconfined(profile)) - mode_len = strlen(mode_str) + 3; /* + 3 for _() */ - - name_len = strlen(profile->base.hname); - len = mode_len + ns_len + name_len + 1; /* + 1 for \n */ - s = str = kmalloc(len + 1, GFP_KERNEL); /* + 1 \0 */ - if (!str) + *string = kmalloc(len + 2, GFP_KERNEL); + if (!*string) return -ENOMEM; - if (ns_len) { - /* skip over prefix current_ns->base.hname and separating // */ - sprintf(s, ":%s://", ns_name); - s += ns_len; - } - if (unconfined(profile)) - /* mode string not being appended */ - sprintf(s, "%s\n", profile->base.hname); - else - sprintf(s, "%s (%s)\n", profile->base.hname, mode_str); - *string = str; + len = aa_label_snprint(*string, len + 2, current_ns, label, true); + if (len < 0) + return len; + (*string)[len] = '\n'; + (*string)[len + 1] = 0; - /* NOTE: len does not include \0 of string, not saved as part of file */ - return len; + return len + 1; } /** @@ -138,12 +117,13 @@ for (count = 0; (hat < end) && count < 16; ++count) { char *next = hat + strlen(hat) + 1; hats[count] = hat; + AA_DEBUG("%s: (pid %d) Magic 0x%llx count %d hat '%s'\n" + , __func__, current->pid, token, count, hat); hat = next; } - } - - AA_DEBUG("%s: Magic 0x%llx Hat '%s'\n", - __func__, token, hat ? hat : NULL); + } else + AA_DEBUG("%s: (pid %d) Magic 0x%llx count %d Hat '%s'\n", + __func__, current->pid, token, count, ""); return aa_change_hat(hats, count, token, test); } --- linux-raspi2-4.2.0.orig/security/apparmor/resource.c +++ linux-raspi2-4.2.0/security/apparmor/resource.c @@ -35,7 +35,7 @@ struct common_audit_data *sa = va; audit_log_format(ab, " rlimit=%s value=%lu", - rlim_names[sa->aad->rlim.rlim], sa->aad->rlim.max); + rlim_names[aad(sa)->rlim.rlim], aad(sa)->rlim.max); } /** @@ -50,17 +50,11 @@ static int audit_resource(struct aa_profile *profile, unsigned int resource, unsigned long value, int error) { - struct common_audit_data sa; - struct apparmor_audit_data aad = {0,}; - - sa.type = LSM_AUDIT_DATA_NONE; - sa.aad = &aad; - aad.op = OP_SETRLIMIT, - aad.rlim.rlim = resource; - aad.rlim.max = value; - aad.error = error; - return aa_audit(AUDIT_APPARMOR_AUTO, profile, GFP_KERNEL, &sa, - audit_cb); + DEFINE_AUDIT_DATA(sa, LSM_AUDIT_DATA_NONE, OP_SETRLIMIT); + aad(&sa)->rlim.rlim = resource; + aad(&sa)->rlim.max = value; + aad(&sa)->error = error; + return aa_audit(AUDIT_APPARMOR_AUTO, profile, &sa, audit_cb); } /** @@ -77,9 +71,19 @@ return rlim_map[resource]; } +static int profile_setrlimit(struct aa_profile *profile, unsigned int resource, + struct rlimit *new_rlim) +{ + int e = 0; + if (profile->rlimits.mask & (1 << resource) && new_rlim->rlim_max > + profile->rlimits.limits[resource].rlim_max) + e = -EACCES; + return audit_resource(profile, resource, new_rlim->rlim_max, e); +} + /** * aa_task_setrlimit - test permission to set an rlimit - * @profile - profile confining the task (NOT NULL) + * @label - label confining the task (NOT NULL) * @task - task the resource is being set on * @resource - the resource being set * @new_rlim - the new resource limit (NOT NULL) @@ -88,14 +92,15 @@ * * Returns: 0 or error code if setting resource failed */ -int aa_task_setrlimit(struct aa_profile *profile, struct task_struct *task, +int aa_task_setrlimit(struct aa_label *label, struct task_struct *task, unsigned int resource, struct rlimit *new_rlim) { - struct aa_profile *task_profile; + struct aa_profile *profile; + struct aa_label *task_label; int error = 0; rcu_read_lock(); - task_profile = aa_get_profile(aa_cred_profile(__task_cred(task))); + task_label = aa_get_newest_cred_label(__task_cred(task)); rcu_read_unlock(); /* TODO: extend resource control to handle other (non current) @@ -103,52 +108,65 @@ * that the task is setting the resource of a task confined with * the same profile. */ - if (profile != task_profile || - (profile->rlimits.mask & (1 << resource) && - new_rlim->rlim_max > profile->rlimits.limits[resource].rlim_max)) - error = -EACCES; + if (label != task_label) + error = fn_for_each(label, profile, + audit_resource(profile, resource, + new_rlim->rlim_max, EACCES)); + else + error = fn_for_each_confined(label, profile, + profile_setrlimit(profile, resource, new_rlim)); + aa_put_label(task_label); - aa_put_profile(task_profile); - - return audit_resource(profile, resource, new_rlim->rlim_max, error); + return error; } /** * __aa_transition_rlimits - apply new profile rlimits - * @old: old profile on task (NOT NULL) - * @new: new profile with rlimits to apply (NOT NULL) + * @old_l: old label on task (NOT NULL) + * @new_l: new label with rlimits to apply (NOT NULL) */ -void __aa_transition_rlimits(struct aa_profile *old, struct aa_profile *new) +void __aa_transition_rlimits(struct aa_label *old_l, struct aa_label *new_l) { unsigned int mask = 0; struct rlimit *rlim, *initrlim; - int i; + struct aa_profile *old, *new; + struct label_it i; + + old = labels_profile(old_l); + new = labels_profile(new_l); - /* for any rlimits the profile controlled reset the soft limit - * to the less of the tasks hard limit and the init tasks soft limit + /* for any rlimits the profile controlled, reset the soft limit + * to the lesser of the tasks hard limit and the init tasks soft limit */ - if (old->rlimits.mask) { - for (i = 0, mask = 1; i < RLIM_NLIMITS; i++, mask <<= 1) { - if (old->rlimits.mask & mask) { - rlim = current->signal->rlim + i; - initrlim = init_task.signal->rlim + i; - rlim->rlim_cur = min(rlim->rlim_max, - initrlim->rlim_cur); + label_for_each_confined(i, old_l, old) { + if (old->rlimits.mask) { + int j; + for (j = 0, mask = 1; j < RLIM_NLIMITS; j++, + mask <<= 1) { + if (old->rlimits.mask & mask) { + rlim = current->signal->rlim + j; + initrlim = init_task.signal->rlim + j; + rlim->rlim_cur = min(rlim->rlim_max, + initrlim->rlim_cur); + } } } } /* set any new hard limits as dictated by the new profile */ - if (!new->rlimits.mask) - return; - for (i = 0, mask = 1; i < RLIM_NLIMITS; i++, mask <<= 1) { - if (!(new->rlimits.mask & mask)) + label_for_each_confined(i, new_l, new) { + int j; + if (!new->rlimits.mask) continue; - - rlim = current->signal->rlim + i; - rlim->rlim_max = min(rlim->rlim_max, - new->rlimits.limits[i].rlim_max); - /* soft limit should not exceed hard limit */ - rlim->rlim_cur = min(rlim->rlim_cur, rlim->rlim_max); + for (j = 0, mask = 1; j < RLIM_NLIMITS; j++, mask <<= 1) { + if (!(new->rlimits.mask & mask)) + continue; + + rlim = current->signal->rlim + j; + rlim->rlim_max = min(rlim->rlim_max, + new->rlimits.limits[j].rlim_max); + /* soft limit should not exceed hard limit */ + rlim->rlim_cur = min(rlim->rlim_cur, rlim->rlim_max); + } } } --- linux-raspi2-4.2.0.orig/security/commoncap.c +++ linux-raspi2-4.2.0/security/commoncap.c @@ -970,12 +970,14 @@ } return ret; } +EXPORT_SYMBOL(cap_mmap_addr); int cap_mmap_file(struct file *file, unsigned long reqprot, unsigned long prot, unsigned long flags) { return 0; } +EXPORT_SYMBOL(cap_mmap_file); #ifdef CONFIG_SECURITY --- linux-raspi2-4.2.0.orig/security/device_cgroup.c +++ linux-raspi2-4.2.0/security/device_cgroup.c @@ -7,6 +7,7 @@ #include #include #include +#include #include #include #include @@ -849,6 +850,7 @@ return __devcgroup_check_permission(type, imajor(inode), iminor(inode), access); } +EXPORT_SYMBOL(__devcgroup_inode_permission); int devcgroup_inode_mknod(int mode, dev_t dev) { --- linux-raspi2-4.2.0.orig/security/integrity/digsig.c +++ linux-raspi2-4.2.0/security/integrity/digsig.c @@ -105,7 +105,7 @@ rc, ((KEY_POS_ALL & ~KEY_POS_SETATTR) | KEY_USR_VIEW | KEY_USR_READ), - KEY_ALLOC_NOT_IN_QUOTA | KEY_ALLOC_TRUSTED); + KEY_ALLOC_NOT_IN_QUOTA); if (IS_ERR(key)) { rc = PTR_ERR(key); pr_err("Problem loading X.509 certificate (%d): %s\n", --- linux-raspi2-4.2.0.orig/security/keys/gc.c +++ linux-raspi2-4.2.0/security/keys/gc.c @@ -134,6 +134,12 @@ kdebug("- %u", key->serial); key_check(key); + /* Throw away the key data if the key is instantiated */ + if (test_bit(KEY_FLAG_INSTANTIATED, &key->flags) && + !test_bit(KEY_FLAG_NEGATIVE, &key->flags) && + key->type->destroy) + key->type->destroy(key); + security_key_free(key); /* deal with the user's key tracking and quota */ @@ -148,10 +154,6 @@ if (test_bit(KEY_FLAG_INSTANTIATED, &key->flags)) atomic_dec(&key->user->nikeys); - /* now throw away the key memory */ - if (key->type->destroy) - key->type->destroy(key); - key_user_put(key->user); kfree(key->description); --- linux-raspi2-4.2.0.orig/security/keys/keyctl.c +++ linux-raspi2-4.2.0/security/keys/keyctl.c @@ -757,16 +757,16 @@ /* the key is probably readable - now try to read it */ can_read_key: - ret = key_validate(key); - if (ret == 0) { - ret = -EOPNOTSUPP; - if (key->type->read) { - /* read the data with the semaphore held (since we - * might sleep) */ - down_read(&key->sem); + ret = -EOPNOTSUPP; + if (key->type->read) { + /* Read the data with the semaphore held (since we might sleep) + * to protect against the key being updated or revoked. + */ + down_read(&key->sem); + ret = key_validate(key); + if (ret == 0) ret = key->type->read(key, buffer, buflen); - up_read(&key->sem); - } + up_read(&key->sem); } error2: --- linux-raspi2-4.2.0.orig/security/keys/process_keys.c +++ linux-raspi2-4.2.0/security/keys/process_keys.c @@ -794,6 +794,7 @@ ret = PTR_ERR(keyring); goto error2; } else if (keyring == new->session_keyring) { + key_put(keyring); ret = 0; goto error2; } --- linux-raspi2-4.2.0.orig/security/keys/request_key.c +++ linux-raspi2-4.2.0/security/keys/request_key.c @@ -440,6 +440,9 @@ kenter(""); + if (ctx->index_key.type == &key_type_keyring) + return ERR_PTR(-EPERM); + user = key_user_lookup(current_fsuid()); if (!user) return ERR_PTR(-ENOMEM); --- linux-raspi2-4.2.0.orig/security/security.c +++ linux-raspi2-4.2.0/security/security.c @@ -438,6 +438,7 @@ return 0; return call_int_hook(path_rmdir, 0, dir, dentry); } +EXPORT_SYMBOL(security_path_rmdir); int security_path_unlink(struct path *dir, struct dentry *dentry) { @@ -454,6 +455,7 @@ return 0; return call_int_hook(path_symlink, 0, dir, dentry, old_name); } +EXPORT_SYMBOL(security_path_symlink); int security_path_link(struct dentry *old_dentry, struct path *new_dir, struct dentry *new_dentry) @@ -462,6 +464,7 @@ return 0; return call_int_hook(path_link, 0, old_dentry, new_dir, new_dentry); } +EXPORT_SYMBOL(security_path_link); int security_path_rename(struct path *old_dir, struct dentry *old_dentry, struct path *new_dir, struct dentry *new_dentry, @@ -489,6 +492,7 @@ return 0; return call_int_hook(path_truncate, 0, path); } +EXPORT_SYMBOL(security_path_truncate); int security_path_chmod(struct path *path, umode_t mode) { @@ -496,6 +500,7 @@ return 0; return call_int_hook(path_chmod, 0, path, mode); } +EXPORT_SYMBOL(security_path_chmod); int security_path_chown(struct path *path, kuid_t uid, kgid_t gid) { @@ -503,6 +508,7 @@ return 0; return call_int_hook(path_chown, 0, path, uid, gid); } +EXPORT_SYMBOL(security_path_chown); int security_path_chroot(struct path *path) { @@ -588,6 +594,7 @@ return 0; return call_int_hook(inode_readlink, 0, dentry); } +EXPORT_SYMBOL(security_inode_readlink); int security_inode_follow_link(struct dentry *dentry, struct inode *inode, bool rcu) @@ -603,6 +610,7 @@ return 0; return call_int_hook(inode_permission, 0, inode, mask); } +EXPORT_SYMBOL(security_inode_permission); int security_inode_setattr(struct dentry *dentry, struct iattr *attr) { @@ -741,6 +749,7 @@ return fsnotify_perm(file, mask); } +EXPORT_SYMBOL(security_file_permission); int security_file_alloc(struct file *file) { @@ -800,6 +809,7 @@ return ret; return ima_file_mmap(file, prot); } +EXPORT_SYMBOL(security_mmap_file); int security_mmap_addr(unsigned long addr) { --- linux-raspi2-4.2.0.orig/security/selinux/hooks.c +++ linux-raspi2-4.2.0/security/selinux/hooks.c @@ -1100,7 +1100,7 @@ seq_puts(m, prefix); if (has_comma) seq_putc(m, '\"'); - seq_puts(m, opts->mnt_opts[i]); + seq_escape(m, opts->mnt_opts[i], "\"\n\\"); if (has_comma) seq_putc(m, '\"'); } --- linux-raspi2-4.2.0.orig/sound/arm/Kconfig +++ linux-raspi2-4.2.0/sound/arm/Kconfig @@ -9,6 +9,14 @@ Drivers that are implemented on ASoC can be found in "ALSA for SoC audio support" section. +config SND_PXA2XX_LIB + tristate + select SND_AC97_CODEC if SND_PXA2XX_LIB_AC97 + select SND_DMAENGINE_PCM + +config SND_PXA2XX_LIB_AC97 + bool + if SND_ARM config SND_ARMAACI @@ -21,13 +29,6 @@ tristate select SND_PCM -config SND_PXA2XX_LIB - tristate - select SND_AC97_CODEC if SND_PXA2XX_LIB_AC97 - -config SND_PXA2XX_LIB_AC97 - bool - config SND_PXA2XX_AC97 tristate "AC97 driver for the Intel PXA2xx chip" depends on ARCH_PXA @@ -39,5 +40,13 @@ Say Y or M if you want to support any AC97 codec attached to the PXA2xx AC97 interface. +config SND_BCM2835 + tristate "BCM2835 ALSA driver" + depends on (ARCH_BCM2708 || ARCH_BCM2709 || ARCH_BCM2835) \ + && BCM2708_VCHIQ && SND + select SND_PCM + help + Say Y or M if you want to support BCM2835 Alsa pcm card driver + endif # SND_ARM --- linux-raspi2-4.2.0.orig/sound/arm/Makefile +++ linux-raspi2-4.2.0/sound/arm/Makefile @@ -14,3 +14,8 @@ obj-$(CONFIG_SND_PXA2XX_AC97) += snd-pxa2xx-ac97.o snd-pxa2xx-ac97-objs := pxa2xx-ac97.o + +obj-$(CONFIG_SND_BCM2835) += snd-bcm2835.o +snd-bcm2835-objs := bcm2835.o bcm2835-ctl.o bcm2835-pcm.o bcm2835-vchiq.o + +ccflags-y += -Idrivers/misc/vc04_services -Idrivers/misc/vc04_services/interface/vcos/linuxkernel -D__VCCOREVER__=0x04000000 --- linux-raspi2-4.2.0.orig/sound/arm/bcm2835-ctl.c +++ linux-raspi2-4.2.0/sound/arm/bcm2835-ctl.c @@ -0,0 +1,323 @@ +/***************************************************************************** +* Copyright 2011 Broadcom Corporation. All rights reserved. +* +* Unless you and Broadcom execute a separate written software license +* agreement governing use of this software, this software is licensed to you +* under the terms of the GNU General Public License version 2, available at +* http://www.broadcom.com/licenses/GPLv2.php (the "GPL"). +* +* Notwithstanding the above, under no circumstances may you combine this +* software in any way with any other Broadcom software provided under a +* license other than the GPL, without Broadcom's express prior written +* consent. +*****************************************************************************/ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include + +#include "bcm2835.h" + +/* volume maximum and minimum in terms of 0.01dB */ +#define CTRL_VOL_MAX 400 +#define CTRL_VOL_MIN -10239 /* originally -10240 */ + + +static int snd_bcm2835_ctl_info(struct snd_kcontrol *kcontrol, + struct snd_ctl_elem_info *uinfo) +{ + audio_info(" ... IN\n"); + if (kcontrol->private_value == PCM_PLAYBACK_VOLUME) { + uinfo->type = SNDRV_CTL_ELEM_TYPE_INTEGER; + uinfo->count = 1; + uinfo->value.integer.min = CTRL_VOL_MIN; + uinfo->value.integer.max = CTRL_VOL_MAX; /* 2303 */ + } else if (kcontrol->private_value == PCM_PLAYBACK_MUTE) { + uinfo->type = SNDRV_CTL_ELEM_TYPE_BOOLEAN; + uinfo->count = 1; + uinfo->value.integer.min = 0; + uinfo->value.integer.max = 1; + } else if (kcontrol->private_value == PCM_PLAYBACK_DEVICE) { + uinfo->type = SNDRV_CTL_ELEM_TYPE_INTEGER; + uinfo->count = 1; + uinfo->value.integer.min = 0; + uinfo->value.integer.max = AUDIO_DEST_MAX-1; + } + audio_info(" ... OUT\n"); + return 0; +} + +/* toggles mute on or off depending on the value of nmute, and returns + * 1 if the mute value was changed, otherwise 0 + */ +static int toggle_mute(struct bcm2835_chip *chip, int nmute) +{ + /* if settings are ok, just return 0 */ + if(chip->mute == nmute) + return 0; + + /* if the sound is muted then we need to unmute */ + if(chip->mute == CTRL_VOL_MUTE) + { + chip->volume = chip->old_volume; /* copy the old volume back */ + audio_info("Unmuting, old_volume = %d, volume = %d ...\n", chip->old_volume, chip->volume); + } + else /* otherwise we mute */ + { + chip->old_volume = chip->volume; + chip->volume = 26214; /* set volume to minimum level AKA mute */ + audio_info("Muting, old_volume = %d, volume = %d ...\n", chip->old_volume, chip->volume); + } + + chip->mute = nmute; + return 1; +} + +static int snd_bcm2835_ctl_get(struct snd_kcontrol *kcontrol, + struct snd_ctl_elem_value *ucontrol) +{ + struct bcm2835_chip *chip = snd_kcontrol_chip(kcontrol); + + BUG_ON(!chip && !(chip->avail_substreams & AVAIL_SUBSTREAMS_MASK)); + + if (kcontrol->private_value == PCM_PLAYBACK_VOLUME) + ucontrol->value.integer.value[0] = chip2alsa(chip->volume); + else if (kcontrol->private_value == PCM_PLAYBACK_MUTE) + ucontrol->value.integer.value[0] = chip->mute; + else if (kcontrol->private_value == PCM_PLAYBACK_DEVICE) + ucontrol->value.integer.value[0] = chip->dest; + + return 0; +} + +static int snd_bcm2835_ctl_put(struct snd_kcontrol *kcontrol, + struct snd_ctl_elem_value *ucontrol) +{ + struct bcm2835_chip *chip = snd_kcontrol_chip(kcontrol); + int changed = 0; + + if (kcontrol->private_value == PCM_PLAYBACK_VOLUME) { + audio_info("Volume change attempted.. volume = %d new_volume = %d\n", chip->volume, (int)ucontrol->value.integer.value[0]); + if (chip->mute == CTRL_VOL_MUTE) { + /* changed = toggle_mute(chip, CTRL_VOL_UNMUTE); */ + return 1; /* should return 0 to signify no change but the mixer takes this as the opposite sign (no idea why) */ + } + if (changed + || (ucontrol->value.integer.value[0] != chip2alsa(chip->volume))) { + + chip->volume = alsa2chip(ucontrol->value.integer.value[0]); + changed = 1; + } + + } else if (kcontrol->private_value == PCM_PLAYBACK_MUTE) { + /* Now implemented */ + audio_info(" Mute attempted\n"); + changed = toggle_mute(chip, ucontrol->value.integer.value[0]); + + } else if (kcontrol->private_value == PCM_PLAYBACK_DEVICE) { + if (ucontrol->value.integer.value[0] != chip->dest) { + chip->dest = ucontrol->value.integer.value[0]; + changed = 1; + } + } + + if (changed) { + if (bcm2835_audio_set_ctls(chip)) + printk(KERN_ERR "Failed to set ALSA controls..\n"); + } + + return changed; +} + +static DECLARE_TLV_DB_SCALE(snd_bcm2835_db_scale, CTRL_VOL_MIN, 1, 1); + +static struct snd_kcontrol_new snd_bcm2835_ctl[] = { + { + .iface = SNDRV_CTL_ELEM_IFACE_MIXER, + .name = "PCM Playback Volume", + .index = 0, + .access = SNDRV_CTL_ELEM_ACCESS_READWRITE | SNDRV_CTL_ELEM_ACCESS_TLV_READ, + .private_value = PCM_PLAYBACK_VOLUME, + .info = snd_bcm2835_ctl_info, + .get = snd_bcm2835_ctl_get, + .put = snd_bcm2835_ctl_put, + .count = 1, + .tlv = {.p = snd_bcm2835_db_scale} + }, + { + .iface = SNDRV_CTL_ELEM_IFACE_MIXER, + .name = "PCM Playback Switch", + .index = 0, + .access = SNDRV_CTL_ELEM_ACCESS_READWRITE, + .private_value = PCM_PLAYBACK_MUTE, + .info = snd_bcm2835_ctl_info, + .get = snd_bcm2835_ctl_get, + .put = snd_bcm2835_ctl_put, + .count = 1, + }, + { + .iface = SNDRV_CTL_ELEM_IFACE_MIXER, + .name = "PCM Playback Route", + .index = 0, + .access = SNDRV_CTL_ELEM_ACCESS_READWRITE, + .private_value = PCM_PLAYBACK_DEVICE, + .info = snd_bcm2835_ctl_info, + .get = snd_bcm2835_ctl_get, + .put = snd_bcm2835_ctl_put, + .count = 1, + }, +}; + +static int snd_bcm2835_spdif_default_info(struct snd_kcontrol *kcontrol, + struct snd_ctl_elem_info *uinfo) +{ + uinfo->type = SNDRV_CTL_ELEM_TYPE_IEC958; + uinfo->count = 1; + return 0; +} + +static int snd_bcm2835_spdif_default_get(struct snd_kcontrol *kcontrol, + struct snd_ctl_elem_value *ucontrol) +{ + struct bcm2835_chip *chip = snd_kcontrol_chip(kcontrol); + int i; + + for (i = 0; i < 4; i++) + ucontrol->value.iec958.status[i] = + (chip->spdif_status >> (i * 8)) && 0xff; + + return 0; +} + +static int snd_bcm2835_spdif_default_put(struct snd_kcontrol *kcontrol, + struct snd_ctl_elem_value *ucontrol) +{ + struct bcm2835_chip *chip = snd_kcontrol_chip(kcontrol); + unsigned int val = 0; + int i, change; + + for (i = 0; i < 4; i++) + val |= (unsigned int)ucontrol->value.iec958.status[i] << (i * 8); + + change = val != chip->spdif_status; + chip->spdif_status = val; + + return change; +} + +static int snd_bcm2835_spdif_mask_info(struct snd_kcontrol *kcontrol, + struct snd_ctl_elem_info *uinfo) +{ + uinfo->type = SNDRV_CTL_ELEM_TYPE_IEC958; + uinfo->count = 1; + return 0; +} + +static int snd_bcm2835_spdif_mask_get(struct snd_kcontrol *kcontrol, + struct snd_ctl_elem_value *ucontrol) +{ + /* bcm2835 supports only consumer mode and sets all other format flags + * automatically. So the only thing left is signalling non-audio + * content */ + ucontrol->value.iec958.status[0] = IEC958_AES0_NONAUDIO; + return 0; +} + +static int snd_bcm2835_spdif_stream_info(struct snd_kcontrol *kcontrol, + struct snd_ctl_elem_info *uinfo) +{ + uinfo->type = SNDRV_CTL_ELEM_TYPE_IEC958; + uinfo->count = 1; + return 0; +} + +static int snd_bcm2835_spdif_stream_get(struct snd_kcontrol *kcontrol, + struct snd_ctl_elem_value *ucontrol) +{ + struct bcm2835_chip *chip = snd_kcontrol_chip(kcontrol); + int i; + + for (i = 0; i < 4; i++) + ucontrol->value.iec958.status[i] = + (chip->spdif_status >> (i * 8)) & 0xff; + return 0; +} + +static int snd_bcm2835_spdif_stream_put(struct snd_kcontrol *kcontrol, + struct snd_ctl_elem_value *ucontrol) +{ + struct bcm2835_chip *chip = snd_kcontrol_chip(kcontrol); + unsigned int val = 0; + int i, change; + + for (i = 0; i < 4; i++) + val |= (unsigned int)ucontrol->value.iec958.status[i] << (i * 8); + change = val != chip->spdif_status; + chip->spdif_status = val; + + return change; +} + +static struct snd_kcontrol_new snd_bcm2835_spdif[] = { + { + .iface = SNDRV_CTL_ELEM_IFACE_PCM, + .name = SNDRV_CTL_NAME_IEC958("", PLAYBACK, DEFAULT), + .info = snd_bcm2835_spdif_default_info, + .get = snd_bcm2835_spdif_default_get, + .put = snd_bcm2835_spdif_default_put + }, + { + .access = SNDRV_CTL_ELEM_ACCESS_READ, + .iface = SNDRV_CTL_ELEM_IFACE_PCM, + .name = SNDRV_CTL_NAME_IEC958("", PLAYBACK, CON_MASK), + .info = snd_bcm2835_spdif_mask_info, + .get = snd_bcm2835_spdif_mask_get, + }, + { + .access = SNDRV_CTL_ELEM_ACCESS_READWRITE | + SNDRV_CTL_ELEM_ACCESS_INACTIVE, + .iface = SNDRV_CTL_ELEM_IFACE_PCM, + .name = SNDRV_CTL_NAME_IEC958("", PLAYBACK, PCM_STREAM), + .info = snd_bcm2835_spdif_stream_info, + .get = snd_bcm2835_spdif_stream_get, + .put = snd_bcm2835_spdif_stream_put, + }, +}; + +int snd_bcm2835_new_ctl(bcm2835_chip_t * chip) +{ + int err; + unsigned int idx; + + strcpy(chip->card->mixername, "Broadcom Mixer"); + for (idx = 0; idx < ARRAY_SIZE(snd_bcm2835_ctl); idx++) { + err = + snd_ctl_add(chip->card, + snd_ctl_new1(&snd_bcm2835_ctl[idx], chip)); + if (err < 0) + return err; + } + for (idx = 0; idx < ARRAY_SIZE(snd_bcm2835_spdif); idx++) { + err = snd_ctl_add(chip->card, + snd_ctl_new1(&snd_bcm2835_spdif[idx], chip)); + if (err < 0) + return err; + } + return 0; +} --- linux-raspi2-4.2.0.orig/sound/arm/bcm2835-pcm.c +++ linux-raspi2-4.2.0/sound/arm/bcm2835-pcm.c @@ -0,0 +1,557 @@ +/***************************************************************************** +* Copyright 2011 Broadcom Corporation. All rights reserved. +* +* Unless you and Broadcom execute a separate written software license +* agreement governing use of this software, this software is licensed to you +* under the terms of the GNU General Public License version 2, available at +* http://www.broadcom.com/licenses/GPLv2.php (the "GPL"). +* +* Notwithstanding the above, under no circumstances may you combine this +* software in any way with any other Broadcom software provided under a +* license other than the GPL, without Broadcom's express prior written +* consent. +*****************************************************************************/ + +#include +#include + +#include + +#include "bcm2835.h" + +/* hardware definition */ +static struct snd_pcm_hardware snd_bcm2835_playback_hw = { + .info = (SNDRV_PCM_INFO_INTERLEAVED | SNDRV_PCM_INFO_BLOCK_TRANSFER | + SNDRV_PCM_INFO_MMAP | SNDRV_PCM_INFO_MMAP_VALID), + .formats = SNDRV_PCM_FMTBIT_U8 | SNDRV_PCM_FMTBIT_S16_LE, + .rates = SNDRV_PCM_RATE_CONTINUOUS | SNDRV_PCM_RATE_8000_48000, + .rate_min = 8000, + .rate_max = 48000, + .channels_min = 1, + .channels_max = 2, + .buffer_bytes_max = 128 * 1024, + .period_bytes_min = 1 * 1024, + .period_bytes_max = 128 * 1024, + .periods_min = 1, + .periods_max = 128, +}; + +static struct snd_pcm_hardware snd_bcm2835_playback_spdif_hw = { + .info = (SNDRV_PCM_INFO_INTERLEAVED | SNDRV_PCM_INFO_BLOCK_TRANSFER | + SNDRV_PCM_INFO_MMAP | SNDRV_PCM_INFO_MMAP_VALID), + .formats = SNDRV_PCM_FMTBIT_S16_LE, + .rates = SNDRV_PCM_RATE_CONTINUOUS | SNDRV_PCM_RATE_44100 | + SNDRV_PCM_RATE_48000, + .rate_min = 44100, + .rate_max = 48000, + .channels_min = 2, + .channels_max = 2, + .buffer_bytes_max = 128 * 1024, + .period_bytes_min = 1 * 1024, + .period_bytes_max = 128 * 1024, + .periods_min = 1, + .periods_max = 128, +}; + +static void snd_bcm2835_playback_free(struct snd_pcm_runtime *runtime) +{ + audio_info("Freeing up alsa stream here ..\n"); + if (runtime->private_data) + kfree(runtime->private_data); + runtime->private_data = NULL; +} + +static irqreturn_t bcm2835_playback_fifo_irq(int irq, void *dev_id) +{ + bcm2835_alsa_stream_t *alsa_stream = (bcm2835_alsa_stream_t *) dev_id; + uint32_t consumed = 0; + int new_period = 0; + + audio_info(" .. IN\n"); + + audio_info("alsa_stream=%p substream=%p\n", alsa_stream, + alsa_stream ? alsa_stream->substream : 0); + + if (alsa_stream->open) + consumed = bcm2835_audio_retrieve_buffers(alsa_stream); + + /* We get called only if playback was triggered, So, the number of buffers we retrieve in + * each iteration are the buffers that have been played out already + */ + + if (alsa_stream->period_size) { + if ((alsa_stream->pos / alsa_stream->period_size) != + ((alsa_stream->pos + consumed) / alsa_stream->period_size)) + new_period = 1; + } + audio_debug("updating pos cur: %d + %d max:%d period_bytes:%d, hw_ptr: %d new_period:%d\n", + alsa_stream->pos, + consumed, + alsa_stream->buffer_size, + (int)(alsa_stream->period_size*alsa_stream->substream->runtime->periods), + frames_to_bytes(alsa_stream->substream->runtime, alsa_stream->substream->runtime->status->hw_ptr), + new_period); + if (alsa_stream->buffer_size) { + alsa_stream->pos += consumed &~ (1<<30); + alsa_stream->pos %= alsa_stream->buffer_size; + } + + if (alsa_stream->substream) { + if (new_period) + snd_pcm_period_elapsed(alsa_stream->substream); + } else { + audio_warning(" unexpected NULL substream\n"); + } + audio_info(" .. OUT\n"); + + return IRQ_HANDLED; +} + +/* open callback */ +static int snd_bcm2835_playback_open_generic( + struct snd_pcm_substream *substream, int spdif) +{ + bcm2835_chip_t *chip = snd_pcm_substream_chip(substream); + struct snd_pcm_runtime *runtime = substream->runtime; + bcm2835_alsa_stream_t *alsa_stream; + int idx; + int err; + + audio_info(" .. IN (%d)\n", substream->number); + + if(mutex_lock_interruptible(&chip->audio_mutex)) + { + audio_error("Interrupted whilst waiting for lock\n"); + return -EINTR; + } + audio_info("Alsa open (%d)\n", substream->number); + idx = substream->number; + + if (spdif && chip->opened != 0) { + err = -EBUSY; + goto out; + } + else if (!spdif && (chip->opened & (1 << idx))) { + err = -EBUSY; + goto out; + } + if (idx > MAX_SUBSTREAMS) { + audio_error + ("substream(%d) device doesn't exist max(%d) substreams allowed\n", + idx, MAX_SUBSTREAMS); + err = -ENODEV; + goto out; + } + + /* Check if we are ready */ + if (!(chip->avail_substreams & (1 << idx))) { + /* We are not ready yet */ + audio_error("substream(%d) device is not ready yet\n", idx); + err = -EAGAIN; + goto out; + } + + alsa_stream = kzalloc(sizeof(bcm2835_alsa_stream_t), GFP_KERNEL); + if (alsa_stream == NULL) { + err = -ENOMEM; + goto out; + } + + /* Initialise alsa_stream */ + alsa_stream->chip = chip; + alsa_stream->substream = substream; + alsa_stream->idx = idx; + + sema_init(&alsa_stream->buffers_update_sem, 0); + sema_init(&alsa_stream->control_sem, 0); + spin_lock_init(&alsa_stream->lock); + + /* Enabled in start trigger, called on each "fifo irq" after that */ + alsa_stream->enable_fifo_irq = 0; + alsa_stream->fifo_irq_handler = bcm2835_playback_fifo_irq; + + err = bcm2835_audio_open(alsa_stream); + if (err != 0) { + kfree(alsa_stream); + goto out; + } + runtime->private_data = alsa_stream; + runtime->private_free = snd_bcm2835_playback_free; + if (spdif) { + runtime->hw = snd_bcm2835_playback_spdif_hw; + } else { + /* clear spdif status, as we are not in spdif mode */ + chip->spdif_status = 0; + runtime->hw = snd_bcm2835_playback_hw; + } + /* minimum 16 bytes alignment (for vchiq bulk transfers) */ + snd_pcm_hw_constraint_step(runtime, 0, SNDRV_PCM_HW_PARAM_PERIOD_BYTES, + 16); + + chip->alsa_stream[idx] = alsa_stream; + + chip->opened |= (1 << idx); + alsa_stream->open = 1; + alsa_stream->draining = 1; + +out: + mutex_unlock(&chip->audio_mutex); + + audio_info(" .. OUT =%d\n", err); + + return err; +} + +static int snd_bcm2835_playback_open(struct snd_pcm_substream *substream) +{ + return snd_bcm2835_playback_open_generic(substream, 0); +} + +static int snd_bcm2835_playback_spdif_open(struct snd_pcm_substream *substream) +{ + return snd_bcm2835_playback_open_generic(substream, 1); +} + +/* close callback */ +static int snd_bcm2835_playback_close(struct snd_pcm_substream *substream) +{ + /* the hardware-specific codes will be here */ + + bcm2835_chip_t *chip; + struct snd_pcm_runtime *runtime; + bcm2835_alsa_stream_t *alsa_stream; + + audio_info(" .. IN\n"); + + chip = snd_pcm_substream_chip(substream); + if(mutex_lock_interruptible(&chip->audio_mutex)) + { + audio_error("Interrupted whilst waiting for lock\n"); + return -EINTR; + } + runtime = substream->runtime; + alsa_stream = runtime->private_data; + + audio_info("Alsa close\n"); + + /* + * Call stop if it's still running. This happens when app + * is force killed and we don't get a stop trigger. + */ + if (alsa_stream->running) { + int err; + err = bcm2835_audio_stop(alsa_stream); + alsa_stream->running = 0; + if (err != 0) + audio_error(" Failed to STOP alsa device\n"); + } + + alsa_stream->period_size = 0; + alsa_stream->buffer_size = 0; + + if (alsa_stream->open) { + alsa_stream->open = 0; + bcm2835_audio_close(alsa_stream); + } + if (alsa_stream->chip) + alsa_stream->chip->alsa_stream[alsa_stream->idx] = NULL; + /* + * Do not free up alsa_stream here, it will be freed up by + * runtime->private_free callback we registered in *_open above + */ + + chip->opened &= ~(1 << substream->number); + + mutex_unlock(&chip->audio_mutex); + audio_info(" .. OUT\n"); + + return 0; +} + +/* hw_params callback */ +static int snd_bcm2835_pcm_hw_params(struct snd_pcm_substream *substream, + struct snd_pcm_hw_params *params) +{ + struct snd_pcm_runtime *runtime = substream->runtime; + bcm2835_alsa_stream_t *alsa_stream = runtime->private_data; + int err; + + audio_info(" .. IN\n"); + + err = snd_pcm_lib_malloc_pages(substream, params_buffer_bytes(params)); + if (err < 0) { + audio_error + (" pcm_lib_malloc failed to allocated pages for buffers\n"); + return err; + } + + alsa_stream->channels = params_channels(params); + alsa_stream->params_rate = params_rate(params); + alsa_stream->pcm_format_width = snd_pcm_format_width(params_format (params)); + audio_info(" .. OUT\n"); + + return err; +} + +/* hw_free callback */ +static int snd_bcm2835_pcm_hw_free(struct snd_pcm_substream *substream) +{ + audio_info(" .. IN\n"); + return snd_pcm_lib_free_pages(substream); +} + +/* prepare callback */ +static int snd_bcm2835_pcm_prepare(struct snd_pcm_substream *substream) +{ + bcm2835_chip_t *chip = snd_pcm_substream_chip(substream); + struct snd_pcm_runtime *runtime = substream->runtime; + bcm2835_alsa_stream_t *alsa_stream = runtime->private_data; + int channels; + int err; + + audio_info(" .. IN\n"); + + /* notify the vchiq that it should enter spdif passthrough mode by + * setting channels=0 (see + * https://github.com/raspberrypi/linux/issues/528) */ + if (chip->spdif_status & IEC958_AES0_NONAUDIO) + channels = 0; + else + channels = alsa_stream->channels; + + err = bcm2835_audio_set_params(alsa_stream, channels, + alsa_stream->params_rate, + alsa_stream->pcm_format_width); + if (err < 0) { + audio_error(" error setting hw params\n"); + } + + bcm2835_audio_setup(alsa_stream); + + /* in preparation of the stream, set the controls (volume level) of the stream */ + bcm2835_audio_set_ctls(alsa_stream->chip); + + + memset(&alsa_stream->pcm_indirect, 0, sizeof(alsa_stream->pcm_indirect)); + + alsa_stream->pcm_indirect.hw_buffer_size = + alsa_stream->pcm_indirect.sw_buffer_size = + snd_pcm_lib_buffer_bytes(substream); + + alsa_stream->buffer_size = snd_pcm_lib_buffer_bytes(substream); + alsa_stream->period_size = snd_pcm_lib_period_bytes(substream); + alsa_stream->pos = 0; + + audio_debug("buffer_size=%d, period_size=%d pos=%d frame_bits=%d\n", + alsa_stream->buffer_size, alsa_stream->period_size, + alsa_stream->pos, runtime->frame_bits); + + audio_info(" .. OUT\n"); + return 0; +} + +static void snd_bcm2835_pcm_transfer(struct snd_pcm_substream *substream, + struct snd_pcm_indirect *rec, size_t bytes) +{ + struct snd_pcm_runtime *runtime = substream->runtime; + bcm2835_alsa_stream_t *alsa_stream = runtime->private_data; + void *src = (void *)(substream->runtime->dma_area + rec->sw_data); + int err; + + err = bcm2835_audio_write(alsa_stream, bytes, src); + if (err) + audio_error(" Failed to transfer to alsa device (%d)\n", err); + +} + +static int snd_bcm2835_pcm_ack(struct snd_pcm_substream *substream) +{ + struct snd_pcm_runtime *runtime = substream->runtime; + bcm2835_alsa_stream_t *alsa_stream = runtime->private_data; + struct snd_pcm_indirect *pcm_indirect = &alsa_stream->pcm_indirect; + + pcm_indirect->hw_queue_size = runtime->hw.buffer_bytes_max; + snd_pcm_indirect_playback_transfer(substream, pcm_indirect, + snd_bcm2835_pcm_transfer); + return 0; +} + +/* trigger callback */ +static int snd_bcm2835_pcm_trigger(struct snd_pcm_substream *substream, int cmd) +{ + struct snd_pcm_runtime *runtime = substream->runtime; + bcm2835_alsa_stream_t *alsa_stream = runtime->private_data; + int err = 0; + + audio_info(" .. IN\n"); + + switch (cmd) { + case SNDRV_PCM_TRIGGER_START: + audio_debug("bcm2835_AUDIO_TRIGGER_START running=%d\n", + alsa_stream->running); + if (!alsa_stream->running) { + err = bcm2835_audio_start(alsa_stream); + if (err == 0) { + alsa_stream->pcm_indirect.hw_io = + alsa_stream->pcm_indirect.hw_data = + bytes_to_frames(runtime, + alsa_stream->pos); + substream->ops->ack(substream); + alsa_stream->running = 1; + alsa_stream->draining = 1; + } else { + audio_error(" Failed to START alsa device (%d)\n", err); + } + } + break; + case SNDRV_PCM_TRIGGER_STOP: + audio_debug + ("bcm2835_AUDIO_TRIGGER_STOP running=%d draining=%d\n", + alsa_stream->running, runtime->status->state == SNDRV_PCM_STATE_DRAINING); + if (runtime->status->state == SNDRV_PCM_STATE_DRAINING) { + audio_info("DRAINING\n"); + alsa_stream->draining = 1; + } else { + audio_info("DROPPING\n"); + alsa_stream->draining = 0; + } + if (alsa_stream->running) { + err = bcm2835_audio_stop(alsa_stream); + if (err != 0) + audio_error(" Failed to STOP alsa device (%d)\n", err); + alsa_stream->running = 0; + } + break; + default: + err = -EINVAL; + } + + audio_info(" .. OUT\n"); + return err; +} + +/* pointer callback */ +static snd_pcm_uframes_t +snd_bcm2835_pcm_pointer(struct snd_pcm_substream *substream) +{ + struct snd_pcm_runtime *runtime = substream->runtime; + bcm2835_alsa_stream_t *alsa_stream = runtime->private_data; + + audio_info(" .. IN\n"); + + audio_debug("pcm_pointer... (%d) hwptr=%d appl=%d pos=%d\n", 0, + frames_to_bytes(runtime, runtime->status->hw_ptr), + frames_to_bytes(runtime, runtime->control->appl_ptr), + alsa_stream->pos); + + audio_info(" .. OUT\n"); + return snd_pcm_indirect_playback_pointer(substream, + &alsa_stream->pcm_indirect, + alsa_stream->pos); +} + +static int snd_bcm2835_pcm_lib_ioctl(struct snd_pcm_substream *substream, + unsigned int cmd, void *arg) +{ + int ret = snd_pcm_lib_ioctl(substream, cmd, arg); + audio_info(" .. substream=%p, cmd=%d, arg=%p (%x) ret=%d\n", substream, + cmd, arg, arg ? *(unsigned *)arg : 0, ret); + return ret; +} + +/* operators */ +static struct snd_pcm_ops snd_bcm2835_playback_ops = { + .open = snd_bcm2835_playback_open, + .close = snd_bcm2835_playback_close, + .ioctl = snd_bcm2835_pcm_lib_ioctl, + .hw_params = snd_bcm2835_pcm_hw_params, + .hw_free = snd_bcm2835_pcm_hw_free, + .prepare = snd_bcm2835_pcm_prepare, + .trigger = snd_bcm2835_pcm_trigger, + .pointer = snd_bcm2835_pcm_pointer, + .ack = snd_bcm2835_pcm_ack, +}; + +static struct snd_pcm_ops snd_bcm2835_playback_spdif_ops = { + .open = snd_bcm2835_playback_spdif_open, + .close = snd_bcm2835_playback_close, + .ioctl = snd_bcm2835_pcm_lib_ioctl, + .hw_params = snd_bcm2835_pcm_hw_params, + .hw_free = snd_bcm2835_pcm_hw_free, + .prepare = snd_bcm2835_pcm_prepare, + .trigger = snd_bcm2835_pcm_trigger, + .pointer = snd_bcm2835_pcm_pointer, + .ack = snd_bcm2835_pcm_ack, +}; + +/* create a pcm device */ +int snd_bcm2835_new_pcm(bcm2835_chip_t * chip) +{ + struct snd_pcm *pcm; + int err; + + audio_info(" .. IN\n"); + mutex_init(&chip->audio_mutex); + if(mutex_lock_interruptible(&chip->audio_mutex)) + { + audio_error("Interrupted whilst waiting for lock\n"); + return -EINTR; + } + err = + snd_pcm_new(chip->card, "bcm2835 ALSA", 0, MAX_SUBSTREAMS, 0, &pcm); + if (err < 0) + goto out; + pcm->private_data = chip; + strcpy(pcm->name, "bcm2835 ALSA"); + chip->pcm = pcm; + chip->dest = AUDIO_DEST_AUTO; + chip->volume = alsa2chip(0); + chip->mute = CTRL_VOL_UNMUTE; /*disable mute on startup */ + /* set operators */ + snd_pcm_set_ops(pcm, SNDRV_PCM_STREAM_PLAYBACK, + &snd_bcm2835_playback_ops); + + /* pre-allocation of buffers */ + /* NOTE: this may fail */ + snd_pcm_lib_preallocate_pages_for_all(pcm, SNDRV_DMA_TYPE_CONTINUOUS, + snd_dma_continuous_data + (GFP_KERNEL), 64 * 1024, + 64 * 1024); + +out: + mutex_unlock(&chip->audio_mutex); + audio_info(" .. OUT\n"); + + return 0; +} + +int snd_bcm2835_new_spdif_pcm(bcm2835_chip_t * chip) +{ + struct snd_pcm *pcm; + int err; + + audio_info(" .. IN\n"); + if(mutex_lock_interruptible(&chip->audio_mutex)) + { + audio_error("Interrupted whilst waiting for lock\n"); + return -EINTR; + } + err = snd_pcm_new(chip->card, "bcm2835 ALSA", 1, 1, 0, &pcm); + if (err < 0) + goto out; + + pcm->private_data = chip; + strcpy(pcm->name, "bcm2835 IEC958/HDMI"); + chip->pcm_spdif = pcm; + snd_pcm_set_ops(pcm, SNDRV_PCM_STREAM_PLAYBACK, + &snd_bcm2835_playback_spdif_ops); + + snd_pcm_lib_preallocate_pages_for_all(pcm, SNDRV_DMA_TYPE_CONTINUOUS, + snd_dma_continuous_data (GFP_KERNEL), + 64 * 1024, 64 * 1024); +out: + mutex_unlock(&chip->audio_mutex); + audio_info(" .. OUT\n"); + + return 0; +} --- linux-raspi2-4.2.0.orig/sound/arm/bcm2835-vchiq.c +++ linux-raspi2-4.2.0/sound/arm/bcm2835-vchiq.c @@ -0,0 +1,902 @@ +/***************************************************************************** +* Copyright 2011 Broadcom Corporation. All rights reserved. +* +* Unless you and Broadcom execute a separate written software license +* agreement governing use of this software, this software is licensed to you +* under the terms of the GNU General Public License version 2, available at +* http://www.broadcom.com/licenses/GPLv2.php (the "GPL"). +* +* Notwithstanding the above, under no circumstances may you combine this +* software in any way with any other Broadcom software provided under a +* license other than the GPL, without Broadcom's express prior written +* consent. +*****************************************************************************/ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "bcm2835.h" + +/* ---- Include Files -------------------------------------------------------- */ + +#include "interface/vchi/vchi.h" +#include "vc_vchi_audioserv_defs.h" + +/* ---- Private Constants and Types ------------------------------------------ */ + +#define BCM2835_AUDIO_STOP 0 +#define BCM2835_AUDIO_START 1 +#define BCM2835_AUDIO_WRITE 2 + +/* Logging macros (for remapping to other logging mechanisms, i.e., printf) */ +#ifdef AUDIO_DEBUG_ENABLE + #define LOG_ERR( fmt, arg... ) pr_err( "%s:%d " fmt, __func__, __LINE__, ##arg) + #define LOG_WARN( fmt, arg... ) pr_info( "%s:%d " fmt, __func__, __LINE__, ##arg) + #define LOG_INFO( fmt, arg... ) pr_info( "%s:%d " fmt, __func__, __LINE__, ##arg) + #define LOG_DBG( fmt, arg... ) pr_info( "%s:%d " fmt, __func__, __LINE__, ##arg) +#else + #define LOG_ERR( fmt, arg... ) pr_err( "%s:%d " fmt, __func__, __LINE__, ##arg) + #define LOG_WARN( fmt, arg... ) + #define LOG_INFO( fmt, arg... ) + #define LOG_DBG( fmt, arg... ) +#endif + +typedef struct opaque_AUDIO_INSTANCE_T { + uint32_t num_connections; + VCHI_SERVICE_HANDLE_T vchi_handle[VCHI_MAX_NUM_CONNECTIONS]; + struct completion msg_avail_comp; + struct mutex vchi_mutex; + bcm2835_alsa_stream_t *alsa_stream; + int32_t result; + short peer_version; +} AUDIO_INSTANCE_T; + +bool force_bulk = false; + +/* ---- Private Variables ---------------------------------------------------- */ + +/* ---- Private Function Prototypes ------------------------------------------ */ + +/* ---- Private Functions ---------------------------------------------------- */ + +static int bcm2835_audio_stop_worker(bcm2835_alsa_stream_t * alsa_stream); +static int bcm2835_audio_start_worker(bcm2835_alsa_stream_t * alsa_stream); +static int bcm2835_audio_write_worker(bcm2835_alsa_stream_t *alsa_stream, + uint32_t count, void *src); + +typedef struct { + struct work_struct my_work; + bcm2835_alsa_stream_t *alsa_stream; + int cmd; + void *src; + uint32_t count; +} my_work_t; + +static void my_wq_function(struct work_struct *work) +{ + my_work_t *w = (my_work_t *) work; + int ret = -9; + LOG_DBG(" .. IN %p:%d\n", w->alsa_stream, w->cmd); + switch (w->cmd) { + case BCM2835_AUDIO_START: + ret = bcm2835_audio_start_worker(w->alsa_stream); + break; + case BCM2835_AUDIO_STOP: + ret = bcm2835_audio_stop_worker(w->alsa_stream); + break; + case BCM2835_AUDIO_WRITE: + ret = bcm2835_audio_write_worker(w->alsa_stream, w->count, + w->src); + break; + default: + LOG_ERR(" Unexpected work: %p:%d\n", w->alsa_stream, w->cmd); + break; + } + kfree((void *)work); + LOG_DBG(" .. OUT %d\n", ret); +} + +int bcm2835_audio_start(bcm2835_alsa_stream_t * alsa_stream) +{ + int ret = -1; + LOG_DBG(" .. IN\n"); + if (alsa_stream->my_wq) { + my_work_t *work = kmalloc(sizeof(my_work_t), GFP_ATOMIC); + /*--- Queue some work (item 1) ---*/ + if (work) { + INIT_WORK((struct work_struct *)work, my_wq_function); + work->alsa_stream = alsa_stream; + work->cmd = BCM2835_AUDIO_START; + if (queue_work + (alsa_stream->my_wq, (struct work_struct *)work)) + ret = 0; + } else + LOG_ERR(" .. Error: NULL work kmalloc\n"); + } + LOG_DBG(" .. OUT %d\n", ret); + return ret; +} + +int bcm2835_audio_stop(bcm2835_alsa_stream_t * alsa_stream) +{ + int ret = -1; + LOG_DBG(" .. IN\n"); + if (alsa_stream->my_wq) { + my_work_t *work = kmalloc(sizeof(my_work_t), GFP_ATOMIC); + /*--- Queue some work (item 1) ---*/ + if (work) { + INIT_WORK((struct work_struct *)work, my_wq_function); + work->alsa_stream = alsa_stream; + work->cmd = BCM2835_AUDIO_STOP; + if (queue_work + (alsa_stream->my_wq, (struct work_struct *)work)) + ret = 0; + } else + LOG_ERR(" .. Error: NULL work kmalloc\n"); + } + LOG_DBG(" .. OUT %d\n", ret); + return ret; +} + +int bcm2835_audio_write(bcm2835_alsa_stream_t *alsa_stream, + uint32_t count, void *src) +{ + int ret = -1; + LOG_DBG(" .. IN\n"); + if (alsa_stream->my_wq) { + my_work_t *work = kmalloc(sizeof(my_work_t), GFP_ATOMIC); + /*--- Queue some work (item 1) ---*/ + if (work) { + INIT_WORK((struct work_struct *)work, my_wq_function); + work->alsa_stream = alsa_stream; + work->cmd = BCM2835_AUDIO_WRITE; + work->src = src; + work->count = count; + if (queue_work + (alsa_stream->my_wq, (struct work_struct *)work)) + ret = 0; + } else + LOG_ERR(" .. Error: NULL work kmalloc\n"); + } + LOG_DBG(" .. OUT %d\n", ret); + return ret; +} + +void my_workqueue_init(bcm2835_alsa_stream_t * alsa_stream) +{ + alsa_stream->my_wq = alloc_workqueue("my_queue", WQ_HIGHPRI, 1); + return; +} + +void my_workqueue_quit(bcm2835_alsa_stream_t * alsa_stream) +{ + if (alsa_stream->my_wq) { + flush_workqueue(alsa_stream->my_wq); + destroy_workqueue(alsa_stream->my_wq); + alsa_stream->my_wq = NULL; + } + return; +} + +static void audio_vchi_callback(void *param, + const VCHI_CALLBACK_REASON_T reason, + void *msg_handle) +{ + AUDIO_INSTANCE_T *instance = (AUDIO_INSTANCE_T *) param; + int32_t status; + int32_t msg_len; + VC_AUDIO_MSG_T m; + LOG_DBG(" .. IN instance=%p, handle=%p, alsa=%p, reason=%d, handle=%p\n", + instance, instance ? instance->vchi_handle[0] : NULL, instance ? instance->alsa_stream : NULL, reason, msg_handle); + + if (reason != VCHI_CALLBACK_MSG_AVAILABLE) { + return; + } + if (!instance) { + LOG_ERR(" .. instance is null\n"); + BUG(); + return; + } + if (!instance->vchi_handle[0]) { + LOG_ERR(" .. instance->vchi_handle[0] is null\n"); + BUG(); + return; + } + status = vchi_msg_dequeue(instance->vchi_handle[0], + &m, sizeof m, &msg_len, VCHI_FLAGS_NONE); + if (m.type == VC_AUDIO_MSG_TYPE_RESULT) { + LOG_DBG + (" .. instance=%p, m.type=VC_AUDIO_MSG_TYPE_RESULT, success=%d\n", + instance, m.u.result.success); + instance->result = m.u.result.success; + complete(&instance->msg_avail_comp); + } else if (m.type == VC_AUDIO_MSG_TYPE_COMPLETE) { + bcm2835_alsa_stream_t *alsa_stream = instance->alsa_stream; + irq_handler_t callback = (irq_handler_t) m.u.complete.callback; + LOG_DBG + (" .. instance=%p, m.type=VC_AUDIO_MSG_TYPE_COMPLETE, complete=%d\n", + instance, m.u.complete.count); + if (alsa_stream && callback) { + atomic_add(m.u.complete.count, &alsa_stream->retrieved); + callback(0, alsa_stream); + } else { + LOG_ERR(" .. unexpected alsa_stream=%p, callback=%p\n", + alsa_stream, callback); + } + } else { + LOG_ERR(" .. unexpected m.type=%d\n", m.type); + } + LOG_DBG(" .. OUT\n"); +} + +static AUDIO_INSTANCE_T *vc_vchi_audio_init(VCHI_INSTANCE_T vchi_instance, + VCHI_CONNECTION_T ** + vchi_connections, + uint32_t num_connections) +{ + uint32_t i; + AUDIO_INSTANCE_T *instance; + int status; + + LOG_DBG("%s: start", __func__); + + if (num_connections > VCHI_MAX_NUM_CONNECTIONS) { + LOG_ERR("%s: unsupported number of connections %u (max=%u)\n", + __func__, num_connections, VCHI_MAX_NUM_CONNECTIONS); + + return NULL; + } + /* Allocate memory for this instance */ + instance = kmalloc(sizeof(*instance), GFP_KERNEL); + if (!instance) + return NULL; + + memset(instance, 0, sizeof(*instance)); + instance->num_connections = num_connections; + + /* Create a lock for exclusive, serialized VCHI connection access */ + mutex_init(&instance->vchi_mutex); + /* Open the VCHI service connections */ + for (i = 0; i < num_connections; i++) { + SERVICE_CREATION_T params = { + VCHI_VERSION_EX(VC_AUDIOSERV_VER, VC_AUDIOSERV_MIN_VER), + VC_AUDIO_SERVER_NAME, // 4cc service code + vchi_connections[i], // passed in fn pointers + 0, // rx fifo size (unused) + 0, // tx fifo size (unused) + audio_vchi_callback, // service callback + instance, // service callback parameter + 1, //TODO: remove VCOS_FALSE, // unaligned bulk recieves + 1, //TODO: remove VCOS_FALSE, // unaligned bulk transmits + 0 // want crc check on bulk transfers + }; + + LOG_DBG("%s: about to open %i\n", __func__, i); + status = vchi_service_open(vchi_instance, ¶ms, + &instance->vchi_handle[i]); + LOG_DBG("%s: opened %i: %p=%d\n", __func__, i, instance->vchi_handle[i], status); + if (status) { + LOG_ERR + ("%s: failed to open VCHI service connection (status=%d)\n", + __func__, status); + + goto err_close_services; + } + /* Finished with the service for now */ + vchi_service_release(instance->vchi_handle[i]); + } + + LOG_DBG("%s: okay\n", __func__); + return instance; + +err_close_services: + for (i = 0; i < instance->num_connections; i++) { + LOG_ERR("%s: closing %i: %p\n", __func__, i, instance->vchi_handle[i]); + if (instance->vchi_handle[i]) + vchi_service_close(instance->vchi_handle[i]); + } + + kfree(instance); + LOG_ERR("%s: error\n", __func__); + + return NULL; +} + +static int32_t vc_vchi_audio_deinit(AUDIO_INSTANCE_T * instance) +{ + uint32_t i; + + LOG_DBG(" .. IN\n"); + + if (instance == NULL) { + LOG_ERR("%s: invalid handle %p\n", __func__, instance); + + return -1; + } + + LOG_DBG(" .. about to lock (%d)\n", instance->num_connections); + if(mutex_lock_interruptible(&instance->vchi_mutex)) + { + LOG_DBG("Interrupted whilst waiting for lock on (%d)\n",instance->num_connections); + return -EINTR; + } + + /* Close all VCHI service connections */ + for (i = 0; i < instance->num_connections; i++) { + int32_t success; + LOG_DBG(" .. %i:closing %p\n", i, instance->vchi_handle[i]); + vchi_service_use(instance->vchi_handle[i]); + + success = vchi_service_close(instance->vchi_handle[i]); + if (success != 0) { + LOG_DBG + ("%s: failed to close VCHI service connection (status=%d)\n", + __func__, success); + } + } + + mutex_unlock(&instance->vchi_mutex); + + kfree(instance); + + LOG_DBG(" .. OUT\n"); + + return 0; +} + +static int bcm2835_audio_open_connection(bcm2835_alsa_stream_t * alsa_stream) +{ + static VCHI_INSTANCE_T vchi_instance; + static VCHI_CONNECTION_T *vchi_connection; + static int initted; + AUDIO_INSTANCE_T *instance = alsa_stream->instance; + int ret; + LOG_DBG(" .. IN\n"); + + LOG_INFO("%s: start\n", __func__); + BUG_ON(instance); + if (instance) { + LOG_ERR("%s: VCHI instance already open (%p)\n", + __func__, instance); + instance->alsa_stream = alsa_stream; + alsa_stream->instance = instance; + ret = 0; // xxx todo -1; + goto err_free_mem; + } + + /* Initialize and create a VCHI connection */ + if (!initted) { + ret = vchi_initialise(&vchi_instance); + if (ret != 0) { + LOG_ERR("%s: failed to initialise VCHI instance (ret=%d)\n", + __func__, ret); + + ret = -EIO; + goto err_free_mem; + } + ret = vchi_connect(NULL, 0, vchi_instance); + if (ret != 0) { + LOG_ERR("%s: failed to connect VCHI instance (ret=%d)\n", + __func__, ret); + + ret = -EIO; + goto err_free_mem; + } + initted = 1; + } + + /* Initialize an instance of the audio service */ + instance = vc_vchi_audio_init(vchi_instance, &vchi_connection, 1); + + if (instance == NULL) { + LOG_ERR("%s: failed to initialize audio service\n", __func__); + + ret = -EPERM; + goto err_free_mem; + } + + instance->alsa_stream = alsa_stream; + alsa_stream->instance = instance; + + LOG_DBG(" success !\n"); +err_free_mem: + LOG_DBG(" .. OUT\n"); + + return ret; +} + +int bcm2835_audio_open(bcm2835_alsa_stream_t * alsa_stream) +{ + AUDIO_INSTANCE_T *instance; + VC_AUDIO_MSG_T m; + int32_t success; + int ret; + LOG_DBG(" .. IN\n"); + + my_workqueue_init(alsa_stream); + + ret = bcm2835_audio_open_connection(alsa_stream); + if (ret != 0) { + ret = -1; + goto exit; + } + instance = alsa_stream->instance; + LOG_DBG(" instance (%p)\n", instance); + + if(mutex_lock_interruptible(&instance->vchi_mutex)) + { + LOG_DBG("Interrupted whilst waiting for lock on (%d)\n",instance->num_connections); + return -EINTR; + } + vchi_service_use(instance->vchi_handle[0]); + + m.type = VC_AUDIO_MSG_TYPE_OPEN; + + /* Send the message to the videocore */ + success = vchi_msg_queue(instance->vchi_handle[0], + &m, sizeof m, + VCHI_FLAGS_BLOCK_UNTIL_QUEUED, NULL); + + if (success != 0) { + LOG_ERR("%s: failed on vchi_msg_queue (status=%d)\n", + __func__, success); + + ret = -1; + goto unlock; + } + + ret = 0; + +unlock: + vchi_service_release(instance->vchi_handle[0]); + mutex_unlock(&instance->vchi_mutex); +exit: + LOG_DBG(" .. OUT\n"); + return ret; +} + +static int bcm2835_audio_set_ctls_chan(bcm2835_alsa_stream_t * alsa_stream, + bcm2835_chip_t * chip) +{ + VC_AUDIO_MSG_T m; + AUDIO_INSTANCE_T *instance = alsa_stream->instance; + int32_t success; + int ret; + LOG_DBG(" .. IN\n"); + + LOG_INFO + (" Setting ALSA dest(%d), volume(%d)\n", chip->dest, chip->volume); + + if(mutex_lock_interruptible(&instance->vchi_mutex)) + { + LOG_DBG("Interrupted whilst waiting for lock on (%d)\n",instance->num_connections); + return -EINTR; + } + vchi_service_use(instance->vchi_handle[0]); + + instance->result = -1; + + m.type = VC_AUDIO_MSG_TYPE_CONTROL; + m.u.control.dest = chip->dest; + m.u.control.volume = chip->volume; + + /* Create the message available completion */ + init_completion(&instance->msg_avail_comp); + + /* Send the message to the videocore */ + success = vchi_msg_queue(instance->vchi_handle[0], + &m, sizeof m, + VCHI_FLAGS_BLOCK_UNTIL_QUEUED, NULL); + + if (success != 0) { + LOG_ERR("%s: failed on vchi_msg_queue (status=%d)\n", + __func__, success); + + ret = -1; + goto unlock; + } + + /* We are expecting a reply from the videocore */ + ret = wait_for_completion_interruptible(&instance->msg_avail_comp); + if (ret) { + LOG_DBG("%s: failed on waiting for event (status=%d)\n", + __func__, success); + goto unlock; + } + + if (instance->result != 0) { + LOG_ERR("%s: result=%d\n", __func__, instance->result); + + ret = -1; + goto unlock; + } + + ret = 0; + +unlock: + vchi_service_release(instance->vchi_handle[0]); + mutex_unlock(&instance->vchi_mutex); + + LOG_DBG(" .. OUT\n"); + return ret; +} + +int bcm2835_audio_set_ctls(bcm2835_chip_t * chip) +{ + int i; + int ret = 0; + LOG_DBG(" .. IN\n"); + LOG_DBG(" Setting ALSA dest(%d), volume(%d)\n", chip->dest, chip->volume); + + /* change ctls for all substreams */ + for (i = 0; i < MAX_SUBSTREAMS; i++) { + if (chip->avail_substreams & (1 << i)) { + if (!chip->alsa_stream[i]) + { + LOG_DBG(" No ALSA stream available?! %i:%p (%x)\n", i, chip->alsa_stream[i], chip->avail_substreams); + ret = 0; + } + else if (bcm2835_audio_set_ctls_chan /* returns 0 on success */ + (chip->alsa_stream[i], chip) != 0) + { + LOG_ERR("Couldn't set the controls for stream %d\n", i); + ret = -1; + } + else LOG_DBG(" Controls set for stream %d\n", i); + } + } + LOG_DBG(" .. OUT ret=%d\n", ret); + return ret; +} + +int bcm2835_audio_set_params(bcm2835_alsa_stream_t * alsa_stream, + uint32_t channels, uint32_t samplerate, + uint32_t bps) +{ + VC_AUDIO_MSG_T m; + AUDIO_INSTANCE_T *instance = alsa_stream->instance; + int32_t success; + int ret; + LOG_DBG(" .. IN\n"); + + LOG_INFO + (" Setting ALSA channels(%d), samplerate(%d), bits-per-sample(%d)\n", + channels, samplerate, bps); + + /* resend ctls - alsa_stream may not have been open when first send */ + ret = bcm2835_audio_set_ctls_chan(alsa_stream, alsa_stream->chip); + if (ret != 0) { + LOG_ERR(" Alsa controls not supported\n"); + return -EINVAL; + } + + if(mutex_lock_interruptible(&instance->vchi_mutex)) + { + LOG_DBG("Interrupted whilst waiting for lock on (%d)\n",instance->num_connections); + return -EINTR; + } + vchi_service_use(instance->vchi_handle[0]); + + instance->result = -1; + + m.type = VC_AUDIO_MSG_TYPE_CONFIG; + m.u.config.channels = channels; + m.u.config.samplerate = samplerate; + m.u.config.bps = bps; + + /* Create the message available completion */ + init_completion(&instance->msg_avail_comp); + + /* Send the message to the videocore */ + success = vchi_msg_queue(instance->vchi_handle[0], + &m, sizeof m, + VCHI_FLAGS_BLOCK_UNTIL_QUEUED, NULL); + + if (success != 0) { + LOG_ERR("%s: failed on vchi_msg_queue (status=%d)\n", + __func__, success); + + ret = -1; + goto unlock; + } + + /* We are expecting a reply from the videocore */ + ret = wait_for_completion_interruptible(&instance->msg_avail_comp); + if (ret) { + LOG_DBG("%s: failed on waiting for event (status=%d)\n", + __func__, success); + goto unlock; + } + + if (instance->result != 0) { + LOG_ERR("%s: result=%d", __func__, instance->result); + + ret = -1; + goto unlock; + } + + ret = 0; + +unlock: + vchi_service_release(instance->vchi_handle[0]); + mutex_unlock(&instance->vchi_mutex); + + LOG_DBG(" .. OUT\n"); + return ret; +} + +int bcm2835_audio_setup(bcm2835_alsa_stream_t * alsa_stream) +{ + LOG_DBG(" .. IN\n"); + + LOG_DBG(" .. OUT\n"); + + return 0; +} + +static int bcm2835_audio_start_worker(bcm2835_alsa_stream_t * alsa_stream) +{ + VC_AUDIO_MSG_T m; + AUDIO_INSTANCE_T *instance = alsa_stream->instance; + int32_t success; + int ret; + LOG_DBG(" .. IN\n"); + + if(mutex_lock_interruptible(&instance->vchi_mutex)) + { + LOG_DBG("Interrupted whilst waiting for lock on (%d)\n",instance->num_connections); + return -EINTR; + } + vchi_service_use(instance->vchi_handle[0]); + + m.type = VC_AUDIO_MSG_TYPE_START; + + /* Send the message to the videocore */ + success = vchi_msg_queue(instance->vchi_handle[0], + &m, sizeof m, + VCHI_FLAGS_BLOCK_UNTIL_QUEUED, NULL); + + if (success != 0) { + LOG_ERR("%s: failed on vchi_msg_queue (status=%d)\n", + __func__, success); + + ret = -1; + goto unlock; + } + + ret = 0; + +unlock: + vchi_service_release(instance->vchi_handle[0]); + mutex_unlock(&instance->vchi_mutex); + LOG_DBG(" .. OUT\n"); + return ret; +} + +static int bcm2835_audio_stop_worker(bcm2835_alsa_stream_t * alsa_stream) +{ + VC_AUDIO_MSG_T m; + AUDIO_INSTANCE_T *instance = alsa_stream->instance; + int32_t success; + int ret; + LOG_DBG(" .. IN\n"); + + if(mutex_lock_interruptible(&instance->vchi_mutex)) + { + LOG_DBG("Interrupted whilst waiting for lock on (%d)\n",instance->num_connections); + return -EINTR; + } + vchi_service_use(instance->vchi_handle[0]); + + m.type = VC_AUDIO_MSG_TYPE_STOP; + m.u.stop.draining = alsa_stream->draining; + + /* Send the message to the videocore */ + success = vchi_msg_queue(instance->vchi_handle[0], + &m, sizeof m, + VCHI_FLAGS_BLOCK_UNTIL_QUEUED, NULL); + + if (success != 0) { + LOG_ERR("%s: failed on vchi_msg_queue (status=%d)\n", + __func__, success); + + ret = -1; + goto unlock; + } + + ret = 0; + +unlock: + vchi_service_release(instance->vchi_handle[0]); + mutex_unlock(&instance->vchi_mutex); + LOG_DBG(" .. OUT\n"); + return ret; +} + +int bcm2835_audio_close(bcm2835_alsa_stream_t * alsa_stream) +{ + VC_AUDIO_MSG_T m; + AUDIO_INSTANCE_T *instance = alsa_stream->instance; + int32_t success; + int ret; + LOG_DBG(" .. IN\n"); + + my_workqueue_quit(alsa_stream); + + if(mutex_lock_interruptible(&instance->vchi_mutex)) + { + LOG_DBG("Interrupted whilst waiting for lock on (%d)\n",instance->num_connections); + return -EINTR; + } + vchi_service_use(instance->vchi_handle[0]); + + m.type = VC_AUDIO_MSG_TYPE_CLOSE; + + /* Create the message available completion */ + init_completion(&instance->msg_avail_comp); + + /* Send the message to the videocore */ + success = vchi_msg_queue(instance->vchi_handle[0], + &m, sizeof m, + VCHI_FLAGS_BLOCK_UNTIL_QUEUED, NULL); + + if (success != 0) { + LOG_ERR("%s: failed on vchi_msg_queue (status=%d)\n", + __func__, success); + ret = -1; + goto unlock; + } + + ret = wait_for_completion_interruptible(&instance->msg_avail_comp); + if (ret) { + LOG_DBG("%s: failed on waiting for event (status=%d)\n", + __func__, success); + goto unlock; + } + if (instance->result != 0) { + LOG_ERR("%s: failed result (status=%d)\n", + __func__, instance->result); + + ret = -1; + goto unlock; + } + + ret = 0; + +unlock: + vchi_service_release(instance->vchi_handle[0]); + mutex_unlock(&instance->vchi_mutex); + + /* Stop the audio service */ + if (instance) { + vc_vchi_audio_deinit(instance); + alsa_stream->instance = NULL; + } + LOG_DBG(" .. OUT\n"); + return ret; +} + +int bcm2835_audio_write_worker(bcm2835_alsa_stream_t *alsa_stream, + uint32_t count, void *src) +{ + VC_AUDIO_MSG_T m; + AUDIO_INSTANCE_T *instance = alsa_stream->instance; + int32_t success; + int ret; + + LOG_DBG(" .. IN\n"); + + LOG_INFO(" Writing %d bytes from %p\n", count, src); + + if(mutex_lock_interruptible(&instance->vchi_mutex)) + { + LOG_DBG("Interrupted whilst waiting for lock on (%d)\n",instance->num_connections); + return -EINTR; + } + vchi_service_use(instance->vchi_handle[0]); + + if ( instance->peer_version==0 && vchi_get_peer_version(instance->vchi_handle[0], &instance->peer_version) == 0 ) { + LOG_DBG("%s: client version %d connected\n", __func__, instance->peer_version); + } + m.type = VC_AUDIO_MSG_TYPE_WRITE; + m.u.write.count = count; + // old version uses bulk, new version uses control + m.u.write.max_packet = instance->peer_version < 2 || force_bulk ? 0:4000; + m.u.write.callback = alsa_stream->fifo_irq_handler; + m.u.write.cookie = alsa_stream; + m.u.write.silence = src == NULL; + + /* Send the message to the videocore */ + success = vchi_msg_queue(instance->vchi_handle[0], + &m, sizeof m, + VCHI_FLAGS_BLOCK_UNTIL_QUEUED, NULL); + + if (success != 0) { + LOG_ERR("%s: failed on vchi_msg_queue (status=%d)\n", + __func__, success); + + ret = -1; + goto unlock; + } + if (!m.u.write.silence) { + if (m.u.write.max_packet == 0) { + /* Send the message to the videocore */ + success = vchi_bulk_queue_transmit(instance->vchi_handle[0], + src, count, + 0 * + VCHI_FLAGS_BLOCK_UNTIL_QUEUED + + + 1 * + VCHI_FLAGS_BLOCK_UNTIL_DATA_READ, + NULL); + } else { + while (count > 0) { + int bytes = min((int)m.u.write.max_packet, (int)count); + success = vchi_msg_queue(instance->vchi_handle[0], + src, bytes, + VCHI_FLAGS_BLOCK_UNTIL_QUEUED, NULL); + src = (char *)src + bytes; + count -= bytes; + } + } + if (success != 0) { + LOG_ERR + ("%s: failed on vchi_bulk_queue_transmit (status=%d)\n", + __func__, success); + + ret = -1; + goto unlock; + } + } + ret = 0; + +unlock: + vchi_service_release(instance->vchi_handle[0]); + mutex_unlock(&instance->vchi_mutex); + LOG_DBG(" .. OUT\n"); + return ret; +} + +/** + * Returns all buffers from arm->vc + */ +void bcm2835_audio_flush_buffers(bcm2835_alsa_stream_t * alsa_stream) +{ + LOG_DBG(" .. IN\n"); + LOG_DBG(" .. OUT\n"); + return; +} + +/** + * Forces VC to flush(drop) its filled playback buffers and + * return them the us. (VC->ARM) + */ +void bcm2835_audio_flush_playback_buffers(bcm2835_alsa_stream_t * alsa_stream) +{ + LOG_DBG(" .. IN\n"); + LOG_DBG(" .. OUT\n"); +} + +uint32_t bcm2835_audio_retrieve_buffers(bcm2835_alsa_stream_t * alsa_stream) +{ + uint32_t count = atomic_read(&alsa_stream->retrieved); + atomic_sub(count, &alsa_stream->retrieved); + return count; +} + +module_param(force_bulk, bool, 0444); +MODULE_PARM_DESC(force_bulk, "Force use of vchiq bulk for audio"); --- linux-raspi2-4.2.0.orig/sound/arm/bcm2835.c +++ linux-raspi2-4.2.0/sound/arm/bcm2835.c @@ -0,0 +1,511 @@ +/***************************************************************************** +* Copyright 2011 Broadcom Corporation. All rights reserved. +* +* Unless you and Broadcom execute a separate written software license +* agreement governing use of this software, this software is licensed to you +* under the terms of the GNU General Public License version 2, available at +* http://www.broadcom.com/licenses/GPLv2.php (the "GPL"). +* +* Notwithstanding the above, under no circumstances may you combine this +* software in any way with any other Broadcom software provided under a +* license other than the GPL, without Broadcom's express prior written +* consent. +*****************************************************************************/ + +#include + +#include +#include +#include +#include + +#include "bcm2835.h" + +/* module parameters (see "Module Parameters") */ +/* SNDRV_CARDS: maximum number of cards supported by this module */ +static int index[MAX_SUBSTREAMS] = {[0 ... (MAX_SUBSTREAMS - 1)] = -1 }; +static char *id[MAX_SUBSTREAMS] = {[0 ... (MAX_SUBSTREAMS - 1)] = NULL }; +static int enable[MAX_SUBSTREAMS] = {[0 ... (MAX_SUBSTREAMS - 1)] = 1 }; + +/* HACKY global pointers needed for successive probes to work : ssp + * But compared against the changes we will have to do in VC audio_ipc code + * to export 8 audio_ipc devices as a single IPC device and then monitor all + * four devices in a thread, this gets things done quickly and should be easier + * to debug if we run into issues + */ + +static struct snd_card *g_card = NULL; +static bcm2835_chip_t *g_chip = NULL; + +static int snd_bcm2835_free(bcm2835_chip_t * chip) +{ + kfree(chip); + return 0; +} + +/* component-destructor + * (see "Management of Cards and Components") + */ +static int snd_bcm2835_dev_free(struct snd_device *device) +{ + return snd_bcm2835_free(device->device_data); +} + +/* chip-specific constructor + * (see "Management of Cards and Components") + */ +static int snd_bcm2835_create(struct snd_card *card, + struct platform_device *pdev, + bcm2835_chip_t ** rchip) +{ + bcm2835_chip_t *chip; + int err; + static struct snd_device_ops ops = { + .dev_free = snd_bcm2835_dev_free, + }; + + *rchip = NULL; + + chip = kzalloc(sizeof(*chip), GFP_KERNEL); + if (chip == NULL) + return -ENOMEM; + + chip->card = card; + + err = snd_device_new(card, SNDRV_DEV_LOWLEVEL, chip, &ops); + if (err < 0) { + snd_bcm2835_free(chip); + return err; + } + + *rchip = chip; + return 0; +} + +static int snd_bcm2835_alsa_probe_dt(struct platform_device *pdev) +{ + struct device *dev = &pdev->dev; + bcm2835_chip_t *chip; + struct snd_card *card; + u32 numchans; + int err, i; + + err = of_property_read_u32(dev->of_node, "brcm,pwm-channels", + &numchans); + if (err) { + dev_err(dev, "Failed to get DT property 'brcm,pwm-channels'"); + return err; + } + + if (numchans == 0 || numchans > MAX_SUBSTREAMS) { + numchans = MAX_SUBSTREAMS; + dev_warn(dev, "Illegal 'brcm,pwm-channels' value, will use %u\n", + numchans); + } + + err = snd_card_new(NULL, -1, NULL, THIS_MODULE, 0, &card); + if (err) { + dev_err(dev, "Failed to create soundcard structure\n"); + return err; + } + + snd_card_set_dev(card, dev); + strcpy(card->driver, "bcm2835"); + strcpy(card->shortname, "bcm2835 ALSA"); + sprintf(card->longname, "%s", card->shortname); + + err = snd_bcm2835_create(card, pdev, &chip); + if (err < 0) { + dev_err(dev, "Failed to create bcm2835 chip\n"); + goto err_free; + } + + err = snd_bcm2835_new_pcm(chip); + if (err < 0) { + dev_err(dev, "Failed to create new bcm2835 pcm device\n"); + goto err_free; + } + + err = snd_bcm2835_new_spdif_pcm(chip); + if (err < 0) { + dev_err(dev, "Failed to create new bcm2835 spdif pcm device\n"); + goto err_free; + } + + err = snd_bcm2835_new_ctl(chip); + if (err < 0) { + dev_err(dev, "Failed to create new bcm2835 ctl\n"); + goto err_free; + } + + for (i = 0; i < numchans; i++) { + chip->avail_substreams |= (1 << i); + chip->pdev[i] = pdev; + } + + err = snd_card_register(card); + if (err) { + dev_err(dev, "Failed to register bcm2835 ALSA card \n"); + goto err_free; + } + + g_card = card; + g_chip = chip; + platform_set_drvdata(pdev, card); + audio_info("bcm2835 ALSA card created with %u channels\n", numchans); + + return 0; + +err_free: + snd_card_free(card); + + return err; +} + +static int snd_bcm2835_alsa_probe(struct platform_device *pdev) +{ + static int dev; + bcm2835_chip_t *chip; + struct snd_card *card; + int err; + + if (pdev->dev.of_node) + return snd_bcm2835_alsa_probe_dt(pdev); + + if (dev >= MAX_SUBSTREAMS) + return -ENODEV; + + if (!enable[dev]) { + dev++; + return -ENOENT; + } + + if (dev > 0) + goto add_register_map; + + err = snd_card_new(NULL, index[dev], id[dev], THIS_MODULE, 0, &g_card); + if (err < 0) + goto out; + + snd_card_set_dev(g_card, &pdev->dev); + strcpy(g_card->driver, "bcm2835"); + strcpy(g_card->shortname, "bcm2835 ALSA"); + sprintf(g_card->longname, "%s", g_card->shortname); + + err = snd_bcm2835_create(g_card, pdev, &chip); + if (err < 0) { + dev_err(&pdev->dev, "Failed to create bcm2835 chip\n"); + goto out_bcm2835_create; + } + + g_chip = chip; + err = snd_bcm2835_new_pcm(chip); + if (err < 0) { + dev_err(&pdev->dev, "Failed to create new BCM2835 pcm device\n"); + goto out_bcm2835_new_pcm; + } + + err = snd_bcm2835_new_spdif_pcm(chip); + if (err < 0) { + dev_err(&pdev->dev, "Failed to create new BCM2835 spdif pcm device\n"); + goto out_bcm2835_new_spdif; + } + + err = snd_bcm2835_new_ctl(chip); + if (err < 0) { + dev_err(&pdev->dev, "Failed to create new BCM2835 ctl\n"); + goto out_bcm2835_new_ctl; + } + +add_register_map: + card = g_card; + chip = g_chip; + + BUG_ON(!(card && chip)); + + chip->avail_substreams |= (1 << dev); + chip->pdev[dev] = pdev; + + if (dev == 0) { + err = snd_card_register(card); + if (err < 0) { + dev_err(&pdev->dev, + "Failed to register bcm2835 ALSA card \n"); + goto out_card_register; + } + platform_set_drvdata(pdev, card); + audio_info("bcm2835 ALSA card created!\n"); + } else { + audio_info("bcm2835 ALSA chip created!\n"); + platform_set_drvdata(pdev, (void *)dev); + } + + dev++; + + return 0; + +out_card_register: +out_bcm2835_new_ctl: +out_bcm2835_new_spdif: +out_bcm2835_new_pcm: +out_bcm2835_create: + BUG_ON(!g_card); + if (snd_card_free(g_card)) + dev_err(&pdev->dev, "Failed to free Registered alsa card\n"); + g_card = NULL; +out: + dev = SNDRV_CARDS; /* stop more avail_substreams from being probed */ + dev_err(&pdev->dev, "BCM2835 ALSA Probe failed !!\n"); + return err; +} + +static int snd_bcm2835_alsa_remove(struct platform_device *pdev) +{ + uint32_t idx; + void *drv_data; + + drv_data = platform_get_drvdata(pdev); + + if (drv_data == (void *)g_card) { + /* This is the card device */ + snd_card_free((struct snd_card *)drv_data); + g_card = NULL; + g_chip = NULL; + } else { + idx = (uint32_t) drv_data; + if (g_card != NULL) { + BUG_ON(!g_chip); + /* We pass chip device numbers in audio ipc devices + * other than the one we registered our card with + */ + idx = (uint32_t) drv_data; + BUG_ON(!idx || idx > MAX_SUBSTREAMS); + g_chip->avail_substreams &= ~(1 << idx); + /* There should be atleast one substream registered + * after we are done here, as it wil be removed when + * the *remove* is called for the card device + */ + BUG_ON(!g_chip->avail_substreams); + } + } + + platform_set_drvdata(pdev, NULL); + + return 0; +} + +#ifdef CONFIG_PM +static int snd_bcm2835_alsa_suspend(struct platform_device *pdev, + pm_message_t state) +{ + return 0; +} + +static int snd_bcm2835_alsa_resume(struct platform_device *pdev) +{ + return 0; +} + +#endif + +static const struct of_device_id snd_bcm2835_of_match_table[] = { + { .compatible = "brcm,bcm2835-audio", }, + {}, +}; +MODULE_DEVICE_TABLE(of, snd_bcm2835_of_match_table); + +static struct platform_driver bcm2835_alsa0_driver = { + .probe = snd_bcm2835_alsa_probe, + .remove = snd_bcm2835_alsa_remove, +#ifdef CONFIG_PM + .suspend = snd_bcm2835_alsa_suspend, + .resume = snd_bcm2835_alsa_resume, +#endif + .driver = { + .name = "bcm2835_AUD0", + .owner = THIS_MODULE, + .of_match_table = snd_bcm2835_of_match_table, + }, +}; + +static struct platform_driver bcm2835_alsa1_driver = { + .probe = snd_bcm2835_alsa_probe, + .remove = snd_bcm2835_alsa_remove, +#ifdef CONFIG_PM + .suspend = snd_bcm2835_alsa_suspend, + .resume = snd_bcm2835_alsa_resume, +#endif + .driver = { + .name = "bcm2835_AUD1", + .owner = THIS_MODULE, + }, +}; + +static struct platform_driver bcm2835_alsa2_driver = { + .probe = snd_bcm2835_alsa_probe, + .remove = snd_bcm2835_alsa_remove, +#ifdef CONFIG_PM + .suspend = snd_bcm2835_alsa_suspend, + .resume = snd_bcm2835_alsa_resume, +#endif + .driver = { + .name = "bcm2835_AUD2", + .owner = THIS_MODULE, + }, +}; + +static struct platform_driver bcm2835_alsa3_driver = { + .probe = snd_bcm2835_alsa_probe, + .remove = snd_bcm2835_alsa_remove, +#ifdef CONFIG_PM + .suspend = snd_bcm2835_alsa_suspend, + .resume = snd_bcm2835_alsa_resume, +#endif + .driver = { + .name = "bcm2835_AUD3", + .owner = THIS_MODULE, + }, +}; + +static struct platform_driver bcm2835_alsa4_driver = { + .probe = snd_bcm2835_alsa_probe, + .remove = snd_bcm2835_alsa_remove, +#ifdef CONFIG_PM + .suspend = snd_bcm2835_alsa_suspend, + .resume = snd_bcm2835_alsa_resume, +#endif + .driver = { + .name = "bcm2835_AUD4", + .owner = THIS_MODULE, + }, +}; + +static struct platform_driver bcm2835_alsa5_driver = { + .probe = snd_bcm2835_alsa_probe, + .remove = snd_bcm2835_alsa_remove, +#ifdef CONFIG_PM + .suspend = snd_bcm2835_alsa_suspend, + .resume = snd_bcm2835_alsa_resume, +#endif + .driver = { + .name = "bcm2835_AUD5", + .owner = THIS_MODULE, + }, +}; + +static struct platform_driver bcm2835_alsa6_driver = { + .probe = snd_bcm2835_alsa_probe, + .remove = snd_bcm2835_alsa_remove, +#ifdef CONFIG_PM + .suspend = snd_bcm2835_alsa_suspend, + .resume = snd_bcm2835_alsa_resume, +#endif + .driver = { + .name = "bcm2835_AUD6", + .owner = THIS_MODULE, + }, +}; + +static struct platform_driver bcm2835_alsa7_driver = { + .probe = snd_bcm2835_alsa_probe, + .remove = snd_bcm2835_alsa_remove, +#ifdef CONFIG_PM + .suspend = snd_bcm2835_alsa_suspend, + .resume = snd_bcm2835_alsa_resume, +#endif + .driver = { + .name = "bcm2835_AUD7", + .owner = THIS_MODULE, + }, +}; + +static int bcm2835_alsa_device_init(void) +{ + int err; + err = platform_driver_register(&bcm2835_alsa0_driver); + if (err) { + pr_err("Error registering bcm2835_alsa0_driver %d .\n", err); + goto out; + } + + err = platform_driver_register(&bcm2835_alsa1_driver); + if (err) { + pr_err("Error registering bcm2835_alsa0_driver %d .\n", err); + goto unregister_0; + } + + err = platform_driver_register(&bcm2835_alsa2_driver); + if (err) { + pr_err("Error registering bcm2835_alsa0_driver %d .\n", err); + goto unregister_1; + } + + err = platform_driver_register(&bcm2835_alsa3_driver); + if (err) { + pr_err("Error registering bcm2835_alsa0_driver %d .\n", err); + goto unregister_2; + } + + err = platform_driver_register(&bcm2835_alsa4_driver); + if (err) { + pr_err("Error registering bcm2835_alsa0_driver %d .\n", err); + goto unregister_3; + } + + err = platform_driver_register(&bcm2835_alsa5_driver); + if (err) { + pr_err("Error registering bcm2835_alsa0_driver %d .\n", err); + goto unregister_4; + } + + err = platform_driver_register(&bcm2835_alsa6_driver); + if (err) { + pr_err("Error registering bcm2835_alsa0_driver %d .\n", err); + goto unregister_5; + } + + err = platform_driver_register(&bcm2835_alsa7_driver); + if (err) { + pr_err("Error registering bcm2835_alsa0_driver %d .\n", err); + goto unregister_6; + } + + return 0; + +unregister_6: + platform_driver_unregister(&bcm2835_alsa6_driver); +unregister_5: + platform_driver_unregister(&bcm2835_alsa5_driver); +unregister_4: + platform_driver_unregister(&bcm2835_alsa4_driver); +unregister_3: + platform_driver_unregister(&bcm2835_alsa3_driver); +unregister_2: + platform_driver_unregister(&bcm2835_alsa2_driver); +unregister_1: + platform_driver_unregister(&bcm2835_alsa1_driver); +unregister_0: + platform_driver_unregister(&bcm2835_alsa0_driver); +out: + return err; +} + +static void bcm2835_alsa_device_exit(void) +{ + platform_driver_unregister(&bcm2835_alsa0_driver); + platform_driver_unregister(&bcm2835_alsa1_driver); + platform_driver_unregister(&bcm2835_alsa2_driver); + platform_driver_unregister(&bcm2835_alsa3_driver); + platform_driver_unregister(&bcm2835_alsa4_driver); + platform_driver_unregister(&bcm2835_alsa5_driver); + platform_driver_unregister(&bcm2835_alsa6_driver); + platform_driver_unregister(&bcm2835_alsa7_driver); +} + +late_initcall(bcm2835_alsa_device_init); +module_exit(bcm2835_alsa_device_exit); + +MODULE_AUTHOR("Dom Cobley"); +MODULE_DESCRIPTION("Alsa driver for BCM2835 chip"); +MODULE_LICENSE("GPL"); +MODULE_ALIAS("platform:bcm2835_alsa"); --- linux-raspi2-4.2.0.orig/sound/arm/bcm2835.h +++ linux-raspi2-4.2.0/sound/arm/bcm2835.h @@ -0,0 +1,167 @@ +/***************************************************************************** +* Copyright 2011 Broadcom Corporation. All rights reserved. +* +* Unless you and Broadcom execute a separate written software license +* agreement governing use of this software, this software is licensed to you +* under the terms of the GNU General Public License version 2, available at +* http://www.broadcom.com/licenses/GPLv2.php (the "GPL"). +* +* Notwithstanding the above, under no circumstances may you combine this +* software in any way with any other Broadcom software provided under a +* license other than the GPL, without Broadcom's express prior written +* consent. +*****************************************************************************/ + +#ifndef __SOUND_ARM_BCM2835_H +#define __SOUND_ARM_BCM2835_H + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +/* +#define AUDIO_DEBUG_ENABLE +#define AUDIO_VERBOSE_DEBUG_ENABLE +*/ + +/* Debug macros */ + +#ifdef AUDIO_DEBUG_ENABLE +#ifdef AUDIO_VERBOSE_DEBUG_ENABLE + +#define audio_debug(fmt, arg...) \ + printk(KERN_INFO"%s:%d " fmt, __func__, __LINE__, ##arg) + +#define audio_info(fmt, arg...) \ + printk(KERN_INFO"%s:%d " fmt, __func__, __LINE__, ##arg) + +#else + +#define audio_debug(fmt, arg...) + +#define audio_info(fmt, arg...) + +#endif /* AUDIO_VERBOSE_DEBUG_ENABLE */ + +#else + +#define audio_debug(fmt, arg...) + +#define audio_info(fmt, arg...) + +#endif /* AUDIO_DEBUG_ENABLE */ + +#define audio_error(fmt, arg...) \ + printk(KERN_ERR"%s:%d " fmt, __func__, __LINE__, ##arg) + +#define audio_warning(fmt, arg...) \ + printk(KERN_WARNING"%s:%d " fmt, __func__, __LINE__, ##arg) + +#define audio_alert(fmt, arg...) \ + printk(KERN_ALERT"%s:%d " fmt, __func__, __LINE__, ##arg) + +#define MAX_SUBSTREAMS (8) +#define AVAIL_SUBSTREAMS_MASK (0xff) +enum { + CTRL_VOL_MUTE, + CTRL_VOL_UNMUTE +}; + +/* macros for alsa2chip and chip2alsa, instead of functions */ + +#define alsa2chip(vol) (uint)(-((vol << 8) / 100)) /* convert alsa to chip volume (defined as macro rather than function call) */ +#define chip2alsa(vol) -((vol * 100) >> 8) /* convert chip to alsa volume */ + +/* Some constants for values .. */ +typedef enum { + AUDIO_DEST_AUTO = 0, + AUDIO_DEST_HEADPHONES = 1, + AUDIO_DEST_HDMI = 2, + AUDIO_DEST_MAX, +} SND_BCM2835_ROUTE_T; + +typedef enum { + PCM_PLAYBACK_VOLUME, + PCM_PLAYBACK_MUTE, + PCM_PLAYBACK_DEVICE, +} SND_BCM2835_CTRL_T; + +/* definition of the chip-specific record */ +typedef struct bcm2835_chip { + struct snd_card *card; + struct snd_pcm *pcm; + struct snd_pcm *pcm_spdif; + /* Bitmat for valid reg_base and irq numbers */ + uint32_t avail_substreams; + struct platform_device *pdev[MAX_SUBSTREAMS]; + struct bcm2835_alsa_stream *alsa_stream[MAX_SUBSTREAMS]; + + int volume; + int old_volume; /* stores the volume value whist muted */ + int dest; + int mute; + + unsigned int opened; + unsigned int spdif_status; + struct mutex audio_mutex; +} bcm2835_chip_t; + +typedef struct bcm2835_alsa_stream { + bcm2835_chip_t *chip; + struct snd_pcm_substream *substream; + struct snd_pcm_indirect pcm_indirect; + + struct semaphore buffers_update_sem; + struct semaphore control_sem; + spinlock_t lock; + volatile uint32_t control; + volatile uint32_t status; + + int open; + int running; + int draining; + + int channels; + int params_rate; + int pcm_format_width; + + unsigned int pos; + unsigned int buffer_size; + unsigned int period_size; + + uint32_t enable_fifo_irq; + irq_handler_t fifo_irq_handler; + + atomic_t retrieved; + struct opaque_AUDIO_INSTANCE_T *instance; + struct workqueue_struct *my_wq; + int idx; +} bcm2835_alsa_stream_t; + +int snd_bcm2835_new_ctl(bcm2835_chip_t * chip); +int snd_bcm2835_new_pcm(bcm2835_chip_t * chip); +int snd_bcm2835_new_spdif_pcm(bcm2835_chip_t * chip); + +int bcm2835_audio_open(bcm2835_alsa_stream_t * alsa_stream); +int bcm2835_audio_close(bcm2835_alsa_stream_t * alsa_stream); +int bcm2835_audio_set_params(bcm2835_alsa_stream_t * alsa_stream, + uint32_t channels, uint32_t samplerate, + uint32_t bps); +int bcm2835_audio_setup(bcm2835_alsa_stream_t * alsa_stream); +int bcm2835_audio_start(bcm2835_alsa_stream_t * alsa_stream); +int bcm2835_audio_stop(bcm2835_alsa_stream_t * alsa_stream); +int bcm2835_audio_set_ctls(bcm2835_chip_t * chip); +int bcm2835_audio_write(bcm2835_alsa_stream_t * alsa_stream, uint32_t count, + void *src); +uint32_t bcm2835_audio_retrieve_buffers(bcm2835_alsa_stream_t * alsa_stream); +void bcm2835_audio_flush_buffers(bcm2835_alsa_stream_t * alsa_stream); +void bcm2835_audio_flush_playback_buffers(bcm2835_alsa_stream_t * alsa_stream); + +#endif /* __SOUND_ARM_BCM2835_H */ --- linux-raspi2-4.2.0.orig/sound/arm/vc_vchi_audioserv_defs.h +++ linux-raspi2-4.2.0/sound/arm/vc_vchi_audioserv_defs.h @@ -0,0 +1,116 @@ +/***************************************************************************** +* Copyright 2011 Broadcom Corporation. All rights reserved. +* +* Unless you and Broadcom execute a separate written software license +* agreement governing use of this software, this software is licensed to you +* under the terms of the GNU General Public License version 2, available at +* http://www.broadcom.com/licenses/GPLv2.php (the "GPL"). +* +* Notwithstanding the above, under no circumstances may you combine this +* software in any way with any other Broadcom software provided under a +* license other than the GPL, without Broadcom's express prior written +* consent. +*****************************************************************************/ + +#ifndef _VC_AUDIO_DEFS_H_ +#define _VC_AUDIO_DEFS_H_ + +#define VC_AUDIOSERV_MIN_VER 1 +#define VC_AUDIOSERV_VER 2 + +// FourCC code used for VCHI connection +#define VC_AUDIO_SERVER_NAME MAKE_FOURCC("AUDS") + +// Maximum message length +#define VC_AUDIO_MAX_MSG_LEN (sizeof( VC_AUDIO_MSG_T )) + +// List of screens that are currently supported +// All message types supported for HOST->VC direction +typedef enum { + VC_AUDIO_MSG_TYPE_RESULT, // Generic result + VC_AUDIO_MSG_TYPE_COMPLETE, // Generic result + VC_AUDIO_MSG_TYPE_CONFIG, // Configure audio + VC_AUDIO_MSG_TYPE_CONTROL, // Configure audio + VC_AUDIO_MSG_TYPE_OPEN, // Configure audio + VC_AUDIO_MSG_TYPE_CLOSE, // Configure audio + VC_AUDIO_MSG_TYPE_START, // Configure audio + VC_AUDIO_MSG_TYPE_STOP, // Configure audio + VC_AUDIO_MSG_TYPE_WRITE, // Configure audio + VC_AUDIO_MSG_TYPE_MAX +} VC_AUDIO_MSG_TYPE; + +// configure the audio +typedef struct { + uint32_t channels; + uint32_t samplerate; + uint32_t bps; + +} VC_AUDIO_CONFIG_T; + +typedef struct { + uint32_t volume; + uint32_t dest; + +} VC_AUDIO_CONTROL_T; + +// audio +typedef struct { + uint32_t dummy; + +} VC_AUDIO_OPEN_T; + +// audio +typedef struct { + uint32_t dummy; + +} VC_AUDIO_CLOSE_T; +// audio +typedef struct { + uint32_t dummy; + +} VC_AUDIO_START_T; +// audio +typedef struct { + uint32_t draining; + +} VC_AUDIO_STOP_T; + +// configure the write audio samples +typedef struct { + uint32_t count; // in bytes + void *callback; + void *cookie; + uint16_t silence; + uint16_t max_packet; +} VC_AUDIO_WRITE_T; + +// Generic result for a request (VC->HOST) +typedef struct { + int32_t success; // Success value + +} VC_AUDIO_RESULT_T; + +// Generic result for a request (VC->HOST) +typedef struct { + int32_t count; // Success value + void *callback; + void *cookie; +} VC_AUDIO_COMPLETE_T; + +// Message header for all messages in HOST->VC direction +typedef struct { + int32_t type; // Message type (VC_AUDIO_MSG_TYPE) + union { + VC_AUDIO_CONFIG_T config; + VC_AUDIO_CONTROL_T control; + VC_AUDIO_OPEN_T open; + VC_AUDIO_CLOSE_T close; + VC_AUDIO_START_T start; + VC_AUDIO_STOP_T stop; + VC_AUDIO_WRITE_T write; + VC_AUDIO_RESULT_T result; + VC_AUDIO_COMPLETE_T complete; + } u; +} VC_AUDIO_MSG_T; + +#endif // _VC_AUDIO_DEFS_H_ --- linux-raspi2-4.2.0.orig/sound/core/pcm.c +++ linux-raspi2-4.2.0/sound/core/pcm.c @@ -1014,9 +1014,6 @@ snd_free_pages((void*)runtime->control, PAGE_ALIGN(sizeof(struct snd_pcm_mmap_control))); kfree(runtime->hw_constraints.rules); -#ifdef CONFIG_SND_PCM_XRUN_DEBUG - kfree(runtime->hwptr_log); -#endif kfree(runtime); substream->runtime = NULL; put_pid(substream->pid); --- linux-raspi2-4.2.0.orig/sound/firewire/bebob/Makefile +++ linux-raspi2-4.2.0/sound/firewire/bebob/Makefile @@ -1,4 +1,4 @@ snd-bebob-objs := bebob_command.o bebob_stream.o bebob_proc.o bebob_midi.o \ bebob_pcm.o bebob_hwdep.o bebob_terratec.o bebob_yamaha.o \ bebob_focusrite.o bebob_maudio.o bebob.o -obj-m += snd-bebob.o +obj-$(CONFIG_SND_BEBOB) += snd-bebob.o --- linux-raspi2-4.2.0.orig/sound/firewire/bebob/bebob_maudio.c +++ linux-raspi2-4.2.0/sound/firewire/bebob/bebob_maudio.c @@ -628,7 +628,7 @@ static int special_meter_get(struct snd_bebob *bebob, u32 *target, unsigned int size) { - u16 *buf; + __be16 *buf; unsigned int i, c, channels; int err; --- linux-raspi2-4.2.0.orig/sound/firewire/dice/Makefile +++ linux-raspi2-4.2.0/sound/firewire/dice/Makefile @@ -1,3 +1,3 @@ snd-dice-objs := dice-transaction.o dice-stream.o dice-proc.o dice-midi.o \ dice-pcm.o dice-hwdep.o dice.o -obj-m += snd-dice.o +obj-$(CONFIG_SND_DICE) += snd-dice.o --- linux-raspi2-4.2.0.orig/sound/firewire/dice/dice-stream.c +++ linux-raspi2-4.2.0/sound/firewire/dice/dice-stream.c @@ -44,16 +44,16 @@ static void release_resources(struct snd_dice *dice, struct fw_iso_resources *resources) { - unsigned int channel; + __be32 channel; /* Reset channel number */ channel = cpu_to_be32((u32)-1); if (resources == &dice->tx_resources) snd_dice_transaction_write_tx(dice, TX_ISOCHRONOUS, - &channel, 4); + &channel, sizeof(channel)); else snd_dice_transaction_write_rx(dice, RX_ISOCHRONOUS, - &channel, 4); + &channel, sizeof(channel)); fw_iso_resources_free(resources); } @@ -62,7 +62,7 @@ struct fw_iso_resources *resources, unsigned int max_payload_bytes) { - unsigned int channel; + __be32 channel; int err; err = fw_iso_resources_allocate(resources, max_payload_bytes, @@ -74,10 +74,10 @@ channel = cpu_to_be32(resources->channel); if (resources == &dice->tx_resources) err = snd_dice_transaction_write_tx(dice, TX_ISOCHRONOUS, - &channel, 4); + &channel, sizeof(channel)); else err = snd_dice_transaction_write_rx(dice, RX_ISOCHRONOUS, - &channel, 4); + &channel, sizeof(channel)); if (err < 0) release_resources(dice, resources); end: --- linux-raspi2-4.2.0.orig/sound/firewire/dice/dice.c +++ linux-raspi2-4.2.0/sound/firewire/dice/dice.c @@ -29,7 +29,8 @@ struct fw_csr_iterator it; int key, val, vendor = -1, model = -1, err; unsigned int category, i; - __be32 *pointers, value; + __be32 *pointers; + u32 value; __be32 version; pointers = kmalloc_array(ARRAY_SIZE(min_values), sizeof(__be32), --- linux-raspi2-4.2.0.orig/sound/firewire/fireworks/Makefile +++ linux-raspi2-4.2.0/sound/firewire/fireworks/Makefile @@ -1,4 +1,4 @@ snd-fireworks-objs := fireworks_transaction.o fireworks_command.o \ fireworks_stream.o fireworks_proc.o fireworks_midi.o \ fireworks_pcm.o fireworks_hwdep.o fireworks.o -obj-m += snd-fireworks.o +obj-$(CONFIG_SND_FIREWORKS) += snd-fireworks.o --- linux-raspi2-4.2.0.orig/sound/firewire/fireworks/fireworks_command.c +++ linux-raspi2-4.2.0/sound/firewire/fireworks/fireworks_command.c @@ -257,7 +257,7 @@ struct snd_efw_phys_meters *meters, unsigned int len) { - __be32 *buf = (__be32 *)meters; + u32 *buf = (u32 *)meters; unsigned int i; int err; --- linux-raspi2-4.2.0.orig/sound/firewire/oxfw/Makefile +++ linux-raspi2-4.2.0/sound/firewire/oxfw/Makefile @@ -1,3 +1,3 @@ snd-oxfw-objs := oxfw-command.o oxfw-stream.o oxfw-control.o oxfw-pcm.o \ oxfw-proc.o oxfw-midi.o oxfw-hwdep.o oxfw.o -obj-m += snd-oxfw.o +obj-$(CONFIG_SND_OXFW) += snd-oxfw.o --- linux-raspi2-4.2.0.orig/sound/hda/ext/hdac_ext_bus.c +++ linux-raspi2-4.2.0/sound/hda/ext/hdac_ext_bus.c @@ -19,6 +19,7 @@ #include #include +#include #include MODULE_DESCRIPTION("HDA extended core"); --- linux-raspi2-4.2.0.orig/sound/hda/hdac_i915.c +++ linux-raspi2-4.2.0/sound/hda/hdac_i915.c @@ -134,6 +134,16 @@ return !strcmp(dev->driver->name, "i915"); } +int snd_hdac_i915_register_notifier(const struct i915_audio_component_audio_ops *aops) +{ + if (WARN_ON(!hdac_acomp)) + return -ENODEV; + + hdac_acomp->audio_ops = aops; + return 0; +} +EXPORT_SYMBOL_GPL(snd_hdac_i915_register_notifier); + int snd_hdac_i915_init(struct hdac_bus *bus) { struct component_match *match = NULL; --- linux-raspi2-4.2.0.orig/sound/pci/hda/hda_codec.c +++ linux-raspi2-4.2.0/sound/pci/hda/hda_codec.c @@ -3438,10 +3438,8 @@ int dev, err; err = snd_hda_codec_parse_pcms(codec); - if (err < 0) { - snd_hda_codec_reset(codec); + if (err < 0) return err; - } /* attach a new PCM streams */ list_for_each_entry(cpcm, &codec->pcm_list_head, list) { --- linux-raspi2-4.2.0.orig/sound/pci/hda/hda_controller.c +++ linux-raspi2-4.2.0/sound/pci/hda/hda_controller.c @@ -1059,6 +1059,9 @@ bus->needs_damn_long_delay = 1; } + if (chip->driver_caps & AZX_DCAPS_4K_BDLE_BOUNDARY) + bus->core.align_bdle_4k = true; + /* AMD chipsets often cause the communication stalls upon certain * sequence like the pin-detection. It seems that forcing the synced * access works around the stall. Grrr... --- linux-raspi2-4.2.0.orig/sound/pci/hda/hda_intel.c +++ linux-raspi2-4.2.0/sound/pci/hda/hda_intel.c @@ -334,6 +334,7 @@ #define AZX_DCAPS_PRESET_CTHDA \ (AZX_DCAPS_NO_MSI | AZX_DCAPS_POSFIX_LPIB |\ + AZX_DCAPS_NO_64BIT |\ AZX_DCAPS_4K_BDLE_BOUNDARY | AZX_DCAPS_SNOOP_OFF) /* @@ -2104,6 +2105,11 @@ .driver_data = AZX_DRIVER_PCH | AZX_DCAPS_INTEL_PCH }, { PCI_DEVICE(0x8086, 0x8d21), .driver_data = AZX_DRIVER_PCH | AZX_DCAPS_INTEL_PCH }, + /* Lewisburg */ + { PCI_DEVICE(0x8086, 0xa1f0), + .driver_data = AZX_DRIVER_PCH | AZX_DCAPS_INTEL_PCH }, + { PCI_DEVICE(0x8086, 0xa270), + .driver_data = AZX_DRIVER_PCH | AZX_DCAPS_INTEL_PCH }, /* Lynx Point-LP */ { PCI_DEVICE(0x8086, 0x9c20), .driver_data = AZX_DRIVER_PCH | AZX_DCAPS_INTEL_PCH }, @@ -2284,11 +2290,13 @@ .class = PCI_CLASS_MULTIMEDIA_HD_AUDIO << 8, .class_mask = 0xffffff, .driver_data = AZX_DRIVER_CTX | AZX_DCAPS_CTX_WORKAROUND | + AZX_DCAPS_NO_64BIT | AZX_DCAPS_RIRB_PRE_DELAY | AZX_DCAPS_POSFIX_LPIB }, #else /* this entry seems still valid -- i.e. without emu20kx chip */ { PCI_DEVICE(0x1102, 0x0009), .driver_data = AZX_DRIVER_CTX | AZX_DCAPS_CTX_WORKAROUND | + AZX_DCAPS_NO_64BIT | AZX_DCAPS_RIRB_PRE_DELAY | AZX_DCAPS_POSFIX_LPIB }, #endif /* CM8888 */ --- linux-raspi2-4.2.0.orig/sound/pci/hda/hda_tegra.c +++ linux-raspi2-4.2.0/sound/pci/hda/hda_tegra.c @@ -73,6 +73,7 @@ struct clk *hda2codec_2x_clk; struct clk *hda2hdmi_clk; void __iomem *regs; + struct work_struct probe_work; }; #ifdef CONFIG_PM @@ -294,7 +295,9 @@ static int hda_tegra_dev_free(struct snd_device *device) { struct azx *chip = device->device_data; + struct hda_tegra *hda = container_of(chip, struct hda_tegra, chip); + cancel_work_sync(&hda->probe_work); if (azx_bus(chip)->chip_init) { azx_stop_all_streams(chip); azx_stop_chip(chip); @@ -426,6 +429,9 @@ /* * constructor */ + +static void hda_tegra_probe_work(struct work_struct *work); + static int hda_tegra_create(struct snd_card *card, unsigned int driver_caps, struct hda_tegra *hda) @@ -452,6 +458,8 @@ chip->single_cmd = false; chip->snoop = true; + INIT_WORK(&hda->probe_work, hda_tegra_probe_work); + err = azx_bus_init(chip, NULL, &hda_tegra_io_ops); if (err < 0) return err; @@ -499,6 +507,21 @@ card->private_data = chip; dev_set_drvdata(&pdev->dev, card); + schedule_work(&hda->probe_work); + + return 0; + +out_free: + snd_card_free(card); + return err; +} + +static void hda_tegra_probe_work(struct work_struct *work) +{ + struct hda_tegra *hda = container_of(work, struct hda_tegra, probe_work); + struct azx *chip = &hda->chip; + struct platform_device *pdev = to_platform_device(hda->dev); + int err; err = hda_tegra_first_init(chip, pdev); if (err < 0) @@ -520,11 +543,8 @@ chip->running = 1; snd_hda_set_power_save(&chip->bus, power_save * 1000); - return 0; - -out_free: - snd_card_free(card); - return err; + out_free: + return; /* no error return from async probe */ } static int hda_tegra_remove(struct platform_device *pdev) --- linux-raspi2-4.2.0.orig/sound/pci/hda/patch_cirrus.c +++ linux-raspi2-4.2.0/sound/pci/hda/patch_cirrus.c @@ -633,6 +633,7 @@ SND_PCI_QUIRK(0x106b, 0x5e00, "MacBookPro 11,2", CS4208_MBP11), SND_PCI_QUIRK(0x106b, 0x7100, "MacBookAir 6,1", CS4208_MBA6), SND_PCI_QUIRK(0x106b, 0x7200, "MacBookAir 6,2", CS4208_MBA6), + SND_PCI_QUIRK(0x106b, 0x7b00, "MacBookPro 12,1", CS4208_MBP11), {} /* terminator */ }; --- linux-raspi2-4.2.0.orig/sound/pci/hda/patch_conexant.c +++ linux-raspi2-4.2.0/sound/pci/hda/patch_conexant.c @@ -819,6 +819,7 @@ SND_PCI_QUIRK(0x17aa, 0x21da, "Lenovo X220", CXT_PINCFG_LENOVO_TP410), SND_PCI_QUIRK(0x17aa, 0x21db, "Lenovo X220-tablet", CXT_PINCFG_LENOVO_TP410), SND_PCI_QUIRK(0x17aa, 0x38af, "Lenovo IdeaPad Z560", CXT_FIXUP_MUTE_LED_EAPD), + SND_PCI_QUIRK(0x17aa, 0x390b, "Lenovo G50-80", CXT_FIXUP_STEREO_DMIC), SND_PCI_QUIRK(0x17aa, 0x3975, "Lenovo U300s", CXT_FIXUP_STEREO_DMIC), SND_PCI_QUIRK(0x17aa, 0x3977, "Lenovo IdeaPad U310", CXT_FIXUP_STEREO_DMIC), SND_PCI_QUIRK(0x17aa, 0x397b, "Lenovo S205", CXT_FIXUP_STEREO_DMIC), --- linux-raspi2-4.2.0.orig/sound/pci/hda/patch_hdmi.c +++ linux-raspi2-4.2.0/sound/pci/hda/patch_hdmi.c @@ -37,6 +37,8 @@ #include #include #include +#include +#include #include "hda_codec.h" #include "hda_local.h" #include "hda_jack.h" @@ -48,8 +50,9 @@ #define is_haswell(codec) ((codec)->core.vendor_id == 0x80862807) #define is_broadwell(codec) ((codec)->core.vendor_id == 0x80862808) #define is_skylake(codec) ((codec)->core.vendor_id == 0x80862809) +#define is_broxton(codec) ((codec)->core.vendor_id == 0x8086280a) #define is_haswell_plus(codec) (is_haswell(codec) || is_broadwell(codec) \ - || is_skylake(codec)) + || is_skylake(codec) || is_broxton(codec)) #define is_valleyview(codec) ((codec)->core.vendor_id == 0x80862882) #define is_cherryview(codec) ((codec)->core.vendor_id == 0x80862883) @@ -144,6 +147,9 @@ */ struct hda_multi_out multiout; struct hda_pcm_stream pcm_playback; + + /* i915/powerwell (Haswell+/Valleyview+) specific */ + struct i915_audio_component_audio_ops i915_audio_ops; }; @@ -2191,6 +2197,9 @@ struct hdmi_spec *spec = codec->spec; int pin_idx; + if (is_haswell_plus(codec) || is_valleyview_plus(codec)) + snd_hdac_i915_register_notifier(NULL); + for (pin_idx = 0; pin_idx < spec->num_pins; pin_idx++) { struct hdmi_spec_per_pin *per_pin = get_pin(spec, pin_idx); @@ -2316,6 +2325,14 @@ snd_hda_codec_set_power_to_all(codec, fg, power_state); } +static void intel_pin_eld_notify(void *audio_ptr, int port) +{ + struct hda_codec *codec = audio_ptr; + int pin_nid = port + 0x04; + + check_presence_and_report(codec, pin_nid); +} + static int patch_generic_hdmi(struct hda_codec *codec) { struct hdmi_spec *spec; @@ -2342,8 +2359,12 @@ if (is_valleyview_plus(codec) || is_skylake(codec)) codec->core.link_power_control = 1; - if (is_haswell_plus(codec) || is_valleyview_plus(codec)) + if (is_haswell_plus(codec) || is_valleyview_plus(codec)) { codec->depop_delay = 0; + spec->i915_audio_ops.audio_ptr = codec; + spec->i915_audio_ops.pin_eld_notify = intel_pin_eld_notify; + snd_hdac_i915_register_notifier(&spec->i915_audio_ops); + } if (hdmi_parse_codec(codec) < 0) { codec->spec = NULL; --- linux-raspi2-4.2.0.orig/sound/pci/hda/patch_realtek.c +++ linux-raspi2-4.2.0/sound/pci/hda/patch_realtek.c @@ -1135,7 +1135,7 @@ /* override all pins as BIOS on old Amilo is broken */ .type = HDA_FIXUP_PINS, .v.pins = (const struct hda_pintbl[]) { - { 0x14, 0x0121411f }, /* HP */ + { 0x14, 0x0121401f }, /* HP */ { 0x15, 0x99030120 }, /* speaker */ { 0x16, 0x99030130 }, /* bass speaker */ { 0x17, 0x411111f0 }, /* N/A */ @@ -1155,7 +1155,7 @@ /* almost compatible with FUJITSU, but no bass and SPDIF */ .type = HDA_FIXUP_PINS, .v.pins = (const struct hda_pintbl[]) { - { 0x14, 0x0121411f }, /* HP */ + { 0x14, 0x0121401f }, /* HP */ { 0x15, 0x99030120 }, /* speaker */ { 0x16, 0x411111f0 }, /* N/A */ { 0x17, 0x411111f0 }, /* N/A */ @@ -1364,7 +1364,7 @@ SND_PCI_QUIRK(0x161f, 0x203d, "W810", ALC880_FIXUP_W810), SND_PCI_QUIRK(0x161f, 0x205d, "Medion Rim 2150", ALC880_FIXUP_MEDION_RIM), SND_PCI_QUIRK(0x1631, 0xe011, "PB 13201056", ALC880_FIXUP_6ST_AUTOMUTE), - SND_PCI_QUIRK(0x1734, 0x107c, "FSC F1734", ALC880_FIXUP_F1734), + SND_PCI_QUIRK(0x1734, 0x107c, "FSC Amilo M1437", ALC880_FIXUP_FUJITSU), SND_PCI_QUIRK(0x1734, 0x1094, "FSC Amilo M1451G", ALC880_FIXUP_FUJITSU), SND_PCI_QUIRK(0x1734, 0x10ac, "FSC AMILO Xi 1526", ALC880_FIXUP_F1734), SND_PCI_QUIRK(0x1734, 0x10b0, "FSC Amilo Pi1556", ALC880_FIXUP_FUJITSU), @@ -4188,6 +4188,24 @@ } } +/* fixup for Thinkpad docks: add dock pins, avoid HP parser fixup */ +static void alc_fixup_tpt440_dock(struct hda_codec *codec, + const struct hda_fixup *fix, int action) +{ + static const struct hda_pintbl pincfgs[] = { + { 0x16, 0x21211010 }, /* dock headphone */ + { 0x19, 0x21a11010 }, /* dock mic */ + { } + }; + struct alc_spec *spec = codec->spec; + + if (action == HDA_FIXUP_ACT_PRE_PROBE) { + spec->parse_flags = HDA_PINCFG_NO_HP_FIXUP; + codec->power_save_node = 0; /* avoid click noises */ + snd_hda_apply_pincfgs(codec, pincfgs); + } +} + static void alc_shutup_dell_xps13(struct hda_codec *codec) { struct alc_spec *spec = codec->spec; @@ -4562,7 +4580,6 @@ ALC255_FIXUP_HEADSET_MODE_NO_HP_MIC, ALC293_FIXUP_DELL1_MIC_NO_PRESENCE, ALC292_FIXUP_TPT440_DOCK, - ALC292_FIXUP_TPT440_DOCK2, ALC283_FIXUP_BXBT2807_MIC, ALC255_FIXUP_DELL_WMI_MIC_MUTE_LED, ALC282_FIXUP_ASPIRE_V5_PINS, @@ -4579,6 +4596,7 @@ ALC292_FIXUP_DELL_E7X, ALC292_FIXUP_DISABLE_AAMIX, ALC298_FIXUP_DELL1_MIC_NO_PRESENCE, + ALC275_FIXUP_DELL_XPS, }; static const struct hda_fixup alc269_fixups[] = { @@ -5029,17 +5047,7 @@ }, [ALC292_FIXUP_TPT440_DOCK] = { .type = HDA_FIXUP_FUNC, - .v.func = alc269_fixup_pincfg_no_hp_to_lineout, - .chained = true, - .chain_id = ALC292_FIXUP_TPT440_DOCK2 - }, - [ALC292_FIXUP_TPT440_DOCK2] = { - .type = HDA_FIXUP_PINS, - .v.pins = (const struct hda_pintbl[]) { - { 0x16, 0x21211010 }, /* dock headphone */ - { 0x19, 0x21a11010 }, /* dock mic */ - { } - }, + .v.func = alc_fixup_tpt440_dock, .chained = true, .chain_id = ALC269_FIXUP_LIMIT_INT_MIC_BOOST }, @@ -5158,6 +5166,17 @@ .chained = true, .chain_id = ALC269_FIXUP_HEADSET_MODE }, + [ALC275_FIXUP_DELL_XPS] = { + .type = HDA_FIXUP_VERBS, + .v.verbs = (const struct hda_verb[]) { + /* Enables internal speaker */ + {0x20, AC_VERB_SET_COEF_INDEX, 0x1f}, + {0x20, AC_VERB_SET_PROC_COEF, 0x00c0}, + {0x20, AC_VERB_SET_COEF_INDEX, 0x30}, + {0x20, AC_VERB_SET_PROC_COEF, 0x00b1}, + {} + } + }, }; static const struct snd_pci_quirk alc269_fixup_tbl[] = { @@ -5172,6 +5191,7 @@ 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(0x1028, 0x0470, "Dell M101z", ALC269_FIXUP_DELL_M101Z), + SND_PCI_QUIRK(0x1028, 0x054b, "Dell XPS one 2710", ALC275_FIXUP_DELL_XPS), SND_PCI_QUIRK(0x1028, 0x05ca, "Dell Latitude E7240", ALC292_FIXUP_DELL_E7X), SND_PCI_QUIRK(0x1028, 0x05cb, "Dell Latitude E7440", ALC292_FIXUP_DELL_E7X), SND_PCI_QUIRK(0x1028, 0x05da, "Dell Vostro 5460", ALC290_FIXUP_SUBWOOFER), @@ -5189,8 +5209,11 @@ SND_PCI_QUIRK(0x1028, 0x06c7, "Dell", ALC255_FIXUP_DELL1_MIC_NO_PRESENCE), SND_PCI_QUIRK(0x1028, 0x06d9, "Dell", ALC293_FIXUP_DELL1_MIC_NO_PRESENCE), SND_PCI_QUIRK(0x1028, 0x06da, "Dell", ALC293_FIXUP_DELL1_MIC_NO_PRESENCE), - SND_PCI_QUIRK(0x1028, 0x06de, "Dell", ALC292_FIXUP_DISABLE_AAMIX), SND_PCI_QUIRK(0x1028, 0x06db, "Dell", ALC292_FIXUP_DISABLE_AAMIX), + SND_PCI_QUIRK(0x1028, 0x06dd, "Dell", ALC292_FIXUP_DISABLE_AAMIX), + SND_PCI_QUIRK(0x1028, 0x06de, "Dell", ALC292_FIXUP_DISABLE_AAMIX), + SND_PCI_QUIRK(0x1028, 0x06df, "Dell", ALC292_FIXUP_DISABLE_AAMIX), + SND_PCI_QUIRK(0x1028, 0x06e0, "Dell", ALC292_FIXUP_DISABLE_AAMIX), 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), @@ -5296,6 +5319,7 @@ SND_PCI_QUIRK(0x17aa, 0x2212, "Thinkpad T440", ALC292_FIXUP_TPT440_DOCK), SND_PCI_QUIRK(0x17aa, 0x2214, "Thinkpad X240", ALC292_FIXUP_TPT440_DOCK), SND_PCI_QUIRK(0x17aa, 0x2215, "Thinkpad", ALC269_FIXUP_LIMIT_INT_MIC_BOOST), + SND_PCI_QUIRK(0x17aa, 0x2223, "ThinkPad T550", ALC292_FIXUP_TPT440_DOCK), SND_PCI_QUIRK(0x17aa, 0x2226, "ThinkPad X250", ALC292_FIXUP_TPT440_DOCK), SND_PCI_QUIRK(0x17aa, 0x3977, "IdeaPad S210", ALC283_FIXUP_INT_MIC), SND_PCI_QUIRK(0x17aa, 0x3978, "IdeaPad Y410P", ALC269_FIXUP_NO_SHUTUP), @@ -6579,6 +6603,7 @@ SND_PCI_QUIRK(0x1028, 0x05db, "Dell", ALC668_FIXUP_DELL_MIC_NO_PRESENCE), SND_PCI_QUIRK(0x1028, 0x05fe, "Dell XPS 15", ALC668_FIXUP_DELL_XPS13), SND_PCI_QUIRK(0x1028, 0x060a, "Dell XPS 13", ALC668_FIXUP_DELL_XPS13), + SND_PCI_QUIRK(0x1028, 0x060d, "Dell M3800", ALC668_FIXUP_DELL_XPS13), SND_PCI_QUIRK(0x1028, 0x0625, "Dell", ALC668_FIXUP_DELL_MIC_NO_PRESENCE), SND_PCI_QUIRK(0x1028, 0x0626, "Dell", ALC668_FIXUP_DELL_MIC_NO_PRESENCE), SND_PCI_QUIRK(0x1028, 0x0696, "Dell", ALC668_FIXUP_DELL_MIC_NO_PRESENCE), --- linux-raspi2-4.2.0.orig/sound/pci/hda/patch_sigmatel.c +++ linux-raspi2-4.2.0/sound/pci/hda/patch_sigmatel.c @@ -702,6 +702,7 @@ static bool hp_blike_system(u32 subsystem_id) { switch (subsystem_id) { + case 0x103c1473: /* HP ProBook 6550b */ case 0x103c1520: case 0x103c1521: case 0x103c1523: @@ -4520,7 +4521,11 @@ return err; spec = codec->spec; - codec->power_save_node = 1; + /* enable power_save_node only for new 92HD89xx chips, as it causes + * click noises on old 92HD73xx chips. + */ + if ((codec->core.vendor_id & 0xfffffff0) != 0x111d7670) + codec->power_save_node = 1; spec->linear_tone_beep = 0; spec->gen.mixer_nid = 0x1d; spec->have_spdif_mux = 1; --- linux-raspi2-4.2.0.orig/sound/soc/au1x/db1200.c +++ linux-raspi2-4.2.0/sound/soc/au1x/db1200.c @@ -129,6 +129,8 @@ .cpu_dai_name = "au1xpsc_i2s.2", .platform_name = "au1xpsc-pcm.2", .codec_name = "wm8731.0-001b", + .dai_fmt = SND_SOC_DAIFMT_LEFT_J | SND_SOC_DAIFMT_NB_NF | + SND_SOC_DAIFMT_CBM_CFM, .ops = &db1200_i2s_wm8731_ops, }; @@ -146,6 +148,8 @@ .cpu_dai_name = "au1xpsc_i2s.3", .platform_name = "au1xpsc-pcm.3", .codec_name = "wm8731.0-001b", + .dai_fmt = SND_SOC_DAIFMT_LEFT_J | SND_SOC_DAIFMT_NB_NF | + SND_SOC_DAIFMT_CBM_CFM, .ops = &db1200_i2s_wm8731_ops, }; --- linux-raspi2-4.2.0.orig/sound/soc/bcm/Kconfig +++ linux-raspi2-4.2.0/sound/soc/bcm/Kconfig @@ -7,3 +7,71 @@ Say Y or M if you want to add support for codecs attached to the BCM2835 I2S interface. You will also need to select the audio interfaces to support below. + +config SND_BCM2708_SOC_I2S + tristate "SoC Audio support for the Broadcom BCM2708 I2S module" + depends on MACH_BCM2708 || MACH_BCM2709 || ARCH_BCM2835 + select REGMAP_MMIO + select SND_SOC_DMAENGINE_PCM + select SND_SOC_GENERIC_DMAENGINE_PCM + help + Say Y or M if you want to add support for codecs attached to + the BCM2708 I2S interface. You will also need + to select the audio interfaces to support below. + +config SND_BCM2708_SOC_HIFIBERRY_DAC + tristate "Support for HifiBerry DAC" + depends on SND_BCM2708_SOC_I2S || SND_BCM2835_SOC_I2S + select SND_SOC_PCM5102A + help + Say Y or M if you want to add support for HifiBerry DAC. + +config SND_BCM2708_SOC_HIFIBERRY_DACPLUS + tristate "Support for HifiBerry DAC+" + depends on SND_BCM2708_SOC_I2S || SND_BCM2835_SOC_I2S + select SND_SOC_PCM512x + help + Say Y or M if you want to add support for HifiBerry DAC+. + +config SND_BCM2708_SOC_HIFIBERRY_DIGI + tristate "Support for HifiBerry Digi" + depends on SND_BCM2708_SOC_I2S || SND_BCM2835_SOC_I2S + select SND_SOC_WM8804 + help + Say Y or M if you want to add support for HifiBerry Digi S/PDIF output board. + +config SND_BCM2708_SOC_HIFIBERRY_AMP + tristate "Support for the HifiBerry Amp" + depends on SND_BCM2708_SOC_I2S || SND_BCM2835_SOC_I2S + select SND_SOC_TAS5713 + help + Say Y or M if you want to add support for the HifiBerry Amp amplifier board. + +config SND_BCM2708_SOC_RPI_DAC + tristate "Support for RPi-DAC" + depends on SND_BCM2708_SOC_I2S || SND_BCM2835_SOC_I2S + select SND_SOC_PCM1794A + help + Say Y or M if you want to add support for RPi-DAC. + +config SND_BCM2708_SOC_RPI_PROTO + tristate "Support for Rpi-PROTO" + depends on SND_BCM2708_SOC_I2S || SND_BCM2835_SOC_I2S + select SND_SOC_WM8731 + help + Say Y or M if you want to add support for Audio Codec Board PROTO (WM8731). + +config SND_BCM2708_SOC_IQAUDIO_DAC + tristate "Support for IQaudIO-DAC" + depends on SND_BCM2708_SOC_I2S || SND_BCM2835_SOC_I2S + select SND_SOC_PCM512x_I2C + help + Say Y or M if you want to add support for IQaudIO-DAC. + +config SND_BCM2708_SOC_RASPIDAC3 + tristate "Support for RaspiDAC Rev.3x" + depends on SND_BCM2708_SOC_I2S + select SND_SOC_PCM512x_I2C + select SND_SOC_TPA6130A2 + help + Say Y or M if you want to add support for RaspiDAC Rev.3x. --- linux-raspi2-4.2.0.orig/sound/soc/bcm/Makefile +++ linux-raspi2-4.2.0/sound/soc/bcm/Makefile @@ -3,3 +3,26 @@ obj-$(CONFIG_SND_BCM2835_SOC_I2S) += snd-soc-bcm2835-i2s.o +# BCM2708 Platform Support +snd-soc-bcm2708-i2s-objs := bcm2708-i2s.o + +obj-$(CONFIG_SND_BCM2708_SOC_I2S) += snd-soc-bcm2708-i2s.o + +# BCM2708 Machine Support +snd-soc-hifiberry-dac-objs := hifiberry_dac.o +snd-soc-hifiberry-dacplus-objs := hifiberry_dacplus.o +snd-soc-hifiberry-digi-objs := hifiberry_digi.o +snd-soc-hifiberry-amp-objs := hifiberry_amp.o +snd-soc-rpi-dac-objs := rpi-dac.o +snd-soc-rpi-proto-objs := rpi-proto.o +snd-soc-iqaudio-dac-objs := iqaudio-dac.o +snd-soc-raspidac3-objs := raspidac3.o + +obj-$(CONFIG_SND_BCM2708_SOC_HIFIBERRY_DAC) += snd-soc-hifiberry-dac.o +obj-$(CONFIG_SND_BCM2708_SOC_HIFIBERRY_DACPLUS) += snd-soc-hifiberry-dacplus.o +obj-$(CONFIG_SND_BCM2708_SOC_HIFIBERRY_DIGI) += snd-soc-hifiberry-digi.o +obj-$(CONFIG_SND_BCM2708_SOC_HIFIBERRY_AMP) += snd-soc-hifiberry-amp.o +obj-$(CONFIG_SND_BCM2708_SOC_RPI_DAC) += snd-soc-rpi-dac.o +obj-$(CONFIG_SND_BCM2708_SOC_RPI_PROTO) += snd-soc-rpi-proto.o +obj-$(CONFIG_SND_BCM2708_SOC_IQAUDIO_DAC) += snd-soc-iqaudio-dac.o +obj-$(CONFIG_SND_BCM2708_SOC_RASPIDAC3) += snd-soc-raspidac3.o --- linux-raspi2-4.2.0.orig/sound/soc/bcm/bcm2708-i2s.c +++ linux-raspi2-4.2.0/sound/soc/bcm/bcm2708-i2s.c @@ -0,0 +1,1020 @@ +/* + * ALSA SoC I2S Audio Layer for Broadcom BCM2708 SoC + * + * Author: Florian Meier + * Copyright 2013 + * + * Based on + * Raspberry Pi PCM I2S ALSA Driver + * Copyright (c) by Phil Poole 2013 + * + * ALSA SoC I2S (McBSP) Audio Layer for TI DAVINCI processor + * Vladimir Barinov, + * Copyright (C) 2007 MontaVista Software, Inc., + * + * OMAP ALSA SoC DAI driver using McBSP port + * Copyright (C) 2008 Nokia Corporation + * Contact: Jarkko Nikula + * Peter Ujfalusi + * + * Freescale SSI ALSA SoC Digital Audio Interface (DAI) driver + * Author: Timur Tabi + * Copyright 2007-2010 Freescale Semiconductor, Inc. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * version 2 as published by the Free Software Foundation. + * + * 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 "bcm2708-i2s.h" + +#include +#include +#include +#include +#include +#include +#include +#ifndef CONFIG_ARCH_BCM2835 +#include +#endif + +#include +#include +#include +#include +#include +#include + +#include + +/* Clock registers */ +#define BCM2708_CLK_PCMCTL_REG 0x00 +#define BCM2708_CLK_PCMDIV_REG 0x04 + +/* Clock register settings */ +#define BCM2708_CLK_PASSWD (0x5a000000) +#define BCM2708_CLK_PASSWD_MASK (0xff000000) +#define BCM2708_CLK_MASH(v) ((v) << 9) +#define BCM2708_CLK_FLIP BIT(8) +#define BCM2708_CLK_BUSY BIT(7) +#define BCM2708_CLK_KILL BIT(5) +#define BCM2708_CLK_ENAB BIT(4) +#define BCM2708_CLK_SRC(v) (v) + +#define BCM2708_CLK_SHIFT (12) +#define BCM2708_CLK_DIVI(v) ((v) << BCM2708_CLK_SHIFT) +#define BCM2708_CLK_DIVF(v) (v) +#define BCM2708_CLK_DIVF_MASK (0xFFF) + +enum { + BCM2708_CLK_MASH_0 = 0, + BCM2708_CLK_MASH_1, + BCM2708_CLK_MASH_2, + BCM2708_CLK_MASH_3, +}; + +enum { + BCM2708_CLK_SRC_GND = 0, + BCM2708_CLK_SRC_OSC, + BCM2708_CLK_SRC_DBG0, + BCM2708_CLK_SRC_DBG1, + BCM2708_CLK_SRC_PLLA, + BCM2708_CLK_SRC_PLLC, + BCM2708_CLK_SRC_PLLD, + BCM2708_CLK_SRC_HDMI, +}; + +/* Most clocks are not useable (freq = 0) */ +static const unsigned int bcm2708_clk_freq[BCM2708_CLK_SRC_HDMI+1] = { + [BCM2708_CLK_SRC_GND] = 0, + [BCM2708_CLK_SRC_OSC] = 19200000, + [BCM2708_CLK_SRC_DBG0] = 0, + [BCM2708_CLK_SRC_DBG1] = 0, + [BCM2708_CLK_SRC_PLLA] = 0, + [BCM2708_CLK_SRC_PLLC] = 0, + [BCM2708_CLK_SRC_PLLD] = 500000000, + [BCM2708_CLK_SRC_HDMI] = 0, +}; + +/* I2S registers */ +#define BCM2708_I2S_CS_A_REG 0x00 +#define BCM2708_I2S_FIFO_A_REG 0x04 +#define BCM2708_I2S_MODE_A_REG 0x08 +#define BCM2708_I2S_RXC_A_REG 0x0c +#define BCM2708_I2S_TXC_A_REG 0x10 +#define BCM2708_I2S_DREQ_A_REG 0x14 +#define BCM2708_I2S_INTEN_A_REG 0x18 +#define BCM2708_I2S_INTSTC_A_REG 0x1c +#define BCM2708_I2S_GRAY_REG 0x20 + +/* I2S register settings */ +#define BCM2708_I2S_STBY BIT(25) +#define BCM2708_I2S_SYNC BIT(24) +#define BCM2708_I2S_RXSEX BIT(23) +#define BCM2708_I2S_RXF BIT(22) +#define BCM2708_I2S_TXE BIT(21) +#define BCM2708_I2S_RXD BIT(20) +#define BCM2708_I2S_TXD BIT(19) +#define BCM2708_I2S_RXR BIT(18) +#define BCM2708_I2S_TXW BIT(17) +#define BCM2708_I2S_CS_RXERR BIT(16) +#define BCM2708_I2S_CS_TXERR BIT(15) +#define BCM2708_I2S_RXSYNC BIT(14) +#define BCM2708_I2S_TXSYNC BIT(13) +#define BCM2708_I2S_DMAEN BIT(9) +#define BCM2708_I2S_RXTHR(v) ((v) << 7) +#define BCM2708_I2S_TXTHR(v) ((v) << 5) +#define BCM2708_I2S_RXCLR BIT(4) +#define BCM2708_I2S_TXCLR BIT(3) +#define BCM2708_I2S_TXON BIT(2) +#define BCM2708_I2S_RXON BIT(1) +#define BCM2708_I2S_EN (1) + +#define BCM2708_I2S_CLKDIS BIT(28) +#define BCM2708_I2S_PDMN BIT(27) +#define BCM2708_I2S_PDME BIT(26) +#define BCM2708_I2S_FRXP BIT(25) +#define BCM2708_I2S_FTXP BIT(24) +#define BCM2708_I2S_CLKM BIT(23) +#define BCM2708_I2S_CLKI BIT(22) +#define BCM2708_I2S_FSM BIT(21) +#define BCM2708_I2S_FSI BIT(20) +#define BCM2708_I2S_FLEN(v) ((v) << 10) +#define BCM2708_I2S_FSLEN(v) (v) + +#define BCM2708_I2S_CHWEX BIT(15) +#define BCM2708_I2S_CHEN BIT(14) +#define BCM2708_I2S_CHPOS(v) ((v) << 4) +#define BCM2708_I2S_CHWID(v) (v) +#define BCM2708_I2S_CH1(v) ((v) << 16) +#define BCM2708_I2S_CH2(v) (v) + +#define BCM2708_I2S_TX_PANIC(v) ((v) << 24) +#define BCM2708_I2S_RX_PANIC(v) ((v) << 16) +#define BCM2708_I2S_TX(v) ((v) << 8) +#define BCM2708_I2S_RX(v) (v) + +#define BCM2708_I2S_INT_RXERR BIT(3) +#define BCM2708_I2S_INT_TXERR BIT(2) +#define BCM2708_I2S_INT_RXR BIT(1) +#define BCM2708_I2S_INT_TXW BIT(0) + +/* I2S DMA interface */ +#define BCM2708_I2S_FIFO_PHYSICAL_ADDR 0x7E203004 +#define BCM2708_DMA_DREQ_PCM_TX 2 +#define BCM2708_DMA_DREQ_PCM_RX 3 + +/* I2S pin configuration */ +static int bcm2708_i2s_gpio=BCM2708_I2S_GPIO_AUTO; + +/* General device struct */ +struct bcm2708_i2s_dev { + struct device *dev; + struct snd_dmaengine_dai_dma_data dma_data[2]; + unsigned int fmt; + unsigned int bclk_ratio; + + struct regmap *i2s_regmap; + struct regmap *clk_regmap; +}; + +void bcm2708_i2s_set_gpio(int gpio) { + bcm2708_i2s_gpio=gpio; +} +EXPORT_SYMBOL(bcm2708_i2s_set_gpio); + + +static void bcm2708_i2s_start_clock(struct bcm2708_i2s_dev *dev) +{ + /* Start the clock if in master mode */ + unsigned int master = dev->fmt & SND_SOC_DAIFMT_MASTER_MASK; + + switch (master) { + case SND_SOC_DAIFMT_CBS_CFS: + case SND_SOC_DAIFMT_CBS_CFM: + regmap_update_bits(dev->clk_regmap, BCM2708_CLK_PCMCTL_REG, + BCM2708_CLK_PASSWD_MASK | BCM2708_CLK_ENAB, + BCM2708_CLK_PASSWD | BCM2708_CLK_ENAB); + break; + default: + break; + } +} + +static void bcm2708_i2s_stop_clock(struct bcm2708_i2s_dev *dev) +{ + uint32_t clkreg; + int timeout = 1000; + + /* Stop clock */ + regmap_update_bits(dev->clk_regmap, BCM2708_CLK_PCMCTL_REG, + BCM2708_CLK_PASSWD_MASK | BCM2708_CLK_ENAB, + BCM2708_CLK_PASSWD); + + /* Wait for the BUSY flag going down */ + while (--timeout) { + regmap_read(dev->clk_regmap, BCM2708_CLK_PCMCTL_REG, &clkreg); + if (!(clkreg & BCM2708_CLK_BUSY)) + break; + } + + if (!timeout) { + /* KILL the clock */ + dev_err(dev->dev, "I2S clock didn't stop. Kill the clock!\n"); + regmap_update_bits(dev->clk_regmap, BCM2708_CLK_PCMCTL_REG, + BCM2708_CLK_KILL | BCM2708_CLK_PASSWD_MASK, + BCM2708_CLK_KILL | BCM2708_CLK_PASSWD); + } +} + +static void bcm2708_i2s_clear_fifos(struct bcm2708_i2s_dev *dev, + bool tx, bool rx) +{ + int timeout = 1000; + uint32_t syncval; + uint32_t csreg; + uint32_t i2s_active_state; + uint32_t clkreg; + uint32_t clk_active_state; + uint32_t off; + uint32_t clr; + + off = tx ? BCM2708_I2S_TXON : 0; + off |= rx ? BCM2708_I2S_RXON : 0; + + clr = tx ? BCM2708_I2S_TXCLR : 0; + clr |= rx ? BCM2708_I2S_RXCLR : 0; + + /* Backup the current state */ + regmap_read(dev->i2s_regmap, BCM2708_I2S_CS_A_REG, &csreg); + i2s_active_state = csreg & (BCM2708_I2S_RXON | BCM2708_I2S_TXON); + + regmap_read(dev->clk_regmap, BCM2708_CLK_PCMCTL_REG, &clkreg); + clk_active_state = clkreg & BCM2708_CLK_ENAB; + + /* Start clock if not running */ + if (!clk_active_state) { + regmap_update_bits(dev->clk_regmap, BCM2708_CLK_PCMCTL_REG, + BCM2708_CLK_PASSWD_MASK | BCM2708_CLK_ENAB, + BCM2708_CLK_PASSWD | BCM2708_CLK_ENAB); + } + + /* Stop I2S module */ + regmap_update_bits(dev->i2s_regmap, BCM2708_I2S_CS_A_REG, off, 0); + + /* + * Clear the FIFOs + * Requires at least 2 PCM clock cycles to take effect + */ + regmap_update_bits(dev->i2s_regmap, BCM2708_I2S_CS_A_REG, clr, clr); + + /* Wait for 2 PCM clock cycles */ + + /* + * Toggle the SYNC flag. After 2 PCM clock cycles it can be read back + * FIXME: This does not seem to work for slave mode! + */ + regmap_read(dev->i2s_regmap, BCM2708_I2S_CS_A_REG, &syncval); + syncval &= BCM2708_I2S_SYNC; + + regmap_update_bits(dev->i2s_regmap, BCM2708_I2S_CS_A_REG, + BCM2708_I2S_SYNC, ~syncval); + + /* Wait for the SYNC flag changing it's state */ + while (--timeout) { + regmap_read(dev->i2s_regmap, BCM2708_I2S_CS_A_REG, &csreg); + if ((csreg & BCM2708_I2S_SYNC) != syncval) + break; + } + + if (!timeout) + dev_err(dev->dev, "I2S SYNC error!\n"); + + /* Stop clock if it was not running before */ + if (!clk_active_state) + bcm2708_i2s_stop_clock(dev); + + /* Restore I2S state */ + regmap_update_bits(dev->i2s_regmap, BCM2708_I2S_CS_A_REG, + BCM2708_I2S_RXON | BCM2708_I2S_TXON, i2s_active_state); +} + +static int bcm2708_i2s_set_dai_fmt(struct snd_soc_dai *dai, + unsigned int fmt) +{ + struct bcm2708_i2s_dev *dev = snd_soc_dai_get_drvdata(dai); + dev->fmt = fmt; + return 0; +} + +static int bcm2708_i2s_set_dai_bclk_ratio(struct snd_soc_dai *dai, + unsigned int ratio) +{ + struct bcm2708_i2s_dev *dev = snd_soc_dai_get_drvdata(dai); + dev->bclk_ratio = ratio; + return 0; +} + + +#ifdef CONFIG_ARCH_BCM2835 +static void bcm2708_i2s_setup_gpio(void) { } +#else +static int bcm2708_i2s_set_function(unsigned offset, int function) +{ + #define GPIOFSEL(x) (0x00+(x)*4) + void __iomem *gpio = __io_address(GPIO_BASE); + unsigned alt = function <= 3 ? function + 4: function == 4 ? 3 : 2; + unsigned gpiodir; + unsigned gpio_bank = offset / 10; + unsigned gpio_field_offset = (offset - 10 * gpio_bank) * 3; + + if (offset >= BCM2708_NR_GPIOS) + return -EINVAL; + + gpiodir = readl(gpio + GPIOFSEL(gpio_bank)); + gpiodir &= ~(7 << gpio_field_offset); + gpiodir |= alt << gpio_field_offset; + writel(gpiodir, gpio + GPIOFSEL(gpio_bank)); + return 0; +} + +static void bcm2708_i2s_setup_gpio(void) +{ + /* + * This is the common way to handle the GPIO pins for + * the Raspberry Pi. + * TODO Better way would be to handle + * this in the device tree! + */ + int pin,pinconfig,startpin,alt; + + /* SPI is on different GPIOs on different boards */ + /* for Raspberry Pi B+, this is pin GPIO18-21, for original on 28-31 */ + if (bcm2708_i2s_gpio==BCM2708_I2S_GPIO_AUTO) { + if ((system_rev & 0xffffff) >= 0x10) { + /* Model B+ */ + pinconfig=BCM2708_I2S_GPIO_PIN18; + } else { + /* original */ + pinconfig=BCM2708_I2S_GPIO_PIN28; + } + } else { + pinconfig=bcm2708_i2s_gpio; + } + + if (pinconfig==BCM2708_I2S_GPIO_PIN18) { + startpin=18; + alt=BCM2708_I2S_GPIO_PIN18_ALT; + } else if (pinconfig==BCM2708_I2S_GPIO_PIN28) { + startpin=28; + alt=BCM2708_I2S_GPIO_PIN28_ALT; + } else { + printk(KERN_INFO "Can't configure I2S GPIOs, unknown pin mode for I2S: %i\n",pinconfig); + return; + } + + /* configure I2S pins to correct ALT mode */ + for (pin = startpin; pin <= startpin+3; pin++) { + bcm2708_i2s_set_function(pin, alt); + } +} +#endif + +static int bcm2708_i2s_hw_params(struct snd_pcm_substream *substream, + struct snd_pcm_hw_params *params, + struct snd_soc_dai *dai) +{ + struct bcm2708_i2s_dev *dev = snd_soc_dai_get_drvdata(dai); + + unsigned int sampling_rate = params_rate(params); + unsigned int data_length, data_delay, bclk_ratio; + unsigned int ch1pos, ch2pos, mode, format; + unsigned int mash = BCM2708_CLK_MASH_1; + unsigned int divi, divf, target_frequency; + int clk_src = -1; + unsigned int master = dev->fmt & SND_SOC_DAIFMT_MASTER_MASK; + bool bit_master = (master == SND_SOC_DAIFMT_CBS_CFS + || master == SND_SOC_DAIFMT_CBS_CFM); + + bool frame_master = (master == SND_SOC_DAIFMT_CBS_CFS + || master == SND_SOC_DAIFMT_CBM_CFS); + uint32_t csreg; + + /* + * If a stream is already enabled, + * the registers are already set properly. + */ + regmap_read(dev->i2s_regmap, BCM2708_I2S_CS_A_REG, &csreg); + + if (csreg & (BCM2708_I2S_TXON | BCM2708_I2S_RXON)) + return 0; + + if (!dev->dev->of_node) + bcm2708_i2s_setup_gpio(); + + /* + * Adjust the data length according to the format. + * We prefill the half frame length with an integer + * divider of 2400 as explained at the clock settings. + * Maybe it is overwritten there, if the Integer mode + * does not apply. + */ + switch (params_format(params)) { + case SNDRV_PCM_FORMAT_S16_LE: + data_length = 16; + bclk_ratio = 50; + break; + case SNDRV_PCM_FORMAT_S24_LE: + data_length = 24; + bclk_ratio = 50; + break; + case SNDRV_PCM_FORMAT_S32_LE: + data_length = 32; + bclk_ratio = 100; + break; + default: + return -EINVAL; + } + + /* If bclk_ratio already set, use that one. */ + if (dev->bclk_ratio) + bclk_ratio = dev->bclk_ratio; + + /* + * Clock Settings + * + * The target frequency of the bit clock is + * sampling rate * frame length + * + * Integer mode: + * Sampling rates that are multiples of 8000 kHz + * can be driven by the oscillator of 19.2 MHz + * with an integer divider as long as the frame length + * is an integer divider of 19200000/8000=2400 as set up above. + * This is no longer possible if the sampling rate + * is too high (e.g. 192 kHz), because the oscillator is too slow. + * + * MASH mode: + * For all other sampling rates, it is not possible to + * have an integer divider. Approximate the clock + * with the MASH module that induces a slight frequency + * variance. To minimize that it is best to have the fastest + * clock here. That is PLLD with 500 MHz. + */ + target_frequency = sampling_rate * bclk_ratio; + clk_src = BCM2708_CLK_SRC_OSC; + mash = BCM2708_CLK_MASH_0; + + if (bcm2708_clk_freq[clk_src] % target_frequency == 0 + && bit_master && frame_master) { + divi = bcm2708_clk_freq[clk_src] / target_frequency; + divf = 0; + } else { + uint64_t dividend; + + if (!dev->bclk_ratio) { + /* + * Overwrite bclk_ratio, because the + * above trick is not needed or can + * not be used. + */ + bclk_ratio = 2 * data_length; + } + + target_frequency = sampling_rate * bclk_ratio; + + clk_src = BCM2708_CLK_SRC_PLLD; + mash = BCM2708_CLK_MASH_1; + + dividend = bcm2708_clk_freq[clk_src]; + dividend <<= BCM2708_CLK_SHIFT; + do_div(dividend, target_frequency); + divi = dividend >> BCM2708_CLK_SHIFT; + divf = dividend & BCM2708_CLK_DIVF_MASK; + } + + /* Clock should only be set up here if CPU is clock master */ + if (((dev->fmt & SND_SOC_DAIFMT_MASTER_MASK) == SND_SOC_DAIFMT_CBS_CFS) || + ((dev->fmt & SND_SOC_DAIFMT_MASTER_MASK) == SND_SOC_DAIFMT_CBS_CFM)) { + /* Set clock divider */ + regmap_write(dev->clk_regmap, BCM2708_CLK_PCMDIV_REG, BCM2708_CLK_PASSWD + | BCM2708_CLK_DIVI(divi) + | BCM2708_CLK_DIVF(divf)); + + /* Setup clock, but don't start it yet */ + regmap_write(dev->clk_regmap, BCM2708_CLK_PCMCTL_REG, BCM2708_CLK_PASSWD + | BCM2708_CLK_MASH(mash) + | BCM2708_CLK_SRC(clk_src)); + } + + /* Setup the frame format */ + format = BCM2708_I2S_CHEN; + + if (data_length >= 24) + format |= BCM2708_I2S_CHWEX; + + format |= BCM2708_I2S_CHWID((data_length-8)&0xf); + + switch (dev->fmt & SND_SOC_DAIFMT_FORMAT_MASK) { + case SND_SOC_DAIFMT_I2S: + data_delay = 1; + break; + default: + /* + * TODO + * Others are possible but are not implemented at the moment. + */ + dev_err(dev->dev, "%s:bad format\n", __func__); + return -EINVAL; + } + + ch1pos = data_delay; + ch2pos = bclk_ratio / 2 + data_delay; + + switch (params_channels(params)) { + case 2: + format = BCM2708_I2S_CH1(format) | BCM2708_I2S_CH2(format); + format |= BCM2708_I2S_CH1(BCM2708_I2S_CHPOS(ch1pos)); + format |= BCM2708_I2S_CH2(BCM2708_I2S_CHPOS(ch2pos)); + break; + default: + return -EINVAL; + } + + /* + * Set format for both streams. + * We cannot set another frame length + * (and therefore word length) anyway, + * so the format will be the same. + */ + regmap_write(dev->i2s_regmap, BCM2708_I2S_RXC_A_REG, format); + regmap_write(dev->i2s_regmap, BCM2708_I2S_TXC_A_REG, format); + + /* Setup the I2S mode */ + mode = 0; + + if (data_length <= 16) { + /* + * Use frame packed mode (2 channels per 32 bit word) + * We cannot set another frame length in the second stream + * (and therefore word length) anyway, + * so the format will be the same. + */ + mode |= BCM2708_I2S_FTXP | BCM2708_I2S_FRXP; + } + + mode |= BCM2708_I2S_FLEN(bclk_ratio - 1); + mode |= BCM2708_I2S_FSLEN(bclk_ratio / 2); + + /* Master or slave? */ + switch (dev->fmt & SND_SOC_DAIFMT_MASTER_MASK) { + case SND_SOC_DAIFMT_CBS_CFS: + /* CPU is master */ + break; + case SND_SOC_DAIFMT_CBM_CFS: + /* + * CODEC is bit clock master + * CPU is frame master + */ + mode |= BCM2708_I2S_CLKM; + break; + case SND_SOC_DAIFMT_CBS_CFM: + /* + * CODEC is frame master + * CPU is bit clock master + */ + mode |= BCM2708_I2S_FSM; + break; + case SND_SOC_DAIFMT_CBM_CFM: + /* CODEC is master */ + mode |= BCM2708_I2S_CLKM; + mode |= BCM2708_I2S_FSM; + break; + default: + dev_err(dev->dev, "%s:bad master\n", __func__); + return -EINVAL; + } + + /* + * Invert clocks? + * + * The BCM approach seems to be inverted to the classical I2S approach. + */ + switch (dev->fmt & SND_SOC_DAIFMT_INV_MASK) { + case SND_SOC_DAIFMT_NB_NF: + /* None. Therefore, both for BCM */ + mode |= BCM2708_I2S_CLKI; + mode |= BCM2708_I2S_FSI; + break; + case SND_SOC_DAIFMT_IB_IF: + /* Both. Therefore, none for BCM */ + break; + case SND_SOC_DAIFMT_NB_IF: + /* + * Invert only frame sync. Therefore, + * invert only bit clock for BCM + */ + mode |= BCM2708_I2S_CLKI; + break; + case SND_SOC_DAIFMT_IB_NF: + /* + * Invert only bit clock. Therefore, + * invert only frame sync for BCM + */ + mode |= BCM2708_I2S_FSI; + break; + default: + return -EINVAL; + } + + regmap_write(dev->i2s_regmap, BCM2708_I2S_MODE_A_REG, mode); + + /* Setup the DMA parameters */ + regmap_update_bits(dev->i2s_regmap, BCM2708_I2S_CS_A_REG, + BCM2708_I2S_RXTHR(1) + | BCM2708_I2S_TXTHR(1) + | BCM2708_I2S_DMAEN, 0xffffffff); + + regmap_update_bits(dev->i2s_regmap, BCM2708_I2S_DREQ_A_REG, + BCM2708_I2S_TX_PANIC(0x10) + | BCM2708_I2S_RX_PANIC(0x30) + | BCM2708_I2S_TX(0x30) + | BCM2708_I2S_RX(0x20), 0xffffffff); + + /* Clear FIFOs */ + bcm2708_i2s_clear_fifos(dev, true, true); + + return 0; +} + +static int bcm2708_i2s_prepare(struct snd_pcm_substream *substream, + struct snd_soc_dai *dai) +{ + struct bcm2708_i2s_dev *dev = snd_soc_dai_get_drvdata(dai); + uint32_t cs_reg; + + bcm2708_i2s_start_clock(dev); + + /* + * Clear both FIFOs if the one that should be started + * is not empty at the moment. This should only happen + * after overrun. Otherwise, hw_params would have cleared + * the FIFO. + */ + regmap_read(dev->i2s_regmap, BCM2708_I2S_CS_A_REG, &cs_reg); + + if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK + && !(cs_reg & BCM2708_I2S_TXE)) + bcm2708_i2s_clear_fifos(dev, true, false); + else if (substream->stream == SNDRV_PCM_STREAM_CAPTURE + && (cs_reg & BCM2708_I2S_RXD)) + bcm2708_i2s_clear_fifos(dev, false, true); + + return 0; +} + +static void bcm2708_i2s_stop(struct bcm2708_i2s_dev *dev, + struct snd_pcm_substream *substream, + struct snd_soc_dai *dai) +{ + uint32_t mask; + + if (substream->stream == SNDRV_PCM_STREAM_CAPTURE) + mask = BCM2708_I2S_RXON; + else + mask = BCM2708_I2S_TXON; + + regmap_update_bits(dev->i2s_regmap, + BCM2708_I2S_CS_A_REG, mask, 0); + + /* Stop also the clock when not SND_SOC_DAIFMT_CONT */ + if (!dai->active && !(dev->fmt & SND_SOC_DAIFMT_CONT)) + bcm2708_i2s_stop_clock(dev); +} + +static int bcm2708_i2s_trigger(struct snd_pcm_substream *substream, int cmd, + struct snd_soc_dai *dai) +{ + struct bcm2708_i2s_dev *dev = snd_soc_dai_get_drvdata(dai); + uint32_t mask; + + switch (cmd) { + case SNDRV_PCM_TRIGGER_START: + case SNDRV_PCM_TRIGGER_RESUME: + case SNDRV_PCM_TRIGGER_PAUSE_RELEASE: + bcm2708_i2s_start_clock(dev); + + if (substream->stream == SNDRV_PCM_STREAM_CAPTURE) + mask = BCM2708_I2S_RXON; + else + mask = BCM2708_I2S_TXON; + + regmap_update_bits(dev->i2s_regmap, + BCM2708_I2S_CS_A_REG, mask, mask); + break; + + case SNDRV_PCM_TRIGGER_STOP: + case SNDRV_PCM_TRIGGER_SUSPEND: + case SNDRV_PCM_TRIGGER_PAUSE_PUSH: + bcm2708_i2s_stop(dev, substream, dai); + break; + default: + return -EINVAL; + } + + return 0; +} + +static int bcm2708_i2s_startup(struct snd_pcm_substream *substream, + struct snd_soc_dai *dai) +{ + struct bcm2708_i2s_dev *dev = snd_soc_dai_get_drvdata(dai); + + if (dai->active) + return 0; + + /* Should this still be running stop it */ + bcm2708_i2s_stop_clock(dev); + + /* Enable PCM block */ + regmap_update_bits(dev->i2s_regmap, BCM2708_I2S_CS_A_REG, + BCM2708_I2S_EN, BCM2708_I2S_EN); + + /* + * Disable STBY. + * Requires at least 4 PCM clock cycles to take effect. + */ + regmap_update_bits(dev->i2s_regmap, BCM2708_I2S_CS_A_REG, + BCM2708_I2S_STBY, BCM2708_I2S_STBY); + + return 0; +} + +static void bcm2708_i2s_shutdown(struct snd_pcm_substream *substream, + struct snd_soc_dai *dai) +{ + struct bcm2708_i2s_dev *dev = snd_soc_dai_get_drvdata(dai); + + bcm2708_i2s_stop(dev, substream, dai); + + /* If both streams are stopped, disable module and clock */ + if (dai->active) + return; + + /* Disable the module */ + regmap_update_bits(dev->i2s_regmap, BCM2708_I2S_CS_A_REG, + BCM2708_I2S_EN, 0); + + /* + * Stopping clock is necessary, because stop does + * not stop the clock when SND_SOC_DAIFMT_CONT + */ + bcm2708_i2s_stop_clock(dev); +} + +static const struct snd_soc_dai_ops bcm2708_i2s_dai_ops = { + .startup = bcm2708_i2s_startup, + .shutdown = bcm2708_i2s_shutdown, + .prepare = bcm2708_i2s_prepare, + .trigger = bcm2708_i2s_trigger, + .hw_params = bcm2708_i2s_hw_params, + .set_fmt = bcm2708_i2s_set_dai_fmt, + .set_bclk_ratio = bcm2708_i2s_set_dai_bclk_ratio +}; + +static int bcm2708_i2s_dai_probe(struct snd_soc_dai *dai) +{ + struct bcm2708_i2s_dev *dev = snd_soc_dai_get_drvdata(dai); + + dai->playback_dma_data = &dev->dma_data[SNDRV_PCM_STREAM_PLAYBACK]; + dai->capture_dma_data = &dev->dma_data[SNDRV_PCM_STREAM_CAPTURE]; + + return 0; +} + +static struct snd_soc_dai_driver bcm2708_i2s_dai = { + .name = "bcm2708-i2s", + .probe = bcm2708_i2s_dai_probe, + .playback = { + .channels_min = 2, + .channels_max = 2, + .rates = SNDRV_PCM_RATE_8000_192000, + .formats = SNDRV_PCM_FMTBIT_S16_LE + | SNDRV_PCM_FMTBIT_S24_LE + | SNDRV_PCM_FMTBIT_S32_LE + }, + .capture = { + .channels_min = 2, + .channels_max = 2, + .rates = SNDRV_PCM_RATE_8000_192000, + .formats = SNDRV_PCM_FMTBIT_S16_LE + | SNDRV_PCM_FMTBIT_S24_LE + | SNDRV_PCM_FMTBIT_S32_LE + }, + .ops = &bcm2708_i2s_dai_ops, + .symmetric_rates = 1 +}; + +static bool bcm2708_i2s_volatile_reg(struct device *dev, unsigned int reg) +{ + switch (reg) { + case BCM2708_I2S_CS_A_REG: + case BCM2708_I2S_FIFO_A_REG: + case BCM2708_I2S_INTSTC_A_REG: + case BCM2708_I2S_GRAY_REG: + return true; + default: + return false; + }; +} + +static bool bcm2708_i2s_precious_reg(struct device *dev, unsigned int reg) +{ + switch (reg) { + case BCM2708_I2S_FIFO_A_REG: + return true; + default: + return false; + }; +} + +static bool bcm2708_clk_volatile_reg(struct device *dev, unsigned int reg) +{ + switch (reg) { + case BCM2708_CLK_PCMCTL_REG: + return true; + default: + return false; + }; +} + +static const struct regmap_config bcm2708_regmap_config[] = { + { + .reg_bits = 32, + .reg_stride = 4, + .val_bits = 32, + .max_register = BCM2708_I2S_GRAY_REG, + .precious_reg = bcm2708_i2s_precious_reg, + .volatile_reg = bcm2708_i2s_volatile_reg, + .cache_type = REGCACHE_RBTREE, + .name = "i2s", + }, + { + .reg_bits = 32, + .reg_stride = 4, + .val_bits = 32, + .max_register = BCM2708_CLK_PCMDIV_REG, + .volatile_reg = bcm2708_clk_volatile_reg, + .cache_type = REGCACHE_RBTREE, + .name = "clk", + }, +}; + +static const struct snd_soc_component_driver bcm2708_i2s_component = { + .name = "bcm2708-i2s-comp", +}; + +static struct snd_pcm_hardware bcm2708_pcm_hardware = { + .info = SNDRV_PCM_INFO_INTERLEAVED | + SNDRV_PCM_INFO_JOINT_DUPLEX, + .formats = SNDRV_PCM_FMTBIT_S16_LE | + SNDRV_PCM_FMTBIT_S24_LE | + SNDRV_PCM_FMTBIT_S32_LE, + .period_bytes_min = 32, + .period_bytes_max = 64 * PAGE_SIZE, + .periods_min = 2, + .periods_max = 255, + .buffer_bytes_max = 128 * PAGE_SIZE, +}; + +static const struct snd_dmaengine_pcm_config bcm2708_dmaengine_pcm_config = { + .prepare_slave_config = snd_dmaengine_pcm_prepare_slave_config, + .pcm_hardware = &bcm2708_pcm_hardware, + .prealloc_buffer_size = 256 * PAGE_SIZE, +}; + + +static int bcm2708_i2s_probe(struct platform_device *pdev) +{ + struct bcm2708_i2s_dev *dev; + int i; + int ret; + struct regmap *regmap[2]; + struct resource *mem[2]; + + if (of_property_read_bool(pdev->dev.of_node, "brcm,enable-mmap")) + bcm2708_pcm_hardware.info |= + SNDRV_PCM_INFO_MMAP | + SNDRV_PCM_INFO_MMAP_VALID; + + /* Request both ioareas */ + for (i = 0; i <= 1; i++) { + void __iomem *base; + + mem[i] = platform_get_resource(pdev, IORESOURCE_MEM, i); + base = devm_ioremap_resource(&pdev->dev, mem[i]); + if (IS_ERR(base)) + return PTR_ERR(base); + + regmap[i] = devm_regmap_init_mmio(&pdev->dev, base, + &bcm2708_regmap_config[i]); + if (IS_ERR(regmap[i])) { + dev_err(&pdev->dev, "I2S probe: regmap init failed\n"); + return PTR_ERR(regmap[i]); + } + } + + dev = devm_kzalloc(&pdev->dev, sizeof(*dev), + GFP_KERNEL); + if (IS_ERR(dev)) + return PTR_ERR(dev); + + dev->i2s_regmap = regmap[0]; + dev->clk_regmap = regmap[1]; + + /* Set the DMA address */ + dev->dma_data[SNDRV_PCM_STREAM_PLAYBACK].addr = + (dma_addr_t)BCM2708_I2S_FIFO_PHYSICAL_ADDR; + + dev->dma_data[SNDRV_PCM_STREAM_CAPTURE].addr = + (dma_addr_t)BCM2708_I2S_FIFO_PHYSICAL_ADDR; + + /* Set the DREQ */ + dev->dma_data[SNDRV_PCM_STREAM_PLAYBACK].slave_id = + BCM2708_DMA_DREQ_PCM_TX; + dev->dma_data[SNDRV_PCM_STREAM_CAPTURE].slave_id = + BCM2708_DMA_DREQ_PCM_RX; + + /* Set the bus width */ + dev->dma_data[SNDRV_PCM_STREAM_PLAYBACK].addr_width = + DMA_SLAVE_BUSWIDTH_4_BYTES; + dev->dma_data[SNDRV_PCM_STREAM_CAPTURE].addr_width = + DMA_SLAVE_BUSWIDTH_4_BYTES; + + /* Set burst */ + dev->dma_data[SNDRV_PCM_STREAM_PLAYBACK].maxburst = 2; + dev->dma_data[SNDRV_PCM_STREAM_CAPTURE].maxburst = 2; + + /* BCLK ratio - use default */ + dev->bclk_ratio = 0; + + /* Store the pdev */ + dev->dev = &pdev->dev; + dev_set_drvdata(&pdev->dev, dev); + + ret = snd_soc_register_component(&pdev->dev, + &bcm2708_i2s_component, &bcm2708_i2s_dai, 1); + + if (ret) { + dev_err(&pdev->dev, "Could not register DAI: %d\n", ret); + ret = -ENOMEM; + return ret; + } + + ret = snd_dmaengine_pcm_register(&pdev->dev, + &bcm2708_dmaengine_pcm_config, + SND_DMAENGINE_PCM_FLAG_COMPAT); + if (ret) { + dev_err(&pdev->dev, "Could not register PCM: %d\n", ret); + snd_soc_unregister_component(&pdev->dev); + return ret; + } + + return 0; +} + +static int bcm2708_i2s_remove(struct platform_device *pdev) +{ + snd_dmaengine_pcm_unregister(&pdev->dev); + snd_soc_unregister_component(&pdev->dev); + return 0; +} + +static const struct of_device_id bcm2708_i2s_of_match[] = { + { .compatible = "brcm,bcm2708-i2s", }, + {}, +}; +MODULE_DEVICE_TABLE(of, bcm2708_i2s_of_match); + +static struct platform_driver bcm2708_i2s_driver = { + .probe = bcm2708_i2s_probe, + .remove = bcm2708_i2s_remove, + .driver = { + .name = "bcm2708-i2s", + .owner = THIS_MODULE, + .of_match_table = bcm2708_i2s_of_match, + }, +}; + +module_platform_driver(bcm2708_i2s_driver); + +MODULE_ALIAS("platform:bcm2708-i2s"); +MODULE_DESCRIPTION("BCM2708 I2S interface"); +MODULE_AUTHOR("Florian Meier "); +MODULE_LICENSE("GPL v2"); --- linux-raspi2-4.2.0.orig/sound/soc/bcm/bcm2708-i2s.h +++ linux-raspi2-4.2.0/sound/soc/bcm/bcm2708-i2s.h @@ -0,0 +1,35 @@ +/* + * I2S configuration for sound cards. + * + * Copyright (c) 2014 Daniel Matuschek + * + * 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 + */ + +#ifndef BCM2708_I2S_H +#define BCM2708_I2S_H + +/* I2S pin assignment */ +#define BCM2708_I2S_GPIO_AUTO 0 +#define BCM2708_I2S_GPIO_PIN18 1 +#define BCM2708_I2S_GPIO_PIN28 2 + +/* Alt mode to enable I2S */ +#define BCM2708_I2S_GPIO_PIN18_ALT 0 +#define BCM2708_I2S_GPIO_PIN28_ALT 2 + +extern void bcm2708_i2s_set_gpio(int gpio); + +#endif --- linux-raspi2-4.2.0.orig/sound/soc/bcm/bcm2835-i2s.c +++ linux-raspi2-4.2.0/sound/soc/bcm/bcm2835-i2s.c @@ -861,6 +861,7 @@ { .compatible = "brcm,bcm2835-i2s", }, {}, }; +MODULE_DEVICE_TABLE(of, bcm2835_i2s_of_match); static struct platform_driver bcm2835_i2s_driver = { .probe = bcm2835_i2s_probe, --- linux-raspi2-4.2.0.orig/sound/soc/bcm/hifiberry_amp.c +++ linux-raspi2-4.2.0/sound/soc/bcm/hifiberry_amp.c @@ -0,0 +1,127 @@ +/* + * ASoC Driver for HifiBerry AMP + * + * Author: Sebastian Eickhoff + * Copyright 2014 + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * version 2 as published by the Free Software Foundation. + * + * 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 + +static int snd_rpi_hifiberry_amp_init(struct snd_soc_pcm_runtime *rtd) +{ + // ToDo: init of the dsp-registers. + return 0; +} + +static int snd_rpi_hifiberry_amp_hw_params( struct snd_pcm_substream *substream, + struct snd_pcm_hw_params *params ) +{ + struct snd_soc_pcm_runtime *rtd = substream->private_data; + struct snd_soc_dai *cpu_dai = rtd->cpu_dai; + + return snd_soc_dai_set_bclk_ratio(cpu_dai, 64); +} + +static struct snd_soc_ops snd_rpi_hifiberry_amp_ops = { + .hw_params = snd_rpi_hifiberry_amp_hw_params, +}; + +static struct snd_soc_dai_link snd_rpi_hifiberry_amp_dai[] = { + { + .name = "HifiBerry AMP", + .stream_name = "HifiBerry AMP HiFi", + .cpu_dai_name = "bcm2708-i2s.0", + .codec_dai_name = "tas5713-hifi", + .platform_name = "bcm2708-i2s.0", + .codec_name = "tas5713.1-001b", + .dai_fmt = SND_SOC_DAIFMT_I2S | + SND_SOC_DAIFMT_NB_NF | + SND_SOC_DAIFMT_CBS_CFS, + .ops = &snd_rpi_hifiberry_amp_ops, + .init = snd_rpi_hifiberry_amp_init, + }, +}; + + +static struct snd_soc_card snd_rpi_hifiberry_amp = { + .name = "snd_rpi_hifiberry_amp", + .dai_link = snd_rpi_hifiberry_amp_dai, + .num_links = ARRAY_SIZE(snd_rpi_hifiberry_amp_dai), +}; + +static const struct of_device_id snd_rpi_hifiberry_amp_of_match[] = { + { .compatible = "hifiberry,hifiberry-amp", }, + {}, +}; +MODULE_DEVICE_TABLE(of, snd_rpi_hifiberry_amp_of_match); + + +static int snd_rpi_hifiberry_amp_probe(struct platform_device *pdev) +{ + int ret = 0; + + snd_rpi_hifiberry_amp.dev = &pdev->dev; + + if (pdev->dev.of_node) { + struct device_node *i2s_node; + struct snd_soc_dai_link *dai = &snd_rpi_hifiberry_amp_dai[0]; + i2s_node = of_parse_phandle(pdev->dev.of_node, + "i2s-controller", 0); + + if (i2s_node) { + dai->cpu_dai_name = NULL; + dai->cpu_of_node = i2s_node; + dai->platform_name = NULL; + dai->platform_of_node = i2s_node; + } + } + + ret = snd_soc_register_card(&snd_rpi_hifiberry_amp); + + if (ret != 0) { + dev_err(&pdev->dev, "snd_soc_register_card() failed: %d\n", ret); + } + + return ret; +} + + +static int snd_rpi_hifiberry_amp_remove(struct platform_device *pdev) +{ + return snd_soc_unregister_card(&snd_rpi_hifiberry_amp); +} + + +static struct platform_driver snd_rpi_hifiberry_amp_driver = { + .driver = { + .name = "snd-hifiberry-amp", + .owner = THIS_MODULE, + .of_match_table = snd_rpi_hifiberry_amp_of_match, + }, + .probe = snd_rpi_hifiberry_amp_probe, + .remove = snd_rpi_hifiberry_amp_remove, +}; + + +module_platform_driver(snd_rpi_hifiberry_amp_driver); + + +MODULE_AUTHOR("Sebastian Eickhoff "); +MODULE_DESCRIPTION("ASoC driver for HiFiBerry-AMP"); +MODULE_LICENSE("GPL v2"); --- linux-raspi2-4.2.0.orig/sound/soc/bcm/hifiberry_dac.c +++ linux-raspi2-4.2.0/sound/soc/bcm/hifiberry_dac.c @@ -0,0 +1,122 @@ +/* + * ASoC Driver for HifiBerry DAC + * + * Author: Florian Meier + * Copyright 2013 + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * version 2 as published by the Free Software Foundation. + * + * 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 + +static int snd_rpi_hifiberry_dac_init(struct snd_soc_pcm_runtime *rtd) +{ + return 0; +} + +static int snd_rpi_hifiberry_dac_hw_params(struct snd_pcm_substream *substream, + struct snd_pcm_hw_params *params) +{ + struct snd_soc_pcm_runtime *rtd = substream->private_data; + struct snd_soc_dai *cpu_dai = rtd->cpu_dai; + + unsigned int sample_bits = + snd_pcm_format_physical_width(params_format(params)); + + return snd_soc_dai_set_bclk_ratio(cpu_dai, sample_bits * 2); +} + +/* machine stream operations */ +static struct snd_soc_ops snd_rpi_hifiberry_dac_ops = { + .hw_params = snd_rpi_hifiberry_dac_hw_params, +}; + +static struct snd_soc_dai_link snd_rpi_hifiberry_dac_dai[] = { +{ + .name = "HifiBerry DAC", + .stream_name = "HifiBerry DAC HiFi", + .cpu_dai_name = "bcm2708-i2s.0", + .codec_dai_name = "pcm5102a-hifi", + .platform_name = "bcm2708-i2s.0", + .codec_name = "pcm5102a-codec", + .dai_fmt = SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_NB_NF | + SND_SOC_DAIFMT_CBS_CFS, + .ops = &snd_rpi_hifiberry_dac_ops, + .init = snd_rpi_hifiberry_dac_init, +}, +}; + +/* audio machine driver */ +static struct snd_soc_card snd_rpi_hifiberry_dac = { + .name = "snd_rpi_hifiberry_dac", + .dai_link = snd_rpi_hifiberry_dac_dai, + .num_links = ARRAY_SIZE(snd_rpi_hifiberry_dac_dai), +}; + +static int snd_rpi_hifiberry_dac_probe(struct platform_device *pdev) +{ + int ret = 0; + + snd_rpi_hifiberry_dac.dev = &pdev->dev; + + if (pdev->dev.of_node) { + struct device_node *i2s_node; + struct snd_soc_dai_link *dai = &snd_rpi_hifiberry_dac_dai[0]; + i2s_node = of_parse_phandle(pdev->dev.of_node, + "i2s-controller", 0); + + if (i2s_node) { + dai->cpu_dai_name = NULL; + dai->cpu_of_node = i2s_node; + dai->platform_name = NULL; + dai->platform_of_node = i2s_node; + } + } + + ret = snd_soc_register_card(&snd_rpi_hifiberry_dac); + if (ret) + dev_err(&pdev->dev, "snd_soc_register_card() failed: %d\n", ret); + + return ret; +} + +static int snd_rpi_hifiberry_dac_remove(struct platform_device *pdev) +{ + return snd_soc_unregister_card(&snd_rpi_hifiberry_dac); +} + +static const struct of_device_id snd_rpi_hifiberry_dac_of_match[] = { + { .compatible = "hifiberry,hifiberry-dac", }, + {}, +}; +MODULE_DEVICE_TABLE(of, snd_rpi_hifiberry_dac_of_match); + +static struct platform_driver snd_rpi_hifiberry_dac_driver = { + .driver = { + .name = "snd-hifiberry-dac", + .owner = THIS_MODULE, + .of_match_table = snd_rpi_hifiberry_dac_of_match, + }, + .probe = snd_rpi_hifiberry_dac_probe, + .remove = snd_rpi_hifiberry_dac_remove, +}; + +module_platform_driver(snd_rpi_hifiberry_dac_driver); + +MODULE_AUTHOR("Florian Meier "); +MODULE_DESCRIPTION("ASoC Driver for HifiBerry DAC"); +MODULE_LICENSE("GPL v2"); --- linux-raspi2-4.2.0.orig/sound/soc/bcm/hifiberry_dacplus.c +++ linux-raspi2-4.2.0/sound/soc/bcm/hifiberry_dacplus.c @@ -0,0 +1,337 @@ +/* + * ASoC Driver for HiFiBerry DAC+ / DAC Pro + * + * Author: Daniel Matuschek, Stuart MacLean + * Copyright 2014-2015 + * based on code by Florian Meier + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * version 2 as published by the Free Software Foundation. + * + * 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 + +#include +#include +#include +#include +#include + +#include "../codecs/pcm512x.h" + +#define HIFIBERRY_DACPRO_NOCLOCK 0 +#define HIFIBERRY_DACPRO_CLK44EN 1 +#define HIFIBERRY_DACPRO_CLK48EN 2 + +struct pcm512x_priv { + struct regmap *regmap; + struct clk *sclk; +}; + +/* Clock rate of CLK44EN attached to GPIO6 pin */ +#define CLK_44EN_RATE 22579200UL +/* Clock rate of CLK48EN attached to GPIO3 pin */ +#define CLK_48EN_RATE 24576000UL + +static bool snd_rpi_hifiberry_is_dacpro; + +static void snd_rpi_hifiberry_dacplus_select_clk(struct snd_soc_codec *codec, + int clk_id) +{ + switch (clk_id) { + case HIFIBERRY_DACPRO_NOCLOCK: + snd_soc_update_bits(codec, PCM512x_GPIO_CONTROL_1, 0x24, 0x00); + break; + case HIFIBERRY_DACPRO_CLK44EN: + snd_soc_update_bits(codec, PCM512x_GPIO_CONTROL_1, 0x24, 0x20); + break; + case HIFIBERRY_DACPRO_CLK48EN: + snd_soc_update_bits(codec, PCM512x_GPIO_CONTROL_1, 0x24, 0x04); + break; + } +} + +static void snd_rpi_hifiberry_dacplus_clk_gpio(struct snd_soc_codec *codec) +{ + snd_soc_update_bits(codec, PCM512x_GPIO_EN, 0x24, 0x24); + snd_soc_update_bits(codec, PCM512x_GPIO_OUTPUT_3, 0x0f, 0x02); + snd_soc_update_bits(codec, PCM512x_GPIO_OUTPUT_6, 0x0f, 0x02); +} + +static bool snd_rpi_hifiberry_dacplus_is_sclk(struct snd_soc_codec *codec) +{ + int sck; + + sck = snd_soc_read(codec, PCM512x_RATE_DET_4); + return (!(sck & 0x40)); +} + +static bool snd_rpi_hifiberry_dacplus_is_sclk_sleep( + struct snd_soc_codec *codec) +{ + msleep(2); + return snd_rpi_hifiberry_dacplus_is_sclk(codec); +} + +static bool snd_rpi_hifiberry_dacplus_is_pro_card(struct snd_soc_codec *codec) +{ + bool isClk44EN, isClk48En, isNoClk; + + snd_rpi_hifiberry_dacplus_clk_gpio(codec); + + snd_rpi_hifiberry_dacplus_select_clk(codec, HIFIBERRY_DACPRO_CLK44EN); + isClk44EN = snd_rpi_hifiberry_dacplus_is_sclk_sleep(codec); + + snd_rpi_hifiberry_dacplus_select_clk(codec, HIFIBERRY_DACPRO_NOCLOCK); + isNoClk = snd_rpi_hifiberry_dacplus_is_sclk_sleep(codec); + + snd_rpi_hifiberry_dacplus_select_clk(codec, HIFIBERRY_DACPRO_CLK48EN); + isClk48En = snd_rpi_hifiberry_dacplus_is_sclk_sleep(codec); + + return (isClk44EN && isClk48En && !isNoClk); +} + +static int snd_rpi_hifiberry_dacplus_clk_for_rate(int sample_rate) +{ + int type; + + switch (sample_rate) { + case 11025: + case 22050: + case 44100: + case 88200: + case 176400: + type = HIFIBERRY_DACPRO_CLK44EN; + break; + default: + type = HIFIBERRY_DACPRO_CLK48EN; + break; + } + return type; +} + +static void snd_rpi_hifiberry_dacplus_set_sclk(struct snd_soc_codec *codec, + int sample_rate) +{ + struct pcm512x_priv *pcm512x = snd_soc_codec_get_drvdata(codec); + + if (!IS_ERR(pcm512x->sclk)) { + int ctype; + + ctype = snd_rpi_hifiberry_dacplus_clk_for_rate(sample_rate); + clk_set_rate(pcm512x->sclk, (ctype == HIFIBERRY_DACPRO_CLK44EN) + ? CLK_44EN_RATE : CLK_48EN_RATE); + snd_rpi_hifiberry_dacplus_select_clk(codec, ctype); + } +} + +static int snd_rpi_hifiberry_dacplus_init(struct snd_soc_pcm_runtime *rtd) +{ + struct snd_soc_codec *codec = rtd->codec; + struct pcm512x_priv *priv; + + snd_rpi_hifiberry_is_dacpro + = snd_rpi_hifiberry_dacplus_is_pro_card(codec); + + if (snd_rpi_hifiberry_is_dacpro) { + struct snd_soc_dai_link *dai = rtd->dai_link; + + dai->name = "HiFiBerry DAC+ Pro"; + dai->stream_name = "HiFiBerry DAC+ Pro HiFi"; + dai->dai_fmt = SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_NB_NF + | SND_SOC_DAIFMT_CBM_CFM; + + snd_soc_update_bits(codec, PCM512x_BCLK_LRCLK_CFG, 0x31, 0x11); + snd_soc_update_bits(codec, PCM512x_MASTER_MODE, 0x03, 0x03); + snd_soc_update_bits(codec, PCM512x_MASTER_CLKDIV_2, 0x7f, 63); + } else { + priv = snd_soc_codec_get_drvdata(codec); + priv->sclk = ERR_PTR(-ENOENT); + } + + snd_soc_update_bits(codec, PCM512x_GPIO_EN, 0x08, 0x08); + snd_soc_update_bits(codec, PCM512x_GPIO_OUTPUT_4, 0x0f, 0x02); + snd_soc_update_bits(codec, PCM512x_GPIO_CONTROL_1, 0x08, 0x08); + + return 0; +} + +static int snd_rpi_hifiberry_dacplus_update_rate_den( + struct snd_pcm_substream *substream, struct snd_pcm_hw_params *params) +{ + struct snd_soc_pcm_runtime *rtd = substream->private_data; + struct snd_soc_codec *codec = rtd->codec; + struct pcm512x_priv *pcm512x = snd_soc_codec_get_drvdata(codec); + struct snd_ratnum *rats_no_pll; + unsigned int num = 0, den = 0; + int err; + + rats_no_pll = devm_kzalloc(rtd->dev, sizeof(*rats_no_pll), GFP_KERNEL); + if (!rats_no_pll) + return -ENOMEM; + + rats_no_pll->num = clk_get_rate(pcm512x->sclk) / 64; + rats_no_pll->den_min = 1; + rats_no_pll->den_max = 128; + rats_no_pll->den_step = 1; + + err = snd_interval_ratnum(hw_param_interval(params, + SNDRV_PCM_HW_PARAM_RATE), 1, rats_no_pll, &num, &den); + if (err >= 0 && den) { + params->rate_num = num; + params->rate_den = den; + } + + devm_kfree(rtd->dev, rats_no_pll); + return 0; +} + +static int snd_rpi_hifiberry_dacplus_set_bclk_ratio_pro( + struct snd_soc_dai *cpu_dai, struct snd_pcm_hw_params *params) +{ + int bratio = snd_pcm_format_physical_width(params_format(params)) + * params_channels(params); + return snd_soc_dai_set_bclk_ratio(cpu_dai, bratio); +} + +static int snd_rpi_hifiberry_dacplus_hw_params( + struct snd_pcm_substream *substream, struct snd_pcm_hw_params *params) +{ + int ret; + struct snd_soc_pcm_runtime *rtd = substream->private_data; + struct snd_soc_dai *cpu_dai = rtd->cpu_dai; + + if (snd_rpi_hifiberry_is_dacpro) { + struct snd_soc_codec *codec = rtd->codec; + + snd_rpi_hifiberry_dacplus_set_sclk(codec, + params_rate(params)); + + ret = snd_rpi_hifiberry_dacplus_set_bclk_ratio_pro(cpu_dai, + params); + if (!ret) + ret = snd_rpi_hifiberry_dacplus_update_rate_den( + substream, params); + } else { + ret = snd_soc_dai_set_bclk_ratio(cpu_dai, 64); + } + return ret; +} + +static int snd_rpi_hifiberry_dacplus_startup( + struct snd_pcm_substream *substream) +{ + struct snd_soc_pcm_runtime *rtd = substream->private_data; + struct snd_soc_codec *codec = rtd->codec; + + snd_soc_update_bits(codec, PCM512x_GPIO_CONTROL_1, 0x08, 0x08); + return 0; +} + +static void snd_rpi_hifiberry_dacplus_shutdown( + struct snd_pcm_substream *substream) +{ + struct snd_soc_pcm_runtime *rtd = substream->private_data; + struct snd_soc_codec *codec = rtd->codec; + + snd_soc_update_bits(codec, PCM512x_GPIO_CONTROL_1, 0x08, 0x00); +} + +/* machine stream operations */ +static struct snd_soc_ops snd_rpi_hifiberry_dacplus_ops = { + .hw_params = snd_rpi_hifiberry_dacplus_hw_params, + .startup = snd_rpi_hifiberry_dacplus_startup, + .shutdown = snd_rpi_hifiberry_dacplus_shutdown, +}; + +static struct snd_soc_dai_link snd_rpi_hifiberry_dacplus_dai[] = { +{ + .name = "HiFiBerry DAC+", + .stream_name = "HiFiBerry DAC+ HiFi", + .cpu_dai_name = "bcm2708-i2s.0", + .codec_dai_name = "pcm512x-hifi", + .platform_name = "bcm2708-i2s.0", + .codec_name = "pcm512x.1-004d", + .dai_fmt = SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_NB_NF | + SND_SOC_DAIFMT_CBS_CFS, + .ops = &snd_rpi_hifiberry_dacplus_ops, + .init = snd_rpi_hifiberry_dacplus_init, +}, +}; + +/* audio machine driver */ +static struct snd_soc_card snd_rpi_hifiberry_dacplus = { + .name = "snd_rpi_hifiberry_dacplus", + .dai_link = snd_rpi_hifiberry_dacplus_dai, + .num_links = ARRAY_SIZE(snd_rpi_hifiberry_dacplus_dai), +}; + +static int snd_rpi_hifiberry_dacplus_probe(struct platform_device *pdev) +{ + int ret = 0; + + snd_rpi_hifiberry_dacplus.dev = &pdev->dev; + if (pdev->dev.of_node) { + struct device_node *i2s_node; + struct snd_soc_dai_link *dai; + + dai = &snd_rpi_hifiberry_dacplus_dai[0]; + i2s_node = of_parse_phandle(pdev->dev.of_node, + "i2s-controller", 0); + + if (i2s_node) { + dai->cpu_dai_name = NULL; + dai->cpu_of_node = i2s_node; + dai->platform_name = NULL; + dai->platform_of_node = i2s_node; + } + } + + ret = snd_soc_register_card(&snd_rpi_hifiberry_dacplus); + if (ret) + dev_err(&pdev->dev, + "snd_soc_register_card() failed: %d\n", ret); + + return ret; +} + +static int snd_rpi_hifiberry_dacplus_remove(struct platform_device *pdev) +{ + return snd_soc_unregister_card(&snd_rpi_hifiberry_dacplus); +} + +static const struct of_device_id snd_rpi_hifiberry_dacplus_of_match[] = { + { .compatible = "hifiberry,hifiberry-dacplus", }, + {}, +}; +MODULE_DEVICE_TABLE(of, snd_rpi_hifiberry_dacplus_of_match); + +static struct platform_driver snd_rpi_hifiberry_dacplus_driver = { + .driver = { + .name = "snd-rpi-hifiberry-dacplus", + .owner = THIS_MODULE, + .of_match_table = snd_rpi_hifiberry_dacplus_of_match, + }, + .probe = snd_rpi_hifiberry_dacplus_probe, + .remove = snd_rpi_hifiberry_dacplus_remove, +}; + +module_platform_driver(snd_rpi_hifiberry_dacplus_driver); + +MODULE_AUTHOR("Daniel Matuschek "); +MODULE_DESCRIPTION("ASoC Driver for HiFiBerry DAC+"); +MODULE_LICENSE("GPL v2"); --- linux-raspi2-4.2.0.orig/sound/soc/bcm/hifiberry_digi.c +++ linux-raspi2-4.2.0/sound/soc/bcm/hifiberry_digi.c @@ -0,0 +1,223 @@ +/* + * ASoC Driver for HifiBerry Digi + * + * Author: Daniel Matuschek + * based on the HifiBerry DAC driver by Florian Meier + * Copyright 2013 + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * version 2 as published by the Free Software Foundation. + * + * 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 "../codecs/wm8804.h" + +static short int auto_shutdown_output = 0; +module_param(auto_shutdown_output, short, S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP); +MODULE_PARM_DESC(auto_shutdown_output, "Shutdown SP/DIF output if playback is stopped"); + + +static int samplerate=44100; + +static int snd_rpi_hifiberry_digi_init(struct snd_soc_pcm_runtime *rtd) +{ + struct snd_soc_codec *codec = rtd->codec; + + /* enable TX output */ + snd_soc_update_bits(codec, WM8804_PWRDN, 0x4, 0x0); + + return 0; +} + +static int snd_rpi_hifiberry_digi_startup(struct snd_pcm_substream *substream) { + /* turn on digital output */ + struct snd_soc_pcm_runtime *rtd = substream->private_data; + struct snd_soc_codec *codec = rtd->codec; + snd_soc_update_bits(codec, WM8804_PWRDN, 0x3c, 0x00); + return 0; +} + +static void snd_rpi_hifiberry_digi_shutdown(struct snd_pcm_substream *substream) { + /* turn off output */ + if (auto_shutdown_output) { + /* turn off output */ + struct snd_soc_pcm_runtime *rtd = substream->private_data; + struct snd_soc_codec *codec = rtd->codec; + snd_soc_update_bits(codec, WM8804_PWRDN, 0x3c, 0x3c); + } +} + + +static int snd_rpi_hifiberry_digi_hw_params(struct snd_pcm_substream *substream, + struct snd_pcm_hw_params *params) +{ + struct snd_soc_pcm_runtime *rtd = substream->private_data; + struct snd_soc_dai *codec_dai = rtd->codec_dai; + struct snd_soc_codec *codec = rtd->codec; + struct snd_soc_dai *cpu_dai = rtd->cpu_dai; + + int sysclk = 27000000; /* This is fixed on this board */ + + long mclk_freq=0; + int mclk_div=1; + int sampling_freq=1; + + int ret; + + samplerate = params_rate(params); + + if (samplerate<=96000) { + mclk_freq=samplerate*256; + mclk_div=WM8804_MCLKDIV_256FS; + } else { + mclk_freq=samplerate*128; + mclk_div=WM8804_MCLKDIV_128FS; + } + + switch (samplerate) { + case 32000: + sampling_freq=0x03; + break; + case 44100: + sampling_freq=0x00; + break; + case 48000: + sampling_freq=0x02; + break; + case 88200: + sampling_freq=0x08; + break; + case 96000: + sampling_freq=0x0a; + break; + case 176400: + sampling_freq=0x0c; + break; + case 192000: + sampling_freq=0x0e; + break; + default: + dev_err(codec->dev, + "Failed to set WM8804 SYSCLK, unsupported samplerate %d\n", + samplerate); + } + + snd_soc_dai_set_clkdiv(codec_dai, WM8804_MCLK_DIV, mclk_div); + snd_soc_dai_set_pll(codec_dai, 0, 0, sysclk, mclk_freq); + + ret = snd_soc_dai_set_sysclk(codec_dai, WM8804_TX_CLKSRC_PLL, + sysclk, SND_SOC_CLOCK_OUT); + if (ret < 0) { + dev_err(codec->dev, + "Failed to set WM8804 SYSCLK: %d\n", ret); + return ret; + } + + /* Enable TX output */ + snd_soc_update_bits(codec, WM8804_PWRDN, 0x4, 0x0); + + /* Power on */ + snd_soc_update_bits(codec, WM8804_PWRDN, 0x9, 0); + + /* set sampling frequency status bits */ + snd_soc_update_bits(codec, WM8804_SPDTX4, 0x0f, sampling_freq); + + return snd_soc_dai_set_bclk_ratio(cpu_dai,64); +} + +/* machine stream operations */ +static struct snd_soc_ops snd_rpi_hifiberry_digi_ops = { + .hw_params = snd_rpi_hifiberry_digi_hw_params, + .startup = snd_rpi_hifiberry_digi_startup, + .shutdown = snd_rpi_hifiberry_digi_shutdown, +}; + +static struct snd_soc_dai_link snd_rpi_hifiberry_digi_dai[] = { +{ + .name = "HifiBerry Digi", + .stream_name = "HifiBerry Digi HiFi", + .cpu_dai_name = "bcm2708-i2s.0", + .codec_dai_name = "wm8804-spdif", + .platform_name = "bcm2708-i2s.0", + .codec_name = "wm8804.1-003b", + .dai_fmt = SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_NB_NF | + SND_SOC_DAIFMT_CBM_CFM, + .ops = &snd_rpi_hifiberry_digi_ops, + .init = snd_rpi_hifiberry_digi_init, +}, +}; + +/* audio machine driver */ +static struct snd_soc_card snd_rpi_hifiberry_digi = { + .name = "snd_rpi_hifiberry_digi", + .dai_link = snd_rpi_hifiberry_digi_dai, + .num_links = ARRAY_SIZE(snd_rpi_hifiberry_digi_dai), +}; + +static int snd_rpi_hifiberry_digi_probe(struct platform_device *pdev) +{ + int ret = 0; + + snd_rpi_hifiberry_digi.dev = &pdev->dev; + + if (pdev->dev.of_node) { + struct device_node *i2s_node; + struct snd_soc_dai_link *dai = &snd_rpi_hifiberry_digi_dai[0]; + i2s_node = of_parse_phandle(pdev->dev.of_node, + "i2s-controller", 0); + + if (i2s_node) { + dai->cpu_dai_name = NULL; + dai->cpu_of_node = i2s_node; + dai->platform_name = NULL; + dai->platform_of_node = i2s_node; + } + } + + ret = snd_soc_register_card(&snd_rpi_hifiberry_digi); + if (ret) + dev_err(&pdev->dev, "snd_soc_register_card() failed: %d\n", ret); + + return ret; +} + +static int snd_rpi_hifiberry_digi_remove(struct platform_device *pdev) +{ + return snd_soc_unregister_card(&snd_rpi_hifiberry_digi); +} + +static const struct of_device_id snd_rpi_hifiberry_digi_of_match[] = { + { .compatible = "hifiberry,hifiberry-digi", }, + {}, +}; +MODULE_DEVICE_TABLE(of, snd_rpi_hifiberry_digi_of_match); + +static struct platform_driver snd_rpi_hifiberry_digi_driver = { + .driver = { + .name = "snd-hifiberry-digi", + .owner = THIS_MODULE, + .of_match_table = snd_rpi_hifiberry_digi_of_match, + }, + .probe = snd_rpi_hifiberry_digi_probe, + .remove = snd_rpi_hifiberry_digi_remove, +}; + +module_platform_driver(snd_rpi_hifiberry_digi_driver); + +MODULE_AUTHOR("Daniel Matuschek "); +MODULE_DESCRIPTION("ASoC Driver for HifiBerry Digi"); +MODULE_LICENSE("GPL v2"); --- linux-raspi2-4.2.0.orig/sound/soc/bcm/iqaudio-dac.c +++ linux-raspi2-4.2.0/sound/soc/bcm/iqaudio-dac.c @@ -0,0 +1,133 @@ +/* + * ASoC Driver for IQaudIO DAC + * + * Author: Florian Meier + * Copyright 2013 + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * version 2 as published by the Free Software Foundation. + * + * 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 + +static int snd_rpi_iqaudio_dac_init(struct snd_soc_pcm_runtime *rtd) +{ + int ret; + struct snd_soc_card *card = rtd->card; + struct snd_soc_codec *codec = rtd->codec; + + ret = snd_soc_limit_volume(codec, "Digital Playback Volume", 207); + if (ret < 0) + dev_warn(card->dev, "Failed to set volume limit: %d\n", ret); + + return 0; +} + +static int snd_rpi_iqaudio_dac_hw_params(struct snd_pcm_substream *substream, + struct snd_pcm_hw_params *params) +{ + struct snd_soc_pcm_runtime *rtd = substream->private_data; +// NOT USED struct snd_soc_dai *codec_dai = rtd->codec_dai; +// NOT USED struct snd_soc_codec *codec = rtd->codec; + struct snd_soc_dai *cpu_dai = rtd->cpu_dai; + + unsigned int sample_bits = + snd_pcm_format_physical_width(params_format(params)); + + return snd_soc_dai_set_bclk_ratio(cpu_dai, sample_bits * 2); +} + +/* machine stream operations */ +static struct snd_soc_ops snd_rpi_iqaudio_dac_ops = { + .hw_params = snd_rpi_iqaudio_dac_hw_params, +}; + +static struct snd_soc_dai_link snd_rpi_iqaudio_dac_dai[] = { +{ + .name = "IQaudIO DAC", + .stream_name = "IQaudIO DAC HiFi", + .cpu_dai_name = "bcm2708-i2s.0", + .codec_dai_name = "pcm512x-hifi", + .platform_name = "bcm2708-i2s.0", + .codec_name = "pcm512x.1-004c", + .dai_fmt = SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_NB_NF | + SND_SOC_DAIFMT_CBS_CFS, + .ops = &snd_rpi_iqaudio_dac_ops, + .init = snd_rpi_iqaudio_dac_init, +}, +}; + +/* audio machine driver */ +static struct snd_soc_card snd_rpi_iqaudio_dac = { + .name = "IQaudIODAC", + .dai_link = snd_rpi_iqaudio_dac_dai, + .num_links = ARRAY_SIZE(snd_rpi_iqaudio_dac_dai), +}; + +static int snd_rpi_iqaudio_dac_probe(struct platform_device *pdev) +{ + int ret = 0; + + snd_rpi_iqaudio_dac.dev = &pdev->dev; + + if (pdev->dev.of_node) { + struct device_node *i2s_node; + struct snd_soc_dai_link *dai = &snd_rpi_iqaudio_dac_dai[0]; + i2s_node = of_parse_phandle(pdev->dev.of_node, + "i2s-controller", 0); + + if (i2s_node) { + dai->cpu_dai_name = NULL; + dai->cpu_of_node = i2s_node; + dai->platform_name = NULL; + dai->platform_of_node = i2s_node; + } + } + + ret = snd_soc_register_card(&snd_rpi_iqaudio_dac); + if (ret) + dev_err(&pdev->dev, + "snd_soc_register_card() failed: %d\n", ret); + + return ret; +} + +static int snd_rpi_iqaudio_dac_remove(struct platform_device *pdev) +{ + return snd_soc_unregister_card(&snd_rpi_iqaudio_dac); +} + +static const struct of_device_id iqaudio_of_match[] = { + { .compatible = "iqaudio,iqaudio-dac", }, + {}, +}; +MODULE_DEVICE_TABLE(of, iqaudio_of_match); + +static struct platform_driver snd_rpi_iqaudio_dac_driver = { + .driver = { + .name = "snd-rpi-iqaudio-dac", + .owner = THIS_MODULE, + .of_match_table = iqaudio_of_match, + }, + .probe = snd_rpi_iqaudio_dac_probe, + .remove = snd_rpi_iqaudio_dac_remove, +}; + +module_platform_driver(snd_rpi_iqaudio_dac_driver); + +MODULE_AUTHOR("Florian Meier "); +MODULE_DESCRIPTION("ASoC Driver for IQAudio DAC"); +MODULE_LICENSE("GPL v2"); --- linux-raspi2-4.2.0.orig/sound/soc/bcm/raspidac3.c +++ linux-raspi2-4.2.0/sound/soc/bcm/raspidac3.c @@ -0,0 +1,191 @@ +/* + * ASoC Driver for RaspiDAC v3 + * + * Author: Jan Grulich + * Copyright 2015 + * based on code by Daniel Matuschek + * based on code by Florian Meier + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * version 2 as published by the Free Software Foundation. + * + * 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 "../codecs/pcm512x.h" +#include "../codecs/tpa6130a2.h" + +/* sound card init */ +static int snd_rpi_raspidac3_init(struct snd_soc_pcm_runtime *rtd) +{ + int ret; + struct snd_soc_card *card = rtd->card; + struct snd_soc_codec *codec = rtd->codec; + snd_soc_update_bits(codec, PCM512x_GPIO_EN, 0x08, 0x08); + snd_soc_update_bits(codec, PCM512x_GPIO_OUTPUT_4, 0xf, 0x02); + snd_soc_update_bits(codec, PCM512x_GPIO_CONTROL_1, 0x08,0x00); + + ret = snd_soc_limit_volume(codec, "Digital Playback Volume", 207); + if (ret < 0) + dev_warn(card->dev, "Failed to set volume limit: %d\n", ret); + else { + struct snd_kcontrol *kctl; + + ret = tpa6130a2_add_controls(codec); + if (ret < 0) + dev_warn(card->dev, "Failed to add TPA6130A2 controls: %d\n", + ret); + ret = snd_soc_limit_volume(codec, + "TPA6130A2 Headphone Playback Volume", + 54); + if (ret < 0) + dev_warn(card->dev, "Failed to set TPA6130A2 volume limit: %d\n", + ret); + kctl = snd_soc_card_get_kcontrol(card, + "TPA6130A2 Headphone Playback Volume"); + if (kctl) { + strcpy(kctl->id.name, "Headphones Playback Volume"); + /* disable the volume dB scale so alsamixer works */ + kctl->vd[0].access = SNDRV_CTL_ELEM_ACCESS_READWRITE; + } + + kctl = snd_soc_card_get_kcontrol(card, + "TPA6130A2 Headphone Playback Switch"); + if (kctl) + strcpy(kctl->id.name, "Headphones Playback Switch"); + } + + return 0; +} + +/* set hw parameters */ +static int snd_rpi_raspidac3_hw_params(struct snd_pcm_substream *substream, + struct snd_pcm_hw_params *params) +{ + struct snd_soc_pcm_runtime *rtd = substream->private_data; + struct snd_soc_dai *cpu_dai = rtd->cpu_dai; + + unsigned int sample_bits = + snd_pcm_format_physical_width(params_format(params)); + + return snd_soc_dai_set_bclk_ratio(cpu_dai, sample_bits * 2); +} + +/* startup */ +static int snd_rpi_raspidac3_startup(struct snd_pcm_substream *substream) { + struct snd_soc_pcm_runtime *rtd = substream->private_data; + struct snd_soc_codec *codec = rtd->codec; + snd_soc_update_bits(codec, PCM512x_GPIO_CONTROL_1, 0x08,0x08); + tpa6130a2_stereo_enable(codec, 1); + return 0; +} + +/* shutdown */ +static void snd_rpi_raspidac3_shutdown(struct snd_pcm_substream *substream) { + struct snd_soc_pcm_runtime *rtd = substream->private_data; + struct snd_soc_codec *codec = rtd->codec; + snd_soc_update_bits(codec, PCM512x_GPIO_CONTROL_1, 0x08,0x00); + tpa6130a2_stereo_enable(codec, 0); +} + +/* machine stream operations */ +static struct snd_soc_ops snd_rpi_raspidac3_ops = { + .hw_params = snd_rpi_raspidac3_hw_params, + .startup = snd_rpi_raspidac3_startup, + .shutdown = snd_rpi_raspidac3_shutdown, +}; + +/* interface setup */ +static struct snd_soc_dai_link snd_rpi_raspidac3_dai[] = { +{ + .name = "RaspiDAC Rev.3x", + .stream_name = "RaspiDAC HiFi", + .cpu_dai_name = "bcm2708-i2s.0", + .codec_dai_name = "pcm512x-hifi", + .platform_name = "bcm2708-i2s.0", + .codec_name = "pcm512x.1-004c", + .dai_fmt = SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_NB_NF | + SND_SOC_DAIFMT_CBS_CFS, + .ops = &snd_rpi_raspidac3_ops, + .init = snd_rpi_raspidac3_init, +}, +}; + +/* audio machine driver */ +static struct snd_soc_card snd_rpi_raspidac3 = { + .name = "RaspiDAC Rev.3x HiFi Audio Card", + .dai_link = snd_rpi_raspidac3_dai, + .num_links = ARRAY_SIZE(snd_rpi_raspidac3_dai), +}; + +/* sound card test */ +static int snd_rpi_raspidac3_probe(struct platform_device *pdev) +{ + int ret = 0; + + snd_rpi_raspidac3.dev = &pdev->dev; + + if (pdev->dev.of_node) { + struct device_node *i2s_node; + struct snd_soc_dai_link *dai = &snd_rpi_raspidac3_dai[0]; + i2s_node = of_parse_phandle(pdev->dev.of_node, + "i2s-controller", 0); + + if (i2s_node) { + dai->cpu_dai_name = NULL; + dai->cpu_of_node = i2s_node; + dai->platform_name = NULL; + dai->platform_of_node = i2s_node; + } + } + + ret = snd_soc_register_card(&snd_rpi_raspidac3); + if (ret) + dev_err(&pdev->dev, + "snd_soc_register_card() failed: %d\n", ret); + + return ret; +} + +/* sound card disconnect */ +static int snd_rpi_raspidac3_remove(struct platform_device *pdev) +{ + return snd_soc_unregister_card(&snd_rpi_raspidac3); +} + +static const struct of_device_id raspidac3_of_match[] = { + { .compatible = "jg,raspidacv3", }, + {}, +}; +MODULE_DEVICE_TABLE(of, raspidac3_of_match); + +/* sound card platform driver */ +static struct platform_driver snd_rpi_raspidac3_driver = { + .driver = { + .name = "snd-rpi-raspidac3", + .owner = THIS_MODULE, + .of_match_table = raspidac3_of_match, + }, + .probe = snd_rpi_raspidac3_probe, + .remove = snd_rpi_raspidac3_remove, +}; + +module_platform_driver(snd_rpi_raspidac3_driver); + +MODULE_AUTHOR("Jan Grulich "); +MODULE_DESCRIPTION("ASoC Driver for RaspiDAC Rev.3x"); +MODULE_LICENSE("GPL v2"); --- linux-raspi2-4.2.0.orig/sound/soc/bcm/rpi-dac.c +++ linux-raspi2-4.2.0/sound/soc/bcm/rpi-dac.c @@ -0,0 +1,118 @@ +/* + * ASoC Driver for RPi-DAC. + * + * Author: Florian Meier + * Copyright 2013 + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * version 2 as published by the Free Software Foundation. + * + * 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 + +static int snd_rpi_rpi_dac_init(struct snd_soc_pcm_runtime *rtd) +{ + return 0; +} + +static int snd_rpi_rpi_dac_hw_params(struct snd_pcm_substream *substream, + struct snd_pcm_hw_params *params) +{ + struct snd_soc_pcm_runtime *rtd = substream->private_data; + struct snd_soc_dai *cpu_dai = rtd->cpu_dai; + + return snd_soc_dai_set_bclk_ratio(cpu_dai, 32*2); +} + +/* machine stream operations */ +static struct snd_soc_ops snd_rpi_rpi_dac_ops = { + .hw_params = snd_rpi_rpi_dac_hw_params, +}; + +static struct snd_soc_dai_link snd_rpi_rpi_dac_dai[] = { +{ + .name = "RPi-DAC", + .stream_name = "RPi-DAC HiFi", + .cpu_dai_name = "bcm2708-i2s.0", + .codec_dai_name = "pcm1794a-hifi", + .platform_name = "bcm2708-i2s.0", + .codec_name = "pcm1794a-codec", + .dai_fmt = SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_NB_NF | + SND_SOC_DAIFMT_CBS_CFS, + .ops = &snd_rpi_rpi_dac_ops, + .init = snd_rpi_rpi_dac_init, +}, +}; + +/* audio machine driver */ +static struct snd_soc_card snd_rpi_rpi_dac = { + .name = "snd_rpi_rpi_dac", + .dai_link = snd_rpi_rpi_dac_dai, + .num_links = ARRAY_SIZE(snd_rpi_rpi_dac_dai), +}; + +static int snd_rpi_rpi_dac_probe(struct platform_device *pdev) +{ + int ret = 0; + + snd_rpi_rpi_dac.dev = &pdev->dev; + + if (pdev->dev.of_node) { + struct device_node *i2s_node; + struct snd_soc_dai_link *dai = &snd_rpi_rpi_dac_dai[0]; + i2s_node = of_parse_phandle(pdev->dev.of_node, "i2s-controller", 0); + + if (i2s_node) { + dai->cpu_dai_name = NULL; + dai->cpu_of_node = i2s_node; + dai->platform_name = NULL; + dai->platform_of_node = i2s_node; + } + } + + ret = snd_soc_register_card(&snd_rpi_rpi_dac); + if (ret) + dev_err(&pdev->dev, "snd_soc_register_card() failed: %d\n", ret); + + return ret; +} + +static int snd_rpi_rpi_dac_remove(struct platform_device *pdev) +{ + return snd_soc_unregister_card(&snd_rpi_rpi_dac); +} + +static const struct of_device_id snd_rpi_rpi_dac_of_match[] = { + { .compatible = "rpi,rpi-dac", }, + {}, +}; +MODULE_DEVICE_TABLE(of, snd_rpi_rpi_dac_of_match); + +static struct platform_driver snd_rpi_rpi_dac_driver = { + .driver = { + .name = "snd-rpi-dac", + .owner = THIS_MODULE, + .of_match_table = snd_rpi_rpi_dac_of_match, + }, + .probe = snd_rpi_rpi_dac_probe, + .remove = snd_rpi_rpi_dac_remove, +}; + +module_platform_driver(snd_rpi_rpi_dac_driver); + +MODULE_AUTHOR("Florian Meier "); +MODULE_DESCRIPTION("ASoC Driver for RPi-DAC"); +MODULE_LICENSE("GPL v2"); --- linux-raspi2-4.2.0.orig/sound/soc/bcm/rpi-proto.c +++ linux-raspi2-4.2.0/sound/soc/bcm/rpi-proto.c @@ -0,0 +1,153 @@ +/* + * ASoC driver for PROTO AudioCODEC (with a WM8731) + * connected to a Raspberry Pi + * + * Author: Florian Meier, + * Copyright 2013 + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + */ + +#include +#include + +#include +#include +#include +#include + +#include "../codecs/wm8731.h" + +static const unsigned int wm8731_rates_12288000[] = { + 8000, 32000, 48000, 96000, +}; + +static struct snd_pcm_hw_constraint_list wm8731_constraints_12288000 = { + .list = wm8731_rates_12288000, + .count = ARRAY_SIZE(wm8731_rates_12288000), +}; + +static int snd_rpi_proto_startup(struct snd_pcm_substream *substream) +{ + /* Setup constraints, because there is a 12.288 MHz XTAL on the board */ + snd_pcm_hw_constraint_list(substream->runtime, 0, + SNDRV_PCM_HW_PARAM_RATE, + &wm8731_constraints_12288000); + return 0; +} + +static int snd_rpi_proto_hw_params(struct snd_pcm_substream *substream, + struct snd_pcm_hw_params *params) +{ + struct snd_soc_pcm_runtime *rtd = substream->private_data; + struct snd_soc_codec *codec = rtd->codec; + struct snd_soc_dai *codec_dai = rtd->codec_dai; + struct snd_soc_dai *cpu_dai = rtd->cpu_dai; + int sysclk = 12288000; /* This is fixed on this board */ + + /* Set proto bclk */ + int ret = snd_soc_dai_set_bclk_ratio(cpu_dai,32*2); + if (ret < 0){ + dev_err(codec->dev, + "Failed to set BCLK ratio %d\n", ret); + return ret; + } + + /* Set proto sysclk */ + ret = snd_soc_dai_set_sysclk(codec_dai, WM8731_SYSCLK_XTAL, + sysclk, SND_SOC_CLOCK_IN); + if (ret < 0) { + dev_err(codec->dev, + "Failed to set WM8731 SYSCLK: %d\n", ret); + return ret; + } + + return 0; +} + +/* machine stream operations */ +static struct snd_soc_ops snd_rpi_proto_ops = { + .startup = snd_rpi_proto_startup, + .hw_params = snd_rpi_proto_hw_params, +}; + +static struct snd_soc_dai_link snd_rpi_proto_dai[] = { +{ + .name = "WM8731", + .stream_name = "WM8731 HiFi", + .cpu_dai_name = "bcm2708-i2s.0", + .codec_dai_name = "wm8731-hifi", + .platform_name = "bcm2708-i2s.0", + .codec_name = "wm8731.1-001a", + .dai_fmt = SND_SOC_DAIFMT_I2S + | SND_SOC_DAIFMT_NB_NF + | SND_SOC_DAIFMT_CBM_CFM, + .ops = &snd_rpi_proto_ops, +}, +}; + +/* audio machine driver */ +static struct snd_soc_card snd_rpi_proto = { + .name = "snd_rpi_proto", + .dai_link = snd_rpi_proto_dai, + .num_links = ARRAY_SIZE(snd_rpi_proto_dai), +}; + +static int snd_rpi_proto_probe(struct platform_device *pdev) +{ + int ret = 0; + + snd_rpi_proto.dev = &pdev->dev; + + if (pdev->dev.of_node) { + struct device_node *i2s_node; + struct snd_soc_dai_link *dai = &snd_rpi_proto_dai[0]; + i2s_node = of_parse_phandle(pdev->dev.of_node, + "i2s-controller", 0); + + if (i2s_node) { + dai->cpu_dai_name = NULL; + dai->cpu_of_node = i2s_node; + dai->platform_name = NULL; + dai->platform_of_node = i2s_node; + } + } + + ret = snd_soc_register_card(&snd_rpi_proto); + if (ret) { + dev_err(&pdev->dev, + "snd_soc_register_card() failed: %d\n", ret); + } + + return ret; +} + + +static int snd_rpi_proto_remove(struct platform_device *pdev) +{ + return snd_soc_unregister_card(&snd_rpi_proto); +} + +static const struct of_device_id snd_rpi_proto_of_match[] = { + { .compatible = "rpi,rpi-proto", }, + {}, +}; +MODULE_DEVICE_TABLE(of, snd_rpi_proto_of_match); + +static struct platform_driver snd_rpi_proto_driver = { + .driver = { + .name = "snd-rpi-proto", + .owner = THIS_MODULE, + .of_match_table = snd_rpi_proto_of_match, + }, + .probe = snd_rpi_proto_probe, + .remove = snd_rpi_proto_remove, +}; + +module_platform_driver(snd_rpi_proto_driver); + +MODULE_AUTHOR("Florian Meier"); +MODULE_DESCRIPTION("ASoC Driver for Raspberry Pi connected to PROTO board (WM8731)"); +MODULE_LICENSE("GPL"); --- linux-raspi2-4.2.0.orig/sound/soc/codecs/Kconfig +++ linux-raspi2-4.2.0/sound/soc/codecs/Kconfig @@ -83,6 +83,8 @@ select SND_SOC_PCM512x_I2C if I2C select SND_SOC_PCM512x_SPI if SPI_MASTER select SND_SOC_RT286 if I2C + select SND_SOC_PCM5102A if I2C + select SND_SOC_PCM1794A if I2C select SND_SOC_RT5631 if I2C select SND_SOC_RT5640 if I2C select SND_SOC_RT5645 if I2C @@ -108,6 +110,7 @@ select SND_SOC_TFA9879 if I2C select SND_SOC_TLV320AIC23_I2C if I2C select SND_SOC_TLV320AIC23_SPI if SPI_MASTER + select SND_SOC_TAS5713 if I2C select SND_SOC_TLV320AIC26 if SPI_MASTER select SND_SOC_TLV320AIC31XX if I2C select SND_SOC_TLV320AIC32X4 if I2C @@ -518,6 +521,12 @@ tristate depends on I2C +config SND_SOC_PCM1794A + tristate + +config SND_SOC_PCM5102A + tristate + config SND_SOC_RT5631 tristate "Realtek ALC5631/RT5631 CODEC" depends on I2C @@ -626,6 +635,9 @@ tristate "NXP Semiconductors TFA9879 amplifier" depends on I2C +config SND_SOC_TAS5713 + tristate + config SND_SOC_TLV320AIC23 tristate --- linux-raspi2-4.2.0.orig/sound/soc/codecs/Makefile +++ linux-raspi2-4.2.0/sound/soc/codecs/Makefile @@ -79,6 +79,8 @@ snd-soc-rl6231-objs := rl6231.o snd-soc-rl6347a-objs := rl6347a.o snd-soc-rt286-objs := rt286.o +snd-soc-pcm1794a-objs := pcm1794a.o +snd-soc-pcm5102a-objs := pcm5102a.o snd-soc-rt5631-objs := rt5631.o snd-soc-rt5640-objs := rt5640.o snd-soc-rt5645-objs := rt5645.o @@ -109,6 +111,7 @@ snd-soc-tas5086-objs := tas5086.o snd-soc-tas571x-objs := tas571x.o snd-soc-tfa9879-objs := tfa9879.o +snd-soc-tas5713-objs := tas5713.o snd-soc-tlv320aic23-objs := tlv320aic23.o snd-soc-tlv320aic23-i2c-objs := tlv320aic23-i2c.o snd-soc-tlv320aic23-spi-objs := tlv320aic23-spi.o @@ -266,6 +269,8 @@ obj-$(CONFIG_SND_SOC_RL6231) += snd-soc-rl6231.o obj-$(CONFIG_SND_SOC_RL6347A) += snd-soc-rl6347a.o obj-$(CONFIG_SND_SOC_RT286) += snd-soc-rt286.o +obj-$(CONFIG_SND_SOC_PCM1794A) += snd-soc-pcm1794a.o +obj-$(CONFIG_SND_SOC_PCM5102A) += snd-soc-pcm5102a.o obj-$(CONFIG_SND_SOC_RT5631) += snd-soc-rt5631.o obj-$(CONFIG_SND_SOC_RT5640) += snd-soc-rt5640.o obj-$(CONFIG_SND_SOC_RT5645) += snd-soc-rt5645.o @@ -293,6 +298,7 @@ obj-$(CONFIG_SND_SOC_TAS5086) += snd-soc-tas5086.o obj-$(CONFIG_SND_SOC_TAS571X) += snd-soc-tas571x.o obj-$(CONFIG_SND_SOC_TFA9879) += snd-soc-tfa9879.o +obj-$(CONFIG_SND_SOC_TAS5713) += snd-soc-tas5713.o obj-$(CONFIG_SND_SOC_TLV320AIC23) += snd-soc-tlv320aic23.o obj-$(CONFIG_SND_SOC_TLV320AIC23_I2C) += snd-soc-tlv320aic23-i2c.o obj-$(CONFIG_SND_SOC_TLV320AIC23_SPI) += snd-soc-tlv320aic23-spi.o --- linux-raspi2-4.2.0.orig/sound/soc/codecs/adav80x.c +++ linux-raspi2-4.2.0/sound/soc/codecs/adav80x.c @@ -865,7 +865,6 @@ .val_bits = 8, .pad_bits = 1, .reg_bits = 7, - .read_flag_mask = 0x01, .max_register = ADAV80X_PLL_OUTE, --- linux-raspi2-4.2.0.orig/sound/soc/codecs/arizona.c +++ linux-raspi2-4.2.0/sound/soc/codecs/arizona.c @@ -1756,17 +1756,6 @@ } EXPORT_SYMBOL_GPL(arizona_init_dai); -static irqreturn_t arizona_fll_clock_ok(int irq, void *data) -{ - struct arizona_fll *fll = data; - - arizona_fll_dbg(fll, "clock OK\n"); - - complete(&fll->ok); - - return IRQ_HANDLED; -} - static struct { unsigned int min; unsigned int max; @@ -2048,17 +2037,18 @@ static int arizona_enable_fll(struct arizona_fll *fll) { struct arizona *arizona = fll->arizona; - unsigned long time_left; bool use_sync = false; int already_enabled = arizona_is_enabled_fll(fll); struct arizona_fll_cfg cfg; + int i; + unsigned int val; if (already_enabled < 0) return already_enabled; if (already_enabled) { /* Facilitate smooth refclk across the transition */ - regmap_update_bits_async(fll->arizona->regmap, fll->base + 0x7, + regmap_update_bits_async(fll->arizona->regmap, fll->base + 0x9, ARIZONA_FLL1_GAIN_MASK, 0); regmap_update_bits_async(fll->arizona->regmap, fll->base + 1, ARIZONA_FLL1_FREERUN, @@ -2110,9 +2100,6 @@ if (!already_enabled) pm_runtime_get(arizona->dev); - /* Clear any pending completions */ - try_wait_for_completion(&fll->ok); - regmap_update_bits_async(arizona->regmap, fll->base + 1, ARIZONA_FLL1_ENA, ARIZONA_FLL1_ENA); if (use_sync) @@ -2124,10 +2111,24 @@ regmap_update_bits_async(arizona->regmap, fll->base + 1, ARIZONA_FLL1_FREERUN, 0); - time_left = wait_for_completion_timeout(&fll->ok, - msecs_to_jiffies(250)); - if (time_left == 0) + arizona_fll_dbg(fll, "Waiting for FLL lock...\n"); + val = 0; + for (i = 0; i < 15; i++) { + if (i < 5) + usleep_range(200, 400); + else + msleep(20); + + regmap_read(arizona->regmap, + ARIZONA_INTERRUPT_RAW_STATUS_5, + &val); + if (val & (ARIZONA_FLL1_CLOCK_OK_STS << (fll->id - 1))) + break; + } + if (i == 15) arizona_fll_warn(fll, "Timed out waiting for lock\n"); + else + arizona_fll_dbg(fll, "FLL locked (%d polls)\n", i); return 0; } @@ -2212,11 +2213,8 @@ int arizona_init_fll(struct arizona *arizona, int id, int base, int lock_irq, int ok_irq, struct arizona_fll *fll) { - int ret; unsigned int val; - init_completion(&fll->ok); - fll->id = id; fll->base = base; fll->arizona = arizona; @@ -2238,13 +2236,6 @@ snprintf(fll->clock_ok_name, sizeof(fll->clock_ok_name), "FLL%d clock OK", id); - ret = arizona_request_irq(arizona, ok_irq, fll->clock_ok_name, - arizona_fll_clock_ok, fll); - if (ret != 0) { - dev_err(arizona->dev, "Failed to get FLL%d clock OK IRQ: %d\n", - id, ret); - } - regmap_update_bits(arizona->regmap, fll->base + 1, ARIZONA_FLL1_FREERUN, 0); --- linux-raspi2-4.2.0.orig/sound/soc/codecs/arizona.h +++ linux-raspi2-4.2.0/sound/soc/codecs/arizona.h @@ -242,7 +242,6 @@ int id; unsigned int base; unsigned int vco_mult; - struct completion ok; unsigned int fout; int sync_src; --- linux-raspi2-4.2.0.orig/sound/soc/codecs/pcm1794a.c +++ linux-raspi2-4.2.0/sound/soc/codecs/pcm1794a.c @@ -0,0 +1,69 @@ +/* + * Driver for the PCM1794A codec + * + * Author: Florian Meier + * Copyright 2013 + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * version 2 as published by the Free Software Foundation. + * + * 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 + +static struct snd_soc_dai_driver pcm1794a_dai = { + .name = "pcm1794a-hifi", + .playback = { + .channels_min = 2, + .channels_max = 2, + .rates = SNDRV_PCM_RATE_8000_192000, + .formats = SNDRV_PCM_FMTBIT_S16_LE | + SNDRV_PCM_FMTBIT_S24_LE + }, +}; + +static struct snd_soc_codec_driver soc_codec_dev_pcm1794a; + +static int pcm1794a_probe(struct platform_device *pdev) +{ + return snd_soc_register_codec(&pdev->dev, &soc_codec_dev_pcm1794a, + &pcm1794a_dai, 1); +} + +static int pcm1794a_remove(struct platform_device *pdev) +{ + snd_soc_unregister_codec(&pdev->dev); + return 0; +} + +static const struct of_device_id pcm1794a_of_match[] = { + { .compatible = "ti,pcm1794a", }, + { } +}; +MODULE_DEVICE_TABLE(of, pcm1794a_of_match); + +static struct platform_driver pcm1794a_codec_driver = { + .probe = pcm1794a_probe, + .remove = pcm1794a_remove, + .driver = { + .name = "pcm1794a-codec", + .owner = THIS_MODULE, + .of_match_table = of_match_ptr(pcm1794a_of_match), + }, +}; + +module_platform_driver(pcm1794a_codec_driver); + +MODULE_DESCRIPTION("ASoC PCM1794A codec driver"); +MODULE_AUTHOR("Florian Meier "); +MODULE_LICENSE("GPL v2"); --- linux-raspi2-4.2.0.orig/sound/soc/codecs/pcm5102a.c +++ linux-raspi2-4.2.0/sound/soc/codecs/pcm5102a.c @@ -0,0 +1,70 @@ +/* + * Driver for the PCM5102A codec + * + * Author: Florian Meier + * Copyright 2013 + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * version 2 as published by the Free Software Foundation. + * + * 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 + +static struct snd_soc_dai_driver pcm5102a_dai = { + .name = "pcm5102a-hifi", + .playback = { + .channels_min = 2, + .channels_max = 2, + .rates = SNDRV_PCM_RATE_8000_192000, + .formats = SNDRV_PCM_FMTBIT_S16_LE | + SNDRV_PCM_FMTBIT_S24_LE | + SNDRV_PCM_FMTBIT_S32_LE + }, +}; + +static struct snd_soc_codec_driver soc_codec_dev_pcm5102a; + +static int pcm5102a_probe(struct platform_device *pdev) +{ + return snd_soc_register_codec(&pdev->dev, &soc_codec_dev_pcm5102a, + &pcm5102a_dai, 1); +} + +static int pcm5102a_remove(struct platform_device *pdev) +{ + snd_soc_unregister_codec(&pdev->dev); + return 0; +} + +static const struct of_device_id pcm5102a_of_match[] = { + { .compatible = "ti,pcm5102a", }, + { } +}; +MODULE_DEVICE_TABLE(of, pcm5102a_of_match); + +static struct platform_driver pcm5102a_codec_driver = { + .probe = pcm5102a_probe, + .remove = pcm5102a_remove, + .driver = { + .name = "pcm5102a-codec", + .owner = THIS_MODULE, + .of_match_table = pcm5102a_of_match, + }, +}; + +module_platform_driver(pcm5102a_codec_driver); + +MODULE_DESCRIPTION("ASoC PCM5102A codec driver"); +MODULE_AUTHOR("Florian Meier "); +MODULE_LICENSE("GPL v2"); --- linux-raspi2-4.2.0.orig/sound/soc/codecs/pcm512x.c +++ linux-raspi2-4.2.0/sound/soc/codecs/pcm512x.c @@ -854,7 +854,8 @@ int fssp; int gpio; - lrclk_div = snd_soc_params_to_frame_size(params); + lrclk_div = snd_pcm_format_physical_width(params_format(params)) + * params_channels(params); if (lrclk_div == 0) { dev_err(dev, "No LRCLK?\n"); return -EINVAL; --- linux-raspi2-4.2.0.orig/sound/soc/codecs/rt5640.c +++ linux-raspi2-4.2.0/sound/soc/codecs/rt5640.c @@ -984,6 +984,35 @@ return 0; } +static int rt5640_lout_event(struct snd_soc_dapm_widget *w, + struct snd_kcontrol *kcontrol, int event) +{ + struct snd_soc_codec *codec = snd_soc_dapm_to_codec(w->dapm); + + switch (event) { + case SND_SOC_DAPM_POST_PMU: + hp_amp_power_on(codec); + snd_soc_update_bits(codec, RT5640_PWR_ANLG1, + RT5640_PWR_LM, RT5640_PWR_LM); + snd_soc_update_bits(codec, RT5640_OUTPUT, + RT5640_L_MUTE | RT5640_R_MUTE, 0); + break; + + case SND_SOC_DAPM_PRE_PMD: + snd_soc_update_bits(codec, RT5640_OUTPUT, + RT5640_L_MUTE | RT5640_R_MUTE, + RT5640_L_MUTE | RT5640_R_MUTE); + snd_soc_update_bits(codec, RT5640_PWR_ANLG1, + RT5640_PWR_LM, 0); + break; + + default: + return 0; + } + + return 0; +} + static int rt5640_hp_power_event(struct snd_soc_dapm_widget *w, struct snd_kcontrol *kcontrol, int event) { @@ -1179,13 +1208,16 @@ 0, rt5640_spo_l_mix, ARRAY_SIZE(rt5640_spo_l_mix)), SND_SOC_DAPM_MIXER("SPOR MIX", SND_SOC_NOPM, 0, 0, rt5640_spo_r_mix, ARRAY_SIZE(rt5640_spo_r_mix)), - SND_SOC_DAPM_MIXER("LOUT MIX", RT5640_PWR_ANLG1, RT5640_PWR_LM_BIT, 0, + SND_SOC_DAPM_MIXER("LOUT MIX", SND_SOC_NOPM, 0, 0, rt5640_lout_mix, ARRAY_SIZE(rt5640_lout_mix)), SND_SOC_DAPM_SUPPLY_S("Improve HP Amp Drv", 1, SND_SOC_NOPM, 0, 0, rt5640_hp_power_event, SND_SOC_DAPM_POST_PMU), SND_SOC_DAPM_PGA_S("HP Amp", 1, SND_SOC_NOPM, 0, 0, rt5640_hp_event, SND_SOC_DAPM_PRE_PMD | SND_SOC_DAPM_POST_PMU), + SND_SOC_DAPM_PGA_S("LOUT amp", 1, SND_SOC_NOPM, 0, 0, + rt5640_lout_event, + SND_SOC_DAPM_PRE_PMD | SND_SOC_DAPM_POST_PMU), SND_SOC_DAPM_SUPPLY("HP L Amp", RT5640_PWR_ANLG1, RT5640_PWR_HP_L_BIT, 0, NULL, 0), SND_SOC_DAPM_SUPPLY("HP R Amp", RT5640_PWR_ANLG1, @@ -1500,8 +1532,10 @@ {"HP R Playback", "Switch", "HP Amp"}, {"HPOL", NULL, "HP L Playback"}, {"HPOR", NULL, "HP R Playback"}, - {"LOUTL", NULL, "LOUT MIX"}, - {"LOUTR", NULL, "LOUT MIX"}, + + {"LOUT amp", NULL, "LOUT MIX"}, + {"LOUTL", NULL, "LOUT amp"}, + {"LOUTR", NULL, "LOUT amp"}, }; static const struct snd_soc_dapm_route rt5640_specific_dapm_routes[] = { --- linux-raspi2-4.2.0.orig/sound/soc/codecs/rt5645.c +++ linux-raspi2-4.2.0/sound/soc/codecs/rt5645.c @@ -3232,6 +3232,13 @@ DMI_MATCH(DMI_PRODUCT_NAME, "Strago"), }, }, + { + .ident = "Google Celes", + .callback = strago_quirk_cb, + .matches = { + DMI_MATCH(DMI_PRODUCT_NAME, "Celes"), + }, + }, { } }; --- linux-raspi2-4.2.0.orig/sound/soc/codecs/sgtl5000.c +++ linux-raspi2-4.2.0/sound/soc/codecs/sgtl5000.c @@ -1377,8 +1377,8 @@ sgtl5000->micbias_resistor << SGTL5000_BIAS_R_SHIFT); snd_soc_update_bits(codec, SGTL5000_CHIP_MIC_CTRL, - SGTL5000_BIAS_R_MASK, - sgtl5000->micbias_voltage << SGTL5000_BIAS_R_SHIFT); + SGTL5000_BIAS_VOLT_MASK, + sgtl5000->micbias_voltage << SGTL5000_BIAS_VOLT_SHIFT); /* * disable DAP * TODO: --- linux-raspi2-4.2.0.orig/sound/soc/codecs/tas2552.c +++ linux-raspi2-4.2.0/sound/soc/codecs/tas2552.c @@ -551,7 +551,7 @@ /* * DAC digital volumes. From -7 to 24 dB in 1 dB steps */ -static DECLARE_TLV_DB_SCALE(dac_tlv, -7, 100, 0); +static DECLARE_TLV_DB_SCALE(dac_tlv, -700, 100, 0); static const char * const tas2552_din_source_select[] = { "Muted", --- linux-raspi2-4.2.0.orig/sound/soc/codecs/tas5713.c +++ linux-raspi2-4.2.0/sound/soc/codecs/tas5713.c @@ -0,0 +1,369 @@ +/* + * ASoC Driver for TAS5713 + * + * Author: Sebastian Eickhoff + * Copyright 2014 + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * version 2 as published by the Free Software Foundation. + * + * 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 +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include + +#include "tas5713.h" + + +static struct i2c_client *i2c; + +struct tas5713_priv { + struct regmap *regmap; + int mclk_div; + struct snd_soc_codec *codec; +}; + +static struct tas5713_priv *priv_data; + + + + +/* + * _ _ ___ _ ___ _ _ + * /_\ | | / __| /_\ / __|___ _ _| |_ _ _ ___| |___ + * / _ \| |__\__ \/ _ \ | (__/ _ \ ' \ _| '_/ _ \ (_-< + * /_/ \_\____|___/_/ \_\ \___\___/_||_\__|_| \___/_/__/ + * + */ + +static const DECLARE_TLV_DB_SCALE(tas5713_vol_tlv, -10000, 50, 1); + + +static const struct snd_kcontrol_new tas5713_snd_controls[] = { + SOC_SINGLE_TLV ("Master" , TAS5713_VOL_MASTER, 0, 248, 1, tas5713_vol_tlv), + SOC_DOUBLE_R_TLV("Channels" , TAS5713_VOL_CH1, TAS5713_VOL_CH2, 0, 248, 1, tas5713_vol_tlv) +}; + + + + +/* + * __ __ _ _ ___ _ + * | \/ |__ _ __| |_ (_)_ _ ___ | \ _ _(_)_ _____ _ _ + * | |\/| / _` / _| ' \| | ' \/ -_) | |) | '_| \ V / -_) '_| + * |_| |_\__,_\__|_||_|_|_||_\___| |___/|_| |_|\_/\___|_| + * + */ + +static int tas5713_hw_params(struct snd_pcm_substream *substream, + struct snd_pcm_hw_params *params, + struct snd_soc_dai *dai) +{ + u16 blen = 0x00; + + struct snd_soc_codec *codec; + codec = dai->codec; + priv_data->codec = dai->codec; + + switch (params_format(params)) { + case SNDRV_PCM_FORMAT_S16_LE: + blen = 0x03; + break; + case SNDRV_PCM_FORMAT_S20_3LE: + blen = 0x1; + break; + case SNDRV_PCM_FORMAT_S24_LE: + blen = 0x04; + break; + case SNDRV_PCM_FORMAT_S32_LE: + blen = 0x05; + break; + default: + dev_err(dai->dev, "Unsupported word length: %u\n", + params_format(params)); + return -EINVAL; + } + + // set word length + snd_soc_update_bits(codec, TAS5713_SERIAL_DATA_INTERFACE, 0x7, blen); + + return 0; +} + + +static int tas5713_mute_stream(struct snd_soc_dai *dai, int mute, int stream) +{ + unsigned int val = 0; + + struct tas5713_priv *tas5713; + struct snd_soc_codec *codec = dai->codec; + tas5713 = snd_soc_codec_get_drvdata(codec); + + if (mute) { + val = TAS5713_SOFT_MUTE_ALL; + } + + return regmap_write(tas5713->regmap, TAS5713_SOFT_MUTE, val); +} + + +static const struct snd_soc_dai_ops tas5713_dai_ops = { + .hw_params = tas5713_hw_params, + .mute_stream = tas5713_mute_stream, +}; + + +static struct snd_soc_dai_driver tas5713_dai = { + .name = "tas5713-hifi", + .playback = { + .stream_name = "Playback", + .channels_min = 2, + .channels_max = 2, + .rates = SNDRV_PCM_RATE_8000_48000, + .formats = (SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S24_LE | SNDRV_PCM_FMTBIT_S32_LE ), + }, + .ops = &tas5713_dai_ops, +}; + + + + +/* + * ___ _ ___ _ + * / __|___ __| |___ __ | \ _ _(_)_ _____ _ _ + * | (__/ _ \/ _` / -_) _| | |) | '_| \ V / -_) '_| + * \___\___/\__,_\___\__| |___/|_| |_|\_/\___|_| + * + */ + +static int tas5713_remove(struct snd_soc_codec *codec) +{ + struct tas5713_priv *tas5713; + + tas5713 = snd_soc_codec_get_drvdata(codec); + + return 0; +} + + +static int tas5713_probe(struct snd_soc_codec *codec) +{ + struct tas5713_priv *tas5713; + int i, ret; + + i2c = container_of(codec->dev, struct i2c_client, dev); + + tas5713 = snd_soc_codec_get_drvdata(codec); + + // Reset error + ret = snd_soc_write(codec, TAS5713_ERROR_STATUS, 0x00); + if (ret < 0) return ret; + + // Trim oscillator + ret = snd_soc_write(codec, TAS5713_OSC_TRIM, 0x00); + if (ret < 0) return ret; + msleep(1000); + + // Reset error + ret = snd_soc_write(codec, TAS5713_ERROR_STATUS, 0x00); + if (ret < 0) return ret; + + // Clock mode: 44/48kHz, MCLK=64xfs + ret = snd_soc_write(codec, TAS5713_CLOCK_CTRL, 0x60); + if (ret < 0) return ret; + + // I2S 24bit + ret = snd_soc_write(codec, TAS5713_SERIAL_DATA_INTERFACE, 0x05); + if (ret < 0) return ret; + + // Unmute + ret = snd_soc_write(codec, TAS5713_SYSTEM_CTRL2, 0x00); + if (ret < 0) return ret; + ret = snd_soc_write(codec, TAS5713_SOFT_MUTE, 0x00); + if (ret < 0) return ret; + + // Set volume to 0db + ret = snd_soc_write(codec, TAS5713_VOL_MASTER, 0x00); + if (ret < 0) return ret; + + // Now start programming the default initialization sequence + for (i = 0; i < ARRAY_SIZE(tas5713_init_sequence); ++i) { + ret = i2c_master_send(i2c, + tas5713_init_sequence[i].data, + tas5713_init_sequence[i].size); + if (ret < 0) { + printk(KERN_INFO "TAS5713 CODEC PROBE: InitSeq returns: %d\n", ret); + } + } + + // Unmute + ret = snd_soc_write(codec, TAS5713_SYSTEM_CTRL2, 0x00); + if (ret < 0) return ret; + + return 0; +} + + +static struct snd_soc_codec_driver soc_codec_dev_tas5713 = { + .probe = tas5713_probe, + .remove = tas5713_remove, + .controls = tas5713_snd_controls, + .num_controls = ARRAY_SIZE(tas5713_snd_controls), +}; + + + + +/* + * ___ ___ ___ ___ _ + * |_ _|_ ) __| | \ _ _(_)_ _____ _ _ + * | | / / (__ | |) | '_| \ V / -_) '_| + * |___/___\___| |___/|_| |_|\_/\___|_| + * + */ + +static const struct reg_default tas5713_reg_defaults[] = { + { 0x07 ,0x80 }, // R7 - VOL_MASTER - -40dB + { 0x08 , 30 }, // R8 - VOL_CH1 - 0dB + { 0x09 , 30 }, // R9 - VOL_CH2 - 0dB + { 0x0A ,0x80 }, // R10 - VOL_HEADPHONE - -40dB +}; + + +static bool tas5713_reg_volatile(struct device *dev, unsigned int reg) +{ + switch (reg) { + case TAS5713_DEVICE_ID: + case TAS5713_ERROR_STATUS: + return true; + default: + return false; + } +} + + +static const struct of_device_id tas5713_of_match[] = { + { .compatible = "ti,tas5713", }, + { } +}; +MODULE_DEVICE_TABLE(of, tas5713_of_match); + + +static struct regmap_config tas5713_regmap_config = { + .reg_bits = 8, + .val_bits = 8, + + .max_register = TAS5713_MAX_REGISTER, + .volatile_reg = tas5713_reg_volatile, + + .cache_type = REGCACHE_RBTREE, + .reg_defaults = tas5713_reg_defaults, + .num_reg_defaults = ARRAY_SIZE(tas5713_reg_defaults), +}; + + +static int tas5713_i2c_probe(struct i2c_client *i2c, + const struct i2c_device_id *id) +{ + int ret; + + priv_data = devm_kzalloc(&i2c->dev, sizeof *priv_data, GFP_KERNEL); + if (!priv_data) + return -ENOMEM; + + priv_data->regmap = devm_regmap_init_i2c(i2c, &tas5713_regmap_config); + if (IS_ERR(priv_data->regmap)) { + ret = PTR_ERR(priv_data->regmap); + return ret; + } + + i2c_set_clientdata(i2c, priv_data); + + ret = snd_soc_register_codec(&i2c->dev, + &soc_codec_dev_tas5713, &tas5713_dai, 1); + + return ret; +} + + +static int tas5713_i2c_remove(struct i2c_client *i2c) +{ + snd_soc_unregister_codec(&i2c->dev); + i2c_set_clientdata(i2c, NULL); + + kfree(priv_data); + + return 0; +} + + +static const struct i2c_device_id tas5713_i2c_id[] = { + { "tas5713", 0 }, + { } +}; + +MODULE_DEVICE_TABLE(i2c, tas5713_i2c_id); + + +static struct i2c_driver tas5713_i2c_driver = { + .driver = { + .name = "tas5713", + .owner = THIS_MODULE, + .of_match_table = tas5713_of_match, + }, + .probe = tas5713_i2c_probe, + .remove = tas5713_i2c_remove, + .id_table = tas5713_i2c_id +}; + + +static int __init tas5713_modinit(void) +{ + int ret = 0; + + ret = i2c_add_driver(&tas5713_i2c_driver); + if (ret) { + printk(KERN_ERR "Failed to register tas5713 I2C driver: %d\n", + ret); + } + + return ret; +} +module_init(tas5713_modinit); + + +static void __exit tas5713_exit(void) +{ + i2c_del_driver(&tas5713_i2c_driver); +} +module_exit(tas5713_exit); + + +MODULE_AUTHOR("Sebastian Eickhoff "); +MODULE_DESCRIPTION("ASoC driver for TAS5713"); +MODULE_LICENSE("GPL v2"); --- linux-raspi2-4.2.0.orig/sound/soc/codecs/tas5713.h +++ linux-raspi2-4.2.0/sound/soc/codecs/tas5713.h @@ -0,0 +1,210 @@ +/* + * ASoC Driver for TAS5713 + * + * Author: Sebastian Eickhoff + * Copyright 2014 + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * version 2 as published by the Free Software Foundation. + * + * 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 _TAS5713_H +#define _TAS5713_H + + +// TAS5713 I2C-bus register addresses + +#define TAS5713_CLOCK_CTRL 0x00 +#define TAS5713_DEVICE_ID 0x01 +#define TAS5713_ERROR_STATUS 0x02 +#define TAS5713_SYSTEM_CTRL1 0x03 +#define TAS5713_SERIAL_DATA_INTERFACE 0x04 +#define TAS5713_SYSTEM_CTRL2 0x05 +#define TAS5713_SOFT_MUTE 0x06 +#define TAS5713_VOL_MASTER 0x07 +#define TAS5713_VOL_CH1 0x08 +#define TAS5713_VOL_CH2 0x09 +#define TAS5713_VOL_HEADPHONE 0x0A +#define TAS5713_VOL_CONFIG 0x0E +#define TAS5713_MODULATION_LIMIT 0x10 +#define TAS5713_IC_DLY_CH1 0x11 +#define TAS5713_IC_DLY_CH2 0x12 +#define TAS5713_IC_DLY_CH3 0x13 +#define TAS5713_IC_DLY_CH4 0x14 + +#define TAS5713_START_STOP_PERIOD 0x1A +#define TAS5713_OSC_TRIM 0x1B +#define TAS5713_BKND_ERR 0x1C + +#define TAS5713_INPUT_MUX 0x20 +#define TAS5713_SRC_SELECT_CH4 0x21 +#define TAS5713_PWM_MUX 0x25 + +#define TAS5713_CH1_BQ0 0x29 +#define TAS5713_CH1_BQ1 0x2A +#define TAS5713_CH1_BQ2 0x2B +#define TAS5713_CH1_BQ3 0x2C +#define TAS5713_CH1_BQ4 0x2D +#define TAS5713_CH1_BQ5 0x2E +#define TAS5713_CH1_BQ6 0x2F +#define TAS5713_CH1_BQ7 0x58 +#define TAS5713_CH1_BQ8 0x59 + +#define TAS5713_CH2_BQ0 0x30 +#define TAS5713_CH2_BQ1 0x31 +#define TAS5713_CH2_BQ2 0x32 +#define TAS5713_CH2_BQ3 0x33 +#define TAS5713_CH2_BQ4 0x34 +#define TAS5713_CH2_BQ5 0x35 +#define TAS5713_CH2_BQ6 0x36 +#define TAS5713_CH2_BQ7 0x5C +#define TAS5713_CH2_BQ8 0x5D + +#define TAS5713_CH4_BQ0 0x5A +#define TAS5713_CH4_BQ1 0x5B +#define TAS5713_CH3_BQ0 0x5E +#define TAS5713_CH3_BQ1 0x5F + +#define TAS5713_DRC1_SOFTENING_FILTER_ALPHA_OMEGA 0x3B +#define TAS5713_DRC1_ATTACK_RELEASE_RATE 0x3C +#define TAS5713_DRC2_SOFTENING_FILTER_ALPHA_OMEGA 0x3E +#define TAS5713_DRC2_ATTACK_RELEASE_RATE 0x3F +#define TAS5713_DRC1_ATTACK_RELEASE_THRES 0x40 +#define TAS5713_DRC2_ATTACK_RELEASE_THRES 0x43 +#define TAS5713_DRC_CTRL 0x46 + +#define TAS5713_BANK_SW_CTRL 0x50 +#define TAS5713_CH1_OUTPUT_MIXER 0x51 +#define TAS5713_CH2_OUTPUT_MIXER 0x52 +#define TAS5713_CH1_INPUT_MIXER 0x53 +#define TAS5713_CH2_INPUT_MIXER 0x54 +#define TAS5713_OUTPUT_POST_SCALE 0x56 +#define TAS5713_OUTPUT_PRESCALE 0x57 + +#define TAS5713_IDF_POST_SCALE 0x62 + +#define TAS5713_CH1_INLINE_MIXER 0x70 +#define TAS5713_CH1_INLINE_DRC_EN_MIXER 0x71 +#define TAS5713_CH1_R_CHANNEL_MIXER 0x72 +#define TAS5713_CH1_L_CHANNEL_MIXER 0x73 +#define TAS5713_CH2_INLINE_MIXER 0x74 +#define TAS5713_CH2_INLINE_DRC_EN_MIXER 0x75 +#define TAS5713_CH2_L_CHANNEL_MIXER 0x76 +#define TAS5713_CH2_R_CHANNEL_MIXER 0x77 + +#define TAS5713_UPDATE_DEV_ADDR_KEY 0xF8 +#define TAS5713_UPDATE_DEV_ADDR_REG 0xF9 + +#define TAS5713_REGISTER_COUNT 0x46 +#define TAS5713_MAX_REGISTER 0xF9 + + +// Bitmasks for registers +#define TAS5713_SOFT_MUTE_ALL 0x07 + + + +struct tas5713_init_command { + const int size; + const char *const data; +}; + +static const struct tas5713_init_command tas5713_init_sequence[] = { + + // Trim oscillator + { .size = 2, .data = "\x1B\x00" }, + // System control register 1 (0x03): block DC + { .size = 2, .data = "\x03\x80" }, + // Mute everything + { .size = 2, .data = "\x05\x40" }, + // Modulation limit register (0x10): 97.7% + { .size = 2, .data = "\x10\x02" }, + // Interchannel delay registers + // (0x11, 0x12, 0x13, and 0x14): BD mode + { .size = 2, .data = "\x11\xB8" }, + { .size = 2, .data = "\x12\x60" }, + { .size = 2, .data = "\x13\xA0" }, + { .size = 2, .data = "\x14\x48" }, + // PWM shutdown group register (0x19): no shutdown + { .size = 2, .data = "\x19\x00" }, + // Input multiplexer register (0x20): BD mode + { .size = 2, .data = "\x20\x00\x89\x77\x72" }, + // PWM output mux register (0x25) + // Channel 1 --> OUTA, channel 1 neg --> OUTB + // Channel 2 --> OUTC, channel 2 neg --> OUTD + { .size = 5, .data = "\x25\x01\x02\x13\x45" }, + // DRC control (0x46): DRC off + { .size = 5, .data = "\x46\x00\x00\x00\x00" }, + // BKND_ERR register (0x1C): 299ms reset period + { .size = 2, .data = "\x1C\x07" }, + // Mute channel 3 + { .size = 2, .data = "\x0A\xFF" }, + // Volume configuration register (0x0E): volume slew 512 steps + { .size = 2, .data = "\x0E\x90" }, + // Clock control register (0x00): 44/48kHz, MCLK=64xfs + { .size = 2, .data = "\x00\x60" }, + // Bank switch and eq control (0x50): no bank switching + { .size = 5, .data = "\x50\x00\x00\x00\x00" }, + // Volume registers (0x07, 0x08, 0x09, 0x0A) + { .size = 2, .data = "\x07\x20" }, + { .size = 2, .data = "\x08\x30" }, + { .size = 2, .data = "\x09\x30" }, + { .size = 2, .data = "\x0A\xFF" }, + // 0x72, 0x73, 0x76, 0x77 input mixer: + // no intermix between channels + { .size = 5, .data = "\x72\x00\x00\x00\x00" }, + { .size = 5, .data = "\x73\x00\x80\x00\x00" }, + { .size = 5, .data = "\x76\x00\x00\x00\x00" }, + { .size = 5, .data = "\x77\x00\x80\x00\x00" }, + // 0x70, 0x71, 0x74, 0x75 inline DRC mixer: + // no inline DRC inmix + { .size = 5, .data = "\x70\x00\x80\x00\x00" }, + { .size = 5, .data = "\x71\x00\x00\x00\x00" }, + { .size = 5, .data = "\x74\x00\x80\x00\x00" }, + { .size = 5, .data = "\x75\x00\x00\x00\x00" }, + // 0x56, 0x57 Output scale + { .size = 5, .data = "\x56\x00\x80\x00\x00" }, + { .size = 5, .data = "\x57\x00\x02\x00\x00" }, + // 0x3B, 0x3c + { .size = 9, .data = "\x3B\x00\x08\x00\x00\x00\x78\x00\x00" }, + { .size = 9, .data = "\x3C\x00\x00\x01\x00\xFF\xFF\xFF\x00" }, + { .size = 9, .data = "\x3E\x00\x08\x00\x00\x00\x78\x00\x00" }, + { .size = 9, .data = "\x3F\x00\x00\x01\x00\xFF\xFF\xFF\x00" }, + { .size = 9, .data = "\x40\x00\x00\x01\x00\xFF\xFF\xFF\x00" }, + { .size = 9, .data = "\x43\x00\x00\x01\x00\xFF\xFF\xFF\x00" }, + // 0x51, 0x52: output mixer + { .size = 9, .data = "\x51\x00\x80\x00\x00\x00\x00\x00\x00" }, + { .size = 9, .data = "\x52\x00\x80\x00\x00\x00\x00\x00\x00" }, + // PEQ defaults + { .size = 21, .data = "\x29\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" }, + { .size = 21, .data = "\x2A\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" }, + { .size = 21, .data = "\x2B\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" }, + { .size = 21, .data = "\x2C\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" }, + { .size = 21, .data = "\x2D\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" }, + { .size = 21, .data = "\x2E\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" }, + { .size = 21, .data = "\x2F\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" }, + { .size = 21, .data = "\x30\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" }, + { .size = 21, .data = "\x31\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" }, + { .size = 21, .data = "\x32\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" }, + { .size = 21, .data = "\x33\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" }, + { .size = 21, .data = "\x34\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" }, + { .size = 21, .data = "\x35\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" }, + { .size = 21, .data = "\x36\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" }, + { .size = 21, .data = "\x58\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" }, + { .size = 21, .data = "\x59\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" }, + { .size = 21, .data = "\x5C\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" }, + { .size = 21, .data = "\x5D\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" }, + { .size = 21, .data = "\x5E\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" }, + { .size = 21, .data = "\x5F\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" }, + { .size = 21, .data = "\x5A\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" }, + { .size = 21, .data = "\x5B\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" }, +}; + + +#endif /* _TAS5713_H */ --- linux-raspi2-4.2.0.orig/sound/soc/codecs/tpa6130a2.c +++ linux-raspi2-4.2.0/sound/soc/codecs/tpa6130a2.c @@ -4,6 +4,7 @@ * Copyright (C) Nokia Corporation * * Author: Peter Ujfalusi + * Modified: Jan Grulich * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License @@ -52,6 +53,8 @@ enum tpa_model id; }; +static void tpa6130a2_channel_enable(u8 channel, int enable); + static int tpa6130a2_i2c_read(int reg) { struct tpa6130a2_data *data; @@ -189,7 +192,7 @@ } static int tpa6130a2_get_volsw(struct snd_kcontrol *kcontrol, - struct snd_ctl_elem_value *ucontrol) + struct snd_ctl_elem_value *ucontrol) { struct soc_mixer_control *mc = (struct soc_mixer_control *)kcontrol->private_value; @@ -218,7 +221,7 @@ } static int tpa6130a2_put_volsw(struct snd_kcontrol *kcontrol, - struct snd_ctl_elem_value *ucontrol) + struct snd_ctl_elem_value *ucontrol) { struct soc_mixer_control *mc = (struct soc_mixer_control *)kcontrol->private_value; @@ -255,8 +258,22 @@ return 1; } +static int tpa6130a2_put_hp_sw(struct snd_kcontrol *kcontrol, + struct snd_ctl_elem_value *ucontrol) +{ + int enable = ucontrol->value.integer.value[0]; + unsigned int state; + + state = (tpa6130a2_read(TPA6130A2_REG_VOL_MUTE) & 0x80) == 0; + if (state == enable) + return 0; /* No change */ + + tpa6130a2_channel_enable(TPA6130A2_HP_EN_R | TPA6130A2_HP_EN_L, enable); + return 1; /* Changed */ +} + /* - * TPA6130 volume. From -59.5 to 4 dB with increasing step size when going + * TPA6130 volume. From -59.5 to +4.0 dB with increasing step size when going * down in gain. */ static const unsigned int tpa6130_tlv[] = { @@ -278,6 +295,9 @@ TPA6130A2_REG_VOL_MUTE, 0, 0x3f, 0, tpa6130a2_get_volsw, tpa6130a2_put_volsw, tpa6130_tlv), + SOC_SINGLE_EXT("TPA6130A2 Headphone Playback Switch", + TPA6130A2_REG_VOL_MUTE, 7, 1, 1, + tpa6130a2_get_volsw, tpa6130a2_put_hp_sw), }; static const unsigned int tpa6140_tlv[] = { @@ -292,6 +312,9 @@ TPA6130A2_REG_VOL_MUTE, 1, 0x1f, 0, tpa6130a2_get_volsw, tpa6130a2_put_volsw, tpa6140_tlv), + SOC_SINGLE_EXT("TPA6140A2 Headphone Playback Switch", + TPA6130A2_REG_VOL_MUTE, 7, 1, 1, + tpa6130a2_get_volsw, tpa6130a2_put_hp_sw), }; /* --- linux-raspi2-4.2.0.orig/sound/soc/codecs/wm8804.c +++ linux-raspi2-4.2.0/sound/soc/codecs/wm8804.c @@ -304,6 +304,7 @@ blen = 0x1; break; case 24: + case 32: blen = 0x2; break; default: @@ -515,7 +516,7 @@ }; #define WM8804_FORMATS (SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S20_3LE | \ - SNDRV_PCM_FMTBIT_S24_LE) + SNDRV_PCM_FMTBIT_S24_3LE | SNDRV_PCM_FMTBIT_S32_LE) #define WM8804_RATES (SNDRV_PCM_RATE_32000 | SNDRV_PCM_RATE_44100 | \ SNDRV_PCM_RATE_48000 | SNDRV_PCM_RATE_64000 | \ @@ -543,7 +544,7 @@ }; static const struct snd_soc_codec_driver soc_codec_dev_wm8804 = { - .idle_bias_off = true, + .idle_bias_off = false, .dapm_widgets = wm8804_dapm_widgets, .num_dapm_widgets = ARRAY_SIZE(wm8804_dapm_widgets), --- linux-raspi2-4.2.0.orig/sound/soc/dwc/designware_i2s.c +++ linux-raspi2-4.2.0/sound/soc/dwc/designware_i2s.c @@ -131,10 +131,10 @@ if (stream == SNDRV_PCM_STREAM_PLAYBACK) { for (i = 0; i < 4; i++) - i2s_write_reg(dev->i2s_base, TOR(i), 0); + i2s_read_reg(dev->i2s_base, TOR(i)); } else { for (i = 0; i < 4; i++) - i2s_write_reg(dev->i2s_base, ROR(i), 0); + i2s_read_reg(dev->i2s_base, ROR(i)); } } --- linux-raspi2-4.2.0.orig/sound/soc/pxa/Kconfig +++ linux-raspi2-4.2.0/sound/soc/pxa/Kconfig @@ -1,7 +1,6 @@ config SND_PXA2XX_SOC tristate "SoC Audio for the Intel PXA2xx chip" depends on ARCH_PXA - select SND_ARM select SND_PXA2XX_LIB help Say Y or M if you want to add support for codecs attached to @@ -25,7 +24,6 @@ config SND_PXA2XX_SOC_AC97 tristate select AC97_BUS - select SND_ARM select SND_PXA2XX_LIB_AC97 select SND_SOC_AC97_BUS --- linux-raspi2-4.2.0.orig/sound/soc/pxa/pxa2xx-ac97.c +++ linux-raspi2-4.2.0/sound/soc/pxa/pxa2xx-ac97.c @@ -49,7 +49,7 @@ .reset = pxa2xx_ac97_cold_reset, }; -static unsigned long pxa2xx_ac97_pcm_stereo_in_req = 12; +static unsigned long pxa2xx_ac97_pcm_stereo_in_req = 11; static struct snd_dmaengine_dai_dma_data pxa2xx_ac97_pcm_stereo_in = { .addr = __PREG(PCDR), .addr_width = DMA_SLAVE_BUSWIDTH_4_BYTES, @@ -57,7 +57,7 @@ .filter_data = &pxa2xx_ac97_pcm_stereo_in_req, }; -static unsigned long pxa2xx_ac97_pcm_stereo_out_req = 11; +static unsigned long pxa2xx_ac97_pcm_stereo_out_req = 12; static struct snd_dmaengine_dai_dma_data pxa2xx_ac97_pcm_stereo_out = { .addr = __PREG(PCDR), .addr_width = DMA_SLAVE_BUSWIDTH_4_BYTES, --- linux-raspi2-4.2.0.orig/sound/soc/samsung/arndale_rt5631.c +++ linux-raspi2-4.2.0/sound/soc/samsung/arndale_rt5631.c @@ -116,15 +116,6 @@ return ret; } -static int arndale_audio_remove(struct platform_device *pdev) -{ - struct snd_soc_card *card = platform_get_drvdata(pdev); - - snd_soc_unregister_card(card); - - return 0; -} - static const struct of_device_id samsung_arndale_rt5631_of_match[] __maybe_unused = { { .compatible = "samsung,arndale-rt5631", }, { .compatible = "samsung,arndale-alc5631", }, @@ -139,7 +130,6 @@ .of_match_table = of_match_ptr(samsung_arndale_rt5631_of_match), }, .probe = arndale_audio_probe, - .remove = arndale_audio_remove, }; module_platform_driver(arndale_audio_driver); --- linux-raspi2-4.2.0.orig/sound/soc/soc-ops.c +++ linux-raspi2-4.2.0/sound/soc/soc-ops.c @@ -207,6 +207,34 @@ EXPORT_SYMBOL_GPL(snd_soc_info_volsw); /** + * snd_soc_info_volsw_sx - Mixer info callback for SX TLV controls + * @kcontrol: mixer control + * @uinfo: control element information + * + * Callback to provide information about a single mixer control, or a double + * mixer control that spans 2 registers of the SX TLV type. SX TLV controls + * have a range that represents both positive and negative values either side + * of zero but without a sign bit. + * + * Returns 0 for success. + */ +int snd_soc_info_volsw_sx(struct snd_kcontrol *kcontrol, + struct snd_ctl_elem_info *uinfo) +{ + struct soc_mixer_control *mc = + (struct soc_mixer_control *)kcontrol->private_value; + + snd_soc_info_volsw(kcontrol, uinfo); + /* Max represents the number of levels in an SX control not the + * maximum value, so add the minimum value back on + */ + uinfo->value.integer.max += mc->min; + + return 0; +} +EXPORT_SYMBOL_GPL(snd_soc_info_volsw_sx); + +/** * snd_soc_get_volsw - single mixer get callback * @kcontrol: mixer control * @ucontrol: control element information --- linux-raspi2-4.2.0.orig/sound/soc/spear/spear_pcm.c +++ linux-raspi2-4.2.0/sound/soc/spear/spear_pcm.c @@ -44,7 +44,7 @@ *config = spear_dmaengine_pcm_config; config->compat_filter_fn = filter; - return snd_dmaengine_pcm_register(dev, config, + return devm_snd_dmaengine_pcm_register(dev, config, SND_DMAENGINE_PCM_FLAG_NO_DT | SND_DMAENGINE_PCM_FLAG_COMPAT); } --- linux-raspi2-4.2.0.orig/sound/synth/emux/emux_oss.c +++ linux-raspi2-4.2.0/sound/synth/emux/emux_oss.c @@ -69,7 +69,8 @@ struct snd_seq_oss_reg *arg; struct snd_seq_device *dev; - if (snd_seq_device_new(emu->card, 0, SNDRV_SEQ_DEV_ID_OSS, + /* using device#1 here for avoiding conflicts with OPL3 */ + if (snd_seq_device_new(emu->card, 1, SNDRV_SEQ_DEV_ID_OSS, sizeof(struct snd_seq_oss_reg), &dev) < 0) return; --- linux-raspi2-4.2.0.orig/sound/usb/midi.c +++ linux-raspi2-4.2.0/sound/usb/midi.c @@ -174,6 +174,8 @@ u8 running_status_length; } ports[0x10]; u8 seen_f5; + bool in_sysex; + u8 last_cin; u8 error_resubmit; int current_port; }; @@ -468,6 +470,39 @@ } /* + * QinHeng CH345 is buggy: every second packet inside a SysEx has not CIN 4 + * but the previously seen CIN, but still with three data bytes. + */ +static void ch345_broken_sysex_input(struct snd_usb_midi_in_endpoint *ep, + uint8_t *buffer, int buffer_length) +{ + unsigned int i, cin, length; + + for (i = 0; i + 3 < buffer_length; i += 4) { + if (buffer[i] == 0 && i > 0) + break; + cin = buffer[i] & 0x0f; + if (ep->in_sysex && + cin == ep->last_cin && + (buffer[i + 1 + (cin == 0x6)] & 0x80) == 0) + cin = 0x4; +#if 0 + if (buffer[i + 1] == 0x90) { + /* + * Either a corrupted running status or a real note-on + * message; impossible to detect reliably. + */ + } +#endif + length = snd_usbmidi_cin_length[cin]; + snd_usbmidi_input_data(ep, 0, &buffer[i + 1], length); + ep->in_sysex = cin == 0x4; + if (!ep->in_sysex) + ep->last_cin = cin; + } +} + +/* * CME protocol: like the standard protocol, but SysEx commands are sent as a * single USB packet preceded by a 0x0F byte. */ @@ -660,6 +695,12 @@ .output_packet = snd_usbmidi_output_standard_packet, }; +static struct usb_protocol_ops snd_usbmidi_ch345_broken_sysex_ops = { + .input = ch345_broken_sysex_input, + .output = snd_usbmidi_standard_output, + .output_packet = snd_usbmidi_output_standard_packet, +}; + /* * AKAI MPD16 protocol: * @@ -1341,6 +1382,7 @@ * Various chips declare a packet size larger than 4 bytes, but * do not actually work with larger packets: */ + case USB_ID(0x0a67, 0x5011): /* Medeli DD305 */ case USB_ID(0x0a92, 0x1020): /* ESI M4U */ case USB_ID(0x1430, 0x474b): /* RedOctane GH MIDI INTERFACE */ case USB_ID(0x15ca, 0x0101): /* Textech USB Midi Cable */ @@ -2375,6 +2417,10 @@ err = snd_usbmidi_detect_per_port_endpoints(umidi, endpoints); break; + case QUIRK_MIDI_CH345: + umidi->usb_protocol_ops = &snd_usbmidi_ch345_broken_sysex_ops; + err = snd_usbmidi_detect_per_port_endpoints(umidi, endpoints); + break; default: dev_err(&umidi->dev->dev, "invalid quirk type %d\n", quirk->type); --- linux-raspi2-4.2.0.orig/sound/usb/mixer.c +++ linux-raspi2-4.2.0/sound/usb/mixer.c @@ -2522,7 +2522,7 @@ for (c = 0; c < MAX_CHANNELS; c++) { if (!(cval->cmask & (1 << c))) continue; - if (cval->cached & (1 << c)) { + if (cval->cached & (1 << (c + 1))) { err = snd_usb_set_cur_mix_value(cval, c + 1, idx, cval->cache_val[idx]); if (err < 0) --- linux-raspi2-4.2.0.orig/sound/usb/quirks-table.h +++ linux-raspi2-4.2.0/sound/usb/quirks-table.h @@ -2820,6 +2820,17 @@ .idProduct = 0x1020, }, +/* QinHeng devices */ +{ + USB_DEVICE(0x1a86, 0x752d), + .driver_info = (unsigned long) &(const struct snd_usb_audio_quirk) { + .vendor_name = "QinHeng", + .product_name = "CH345", + .ifnum = 1, + .type = QUIRK_MIDI_CH345 + } +}, + /* KeithMcMillen Stringport */ { USB_DEVICE(0x1f38, 0x0001), --- linux-raspi2-4.2.0.orig/sound/usb/quirks.c +++ linux-raspi2-4.2.0/sound/usb/quirks.c @@ -535,6 +535,7 @@ [QUIRK_MIDI_CME] = create_any_midi_quirk, [QUIRK_MIDI_AKAI] = create_any_midi_quirk, [QUIRK_MIDI_FTDI] = create_any_midi_quirk, + [QUIRK_MIDI_CH345] = create_any_midi_quirk, [QUIRK_AUDIO_STANDARD_INTERFACE] = create_standard_audio_quirk, [QUIRK_AUDIO_FIXED_ENDPOINT] = create_fixed_stream_quirk, [QUIRK_AUDIO_EDIROL_UAXX] = create_uaxx_quirk, @@ -1271,6 +1272,7 @@ case USB_ID(0x20b1, 0x000a): /* Gustard DAC-X20U */ case USB_ID(0x20b1, 0x2009): /* DIYINHK DSD DXD 384kHz USB to I2S/DSD */ case USB_ID(0x20b1, 0x2023): /* JLsounds I2SoverUSB */ + case USB_ID(0x20b1, 0x3023): /* Aune X1S 32BIT/384 DSD DAC */ if (fp->altsetting == 3) return SNDRV_PCM_FMTBIT_DSD_U32_BE; break; --- linux-raspi2-4.2.0.orig/sound/usb/usbaudio.h +++ linux-raspi2-4.2.0/sound/usb/usbaudio.h @@ -94,6 +94,7 @@ QUIRK_MIDI_AKAI, QUIRK_MIDI_US122L, QUIRK_MIDI_FTDI, + QUIRK_MIDI_CH345, QUIRK_AUDIO_STANDARD_INTERFACE, QUIRK_AUDIO_FIXED_ENDPOINT, QUIRK_AUDIO_EDIROL_UAXX, --- linux-raspi2-4.2.0.orig/tools/build/Makefile.feature +++ linux-raspi2-4.2.0/tools/build/Makefile.feature @@ -136,7 +136,7 @@ feature_display := 1 endif -feature_display_check = $(eval $(feature_check_code)) +feature_display_check = $(eval $(feature_check_display_code)) define feature_display_check_code ifneq ($(feature-$(1)), 1) feature_display := 1 --- linux-raspi2-4.2.0.orig/tools/hv/hv_kvp_daemon.8 +++ linux-raspi2-4.2.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-raspi2-4.2.0.orig/tools/hv/lsvmbus +++ linux-raspi2-4.2.0/tools/hv/lsvmbus @@ -0,0 +1,101 @@ +#!/usr/bin/env python + +import os +from optparse import OptionParser + +parser = OptionParser() +parser.add_option("-v", "--verbose", dest="verbose", + help="print verbose messages. Try -vv, -vvv for \ + more verbose messages", action="count") + +(options, args) = parser.parse_args() + +verbose = 0 +if options.verbose is not None: + verbose = options.verbose + +vmbus_sys_path = '/sys/bus/vmbus/devices' +if not os.path.isdir(vmbus_sys_path): + print "%s doesn't exist: exiting..." % vmbus_sys_path + exit(-1) + +vmbus_dev_dict = { + '{0e0b6031-5213-4934-818b-38d90ced39db}' : '[Operating system shutdown]', + '{9527e630-d0ae-497b-adce-e80ab0175caf}' : '[Time Synchronization]', + '{57164f39-9115-4e78-ab55-382f3bd5422d}' : '[Heartbeat]', + '{a9a0f4e7-5a45-4d96-b827-8a841e8c03e6}' : '[Data Exchange]', + '{35fa2e29-ea23-4236-96ae-3a6ebacba440}' : '[Backup (volume checkpoint)]', + '{34d14be3-dee4-41c8-9ae7-6b174977c192}' : '[Guest services]', + '{525074dc-8985-46e2-8057-a307dc18a502}' : '[Dynamic Memory]', + '{cfa8b69e-5b4a-4cc0-b98b-8ba1a1f3f95a}' : 'Synthetic mouse', + '{f912ad6d-2b17-48ea-bd65-f927a61c7684}' : 'Synthetic keyboard', + '{da0a7802-e377-4aac-8e77-0558eb1073f8}' : 'Synthetic framebuffer adapter', + '{f8615163-df3e-46c5-913f-f2d2f965ed0e}' : 'Synthetic network adapter', + '{32412632-86cb-44a2-9b5c-50d1417354f5}' : 'Synthetic IDE Controller', + '{ba6163d9-04a1-4d29-b605-72e2ffb1dc7f}' : 'Synthetic SCSI Controller', + '{2f9bcc4a-0069-4af3-b76b-6fd0be528cda}' : 'Synthetic fiber channel adapter', + '{8c2eaf3d-32a7-4b09-ab99-bd1f1c86b501}' : 'Synthetic RDMA adapter', + '{276aacf4-ac15-426c-98dd-7521ad3f01fe}' : '[Reserved system device]', + '{f8e65716-3cb3-4a06-9a60-1889c5cccab5}' : '[Reserved system device]', + '{3375baf4-9e15-4b30-b765-67acb10d607b}' : '[Reserved system device]', +} + +def get_vmbus_dev_attr(dev_name, attr): + try: + f = open('%s/%s/%s' % (vmbus_sys_path, dev_name, attr), 'r') + lines = f.readlines() + f.close() + except IOError: + lines = [] + + return lines + +class VMBus_Dev: + pass + + +vmbus_dev_list = [] + +for f in os.listdir(vmbus_sys_path): + vmbus_id = get_vmbus_dev_attr(f, 'id')[0].strip() + class_id = get_vmbus_dev_attr(f, 'class_id')[0].strip() + device_id = get_vmbus_dev_attr(f, 'device_id')[0].strip() + dev_desc = vmbus_dev_dict.get(class_id, 'Unknown') + + chn_vp_mapping = get_vmbus_dev_attr(f, 'channel_vp_mapping') + chn_vp_mapping = [c.strip() for c in chn_vp_mapping] + chn_vp_mapping = sorted(chn_vp_mapping, + key = lambda c : int(c.split(':')[0])) + + chn_vp_mapping = ['\tRel_ID=%s, target_cpu=%s' % + (c.split(':')[0], c.split(':')[1]) + for c in chn_vp_mapping] + d = VMBus_Dev() + d.sysfs_path = '%s/%s' % (vmbus_sys_path, f) + d.vmbus_id = vmbus_id + d.class_id = class_id + d.device_id = device_id + d.dev_desc = dev_desc + d.chn_vp_mapping = '\n'.join(chn_vp_mapping) + if d.chn_vp_mapping: + d.chn_vp_mapping += '\n' + + vmbus_dev_list.append(d) + + +vmbus_dev_list = sorted(vmbus_dev_list, key = lambda d : int(d.vmbus_id)) + +format0 = '%2s: %s' +format1 = '%2s: Class_ID = %s - %s\n%s' +format2 = '%2s: Class_ID = %s - %s\n\tDevice_ID = %s\n\tSysfs path: %s\n%s' + +for d in vmbus_dev_list: + if verbose == 0: + print ('VMBUS ID ' + format0) % (d.vmbus_id, d.dev_desc) + elif verbose == 1: + print ('VMBUS ID ' + format1) % \ + (d.vmbus_id, d.class_id, d.dev_desc, d.chn_vp_mapping) + else: + print ('VMBUS ID ' + format2) % \ + (d.vmbus_id, d.class_id, d.dev_desc, \ + d.device_id, d.sysfs_path, d.chn_vp_mapping) --- linux-raspi2-4.2.0.orig/tools/lguest/lguest.c +++ linux-raspi2-4.2.0/tools/lguest/lguest.c @@ -125,7 +125,11 @@ /* The list of Guest devices, based on command line arguments. */ static struct device_list devices; -struct virtio_pci_cfg_cap { +/* + * Just like struct virtio_pci_cfg_cap in uapi/linux/virtio_pci.h, + * but uses a u32 explicitly for the data. + */ +struct virtio_pci_cfg_cap_u32 { struct virtio_pci_cap cap; u32 pci_cfg_data; /* Data for BAR access. */ }; @@ -157,7 +161,7 @@ struct virtio_pci_notify_cap notify; struct virtio_pci_cap isr; struct virtio_pci_cap device; - struct virtio_pci_cfg_cap cfg_access; + struct virtio_pci_cfg_cap_u32 cfg_access; }; /* The device structure describes a single device. */ @@ -1291,7 +1295,7 @@ * only fault if they try to write with some invalid bar/offset/length. */ static bool valid_bar_access(struct device *d, - struct virtio_pci_cfg_cap *cfg_access) + struct virtio_pci_cfg_cap_u32 *cfg_access) { /* We only have 1 bar (BAR0) */ if (cfg_access->cap.bar != 0) --- linux-raspi2-4.2.0.orig/tools/lib/traceevent/event-parse.c +++ linux-raspi2-4.2.0/tools/lib/traceevent/event-parse.c @@ -3721,7 +3721,7 @@ struct format_field *field; struct printk_map *printk; long long val, fval; - unsigned long addr; + unsigned long long addr; char *str; unsigned char *hex; int print; @@ -3754,13 +3754,30 @@ */ if (!(field->flags & FIELD_IS_ARRAY) && field->size == pevent->long_size) { - addr = *(unsigned long *)(data + field->offset); + + /* Handle heterogeneous recording and processing + * architectures + * + * CASE I: + * Traces recorded on 32-bit devices (32-bit + * addressing) and processed on 64-bit devices: + * In this case, only 32 bits should be read. + * + * CASE II: + * Traces recorded on 64 bit devices and processed + * on 32-bit devices: + * In this case, 64 bits must be read. + */ + addr = (pevent->long_size == 8) ? + *(unsigned long long *)(data + field->offset) : + (unsigned long long)*(unsigned int *)(data + field->offset); + /* Check if it matches a print format */ printk = find_printk(pevent, addr); if (printk) trace_seq_puts(s, printk->printk); else - trace_seq_printf(s, "%lx", addr); + trace_seq_printf(s, "%llx", addr); break; } str = malloc(len + 1); --- linux-raspi2-4.2.0.orig/tools/net/Makefile +++ linux-raspi2-4.2.0/tools/net/Makefile @@ -4,6 +4,9 @@ LEX = flex YACC = bison +CFLAGS += -Wall -O2 +CFLAGS += -D__EXPORTED_HEADERS__ -I../../include/uapi -I../../include + %.yacc.c: %.y $(YACC) -o $@ -d $< @@ -12,15 +15,13 @@ all : bpf_jit_disasm bpf_dbg bpf_asm -bpf_jit_disasm : CFLAGS = -Wall -O2 -DPACKAGE='bpf_jit_disasm' +bpf_jit_disasm : CFLAGS += -DPACKAGE='bpf_jit_disasm' bpf_jit_disasm : LDLIBS = -lopcodes -lbfd -ldl bpf_jit_disasm : bpf_jit_disasm.o -bpf_dbg : CFLAGS = -Wall -O2 bpf_dbg : LDLIBS = -lreadline bpf_dbg : bpf_dbg.o -bpf_asm : CFLAGS = -Wall -O2 -I. bpf_asm : LDLIBS = bpf_asm : bpf_asm.o bpf_exp.yacc.o bpf_exp.lex.o bpf_exp.lex.o : bpf_exp.yacc.c --- linux-raspi2-4.2.0.orig/tools/perf/Documentation/perf-report.txt +++ linux-raspi2-4.2.0/tools/perf/Documentation/perf-report.txt @@ -109,6 +109,7 @@ - mispredict: "N" for predicted branch, "Y" for mispredicted branch - in_tx: branch in TSX transaction - abort: TSX transaction abort. + - cycles: Cycles in basic block And default sort keys are changed to comm, dso_from, symbol_from, dso_to and symbol_to, see '--branch-stack'. --- linux-raspi2-4.2.0.orig/tools/perf/Documentation/perf-top.txt +++ linux-raspi2-4.2.0/tools/perf/Documentation/perf-top.txt @@ -208,6 +208,27 @@ This option sets the time out limit. The default value is 500 ms. +-b:: +--branch-any:: + Enable taken branch stack sampling. Any type of taken branch may be sampled. + This is a shortcut for --branch-filter any. See --branch-filter for more infos. + +-j:: +--branch-filter:: + Enable taken branch stack sampling. Each sample captures a series of consecutive + taken branches. The number of branches captured with each sample depends on the + underlying hardware, the type of branches of interest, and the executed code. + It is possible to select the types of branches captured by enabling filters. + For a full list of modifiers please see the perf record manpage. + + The option requires at least one branch type among any, any_call, any_ret, ind_call, cond. + The privilege levels may be omitted, in which case, the privilege levels of the associated + event are applied to the branch filter. Both kernel (k) and hypervisor (hv) privilege + levels are subject to permissions. When sampling on multiple events, branch stack sampling + is enabled for all the sampling events. The sampled branch type is the same for all events. + The various filters must be specified as a comma separated list: --branch-filter any_ret,u,k + Note that this feature may not be available on all processors. + INTERACTIVE PROMPTING KEYS -------------------------- --- linux-raspi2-4.2.0.orig/tools/perf/Documentation/perf-trace.txt +++ linux-raspi2-4.2.0/tools/perf/Documentation/perf-trace.txt @@ -62,7 +62,6 @@ --verbose=:: Verbosity level. --i:: --no-inherit:: Child tasks do not inherit counters. --- linux-raspi2-4.2.0.orig/tools/perf/arch/alpha/Build +++ linux-raspi2-4.2.0/tools/perf/arch/alpha/Build @@ -0,0 +1 @@ +# empty --- linux-raspi2-4.2.0.orig/tools/perf/arch/mips/Build +++ linux-raspi2-4.2.0/tools/perf/arch/mips/Build @@ -0,0 +1 @@ +# empty --- linux-raspi2-4.2.0.orig/tools/perf/arch/parisc/Build +++ linux-raspi2-4.2.0/tools/perf/arch/parisc/Build @@ -0,0 +1 @@ +# empty --- linux-raspi2-4.2.0.orig/tools/perf/builtin-annotate.c +++ linux-raspi2-4.2.0/tools/perf/builtin-annotate.c @@ -187,6 +187,7 @@ * symbol, free he->ms.sym->src to signal we already * processed this symbol. */ + zfree(¬es->src->cycles_hist); zfree(¬es->src); } } --- linux-raspi2-4.2.0.orig/tools/perf/builtin-report.c +++ linux-raspi2-4.2.0/tools/perf/builtin-report.c @@ -53,6 +53,7 @@ bool mem_mode; bool header; bool header_only; + bool nonany_branch_mode; int max_stack; struct perf_read_values show_threads_values; const char *pretty_printing_style; @@ -102,6 +103,9 @@ if (!ui__has_annotation()) return 0; + hist__account_cycles(iter->sample->branch_stack, al, iter->sample, + rep->nonany_branch_mode); + if (sort__mode == SORT_MODE__BRANCH) { bi = he->branch_info; err = addr_map_symbol__inc_samples(&bi->from, evsel->idx); @@ -258,6 +262,12 @@ else callchain_param.record_mode = CALLCHAIN_FP; } + + /* ??? handle more cases than just ANY? */ + if (!(perf_evlist__combined_branch_type(session->evlist) & + PERF_SAMPLE_BRANCH_ANY)) + rep->nonany_branch_mode = true; + return 0; } --- linux-raspi2-4.2.0.orig/tools/perf/builtin-stat.c +++ linux-raspi2-4.2.0/tools/perf/builtin-stat.c @@ -694,7 +694,7 @@ static void print_aggr(char *prefix) { struct perf_evsel *counter; - int cpu, cpu2, s, s2, id, nr; + int cpu, s, s2, id, nr; double uval; u64 ena, run, val; @@ -707,8 +707,7 @@ val = ena = run = 0; nr = 0; for (cpu = 0; cpu < perf_evsel__nr_cpus(counter); cpu++) { - cpu2 = perf_evsel__cpus(counter)->map[cpu]; - s2 = aggr_get_id(evsel_list->cpus, cpu2); + s2 = aggr_get_id(perf_evsel__cpus(counter), cpu); if (s2 != id) continue; val += perf_counts(counter->counts, cpu, 0)->val; --- linux-raspi2-4.2.0.orig/tools/perf/builtin-top.c +++ linux-raspi2-4.2.0/tools/perf/builtin-top.c @@ -40,6 +40,7 @@ #include "util/xyarray.h" #include "util/sort.h" #include "util/intlist.h" +#include "util/parse-branch-options.h" #include "arch/common.h" #include "util/debug.h" @@ -695,6 +696,8 @@ perf_top__record_precise_ip(top, he, evsel->idx, ip); } + hist__account_cycles(iter->sample->branch_stack, al, iter->sample, + !(top->record_opts.branch_stack & PERF_SAMPLE_BRANCH_ANY)); return 0; } @@ -1171,6 +1174,12 @@ "don't try to adjust column width, use these fixed values"), OPT_UINTEGER(0, "proc-map-timeout", &opts->proc_map_timeout, "per thread proc mmap processing timeout in ms"), + OPT_CALLBACK_NOOPT('b', "branch-any", &opts->branch_stack, + "branch any", "sample any taken branches", + parse_branch_stack), + OPT_CALLBACK('j', "branch-filter", &opts->branch_stack, + "branch filter mask", "branch stack filter modes", + parse_branch_stack), OPT_END() }; const char * const top_usage[] = { --- linux-raspi2-4.2.0.orig/tools/perf/ui/browsers/annotate.c +++ linux-raspi2-4.2.0/tools/perf/ui/browsers/annotate.c @@ -16,6 +16,9 @@ u64 nr; }; +#define IPC_WIDTH 6 +#define CYCLES_WIDTH 6 + struct browser_disasm_line { struct rb_node rb_node; u32 idx; @@ -53,6 +56,7 @@ int max_jump_sources; int nr_jumps; bool searching_backwards; + bool have_cycles; u8 addr_width; u8 jumps_width; u8 target_width; @@ -96,6 +100,15 @@ return ui_browser__set_color(&browser->b, color); } +static int annotate_browser__pcnt_width(struct annotate_browser *ab) +{ + int w = 7 * ab->nr_events; + + if (ab->have_cycles) + w += IPC_WIDTH + CYCLES_WIDTH; + return w; +} + static void annotate_browser__write(struct ui_browser *browser, void *entry, int row) { struct annotate_browser *ab = container_of(browser, struct annotate_browser, b); @@ -106,7 +119,7 @@ (!current_entry || (browser->use_navkeypressed && !browser->navkeypressed))); int width = browser->width, printed; - int i, pcnt_width = 7 * ab->nr_events; + int i, pcnt_width = annotate_browser__pcnt_width(ab); double percent_max = 0.0; char bf[256]; @@ -116,19 +129,34 @@ } if (dl->offset != -1 && percent_max != 0.0) { - for (i = 0; i < ab->nr_events; i++) { - ui_browser__set_percent_color(browser, - bdl->samples[i].percent, - current_entry); - if (annotate_browser__opts.show_total_period) - slsmg_printf("%6" PRIu64 " ", - bdl->samples[i].nr); - else - slsmg_printf("%6.2f ", bdl->samples[i].percent); + if (percent_max != 0.0) { + for (i = 0; i < ab->nr_events; i++) { + ui_browser__set_percent_color(browser, + bdl->samples[i].percent, + current_entry); + if (annotate_browser__opts.show_total_period) + slsmg_printf("%6" PRIu64 " ", + bdl->samples[i].nr); + else + slsmg_printf("%6.2f ", bdl->samples[i].percent); + } + } else { + slsmg_write_nstring(" ", 7 * ab->nr_events); } } else { ui_browser__set_percent_color(browser, 0, current_entry); - slsmg_write_nstring(" ", pcnt_width); + slsmg_write_nstring(" ", 7 * ab->nr_events); + } + if (ab->have_cycles) { + if (dl->ipc) + slsmg_printf("%*.2f ", IPC_WIDTH - 1, dl->ipc); + else + slsmg_write_nstring(" ", IPC_WIDTH); + if (dl->cycles) + slsmg_printf("%*" PRIu64 " ", + CYCLES_WIDTH - 1, dl->cycles); + else + slsmg_write_nstring(" ", CYCLES_WIDTH); } SLsmg_write_char(' '); @@ -231,7 +259,7 @@ unsigned int from, to; struct map_symbol *ms = ab->b.priv; struct symbol *sym = ms->sym; - u8 pcnt_width = 7; + u8 pcnt_width = annotate_browser__pcnt_width(ab); /* PLT symbols contain external offsets */ if (strstr(sym->name, "@plt")) @@ -255,8 +283,6 @@ to = (u64)btarget->idx; } - pcnt_width *= ab->nr_events; - ui_browser__set_color(browser, HE_COLORSET_CODE); __ui_browser__line_arrow(browser, pcnt_width + 2 + ab->addr_width, from, to); @@ -266,9 +292,7 @@ { struct annotate_browser *ab = container_of(browser, struct annotate_browser, b); int ret = ui_browser__list_head_refresh(browser); - int pcnt_width; - - pcnt_width = 7 * ab->nr_events; + int pcnt_width = annotate_browser__pcnt_width(ab); if (annotate_browser__opts.jump_arrows) annotate_browser__draw_current_jump(browser); @@ -390,7 +414,7 @@ max_percent = bpos->samples[i].percent; } - if (max_percent < 0.01) { + if (max_percent < 0.01 && pos->ipc == 0) { RB_CLEAR_NODE(&bpos->rb_node); continue; } @@ -869,6 +893,75 @@ return map_symbol__tui_annotate(&he->ms, evsel, hbt); } + +static unsigned count_insn(struct annotate_browser *browser, u64 start, u64 end) +{ + unsigned n_insn = 0; + u64 offset; + + for (offset = start; offset <= end; offset++) { + if (browser->offsets[offset]) + n_insn++; + } + return n_insn; +} + +static void count_and_fill(struct annotate_browser *browser, u64 start, u64 end, + struct cyc_hist *ch) +{ + unsigned n_insn; + u64 offset; + + n_insn = count_insn(browser, start, end); + if (n_insn && ch->num && ch->cycles) { + float ipc = n_insn / ((double)ch->cycles / (double)ch->num); + + /* Hide data when there are too many overlaps. */ + if (ch->reset >= 0x7fff || ch->reset >= ch->num / 2) + return; + + for (offset = start; offset <= end; offset++) { + struct disasm_line *dl = browser->offsets[offset]; + + if (dl) + dl->ipc = ipc; + } + } +} + +/* + * This should probably be in util/annotate.c to share with the tty + * annotate, but right now we need the per byte offsets arrays, + * which are only here. + */ +static void annotate__compute_ipc(struct annotate_browser *browser, size_t size, + struct symbol *sym) +{ + u64 offset; + struct annotation *notes = symbol__annotation(sym); + + if (!notes->src || !notes->src->cycles_hist) + return; + + pthread_mutex_lock(¬es->lock); + for (offset = 0; offset < size; ++offset) { + struct cyc_hist *ch; + + ch = ¬es->src->cycles_hist[offset]; + if (ch && ch->cycles) { + struct disasm_line *dl; + + if (ch->have_start) + count_and_fill(browser, ch->start, offset, ch); + dl = browser->offsets[offset]; + if (dl && ch->num_aggr) + dl->cycles = ch->cycles_aggr / ch->num_aggr; + browser->have_cycles = true; + } + } + pthread_mutex_unlock(¬es->lock); +} + static void annotate_browser__mark_jump_targets(struct annotate_browser *browser, size_t size) { @@ -991,6 +1084,7 @@ } annotate_browser__mark_jump_targets(&browser, size); + annotate__compute_ipc(&browser, size, sym); browser.addr_width = browser.target_width = browser.min_addr_width = hex_width(size); browser.max_addr_width = hex_width(sym->end); @@ -1030,8 +1124,8 @@ ANNOTATE_CFG(jump_arrows), ANNOTATE_CFG(show_linenr), ANNOTATE_CFG(show_nr_jumps), - ANNOTATE_CFG(use_offset), ANNOTATE_CFG(show_total_period), + ANNOTATE_CFG(use_offset), }; #undef ANNOTATE_CFG --- linux-raspi2-4.2.0.orig/tools/perf/util/annotate.c +++ linux-raspi2-4.2.0/tools/perf/util/annotate.c @@ -473,17 +473,73 @@ return 0; } +/* The cycles histogram is lazily allocated. */ +static int symbol__alloc_hist_cycles(struct symbol *sym) +{ + struct annotation *notes = symbol__annotation(sym); + const size_t size = symbol__size(sym); + + notes->src->cycles_hist = calloc(size, sizeof(struct cyc_hist)); + if (notes->src->cycles_hist == NULL) + return -1; + return 0; +} + void symbol__annotate_zero_histograms(struct symbol *sym) { struct annotation *notes = symbol__annotation(sym); pthread_mutex_lock(¬es->lock); - if (notes->src != NULL) + if (notes->src != NULL) { memset(notes->src->histograms, 0, notes->src->nr_histograms * notes->src->sizeof_sym_hist); + if (notes->src->cycles_hist) + memset(notes->src->cycles_hist, 0, + symbol__size(sym) * sizeof(struct cyc_hist)); + } pthread_mutex_unlock(¬es->lock); } +static int __symbol__account_cycles(struct annotation *notes, + u64 start, + unsigned offset, unsigned cycles, + unsigned have_start) +{ + struct cyc_hist *ch; + + ch = notes->src->cycles_hist; + /* + * For now we can only account one basic block per + * final jump. But multiple could be overlapping. + * Always account the longest one. So when + * a shorter one has been already seen throw it away. + * + * We separately always account the full cycles. + */ + ch[offset].num_aggr++; + ch[offset].cycles_aggr += cycles; + + if (!have_start && ch[offset].have_start) + return 0; + if (ch[offset].num) { + if (have_start && (!ch[offset].have_start || + ch[offset].start > start)) { + ch[offset].have_start = 0; + ch[offset].cycles = 0; + ch[offset].num = 0; + if (ch[offset].reset < 0xffff) + ch[offset].reset++; + } else if (have_start && + ch[offset].start < start) + return 0; + } + ch[offset].have_start = have_start; + ch[offset].start = start; + ch[offset].cycles += cycles; + ch[offset].num++; + return 0; +} + static int __symbol__inc_addr_samples(struct symbol *sym, struct map *map, struct annotation *notes, int evidx, u64 addr) { @@ -506,7 +562,7 @@ return 0; } -static struct annotation *symbol__get_annotation(struct symbol *sym) +static struct annotation *symbol__get_annotation(struct symbol *sym, bool cycles) { struct annotation *notes = symbol__annotation(sym); @@ -514,6 +570,10 @@ if (symbol__alloc_hist(sym) < 0) return NULL; } + if (!notes->src->cycles_hist && cycles) { + if (symbol__alloc_hist_cycles(sym) < 0) + return NULL; + } return notes; } @@ -524,12 +584,73 @@ if (sym == NULL) return 0; - notes = symbol__get_annotation(sym); + notes = symbol__get_annotation(sym, false); if (notes == NULL) return -ENOMEM; return __symbol__inc_addr_samples(sym, map, notes, evidx, addr); } +static int symbol__account_cycles(u64 addr, u64 start, + struct symbol *sym, unsigned cycles) +{ + struct annotation *notes; + unsigned offset; + + if (sym == NULL) + return 0; + notes = symbol__get_annotation(sym, true); + if (notes == NULL) + return -ENOMEM; + if (addr < sym->start || addr >= sym->end) + return -ERANGE; + + if (start) { + if (start < sym->start || start >= sym->end) + return -ERANGE; + if (start >= addr) + start = 0; + } + offset = addr - sym->start; + return __symbol__account_cycles(notes, + start ? start - sym->start : 0, + offset, cycles, + !!start); +} + +int addr_map_symbol__account_cycles(struct addr_map_symbol *ams, + struct addr_map_symbol *start, + unsigned cycles) +{ + u64 saddr = 0; + int err; + + if (!cycles) + return 0; + + /* + * Only set start when IPC can be computed. We can only + * compute it when the basic block is completely in a single + * function. + * Special case the case when the jump is elsewhere, but + * it starts on the function start. + */ + if (start && + (start->sym == ams->sym || + (ams->sym && + start->addr == ams->sym->start + ams->map->start))) + saddr = start->al_addr; + if (saddr == 0) + pr_debug2("BB with bad start: addr %"PRIx64" start %"PRIx64" sym %"PRIx64" saddr %"PRIx64"\n", + ams->addr, + start ? start->addr : 0, + ams->sym ? ams->sym->start + ams->map->start : 0, + saddr); + err = symbol__account_cycles(ams->al_addr, saddr, ams->sym, cycles); + if (err) + pr_debug2("account_cycles failed %d\n", err); + return err; +} + int addr_map_symbol__inc_samples(struct addr_map_symbol *ams, int evidx) { return symbol__inc_addr_samples(ams->sym, ams->map, evidx, ams->al_addr); --- linux-raspi2-4.2.0.orig/tools/perf/util/annotate.h +++ linux-raspi2-4.2.0/tools/perf/util/annotate.h @@ -59,6 +59,8 @@ char *name; struct ins *ins; int line_nr; + float ipc; + u64 cycles; struct ins_operands ops; }; @@ -79,6 +81,17 @@ u64 addr[0]; }; +struct cyc_hist { + u64 start; + u64 cycles; + u64 cycles_aggr; + u32 num; + u32 num_aggr; + u8 have_start; + /* 1 byte padding */ + u16 reset; +}; + struct source_line_samples { double percent; double percent_sum; @@ -97,6 +110,7 @@ * @histogram: Array of addr hit histograms per event being monitored * @lines: If 'print_lines' is specified, per source code line percentages * @source: source parsed from a disassembler like objdump -dS + * @cyc_hist: Average cycles per basic block * * lines is allocated, percentages calculated and all sorted by percentage * when the annotation is about to be presented, so the percentages are for @@ -109,6 +123,7 @@ struct source_line *lines; int nr_histograms; int sizeof_sym_hist; + struct cyc_hist *cycles_hist; struct sym_hist histograms[0]; }; @@ -130,6 +145,10 @@ int addr_map_symbol__inc_samples(struct addr_map_symbol *ams, int evidx); +int addr_map_symbol__account_cycles(struct addr_map_symbol *ams, + struct addr_map_symbol *start, + unsigned cycles); + int hist_entry__inc_addr_samples(struct hist_entry *he, int evidx, u64 addr); int symbol__alloc_hist(struct symbol *sym); --- linux-raspi2-4.2.0.orig/tools/perf/util/event.h +++ linux-raspi2-4.2.0/tools/perf/util/event.h @@ -134,7 +134,8 @@ u64 predicted:1; u64 in_tx:1; u64 abort:1; - u64 reserved:60; + u64 cycles:16; + u64 reserved:44; }; struct branch_entry { --- linux-raspi2-4.2.0.orig/tools/perf/util/evlist.c +++ linux-raspi2-4.2.0/tools/perf/util/evlist.c @@ -1257,6 +1257,16 @@ return __perf_evlist__combined_sample_type(evlist); } +u64 perf_evlist__combined_branch_type(struct perf_evlist *evlist) +{ + struct perf_evsel *evsel; + u64 branch_type = 0; + + evlist__for_each(evlist, evsel) + branch_type |= evsel->attr.branch_sample_type; + return branch_type; +} + bool perf_evlist__valid_read_format(struct perf_evlist *evlist) { struct perf_evsel *first = perf_evlist__first(evlist), *pos = first; --- linux-raspi2-4.2.0.orig/tools/perf/util/evlist.h +++ linux-raspi2-4.2.0/tools/perf/util/evlist.h @@ -169,6 +169,7 @@ u64 perf_evlist__read_format(struct perf_evlist *evlist); u64 __perf_evlist__combined_sample_type(struct perf_evlist *evlist); u64 perf_evlist__combined_sample_type(struct perf_evlist *evlist); +u64 perf_evlist__combined_branch_type(struct perf_evlist *evlist); bool perf_evlist__sample_id_all(struct perf_evlist *evlist); u16 perf_evlist__id_hdr_size(struct perf_evlist *evlist); --- linux-raspi2-4.2.0.orig/tools/perf/util/header.c +++ linux-raspi2-4.2.0/tools/perf/util/header.c @@ -1442,7 +1442,7 @@ if (ph->needs_swap) nr = bswap_32(nr); - ph->env.nr_cpus_online = nr; + ph->env.nr_cpus_avail = nr; ret = readn(fd, &nr, sizeof(nr)); if (ret != sizeof(nr)) @@ -1451,7 +1451,7 @@ if (ph->needs_swap) nr = bswap_32(nr); - ph->env.nr_cpus_avail = nr; + ph->env.nr_cpus_online = nr; return 0; } --- linux-raspi2-4.2.0.orig/tools/perf/util/hist.c +++ linux-raspi2-4.2.0/tools/perf/util/hist.c @@ -151,6 +151,9 @@ hists__new_col_len(hists, HISTC_LOCAL_WEIGHT, 12); hists__new_col_len(hists, HISTC_GLOBAL_WEIGHT, 12); + if (h->srcline) + hists__new_col_len(hists, HISTC_SRCLINE, strlen(h->srcline)); + if (h->transaction) hists__new_col_len(hists, HISTC_TRANSACTION, hist_entry__transaction_len()); @@ -618,7 +621,8 @@ * and not events sampled. Thus we use a pseudo period of 1. */ he = __hists__add_entry(hists, al, iter->parent, &bi[i], NULL, - 1, 1, 0, true); + 1, bi->flags.cycles ? bi->flags.cycles : 1, + 0, true); if (he == NULL) return -ENOMEM; @@ -1414,6 +1418,39 @@ return 0; } +void hist__account_cycles(struct branch_stack *bs, struct addr_location *al, + struct perf_sample *sample, bool nonany_branch_mode) +{ + struct branch_info *bi; + + /* If we have branch cycles always annotate them. */ + if (bs && bs->nr && bs->entries[0].flags.cycles) { + int i; + + bi = sample__resolve_bstack(sample, al); + if (bi) { + struct addr_map_symbol *prev = NULL; + + /* + * Ignore errors, still want to process the + * other entries. + * + * For non standard branch modes always + * force no IPC (prev == NULL) + * + * Note that perf stores branches reversed from + * program order! + */ + for (i = bs->nr - 1; i >= 0; i--) { + addr_map_symbol__account_cycles(&bi[i].from, + nonany_branch_mode ? NULL : prev, + bi[i].flags.cycles); + prev = &bi[i].to; + } + free(bi); + } + } +} size_t perf_evlist__fprintf_nr_events(struct perf_evlist *evlist, FILE *fp) { --- linux-raspi2-4.2.0.orig/tools/perf/util/hist.h +++ linux-raspi2-4.2.0/tools/perf/util/hist.h @@ -47,6 +47,7 @@ HISTC_MEM_SNOOP, HISTC_MEM_DCACHELINE, HISTC_TRANSACTION, + HISTC_CYCLES, HISTC_NR_COLS, /* Last entry */ }; @@ -349,6 +350,9 @@ unsigned int hists__sort_list_width(struct hists *hists); +void hist__account_cycles(struct branch_stack *bs, struct addr_location *al, + struct perf_sample *sample, bool nonany_branch_mode); + struct option; int parse_filter_percentage(const struct option *opt __maybe_unused, const char *arg, int unset __maybe_unused); --- linux-raspi2-4.2.0.orig/tools/perf/util/parse-events.y +++ linux-raspi2-4.2.0/tools/perf/util/parse-events.y @@ -255,7 +255,7 @@ list_add_tail(&term->list, head); ALLOC_LIST(list); - ABORT_ON(parse_events_add_pmu(list, &data->idx, "cpu", head)); + ABORT_ON(parse_events_add_pmu(data, list, "cpu", head)); parse_events__free_terms(head); $$ = list; } --- linux-raspi2-4.2.0.orig/tools/perf/util/probe-event.c +++ linux-raspi2-4.2.0/tools/perf/util/probe-event.c @@ -274,12 +274,13 @@ int ret = 0; if (module) { - list_for_each_entry(dso, &host_machine->dsos.head, node) { - if (!dso->kernel) - continue; - if (strncmp(dso->short_name + 1, module, - dso->short_name_len - 2) == 0) - goto found; + char module_name[128]; + + snprintf(module_name, sizeof(module_name), "[%s]", module); + map = map_groups__find_by_name(&host_machine->kmaps, MAP__FUNCTION, module_name); + if (map) { + dso = map->dso; + goto found; } pr_debug("Failed to find module %s.\n", module); return -ENOENT; --- linux-raspi2-4.2.0.orig/tools/perf/util/probe-event.h +++ linux-raspi2-4.2.0/tools/perf/util/probe-event.h @@ -106,6 +106,8 @@ struct strlist *vars; /* Available variables */ }; +struct map; + /* Command string to events */ extern int parse_perf_probe_command(const char *cmd, struct perf_probe_event *pev); --- linux-raspi2-4.2.0.orig/tools/perf/util/session.c +++ linux-raspi2-4.2.0/tools/perf/util/session.c @@ -766,10 +766,18 @@ printf("... branch stack: nr:%" PRIu64 "\n", sample->branch_stack->nr); - for (i = 0; i < sample->branch_stack->nr; i++) - printf("..... %2"PRIu64": %016" PRIx64 " -> %016" PRIx64 "\n", - i, sample->branch_stack->entries[i].from, - sample->branch_stack->entries[i].to); + for (i = 0; i < sample->branch_stack->nr; i++) { + struct branch_entry *e = &sample->branch_stack->entries[i]; + + printf("..... %2"PRIu64": %016" PRIx64 " -> %016" PRIx64 " %hu cycles %s%s%s%s %x\n", + i, e->from, e->to, + e->flags.cycles, + e->flags.mispred ? "M" : " ", + e->flags.predicted ? "P" : " ", + e->flags.abort ? "A" : " ", + e->flags.in_tx ? "T" : " ", + (unsigned)e->flags.reserved); + } } static void regs_dump__printf(u64 mask, u64 *regs) --- linux-raspi2-4.2.0.orig/tools/perf/util/sort.c +++ linux-raspi2-4.2.0/tools/perf/util/sort.c @@ -9,7 +9,7 @@ const char default_parent_pattern[] = "^sys_|^do_page_fault"; const char *parent_pattern = default_parent_pattern; const char default_sort_order[] = "comm,dso,symbol"; -const char default_branch_sort_order[] = "comm,dso_from,symbol_from,dso_to,symbol_to"; +const char default_branch_sort_order[] = "comm,dso_from,symbol_from,symbol_to,cycles"; const char default_mem_sort_order[] = "local_weight,mem,sym,dso,symbol_daddr,dso_daddr,snoop,tlb,locked"; const char default_top_sort_order[] = "dso,symbol"; const char default_diff_sort_order[] = "dso,symbol"; @@ -526,6 +526,29 @@ return repsep_snprintf(bf, size, "%-*.*s", width, width, out); } +static int64_t +sort__cycles_cmp(struct hist_entry *left, struct hist_entry *right) +{ + return left->branch_info->flags.cycles - + right->branch_info->flags.cycles; +} + +static int hist_entry__cycles_snprintf(struct hist_entry *he, char *bf, + size_t size, unsigned int width) +{ + if (he->branch_info->flags.cycles == 0) + return repsep_snprintf(bf, size, "%-*s", width, "-"); + return repsep_snprintf(bf, size, "%-*hd", width, + he->branch_info->flags.cycles); +} + +struct sort_entry sort_cycles = { + .se_header = "Basic Block Cycles", + .se_cmp = sort__cycles_cmp, + .se_snprintf = hist_entry__cycles_snprintf, + .se_width_idx = HISTC_CYCLES, +}; + /* --sort daddr_sym */ static int64_t sort__daddr_cmp(struct hist_entry *left, struct hist_entry *right) @@ -1190,6 +1213,7 @@ DIM(SORT_MISPREDICT, "mispredict", sort_mispredict), DIM(SORT_IN_TX, "in_tx", sort_in_tx), DIM(SORT_ABORT, "abort", sort_abort), + DIM(SORT_CYCLES, "cycles", sort_cycles), }; #undef DIM --- linux-raspi2-4.2.0.orig/tools/perf/util/sort.h +++ linux-raspi2-4.2.0/tools/perf/util/sort.h @@ -185,6 +185,7 @@ SORT_MISPREDICT, SORT_ABORT, SORT_IN_TX, + SORT_CYCLES, /* memory mode specific sort keys */ __SORT_MEMORY_MODE, --- linux-raspi2-4.2.0.orig/tools/perf/util/symbol-elf.c +++ linux-raspi2-4.2.0/tools/perf/util/symbol-elf.c @@ -1260,8 +1260,6 @@ static int kcore__init(struct kcore *kcore, char *filename, int elfclass, bool temp) { - GElf_Ehdr *ehdr; - kcore->elfclass = elfclass; if (temp) @@ -1278,9 +1276,7 @@ if (!gelf_newehdr(kcore->elf, elfclass)) goto out_end; - ehdr = gelf_getehdr(kcore->elf, &kcore->ehdr); - if (!ehdr) - goto out_end; + memset(&kcore->ehdr, 0, sizeof(GElf_Ehdr)); return 0; @@ -1337,23 +1333,18 @@ static int kcore__add_phdr(struct kcore *kcore, int idx, off_t offset, u64 addr, u64 len) { - GElf_Phdr gphdr; - GElf_Phdr *phdr; - - phdr = gelf_getphdr(kcore->elf, idx, &gphdr); - if (!phdr) - return -1; - - phdr->p_type = PT_LOAD; - phdr->p_flags = PF_R | PF_W | PF_X; - phdr->p_offset = offset; - phdr->p_vaddr = addr; - phdr->p_paddr = 0; - phdr->p_filesz = len; - phdr->p_memsz = len; - phdr->p_align = page_size; + GElf_Phdr phdr = { + .p_type = PT_LOAD, + .p_flags = PF_R | PF_W | PF_X, + .p_offset = offset, + .p_vaddr = addr, + .p_paddr = 0, + .p_filesz = len, + .p_memsz = len, + .p_align = page_size, + }; - if (!gelf_update_phdr(kcore->elf, idx, phdr)) + if (!gelf_update_phdr(kcore->elf, idx, &phdr)) return -1; return 0; --- linux-raspi2-4.2.0.orig/tools/testing/selftests/ftrace/test.d/kprobe/add_and_remove.tc +++ linux-raspi2-4.2.0/tools/testing/selftests/ftrace/test.d/kprobe/add_and_remove.tc @@ -5,7 +5,7 @@ echo 0 > events/enable echo > kprobe_events -echo p:myevent do_fork > kprobe_events +echo p:myevent _do_fork > kprobe_events grep myevent kprobe_events test -d events/kprobes/myevent echo > kprobe_events --- linux-raspi2-4.2.0.orig/tools/testing/selftests/ftrace/test.d/kprobe/busy_check.tc +++ linux-raspi2-4.2.0/tools/testing/selftests/ftrace/test.d/kprobe/busy_check.tc @@ -5,7 +5,7 @@ echo 0 > events/enable echo > kprobe_events -echo p:myevent do_fork > kprobe_events +echo p:myevent _do_fork > kprobe_events test -d events/kprobes/myevent echo 1 > events/kprobes/myevent/enable echo > kprobe_events && exit 1 # this must fail --- linux-raspi2-4.2.0.orig/tools/testing/selftests/ftrace/test.d/kprobe/kprobe_args.tc +++ linux-raspi2-4.2.0/tools/testing/selftests/ftrace/test.d/kprobe/kprobe_args.tc @@ -5,7 +5,7 @@ echo 0 > events/enable echo > kprobe_events -echo 'p:testprobe do_fork $stack $stack0 +0($stack)' > kprobe_events +echo 'p:testprobe _do_fork $stack $stack0 +0($stack)' > kprobe_events grep testprobe kprobe_events test -d events/kprobes/testprobe echo 1 > events/kprobes/testprobe/enable --- linux-raspi2-4.2.0.orig/tools/testing/selftests/ftrace/test.d/kprobe/kprobe_ftrace.tc +++ linux-raspi2-4.2.0/tools/testing/selftests/ftrace/test.d/kprobe/kprobe_ftrace.tc @@ -6,31 +6,31 @@ # prepare echo nop > current_tracer -echo do_fork > set_ftrace_filter +echo _do_fork > set_ftrace_filter echo 0 > events/enable echo > kprobe_events -echo 'p:testprobe do_fork' > kprobe_events +echo 'p:testprobe _do_fork' > kprobe_events # kprobe on / ftrace off echo 1 > events/kprobes/testprobe/enable echo > trace ( echo "forked") grep testprobe trace -! grep 'do_fork <-' trace +! grep '_do_fork <-' trace # kprobe on / ftrace on echo function > current_tracer echo > trace ( echo "forked") grep testprobe trace -grep 'do_fork <-' trace +grep '_do_fork <-' trace # kprobe off / ftrace on echo 0 > events/kprobes/testprobe/enable echo > trace ( echo "forked") ! grep testprobe trace -grep 'do_fork <-' trace +grep '_do_fork <-' trace # kprobe on / ftrace on echo 1 > events/kprobes/testprobe/enable @@ -38,14 +38,14 @@ echo > trace ( echo "forked") grep testprobe trace -grep 'do_fork <-' trace +grep '_do_fork <-' trace # kprobe on / ftrace off echo nop > current_tracer echo > trace ( echo "forked") grep testprobe trace -! grep 'do_fork <-' trace +! grep '_do_fork <-' trace # cleanup echo nop > current_tracer --- linux-raspi2-4.2.0.orig/tools/testing/selftests/ftrace/test.d/kprobe/kretprobe_args.tc +++ linux-raspi2-4.2.0/tools/testing/selftests/ftrace/test.d/kprobe/kretprobe_args.tc @@ -5,7 +5,7 @@ echo 0 > events/enable echo > kprobe_events -echo 'r:testprobe2 do_fork $retval' > kprobe_events +echo 'r:testprobe2 _do_fork $retval' > kprobe_events grep testprobe2 kprobe_events test -d events/kprobes/testprobe2 echo 1 > events/kprobes/testprobe2/enable --- linux-raspi2-4.2.0.orig/tools/testing/selftests/seccomp/seccomp_bpf.c +++ linux-raspi2-4.2.0/tools/testing/selftests/seccomp/seccomp_bpf.c @@ -14,6 +14,7 @@ #include #include #include +#include #include #include #include @@ -82,7 +83,13 @@ }; #endif +#if __BYTE_ORDER == __LITTLE_ENDIAN #define syscall_arg(_n) (offsetof(struct seccomp_data, args[_n])) +#elif __BYTE_ORDER == __BIG_ENDIAN +#define syscall_arg(_n) (offsetof(struct seccomp_data, args[_n]) + sizeof(__u32)) +#else +#error "wut? Unknown __BYTE_ORDER?!" +#endif #define SIBLING_EXIT_UNKILLED 0xbadbeef #define SIBLING_EXIT_FAILURE 0xbadface @@ -1199,6 +1206,10 @@ # define ARCH_REGS struct user_pt_regs # define SYSCALL_NUM regs[8] # define SYSCALL_RET regs[0] +#elif defined(__powerpc__) +# define ARCH_REGS struct pt_regs +# define SYSCALL_NUM gpr[0] +# define SYSCALL_RET gpr[3] #else # error "Do not know how to find your architecture's registers and syscalls" #endif @@ -1232,7 +1243,7 @@ ret = ptrace(PTRACE_GETREGSET, tracee, NT_PRSTATUS, &iov); EXPECT_EQ(0, ret); -#if defined(__x86_64__) || defined(__i386__) || defined(__aarch64__) +#if defined(__x86_64__) || defined(__i386__) || defined(__aarch64__) || defined(__powerpc__) { regs.SYSCALL_NUM = syscall; } @@ -1396,6 +1407,8 @@ # define __NR_seccomp 383 # elif defined(__aarch64__) # define __NR_seccomp 277 +# elif defined(__powerpc__) +# define __NR_seccomp 358 # else # warning "seccomp syscall number unknown for this architecture" # define __NR_seccomp 0xffff --- linux-raspi2-4.2.0.orig/tools/testing/selftests/x86/entry_from_vm86.c +++ linux-raspi2-4.2.0/tools/testing/selftests/x86/entry_from_vm86.c @@ -28,6 +28,55 @@ static unsigned long load_addr = 0x10000; static int nerrs = 0; +static void sethandler(int sig, void (*handler)(int, siginfo_t *, void *), + int flags) +{ + struct sigaction sa; + memset(&sa, 0, sizeof(sa)); + sa.sa_sigaction = handler; + sa.sa_flags = SA_SIGINFO | flags; + sigemptyset(&sa.sa_mask); + if (sigaction(sig, &sa, 0)) + err(1, "sigaction"); +} + +static void clearhandler(int sig) +{ + struct sigaction sa; + memset(&sa, 0, sizeof(sa)); + sa.sa_handler = SIG_DFL; + sigemptyset(&sa.sa_mask); + if (sigaction(sig, &sa, 0)) + err(1, "sigaction"); +} + +static sig_atomic_t got_signal; + +static void sighandler(int sig, siginfo_t *info, void *ctx_void) +{ + ucontext_t *ctx = (ucontext_t*)ctx_void; + + if (ctx->uc_mcontext.gregs[REG_EFL] & X86_EFLAGS_VM || + (ctx->uc_mcontext.gregs[REG_CS] & 3) != 3) { + printf("[FAIL]\tSignal frame should not reflect vm86 mode\n"); + nerrs++; + } + + const char *signame; + if (sig == SIGSEGV) + signame = "SIGSEGV"; + else if (sig == SIGILL) + signame = "SIGILL"; + else + signame = "unexpected signal"; + + printf("[INFO]\t%s: FLAGS = 0x%lx, CS = 0x%hx\n", signame, + (unsigned long)ctx->uc_mcontext.gregs[REG_EFL], + (unsigned short)ctx->uc_mcontext.gregs[REG_CS]); + + got_signal = 1; +} + asm ( ".pushsection .rodata\n\t" ".type vmcode_bound, @object\n\t" @@ -38,6 +87,14 @@ "int3\n\t" "vmcode_sysenter:\n\t" "sysenter\n\t" + "vmcode_syscall:\n\t" + "syscall\n\t" + "vmcode_sti:\n\t" + "sti\n\t" + "vmcode_int3:\n\t" + "int3\n\t" + "vmcode_int80:\n\t" + "int $0x80\n\t" ".size vmcode, . - vmcode\n\t" "end_vmcode:\n\t" ".code32\n\t" @@ -45,9 +102,12 @@ ); extern unsigned char vmcode[], end_vmcode[]; -extern unsigned char vmcode_bound[], vmcode_sysenter[]; +extern unsigned char vmcode_bound[], vmcode_sysenter[], vmcode_syscall[], + vmcode_sti[], vmcode_int3[], vmcode_int80[]; -static void do_test(struct vm86plus_struct *v86, unsigned long eip, +/* Returns false if the test was skipped. */ +static bool do_test(struct vm86plus_struct *v86, unsigned long eip, + unsigned int rettype, unsigned int retarg, const char *text) { long ret; @@ -56,9 +116,10 @@ v86->regs.eip = eip; ret = vm86(VM86_ENTER, v86); - if (ret == -1 && errno == ENOSYS) { - printf("[SKIP]\tvm86 not supported\n"); - return; + if (ret == -1 && (errno == ENOSYS || errno == EPERM)) { + printf("[SKIP]\tvm86 %s\n", + errno == ENOSYS ? "not supported" : "not allowed"); + return false; } if (VM86_TYPE(ret) == VM86_INTx) { @@ -73,13 +134,30 @@ else sprintf(trapname, "%d", trapno); - printf("[OK]\tExited vm86 mode due to #%s\n", trapname); + printf("[INFO]\tExited vm86 mode due to #%s\n", trapname); } else if (VM86_TYPE(ret) == VM86_UNKNOWN) { - printf("[OK]\tExited vm86 mode due to unhandled GP fault\n"); + printf("[INFO]\tExited vm86 mode due to unhandled GP fault\n"); + } else if (VM86_TYPE(ret) == VM86_TRAP) { + printf("[INFO]\tExited vm86 mode due to a trap (arg=%ld)\n", + VM86_ARG(ret)); + } else if (VM86_TYPE(ret) == VM86_SIGNAL) { + printf("[INFO]\tExited vm86 mode due to a signal\n"); + } else if (VM86_TYPE(ret) == VM86_STI) { + printf("[INFO]\tExited vm86 mode due to STI\n"); } else { - printf("[OK]\tExited vm86 mode due to type %ld, arg %ld\n", + printf("[INFO]\tExited vm86 mode due to type %ld, arg %ld\n", VM86_TYPE(ret), VM86_ARG(ret)); } + + if (rettype == -1 || + (VM86_TYPE(ret) == rettype && VM86_ARG(ret) == retarg)) { + printf("[OK]\tReturned correctly\n"); + } else { + printf("[FAIL]\tIncorrect return reason\n"); + nerrs++; + } + + return true; } int main(void) @@ -105,10 +183,52 @@ assert((v86.regs.cs & 3) == 0); /* Looks like RPL = 0 */ /* #BR -- should deliver SIG??? */ - do_test(&v86, vmcode_bound - vmcode, "#BR"); + do_test(&v86, vmcode_bound - vmcode, VM86_INTx, 5, "#BR"); - /* SYSENTER -- should cause #GP or #UD depending on CPU */ - do_test(&v86, vmcode_sysenter - vmcode, "SYSENTER"); + /* + * SYSENTER -- should cause #GP or #UD depending on CPU. + * Expected return type -1 means that we shouldn't validate + * the vm86 return value. This will avoid problems on non-SEP + * CPUs. + */ + sethandler(SIGILL, sighandler, 0); + do_test(&v86, vmcode_sysenter - vmcode, -1, 0, "SYSENTER"); + clearhandler(SIGILL); + + /* + * SYSCALL would be a disaster in VM86 mode. Fortunately, + * there is no kernel that both enables SYSCALL and sets + * EFER.SCE, so it's #UD on all systems. But vm86 is + * buggy (or has a "feature"), so the SIGILL will actually + * be delivered. + */ + sethandler(SIGILL, sighandler, 0); + do_test(&v86, vmcode_syscall - vmcode, VM86_SIGNAL, 0, "SYSCALL"); + clearhandler(SIGILL); + + /* STI with VIP set */ + v86.regs.eflags |= X86_EFLAGS_VIP; + v86.regs.eflags &= ~X86_EFLAGS_IF; + do_test(&v86, vmcode_sti - vmcode, VM86_STI, 0, "STI with VIP set"); + + /* INT3 -- should cause #BP */ + do_test(&v86, vmcode_int3 - vmcode, VM86_TRAP, 3, "INT3"); + + /* INT80 -- should exit with "INTx 0x80" */ + v86.regs.eax = (unsigned int)-1; + do_test(&v86, vmcode_int80 - vmcode, VM86_INTx, 0x80, "int80"); + + /* Execute a null pointer */ + v86.regs.cs = 0; + v86.regs.ss = 0; + sethandler(SIGSEGV, sighandler, 0); + got_signal = 0; + if (do_test(&v86, 0, VM86_SIGNAL, 0, "Execute null pointer") && + !got_signal) { + printf("[FAIL]\tDid not receive SIGSEGV\n"); + nerrs++; + } + clearhandler(SIGSEGV); return (nerrs == 0 ? 0 : 1); } --- linux-raspi2-4.2.0.orig/ubuntu/Kconfig +++ linux-raspi2-4.2.0/ubuntu/Kconfig @@ -0,0 +1,18 @@ +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/dm-raid4-5/Kconfig" +## +## +## + +endmenu --- linux-raspi2-4.2.0.orig/ubuntu/Makefile +++ linux-raspi2-4.2.0/ubuntu/Makefile @@ -0,0 +1,27 @@ +# +# 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_DM_RAID45) += dm-raid4-5/ +## +## +## +ifneq ($(filter $(ARCH), i386 x86_64),) +obj-y += vbox/ +endif +## +## +## + +# This is a stupid trick to get kbuild to create ubuntu/built-in.o +obj- += foo.o --- linux-raspi2-4.2.0.orig/ubuntu/dm-raid4-5/BOM +++ linux-raspi2-4.2.0/ubuntu/dm-raid4-5/BOM @@ -0,0 +1,3 @@ +Downloaded from: http://people.redhat.com/~heinzm/sw/dm/dm-raid45/ +Current Version: 2009.04.24 (2.6.30-rc3) +Comments: All of the patches to dmraid1/dm-log, etc are upstream. --- linux-raspi2-4.2.0.orig/ubuntu/dm-raid4-5/Kconfig +++ linux-raspi2-4.2.0/ubuntu/dm-raid4-5/Kconfig @@ -0,0 +1,6 @@ +config DM_RAID45 + tristate "RAID 4/5 target (EXPERIMENTAL)" + depends on BLK_DEV_DM && XOR_BLOCKS && EXPERIMENTAL + default m + ---help--- + A target that supports RAID4 and RAID5 mappings. --- linux-raspi2-4.2.0.orig/ubuntu/dm-raid4-5/Makefile +++ linux-raspi2-4.2.0/ubuntu/dm-raid4-5/Makefile @@ -0,0 +1,4 @@ +EXTRA_CFLAGS += -I$(srctree)/drivers/md + +obj-$(CONFIG_DM_RAID45) := dm-raid45.o +dm-raid45-objs := dm-raid4-5.o dm-memcache.o dm-region-hash.o dm-message.o --- linux-raspi2-4.2.0.orig/ubuntu/dm-raid4-5/dm-memcache.c +++ linux-raspi2-4.2.0/ubuntu/dm-raid4-5/dm-memcache.c @@ -0,0 +1,303 @@ +/* + * Copyright (C) 2006-2008 Red Hat, Inc. All rights reserved. + * + * Module Author: Heinz Mauelshagen + * + * Device-mapper memory object handling: + * + * o allocate/free total_pages in a per client page pool. + * + * o allocate/free memory objects with chunks (1..n) of + * pages_per_chunk pages hanging off. + * + * This file is released under the GPL. + */ + +#define DM_MEM_CACHE_VERSION "0.2" + +#include "dm.h" +#include "dm-memcache.h" +#include +#include +#include + +struct dm_mem_cache_client { + spinlock_t lock; + mempool_t *objs_pool; + struct page_list *free_list; + unsigned objects; + unsigned chunks; + unsigned pages_per_chunk; + unsigned free_pages; + unsigned total_pages; +}; + +/* + * Free pages and page_list elements of client. + */ +static void free_cache_pages(struct page_list *list) +{ + while (list) { + struct page_list *pl = list; + + list = pl->next; + BUG_ON(!pl->page); + __free_page(pl->page); + kfree(pl); + } +} + +/* + * Alloc number of pages and page_list elements as required by client. + */ +static struct page_list *alloc_cache_pages(unsigned pages) +{ + struct page_list *pl, *ret = NULL; + struct page *page; + + while (pages--) { + page = alloc_page(GFP_NOIO); + if (!page) + goto err; + + pl = kmalloc(sizeof(*pl), GFP_NOIO); + if (!pl) { + __free_page(page); + goto err; + } + + pl->page = page; + pl->next = ret; + ret = pl; + } + + return ret; + +err: + free_cache_pages(ret); + return NULL; +} + +/* + * Allocate page_list elements from the pool to chunks of the memory object. + */ +static void alloc_chunks(struct dm_mem_cache_client *cl, + struct dm_mem_cache_object *obj) +{ + unsigned chunks = cl->chunks; + unsigned long flags; + + local_irq_save(flags); + local_irq_disable(); + while (chunks--) { + unsigned p = cl->pages_per_chunk; + + obj[chunks].pl = NULL; + + while (p--) { + struct page_list *pl; + + /* Take next element from free list */ + spin_lock(&cl->lock); + pl = cl->free_list; + BUG_ON(!pl); + cl->free_list = pl->next; + spin_unlock(&cl->lock); + + pl->next = obj[chunks].pl; + obj[chunks].pl = pl; + } + } + + local_irq_restore(flags); +} + +/* + * Free page_list elements putting them back onto free list + */ +static void free_chunks(struct dm_mem_cache_client *cl, + struct dm_mem_cache_object *obj) +{ + unsigned chunks = cl->chunks; + unsigned long flags; + struct page_list *next, *pl; + + local_irq_save(flags); + local_irq_disable(); + while (chunks--) { + for (pl = obj[chunks].pl; pl; pl = next) { + next = pl->next; + + spin_lock(&cl->lock); + pl->next = cl->free_list; + cl->free_list = pl; + cl->free_pages++; + spin_unlock(&cl->lock); + } + } + + local_irq_restore(flags); +} + +/* + * Create/destroy dm memory cache client resources. + */ +struct dm_mem_cache_client * +dm_mem_cache_client_create(unsigned objects, unsigned chunks, + unsigned pages_per_chunk) +{ + unsigned total_pages = objects * chunks * pages_per_chunk; + struct dm_mem_cache_client *client; + + BUG_ON(!total_pages); + client = kzalloc(sizeof(*client), GFP_KERNEL); + if (!client) + return ERR_PTR(-ENOMEM); + + client->objs_pool = mempool_create_kmalloc_pool(objects, + chunks * sizeof(struct dm_mem_cache_object)); + if (!client->objs_pool) + goto err; + + client->free_list = alloc_cache_pages(total_pages); + if (!client->free_list) + goto err1; + + spin_lock_init(&client->lock); + client->objects = objects; + client->chunks = chunks; + client->pages_per_chunk = pages_per_chunk; + client->free_pages = client->total_pages = total_pages; + return client; + +err1: + mempool_destroy(client->objs_pool); +err: + kfree(client); + return ERR_PTR(-ENOMEM); +} +EXPORT_SYMBOL(dm_mem_cache_client_create); + +void dm_mem_cache_client_destroy(struct dm_mem_cache_client *cl) +{ + BUG_ON(cl->free_pages != cl->total_pages); + free_cache_pages(cl->free_list); + mempool_destroy(cl->objs_pool); + kfree(cl); +} +EXPORT_SYMBOL(dm_mem_cache_client_destroy); + +/* + * Grow a clients cache by an amount of pages. + * + * Don't call from interrupt context! + */ +int dm_mem_cache_grow(struct dm_mem_cache_client *cl, unsigned objects) +{ + unsigned pages = objects * cl->chunks * cl->pages_per_chunk; + struct page_list *pl, *last; + + BUG_ON(!pages); + pl = alloc_cache_pages(pages); + if (!pl) + return -ENOMEM; + + last = pl; + while (last->next) + last = last->next; + + spin_lock_irq(&cl->lock); + last->next = cl->free_list; + cl->free_list = pl; + cl->free_pages += pages; + cl->total_pages += pages; + cl->objects++; + spin_unlock_irq(&cl->lock); + + mempool_resize(cl->objs_pool, cl->objects, GFP_NOIO); + return 0; +} +EXPORT_SYMBOL(dm_mem_cache_grow); + +/* Shrink a clients cache by an amount of pages */ +int dm_mem_cache_shrink(struct dm_mem_cache_client *cl, unsigned objects) +{ + int r; + unsigned pages = objects * cl->chunks * cl->pages_per_chunk, p = pages; + unsigned long flags; + struct page_list *last = NULL, *pl, *pos; + + BUG_ON(!pages); + + spin_lock_irqsave(&cl->lock, flags); + pl = pos = cl->free_list; + while (p-- && pos->next) { + last = pos; + pos = pos->next; + } + + if (++p) + r = -ENOMEM; + else { + r = 0; + cl->free_list = pos; + cl->free_pages -= pages; + cl->total_pages -= pages; + cl->objects--; + last->next = NULL; + } + spin_unlock_irqrestore(&cl->lock, flags); + + if (!r) { + free_cache_pages(pl); + mempool_resize(cl->objs_pool, cl->objects, GFP_NOIO); + } + + return r; +} +EXPORT_SYMBOL(dm_mem_cache_shrink); + +/* + * Allocate/free a memory object + * + * Can be called from interrupt context + */ +struct dm_mem_cache_object *dm_mem_cache_alloc(struct dm_mem_cache_client *cl) +{ + int r = 0; + unsigned pages = cl->chunks * cl->pages_per_chunk; + unsigned long flags; + struct dm_mem_cache_object *obj; + + obj = mempool_alloc(cl->objs_pool, GFP_NOIO); + if (!obj) + return ERR_PTR(-ENOMEM); + + spin_lock_irqsave(&cl->lock, flags); + if (pages > cl->free_pages) + r = -ENOMEM; + else + cl->free_pages -= pages; + spin_unlock_irqrestore(&cl->lock, flags); + + if (r) { + mempool_free(obj, cl->objs_pool); + return ERR_PTR(r); + } + + alloc_chunks(cl, obj); + return obj; +} +EXPORT_SYMBOL(dm_mem_cache_alloc); + +void dm_mem_cache_free(struct dm_mem_cache_client *cl, + struct dm_mem_cache_object *obj) +{ + free_chunks(cl, obj); + mempool_free(obj, cl->objs_pool); +} +EXPORT_SYMBOL(dm_mem_cache_free); + +MODULE_DESCRIPTION(DM_NAME " dm memory cache"); +MODULE_AUTHOR("Heinz Mauelshagen "); +MODULE_LICENSE("GPL"); --- linux-raspi2-4.2.0.orig/ubuntu/dm-raid4-5/dm-memcache.h +++ linux-raspi2-4.2.0/ubuntu/dm-raid4-5/dm-memcache.h @@ -0,0 +1,68 @@ +/* + * Copyright (C) 2006-2008 Red Hat, Inc. All rights reserved. + * + * Module Author: Heinz Mauelshagen + * + * Device-mapper memory object handling: + * + * o allocate/free total_pages in a per client page pool. + * + * o allocate/free memory objects with chunks (1..n) of + * pages_per_chunk pages hanging off. + * + * This file is released under the GPL. + */ + +#ifndef _DM_MEM_CACHE_H +#define _DM_MEM_CACHE_H + +#define DM_MEM_CACHE_H_VERSION "0.1" + +#include "dm.h" +#include + +static inline struct page_list *pl_elem(struct page_list *pl, unsigned p) +{ + while (pl && p--) + pl = pl->next; + + return pl; +} + +struct dm_mem_cache_object { + struct page_list *pl; /* Dynamically allocated array */ + void *private; /* Caller context reference */ +}; + +struct dm_mem_cache_client; + +/* + * Create/destroy dm memory cache client resources. + * + * On creation, a number of @objects with @chunks of + * @pages_per_chunk pages will be allocated. + */ +struct dm_mem_cache_client * +dm_mem_cache_client_create(unsigned objects, unsigned chunks, + unsigned pages_per_chunk); +void dm_mem_cache_client_destroy(struct dm_mem_cache_client *client); + +/* + * Grow/shrink a dm memory cache client resources + * by @objetcs amount of objects. + */ +int dm_mem_cache_grow(struct dm_mem_cache_client *client, unsigned objects); +int dm_mem_cache_shrink(struct dm_mem_cache_client *client, unsigned objects); + +/* + * Allocate/free a memory object + * + * On allocation one object with an amount of chunks and + * an amount of pages per chunk will be returned on success. + */ +struct dm_mem_cache_object * +dm_mem_cache_alloc(struct dm_mem_cache_client *client); +void dm_mem_cache_free(struct dm_mem_cache_client *client, + struct dm_mem_cache_object *object); + +#endif --- linux-raspi2-4.2.0.orig/ubuntu/dm-raid4-5/dm-message.c +++ linux-raspi2-4.2.0/ubuntu/dm-raid4-5/dm-message.c @@ -0,0 +1,184 @@ +/* + * Copyright (C) 2007,2008 Red Hat Inc. All rights reserved. + * + * Module Author: Heinz Mauelshagen + * + * General device-mapper message interface argument parser. + * + * This file is released under the GPL. + * + * device-mapper message parser. + * + */ + +#include "dm.h" +#include "dm-message.h" +#include +#include + +#define DM_MSG_PREFIX "dm_message" + +/* Basename of a path. */ +static inline char * +basename(char *s) +{ + char *p = strrchr(s, '/'); + + return p ? p + 1 : s; +} + +/* Get an argument depending on type. */ +static void +message_arguments(struct dm_msg *msg, int argc, char **argv) +{ + + if (argc) { + int i; + struct dm_message_argument *args = msg->spec->args; + + for (i = 0; i < args->num_args; i++) { + int r; + unsigned long **ptr = args->ptr; + enum dm_message_argument_type type = args->types[i]; + + switch (type) { + case dm_msg_base_t: + ((char **) ptr)[i] = basename(argv[i]); + break; + + case dm_msg_str_t: + ((char **) ptr)[i] = argv[i]; + break; + + case dm_msg_int_t: + r = sscanf(argv[i], "%d", ((int **) ptr)[i]); + goto check; + + case dm_msg_uint_t: + r = sscanf(argv[i], "%u", + ((unsigned **) ptr)[i]); + goto check; + + case dm_msg_uint64_t: + r = sscanf(argv[i], "%llu", + ((unsigned long long **) ptr)[i]); + +check: + if (r != 1) { + set_bit(dm_msg_ret_undef, &msg->ret); + set_bit(dm_msg_ret_arg, &msg->ret); + } + } + } + } +} + +/* Parse message options. */ +static void +message_options_parse(struct dm_msg *msg, int argc, char **argv) +{ + int hit = 0; + unsigned long *action; + size_t l1 = strlen(*argv), l_hit = 0; + struct dm_message_option *o = msg->spec->options; + char **option, **option_end = o->options + o->num_options; + + for (option = o->options, action = o->actions; + option < option_end; option++, action++) { + size_t l2 = strlen(*option); + + if (!strnicmp(*argv, *option, min(l1, l2))) { + hit++; + l_hit = l2; + set_bit(*action, &msg->action); + } + } + + /* Assume error. */ + msg->ret = 0; + set_bit(dm_msg_ret_option, &msg->ret); + if (!hit || l1 > l_hit) + set_bit(dm_msg_ret_undef, &msg->ret); /* Undefined option. */ + else if (hit > 1) + set_bit(dm_msg_ret_ambiguous, &msg->ret); /* Ambiguous option.*/ + else { + clear_bit(dm_msg_ret_option, &msg->ret); /* Option OK. */ + message_arguments(msg, --argc, ++argv); + } +} + +static inline void +print_ret(const char *caller, unsigned long ret) +{ + struct { + unsigned long err; + const char *err_str; + } static err_msg[] = { + { dm_msg_ret_ambiguous, "message ambiguous" }, + { dm_msg_ret_inval, "message invalid" }, + { dm_msg_ret_undef, "message undefined" }, + { dm_msg_ret_arg, "message argument" }, + { dm_msg_ret_argcount, "message argument count" }, + { dm_msg_ret_option, "option" }, + }, *e = ARRAY_END(err_msg); + + while (e-- > err_msg) { + if (test_bit(e->err, &ret)) + DMERR("%s %s", caller, e->err_str); + } +} + +/* Parse a message action. */ +int +dm_message_parse(const char *caller, struct dm_msg *msg, void *context, + int argc, char **argv) +{ + int hit = 0; + size_t l1, l_hit = 0; + struct dm_msg_spec *s, *s_hit = NULL, + *s_end = msg->specs + msg->num_specs; + + if (argc < 2) + return -EINVAL; + + l1 = strlen(*argv); + for (s = msg->specs; s < s_end; s++) { + size_t l2 = strlen(s->cmd); + + if (!strnicmp(*argv, s->cmd, min(l1, l2))) { + hit++; + l_hit = l2; + s_hit = s; + } + } + + msg->ret = 0; + if (!hit || l1 > l_hit) /* No hit or message string too long. */ + set_bit(dm_msg_ret_undef, &msg->ret); + else if (hit > 1) /* Ambiguous message. */ + set_bit(dm_msg_ret_ambiguous, &msg->ret); + else if (argc - 2 != s_hit->args->num_args) { + set_bit(dm_msg_ret_undef, &msg->ret); + set_bit(dm_msg_ret_argcount, &msg->ret); + } + + if (msg->ret) + goto bad; + + msg->action = 0; + msg->spec = s_hit; + set_bit(s_hit->action, &msg->action); + message_options_parse(msg, --argc, ++argv); + + if (!msg->ret) + return msg->spec->f(msg, context); + +bad: + print_ret(caller, msg->ret); + return -EINVAL; +} +EXPORT_SYMBOL(dm_message_parse); + +MODULE_DESCRIPTION(DM_NAME " device-mapper target message parser"); +MODULE_AUTHOR("Heinz Mauelshagen "); +MODULE_LICENSE("GPL"); --- linux-raspi2-4.2.0.orig/ubuntu/dm-raid4-5/dm-message.h +++ linux-raspi2-4.2.0/ubuntu/dm-raid4-5/dm-message.h @@ -0,0 +1,91 @@ +/* + * Copyright (C) 2007,2008 Red Hat, Inc. All rights reserved. + * + * Module Author: Heinz Mauelshagen + * + * General device-mapper message interface argument parser. + * + * This file is released under the GPL. + * + */ + +#ifndef DM_MESSAGE_H +#define DM_MESSAGE_H + +/* Factor out to dm.h. */ +/* Reference to array end. */ +#define ARRAY_END(a) ((a) + ARRAY_SIZE(a)) + +/* Message return bits. */ +enum dm_message_return { + dm_msg_ret_ambiguous, /* Action ambiguous. */ + dm_msg_ret_inval, /* Action invalid. */ + dm_msg_ret_undef, /* Action undefined. */ + + dm_msg_ret_option, /* Option error. */ + dm_msg_ret_arg, /* Argument error. */ + dm_msg_ret_argcount, /* Argument count error. */ +}; + +/* Message argument type conversions. */ +enum dm_message_argument_type { + dm_msg_base_t, /* Basename string. */ + dm_msg_str_t, /* String. */ + dm_msg_int_t, /* Signed int. */ + dm_msg_uint_t, /* Unsigned int. */ + dm_msg_uint64_t, /* Unsigned int 64. */ +}; + +/* A message option. */ +struct dm_message_option { + unsigned num_options; + char **options; + unsigned long *actions; +}; + +/* Message arguments and types. */ +struct dm_message_argument { + unsigned num_args; + unsigned long **ptr; + enum dm_message_argument_type types[]; +}; + +/* Client message. */ +struct dm_msg { + unsigned long action; /* Identified action. */ + unsigned long ret; /* Return bits. */ + unsigned num_specs; /* # of sepcifications listed. */ + struct dm_msg_spec *specs; /* Specification list. */ + struct dm_msg_spec *spec; /* Specification selected. */ +}; + +/* Secification of the message. */ +struct dm_msg_spec { + const char *cmd; /* Name of the command (i.e. 'bandwidth'). */ + unsigned long action; + struct dm_message_option *options; + struct dm_message_argument *args; + unsigned long parm; /* Parameter to pass through to callback. */ + /* Function to process for action. */ + int (*f) (struct dm_msg *msg, void *context); +}; + +/* Parameter access macros. */ +#define DM_MSG_PARM(msg) ((msg)->spec->parm) + +#define DM_MSG_STR_ARGS(msg, idx) ((char *) *(msg)->spec->args->ptr[idx]) +#define DM_MSG_INT_ARGS(msg, idx) ((int) *(msg)->spec->args->ptr[idx]) +#define DM_MSG_UINT_ARGS(msg, idx) ((unsigned) DM_MSG_INT_ARG(msg, idx)) +#define DM_MSG_UINT64_ARGS(msg, idx) ((uint64_t) *(msg)->spec->args->ptr[idx]) + +#define DM_MSG_STR_ARG(msg) DM_MSG_STR_ARGS(msg, 0) +#define DM_MSG_INT_ARG(msg) DM_MSG_INT_ARGS(msg, 0) +#define DM_MSG_UINT_ARG(msg) DM_MSG_UINT_ARGS(msg, 0) +#define DM_MSG_UINT64_ARG(msg) DM_MSG_UINT64_ARGS(msg, 0) + + +/* Parse a message and its options and optionally call a function back. */ +int dm_message_parse(const char *caller, struct dm_msg *msg, void *context, + int argc, char **argv); + +#endif --- linux-raspi2-4.2.0.orig/ubuntu/dm-raid4-5/dm-raid4-5.c +++ linux-raspi2-4.2.0/ubuntu/dm-raid4-5/dm-raid4-5.c @@ -0,0 +1,4536 @@ +/*[A[A + * Copyright (C) 2005-2009 Red Hat, Inc. All rights reserved. + * + * Module Author: Heinz Mauelshagen + * + * This file is released under the GPL. + * + * + * Linux 2.6 Device Mapper RAID4 and RAID5 target. + * + * Supports: + * o RAID4 with dedicated and selectable parity device + * o RAID5 with rotating parity (left+right, symmetric+asymmetric) + * o recovery of out of sync device for initial + * RAID set creation or after dead drive replacement + * o run time optimization of xor algorithm used to calculate parity + * + * + * Thanks to MD for: + * o the raid address calculation algorithm + * o the base of the biovec <-> page list copier. + * + * + * Uses region hash to keep track of how many writes are in flight to + * regions in order to use dirty log to keep state of regions to recover: + * + * o clean regions (those which are synchronized + * and don't have write io in flight) + * o dirty regions (those with write io in flight) + * + * + * On startup, any dirty regions are migrated to the + * 'nosync' state and are subject to recovery by the daemon. + * + * See raid_ctr() for table definition. + * + * FIXME: recovery bandwidth + */ + +static const char *version = "v0.2594b"; + +#include "dm.h" +#include "dm-memcache.h" +#include "dm-message.h" +#include "dm-raid45.h" + +#include +#include +#include + +#include +#include +#include +#include "dm-region-hash.h" + +#include +#include + +/* + * Configurable parameters + */ + +/* Minimum/maximum and default # of selectable stripes. */ +#define STRIPES_MIN 8 +#define STRIPES_MAX 16384 +#define STRIPES_DEFAULT 80 + +/* Maximum and default chunk size in sectors if not set in constructor. */ +#define CHUNK_SIZE_MIN 8 +#define CHUNK_SIZE_MAX 16384 +#define CHUNK_SIZE_DEFAULT 64 + +/* Default io size in sectors if not set in constructor. */ +#define IO_SIZE_MIN CHUNK_SIZE_MIN +#define IO_SIZE_DEFAULT IO_SIZE_MIN + +/* Recover io size default in sectors. */ +#define RECOVER_IO_SIZE_MIN 64 +#define RECOVER_IO_SIZE_DEFAULT 256 + +/* Default, minimum and maximum percentage of recover io bandwidth. */ +#define BANDWIDTH_DEFAULT 10 +#define BANDWIDTH_MIN 1 +#define BANDWIDTH_MAX 100 + +/* # of parallel recovered regions */ +#define RECOVERY_STRIPES_MIN 1 +#define RECOVERY_STRIPES_MAX 64 +#define RECOVERY_STRIPES_DEFAULT RECOVERY_STRIPES_MIN +/* + * END Configurable parameters + */ + +#define TARGET "dm-raid45" +#define DAEMON "kraid45d" +#define DM_MSG_PREFIX TARGET + +#define SECTORS_PER_PAGE (PAGE_SIZE >> SECTOR_SHIFT) + +/* Amount/size for __xor(). */ +#define XOR_SIZE PAGE_SIZE + +/* Check value in range. */ +#define range_ok(i, min, max) (i >= min && i <= max) + +/* Check argument is power of 2. */ +#define POWER_OF_2(a) (!(a & (a - 1))) + +/* Structure access macros. */ +/* Derive raid_set from stripe_cache pointer. */ +#define RS(x) container_of(x, struct raid_set, sc) + +/* Page reference. */ +#define PAGE(stripe, p) ((stripe)->obj[p].pl->page) + +/* Stripe chunk reference. */ +#define CHUNK(stripe, p) ((stripe)->chunk + p) + +/* Bio list reference. */ +#define BL(stripe, p, rw) (stripe->chunk[p].bl + rw) +#define BL_CHUNK(chunk, rw) (chunk->bl + rw) + +/* Page list reference. */ +#define PL(stripe, p) (stripe->obj[p].pl) +/* END: structure access macros. */ + +/* Factor out to dm-bio-list.h */ +static inline void bio_list_push(struct bio_list *bl, struct bio *bio) +{ + bio->bi_next = bl->head; + bl->head = bio; + + if (!bl->tail) + bl->tail = bio; +} + +/* Factor out to dm.h */ +#define TI_ERR_RET(str, ret) \ + do { ti->error = str; return ret; } while (0); +#define TI_ERR(str) TI_ERR_RET(str, -EINVAL) + +/* Macro to define access IO flags access inline functions. */ +#define BITOPS(name, what, var, flag) \ +static inline int TestClear ## name ## what(struct var *v) \ +{ return test_and_clear_bit(flag, &v->io.flags); } \ +static inline int TestSet ## name ## what(struct var *v) \ +{ return test_and_set_bit(flag, &v->io.flags); } \ +static inline void Clear ## name ## what(struct var *v) \ +{ clear_bit(flag, &v->io.flags); } \ +static inline void Set ## name ## what(struct var *v) \ +{ set_bit(flag, &v->io.flags); } \ +static inline int name ## what(struct var *v) \ +{ return test_bit(flag, &v->io.flags); } + +/*----------------------------------------------------------------- + * Stripe cache + * + * Cache for all reads and writes to raid sets (operational or degraded) + * + * We need to run all data to and from a RAID set through this cache, + * because parity chunks need to get calculated from data chunks + * or, in the degraded/resynchronization case, missing chunks need + * to be reconstructed using the other chunks of the stripe. + *---------------------------------------------------------------*/ +/* A chunk within a stripe (holds bios hanging off). */ +/* IO status flags for chunks of a stripe. */ +enum chunk_flags { + CHUNK_DIRTY, /* Pages of chunk dirty; need writing. */ + CHUNK_ERROR, /* IO error on any chunk page. */ + CHUNK_IO, /* Allow/prohibit IO on chunk pages. */ + CHUNK_LOCKED, /* Chunk pages locked during IO. */ + CHUNK_MUST_IO, /* Chunk must io. */ + CHUNK_UNLOCK, /* Enforce chunk unlock. */ + CHUNK_UPTODATE, /* Chunk pages are uptodate. */ +}; + +/* + * This does not work anymore with __REQ_* values being enums + * +#if READ != 0 || WRITE != 1 +#error dm-raid45: READ/WRITE != 0/1 used as index!!! +#endif +*/ + +enum bl_type { + WRITE_QUEUED = WRITE + 1, + WRITE_MERGED, + NR_BL_TYPES, /* Must be last one! */ +}; +struct stripe_chunk { + atomic_t cnt; /* Reference count. */ + struct stripe *stripe; /* Backpointer to stripe for endio(). */ + /* Bio lists for reads, writes, and writes merged. */ + struct bio_list bl[NR_BL_TYPES]; + struct { + unsigned long flags; /* IO status flags. */ + } io; +}; + +/* Define chunk bit operations. */ +BITOPS(Chunk, Dirty, stripe_chunk, CHUNK_DIRTY) +BITOPS(Chunk, Error, stripe_chunk, CHUNK_ERROR) +BITOPS(Chunk, Io, stripe_chunk, CHUNK_IO) +BITOPS(Chunk, Locked, stripe_chunk, CHUNK_LOCKED) +BITOPS(Chunk, MustIo, stripe_chunk, CHUNK_MUST_IO) +BITOPS(Chunk, Unlock, stripe_chunk, CHUNK_UNLOCK) +BITOPS(Chunk, Uptodate, stripe_chunk, CHUNK_UPTODATE) + +/* + * Stripe linked list indexes. Keep order, because the stripe + * and the stripe cache rely on the first 3! + */ +enum list_types { + LIST_FLUSH, /* Stripes to flush for io. */ + LIST_ENDIO, /* Stripes to endio. */ + LIST_LRU, /* Least recently used stripes. */ + SC_NR_LISTS, /* # of lists in stripe cache. */ + LIST_HASH = SC_NR_LISTS, /* Hashed stripes. */ + LIST_RECOVER = LIST_HASH, /* For recovery type stripes only. */ + STRIPE_NR_LISTS,/* To size array in struct stripe. */ +}; + +/* Adressing region recovery. */ +struct recover_addr { + struct dm_region *reg; /* Actual region to recover. */ + sector_t pos; /* Position within region to recover. */ + sector_t end; /* End of region to recover. */ +}; + +/* A stripe: the io object to handle all reads and writes to a RAID set. */ +struct stripe { + atomic_t cnt; /* Reference count. */ + struct stripe_cache *sc; /* Backpointer to stripe cache. */ + + /* + * 4 linked lists: + * o io list to flush io + * o endio list + * o LRU list to put stripes w/o reference count on + * o stripe cache hash + */ + struct list_head lists[STRIPE_NR_LISTS]; + + sector_t key; /* Hash key. */ + region_t region; /* Region stripe is mapped to. */ + + struct { + unsigned long flags; /* Stripe state flags (see below). */ + + /* + * Pending ios in flight: + * + * used to control move of stripe to endio list + */ + atomic_t pending; + + /* Sectors to read and write for multi page stripe sets. */ + unsigned size; + } io; + + /* Address region recovery. */ + struct recover_addr *recover; + + /* Lock on stripe (Future: for clustering). */ + void *lock; + + struct { + unsigned short parity; /* Parity chunk index. */ + short recover; /* Recovery chunk index. */ + } idx; + + /* + * This stripe's memory cache object (dm-mem-cache); + * i.e. the io chunk pages. + */ + struct dm_mem_cache_object *obj; + + /* Array of stripe sets (dynamically allocated). */ + struct stripe_chunk chunk[0]; +}; + +/* States stripes can be in (flags field). */ +enum stripe_states { + STRIPE_ERROR, /* io error on stripe. */ + STRIPE_MERGED, /* Writes got merged to be written. */ + STRIPE_RBW, /* Read-before-write stripe. */ + STRIPE_RECONSTRUCT, /* Reconstruct of a missing chunk required. */ + STRIPE_RECONSTRUCTED, /* Reconstructed of a missing chunk. */ + STRIPE_RECOVER, /* Stripe used for RAID set recovery. */ +}; + +/* Define stripe bit operations. */ +BITOPS(Stripe, Error, stripe, STRIPE_ERROR) +BITOPS(Stripe, Merged, stripe, STRIPE_MERGED) +BITOPS(Stripe, RBW, stripe, STRIPE_RBW) +BITOPS(Stripe, Reconstruct, stripe, STRIPE_RECONSTRUCT) +BITOPS(Stripe, Reconstructed, stripe, STRIPE_RECONSTRUCTED) +BITOPS(Stripe, Recover, stripe, STRIPE_RECOVER) + +/* A stripe hash. */ +struct stripe_hash { + struct list_head *hash; + unsigned buckets; + unsigned mask; + unsigned prime; + unsigned shift; +}; + +enum sc_lock_types { + LOCK_ENDIO, /* Protect endio list. */ + LOCK_LRU, /* Protect LRU list. */ + NR_LOCKS, /* To size array in struct stripe_cache. */ +}; + +/* A stripe cache. */ +struct stripe_cache { + /* Stripe hash. */ + struct stripe_hash hash; + + spinlock_t locks[NR_LOCKS]; /* Locks to protect lists. */ + + /* Stripes with io to flush, stripes to endio and LRU lists. */ + struct list_head lists[SC_NR_LISTS]; + + /* Slab cache to allocate stripes from. */ + struct { + struct kmem_cache *cache; /* Cache itself. */ + char name[32]; /* Unique name. */ + } kc; + + struct dm_io_client *dm_io_client; /* dm-io client resource context. */ + + /* dm-mem-cache client resource context. */ + struct dm_mem_cache_client *mem_cache_client; + + int stripes_parm; /* # stripes parameter from constructor. */ + atomic_t stripes; /* actual # of stripes in cache. */ + atomic_t stripes_to_set; /* # of stripes to resize cache to. */ + atomic_t stripes_last; /* last # of stripes in cache. */ + atomic_t active_stripes; /* actual # of active stripes in cache. */ + + /* REMOVEME: */ + atomic_t active_stripes_max; /* actual # of active stripes in cache. */ +}; + +/* Flag specs for raid_dev */ ; +enum raid_dev_flags { + DEV_FAILED, /* Device failed. */ + DEV_IO_QUEUED, /* Io got queued to device. */ +}; + +/* The raid device in a set. */ +struct raid_dev { + struct dm_dev *dev; + sector_t start; /* Offset to map to. */ + struct { /* Using struct to be able to BITOPS(). */ + unsigned long flags; /* raid_dev_flags. */ + } io; +}; + +BITOPS(Dev, Failed, raid_dev, DEV_FAILED) +BITOPS(Dev, IoQueued, raid_dev, DEV_IO_QUEUED) + +/* Flags spec for raid_set. */ +enum raid_set_flags { + RS_CHECK_OVERWRITE, /* Check for chunk overwrites. */ + RS_DEAD, /* RAID set inoperational. */ + RS_DEGRADED, /* Io errors on RAID device. */ + RS_DEVEL_STATS, /* REMOVEME: display status information. */ + RS_RECOVER, /* Do recovery. */ + RS_RECOVERY_BANDWIDTH, /* Allow recovery bandwidth (delayed bios). */ + RS_SC_BUSY, /* Stripe cache busy -> send an event. */ + RS_SUSPEND, /* Suspend RAID set. */ +}; + +/* REMOVEME: devel stats counters. */ +enum stats_types { + S_BIOS_READ, + S_BIOS_ADDED_READ, + S_BIOS_ENDIO_READ, + S_BIOS_WRITE, + S_BIOS_ADDED_WRITE, + S_BIOS_ENDIO_WRITE, + S_CAN_MERGE, + S_CANT_MERGE, + S_CONGESTED, + S_DM_IO_READ, + S_DM_IO_WRITE, + S_BANDWIDTH, + S_BARRIER, + S_BIO_COPY_PL_NEXT, + S_DEGRADED, + S_DELAYED_BIOS, + S_FLUSHS, + S_HITS_1ST, + S_IOS_POST, + S_INSCACHE, + S_MAX_LOOKUP, + S_CHUNK_LOCKED, + S_NO_BANDWIDTH, + S_NOT_CONGESTED, + S_NO_RW, + S_NOSYNC, + S_OVERWRITE, + S_PROHIBITCHUNKIO, + S_RECONSTRUCT_EI, + S_RECONSTRUCT_DEV, + S_RECONSTRUCT_SET, + S_RECONSTRUCTED, + S_REQUEUE, + S_STRIPE_ERROR, + S_SUM_DELAYED_BIOS, + S_XORS, + S_NR_STATS, /* # of stats counters. Must be last! */ +}; + +/* Status type -> string mappings. */ +struct stats_map { + const enum stats_types type; + const char *str; +}; + +static struct stats_map stats_map[] = { + { S_BIOS_READ, "r=" }, + { S_BIOS_ADDED_READ, "/" }, + { S_BIOS_ENDIO_READ, "/" }, + { S_BIOS_WRITE, " w=" }, + { S_BIOS_ADDED_WRITE, "/" }, + { S_BIOS_ENDIO_WRITE, "/" }, + { S_DM_IO_READ, " rc=" }, + { S_DM_IO_WRITE, " wc=" }, + { S_BANDWIDTH, "\nbw=" }, + { S_NO_BANDWIDTH, " no_bw=" }, + { S_BARRIER, "\nbarrier=" }, + { S_BIO_COPY_PL_NEXT, "\nbio_cp_next=" }, + { S_CAN_MERGE, "\nmerge=" }, + { S_CANT_MERGE, "/no_merge=" }, + { S_CHUNK_LOCKED, "\nchunk_locked=" }, + { S_CONGESTED, "\ncgst=" }, + { S_NOT_CONGESTED, "/not_cgst=" }, + { S_DEGRADED, "\ndegraded=" }, + { S_DELAYED_BIOS, "\ndel_bios=" }, + { S_SUM_DELAYED_BIOS, "/sum_del_bios=" }, + { S_FLUSHS, "\nflushs=" }, + { S_HITS_1ST, "\nhits_1st=" }, + { S_IOS_POST, " ios_post=" }, + { S_INSCACHE, " inscache=" }, + { S_MAX_LOOKUP, " maxlookup=" }, + { S_NO_RW, "\nno_rw=" }, + { S_NOSYNC, " nosync=" }, + { S_OVERWRITE, " ovr=" }, + { S_PROHIBITCHUNKIO, " prhbt_io=" }, + { S_RECONSTRUCT_EI, "\nrec_ei=" }, + { S_RECONSTRUCT_DEV, " rec_dev=" }, + { S_RECONSTRUCT_SET, " rec_set=" }, + { S_RECONSTRUCTED, " rec=" }, + { S_REQUEUE, " requeue=" }, + { S_STRIPE_ERROR, " stripe_err=" }, + { S_XORS, " xors=" }, +}; + +/* + * A RAID set. + */ +#define dm_rh_client dm_region_hash +enum count_type { IO_WORK = 0, IO_RECOVER, IO_NR_COUNT }; +typedef void (*xor_function_t)(unsigned count, unsigned long **data); +struct raid_set { + struct dm_target *ti; /* Target pointer. */ + + struct { + unsigned long flags; /* State flags. */ + struct mutex in_lock; /* Protects central input list below. */ + struct bio_list in; /* Pending ios (central input list). */ + struct bio_list work; /* ios work set. */ + wait_queue_head_t suspendq; /* suspend synchronization. */ + atomic_t in_process; /* counter of queued bios (suspendq). */ + atomic_t in_process_max;/* counter of queued bios max. */ + + /* io work. */ + struct workqueue_struct *wq; + struct delayed_work dws_do_raid; /* For main worker. */ + struct work_struct ws_do_table_event; /* For event worker. */ + } io; + + /* Stripe locking abstraction. */ + struct dm_raid45_locking_type *locking; + + struct stripe_cache sc; /* Stripe cache for this set. */ + + /* Xor optimization. */ + struct { + struct xor_func *f; + unsigned chunks; + unsigned speed; + } xor; + + /* Recovery parameters. */ + struct recover { + struct dm_dirty_log *dl; /* Dirty log. */ + struct dm_rh_client *rh; /* Region hash. */ + + struct dm_io_client *dm_io_client; /* recovery dm-io client. */ + /* dm-mem-cache client resource context for recovery stripes. */ + struct dm_mem_cache_client *mem_cache_client; + + struct list_head stripes; /* List of recovery stripes. */ + + region_t nr_regions; + region_t nr_regions_to_recover; + region_t nr_regions_recovered; + unsigned long start_jiffies; + unsigned long end_jiffies; + + unsigned bandwidth; /* Recovery bandwidth [%]. */ + unsigned bandwidth_work; /* Recovery bandwidth [factor]. */ + unsigned bandwidth_parm; /* " constructor parm. */ + unsigned io_size; /* recovery io size <= region size. */ + unsigned io_size_parm; /* recovery io size ctr parameter. */ + unsigned recovery; /* Recovery allowed/prohibited. */ + unsigned recovery_stripes; /* # of parallel recovery stripes. */ + + /* recovery io throttling. */ + atomic_t io_count[IO_NR_COUNT]; /* counter recover/regular io.*/ + unsigned long last_jiffies; + } recover; + + /* RAID set parameters. */ + struct { + struct raid_type *raid_type; /* RAID type (eg, RAID4). */ + unsigned raid_parms; /* # variable raid parameters. */ + + unsigned chunk_size; /* Sectors per chunk. */ + unsigned chunk_size_parm; + unsigned chunk_shift; /* rsector chunk size shift. */ + + unsigned io_size; /* Sectors per io. */ + unsigned io_size_parm; + unsigned io_mask; /* Mask for bio_copy_page_list(). */ + unsigned io_inv_mask; /* Mask for raid_address(). */ + + sector_t sectors_per_dev; /* Sectors per device. */ + + atomic_t failed_devs; /* Amount of devices failed. */ + + /* Index of device to initialize. */ + int dev_to_init; + int dev_to_init_parm; + + /* Raid devices dynamically allocated. */ + unsigned raid_devs; /* # of RAID devices below. */ + unsigned data_devs; /* # of RAID data devices. */ + + int ei; /* index of failed RAID device. */ + + /* Index of dedicated parity device (i.e. RAID4). */ + int pi; + int pi_parm; /* constructor parm for status output. */ + } set; + + /* REMOVEME: devel stats counters. */ + atomic_t stats[S_NR_STATS]; + + /* Dynamically allocated temporary pointers for xor(). */ + unsigned long **data; + + /* Dynamically allocated RAID devices. Alignment? */ + struct raid_dev dev[0]; +}; + +/* Define RAID set bit operations. */ +BITOPS(RS, Bandwidth, raid_set, RS_RECOVERY_BANDWIDTH) +BITOPS(RS, CheckOverwrite, raid_set, RS_CHECK_OVERWRITE) +BITOPS(RS, Dead, raid_set, RS_DEAD) +BITOPS(RS, Degraded, raid_set, RS_DEGRADED) +BITOPS(RS, DevelStats, raid_set, RS_DEVEL_STATS) +BITOPS(RS, Recover, raid_set, RS_RECOVER) +BITOPS(RS, ScBusy, raid_set, RS_SC_BUSY) +BITOPS(RS, Suspend, raid_set, RS_SUSPEND) +#undef BITOPS + +/*----------------------------------------------------------------- + * Raid-4/5 set structures. + *---------------------------------------------------------------*/ +/* RAID level definitions. */ +enum raid_level { + raid4, + raid5, +}; + +/* Symmetric/Asymmetric, Left/Right parity rotating algorithms. */ +enum raid_algorithm { + none, + left_asym, + right_asym, + left_sym, + right_sym, +}; + +struct raid_type { + const char *name; /* RAID algorithm. */ + const char *descr; /* Descriptor text for logging. */ + const unsigned parity_devs; /* # of parity devices. */ + const unsigned minimal_devs; /* minimal # of devices in set. */ + const enum raid_level level; /* RAID level. */ + const enum raid_algorithm algorithm; /* RAID algorithm. */ +}; + +/* Supported raid types and properties. */ +static struct raid_type raid_types[] = { + {"raid4", "RAID4 (dedicated parity disk)", 1, 3, raid4, none}, + {"raid5_la", "RAID5 (left asymmetric)", 1, 3, raid5, left_asym}, + {"raid5_ra", "RAID5 (right asymmetric)", 1, 3, raid5, right_asym}, + {"raid5_ls", "RAID5 (left symmetric)", 1, 3, raid5, left_sym}, + {"raid5_rs", "RAID5 (right symmetric)", 1, 3, raid5, right_sym}, +}; + +/* Address as calculated by raid_address(). */ +struct raid_address { + sector_t key; /* Hash key (address of stripe % chunk_size). */ + unsigned di, pi; /* Data and parity disks index. */ +}; + +/* REMOVEME: reset statistics counters. */ +static void stats_reset(struct raid_set *rs) +{ + unsigned s = S_NR_STATS; + + while (s--) + atomic_set(rs->stats + s, 0); +} + +/*---------------------------------------------------------------- + * RAID set management routines. + *--------------------------------------------------------------*/ +/* + * Begin small helper functions. + */ +/* No need to be called from region hash indirectly at dm_rh_dec(). */ +static void wake_dummy(void *context) {} + +/* Return # of io reference. */ +static int io_ref(struct raid_set *rs) +{ + return atomic_read(&rs->io.in_process); +} + +/* Get an io reference. */ +static void io_get(struct raid_set *rs) +{ + int p = atomic_inc_return(&rs->io.in_process); + + if (p > atomic_read(&rs->io.in_process_max)) + atomic_set(&rs->io.in_process_max, p); /* REMOVEME: max. */ +} + +/* Put the io reference and conditionally wake io waiters. */ +static void io_put(struct raid_set *rs) +{ + /* Intel: rebuild data corrupter? */ + if (atomic_dec_and_test(&rs->io.in_process)) + wake_up(&rs->io.suspendq); + else + BUG_ON(io_ref(rs) < 0); +} + +/* Wait until all io has been processed. */ +static void wait_ios(struct raid_set *rs) +{ + wait_event(rs->io.suspendq, !io_ref(rs)); +} + +/* Queue (optionally delayed) io work. */ +static void wake_do_raid_delayed(struct raid_set *rs, unsigned long delay) +{ + queue_delayed_work(rs->io.wq, &rs->io.dws_do_raid, delay); +} + +/* Queue io work immediately (called from region hash too). */ +static void wake_do_raid(void *context) +{ + struct raid_set *rs = context; + + queue_work(rs->io.wq, &rs->io.dws_do_raid.work); +} + +/* Calculate device sector offset. */ +static sector_t _sector(struct raid_set *rs, struct bio *bio) +{ + sector_t sector = bio->bi_sector; + + sector_div(sector, rs->set.data_devs); + return sector; +} + +/* Return # of active stripes in stripe cache. */ +static int sc_active(struct stripe_cache *sc) +{ + return atomic_read(&sc->active_stripes); +} + +/* Stripe cache busy indicator. */ +static int sc_busy(struct raid_set *rs) +{ + return sc_active(&rs->sc) > + atomic_read(&rs->sc.stripes) - (STRIPES_MIN / 2); +} + +/* Set chunks states. */ +enum chunk_dirty_type { CLEAN, DIRTY, ERROR }; +static void chunk_set(struct stripe_chunk *chunk, enum chunk_dirty_type type) +{ + switch (type) { + case CLEAN: + ClearChunkDirty(chunk); + break; + case DIRTY: + SetChunkDirty(chunk); + break; + case ERROR: + SetChunkError(chunk); + SetStripeError(chunk->stripe); + return; + default: + BUG(); + } + + SetChunkUptodate(chunk); + SetChunkIo(chunk); + ClearChunkError(chunk); +} + +/* Return region state for a sector. */ +static int region_state(struct raid_set *rs, sector_t sector, + enum dm_rh_region_states state) +{ + struct dm_rh_client *rh = rs->recover.rh; + region_t region = dm_rh_sector_to_region(rh, sector); + + return !!(dm_rh_get_state(rh, region, 1) & state); +} + +/* + * Return true in case a chunk should be read/written + * + * Conditions to read/write: + * o chunk not uptodate + * o chunk dirty + * + * Conditios to avoid io: + * o io already ongoing on chunk + * o io explitely prohibited + */ +static int chunk_io(struct stripe_chunk *chunk) +{ + /* 2nd run optimization (flag set below on first run). */ + if (TestClearChunkMustIo(chunk)) + return 1; + + /* Avoid io if prohibited or a locked chunk. */ + if (!ChunkIo(chunk) || ChunkLocked(chunk)) + return 0; + + if (!ChunkUptodate(chunk) || ChunkDirty(chunk)) { + SetChunkMustIo(chunk); /* 2nd run optimization. */ + return 1; + } + + return 0; +} + +/* Call a function on each chunk needing io unless device failed. */ +static unsigned for_each_io_dev(struct stripe *stripe, + void (*f_io)(struct stripe *stripe, unsigned p)) +{ + struct raid_set *rs = RS(stripe->sc); + unsigned p, r = 0; + + for (p = 0; p < rs->set.raid_devs; p++) { + if (chunk_io(CHUNK(stripe, p)) && !DevFailed(rs->dev + p)) { + f_io(stripe, p); + r++; + } + } + + return r; +} + +/* + * Index of device to calculate parity on. + * + * Either the parity device index *or* the selected + * device to init after a spare replacement. + */ +static int dev_for_parity(struct stripe *stripe, int *sync) +{ + struct raid_set *rs = RS(stripe->sc); + int r = region_state(rs, stripe->key, DM_RH_NOSYNC | DM_RH_RECOVERING); + + *sync = !r; + + /* Reconstruct a particular device ?. */ + if (r && rs->set.dev_to_init > -1) + return rs->set.dev_to_init; + else if (rs->set.raid_type->level == raid4) + return rs->set.pi; + else if (!StripeRecover(stripe)) + return stripe->idx.parity; + else + return -1; +} + +/* RAID set congested function. */ +static int rs_congested(void *congested_data, int bdi_bits) +{ + int r; + unsigned p; + struct raid_set *rs = congested_data; + + if (sc_busy(rs) || RSSuspend(rs)) + r = 1; + else for (r = 0, p = rs->set.raid_devs; !r && p--; ) { + /* If any of our component devices are overloaded. */ + struct request_queue *q = bdev_get_queue(rs->dev[p].dev->bdev); + + r |= bdi_congested(&q->backing_dev_info, bdi_bits); + } + + /* REMOVEME: statistics. */ + atomic_inc(rs->stats + (r ? S_CONGESTED : S_NOT_CONGESTED)); + return r; +} + +/* RAID device degrade check. */ +static void rs_check_degrade_dev(struct raid_set *rs, + struct stripe *stripe, unsigned p) +{ + if (TestSetDevFailed(rs->dev + p)) + return; + + /* Through an event in case of member device errors. */ + if (atomic_inc_return(&rs->set.failed_devs) > + rs->set.raid_type->parity_devs && + !TestSetRSDead(rs)) { + /* Display RAID set dead message once. */ + unsigned p; + char buf[BDEVNAME_SIZE]; + + DMERR("FATAL: too many devices failed -> RAID set broken"); + for (p = 0; p < rs->set.raid_devs; p++) { + if (DevFailed(rs->dev + p)) + DMERR("device /dev/%s failed", + bdevname(rs->dev[p].dev->bdev, buf)); + } + } + + /* Only log the first member error. */ + if (!TestSetRSDegraded(rs)) { + char buf[BDEVNAME_SIZE]; + + /* Store index for recovery. */ + rs->set.ei = p; + DMERR("CRITICAL: %sio error on device /dev/%s " + "in region=%llu; DEGRADING RAID set\n", + stripe ? "" : "FAKED ", + bdevname(rs->dev[p].dev->bdev, buf), + (unsigned long long) (stripe ? stripe->key : 0)); + DMERR("further device error messages suppressed"); + } + + schedule_work(&rs->io.ws_do_table_event); +} + +/* RAID set degrade check. */ +static void rs_check_degrade(struct stripe *stripe) +{ + struct raid_set *rs = RS(stripe->sc); + unsigned p = rs->set.raid_devs; + + while (p--) { + if (ChunkError(CHUNK(stripe, p))) + rs_check_degrade_dev(rs, stripe, p); + } +} + +/* Lookup a RAID device by name or by major:minor number. */ +static int raid_dev_lookup(struct raid_set *rs, struct raid_dev *dev_lookup) +{ + unsigned p; + struct raid_dev *dev; + + /* + * Must be an incremental loop, because the device array + * can have empty slots still on calls from raid_ctr() + */ + for (dev = rs->dev, p = 0; + dev->dev && p < rs->set.raid_devs; + dev++, p++) { + if (dev_lookup->dev->bdev->bd_dev == dev->dev->bdev->bd_dev) + return p; + } + + return -ENODEV; +} +/* + * End small helper functions. + */ + +/* + * Stripe hash functions + */ +/* Initialize/destroy stripe hash. */ +static int hash_init(struct stripe_hash *hash, unsigned stripes) +{ + unsigned buckets = 2, max_buckets = stripes >> 1; + static unsigned hash_primes[] = { + /* Table of primes for hash_fn/table size optimization. */ + 1, 2, 3, 7, 13, 27, 53, 97, 193, 389, 769, + 1543, 3079, 6151, 12289, 24593, 49157, 98317, + }; + + /* Calculate number of buckets (2^^n <= stripes / 2). */ + while (buckets < max_buckets) + buckets <<= 1; + + /* Allocate stripe hash buckets. */ + hash->hash = vmalloc(buckets * sizeof(*hash->hash)); + if (!hash->hash) + return -ENOMEM; + + hash->buckets = buckets; + hash->mask = buckets - 1; + hash->shift = ffs(buckets); + if (hash->shift > ARRAY_SIZE(hash_primes)) + hash->shift = ARRAY_SIZE(hash_primes) - 1; + + BUG_ON(hash->shift < 2); + hash->prime = hash_primes[hash->shift]; + + /* Initialize buckets. */ + while (buckets--) + INIT_LIST_HEAD(hash->hash + buckets); + return 0; +} + +static void hash_exit(struct stripe_hash *hash) +{ + if (hash->hash) { + vfree(hash->hash); + hash->hash = NULL; + } +} + +static unsigned hash_fn(struct stripe_hash *hash, sector_t key) +{ + return (unsigned) (((key * hash->prime) >> hash->shift) & hash->mask); +} + +static struct list_head *hash_bucket(struct stripe_hash *hash, sector_t key) +{ + return hash->hash + hash_fn(hash, key); +} + +/* Insert an entry into a hash. */ +static void stripe_insert(struct stripe_hash *hash, struct stripe *stripe) +{ + list_add(stripe->lists + LIST_HASH, hash_bucket(hash, stripe->key)); +} + +/* Lookup an entry in the stripe hash. */ +static struct stripe *stripe_lookup(struct stripe_cache *sc, sector_t key) +{ + unsigned look = 0; + struct stripe *stripe; + struct list_head *bucket = hash_bucket(&sc->hash, key); + + list_for_each_entry(stripe, bucket, lists[LIST_HASH]) { + look++; + + if (stripe->key == key) { + /* REMOVEME: statisics. */ + if (look > atomic_read(RS(sc)->stats + S_MAX_LOOKUP)) + atomic_set(RS(sc)->stats + S_MAX_LOOKUP, look); + return stripe; + } + } + + return NULL; +} + +/* Resize the stripe cache hash on size changes. */ +static int sc_hash_resize(struct stripe_cache *sc) +{ + /* Resize indicated ? */ + if (atomic_read(&sc->stripes) != atomic_read(&sc->stripes_last)) { + int r; + struct stripe_hash hash; + + r = hash_init(&hash, atomic_read(&sc->stripes)); + if (r) + return r; + + if (sc->hash.hash) { + unsigned b = sc->hash.buckets; + struct list_head *pos, *tmp; + + /* Walk old buckets and insert into new. */ + while (b--) { + list_for_each_safe(pos, tmp, sc->hash.hash + b) + stripe_insert(&hash, + list_entry(pos, struct stripe, + lists[LIST_HASH])); + } + + } + + hash_exit(&sc->hash); + memcpy(&sc->hash, &hash, sizeof(sc->hash)); + atomic_set(&sc->stripes_last, atomic_read(&sc->stripes)); + } + + return 0; +} +/* End hash stripe hash function. */ + +/* List add, delete, push and pop functions. */ +/* Add stripe to flush list. */ +#define DEL_LIST(lh) \ + if (!list_empty(lh)) \ + list_del_init(lh); + +/* Delete stripe from hash. */ +static void stripe_hash_del(struct stripe *stripe) +{ + DEL_LIST(stripe->lists + LIST_HASH); +} + +/* Return stripe reference count. */ +static inline int stripe_ref(struct stripe *stripe) +{ + return atomic_read(&stripe->cnt); +} + +static void stripe_flush_add(struct stripe *stripe) +{ + struct stripe_cache *sc = stripe->sc; + struct list_head *lh = stripe->lists + LIST_FLUSH; + + if (!StripeReconstruct(stripe) && list_empty(lh)) + list_add_tail(lh, sc->lists + LIST_FLUSH); +} + +/* + * Add stripe to LRU (inactive) list. + * + * Need lock, because of concurrent access from message interface. + */ +static void stripe_lru_add(struct stripe *stripe) +{ + if (!StripeRecover(stripe)) { + unsigned long flags; + struct list_head *lh = stripe->lists + LIST_LRU; + spinlock_t *lock = stripe->sc->locks + LOCK_LRU; + + spin_lock_irqsave(lock, flags); + if (list_empty(lh)) + list_add_tail(lh, stripe->sc->lists + LIST_LRU); + spin_unlock_irqrestore(lock, flags); + } +} + +#define POP_LIST(list) \ + do { \ + if (list_empty(sc->lists + (list))) \ + stripe = NULL; \ + else { \ + stripe = list_first_entry(sc->lists + (list), \ + struct stripe, \ + lists[(list)]); \ + list_del_init(stripe->lists + (list)); \ + } \ + } while (0); + +/* Pop an available stripe off the LRU list. */ +static struct stripe *stripe_lru_pop(struct stripe_cache *sc) +{ + struct stripe *stripe; + spinlock_t *lock = sc->locks + LOCK_LRU; + + spin_lock_irq(lock); + POP_LIST(LIST_LRU); + spin_unlock_irq(lock); + + return stripe; +} + +/* Pop an available stripe off the io list. */ +static struct stripe *stripe_io_pop(struct stripe_cache *sc) +{ + struct stripe *stripe; + + POP_LIST(LIST_FLUSH); + return stripe; +} + +/* Push a stripe safely onto the endio list to be handled by do_endios(). */ +static void stripe_endio_push(struct stripe *stripe) +{ + unsigned long flags; + struct stripe_cache *sc = stripe->sc; + struct list_head *stripe_list = stripe->lists + LIST_ENDIO, + *sc_list = sc->lists + LIST_ENDIO; + spinlock_t *lock = sc->locks + LOCK_ENDIO; + + /* This runs in parallel with do_endios(). */ + spin_lock_irqsave(lock, flags); + if (list_empty(stripe_list)) + list_add_tail(stripe_list, sc_list); + spin_unlock_irqrestore(lock, flags); + + wake_do_raid(RS(sc)); /* Wake myself. */ +} + +/* Pop a stripe off safely off the endio list. */ +static struct stripe *stripe_endio_pop(struct stripe_cache *sc) +{ + struct stripe *stripe; + spinlock_t *lock = sc->locks + LOCK_ENDIO; + + /* This runs in parallel with endio(). */ + spin_lock_irq(lock); + POP_LIST(LIST_ENDIO) + spin_unlock_irq(lock); + return stripe; +} +#undef POP_LIST + +/* + * Stripe cache locking functions + */ +/* Dummy lock function for single host RAID4+5. */ +static void *no_lock(sector_t key, enum dm_lock_type type) +{ + return &no_lock; +} + +/* Dummy unlock function for single host RAID4+5. */ +static void no_unlock(void *lock_handle) +{ +} + +/* No locking (for single host RAID 4+5). */ +static struct dm_raid45_locking_type locking_none = { + .lock = no_lock, + .unlock = no_unlock, +}; + +/* Lock a stripe (for clustering). */ +static int +stripe_lock(struct stripe *stripe, int rw, sector_t key) +{ + stripe->lock = RS(stripe->sc)->locking->lock(key, rw == READ ? DM_RAID45_SHARED : DM_RAID45_EX); + return stripe->lock ? 0 : -EPERM; +} + +/* Unlock a stripe (for clustering). */ +static void stripe_unlock(struct stripe *stripe) +{ + RS(stripe->sc)->locking->unlock(stripe->lock); + stripe->lock = NULL; +} + +/* Test io pending on stripe. */ +static int stripe_io_ref(struct stripe *stripe) +{ + return atomic_read(&stripe->io.pending); +} + +static void stripe_io_get(struct stripe *stripe) +{ + if (atomic_inc_return(&stripe->io.pending) == 1) + /* REMOVEME: statistics */ + atomic_inc(&stripe->sc->active_stripes); + else + BUG_ON(stripe_io_ref(stripe) < 0); +} + +static void stripe_io_put(struct stripe *stripe) +{ + if (atomic_dec_and_test(&stripe->io.pending)) { + if (unlikely(StripeRecover(stripe))) + /* Don't put recovery stripe on endio list. */ + wake_do_raid(RS(stripe->sc)); + else + /* Add regular stripe to endio list and wake daemon. */ + stripe_endio_push(stripe); + + /* REMOVEME: statistics */ + atomic_dec(&stripe->sc->active_stripes); + } else + BUG_ON(stripe_io_ref(stripe) < 0); +} + +/* Take stripe reference out. */ +static int stripe_get(struct stripe *stripe) +{ + int r; + struct list_head *lh = stripe->lists + LIST_LRU; + spinlock_t *lock = stripe->sc->locks + LOCK_LRU; + + /* Delete stripe from LRU (inactive) list if on. */ + spin_lock_irq(lock); + DEL_LIST(lh); + spin_unlock_irq(lock); + + BUG_ON(stripe_ref(stripe) < 0); + + /* Lock stripe on first reference */ + r = (atomic_inc_return(&stripe->cnt) == 1) ? + stripe_lock(stripe, WRITE, stripe->key) : 0; + + return r; +} +#undef DEL_LIST + +/* Return references on a chunk. */ +static int chunk_ref(struct stripe_chunk *chunk) +{ + return atomic_read(&chunk->cnt); +} + +/* Take out reference on a chunk. */ +static int chunk_get(struct stripe_chunk *chunk) +{ + return atomic_inc_return(&chunk->cnt); +} + +/* Drop reference on a chunk. */ +static void chunk_put(struct stripe_chunk *chunk) +{ + BUG_ON(atomic_dec_return(&chunk->cnt) < 0); +} + +/* + * Drop reference on a stripe. + * + * Move it to list of LRU stripes if zero. + */ +static void stripe_put(struct stripe *stripe) +{ + if (atomic_dec_and_test(&stripe->cnt)) { + BUG_ON(stripe_io_ref(stripe)); + stripe_unlock(stripe); + } else + BUG_ON(stripe_ref(stripe) < 0); +} + +/* Helper needed by for_each_io_dev(). */ +static void stripe_get_references(struct stripe *stripe, unsigned p) +{ + + /* + * Another one to reference the stripe in + * order to protect vs. LRU list moves. + */ + io_get(RS(stripe->sc)); /* Global io references. */ + stripe_get(stripe); + stripe_io_get(stripe); /* One for each chunk io. */ +} + +/* Helper for endio() to put all take references. */ +static void stripe_put_references(struct stripe *stripe) +{ + stripe_io_put(stripe); /* One for each chunk io. */ + stripe_put(stripe); + io_put(RS(stripe->sc)); +} + +/* + * Stripe cache functions. + */ +/* + * Invalidate all chunks (i.e. their pages) of a stripe. + * + * I only keep state for the whole chunk. + */ +static inline void stripe_chunk_invalidate(struct stripe_chunk *chunk) +{ + chunk->io.flags = 0; +} + +static void +stripe_chunks_invalidate(struct stripe *stripe) +{ + unsigned p = RS(stripe->sc)->set.raid_devs; + + while (p--) + stripe_chunk_invalidate(CHUNK(stripe, p)); +} + +/* Prepare stripe for (re)use. */ +static void stripe_invalidate(struct stripe *stripe) +{ + stripe->io.flags = 0; + stripe->idx.parity = stripe->idx.recover = -1; + stripe_chunks_invalidate(stripe); +} + +/* + * Allow io on all chunks of a stripe. + * If not set, IO will not occur; i.e. it's prohibited. + * + * Actual IO submission for allowed chunks depends + * on their !uptodate or dirty state. + */ +static void stripe_allow_io(struct stripe *stripe) +{ + unsigned p = RS(stripe->sc)->set.raid_devs; + + while (p--) + SetChunkIo(CHUNK(stripe, p)); +} + +/* Initialize a stripe. */ +static void stripe_init(struct stripe_cache *sc, struct stripe *stripe) +{ + unsigned i, p = RS(sc)->set.raid_devs; + + /* Work all io chunks. */ + while (p--) { + struct stripe_chunk *chunk = CHUNK(stripe, p); + + atomic_set(&chunk->cnt, 0); + chunk->stripe = stripe; + i = ARRAY_SIZE(chunk->bl); + while (i--) + bio_list_init(chunk->bl + i); + } + + stripe->sc = sc; + + + i = ARRAY_SIZE(stripe->lists); + while (i--) + INIT_LIST_HEAD(stripe->lists + i); + + stripe->io.size = RS(sc)->set.io_size; + atomic_set(&stripe->cnt, 0); + atomic_set(&stripe->io.pending, 0); + stripe_invalidate(stripe); +} + +/* Number of pages per chunk. */ +static inline unsigned chunk_pages(unsigned sectors) +{ + return dm_div_up(sectors, SECTORS_PER_PAGE); +} + +/* Number of pages per stripe. */ +static inline unsigned stripe_pages(struct raid_set *rs, unsigned io_size) +{ + return chunk_pages(io_size) * rs->set.raid_devs; +} + +/* Initialize part of page_list (recovery). */ +static void stripe_zero_pl_part(struct stripe *stripe, int p, + unsigned start, unsigned count) +{ + unsigned o = start / SECTORS_PER_PAGE, pages = chunk_pages(count); + /* Get offset into the page_list. */ + struct page_list *pl = pl_elem(PL(stripe, p), o); + + BUG_ON(!pl); + while (pl && pages--) { + BUG_ON(!pl->page); + memset(page_address(pl->page), 0, PAGE_SIZE); + pl = pl->next; + } +} + +/* Initialize parity chunk of stripe. */ +static void stripe_zero_chunk(struct stripe *stripe, int p) +{ + if (p > -1) + stripe_zero_pl_part(stripe, p, 0, stripe->io.size); +} + +/* Return dynamic stripe structure size. */ +static size_t stripe_size(struct raid_set *rs) +{ + return sizeof(struct stripe) + + rs->set.raid_devs * sizeof(struct stripe_chunk); +} + +/* Allocate a stripe and its memory object. */ +/* XXX adjust to cope with stripe cache and recovery stripe caches. */ +enum grow { SC_GROW, SC_KEEP }; +static struct stripe *stripe_alloc(struct stripe_cache *sc, + struct dm_mem_cache_client *mc, + enum grow grow) +{ + int r; + struct stripe *stripe; + + stripe = kmem_cache_zalloc(sc->kc.cache, GFP_KERNEL); + if (stripe) { + /* Grow the dm-mem-cache by one object. */ + if (grow == SC_GROW) { + r = dm_mem_cache_grow(mc, 1); + if (r) + goto err_free; + } + + stripe->obj = dm_mem_cache_alloc(mc); + if (!stripe->obj) + goto err_shrink; + + stripe_init(sc, stripe); + } + + return stripe; + +err_shrink: + if (grow == SC_GROW) + dm_mem_cache_shrink(mc, 1); +err_free: + kmem_cache_free(sc->kc.cache, stripe); + return NULL; +} + +/* + * Free a stripes memory object, shrink the + * memory cache and free the stripe itself. + */ +static void stripe_free(struct stripe *stripe, struct dm_mem_cache_client *mc) +{ + dm_mem_cache_free(mc, stripe->obj); + dm_mem_cache_shrink(mc, 1); + kmem_cache_free(stripe->sc->kc.cache, stripe); +} + +/* Free the recovery stripe. */ +static void stripe_recover_free(struct raid_set *rs) +{ + struct recover *rec = &rs->recover; + struct dm_mem_cache_client *mc; + + mc = rec->mem_cache_client; + rec->mem_cache_client = NULL; + if (mc) { + struct stripe *stripe; + + while (!list_empty(&rec->stripes)) { + stripe = list_first_entry(&rec->stripes, struct stripe, + lists[LIST_RECOVER]); + list_del(stripe->lists + LIST_RECOVER); + kfree(stripe->recover); + stripe_free(stripe, mc); + } + + dm_mem_cache_client_destroy(mc); + dm_io_client_destroy(rec->dm_io_client); + rec->dm_io_client = NULL; + } +} + +/* Grow stripe cache. */ +static int sc_grow(struct stripe_cache *sc, unsigned stripes, enum grow grow) +{ + int r = 0; + + /* Try to allocate this many (additional) stripes. */ + while (stripes--) { + struct stripe *stripe = + stripe_alloc(sc, sc->mem_cache_client, grow); + + if (likely(stripe)) { + stripe_lru_add(stripe); + atomic_inc(&sc->stripes); + } else { + r = -ENOMEM; + break; + } + } + + return r ? r : sc_hash_resize(sc); +} + +/* Shrink stripe cache. */ +static int sc_shrink(struct stripe_cache *sc, unsigned stripes) +{ + int r = 0; + + /* Try to get unused stripe from LRU list. */ + while (stripes--) { + struct stripe *stripe; + + stripe = stripe_lru_pop(sc); + if (stripe) { + /* An LRU stripe may never have ios pending! */ + BUG_ON(stripe_io_ref(stripe)); + BUG_ON(stripe_ref(stripe)); + atomic_dec(&sc->stripes); + /* Remove from hash if on before deletion. */ + stripe_hash_del(stripe); + stripe_free(stripe, sc->mem_cache_client); + } else { + r = -ENOENT; + break; + } + } + + /* Check if stats are still sane. */ + if (atomic_read(&sc->active_stripes_max) > + atomic_read(&sc->stripes)) + atomic_set(&sc->active_stripes_max, 0); + + if (r) + return r; + + return atomic_read(&sc->stripes) ? sc_hash_resize(sc) : 0; +} + +/* Create stripe cache and recovery. */ +static int sc_init(struct raid_set *rs, unsigned stripes) +{ + unsigned i, r, rstripes; + struct stripe_cache *sc = &rs->sc; + struct stripe *stripe; + struct recover *rec = &rs->recover; + struct mapped_device *md; + struct gendisk *disk; + + /* Initialize lists and locks. */ + i = ARRAY_SIZE(sc->lists); + while (i--) + INIT_LIST_HEAD(sc->lists + i); + + INIT_LIST_HEAD(&rec->stripes); + + /* Initialize endio and LRU list locks. */ + i = NR_LOCKS; + while (i--) + spin_lock_init(sc->locks + i); + + /* Initialize atomic variables. */ + atomic_set(&sc->stripes, 0); + atomic_set(&sc->stripes_to_set, 0); + atomic_set(&sc->active_stripes, 0); + atomic_set(&sc->active_stripes_max, 0); /* REMOVEME: statistics. */ + + /* + * We need a runtime unique # to suffix the kmem cache name + * because we'll have one for each active RAID set. + */ + md = dm_table_get_md(rs->ti->table); + disk = dm_disk(md); + sprintf(sc->kc.name, "%s-%d", TARGET, disk->first_minor); + dm_put(md); + sc->kc.cache = kmem_cache_create(sc->kc.name, stripe_size(rs), + 0, 0, NULL); + if (!sc->kc.cache) + return -ENOMEM; + + /* Create memory cache client context for RAID stripe cache. */ + sc->mem_cache_client = + dm_mem_cache_client_create(stripes, rs->set.raid_devs, + chunk_pages(rs->set.io_size)); + if (IS_ERR(sc->mem_cache_client)) + return PTR_ERR(sc->mem_cache_client); + + /* Create memory cache client context for RAID recovery stripe(s). */ + rstripes = rec->recovery_stripes; + rec->mem_cache_client = + dm_mem_cache_client_create(rstripes, rs->set.raid_devs, + chunk_pages(rec->io_size)); + if (IS_ERR(rec->mem_cache_client)) + return PTR_ERR(rec->mem_cache_client); + + /* Create dm-io client context for IO stripes. */ + sc->dm_io_client = + dm_io_client_create(); + if (IS_ERR(sc->dm_io_client)) + return PTR_ERR(sc->dm_io_client); + + /* FIXME: intermingeled with stripe cache initialization. */ + /* Create dm-io client context for recovery stripes. */ + rec->dm_io_client = + dm_io_client_create(); + if (IS_ERR(rec->dm_io_client)) + return PTR_ERR(rec->dm_io_client); + + /* Allocate stripes for set recovery. */ + while (rstripes--) { + stripe = stripe_alloc(sc, rec->mem_cache_client, SC_KEEP); + if (!stripe) + return -ENOMEM; + + stripe->recover = kzalloc(sizeof(*stripe->recover), GFP_KERNEL); + if (!stripe->recover) { + stripe_free(stripe, rec->mem_cache_client); + return -ENOMEM; + } + + SetStripeRecover(stripe); + stripe->io.size = rec->io_size; + list_add_tail(stripe->lists + LIST_RECOVER, &rec->stripes); + /* Don't add recovery stripes to LRU list! */ + } + + /* + * Allocate the stripe objetcs from the + * cache and add them to the LRU list. + */ + r = sc_grow(sc, stripes, SC_KEEP); + if (!r) + atomic_set(&sc->stripes_last, stripes); + + return r; +} + +/* Destroy the stripe cache. */ +static void sc_exit(struct stripe_cache *sc) +{ + struct raid_set *rs = RS(sc); + + if (sc->kc.cache) { + stripe_recover_free(rs); + BUG_ON(sc_shrink(sc, atomic_read(&sc->stripes))); + kmem_cache_destroy(sc->kc.cache); + sc->kc.cache = NULL; + + if (sc->mem_cache_client && !IS_ERR(sc->mem_cache_client)) + dm_mem_cache_client_destroy(sc->mem_cache_client); + + if (sc->dm_io_client && !IS_ERR(sc->dm_io_client)) + dm_io_client_destroy(sc->dm_io_client); + + hash_exit(&sc->hash); + } +} + +/* + * Calculate RAID address + * + * Delivers tuple with the index of the data disk holding the chunk + * in the set, the parity disks index and the start of the stripe + * within the address space of the set (used as the stripe cache hash key). + */ +/* thx MD. */ +static struct raid_address *raid_address(struct raid_set *rs, sector_t sector, + struct raid_address *addr) +{ + sector_t stripe, tmp; + + /* + * chunk_number = sector / chunk_size + * stripe_number = chunk_number / data_devs + * di = stripe % data_devs; + */ + stripe = sector >> rs->set.chunk_shift; + addr->di = sector_div(stripe, rs->set.data_devs); + + switch (rs->set.raid_type->level) { + case raid4: + addr->pi = rs->set.pi; + goto check_shift_di; + case raid5: + tmp = stripe; + addr->pi = sector_div(tmp, rs->set.raid_devs); + + switch (rs->set.raid_type->algorithm) { + case left_asym: /* Left asymmetric. */ + addr->pi = rs->set.data_devs - addr->pi; + case right_asym: /* Right asymmetric. */ +check_shift_di: + if (addr->di >= addr->pi) + addr->di++; + break; + case left_sym: /* Left symmetric. */ + addr->pi = rs->set.data_devs - addr->pi; + case right_sym: /* Right symmetric. */ + addr->di = (addr->pi + addr->di + 1) % + rs->set.raid_devs; + break; + case none: /* Ain't happen: RAID4 algorithm placeholder. */ + BUG(); + } + } + + /* + * Start offset of the stripes chunk on any single device of the RAID + * set, adjusted in case io size differs from chunk size. + */ + addr->key = (stripe << rs->set.chunk_shift) + + (sector & rs->set.io_inv_mask); + return addr; +} + +/* + * Copy data across between stripe pages and bio vectors. + * + * Pay attention to data alignment in stripe and bio pages. + */ +static void bio_copy_page_list(int rw, struct stripe *stripe, + struct page_list *pl, struct bio *bio) +{ + unsigned i, page_offset; + void *page_addr; + struct raid_set *rs = RS(stripe->sc); + struct bio_vec *bv; + + /* Get start page in page list for this sector. */ + i = (bio->bi_sector & rs->set.io_mask) / SECTORS_PER_PAGE; + pl = pl_elem(pl, i); + BUG_ON(!pl); + BUG_ON(!pl->page); + + page_addr = page_address(pl->page); + page_offset = to_bytes(bio->bi_sector & (SECTORS_PER_PAGE - 1)); + + /* Walk all segments and copy data across between bio_vecs and pages. */ + bio_for_each_segment(bv, bio, i) { + int len = bv->bv_len, size; + unsigned bio_offset = 0; + void *bio_addr = __bio_kmap_atomic(bio, i, KM_USER0); +redo: + size = (page_offset + len > PAGE_SIZE) ? + PAGE_SIZE - page_offset : len; + + if (rw == READ) + memcpy(bio_addr + bio_offset, + page_addr + page_offset, size); + else + memcpy(page_addr + page_offset, + bio_addr + bio_offset, size); + + page_offset += size; + if (page_offset == PAGE_SIZE) { + /* + * We reached the end of the chunk page -> + * need to refer to the next one to copy more data. + */ + len -= size; + if (len) { + /* Get next page. */ + pl = pl->next; + BUG_ON(!pl); + BUG_ON(!pl->page); + page_addr = page_address(pl->page); + page_offset = 0; + bio_offset += size; + /* REMOVEME: statistics. */ + atomic_inc(rs->stats + S_BIO_COPY_PL_NEXT); + goto redo; + } + } + + __bio_kunmap_atomic(bio_addr, KM_USER0); + } +} + +/* + * Xor optimization macros. + */ +/* Xor data pointer declaration and initialization macros. */ +#define DECLARE_2 unsigned long *d0 = data[0], *d1 = data[1] +#define DECLARE_3 DECLARE_2, *d2 = data[2] +#define DECLARE_4 DECLARE_3, *d3 = data[3] +#define DECLARE_5 DECLARE_4, *d4 = data[4] +#define DECLARE_6 DECLARE_5, *d5 = data[5] +#define DECLARE_7 DECLARE_6, *d6 = data[6] +#define DECLARE_8 DECLARE_7, *d7 = data[7] + +/* Xor unrole macros. */ +#define D2(n) d0[n] = d0[n] ^ d1[n] +#define D3(n) D2(n) ^ d2[n] +#define D4(n) D3(n) ^ d3[n] +#define D5(n) D4(n) ^ d4[n] +#define D6(n) D5(n) ^ d5[n] +#define D7(n) D6(n) ^ d6[n] +#define D8(n) D7(n) ^ d7[n] + +#define X_2(macro, offset) macro(offset); macro(offset + 1); +#define X_4(macro, offset) X_2(macro, offset); X_2(macro, offset + 2); +#define X_8(macro, offset) X_4(macro, offset); X_4(macro, offset + 4); +#define X_16(macro, offset) X_8(macro, offset); X_8(macro, offset + 8); +#define X_32(macro, offset) X_16(macro, offset); X_16(macro, offset + 16); +#define X_64(macro, offset) X_32(macro, offset); X_32(macro, offset + 32); + +/* Define a _xor_#chunks_#xors_per_run() function. */ +#define _XOR(chunks, xors_per_run) \ +static void _xor ## chunks ## _ ## xors_per_run(unsigned long **data) \ +{ \ + unsigned end = XOR_SIZE / sizeof(data[0]), i; \ + DECLARE_ ## chunks; \ +\ + for (i = 0; i < end; i += xors_per_run) { \ + X_ ## xors_per_run(D ## chunks, i); \ + } \ +} + +/* Define xor functions for 2 - 8 chunks and xors per run. */ +#define MAKE_XOR_PER_RUN(xors_per_run) \ + _XOR(2, xors_per_run); _XOR(3, xors_per_run); \ + _XOR(4, xors_per_run); _XOR(5, xors_per_run); \ + _XOR(6, xors_per_run); _XOR(7, xors_per_run); \ + _XOR(8, xors_per_run); + +MAKE_XOR_PER_RUN(8) /* Define _xor_*_8() functions. */ +MAKE_XOR_PER_RUN(16) /* Define _xor_*_16() functions. */ +MAKE_XOR_PER_RUN(32) /* Define _xor_*_32() functions. */ +MAKE_XOR_PER_RUN(64) /* Define _xor_*_64() functions. */ + +#define MAKE_XOR(xors_per_run) \ +struct { \ + void (*f)(unsigned long **); \ +} static xor_funcs ## xors_per_run[] = { \ + { NULL }, /* NULL pointers to optimize indexing in xor(). */ \ + { NULL }, \ + { _xor2_ ## xors_per_run }, \ + { _xor3_ ## xors_per_run }, \ + { _xor4_ ## xors_per_run }, \ + { _xor5_ ## xors_per_run }, \ + { _xor6_ ## xors_per_run }, \ + { _xor7_ ## xors_per_run }, \ + { _xor8_ ## xors_per_run }, \ +}; \ +\ +static void xor_ ## xors_per_run(unsigned n, unsigned long **data) \ +{ \ + /* Call respective function for amount of chunks. */ \ + xor_funcs ## xors_per_run[n].f(data); \ +} + +/* Define xor_8() - xor_64 functions. */ +MAKE_XOR(8) +MAKE_XOR(16) +MAKE_XOR(32) +MAKE_XOR(64) + +/* Maximum number of chunks, which can be xor'ed in one go. */ +#define XOR_CHUNKS_MAX (ARRAY_SIZE(xor_funcs8) - 1) + +static void xor_blocks_wrapper(unsigned n, unsigned long **data) +{ + BUG_ON(n < 2 || n > MAX_XOR_BLOCKS + 1); + xor_blocks(n - 1, XOR_SIZE, (void *) data[0], (void **) data + 1); +} + +struct xor_func { + xor_function_t f; + const char *name; +} static xor_funcs[] = { + { xor_8, "xor_8" }, + { xor_16, "xor_16" }, + { xor_32, "xor_32" }, + { xor_64, "xor_64" }, + { xor_blocks_wrapper, "xor_blocks" }, +}; + +/* + * Check, if chunk has to be xored in/out: + * + * o if writes are queued + * o if writes are merged + * o if stripe is to be reconstructed + * o if recovery stripe + */ +static inline int chunk_must_xor(struct stripe_chunk *chunk) +{ + if (ChunkUptodate(chunk)) { + BUG_ON(!bio_list_empty(BL_CHUNK(chunk, WRITE_QUEUED)) && + !bio_list_empty(BL_CHUNK(chunk, WRITE_MERGED))); + + if (!bio_list_empty(BL_CHUNK(chunk, WRITE_QUEUED)) || + !bio_list_empty(BL_CHUNK(chunk, WRITE_MERGED))) + return 1; + + if (StripeReconstruct(chunk->stripe) || + StripeRecover(chunk->stripe)) + return 1; + } + + return 0; +} + +/* + * Calculate crc. + * + * This indexes into the chunks of a stripe and their pages. + * + * All chunks will be xored into the indexed (@pi) + * chunk in maximum groups of xor.chunks. + * + */ +static void xor(struct stripe *stripe, unsigned pi, unsigned sector) +{ + struct raid_set *rs = RS(stripe->sc); + unsigned max_chunks = rs->xor.chunks, n = 1, + o = sector / SECTORS_PER_PAGE, /* Offset into the page_list. */ + p = rs->set.raid_devs; + unsigned long **d = rs->data; + xor_function_t xor_f = rs->xor.f->f; + + BUG_ON(sector > stripe->io.size); + + /* Address of parity page to xor into. */ + d[0] = page_address(pl_elem(PL(stripe, pi), o)->page); + + while (p--) { + /* Preset pointers to data pages. */ + if (p != pi && chunk_must_xor(CHUNK(stripe, p))) + d[n++] = page_address(pl_elem(PL(stripe, p), o)->page); + + /* If max chunks -> xor. */ + if (n == max_chunks) { + xor_f(n, d); + n = 1; + } + } + + /* If chunks -> xor. */ + if (n > 1) + xor_f(n, d); +} + +/* Common xor loop through all stripe page lists. */ +static void common_xor(struct stripe *stripe, sector_t count, + unsigned off, unsigned pi) +{ + unsigned sector; + + BUG_ON(!count); + for (sector = off; sector < count; sector += SECTORS_PER_PAGE) + xor(stripe, pi, sector); + + /* Set parity page uptodate and clean. */ + chunk_set(CHUNK(stripe, pi), CLEAN); + atomic_inc(RS(stripe->sc)->stats + S_XORS); /* REMOVEME: statistics. */ +} + +/* + * Calculate parity sectors on intact stripes. + * + * Need to calculate raid address for recover stripe, because its + * chunk sizes differs and is typically larger than io chunk size. + */ +static void parity_xor(struct stripe *stripe) +{ + struct raid_set *rs = RS(stripe->sc); + unsigned chunk_size = rs->set.chunk_size, io_size = stripe->io.size, + xor_size = chunk_size > io_size ? io_size : chunk_size; + sector_t off; + + /* This can be the recover stripe with a larger io size. */ + for (off = 0; off < io_size; off += xor_size) { + /* + * Recover stripe is likely bigger than regular io + * ones and has no precalculated parity disk index -> + * need to calculate RAID address. + */ + if (unlikely(StripeRecover(stripe))) { + struct raid_address addr; + + raid_address(rs, + (stripe->key + off) * rs->set.data_devs, + &addr); + stripe->idx.parity = addr.pi; + stripe_zero_pl_part(stripe, addr.pi, off, xor_size); + } + + common_xor(stripe, xor_size, off, stripe->idx.parity); + chunk_set(CHUNK(stripe, stripe->idx.parity), DIRTY); + } +} + +/* Reconstruct missing chunk. */ +static void stripe_reconstruct(struct stripe *stripe) +{ + struct raid_set *rs = RS(stripe->sc); + int p = rs->set.raid_devs, pr = stripe->idx.recover; + + BUG_ON(pr < 0); + + /* Check if all but the chunk to be reconstructed are uptodate. */ + while (p--) + BUG_ON(p != pr && !ChunkUptodate(CHUNK(stripe, p))); + + /* REMOVEME: statistics. */ + atomic_inc(rs->stats + (RSDegraded(rs) ? S_RECONSTRUCT_EI : + S_RECONSTRUCT_DEV)); + /* Zero chunk to be reconstructed. */ + stripe_zero_chunk(stripe, pr); + common_xor(stripe, stripe->io.size, 0, pr); + stripe->idx.recover = -1; +} + +/* + * Recovery io throttling + */ +/* Conditionally reset io counters. */ +static int recover_io_reset(struct raid_set *rs) +{ + unsigned long j = jiffies; + + /* Pay attention to jiffies overflows. */ + if (j > rs->recover.last_jiffies + HZ / 20 || + j < rs->recover.last_jiffies) { + atomic_set(rs->recover.io_count + IO_WORK, 0); + atomic_set(rs->recover.io_count + IO_RECOVER, 0); + rs->recover.last_jiffies = j; + return 1; + } + + return 0; +} + +/* Count ios. */ +static void recover_io_count(struct stripe *stripe) +{ + struct raid_set *rs = RS(stripe->sc); + + recover_io_reset(rs); + atomic_inc(rs->recover.io_count + + (StripeRecover(stripe) ? IO_RECOVER : IO_WORK)); +} + +/* Try getting a stripe either from the hash or from the LRU list. */ +static struct stripe *stripe_find(struct raid_set *rs, + struct raid_address *addr) +{ + int r; + struct stripe_cache *sc = &rs->sc; + struct stripe *stripe; + + /* Try stripe from hash. */ + stripe = stripe_lookup(sc, addr->key); + if (stripe) { + r = stripe_get(stripe); + if (r) + goto get_lock_failed; + + atomic_inc(rs->stats + S_HITS_1ST); /* REMOVEME: statistics. */ + } else { + /* Not in hash -> try to get an LRU stripe. */ + stripe = stripe_lru_pop(sc); + if (stripe) { + /* + * An LRU stripe may not be referenced + * and may never have ios pending! + */ + BUG_ON(stripe_ref(stripe)); + BUG_ON(stripe_io_ref(stripe)); + + /* Remove from hash if on before reuse. */ + stripe_hash_del(stripe); + + /* Invalidate before reinserting with changed key. */ + stripe_invalidate(stripe); + + stripe->key = addr->key; + stripe->region = dm_rh_sector_to_region(rs->recover.rh, + addr->key); + stripe->idx.parity = addr->pi; + r = stripe_get(stripe); + if (r) + goto get_lock_failed; + + /* Insert stripe into the stripe hash. */ + stripe_insert(&sc->hash, stripe); + /* REMOVEME: statistics. */ + atomic_inc(rs->stats + S_INSCACHE); + } + } + + return stripe; + +get_lock_failed: + stripe_put(stripe); + return NULL; +} + +/* + * Process end io + * + * I need to do it here because I can't in interrupt + */ +/* End io all bios on a bio list. */ +static void bio_list_endio(struct stripe *stripe, struct bio_list *bl, + int p, int error) +{ + struct raid_set *rs = RS(stripe->sc); + struct bio *bio; + struct page_list *pl = PL(stripe, p); + struct stripe_chunk *chunk = CHUNK(stripe, p); + + /* Update region counters. */ + while ((bio = bio_list_pop(bl))) { + if (bio_data_dir(bio) == WRITE) + /* Drop io pending count for any writes. */ + dm_rh_dec(rs->recover.rh, stripe->region); + else if (!error) + /* Copy data accross. */ + bio_copy_page_list(READ, stripe, pl, bio); + + bio_endio(bio, error); + + /* REMOVEME: statistics. */ + atomic_inc(rs->stats + (bio_data_dir(bio) == READ ? + S_BIOS_ENDIO_READ : S_BIOS_ENDIO_WRITE)); + + chunk_put(chunk); + stripe_put(stripe); + io_put(rs); /* Wake any suspend waiters on last bio. */ + } +} + +/* + * End io all reads/writes on a stripe copying + * read data accross from stripe to bios and + * decrementing region counters for writes. + * + * Processing of ios depeding on state: + * o no chunk error -> endio ok + * o degraded: + * - chunk error and read -> ignore to be requeued + * - chunk error and write -> endio ok + * o dead (more than parity_devs failed) and chunk_error-> endio failed + */ +static void stripe_endio(int rw, struct stripe *stripe) +{ + struct raid_set *rs = RS(stripe->sc); + unsigned p = rs->set.raid_devs; + int write = (rw != READ); + + while (p--) { + struct stripe_chunk *chunk = CHUNK(stripe, p); + struct bio_list *bl; + + BUG_ON(ChunkLocked(chunk)); + + bl = BL_CHUNK(chunk, rw); + if (bio_list_empty(bl)) + continue; + + if (unlikely(ChunkError(chunk) || !ChunkUptodate(chunk))) { + /* RAID set dead. */ + if (unlikely(RSDead(rs))) + bio_list_endio(stripe, bl, p, -EIO); + /* RAID set degraded. */ + else if (write) + bio_list_endio(stripe, bl, p, 0); + } else { + BUG_ON(!RSDegraded(rs) && ChunkDirty(chunk)); + bio_list_endio(stripe, bl, p, 0); + } + } +} + +/* Fail all ios hanging off all bio lists of a stripe. */ +static void stripe_fail_io(struct stripe *stripe) +{ + struct raid_set *rs = RS(stripe->sc); + unsigned p = rs->set.raid_devs; + + while (p--) { + struct stripe_chunk *chunk = CHUNK(stripe, p); + int i = ARRAY_SIZE(chunk->bl); + + /* Fail all bios on all bio lists of the stripe. */ + while (i--) { + struct bio_list *bl = chunk->bl + i; + + if (!bio_list_empty(bl)) + bio_list_endio(stripe, bl, p, -EIO); + } + } + + /* Put stripe on LRU list. */ + BUG_ON(stripe_io_ref(stripe)); + BUG_ON(stripe_ref(stripe)); +} + +/* Unlock all required chunks. */ +static void stripe_chunks_unlock(struct stripe *stripe) +{ + unsigned p = RS(stripe->sc)->set.raid_devs; + struct stripe_chunk *chunk; + + while (p--) { + chunk = CHUNK(stripe, p); + + if (TestClearChunkUnlock(chunk)) + ClearChunkLocked(chunk); + } +} + +/* + * Queue reads and writes to a stripe by hanging + * their bios off the stripesets read/write lists. + */ +static int stripe_queue_bio(struct raid_set *rs, struct bio *bio, + struct bio_list *reject) +{ + struct raid_address addr; + struct stripe *stripe; + + stripe = stripe_find(rs, raid_address(rs, bio->bi_sector, &addr)); + if (stripe) { + int r = 0, rw = bio_data_dir(bio); + + /* Distinguish reads and writes. */ + bio_list_add(BL(stripe, addr.di, rw), bio); + + if (rw == READ) + /* REMOVEME: statistics. */ + atomic_inc(rs->stats + S_BIOS_ADDED_READ); + else { + /* Inrement pending write count on region. */ + dm_rh_inc(rs->recover.rh, stripe->region); + r = 1; + + /* REMOVEME: statistics. */ + atomic_inc(rs->stats + S_BIOS_ADDED_WRITE); + } + + /* + * Put on io (flush) list in case of + * initial bio queued to chunk. + */ + if (chunk_get(CHUNK(stripe, addr.di)) == 1) + stripe_flush_add(stripe); + + return r; + } + + /* Got no stripe from cache or failed to lock it -> reject bio. */ + bio_list_add(reject, bio); + atomic_inc(rs->stats + S_IOS_POST); /* REMOVEME: statistics. */ + return 0; +} + +/* + * Handle all stripes by handing them to the daemon, because we can't + * map their chunk pages to copy the data in interrupt context. + * + * We don't want to handle them here either, while interrupts are disabled. + */ + +/* Read/write endio function for dm-io (interrupt context). */ +static void endio(unsigned long error, void *context) +{ + struct stripe_chunk *chunk = context; + + if (unlikely(error)) { + chunk_set(chunk, ERROR); + /* REMOVEME: statistics. */ + atomic_inc(RS(chunk->stripe->sc)->stats + S_STRIPE_ERROR); + } else + chunk_set(chunk, CLEAN); + + /* + * For recovery stripes, I need to reset locked locked + * here, because those aren't processed in do_endios(). + */ + if (unlikely(StripeRecover(chunk->stripe))) + ClearChunkLocked(chunk); + else + SetChunkUnlock(chunk); + + /* Indirectly puts stripe on cache's endio list via stripe_io_put(). */ + stripe_put_references(chunk->stripe); +} + +/* Read/Write a chunk asynchronously. */ +static void stripe_chunk_rw(struct stripe *stripe, unsigned p) +{ + struct stripe_cache *sc = stripe->sc; + struct raid_set *rs = RS(sc); + struct dm_mem_cache_object *obj = stripe->obj + p; + struct page_list *pl = obj->pl; + struct stripe_chunk *chunk = CHUNK(stripe, p); + struct raid_dev *dev = rs->dev + p; + struct dm_io_region io = { + .bdev = dev->dev->bdev, + .sector = stripe->key, + .count = stripe->io.size, + }; + struct dm_io_request control = { + .bi_rw = ChunkDirty(chunk) ? WRITE : READ, + .mem = { + .type = DM_IO_PAGE_LIST, + .ptr.pl = pl, + .offset = 0, + }, + .notify = { + .fn = endio, + .context = chunk, + }, + .client = StripeRecover(stripe) ? rs->recover.dm_io_client : + sc->dm_io_client, + }; + + BUG_ON(ChunkLocked(chunk)); + BUG_ON(!ChunkUptodate(chunk) && ChunkDirty(chunk)); + BUG_ON(ChunkUptodate(chunk) && !ChunkDirty(chunk)); + + /* + * Don't rw past end of device, which can happen, because + * typically sectors_per_dev isn't divisible by io_size. + */ + if (unlikely(io.sector + io.count > rs->set.sectors_per_dev)) + io.count = rs->set.sectors_per_dev - io.sector; + + BUG_ON(!io.count); + io.sector += dev->start; /* Add . */ + if (RSRecover(rs)) + recover_io_count(stripe); /* Recovery io accounting. */ + + /* REMOVEME: statistics. */ + atomic_inc(rs->stats + (ChunkDirty(chunk) ? S_DM_IO_WRITE : + S_DM_IO_READ)); + SetChunkLocked(chunk); + SetDevIoQueued(dev); + BUG_ON(dm_io(&control, 1, &io, NULL)); +} + +/* + * Write dirty or read not uptodate page lists of a stripe. + */ +static int stripe_chunks_rw(struct stripe *stripe) +{ + int r; + struct raid_set *rs = RS(stripe->sc); + + /* + * Increment the pending count on the stripe + * first, so that we don't race in endio(). + * + * An inc (IO) is needed for any chunk unless !ChunkIo(chunk): + * + * o not uptodate + * o dirtied by writes merged + * o dirtied by parity calculations + */ + r = for_each_io_dev(stripe, stripe_get_references); + if (r) { + /* Io needed: chunks are either not uptodate or dirty. */ + int max; /* REMOVEME: */ + struct stripe_cache *sc = &rs->sc; + + /* Submit actual io. */ + for_each_io_dev(stripe, stripe_chunk_rw); + + /* REMOVEME: statistics */ + max = sc_active(sc); + if (atomic_read(&sc->active_stripes_max) < max) + atomic_set(&sc->active_stripes_max, max); + + atomic_inc(rs->stats + S_FLUSHS); + /* END REMOVEME: statistics */ + } + + return r; +} + +/* Merge in all writes hence dirtying respective chunks. */ +static void stripe_merge_writes(struct stripe *stripe) +{ + unsigned p = RS(stripe->sc)->set.raid_devs; + + while (p--) { + struct stripe_chunk *chunk = CHUNK(stripe, p); + struct bio_list *write = BL_CHUNK(chunk, WRITE_QUEUED); + + if (!bio_list_empty(write)) { + struct bio *bio; + struct page_list *pl = stripe->obj[p].pl; + + /* + * We can play with the lists without holding a lock, + * because it is just us accessing them anyway. + */ + bio_list_for_each(bio, write) + bio_copy_page_list(WRITE, stripe, pl, bio); + + bio_list_merge(BL_CHUNK(chunk, WRITE_MERGED), write); + bio_list_init(write); + chunk_set(chunk, DIRTY); + } + } +} + +/* Queue all writes to get merged. */ +static int stripe_queue_writes(struct stripe *stripe) +{ + int r = 0; + unsigned p = RS(stripe->sc)->set.raid_devs; + + while (p--) { + struct stripe_chunk *chunk = CHUNK(stripe, p); + struct bio_list *write = BL_CHUNK(chunk, WRITE); + + if (!bio_list_empty(write)) { + bio_list_merge(BL_CHUNK(chunk, WRITE_QUEUED), write); + bio_list_init(write); +SetChunkIo(chunk); + r = 1; + } + } + + return r; +} + + +/* Check, if a chunk gets completely overwritten. */ +static int stripe_check_chunk_overwrite(struct stripe *stripe, unsigned p) +{ + unsigned sectors = 0; + struct bio *bio; + struct bio_list *bl = BL(stripe, p, WRITE_QUEUED); + + bio_list_for_each(bio, bl) + sectors += bio_sectors(bio); + + BUG_ON(sectors > RS(stripe->sc)->set.io_size); + return sectors == RS(stripe->sc)->set.io_size; +} + +/* + * Avoid io on broken/reconstructed drive in order to + * reconstruct date on endio. + * + * (*1*) We set StripeReconstruct() in here, so that _do_endios() + * will trigger a reconstruct call before resetting it. + */ +static int stripe_chunk_set_io_flags(struct stripe *stripe, int pr) +{ + struct stripe_chunk *chunk = CHUNK(stripe, pr); + + /* + * Allow io on all chunks but the indexed one, + * because we're either degraded or prohibit it + * on the one for later reconstruction. + */ + /* Includes ClearChunkIo(), ClearChunkUptodate(). */ + stripe_chunk_invalidate(chunk); + stripe->idx.recover = pr; + SetStripeReconstruct(stripe); + + /* REMOVEME: statistics. */ + atomic_inc(RS(stripe->sc)->stats + S_PROHIBITCHUNKIO); + return -EPERM; +} + +/* Chunk locked/uptodate and device failed tests. */ +static struct stripe_chunk * +stripe_chunk_check(struct stripe *stripe, unsigned p, unsigned *chunks_uptodate) +{ + struct raid_set *rs = RS(stripe->sc); + struct stripe_chunk *chunk = CHUNK(stripe, p); + + /* Can't access active chunks. */ + if (ChunkLocked(chunk)) { + /* REMOVEME: statistics. */ + atomic_inc(rs->stats + S_CHUNK_LOCKED); + return NULL; + } + + /* Can't access broken devive. */ + if (ChunkError(chunk) || DevFailed(rs->dev + p)) + return NULL; + + /* Can access uptodate chunks. */ + if (ChunkUptodate(chunk)) { + (*chunks_uptodate)++; + return NULL; + } + + return chunk; +} + +/* + * Degraded/reconstruction mode. + * + * Check stripe state to figure which chunks don't need IO. + * + * Returns 0 for fully operational, -EPERM for degraded/resynchronizing. + */ +static int stripe_check_reconstruct(struct stripe *stripe) +{ + struct raid_set *rs = RS(stripe->sc); + + if (RSDead(rs)) { + ClearStripeReconstruct(stripe); + ClearStripeReconstructed(stripe); + stripe_allow_io(stripe); + return 0; + } + + /* Avoid further reconstruction setting, when already set. */ + if (StripeReconstruct(stripe)) { + /* REMOVEME: statistics. */ + atomic_inc(rs->stats + S_RECONSTRUCT_SET); + return -EBUSY; + } + + /* Initially allow io on all chunks. */ + stripe_allow_io(stripe); + + /* Return if stripe is already reconstructed. */ + if (StripeReconstructed(stripe)) { + atomic_inc(rs->stats + S_RECONSTRUCTED); + return 0; + } + + /* + * Degraded/reconstruction mode (device failed) -> + * avoid io on the failed device. + */ + if (unlikely(RSDegraded(rs))) { + /* REMOVEME: statistics. */ + atomic_inc(rs->stats + S_DEGRADED); + /* Allow IO on all devices but the dead one. */ + BUG_ON(rs->set.ei < 0); + return stripe_chunk_set_io_flags(stripe, rs->set.ei); + } else { + int sync, pi = dev_for_parity(stripe, &sync); + + /* + * Reconstruction mode (ie. a particular (replaced) device or + * some (rotating) parity chunk is being resynchronized) -> + * o make sure all needed chunks are read in + * o writes are allowed to go through + */ + if (!sync) { + /* REMOVEME: statistics. */ + atomic_inc(rs->stats + S_NOSYNC); + /* Allow IO on all devs but the one to reconstruct. */ + return stripe_chunk_set_io_flags(stripe, pi); + } + } + + return 0; +} + +/* + * Check, if stripe is ready to merge writes. + * I.e. if all chunks present to allow to merge bios. + * + * We prohibit io on: + * + * o chunks without bios + * o chunks which get completely written over + */ +static int stripe_merge_possible(struct stripe *stripe, int nosync) +{ + struct raid_set *rs = RS(stripe->sc); + unsigned chunks_overwrite = 0, chunks_prohibited = 0, + chunks_uptodate = 0, p = rs->set.raid_devs; + + /* Walk all chunks. */ + while (p--) { + struct stripe_chunk *chunk; + + /* Prohibit io on broken devices. */ + if (DevFailed(rs->dev + p)) { + chunk = CHUNK(stripe, p); + goto prohibit_io; + } + + /* We can't optimize any further if no chunk. */ + chunk = stripe_chunk_check(stripe, p, &chunks_uptodate); + if (!chunk || nosync) + continue; + + /* + * We have a chunk, which is not uptodate. + * + * If this is not parity and we don't have + * reads queued, we can optimize further. + */ + if (p != stripe->idx.parity && + bio_list_empty(BL_CHUNK(chunk, READ)) && + bio_list_empty(BL_CHUNK(chunk, WRITE_MERGED))) { + if (bio_list_empty(BL_CHUNK(chunk, WRITE_QUEUED))) + goto prohibit_io; + else if (RSCheckOverwrite(rs) && + stripe_check_chunk_overwrite(stripe, p)) + /* Completely overwritten chunk. */ + chunks_overwrite++; + } + + /* Allow io for chunks with bios and overwritten ones. */ + SetChunkIo(chunk); + continue; + +prohibit_io: + /* No io for broken devices or for chunks w/o bios. */ + ClearChunkIo(chunk); + chunks_prohibited++; + /* REMOVEME: statistics. */ + atomic_inc(RS(stripe->sc)->stats + S_PROHIBITCHUNKIO); + } + + /* All data chunks will get written over. */ + if (chunks_overwrite == rs->set.data_devs) + atomic_inc(rs->stats + S_OVERWRITE); /* REMOVEME: statistics.*/ + else if (chunks_uptodate + chunks_prohibited < rs->set.raid_devs) { + /* We don't have enough chunks to merge. */ + atomic_inc(rs->stats + S_CANT_MERGE); /* REMOVEME: statistics.*/ + return -EPERM; + } + + /* + * If we have all chunks up to date or overwrite them, we + * just zero the parity chunk and let stripe_rw() recreate it. + */ + if (chunks_uptodate == rs->set.raid_devs || + chunks_overwrite == rs->set.data_devs) { + stripe_zero_chunk(stripe, stripe->idx.parity); + BUG_ON(StripeReconstruct(stripe)); + SetStripeReconstruct(stripe); /* Enforce xor in caller. */ + } else { + /* + * With less chunks, we xor parity out. + * + * (*4*) We rely on !StripeReconstruct() in chunk_must_xor(), + * so that only chunks with queued or merged writes + * are being xored. + */ + parity_xor(stripe); + } + + /* + * We do have enough chunks to merge. + * All chunks are uptodate or get written over. + */ + atomic_inc(rs->stats + S_CAN_MERGE); /* REMOVEME: statistics. */ + return 0; +} + +/* + * Avoid reading chunks in case we're fully operational. + * + * We prohibit io on any chunks without bios but the parity chunk. + */ +static void stripe_avoid_reads(struct stripe *stripe) +{ + struct raid_set *rs = RS(stripe->sc); + unsigned dummy = 0, p = rs->set.raid_devs; + + /* Walk all chunks. */ + while (p--) { + struct stripe_chunk *chunk = + stripe_chunk_check(stripe, p, &dummy); + + if (!chunk) + continue; + + /* If parity or any bios pending -> allow io. */ + if (chunk_ref(chunk) || p == stripe->idx.parity) + SetChunkIo(chunk); + else { + ClearChunkIo(chunk); + /* REMOVEME: statistics. */ + atomic_inc(RS(stripe->sc)->stats + S_PROHIBITCHUNKIO); + } + } +} + +/* + * Read/write a stripe. + * + * All stripe read/write activity goes through this function + * unless recovery, which has to call stripe_chunk_rw() directly. + * + * Make sure we don't try already merged stripes in order + * to avoid data corruption. + * + * Check the state of the RAID set and if degraded (or + * resynchronizing for reads), read in all other chunks but + * the one on the dead/resynchronizing device in order to be + * able to reconstruct the missing one in _do_endios(). + * + * Can be called on active stripes in order + * to dispatch new io on inactive chunks. + * + * States to cover: + * o stripe to read and/or write + * o stripe with error to reconstruct + */ +static void stripe_rw(struct stripe *stripe) +{ + int nosync, r; + struct raid_set *rs = RS(stripe->sc); + + /* + * Check, if a chunk needs to be reconstructed + * because of a degraded set or a region out of sync. + */ + nosync = stripe_check_reconstruct(stripe); + switch (nosync) { + case -EBUSY: + return; /* Wait for stripe reconstruction to finish. */ + case -EPERM: + goto io; + } + + /* + * If we don't have merged writes pending, we can schedule + * queued writes to be merged next without corrupting data. + */ + if (!StripeMerged(stripe)) { + r = stripe_queue_writes(stripe); + if (r) + /* Writes got queued -> flag RBW. */ + SetStripeRBW(stripe); + } + + /* + * Merge all writes hanging off uptodate/overwritten + * chunks of the stripe. + */ + if (StripeRBW(stripe)) { + r = stripe_merge_possible(stripe, nosync); + if (!r) { /* Merge possible. */ + struct stripe_chunk *chunk; + + /* + * I rely on valid parity in order + * to xor a fraction of chunks out + * of parity and back in. + */ + stripe_merge_writes(stripe); /* Merge writes in. */ + parity_xor(stripe); /* Update parity. */ + ClearStripeReconstruct(stripe); /* Reset xor enforce. */ + SetStripeMerged(stripe); /* Writes merged. */ + ClearStripeRBW(stripe); /* Disable RBW. */ + + /* + * REMOVEME: sanity check on parity chunk + * states after writes got merged. + */ + chunk = CHUNK(stripe, stripe->idx.parity); + BUG_ON(ChunkLocked(chunk)); + BUG_ON(!ChunkUptodate(chunk)); + BUG_ON(!ChunkDirty(chunk)); + BUG_ON(!ChunkIo(chunk)); + } + } else if (!nosync && !StripeMerged(stripe)) + /* Read avoidance if not degraded/resynchronizing/merged. */ + stripe_avoid_reads(stripe); + +io: + /* Now submit any reads/writes for non-uptodate or dirty chunks. */ + r = stripe_chunks_rw(stripe); + if (!r) { + /* + * No io submitted because of chunk io + * prohibited or locked chunks/failed devices + * -> push to end io list for processing. + */ + stripe_endio_push(stripe); + atomic_inc(rs->stats + S_NO_RW); /* REMOVEME: statistics. */ + } +} + +/* + * Recovery functions + */ +/* Read a stripe off a raid set for recovery. */ +static int stripe_recover_read(struct stripe *stripe, int pi) +{ + BUG_ON(stripe_io_ref(stripe)); + + /* Invalidate all chunks so that they get read in. */ + stripe_chunks_invalidate(stripe); + stripe_allow_io(stripe); /* Allow io on all recovery chunks. */ + + /* + * If we are reconstructing a perticular device, we can avoid + * reading the respective chunk in, because we're going to + * reconstruct it anyway. + * + * We can't do that for resynchronization of rotating parity, + * because the recovery stripe chunk size is typically larger + * than the sets chunk size. + */ + if (pi > -1) + ClearChunkIo(CHUNK(stripe, pi)); + + return stripe_chunks_rw(stripe); +} + +/* Write a stripe to a raid set for recovery. */ +static int stripe_recover_write(struct stripe *stripe, int pi) +{ + BUG_ON(stripe_io_ref(stripe)); + + /* + * If this is a reconstruct of a particular device, then + * reconstruct the respective chunk, else create parity chunk. + */ + if (pi > -1) { + stripe_zero_chunk(stripe, pi); + common_xor(stripe, stripe->io.size, 0, pi); + chunk_set(CHUNK(stripe, pi), DIRTY); + } else + parity_xor(stripe); + + return stripe_chunks_rw(stripe); +} + +/* Read/write a recovery stripe. */ +static int stripe_recover_rw(struct stripe *stripe) +{ + int r = 0, sync = 0; + + /* Read/write flip-flop. */ + if (TestClearStripeRBW(stripe)) { + SetStripeMerged(stripe); + stripe->key = stripe->recover->pos; + r = stripe_recover_read(stripe, dev_for_parity(stripe, &sync)); + BUG_ON(!r); + } else if (TestClearStripeMerged(stripe)) { + r = stripe_recover_write(stripe, dev_for_parity(stripe, &sync)); + BUG_ON(!r); + } + + BUG_ON(sync); + return r; +} + +/* Recover bandwidth available ?. */ +static int recover_bandwidth(struct raid_set *rs) +{ + int r, work; + + /* On reset or when bios delayed -> allow recovery. */ + r = recover_io_reset(rs); + if (r || RSBandwidth(rs)) + goto out; + + work = atomic_read(rs->recover.io_count + IO_WORK); + if (work) { + /* Pay attention to larger recover stripe size. */ + int recover = atomic_read(rs->recover.io_count + IO_RECOVER) * + rs->recover.io_size / rs->set.io_size; + + /* + * Don't use more than given bandwidth + * of the work io for recovery. + */ + if (recover > work / rs->recover.bandwidth_work) { + /* REMOVEME: statistics. */ + atomic_inc(rs->stats + S_NO_BANDWIDTH); + return 0; + } + } + +out: + atomic_inc(rs->stats + S_BANDWIDTH); /* REMOVEME: statistics. */ + return 1; +} + +/* Try to get a region to recover. */ +static int stripe_recover_get_region(struct stripe *stripe) +{ + struct raid_set *rs = RS(stripe->sc); + struct recover *rec = &rs->recover; + struct recover_addr *addr = stripe->recover; + struct dm_dirty_log *dl = rec->dl; + struct dm_rh_client *rh = rec->rh; + + BUG_ON(!dl); + BUG_ON(!rh); + + /* Return, that we have region first to finish it during suspension. */ + if (addr->reg) + return 1; + + if (RSSuspend(rs)) + return -EPERM; + + if (dl->type->get_sync_count(dl) >= rec->nr_regions) + return -ENOENT; + + /* If we don't have enough bandwidth, we don't proceed recovering. */ + if (!recover_bandwidth(rs)) + return -EAGAIN; + + /* Start quiescing a region. */ + dm_rh_recovery_prepare(rh); + addr->reg = dm_rh_recovery_start(rh); + if (!addr->reg) + return -EAGAIN; + + addr->pos = dm_rh_region_to_sector(rh, dm_rh_get_region_key(addr->reg)); + addr->end = addr->pos + dm_rh_get_region_size(rh); + + /* + * Take one global io reference out for the + * whole region, which is going to be released + * when the region is completely done with. + */ + io_get(rs); + return 0; +} + +/* Update region hash state. */ +enum recover_type { REC_FAILURE = 0, REC_SUCCESS = 1 }; +static void recover_rh_update(struct stripe *stripe, enum recover_type success) +{ + struct recover_addr *addr = stripe->recover; + struct raid_set *rs = RS(stripe->sc); + struct recover *rec = &rs->recover; + + if (!addr->reg) { + DMERR("%s- Called w/o region", __func__); + return; + } + + dm_rh_recovery_end(addr->reg, success); + if (success) + rec->nr_regions_recovered++; + + addr->reg = NULL; + + /* + * Completely done with this region -> + * release the 1st io reference. + */ + io_put(rs); +} + +/* Set start of recovery state. */ +static void set_start_recovery(struct raid_set *rs) +{ + /* Initialize recovery. */ + rs->recover.start_jiffies = jiffies; + rs->recover.end_jiffies = 0; +} + +/* Set end of recovery state. */ +static void set_end_recovery(struct raid_set *rs) +{ + ClearRSRecover(rs); + rs->set.dev_to_init = -1; + + /* Check for jiffies overrun. */ + rs->recover.end_jiffies = jiffies; + if (rs->recover.end_jiffies < rs->recover.start_jiffies) + rs->recover.end_jiffies = ~0; +} + +/* Handle recovery on one recovery stripe. */ +static int _do_recovery(struct stripe *stripe) +{ + int r; + struct raid_set *rs = RS(stripe->sc); + struct recover_addr *addr = stripe->recover; + + /* If recovery is active -> return. */ + if (stripe_io_ref(stripe)) + return 1; + + /* IO error is fatal for recovery -> stop it. */ + if (unlikely(StripeError(stripe))) + goto err; + + /* Recovery end required. */ + if (!RSRecover(rs)) + goto err; + + /* Get a region to recover. */ + r = stripe_recover_get_region(stripe); + switch (r) { + case 0: /* Got a new region: flag initial read before write. */ + SetStripeRBW(stripe); + case 1: /* Have a region in the works. */ + break; + case -EAGAIN: + /* No bandwidth/quiesced region yet, try later. */ + if (!io_ref(rs)) + wake_do_raid_delayed(rs, HZ / 4); + case -EPERM: + /* Suspend. */ + return 1; + case -ENOENT: /* No more regions to recover. */ + schedule_work(&rs->io.ws_do_table_event); + return 0; + default: + BUG(); + } + + /* Read/write a recover stripe. */ + r = stripe_recover_rw(stripe); + if (r) + /* IO initiated. */ + return 1; + + /* Read and write finished-> update recovery position within region. */ + addr->pos += stripe->io.size; + + /* If we're at end of region, update region hash. */ + if (addr->pos >= addr->end || + addr->pos >= rs->set.sectors_per_dev) + recover_rh_update(stripe, REC_SUCCESS); + else + /* Prepare to read next region segment. */ + SetStripeRBW(stripe); + + /* Schedule myself for another round... */ + wake_do_raid(rs); + return 1; + +err: + /* FIXME: rather try recovering other regions on error? */ + rs_check_degrade(stripe); + recover_rh_update(stripe, REC_FAILURE); + + /* Check state of partially recovered array. */ + if (RSDegraded(rs) && !RSDead(rs) && + rs->set.dev_to_init != -1 && + rs->set.ei != rs->set.dev_to_init) + /* Broken drive != drive to recover -> FATAL. */ + SetRSDead(rs); + + if (StripeError(stripe)) { + char buf[BDEVNAME_SIZE]; + + DMERR("stopping recovery due to " + "ERROR on /dev/%s, stripe at offset %llu", + bdevname(rs->dev[rs->set.ei].dev->bdev, buf), + (unsigned long long) stripe->key); + + } + + /* Make sure, that all quiesced regions get released. */ + while (addr->reg) { + dm_rh_recovery_end(addr->reg, -EIO); + addr->reg = dm_rh_recovery_start(rs->recover.rh); + } + + return 0; +} + +/* Called by main io daemon to recover regions. */ +static void do_recovery(struct raid_set *rs) +{ + if (RSRecover(rs)) { + int r = 0; + struct stripe *stripe; + + list_for_each_entry(stripe, &rs->recover.stripes, + lists[LIST_RECOVER]) + r += _do_recovery(stripe); + + if (!r) { + set_end_recovery(rs); + stripe_recover_free(rs); + } + } +} + +/* + * END recovery functions + */ + +/* End io process all stripes handed in by endio() callback. */ +static void _do_endios(struct raid_set *rs, struct stripe *stripe, + struct list_head *flush_list) +{ + /* First unlock all required chunks. */ + stripe_chunks_unlock(stripe); + + /* + * If an io error on a stripe occured, degrade the RAID set + * and try to endio as many bios as possible. If any bios can't + * be endio processed, requeue the stripe (stripe_ref() != 0). + */ + if (TestClearStripeError(stripe)) { + /* + * FIXME: if read, rewrite the failed chunk after reconstruction + * in order to trigger disk bad sector relocation. + */ + rs_check_degrade(stripe); /* Resets ChunkError(). */ + ClearStripeReconstruct(stripe); + ClearStripeReconstructed(stripe); + } + + /* Got to reconstruct a missing chunk. */ + if (StripeReconstruct(stripe)) { + /* + * (*2*) We use StripeReconstruct() to allow for + * all chunks to be xored into the reconstructed + * one (see chunk_must_xor()). + */ + stripe_reconstruct(stripe); + + /* + * (*3*) Now we reset StripeReconstruct() and flag + * StripeReconstructed() to show to stripe_rw(), + * that we have reconstructed a missing chunk. + */ + ClearStripeReconstruct(stripe); + SetStripeReconstructed(stripe); + + /* FIXME: reschedule to be written in case of read. */ + // if (!StripeRBW(stripe)) { + // chunk_set(CHUNK(stripe, pr), DIRTY); + // stripe_chunks_rw(stripe); + // } + } + + /* + * Now that we eventually got a complete stripe, we + * can process the rest of the end ios on reads. + */ + stripe_endio(READ, stripe); + + /* End io all merged writes. */ + if (TestClearStripeMerged(stripe)) + stripe_endio(WRITE_MERGED, stripe); + + /* If RAID set is dead -> fail any ios to dead drives. */ + if (RSDead(rs)) { + DMERR_LIMIT("RAID set dead: failing ios to dead devices"); + stripe_fail_io(stripe); + } + + /* + * We have stripe references still, + * beacuse of read befeore writes or IO errors -> + * got to put on flush list for processing. + */ + if (stripe_ref(stripe)) { + BUG_ON(!list_empty(stripe->lists + LIST_LRU)); + list_add_tail(stripe->lists + LIST_FLUSH, flush_list); + atomic_inc(rs->stats + S_REQUEUE); /* REMOVEME: statistics. */ + } else + stripe_lru_add(stripe); +} + +/* Pop any endio stripes off of the endio list and belabour them. */ +static void do_endios(struct raid_set *rs) +{ + struct stripe_cache *sc = &rs->sc; + struct stripe *stripe; + /* IO flush list for sorted requeued stripes. */ + struct list_head flush_list; + + INIT_LIST_HEAD(&flush_list); + + while ((stripe = stripe_endio_pop(sc))) { + /* Avoid endio on stripes with newly io'ed chunks. */ + if (!stripe_io_ref(stripe)) + _do_endios(rs, stripe, &flush_list); + } + + /* + * Insert any requeued stripes in the proper + * order at the beginning of the io (flush) list. + */ + list_splice(&flush_list, sc->lists + LIST_FLUSH); +} + +/* Flush any stripes on the io list. */ +static void do_flush(struct raid_set *rs) +{ + struct stripe *stripe; + + while ((stripe = stripe_io_pop(&rs->sc))) + stripe_rw(stripe); /* Read/write stripe. */ +} + +/* Stripe cache resizing. */ +static void do_sc_resize(struct raid_set *rs) +{ + unsigned set = atomic_read(&rs->sc.stripes_to_set); + + if (set) { + unsigned cur = atomic_read(&rs->sc.stripes); + int r = (set > cur) ? sc_grow(&rs->sc, set - cur, SC_GROW) : + sc_shrink(&rs->sc, cur - set); + + /* Flag end of resizeing if ok. */ + if (!r) + atomic_set(&rs->sc.stripes_to_set, 0); + } +} + +/* + * Process all ios + * + * We do different things with the io depending + * on the state of the region that it is in: + * + * o reads: hang off stripe cache or postpone if full + * + * o writes: + * + * CLEAN/DIRTY/NOSYNC: increment pending and hang io off stripe's stripe set. + * In case stripe cache is full or busy, postpone the io. + * + * RECOVERING: delay the io until recovery of the region completes. + * + */ +static void do_ios(struct raid_set *rs, struct bio_list *ios) +{ + int r; + unsigned flush = 0, delay = 0; + sector_t sector; + struct dm_rh_client *rh = rs->recover.rh; + struct bio *bio; + struct bio_list reject; + + bio_list_init(&reject); + + /* + * Classify each io: + * o delay writes to recovering regions (let reads go through) + * o queue io to all other regions + */ + while ((bio = bio_list_pop(ios))) { + /* + * In case we get a barrier bio, push it back onto + * the input queue unless all work queues are empty + * and the stripe cache is inactive. + */ + if (unlikely(bio->bi_rw & REQ_FLUSH)) { + /* REMOVEME: statistics. */ + atomic_inc(rs->stats + S_BARRIER); + if (delay || + !list_empty(rs->sc.lists + LIST_FLUSH) || + !bio_list_empty(&reject) || + sc_active(&rs->sc)) { + bio_list_push(ios, bio); + break; + } + } + + /* Check for recovering regions. */ + sector = _sector(rs, bio); + r = region_state(rs, sector, DM_RH_RECOVERING); + if (unlikely(r && bio_data_dir(bio) == WRITE)) { + delay++; + /* Wait writing to recovering regions. */ + dm_rh_delay_by_region(rh, bio, + dm_rh_sector_to_region(rh, + sector)); + /* REMOVEME: statistics.*/ + atomic_inc(rs->stats + S_DELAYED_BIOS); + atomic_inc(rs->stats + S_SUM_DELAYED_BIOS); + + /* Force bandwidth tests in recovery. */ + SetRSBandwidth(rs); + } else { + /* + * Process ios to non-recovering regions by queueing + * them to stripes (does dm_rh_inc()) for writes). + */ + flush += stripe_queue_bio(rs, bio, &reject); + } + } + + if (flush) { + /* FIXME: better error handling. */ + r = dm_rh_flush(rh); /* Writes got queued -> flush dirty log. */ + if (r) + DMERR_LIMIT("dirty log flush"); + } + + /* Merge any rejected bios back to the head of the input list. */ + bio_list_merge_head(ios, &reject); +} + +/* Send an event in case we're getting too busy. */ +static void do_busy_event(struct raid_set *rs) +{ + if (sc_busy(rs)) { + if (!TestSetRSScBusy(rs)) + schedule_work(&rs->io.ws_do_table_event); + } + + ClearRSScBusy(rs); +} + +/* Throw an event. */ +static void do_table_event(struct work_struct *ws) +{ + struct raid_set *rs = container_of(ws, struct raid_set, + io.ws_do_table_event); + dm_table_event(rs->ti->table); +} + + +/*----------------------------------------------------------------- + * RAID daemon + *---------------------------------------------------------------*/ +/* + * o belabour all end ios + * o update the region hash states + * o optionally shrink the stripe cache + * o optionally do recovery + * o unplug any component raid devices with queued bios + * o grab the input queue + * o work an all requeued or new ios and perform stripe cache flushs + * o unplug any component raid devices with queued bios + * o check, if the stripe cache gets too busy and throw an event if so + */ +static void do_raid(struct work_struct *ws) +{ + struct raid_set *rs = container_of(ws, struct raid_set, + io.dws_do_raid.work); + struct bio_list *ios = &rs->io.work, *ios_in = &rs->io.in; + struct blk_plug plug; + + /* + * We always need to end io, so that ios can get errored in + * case the set failed and the region counters get decremented + * before we update region hash states and go any further. + */ + do_endios(rs); + dm_rh_update_states(rs->recover.rh, 1); + + /* + * Now that we've end io'd, which may have put stripes on the LRU list + * to allow for shrinking, we resize the stripe cache if requested. + */ + do_sc_resize(rs); + + /* Try to recover regions. */ + blk_start_plug(&plug); + do_recovery(rs); + blk_finish_plug(&plug); /* Unplug the queue */ + + /* Quickly grab all new ios queued and add them to the work list. */ + mutex_lock(&rs->io.in_lock); + bio_list_merge(ios, ios_in); + bio_list_init(ios_in); + mutex_unlock(&rs->io.in_lock); + + blk_start_plug(&plug); + if (!bio_list_empty(ios)) + do_ios(rs, ios); /* Got ios to work into the cache. */ + + do_flush(rs); /* Flush any stripes on io list. */ + blk_finish_plug(&plug); /* Unplug the queue */ + do_busy_event(rs); /* Check if we got too busy. */ +} + +/* + * Callback for region hash to dispatch + * delayed bios queued to recovered regions + * (gets called via dm_rh_update_states()). + */ +static void dispatch_delayed_bios(void *context, struct bio_list *bl) +{ + struct raid_set *rs = context; + struct bio *bio; + + /* REMOVEME: statistics; decrement pending delayed bios counter. */ + bio_list_for_each(bio, bl) + atomic_dec(rs->stats + S_DELAYED_BIOS); + + /* Merge region hash private list to work list. */ + bio_list_merge_head(&rs->io.work, bl); + bio_list_init(bl); + ClearRSBandwidth(rs); +} + +/************************************************************* + * Constructor helpers + *************************************************************/ +/* Calculate MB/sec. */ +static unsigned mbpers(struct raid_set *rs, unsigned speed) +{ + return to_bytes(speed * rs->set.data_devs * + rs->recover.io_size * HZ >> 10) >> 10; +} + +/* + * Discover fastest xor algorithm and # of chunks combination. + */ +/* Calculate speed for algorithm and # of chunks. */ +static unsigned xor_speed(struct stripe *stripe) +{ + unsigned r = 0; + unsigned long j; + + /* Wait for next tick. */ + for (j = jiffies; j == jiffies; ) + ; + + /* Do xors for a full tick. */ + for (j = jiffies; j == jiffies; ) { + mb(); + common_xor(stripe, stripe->io.size, 0, 0); + mb(); + r++; + } + + return r; +} + +/* Optimize xor algorithm for this RAID set. */ +static unsigned xor_optimize(struct raid_set *rs) +{ + unsigned chunks_max = 2, p = rs->set.raid_devs, speed_max = 0; + struct xor_func *f = ARRAY_END(xor_funcs), *f_max = NULL; + struct stripe *stripe; + + BUG_ON(list_empty(&rs->recover.stripes)); + stripe = list_first_entry(&rs->recover.stripes, struct stripe, + lists[LIST_RECOVER]); + + /* Must set uptodate so that xor() will belabour chunks. */ + while (p--) + SetChunkUptodate(CHUNK(stripe, p)); + + /* Try all xor functions. */ + while (f-- > xor_funcs) { + unsigned speed; + + /* Set actual xor function for common_xor(). */ + rs->xor.f = f; + rs->xor.chunks = (f->f == xor_blocks_wrapper ? + (MAX_XOR_BLOCKS + 1) : XOR_CHUNKS_MAX) + 1; + + while (rs->xor.chunks-- > 2) { + speed = xor_speed(stripe); + if (speed > speed_max) { + speed_max = speed; + chunks_max = rs->xor.chunks; + f_max = f; + } + } + } + + /* Memorize optimum parameters. */ + rs->xor.f = f_max; + rs->xor.chunks = chunks_max; + return speed_max; +} + +/* + * Allocate a RAID context (a RAID set) + */ +/* Structure for variable RAID parameters. */ +struct variable_parms { + int bandwidth; + int bandwidth_parm; + int chunk_size; + int chunk_size_parm; + int io_size; + int io_size_parm; + int stripes; + int stripes_parm; + int recover_io_size; + int recover_io_size_parm; + int raid_parms; + int recovery; + int recovery_stripes; + int recovery_stripes_parm; +}; + +static struct raid_set * +context_alloc(struct raid_type *raid_type, struct variable_parms *p, + unsigned raid_devs, sector_t sectors_per_dev, + struct dm_target *ti, unsigned dl_parms, char **argv) +{ + int r; + size_t len; + sector_t region_size, ti_len; + struct raid_set *rs = NULL; + struct dm_dirty_log *dl; + struct recover *rec; + + /* + * Create the dirty log + * + * We need to change length for the dirty log constructor, + * because we want an amount of regions for all stripes derived + * from the single device size, so that we can keep region + * size = 2^^n independant of the number of devices + */ + ti_len = ti->len; + ti->len = sectors_per_dev; + dl = dm_dirty_log_create(argv[0], ti, NULL, dl_parms, argv + 2); + ti->len = ti_len; + if (!dl) + goto bad_dirty_log; + + /* Chunk size *must* be smaller than region size. */ + region_size = dl->type->get_region_size(dl); + if (p->chunk_size > region_size) + goto bad_chunk_size; + + /* Recover io size *must* be smaller than region size as well. */ + if (p->recover_io_size > region_size) + goto bad_recover_io_size; + + /* Size and allocate the RAID set structure. */ + len = sizeof(*rs->data) + sizeof(*rs->dev); + if (dm_array_too_big(sizeof(*rs), len, raid_devs)) + goto bad_array; + + len = sizeof(*rs) + raid_devs * len; + rs = kzalloc(len, GFP_KERNEL); + if (!rs) + goto bad_alloc; + + rec = &rs->recover; + atomic_set(&rs->io.in_process, 0); + atomic_set(&rs->io.in_process_max, 0); + rec->io_size = p->recover_io_size; + + /* Pointer to data array. */ + rs->data = (unsigned long **) + ((void *) rs->dev + raid_devs * sizeof(*rs->dev)); + rec->dl = dl; + rs->set.raid_devs = raid_devs; + rs->set.data_devs = raid_devs - raid_type->parity_devs; + rs->set.raid_type = raid_type; + + rs->set.raid_parms = p->raid_parms; + rs->set.chunk_size_parm = p->chunk_size_parm; + rs->set.io_size_parm = p->io_size_parm; + rs->sc.stripes_parm = p->stripes_parm; + rec->io_size_parm = p->recover_io_size_parm; + rec->bandwidth_parm = p->bandwidth_parm; + rec->recovery = p->recovery; + rec->recovery_stripes = p->recovery_stripes; + + /* + * Set chunk and io size and respective shifts + * (used to avoid divisions) + */ + rs->set.chunk_size = p->chunk_size; + rs->set.chunk_shift = ffs(p->chunk_size) - 1; + + rs->set.io_size = p->io_size; + rs->set.io_mask = p->io_size - 1; + /* Mask to adjust address key in case io_size != chunk_size. */ + rs->set.io_inv_mask = (p->chunk_size - 1) & ~rs->set.io_mask; + + rs->set.sectors_per_dev = sectors_per_dev; + + rs->set.ei = -1; /* Indicate no failed device. */ + atomic_set(&rs->set.failed_devs, 0); + + rs->ti = ti; + + atomic_set(rec->io_count + IO_WORK, 0); + atomic_set(rec->io_count + IO_RECOVER, 0); + + /* Initialize io lock and queues. */ + mutex_init(&rs->io.in_lock); + bio_list_init(&rs->io.in); + bio_list_init(&rs->io.work); + + init_waitqueue_head(&rs->io.suspendq); /* Suspend waiters (dm-io). */ + + rec->nr_regions = dm_sector_div_up(sectors_per_dev, region_size); + rec->rh = dm_region_hash_create(rs, dispatch_delayed_bios, + wake_dummy, wake_do_raid, 0, p->recovery_stripes, + dl, region_size, rec->nr_regions); + if (IS_ERR(rec->rh)) + goto bad_rh; + + /* Initialize stripe cache. */ + r = sc_init(rs, p->stripes); + if (r) + goto bad_sc; + + /* REMOVEME: statistics. */ + stats_reset(rs); + ClearRSDevelStats(rs); /* Disnable development status. */ + return rs; + +bad_dirty_log: + TI_ERR_RET("Error creating dirty log", ERR_PTR(-ENOMEM)); + +bad_chunk_size: + dm_dirty_log_destroy(dl); + TI_ERR_RET("Chunk size larger than region size", ERR_PTR(-EINVAL)); + +bad_recover_io_size: + dm_dirty_log_destroy(dl); + TI_ERR_RET("Recover stripe io size larger than region size", + ERR_PTR(-EINVAL)); + +bad_array: + dm_dirty_log_destroy(dl); + TI_ERR_RET("Arry too big", ERR_PTR(-EINVAL)); + +bad_alloc: + dm_dirty_log_destroy(dl); + TI_ERR_RET("Cannot allocate raid context", ERR_PTR(-ENOMEM)); + +bad_rh: + dm_dirty_log_destroy(dl); + ti->error = DM_MSG_PREFIX "Error creating dirty region hash"; + goto free_rs; + +bad_sc: + dm_region_hash_destroy(rec->rh); /* Destroys dirty log too. */ + sc_exit(&rs->sc); + ti->error = DM_MSG_PREFIX "Error creating stripe cache"; +free_rs: + kfree(rs); + return ERR_PTR(-ENOMEM); +} + +/* Free a RAID context (a RAID set). */ +static void context_free(struct raid_set *rs, unsigned p) +{ + while (p--) + dm_put_device(rs->ti, rs->dev[p].dev); + + sc_exit(&rs->sc); + dm_region_hash_destroy(rs->recover.rh); /* Destroys dirty log too. */ + kfree(rs); +} + +/* Create work queue and initialize delayed work. */ +static int rs_workqueue_init(struct raid_set *rs) +{ + struct dm_target *ti = rs->ti; + + rs->io.wq = create_singlethread_workqueue(DAEMON); + if (!rs->io.wq) + TI_ERR_RET("failed to create " DAEMON, -ENOMEM); + + INIT_DELAYED_WORK(&rs->io.dws_do_raid, do_raid); + INIT_WORK(&rs->io.ws_do_table_event, do_table_event); + return 0; +} + +/* Return pointer to raid_type structure for raid name. */ +static struct raid_type *get_raid_type(char *name) +{ + struct raid_type *r = ARRAY_END(raid_types); + + while (r-- > raid_types) { + if (!strcmp(r->name, name)) + return r; + } + + return NULL; +} + +/* FIXME: factor out to dm core. */ +static int multiple(sector_t a, sector_t b, sector_t *n) +{ + sector_t r = a; + + sector_div(r, b); + *n = r; + return a == r * b; +} + +/* Log RAID set information to kernel log. */ +static void rs_log(struct raid_set *rs, unsigned speed) +{ + unsigned p; + char buf[BDEVNAME_SIZE]; + + for (p = 0; p < rs->set.raid_devs; p++) + DMINFO("/dev/%s is raid disk %u%s", + bdevname(rs->dev[p].dev->bdev, buf), p, + (p == rs->set.pi) ? " (parity)" : ""); + + DMINFO("%d/%d/%d sectors chunk/io/recovery size, %u stripes\n" + "algorithm \"%s\", %u chunks with %uMB/s\n" + "%s set with net %u/%u devices", + rs->set.chunk_size, rs->set.io_size, rs->recover.io_size, + atomic_read(&rs->sc.stripes), + rs->xor.f->name, rs->xor.chunks, mbpers(rs, speed), + rs->set.raid_type->descr, rs->set.data_devs, rs->set.raid_devs); +} + +/* Get all devices and offsets. */ +static int dev_parms(struct raid_set *rs, char **argv, int *p) +{ + struct dm_target *ti = rs->ti; + + for (*p = 0; *p < rs->set.raid_devs; (*p)++, argv += 2) { + int r; + unsigned long long tmp; + struct raid_dev *dev = rs->dev + *p; + + /* Get offset and device. */ + if (sscanf(argv[1], "%llu", &tmp) != 1 || + tmp > rs->set.sectors_per_dev) + TI_ERR("Invalid RAID device offset parameter"); + + dev->start = tmp; + r = dm_get_device(ti, *argv, dm_table_get_mode(ti->table), &dev->dev); + if (r) + TI_ERR_RET("RAID device lookup failure", r); + + r = raid_dev_lookup(rs, dev); + if (r != -ENODEV && r < *p) { + (*p)++; /* Ensure dm_put_device() on actual device. */ + TI_ERR_RET("Duplicate RAID device", -ENXIO); + } + } + + return 0; +} + +/* Set recovery bandwidth. */ +static void +recover_set_bandwidth(struct raid_set *rs, unsigned bandwidth) +{ + rs->recover.bandwidth = bandwidth; + rs->recover.bandwidth_work = 100 / bandwidth; +} + +/* Handle variable number of RAID parameters. */ +static int get_raid_variable_parms(struct dm_target *ti, char **argv, + struct variable_parms *vp) +{ + int p, value; + struct { + int action; /* -1: skip, 0: no pwer2 check, 1: power2 check */ + char *errmsg; + int min, max; + int *var, *var2, *var3; + } argctr[] = { + { 1, + "Invalid chunk size; must be -1 or 2^^n and <= 16384", + IO_SIZE_MIN, CHUNK_SIZE_MAX, + &vp->chunk_size_parm, &vp->chunk_size, &vp->io_size }, + { 0, + "Invalid number of stripes: must be -1 or >= 8 and <= 16384", + STRIPES_MIN, STRIPES_MAX, + &vp->stripes_parm, &vp->stripes, NULL }, + { 1, + "Invalid io size; must -1 or >= 8, 2^^n and less equal " + "min(BIO_MAX_SECTORS/2, chunk size)", + IO_SIZE_MIN, 0, /* Needs to be updated in loop below. */ + &vp->io_size_parm, &vp->io_size, NULL }, + { 1, + "Invalid recovery io size; must be -1 or " + "2^^n and less equal BIO_MAX_SECTORS/2", + RECOVER_IO_SIZE_MIN, BIO_MAX_SECTORS / 2, + &vp->recover_io_size_parm, &vp->recover_io_size, NULL }, + { 0, + "Invalid recovery bandwidth percentage; " + "must be -1 or > 0 and <= 100", + BANDWIDTH_MIN, BANDWIDTH_MAX, + &vp->bandwidth_parm, &vp->bandwidth, NULL }, + /* Handle sync argument seperately in loop. */ + { -1, + "Invalid recovery switch; must be \"sync\" or \"nosync\"" }, + { 0, + "Invalid number of recovery stripes;" + "must be -1, > 0 and <= 16384", + RECOVERY_STRIPES_MIN, RECOVERY_STRIPES_MAX, + &vp->recovery_stripes_parm, &vp->recovery_stripes, NULL }, + }, *varp; + + /* Fetch # of variable raid parameters. */ + if (sscanf(*(argv++), "%d", &vp->raid_parms) != 1 || + !range_ok(vp->raid_parms, 0, 7)) + TI_ERR("Bad variable raid parameters number"); + + /* Preset variable RAID parameters. */ + vp->chunk_size = CHUNK_SIZE_DEFAULT; + vp->io_size = IO_SIZE_DEFAULT; + vp->stripes = STRIPES_DEFAULT; + vp->recover_io_size = RECOVER_IO_SIZE_DEFAULT; + vp->bandwidth = BANDWIDTH_DEFAULT; + vp->recovery = 1; + vp->recovery_stripes = RECOVERY_STRIPES_DEFAULT; + + /* Walk the array of argument constraints for all given ones. */ + for (p = 0, varp = argctr; p < vp->raid_parms; p++, varp++) { + BUG_ON(varp >= ARRAY_END(argctr)); + + /* Special case for "[no]sync" string argument. */ + if (varp->action < 0) { + if (!strcmp(*argv, "sync")) + ; + else if (!strcmp(*argv, "nosync")) + vp->recovery = 0; + else + TI_ERR(varp->errmsg); + + argv++; + continue; + } + + /* + * Special case for io_size depending + * on previously set chunk size. + */ + if (p == 2) + varp->max = min(BIO_MAX_SECTORS / 2, vp->chunk_size); + + if (sscanf(*(argv++), "%d", &value) != 1 || + (value != -1 && + ((varp->action && !POWER_OF_2(value)) || + !range_ok(value, varp->min, varp->max)))) + TI_ERR(varp->errmsg); + + *varp->var = value; + if (value != -1) { + if (varp->var2) + *varp->var2 = value; + if (varp->var3) + *varp->var3 = value; + } + } + + return 0; +} + +/* Parse optional locking parameters. */ +static int get_raid_locking_parms(struct dm_target *ti, char **argv, + int *locking_parms, + struct dm_raid45_locking_type **locking_type) +{ + if (!strnicmp(argv[0], "locking", strlen(argv[0]))) { + char *lckstr = argv[1]; + size_t lcksz = strlen(lckstr); + + if (!strnicmp(lckstr, "none", lcksz)) { + *locking_type = &locking_none; + *locking_parms = 2; + } else if (!strnicmp(lckstr, "cluster", lcksz)) { + DMERR("locking type \"%s\" not yet implemented", + lckstr); + return -EINVAL; + } else { + DMERR("unknown locking type \"%s\"", lckstr); + return -EINVAL; + } + } + + *locking_parms = 0; + *locking_type = &locking_none; + return 0; +} + +/* Set backing device read ahead properties of RAID set. */ +static void rs_set_read_ahead(struct raid_set *rs, + unsigned sectors, unsigned stripes) +{ + unsigned ra_pages = dm_div_up(sectors, SECTORS_PER_PAGE); + struct mapped_device *md = dm_table_get_md(rs->ti->table); + struct backing_dev_info *bdi = &dm_disk(md)->queue->backing_dev_info; + + /* Set read-ahead for the RAID set and the component devices. */ + if (ra_pages) { + unsigned p = rs->set.raid_devs; + + bdi->ra_pages = stripes * ra_pages * rs->set.data_devs; + + while (p--) { + struct request_queue *q = + bdev_get_queue(rs->dev[p].dev->bdev); + + q->backing_dev_info.ra_pages = ra_pages; + } + } + + dm_put(md); +} + +/* Set congested function. */ +static void rs_set_congested_fn(struct raid_set *rs) +{ + struct mapped_device *md = dm_table_get_md(rs->ti->table); + struct backing_dev_info *bdi = &dm_disk(md)->queue->backing_dev_info; + + /* Set congested function and data. */ + bdi->congested_fn = rs_congested; + bdi->congested_data = rs; + dm_put(md); +} + +/* + * Construct a RAID4/5 mapping: + * + * log_type #log_params \ + * raid_type [#parity_dev] #raid_variable_params \ + * [locking "none"/"cluster"] + * #raid_devs #dev_to_initialize [ ]{3,} + * + * log_type = "core"/"disk", + * #log_params = 1-3 (1-2 for core dirty log type, 3 for disk dirty log only) + * log_params = [dirty_log_path] region_size [[no]sync]) + * + * raid_type = "raid4", "raid5_la", "raid5_ra", "raid5_ls", "raid5_rs" + * + * #parity_dev = N if raid_type = "raid4" + * o N = -1: pick default = last device + * o N >= 0 and < #raid_devs: parity device index + * + * #raid_variable_params = 0-7; raid_params (-1 = default): + * [chunk_size [#stripes [io_size [recover_io_size \ + * [%recovery_bandwidth [recovery_switch [#recovery_stripes]]]]]]] + * o chunk_size (unit to calculate drive addresses; must be 2^^n, > 8 + * and <= CHUNK_SIZE_MAX) + * o #stripes is number of stripes allocated to stripe cache + * (must be > 1 and < STRIPES_MAX) + * o io_size (io unit size per device in sectors; must be 2^^n and > 8) + * o recover_io_size (io unit size per device for recovery in sectors; + must be 2^^n, > SECTORS_PER_PAGE and <= region_size) + * o %recovery_bandwith is the maximum amount spend for recovery during + * application io (1-100%) + * o recovery switch = [sync|nosync] + * o #recovery_stripes is the number of recovery stripes used for + * parallel recovery of the RAID set + * If raid_variable_params = 0, defaults will be used. + * Any raid_variable_param can be set to -1 to apply a default + * + * #raid_devs = N (N >= 3) + * + * #dev_to_initialize = N + * -1: initialize parity on all devices + * >= 0 and < #raid_devs: initialize raid_path; used to force reconstruction + * of a failed devices content after replacement + * + * = device_path (eg, /dev/sdd1) + * = begin at offset on + * + */ +#define MIN_PARMS 13 +static int raid_ctr(struct dm_target *ti, unsigned argc, char **argv) +{ + int dev_to_init, dl_parms, i, locking_parms, + parity_parm, pi = -1, r, raid_devs; + unsigned speed; + sector_t tmp, sectors_per_dev; + struct dm_raid45_locking_type *locking; + struct raid_set *rs; + struct raid_type *raid_type; + struct variable_parms parms; + + /* Ensure minimum number of parameters. */ + if (argc < MIN_PARMS) + TI_ERR("Not enough parameters"); + + /* Fetch # of dirty log parameters. */ + if (sscanf(argv[1], "%d", &dl_parms) != 1 || + !range_ok(dl_parms, 1, 4711)) /* ;-) */ + TI_ERR("Bad dirty log parameters number"); + + /* Check raid_type. */ + raid_type = get_raid_type(argv[dl_parms + 2]); + if (!raid_type) + TI_ERR("Bad raid type"); + + /* In case of RAID4, parity drive is selectable. */ + parity_parm = !!(raid_type->level == raid4); + + /* Handle variable number of RAID parameters. */ + r = get_raid_variable_parms(ti, argv + dl_parms + parity_parm + 3, + &parms); + if (r) + return r; + + /* Handle any locking parameters. */ + r = get_raid_locking_parms(ti, + argv + dl_parms + parity_parm + + parms.raid_parms + 4, + &locking_parms, &locking); + if (r) + return r; + + /* # of raid devices. */ + i = dl_parms + parity_parm + parms.raid_parms + locking_parms + 4; + if (sscanf(argv[i], "%d", &raid_devs) != 1 || + raid_devs < raid_type->minimal_devs) + TI_ERR("Invalid number of raid devices"); + + /* In case of RAID4, check parity drive index is in limits. */ + if (raid_type->level == raid4) { + /* Fetch index of parity device. */ + if (sscanf(argv[dl_parms + 3], "%d", &pi) != 1 || + (pi != -1 && !range_ok(pi, 0, raid_devs - 1))) + TI_ERR("Invalid RAID4 parity device index"); + } + + /* + * Index of device to initialize starts at 0 + * + * o -1 -> don't initialize a selected device; + * initialize parity conforming to algorithm + * o 0..raid_devs-1 -> initialize respective device + * (used for reconstruction of a replaced device) + */ + if (sscanf(argv[dl_parms + parity_parm + parms.raid_parms + + locking_parms + 5], "%d", &dev_to_init) != 1 || + !range_ok(dev_to_init, -1, raid_devs - 1)) + TI_ERR("Invalid number for raid device to initialize"); + + /* Check # of raid device arguments. */ + if (argc - dl_parms - parity_parm - parms.raid_parms - 6 != + 2 * raid_devs) + TI_ERR("Wrong number of raid device/offset arguments"); + + /* + * Check that the table length is devisable + * w/o rest by (raid_devs - parity_devs) + */ + if (!multiple(ti->len, raid_devs - raid_type->parity_devs, + §ors_per_dev)) + TI_ERR("Target length not divisible by number of data devices"); + + /* + * Check that the device size is + * devisable w/o rest by chunk size + */ + if (!multiple(sectors_per_dev, parms.chunk_size, &tmp)) + TI_ERR("Device length not divisible by chunk_size"); + + /**************************************************************** + * Now that we checked the constructor arguments -> + * let's allocate the RAID set + ****************************************************************/ + rs = context_alloc(raid_type, &parms, raid_devs, sectors_per_dev, + ti, dl_parms, argv); + if (IS_ERR(rs)) + return PTR_ERR(rs); + + + rs->set.dev_to_init = rs->set.dev_to_init_parm = dev_to_init; + rs->set.pi = rs->set.pi_parm = pi; + + /* Set RAID4 parity drive index. */ + if (raid_type->level == raid4) + rs->set.pi = (pi == -1) ? rs->set.data_devs : pi; + + recover_set_bandwidth(rs, parms.bandwidth); + + /* Use locking type to lock stripe access. */ + rs->locking = locking; + + /* Get the device/offset tupels. */ + argv += dl_parms + 6 + parity_parm + parms.raid_parms; + r = dev_parms(rs, argv, &i); + if (r) + goto err; + + /* Set backing device information (eg. read ahead). */ + rs_set_read_ahead(rs, 2 * rs->set.chunk_size, 4 /* stripes */); + rs_set_congested_fn(rs); /* Set congested function. */ + SetRSCheckOverwrite(rs); /* Allow chunk overwrite checks. */ + speed = xor_optimize(rs); /* Select best xor algorithm. */ + + /* Set for recovery of any nosync regions. */ + if (parms.recovery) + SetRSRecover(rs); + else { + /* + * Need to free recovery stripe(s) here in case + * of nosync, because xor_optimize uses one. + */ + set_start_recovery(rs); + set_end_recovery(rs); + stripe_recover_free(rs); + } + + /* + * Make sure that dm core only hands maximum io size + * length down and pays attention to io boundaries. + */ + ti->max_io_len = rs->set.io_size; + ti->private = rs; + + /* Initialize work queue to handle this RAID set's io. */ + r = rs_workqueue_init(rs); + if (r) + goto err; + + rs_log(rs, speed); /* Log information about RAID set. */ + return 0; + +err: + context_free(rs, i); + return r; +} + +/* + * Destruct a raid mapping + */ +static void raid_dtr(struct dm_target *ti) +{ + struct raid_set *rs = ti->private; + + destroy_workqueue(rs->io.wq); + context_free(rs, rs->set.raid_devs); +} + +/* Raid mapping function. */ +static int raid_map(struct dm_target *ti, struct bio *bio) +{ + /* I don't want to waste stripe cache capacity. */ + if (bio_rw(bio) == READA) + return -EIO; + else { + struct raid_set *rs = ti->private; + + /* + * Get io reference to be waiting for to drop + * to zero on device suspension/destruction. + */ + io_get(rs); + bio->bi_sector -= ti->begin; /* Remap sector. */ + + /* Queue io to RAID set. */ + mutex_lock(&rs->io.in_lock); + bio_list_add(&rs->io.in, bio); + mutex_unlock(&rs->io.in_lock); + + /* Wake daemon to process input list. */ + wake_do_raid(rs); + + /* REMOVEME: statistics. */ + atomic_inc(rs->stats + (bio_data_dir(bio) == READ ? + S_BIOS_READ : S_BIOS_WRITE)); + return DM_MAPIO_SUBMITTED; /* Handle later. */ + } +} + +/* Device suspend. */ +static void raid_presuspend(struct dm_target *ti) +{ + struct raid_set *rs = ti->private; + struct dm_dirty_log *dl = rs->recover.dl; + + SetRSSuspend(rs); + + if (RSRecover(rs)) + dm_rh_stop_recovery(rs->recover.rh); + + cancel_delayed_work(&rs->io.dws_do_raid); + flush_workqueue(rs->io.wq); + wait_ios(rs); /* Wait for completion of all ios being processed. */ + + if (dl->type->presuspend && dl->type->presuspend(dl)) + /* FIXME: need better error handling. */ + DMWARN("log presuspend failed"); +} + +static void raid_postsuspend(struct dm_target *ti) +{ + struct raid_set *rs = ti->private; + struct dm_dirty_log *dl = rs->recover.dl; + + if (dl->type->postsuspend && dl->type->postsuspend(dl)) + /* FIXME: need better error handling. */ + DMWARN("log postsuspend failed"); + +} + +/* Device resume. */ +static void raid_resume(struct dm_target *ti) +{ + struct raid_set *rs = ti->private; + struct recover *rec = &rs->recover; + struct dm_dirty_log *dl = rec->dl; + + if (dl->type->resume && dl->type->resume(dl)) + /* Resume dirty log. */ + /* FIXME: need better error handling. */ + DMWARN("log resume failed"); + + rec->nr_regions_to_recover = + rec->nr_regions - dl->type->get_sync_count(dl); + + /* Restart any unfinished recovery. */ + if (RSRecover(rs)) { + set_start_recovery(rs); + dm_rh_start_recovery(rec->rh); + } + + ClearRSSuspend(rs); + wake_do_raid(rs); +} + +/* Return stripe cache size. */ +static unsigned sc_size(struct raid_set *rs) +{ + return to_sector(atomic_read(&rs->sc.stripes) * + (sizeof(struct stripe) + + (sizeof(struct stripe_chunk) + + (sizeof(struct page_list) + + to_bytes(rs->set.io_size) * + rs->set.raid_devs)) + + (rs->recover.end_jiffies ? + 0 : rs->recover.recovery_stripes * + to_bytes(rs->set.raid_devs * rs->recover.io_size)))); +} + +/* REMOVEME: status output for development. */ +static void raid_devel_stats(struct dm_target *ti, char *result, + unsigned *size, unsigned maxlen) +{ + unsigned sz = *size; + unsigned long j; + char buf[BDEVNAME_SIZE], *p; + struct stats_map *sm; + struct raid_set *rs = ti->private; + struct recover *rec = &rs->recover; + struct timespec ts; + + DMEMIT("%s %s %u\n", version, rs->xor.f->name, rs->xor.chunks); + DMEMIT("act_ios=%d ", io_ref(rs)); + DMEMIT("act_ios_max=%d\n", atomic_read(&rs->io.in_process_max)); + DMEMIT("act_stripes=%d ", sc_active(&rs->sc)); + DMEMIT("act_stripes_max=%d\n", + atomic_read(&rs->sc.active_stripes_max)); + + for (sm = stats_map; sm < ARRAY_END(stats_map); sm++) + DMEMIT("%s%d", sm->str, atomic_read(rs->stats + sm->type)); + + DMEMIT(" checkovr=%s\n", RSCheckOverwrite(rs) ? "on" : "off"); + DMEMIT("sc=%u/%u/%u/%u/%u/%u/%u\n", rs->set.chunk_size, + atomic_read(&rs->sc.stripes), rs->set.io_size, + rec->recovery_stripes, rec->io_size, rs->sc.hash.buckets, + sc_size(rs)); + + j = (rec->end_jiffies ? rec->end_jiffies : jiffies) - + rec->start_jiffies; + jiffies_to_timespec(j, &ts); + sprintf(buf, "%ld.%ld", ts.tv_sec, ts.tv_nsec); + p = strchr(buf, '.'); + p[3] = 0; + + DMEMIT("rg=%llu/%llu/%llu/%u %s\n", + (unsigned long long) rec->nr_regions_recovered, + (unsigned long long) rec->nr_regions_to_recover, + (unsigned long long) rec->nr_regions, rec->bandwidth, buf); + + *size = sz; +} + +static void raid_status(struct dm_target *ti, status_type_t type, + unsigned status_flags, char *result, unsigned maxlen) +{ + unsigned p, sz = 0; + char buf[BDEVNAME_SIZE]; + struct raid_set *rs = ti->private; + int raid_parms[] = { + rs->set.chunk_size_parm, + rs->sc.stripes_parm, + rs->set.io_size_parm, + rs->recover.io_size_parm, + rs->recover.bandwidth_parm, + -2, + rs->recover.recovery_stripes, + }; + + switch (type) { + case STATUSTYPE_INFO: + /* REMOVEME: statistics. */ + if (RSDevelStats(rs)) + raid_devel_stats(ti, result, &sz, maxlen); + + DMEMIT("%u ", rs->set.raid_devs); + + for (p = 0; p < rs->set.raid_devs; p++) + DMEMIT("%s ", + format_dev_t(buf, rs->dev[p].dev->bdev->bd_dev)); + + DMEMIT("1 "); + for (p = 0; p < rs->set.raid_devs; p++) { + DMEMIT("%c", !DevFailed(rs->dev + p) ? 'A' : 'D'); + + if (p == rs->set.pi) + DMEMIT("p"); + + if (rs->set.dev_to_init == p) + DMEMIT("i"); + } + + break; + case STATUSTYPE_TABLE: + sz = rs->recover.dl->type->status(rs->recover.dl, type, + result, maxlen); + DMEMIT("%s %u ", rs->set.raid_type->name, + rs->set.raid_parms); + + for (p = 0; p < rs->set.raid_parms; p++) { + if (raid_parms[p] > -2) + DMEMIT("%d ", raid_parms[p]); + else + DMEMIT("%s ", rs->recover.recovery ? + "sync" : "nosync"); + } + + DMEMIT("%u %d ", rs->set.raid_devs, rs->set.dev_to_init); + + for (p = 0; p < rs->set.raid_devs; p++) + DMEMIT("%s %llu ", + format_dev_t(buf, rs->dev[p].dev->bdev->bd_dev), + (unsigned long long) rs->dev[p].start); + } +} + +/* + * Message interface + */ +enum raid_msg_actions { + act_bw, /* Recovery bandwidth switch. */ + act_dev, /* Device failure switch. */ + act_overwrite, /* Stripe overwrite check. */ + act_stats, /* Development statistics switch. */ + act_sc, /* Stripe cache switch. */ + + act_on, /* Set entity on. */ + act_off, /* Set entity off. */ + act_reset, /* Reset entity. */ + + act_set = act_on, /* Set # absolute. */ + act_grow = act_off, /* Grow # by an amount. */ + act_shrink = act_reset, /* Shrink # by an amount. */ +}; + +/* Turn a delta into an absolute value. */ +static int _absolute(unsigned long action, int act, int r) +{ + /* Make delta absolute. */ + if (test_bit(act_set, &action)) + ; + else if (test_bit(act_grow, &action)) + r += act; + else if (test_bit(act_shrink, &action)) + r = act - r; + else + r = -EINVAL; + + return r; +} + + /* Change recovery io bandwidth. */ +static int bandwidth_change(struct dm_msg *msg, void *context) +{ + struct raid_set *rs = context; + int act = rs->recover.bandwidth; + int bandwidth = DM_MSG_INT_ARG(msg); + + if (range_ok(bandwidth, BANDWIDTH_MIN, BANDWIDTH_MAX)) { + /* Make delta bandwidth absolute. */ + bandwidth = _absolute(msg->action, act, bandwidth); + + /* Check range. */ + if (range_ok(bandwidth, BANDWIDTH_MIN, BANDWIDTH_MAX)) { + recover_set_bandwidth(rs, bandwidth); + return 0; + } + } + + set_bit(dm_msg_ret_arg, &msg->ret); + set_bit(dm_msg_ret_inval, &msg->ret); + return -EINVAL; +} + +/* Set/reset development feature flags. */ +static int devel_flags(struct dm_msg *msg, void *context) +{ + struct raid_set *rs = context; + + if (test_bit(act_on, &msg->action)) + return test_and_set_bit(msg->spec->parm, + &rs->io.flags) ? -EPERM : 0; + else if (test_bit(act_off, &msg->action)) + return test_and_clear_bit(msg->spec->parm, + &rs->io.flags) ? 0 : -EPERM; + else if (test_bit(act_reset, &msg->action)) { + if (test_bit(act_stats, &msg->action)) { + stats_reset(rs); + goto on; + } else if (test_bit(act_overwrite, &msg->action)) { +on: + set_bit(msg->spec->parm, &rs->io.flags); + return 0; + } + } + + return -EINVAL; +} + +/* Resize the stripe cache. */ +static int sc_resize(struct dm_msg *msg, void *context) +{ + int act, stripes; + struct raid_set *rs = context; + + /* Deny permission in case the daemon is still resizing!. */ + if (atomic_read(&rs->sc.stripes_to_set)) + return -EPERM; + + stripes = DM_MSG_INT_ARG(msg); + if (stripes > 0) { + act = atomic_read(&rs->sc.stripes); + + /* Make delta stripes absolute. */ + stripes = _absolute(msg->action, act, stripes); + + /* + * Check range and that the # of stripes changes. + * We leave the resizing to the wroker. + */ + if (range_ok(stripes, STRIPES_MIN, STRIPES_MAX) && + stripes != atomic_read(&rs->sc.stripes)) { + atomic_set(&rs->sc.stripes_to_set, stripes); + wake_do_raid(rs); + return 0; + } + } + + set_bit(dm_msg_ret_arg, &msg->ret); + set_bit(dm_msg_ret_inval, &msg->ret); + return -EINVAL; +} + +/* Parse the RAID message action. */ +/* + * 'ba[ndwidth] {se[t],g[row],sh[rink]} #' # e.g 'ba se 50' + * "o[verwrite] {on,of[f],r[eset]}' # e.g. 'o of' + * 'sta[tistics] {on,of[f],r[eset]}' # e.g. 'stat of' + * 'str[ipecache] {se[t],g[row],sh[rink]} #' # e.g. 'stripe set 1024' + * + */ +static int raid_message(struct dm_target *ti, unsigned argc, char **argv) +{ + /* Variables to store the parsed parameters im. */ + static int i[2]; + static unsigned long *i_arg[] = { + (unsigned long *) i + 0, + (unsigned long *) i + 1, + }; + + /* Declare all message option strings. */ + static char *str_sgs[] = { "set", "grow", "shrink" }; + static char *str_oor[] = { "on", "off", "reset" }; + + /* Declare all actions. */ + static unsigned long act_sgs[] = { act_set, act_grow, act_shrink }; + static unsigned long act_oor[] = { act_on, act_off, act_reset }; + + /* Bandwidth option. */ + static struct dm_message_option bw_opt = { 3, str_sgs, act_sgs }; + static struct dm_message_argument bw_args = { + 1, i_arg, { dm_msg_int_t } + }; + + static struct dm_message_argument null_args = { + 0, NULL, { dm_msg_int_t } + }; + + /* Overwrite and statistics option. */ + static struct dm_message_option ovr_stats_opt = { 3, str_oor, act_oor }; + + /* Sripecache option. */ + static struct dm_message_option stripe_opt = { 3, str_sgs, act_sgs }; + + /* Declare messages. */ + static struct dm_msg_spec specs[] = { + { "bandwidth", act_bw, &bw_opt, &bw_args, + 0, bandwidth_change }, + { "overwrite", act_overwrite, &ovr_stats_opt, &null_args, + RS_CHECK_OVERWRITE, devel_flags }, + { "statistics", act_stats, &ovr_stats_opt, &null_args, + RS_DEVEL_STATS, devel_flags }, + { "stripecache", act_sc, &stripe_opt, &bw_args, + 0, sc_resize }, + }; + + /* The message for the parser. */ + struct dm_msg msg = { + .num_specs = ARRAY_SIZE(specs), + .specs = specs, + }; + + return dm_message_parse(TARGET, &msg, ti->private, argc, argv); +} +/* + * END message interface + */ + +static struct target_type raid_target = { + .name = "raid45", + .version = {1, 0, 0}, + .module = THIS_MODULE, + .ctr = raid_ctr, + .dtr = raid_dtr, + .map = raid_map, + .presuspend = raid_presuspend, + .postsuspend = raid_postsuspend, + .resume = raid_resume, + .status = raid_status, + .message = raid_message, +}; + +static void init_exit(const char *bad_msg, const char *good_msg, int r) +{ + if (r) + DMERR("Failed to %sregister target [%d]", bad_msg, r); + else + DMINFO("%s %s", good_msg, version); +} + +static int __init dm_raid_init(void) +{ + int r = dm_register_target(&raid_target); + + init_exit("", "initialized", r); + return r; +} + +static void __exit dm_raid_exit(void) +{ + dm_unregister_target(&raid_target); + init_exit("un", "exit", 0); +} + +/* Module hooks. */ +module_init(dm_raid_init); +module_exit(dm_raid_exit); + +MODULE_DESCRIPTION(DM_NAME " raid4/5 target"); +MODULE_AUTHOR("Heinz Mauelshagen "); +MODULE_LICENSE("GPL"); +MODULE_ALIAS("dm-raid4"); +MODULE_ALIAS("dm-raid5"); --- linux-raspi2-4.2.0.orig/ubuntu/dm-raid4-5/dm-raid4-5.h +++ linux-raspi2-4.2.0/ubuntu/dm-raid4-5/dm-raid4-5.h @@ -0,0 +1,27 @@ +/* + * Copyright (C) 2006 Red Hat GmbH + * + * Module Author: Heinz Mauelshagen (Mauelshagen@RedHat.com) + * + * This file is released under the GPL. + * + */ + +#ifndef _DM_RAID45_H +#define _DM_RAID45_H + +/* Factor out to dm.h! */ +#define STR_LEN(ptr, str) ptr, str, strlen(ptr) + +enum lock_type { RAID45_EX, RAID45_SHARED }; + +struct dmraid45_locking_type { + /* Request a lock on a stripe. */ + void* (*lock)(sector_t key, enum lock_type type); + + /* Release a lock on a stripe. */ + void (*unlock)(void *lock_handle); + +}; + +#endif --- linux-raspi2-4.2.0.orig/ubuntu/dm-raid4-5/dm-raid45.h +++ linux-raspi2-4.2.0/ubuntu/dm-raid4-5/dm-raid45.h @@ -0,0 +1,28 @@ +/* + * Copyright (C) 2006-2008 Red Hat, Inc. All rights reserved. + * + * Module Author: Heinz Mauelshagen (Mauelshagen@RedHat.com) + * + * Locking definitions for the device-mapper RAID45 target. + * + * This file is released under the GPL. + * + */ + +#ifndef _DM_RAID45_H +#define _DM_RAID45_H + +/* Factor out to dm.h! */ +#define STR_LEN(ptr, str) (ptr), (str), strlen((ptr)) + +enum dm_lock_type { DM_RAID45_EX, DM_RAID45_SHARED }; + +struct dm_raid45_locking_type { + /* Request a lock on a stripe. */ + void* (*lock)(sector_t key, enum dm_lock_type type); + + /* Release a lock on a stripe. */ + void (*unlock)(void *lock_handle); +}; + +#endif --- linux-raspi2-4.2.0.orig/ubuntu/dm-raid4-5/dm-region-hash.c +++ linux-raspi2-4.2.0/ubuntu/dm-raid4-5/dm-region-hash.c @@ -0,0 +1,719 @@ +/* + * Copyright (C) 2003 Sistina Software Limited. + * Copyright (C) 2004-2008 Red Hat, Inc. All rights reserved. + * + * This file is released under the GPL. + */ + +#include +#include "dm-region-hash.h" + +#include +#include +#include +#include +#include + +#include "dm.h" + +#define DM_MSG_PREFIX "region hash" + +/*----------------------------------------------------------------- + * Region hash + * + * The mirror splits itself up into discrete regions. Each + * region can be in one of three states: clean, dirty, + * nosync. There is no need to put clean regions in the hash. + * + * In addition to being present in the hash table a region _may_ + * be present on one of three lists. + * + * clean_regions: Regions on this list have no io pending to + * them, they are in sync, we are no longer interested in them, + * they are dull. dm_rh_update_states() will remove them from the + * hash table. + * + * quiesced_regions: These regions have been spun down, ready + * for recovery. rh_recovery_start() will remove regions from + * this list and hand them to kmirrord, which will schedule the + * recovery io with kcopyd. + * + * recovered_regions: Regions that kcopyd has successfully + * recovered. dm_rh_update_states() will now schedule any delayed + * io, up the recovery_count, and remove the region from the + * hash. + * + * There are 2 locks: + * A rw spin lock 'hash_lock' protects just the hash table, + * this is never held in write mode from interrupt context, + * which I believe means that we only have to disable irqs when + * doing a write lock. + * + * An ordinary spin lock 'region_lock' that protects the three + * lists in the region_hash, with the 'state', 'list' and + * 'delayed_bios' fields of the regions. This is used from irq + * context, so all other uses will have to suspend local irqs. + *---------------------------------------------------------------*/ +struct dm_region_hash { + uint32_t region_size; + unsigned region_shift; + + /* holds persistent region state */ + struct dm_dirty_log *log; + + /* hash table */ + rwlock_t hash_lock; + mempool_t *region_pool; + unsigned mask; + unsigned nr_buckets; + unsigned prime; + unsigned shift; + struct list_head *buckets; + + unsigned max_recovery; /* Max # of regions to recover in parallel */ + + spinlock_t region_lock; + atomic_t recovery_in_flight; + struct semaphore recovery_count; + struct list_head clean_regions; + struct list_head quiesced_regions; + struct list_head recovered_regions; + struct list_head failed_recovered_regions; + + void *context; + sector_t target_begin; + + /* Callback function to schedule bios writes */ + void (*dispatch_bios)(void *context, struct bio_list *bios); + + /* Callback function to wakeup callers worker thread. */ + void (*wakeup_workers)(void *context); + + /* Callback function to wakeup callers recovery waiters. */ + void (*wakeup_all_recovery_waiters)(void *context); +}; + +struct dm_region { + struct dm_region_hash *rh; /* FIXME: can we get rid of this ? */ + region_t key; + int state; + + struct list_head hash_list; + struct list_head list; + + atomic_t pending; + struct bio_list delayed_bios; +}; + +/* + * Conversion fns + */ +region_t dm_rh_sector_to_region(struct dm_region_hash *rh, sector_t sector) +{ + return sector >> rh->region_shift; +} +// EXPORT_SYMBOL_GPL(dm_rh_sector_to_region); + +sector_t dm_rh_region_to_sector(struct dm_region_hash *rh, region_t region) +{ + return region << rh->region_shift; +} +// EXPORT_SYMBOL_GPL(dm_rh_region_to_sector); + +region_t dm_rh_bio_to_region(struct dm_region_hash *rh, struct bio *bio) +{ + return dm_rh_sector_to_region(rh, bio->bi_sector - rh->target_begin); +} +// EXPORT_SYMBOL_GPL(dm_rh_bio_to_region); + +void *dm_rh_region_context(struct dm_region *reg) +{ + return reg->rh->context; +} +// EXPORT_SYMBOL_GPL(dm_rh_region_context); + +region_t dm_rh_get_region_key(struct dm_region *reg) +{ + return reg->key; +} +// EXPORT_SYMBOL_GPL(dm_rh_get_region_key); + +sector_t dm_rh_get_region_size(struct dm_region_hash *rh) +{ + return rh->region_size; +} +// EXPORT_SYMBOL_GPL(dm_rh_get_region_size); + +/* + * FIXME: shall we pass in a structure instead of all these args to + * dm_region_hash_create()???? + */ +#define RH_HASH_MULT 2654435387U +#define RH_HASH_SHIFT 12 + +#define MIN_REGIONS 64 +struct dm_region_hash *dm_region_hash_create( + void *context, void (*dispatch_bios)(void *context, + struct bio_list *bios), + void (*wakeup_workers)(void *context), + void (*wakeup_all_recovery_waiters)(void *context), + sector_t target_begin, unsigned max_recovery, + struct dm_dirty_log *log, uint32_t region_size, + region_t nr_regions) +{ + struct dm_region_hash *rh; + unsigned nr_buckets, max_buckets; + size_t i; + + /* + * Calculate a suitable number of buckets for our hash + * table. + */ + max_buckets = nr_regions >> 6; + for (nr_buckets = 128u; nr_buckets < max_buckets; nr_buckets <<= 1) + ; + nr_buckets >>= 1; + + rh = kmalloc(sizeof(*rh), GFP_KERNEL); + if (!rh) { + DMERR("unable to allocate region hash memory"); + return ERR_PTR(-ENOMEM); + } + + rh->context = context; + rh->dispatch_bios = dispatch_bios; + rh->wakeup_workers = wakeup_workers; + rh->wakeup_all_recovery_waiters = wakeup_all_recovery_waiters; + rh->target_begin = target_begin; + rh->max_recovery = max_recovery; + rh->log = log; + rh->region_size = region_size; + rh->region_shift = ffs(region_size) - 1; + rwlock_init(&rh->hash_lock); + rh->mask = nr_buckets - 1; + rh->nr_buckets = nr_buckets; + + rh->shift = RH_HASH_SHIFT; + rh->prime = RH_HASH_MULT; + + rh->buckets = vmalloc(nr_buckets * sizeof(*rh->buckets)); + if (!rh->buckets) { + DMERR("unable to allocate region hash bucket memory"); + kfree(rh); + return ERR_PTR(-ENOMEM); + } + + for (i = 0; i < nr_buckets; i++) + INIT_LIST_HEAD(rh->buckets + i); + + spin_lock_init(&rh->region_lock); + sema_init(&rh->recovery_count, 0); + atomic_set(&rh->recovery_in_flight, 0); + INIT_LIST_HEAD(&rh->clean_regions); + INIT_LIST_HEAD(&rh->quiesced_regions); + INIT_LIST_HEAD(&rh->recovered_regions); + INIT_LIST_HEAD(&rh->failed_recovered_regions); + + rh->region_pool = mempool_create_kmalloc_pool(MIN_REGIONS, + sizeof(struct dm_region)); + if (!rh->region_pool) { + vfree(rh->buckets); + kfree(rh); + rh = ERR_PTR(-ENOMEM); + } + + return rh; +} +// EXPORT_SYMBOL_GPL(dm_region_hash_create); + +void dm_region_hash_destroy(struct dm_region_hash *rh) +{ + unsigned h; + struct dm_region *reg, *nreg; + + BUG_ON(!list_empty(&rh->quiesced_regions)); + for (h = 0; h < rh->nr_buckets; h++) { + list_for_each_entry_safe(reg, nreg, rh->buckets + h, + hash_list) { + BUG_ON(atomic_read(®->pending)); + mempool_free(reg, rh->region_pool); + } + } + + if (rh->log) + dm_dirty_log_destroy(rh->log); + + if (rh->region_pool) + mempool_destroy(rh->region_pool); + + vfree(rh->buckets); + kfree(rh); +} +// EXPORT_SYMBOL_GPL(dm_region_hash_destroy); + +struct dm_dirty_log *dm_rh_dirty_log(struct dm_region_hash *rh) +{ + return rh->log; +} +// EXPORT_SYMBOL_GPL(dm_rh_dirty_log); + +static unsigned rh_hash(struct dm_region_hash *rh, region_t region) +{ + return (unsigned) ((region * rh->prime) >> rh->shift) & rh->mask; +} + +static struct dm_region *__rh_lookup(struct dm_region_hash *rh, region_t region) +{ + struct dm_region *reg; + struct list_head *bucket = rh->buckets + rh_hash(rh, region); + + list_for_each_entry(reg, bucket, hash_list) + if (reg->key == region) + return reg; + + return NULL; +} + +static void __rh_insert(struct dm_region_hash *rh, struct dm_region *reg) +{ + list_add(®->hash_list, rh->buckets + rh_hash(rh, reg->key)); +} + +static struct dm_region *__rh_alloc(struct dm_region_hash *rh, region_t region) +{ + struct dm_region *reg, *nreg; + + nreg = mempool_alloc(rh->region_pool, GFP_ATOMIC); + if (unlikely(!nreg)) + nreg = kmalloc(sizeof(*nreg), GFP_NOIO | __GFP_NOFAIL); + + nreg->state = rh->log->type->in_sync(rh->log, region, 1) ? + DM_RH_CLEAN : DM_RH_NOSYNC; + nreg->rh = rh; + nreg->key = region; + INIT_LIST_HEAD(&nreg->list); + atomic_set(&nreg->pending, 0); + bio_list_init(&nreg->delayed_bios); + + write_lock_irq(&rh->hash_lock); + reg = __rh_lookup(rh, region); + if (reg) + /* We lost the race. */ + mempool_free(nreg, rh->region_pool); + else { + __rh_insert(rh, nreg); + if (nreg->state == DM_RH_CLEAN) { + spin_lock(&rh->region_lock); + list_add(&nreg->list, &rh->clean_regions); + spin_unlock(&rh->region_lock); + } + + reg = nreg; + } + write_unlock_irq(&rh->hash_lock); + + return reg; +} + +static struct dm_region *__rh_find(struct dm_region_hash *rh, region_t region) +{ + struct dm_region *reg; + + reg = __rh_lookup(rh, region); + if (!reg) { + read_unlock(&rh->hash_lock); + reg = __rh_alloc(rh, region); + read_lock(&rh->hash_lock); + } + + return reg; +} + +int dm_rh_get_state(struct dm_region_hash *rh, region_t region, int may_block) +{ + int r; + struct dm_region *reg; + + read_lock(&rh->hash_lock); + reg = __rh_lookup(rh, region); + read_unlock(&rh->hash_lock); + + if (reg) + return reg->state; + + /* + * The region wasn't in the hash, so we fall back to the + * dirty log. + */ + r = rh->log->type->in_sync(rh->log, region, may_block); + + /* + * Any error from the dirty log (eg. -EWOULDBLOCK) gets + * taken as a DM_RH_NOSYNC + */ + return r == 1 ? DM_RH_CLEAN : DM_RH_NOSYNC; +} +// EXPORT_SYMBOL_GPL(dm_rh_get_state); + +static void complete_resync_work(struct dm_region *reg, int success) +{ + struct dm_region_hash *rh = reg->rh; + + rh->log->type->set_region_sync(rh->log, reg->key, success); + + /* + * Dispatch the bios before we call 'wake_up_all'. + * This is important because if we are suspending, + * we want to know that recovery is complete and + * the work queue is flushed. If we wake_up_all + * before we dispatch_bios (queue bios and call wake()), + * then we risk suspending before the work queue + * has been properly flushed. + */ + rh->dispatch_bios(rh->context, ®->delayed_bios); + if (atomic_dec_and_test(&rh->recovery_in_flight)) + rh->wakeup_all_recovery_waiters(rh->context); + up(&rh->recovery_count); +} + +/* dm_rh_mark_nosync + * @ms + * @bio + * @done + * @error + * + * The bio was written on some mirror(s) but failed on other mirror(s). + * We can successfully endio the bio but should avoid the region being + * marked clean by setting the state DM_RH_NOSYNC. + * + * This function is _not_ safe in interrupt context! + */ +void dm_rh_mark_nosync(struct dm_region_hash *rh, + struct bio *bio, unsigned done, int error) +{ + unsigned long flags; + struct dm_dirty_log *log = rh->log; + struct dm_region *reg; + region_t region = dm_rh_bio_to_region(rh, bio); + int recovering = 0; + + /* We must inform the log that the sync count has changed. */ + log->type->set_region_sync(log, region, 0); + + read_lock(&rh->hash_lock); + reg = __rh_find(rh, region); + read_unlock(&rh->hash_lock); + + /* region hash entry should exist because write was in-flight */ + BUG_ON(!reg); + BUG_ON(!list_empty(®->list)); + + spin_lock_irqsave(&rh->region_lock, flags); + /* + * Possible cases: + * 1) DM_RH_DIRTY + * 2) DM_RH_NOSYNC: was dirty, other preceeding writes failed + * 3) DM_RH_RECOVERING: flushing pending writes + * Either case, the region should have not been connected to list. + */ + recovering = (reg->state == DM_RH_RECOVERING); + reg->state = DM_RH_NOSYNC; + BUG_ON(!list_empty(®->list)); + spin_unlock_irqrestore(&rh->region_lock, flags); + + bio_endio(bio, error); + if (recovering) + complete_resync_work(reg, 0); +} +// EXPORT_SYMBOL_GPL(dm_rh_mark_nosync); + +void dm_rh_update_states(struct dm_region_hash *rh, int errors_handled) +{ + struct dm_region *reg, *next; + + LIST_HEAD(clean); + LIST_HEAD(recovered); + LIST_HEAD(failed_recovered); + + /* + * Quickly grab the lists. + */ + write_lock_irq(&rh->hash_lock); + spin_lock(&rh->region_lock); + if (!list_empty(&rh->clean_regions)) { + list_splice_init(&rh->clean_regions, &clean); + + list_for_each_entry(reg, &clean, list) + list_del(®->hash_list); + } + + if (!list_empty(&rh->recovered_regions)) { + list_splice_init(&rh->recovered_regions, &recovered); + + list_for_each_entry(reg, &recovered, list) + list_del(®->hash_list); + } + + if (!list_empty(&rh->failed_recovered_regions)) { + list_splice_init(&rh->failed_recovered_regions, + &failed_recovered); + + list_for_each_entry(reg, &failed_recovered, list) + list_del(®->hash_list); + } + + spin_unlock(&rh->region_lock); + write_unlock_irq(&rh->hash_lock); + + /* + * All the regions on the recovered and clean lists have + * now been pulled out of the system, so no need to do + * any more locking. + */ + list_for_each_entry_safe(reg, next, &recovered, list) { + rh->log->type->clear_region(rh->log, reg->key); + complete_resync_work(reg, 1); + mempool_free(reg, rh->region_pool); + } + + list_for_each_entry_safe(reg, next, &failed_recovered, list) { + complete_resync_work(reg, errors_handled ? 0 : 1); + mempool_free(reg, rh->region_pool); + } + + list_for_each_entry_safe(reg, next, &clean, list) { + rh->log->type->clear_region(rh->log, reg->key); + mempool_free(reg, rh->region_pool); + } + + rh->log->type->flush(rh->log); +} +// EXPORT_SYMBOL_GPL(dm_rh_update_states); + +void dm_rh_inc(struct dm_region_hash *rh, region_t region) +{ + struct dm_region *reg; + + read_lock(&rh->hash_lock); + reg = __rh_find(rh, region); + + spin_lock_irq(&rh->region_lock); + atomic_inc(®->pending); + + if (reg->state == DM_RH_CLEAN) { + reg->state = DM_RH_DIRTY; + list_del_init(®->list); /* take off the clean list */ + spin_unlock_irq(&rh->region_lock); + + rh->log->type->mark_region(rh->log, reg->key); + } else + spin_unlock_irq(&rh->region_lock); + + + read_unlock(&rh->hash_lock); +} +// EXPORT_SYMBOL_GPL(dm_rh_inc); + +void dm_rh_inc_pending(struct dm_region_hash *rh, struct bio_list *bios) +{ + struct bio *bio; + + for (bio = bios->head; bio; bio = bio->bi_next) + dm_rh_inc(rh, dm_rh_bio_to_region(rh, bio)); +} +// EXPORT_SYMBOL_GPL(dm_rh_inc_pending); + +void dm_rh_dec(struct dm_region_hash *rh, region_t region) +{ + unsigned long flags; + struct dm_region *reg; + int should_wake = 0; + + read_lock(&rh->hash_lock); + reg = __rh_lookup(rh, region); + read_unlock(&rh->hash_lock); + + spin_lock_irqsave(&rh->region_lock, flags); + if (atomic_dec_and_test(®->pending)) { + /* + * There is no pending I/O for this region. + * We can move the region to corresponding list for next action. + * At this point, the region is not yet connected to any list. + * + * If the state is DM_RH_NOSYNC, the region should be kept off + * from clean list. + * The hash entry for DM_RH_NOSYNC will remain in memory + * until the region is recovered or the map is reloaded. + */ + + /* do nothing for DM_RH_NOSYNC */ + if (reg->state == DM_RH_RECOVERING) { + list_add_tail(®->list, &rh->quiesced_regions); + } else if (reg->state == DM_RH_DIRTY) { + reg->state = DM_RH_CLEAN; + list_add(®->list, &rh->clean_regions); + } + should_wake = 1; + } + spin_unlock_irqrestore(&rh->region_lock, flags); + + if (should_wake) + rh->wakeup_workers(rh->context); +} +// EXPORT_SYMBOL_GPL(dm_rh_dec); + +/* + * Starts quiescing a region in preparation for recovery. + */ +static int __rh_recovery_prepare(struct dm_region_hash *rh) +{ + int r; + region_t region; + struct dm_region *reg; + + /* + * Ask the dirty log what's next. + */ + r = rh->log->type->get_resync_work(rh->log, ®ion); + if (r <= 0) + return r; + + /* + * Get this region, and start it quiescing by setting the + * recovering flag. + */ + read_lock(&rh->hash_lock); + reg = __rh_find(rh, region); + read_unlock(&rh->hash_lock); + + spin_lock_irq(&rh->region_lock); + reg->state = DM_RH_RECOVERING; + + /* Already quiesced ? */ + if (atomic_read(®->pending)) + list_del_init(®->list); + else + list_move(®->list, &rh->quiesced_regions); + + spin_unlock_irq(&rh->region_lock); + + return 1; +} + +void dm_rh_recovery_prepare(struct dm_region_hash *rh) +{ + /* Extra reference to avoid race with dm_rh_stop_recovery */ + atomic_inc(&rh->recovery_in_flight); + + while (!down_trylock(&rh->recovery_count)) { + atomic_inc(&rh->recovery_in_flight); + if (__rh_recovery_prepare(rh) <= 0) { + atomic_dec(&rh->recovery_in_flight); + up(&rh->recovery_count); + break; + } + } + + /* Drop the extra reference */ + if (atomic_dec_and_test(&rh->recovery_in_flight)) + rh->wakeup_all_recovery_waiters(rh->context); +} +// EXPORT_SYMBOL_GPL(dm_rh_recovery_prepare); + +/* + * Returns any quiesced regions. + */ +struct dm_region *dm_rh_recovery_start(struct dm_region_hash *rh) +{ + struct dm_region *reg = NULL; + + spin_lock_irq(&rh->region_lock); + if (!list_empty(&rh->quiesced_regions)) { + reg = list_entry(rh->quiesced_regions.next, + struct dm_region, list); + list_del_init(®->list); /* remove from the quiesced list */ + } + spin_unlock_irq(&rh->region_lock); + + return reg; +} +// EXPORT_SYMBOL_GPL(dm_rh_recovery_start); + +void dm_rh_recovery_end(struct dm_region *reg, int success) +{ + struct dm_region_hash *rh = reg->rh; + + spin_lock_irq(&rh->region_lock); + if (success) + list_add(®->list, ®->rh->recovered_regions); + else { + reg->state = DM_RH_NOSYNC; + list_add(®->list, ®->rh->failed_recovered_regions); + } + spin_unlock_irq(&rh->region_lock); + + rh->wakeup_workers(rh->context); +} +// EXPORT_SYMBOL_GPL(dm_rh_recovery_end); + +/* Return recovery in flight count. */ +int dm_rh_recovery_in_flight(struct dm_region_hash *rh) +{ + return atomic_read(&rh->recovery_in_flight); +} +// EXPORT_SYMBOL_GPL(dm_rh_recovery_in_flight); + +int dm_rh_flush(struct dm_region_hash *rh) +{ + return rh->log->type->flush(rh->log); +} +// EXPORT_SYMBOL_GPL(dm_rh_flush); + +void dm_rh_delay(struct dm_region_hash *rh, struct bio *bio) +{ + struct dm_region *reg; + + read_lock(&rh->hash_lock); + reg = __rh_find(rh, dm_rh_bio_to_region(rh, bio)); + bio_list_add(®->delayed_bios, bio); + read_unlock(&rh->hash_lock); +} +// EXPORT_SYMBOL_GPL(dm_rh_delay); + +void dm_rh_delay_by_region(struct dm_region_hash *rh, + struct bio *bio, region_t region) +{ + struct dm_region *reg; + + /* FIXME: locking. */ + read_lock(&rh->hash_lock); + reg = __rh_find(rh, region); + bio_list_add(®->delayed_bios, bio); + read_unlock(&rh->hash_lock); +} +// EXPORT_SYMBOL_GPL(dm_rh_delay_by_region); + +void dm_rh_stop_recovery(struct dm_region_hash *rh) +{ + int i; + + /* wait for any recovering regions */ + for (i = 0; i < rh->max_recovery; i++) + down(&rh->recovery_count); +} +// EXPORT_SYMBOL_GPL(dm_rh_stop_recovery); + +void dm_rh_start_recovery(struct dm_region_hash *rh) +{ + int i; + + for (i = 0; i < rh->max_recovery; i++) + up(&rh->recovery_count); + + rh->wakeup_workers(rh->context); +} +// EXPORT_SYMBOL_GPL(dm_rh_start_recovery); + +MODULE_DESCRIPTION(DM_NAME " region hash"); +MODULE_AUTHOR("Joe Thornber/Heinz Mauelshagen "); +MODULE_LICENSE("GPL"); --- linux-raspi2-4.2.0.orig/ubuntu/dm-raid4-5/dm-region-hash.h +++ linux-raspi2-4.2.0/ubuntu/dm-raid4-5/dm-region-hash.h @@ -0,0 +1,108 @@ +/* + * Copyright (C) 2003 Sistina Software Limited. + * Copyright (C) 2004-2008 Red Hat, Inc. All rights reserved. + * + * Device-Mapper dirty region hash interface. + * + * This file is released under the GPL. + */ + +#ifndef DM_REGION_HASH_H +#define DM_REGION_HASH_H + +#include + +/*----------------------------------------------------------------- + * Region hash + *----------------------------------------------------------------*/ +struct dm_region_hash; +struct dm_region; + +/* + * States a region can have. + */ +enum dm_rh_region_states { + DM_RH_CLEAN = 0x01, /* No writes in flight. */ + DM_RH_DIRTY = 0x02, /* Writes in flight. */ + DM_RH_NOSYNC = 0x04, /* Out of sync. */ + DM_RH_RECOVERING = 0x08, /* Under resynchronization. */ +}; + +/* + * Region hash create/destroy. + */ +struct bio_list; +struct dm_region_hash *dm_region_hash_create( + void *context, void (*dispatch_bios)(void *context, + struct bio_list *bios), + void (*wakeup_workers)(void *context), + void (*wakeup_all_recovery_waiters)(void *context), + sector_t target_begin, unsigned max_recovery, + struct dm_dirty_log *log, uint32_t region_size, + region_t nr_regions); +void dm_region_hash_destroy(struct dm_region_hash *rh); + +struct dm_dirty_log *dm_rh_dirty_log(struct dm_region_hash *rh); + +/* + * Conversion functions. + */ +region_t dm_rh_bio_to_region(struct dm_region_hash *rh, struct bio *bio); +sector_t dm_rh_region_to_sector(struct dm_region_hash *rh, region_t region); +region_t dm_rh_sector_to_region(struct dm_region_hash *rh, sector_t sector); +void *dm_rh_region_context(struct dm_region *reg); + +/* + * Get region size and key (ie. number of the region). + */ +sector_t dm_rh_get_region_size(struct dm_region_hash *rh); +region_t dm_rh_get_region_key(struct dm_region *reg); + +/* + * Get/set/update region state (and dirty log). + * + */ +int dm_rh_get_state(struct dm_region_hash *rh, region_t region, int may_block); +void dm_rh_set_state(struct dm_region_hash *rh, region_t region, + enum dm_rh_region_states state, int may_block); + +/* Non-zero errors_handled leaves the state of the region NOSYNC */ +void dm_rh_update_states(struct dm_region_hash *rh, int errors_handled); + +/* Flush the region hash and dirty log. */ +int dm_rh_flush(struct dm_region_hash *rh); + +/* Inc/dec pending count on regions. */ +void dm_rh_inc(struct dm_region_hash *rh, region_t region); +void dm_rh_inc_pending(struct dm_region_hash *rh, struct bio_list *bios); +void dm_rh_dec(struct dm_region_hash *rh, region_t region); + +/* Delay bios on regions. */ +void dm_rh_delay(struct dm_region_hash *rh, struct bio *bio); +void dm_rh_delay_by_region(struct dm_region_hash *rh, struct bio *bio, + region_t region); + +void dm_rh_mark_nosync(struct dm_region_hash *rh, + struct bio *bio, unsigned done, int error); + +/* + * Region recovery control. + */ + +/* Prepare some regions for recovery by starting to quiesce them. */ +void dm_rh_recovery_prepare(struct dm_region_hash *rh); + +/* Try fetching a quiesced region for recovery. */ +struct dm_region *dm_rh_recovery_start(struct dm_region_hash *rh); + +/* Report recovery end on a region. */ +void dm_rh_recovery_end(struct dm_region *reg, int error); + +/* Returns number of regions with recovery work outstanding. */ +int dm_rh_recovery_in_flight(struct dm_region_hash *rh); + +/* Start/stop recovery. */ +void dm_rh_start_recovery(struct dm_region_hash *rh); +void dm_rh_stop_recovery(struct dm_region_hash *rh); + +#endif /* DM_REGION_HASH_H */ --- linux-raspi2-4.2.0.orig/ubuntu/include/Kbuild +++ linux-raspi2-4.2.0/ubuntu/include/Kbuild @@ -0,0 +1,2 @@ + + --- linux-raspi2-4.2.0.orig/ubuntu/include/README +++ linux-raspi2-4.2.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-raspi2-4.2.0.orig/ubuntu/vbox-update +++ linux-raspi2-4.2.0/ubuntu/vbox-update @@ -0,0 +1,49 @@ +#!/bin/bash +# +# vbox-update + +# +# NOTE: update vbox/BOM if you get the source from anywhere other than +# the archive. +# +# To update: +# TMP=$HOME/tmp +# wget -O $TMP/virtualbox-guest-dkms.deb http://ports.ubuntu.com/pool/multiverse/v/virtualbox/virtualbox-guest-dkms_4.3.22-dfsg-1_all.deb +# dpkg-deb -R $TMP/virtualbox-guest-dkms.deb $TMP/virtualbox-guest-update +# vbox-update $TMP/virtualbox-guest-update +# +# To test build: +# fakeroot debian/rules prepare-generic +# make O=debian/build/build-generic/ ubuntu/vbox/vboxguest/vboxguest.ko ubuntu/vbox/vboxvideo/vboxvideo.ko ubuntu/vbox/vboxsf/vboxsf.ko +# + +if [ "$#" -ne 1 ]; then + echo "Usage: $0 " 1>&2 + exit 1 +fi +vbox="$1" + +# Update vbox ... +git rm -rf vbox +mkdir vbox +cp -rp "$vbox/usr/src/"*/* vbox + +# Work out what version this represents. +ver=`awk '($1 == "Version:") { print $2 }' <"$vbox/DEBIAN/control"` + +# Fix up the KBUILD_EXTMOD as we are not building externally. +for make in vbox/*/Makefile +do + sed -i -e '1iKBUILD_EXTMOD=${srctree}/ubuntu/vbox' $make +done + +# Record the version number and nominal source. +{ + echo "Source: http://ports.ubuntu.com/pool/multiverse/v/virtualbox/virtualbox-guest-dkms_${ver}_all.deb" + echo "Version: $ver" +} >vbox/BOM + +git add vbox +{ + echo "UBUNTU: ubuntu: vbox -- update to $ver" +} | git commit -s -F - --- linux-raspi2-4.2.0.orig/ubuntu/vbox/BOM +++ linux-raspi2-4.2.0/ubuntu/vbox/BOM @@ -0,0 +1,2 @@ +Source: http://ports.ubuntu.com/pool/multiverse/v/virtualbox/virtualbox-guest-dkms_5.0.0-dfsg-1_all.deb +Version: 5.0.0-dfsg-1 --- linux-raspi2-4.2.0.orig/ubuntu/vbox/Makefile +++ linux-raspi2-4.2.0/ubuntu/vbox/Makefile @@ -0,0 +1,3 @@ +.NOTPARALLEL: + +obj-m = vboxguest/ vboxsf/ vboxvideo/ --- linux-raspi2-4.2.0.orig/ubuntu/vbox/dkms.conf +++ linux-raspi2-4.2.0/ubuntu/vbox/dkms.conf @@ -0,0 +1,13 @@ +PACKAGE_NAME="virtualbox-guest" +PACKAGE_VERSION="5.0.0" +CLEAN="rm -f *.*o" +BUILT_MODULE_NAME[0]="vboxguest" +BUILT_MODULE_LOCATION[0]="vboxguest" +DEST_MODULE_LOCATION[0]="/updates" +BUILT_MODULE_NAME[1]="vboxsf" +BUILT_MODULE_LOCATION[1]="vboxsf" +DEST_MODULE_LOCATION[1]="/updates" +BUILT_MODULE_NAME[2]="vboxvideo" +BUILT_MODULE_LOCATION[2]="vboxvideo" +DEST_MODULE_LOCATION[2]="/updates" +AUTOINSTALL="yes" --- linux-raspi2-4.2.0.orig/ubuntu/vbox/include/VBox/VBoxGuest.h +++ linux-raspi2-4.2.0/ubuntu/vbox/include/VBox/VBoxGuest.h @@ -0,0 +1,557 @@ +/** @file + * VBoxGuest - VirtualBox Guest Additions Driver Interface. (ADD,DEV) + * + * @remarks This is in the process of being split up and usage cleaned up. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + +#ifndef ___VBox_VBoxGuest_h +#define ___VBox_VBoxGuest_h + +#include +#include +#include +#include +#include + + +/** @defgroup grp_vboxguest VirtualBox Guest Additions Driver Interface + * @{ + */ + +/** @todo It would be nice if we could have two defines without paths. */ + +/** @def VBOXGUEST_DEVICE_NAME + * The support device name. */ +/** @def VBOXGUEST_USER_DEVICE_NAME + * The support device name of the user accessible device node. */ + +#if defined(RT_OS_OS2) +# define VBOXGUEST_DEVICE_NAME "\\Dev\\VBoxGst$" + +#elif defined(RT_OS_WINDOWS) +# define VBOXGUEST_DEVICE_NAME "\\\\.\\VBoxGuest" + +/** The support service name. */ +# define VBOXGUEST_SERVICE_NAME "VBoxGuest" +/** Global name for Win2k+ */ +# define VBOXGUEST_DEVICE_NAME_GLOBAL "\\\\.\\Global\\VBoxGuest" +/** Win32 driver name */ +# define VBOXGUEST_DEVICE_NAME_NT L"\\Device\\VBoxGuest" +/** Device name. */ +# define VBOXGUEST_DEVICE_NAME_DOS L"\\DosDevices\\VBoxGuest" + +#elif defined(RT_OS_HAIKU) +# define VBOXGUEST_DEVICE_NAME "/dev/misc/vboxguest" + +#else /* (PORTME) */ +# define VBOXGUEST_DEVICE_NAME "/dev/vboxguest" +# if defined(RT_OS_LINUX) +# define VBOXGUEST_USER_DEVICE_NAME "/dev/vboxuser" +# endif +#endif + +#ifndef VBOXGUEST_USER_DEVICE_NAME +# define VBOXGUEST_USER_DEVICE_NAME VBOXGUEST_DEVICE_NAME +#endif + +/** Fictive start address of the hypervisor physical memory for MmMapIoSpace. */ +#define VBOXGUEST_HYPERVISOR_PHYSICAL_START UINT32_C(0xf8000000) + +#ifdef RT_OS_DARWIN +/** Cookie used to fend off some unwanted clients to the IOService. */ +# define VBOXGUEST_DARWIN_IOSERVICE_COOKIE UINT32_C(0x56426f78) /* 'VBox' */ +#endif + +#if !defined(IN_RC) && !defined(IN_RING0_AGNOSTIC) && !defined(IPRT_NO_CRT) + +/** @name VBoxGuest IOCTL codes and structures. + * + * The range 0..15 is for basic driver communication. + * The range 16..31 is for HGCM communication. + * The range 32..47 is reserved for future use. + * The range 48..63 is for OS specific communication. + * The 7th bit is reserved for future hacks. + * The 8th bit is reserved for distinguishing between 32-bit and 64-bit + * processes in future 64-bit guest additions. + * + * @remarks When creating new IOCtl interfaces keep in mind that not all OSes supports + * reporting back the output size. (This got messed up a little bit in VBoxDrv.) + * + * The request size is also a little bit tricky as it's passed as part of the + * request code on unix. The size field is 14 bits on Linux, 12 bits on *BSD, + * 13 bits Darwin, and 8-bits on Solaris. All the BSDs and Darwin kernels + * will make use of the size field, while Linux and Solaris will not. We're of + * course using the size to validate and/or map/lock the request, so it has + * to be valid. + * + * For Solaris we will have to do something special though, 255 isn't + * sufficient for all we need. A 4KB restriction (BSD) is probably not + * too problematic (yet) as a general one. + * + * More info can be found in SUPDRVIOC.h and related sources. + * + * @remarks If adding interfaces that only has input or only has output, some new macros + * needs to be created so the most efficient IOCtl data buffering method can be + * used. + * @{ + */ +#if defined(RT_ARCH_AMD64) || defined(RT_ARCH_SPARC64) +# define VBOXGUEST_IOCTL_FLAG 128 +#elif defined(RT_ARCH_X86) || defined(RT_ARCH_SPARC) +# define VBOXGUEST_IOCTL_FLAG 0 +#else +# error "dunno which arch this is!" +#endif +/** @} */ + +/** Ring-3 request wrapper for big requests. + * + * This is necessary because the ioctl number scheme on many Unixy OSes (esp. Solaris) + * only allows a relatively small size to be encoded into the request. So, for big + * request this generic form is used instead. */ +typedef struct VBGLBIGREQ +{ + /** Magic value (VBGLBIGREQ_MAGIC). */ + uint32_t u32Magic; + /** The size of the data buffer. */ + uint32_t cbData; + /** The user address of the data buffer. */ + RTR3PTR pvDataR3; +#if HC_ARCH_BITS == 32 + uint32_t u32Padding; +#endif +/** @todo r=bird: We need a 'rc' field for passing VBox status codes. Reused + * some input field as rc on output. */ +} VBGLBIGREQ; +/** Pointer to a request wrapper for solaris guests. */ +typedef VBGLBIGREQ *PVBGLBIGREQ; +/** Pointer to a const request wrapper for solaris guests. */ +typedef const VBGLBIGREQ *PCVBGLBIGREQ; + +/** The VBGLBIGREQ::u32Magic value (Ryuu Murakami). */ +#define VBGLBIGREQ_MAGIC 0x19520219 + + +#if defined(RT_OS_WINDOWS) +/** @todo Remove IOCTL_CODE later! Integrate it in VBOXGUEST_IOCTL_CODE below. */ +/** @todo r=bird: IOCTL_CODE is supposedly defined in some header included by Windows.h or ntddk.h, which is why it wasn't in the #if 0 earlier. See HostDrivers/Support/SUPDrvIOC.h... */ +# define IOCTL_CODE(DeviceType, Function, Method, Access, DataSize_ignored) \ + ( ((DeviceType) << 16) | ((Access) << 14) | ((Function) << 2) | (Method)) +# define VBOXGUEST_IOCTL_CODE_(Function, Size) IOCTL_CODE(FILE_DEVICE_UNKNOWN, 2048 + (Function), METHOD_BUFFERED, FILE_WRITE_ACCESS, 0) +# define VBOXGUEST_IOCTL_STRIP_SIZE(Code) (Code) + +#elif defined(RT_OS_OS2) + /* No automatic buffering, size not encoded. */ +# define VBOXGUEST_IOCTL_CATEGORY 0xc2 +# define VBOXGUEST_IOCTL_CODE_(Function, Size) ((unsigned char)(Function)) +# define VBOXGUEST_IOCTL_CATEGORY_FAST 0xc3 /**< Also defined in VBoxGuestA-os2.asm. */ +# define VBOXGUEST_IOCTL_CODE_FAST_(Function) ((unsigned char)(Function)) +# define VBOXGUEST_IOCTL_STRIP_SIZE(Code) (Code) + +#elif defined(RT_OS_SOLARIS) + /* No automatic buffering, size limited to 255 bytes => use VBGLBIGREQ for everything. */ +# include +# define VBOXGUEST_IOCTL_CODE_(Function, Size) _IOWRN('V', (Function), sizeof(VBGLBIGREQ)) +# define VBOXGUEST_IOCTL_CODE_FAST_(Function) _IO( 'V', (Function)) +# define VBOXGUEST_IOCTL_STRIP_SIZE(Code) (Code) + +#elif defined(RT_OS_LINUX) + /* No automatic buffering, size limited to 16KB. */ +# include +# define VBOXGUEST_IOCTL_CODE_(Function, Size) _IOC(_IOC_READ|_IOC_WRITE, 'V', (Function), (Size)) +# define VBOXGUEST_IOCTL_CODE_FAST_(Function) _IO( 'V', (Function)) +# define VBOXGUEST_IOCTL_STRIP_SIZE(Code) VBOXGUEST_IOCTL_CODE_(_IOC_NR((Code)), 0) + +#elif defined(RT_OS_HAIKU) + /* No automatic buffering, size not encoded. */ + /** @todo do something better */ +# define VBOXGUEST_IOCTL_CODE_(Function, Size) (0x56420000 | (Function)) +# define VBOXGUEST_IOCTL_CODE_FAST_(Function) (0x56420000 | (Function)) +# define VBOXGUEST_IOCTL_STRIP_SIZE(Code) (Code) + +#elif defined(RT_OS_FREEBSD) /** @todo r=bird: Please do it like SUPDRVIOC to keep it as similar as possible. */ +# include + +# define VBOXGUEST_IOCTL_CODE_(Function, Size) _IOWR('V', (Function), VBGLBIGREQ) +# define VBOXGUEST_IOCTL_CODE_FAST_(Function) _IO( 'V', (Function)) +# define VBOXGUEST_IOCTL_STRIP_SIZE(Code) IOCBASECMD(Code) + +#else /* BSD Like */ + /* Automatic buffering, size limited to 4KB on *BSD and 8KB on Darwin - commands the limit, 4KB. */ +# include +# define VBOXGUEST_IOCTL_CODE_(Function, Size) _IOC(IOC_INOUT, 'V', (Function), (Size)) +# define VBOXGUEST_IOCTL_CODE_FAST_(Function) _IO('V', (Function)) +# define VBOXGUEST_IOCTL_STRIP_SIZE(uIOCtl) ( (uIOCtl) & ~_IOC(0,0,0,IOCPARM_MASK) ) +#endif + +#define VBOXGUEST_IOCTL_CODE(Function, Size) VBOXGUEST_IOCTL_CODE_((Function) | VBOXGUEST_IOCTL_FLAG, Size) +#define VBOXGUEST_IOCTL_CODE_FAST(Function) VBOXGUEST_IOCTL_CODE_FAST_((Function) | VBOXGUEST_IOCTL_FLAG) + +/* Define 32 bit codes to support 32 bit applications requests in the 64 bit guest driver. */ +#ifdef RT_ARCH_AMD64 +# define VBOXGUEST_IOCTL_CODE_32(Function, Size) VBOXGUEST_IOCTL_CODE_(Function, Size) +# define VBOXGUEST_IOCTL_CODE_FAST_32(Function) VBOXGUEST_IOCTL_CODE_FAST_(Function) +#endif /* RT_ARCH_AMD64 */ + + + +/** IOCTL to VBoxGuest to query the VMMDev IO port region start. + * @remarks Ring-0 only. */ +#define VBOXGUEST_IOCTL_GETVMMDEVPORT VBOXGUEST_IOCTL_CODE(1, sizeof(VBoxGuestPortInfo)) + +#pragma pack(4) +typedef struct VBoxGuestPortInfo +{ + uint32_t portAddress; + struct VMMDevMemory *pVMMDevMemory; +} VBoxGuestPortInfo; + + +/** IOCTL to VBoxGuest to wait for a VMMDev host notification */ +#define VBOXGUEST_IOCTL_WAITEVENT VBOXGUEST_IOCTL_CODE_(2, sizeof(VBoxGuestWaitEventInfo)) + +/** @name Result codes for VBoxGuestWaitEventInfo::u32Result + * @{ + */ +/** Successful completion, an event occurred. */ +#define VBOXGUEST_WAITEVENT_OK (0) +/** Successful completion, timed out. */ +#define VBOXGUEST_WAITEVENT_TIMEOUT (1) +/** Wait was interrupted. */ +#define VBOXGUEST_WAITEVENT_INTERRUPTED (2) +/** An error occurred while processing the request. */ +#define VBOXGUEST_WAITEVENT_ERROR (3) +/** @} */ + +/** Input and output buffers layout of the IOCTL_VBOXGUEST_WAITEVENT */ +typedef struct VBoxGuestWaitEventInfo +{ + /** timeout in milliseconds */ + uint32_t u32TimeoutIn; + /** events to wait for */ + uint32_t u32EventMaskIn; + /** result code */ + uint32_t u32Result; + /** events occurred */ + uint32_t u32EventFlagsOut; +} VBoxGuestWaitEventInfo; +AssertCompileSize(VBoxGuestWaitEventInfo, 16); + + +/** IOCTL to VBoxGuest to perform a VMM request + * @remark The data buffer for this IOCtl has an variable size, keep this in mind + * on systems where this matters. */ +#define VBOXGUEST_IOCTL_VMMREQUEST(Size) VBOXGUEST_IOCTL_CODE_(3, (Size)) + + +/** IOCTL to VBoxGuest to control event filter mask. */ +#define VBOXGUEST_IOCTL_CTL_FILTER_MASK VBOXGUEST_IOCTL_CODE_(4, sizeof(VBoxGuestFilterMaskInfo)) + +/** Input and output buffer layout of the IOCTL_VBOXGUEST_CTL_FILTER_MASK. */ +typedef struct VBoxGuestFilterMaskInfo +{ + uint32_t u32OrMask; + uint32_t u32NotMask; +} VBoxGuestFilterMaskInfo; +AssertCompileSize(VBoxGuestFilterMaskInfo, 8); +#pragma pack() + +/** IOCTL to VBoxGuest to interrupt (cancel) any pending WAITEVENTs and return. + * Handled inside the guest additions and not seen by the host at all. + * @see VBOXGUEST_IOCTL_WAITEVENT */ +#define VBOXGUEST_IOCTL_CANCEL_ALL_WAITEVENTS VBOXGUEST_IOCTL_CODE_(5, 0) + +/** IOCTL to VBoxGuest to perform backdoor logging. + * The argument is a string buffer of the specified size. */ +#define VBOXGUEST_IOCTL_LOG(Size) VBOXGUEST_IOCTL_CODE_(6, (Size)) + +/** IOCTL to VBoxGuest to check memory ballooning. + * The guest kernel module / device driver will ask the host for the current size of + * the balloon and adjust the size. Or it will set fHandledInR0 = false and R3 is + * responsible for allocating memory and calling R0 (VBOXGUEST_IOCTL_CHANGE_BALLOON). */ +#define VBOXGUEST_IOCTL_CHECK_BALLOON VBOXGUEST_IOCTL_CODE_(7, sizeof(VBoxGuestCheckBalloonInfo)) + +/** Output buffer layout of the VBOXGUEST_IOCTL_CHECK_BALLOON. */ +typedef struct VBoxGuestCheckBalloonInfo +{ + /** The size of the balloon in chunks of 1MB. */ + uint32_t cBalloonChunks; + /** false = handled in R0, no further action required. + * true = allocate balloon memory in R3. */ + uint32_t fHandleInR3; +} VBoxGuestCheckBalloonInfo; +AssertCompileSize(VBoxGuestCheckBalloonInfo, 8); + + +/** IOCTL to VBoxGuest to supply or revoke one chunk for ballooning. + * The guest kernel module / device driver will lock down supplied memory or + * unlock reclaimed memory and then forward the physical addresses of the + * changed balloon chunk to the host. */ +#define VBOXGUEST_IOCTL_CHANGE_BALLOON VBOXGUEST_IOCTL_CODE_(8, sizeof(VBoxGuestChangeBalloonInfo)) + +/** Input buffer layout of the VBOXGUEST_IOCTL_CHANGE_BALLOON request. + * Information about a memory chunk used to inflate or deflate the balloon. */ +typedef struct VBoxGuestChangeBalloonInfo +{ + /** Address of the chunk. */ + uint64_t u64ChunkAddr; + /** true = inflate, false = deflate. */ + uint32_t fInflate; + /** Alignment padding. */ + uint32_t u32Align; +} VBoxGuestChangeBalloonInfo; +AssertCompileSize(VBoxGuestChangeBalloonInfo, 16); + +/** IOCTL to VBoxGuest to write guest core. */ +#define VBOXGUEST_IOCTL_WRITE_CORE_DUMP VBOXGUEST_IOCTL_CODE(9, sizeof(VBoxGuestWriteCoreDump)) + +/** Input and output buffer layout of the VBOXGUEST_IOCTL_WRITE_CORE + * request. */ +typedef struct VBoxGuestWriteCoreDump +{ + /** Flags (reserved, MBZ). */ + uint32_t fFlags; +} VBoxGuestWriteCoreDump; +AssertCompileSize(VBoxGuestWriteCoreDump, 4); + +/** IOCTL to VBoxGuest to update the mouse status features. */ +# define VBOXGUEST_IOCTL_SET_MOUSE_STATUS VBOXGUEST_IOCTL_CODE_(10, sizeof(uint32_t)) + +#ifdef VBOX_WITH_HGCM +/** IOCTL to VBoxGuest to connect to a HGCM service. */ +# define VBOXGUEST_IOCTL_HGCM_CONNECT VBOXGUEST_IOCTL_CODE(16, sizeof(VBoxGuestHGCMConnectInfo)) + +/** IOCTL to VBoxGuest to disconnect from a HGCM service. */ +# define VBOXGUEST_IOCTL_HGCM_DISCONNECT VBOXGUEST_IOCTL_CODE(17, sizeof(VBoxGuestHGCMDisconnectInfo)) + +/** IOCTL to VBoxGuest to make a call to a HGCM service. + * @see VBoxGuestHGCMCallInfo */ +# define VBOXGUEST_IOCTL_HGCM_CALL(Size) VBOXGUEST_IOCTL_CODE(18, (Size)) + +/** IOCTL to VBoxGuest to make a timed call to a HGCM service. */ +# define VBOXGUEST_IOCTL_HGCM_CALL_TIMED(Size) VBOXGUEST_IOCTL_CODE(20, (Size)) + +/** IOCTL to VBoxGuest passed from the Kernel Mode driver, but containing a user mode data in VBoxGuestHGCMCallInfo + * the driver received from the UM. Called in the context of the process passing the data. + * @see VBoxGuestHGCMCallInfo */ +# define VBOXGUEST_IOCTL_HGCM_CALL_USERDATA(Size) VBOXGUEST_IOCTL_CODE(21, (Size)) + +# ifdef RT_ARCH_AMD64 +/** @name IOCTL numbers that 32-bit clients, like the Windows OpenGL guest + * driver, will use when taking to a 64-bit driver. + * @remarks These are only used by the driver implementation! + * @{*/ +# define VBOXGUEST_IOCTL_HGCM_CONNECT_32 VBOXGUEST_IOCTL_CODE_32(16, sizeof(VBoxGuestHGCMConnectInfo)) +# define VBOXGUEST_IOCTL_HGCM_DISCONNECT_32 VBOXGUEST_IOCTL_CODE_32(17, sizeof(VBoxGuestHGCMDisconnectInfo)) +# define VBOXGUEST_IOCTL_HGCM_CALL_32(Size) VBOXGUEST_IOCTL_CODE_32(18, (Size)) +# define VBOXGUEST_IOCTL_HGCM_CALL_TIMED_32(Size) VBOXGUEST_IOCTL_CODE_32(20, (Size)) +/** @} */ +# endif /* RT_ARCH_AMD64 */ + +/** Get the pointer to the first HGCM parameter. */ +# define VBOXGUEST_HGCM_CALL_PARMS(a) ( (HGCMFunctionParameter *)((uint8_t *)(a) + sizeof(VBoxGuestHGCMCallInfo)) ) +/** Get the pointer to the first HGCM parameter in a 32-bit request. */ +# define VBOXGUEST_HGCM_CALL_PARMS32(a) ( (HGCMFunctionParameter32 *)((uint8_t *)(a) + sizeof(VBoxGuestHGCMCallInfo)) ) + +#endif /* VBOX_WITH_HGCM */ + +#ifdef VBOX_WITH_DPC_LATENCY_CHECKER +/** IOCTL to VBoxGuest to perform DPC latency tests, printing the result in + * the release log on the host. Takes no data, returns no data. */ +# define VBOXGUEST_IOCTL_DPC_LATENCY_CHECKER VBOXGUEST_IOCTL_CODE_(30, 0) +#endif + +/** IOCTL to for setting the mouse driver callback. (kernel only) */ +/** @note The callback will be called in interrupt context with the VBoxGuest + * device event spinlock held. */ +#define VBOXGUEST_IOCTL_SET_MOUSE_NOTIFY_CALLBACK VBOXGUEST_IOCTL_CODE(31, sizeof(VBoxGuestMouseSetNotifyCallback)) + +typedef DECLCALLBACK(void) FNVBOXGUESTMOUSENOTIFY(void *pfnUser); +typedef FNVBOXGUESTMOUSENOTIFY *PFNVBOXGUESTMOUSENOTIFY; + +/** Input buffer for VBOXGUEST_IOCTL_INTERNAL_SET_MOUSE_NOTIFY_CALLBACK. */ +typedef struct VBoxGuestMouseSetNotifyCallback +{ + /** + * Mouse notification callback. + * + * @param pvUser The callback argument. + */ + PFNVBOXGUESTMOUSENOTIFY pfnNotify; + /** The callback argument*/ + void *pvUser; +} VBoxGuestMouseSetNotifyCallback; + + +typedef enum VBOXGUESTCAPSACQUIRE_FLAGS +{ + VBOXGUESTCAPSACQUIRE_FLAGS_NONE = 0, + /* configures VBoxGuest to use the specified caps in Acquire mode, w/o making any caps acquisition/release. + * so far it is only possible to set acquire mode for caps, but not clear it, + * so u32NotMask is ignored for this request */ + VBOXGUESTCAPSACQUIRE_FLAGS_CONFIG_ACQUIRE_MODE, + /* to ensure enum is 32bit*/ + VBOXGUESTCAPSACQUIRE_FLAGS_32bit = 0x7fffffff +} VBOXGUESTCAPSACQUIRE_FLAGS; + +typedef struct VBoxGuestCapsAquire +{ + /* result status + * VINF_SUCCESS - on success + * VERR_RESOURCE_BUSY - some caps in the u32OrMask are acquired by some other VBoxGuest connection. + * NOTE: no u32NotMask caps are cleaned in this case, i.e. no modifications are done on failure + * VER_INVALID_PARAMETER - invalid Caps are specified with either u32OrMask or u32NotMask. No modifications are done on failure. + */ + int32_t rc; + /* Acquire command */ + VBOXGUESTCAPSACQUIRE_FLAGS enmFlags; + /* caps to acquire, OR-ed VMMDEV_GUEST_SUPPORTS_XXX flags */ + uint32_t u32OrMask; + /* caps to release, OR-ed VMMDEV_GUEST_SUPPORTS_XXX flags */ + uint32_t u32NotMask; +} VBoxGuestCapsAquire; + +/** IOCTL to for Acquiring/Releasing Guest Caps + * This is used for multiple purposes: + * 1. By doing Acquire r3 client application (e.g. VBoxTray) claims it will use + * the given connection for performing operations like Seamles or Auto-resize, + * thus, if the application terminates, the driver will automatically cleanup the caps reported to host, + * so that host knows guest does not support them anymore + * 2. In a multy-user environment this will not allow r3 applications (like VBoxTray) + * running in different user sessions simultaneously to interfere with each other. + * An r3 client application (like VBoxTray) is responsible for Acquiring/Releasing caps properly as needed. + **/ +#define VBOXGUEST_IOCTL_GUEST_CAPS_ACQUIRE VBOXGUEST_IOCTL_CODE(32, sizeof(VBoxGuestCapsAquire)) + +/** IOCTL to VBoxGuest to set guest capabilities. */ +#define VBOXGUEST_IOCTL_SET_GUEST_CAPABILITIES VBOXGUEST_IOCTL_CODE_(33, sizeof(VBoxGuestSetCapabilitiesInfo)) + +/** Input and output buffer layout of the VBOXGUEST_IOCTL_SET_GUEST_CAPABILITIES + * IOCtl. */ +typedef struct VBoxGuestSetCapabilitiesInfo +{ + uint32_t u32OrMask; + uint32_t u32NotMask; +} VBoxGuestSetCapabilitiesInfo; +AssertCompileSize(VBoxGuestSetCapabilitiesInfo, 8); + + +#ifdef RT_OS_OS2 + +/** + * The data buffer layout for the IDC entry point (AttachDD). + * + * @remark This is defined in multiple 16-bit headers / sources. + * Some places it's called VBGOS2IDC to short things a bit. + */ +typedef struct VBOXGUESTOS2IDCCONNECT +{ + /** VMMDEV_VERSION. */ + uint32_t u32Version; + /** Opaque session handle. */ + uint32_t u32Session; + + /** + * The 32-bit service entry point. + * + * @returns VBox status code. + * @param u32Session The above session handle. + * @param iFunction The requested function. + * @param pvData The input/output data buffer. The caller ensures that this + * cannot be swapped out, or that it's acceptable to take a + * page in fault in the current context. If the request doesn't + * take input or produces output, apssing NULL is okay. + * @param cbData The size of the data buffer. + * @param pcbDataReturned Where to store the amount of data that's returned. + * This can be NULL if pvData is NULL. + */ + DECLCALLBACKMEMBER(int, pfnServiceEP)(uint32_t u32Session, unsigned iFunction, void *pvData, size_t cbData, size_t *pcbDataReturned); + + /** The 16-bit service entry point for C code (cdecl). + * + * It's the same as the 32-bit entry point, but the types has + * changed to 16-bit equivalents. + * + * @code + * int far cdecl + * VBoxGuestOs2IDCService16(uint32_t u32Session, uint16_t iFunction, + * void far *fpvData, uint16_t cbData, uint16_t far *pcbDataReturned); + * @endcode + */ + RTFAR16 fpfnServiceEP; + + /** The 16-bit service entry point for Assembly code (register). + * + * This is just a wrapper around fpfnServiceEP to simplify calls + * from 16-bit assembly code. + * + * @returns (e)ax: VBox status code; cx: The amount of data returned. + * + * @param u32Session eax - The above session handle. + * @param iFunction dl - The requested function. + * @param pvData es:bx - The input/output data buffer. + * @param cbData cx - The size of the data buffer. + */ + RTFAR16 fpfnServiceAsmEP; +} VBOXGUESTOS2IDCCONNECT; +/** Pointer to VBOXGUESTOS2IDCCONNECT buffer. */ +typedef VBOXGUESTOS2IDCCONNECT *PVBOXGUESTOS2IDCCONNECT; + +/** OS/2 specific: IDC client disconnect request. + * + * This takes no input and it doesn't return anything. Obviously this + * is only recognized if it arrives thru the IDC service EP. + */ +# define VBOXGUEST_IOCTL_OS2_IDC_DISCONNECT VBOXGUEST_IOCTL_CODE(48, sizeof(uint32_t)) + +#endif /* RT_OS_OS2 */ + +#if defined(RT_OS_LINUX) || defined(RT_OS_SOLARIS) || defined(RT_OS_FREEBSD) + +/* Private IOCtls between user space and the kernel video driver. DRM private + * IOCtls always have the type 'd' and a number between 0x40 and 0x99 (0x9F?) */ + +# define VBOX_DRM_IOCTL(a) (0x40 + DRM_VBOX_ ## a) + +/** Stop using HGSMI in the kernel driver until it is re-enabled, so that a + * user-space driver can use it. It must be re-enabled before the kernel + * driver can be used again in a sensible way. */ +/** @note These IOCtls was removed from the code, but are left here as + * templates as we may need similar ones in future. */ +# define DRM_VBOX_DISABLE_HGSMI 0 +# define DRM_IOCTL_VBOX_DISABLE_HGSMI VBOX_DRM_IOCTL(DISABLE_HGSMI) +# define VBOXVIDEO_IOCTL_DISABLE_HGSMI _IO('d', DRM_IOCTL_VBOX_DISABLE_HGSMI) +/** Enable HGSMI in the kernel driver after it was previously disabled. */ +# define DRM_VBOX_ENABLE_HGSMI 1 +# define DRM_IOCTL_VBOX_ENABLE_HGSMI VBOX_DRM_IOCTL(ENABLE_HGSMI) +# define VBOXVIDEO_IOCTL_ENABLE_HGSMI _IO('d', DRM_IOCTL_VBOX_ENABLE_HGSMI) + +#endif /* RT_OS_LINUX || RT_OS_SOLARIS || RT_OS_FREEBSD */ + +#endif /* !defined(IN_RC) && !defined(IN_RING0_AGNOSTIC) && !defined(IPRT_NO_CRT) */ + +/** @} */ + +#endif + --- linux-raspi2-4.2.0.orig/ubuntu/vbox/include/VBox/VBoxGuest2.h +++ linux-raspi2-4.2.0/ubuntu/vbox/include/VBox/VBoxGuest2.h @@ -0,0 +1,108 @@ +/** @file + * VBoxGuest - VirtualBox Guest Additions Driver Interface, Mixed Up Mess. + * (ADD,DEV) + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + +#ifndef ___VBox_VBoxGuest2_h +#define ___VBox_VBoxGuest2_h + +#include + +#ifdef VBOX_WITH_HGCM +# include + + +/** + * HGCM connect info structure. + * + * This is used by VBOXGUEST_IOCTL_HGCM_CONNECT and in VbglR0. + * + * @ingroup grp_vboxguest + */ +# pragma pack(1) /* explicit packing for good measure. */ +typedef struct VBoxGuestHGCMConnectInfo +{ + int32_t result; /**< OUT */ + HGCMServiceLocation Loc; /**< IN */ + uint32_t u32ClientID; /**< OUT */ +} VBoxGuestHGCMConnectInfo; +AssertCompileSize(VBoxGuestHGCMConnectInfo, 4+4+128+4); +# pragma pack() + + +/** + * HGCM connect info structure. + * + * This is used by VBOXGUEST_IOCTL_HGCM_DISCONNECT and in VbglR0. + * + * @ingroup grp_vboxguest + */ +typedef struct VBoxGuestHGCMDisconnectInfo +{ + int32_t result; /**< OUT */ + uint32_t u32ClientID; /**< IN */ +} VBoxGuestHGCMDisconnectInfo; +AssertCompileSize(VBoxGuestHGCMDisconnectInfo, 8); + +/** + * HGCM call info structure. + * + * This is used by VBOXGUEST_IOCTL_HGCM_CALL. + * + * @ingroup grp_vboxguest + */ +typedef struct VBoxGuestHGCMCallInfo +{ + int32_t result; /**< OUT Host HGCM return code.*/ + uint32_t u32ClientID; /**< IN The id of the caller. */ + uint32_t u32Function; /**< IN Function number. */ + uint32_t cParms; /**< IN How many parms. */ + /* Parameters follow in form HGCMFunctionParameter aParms[cParms] */ +} VBoxGuestHGCMCallInfo; +AssertCompileSize(VBoxGuestHGCMCallInfo, 16); + + +/** + * HGCM call info structure. + * + * This is used by VBOXGUEST_IOCTL_HGCM_CALL_TIMED. + * + * @ingroup grp_vboxguest + */ +# pragma pack(1) /* explicit packing for good measure. */ +typedef struct VBoxGuestHGCMCallInfoTimed +{ + uint32_t u32Timeout; /**< IN How long to wait for completion before cancelling the call. */ + uint32_t fInterruptible; /**< IN Is this request interruptible? */ + VBoxGuestHGCMCallInfo info; /**< IN/OUT The rest of the call information. Placed after the timeout + * so that the parameters follow as they would for a normal call. */ + /* Parameters follow in form HGCMFunctionParameter aParms[cParms] */ +} VBoxGuestHGCMCallInfoTimed; +AssertCompileSize(VBoxGuestHGCMCallInfoTimed, 8+16); +# pragma pack() + +#endif /* VBOX_WITH_HGCM */ + +#endif + --- linux-raspi2-4.2.0.orig/ubuntu/vbox/include/VBox/VBoxGuestLib.h +++ linux-raspi2-4.2.0/ubuntu/vbox/include/VBox/VBoxGuestLib.h @@ -0,0 +1,817 @@ +/** @file + * VBoxGuestLib - VirtualBox Guest Additions Library. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + +#ifndef ___VBox_VBoxGuestLib_h +#define ___VBox_VBoxGuestLib_h + +#include +#include +#include /* grumble */ +#ifdef IN_RING0 +# include +# include +#endif + + +/** @defgroup grp_guest_lib VirtualBox Guest Additions Library + * @{ + */ + +/** @page pg_guest_lib VirtualBox Guest Library + * + * This is a library for abstracting the additions driver interface. There are + * multiple versions of the library depending on the context. The main + * distinction is between kernel and user mode where the interfaces are very + * different. + * + * + * @section sec_guest_lib_ring0 Ring-0 + * + * In ring-0 there are two version: + * - VBOX_LIB_VBGL_R0_BASE / VBoxGuestR0LibBase for the VBoxGuest main driver, + * who is responsible for managing the VMMDev virtual hardware. + * - VBOX_LIB_VBGL_R0 / VBoxGuestR0Lib for other (client) guest drivers. + * + * + * The library source code and the header have a define VBGL_VBOXGUEST, which is + * defined for VBoxGuest and undefined for other drivers. Drivers must choose + * right library in their makefiles and set VBGL_VBOXGUEST accordingly. + * + * The libraries consists of: + * - common code to be used by both VBoxGuest and other drivers; + * - VBoxGuest specific code; + * - code for other drivers which communicate with VBoxGuest via an IOCTL. + * + * + * @section sec_guest_lib_ring3 Ring-3 + * + * There are more variants of the library here: + * - VBOX_LIB_VBGL_R3 / VBoxGuestR3Lib for programs. + * - VBOX_LIB_VBGL_R3_XFREE86 / VBoxGuestR3LibXFree86 for old style XFree + * drivers which uses special loader and or symbol resolving strategy. + * - VBOX_LIB_VBGL_R3_SHARED / VBoxGuestR3LibShared for shared objects / DLLs / + * Dylibs. + * + */ + +RT_C_DECLS_BEGIN + +/** @defgroup grp_guest_lib_r0 Ring-0 interface. + * @{ + */ +#if defined(IN_RING0) && !defined(IN_RING0_AGNOSTIC) +/** @def DECLR0VBGL + * Declare a VBGL ring-0 API with the right calling convention and visibilitiy. + * @param type Return type. */ +# ifdef RT_OS_DARWIN /** @todo probably apply to all, but don't want a forest fire on our hands right now. */ +# define DECLR0VBGL(type) DECLHIDDEN(type) VBOXCALL +# else +# define DECLR0VBGL(type) type VBOXCALL +# endif +# define DECLVBGL(type) DECLR0VBGL(type) + +typedef uint32_t VBGLIOPORT; /**< @todo r=bird: We have RTIOPORT (uint16_t) for this. */ + + +# ifdef VBGL_VBOXGUEST + +/** + * The library initialization function to be used by the main + * VBoxGuest system driver. + * + * @return VBox status code. + */ +DECLVBGL(int) VbglInit (VBGLIOPORT portVMMDev, struct VMMDevMemory *pVMMDevMemory); + +# else + +/** + * The library initialization function to be used by all drivers + * other than the main VBoxGuest system driver. + * + * @return VBox status code. + */ +DECLVBGL(int) VbglInit (void); + +# endif + +/** + * The library termination function. + */ +DECLVBGL(void) VbglTerminate (void); + + +/** @name Generic request functions. + * @{ + */ + +/** + * Allocate memory for generic request and initialize the request header. + * + * @param ppReq pointer to resulting memory address. + * @param cbSize size of memory block required for the request. + * @param reqType the generic request type. + * + * @return VBox status code. + */ +DECLVBGL(int) VbglGRAlloc (VMMDevRequestHeader **ppReq, uint32_t cbSize, VMMDevRequestType reqType); + +/** + * Perform the generic request. + * + * @param pReq pointer the request structure. + * + * @return VBox status code. + */ +DECLVBGL(int) VbglGRPerform (VMMDevRequestHeader *pReq); + +/** + * Free the generic request memory. + * + * @param pReq pointer the request structure. + * + * @return VBox status code. + */ +DECLVBGL(void) VbglGRFree (VMMDevRequestHeader *pReq); + +/** + * Verify the generic request header. + * + * @param pReq pointer the request header structure. + * @param cbReq size of the request memory block. It should be equal to the request size + * for fixed size requests. It can be greater than the request size for + * variable size requests. + * + * @return VBox status code. + */ +DECLVBGL(int) VbglGRVerify (const VMMDevRequestHeader *pReq, size_t cbReq); +/** @} */ + +# ifdef VBOX_WITH_HGCM + +# ifdef VBGL_VBOXGUEST + +/** + * Callback function called from HGCM helpers when a wait for request + * completion IRQ is required. + * + * @returns VINF_SUCCESS, VERR_INTERRUPT or VERR_TIMEOUT. + * @param pvData VBoxGuest pointer to be passed to callback. + * @param u32Data VBoxGuest 32 bit value to be passed to callback. + */ +typedef DECLCALLBACK(int) FNVBGLHGCMCALLBACK(VMMDevHGCMRequestHeader *pHeader, void *pvData, uint32_t u32Data); +/** Pointer to a FNVBGLHGCMCALLBACK. */ +typedef FNVBGLHGCMCALLBACK *PFNVBGLHGCMCALLBACK; + +/** + * Perform a connect request. That is locate required service and + * obtain a client identifier for future access. + * + * @note This function can NOT handle cancelled requests! + * + * @param pConnectInfo The request data. + * @param pfnAsyncCallback Required pointer to function that is calledwhen + * host returns VINF_HGCM_ASYNC_EXECUTE. VBoxGuest + * implements waiting for an IRQ in this function. + * @param pvAsyncData An arbitrary VBoxGuest pointer to be passed to callback. + * @param u32AsyncData An arbitrary VBoxGuest 32 bit value to be passed to callback. + * + * @return VBox status code. + */ + +DECLR0VBGL(int) VbglR0HGCMInternalConnect (VBoxGuestHGCMConnectInfo *pConnectInfo, + PFNVBGLHGCMCALLBACK pfnAsyncCallback, void *pvAsyncData, uint32_t u32AsyncData); + + +/** + * Perform a disconnect request. That is tell the host that + * the client will not call the service anymore. + * + * @note This function can NOT handle cancelled requests! + * + * @param pDisconnectInfo The request data. + * @param pfnAsyncCallback Required pointer to function that is called when + * host returns VINF_HGCM_ASYNC_EXECUTE. VBoxGuest + * implements waiting for an IRQ in this function. + * @param pvAsyncData An arbitrary VBoxGuest pointer to be passed to callback. + * @param u32AsyncData An arbitrary VBoxGuest 32 bit value to be passed to + * callback. + * + * @return VBox status code. + */ + +DECLR0VBGL(int) VbglR0HGCMInternalDisconnect (VBoxGuestHGCMDisconnectInfo *pDisconnectInfo, + PFNVBGLHGCMCALLBACK pfnAsyncCallback, void *pvAsyncData, uint32_t u32AsyncData); + +/** Call a HGCM service. + * + * @note This function can deal with cancelled requests. + * + * @param pCallInfo The request data. + * @param fFlags Flags, see VBGLR0_HGCMCALL_F_XXX. + * @param pfnAsyncCallback Required pointer to function that is called when + * host returns VINF_HGCM_ASYNC_EXECUTE. VBoxGuest + * implements waiting for an IRQ in this function. + * @param pvAsyncData An arbitrary VBoxGuest pointer to be passed to callback. + * @param u32AsyncData An arbitrary VBoxGuest 32 bit value to be passed to callback. + * + * @return VBox status code. + */ +DECLR0VBGL(int) VbglR0HGCMInternalCall (VBoxGuestHGCMCallInfo *pCallInfo, uint32_t cbCallInfo, uint32_t fFlags, + PFNVBGLHGCMCALLBACK pfnAsyncCallback, void *pvAsyncData, uint32_t u32AsyncData); + +/** Call a HGCM service. (32 bits packet structure in a 64 bits guest) + * + * @note This function can deal with cancelled requests. + * + * @param pCallInfo The request data. + * @param fFlags Flags, see VBGLR0_HGCMCALL_F_XXX. + * @param pfnAsyncCallback Required pointer to function that is called when + * host returns VINF_HGCM_ASYNC_EXECUTE. VBoxGuest + * implements waiting for an IRQ in this function. + * @param pvAsyncData An arbitrary VBoxGuest pointer to be passed to callback. + * @param u32AsyncData An arbitrary VBoxGuest 32 bit value to be passed to callback. + * + * @return VBox status code. + */ +DECLR0VBGL(int) VbglR0HGCMInternalCall32 (VBoxGuestHGCMCallInfo *pCallInfo, uint32_t cbCallInfo, uint32_t fFlags, + PFNVBGLHGCMCALLBACK pfnAsyncCallback, void *pvAsyncData, uint32_t u32AsyncData); + +/** @name VbglR0HGCMInternalCall flags + * @{ */ +/** User mode request. + * Indicates that only user mode addresses are permitted as parameters. */ +#define VBGLR0_HGCMCALL_F_USER UINT32_C(0) +/** Kernel mode request. + * Indicates that kernel mode addresses are permitted as parameters. Whether or + * not user mode addresses are permitted is, unfortunately, OS specific. The + * following OSes allows user mode addresses: Windows, TODO. + */ +#define VBGLR0_HGCMCALL_F_KERNEL UINT32_C(1) +/** Mode mask. */ +#define VBGLR0_HGCMCALL_F_MODE_MASK UINT32_C(1) +/** @} */ + +# else /* !VBGL_VBOXGUEST */ + +struct VBGLHGCMHANDLEDATA; +typedef struct VBGLHGCMHANDLEDATA *VBGLHGCMHANDLE; + +/** @name HGCM functions + * @{ + */ + +/** + * Connect to a service. + * + * @param pHandle Pointer to variable that will hold a handle to be used + * further in VbglHGCMCall and VbglHGCMClose. + * @param pData Connection information structure. + * + * @return VBox status code. + */ +DECLVBGL(int) VbglHGCMConnect (VBGLHGCMHANDLE *pHandle, VBoxGuestHGCMConnectInfo *pData); + +/** + * Connect to a service. + * + * @param handle Handle of the connection. + * @param pData Disconnect request information structure. + * + * @return VBox status code. + */ +DECLVBGL(int) VbglHGCMDisconnect (VBGLHGCMHANDLE handle, VBoxGuestHGCMDisconnectInfo *pData); + +/** + * Call to a service. + * + * @param handle Handle of the connection. + * @param pData Call request information structure, including function parameters. + * @param cbData Length in bytes of data. + * + * @return VBox status code. + */ +DECLVBGL(int) VbglHGCMCall (VBGLHGCMHANDLE handle, VBoxGuestHGCMCallInfo *pData, uint32_t cbData); + +/** + * Call to a service with user-mode data received by the calling driver from the User-Mode process. + * The call must be done in the context of a calling process. + * + * @param handle Handle of the connection. + * @param pData Call request information structure, including function parameters. + * @param cbData Length in bytes of data. + * + * @return VBox status code. + */ +DECLVBGL(int) VbglHGCMCallUserData (VBGLHGCMHANDLE handle, VBoxGuestHGCMCallInfo *pData, uint32_t cbData); + +/** + * Call to a service with timeout. + * + * @param handle Handle of the connection. + * @param pData Call request information structure, including function parameters. + * @param cbData Length in bytes of data. + * @param cMillies Timeout in milliseconds. Use RT_INDEFINITE_WAIT to wait forever. + * + * @return VBox status code. + */ +DECLVBGL(int) VbglHGCMCallTimed (VBGLHGCMHANDLE handle, + VBoxGuestHGCMCallInfoTimed *pData, uint32_t cbData); +/** @} */ + +# endif /* !VBGL_VBOXGUEST */ + +# endif /* VBOX_WITH_HGCM */ + + +/** + * Initialize the heap. + * + * @return VBox error code. + */ +DECLVBGL(int) VbglPhysHeapInit (void); + +/** + * Shutdown the heap. + */ +DECLVBGL(void) VbglPhysHeapTerminate (void); + + +/** + * Allocate a memory block. + * + * @param cbSize Size of block to be allocated. + * @return Virtual address of allocated memory block. + */ +DECLVBGL(void *) VbglPhysHeapAlloc (uint32_t cbSize); + +/** + * Get physical address of memory block pointed by + * the virtual address. + * + * @note WARNING! + * The function does not acquire the Heap mutex! + * When calling the function make sure that + * the pointer is a valid one and is not being + * deallocated. + * This function can NOT be used for verifying + * if the given pointer is a valid one allocated + * from the heap. + * + * + * @param p Virtual address of memory block. + * @return Physical address of the memory block. + */ +DECLVBGL(uint32_t) VbglPhysHeapGetPhysAddr (void *p); + +/** + * Free a memory block. + * + * @param p Virtual address of memory block. + */ +DECLVBGL(void) VbglPhysHeapFree (void *p); + +DECLVBGL(int) VbglQueryVMMDevMemory (VMMDevMemory **ppVMMDevMemory); +DECLR0VBGL(bool) VbglR0CanUsePhysPageList(void); + +# ifndef VBOX_GUEST +/** @name Mouse + * @{ */ +DECLVBGL(int) VbglSetMouseNotifyCallback(PFNVBOXGUESTMOUSENOTIFY pfnNotify, void *pvUser); +DECLVBGL(int) VbglGetMouseStatus(uint32_t *pfFeatures, uint32_t *px, uint32_t *py); +DECLVBGL(int) VbglSetMouseStatus(uint32_t fFeatures); +/** @} */ +# endif /* VBOX_GUEST */ + +#endif /* IN_RING0 && !IN_RING0_AGNOSTIC */ +/** @} */ + + +/** @defgroup grp_guest_lib_r3 Ring-3 interface. + * @{ + */ +#ifdef IN_RING3 + +/** @def VBGLR3DECL + * Ring 3 VBGL declaration. + * @param type The return type of the function declaration. + */ +# define VBGLR3DECL(type) type VBOXCALL + +/** @name General-purpose functions + * @{ */ +VBGLR3DECL(int) VbglR3Init(void); +VBGLR3DECL(int) VbglR3InitUser(void); +VBGLR3DECL(void) VbglR3Term(void); +# ifdef ___iprt_time_h +VBGLR3DECL(int) VbglR3GetHostTime(PRTTIMESPEC pTime); +# endif +VBGLR3DECL(int) VbglR3InterruptEventWaits(void); +VBGLR3DECL(int) VbglR3WriteLog(const char *pch, size_t cch); +VBGLR3DECL(int) VbglR3CtlFilterMask(uint32_t fOr, uint32_t fNot); +VBGLR3DECL(int) VbglR3Daemonize(bool fNoChDir, bool fNoClose, bool fRespawn, unsigned *pcRespawn); +VBGLR3DECL(int) VbglR3PidFile(const char *pszPath, PRTFILE phFile); +VBGLR3DECL(void) VbglR3ClosePidFile(const char *pszPath, RTFILE hFile); +VBGLR3DECL(int) VbglR3SetGuestCaps(uint32_t fOr, uint32_t fNot); +VBGLR3DECL(int) VbglR3WaitEvent(uint32_t fMask, uint32_t cMillies, uint32_t *pfEvents); + +VBGLR3DECL(int) VbglR3ReportAdditionsStatus(VBoxGuestFacilityType Facility, VBoxGuestFacilityStatus StatusCurrent, uint32_t uFlags); +VBGLR3DECL(int) VbglR3GetAdditionsVersion(char **ppszVer, char **ppszVerEx, char **ppszRev); +VBGLR3DECL(int) VbglR3GetAdditionsInstallationPath(char **ppszPath); +VBGLR3DECL(int) VbglR3GetSessionId(uint64_t *pu64IdSession); + +/** @} */ + +/** @name Shared clipboard + * @{ */ +VBGLR3DECL(int) VbglR3ClipboardConnect(uint32_t *pu32ClientId); +VBGLR3DECL(int) VbglR3ClipboardDisconnect(uint32_t u32ClientId); +VBGLR3DECL(int) VbglR3ClipboardGetHostMsg(uint32_t u32ClientId, uint32_t *pMsg, uint32_t *pfFormats); +VBGLR3DECL(int) VbglR3ClipboardReadData(uint32_t u32ClientId, uint32_t fFormat, void *pv, uint32_t cb, uint32_t *pcb); +VBGLR3DECL(int) VbglR3ClipboardReportFormats(uint32_t u32ClientId, uint32_t fFormats); +VBGLR3DECL(int) VbglR3ClipboardWriteData(uint32_t u32ClientId, uint32_t fFormat, void *pv, uint32_t cb); +/** @} */ + +/** @name Seamless mode + * @{ */ +VBGLR3DECL(int) VbglR3SeamlessSetCap(bool fState); +VBGLR3DECL(int) VbglR3SeamlessWaitEvent(VMMDevSeamlessMode *pMode); +VBGLR3DECL(int) VbglR3SeamlessSendRects(uint32_t cRects, PRTRECT pRects); +VBGLR3DECL(int) VbglR3SeamlessGetLastEvent(VMMDevSeamlessMode *pMode); + +/** @} */ + +/** @name Mouse + * @{ */ +VBGLR3DECL(int) VbglR3GetMouseStatus(uint32_t *pfFeatures, uint32_t *px, uint32_t *py); +VBGLR3DECL(int) VbglR3SetMouseStatus(uint32_t fFeatures); +/** @} */ + +/** @name Video + * @{ */ +VBGLR3DECL(int) VbglR3VideoAccelEnable(bool fEnable); +VBGLR3DECL(int) VbglR3VideoAccelFlush(void); +VBGLR3DECL(int) VbglR3SetPointerShape(uint32_t fFlags, uint32_t xHot, uint32_t yHot, uint32_t cx, uint32_t cy, const void *pvImg, size_t cbImg); +VBGLR3DECL(int) VbglR3SetPointerShapeReq(struct VMMDevReqMousePointer *pReq); +/** @} */ + +/** @name Display + * @{ */ +/** The folder for the video mode hint unix domain socket on Unix-like guests. + */ +/** @note This can be safely changed as all users are rebuilt in lock-step. */ +#define VBGLR3HOSTDISPSOCKETPATH "/tmp/.VBoxService" +/** The path to the video mode hint unix domain socket on Unix-like guests. */ +#define VBGLR3HOSTDISPSOCKET VBGLR3VIDEOMODEHINTSOCKETPATH \ + "/VideoModeHint" + +/** The folder for saving video mode hints to between sessions. */ +#define VBGLR3HOSTDISPSAVEDMODEPATH "/var/lib/VBoxGuestAdditions" +/** The path to the file for saving video mode hints to between sessions. */ +#define VBGLR3HOSTDISPSAVEDMODE VBGLR3HOSTDISPSAVEDMODEPATH \ + "/SavedVideoModes" + +VBGLR3DECL(int) VbglR3GetDisplayChangeRequest(uint32_t *pcx, uint32_t *pcy, + uint32_t *pcBits, + uint32_t *piDisplay, + uint32_t *pdx, uint32_t *pdy, + bool *pfEnabled, + bool *pfChangeOrigin, + bool fAck); +VBGLR3DECL(bool) VbglR3HostLikesVideoMode(uint32_t cx, uint32_t cy, uint32_t cBits); +VBGLR3DECL(int) VbglR3VideoModeGetHighestSavedScreen(unsigned *pcScreen); +VBGLR3DECL(int) VbglR3SaveVideoMode(unsigned cScreen, unsigned cx, + unsigned cy, unsigned cBits, unsigned x, + unsigned y, bool fEnabled); +VBGLR3DECL(int) VbglR3RetrieveVideoMode(unsigned cScreen, unsigned *pcx, + unsigned *pcy, unsigned *pcBits, + unsigned *px, unsigned *py, + bool *pfEnabled); +/** @} */ + +/** @name VM Statistics + * @{ */ +VBGLR3DECL(int) VbglR3StatQueryInterval(uint32_t *pu32Interval); +VBGLR3DECL(int) VbglR3StatReport(VMMDevReportGuestStats *pReq); +/** @} */ + +/** @name Memory ballooning + * @{ */ +VBGLR3DECL(int) VbglR3MemBalloonRefresh(uint32_t *pcChunks, bool *pfHandleInR3); +VBGLR3DECL(int) VbglR3MemBalloonChange(void *pv, bool fInflate); +/** @} */ + +/** @name Core Dump + * @{ */ +VBGLR3DECL(int) VbglR3WriteCoreDump(void); + +/** @} */ + +# ifdef VBOX_WITH_GUEST_PROPS +/** @name Guest properties + * @{ */ +/** @todo Docs. */ +typedef struct VBGLR3GUESTPROPENUM VBGLR3GUESTPROPENUM; +/** @todo Docs. */ +typedef VBGLR3GUESTPROPENUM *PVBGLR3GUESTPROPENUM; +VBGLR3DECL(int) VbglR3GuestPropConnect(uint32_t *pu32ClientId); +VBGLR3DECL(int) VbglR3GuestPropDisconnect(uint32_t u32ClientId); +VBGLR3DECL(int) VbglR3GuestPropWrite(uint32_t u32ClientId, const char *pszName, const char *pszValue, const char *pszFlags); +VBGLR3DECL(int) VbglR3GuestPropWriteValue(uint32_t u32ClientId, const char *pszName, const char *pszValue); +VBGLR3DECL(int) VbglR3GuestPropWriteValueV(uint32_t u32ClientId, const char *pszName, const char *pszValueFormat, va_list va); +VBGLR3DECL(int) VbglR3GuestPropWriteValueF(uint32_t u32ClientId, const char *pszName, const char *pszValueFormat, ...); +VBGLR3DECL(int) VbglR3GuestPropRead(uint32_t u32ClientId, const char *pszName, void *pvBuf, uint32_t cbBuf, char **ppszValue, uint64_t *pu64Timestamp, char **ppszFlags, uint32_t *pcbBufActual); +VBGLR3DECL(int) VbglR3GuestPropReadValue(uint32_t ClientId, const char *pszName, char *pszValue, uint32_t cchValue, uint32_t *pcchValueActual); +VBGLR3DECL(int) VbglR3GuestPropReadValueAlloc(uint32_t u32ClientId, const char *pszName, char **ppszValue); +VBGLR3DECL(void) VbglR3GuestPropReadValueFree(char *pszValue); +VBGLR3DECL(int) VbglR3GuestPropEnumRaw(uint32_t u32ClientId, const char *paszPatterns, char *pcBuf, uint32_t cbBuf, uint32_t *pcbBufActual); +VBGLR3DECL(int) VbglR3GuestPropEnum(uint32_t u32ClientId, char const * const *ppaszPatterns, uint32_t cPatterns, PVBGLR3GUESTPROPENUM *ppHandle, + char const **ppszName, char const **ppszValue, uint64_t *pu64Timestamp, char const **ppszFlags); +VBGLR3DECL(int) VbglR3GuestPropEnumNext(PVBGLR3GUESTPROPENUM pHandle, char const **ppszName, char const **ppszValue, uint64_t *pu64Timestamp, + char const **ppszFlags); +VBGLR3DECL(void) VbglR3GuestPropEnumFree(PVBGLR3GUESTPROPENUM pHandle); +VBGLR3DECL(int) VbglR3GuestPropDelete(uint32_t u32ClientId, const char *pszName); +VBGLR3DECL(int) VbglR3GuestPropDelSet(uint32_t u32ClientId, char const * const *papszPatterns, uint32_t cPatterns); +VBGLR3DECL(int) VbglR3GuestPropWait(uint32_t u32ClientId, const char *pszPatterns, void *pvBuf, uint32_t cbBuf, uint64_t u64Timestamp, uint32_t cMillies, char ** ppszName, char **ppszValue, uint64_t *pu64Timestamp, char **ppszFlags, uint32_t *pcbBufActual); +/** @} */ + +/** @name Guest user handling / reporting. + * @{ */ +VBGLR3DECL(int) VbglR3GuestUserReportState(const char *pszUser, const char *pszDomain, VBoxGuestUserState enmState, uint8_t *puDetails, uint32_t cbDetails); +/** @} */ + +/** @name Host version handling + * @{ */ +VBGLR3DECL(int) VbglR3HostVersionCheckForUpdate(uint32_t u32ClientId, bool *pfUpdate, char **ppszHostVersion, char **ppszGuestVersion); +VBGLR3DECL(int) VbglR3HostVersionLastCheckedLoad(uint32_t u32ClientId, char **ppszVer); +VBGLR3DECL(int) VbglR3HostVersionLastCheckedStore(uint32_t u32ClientId, const char *pszVer); +/** @} */ +# endif /* VBOX_WITH_GUEST_PROPS defined */ + +# ifdef VBOX_WITH_SHARED_FOLDERS +/** @name Shared folders + * @{ */ +/** + * Structure containing mapping information for a shared folder. + */ +typedef struct VBGLR3SHAREDFOLDERMAPPING +{ + /** Mapping status. */ + uint32_t u32Status; + /** Root handle. */ + uint32_t u32Root; +} VBGLR3SHAREDFOLDERMAPPING; +/** Pointer to a shared folder mapping information struct. */ +typedef VBGLR3SHAREDFOLDERMAPPING *PVBGLR3SHAREDFOLDERMAPPING; + +VBGLR3DECL(int) VbglR3SharedFolderConnect(uint32_t *pu32ClientId); +VBGLR3DECL(int) VbglR3SharedFolderDisconnect(uint32_t u32ClientId); +VBGLR3DECL(bool) VbglR3SharedFolderExists(uint32_t u32ClientId, const char *pszShareName); +VBGLR3DECL(int) VbglR3SharedFolderGetMappings(uint32_t u32ClientId, bool fAutoMountOnly, + PVBGLR3SHAREDFOLDERMAPPING *ppaMappings, uint32_t *pcMappings); +VBGLR3DECL(void) VbglR3SharedFolderFreeMappings(PVBGLR3SHAREDFOLDERMAPPING paMappings); +VBGLR3DECL(int) VbglR3SharedFolderGetName(uint32_t u32ClientId,uint32_t u32Root, char **ppszName); +VBGLR3DECL(int) VbglR3SharedFolderGetMountPrefix(char **ppszPrefix); +VBGLR3DECL(int) VbglR3SharedFolderGetMountDir(char **ppszDir); +/** @} */ +# endif /* VBOX_WITH_SHARED_FOLDERS defined */ + +# ifdef VBOX_WITH_GUEST_CONTROL +/** @name Guest control + * @{ */ + +/** + * Structure containing the context required for + * either retrieving or sending a HGCM guest control + * commands from or to the host. + * + * Note: Do not change parameter order without also + * adapting all structure initializers. + */ +typedef struct VBGLR3GUESTCTRLCMDCTX +{ + /** @todo This struct could be handy if we want to implement + * a second communication channel, e.g. via TCP/IP. + * Use a union for the HGCM stuff then. */ + + /** IN: HGCM client ID to use for + * communication. */ + uint32_t uClientID; + /** IN/OUT: Context ID to retrieve + * or to use. */ + uint32_t uContextID; + /** IN: Protocol version to use. */ + uint32_t uProtocol; + /** OUT: Number of parameters retrieved. */ + uint32_t uNumParms; +} VBGLR3GUESTCTRLCMDCTX, *PVBGLR3GUESTCTRLCMDCTX; + +/* General message handling on the guest. */ +VBGLR3DECL(int) VbglR3GuestCtrlConnect(uint32_t *puClientId); +VBGLR3DECL(int) VbglR3GuestCtrlDisconnect(uint32_t uClientId); +VBGLR3DECL(int) VbglR3GuestCtrlMsgFilterSet(uint32_t uClientId, uint32_t uValue, uint32_t uMaskAdd, uint32_t uMaskRemove); +VBGLR3DECL(int) VbglR3GuestCtrlMsgFilterUnset(uint32_t uClientId); +VBGLR3DECL(int) VbglR3GuestCtrlMsgReply(PVBGLR3GUESTCTRLCMDCTX pCtx, int rc); +VBGLR3DECL(int) VbglR3GuestCtrlMsgReplyEx(PVBGLR3GUESTCTRLCMDCTX pCtx, int rc, uint32_t uType, void *pvPayload, uint32_t cbPayload); +VBGLR3DECL(int) VbglR3GuestCtrlMsgSkip(uint32_t uClientId); +VBGLR3DECL(int) VbglR3GuestCtrlMsgWaitFor(uint32_t uClientId, uint32_t *puMsg, uint32_t *puNumParms); +VBGLR3DECL(int) VbglR3GuestCtrlCancelPendingWaits(uint32_t u32ClientId); +/* Guest session handling. */ +VBGLR3DECL(int) VbglR3GuestCtrlSessionClose(PVBGLR3GUESTCTRLCMDCTX pCtx, uint32_t uFlags); +VBGLR3DECL(int) VbglR3GuestCtrlSessionNotify(PVBGLR3GUESTCTRLCMDCTX pCtx, uint32_t uType, uint32_t uResult); +VBGLR3DECL(int) VbglR3GuestCtrlSessionGetOpen(PVBGLR3GUESTCTRLCMDCTX pCtx, uint32_t *puProtocol, char *pszUser, uint32_t cbUser, char *pszPassword, uint32_t cbPassword, char *pszDomain, uint32_t cbDomain, uint32_t *puFlags, uint32_t *puSessionID); +VBGLR3DECL(int) VbglR3GuestCtrlSessionGetClose(PVBGLR3GUESTCTRLCMDCTX pCtx, uint32_t *puFlags, uint32_t *puSessionID); +/* Guest path handling. */ +VBGLR3DECL(int) VbglR3GuestCtrlPathGetRename(PVBGLR3GUESTCTRLCMDCTX pCtx, char *pszSource, uint32_t cbSource, char *pszDest, uint32_t cbDest, uint32_t *puFlags); +/* Guest process execution. */ +VBGLR3DECL(int) VbglR3GuestCtrlProcGetStart(PVBGLR3GUESTCTRLCMDCTX pCtx, char *pszCmd, uint32_t cbCmd, uint32_t *puFlags, char *pszArgs, uint32_t cbArgs, uint32_t *puNumArgs, char *pszEnv, uint32_t *pcbEnv, uint32_t *puNumEnvVars, char *pszUser, uint32_t cbUser, char *pszPassword, uint32_t cbPassword, uint32_t *puTimeoutMS, uint32_t *puPriority, uint64_t *puAffinity, uint32_t cbAffinity, uint32_t *pcAffinity); +VBGLR3DECL(int) VbglR3GuestCtrlProcGetTerminate(PVBGLR3GUESTCTRLCMDCTX pCtx, uint32_t *puPID); +VBGLR3DECL(int) VbglR3GuestCtrlProcGetInput(PVBGLR3GUESTCTRLCMDCTX pCtx, uint32_t *puPID, uint32_t *puFlags, void *pvData, uint32_t cbData, uint32_t *pcbSize); +VBGLR3DECL(int) VbglR3GuestCtrlProcGetOutput(PVBGLR3GUESTCTRLCMDCTX pCtx, uint32_t *puPID, uint32_t *puHandle, uint32_t *puFlags); +VBGLR3DECL(int) VbglR3GuestCtrlProcGetWaitFor(PVBGLR3GUESTCTRLCMDCTX pCtx, uint32_t *puPID, uint32_t *puWaitFlags, uint32_t *puTimeoutMS); +/* Guest native directory handling. */ +VBGLR3DECL(int) VbglR3GuestCtrlDirGetRemove(PVBGLR3GUESTCTRLCMDCTX pCtx, char *pszPath, uint32_t cbPath, uint32_t *puFlags); +/* Guest native file handling. */ +VBGLR3DECL(int) VbglR3GuestCtrlFileGetOpen(PVBGLR3GUESTCTRLCMDCTX pCtx, char *pszFileName, uint32_t cbFileName, char *pszOpenMode, uint32_t cbOpenMode, char *pszDisposition, uint32_t cbDisposition, char *pszSharing, uint32_t cbSharing, uint32_t *puCreationMode, uint64_t *puOffset); +VBGLR3DECL(int) VbglR3GuestCtrlFileGetClose(PVBGLR3GUESTCTRLCMDCTX pCtx, uint32_t *puHandle); +VBGLR3DECL(int) VbglR3GuestCtrlFileGetRead(PVBGLR3GUESTCTRLCMDCTX pCtx, uint32_t *puHandle, uint32_t *puToRead); +VBGLR3DECL(int) VbglR3GuestCtrlFileGetReadAt(PVBGLR3GUESTCTRLCMDCTX pCtx, uint32_t *puHandle, uint32_t *puToRead, uint64_t *puOffset); +VBGLR3DECL(int) VbglR3GuestCtrlFileGetWrite(PVBGLR3GUESTCTRLCMDCTX pCtx, uint32_t *puHandle, void *pvData, uint32_t cbData, uint32_t *pcbSize); +VBGLR3DECL(int) VbglR3GuestCtrlFileGetWriteAt(PVBGLR3GUESTCTRLCMDCTX pCtx, uint32_t *puHandle, void *pvData, uint32_t cbData, uint32_t *pcbSize, uint64_t *puOffset); +VBGLR3DECL(int) VbglR3GuestCtrlFileGetSeek(PVBGLR3GUESTCTRLCMDCTX pCtx, uint32_t *puHandle, uint32_t *puSeekMethod, uint64_t *puOffset); +VBGLR3DECL(int) VbglR3GuestCtrlFileGetTell(PVBGLR3GUESTCTRLCMDCTX pCtx, uint32_t *puHandle); +/* Guest -> Host. */ +VBGLR3DECL(int) VbglR3GuestCtrlFileCbOpen(PVBGLR3GUESTCTRLCMDCTX pCtx, uint32_t uRc, uint32_t uFileHandle); +VBGLR3DECL(int) VbglR3GuestCtrlFileCbClose(PVBGLR3GUESTCTRLCMDCTX pCtx, uint32_t uRc); +VBGLR3DECL(int) VbglR3GuestCtrlFileCbError(PVBGLR3GUESTCTRLCMDCTX pCtx, uint32_t uRc); +VBGLR3DECL(int) VbglR3GuestCtrlFileCbRead(PVBGLR3GUESTCTRLCMDCTX pCtx, uint32_t uRc, void *pvData, uint32_t cbData); +VBGLR3DECL(int) VbglR3GuestCtrlFileCbWrite(PVBGLR3GUESTCTRLCMDCTX pCtx, uint32_t uRc, uint32_t uWritten); +VBGLR3DECL(int) VbglR3GuestCtrlFileCbSeek(PVBGLR3GUESTCTRLCMDCTX pCtx, uint32_t uRc, uint64_t uOffActual); +VBGLR3DECL(int) VbglR3GuestCtrlFileCbTell(PVBGLR3GUESTCTRLCMDCTX pCtx, uint32_t uRc, uint64_t uOffActual); +VBGLR3DECL(int) VbglR3GuestCtrlProcCbStatus(PVBGLR3GUESTCTRLCMDCTX pCtx, uint32_t uPID, uint32_t uStatus, uint32_t uFlags, void *pvData, uint32_t cbData); +VBGLR3DECL(int) VbglR3GuestCtrlProcCbOutput(PVBGLR3GUESTCTRLCMDCTX pCtx, uint32_t uPID, uint32_t uHandle, uint32_t uFlags, void *pvData, uint32_t cbData); +VBGLR3DECL(int) VbglR3GuestCtrlProcCbStatusInput(PVBGLR3GUESTCTRLCMDCTX pCtx, uint32_t u32PID, uint32_t uStatus, uint32_t uFlags, uint32_t cbWritten); + +/** @} */ +# endif /* VBOX_WITH_GUEST_CONTROL defined */ + +/** @name Auto-logon handling + * @{ */ +VBGLR3DECL(int) VbglR3AutoLogonReportStatus(VBoxGuestFacilityStatus enmStatus); +VBGLR3DECL(bool) VbglR3AutoLogonIsRemoteSession(void); +/** @} */ + +/** @name User credentials handling + * @{ */ +VBGLR3DECL(int) VbglR3CredentialsQueryAvailability(void); +VBGLR3DECL(int) VbglR3CredentialsRetrieve(char **ppszUser, char **ppszPassword, char **ppszDomain); +VBGLR3DECL(int) VbglR3CredentialsRetrieveUtf16(PRTUTF16 *ppwszUser, PRTUTF16 *ppwszPassword, PRTUTF16 *ppwszDomain); +VBGLR3DECL(void) VbglR3CredentialsDestroy(char *pszUser, char *pszPassword, char *pszDomain, uint32_t cPasses); +VBGLR3DECL(void) VbglR3CredentialsDestroyUtf16(PRTUTF16 pwszUser, PRTUTF16 pwszPassword, PRTUTF16 pwszDomain, + uint32_t cPasses); +/** @} */ + +/** @name CPU hotplug monitor + * @{ */ +VBGLR3DECL(int) VbglR3CpuHotPlugInit(void); +VBGLR3DECL(int) VbglR3CpuHotPlugTerm(void); +VBGLR3DECL(int) VbglR3CpuHotPlugWaitForEvent(VMMDevCpuEventType *penmEventType, uint32_t *pidCpuCore, uint32_t *pidCpuPackage); +/** @} */ + +/** @name Page sharing + * @{ */ +VBGLR3DECL(int) VbglR3RegisterSharedModule(char *pszModuleName, char *pszVersion, RTGCPTR64 GCBaseAddr, uint32_t cbModule, unsigned cRegions, VMMDEVSHAREDREGIONDESC *pRegions); +VBGLR3DECL(int) VbglR3UnregisterSharedModule(char *pszModuleName, char *pszVersion, RTGCPTR64 GCBaseAddr, uint32_t cbModule); +VBGLR3DECL(int) VbglR3CheckSharedModules(void); +VBGLR3DECL(bool) VbglR3PageSharingIsEnabled(void); +VBGLR3DECL(int) VbglR3PageIsShared(RTGCPTR pPage, bool *pfShared, uint64_t *puPageFlags); +/** @} */ + +# ifdef VBOX_WITH_DRAG_AND_DROP +/** @name Drag and Drop + * @{ */ +/** + * Structure containing the context required for + * either retrieving or sending a HGCM guest drag'n drop + * commands from or to the host. + * + * Note: Do not change parameter order without also + * adapting all structure initializers. + */ +typedef struct VBGLR3GUESTDNDCMDCTX +{ + /** @todo This struct could be handy if we want to implement + * a second communication channel, e.g. via TCP/IP. + * Use a union for the HGCM stuff then. */ + + /** IN: HGCM client ID to use for communication. */ + uint32_t uClientID; + /** IN: Protocol version to use. */ + uint32_t uProtocol; + /** OUT: Number of parameters retrieved. */ + uint32_t uNumParms; +} VBGLR3GUESTDNDCMDCTX, *PVBGLR3GUESTDNDCMDCTX; + +typedef struct VBGLR3DNDHGCMEVENT +{ + uint32_t uType; /** The event type this struct contains. */ + uint32_t uScreenId; /** Screen ID this request belongs to. */ + char *pszFormats; /** Format list (\r\n separated). */ + uint32_t cbFormats; /** Size of pszFormats (\0 included). */ + union + { + struct + { + uint32_t uXpos; /** X position of guest screen. */ + uint32_t uYpos; /** Y position of guest screen. */ + uint32_t uDefAction; /** Proposed DnD action. */ + uint32_t uAllActions; /** Allowed DnD actions. */ + } a; /** Values used in init, move and drop event type. */ + struct + { + void *pvData; /** Data request. */ + size_t cbData; /** Size of pvData. */ + } b; /** Values used in drop data event type. */ + } u; +} VBGLR3DNDHGCMEVENT; +typedef VBGLR3DNDHGCMEVENT *PVBGLR3DNDHGCMEVENT; +typedef const PVBGLR3DNDHGCMEVENT CPVBGLR3DNDHGCMEVENT; +VBGLR3DECL(int) VbglR3DnDConnect(PVBGLR3GUESTDNDCMDCTX pCtx); +VBGLR3DECL(int) VbglR3DnDDisconnect(PVBGLR3GUESTDNDCMDCTX pCtx); + +VBGLR3DECL(int) VbglR3DnDProcessNextMessage(PVBGLR3GUESTDNDCMDCTX pCtx, CPVBGLR3DNDHGCMEVENT pEvent); + +VBGLR3DECL(int) VbglR3DnDHGAcknowledgeOperation(PVBGLR3GUESTDNDCMDCTX pCtx, uint32_t uAction); +VBGLR3DECL(int) VbglR3DnDHGRequestData(PVBGLR3GUESTDNDCMDCTX pCtx, const char* pcszFormat); +VBGLR3DECL(int) VbglR3DnDHGSetProgress(PVBGLR3GUESTDNDCMDCTX pCtx, uint32_t uStatus, uint8_t uPercent, int rcErr); +# ifdef VBOX_WITH_DRAG_AND_DROP_GH +VBGLR3DECL(int) VbglR3DnDGHAcknowledgePending(PVBGLR3GUESTDNDCMDCTX pCtx, uint32_t uDefAction, uint32_t uAllActions, const char* pcszFormats); +VBGLR3DECL(int) VbglR3DnDGHSendData(PVBGLR3GUESTDNDCMDCTX pCtx, const char *pszFormat, void *pvData, uint32_t cbData); +VBGLR3DECL(int) VbglR3DnDGHSendError(PVBGLR3GUESTDNDCMDCTX pCtx, int rcOp); +# endif /* VBOX_WITH_DRAG_AND_DROP_GH */ +/** @} */ +# endif /* VBOX_WITH_DRAG_AND_DROP */ + +/* Generic Host Channel Service. */ +VBGLR3DECL(int) VbglR3HostChannelInit(uint32_t *pu32HGCMClientId); +VBGLR3DECL(void) VbglR3HostChannelTerm(uint32_t u32HGCMClientId); +VBGLR3DECL(int) VbglR3HostChannelAttach(uint32_t *pu32ChannelHandle, uint32_t u32HGCMClientId, + const char *pszName, uint32_t u32Flags); +VBGLR3DECL(void) VbglR3HostChannelDetach(uint32_t u32ChannelHandle, uint32_t u32HGCMClientId); +VBGLR3DECL(int) VbglR3HostChannelSend(uint32_t u32ChannelHandle, uint32_t u32HGCMClientId, + void *pvData, uint32_t cbData); +VBGLR3DECL(int) VbglR3HostChannelRecv(uint32_t u32ChannelHandle, uint32_t u32HGCMClientId, + void *pvData, uint32_t cbData, + uint32_t *pu32SizeReceived, uint32_t *pu32SizeRemaining); +VBGLR3DECL(int) VbglR3HostChannelControl(uint32_t u32ChannelHandle, uint32_t u32HGCMClientId, + uint32_t u32Code, void *pvParm, uint32_t cbParm, + void *pvData, uint32_t cbData, uint32_t *pu32SizeDataReturned); +VBGLR3DECL(int) VbglR3HostChannelEventWait(uint32_t *pu32ChannelHandle, uint32_t u32HGCMClientId, + uint32_t *pu32EventId, void *pvParm, uint32_t cbParm, + uint32_t *pu32SizeReturned); +VBGLR3DECL(int) VbglR3HostChannelEventCancel(uint32_t u32ChannelHandle, uint32_t u32HGCMClientId); +VBGLR3DECL(int) VbglR3HostChannelQuery(const char *pszName, uint32_t u32HGCMClientId, uint32_t u32Code, + void *pvParm, uint32_t cbParm, void *pvData, uint32_t cbData, + uint32_t *pu32SizeDataReturned); + +/** @name Mode hint storage + * @{ */ +VBGLR3DECL(int) VbglR3ReadVideoMode(unsigned cDisplay, unsigned *cx, + unsigned *cy, unsigned *cBPP, unsigned *x, + unsigned *y, unsigned *fEnabled); +VBGLR3DECL(int) VbglR3WriteVideoMode(unsigned cDisplay, unsigned cx, + unsigned cy, unsigned cBPP, unsigned x, + unsigned y, unsigned fEnabled); +/** @} */ + +#endif /* IN_RING3 */ +/** @} */ + +RT_C_DECLS_END + +/** @} */ + +#endif + --- linux-raspi2-4.2.0.orig/ubuntu/vbox/include/VBox/VBoxGuestMangling.h +++ linux-raspi2-4.2.0/ubuntu/vbox/include/VBox/VBoxGuestMangling.h @@ -0,0 +1,32 @@ +/** @file + * VBoxGuest - Mangling of IPRT symbols for guest drivers. + * + * This is included via a compiler directive on platforms with a global kernel + * symbol name space (i.e. not Windows, OS/2 and Mac OS X (?)). + */ + +/* + * Copyright (C) 2011-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + + +#define RT_MANGLER(symbol) VBoxGuest_##symbol +#include + --- linux-raspi2-4.2.0.orig/ubuntu/vbox/include/VBox/VMMDev.h +++ linux-raspi2-4.2.0/ubuntu/vbox/include/VBox/VMMDev.h @@ -0,0 +1,2205 @@ +/** @file + * Virtual Device for Guest <-> VMM/Host communication (ADD,DEV). + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + +#ifndef ___VBox_VMMDev_h +#define ___VBox_VMMDev_h + +#include +#include /* for the PCI IDs. */ +#include +#include +#include +#include +#include + + +#pragma pack(4) /* force structure dword packing here. */ +RT_C_DECLS_BEGIN + + +/** @defgroup grp_vmmdev VMM Device + * + * Note! This interface cannot be changed, it can only be extended! + * + * @{ + */ + + +/** Size of VMMDev RAM region accessible by guest. + * Must be big enough to contain VMMDevMemory structure (see further down). + * For now: 4 megabyte. + */ +#define VMMDEV_RAM_SIZE (4 * 256 * PAGE_SIZE) + +/** Size of VMMDev heap region accessible by guest. + * (Must be a power of two (pci range).) + */ +#define VMMDEV_HEAP_SIZE (4 * PAGE_SIZE) + +/** Port for generic request interface (relative offset). */ +#define VMMDEV_PORT_OFF_REQUEST 0 + + +/** @name VMMDev events. + * + * Used mainly by VMMDevReq_AcknowledgeEvents/VMMDevEvents and version 1.3 of + * VMMDevMemory. + * + * @{ + */ +/** Host mouse capabilities has been changed. */ +#define VMMDEV_EVENT_MOUSE_CAPABILITIES_CHANGED RT_BIT(0) +/** HGCM event. */ +#define VMMDEV_EVENT_HGCM RT_BIT(1) +/** A display change request has been issued. */ +#define VMMDEV_EVENT_DISPLAY_CHANGE_REQUEST RT_BIT(2) +/** Credentials are available for judgement. */ +#define VMMDEV_EVENT_JUDGE_CREDENTIALS RT_BIT(3) +/** The guest has been restored. */ +#define VMMDEV_EVENT_RESTORED RT_BIT(4) +/** Seamless mode state changed. */ +#define VMMDEV_EVENT_SEAMLESS_MODE_CHANGE_REQUEST RT_BIT(5) +/** Memory balloon size changed. */ +#define VMMDEV_EVENT_BALLOON_CHANGE_REQUEST RT_BIT(6) +/** Statistics interval changed. */ +#define VMMDEV_EVENT_STATISTICS_INTERVAL_CHANGE_REQUEST RT_BIT(7) +/** VRDP status changed. */ +#define VMMDEV_EVENT_VRDP RT_BIT(8) +/** New mouse position data available. */ +#define VMMDEV_EVENT_MOUSE_POSITION_CHANGED RT_BIT(9) +/** CPU hotplug event occurred. */ +#define VMMDEV_EVENT_CPU_HOTPLUG RT_BIT(10) +/** The mask of valid events, for sanity checking. */ +#define VMMDEV_EVENT_VALID_EVENT_MASK UINT32_C(0x000007ff) +/** @} */ + + +/** @defgroup grp_vmmdev_req VMMDev Generic Request Interface + * @{ + */ + +/** @name Current version of the VMMDev interface. + * + * Additions are allowed to work only if + * additions_major == vmmdev_current && additions_minor <= vmmdev_current. + * Additions version is reported to host (VMMDev) by VMMDevReq_ReportGuestInfo. + * + * @remarks These defines also live in the 16-bit and assembly versions of this + * header. + */ +#define VMMDEV_VERSION 0x00010004 +#define VMMDEV_VERSION_MAJOR (VMMDEV_VERSION >> 16) +#define VMMDEV_VERSION_MINOR (VMMDEV_VERSION & 0xffff) +/** @} */ + +/** Maximum request packet size. */ +#define VMMDEV_MAX_VMMDEVREQ_SIZE _1M +/** Maximum number of HGCM parameters. */ +#define VMMDEV_MAX_HGCM_PARMS 1024 +/** Maximum total size of hgcm buffers in one call. */ +#define VMMDEV_MAX_HGCM_DATA_SIZE UINT32_C(0x7FFFFFFF) + +/** + * VMMDev request types. + * @note when updating this, adjust vmmdevGetRequestSize() as well + */ +typedef enum +{ + VMMDevReq_InvalidRequest = 0, + VMMDevReq_GetMouseStatus = 1, + VMMDevReq_SetMouseStatus = 2, + VMMDevReq_SetPointerShape = 3, + VMMDevReq_GetHostVersion = 4, + VMMDevReq_Idle = 5, + VMMDevReq_GetHostTime = 10, + VMMDevReq_GetHypervisorInfo = 20, + VMMDevReq_SetHypervisorInfo = 21, + VMMDevReq_RegisterPatchMemory = 22, /* since version 3.0.6 */ + VMMDevReq_DeregisterPatchMemory = 23, /* since version 3.0.6 */ + VMMDevReq_SetPowerStatus = 30, + VMMDevReq_AcknowledgeEvents = 41, + VMMDevReq_CtlGuestFilterMask = 42, + VMMDevReq_ReportGuestInfo = 50, + VMMDevReq_ReportGuestInfo2 = 58, /* since version 3.2.0 */ + VMMDevReq_ReportGuestStatus = 59, /* since version 3.2.8 */ + VMMDevReq_ReportGuestUserState = 74, /* since version 4.3 */ + /** + * Retrieve a display resize request sent by the host using + * @a IDisplay:setVideoModeHint. Deprecated. + * + * Similar to @a VMMDevReq_GetDisplayChangeRequest2, except that it only + * considers host requests sent for the first virtual display. This guest + * request should not be used in new guest code, and the results are + * undefined if a guest mixes calls to this and + * @a VMMDevReq_GetDisplayChangeRequest2. + */ + VMMDevReq_GetDisplayChangeRequest = 51, + VMMDevReq_VideoModeSupported = 52, + VMMDevReq_GetHeightReduction = 53, + /** + * Retrieve a display resize request sent by the host using + * @a IDisplay:setVideoModeHint. + * + * Queries a display resize request sent from the host. If the + * @a eventAck member is sent to true and there is an unqueried + * request available for one of the virtual display then that request will + * be returned. If several displays have unqueried requests the lowest + * numbered display will be chosen first. Only the most recent unseen + * request for each display is remembered. + * If @a eventAck is set to false, the last host request queried with + * @a eventAck set is resent, or failing that the most recent received from + * the host. If no host request was ever received then all zeros are + * returned. + */ + VMMDevReq_GetDisplayChangeRequest2 = 54, + VMMDevReq_ReportGuestCapabilities = 55, + VMMDevReq_SetGuestCapabilities = 56, + VMMDevReq_VideoModeSupported2 = 57, /* since version 3.2.0 */ + VMMDevReq_GetDisplayChangeRequestEx = 80, /* since version 4.2.4 */ +#ifdef VBOX_WITH_HGCM + VMMDevReq_HGCMConnect = 60, + VMMDevReq_HGCMDisconnect = 61, +#ifdef VBOX_WITH_64_BITS_GUESTS + VMMDevReq_HGCMCall32 = 62, + VMMDevReq_HGCMCall64 = 63, +#else + VMMDevReq_HGCMCall = 62, +#endif /* VBOX_WITH_64_BITS_GUESTS */ + VMMDevReq_HGCMCancel = 64, + VMMDevReq_HGCMCancel2 = 65, +#endif + VMMDevReq_VideoAccelEnable = 70, + VMMDevReq_VideoAccelFlush = 71, + VMMDevReq_VideoSetVisibleRegion = 72, + VMMDevReq_GetSeamlessChangeRequest = 73, + VMMDevReq_QueryCredentials = 100, + VMMDevReq_ReportCredentialsJudgement = 101, + VMMDevReq_ReportGuestStats = 110, + VMMDevReq_GetMemBalloonChangeRequest = 111, + VMMDevReq_GetStatisticsChangeRequest = 112, + VMMDevReq_ChangeMemBalloon = 113, + VMMDevReq_GetVRDPChangeRequest = 150, + VMMDevReq_LogString = 200, + VMMDevReq_GetCpuHotPlugRequest = 210, + VMMDevReq_SetCpuHotPlugStatus = 211, + VMMDevReq_RegisterSharedModule = 212, + VMMDevReq_UnregisterSharedModule = 213, + VMMDevReq_CheckSharedModules = 214, + VMMDevReq_GetPageSharingStatus = 215, + VMMDevReq_DebugIsPageShared = 216, + VMMDevReq_GetSessionId = 217, /* since version 3.2.8 */ + VMMDevReq_WriteCoreDump = 218, + VMMDevReq_GuestHeartbeat = 219, + VMMDevReq_HeartbeatConfigure = 220, + VMMDevReq_SizeHack = 0x7fffffff +} VMMDevRequestType; + +#ifdef VBOX_WITH_64_BITS_GUESTS +/* + * Constants and structures are redefined for the guest. + * + * Host code MUST always use either *32 or *64 variant explicitely. + * Host source code will use VBOX_HGCM_HOST_CODE define to catch undefined + * data types and constants. + * + * This redefinition means that the new additions builds will use + * the *64 or *32 variants depending on the current architecture bit count (ARCH_BITS). + */ +# ifndef VBOX_HGCM_HOST_CODE +# if ARCH_BITS == 64 +# define VMMDevReq_HGCMCall VMMDevReq_HGCMCall64 +# elif ARCH_BITS == 32 +# define VMMDevReq_HGCMCall VMMDevReq_HGCMCall32 +# else +# error "Unsupported ARCH_BITS" +# endif +# endif /* !VBOX_HGCM_HOST_CODE */ +#endif /* VBOX_WITH_64_BITS_GUESTS */ + +/** Version of VMMDevRequestHeader structure. */ +#define VMMDEV_REQUEST_HEADER_VERSION (0x10001) + + +/** + * Generic VMMDev request header. + */ +typedef struct +{ + /** IN: Size of the structure in bytes (including body). */ + uint32_t size; + /** IN: Version of the structure. */ + uint32_t version; + /** IN: Type of the request. */ + VMMDevRequestType requestType; + /** OUT: Return code. */ + int32_t rc; + /** Reserved field no.1. MBZ. */ + uint32_t reserved1; + /** Reserved field no.2. MBZ. */ + uint32_t reserved2; +} VMMDevRequestHeader; +AssertCompileSize(VMMDevRequestHeader, 24); + + +/** + * Mouse status request structure. + * + * Used by VMMDevReq_GetMouseStatus and VMMDevReq_SetMouseStatus. + */ +typedef struct +{ + /** header */ + VMMDevRequestHeader header; + /** Mouse feature mask. See VMMDEV_MOUSE_*. */ + uint32_t mouseFeatures; + /** Mouse x position. */ + int32_t pointerXPos; + /** Mouse y position. */ + int32_t pointerYPos; +} VMMDevReqMouseStatus; +AssertCompileSize(VMMDevReqMouseStatus, 24+12); + +/** @name Mouse capability bits (VMMDevReqMouseStatus::mouseFeatures). + * @{ */ +/** The guest can (== wants to) handle absolute coordinates. */ +#define VMMDEV_MOUSE_GUEST_CAN_ABSOLUTE RT_BIT(0) +/** The host can (== wants to) send absolute coordinates. + * (Input not captured.) */ +#define VMMDEV_MOUSE_HOST_WANTS_ABSOLUTE RT_BIT(1) +/** The guest can *NOT* switch to software cursor and therefore depends on the + * host cursor. + * + * When guest additions are installed and the host has promised to display the + * cursor itself, the guest installs a hardware mouse driver. Don't ask the + * guest to switch to a software cursor then. */ +#define VMMDEV_MOUSE_GUEST_NEEDS_HOST_CURSOR RT_BIT(2) +/** The host does NOT provide support for drawing the cursor itself. */ +#define VMMDEV_MOUSE_HOST_CANNOT_HWPOINTER RT_BIT(3) +/** The guest can read VMMDev events to find out about pointer movement */ +#define VMMDEV_MOUSE_NEW_PROTOCOL RT_BIT(4) +/** If the guest changes the status of the + * VMMDEV_MOUSE_GUEST_NEEDS_HOST_CURSOR bit, the host will honour this */ +#define VMMDEV_MOUSE_HOST_RECHECKS_NEEDS_HOST_CURSOR RT_BIT(5) +/** The host supplies an absolute pointing device. The Guest Additions may + * wish to use this to decide whether to install their own driver */ +#define VMMDEV_MOUSE_HOST_HAS_ABS_DEV RT_BIT(6) +/** The mask of all VMMDEV_MOUSE_* flags */ +#define VMMDEV_MOUSE_MASK UINT32_C(0x0000007f) +/** The mask of guest capability changes for which notification events should + * be sent */ +#define VMMDEV_MOUSE_NOTIFY_HOST_MASK \ + (VMMDEV_MOUSE_GUEST_CAN_ABSOLUTE | VMMDEV_MOUSE_GUEST_NEEDS_HOST_CURSOR) +/** The mask of all capabilities which the guest can legitimately change */ +#define VMMDEV_MOUSE_GUEST_MASK \ + (VMMDEV_MOUSE_NOTIFY_HOST_MASK | VMMDEV_MOUSE_NEW_PROTOCOL) +/** The mask of host capability changes for which notification events should + * be sent */ +#define VMMDEV_MOUSE_NOTIFY_GUEST_MASK \ + VMMDEV_MOUSE_HOST_WANTS_ABSOLUTE +/** The mask of all capabilities which the host can legitimately change */ +#define VMMDEV_MOUSE_HOST_MASK \ + ( VMMDEV_MOUSE_NOTIFY_GUEST_MASK \ + | VMMDEV_MOUSE_HOST_CANNOT_HWPOINTER \ + | VMMDEV_MOUSE_HOST_RECHECKS_NEEDS_HOST_CURSOR \ + | VMMDEV_MOUSE_HOST_HAS_ABS_DEV) +/** @} */ + +/** @name Absolute mouse reporting range + * @{ */ +/** @todo Should these be here? They are needed by both host and guest. */ +/** The minumum value our pointing device can return. */ +#define VMMDEV_MOUSE_RANGE_MIN 0 +/** The maximum value our pointing device can return. */ +#define VMMDEV_MOUSE_RANGE_MAX 0xFFFF +/** The full range our pointing device can return. */ +#define VMMDEV_MOUSE_RANGE (VMMDEV_MOUSE_RANGE_MAX - VMMDEV_MOUSE_RANGE_MIN) +/** @} */ + + +/** + * Mouse pointer shape/visibility change request. + * + * Used by VMMDevReq_SetPointerShape. The size is variable. + */ +typedef struct VMMDevReqMousePointer +{ + /** Header. */ + VMMDevRequestHeader header; + /** VBOX_MOUSE_POINTER_* bit flags. */ + uint32_t fFlags; + /** x coordinate of hot spot. */ + uint32_t xHot; + /** y coordinate of hot spot. */ + uint32_t yHot; + /** Width of the pointer in pixels. */ + uint32_t width; + /** Height of the pointer in scanlines. */ + uint32_t height; + /** Pointer data. + * + **** + * The data consists of 1 bpp AND mask followed by 32 bpp XOR (color) mask. + * + * For pointers without alpha channel the XOR mask pixels are 32 bit values: (lsb)BGR0(msb). + * For pointers with alpha channel the XOR mask consists of (lsb)BGRA(msb) 32 bit values. + * + * Guest driver must create the AND mask for pointers with alpha channel, so if host does not + * support alpha, the pointer could be displayed as a normal color pointer. The AND mask can + * be constructed from alpha values. For example alpha value >= 0xf0 means bit 0 in the AND mask. + * + * The AND mask is 1 bpp bitmap with byte aligned scanlines. Size of AND mask, + * therefore, is cbAnd = (width + 7) / 8 * height. The padding bits at the + * end of any scanline are undefined. + * + * The XOR mask follows the AND mask on the next 4 bytes aligned offset: + * uint8_t *pXor = pAnd + (cbAnd + 3) & ~3 + * Bytes in the gap between the AND and the XOR mask are undefined. + * XOR mask scanlines have no gap between them and size of XOR mask is: + * cXor = width * 4 * height. + **** + * + * Preallocate 4 bytes for accessing actual data as p->pointerData. + */ + char pointerData[4]; +} VMMDevReqMousePointer; +AssertCompileSize(VMMDevReqMousePointer, 24+24); + +/** + * Get the size that a VMMDevReqMousePointer request should have for a given + * size of cursor, including the trailing cursor image and mask data. + * @note an "empty" request still has the four preallocated bytes of data + * + * @returns the size + * @param width the cursor width + * @param height the cursor height + */ +DECLINLINE(size_t) vmmdevGetMousePointerReqSize(uint32_t width, uint32_t height) +{ + size_t cbBase = RT_OFFSETOF(VMMDevReqMousePointer, pointerData); + size_t cbMask = (width + 7) / 8 * height; + size_t cbArgb = width * height * 4; + return RT_MAX(cbBase + ((cbMask + 3) & ~3) + cbArgb, + sizeof(VMMDevReqMousePointer)); +} + +/** @name VMMDevReqMousePointer::fFlags + * @note The VBOX_MOUSE_POINTER_* flags are used in the guest video driver, + * values must be <= 0x8000 and must not be changed. (try make more sense + * of this, please). + * @{ + */ +/** pointer is visible */ +#define VBOX_MOUSE_POINTER_VISIBLE (0x0001) +/** pointer has alpha channel */ +#define VBOX_MOUSE_POINTER_ALPHA (0x0002) +/** pointerData contains new pointer shape */ +#define VBOX_MOUSE_POINTER_SHAPE (0x0004) +/** @} */ + + +/** + * String log request structure. + * + * Used by VMMDevReq_LogString. + * @deprecated Use the IPRT logger or VbglR3WriteLog instead. + */ +typedef struct +{ + /** header */ + VMMDevRequestHeader header; + /** variable length string data */ + char szString[1]; +} VMMDevReqLogString; +AssertCompileSize(VMMDevReqLogString, 24+4); + + +/** + * VirtualBox host version request structure. + * + * Used by VMMDevReq_GetHostVersion. + * + * @remarks VBGL uses this to detect the precense of new features in the + * interface. + */ +typedef struct +{ + /** Header. */ + VMMDevRequestHeader header; + /** Major version. */ + uint16_t major; + /** Minor version. */ + uint16_t minor; + /** Build number. */ + uint32_t build; + /** SVN revision. */ + uint32_t revision; + /** Feature mask. */ + uint32_t features; +} VMMDevReqHostVersion; +AssertCompileSize(VMMDevReqHostVersion, 24+16); + +/** @name VMMDevReqHostVersion::features + * @{ */ +/** Physical page lists are supported by HGCM. */ +#define VMMDEV_HVF_HGCM_PHYS_PAGE_LIST RT_BIT(0) +/** @} */ + + +/** + * Guest capabilities structure. + * + * Used by VMMDevReq_ReportGuestCapabilities. + */ +typedef struct +{ + /** Header. */ + VMMDevRequestHeader header; + /** Capabilities (VMMDEV_GUEST_*). */ + uint32_t caps; +} VMMDevReqGuestCapabilities; +AssertCompileSize(VMMDevReqGuestCapabilities, 24+4); + +/** + * Guest capabilities structure, version 2. + * + * Used by VMMDevReq_SetGuestCapabilities. + */ +typedef struct +{ + /** Header. */ + VMMDevRequestHeader header; + /** Mask of capabilities to be added. */ + uint32_t u32OrMask; + /** Mask of capabilities to be removed. */ + uint32_t u32NotMask; +} VMMDevReqGuestCapabilities2; +AssertCompileSize(VMMDevReqGuestCapabilities2, 24+8); + +/** @name Guest capability bits. + * Used by VMMDevReq_ReportGuestCapabilities and VMMDevReq_SetGuestCapabilities. + * @{ */ +/** The guest supports seamless display rendering. */ +#define VMMDEV_GUEST_SUPPORTS_SEAMLESS RT_BIT_32(0) +/** The guest supports mapping guest to host windows. */ +#define VMMDEV_GUEST_SUPPORTS_GUEST_HOST_WINDOW_MAPPING RT_BIT_32(1) +/** The guest graphical additions are active. + * Used for fast activation and deactivation of certain graphical operations + * (e.g. resizing & seamless). The legacy VMMDevReq_ReportGuestCapabilities + * request sets this automatically, but VMMDevReq_SetGuestCapabilities does + * not. */ +#define VMMDEV_GUEST_SUPPORTS_GRAPHICS RT_BIT_32(2) +/** The mask of valid events, for sanity checking. */ +#define VMMDEV_GUEST_CAPABILITIES_MASK UINT32_C(0x00000007) +/** @} */ + + +/** + * Idle request structure. + * + * Used by VMMDevReq_Idle. + */ +typedef struct +{ + /** Header. */ + VMMDevRequestHeader header; +} VMMDevReqIdle; +AssertCompileSize(VMMDevReqIdle, 24); + + +/** + * Host time request structure. + * + * Used by VMMDevReq_GetHostTime. + */ +typedef struct +{ + /** Header */ + VMMDevRequestHeader header; + /** OUT: Time in milliseconds since unix epoch. */ + uint64_t time; +} VMMDevReqHostTime; +AssertCompileSize(VMMDevReqHostTime, 24+8); + + +/** + * Hypervisor info structure. + * + * Used by VMMDevReq_GetHypervisorInfo and VMMDevReq_SetHypervisorInfo. + */ +typedef struct +{ + /** Header. */ + VMMDevRequestHeader header; + /** Guest virtual address of proposed hypervisor start. + * Not used by VMMDevReq_GetHypervisorInfo. + * @todo Make this 64-bit compatible? */ + RTGCPTR32 hypervisorStart; + /** Hypervisor size in bytes. */ + uint32_t hypervisorSize; +} VMMDevReqHypervisorInfo; +AssertCompileSize(VMMDevReqHypervisorInfo, 24+8); + +/** @name Default patch memory size . + * Used by VMMDevReq_RegisterPatchMemory and VMMDevReq_DeregisterPatchMemory. + * @{ */ +#define VMMDEV_GUEST_DEFAULT_PATCHMEM_SIZE 8192 +/** @} */ + +/** + * Patching memory structure. (locked executable & read-only page from the guest's perspective) + * + * Used by VMMDevReq_RegisterPatchMemory and VMMDevReq_DeregisterPatchMemory + */ +typedef struct +{ + /** Header. */ + VMMDevRequestHeader header; + /** Guest virtual address of the patching page(s). */ + RTGCPTR64 pPatchMem; + /** Patch page size in bytes. */ + uint32_t cbPatchMem; +} VMMDevReqPatchMemory; +AssertCompileSize(VMMDevReqPatchMemory, 24+12); + + +/** + * Guest power requests. + * + * See VMMDevReq_SetPowerStatus and VMMDevPowerStateRequest. + */ +typedef enum +{ + VMMDevPowerState_Invalid = 0, + VMMDevPowerState_Pause = 1, + VMMDevPowerState_PowerOff = 2, + VMMDevPowerState_SaveState = 3, + VMMDevPowerState_SizeHack = 0x7fffffff +} VMMDevPowerState; +AssertCompileSize(VMMDevPowerState, 4); + +/** + * VM power status structure. + * + * Used by VMMDevReq_SetPowerStatus. + */ +typedef struct +{ + /** Header. */ + VMMDevRequestHeader header; + /** Power state request. */ + VMMDevPowerState powerState; +} VMMDevPowerStateRequest; +AssertCompileSize(VMMDevPowerStateRequest, 24+4); + + +/** + * Pending events structure. + * + * Used by VMMDevReq_AcknowledgeEvents. + */ +typedef struct +{ + /** Header. */ + VMMDevRequestHeader header; + /** OUT: Pending event mask. */ + uint32_t events; +} VMMDevEvents; +AssertCompileSize(VMMDevEvents, 24+4); + + +/** + * Guest event filter mask control. + * + * Used by VMMDevReq_CtlGuestFilterMask. + */ +typedef struct +{ + /** Header. */ + VMMDevRequestHeader header; + /** Mask of events to be added to the filter. */ + uint32_t u32OrMask; + /** Mask of events to be removed from the filter. */ + uint32_t u32NotMask; +} VMMDevCtlGuestFilterMask; +AssertCompileSize(VMMDevCtlGuestFilterMask, 24+8); + + +/** + * Guest information structure. + * + * Used by VMMDevReportGuestInfo and PDMIVMMDEVCONNECTOR::pfnUpdateGuestVersion. + */ +typedef struct VBoxGuestInfo +{ + /** The VMMDev interface version expected by additions. + * *Deprecated*, do not use anymore! Will be removed. */ + uint32_t interfaceVersion; + /** Guest OS type. */ + VBOXOSTYPE osType; +} VBoxGuestInfo; +AssertCompileSize(VBoxGuestInfo, 8); + +/** + * Guest information report. + * + * Used by VMMDevReq_ReportGuestInfo. + */ +typedef struct +{ + /** Header. */ + VMMDevRequestHeader header; + /** Guest information. */ + VBoxGuestInfo guestInfo; +} VMMDevReportGuestInfo; +AssertCompileSize(VMMDevReportGuestInfo, 24+8); + + +/** + * Guest information structure, version 2. + * + * Used by VMMDevReportGuestInfo2 and PDMIVMMDEVCONNECTOR::pfnUpdateGuestVersion2. + */ +typedef struct VBoxGuestInfo2 +{ + /** Major version. */ + uint16_t additionsMajor; + /** Minor version. */ + uint16_t additionsMinor; + /** Build number. */ + uint32_t additionsBuild; + /** SVN revision. */ + uint32_t additionsRevision; + /** Feature mask, currently unused. */ + uint32_t additionsFeatures; + /** The intentional meaning of this field was: + * Some additional information, for example 'Beta 1' or something like that. + * + * The way it was implemented was implemented: VBOX_VERSION_STRING. + * + * This means the first three members are duplicated in this field (if the guest + * build config is sane). So, the user must check this and chop it off before + * usage. There is, because of the Main code's blind trust in the field's + * content, no way back. */ + char szName[128]; +} VBoxGuestInfo2; +AssertCompileSize(VBoxGuestInfo2, 144); + +/** + * Guest information report, version 2. + * + * Used by VMMDevReq_ReportGuestInfo2. + */ +typedef struct +{ + /** Header. */ + VMMDevRequestHeader header; + /** Guest information. */ + VBoxGuestInfo2 guestInfo; +} VMMDevReportGuestInfo2; +AssertCompileSize(VMMDevReportGuestInfo2, 24+144); + + +/** + * The guest facility. + * This needs to be kept in sync with AdditionsFacilityType of the Main API! + */ +typedef enum +{ + VBoxGuestFacilityType_Unknown = 0, + VBoxGuestFacilityType_VBoxGuestDriver = 20, + VBoxGuestFacilityType_AutoLogon = 90, /* VBoxGINA / VBoxCredProv / pam_vbox. */ + VBoxGuestFacilityType_VBoxService = 100, + VBoxGuestFacilityType_VBoxTrayClient = 101, /* VBoxTray (Windows), VBoxClient (Linux, Unix). */ + VBoxGuestFacilityType_Seamless = 1000, + VBoxGuestFacilityType_Graphics = 1100, + VBoxGuestFacilityType_All = 0x7ffffffe, + VBoxGuestFacilityType_SizeHack = 0x7fffffff +} VBoxGuestFacilityType; +AssertCompileSize(VBoxGuestFacilityType, 4); + + +/** + * The current guest status of a facility. + * This needs to be kept in sync with AdditionsFacilityStatus of the Main API! + */ +typedef enum +{ + VBoxGuestFacilityStatus_Inactive = 0, + VBoxGuestFacilityStatus_Paused = 1, + VBoxGuestFacilityStatus_PreInit = 20, + VBoxGuestFacilityStatus_Init = 30, + VBoxGuestFacilityStatus_Active = 50, + VBoxGuestFacilityStatus_Terminating = 100, + VBoxGuestFacilityStatus_Terminated = 101, + VBoxGuestFacilityStatus_Failed = 800, + VBoxGuestFacilityStatus_Unknown = 999, + VBoxGuestFacilityStatus_SizeHack = 0x7fffffff +} VBoxGuestFacilityStatus; +AssertCompileSize(VBoxGuestFacilityStatus, 4); + + +/** + * The facility class. + * This needs to be kept in sync with AdditionsFacilityClass of the Main API! + */ +typedef enum +{ + VBoxGuestFacilityClass_None = 0, + VBoxGuestFacilityClass_Driver = 10, + VBoxGuestFacilityClass_Service = 30, + VBoxGuestFacilityClass_Program = 50, + VBoxGuestFacilityClass_Feature = 100, + VBoxGuestFacilityClass_ThirdParty = 999, + VBoxGuestFacilityClass_All = 0x7ffffffe, + VBoxGuestFacilityClass_SizeHack = 0x7fffffff +} VBoxGuestFacilityClass; +AssertCompileSize(VBoxGuestFacilityClass, 4); + + +/** + * Guest status structure. + * + * Used by VMMDevReqGuestStatus. + */ +typedef struct VBoxGuestStatus +{ + /** Facility the status is indicated for. */ + VBoxGuestFacilityType facility; + /** Current guest status. */ + VBoxGuestFacilityStatus status; + /** Flags, not used at the moment. */ + uint32_t flags; +} VBoxGuestStatus; +AssertCompileSize(VBoxGuestStatus, 12); + +/** + * Guest Additions status structure. + * + * Used by VMMDevReq_ReportGuestStatus. + */ +typedef struct +{ + /** Header. */ + VMMDevRequestHeader header; + /** Guest information. */ + VBoxGuestStatus guestStatus; +} VMMDevReportGuestStatus; +AssertCompileSize(VMMDevReportGuestStatus, 24+12); + + +/** + * The current status of specific guest user. + * This needs to be kept in sync with GuestUserState of the Main API! + */ +typedef enum VBoxGuestUserState +{ + VBoxGuestUserState_Unknown = 0, + VBoxGuestUserState_LoggedIn = 1, + VBoxGuestUserState_LoggedOut = 2, + VBoxGuestUserState_Locked = 3, + VBoxGuestUserState_Unlocked = 4, + VBoxGuestUserState_Disabled = 5, + VBoxGuestUserState_Idle = 6, + VBoxGuestUserState_InUse = 7, + VBoxGuestUserState_Created = 8, + VBoxGuestUserState_Deleted = 9, + VBoxGuestUserState_SessionChanged = 10, + VBoxGuestUserState_CredentialsChanged = 11, + VBoxGuestUserState_RoleChanged = 12, + VBoxGuestUserState_GroupAdded = 13, + VBoxGuestUserState_GroupRemoved = 14, + VBoxGuestUserState_Elevated = 15, + VBoxGuestUserState_SizeHack = 0x7fffffff +} VBoxGuestUserState; +AssertCompileSize(VBoxGuestUserState, 4); + + +/** + * Guest user status updates. + */ +typedef struct VBoxGuestUserStatus +{ + /** The guest user state to send. */ + VBoxGuestUserState state; + /** Size (in bytes) of szUser. */ + uint32_t cbUser; + /** Size (in bytes) of szDomain. */ + uint32_t cbDomain; + /** Size (in bytes) of aDetails. */ + uint32_t cbDetails; + /** Note: Here begins the dynamically + * allocated region. */ + /** Guest user to report state for. */ + char szUser[1]; + /** Domain the guest user is bound to. */ + char szDomain[1]; + /** Optional details of the state. */ + uint8_t aDetails[1]; +} VBoxGuestUserStatus; +AssertCompileSize(VBoxGuestUserStatus, 20); + + +/** + * Guest user status structure. + * + * Used by VMMDevReq_ReportGuestUserStatus. + */ +typedef struct +{ + /** Header. */ + VMMDevRequestHeader header; + /** Guest user status. */ + VBoxGuestUserStatus status; +} VMMDevReportGuestUserState; +AssertCompileSize(VMMDevReportGuestUserState, 24+20); + + +/** + * Guest statistics structure. + * + * Used by VMMDevReportGuestStats and PDMIVMMDEVCONNECTOR::pfnReportStatistics. + */ +typedef struct VBoxGuestStatistics +{ + /** Virtual CPU ID. */ + uint32_t u32CpuId; + /** Reported statistics. */ + uint32_t u32StatCaps; + /** Idle CPU load (0-100) for last interval. */ + uint32_t u32CpuLoad_Idle; + /** Kernel CPU load (0-100) for last interval. */ + uint32_t u32CpuLoad_Kernel; + /** User CPU load (0-100) for last interval. */ + uint32_t u32CpuLoad_User; + /** Nr of threads. */ + uint32_t u32Threads; + /** Nr of processes. */ + uint32_t u32Processes; + /** Nr of handles. */ + uint32_t u32Handles; + /** Memory load (0-100). */ + uint32_t u32MemoryLoad; + /** Page size of guest system. */ + uint32_t u32PageSize; + /** Total physical memory (in 4KB pages). */ + uint32_t u32PhysMemTotal; + /** Available physical memory (in 4KB pages). */ + uint32_t u32PhysMemAvail; + /** Ballooned physical memory (in 4KB pages). */ + uint32_t u32PhysMemBalloon; + /** Total number of committed memory (which is not necessarily in-use) (in 4KB pages). */ + uint32_t u32MemCommitTotal; + /** Total amount of memory used by the kernel (in 4KB pages). */ + uint32_t u32MemKernelTotal; + /** Total amount of paged memory used by the kernel (in 4KB pages). */ + uint32_t u32MemKernelPaged; + /** Total amount of nonpaged memory used by the kernel (in 4KB pages). */ + uint32_t u32MemKernelNonPaged; + /** Total amount of memory used for the system cache (in 4KB pages). */ + uint32_t u32MemSystemCache; + /** Pagefile size (in 4KB pages). */ + uint32_t u32PageFileSize; +} VBoxGuestStatistics; +AssertCompileSize(VBoxGuestStatistics, 19*4); + +/** @name Guest statistics values (VBoxGuestStatistics::u32StatCaps). + * @{ */ +#define VBOX_GUEST_STAT_CPU_LOAD_IDLE RT_BIT(0) +#define VBOX_GUEST_STAT_CPU_LOAD_KERNEL RT_BIT(1) +#define VBOX_GUEST_STAT_CPU_LOAD_USER RT_BIT(2) +#define VBOX_GUEST_STAT_THREADS RT_BIT(3) +#define VBOX_GUEST_STAT_PROCESSES RT_BIT(4) +#define VBOX_GUEST_STAT_HANDLES RT_BIT(5) +#define VBOX_GUEST_STAT_MEMORY_LOAD RT_BIT(6) +#define VBOX_GUEST_STAT_PHYS_MEM_TOTAL RT_BIT(7) +#define VBOX_GUEST_STAT_PHYS_MEM_AVAIL RT_BIT(8) +#define VBOX_GUEST_STAT_PHYS_MEM_BALLOON RT_BIT(9) +#define VBOX_GUEST_STAT_MEM_COMMIT_TOTAL RT_BIT(10) +#define VBOX_GUEST_STAT_MEM_KERNEL_TOTAL RT_BIT(11) +#define VBOX_GUEST_STAT_MEM_KERNEL_PAGED RT_BIT(12) +#define VBOX_GUEST_STAT_MEM_KERNEL_NONPAGED RT_BIT(13) +#define VBOX_GUEST_STAT_MEM_SYSTEM_CACHE RT_BIT(14) +#define VBOX_GUEST_STAT_PAGE_FILE_SIZE RT_BIT(15) +/** @} */ + +/** + * Guest statistics command structure. + * + * Used by VMMDevReq_ReportGuestStats. + */ +typedef struct +{ + /** Header. */ + VMMDevRequestHeader header; + /** Guest information. */ + VBoxGuestStatistics guestStats; +} VMMDevReportGuestStats; +AssertCompileSize(VMMDevReportGuestStats, 24+19*4); + + +/** Memory balloon change request structure. */ +#define VMMDEV_MAX_MEMORY_BALLOON(PhysMemTotal) ( (9 * (PhysMemTotal)) / 10 ) + +/** + * Poll for ballooning change request. + * + * Used by VMMDevReq_GetMemBalloonChangeRequest. + */ +typedef struct +{ + /** Header. */ + VMMDevRequestHeader header; + /** Balloon size in megabytes. */ + uint32_t cBalloonChunks; + /** Guest ram size in megabytes. */ + uint32_t cPhysMemChunks; + /** Setting this to VMMDEV_EVENT_BALLOON_CHANGE_REQUEST indicates that the + * request is a response to that event. + * (Don't confuse this with VMMDevReq_AcknowledgeEvents.) */ + uint32_t eventAck; +} VMMDevGetMemBalloonChangeRequest; +AssertCompileSize(VMMDevGetMemBalloonChangeRequest, 24+12); + + +/** + * Change the size of the balloon. + * + * Used by VMMDevReq_ChangeMemBalloon. + */ +typedef struct +{ + /** Header. */ + VMMDevRequestHeader header; + /** The number of pages in the array. */ + uint32_t cPages; + /** true = inflate, false = deflate. */ + uint32_t fInflate; + /** Physical address (RTGCPHYS) of each page, variable size. */ + RTGCPHYS aPhysPage[1]; +} VMMDevChangeMemBalloon; +AssertCompileSize(VMMDevChangeMemBalloon, 24+16); + +/** @name The ballooning chunk size which VMMDev works at. + * @{ */ +#define VMMDEV_MEMORY_BALLOON_CHUNK_PAGES (_1M/4096) +#define VMMDEV_MEMORY_BALLOON_CHUNK_SIZE (VMMDEV_MEMORY_BALLOON_CHUNK_PAGES*4096) +/** @} */ + + +/** + * Guest statistics interval change request structure. + * + * Used by VMMDevReq_GetStatisticsChangeRequest. + */ +typedef struct +{ + /** Header. */ + VMMDevRequestHeader header; + /** The interval in seconds. */ + uint32_t u32StatInterval; + /** Setting this to VMMDEV_EVENT_STATISTICS_INTERVAL_CHANGE_REQUEST indicates + * that the request is a response to that event. + * (Don't confuse this with VMMDevReq_AcknowledgeEvents.) */ + uint32_t eventAck; +} VMMDevGetStatisticsChangeRequest; +AssertCompileSize(VMMDevGetStatisticsChangeRequest, 24+8); + + +/** The size of a string field in the credentials request (including '\\0'). + * @see VMMDevCredentials */ +#define VMMDEV_CREDENTIALS_SZ_SIZE 128 + +/** + * Credentials request structure. + * + * Used by VMMDevReq_QueryCredentials. + */ +typedef struct +{ + /** Header. */ + VMMDevRequestHeader header; + /** IN/OUT: Request flags. */ + uint32_t u32Flags; + /** OUT: User name (UTF-8). */ + char szUserName[VMMDEV_CREDENTIALS_SZ_SIZE]; + /** OUT: Password (UTF-8). */ + char szPassword[VMMDEV_CREDENTIALS_SZ_SIZE]; + /** OUT: Domain name (UTF-8). */ + char szDomain[VMMDEV_CREDENTIALS_SZ_SIZE]; +} VMMDevCredentials; +AssertCompileSize(VMMDevCredentials, 24+4+3*128); + +/** @name Credentials request flag (VMMDevCredentials::u32Flags) + * @{ */ +/** query from host whether credentials are present */ +#define VMMDEV_CREDENTIALS_QUERYPRESENCE RT_BIT(1) +/** read credentials from host (can be combined with clear) */ +#define VMMDEV_CREDENTIALS_READ RT_BIT(2) +/** clear credentials on host (can be combined with read) */ +#define VMMDEV_CREDENTIALS_CLEAR RT_BIT(3) +/** read credentials for judgement in the guest */ +#define VMMDEV_CREDENTIALS_READJUDGE RT_BIT(8) +/** clear credentials for judegement on the host */ +#define VMMDEV_CREDENTIALS_CLEARJUDGE RT_BIT(9) +/** report credentials acceptance by guest */ +#define VMMDEV_CREDENTIALS_JUDGE_OK RT_BIT(10) +/** report credentials denial by guest */ +#define VMMDEV_CREDENTIALS_JUDGE_DENY RT_BIT(11) +/** report that no judgement could be made by guest */ +#define VMMDEV_CREDENTIALS_JUDGE_NOJUDGEMENT RT_BIT(12) + +/** flag telling the guest that credentials are present */ +#define VMMDEV_CREDENTIALS_PRESENT RT_BIT(16) +/** flag telling guest that local logons should be prohibited */ +#define VMMDEV_CREDENTIALS_NOLOCALLOGON RT_BIT(17) +/** @} */ + + +/** + * Seamless mode change request structure. + * + * Used by VMMDevReq_GetSeamlessChangeRequest. + */ +typedef struct +{ + /** Header. */ + VMMDevRequestHeader header; + + /** New seamless mode. */ + VMMDevSeamlessMode mode; + /** Setting this to VMMDEV_EVENT_SEAMLESS_MODE_CHANGE_REQUEST indicates + * that the request is a response to that event. + * (Don't confuse this with VMMDevReq_AcknowledgeEvents.) */ + uint32_t eventAck; +} VMMDevSeamlessChangeRequest; +AssertCompileSize(VMMDevSeamlessChangeRequest, 24+8); +AssertCompileMemberOffset(VMMDevSeamlessChangeRequest, eventAck, 24+4); + + +/** + * Display change request structure. + * + * Used by VMMDevReq_GetDisplayChangeRequest. + */ +typedef struct +{ + /** Header. */ + VMMDevRequestHeader header; + /** Horizontal pixel resolution (0 = do not change). */ + uint32_t xres; + /** Vertical pixel resolution (0 = do not change). */ + uint32_t yres; + /** Bits per pixel (0 = do not change). */ + uint32_t bpp; + /** Setting this to VMMDEV_EVENT_DISPLAY_CHANGE_REQUEST indicates + * that the request is a response to that event. + * (Don't confuse this with VMMDevReq_AcknowledgeEvents.) */ + uint32_t eventAck; +} VMMDevDisplayChangeRequest; +AssertCompileSize(VMMDevDisplayChangeRequest, 24+16); + + +/** + * Display change request structure, version 2. + * + * Used by VMMDevReq_GetDisplayChangeRequest2. + */ +typedef struct +{ + /** Header. */ + VMMDevRequestHeader header; + /** Horizontal pixel resolution (0 = do not change). */ + uint32_t xres; + /** Vertical pixel resolution (0 = do not change). */ + uint32_t yres; + /** Bits per pixel (0 = do not change). */ + uint32_t bpp; + /** Setting this to VMMDEV_EVENT_DISPLAY_CHANGE_REQUEST indicates + * that the request is a response to that event. + * (Don't confuse this with VMMDevReq_AcknowledgeEvents.) */ + uint32_t eventAck; + /** 0 for primary display, 1 for the first secondary, etc. */ + uint32_t display; +} VMMDevDisplayChangeRequest2; +AssertCompileSize(VMMDevDisplayChangeRequest2, 24+20); + + +/** + * Display change request structure, version Extended. + * + * Used by VMMDevReq_GetDisplayChangeRequestEx. + */ +typedef struct +{ + /** Header. */ + VMMDevRequestHeader header; + /** Horizontal pixel resolution (0 = do not change). */ + uint32_t xres; + /** Vertical pixel resolution (0 = do not change). */ + uint32_t yres; + /** Bits per pixel (0 = do not change). */ + uint32_t bpp; + /** Setting this to VMMDEV_EVENT_DISPLAY_CHANGE_REQUEST indicates + * that the request is a response to that event. + * (Don't confuse this with VMMDevReq_AcknowledgeEvents.) */ + uint32_t eventAck; + /** 0 for primary display, 1 for the first secondary, etc. */ + uint32_t display; + /** New OriginX of secondary virtual screen */ + uint32_t cxOrigin; + /** New OriginY of secondary virtual screen */ + uint32_t cyOrigin; + /** Change in origin of the secondary virtaul scree is + * required */ + bool fChangeOrigin; + /** secondary virtual screen enabled or disabled */ + bool fEnabled; +} VMMDevDisplayChangeRequestEx; +AssertCompileSize(VMMDevDisplayChangeRequestEx, 24+32); + + +/** + * Video mode supported request structure. + * + * Used by VMMDevReq_VideoModeSupported. + */ +typedef struct +{ + /** Header. */ + VMMDevRequestHeader header; + /** IN: Horizontal pixel resolution. */ + uint32_t width; + /** IN: Vertical pixel resolution. */ + uint32_t height; + /** IN: Bits per pixel. */ + uint32_t bpp; + /** OUT: Support indicator. */ + bool fSupported; +} VMMDevVideoModeSupportedRequest; +AssertCompileSize(VMMDevVideoModeSupportedRequest, 24+16); + +/** + * Video mode supported request structure for a specific display. + * + * Used by VMMDevReq_VideoModeSupported2. + */ +typedef struct +{ + /** Header. */ + VMMDevRequestHeader header; + /** IN: The guest display number. */ + uint32_t display; + /** IN: Horizontal pixel resolution. */ + uint32_t width; + /** IN: Vertical pixel resolution. */ + uint32_t height; + /** IN: Bits per pixel. */ + uint32_t bpp; + /** OUT: Support indicator. */ + bool fSupported; +} VMMDevVideoModeSupportedRequest2; +AssertCompileSize(VMMDevVideoModeSupportedRequest2, 24+20); + +/** + * Video modes height reduction request structure. + * + * Used by VMMDevReq_GetHeightReduction. + */ +typedef struct +{ + /** Header. */ + VMMDevRequestHeader header; + /** OUT: Height reduction in pixels. */ + uint32_t heightReduction; +} VMMDevGetHeightReductionRequest; +AssertCompileSize(VMMDevGetHeightReductionRequest, 24+4); + + +/** + * VRDP change request structure. + * + * Used by VMMDevReq_GetVRDPChangeRequest. + */ +typedef struct +{ + /** Header */ + VMMDevRequestHeader header; + /** Whether VRDP is active or not. */ + uint8_t u8VRDPActive; + /** The configured experience level for active VRDP. */ + uint32_t u32VRDPExperienceLevel; +} VMMDevVRDPChangeRequest; +AssertCompileSize(VMMDevVRDPChangeRequest, 24+8); +AssertCompileMemberOffset(VMMDevVRDPChangeRequest, u8VRDPActive, 24); +AssertCompileMemberOffset(VMMDevVRDPChangeRequest, u32VRDPExperienceLevel, 24+4); + +/** @name VRDP Experience level (VMMDevVRDPChangeRequest::u32VRDPExperienceLevel) + * @{ */ +#define VRDP_EXPERIENCE_LEVEL_ZERO 0 /**< Theming disabled. */ +#define VRDP_EXPERIENCE_LEVEL_LOW 1 /**< Full window dragging and desktop wallpaper disabled. */ +#define VRDP_EXPERIENCE_LEVEL_MEDIUM 2 /**< Font smoothing, gradients. */ +#define VRDP_EXPERIENCE_LEVEL_HIGH 3 /**< Animation effects disabled. */ +#define VRDP_EXPERIENCE_LEVEL_FULL 4 /**< Everything enabled. */ +/** @} */ + + +/** + * VBVA enable request structure. + * + * Used by VMMDevReq_VideoAccelEnable. + */ +typedef struct +{ + /** Header. */ + VMMDevRequestHeader header; + /** 0 - disable, !0 - enable. */ + uint32_t u32Enable; + /** The size of VBVAMEMORY::au8RingBuffer expected by driver. + * The host will refuse to enable VBVA if the size is not equal to + * VBVA_RING_BUFFER_SIZE. + */ + uint32_t cbRingBuffer; + /** Guest initializes the status to 0. Host sets appropriate VBVA_F_STATUS_ flags. */ + uint32_t fu32Status; +} VMMDevVideoAccelEnable; +AssertCompileSize(VMMDevVideoAccelEnable, 24+12); + +/** @name VMMDevVideoAccelEnable::fu32Status. + * @{ */ +#define VBVA_F_STATUS_ACCEPTED (0x01) +#define VBVA_F_STATUS_ENABLED (0x02) +/** @} */ + + +/** + * VBVA flush request structure. + * + * Used by VMMDevReq_VideoAccelFlush. + */ +typedef struct +{ + /** Header. */ + VMMDevRequestHeader header; +} VMMDevVideoAccelFlush; +AssertCompileSize(VMMDevVideoAccelFlush, 24); + + +/** + * VBVA set visible region request structure. + * + * Used by VMMDevReq_VideoSetVisibleRegion. + */ +typedef struct +{ + /** Header. */ + VMMDevRequestHeader header; + /** Number of rectangles */ + uint32_t cRect; + /** Rectangle array. + * @todo array is spelled aRects[1]. */ + RTRECT Rect; +} VMMDevVideoSetVisibleRegion; +AssertCompileSize(RTRECT, 16); +AssertCompileSize(VMMDevVideoSetVisibleRegion, 24+4+16); + +/** + * CPU event types. + */ +typedef enum +{ + VMMDevCpuStatusType_Invalid = 0, + VMMDevCpuStatusType_Disable = 1, + VMMDevCpuStatusType_Enable = 2, + VMMDevCpuStatusType_SizeHack = 0x7fffffff +} VMMDevCpuStatusType; + +/** + * CPU hotplug event status request. + */ +typedef struct +{ + /** Header. */ + VMMDevRequestHeader header; + /** Status type */ + VMMDevCpuStatusType enmStatusType; +} VMMDevCpuHotPlugStatusRequest; +AssertCompileSize(VMMDevCpuHotPlugStatusRequest, 24+4); + +/** + * Get the ID of the changed CPU and event type. + */ +typedef struct +{ + /** Header. */ + VMMDevRequestHeader header; + /** Event type */ + VMMDevCpuEventType enmEventType; + /** core id of the CPU changed */ + uint32_t idCpuCore; + /** package id of the CPU changed */ + uint32_t idCpuPackage; +} VMMDevGetCpuHotPlugRequest; +AssertCompileSize(VMMDevGetCpuHotPlugRequest, 24+4+4+4); + + +/** + * Shared region description + */ +typedef struct VMMDEVSHAREDREGIONDESC +{ + RTGCPTR64 GCRegionAddr; + uint32_t cbRegion; + uint32_t u32Alignment; +} VMMDEVSHAREDREGIONDESC; +AssertCompileSize(VMMDEVSHAREDREGIONDESC, 16); + +#define VMMDEVSHAREDREGIONDESC_MAX 32 + +/** + * Shared module registration + */ +typedef struct +{ + /** Header. */ + VMMDevRequestHeader header; + /** Shared module size. */ + uint32_t cbModule; + /** Number of included region descriptors */ + uint32_t cRegions; + /** Base address of the shared module. */ + RTGCPTR64 GCBaseAddr; + /** Guest OS type. */ + VBOXOSFAMILY enmGuestOS; + /** Alignment. */ + uint32_t u32Align; + /** Module name */ + char szName[128]; + /** Module version */ + char szVersion[16]; + /** Shared region descriptor(s). */ + VMMDEVSHAREDREGIONDESC aRegions[1]; +} VMMDevSharedModuleRegistrationRequest; +AssertCompileSize(VMMDevSharedModuleRegistrationRequest, 24+4+4+8+4+4+128+16+16); + + +/** + * Shared module unregistration + */ +typedef struct +{ + /** Header. */ + VMMDevRequestHeader header; + /** Shared module size. */ + uint32_t cbModule; + /** Align at 8 byte boundary. */ + uint32_t u32Alignment; + /** Base address of the shared module. */ + RTGCPTR64 GCBaseAddr; + /** Module name */ + char szName[128]; + /** Module version */ + char szVersion[16]; +} VMMDevSharedModuleUnregistrationRequest; +AssertCompileSize(VMMDevSharedModuleUnregistrationRequest, 24+4+4+8+128+16); + + +/** + * Shared module periodic check + */ +typedef struct +{ + /** Header. */ + VMMDevRequestHeader header; +} VMMDevSharedModuleCheckRequest; +AssertCompileSize(VMMDevSharedModuleCheckRequest, 24); + +/** + * Paging sharing enabled query + */ +typedef struct +{ + /** Header. */ + VMMDevRequestHeader header; + /** Enabled flag (out) */ + bool fEnabled; + /** Alignment */ + bool fAlignment[3]; +} VMMDevPageSharingStatusRequest; +AssertCompileSize(VMMDevPageSharingStatusRequest, 24+4); + + +/** + * Page sharing status query (debug build only) + */ +typedef struct +{ + /** Header. */ + VMMDevRequestHeader header; + /** Page address. */ + RTGCPTR GCPtrPage; + /** Page flags. */ + uint64_t uPageFlags; + /** Shared flag (out) */ + bool fShared; + /** Alignment */ + bool fAlignment[3]; +} VMMDevPageIsSharedRequest; + +/** + * Session id request structure. + * + * Used by VMMDevReq_GetSessionId. + */ +typedef struct +{ + /** Header */ + VMMDevRequestHeader header; + /** OUT: unique session id; the id will be different after each start, reset or restore of the VM */ + uint64_t idSession; +} VMMDevReqSessionId; +AssertCompileSize(VMMDevReqSessionId, 24+8); + + +/** + * Write Core Dump request. + * + * Used by VMMDevReq_WriteCoreDump. + */ +typedef struct +{ + /** Header. */ + VMMDevRequestHeader header; + /** Flags (reserved, MBZ). */ + uint32_t fFlags; +} VMMDevReqWriteCoreDump; +AssertCompileSize(VMMDevReqWriteCoreDump, 24+4); + +/** Heart beat check state structure. + * Used by VMMDevReq_HeartbeatConfigure. */ +typedef struct +{ + /** Header. */ + VMMDevRequestHeader header; + /** OUT: Guest heartbeat interval in nanosec. */ + uint64_t cNsInterval; + /** Heartbeat check flag. */ + bool fEnabled; +} VMMDevReqHeartbeat; +AssertCompileSize(VMMDevReqHeartbeat, 24+12); + + + +#ifdef VBOX_WITH_HGCM + +/** @name HGCM flags. + * @{ + */ +# define VBOX_HGCM_REQ_DONE RT_BIT_32(VBOX_HGCM_REQ_DONE_BIT) +# define VBOX_HGCM_REQ_DONE_BIT 0 +# define VBOX_HGCM_REQ_CANCELLED (0x2) +/** @} */ + +/** + * HGCM request header. + */ +typedef struct VMMDevHGCMRequestHeader +{ + /** Request header. */ + VMMDevRequestHeader header; + + /** HGCM flags. */ + uint32_t fu32Flags; + + /** Result code. */ + int32_t result; +} VMMDevHGCMRequestHeader; +AssertCompileSize(VMMDevHGCMRequestHeader, 24+8); + +/** + * HGCM connect request structure. + * + * Used by VMMDevReq_HGCMConnect. + */ +typedef struct +{ + /** HGCM request header. */ + VMMDevHGCMRequestHeader header; + + /** IN: Description of service to connect to. */ + HGCMServiceLocation loc; + + /** OUT: Client identifier assigned by local instance of HGCM. */ + uint32_t u32ClientID; +} VMMDevHGCMConnect; +AssertCompileSize(VMMDevHGCMConnect, 32+132+4); + + +/** + * HGCM disconnect request structure. + * + * Used by VMMDevReq_HGCMDisconnect. + */ +typedef struct +{ + /** HGCM request header. */ + VMMDevHGCMRequestHeader header; + + /** IN: Client identifier. */ + uint32_t u32ClientID; +} VMMDevHGCMDisconnect; +AssertCompileSize(VMMDevHGCMDisconnect, 32+4); + +/** + * HGCM parameter type. + */ +typedef enum +{ + VMMDevHGCMParmType_Invalid = 0, + VMMDevHGCMParmType_32bit = 1, + VMMDevHGCMParmType_64bit = 2, + VMMDevHGCMParmType_PhysAddr = 3, /**< @deprecated Doesn't work, use PageList. */ + VMMDevHGCMParmType_LinAddr = 4, /**< In and Out */ + VMMDevHGCMParmType_LinAddr_In = 5, /**< In (read; host<-guest) */ + VMMDevHGCMParmType_LinAddr_Out = 6, /**< Out (write; host->guest) */ + VMMDevHGCMParmType_LinAddr_Locked = 7, /**< Locked In and Out */ + VMMDevHGCMParmType_LinAddr_Locked_In = 8, /**< Locked In (read; host<-guest) */ + VMMDevHGCMParmType_LinAddr_Locked_Out = 9, /**< Locked Out (write; host->guest) */ + VMMDevHGCMParmType_PageList = 10, /**< Physical addresses of locked pages for a buffer. */ + VMMDevHGCMParmType_SizeHack = 0x7fffffff +} HGCMFunctionParameterType; +AssertCompileSize(HGCMFunctionParameterType, 4); + +# ifdef VBOX_WITH_64_BITS_GUESTS +/** + * HGCM function parameter, 32-bit client. + */ +typedef struct +{ + HGCMFunctionParameterType type; + union + { + uint32_t value32; + uint64_t value64; + struct + { + uint32_t size; + + union + { + RTGCPHYS32 physAddr; + RTGCPTR32 linearAddr; + } u; + } Pointer; + struct + { + uint32_t size; /**< Size of the buffer described by the page list. */ + uint32_t offset; /**< Relative to the request header, valid if size != 0. */ + } PageList; + } u; +# ifdef __cplusplus + void SetUInt32(uint32_t u32) + { + type = VMMDevHGCMParmType_32bit; + u.value64 = 0; /* init unused bits to 0 */ + u.value32 = u32; + } + + int GetUInt32(uint32_t *pu32) + { + if (type == VMMDevHGCMParmType_32bit) + { + *pu32 = u.value32; + return VINF_SUCCESS; + } + return VERR_INVALID_PARAMETER; + } + + void SetUInt64(uint64_t u64) + { + type = VMMDevHGCMParmType_64bit; + u.value64 = u64; + } + + int GetUInt64(uint64_t *pu64) + { + if (type == VMMDevHGCMParmType_64bit) + { + *pu64 = u.value64; + return VINF_SUCCESS; + } + return VERR_INVALID_PARAMETER; + } + + void SetPtr(void *pv, uint32_t cb) + { + type = VMMDevHGCMParmType_LinAddr; + u.Pointer.size = cb; + u.Pointer.u.linearAddr = (RTGCPTR32)(uintptr_t)pv; + } +# endif /* __cplusplus */ +} HGCMFunctionParameter32; +AssertCompileSize(HGCMFunctionParameter32, 4+8); + +/** + * HGCM function parameter, 64-bit client. + */ +typedef struct +{ + HGCMFunctionParameterType type; + union + { + uint32_t value32; + uint64_t value64; + struct + { + uint32_t size; + + union + { + RTGCPHYS64 physAddr; + RTGCPTR64 linearAddr; + } u; + } Pointer; + struct + { + uint32_t size; /**< Size of the buffer described by the page list. */ + uint32_t offset; /**< Relative to the request header, valid if size != 0. */ + } PageList; + } u; +# ifdef __cplusplus + void SetUInt32(uint32_t u32) + { + type = VMMDevHGCMParmType_32bit; + u.value64 = 0; /* init unused bits to 0 */ + u.value32 = u32; + } + + int GetUInt32(uint32_t *pu32) + { + if (type == VMMDevHGCMParmType_32bit) + { + *pu32 = u.value32; + return VINF_SUCCESS; + } + return VERR_INVALID_PARAMETER; + } + + void SetUInt64(uint64_t u64) + { + type = VMMDevHGCMParmType_64bit; + u.value64 = u64; + } + + int GetUInt64(uint64_t *pu64) + { + if (type == VMMDevHGCMParmType_64bit) + { + *pu64 = u.value64; + return VINF_SUCCESS; + } + return VERR_INVALID_PARAMETER; + } + + void SetPtr(void *pv, uint32_t cb) + { + type = VMMDevHGCMParmType_LinAddr; + u.Pointer.size = cb; + u.Pointer.u.linearAddr = (uintptr_t)pv; + } +# endif /** __cplusplus */ +} HGCMFunctionParameter64; +AssertCompileSize(HGCMFunctionParameter64, 4+12); + +/* Redefine the structure type for the guest code. */ +# ifndef VBOX_HGCM_HOST_CODE +# if ARCH_BITS == 64 +# define HGCMFunctionParameter HGCMFunctionParameter64 +# elif ARCH_BITS == 32 +# define HGCMFunctionParameter HGCMFunctionParameter32 +# else +# error "Unsupported sizeof (void *)" +# endif +# endif /* !VBOX_HGCM_HOST_CODE */ + +# else /* !VBOX_WITH_64_BITS_GUESTS */ + +/** + * HGCM function parameter, 32-bit client. + * + * @todo If this is the same as HGCMFunctionParameter32, why the duplication? + */ +typedef struct +{ + HGCMFunctionParameterType type; + union + { + uint32_t value32; + uint64_t value64; + struct + { + uint32_t size; + + union + { + RTGCPHYS32 physAddr; + RTGCPTR32 linearAddr; + } u; + } Pointer; + struct + { + uint32_t size; /**< Size of the buffer described by the page list. */ + uint32_t offset; /**< Relative to the request header, valid if size != 0. */ + } PageList; + } u; +# ifdef __cplusplus + void SetUInt32(uint32_t u32) + { + type = VMMDevHGCMParmType_32bit; + u.value64 = 0; /* init unused bits to 0 */ + u.value32 = u32; + } + + int GetUInt32(uint32_t *pu32) + { + if (type == VMMDevHGCMParmType_32bit) + { + *pu32 = u.value32; + return VINF_SUCCESS; + } + return VERR_INVALID_PARAMETER; + } + + void SetUInt64(uint64_t u64) + { + type = VMMDevHGCMParmType_64bit; + u.value64 = u64; + } + + int GetUInt64(uint64_t *pu64) + { + if (type == VMMDevHGCMParmType_64bit) + { + *pu64 = u.value64; + return VINF_SUCCESS; + } + return VERR_INVALID_PARAMETER; + } + + void SetPtr(void *pv, uint32_t cb) + { + type = VMMDevHGCMParmType_LinAddr; + u.Pointer.size = cb; + u.Pointer.u.linearAddr = (uintptr_t)pv; + } +# endif /* __cplusplus */ +} HGCMFunctionParameter; +AssertCompileSize(HGCMFunctionParameter, 4+8); +# endif /* !VBOX_WITH_64_BITS_GUESTS */ + +/** + * HGCM call request structure. + * + * Used by VMMDevReq_HGCMCall, VMMDevReq_HGCMCall32 and VMMDevReq_HGCMCall64. + */ +typedef struct +{ + /* request header */ + VMMDevHGCMRequestHeader header; + + /** IN: Client identifier. */ + uint32_t u32ClientID; + /** IN: Service function number. */ + uint32_t u32Function; + /** IN: Number of parameters. */ + uint32_t cParms; + /** Parameters follow in form: HGCMFunctionParameter aParms[X]; */ +} VMMDevHGCMCall; +AssertCompileSize(VMMDevHGCMCall, 32+12); + +/** @name Direction of data transfer (HGCMPageListInfo::flags). Bit flags. + * @{ */ +#define VBOX_HGCM_F_PARM_DIRECTION_NONE UINT32_C(0x00000000) +#define VBOX_HGCM_F_PARM_DIRECTION_TO_HOST UINT32_C(0x00000001) +#define VBOX_HGCM_F_PARM_DIRECTION_FROM_HOST UINT32_C(0x00000002) +#define VBOX_HGCM_F_PARM_DIRECTION_BOTH UINT32_C(0x00000003) +/** Macro for validating that the specified flags are valid. */ +#define VBOX_HGCM_F_PARM_ARE_VALID(fFlags) \ + ( (fFlags) > VBOX_HGCM_F_PARM_DIRECTION_NONE \ + && (fFlags) < VBOX_HGCM_F_PARM_DIRECTION_BOTH ) +/** @} */ + +/** + * VMMDevHGCMParmType_PageList points to this structure to actually describe the + * buffer. + */ +typedef struct +{ + uint32_t flags; /**< VBOX_HGCM_F_PARM_*. */ + uint16_t offFirstPage; /**< Offset in the first page where data begins. */ + uint16_t cPages; /**< Number of pages. */ + RTGCPHYS64 aPages[1]; /**< Page addresses. */ +} HGCMPageListInfo; +AssertCompileSize(HGCMPageListInfo, 4+2+2+8); + + +/** Get the pointer to the first parmater of a HGCM call request. */ +# define VMMDEV_HGCM_CALL_PARMS(a) ((HGCMFunctionParameter *)((uint8_t *)(a) + sizeof (VMMDevHGCMCall))) +/** Get the pointer to the first parmater of a 32-bit HGCM call request. */ +# define VMMDEV_HGCM_CALL_PARMS32(a) ((HGCMFunctionParameter32 *)((uint8_t *)(a) + sizeof (VMMDevHGCMCall))) + +# ifdef VBOX_WITH_64_BITS_GUESTS +/* Explicit defines for the host code. */ +# ifdef VBOX_HGCM_HOST_CODE +# define VMMDEV_HGCM_CALL_PARMS32(a) ((HGCMFunctionParameter32 *)((uint8_t *)(a) + sizeof (VMMDevHGCMCall))) +# define VMMDEV_HGCM_CALL_PARMS64(a) ((HGCMFunctionParameter64 *)((uint8_t *)(a) + sizeof (VMMDevHGCMCall))) +# endif /* VBOX_HGCM_HOST_CODE */ +# endif /* VBOX_WITH_64_BITS_GUESTS */ + +# define VBOX_HGCM_MAX_PARMS 32 + +/** + * HGCM cancel request structure. + * + * The Cancel request is issued using the same physical memory address as was + * used for the corresponding initial HGCMCall. + * + * Used by VMMDevReq_HGCMCancel. + */ +typedef struct +{ + /** Header. */ + VMMDevHGCMRequestHeader header; +} VMMDevHGCMCancel; +AssertCompileSize(VMMDevHGCMCancel, 32); + +/** + * HGCM cancel request structure, version 2. + * + * Used by VMMDevReq_HGCMCancel2. + * + * VINF_SUCCESS when cancelled. + * VERR_NOT_FOUND if the specified request cannot be found. + * VERR_INVALID_PARAMETER if the address is invalid valid. + */ +typedef struct +{ + /** Header. */ + VMMDevRequestHeader header; + /** The physical address of the request to cancel. */ + RTGCPHYS32 physReqToCancel; +} VMMDevHGCMCancel2; +AssertCompileSize(VMMDevHGCMCancel2, 24+4); + +#endif /* VBOX_WITH_HGCM */ + + +/** + * Inline helper to determine the request size for the given operation. + * Returns 0 if the given operation is not handled and/or supported. + * + * @returns Size. + * @param requestType The VMMDev request type. + */ +DECLINLINE(size_t) vmmdevGetRequestSize(VMMDevRequestType requestType) +{ + switch (requestType) + { + case VMMDevReq_GetMouseStatus: + case VMMDevReq_SetMouseStatus: + return sizeof(VMMDevReqMouseStatus); + case VMMDevReq_SetPointerShape: + return sizeof(VMMDevReqMousePointer); + case VMMDevReq_GetHostVersion: + return sizeof(VMMDevReqHostVersion); + case VMMDevReq_Idle: + return sizeof(VMMDevReqIdle); + case VMMDevReq_GetHostTime: + return sizeof(VMMDevReqHostTime); + case VMMDevReq_GetHypervisorInfo: + case VMMDevReq_SetHypervisorInfo: + return sizeof(VMMDevReqHypervisorInfo); + case VMMDevReq_RegisterPatchMemory: + case VMMDevReq_DeregisterPatchMemory: + return sizeof(VMMDevReqPatchMemory); + case VMMDevReq_SetPowerStatus: + return sizeof(VMMDevPowerStateRequest); + case VMMDevReq_AcknowledgeEvents: + return sizeof(VMMDevEvents); + case VMMDevReq_ReportGuestInfo: + return sizeof(VMMDevReportGuestInfo); + case VMMDevReq_ReportGuestInfo2: + return sizeof(VMMDevReportGuestInfo2); + case VMMDevReq_ReportGuestStatus: + return sizeof(VMMDevReportGuestStatus); + case VMMDevReq_ReportGuestUserState: + return sizeof(VMMDevReportGuestUserState); + case VMMDevReq_GetDisplayChangeRequest: + return sizeof(VMMDevDisplayChangeRequest); + case VMMDevReq_GetDisplayChangeRequest2: + return sizeof(VMMDevDisplayChangeRequest2); + case VMMDevReq_GetDisplayChangeRequestEx: + return sizeof(VMMDevDisplayChangeRequestEx); + case VMMDevReq_VideoModeSupported: + return sizeof(VMMDevVideoModeSupportedRequest); + case VMMDevReq_GetHeightReduction: + return sizeof(VMMDevGetHeightReductionRequest); + case VMMDevReq_ReportGuestCapabilities: + return sizeof(VMMDevReqGuestCapabilities); + case VMMDevReq_SetGuestCapabilities: + return sizeof(VMMDevReqGuestCapabilities2); +#ifdef VBOX_WITH_HGCM + case VMMDevReq_HGCMConnect: + return sizeof(VMMDevHGCMConnect); + case VMMDevReq_HGCMDisconnect: + return sizeof(VMMDevHGCMDisconnect); +#ifdef VBOX_WITH_64_BITS_GUESTS + case VMMDevReq_HGCMCall32: + return sizeof(VMMDevHGCMCall); + case VMMDevReq_HGCMCall64: + return sizeof(VMMDevHGCMCall); +#else + case VMMDevReq_HGCMCall: + return sizeof(VMMDevHGCMCall); +#endif /* VBOX_WITH_64_BITS_GUESTS */ + case VMMDevReq_HGCMCancel: + return sizeof(VMMDevHGCMCancel); +#endif /* VBOX_WITH_HGCM */ + case VMMDevReq_VideoAccelEnable: + return sizeof(VMMDevVideoAccelEnable); + case VMMDevReq_VideoAccelFlush: + return sizeof(VMMDevVideoAccelFlush); + case VMMDevReq_VideoSetVisibleRegion: + /* The original protocol didn't consider a guest with NO visible + * windows */ + return sizeof(VMMDevVideoSetVisibleRegion) - sizeof(RTRECT); + case VMMDevReq_GetSeamlessChangeRequest: + return sizeof(VMMDevSeamlessChangeRequest); + case VMMDevReq_QueryCredentials: + return sizeof(VMMDevCredentials); + case VMMDevReq_ReportGuestStats: + return sizeof(VMMDevReportGuestStats); + case VMMDevReq_GetMemBalloonChangeRequest: + return sizeof(VMMDevGetMemBalloonChangeRequest); + case VMMDevReq_GetStatisticsChangeRequest: + return sizeof(VMMDevGetStatisticsChangeRequest); + case VMMDevReq_ChangeMemBalloon: + return sizeof(VMMDevChangeMemBalloon); + case VMMDevReq_GetVRDPChangeRequest: + return sizeof(VMMDevVRDPChangeRequest); + case VMMDevReq_LogString: + return sizeof(VMMDevReqLogString); + case VMMDevReq_CtlGuestFilterMask: + return sizeof(VMMDevCtlGuestFilterMask); + case VMMDevReq_GetCpuHotPlugRequest: + return sizeof(VMMDevGetCpuHotPlugRequest); + case VMMDevReq_SetCpuHotPlugStatus: + return sizeof(VMMDevCpuHotPlugStatusRequest); + case VMMDevReq_RegisterSharedModule: + return sizeof(VMMDevSharedModuleRegistrationRequest); + case VMMDevReq_UnregisterSharedModule: + return sizeof(VMMDevSharedModuleUnregistrationRequest); + case VMMDevReq_CheckSharedModules: + return sizeof(VMMDevSharedModuleCheckRequest); + case VMMDevReq_GetPageSharingStatus: + return sizeof(VMMDevPageSharingStatusRequest); + case VMMDevReq_DebugIsPageShared: + return sizeof(VMMDevPageIsSharedRequest); + case VMMDevReq_GetSessionId: + return sizeof(VMMDevReqSessionId); + case VMMDevReq_HeartbeatConfigure: + return sizeof(VMMDevReqHeartbeat); + case VMMDevReq_GuestHeartbeat: + return sizeof(VMMDevRequestHeader); + default: + break; + } + + return 0; +} + + +/** + * Initializes a request structure. + * + * @returns VBox status code. + * @param req The request structure to initialize. + * @param type The request type. + */ +DECLINLINE(int) vmmdevInitRequest(VMMDevRequestHeader *req, VMMDevRequestType type) +{ + uint32_t requestSize; + if (!req) + return VERR_INVALID_PARAMETER; + requestSize = (uint32_t)vmmdevGetRequestSize(type); + if (!requestSize) + return VERR_INVALID_PARAMETER; + req->size = requestSize; + req->version = VMMDEV_REQUEST_HEADER_VERSION; + req->requestType = type; + req->rc = VERR_GENERAL_FAILURE; + req->reserved1 = 0; + req->reserved2 = 0; + return VINF_SUCCESS; +} + +/** @} */ + + +/** + * VBVA command header. + * + * @todo Where does this fit in? + */ +typedef struct VBVACMDHDR +{ + /** Coordinates of affected rectangle. */ + int16_t x; + int16_t y; + uint16_t w; + uint16_t h; +} VBVACMDHDR; +AssertCompileSize(VBVACMDHDR, 8); + +/** @name VBVA ring defines. + * + * The VBVA ring buffer is suitable for transferring large (< 2GB) amount of + * data. For example big bitmaps which do not fit to the buffer. + * + * Guest starts writing to the buffer by initializing a record entry in the + * aRecords queue. VBVA_F_RECORD_PARTIAL indicates that the record is being + * written. As data is written to the ring buffer, the guest increases off32End + * for the record. + * + * The host reads the aRecords on flushes and processes all completed records. + * When host encounters situation when only a partial record presents and + * cbRecord & ~VBVA_F_RECORD_PARTIAL >= VBVA_RING_BUFFER_SIZE - + * VBVA_RING_BUFFER_THRESHOLD, the host fetched all record data and updates + * off32Head. After that on each flush the host continues fetching the data + * until the record is completed. + * + */ +#define VBVA_RING_BUFFER_SIZE (_4M - _1K) +#define VBVA_RING_BUFFER_THRESHOLD (4 * _1K) + +#define VBVA_MAX_RECORDS (64) + +#define VBVA_F_MODE_ENABLED (0x00000001) +#define VBVA_F_MODE_VRDP (0x00000002) +#define VBVA_F_MODE_VRDP_RESET (0x00000004) +#define VBVA_F_MODE_VRDP_ORDER_MASK (0x00000008) + +#define VBVA_F_STATE_PROCESSING (0x00010000) + +#define VBVA_F_RECORD_PARTIAL (0x80000000) +/** @} */ + +/** + * VBVA record. + */ +typedef struct VBVARECORD +{ + /** The length of the record. Changed by guest. */ + uint32_t cbRecord; +} VBVARECORD; +AssertCompileSize(VBVARECORD, 4); + + +/** + * VBVA memory layout. + * + * This is a subsection of the VMMDevMemory structure. + */ +typedef struct VBVAMEMORY +{ + /** VBVA_F_MODE_*. */ + uint32_t fu32ModeFlags; + + /** The offset where the data start in the buffer. */ + uint32_t off32Data; + /** The offset where next data must be placed in the buffer. */ + uint32_t off32Free; + + /** The ring buffer for data. */ + uint8_t au8RingBuffer[VBVA_RING_BUFFER_SIZE]; + + /** The queue of record descriptions. */ + VBVARECORD aRecords[VBVA_MAX_RECORDS]; + uint32_t indexRecordFirst; + uint32_t indexRecordFree; + + /** RDP orders supported by the client. The guest reports only them + * and falls back to DIRTY rects for not supported ones. + * + * (1 << VBVA_VRDP_*) + */ + uint32_t fu32SupportedOrders; + +} VBVAMEMORY; +AssertCompileSize(VBVAMEMORY, 12 + (_4M-_1K) + 4*64 + 12); + + +/** + * The layout of VMMDEV RAM region that contains information for guest. + */ +typedef struct VMMDevMemory +{ + /** The size of this structure. */ + uint32_t u32Size; + /** The structure version. (VMMDEV_MEMORY_VERSION) */ + uint32_t u32Version; + + union + { + struct + { + /** Flag telling that VMMDev set the IRQ and acknowlegment is required */ + bool fHaveEvents; + } V1_04; + + struct + { + /** Pending events flags, set by host. */ + uint32_t u32HostEvents; + /** Mask of events the guest wants to see, set by guest. */ + uint32_t u32GuestEventMask; + } V1_03; + } V; + + VBVAMEMORY vbvaMemory; + +} VMMDevMemory; +AssertCompileSize(VMMDevMemory, 8+8 + (12 + (_4M-_1K) + 4*64 + 12) ); +AssertCompileMemberOffset(VMMDevMemory, vbvaMemory, 16); + +/** Version of VMMDevMemory structure (VMMDevMemory::u32Version). */ +#define VMMDEV_MEMORY_VERSION (1) + +/** @} */ + +RT_C_DECLS_END +#pragma pack() + +#endif + --- linux-raspi2-4.2.0.orig/ubuntu/vbox/include/VBox/VMMDev2.h +++ linux-raspi2-4.2.0/ubuntu/vbox/include/VBox/VMMDev2.h @@ -0,0 +1,114 @@ +/** @file + * Virtual Device for Guest <-> VMM/Host communication, Mixed Up Mess. (ADD,DEV) + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + +#ifndef ___VBox_VMMDev2_h +#define ___VBox_VMMDev2_h + +#include + +/** + * Seamless mode. + * + * Used by VbglR3SeamlessWaitEvent + * + * @ingroup grp_vmmdev_req + * + * @todo DARN! DARN! DARN! Who forgot to do the 32-bit hack here??? + * FIXME! XXX! + * + * We will now have to carefully check how our compilers have treated this + * flag. If any are compressing it into a byte type, we'll have to check + * how the request memory is initialized. If we are 104% sure it's ok to + * expand it, we'll expand it. If not, we must redefine the field to a + * uint8_t and a 3 byte padding. + */ +typedef enum +{ + VMMDev_Seamless_Disabled = 0, /**< normal mode; entire guest desktop displayed. */ + VMMDev_Seamless_Visible_Region = 1, /**< visible region mode; only top-level guest windows displayed. */ + VMMDev_Seamless_Host_Window = 2 /**< windowed mode; each top-level guest window is represented in a host window. */ +} VMMDevSeamlessMode; + +/** + * CPU event types. + * + * Used by VbglR3CpuHotplugWaitForEvent + * + * @ingroup grp_vmmdev_req + */ +typedef enum +{ + VMMDevCpuEventType_Invalid = 0, + VMMDevCpuEventType_None = 1, + VMMDevCpuEventType_Plug = 2, + VMMDevCpuEventType_Unplug = 3, + VMMDevCpuEventType_SizeHack = 0x7fffffff +} VMMDevCpuEventType; + +/** + * HGCM service location types. + * @ingroup grp_vmmdev_req + */ +typedef enum +{ + VMMDevHGCMLoc_Invalid = 0, + VMMDevHGCMLoc_LocalHost = 1, + VMMDevHGCMLoc_LocalHost_Existing = 2, + VMMDevHGCMLoc_SizeHack = 0x7fffffff +} HGCMServiceLocationType; +AssertCompileSize(HGCMServiceLocationType, 4); + +/** + * HGCM host service location. + * @ingroup grp_vmmdev_req + */ +typedef struct +{ + char achName[128]; /**< This is really szName. */ +} HGCMServiceLocationHost; +AssertCompileSize(HGCMServiceLocationHost, 128); + +/** + * HGCM service location. + * @ingroup grp_vmmdev_req + */ +typedef struct HGCMSERVICELOCATION +{ + /** Type of the location. */ + HGCMServiceLocationType type; + + union + { + HGCMServiceLocationHost host; + } u; +} HGCMServiceLocation; +AssertCompileSize(HGCMServiceLocation, 128+4); + +/* forward declarations: */ +struct VMMDevReqMousePointer; +struct VMMDevMemory; + +#endif + --- linux-raspi2-4.2.0.orig/ubuntu/vbox/include/VBox/cdefs.h +++ linux-raspi2-4.2.0/ubuntu/vbox/include/VBox/cdefs.h @@ -0,0 +1,447 @@ +/** @file + * VirtualBox - Common C and C++ definition. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + +#ifndef ___VBox_cdefs_h +#define ___VBox_cdefs_h + +#include + + +/** @def VBOX_WITH_STATISTICS + * When defined all statistics will be included in the build. + * This is enabled by default in all debug builds. + */ +#ifndef VBOX_WITH_STATISTICS +# ifdef DEBUG +# define VBOX_WITH_STATISTICS +# endif +#endif + +/** @def VBOX_STRICT + * Alias for RT_STRICT. + */ +#ifdef RT_STRICT +# ifndef VBOX_STRICT +# define VBOX_STRICT +# endif +#endif + + +/* + * Shut up DOXYGEN warnings and guide it properly thru the code. + */ +#ifdef DOXYGEN_RUNNING +#define VBOX_WITH_STATISTICS +#define VBOX_STRICT +#define IN_DBG +#define IN_DIS +#define IN_INTNET_R0 +#define IN_INTNET_R3 +#define IN_PCIRAW_R0 +#define IN_PCIRAW_R3 +#define IN_REM_R3 +#define IN_SUP_R0 +#define IN_SUP_R3 +#define IN_SUP_RC +#define IN_SUP_STATIC +#define IN_USBLIB +#define IN_VBOXDDU +#define IN_VMM_RC +#define IN_VMM_R0 +#define IN_VMM_R3 +#define IN_VMM_STATIC +#endif + + + + +/** @def VBOXCALL + * The standard calling convention for VBOX interfaces. + */ +#define VBOXCALL RTCALL + + + +/** @def IN_DIS + * Used to indicate whether we're inside the same link module as the + * disassembler. + */ +/** @def DISDECL(type) + * Disassembly export or import declaration. + * @param type The return type of the function declaration. + */ +#if defined(IN_DIS) +# define DISDECL(type) DECLEXPORT(type) VBOXCALL +#else +# define DISDECL(type) DECLIMPORT(type) VBOXCALL +#endif + + + +/** @def IN_DBG + * Used to indicate whether we're inside the same link module as the debugger + * console, gui, and related things (ring-3). + */ +/** @def DBGDECL(type) + * Debugger module export or import declaration. + * Functions declared using this exists only in R3 since the + * debugger modules is R3 only. + * @param type The return type of the function declaration. + */ +#if defined(IN_DBG_R3) || defined(IN_DBG) +# define DBGDECL(type) DECLEXPORT(type) VBOXCALL +#else +# define DBGDECL(type) DECLIMPORT(type) VBOXCALL +#endif + + + +/** @def IN_INTNET_R3 + * Used to indicate whether we're inside the same link module as the Ring-3 + * Internal Networking Service. + */ +/** @def INTNETR3DECL(type) + * Internal Networking Service export or import declaration. + * @param type The return type of the function declaration. + */ +#ifdef IN_INTNET_R3 +# define INTNETR3DECL(type) DECLEXPORT(type) VBOXCALL +#else +# define INTNETR3DECL(type) DECLIMPORT(type) VBOXCALL +#endif + +/** @def IN_INTNET_R0 + * Used to indicate whether we're inside the same link module as the R0 + * Internal Network Service. + */ +/** @def INTNETR0DECL(type) + * Internal Networking Service export or import declaration. + * @param type The return type of the function declaration. + */ +#ifdef IN_INTNET_R0 +# define INTNETR0DECL(type) DECLEXPORT(type) VBOXCALL +#else +# define INTNETR0DECL(type) DECLIMPORT(type) VBOXCALL +#endif + + + +/** @def IN_PCIRAW_R3 + * Used to indicate whether we're inside the same link module as the Ring-3 + * PCI passthrough support. + */ +/** @def PCIRAWR3DECL(type) + * PCI passthrough export or import declaration. + * @param type The return type of the function declaration. + */ +#ifdef IN_PCIRAW_R3 +# define PCIRAWR3DECL(type) DECLEXPORT(type) VBOXCALL +#else +# define PCIRAWR3DECL(type) DECLIMPORT(type) VBOXCALL +#endif + +/** @def IN_PCIRAW_R0 + * Used to indicate whether we're inside the same link module as the R0 + * PCI passthrough support. + */ +/** @def PCIRAWR0DECL(type) + * PCI passthroug export or import declaration. + * @param type The return type of the function declaration. + */ +#ifdef IN_PCIRAW_R0 +# define PCIRAWR0DECL(type) DECLEXPORT(type) VBOXCALL +#else +# define PCIRAWR0DECL(type) DECLIMPORT(type) VBOXCALL +#endif + + + +/** @def IN_REM_R3 + * Used to indicate whether we're inside the same link module as + * the HC Ring-3 Recompiled Execution Manager. + */ +/** @def REMR3DECL(type) + * Recompiled Execution Manager HC Ring-3 export or import declaration. + * @param type The return type of the function declaration. + */ +#ifdef IN_REM_R3 +# define REMR3DECL(type) DECLEXPORT(type) VBOXCALL +#else +# define REMR3DECL(type) DECLIMPORT(type) VBOXCALL +#endif + + + +/** @def IN_SUP_R3 + * Used to indicate whether we're inside the same link module as the Ring-3 + * Support Library or not. + */ +/** @def SUPR3DECL(type) + * Support library export or import declaration. + * @param type The return type of the function declaration. + */ +#ifdef IN_SUP_R3 +# ifdef IN_SUP_STATIC +# define SUPR3DECL(type) DECLHIDDEN(type) VBOXCALL +# else +# define SUPR3DECL(type) DECLEXPORT(type) VBOXCALL +# endif +#else +# ifdef IN_SUP_STATIC +# define SUPR3DECL(type) DECLHIDDEN(type) VBOXCALL +# else +# define SUPR3DECL(type) DECLIMPORT(type) VBOXCALL +# endif +#endif + +/** @def IN_SUP_R0 + * Used to indicate whether we're inside the same link module as the Ring-0 + * Support Library or not. + */ +/** @def IN_SUP_STATIC + * Used to indicate that the Support Library is built or used as a static + * library. + */ +/** @def SUPR0DECL(type) + * Support library export or import declaration. + * @param type The return type of the function declaration. + */ +#ifdef IN_SUP_R0 +# ifdef IN_SUP_STATIC +# define SUPR0DECL(type) DECLHIDDEN(type) VBOXCALL +# else +# define SUPR0DECL(type) DECLEXPORT(type) VBOXCALL +# endif +#else +# ifdef IN_SUP_STATIC +# define SUPR0DECL(type) DECLHIDDEN(type) VBOXCALL +# else +# define SUPR0DECL(type) DECLIMPORT(type) VBOXCALL +# endif +#endif + +/** @def IN_SUP_RC + * Used to indicate whether we're inside the same link module as the RC Support + * Library or not. + */ +/** @def SUPRCDECL(type) + * Support library export or import declaration. + * @param type The return type of the function declaration. + */ +#ifdef IN_SUP_RC +# define SUPRCDECL(type) DECLEXPORT(type) VBOXCALL +#else +# define SUPRCDECL(type) DECLIMPORT(type) VBOXCALL +#endif + +/** @def IN_SUP_R0 + * Used to indicate whether we're inside the same link module as the Ring-0 + * Support Library or not. + */ +/** @def SUPR0DECL(type) + * Support library export or import declaration. + * @param type The return type of the function declaration. + */ +#if defined(IN_SUP_R0) || defined(IN_SUP_R3) || defined(IN_SUP_RC) +# define SUPDECL(type) DECLEXPORT(type) VBOXCALL +#else +# define SUPDECL(type) DECLIMPORT(type) VBOXCALL +#endif + + + +/** @def IN_USBLIB + * Used to indicate whether we're inside the same link module as the USBLib. + */ +/** @def USBLIB_DECL + * USBLIB export or import declaration. + * @param type The return type of the function declaration. + */ +#ifdef IN_RING0 +# define USBLIB_DECL(type) type VBOXCALL +#elif defined(IN_USBLIB) +# define USBLIB_DECL(type) DECLEXPORT(type) VBOXCALL +#else +# define USBLIB_DECL(type) DECLIMPORT(type) VBOXCALL +#endif + + + +/** @def IN_VMM_STATIC + * Used to indicate that the virtual machine monitor is built or used as a + * static library. + */ +/** @def IN_VMM_R3 + * Used to indicate whether we're inside the same link module as the ring 3 part of the + * virtual machine monitor or not. + */ +/** @def VMMR3DECL + * Ring-3 VMM export or import declaration. + * @param type The return type of the function declaration. + */ +#ifdef IN_VMM_R3 +# ifdef IN_VMM_STATIC +# define VMMR3DECL(type) DECLHIDDEN(type) VBOXCALL +# else +# define VMMR3DECL(type) DECLEXPORT(type) VBOXCALL +# endif +#elif defined(IN_RING3) +# ifdef IN_VMM_STATIC +# define VMMR3DECL(type) DECLHIDDEN(type) VBOXCALL +# else +# define VMMR3DECL(type) DECLIMPORT(type) VBOXCALL +# endif +#else +# define VMMR3DECL(type) DECL_INVALID(type) +#endif + +/** @def IN_VMM_R0 + * Used to indicate whether we're inside the same link module as the ring-0 part + * of the virtual machine monitor or not. + */ +/** @def VMMR0DECL + * Ring-0 VMM export or import declaration. + * @param type The return type of the function declaration. + */ +#ifdef IN_VMM_R0 +# define VMMR0DECL(type) DECLEXPORT(type) VBOXCALL +#elif defined(IN_RING0) +# define VMMR0DECL(type) DECLIMPORT(type) VBOXCALL +#else +# define VMMR0DECL(type) DECL_INVALID(type) +#endif + +/** @def IN_VMM_RC + * Used to indicate whether we're inside the same link module as the raw-mode + * context part of the virtual machine monitor or not. + */ +/** @def VMMRCDECL + * Raw-mode context VMM export or import declaration. + * @param type The return type of the function declaration. + */ +#ifdef IN_VMM_RC +# define VMMRCDECL(type) DECLEXPORT(type) VBOXCALL +#elif defined(IN_RC) +# define VMMRCDECL(type) DECLIMPORT(type) VBOXCALL +#else +# define VMMRCDECL(type) DECL_INVALID(type) +#endif + +/** @def VMMRZDECL + * Ring-0 and Raw-mode context VMM export or import declaration. + * @param type The return type of the function declaration. + */ +#if defined(IN_VMM_R0) || defined(IN_VMM_RC) +# define VMMRZDECL(type) DECLEXPORT(type) VBOXCALL +#elif defined(IN_RING0) || defined(IN_RZ) +# define VMMRZDECL(type) DECLIMPORT(type) VBOXCALL +#else +# define VMMRZDECL(type) DECL_INVALID(type) +#endif + +/** @def VMMDECL + * VMM export or import declaration. + * @param type The return type of the function declaration. + */ +#ifdef IN_VMM_STATIC +# define VMMDECL(type) DECLHIDDEN(type) VBOXCALL +#elif defined(IN_VMM_R3) || defined(IN_VMM_R0) || defined(IN_VMM_RC) +# define VMMDECL(type) DECLEXPORT(type) VBOXCALL +#else +# define VMMDECL(type) DECLIMPORT(type) VBOXCALL +#endif + +/** @def VMM_INT_DECL + * VMM internal function. + * @param type The return type of the function declaration. + */ +#if defined(IN_VMM_R3) || defined(IN_VMM_R0) || defined(IN_VMM_RC) +# define VMM_INT_DECL(type) DECLHIDDEN(type) VBOXCALL +#else +# define VMM_INT_DECL(type) DECL_INVALID(type) +#endif + +/** @def VMMR3_INT_DECL + * VMM internal function, ring-3. + * @param type The return type of the function declaration. + */ +#ifdef IN_VMM_R3 +# define VMMR3_INT_DECL(type) DECLHIDDEN(type) VBOXCALL +#else +# define VMMR3_INT_DECL(type) DECL_INVALID(type) +#endif + +/** @def VMMR0_INT_DECL + * VMM internal function, ring-0. + * @param type The return type of the function declaration. + */ +#ifdef IN_VMM_R0 +# define VMMR0_INT_DECL(type) DECLHIDDEN(type) VBOXCALL +#else +# define VMMR0_INT_DECL(type) DECL_INVALID(type) +#endif + +/** @def VMMRC_INT_DECL + * VMM internal function, raw-mode context. + * @param type The return type of the function declaration. + */ +#ifdef IN_VMM_RC +# define VMMRC_INT_DECL(type) DECLHIDDEN(type) VBOXCALL +#else +# define VMMRC_INT_DECL(type) DECL_INVALID(type) +#endif + +/** @def VMMRZ_INT_DECL + * VMM internal function, ring-0 + raw-mode context. + * @param type The return type of the function declaration. + */ +#if defined(IN_VMM_RC) || defined(IN_VMM_R0) +# define VMMRZ_INT_DECL(type) DECLHIDDEN(type) VBOXCALL +#else +# define VMMRZ_INT_DECL(type) DECL_INVALID(type) +#endif + + + +/** @def IN_VBOXDDU + * Used to indicate whether we're inside the VBoxDDU shared object. + */ +/** @def VBOXDDU_DECL(type) + * VBoxDDU export or import (ring-3). + * @param type The return type of the function declaration. + */ +#ifdef IN_VBOXDDU +# ifdef IN_VBOXDDU_STATIC +# define VBOXDDU_DECL(type) type +# else +# define VBOXDDU_DECL(type) DECLEXPORT(type) VBOXCALL +# endif +#else +# define VBOXDDU_DECL(type) DECLIMPORT(type) VBOXCALL +#endif + + +#endif + --- linux-raspi2-4.2.0.orig/ubuntu/vbox/include/VBox/err.h +++ linux-raspi2-4.2.0/ubuntu/vbox/include/VBox/err.h @@ -0,0 +1,2680 @@ +/** @file + * VirtualBox Status Codes. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + +#ifndef ___VBox_err_h +#define ___VBox_err_h + +#include +#include + + +/** @defgroup grp_err Error Codes + * @{ + */ + +/* SED-START */ + +/** @name Misc. Status Codes + * @{ + */ +/** Failed to allocate VM memory. */ +#define VERR_NO_VM_MEMORY (-1000) +/** RC is toasted and the VMM should be terminated at once, but no need to + * panic about it :-) */ +#define VERR_DONT_PANIC (-1001) +/** Unsupported CPU. */ +#define VERR_UNSUPPORTED_CPU (-1002) +/** Unsupported CPU mode. */ +#define VERR_UNSUPPORTED_CPU_MODE (-1003) +/** Page not present. */ +#define VERR_PAGE_NOT_PRESENT (-1004) +/** Invalid/Corrupted configuration file. */ +#define VERR_CFG_INVALID_FORMAT (-1005) +/** No configuration value exists. */ +#define VERR_CFG_NO_VALUE (-1006) +/** Selector not present. */ +#define VERR_SELECTOR_NOT_PRESENT (-1007) +/** Not code selector. */ +#define VERR_NOT_CODE_SELECTOR (-1008) +/** Not data selector. */ +#define VERR_NOT_DATA_SELECTOR (-1009) +/** Out of selector bounds. */ +#define VERR_OUT_OF_SELECTOR_BOUNDS (-1010) +/** Invalid selector. Usually beyond table limits. */ +#define VERR_INVALID_SELECTOR (-1011) +/** Invalid requested privilege level. */ +#define VERR_INVALID_RPL (-1012) +/** PML4 entry not present. */ +#define VERR_PAGE_MAP_LEVEL4_NOT_PRESENT (-1013) +/** Page directory pointer not present. */ +#define VERR_PAGE_DIRECTORY_PTR_NOT_PRESENT (-1014) +/** Raw mode doesn't support SMP. */ +#define VERR_RAW_MODE_INVALID_SMP (-1015) +/** Invalid VM handle. */ +#define VERR_INVALID_VM_HANDLE (-1016) +/** Invalid VM handle. */ +#define VERR_INVALID_VMCPU_HANDLE (-1017) +/** Invalid Virtual CPU ID. */ +#define VERR_INVALID_CPU_ID (-1018) +/** Too many VCPUs. */ +#define VERR_TOO_MANY_CPUS (-1019) +/** The service was disabled on the host. + * Returned by pfnInit in VBoxService to indicated a non-fatal error that + * should results in the particular service being disabled. */ +#define VERR_SERVICE_DISABLED (-1020) +/** The requested feature is not supported in raw-mode. */ +#define VERR_NOT_SUP_IN_RAW_MODE (-1021) +/** Invalid CPU index. */ +#define VERR_INVALID_CPU_INDEX (-1022) +/** This VirtualBox build does not support raw-mode. */ +#define VERR_RAW_MODE_NOT_SUPPORTED (-1023) +/** @} */ + + +/** @name Execution Monitor/Manager (EM) Status Codes + * + * The order of the status codes between VINF_EM_FIRST and VINF_EM_LAST + * are of vital importance. The lower the number the higher importance + * as a scheduling instruction. + * @{ + */ +/** First scheduling related status code. */ +#define VINF_EM_FIRST 1100 +/** Indicating that the VM is being terminated and that the execution + * shall stop. */ +#define VINF_EM_TERMINATE 1100 +/** Hypervisor code was stepped. + * EM will first send this to the debugger, and if the issue isn't + * resolved there it will enter guru meditation. */ +#define VINF_EM_DBG_HYPER_STEPPED 1101 +/** Hit a breakpoint in the hypervisor code, + * EM will first send this to the debugger, and if the issue isn't + * resolved there it will enter guru meditation. */ +#define VINF_EM_DBG_HYPER_BREAKPOINT 1102 +/** Hit a possible assertion in the hypervisor code, + * EM will first send this to the debugger, and if the issue isn't + * resolved there it will enter guru meditation. */ +#define VINF_EM_DBG_HYPER_ASSERTION 1103 +/** Indicating that the VM should be suspended for debugging because + * the developer wants to inspect the VM state. */ +#define VINF_EM_DBG_STOP 1105 +/** Indicating success single stepping and that EM should report that + * event to the debugger. */ +#define VINF_EM_DBG_STEPPED 1106 +/** Indicating that a breakpoint was hit and that EM should notify the debugger + * and in the event there is no debugger fail fatally. */ +#define VINF_EM_DBG_BREAKPOINT 1107 +/** Indicating that EM should single step an instruction. + * The instruction is stepped in the current execution mode (RAW/REM). */ +#define VINF_EM_DBG_STEP 1108 +/** Indicating that the VM is being turned off and that the EM should + * exit to the VM awaiting the destruction request. */ +#define VINF_EM_OFF 1109 +/** Indicating that the VM has been suspended and that the thread + * should wait for request telling it what to do next. */ +#define VINF_EM_SUSPEND 1110 +/** Indicating that the VM has been reset and that scheduling goes + * back to startup defaults. */ +#define VINF_EM_RESET 1111 +/** Indicating that the VM has executed a halt instruction and that + * the emulation thread should wait for an interrupt before resuming + * execution. */ +#define VINF_EM_HALT 1112 +/** Indicating that the VM has been resumed and that the thread should + * start executing. */ +#define VINF_EM_RESUME 1113 +/** Indicating that we've got an out-of-memory condition and that we need + * to take the appropriate actions to deal with this. + * @remarks It might seem odd at first that this has lower priority than VINF_EM_HALT, + * VINF_EM_SUSPEND, and VINF_EM_RESUME. The reason is that these events are + * vital to correctly operating the VM. Also, they can't normally occur together + * with an out-of-memory condition, and even if that should happen the condition + * will be rediscovered before executing any more code. */ +#define VINF_EM_NO_MEMORY 1114 +/** The fatal variant of VINF_EM_NO_MEMORY. */ +#define VERR_EM_NO_MEMORY (-1114) +/** Indicating that a rescheduling to recompiled execution. + * Typically caused by raw-mode executing code which is difficult/slow + * to virtualize rawly. + * @remarks Important to have a higher priority (lower number) than the other rescheduling status codes. */ +#define VINF_EM_RESCHEDULE_REM 1115 +/** Indicating that a rescheduling to vmx-mode execution. + * Typically caused by REM detecting that hardware-accelerated raw-mode execution is possible. */ +#define VINF_EM_RESCHEDULE_HM 1116 +/** Indicating that a rescheduling to raw-mode execution. + * Typically caused by REM detecting that raw-mode execution is possible. + * @remarks Important to have a higher priority (lower number) than VINF_EM_RESCHEDULE. */ +#define VINF_EM_RESCHEDULE_RAW 1117 +/** Indicating that a rescheduling now is required. Typically caused by + * interrupts having changed the EIP. */ +#define VINF_EM_RESCHEDULE 1118 +/** PARAV call */ +#define VINF_EM_RESCHEDULE_PARAV 1119 +/** Go back into wait for SIPI mode */ +#define VINF_EM_WAIT_SIPI 1120 +/** Last scheduling related status code. (inclusive) */ +#define VINF_EM_LAST 1120 + +/** Reason for leaving RC: Guest trap which couldn't be handled in RC. + * The trap is generally forwarded to the REM and executed there. */ +#define VINF_EM_RAW_GUEST_TRAP 1121 +/** Reason for leaving RC: Interrupted by external interrupt. + * The interrupt needed to be handled by the host OS. */ +#define VINF_EM_RAW_INTERRUPT 1122 +/** Reason for leaving RC: Interrupted by external interrupt while in hypervisor + * code. The interrupt needed to be handled by the host OS and hypervisor + * execution must be resumed. VM state is not complete at this point. */ +#define VINF_EM_RAW_INTERRUPT_HYPER 1123 +/** Reason for leaving RC: A Ring switch was attempted. + * Normal cause of action is to execute this in REM. */ +#define VINF_EM_RAW_RING_SWITCH 1124 +/** Reason for leaving RC: A Ring switch was attempted using software interrupt. + * Normal cause of action is to execute this in REM. */ +#define VINF_EM_RAW_RING_SWITCH_INT 1125 +/** Reason for leaving RC: A privileged instruction was attempted executed. + * Normal cause of action is to execute this in REM. */ +#define VINF_EM_RAW_EXCEPTION_PRIVILEGED 1126 + +/** Reason for leaving RZ: Emulate instruction. */ +#define VINF_EM_RAW_EMULATE_INSTR 1127 +/** Reason for leaving RC: Unhandled TSS write. + * Recompiler gets control. */ +#define VINF_EM_RAW_EMULATE_INSTR_TSS_FAULT 1128 +/** Reason for leaving RC: Unhandled LDT write. + * Recompiler gets control. */ +#define VINF_EM_RAW_EMULATE_INSTR_LDT_FAULT 1129 +/** Reason for leaving RC: Unhandled IDT write. + * Recompiler gets control. */ +#define VINF_EM_RAW_EMULATE_INSTR_IDT_FAULT 1130 +/** Reason for leaving RC: Partly handled GDT write. + * Recompiler gets control. */ +#define VINF_EM_RAW_EMULATE_INSTR_GDT_FAULT 1131 +/** Reason for leaving RC: jump inside generated patch jump. + * Fatal error. */ +#define VERR_EM_RAW_PATCH_CONFLICT (-1133) +/** Reason for leaving RZ: Ring-3 operation pending. */ +#define VINF_EM_RAW_TO_R3 1135 +/** Reason for leaving RZ: Timer pending. */ +#define VINF_EM_RAW_TIMER_PENDING 1136 +/** Reason for leaving RC: Interrupt pending (guest). */ +#define VINF_EM_RAW_INTERRUPT_PENDING 1137 +/** Reason for leaving RC: Encountered a stale selector. */ +#define VINF_EM_RAW_STALE_SELECTOR 1138 +/** Reason for leaving RC: The IRET resuming guest code trapped. */ +#define VINF_EM_RAW_IRET_TRAP 1139 +/** Reason for leaving RC: Emulate (MM)IO intensive code in the recompiler. */ +#define VINF_EM_RAW_EMULATE_IO_BLOCK 1140 +/** The interpreter was unable to deal with the instruction at hand. */ +#define VERR_EM_INTERPRETER (-1148) +/** Internal EM error caused by an unknown warning or informational status code. */ +#define VERR_EM_INTERNAL_ERROR (-1149) +/** Pending VM request packet. */ +#define VINF_EM_PENDING_REQUEST 1150 +/** Start instruction stepping (debug only). */ +#define VINF_EM_RAW_EMULATE_DBG_STEP 1151 +/** Patch TPR access instruction. */ +#define VINF_EM_HM_PATCH_TPR_INSTR 1152 +/** Unexpected guest mapping conflict detected. */ +#define VERR_EM_UNEXPECTED_MAPPING_CONFLICT (-1154) +/** Reason for leaving RC: A triple-fault condition. Currently, causes + * a guru meditation. */ +#define VINF_EM_TRIPLE_FAULT 1155 +/** The specified execution engine cannot execute guest code in the current + * state. */ +#define VERR_EM_CANNOT_EXEC_GUEST (-1156) +/** Reason for leaving RC: Inject a TRPM event. */ +#define VINF_EM_RAW_INJECT_TRPM_EVENT 1157 +/** @} */ + + +/** @name Debugging Facility (DBGF) DBGF Status Codes + * @{ + */ +/** The function called requires the caller to be attached as a + * debugger to the VM. */ +#define VERR_DBGF_NOT_ATTACHED (-1200) +/** Someone (including the caller) was already attached as + * debugger to the VM. */ +#define VERR_DBGF_ALREADY_ATTACHED (-1201) +/** Tried to halt a debugger which was already halted. + * (This is a warning and not an error.) */ +#define VWRN_DBGF_ALREADY_HALTED 1202 +/** The DBGF has no more free breakpoint slots. */ +#define VERR_DBGF_NO_MORE_BP_SLOTS (-1203) +/** The DBGF couldn't find the specified breakpoint. */ +#define VERR_DBGF_BP_NOT_FOUND (-1204) +/** Attempted to enabled a breakpoint which was already enabled. */ +#define VINF_DBGF_BP_ALREADY_ENABLED 1205 +/** Attempted to disabled a breakpoint which was already disabled. */ +#define VINF_DBGF_BP_ALREADY_DISABLED 1206 +/** The breakpoint already exists. */ +#define VINF_DBGF_BP_ALREADY_EXIST 1207 +/** The byte string was not found. */ +#define VERR_DBGF_MEM_NOT_FOUND (-1208) +/** The OS was not detected. */ +#define VERR_DBGF_OS_NOT_DETCTED (-1209) +/** The OS was not detected. */ +#define VINF_DBGF_OS_NOT_DETCTED 1209 +/** The specified register was not found. */ +#define VERR_DBGF_REGISTER_NOT_FOUND (-1210) +/** The value was truncated to fit. + * For queries this means that the register is wider than the queried value. + * For setters this means that the value is wider than the register. */ +#define VINF_DBGF_TRUNCATED_REGISTER 1211 +/** The value was zero extended to fit. + * For queries this means that the register is narrower than the queried value. + * For setters this means that the value is narrower than the register. */ +#define VINF_DBGF_ZERO_EXTENDED_REGISTER 1212 +/** The requested type conversion was not supported. */ +#define VERR_DBGF_UNSUPPORTED_CAST (-1213) +/** The register is read-only and cannot be modified. */ +#define VERR_DBGF_READ_ONLY_REGISTER (-1214) +/** Internal processing error \#1 in the DBGF register code. */ +#define VERR_DBGF_REG_IPE_1 (-1215) +/** Internal processing error \#2 in the DBGF register code. */ +#define VERR_DBGF_REG_IPE_2 (-1216) +/** Unhandled \#DB in hypervisor code. */ +#define VERR_DBGF_HYPER_DB_XCPT (-1217) +/** Internal processing error \#1 in the DBGF stack code. */ +#define VERR_DBGF_STACK_IPE_1 (-1218) +/** Internal processing error \#2 in the DBGF stack code. */ +#define VERR_DBGF_STACK_IPE_2 (-1219) +/** No trace buffer available, please change the VM config. */ +#define VERR_DBGF_NO_TRACE_BUFFER (-1220) +/** @} */ + + +/** @name Patch Manager (PATM) Status Codes + * @{ + */ +/** Non fatal Patch Manager analysis phase warning */ +#define VWRN_CONTINUE_ANALYSIS 1400 +/** Non fatal Patch Manager recompile phase warning (mapped to VWRN_CONTINUE_ANALYSIS). */ +#define VWRN_CONTINUE_RECOMPILE VWRN_CONTINUE_ANALYSIS +/** Continue search (mapped to VWRN_CONTINUE_ANALYSIS). */ +#define VWRN_PATM_CONTINUE_SEARCH VWRN_CONTINUE_ANALYSIS +/** Patch installation refused (patch too complex or unsupported instructions ) */ +#define VERR_PATCHING_REFUSED (-1401) +/** Unable to find patch */ +#define VERR_PATCH_NOT_FOUND (-1402) +/** Patch disabled */ +#define VERR_PATCH_DISABLED (-1403) +/** Patch enabled */ +#define VWRN_PATCH_ENABLED 1404 +/** Patch was already disabled */ +#define VERR_PATCH_ALREADY_DISABLED (-1405) +/** Patch was already enabled */ +#define VERR_PATCH_ALREADY_ENABLED (-1406) +/** Patch was removed. */ +#define VWRN_PATCH_REMOVED 1407 + +/** Reason for leaving RC: \#GP with EIP pointing to patch code. */ +#define VINF_PATM_PATCH_TRAP_GP 1408 +/** First leave RC code. */ +#define VINF_PATM_LEAVE_RC_FIRST VINF_PATM_PATCH_TRAP_GP +/** Reason for leaving RC: \#PF with EIP pointing to patch code. */ +#define VINF_PATM_PATCH_TRAP_PF 1409 +/** Reason for leaving RC: int3 with EIP pointing to patch code. */ +#define VINF_PATM_PATCH_INT3 1410 +/** Reason for leaving RC: \#PF for monitored patch page. */ +#define VINF_PATM_CHECK_PATCH_PAGE 1411 +/** Reason for leaving RC: duplicate instruction called at current eip. */ +#define VINF_PATM_DUPLICATE_FUNCTION 1412 +/** Execute one instruction with the recompiler */ +#define VINF_PATCH_EMULATE_INSTR 1413 +/** Reason for leaving RC: attempt to patch MMIO write. */ +#define VINF_PATM_HC_MMIO_PATCH_WRITE 1414 +/** Reason for leaving RC: attempt to patch MMIO read. */ +#define VINF_PATM_HC_MMIO_PATCH_READ 1415 +/** Reason for leaving RC: pending irq after iret that sets IF. */ +#define VINF_PATM_PENDING_IRQ_AFTER_IRET 1416 +/** Last leave RC code. */ +#define VINF_PATM_LEAVE_RC_LAST VINF_PATM_PENDING_IRQ_AFTER_IRET + +/** No conflicts to resolve */ +#define VERR_PATCH_NO_CONFLICT (-1425) +/** Detected unsafe code for patching */ +#define VERR_PATM_UNSAFE_CODE (-1426) +/** Terminate search branch */ +#define VWRN_PATCH_END_BRANCH 1427 +/** Already patched */ +#define VERR_PATM_ALREADY_PATCHED (-1428) +/** Spinlock detection failed. */ +#define VINF_PATM_SPINLOCK_FAILED (1429) +/** Continue execution after patch trap. */ +#define VINF_PATCH_CONTINUE (1430) +/** The patch manager is not used because we're using HM and VT-x/AMD-V. */ +#define VERR_PATM_HM_IPE (-1431) +/** Unexpected trap in patch code. */ +#define VERR_PATM_IPE_TRAP_IN_PATCH_CODE (-1432) + +/** @} */ + + +/** @name Code Scanning and Analysis Manager (CSAM) Status Codes + * @{ + */ +/** Trap not handled */ +#define VWRN_CSAM_TRAP_NOT_HANDLED 1500 +/** Patch installed */ +#define VWRN_CSAM_INSTRUCTION_PATCHED 1501 +/** Page record not found */ +#define VWRN_CSAM_PAGE_NOT_FOUND 1502 +/** Reason for leaving RC: CSAM wants perform a task in ring-3. */ +#define VINF_CSAM_PENDING_ACTION 1503 +/** The CSAM is not used because we're using HM and VT-x/AMD-V. */ +#define VERR_CSAM_HM_IPE (-1504) +/** @} */ + + +/** @name Page Monitor/Manager (PGM) Status Codes + * @{ + */ +/** Attempt to create a GC mapping which conflicts with an existing mapping. */ +#define VERR_PGM_MAPPING_CONFLICT (-1600) +/** The physical handler range has no corresponding RAM range. + * If this is MMIO, see todo above the return. If not MMIO, then it's + * someone else's fault... */ +#define VERR_PGM_HANDLER_PHYSICAL_NO_RAM_RANGE (-1601) +/** Attempt to register an access handler for a virtual range of which a part + * was already handled. */ +#define VERR_PGM_HANDLER_VIRTUAL_CONFLICT (-1602) +/** Attempt to register an access handler for a physical range of which a part + * was already handled. */ +#define VERR_PGM_HANDLER_PHYSICAL_CONFLICT (-1603) +/** Invalid page directory specified to PGM. */ +#define VERR_PGM_INVALID_PAGE_DIRECTORY (-1604) +/** Invalid GC physical address. */ +#define VERR_PGM_INVALID_GC_PHYSICAL_ADDRESS (-1605) +/** Invalid GC physical range. Usually used when a specified range crosses + * a RAM region boundary. */ +#define VERR_PGM_INVALID_GC_PHYSICAL_RANGE (-1606) +/** Specified access handler was not found. */ +#define VERR_PGM_HANDLER_NOT_FOUND (-1607) +/** Attempt to register a RAM range of which parts are already + * covered by existing RAM ranges. */ +#define VERR_PGM_RAM_CONFLICT (-1608) +/** Failed to add new mappings because the current mappings are fixed + * in guest os memory. */ +#define VERR_PGM_MAPPINGS_FIXED (-1609) +/** Failed to fix mappings because of a conflict with the intermediate code. */ +#define VERR_PGM_MAPPINGS_FIX_CONFLICT (-1610) +/** Failed to fix mappings because a mapping rejected the address. */ +#define VERR_PGM_MAPPINGS_FIX_REJECTED (-1611) +/** Failed to fix mappings because the proposed memory area was to small. */ +#define VERR_PGM_MAPPINGS_FIX_TOO_SMALL (-1612) +/** Reason for leaving RZ: The urge to syncing CR3. */ +#define VINF_PGM_SYNC_CR3 1613 +/** Page not marked for dirty bit tracking */ +#define VINF_PGM_NO_DIRTY_BIT_TRACKING 1614 +/** Page fault caused by dirty bit tracking; corrected */ +#define VINF_PGM_HANDLED_DIRTY_BIT_FAULT 1615 +/** Go ahead with the default Read/Write operation. + * This is returned by a R3 physical or virtual handler when it wants the + * PGMPhys[Read|Write] routine do the reading/writing. */ +#define VINF_PGM_HANDLER_DO_DEFAULT 1616 +/** The paging mode of the host is not supported yet. */ +#define VERR_PGM_UNSUPPORTED_HOST_PAGING_MODE (-1617) +/** The physical guest page is a reserved/MMIO page and does not have any HC + * address. */ +#define VERR_PGM_PHYS_PAGE_RESERVED (-1618) +/** No page directory available for the hypervisor. */ +#define VERR_PGM_NO_HYPERVISOR_ADDRESS (-1619) +/** The shadow page pool was flushed. + * This means that a global CR3 sync was flagged. Anyone receiving this kind of status + * will have to get down to a SyncCR3 ASAP. See also VINF_PGM_SYNC_CR3. */ +#define VERR_PGM_POOL_FLUSHED (-1620) +/** The shadow page pool was cleared. + * This is a error code internal to the shadow page pool, it will be + * converted to a VERR_PGM_POOL_FLUSHED before leaving the pool code. */ +#define VERR_PGM_POOL_CLEARED (-1621) +/** The returned shadow page is cached. */ +#define VINF_PGM_CACHED_PAGE 1622 +/** Returned by handler registration, modification and deregistration + * when the shadow PTs could be updated because the guest page + * aliased or/and mapped by multiple PTs. */ +#define VINF_PGM_GCPHYS_ALIASED 1623 +/** Reason for leaving RC: Paging mode changed. + * PGMChangeMode() uses this to force a switch to R3 so it can safely deal with + * a mode switch. */ +#define VINF_PGM_CHANGE_MODE 1624 +/** SyncPage modified the PDE. + * This is an internal status code used to communicate back to the \#PF handler + * that the PDE was (probably) marked not-present and it should restart the instruction. */ +#define VINF_PGM_SYNCPAGE_MODIFIED_PDE 1625 +/** Physical range crosses dynamic ram chunk boundary; translation to HC ptr not safe. */ +#define VERR_PGM_GCPHYS_RANGE_CROSSES_BOUNDARY (-1626) +/** Conflict between the core memory and the intermediate paging context, try again. + * There are some very special conditions applying to the intermediate paging context + * (used during the world switches), and some times we continuously run into these + * when asking the host kernel for memory during VM init. Let us know if you run into + * this and we'll adjust the code so it tries harder to avoid it. + */ +#define VERR_PGM_INTERMEDIATE_PAGING_CONFLICT (-1627) +/** The shadow paging mode is not supported yet. */ +#define VERR_PGM_UNSUPPORTED_SHADOW_PAGING_MODE (-1628) +/** The dynamic mapping cache for physical memory failed. */ +#define VERR_PGM_DYNMAP_FAILED (-1629) +/** The auto usage cache for the dynamic mapping set is full. */ +#define VERR_PGM_DYNMAP_FULL_SET (-1630) +/** The initialization of the dynamic mapping cache failed. */ +#define VERR_PGM_DYNMAP_SETUP_ERROR (-1631) +/** The expanding of the dynamic mapping cache failed. */ +#define VERR_PGM_DYNMAP_EXPAND_ERROR (-1632) +/** The page is unassigned (akin to VERR_PGM_INVALID_GC_PHYSICAL_ADDRESS). */ +#define VERR_PGM_PHYS_TLB_UNASSIGNED (-1633) +/** Catch any access and route it thru PGM. */ +#define VERR_PGM_PHYS_TLB_CATCH_ALL (-1634) +/** Catch write access and route it thru PGM. */ +#define VINF_PGM_PHYS_TLB_CATCH_WRITE 1635 +/** Catch write access and route it thru PGM. */ +#define VERR_PGM_PHYS_TLB_CATCH_WRITE (-1635) +/** No CR3 root shadow page table.. */ +#define VERR_PGM_NO_CR3_SHADOW_ROOT (-1636) +/** Trying to free a page with an invalid Page ID. */ +#define VERR_PGM_PHYS_INVALID_PAGE_ID (-1637) +/** PGMPhysWrite/Read hit a handler in Ring-0 or raw-mode context. */ +#define VERR_PGM_PHYS_WR_HIT_HANDLER (-1638) +/** Trying to free a page that isn't RAM. */ +#define VERR_PGM_PHYS_NOT_RAM (-1639) +/** Not ROM page. */ +#define VERR_PGM_PHYS_NOT_ROM (-1640) +/** Not MMIO page. */ +#define VERR_PGM_PHYS_NOT_MMIO (-1641) +/** Not MMIO2 page. */ +#define VERR_PGM_PHYS_NOT_MMIO2 (-1642) +/** Already aliased to a different page. */ +#define VERR_PGM_HANDLER_ALREADY_ALIASED (-1643) +/** Already aliased to the same page. */ +#define VINF_PGM_HANDLER_ALREADY_ALIASED (1643) +/** PGM pool flush pending - return to ring 3. */ +#define VINF_PGM_POOL_FLUSH_PENDING (1644) +/** Unable to use the range for a large page. */ +#define VERR_PGM_INVALID_LARGE_PAGE_RANGE (-1645) +/** Don't mess around with ballooned pages. */ +#define VERR_PGM_PHYS_PAGE_BALLOONED (-1646) + + +/** pgmPhysPageMapCommon encountered PGMPAGETYPE_MMIO2_ALIAS_MMIO. */ +#define VERR_PGM_MAP_MMIO2_ALIAS_MMIO (-1651) +/** Guest mappings are disabled. */ +#define VERR_PGM_MAPPINGS_DISABLED (-1652) +/** No guest mappings when SMP is enabled. */ +#define VERR_PGM_MAPPINGS_SMP (-1653) +/** Invalid saved page state. */ +#define VERR_PGM_INVALID_SAVED_PAGE_STATE (-1654) +/** Encountered an unexpected page type in the saved state. */ +#define VERR_PGM_LOAD_UNEXPECTED_PAGE_TYPE (-1655) +/** Encountered an unexpected page state in the saved state. */ +#define VERR_PGM_UNEXPECTED_PAGE_STATE (-1656) +/** Couldn't find MMIO2 range from saved state. */ +#define VERR_PGM_SAVED_MMIO2_RANGE_NOT_FOUND (-1657) +/** Couldn't find MMIO2 page from saved state. */ +#define VERR_PGM_SAVED_MMIO2_PAGE_NOT_FOUND (-1658) +/** Couldn't find ROM range from saved state. */ +#define VERR_PGM_SAVED_ROM_RANGE_NOT_FOUND (-1659) +/** Couldn't find ROM page from saved state. */ +#define VERR_PGM_SAVED_ROM_PAGE_NOT_FOUND (-1660) +/** ROM page mismatch between saved state and the VM. */ +#define VERR_PGM_SAVED_ROM_PAGE_PROT (-1661) +/** Unknown saved state record. */ +#define VERR_PGM_SAVED_REC_TYPE (-1662) +/** Internal processing error in the PGM dynmap (r0/rc). */ +#define VERR_PGM_DYNMAP_IPE (-1663) +/** Internal processing error in the PGM handy page allocator. */ +#define VERR_PGM_HANDY_PAGE_IPE (-1664) +/** Failed to map the guest PML4. */ +#define VERR_PGM_PML4_MAPPING (-1665) +/** Failed to obtain a pool page. */ +#define VERR_PGM_POOL_GET_PAGE_FAILED (-1666) +/** A PGM function was called in a mode where it isn't supposed to be used. */ +#define VERR_PGM_NOT_USED_IN_MODE (-1667) +/** The CR3 address specified memory we don't know about. */ +#define VERR_PGM_INVALID_CR3_ADDR (-1668) +/** One or the PDPEs specified memory we don't know about. */ +#define VERR_PGM_INVALID_PDPE_ADDR (-1669) +/** Internal processing error in the PGM physical handler code. */ +#define VERR_PGM_PHYS_HANDLER_IPE (-1670) +/** Internal processing error \#1 in the PGM physial page mapping code. */ +#define VERR_PGM_PHYS_PAGE_MAP_IPE_1 (-1671) +/** Internal processing error \#2 in the PGM physial page mapping code. */ +#define VERR_PGM_PHYS_PAGE_MAP_IPE_2 (-1672) +/** Internal processing error \#3 in the PGM physial page mapping code. */ +#define VERR_PGM_PHYS_PAGE_MAP_IPE_3 (-1673) +/** Internal processing error \#4 in the PGM physial page mapping code. */ +#define VERR_PGM_PHYS_PAGE_MAP_IPE_4 (-1674) +/** Too many loops looking for a page to reuse. */ +#define VERR_PGM_POOL_TOO_MANY_LOOPS (-1675) +/** Internal processing error related to guest mappings. */ +#define VERR_PGM_MAPPING_IPE (-1676) +/** An attempt was made to grow an already maxed out page pool. */ +#define VERR_PGM_POOL_MAXED_OUT_ALREADY (-1677) +/** Internal processing error in the page pool code. */ +#define VERR_PGM_POOL_IPE (-1678) +/** The write monitor is already engaged. */ +#define VERR_PGM_WRITE_MONITOR_ENGAGED (-1679) +/** Failed to get a guest page which is expected to be present. */ +#define VERR_PGM_PHYS_PAGE_GET_IPE (-1680) +/** We were given a NULL pPage parameter. */ +#define VERR_PGM_PHYS_NULL_PAGE_PARAM (-1681) +/** PCI passthru is not supported by this build. */ +#define VERR_PGM_PCI_PASSTHRU_MISCONFIG (-1682) +/** Too many MMIO2 ranges. */ +#define VERR_PGM_TOO_MANY_MMIO2_RANGES (-1683) +/** Internal processing error in the PGM physial page mapping code dealing + * with MMIO2 pages. */ +#define VERR_PGM_PHYS_PAGE_MAP_MMIO2_IPE (-1684) +/** @} */ + + +/** @name Memory Monitor (MM) Status Codes + * @{ + */ +/** Attempt to register a RAM range of which parts are already + * covered by existing RAM ranges. */ +#define VERR_MM_RAM_CONFLICT (-1700) +/** Hypervisor memory allocation failed. */ +#define VERR_MM_HYPER_NO_MEMORY (-1701) +/** A bad trap type ended up in mmGCRamTrap0eHandler. */ +#define VERR_MM_BAD_TRAP_TYPE_IPE (-1702) +/** @} */ + + +/** @name CPU Monitor (CPUM) Status Codes + * @{ + */ +/** The caller shall raise an \#GP(0) exception. */ +#define VERR_CPUM_RAISE_GP_0 (-1750) +/** Incompatible CPUM configuration. */ +#define VERR_CPUM_INCOMPATIBLE_CONFIG (-1751) +/** CPUMR3DisasmInstrCPU unexpectedly failed to determine the hidden + * parts of the CS register. */ +#define VERR_CPUM_HIDDEN_CS_LOAD_ERROR (-1752) +/** Couldn't find the end of CPUID sub-leaves. */ +#define VERR_CPUM_TOO_MANY_CPUID_SUBLEAVES (-1753) +/** CPUM internal processing error \#1. */ +#define VERR_CPUM_IPE_1 (-1754) +/** CPUM internal processing error \#2. */ +#define VERR_CPUM_IPE_2 (-1755) +/** The specified CPU cannot be found in the CPU database. */ +#define VERR_CPUM_DB_CPU_NOT_FOUND (-1756) +/** Invalid CPUMCPU offset in MSR range. */ +#define VERR_CPUM_MSR_BAD_CPUMCPU_OFFSET (-1757) +/** Return to ring-3 to read the MSR there. */ +#define VINF_CPUM_R3_MSR_READ (1758) +/** Return to ring-3 to write the MSR there. */ +#define VINF_CPUM_R3_MSR_WRITE (1759) +/** Too many CPUID leaves. */ +#define VERR_TOO_MANY_CPUID_LEAVES (-1760) +/** Invalid config value. */ +#define VERR_CPUM_INVALID_CONFIG_VALUE (-1761) +/** The loaded XSAVE component mask is not compatible with the host CPU + * or/and VM config. */ +#define VERR_CPUM_INCOMPATIBLE_XSAVE_COMP_MASK (-1762) +/** The loaded XSAVE component mask is not valid. */ +#define VERR_CPUM_INVALID_XSAVE_COMP_MASK (-1763) +/** The loaded XSAVE header is not valid. */ +#define VERR_CPUM_INVALID_XSAVE_HDR (-1764) +/** The loaded XCR0 register value is not valid. */ +#define VERR_CPUM_INVALID_XCR0 (-1765) +/** @} */ + + +/** @name Save State Manager (SSM) Status Codes + * @{ + */ +/** The specified data unit already exist. */ +#define VERR_SSM_UNIT_EXISTS (-1800) +/** The specified data unit wasn't found. */ +#define VERR_SSM_UNIT_NOT_FOUND (-1801) +/** The specified data unit wasn't owned by caller. */ +#define VERR_SSM_UNIT_NOT_OWNER (-1802) + +/** General saved state file integrity error. */ +#define VERR_SSM_INTEGRITY (-1810) +/** The saved state file magic was not recognized. */ +#define VERR_SSM_INTEGRITY_MAGIC (-1811) +/** The saved state file version is not supported. */ +#define VERR_SSM_INTEGRITY_VERSION (-1812) +/** The saved state file size didn't match the one in the header. */ +#define VERR_SSM_INTEGRITY_SIZE (-1813) +/** The CRC of the saved state file did not match. */ +#define VERR_SSM_INTEGRITY_CRC (-1814) +/** The machine uuid field wasn't null. */ +#define VERR_SMM_INTEGRITY_MACHINE (-1815) +/** Saved state header integrity error. */ +#define VERR_SSM_INTEGRITY_HEADER (-1816) +/** Unit header integrity error. */ +#define VERR_SSM_INTEGRITY_UNIT (-1817) +/** Invalid unit magic (internal data tag). */ +#define VERR_SSM_INTEGRITY_UNIT_MAGIC (-1818) +/** The file contained a data unit which no-one wants. */ +#define VERR_SSM_INTEGRITY_UNIT_NOT_FOUND (-1819) +/** Incorrect version numbers in the header. */ +#define VERR_SSM_INTEGRITY_VBOX_VERSION (-1820) +/** Footer integrity error. */ +#define VERR_SSM_INTEGRITY_FOOTER (-1821) +/** Record header integrity error. */ +#define VERR_SSM_INTEGRITY_REC_HDR (-1822) +/** Termination record integrity error. */ +#define VERR_SSM_INTEGRITY_REC_TERM (-1823) +/** Termination record CRC mismatch. */ +#define VERR_SSM_INTEGRITY_REC_TERM_CRC (-1824) +/** Decompression integrity error. */ +#define VERR_SSM_INTEGRITY_DECOMPRESSION (-1825) +/** Saved state directory wintertides error. */ +#define VERR_SSM_INTEGRITY_DIR (-1826) +/** The saved state directory magic is wrong. */ +#define VERR_SSM_INTEGRITY_DIR_MAGIC (-1827) + +/** A data unit in the saved state file was defined but didn't any + * routine for processing it. */ +#define VERR_SSM_NO_LOAD_EXEC (-1830) +/** A restore routine attempted to load more data then the unit contained. */ +#define VERR_SSM_LOADED_TOO_MUCH (-1831) +/** Not in the correct state for the attempted operation. */ +#define VERR_SSM_INVALID_STATE (-1832) +/** Not in the correct state for the attempted operation. */ +#define VERR_SSM_LOADED_TOO_LITTLE (-1833) + +/** Unsupported data unit version. + * A SSM user returns this if it doesn't know the u32Version. */ +#define VERR_SSM_UNSUPPORTED_DATA_UNIT_VERSION (-1840) +/** The format of a data unit has changed. + * A SSM user returns this if it's not able to read the format for + * other reasons than u32Version. */ +#define VERR_SSM_DATA_UNIT_FORMAT_CHANGED (-1841) +/** The CPUID instruction returns different information when loading than when saved. + * Normally caused by hardware changes on the host, but could also be caused by + * changes in the BIOS setup. */ +#define VERR_SSM_LOAD_CPUID_MISMATCH (-1842) +/** The RAM size differs between the saved state and the VM config. */ +#define VERR_SSM_LOAD_MEMORY_SIZE_MISMATCH (-1843) +/** The state doesn't match the VM configuration in one or another way. + * (There are certain PCI reconfiguration which the OS could potentially + * do which can cause this problem. Check this out when it happens.) */ +#define VERR_SSM_LOAD_CONFIG_MISMATCH (-1844) +/** The virtual clock frequency differs too much. + * The clock source for the virtual time isn't reliable or the code have changed. */ +#define VERR_SSM_VIRTUAL_CLOCK_HZ (-1845) +/** A timeout occurred while waiting for async IDE operations to finish. */ +#define VERR_SSM_IDE_ASYNC_TIMEOUT (-1846) +/** One of the structure magics was wrong. */ +#define VERR_SSM_STRUCTURE_MAGIC (-1847) +/** The data in the saved state doesn't conform to expectations. */ +#define VERR_SSM_UNEXPECTED_DATA (-1848) +/** Trying to read a 64-bit guest physical address into a 32-bit variable. */ +#define VERR_SSM_GCPHYS_OVERFLOW (-1849) +/** Trying to read a 64-bit guest virtual address into a 32-bit variable. */ +#define VERR_SSM_GCPTR_OVERFLOW (-1850) +/** Vote for another pass. */ +#define VINF_SSM_VOTE_FOR_ANOTHER_PASS 1851 +/** Vote for done tell SSM not to call again until the final pass. */ +#define VINF_SSM_VOTE_DONE_DONT_CALL_AGAIN 1852 +/** Vote for giving up. */ +#define VERR_SSM_VOTE_FOR_GIVING_UP (-1853) +/** Don't call again until the final pass. */ +#define VINF_SSM_DONT_CALL_AGAIN 1854 +/** Giving up a live snapshot/teleportation attempt because of too many + * passes. */ +#define VERR_SSM_TOO_MANY_PASSES (-1855) +/** Giving up a live snapshot/teleportation attempt because the state grew to + * big. */ +#define VERR_SSM_STATE_GREW_TOO_BIG (-1856) +/** Giving up a live snapshot attempt because we're low on disk space. */ +#define VERR_SSM_LOW_ON_DISK_SPACE (-1857) +/** The operation was cancelled. */ +#define VERR_SSM_CANCELLED (-1858) +/** Nothing that can be cancelled. */ +#define VERR_SSM_NO_PENDING_OPERATION (-1859) +/** The operation has already been cancelled. */ +#define VERR_SSM_ALREADY_CANCELLED (-1860) +/** The machine was powered off while saving. */ +#define VERR_SSM_LIVE_POWERED_OFF (-1861) +/** The live snapshot/teleportation operation was aborted because of a guru + * meditation. */ +#define VERR_SSM_LIVE_GURU_MEDITATION (-1862) +/** The live snapshot/teleportation operation was aborted because of a fatal + * runtime error. */ +#define VERR_SSM_LIVE_FATAL_ERROR (-1863) +/** The VM was suspended before or while saving, don't resume execution. */ +#define VINF_SSM_LIVE_SUSPENDED 1864 +/** Complex SSM field fed to SSMR3PutStruct or SSMR3GetStruct. Use the + * extended API. */ +#define VERR_SSM_FIELD_COMPLEX (-1864) +/** Invalid size of a SSM field with the specified transformation. */ +#define VERR_SSM_FIELD_INVALID_SIZE (-1865) +/** The specified field is outside the structure. */ +#define VERR_SSM_FIELD_OUT_OF_BOUNDS (-1866) +/** The field does not follow immediately the previous one. */ +#define VERR_SSM_FIELD_NOT_CONSECUTIVE (-1867) +/** The field contains an invalid callback or transformation index. */ +#define VERR_SSM_FIELD_INVALID_CALLBACK (-1868) +/** The field contains an invalid padding size. */ +#define VERR_SSM_FIELD_INVALID_PADDING_SIZE (-1869) +/** The field contains a value that is out of range. */ +#define VERR_SSM_FIELD_INVALID_VALUE (-1870) +/** Generic stream error. */ +#define VERR_SSM_STREAM_ERROR (-1871) +/** SSM did a callback for a pass we didn't expect. */ +#define VERR_SSM_UNEXPECTED_PASS (-1872) +/** Someone is trying to skip backwards in the stream... */ +#define VERR_SSM_SKIP_BACKWARDS (-1873) +/** Someone is trying to write a memory block which is too big to encode. */ +#define VERR_SSM_MEM_TOO_BIG (-1874) +/** Encountered an bad (/unknown) record type. */ +#define VERR_SSM_BAD_REC_TYPE (-1875) +/** Internal processing error \#1 in SSM code. */ +#define VERR_SSM_IPE_1 (-1876) +/** Internal processing error \#2 in SSM code. */ +#define VERR_SSM_IPE_2 (-1877) +/** Internal processing error \#3 in SSM code. */ +#define VERR_SSM_IPE_3 (-1878) +/** A field contained an transformation that should only be used when loading + * old states. */ +#define VERR_SSM_FIELD_LOAD_ONLY_TRANSFORMATION (-1879) +/** @} */ + + +/** @name Virtual Machine (VM) Status Codes + * @{ + */ +/** The specified at reset handler wasn't found. */ +#define VERR_VM_ATRESET_NOT_FOUND (-1900) +/** Invalid VM request type. + * For the VMR3ReqAlloc() case, the caller just specified an illegal enmType. For + * all the other occurrences it means indicates corruption, broken logic, or stupid + * interface user. */ +#define VERR_VM_REQUEST_INVALID_TYPE (-1901) +/** Invalid VM request state. + * The state of the request packet was not the expected and accepted one(s). Either + * the interface user screwed up, or we've got corruption/broken logic. */ +#define VERR_VM_REQUEST_STATE (-1902) +/** Invalid VM request packet. + * One or more of the VM controlled packet members didn't contain the correct + * values. Some thing's broken. */ +#define VERR_VM_REQUEST_INVALID_PACKAGE (-1903) +/** The status field has not been updated yet as the request is still + * pending completion. Someone queried the iStatus field before the request + * has been fully processed. */ +#define VERR_VM_REQUEST_STATUS_STILL_PENDING (-1904) +/** The request has been freed, don't read the status now. + * Someone is reading the iStatus field of a freed request packet. */ +#define VERR_VM_REQUEST_STATUS_FREED (-1905) +/** A VM api requiring EMT was called from another thread. + * Use the VMR3ReqCall() apis to call it! */ +#define VERR_VM_THREAD_NOT_EMT (-1906) +/** The VM state was invalid for the requested operation. + * Go check the 'VM Statechart Diagram.gif'. */ +#define VERR_VM_INVALID_VM_STATE (-1907) +/** The support driver is not installed. + * On linux, open returned ENOENT. */ +#define VERR_VM_DRIVER_NOT_INSTALLED (-1908) +/** The support driver is not accessible. + * On linux, open returned EPERM. */ +#define VERR_VM_DRIVER_NOT_ACCESSIBLE (-1909) +/** Was not able to load the support driver. + * On linux, open returned ENODEV. */ +#define VERR_VM_DRIVER_LOAD_ERROR (-1910) +/** Was not able to open the support driver. + * Generic open error used when none of the other ones fit. */ +#define VERR_VM_DRIVER_OPEN_ERROR (-1911) +/** The installed support driver doesn't match the version of the user. */ +#define VERR_VM_DRIVER_VERSION_MISMATCH (-1912) +/** Saving the VM state is temporarily not allowed. Try again later. */ +#define VERR_VM_SAVE_STATE_NOT_ALLOWED (-1913) +/** An EMT called an API which cannot be called on such a thread. */ +#define VERR_VM_THREAD_IS_EMT (-1914) +/** Encountered an unexpected VM state. */ +#define VERR_VM_UNEXPECTED_VM_STATE (-1915) +/** Unexpected unstable VM state. */ +#define VERR_VM_UNEXPECTED_UNSTABLE_STATE (-1916) +/** Too many arguments passed to a VM request / request corruption. */ +#define VERR_VM_REQUEST_TOO_MANY_ARGS_IPE (-1917) +/** Fatal EMT wait error. */ +#define VERR_VM_FATAL_WAIT_ERROR (-1918) +/** The VM request was killed at VM termination. */ +#define VERR_VM_REQUEST_KILLED (-1919) +/** @} */ + + +/** @name VBox Remote Desktop Protocol (VRDP) Status Codes + * @{ + */ +/** Successful completion of operation (mapped to generic iprt status code). */ +#define VINF_VRDP_SUCCESS VINF_SUCCESS +/** VRDP transport operation timed out (mapped to generic iprt status code). */ +#define VERR_VRDP_TIMEOUT VERR_TIMEOUT + +/** Unsupported ISO protocol feature */ +#define VERR_VRDP_ISO_UNSUPPORTED (-2000) +/** Security (en/decryption) engine error */ +#define VERR_VRDP_SEC_ENGINE_FAIL (-2001) +/** VRDP protocol violation */ +#define VERR_VRDP_PROTOCOL_ERROR (-2002) +/** Unsupported VRDP protocol feature */ +#define VERR_VRDP_NOT_SUPPORTED (-2003) +/** VRDP protocol violation, client sends less data than expected */ +#define VERR_VRDP_INSUFFICIENT_DATA (-2004) +/** Internal error, VRDP packet is in wrong operation mode */ +#define VERR_VRDP_INVALID_MODE (-2005) +/** Memory allocation failed */ +#define VERR_VRDP_NO_MEMORY (-2006) +/** Client has been rejected */ +#define VERR_VRDP_ACCESS_DENIED (-2007) +/** VRPD receives a packet that is not supported */ +#define VWRN_VRDP_PDU_NOT_SUPPORTED 2008 +/** VRDP script allowed the packet to be processed further */ +#define VINF_VRDP_PROCESS_PDU 2009 +/** VRDP script has completed its task */ +#define VINF_VRDP_OPERATION_COMPLETED 2010 +/** VRDP thread has started OK and will run */ +#define VINF_VRDP_THREAD_STARTED 2011 +/** Framebuffer is resized, terminate send bitmap procedure */ +#define VINF_VRDP_RESIZE_REQUESTED 2012 +/** Output can be enabled for the client. */ +#define VINF_VRDP_OUTPUT_ENABLE 2013 +/** @} */ + + +/** @name Configuration Manager (CFGM) Status Codes + * @{ + */ +/** The integer value was too big for the requested representation. */ +#define VERR_CFGM_INTEGER_TOO_BIG (-2100) +/** Child node was not found. */ +#define VERR_CFGM_CHILD_NOT_FOUND (-2101) +/** Path to child node was invalid (i.e. empty). */ +#define VERR_CFGM_INVALID_CHILD_PATH (-2102) +/** Value not found. */ +#define VERR_CFGM_VALUE_NOT_FOUND (-2103) +/** No parent node specified. */ +#define VERR_CFGM_NO_PARENT (-2104) +/** No node was specified. */ +#define VERR_CFGM_NO_NODE (-2105) +/** The value is not an integer. */ +#define VERR_CFGM_NOT_INTEGER (-2106) +/** The value is not a zero terminated character string. */ +#define VERR_CFGM_NOT_STRING (-2107) +/** The value is not a byte string. */ +#define VERR_CFGM_NOT_BYTES (-2108) +/** The specified string / bytes buffer was to small. Specify a larger one and retry. */ +#define VERR_CFGM_NOT_ENOUGH_SPACE (-2109) +/** The path of a new node contained slashes or was empty. */ +#define VERR_CFGM_INVALID_NODE_PATH (-2160) +/** A new node couldn't be inserted because one with the same name exists. */ +#define VERR_CFGM_NODE_EXISTS (-2161) +/** A new leaf couldn't be inserted because one with the same name exists. */ +#define VERR_CFGM_LEAF_EXISTS (-2162) +/** An unknown config value was encountered. */ +#define VERR_CFGM_CONFIG_UNKNOWN_VALUE (-2163) +/** An unknown config node (key) was encountered. */ +#define VERR_CFGM_CONFIG_UNKNOWN_NODE (-2164) +/** Internal processing error \#1 in CFGM. */ +#define VERR_CFGM_IPE_1 (-2165) +/** @} */ + + +/** @name Time Manager (TM) Status Codes + * @{ + */ +/** The loaded timer state was incorrect. */ +#define VERR_TM_LOAD_STATE (-2200) +/** The timer was not in the correct state for the request operation. */ +#define VERR_TM_INVALID_STATE (-2201) +/** The timer was in a unknown state. Corruption or stupid coding error. */ +#define VERR_TM_UNKNOWN_STATE (-2202) +/** The timer was stuck in an unstable state until we grew impatient and returned. */ +#define VERR_TM_UNSTABLE_STATE (-2203) +/** TM requires GIP. */ +#define VERR_TM_GIP_REQUIRED (-2204) +/** TM does not support the GIP version. */ +#define VERR_TM_GIP_VERSION (-2205) +/** The GIP update interval is too large. */ +#define VERR_TM_GIP_UPDATE_INTERVAL_TOO_BIG (-2206) +/** The timer has a bad clock enum value, probably corruption. */ +#define VERR_TM_TIMER_BAD_CLOCK (-2207) +/** The timer failed to reach a stable state. */ +#define VERR_TM_TIMER_UNSTABLE_STATE (-2208) +/** Attempt to resume a running TSC. */ +#define VERR_TM_TSC_ALREADY_TICKING (-2209) +/** Attempt to pause a paused TSC. */ +#define VERR_TM_TSC_ALREADY_PAUSED (-2210) +/** Invalid value for cVirtualTicking. */ +#define VERR_TM_VIRTUAL_TICKING_IPE (-2211) +/** @} */ + + +/** @name Recompiled Execution Manager (REM) Status Codes + * @{ + */ +/** Fatal error in virtual hardware. */ +#define VERR_REM_VIRTUAL_HARDWARE_ERROR (-2300) +/** Fatal error in the recompiler cpu. */ +#define VERR_REM_VIRTUAL_CPU_ERROR (-2301) +/** Recompiler execution was interrupted by forced action. */ +#define VINF_REM_INTERRUPED_FF 2302 +/** Too many similar traps. This is a very useful debug only + * check (we don't do double/triple faults in REM). */ +#define VERR_REM_TOO_MANY_TRAPS (-2304) +/** The REM is out of breakpoint slots. */ +#define VERR_REM_NO_MORE_BP_SLOTS (-2305) +/** The REM could not find any breakpoint on the specified address. */ +#define VERR_REM_BP_NOT_FOUND (-2306) +/** @} */ + + +/** @name Trap Manager / Monitor (TRPM) Status Codes + * @{ + */ +/** No active trap. Cannot query or reset a non-existing trap. */ +#define VERR_TRPM_NO_ACTIVE_TRAP (-2400) +/** Active trap. Cannot assert a new trap when one is already active. */ +#define VERR_TRPM_ACTIVE_TRAP (-2401) +/** Reason for leaving RC: Guest tried to write to our IDT - fatal. + * The VM will be terminated assuming the worst, i.e. that the + * guest has read the idtr register. */ +#define VERR_TRPM_SHADOW_IDT_WRITE (-2402) +/** Reason for leaving RC: Fatal trap in hypervisor. */ +#define VERR_TRPM_DONT_PANIC (-2403) +/** Reason for leaving RC: Double Fault. */ +#define VERR_TRPM_PANIC (-2404) +/** The exception was dispatched for raw-mode execution. */ +#define VINF_TRPM_XCPT_DISPATCHED 2405 +/** Bad TRPM_TRAP_IN_OP. */ +#define VERR_TRPM_BAD_TRAP_IN_OP (-2406) +/** Internal processing error \#1 in TRPM. */ +#define VERR_TRPM_IPE_1 (-2407) +/** Internal processing error \#2 in TRPM. */ +#define VERR_TRPM_IPE_2 (-2408) +/** Internal processing error \#3 in TRPM. */ +#define VERR_TRPM_IPE_3 (-2409) +/** Got into a part of TRPM that is not used when HM (VT-x/AMD-V) is enabled. */ +#define VERR_TRPM_HM_IPE (-2410) +/** @} */ + + +/** @name Selector Manager / Monitor (SELM) Status Code + * @{ + */ +/** Reason for leaving RC: Guest tried to write to our GDT - fatal. + * The VM will be terminated assuming the worst, i.e. that the + * guest has read the gdtr register. */ +#define VERR_SELM_SHADOW_GDT_WRITE (-2500) +/** Reason for leaving RC: Guest tried to write to our LDT - fatal. + * The VM will be terminated assuming the worst, i.e. that the + * guest has read the ldtr register. */ +#define VERR_SELM_SHADOW_LDT_WRITE (-2501) +/** Reason for leaving RC: Guest tried to write to our TSS - fatal. + * The VM will be terminated assuming the worst, i.e. that the + * guest has read the ltr register. */ +#define VERR_SELM_SHADOW_TSS_WRITE (-2502) +/** Reason for leaving RC: Sync the GDT table to solve a conflict. */ +#define VINF_SELM_SYNC_GDT 2503 +/** No valid TSS present. */ +#define VERR_SELM_NO_TSS (-2504) +/** Invalid guest LDT selector. */ +#define VERR_SELM_INVALID_LDT (-2505) +/** The guest LDT selector is out of bounds. */ +#define VERR_SELM_LDT_OUT_OF_BOUNDS (-2506) +/** Unknown error while reading the guest GDT during shadow table updating. */ +#define VERR_SELM_GDT_READ_ERROR (-2507) +/** The guest GDT so full that we cannot find free space for our own + * selectors. */ +#define VERR_SELM_GDT_TOO_FULL (-2508) +/** Got into a part of SELM that is not used when HM (VT-x/AMD-V) is enabled. */ +#define VERR_SELM_HM_IPE (-2509) +/** @} */ + + +/** @name I/O Manager / Monitor (IOM) Status Code + * @{ + */ +/** The specified I/O port range was invalid. + * It was either empty or it was out of bounds. */ +#define VERR_IOM_INVALID_IOPORT_RANGE (-2600) +/** The specified R0 or RC I/O port range didn't have a corresponding R3 range. + * IOMR3IOPortRegisterR3() must be called first. */ +#define VERR_IOM_NO_R3_IOPORT_RANGE (-2601) +/** The specified I/O port range intruded on an existing range. There is + * a I/O port conflict between two device, or a device tried to register + * the same range twice. */ +#define VERR_IOM_IOPORT_RANGE_CONFLICT (-2602) +/** The I/O port range specified for removal wasn't found or it wasn't contiguous. */ +#define VERR_IOM_IOPORT_RANGE_NOT_FOUND (-2603) +/** The specified I/O port range was owned by some other device(s). Both registration + * and deregistration, but in the first case only RC and R0 ranges. */ +#define VERR_IOM_NOT_IOPORT_RANGE_OWNER (-2604) + +/** The specified MMIO range was invalid. + * It was either empty or it was out of bounds. */ +#define VERR_IOM_INVALID_MMIO_RANGE (-2605) +/** The specified R0 or RC MMIO range didn't have a corresponding R3 range. + * IOMR3MMIORegisterR3() must be called first. */ +#define VERR_IOM_NO_R3_MMIO_RANGE (-2606) +/** The specified MMIO range was owned by some other device(s). Both registration + * and deregistration, but in the first case only RC and R0 ranges. */ +#define VERR_IOM_NOT_MMIO_RANGE_OWNER (-2607) +/** The specified MMIO range intruded on an existing range. There is + * a MMIO conflict between two device, or a device tried to register + * the same range twice. */ +#define VERR_IOM_MMIO_RANGE_CONFLICT (-2608) +/** The MMIO range specified for removal was not found. */ +#define VERR_IOM_MMIO_RANGE_NOT_FOUND (-2609) +/** The MMIO range specified for removal was invalid. The range didn't match + * quite match a set of existing ranges. It's not possible to remove parts of + * a MMIO range, only one or more full ranges. */ +#define VERR_IOM_INCOMPLETE_MMIO_RANGE (-2610) +/** An invalid I/O port size was specified for a read or write operation. */ +#define VERR_IOM_INVALID_IOPORT_SIZE (-2611) +/** The MMIO handler was called for a bogus address! Internal error! */ +#define VERR_IOM_MMIO_HANDLER_BOGUS_CALL (-2612) +/** The MMIO handler experienced a problem with the disassembler. */ +#define VERR_IOM_MMIO_HANDLER_DISASM_ERROR (-2613) +/** The port being read was not present(/unused) and IOM shall return ~0 according to size. */ +#define VERR_IOM_IOPORT_UNUSED (-2614) +/** Unused MMIO register read, fill with 00. */ +#define VINF_IOM_MMIO_UNUSED_00 2615 +/** Unused MMIO register read, fill with FF. */ +#define VINF_IOM_MMIO_UNUSED_FF 2616 + +/** Reason for leaving RZ: I/O port read. */ +#define VINF_IOM_R3_IOPORT_READ 2620 +/** Reason for leaving RZ: I/O port write. */ +#define VINF_IOM_R3_IOPORT_WRITE 2621 +/** Reason for leaving RZ: MMIO read. */ +#define VINF_IOM_R3_MMIO_READ 2623 +/** Reason for leaving RZ: MMIO write. */ +#define VINF_IOM_R3_MMIO_WRITE 2624 +/** Reason for leaving RZ: MMIO read/write. */ +#define VINF_IOM_R3_MMIO_READ_WRITE 2625 + +/** IOMGCIOPortHandler was given an unexpected opcode. */ +#define VERR_IOM_IOPORT_UNKNOWN_OPCODE (-2630) +/** Internal processing error \#1 in the I/O port code. */ +#define VERR_IOM_IOPORT_IPE_1 (-2631) +/** Internal processing error \#2 in the I/O port code. */ +#define VERR_IOM_IOPORT_IPE_2 (-2632) +/** Internal processing error \#3 in the I/O port code. */ +#define VERR_IOM_IOPORT_IPE_3 (-2633) +/** Internal processing error \#1 in the MMIO code. */ +#define VERR_IOM_MMIO_IPE_1 (-2634) +/** Internal processing error \#2 in the MMIO code. */ +#define VERR_IOM_MMIO_IPE_2 (-2635) +/** Internal processing error \#3 in the MMIO code. */ +#define VERR_IOM_MMIO_IPE_3 (-2636) +/** Got into a part of IOM that is not used when HM (VT-x/AMD-V) is enabled. */ +#define VERR_IOM_HM_IPE (-2637) +/** @} */ + + +/** @name Virtual Machine Monitor (VMM) Status Codes + * @{ + */ +/** Reason for leaving RZ: Calling host function. */ +#define VINF_VMM_CALL_HOST 2700 +/** Reason for leaving R0: Hit a ring-0 assertion on EMT. */ +#define VERR_VMM_RING0_ASSERTION (-2701) +/** The hyper CR3 differs between PGM and CPUM. */ +#define VERR_VMM_HYPER_CR3_MISMATCH (-2702) +/** Reason for leaving RZ: Illegal call to ring-3. */ +#define VERR_VMM_RING3_CALL_DISABLED (-2703) +/** The VMMR0.r0 module version does not match VBoxVMM.dll/so/dylib. + * If you just upgraded VirtualBox, please terminate all VMs and make sure + * VBoxNetDHCP is not running. Then try again. If this error persists, try + * re-installing VirtualBox. */ +#define VERR_VMM_R0_VERSION_MISMATCH (-2704) +/** The VMMRC.rc module version does not match VBoxVMM.dll/so/dylib. + * Re-install if you are a user. Developers should make sure the build is + * complete or try with a clean build. */ +#define VERR_VMM_RC_VERSION_MISMATCH (-2705) +/** VMM set jump error. */ +#define VERR_VMM_SET_JMP_ERROR (-2706) +/** VMM set jump stack overflow error. */ +#define VERR_VMM_SET_JMP_STACK_OVERFLOW (-2707) +/** VMM set jump resume error. */ +#define VERR_VMM_SET_JMP_ABORTED_RESUME (-2708) +/** VMM long jump error. */ +#define VERR_VMM_LONG_JMP_ERROR (-2709) +/** Unknown ring-3 call attempted. */ +#define VERR_VMM_UNKNOWN_RING3_CALL (-2710) +/** The ring-3 call didn't set an RC. */ +#define VERR_VMM_RING3_CALL_NO_RC (-2711) +/** Reason for leaving RC: Caller the tracer in ring-0. */ +#define VINF_VMM_CALL_TRACER (2712) +/** Internal processing error \#1 in the switcher code. */ +#define VERR_VMM_SWITCHER_IPE_1 (-2713) +/** Reason for leaving RZ: Unknown call to ring-3. */ +#define VINF_VMM_UNKNOWN_RING3_CALL (2714) +/** Attempted to use stub switcher. */ +#define VERR_VMM_SWITCHER_STUB (-2715) +/** HM returned in the wrong state. */ +#define VERR_VMM_WRONG_HM_VMCPU_STATE (-2716) +/** @} */ + + +/** @name Pluggable Device and Driver Manager (PDM) Status Codes + * @{ + */ +/** An invalid LUN specification was given. */ +#define VERR_PDM_NO_SUCH_LUN (-2800) +/** A device encountered an unknown configuration value. + * This means that the device is potentially misconfigured and the device + * construction or unit attachment failed because of this. */ +#define VERR_PDM_DEVINS_UNKNOWN_CFG_VALUES (-2801) +/** The above driver doesn't export a interface required by a driver being + * attached to it. Typical misconfiguration problem. */ +#define VERR_PDM_MISSING_INTERFACE_ABOVE (-2802) +/** The below driver doesn't export a interface required by the drive + * having attached it. Typical misconfiguration problem. */ +#define VERR_PDM_MISSING_INTERFACE_BELOW (-2803) +/** A device didn't find a required interface with an attached driver. + * Typical misconfiguration problem. */ +#define VERR_PDM_MISSING_INTERFACE (-2804) +/** A driver encountered an unknown configuration value. + * This means that the driver is potentially misconfigured and the driver + * construction failed because of this. */ +#define VERR_PDM_DRVINS_UNKNOWN_CFG_VALUES (-2805) +/** The PCI bus assigned to a device didn't have room for it. + * Either too many devices are configured on the same PCI bus, or there are + * some internal problem where PDM/PCI doesn't free up slots when unplugging devices. */ +#define VERR_PDM_TOO_PCI_MANY_DEVICES (-2806) +/** A queue is out of free items, the queueing operation failed. */ +#define VERR_PDM_NO_QUEUE_ITEMS (-2807) +/** Not possible to attach further drivers to the driver. + * A driver which doesn't support attachments (below of course) will + * return this status code if it found that further drivers were configured + * to be attached to it. */ +#define VERR_PDM_DRVINS_NO_ATTACH (-2808) +/** Not possible to attach drivers to the device. + * A device which doesn't support attachments (below of course) will + * return this status code if it found that drivers were configured + * to be attached to it. */ +#define VERR_PDM_DEVINS_NO_ATTACH (-2809) +/** No attached driver. + * The PDMDRVHLP::pfnAttach and PDMDEVHLP::pfnDriverAttach will return + * this error when no driver was configured to be attached. */ +#define VERR_PDM_NO_ATTACHED_DRIVER (-2810) +/** The media geometry hasn't been set yet, so it cannot be obtained. + * The caller should then calculate the geometry from the media size. */ +#define VERR_PDM_GEOMETRY_NOT_SET (-2811) +/** The media translation hasn't been set yet, so it cannot be obtained. + * The caller should then guess the translation. */ +#define VERR_PDM_TRANSLATION_NOT_SET (-2812) +/** The media is not mounted, operation requires a mounted media. */ +#define VERR_PDM_MEDIA_NOT_MOUNTED (-2813) +/** Mount failed because a media was already mounted. Unmount the media + * and retry the mount. */ +#define VERR_PDM_MEDIA_MOUNTED (-2814) +/** The media is locked and cannot be unmounted. */ +#define VERR_PDM_MEDIA_LOCKED (-2815) +/** No 'Type' attribute in the DrvBlock configuration. + * Misconfiguration. */ +#define VERR_PDM_BLOCK_NO_TYPE (-2816) +/** The 'Type' attribute in the DrvBlock configuration had an unknown value. + * Misconfiguration. */ +#define VERR_PDM_BLOCK_UNKNOWN_TYPE (-2817) +/** The 'Translation' attribute in the DrvBlock configuration had an unknown value. + * Misconfiguration. */ +#define VERR_PDM_BLOCK_UNKNOWN_TRANSLATION (-2818) +/** The block driver type wasn't supported. + * Misconfiguration of the kind you get when attaching a floppy to an IDE controller. */ +#define VERR_PDM_UNSUPPORTED_BLOCK_TYPE (-2819) +/** A attach or prepare mount call failed because the driver already + * had a driver attached. */ +#define VERR_PDM_DRIVER_ALREADY_ATTACHED (-2820) +/** An attempt on detaching a driver without anyone actually being attached, or + * performing any other operation on an attached driver. */ +#define VERR_PDM_NO_DRIVER_ATTACHED (-2821) +/** The attached driver configuration is missing the 'Driver' attribute. */ +#define VERR_PDM_CFG_MISSING_DRIVER_NAME (-2822) +/** The configured driver wasn't found. + * Either the necessary driver modules wasn't loaded, the name was + * misspelled, or it was a misconfiguration. */ +#define VERR_PDM_DRIVER_NOT_FOUND (-2823) +/** The Ring-3 module was already loaded. */ +#define VINF_PDM_ALREADY_LOADED (2824) +/** The name of the module clashed with an existing module. */ +#define VERR_PDM_MODULE_NAME_CLASH (-2825) +/** Couldn't find any export for registration of drivers/devices. */ +#define VERR_PDM_NO_REGISTRATION_EXPORT (-2826) +/** A module name is too long. */ +#define VERR_PDM_MODULE_NAME_TOO_LONG (-2827) +/** Driver name clash. Another driver with the same name as the + * one being registered exists. */ +#define VERR_PDM_DRIVER_NAME_CLASH (-2828) +/** The version of the driver registration structure is unknown + * to this VBox version. Either mixing incompatible versions or + * the structure isn't correctly initialized. */ +#define VERR_PDM_UNKNOWN_DRVREG_VERSION (-2829) +/** Invalid entry in the driver registration structure. */ +#define VERR_PDM_INVALID_DRIVER_REGISTRATION (-2830) +/** Invalid host bit mask. */ +#define VERR_PDM_INVALID_DRIVER_HOST_BITS (-2831) +/** Not possible to detach a driver because the above driver/device + * doesn't support it. The above entity doesn't implement the pfnDetach call. */ +#define VERR_PDM_DRIVER_DETACH_NOT_POSSIBLE (-2832) +/** No PCI Bus is available to register the device with. This is usually a + * misconfiguration or in rare cases a buggy pci device. */ +#define VERR_PDM_NO_PCI_BUS (-2833) +/** The device is not a registered PCI device and thus cannot + * perform any PCI operations. The device forgot to register it self. */ +#define VERR_PDM_NOT_PCI_DEVICE (-2834) + +/** The version of the device registration structure is unknown + * to this VBox version. Either mixing incompatible versions or + * the structure isn't correctly initialized. */ +#define VERR_PDM_UNKNOWN_DEVREG_VERSION (-2835) +/** Invalid entry in the device registration structure. */ +#define VERR_PDM_INVALID_DEVICE_REGISTRATION (-2836) +/** Invalid host bit mask. */ +#define VERR_PDM_INVALID_DEVICE_GUEST_BITS (-2837) +/** The guest bit mask didn't match the guest being loaded. */ +#define VERR_PDM_INVALID_DEVICE_HOST_BITS (-2838) +/** Device name clash. Another device with the same name as the + * one being registered exists. */ +#define VERR_PDM_DEVICE_NAME_CLASH (-2839) +/** The device wasn't found. There was no registered device + * by that name. */ +#define VERR_PDM_DEVICE_NOT_FOUND (-2840) +/** The device instance was not found. */ +#define VERR_PDM_DEVICE_INSTANCE_NOT_FOUND (-2841) +/** The device instance have no base interface. */ +#define VERR_PDM_DEVICE_INSTANCE_NO_IBASE (-2842) +/** The device instance have no such logical unit. */ +#define VERR_PDM_DEVICE_INSTANCE_LUN_NOT_FOUND (-2843) +/** The driver instance could not be found. */ +#define VERR_PDM_DRIVER_INSTANCE_NOT_FOUND (-2844) +/** Logical Unit was not found. */ +#define VERR_PDM_LUN_NOT_FOUND (-2845) +/** The Logical Unit was found, but it had no driver attached to it. */ +#define VERR_PDM_NO_DRIVER_ATTACHED_TO_LUN (-2846) +/** The Logical Unit was found, but it had no driver attached to it. */ +#define VINF_PDM_NO_DRIVER_ATTACHED_TO_LUN 2846 +/** No PIC device instance is registered with the current VM and thus + * the PIC operation cannot be performed. */ +#define VERR_PDM_NO_PIC_INSTANCE (-2847) +/** No APIC device instance is registered with the current VM and thus + * the APIC operation cannot be performed. */ +#define VERR_PDM_NO_APIC_INSTANCE (-2848) +/** No DMAC device instance is registered with the current VM and thus + * the DMA operation cannot be performed. */ +#define VERR_PDM_NO_DMAC_INSTANCE (-2849) +/** No RTC device instance is registered with the current VM and thus + * the RTC or CMOS operation cannot be performed. */ +#define VERR_PDM_NO_RTC_INSTANCE (-2850) +/** Unable to open the host interface due to a sharing violation . */ +#define VERR_PDM_HIF_SHARING_VIOLATION (-2851) +/** Unable to open the host interface. */ +#define VERR_PDM_HIF_OPEN_FAILED (-2852) +/** The device doesn't support runtime driver attaching. + * The PDMDEVREG::pfnAttach callback function is NULL. */ +#define VERR_PDM_DEVICE_NO_RT_ATTACH (-2853) +/** The driver doesn't support runtime driver attaching. + * The PDMDRVREG::pfnAttach callback function is NULL. */ +#define VERR_PDM_DRIVER_NO_RT_ATTACH (-2854) +/** Invalid host interface version. */ +#define VERR_PDM_HIF_INVALID_VERSION (-2855) + +/** The version of the USB device registration structure is unknown + * to this VBox version. Either mixing incompatible versions or + * the structure isn't correctly initialized. */ +#define VERR_PDM_UNKNOWN_USBREG_VERSION (-2856) +/** Invalid entry in the device registration structure. */ +#define VERR_PDM_INVALID_USB_REGISTRATION (-2857) +/** Driver name clash. Another driver with the same name as the + * one being registered exists. */ +#define VERR_PDM_USB_NAME_CLASH (-2858) +/** The USB hub is already registered. */ +#define VERR_PDM_USB_HUB_EXISTS (-2859) +/** Couldn't find any USB hubs to attach the device to. */ +#define VERR_PDM_NO_USB_HUBS (-2860) +/** Couldn't find any free USB ports to attach the device to. */ +#define VERR_PDM_NO_USB_PORTS (-2861) +/** Couldn't find the USB Proxy device. Using OSE? */ +#define VERR_PDM_NO_USBPROXY (-2862) +/** The async completion template is still used. */ +#define VERR_PDM_ASYNC_TEMPLATE_BUSY (-2863) +/** The async completion task is already suspended. */ +#define VERR_PDM_ASYNC_COMPLETION_ALREADY_SUSPENDED (-2864) +/** The async completion task is not suspended. */ +#define VERR_PDM_ASYNC_COMPLETION_NOT_SUSPENDED (-2865) +/** The driver properties were invalid, and as a consequence construction + * failed. Caused my unusable media or similar problems. */ +#define VERR_PDM_DRIVER_INVALID_PROPERTIES (-2866) +/** Too many instances of a device. */ +#define VERR_PDM_TOO_MANY_DEVICE_INSTANCES (-2867) +/** Too many instances of a driver. */ +#define VERR_PDM_TOO_MANY_DRIVER_INSTANCES (-2868) +/** Too many instances of a usb device. */ +#define VERR_PDM_TOO_MANY_USB_DEVICE_INSTANCES (-2869) +/** The device instance structure version has changed. + * + * If you have upgraded VirtualBox recently, please make sure you have + * terminated all VMs and upgraded any extension packs. If this error + * persists, try re-installing VirtualBox. */ +#define VERR_PDM_DEVINS_VERSION_MISMATCH (-2870) +/** The device helper structure version has changed. + * + * If you have upgraded VirtualBox recently, please make sure you have + * terminated all VMs and upgraded any extension packs. If this error + * persists, try re-installing VirtualBox. */ +#define VERR_PDM_DEVHLPR3_VERSION_MISMATCH (-2871) +/** The USB device instance structure version has changed. + * + * If you have upgraded VirtualBox recently, please make sure you have + * terminated all VMs and upgraded any extension packs. If this error + * persists, try re-installing VirtualBox. */ +#define VERR_PDM_USBINS_VERSION_MISMATCH (-2872) +/** The USB device helper structure version has changed. + * + * If you have upgraded VirtualBox recently, please make sure you have + * terminated all VMs and upgraded any extension packs. If this error + * persists, try re-installing VirtualBox. */ +#define VERR_PDM_USBHLPR3_VERSION_MISMATCH (-2873) +/** The driver instance structure version has changed. + * + * If you have upgraded VirtualBox recently, please make sure you have + * terminated all VMs and upgraded any extension packs. If this error + * persists, try re-installing VirtualBox. */ +#define VERR_PDM_DRVINS_VERSION_MISMATCH (-2874) +/** The driver helper structure version has changed. + * + * If you have upgraded VirtualBox recently, please make sure you have + * terminated all VMs and upgraded any extension packs. If this error + * persists, try re-installing VirtualBox. */ +#define VERR_PDM_DRVHLPR3_VERSION_MISMATCH (-2875) +/** Generic device structure version mismatch. + * + * If you have upgraded VirtualBox recently, please make sure you have + * terminated all VMs and upgraded any extension packs. If this error + * persists, try re-installing VirtualBox. */ +#define VERR_PDM_DEVICE_VERSION_MISMATCH (-2876) +/** Generic USB device structure version mismatch. + * + * If you have upgraded VirtualBox recently, please make sure you have + * terminated all VMs and upgraded any extension packs. If this error + * persists, try re-installing VirtualBox. */ +#define VERR_PDM_USBDEV_VERSION_MISMATCH (-2877) +/** Generic driver structure version mismatch. + * + * If you have upgraded VirtualBox recently, please make sure you have + * terminated all VMs and upgraded any extension packs. If this error + * persists, try re-installing VirtualBox. */ +#define VERR_PDM_DRIVER_VERSION_MISMATCH (-2878) +/** PDMVMMDevHeapR3ToGCPhys failure. */ +#define VERR_PDM_DEV_HEAP_R3_TO_GCPHYS (-2879) +/** A legacy device isn't implementing the HPET notification interface. */ +#define VERR_PDM_HPET_LEGACY_NOTIFY_MISSING (-2880) +/** Internal processing error in the critical section code. */ +#define VERR_PDM_CRITSECT_IPE (-2881) +/** The critical section being deleted was not found. */ +#define VERR_PDM_CRITSECT_NOT_FOUND (-2882) +/** A PDMThread API was called by the wrong thread. */ +#define VERR_PDM_THREAD_INVALID_CALLER (-2883) +/** Internal processing error \#1 in the PDM Thread code. */ +#define VERR_PDM_THREAD_IPE_1 (-2884) +/** Internal processing error \#2 in the PDM Thread code. */ +#define VERR_PDM_THREAD_IPE_2 (-2885) +/** Only one PCI function is supported per PDM device. */ +#define VERR_PDM_ONE_PCI_FUNCTION_PER_DEVICE (-2886) +/** Bad PCI configuration. */ +#define VERR_PDM_BAD_PCI_CONFIG (-2887) +/** Internal processing error # in the PDM device code. */ +#define VERR_PDM_DEV_IPE_1 (-2888) +/** Misconfigured driver chain transformation. */ +#define VERR_PDM_MISCONFIGURED_DRV_TRANSFORMATION (-2889) +/** The driver is already removed, not more transformations possible (at + * present). */ +#define VERR_PDM_CANNOT_TRANSFORM_REMOVED_DRIVER (-2890) +/** The PCI device isn't configured as a busmaster, physical memory access + * rejected. */ +#define VERR_PDM_NOT_PCI_BUS_MASTER (-2891) +/** Got into a part of PDM that is not used when HM (VT-x/AMD-V) is enabled. */ +#define VERR_PDM_HM_IPE (-2892) +/** @} */ + + +/** @name Host-Guest Communication Manager (HGCM) Status Codes + * @{ + */ +/** Requested service does not exist. */ +#define VERR_HGCM_SERVICE_NOT_FOUND (-2900) +/** Service rejected client connection */ +#define VINF_HGCM_CLIENT_REJECTED 2901 +/** Command address is invalid. */ +#define VERR_HGCM_INVALID_CMD_ADDRESS (-2902) +/** Service will execute the command in background. */ +#define VINF_HGCM_ASYNC_EXECUTE 2903 +/** HGCM could not perform requested operation because of an internal error. */ +#define VERR_HGCM_INTERNAL (-2904) +/** Invalid HGCM client id. */ +#define VERR_HGCM_INVALID_CLIENT_ID (-2905) +/** The HGCM is saving state. */ +#define VINF_HGCM_SAVE_STATE (2906) +/** Requested service already exists. */ +#define VERR_HGCM_SERVICE_EXISTS (-2907) + +/** @} */ + + +/** @name Network Address Translation Driver (DrvNAT) Status Codes + * @{ + */ +/** Failed to find the DNS configured for this machine. */ +#define VINF_NAT_DNS 3000 +/** Failed to convert the specified Guest IP to a binary IP address. + * Malformed input. */ +#define VERR_NAT_REDIR_GUEST_IP (-3001) +/** Failed while setting up a redirector rule. + * There probably is a conflict between the rule and some existing + * service on the computer. */ +#define VERR_NAT_REDIR_SETUP (-3002) +/** @} */ + + +/** @name HostIF Driver (DrvTUN) Status Codes + * @{ + */ +/** The Host Interface Networking init program failed. */ +#define VERR_HOSTIF_INIT_FAILED (-3100) +/** The Host Interface Networking device name is too long. */ +#define VERR_HOSTIF_DEVICE_NAME_TOO_LONG (-3101) +/** The Host Interface Networking name config IOCTL call failed. */ +#define VERR_HOSTIF_IOCTL (-3102) +/** Failed to make the Host Interface Networking handle non-blocking. */ +#define VERR_HOSTIF_BLOCKING (-3103) +/** If a Host Interface Networking filehandle was specified it's not allowed to + * have any init or term programs. */ +#define VERR_HOSTIF_FD_AND_INIT_TERM (-3104) +/** The Host Interface Networking terminate program failed. */ +#define VERR_HOSTIF_TERM_FAILED (-3105) +/** @} */ + + +/** @name VBox HDD Container (VD) Status Codes + * @{ + */ +/** Invalid image type. */ +#define VERR_VD_INVALID_TYPE (-3200) +/** Operation can't be done in current HDD container state. */ +#define VERR_VD_INVALID_STATE (-3201) +/** Configuration value not found. */ +#define VERR_VD_VALUE_NOT_FOUND (-3202) +/** Virtual HDD is not opened. */ +#define VERR_VD_NOT_OPENED (-3203) +/** Requested image is not opened. */ +#define VERR_VD_IMAGE_NOT_FOUND (-3204) +/** Image is read-only. */ +#define VERR_VD_IMAGE_READ_ONLY (-3205) +/** Geometry hasn't been set. */ +#define VERR_VD_GEOMETRY_NOT_SET (-3206) +/** No data for this block in image. */ +#define VERR_VD_BLOCK_FREE (-3207) +/** Differencing and parent images can't be used together due to UUID. */ +#define VERR_VD_UUID_MISMATCH (-3208) +/** Asynchronous I/O request finished. */ +#define VINF_VD_ASYNC_IO_FINISHED 3209 +/** Asynchronous I/O is not finished yet. */ +#define VERR_VD_ASYNC_IO_IN_PROGRESS (-3210) +/** The image is too small or too large for this format. */ +#define VERR_VD_INVALID_SIZE (-3211) +/** Configuration value is unknown. This indicates misconfiguration. */ +#define VERR_VD_UNKNOWN_CFG_VALUES (-3212) +/** Interface is unknown. This indicates misconfiguration. */ +#define VERR_VD_UNKNOWN_INTERFACE (-3213) +/** The DEK for disk encryption is missing. */ +#define VERR_VD_DEK_MISSING (-3214) +/** The provided password to decrypt the DEK was incorrect. */ +#define VERR_VD_PASSWORD_INCORRECT (-3215) +/** Generic: Invalid image file header. Use this for plugins. */ +#define VERR_VD_GEN_INVALID_HEADER (-3220) +/** VDI: Invalid image file header. */ +#define VERR_VD_VDI_INVALID_HEADER (-3230) +/** VDI: Invalid image file header: invalid signature. */ +#define VERR_VD_VDI_INVALID_SIGNATURE (-3231) +/** VDI: Invalid image file header: invalid version. */ +#define VERR_VD_VDI_UNSUPPORTED_VERSION (-3232) +/** Comment string is too long. */ +#define VERR_VD_VDI_COMMENT_TOO_LONG (-3233) +/** VMDK: Invalid image file header. */ +#define VERR_VD_VMDK_INVALID_HEADER (-3240) +/** VMDK: Invalid image file header: invalid version. */ +#define VERR_VD_VMDK_UNSUPPORTED_VERSION (-3241) +/** VMDK: Image property not found. */ +#define VERR_VD_VMDK_VALUE_NOT_FOUND (-3242) +/** VMDK: Operation can't be done in current image state. */ +#define VERR_VD_VMDK_INVALID_STATE (-3243) +/** VMDK: Format is invalid/inconsistent. */ +#define VERR_VD_VMDK_INVALID_FORMAT (-3244) +/** VMDK: Invalid write position. */ +#define VERR_VD_VMDK_INVALID_WRITE (-3245) +/** iSCSI: Invalid header, i.e. dummy for validity check. */ +#define VERR_VD_ISCSI_INVALID_HEADER (-3250) +/** iSCSI: Operation can't be done in current image state. */ +#define VERR_VD_ISCSI_INVALID_STATE (-3251) +/** iSCSI: Invalid device type (not a disk). */ +#define VERR_VD_ISCSI_INVALID_TYPE (-3252) +/** iSCSI: Initiator secret not decrypted */ +#define VERR_VD_ISCSI_SECRET_ENCRYPTED (-3253) +/** VHD: Invalid image file header. */ +#define VERR_VD_VHD_INVALID_HEADER (-3260) +/** Parallels HDD: Invalid image file header. */ +#define VERR_VD_PARALLELS_INVALID_HEADER (-3265) +/** DMG: Invalid image file header. */ +#define VERR_VD_DMG_INVALID_HEADER (-3267) +/** Raw: Invalid image file header. */ +#define VERR_VD_RAW_INVALID_HEADER (-3270) +/** Raw: Invalid image file type. */ +#define VERR_VD_RAW_INVALID_TYPE (-3271) +/** The backend needs more metadata before it can continue. */ +#define VERR_VD_NOT_ENOUGH_METADATA (-3272) +/** Halt the current I/O context until further notification from the backend. */ +#define VERR_VD_IOCTX_HALT (-3273) +/** The disk has a cache attached already. */ +#define VERR_VD_CACHE_ALREADY_EXISTS (-3274) +/** There is no cache attached to the disk. */ +#define VERR_VD_CACHE_NOT_FOUND (-3275) +/** The cache is not up to date with the image. */ +#define VERR_VD_CACHE_NOT_UP_TO_DATE (-3276) +/** The given range does not meet the required alignment. */ +#define VERR_VD_DISCARD_ALIGNMENT_NOT_MET (-3277) +/** The discard operation is not supported for this image. */ +#define VERR_VD_DISCARD_NOT_SUPPORTED (-3278) +/** The image is the correct format but is corrupted. */ +#define VERR_VD_IMAGE_CORRUPTED (-3279) +/** Repairing the image is not supported. */ +#define VERR_VD_IMAGE_REPAIR_NOT_SUPPORTED (-3280) +/** Repairing the image is not possible because the corruption is to severe. */ +#define VERR_VD_IMAGE_REPAIR_IMPOSSIBLE (-3281) +/** Reading from the image was not possible because the offset is out of the image range. + * This usually indicates that there is a minor corruption in the image meta data. */ +#define VERR_VD_READ_OUT_OF_RANGE (-3282) +/** Block read was marked as free in the image and returned as a zero block. */ +#define VINF_VD_NEW_ZEROED_BLOCK 3283 +/** Unable to parse the XML in DMG file. */ +#define VERR_VD_DMG_XML_PARSE_ERROR (-3284) +/** Unable to locate a usable DMG file within the XAR archive. */ +#define VERR_VD_DMG_NOT_FOUND_INSIDE_XAR (-3285) +/** @} */ + + +/** @name VBox Guest Library (VBGL) Status Codes + * @{ + */ +/** Library was not initialized. */ +#define VERR_VBGL_NOT_INITIALIZED (-3300) +/** Virtual address was not allocated by the library. */ +#define VERR_VBGL_INVALID_ADDR (-3301) +/** IOCtl to VBoxGuest driver failed. */ +#define VERR_VBGL_IOCTL_FAILED (-3302) +/** @} */ + + +/** @name VBox USB (VUSB) Status Codes + * @{ + */ +/** No available ports on the hub. + * This error is returned when a device is attempted created and/or attached + * to a hub which is out of ports. */ +#define VERR_VUSB_NO_PORTS (-3400) +/** The requested operation cannot be performed on a detached USB device. */ +#define VERR_VUSB_DEVICE_NOT_ATTACHED (-3401) +/** Failed to allocate memory for a URB. */ +#define VERR_VUSB_NO_URB_MEMORY (-3402) +/** General failure during URB queuing. + * This will go away when the queueing gets proper status code handling. */ +#define VERR_VUSB_FAILED_TO_QUEUE_URB (-3403) +/** Device creation failed because the USB device name was not found. */ +#define VERR_VUSB_DEVICE_NAME_NOT_FOUND (-3404) +/** Not permitted to open the USB device. + * The user doesn't have access to the device in the usbfs, check the mount options. */ +#define VERR_VUSB_USBFS_PERMISSION (-3405) +/** The requested operation cannot be performed because the device + * is currently being reset. */ +#define VERR_VUSB_DEVICE_IS_RESETTING (-3406) +/** The requested operation cannot be performed because the device + * is currently suspended. */ +#define VERR_VUSB_DEVICE_IS_SUSPENDED (-3407) +/** Not permitted to open the USB device. + * The user doesn't have access to the device node, check group memberships. */ +#define VERR_VUSB_USB_DEVICE_PERMISSION (-3408) +/** @} */ + + +/** @name VBox VGA Status Codes + * @{ + */ +/** One of the custom modes was incorrect. + * The format or bit count of the custom mode value is invalid. */ +#define VERR_VGA_INVALID_CUSTOM_MODE (-3500) +/** The display connector is resizing. */ +#define VINF_VGA_RESIZE_IN_PROGRESS (3501) +/** @} */ + + +/** @name Internal Networking Status Codes + * @{ + */ +/** The networking interface to filter was not found. */ +#define VERR_INTNET_FLT_IF_NOT_FOUND (-3600) +/** The networking interface to filter was busy (used by someone). */ +#define VERR_INTNET_FLT_IF_BUSY (-3601) +/** Failed to create or connect to a networking interface filter. */ +#define VERR_INTNET_FLT_IF_FAILED (-3602) +/** The network already exists with a different trunk configuration. */ +#define VERR_INTNET_INCOMPATIBLE_TRUNK (-3603) +/** The network already exists with a different security profile (restricted / public). */ +#define VERR_INTNET_INCOMPATIBLE_FLAGS (-3604) +/** Failed to create a virtual network interface instance. */ +#define VERR_INTNET_FLT_VNIC_CREATE_FAILED (-3605) +/** Failed to retrieve a virtual network interface link ID. */ +#define VERR_INTNET_FLT_VNIC_LINK_ID_NOT_FOUND (-3606) +/** Failed to initialize a virtual network interface instance. */ +#define VERR_INTNET_FLT_VNIC_INIT_FAILED (-3607) +/** Failed to open a virtual network interface instance. */ +#define VERR_INTNET_FLT_VNIC_OPEN_FAILED (-3608) +/** Failed to retrieve underlying (lower mac) link. */ +#define VERR_INTNET_FLT_LOWER_LINK_INFO_NOT_FOUND (-3609) +/** Failed to open underlying link instance. */ +#define VERR_INTNET_FLT_LOWER_LINK_OPEN_FAILED (-3610) +/** Failed to get underlying link ID. */ +#define VERR_INTNET_FLT_LOWER_LINK_ID_NOT_FOUND (-3611) +/** @} */ + + +/** @name Support Driver Status Codes + * @{ + */ +/** The component factory was not found. */ +#define VERR_SUPDRV_COMPONENT_NOT_FOUND (-3700) +/** The component factories do not support the requested interface. */ +#define VERR_SUPDRV_INTERFACE_NOT_SUPPORTED (-3701) +/** The service module was not found. */ +#define VERR_SUPDRV_SERVICE_NOT_FOUND (-3702) +/** The host kernel is too old. */ +#define VERR_SUPDRV_KERNEL_TOO_OLD_FOR_VTX (-3703) +/** Bad VTG magic value. */ +#define VERR_SUPDRV_VTG_MAGIC (-3704) +/** Bad VTG bit count value. */ +#define VERR_SUPDRV_VTG_BITS (-3705) +/** Bad VTG header - misc. */ +#define VERR_SUPDRV_VTG_BAD_HDR_MISC (-3706) +/** Bad VTG header - offset. */ +#define VERR_SUPDRV_VTG_BAD_HDR_OFF (-3707) +/** Bad VTG header - offset. */ +#define VERR_SUPDRV_VTG_BAD_HDR_PTR (-3708) +/** Bad VTG header - to low value. */ +#define VERR_SUPDRV_VTG_BAD_HDR_TOO_FEW (-3709) +/** Bad VTG header - to high value. */ +#define VERR_SUPDRV_VTG_BAD_HDR_TOO_MUCH (-3710) +/** Bad VTG header - size value is not a multiple of the structure size. */ +#define VERR_SUPDRV_VTG_BAD_HDR_NOT_MULTIPLE (-3711) +/** Bad VTG string table offset. */ +#define VERR_SUPDRV_VTG_STRTAB_OFF (-3712) +/** Bad VTG string. */ +#define VERR_SUPDRV_VTG_BAD_STRING (-3713) +/** VTG string is too long. */ +#define VERR_SUPDRV_VTG_STRING_TOO_LONG (-3714) +/** Bad VTG attribute value. */ +#define VERR_SUPDRV_VTG_BAD_ATTR (-3715) +/** Bad VTG provider descriptor. */ +#define VERR_SUPDRV_VTG_BAD_PROVIDER (-3716) +/** Bad VTG probe descriptor. */ +#define VERR_SUPDRV_VTG_BAD_PROBE (-3717) +/** Bad VTG argument list descriptor. */ +#define VERR_SUPDRV_VTG_BAD_ARGLIST (-3718) +/** Bad VTG probe enabled data. */ +#define VERR_SUPDRV_VTG_BAD_PROBE_ENABLED (-3719) +/** Bad VTG probe location record. */ +#define VERR_SUPDRV_VTG_BAD_PROBE_LOC (-3720) +/** The VTG object for the session or image has already been registered. */ +#define VERR_SUPDRV_VTG_ALREADY_REGISTERED (-3721) +/** A driver may only register one VTG object per session. */ +#define VERR_SUPDRV_VTG_ONLY_ONCE_PER_SESSION (-3722) +/** A tracer has already been registered. */ +#define VERR_SUPDRV_TRACER_ALREADY_REGISTERED (-3723) +/** The session has no tracer associated with it. */ +#define VERR_SUPDRV_TRACER_NOT_REGISTERED (-3724) +/** The tracer has already been opened in this sesssion. */ +#define VERR_SUPDRV_TRACER_ALREADY_OPENED (-3725) +/** The tracer has not been opened. */ +#define VERR_SUPDRV_TRACER_NOT_OPENED (-3726) +/** There is no tracer present. */ +#define VERR_SUPDRV_TRACER_NOT_PRESENT (-3727) +/** The tracer is unloading. */ +#define VERR_SUPDRV_TRACER_UNLOADING (-3728) +/** Another thread in the session is talking to the tracer. */ +#define VERR_SUPDRV_TRACER_SESSION_BUSY (-3729) +/** The tracer cannot open it self in the same session. */ +#define VERR_SUPDRV_TRACER_CANNOT_OPEN_SELF (-3730) +/** Bad argument flags. */ +#define VERR_SUPDRV_TRACER_BAD_ARG_FLAGS (-3731) +/** The session has reached the max number of (user mode) providers. */ +#define VERR_SUPDRV_TRACER_TOO_MANY_PROVIDERS (-3732) +/** The tracepoint provider object is too large. */ +#define VERR_SUPDRV_TRACER_TOO_LARGE (-3733) +/** The probe location array isn't adjacent to the probe enable array. */ +#define VERR_SUPDRV_TRACER_UMOD_NOT_ADJACENT (-3734) +/** The user mode tracepoint provider has too many probe locations and + * probes. */ +#define VERR_SUPDRV_TRACER_UMOD_TOO_MANY_PROBES (-3735) +/** The user mode tracepoint provider string table is too large. */ +#define VERR_SUPDRV_TRACER_UMOD_STRTAB_TOO_BIG (-3736) +/** The user mode tracepoint provider string table offset is bad. */ +#define VERR_SUPDRV_TRACER_UMOD_STRTAB_OFF_BAD (-3737) +/** The VM process was denied access to vboxdrv because someone have managed to + * open the process or its main thread with too broad access rights. */ +#define VERR_SUPDRV_HARDENING_EVIL_HANDLE (-3738) +/** Error opening the ApiPort LPC object. */ +#define VERR_SUPDRV_APIPORT_OPEN_ERROR (-3739) +/** Error enumerating all processes in the session. */ +#define VERR_SUPDRV_SESSION_PROCESS_ENUM_ERROR (-3740) +/** The CSRSS instance associated with the client process could not be + * located. */ +#define VERR_SUPDRV_CSRSS_NOT_FOUND (-3741) +/** Type error opening the ApiPort LPC object. */ +#define VERR_SUPDRV_APIPORT_OPEN_ERROR_TYPE (-3742) +/** Failed to measure the TSC delta between two CPUs. */ +#define VERR_SUPDRV_TSC_DELTA_MEASUREMENT_FAILED (-3743) +/** Failed to calculate the TSC frequency. */ +#define VERR_SUPDRV_TSC_FREQ_MEASUREMENT_FAILED (-3744) +/** Failed to get the delta-adjusted TSC value. */ +#define VERR_SUPDRV_TSC_READ_FAILED (-3745) +/** Failed to measure the TSC delta between two CPUs, continue without any + * TSC-delta. */ +#define VWRN_SUPDRV_TSC_DELTA_MEASUREMENT_FAILED 3746 +/** A TSC-delta measurement request is currently being serviced. */ +#define VERR_SUPDRV_TSC_DELTA_MEASUREMENT_BUSY (-3747) +/** @} */ + + +/** @name Support Library Status Codes + * @{ + */ +/** The specified path was not absolute (hardening). */ +#define VERR_SUPLIB_PATH_NOT_ABSOLUTE (-3750) +/** The specified path was not clean (hardening). */ +#define VERR_SUPLIB_PATH_NOT_CLEAN (-3751) +/** The specified path is too long (hardening). */ +#define VERR_SUPLIB_PATH_TOO_LONG (-3752) +/** The specified path is too short (hardening). */ +#define VERR_SUPLIB_PATH_TOO_SHORT (-3753) +/** The specified path has too many components (hardening). */ +#define VERR_SUPLIB_PATH_TOO_MANY_COMPONENTS (-3754) +/** The specified path is a root path (hardening). */ +#define VERR_SUPLIB_PATH_IS_ROOT (-3755) +/** Failed to enumerate directory (hardening). */ +#define VERR_SUPLIB_DIR_ENUM_FAILED (-3756) +/** Failed to stat a file/dir during enumeration (hardening). */ +#define VERR_SUPLIB_STAT_ENUM_FAILED (-3757) +/** Failed to stat a file/dir (hardening). */ +#define VERR_SUPLIB_STAT_FAILED (-3758) +/** Failed to fstat a native handle (hardening). */ +#define VERR_SUPLIB_FSTAT_FAILED (-3759) +/** Found an illegal symbolic link (hardening). */ +#define VERR_SUPLIB_SYMLINKS_ARE_NOT_PERMITTED (-3760) +/** Found something which isn't a file nor a directory (hardening). */ +#define VERR_SUPLIB_NOT_DIR_NOT_FILE (-3761) +/** The specified path is a directory and not a file (hardening). */ +#define VERR_SUPLIB_IS_DIRECTORY (-3762) +/** The specified path is a file and not a directory (hardening). */ +#define VERR_SUPLIB_IS_FILE (-3763) +/** The path is not the same object as the native handle (hardening). */ +#define VERR_SUPLIB_NOT_SAME_OBJECT (-3764) +/** The owner is not root (hardening). */ +#define VERR_SUPLIB_OWNER_NOT_ROOT (-3765) +/** The group is a non-system group and it has write access (hardening). */ +#define VERR_SUPLIB_WRITE_NON_SYS_GROUP (-3766) +/** The file or directory is world writable (hardening). */ +#define VERR_SUPLIB_WORLD_WRITABLE (-3767) +/** The argv[0] of an internal application does not match the executable image + * path (hardening). */ +#define VERR_SUPLIB_INVALID_ARGV0_INTERNAL (-3768) +/** The internal application does not reside in the correct place (hardening). */ +#define VERR_SUPLIB_INVALID_INTERNAL_APP_DIR (-3769) +/** Unable to establish trusted of VM process (0). */ +#define VERR_SUPLIB_NT_PROCESS_UNTRUSTED_0 (-3770) +/** Unable to establish trusted of VM process (1). */ +#define VERR_SUPLIB_NT_PROCESS_UNTRUSTED_1 (-3771) +/** Unable to establish trusted of VM process (2). */ +#define VERR_SUPLIB_NT_PROCESS_UNTRUSTED_2 (-3772) +/** Unable to establish trusted of VM process (3). */ +#define VERR_SUPLIB_NT_PROCESS_UNTRUSTED_3 (-3773) +/** Unable to establish trusted of VM process (4). */ +#define VERR_SUPLIB_NT_PROCESS_UNTRUSTED_4 (-3774) +/** Unable to establish trusted of VM process (5). */ +#define VERR_SUPLIB_NT_PROCESS_UNTRUSTED_5 (-3775) +/** @} */ + + +/** @name VBox GMM Status Codes + * @{ + */ +/** The GMM is out of pages and needs to be give another chunk of user memory that + * it can lock down and borrow pages from. */ +#define VERR_GMM_SEED_ME (-3800) +/** Unable to allocate more pages from the host system. */ +#define VERR_GMM_OUT_OF_MEMORY (-3801) +/** Hit the global allocation limit. + * If you know there is still sufficient memory available, try raising the limit. */ +#define VERR_GMM_HIT_GLOBAL_LIMIT (-3802) +/** Hit the a VM account limit. */ +#define VERR_GMM_HIT_VM_ACCOUNT_LIMIT (-3803) +/** Attempt to free more memory than what was previously allocated. */ +#define VERR_GMM_ATTEMPT_TO_FREE_TOO_MUCH (-3804) +/** Attempted to report too many pages as deflated. */ +#define VERR_GMM_ATTEMPT_TO_DEFLATE_TOO_MUCH (-3805) +/** The page to be freed or updated was not found. */ +#define VERR_GMM_PAGE_NOT_FOUND (-3806) +/** The specified shared page was not actually private. */ +#define VERR_GMM_PAGE_NOT_PRIVATE (-3807) +/** The specified shared page was not actually shared. */ +#define VERR_GMM_PAGE_NOT_SHARED (-3808) +/** The page to be freed was already freed. */ +#define VERR_GMM_PAGE_ALREADY_FREE (-3809) +/** The page to be updated or freed was noted owned by the caller. */ +#define VERR_GMM_NOT_PAGE_OWNER (-3810) +/** The specified chunk was not found. */ +#define VERR_GMM_CHUNK_NOT_FOUND (-3811) +/** The chunk has already been mapped into the process. */ +#define VERR_GMM_CHUNK_ALREADY_MAPPED (-3812) +/** The chunk to be unmapped isn't actually mapped into the process. */ +#define VERR_GMM_CHUNK_NOT_MAPPED (-3813) +/** The chunk has been mapped too many times already (impossible). */ +#define VERR_GMM_TOO_MANY_CHUNK_MAPPINGS (-3814) +/** The reservation or reservation update was declined - too many VMs, too + * little memory, and/or too low GMM configuration. */ +#define VERR_GMM_MEMORY_RESERVATION_DECLINED (-3815) +/** A GMM sanity check failed. */ +#define VERR_GMM_IS_NOT_SANE (-3816) +/** Inserting a new chunk failed. */ +#define VERR_GMM_CHUNK_INSERT (-3817) +/** Failed to obtain the GMM instance. */ +#define VERR_GMM_INSTANCE (-3818) +/** Bad mutex semaphore flags. */ +#define VERR_GMM_MTX_FLAGS (-3819) +/** Internal processing error in the page allocator. */ +#define VERR_GMM_ALLOC_PAGES_IPE (-3820) +/** Invalid page count given to GMMR3FreePagesPerform. */ +#define VERR_GMM_ACTUAL_PAGES_IPE (-3821) +/** The shared module name is too long. */ +#define VERR_GMM_MODULE_NAME_TOO_LONG (-3822) +/** The shared module version string is too long. */ +#define VERR_GMM_MODULE_VERSION_TOO_LONG (-3823) +/** The shared module has too many regions. */ +#define VERR_GMM_TOO_MANY_REGIONS (-3824) +/** The guest has reported too many modules. */ +#define VERR_GMM_TOO_MANY_PER_VM_MODULES (-3825) +/** The guest has reported too many modules. */ +#define VERR_GMM_TOO_MANY_GLOBAL_MODULES (-3826) +/** The shared module is already registered. */ +#define VINF_GMM_SHARED_MODULE_ALREADY_REGISTERED (3827) +/** The shared module clashed address wise with a previously registered + * module. */ +#define VERR_GMM_SHARED_MODULE_ADDRESS_CLASH (-3828) +/** The shared module was not found. */ +#define VERR_GMM_SHARED_MODULE_NOT_FOUND (-3829) +/** The size of the shared module was out of range. */ +#define VERR_GMM_BAD_SHARED_MODULE_SIZE (-3830) +/** The size of the one or more regions in the shared module was out of + * range. */ +#define VERR_GMM_SHARED_MODULE_BAD_REGIONS_SIZE (-3831) +/** @} */ + + +/** @name VBox GVM Status Codes + * @{ + */ +/** The GVM is out of VM handle space. */ +#define VERR_GVM_TOO_MANY_VMS (-3900) +/** The EMT was not blocked at the time of the call. */ +#define VINF_GVM_NOT_BLOCKED 3901 +/** The EMT was not busy running guest code at the time of the call. */ +#define VINF_GVM_NOT_BUSY_IN_GC 3902 +/** RTThreadYield was called during a GVMMR0SchedPoll call. */ +#define VINF_GVM_YIELDED 3903 +/** @} */ + + +/** @name VBox VMX Status Codes + * @{ + */ +/** VMXON failed; possibly because it was already run before. */ +#define VERR_VMX_VMXON_FAILED (-4000) +/** Invalid VMCS pointer. + * (Can be OR'ed with VERR_VMX_INVALID_VMCS_FIELD.) */ +#define VERR_VMX_INVALID_VMCS_PTR (-4001) +/** Invalid VMCS index or write to read-only element. */ +#define VERR_VMX_INVALID_VMCS_FIELD (-4002) +/** Reserved for future status code that we wish to OR with + * VERR_VMX_INVALID_VMCS_PTR and VERR_VMX_INVALID_VMCS_FIELD. */ +#define VERR_VMX_RESERVED (-4003) +/** Invalid VMXON pointer. */ +#define VERR_VMX_INVALID_VMXON_PTR (-4004) +/** Unable to start VM execution. */ +#define VERR_VMX_UNABLE_TO_START_VM (-4005) +/** Unable to switch due to invalid host state. */ +#define VERR_VMX_INVALID_HOST_STATE (-4006) +/** IA32_FEATURE_CONTROL MSR not setup correcty (turn on VMX in the host system BIOS) */ +#define VERR_VMX_ILLEGAL_FEATURE_CONTROL_MSR (-4007) +/** Invalid CPU mode for VMX execution. */ +#define VERR_VMX_UNSUPPORTED_MODE (-4008) +/** VMX CPU extension not available */ +#define VERR_VMX_NO_VMX (-4009) +/** CPU was incorrectly left in VMX root mode; incompatible with VirtualBox */ +#define VERR_VMX_IN_VMX_ROOT_MODE (-4011) +/** Somebody cleared X86_CR4_VMXE in the CR4 register. */ +#define VERR_VMX_X86_CR4_VMXE_CLEARED (-4012) +/** Failed to enable and lock VT-x features. */ +#define VERR_VMX_MSR_LOCKING_FAILED (-4013) +/** Unable to switch due to invalid guest state. */ +#define VERR_VMX_INVALID_GUEST_STATE (-4014) +/** Unexpected VM exit. */ +#define VERR_VMX_UNEXPECTED_EXIT (-4015) +/** Unexpected VM exception. */ +#define VERR_VMX_UNEXPECTED_EXCEPTION (-4016) +/** Unexpected interruption exit type. */ +#define VERR_VMX_UNEXPECTED_INTERRUPTION_EXIT_TYPE (-4017) +/** CPU is not in VMX root mode; unexpected when leaving VMX root mode. */ +#define VERR_VMX_NOT_IN_VMX_ROOT_MODE (-4018) +/** Undefined VM exit code. */ +#define VERR_VMX_UNDEFINED_EXIT_CODE (-4019) +/** VMPTRLD failed; possibly because of invalid VMCS launch-state. */ +#define VERR_VMX_VMPTRLD_FAILED (-4021) +/** Invalid VMCS pointer passed to VMLAUNCH/VMRESUME. */ +#define VERR_VMX_INVALID_VMCS_PTR_TO_START_VM (-4022) +/** Internal VMX processing error no 1. */ +#define VERR_VMX_IPE_1 (-4023) +/** Internal VMX processing error no 2. */ +#define VERR_VMX_IPE_2 (-4024) +/** Internal VMX processing error no 3. */ +#define VERR_VMX_IPE_3 (-4025) +/** Internal VMX processing error no 4. */ +#define VERR_VMX_IPE_4 (-4026) +/** Internal VMX processing error no 5. */ +#define VERR_VMX_IPE_5 (-4027) +/** VT-x features for all modes (SMX and non-SMX) disabled by the BIOS. */ +#define VERR_VMX_MSR_ALL_VMXON_DISABLED (-4028) +/** VT-x features disabled by the BIOS. */ +#define VERR_VMX_MSR_VMXON_DISABLED (-4029) +/** VM-Entry Controls internal cache invalid. */ +#define VERR_VMX_ENTRY_CTLS_CACHE_INVALID (-4030) +/** VM-Exit Controls internal cache invalid. */ +#define VERR_VMX_EXIT_CTLS_CACHE_INVALID (-4031) +/** VM-Execution Pin-based Controls internal cache invalid. */ +#define VERR_VMX_PIN_EXEC_CTLS_CACHE_INVALID (-4032) +/** VM-Execution Primary Processor-based Controls internal cache + * invalid. */ +#define VERR_VMX_PROC_EXEC_CTLS_CACHE_INVALID (-4033) +/** VM-Execution Secondary Processor-based Controls internal + * cache invalid. */ +#define VERR_VMX_PROC_EXEC2_CTLS_CACHE_INVALID (-4034) +/** @} */ + + +/** @name VBox SVM Status Codes + * @{ + */ +/** Unable to start VM execution. */ +#define VERR_SVM_UNABLE_TO_START_VM (-4050) +/** AMD-V bit not set in K6_EFER MSR */ +#define VERR_SVM_ILLEGAL_EFER_MSR (-4051) +/** AMD-V CPU extension not available. */ +#define VERR_SVM_NO_SVM (-4052) +/** AMD-V CPU extension disabled (by BIOS). */ +#define VERR_SVM_DISABLED (-4053) +/** AMD-V CPU extension in-use. */ +#define VERR_SVM_IN_USE (-4054) +/** Invalid pVMCB. */ +#define VERR_SVM_INVALID_PVMCB (-4055) +/** Unexpected SVM exit. */ +#define VERR_SVM_UNEXPECTED_EXIT (-4056) +/** Unexpected SVM exception exit. */ +#define VERR_SVM_UNEXPECTED_XCPT_EXIT (-4057) +/** Unexpected SVM patch type. */ +#define VERR_SVM_UNEXPECTED_PATCH_TYPE (-4058) +/** Unable to start VM execution due to an invalid guest state. */ +#define VERR_SVM_INVALID_GUEST_STATE (-4059) +/** Unknown or unrecognized SVM exit. */ +#define VERR_SVM_UNKNOWN_EXIT (-4060) +/** Internal SVM processing error no 1. */ +#define VERR_SVM_IPE_1 (-4061) +/** Internal SVM processing error no 2. */ +#define VERR_SVM_IPE_2 (-4062) +/** Internal SVM processing error no 3. */ +#define VERR_SVM_IPE_3 (-4063) +/** Internal SVM processing error no 4. */ +#define VERR_SVM_IPE_4 (-4064) +/** Internal SVM processing error no 5. */ +#define VERR_SVM_IPE_5 (-4065) +/** @} */ + + +/** @name VBox HM Status Codes + * @{ + */ +/** Unable to start VM execution. */ +#define VERR_HM_UNKNOWN_CPU (-4100) +/** No CPUID support. */ +#define VERR_HM_NO_CPUID (-4101) +/** Host is about to go into suspend mode. */ +#define VERR_HM_SUSPEND_PENDING (-4102) +/** Conflicting CFGM values. */ +#define VERR_HM_CONFIG_MISMATCH (-4103) +/** Internal processing error in the HM init code. */ +#define VERR_HM_ALREADY_ENABLED_IPE (-4104) +/** Unexpected MSR in the auto-load/store area. */ +#define VERR_HM_UNEXPECTED_LD_ST_MSR (-4105) +/** No 32-bit to 64-bit switcher in place. */ +#define VERR_HM_NO_32_TO_64_SWITCHER (-4106) +/** HMR0Leave was called on the wrong CPU. */ +#define VERR_HM_WRONG_CPU (-4107) +/** Internal processing error \#1 in the HM code. */ +#define VERR_HM_IPE_1 (-4108) +/** Internal processing error \#2 in the HM code. */ +#define VERR_HM_IPE_2 (-4109) +/** Wrong 32/64-bit switcher. */ +#define VERR_HM_WRONG_SWITCHER (-4110) +/** Unknown I/O instruction. */ +#define VERR_HM_UNKNOWN_IO_INSTRUCTION (-4111) +/** Unsupported CPU feature combination. */ +#define VERR_HM_UNSUPPORTED_CPU_FEATURE_COMBO (-4112) +/** Internal processing error \#3 in the HM code. */ +#define VERR_HM_IPE_3 (-4113) +/** Internal processing error \#4 in the HM code. */ +#define VERR_HM_IPE_4 (-4114) +/** Internal processing error \#5 in the HM code. */ +#define VERR_HM_IPE_5 (-4115) +/** Invalid HM64ON32OP value. */ +#define VERR_HM_INVALID_HM64ON32OP (-4116) +/** Resume guest execution after injecting a double-fault. */ +#define VINF_HM_DOUBLE_FAULT 4117 +/** @} */ + + +/** @name VBox Disassembler Status Codes + * @{ + */ +/** Invalid opcode byte(s) */ +#define VERR_DIS_INVALID_OPCODE (-4200) +/** Generic failure during disassembly. */ +#define VERR_DIS_GEN_FAILURE (-4201) +/** No read callback. */ +#define VERR_DIS_NO_READ_CALLBACK (-4202) +/** Invalid Mod/RM. */ +#define VERR_DIS_INVALID_MODRM (-4203) +/** Invalid parameter index. */ +#define VERR_DIS_INVALID_PARAMETER (-4204) +/** The instruction is too long. */ +#define VERR_DIS_TOO_LONG_INSTR (-4206) +/** @} */ + + +/** @name VBox Webservice Status Codes + * @{ + */ +/** Authentication failed (ISessionManager::logon()) */ +#define VERR_WEB_NOT_AUTHENTICATED (-4300) +/** Invalid format of managed object reference */ +#define VERR_WEB_INVALID_MANAGED_OBJECT_REFERENCE (-4301) +/** Invalid session ID in managed object reference */ +#define VERR_WEB_INVALID_SESSION_ID (-4302) +/** Invalid object ID in managed object reference */ +#define VERR_WEB_INVALID_OBJECT_ID (-4303) +/** Unsupported interface for managed object reference */ +#define VERR_WEB_UNSUPPORTED_INTERFACE (-4304) +/** @} */ + + +/** @name VBox PARAV Status Codes + * @{ + */ +/** Switch back to host */ +#define VINF_PARAV_SWITCH_TO_HOST 4400 + +/** @} */ + +/** @name VBox Video HW Acceleration command status + * @{ + */ +/** command processing is pending, a completion handler will be called */ +#define VINF_VHWA_CMD_PENDING 4500 + +/** @} */ + + +/** @name VBox COM error codes + * + * @remarks Global::vboxStatusCodeToCOM and Global::vboxStatusCodeFromCOM uses + * these for conversion that is lossless with respect to important COM + * status codes. These methods should be moved to the glue library. + * @{ */ +/** Unexpected turn of events. */ +#define VERR_COM_UNEXPECTED (-4600) +/** The base of the VirtualBox COM status codes (the lower value) + * corresponding 1:1 to VBOX_E_XXX. This is the lowest value. */ +#define VERR_COM_VBOX_LOWEST (-4699) +/** Object corresponding to the supplied arguments does not exist. */ +#define VERR_COM_OBJECT_NOT_FOUND (VERR_COM_VBOX_LOWEST + 1) +/** Current virtual machine state prevents the operation. */ +#define VERR_COM_INVALID_VM_STATE (VERR_COM_VBOX_LOWEST + 2) +/** Virtual machine error occurred attempting the operation. */ +#define VERR_COM_VM_ERROR (VERR_COM_VBOX_LOWEST + 3) +/** File not accessible or erroneous file contents. */ +#define VERR_COM_FILE_ERROR (VERR_COM_VBOX_LOWEST + 4) +/** IPRT error. */ +#define VERR_COM_IPRT_ERROR (VERR_COM_VBOX_LOWEST + 5) +/** Pluggable Device Manager error. */ +#define VERR_COM_PDM_ERROR (VERR_COM_VBOX_LOWEST + 6) +/** Current object state prohibits operation. */ +#define VERR_COM_INVALID_OBJECT_STATE (VERR_COM_VBOX_LOWEST + 7) +/** Host operating system related error. */ +#define VERR_COM_HOST_ERROR (VERR_COM_VBOX_LOWEST + 8) +/** Requested operation is not supported. */ +#define VERR_COM_NOT_SUPPORTED (VERR_COM_VBOX_LOWEST + 9) +/** Invalid XML found. */ +#define VERR_COM_XML_ERROR (VERR_COM_VBOX_LOWEST + 10) +/** Current session state prohibits operation. */ +#define VERR_COM_INVALID_SESSION_STATE (VERR_COM_VBOX_LOWEST + 11) +/** Object being in use prohibits operation. */ +#define VERR_COM_OBJECT_IN_USE (VERR_COM_VBOX_LOWEST + 12) +/** Returned by callback methods which does not need to be called + * again because the client does not actually make use of them. */ +#define VERR_COM_DONT_CALL_AGAIN (VERR_COM_VBOX_LOWEST + 13) +/** @} */ + +/** @name VBox VMMDev Status codes + * @{ + */ +/** CPU hotplug events from VMMDev are not monitored by the guest. */ +#define VERR_VMMDEV_CPU_HOTPLUG_NOT_MONITORED_BY_GUEST (-4700) +/** @} */ + +/** @name VBox async I/O manager Status Codes + * @{ + */ +/** Async I/O task is pending, a completion handler will be called. */ +#define VINF_AIO_TASK_PENDING 4800 +/** @} */ + +/** @name VBox Virtual SCSI Status Codes + * @{ + */ +/** LUN type is not supported. */ +#define VERR_VSCSI_LUN_TYPE_NOT_SUPPORTED (-4900) +/** LUN is already/still attached to a device. */ +#define VERR_VSCSI_LUN_ATTACHED_TO_DEVICE (-4901) +/** The specified LUN is invalid. */ +#define VERR_VSCSI_LUN_INVALID (-4902) +/** The LUN is not attached to the device. */ +#define VERR_VSCSI_LUN_NOT_ATTACHED (-4903) +/** The LUN is still busy. */ +#define VERR_VSCSI_LUN_BUSY (-4904) +/** @} */ + +/** @name VBox FAM Status Codes + * @{ + */ +/** FAM failed to open a connection. */ +#define VERR_FAM_OPEN_FAILED (-5000) +/** FAM failed to add a file to the list to be monitored. */ +#define VERR_FAM_MONITOR_FILE_FAILED (-5001) +/** FAM failed to add a directory to the list to be monitored. */ +#define VERR_FAM_MONITOR_DIRECTORY_FAILED (-5002) +/** The connection to the FAM daemon was lost. */ +#define VERR_FAM_CONNECTION_LOST (-5003) +/** @} */ + + +/** @name PCI Passtrhough Status Codes + * @{ + */ +/** RamPreAlloc not set. + * RAM pre-allocation is currently a requirement for PCI passthrough. */ +#define VERR_PCI_PASSTHROUGH_NO_RAM_PREALLOC (-5100) +/** VT-x/AMD-V not active. + * PCI passthrough currently works only if VT-x/AMD-V is active. */ +#define VERR_PCI_PASSTHROUGH_NO_HM (-5101) +/** Nested paging not active. + * PCI passthrough currently works only if nested paging is active. */ +#define VERR_PCI_PASSTHROUGH_NO_NESTED_PAGING (-5102) +/** @} */ + + +/** @name GVMM Status Codes + * @{ + */ +/** Internal error obtaining the GVMM instance. */ +#define VERR_GVMM_INSTANCE (-5200) +/** GVMM does not support the range of CPUs present/possible on the host. */ +#define VERR_GVMM_HOST_CPU_RANGE (-5201) +/** GVMM ran into some broken IPRT code. */ +#define VERR_GVMM_BROKEN_IPRT (-5202) +/** Internal processing error \#1 in the GVMM code. */ +#define VERR_GVMM_IPE_1 (-5203) +/** Internal processing error \#2 in the GVMM code. */ +#define VERR_GVMM_IPE_2 (-5204) +/** @} */ + + +/** @name IEM Status Codes + * @{ */ +/** The instruction is not yet implemented by IEM. */ +#define VERR_IEM_INSTR_NOT_IMPLEMENTED (-5300) +/** Invalid operand size passed to an IEM function. */ +#define VERR_IEM_INVALID_OPERAND_SIZE (-5301) +/** Invalid address mode passed to an IEM function. */ +#define VERR_IEM_INVALID_ADDRESS_MODE (-5302) +/** Invalid effective segment register number passed to an IEM function. */ +#define VERR_IEM_INVALID_EFF_SEG (-5303) +/** Invalid instruction length passed to an IEM function. */ +#define VERR_IEM_INVALID_INSTR_LENGTH (-5304) +/** Internal status code for indicating that a selector isn't valid (LAR, LSL, + * VERR, VERW). This is not used outside the instruction implementations. */ +#define VINF_IEM_SELECTOR_NOT_OK (5305) +/** Restart the current instruction. For testing only. */ +#define VERR_IEM_RESTART_INSTRUCTION (-5389) +/** This particular aspect of the instruction is not yet implemented by IEM. */ +#define VERR_IEM_ASPECT_NOT_IMPLEMENTED (-5390) +/** Internal processing error \#1 in the IEM code. */ +#define VERR_IEM_IPE_1 (-5391) +/** Internal processing error \#2 in the IEM code. */ +#define VERR_IEM_IPE_2 (-5392) +/** Internal processing error \#3 in the IEM code. */ +#define VERR_IEM_IPE_3 (-5393) +/** Internal processing error \#4 in the IEM code. */ +#define VERR_IEM_IPE_4 (-5394) +/** Internal processing error \#5 in the IEM code. */ +#define VERR_IEM_IPE_5 (-5395) +/** Internal processing error \#6 in the IEM code. */ +#define VERR_IEM_IPE_6 (-5396) +/** Internal processing error \#7 in the IEM code. */ +#define VERR_IEM_IPE_7 (-5397) +/** Internal processing error \#8 in the IEM code. */ +#define VERR_IEM_IPE_8 (-5398) +/** Internal processing error \#9 in the IEM code. */ +#define VERR_IEM_IPE_9 (-5399) +/** @} */ + + +/** @name DBGC Status Codes + * @{ */ +/** Status that causes DBGC to quit. */ +#define VERR_DBGC_QUIT (-5400) +/** Async command pending. */ +#define VWRN_DBGC_CMD_PENDING 5401 +/** The command has already been registered. */ +#define VWRN_DBGC_ALREADY_REGISTERED 5402 +/** The command cannot be deregistered because has not been registered. */ +#define VERR_DBGC_COMMANDS_NOT_REGISTERED (-5403) +/** Unknown breakpoint. */ +#define VERR_DBGC_BP_NOT_FOUND (-5404) +/** The breakpoint already exists. */ +#define VERR_DBGC_BP_EXISTS (-5405) +/** The breakpoint has no command. */ +#define VINF_DBGC_BP_NO_COMMAND 5406 +/** Generic debugger command failure. */ +#define VERR_DBGC_COMMAND_FAILED (-5407) +/** Logic bug in the DBGC code.. */ +#define VERR_DBGC_IPE (-5408) + +/** The lowest parse status code. */ +#define VERR_DBGC_PARSE_LOWEST (-5499) +/** Syntax error - too few arguments. */ +#define VERR_DBGC_PARSE_TOO_FEW_ARGUMENTS (VERR_DBGC_PARSE_LOWEST + 0) +/** Syntax error - too many arguments. */ +#define VERR_DBGC_PARSE_TOO_MANY_ARGUMENTS (VERR_DBGC_PARSE_LOWEST + 1) +/** Syntax error - too many arguments for static storage. */ +#define VERR_DBGC_PARSE_ARGUMENT_OVERFLOW (VERR_DBGC_PARSE_LOWEST + 2) +/** Syntax error - expected binary operator. */ +#define VERR_DBGC_PARSE_EXPECTED_BINARY_OP (VERR_DBGC_PARSE_LOWEST + 3) + +/** Syntax error - the argument does not allow a range to be specified. */ +#define VERR_DBGC_PARSE_NO_RANGE_ALLOWED (VERR_DBGC_PARSE_LOWEST + 5) +/** Syntax error - unbalanced quotes. */ +#define VERR_DBGC_PARSE_UNBALANCED_QUOTE (VERR_DBGC_PARSE_LOWEST + 6) +/** Syntax error - unbalanced parenthesis. */ +#define VERR_DBGC_PARSE_UNBALANCED_PARENTHESIS (VERR_DBGC_PARSE_LOWEST + 7) +/** Syntax error - an argument or subargument contains nothing useful. */ +#define VERR_DBGC_PARSE_EMPTY_ARGUMENT (VERR_DBGC_PARSE_LOWEST + 8) +/** Syntax error - invalid operator usage. */ +#define VERR_DBGC_PARSE_UNEXPECTED_OPERATOR (VERR_DBGC_PARSE_LOWEST + 9) +/** Syntax error - invalid numeric value. */ +#define VERR_DBGC_PARSE_INVALID_NUMBER (VERR_DBGC_PARSE_LOWEST + 10) +/** Syntax error - numeric overflow. */ +#define VERR_DBGC_PARSE_NUMBER_TOO_BIG (VERR_DBGC_PARSE_LOWEST + 11) +/** Syntax error - invalid operation attempted. */ +#define VERR_DBGC_PARSE_INVALID_OPERATION (VERR_DBGC_PARSE_LOWEST + 12) +/** Syntax error - function not found. */ +#define VERR_DBGC_PARSE_FUNCTION_NOT_FOUND (VERR_DBGC_PARSE_LOWEST + 13) +/** Syntax error - the specified function is not a function. */ +#define VERR_DBGC_PARSE_NOT_A_FUNCTION (VERR_DBGC_PARSE_LOWEST + 14) +/** Syntax error - out of scratch memory. */ +#define VERR_DBGC_PARSE_NO_SCRATCH (VERR_DBGC_PARSE_LOWEST + 15) +/** Syntax error - out of regular heap memory. */ +#define VERR_DBGC_PARSE_NO_MEMORY (VERR_DBGC_PARSE_LOWEST + 16) +/** Syntax error - incorrect argument type. */ +#define VERR_DBGC_PARSE_INCORRECT_ARG_TYPE (VERR_DBGC_PARSE_LOWEST + 17) +/** Syntax error - an undefined variable was referenced. */ +#define VERR_DBGC_PARSE_VARIABLE_NOT_FOUND (VERR_DBGC_PARSE_LOWEST + 18) +/** Syntax error - a type conversion failed. */ +#define VERR_DBGC_PARSE_CONVERSION_FAILED (VERR_DBGC_PARSE_LOWEST + 19) +/** Syntax error - you hit a debugger feature which isn't implemented yet. + * (Feel free to help implement it.) */ +#define VERR_DBGC_PARSE_NOT_IMPLEMENTED (VERR_DBGC_PARSE_LOWEST + 20) +/** Syntax error - Couldn't satisfy a request for a specific result type. */ +#define VERR_DBGC_PARSE_BAD_RESULT_TYPE (VERR_DBGC_PARSE_LOWEST + 21) +/** Syntax error - Cannot read symbol value, it is a set-only symbol. */ +#define VERR_DBGC_PARSE_WRITEONLY_SYMBOL (VERR_DBGC_PARSE_LOWEST + 22) +/** Syntax error - Invalid command name. */ +#define VERR_DBGC_PARSE_INVALD_COMMAND_NAME (VERR_DBGC_PARSE_LOWEST + 23) +/** Syntax error - Command not found. */ +#define VERR_DBGC_PARSE_COMMAND_NOT_FOUND (VERR_DBGC_PARSE_LOWEST + 24) +/** Syntax error - buggy parser. */ +#define VERR_DBGC_PARSE_BUG (VERR_DBGC_PARSE_LOWEST + 25) +/** @} */ + + +/** @name Support driver/library shared verification status codes. + * @{ */ +/** Process Verification Failure: The memory content does not match the image + * file. */ +#define VERR_SUP_VP_MEMORY_VS_FILE_MISMATCH (-5600) +/** Process Verification Failure: The memory protection of a image file section + * does not match what the section header prescribes. */ +#define VERR_SUP_VP_SECTION_PROTECTION_MISMATCH (-5601) +/** Process Verification Failure: One of the section in the image file is not + * mapped into memory. */ +#define VERR_SUP_VP_SECTION_NOT_MAPPED (-5602) +/** Process Verification Failure: One of the section in the image file is not + * fully mapped into memory. */ +#define VERR_SUP_VP_SECTION_NOT_FULLY_MAPPED (-5603) +/** Process Verification Failure: Bad file alignment value in image header. */ +#define VERR_SUP_VP_BAD_FILE_ALIGNMENT_VALUE (-5604) +/** Process Verification Failure: Bad image base in header. */ +#define VERR_SUP_VP_BAD_IMAGE_BASE (-5605) +/** Process Verification Failure: Bad image signature. */ +#define VERR_SUP_VP_BAD_IMAGE_SIGNATURE (-5606) +/** Process Verification Failure: Bad image size. */ +#define VERR_SUP_VP_BAD_IMAGE_SIZE (-5607) +/** Process Verification Failure: Bad new-header offset in the MZ header. */ +#define VERR_SUP_VP_BAD_MZ_OFFSET (-5608) +/** Process Verification Failure: Bad optional header field. */ +#define VERR_SUP_VP_BAD_OPTIONAL_HEADER (-5609) +/** Process Verification Failure: Bad section alignment value in image + * header. */ +#define VERR_SUP_VP_BAD_SECTION_ALIGNMENT_VALUE (-5610) +/** Process Verification Failure: Bad section raw data size. */ +#define VERR_SUP_VP_BAD_SECTION_FILE_SIZE (-5611) +/** Process Verification Failure: Bad virtual section address. */ +#define VERR_SUP_VP_BAD_SECTION_RVA (-5612) +/** Process Verification Failure: Bad virtual section size. */ +#define VERR_SUP_VP_BAD_SECTION_VIRTUAL_SIZE (-5613) +/** Process Verification Failure: Bad size of image header. */ +#define VERR_SUP_VP_BAD_SIZE_OF_HEADERS (-5614) +/** Process Verification Failure: The process is being debugged. */ +#define VERR_SUP_VP_DEBUGGED (-5615) +/** Process Verification Failure: A DLL was found more than once. */ +#define VERR_SUP_VP_DUPLICATE_DLL_MAPPING (-5616) +/** Process Verification Failure: Image section region is too large. */ +#define VERR_SUP_VP_EMPTY_REGION_TOO_LARGE (-5617) +/** Process Verification Failure: Executable file name and process image name + * does not match up. */ +#define VERR_SUP_VP_EXE_VS_PROC_NAME_MISMATCH (-5618) +/** Process Verification Failure: Found executable memory allocated in the + * process. There is only supposed be executable memory associated with + * image file mappings (DLLs & EXE). */ +#define VERR_SUP_VP_FOUND_EXEC_MEMORY (-5619) +/** Process Verification Failure: There is more than one known executable mapped + * into the process. */ +#define VERR_SUP_VP_FOUND_MORE_THAN_ONE_EXE_MAPPING (-5620) +/** Process Verification Failure: Error closing image file handle. */ +#define VERR_SUP_VP_IMAGE_FILE_CLOSE_ERROR (-5621) +/** Process Verification Failure: Error opening image file. */ +#define VERR_SUP_VP_IMAGE_FILE_OPEN_ERROR (-5622) +/** Process Verification Failure: Error reading image file header. */ +#define VERR_SUP_VP_IMAGE_HDR_READ_ERROR (-5623) +/** Process Verification Failure: Image mapping is bogus as the first region + * has different AllocationBase and BaseAddress values, indicating that a + * section was unmapped or otherwise tampered with. */ +#define VERR_SUP_VP_IMAGE_MAPPING_BASE_ERROR (-5624) +/** Process Verification Failure: Error reading process memory for comparing + * with disk data. */ +#define VERR_SUP_VP_MEMORY_READ_ERROR (-5625) +/** Process Verification Failure: Found no executable mapped into the process + * address space. */ +#define VERR_SUP_VP_NO_FOUND_NO_EXE_MAPPING (-5626) +/** Process Verification Failure: An image mapping failed to report a name. */ +#define VERR_SUP_VP_NO_IMAGE_MAPPING_NAME (-5627) +/** Process Verification Failure: No KERNE32.DLL mapping found. This is + * impossible. */ +#define VERR_SUP_VP_NO_KERNEL32_MAPPING (-5628) +/** Process Verification Failure: Error allocating memory. */ +#define VERR_SUP_VP_NO_MEMORY (-5629) +/** Process Verification Failure: Error allocating state memory or querying + * the system32 path. */ +#define VERR_SUP_VP_NO_MEMORY_STATE (-5630) +/** Process Verification Failure: No NTDLL.DLL mapping found. This is + * impossible. */ +#define VERR_SUP_VP_NO_NTDLL_MAPPING (-5631) +/** Process Verification Failure: A DLL residing outside System32 was found + * in the process. */ +#define VERR_SUP_VP_NON_SYSTEM32_DLL (-5632) +/** Process Verification Failure: An unknown and unwanted DLL was found loaded + * into the process. */ +#define VERR_SUP_VP_NOT_KNOWN_DLL_OR_EXE (-5633) +/** Process Verification Failure: The name of an image file changes between + * mapping regions. */ +#define VERR_SUP_VP_NT_MAPPING_NAME_CHANGED (-5634) +/** Process Verification Failure: Error querying process name. */ +#define VERR_SUP_VP_NT_QI_PROCESS_NM_ERROR (-5635) +/** Process Verification Failure: Error querying thread information. */ +#define VERR_SUP_VP_NT_QI_THREAD_ERROR (-5636) +/** Process Verification Failure: Error query virtual memory information. */ +#define VERR_SUP_VP_NT_QI_VIRTUAL_MEMORY_ERROR (-5637) +/** Process Verification Failure: Error query virtual memory mapping name. */ +#define VERR_SUP_VP_NT_QI_VIRTUAL_MEMORY_NM_ERROR (-5638) +/** Process Verification Failure: Error determining the full path of + * System32. */ +#define VERR_SUP_VP_SYSTEM32_PATH (-5639) +/** Process Verification Failure: The process has more than one thread. */ +#define VERR_SUP_VP_THREAD_NOT_ALONE (-5640) +/** Process Verification Failure: The image mapping is too large (>= 2GB). */ +#define VERR_SUP_VP_TOO_HIGH_REGION_RVA (-5641) +/** Process Verification Failure: The memory region is too large (>= 2GB). */ +#define VERR_SUP_VP_TOO_LARGE_REGION (-5642) +/** Process Verification Failure: There are too many DLLs loaded. */ +#define VERR_SUP_VP_TOO_MANY_DLLS_LOADED (-5643) +/** Process Verification Failure: An image has too many regions. */ +#define VERR_SUP_VP_TOO_MANY_IMAGE_REGIONS (-5644) +/** Process Verification Failure: The process has too many virtual memory + * regions. */ +#define VERR_SUP_VP_TOO_MANY_MEMORY_REGIONS (-5645) +/** Process Verification Failure: An image has too many sections. */ +#define VERR_SUP_VP_TOO_MANY_SECTIONS (-5646) +/** Process Verification Failure: An image is targeting an unexpected + * machine/CPU. */ +#define VERR_SUP_VP_UNEXPECTED_IMAGE_MACHINE (-5647) +/** Process Verification Failure: Unexpected section protection flag + * combination. */ +#define VERR_SUP_VP_UNEXPECTED_SECTION_FLAGS (-5648) +/** Process Verification Failure: Expected the process and exe to have forced + * integrity checking enabled (verifying signatures). */ +#define VERR_SUP_VP_EXE_MISSING_FORCE_INTEGRITY (-5649) +/** Process Verification Failure: Expected the process and exe to have dynamic + * base enabled. */ +#define VERR_SUP_VP_EXE_MISSING_DYNAMIC_BASE (-5650) +/** Process Verification Failure: Expected the process and exe to advertise + * NX compatibility. */ +#define VERR_SUP_VP_EXE_MISSING_NX_COMPAT (-5651) +/** Process Verification Failure: The DllCharacteristics of the process + * does not match the value in the optional header in the exe file. */ +#define VERR_SUP_VP_DLL_CHARECTERISTICS_MISMATCH (-5652) +/** Process Verification Failure: The ImageCharacteristics of the process + * does not match the value in the file header in the exe file. */ +#define VERR_SUP_VP_IMAGE_CHARECTERISTICS_MISMATCH (-5653) +/** Process Verification Failure: Error querying image information. */ +#define VERR_SUP_VP_NT_QI_PROCESS_IMG_INFO_ERROR (-5654) +/** Process Verification Failure: Error querying debug port. */ +#define VERR_SUP_VP_NT_QI_PROCESS_DBG_PORT_ERROR (-5655) +/** WinVerifyTrust failed with an unexpected status code when using the + * catalog-file approach. */ +#define VERR_SUP_VP_WINTRUST_CAT_FAILURE (-5656) +/** The image is required to be signed with the same certificate as the rest + * of VirtualBox. */ +#define VERR_SUP_VP_NOT_SIGNED_WITH_BUILD_CERT (-5657) +/** Internal processing error: Not build certificate. */ +#define VERR_SUP_VP_NOT_BUILD_CERT_IPE (-5658) +/** The image requires to be signed using the kernel-code signing process. */ +#define VERR_SUP_VP_NOT_VALID_KERNEL_CODE_SIGNATURE (-5659) +/** Unexpected number of valid paths. */ +#define VERR_SUP_VP_UNEXPECTED_VALID_PATH_COUNT (-5660) +/** The image is required to force integrity checks. */ +#define VERR_SUP_VP_SIGNATURE_CHECKS_NOT_ENFORCED (-5661) +/** Process Verification Failure: Symantec Endpoint Protection must be + * disabled for the VirtualBox VM processes. + * http://www.symantec.com/connect/articles/creating-application-control-exclusions-symantec-endpoint-protection-121 */ +#define VERR_SUP_VP_SYSFER_DLL (-5662) +/** Process Purification Failure: KERNE32.DLL already mapped into the initial + * process (suspended). */ +#define VERR_SUP_VP_KERNEL32_ALREADY_MAPPED (-5663) +/** Process Purification Failure: NtFreeVirtualMemory failed on a chunk of + * executable memory which shouldn't be present in the process. */ +#define VERR_SUP_VP_FREE_VIRTUAL_MEMORY_FAILED (-5664) +/** Process Purification Failure: Both NtUnmapViewOfSetion and + * NtProtectVirtualMemory failed to get rid of or passify an non-image + * executable mapping. */ +#define VERR_SUP_VP_UNMAP_AND_PROTECT_FAILED (-5665) +/** Process Purification Failure: Unknown memory type of executable memory. */ +#define VERR_SUP_VP_UNKOWN_MEM_TYPE (-5666) +/** The image file is not owned by TrustedInstaller is it should be. */ +#define VERR_SUP_VP_NOT_OWNED_BY_TRUSTED_INSTALLER (-5667) +/** The image is outside the expected range. */ +#define VERR_SUP_VP_IMAGE_TOO_BIG (-5668) +/** Stub process not found so it cannot be revalidated when vboxdrv is opened + * by the VM process. */ +#define VERR_SUP_VP_STUB_NOT_FOUND (-5669) +/** Error opening the stub process for revalidation when vboxdrv is opened by + * the VM process. */ +#define VERR_SUP_VP_STUB_OPEN_ERROR (-5670) +/** Stub process thread not found during revalidation upon vboxdrv opening by + * the VM process. */ +#define VERR_SUP_VP_STUB_THREAD_NOT_FOUND (-5671) +/** Error opening the stub process thread for revalidation when vboxdrv is + * opened by the VM process. */ +#define VERR_SUP_VP_STUB_THREAD_OPEN_ERROR (-5672) +/** Process Purification Failure: NtAllocateVirtualMemory failed to get us + * suitable replacement memory for a chunk of executable memory that + * shouldn't be present in our process. (You will only see this message if you + * got potentially fatally buggy anti-virus software installed.) */ +#define VERR_SUP_VP_REPLACE_VIRTUAL_MEMORY_FAILED (-5673) +/** Error getting the file mode. */ +#define VERR_SUP_VP_FILE_MODE_ERROR (-5674) +/** Error creating an event semaphore for used with asynchronous reads. */ +#define VERR_SUP_VP_CREATE_READ_EVT_SEM_FAILED (-5675) + +/** @} */ + +/** @name VBox Extension Pack Status Codes + * @{ + */ +/** The host is not supported. Uninstall the extension pack. + * Returned by the VBOXEXTPACKREG::pfnInstalled. */ +#define VERR_EXTPACK_UNSUPPORTED_HOST_UNINSTALL (-6000) +/** The VirtualBox version is not supported by one of the extension packs. + * + * You have probably upgraded VirtualBox recently. Please upgrade the + * extension packs to versions compatible with this VirtualBox release. + */ +#define VERR_EXTPACK_VBOX_VERSION_MISMATCH (-6001) +/** @} */ + + +/** @name VBox Guest Control Status Codes + * @{ + */ +/** Guest side reported an error. */ +#define VERR_GSTCTL_GUEST_ERROR (-6200) +/** A guest control object has changed its overall status. */ +#define VWRN_GSTCTL_OBJECTSTATE_CHANGED 6220 +/** @} */ + + +/** @name GIM Status Codes + * @{ + */ +/** No GIM provider is configured for this VM. */ +#define VERR_GIM_NOT_ENABLED (-6300) +/** GIM internal processing error \#1. */ +#define VERR_GIM_IPE_1 (-6301) +/** GIM internal processing error \#2. */ +#define VERR_GIM_IPE_2 (-6302) +/** GIM internal processing error \#3. */ +#define VERR_GIM_IPE_3 (-6303) +/** The GIM provider does not support any paravirtualized TSC. */ +#define VERR_GIM_PVTSC_NOT_AVAILABLE (-6304) +/** The guest has not setup use of the paravirtualized TSC. */ +#define VERR_GIM_PVTSC_NOT_ENABLED (-6305) +/** Unknown or invalid GIM provider. */ +#define VERR_GIM_INVALID_PROVIDER (-6306) +/** GIM generic operation failed. */ +#define VERR_GIM_OPERATION_FAILED (-6307) +/** The GIM provider does not support any hypercalls. */ +#define VERR_GIM_HYPERCALLS_NOT_AVAILABLE (-6308) +/** The guest has not setup use of the hypercalls. */ +#define VERR_GIM_HYPERCALLS_NOT_ENABLED (-6309) +/** The GIM device is not registered with GIM when it ought to be. */ +#define VERR_GIM_DEVICE_NOT_REGISTERED (-6310) +/** Hypercall cannot be enabled/performed due to access/permissions/CPL. */ +#define VERR_GIM_HYPERCALL_ACCESS_DENIED (-6311) +/** @} */ + +/** @name Main API Status Codes + * @{ + */ +/** The configuration constructor in main failed due to a COM error. Check + * the release log of the VM for further details. */ +#define VERR_MAIN_CONFIG_CONSTRUCTOR_COM_ERROR (-6400) +/** The configuration constructor in main failed due to an internal consistency + * error. Consult the release log of the VM for further details. */ +#define VERR_MAIN_CONFIG_CONSTRUCTOR_IPE (-6401) +/** @} */ + +/** @name VBox Drag and Drop Status Codes + * @{ + */ +/** Guest side reported an error. */ +#define VERR_GSTDND_GUEST_ERROR (-6500) +/** @} */ + + +/* SED-END */ + +/** @} */ + + +#endif + --- linux-raspi2-4.2.0.orig/ubuntu/vbox/include/VBox/hgcmsvc.h +++ linux-raspi2-4.2.0/ubuntu/vbox/include/VBox/hgcmsvc.h @@ -0,0 +1,419 @@ +/** @file + * Host-Guest Communication Manager (HGCM) - Service library definitions. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + +#ifndef ___VBox_hgcm_h +#define ___VBox_hgcm_h + +#include +#include +#include +#include +#include +#ifdef VBOX_TEST_HGCM_PARMS +# include +#endif + +/** @todo proper comments. */ + +/** + * Service interface version. + * + * Includes layout of both VBOXHGCMSVCFNTABLE and VBOXHGCMSVCHELPERS. + * + * A service can work with these structures if major version + * is equal and minor version of service is <= version of the + * structures. + * + * For example when a new helper is added at the end of helpers + * structure, then the minor version will be increased. All older + * services still can work because they have their old helpers + * unchanged. + * + * Revision history. + * 1.1->2.1 Because the pfnConnect now also has the pvClient parameter. + * 2.1->2.2 Because pfnSaveState and pfnLoadState were added + * 2.2->3.1 Because pfnHostCall is now synchronous, returns rc, and parameters were changed + * 3.1->3.2 Because pfnRegisterExtension was added + * 3.2->3.3 Because pfnDisconnectClient helper was added + * 3.3->4.1 Because the pvService entry and parameter was added + * 4.1->4.2 Because the VBOX_HGCM_SVC_PARM_CALLBACK parameter type was added + * 4.2->5.1 Removed the VBOX_HGCM_SVC_PARM_CALLBACK parameter type, as + * this problem is already solved by service extension callbacks + */ +#define VBOX_HGCM_SVC_VERSION_MAJOR (0x0005) +#define VBOX_HGCM_SVC_VERSION_MINOR (0x0001) +#define VBOX_HGCM_SVC_VERSION ((VBOX_HGCM_SVC_VERSION_MAJOR << 16) + VBOX_HGCM_SVC_VERSION_MINOR) + + +/** Typed pointer to distinguish a call to service. */ +struct VBOXHGCMCALLHANDLE_TYPEDEF; +typedef struct VBOXHGCMCALLHANDLE_TYPEDEF *VBOXHGCMCALLHANDLE; + +/** Service helpers pointers table. */ +typedef struct _VBOXHGCMSVCHELPERS +{ + /** The service has processed the Call request. */ + DECLR3CALLBACKMEMBER(void, pfnCallComplete, (VBOXHGCMCALLHANDLE callHandle, int32_t rc)); + + void *pvInstance; + + /** The service disconnects the client. */ + DECLR3CALLBACKMEMBER(void, pfnDisconnectClient, (void *pvInstance, uint32_t u32ClientID)); +} VBOXHGCMSVCHELPERS; + +typedef VBOXHGCMSVCHELPERS *PVBOXHGCMSVCHELPERS; + + +#define VBOX_HGCM_SVC_PARM_INVALID (0U) +#define VBOX_HGCM_SVC_PARM_32BIT (1U) +#define VBOX_HGCM_SVC_PARM_64BIT (2U) +#define VBOX_HGCM_SVC_PARM_PTR (3U) + +typedef struct VBOXHGCMSVCPARM +{ + /** VBOX_HGCM_SVC_PARM_* values. */ + uint32_t type; + + union + { + uint32_t uint32; + uint64_t uint64; + struct + { + uint32_t size; + void *addr; + } pointer; + } u; +#ifdef __cplusplus + /** Extract an uint32_t value from an HGCM parameter structure */ + int getUInt32(uint32_t *u32) + { + AssertPtrReturn(u32, VERR_INVALID_POINTER); + int rc = VINF_SUCCESS; + if (type != VBOX_HGCM_SVC_PARM_32BIT) + rc = VERR_INVALID_PARAMETER; + if (RT_SUCCESS(rc)) + *u32 = u.uint32; + return rc; + } + + /** Extract a uint64_t value from an HGCM parameter structure */ + int getUInt64(uint64_t *u64) + { + AssertPtrReturn(u64, VERR_INVALID_POINTER); + int rc = VINF_SUCCESS; + if (type != VBOX_HGCM_SVC_PARM_64BIT) + rc = VERR_INVALID_PARAMETER; + if (RT_SUCCESS(rc)) + *u64 = u.uint64; + return rc; + } + + /** Extract a pointer value from an HGCM parameter structure */ + int getPointer(void **ppv, uint32_t *pcb) + { + AssertPtrReturn(ppv, VERR_INVALID_POINTER); + AssertPtrReturn(pcb, VERR_INVALID_POINTER); + if (type == VBOX_HGCM_SVC_PARM_PTR) + { + *ppv = u.pointer.addr; + *pcb = u.pointer.size; + return VINF_SUCCESS; + } + + return VERR_INVALID_PARAMETER; + } + + /** Extract a constant pointer value from an HGCM parameter structure */ + int getPointer(const void **ppcv, uint32_t *pcb) + { + AssertPtrReturn(ppcv, VERR_INVALID_POINTER); + AssertPtrReturn(pcb, VERR_INVALID_POINTER); + void *pv; + int rc = getPointer(&pv, pcb); + *ppcv = pv; + return rc; + } + + /** Extract a pointer value to a non-empty buffer from an HGCM parameter + * structure */ + int getBuffer(void **ppv, uint32_t *pcb) + { + AssertPtrReturn(ppv, VERR_INVALID_POINTER); + AssertPtrReturn(pcb, VERR_INVALID_POINTER); + void *pv = NULL; + uint32_t cb = 0; + int rc = getPointer(&pv, &cb); + if ( RT_SUCCESS(rc) + && VALID_PTR(pv) + && cb > 0) + { + *ppv = pv; + *pcb = cb; + return VINF_SUCCESS; + } + + return VERR_INVALID_PARAMETER; + } + + /** Extract a pointer value to a non-empty constant buffer from an HGCM + * parameter structure */ + int getBuffer(const void **ppcv, uint32_t *pcb) + { + AssertPtrReturn(ppcv, VERR_INVALID_POINTER); + AssertPtrReturn(pcb, VERR_INVALID_POINTER); + void *pcv = NULL; + int rc = getBuffer(&pcv, pcb); + *ppcv = pcv; + return rc; + } + + /** Extract a string value from an HGCM parameter structure */ + int getString(char **ppch, uint32_t *pcb) + { + uint32_t cb = 0; + char *pch = NULL; + int rc = getBuffer((void **)&pch, &cb); + if (RT_FAILURE(rc)) + { + *ppch = NULL; + *pcb = 0; + return rc; + } + rc = RTStrValidateEncodingEx(pch, cb, + RTSTR_VALIDATE_ENCODING_ZERO_TERMINATED); + *ppch = pch; + *pcb = cb; + return rc; + } + + /** Extract a constant string value from an HGCM parameter structure */ + int getString(const char **ppch, uint32_t *pcb) + { + char *pch = NULL; + int rc = getString(&pch, pcb); + *ppch = pch; + return rc; + } + + /** Set a uint32_t value to an HGCM parameter structure */ + void setUInt32(uint32_t u32) + { + type = VBOX_HGCM_SVC_PARM_32BIT; + u.uint32 = u32; + } + + /** Set a uint64_t value to an HGCM parameter structure */ + void setUInt64(uint64_t u64) + { + type = VBOX_HGCM_SVC_PARM_64BIT; + u.uint64 = u64; + } + + /** Set a pointer value to an HGCM parameter structure */ + void setPointer(void *pv, uint32_t cb) + { + type = VBOX_HGCM_SVC_PARM_PTR; + u.pointer.addr = pv; + u.pointer.size = cb; + } + + /** Set a const string value to an HGCM parameter structure */ + void setString(const char *psz) + { + type = VBOX_HGCM_SVC_PARM_PTR; + u.pointer.addr = (void *)psz; + u.pointer.size = (uint32_t)strlen(psz) + 1; + } + +#ifdef ___iprt_cpp_ministring_h + /** Set a const string value to an HGCM parameter structure */ + void setCppString(const RTCString &rString) + { + type = VBOX_HGCM_SVC_PARM_PTR; + u.pointer.addr = (void *)rString.c_str(); + u.pointer.size = (uint32_t)rString.length() + 1; + } +#endif + +#ifdef VBOX_TEST_HGCM_PARMS + /** Test the getString member function. Indirectly tests the getPointer + * and getBuffer APIs. + * @param hTest an running IPRT test + * @param aType the type that the parameter should be set to before + * calling getString + * @param apcc the value that the parameter should be set to before + * calling getString, and also the address (!) which we + * expect getString to return. Stricter than needed of + * course, but I was feeling lazy. + * @param acb the size that the parameter should be set to before + * calling getString, and also the size which we expect + * getString to return. + * @param rcExp the expected return value of the call to getString. + */ + void doTestGetString(RTTEST hTest, uint32_t aType, const char *apcc, + uint32_t acb, int rcExp) + { + /* An RTTest API like this, which would print out an additional line + * of context if a test failed, would be nice. This is because the + * line number alone doesn't help much here, given that this is a + * subroutine called many times. */ + /* + RTTestContextF(hTest, + ("doTestGetString, aType=%u, apcc=%p, acp=%u, rcExp=%Rrc", + aType, apcc, acp, rcExp)); + */ + setPointer((void *)apcc, acb); + type = aType; /* in case we don't want VBOX_HGCM_SVC_PARM_PTR */ + const char *pcc = NULL; + uint32_t cb = 0; + int rc = getString(&pcc, &cb); + RTTEST_CHECK_RC(hTest, rc, rcExp); + if (RT_SUCCESS(rcExp)) + { + RTTEST_CHECK_MSG_RETV(hTest, (pcc == apcc), + (hTest, "expected %p, got %p", apcc, pcc)); + RTTEST_CHECK_MSG_RETV(hTest, (cb == acb), + (hTest, "expected %u, got %u", acb, cb)); + } + } + + /** Run some unit tests on the getString method and indirectly test + * getPointer and getBuffer as well. */ + void testGetString(RTTEST hTest) + { + RTTestSub(hTest, "HGCM string parameter handling"); + doTestGetString(hTest, VBOX_HGCM_SVC_PARM_32BIT, "test", 3, + VERR_INVALID_PARAMETER); + doTestGetString(hTest, VBOX_HGCM_SVC_PARM_PTR, "test", 5, + VINF_SUCCESS); + doTestGetString(hTest, VBOX_HGCM_SVC_PARM_PTR, "test", 3, + VERR_BUFFER_OVERFLOW); + doTestGetString(hTest, VBOX_HGCM_SVC_PARM_PTR, "test\xf0", 6, + VERR_INVALID_UTF8_ENCODING); + doTestGetString(hTest, VBOX_HGCM_SVC_PARM_PTR, "test", 0, + VERR_INVALID_PARAMETER); + doTestGetString(hTest, VBOX_HGCM_SVC_PARM_PTR, (const char *)0x1, 5, + VERR_INVALID_PARAMETER); + RTTestSubDone(hTest); + } +#endif + + VBOXHGCMSVCPARM() : type(VBOX_HGCM_SVC_PARM_INVALID) {} +#endif +} VBOXHGCMSVCPARM; + +typedef VBOXHGCMSVCPARM *PVBOXHGCMSVCPARM; + +#ifdef VBOX_WITH_CRHGSMI +typedef void * HGCMCVSHANDLE; + +typedef DECLCALLBACK(void) HGCMHOSTFASTCALLCB (int32_t result, uint32_t u32Function, PVBOXHGCMSVCPARM pParam, void *pvContext); +typedef HGCMHOSTFASTCALLCB *PHGCMHOSTFASTCALLCB; +#endif + + +/** Service specific extension callback. + * This callback is called by the service to perform service specific operation. + * + * @param pvExtension The extension pointer. + * @param u32Function What the callback is supposed to do. + * @param pvParm The function parameters. + * @param cbParm The size of the function parameters. + */ +typedef DECLCALLBACK(int) FNHGCMSVCEXT(void *pvExtension, uint32_t u32Function, void *pvParm, uint32_t cbParms); +typedef FNHGCMSVCEXT *PFNHGCMSVCEXT; + +/** The Service DLL entry points. + * + * HGCM will call the DLL "VBoxHGCMSvcLoad" + * function and the DLL must fill in the VBOXHGCMSVCFNTABLE + * with function pointers. + */ + +/* The structure is used in separately compiled binaries so an explicit packing is required. */ +#pragma pack(1) +typedef struct _VBOXHGCMSVCFNTABLE +{ + /** Filled by HGCM */ + + /** Size of the structure. */ + uint32_t cbSize; + + /** Version of the structure, including the helpers. */ + uint32_t u32Version; + + PVBOXHGCMSVCHELPERS pHelpers; + + /** Filled by the service. */ + + /** Size of client information the service want to have. */ + uint32_t cbClient; +#if ARCH_BITS == 64 + /** Ensure that the following pointers are properly aligned on 64-bit system. */ + uint32_t u32Alignment0; +#endif + + /** Uninitialize service */ + DECLR3CALLBACKMEMBER(int, pfnUnload, (void *pvService)); + + /** Inform the service about a client connection. */ + DECLR3CALLBACKMEMBER(int, pfnConnect, (void *pvService, uint32_t u32ClientID, void *pvClient)); + + /** Inform the service that the client wants to disconnect. */ + DECLR3CALLBACKMEMBER(int, pfnDisconnect, (void *pvService, uint32_t u32ClientID, void *pvClient)); + + /** Service entry point. + * Return code is passed to pfnCallComplete callback. + */ + DECLR3CALLBACKMEMBER(void, pfnCall, (void *pvService, VBOXHGCMCALLHANDLE callHandle, uint32_t u32ClientID, void *pvClient, uint32_t function, uint32_t cParms, VBOXHGCMSVCPARM paParms[])); + + /** Host Service entry point meant for privileged features invisible to the guest. + * Return code is passed to pfnCallComplete callback. + */ + DECLR3CALLBACKMEMBER(int, pfnHostCall, (void *pvService, uint32_t function, uint32_t cParms, VBOXHGCMSVCPARM paParms[])); + + /** Inform the service about a VM save operation. */ + DECLR3CALLBACKMEMBER(int, pfnSaveState, (void *pvService, uint32_t u32ClientID, void *pvClient, PSSMHANDLE pSSM)); + + /** Inform the service about a VM load operation. */ + DECLR3CALLBACKMEMBER(int, pfnLoadState, (void *pvService, uint32_t u32ClientID, void *pvClient, PSSMHANDLE pSSM)); + + /** Register a service extension callback. */ + DECLR3CALLBACKMEMBER(int, pfnRegisterExtension, (void *pvService, PFNHGCMSVCEXT pfnExtension, void *pvExtension)); + + /** User/instance data pointer for the service. */ + void *pvService; + +} VBOXHGCMSVCFNTABLE; +#pragma pack() + + +/** Service initialization entry point. */ +typedef DECLCALLBACK(int) VBOXHGCMSVCLOAD(VBOXHGCMSVCFNTABLE *ptable); +typedef VBOXHGCMSVCLOAD *PFNVBOXHGCMSVCLOAD; +#define VBOX_HGCM_SVCLOAD_NAME "VBoxHGCMSvcLoad" + +#endif --- linux-raspi2-4.2.0.orig/ubuntu/vbox/include/VBox/log.h +++ linux-raspi2-4.2.0/ubuntu/vbox/include/VBox/log.h @@ -0,0 +1,1163 @@ +/** @file + * VirtualBox - Logging. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + +#ifndef ___VBox_log_h +#define ___VBox_log_h + +/* + * Set the default loggroup. + */ +#ifndef LOG_GROUP +# define LOG_GROUP LOG_GROUP_DEFAULT +#endif + +#include + + +/** @defgroup grp_rt_vbox_log VirtualBox Logging + * @ingroup grp_rt_vbox + * @{ + */ + +/** PC port for debug output */ +#define RTLOG_DEBUG_PORT 0x504 + +/** + * VirtualBox Logging Groups. + * (Remember to update LOGGROUP_NAMES!) + * + * @remark It should be pretty obvious, but just to have + * mentioned it, the values are sorted alphabetically (using the + * english alphabet) except for _DEFAULT which is always first. + * + * If anyone might be wondering what the alphabet looks like: + * A B C D E F G H I J K L M N O P Q R S T U V W X Y Z _ + */ +typedef enum LOGGROUP +{ + /** The default VBox group. */ + LOG_GROUP_DEFAULT = RTLOGGROUP_FIRST_USER, + /** Audio mixer group. */ + LOG_GROUP_AUDIO_MIXER, + /** Audio mixer buffer group. */ + LOG_GROUP_AUDIO_MIXER_BUFFER, + /** Auto-logon group. */ + LOG_GROUP_AUTOLOGON, + /** CFGM group. */ + LOG_GROUP_CFGM, + /** CPUM group. */ + LOG_GROUP_CPUM, + /** CSAM group. */ + LOG_GROUP_CSAM, + /** Debug Console group. */ + LOG_GROUP_DBGC, + /** DBGF group. */ + LOG_GROUP_DBGF, + /** DBGF info group. */ + LOG_GROUP_DBGF_INFO, + /** The debugger gui. */ + LOG_GROUP_DBGG, + /** Generic Device group. */ + LOG_GROUP_DEV, + /** AC97 Device group. */ + LOG_GROUP_DEV_AC97, + /** ACPI Device group. */ + LOG_GROUP_DEV_ACPI, + /** AHCI Device group. */ + LOG_GROUP_DEV_AHCI, + /** APIC Device group. */ + LOG_GROUP_DEV_APIC, + /** BusLogic SCSI host adapter group. */ + LOG_GROUP_DEV_BUSLOGIC, + /** DMA Controller group. */ + LOG_GROUP_DEV_DMA, + /** Gigabit Ethernet Device group. */ + LOG_GROUP_DEV_E1000, + /** Extensible Firmware Interface Device group. */ + LOG_GROUP_DEV_EFI, + /** USB EHCI Device group. */ + LOG_GROUP_DEV_EHCI, + /** Floppy Controller Device group. */ + LOG_GROUP_DEV_FDC, + /** Guest Interface Manager Device group. */ + LOG_GROUP_DEV_GIM, + /** HDA Device group. */ + LOG_GROUP_DEV_HDA, + /** HDA Codec Device group. */ + LOG_GROUP_DEV_HDA_CODEC, + /** High Precision Event Timer Device group. */ + LOG_GROUP_DEV_HPET, + /** IDE Device group. */ + LOG_GROUP_DEV_IDE, + /** The internal networking IP stack Device group. */ + LOG_GROUP_DEV_INIP, + /** KeyBoard Controller Device group. */ + LOG_GROUP_DEV_KBD, + /** Low Pin Count Device group. */ + LOG_GROUP_DEV_LPC, + /** LsiLogic SCSI controller Device group. */ + LOG_GROUP_DEV_LSILOGICSCSI, + /** NE2000 Device group. */ + LOG_GROUP_DEV_NE2000, + /** USB OHCI Device group. */ + LOG_GROUP_DEV_OHCI, + /** Parallel Device group */ + LOG_GROUP_DEV_PARALLEL, + /** PC Device group. */ + LOG_GROUP_DEV_PC, + /** PC Architecture Device group. */ + LOG_GROUP_DEV_PC_ARCH, + /** PC BIOS Device group. */ + LOG_GROUP_DEV_PC_BIOS, + /** PCI Device group. */ + LOG_GROUP_DEV_PCI, + /** PCI Raw Device group. */ + LOG_GROUP_DEV_PCI_RAW, + /** PCNet Device group. */ + LOG_GROUP_DEV_PCNET, + /** PIC Device group. */ + LOG_GROUP_DEV_PIC, + /** PIT Device group. */ + LOG_GROUP_DEV_PIT, + /** RTC Device group. */ + LOG_GROUP_DEV_RTC, + /** SB16 Device group. */ + LOG_GROUP_DEV_SB16, + /** Serial Device group */ + LOG_GROUP_DEV_SERIAL, + /** System Management Controller Device group. */ + LOG_GROUP_DEV_SMC, + /** VGA Device group. */ + LOG_GROUP_DEV_VGA, + /** Virtio PCI Device group. */ + LOG_GROUP_DEV_VIRTIO, + /** Virtio Network Device group. */ + LOG_GROUP_DEV_VIRTIO_NET, + /** VMM Device group. */ + LOG_GROUP_DEV_VMM, + /** VMM Device group for backdoor logging. */ + LOG_GROUP_DEV_VMM_BACKDOOR, + /** VMM Device group for logging guest backdoor logging to stderr. */ + LOG_GROUP_DEV_VMM_STDERR, + /** VMSVGA Device group. */ + LOG_GROUP_DEV_VMSVGA, + /** USB xHCI Device group. */ + LOG_GROUP_DEV_XHCI, + /** Disassembler group. */ + LOG_GROUP_DIS, + /** Generic driver group. */ + LOG_GROUP_DRV, + /** ACPI driver group */ + LOG_GROUP_DRV_ACPI, + /** Audio driver group */ + LOG_GROUP_DRV_AUDIO, + /** Block driver group. */ + LOG_GROUP_DRV_BLOCK, + /** Char driver group. */ + LOG_GROUP_DRV_CHAR, + /** Disk integrity driver group. */ + LOG_GROUP_DRV_DISK_INTEGRITY, + /** Video Display driver group. */ + LOG_GROUP_DRV_DISPLAY, + /** Floppy media driver group. */ + LOG_GROUP_DRV_FLOPPY, + /** Host Audio driver group. */ + LOG_GROUP_DRV_HOST_AUDIO, + /** Host Base block driver group. */ + LOG_GROUP_DRV_HOST_BASE, + /** Host DVD block driver group. */ + LOG_GROUP_DRV_HOST_DVD, + /** Host floppy block driver group. */ + LOG_GROUP_DRV_HOST_FLOPPY, + /** Host Parallel Driver group */ + LOG_GROUP_DRV_HOST_PARALLEL, + /** Host Serial Driver Group */ + LOG_GROUP_DRV_HOST_SERIAL, + /** The internal networking transport driver group. */ + LOG_GROUP_DRV_INTNET, + /** ISO (CD/DVD) media driver group. */ + LOG_GROUP_DRV_ISO, + /** Keyboard Queue driver group. */ + LOG_GROUP_DRV_KBD_QUEUE, + /** lwIP IP stack driver group. */ + LOG_GROUP_DRV_LWIP, + /** Video Miniport driver group. */ + LOG_GROUP_DRV_MINIPORT, + /** Mouse driver group. */ + LOG_GROUP_DRV_MOUSE, + /** Mouse Queue driver group. */ + LOG_GROUP_DRV_MOUSE_QUEUE, + /** Named Pipe stream driver group. */ + LOG_GROUP_DRV_NAMEDPIPE, + /** NAT network transport driver group */ + LOG_GROUP_DRV_NAT, + /** Raw image driver group */ + LOG_GROUP_DRV_RAW_IMAGE, + /** SCSI driver group. */ + LOG_GROUP_DRV_SCSI, + /** Host SCSI driver group. */ + LOG_GROUP_DRV_SCSIHOST, + /** TCP socket stream driver group. */ + LOG_GROUP_DRV_TCP, + /** Async transport driver group */ + LOG_GROUP_DRV_TRANSPORT_ASYNC, + /** TUN network transport driver group */ + LOG_GROUP_DRV_TUN, + /** UDP tunnet network transport driver group. */ + LOG_GROUP_DRV_UDPTUNNEL, + /** USB Proxy driver group. */ + LOG_GROUP_DRV_USBPROXY, + /** VBoxHDD media driver group. */ + LOG_GROUP_DRV_VBOXHDD, + /** VBox HDD container media driver group. */ + LOG_GROUP_DRV_VD, + /** VRDE audio driver group. */ + LOG_GROUP_DRV_VRDE_AUDIO, + /** Virtual Switch transport driver group */ + LOG_GROUP_DRV_VSWITCH, + /** VUSB driver group */ + LOG_GROUP_DRV_VUSB, + /** EM group. */ + LOG_GROUP_EM, + /** FTM group. */ + LOG_GROUP_FTM, + /** GIM group. */ + LOG_GROUP_GIM, + /** GMM group. */ + LOG_GROUP_GMM, + /** Guest control. */ + LOG_GROUP_GUEST_CONTROL, + /** Guest drag'n drop. */ + LOG_GROUP_GUEST_DND, + /** GUI group. */ + LOG_GROUP_GUI, + /** GVMM group. */ + LOG_GROUP_GVMM, + /** HGCM group */ + LOG_GROUP_HGCM, + /** HGSMI group */ + LOG_GROUP_HGSMI, + /** HM group. */ + LOG_GROUP_HM, + /** IEM group. */ + LOG_GROUP_IEM, + /** IOM group. */ + LOG_GROUP_IOM, + /** XPCOM IPC group. */ + LOG_GROUP_IPC, + /** lwIP group. */ + LOG_GROUP_LWIP, + /** lwIP group, api_lib.c API_LIB_DEBUG */ + LOG_GROUP_LWIP_API_LIB, + /** lwIP group, api_msg.c API_MSG_DEBUG */ + LOG_GROUP_LWIP_API_MSG, + /** lwIP group, etharp.c ETHARP_DEBUG */ + LOG_GROUP_LWIP_ETHARP, + /** lwIP group, icmp.c ICMP_DEBUG */ + LOG_GROUP_LWIP_ICMP, + /** lwIP group, igmp.c IGMP_DEBUG */ + LOG_GROUP_LWIP_IGMP, + /** lwIP group, inet.c INET_DEBUG */ + LOG_GROUP_LWIP_INET, + /** lwIP group, IP_DEBUG (sic!) */ + LOG_GROUP_LWIP_IP4, + /** lwIP group, ip_frag.c IP_REASS_DEBUG (sic!) */ + LOG_GROUP_LWIP_IP4_REASS, + /** lwIP group, IP6_DEBUG */ + LOG_GROUP_LWIP_IP6, + /** lwIP group, mem.c MEM_DEBUG */ + LOG_GROUP_LWIP_MEM, + /** lwIP group, memp.c MEMP_DEBUG */ + LOG_GROUP_LWIP_MEMP, + /** lwIP group, netif.c NETIF_DEBUG */ + LOG_GROUP_LWIP_NETIF, + /** lwIP group, pbuf.c PBUF_DEBUG */ + LOG_GROUP_LWIP_PBUF, + /** lwIP group, raw.c RAW_DEBUG */ + LOG_GROUP_LWIP_RAW, + /** lwIP group, sockets.c SOCKETS_DEBUG */ + LOG_GROUP_LWIP_SOCKETS, + /** lwIP group, SYS_DEBUG */ + LOG_GROUP_LWIP_SYS, + /** lwIP group, TCP_DEBUG */ + LOG_GROUP_LWIP_TCP, + /** lwIP group, tcpip.c TCPIP_DEBUG */ + LOG_GROUP_LWIP_TCPIP, + /** lwIP group, TCP_CWND_DEBUG (congestion window) */ + LOG_GROUP_LWIP_TCP_CWND, + /** lwIP group, tcp_in.c TCP_FR_DEBUG (fast retransmit) */ + LOG_GROUP_LWIP_TCP_FR, + /** lwIP group, tcp_in.c TCP_INPUT_DEBUG */ + LOG_GROUP_LWIP_TCP_INPUT, + /** lwIP group, tcp_out.c TCP_OUTPUT_DEBUG */ + LOG_GROUP_LWIP_TCP_OUTPUT, + /** lwIP group, TCP_QLEN_DEBUG */ + LOG_GROUP_LWIP_TCP_QLEN, + /** lwIP group, TCP_RST_DEBUG */ + LOG_GROUP_LWIP_TCP_RST, + /** lwIP group, TCP_RTO_DEBUG (retransmit) */ + LOG_GROUP_LWIP_TCP_RTO, + /** lwIP group, tcp_in.c TCP_WND_DEBUG (window updates) */ + LOG_GROUP_LWIP_TCP_WND, + /** lwIP group, timers.c TIMERS_DEBUG */ + LOG_GROUP_LWIP_TIMERS, + /** lwIP group, udp.c UDP_DEBUG */ + LOG_GROUP_LWIP_UDP, + /** Main group. */ + LOG_GROUP_MAIN, + /** Main group, IAdditionsFacility. */ + LOG_GROUP_MAIN_ADDITIONSFACILITY, + /** Main group, IAdditionsStateChangedEvent. */ + LOG_GROUP_MAIN_ADDITIONSSTATECHANGEDEVENT, + /** Main group, IAppliance. */ + LOG_GROUP_MAIN_APPLIANCE, + /** Main group, IAudioAdapter. */ + LOG_GROUP_MAIN_AUDIOADAPTER, + /** Main group, IBandwidthControl. */ + LOG_GROUP_MAIN_BANDWIDTHCONTROL, + /** Main group, IBandwidthGroup. */ + LOG_GROUP_MAIN_BANDWIDTHGROUP, + /** Main group, IBandwidthGroupChangedEvent. */ + LOG_GROUP_MAIN_BANDWIDTHGROUPCHANGEDEVENT, + /** Main group, IBIOSSettings. */ + LOG_GROUP_MAIN_BIOSSETTINGS, + /** Main group, ICanShowWindowEvent. */ + LOG_GROUP_MAIN_CANSHOWWINDOWEVENT, + /** Main group, IClipboardModeChangedEvent. */ + LOG_GROUP_MAIN_CLIPBOARDMODECHANGEDEVENT, + /** Main group, IConsole. */ + LOG_GROUP_MAIN_CONSOLE, + /** Main group, ICPUChangedEvent. */ + LOG_GROUP_MAIN_CPUCHANGEDEVENT, + /** Main group, ICPUExecutionCapChangedEvent. */ + LOG_GROUP_MAIN_CPUEXECUTIONCAPCHANGEDEVENT, + /** Main group, IDHCPServer. */ + LOG_GROUP_MAIN_DHCPSERVER, + /** Main group, IDirectory. */ + LOG_GROUP_MAIN_DIRECTORY, + /** Main group, IDisplay. */ + LOG_GROUP_MAIN_DISPLAY, + /** Main group, IDisplaySourceBitmap. */ + LOG_GROUP_MAIN_DISPLAYSOURCEBITMAP, + /** Main group, IDnDBase. */ + LOG_GROUP_MAIN_DNDBASE, + /** Main group, IDnDModeChangedEvent. */ + LOG_GROUP_MAIN_DNDMODECHANGEDEVENT, + /** Main group, IDnDSource. */ + LOG_GROUP_MAIN_DNDSOURCE, + /** Main group, IDnDTarget. */ + LOG_GROUP_MAIN_DNDTARGET, + /** Main group, IEmulatedUSB. */ + LOG_GROUP_MAIN_EMULATEDUSB, + /** Main group, IEvent. */ + LOG_GROUP_MAIN_EVENT, + /** Main group, IEventListener. */ + LOG_GROUP_MAIN_EVENTLISTENER, + /** Main group, IEventSource. */ + LOG_GROUP_MAIN_EVENTSOURCE, + /** Main group, IEventSourceChangedEvent. */ + LOG_GROUP_MAIN_EVENTSOURCECHANGEDEVENT, + /** Main group, IExtPack. */ + LOG_GROUP_MAIN_EXTPACK, + /** Main group, IExtPackBase. */ + LOG_GROUP_MAIN_EXTPACKBASE, + /** Main group, IExtPackFile. */ + LOG_GROUP_MAIN_EXTPACKFILE, + /** Main group, IExtPackManager. */ + LOG_GROUP_MAIN_EXTPACKMANAGER, + /** Main group, IExtPackPlugIn. */ + LOG_GROUP_MAIN_EXTPACKPLUGIN, + /** Main group, IExtraDataCanChangeEvent. */ + LOG_GROUP_MAIN_EXTRADATACANCHANGEEVENT, + /** Main group, IExtraDataChangedEvent. */ + LOG_GROUP_MAIN_EXTRADATACHANGEDEVENT, + /** Main group, IFile. */ + LOG_GROUP_MAIN_FILE, + /** Main group, IFramebuffer. */ + LOG_GROUP_MAIN_FRAMEBUFFER, + /** Main group, IFramebufferOverlay. */ + LOG_GROUP_MAIN_FRAMEBUFFEROVERLAY, + /** Main group, IFsObjInfo. */ + LOG_GROUP_MAIN_FSOBJINFO, + /** Main group, IGuest. */ + LOG_GROUP_MAIN_GUEST, + /** Main group, IGuestDirectory. */ + LOG_GROUP_MAIN_GUESTDIRECTORY, + /** Main group, IGuestDnDSource. */ + LOG_GROUP_MAIN_GUESTDNDSOURCE, + /** Main group, IGuestDnDTarget. */ + LOG_GROUP_MAIN_GUESTDNDTARGET, + /** Main group, IGuestErrorInfo. */ + LOG_GROUP_MAIN_GUESTERRORINFO, + /** Main group, IGuestFile. */ + LOG_GROUP_MAIN_GUESTFILE, + /** Main group, IGuestFileEvent. */ + LOG_GROUP_MAIN_GUESTFILEEVENT, + /** Main group, IGuestFileIOEvent. */ + LOG_GROUP_MAIN_GUESTFILEIOEVENT, + /** Main group, IGuestFileOffsetChangedEvent. */ + LOG_GROUP_MAIN_GUESTFILEOFFSETCHANGEDEVENT, + /** Main group, IGuestFileReadEvent. */ + LOG_GROUP_MAIN_GUESTFILEREADEVENT, + /** Main group, IGuestFileRegisteredEvent. */ + LOG_GROUP_MAIN_GUESTFILEREGISTEREDEVENT, + /** Main group, IGuestFileStateChangedEvent. */ + LOG_GROUP_MAIN_GUESTFILESTATECHANGEDEVENT, + /** Main group, IGuestFileWriteEvent. */ + LOG_GROUP_MAIN_GUESTFILEWRITEEVENT, + /** Main group, IGuestFsObjInfo. */ + LOG_GROUP_MAIN_GUESTFSOBJINFO, + /** Main group, IGuestKeyboardEvent. */ + LOG_GROUP_MAIN_GUESTKEYBOARDEVENT, + /** Main group, IGuestMonitorChangedEvent. */ + LOG_GROUP_MAIN_GUESTMONITORCHANGEDEVENT, + /** Main group, IGuestMouseEvent. */ + LOG_GROUP_MAIN_GUESTMOUSEEVENT, + /** Main group, IGuestMultiTouchEvent. */ + LOG_GROUP_MAIN_GUESTMULTITOUCHEVENT, + /** Main group, IGuestOSType. */ + LOG_GROUP_MAIN_GUESTOSTYPE, + /** Main group, IGuestProcess. */ + LOG_GROUP_MAIN_GUESTPROCESS, + /** Main group, IGuestProcessEvent. */ + LOG_GROUP_MAIN_GUESTPROCESSEVENT, + /** Main group, IGuestProcessInputNotifyEvent. */ + LOG_GROUP_MAIN_GUESTPROCESSINPUTNOTIFYEVENT, + /** Main group, IGuestProcessIOEvent. */ + LOG_GROUP_MAIN_GUESTPROCESSIOEVENT, + /** Main group, IGuestProcessOutputEvent. */ + LOG_GROUP_MAIN_GUESTPROCESSOUTPUTEVENT, + /** Main group, IGuestProcessRegisteredEvent. */ + LOG_GROUP_MAIN_GUESTPROCESSREGISTEREDEVENT, + /** Main group, IGuestProcessStateChangedEvent. */ + LOG_GROUP_MAIN_GUESTPROCESSSTATECHANGEDEVENT, + /** Main group, IGuestPropertyChangedEvent. */ + LOG_GROUP_MAIN_GUESTPROPERTYCHANGEDEVENT, + /** Main group, IGuestSession. */ + LOG_GROUP_MAIN_GUESTSESSION, + /** Main group, IGuestSessionEvent. */ + LOG_GROUP_MAIN_GUESTSESSIONEVENT, + /** Main group, IGuestSessionRegisteredEvent. */ + LOG_GROUP_MAIN_GUESTSESSIONREGISTEREDEVENT, + /** Main group, IGuestSessionStateChangedEvent. */ + LOG_GROUP_MAIN_GUESTSESSIONSTATECHANGEDEVENT, + /** Main group, IGuestUserStateChangedEvent. */ + LOG_GROUP_MAIN_GUESTUSERSTATECHANGEDEVENT, + /** Main group, IHost. */ + LOG_GROUP_MAIN_HOST, + /** Main group, IHostNameResolutionConfigurationChangeEvent. */ + LOG_GROUP_MAIN_HOSTNAMERESOLUTIONCONFIGURATIONCHANGEEVENT, + /** Main group, IHostNetworkInterface. */ + LOG_GROUP_MAIN_HOSTNETWORKINTERFACE, + /** Main group, IHostPCIDevicePlugEvent. */ + LOG_GROUP_MAIN_HOSTPCIDEVICEPLUGEVENT, + /** Main group, IHostUSBDevice. */ + LOG_GROUP_MAIN_HOSTUSBDEVICE, + /** Main group, IHostUSBDeviceFilter. */ + LOG_GROUP_MAIN_HOSTUSBDEVICEFILTER, + /** Main group, IHostVideoInputDevice. */ + LOG_GROUP_MAIN_HOSTVIDEOINPUTDEVICE, + /** Main group, IInternalMachineControl. */ + LOG_GROUP_MAIN_INTERNALMACHINECONTROL, + /** Main group, IInternalSessionControl. */ + LOG_GROUP_MAIN_INTERNALSESSIONCONTROL, + /** Main group, IKeyboard. */ + LOG_GROUP_MAIN_KEYBOARD, + /** Main group, IKeyboardLedsChangedEvent. */ + LOG_GROUP_MAIN_KEYBOARDLEDSCHANGEDEVENT, + /** Main group, IMachine. */ + LOG_GROUP_MAIN_MACHINE, + /** Main group, IMachineDataChangedEvent. */ + LOG_GROUP_MAIN_MACHINEDATACHANGEDEVENT, + /** Main group, IMachineDebugger. */ + LOG_GROUP_MAIN_MACHINEDEBUGGER, + /** Main group, IMachineEvent. */ + LOG_GROUP_MAIN_MACHINEEVENT, + /** Main group, IMachineRegisteredEvent. */ + LOG_GROUP_MAIN_MACHINEREGISTEREDEVENT, + /** Main group, IMachineStateChangedEvent. */ + LOG_GROUP_MAIN_MACHINESTATECHANGEDEVENT, + /** Main group, IMedium. */ + LOG_GROUP_MAIN_MEDIUM, + /** Main group, IMediumAttachment. */ + LOG_GROUP_MAIN_MEDIUMATTACHMENT, + /** Main group, IMediumChangedEvent. */ + LOG_GROUP_MAIN_MEDIUMCHANGEDEVENT, + /** Main group, IMediumConfigChangedEvent. */ + LOG_GROUP_MAIN_MEDIUMCONFIGCHANGEDEVENT, + /** Main group, IMediumFormat. */ + LOG_GROUP_MAIN_MEDIUMFORMAT, + /** Main group, IMediumRegisteredEvent. */ + LOG_GROUP_MAIN_MEDIUMREGISTEREDEVENT, + /** Main group, IMouse. */ + LOG_GROUP_MAIN_MOUSE, + /** Main group, IMouseCapabilityChangedEvent. */ + LOG_GROUP_MAIN_MOUSECAPABILITYCHANGEDEVENT, + /** Main group, IMousePointerShape. */ + LOG_GROUP_MAIN_MOUSEPOINTERSHAPE, + /** Main group, IMousePointerShapeChangedEvent. */ + LOG_GROUP_MAIN_MOUSEPOINTERSHAPECHANGEDEVENT, + /** Main group, INATEngine. */ + LOG_GROUP_MAIN_NATENGINE, + /** Main group, INATNetwork. */ + LOG_GROUP_MAIN_NATNETWORK, + /** Main group, INATNetworkAlterEvent. */ + LOG_GROUP_MAIN_NATNETWORKALTEREVENT, + /** Main group, INATNetworkChangedEvent. */ + LOG_GROUP_MAIN_NATNETWORKCHANGEDEVENT, + /** Main group, INATNetworkCreationDeletionEvent. */ + LOG_GROUP_MAIN_NATNETWORKCREATIONDELETIONEVENT, + /** Main group, INATNetworkPortForwardEvent. */ + LOG_GROUP_MAIN_NATNETWORKPORTFORWARDEVENT, + /** Main group, INATNetworkSettingEvent. */ + LOG_GROUP_MAIN_NATNETWORKSETTINGEVENT, + /** Main group, INATNetworkStartStopEvent. */ + LOG_GROUP_MAIN_NATNETWORKSTARTSTOPEVENT, + /** Main group, INATRedirectEvent. */ + LOG_GROUP_MAIN_NATREDIRECTEVENT, + /** Main group, INetworkAdapter. */ + LOG_GROUP_MAIN_NETWORKADAPTER, + /** Main group, INetworkAdapterChangedEvent. */ + LOG_GROUP_MAIN_NETWORKADAPTERCHANGEDEVENT, + /** Main group, IParallelPort. */ + LOG_GROUP_MAIN_PARALLELPORT, + /** Main group, IParallelPortChangedEvent. */ + LOG_GROUP_MAIN_PARALLELPORTCHANGEDEVENT, + /** Main group, IPCIAddress. */ + LOG_GROUP_MAIN_PCIADDRESS, + /** Main group, IPCIDeviceAttachment. */ + LOG_GROUP_MAIN_PCIDEVICEATTACHMENT, + /** Main group, IPerformanceCollector. */ + LOG_GROUP_MAIN_PERFORMANCECOLLECTOR, + /** Main group, IPerformanceMetric. */ + LOG_GROUP_MAIN_PERFORMANCEMETRIC, + /** Main group, IProcess. */ + LOG_GROUP_MAIN_PROCESS, + /** Main group, IProgress. */ + LOG_GROUP_MAIN_PROGRESS, + /** Main group, IReusableEvent. */ + LOG_GROUP_MAIN_REUSABLEEVENT, + /** Main group, IRuntimeErrorEvent. */ + LOG_GROUP_MAIN_RUNTIMEERROREVENT, + /** Main group, ISerialPort. */ + LOG_GROUP_MAIN_SERIALPORT, + /** Main group, ISerialPortChangedEvent. */ + LOG_GROUP_MAIN_SERIALPORTCHANGEDEVENT, + /** Main group, ISession. */ + LOG_GROUP_MAIN_SESSION, + /** Main group, ISessionStateChangedEvent. */ + LOG_GROUP_MAIN_SESSIONSTATECHANGEDEVENT, + /** Main group, ISharedFolder. */ + LOG_GROUP_MAIN_SHAREDFOLDER, + /** Main group, ISharedFolderChangedEvent. */ + LOG_GROUP_MAIN_SHAREDFOLDERCHANGEDEVENT, + /** Main group, IShowWindowEvent. */ + LOG_GROUP_MAIN_SHOWWINDOWEVENT, + /** Main group, ISnapshot. */ + LOG_GROUP_MAIN_SNAPSHOT, + /** Main group, ISnapshotChangedEvent. */ + LOG_GROUP_MAIN_SNAPSHOTCHANGEDEVENT, + /** Main group, ISnapshotDeletedEvent. */ + LOG_GROUP_MAIN_SNAPSHOTDELETEDEVENT, + /** Main group, ISnapshotEvent. */ + LOG_GROUP_MAIN_SNAPSHOTEVENT, + /** Main group, ISnapshotTakenEvent. */ + LOG_GROUP_MAIN_SNAPSHOTRESTOREDEVENT, + /** Main group, ISnapshotRestoredEvent. */ + LOG_GROUP_MAIN_SNAPSHOTTAKENEVENT, + /** Main group, IStateChangedEvent. */ + LOG_GROUP_MAIN_STATECHANGEDEVENT, + /** Main group, IStorageController. */ + LOG_GROUP_MAIN_STORAGECONTROLLER, + /** Main group, IStorageControllerChangedEvent. */ + LOG_GROUP_MAIN_STORAGECONTROLLERCHANGEDEVENT, + /** Main group, IStorageDeviceChangedEvent. */ + LOG_GROUP_MAIN_STORAGEDEVICECHANGEDEVENT, + /** Main group, ISystemProperties. */ + LOG_GROUP_MAIN_SYSTEMPROPERTIES, + /** Main group, IToken. */ + LOG_GROUP_MAIN_TOKEN, + /** Main group, IUSBController. */ + LOG_GROUP_MAIN_USBCONTROLLER, + /** Main group, IUSBControllerChangedEvent. */ + LOG_GROUP_MAIN_USBCONTROLLERCHANGEDEVENT, + /** Main group, IUSBDevice. */ + LOG_GROUP_MAIN_USBDEVICE, + /** Main group, IUSBDeviceFilter. */ + LOG_GROUP_MAIN_USBDEVICEFILTER, + /** Main group, IUSBDeviceFilters. */ + LOG_GROUP_MAIN_USBDEVICEFILTERS, + /** Main group, IUSBDeviceStateChangedEvent. */ + LOG_GROUP_MAIN_USBDEVICESTATECHANGEDEVENT, + /** Main group, IVBoxSVCAvailabilityChangedEvent. */ + LOG_GROUP_MAIN_VBOXSVCAVAILABILITYCHANGEDEVENT, + /** Main group, IVetoEvent. */ + LOG_GROUP_MAIN_VETOEVENT, + /** Main group, IVFSExplorer. */ + LOG_GROUP_MAIN_VFSEXPLORER, + /** Main group, IVideoCaptureChangedEvent. */ + LOG_GROUP_MAIN_VIDEOCAPTURECHANGEDEVENT, + /** Main group, IVirtualBox. */ + LOG_GROUP_MAIN_VIRTUALBOX, + /** Main group, IVirtualBoxClient. */ + LOG_GROUP_MAIN_VIRTUALBOXCLIENT, + /** Main group, IVirtualSystemDescription. */ + LOG_GROUP_MAIN_VIRTUALSYSTEMDESCRIPTION, + /** Main group, IVRDEServer. */ + LOG_GROUP_MAIN_VRDESERVER, + /** Main group, IVRDEServerChangedEvent. */ + LOG_GROUP_MAIN_VRDESERVERCHANGEDEVENT, + /** Main group, IVRDEServerInfo. */ + LOG_GROUP_MAIN_VRDESERVERINFO, + /** Main group, IVRDEServerInfoChangedEvent. */ + LOG_GROUP_MAIN_VRDESERVERINFOCHANGEDEVENT, + /** Misc. group intended for external use only. */ + LOG_GROUP_MISC, + /** MM group. */ + LOG_GROUP_MM, + /** MM group. */ + LOG_GROUP_MM_HEAP, + /** MM group. */ + LOG_GROUP_MM_HYPER, + /** MM Hypervisor Heap group. */ + LOG_GROUP_MM_HYPER_HEAP, + /** MM Physical/Ram group. */ + LOG_GROUP_MM_PHYS, + /** MM Page pool group. */ + LOG_GROUP_MM_POOL, + /** The NAT service group */ + LOG_GROUP_NAT_SERVICE, + /** The network adaptor driver group. */ + LOG_GROUP_NET_ADP_DRV, + /** The network filter driver group. */ + LOG_GROUP_NET_FLT_DRV, + /** The common network service group */ + LOG_GROUP_NET_SERVICE, + /** Network traffic shaper driver group. */ + LOG_GROUP_NET_SHAPER, + /** PATM group. */ + LOG_GROUP_PATM, + /** PDM group. */ + LOG_GROUP_PDM, + /** PDM Async completion group. */ + LOG_GROUP_PDM_ASYNC_COMPLETION, + /** PDM Block cache group. */ + LOG_GROUP_PDM_BLK_CACHE, + /** PDM Device group. */ + LOG_GROUP_PDM_DEVICE, + /** PDM Driver group. */ + LOG_GROUP_PDM_DRIVER, + /** PDM Loader group. */ + LOG_GROUP_PDM_LDR, + /** PDM Loader group. */ + LOG_GROUP_PDM_QUEUE, + /** PGM group. */ + LOG_GROUP_PGM, + /** PGM dynamic mapping group. */ + LOG_GROUP_PGM_DYNMAP, + /** PGM physical group. */ + LOG_GROUP_PGM_PHYS, + /** PGM physical access group. */ + LOG_GROUP_PGM_PHYS_ACCESS, + /** PGM shadow page pool group. */ + LOG_GROUP_PGM_POOL, + /** PGM shared paging group. */ + LOG_GROUP_PGM_SHARED, + /** REM group. */ + LOG_GROUP_REM, + /** REM disassembly handler group. */ + LOG_GROUP_REM_DISAS, + /** REM access handler group. */ + LOG_GROUP_REM_HANDLER, + /** REM I/O port access group. */ + LOG_GROUP_REM_IOPORT, + /** REM MMIO access group. */ + LOG_GROUP_REM_MMIO, + /** REM Printf. */ + LOG_GROUP_REM_PRINTF, + /** REM running group. */ + LOG_GROUP_REM_RUN, + /** SELM group. */ + LOG_GROUP_SELM, + /** Shared clipboard host service group. */ + LOG_GROUP_SHARED_CLIPBOARD, + /** Chromium OpenGL host service group. */ + LOG_GROUP_SHARED_CROPENGL, + /** Shared folders host service group. */ + LOG_GROUP_SHARED_FOLDERS, + /** OpenGL host service group. */ + LOG_GROUP_SHARED_OPENGL, + /** The internal networking service group. */ + LOG_GROUP_SRV_INTNET, + /** SSM group. */ + LOG_GROUP_SSM, + /** STAM group. */ + LOG_GROUP_STAM, + /** SUP group. */ + LOG_GROUP_SUP, + /** SUPport driver group. */ + LOG_GROUP_SUP_DRV, + /** TM group. */ + LOG_GROUP_TM, + /** TRPM group. */ + LOG_GROUP_TRPM, + /** USB cardreader group. */ + LOG_GROUP_USB_CARDREADER, + /** USB driver group. */ + LOG_GROUP_USB_DRV, + /** USBFilter group. */ + LOG_GROUP_USB_FILTER, + /** USB keyboard device group. */ + LOG_GROUP_USB_KBD, + /** USB mouse/tablet device group. */ + LOG_GROUP_USB_MOUSE, + /** MSD USB device group. */ + LOG_GROUP_USB_MSD, + /** USB remote support. */ + LOG_GROUP_USB_REMOTE, + /** USB webcam. */ + LOG_GROUP_USB_WEBCAM, + /** VBox Guest Additions Driver (VBoxGuest). */ + LOG_GROUP_VBGD, + /** VBox Guest Additions Library. */ + LOG_GROUP_VBGL, + /** Generic virtual disk layer. */ + LOG_GROUP_VD, + /** DMG virtual disk backend. */ + LOG_GROUP_VD_DMG, + /** iSCSI virtual disk backend. */ + LOG_GROUP_VD_ISCSI, + /** Parallels HDD virtual disk backend. */ + LOG_GROUP_VD_PARALLELS, + /** QCOW virtual disk backend. */ + LOG_GROUP_VD_QCOW, + /** QED virtual disk backend. */ + LOG_GROUP_VD_QED, + /** Raw virtual disk backend. */ + LOG_GROUP_VD_RAW, + /** VDI virtual disk backend. */ + LOG_GROUP_VD_VDI, + /** VHD virtual disk backend. */ + LOG_GROUP_VD_VHD, + /** VHDX virtual disk backend. */ + LOG_GROUP_VD_VHDX, + /** VMDK virtual disk backend. */ + LOG_GROUP_VD_VMDK, + /** VM group. */ + LOG_GROUP_VM, + /** VMM group. */ + LOG_GROUP_VMM, + /** VRDE group */ + LOG_GROUP_VRDE, + /** VRDP group */ + LOG_GROUP_VRDP, + /** VSCSI group */ + LOG_GROUP_VSCSI, + /** Webservice group. */ + LOG_GROUP_WEBSERVICE + /* !!!ALPHABETICALLY!!! */ +} VBOX_LOGGROUP; + + +/** @def VBOX_LOGGROUP_NAMES + * VirtualBox Logging group names. + * + * Must correspond 100% to LOGGROUP! + * Don't forget commas! + * + * @remark It should be pretty obvious, but just to have + * mentioned it, the values are sorted alphabetically (using the + * english alphabet) except for _DEFAULT which is always first. + * + * If anyone might be wondering what the alphabet looks like: + * a b c d e f g h i j k l m n o p q r s t u v w x y z + */ +#define VBOX_LOGGROUP_NAMES \ +{ \ + RT_LOGGROUP_NAMES, \ + "DEFAULT", \ + "AUDIO_MIXER", \ + "AUDIO_MIXER_BUFFER", \ + "AUTOLOGON", \ + "CFGM", \ + "CPUM", \ + "CSAM", \ + "DBGC", \ + "DBGF", \ + "DBGF_INFO", \ + "DBGG", \ + "DEV", \ + "DEV_AC97", \ + "DEV_ACPI", \ + "DEV_AHCI", \ + "DEV_APIC", \ + "DEV_BUSLOGIC", \ + "DEV_DMA", \ + "DEV_E1000", \ + "DEV_EFI", \ + "DEV_EHCI", \ + "DEV_FDC", \ + "DEV_GIM", \ + "DEV_HDA", \ + "DEV_HDA_CODEC", \ + "DEV_HPET", \ + "DEV_IDE", \ + "DEV_INIP", \ + "DEV_KBD", \ + "DEV_LPC", \ + "DEV_LSILOGICSCSI", \ + "DEV_NE2000", \ + "DEV_OHCI", \ + "DEV_PARALLEL", \ + "DEV_PC", \ + "DEV_PC_ARCH", \ + "DEV_PC_BIOS", \ + "DEV_PCI", \ + "DEV_PCI_RAW", \ + "DEV_PCNET", \ + "DEV_PIC", \ + "DEV_PIT", \ + "DEV_RTC", \ + "DEV_SB16", \ + "DEV_SERIAL", \ + "DEV_SMC", \ + "DEV_VGA", \ + "DEV_VIRTIO", \ + "DEV_VIRTIO_NET", \ + "DEV_VMM", \ + "DEV_VMM_BACKDOOR", \ + "DEV_VMM_STDERR", \ + "DEV_VMSVGA", \ + "DEV_XHCI", \ + "DIS", \ + "DRV", \ + "DRV_ACPI", \ + "DRV_AUDIO", \ + "DRV_BLOCK", \ + "DRV_CHAR", \ + "DRV_DISK_INTEGRITY", \ + "DRV_DISPLAY", \ + "DRV_FLOPPY", \ + "DRV_HOST_AUDIO", \ + "DRV_HOST_BASE", \ + "DRV_HOST_DVD", \ + "DRV_HOST_FLOPPY", \ + "DRV_HOST_PARALLEL", \ + "DRV_HOST_SERIAL", \ + "DRV_INTNET", \ + "DRV_ISO", \ + "DRV_KBD_QUEUE", \ + "DRV_LWIP", \ + "DRV_MINIPORT", \ + "DRV_MOUSE", \ + "DRV_MOUSE_QUEUE", \ + "DRV_NAMEDPIPE", \ + "DRV_NAT", \ + "DRV_RAW_IMAGE", \ + "DRV_SCSI", \ + "DRV_SCSIHOST", \ + "DRV_TELNETSERVER", \ + "DRV_TRANSPORT_ASYNC", \ + "DRV_TUN", \ + "DRV_UDPTUNNEL", \ + "DRV_USBPROXY", \ + "DRV_VBOXHDD", \ + "DRV_VD", \ + "DRV_VRDE_AUDIO", \ + "DRV_VSWITCH", \ + "DRV_VUSB", \ + "EM", \ + "FTM", \ + "GIM", \ + "GMM", \ + "GUEST_CONTROL", \ + "GUEST_DND", \ + "GUI", \ + "GVMM", \ + "HGCM", \ + "HGSMI", \ + "HM", \ + "IEM", \ + "IOM", \ + "IPC", \ + "LWIP", \ + "LWIP_API_LIB", \ + "LWIP_API_MSG", \ + "LWIP_ETHARP", \ + "LWIP_ICMP", \ + "LWIP_IGMP", \ + "LWIP_INET", \ + "LWIP_IP4", \ + "LWIP_IP4_REASS", \ + "LWIP_IP6", \ + "LWIP_MEM", \ + "LWIP_MEMP", \ + "LWIP_NETIF", \ + "LWIP_PBUF", \ + "LWIP_RAW", \ + "LWIP_SOCKETS", \ + "LWIP_SYS", \ + "LWIP_TCP", \ + "LWIP_TCPIP", \ + "LWIP_TCP_CWND", \ + "LWIP_TCP_FR", \ + "LWIP_TCP_INPUT", \ + "LWIP_TCP_OUTPUT", \ + "LWIP_TCP_QLEN", \ + "LWIP_TCP_RST", \ + "LWIP_TCP_RTO", \ + "LWIP_TCP_WND", \ + "LWIP_TIMERS", \ + "LWIP_UDP", \ + "MAIN", \ + "MAIN_ADDITIONSFACILITY", \ + "MAIN_ADDITIONSSTATECHANGEDEVENT", \ + "MAIN_APPLIANCE", \ + "MAIN_AUDIOADAPTER", \ + "MAIN_BANDWIDTHCONTROL", \ + "MAIN_BANDWIDTHGROUP", \ + "MAIN_BANDWIDTHGROUPCHANGEDEVENT", \ + "MAIN_BIOSSETTINGS", \ + "MAIN_CANSHOWWINDOWEVENT", \ + "MAIN_CLIPBOARDMODECHANGEDEVENT", \ + "MAIN_CONSOLE", \ + "MAIN_CPUCHANGEDEVENT", \ + "MAIN_CPUEXECUTIONCAPCHANGEDEVENT", \ + "MAIN_DHCPSERVER", \ + "MAIN_DIRECTORY", \ + "MAIN_DISPLAY", \ + "MAIN_DISPLAYSOURCEBITMAP", \ + "MAIN_DNDBASE", \ + "MAIN_DNDMODECHANGEDEVENT", \ + "MAIN_DNDSOURCE", \ + "MAIN_DNDTARGET", \ + "MAIN_EMULATEDUSB", \ + "MAIN_EVENT", \ + "MAIN_EVENTLISTENER", \ + "MAIN_EVENTSOURCE", \ + "MAIN_EVENTSOURCECHANGEDEVENT", \ + "MAIN_EXTPACK", \ + "MAIN_EXTPACKBASE", \ + "MAIN_EXTPACKFILE", \ + "MAIN_EXTPACKMANAGER", \ + "MAIN_EXTPACKPLUGIN", \ + "MAIN_EXTRADATACANCHANGEEVENT", \ + "MAIN_EXTRADATACHANGEDEVENT", \ + "MAIN_FILE", \ + "MAIN_FRAMEBUFFER", \ + "MAIN_FRAMEBUFFEROVERLAY", \ + "MAIN_FSOBJINFO", \ + "MAIN_GUEST", \ + "MAIN_GUESTDIRECTORY", \ + "MAIN_GUESTDNDSOURCE", \ + "MAIN_GUESTDNDTARGET", \ + "MAIN_GUESTERRORINFO", \ + "MAIN_GUESTFILE", \ + "MAIN_GUESTFILEEVENT", \ + "MAIN_GUESTFILEIOEVENT", \ + "MAIN_GUESTFILEOFFSETCHANGEDEVENT", \ + "MAIN_GUESTFILEREADEVENT", \ + "MAIN_GUESTFILEREGISTEREDEVENT", \ + "MAIN_GUESTFILESTATECHANGEDEVENT", \ + "MAIN_GUESTFILEWRITEEVENT", \ + "MAIN_GUESTFSOBJINFO", \ + "MAIN_GUESTKEYBOARDEVENT", \ + "MAIN_GUESTMONITORCHANGEDEVENT", \ + "MAIN_GUESTMOUSEEVENT", \ + "MAIN_GUESTMULTITOUCHEVENT", \ + "MAIN_GUESTOSTYPE", \ + "MAIN_GUESTPROCESS", \ + "MAIN_GUESTPROCESSEVENT", \ + "MAIN_GUESTPROCESSINPUTNOTIFYEVENT", \ + "MAIN_GUESTPROCESSIOEVENT", \ + "MAIN_GUESTPROCESSOUTPUTEVENT", \ + "MAIN_GUESTPROCESSREGISTEREDEVENT", \ + "MAIN_GUESTPROCESSSTATECHANGEDEVENT", \ + "MAIN_GUESTPROPERTYCHANGEDEVENT", \ + "MAIN_GUESTSESSION", \ + "MAIN_GUESTSESSIONEVENT", \ + "MAIN_GUESTSESSIONREGISTEREDEVENT", \ + "MAIN_GUESTSESSIONSTATECHANGEDEVENT", \ + "MAIN_GUESTUSERSTATECHANGEDEVENT", \ + "MAIN_HOST", \ + "MAIN_HOSTNAMERESOLUTIONCONFIGURATIONCHANGEEVENT", \ + "MAIN_HOSTNETWORKINTERFACE", \ + "MAIN_HOSTPCIDEVICEPLUGEVENT", \ + "MAIN_HOSTUSBDEVICE", \ + "MAIN_HOSTUSBDEVICEFILTER", \ + "MAIN_HOSTVIDEOINPUTDEVICE", \ + "MAIN_INTERNALMACHINECONTROL", \ + "MAIN_INTERNALSESSIONCONTROL", \ + "MAIN_KEYBOARD", \ + "MAIN_KEYBOARDLEDSCHANGEDEVENT", \ + "MAIN_MACHINE", \ + "MAIN_MACHINEDATACHANGEDEVENT", \ + "MAIN_MACHINEDEBUGGER", \ + "MAIN_MACHINEEVENT", \ + "MAIN_MACHINEREGISTEREDEVENT", \ + "MAIN_MACHINESTATECHANGEDEVENT", \ + "MAIN_MEDIUM", \ + "MAIN_MEDIUMATTACHMENT", \ + "MAIN_MEDIUMCHANGEDEVENT", \ + "MAIN_MEDIUMCONFIGCHANGEDEVENT", \ + "MAIN_MEDIUMFORMAT", \ + "MAIN_MEDIUMREGISTEREDEVENT", \ + "MAIN_MOUSE", \ + "MAIN_MOUSECAPABILITYCHANGEDEVENT", \ + "MAIN_MOUSEPOINTERSHAPE", \ + "MAIN_MOUSEPOINTERSHAPECHANGEDEVENT", \ + "MAIN_NATENGINE", \ + "MAIN_NATNETWORK", \ + "MAIN_NATNETWORKALTEREVENT", \ + "MAIN_NATNETWORKCHANGEDEVENT", \ + "MAIN_NATNETWORKCREATIONDELETIONEVENT", \ + "MAIN_NATNETWORKPORTFORWARDEVENT", \ + "MAIN_NATNETWORKSETTINGEVENT", \ + "MAIN_NATNETWORKSTARTSTOPEVENT", \ + "MAIN_NATREDIRECTEVENT", \ + "MAIN_NETWORKADAPTER", \ + "MAIN_NETWORKADAPTERCHANGEDEVENT", \ + "MAIN_PARALLELPORT", \ + "MAIN_PARALLELPORTCHANGEDEVENT", \ + "MAIN_PCIADDRESS", \ + "MAIN_PCIDEVICEATTACHMENT", \ + "MAIN_PERFORMANCECOLLECTOR", \ + "MAIN_PERFORMANCEMETRIC", \ + "MAIN_PROCESS", \ + "MAIN_PROGRESS", \ + "MAIN_REUSABLEEVENT", \ + "MAIN_RUNTIMEERROREVENT", \ + "MAIN_SERIALPORT", \ + "MAIN_SERIALPORTCHANGEDEVENT", \ + "MAIN_SESSION", \ + "MAIN_SESSIONSTATECHANGEDEVENT", \ + "MAIN_SHAREDFOLDER", \ + "MAIN_SHAREDFOLDERCHANGEDEVENT", \ + "MAIN_SHOWWINDOWEVENT", \ + "MAIN_SNAPSHOT", \ + "MAIN_SNAPSHOTCHANGEDEVENT", \ + "MAIN_SNAPSHOTDELETEDEVENT", \ + "MAIN_SNAPSHOTEVENT", \ + "MAIN_SNAPSHOTRESTOREDEVENT", \ + "MAIN_SNAPSHOTTAKENEVENT", \ + "MAIN_STATECHANGEDEVENT", \ + "MAIN_STORAGECONTROLLER", \ + "MAIN_STORAGECONTROLLERCHANGEDEVENT", \ + "MAIN_STORAGEDEVICECHANGEDEVENT", \ + "MAIN_SYSTEMPROPERTIES", \ + "MAIN_TOKEN", \ + "MAIN_USBCONTROLLER", \ + "MAIN_USBCONTROLLERCHANGEDEVENT", \ + "MAIN_USBDEVICE", \ + "MAIN_USBDEVICEFILTER", \ + "MAIN_USBDEVICEFILTERS", \ + "MAIN_USBDEVICESTATECHANGEDEVENT", \ + "MAIN_VBOXSVCAVAILABILITYCHANGEDEVENT", \ + "MAIN_VETOEVENT", \ + "MAIN_VFSEXPLORER", \ + "MAIN_VIDEOCAPTURECHANGEDEVENT", \ + "MAIN_VIRTUALBOX", \ + "MAIN_VIRTUALBOXCLIENT", \ + "MAIN_VIRTUALSYSTEMDESCRIPTION", \ + "MAIN_VRDESERVER", \ + "MAIN_VRDESERVERCHANGEDEVENT", \ + "MAIN_VRDESERVERINFO", \ + "MAIN_VRDESERVERINFOCHANGEDEVENT", \ + "MISC", \ + "MM", \ + "MM_HEAP", \ + "MM_HYPER", \ + "MM_HYPER_HEAP",\ + "MM_PHYS", \ + "MM_POOL", \ + "NAT_SERVICE", \ + "NET_ADP_DRV", \ + "NET_FLT_DRV", \ + "NET_SERVICE", \ + "NET_SHAPER", \ + "PATM", \ + "PDM", \ + "PDM_ASYNC_COMPLETION", \ + "PDM_BLK_CACHE", \ + "PDM_DEVICE", \ + "PDM_DRIVER", \ + "PDM_LDR", \ + "PDM_QUEUE", \ + "PGM", \ + "PGM_DYNMAP", \ + "PGM_PHYS", \ + "PGM_PHYS_ACCESS",\ + "PGM_POOL", \ + "PGM_SHARED", \ + "REM", \ + "REM_DISAS", \ + "REM_HANDLER", \ + "REM_IOPORT", \ + "REM_MMIO", \ + "REM_PRINTF", \ + "REM_RUN", \ + "SELM", \ + "SHARED_CLIPBOARD",\ + "SHARED_CROPENGL",\ + "SHARED_FOLDERS",\ + "SHARED_OPENGL",\ + "SRV_INTNET", \ + "SSM", \ + "STAM", \ + "SUP", \ + "SUP_DRV", \ + "TM", \ + "TRPM", \ + "USB_CARDREADER",\ + "USB_DRV", \ + "USB_FILTER", \ + "USB_KBD", \ + "USB_MOUSE", \ + "USB_MSD", \ + "USB_REMOTE", \ + "USB_WEBCAM", \ + "VBGD", \ + "VBGL", \ + "VD", \ + "VD_DMG", \ + "VD_ISCSI", \ + "VD_PARALLELS", \ + "VD_QCOW", \ + "VD_QED", \ + "VD_RAW", \ + "VD_VDI", \ + "VD_VHD", \ + "VD_VHDX", \ + "VD_VMDK", \ + "VM", \ + "VMM", \ + "VRDE", \ + "VRDP", \ + "VSCSI", \ + "WEBSERVICE", \ +} + +/** @} */ +#endif --- linux-raspi2-4.2.0.orig/ubuntu/vbox/include/VBox/ostypes.h +++ linux-raspi2-4.2.0/ubuntu/vbox/include/VBox/ostypes.h @@ -0,0 +1,166 @@ +/** @file + * VirtualBox - Global Guest Operating System definition. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + +#ifndef ___VBox_ostypes_h +#define ___VBox_ostypes_h + +#include + +RT_C_DECLS_BEGIN + +/** + * Global list of guest operating system types. + * + * They are grouped into families. A family identifer is always has + * mod 0x10000 == 0. New entries can be added, however other components + * depend on the values (e.g. the Qt GUI and guest additions) so the + * existing values MUST stay the same. + * + * Note: distinguish between 32 & 64 bits guest OSes by checking bit 8 (mod 0x100) + */ +typedef enum VBOXOSTYPE +{ + VBOXOSTYPE_Unknown = 0, + VBOXOSTYPE_Unknown_x64 = 0x00100, + VBOXOSTYPE_DOS = 0x10000, + VBOXOSTYPE_Win31 = 0x15000, + VBOXOSTYPE_Win9x = 0x20000, + VBOXOSTYPE_Win95 = 0x21000, + VBOXOSTYPE_Win98 = 0x22000, + VBOXOSTYPE_WinMe = 0x23000, + VBOXOSTYPE_WinNT = 0x30000, + VBOXOSTYPE_WinNT_x64 = 0x30100, + VBOXOSTYPE_WinNT4 = 0x31000, + VBOXOSTYPE_Win2k = 0x32000, + VBOXOSTYPE_WinXP = 0x33000, + VBOXOSTYPE_WinXP_x64 = 0x33100, + VBOXOSTYPE_Win2k3 = 0x34000, + VBOXOSTYPE_Win2k3_x64 = 0x34100, + VBOXOSTYPE_WinVista = 0x35000, + VBOXOSTYPE_WinVista_x64 = 0x35100, + VBOXOSTYPE_Win2k8 = 0x36000, + VBOXOSTYPE_Win2k8_x64 = 0x36100, + VBOXOSTYPE_Win7 = 0x37000, + VBOXOSTYPE_Win7_x64 = 0x37100, + VBOXOSTYPE_Win8 = 0x38000, + VBOXOSTYPE_Win8_x64 = 0x38100, + VBOXOSTYPE_Win2k12_x64 = 0x39100, + VBOXOSTYPE_Win81 = 0x3A000, + VBOXOSTYPE_Win81_x64 = 0x3A100, + VBOXOSTYPE_Win10 = 0x3B000, + VBOXOSTYPE_Win10_x64 = 0x3B100, + VBOXOSTYPE_OS2 = 0x40000, + VBOXOSTYPE_OS2Warp3 = 0x41000, + VBOXOSTYPE_OS2Warp4 = 0x42000, + VBOXOSTYPE_OS2Warp45 = 0x43000, + VBOXOSTYPE_ECS = 0x44000, + VBOXOSTYPE_OS21x = 0x48000, + VBOXOSTYPE_Linux = 0x50000, + VBOXOSTYPE_Linux_x64 = 0x50100, + VBOXOSTYPE_Linux22 = 0x51000, + VBOXOSTYPE_Linux24 = 0x52000, + VBOXOSTYPE_Linux24_x64 = 0x52100, + VBOXOSTYPE_Linux26 = 0x53000, + VBOXOSTYPE_Linux26_x64 = 0x53100, + VBOXOSTYPE_ArchLinux = 0x54000, + VBOXOSTYPE_ArchLinux_x64 = 0x54100, + VBOXOSTYPE_Debian = 0x55000, + VBOXOSTYPE_Debian_x64 = 0x55100, + VBOXOSTYPE_OpenSUSE = 0x56000, + VBOXOSTYPE_OpenSUSE_x64 = 0x56100, + VBOXOSTYPE_FedoraCore = 0x57000, + VBOXOSTYPE_FedoraCore_x64 = 0x57100, + VBOXOSTYPE_Gentoo = 0x58000, + VBOXOSTYPE_Gentoo_x64 = 0x58100, + VBOXOSTYPE_Mandriva = 0x59000, + VBOXOSTYPE_Mandriva_x64 = 0x59100, + VBOXOSTYPE_RedHat = 0x5A000, + VBOXOSTYPE_RedHat_x64 = 0x5A100, + VBOXOSTYPE_Turbolinux = 0x5B000, + VBOXOSTYPE_Turbolinux_x64 = 0x5B100, + VBOXOSTYPE_Ubuntu = 0x5C000, + VBOXOSTYPE_Ubuntu_x64 = 0x5C100, + VBOXOSTYPE_Xandros = 0x5D000, + VBOXOSTYPE_Xandros_x64 = 0x5D100, + VBOXOSTYPE_Oracle = 0x5E000, + VBOXOSTYPE_Oracle_x64 = 0x5E100, + VBOXOSTYPE_FreeBSD = 0x60000, + VBOXOSTYPE_FreeBSD_x64 = 0x60100, + VBOXOSTYPE_OpenBSD = 0x61000, + VBOXOSTYPE_OpenBSD_x64 = 0x61100, + VBOXOSTYPE_NetBSD = 0x62000, + VBOXOSTYPE_NetBSD_x64 = 0x62100, + VBOXOSTYPE_Netware = 0x70000, + VBOXOSTYPE_Solaris = 0x80000, + VBOXOSTYPE_Solaris_x64 = 0x80100, + VBOXOSTYPE_OpenSolaris = 0x81000, + VBOXOSTYPE_OpenSolaris_x64 = 0x81100, + VBOXOSTYPE_Solaris11_x64 = 0x82100, + VBOXOSTYPE_L4 = 0x90000, + VBOXOSTYPE_QNX = 0xA0000, + VBOXOSTYPE_MacOS = 0xB0000, + VBOXOSTYPE_MacOS_x64 = 0xB0100, + VBOXOSTYPE_MacOS106 = 0xB2000, + VBOXOSTYPE_MacOS106_x64 = 0xB2100, + VBOXOSTYPE_MacOS107_x64 = 0xB3100, + VBOXOSTYPE_MacOS108_x64 = 0xB4100, + VBOXOSTYPE_MacOS109_x64 = 0xB5100, + VBOXOSTYPE_MacOS1010_x64 = 0xB6100, + VBOXOSTYPE_MacOS1011_x64 = 0xB7100, + VBOXOSTYPE_JRockitVE = 0xC0000, + VBOXOSTYPE_Haiku = 0xD0000, + VBOXOSTYPE_Haiku_x64 = 0xD0100, +/** The bit number which indicates 64-bit or 32-bit. */ +#define VBOXOSTYPE_x64_BIT 8 + /** The mask which indicates 64-bit. */ + VBOXOSTYPE_x64 = 1 << VBOXOSTYPE_x64_BIT, + /** The usual 32-bit hack. */ + VBOXOSTYPE_32BIT_HACK = 0x7fffffff +} VBOXOSTYPE; + + +/** + * Global list of guest OS families. + */ +typedef enum VBOXOSFAMILY +{ + VBOXOSFAMILY_Unknown = 0, + VBOXOSFAMILY_Windows32 = 1, + VBOXOSFAMILY_Windows64 = 2, + VBOXOSFAMILY_Linux32 = 3, + VBOXOSFAMILY_Linux64 = 4, + VBOXOSFAMILY_FreeBSD32 = 5, + VBOXOSFAMILY_FreeBSD64 = 6, + VBOXOSFAMILY_Solaris32 = 7, + VBOXOSFAMILY_Solaris64 = 8, + VBOXOSFAMILY_MacOSX32 = 9, + VBOXOSFAMILY_MacOSX64 = 10, + /** The usual 32-bit hack. */ + VBOXOSFAMILY_32BIT_HACK = 0x7fffffff +} VBOXOSFAMILY; + +RT_C_DECLS_END + +#endif --- linux-raspi2-4.2.0.orig/ubuntu/vbox/include/VBox/param.h +++ linux-raspi2-4.2.0/ubuntu/vbox/include/VBox/param.h @@ -0,0 +1,175 @@ +/** @file + * VirtualBox Parameter Definitions. (VMM,+) + * + * param.mac is generated from this file by running 'kmk incs' in the root. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + +#ifndef ___VBox_param_h +#define ___VBox_param_h + +#include +#include + + +/** @defgroup grp_vbox_param VBox Parameter Definition + * @{ + */ + +/** The maximum number of pages that can be allocated and mapped + * by various MM, PGM and SUP APIs. */ +#define VBOX_MAX_ALLOC_PAGE_COUNT (256U * _1M / PAGE_SIZE) + +/** @def VBOX_WITH_PAGE_SHARING + * Enables the page sharing code. + * @remarks This must match GMMR0Init; currently we only support page fusion on + * all 64-bit hosts except Mac OS X */ +#if ( HC_ARCH_BITS == 64 /* ASM-NOINC */ \ + && (defined(RT_OS_FREEBSD) || defined(RT_OS_LINUX) || defined(RT_OS_SOLARIS) || defined(RT_OS_WINDOWS)) ) /* ASM-NOINC */ \ + || defined(DOXYGEN_RUNNING) /* ASM-NOINC */ +# define VBOX_WITH_PAGE_SHARING /* ASM-NOINC */ +#endif /* ASM-NOINC */ + + +/** @defgroup grp_vbox_param_mm Memory Monitor Parameters + * @{ + */ +/** Initial address of Hypervisor Memory Area. + * MUST BE PAGE TABLE ALIGNED! */ +#define MM_HYPER_AREA_ADDRESS UINT32_C(0xa0000000) + +/** The max size of the hypervisor memory area. */ +#define MM_HYPER_AREA_MAX_SIZE (40U * _1M) /**< @todo Readjust when floating RAMRANGEs have been implemented. Used to be 20 * _1MB */ + +/** Maximum number of bytes we can dynamically map into the hypervisor region. + * This must be a power of 2 number of pages! + */ +#define MM_HYPER_DYNAMIC_SIZE (16U * PAGE_SIZE) + +/** The minimum guest RAM size in bytes. */ +#define MM_RAM_MIN UINT32_C(0x00400000) +/** The maximum guest RAM size in bytes. */ +#if HC_ARCH_BITS == 64 +# define MM_RAM_MAX UINT64_C(0x20000000000) +#else +# define MM_RAM_MAX UINT64_C(0x000E0000000) +#endif +/** The minimum guest RAM size in MBs. */ +#define MM_RAM_MIN_IN_MB UINT32_C(4) +/** The maximum guest RAM size in MBs. */ +#if HC_ARCH_BITS == 64 +# define MM_RAM_MAX_IN_MB UINT32_C(2097152) +#else +# define MM_RAM_MAX_IN_MB UINT32_C(3584) +#endif +/** The default size of the below 4GB RAM hole. */ +#define MM_RAM_HOLE_SIZE_DEFAULT (512U * _1M) +/** @} */ + + +/** @defgroup grp_vbox_param_pgm Page Manager Parameters + * @{ + */ +/** The number of handy pages. + * This should be a power of two. */ +#define PGM_HANDY_PAGES 128 +/** The threshold at which allocation of more handy pages is flagged. */ +#define PGM_HANDY_PAGES_SET_FF 32 +/** The threshold at which we will allocate more when in ring-3. + * This is must be smaller than both PGM_HANDY_PAGES_SET_FF and + * PGM_HANDY_PAGES_MIN. */ +#define PGM_HANDY_PAGES_R3_ALLOC 8 +/** The threshold at which we will allocate more when in ring-0 or raw mode. + * The idea is that we should never go below this threshold while in ring-0 or + * raw mode because of PGM_HANDY_PAGES_RZ_TO_R3. However, should this happen and + * we are actually out of memory, we will have 8 page to get out of whatever + * code we're executing. + * + * This is must be smaller than both PGM_HANDY_PAGES_SET_FF and + * PGM_HANDY_PAGES_MIN. */ +#define PGM_HANDY_PAGES_RZ_ALLOC 8 +/** The threshold at which we force return to R3 ASAP. + * The idea is that this should be large enough to get out of any code and up to + * the main EM loop when we are out of memory. + * This must be less or equal to PGM_HANDY_PAGES_MIN. */ +#define PGM_HANDY_PAGES_RZ_TO_R3 24 +/** The minimum number of handy pages (after allocation). + * This must be greater or equal to PGM_HANDY_PAGES_SET_FF. + * Another name would be PGM_HANDY_PAGES_EXTRA_RESERVATION or _PARANOIA. :-) */ +#define PGM_HANDY_PAGES_MIN 32 +/** @} */ + + +/** @defgroup grp_vbox_param_vmm VMM Parameters + * @{ + */ +/** VMM stack size. */ +#ifdef RT_OS_DARWIN +# define VMM_STACK_SIZE 16384U +#else +# define VMM_STACK_SIZE 8192U +#endif +/** Min number of Virtual CPUs. */ +#define VMM_MIN_CPU_COUNT 1 +/** Max number of Virtual CPUs. */ +#define VMM_MAX_CPU_COUNT 64 + +/** @} */ + + +/** @defgroup grp_vbox_pci PCI Identifiers + * @{ */ +/** VirtualBox PCI vendor ID. */ +#define VBOX_PCI_VENDORID (0x80ee) + +/** @name VirtualBox graphics card identifiers + * @{ */ +#define VBOX_VENDORID VBOX_PCI_VENDORID /**< @todo wonderful choice of name! Please squeeze a _VGA_ or something in there, please. */ +#define VBOX_DEVICEID (0xbeef) /**< @todo ditto. */ +#define VBOX_VESA_VENDORID VBOX_PCI_VENDORID +#define VBOX_VESA_DEVICEID (0xbeef) +/** @} */ + +/** @name VMMDev PCI card identifiers + * @{ */ +#define VMMDEV_VENDORID VBOX_PCI_VENDORID +#define VMMDEV_DEVICEID (0xcafe) +/** @} */ + +/** @} */ + + +/** @defgroup grp_vbox_param_misc Misc + * @{ */ + +/** The maximum size of a generic segment offload (GSO) frame. This limit is + * imposed by the 16-bit frame size in internal networking header. */ +#define VBOX_MAX_GSO_SIZE 0xfff0 + +/** @} */ + + +/** @} */ + +#endif + --- linux-raspi2-4.2.0.orig/ubuntu/vbox/include/VBox/shflsvc.h +++ linux-raspi2-4.2.0/ubuntu/vbox/include/VBox/shflsvc.h @@ -0,0 +1,1423 @@ +/** @file + * Shared Folders: Common header for host service and guest clients. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + +#ifndef ___VBox_shflsvc_h +#define ___VBox_shflsvc_h + +#include +#include +#include +#include +#include + + +/** @name Some bit flag manipulation macros. + * @{ */ +#ifndef BIT_FLAG +#define BIT_FLAG(__Field,__Flag) ((__Field) & (__Flag)) +#endif + +#ifndef BIT_FLAG_SET +#define BIT_FLAG_SET(__Field,__Flag) ((__Field) |= (__Flag)) +#endif + +#ifndef BIT_FLAG_CLEAR +#define BIT_FLAG_CLEAR(__Field,__Flag) ((__Field) &= ~(__Flag)) +#endif +/** @} */ + + +/** + * Structures shared between guest and the service + * can be relocated and use offsets to point to variable + * length parts. + */ + +/** + * Shared folders protocol works with handles. + * Before doing any action on a file system object, + * one have to obtain the object handle via a SHFL_FN_CREATE + * request. A handle must be closed with SHFL_FN_CLOSE. + */ + +/** Shared Folders service functions. (guest) + * @{ + */ + +/** Query mappings changes. */ +#define SHFL_FN_QUERY_MAPPINGS (1) +/** Query mappings changes. */ +#define SHFL_FN_QUERY_MAP_NAME (2) +/** Open/create object. */ +#define SHFL_FN_CREATE (3) +/** Close object handle. */ +#define SHFL_FN_CLOSE (4) +/** Read object content. */ +#define SHFL_FN_READ (5) +/** Write new object content. */ +#define SHFL_FN_WRITE (6) +/** Lock/unlock a range in the object. */ +#define SHFL_FN_LOCK (7) +/** List object content. */ +#define SHFL_FN_LIST (8) +/** Query/set object information. */ +#define SHFL_FN_INFORMATION (9) +/** Remove object */ +#define SHFL_FN_REMOVE (11) +/** Map folder (legacy) */ +#define SHFL_FN_MAP_FOLDER_OLD (12) +/** Unmap folder */ +#define SHFL_FN_UNMAP_FOLDER (13) +/** Rename object (possibly moving it to another directory) */ +#define SHFL_FN_RENAME (14) +/** Flush file */ +#define SHFL_FN_FLUSH (15) +/** @todo macl, a description, please. */ +#define SHFL_FN_SET_UTF8 (16) +/** Map folder */ +#define SHFL_FN_MAP_FOLDER (17) +/** Read symlink destination (as of VBox 4.0) */ +#define SHFL_FN_READLINK (18) +/** Create symlink (as of VBox 4.0) */ +#define SHFL_FN_SYMLINK (19) +/** Ask host to show symlinks (as of VBox 4.0) */ +#define SHFL_FN_SET_SYMLINKS (20) + +/** @} */ + +/** Shared Folders service functions. (host) + * @{ + */ + +/** Add shared folder mapping. */ +#define SHFL_FN_ADD_MAPPING (1) +/** Remove shared folder mapping. */ +#define SHFL_FN_REMOVE_MAPPING (2) +/** Set the led status light address. */ +#define SHFL_FN_SET_STATUS_LED (3) +/** Allow the guest to create symbolic links (as of VBox 4.0) */ +#define SHFL_FN_ALLOW_SYMLINKS_CREATE (4) +/** @} */ + +/** Root handle for a mapping. Root handles are unique. + * @note + * Function parameters structures consider + * the root handle as 32 bit value. If the typedef + * will be changed, then function parameters must be + * changed accordingly. All those parameters are marked + * with SHFLROOT in comments. + */ +typedef uint32_t SHFLROOT; + +#define SHFL_ROOT_NIL ((SHFLROOT)~0) + + +/** A shared folders handle for an opened object. */ +typedef uint64_t SHFLHANDLE; + +#define SHFL_HANDLE_NIL ((SHFLHANDLE)~0LL) +#define SHFL_HANDLE_ROOT ((SHFLHANDLE)0LL) + +/** Hardcoded maximum length (in chars) of a shared folder name. */ +#define SHFL_MAX_LEN (256) +/** Hardcoded maximum number of shared folder mapping available to the guest. */ +#define SHFL_MAX_MAPPINGS (64) + +/** @name Shared Folders strings. They can be either UTF-8 or UTF-16. + * @{ + */ + +/** + * Shared folder string buffer structure. + */ +#pragma pack(1) +typedef struct _SHFLSTRING +{ + /** Allocated size of the String member in bytes. */ + uint16_t u16Size; + + /** Length of string without trailing nul in bytes. */ + uint16_t u16Length; + + /** UTF-8 or UTF-16 string. Nul terminated. */ + union + { + uint8_t utf8[1]; + uint16_t ucs2[1]; + } String; +} SHFLSTRING; +#pragma pack() + +#define SHFLSTRING_HEADER_SIZE RT_UOFFSETOF(SHFLSTRING, String) + +/** Pointer to a shared folder string buffer. */ +typedef SHFLSTRING *PSHFLSTRING; +/** Pointer to a const shared folder string buffer. */ +typedef const SHFLSTRING *PCSHFLSTRING; + +/** Calculate size of the string. */ +DECLINLINE(uint32_t) ShflStringSizeOfBuffer(PCSHFLSTRING pString) +{ + return pString ? sizeof(SHFLSTRING) - sizeof(pString->String) + pString->u16Size : 0; +} + +DECLINLINE(uint32_t) ShflStringLength(PCSHFLSTRING pString) +{ + return pString ? pString->u16Length : 0; +} + +DECLINLINE(PSHFLSTRING) ShflStringInitBuffer(void *pvBuffer, uint32_t u32Size) +{ + PSHFLSTRING pString = NULL; + const uint32_t u32HeaderSize = SHFLSTRING_HEADER_SIZE; + + /* + * Check that the buffer size is big enough to hold a zero sized string + * and is not too big to fit into 16 bit variables. + */ + if (u32Size >= u32HeaderSize && u32Size - u32HeaderSize <= 0xFFFF) + { + pString = (PSHFLSTRING)pvBuffer; + pString->u16Size = u32Size - u32HeaderSize; + pString->u16Length = 0; + if (pString->u16Size >= sizeof(pString->String.ucs2[0])) + pString->String.ucs2[0] = 0; + else if (pString->u16Size >= sizeof(pString->String.utf8[0])) + pString->String.utf8[0] = 0; + } + + return pString; +} + +/** + * Validates a HGCM string output parameter. + * + * @returns true if valid, false if not. + * + * @param pString The string buffer pointer. + * @param cbBuf The buffer size from the parameter. + */ +DECLINLINE(bool) ShflStringIsValidOut(PCSHFLSTRING pString, uint32_t cbBuf) +{ + if (RT_LIKELY(cbBuf > RT_UOFFSETOF(SHFLSTRING, String))) + if (RT_LIKELY((uint32_t)pString->u16Size + RT_UOFFSETOF(SHFLSTRING, String) <= cbBuf)) + if (RT_LIKELY(pString->u16Length < pString->u16Size)) + return true; + return false; +} + +/** + * Validates a HGCM string input parameter. + * + * @returns true if valid, false if not. + * + * @param pString The string buffer pointer. + * @param cbBuf The buffer size from the parameter. + * @param fUtf8Not16 Set if UTF-8 encoding, clear if UTF-16 encoding. + */ +DECLINLINE(bool) ShflStringIsValidIn(PCSHFLSTRING pString, uint32_t cbBuf, bool fUtf8Not16) +{ + int rc; + if (RT_LIKELY(cbBuf > RT_UOFFSETOF(SHFLSTRING, String))) + { + if (RT_LIKELY((uint32_t)pString->u16Size + RT_UOFFSETOF(SHFLSTRING, String) <= cbBuf)) + { + if (fUtf8Not16) + { + /* UTF-8: */ + if (RT_LIKELY(pString->u16Length < pString->u16Size)) + { + rc = RTStrValidateEncodingEx((const char *)&pString->String.utf8[0], pString->u16Length + 1, + RTSTR_VALIDATE_ENCODING_EXACT_LENGTH | RTSTR_VALIDATE_ENCODING_ZERO_TERMINATED); + if (RT_SUCCESS(rc)) + return true; + } + } + else + { + /* UTF-16: */ + if (RT_LIKELY(!(pString->u16Length & 1))) + { + if (RT_LIKELY((uint32_t)sizeof(RTUTF16) + pString->u16Length <= pString->u16Size)) + { + rc = RTUtf16ValidateEncodingEx(&pString->String.ucs2[0], pString->u16Length / 2 + 1, + RTSTR_VALIDATE_ENCODING_EXACT_LENGTH + | RTSTR_VALIDATE_ENCODING_ZERO_TERMINATED); + if (RT_SUCCESS(rc)) + return true; + } + } + } + } + } + return false; +} + +/** + * Validates an optional HGCM string input parameter. + * + * @returns true if valid, false if not. + * + * @param pString The string buffer pointer. Can be NULL. + * @param cbBuf The buffer size from the parameter. + * @param fUtf8Not16 Set if UTF-8 encoding, clear if UTF-16 encoding. + */ +DECLINLINE(bool) ShflStringIsValidOrNullIn(PCSHFLSTRING pString, uint32_t cbBuf, bool fUtf8Not16) +{ + if (pString) + return ShflStringIsValidIn(pString, cbBuf, fUtf8Not16); + if (RT_LIKELY(cbBuf == 0)) + return true; + return false; +} + +/** @} */ + + +/** + * The available additional information in a SHFLFSOBJATTR object. + */ +typedef enum SHFLFSOBJATTRADD +{ + /** No additional information is available / requested. */ + SHFLFSOBJATTRADD_NOTHING = 1, + /** The additional unix attributes (SHFLFSOBJATTR::u::Unix) are + * available / requested. */ + SHFLFSOBJATTRADD_UNIX, + /** The additional extended attribute size (SHFLFSOBJATTR::u::EASize) is + * available / requested. */ + SHFLFSOBJATTRADD_EASIZE, + /** The last valid item (inclusive). + * The valid range is SHFLFSOBJATTRADD_NOTHING thru + * SHFLFSOBJATTRADD_LAST. */ + SHFLFSOBJATTRADD_LAST = SHFLFSOBJATTRADD_EASIZE, + + /** The usual 32-bit hack. */ + SHFLFSOBJATTRADD_32BIT_SIZE_HACK = 0x7fffffff +} SHFLFSOBJATTRADD; + + +/* Assert sizes of the IRPT types we're using below. */ +AssertCompileSize(RTFMODE, 4); +AssertCompileSize(RTFOFF, 8); +AssertCompileSize(RTINODE, 8); +AssertCompileSize(RTTIMESPEC, 8); +AssertCompileSize(RTDEV, 4); +AssertCompileSize(RTUID, 4); + +/** + * Shared folder filesystem object attributes. + */ +#pragma pack(1) +typedef struct SHFLFSOBJATTR +{ + /** Mode flags (st_mode). RTFS_UNIX_*, RTFS_TYPE_*, and RTFS_DOS_*. + * @remarks We depend on a number of RTFS_ defines to remain unchanged. + * Fortuntately, these are depending on windows, dos and unix + * standard values, so this shouldn't be much of a pain. */ + RTFMODE fMode; + + /** The additional attributes available. */ + SHFLFSOBJATTRADD enmAdditional; + + /** + * Additional attributes. + * + * Unless explicitly specified to an API, the API can provide additional + * data as it is provided by the underlying OS. + */ + union SHFLFSOBJATTRUNION + { + /** Additional Unix Attributes + * These are available when SHFLFSOBJATTRADD is set in fUnix. + */ + struct SHFLFSOBJATTRUNIX + { + /** The user owning the filesystem object (st_uid). + * This field is ~0U if not supported. */ + RTUID uid; + + /** The group the filesystem object is assigned (st_gid). + * This field is ~0U if not supported. */ + RTGID gid; + + /** Number of hard links to this filesystem object (st_nlink). + * This field is 1 if the filesystem doesn't support hardlinking or + * the information isn't available. + */ + uint32_t cHardlinks; + + /** The device number of the device which this filesystem object resides on (st_dev). + * This field is 0 if this information is not available. */ + RTDEV INodeIdDevice; + + /** The unique identifier (within the filesystem) of this filesystem object (st_ino). + * Together with INodeIdDevice, this field can be used as a OS wide unique id + * when both their values are not 0. + * This field is 0 if the information is not available. */ + RTINODE INodeId; + + /** User flags (st_flags). + * This field is 0 if this information is not available. */ + uint32_t fFlags; + + /** The current generation number (st_gen). + * This field is 0 if this information is not available. */ + uint32_t GenerationId; + + /** The device number of a character or block device type object (st_rdev). + * This field is 0 if the file isn't of a character or block device type and + * when the OS doesn't subscribe to the major+minor device idenfication scheme. */ + RTDEV Device; + } Unix; + + /** + * Extended attribute size. + */ + struct SHFLFSOBJATTREASIZE + { + /** Size of EAs. */ + RTFOFF cb; + } EASize; + } u; +} SHFLFSOBJATTR; +#pragma pack() +AssertCompileSize(SHFLFSOBJATTR, 44); +/** Pointer to a shared folder filesystem object attributes structure. */ +typedef SHFLFSOBJATTR *PSHFLFSOBJATTR; +/** Pointer to a const shared folder filesystem object attributes structure. */ +typedef const SHFLFSOBJATTR *PCSHFLFSOBJATTR; + + +/** + * Filesystem object information structure. + */ +#pragma pack(1) +typedef struct SHFLFSOBJINFO +{ + /** Logical size (st_size). + * For normal files this is the size of the file. + * For symbolic links, this is the length of the path name contained + * in the symbolic link. + * For other objects this fields needs to be specified. + */ + RTFOFF cbObject; + + /** Disk allocation size (st_blocks * DEV_BSIZE). */ + RTFOFF cbAllocated; + + /** Time of last access (st_atime). + * @remarks Here (and other places) we depend on the IPRT timespec to + * remain unchanged. */ + RTTIMESPEC AccessTime; + + /** Time of last data modification (st_mtime). */ + RTTIMESPEC ModificationTime; + + /** Time of last status change (st_ctime). + * If not available this is set to ModificationTime. + */ + RTTIMESPEC ChangeTime; + + /** Time of file birth (st_birthtime). + * If not available this is set to ChangeTime. + */ + RTTIMESPEC BirthTime; + + /** Attributes. */ + SHFLFSOBJATTR Attr; + +} SHFLFSOBJINFO; +#pragma pack() +AssertCompileSize(SHFLFSOBJINFO, 92); +/** Pointer to a shared folder filesystem object information structure. */ +typedef SHFLFSOBJINFO *PSHFLFSOBJINFO; +/** Pointer to a const shared folder filesystem object information + * structure. */ +typedef const SHFLFSOBJINFO *PCSHFLFSOBJINFO; + + +/** + * Copy file system objinfo from IPRT to shared folder format. + * + * @param pDst The shared folder structure. + * @param pSrc The IPRT structure. + */ +DECLINLINE(void) vbfsCopyFsObjInfoFromIprt(PSHFLFSOBJINFO pDst, PCRTFSOBJINFO pSrc) +{ + pDst->cbObject = pSrc->cbObject; + pDst->cbAllocated = pSrc->cbAllocated; + pDst->AccessTime = pSrc->AccessTime; + pDst->ModificationTime = pSrc->ModificationTime; + pDst->ChangeTime = pSrc->ChangeTime; + pDst->BirthTime = pSrc->BirthTime; + pDst->Attr.fMode = pSrc->Attr.fMode; + RT_ZERO(pDst->Attr.u); + switch (pSrc->Attr.enmAdditional) + { + default: + case RTFSOBJATTRADD_NOTHING: + pDst->Attr.enmAdditional = SHFLFSOBJATTRADD_NOTHING; + break; + + case RTFSOBJATTRADD_UNIX: + pDst->Attr.enmAdditional = SHFLFSOBJATTRADD_UNIX; + pDst->Attr.u.Unix.uid = pSrc->Attr.u.Unix.uid; + pDst->Attr.u.Unix.gid = pSrc->Attr.u.Unix.gid; + pDst->Attr.u.Unix.cHardlinks = pSrc->Attr.u.Unix.cHardlinks; + pDst->Attr.u.Unix.INodeIdDevice = pSrc->Attr.u.Unix.INodeIdDevice; + pDst->Attr.u.Unix.INodeId = pSrc->Attr.u.Unix.INodeId; + pDst->Attr.u.Unix.fFlags = pSrc->Attr.u.Unix.fFlags; + pDst->Attr.u.Unix.GenerationId = pSrc->Attr.u.Unix.GenerationId; + pDst->Attr.u.Unix.Device = pSrc->Attr.u.Unix.Device; + break; + + case RTFSOBJATTRADD_EASIZE: + pDst->Attr.enmAdditional = SHFLFSOBJATTRADD_EASIZE; + pDst->Attr.u.EASize.cb = pSrc->Attr.u.EASize.cb; + break; + } +} + + +/** Result of an open/create request. + * Along with handle value the result code + * identifies what has happened while + * trying to open the object. + */ +typedef enum _SHFLCREATERESULT +{ + SHFL_NO_RESULT, + /** Specified path does not exist. */ + SHFL_PATH_NOT_FOUND, + /** Path to file exists, but the last component does not. */ + SHFL_FILE_NOT_FOUND, + /** File already exists and either has been opened or not. */ + SHFL_FILE_EXISTS, + /** New file was created. */ + SHFL_FILE_CREATED, + /** Existing file was replaced or overwritten. */ + SHFL_FILE_REPLACED +} SHFLCREATERESULT; + + +/** Open/create flags. + * @{ + */ + +/** No flags. Initialization value. */ +#define SHFL_CF_NONE (0x00000000) + +/** Lookup only the object, do not return a handle. All other flags are ignored. */ +#define SHFL_CF_LOOKUP (0x00000001) + +/** Open parent directory of specified object. + * Useful for the corresponding Windows FSD flag + * and for opening paths like \\dir\\*.* to search the 'dir'. + * @todo possibly not needed??? + */ +#define SHFL_CF_OPEN_TARGET_DIRECTORY (0x00000002) + +/** Create/open a directory. */ +#define SHFL_CF_DIRECTORY (0x00000004) + +/** Open/create action to do if object exists + * and if the object does not exists. + * REPLACE file means atomically DELETE and CREATE. + * OVERWRITE file means truncating the file to 0 and + * setting new size. + * When opening an existing directory REPLACE and OVERWRITE + * actions are considered invalid, and cause returning + * FILE_EXISTS with NIL handle. + */ +#define SHFL_CF_ACT_MASK_IF_EXISTS (0x000000F0) +#define SHFL_CF_ACT_MASK_IF_NEW (0x00000F00) + +/** What to do if object exists. */ +#define SHFL_CF_ACT_OPEN_IF_EXISTS (0x00000000) +#define SHFL_CF_ACT_FAIL_IF_EXISTS (0x00000010) +#define SHFL_CF_ACT_REPLACE_IF_EXISTS (0x00000020) +#define SHFL_CF_ACT_OVERWRITE_IF_EXISTS (0x00000030) + +/** What to do if object does not exist. */ +#define SHFL_CF_ACT_CREATE_IF_NEW (0x00000000) +#define SHFL_CF_ACT_FAIL_IF_NEW (0x00000100) + +/** Read/write requested access for the object. */ +#define SHFL_CF_ACCESS_MASK_RW (0x00003000) + +/** No access requested. */ +#define SHFL_CF_ACCESS_NONE (0x00000000) +/** Read access requested. */ +#define SHFL_CF_ACCESS_READ (0x00001000) +/** Write access requested. */ +#define SHFL_CF_ACCESS_WRITE (0x00002000) +/** Read/Write access requested. */ +#define SHFL_CF_ACCESS_READWRITE (SHFL_CF_ACCESS_READ | SHFL_CF_ACCESS_WRITE) + +/** Requested share access for the object. */ +#define SHFL_CF_ACCESS_MASK_DENY (0x0000C000) + +/** Allow any access. */ +#define SHFL_CF_ACCESS_DENYNONE (0x00000000) +/** Do not allow read. */ +#define SHFL_CF_ACCESS_DENYREAD (0x00004000) +/** Do not allow write. */ +#define SHFL_CF_ACCESS_DENYWRITE (0x00008000) +/** Do not allow access. */ +#define SHFL_CF_ACCESS_DENYALL (SHFL_CF_ACCESS_DENYREAD | SHFL_CF_ACCESS_DENYWRITE) + +/** Requested access to attributes of the object. */ +#define SHFL_CF_ACCESS_MASK_ATTR (0x00030000) + +/** No access requested. */ +#define SHFL_CF_ACCESS_ATTR_NONE (0x00000000) +/** Read access requested. */ +#define SHFL_CF_ACCESS_ATTR_READ (0x00010000) +/** Write access requested. */ +#define SHFL_CF_ACCESS_ATTR_WRITE (0x00020000) +/** Read/Write access requested. */ +#define SHFL_CF_ACCESS_ATTR_READWRITE (SHFL_CF_ACCESS_READ | SHFL_CF_ACCESS_WRITE) + +/** The file is opened in append mode. Ignored if SHFL_CF_ACCESS_WRITE is not set. */ +#define SHFL_CF_ACCESS_APPEND (0x00040000) + +/** @} */ + +#pragma pack(1) +typedef struct _SHFLCREATEPARMS +{ + /* Returned handle of opened object. */ + SHFLHANDLE Handle; + + /* Returned result of the operation */ + SHFLCREATERESULT Result; + + /* SHFL_CF_* */ + uint32_t CreateFlags; + + /* Attributes of object to create and + * returned actual attributes of opened/created object. + */ + SHFLFSOBJINFO Info; + +} SHFLCREATEPARMS; +#pragma pack() + +typedef SHFLCREATEPARMS *PSHFLCREATEPARMS; + + +/** Shared Folders mappings. + * @{ + */ + +/** The mapping has been added since last query. */ +#define SHFL_MS_NEW (1) +/** The mapping has been deleted since last query. */ +#define SHFL_MS_DELETED (2) + +typedef struct _SHFLMAPPING +{ + /** Mapping status. */ + uint32_t u32Status; + /** Root handle. */ + SHFLROOT root; +} SHFLMAPPING; +/** Pointer to a SHFLMAPPING structure. */ +typedef SHFLMAPPING *PSHFLMAPPING; + +/** @} */ + +/** Shared Folder directory information + * @{ + */ + +typedef struct _SHFLDIRINFO +{ + /** Full information about the object. */ + SHFLFSOBJINFO Info; + /** The length of the short field (number of RTUTF16 chars). + * It is 16-bit for reasons of alignment. */ + uint16_t cucShortName; + /** The short name for 8.3 compatibility. + * Empty string if not available. + */ + RTUTF16 uszShortName[14]; + /** @todo malc, a description, please. */ + SHFLSTRING name; +} SHFLDIRINFO, *PSHFLDIRINFO; + + +/** + * Shared folder filesystem properties. + */ +typedef struct SHFLFSPROPERTIES +{ + /** The maximum size of a filesystem object name. + * This does not include the '\\0'. */ + uint32_t cbMaxComponent; + + /** True if the filesystem is remote. + * False if the filesystem is local. */ + bool fRemote; + + /** True if the filesystem is case sensitive. + * False if the filesystem is case insensitive. */ + bool fCaseSensitive; + + /** True if the filesystem is mounted read only. + * False if the filesystem is mounted read write. */ + bool fReadOnly; + + /** True if the filesystem can encode unicode object names. + * False if it can't. */ + bool fSupportsUnicode; + + /** True if the filesystem is compresses. + * False if it isn't or we don't know. */ + bool fCompressed; + + /** True if the filesystem compresses of individual files. + * False if it doesn't or we don't know. */ + bool fFileCompression; + + /** @todo more? */ +} SHFLFSPROPERTIES; +AssertCompileSize(SHFLFSPROPERTIES, 12); +/** Pointer to a shared folder filesystem properties structure. */ +typedef SHFLFSPROPERTIES *PSHFLFSPROPERTIES; +/** Pointer to a const shared folder filesystem properties structure. */ +typedef SHFLFSPROPERTIES const *PCSHFLFSPROPERTIES; + + +/** + * Copy file system properties from IPRT to shared folder format. + * + * @param pDst The shared folder structure. + * @param pSrc The IPRT structure. + */ +DECLINLINE(void) vbfsCopyFsPropertiesFromIprt(PSHFLFSPROPERTIES pDst, PCRTFSPROPERTIES pSrc) +{ + RT_ZERO(*pDst); /* zap the implicit padding. */ + pDst->cbMaxComponent = pSrc->cbMaxComponent; + pDst->fRemote = pSrc->fRemote; + pDst->fCaseSensitive = pSrc->fCaseSensitive; + pDst->fReadOnly = pSrc->fReadOnly; + pDst->fSupportsUnicode = pSrc->fSupportsUnicode; + pDst->fCompressed = pSrc->fCompressed; + pDst->fFileCompression = pSrc->fFileCompression; +} + + +typedef struct _SHFLVOLINFO +{ + RTFOFF ullTotalAllocationBytes; + RTFOFF ullAvailableAllocationBytes; + uint32_t ulBytesPerAllocationUnit; + uint32_t ulBytesPerSector; + uint32_t ulSerial; + SHFLFSPROPERTIES fsProperties; +} SHFLVOLINFO, *PSHFLVOLINFO; + +/** @} */ + +/** Function parameter structures. + * @{ + */ + +/** + * SHFL_FN_QUERY_MAPPINGS + */ +/** Validation mask. Needs to be adjusted + * whenever a new SHFL_MF_ flag is added. */ +#define SHFL_MF_MASK (0x00000011) +/** UC2 enconded strings. */ +#define SHFL_MF_UCS2 (0x00000000) +/** Guest uses UTF8 strings, if not set then the strings are unicode (UCS2). */ +#define SHFL_MF_UTF8 (0x00000001) +/** Just handle the auto-mounted folders. */ +#define SHFL_MF_AUTOMOUNT (0x00000010) + +/** Type of guest system. For future system dependent features. */ +#define SHFL_MF_SYSTEM_MASK (0x0000FF00) +#define SHFL_MF_SYSTEM_NONE (0x00000000) +#define SHFL_MF_SYSTEM_WINDOWS (0x00000100) +#define SHFL_MF_SYSTEM_LINUX (0x00000200) + +/** Parameters structure. */ +typedef struct _VBoxSFQueryMappings +{ + VBoxGuestHGCMCallInfo callInfo; + + /** 32bit, in: + * Flags describing various client needs. + */ + HGCMFunctionParameter flags; + + /** 32bit, in/out: + * Number of mappings the client expects. + * This is the number of elements in the + * mappings array. + */ + HGCMFunctionParameter numberOfMappings; + + /** pointer, in/out: + * Points to array of SHFLMAPPING structures. + */ + HGCMFunctionParameter mappings; + +} VBoxSFQueryMappings; + +/** Number of parameters */ +#define SHFL_CPARMS_QUERY_MAPPINGS (3) + + + +/** + * SHFL_FN_QUERY_MAP_NAME + */ + +/** Parameters structure. */ +typedef struct _VBoxSFQueryMapName +{ + VBoxGuestHGCMCallInfo callInfo; + + /** 32bit, in: SHFLROOT + * Root handle of the mapping which name is queried. + */ + HGCMFunctionParameter root; + + /** pointer, in/out: + * Points to SHFLSTRING buffer. + */ + HGCMFunctionParameter name; + +} VBoxSFQueryMapName; + +/** Number of parameters */ +#define SHFL_CPARMS_QUERY_MAP_NAME (2) + +/** + * SHFL_FN_MAP_FOLDER_OLD + */ + +/** Parameters structure. */ +typedef struct _VBoxSFMapFolder_Old +{ + VBoxGuestHGCMCallInfo callInfo; + + /** pointer, in: + * Points to SHFLSTRING buffer. + */ + HGCMFunctionParameter path; + + /** pointer, out: SHFLROOT + * Root handle of the mapping which name is queried. + */ + HGCMFunctionParameter root; + + /** pointer, in: RTUTF16 + * Path delimiter + */ + HGCMFunctionParameter delimiter; + +} VBoxSFMapFolder_Old; + +/** Number of parameters */ +#define SHFL_CPARMS_MAP_FOLDER_OLD (3) + +/** + * SHFL_FN_MAP_FOLDER + */ + +/** Parameters structure. */ +typedef struct _VBoxSFMapFolder +{ + VBoxGuestHGCMCallInfo callInfo; + + /** pointer, in: + * Points to SHFLSTRING buffer. + */ + HGCMFunctionParameter path; + + /** pointer, out: SHFLROOT + * Root handle of the mapping which name is queried. + */ + HGCMFunctionParameter root; + + /** pointer, in: RTUTF16 + * Path delimiter + */ + HGCMFunctionParameter delimiter; + + /** pointer, in: SHFLROOT + * Case senstive flag + */ + HGCMFunctionParameter fCaseSensitive; + +} VBoxSFMapFolder; + +/** Number of parameters */ +#define SHFL_CPARMS_MAP_FOLDER (4) + +/** + * SHFL_FN_UNMAP_FOLDER + */ + +/** Parameters structure. */ +typedef struct _VBoxSFUnmapFolder +{ + VBoxGuestHGCMCallInfo callInfo; + + /** pointer, in: SHFLROOT + * Root handle of the mapping which name is queried. + */ + HGCMFunctionParameter root; + +} VBoxSFUnmapFolder; + +/** Number of parameters */ +#define SHFL_CPARMS_UNMAP_FOLDER (1) + + +/** + * SHFL_FN_CREATE + */ + +/** Parameters structure. */ +typedef struct _VBoxSFCreate +{ + VBoxGuestHGCMCallInfo callInfo; + + /** pointer, in: SHFLROOT + * Root handle of the mapping which name is queried. + */ + HGCMFunctionParameter root; + + /** pointer, in: + * Points to SHFLSTRING buffer. + */ + HGCMFunctionParameter path; + + /** pointer, in/out: + * Points to SHFLCREATEPARMS buffer. + */ + HGCMFunctionParameter parms; + +} VBoxSFCreate; + +/** Number of parameters */ +#define SHFL_CPARMS_CREATE (3) + + +/** + * SHFL_FN_CLOSE + */ + +/** Parameters structure. */ +typedef struct _VBoxSFClose +{ + VBoxGuestHGCMCallInfo callInfo; + + /** pointer, in: SHFLROOT + * Root handle of the mapping which name is queried. + */ + HGCMFunctionParameter root; + + + /** value64, in: + * SHFLHANDLE of object to close. + */ + HGCMFunctionParameter handle; + +} VBoxSFClose; + +/** Number of parameters */ +#define SHFL_CPARMS_CLOSE (2) + + +/** + * SHFL_FN_READ + */ + +/** Parameters structure. */ +typedef struct _VBoxSFRead +{ + VBoxGuestHGCMCallInfo callInfo; + + /** pointer, in: SHFLROOT + * Root handle of the mapping which name is queried. + */ + HGCMFunctionParameter root; + + /** value64, in: + * SHFLHANDLE of object to read from. + */ + HGCMFunctionParameter handle; + + /** value64, in: + * Offset to read from. + */ + HGCMFunctionParameter offset; + + /** value64, in/out: + * Bytes to read/How many were read. + */ + HGCMFunctionParameter cb; + + /** pointer, out: + * Buffer to place data to. + */ + HGCMFunctionParameter buffer; + +} VBoxSFRead; + +/** Number of parameters */ +#define SHFL_CPARMS_READ (5) + + + +/** + * SHFL_FN_WRITE + */ + +/** Parameters structure. */ +typedef struct _VBoxSFWrite +{ + VBoxGuestHGCMCallInfo callInfo; + + /** pointer, in: SHFLROOT + * Root handle of the mapping which name is queried. + */ + HGCMFunctionParameter root; + + /** value64, in: + * SHFLHANDLE of object to write to. + */ + HGCMFunctionParameter handle; + + /** value64, in: + * Offset to write to. + */ + HGCMFunctionParameter offset; + + /** value64, in/out: + * Bytes to write/How many were written. + */ + HGCMFunctionParameter cb; + + /** pointer, in: + * Data to write. + */ + HGCMFunctionParameter buffer; + +} VBoxSFWrite; + +/** Number of parameters */ +#define SHFL_CPARMS_WRITE (5) + + + +/** + * SHFL_FN_LOCK + */ + +/** Lock owner is the HGCM client. */ + +/** Lock mode bit mask. */ +#define SHFL_LOCK_MODE_MASK (0x3) +/** Cancel lock on the given range. */ +#define SHFL_LOCK_CANCEL (0x0) +/** Acquire read only lock. Prevent write to the range. */ +#define SHFL_LOCK_SHARED (0x1) +/** Acquire write lock. Prevent both write and read to the range. */ +#define SHFL_LOCK_EXCLUSIVE (0x2) + +/** Do not wait for lock if it can not be acquired at the time. */ +#define SHFL_LOCK_NOWAIT (0x0) +/** Wait and acquire lock. */ +#define SHFL_LOCK_WAIT (0x4) + +/** Lock the specified range. */ +#define SHFL_LOCK_PARTIAL (0x0) +/** Lock entire object. */ +#define SHFL_LOCK_ENTIRE (0x8) + +/** Parameters structure. */ +typedef struct _VBoxSFLock +{ + VBoxGuestHGCMCallInfo callInfo; + + /** pointer, in: SHFLROOT + * Root handle of the mapping which name is queried. + */ + HGCMFunctionParameter root; + + /** value64, in: + * SHFLHANDLE of object to be locked. + */ + HGCMFunctionParameter handle; + + /** value64, in: + * Starting offset of lock range. + */ + HGCMFunctionParameter offset; + + /** value64, in: + * Length of range. + */ + HGCMFunctionParameter length; + + /** value32, in: + * Lock flags SHFL_LOCK_*. + */ + HGCMFunctionParameter flags; + +} VBoxSFLock; + +/** Number of parameters */ +#define SHFL_CPARMS_LOCK (5) + + + +/** + * SHFL_FN_FLUSH + */ + +/** Parameters structure. */ +typedef struct _VBoxSFFlush +{ + VBoxGuestHGCMCallInfo callInfo; + + /** pointer, in: SHFLROOT + * Root handle of the mapping which name is queried. + */ + HGCMFunctionParameter root; + + /** value64, in: + * SHFLHANDLE of object to be locked. + */ + HGCMFunctionParameter handle; + +} VBoxSFFlush; + +/** Number of parameters */ +#define SHFL_CPARMS_FLUSH (2) + +/** + * SHFL_FN_LIST + */ + +/** Listing information includes variable length RTDIRENTRY[EX] structures. */ + +/** @todo might be necessary for future. */ +#define SHFL_LIST_NONE 0 +#define SHFL_LIST_RETURN_ONE 1 + +/** Parameters structure. */ +typedef struct _VBoxSFList +{ + VBoxGuestHGCMCallInfo callInfo; + + /** pointer, in: SHFLROOT + * Root handle of the mapping which name is queried. + */ + HGCMFunctionParameter root; + + /** value64, in: + * SHFLHANDLE of object to be listed. + */ + HGCMFunctionParameter handle; + + /** value32, in: + * List flags SHFL_LIST_*. + */ + HGCMFunctionParameter flags; + + /** value32, in/out: + * Bytes to be used for listing information/How many bytes were used. + */ + HGCMFunctionParameter cb; + + /** pointer, in/optional + * Points to SHFLSTRING buffer that specifies a search path. + */ + HGCMFunctionParameter path; + + /** pointer, out: + * Buffer to place listing information to. (SHFLDIRINFO) + */ + HGCMFunctionParameter buffer; + + /** value32, in/out: + * Indicates a key where the listing must be resumed. + * in: 0 means start from begin of object. + * out: 0 means listing completed. + */ + HGCMFunctionParameter resumePoint; + + /** pointer, out: + * Number of files returned + */ + HGCMFunctionParameter cFiles; + +} VBoxSFList; + +/** Number of parameters */ +#define SHFL_CPARMS_LIST (8) + + + +/** + * SHFL_FN_READLINK + */ + +/** Parameters structure. */ +typedef struct _VBoxSFReadLink +{ + VBoxGuestHGCMCallInfo callInfo; + + /** pointer, in: SHFLROOT + * Root handle of the mapping which name is queried. + */ + HGCMFunctionParameter root; + + /** pointer, in: + * Points to SHFLSTRING buffer. + */ + HGCMFunctionParameter path; + + /** pointer, out: + * Buffer to place data to. + */ + HGCMFunctionParameter buffer; + +} VBoxSFReadLink; + +/** Number of parameters */ +#define SHFL_CPARMS_READLINK (3) + + + +/** + * SHFL_FN_INFORMATION + */ + +/** Mask of Set/Get bit. */ +#define SHFL_INFO_MODE_MASK (0x1) +/** Get information */ +#define SHFL_INFO_GET (0x0) +/** Set information */ +#define SHFL_INFO_SET (0x1) + +/** Get name of the object. */ +#define SHFL_INFO_NAME (0x2) +/** Set size of object (extend/trucate); only applies to file objects */ +#define SHFL_INFO_SIZE (0x4) +/** Get/Set file object info. */ +#define SHFL_INFO_FILE (0x8) +/** Get volume information. */ +#define SHFL_INFO_VOLUME (0x10) + +/** @todo different file info structures */ + + +/** Parameters structure. */ +typedef struct _VBoxSFInformation +{ + VBoxGuestHGCMCallInfo callInfo; + + /** pointer, in: SHFLROOT + * Root handle of the mapping which name is queried. + */ + HGCMFunctionParameter root; + + /** value64, in: + * SHFLHANDLE of object to be listed. + */ + HGCMFunctionParameter handle; + + /** value32, in: + * SHFL_INFO_* + */ + HGCMFunctionParameter flags; + + /** value32, in/out: + * Bytes to be used for information/How many bytes were used. + */ + HGCMFunctionParameter cb; + + /** pointer, in/out: + * Information to be set/get (SHFLFSOBJINFO or SHFLSTRING). Do not forget + * to set the SHFLFSOBJINFO::Attr::enmAdditional for Get operation as well. + */ + HGCMFunctionParameter info; + +} VBoxSFInformation; + +/** Number of parameters */ +#define SHFL_CPARMS_INFORMATION (5) + + +/** + * SHFL_FN_REMOVE + */ + +#define SHFL_REMOVE_FILE (0x1) +#define SHFL_REMOVE_DIR (0x2) +#define SHFL_REMOVE_SYMLINK (0x4) + +/** Parameters structure. */ +typedef struct _VBoxSFRemove +{ + VBoxGuestHGCMCallInfo callInfo; + + /** pointer, in: SHFLROOT + * Root handle of the mapping which name is queried. + */ + HGCMFunctionParameter root; + + /** pointer, in: + * Points to SHFLSTRING buffer. + */ + HGCMFunctionParameter path; + + /** value32, in: + * remove flags (file/directory) + */ + HGCMFunctionParameter flags; + +} VBoxSFRemove; + +#define SHFL_CPARMS_REMOVE (3) + + +/** + * SHFL_FN_RENAME + */ + +#define SHFL_RENAME_FILE (0x1) +#define SHFL_RENAME_DIR (0x2) +#define SHFL_RENAME_REPLACE_IF_EXISTS (0x4) + +/** Parameters structure. */ +typedef struct _VBoxSFRename +{ + VBoxGuestHGCMCallInfo callInfo; + + /** pointer, in: SHFLROOT + * Root handle of the mapping which name is queried. + */ + HGCMFunctionParameter root; + + /** pointer, in: + * Points to SHFLSTRING src. + */ + HGCMFunctionParameter src; + + /** pointer, in: + * Points to SHFLSTRING dest. + */ + HGCMFunctionParameter dest; + + /** value32, in: + * rename flags (file/directory) + */ + HGCMFunctionParameter flags; + +} VBoxSFRename; + +#define SHFL_CPARMS_RENAME (4) + + +/** + * SHFL_FN_SYMLINK + */ + +/** Parameters structure. */ +typedef struct _VBoxSFSymlink +{ + VBoxGuestHGCMCallInfo callInfo; + + /** pointer, in: SHFLROOT + * Root handle of the mapping which name is queried. + */ + HGCMFunctionParameter root; + + /** pointer, in: + * Points to SHFLSTRING of path for the new symlink. + */ + HGCMFunctionParameter newPath; + + /** pointer, in: + * Points to SHFLSTRING of destination for symlink. + */ + HGCMFunctionParameter oldPath; + + /** pointer, out: + * Information about created symlink. + */ + HGCMFunctionParameter info; + +} VBoxSFSymlink; + +#define SHFL_CPARMS_SYMLINK (4) + + + +/** + * SHFL_FN_ADD_MAPPING + * Host call, no guest structure is used. + */ + +/** mapping is writable */ +#define SHFL_ADD_MAPPING_F_WRITABLE (RT_BIT_32(0)) +/** mapping is automounted by the guest */ +#define SHFL_ADD_MAPPING_F_AUTOMOUNT (RT_BIT_32(1)) +/** allow the guest to create symlinks */ +#define SHFL_ADD_MAPPING_F_CREATE_SYMLINKS (RT_BIT_32(2)) +/** mapping is actually missing on the host */ +#define SHFL_ADD_MAPPING_F_MISSING (RT_BIT_32(3)) + +#define SHFL_CPARMS_ADD_MAPPING (3) + +/** + * SHFL_FN_REMOVE_MAPPING + * Host call, no guest structure is used. + */ + +#define SHFL_CPARMS_REMOVE_MAPPING (1) + + +/** + * SHFL_FN_SET_STATUS_LED + * Host call, no guest structure is used. + */ + +#define SHFL_CPARMS_SET_STATUS_LED (1) + +/** @} */ + +#endif --- linux-raspi2-4.2.0.orig/ubuntu/vbox/include/VBox/types.h +++ linux-raspi2-4.2.0/ubuntu/vbox/include/VBox/types.h @@ -0,0 +1,1073 @@ +/** @file + * VirtualBox - Types. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + +#ifndef ___VBox_types_h +#define ___VBox_types_h + +#include +#include + + +/** @defgroup grp_types Basic VBox Types + * @{ + */ + + +/** @defgroup grp_types_both Common Guest and Host Context Basic Types + * @{ + */ + + +/** @defgroup grp_types_hc Host Context Basic Types + * @{ + */ + +/** @} */ + + +/** @defgroup grp_types_gc Guest Context Basic Types + * @{ + */ + +/** @} */ + + +/** Pointer to per support driver session data. + * (The data is a R0 entity and private to the the R0 SUP part. All + * other should consider this a sort of handle.) */ +typedef R0PTRTYPE(struct SUPDRVSESSION *) PSUPDRVSESSION; + +/** Event semaphore handle. Ring-0 / ring-3. */ +typedef R0PTRTYPE(struct SUPSEMEVENTHANDLE *) SUPSEMEVENT; +/** Pointer to an event semaphore handle. */ +typedef SUPSEMEVENT *PSUPSEMEVENT; +/** Nil event semaphore handle. */ +#define NIL_SUPSEMEVENT ((SUPSEMEVENT)0) + +/** Multiple release event semaphore handle. Ring-0 / ring-3. */ +typedef R0PTRTYPE(struct SUPSEMEVENTMULTIHANDLE *) SUPSEMEVENTMULTI; +/** Pointer to an multiple release event semaphore handle. */ +typedef SUPSEMEVENTMULTI *PSUPSEMEVENTMULTI; +/** Nil multiple release event semaphore handle. */ +#define NIL_SUPSEMEVENTMULTI ((SUPSEMEVENTMULTI)0) + + +/** Pointer to a VM. */ +typedef struct VM *PVM; +/** Pointer to a VM - Ring-0 Ptr. */ +typedef R0PTRTYPE(struct VM *) PVMR0; +/** Pointer to a VM - Ring-3 Ptr. */ +typedef R3PTRTYPE(struct VM *) PVMR3; +/** Pointer to a VM - RC Ptr. */ +typedef RCPTRTYPE(struct VM *) PVMRC; + +/** Pointer to a virtual CPU structure. */ +typedef struct VMCPU * PVMCPU; +/** Pointer to a virtual CPU structure - Ring-3 Ptr. */ +typedef R3PTRTYPE(struct VMCPU *) PVMCPUR3; +/** Pointer to a virtual CPU structure - Ring-0 Ptr. */ +typedef R0PTRTYPE(struct VMCPU *) PVMCPUR0; +/** Pointer to a virtual CPU structure - RC Ptr. */ +typedef RCPTRTYPE(struct VMCPU *) PVMCPURC; + +/** Pointer to a ring-0 (global) VM structure. */ +typedef R0PTRTYPE(struct GVM *) PGVM; + +/** Pointer to a ring-3 (user mode) VM structure. */ +typedef R3PTRTYPE(struct UVM *) PUVM; + +/** Pointer to a ring-3 (user mode) VMCPU structure. */ +typedef R3PTRTYPE(struct UVMCPU *) PUVMCPU; + +/** Virtual CPU ID. */ +typedef uint32_t VMCPUID; +/** Pointer to a virtual CPU ID. */ +typedef VMCPUID *PVMCPUID; +/** @name Special CPU ID values. + * Most of these are for request scheduling. + * + * @{ */ +/** All virtual CPUs. */ +#define VMCPUID_ALL UINT32_C(0xfffffff2) +/** All virtual CPUs, descending order. */ +#define VMCPUID_ALL_REVERSE UINT32_C(0xfffffff3) +/** Any virtual CPU. + * Intended for scheduling a VM request or some other task. */ +#define VMCPUID_ANY UINT32_C(0xfffffff4) +/** Any virtual CPU; always queue for future execution. + * Intended for scheduling a VM request or some other task. */ +#define VMCPUID_ANY_QUEUE UINT32_C(0xfffffff5) +/** The NIL value. */ +#define NIL_VMCPUID UINT32_C(0xfffffffd) +/** @} */ + +/** + * Virtual CPU set. + */ +typedef struct VMCPUSET +{ + /** The bitmap data. */ + uint32_t au32Bitmap[8 /*256/32*/]; +} VMCPUSET; +/** Pointer to a Virtual CPU set. */ +typedef VMCPUSET *PVMCPUSET; +/** Pointer to a const Virtual CPU set. */ +typedef VMCPUSET const *PCVMCPUSET; + + +/** + * VM State + */ +typedef enum VMSTATE +{ + /** The VM is being created. */ + VMSTATE_CREATING = 0, + /** The VM is created. */ + VMSTATE_CREATED, + /** The VM state is being loaded from file. */ + VMSTATE_LOADING, + /** The VM is being powered on */ + VMSTATE_POWERING_ON, + /** The VM is being resumed. */ + VMSTATE_RESUMING, + /** The VM is runnning. */ + VMSTATE_RUNNING, + /** Live save: The VM is running and the state is being saved. */ + VMSTATE_RUNNING_LS, + /** Fault Tolerance: The VM is running and the state is being synced. */ + VMSTATE_RUNNING_FT, + /** The VM is being reset. */ + VMSTATE_RESETTING, + /** Live save: The VM is being reset and immediately suspended. */ + VMSTATE_RESETTING_LS, + /** The VM is being suspended. */ + VMSTATE_SUSPENDING, + /** Live save: The VM is being suspended during a live save operation, either as + * part of the normal flow or VMR3Reset. */ + VMSTATE_SUSPENDING_LS, + /** Live save: The VM is being suspended by VMR3Suspend during live save. */ + VMSTATE_SUSPENDING_EXT_LS, + /** The VM is suspended. */ + VMSTATE_SUSPENDED, + /** Live save: The VM has been suspended and is waiting for the live save + * operation to move on. */ + VMSTATE_SUSPENDED_LS, + /** Live save: The VM has been suspended by VMR3Suspend during a live save. */ + VMSTATE_SUSPENDED_EXT_LS, + /** The VM is suspended and its state is being saved by EMT(0). (See SSM) */ + VMSTATE_SAVING, + /** The VM is being debugged. (See DBGF.) */ + VMSTATE_DEBUGGING, + /** Live save: The VM is being debugged while the live phase is going on. */ + VMSTATE_DEBUGGING_LS, + /** The VM is being powered off. */ + VMSTATE_POWERING_OFF, + /** Live save: The VM is being powered off and the save cancelled. */ + VMSTATE_POWERING_OFF_LS, + /** The VM is switched off, awaiting destruction. */ + VMSTATE_OFF, + /** Live save: Waiting for cancellation and transition to VMSTATE_OFF. */ + VMSTATE_OFF_LS, + /** The VM is powered off because of a fatal error. */ + VMSTATE_FATAL_ERROR, + /** Live save: Waiting for cancellation and transition to FatalError. */ + VMSTATE_FATAL_ERROR_LS, + /** The VM is in guru meditation over a fatal failure. */ + VMSTATE_GURU_MEDITATION, + /** Live save: Waiting for cancellation and transition to GuruMeditation. */ + VMSTATE_GURU_MEDITATION_LS, + /** The VM is screwed because of a failed state loading. */ + VMSTATE_LOAD_FAILURE, + /** The VM is being destroyed. */ + VMSTATE_DESTROYING, + /** Terminated. */ + VMSTATE_TERMINATED, + /** hack forcing the size of the enum to 32-bits. */ + VMSTATE_MAKE_32BIT_HACK = 0x7fffffff +} VMSTATE; + +/** @def VBOXSTRICTRC_STRICT_ENABLED + * Indicates that VBOXSTRICTRC is in strict mode. + */ +#if defined(__cplusplus) \ + && ARCH_BITS == 64 /* cdecl requires classes and structs as hidden params. */ \ + && !defined(_MSC_VER) /* trouble similar to 32-bit gcc. */ \ + && ( defined(RT_STRICT) \ + || defined(VBOX_STRICT) \ + || defined(DEBUG) \ + || defined(DOXYGEN_RUNNING) ) +# define VBOXSTRICTRC_STRICT_ENABLED 1 +#endif + +/** We need RTERR_STRICT_RC. */ +#if defined(VBOXSTRICTRC_STRICT_ENABLED) && !defined(RTERR_STRICT_RC) +# define RTERR_STRICT_RC 1 +#endif + +/** + * Strict VirtualBox status code. + * + * This is normally an 32-bit integer and the only purpose of the type is to + * highlight the special handling that is required. But in strict build it is a + * class that causes compilation and runtime errors for some of the incorrect + * handling. + */ +#ifdef VBOXSTRICTRC_STRICT_ENABLED +struct VBOXSTRICTRC +{ +protected: + /** The status code. */ + int32_t m_rc; + +public: + /** Default constructor setting the status to VERR_IPE_UNINITIALIZED_STATUS. */ + VBOXSTRICTRC() +#ifdef VERR_IPE_UNINITIALIZED_STATUS + : m_rc(VERR_IPE_UNINITIALIZED_STATUS) +#else + : m_rc(-233 /*VERR_IPE_UNINITIALIZED_STATUS*/) +#endif + { + } + + /** Constructor for normal integer status codes. */ + VBOXSTRICTRC(int32_t const rc) + : m_rc(rc) + { + } + + /** Getter that VBOXSTRICTRC_VAL can use. */ + int32_t getValue() const { return m_rc; } + + /** @name Comparison operators + * @{ */ + bool operator==(int32_t rc) const { return m_rc == rc; } + bool operator!=(int32_t rc) const { return m_rc != rc; } + bool operator<=(int32_t rc) const { return m_rc <= rc; } + bool operator>=(int32_t rc) const { return m_rc >= rc; } + bool operator<(int32_t rc) const { return m_rc < rc; } + bool operator>(int32_t rc) const { return m_rc > rc; } + + bool operator==(const VBOXSTRICTRC &rRc) const { return m_rc == rRc.m_rc; } + bool operator!=(const VBOXSTRICTRC &rRc) const { return m_rc != rRc.m_rc; } + bool operator<=(const VBOXSTRICTRC &rRc) const { return m_rc <= rRc.m_rc; } + bool operator>=(const VBOXSTRICTRC &rRc) const { return m_rc >= rRc.m_rc; } + bool operator<(const VBOXSTRICTRC &rRc) const { return m_rc < rRc.m_rc; } + bool operator>(const VBOXSTRICTRC &rRc) const { return m_rc > rRc.m_rc; } + /** @} */ + + /** Special automatic cast for RT_SUCCESS_NP. */ + operator RTErrStrictType2() const { return RTErrStrictType2(m_rc); } + +private: + /** @name Constructors that will prevent some of the bad types. + * @{ */ + VBOXSTRICTRC(uint8_t rc) : m_rc(-999) { NOREF(rc); } + VBOXSTRICTRC(uint16_t rc) : m_rc(-999) { NOREF(rc); } + VBOXSTRICTRC(uint32_t rc) : m_rc(-999) { NOREF(rc); } + VBOXSTRICTRC(uint64_t rc) : m_rc(-999) { NOREF(rc); } + + VBOXSTRICTRC(int8_t rc) : m_rc(-999) { NOREF(rc); } + VBOXSTRICTRC(int16_t rc) : m_rc(-999) { NOREF(rc); } + VBOXSTRICTRC(int64_t rc) : m_rc(-999) { NOREF(rc); } + /** @} */ +}; +# ifdef _MSC_VER +# pragma warning(disable:4190) +# endif +#else +typedef int32_t VBOXSTRICTRC; +#endif + +/** @def VBOXSTRICTRC_VAL + * Explicit getter. + * @param rcStrict The strict VirtualBox status code. + */ +#ifdef VBOXSTRICTRC_STRICT_ENABLED +# define VBOXSTRICTRC_VAL(rcStrict) ( (rcStrict).getValue() ) +#else +# define VBOXSTRICTRC_VAL(rcStrict) (rcStrict) +#endif + +/** @def VBOXSTRICTRC_TODO + * Returns that needs dealing with. + * @param rcStrict The strict VirtualBox status code. + */ +#define VBOXSTRICTRC_TODO(rcStrict) VBOXSTRICTRC_VAL(rcStrict) + + +/** Pointer to a PDM Base Interface. */ +typedef struct PDMIBASE *PPDMIBASE; +/** Pointer to a pointer to a PDM Base Interface. */ +typedef PPDMIBASE *PPPDMIBASE; + +/** Pointer to a PDM Device Instance. */ +typedef struct PDMDEVINS *PPDMDEVINS; +/** Pointer to a pointer to a PDM Device Instance. */ +typedef PPDMDEVINS *PPPDMDEVINS; +/** R3 pointer to a PDM Device Instance. */ +typedef R3PTRTYPE(PPDMDEVINS) PPDMDEVINSR3; +/** R0 pointer to a PDM Device Instance. */ +typedef R0PTRTYPE(PPDMDEVINS) PPDMDEVINSR0; +/** RC pointer to a PDM Device Instance. */ +typedef RCPTRTYPE(PPDMDEVINS) PPDMDEVINSRC; + +/** Pointer to a PDM USB Device Instance. */ +typedef struct PDMUSBINS *PPDMUSBINS; +/** Pointer to a pointer to a PDM USB Device Instance. */ +typedef PPDMUSBINS *PPPDMUSBINS; + +/** Pointer to a PDM Driver Instance. */ +typedef struct PDMDRVINS *PPDMDRVINS; +/** Pointer to a pointer to a PDM Driver Instance. */ +typedef PPDMDRVINS *PPPDMDRVINS; +/** R3 pointer to a PDM Driver Instance. */ +typedef R3PTRTYPE(PPDMDRVINS) PPDMDRVINSR3; +/** R0 pointer to a PDM Driver Instance. */ +typedef R0PTRTYPE(PPDMDRVINS) PPDMDRVINSR0; +/** RC pointer to a PDM Driver Instance. */ +typedef RCPTRTYPE(PPDMDRVINS) PPDMDRVINSRC; + +/** Pointer to a PDM Service Instance. */ +typedef struct PDMSRVINS *PPDMSRVINS; +/** Pointer to a pointer to a PDM Service Instance. */ +typedef PPDMSRVINS *PPPDMSRVINS; + +/** Pointer to a PDM critical section. */ +typedef union PDMCRITSECT *PPDMCRITSECT; +/** Pointer to a const PDM critical section. */ +typedef const union PDMCRITSECT *PCPDMCRITSECT; + +/** Pointer to a PDM read/write critical section. */ +typedef union PDMCRITSECTRW *PPDMCRITSECTRW; +/** Pointer to a const PDM read/write critical section. */ +typedef union PDMCRITSECTRW const *PCPDMCRITSECTRW; + +/** R3 pointer to a timer. */ +typedef R3PTRTYPE(struct TMTIMER *) PTMTIMERR3; +/** Pointer to a R3 pointer to a timer. */ +typedef PTMTIMERR3 *PPTMTIMERR3; + +/** R0 pointer to a timer. */ +typedef R0PTRTYPE(struct TMTIMER *) PTMTIMERR0; +/** Pointer to a R3 pointer to a timer. */ +typedef PTMTIMERR0 *PPTMTIMERR0; + +/** RC pointer to a timer. */ +typedef RCPTRTYPE(struct TMTIMER *) PTMTIMERRC; +/** Pointer to a RC pointer to a timer. */ +typedef PTMTIMERRC *PPTMTIMERRC; + +/** Pointer to a timer. */ +typedef CTX_SUFF(PTMTIMER) PTMTIMER; +/** Pointer to a pointer to a timer. */ +typedef PTMTIMER *PPTMTIMER; + +/** SSM Operation handle. */ +typedef struct SSMHANDLE *PSSMHANDLE; +/** Pointer to a const SSM stream method table. */ +typedef struct SSMSTRMOPS const *PCSSMSTRMOPS; + +/** Pointer to a CPUMCTX. */ +typedef struct CPUMCTX *PCPUMCTX; +/** Pointer to a const CPUMCTX. */ +typedef const struct CPUMCTX *PCCPUMCTX; + +/** Pointer to a CPU context core. */ +typedef struct CPUMCTXCORE *PCPUMCTXCORE; +/** Pointer to a const CPU context core. */ +typedef const struct CPUMCTXCORE *PCCPUMCTXCORE; + +/** Pointer to a selector register. */ +typedef struct CPUMSELREG *PCPUMSELREG; +/** Pointer to a const selector register. */ +typedef const struct CPUMSELREG *PCCPUMSELREG; + +/** Pointer to selector hidden registers. + * @deprecated Replaced by PCPUMSELREG */ +typedef struct CPUMSELREG *PCPUMSELREGHID; +/** Pointer to const selector hidden registers. + * @deprecated Replaced by PCCPUMSELREG */ +typedef const struct CPUMSELREG *PCCPUMSELREGHID; + +/** @} */ + + +/** @defgroup grp_types_idt Interrupt Descriptor Table Entry. + * @todo This all belongs in x86.h! + * @{ */ + +/** @todo VBOXIDT -> VBOXDESCIDT, skip the complex variations. We'll never use them. */ + +/** IDT Entry, Task Gate view. */ +#pragma pack(1) /* paranoia */ +typedef struct VBOXIDTE_TASKGATE +{ + /** Reserved. */ + unsigned u16Reserved1 : 16; + /** Task Segment Selector. */ + unsigned u16TSS : 16; + /** More reserved. */ + unsigned u8Reserved2 : 8; + /** Fixed value bit 0 - Set to 1. */ + unsigned u1Fixed0 : 1; + /** Busy bit. */ + unsigned u1Busy : 1; + /** Fixed value bit 2 - Set to 1. */ + unsigned u1Fixed1 : 1; + /** Fixed value bit 3 - Set to 0. */ + unsigned u1Fixed2 : 1; + /** Fixed value bit 4 - Set to 0. */ + unsigned u1Fixed3 : 1; + /** Descriptor Privilege level. */ + unsigned u2DPL : 2; + /** Present flag. */ + unsigned u1Present : 1; + /** Reserved. */ + unsigned u16Reserved3 : 16; +} VBOXIDTE_TASKGATE; +#pragma pack() +/** Pointer to IDT Entry, Task gate view. */ +typedef VBOXIDTE_TASKGATE *PVBOXIDTE_TASKGATE; + + +/** IDT Entry, Intertupt gate view. */ +#pragma pack(1) /* paranoia */ +typedef struct VBOXIDTE_INTERRUPTGATE +{ + /** Low offset word. */ + unsigned u16OffsetLow : 16; + /** Segment Selector. */ + unsigned u16SegSel : 16; + /** Reserved. */ + unsigned u5Reserved2 : 5; + /** Fixed value bit 0 - Set to 0. */ + unsigned u1Fixed0 : 1; + /** Fixed value bit 1 - Set to 0. */ + unsigned u1Fixed1 : 1; + /** Fixed value bit 2 - Set to 0. */ + unsigned u1Fixed2 : 1; + /** Fixed value bit 3 - Set to 0. */ + unsigned u1Fixed3 : 1; + /** Fixed value bit 4 - Set to 1. */ + unsigned u1Fixed4 : 1; + /** Fixed value bit 5 - Set to 1. */ + unsigned u1Fixed5 : 1; + /** Gate size, 1 = 32 bits, 0 = 16 bits. */ + unsigned u132BitGate : 1; + /** Fixed value bit 5 - Set to 0. */ + unsigned u1Fixed6 : 1; + /** Descriptor Privilege level. */ + unsigned u2DPL : 2; + /** Present flag. */ + unsigned u1Present : 1; + /** High offset word. */ + unsigned u16OffsetHigh : 16; +} VBOXIDTE_INTERRUPTGATE; +#pragma pack() +/** Pointer to IDT Entry, Interrupt gate view. */ +typedef VBOXIDTE_INTERRUPTGATE *PVBOXIDTE_INTERRUPTGATE; + +/** IDT Entry, Trap Gate view. */ +#pragma pack(1) /* paranoia */ +typedef struct VBOXIDTE_TRAPGATE +{ + /** Low offset word. */ + unsigned u16OffsetLow : 16; + /** Segment Selector. */ + unsigned u16SegSel : 16; + /** Reserved. */ + unsigned u5Reserved2 : 5; + /** Fixed value bit 0 - Set to 0. */ + unsigned u1Fixed0 : 1; + /** Fixed value bit 1 - Set to 0. */ + unsigned u1Fixed1 : 1; + /** Fixed value bit 2 - Set to 0. */ + unsigned u1Fixed2 : 1; + /** Fixed value bit 3 - Set to 1. */ + unsigned u1Fixed3 : 1; + /** Fixed value bit 4 - Set to 1. */ + unsigned u1Fixed4 : 1; + /** Fixed value bit 5 - Set to 1. */ + unsigned u1Fixed5 : 1; + /** Gate size, 1 = 32 bits, 0 = 16 bits. */ + unsigned u132BitGate : 1; + /** Fixed value bit 5 - Set to 0. */ + unsigned u1Fixed6 : 1; + /** Descriptor Privilege level. */ + unsigned u2DPL : 2; + /** Present flag. */ + unsigned u1Present : 1; + /** High offset word. */ + unsigned u16OffsetHigh : 16; +} VBOXIDTE_TRAPGATE; +#pragma pack() +/** Pointer to IDT Entry, Trap Gate view. */ +typedef VBOXIDTE_TRAPGATE *PVBOXIDTE_TRAPGATE; + +/** IDT Entry Generic view. */ +#pragma pack(1) /* paranoia */ +typedef struct VBOXIDTE_GENERIC +{ + /** Low offset word. */ + unsigned u16OffsetLow : 16; + /** Segment Selector. */ + unsigned u16SegSel : 16; + /** Reserved. */ + unsigned u5Reserved : 5; + /** IDT Type part one (not used for task gate). */ + unsigned u3Type1 : 3; + /** IDT Type part two. */ + unsigned u5Type2 : 5; + /** Descriptor Privilege level. */ + unsigned u2DPL : 2; + /** Present flag. */ + unsigned u1Present : 1; + /** High offset word. */ + unsigned u16OffsetHigh : 16; +} VBOXIDTE_GENERIC; +#pragma pack() +/** Pointer to IDT Entry Generic view. */ +typedef VBOXIDTE_GENERIC *PVBOXIDTE_GENERIC; + +/** IDT Type1 value. (Reserved for task gate!) */ +#define VBOX_IDTE_TYPE1 0 +/** IDT Type2 value - Task gate. */ +#define VBOX_IDTE_TYPE2_TASK 0x5 +/** IDT Type2 value - 16 bit interrupt gate. */ +#define VBOX_IDTE_TYPE2_INT_16 0x6 +/** IDT Type2 value - 32 bit interrupt gate. */ +#define VBOX_IDTE_TYPE2_INT_32 0xe +/** IDT Type2 value - 16 bit trap gate. */ +#define VBOX_IDTE_TYPE2_TRAP_16 0x7 +/** IDT Type2 value - 32 bit trap gate. */ +#define VBOX_IDTE_TYPE2_TRAP_32 0xf + +/** IDT Entry. */ +#pragma pack(1) /* paranoia */ +typedef union VBOXIDTE +{ + /** Task gate view. */ + VBOXIDTE_TASKGATE Task; + /** Trap gate view. */ + VBOXIDTE_TRAPGATE Trap; + /** Interrupt gate view. */ + VBOXIDTE_INTERRUPTGATE Int; + /** Generic IDT view. */ + VBOXIDTE_GENERIC Gen; + + /** 8 bit unsigned integer view. */ + uint8_t au8[8]; + /** 16 bit unsigned integer view. */ + uint16_t au16[4]; + /** 32 bit unsigned integer view. */ + uint32_t au32[2]; + /** 64 bit unsigned integer view. */ + uint64_t au64; +} VBOXIDTE; +#pragma pack() +/** Pointer to IDT Entry. */ +typedef VBOXIDTE *PVBOXIDTE; +/** Pointer to IDT Entry. */ +typedef VBOXIDTE const *PCVBOXIDTE; + +/** IDT Entry, 64-bit mode, Intertupt gate view. */ +#pragma pack(1) /* paranoia */ +typedef struct VBOXIDTE64_INTERRUPTGATE +{ + /** Low offset word. */ + unsigned u16OffsetLow : 16; + /** Segment Selector. */ + unsigned u16SegSel : 16; + /** Interrupt Stack Table Index. */ + unsigned u3Ist : 3; + /** Fixed value bit 0 - Set to 0. */ + unsigned u1Fixed0 : 1; + /** Fixed value bit 1 - Set to 0. */ + unsigned u1Fixed1 : 1; + /** Fixed value bit 2 - Set to 0. */ + unsigned u1Fixed2 : 1; + /** Fixed value bit 3 - Set to 0. */ + unsigned u1Fixed3 : 1; + /** Fixed value bit 4 - Set to 0. */ + unsigned u1Fixed4 : 1; + /** Fixed value bit 5 - Set to 0. */ + unsigned u1Fixed5 : 1; + /** Fixed value bit 6 - Set to 1. */ + unsigned u1Fixed6 : 1; + /** Fixed value bit 7 - Set to 1. */ + unsigned u1Fixed7 : 1; + /** Gate size, 1 = 32 bits, 0 = 16 bits. */ + unsigned u132BitGate : 1; + /** Fixed value bit 5 - Set to 0. */ + unsigned u1Fixed8 : 1; + /** Descriptor Privilege level. */ + unsigned u2DPL : 2; + /** Present flag. */ + unsigned u1Present : 1; + /** High offset word. */ + unsigned u16OffsetHigh : 16; + /** Offset bits 32..63. */ + unsigned u32OffsetHigh64; + /** Reserved. */ + unsigned u32Reserved; +} VBOXIDTE64_INTERRUPTGATE; +#pragma pack() +/** Pointer to IDT Entry, 64-bit mode, Interrupt gate view. */ +typedef VBOXIDTE64_INTERRUPTGATE *PVBOXIDTE64_INTERRUPTGATE; + +/** IDT Entry, 64-bit mode, Trap gate view. */ +#pragma pack(1) /* paranoia */ +typedef struct VBOXIDTE64_TRAPGATE +{ + /** Low offset word. */ + unsigned u16OffsetLow : 16; + /** Segment Selector. */ + unsigned u16SegSel : 16; + /** Interrupt Stack Table Index. */ + unsigned u3Ist : 3; + /** Fixed value bit 0 - Set to 0. */ + unsigned u1Fixed0 : 1; + /** Fixed value bit 1 - Set to 0. */ + unsigned u1Fixed1 : 1; + /** Fixed value bit 2 - Set to 0. */ + unsigned u1Fixed2 : 1; + /** Fixed value bit 3 - Set to 0. */ + unsigned u1Fixed3 : 1; + /** Fixed value bit 4 - Set to 0. */ + unsigned u1Fixed4 : 1; + /** Fixed value bit 5 - Set to 1. */ + unsigned u1Fixed5 : 1; + /** Fixed value bit 6 - Set to 1. */ + unsigned u1Fixed6 : 1; + /** Fixed value bit 7 - Set to 1. */ + unsigned u1Fixed7 : 1; + /** Gate size, 1 = 32 bits, 0 = 16 bits. */ + unsigned u132BitGate : 1; + /** Fixed value bit 5 - Set to 0. */ + unsigned u1Fixed8 : 1; + /** Descriptor Privilege level. */ + unsigned u2DPL : 2; + /** Present flag. */ + unsigned u1Present : 1; + /** High offset word. */ + unsigned u16OffsetHigh : 16; + /** Offset bits 32..63. */ + unsigned u32OffsetHigh64; + /** Reserved. */ + unsigned u32Reserved; +} VBOXIDTE64_TRAPGATE; +#pragma pack() +/** Pointer to IDT Entry, 64-bit mode, Trap gate view. */ +typedef VBOXIDTE64_TRAPGATE *PVBOXIDTE64_TRAPGATE; + +/** IDT Entry, 64-bit mode, Generic view. */ +#pragma pack(1) /* paranoia */ +typedef struct VBOXIDTE64_GENERIC +{ + /** Low offset word. */ + unsigned u16OffsetLow : 16; + /** Segment Selector. */ + unsigned u16SegSel : 16; + /** Reserved. */ + unsigned u3Ist : 3; + /** Fixed value bit 0 - Set to 0. */ + unsigned u1Fixed0 : 1; + /** Fixed value bit 1 - Set to 0. */ + unsigned u1Fixed1 : 1; + /** IDT Type part one (not used for task gate). */ + unsigned u3Type1 : 3; + /** IDT Type part two. */ + unsigned u5Type2 : 5; + /** Descriptor Privilege level. */ + unsigned u2DPL : 2; + /** Present flag. */ + unsigned u1Present : 1; + /** High offset word. */ + unsigned u16OffsetHigh : 16; + /** Offset bits 32..63. */ + unsigned u32OffsetHigh64; + /** Reserved. */ + unsigned u32Reserved; +} VBOXIDTE64_GENERIC; +#pragma pack() +/** Pointer to IDT Entry, 64-bit mode, Generic view. */ +typedef VBOXIDTE64_GENERIC *PVBOXIDTE64_GENERIC; + +/** IDT Entry, 64-bit mode. */ +#pragma pack(1) /* paranoia */ +typedef union VBOXIDTE64 +{ + /** Trap gate view. */ + VBOXIDTE64_TRAPGATE Trap; + /** Interrupt gate view. */ + VBOXIDTE64_INTERRUPTGATE Int; + /** Generic IDT view. */ + VBOXIDTE64_GENERIC Gen; + + /** 8 bit unsigned integer view. */ + uint8_t au8[16]; + /** 16 bit unsigned integer view. */ + uint16_t au16[8]; + /** 32 bit unsigned integer view. */ + uint32_t au32[4]; + /** 64 bit unsigned integer view. */ + uint64_t au64[2]; +} VBOXIDTE64; +#pragma pack() +/** Pointer to IDT Entry. */ +typedef VBOXIDTE64 *PVBOXIDTE64; +/** Pointer to IDT Entry. */ +typedef VBOXIDTE64 const *PCVBOXIDTE64; + +#pragma pack(1) +/** IDTR */ +typedef struct VBOXIDTR +{ + /** Size of the IDT. */ + uint16_t cbIdt; + /** Address of the IDT. */ + uint64_t pIdt; +} VBOXIDTR, *PVBOXIDTR; +#pragma pack() + +/** @} */ + + +/** @def VBOXIDTE_OFFSET + * Return the offset of an IDT entry. + */ +#define VBOXIDTE_OFFSET(desc) \ + ( ((uint32_t)((desc).Gen.u16OffsetHigh) << 16) \ + | ( (desc).Gen.u16OffsetLow ) ) + +/** @def VBOXIDTE64_OFFSET + * Return the offset of an IDT entry. + */ +#define VBOXIDTE64_OFFSET(desc) \ + ( ((uint64_t)((desc).Gen.u32OffsetHigh64) << 32) \ + | ((uint32_t)((desc).Gen.u16OffsetHigh) << 16) \ + | ( (desc).Gen.u16OffsetLow ) ) + +#pragma pack(1) +/** GDTR */ +typedef struct VBOXGDTR +{ + /** Size of the GDT. */ + uint16_t cbGdt; + /** Address of the GDT. */ + uint64_t pGdt; +} VBOXGDTR; +#pragma pack() +/** Pointer to GDTR. */ +typedef VBOXGDTR *PVBOXGDTR; + +/** @} */ + + +/** + * 32-bit Task Segment used in raw mode. + * @todo Move this to SELM! Use X86TSS32 instead. + */ +#pragma pack(1) +typedef struct VBOXTSS +{ + /** 0x00 - Back link to previous task. (static) */ + RTSEL selPrev; + uint16_t padding1; + /** 0x04 - Ring-0 stack pointer. (static) */ + uint32_t esp0; + /** 0x08 - Ring-0 stack segment. (static) */ + RTSEL ss0; + uint16_t padding_ss0; + /** 0x0c - Ring-1 stack pointer. (static) */ + uint32_t esp1; + /** 0x10 - Ring-1 stack segment. (static) */ + RTSEL ss1; + uint16_t padding_ss1; + /** 0x14 - Ring-2 stack pointer. (static) */ + uint32_t esp2; + /** 0x18 - Ring-2 stack segment. (static) */ + RTSEL ss2; + uint16_t padding_ss2; + /** 0x1c - Page directory for the task. (static) */ + uint32_t cr3; + /** 0x20 - EIP before task switch. */ + uint32_t eip; + /** 0x24 - EFLAGS before task switch. */ + uint32_t eflags; + /** 0x28 - EAX before task switch. */ + uint32_t eax; + /** 0x2c - ECX before task switch. */ + uint32_t ecx; + /** 0x30 - EDX before task switch. */ + uint32_t edx; + /** 0x34 - EBX before task switch. */ + uint32_t ebx; + /** 0x38 - ESP before task switch. */ + uint32_t esp; + /** 0x3c - EBP before task switch. */ + uint32_t ebp; + /** 0x40 - ESI before task switch. */ + uint32_t esi; + /** 0x44 - EDI before task switch. */ + uint32_t edi; + /** 0x48 - ES before task switch. */ + RTSEL es; + uint16_t padding_es; + /** 0x4c - CS before task switch. */ + RTSEL cs; + uint16_t padding_cs; + /** 0x50 - SS before task switch. */ + RTSEL ss; + uint16_t padding_ss; + /** 0x54 - DS before task switch. */ + RTSEL ds; + uint16_t padding_ds; + /** 0x58 - FS before task switch. */ + RTSEL fs; + uint16_t padding_fs; + /** 0x5c - GS before task switch. */ + RTSEL gs; + uint16_t padding_gs; + /** 0x60 - LDTR before task switch. */ + RTSEL selLdt; + uint16_t padding_ldt; + /** 0x64 - Debug trap flag */ + uint16_t fDebugTrap; + /** 0x66 - Offset relative to the TSS of the start of the I/O Bitmap + * and the end of the interrupt redirection bitmap. */ + uint16_t offIoBitmap; + /** 0x68 - 32 bytes for the virtual interrupt redirection bitmap. (VME) */ + uint8_t IntRedirBitmap[32]; +} VBOXTSS; +#pragma pack() +/** Pointer to task segment. */ +typedef VBOXTSS *PVBOXTSS; +/** Pointer to const task segment. */ +typedef const VBOXTSS *PCVBOXTSS; + + +/** Pointer to a callback method table provided by the VM API user. */ +typedef struct VMM2USERMETHODS const *PCVMM2USERMETHODS; + + +/** + * Data transport buffer (scatter/gather) + */ +typedef struct PDMDATASEG +{ + /** Length of buffer in entry. */ + size_t cbSeg; + /** Pointer to the start of the buffer. */ + void *pvSeg; +} PDMDATASEG; +/** Pointer to a data transport segment. */ +typedef PDMDATASEG *PPDMDATASEG; +/** Pointer to a const data transport segment. */ +typedef PDMDATASEG const *PCPDMDATASEG; + + +/** + * Forms of generic segment offloading. + */ +typedef enum PDMNETWORKGSOTYPE +{ + /** Invalid zero value. */ + PDMNETWORKGSOTYPE_INVALID = 0, + /** TCP/IPv4 - no CWR/ECE encoding. */ + PDMNETWORKGSOTYPE_IPV4_TCP, + /** TCP/IPv6 - no CWR/ECE encoding. */ + PDMNETWORKGSOTYPE_IPV6_TCP, + /** UDP/IPv4. */ + PDMNETWORKGSOTYPE_IPV4_UDP, + /** UDP/IPv6. */ + PDMNETWORKGSOTYPE_IPV6_UDP, + /** TCP/IPv6 over IPv4 tunneling - no CWR/ECE encoding. + * The header offsets and sizes relates to IPv4 and TCP, the IPv6 header is + * figured out as needed. + * @todo Needs checking against facts, this is just an outline of the idea. */ + PDMNETWORKGSOTYPE_IPV4_IPV6_TCP, + /** UDP/IPv6 over IPv4 tunneling. + * The header offsets and sizes relates to IPv4 and UDP, the IPv6 header is + * figured out as needed. + * @todo Needs checking against facts, this is just an outline of the idea. */ + PDMNETWORKGSOTYPE_IPV4_IPV6_UDP, + /** The end of valid GSO types. */ + PDMNETWORKGSOTYPE_END +} PDMNETWORKGSOTYPE; + + +/** + * Generic segment offloading context. + * + * We generally follow the E1000 specs wrt to which header fields we change. + * However the GSO type implies where the checksum fields are and that they are + * always updated from scratch (no half done pseudo checksums). + * + * @remarks This is part of the internal network GSO packets. Take great care + * when making changes. The size is expected to be exactly 8 bytes. + */ +typedef struct PDMNETWORKGSO +{ + /** The type of segmentation offloading we're performing (PDMNETWORKGSOTYPE). */ + uint8_t u8Type; + /** The total header size. */ + uint8_t cbHdrsTotal; + /** The max segment size (MSS) to apply. */ + uint16_t cbMaxSeg; + + /** Offset of the first header (IPv4 / IPv6). 0 if not not needed. */ + uint8_t offHdr1; + /** Offset of the second header (TCP / UDP). 0 if not not needed. */ + uint8_t offHdr2; + /** The header size used for segmentation (equal to offHdr2 in UFO). */ + uint8_t cbHdrsSeg; + /** Unused. */ + uint8_t u8Unused; +} PDMNETWORKGSO; +/** Pointer to a GSO context. */ +typedef PDMNETWORKGSO *PPDMNETWORKGSO; +/** Pointer to a const GSO context. */ +typedef PDMNETWORKGSO const *PCPDMNETWORKGSO; + + +/** + * The current ROM page protection. + * + * @remarks This is part of the saved state. + */ +typedef enum PGMROMPROT +{ + /** The customary invalid value. */ + PGMROMPROT_INVALID = 0, + /** Read from the virgin ROM page, ignore writes. + * Map the virgin page, use write access handler to ignore writes. */ + PGMROMPROT_READ_ROM_WRITE_IGNORE, + /** Read from the virgin ROM page, write to the shadow RAM. + * Map the virgin page, use write access handler to change the shadow RAM. */ + PGMROMPROT_READ_ROM_WRITE_RAM, + /** Read from the shadow ROM page, ignore writes. + * Map the shadow page read-only, use write access handler to ignore writes. */ + PGMROMPROT_READ_RAM_WRITE_IGNORE, + /** Read from the shadow ROM page, ignore writes. + * Map the shadow page read-write, disabled write access handler. */ + PGMROMPROT_READ_RAM_WRITE_RAM, + /** The end of valid values. */ + PGMROMPROT_END, + /** The usual 32-bit type size hack. */ + PGMROMPROT_32BIT_HACK = 0x7fffffff +} PGMROMPROT; + + +/** + * Page mapping lock. + */ +typedef struct PGMPAGEMAPLOCK +{ +#if defined(IN_RC) || defined(VBOX_WITH_2X_4GB_ADDR_SPACE_IN_R0) + /** The locked page. */ + void *pvPage; + /** Pointer to the CPU that made the mapping. + * In ring-0 and raw-mode context we don't intend to ever allow long term + * locking and this is a way of making sure we're still on the same CPU. */ + PVMCPU pVCpu; +#else + /** Pointer to the PGMPAGE and lock type. + * bit-0 abuse: set=write, clear=read. */ + uintptr_t uPageAndType; +/** Read lock type value. */ +# define PGMPAGEMAPLOCK_TYPE_READ ((uintptr_t)0) +/** Write lock type value. */ +# define PGMPAGEMAPLOCK_TYPE_WRITE ((uintptr_t)1) +/** Lock type mask. */ +# define PGMPAGEMAPLOCK_TYPE_MASK ((uintptr_t)1) + /** Pointer to the PGMCHUNKR3MAP. */ + void *pvMap; +#endif +} PGMPAGEMAPLOCK; +/** Pointer to a page mapping lock. */ +typedef PGMPAGEMAPLOCK *PPGMPAGEMAPLOCK; + + +/** Pointer to a info helper callback structure. */ +typedef struct DBGFINFOHLP *PDBGFINFOHLP; +/** Pointer to a const info helper callback structure. */ +typedef const struct DBGFINFOHLP *PCDBGFINFOHLP; + +/** Pointer to a const register descriptor. */ +typedef struct DBGFREGDESC const *PCDBGFREGDESC; + + +/** Configuration manager tree node - A key. */ +typedef struct CFGMNODE *PCFGMNODE; + +/** Configuration manager tree leaf - A value. */ +typedef struct CFGMLEAF *PCFGMLEAF; + + +/** + * CPU modes. + */ +typedef enum CPUMMODE +{ + /** The usual invalid zero entry. */ + CPUMMODE_INVALID = 0, + /** Real mode. */ + CPUMMODE_REAL, + /** Protected mode (32-bit). */ + CPUMMODE_PROTECTED, + /** Long mode (64-bit). */ + CPUMMODE_LONG +} CPUMMODE; + + +/** + * CPU mode flags (DISSTATE::mode). + */ +typedef enum DISCPUMODE +{ + DISCPUMODE_INVALID = 0, + DISCPUMODE_16BIT, + DISCPUMODE_32BIT, + DISCPUMODE_64BIT, + /** hack forcing the size of the enum to 32-bits. */ + DISCPUMODE_MAKE_32BIT_HACK = 0x7fffffff +} DISCPUMODE; + +/** Pointer to the disassembler state. */ +typedef struct DISSTATE *PDISSTATE; +/** Pointer to a const disassembler state. */ +typedef struct DISSTATE const *PCDISSTATE; + +/** @deprecated PDISSTATE and change pCpu and pDisState to pDis. */ +typedef PDISSTATE PDISCPUSTATE; +/** @deprecated PCDISSTATE and change pCpu and pDisState to pDis. */ +typedef PCDISSTATE PCDISCPUSTATE; + + +/** @} */ + +#endif --- linux-raspi2-4.2.0.orig/ubuntu/vbox/include/VBox/version.h +++ linux-raspi2-4.2.0/ubuntu/vbox/include/VBox/version.h @@ -0,0 +1,153 @@ +/** @file + * VBox Version Management. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + +#ifndef ___VBox_version_h +#define ___VBox_version_h + +/* Product info. */ +#include +#include + +#ifdef RC_INVOKED +/* Some versions of RC has trouble with cdefs.h, so we duplicate these two here. */ +# define RT_STR(str) #str +# define RT_XSTR(str) RT_STR(str) +#else /* !RC_INVOKED */ + +/** Combined version number. */ +# define VBOX_VERSION (VBOX_VERSION_MAJOR << 16 | VBOX_VERSION_MINOR) +/** Get minor version from combined version. */ +# define VBOX_GET_VERSION_MINOR(uVer) ((uVer) & 0xffff) +/** Get major version from combined version. */ +# define VBOX_GET_VERSION_MAJOR(uVer) ((uVer) >> 16) + +/** + * Make a full version number. + * + * The returned number can be used in normal integer comparsions and will yield + * the expected results. + * + * @param uMajor The major version number. + * @param uMinor The minor version number. + * @param uBuild The build number. + * @returns Full version number. + */ +# define VBOX_FULL_VERSION_MAKE(uMajor, uMinor, uBuild) \ + ( (uint32_t)((uMajor) & 0xff) << 24 \ + | (uint32_t)((uMinor) & 0xff) << 16 \ + | (uint32_t)((uBuild) & 0xffff) \ + ) + +/** Combined version number. */ +# define VBOX_FULL_VERSION \ + VBOX_FULL_VERSION_MAKE(VBOX_VERSION_MAJOR, VBOX_VERSION_MINOR, VBOX_VERSION_BUILD) +/** Get the major version number from a VBOX_FULL_VERSION style number. */ +# define VBOX_FULL_VERSION_GET_MAJOR(uFullVer) ( ((uFullVer) >> 24) & 0xffU ) +/** Get the minor version number from a VBOX_FULL_VERSION style number. */ +# define VBOX_FULL_VERSION_GET_MINOR(uFullVer) ( ((uFullVer) >> 16) & 0xffU ) +/** Get the build version number from a VBOX_FULL_VERSION style number. */ +# define VBOX_FULL_VERSION_GET_BUILD(uFullVer) ( ((uFullVer) ) & 0xffffU ) + +/** + * Make a short version number for use in 16 bit version fields. + * + * The returned number can be used in normal integer comparsions and will yield + * the expected results. + * + * @param uMajor The major version number. + * @param uMinor The minor version number. + * @returns Short version number. + */ +# define VBOX_SHORT_VERSION_MAKE(uMajor, uMinor) \ + ( (uint16_t)((uMajor) & 0xff) << 8 \ + | (uint16_t)((uMinor) & 0xff) \ + ) + +/** Combined short version number. */ +# define VBOX_SHORT_VERSION \ + VBOX_SHORT_VERSION_MAKE(VBOX_VERSION_MAJOR, VBOX_VERSION_MINOR) +/** Get the major version number from a VBOX_SHORT_VERSION style number. */ +# define VBOX_SHORT_VERSION_GET_MAJOR(uShortVer) ( ((uShortVer) >> 8) & 0xffU ) +/** Get the minor version number from a VBOX_SHORT_VERSION style number. */ +# define VBOX_SHORT_VERSION_GET_MINOR(uShortVer) ( (uShortVer) & 0xffU ) + +#endif /* !RC_INVOKED */ + +/** @name Prefined strings for Windows resource files + * @{ */ +#define VBOX_RC_COMPANY_NAME VBOX_VENDOR +#define VBOX_RC_LEGAL_COPYRIGHT "Copyright (C) 2009-" VBOX_C_YEAR " Oracle Corporation\0" +#define VBOX_RC_PRODUCT_NAME VBOX_PRODUCT +#define VBOX_RC_PRODUCT_NAME_GA VBOX_PRODUCT " Guest Additions" +#define VBOX_RC_PRODUCT_NAME_PUEL_EXTPACK VBOX_PRODUCT " Extension Pack" +#define VBOX_RC_PRODUCT_NAME_DTRACE_EXTPACK VBOX_PRODUCT " VBoxDTrace Extension Pack" +#define VBOX_RC_PRODUCT_NAME_STR VBOX_RC_PRODUCT_NAME "\0" +#define VBOX_RC_PRODUCT_NAME_GA_STR VBOX_RC_PRODUCT_NAME_GA "\0" +#define VBOX_RC_PRODUCT_NAME_PUEL_EXTPACK_STR VBOX_RC_PRODUCT_NAME_PUEL_EXTPACK "\0" +#define VBOX_RC_PRODUCT_NAME_DTRACE_EXTPACK_STR VBOX_RC_PRODUCT_NAME_DTRACE_EXTPACK "\0" +#define VBOX_RC_PRODUCT_VERSION VBOX_VERSION_MAJOR , VBOX_VERSION_MINOR , VBOX_VERSION_BUILD , VBOX_SVN_REV_MOD_5K +#define VBOX_RC_FILE_VERSION VBOX_VERSION_MAJOR , VBOX_VERSION_MINOR , VBOX_VERSION_BUILD , VBOX_SVN_REV_MOD_5K +#ifndef VBOX_VERSION_PRERELEASE +# define VBOX_RC_PRODUCT_VERSION_STR RT_XSTR(VBOX_VERSION_MAJOR) "." RT_XSTR(VBOX_VERSION_MINOR) "." RT_XSTR(VBOX_VERSION_BUILD) "." RT_XSTR(VBOX_SVN_REV) "\0" +# define VBOX_RC_FILE_VERSION_STR RT_XSTR(VBOX_VERSION_MAJOR) "." RT_XSTR(VBOX_VERSION_MINOR) "." RT_XSTR(VBOX_VERSION_BUILD) "." RT_XSTR(VBOX_SVN_REV) "\0" +#else +# define VBOX_RC_PRODUCT_VERSION_STR RT_XSTR(VBOX_VERSION_MAJOR) "." RT_XSTR(VBOX_VERSION_MINOR) "." RT_XSTR(VBOX_VERSION_BUILD) "." RT_XSTR(VBOX_SVN_REV) " (" VBOX_VERSION_PRERELEASE ")\0" +# define VBOX_RC_FILE_VERSION_STR RT_XSTR(VBOX_VERSION_MAJOR) "." RT_XSTR(VBOX_VERSION_MINOR) "." RT_XSTR(VBOX_VERSION_BUILD) "." RT_XSTR(VBOX_SVN_REV) " (" VBOX_VERSION_PRERELEASE ")\0" +#endif +#define VBOX_RC_FILE_OS VOS_NT_WINDOWS32 +#define VBOX_RC_TYPE_DLL VFT_DLL +#define VBOX_RC_TYPE_APP VFT_APP +#define VBOX_RC_TYPE_DRV VFT_DRV +/* Flags and extra strings depending on the build type and who's building. */ +#if defined(DEBUG) || defined(LOG_ENABLED) || defined(RT_STRICT) || defined(VBOX_STRICT) || defined(VBOX_WITH_STATISTICS) +# define VBOX_RC_FILE_FLAGS_DEBUG VS_FF_DEBUG +#else +# define VBOX_RC_FILE_FLAGS_DEBUG 0 +#endif +#if VBOX_VERSION_MINOR >= 51 || defined(VBOX_VERSION_PRERELEASE) +# define VBOX_RC_FILE_FLAGS_PRERELEASE VS_FF_PRERELEASE +#else +# define VBOX_RC_FILE_FLAGS_PRERELEASE 0 +#endif +#if defined(VBOX_BUILD_SERVER_BUILD) && (VBOX_VERSION_MINOR & 1) == 0 +# define VBOX_RC_FILE_FLAGS_BUILD 0 +# define VBOX_RC_MORE_STRINGS +#elif defined(VBOX_BUILD_SERVER_BUILD) +# define VBOX_RC_FILE_FLAGS_BUILD VS_FF_SPECIALBUILD +# define VBOX_RC_MORE_STRINGS VALUE "SpecialBuild", "r" RT_XSTR(VBOX_SVN_REV) "\0" +#else +# define VBOX_RC_FILE_FLAGS_BUILD VS_FF_PRIVATEBUILD +# ifdef VBOX_PRIVATE_BUILD_DESC +# define VBOX_RC_MORE_STRINGS VALUE "PrivateBuild", VBOX_PRIVATE_BUILD_DESC "\0" +# else +# define VBOX_RC_MORE_STRINGS VALUE "PrivateBuild", "r" RT_XSTR(VBOX_SVN_REV) "\0" +# error +# endif +#endif +#define VBOX_RC_FILE_FLAGS (VBOX_RC_FILE_FLAGS_DEBUG | VBOX_RC_FILE_FLAGS_PRERELEASE | VBOX_RC_FILE_FLAGS_BUILD) +/** @} */ + +#endif + --- linux-raspi2-4.2.0.orig/ubuntu/vbox/include/internal/assert.h +++ linux-raspi2-4.2.0/ubuntu/vbox/include/internal/assert.h @@ -0,0 +1,63 @@ +/* $Id: assert.h $ */ +/** @file + * IPRT - Internal RTAssert header + */ + +/* + * Copyright (C) 2009-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + +#ifndef ___internal_assert_h +#define ___internal_assert_h + +#include + +RT_C_DECLS_BEGIN + +#ifdef IN_RING0 + +/** + * Print the 1st part of an assert message to whatever native facility is best + * fitting. + * + * @param pszExpr Expression. Can be NULL. + * @param uLine Location line number. + * @param pszFile Location file name. + * @param pszFunction Location function name. + */ +DECLHIDDEN(void) rtR0AssertNativeMsg1(const char *pszExpr, unsigned uLine, const char *pszFile, const char *pszFunction); + +/** + * Print the 2nd (optional) part of an assert message to whatever native + * facility is best fitting. + * + * @param fInitial Whether it's the initial (true) or an additional (false) + * message. + * @param pszFormat Printf like format string. + * @param va Arguments to that string. + */ +DECLHIDDEN(void) rtR0AssertNativeMsg2V(bool fInitial, const char *pszFormat, va_list va); + +#endif + +RT_C_DECLS_END + +#endif + --- linux-raspi2-4.2.0.orig/ubuntu/vbox/include/internal/initterm.h +++ linux-raspi2-4.2.0/ubuntu/vbox/include/internal/initterm.h @@ -0,0 +1,53 @@ +/* $Id: initterm.h $ */ +/** @file + * IPRT - Initialization & Termination. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + +#ifndef ___internal_initterm_h +#define ___internal_initterm_h + +#include + +RT_C_DECLS_BEGIN + +#ifdef IN_RING0 + +/** + * Platform specific initialization. + * + * @returns IPRT status code. + */ +DECLHIDDEN(int) rtR0InitNative(void); + +/** + * Platform specific termination. + */ +DECLHIDDEN(void) rtR0TermNative(void); + +#endif /* IN_RING0 */ + +RT_C_DECLS_END + +#endif + --- linux-raspi2-4.2.0.orig/ubuntu/vbox/include/internal/iprt.h +++ linux-raspi2-4.2.0/ubuntu/vbox/include/internal/iprt.h @@ -0,0 +1,204 @@ +/* $Id: iprt.h $ */ +/** @file + * IPRT - Internal header for miscellaneous global defs and types. + */ + +/* + * Copyright (C) 2009-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + +#ifndef ___internal_iprt_h +#define ___internal_iprt_h + +#include +#include + +/** @def RT_EXPORT_SYMBOL + * This define is really here just for the linux kernel. + * @param Name The symbol name. + */ +#if defined(RT_OS_LINUX) \ + && defined(IN_RING0) \ + && defined(MODULE) \ + && !defined(RT_NO_EXPORT_SYMBOL) +# define bool linux_bool /* see r0drv/linux/the-linux-kernel.h */ +# include +# if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 33) +# include +# else +# ifndef AUTOCONF_INCLUDED +# include +# endif +# endif +# if defined(CONFIG_MODVERSIONS) && !defined(MODVERSIONS) +# define MODVERSIONS +# if LINUX_VERSION_CODE < KERNEL_VERSION(2, 5, 71) +# include +# endif +# endif +# include +# undef bool +# define RT_EXPORT_SYMBOL(Name) EXPORT_SYMBOL(Name) +#else +# define RT_EXPORT_SYMBOL(Name) extern int g_rtExportSymbolDummyVariable +#endif + + +/** @def RT_MORE_STRICT + * Enables more assertions in IPRT. */ +#if !defined(RT_MORE_STRICT) && (defined(DEBUG) || defined(RT_STRICT) || defined(DOXYGEN_RUNNING)) && !defined(RT_OS_WINDOWS) /** @todo enable on windows after testing */ +# define RT_MORE_STRICT +#endif + +/** @def RT_ASSERT_PREEMPT_CPUID_VAR + * Partner to RT_ASSERT_PREEMPT_CPUID_VAR. Declares and initializes a variable + * idAssertCpu to NIL_RTCPUID if preemption is enabled and to RTMpCpuId if + * disabled. When RT_MORE_STRICT isn't defined it declares an uninitialized + * dummy variable. + * + * Requires iprt/mp.h and iprt/asm.h. + */ +/** @def RT_ASSERT_PREEMPT_CPUID + * Asserts that we didn't change CPU since RT_ASSERT_PREEMPT_CPUID_VAR if + * preemption is disabled. Will also detect changes in preemption + * disable/enable status. This is a noop when RT_MORE_STRICT isn't defined. */ +#ifdef RT_MORE_STRICT +# define RT_ASSERT_PREEMPT_CPUID_VAR() \ + RTCPUID const idAssertCpu = RTThreadPreemptIsEnabled(NIL_RTTHREAD) ? NIL_RTCPUID : RTMpCpuId() +# define RT_ASSERT_PREEMPT_CPUID() \ + do \ + { \ + RTCPUID const idAssertCpuNow = RTThreadPreemptIsEnabled(NIL_RTTHREAD) ? NIL_RTCPUID : RTMpCpuId(); \ + AssertMsg(idAssertCpu == idAssertCpuNow, ("%#x, %#x\n", idAssertCpu, idAssertCpuNow)); \ + } while (0) + +#else +# define RT_ASSERT_PREEMPT_CPUID_VAR() RTCPUID idAssertCpuDummy +# define RT_ASSERT_PREEMPT_CPUID() NOREF(idAssertCpuDummy) +#endif + +/** @def RT_ASSERT_PREEMPT_CPUID_SPIN_ACQUIRED + * Extended version of RT_ASSERT_PREEMPT_CPUID for use before + * RTSpinlockAcquired* returns. This macro works the idCpuOwner and idAssertCpu + * members of the spinlock instance data. */ +#ifdef RT_MORE_STRICT +# define RT_ASSERT_PREEMPT_CPUID_SPIN_ACQUIRED(pThis) \ + do \ + { \ + RTCPUID const idAssertCpuNow = RTMpCpuId(); \ + AssertMsg(idAssertCpu == idAssertCpuNow || idAssertCpu == NIL_RTCPUID, ("%#x, %#x\n", idAssertCpu, idAssertCpuNow)); \ + (pThis)->idAssertCpu = idAssertCpu; \ + (pThis)->idCpuOwner = idAssertCpuNow; \ + } while (0) +#else +# define RT_ASSERT_PREEMPT_CPUID_SPIN_ACQUIRED(pThis) NOREF(idAssertCpuDummy) +#endif + +/** @def RT_ASSERT_PREEMPT_CPUID_SPIN_RELEASE_VARS + * Extended version of RT_ASSERT_PREEMPT_CPUID_VAR for use with + * RTSpinlockRelease* returns. */ +#ifdef RT_MORE_STRICT +# define RT_ASSERT_PREEMPT_CPUID_SPIN_RELEASE_VARS() RTCPUID idAssertCpu +#else +# define RT_ASSERT_PREEMPT_CPUID_SPIN_RELEASE_VARS() RTCPUID idAssertCpuDummy +#endif + +/** @def RT_ASSERT_PREEMPT_CPUID_SPIN_RELEASE + * Extended version of RT_ASSERT_PREEMPT_CPUID for use in RTSpinlockRelease* + * before calling the native API for releasing the spinlock. It must be + * teamed up with RT_ASSERT_PREEMPT_CPUID_SPIN_ACQUIRED. */ +#ifdef RT_MORE_STRICT +# define RT_ASSERT_PREEMPT_CPUID_SPIN_RELEASE(pThis) \ + do \ + { \ + RTCPUID const idCpuOwner = (pThis)->idCpuOwner; \ + RTCPUID const idAssertCpuNow = RTMpCpuId(); \ + AssertMsg(idCpuOwner == idAssertCpuNow, ("%#x, %#x\n", idCpuOwner, idAssertCpuNow)); \ + (pThis)->idCpuOwner = NIL_RTCPUID; \ + idAssertCpu = (pThis)->idAssertCpu; \ + (pThis)->idAssertCpu = NIL_RTCPUID; \ + } while (0) +#else +# define RT_ASSERT_PREEMPT_CPUID_SPIN_RELEASE(pThis) NOREF(idAssertCpuDummy) +#endif + +/** @def RT_ASSERT_PREEMPT_CPUID_DISABLE + * For use in RTThreadPreemptDisable implementations after having disabled + * preemption. Requires iprt/mp.h. */ +#ifdef RT_MORE_STRICT +# define RT_ASSERT_PREEMPT_CPUID_DISABLE(pStat) \ + do \ + { \ + Assert((pStat)->idCpu == NIL_RTCPUID); \ + (pStat)->idCpu = RTMpCpuId(); \ + } while (0) +#else +# define RT_ASSERT_PREEMPT_CPUID_DISABLE(pStat) \ + Assert((pStat)->idCpu == NIL_RTCPUID) +#endif + +/** @def RT_ASSERT_PREEMPT_CPUID_RESTORE + * For use in RTThreadPreemptRestore implementations before restoring + * preemption. Requires iprt/mp.h. */ +#ifdef RT_MORE_STRICT +# define RT_ASSERT_PREEMPT_CPUID_RESTORE(pStat) \ + do \ + { \ + RTCPUID const idAssertCpuNow = RTMpCpuId(); \ + AssertMsg((pStat)->idCpu == idAssertCpuNow, ("%#x, %#x\n", (pStat)->idCpu, idAssertCpuNow)); \ + (pStat)->idCpu = NIL_RTCPUID; \ + } while (0) +#else +# define RT_ASSERT_PREEMPT_CPUID_RESTORE(pStat) do { } while (0) +#endif + + +/** @def RT_ASSERT_INTS_ON + * Asserts that interrupts are disabled when RT_MORE_STRICT is defined. */ +#ifdef RT_MORE_STRICT +# if defined(RT_ARCH_AMD64) || defined(RT_ARCH_X86) +# define RT_ASSERT_INTS_ON() Assert(ASMIntAreEnabled()) +# else /* PORTME: Add architecture/platform specific test. */ +# define RT_ASSERT_INTS_ON() Assert(RTThreadPreemptIsEnabled(NIL_RTTHREAD)) +# endif +#else +# define RT_ASSERT_INTS_ON() do { } while (0) +#endif + +/** @def RT_ASSERT_PREEMPTIBLE + * Asserts that preemption hasn't been disabled (using + * RTThreadPreemptDisable) when RT_MORE_STRICT is defined. */ +#ifdef RT_MORE_STRICT +# define RT_ASSERT_PREEMPTIBLE() Assert(RTThreadPreemptIsEnabled(NIL_RTTHREAD)) +#else +# define RT_ASSERT_PREEMPTIBLE() do { } while (0) +#endif + + +RT_C_DECLS_BEGIN + +#ifdef RT_OS_OS2 +uint32_t rtR0SemWaitOs2ConvertTimeout(uint32_t fFlags, uint64_t uTimeout); +#endif + +RT_C_DECLS_END + +#endif + --- linux-raspi2-4.2.0.orig/ubuntu/vbox/include/internal/lockvalidator.h +++ linux-raspi2-4.2.0/ubuntu/vbox/include/internal/lockvalidator.h @@ -0,0 +1,116 @@ +/* $Id: lockvalidator.h $ */ +/** @file + * IPRT - Internal RTLockValidator header. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + +#ifndef ___iprt_internal_lockvalidator_h +#define ___iprt_internal_lockvalidator_h + +#include +#include + +RT_C_DECLS_BEGIN + + +/** + * Record used only on the lock stack for recording the stack and source + * position of a recursive lock acquisition. + */ +typedef struct RTLOCKVALRECNEST +{ + RTLOCKVALRECCORE Core; + /** The recursion level at this point in the stack. */ + uint32_t cRecursion; + /** Pointer to the next record on the stack. */ + PRTLOCKVALRECUNION volatile pDown; + /** Pointer to the first recursion. */ + PRTLOCKVALRECUNION volatile pRec; + /** Pointer to the next free record when in the + * RTLOCKVALPERTHREAD::pFreeNestRecs list. */ + struct RTLOCKVALRECNEST *pNextFree; + /** The source position. */ + RTLOCKVALSRCPOS SrcPos; +} RTLOCKVALRECNEST; +/** Pointer to a recursion record. */ +typedef RTLOCKVALRECNEST *PRTLOCKVALRECNEST; + + +/** + * Record union for simplifying internal processing. + */ +typedef union RTLOCKVALRECUNION +{ + RTLOCKVALRECCORE Core; + RTLOCKVALRECEXCL Excl; + RTLOCKVALRECSHRD Shared; + RTLOCKVALRECSHRDOWN ShrdOwner; + RTLOCKVALRECNEST Nest; +} RTLOCKVALRECUNION; + + +/** + * Per thread data for the lock validator. + * + * This is part of the RTTHREADINT structure. + */ +typedef struct RTLOCKVALPERTHREAD +{ + /** Where we are blocking. */ + RTLOCKVALSRCPOS SrcPos; + /** Top of the lock stack. */ + PRTLOCKVALRECUNION volatile pStackTop; + /** List of free recursion (nesting) record. */ + PRTLOCKVALRECNEST pFreeNestRecs; + /** What we're blocking on. + * The lock validator sets this, RTThreadUnblock clears it. */ + PRTLOCKVALRECUNION volatile pRec; + /** The state in which pRec that goes with pRec. + * RTThreadUnblocking uses this to figure out when to clear pRec. */ + RTTHREADSTATE volatile enmRecState; + /** The thread is running inside the lock validator. */ + bool volatile fInValidator; + /** Reserved for alignment purposes. */ + bool afReserved[3]; + /** Number of registered write locks, mutexes and critsects that this thread owns. */ + int32_t volatile cWriteLocks; + /** Number of registered read locks that this thread owns, nesting included. */ + int32_t volatile cReadLocks; + /** Bitmap indicating which entires are free (set) and allocated (clear). */ + uint32_t volatile bmFreeShrdOwners; + /** Reserved for alignment purposes. */ + uint32_t u32Reserved; + /** Statically allocated shared owner records */ + RTLOCKVALRECSHRDOWN aShrdOwners[32]; +} RTLOCKVALPERTHREAD; + + +DECLHIDDEN(void) rtLockValidatorInitPerThread(RTLOCKVALPERTHREAD *pPerThread); +DECLHIDDEN(void) rtLockValidatorDeletePerThread(RTLOCKVALPERTHREAD *pPerThread); +DECLHIDDEN(void) rtLockValidatorSerializeDestructEnter(void); +DECLHIDDEN(void) rtLockValidatorSerializeDestructLeave(void); + +RT_C_DECLS_END + +#endif + --- linux-raspi2-4.2.0.orig/ubuntu/vbox/include/internal/magics.h +++ linux-raspi2-4.2.0/ubuntu/vbox/include/internal/magics.h @@ -0,0 +1,241 @@ +/* $Id: magics.h $ */ +/** @file + * IPRT - Internal header defining The Magic Numbers. + */ + +/* + * Copyright (C) 2007-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + +#ifndef ___internal_magics_h +#define ___internal_magics_h + +/** @name Magic Numbers. + * @{ */ + +/** Magic number for RTAIOMGRINT::u32Magic. (Emil Erich Kaestner) */ +#define RTAIOMGR_MAGIC UINT32_C(0x18990223) +/** Magic number for RTAIOMGRINTFILE::u32Magic. (Ephraim Kishon) */ +#define RTAIOMGRFILE_MAGIC UINT32_C(0x19240823) +/** Magic number for RTDBGMODINT::u32Magic. (Charles Lloyd) */ +#define RTDBGAS_MAGIC UINT32_C(0x19380315) +/** Magic number for RTDBGCFGINT::u32Magic. (McCoy Tyner) */ +#define RTDBGCFG_MAGIC UINT32_C(0x19381211) +/** Magic number for RTDBGMODINT::u32Magic. (Keith Jarrett) */ +#define RTDBGMOD_MAGIC UINT32_C(0x19450508) +/** Magic number for RTDBGMODVTIMG::u32Magic. (Jack DeJohnette) */ +#define RTDBGMODVTDBG_MAGIC UINT32_C(0x19420809) +/** Magic number for RTDBGMODVTIMG::u32Magic. (Cecil McBee) */ +#define RTDBGMODVTIMG_MAGIC UINT32_C(0x19350419) +/** Magic value for RTDBGKRNLINFOINT::u32Magic. (John Carmack) */ +#define RTDBGKRNLINFO_MAGIC UINT32_C(0x19700820) +/** The value of RTDIR::u32Magic. (Michael Ende) */ +#define RTDIR_MAGIC UINT32_C(0x19291112) +/** The value of RTDIR::u32Magic after RTDirClose(). */ +#define RTDIR_MAGIC_DEAD UINT32_C(0x19950829) +/** The value of RTDVMINTERNAL::u32Magic. (Dan Brown) */ +#define RTDVM_MAGIC UINT32_C(0x19640622) +/** The value of RTDVMINTERNAL::u32Magic after close. */ +#define RTDVM_MAGIC_DEAD (~RTDVM_MAGIC) +/** The value of RTDVMVOLUMEINTERNAL::u32Magic. (Daniel Defoe) */ +#define RTDVMVOLUME_MAGIC UINT32_C(0x16591961) +/** The value of RTDVMVOLUMEINTERNAL::u32Magic after close. */ +#define RTDVMVOLUME_MAGIC_DEAD UINT32_C(0x17310424) +/** The value of RTFILEAIOCTXINT::u32Magic. (Howard Phillips Lovecraft) */ +#define RTFILEAIOCTX_MAGIC UINT32_C(0x18900820) +/** The value of RTFILEAIOCTXINT::u32Magic after RTFileAioCtxDestroy(). */ +#define RTFILEAIOCTX_MAGIC_DEAD UINT32_C(0x19370315) +/** The value of RTFILEAIOREQINT::u32Magic. (Stephen Edwin King) */ +#define RTFILEAIOREQ_MAGIC UINT32_C(0x19470921) +/** The value of RTENVINTERNAL::u32Magic. (Rumiko Takahashi) */ +#define RTENV_MAGIC UINT32_C(0x19571010) +/** The value of RTERRVARS::ai32Vars[0]. (Ryuichi Sakamoto) */ +#define RTERRVARS_MAGIC UINT32_C(0x19520117) +/** Magic number for RTHANDLETABLEINT::u32Magic. (Hitomi Kanehara) */ +#define RTHANDLETABLE_MAGIC UINT32_C(0x19830808) +/** Magic number for RTHEAPOFFSETINTERNAL::u32Magic. (Neal Town Stephenson) */ +#define RTHEAPOFFSET_MAGIC UINT32_C(0x19591031) +/** Magic number for RTHEAPSIMPLEINTERNAL::uMagic. (Kyoichi Katayama) */ +#define RTHEAPSIMPLE_MAGIC UINT32_C(0x19590105) +/** The magic value for RTHTTPINTERNAL::u32Magic. (Karl May) */ +#define RTHTTP_MAGIC UINT32_C(0x18420225) +/** The value of RTHTTPINTERNAL::u32Magic after close. */ +#define RTHTTP_MAGIC_DEAD UINT32_C(0x19120330) +/** The magic value for RTLDRMODINTERNAL::u32Magic. (Alan Moore) */ +#define RTLDRMOD_MAGIC UINT32_C(0x19531118) +/** The magic value for RTLOCALIPCSERVER::u32Magic. (Naoki Yamamoto) */ +#define RTLOCALIPCSERVER_MAGIC UINT32_C(0x19600201) +/** The magic value for RTLOCALIPCSERVER::u32Magic. (Katsuhiro Otomo) */ +#define RTLOCALIPCSESSION_MAGIC UINT32_C(0x19530414) +/** The magic value for RTLOCKVALCLASSINT::u32Magic. (Thomas Mann) */ +#define RTLOCKVALCLASS_MAGIC UINT32_C(0x18750605) +/** The magic value for RTLOCKVALCLASSINT::u32Magic after destruction. */ +#define RTLOCKVALCLASS_MAGIC_DEAD UINT32_C(0x19550812) +/** The magic value for RTLOCKVALRECEXCL::u32Magic. (Vladimir Vladimirovich Nabokov) */ +#define RTLOCKVALRECEXCL_MAGIC UINT32_C(0x18990422) +/** The dead magic value for RTLOCKVALRECEXCL::u32Magic. */ +#define RTLOCKVALRECEXCL_MAGIC_DEAD UINT32_C(0x19770702) +/** The magic value for RTLOCKVALRECSHRD::u32Magic. (Agnar Mykle) */ +#define RTLOCKVALRECSHRD_MAGIC UINT32_C(0x19150808) +/** The magic value for RTLOCKVALRECSHRD::u32Magic after deletion. */ +#define RTLOCKVALRECSHRD_MAGIC_DEAD UINT32_C(0x19940115) +/** The magic value for RTLOCKVALRECSHRDOWN::u32Magic. (Jens Ingvald Bjoerneboe) */ +#define RTLOCKVALRECSHRDOWN_MAGIC UINT32_C(0x19201009) +/** The magic value for RTLOCKVALRECSHRDOWN::u32Magic after deletion. */ +#define RTLOCKVALRECSHRDOWN_MAGIC_DEAD UINT32_C(0x19760509) +/** The magic value for RTLOCKVALRECNEST::u32Magic. (Anne Desclos) */ +#define RTLOCKVALRECNEST_MAGIC UINT32_C(0x19071123) +/** The magic value for RTLOCKVALRECNEST::u32Magic after deletion. */ +#define RTLOCKVALRECNEST_MAGIC_DEAD UINT32_C(0x19980427) +/** Magic number for RTMEMCACHEINT::u32Magic. (Joseph Weizenbaum) */ +#define RTMEMCACHE_MAGIC UINT32_C(0x19230108) +/** Dead magic number for RTMEMCACHEINT::u32Magic. */ +#define RTMEMCACHE_MAGIC_DEAD UINT32_C(0x20080305) +/** The magic value for RTMEMPOOL::u32Magic. (Jane Austin) */ +#define RTMEMPOOL_MAGIC UINT32_C(0x17751216) +/** The magic value for RTMEMPOOL::u32Magic after RTMemPoolDestroy. */ +#define RTMEMPOOL_MAGIC_DEAD UINT32_C(0x18170718) +/** The magic value for heap blocks. (Edgar Allan Poe) */ +#define RTMEMHDR_MAGIC UINT32_C(0x18090119) +/** The magic value for heap blocks after freeing. */ +#define RTMEMHDR_MAGIC_DEAD UINT32_C(0x18491007) +/** The value of RTPIPEINTERNAL::u32Magic. (Frank Schaetzing) */ +#define RTPIPE_MAGIC UINT32_C(0x19570528) +/** The value of RTPOLLSETINTERNAL::u32Magic. (Ai Yazawa) */ +#define RTPOLLSET_MAGIC UINT32_C(0x19670307) +/** RTR0MEMOBJ::u32Magic. (Masakazu Katsura) */ +#define RTR0MEMOBJ_MAGIC UINT32_C(0x19611210) +/** RTRANDINT::u32Magic. (Alan Moore) */ +#define RTRANDINT_MAGIC UINT32_C(0x19531118) +/** The value of RTREQ::u32Magic. */ +#define RTREQ_MAGIC UINT32_C(0xfeed0001) /**< @todo find a value */ +/** The value of RTREQ::u32Magic of a freed request. */ +#define RTREQ_MAGIC_DEAD (~RTREQ_MAGIC) +/** The value of RTREQPOOLINT::u32Magic. */ +#define RTREQPOOL_MAGIC UINT32_C(0xfeed0002)/**< @todo find a value */ +/** The value of RTREQPOOLINT::u32Magic after destruction. */ +#define RTREQPOOL_MAGIC_DEAD (~RTREQPOOL_MAGIC) +/** The value of RTREQQUEUEINT::u32Magic. */ +#define RTREQQUEUE_MAGIC UINT32_C(0xfeed0003)/**< @todo find a value */ +/** The value of RTREQQUEUEINT::u32Magic after destruction. */ +#define RTREQQUEUE_MAGIC_DEAD (~RTREQQUEUE_MAGIC) +/** The value of RTS3::u32Magic. (Edgar Wallace) */ +#define RTS3_MAGIC UINT32_C(0x18750401) +/** The value of RTS3::u32Magic after RTS3Destroy(). */ +#define RTS3_MAGIC_DEAD UINT32_C(0x19320210) +/** Magic for the event semaphore structure. (Neil Gaiman) */ +#define RTSEMEVENT_MAGIC UINT32_C(0x19601110) +/** Magic for the multiple release event semaphore structure. (Isaac Asimov) */ +#define RTSEMEVENTMULTI_MAGIC UINT32_C(0x19200102) +/** Dead magic value for multiple release event semaphore structures. */ +#define RTSEMEVENTMULTI_MAGIC_DEAD UINT32_C(0x19920406) +/** Magic value for RTSEMFASTMUTEXINTERNAL::u32Magic. (John Ronald Reuel Tolkien) */ +#define RTSEMFASTMUTEX_MAGIC UINT32_C(0x18920103) +/** Dead magic value for RTSEMFASTMUTEXINTERNAL::u32Magic. */ +#define RTSEMFASTMUTEX_MAGIC_DEAD UINT32_C(0x19730902) +/** Magic for the mutex semaphore structure. (Douglas Adams) */ +#define RTSEMMUTEX_MAGIC UINT32_C(0x19520311) +/** Dead magic for the mutex semaphore structure. */ +#define RTSEMMUTEX_MAGIC_DEAD UINT32_C(0x20010511) +/** Magic for the spinning mutex semaphore structure. (Natsume Soseki) */ +#define RTSEMSPINMUTEX_MAGIC UINT32_C(0x18670209) +/** Dead magic value for RTSEMSPINMUTEXINTERNAL::u32Magic. */ +#define RTSEMSPINMUTEX_MAGIC_DEAD UINT32_C(0x19161209) +/** RTSEMRWINTERNAL::u32Magic value. (Kosuke Fujishima) */ +#define RTSEMRW_MAGIC UINT32_C(0x19640707) +/** RTSEMXROADSINTERNAL::u32Magic value. (Kenneth Elton "Ken" Kesey) */ +#define RTSEMXROADS_MAGIC UINT32_C(0x19350917) +/** RTSEMXROADSINTERNAL::u32Magic value after RTSemXRoadsDestroy. */ +#define RTSEMXROADS_MAGIC_DEAD UINT32_C(0x20011110) +/** The magic value for RTSOCKETINT::u32Magic. (Stanislaw Lem) */ +#define RTSOCKET_MAGIC UINT32_C(0x19210912) +/** The magic value for RTSOCKETINT::u32Magic after destruction. */ +#define RTSOCKET_MAGIC_DEAD UINT32_C(0x20060326) +/** Magic value for RTSPINLOCKINTERNAL::u32Magic. (Terry Pratchett) */ +#define RTSPINLOCK_MAGIC UINT32_C(0x19480428) +/** Magic value for generic RTSPINLOCKINTERNAL::u32Magic (Georges Prosper Remi). */ +#define RTSPINLOCK_GEN_MAGIC UINT32_C(0x10970522) +/** Magic value for RTSTRCACHE::u32Magic. (Sir Arthur Charles Clarke) */ +#define RTSTRCACHE_MAGIC UINT32_C(0x19171216) +/** Magic value for RTSTRCACHE::u32Magic after RTStrCacheDestroy. */ +#define RTSTRCACHE_MAGIC_DEAD UINT32_C(0x20080319) +/** The value of RTSTREAM::u32Magic for a valid stream. */ +#define RTSTREAM_MAGIC UINT32_C(0xe44e44ee) +/** Magic value for RTTCPSERVER::u32Magic. (Jan Garbarek) */ +#define RTTCPSERVER_MAGIC UINT32_C(0x19470304) +/** Magic value for RTTCPSERVER::u32Magic. (Harlan Ellison) */ +#define RTUDPSERVER_MAGIC UINT32_C(0x19340527) +/** The value of RTTAR::u32Magic. (Donald Ervin Knuth) */ +#define RTTAR_MAGIC UINT32_C(0x19380110) +/** The value of RTTAR::u32Magic after RTTarClose(). */ +#define RTTAR_MAGIC_DEAD ~RTTAR_MAGIC +/** The value of RTTARFILE::u32Magic. (Abraham Stoker) */ +#define RTTARFILE_MAGIC UINT32_C(0x18471108) +/** The value of RTTARFILE::u32Magic after RTTarFileClose(). */ +#define RTTARFILE_MAGIC_DEAD UINT32_C(0x19120420) +/** RTTESTINT::u32Magic value. (Daniel Kehlmann) */ +#define RTTESTINT_MAGIC UINT32_C(0x19750113) +/** RTTHREADCTXHOOKINT::u32Magic value. (Dennis MacAlistair Ritchie) */ +#define RTTHREADCTXHOOKINT_MAGIC UINT32_C(0x19410909) +/** RTTHREADINT::u32Magic value. (Gilbert Keith Chesterton) */ +#define RTTHREADINT_MAGIC UINT32_C(0x18740529) +/** RTTHREADINT::u32Magic value for a dead thread. */ +#define RTTHREADINT_MAGIC_DEAD UINT32_C(0x19360614) +/** Magic number for timer handles. (Jared Mason Diamond) */ +#define RTTIMER_MAGIC UINT32_C(0x19370910) +/** Magic number for timer low resolution handles. (Saki Hiwatari) */ +#define RTTIMERLR_MAGIC UINT32_C(0x19610715) +/** Magic value of RTTRACEBUFINT::u32Magic. (George Orwell) */ +#define RTTRACEBUF_MAGIC UINT32_C(0x19030625) +/** Magic value of RTTRACEBUFINT::u32Magic after the final release. */ +#define RTTRACEBUF_MAGIC_DEAD UINT32_C(0x19500121) +/** The value of RTVFSOBJINTERNAL::u32Magic. (Yasunari Kawabata) */ +#define RTVFSOBJ_MAGIC UINT32_C(0x18990614) +/** The value of RTVFSOBJINTERNAL::u32Magic arter close. */ +#define RTVFSOBJ_MAGIC_DEAD UINT32_C(0x19720416) +/** The value of RTVFSINTERNAL::u32Magic. (Sir Kingsley William Amis) */ +#define RTVFS_MAGIC UINT32_C(0x19220416) +/** The value of RTVFSINTERNAL::u32Magic after close. */ +#define RTVFS_MAGIC_DEAD UINT32_C(0x19951022) +/** The value of RTVFSFSSTREAMINTERNAL::u32Magic. (William McGuire "Bill" Bryson) */ +#define RTVFSFSSTREAM_MAGIC UINT32_C(0x19511208) +/** The value of RTVFSFSSTREAMINTERNAL::u32Magic after close */ +#define RTVFSFSSTREAM_MAGIC_DEAD (~RTVFSFSSTREAM_MAGIC) +/** The value of RTVFSDIRINTERNAL::u32Magic. (Franklin Patrick Herbert, Jr.) */ +#define RTVFSDIR_MAGIC UINT32_C(0x19201008) +/** The value of RTVFSDIRINTERNAL::u32Magic after close. */ +#define RTVFSDIR_MAGIC_DEAD UINT32_C(0x19860211) +/** The value of RTVFSFILEINTERNAL::u32Magic. (Charles John Huffam Dickens) */ +#define RTVFSFILE_MAGIC UINT32_C(0x18120207) +/** The value of RTVFSFILEINTERNAL::u32Magic after close. */ +#define RTVFSFILE_MAGIC_DEAD UINT32_C(0x18700609) +/** The value of RTVFSIOSTREAMINTERNAL::u32Magic. (Ernest Miller Hemingway) */ +#define RTVFSIOSTREAM_MAGIC UINT32_C(0x18990721) +/** The value of RTVFSIOSTREAMINTERNAL::u32Magic after close. */ +#define RTVFSIOSTREAM_MAGIC_DEAD UINT32_C(0x19610702) +/** The value of RTVFSSYMLINKINTERNAL::u32Magic. (Francis Scott Key Fitzgerald) */ +#define RTVFSSYMLINK_MAGIC UINT32_C(0x18960924) +/** The value of RTVFSSYMLINKINTERNAL::u32Magic after close. */ +#define RTVFSSYMLINK_MAGIC_DEAD UINT32_C(0x19401221) + +/** @} */ + +#endif + --- linux-raspi2-4.2.0.orig/ubuntu/vbox/include/internal/memobj.h +++ linux-raspi2-4.2.0/ubuntu/vbox/include/internal/memobj.h @@ -0,0 +1,483 @@ +/* $Id: memobj.h $ */ +/** @file + * IPRT - Ring-0 Memory Objects. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + +#ifndef ___internal_memobj_h +#define ___internal_memobj_h + +#include +#include +#include "internal/magics.h" + +RT_C_DECLS_BEGIN + +/** @defgroup grp_rt_memobj_int Internals. + * @ingroup grp_rt_memobj + * @internal + * @{ + */ + +/** + * Ring-0 memory object type. + */ +typedef enum RTR0MEMOBJTYPE +{ + /** The traditional invalid value. */ + RTR0MEMOBJTYPE_INVALID = 0, + + /** @name Primary types (parents) + * @{ */ + /** RTR0MemObjAllocPage. + * This memory is page aligned and fixed. */ + RTR0MEMOBJTYPE_PAGE, + /** RTR0MemObjAllocLow. + * This memory is page aligned, fixed and is backed by physical memory below 4GB. */ + RTR0MEMOBJTYPE_LOW, + /** RTR0MemObjAllocCont. + * This memory is page aligned, fixed and is backed by contiguous physical memory below 4GB. */ + RTR0MEMOBJTYPE_CONT, + /** RTR0MemObjLockKernel, RTR0MemObjLockUser. + * This memory is page aligned and fixed. It was locked/pinned/wired down by the API call. */ + RTR0MEMOBJTYPE_LOCK, + /** RTR0MemObjAllocPhys, RTR0MemObjEnterPhys. + * This memory is physical memory, page aligned, contiguous and doesn't need to have a mapping. */ + RTR0MEMOBJTYPE_PHYS, + /** RTR0MemObjAllocPhysNC. + * This memory is physical memory, page aligned and doesn't need to have a mapping. */ + RTR0MEMOBJTYPE_PHYS_NC, + /** RTR0MemObjReserveKernel, RTR0MemObjReserveUser. + * This memory is page aligned and has no backing. */ + RTR0MEMOBJTYPE_RES_VIRT, + /** @} */ + + /** @name Secondary types (children) + * @{ + */ + /** RTR0MemObjMapUser, RTR0MemObjMapKernel. + * This is a user or kernel context mapping of another ring-0 memory object. */ + RTR0MEMOBJTYPE_MAPPING, + /** @} */ + + /** The end of the valid types. Used for sanity checking. */ + RTR0MEMOBJTYPE_END +} RTR0MEMOBJTYPE; + + +/** @name RTR0MEMOBJINTERNAL::fFlags + * @{ */ +/** Page level protection was changed. */ +#define RTR0MEMOBJ_FLAGS_PROT_CHANGED RT_BIT_32(0) +/** @} */ + + +typedef struct RTR0MEMOBJINTERNAL *PRTR0MEMOBJINTERNAL; +typedef struct RTR0MEMOBJINTERNAL **PPRTR0MEMOBJINTERNAL; + +/** + * Ring-0 memory object. + * + * When using the PRTR0MEMOBJINTERNAL and PPRTR0MEMOBJINTERNAL types + * we get pMem and ppMem variable names. + * + * When using the RTR0MEMOBJ and PRTR0MEMOBJ types we get MemObj and + * pMemObj variable names. We never dereference variables of the RTR0MEMOBJ + * type, we always convert it to a PRTR0MEMOBJECTINTERNAL variable first. + */ +typedef struct RTR0MEMOBJINTERNAL +{ + /** Magic number (RTR0MEMOBJ_MAGIC). */ + uint32_t u32Magic; + /** The size of this structure. */ + uint32_t cbSelf; + /** The type of allocation. */ + RTR0MEMOBJTYPE enmType; + /** Flags, RTR0MEMOBJ_FLAGS_*. */ + uint32_t fFlags; + /** The size of the memory allocated, pinned down, or mapped. */ + size_t cb; + /** The memory address. + * What this really is varies with the type. + * For PAGE, CONT, LOW, RES_VIRT/R0, LOCK/R0 and MAP/R0 it's the ring-0 mapping. + * For LOCK/R3, RES_VIRT/R3 and MAP/R3 it is the ring-3 mapping. + * For PHYS this might actually be NULL if there isn't any mapping. + */ + void *pv; + + /** Object relations. */ + union + { + /** This is for tracking child memory handles mapping the + * memory described by the primary handle. */ + struct + { + /** Number of mappings. */ + uint32_t cMappingsAllocated; + /** Number of mappings in the array. */ + uint32_t cMappings; + /** Pointers to child handles mapping this memory. */ + PPRTR0MEMOBJINTERNAL papMappings; + } Parent; + + /** Pointer to the primary handle. */ + struct + { + /** Pointer to the parent. */ + PRTR0MEMOBJINTERNAL pParent; + } Child; + } uRel; + + /** Type specific data for the memory types that requires that. */ + union + { + /** RTR0MEMTYPE_PAGE. */ + struct + { + unsigned iDummy; + } Page; + + /** RTR0MEMTYPE_LOW. */ + struct + { + unsigned iDummy; + } Low; + + /** RTR0MEMTYPE_CONT. */ + struct + { + /** The physical address of the first page. */ + RTHCPHYS Phys; + } Cont; + + /** RTR0MEMTYPE_LOCK_USER. */ + struct + { + /** The process that owns the locked memory. + * This is NIL_RTR0PROCESS if it's kernel memory. */ + RTR0PROCESS R0Process; + } Lock; + + /** RTR0MEMTYPE_PHYS. */ + struct + { + /** The base address of the physical memory. */ + RTHCPHYS PhysBase; + /** If set this object was created by RTR0MemPhysAlloc, otherwise it was + * created by RTR0MemPhysEnter. */ + bool fAllocated; + /** See RTMEM_CACHE_POLICY_XXX constants */ + uint32_t uCachePolicy; + } Phys; + + /** RTR0MEMTYPE_PHYS_NC. */ + struct + { + unsigned iDummy; + } PhysNC; + + /** RTR0MEMOBJTYPE_RES_VIRT */ + struct + { + /** The process that owns the reserved memory. + * This is NIL_RTR0PROCESS if it's kernel memory. */ + RTR0PROCESS R0Process; + } ResVirt; + + /** RTR0MEMOBJTYPE_MAPPING */ + struct + { + /** The process that owns the reserved memory. + * This is NIL_RTR0PROCESS if it's kernel memory. */ + RTR0PROCESS R0Process; + } Mapping; + } u; + +} RTR0MEMOBJINTERNAL; + + +/** + * Checks if this is mapping or not. + * + * @returns true if it's a mapping, otherwise false. + * @param pMem The ring-0 memory object handle. + * @see RTR0MemObjIsMapping + */ +DECLINLINE(bool) rtR0MemObjIsMapping(PRTR0MEMOBJINTERNAL pMem) +{ + switch (pMem->enmType) + { + case RTR0MEMOBJTYPE_MAPPING: + return true; + + default: + return false; + } +} + + +/** + * Checks page level protection can be changed on this object. + * + * @returns true / false. + * @param pMem The ring-0 memory object handle. + */ +DECLINLINE(bool) rtR0MemObjIsProtectable(PRTR0MEMOBJINTERNAL pMem) +{ + switch (pMem->enmType) + { + case RTR0MEMOBJTYPE_MAPPING: + case RTR0MEMOBJTYPE_PAGE: + case RTR0MEMOBJTYPE_LOW: + case RTR0MEMOBJTYPE_CONT: + return true; + + default: + return false; + } +} + + +/** + * Checks if RTR0MEMOBJ::pv is a ring-3 pointer or not. + * + * @returns true if it's a object with a ring-3 address, otherwise false. + * @param pMem The ring-0 memory object handle. + */ +DECLINLINE(bool) rtR0MemObjIsRing3(PRTR0MEMOBJINTERNAL pMem) +{ + switch (pMem->enmType) + { + case RTR0MEMOBJTYPE_RES_VIRT: + return pMem->u.ResVirt.R0Process != NIL_RTR0PROCESS; + case RTR0MEMOBJTYPE_LOCK: + return pMem->u.Lock.R0Process != NIL_RTR0PROCESS; + case RTR0MEMOBJTYPE_MAPPING: + return pMem->u.Mapping.R0Process != NIL_RTR0PROCESS; + default: + return false; + } +} + + +/** + * Frees the memory object (but not the handle). + * Any OS specific handle resources will be freed by this call. + * + * @returns IPRT status code. On failure it is assumed that the object remains valid. + * @param pMem The ring-0 memory object handle to the memory which should be freed. + */ +DECLHIDDEN(int) rtR0MemObjNativeFree(PRTR0MEMOBJINTERNAL pMem); + +/** + * Allocates page aligned virtual kernel memory. + * + * The memory is taken from a non paged (= fixed physical memory backing) pool. + * + * @returns IPRT status code. + * @param ppMem Where to store the ring-0 memory object handle. + * @param cb Number of bytes to allocate, page aligned. + * @param fExecutable Flag indicating whether it should be permitted to executed code in the memory object. + */ +DECLHIDDEN(int) rtR0MemObjNativeAllocPage(PPRTR0MEMOBJINTERNAL ppMem, size_t cb, bool fExecutable); + +/** + * Allocates page aligned virtual kernel memory with physical backing below 4GB. + * + * The physical memory backing the allocation is fixed. + * + * @returns IPRT status code. + * @param ppMem Where to store the ring-0 memory object handle. + * @param cb Number of bytes to allocate, page aligned. + * @param fExecutable Flag indicating whether it should be permitted to executed code in the memory object. + */ +DECLHIDDEN(int) rtR0MemObjNativeAllocLow(PPRTR0MEMOBJINTERNAL ppMem, size_t cb, bool fExecutable); + +/** + * Allocates page aligned virtual kernel memory with contiguous physical backing below 4GB. + * + * The physical memory backing the allocation is fixed. + * + * @returns IPRT status code. + * @param ppMem Where to store the ring-0 memory object handle. + * @param cb Number of bytes to allocate, page aligned. + * @param fExecutable Flag indicating whether it should be permitted to executed code in the memory object. + */ +DECLHIDDEN(int) rtR0MemObjNativeAllocCont(PPRTR0MEMOBJINTERNAL ppMem, size_t cb, bool fExecutable); + +/** + * Locks a range of user virtual memory. + * + * @returns IPRT status code. + * @param ppMem Where to store the ring-0 memory object handle. + * @param R3Ptr User virtual address, page aligned. + * @param cb Number of bytes to lock, page aligned. + * @param fAccess The desired access, a combination of RTMEM_PROT_READ + * and RTMEM_PROT_WRITE. + * @param R0Process The process to lock pages in. + */ +DECLHIDDEN(int) rtR0MemObjNativeLockUser(PPRTR0MEMOBJINTERNAL ppMem, RTR3PTR R3Ptr, size_t cb, uint32_t fAccess, RTR0PROCESS R0Process); + +/** + * Locks a range of kernel virtual memory. + * + * @returns IPRT status code. + * @param ppMem Where to store the ring-0 memory object handle. + * @param pv Kernel virtual address, page aligned. + * @param cb Number of bytes to lock, page aligned. + * @param fAccess The desired access, a combination of RTMEM_PROT_READ + * and RTMEM_PROT_WRITE. + */ +DECLHIDDEN(int) rtR0MemObjNativeLockKernel(PPRTR0MEMOBJINTERNAL ppMem, void *pv, size_t cb, uint32_t fAccess); + +/** + * Allocates contiguous page aligned physical memory without (necessarily) any + * kernel mapping. + * + * @returns IPRT status code. + * @param ppMem Where to store the ring-0 memory object handle. + * @param cb Number of bytes to allocate, page aligned. + * @param PhysHighest The highest permitable address (inclusive). + * NIL_RTHCPHYS if any address is acceptable. + * @param uAlignment The alignment of the reserved memory. + * Supported values are PAGE_SIZE, _2M, _4M and _1G. + */ +DECLHIDDEN(int) rtR0MemObjNativeAllocPhys(PPRTR0MEMOBJINTERNAL ppMem, size_t cb, RTHCPHYS PhysHighest, size_t uAlignment); + +/** + * Allocates non-contiguous page aligned physical memory without (necessarily) any kernel mapping. + * + * @returns IPRT status code. + * @retval VERR_NOT_SUPPORTED if it's not possible to allocated unmapped + * physical memory on this platform. + * @param ppMem Where to store the ring-0 memory object handle. + * @param cb Number of bytes to allocate, page aligned. + * @param PhysHighest The highest permitable address (inclusive). + * NIL_RTHCPHYS if any address is acceptable. + */ +DECLHIDDEN(int) rtR0MemObjNativeAllocPhysNC(PPRTR0MEMOBJINTERNAL ppMem, size_t cb, RTHCPHYS PhysHighest); + +/** + * Creates a page aligned, contiguous, physical memory object. + * + * @returns IPRT status code. + * @param ppMem Where to store the ring-0 memory object handle. + * @param Phys The physical address to start at, page aligned. + * @param cb The size of the object in bytes, page aligned. + * @param uCachePolicy One of the RTMEM_CACHE_XXX modes. + */ +DECLHIDDEN(int) rtR0MemObjNativeEnterPhys(PPRTR0MEMOBJINTERNAL ppMem, RTHCPHYS Phys, size_t cb, uint32_t uCachePolicy); + +/** + * Reserves kernel virtual address space. + * + * @returns IPRT status code. + * Return VERR_NOT_SUPPORTED to indicate that the user should employ fallback strategies. + * @param ppMem Where to store the ring-0 memory object handle. + * @param pvFixed Requested address. (void *)-1 means any address. This matches uAlignment if specified. + * @param cb The number of bytes to reserve, page aligned. + * @param uAlignment The alignment of the reserved memory; PAGE_SIZE, _2M or _4M. + */ +DECLHIDDEN(int) rtR0MemObjNativeReserveKernel(PPRTR0MEMOBJINTERNAL ppMem, void *pvFixed, size_t cb, size_t uAlignment); + +/** + * Reserves user virtual address space in the current process. + * + * @returns IPRT status code. + * @param ppMem Where to store the ring-0 memory object handle. + * @param R3PtrFixed Requested address. (RTR3PTR)-1 means any address. This matches uAlignment if specified. + * @param cb The number of bytes to reserve, page aligned. + * @param uAlignment The alignment of the reserved memory; PAGE_SIZE, _2M or _4M. + * @param R0Process The process to reserve the memory in. + */ +DECLHIDDEN(int) rtR0MemObjNativeReserveUser(PPRTR0MEMOBJINTERNAL ppMem, RTR3PTR R3PtrFixed, size_t cb, size_t uAlignment, RTR0PROCESS R0Process); + +/** + * Maps a memory object into user virtual address space in the current process. + * + * @returns IPRT status code. + * @retval VERR_NOT_SUPPORTED see RTR0MemObjMapKernelEx. + * + * @param ppMem Where to store the ring-0 memory object handle of the mapping object. + * @param pMemToMap The object to be map. + * @param pvFixed Requested address. (void *)-1 means any address. This matches uAlignment if specified. + * @param uAlignment The alignment of the reserved memory; PAGE_SIZE, _2M or _4M. + * @param fProt Combination of RTMEM_PROT_* flags (except RTMEM_PROT_NONE). + * @param offSub Where in the object to start mapping. If non-zero + * the value must be page aligned and cbSub must be + * non-zero as well. + * @param cbSub The size of the part of the object to be mapped. If + * zero the entire object is mapped. The value must be + * page aligned. + */ +DECLHIDDEN(int) rtR0MemObjNativeMapKernel(PPRTR0MEMOBJINTERNAL ppMem, RTR0MEMOBJ pMemToMap, void *pvFixed, size_t uAlignment, + unsigned fProt, size_t offSub, size_t cbSub); + +/** + * Maps a memory object into user virtual address space in the current process. + * + * @returns IPRT status code. + * @param ppMem Where to store the ring-0 memory object handle of the mapping object. + * @param pMemToMap The object to be map. + * @param R3PtrFixed Requested address. (RTR3PTR)-1 means any address. This matches uAlignment if specified. + * @param uAlignment The alignment of the reserved memory; PAGE_SIZE, _2M or _4M. + * @param fProt Combination of RTMEM_PROT_* flags (except RTMEM_PROT_NONE). + * @param R0Process The process to map the memory into. + */ +DECLHIDDEN(int) rtR0MemObjNativeMapUser(PPRTR0MEMOBJINTERNAL ppMem, PRTR0MEMOBJINTERNAL pMemToMap, RTR3PTR R3PtrFixed, size_t uAlignment, unsigned fProt, RTR0PROCESS R0Process); + +/** + * Change the page level protection of one or more pages in a memory object. + * + * @returns IPRT status code. + * @retval VERR_NOT_SUPPORTED see RTR0MemObjProtect. + * + * @param pMem The memory object. + * @param offSub Offset into the memory object. Page aligned. + * @param cbSub Number of bytes to change the protection of. Page + * aligned. + * @param fProt Combination of RTMEM_PROT_* flags. + */ +DECLHIDDEN(int) rtR0MemObjNativeProtect(PRTR0MEMOBJINTERNAL pMem, size_t offSub, size_t cbSub, uint32_t fProt); + +/** + * Get the physical address of an page in the memory object. + * + * @returns The physical address. + * @returns NIL_RTHCPHYS if the object doesn't contain fixed physical pages. + * @returns NIL_RTHCPHYS if the iPage is out of range. + * @returns NIL_RTHCPHYS if the object handle isn't valid. + * @param pMem The ring-0 memory object handle. + * @param iPage The page number within the object (valid). + */ +DECLHIDDEN(RTHCPHYS) rtR0MemObjNativeGetPagePhysAddr(PRTR0MEMOBJINTERNAL pMem, size_t iPage); + +DECLHIDDEN(PRTR0MEMOBJINTERNAL) rtR0MemObjNew(size_t cbSelf, RTR0MEMOBJTYPE enmType, void *pv, size_t cb); +DECLHIDDEN(void) rtR0MemObjDelete(PRTR0MEMOBJINTERNAL pMem); + +/** @} */ + +RT_C_DECLS_END + +#endif + --- linux-raspi2-4.2.0.orig/ubuntu/vbox/include/internal/process.h +++ linux-raspi2-4.2.0/ubuntu/vbox/include/internal/process.h @@ -0,0 +1,69 @@ +/* $Id: process.h $ */ +/** @file + * IPRT - Internal RTProc header. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + +#ifndef ___internal_process_h +#define ___internal_process_h + +#include +#include + +RT_C_DECLS_BEGIN + +extern DECLHIDDEN(RTPROCESS) g_ProcessSelf; +extern DECLHIDDEN(RTPROCPRIORITY) g_enmProcessPriority; +extern DECLHIDDEN(char) g_szrtProcExePath[RTPATH_MAX]; +extern DECLHIDDEN(size_t) g_cchrtProcExePath; +extern DECLHIDDEN(size_t) g_cchrtProcDir; +extern DECLHIDDEN(size_t) g_offrtProcName; +extern DECLHIDDEN(bool volatile) g_frtAtExitCalled; + +/** + * Validates and sets the process priority. + * This will check that all rtThreadNativeSetPriority() will success for all the + * thread types when applied to the current thread. + * + * @returns iprt status code. + * @param enmPriority The priority to validate and set. + * @remark Located in sched. + */ +DECLHIDDEN(int) rtProcNativeSetPriority(RTPROCPRIORITY enmPriority); + +/** + * Determines the full path to the executable image. + * + * This is called by rtR3Init. + * + * @returns IPRT status code. + * + * @param pszPath Pointer to the g_szrtProcExePath buffer. + * @param cchPath The size of the buffer. + */ +DECLHIDDEN(int) rtProcInitExePath(char *pszPath, size_t cchPath); + +RT_C_DECLS_END + +#endif + --- linux-raspi2-4.2.0.orig/ubuntu/vbox/include/internal/sched.h +++ linux-raspi2-4.2.0/ubuntu/vbox/include/internal/sched.h @@ -0,0 +1,47 @@ +/* $Id: sched.h $ */ +/** @file + * IPRT - Internal RTSched header. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + +#ifndef ___internal_sched_h +#define ___internal_sched_h + +#include +#include "internal/process.h" +#include "internal/thread.h" + +RT_C_DECLS_BEGIN + +/** + * Calculate the scheduling properties for all the threads in the default + * process priority, assuming the current thread have the type enmType. + * + * @returns iprt status code. + * @param enmType The thread type to be assumed for the current thread. + */ +DECLHIDDEN(int) rtSchedNativeCalcDefaultPriority(RTTHREADTYPE enmType); + +RT_C_DECLS_END + +#endif --- linux-raspi2-4.2.0.orig/ubuntu/vbox/include/internal/string.h +++ linux-raspi2-4.2.0/ubuntu/vbox/include/internal/string.h @@ -0,0 +1,88 @@ +/* $Id: string.h $ */ +/** @file + * IPRT - Internal RTStr header. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + +#ifndef ___internal_string_h +#define ___internal_string_h + +#include + +RT_C_DECLS_BEGIN + +/** @def RTSTR_STRICT + * Enables strict assertions on bad string encodings. + */ +#ifdef DOXYGEN_RUNNING +# define RTSTR_STRICT +#endif +/*#define RTSTR_STRICT*/ + +#ifdef RTSTR_STRICT +# define RTStrAssertMsgFailed(msg) AssertMsgFailed(msg) +# define RTStrAssertMsgReturn(expr, msg, rc) AssertMsgReturn(expr, msg, rc) +#else +# define RTStrAssertMsgFailed(msg) do { } while (0) +# define RTStrAssertMsgReturn(expr, msg, rc) do { if (!(expr)) return rc; } while (0) +#endif + +DECLHIDDEN(size_t) rtstrFormatRt(PFNRTSTROUTPUT pfnOutput, void *pvArgOutput, const char **ppszFormat, va_list *pArgs, + int cchWidth, int cchPrecision, unsigned fFlags, char chArgSize); +DECLHIDDEN(size_t) rtstrFormatType(PFNRTSTROUTPUT pfnOutput, void *pvArgOutput, const char **ppszFormat, va_list *pArgs, + int cchWidth, int cchPrecision, unsigned fFlags, char chArgSize); + +#ifdef RT_WITH_ICONV_CACHE +DECLHIDDEN(void) rtStrIconvCacheInit(struct RTTHREADINT *pThread); +DECLHIDDEN(void) rtStrIconvCacheDestroy(struct RTTHREADINT *pThread); +#endif + +/** + * Indexes into RTTHREADINT::ahIconvs + */ +typedef enum RTSTRICONV +{ + /** UTF-8 to the locale codeset (LC_CTYPE). */ + RTSTRICONV_UTF8_TO_LOCALE = 0, + /** The locale codeset (LC_CTYPE) to UTF-8. */ + RTSTRICONV_LOCALE_TO_UTF8, + /** UTF-8 to the filesystem codeset - if different from the locale codeset. */ + RTSTRICONV_UTF8_TO_FS, + /** The filesystem codeset to UTF-8. */ + RTSTRICONV_FS_TO_UTF8, + /** The end of the valid indexes. */ + RTSTRICONV_END +} RTSTRICONV; + +DECLHIDDEN(int) rtStrConvert(const char *pchInput, size_t cchInput, const char *pszInputCS, + char **ppszOutput, size_t cbOutput, const char *pszOutputCS, + unsigned cFactor, RTSTRICONV enmCacheIdx); +DECLHIDDEN(const char *) rtStrGetLocaleCodeset(void); +DECLHIDDEN(int) rtUtf8Length(const char *psz, size_t cch, size_t *pcuc, size_t *pcchActual); + +DECLHIDDEN(int) rtStrToIpAddr6Str(const char *psz, char *pszAddrOut, size_t addrOutSize, char *pszPortOut, size_t portOutSize, bool followRfc); + +RT_C_DECLS_END + +#endif + --- linux-raspi2-4.2.0.orig/ubuntu/vbox/include/internal/thread.h +++ linux-raspi2-4.2.0/ubuntu/vbox/include/internal/thread.h @@ -0,0 +1,275 @@ +/* $Id: thread.h $ */ +/** @file + * IPRT - Internal RTThread header. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + +#ifndef ___thread_h +#define ___thread_h + +#include +#include +#include +#ifdef IN_RING3 +# include +# include +#endif +#include "internal/lockvalidator.h" +#include "internal/magics.h" +#ifdef RT_WITH_ICONV_CACHE +# include "internal/string.h" +#endif + +RT_C_DECLS_BEGIN + + +/** Max thread name length. */ +#define RTTHREAD_NAME_LEN 16 +#ifdef IPRT_WITH_GENERIC_TLS +/** The number of TLS entries for the generic implementation. */ +# define RTTHREAD_TLS_ENTRIES 64 +#endif + +/** + * Internal representation of a thread. + */ +typedef struct RTTHREADINT +{ + /** Avl node core - the key is the native thread id. */ + AVLPVNODECORE Core; + /** Magic value (RTTHREADINT_MAGIC). */ + uint32_t u32Magic; + /** Reference counter. */ + uint32_t volatile cRefs; + /** The current thread state. */ + RTTHREADSTATE volatile enmState; + /** Set when really sleeping. */ + bool volatile fReallySleeping; +#if defined(RT_OS_WINDOWS) && defined(IN_RING3) + /** The thread handle + * This is not valid until the create function has returned! */ + uintptr_t hThread; +#endif +#if defined(RT_OS_LINUX) && defined(IN_RING3) + /** The thread ID. + * This is not valid before rtThreadMain has been called by the new thread. */ + pid_t tid; +#endif +#if defined(RT_OS_SOLARIS) && defined(IN_RING0) + /** Debug thread ID needed for thread_join. */ + uint64_t tid; +#endif + /** The user event semaphore. */ + RTSEMEVENTMULTI EventUser; + /** The terminated event semaphore. */ + RTSEMEVENTMULTI EventTerminated; + /** The thread type. */ + RTTHREADTYPE enmType; + /** The thread creation flags. (RTTHREADFLAGS) */ + unsigned fFlags; + /** Internal flags. (RTTHREADINT_FLAGS_ *) */ + uint32_t fIntFlags; + /** The result code. */ + int rc; + /** Thread function. */ + PFNRTTHREAD pfnThread; + /** Thread function argument. */ + void *pvUser; + /** Actual stack size. */ + size_t cbStack; +#ifdef IN_RING3 + /** The lock validator data. */ + RTLOCKVALPERTHREAD LockValidator; +#endif /* IN_RING3 */ +#ifdef RT_WITH_ICONV_CACHE + /** Handle cache for iconv. + * @remarks ASSUMES sizeof(void *) >= sizeof(iconv_t). */ + void *ahIconvs[RTSTRICONV_END]; +#endif +#ifdef IPRT_WITH_GENERIC_TLS + /** The TLS entries for this thread. */ + void *apvTlsEntries[RTTHREAD_TLS_ENTRIES]; +#endif + /** Thread name. */ + char szName[RTTHREAD_NAME_LEN]; +} RTTHREADINT; +/** Pointer to the internal representation of a thread. */ +typedef RTTHREADINT *PRTTHREADINT; + + +/** @name RTTHREADINT::fIntFlags Masks and Bits. + * @{ */ +/** Set if the thread is an alien thread. + * Clear if the thread was created by IPRT. */ +#define RTTHREADINT_FLAGS_ALIEN RT_BIT(0) +/** Set if the thread has terminated. + * Clear if the thread is running. */ +#define RTTHREADINT_FLAGS_TERMINATED RT_BIT(1) +/** This bit is set if the thread is in the AVL tree. */ +#define RTTHREADINT_FLAG_IN_TREE_BIT 2 +/** @copydoc RTTHREADINT_FLAG_IN_TREE_BIT */ +#define RTTHREADINT_FLAG_IN_TREE RT_BIT(RTTHREADINT_FLAG_IN_TREE_BIT) +/** Set if it's the main thread. */ +#define RTTHREADINT_FLAGS_MAIN RT_BIT(3) +/** @} */ + + +/** + * Initialize the native part of the thread management. + * + * Generally a TLS entry will be allocated at this point (Ring-3). + * + * @returns iprt status code. + */ +DECLHIDDEN(int) rtThreadNativeInit(void); + +#ifdef IN_RING3 +/** + * Called when IPRT was first initialized in unobtrusive mode and later changed + * to obtrustive. + * + * This is only applicable in ring-3. + */ +DECLHIDDEN(void) rtThreadNativeReInitObtrusive(void); +#endif + +/** + * Create a native thread. + * This creates the thread as described in pThreadInt and stores the thread id in *pThread. + * + * @returns iprt status code. + * @param pThreadInt The thread data structure for the thread. + * @param pNativeThread Where to store the native thread identifier. + */ +DECLHIDDEN(int) rtThreadNativeCreate(PRTTHREADINT pThreadInt, PRTNATIVETHREAD pNativeThread); + +/** + * Adopts a thread, this is called immediately after allocating the + * thread structure. + * + * @param pThread Pointer to the thread structure. + */ +DECLHIDDEN(int) rtThreadNativeAdopt(PRTTHREADINT pThread); + +/** + * Called from rtThreadDestroy so that the TLS entry and any native data in the + * thread structure can be cleared. + * + * @param pThread The thread structure. + */ +DECLHIDDEN(void) rtThreadNativeDestroy(PRTTHREADINT pThread); + +#ifdef IN_RING0 +/** + * Called from rtThreadWait when the last thread has completed in order to make + * sure it's all the way out of IPRT before RTR0Term is called. + * + * @param pThread The thread structure. + */ +DECLHIDDEN(void) rtThreadNativeWaitKludge(PRTTHREADINT pThread); +#endif + + +/** + * Sets the priority of the thread according to the thread type + * and current process priority. + * + * The RTTHREADINT::enmType member has not yet been updated and will be updated by + * the caller on a successful return. + * + * @returns iprt status code. + * @param pThread The thread in question. + * @param enmType The thread type. + * @remark Located in sched. + */ +DECLHIDDEN(int) rtThreadNativeSetPriority(PRTTHREADINT pThread, RTTHREADTYPE enmType); + +#ifdef IN_RING3 +# ifdef RT_OS_WINDOWS +/** + * Callback for when a native thread is detaching. + * + * It give the Win32/64 backend a chance to terminate alien + * threads properly. + */ +DECLHIDDEN(void) rtThreadNativeDetach(void); + +/** + * Internal function for informing the debugger about a thread. + * @param pThread The thread. May differ from the calling thread. + */ +DECLHIDDEN(void) rtThreadNativeInformDebugger(PRTTHREADINT pThread); +# endif +#endif /* IN_RING3 */ + + +/* thread.cpp */ +DECLCALLBACK(DECLHIDDEN(int)) rtThreadMain(PRTTHREADINT pThread, RTNATIVETHREAD NativeThread, const char *pszThreadName); +DECLHIDDEN(uint32_t) rtThreadRelease(PRTTHREADINT pThread); +DECLHIDDEN(void) rtThreadTerminate(PRTTHREADINT pThread, int rc); +DECLHIDDEN(PRTTHREADINT) rtThreadGetByNative(RTNATIVETHREAD NativeThread); +DECLHIDDEN(PRTTHREADINT) rtThreadGet(RTTHREAD Thread); +DECLHIDDEN(int) rtThreadInit(void); +#ifdef IN_RING3 +DECLHIDDEN(void) rtThreadReInitObtrusive(void); +#endif +DECLHIDDEN(void) rtThreadTerm(void); +DECLHIDDEN(void) rtThreadInsert(PRTTHREADINT pThread, RTNATIVETHREAD NativeThread); +#ifdef IN_RING3 +DECLHIDDEN(int) rtThreadDoSetProcPriority(RTPROCPRIORITY enmPriority); +#endif /* !IN_RING0 */ +#ifdef IPRT_WITH_GENERIC_TLS +DECLHIDDEN(void) rtThreadClearTlsEntry(RTTLS iTls); +DECLHIDDEN(void) rtThreadTlsDestruction(PRTTHREADINT pThread); /* in tls-generic.cpp */ +#endif + +#ifdef ___iprt_asm_h + +/** + * Gets the thread state. + * + * @returns The thread state. + * @param pThread The thread. + */ +DECLINLINE(RTTHREADSTATE) rtThreadGetState(PRTTHREADINT pThread) +{ + return pThread->enmState; +} + +/** + * Sets the thread state. + * + * @param pThread The thread. + * @param enmNewState The new thread state. + */ +DECLINLINE(void) rtThreadSetState(PRTTHREADINT pThread, RTTHREADSTATE enmNewState) +{ + AssertCompile(sizeof(pThread->enmState) == sizeof(uint32_t)); + ASMAtomicWriteU32((uint32_t volatile *)&pThread->enmState, enmNewState); +} + +#endif + +RT_C_DECLS_END + +#endif --- linux-raspi2-4.2.0.orig/ubuntu/vbox/include/internal/time.h +++ linux-raspi2-4.2.0/ubuntu/vbox/include/internal/time.h @@ -0,0 +1,44 @@ +/* $Id: time.h $ */ +/** @file + * IPRT - Internal RTTime header + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + +#ifndef ___internal_time_h +#define ___internal_time_h + +#include + +RT_C_DECLS_BEGIN + +#if defined(IN_RING3) || defined(IN_RC) + +extern DECLHIDDEN(uint64_t) g_u64ProgramStartNanoTS; +extern DECLHIDDEN(uint64_t) g_u64ProgramStartMicroTS; +extern DECLHIDDEN(uint64_t) g_u64ProgramStartMilliTS; + +#endif + +RT_C_DECLS_END + +#endif --- linux-raspi2-4.2.0.orig/ubuntu/vbox/include/iprt/alloc.h +++ linux-raspi2-4.2.0/ubuntu/vbox/include/iprt/alloc.h @@ -0,0 +1,33 @@ +/** @file + * IPRT - Memory Allocation. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + +#ifndef ___iprt_alloc_h +#define ___iprt_alloc_h + +/* Forwarding to the canonical header. */ +#include + +#endif + --- linux-raspi2-4.2.0.orig/ubuntu/vbox/include/iprt/alloca.h +++ linux-raspi2-4.2.0/ubuntu/vbox/include/iprt/alloca.h @@ -0,0 +1,56 @@ +/** @file + * IPRT - alloca(). + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + +#ifndef ___iprt_alloca_h +#define ___iprt_alloca_h + +#if defined(IN_RC) || defined(IN_RING0_AGNOSTIC) +# error "No alloca() in raw-mode and agnostic ring-0 context as it may have external dependencies like libgcc." +#endif + +/* + * If there are more difficult platforms out there, we'll do OS + * specific #ifdefs. But for now we'll just include the headers + * which normally contains the alloca() prototype. + * When we're in kernel territory it starts getting a bit more + * interesting of course... + */ +#if defined(IN_RING0) \ + && (defined(RT_OS_DARWIN) || defined(RT_OS_LINUX) || defined(RT_OS_SOLARIS) || defined(RT_OS_FREEBSD)) +/* ASSUMES GNU C */ +# define alloca(cb) __builtin_alloca(cb) + +#else +# include +# if !defined(RT_OS_DARWIN) && !defined(RT_OS_FREEBSD) +# include +# endif +# if defined(RT_OS_SOLARIS) || defined(RT_OS_LINUX) +# include +# endif +#endif + +#endif + --- linux-raspi2-4.2.0.orig/ubuntu/vbox/include/iprt/asm-amd64-x86.h +++ linux-raspi2-4.2.0/ubuntu/vbox/include/iprt/asm-amd64-x86.h @@ -0,0 +1,3140 @@ +/** @file + * IPRT - AMD64 and x86 Specific Assembly Functions. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + +#ifndef ___iprt_asm_amd64_x86_h +#define ___iprt_asm_amd64_x86_h + +#include +#include +#if !defined(RT_ARCH_AMD64) && !defined(RT_ARCH_X86) +# error "Not on AMD64 or x86" +#endif + +#if defined(_MSC_VER) && RT_INLINE_ASM_USES_INTRIN +# include + /* Emit the intrinsics at all optimization levels. */ +# pragma intrinsic(_ReadWriteBarrier) +# pragma intrinsic(__cpuid) +# pragma intrinsic(_enable) +# pragma intrinsic(_disable) +# pragma intrinsic(__rdtsc) +# pragma intrinsic(__readmsr) +# pragma intrinsic(__writemsr) +# pragma intrinsic(__outbyte) +# pragma intrinsic(__outbytestring) +# pragma intrinsic(__outword) +# pragma intrinsic(__outwordstring) +# pragma intrinsic(__outdword) +# pragma intrinsic(__outdwordstring) +# pragma intrinsic(__inbyte) +# pragma intrinsic(__inbytestring) +# pragma intrinsic(__inword) +# pragma intrinsic(__inwordstring) +# pragma intrinsic(__indword) +# pragma intrinsic(__indwordstring) +# pragma intrinsic(__invlpg) +# pragma intrinsic(__wbinvd) +# pragma intrinsic(__readcr0) +# pragma intrinsic(__readcr2) +# pragma intrinsic(__readcr3) +# pragma intrinsic(__readcr4) +# pragma intrinsic(__writecr0) +# pragma intrinsic(__writecr3) +# pragma intrinsic(__writecr4) +# pragma intrinsic(__readdr) +# pragma intrinsic(__writedr) +# ifdef RT_ARCH_AMD64 +# pragma intrinsic(__readcr8) +# pragma intrinsic(__writecr8) +# endif +# if RT_INLINE_ASM_USES_INTRIN >= 15 +# pragma intrinsic(__readeflags) +# pragma intrinsic(__writeeflags) +# pragma intrinsic(__rdtscp) +# endif +#endif + + + +/** @defgroup grp_rt_asm_amd64_x86 AMD64 and x86 Specific ASM Routines + * @ingroup grp_rt_asm + * @{ + */ + +/** @todo find a more proper place for these structures? */ + +#pragma pack(1) +/** IDTR */ +typedef struct RTIDTR +{ + /** Size of the IDT. */ + uint16_t cbIdt; + /** Address of the IDT. */ + uintptr_t pIdt; +} RTIDTR, *PRTIDTR; +#pragma pack() + +#pragma pack(1) +/** @internal */ +typedef struct RTIDTRALIGNEDINT +{ + /** Alignment padding. */ + uint8_t au16Padding[ARCH_BITS == 64 ? 3 : 1]; + /** The IDTR structure. */ + RTIDTR Idtr; +} RTIDTRALIGNEDINT; +#pragma pack() + +/** Wrapped RTIDTR for preventing misalignment exceptions. */ +typedef union RTIDTRALIGNED +{ + /** Try make sure this structure has optimal alignment. */ + uint64_t auAlignmentHack[ARCH_BITS == 64 ? 2 : 1]; + /** Aligned structure. */ + RTIDTRALIGNEDINT s; +} RTIDTRALIGNED; +AssertCompileSize(RTIDTRALIGNED, ARCH_BITS * 2 / 8); +/** Pointer to a an RTIDTR alignment wrapper. */ +typedef RTIDTRALIGNED *PRIDTRALIGNED; + + +#pragma pack(1) +/** GDTR */ +typedef struct RTGDTR +{ + /** Size of the GDT. */ + uint16_t cbGdt; + /** Address of the GDT. */ + uintptr_t pGdt; +} RTGDTR, *PRTGDTR; +#pragma pack() + +#pragma pack(1) +/** @internal */ +typedef struct RTGDTRALIGNEDINT +{ + /** Alignment padding. */ + uint8_t au16Padding[ARCH_BITS == 64 ? 3 : 1]; + /** The GDTR structure. */ + RTGDTR Gdtr; +} RTGDTRALIGNEDINT; +#pragma pack() + +/** Wrapped RTGDTR for preventing misalignment exceptions. */ +typedef union RTGDTRALIGNED +{ + /** Try make sure this structure has optimal alignment. */ + uint64_t auAlignmentHack[ARCH_BITS == 64 ? 2 : 1]; + /** Aligned structure. */ + RTGDTRALIGNEDINT s; +} RTGDTRALIGNED; +AssertCompileSize(RTGDTRALIGNED, ARCH_BITS * 2 / 8); +/** Pointer to a an RTGDTR alignment wrapper. */ +typedef RTGDTRALIGNED *PRGDTRALIGNED; + + +/** + * Gets the content of the IDTR CPU register. + * @param pIdtr Where to store the IDTR contents. + */ +#if RT_INLINE_ASM_EXTERNAL +DECLASM(void) ASMGetIDTR(PRTIDTR pIdtr); +#else +DECLINLINE(void) ASMGetIDTR(PRTIDTR pIdtr) +{ +# if RT_INLINE_ASM_GNU_STYLE + __asm__ __volatile__("sidt %0" : "=m" (*pIdtr)); +# else + __asm + { +# ifdef RT_ARCH_AMD64 + mov rax, [pIdtr] + sidt [rax] +# else + mov eax, [pIdtr] + sidt [eax] +# endif + } +# endif +} +#endif + + +/** + * Gets the content of the IDTR.LIMIT CPU register. + * @returns IDTR limit. + */ +#if RT_INLINE_ASM_EXTERNAL +DECLASM(uint16_t) ASMGetIdtrLimit(void); +#else +DECLINLINE(uint16_t) ASMGetIdtrLimit(void) +{ + RTIDTRALIGNED TmpIdtr; +# if RT_INLINE_ASM_GNU_STYLE + __asm__ __volatile__("sidt %0" : "=m" (TmpIdtr.s.Idtr)); +# else + __asm + { + sidt [TmpIdtr.s.Idtr] + } +# endif + return TmpIdtr.s.Idtr.cbIdt; +} +#endif + + +/** + * Sets the content of the IDTR CPU register. + * @param pIdtr Where to load the IDTR contents from + */ +#if RT_INLINE_ASM_EXTERNAL +DECLASM(void) ASMSetIDTR(const RTIDTR *pIdtr); +#else +DECLINLINE(void) ASMSetIDTR(const RTIDTR *pIdtr) +{ +# if RT_INLINE_ASM_GNU_STYLE + __asm__ __volatile__("lidt %0" : : "m" (*pIdtr)); +# else + __asm + { +# ifdef RT_ARCH_AMD64 + mov rax, [pIdtr] + lidt [rax] +# else + mov eax, [pIdtr] + lidt [eax] +# endif + } +# endif +} +#endif + + +/** + * Gets the content of the GDTR CPU register. + * @param pGdtr Where to store the GDTR contents. + */ +#if RT_INLINE_ASM_EXTERNAL +DECLASM(void) ASMGetGDTR(PRTGDTR pGdtr); +#else +DECLINLINE(void) ASMGetGDTR(PRTGDTR pGdtr) +{ +# if RT_INLINE_ASM_GNU_STYLE + __asm__ __volatile__("sgdt %0" : "=m" (*pGdtr)); +# else + __asm + { +# ifdef RT_ARCH_AMD64 + mov rax, [pGdtr] + sgdt [rax] +# else + mov eax, [pGdtr] + sgdt [eax] +# endif + } +# endif +} +#endif + + +/** + * Sets the content of the GDTR CPU register. + * @param pIdtr Where to load the GDTR contents from + */ +#if RT_INLINE_ASM_EXTERNAL +DECLASM(void) ASMSetGDTR(const RTGDTR *pGdtr); +#else +DECLINLINE(void) ASMSetGDTR(const RTGDTR *pGdtr) +{ +# if RT_INLINE_ASM_GNU_STYLE + __asm__ __volatile__("lgdt %0" : : "m" (*pGdtr)); +# else + __asm + { +# ifdef RT_ARCH_AMD64 + mov rax, [pGdtr] + lgdt [rax] +# else + mov eax, [pGdtr] + lgdt [eax] +# endif + } +# endif +} +#endif + + + +/** + * Get the cs register. + * @returns cs. + */ +#if RT_INLINE_ASM_EXTERNAL +DECLASM(RTSEL) ASMGetCS(void); +#else +DECLINLINE(RTSEL) ASMGetCS(void) +{ + RTSEL SelCS; +# if RT_INLINE_ASM_GNU_STYLE + __asm__ __volatile__("movw %%cs, %0\n\t" : "=r" (SelCS)); +# else + __asm + { + mov ax, cs + mov [SelCS], ax + } +# endif + return SelCS; +} +#endif + + +/** + * Get the DS register. + * @returns DS. + */ +#if RT_INLINE_ASM_EXTERNAL +DECLASM(RTSEL) ASMGetDS(void); +#else +DECLINLINE(RTSEL) ASMGetDS(void) +{ + RTSEL SelDS; +# if RT_INLINE_ASM_GNU_STYLE + __asm__ __volatile__("movw %%ds, %0\n\t" : "=r" (SelDS)); +# else + __asm + { + mov ax, ds + mov [SelDS], ax + } +# endif + return SelDS; +} +#endif + + +/** + * Get the ES register. + * @returns ES. + */ +#if RT_INLINE_ASM_EXTERNAL +DECLASM(RTSEL) ASMGetES(void); +#else +DECLINLINE(RTSEL) ASMGetES(void) +{ + RTSEL SelES; +# if RT_INLINE_ASM_GNU_STYLE + __asm__ __volatile__("movw %%es, %0\n\t" : "=r" (SelES)); +# else + __asm + { + mov ax, es + mov [SelES], ax + } +# endif + return SelES; +} +#endif + + +/** + * Get the FS register. + * @returns FS. + */ +#if RT_INLINE_ASM_EXTERNAL +DECLASM(RTSEL) ASMGetFS(void); +#else +DECLINLINE(RTSEL) ASMGetFS(void) +{ + RTSEL SelFS; +# if RT_INLINE_ASM_GNU_STYLE + __asm__ __volatile__("movw %%fs, %0\n\t" : "=r" (SelFS)); +# else + __asm + { + mov ax, fs + mov [SelFS], ax + } +# endif + return SelFS; +} +# endif + + +/** + * Get the GS register. + * @returns GS. + */ +#if RT_INLINE_ASM_EXTERNAL +DECLASM(RTSEL) ASMGetGS(void); +#else +DECLINLINE(RTSEL) ASMGetGS(void) +{ + RTSEL SelGS; +# if RT_INLINE_ASM_GNU_STYLE + __asm__ __volatile__("movw %%gs, %0\n\t" : "=r" (SelGS)); +# else + __asm + { + mov ax, gs + mov [SelGS], ax + } +# endif + return SelGS; +} +#endif + + +/** + * Get the SS register. + * @returns SS. + */ +#if RT_INLINE_ASM_EXTERNAL +DECLASM(RTSEL) ASMGetSS(void); +#else +DECLINLINE(RTSEL) ASMGetSS(void) +{ + RTSEL SelSS; +# if RT_INLINE_ASM_GNU_STYLE + __asm__ __volatile__("movw %%ss, %0\n\t" : "=r" (SelSS)); +# else + __asm + { + mov ax, ss + mov [SelSS], ax + } +# endif + return SelSS; +} +#endif + + +/** + * Get the TR register. + * @returns TR. + */ +#if RT_INLINE_ASM_EXTERNAL +DECLASM(RTSEL) ASMGetTR(void); +#else +DECLINLINE(RTSEL) ASMGetTR(void) +{ + RTSEL SelTR; +# if RT_INLINE_ASM_GNU_STYLE + __asm__ __volatile__("str %w0\n\t" : "=r" (SelTR)); +# else + __asm + { + str ax + mov [SelTR], ax + } +# endif + return SelTR; +} +#endif + + +/** + * Get the LDTR register. + * @returns LDTR. + */ +#if RT_INLINE_ASM_EXTERNAL +DECLASM(RTSEL) ASMGetLDTR(void); +#else +DECLINLINE(RTSEL) ASMGetLDTR(void) +{ + RTSEL SelLDTR; +# if RT_INLINE_ASM_GNU_STYLE + __asm__ __volatile__("sldt %w0\n\t" : "=r" (SelLDTR)); +# else + __asm + { + sldt ax + mov [SelLDTR], ax + } +# endif + return SelLDTR; +} +#endif + + +/** + * Get the access rights for the segment selector. + * + * @returns The access rights on success or UINT32_MAX on failure. + * @param uSel The selector value. + * + * @remarks Using UINT32_MAX for failure is chosen because valid access rights + * always have bits 0:7 as 0 (on both Intel & AMD). + */ +#if RT_INLINE_ASM_EXTERNAL +DECLASM(uint32_t) ASMGetSegAttr(uint32_t uSel); +#else +DECLINLINE(uint32_t) ASMGetSegAttr(uint32_t uSel) +{ + uint32_t uAttr; + /* LAR only accesses 16-bit of the source operand, but eax for the + destination operand is required for getting the full 32-bit access rights. */ +# if RT_INLINE_ASM_GNU_STYLE + __asm__ __volatile__("lar %1, %%eax\n\t" + "jz done%=\n\t" + "movl $0xffffffff, %%eax\n\t" + "done%=:\n\t" + "movl %%eax, %0\n\t" + : "=r" (uAttr) + : "r" (uSel) + : "cc", "%eax"); +# else + __asm + { + lar eax, [uSel] + jz done + mov eax, 0ffffffffh + done: + mov [uAttr], eax + } +# endif + return uAttr; +} +#endif + + +/** + * Get the [RE]FLAGS register. + * @returns [RE]FLAGS. + */ +#if RT_INLINE_ASM_EXTERNAL && RT_INLINE_ASM_USES_INTRIN < 15 +DECLASM(RTCCUINTREG) ASMGetFlags(void); +#else +DECLINLINE(RTCCUINTREG) ASMGetFlags(void) +{ + RTCCUINTREG uFlags; +# if RT_INLINE_ASM_GNU_STYLE +# ifdef RT_ARCH_AMD64 + __asm__ __volatile__("pushfq\n\t" + "popq %0\n\t" + : "=r" (uFlags)); +# else + __asm__ __volatile__("pushfl\n\t" + "popl %0\n\t" + : "=r" (uFlags)); +# endif +# elif RT_INLINE_ASM_USES_INTRIN >= 15 + uFlags = __readeflags(); +# else + __asm + { +# ifdef RT_ARCH_AMD64 + pushfq + pop [uFlags] +# else + pushfd + pop [uFlags] +# endif + } +# endif + return uFlags; +} +#endif + + +/** + * Set the [RE]FLAGS register. + * @param uFlags The new [RE]FLAGS value. + */ +#if RT_INLINE_ASM_EXTERNAL && RT_INLINE_ASM_USES_INTRIN < 15 +DECLASM(void) ASMSetFlags(RTCCUINTREG uFlags); +#else +DECLINLINE(void) ASMSetFlags(RTCCUINTREG uFlags) +{ +# if RT_INLINE_ASM_GNU_STYLE +# ifdef RT_ARCH_AMD64 + __asm__ __volatile__("pushq %0\n\t" + "popfq\n\t" + : : "g" (uFlags)); +# else + __asm__ __volatile__("pushl %0\n\t" + "popfl\n\t" + : : "g" (uFlags)); +# endif +# elif RT_INLINE_ASM_USES_INTRIN >= 15 + __writeeflags(uFlags); +# else + __asm + { +# ifdef RT_ARCH_AMD64 + push [uFlags] + popfq +# else + push [uFlags] + popfd +# endif + } +# endif +} +#endif + + +/** + * Gets the content of the CPU timestamp counter register. + * + * @returns TSC. + */ +#if RT_INLINE_ASM_EXTERNAL && !RT_INLINE_ASM_USES_INTRIN +DECLASM(uint64_t) ASMReadTSC(void); +#else +DECLINLINE(uint64_t) ASMReadTSC(void) +{ + RTUINT64U u; +# if RT_INLINE_ASM_GNU_STYLE + __asm__ __volatile__("rdtsc\n\t" : "=a" (u.s.Lo), "=d" (u.s.Hi)); +# else +# if RT_INLINE_ASM_USES_INTRIN + u.u = __rdtsc(); +# else + __asm + { + rdtsc + mov [u.s.Lo], eax + mov [u.s.Hi], edx + } +# endif +# endif + return u.u; +} +#endif + + +/** + * Gets the content of the CPU timestamp counter register and the + * assoicated AUX value. + * + * @returns TSC. + * @param puAux Where to store the AUX value. + */ +#if RT_INLINE_ASM_EXTERNAL && RT_INLINE_ASM_USES_INTRIN < 15 +DECLASM(uint64_t) ASMReadTscWithAux(uint32_t *puAux); +#else +DECLINLINE(uint64_t) ASMReadTscWithAux(uint32_t *puAux) +{ + RTUINT64U u; +# if RT_INLINE_ASM_GNU_STYLE + /* rdtscp is not supported by ancient linux build VM of course :-( */ + /*__asm__ __volatile__("rdtscp\n\t" : "=a" (u.s.Lo), "=d" (u.s.Hi), "=c" (*puAux)); */ + __asm__ __volatile__(".byte 0x0f,0x01,0xf9\n\t" : "=a" (u.s.Lo), "=d" (u.s.Hi), "=c" (*puAux)); +# else +# if RT_INLINE_ASM_USES_INTRIN >= 15 + u.u = __rdtscp(puAux); +# else + __asm + { + rdtscp + mov [u.s.Lo], eax + mov [u.s.Hi], edx + mov eax, [puAux] + mov [eax], ecx + } +# endif +# endif + return u.u; +} +#endif + + +/** + * Performs the cpuid instruction returning all registers. + * + * @param uOperator CPUID operation (eax). + * @param pvEAX Where to store eax. + * @param pvEBX Where to store ebx. + * @param pvECX Where to store ecx. + * @param pvEDX Where to store edx. + * @remark We're using void pointers to ease the use of special bitfield structures and such. + */ +#if RT_INLINE_ASM_EXTERNAL && !RT_INLINE_ASM_USES_INTRIN +DECLASM(void) ASMCpuId(uint32_t uOperator, void *pvEAX, void *pvEBX, void *pvECX, void *pvEDX); +#else +DECLINLINE(void) ASMCpuId(uint32_t uOperator, void *pvEAX, void *pvEBX, void *pvECX, void *pvEDX) +{ +# if RT_INLINE_ASM_GNU_STYLE +# ifdef RT_ARCH_AMD64 + RTCCUINTREG uRAX, uRBX, uRCX, uRDX; + __asm__ __volatile__ ("cpuid\n\t" + : "=a" (uRAX), + "=b" (uRBX), + "=c" (uRCX), + "=d" (uRDX) + : "0" (uOperator), "2" (0)); + *(uint32_t *)pvEAX = (uint32_t)uRAX; + *(uint32_t *)pvEBX = (uint32_t)uRBX; + *(uint32_t *)pvECX = (uint32_t)uRCX; + *(uint32_t *)pvEDX = (uint32_t)uRDX; +# else + __asm__ __volatile__ ("xchgl %%ebx, %1\n\t" + "cpuid\n\t" + "xchgl %%ebx, %1\n\t" + : "=a" (*(uint32_t *)pvEAX), + "=r" (*(uint32_t *)pvEBX), + "=c" (*(uint32_t *)pvECX), + "=d" (*(uint32_t *)pvEDX) + : "0" (uOperator), "2" (0)); +# endif + +# elif RT_INLINE_ASM_USES_INTRIN + int aInfo[4]; + __cpuid(aInfo, uOperator); + *(uint32_t *)pvEAX = aInfo[0]; + *(uint32_t *)pvEBX = aInfo[1]; + *(uint32_t *)pvECX = aInfo[2]; + *(uint32_t *)pvEDX = aInfo[3]; + +# else + uint32_t uEAX; + uint32_t uEBX; + uint32_t uECX; + uint32_t uEDX; + __asm + { + push ebx + mov eax, [uOperator] + cpuid + mov [uEAX], eax + mov [uEBX], ebx + mov [uECX], ecx + mov [uEDX], edx + pop ebx + } + *(uint32_t *)pvEAX = uEAX; + *(uint32_t *)pvEBX = uEBX; + *(uint32_t *)pvECX = uECX; + *(uint32_t *)pvEDX = uEDX; +# endif +} +#endif + + +/** + * Performs the CPUID instruction with EAX and ECX input returning ALL output + * registers. + * + * @param uOperator CPUID operation (eax). + * @param uIdxECX ecx index + * @param pvEAX Where to store eax. + * @param pvEBX Where to store ebx. + * @param pvECX Where to store ecx. + * @param pvEDX Where to store edx. + * @remark We're using void pointers to ease the use of special bitfield structures and such. + */ +#if RT_INLINE_ASM_EXTERNAL || RT_INLINE_ASM_USES_INTRIN +DECLASM(void) ASMCpuId_Idx_ECX(uint32_t uOperator, uint32_t uIdxECX, void *pvEAX, void *pvEBX, void *pvECX, void *pvEDX); +#else +DECLINLINE(void) ASMCpuId_Idx_ECX(uint32_t uOperator, uint32_t uIdxECX, void *pvEAX, void *pvEBX, void *pvECX, void *pvEDX) +{ +# if RT_INLINE_ASM_GNU_STYLE +# ifdef RT_ARCH_AMD64 + RTCCUINTREG uRAX, uRBX, uRCX, uRDX; + __asm__ ("cpuid\n\t" + : "=a" (uRAX), + "=b" (uRBX), + "=c" (uRCX), + "=d" (uRDX) + : "0" (uOperator), + "2" (uIdxECX)); + *(uint32_t *)pvEAX = (uint32_t)uRAX; + *(uint32_t *)pvEBX = (uint32_t)uRBX; + *(uint32_t *)pvECX = (uint32_t)uRCX; + *(uint32_t *)pvEDX = (uint32_t)uRDX; +# else + __asm__ ("xchgl %%ebx, %1\n\t" + "cpuid\n\t" + "xchgl %%ebx, %1\n\t" + : "=a" (*(uint32_t *)pvEAX), + "=r" (*(uint32_t *)pvEBX), + "=c" (*(uint32_t *)pvECX), + "=d" (*(uint32_t *)pvEDX) + : "0" (uOperator), + "2" (uIdxECX)); +# endif + +# elif RT_INLINE_ASM_USES_INTRIN + int aInfo[4]; + __cpuidex(aInfo, uOperator, uIdxECX); + *(uint32_t *)pvEAX = aInfo[0]; + *(uint32_t *)pvEBX = aInfo[1]; + *(uint32_t *)pvECX = aInfo[2]; + *(uint32_t *)pvEDX = aInfo[3]; + +# else + uint32_t uEAX; + uint32_t uEBX; + uint32_t uECX; + uint32_t uEDX; + __asm + { + push ebx + mov eax, [uOperator] + mov ecx, [uIdxECX] + cpuid + mov [uEAX], eax + mov [uEBX], ebx + mov [uECX], ecx + mov [uEDX], edx + pop ebx + } + *(uint32_t *)pvEAX = uEAX; + *(uint32_t *)pvEBX = uEBX; + *(uint32_t *)pvECX = uECX; + *(uint32_t *)pvEDX = uEDX; +# endif +} +#endif + + +/** + * CPUID variant that initializes all 4 registers before the CPUID instruction. + * + * @returns The EAX result value. + * @param uOperator CPUID operation (eax). + * @param uInitEBX The value to assign EBX prior to the CPUID instruction. + * @param uInitECX The value to assign ECX prior to the CPUID instruction. + * @param uInitEDX The value to assign EDX prior to the CPUID instruction. + * @param pvEAX Where to store eax. Optional. + * @param pvEBX Where to store ebx. Optional. + * @param pvECX Where to store ecx. Optional. + * @param pvEDX Where to store edx. Optional. + */ +DECLASM(uint32_t) ASMCpuIdExSlow(uint32_t uOperator, uint32_t uInitEBX, uint32_t uInitECX, uint32_t uInitEDX, + void *pvEAX, void *pvEBX, void *pvECX, void *pvEDX); + + +/** + * Performs the cpuid instruction returning ecx and edx. + * + * @param uOperator CPUID operation (eax). + * @param pvECX Where to store ecx. + * @param pvEDX Where to store edx. + * @remark We're using void pointers to ease the use of special bitfield structures and such. + */ +#if RT_INLINE_ASM_EXTERNAL && !RT_INLINE_ASM_USES_INTRIN +DECLASM(void) ASMCpuId_ECX_EDX(uint32_t uOperator, void *pvECX, void *pvEDX); +#else +DECLINLINE(void) ASMCpuId_ECX_EDX(uint32_t uOperator, void *pvECX, void *pvEDX) +{ + uint32_t uEBX; + ASMCpuId(uOperator, &uOperator, &uEBX, pvECX, pvEDX); +} +#endif + + +/** + * Performs the cpuid instruction returning eax. + * + * @param uOperator CPUID operation (eax). + * @returns EAX after cpuid operation. + */ +#if RT_INLINE_ASM_EXTERNAL && !RT_INLINE_ASM_USES_INTRIN +DECLASM(uint32_t) ASMCpuId_EAX(uint32_t uOperator); +#else +DECLINLINE(uint32_t) ASMCpuId_EAX(uint32_t uOperator) +{ + RTCCUINTREG xAX; +# if RT_INLINE_ASM_GNU_STYLE +# ifdef RT_ARCH_AMD64 + __asm__ ("cpuid" + : "=a" (xAX) + : "0" (uOperator) + : "rbx", "rcx", "rdx"); +# elif (defined(PIC) || defined(__PIC__)) && defined(__i386__) + __asm__ ("push %%ebx\n\t" + "cpuid\n\t" + "pop %%ebx\n\t" + : "=a" (xAX) + : "0" (uOperator) + : "ecx", "edx"); +# else + __asm__ ("cpuid" + : "=a" (xAX) + : "0" (uOperator) + : "edx", "ecx", "ebx"); +# endif + +# elif RT_INLINE_ASM_USES_INTRIN + int aInfo[4]; + __cpuid(aInfo, uOperator); + xAX = aInfo[0]; + +# else + __asm + { + push ebx + mov eax, [uOperator] + cpuid + mov [xAX], eax + pop ebx + } +# endif + return (uint32_t)xAX; +} +#endif + + +/** + * Performs the cpuid instruction returning ebx. + * + * @param uOperator CPUID operation (eax). + * @returns EBX after cpuid operation. + */ +#if RT_INLINE_ASM_EXTERNAL && !RT_INLINE_ASM_USES_INTRIN +DECLASM(uint32_t) ASMCpuId_EBX(uint32_t uOperator); +#else +DECLINLINE(uint32_t) ASMCpuId_EBX(uint32_t uOperator) +{ + RTCCUINTREG xBX; +# if RT_INLINE_ASM_GNU_STYLE +# ifdef RT_ARCH_AMD64 + RTCCUINTREG uSpill; + __asm__ ("cpuid" + : "=a" (uSpill), + "=b" (xBX) + : "0" (uOperator) + : "rdx", "rcx"); +# elif (defined(PIC) || defined(__PIC__)) && defined(__i386__) + __asm__ ("push %%ebx\n\t" + "cpuid\n\t" + "mov %%ebx, %%edx\n\t" + "pop %%ebx\n\t" + : "=a" (uOperator), + "=d" (xBX) + : "0" (uOperator) + : "ecx"); +# else + __asm__ ("cpuid" + : "=a" (uOperator), + "=b" (xBX) + : "0" (uOperator) + : "edx", "ecx"); +# endif + +# elif RT_INLINE_ASM_USES_INTRIN + int aInfo[4]; + __cpuid(aInfo, uOperator); + xBX = aInfo[1]; + +# else + __asm + { + push ebx + mov eax, [uOperator] + cpuid + mov [xBX], ebx + pop ebx + } +# endif + return (uint32_t)xBX; +} +#endif + + +/** + * Performs the cpuid instruction returning ecx. + * + * @param uOperator CPUID operation (eax). + * @returns ECX after cpuid operation. + */ +#if RT_INLINE_ASM_EXTERNAL && !RT_INLINE_ASM_USES_INTRIN +DECLASM(uint32_t) ASMCpuId_ECX(uint32_t uOperator); +#else +DECLINLINE(uint32_t) ASMCpuId_ECX(uint32_t uOperator) +{ + RTCCUINTREG xCX; +# if RT_INLINE_ASM_GNU_STYLE +# ifdef RT_ARCH_AMD64 + RTCCUINTREG uSpill; + __asm__ ("cpuid" + : "=a" (uSpill), + "=c" (xCX) + : "0" (uOperator) + : "rbx", "rdx"); +# elif (defined(PIC) || defined(__PIC__)) && defined(__i386__) + __asm__ ("push %%ebx\n\t" + "cpuid\n\t" + "pop %%ebx\n\t" + : "=a" (uOperator), + "=c" (xCX) + : "0" (uOperator) + : "edx"); +# else + __asm__ ("cpuid" + : "=a" (uOperator), + "=c" (xCX) + : "0" (uOperator) + : "ebx", "edx"); + +# endif + +# elif RT_INLINE_ASM_USES_INTRIN + int aInfo[4]; + __cpuid(aInfo, uOperator); + xCX = aInfo[2]; + +# else + __asm + { + push ebx + mov eax, [uOperator] + cpuid + mov [xCX], ecx + pop ebx + } +# endif + return (uint32_t)xCX; +} +#endif + + +/** + * Performs the cpuid instruction returning edx. + * + * @param uOperator CPUID operation (eax). + * @returns EDX after cpuid operation. + */ +#if RT_INLINE_ASM_EXTERNAL && !RT_INLINE_ASM_USES_INTRIN +DECLASM(uint32_t) ASMCpuId_EDX(uint32_t uOperator); +#else +DECLINLINE(uint32_t) ASMCpuId_EDX(uint32_t uOperator) +{ + RTCCUINTREG xDX; +# if RT_INLINE_ASM_GNU_STYLE +# ifdef RT_ARCH_AMD64 + RTCCUINTREG uSpill; + __asm__ ("cpuid" + : "=a" (uSpill), + "=d" (xDX) + : "0" (uOperator) + : "rbx", "rcx"); +# elif (defined(PIC) || defined(__PIC__)) && defined(__i386__) + __asm__ ("push %%ebx\n\t" + "cpuid\n\t" + "pop %%ebx\n\t" + : "=a" (uOperator), + "=d" (xDX) + : "0" (uOperator) + : "ecx"); +# else + __asm__ ("cpuid" + : "=a" (uOperator), + "=d" (xDX) + : "0" (uOperator) + : "ebx", "ecx"); +# endif + +# elif RT_INLINE_ASM_USES_INTRIN + int aInfo[4]; + __cpuid(aInfo, uOperator); + xDX = aInfo[3]; + +# else + __asm + { + push ebx + mov eax, [uOperator] + cpuid + mov [xDX], edx + pop ebx + } +# endif + return (uint32_t)xDX; +} +#endif + + +/** + * Checks if the current CPU supports CPUID. + * + * @returns true if CPUID is supported. + */ +DECLINLINE(bool) ASMHasCpuId(void) +{ +#ifdef RT_ARCH_AMD64 + return true; /* ASSUME that all amd64 compatible CPUs have cpuid. */ +#else /* !RT_ARCH_AMD64 */ + bool fRet = false; +# if RT_INLINE_ASM_GNU_STYLE + uint32_t u1; + uint32_t u2; + __asm__ ("pushf\n\t" + "pop %1\n\t" + "mov %1, %2\n\t" + "xorl $0x200000, %1\n\t" + "push %1\n\t" + "popf\n\t" + "pushf\n\t" + "pop %1\n\t" + "cmpl %1, %2\n\t" + "setne %0\n\t" + "push %2\n\t" + "popf\n\t" + : "=m" (fRet), "=r" (u1), "=r" (u2)); +# else + __asm + { + pushfd + pop eax + mov ebx, eax + xor eax, 0200000h + push eax + popfd + pushfd + pop eax + cmp eax, ebx + setne fRet + push ebx + popfd + } +# endif + return fRet; +#endif /* !RT_ARCH_AMD64 */ +} + + +/** + * Gets the APIC ID of the current CPU. + * + * @returns the APIC ID. + */ +#if RT_INLINE_ASM_EXTERNAL && !RT_INLINE_ASM_USES_INTRIN +DECLASM(uint8_t) ASMGetApicId(void); +#else +DECLINLINE(uint8_t) ASMGetApicId(void) +{ + RTCCUINTREG xBX; +# if RT_INLINE_ASM_GNU_STYLE +# ifdef RT_ARCH_AMD64 + RTCCUINTREG uSpill; + __asm__ __volatile__ ("cpuid" + : "=a" (uSpill), + "=b" (xBX) + : "0" (1) + : "rcx", "rdx"); +# elif (defined(PIC) || defined(__PIC__)) && defined(__i386__) + RTCCUINTREG uSpill; + __asm__ __volatile__ ("mov %%ebx,%1\n\t" + "cpuid\n\t" + "xchgl %%ebx,%1\n\t" + : "=a" (uSpill), + "=rm" (xBX) + : "0" (1) + : "ecx", "edx"); +# else + RTCCUINTREG uSpill; + __asm__ __volatile__ ("cpuid" + : "=a" (uSpill), + "=b" (xBX) + : "0" (1) + : "ecx", "edx"); +# endif + +# elif RT_INLINE_ASM_USES_INTRIN + int aInfo[4]; + __cpuid(aInfo, 1); + xBX = aInfo[1]; + +# else + __asm + { + push ebx + mov eax, 1 + cpuid + mov [xBX], ebx + pop ebx + } +# endif + return (uint8_t)(xBX >> 24); +} +#endif + + +/** + * Tests if it a genuine Intel CPU based on the ASMCpuId(0) output. + * + * @returns true/false. + * @param uEBX EBX return from ASMCpuId(0) + * @param uECX ECX return from ASMCpuId(0) + * @param uEDX EDX return from ASMCpuId(0) + */ +DECLINLINE(bool) ASMIsIntelCpuEx(uint32_t uEBX, uint32_t uECX, uint32_t uEDX) +{ + return uEBX == UINT32_C(0x756e6547) + && uECX == UINT32_C(0x6c65746e) + && uEDX == UINT32_C(0x49656e69); +} + + +/** + * Tests if this is a genuine Intel CPU. + * + * @returns true/false. + * @remarks ASSUMES that cpuid is supported by the CPU. + */ +DECLINLINE(bool) ASMIsIntelCpu(void) +{ + uint32_t uEAX, uEBX, uECX, uEDX; + ASMCpuId(0, &uEAX, &uEBX, &uECX, &uEDX); + return ASMIsIntelCpuEx(uEBX, uECX, uEDX); +} + + +/** + * Tests if it an authentic AMD CPU based on the ASMCpuId(0) output. + * + * @returns true/false. + * @param uEBX EBX return from ASMCpuId(0) + * @param uECX ECX return from ASMCpuId(0) + * @param uEDX EDX return from ASMCpuId(0) + */ +DECLINLINE(bool) ASMIsAmdCpuEx(uint32_t uEBX, uint32_t uECX, uint32_t uEDX) +{ + return uEBX == UINT32_C(0x68747541) + && uECX == UINT32_C(0x444d4163) + && uEDX == UINT32_C(0x69746e65); +} + + +/** + * Tests if this is an authentic AMD CPU. + * + * @returns true/false. + * @remarks ASSUMES that cpuid is supported by the CPU. + */ +DECLINLINE(bool) ASMIsAmdCpu(void) +{ + uint32_t uEAX, uEBX, uECX, uEDX; + ASMCpuId(0, &uEAX, &uEBX, &uECX, &uEDX); + return ASMIsAmdCpuEx(uEBX, uECX, uEDX); +} + + +/** + * Tests if it a centaur hauling VIA CPU based on the ASMCpuId(0) output. + * + * @returns true/false. + * @param uEBX EBX return from ASMCpuId(0). + * @param uECX ECX return from ASMCpuId(0). + * @param uEDX EDX return from ASMCpuId(0). + */ +DECLINLINE(bool) ASMIsViaCentaurCpuEx(uint32_t uEBX, uint32_t uECX, uint32_t uEDX) +{ + return uEBX == UINT32_C(0x746e6543) + && uECX == UINT32_C(0x736c7561) + && uEDX == UINT32_C(0x48727561); +} + + +/** + * Tests if this is a centaur hauling VIA CPU. + * + * @returns true/false. + * @remarks ASSUMES that cpuid is supported by the CPU. + */ +DECLINLINE(bool) ASMIsViaCentaurCpu(void) +{ + uint32_t uEAX, uEBX, uECX, uEDX; + ASMCpuId(0, &uEAX, &uEBX, &uECX, &uEDX); + return ASMIsAmdCpuEx(uEBX, uECX, uEDX); +} + + +/** + * Checks whether ASMCpuId_EAX(0x00000000) indicates a valid range. + * + * + * @returns true/false. + * @param uEAX The EAX value of CPUID leaf 0x00000000. + * + * @note This only succeeds if there are at least two leaves in the range. + * @remarks The upper range limit is just some half reasonable value we've + * picked out of thin air. + */ +DECLINLINE(bool) ASMIsValidStdRange(uint32_t uEAX) +{ + return uEAX >= UINT32_C(0x00000001) && uEAX <= UINT32_C(0x000fffff); +} + + +/** + * Checks whether ASMCpuId_EAX(0x80000000) indicates a valid range. + * + * This only succeeds if there are at least two leaves in the range. + * + * @returns true/false. + * @param uEAX The EAX value of CPUID leaf 0x80000000. + * + * @note This only succeeds if there are at least two leaves in the range. + * @remarks The upper range limit is just some half reasonable value we've + * picked out of thin air. + */ +DECLINLINE(bool) ASMIsValidExtRange(uint32_t uEAX) +{ + return uEAX >= UINT32_C(0x80000001) && uEAX <= UINT32_C(0x800fffff); +} + + +/** + * Extracts the CPU family from ASMCpuId(1) or ASMCpuId(0x80000001) + * + * @returns Family. + * @param uEAX EAX return from ASMCpuId(1) or ASMCpuId(0x80000001). + */ +DECLINLINE(uint32_t) ASMGetCpuFamily(uint32_t uEAX) +{ + return ((uEAX >> 8) & 0xf) == 0xf + ? ((uEAX >> 20) & 0x7f) + 0xf + : ((uEAX >> 8) & 0xf); +} + + +/** + * Extracts the CPU model from ASMCpuId(1) or ASMCpuId(0x80000001), Intel variant. + * + * @returns Model. + * @param uEAX EAX from ASMCpuId(1) or ASMCpuId(0x80000001). + */ +DECLINLINE(uint32_t) ASMGetCpuModelIntel(uint32_t uEAX) +{ + return ((uEAX >> 8) & 0xf) == 0xf || (((uEAX >> 8) & 0xf) == 0x6) /* family! */ + ? ((uEAX >> 4) & 0xf) | ((uEAX >> 12) & 0xf0) + : ((uEAX >> 4) & 0xf); +} + + +/** + * Extracts the CPU model from ASMCpuId(1) or ASMCpuId(0x80000001), AMD variant. + * + * @returns Model. + * @param uEAX EAX from ASMCpuId(1) or ASMCpuId(0x80000001). + */ +DECLINLINE(uint32_t) ASMGetCpuModelAMD(uint32_t uEAX) +{ + return ((uEAX >> 8) & 0xf) == 0xf + ? ((uEAX >> 4) & 0xf) | ((uEAX >> 12) & 0xf0) + : ((uEAX >> 4) & 0xf); +} + + +/** + * Extracts the CPU model from ASMCpuId(1) or ASMCpuId(0x80000001) + * + * @returns Model. + * @param uEAX EAX from ASMCpuId(1) or ASMCpuId(0x80000001). + * @param fIntel Whether it's an intel CPU. Use ASMIsIntelCpuEx() or ASMIsIntelCpu(). + */ +DECLINLINE(uint32_t) ASMGetCpuModel(uint32_t uEAX, bool fIntel) +{ + return ((uEAX >> 8) & 0xf) == 0xf || (((uEAX >> 8) & 0xf) == 0x6 && fIntel) /* family! */ + ? ((uEAX >> 4) & 0xf) | ((uEAX >> 12) & 0xf0) + : ((uEAX >> 4) & 0xf); +} + + +/** + * Extracts the CPU stepping from ASMCpuId(1) or ASMCpuId(0x80000001) + * + * @returns Model. + * @param uEAX EAX from ASMCpuId(1) or ASMCpuId(0x80000001). + */ +DECLINLINE(uint32_t) ASMGetCpuStepping(uint32_t uEAX) +{ + return uEAX & 0xf; +} + + +/** + * Get cr0. + * @returns cr0. + */ +#if RT_INLINE_ASM_EXTERNAL && !RT_INLINE_ASM_USES_INTRIN +DECLASM(RTCCUINTREG) ASMGetCR0(void); +#else +DECLINLINE(RTCCUINTREG) ASMGetCR0(void) +{ + RTCCUINTREG uCR0; +# if RT_INLINE_ASM_USES_INTRIN + uCR0 = __readcr0(); + +# elif RT_INLINE_ASM_GNU_STYLE +# ifdef RT_ARCH_AMD64 + __asm__ __volatile__("movq %%cr0, %0\t\n" : "=r" (uCR0)); +# else + __asm__ __volatile__("movl %%cr0, %0\t\n" : "=r" (uCR0)); +# endif +# else + __asm + { +# ifdef RT_ARCH_AMD64 + mov rax, cr0 + mov [uCR0], rax +# else + mov eax, cr0 + mov [uCR0], eax +# endif + } +# endif + return uCR0; +} +#endif + + +/** + * Sets the CR0 register. + * @param uCR0 The new CR0 value. + */ +#if RT_INLINE_ASM_EXTERNAL && !RT_INLINE_ASM_USES_INTRIN +DECLASM(void) ASMSetCR0(RTCCUINTREG uCR0); +#else +DECLINLINE(void) ASMSetCR0(RTCCUINTREG uCR0) +{ +# if RT_INLINE_ASM_USES_INTRIN + __writecr0(uCR0); + +# elif RT_INLINE_ASM_GNU_STYLE +# ifdef RT_ARCH_AMD64 + __asm__ __volatile__("movq %0, %%cr0\n\t" :: "r" (uCR0)); +# else + __asm__ __volatile__("movl %0, %%cr0\n\t" :: "r" (uCR0)); +# endif +# else + __asm + { +# ifdef RT_ARCH_AMD64 + mov rax, [uCR0] + mov cr0, rax +# else + mov eax, [uCR0] + mov cr0, eax +# endif + } +# endif +} +#endif + + +/** + * Get cr2. + * @returns cr2. + */ +#if RT_INLINE_ASM_EXTERNAL && !RT_INLINE_ASM_USES_INTRIN +DECLASM(RTCCUINTREG) ASMGetCR2(void); +#else +DECLINLINE(RTCCUINTREG) ASMGetCR2(void) +{ + RTCCUINTREG uCR2; +# if RT_INLINE_ASM_USES_INTRIN + uCR2 = __readcr2(); + +# elif RT_INLINE_ASM_GNU_STYLE +# ifdef RT_ARCH_AMD64 + __asm__ __volatile__("movq %%cr2, %0\t\n" : "=r" (uCR2)); +# else + __asm__ __volatile__("movl %%cr2, %0\t\n" : "=r" (uCR2)); +# endif +# else + __asm + { +# ifdef RT_ARCH_AMD64 + mov rax, cr2 + mov [uCR2], rax +# else + mov eax, cr2 + mov [uCR2], eax +# endif + } +# endif + return uCR2; +} +#endif + + +/** + * Sets the CR2 register. + * @param uCR2 The new CR0 value. + */ +#if RT_INLINE_ASM_EXTERNAL +DECLASM(void) ASMSetCR2(RTCCUINTREG uCR2); +#else +DECLINLINE(void) ASMSetCR2(RTCCUINTREG uCR2) +{ +# if RT_INLINE_ASM_GNU_STYLE +# ifdef RT_ARCH_AMD64 + __asm__ __volatile__("movq %0, %%cr2\n\t" :: "r" (uCR2)); +# else + __asm__ __volatile__("movl %0, %%cr2\n\t" :: "r" (uCR2)); +# endif +# else + __asm + { +# ifdef RT_ARCH_AMD64 + mov rax, [uCR2] + mov cr2, rax +# else + mov eax, [uCR2] + mov cr2, eax +# endif + } +# endif +} +#endif + + +/** + * Get cr3. + * @returns cr3. + */ +#if RT_INLINE_ASM_EXTERNAL && !RT_INLINE_ASM_USES_INTRIN +DECLASM(RTCCUINTREG) ASMGetCR3(void); +#else +DECLINLINE(RTCCUINTREG) ASMGetCR3(void) +{ + RTCCUINTREG uCR3; +# if RT_INLINE_ASM_USES_INTRIN + uCR3 = __readcr3(); + +# elif RT_INLINE_ASM_GNU_STYLE +# ifdef RT_ARCH_AMD64 + __asm__ __volatile__("movq %%cr3, %0\t\n" : "=r" (uCR3)); +# else + __asm__ __volatile__("movl %%cr3, %0\t\n" : "=r" (uCR3)); +# endif +# else + __asm + { +# ifdef RT_ARCH_AMD64 + mov rax, cr3 + mov [uCR3], rax +# else + mov eax, cr3 + mov [uCR3], eax +# endif + } +# endif + return uCR3; +} +#endif + + +/** + * Sets the CR3 register. + * + * @param uCR3 New CR3 value. + */ +#if RT_INLINE_ASM_EXTERNAL && !RT_INLINE_ASM_USES_INTRIN +DECLASM(void) ASMSetCR3(RTCCUINTREG uCR3); +#else +DECLINLINE(void) ASMSetCR3(RTCCUINTREG uCR3) +{ +# if RT_INLINE_ASM_USES_INTRIN + __writecr3(uCR3); + +# elif RT_INLINE_ASM_GNU_STYLE +# ifdef RT_ARCH_AMD64 + __asm__ __volatile__("movq %0, %%cr3\n\t" : : "r" (uCR3)); +# else + __asm__ __volatile__("movl %0, %%cr3\n\t" : : "r" (uCR3)); +# endif +# else + __asm + { +# ifdef RT_ARCH_AMD64 + mov rax, [uCR3] + mov cr3, rax +# else + mov eax, [uCR3] + mov cr3, eax +# endif + } +# endif +} +#endif + + +/** + * Reloads the CR3 register. + */ +#if RT_INLINE_ASM_EXTERNAL && !RT_INLINE_ASM_USES_INTRIN +DECLASM(void) ASMReloadCR3(void); +#else +DECLINLINE(void) ASMReloadCR3(void) +{ +# if RT_INLINE_ASM_USES_INTRIN + __writecr3(__readcr3()); + +# elif RT_INLINE_ASM_GNU_STYLE + RTCCUINTREG u; +# ifdef RT_ARCH_AMD64 + __asm__ __volatile__("movq %%cr3, %0\n\t" + "movq %0, %%cr3\n\t" + : "=r" (u)); +# else + __asm__ __volatile__("movl %%cr3, %0\n\t" + "movl %0, %%cr3\n\t" + : "=r" (u)); +# endif +# else + __asm + { +# ifdef RT_ARCH_AMD64 + mov rax, cr3 + mov cr3, rax +# else + mov eax, cr3 + mov cr3, eax +# endif + } +# endif +} +#endif + + +/** + * Get cr4. + * @returns cr4. + */ +#if RT_INLINE_ASM_EXTERNAL && !RT_INLINE_ASM_USES_INTRIN +DECLASM(RTCCUINTREG) ASMGetCR4(void); +#else +DECLINLINE(RTCCUINTREG) ASMGetCR4(void) +{ + RTCCUINTREG uCR4; +# if RT_INLINE_ASM_USES_INTRIN + uCR4 = __readcr4(); + +# elif RT_INLINE_ASM_GNU_STYLE +# ifdef RT_ARCH_AMD64 + __asm__ __volatile__("movq %%cr4, %0\t\n" : "=r" (uCR4)); +# else + __asm__ __volatile__("movl %%cr4, %0\t\n" : "=r" (uCR4)); +# endif +# else + __asm + { +# ifdef RT_ARCH_AMD64 + mov rax, cr4 + mov [uCR4], rax +# else + push eax /* just in case */ + /*mov eax, cr4*/ + _emit 0x0f + _emit 0x20 + _emit 0xe0 + mov [uCR4], eax + pop eax +# endif + } +# endif + return uCR4; +} +#endif + + +/** + * Sets the CR4 register. + * + * @param uCR4 New CR4 value. + */ +#if RT_INLINE_ASM_EXTERNAL && !RT_INLINE_ASM_USES_INTRIN +DECLASM(void) ASMSetCR4(RTCCUINTREG uCR4); +#else +DECLINLINE(void) ASMSetCR4(RTCCUINTREG uCR4) +{ +# if RT_INLINE_ASM_USES_INTRIN + __writecr4(uCR4); + +# elif RT_INLINE_ASM_GNU_STYLE +# ifdef RT_ARCH_AMD64 + __asm__ __volatile__("movq %0, %%cr4\n\t" : : "r" (uCR4)); +# else + __asm__ __volatile__("movl %0, %%cr4\n\t" : : "r" (uCR4)); +# endif +# else + __asm + { +# ifdef RT_ARCH_AMD64 + mov rax, [uCR4] + mov cr4, rax +# else + mov eax, [uCR4] + _emit 0x0F + _emit 0x22 + _emit 0xE0 /* mov cr4, eax */ +# endif + } +# endif +} +#endif + + +/** + * Get cr8. + * @returns cr8. + * @remark The lock prefix hack for access from non-64-bit modes is NOT used and 0 is returned. + */ +#if RT_INLINE_ASM_EXTERNAL && !RT_INLINE_ASM_USES_INTRIN +DECLASM(RTCCUINTREG) ASMGetCR8(void); +#else +DECLINLINE(RTCCUINTREG) ASMGetCR8(void) +{ +# ifdef RT_ARCH_AMD64 + RTCCUINTREG uCR8; +# if RT_INLINE_ASM_USES_INTRIN + uCR8 = __readcr8(); + +# elif RT_INLINE_ASM_GNU_STYLE + __asm__ __volatile__("movq %%cr8, %0\t\n" : "=r" (uCR8)); +# else + __asm + { + mov rax, cr8 + mov [uCR8], rax + } +# endif + return uCR8; +# else /* !RT_ARCH_AMD64 */ + return 0; +# endif /* !RT_ARCH_AMD64 */ +} +#endif + + +/** + * Get XCR0 (eXtended feature Control Register 0). + * @returns xcr0. + */ +DECLASM(uint64_t) ASMGetXcr0(void); + +/** + * Sets the XCR0 register. + * @param uXcr0 The new XCR0 value. + */ +DECLASM(void) ASMSetXcr0(uint64_t uXcr0); + +struct X86XSAVEAREA; +/** + * Save extended CPU state. + * @param pXStateArea Where to save the state. + * @param fComponents Which state components to save. + */ +DECLASM(void) ASMXSave(struct X86XSAVEAREA *pXStateArea, uint64_t fComponents); + +/** + * Loads extended CPU state. + * @param pXStateArea Where to load the state from. + * @param fComponents Which state components to load. + */ +DECLASM(void) ASMXRstor(struct X86XSAVEAREA const *pXStateArea, uint64_t fComponents); + + +/** + * Enables interrupts (EFLAGS.IF). + */ +#if RT_INLINE_ASM_EXTERNAL && !RT_INLINE_ASM_USES_INTRIN +DECLASM(void) ASMIntEnable(void); +#else +DECLINLINE(void) ASMIntEnable(void) +{ +# if RT_INLINE_ASM_GNU_STYLE + __asm("sti\n"); +# elif RT_INLINE_ASM_USES_INTRIN + _enable(); +# else + __asm sti +# endif +} +#endif + + +/** + * Disables interrupts (!EFLAGS.IF). + */ +#if RT_INLINE_ASM_EXTERNAL && !RT_INLINE_ASM_USES_INTRIN +DECLASM(void) ASMIntDisable(void); +#else +DECLINLINE(void) ASMIntDisable(void) +{ +# if RT_INLINE_ASM_GNU_STYLE + __asm("cli\n"); +# elif RT_INLINE_ASM_USES_INTRIN + _disable(); +# else + __asm cli +# endif +} +#endif + + +/** + * Disables interrupts and returns previous xFLAGS. + */ +#if RT_INLINE_ASM_EXTERNAL && !RT_INLINE_ASM_USES_INTRIN +DECLASM(RTCCUINTREG) ASMIntDisableFlags(void); +#else +DECLINLINE(RTCCUINTREG) ASMIntDisableFlags(void) +{ + RTCCUINTREG xFlags; +# if RT_INLINE_ASM_GNU_STYLE +# ifdef RT_ARCH_AMD64 + __asm__ __volatile__("pushfq\n\t" + "cli\n\t" + "popq %0\n\t" + : "=r" (xFlags)); +# else + __asm__ __volatile__("pushfl\n\t" + "cli\n\t" + "popl %0\n\t" + : "=r" (xFlags)); +# endif +# elif RT_INLINE_ASM_USES_INTRIN && !defined(RT_ARCH_X86) + xFlags = ASMGetFlags(); + _disable(); +# else + __asm { + pushfd + cli + pop [xFlags] + } +# endif + return xFlags; +} +#endif + + +/** + * Are interrupts enabled? + * + * @returns true / false. + */ +DECLINLINE(bool) ASMIntAreEnabled(void) +{ + RTCCUINTREG uFlags = ASMGetFlags(); + return uFlags & 0x200 /* X86_EFL_IF */ ? true : false; +} + + +/** + * Halts the CPU until interrupted. + */ +#if RT_INLINE_ASM_EXTERNAL +DECLASM(void) ASMHalt(void); +#else +DECLINLINE(void) ASMHalt(void) +{ +# if RT_INLINE_ASM_GNU_STYLE + __asm__ __volatile__("hlt\n\t"); +# else + __asm { + hlt + } +# endif +} +#endif + + +/** + * Reads a machine specific register. + * + * @returns Register content. + * @param uRegister Register to read. + */ +#if RT_INLINE_ASM_EXTERNAL && !RT_INLINE_ASM_USES_INTRIN +DECLASM(uint64_t) ASMRdMsr(uint32_t uRegister); +#else +DECLINLINE(uint64_t) ASMRdMsr(uint32_t uRegister) +{ + RTUINT64U u; +# if RT_INLINE_ASM_GNU_STYLE + __asm__ __volatile__("rdmsr\n\t" + : "=a" (u.s.Lo), + "=d" (u.s.Hi) + : "c" (uRegister)); + +# elif RT_INLINE_ASM_USES_INTRIN + u.u = __readmsr(uRegister); + +# else + __asm + { + mov ecx, [uRegister] + rdmsr + mov [u.s.Lo], eax + mov [u.s.Hi], edx + } +# endif + + return u.u; +} +#endif + + +/** + * Writes a machine specific register. + * + * @returns Register content. + * @param uRegister Register to write to. + * @param u64Val Value to write. + */ +#if RT_INLINE_ASM_EXTERNAL && !RT_INLINE_ASM_USES_INTRIN +DECLASM(void) ASMWrMsr(uint32_t uRegister, uint64_t u64Val); +#else +DECLINLINE(void) ASMWrMsr(uint32_t uRegister, uint64_t u64Val) +{ + RTUINT64U u; + + u.u = u64Val; +# if RT_INLINE_ASM_GNU_STYLE + __asm__ __volatile__("wrmsr\n\t" + ::"a" (u.s.Lo), + "d" (u.s.Hi), + "c" (uRegister)); + +# elif RT_INLINE_ASM_USES_INTRIN + __writemsr(uRegister, u.u); + +# else + __asm + { + mov ecx, [uRegister] + mov edx, [u.s.Hi] + mov eax, [u.s.Lo] + wrmsr + } +# endif +} +#endif + + +/** + * Reads a machine specific register, extended version (for AMD). + * + * @returns Register content. + * @param uRegister Register to read. + * @param uXDI RDI/EDI value. + */ +#if RT_INLINE_ASM_EXTERNAL +DECLASM(uint64_t) ASMRdMsrEx(uint32_t uRegister, RTCCUINTREG uXDI); +#else +DECLINLINE(uint64_t) ASMRdMsrEx(uint32_t uRegister, RTCCUINTREG uXDI) +{ + RTUINT64U u; +# if RT_INLINE_ASM_GNU_STYLE + __asm__ __volatile__("rdmsr\n\t" + : "=a" (u.s.Lo), + "=d" (u.s.Hi) + : "c" (uRegister), + "D" (uXDI)); + +# else + __asm + { + mov ecx, [uRegister] + xchg edi, [uXDI] + rdmsr + mov [u.s.Lo], eax + mov [u.s.Hi], edx + xchg edi, [uXDI] + } +# endif + + return u.u; +} +#endif + + +/** + * Writes a machine specific register, extended version (for AMD). + * + * @returns Register content. + * @param uRegister Register to write to. + * @param uXDI RDI/EDI value. + * @param u64Val Value to write. + */ +#if RT_INLINE_ASM_EXTERNAL +DECLASM(void) ASMWrMsrEx(uint32_t uRegister, RTCCUINTREG uXDI, uint64_t u64Val); +#else +DECLINLINE(void) ASMWrMsrEx(uint32_t uRegister, RTCCUINTREG uXDI, uint64_t u64Val) +{ + RTUINT64U u; + + u.u = u64Val; +# if RT_INLINE_ASM_GNU_STYLE + __asm__ __volatile__("wrmsr\n\t" + ::"a" (u.s.Lo), + "d" (u.s.Hi), + "c" (uRegister), + "D" (uXDI)); + +# else + __asm + { + mov ecx, [uRegister] + xchg edi, [uXDI] + mov edx, [u.s.Hi] + mov eax, [u.s.Lo] + wrmsr + xchg edi, [uXDI] + } +# endif +} +#endif + + + +/** + * Reads low part of a machine specific register. + * + * @returns Register content. + * @param uRegister Register to read. + */ +#if RT_INLINE_ASM_EXTERNAL && !RT_INLINE_ASM_USES_INTRIN +DECLASM(uint32_t) ASMRdMsr_Low(uint32_t uRegister); +#else +DECLINLINE(uint32_t) ASMRdMsr_Low(uint32_t uRegister) +{ + uint32_t u32; +# if RT_INLINE_ASM_GNU_STYLE + __asm__ __volatile__("rdmsr\n\t" + : "=a" (u32) + : "c" (uRegister) + : "edx"); + +# elif RT_INLINE_ASM_USES_INTRIN + u32 = (uint32_t)__readmsr(uRegister); + +#else + __asm + { + mov ecx, [uRegister] + rdmsr + mov [u32], eax + } +# endif + + return u32; +} +#endif + + +/** + * Reads high part of a machine specific register. + * + * @returns Register content. + * @param uRegister Register to read. + */ +#if RT_INLINE_ASM_EXTERNAL && !RT_INLINE_ASM_USES_INTRIN +DECLASM(uint32_t) ASMRdMsr_High(uint32_t uRegister); +#else +DECLINLINE(uint32_t) ASMRdMsr_High(uint32_t uRegister) +{ + uint32_t u32; +# if RT_INLINE_ASM_GNU_STYLE + __asm__ __volatile__("rdmsr\n\t" + : "=d" (u32) + : "c" (uRegister) + : "eax"); + +# elif RT_INLINE_ASM_USES_INTRIN + u32 = (uint32_t)(__readmsr(uRegister) >> 32); + +# else + __asm + { + mov ecx, [uRegister] + rdmsr + mov [u32], edx + } +# endif + + return u32; +} +#endif + + +/** + * Gets dr0. + * + * @returns dr0. + */ +#if RT_INLINE_ASM_EXTERNAL && !RT_INLINE_ASM_USES_INTRIN +DECLASM(RTCCUINTREG) ASMGetDR0(void); +#else +DECLINLINE(RTCCUINTREG) ASMGetDR0(void) +{ + RTCCUINTREG uDR0; +# if RT_INLINE_ASM_USES_INTRIN + uDR0 = __readdr(0); +# elif RT_INLINE_ASM_GNU_STYLE +# ifdef RT_ARCH_AMD64 + __asm__ __volatile__("movq %%dr0, %0\n\t" : "=r" (uDR0)); +# else + __asm__ __volatile__("movl %%dr0, %0\n\t" : "=r" (uDR0)); +# endif +# else + __asm + { +# ifdef RT_ARCH_AMD64 + mov rax, dr0 + mov [uDR0], rax +# else + mov eax, dr0 + mov [uDR0], eax +# endif + } +# endif + return uDR0; +} +#endif + + +/** + * Gets dr1. + * + * @returns dr1. + */ +#if RT_INLINE_ASM_EXTERNAL && !RT_INLINE_ASM_USES_INTRIN +DECLASM(RTCCUINTREG) ASMGetDR1(void); +#else +DECLINLINE(RTCCUINTREG) ASMGetDR1(void) +{ + RTCCUINTREG uDR1; +# if RT_INLINE_ASM_USES_INTRIN + uDR1 = __readdr(1); +# elif RT_INLINE_ASM_GNU_STYLE +# ifdef RT_ARCH_AMD64 + __asm__ __volatile__("movq %%dr1, %0\n\t" : "=r" (uDR1)); +# else + __asm__ __volatile__("movl %%dr1, %0\n\t" : "=r" (uDR1)); +# endif +# else + __asm + { +# ifdef RT_ARCH_AMD64 + mov rax, dr1 + mov [uDR1], rax +# else + mov eax, dr1 + mov [uDR1], eax +# endif + } +# endif + return uDR1; +} +#endif + + +/** + * Gets dr2. + * + * @returns dr2. + */ +#if RT_INLINE_ASM_EXTERNAL && !RT_INLINE_ASM_USES_INTRIN +DECLASM(RTCCUINTREG) ASMGetDR2(void); +#else +DECLINLINE(RTCCUINTREG) ASMGetDR2(void) +{ + RTCCUINTREG uDR2; +# if RT_INLINE_ASM_USES_INTRIN + uDR2 = __readdr(2); +# elif RT_INLINE_ASM_GNU_STYLE +# ifdef RT_ARCH_AMD64 + __asm__ __volatile__("movq %%dr2, %0\n\t" : "=r" (uDR2)); +# else + __asm__ __volatile__("movl %%dr2, %0\n\t" : "=r" (uDR2)); +# endif +# else + __asm + { +# ifdef RT_ARCH_AMD64 + mov rax, dr2 + mov [uDR2], rax +# else + mov eax, dr2 + mov [uDR2], eax +# endif + } +# endif + return uDR2; +} +#endif + + +/** + * Gets dr3. + * + * @returns dr3. + */ +#if RT_INLINE_ASM_EXTERNAL && !RT_INLINE_ASM_USES_INTRIN +DECLASM(RTCCUINTREG) ASMGetDR3(void); +#else +DECLINLINE(RTCCUINTREG) ASMGetDR3(void) +{ + RTCCUINTREG uDR3; +# if RT_INLINE_ASM_USES_INTRIN + uDR3 = __readdr(3); +# elif RT_INLINE_ASM_GNU_STYLE +# ifdef RT_ARCH_AMD64 + __asm__ __volatile__("movq %%dr3, %0\n\t" : "=r" (uDR3)); +# else + __asm__ __volatile__("movl %%dr3, %0\n\t" : "=r" (uDR3)); +# endif +# else + __asm + { +# ifdef RT_ARCH_AMD64 + mov rax, dr3 + mov [uDR3], rax +# else + mov eax, dr3 + mov [uDR3], eax +# endif + } +# endif + return uDR3; +} +#endif + + +/** + * Gets dr6. + * + * @returns dr6. + */ +#if RT_INLINE_ASM_EXTERNAL && !RT_INLINE_ASM_USES_INTRIN +DECLASM(RTCCUINTREG) ASMGetDR6(void); +#else +DECLINLINE(RTCCUINTREG) ASMGetDR6(void) +{ + RTCCUINTREG uDR6; +# if RT_INLINE_ASM_USES_INTRIN + uDR6 = __readdr(6); +# elif RT_INLINE_ASM_GNU_STYLE +# ifdef RT_ARCH_AMD64 + __asm__ __volatile__("movq %%dr6, %0\n\t" : "=r" (uDR6)); +# else + __asm__ __volatile__("movl %%dr6, %0\n\t" : "=r" (uDR6)); +# endif +# else + __asm + { +# ifdef RT_ARCH_AMD64 + mov rax, dr6 + mov [uDR6], rax +# else + mov eax, dr6 + mov [uDR6], eax +# endif + } +# endif + return uDR6; +} +#endif + + +/** + * Reads and clears DR6. + * + * @returns DR6. + */ +#if RT_INLINE_ASM_EXTERNAL && !RT_INLINE_ASM_USES_INTRIN +DECLASM(RTCCUINTREG) ASMGetAndClearDR6(void); +#else +DECLINLINE(RTCCUINTREG) ASMGetAndClearDR6(void) +{ + RTCCUINTREG uDR6; +# if RT_INLINE_ASM_USES_INTRIN + uDR6 = __readdr(6); + __writedr(6, 0xffff0ff0U); /* 31-16 and 4-11 are 1's, 12 and 63-31 are zero. */ +# elif RT_INLINE_ASM_GNU_STYLE + RTCCUINTREG uNewValue = 0xffff0ff0U;/* 31-16 and 4-11 are 1's, 12 and 63-31 are zero. */ +# ifdef RT_ARCH_AMD64 + __asm__ __volatile__("movq %%dr6, %0\n\t" + "movq %1, %%dr6\n\t" + : "=r" (uDR6) + : "r" (uNewValue)); +# else + __asm__ __volatile__("movl %%dr6, %0\n\t" + "movl %1, %%dr6\n\t" + : "=r" (uDR6) + : "r" (uNewValue)); +# endif +# else + __asm + { +# ifdef RT_ARCH_AMD64 + mov rax, dr6 + mov [uDR6], rax + mov rcx, rax + mov ecx, 0ffff0ff0h; /* 31-16 and 4-11 are 1's, 12 and 63-31 are zero. */ + mov dr6, rcx +# else + mov eax, dr6 + mov [uDR6], eax + mov ecx, 0ffff0ff0h; /* 31-16 and 4-11 are 1's, 12 is zero. */ + mov dr6, ecx +# endif + } +# endif + return uDR6; +} +#endif + + +/** + * Gets dr7. + * + * @returns dr7. + */ +#if RT_INLINE_ASM_EXTERNAL && !RT_INLINE_ASM_USES_INTRIN +DECLASM(RTCCUINTREG) ASMGetDR7(void); +#else +DECLINLINE(RTCCUINTREG) ASMGetDR7(void) +{ + RTCCUINTREG uDR7; +# if RT_INLINE_ASM_USES_INTRIN + uDR7 = __readdr(7); +# elif RT_INLINE_ASM_GNU_STYLE +# ifdef RT_ARCH_AMD64 + __asm__ __volatile__("movq %%dr7, %0\n\t" : "=r" (uDR7)); +# else + __asm__ __volatile__("movl %%dr7, %0\n\t" : "=r" (uDR7)); +# endif +# else + __asm + { +# ifdef RT_ARCH_AMD64 + mov rax, dr7 + mov [uDR7], rax +# else + mov eax, dr7 + mov [uDR7], eax +# endif + } +# endif + return uDR7; +} +#endif + + +/** + * Sets dr0. + * + * @param uDRVal Debug register value to write + */ +#if RT_INLINE_ASM_EXTERNAL && !RT_INLINE_ASM_USES_INTRIN +DECLASM(void) ASMSetDR0(RTCCUINTREG uDRVal); +#else +DECLINLINE(void) ASMSetDR0(RTCCUINTREG uDRVal) +{ +# if RT_INLINE_ASM_USES_INTRIN + __writedr(0, uDRVal); +# elif RT_INLINE_ASM_GNU_STYLE +# ifdef RT_ARCH_AMD64 + __asm__ __volatile__("movq %0, %%dr0\n\t" : : "r" (uDRVal)); +# else + __asm__ __volatile__("movl %0, %%dr0\n\t" : : "r" (uDRVal)); +# endif +# else + __asm + { +# ifdef RT_ARCH_AMD64 + mov rax, [uDRVal] + mov dr0, rax +# else + mov eax, [uDRVal] + mov dr0, eax +# endif + } +# endif +} +#endif + + +/** + * Sets dr1. + * + * @param uDRVal Debug register value to write + */ +#if RT_INLINE_ASM_EXTERNAL && !RT_INLINE_ASM_USES_INTRIN +DECLASM(void) ASMSetDR1(RTCCUINTREG uDRVal); +#else +DECLINLINE(void) ASMSetDR1(RTCCUINTREG uDRVal) +{ +# if RT_INLINE_ASM_USES_INTRIN + __writedr(1, uDRVal); +# elif RT_INLINE_ASM_GNU_STYLE +# ifdef RT_ARCH_AMD64 + __asm__ __volatile__("movq %0, %%dr1\n\t" : : "r" (uDRVal)); +# else + __asm__ __volatile__("movl %0, %%dr1\n\t" : : "r" (uDRVal)); +# endif +# else + __asm + { +# ifdef RT_ARCH_AMD64 + mov rax, [uDRVal] + mov dr1, rax +# else + mov eax, [uDRVal] + mov dr1, eax +# endif + } +# endif +} +#endif + + +/** + * Sets dr2. + * + * @param uDRVal Debug register value to write + */ +#if RT_INLINE_ASM_EXTERNAL && !RT_INLINE_ASM_USES_INTRIN +DECLASM(void) ASMSetDR2(RTCCUINTREG uDRVal); +#else +DECLINLINE(void) ASMSetDR2(RTCCUINTREG uDRVal) +{ +# if RT_INLINE_ASM_USES_INTRIN + __writedr(2, uDRVal); +# elif RT_INLINE_ASM_GNU_STYLE +# ifdef RT_ARCH_AMD64 + __asm__ __volatile__("movq %0, %%dr2\n\t" : : "r" (uDRVal)); +# else + __asm__ __volatile__("movl %0, %%dr2\n\t" : : "r" (uDRVal)); +# endif +# else + __asm + { +# ifdef RT_ARCH_AMD64 + mov rax, [uDRVal] + mov dr2, rax +# else + mov eax, [uDRVal] + mov dr2, eax +# endif + } +# endif +} +#endif + + +/** + * Sets dr3. + * + * @param uDRVal Debug register value to write + */ +#if RT_INLINE_ASM_EXTERNAL && !RT_INLINE_ASM_USES_INTRIN +DECLASM(void) ASMSetDR3(RTCCUINTREG uDRVal); +#else +DECLINLINE(void) ASMSetDR3(RTCCUINTREG uDRVal) +{ +# if RT_INLINE_ASM_USES_INTRIN + __writedr(3, uDRVal); +# elif RT_INLINE_ASM_GNU_STYLE +# ifdef RT_ARCH_AMD64 + __asm__ __volatile__("movq %0, %%dr3\n\t" : : "r" (uDRVal)); +# else + __asm__ __volatile__("movl %0, %%dr3\n\t" : : "r" (uDRVal)); +# endif +# else + __asm + { +# ifdef RT_ARCH_AMD64 + mov rax, [uDRVal] + mov dr3, rax +# else + mov eax, [uDRVal] + mov dr3, eax +# endif + } +# endif +} +#endif + + +/** + * Sets dr6. + * + * @param uDRVal Debug register value to write + */ +#if RT_INLINE_ASM_EXTERNAL && !RT_INLINE_ASM_USES_INTRIN +DECLASM(void) ASMSetDR6(RTCCUINTREG uDRVal); +#else +DECLINLINE(void) ASMSetDR6(RTCCUINTREG uDRVal) +{ +# if RT_INLINE_ASM_USES_INTRIN + __writedr(6, uDRVal); +# elif RT_INLINE_ASM_GNU_STYLE +# ifdef RT_ARCH_AMD64 + __asm__ __volatile__("movq %0, %%dr6\n\t" : : "r" (uDRVal)); +# else + __asm__ __volatile__("movl %0, %%dr6\n\t" : : "r" (uDRVal)); +# endif +# else + __asm + { +# ifdef RT_ARCH_AMD64 + mov rax, [uDRVal] + mov dr6, rax +# else + mov eax, [uDRVal] + mov dr6, eax +# endif + } +# endif +} +#endif + + +/** + * Sets dr7. + * + * @param uDRVal Debug register value to write + */ +#if RT_INLINE_ASM_EXTERNAL && !RT_INLINE_ASM_USES_INTRIN +DECLASM(void) ASMSetDR7(RTCCUINTREG uDRVal); +#else +DECLINLINE(void) ASMSetDR7(RTCCUINTREG uDRVal) +{ +# if RT_INLINE_ASM_USES_INTRIN + __writedr(7, uDRVal); +# elif RT_INLINE_ASM_GNU_STYLE +# ifdef RT_ARCH_AMD64 + __asm__ __volatile__("movq %0, %%dr7\n\t" : : "r" (uDRVal)); +# else + __asm__ __volatile__("movl %0, %%dr7\n\t" : : "r" (uDRVal)); +# endif +# else + __asm + { +# ifdef RT_ARCH_AMD64 + mov rax, [uDRVal] + mov dr7, rax +# else + mov eax, [uDRVal] + mov dr7, eax +# endif + } +# endif +} +#endif + + +/** + * Writes a 8-bit unsigned integer to an I/O port, ordered. + * + * @param Port I/O port to write to. + * @param u8 8-bit integer to write. + */ +#if RT_INLINE_ASM_EXTERNAL && !RT_INLINE_ASM_USES_INTRIN +DECLASM(void) ASMOutU8(RTIOPORT Port, uint8_t u8); +#else +DECLINLINE(void) ASMOutU8(RTIOPORT Port, uint8_t u8) +{ +# if RT_INLINE_ASM_GNU_STYLE + __asm__ __volatile__("outb %b1, %w0\n\t" + :: "Nd" (Port), + "a" (u8)); + +# elif RT_INLINE_ASM_USES_INTRIN + __outbyte(Port, u8); + +# else + __asm + { + mov dx, [Port] + mov al, [u8] + out dx, al + } +# endif +} +#endif + + +/** + * Reads a 8-bit unsigned integer from an I/O port, ordered. + * + * @returns 8-bit integer. + * @param Port I/O port to read from. + */ +#if RT_INLINE_ASM_EXTERNAL && !RT_INLINE_ASM_USES_INTRIN +DECLASM(uint8_t) ASMInU8(RTIOPORT Port); +#else +DECLINLINE(uint8_t) ASMInU8(RTIOPORT Port) +{ + uint8_t u8; +# if RT_INLINE_ASM_GNU_STYLE + __asm__ __volatile__("inb %w1, %b0\n\t" + : "=a" (u8) + : "Nd" (Port)); + +# elif RT_INLINE_ASM_USES_INTRIN + u8 = __inbyte(Port); + +# else + __asm + { + mov dx, [Port] + in al, dx + mov [u8], al + } +# endif + return u8; +} +#endif + + +/** + * Writes a 16-bit unsigned integer to an I/O port, ordered. + * + * @param Port I/O port to write to. + * @param u16 16-bit integer to write. + */ +#if RT_INLINE_ASM_EXTERNAL && !RT_INLINE_ASM_USES_INTRIN +DECLASM(void) ASMOutU16(RTIOPORT Port, uint16_t u16); +#else +DECLINLINE(void) ASMOutU16(RTIOPORT Port, uint16_t u16) +{ +# if RT_INLINE_ASM_GNU_STYLE + __asm__ __volatile__("outw %w1, %w0\n\t" + :: "Nd" (Port), + "a" (u16)); + +# elif RT_INLINE_ASM_USES_INTRIN + __outword(Port, u16); + +# else + __asm + { + mov dx, [Port] + mov ax, [u16] + out dx, ax + } +# endif +} +#endif + + +/** + * Reads a 16-bit unsigned integer from an I/O port, ordered. + * + * @returns 16-bit integer. + * @param Port I/O port to read from. + */ +#if RT_INLINE_ASM_EXTERNAL && !RT_INLINE_ASM_USES_INTRIN +DECLASM(uint16_t) ASMInU16(RTIOPORT Port); +#else +DECLINLINE(uint16_t) ASMInU16(RTIOPORT Port) +{ + uint16_t u16; +# if RT_INLINE_ASM_GNU_STYLE + __asm__ __volatile__("inw %w1, %w0\n\t" + : "=a" (u16) + : "Nd" (Port)); + +# elif RT_INLINE_ASM_USES_INTRIN + u16 = __inword(Port); + +# else + __asm + { + mov dx, [Port] + in ax, dx + mov [u16], ax + } +# endif + return u16; +} +#endif + + +/** + * Writes a 32-bit unsigned integer to an I/O port, ordered. + * + * @param Port I/O port to write to. + * @param u32 32-bit integer to write. + */ +#if RT_INLINE_ASM_EXTERNAL && !RT_INLINE_ASM_USES_INTRIN +DECLASM(void) ASMOutU32(RTIOPORT Port, uint32_t u32); +#else +DECLINLINE(void) ASMOutU32(RTIOPORT Port, uint32_t u32) +{ +# if RT_INLINE_ASM_GNU_STYLE + __asm__ __volatile__("outl %1, %w0\n\t" + :: "Nd" (Port), + "a" (u32)); + +# elif RT_INLINE_ASM_USES_INTRIN + __outdword(Port, u32); + +# else + __asm + { + mov dx, [Port] + mov eax, [u32] + out dx, eax + } +# endif +} +#endif + + +/** + * Reads a 32-bit unsigned integer from an I/O port, ordered. + * + * @returns 32-bit integer. + * @param Port I/O port to read from. + */ +#if RT_INLINE_ASM_EXTERNAL && !RT_INLINE_ASM_USES_INTRIN +DECLASM(uint32_t) ASMInU32(RTIOPORT Port); +#else +DECLINLINE(uint32_t) ASMInU32(RTIOPORT Port) +{ + uint32_t u32; +# if RT_INLINE_ASM_GNU_STYLE + __asm__ __volatile__("inl %w1, %0\n\t" + : "=a" (u32) + : "Nd" (Port)); + +# elif RT_INLINE_ASM_USES_INTRIN + u32 = __indword(Port); + +# else + __asm + { + mov dx, [Port] + in eax, dx + mov [u32], eax + } +# endif + return u32; +} +#endif + + +/** + * Writes a string of 8-bit unsigned integer items to an I/O port, ordered. + * + * @param Port I/O port to write to. + * @param pau8 Pointer to the string buffer. + * @param c The number of items to write. + */ +#if RT_INLINE_ASM_EXTERNAL && !RT_INLINE_ASM_USES_INTRIN +DECLASM(void) ASMOutStrU8(RTIOPORT Port, uint8_t const *pau8, size_t c); +#else +DECLINLINE(void) ASMOutStrU8(RTIOPORT Port, uint8_t const *pau8, size_t c) +{ +# if RT_INLINE_ASM_GNU_STYLE + __asm__ __volatile__("rep; outsb\n\t" + : "+S" (pau8), + "+c" (c) + : "d" (Port)); + +# elif RT_INLINE_ASM_USES_INTRIN + __outbytestring(Port, (unsigned char *)pau8, (unsigned long)c); + +# else + __asm + { + mov dx, [Port] + mov ecx, [c] + mov eax, [pau8] + xchg esi, eax + rep outsb + xchg esi, eax + } +# endif +} +#endif + + +/** + * Reads a string of 8-bit unsigned integer items from an I/O port, ordered. + * + * @param Port I/O port to read from. + * @param pau8 Pointer to the string buffer (output). + * @param c The number of items to read. + */ +#if RT_INLINE_ASM_EXTERNAL && !RT_INLINE_ASM_USES_INTRIN +DECLASM(void) ASMInStrU8(RTIOPORT Port, uint8_t *pau8, size_t c); +#else +DECLINLINE(void) ASMInStrU8(RTIOPORT Port, uint8_t *pau8, size_t c) +{ +# if RT_INLINE_ASM_GNU_STYLE + __asm__ __volatile__("rep; insb\n\t" + : "+D" (pau8), + "+c" (c) + : "d" (Port)); + +# elif RT_INLINE_ASM_USES_INTRIN + __inbytestring(Port, pau8, (unsigned long)c); + +# else + __asm + { + mov dx, [Port] + mov ecx, [c] + mov eax, [pau8] + xchg edi, eax + rep insb + xchg edi, eax + } +# endif +} +#endif + + +/** + * Writes a string of 16-bit unsigned integer items to an I/O port, ordered. + * + * @param Port I/O port to write to. + * @param pau16 Pointer to the string buffer. + * @param c The number of items to write. + */ +#if RT_INLINE_ASM_EXTERNAL && !RT_INLINE_ASM_USES_INTRIN +DECLASM(void) ASMOutStrU16(RTIOPORT Port, uint16_t const *pau16, size_t c); +#else +DECLINLINE(void) ASMOutStrU16(RTIOPORT Port, uint16_t const *pau16, size_t c) +{ +# if RT_INLINE_ASM_GNU_STYLE + __asm__ __volatile__("rep; outsw\n\t" + : "+S" (pau16), + "+c" (c) + : "d" (Port)); + +# elif RT_INLINE_ASM_USES_INTRIN + __outwordstring(Port, (unsigned short *)pau16, (unsigned long)c); + +# else + __asm + { + mov dx, [Port] + mov ecx, [c] + mov eax, [pau16] + xchg esi, eax + rep outsw + xchg esi, eax + } +# endif +} +#endif + + +/** + * Reads a string of 16-bit unsigned integer items from an I/O port, ordered. + * + * @param Port I/O port to read from. + * @param pau16 Pointer to the string buffer (output). + * @param c The number of items to read. + */ +#if RT_INLINE_ASM_EXTERNAL && !RT_INLINE_ASM_USES_INTRIN +DECLASM(void) ASMInStrU16(RTIOPORT Port, uint16_t *pau16, size_t c); +#else +DECLINLINE(void) ASMInStrU16(RTIOPORT Port, uint16_t *pau16, size_t c) +{ +# if RT_INLINE_ASM_GNU_STYLE + __asm__ __volatile__("rep; insw\n\t" + : "+D" (pau16), + "+c" (c) + : "d" (Port)); + +# elif RT_INLINE_ASM_USES_INTRIN + __inwordstring(Port, pau16, (unsigned long)c); + +# else + __asm + { + mov dx, [Port] + mov ecx, [c] + mov eax, [pau16] + xchg edi, eax + rep insw + xchg edi, eax + } +# endif +} +#endif + + +/** + * Writes a string of 32-bit unsigned integer items to an I/O port, ordered. + * + * @param Port I/O port to write to. + * @param pau32 Pointer to the string buffer. + * @param c The number of items to write. + */ +#if RT_INLINE_ASM_EXTERNAL && !RT_INLINE_ASM_USES_INTRIN +DECLASM(void) ASMOutStrU32(RTIOPORT Port, uint32_t const *pau32, size_t c); +#else +DECLINLINE(void) ASMOutStrU32(RTIOPORT Port, uint32_t const *pau32, size_t c) +{ +# if RT_INLINE_ASM_GNU_STYLE + __asm__ __volatile__("rep; outsl\n\t" + : "+S" (pau32), + "+c" (c) + : "d" (Port)); + +# elif RT_INLINE_ASM_USES_INTRIN + __outdwordstring(Port, (unsigned long *)pau32, (unsigned long)c); + +# else + __asm + { + mov dx, [Port] + mov ecx, [c] + mov eax, [pau32] + xchg esi, eax + rep outsd + xchg esi, eax + } +# endif +} +#endif + + +/** + * Reads a string of 32-bit unsigned integer items from an I/O port, ordered. + * + * @param Port I/O port to read from. + * @param pau32 Pointer to the string buffer (output). + * @param c The number of items to read. + */ +#if RT_INLINE_ASM_EXTERNAL && !RT_INLINE_ASM_USES_INTRIN +DECLASM(void) ASMInStrU32(RTIOPORT Port, uint32_t *pau32, size_t c); +#else +DECLINLINE(void) ASMInStrU32(RTIOPORT Port, uint32_t *pau32, size_t c) +{ +# if RT_INLINE_ASM_GNU_STYLE + __asm__ __volatile__("rep; insl\n\t" + : "+D" (pau32), + "+c" (c) + : "d" (Port)); + +# elif RT_INLINE_ASM_USES_INTRIN + __indwordstring(Port, (unsigned long *)pau32, (unsigned long)c); + +# else + __asm + { + mov dx, [Port] + mov ecx, [c] + mov eax, [pau32] + xchg edi, eax + rep insd + xchg edi, eax + } +# endif +} +#endif + + +/** + * Invalidate page. + * + * @param pv Address of the page to invalidate. + */ +#if RT_INLINE_ASM_EXTERNAL && !RT_INLINE_ASM_USES_INTRIN +DECLASM(void) ASMInvalidatePage(void *pv); +#else +DECLINLINE(void) ASMInvalidatePage(void *pv) +{ +# if RT_INLINE_ASM_USES_INTRIN + __invlpg(pv); + +# elif RT_INLINE_ASM_GNU_STYLE + __asm__ __volatile__("invlpg %0\n\t" + : : "m" (*(uint8_t *)pv)); +# else + __asm + { +# ifdef RT_ARCH_AMD64 + mov rax, [pv] + invlpg [rax] +# else + mov eax, [pv] + invlpg [eax] +# endif + } +# endif +} +#endif + + +/** + * Write back the internal caches and invalidate them. + */ +#if RT_INLINE_ASM_EXTERNAL && !RT_INLINE_ASM_USES_INTRIN +DECLASM(void) ASMWriteBackAndInvalidateCaches(void); +#else +DECLINLINE(void) ASMWriteBackAndInvalidateCaches(void) +{ +# if RT_INLINE_ASM_USES_INTRIN + __wbinvd(); + +# elif RT_INLINE_ASM_GNU_STYLE + __asm__ __volatile__("wbinvd"); +# else + __asm + { + wbinvd + } +# endif +} +#endif + + +/** + * Invalidate internal and (perhaps) external caches without first + * flushing dirty cache lines. Use with extreme care. + */ +#if RT_INLINE_ASM_EXTERNAL +DECLASM(void) ASMInvalidateInternalCaches(void); +#else +DECLINLINE(void) ASMInvalidateInternalCaches(void) +{ +# if RT_INLINE_ASM_GNU_STYLE + __asm__ __volatile__("invd"); +# else + __asm + { + invd + } +# endif +} +#endif + + +/** + * Memory load/store fence, waits for any pending writes and reads to complete. + * Requires the X86_CPUID_FEATURE_EDX_SSE2 CPUID bit set. + */ +DECLINLINE(void) ASMMemoryFenceSSE2(void) +{ +#if RT_INLINE_ASM_GNU_STYLE + __asm__ __volatile__ (".byte 0x0f,0xae,0xf0\n\t"); +#elif RT_INLINE_ASM_USES_INTRIN + _mm_mfence(); +#else + __asm + { + _emit 0x0f + _emit 0xae + _emit 0xf0 + } +#endif +} + + +/** + * Memory store fence, waits for any writes to complete. + * Requires the X86_CPUID_FEATURE_EDX_SSE CPUID bit set. + */ +DECLINLINE(void) ASMWriteFenceSSE(void) +{ +#if RT_INLINE_ASM_GNU_STYLE + __asm__ __volatile__ (".byte 0x0f,0xae,0xf8\n\t"); +#elif RT_INLINE_ASM_USES_INTRIN + _mm_sfence(); +#else + __asm + { + _emit 0x0f + _emit 0xae + _emit 0xf8 + } +#endif +} + + +/** + * Memory load fence, waits for any pending reads to complete. + * Requires the X86_CPUID_FEATURE_EDX_SSE2 CPUID bit set. + */ +DECLINLINE(void) ASMReadFenceSSE2(void) +{ +#if RT_INLINE_ASM_GNU_STYLE + __asm__ __volatile__ (".byte 0x0f,0xae,0xe8\n\t"); +#elif RT_INLINE_ASM_USES_INTRIN + _mm_lfence(); +#else + __asm + { + _emit 0x0f + _emit 0xae + _emit 0xe8 + } +#endif +} + +#if !defined(_MSC_VER) || !defined(RT_ARCH_AMD64) + +/* + * Clear the AC bit in the EFLAGS register. + * Requires the X86_CPUID_STEXT_FEATURE_EBX_SMAP CPUID bit set. + * Requires to be executed in R0. + */ +DECLINLINE(void) ASMClearAC(void) +{ +#if RT_INLINE_ASM_GNU_STYLE + __asm__ __volatile__ (".byte 0x0f,0x01,0xca\n\t"); +#else + __asm + { + _emit 0x0f + _emit 0x01 + _emit 0xca + } +#endif +} + + +/* + * Set the AC bit in the EFLAGS register. + * Requires the X86_CPUID_STEXT_FEATURE_EBX_SMAP CPUID bit set. + * Requires to be executed in R0. + */ +DECLINLINE(void) ASMSetAC(void) +{ +#if RT_INLINE_ASM_GNU_STYLE + __asm__ __volatile__ (".byte 0x0f,0x01,0xcb\n\t"); +#else + __asm + { + _emit 0x0f + _emit 0x01 + _emit 0xcb + } +#endif +} + +#endif /* !_MSC_VER) || !RT_ARCH_AMD64 */ + +/** @} */ +#endif + --- linux-raspi2-4.2.0.orig/ubuntu/vbox/include/iprt/asm-math.h +++ linux-raspi2-4.2.0/ubuntu/vbox/include/iprt/asm-math.h @@ -0,0 +1,434 @@ +/** @file + * IPRT - Assembly Routines for Optimizing some Integers Math Operations. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + +#ifndef ___iprt_asm_math_h +#define ___iprt_asm_math_h + +#include + +#if defined(_MSC_VER) && RT_INLINE_ASM_USES_INTRIN +# include + /* Emit the intrinsics at all optimization levels. */ +# pragma intrinsic(__emul) +# pragma intrinsic(__emulu) +# ifdef RT_ARCH_AMD64 +# pragma intrinsic(_mul128) +# pragma intrinsic(_umul128) +# endif +#endif + + +/** @defgroup grp_rt_asm_math Interger Math Optimizations + * @ingroup grp_rt_asm + * @{ */ + +/** + * Multiplies two unsigned 32-bit values returning an unsigned 64-bit result. + * + * @returns u32F1 * u32F2. + */ + +#if RT_INLINE_ASM_EXTERNAL && !RT_INLINE_ASM_USES_INTRIN && defined(RT_ARCH_X86) +DECLASM(uint64_t) ASMMult2xU32RetU64(uint32_t u32F1, uint32_t u32F2); +#else +DECLINLINE(uint64_t) ASMMult2xU32RetU64(uint32_t u32F1, uint32_t u32F2) +{ +# ifdef RT_ARCH_X86 + uint64_t u64; +# if RT_INLINE_ASM_GNU_STYLE + __asm__ __volatile__("mull %%edx" + : "=A" (u64) + : "a" (u32F2), "d" (u32F1)); +# elif RT_INLINE_ASM_USES_INTRIN + u64 = __emulu(u32F1, u32F2); +# else + __asm + { + mov edx, [u32F1] + mov eax, [u32F2] + mul edx + mov dword ptr [u64], eax + mov dword ptr [u64 + 4], edx + } +# endif + return u64; +# else /* generic: */ + return (uint64_t)u32F1 * u32F2; +# endif +} +#endif + + +/** + * Multiplies two signed 32-bit values returning a signed 64-bit result. + * + * @returns u32F1 * u32F2. + */ +#if RT_INLINE_ASM_EXTERNAL && !RT_INLINE_ASM_USES_INTRIN && defined(RT_ARCH_X86) +DECLASM(int64_t) ASMMult2xS32RetS64(int32_t i32F1, int32_t i32F2); +#else +DECLINLINE(int64_t) ASMMult2xS32RetS64(int32_t i32F1, int32_t i32F2) +{ +# ifdef RT_ARCH_X86 + int64_t i64; +# if RT_INLINE_ASM_GNU_STYLE + __asm__ __volatile__("imull %%edx" + : "=A" (i64) + : "a" (i32F2), "d" (i32F1)); +# elif RT_INLINE_ASM_USES_INTRIN + i64 = __emul(i32F1, i32F2); +# else + __asm + { + mov edx, [i32F1] + mov eax, [i32F2] + imul edx + mov dword ptr [i64], eax + mov dword ptr [i64 + 4], edx + } +# endif + return i64; +# else /* generic: */ + return (int64_t)i32F1 * i32F2; +# endif +} +#endif + + +#if ARCH_BITS == 64 +DECLINLINE(uint64_t) ASMMult2xU64Ret2xU64(uint64_t u64F1, uint64_t u64F2, uint64_t *pu64ProdHi) +{ +# if defined(RT_ARCH_AMD64) && (RT_INLINE_ASM_GNU_STYLE || RT_INLINE_ASM_USES_INTRIN) +# if RT_INLINE_ASM_GNU_STYLE + uint64_t u64Low, u64High; + __asm__ __volatile__("mulq %%rdx" + : "=a" (u64Low), "=d" (u64High) + : "0" (u64F1), "1" (u64F2)); + *pu64ProdHi = u64High; + return u64Low; +# elif RT_INLINE_ASM_USES_INTRIN + return _umul128(u64F1, u64F2, pu64ProdHi); +# else +# error "hmm" +# endif +# else /* generic: */ + /* + * F1 * F2 = Prod + * -- -- + * ab * cd = b*d + a*d*10 + b*c*10 + a*c*100 + * + * Where a, b, c and d are 'digits', and 10 is max digit + 1. + * + * Our digits are 32-bit wide, so instead of 10 we multiply by 4G. + * Prod = F1.s.Lo*F2.s.Lo + F1.s.Hi*F2.s.Lo*4G + * + F1.s.Lo*F2.s.Hi*4G + F1.s.Hi*F2.s.Hi*4G*4G + */ + RTUINT128U Prod; + RTUINT64U Tmp1; + uint64_t u64Tmp; + RTUINT64U F1, F2; + F1.u = u64F1; + F2.u = u64F2; + + Prod.s.Lo = ASMMult2xU32RetU64(F1.s.Lo, F2.s.Lo); + + Tmp1.u = ASMMult2xU32RetU64(F1.s.Hi, F2.s.Lo); + u64Tmp = (uint64_t)Prod.DWords.dw1 + Tmp1.s.Lo; + Prod.DWords.dw1 = (uint32_t)u64Tmp; + Prod.s.Hi = Tmp1.s.Hi; + Prod.s.Hi += u64Tmp >> 32; /* carry */ + + Tmp1.u = ASMMult2xU32RetU64(F1.s.Lo, F2.s.Hi); + u64Tmp = (uint64_t)Prod.DWords.dw1 + Tmp1.s.Lo; + Prod.DWords.dw1 = (uint32_t)u64Tmp; + u64Tmp >>= 32; /* carry */ + u64Tmp += Prod.DWords.dw2; + u64Tmp += Tmp1.s.Hi; + Prod.DWords.dw2 = (uint32_t)u64Tmp; + Prod.DWords.dw3 += u64Tmp >> 32; /* carry */ + + Prod.s.Hi += ASMMult2xU32RetU64(F1.s.Hi, F2.s.Hi); + *pu64ProdHi = Prod.s.Hi; + return Prod.s.Lo; +# endif +} +#endif + + + +/** + * Divides a 64-bit unsigned by a 32-bit unsigned returning an unsigned 32-bit result. + * + * @returns u64 / u32. + */ +#if RT_INLINE_ASM_EXTERNAL && defined(RT_ARCH_X86) +DECLASM(uint32_t) ASMDivU64ByU32RetU32(uint64_t u64, uint32_t u32); +#else +DECLINLINE(uint32_t) ASMDivU64ByU32RetU32(uint64_t u64, uint32_t u32) +{ +# ifdef RT_ARCH_X86 +# if RT_INLINE_ASM_GNU_STYLE + RTCCUINTREG uDummy; + __asm__ __volatile__("divl %3" + : "=a" (u32), "=d"(uDummy) + : "A" (u64), "r" (u32)); +# else + __asm + { + mov eax, dword ptr [u64] + mov edx, dword ptr [u64 + 4] + mov ecx, [u32] + div ecx + mov [u32], eax + } +# endif + return u32; +# else /* generic: */ + return (uint32_t)(u64 / u32); +# endif +} +#endif + + +/** + * Divides a 64-bit signed by a 32-bit signed returning a signed 32-bit result. + * + * @returns u64 / u32. + */ +#if RT_INLINE_ASM_EXTERNAL && defined(RT_ARCH_X86) +DECLASM(int32_t) ASMDivS64ByS32RetS32(int64_t i64, int32_t i32); +#else +DECLINLINE(int32_t) ASMDivS64ByS32RetS32(int64_t i64, int32_t i32) +{ +# ifdef RT_ARCH_X86 +# if RT_INLINE_ASM_GNU_STYLE + RTCCUINTREG iDummy; + __asm__ __volatile__("idivl %3" + : "=a" (i32), "=d"(iDummy) + : "A" (i64), "r" (i32)); +# else + __asm + { + mov eax, dword ptr [i64] + mov edx, dword ptr [i64 + 4] + mov ecx, [i32] + idiv ecx + mov [i32], eax + } +# endif + return i32; +# else /* generic: */ + return (int32_t)(i64 / i32); +# endif +} +#endif + + +/** + * Performs 64-bit unsigned by a 32-bit unsigned division with a 32-bit unsigned result, + * returning the rest. + * + * @returns u64 % u32. + * + * @remarks It is important that the result is <= UINT32_MAX or we'll overflow and crash. + */ +#if RT_INLINE_ASM_EXTERNAL && defined(RT_ARCH_X86) +DECLASM(uint32_t) ASMModU64ByU32RetU32(uint64_t u64, uint32_t u32); +#else +DECLINLINE(uint32_t) ASMModU64ByU32RetU32(uint64_t u64, uint32_t u32) +{ +# ifdef RT_ARCH_X86 +# if RT_INLINE_ASM_GNU_STYLE + RTCCUINTREG uDummy; + __asm__ __volatile__("divl %3" + : "=a" (uDummy), "=d"(u32) + : "A" (u64), "r" (u32)); +# else + __asm + { + mov eax, dword ptr [u64] + mov edx, dword ptr [u64 + 4] + mov ecx, [u32] + div ecx + mov [u32], edx + } +# endif + return u32; +# else /* generic: */ + return (uint32_t)(u64 % u32); +# endif +} +#endif + + +/** + * Performs 64-bit signed by a 32-bit signed division with a 32-bit signed result, + * returning the rest. + * + * @returns u64 % u32. + * + * @remarks It is important that the result is <= UINT32_MAX or we'll overflow and crash. + */ +#if RT_INLINE_ASM_EXTERNAL && defined(RT_ARCH_X86) +DECLASM(int32_t) ASMModS64ByS32RetS32(int64_t i64, int32_t i32); +#else +DECLINLINE(int32_t) ASMModS64ByS32RetS32(int64_t i64, int32_t i32) +{ +# ifdef RT_ARCH_X86 +# if RT_INLINE_ASM_GNU_STYLE + RTCCUINTREG iDummy; + __asm__ __volatile__("idivl %3" + : "=a" (iDummy), "=d"(i32) + : "A" (i64), "r" (i32)); +# else + __asm + { + mov eax, dword ptr [i64] + mov edx, dword ptr [i64 + 4] + mov ecx, [i32] + idiv ecx + mov [i32], edx + } +# endif + return i32; +# else /* generic: */ + return (int32_t)(i64 % i32); +# endif +} +#endif + + +/** + * Multiple a 32-bit by a 32-bit integer and divide the result by a 32-bit integer + * using a 64 bit intermediate result. + * + * @returns (u32A * u32B) / u32C. + * @param u32A The 32-bit value (A). + * @param u32B The 32-bit value to multiple by A. + * @param u32C The 32-bit value to divide A*B by. + * + * @remarks Architecture specific. + * @remarks Make sure the result won't ever exceed 32-bit, because hardware + * exception may be raised if it does. + * @remarks On x86 this may be used to avoid dragging in 64-bit builtin + * arithmetics functions. + */ +#if RT_INLINE_ASM_EXTERNAL && (defined(RT_ARCH_AMD64) || defined(RT_ARCH_X86)) +DECLASM(uint32_t) ASMMultU32ByU32DivByU32(uint32_t u32A, uint32_t u32B, uint32_t u32C); +#else +DECLINLINE(uint32_t) ASMMultU32ByU32DivByU32(uint32_t u32A, uint32_t u32B, uint32_t u32C) +{ +# if RT_INLINE_ASM_GNU_STYLE && (defined(RT_ARCH_AMD64) || defined(RT_ARCH_X86)) + uint32_t u32Result, u32Spill; + __asm__ __volatile__("mull %2\n\t" + "divl %3\n\t" + : "=&a" (u32Result), + "=&d" (u32Spill) + : "r" (u32B), + "r" (u32C), + "0" (u32A)); + return u32Result; +# else + return (uint32_t)(((uint64_t)u32A * u32B) / u32C); +# endif +} +#endif + + +/** + * Multiple a 64-bit by a 32-bit integer and divide the result by a 32-bit integer + * using a 96 bit intermediate result. + * + * @returns (u64A * u32B) / u32C. + * @param u64A The 64-bit value. + * @param u32B The 32-bit value to multiple by A. + * @param u32C The 32-bit value to divide A*B by. + * + * @remarks Architecture specific. + * @remarks Make sure the result won't ever exceed 64-bit, because hardware + * exception may be raised if it does. + * @remarks On x86 this may be used to avoid dragging in 64-bit builtin + * arithmetics function. + */ +#if RT_INLINE_ASM_EXTERNAL || !defined(__GNUC__) || (!defined(RT_ARCH_AMD64) && !defined(RT_ARCH_X86)) +DECLASM(uint64_t) ASMMultU64ByU32DivByU32(uint64_t u64A, uint32_t u32B, uint32_t u32C); +#else +DECLINLINE(uint64_t) ASMMultU64ByU32DivByU32(uint64_t u64A, uint32_t u32B, uint32_t u32C) +{ +# if RT_INLINE_ASM_GNU_STYLE +# ifdef RT_ARCH_AMD64 + uint64_t u64Result, u64Spill; + __asm__ __volatile__("mulq %2\n\t" + "divq %3\n\t" + : "=&a" (u64Result), + "=&d" (u64Spill) + : "r" ((uint64_t)u32B), + "r" ((uint64_t)u32C), + "0" (u64A)); + return u64Result; +# else + uint32_t u32Dummy; + uint64_t u64Result; + __asm__ __volatile__("mull %%ecx \n\t" /* eax = u64Lo.lo = (u64A.lo * u32B).lo + edx = u64Lo.hi = (u64A.lo * u32B).hi */ + "xchg %%eax,%%esi \n\t" /* esi = u64Lo.lo + eax = u64A.hi */ + "xchg %%edx,%%edi \n\t" /* edi = u64Low.hi + edx = u32C */ + "xchg %%edx,%%ecx \n\t" /* ecx = u32C + edx = u32B */ + "mull %%edx \n\t" /* eax = u64Hi.lo = (u64A.hi * u32B).lo + edx = u64Hi.hi = (u64A.hi * u32B).hi */ + "addl %%edi,%%eax \n\t" /* u64Hi.lo += u64Lo.hi */ + "adcl $0,%%edx \n\t" /* u64Hi.hi += carry */ + "divl %%ecx \n\t" /* eax = u64Hi / u32C + edx = u64Hi % u32C */ + "movl %%eax,%%edi \n\t" /* edi = u64Result.hi = u64Hi / u32C */ + "movl %%esi,%%eax \n\t" /* eax = u64Lo.lo */ + "divl %%ecx \n\t" /* u64Result.lo */ + "movl %%edi,%%edx \n\t" /* u64Result.hi */ + : "=A"(u64Result), "=c"(u32Dummy), + "=S"(u32Dummy), "=D"(u32Dummy) + : "a"((uint32_t)u64A), + "S"((uint32_t)(u64A >> 32)), + "c"(u32B), + "D"(u32C)); + return u64Result; +# endif +# else + RTUINT64U u; + uint64_t u64Lo = (uint64_t)(u64A & 0xffffffff) * u32B; + uint64_t u64Hi = (uint64_t)(u64A >> 32) * u32B; + u64Hi += (u64Lo >> 32); + u.s.Hi = (uint32_t)(u64Hi / u32C); + u.s.Lo = (uint32_t)((((u64Hi % u32C) << 32) + (u64Lo & 0xffffffff)) / u32C); + return u.u; +# endif +} +#endif + +/** @} */ +#endif + --- linux-raspi2-4.2.0.orig/ubuntu/vbox/include/iprt/asm.h +++ linux-raspi2-4.2.0/ubuntu/vbox/include/iprt/asm.h @@ -0,0 +1,5024 @@ +/** @file + * IPRT - Assembly Functions. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + +#ifndef ___iprt_asm_h +#define ___iprt_asm_h + +#include +#include +#include +/** @def RT_INLINE_ASM_USES_INTRIN + * Defined as 1 if we're using a _MSC_VER 1400. + * Otherwise defined as 0. + */ + +/* Solaris 10 header ugliness */ +#ifdef u +# undef u +#endif + +#if defined(_MSC_VER) && RT_INLINE_ASM_USES_INTRIN +# include + /* Emit the intrinsics at all optimization levels. */ +# pragma intrinsic(_ReadWriteBarrier) +# pragma intrinsic(__cpuid) +# pragma intrinsic(__stosd) +# pragma intrinsic(__stosw) +# pragma intrinsic(__stosb) +# pragma intrinsic(_BitScanForward) +# pragma intrinsic(_BitScanReverse) +# pragma intrinsic(_bittest) +# pragma intrinsic(_bittestandset) +# pragma intrinsic(_bittestandreset) +# pragma intrinsic(_bittestandcomplement) +# pragma intrinsic(_byteswap_ushort) +# pragma intrinsic(_byteswap_ulong) +# pragma intrinsic(_interlockedbittestandset) +# pragma intrinsic(_interlockedbittestandreset) +# pragma intrinsic(_InterlockedAnd) +# pragma intrinsic(_InterlockedOr) +# pragma intrinsic(_InterlockedIncrement) +# pragma intrinsic(_InterlockedDecrement) +# pragma intrinsic(_InterlockedExchange) +# pragma intrinsic(_InterlockedExchangeAdd) +# pragma intrinsic(_InterlockedCompareExchange) +# pragma intrinsic(_InterlockedCompareExchange64) +# pragma intrinsic(_rotl) +# pragma intrinsic(_rotr) +# pragma intrinsic(_rotl64) +# pragma intrinsic(_rotr64) +# ifdef RT_ARCH_AMD64 +# pragma intrinsic(__stosq) +# pragma intrinsic(_byteswap_uint64) +# pragma intrinsic(_InterlockedExchange64) +# pragma intrinsic(_InterlockedExchangeAdd64) +# pragma intrinsic(_InterlockedAnd64) +# pragma intrinsic(_InterlockedOr64) +# pragma intrinsic(_InterlockedIncrement64) +# pragma intrinsic(_InterlockedDecrement64) +# endif +#endif + + +/** @defgroup grp_rt_asm ASM - Assembly Routines + * @ingroup grp_rt + * + * @remarks The difference between ordered and unordered atomic operations are that + * the former will complete outstanding reads and writes before continuing + * while the latter doesn't make any promises about the order. Ordered + * operations doesn't, it seems, make any 100% promise wrt to whether + * the operation will complete before any subsequent memory access. + * (please, correct if wrong.) + * + * ASMAtomicSomething operations are all ordered, while ASMAtomicUoSomething + * are unordered (note the Uo). + * + * @remarks Some remarks about __volatile__: Without this keyword gcc is allowed to reorder + * or even optimize assembler instructions away. For instance, in the following code + * the second rdmsr instruction is optimized away because gcc treats that instruction + * as deterministic: + * + * @code + * static inline uint64_t rdmsr_low(int idx) + * { + * uint32_t low; + * __asm__ ("rdmsr" : "=a"(low) : "c"(idx) : "edx"); + * } + * ... + * uint32_t msr1 = rdmsr_low(1); + * foo(msr1); + * msr1 = rdmsr_low(1); + * bar(msr1); + * @endcode + * + * The input parameter of rdmsr_low is the same for both calls and therefore gcc will + * use the result of the first call as input parameter for bar() as well. For rdmsr this + * is not acceptable as this instruction is _not_ deterministic. This applies to reading + * machine status information in general. + * + * @{ + */ + + +/** @def RT_INLINE_ASM_GCC_4_3_X_X86 + * Used to work around some 4.3.x register allocation issues in this version of + * the compiler. So far this workaround is still required for 4.4 and 4.5. */ +#ifdef __GNUC__ +# define RT_INLINE_ASM_GCC_4_3_X_X86 (__GNUC__ == 4 && __GNUC_MINOR__ >= 3 && defined(__i386__)) +#endif +#ifndef RT_INLINE_ASM_GCC_4_3_X_X86 +# define RT_INLINE_ASM_GCC_4_3_X_X86 0 +#endif + +/** @def RT_INLINE_DONT_USE_CMPXCHG8B + * i686-apple-darwin9-gcc-4.0.1 (GCC) 4.0.1 (Apple Inc. build 5493) screws up + * RTSemRWRequestWrite semsemrw-lockless-generic.cpp in release builds. PIC + * mode, x86. + * + * Some gcc 4.3.x versions may have register allocation issues with cmpxchg8b + * when in PIC mode on x86. + */ +#ifndef RT_INLINE_DONT_MIX_CMPXCHG8B_AND_PIC +# ifdef DOXYGEN_RUNNING +# define RT_INLINE_DONT_MIX_CMPXCHG8B_AND_PIC 1 +# else +# define RT_INLINE_DONT_MIX_CMPXCHG8B_AND_PIC \ + ( (defined(PIC) || defined(__PIC__)) \ + && defined(RT_ARCH_X86) \ + && ( RT_INLINE_ASM_GCC_4_3_X_X86 \ + || defined(RT_OS_DARWIN)) ) +# endif +#endif + + +/** @def ASMReturnAddress + * Gets the return address of the current (or calling if you like) function or method. + */ +#ifdef _MSC_VER +# ifdef __cplusplus +extern "C" +# endif +void * _ReturnAddress(void); +# pragma intrinsic(_ReturnAddress) +# define ASMReturnAddress() _ReturnAddress() +#elif defined(__GNUC__) || defined(DOXYGEN_RUNNING) +# define ASMReturnAddress() __builtin_return_address(0) +#else +# error "Unsupported compiler." +#endif + + +/** + * Compiler memory barrier. + * + * Ensure that the compiler does not use any cached (register/tmp stack) memory + * values or any outstanding writes when returning from this function. + * + * This function must be used if non-volatile data is modified by a + * device or the VMM. Typical cases are port access, MMIO access, + * trapping instruction, etc. + */ +#if RT_INLINE_ASM_GNU_STYLE +# define ASMCompilerBarrier() do { __asm__ __volatile__("" : : : "memory"); } while (0) +#elif RT_INLINE_ASM_USES_INTRIN +# define ASMCompilerBarrier() do { _ReadWriteBarrier(); } while (0) +#else /* 2003 should have _ReadWriteBarrier() but I guess we're at 2002 level then... */ +DECLINLINE(void) ASMCompilerBarrier(void) +{ + __asm + { + } +} +#endif + + +/** @def ASMBreakpoint + * Debugger Breakpoint. + * @deprecated Use RT_BREAKPOINT instead. + * @internal + */ +#define ASMBreakpoint() RT_BREAKPOINT() + + +/** + * Spinloop hint for platforms that have these, empty function on the other + * platforms. + * + * x86 & AMD64: The PAUSE variant of NOP for helping hyperthreaded CPUs detecting + * spin locks. + */ +#if RT_INLINE_ASM_EXTERNAL && (defined(RT_ARCH_AMD64) || defined(RT_ARCH_X86)) +DECLASM(void) ASMNopPause(void); +#else +DECLINLINE(void) ASMNopPause(void) +{ +# if defined(RT_ARCH_AMD64) || defined(RT_ARCH_X86) +# if RT_INLINE_ASM_GNU_STYLE + __asm__ __volatile__(".byte 0xf3,0x90\n\t"); +# else + __asm { + _emit 0f3h + _emit 090h + } +# endif +# else + /* dummy */ +# endif +} +#endif + + +/** + * Atomically Exchange an unsigned 8-bit value, ordered. + * + * @returns Current *pu8 value + * @param pu8 Pointer to the 8-bit variable to update. + * @param u8 The 8-bit value to assign to *pu8. + */ +#if RT_INLINE_ASM_EXTERNAL +DECLASM(uint8_t) ASMAtomicXchgU8(volatile uint8_t *pu8, uint8_t u8); +#else +DECLINLINE(uint8_t) ASMAtomicXchgU8(volatile uint8_t *pu8, uint8_t u8) +{ +# if RT_INLINE_ASM_GNU_STYLE + __asm__ __volatile__("xchgb %0, %1\n\t" + : "=m" (*pu8), + "=q" (u8) /* =r - busted on g++ (GCC) 3.4.4 20050721 (Red Hat 3.4.4-2) */ + : "1" (u8), + "m" (*pu8)); +# else + __asm + { +# ifdef RT_ARCH_AMD64 + mov rdx, [pu8] + mov al, [u8] + xchg [rdx], al + mov [u8], al +# else + mov edx, [pu8] + mov al, [u8] + xchg [edx], al + mov [u8], al +# endif + } +# endif + return u8; +} +#endif + + +/** + * Atomically Exchange a signed 8-bit value, ordered. + * + * @returns Current *pu8 value + * @param pi8 Pointer to the 8-bit variable to update. + * @param i8 The 8-bit value to assign to *pi8. + */ +DECLINLINE(int8_t) ASMAtomicXchgS8(volatile int8_t *pi8, int8_t i8) +{ + return (int8_t)ASMAtomicXchgU8((volatile uint8_t *)pi8, (uint8_t)i8); +} + + +/** + * Atomically Exchange a bool value, ordered. + * + * @returns Current *pf value + * @param pf Pointer to the 8-bit variable to update. + * @param f The 8-bit value to assign to *pi8. + */ +DECLINLINE(bool) ASMAtomicXchgBool(volatile bool *pf, bool f) +{ +#ifdef _MSC_VER + return !!ASMAtomicXchgU8((volatile uint8_t *)pf, (uint8_t)f); +#else + return (bool)ASMAtomicXchgU8((volatile uint8_t *)pf, (uint8_t)f); +#endif +} + + +/** + * Atomically Exchange an unsigned 16-bit value, ordered. + * + * @returns Current *pu16 value + * @param pu16 Pointer to the 16-bit variable to update. + * @param u16 The 16-bit value to assign to *pu16. + */ +#if RT_INLINE_ASM_EXTERNAL +DECLASM(uint16_t) ASMAtomicXchgU16(volatile uint16_t *pu16, uint16_t u16); +#else +DECLINLINE(uint16_t) ASMAtomicXchgU16(volatile uint16_t *pu16, uint16_t u16) +{ +# if RT_INLINE_ASM_GNU_STYLE + __asm__ __volatile__("xchgw %0, %1\n\t" + : "=m" (*pu16), + "=r" (u16) + : "1" (u16), + "m" (*pu16)); +# else + __asm + { +# ifdef RT_ARCH_AMD64 + mov rdx, [pu16] + mov ax, [u16] + xchg [rdx], ax + mov [u16], ax +# else + mov edx, [pu16] + mov ax, [u16] + xchg [edx], ax + mov [u16], ax +# endif + } +# endif + return u16; +} +#endif + + +/** + * Atomically Exchange a signed 16-bit value, ordered. + * + * @returns Current *pu16 value + * @param pi16 Pointer to the 16-bit variable to update. + * @param i16 The 16-bit value to assign to *pi16. + */ +DECLINLINE(int16_t) ASMAtomicXchgS16(volatile int16_t *pi16, int16_t i16) +{ + return (int16_t)ASMAtomicXchgU16((volatile uint16_t *)pi16, (uint16_t)i16); +} + + +/** + * Atomically Exchange an unsigned 32-bit value, ordered. + * + * @returns Current *pu32 value + * @param pu32 Pointer to the 32-bit variable to update. + * @param u32 The 32-bit value to assign to *pu32. + */ +#if RT_INLINE_ASM_EXTERNAL && !RT_INLINE_ASM_USES_INTRIN +DECLASM(uint32_t) ASMAtomicXchgU32(volatile uint32_t *pu32, uint32_t u32); +#else +DECLINLINE(uint32_t) ASMAtomicXchgU32(volatile uint32_t *pu32, uint32_t u32) +{ +# if RT_INLINE_ASM_GNU_STYLE + __asm__ __volatile__("xchgl %0, %1\n\t" + : "=m" (*pu32), + "=r" (u32) + : "1" (u32), + "m" (*pu32)); + +# elif RT_INLINE_ASM_USES_INTRIN + u32 = _InterlockedExchange((long *)pu32, u32); + +# else + __asm + { +# ifdef RT_ARCH_AMD64 + mov rdx, [pu32] + mov eax, u32 + xchg [rdx], eax + mov [u32], eax +# else + mov edx, [pu32] + mov eax, u32 + xchg [edx], eax + mov [u32], eax +# endif + } +# endif + return u32; +} +#endif + + +/** + * Atomically Exchange a signed 32-bit value, ordered. + * + * @returns Current *pu32 value + * @param pi32 Pointer to the 32-bit variable to update. + * @param i32 The 32-bit value to assign to *pi32. + */ +DECLINLINE(int32_t) ASMAtomicXchgS32(volatile int32_t *pi32, int32_t i32) +{ + return (int32_t)ASMAtomicXchgU32((volatile uint32_t *)pi32, (uint32_t)i32); +} + + +/** + * Atomically Exchange an unsigned 64-bit value, ordered. + * + * @returns Current *pu64 value + * @param pu64 Pointer to the 64-bit variable to update. + * @param u64 The 64-bit value to assign to *pu64. + */ +#if (RT_INLINE_ASM_EXTERNAL && !RT_INLINE_ASM_USES_INTRIN) \ + || RT_INLINE_DONT_MIX_CMPXCHG8B_AND_PIC +DECLASM(uint64_t) ASMAtomicXchgU64(volatile uint64_t *pu64, uint64_t u64); +#else +DECLINLINE(uint64_t) ASMAtomicXchgU64(volatile uint64_t *pu64, uint64_t u64) +{ +# if defined(RT_ARCH_AMD64) +# if RT_INLINE_ASM_USES_INTRIN + u64 = _InterlockedExchange64((__int64 *)pu64, u64); + +# elif RT_INLINE_ASM_GNU_STYLE + __asm__ __volatile__("xchgq %0, %1\n\t" + : "=m" (*pu64), + "=r" (u64) + : "1" (u64), + "m" (*pu64)); +# else + __asm + { + mov rdx, [pu64] + mov rax, [u64] + xchg [rdx], rax + mov [u64], rax + } +# endif +# else /* !RT_ARCH_AMD64 */ +# if RT_INLINE_ASM_GNU_STYLE +# if defined(PIC) || defined(__PIC__) + uint32_t u32EBX = (uint32_t)u64; + __asm__ __volatile__(/*"xchgl %%esi, %5\n\t"*/ + "xchgl %%ebx, %3\n\t" + "1:\n\t" + "lock; cmpxchg8b (%5)\n\t" + "jnz 1b\n\t" + "movl %3, %%ebx\n\t" + /*"xchgl %%esi, %5\n\t"*/ + : "=A" (u64), + "=m" (*pu64) + : "0" (*pu64), + "m" ( u32EBX ), + "c" ( (uint32_t)(u64 >> 32) ), + "S" (pu64)); +# else /* !PIC */ + __asm__ __volatile__("1:\n\t" + "lock; cmpxchg8b %1\n\t" + "jnz 1b\n\t" + : "=A" (u64), + "=m" (*pu64) + : "0" (*pu64), + "b" ( (uint32_t)u64 ), + "c" ( (uint32_t)(u64 >> 32) )); +# endif +# else + __asm + { + mov ebx, dword ptr [u64] + mov ecx, dword ptr [u64 + 4] + mov edi, pu64 + mov eax, dword ptr [edi] + mov edx, dword ptr [edi + 4] + retry: + lock cmpxchg8b [edi] + jnz retry + mov dword ptr [u64], eax + mov dword ptr [u64 + 4], edx + } +# endif +# endif /* !RT_ARCH_AMD64 */ + return u64; +} +#endif + + +/** + * Atomically Exchange an signed 64-bit value, ordered. + * + * @returns Current *pi64 value + * @param pi64 Pointer to the 64-bit variable to update. + * @param i64 The 64-bit value to assign to *pi64. + */ +DECLINLINE(int64_t) ASMAtomicXchgS64(volatile int64_t *pi64, int64_t i64) +{ + return (int64_t)ASMAtomicXchgU64((volatile uint64_t *)pi64, (uint64_t)i64); +} + + +/** + * Atomically Exchange a pointer value, ordered. + * + * @returns Current *ppv value + * @param ppv Pointer to the pointer variable to update. + * @param pv The pointer value to assign to *ppv. + */ +DECLINLINE(void *) ASMAtomicXchgPtr(void * volatile *ppv, const void *pv) +{ +#if ARCH_BITS == 32 + return (void *)ASMAtomicXchgU32((volatile uint32_t *)(void *)ppv, (uint32_t)pv); +#elif ARCH_BITS == 64 + return (void *)ASMAtomicXchgU64((volatile uint64_t *)(void *)ppv, (uint64_t)pv); +#else +# error "ARCH_BITS is bogus" +#endif +} + + +/** + * Convenience macro for avoiding the annoying casting with ASMAtomicXchgPtr. + * + * @returns Current *pv value + * @param ppv Pointer to the pointer variable to update. + * @param pv The pointer value to assign to *ppv. + * @param Type The type of *ppv, sans volatile. + */ +#ifdef __GNUC__ +# define ASMAtomicXchgPtrT(ppv, pv, Type) \ + __extension__ \ + ({\ + __typeof__(*(ppv)) volatile * const ppvTypeChecked = (ppv); \ + Type const pvTypeChecked = (pv); \ + Type pvTypeCheckedRet = (__typeof__(*(ppv))) ASMAtomicXchgPtr((void * volatile *)ppvTypeChecked, (void *)pvTypeChecked); \ + pvTypeCheckedRet; \ + }) +#else +# define ASMAtomicXchgPtrT(ppv, pv, Type) \ + (Type)ASMAtomicXchgPtr((void * volatile *)(ppv), (void *)(pv)) +#endif + + +/** + * Atomically Exchange a raw-mode context pointer value, ordered. + * + * @returns Current *ppv value + * @param ppvRC Pointer to the pointer variable to update. + * @param pvRC The pointer value to assign to *ppv. + */ +DECLINLINE(RTRCPTR) ASMAtomicXchgRCPtr(RTRCPTR volatile *ppvRC, RTRCPTR pvRC) +{ + return (RTRCPTR)ASMAtomicXchgU32((uint32_t volatile *)(void *)ppvRC, (uint32_t)pvRC); +} + + +/** + * Atomically Exchange a ring-0 pointer value, ordered. + * + * @returns Current *ppv value + * @param ppvR0 Pointer to the pointer variable to update. + * @param pvR0 The pointer value to assign to *ppv. + */ +DECLINLINE(RTR0PTR) ASMAtomicXchgR0Ptr(RTR0PTR volatile *ppvR0, RTR0PTR pvR0) +{ +#if R0_ARCH_BITS == 32 + return (RTR0PTR)ASMAtomicXchgU32((volatile uint32_t *)(void *)ppvR0, (uint32_t)pvR0); +#elif R0_ARCH_BITS == 64 + return (RTR0PTR)ASMAtomicXchgU64((volatile uint64_t *)(void *)ppvR0, (uint64_t)pvR0); +#else +# error "R0_ARCH_BITS is bogus" +#endif +} + + +/** + * Atomically Exchange a ring-3 pointer value, ordered. + * + * @returns Current *ppv value + * @param ppvR3 Pointer to the pointer variable to update. + * @param pvR3 The pointer value to assign to *ppv. + */ +DECLINLINE(RTR3PTR) ASMAtomicXchgR3Ptr(RTR3PTR volatile *ppvR3, RTR3PTR pvR3) +{ +#if R3_ARCH_BITS == 32 + return (RTR3PTR)ASMAtomicXchgU32((volatile uint32_t *)(void *)ppvR3, (uint32_t)pvR3); +#elif R3_ARCH_BITS == 64 + return (RTR3PTR)ASMAtomicXchgU64((volatile uint64_t *)(void *)ppvR3, (uint64_t)pvR3); +#else +# error "R3_ARCH_BITS is bogus" +#endif +} + + +/** @def ASMAtomicXchgHandle + * Atomically Exchange a typical IPRT handle value, ordered. + * + * @param ph Pointer to the value to update. + * @param hNew The new value to assigned to *pu. + * @param phRes Where to store the current *ph value. + * + * @remarks This doesn't currently work for all handles (like RTFILE). + */ +#if HC_ARCH_BITS == 32 +# define ASMAtomicXchgHandle(ph, hNew, phRes) \ + do { \ + AssertCompile(sizeof(*(ph)) == sizeof(uint32_t)); \ + AssertCompile(sizeof(*(phRes)) == sizeof(uint32_t)); \ + *(uint32_t *)(phRes) = ASMAtomicXchgU32((uint32_t volatile *)(ph), (const uint32_t)(hNew)); \ + } while (0) +#elif HC_ARCH_BITS == 64 +# define ASMAtomicXchgHandle(ph, hNew, phRes) \ + do { \ + AssertCompile(sizeof(*(ph)) == sizeof(uint64_t)); \ + AssertCompile(sizeof(*(phRes)) == sizeof(uint64_t)); \ + *(uint64_t *)(phRes) = ASMAtomicXchgU64((uint64_t volatile *)(ph), (const uint64_t)(hNew)); \ + } while (0) +#else +# error HC_ARCH_BITS +#endif + + +/** + * Atomically Exchange a value which size might differ + * between platforms or compilers, ordered. + * + * @param pu Pointer to the variable to update. + * @param uNew The value to assign to *pu. + * @todo This is busted as its missing the result argument. + */ +#define ASMAtomicXchgSize(pu, uNew) \ + do { \ + switch (sizeof(*(pu))) { \ + case 1: ASMAtomicXchgU8((volatile uint8_t *)(void *)(pu), (uint8_t)(uNew)); break; \ + case 2: ASMAtomicXchgU16((volatile uint16_t *)(void *)(pu), (uint16_t)(uNew)); break; \ + case 4: ASMAtomicXchgU32((volatile uint32_t *)(void *)(pu), (uint32_t)(uNew)); break; \ + case 8: ASMAtomicXchgU64((volatile uint64_t *)(void *)(pu), (uint64_t)(uNew)); break; \ + default: AssertMsgFailed(("ASMAtomicXchgSize: size %d is not supported\n", sizeof(*(pu)))); \ + } \ + } while (0) + +/** + * Atomically Exchange a value which size might differ + * between platforms or compilers, ordered. + * + * @param pu Pointer to the variable to update. + * @param uNew The value to assign to *pu. + * @param puRes Where to store the current *pu value. + */ +#define ASMAtomicXchgSizeCorrect(pu, uNew, puRes) \ + do { \ + switch (sizeof(*(pu))) { \ + case 1: *(uint8_t *)(puRes) = ASMAtomicXchgU8((volatile uint8_t *)(void *)(pu), (uint8_t)(uNew)); break; \ + case 2: *(uint16_t *)(puRes) = ASMAtomicXchgU16((volatile uint16_t *)(void *)(pu), (uint16_t)(uNew)); break; \ + case 4: *(uint32_t *)(puRes) = ASMAtomicXchgU32((volatile uint32_t *)(void *)(pu), (uint32_t)(uNew)); break; \ + case 8: *(uint64_t *)(puRes) = ASMAtomicXchgU64((volatile uint64_t *)(void *)(pu), (uint64_t)(uNew)); break; \ + default: AssertMsgFailed(("ASMAtomicXchgSize: size %d is not supported\n", sizeof(*(pu)))); \ + } \ + } while (0) + + + +/** + * Atomically Compare and Exchange an unsigned 8-bit value, ordered. + * + * @returns true if xchg was done. + * @returns false if xchg wasn't done. + * + * @param pu8 Pointer to the value to update. + * @param u8New The new value to assigned to *pu8. + * @param u8Old The old value to *pu8 compare with. + */ +#if RT_INLINE_ASM_EXTERNAL || !RT_INLINE_ASM_GNU_STYLE +DECLASM(bool) ASMAtomicCmpXchgU8(volatile uint8_t *pu8, const uint8_t u8New, const uint8_t u8Old); +#else +DECLINLINE(bool) ASMAtomicCmpXchgU8(volatile uint8_t *pu8, const uint8_t u8New, uint8_t u8Old) +{ + uint8_t u8Ret; + __asm__ __volatile__("lock; cmpxchgb %3, %0\n\t" + "setz %1\n\t" + : "=m" (*pu8), + "=qm" (u8Ret), + "=a" (u8Old) + : "q" (u8New), + "2" (u8Old), + "m" (*pu8)); + return (bool)u8Ret; +} +#endif + + +/** + * Atomically Compare and Exchange a signed 8-bit value, ordered. + * + * @returns true if xchg was done. + * @returns false if xchg wasn't done. + * + * @param pi8 Pointer to the value to update. + * @param i8New The new value to assigned to *pi8. + * @param i8Old The old value to *pi8 compare with. + */ +DECLINLINE(bool) ASMAtomicCmpXchgS8(volatile int8_t *pi8, const int8_t i8New, const int8_t i8Old) +{ + return ASMAtomicCmpXchgU8((volatile uint8_t *)pi8, (const uint8_t)i8New, (const uint8_t)i8Old); +} + + +/** + * Atomically Compare and Exchange a bool value, ordered. + * + * @returns true if xchg was done. + * @returns false if xchg wasn't done. + * + * @param pf Pointer to the value to update. + * @param fNew The new value to assigned to *pf. + * @param fOld The old value to *pf compare with. + */ +DECLINLINE(bool) ASMAtomicCmpXchgBool(volatile bool *pf, const bool fNew, const bool fOld) +{ + return ASMAtomicCmpXchgU8((volatile uint8_t *)pf, (const uint8_t)fNew, (const uint8_t)fOld); +} + + +/** + * Atomically Compare and Exchange an unsigned 32-bit value, ordered. + * + * @returns true if xchg was done. + * @returns false if xchg wasn't done. + * + * @param pu32 Pointer to the value to update. + * @param u32New The new value to assigned to *pu32. + * @param u32Old The old value to *pu32 compare with. + */ +#if RT_INLINE_ASM_EXTERNAL && !RT_INLINE_ASM_USES_INTRIN +DECLASM(bool) ASMAtomicCmpXchgU32(volatile uint32_t *pu32, const uint32_t u32New, const uint32_t u32Old); +#else +DECLINLINE(bool) ASMAtomicCmpXchgU32(volatile uint32_t *pu32, const uint32_t u32New, uint32_t u32Old) +{ +# if RT_INLINE_ASM_GNU_STYLE + uint8_t u8Ret; + __asm__ __volatile__("lock; cmpxchgl %3, %0\n\t" + "setz %1\n\t" + : "=m" (*pu32), + "=qm" (u8Ret), + "=a" (u32Old) + : "r" (u32New), + "2" (u32Old), + "m" (*pu32)); + return (bool)u8Ret; + +# elif RT_INLINE_ASM_USES_INTRIN + return (uint32_t)_InterlockedCompareExchange((long *)pu32, u32New, u32Old) == u32Old; + +# else + uint32_t u32Ret; + __asm + { +# ifdef RT_ARCH_AMD64 + mov rdx, [pu32] +# else + mov edx, [pu32] +# endif + mov eax, [u32Old] + mov ecx, [u32New] +# ifdef RT_ARCH_AMD64 + lock cmpxchg [rdx], ecx +# else + lock cmpxchg [edx], ecx +# endif + setz al + movzx eax, al + mov [u32Ret], eax + } + return !!u32Ret; +# endif +} +#endif + + +/** + * Atomically Compare and Exchange a signed 32-bit value, ordered. + * + * @returns true if xchg was done. + * @returns false if xchg wasn't done. + * + * @param pi32 Pointer to the value to update. + * @param i32New The new value to assigned to *pi32. + * @param i32Old The old value to *pi32 compare with. + */ +DECLINLINE(bool) ASMAtomicCmpXchgS32(volatile int32_t *pi32, const int32_t i32New, const int32_t i32Old) +{ + return ASMAtomicCmpXchgU32((volatile uint32_t *)pi32, (uint32_t)i32New, (uint32_t)i32Old); +} + + +/** + * Atomically Compare and exchange an unsigned 64-bit value, ordered. + * + * @returns true if xchg was done. + * @returns false if xchg wasn't done. + * + * @param pu64 Pointer to the 64-bit variable to update. + * @param u64New The 64-bit value to assign to *pu64. + * @param u64Old The value to compare with. + */ +#if (RT_INLINE_ASM_EXTERNAL && !RT_INLINE_ASM_USES_INTRIN) \ + || RT_INLINE_DONT_MIX_CMPXCHG8B_AND_PIC +DECLASM(bool) ASMAtomicCmpXchgU64(volatile uint64_t *pu64, const uint64_t u64New, const uint64_t u64Old); +#else +DECLINLINE(bool) ASMAtomicCmpXchgU64(volatile uint64_t *pu64, uint64_t u64New, uint64_t u64Old) +{ +# if RT_INLINE_ASM_USES_INTRIN + return (uint64_t)_InterlockedCompareExchange64((__int64 *)pu64, u64New, u64Old) == u64Old; + +# elif defined(RT_ARCH_AMD64) +# if RT_INLINE_ASM_GNU_STYLE + uint8_t u8Ret; + __asm__ __volatile__("lock; cmpxchgq %3, %0\n\t" + "setz %1\n\t" + : "=m" (*pu64), + "=qm" (u8Ret), + "=a" (u64Old) + : "r" (u64New), + "2" (u64Old), + "m" (*pu64)); + return (bool)u8Ret; +# else + bool fRet; + __asm + { + mov rdx, [pu32] + mov rax, [u64Old] + mov rcx, [u64New] + lock cmpxchg [rdx], rcx + setz al + mov [fRet], al + } + return fRet; +# endif +# else /* !RT_ARCH_AMD64 */ + uint32_t u32Ret; +# if RT_INLINE_ASM_GNU_STYLE +# if defined(PIC) || defined(__PIC__) + uint32_t u32EBX = (uint32_t)u64New; + uint32_t u32Spill; + __asm__ __volatile__("xchgl %%ebx, %4\n\t" + "lock; cmpxchg8b (%6)\n\t" + "setz %%al\n\t" + "movl %4, %%ebx\n\t" + "movzbl %%al, %%eax\n\t" + : "=a" (u32Ret), + "=d" (u32Spill), +# if (__GNUC__ * 100 + __GNUC_MINOR__) >= 403 + "+m" (*pu64) +# else + "=m" (*pu64) +# endif + : "A" (u64Old), + "m" ( u32EBX ), + "c" ( (uint32_t)(u64New >> 32) ), + "S" (pu64)); +# else /* !PIC */ + uint32_t u32Spill; + __asm__ __volatile__("lock; cmpxchg8b %2\n\t" + "setz %%al\n\t" + "movzbl %%al, %%eax\n\t" + : "=a" (u32Ret), + "=d" (u32Spill), + "+m" (*pu64) + : "A" (u64Old), + "b" ( (uint32_t)u64New ), + "c" ( (uint32_t)(u64New >> 32) )); +# endif + return (bool)u32Ret; +# else + __asm + { + mov ebx, dword ptr [u64New] + mov ecx, dword ptr [u64New + 4] + mov edi, [pu64] + mov eax, dword ptr [u64Old] + mov edx, dword ptr [u64Old + 4] + lock cmpxchg8b [edi] + setz al + movzx eax, al + mov dword ptr [u32Ret], eax + } + return !!u32Ret; +# endif +# endif /* !RT_ARCH_AMD64 */ +} +#endif + + +/** + * Atomically Compare and exchange a signed 64-bit value, ordered. + * + * @returns true if xchg was done. + * @returns false if xchg wasn't done. + * + * @param pi64 Pointer to the 64-bit variable to update. + * @param i64 The 64-bit value to assign to *pu64. + * @param i64Old The value to compare with. + */ +DECLINLINE(bool) ASMAtomicCmpXchgS64(volatile int64_t *pi64, const int64_t i64, const int64_t i64Old) +{ + return ASMAtomicCmpXchgU64((volatile uint64_t *)pi64, (uint64_t)i64, (uint64_t)i64Old); +} + + +/** + * Atomically Compare and Exchange a pointer value, ordered. + * + * @returns true if xchg was done. + * @returns false if xchg wasn't done. + * + * @param ppv Pointer to the value to update. + * @param pvNew The new value to assigned to *ppv. + * @param pvOld The old value to *ppv compare with. + */ +DECLINLINE(bool) ASMAtomicCmpXchgPtrVoid(void * volatile *ppv, const void *pvNew, const void *pvOld) +{ +#if ARCH_BITS == 32 + return ASMAtomicCmpXchgU32((volatile uint32_t *)(void *)ppv, (uint32_t)pvNew, (uint32_t)pvOld); +#elif ARCH_BITS == 64 + return ASMAtomicCmpXchgU64((volatile uint64_t *)(void *)ppv, (uint64_t)pvNew, (uint64_t)pvOld); +#else +# error "ARCH_BITS is bogus" +#endif +} + + +/** + * Atomically Compare and Exchange a pointer value, ordered. + * + * @returns true if xchg was done. + * @returns false if xchg wasn't done. + * + * @param ppv Pointer to the value to update. + * @param pvNew The new value to assigned to *ppv. + * @param pvOld The old value to *ppv compare with. + * + * @remarks This is relatively type safe on GCC platforms. + */ +#ifdef __GNUC__ +# define ASMAtomicCmpXchgPtr(ppv, pvNew, pvOld) \ + __extension__ \ + ({\ + __typeof__(*(ppv)) volatile * const ppvTypeChecked = (ppv); \ + __typeof__(*(ppv)) const pvNewTypeChecked = (pvNew); \ + __typeof__(*(ppv)) const pvOldTypeChecked = (pvOld); \ + bool fMacroRet = ASMAtomicCmpXchgPtrVoid((void * volatile *)ppvTypeChecked, \ + (void *)pvNewTypeChecked, (void *)pvOldTypeChecked); \ + fMacroRet; \ + }) +#else +# define ASMAtomicCmpXchgPtr(ppv, pvNew, pvOld) \ + ASMAtomicCmpXchgPtrVoid((void * volatile *)(ppv), (void *)(pvNew), (void *)(pvOld)) +#endif + + +/** @def ASMAtomicCmpXchgHandle + * Atomically Compare and Exchange a typical IPRT handle value, ordered. + * + * @param ph Pointer to the value to update. + * @param hNew The new value to assigned to *pu. + * @param hOld The old value to *pu compare with. + * @param fRc Where to store the result. + * + * @remarks This doesn't currently work for all handles (like RTFILE). + */ +#if HC_ARCH_BITS == 32 +# define ASMAtomicCmpXchgHandle(ph, hNew, hOld, fRc) \ + do { \ + AssertCompile(sizeof(*(ph)) == sizeof(uint32_t)); \ + (fRc) = ASMAtomicCmpXchgU32((uint32_t volatile *)(ph), (const uint32_t)(hNew), (const uint32_t)(hOld)); \ + } while (0) +#elif HC_ARCH_BITS == 64 +# define ASMAtomicCmpXchgHandle(ph, hNew, hOld, fRc) \ + do { \ + AssertCompile(sizeof(*(ph)) == sizeof(uint64_t)); \ + (fRc) = ASMAtomicCmpXchgU64((uint64_t volatile *)(ph), (const uint64_t)(hNew), (const uint64_t)(hOld)); \ + } while (0) +#else +# error HC_ARCH_BITS +#endif + + +/** @def ASMAtomicCmpXchgSize + * Atomically Compare and Exchange a value which size might differ + * between platforms or compilers, ordered. + * + * @param pu Pointer to the value to update. + * @param uNew The new value to assigned to *pu. + * @param uOld The old value to *pu compare with. + * @param fRc Where to store the result. + */ +#define ASMAtomicCmpXchgSize(pu, uNew, uOld, fRc) \ + do { \ + switch (sizeof(*(pu))) { \ + case 4: (fRc) = ASMAtomicCmpXchgU32((volatile uint32_t *)(void *)(pu), (uint32_t)(uNew), (uint32_t)(uOld)); \ + break; \ + case 8: (fRc) = ASMAtomicCmpXchgU64((volatile uint64_t *)(void *)(pu), (uint64_t)(uNew), (uint64_t)(uOld)); \ + break; \ + default: AssertMsgFailed(("ASMAtomicCmpXchgSize: size %d is not supported\n", sizeof(*(pu)))); \ + (fRc) = false; \ + break; \ + } \ + } while (0) + + +/** + * Atomically Compare and Exchange an unsigned 32-bit value, additionally + * passes back old value, ordered. + * + * @returns true if xchg was done. + * @returns false if xchg wasn't done. + * + * @param pu32 Pointer to the value to update. + * @param u32New The new value to assigned to *pu32. + * @param u32Old The old value to *pu32 compare with. + * @param pu32Old Pointer store the old value at. + */ +#if RT_INLINE_ASM_EXTERNAL && !RT_INLINE_ASM_USES_INTRIN +DECLASM(bool) ASMAtomicCmpXchgExU32(volatile uint32_t *pu32, const uint32_t u32New, const uint32_t u32Old, uint32_t *pu32Old); +#else +DECLINLINE(bool) ASMAtomicCmpXchgExU32(volatile uint32_t *pu32, const uint32_t u32New, const uint32_t u32Old, uint32_t *pu32Old) +{ +# if RT_INLINE_ASM_GNU_STYLE + uint8_t u8Ret; + __asm__ __volatile__("lock; cmpxchgl %3, %0\n\t" + "setz %1\n\t" + : "=m" (*pu32), + "=qm" (u8Ret), + "=a" (*pu32Old) + : "r" (u32New), + "a" (u32Old), + "m" (*pu32)); + return (bool)u8Ret; + +# elif RT_INLINE_ASM_USES_INTRIN + return (*pu32Old =_InterlockedCompareExchange((long *)pu32, u32New, u32Old)) == u32Old; + +# else + uint32_t u32Ret; + __asm + { +# ifdef RT_ARCH_AMD64 + mov rdx, [pu32] +# else + mov edx, [pu32] +# endif + mov eax, [u32Old] + mov ecx, [u32New] +# ifdef RT_ARCH_AMD64 + lock cmpxchg [rdx], ecx + mov rdx, [pu32Old] + mov [rdx], eax +# else + lock cmpxchg [edx], ecx + mov edx, [pu32Old] + mov [edx], eax +# endif + setz al + movzx eax, al + mov [u32Ret], eax + } + return !!u32Ret; +# endif +} +#endif + + +/** + * Atomically Compare and Exchange a signed 32-bit value, additionally + * passes back old value, ordered. + * + * @returns true if xchg was done. + * @returns false if xchg wasn't done. + * + * @param pi32 Pointer to the value to update. + * @param i32New The new value to assigned to *pi32. + * @param i32Old The old value to *pi32 compare with. + * @param pi32Old Pointer store the old value at. + */ +DECLINLINE(bool) ASMAtomicCmpXchgExS32(volatile int32_t *pi32, const int32_t i32New, const int32_t i32Old, int32_t *pi32Old) +{ + return ASMAtomicCmpXchgExU32((volatile uint32_t *)pi32, (uint32_t)i32New, (uint32_t)i32Old, (uint32_t *)pi32Old); +} + + +/** + * Atomically Compare and exchange an unsigned 64-bit value, additionally + * passing back old value, ordered. + * + * @returns true if xchg was done. + * @returns false if xchg wasn't done. + * + * @param pu64 Pointer to the 64-bit variable to update. + * @param u64New The 64-bit value to assign to *pu64. + * @param u64Old The value to compare with. + * @param pu64Old Pointer store the old value at. + */ +#if (RT_INLINE_ASM_EXTERNAL && !RT_INLINE_ASM_USES_INTRIN) \ + || RT_INLINE_DONT_MIX_CMPXCHG8B_AND_PIC +DECLASM(bool) ASMAtomicCmpXchgExU64(volatile uint64_t *pu64, const uint64_t u64New, const uint64_t u64Old, uint64_t *pu64Old); +#else +DECLINLINE(bool) ASMAtomicCmpXchgExU64(volatile uint64_t *pu64, const uint64_t u64New, const uint64_t u64Old, uint64_t *pu64Old) +{ +# if RT_INLINE_ASM_USES_INTRIN + return (*pu64Old =_InterlockedCompareExchange64((__int64 *)pu64, u64New, u64Old)) == u64Old; + +# elif defined(RT_ARCH_AMD64) +# if RT_INLINE_ASM_GNU_STYLE + uint8_t u8Ret; + __asm__ __volatile__("lock; cmpxchgq %3, %0\n\t" + "setz %1\n\t" + : "=m" (*pu64), + "=qm" (u8Ret), + "=a" (*pu64Old) + : "r" (u64New), + "a" (u64Old), + "m" (*pu64)); + return (bool)u8Ret; +# else + bool fRet; + __asm + { + mov rdx, [pu32] + mov rax, [u64Old] + mov rcx, [u64New] + lock cmpxchg [rdx], rcx + mov rdx, [pu64Old] + mov [rdx], rax + setz al + mov [fRet], al + } + return fRet; +# endif +# else /* !RT_ARCH_AMD64 */ +# if RT_INLINE_ASM_GNU_STYLE + uint64_t u64Ret; +# if defined(PIC) || defined(__PIC__) + /* NB: this code uses a memory clobber description, because the clean + * solution with an output value for *pu64 makes gcc run out of registers. + * This will cause suboptimal code, and anyone with a better solution is + * welcome to improve this. */ + __asm__ __volatile__("xchgl %%ebx, %1\n\t" + "lock; cmpxchg8b %3\n\t" + "xchgl %%ebx, %1\n\t" + : "=A" (u64Ret) + : "DS" ((uint32_t)u64New), + "c" ((uint32_t)(u64New >> 32)), + "m" (*pu64), + "0" (u64Old) + : "memory" ); +# else /* !PIC */ + __asm__ __volatile__("lock; cmpxchg8b %4\n\t" + : "=A" (u64Ret), + "=m" (*pu64) + : "b" ((uint32_t)u64New), + "c" ((uint32_t)(u64New >> 32)), + "m" (*pu64), + "0" (u64Old)); +# endif + *pu64Old = u64Ret; + return u64Ret == u64Old; +# else + uint32_t u32Ret; + __asm + { + mov ebx, dword ptr [u64New] + mov ecx, dword ptr [u64New + 4] + mov edi, [pu64] + mov eax, dword ptr [u64Old] + mov edx, dword ptr [u64Old + 4] + lock cmpxchg8b [edi] + mov ebx, [pu64Old] + mov [ebx], eax + setz al + movzx eax, al + add ebx, 4 + mov [ebx], edx + mov dword ptr [u32Ret], eax + } + return !!u32Ret; +# endif +# endif /* !RT_ARCH_AMD64 */ +} +#endif + + +/** + * Atomically Compare and exchange a signed 64-bit value, additionally + * passing back old value, ordered. + * + * @returns true if xchg was done. + * @returns false if xchg wasn't done. + * + * @param pi64 Pointer to the 64-bit variable to update. + * @param i64 The 64-bit value to assign to *pu64. + * @param i64Old The value to compare with. + * @param pi64Old Pointer store the old value at. + */ +DECLINLINE(bool) ASMAtomicCmpXchgExS64(volatile int64_t *pi64, const int64_t i64, const int64_t i64Old, int64_t *pi64Old) +{ + return ASMAtomicCmpXchgExU64((volatile uint64_t *)pi64, (uint64_t)i64, (uint64_t)i64Old, (uint64_t *)pi64Old); +} + +/** @def ASMAtomicCmpXchgExHandle + * Atomically Compare and Exchange a typical IPRT handle value, ordered. + * + * @param ph Pointer to the value to update. + * @param hNew The new value to assigned to *pu. + * @param hOld The old value to *pu compare with. + * @param fRc Where to store the result. + * @param phOldVal Pointer to where to store the old value. + * + * @remarks This doesn't currently work for all handles (like RTFILE). + */ +#if HC_ARCH_BITS == 32 +# define ASMAtomicCmpXchgExHandle(ph, hNew, hOld, fRc, phOldVal) \ + do { \ + AssertCompile(sizeof(*ph) == sizeof(uint32_t)); \ + AssertCompile(sizeof(*phOldVal) == sizeof(uint32_t)); \ + (fRc) = ASMAtomicCmpXchgExU32((volatile uint32_t *)(pu), (uint32_t)(uNew), (uint32_t)(uOld), (uint32_t *)(puOldVal)); \ + } while (0) +#elif HC_ARCH_BITS == 64 +# define ASMAtomicCmpXchgExHandle(ph, hNew, hOld, fRc, phOldVal) \ + do { \ + AssertCompile(sizeof(*(ph)) == sizeof(uint64_t)); \ + AssertCompile(sizeof(*(phOldVal)) == sizeof(uint64_t)); \ + (fRc) = ASMAtomicCmpXchgExU64((volatile uint64_t *)(pu), (uint64_t)(uNew), (uint64_t)(uOld), (uint64_t *)(puOldVal)); \ + } while (0) +#else +# error HC_ARCH_BITS +#endif + + +/** @def ASMAtomicCmpXchgExSize + * Atomically Compare and Exchange a value which size might differ + * between platforms or compilers. Additionally passes back old value. + * + * @param pu Pointer to the value to update. + * @param uNew The new value to assigned to *pu. + * @param uOld The old value to *pu compare with. + * @param fRc Where to store the result. + * @param puOldVal Pointer to where to store the old value. + */ +#define ASMAtomicCmpXchgExSize(pu, uNew, uOld, fRc, puOldVal) \ + do { \ + switch (sizeof(*(pu))) { \ + case 4: (fRc) = ASMAtomicCmpXchgExU32((volatile uint32_t *)(void *)(pu), (uint32_t)(uNew), (uint32_t)(uOld), (uint32_t *)(uOldVal)); \ + break; \ + case 8: (fRc) = ASMAtomicCmpXchgExU64((volatile uint64_t *)(void *)(pu), (uint64_t)(uNew), (uint64_t)(uOld), (uint64_t *)(uOldVal)); \ + break; \ + default: AssertMsgFailed(("ASMAtomicCmpXchgSize: size %d is not supported\n", sizeof(*(pu)))); \ + (fRc) = false; \ + (uOldVal) = 0; \ + break; \ + } \ + } while (0) + + +/** + * Atomically Compare and Exchange a pointer value, additionally + * passing back old value, ordered. + * + * @returns true if xchg was done. + * @returns false if xchg wasn't done. + * + * @param ppv Pointer to the value to update. + * @param pvNew The new value to assigned to *ppv. + * @param pvOld The old value to *ppv compare with. + * @param ppvOld Pointer store the old value at. + */ +DECLINLINE(bool) ASMAtomicCmpXchgExPtrVoid(void * volatile *ppv, const void *pvNew, const void *pvOld, void **ppvOld) +{ +#if ARCH_BITS == 32 + return ASMAtomicCmpXchgExU32((volatile uint32_t *)(void *)ppv, (uint32_t)pvNew, (uint32_t)pvOld, (uint32_t *)ppvOld); +#elif ARCH_BITS == 64 + return ASMAtomicCmpXchgExU64((volatile uint64_t *)(void *)ppv, (uint64_t)pvNew, (uint64_t)pvOld, (uint64_t *)ppvOld); +#else +# error "ARCH_BITS is bogus" +#endif +} + + +/** + * Atomically Compare and Exchange a pointer value, additionally + * passing back old value, ordered. + * + * @returns true if xchg was done. + * @returns false if xchg wasn't done. + * + * @param ppv Pointer to the value to update. + * @param pvNew The new value to assigned to *ppv. + * @param pvOld The old value to *ppv compare with. + * @param ppvOld Pointer store the old value at. + * + * @remarks This is relatively type safe on GCC platforms. + */ +#ifdef __GNUC__ +# define ASMAtomicCmpXchgExPtr(ppv, pvNew, pvOld, ppvOld) \ + __extension__ \ + ({\ + __typeof__(*(ppv)) volatile * const ppvTypeChecked = (ppv); \ + __typeof__(*(ppv)) const pvNewTypeChecked = (pvNew); \ + __typeof__(*(ppv)) const pvOldTypeChecked = (pvOld); \ + __typeof__(*(ppv)) * const ppvOldTypeChecked = (ppvOld); \ + bool fMacroRet = ASMAtomicCmpXchgExPtrVoid((void * volatile *)ppvTypeChecked, \ + (void *)pvNewTypeChecked, (void *)pvOldTypeChecked, \ + (void **)ppvOldTypeChecked); \ + fMacroRet; \ + }) +#else +# define ASMAtomicCmpXchgExPtr(ppv, pvNew, pvOld, ppvOld) \ + ASMAtomicCmpXchgExPtrVoid((void * volatile *)(ppv), (void *)(pvNew), (void *)(pvOld), (void **)(ppvOld)) +#endif + + +/** + * Serialize Instruction. + */ +#if RT_INLINE_ASM_EXTERNAL && !RT_INLINE_ASM_USES_INTRIN +DECLASM(void) ASMSerializeInstruction(void); +#else +DECLINLINE(void) ASMSerializeInstruction(void) +{ +# if RT_INLINE_ASM_GNU_STYLE + RTCCUINTREG xAX = 0; +# ifdef RT_ARCH_AMD64 + __asm__ ("cpuid" + : "=a" (xAX) + : "0" (xAX) + : "rbx", "rcx", "rdx"); +# elif (defined(PIC) || defined(__PIC__)) && defined(__i386__) + __asm__ ("push %%ebx\n\t" + "cpuid\n\t" + "pop %%ebx\n\t" + : "=a" (xAX) + : "0" (xAX) + : "ecx", "edx"); +# else + __asm__ ("cpuid" + : "=a" (xAX) + : "0" (xAX) + : "ebx", "ecx", "edx"); +# endif + +# elif RT_INLINE_ASM_USES_INTRIN + int aInfo[4]; + __cpuid(aInfo, 0); + +# else + __asm + { + push ebx + xor eax, eax + cpuid + pop ebx + } +# endif +} +#endif + + +/** + * Memory fence, waits for any pending writes and reads to complete. + */ +DECLINLINE(void) ASMMemoryFence(void) +{ + /** @todo use mfence? check if all cpus we care for support it. */ + uint32_t volatile u32; + ASMAtomicXchgU32(&u32, 0); +} + + +/** + * Write fence, waits for any pending writes to complete. + */ +DECLINLINE(void) ASMWriteFence(void) +{ + /** @todo use sfence? check if all cpus we care for support it. */ + ASMMemoryFence(); +} + + +/** + * Read fence, waits for any pending reads to complete. + */ +DECLINLINE(void) ASMReadFence(void) +{ + /** @todo use lfence? check if all cpus we care for support it. */ + ASMMemoryFence(); +} + + +/** + * Atomically reads an unsigned 8-bit value, ordered. + * + * @returns Current *pu8 value + * @param pu8 Pointer to the 8-bit variable to read. + */ +DECLINLINE(uint8_t) ASMAtomicReadU8(volatile uint8_t *pu8) +{ + ASMMemoryFence(); + return *pu8; /* byte reads are atomic on x86 */ +} + + +/** + * Atomically reads an unsigned 8-bit value, unordered. + * + * @returns Current *pu8 value + * @param pu8 Pointer to the 8-bit variable to read. + */ +DECLINLINE(uint8_t) ASMAtomicUoReadU8(volatile uint8_t *pu8) +{ + return *pu8; /* byte reads are atomic on x86 */ +} + + +/** + * Atomically reads a signed 8-bit value, ordered. + * + * @returns Current *pi8 value + * @param pi8 Pointer to the 8-bit variable to read. + */ +DECLINLINE(int8_t) ASMAtomicReadS8(volatile int8_t *pi8) +{ + ASMMemoryFence(); + return *pi8; /* byte reads are atomic on x86 */ +} + + +/** + * Atomically reads a signed 8-bit value, unordered. + * + * @returns Current *pi8 value + * @param pi8 Pointer to the 8-bit variable to read. + */ +DECLINLINE(int8_t) ASMAtomicUoReadS8(volatile int8_t *pi8) +{ + return *pi8; /* byte reads are atomic on x86 */ +} + + +/** + * Atomically reads an unsigned 16-bit value, ordered. + * + * @returns Current *pu16 value + * @param pu16 Pointer to the 16-bit variable to read. + */ +DECLINLINE(uint16_t) ASMAtomicReadU16(volatile uint16_t *pu16) +{ + ASMMemoryFence(); + Assert(!((uintptr_t)pu16 & 1)); + return *pu16; +} + + +/** + * Atomically reads an unsigned 16-bit value, unordered. + * + * @returns Current *pu16 value + * @param pu16 Pointer to the 16-bit variable to read. + */ +DECLINLINE(uint16_t) ASMAtomicUoReadU16(volatile uint16_t *pu16) +{ + Assert(!((uintptr_t)pu16 & 1)); + return *pu16; +} + + +/** + * Atomically reads a signed 16-bit value, ordered. + * + * @returns Current *pi16 value + * @param pi16 Pointer to the 16-bit variable to read. + */ +DECLINLINE(int16_t) ASMAtomicReadS16(volatile int16_t *pi16) +{ + ASMMemoryFence(); + Assert(!((uintptr_t)pi16 & 1)); + return *pi16; +} + + +/** + * Atomically reads a signed 16-bit value, unordered. + * + * @returns Current *pi16 value + * @param pi16 Pointer to the 16-bit variable to read. + */ +DECLINLINE(int16_t) ASMAtomicUoReadS16(volatile int16_t *pi16) +{ + Assert(!((uintptr_t)pi16 & 1)); + return *pi16; +} + + +/** + * Atomically reads an unsigned 32-bit value, ordered. + * + * @returns Current *pu32 value + * @param pu32 Pointer to the 32-bit variable to read. + */ +DECLINLINE(uint32_t) ASMAtomicReadU32(volatile uint32_t *pu32) +{ + ASMMemoryFence(); + Assert(!((uintptr_t)pu32 & 3)); + return *pu32; +} + + +/** + * Atomically reads an unsigned 32-bit value, unordered. + * + * @returns Current *pu32 value + * @param pu32 Pointer to the 32-bit variable to read. + */ +DECLINLINE(uint32_t) ASMAtomicUoReadU32(volatile uint32_t *pu32) +{ + Assert(!((uintptr_t)pu32 & 3)); + return *pu32; +} + + +/** + * Atomically reads a signed 32-bit value, ordered. + * + * @returns Current *pi32 value + * @param pi32 Pointer to the 32-bit variable to read. + */ +DECLINLINE(int32_t) ASMAtomicReadS32(volatile int32_t *pi32) +{ + ASMMemoryFence(); + Assert(!((uintptr_t)pi32 & 3)); + return *pi32; +} + + +/** + * Atomically reads a signed 32-bit value, unordered. + * + * @returns Current *pi32 value + * @param pi32 Pointer to the 32-bit variable to read. + */ +DECLINLINE(int32_t) ASMAtomicUoReadS32(volatile int32_t *pi32) +{ + Assert(!((uintptr_t)pi32 & 3)); + return *pi32; +} + + +/** + * Atomically reads an unsigned 64-bit value, ordered. + * + * @returns Current *pu64 value + * @param pu64 Pointer to the 64-bit variable to read. + * The memory pointed to must be writable. + * @remark This will fault if the memory is read-only! + */ +#if (RT_INLINE_ASM_EXTERNAL && !defined(RT_ARCH_AMD64)) \ + || RT_INLINE_DONT_MIX_CMPXCHG8B_AND_PIC +DECLASM(uint64_t) ASMAtomicReadU64(volatile uint64_t *pu64); +#else +DECLINLINE(uint64_t) ASMAtomicReadU64(volatile uint64_t *pu64) +{ + uint64_t u64; +# ifdef RT_ARCH_AMD64 + Assert(!((uintptr_t)pu64 & 7)); +/*# if RT_INLINE_ASM_GNU_STYLE + __asm__ __volatile__( "mfence\n\t" + "movq %1, %0\n\t" + : "=r" (u64) + : "m" (*pu64)); +# else + __asm + { + mfence + mov rdx, [pu64] + mov rax, [rdx] + mov [u64], rax + } +# endif*/ + ASMMemoryFence(); + u64 = *pu64; +# else /* !RT_ARCH_AMD64 */ +# if RT_INLINE_ASM_GNU_STYLE +# if defined(PIC) || defined(__PIC__) + uint32_t u32EBX = 0; + Assert(!((uintptr_t)pu64 & 7)); + __asm__ __volatile__("xchgl %%ebx, %3\n\t" + "lock; cmpxchg8b (%5)\n\t" + "movl %3, %%ebx\n\t" + : "=A" (u64), +# if (__GNUC__ * 100 + __GNUC_MINOR__) >= 403 + "+m" (*pu64) +# else + "=m" (*pu64) +# endif + : "0" (0ULL), + "m" (u32EBX), + "c" (0), + "S" (pu64)); +# else /* !PIC */ + __asm__ __volatile__("lock; cmpxchg8b %1\n\t" + : "=A" (u64), + "+m" (*pu64) + : "0" (0ULL), + "b" (0), + "c" (0)); +# endif +# else + Assert(!((uintptr_t)pu64 & 7)); + __asm + { + xor eax, eax + xor edx, edx + mov edi, pu64 + xor ecx, ecx + xor ebx, ebx + lock cmpxchg8b [edi] + mov dword ptr [u64], eax + mov dword ptr [u64 + 4], edx + } +# endif +# endif /* !RT_ARCH_AMD64 */ + return u64; +} +#endif + + +/** + * Atomically reads an unsigned 64-bit value, unordered. + * + * @returns Current *pu64 value + * @param pu64 Pointer to the 64-bit variable to read. + * The memory pointed to must be writable. + * @remark This will fault if the memory is read-only! + */ +#if !defined(RT_ARCH_AMD64) \ + && ( (RT_INLINE_ASM_EXTERNAL && !RT_INLINE_ASM_USES_INTRIN) \ + || RT_INLINE_DONT_MIX_CMPXCHG8B_AND_PIC) +DECLASM(uint64_t) ASMAtomicUoReadU64(volatile uint64_t *pu64); +#else +DECLINLINE(uint64_t) ASMAtomicUoReadU64(volatile uint64_t *pu64) +{ + uint64_t u64; +# ifdef RT_ARCH_AMD64 + Assert(!((uintptr_t)pu64 & 7)); +/*# if RT_INLINE_ASM_GNU_STYLE + Assert(!((uintptr_t)pu64 & 7)); + __asm__ __volatile__("movq %1, %0\n\t" + : "=r" (u64) + : "m" (*pu64)); +# else + __asm + { + mov rdx, [pu64] + mov rax, [rdx] + mov [u64], rax + } +# endif */ + u64 = *pu64; +# else /* !RT_ARCH_AMD64 */ +# if RT_INLINE_ASM_GNU_STYLE +# if defined(PIC) || defined(__PIC__) + uint32_t u32EBX = 0; + uint32_t u32Spill; + Assert(!((uintptr_t)pu64 & 7)); + __asm__ __volatile__("xor %%eax,%%eax\n\t" + "xor %%ecx,%%ecx\n\t" + "xor %%edx,%%edx\n\t" + "xchgl %%ebx, %3\n\t" + "lock; cmpxchg8b (%4)\n\t" + "movl %3, %%ebx\n\t" + : "=A" (u64), +# if (__GNUC__ * 100 + __GNUC_MINOR__) >= 403 + "+m" (*pu64), +# else + "=m" (*pu64), +# endif + "=c" (u32Spill) + : "m" (u32EBX), + "S" (pu64)); +# else /* !PIC */ + __asm__ __volatile__("lock; cmpxchg8b %1\n\t" + : "=A" (u64), + "+m" (*pu64) + : "0" (0ULL), + "b" (0), + "c" (0)); +# endif +# else + Assert(!((uintptr_t)pu64 & 7)); + __asm + { + xor eax, eax + xor edx, edx + mov edi, pu64 + xor ecx, ecx + xor ebx, ebx + lock cmpxchg8b [edi] + mov dword ptr [u64], eax + mov dword ptr [u64 + 4], edx + } +# endif +# endif /* !RT_ARCH_AMD64 */ + return u64; +} +#endif + + +/** + * Atomically reads a signed 64-bit value, ordered. + * + * @returns Current *pi64 value + * @param pi64 Pointer to the 64-bit variable to read. + * The memory pointed to must be writable. + * @remark This will fault if the memory is read-only! + */ +DECLINLINE(int64_t) ASMAtomicReadS64(volatile int64_t *pi64) +{ + return (int64_t)ASMAtomicReadU64((volatile uint64_t *)pi64); +} + + +/** + * Atomically reads a signed 64-bit value, unordered. + * + * @returns Current *pi64 value + * @param pi64 Pointer to the 64-bit variable to read. + * The memory pointed to must be writable. + * @remark This will fault if the memory is read-only! + */ +DECLINLINE(int64_t) ASMAtomicUoReadS64(volatile int64_t *pi64) +{ + return (int64_t)ASMAtomicUoReadU64((volatile uint64_t *)pi64); +} + + +/** + * Atomically reads a size_t value, ordered. + * + * @returns Current *pcb value + * @param pcb Pointer to the size_t variable to read. + */ +DECLINLINE(size_t) ASMAtomicReadZ(size_t volatile *pcb) +{ +#if ARCH_BITS == 64 + return ASMAtomicReadU64((uint64_t volatile *)pcb); +#elif ARCH_BITS == 32 + return ASMAtomicReadU32((uint32_t volatile *)pcb); +#else +# error "Unsupported ARCH_BITS value" +#endif +} + + +/** + * Atomically reads a size_t value, unordered. + * + * @returns Current *pcb value + * @param pcb Pointer to the size_t variable to read. + */ +DECLINLINE(size_t) ASMAtomicUoReadZ(size_t volatile *pcb) +{ +#if ARCH_BITS == 64 + return ASMAtomicUoReadU64((uint64_t volatile *)pcb); +#elif ARCH_BITS == 32 + return ASMAtomicUoReadU32((uint32_t volatile *)pcb); +#else +# error "Unsupported ARCH_BITS value" +#endif +} + + +/** + * Atomically reads a pointer value, ordered. + * + * @returns Current *pv value + * @param ppv Pointer to the pointer variable to read. + * + * @remarks Please use ASMAtomicReadPtrT, it provides better type safety and + * requires less typing (no casts). + */ +DECLINLINE(void *) ASMAtomicReadPtr(void * volatile *ppv) +{ +#if ARCH_BITS == 32 + return (void *)ASMAtomicReadU32((volatile uint32_t *)(void *)ppv); +#elif ARCH_BITS == 64 + return (void *)ASMAtomicReadU64((volatile uint64_t *)(void *)ppv); +#else +# error "ARCH_BITS is bogus" +#endif +} + +/** + * Convenience macro for avoiding the annoying casting with ASMAtomicReadPtr. + * + * @returns Current *pv value + * @param ppv Pointer to the pointer variable to read. + * @param Type The type of *ppv, sans volatile. + */ +#ifdef __GNUC__ +# define ASMAtomicReadPtrT(ppv, Type) \ + __extension__ \ + ({\ + __typeof__(*(ppv)) volatile *ppvTypeChecked = (ppv); \ + Type pvTypeChecked = (__typeof__(*(ppv))) ASMAtomicReadPtr((void * volatile *)ppvTypeChecked); \ + pvTypeChecked; \ + }) +#else +# define ASMAtomicReadPtrT(ppv, Type) \ + (Type)ASMAtomicReadPtr((void * volatile *)(ppv)) +#endif + + +/** + * Atomically reads a pointer value, unordered. + * + * @returns Current *pv value + * @param ppv Pointer to the pointer variable to read. + * + * @remarks Please use ASMAtomicUoReadPtrT, it provides better type safety and + * requires less typing (no casts). + */ +DECLINLINE(void *) ASMAtomicUoReadPtr(void * volatile *ppv) +{ +#if ARCH_BITS == 32 + return (void *)ASMAtomicUoReadU32((volatile uint32_t *)(void *)ppv); +#elif ARCH_BITS == 64 + return (void *)ASMAtomicUoReadU64((volatile uint64_t *)(void *)ppv); +#else +# error "ARCH_BITS is bogus" +#endif +} + + +/** + * Convenience macro for avoiding the annoying casting with ASMAtomicUoReadPtr. + * + * @returns Current *pv value + * @param ppv Pointer to the pointer variable to read. + * @param Type The type of *ppv, sans volatile. + */ +#ifdef __GNUC__ +# define ASMAtomicUoReadPtrT(ppv, Type) \ + __extension__ \ + ({\ + __typeof__(*(ppv)) volatile * const ppvTypeChecked = (ppv); \ + Type pvTypeChecked = (__typeof__(*(ppv))) ASMAtomicUoReadPtr((void * volatile *)ppvTypeChecked); \ + pvTypeChecked; \ + }) +#else +# define ASMAtomicUoReadPtrT(ppv, Type) \ + (Type)ASMAtomicUoReadPtr((void * volatile *)(ppv)) +#endif + + +/** + * Atomically reads a boolean value, ordered. + * + * @returns Current *pf value + * @param pf Pointer to the boolean variable to read. + */ +DECLINLINE(bool) ASMAtomicReadBool(volatile bool *pf) +{ + ASMMemoryFence(); + return *pf; /* byte reads are atomic on x86 */ +} + + +/** + * Atomically reads a boolean value, unordered. + * + * @returns Current *pf value + * @param pf Pointer to the boolean variable to read. + */ +DECLINLINE(bool) ASMAtomicUoReadBool(volatile bool *pf) +{ + return *pf; /* byte reads are atomic on x86 */ +} + + +/** + * Atomically read a typical IPRT handle value, ordered. + * + * @param ph Pointer to the handle variable to read. + * @param phRes Where to store the result. + * + * @remarks This doesn't currently work for all handles (like RTFILE). + */ +#if HC_ARCH_BITS == 32 +# define ASMAtomicReadHandle(ph, phRes) \ + do { \ + AssertCompile(sizeof(*(ph)) == sizeof(uint32_t)); \ + AssertCompile(sizeof(*(phRes)) == sizeof(uint32_t)); \ + *(uint32_t *)(phRes) = ASMAtomicReadU32((uint32_t volatile *)(ph)); \ + } while (0) +#elif HC_ARCH_BITS == 64 +# define ASMAtomicReadHandle(ph, phRes) \ + do { \ + AssertCompile(sizeof(*(ph)) == sizeof(uint64_t)); \ + AssertCompile(sizeof(*(phRes)) == sizeof(uint64_t)); \ + *(uint64_t *)(phRes) = ASMAtomicReadU64((uint64_t volatile *)(ph)); \ + } while (0) +#else +# error HC_ARCH_BITS +#endif + + +/** + * Atomically read a typical IPRT handle value, unordered. + * + * @param ph Pointer to the handle variable to read. + * @param phRes Where to store the result. + * + * @remarks This doesn't currently work for all handles (like RTFILE). + */ +#if HC_ARCH_BITS == 32 +# define ASMAtomicUoReadHandle(ph, phRes) \ + do { \ + AssertCompile(sizeof(*(ph)) == sizeof(uint32_t)); \ + AssertCompile(sizeof(*(phRes)) == sizeof(uint32_t)); \ + *(uint32_t *)(phRes) = ASMAtomicUoReadU32((uint32_t volatile *)(ph)); \ + } while (0) +#elif HC_ARCH_BITS == 64 +# define ASMAtomicUoReadHandle(ph, phRes) \ + do { \ + AssertCompile(sizeof(*(ph)) == sizeof(uint64_t)); \ + AssertCompile(sizeof(*(phRes)) == sizeof(uint64_t)); \ + *(uint64_t *)(phRes) = ASMAtomicUoReadU64((uint64_t volatile *)(ph)); \ + } while (0) +#else +# error HC_ARCH_BITS +#endif + + +/** + * Atomically read a value which size might differ + * between platforms or compilers, ordered. + * + * @param pu Pointer to the variable to read. + * @param puRes Where to store the result. + */ +#define ASMAtomicReadSize(pu, puRes) \ + do { \ + switch (sizeof(*(pu))) { \ + case 1: *(uint8_t *)(puRes) = ASMAtomicReadU8( (volatile uint8_t *)(void *)(pu)); break; \ + case 2: *(uint16_t *)(puRes) = ASMAtomicReadU16((volatile uint16_t *)(void *)(pu)); break; \ + case 4: *(uint32_t *)(puRes) = ASMAtomicReadU32((volatile uint32_t *)(void *)(pu)); break; \ + case 8: *(uint64_t *)(puRes) = ASMAtomicReadU64((volatile uint64_t *)(void *)(pu)); break; \ + default: AssertMsgFailed(("ASMAtomicReadSize: size %d is not supported\n", sizeof(*(pu)))); \ + } \ + } while (0) + + +/** + * Atomically read a value which size might differ + * between platforms or compilers, unordered. + * + * @param pu Pointer to the variable to read. + * @param puRes Where to store the result. + */ +#define ASMAtomicUoReadSize(pu, puRes) \ + do { \ + switch (sizeof(*(pu))) { \ + case 1: *(uint8_t *)(puRes) = ASMAtomicUoReadU8( (volatile uint8_t *)(void *)(pu)); break; \ + case 2: *(uint16_t *)(puRes) = ASMAtomicUoReadU16((volatile uint16_t *)(void *)(pu)); break; \ + case 4: *(uint32_t *)(puRes) = ASMAtomicUoReadU32((volatile uint32_t *)(void *)(pu)); break; \ + case 8: *(uint64_t *)(puRes) = ASMAtomicUoReadU64((volatile uint64_t *)(void *)(pu)); break; \ + default: AssertMsgFailed(("ASMAtomicReadSize: size %d is not supported\n", sizeof(*(pu)))); \ + } \ + } while (0) + + +/** + * Atomically writes an unsigned 8-bit value, ordered. + * + * @param pu8 Pointer to the 8-bit variable. + * @param u8 The 8-bit value to assign to *pu8. + */ +DECLINLINE(void) ASMAtomicWriteU8(volatile uint8_t *pu8, uint8_t u8) +{ + ASMAtomicXchgU8(pu8, u8); +} + + +/** + * Atomically writes an unsigned 8-bit value, unordered. + * + * @param pu8 Pointer to the 8-bit variable. + * @param u8 The 8-bit value to assign to *pu8. + */ +DECLINLINE(void) ASMAtomicUoWriteU8(volatile uint8_t *pu8, uint8_t u8) +{ + *pu8 = u8; /* byte writes are atomic on x86 */ +} + + +/** + * Atomically writes a signed 8-bit value, ordered. + * + * @param pi8 Pointer to the 8-bit variable to read. + * @param i8 The 8-bit value to assign to *pi8. + */ +DECLINLINE(void) ASMAtomicWriteS8(volatile int8_t *pi8, int8_t i8) +{ + ASMAtomicXchgS8(pi8, i8); +} + + +/** + * Atomically writes a signed 8-bit value, unordered. + * + * @param pi8 Pointer to the 8-bit variable to write. + * @param i8 The 8-bit value to assign to *pi8. + */ +DECLINLINE(void) ASMAtomicUoWriteS8(volatile int8_t *pi8, int8_t i8) +{ + *pi8 = i8; /* byte writes are atomic on x86 */ +} + + +/** + * Atomically writes an unsigned 16-bit value, ordered. + * + * @param pu16 Pointer to the 16-bit variable to write. + * @param u16 The 16-bit value to assign to *pu16. + */ +DECLINLINE(void) ASMAtomicWriteU16(volatile uint16_t *pu16, uint16_t u16) +{ + ASMAtomicXchgU16(pu16, u16); +} + + +/** + * Atomically writes an unsigned 16-bit value, unordered. + * + * @param pu16 Pointer to the 16-bit variable to write. + * @param u16 The 16-bit value to assign to *pu16. + */ +DECLINLINE(void) ASMAtomicUoWriteU16(volatile uint16_t *pu16, uint16_t u16) +{ + Assert(!((uintptr_t)pu16 & 1)); + *pu16 = u16; +} + + +/** + * Atomically writes a signed 16-bit value, ordered. + * + * @param pi16 Pointer to the 16-bit variable to write. + * @param i16 The 16-bit value to assign to *pi16. + */ +DECLINLINE(void) ASMAtomicWriteS16(volatile int16_t *pi16, int16_t i16) +{ + ASMAtomicXchgS16(pi16, i16); +} + + +/** + * Atomically writes a signed 16-bit value, unordered. + * + * @param pi16 Pointer to the 16-bit variable to write. + * @param i16 The 16-bit value to assign to *pi16. + */ +DECLINLINE(void) ASMAtomicUoWriteS16(volatile int16_t *pi16, int16_t i16) +{ + Assert(!((uintptr_t)pi16 & 1)); + *pi16 = i16; +} + + +/** + * Atomically writes an unsigned 32-bit value, ordered. + * + * @param pu32 Pointer to the 32-bit variable to write. + * @param u32 The 32-bit value to assign to *pu32. + */ +DECLINLINE(void) ASMAtomicWriteU32(volatile uint32_t *pu32, uint32_t u32) +{ + ASMAtomicXchgU32(pu32, u32); +} + + +/** + * Atomically writes an unsigned 32-bit value, unordered. + * + * @param pu32 Pointer to the 32-bit variable to write. + * @param u32 The 32-bit value to assign to *pu32. + */ +DECLINLINE(void) ASMAtomicUoWriteU32(volatile uint32_t *pu32, uint32_t u32) +{ + Assert(!((uintptr_t)pu32 & 3)); + *pu32 = u32; +} + + +/** + * Atomically writes a signed 32-bit value, ordered. + * + * @param pi32 Pointer to the 32-bit variable to write. + * @param i32 The 32-bit value to assign to *pi32. + */ +DECLINLINE(void) ASMAtomicWriteS32(volatile int32_t *pi32, int32_t i32) +{ + ASMAtomicXchgS32(pi32, i32); +} + + +/** + * Atomically writes a signed 32-bit value, unordered. + * + * @param pi32 Pointer to the 32-bit variable to write. + * @param i32 The 32-bit value to assign to *pi32. + */ +DECLINLINE(void) ASMAtomicUoWriteS32(volatile int32_t *pi32, int32_t i32) +{ + Assert(!((uintptr_t)pi32 & 3)); + *pi32 = i32; +} + + +/** + * Atomically writes an unsigned 64-bit value, ordered. + * + * @param pu64 Pointer to the 64-bit variable to write. + * @param u64 The 64-bit value to assign to *pu64. + */ +DECLINLINE(void) ASMAtomicWriteU64(volatile uint64_t *pu64, uint64_t u64) +{ + ASMAtomicXchgU64(pu64, u64); +} + + +/** + * Atomically writes an unsigned 64-bit value, unordered. + * + * @param pu64 Pointer to the 64-bit variable to write. + * @param u64 The 64-bit value to assign to *pu64. + */ +DECLINLINE(void) ASMAtomicUoWriteU64(volatile uint64_t *pu64, uint64_t u64) +{ + Assert(!((uintptr_t)pu64 & 7)); +#if ARCH_BITS == 64 + *pu64 = u64; +#else + ASMAtomicXchgU64(pu64, u64); +#endif +} + + +/** + * Atomically writes a signed 64-bit value, ordered. + * + * @param pi64 Pointer to the 64-bit variable to write. + * @param i64 The 64-bit value to assign to *pi64. + */ +DECLINLINE(void) ASMAtomicWriteS64(volatile int64_t *pi64, int64_t i64) +{ + ASMAtomicXchgS64(pi64, i64); +} + + +/** + * Atomically writes a signed 64-bit value, unordered. + * + * @param pi64 Pointer to the 64-bit variable to write. + * @param i64 The 64-bit value to assign to *pi64. + */ +DECLINLINE(void) ASMAtomicUoWriteS64(volatile int64_t *pi64, int64_t i64) +{ + Assert(!((uintptr_t)pi64 & 7)); +#if ARCH_BITS == 64 + *pi64 = i64; +#else + ASMAtomicXchgS64(pi64, i64); +#endif +} + + +/** + * Atomically writes a boolean value, unordered. + * + * @param pf Pointer to the boolean variable to write. + * @param f The boolean value to assign to *pf. + */ +DECLINLINE(void) ASMAtomicWriteBool(volatile bool *pf, bool f) +{ + ASMAtomicWriteU8((uint8_t volatile *)pf, f); +} + + +/** + * Atomically writes a boolean value, unordered. + * + * @param pf Pointer to the boolean variable to write. + * @param f The boolean value to assign to *pf. + */ +DECLINLINE(void) ASMAtomicUoWriteBool(volatile bool *pf, bool f) +{ + *pf = f; /* byte writes are atomic on x86 */ +} + + +/** + * Atomically writes a pointer value, ordered. + * + * @param ppv Pointer to the pointer variable to write. + * @param pv The pointer value to assign to *ppv. + */ +DECLINLINE(void) ASMAtomicWritePtrVoid(void * volatile *ppv, const void *pv) +{ +#if ARCH_BITS == 32 + ASMAtomicWriteU32((volatile uint32_t *)(void *)ppv, (uint32_t)pv); +#elif ARCH_BITS == 64 + ASMAtomicWriteU64((volatile uint64_t *)(void *)ppv, (uint64_t)pv); +#else +# error "ARCH_BITS is bogus" +#endif +} + + +/** + * Atomically writes a pointer value, ordered. + * + * @param ppv Pointer to the pointer variable to write. + * @param pv The pointer value to assign to *ppv. If NULL use + * ASMAtomicWriteNullPtr or you'll land in trouble. + * + * @remarks This is relatively type safe on GCC platforms when @a pv isn't + * NULL. + */ +#ifdef __GNUC__ +# define ASMAtomicWritePtr(ppv, pv) \ + do \ + { \ + __typeof__(*(ppv)) volatile * const ppvTypeChecked = (ppv); \ + __typeof__(*(ppv)) const pvTypeChecked = (pv); \ + \ + AssertCompile(sizeof(*ppv) == sizeof(void *)); \ + AssertCompile(sizeof(pv) == sizeof(void *)); \ + Assert(!( (uintptr_t)ppv & ((ARCH_BITS / 8) - 1) )); \ + \ + ASMAtomicWritePtrVoid((void * volatile *)(ppvTypeChecked), (void *)(pvTypeChecked)); \ + } while (0) +#else +# define ASMAtomicWritePtr(ppv, pv) \ + do \ + { \ + AssertCompile(sizeof(*ppv) == sizeof(void *)); \ + AssertCompile(sizeof(pv) == sizeof(void *)); \ + Assert(!( (uintptr_t)ppv & ((ARCH_BITS / 8) - 1) )); \ + \ + ASMAtomicWritePtrVoid((void * volatile *)(ppv), (void *)(pv)); \ + } while (0) +#endif + + +/** + * Atomically sets a pointer to NULL, ordered. + * + * @param ppv Pointer to the pointer variable that should be set to NULL. + * + * @remarks This is relatively type safe on GCC platforms. + */ +#ifdef __GNUC__ +# define ASMAtomicWriteNullPtr(ppv) \ + do \ + { \ + __typeof__(*(ppv)) * const ppvTypeChecked = (ppv); \ + AssertCompile(sizeof(*ppv) == sizeof(void *)); \ + Assert(!( (uintptr_t)ppv & ((ARCH_BITS / 8) - 1) )); \ + ASMAtomicWritePtrVoid((void * volatile *)(ppvTypeChecked), NULL); \ + } while (0) +#else +# define ASMAtomicWriteNullPtr(ppv) \ + do \ + { \ + AssertCompile(sizeof(*ppv) == sizeof(void *)); \ + Assert(!( (uintptr_t)ppv & ((ARCH_BITS / 8) - 1) )); \ + ASMAtomicWritePtrVoid((void * volatile *)(ppv), NULL); \ + } while (0) +#endif + + +/** + * Atomically writes a pointer value, unordered. + * + * @returns Current *pv value + * @param ppv Pointer to the pointer variable. + * @param pv The pointer value to assign to *ppv. If NULL use + * ASMAtomicUoWriteNullPtr or you'll land in trouble. + * + * @remarks This is relatively type safe on GCC platforms when @a pv isn't + * NULL. + */ +#ifdef __GNUC__ +# define ASMAtomicUoWritePtr(ppv, pv) \ + do \ + { \ + __typeof__(*(ppv)) volatile * const ppvTypeChecked = (ppv); \ + __typeof__(*(ppv)) const pvTypeChecked = (pv); \ + \ + AssertCompile(sizeof(*ppv) == sizeof(void *)); \ + AssertCompile(sizeof(pv) == sizeof(void *)); \ + Assert(!( (uintptr_t)ppv & ((ARCH_BITS / 8) - 1) )); \ + \ + *(ppvTypeChecked) = pvTypeChecked; \ + } while (0) +#else +# define ASMAtomicUoWritePtr(ppv, pv) \ + do \ + { \ + AssertCompile(sizeof(*ppv) == sizeof(void *)); \ + AssertCompile(sizeof(pv) == sizeof(void *)); \ + Assert(!( (uintptr_t)ppv & ((ARCH_BITS / 8) - 1) )); \ + *(ppv) = pv; \ + } while (0) +#endif + + +/** + * Atomically sets a pointer to NULL, unordered. + * + * @param ppv Pointer to the pointer variable that should be set to NULL. + * + * @remarks This is relatively type safe on GCC platforms. + */ +#ifdef __GNUC__ +# define ASMAtomicUoWriteNullPtr(ppv) \ + do \ + { \ + __typeof__(*(ppv)) volatile * const ppvTypeChecked = (ppv); \ + AssertCompile(sizeof(*ppv) == sizeof(void *)); \ + Assert(!( (uintptr_t)ppv & ((ARCH_BITS / 8) - 1) )); \ + *(ppvTypeChecked) = NULL; \ + } while (0) +#else +# define ASMAtomicUoWriteNullPtr(ppv) \ + do \ + { \ + AssertCompile(sizeof(*ppv) == sizeof(void *)); \ + Assert(!( (uintptr_t)ppv & ((ARCH_BITS / 8) - 1) )); \ + *(ppv) = NULL; \ + } while (0) +#endif + + +/** + * Atomically write a typical IPRT handle value, ordered. + * + * @param ph Pointer to the variable to update. + * @param hNew The value to assign to *ph. + * + * @remarks This doesn't currently work for all handles (like RTFILE). + */ +#if HC_ARCH_BITS == 32 +# define ASMAtomicWriteHandle(ph, hNew) \ + do { \ + AssertCompile(sizeof(*(ph)) == sizeof(uint32_t)); \ + ASMAtomicWriteU32((uint32_t volatile *)(ph), (const uint32_t)(hNew)); \ + } while (0) +#elif HC_ARCH_BITS == 64 +# define ASMAtomicWriteHandle(ph, hNew) \ + do { \ + AssertCompile(sizeof(*(ph)) == sizeof(uint64_t)); \ + ASMAtomicWriteU64((uint64_t volatile *)(ph), (const uint64_t)(hNew)); \ + } while (0) +#else +# error HC_ARCH_BITS +#endif + + +/** + * Atomically write a typical IPRT handle value, unordered. + * + * @param ph Pointer to the variable to update. + * @param hNew The value to assign to *ph. + * + * @remarks This doesn't currently work for all handles (like RTFILE). + */ +#if HC_ARCH_BITS == 32 +# define ASMAtomicUoWriteHandle(ph, hNew) \ + do { \ + AssertCompile(sizeof(*(ph)) == sizeof(uint32_t)); \ + ASMAtomicUoWriteU32((uint32_t volatile *)(ph), (const uint32_t)hNew); \ + } while (0) +#elif HC_ARCH_BITS == 64 +# define ASMAtomicUoWriteHandle(ph, hNew) \ + do { \ + AssertCompile(sizeof(*(ph)) == sizeof(uint64_t)); \ + ASMAtomicUoWriteU64((uint64_t volatile *)(ph), (const uint64_t)hNew); \ + } while (0) +#else +# error HC_ARCH_BITS +#endif + + +/** + * Atomically write a value which size might differ + * between platforms or compilers, ordered. + * + * @param pu Pointer to the variable to update. + * @param uNew The value to assign to *pu. + */ +#define ASMAtomicWriteSize(pu, uNew) \ + do { \ + switch (sizeof(*(pu))) { \ + case 1: ASMAtomicWriteU8( (volatile uint8_t *)(void *)(pu), (uint8_t )(uNew)); break; \ + case 2: ASMAtomicWriteU16((volatile uint16_t *)(void *)(pu), (uint16_t)(uNew)); break; \ + case 4: ASMAtomicWriteU32((volatile uint32_t *)(void *)(pu), (uint32_t)(uNew)); break; \ + case 8: ASMAtomicWriteU64((volatile uint64_t *)(void *)(pu), (uint64_t)(uNew)); break; \ + default: AssertMsgFailed(("ASMAtomicWriteSize: size %d is not supported\n", sizeof(*(pu)))); \ + } \ + } while (0) + +/** + * Atomically write a value which size might differ + * between platforms or compilers, unordered. + * + * @param pu Pointer to the variable to update. + * @param uNew The value to assign to *pu. + */ +#define ASMAtomicUoWriteSize(pu, uNew) \ + do { \ + switch (sizeof(*(pu))) { \ + case 1: ASMAtomicUoWriteU8( (volatile uint8_t *)(void *)(pu), (uint8_t )(uNew)); break; \ + case 2: ASMAtomicUoWriteU16((volatile uint16_t *)(void *)(pu), (uint16_t)(uNew)); break; \ + case 4: ASMAtomicUoWriteU32((volatile uint32_t *)(void *)(pu), (uint32_t)(uNew)); break; \ + case 8: ASMAtomicUoWriteU64((volatile uint64_t *)(void *)(pu), (uint64_t)(uNew)); break; \ + default: AssertMsgFailed(("ASMAtomicWriteSize: size %d is not supported\n", sizeof(*(pu)))); \ + } \ + } while (0) + + + +/** + * Atomically exchanges and adds to a 32-bit value, ordered. + * + * @returns The old value. + * @param pu32 Pointer to the value. + * @param u32 Number to add. + */ +#if RT_INLINE_ASM_EXTERNAL && !RT_INLINE_ASM_USES_INTRIN +DECLASM(uint32_t) ASMAtomicAddU32(uint32_t volatile *pu32, uint32_t u32); +#else +DECLINLINE(uint32_t) ASMAtomicAddU32(uint32_t volatile *pu32, uint32_t u32) +{ +# if RT_INLINE_ASM_USES_INTRIN + u32 = _InterlockedExchangeAdd((long *)pu32, u32); + return u32; + +# elif RT_INLINE_ASM_GNU_STYLE + __asm__ __volatile__("lock; xaddl %0, %1\n\t" + : "=r" (u32), + "=m" (*pu32) + : "0" (u32), + "m" (*pu32) + : "memory"); + return u32; +# else + __asm + { + mov eax, [u32] +# ifdef RT_ARCH_AMD64 + mov rdx, [pu32] + lock xadd [rdx], eax +# else + mov edx, [pu32] + lock xadd [edx], eax +# endif + mov [u32], eax + } + return u32; +# endif +} +#endif + + +/** + * Atomically exchanges and adds to a signed 32-bit value, ordered. + * + * @returns The old value. + * @param pi32 Pointer to the value. + * @param i32 Number to add. + */ +DECLINLINE(int32_t) ASMAtomicAddS32(int32_t volatile *pi32, int32_t i32) +{ + return (int32_t)ASMAtomicAddU32((uint32_t volatile *)pi32, (uint32_t)i32); +} + + +/** + * Atomically exchanges and adds to a 64-bit value, ordered. + * + * @returns The old value. + * @param pu64 Pointer to the value. + * @param u64 Number to add. + */ +#if RT_INLINE_ASM_EXTERNAL && !RT_INLINE_ASM_USES_INTRIN +DECLASM(uint64_t) ASMAtomicAddU64(uint64_t volatile *pu64, uint64_t u64); +#else +DECLINLINE(uint64_t) ASMAtomicAddU64(uint64_t volatile *pu64, uint64_t u64) +{ +# if RT_INLINE_ASM_USES_INTRIN && defined(RT_ARCH_AMD64) + u64 = _InterlockedExchangeAdd64((__int64 *)pu64, u64); + return u64; + +# elif RT_INLINE_ASM_GNU_STYLE && defined(RT_ARCH_AMD64) + __asm__ __volatile__("lock; xaddq %0, %1\n\t" + : "=r" (u64), + "=m" (*pu64) + : "0" (u64), + "m" (*pu64) + : "memory"); + return u64; +# else + uint64_t u64Old; + for (;;) + { + uint64_t u64New; + u64Old = ASMAtomicUoReadU64(pu64); + u64New = u64Old + u64; + if (ASMAtomicCmpXchgU64(pu64, u64New, u64Old)) + break; + ASMNopPause(); + } + return u64Old; +# endif +} +#endif + + +/** + * Atomically exchanges and adds to a signed 64-bit value, ordered. + * + * @returns The old value. + * @param pi64 Pointer to the value. + * @param i64 Number to add. + */ +DECLINLINE(int64_t) ASMAtomicAddS64(int64_t volatile *pi64, int64_t i64) +{ + return (int64_t)ASMAtomicAddU64((uint64_t volatile *)pi64, (uint64_t)i64); +} + + +/** + * Atomically exchanges and adds to a size_t value, ordered. + * + * @returns The old value. + * @param pcb Pointer to the size_t value. + * @param cb Number to add. + */ +DECLINLINE(size_t) ASMAtomicAddZ(size_t volatile *pcb, size_t cb) +{ +#if ARCH_BITS == 64 + return ASMAtomicAddU64((uint64_t volatile *)pcb, cb); +#elif ARCH_BITS == 32 + return ASMAtomicAddU32((uint32_t volatile *)pcb, cb); +#else +# error "Unsupported ARCH_BITS value" +#endif +} + + +/** + * Atomically exchanges and adds a value which size might differ between + * platforms or compilers, ordered. + * + * @param pu Pointer to the variable to update. + * @param uNew The value to add to *pu. + * @param puOld Where to store the old value. + */ +#define ASMAtomicAddSize(pu, uNew, puOld) \ + do { \ + switch (sizeof(*(pu))) { \ + case 4: *(uint32_t *)(puOld) = ASMAtomicAddU32((volatile uint32_t *)(void *)(pu), (uint32_t)(uNew)); break; \ + case 8: *(uint64_t *)(puOld) = ASMAtomicAddU64((volatile uint64_t *)(void *)(pu), (uint64_t)(uNew)); break; \ + default: AssertMsgFailed(("ASMAtomicAddSize: size %d is not supported\n", sizeof(*(pu)))); \ + } \ + } while (0) + + +/** + * Atomically exchanges and subtracts to an unsigned 32-bit value, ordered. + * + * @returns The old value. + * @param pu32 Pointer to the value. + * @param u32 Number to subtract. + */ +DECLINLINE(uint32_t) ASMAtomicSubU32(uint32_t volatile *pu32, uint32_t u32) +{ + return ASMAtomicAddU32(pu32, (uint32_t)-(int32_t)u32); +} + + +/** + * Atomically exchanges and subtracts to a signed 32-bit value, ordered. + * + * @returns The old value. + * @param pi32 Pointer to the value. + * @param i32 Number to subtract. + */ +DECLINLINE(int32_t) ASMAtomicSubS32(int32_t volatile *pi32, int32_t i32) +{ + return (int32_t)ASMAtomicAddU32((uint32_t volatile *)pi32, (uint32_t)-i32); +} + + +/** + * Atomically exchanges and subtracts to an unsigned 64-bit value, ordered. + * + * @returns The old value. + * @param pu64 Pointer to the value. + * @param u64 Number to subtract. + */ +DECLINLINE(uint64_t) ASMAtomicSubU64(uint64_t volatile *pu64, uint64_t u64) +{ + return ASMAtomicAddU64(pu64, (uint64_t)-(int64_t)u64); +} + + +/** + * Atomically exchanges and subtracts to a signed 64-bit value, ordered. + * + * @returns The old value. + * @param pi64 Pointer to the value. + * @param i64 Number to subtract. + */ +DECLINLINE(int64_t) ASMAtomicSubS64(int64_t volatile *pi64, int64_t i64) +{ + return (int64_t)ASMAtomicAddU64((uint64_t volatile *)pi64, (uint64_t)-i64); +} + + +/** + * Atomically exchanges and subtracts to a size_t value, ordered. + * + * @returns The old value. + * @param pcb Pointer to the size_t value. + * @param cb Number to subtract. + */ +DECLINLINE(size_t) ASMAtomicSubZ(size_t volatile *pcb, size_t cb) +{ +#if ARCH_BITS == 64 + return ASMAtomicSubU64((uint64_t volatile *)pcb, cb); +#elif ARCH_BITS == 32 + return ASMAtomicSubU32((uint32_t volatile *)pcb, cb); +#else +# error "Unsupported ARCH_BITS value" +#endif +} + + +/** + * Atomically exchanges and subtracts a value which size might differ between + * platforms or compilers, ordered. + * + * @param pu Pointer to the variable to update. + * @param uNew The value to subtract to *pu. + * @param puOld Where to store the old value. + */ +#define ASMAtomicSubSize(pu, uNew, puOld) \ + do { \ + switch (sizeof(*(pu))) { \ + case 4: *(uint32_t *)(puOld) = ASMAtomicSubU32((volatile uint32_t *)(void *)(pu), (uint32_t)(uNew)); break; \ + case 8: *(uint64_t *)(puOld) = ASMAtomicSubU64((volatile uint64_t *)(void *)(pu), (uint64_t)(uNew)); break; \ + default: AssertMsgFailed(("ASMAtomicSubSize: size %d is not supported\n", sizeof(*(pu)))); \ + } \ + } while (0) + + +/** + * Atomically increment a 32-bit value, ordered. + * + * @returns The new value. + * @param pu32 Pointer to the value to increment. + */ +#if RT_INLINE_ASM_EXTERNAL && !RT_INLINE_ASM_USES_INTRIN +DECLASM(uint32_t) ASMAtomicIncU32(uint32_t volatile *pu32); +#else +DECLINLINE(uint32_t) ASMAtomicIncU32(uint32_t volatile *pu32) +{ + uint32_t u32; +# if RT_INLINE_ASM_USES_INTRIN + u32 = _InterlockedIncrement((long *)pu32); + return u32; + +# elif RT_INLINE_ASM_GNU_STYLE + __asm__ __volatile__("lock; xaddl %0, %1\n\t" + : "=r" (u32), + "=m" (*pu32) + : "0" (1), + "m" (*pu32) + : "memory"); + return u32+1; +# else + __asm + { + mov eax, 1 +# ifdef RT_ARCH_AMD64 + mov rdx, [pu32] + lock xadd [rdx], eax +# else + mov edx, [pu32] + lock xadd [edx], eax +# endif + mov u32, eax + } + return u32+1; +# endif +} +#endif + + +/** + * Atomically increment a signed 32-bit value, ordered. + * + * @returns The new value. + * @param pi32 Pointer to the value to increment. + */ +DECLINLINE(int32_t) ASMAtomicIncS32(int32_t volatile *pi32) +{ + return (int32_t)ASMAtomicIncU32((uint32_t volatile *)pi32); +} + + +/** + * Atomically increment a 64-bit value, ordered. + * + * @returns The new value. + * @param pu64 Pointer to the value to increment. + */ +#if RT_INLINE_ASM_EXTERNAL && !RT_INLINE_ASM_USES_INTRIN +DECLASM(uint64_t) ASMAtomicIncU64(uint64_t volatile *pu64); +#else +DECLINLINE(uint64_t) ASMAtomicIncU64(uint64_t volatile *pu64) +{ +# if RT_INLINE_ASM_USES_INTRIN && defined(RT_ARCH_AMD64) + uint64_t u64; + u64 = _InterlockedIncrement64((__int64 *)pu64); + return u64; + +# elif RT_INLINE_ASM_GNU_STYLE && defined(RT_ARCH_AMD64) + uint64_t u64; + __asm__ __volatile__("lock; xaddq %0, %1\n\t" + : "=r" (u64), + "=m" (*pu64) + : "0" (1), + "m" (*pu64) + : "memory"); + return u64 + 1; +# else + return ASMAtomicAddU64(pu64, 1) + 1; +# endif +} +#endif + + +/** + * Atomically increment a signed 64-bit value, ordered. + * + * @returns The new value. + * @param pi64 Pointer to the value to increment. + */ +DECLINLINE(int64_t) ASMAtomicIncS64(int64_t volatile *pi64) +{ + return (int64_t)ASMAtomicIncU64((uint64_t volatile *)pi64); +} + + +/** + * Atomically increment a size_t value, ordered. + * + * @returns The new value. + * @param pcb Pointer to the value to increment. + */ +DECLINLINE(int64_t) ASMAtomicIncZ(size_t volatile *pcb) +{ +#if ARCH_BITS == 64 + return ASMAtomicIncU64((uint64_t volatile *)pcb); +#elif ARCH_BITS == 32 + return ASMAtomicIncU32((uint32_t volatile *)pcb); +#else +# error "Unsupported ARCH_BITS value" +#endif +} + + +/** + * Atomically decrement an unsigned 32-bit value, ordered. + * + * @returns The new value. + * @param pu32 Pointer to the value to decrement. + */ +#if RT_INLINE_ASM_EXTERNAL && !RT_INLINE_ASM_USES_INTRIN +DECLASM(uint32_t) ASMAtomicDecU32(uint32_t volatile *pu32); +#else +DECLINLINE(uint32_t) ASMAtomicDecU32(uint32_t volatile *pu32) +{ + uint32_t u32; +# if RT_INLINE_ASM_USES_INTRIN + u32 = _InterlockedDecrement((long *)pu32); + return u32; + +# elif RT_INLINE_ASM_GNU_STYLE + __asm__ __volatile__("lock; xaddl %0, %1\n\t" + : "=r" (u32), + "=m" (*pu32) + : "0" (-1), + "m" (*pu32) + : "memory"); + return u32-1; +# else + __asm + { + mov eax, -1 +# ifdef RT_ARCH_AMD64 + mov rdx, [pu32] + lock xadd [rdx], eax +# else + mov edx, [pu32] + lock xadd [edx], eax +# endif + mov u32, eax + } + return u32-1; +# endif +} +#endif + + +/** + * Atomically decrement a signed 32-bit value, ordered. + * + * @returns The new value. + * @param pi32 Pointer to the value to decrement. + */ +DECLINLINE(int32_t) ASMAtomicDecS32(int32_t volatile *pi32) +{ + return (int32_t)ASMAtomicDecU32((uint32_t volatile *)pi32); +} + + +/** + * Atomically decrement an unsigned 64-bit value, ordered. + * + * @returns The new value. + * @param pu64 Pointer to the value to decrement. + */ +#if RT_INLINE_ASM_EXTERNAL && !RT_INLINE_ASM_USES_INTRIN +DECLASM(uint64_t) ASMAtomicDecU64(uint64_t volatile *pu64); +#else +DECLINLINE(uint64_t) ASMAtomicDecU64(uint64_t volatile *pu64) +{ +# if RT_INLINE_ASM_USES_INTRIN && defined(RT_ARCH_AMD64) + uint64_t u64 = _InterlockedDecrement64((__int64 volatile *)pu64); + return u64; + +# elif RT_INLINE_ASM_GNU_STYLE && defined(RT_ARCH_AMD64) + uint64_t u64; + __asm__ __volatile__("lock; xaddq %q0, %1\n\t" + : "=r" (u64), + "=m" (*pu64) + : "0" (~(uint64_t)0), + "m" (*pu64) + : "memory"); + return u64-1; +# else + return ASMAtomicAddU64(pu64, UINT64_MAX) - 1; +# endif +} +#endif + + +/** + * Atomically decrement a signed 64-bit value, ordered. + * + * @returns The new value. + * @param pi64 Pointer to the value to decrement. + */ +DECLINLINE(int64_t) ASMAtomicDecS64(int64_t volatile *pi64) +{ + return (int64_t)ASMAtomicDecU64((uint64_t volatile *)pi64); +} + + +/** + * Atomically decrement a size_t value, ordered. + * + * @returns The new value. + * @param pcb Pointer to the value to decrement. + */ +DECLINLINE(int64_t) ASMAtomicDecZ(size_t volatile *pcb) +{ +#if ARCH_BITS == 64 + return ASMAtomicDecU64((uint64_t volatile *)pcb); +#elif ARCH_BITS == 32 + return ASMAtomicDecU32((uint32_t volatile *)pcb); +#else +# error "Unsupported ARCH_BITS value" +#endif +} + + +/** + * Atomically Or an unsigned 32-bit value, ordered. + * + * @param pu32 Pointer to the pointer variable to OR u32 with. + * @param u32 The value to OR *pu32 with. + */ +#if RT_INLINE_ASM_EXTERNAL && !RT_INLINE_ASM_USES_INTRIN +DECLASM(void) ASMAtomicOrU32(uint32_t volatile *pu32, uint32_t u32); +#else +DECLINLINE(void) ASMAtomicOrU32(uint32_t volatile *pu32, uint32_t u32) +{ +# if RT_INLINE_ASM_USES_INTRIN + _InterlockedOr((long volatile *)pu32, (long)u32); + +# elif RT_INLINE_ASM_GNU_STYLE + __asm__ __volatile__("lock; orl %1, %0\n\t" + : "=m" (*pu32) + : "ir" (u32), + "m" (*pu32)); +# else + __asm + { + mov eax, [u32] +# ifdef RT_ARCH_AMD64 + mov rdx, [pu32] + lock or [rdx], eax +# else + mov edx, [pu32] + lock or [edx], eax +# endif + } +# endif +} +#endif + + +/** + * Atomically Or a signed 32-bit value, ordered. + * + * @param pi32 Pointer to the pointer variable to OR u32 with. + * @param i32 The value to OR *pu32 with. + */ +DECLINLINE(void) ASMAtomicOrS32(int32_t volatile *pi32, int32_t i32) +{ + ASMAtomicOrU32((uint32_t volatile *)pi32, i32); +} + + +/** + * Atomically Or an unsigned 64-bit value, ordered. + * + * @param pu64 Pointer to the pointer variable to OR u64 with. + * @param u64 The value to OR *pu64 with. + */ +#if RT_INLINE_ASM_EXTERNAL && !RT_INLINE_ASM_USES_INTRIN +DECLASM(void) ASMAtomicOrU64(uint64_t volatile *pu64, uint64_t u64); +#else +DECLINLINE(void) ASMAtomicOrU64(uint64_t volatile *pu64, uint64_t u64) +{ +# if RT_INLINE_ASM_USES_INTRIN && defined(RT_ARCH_AMD64) + _InterlockedOr64((__int64 volatile *)pu64, (__int64)u64); + +# elif RT_INLINE_ASM_GNU_STYLE && defined(RT_ARCH_AMD64) + __asm__ __volatile__("lock; orq %1, %q0\n\t" + : "=m" (*pu64) + : "r" (u64), + "m" (*pu64)); +# else + for (;;) + { + uint64_t u64Old = ASMAtomicUoReadU64(pu64); + uint64_t u64New = u64Old | u64; + if (ASMAtomicCmpXchgU64(pu64, u64New, u64Old)) + break; + ASMNopPause(); + } +# endif +} +#endif + + +/** + * Atomically Or a signed 64-bit value, ordered. + * + * @param pi64 Pointer to the pointer variable to OR u64 with. + * @param i64 The value to OR *pu64 with. + */ +DECLINLINE(void) ASMAtomicOrS64(int64_t volatile *pi64, int64_t i64) +{ + ASMAtomicOrU64((uint64_t volatile *)pi64, i64); +} + + +/** + * Atomically And an unsigned 32-bit value, ordered. + * + * @param pu32 Pointer to the pointer variable to AND u32 with. + * @param u32 The value to AND *pu32 with. + */ +#if RT_INLINE_ASM_EXTERNAL && !RT_INLINE_ASM_USES_INTRIN +DECLASM(void) ASMAtomicAndU32(uint32_t volatile *pu32, uint32_t u32); +#else +DECLINLINE(void) ASMAtomicAndU32(uint32_t volatile *pu32, uint32_t u32) +{ +# if RT_INLINE_ASM_USES_INTRIN + _InterlockedAnd((long volatile *)pu32, u32); + +# elif RT_INLINE_ASM_GNU_STYLE + __asm__ __volatile__("lock; andl %1, %0\n\t" + : "=m" (*pu32) + : "ir" (u32), + "m" (*pu32)); +# else + __asm + { + mov eax, [u32] +# ifdef RT_ARCH_AMD64 + mov rdx, [pu32] + lock and [rdx], eax +# else + mov edx, [pu32] + lock and [edx], eax +# endif + } +# endif +} +#endif + + +/** + * Atomically And a signed 32-bit value, ordered. + * + * @param pi32 Pointer to the pointer variable to AND i32 with. + * @param i32 The value to AND *pi32 with. + */ +DECLINLINE(void) ASMAtomicAndS32(int32_t volatile *pi32, int32_t i32) +{ + ASMAtomicAndU32((uint32_t volatile *)pi32, (uint32_t)i32); +} + + +/** + * Atomically And an unsigned 64-bit value, ordered. + * + * @param pu64 Pointer to the pointer variable to AND u64 with. + * @param u64 The value to AND *pu64 with. + */ +#if RT_INLINE_ASM_EXTERNAL && !RT_INLINE_ASM_USES_INTRIN +DECLASM(void) ASMAtomicAndU64(uint64_t volatile *pu64, uint64_t u64); +#else +DECLINLINE(void) ASMAtomicAndU64(uint64_t volatile *pu64, uint64_t u64) +{ +# if RT_INLINE_ASM_USES_INTRIN && defined(RT_ARCH_AMD64) + _InterlockedAnd64((__int64 volatile *)pu64, u64); + +# elif RT_INLINE_ASM_GNU_STYLE && defined(RT_ARCH_AMD64) + __asm__ __volatile__("lock; andq %1, %0\n\t" + : "=m" (*pu64) + : "r" (u64), + "m" (*pu64)); +# else + for (;;) + { + uint64_t u64Old = ASMAtomicUoReadU64(pu64); + uint64_t u64New = u64Old & u64; + if (ASMAtomicCmpXchgU64(pu64, u64New, u64Old)) + break; + ASMNopPause(); + } +# endif +} +#endif + + +/** + * Atomically And a signed 64-bit value, ordered. + * + * @param pi64 Pointer to the pointer variable to AND i64 with. + * @param i64 The value to AND *pi64 with. + */ +DECLINLINE(void) ASMAtomicAndS64(int64_t volatile *pi64, int64_t i64) +{ + ASMAtomicAndU64((uint64_t volatile *)pi64, (uint64_t)i64); +} + + +/** + * Atomically OR an unsigned 32-bit value, unordered but interrupt safe. + * + * @param pu32 Pointer to the pointer variable to OR u32 with. + * @param u32 The value to OR *pu32 with. + */ +#if RT_INLINE_ASM_EXTERNAL +DECLASM(void) ASMAtomicUoOrU32(uint32_t volatile *pu32, uint32_t u32); +#else +DECLINLINE(void) ASMAtomicUoOrU32(uint32_t volatile *pu32, uint32_t u32) +{ +# if RT_INLINE_ASM_GNU_STYLE + __asm__ __volatile__("orl %1, %0\n\t" + : "=m" (*pu32) + : "ir" (u32), + "m" (*pu32)); +# else + __asm + { + mov eax, [u32] +# ifdef RT_ARCH_AMD64 + mov rdx, [pu32] + or [rdx], eax +# else + mov edx, [pu32] + or [edx], eax +# endif + } +# endif +} +#endif + + +/** + * Atomically OR a signed 32-bit value, unordered. + * + * @param pi32 Pointer to the pointer variable to OR u32 with. + * @param i32 The value to OR *pu32 with. + */ +DECLINLINE(void) ASMAtomicUoOrS32(int32_t volatile *pi32, int32_t i32) +{ + ASMAtomicUoOrU32((uint32_t volatile *)pi32, i32); +} + + +/** + * Atomically OR an unsigned 64-bit value, unordered. + * + * @param pu64 Pointer to the pointer variable to OR u64 with. + * @param u64 The value to OR *pu64 with. + */ +#if RT_INLINE_ASM_EXTERNAL +DECLASM(void) ASMAtomicUoOrU64(uint64_t volatile *pu64, uint64_t u64); +#else +DECLINLINE(void) ASMAtomicUoOrU64(uint64_t volatile *pu64, uint64_t u64) +{ +# if RT_INLINE_ASM_GNU_STYLE && defined(RT_ARCH_AMD64) + __asm__ __volatile__("orq %1, %q0\n\t" + : "=m" (*pu64) + : "r" (u64), + "m" (*pu64)); +# else + for (;;) + { + uint64_t u64Old = ASMAtomicUoReadU64(pu64); + uint64_t u64New = u64Old | u64; + if (ASMAtomicCmpXchgU64(pu64, u64New, u64Old)) + break; + ASMNopPause(); + } +# endif +} +#endif + + +/** + * Atomically Or a signed 64-bit value, unordered. + * + * @param pi64 Pointer to the pointer variable to OR u64 with. + * @param i64 The value to OR *pu64 with. + */ +DECLINLINE(void) ASMAtomicUoOrS64(int64_t volatile *pi64, int64_t i64) +{ + ASMAtomicUoOrU64((uint64_t volatile *)pi64, i64); +} + + +/** + * Atomically And an unsigned 32-bit value, unordered. + * + * @param pu32 Pointer to the pointer variable to AND u32 with. + * @param u32 The value to AND *pu32 with. + */ +#if RT_INLINE_ASM_EXTERNAL +DECLASM(void) ASMAtomicUoAndU32(uint32_t volatile *pu32, uint32_t u32); +#else +DECLINLINE(void) ASMAtomicUoAndU32(uint32_t volatile *pu32, uint32_t u32) +{ +# if RT_INLINE_ASM_GNU_STYLE + __asm__ __volatile__("andl %1, %0\n\t" + : "=m" (*pu32) + : "ir" (u32), + "m" (*pu32)); +# else + __asm + { + mov eax, [u32] +# ifdef RT_ARCH_AMD64 + mov rdx, [pu32] + and [rdx], eax +# else + mov edx, [pu32] + and [edx], eax +# endif + } +# endif +} +#endif + + +/** + * Atomically And a signed 32-bit value, unordered. + * + * @param pi32 Pointer to the pointer variable to AND i32 with. + * @param i32 The value to AND *pi32 with. + */ +DECLINLINE(void) ASMAtomicUoAndS32(int32_t volatile *pi32, int32_t i32) +{ + ASMAtomicUoAndU32((uint32_t volatile *)pi32, (uint32_t)i32); +} + + +/** + * Atomically And an unsigned 64-bit value, unordered. + * + * @param pu64 Pointer to the pointer variable to AND u64 with. + * @param u64 The value to AND *pu64 with. + */ +#if RT_INLINE_ASM_EXTERNAL +DECLASM(void) ASMAtomicUoAndU64(uint64_t volatile *pu64, uint64_t u64); +#else +DECLINLINE(void) ASMAtomicUoAndU64(uint64_t volatile *pu64, uint64_t u64) +{ +# if RT_INLINE_ASM_GNU_STYLE && defined(RT_ARCH_AMD64) + __asm__ __volatile__("andq %1, %0\n\t" + : "=m" (*pu64) + : "r" (u64), + "m" (*pu64)); +# else + for (;;) + { + uint64_t u64Old = ASMAtomicUoReadU64(pu64); + uint64_t u64New = u64Old & u64; + if (ASMAtomicCmpXchgU64(pu64, u64New, u64Old)) + break; + ASMNopPause(); + } +# endif +} +#endif + + +/** + * Atomically And a signed 64-bit value, unordered. + * + * @param pi64 Pointer to the pointer variable to AND i64 with. + * @param i64 The value to AND *pi64 with. + */ +DECLINLINE(void) ASMAtomicUoAndS64(int64_t volatile *pi64, int64_t i64) +{ + ASMAtomicUoAndU64((uint64_t volatile *)pi64, (uint64_t)i64); +} + + +/** + * Atomically increment an unsigned 32-bit value, unordered. + * + * @returns the new value. + * @param pu32 Pointer to the variable to increment. + */ +#if RT_INLINE_ASM_EXTERNAL +DECLASM(uint32_t) ASMAtomicUoIncU32(uint32_t volatile *pu32); +#else +DECLINLINE(uint32_t) ASMAtomicUoIncU32(uint32_t volatile *pu32) +{ + uint32_t u32; +# if RT_INLINE_ASM_GNU_STYLE + __asm__ __volatile__("xaddl %0, %1\n\t" + : "=r" (u32), + "=m" (*pu32) + : "0" (1), + "m" (*pu32) + : "memory"); + return u32 + 1; +# else + __asm + { + mov eax, 1 +# ifdef RT_ARCH_AMD64 + mov rdx, [pu32] + xadd [rdx], eax +# else + mov edx, [pu32] + xadd [edx], eax +# endif + mov u32, eax + } + return u32 + 1; +# endif +} +#endif + + +/** + * Atomically decrement an unsigned 32-bit value, unordered. + * + * @returns the new value. + * @param pu32 Pointer to the variable to decrement. + */ +#if RT_INLINE_ASM_EXTERNAL +DECLASM(uint32_t) ASMAtomicUoDecU32(uint32_t volatile *pu32); +#else +DECLINLINE(uint32_t) ASMAtomicUoDecU32(uint32_t volatile *pu32) +{ + uint32_t u32; +# if RT_INLINE_ASM_GNU_STYLE + __asm__ __volatile__("lock; xaddl %0, %1\n\t" + : "=r" (u32), + "=m" (*pu32) + : "0" (-1), + "m" (*pu32) + : "memory"); + return u32 - 1; +# else + __asm + { + mov eax, -1 +# ifdef RT_ARCH_AMD64 + mov rdx, [pu32] + xadd [rdx], eax +# else + mov edx, [pu32] + xadd [edx], eax +# endif + mov u32, eax + } + return u32 - 1; +# endif +} +#endif + + +/** @def RT_ASM_PAGE_SIZE + * We try avoid dragging in iprt/param.h here. + * @internal + */ +#if defined(RT_ARCH_SPARC64) +# define RT_ASM_PAGE_SIZE 0x2000 +# if defined(PAGE_SIZE) && !defined(NT_INCLUDED) +# if PAGE_SIZE != 0x2000 +# error "PAGE_SIZE is not 0x2000!" +# endif +# endif +#else +# define RT_ASM_PAGE_SIZE 0x1000 +# if defined(PAGE_SIZE) && !defined(NT_INCLUDED) +# if PAGE_SIZE != 0x1000 +# error "PAGE_SIZE is not 0x1000!" +# endif +# endif +#endif + +/** + * Zeros a 4K memory page. + * + * @param pv Pointer to the memory block. This must be page aligned. + */ +#if RT_INLINE_ASM_EXTERNAL && !RT_INLINE_ASM_USES_INTRIN +DECLASM(void) ASMMemZeroPage(volatile void *pv); +# else +DECLINLINE(void) ASMMemZeroPage(volatile void *pv) +{ +# if RT_INLINE_ASM_USES_INTRIN +# ifdef RT_ARCH_AMD64 + __stosq((unsigned __int64 *)pv, 0, RT_ASM_PAGE_SIZE / 8); +# else + __stosd((unsigned long *)pv, 0, RT_ASM_PAGE_SIZE / 4); +# endif + +# elif RT_INLINE_ASM_GNU_STYLE + RTCCUINTREG uDummy; +# ifdef RT_ARCH_AMD64 + __asm__ __volatile__("rep stosq" + : "=D" (pv), + "=c" (uDummy) + : "0" (pv), + "c" (RT_ASM_PAGE_SIZE >> 3), + "a" (0) + : "memory"); +# else + __asm__ __volatile__("rep stosl" + : "=D" (pv), + "=c" (uDummy) + : "0" (pv), + "c" (RT_ASM_PAGE_SIZE >> 2), + "a" (0) + : "memory"); +# endif +# else + __asm + { +# ifdef RT_ARCH_AMD64 + xor rax, rax + mov ecx, 0200h + mov rdi, [pv] + rep stosq +# else + xor eax, eax + mov ecx, 0400h + mov edi, [pv] + rep stosd +# endif + } +# endif +} +# endif + + +/** + * Zeros a memory block with a 32-bit aligned size. + * + * @param pv Pointer to the memory block. + * @param cb Number of bytes in the block. This MUST be aligned on 32-bit! + */ +#if RT_INLINE_ASM_EXTERNAL && !RT_INLINE_ASM_USES_INTRIN +DECLASM(void) ASMMemZero32(volatile void *pv, size_t cb); +#else +DECLINLINE(void) ASMMemZero32(volatile void *pv, size_t cb) +{ +# if RT_INLINE_ASM_USES_INTRIN +# ifdef RT_ARCH_AMD64 + if (!(cb & 7)) + __stosq((unsigned __int64 *)pv, 0, cb / 8); + else +# endif + __stosd((unsigned long *)pv, 0, cb / 4); + +# elif RT_INLINE_ASM_GNU_STYLE + __asm__ __volatile__("rep stosl" + : "=D" (pv), + "=c" (cb) + : "0" (pv), + "1" (cb >> 2), + "a" (0) + : "memory"); +# else + __asm + { + xor eax, eax +# ifdef RT_ARCH_AMD64 + mov rcx, [cb] + shr rcx, 2 + mov rdi, [pv] +# else + mov ecx, [cb] + shr ecx, 2 + mov edi, [pv] +# endif + rep stosd + } +# endif +} +#endif + + +/** + * Fills a memory block with a 32-bit aligned size. + * + * @param pv Pointer to the memory block. + * @param cb Number of bytes in the block. This MUST be aligned on 32-bit! + * @param u32 The value to fill with. + */ +#if RT_INLINE_ASM_EXTERNAL && !RT_INLINE_ASM_USES_INTRIN +DECLASM(void) ASMMemFill32(volatile void *pv, size_t cb, uint32_t u32); +#else +DECLINLINE(void) ASMMemFill32(volatile void *pv, size_t cb, uint32_t u32) +{ +# if RT_INLINE_ASM_USES_INTRIN +# ifdef RT_ARCH_AMD64 + if (!(cb & 7)) + __stosq((unsigned __int64 *)pv, RT_MAKE_U64(u32, u32), cb / 8); + else +# endif + __stosd((unsigned long *)pv, u32, cb / 4); + +# elif RT_INLINE_ASM_GNU_STYLE + __asm__ __volatile__("rep stosl" + : "=D" (pv), + "=c" (cb) + : "0" (pv), + "1" (cb >> 2), + "a" (u32) + : "memory"); +# else + __asm + { +# ifdef RT_ARCH_AMD64 + mov rcx, [cb] + shr rcx, 2 + mov rdi, [pv] +# else + mov ecx, [cb] + shr ecx, 2 + mov edi, [pv] +# endif + mov eax, [u32] + rep stosd + } +# endif +} +#endif + + +/** + * Checks if a memory page is all zeros. + * + * @returns true / false. + * + * @param pvPage Pointer to the page. Must be aligned on 16 byte + * boundary + */ +DECLINLINE(bool) ASMMemIsZeroPage(void const *pvPage) +{ +# if 0 /*RT_INLINE_ASM_GNU_STYLE - this is actually slower... */ + union { RTCCUINTREG r; bool f; } uAX; + RTCCUINTREG xCX, xDI; + Assert(!((uintptr_t)pvPage & 15)); + __asm__ __volatile__("repe; " +# ifdef RT_ARCH_AMD64 + "scasq\n\t" +# else + "scasl\n\t" +# endif + "setnc %%al\n\t" + : "=&c" (xCX), + "=&D" (xDI), + "=&a" (uAX.r) + : "mr" (pvPage), +# ifdef RT_ARCH_AMD64 + "0" (RT_ASM_PAGE_SIZE/8), +# else + "0" (RT_ASM_PAGE_SIZE/4), +# endif + "1" (pvPage), + "2" (0)); + return uAX.f; +# else + uintptr_t const *puPtr = (uintptr_t const *)pvPage; + int cLeft = RT_ASM_PAGE_SIZE / sizeof(uintptr_t) / 8; + Assert(!((uintptr_t)pvPage & 15)); + for (;;) + { + if (puPtr[0]) return false; + if (puPtr[4]) return false; + + if (puPtr[2]) return false; + if (puPtr[6]) return false; + + if (puPtr[1]) return false; + if (puPtr[5]) return false; + + if (puPtr[3]) return false; + if (puPtr[7]) return false; + + if (!--cLeft) + return true; + puPtr += 8; + } + return true; +# endif +} + + +/** + * Checks if a memory block is filled with the specified byte. + * + * This is a sort of inverted memchr. + * + * @returns Pointer to the byte which doesn't equal u8. + * @returns NULL if all equal to u8. + * + * @param pv Pointer to the memory block. + * @param cb Number of bytes in the block. This MUST be aligned on 32-bit! + * @param u8 The value it's supposed to be filled with. + * + * @todo Fix name, it is a predicate function but it's not returning boolean! + */ +DECLINLINE(void *) ASMMemIsAll8(void const *pv, size_t cb, uint8_t u8) +{ +/** @todo rewrite this in inline assembly? */ + uint8_t const *pb = (uint8_t const *)pv; + for (; cb; cb--, pb++) + if (RT_LIKELY(*pb == u8)) + { /* likely */ } + else + return (void *)pb; + return NULL; +} + + +/** + * Checks if a memory block is filled with the specified 32-bit value. + * + * This is a sort of inverted memchr. + * + * @returns Pointer to the first value which doesn't equal u32. + * @returns NULL if all equal to u32. + * + * @param pv Pointer to the memory block. + * @param cb Number of bytes in the block. This MUST be aligned on 32-bit! + * @param u32 The value it's supposed to be filled with. + * + * @todo Fix name, it is a predicate function but it's not returning boolean! + */ +DECLINLINE(uint32_t *) ASMMemIsAllU32(void const *pv, size_t cb, uint32_t u32) +{ +/** @todo rewrite this in inline assembly? */ + uint32_t const *pu32 = (uint32_t const *)pv; + for (; cb; cb -= 4, pu32++) + if (RT_LIKELY(*pu32 == u32)) + { /* likely */ } + else + return (uint32_t *)pu32; + return NULL; +} + + +/** + * Probes a byte pointer for read access. + * + * While the function will not fault if the byte is not read accessible, + * the idea is to do this in a safe place like before acquiring locks + * and such like. + * + * Also, this functions guarantees that an eager compiler is not going + * to optimize the probing away. + * + * @param pvByte Pointer to the byte. + */ +#if RT_INLINE_ASM_EXTERNAL +DECLASM(uint8_t) ASMProbeReadByte(const void *pvByte); +#else +DECLINLINE(uint8_t) ASMProbeReadByte(const void *pvByte) +{ + /** @todo verify that the compiler actually doesn't optimize this away. (intel & gcc) */ + uint8_t u8; +# if RT_INLINE_ASM_GNU_STYLE + __asm__ __volatile__("movb (%1), %0\n\t" + : "=r" (u8) + : "r" (pvByte)); +# else + __asm + { +# ifdef RT_ARCH_AMD64 + mov rax, [pvByte] + mov al, [rax] +# else + mov eax, [pvByte] + mov al, [eax] +# endif + mov [u8], al + } +# endif + return u8; +} +#endif + +/** + * Probes a buffer for read access page by page. + * + * While the function will fault if the buffer is not fully read + * accessible, the idea is to do this in a safe place like before + * acquiring locks and such like. + * + * Also, this functions guarantees that an eager compiler is not going + * to optimize the probing away. + * + * @param pvBuf Pointer to the buffer. + * @param cbBuf The size of the buffer in bytes. Must be >= 1. + */ +DECLINLINE(void) ASMProbeReadBuffer(const void *pvBuf, size_t cbBuf) +{ + /** @todo verify that the compiler actually doesn't optimize this away. (intel & gcc) */ + /* the first byte */ + const uint8_t *pu8 = (const uint8_t *)pvBuf; + ASMProbeReadByte(pu8); + + /* the pages in between pages. */ + while (cbBuf > RT_ASM_PAGE_SIZE) + { + ASMProbeReadByte(pu8); + cbBuf -= RT_ASM_PAGE_SIZE; + pu8 += RT_ASM_PAGE_SIZE; + } + + /* the last byte */ + ASMProbeReadByte(pu8 + cbBuf - 1); +} + + + +/** @defgroup grp_inline_bits Bit Operations + * @{ + */ + + +/** + * Sets a bit in a bitmap. + * + * @param pvBitmap Pointer to the bitmap. This should be 32-bit aligned. + * @param iBit The bit to set. + * + * @remarks The 32-bit aligning of pvBitmap is not a strict requirement. + * However, doing so will yield better performance as well as avoiding + * traps accessing the last bits in the bitmap. + */ +#if RT_INLINE_ASM_EXTERNAL && !RT_INLINE_ASM_USES_INTRIN +DECLASM(void) ASMBitSet(volatile void *pvBitmap, int32_t iBit); +#else +DECLINLINE(void) ASMBitSet(volatile void *pvBitmap, int32_t iBit) +{ +# if RT_INLINE_ASM_USES_INTRIN + _bittestandset((long *)pvBitmap, iBit); + +# elif RT_INLINE_ASM_GNU_STYLE + __asm__ __volatile__("btsl %1, %0" + : "=m" (*(volatile long *)pvBitmap) + : "Ir" (iBit), + "m" (*(volatile long *)pvBitmap) + : "memory"); +# else + __asm + { +# ifdef RT_ARCH_AMD64 + mov rax, [pvBitmap] + mov edx, [iBit] + bts [rax], edx +# else + mov eax, [pvBitmap] + mov edx, [iBit] + bts [eax], edx +# endif + } +# endif +} +#endif + + +/** + * Atomically sets a bit in a bitmap, ordered. + * + * @param pvBitmap Pointer to the bitmap. Must be 32-bit aligned, otherwise + * the memory access isn't atomic! + * @param iBit The bit to set. + */ +#if RT_INLINE_ASM_EXTERNAL && !RT_INLINE_ASM_USES_INTRIN +DECLASM(void) ASMAtomicBitSet(volatile void *pvBitmap, int32_t iBit); +#else +DECLINLINE(void) ASMAtomicBitSet(volatile void *pvBitmap, int32_t iBit) +{ + AssertMsg(!((uintptr_t)pvBitmap & 3), ("address %p not 32-bit aligned", pvBitmap)); +# if RT_INLINE_ASM_USES_INTRIN + _interlockedbittestandset((long *)pvBitmap, iBit); +# elif RT_INLINE_ASM_GNU_STYLE + __asm__ __volatile__("lock; btsl %1, %0" + : "=m" (*(volatile long *)pvBitmap) + : "Ir" (iBit), + "m" (*(volatile long *)pvBitmap) + : "memory"); +# else + __asm + { +# ifdef RT_ARCH_AMD64 + mov rax, [pvBitmap] + mov edx, [iBit] + lock bts [rax], edx +# else + mov eax, [pvBitmap] + mov edx, [iBit] + lock bts [eax], edx +# endif + } +# endif +} +#endif + + +/** + * Clears a bit in a bitmap. + * + * @param pvBitmap Pointer to the bitmap. + * @param iBit The bit to clear. + * + * @remarks The 32-bit aligning of pvBitmap is not a strict requirement. + * However, doing so will yield better performance as well as avoiding + * traps accessing the last bits in the bitmap. + */ +#if RT_INLINE_ASM_EXTERNAL && !RT_INLINE_ASM_USES_INTRIN +DECLASM(void) ASMBitClear(volatile void *pvBitmap, int32_t iBit); +#else +DECLINLINE(void) ASMBitClear(volatile void *pvBitmap, int32_t iBit) +{ +# if RT_INLINE_ASM_USES_INTRIN + _bittestandreset((long *)pvBitmap, iBit); + +# elif RT_INLINE_ASM_GNU_STYLE + __asm__ __volatile__("btrl %1, %0" + : "=m" (*(volatile long *)pvBitmap) + : "Ir" (iBit), + "m" (*(volatile long *)pvBitmap) + : "memory"); +# else + __asm + { +# ifdef RT_ARCH_AMD64 + mov rax, [pvBitmap] + mov edx, [iBit] + btr [rax], edx +# else + mov eax, [pvBitmap] + mov edx, [iBit] + btr [eax], edx +# endif + } +# endif +} +#endif + + +/** + * Atomically clears a bit in a bitmap, ordered. + * + * @param pvBitmap Pointer to the bitmap. Must be 32-bit aligned, otherwise + * the memory access isn't atomic! + * @param iBit The bit to toggle set. + * @remarks No memory barrier, take care on smp. + */ +#if RT_INLINE_ASM_EXTERNAL +DECLASM(void) ASMAtomicBitClear(volatile void *pvBitmap, int32_t iBit); +#else +DECLINLINE(void) ASMAtomicBitClear(volatile void *pvBitmap, int32_t iBit) +{ + AssertMsg(!((uintptr_t)pvBitmap & 3), ("address %p not 32-bit aligned", pvBitmap)); +# if RT_INLINE_ASM_GNU_STYLE + __asm__ __volatile__("lock; btrl %1, %0" + : "=m" (*(volatile long *)pvBitmap) + : "Ir" (iBit), + "m" (*(volatile long *)pvBitmap) + : "memory"); +# else + __asm + { +# ifdef RT_ARCH_AMD64 + mov rax, [pvBitmap] + mov edx, [iBit] + lock btr [rax], edx +# else + mov eax, [pvBitmap] + mov edx, [iBit] + lock btr [eax], edx +# endif + } +# endif +} +#endif + + +/** + * Toggles a bit in a bitmap. + * + * @param pvBitmap Pointer to the bitmap. + * @param iBit The bit to toggle. + * + * @remarks The 32-bit aligning of pvBitmap is not a strict requirement. + * However, doing so will yield better performance as well as avoiding + * traps accessing the last bits in the bitmap. + */ +#if RT_INLINE_ASM_EXTERNAL && !RT_INLINE_ASM_USES_INTRIN +DECLASM(void) ASMBitToggle(volatile void *pvBitmap, int32_t iBit); +#else +DECLINLINE(void) ASMBitToggle(volatile void *pvBitmap, int32_t iBit) +{ +# if RT_INLINE_ASM_USES_INTRIN + _bittestandcomplement((long *)pvBitmap, iBit); +# elif RT_INLINE_ASM_GNU_STYLE + __asm__ __volatile__("btcl %1, %0" + : "=m" (*(volatile long *)pvBitmap) + : "Ir" (iBit), + "m" (*(volatile long *)pvBitmap) + : "memory"); +# else + __asm + { +# ifdef RT_ARCH_AMD64 + mov rax, [pvBitmap] + mov edx, [iBit] + btc [rax], edx +# else + mov eax, [pvBitmap] + mov edx, [iBit] + btc [eax], edx +# endif + } +# endif +} +#endif + + +/** + * Atomically toggles a bit in a bitmap, ordered. + * + * @param pvBitmap Pointer to the bitmap. Must be 32-bit aligned, otherwise + * the memory access isn't atomic! + * @param iBit The bit to test and set. + */ +#if RT_INLINE_ASM_EXTERNAL +DECLASM(void) ASMAtomicBitToggle(volatile void *pvBitmap, int32_t iBit); +#else +DECLINLINE(void) ASMAtomicBitToggle(volatile void *pvBitmap, int32_t iBit) +{ + AssertMsg(!((uintptr_t)pvBitmap & 3), ("address %p not 32-bit aligned", pvBitmap)); +# if RT_INLINE_ASM_GNU_STYLE + __asm__ __volatile__("lock; btcl %1, %0" + : "=m" (*(volatile long *)pvBitmap) + : "Ir" (iBit), + "m" (*(volatile long *)pvBitmap) + : "memory"); +# else + __asm + { +# ifdef RT_ARCH_AMD64 + mov rax, [pvBitmap] + mov edx, [iBit] + lock btc [rax], edx +# else + mov eax, [pvBitmap] + mov edx, [iBit] + lock btc [eax], edx +# endif + } +# endif +} +#endif + + +/** + * Tests and sets a bit in a bitmap. + * + * @returns true if the bit was set. + * @returns false if the bit was clear. + * + * @param pvBitmap Pointer to the bitmap. + * @param iBit The bit to test and set. + * + * @remarks The 32-bit aligning of pvBitmap is not a strict requirement. + * However, doing so will yield better performance as well as avoiding + * traps accessing the last bits in the bitmap. + */ +#if RT_INLINE_ASM_EXTERNAL && !RT_INLINE_ASM_USES_INTRIN +DECLASM(bool) ASMBitTestAndSet(volatile void *pvBitmap, int32_t iBit); +#else +DECLINLINE(bool) ASMBitTestAndSet(volatile void *pvBitmap, int32_t iBit) +{ + union { bool f; uint32_t u32; uint8_t u8; } rc; +# if RT_INLINE_ASM_USES_INTRIN + rc.u8 = _bittestandset((long *)pvBitmap, iBit); + +# elif RT_INLINE_ASM_GNU_STYLE + __asm__ __volatile__("btsl %2, %1\n\t" + "setc %b0\n\t" + "andl $1, %0\n\t" + : "=q" (rc.u32), + "=m" (*(volatile long *)pvBitmap) + : "Ir" (iBit), + "m" (*(volatile long *)pvBitmap) + : "memory"); +# else + __asm + { + mov edx, [iBit] +# ifdef RT_ARCH_AMD64 + mov rax, [pvBitmap] + bts [rax], edx +# else + mov eax, [pvBitmap] + bts [eax], edx +# endif + setc al + and eax, 1 + mov [rc.u32], eax + } +# endif + return rc.f; +} +#endif + + +/** + * Atomically tests and sets a bit in a bitmap, ordered. + * + * @returns true if the bit was set. + * @returns false if the bit was clear. + * + * @param pvBitmap Pointer to the bitmap. Must be 32-bit aligned, otherwise + * the memory access isn't atomic! + * @param iBit The bit to set. + */ +#if RT_INLINE_ASM_EXTERNAL && !RT_INLINE_ASM_USES_INTRIN +DECLASM(bool) ASMAtomicBitTestAndSet(volatile void *pvBitmap, int32_t iBit); +#else +DECLINLINE(bool) ASMAtomicBitTestAndSet(volatile void *pvBitmap, int32_t iBit) +{ + union { bool f; uint32_t u32; uint8_t u8; } rc; + AssertMsg(!((uintptr_t)pvBitmap & 3), ("address %p not 32-bit aligned", pvBitmap)); +# if RT_INLINE_ASM_USES_INTRIN + rc.u8 = _interlockedbittestandset((long *)pvBitmap, iBit); +# elif RT_INLINE_ASM_GNU_STYLE + __asm__ __volatile__("lock; btsl %2, %1\n\t" + "setc %b0\n\t" + "andl $1, %0\n\t" + : "=q" (rc.u32), + "=m" (*(volatile long *)pvBitmap) + : "Ir" (iBit), + "m" (*(volatile long *)pvBitmap) + : "memory"); +# else + __asm + { + mov edx, [iBit] +# ifdef RT_ARCH_AMD64 + mov rax, [pvBitmap] + lock bts [rax], edx +# else + mov eax, [pvBitmap] + lock bts [eax], edx +# endif + setc al + and eax, 1 + mov [rc.u32], eax + } +# endif + return rc.f; +} +#endif + + +/** + * Tests and clears a bit in a bitmap. + * + * @returns true if the bit was set. + * @returns false if the bit was clear. + * + * @param pvBitmap Pointer to the bitmap. + * @param iBit The bit to test and clear. + * + * @remarks The 32-bit aligning of pvBitmap is not a strict requirement. + * However, doing so will yield better performance as well as avoiding + * traps accessing the last bits in the bitmap. + */ +#if RT_INLINE_ASM_EXTERNAL && !RT_INLINE_ASM_USES_INTRIN +DECLASM(bool) ASMBitTestAndClear(volatile void *pvBitmap, int32_t iBit); +#else +DECLINLINE(bool) ASMBitTestAndClear(volatile void *pvBitmap, int32_t iBit) +{ + union { bool f; uint32_t u32; uint8_t u8; } rc; +# if RT_INLINE_ASM_USES_INTRIN + rc.u8 = _bittestandreset((long *)pvBitmap, iBit); + +# elif RT_INLINE_ASM_GNU_STYLE + __asm__ __volatile__("btrl %2, %1\n\t" + "setc %b0\n\t" + "andl $1, %0\n\t" + : "=q" (rc.u32), + "=m" (*(volatile long *)pvBitmap) + : "Ir" (iBit), + "m" (*(volatile long *)pvBitmap) + : "memory"); +# else + __asm + { + mov edx, [iBit] +# ifdef RT_ARCH_AMD64 + mov rax, [pvBitmap] + btr [rax], edx +# else + mov eax, [pvBitmap] + btr [eax], edx +# endif + setc al + and eax, 1 + mov [rc.u32], eax + } +# endif + return rc.f; +} +#endif + + +/** + * Atomically tests and clears a bit in a bitmap, ordered. + * + * @returns true if the bit was set. + * @returns false if the bit was clear. + * + * @param pvBitmap Pointer to the bitmap. Must be 32-bit aligned, otherwise + * the memory access isn't atomic! + * @param iBit The bit to test and clear. + * + * @remarks No memory barrier, take care on smp. + */ +#if RT_INLINE_ASM_EXTERNAL && !RT_INLINE_ASM_USES_INTRIN +DECLASM(bool) ASMAtomicBitTestAndClear(volatile void *pvBitmap, int32_t iBit); +#else +DECLINLINE(bool) ASMAtomicBitTestAndClear(volatile void *pvBitmap, int32_t iBit) +{ + union { bool f; uint32_t u32; uint8_t u8; } rc; + AssertMsg(!((uintptr_t)pvBitmap & 3), ("address %p not 32-bit aligned", pvBitmap)); +# if RT_INLINE_ASM_USES_INTRIN + rc.u8 = _interlockedbittestandreset((long *)pvBitmap, iBit); + +# elif RT_INLINE_ASM_GNU_STYLE + __asm__ __volatile__("lock; btrl %2, %1\n\t" + "setc %b0\n\t" + "andl $1, %0\n\t" + : "=q" (rc.u32), + "=m" (*(volatile long *)pvBitmap) + : "Ir" (iBit), + "m" (*(volatile long *)pvBitmap) + : "memory"); +# else + __asm + { + mov edx, [iBit] +# ifdef RT_ARCH_AMD64 + mov rax, [pvBitmap] + lock btr [rax], edx +# else + mov eax, [pvBitmap] + lock btr [eax], edx +# endif + setc al + and eax, 1 + mov [rc.u32], eax + } +# endif + return rc.f; +} +#endif + + +/** + * Tests and toggles a bit in a bitmap. + * + * @returns true if the bit was set. + * @returns false if the bit was clear. + * + * @param pvBitmap Pointer to the bitmap. + * @param iBit The bit to test and toggle. + * + * @remarks The 32-bit aligning of pvBitmap is not a strict requirement. + * However, doing so will yield better performance as well as avoiding + * traps accessing the last bits in the bitmap. + */ +#if RT_INLINE_ASM_EXTERNAL && !RT_INLINE_ASM_USES_INTRIN +DECLASM(bool) ASMBitTestAndToggle(volatile void *pvBitmap, int32_t iBit); +#else +DECLINLINE(bool) ASMBitTestAndToggle(volatile void *pvBitmap, int32_t iBit) +{ + union { bool f; uint32_t u32; uint8_t u8; } rc; +# if RT_INLINE_ASM_USES_INTRIN + rc.u8 = _bittestandcomplement((long *)pvBitmap, iBit); + +# elif RT_INLINE_ASM_GNU_STYLE + __asm__ __volatile__("btcl %2, %1\n\t" + "setc %b0\n\t" + "andl $1, %0\n\t" + : "=q" (rc.u32), + "=m" (*(volatile long *)pvBitmap) + : "Ir" (iBit), + "m" (*(volatile long *)pvBitmap) + : "memory"); +# else + __asm + { + mov edx, [iBit] +# ifdef RT_ARCH_AMD64 + mov rax, [pvBitmap] + btc [rax], edx +# else + mov eax, [pvBitmap] + btc [eax], edx +# endif + setc al + and eax, 1 + mov [rc.u32], eax + } +# endif + return rc.f; +} +#endif + + +/** + * Atomically tests and toggles a bit in a bitmap, ordered. + * + * @returns true if the bit was set. + * @returns false if the bit was clear. + * + * @param pvBitmap Pointer to the bitmap. Must be 32-bit aligned, otherwise + * the memory access isn't atomic! + * @param iBit The bit to test and toggle. + */ +#if RT_INLINE_ASM_EXTERNAL +DECLASM(bool) ASMAtomicBitTestAndToggle(volatile void *pvBitmap, int32_t iBit); +#else +DECLINLINE(bool) ASMAtomicBitTestAndToggle(volatile void *pvBitmap, int32_t iBit) +{ + union { bool f; uint32_t u32; uint8_t u8; } rc; + AssertMsg(!((uintptr_t)pvBitmap & 3), ("address %p not 32-bit aligned", pvBitmap)); +# if RT_INLINE_ASM_GNU_STYLE + __asm__ __volatile__("lock; btcl %2, %1\n\t" + "setc %b0\n\t" + "andl $1, %0\n\t" + : "=q" (rc.u32), + "=m" (*(volatile long *)pvBitmap) + : "Ir" (iBit), + "m" (*(volatile long *)pvBitmap) + : "memory"); +# else + __asm + { + mov edx, [iBit] +# ifdef RT_ARCH_AMD64 + mov rax, [pvBitmap] + lock btc [rax], edx +# else + mov eax, [pvBitmap] + lock btc [eax], edx +# endif + setc al + and eax, 1 + mov [rc.u32], eax + } +# endif + return rc.f; +} +#endif + + +/** + * Tests if a bit in a bitmap is set. + * + * @returns true if the bit is set. + * @returns false if the bit is clear. + * + * @param pvBitmap Pointer to the bitmap. + * @param iBit The bit to test. + * + * @remarks The 32-bit aligning of pvBitmap is not a strict requirement. + * However, doing so will yield better performance as well as avoiding + * traps accessing the last bits in the bitmap. + */ +#if RT_INLINE_ASM_EXTERNAL && !RT_INLINE_ASM_USES_INTRIN +DECLASM(bool) ASMBitTest(const volatile void *pvBitmap, int32_t iBit); +#else +DECLINLINE(bool) ASMBitTest(const volatile void *pvBitmap, int32_t iBit) +{ + union { bool f; uint32_t u32; uint8_t u8; } rc; +# if RT_INLINE_ASM_USES_INTRIN + rc.u32 = _bittest((long *)pvBitmap, iBit); +# elif RT_INLINE_ASM_GNU_STYLE + + __asm__ __volatile__("btl %2, %1\n\t" + "setc %b0\n\t" + "andl $1, %0\n\t" + : "=q" (rc.u32) + : "m" (*(const volatile long *)pvBitmap), + "Ir" (iBit) + : "memory"); +# else + __asm + { + mov edx, [iBit] +# ifdef RT_ARCH_AMD64 + mov rax, [pvBitmap] + bt [rax], edx +# else + mov eax, [pvBitmap] + bt [eax], edx +# endif + setc al + and eax, 1 + mov [rc.u32], eax + } +# endif + return rc.f; +} +#endif + + +/** + * Clears a bit range within a bitmap. + * + * @param pvBitmap Pointer to the bitmap. + * @param iBitStart The First bit to clear. + * @param iBitEnd The first bit not to clear. + */ +DECLINLINE(void) ASMBitClearRange(volatile void *pvBitmap, int32_t iBitStart, int32_t iBitEnd) +{ + if (iBitStart < iBitEnd) + { + volatile uint32_t *pu32 = (volatile uint32_t *)pvBitmap + (iBitStart >> 5); + int iStart = iBitStart & ~31; + int iEnd = iBitEnd & ~31; + if (iStart == iEnd) + *pu32 &= ((1 << (iBitStart & 31)) - 1) | ~((1 << (iBitEnd & 31)) - 1); + else + { + /* bits in first dword. */ + if (iBitStart & 31) + { + *pu32 &= (1 << (iBitStart & 31)) - 1; + pu32++; + iBitStart = iStart + 32; + } + + /* whole dword. */ + if (iBitStart != iEnd) + ASMMemZero32(pu32, (iEnd - iBitStart) >> 3); + + /* bits in last dword. */ + if (iBitEnd & 31) + { + pu32 = (volatile uint32_t *)pvBitmap + (iBitEnd >> 5); + *pu32 &= ~((1 << (iBitEnd & 31)) - 1); + } + } + } +} + + +/** + * Sets a bit range within a bitmap. + * + * @param pvBitmap Pointer to the bitmap. + * @param iBitStart The First bit to set. + * @param iBitEnd The first bit not to set. + */ +DECLINLINE(void) ASMBitSetRange(volatile void *pvBitmap, int32_t iBitStart, int32_t iBitEnd) +{ + if (iBitStart < iBitEnd) + { + volatile uint32_t *pu32 = (volatile uint32_t *)pvBitmap + (iBitStart >> 5); + int iStart = iBitStart & ~31; + int iEnd = iBitEnd & ~31; + if (iStart == iEnd) + *pu32 |= ((1 << (iBitEnd - iBitStart)) - 1) << iBitStart; + else + { + /* bits in first dword. */ + if (iBitStart & 31) + { + *pu32 |= ~((1 << (iBitStart & 31)) - 1); + pu32++; + iBitStart = iStart + 32; + } + + /* whole dword. */ + if (iBitStart != iEnd) + ASMMemFill32(pu32, (iEnd - iBitStart) >> 3, ~UINT32_C(0)); + + /* bits in last dword. */ + if (iBitEnd & 31) + { + pu32 = (volatile uint32_t *)pvBitmap + (iBitEnd >> 5); + *pu32 |= (1 << (iBitEnd & 31)) - 1; + } + } + } +} + + +/** + * Finds the first clear bit in a bitmap. + * + * @returns Index of the first zero bit. + * @returns -1 if no clear bit was found. + * @param pvBitmap Pointer to the bitmap. + * @param cBits The number of bits in the bitmap. Multiple of 32. + */ +#if RT_INLINE_ASM_EXTERNAL +DECLASM(int) ASMBitFirstClear(const volatile void *pvBitmap, uint32_t cBits); +#else +DECLINLINE(int) ASMBitFirstClear(const volatile void *pvBitmap, uint32_t cBits) +{ + if (cBits) + { + int32_t iBit; +# if RT_INLINE_ASM_GNU_STYLE + RTCCUINTREG uEAX, uECX, uEDI; + cBits = RT_ALIGN_32(cBits, 32); + __asm__ __volatile__("repe; scasl\n\t" + "je 1f\n\t" +# ifdef RT_ARCH_AMD64 + "lea -4(%%rdi), %%rdi\n\t" + "xorl (%%rdi), %%eax\n\t" + "subq %5, %%rdi\n\t" +# else + "lea -4(%%edi), %%edi\n\t" + "xorl (%%edi), %%eax\n\t" + "subl %5, %%edi\n\t" +# endif + "shll $3, %%edi\n\t" + "bsfl %%eax, %%edx\n\t" + "addl %%edi, %%edx\n\t" + "1:\t\n" + : "=d" (iBit), + "=&c" (uECX), + "=&D" (uEDI), + "=&a" (uEAX) + : "0" (0xffffffff), + "mr" (pvBitmap), + "1" (cBits >> 5), + "2" (pvBitmap), + "3" (0xffffffff)); +# else + cBits = RT_ALIGN_32(cBits, 32); + __asm + { +# ifdef RT_ARCH_AMD64 + mov rdi, [pvBitmap] + mov rbx, rdi +# else + mov edi, [pvBitmap] + mov ebx, edi +# endif + mov edx, 0ffffffffh + mov eax, edx + mov ecx, [cBits] + shr ecx, 5 + repe scasd + je done + +# ifdef RT_ARCH_AMD64 + lea rdi, [rdi - 4] + xor eax, [rdi] + sub rdi, rbx +# else + lea edi, [edi - 4] + xor eax, [edi] + sub edi, ebx +# endif + shl edi, 3 + bsf edx, eax + add edx, edi + done: + mov [iBit], edx + } +# endif + return iBit; + } + return -1; +} +#endif + + +/** + * Finds the next clear bit in a bitmap. + * + * @returns Index of the first zero bit. + * @returns -1 if no clear bit was found. + * @param pvBitmap Pointer to the bitmap. + * @param cBits The number of bits in the bitmap. Multiple of 32. + * @param iBitPrev The bit returned from the last search. + * The search will start at iBitPrev + 1. + */ +#if RT_INLINE_ASM_EXTERNAL && !RT_INLINE_ASM_USES_INTRIN +DECLASM(int) ASMBitNextClear(const volatile void *pvBitmap, uint32_t cBits, uint32_t iBitPrev); +#else +DECLINLINE(int) ASMBitNextClear(const volatile void *pvBitmap, uint32_t cBits, uint32_t iBitPrev) +{ + const volatile uint32_t *pau32Bitmap = (const volatile uint32_t *)pvBitmap; + int iBit = ++iBitPrev & 31; + if (iBit) + { + /* + * Inspect the 32-bit word containing the unaligned bit. + */ + uint32_t u32 = ~pau32Bitmap[iBitPrev / 32] >> iBit; + +# if RT_INLINE_ASM_USES_INTRIN + unsigned long ulBit = 0; + if (_BitScanForward(&ulBit, u32)) + return ulBit + iBitPrev; +# else +# if RT_INLINE_ASM_GNU_STYLE + __asm__ __volatile__("bsf %1, %0\n\t" + "jnz 1f\n\t" + "movl $-1, %0\n\t" + "1:\n\t" + : "=r" (iBit) + : "r" (u32)); +# else + __asm + { + mov edx, [u32] + bsf eax, edx + jnz done + mov eax, 0ffffffffh + done: + mov [iBit], eax + } +# endif + if (iBit >= 0) + return iBit + iBitPrev; +# endif + + /* + * Skip ahead and see if there is anything left to search. + */ + iBitPrev |= 31; + iBitPrev++; + if (cBits <= (uint32_t)iBitPrev) + return -1; + } + + /* + * 32-bit aligned search, let ASMBitFirstClear do the dirty work. + */ + iBit = ASMBitFirstClear(&pau32Bitmap[iBitPrev / 32], cBits - iBitPrev); + if (iBit >= 0) + iBit += iBitPrev; + return iBit; +} +#endif + + +/** + * Finds the first set bit in a bitmap. + * + * @returns Index of the first set bit. + * @returns -1 if no clear bit was found. + * @param pvBitmap Pointer to the bitmap. + * @param cBits The number of bits in the bitmap. Multiple of 32. + */ +#if RT_INLINE_ASM_EXTERNAL +DECLASM(int) ASMBitFirstSet(const volatile void *pvBitmap, uint32_t cBits); +#else +DECLINLINE(int) ASMBitFirstSet(const volatile void *pvBitmap, uint32_t cBits) +{ + if (cBits) + { + int32_t iBit; +# if RT_INLINE_ASM_GNU_STYLE + RTCCUINTREG uEAX, uECX, uEDI; + cBits = RT_ALIGN_32(cBits, 32); + __asm__ __volatile__("repe; scasl\n\t" + "je 1f\n\t" +# ifdef RT_ARCH_AMD64 + "lea -4(%%rdi), %%rdi\n\t" + "movl (%%rdi), %%eax\n\t" + "subq %5, %%rdi\n\t" +# else + "lea -4(%%edi), %%edi\n\t" + "movl (%%edi), %%eax\n\t" + "subl %5, %%edi\n\t" +# endif + "shll $3, %%edi\n\t" + "bsfl %%eax, %%edx\n\t" + "addl %%edi, %%edx\n\t" + "1:\t\n" + : "=d" (iBit), + "=&c" (uECX), + "=&D" (uEDI), + "=&a" (uEAX) + : "0" (0xffffffff), + "mr" (pvBitmap), + "1" (cBits >> 5), + "2" (pvBitmap), + "3" (0)); +# else + cBits = RT_ALIGN_32(cBits, 32); + __asm + { +# ifdef RT_ARCH_AMD64 + mov rdi, [pvBitmap] + mov rbx, rdi +# else + mov edi, [pvBitmap] + mov ebx, edi +# endif + mov edx, 0ffffffffh + xor eax, eax + mov ecx, [cBits] + shr ecx, 5 + repe scasd + je done +# ifdef RT_ARCH_AMD64 + lea rdi, [rdi - 4] + mov eax, [rdi] + sub rdi, rbx +# else + lea edi, [edi - 4] + mov eax, [edi] + sub edi, ebx +# endif + shl edi, 3 + bsf edx, eax + add edx, edi + done: + mov [iBit], edx + } +# endif + return iBit; + } + return -1; +} +#endif + + +/** + * Finds the next set bit in a bitmap. + * + * @returns Index of the next set bit. + * @returns -1 if no set bit was found. + * @param pvBitmap Pointer to the bitmap. + * @param cBits The number of bits in the bitmap. Multiple of 32. + * @param iBitPrev The bit returned from the last search. + * The search will start at iBitPrev + 1. + */ +#if RT_INLINE_ASM_EXTERNAL && !RT_INLINE_ASM_USES_INTRIN +DECLASM(int) ASMBitNextSet(const volatile void *pvBitmap, uint32_t cBits, uint32_t iBitPrev); +#else +DECLINLINE(int) ASMBitNextSet(const volatile void *pvBitmap, uint32_t cBits, uint32_t iBitPrev) +{ + const volatile uint32_t *pau32Bitmap = (const volatile uint32_t *)pvBitmap; + int iBit = ++iBitPrev & 31; + if (iBit) + { + /* + * Inspect the 32-bit word containing the unaligned bit. + */ + uint32_t u32 = pau32Bitmap[iBitPrev / 32] >> iBit; + +# if RT_INLINE_ASM_USES_INTRIN + unsigned long ulBit = 0; + if (_BitScanForward(&ulBit, u32)) + return ulBit + iBitPrev; +# else +# if RT_INLINE_ASM_GNU_STYLE + __asm__ __volatile__("bsf %1, %0\n\t" + "jnz 1f\n\t" + "movl $-1, %0\n\t" + "1:\n\t" + : "=r" (iBit) + : "r" (u32)); +# else + __asm + { + mov edx, [u32] + bsf eax, edx + jnz done + mov eax, 0ffffffffh + done: + mov [iBit], eax + } +# endif + if (iBit >= 0) + return iBit + iBitPrev; +# endif + + /* + * Skip ahead and see if there is anything left to search. + */ + iBitPrev |= 31; + iBitPrev++; + if (cBits <= (uint32_t)iBitPrev) + return -1; + } + + /* + * 32-bit aligned search, let ASMBitFirstClear do the dirty work. + */ + iBit = ASMBitFirstSet(&pau32Bitmap[iBitPrev / 32], cBits - iBitPrev); + if (iBit >= 0) + iBit += iBitPrev; + return iBit; +} +#endif + + +/** + * Finds the first bit which is set in the given 32-bit integer. + * Bits are numbered from 1 (least significant) to 32. + * + * @returns index [1..32] of the first set bit. + * @returns 0 if all bits are cleared. + * @param u32 Integer to search for set bits. + * @remark Similar to ffs() in BSD. + */ +#if RT_INLINE_ASM_EXTERNAL && !RT_INLINE_ASM_USES_INTRIN +DECLASM(unsigned) ASMBitFirstSetU32(uint32_t u32); +#else +DECLINLINE(unsigned) ASMBitFirstSetU32(uint32_t u32) +{ +# if RT_INLINE_ASM_USES_INTRIN + unsigned long iBit; + if (_BitScanForward(&iBit, u32)) + iBit++; + else + iBit = 0; +# elif RT_INLINE_ASM_GNU_STYLE + uint32_t iBit; + __asm__ __volatile__("bsf %1, %0\n\t" + "jnz 1f\n\t" + "xorl %0, %0\n\t" + "jmp 2f\n" + "1:\n\t" + "incl %0\n" + "2:\n\t" + : "=r" (iBit) + : "rm" (u32)); +# else + uint32_t iBit; + _asm + { + bsf eax, [u32] + jnz found + xor eax, eax + jmp done + found: + inc eax + done: + mov [iBit], eax + } +# endif + return iBit; +} +#endif + + +/** + * Finds the first bit which is set in the given 32-bit integer. + * Bits are numbered from 1 (least significant) to 32. + * + * @returns index [1..32] of the first set bit. + * @returns 0 if all bits are cleared. + * @param i32 Integer to search for set bits. + * @remark Similar to ffs() in BSD. + */ +DECLINLINE(unsigned) ASMBitFirstSetS32(int32_t i32) +{ + return ASMBitFirstSetU32((uint32_t)i32); +} + + +/** + * Finds the last bit which is set in the given 32-bit integer. + * Bits are numbered from 1 (least significant) to 32. + * + * @returns index [1..32] of the last set bit. + * @returns 0 if all bits are cleared. + * @param u32 Integer to search for set bits. + * @remark Similar to fls() in BSD. + */ +#if RT_INLINE_ASM_EXTERNAL && !RT_INLINE_ASM_USES_INTRIN +DECLASM(unsigned) ASMBitLastSetU32(uint32_t u32); +#else +DECLINLINE(unsigned) ASMBitLastSetU32(uint32_t u32) +{ +# if RT_INLINE_ASM_USES_INTRIN + unsigned long iBit; + if (_BitScanReverse(&iBit, u32)) + iBit++; + else + iBit = 0; +# elif RT_INLINE_ASM_GNU_STYLE + uint32_t iBit; + __asm__ __volatile__("bsrl %1, %0\n\t" + "jnz 1f\n\t" + "xorl %0, %0\n\t" + "jmp 2f\n" + "1:\n\t" + "incl %0\n" + "2:\n\t" + : "=r" (iBit) + : "rm" (u32)); +# else + uint32_t iBit; + _asm + { + bsr eax, [u32] + jnz found + xor eax, eax + jmp done + found: + inc eax + done: + mov [iBit], eax + } +# endif + return iBit; +} +#endif + + +/** + * Finds the last bit which is set in the given 32-bit integer. + * Bits are numbered from 1 (least significant) to 32. + * + * @returns index [1..32] of the last set bit. + * @returns 0 if all bits are cleared. + * @param i32 Integer to search for set bits. + * @remark Similar to fls() in BSD. + */ +DECLINLINE(unsigned) ASMBitLastSetS32(int32_t i32) +{ + return ASMBitLastSetU32((uint32_t)i32); +} + +/** + * Reverse the byte order of the given 16-bit integer. + * + * @returns Revert + * @param u16 16-bit integer value. + */ +#if RT_INLINE_ASM_EXTERNAL && !RT_INLINE_ASM_USES_INTRIN +DECLASM(uint16_t) ASMByteSwapU16(uint16_t u16); +#else +DECLINLINE(uint16_t) ASMByteSwapU16(uint16_t u16) +{ +# if RT_INLINE_ASM_USES_INTRIN + u16 = _byteswap_ushort(u16); +# elif RT_INLINE_ASM_GNU_STYLE + __asm__ ("rorw $8, %0" : "=r" (u16) : "0" (u16)); +# else + _asm + { + mov ax, [u16] + ror ax, 8 + mov [u16], ax + } +# endif + return u16; +} +#endif + + +/** + * Reverse the byte order of the given 32-bit integer. + * + * @returns Revert + * @param u32 32-bit integer value. + */ +#if RT_INLINE_ASM_EXTERNAL && !RT_INLINE_ASM_USES_INTRIN +DECLASM(uint32_t) ASMByteSwapU32(uint32_t u32); +#else +DECLINLINE(uint32_t) ASMByteSwapU32(uint32_t u32) +{ +# if RT_INLINE_ASM_USES_INTRIN + u32 = _byteswap_ulong(u32); +# elif RT_INLINE_ASM_GNU_STYLE + __asm__ ("bswapl %0" : "=r" (u32) : "0" (u32)); +# else + _asm + { + mov eax, [u32] + bswap eax + mov [u32], eax + } +# endif + return u32; +} +#endif + + +/** + * Reverse the byte order of the given 64-bit integer. + * + * @returns Revert + * @param u64 64-bit integer value. + */ +DECLINLINE(uint64_t) ASMByteSwapU64(uint64_t u64) +{ +#if defined(RT_ARCH_AMD64) && RT_INLINE_ASM_USES_INTRIN + u64 = _byteswap_uint64(u64); +#else + u64 = (uint64_t)ASMByteSwapU32((uint32_t)u64) << 32 + | (uint64_t)ASMByteSwapU32((uint32_t)(u64 >> 32)); +#endif + return u64; +} + + +/** + * Rotate 32-bit unsigned value to the left by @a cShift. + * + * @returns Rotated value. + * @param u32 The value to rotate. + * @param cShift How many bits to rotate by. + */ +DECLINLINE(uint32_t) ASMRotateLeftU32(uint32_t u32, uint32_t cShift) +{ +#if RT_INLINE_ASM_USES_INTRIN + return _rotl(u32, cShift); +#elif RT_INLINE_ASM_GNU_STYLE && (defined(RT_ARCH_AMD64) || defined(RT_ARCH_X86)) + __asm__ __volatile__("roll %b1, %0" : "=g" (u32) : "Ic" (cShift), "0" (u32)); + return u32; +#else + cShift &= 31; + return (u32 << cShift) | (u32 >> (32 - cShift)); +#endif +} + + +/** + * Rotate 32-bit unsigned value to the right by @a cShift. + * + * @returns Rotated value. + * @param u32 The value to rotate. + * @param cShift How many bits to rotate by. + */ +DECLINLINE(uint32_t) ASMRotateRightU32(uint32_t u32, uint32_t cShift) +{ +#if RT_INLINE_ASM_USES_INTRIN + return _rotr(u32, cShift); +#elif RT_INLINE_ASM_GNU_STYLE && (defined(RT_ARCH_AMD64) || defined(RT_ARCH_X86)) + __asm__ __volatile__("rorl %b1, %0" : "=g" (u32) : "Ic" (cShift), "0" (u32)); + return u32; +#else + cShift &= 31; + return (u32 >> cShift) | (u32 << (32 - cShift)); +#endif +} + + +/** + * Rotate 64-bit unsigned value to the left by @a cShift. + * + * @returns Rotated value. + * @param u64 The value to rotate. + * @param cShift How many bits to rotate by. + */ +DECLINLINE(uint64_t) ASMRotateLeftU64(uint64_t u64, uint32_t cShift) +{ +#if RT_INLINE_ASM_USES_INTRIN + return _rotl64(u64, cShift); +#elif RT_INLINE_ASM_GNU_STYLE && defined(RT_ARCH_AMD64) + __asm__ __volatile__("rolq %b1, %0" : "=g" (u64) : "Jc" (cShift), "0" (u64)); + return u64; +#elif RT_INLINE_ASM_GNU_STYLE && defined(RT_ARCH_X86) + uint32_t uSpill; + __asm__ __volatile__("testb $0x20, %%cl\n\t" /* if (cShift >= 0x20) { swap(u64.hi, u64lo); cShift -= 0x20; } */ + "jz 1f\n\t" + "xchgl %%eax, %%edx\n\t" + "1:\n\t" + "andb $0x1f, %%cl\n\t" /* if (cShift & 0x1f) { */ + "jz 2f\n\t" + "movl %%edx, %2\n\t" /* save the hi value in %3. */ + "shldl %%cl,%%eax,%%edx\n\t" /* shift the hi value left, feeding MSBits from the low value. */ + "shldl %%cl,%2,%%eax\n\t" /* shift the lo value left, feeding MSBits from the saved hi value. */ + "2:\n\t" /* } */ + : "=A" (u64), "=c" (cShift), "=r" (uSpill) + : "0" (u64), + "1" (cShift)); + return u64; +#else + cShift &= 63; + return (u64 << cShift) | (u64 >> (64 - cShift)); +#endif +} + + +/** + * Rotate 64-bit unsigned value to the right by @a cShift. + * + * @returns Rotated value. + * @param u64 The value to rotate. + * @param cShift How many bits to rotate by. + */ +DECLINLINE(uint64_t) ASMRotateRightU64(uint64_t u64, uint32_t cShift) +{ +#if RT_INLINE_ASM_USES_INTRIN + return _rotr64(u64, cShift); +#elif RT_INLINE_ASM_GNU_STYLE && defined(RT_ARCH_AMD64) + __asm__ __volatile__("rorq %b1, %0" : "=g" (u64) : "Jc" (cShift), "0" (u64)); + return u64; +#elif RT_INLINE_ASM_GNU_STYLE && defined(RT_ARCH_X86) + uint32_t uSpill; + __asm__ __volatile__("testb $0x20, %%cl\n\t" /* if (cShift >= 0x20) { swap(u64.hi, u64lo); cShift -= 0x20; } */ + "jz 1f\n\t" + "xchgl %%eax, %%edx\n\t" + "1:\n\t" + "andb $0x1f, %%cl\n\t" /* if (cShift & 0x1f) { */ + "jz 2f\n\t" + "movl %%edx, %2\n\t" /* save the hi value in %3. */ + "shrdl %%cl,%%eax,%%edx\n\t" /* shift the hi value right, feeding LSBits from the low value. */ + "shrdl %%cl,%2,%%eax\n\t" /* shift the lo value right, feeding LSBits from the saved hi value. */ + "2:\n\t" /* } */ + : "=A" (u64), "=c" (cShift), "=r" (uSpill) + : "0" (u64), + "1" (cShift)); + return u64; +#else + cShift &= 63; + return (u64 >> cShift) | (u64 << (64 - cShift)); +#endif +} + +/** @} */ + + +/** @} */ + +#endif + --- linux-raspi2-4.2.0.orig/ubuntu/vbox/include/iprt/assert.h +++ linux-raspi2-4.2.0/ubuntu/vbox/include/iprt/assert.h @@ -0,0 +1,2761 @@ +/** @file + * IPRT - Assertions. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + +#ifndef ___iprt_assert_h +#define ___iprt_assert_h + +#include +#include +#include + +/** @defgroup grp_rt_assert Assert - Assertions + * @ingroup grp_rt + * + * Assertions are generally used to check preconditions and other + * assumptions. Sometimes it is also used to catch odd errors or errors + * that one would like to inspect in the debugger. They should not be + * used for errors that happen frequently. + * + * IPRT provides a host of assertion macros, so many that it can be a bit + * overwhelming at first. Don't despair, there is a system (surprise). + * + * First there are four families of assertions: + * - Assert - The normal strict build only assertions. + * - AssertLogRel - Calls LogRel() in non-strict builds, otherwise like Assert. + * - AssertRelease - Triggers in all builds. + * - AssertFatal - Triggers in all builds and cannot be continued. + * + * Then there are variations wrt to argument list and behavior on failure: + * - Msg - Custom RTStrPrintf-like message with the assertion message. + * - Return - Return the specific rc on failure. + * - ReturnVoid - Return (void) on failure. + * - Break - Break (out of switch/loop) on failure. + * - Stmt - Execute the specified statement(s) on failure. + * - RC - Assert RT_SUCCESS. + * - RCSuccess - Assert VINF_SUCCESS. + * + * In addition there is a very special family AssertCompile that can be + * used for some limited compile-time checking, like structure sizes and member + * alignment. This family doesn't have the same variations. + * + * + * @remarks As you might have noticed, the macros don't follow the + * coding guidelines wrt to macros supposedly being all uppercase + * and underscored. For various reasons they don't, and nobody + * has complained yet. Wonder why... :-) + * + * @remarks Each project has its own specific guidelines on how to use + * assertions, so the above is just trying to give you the general idea + * from the IPRT point of view. + * + * @{ + */ + +RT_C_DECLS_BEGIN + +/** + * The 1st part of an assert message. + * + * @param pszExpr Expression. Can be NULL. + * @param uLine Location line number. + * @param pszFile Location file name. + * @param pszFunction Location function name. + */ +RTDECL(void) RTAssertMsg1(const char *pszExpr, unsigned uLine, const char *pszFile, const char *pszFunction); +/** + * Weak version of RTAssertMsg1 that can be overridden locally in a module to + * modify, redirect or otherwise mess with the assertion output. + * + * @copydoc RTAssertMsg1 + */ +RTDECL(void) RTAssertMsg1Weak(const char *pszExpr, unsigned uLine, const char *pszFile, const char *pszFunction); + +/** + * The 2nd (optional) part of an assert message. + * + * @param pszFormat Printf like format string. + * @param ... Arguments to that string. + */ +RTDECL(void) RTAssertMsg2(const char *pszFormat, ...); +/** + * Weak version of RTAssertMsg2 that forwards to RTAssertMsg2WeakV. + * + * There is not need to override this, check out RTAssertMsg2WeakV instead! + * + * @copydoc RTAssertMsg2 + */ +RTDECL(void) RTAssertMsg2Weak(const char *pszFormat, ...); + +/** + * The 2nd (optional) part of an assert message. + * + * @param pszFormat Printf like format string. + * @param va Arguments to that string. + */ +RTDECL(void) RTAssertMsg2V(const char *pszFormat, va_list va); +/** + * Weak version of RTAssertMsg2V that can be overridden locally in a module to + * modify, redirect or otherwise mess with the assertion output. + * + * @copydoc RTAssertMsg2V + */ +RTDECL(void) RTAssertMsg2WeakV(const char *pszFormat, va_list va); + +/** + * Additional information which should be appended to the 2nd part of an + * assertion message. + * + * @param pszFormat Printf like format string. + * @param ... Arguments to that string. + */ +RTDECL(void) RTAssertMsg2Add(const char *pszFormat, ...); +/** + * Weak version of RTAssertMsg2Add that forwards to RTAssertMsg2AddWeakV. + * + * There is not need to override this, check out RTAssertMsg2AddWeakV instead! + * + * @copydoc RTAssertMsg2Add + */ +RTDECL(void) RTAssertMsg2AddWeak(const char *pszFormat, ...); + +/** + * Additional information which should be appended to the 2nd part of an + * assertion message. + * + * @param pszFormat Printf like format string. + * @param va Arguments to that string. + */ +RTDECL(void) RTAssertMsg2AddV(const char *pszFormat, va_list va); +/** + * Weak version of RTAssertMsg2AddV that can be overridden locally in a module + * to modify, redirect or otherwise mess with the assertion output. + * + * @copydoc RTAssertMsg2AddV + */ +RTDECL(void) RTAssertMsg2AddWeakV(const char *pszFormat, va_list va); + +#ifdef IN_RING0 +/** + * Panics the system as the result of a fail assertion. + */ +RTR0DECL(void) RTR0AssertPanicSystem(void); +#endif /* IN_RING0 */ + +/** + * Overridable function that decides whether assertions executes the panic + * (breakpoint) or not. + * + * The generic implementation will return true. + * + * @returns true if the breakpoint should be hit, false if it should be ignored. + * + * @remark The RTDECL() makes this a bit difficult to override on Windows. So, + * you'll have to use RTASSERT_HAVE_SHOULD_PANIC or + * RTASSERT_HAVE_SHOULD_PANIC_PRIVATE there to control the kind of + * prototype. + */ +#if !defined(RTASSERT_HAVE_SHOULD_PANIC) && !defined(RTASSERT_HAVE_SHOULD_PANIC_PRIVATE) +RTDECL(bool) RTAssertShouldPanic(void); +#elif defined(RTASSERT_HAVE_SHOULD_PANIC_PRIVATE) +bool RTAssertShouldPanic(void); +#else +DECLEXPORT(bool) RTCALL RTAssertShouldPanic(void); +#endif + +/** + * Controls whether the assertions should be quiet or noisy (default). + * + * @returns The old setting. + * @param fQuiet The new setting. + */ +RTDECL(bool) RTAssertSetQuiet(bool fQuiet); + +/** + * Are assertions quiet or noisy? + * + * @returns True if they are quiet, false if noisy. + */ +RTDECL(bool) RTAssertAreQuiet(void); + +/** + * Makes the assertions panic (default) or not. + * + * @returns The old setting. + * @param fPanic The new setting. + */ +RTDECL(bool) RTAssertSetMayPanic(bool fPanic); + +/** + * Can assertion panic. + * + * @returns True if they can, false if not. + */ +RTDECL(bool) RTAssertMayPanic(void); + + +/** @name Globals for crash analysis + * @remarks This is the full potential set, it + * @{ + */ +/** The last assert message, 1st part. */ +extern RTDATADECL(char) g_szRTAssertMsg1[1024]; +/** The last assert message, 2nd part. */ +extern RTDATADECL(char) g_szRTAssertMsg2[4096]; +/** The last assert message, expression. */ +extern RTDATADECL(const char * volatile) g_pszRTAssertExpr; +/** The last assert message, file name. */ +extern RTDATADECL(const char * volatile) g_pszRTAssertFile; +/** The last assert message, line number. */ +extern RTDATADECL(uint32_t volatile) g_u32RTAssertLine; +/** The last assert message, function name. */ +extern RTDATADECL(const char * volatile) g_pszRTAssertFunction; +/** @} */ + +RT_C_DECLS_END + +/** @def RTAssertDebugBreak() + * Debugger breakpoint instruction. + * + * @remarks This macro does not depend on RT_STRICT. + */ +#define RTAssertDebugBreak() do { RT_BREAKPOINT(); } while (0) + + + +/** @name Compile time assertions. + * + * These assertions are used to check structure sizes, member/size alignments + * and similar compile time expressions. + * + * @{ + */ + +/** + * RTASSERTTYPE is the type the AssertCompile() macro redefines. + * It has no other function and shouldn't be used. + * Visual C++ uses this. + */ +typedef int RTASSERTTYPE[1]; + +/** + * RTASSERTVAR is the type the AssertCompile() macro redefines. + * It has no other function and shouldn't be used. + * GCC uses this. + */ +#ifdef __GNUC__ +RT_C_DECLS_BEGIN +#endif +extern int RTASSERTVAR[1]; +#ifdef __GNUC__ +RT_C_DECLS_END +#endif + +/** @def RTASSERT_HAVE_STATIC_ASSERT + * Indicates that the compiler implements static_assert(expr, msg). + */ +#ifdef _MSC_VER +# if _MSC_VER >= 1600 && defined(__cplusplus) +# define RTASSERT_HAVE_STATIC_ASSERT +# endif +#endif +#if defined(__GNUC__) && defined(__GXX_EXPERIMENTAL_CXX0X__) +# define RTASSERT_HAVE_STATIC_ASSERT +#endif +#ifdef DOXYGEN_RUNNING +# define RTASSERT_HAVE_STATIC_ASSERT +#endif + +/** @def AssertCompileNS + * Asserts that a compile-time expression is true. If it's not break the build. + * + * This differs from AssertCompile in that it accepts some more expressions + * than what C++0x allows - NS = Non-standard. + * + * @param expr Expression which should be true. + */ +#ifdef __GNUC__ +# define AssertCompileNS(expr) extern int RTASSERTVAR[1] __attribute__((unused)), RTASSERTVAR[(expr) ? 1 : 0] __attribute__((unused)) +#elif defined(__IBMC__) || defined(__IBMCPP__) +# define AssertCompileNS(expr) extern int RTASSERTVAR[(expr) ? 1 : 0] +#else +# define AssertCompileNS(expr) typedef int RTASSERTTYPE[(expr) ? 1 : 0] +#endif + +/** @def AssertCompile + * Asserts that a C++0x compile-time expression is true. If it's not break the + * build. + * @param expr Expression which should be true. + */ +#ifdef RTASSERT_HAVE_STATIC_ASSERT +# define AssertCompile(expr) static_assert(!!(expr), #expr) +#else +# define AssertCompile(expr) AssertCompileNS(expr) +#endif + +/** @def RTASSERT_OFFSET_OF() + * A offsetof() macro suitable for compile time assertions. + * Both GCC v4 and VisualAge for C++ v3.08 has trouble using RT_OFFSETOF. + */ +#if defined(__GNUC__) +# if __GNUC__ >= 4 +# define RTASSERT_OFFSET_OF(a_Type, a_Member) __builtin_offsetof(a_Type, a_Member) +# else +# define RTASSERT_OFFSET_OF(a_Type, a_Member) RT_OFFSETOF(a_Type, a_Member) +# endif +#elif (defined(__IBMC__) || defined(__IBMCPP__)) && defined(RT_OS_OS2) +# define RTASSERT_OFFSET_OF(a_Type, a_Member) __offsetof(a_Type, a_Member) +#else +# define RTASSERT_OFFSET_OF(a_Type, a_Member) RT_OFFSETOF(a_Type, a_Member) +#endif + + +/** @def AssertCompileSize + * Asserts a size at compile. + * @param type The type. + * @param size The expected type size. + */ +#define AssertCompileSize(type, size) \ + AssertCompile(sizeof(type) == (size)) + +/** @def AssertCompileSizeAlignment + * Asserts a size alignment at compile. + * @param type The type. + * @param align The size alignment to assert. + */ +#define AssertCompileSizeAlignment(type, align) \ + AssertCompile(!(sizeof(type) & ((align) - 1))) + +/** @def AssertCompileMemberSize + * Asserts a member offset alignment at compile. + * @param type The type. + * @param member The member. + * @param size The member size to assert. + */ +#define AssertCompileMemberSize(type, member, size) \ + AssertCompile(RT_SIZEOFMEMB(type, member) == (size)) + +/** @def AssertCompileMemberSizeAlignment + * Asserts a member size alignment at compile. + * @param type The type. + * @param member The member. + * @param align The member size alignment to assert. + */ +#define AssertCompileMemberSizeAlignment(type, member, align) \ + AssertCompile(!(RT_SIZEOFMEMB(type, member) & ((align) - 1))) + +/** @def AssertCompileMemberAlignment + * Asserts a member offset alignment at compile. + * @param type The type. + * @param member The member. + * @param align The member offset alignment to assert. + */ +#define AssertCompileMemberAlignment(type, member, align) \ + AssertCompile(!(RTASSERT_OFFSET_OF(type, member) & ((align) - 1))) + +/** @def AssertCompileMemberOffset + * Asserts an offset of a structure member at compile. + * @param type The type. + * @param member The member. + * @param off The expected offset. + */ +#define AssertCompileMemberOffset(type, member, off) \ + AssertCompile(RTASSERT_OFFSET_OF(type, member) == (off)) + +/** @def AssertCompile2MemberOffsets + * Asserts that two (sub-structure) members in union have the same offset. + * @param type The type. + * @param member1 The first member. + * @param member2 The second member. + */ +#define AssertCompile2MemberOffsets(type, member1, member2) \ + AssertCompile(RTASSERT_OFFSET_OF(type, member1) == RTASSERT_OFFSET_OF(type, member2)) + +/** @def AssertCompileAdjacentMembers + * Asserts that two structure members are adjacent. + * @param type The type. + * @param member1 The first member. + * @param member2 The second member. + */ +#define AssertCompileAdjacentMembers(type, member1, member2) \ + AssertCompile(RTASSERT_OFFSET_OF(type, member1) + RT_SIZEOFMEMB(type, member1) == RTASSERT_OFFSET_OF(type, member2)) + +/** @def AssertCompileMembersAtSameOffset + * Asserts that members of two different structures are at the same offset. + * @param type1 The first type. + * @param member1 The first member. + * @param type2 The second type. + * @param member2 The second member. + */ +#define AssertCompileMembersAtSameOffset(type1, member1, type2, member2) \ + AssertCompile(RTASSERT_OFFSET_OF(type1, member1) == RTASSERT_OFFSET_OF(type2, member2)) + +/** @def AssertCompileMembersSameSize + * Asserts that members of two different structures have the same size. + * @param type1 The first type. + * @param member1 The first member. + * @param type2 The second type. + * @param member2 The second member. + */ +#define AssertCompileMembersSameSize(type1, member1, type2, member2) \ + AssertCompile(RT_SIZEOFMEMB(type1, member1) == RT_SIZEOFMEMB(type2, member2)) + +/** @def AssertCompileMembersSameSizeAndOffset + * Asserts that members of two different structures have the same size and are + * at the same offset. + * @param type1 The first type. + * @param member1 The first member. + * @param type2 The second type. + * @param member2 The second member. + */ +#define AssertCompileMembersSameSizeAndOffset(type1, member1, type2, member2) \ + AssertCompile( RTASSERT_OFFSET_OF(type1, member1) == RTASSERT_OFFSET_OF(type2, member2) \ + && RT_SIZEOFMEMB(type1, member1) == RT_SIZEOFMEMB(type2, member2)) + +/** @} */ + + + +/** @name Assertions + * + * These assertions will only trigger when RT_STRICT is defined. When it is + * undefined they will all be no-ops and generate no code. + * + * @{ + */ + + +/** @def RTASSERT_QUIET + * This can be defined to shut up the messages for a file where this would be + * problematic because the message printing code path passes thru it. + * @internal */ +#ifdef DOXYGEN_RUNNING +# define RTASSERT_QUIET +#endif +#if defined(RTASSERT_QUIET) && !defined(DOXYGEN_RUNNING) +# define RTAssertMsg1Weak(pszExpr, uLine, pszfile, pszFunction) \ + do { } while (0) +# define RTAssertMsg2Weak if (1) {} else RTAssertMsg2Weak +#endif + +/** @def RTAssertDoPanic + * Raises an assertion panic appropriate to the current context. + * @remarks This macro does not depend on RT_STRICT. + */ +#if defined(IN_RING0) \ + && (defined(RT_OS_DARWIN) || defined(RT_OS_HAIKU) || defined(RT_OS_SOLARIS)) +# define RTAssertDoPanic() RTR0AssertPanicSystem() +#else +# define RTAssertDoPanic() RTAssertDebugBreak() +#endif + +/** @def AssertBreakpoint() + * Assertion Breakpoint. + * @deprecated Use RTAssertPanic or RTAssertDebugBreak instead. + */ +#ifdef RT_STRICT +# define AssertBreakpoint() RTAssertDebugBreak() +#else +# define AssertBreakpoint() do { } while (0) +#endif + +/** @def RTAssertPanic() + * If RT_STRICT is defined this macro will invoke RTAssertDoPanic if + * RTAssertShouldPanic returns true. If RT_STRICT isn't defined it won't do any + * thing. + */ +#if defined(RT_STRICT) && !defined(RTASSERT_DONT_PANIC) +# define RTAssertPanic() do { if (RTAssertShouldPanic()) RTAssertDoPanic(); } while (0) +#else +# define RTAssertPanic() do { } while (0) +#endif + +/** @def Assert + * Assert that an expression is true. If false, hit breakpoint. + * @param expr Expression which should be true. + */ +#ifdef RT_STRICT +# define Assert(expr) \ + do { \ + if (RT_LIKELY(!!(expr))) \ + { /* likely */ } \ + else \ + { \ + RTAssertMsg1Weak(#expr, __LINE__, __FILE__, RT_GCC_EXTENSION __PRETTY_FUNCTION__); \ + RTAssertPanic(); \ + } \ + } while (0) +#else +# define Assert(expr) do { } while (0) +#endif + + +/** @def AssertStmt + * Assert that an expression is true. If false, hit breakpoint and execute the + * statement. + * @param expr Expression which should be true. + * @param stmt Statement to execute on failure. + */ +#ifdef RT_STRICT +# define AssertStmt(expr, stmt) \ + do { \ + if (RT_LIKELY(!!(expr))) \ + { /* likely */ } \ + else \ + { \ + RTAssertMsg1Weak(#expr, __LINE__, __FILE__, RT_GCC_EXTENSION __PRETTY_FUNCTION__); \ + RTAssertPanic(); \ + stmt; \ + } \ + } while (0) +#else +# define AssertStmt(expr, stmt) \ + do { \ + if (RT_LIKELY(!!(expr))) \ + { /* likely */ } \ + else \ + { \ + stmt; \ + } \ + } while (0) +#endif + + +/** @def AssertReturn + * Assert that an expression is true and returns if it isn't. + * In RT_STRICT mode it will hit a breakpoint before returning. + * + * @param expr Expression which should be true. + * @param rc What is to be presented to return. + */ +#ifdef RT_STRICT +# define AssertReturn(expr, rc) \ + do { \ + if (RT_LIKELY(!!(expr))) \ + { /* likely */ } \ + else \ + { \ + RTAssertMsg1Weak(#expr, __LINE__, __FILE__, RT_GCC_EXTENSION __PRETTY_FUNCTION__); \ + RTAssertPanic(); \ + return (rc); \ + } \ + } while (0) +#else +# define AssertReturn(expr, rc) \ + do { \ + if (RT_LIKELY(!!(expr))) \ + { /* likely */ } \ + else \ + return (rc); \ + } while (0) +#endif + +/** @def AssertReturnStmt + * Assert that an expression is true, if it isn't execute the given statement + * and return rc. + * + * In RT_STRICT mode it will hit a breakpoint before executing the statement and + * returning. + * + * @param expr Expression which should be true. + * @param stmt Statement to execute before returning on failure. + * @param rc What is to be presented to return. + */ +#ifdef RT_STRICT +# define AssertReturnStmt(expr, stmt, rc) \ + do { \ + if (RT_LIKELY(!!(expr))) \ + { /* likely */ } \ + else \ + { \ + RTAssertMsg1Weak(#expr, __LINE__, __FILE__, __PRETTY_FUNCTION__); \ + RTAssertPanic(); \ + stmt; \ + return (rc); \ + } \ + } while (0) +#else +# define AssertReturnStmt(expr, stmt, rc) \ + do { \ + if (RT_LIKELY(!!(expr))) \ + { /* likely */ } \ + else \ + { \ + stmt; \ + return (rc); \ + } \ + } while (0) +#endif + +/** @def AssertReturnVoid + * Assert that an expression is true and returns if it isn't. + * In RT_STRICT mode it will hit a breakpoint before returning. + * + * @param expr Expression which should be true. + */ +#ifdef RT_STRICT +# define AssertReturnVoid(expr) \ + do { \ + if (RT_LIKELY(!!(expr))) \ + { /* likely */ } \ + else \ + { \ + RTAssertMsg1Weak(#expr, __LINE__, __FILE__, RT_GCC_EXTENSION __PRETTY_FUNCTION__); \ + RTAssertPanic(); \ + return; \ + } \ + } while (0) +#else +# define AssertReturnVoid(expr) \ + do { \ + if (RT_LIKELY(!!(expr))) \ + { /* likely */ } \ + else \ + return; \ + } while (0) +#endif + +/** @def AssertReturnVoidStmt + * Assert that an expression is true, if it isn't execute the given statement + * and return. + * + * In RT_STRICT mode it will hit a breakpoint before returning. + * + * @param expr Expression which should be true. + * @param stmt Statement to execute before returning on failure. + */ +#ifdef RT_STRICT +# define AssertReturnVoidStmt(expr, stmt) \ + do { \ + if (RT_LIKELY(!!(expr))) \ + { /* likely */ } \ + else \ + { \ + RTAssertMsg1Weak(#expr, __LINE__, __FILE__, __PRETTY_FUNCTION__); \ + RTAssertPanic(); \ + stmt; \ + return; \ + } \ + } while (0) +#else +# define AssertReturnVoidStmt(expr, stmt) \ + do { \ + if (RT_LIKELY(!!(expr))) \ + { /* likely */ } \ + else \ + { \ + stmt; \ + return; \ + } \ + } while (0) +#endif + + +/** @def AssertBreak + * Assert that an expression is true and breaks if it isn't. + * In RT_STRICT mode it will hit a breakpoint before returning. + * + * @param expr Expression which should be true. + */ +#ifdef RT_STRICT +# define AssertBreak(expr) \ + if (RT_LIKELY(!!(expr))) \ + { /* likely */ } \ + else if (1) \ + { \ + RTAssertMsg1Weak(#expr, __LINE__, __FILE__, __PRETTY_FUNCTION__); \ + RTAssertPanic(); \ + break; \ + } else do {} while (0) +#else +# define AssertBreak(expr) \ + if (RT_LIKELY(!!(expr))) \ + { /* likely */ } \ + else \ + break +#endif + +/** @def AssertBreakStmt + * Assert that an expression is true and breaks if it isn't. + * In RT_STRICT mode it will hit a breakpoint before doing break. + * + * @param expr Expression which should be true. + * @param stmt Statement to execute before break in case of a failed assertion. + */ +#ifdef RT_STRICT +# define AssertBreakStmt(expr, stmt) \ + if (RT_LIKELY(!!(expr))) \ + { /* likely */ } \ + else if (1) \ + { \ + RTAssertMsg1Weak(#expr, __LINE__, __FILE__, __PRETTY_FUNCTION__); \ + RTAssertPanic(); \ + stmt; \ + break; \ + } else do {} while (0) +#else +# define AssertBreakStmt(expr, stmt) \ + if (RT_LIKELY(!!(expr))) \ + { /* likely */ } \ + else if (1) \ + { \ + stmt; \ + break; \ + } else do {} while (0) +#endif + + +/** @def AssertMsg + * Assert that an expression is true. If it's not print message and hit breakpoint. + * @param expr Expression which should be true. + * @param a printf argument list (in parenthesis). + */ +#ifdef RT_STRICT +# define AssertMsg(expr, a) \ + do { \ + if (RT_LIKELY(!!(expr))) \ + { /* likely */ } \ + else \ + { \ + RTAssertMsg1Weak(#expr, __LINE__, __FILE__, RT_GCC_EXTENSION __PRETTY_FUNCTION__); \ + RTAssertMsg2Weak a; \ + RTAssertPanic(); \ + } \ + } while (0) +#else +# define AssertMsg(expr, a) do { } while (0) +#endif + +/** @def AssertMsgStmt + * Assert that an expression is true. If it's not print message and hit + * breakpoint and execute the statement. + * + * @param expr Expression which should be true. + * @param a printf argument list (in parenthesis). + * @param stmt Statement to execute in case of a failed assertion. + * + * @remarks The expression and statement will be evaluated in all build types. + */ +#ifdef RT_STRICT +# define AssertMsgStmt(expr, a, stmt) \ + do { \ + if (RT_LIKELY(!!(expr))) \ + { /* likely */ } \ + else \ + { \ + RTAssertMsg1Weak(#expr, __LINE__, __FILE__, __PRETTY_FUNCTION__); \ + RTAssertMsg2Weak a; \ + RTAssertPanic(); \ + stmt; \ + } \ + } while (0) +#else +# define AssertMsgStmt(expr, a, stmt) \ + do { \ + if (RT_LIKELY(!!(expr))) \ + { /* likely */ } \ + else \ + { \ + stmt; \ + } \ + } while (0) +#endif + +/** @def AssertMsgReturn + * Assert that an expression is true and returns if it isn't. + * In RT_STRICT mode it will hit a breakpoint before returning. + * + * @param expr Expression which should be true. + * @param a printf argument list (in parenthesis). + * @param rc What is to be presented to return. + */ +#ifdef RT_STRICT +# define AssertMsgReturn(expr, a, rc) \ + do { \ + if (RT_LIKELY(!!(expr))) \ + { /* likely */ } \ + else \ + { \ + RTAssertMsg1Weak(#expr, __LINE__, __FILE__, RT_GCC_EXTENSION __PRETTY_FUNCTION__); \ + RTAssertMsg2Weak a; \ + RTAssertPanic(); \ + return (rc); \ + } \ + } while (0) +#else +# define AssertMsgReturn(expr, a, rc) \ + do { \ + if (RT_LIKELY(!!(expr))) \ + { /* likely */ } \ + else \ + return (rc); \ + } while (0) +#endif + +/** @def AssertMsgReturnStmt + * Assert that an expression is true, if it isn't execute the statement and + * return. + * + * In RT_STRICT mode it will hit a breakpoint before returning. + * + * @param expr Expression which should be true. + * @param a printf argument list (in parenthesis). + * @param stmt Statement to execute before returning in case of a failed + * assertion. + * @param rc What is to be presented to return. + */ +#ifdef RT_STRICT +# define AssertMsgReturnStmt(expr, a, stmt, rc) \ + do { \ + if (RT_LIKELY(!!(expr))) \ + { /* likely */ } \ + else \ + { \ + RTAssertMsg1Weak(#expr, __LINE__, __FILE__, __PRETTY_FUNCTION__); \ + RTAssertMsg2Weak a; \ + RTAssertPanic(); \ + stmt; \ + return (rc); \ + } \ + } while (0) +#else +# define AssertMsgReturnStmt(expr, a, stmt, rc) \ + do { \ + if (RT_LIKELY(!!(expr))) \ + { /* likely */ } \ + else \ + { \ + stmt; \ + return (rc); \ + } \ + } while (0) +#endif + +/** @def AssertMsgReturnVoid + * Assert that an expression is true and returns if it isn't. + * In RT_STRICT mode it will hit a breakpoint before returning. + * + * @param expr Expression which should be true. + * @param a printf argument list (in parenthesis). + */ +#ifdef RT_STRICT +# define AssertMsgReturnVoid(expr, a) \ + do { \ + if (RT_LIKELY(!!(expr))) \ + { /* likely */ } \ + else \ + { \ + RTAssertMsg1Weak(#expr, __LINE__, __FILE__, RT_GCC_EXTENSION __PRETTY_FUNCTION__); \ + RTAssertMsg2Weak a; \ + RTAssertPanic(); \ + return; \ + } \ + } while (0) +#else +# define AssertMsgReturnVoid(expr, a) \ + do { \ + if (RT_LIKELY(!!(expr))) \ + { /* likely */ } \ + else \ + return; \ + } while (0) +#endif + +/** @def AssertMsgReturnVoidStmt + * Assert that an expression is true, if it isn't execute the statement and + * return. + * + * In RT_STRICT mode it will hit a breakpoint before returning. + * + * @param expr Expression which should be true. + * @param a printf argument list (in parenthesis). + * @param stmt Statement to execute before return in case of a failed assertion. + */ +#ifdef RT_STRICT +# define AssertMsgReturnVoidStmt(expr, a, stmt) \ + do { \ + if (RT_LIKELY(!!(expr))) \ + { /* likely */ } \ + else \ + { \ + RTAssertMsg1Weak(#expr, __LINE__, __FILE__, __PRETTY_FUNCTION__); \ + RTAssertMsg2Weak a; \ + RTAssertPanic(); \ + stmt; \ + return; \ + } \ + } while (0) +#else +# define AssertMsgReturnVoidStmt(expr, a, stmt) \ + do { \ + if (RT_LIKELY(!!(expr))) \ + { /* likely */ } \ + else \ + { \ + stmt; \ + return; \ + } \ + } while (0) +#endif + + +/** @def AssertMsgBreak + * Assert that an expression is true and breaks if it isn't. + * In RT_STRICT mode it will hit a breakpoint before returning. + * + * @param expr Expression which should be true. + * @param a printf argument list (in parenthesis). + */ +#ifdef RT_STRICT +# define AssertMsgBreak(expr, a) \ + if (RT_LIKELY(!!(expr))) \ + { /* likely */ } \ + else if (1) \ + { \ + RTAssertMsg1Weak(#expr, __LINE__, __FILE__, __PRETTY_FUNCTION__); \ + RTAssertMsg2Weak a; \ + RTAssertPanic(); \ + break; \ + } else do {} while (0) +#else +# define AssertMsgBreak(expr, a) \ + if (RT_LIKELY(!!(expr))) \ + { /* likely */ } \ + else \ + break +#endif + +/** @def AssertMsgBreakStmt + * Assert that an expression is true and breaks if it isn't. + * In RT_STRICT mode it will hit a breakpoint before doing break. + * + * @param expr Expression which should be true. + * @param a printf argument list (in parenthesis). + * @param stmt Statement to execute before break in case of a failed assertion. + */ +#ifdef RT_STRICT +# define AssertMsgBreakStmt(expr, a, stmt) \ + if (RT_LIKELY(!!(expr))) \ + { /* likely */ } \ + else if (1) \ + { \ + RTAssertMsg1Weak(#expr, __LINE__, __FILE__, __PRETTY_FUNCTION__); \ + RTAssertMsg2Weak a; \ + RTAssertPanic(); \ + stmt; \ + break; \ + } else do {} while (0) +#else +# define AssertMsgBreakStmt(expr, a, stmt) \ + if (RT_LIKELY(!!(expr))) \ + { /* likely */ } \ + else if (1) \ + { \ + stmt; \ + break; \ + } else do {} while (0) +#endif + +/** @def AssertFailed + * An assertion failed hit breakpoint. + */ +#ifdef RT_STRICT +# define AssertFailed() \ + do { \ + RTAssertMsg1Weak((const char *)0, __LINE__, __FILE__, RT_GCC_EXTENSION __PRETTY_FUNCTION__); \ + RTAssertPanic(); \ + } while (0) +#else +# define AssertFailed() do { } while (0) +#endif + +/** @def AssertFailedReturn + * An assertion failed, hit breakpoint (RT_STRICT mode only) and return. + * + * @param rc The rc to return. + */ +#ifdef RT_STRICT +# define AssertFailedReturn(rc) \ + do { \ + RTAssertMsg1Weak((const char *)0, __LINE__, __FILE__, __PRETTY_FUNCTION__); \ + RTAssertPanic(); \ + return (rc); \ + } while (0) +#else +# define AssertFailedReturn(rc) \ + do { \ + return (rc); \ + } while (0) +#endif + +/** @def AssertFailedReturnStmt + * An assertion failed, hit breakpoint (RT_STRICT mode only), execute a + * statement and return a value. + * + * @param stmt The statement to execute before returning. + * @param rc The value to return. + */ +#ifdef RT_STRICT +# define AssertFailedReturnStmt(stmt, rc) \ + do { \ + RTAssertMsg1Weak((const char *)0, __LINE__, __FILE__, __PRETTY_FUNCTION__); \ + RTAssertPanic(); \ + stmt; \ + return (rc); \ + } while (0) +#else +# define AssertFailedReturnStmt(stmt, rc) \ + do { \ + stmt; \ + return (rc); \ + } while (0) +#endif + +/** @def AssertFailedReturnVoid + * An assertion failed, hit breakpoint (RT_STRICT mode only) and return. + */ +#ifdef RT_STRICT +# define AssertFailedReturnVoid() \ + do { \ + RTAssertMsg1Weak((const char *)0, __LINE__, __FILE__, __PRETTY_FUNCTION__); \ + RTAssertPanic(); \ + return; \ + } while (0) +#else +# define AssertFailedReturnVoid() \ + do { \ + return; \ + } while (0) +#endif + +/** @def AssertFailedReturnVoidStmt + * An assertion failed, hit breakpoint (RT_STRICT mode only), execute a + * statement and return. + * + * @param stmt The statement to execute before returning. + */ +#ifdef RT_STRICT +# define AssertFailedReturnVoidStmt(stmt) \ + do { \ + RTAssertMsg1Weak((const char *)0, __LINE__, __FILE__, __PRETTY_FUNCTION__); \ + RTAssertPanic(); \ + stmt; \ + return; \ + } while (0) +#else +# define AssertFailedReturnVoidStmt(stmt) \ + do { \ + stmt; \ + return; \ + } while (0) +#endif + + +/** @def AssertFailedBreak + * An assertion failed, hit breakpoint (RT_STRICT mode only) and break. + */ +#ifdef RT_STRICT +# define AssertFailedBreak() \ + if (1) { \ + RTAssertMsg1Weak((const char *)0, __LINE__, __FILE__, __PRETTY_FUNCTION__); \ + RTAssertPanic(); \ + break; \ + } else do {} while (0) +#else +# define AssertFailedBreak() \ + if (1) \ + break; \ + else do {} while (0) +#endif + +/** @def AssertFailedBreakStmt + * An assertion failed, hit breakpoint (RT_STRICT mode only), execute + * the given statement and break. + * + * @param stmt Statement to execute before break. + */ +#ifdef RT_STRICT +# define AssertFailedBreakStmt(stmt) \ + if (1) { \ + RTAssertMsg1Weak((const char *)0, __LINE__, __FILE__, __PRETTY_FUNCTION__); \ + RTAssertPanic(); \ + stmt; \ + break; \ + } else do {} while (0) +#else +# define AssertFailedBreakStmt(stmt) \ + if (1) { \ + stmt; \ + break; \ + } else do {} while (0) +#endif + + +/** @def AssertMsgFailed + * An assertion failed print a message and a hit breakpoint. + * + * @param a printf argument list (in parenthesis). + */ +#ifdef RT_STRICT +# define AssertMsgFailed(a) \ + do { \ + RTAssertMsg1Weak((const char *)0, __LINE__, __FILE__, RT_GCC_EXTENSION __PRETTY_FUNCTION__); \ + RTAssertMsg2Weak a; \ + RTAssertPanic(); \ + } while (0) +#else +# define AssertMsgFailed(a) do { } while (0) +#endif + +/** @def AssertMsgFailedReturn + * An assertion failed, hit breakpoint with message (RT_STRICT mode only) and return. + * + * @param a printf argument list (in parenthesis). + * @param rc What is to be presented to return. + */ +#ifdef RT_STRICT +# define AssertMsgFailedReturn(a, rc) \ + do { \ + RTAssertMsg1Weak((const char *)0, __LINE__, __FILE__, __PRETTY_FUNCTION__); \ + RTAssertMsg2Weak a; \ + RTAssertPanic(); \ + return (rc); \ + } while (0) +#else +# define AssertMsgFailedReturn(a, rc) \ + do { \ + return (rc); \ + } while (0) +#endif + +/** @def AssertMsgFailedReturnVoid + * An assertion failed, hit breakpoint with message (RT_STRICT mode only) and return. + * + * @param a printf argument list (in parenthesis). + */ +#ifdef RT_STRICT +# define AssertMsgFailedReturnVoid(a) \ + do { \ + RTAssertMsg1Weak((const char *)0, __LINE__, __FILE__, __PRETTY_FUNCTION__); \ + RTAssertMsg2Weak a; \ + RTAssertPanic(); \ + return; \ + } while (0) +#else +# define AssertMsgFailedReturnVoid(a) \ + do { \ + return; \ + } while (0) +#endif + + +/** @def AssertMsgFailedBreak + * An assertion failed, hit breakpoint with message (RT_STRICT mode only) and break. + * + * @param a printf argument list (in parenthesis). + */ +#ifdef RT_STRICT +# define AssertMsgFailedBreak(a) \ + if (1) { \ + RTAssertMsg1Weak((const char *)0, __LINE__, __FILE__, __PRETTY_FUNCTION__); \ + RTAssertMsg2Weak a; \ + RTAssertPanic(); \ + break; \ + } else do {} while (0) +#else +# define AssertMsgFailedBreak(a) \ + if (1) \ + break; \ + else do {} while (0) +#endif + +/** @def AssertMsgFailedBreakStmt + * An assertion failed, hit breakpoint (RT_STRICT mode only), execute + * the given statement and break. + * + * @param a printf argument list (in parenthesis). + * @param stmt Statement to execute before break. + */ +#ifdef RT_STRICT +# define AssertMsgFailedBreakStmt(a, stmt) \ + if (1) { \ + RTAssertMsg1Weak((const char *)0, __LINE__, __FILE__, __PRETTY_FUNCTION__); \ + RTAssertMsg2Weak a; \ + RTAssertPanic(); \ + stmt; \ + break; \ + } else do {} while (0) +#else +# define AssertMsgFailedBreakStmt(a, stmt) \ + if (1) { \ + stmt; \ + break; \ + } else do {} while (0) +#endif + +/** @} */ + + + +/** @name Release Log Assertions + * + * These assertions will work like normal strict assertion when RT_STRICT is + * defined and LogRel statements when RT_STRICT is undefined. Typically used for + * things which shouldn't go wrong, but when it does you'd like to know one way + * or the other. + * + * @{ + */ + +/** @def RTAssertLogRelMsg1 + * RTAssertMsg1Weak (strict builds) / LogRel wrapper (non-strict). + */ +#ifdef RT_STRICT +# define RTAssertLogRelMsg1(pszExpr, iLine, pszFile, pszFunction) \ + RTAssertMsg1Weak(pszExpr, iLine, pszFile, pszFunction) +#else +# define RTAssertLogRelMsg1(pszExpr, iLine, pszFile, pszFunction) \ + LogRel(("AssertLogRel %s(%d) %s: %s\n",\ + (pszFile), (iLine), (pszFunction), (pszExpr) )) +#endif + +/** @def RTAssertLogRelMsg2 + * RTAssertMsg2Weak (strict builds) / LogRel wrapper (non-strict). + */ +#ifdef RT_STRICT +# define RTAssertLogRelMsg2(a) RTAssertMsg2Weak a +#else +# define RTAssertLogRelMsg2(a) LogRel(a) +#endif + +/** @def AssertLogRel + * Assert that an expression is true. + * Strict builds will hit a breakpoint, non-strict will only do LogRel. + * + * @param expr Expression which should be true. + */ +#define AssertLogRel(expr) \ + do { \ + if (RT_LIKELY(!!(expr))) \ + { /* likely */ } \ + else \ + { \ + RTAssertLogRelMsg1(#expr, __LINE__, __FILE__, __PRETTY_FUNCTION__); \ + RTAssertPanic(); \ + } \ + } while (0) + +/** @def AssertLogRelReturn + * Assert that an expression is true, return \a rc if it isn't. + * Strict builds will hit a breakpoint, non-strict will only do LogRel. + * + * @param expr Expression which should be true. + * @param rc What is to be presented to return. + */ +#define AssertLogRelReturn(expr, rc) \ + do { \ + if (RT_LIKELY(!!(expr))) \ + { /* likely */ } \ + else \ + { \ + RTAssertLogRelMsg1(#expr, __LINE__, __FILE__, __PRETTY_FUNCTION__); \ + RTAssertPanic(); \ + return (rc); \ + } \ + } while (0) + +/** @def AssertLogRelReturnVoid + * Assert that an expression is true, return void if it isn't. + * Strict builds will hit a breakpoint, non-strict will only do LogRel. + * + * @param expr Expression which should be true. + */ +#define AssertLogRelReturnVoid(expr) \ + do { \ + if (RT_LIKELY(!!(expr))) \ + { /* likely */ } \ + else \ + { \ + RTAssertLogRelMsg1(#expr, __LINE__, __FILE__, __PRETTY_FUNCTION__); \ + RTAssertPanic(); \ + return; \ + } \ + } while (0) + +/** @def AssertLogRelBreak + * Assert that an expression is true, break if it isn't. + * Strict builds will hit a breakpoint, non-strict will only do LogRel. + * + * @param expr Expression which should be true. + */ +#define AssertLogRelBreak(expr) \ + if (RT_LIKELY(!!(expr))) \ + { /* likely */ } \ + else if (1) \ + { \ + RTAssertLogRelMsg1(#expr, __LINE__, __FILE__, __PRETTY_FUNCTION__); \ + RTAssertPanic(); \ + break; \ + } \ + else do {} while (0) + +/** @def AssertLogRelBreakStmt + * Assert that an expression is true, execute \a stmt and break if it isn't. + * Strict builds will hit a breakpoint, non-strict will only do LogRel. + * + * @param expr Expression which should be true. + * @param stmt Statement to execute before break in case of a failed assertion. + */ +#define AssertLogRelBreakStmt(expr, stmt) \ + if (RT_LIKELY(!!(expr))) \ + { /* likely */ } \ + else if (1) \ + { \ + RTAssertLogRelMsg1(#expr, __LINE__, __FILE__, __PRETTY_FUNCTION__); \ + RTAssertPanic(); \ + stmt; \ + break; \ + } else do {} while (0) + +/** @def AssertLogRelMsg + * Assert that an expression is true. + * Strict builds will hit a breakpoint, non-strict will only do LogRel. + * + * @param expr Expression which should be true. + * @param a printf argument list (in parenthesis). + */ +#define AssertLogRelMsg(expr, a) \ + do { \ + if (RT_LIKELY(!!(expr))) \ + { /* likely */ } \ + else\ + { \ + RTAssertLogRelMsg1(#expr, __LINE__, __FILE__, __PRETTY_FUNCTION__); \ + RTAssertLogRelMsg2(a); \ + RTAssertPanic(); \ + } \ + } while (0) + +/** @def AssertLogRelMsgStmt + * Assert that an expression is true, execute \a stmt and break if it isn't + * Strict builds will hit a breakpoint, non-strict will only do LogRel. + * + * @param expr Expression which should be true. + * @param a printf argument list (in parenthesis). + * @param stmt Statement to execute in case of a failed assertion. + */ +#define AssertLogRelMsgStmt(expr, a, stmt) \ + do { \ + if (RT_LIKELY(!!(expr))) \ + { /* likely */ } \ + else\ + { \ + RTAssertLogRelMsg1(#expr, __LINE__, __FILE__, __PRETTY_FUNCTION__); \ + RTAssertLogRelMsg2(a); \ + RTAssertPanic(); \ + stmt; \ + } \ + } while (0) + +/** @def AssertLogRelMsgReturn + * Assert that an expression is true, return \a rc if it isn't. + * Strict builds will hit a breakpoint, non-strict will only do LogRel. + * + * @param expr Expression which should be true. + * @param a printf argument list (in parenthesis). + * @param rc What is to be presented to return. + */ +#define AssertLogRelMsgReturn(expr, a, rc) \ + do { \ + if (RT_LIKELY(!!(expr))) \ + { /* likely */ } \ + else\ + { \ + RTAssertLogRelMsg1(#expr, __LINE__, __FILE__, __PRETTY_FUNCTION__); \ + RTAssertLogRelMsg2(a); \ + RTAssertPanic(); \ + return (rc); \ + } \ + } while (0) + +/** @def AssertLogRelMsgReturnStmt + * Assert that an expression is true, execute @a stmt and return @a rcRet if it + * isn't. + * Strict builds will hit a breakpoint, non-strict will only do LogRel. + * + * @param expr Expression which should be true. + * @param a printf argument list (in parenthesis). + * @param stmt Statement to execute before returning in case of a failed + * assertion. + * @param rcRet What is to be presented to return. + */ +#define AssertLogRelMsgReturnStmt(expr, a, stmt, rcRet) \ + do { \ + if (RT_LIKELY(!!(expr))) \ + { /* likely */ } \ + else\ + { \ + RTAssertLogRelMsg1(#expr, __LINE__, __FILE__, __PRETTY_FUNCTION__); \ + RTAssertLogRelMsg2(a); \ + RTAssertPanic(); \ + stmt; \ + return (rcRet); \ + } \ + } while (0) + +/** @def AssertLogRelMsgReturnVoid + * Assert that an expression is true, return (void) if it isn't. + * Strict builds will hit a breakpoint, non-strict will only do LogRel. + * + * @param expr Expression which should be true. + * @param a printf argument list (in parenthesis). + */ +#define AssertLogRelMsgReturnVoid(expr, a) \ + do { \ + if (RT_LIKELY(!!(expr))) \ + { /* likely */ } \ + else\ + { \ + RTAssertLogRelMsg1(#expr, __LINE__, __FILE__, __PRETTY_FUNCTION__); \ + RTAssertLogRelMsg2(a); \ + RTAssertPanic(); \ + return; \ + } \ + } while (0) + +/** @def AssertLogRelMsgBreak + * Assert that an expression is true, break if it isn't. + * Strict builds will hit a breakpoint, non-strict will only do LogRel. + * + * @param expr Expression which should be true. + * @param a printf argument list (in parenthesis). + */ +#define AssertLogRelMsgBreak(expr, a) \ + if (RT_LIKELY(!!(expr))) \ + { /* likely */ } \ + else if (1) \ + { \ + RTAssertLogRelMsg1(#expr, __LINE__, __FILE__, __PRETTY_FUNCTION__); \ + RTAssertLogRelMsg2(a); \ + RTAssertPanic(); \ + break; \ + } \ + else do {} while (0) + +/** @def AssertLogRelMsgBreakStmt + * Assert that an expression is true, execute \a stmt and break if it isn't. + * Strict builds will hit a breakpoint, non-strict will only do LogRel. + * + * @param expr Expression which should be true. + * @param a printf argument list (in parenthesis). + * @param stmt Statement to execute before break in case of a failed assertion. + */ +#define AssertLogRelMsgBreakStmt(expr, a, stmt) \ + if (RT_LIKELY(!!(expr))) \ + { /* likely */ } \ + else if (1) \ + { \ + RTAssertLogRelMsg1(#expr, __LINE__, __FILE__, __PRETTY_FUNCTION__); \ + RTAssertLogRelMsg2(a); \ + RTAssertPanic(); \ + stmt; \ + break; \ + } else do {} while (0) + +/** @def AssertLogRelFailed + * An assertion failed. + * Strict builds will hit a breakpoint, non-strict will only do LogRel. + */ +#define AssertLogRelFailed() \ + do { \ + RTAssertLogRelMsg1((const char *)0, __LINE__, __FILE__, __PRETTY_FUNCTION__); \ + RTAssertPanic(); \ + } while (0) + +/** @def AssertLogRelFailedReturn + * An assertion failed. + * Strict builds will hit a breakpoint, non-strict will only do LogRel. + * + * @param rc What is to be presented to return. + */ +#define AssertLogRelFailedReturn(rc) \ + do { \ + RTAssertLogRelMsg1((const char *)0, __LINE__, __FILE__, __PRETTY_FUNCTION__); \ + RTAssertPanic(); \ + return (rc); \ + } while (0) + +/** @def AssertLogRelFailedReturnVoid + * An assertion failed, hit a breakpoint and return. + * Strict builds will hit a breakpoint, non-strict will only do LogRel. + */ +#define AssertLogRelFailedReturnVoid() \ + do { \ + RTAssertLogRelMsg1((const char *)0, __LINE__, __FILE__, __PRETTY_FUNCTION__); \ + RTAssertPanic(); \ + return; \ + } while (0) + +/** @def AssertLogRelFailedBreak + * An assertion failed, break. + * Strict builds will hit a breakpoint, non-strict will only do LogRel. + */ +#define AssertLogRelFailedBreak() \ + if (1) \ + { \ + RTAssertLogRelMsg1((const char *)0, __LINE__, __FILE__, __PRETTY_FUNCTION__); \ + RTAssertPanic(); \ + break; \ + } else do {} while (0) + +/** @def AssertLogRelFailedBreakStmt + * An assertion failed, execute \a stmt and break. + * Strict builds will hit a breakpoint, non-strict will only do LogRel. + * + * @param stmt Statement to execute before break. + */ +#define AssertLogRelFailedBreakStmt(stmt) \ + if (1) \ + { \ + RTAssertLogRelMsg1((const char *)0, __LINE__, __FILE__, __PRETTY_FUNCTION__); \ + RTAssertPanic(); \ + stmt; \ + break; \ + } else do {} while (0) + +/** @def AssertLogRelMsgFailed + * An assertion failed. + * Strict builds will hit a breakpoint, non-strict will only do LogRel. + * + * @param a printf argument list (in parenthesis). + */ +#define AssertLogRelMsgFailed(a) \ + do { \ + RTAssertLogRelMsg1((const char *)0, __LINE__, __FILE__, __PRETTY_FUNCTION__); \ + RTAssertLogRelMsg2(a); \ + RTAssertPanic(); \ + } while (0) + +/** @def AssertLogRelMsgFailedStmt + * An assertion failed, execute @a stmt. + * + * Strict builds will hit a breakpoint, non-strict will only do LogRel. The + * statement will be executed in regardless of build type. + * + * @param a printf argument list (in parenthesis). + * @param stmt Statement to execute after raising/logging the assertion. + */ +#define AssertLogRelMsgFailedStmt(a, stmt) \ + do { \ + RTAssertLogRelMsg1((const char *)0, __LINE__, __FILE__, __PRETTY_FUNCTION__); \ + RTAssertLogRelMsg2(a); \ + RTAssertPanic(); \ + stmt; \ + } while (0) + +/** @def AssertLogRelMsgFailedReturn + * An assertion failed, return \a rc. + * Strict builds will hit a breakpoint, non-strict will only do LogRel. + * + * @param a printf argument list (in parenthesis). + * @param rc What is to be presented to return. + */ +#define AssertLogRelMsgFailedReturn(a, rc) \ + do { \ + RTAssertLogRelMsg1((const char *)0, __LINE__, __FILE__, __PRETTY_FUNCTION__); \ + RTAssertLogRelMsg2(a); \ + RTAssertPanic(); \ + return (rc); \ + } while (0) + +/** @def AssertLogRelMsgFailedReturn + * An assertion failed, execute @a stmt and return @a rc. + * Strict builds will hit a breakpoint, non-strict will only do LogRel. + * + * @param a printf argument list (in parenthesis). + * @param stmt Statement to execute before returning in case of a failed + * assertion. + * @param rc What is to be presented to return. + */ +#define AssertLogRelMsgFailedReturnStmt(a, stmt, rc) \ + do { \ + RTAssertLogRelMsg1((const char *)0, __LINE__, __FILE__, __PRETTY_FUNCTION__); \ + RTAssertLogRelMsg2(a); \ + RTAssertPanic(); \ + stmt; \ + return (rc); \ + } while (0) + +/** @def AssertLogRelMsgFailedReturnVoid + * An assertion failed, return void. + * Strict builds will hit a breakpoint, non-strict will only do LogRel. + * + * @param a printf argument list (in parenthesis). + */ +#define AssertLogRelMsgFailedReturnVoid(a) \ + do { \ + RTAssertLogRelMsg1((const char *)0, __LINE__, __FILE__, __PRETTY_FUNCTION__); \ + RTAssertLogRelMsg2(a); \ + RTAssertPanic(); \ + return; \ + } while (0) + +/** @def AssertLogRelMsgFailedReturnVoid + * An assertion failed, execute @a stmt and return void. + * Strict builds will hit a breakpoint, non-strict will only do LogRel. + * + * @param a printf argument list (in parenthesis). + * @param stmt Statement to execute before returning in case of a failed + * assertion. + */ +#define AssertLogRelMsgFailedReturnVoidStmt(a, stmt) \ + do { \ + RTAssertLogRelMsg1((const char *)0, __LINE__, __FILE__, __PRETTY_FUNCTION__); \ + RTAssertLogRelMsg2(a); \ + RTAssertPanic(); \ + stmt; \ + return; \ + } while (0) + +/** @def AssertLogRelMsgFailedBreak + * An assertion failed, break. + * Strict builds will hit a breakpoint, non-strict will only do LogRel. + * + * @param a printf argument list (in parenthesis). + */ +#define AssertLogRelMsgFailedBreak(a) \ + if (1)\ + { \ + RTAssertLogRelMsg1((const char *)0, __LINE__, __FILE__, __PRETTY_FUNCTION__); \ + RTAssertLogRelMsg2(a); \ + RTAssertPanic(); \ + break; \ + } else do {} while (0) + +/** @def AssertLogRelMsgFailedBreakStmt + * An assertion failed, execute \a stmt and break. + * Strict builds will hit a breakpoint, non-strict will only do LogRel. + * + * @param a printf argument list (in parenthesis). + * @param stmt Statement to execute before break. + */ +#define AssertLogRelMsgFailedBreakStmt(a, stmt) \ + if (1) \ + { \ + RTAssertLogRelMsg1((const char *)0, __LINE__, __FILE__, __PRETTY_FUNCTION__); \ + RTAssertLogRelMsg2(a); \ + RTAssertPanic(); \ + stmt; \ + break; \ + } else do {} while (0) + +/** @} */ + + + +/** @name Release Assertions + * + * These assertions are always enabled. + * @{ + */ + +/** @def RTAssertReleasePanic() + * Invokes RTAssertShouldPanic and RTAssertDoPanic. + * + * It might seem odd that RTAssertShouldPanic is necessary when its result isn't + * checked, but it's done since RTAssertShouldPanic is overrideable and might be + * used to bail out before taking down the system (the VMMR0 case). + */ +#define RTAssertReleasePanic() do { RTAssertShouldPanic(); RTAssertDoPanic(); } while (0) + + +/** @def AssertRelease + * Assert that an expression is true. If it's not hit a breakpoint. + * + * @param expr Expression which should be true. + */ +#define AssertRelease(expr) \ + do { \ + if (RT_LIKELY(!!(expr))) \ + { /* likely */ } \ + else \ + { \ + RTAssertMsg1Weak(#expr, __LINE__, __FILE__, RT_GCC_EXTENSION __PRETTY_FUNCTION__); \ + RTAssertReleasePanic(); \ + } \ + } while (0) + +/** @def AssertReleaseReturn + * Assert that an expression is true, hit a breakpoint and return if it isn't. + * + * @param expr Expression which should be true. + * @param rc What is to be presented to return. + */ +#define AssertReleaseReturn(expr, rc) \ + do { \ + if (RT_LIKELY(!!(expr))) \ + { /* likely */ } \ + else \ + { \ + RTAssertMsg1Weak(#expr, __LINE__, __FILE__, __PRETTY_FUNCTION__); \ + RTAssertReleasePanic(); \ + return (rc); \ + } \ + } while (0) + +/** @def AssertReleaseReturnVoid + * Assert that an expression is true, hit a breakpoint and return if it isn't. + * + * @param expr Expression which should be true. + */ +#define AssertReleaseReturnVoid(expr) \ + do { \ + if (RT_LIKELY(!!(expr))) \ + { /* likely */ } \ + else \ + { \ + RTAssertMsg1Weak(#expr, __LINE__, __FILE__, __PRETTY_FUNCTION__); \ + RTAssertReleasePanic(); \ + return; \ + } \ + } while (0) + + +/** @def AssertReleaseBreak + * Assert that an expression is true, hit a breakpoint and break if it isn't. + * + * @param expr Expression which should be true. + */ +#define AssertReleaseBreak(expr) \ + if (RT_LIKELY(!!(expr))) \ + { /* likely */ } \ + else if (1) \ + { \ + RTAssertMsg1Weak(#expr, __LINE__, __FILE__, __PRETTY_FUNCTION__); \ + RTAssertReleasePanic(); \ + break; \ + } else do {} while (0) + +/** @def AssertReleaseBreakStmt + * Assert that an expression is true, hit a breakpoint and break if it isn't. + * + * @param expr Expression which should be true. + * @param stmt Statement to execute before break in case of a failed assertion. + */ +#define AssertReleaseBreakStmt(expr, stmt) \ + if (RT_LIKELY(!!(expr))) \ + { /* likely */ } \ + else if (1) \ + { \ + RTAssertMsg1Weak(#expr, __LINE__, __FILE__, __PRETTY_FUNCTION__); \ + RTAssertReleasePanic(); \ + stmt; \ + break; \ + } else do {} while (0) + + +/** @def AssertReleaseMsg + * Assert that an expression is true, print the message and hit a breakpoint if it isn't. + * + * @param expr Expression which should be true. + * @param a printf argument list (in parenthesis). + */ +#define AssertReleaseMsg(expr, a) \ + do { \ + if (RT_LIKELY(!!(expr))) \ + { /* likely */ } \ + else \ + { \ + RTAssertMsg1Weak(#expr, __LINE__, __FILE__, __PRETTY_FUNCTION__); \ + RTAssertMsg2Weak a; \ + RTAssertReleasePanic(); \ + } \ + } while (0) + +/** @def AssertReleaseMsgReturn + * Assert that an expression is true, print the message and hit a breakpoint and return if it isn't. + * + * @param expr Expression which should be true. + * @param a printf argument list (in parenthesis). + * @param rc What is to be presented to return. + */ +#define AssertReleaseMsgReturn(expr, a, rc) \ + do { \ + if (RT_LIKELY(!!(expr))) \ + { /* likely */ } \ + else \ + { \ + RTAssertMsg1Weak(#expr, __LINE__, __FILE__, __PRETTY_FUNCTION__); \ + RTAssertMsg2Weak a; \ + RTAssertReleasePanic(); \ + return (rc); \ + } \ + } while (0) + +/** @def AssertReleaseMsgReturnVoid + * Assert that an expression is true, print the message and hit a breakpoint and return if it isn't. + * + * @param expr Expression which should be true. + * @param a printf argument list (in parenthesis). + */ +#define AssertReleaseMsgReturnVoid(expr, a) \ + do { \ + if (RT_LIKELY(!!(expr))) \ + { /* likely */ } \ + else \ + { \ + RTAssertMsg1Weak(#expr, __LINE__, __FILE__, __PRETTY_FUNCTION__); \ + RTAssertMsg2Weak a; \ + RTAssertReleasePanic(); \ + return; \ + } \ + } while (0) + + +/** @def AssertReleaseMsgBreak + * Assert that an expression is true, print the message and hit a breakpoint and break if it isn't. + * + * @param expr Expression which should be true. + * @param a printf argument list (in parenthesis). + */ +#define AssertReleaseMsgBreak(expr, a) \ + if (RT_LIKELY(!!(expr))) \ + { /* likely */ } \ + else if (1) \ + { \ + RTAssertMsg1Weak(#expr, __LINE__, __FILE__, __PRETTY_FUNCTION__); \ + RTAssertMsg2Weak a; \ + RTAssertReleasePanic(); \ + break; \ + } else do {} while (0) + +/** @def AssertReleaseMsgBreakStmt + * Assert that an expression is true, print the message and hit a breakpoint and break if it isn't. + * + * @param expr Expression which should be true. + * @param a printf argument list (in parenthesis). + * @param stmt Statement to execute before break in case of a failed assertion. + */ +#define AssertReleaseMsgBreakStmt(expr, a, stmt) \ + if (RT_LIKELY(!!(expr))) \ + { /* likely */ } \ + else if (1) \ + { \ + RTAssertMsg1Weak(#expr, __LINE__, __FILE__, __PRETTY_FUNCTION__); \ + RTAssertMsg2Weak a; \ + RTAssertReleasePanic(); \ + stmt; \ + break; \ + } else do {} while (0) + + +/** @def AssertReleaseFailed + * An assertion failed, hit a breakpoint. + */ +#define AssertReleaseFailed() \ + do { \ + RTAssertMsg1Weak((const char *)0, __LINE__, __FILE__, __PRETTY_FUNCTION__); \ + RTAssertReleasePanic(); \ + } while (0) + +/** @def AssertReleaseFailedReturn + * An assertion failed, hit a breakpoint and return. + * + * @param rc What is to be presented to return. + */ +#define AssertReleaseFailedReturn(rc) \ + do { \ + RTAssertMsg1Weak((const char *)0, __LINE__, __FILE__, __PRETTY_FUNCTION__); \ + RTAssertReleasePanic(); \ + return (rc); \ + } while (0) + +/** @def AssertReleaseFailedReturnVoid + * An assertion failed, hit a breakpoint and return. + */ +#define AssertReleaseFailedReturnVoid() \ + do { \ + RTAssertMsg1Weak((const char *)0, __LINE__, __FILE__, __PRETTY_FUNCTION__); \ + RTAssertReleasePanic(); \ + return; \ + } while (0) + + +/** @def AssertReleaseFailedBreak + * An assertion failed, hit a breakpoint and break. + */ +#define AssertReleaseFailedBreak() \ + if (1) { \ + RTAssertMsg1Weak((const char *)0, __LINE__, __FILE__, __PRETTY_FUNCTION__); \ + RTAssertReleasePanic(); \ + break; \ + } else do {} while (0) + +/** @def AssertReleaseFailedBreakStmt + * An assertion failed, hit a breakpoint and break. + * + * @param stmt Statement to execute before break. + */ +#define AssertReleaseFailedBreakStmt(stmt) \ + if (1) { \ + RTAssertMsg1Weak((const char *)0, __LINE__, __FILE__, __PRETTY_FUNCTION__); \ + RTAssertReleasePanic(); \ + stmt; \ + break; \ + } else do {} while (0) + + +/** @def AssertReleaseMsgFailed + * An assertion failed, print a message and hit a breakpoint. + * + * @param a printf argument list (in parenthesis). + */ +#define AssertReleaseMsgFailed(a) \ + do { \ + RTAssertMsg1Weak((const char *)0, __LINE__, __FILE__, RT_GCC_EXTENSION __PRETTY_FUNCTION__); \ + RTAssertMsg2Weak a; \ + RTAssertReleasePanic(); \ + } while (0) + +/** @def AssertReleaseMsgFailedReturn + * An assertion failed, print a message, hit a breakpoint and return. + * + * @param a printf argument list (in parenthesis). + * @param rc What is to be presented to return. + */ +#define AssertReleaseMsgFailedReturn(a, rc) \ + do { \ + RTAssertMsg1Weak((const char *)0, __LINE__, __FILE__, __PRETTY_FUNCTION__); \ + RTAssertMsg2Weak a; \ + RTAssertReleasePanic(); \ + return (rc); \ + } while (0) + +/** @def AssertReleaseMsgFailedReturnVoid + * An assertion failed, print a message, hit a breakpoint and return. + * + * @param a printf argument list (in parenthesis). + */ +#define AssertReleaseMsgFailedReturnVoid(a) \ + do { \ + RTAssertMsg1Weak((const char *)0, __LINE__, __FILE__, __PRETTY_FUNCTION__); \ + RTAssertMsg2Weak a; \ + RTAssertReleasePanic(); \ + return; \ + } while (0) + + +/** @def AssertReleaseMsgFailedBreak + * An assertion failed, print a message, hit a breakpoint and break. + * + * @param a printf argument list (in parenthesis). + */ +#define AssertReleaseMsgFailedBreak(a) \ + if (1) { \ + RTAssertMsg1Weak((const char *)0, __LINE__, __FILE__, __PRETTY_FUNCTION__); \ + RTAssertMsg2Weak a; \ + RTAssertReleasePanic(); \ + break; \ + } else do {} while (0) + +/** @def AssertReleaseMsgFailedBreakStmt + * An assertion failed, print a message, hit a breakpoint and break. + * + * @param a printf argument list (in parenthesis). + * @param stmt Statement to execute before break. + */ +#define AssertReleaseMsgFailedBreakStmt(a, stmt) \ + if (1) { \ + RTAssertMsg1Weak((const char *)0, __LINE__, __FILE__, __PRETTY_FUNCTION__); \ + RTAssertMsg2Weak a; \ + RTAssertReleasePanic(); \ + stmt; \ + break; \ + } else do {} while (0) + +/** @} */ + + + +/** @name Fatal Assertions + * These are similar to release assertions except that you cannot ignore them in + * any way, they will loop for ever if RTAssertDoPanic returns. + * + * @{ + */ + +/** @def AssertFatal + * Assert that an expression is true. If it's not hit a breakpoint (for ever). + * + * @param expr Expression which should be true. + */ +#define AssertFatal(expr) \ + do { \ + if (RT_LIKELY(!!(expr))) \ + { /* likely */ } \ + else \ + for (;;) \ + { \ + RTAssertMsg1Weak(#expr, __LINE__, __FILE__, __PRETTY_FUNCTION__); \ + RTAssertReleasePanic(); \ + } \ + } while (0) + +/** @def AssertFatalMsg + * Assert that an expression is true, print the message and hit a breakpoint (for ever) if it isn't. + * + * @param expr Expression which should be true. + * @param a printf argument list (in parenthesis). + */ +#define AssertFatalMsg(expr, a) \ + do { \ + if (RT_LIKELY(!!(expr))) \ + { /* likely */ } \ + else \ + for (;;) \ + { \ + RTAssertMsg1Weak(#expr, __LINE__, __FILE__, __PRETTY_FUNCTION__); \ + RTAssertMsg2Weak a; \ + RTAssertReleasePanic(); \ + } \ + } while (0) + +/** @def AssertFatalFailed + * An assertion failed, hit a breakpoint (for ever). + */ +#define AssertFatalFailed() \ + do { \ + for (;;) \ + { \ + RTAssertMsg1Weak((const char *)0, __LINE__, __FILE__, RT_GCC_EXTENSION __PRETTY_FUNCTION__); \ + RTAssertReleasePanic(); \ + } \ + } while (0) + +/** @def AssertFatalMsgFailed + * An assertion failed, print a message and hit a breakpoint (for ever). + * + * @param a printf argument list (in parenthesis). + */ +#define AssertFatalMsgFailed(a) \ + do { \ + for (;;) \ + { \ + RTAssertMsg1Weak((const char *)0, __LINE__, __FILE__, RT_GCC_EXTENSION __PRETTY_FUNCTION__); \ + RTAssertMsg2Weak a; \ + RTAssertReleasePanic(); \ + } \ + } while (0) + +/** @} */ + + + +/** @name Convenience Assertions Macros + * @{ + */ + +/** @def AssertRC + * Asserts a iprt status code successful. + * + * On failure it will print info about the rc and hit a breakpoint. + * + * @param rc iprt status code. + * @remark rc is referenced multiple times. In release mode is NOREF()'ed. + */ +#define AssertRC(rc) AssertMsgRC(rc, ("%Rra\n", (rc))) + +/** @def AssertRCReturn + * Asserts a iprt status code successful, bitch (RT_STRICT mode only) and return if it isn't. + * + * @param rc iprt status code. + * @param rcRet What is to be presented to return. + * @remark rc is referenced multiple times. In release mode is NOREF()'ed. + */ +#define AssertRCReturn(rc, rcRet) AssertMsgRCReturn(rc, ("%Rra\n", (rc)), rcRet) + +/** @def AssertRCReturn + * Asserts a iprt status code successful, bitch (RT_STRICT mode only), execute + * @a stmt and returns @a rcRet if it isn't. + * + * @param rc iprt status code. + * @param stmt Statement to execute before returning in case of a failed + * assertion. + * @param rcRet What is to be presented to return. + * @remark rc is referenced multiple times. In release mode is NOREF()'ed. + */ +#define AssertRCReturnStmt(rc, stmt, rcRet) AssertMsgRCReturnStmt(rc, ("%Rra\n", (rc)), stmt, rcRet) + +/** @def AssertRCReturnVoid + * Asserts a iprt status code successful, bitch (RT_STRICT mode only) and return if it isn't. + * + * @param rc iprt status code. + * @remark rc is referenced multiple times. In release mode is NOREF()'ed. + */ +#define AssertRCReturnVoid(rc) AssertMsgRCReturnVoid(rc, ("%Rra\n", (rc))) + +/** @def AssertReturnVoidStmt + * Asserts a iprt status code successful, bitch (RT_STRICT mode only), and + * execute the given statement/return if it isn't. + * + * @param rc iprt status code. + * @param stmt Statement to execute before returning on failure. + * @remark rc is referenced multiple times. In release mode is NOREF()'ed. + */ +#define AssertRCReturnVoidStmt(rc, stmt) AssertMsgRCReturnVoidStmt(rc, ("%Rra\n", (rc)), stmt) + +/** @def AssertRCBreak + * Asserts a iprt status code successful, bitch (RT_STRICT mode only) and break if it isn't. + * + * @param rc iprt status code. + * @remark rc is referenced multiple times. In release mode is NOREF()'ed. + */ +#define AssertRCBreak(rc) AssertMsgRCBreak(rc, ("%Rra\n", (rc))) + +/** @def AssertRCBreakStmt + * Asserts a iprt status code successful, bitch (RT_STRICT mode only) and break if it isn't. + * + * @param rc iprt status code. + * @param stmt Statement to execute before break in case of a failed assertion. + * @remark rc is referenced multiple times. In release mode is NOREF()'ed. + */ +#define AssertRCBreakStmt(rc, stmt) AssertMsgRCBreakStmt(rc, ("%Rra\n", (rc)), stmt) + +/** @def AssertMsgRC + * Asserts a iprt status code successful. + * + * It prints a custom message and hits a breakpoint on FAILURE. + * + * @param rc iprt status code. + * @param msg printf argument list (in parenthesis). + * @remark rc is referenced multiple times. In release mode is NOREF()'ed. + */ +#define AssertMsgRC(rc, msg) \ + do { AssertMsg(RT_SUCCESS_NP(rc), msg); NOREF(rc); } while (0) + +/** @def AssertMsgRCReturn + * Asserts a iprt status code successful and if it's not return the specified status code. + * + * If RT_STRICT is defined the message will be printed and a breakpoint hit before it returns + * + * @param rc iprt status code. + * @param msg printf argument list (in parenthesis). + * @param rcRet What is to be presented to return. + * @remark rc is referenced multiple times. In release mode is NOREF()'ed. + */ +#define AssertMsgRCReturn(rc, msg, rcRet) \ + do { AssertMsgReturn(RT_SUCCESS_NP(rc), msg, rcRet); NOREF(rc); } while (0) + +/** @def AssertMsgRCReturnStmt + * Asserts a iprt status code successful and if it's not execute @a stmt and + * return the specified status code (@a rcRet). + * + * If RT_STRICT is defined the message will be printed and a breakpoint hit before it returns + * + * @param rc iprt status code. + * @param msg printf argument list (in parenthesis). + * @param stmt Statement to execute before returning in case of a failed + * assertion. + * @param rcRet What is to be presented to return. + * @remark rc is referenced multiple times. In release mode is NOREF()'ed. + */ +#define AssertMsgRCReturnStmt(rc, msg, stmt, rcRet) \ + do { AssertMsgReturnStmt(RT_SUCCESS_NP(rc), msg, stmt, rcRet); NOREF(rc); } while (0) + +/** @def AssertMsgRCReturnVoid + * Asserts a iprt status code successful and if it's not return. + * + * If RT_STRICT is defined the message will be printed and a breakpoint hit before it returns + * + * @param rc iprt status code. + * @param msg printf argument list (in parenthesis). + * @remark rc is referenced multiple times. In release mode is NOREF()'ed. + */ +#define AssertMsgRCReturnVoid(rc, msg) \ + do { AssertMsgReturnVoid(RT_SUCCESS_NP(rc), msg); NOREF(rc); } while (0) + +/** @def AssertMsgRCReturnVoidStmt + * Asserts a iprt status code successful and execute statement/break if it's not. + * + * If RT_STRICT is defined the message will be printed and a breakpoint hit before it returns + * + * @param rc iprt status code. + * @param msg printf argument list (in parenthesis). + * @param stmt Statement to execute before break in case of a failed assertion. + * @remark rc is referenced multiple times. In release mode is NOREF()'ed. + */ +#define AssertMsgRCReturnVoidStmt(rc, msg, stmt) \ + do { AssertMsgReturnVoidStmt(RT_SUCCESS_NP(rc), msg, stmt); NOREF(rc); } while (0) + +/** @def AssertMsgRCBreak + * Asserts a iprt status code successful and if it's not break. + * + * If RT_STRICT is defined the message will be printed and a breakpoint hit before it breaks + * + * @param rc iprt status code. + * @param msg printf argument list (in parenthesis). + * @remark rc is referenced multiple times. In release mode is NOREF()'ed. + */ +#define AssertMsgRCBreak(rc, msg) \ + if (1) { AssertMsgBreak(RT_SUCCESS(rc), msg); NOREF(rc); } else do {} while (0) + +/** @def AssertMsgRCBreakStmt + * Asserts a iprt status code successful and execute statement/break if it's not. + * + * If RT_STRICT is defined the message will be printed and a breakpoint hit before it returns + * + * @param rc iprt status code. + * @param msg printf argument list (in parenthesis). + * @param stmt Statement to execute before break in case of a failed assertion. + * @remark rc is referenced multiple times. In release mode is NOREF()'ed. + */ +#define AssertMsgRCBreakStmt(rc, msg, stmt) \ + if (1) { AssertMsgBreakStmt(RT_SUCCESS_NP(rc), msg, stmt); NOREF(rc); } else do {} while (0) + +/** @def AssertRCSuccess + * Asserts an iprt status code equals VINF_SUCCESS. + * + * On failure it will print info about the rc and hit a breakpoint. + * + * @param rc iprt status code. + * @remark rc is referenced multiple times. In release mode is NOREF()'ed. + */ +#define AssertRCSuccess(rc) do { AssertMsg((rc) == VINF_SUCCESS, ("%Rra\n", (rc))); NOREF(rc); } while (0) + +/** @def AssertRCSuccessReturn + * Asserts that an iprt status code equals VINF_SUCCESS, bitch (RT_STRICT mode only) and return if it isn't. + * + * @param rc iprt status code. + * @param rcRet What is to be presented to return. + * @remark rc is referenced multiple times. In release mode is NOREF()'ed. + */ +#define AssertRCSuccessReturn(rc, rcRet) AssertMsgReturn((rc) == VINF_SUCCESS, ("%Rra\n", (rc)), rcRet) + +/** @def AssertRCSuccessReturnVoid + * Asserts that an iprt status code equals VINF_SUCCESS, bitch (RT_STRICT mode only) and return if it isn't. + * + * @param rc iprt status code. + * @remark rc is referenced multiple times. In release mode is NOREF()'ed. + */ +#define AssertRCSuccessReturnVoid(rc) AssertMsgReturnVoid((rc) == VINF_SUCCESS, ("%Rra\n", (rc))) + +/** @def AssertRCSuccessBreak + * Asserts that an iprt status code equals VINF_SUCCESS, bitch (RT_STRICT mode only) and break if it isn't. + * + * @param rc iprt status code. + * @remark rc is referenced multiple times. In release mode is NOREF()'ed. + */ +#define AssertRCSuccessBreak(rc) AssertMsgBreak((rc) == VINF_SUCCESS, ("%Rra\n", (rc))) + +/** @def AssertRCSuccessBreakStmt + * Asserts that an iprt status code equals VINF_SUCCESS, bitch (RT_STRICT mode only) and break if it isn't. + * + * @param rc iprt status code. + * @param stmt Statement to execute before break in case of a failed assertion. + * @remark rc is referenced multiple times. In release mode is NOREF()'ed. + */ +#define AssertRCSuccessBreakStmt(rc, stmt) AssertMsgBreakStmt((rc) == VINF_SUCCESS, ("%Rra\n", (rc)), stmt) + + +/** @def AssertLogRelRC + * Asserts a iprt status code successful. + * + * @param rc iprt status code. + * @remark rc is referenced multiple times. + */ +#define AssertLogRelRC(rc) AssertLogRelMsgRC(rc, ("%Rra\n", (rc))) + +/** @def AssertLogRelRCReturn + * Asserts a iprt status code successful, returning \a rc if it isn't. + * + * @param rc iprt status code. + * @param rcRet What is to be presented to return. + * @remark rc is referenced multiple times. + */ +#define AssertLogRelRCReturn(rc, rcRet) AssertLogRelMsgRCReturn(rc, ("%Rra\n", (rc)), rcRet) + +/** @def AssertLogRelRCReturnStmt + * Asserts a iprt status code successful, executing \a stmt and returning \a rc + * if it isn't. + * + * @param rc iprt status code. + * @param stmt Statement to execute before returning in case of a failed + * assertion. + * @param rcRet What is to be presented to return. + * @remark rc is referenced multiple times. + */ +#define AssertLogRelRCReturnStmt(rc, stmt, rcRet) AssertLogRelMsgRCReturnStmt(rc, ("%Rra\n", (rc)), stmt, rcRet) + +/** @def AssertLogRelRCReturnVoid + * Asserts a iprt status code successful, returning (void) if it isn't. + * + * @param rc iprt status code. + * @remark rc is referenced multiple times. + */ +#define AssertLogRelRCReturnVoid(rc) AssertLogRelMsgRCReturnVoid(rc, ("%Rra\n", (rc))) + +/** @def AssertLogRelRCBreak + * Asserts a iprt status code successful, breaking if it isn't. + * + * @param rc iprt status code. + * @remark rc is referenced multiple times. + */ +#define AssertLogRelRCBreak(rc) AssertLogRelMsgRCBreak(rc, ("%Rra\n", (rc))) + +/** @def AssertLogRelRCBreakStmt + * Asserts a iprt status code successful, execute \a statement and break if it isn't. + * + * @param rc iprt status code. + * @param stmt Statement to execute before break in case of a failed assertion. + * @remark rc is referenced multiple times. + */ +#define AssertLogRelRCBreakStmt(rc, stmt) AssertLogRelMsgRCBreakStmt(rc, ("%Rra\n", (rc)), stmt) + +/** @def AssertLogRelMsgRC + * Asserts a iprt status code successful. + * + * @param rc iprt status code. + * @param msg printf argument list (in parenthesis). + * @remark rc is referenced multiple times. + */ +#define AssertLogRelMsgRC(rc, msg) AssertLogRelMsg(RT_SUCCESS_NP(rc), msg) + +/** @def AssertLogRelMsgRCReturn + * Asserts a iprt status code successful. + * + * @param rc iprt status code. + * @param msg printf argument list (in parenthesis). + * @param rcRet What is to be presented to return. + * @remark rc is referenced multiple times. + */ +#define AssertLogRelMsgRCReturn(rc, msg, rcRet) AssertLogRelMsgReturn(RT_SUCCESS_NP(rc), msg, rcRet) + +/** @def AssertLogRelMsgRCReturnStmt + * Asserts a iprt status code successful, execute \a stmt and return on + * failure. + * + * @param rc iprt status code. + * @param msg printf argument list (in parenthesis). + * @param stmt Statement to execute before returning in case of a failed + * assertion. + * @param rcRet What is to be presented to return. + * @remark rc is referenced multiple times. + */ +#define AssertLogRelMsgRCReturnStmt(rc, msg, stmt, rcRet) AssertLogRelMsgReturnStmt(RT_SUCCESS_NP(rc), msg, stmt, rcRet) + +/** @def AssertLogRelMsgRCReturnVoid + * Asserts a iprt status code successful. + * + * @param rc iprt status code. + * @param msg printf argument list (in parenthesis). + * @remark rc is referenced multiple times. + */ +#define AssertLogRelMsgRCReturnVoid(rc, msg) AssertLogRelMsgReturnVoid(RT_SUCCESS_NP(rc), msg) + +/** @def AssertLogRelMsgRCBreak + * Asserts a iprt status code successful. + * + * @param rc iprt status code. + * @param msg printf argument list (in parenthesis). + * @remark rc is referenced multiple times. + */ +#define AssertLogRelMsgRCBreak(rc, msg) AssertLogRelMsgBreak(RT_SUCCESS(rc), msg) + +/** @def AssertLogRelMsgRCBreakStmt + * Asserts a iprt status code successful, execute \a stmt and break if it isn't. + * + * @param rc iprt status code. + * @param msg printf argument list (in parenthesis). + * @param stmt Statement to execute before break in case of a failed assertion. + * @remark rc is referenced multiple times. + */ +#define AssertLogRelMsgRCBreakStmt(rc, msg, stmt) AssertLogRelMsgBreakStmt(RT_SUCCESS_NP(rc), msg, stmt) + +/** @def AssertLogRelRCSuccess + * Asserts that an iprt status code equals VINF_SUCCESS. + * + * @param rc iprt status code. + * @remark rc is referenced multiple times. + */ +#define AssertLogRelRCSuccess(rc) AssertLogRelMsg((rc) == VINF_SUCCESS, ("%Rra\n", (rc))) + +/** @def AssertLogRelRCSuccessReturn + * Asserts that an iprt status code equals VINF_SUCCESS. + * + * @param rc iprt status code. + * @param rcRet What is to be presented to return. + * @remark rc is referenced multiple times. + */ +#define AssertLogRelRCSuccessReturn(rc, rcRet) AssertLogRelMsgReturn((rc) == VINF_SUCCESS, ("%Rra\n", (rc)), rcRet) + +/** @def AssertLogRelRCSuccessReturnVoid + * Asserts that an iprt status code equals VINF_SUCCESS. + * + * @param rc iprt status code. + * @remark rc is referenced multiple times. + */ +#define AssertLogRelRCSuccessReturnVoid(rc) AssertLogRelMsgReturnVoid((rc) == VINF_SUCCESS, ("%Rra\n", (rc))) + +/** @def AssertLogRelRCSuccessBreak + * Asserts that an iprt status code equals VINF_SUCCESS. + * + * @param rc iprt status code. + * @remark rc is referenced multiple times. + */ +#define AssertLogRelRCSuccessBreak(rc) AssertLogRelMsgBreak((rc) == VINF_SUCCESS, ("%Rra\n", (rc))) + +/** @def AssertLogRelRCSuccessBreakStmt + * Asserts that an iprt status code equals VINF_SUCCESS. + * + * @param rc iprt status code. + * @param stmt Statement to execute before break in case of a failed assertion. + * @remark rc is referenced multiple times. + */ +#define AssertLogRelRCSuccessBreakStmt(rc, stmt) AssertLogRelMsgBreakStmt((rc) == VINF_SUCCESS, ("%Rra\n", (rc)), stmt) + + +/** @def AssertReleaseRC + * Asserts a iprt status code successful. + * + * On failure information about the error will be printed and a breakpoint hit. + * + * @param rc iprt status code. + * @remark rc is referenced multiple times. + */ +#define AssertReleaseRC(rc) AssertReleaseMsgRC(rc, ("%Rra\n", (rc))) + +/** @def AssertReleaseRCReturn + * Asserts a iprt status code successful, returning if it isn't. + * + * On failure information about the error will be printed, a breakpoint hit + * and finally returning from the function if the breakpoint is somehow ignored. + * + * @param rc iprt status code. + * @param rcRet What is to be presented to return. + * @remark rc is referenced multiple times. + */ +#define AssertReleaseRCReturn(rc, rcRet) AssertReleaseMsgRCReturn(rc, ("%Rra\n", (rc)), rcRet) + +/** @def AssertReleaseRCReturnVoid + * Asserts a iprt status code successful, returning if it isn't. + * + * On failure information about the error will be printed, a breakpoint hit + * and finally returning from the function if the breakpoint is somehow ignored. + * + * @param rc iprt status code. + * @remark rc is referenced multiple times. + */ +#define AssertReleaseRCReturnVoid(rc) AssertReleaseMsgRCReturnVoid(rc, ("%Rra\n", (rc))) + +/** @def AssertReleaseRCBreak + * Asserts a iprt status code successful, breaking if it isn't. + * + * On failure information about the error will be printed, a breakpoint hit + * and finally breaking the current statement if the breakpoint is somehow ignored. + * + * @param rc iprt status code. + * @remark rc is referenced multiple times. + */ +#define AssertReleaseRCBreak(rc) AssertReleaseMsgRCBreak(rc, ("%Rra\n", (rc))) + +/** @def AssertReleaseRCBreakStmt + * Asserts a iprt status code successful, break if it isn't. + * + * On failure information about the error will be printed, a breakpoint hit + * and finally the break statement will be issued if the breakpoint is somehow ignored. + * + * @param rc iprt status code. + * @param stmt Statement to execute before break in case of a failed assertion. + * @remark rc is referenced multiple times. + */ +#define AssertReleaseRCBreakStmt(rc, stmt) AssertReleaseMsgRCBreakStmt(rc, ("%Rra\n", (rc)), stmt) + +/** @def AssertReleaseMsgRC + * Asserts a iprt status code successful. + * + * On failure a custom message is printed and a breakpoint is hit. + * + * @param rc iprt status code. + * @param msg printf argument list (in parenthesis). + * @remark rc is referenced multiple times. + */ +#define AssertReleaseMsgRC(rc, msg) AssertReleaseMsg(RT_SUCCESS_NP(rc), msg) + +/** @def AssertReleaseMsgRCReturn + * Asserts a iprt status code successful. + * + * On failure a custom message is printed, a breakpoint is hit, and finally + * returning from the function if the breakpoint is somehow ignored. + * + * @param rc iprt status code. + * @param msg printf argument list (in parenthesis). + * @param rcRet What is to be presented to return. + * @remark rc is referenced multiple times. + */ +#define AssertReleaseMsgRCReturn(rc, msg, rcRet) AssertReleaseMsgReturn(RT_SUCCESS_NP(rc), msg, rcRet) + +/** @def AssertReleaseMsgRCReturnVoid + * Asserts a iprt status code successful. + * + * On failure a custom message is printed, a breakpoint is hit, and finally + * returning from the function if the breakpoint is somehow ignored. + * + * @param rc iprt status code. + * @param msg printf argument list (in parenthesis). + * @remark rc is referenced multiple times. + */ +#define AssertReleaseMsgRCReturnVoid(rc, msg) AssertReleaseMsgReturnVoid(RT_SUCCESS_NP(rc), msg) + +/** @def AssertReleaseMsgRCBreak + * Asserts a iprt status code successful. + * + * On failure a custom message is printed, a breakpoint is hit, and finally + * breaking the current status if the breakpoint is somehow ignored. + * + * @param rc iprt status code. + * @param msg printf argument list (in parenthesis). + * @remark rc is referenced multiple times. + */ +#define AssertReleaseMsgRCBreak(rc, msg) AssertReleaseMsgBreak(RT_SUCCESS(rc), msg) + +/** @def AssertReleaseMsgRCBreakStmt + * Asserts a iprt status code successful. + * + * On failure a custom message is printed, a breakpoint is hit, and finally + * the break statement is issued if the breakpoint is somehow ignored. + * + * @param rc iprt status code. + * @param msg printf argument list (in parenthesis). + * @param stmt Statement to execute before break in case of a failed assertion. + * @remark rc is referenced multiple times. + */ +#define AssertReleaseMsgRCBreakStmt(rc, msg, stmt) AssertReleaseMsgBreakStmt(RT_SUCCESS_NP(rc), msg, stmt) + +/** @def AssertReleaseRCSuccess + * Asserts that an iprt status code equals VINF_SUCCESS. + * + * On failure information about the error will be printed and a breakpoint hit. + * + * @param rc iprt status code. + * @remark rc is referenced multiple times. + */ +#define AssertReleaseRCSuccess(rc) AssertReleaseMsg((rc) == VINF_SUCCESS, ("%Rra\n", (rc))) + +/** @def AssertReleaseRCSuccessReturn + * Asserts that an iprt status code equals VINF_SUCCESS. + * + * On failure information about the error will be printed, a breakpoint hit + * and finally returning from the function if the breakpoint is somehow ignored. + * + * @param rc iprt status code. + * @param rcRet What is to be presented to return. + * @remark rc is referenced multiple times. + */ +#define AssertReleaseRCSuccessReturn(rc, rcRet) AssertReleaseMsgReturn((rc) == VINF_SUCCESS, ("%Rra\n", (rc)), rcRet) + +/** @def AssertReleaseRCSuccessReturnVoid + * Asserts that an iprt status code equals VINF_SUCCESS. + * + * On failure information about the error will be printed, a breakpoint hit + * and finally returning from the function if the breakpoint is somehow ignored. + * + * @param rc iprt status code. + * @remark rc is referenced multiple times. + */ +#define AssertReleaseRCSuccessReturnVoid(rc) AssertReleaseMsgReturnVoid((rc) == VINF_SUCCESS, ("%Rra\n", (rc))) + +/** @def AssertReleaseRCSuccessBreak + * Asserts that an iprt status code equals VINF_SUCCESS. + * + * On failure information about the error will be printed, a breakpoint hit + * and finally breaking the current statement if the breakpoint is somehow ignored. + * + * @param rc iprt status code. + * @remark rc is referenced multiple times. + */ +#define AssertReleaseRCSuccessBreak(rc) AssertReleaseMsgBreak((rc) == VINF_SUCCESS, ("%Rra\n", (rc))) + +/** @def AssertReleaseRCSuccessBreakStmt + * Asserts that an iprt status code equals VINF_SUCCESS. + * + * On failure information about the error will be printed, a breakpoint hit + * and finally the break statement will be issued if the breakpoint is somehow ignored. + * + * @param rc iprt status code. + * @param stmt Statement to execute before break in case of a failed assertion. + * @remark rc is referenced multiple times. + */ +#define AssertReleaseRCSuccessBreakStmt(rc, stmt) AssertReleaseMsgBreakStmt((rc) == VINF_SUCCESS, ("%Rra\n", (rc)), stmt) + + +/** @def AssertFatalRC + * Asserts a iprt status code successful. + * + * On failure information about the error will be printed and a breakpoint hit. + * + * @param rc iprt status code. + * @remark rc is referenced multiple times. + */ +#define AssertFatalRC(rc) AssertFatalMsgRC(rc, ("%Rra\n", (rc))) + +/** @def AssertReleaseMsgRC + * Asserts a iprt status code successful. + * + * On failure a custom message is printed and a breakpoint is hit. + * + * @param rc iprt status code. + * @param msg printf argument list (in parenthesis). + * @remark rc is referenced multiple times. + */ +#define AssertFatalMsgRC(rc, msg) AssertFatalMsg(RT_SUCCESS_NP(rc), msg) + +/** @def AssertFatalRCSuccess + * Asserts that an iprt status code equals VINF_SUCCESS. + * + * On failure information about the error will be printed and a breakpoint hit. + * + * @param rc iprt status code. + * @remark rc is referenced multiple times. + */ +#define AssertFatalRCSuccess(rc) AssertFatalMsg((rc) == VINF_SUCCESS, ("%Rra\n", (rc))) + + +/** @def AssertPtr + * Asserts that a pointer is valid. + * + * @param pv The pointer. + */ +#define AssertPtr(pv) AssertMsg(VALID_PTR(pv), ("%p\n", (pv))) + +/** @def AssertPtrReturn + * Asserts that a pointer is valid. + * + * @param pv The pointer. + * @param rcRet What is to be presented to return. + */ +#define AssertPtrReturn(pv, rcRet) AssertMsgReturn(VALID_PTR(pv), ("%p\n", (pv)), rcRet) + +/** @def AssertPtrReturnVoid + * Asserts that a pointer is valid. + * + * @param pv The pointer. + */ +#define AssertPtrReturnVoid(pv) AssertMsgReturnVoid(VALID_PTR(pv), ("%p\n", (pv))) + +/** @def AssertPtrBreak + * Asserts that a pointer is valid. + * + * @param pv The pointer. + */ +#define AssertPtrBreak(pv) AssertMsgBreak(VALID_PTR(pv), ("%p\n", (pv))) + +/** @def AssertPtrBreakStmt + * Asserts that a pointer is valid. + * + * @param pv The pointer. + * @param stmt Statement to execute before break in case of a failed assertion. + */ +#define AssertPtrBreakStmt(pv, stmt) AssertMsgBreakStmt(VALID_PTR(pv), ("%p\n", (pv)), stmt) + +/** @def AssertPtrNull + * Asserts that a pointer is valid or NULL. + * + * @param pv The pointer. + */ +#define AssertPtrNull(pv) AssertMsg(VALID_PTR(pv) || (pv) == NULL, ("%p\n", (pv))) + +/** @def AssertPtrNullReturn + * Asserts that a pointer is valid or NULL. + * + * @param pv The pointer. + * @param rcRet What is to be presented to return. + */ +#define AssertPtrNullReturn(pv, rcRet) AssertMsgReturn(VALID_PTR(pv) || (pv) == NULL, ("%p\n", (pv)), rcRet) + +/** @def AssertPtrNullReturnVoid + * Asserts that a pointer is valid or NULL. + * + * @param pv The pointer. + */ +#define AssertPtrNullReturnVoid(pv) AssertMsgReturnVoid(VALID_PTR(pv) || (pv) == NULL, ("%p\n", (pv))) + +/** @def AssertPtrNullBreak + * Asserts that a pointer is valid or NULL. + * + * @param pv The pointer. + */ +#define AssertPtrNullBreak(pv) AssertMsgBreak(VALID_PTR(pv) || (pv) == NULL, ("%p\n", (pv))) + +/** @def AssertPtrNullBreakStmt + * Asserts that a pointer is valid or NULL. + * + * @param pv The pointer. + * @param stmt Statement to execute before break in case of a failed assertion. + */ +#define AssertPtrNullBreakStmt(pv, stmt) AssertMsgBreakStmt(VALID_PTR(pv) || (pv) == NULL, ("%p\n", (pv)), stmt) + +/** @def AssertGCPhys32 + * Asserts that the high dword of a physical address is zero + * + * @param GCPhys The address (RTGCPHYS). + */ +#define AssertGCPhys32(GCPhys) AssertMsg(VALID_PHYS32(GCPhys), ("%RGp\n", (RTGCPHYS)(GCPhys))) + +/** @def AssertGCPtr32 + * Asserts that the high dword of a physical address is zero + * + * @param GCPtr The address (RTGCPTR). + */ +#if GC_ARCH_BITS == 32 +# define AssertGCPtr32(GCPtr) do { } while (0) +#else +# define AssertGCPtr32(GCPtr) AssertMsg(!((GCPtr) & UINT64_C(0xffffffff00000000)), ("%RGv\n", GCPtr)) +#endif + +/** @def AssertForEach + * Equivalent to Assert for each value of the variable from the starting + * value to the finishing one. + * + * @param var Name of the counter variable. + * @param vartype Type of the counter variable. + * @param first Lowest inclusive value of the counter variable. + * This must be free from side effects. + * @param end Highest exclusive value of the counter variable. + * This must be free from side effects. + * @param expr Expression which should be true for each value of @a var. + */ +#define AssertForEach(var, vartype, first, end, expr) \ + do { \ + vartype var; \ + Assert((first) == (first) && (end) == (end)); /* partial check for side effects */ \ + for (var = (first); var < (end); var++) \ + AssertMsg(expr, ("%s = %#RX64 (%RI64)", #var, (uint64_t)var, (int64_t)var)); \ + } while (0) + +/** @} */ + +/** @} */ + +#endif + --- linux-raspi2-4.2.0.orig/ubuntu/vbox/include/iprt/avl.h +++ linux-raspi2-4.2.0/ubuntu/vbox/include/iprt/avl.h @@ -0,0 +1,1136 @@ +/** @file + * IPRT - AVL Trees. + */ + +/* + * Copyright (C) 1999-2012 knut st. osmundsen + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + +#ifndef ___iprt_avl_h +#define ___iprt_avl_h + +#include +#include + +RT_C_DECLS_BEGIN + +/** @defgroup grp_rt_avl RTAvl - AVL Trees + * @ingroup grp_rt + * @{ + */ + + +/** AVL tree of void pointers. + * @{ + */ + +/** + * AVL key type + */ +typedef void * AVLPVKEY; + +/** + * AVL Core node. + */ +typedef struct _AVLPVNodeCore +{ + AVLPVKEY Key; /** Key value. */ + struct _AVLPVNodeCore *pLeft; /** Pointer to left leaf node. */ + struct _AVLPVNodeCore *pRight; /** Pointer to right leaf node. */ + unsigned char uchHeight; /** Height of this tree: max(height(left), height(right)) + 1 */ +} AVLPVNODECORE, *PAVLPVNODECORE, **PPAVLPVNODECORE; + +/** A tree with void pointer keys. */ +typedef PAVLPVNODECORE AVLPVTREE; +/** Pointer to a tree with void pointer keys. */ +typedef PPAVLPVNODECORE PAVLPVTREE; + +/** Callback function for AVLPVDoWithAll(). + * @returns IPRT status codes. */ +typedef DECLCALLBACK(int) AVLPVCALLBACK(PAVLPVNODECORE, void *); +/** Pointer to callback function for AVLPVDoWithAll(). */ +typedef AVLPVCALLBACK *PAVLPVCALLBACK; + +/* + * Functions. + */ +RTDECL(bool) RTAvlPVInsert(PAVLPVTREE ppTree, PAVLPVNODECORE pNode); +RTDECL(PAVLPVNODECORE) RTAvlPVRemove(PAVLPVTREE ppTree, AVLPVKEY Key); +RTDECL(PAVLPVNODECORE) RTAvlPVGet(PAVLPVTREE ppTree, AVLPVKEY Key); +RTDECL(PAVLPVNODECORE) RTAvlPVGetBestFit(PAVLPVTREE ppTree, AVLPVKEY Key, bool fAbove); +RTDECL(PAVLPVNODECORE) RTAvlPVRemoveBestFit(PAVLPVTREE ppTree, AVLPVKEY Key, bool fAbove); +RTDECL(int) RTAvlPVDoWithAll(PAVLPVTREE ppTree, int fFromLeft, PAVLPVCALLBACK pfnCallBack, void *pvParam); +RTDECL(int) RTAvlPVDestroy(PAVLPVTREE ppTree, PAVLPVCALLBACK pfnCallBack, void *pvParam); + +/** @} */ + + +/** AVL tree of unsigned long. + * @{ + */ + +/** + * AVL key type + */ +typedef unsigned long AVLULKEY; + +/** + * AVL Core node. + */ +typedef struct _AVLULNodeCore +{ + AVLULKEY Key; /** Key value. */ + struct _AVLULNodeCore *pLeft; /** Pointer to left leaf node. */ + struct _AVLULNodeCore *pRight; /** Pointer to right leaf node. */ + unsigned char uchHeight; /** Height of this tree: max(height(left), height(right)) + 1 */ +} AVLULNODECORE, *PAVLULNODECORE, **PPAVLULNODECORE; + + +/** Callback function for AVLULDoWithAll(). + * @returns IPRT status codes. */ +typedef DECLCALLBACK(int) AVLULCALLBACK(PAVLULNODECORE, void*); +/** Pointer to callback function for AVLULDoWithAll(). */ +typedef AVLULCALLBACK *PAVLULCALLBACK; + + +/* + * Functions. + */ +RTDECL(bool) RTAvlULInsert(PPAVLULNODECORE ppTree, PAVLULNODECORE pNode); +RTDECL(PAVLULNODECORE) RTAvlULRemove(PPAVLULNODECORE ppTree, AVLULKEY Key); +RTDECL(PAVLULNODECORE) RTAvlULGet(PPAVLULNODECORE ppTree, AVLULKEY Key); +RTDECL(PAVLULNODECORE) RTAvlULGetBestFit(PPAVLULNODECORE ppTree, AVLULKEY Key, bool fAbove); +RTDECL(PAVLULNODECORE) RTAvlULRemoveBestFit(PPAVLULNODECORE ppTree, AVLULKEY Key, bool fAbove); +RTDECL(int) RTAvlULDoWithAll(PPAVLULNODECORE ppTree, int fFromLeft, PAVLULCALLBACK pfnCallBack, void *pvParam); +RTDECL(int) RTAvlULDestroy(PPAVLULNODECORE pTree, PAVLULCALLBACK pfnCallBack, void *pvParam); + +/** @} */ + + + +/** AVL tree of void pointer ranges. + * @{ + */ + +/** + * AVL key type + */ +typedef void *AVLRPVKEY; + +/** + * AVL Core node. + */ +typedef struct AVLRPVNodeCore +{ + AVLRPVKEY Key; /**< First key value in the range (inclusive). */ + AVLRPVKEY KeyLast; /**< Last key value in the range (inclusive). */ + struct AVLRPVNodeCore *pLeft; /**< Pointer to left leaf node. */ + struct AVLRPVNodeCore *pRight; /**< Pointer to right leaf node. */ + unsigned char uchHeight; /**< Height of this tree: max(height(left), height(right)) + 1 */ +} AVLRPVNODECORE, *PAVLRPVNODECORE, **PPAVLRPVNODECORE; + +/** A tree with void pointer keys. */ +typedef PAVLRPVNODECORE AVLRPVTREE; +/** Pointer to a tree with void pointer keys. */ +typedef PPAVLRPVNODECORE PAVLRPVTREE; + +/** Callback function for AVLPVDoWithAll(). + * @returns IPRT status codes. */ +typedef DECLCALLBACK(int) AVLRPVCALLBACK(PAVLRPVNODECORE, void *); +/** Pointer to callback function for AVLPVDoWithAll(). */ +typedef AVLRPVCALLBACK *PAVLRPVCALLBACK; + +/* + * Functions. + */ +RTDECL(bool) RTAvlrPVInsert(PAVLRPVTREE ppTree, PAVLRPVNODECORE pNode); +RTDECL(PAVLRPVNODECORE) RTAvlrPVRemove(PAVLRPVTREE ppTree, AVLRPVKEY Key); +RTDECL(PAVLRPVNODECORE) RTAvlrPVGet(PAVLRPVTREE ppTree, AVLRPVKEY Key); +RTDECL(PAVLRPVNODECORE) RTAvlrPVRangeGet(PAVLRPVTREE ppTree, AVLRPVKEY Key); +RTDECL(PAVLRPVNODECORE) RTAvlrPVRangeRemove(PAVLRPVTREE ppTree, AVLRPVKEY Key); +RTDECL(PAVLRPVNODECORE) RTAvlrPVGetBestFit(PAVLRPVTREE ppTree, AVLRPVKEY Key, bool fAbove); +RTDECL(PAVLRPVNODECORE) RTAvlrPVRemoveBestFit(PAVLRPVTREE ppTree, AVLRPVKEY Key, bool fAbove); +RTDECL(int) RTAvlrPVDoWithAll(PAVLRPVTREE ppTree, int fFromLeft, PAVLRPVCALLBACK pfnCallBack, void *pvParam); +RTDECL(int) RTAvlrPVDestroy(PAVLRPVTREE ppTree, PAVLRPVCALLBACK pfnCallBack, void *pvParam); + +/** @} */ + + + +/** AVL tree of uint32_t + * @{ + */ + +/** AVL key type. */ +typedef uint32_t AVLU32KEY; + +/** AVL Core node. */ +typedef struct _AVLU32NodeCore +{ + AVLU32KEY Key; /**< Key value. */ + struct _AVLU32NodeCore *pLeft; /**< Pointer to left leaf node. */ + struct _AVLU32NodeCore *pRight; /**< Pointer to right leaf node. */ + unsigned char uchHeight; /**< Height of this tree: max(height(left), height(right)) + 1 */ +} AVLU32NODECORE, *PAVLU32NODECORE, **PPAVLU32NODECORE; + +/** A tree with void pointer keys. */ +typedef PAVLU32NODECORE AVLU32TREE; +/** Pointer to a tree with void pointer keys. */ +typedef PPAVLU32NODECORE PAVLU32TREE; + +/** Callback function for AVLU32DoWithAll() & AVLU32Destroy(). + * @returns IPRT status codes. */ +typedef DECLCALLBACK(int) AVLU32CALLBACK(PAVLU32NODECORE, void*); +/** Pointer to callback function for AVLU32DoWithAll() & AVLU32Destroy(). */ +typedef AVLU32CALLBACK *PAVLU32CALLBACK; + + +/* + * Functions. + */ +RTDECL(bool) RTAvlU32Insert(PAVLU32TREE pTree, PAVLU32NODECORE pNode); +RTDECL(PAVLU32NODECORE) RTAvlU32Remove(PAVLU32TREE pTree, AVLU32KEY Key); +RTDECL(PAVLU32NODECORE) RTAvlU32Get(PAVLU32TREE pTree, AVLU32KEY Key); +RTDECL(PAVLU32NODECORE) RTAvlU32GetBestFit(PAVLU32TREE pTree, AVLU32KEY Key, bool fAbove); +RTDECL(PAVLU32NODECORE) RTAvlU32RemoveBestFit(PAVLU32TREE pTree, AVLU32KEY Key, bool fAbove); +RTDECL(int) RTAvlU32DoWithAll(PAVLU32TREE pTree, int fFromLeft, PAVLU32CALLBACK pfnCallBack, void *pvParam); +RTDECL(int) RTAvlU32Destroy(PAVLU32TREE pTree, PAVLU32CALLBACK pfnCallBack, void *pvParam); + +/** @} */ + +/** + * AVL uint32_t type for the relative offset pointer scheme. + */ +typedef int32_t AVLOU32; + +typedef uint32_t AVLOU32KEY; + +/** + * AVL Core node. + */ +typedef struct _AVLOU32NodeCore +{ + /** Key value. */ + AVLOU32KEY Key; + /** Offset to the left leaf node, relative to this field. */ + AVLOU32 pLeft; + /** Offset to the right leaf node, relative to this field. */ + AVLOU32 pRight; + /** Height of this tree: max(height(left), height(right)) + 1 */ + unsigned char uchHeight; +} AVLOU32NODECORE, *PAVLOU32NODECORE; + +/** A offset base tree with uint32_t keys. */ +typedef AVLOU32 AVLOU32TREE; +/** Pointer to an offset base tree with uint32_t keys. */ +typedef AVLOU32TREE *PAVLOU32TREE; + +/** Pointer to an internal tree pointer. + * In this case it's a pointer to a relative offset. */ +typedef AVLOU32TREE *PPAVLOU32NODECORE; + +/** Callback function for RTAvloU32DoWithAll(). + * @returns IPRT status codes. */ +typedef DECLCALLBACK(int) AVLOU32CALLBACK(PAVLOU32NODECORE pNode, void *pvUser); +/** Pointer to callback function for RTAvloU32DoWithAll(). */ +typedef AVLOU32CALLBACK *PAVLOU32CALLBACK; + +RTDECL(bool) RTAvloU32Insert(PAVLOU32TREE pTree, PAVLOU32NODECORE pNode); +RTDECL(PAVLOU32NODECORE) RTAvloU32Remove(PAVLOU32TREE pTree, AVLOU32KEY Key); +RTDECL(PAVLOU32NODECORE) RTAvloU32Get(PAVLOU32TREE pTree, AVLOU32KEY Key); +RTDECL(int) RTAvloU32DoWithAll(PAVLOU32TREE pTree, int fFromLeft, PAVLOU32CALLBACK pfnCallBack, void *pvParam); +RTDECL(PAVLOU32NODECORE) RTAvloU32GetBestFit(PAVLOU32TREE ppTree, AVLOU32KEY Key, bool fAbove); +RTDECL(PAVLOU32NODECORE) RTAvloU32RemoveBestFit(PAVLOU32TREE ppTree, AVLOU32KEY Key, bool fAbove); +RTDECL(int) RTAvloU32Destroy(PAVLOU32TREE pTree, PAVLOU32CALLBACK pfnCallBack, void *pvParam); + +/** @} */ + + +/** AVL tree of uint32_t, list duplicates. + * @{ + */ + +/** AVL key type. */ +typedef uint32_t AVLLU32KEY; + +/** AVL Core node. */ +typedef struct _AVLLU32NodeCore +{ + AVLLU32KEY Key; /**< Key value. */ + unsigned char uchHeight; /**< Height of this tree: max(height(left), height(right)) + 1 */ + struct _AVLLU32NodeCore *pLeft; /**< Pointer to left leaf node. */ + struct _AVLLU32NodeCore *pRight; /**< Pointer to right leaf node. */ + struct _AVLLU32NodeCore *pList; /**< Pointer to next node with the same key. */ +} AVLLU32NODECORE, *PAVLLU32NODECORE, **PPAVLLU32NODECORE; + +/** Callback function for RTAvllU32DoWithAll() & RTAvllU32Destroy(). + * @returns IPRT status codes. */ +typedef DECLCALLBACK(int) AVLLU32CALLBACK(PAVLLU32NODECORE, void*); +/** Pointer to callback function for RTAvllU32DoWithAll() & RTAvllU32Destroy(). */ +typedef AVLLU32CALLBACK *PAVLLU32CALLBACK; + + +/* + * Functions. + */ +RTDECL(bool) RTAvllU32Insert(PPAVLLU32NODECORE ppTree, PAVLLU32NODECORE pNode); +RTDECL(PAVLLU32NODECORE) RTAvllU32Remove(PPAVLLU32NODECORE ppTree, AVLLU32KEY Key); +RTDECL(PAVLLU32NODECORE) RTAvllU32RemoveNode(PPAVLLU32NODECORE ppTree, PAVLLU32NODECORE pNode); +RTDECL(PAVLLU32NODECORE) RTAvllU32Get(PPAVLLU32NODECORE ppTree, AVLLU32KEY Key); +RTDECL(PAVLLU32NODECORE) RTAvllU32GetBestFit(PPAVLLU32NODECORE ppTree, AVLLU32KEY Key, bool fAbove); +RTDECL(PAVLLU32NODECORE) RTAvllU32RemoveBestFit(PPAVLLU32NODECORE ppTree, AVLLU32KEY Key, bool fAbove); +RTDECL(int) RTAvllU32DoWithAll(PPAVLLU32NODECORE ppTree, int fFromLeft, PAVLLU32CALLBACK pfnCallBack, void *pvParam); +RTDECL(int) RTAvllU32Destroy(PPAVLLU32NODECORE pTree, PAVLLU32CALLBACK pfnCallBack, void *pvParam); + +/** @} */ + + + +/** AVL tree of uint64_t ranges. + * @{ + */ + +/** + * AVL key type + */ +typedef uint64_t AVLRU64KEY; + +/** + * AVL Core node. + */ +typedef struct AVLRU64NodeCore +{ + AVLRU64KEY Key; /**< First key value in the range (inclusive). */ + AVLRU64KEY KeyLast; /**< Last key value in the range (inclusive). */ + struct AVLRU64NodeCore *pLeft; /**< Pointer to left leaf node. */ + struct AVLRU64NodeCore *pRight; /**< Pointer to right leaf node. */ + unsigned char uchHeight; /**< Height of this tree: max(height(left), height(right)) + 1 */ +} AVLRU64NODECORE, *PAVLRU64NODECORE, **PPAVLRU64NODECORE; + +/** A tree with void pointer keys. */ +typedef PAVLRU64NODECORE AVLRU64TREE; +/** Pointer to a tree with void pointer keys. */ +typedef PPAVLRU64NODECORE PAVLRU64TREE; + +/** Callback function for AVLRU64DoWithAll(). + * @returns IPRT status codes. */ +typedef DECLCALLBACK(int) AVLRU64CALLBACK(PAVLRU64NODECORE, void *); +/** Pointer to callback function for AVLU64DoWithAll(). */ +typedef AVLRU64CALLBACK *PAVLRU64CALLBACK; + +/* + * Functions. + */ +RTDECL(bool) RTAvlrU64Insert(PAVLRU64TREE ppTree, PAVLRU64NODECORE pNode); +RTDECL(PAVLRU64NODECORE) RTAvlrU64Remove(PAVLRU64TREE ppTree, AVLRU64KEY Key); +RTDECL(PAVLRU64NODECORE) RTAvlrU64Get(PAVLRU64TREE ppTree, AVLRU64KEY Key); +RTDECL(PAVLRU64NODECORE) RTAvlrU64RangeGet(PAVLRU64TREE ppTree, AVLRU64KEY Key); +RTDECL(PAVLRU64NODECORE) RTAvlrU64RangeRemove(PAVLRU64TREE ppTree, AVLRU64KEY Key); +RTDECL(PAVLRU64NODECORE) RTAvlrU64GetBestFit(PAVLRU64TREE ppTree, AVLRU64KEY Key, bool fAbove); +RTDECL(PAVLRU64NODECORE) RTAvlrU64RemoveBestFit(PAVLRU64TREE ppTree, AVLRU64KEY Key, bool fAbove); +RTDECL(int) RTAvlrU64DoWithAll(PAVLRU64TREE ppTree, int fFromLeft, PAVLRU64CALLBACK pfnCallBack, void *pvParam); +RTDECL(int) RTAvlrU64Destroy(PAVLRU64TREE ppTree, PAVLRU64CALLBACK pfnCallBack, void *pvParam); + +/** @} */ + + + +/** AVL tree of RTGCPHYSes - using relative offsets internally. + * @{ + */ + +/** + * AVL 'pointer' type for the relative offset pointer scheme. + */ +typedef int32_t AVLOGCPHYS; + +/** + * AVL Core node. + */ +typedef struct _AVLOGCPhysNodeCore +{ + /** Key value. */ + RTGCPHYS Key; + /** Offset to the left leaf node, relative to this field. */ + AVLOGCPHYS pLeft; + /** Offset to the right leaf node, relative to this field. */ + AVLOGCPHYS pRight; + /** Height of this tree: max(height(left), height(right)) + 1 */ + unsigned char uchHeight; + /** Padding */ + unsigned char Padding[7]; +} AVLOGCPHYSNODECORE, *PAVLOGCPHYSNODECORE; + +/** A offset base tree with uint32_t keys. */ +typedef AVLOGCPHYS AVLOGCPHYSTREE; +/** Pointer to an offset base tree with uint32_t keys. */ +typedef AVLOGCPHYSTREE *PAVLOGCPHYSTREE; + +/** Pointer to an internal tree pointer. + * In this case it's a pointer to a relative offset. */ +typedef AVLOGCPHYSTREE *PPAVLOGCPHYSNODECORE; + +/** Callback function for RTAvloGCPhysDoWithAll() and RTAvloGCPhysDestroy(). + * @returns IPRT status codes. */ +typedef DECLCALLBACK(int) AVLOGCPHYSCALLBACK(PAVLOGCPHYSNODECORE pNode, void *pvUser); +/** Pointer to callback function for RTAvloGCPhysDoWithAll() and RTAvloGCPhysDestroy(). */ +typedef AVLOGCPHYSCALLBACK *PAVLOGCPHYSCALLBACK; + +RTDECL(bool) RTAvloGCPhysInsert(PAVLOGCPHYSTREE pTree, PAVLOGCPHYSNODECORE pNode); +RTDECL(PAVLOGCPHYSNODECORE) RTAvloGCPhysRemove(PAVLOGCPHYSTREE pTree, RTGCPHYS Key); +RTDECL(PAVLOGCPHYSNODECORE) RTAvloGCPhysGet(PAVLOGCPHYSTREE pTree, RTGCPHYS Key); +RTDECL(int) RTAvloGCPhysDoWithAll(PAVLOGCPHYSTREE pTree, int fFromLeft, PAVLOGCPHYSCALLBACK pfnCallBack, void *pvParam); +RTDECL(PAVLOGCPHYSNODECORE) RTAvloGCPhysGetBestFit(PAVLOGCPHYSTREE ppTree, RTGCPHYS Key, bool fAbove); +RTDECL(PAVLOGCPHYSNODECORE) RTAvloGCPhysRemoveBestFit(PAVLOGCPHYSTREE ppTree, RTGCPHYS Key, bool fAbove); +RTDECL(int) RTAvloGCPhysDestroy(PAVLOGCPHYSTREE pTree, PAVLOGCPHYSCALLBACK pfnCallBack, void *pvParam); + +/** @} */ + + +/** AVL tree of RTGCPHYS ranges - using relative offsets internally. + * @{ + */ + +/** + * AVL 'pointer' type for the relative offset pointer scheme. + */ +typedef int32_t AVLROGCPHYS; + +/** + * AVL Core node. + */ +typedef struct _AVLROGCPhysNodeCore +{ + /** First key value in the range (inclusive). */ + RTGCPHYS Key; + /** Last key value in the range (inclusive). */ + RTGCPHYS KeyLast; + /** Offset to the left leaf node, relative to this field. */ + AVLROGCPHYS pLeft; + /** Offset to the right leaf node, relative to this field. */ + AVLROGCPHYS pRight; + /** Height of this tree: max(height(left), height(right)) + 1 */ + unsigned char uchHeight; + /** Padding */ + unsigned char Padding[7]; +} AVLROGCPHYSNODECORE, *PAVLROGCPHYSNODECORE; + +/** A offset base tree with uint32_t keys. */ +typedef AVLROGCPHYS AVLROGCPHYSTREE; +/** Pointer to an offset base tree with uint32_t keys. */ +typedef AVLROGCPHYSTREE *PAVLROGCPHYSTREE; + +/** Pointer to an internal tree pointer. + * In this case it's a pointer to a relative offset. */ +typedef AVLROGCPHYSTREE *PPAVLROGCPHYSNODECORE; + +/** Callback function for RTAvlroGCPhysDoWithAll() and RTAvlroGCPhysDestroy(). + * @returns IPRT status codes. */ +typedef DECLCALLBACK(int) AVLROGCPHYSCALLBACK(PAVLROGCPHYSNODECORE pNode, void *pvUser); +/** Pointer to callback function for RTAvlroGCPhysDoWithAll() and RTAvlroGCPhysDestroy(). */ +typedef AVLROGCPHYSCALLBACK *PAVLROGCPHYSCALLBACK; + +RTDECL(bool) RTAvlroGCPhysInsert(PAVLROGCPHYSTREE pTree, PAVLROGCPHYSNODECORE pNode); +RTDECL(PAVLROGCPHYSNODECORE) RTAvlroGCPhysRemove(PAVLROGCPHYSTREE pTree, RTGCPHYS Key); +RTDECL(PAVLROGCPHYSNODECORE) RTAvlroGCPhysGet(PAVLROGCPHYSTREE pTree, RTGCPHYS Key); +RTDECL(PAVLROGCPHYSNODECORE) RTAvlroGCPhysRangeGet(PAVLROGCPHYSTREE pTree, RTGCPHYS Key); +RTDECL(PAVLROGCPHYSNODECORE) RTAvlroGCPhysRangeRemove(PAVLROGCPHYSTREE pTree, RTGCPHYS Key); +RTDECL(PAVLROGCPHYSNODECORE) RTAvlroGCPhysGetBestFit(PAVLROGCPHYSTREE ppTree, RTGCPHYS Key, bool fAbove); +RTDECL(int) RTAvlroGCPhysDoWithAll(PAVLROGCPHYSTREE pTree, int fFromLeft, PAVLROGCPHYSCALLBACK pfnCallBack, void *pvParam); +RTDECL(int) RTAvlroGCPhysDestroy(PAVLROGCPHYSTREE pTree, PAVLROGCPHYSCALLBACK pfnCallBack, void *pvParam); +RTDECL(PAVLROGCPHYSNODECORE) RTAvlroGCPhysGetRoot(PAVLROGCPHYSTREE pTree); +RTDECL(PAVLROGCPHYSNODECORE) RTAvlroGCPhysGetLeft(PAVLROGCPHYSNODECORE pNode); +RTDECL(PAVLROGCPHYSNODECORE) RTAvlroGCPhysGetRight(PAVLROGCPHYSNODECORE pNode); + +/** @} */ + + +/** AVL tree of RTGCPTRs. + * @{ + */ + +/** + * AVL Core node. + */ +typedef struct _AVLGCPtrNodeCore +{ + /** Key value. */ + RTGCPTR Key; + /** Pointer to the left node. */ + struct _AVLGCPtrNodeCore *pLeft; + /** Pointer to the right node. */ + struct _AVLGCPtrNodeCore *pRight; + /** Height of this tree: max(height(left), height(right)) + 1 */ + unsigned char uchHeight; +} AVLGCPTRNODECORE, *PAVLGCPTRNODECORE, **PPAVLGCPTRNODECORE; + +/** A tree of RTGCPTR keys. */ +typedef PAVLGCPTRNODECORE AVLGCPTRTREE; +/** Pointer to a tree of RTGCPTR keys. */ +typedef PPAVLGCPTRNODECORE PAVLGCPTRTREE; + +/** Callback function for RTAvlGCPtrDoWithAll(). + * @returns IPRT status codes. */ +typedef DECLCALLBACK(int) AVLGCPTRCALLBACK(PAVLGCPTRNODECORE pNode, void *pvUser); +/** Pointer to callback function for RTAvlGCPtrDoWithAll(). */ +typedef AVLGCPTRCALLBACK *PAVLGCPTRCALLBACK; + +RTDECL(bool) RTAvlGCPtrInsert(PAVLGCPTRTREE pTree, PAVLGCPTRNODECORE pNode); +RTDECL(PAVLGCPTRNODECORE) RTAvlGCPtrRemove(PAVLGCPTRTREE pTree, RTGCPTR Key); +RTDECL(PAVLGCPTRNODECORE) RTAvlGCPtrGet(PAVLGCPTRTREE pTree, RTGCPTR Key); +RTDECL(int) RTAvlGCPtrDoWithAll(PAVLGCPTRTREE pTree, int fFromLeft, PAVLGCPTRCALLBACK pfnCallBack, void *pvParam); +RTDECL(PAVLGCPTRNODECORE) RTAvlGCPtrGetBestFit(PAVLGCPTRTREE ppTree, RTGCPTR Key, bool fAbove); +RTDECL(PAVLGCPTRNODECORE) RTAvlGCPtrRemoveBestFit(PAVLGCPTRTREE ppTree, RTGCPTR Key, bool fAbove); +RTDECL(int) RTAvlGCPtrDestroy(PAVLGCPTRTREE pTree, PAVLGCPTRCALLBACK pfnCallBack, void *pvParam); + +/** @} */ + + +/** AVL tree of RTGCPTRs - using relative offsets internally. + * @{ + */ + +/** + * AVL 'pointer' type for the relative offset pointer scheme. + */ +typedef int32_t AVLOGCPTR; + +/** + * AVL Core node. + */ +typedef struct _AVLOGCPtrNodeCore +{ + /** Key value. */ + RTGCPTR Key; + /** Offset to the left leaf node, relative to this field. */ + AVLOGCPTR pLeft; + /** Offset to the right leaf node, relative to this field. */ + AVLOGCPTR pRight; + /** Height of this tree: max(height(left), height(right)) + 1 */ + unsigned char uchHeight; + unsigned char padding[GC_ARCH_BITS == 64 ? 7 : 3]; +} AVLOGCPTRNODECORE, *PAVLOGCPTRNODECORE; + +/** A offset base tree with uint32_t keys. */ +typedef AVLOGCPTR AVLOGCPTRTREE; +/** Pointer to an offset base tree with uint32_t keys. */ +typedef AVLOGCPTRTREE *PAVLOGCPTRTREE; + +/** Pointer to an internal tree pointer. + * In this case it's a pointer to a relative offset. */ +typedef AVLOGCPTRTREE *PPAVLOGCPTRNODECORE; + +/** Callback function for RTAvloGCPtrDoWithAll(). + * @returns IPRT status codes. */ +typedef DECLCALLBACK(int) AVLOGCPTRCALLBACK(PAVLOGCPTRNODECORE pNode, void *pvUser); +/** Pointer to callback function for RTAvloGCPtrDoWithAll(). */ +typedef AVLOGCPTRCALLBACK *PAVLOGCPTRCALLBACK; + +RTDECL(bool) RTAvloGCPtrInsert(PAVLOGCPTRTREE pTree, PAVLOGCPTRNODECORE pNode); +RTDECL(PAVLOGCPTRNODECORE) RTAvloGCPtrRemove(PAVLOGCPTRTREE pTree, RTGCPTR Key); +RTDECL(PAVLOGCPTRNODECORE) RTAvloGCPtrGet(PAVLOGCPTRTREE pTree, RTGCPTR Key); +RTDECL(int) RTAvloGCPtrDoWithAll(PAVLOGCPTRTREE pTree, int fFromLeft, PAVLOGCPTRCALLBACK pfnCallBack, void *pvParam); +RTDECL(PAVLOGCPTRNODECORE) RTAvloGCPtrGetBestFit(PAVLOGCPTRTREE ppTree, RTGCPTR Key, bool fAbove); +RTDECL(PAVLOGCPTRNODECORE) RTAvloGCPtrRemoveBestFit(PAVLOGCPTRTREE ppTree, RTGCPTR Key, bool fAbove); +RTDECL(int) RTAvloGCPtrDestroy(PAVLOGCPTRTREE pTree, PAVLOGCPTRCALLBACK pfnCallBack, void *pvParam); + +/** @} */ + + +/** AVL tree of RTGCPTR ranges. + * @{ + */ + +/** + * AVL Core node. + */ +typedef struct _AVLRGCPtrNodeCore +{ + /** First key value in the range (inclusive). */ + RTGCPTR Key; + /** Last key value in the range (inclusive). */ + RTGCPTR KeyLast; + /** Offset to the left leaf node, relative to this field. */ + struct _AVLRGCPtrNodeCore *pLeft; + /** Offset to the right leaf node, relative to this field. */ + struct _AVLRGCPtrNodeCore *pRight; + /** Height of this tree: max(height(left), height(right)) + 1 */ + unsigned char uchHeight; +} AVLRGCPTRNODECORE, *PAVLRGCPTRNODECORE; + +/** A offset base tree with RTGCPTR keys. */ +typedef PAVLRGCPTRNODECORE AVLRGCPTRTREE; +/** Pointer to an offset base tree with RTGCPTR keys. */ +typedef AVLRGCPTRTREE *PAVLRGCPTRTREE; + +/** Pointer to an internal tree pointer. + * In this case it's a pointer to a relative offset. */ +typedef AVLRGCPTRTREE *PPAVLRGCPTRNODECORE; + +/** Callback function for RTAvlrGCPtrDoWithAll() and RTAvlrGCPtrDestroy(). + * @returns IPRT status codes. */ +typedef DECLCALLBACK(int) AVLRGCPTRCALLBACK(PAVLRGCPTRNODECORE pNode, void *pvUser); +/** Pointer to callback function for RTAvlrGCPtrDoWithAll() and RTAvlrGCPtrDestroy(). */ +typedef AVLRGCPTRCALLBACK *PAVLRGCPTRCALLBACK; + +RTDECL(bool) RTAvlrGCPtrInsert( PAVLRGCPTRTREE pTree, PAVLRGCPTRNODECORE pNode); +RTDECL(PAVLRGCPTRNODECORE) RTAvlrGCPtrRemove( PAVLRGCPTRTREE pTree, RTGCPTR Key); +RTDECL(PAVLRGCPTRNODECORE) RTAvlrGCPtrGet( PAVLRGCPTRTREE pTree, RTGCPTR Key); +RTDECL(PAVLRGCPTRNODECORE) RTAvlrGCPtrGetBestFit( PAVLRGCPTRTREE pTree, RTGCPTR Key, bool fAbove); +RTDECL(PAVLRGCPTRNODECORE) RTAvlrGCPtrRangeGet( PAVLRGCPTRTREE pTree, RTGCPTR Key); +RTDECL(PAVLRGCPTRNODECORE) RTAvlrGCPtrRangeRemove( PAVLRGCPTRTREE pTree, RTGCPTR Key); +RTDECL(int) RTAvlrGCPtrDoWithAll( PAVLRGCPTRTREE pTree, int fFromLeft, PAVLRGCPTRCALLBACK pfnCallBack, void *pvParam); +RTDECL(int) RTAvlrGCPtrDestroy( PAVLRGCPTRTREE pTree, PAVLRGCPTRCALLBACK pfnCallBack, void *pvParam); +RTDECL(PAVLRGCPTRNODECORE) RTAvlrGCPtrGetRoot( PAVLRGCPTRTREE pTree); +RTDECL(PAVLRGCPTRNODECORE) RTAvlrGCPtrGetLeft( PAVLRGCPTRNODECORE pNode); +RTDECL(PAVLRGCPTRNODECORE) RTAvlrGCPtrGetRight( PAVLRGCPTRNODECORE pNode); + +/** @} */ + + +/** AVL tree of RTGCPTR ranges - using relative offsets internally. + * @{ + */ + +/** + * AVL 'pointer' type for the relative offset pointer scheme. + */ +typedef int32_t AVLROGCPTR; + +/** + * AVL Core node. + */ +typedef struct _AVLROGCPtrNodeCore +{ + /** First key value in the range (inclusive). */ + RTGCPTR Key; + /** Last key value in the range (inclusive). */ + RTGCPTR KeyLast; + /** Offset to the left leaf node, relative to this field. */ + AVLROGCPTR pLeft; + /** Offset to the right leaf node, relative to this field. */ + AVLROGCPTR pRight; + /** Height of this tree: max(height(left), height(right)) + 1 */ + unsigned char uchHeight; + unsigned char padding[GC_ARCH_BITS == 64 ? 7 : 7]; +} AVLROGCPTRNODECORE, *PAVLROGCPTRNODECORE; + +/** A offset base tree with uint32_t keys. */ +typedef AVLROGCPTR AVLROGCPTRTREE; +/** Pointer to an offset base tree with uint32_t keys. */ +typedef AVLROGCPTRTREE *PAVLROGCPTRTREE; + +/** Pointer to an internal tree pointer. + * In this case it's a pointer to a relative offset. */ +typedef AVLROGCPTRTREE *PPAVLROGCPTRNODECORE; + +/** Callback function for RTAvlroGCPtrDoWithAll() and RTAvlroGCPtrDestroy(). + * @returns IPRT status codes. */ +typedef DECLCALLBACK(int) AVLROGCPTRCALLBACK(PAVLROGCPTRNODECORE pNode, void *pvUser); +/** Pointer to callback function for RTAvlroGCPtrDoWithAll() and RTAvlroGCPtrDestroy(). */ +typedef AVLROGCPTRCALLBACK *PAVLROGCPTRCALLBACK; + +RTDECL(bool) RTAvlroGCPtrInsert(PAVLROGCPTRTREE pTree, PAVLROGCPTRNODECORE pNode); +RTDECL(PAVLROGCPTRNODECORE) RTAvlroGCPtrRemove(PAVLROGCPTRTREE pTree, RTGCPTR Key); +RTDECL(PAVLROGCPTRNODECORE) RTAvlroGCPtrGet(PAVLROGCPTRTREE pTree, RTGCPTR Key); +RTDECL(PAVLROGCPTRNODECORE) RTAvlroGCPtrGetBestFit(PAVLROGCPTRTREE ppTree, RTGCPTR Key, bool fAbove); +RTDECL(PAVLROGCPTRNODECORE) RTAvlroGCPtrRangeGet(PAVLROGCPTRTREE pTree, RTGCPTR Key); +RTDECL(PAVLROGCPTRNODECORE) RTAvlroGCPtrRangeRemove(PAVLROGCPTRTREE pTree, RTGCPTR Key); +RTDECL(int) RTAvlroGCPtrDoWithAll(PAVLROGCPTRTREE pTree, int fFromLeft, PAVLROGCPTRCALLBACK pfnCallBack, void *pvParam); +RTDECL(int) RTAvlroGCPtrDestroy(PAVLROGCPTRTREE pTree, PAVLROGCPTRCALLBACK pfnCallBack, void *pvParam); +RTDECL(PAVLROGCPTRNODECORE) RTAvlroGCPtrGetRoot(PAVLROGCPTRTREE pTree); +RTDECL(PAVLROGCPTRNODECORE) RTAvlroGCPtrGetLeft(PAVLROGCPTRNODECORE pNode); +RTDECL(PAVLROGCPTRNODECORE) RTAvlroGCPtrGetRight(PAVLROGCPTRNODECORE pNode); + +/** @} */ + + +/** AVL tree of RTGCPTR ranges (overlapping supported) - using relative offsets internally. + * @{ + */ + +/** + * AVL 'pointer' type for the relative offset pointer scheme. + */ +typedef int32_t AVLROOGCPTR; + +/** + * AVL Core node. + */ +typedef struct _AVLROOGCPtrNodeCore +{ + /** First key value in the range (inclusive). */ + RTGCPTR Key; + /** Last key value in the range (inclusive). */ + RTGCPTR KeyLast; + /** Offset to the left leaf node, relative to this field. */ + AVLROOGCPTR pLeft; + /** Offset to the right leaf node, relative to this field. */ + AVLROOGCPTR pRight; + /** Pointer to the list of string with the same key. Don't touch. */ + AVLROOGCPTR pList; + /** Height of this tree: max(height(left), height(right)) + 1 */ + unsigned char uchHeight; +} AVLROOGCPTRNODECORE, *PAVLROOGCPTRNODECORE; + +/** A offset base tree with uint32_t keys. */ +typedef AVLROOGCPTR AVLROOGCPTRTREE; +/** Pointer to an offset base tree with uint32_t keys. */ +typedef AVLROOGCPTRTREE *PAVLROOGCPTRTREE; + +/** Pointer to an internal tree pointer. + * In this case it's a pointer to a relative offset. */ +typedef AVLROOGCPTRTREE *PPAVLROOGCPTRNODECORE; + +/** Callback function for RTAvlrooGCPtrDoWithAll() and RTAvlrooGCPtrDestroy(). + * @returns IPRT status codes. */ +typedef DECLCALLBACK(int) AVLROOGCPTRCALLBACK(PAVLROOGCPTRNODECORE pNode, void *pvUser); +/** Pointer to callback function for RTAvlrooGCPtrDoWithAll() and RTAvlrooGCPtrDestroy(). */ +typedef AVLROOGCPTRCALLBACK *PAVLROOGCPTRCALLBACK; + +RTDECL(bool) RTAvlrooGCPtrInsert(PAVLROOGCPTRTREE pTree, PAVLROOGCPTRNODECORE pNode); +RTDECL(PAVLROOGCPTRNODECORE) RTAvlrooGCPtrRemove(PAVLROOGCPTRTREE pTree, RTGCPTR Key); +RTDECL(PAVLROOGCPTRNODECORE) RTAvlrooGCPtrGet(PAVLROOGCPTRTREE pTree, RTGCPTR Key); +RTDECL(PAVLROOGCPTRNODECORE) RTAvlrooGCPtrGetBestFit(PAVLROOGCPTRTREE ppTree, RTGCPTR Key, bool fAbove); +RTDECL(PAVLROOGCPTRNODECORE) RTAvlrooGCPtrRangeGet(PAVLROOGCPTRTREE pTree, RTGCPTR Key); +RTDECL(PAVLROOGCPTRNODECORE) RTAvlrooGCPtrRangeRemove(PAVLROOGCPTRTREE pTree, RTGCPTR Key); +RTDECL(int) RTAvlrooGCPtrDoWithAll(PAVLROOGCPTRTREE pTree, int fFromLeft, PAVLROOGCPTRCALLBACK pfnCallBack, void *pvParam); +RTDECL(int) RTAvlrooGCPtrDestroy(PAVLROOGCPTRTREE pTree, PAVLROOGCPTRCALLBACK pfnCallBack, void *pvParam); +RTDECL(PAVLROOGCPTRNODECORE) RTAvlrooGCPtrGetRoot(PAVLROOGCPTRTREE pTree); +RTDECL(PAVLROOGCPTRNODECORE) RTAvlrooGCPtrGetLeft(PAVLROOGCPTRNODECORE pNode); +RTDECL(PAVLROOGCPTRNODECORE) RTAvlrooGCPtrGetRight(PAVLROOGCPTRNODECORE pNode); +RTDECL(PAVLROOGCPTRNODECORE) RTAvlrooGCPtrGetNextEqual(PAVLROOGCPTRNODECORE pNode); + +/** @} */ + + +/** AVL tree of RTUINTPTR. + * @{ + */ + +/** + * AVL RTUINTPTR node core. + */ +typedef struct _AVLUIntPtrNodeCore +{ + /** Key value. */ + RTUINTPTR Key; + /** Offset to the left leaf node, relative to this field. */ + struct _AVLUIntPtrNodeCore *pLeft; + /** Offset to the right leaf node, relative to this field. */ + struct _AVLUIntPtrNodeCore *pRight; + /** Height of this tree: max(height(left), height(right)) + 1 */ + unsigned char uchHeight; +} AVLUINTPTRNODECORE; +/** Pointer to a RTUINTPTR AVL node core.*/ +typedef AVLUINTPTRNODECORE *PAVLUINTPTRNODECORE; + +/** A pointer based tree with RTUINTPTR keys. */ +typedef PAVLUINTPTRNODECORE AVLUINTPTRTREE; +/** Pointer to an offset base tree with RTUINTPTR keys. */ +typedef AVLUINTPTRTREE *PAVLUINTPTRTREE; + +/** Pointer to an internal tree pointer. + * In this case it's a pointer to a pointer. */ +typedef AVLUINTPTRTREE *PPAVLUINTPTRNODECORE; + +/** Callback function for RTAvlUIntPtrDoWithAll() and RTAvlUIntPtrDestroy(). + * @returns IPRT status codes. */ +typedef DECLCALLBACK(int) AVLUINTPTRCALLBACK(PAVLUINTPTRNODECORE pNode, void *pvUser); +/** Pointer to callback function for RTAvlUIntPtrDoWithAll() and RTAvlUIntPtrDestroy(). */ +typedef AVLUINTPTRCALLBACK *PAVLUINTPTRCALLBACK; + +RTDECL(bool) RTAvlUIntPtrInsert( PAVLUINTPTRTREE pTree, PAVLUINTPTRNODECORE pNode); +RTDECL(PAVLUINTPTRNODECORE) RTAvlUIntPtrRemove( PAVLUINTPTRTREE pTree, RTUINTPTR Key); +RTDECL(PAVLUINTPTRNODECORE) RTAvlUIntPtrGet( PAVLUINTPTRTREE pTree, RTUINTPTR Key); +RTDECL(PAVLUINTPTRNODECORE) RTAvlUIntPtrGetBestFit(PAVLUINTPTRTREE pTree, RTUINTPTR Key, bool fAbove); +RTDECL(int) RTAvlUIntPtrDoWithAll( PAVLUINTPTRTREE pTree, int fFromLeft, PAVLUINTPTRCALLBACK pfnCallBack, void *pvParam); +RTDECL(int) RTAvlUIntPtrDestroy( PAVLUINTPTRTREE pTree, PAVLUINTPTRCALLBACK pfnCallBack, void *pvParam); +RTDECL(PAVLUINTPTRNODECORE) RTAvlUIntPtrGetRoot( PAVLUINTPTRTREE pTree); +RTDECL(PAVLUINTPTRNODECORE) RTAvlUIntPtrGetLeft( PAVLUINTPTRNODECORE pNode); +RTDECL(PAVLUINTPTRNODECORE) RTAvlUIntPtrGetRight( PAVLUINTPTRNODECORE pNode); + +/** @} */ + + +/** AVL tree of RTUINTPTR ranges. + * @{ + */ + +/** + * AVL RTUINTPTR range node core. + */ +typedef struct _AVLRUIntPtrNodeCore +{ + /** First key value in the range (inclusive). */ + RTUINTPTR Key; + /** Last key value in the range (inclusive). */ + RTUINTPTR KeyLast; + /** Offset to the left leaf node, relative to this field. */ + struct _AVLRUIntPtrNodeCore *pLeft; + /** Offset to the right leaf node, relative to this field. */ + struct _AVLRUIntPtrNodeCore *pRight; + /** Height of this tree: max(height(left), height(right)) + 1 */ + unsigned char uchHeight; +} AVLRUINTPTRNODECORE; +/** Pointer to an AVL RTUINTPTR range node code. */ +typedef AVLRUINTPTRNODECORE *PAVLRUINTPTRNODECORE; + +/** A pointer based tree with RTUINTPTR ranges. */ +typedef PAVLRUINTPTRNODECORE AVLRUINTPTRTREE; +/** Pointer to a pointer based tree with RTUINTPTR ranges. */ +typedef AVLRUINTPTRTREE *PAVLRUINTPTRTREE; + +/** Pointer to an internal tree pointer. + * In this case it's a pointer to a pointer. */ +typedef AVLRUINTPTRTREE *PPAVLRUINTPTRNODECORE; + +/** Callback function for RTAvlrUIntPtrDoWithAll() and RTAvlrUIntPtrDestroy(). + * @returns IPRT status codes. */ +typedef DECLCALLBACK(int) AVLRUINTPTRCALLBACK(PAVLRUINTPTRNODECORE pNode, void *pvUser); +/** Pointer to callback function for RTAvlrUIntPtrDoWithAll() and RTAvlrUIntPtrDestroy(). */ +typedef AVLRUINTPTRCALLBACK *PAVLRUINTPTRCALLBACK; + +RTDECL(bool) RTAvlrUIntPtrInsert( PAVLRUINTPTRTREE pTree, PAVLRUINTPTRNODECORE pNode); +RTDECL(PAVLRUINTPTRNODECORE) RTAvlrUIntPtrRemove( PAVLRUINTPTRTREE pTree, RTUINTPTR Key); +RTDECL(PAVLRUINTPTRNODECORE) RTAvlrUIntPtrGet( PAVLRUINTPTRTREE pTree, RTUINTPTR Key); +RTDECL(PAVLRUINTPTRNODECORE) RTAvlrUIntPtrGetBestFit( PAVLRUINTPTRTREE pTree, RTUINTPTR Key, bool fAbove); +RTDECL(PAVLRUINTPTRNODECORE) RTAvlrUIntPtrRangeGet( PAVLRUINTPTRTREE pTree, RTUINTPTR Key); +RTDECL(PAVLRUINTPTRNODECORE) RTAvlrUIntPtrRangeRemove(PAVLRUINTPTRTREE pTree, RTUINTPTR Key); +RTDECL(int) RTAvlrUIntPtrDoWithAll( PAVLRUINTPTRTREE pTree, int fFromLeft, PAVLRUINTPTRCALLBACK pfnCallBack, void *pvParam); +RTDECL(int) RTAvlrUIntPtrDestroy( PAVLRUINTPTRTREE pTree, PAVLRUINTPTRCALLBACK pfnCallBack, void *pvParam); +RTDECL(PAVLRUINTPTRNODECORE) RTAvlrUIntPtrGetRoot( PAVLRUINTPTRTREE pTree); +RTDECL(PAVLRUINTPTRNODECORE) RTAvlrUIntPtrGetLeft( PAVLRUINTPTRNODECORE pNode); +RTDECL(PAVLRUINTPTRNODECORE) RTAvlrUIntPtrGetRight( PAVLRUINTPTRNODECORE pNode); + +/** @} */ + + +/** AVL tree of RTHCPHYSes - using relative offsets internally. + * @{ + */ + +/** + * AVL 'pointer' type for the relative offset pointer scheme. + */ +typedef int32_t AVLOHCPHYS; + +/** + * AVL Core node. + */ +typedef struct _AVLOHCPhysNodeCore +{ + /** Key value. */ + RTHCPHYS Key; + /** Offset to the left leaf node, relative to this field. */ + AVLOHCPHYS pLeft; + /** Offset to the right leaf node, relative to this field. */ + AVLOHCPHYS pRight; + /** Height of this tree: max(height(left), height(right)) + 1 */ + unsigned char uchHeight; +#if HC_ARCH_BITS == 64 || GC_ARCH_BITS == 64 + unsigned char Padding[7]; /**< Alignment padding. */ +#endif +} AVLOHCPHYSNODECORE, *PAVLOHCPHYSNODECORE; + +/** A offset base tree with uint32_t keys. */ +typedef AVLOHCPHYS AVLOHCPHYSTREE; +/** Pointer to an offset base tree with uint32_t keys. */ +typedef AVLOHCPHYSTREE *PAVLOHCPHYSTREE; + +/** Pointer to an internal tree pointer. + * In this case it's a pointer to a relative offset. */ +typedef AVLOHCPHYSTREE *PPAVLOHCPHYSNODECORE; + +/** Callback function for RTAvloHCPhysDoWithAll() and RTAvloHCPhysDestroy(). + * @returns IPRT status codes. */ +typedef DECLCALLBACK(int) AVLOHCPHYSCALLBACK(PAVLOHCPHYSNODECORE pNode, void *pvUser); +/** Pointer to callback function for RTAvloHCPhysDoWithAll() and RTAvloHCPhysDestroy(). */ +typedef AVLOHCPHYSCALLBACK *PAVLOHCPHYSCALLBACK; + +RTDECL(bool) RTAvloHCPhysInsert(PAVLOHCPHYSTREE pTree, PAVLOHCPHYSNODECORE pNode); +RTDECL(PAVLOHCPHYSNODECORE) RTAvloHCPhysRemove(PAVLOHCPHYSTREE pTree, RTHCPHYS Key); +RTDECL(PAVLOHCPHYSNODECORE) RTAvloHCPhysGet(PAVLOHCPHYSTREE pTree, RTHCPHYS Key); +RTDECL(int) RTAvloHCPhysDoWithAll(PAVLOHCPHYSTREE pTree, int fFromLeft, PAVLOHCPHYSCALLBACK pfnCallBack, void *pvParam); +RTDECL(PAVLOHCPHYSNODECORE) RTAvloHCPhysGetBestFit(PAVLOHCPHYSTREE ppTree, RTHCPHYS Key, bool fAbove); +RTDECL(PAVLOHCPHYSNODECORE) RTAvloHCPhysRemoveBestFit(PAVLOHCPHYSTREE ppTree, RTHCPHYS Key, bool fAbove); +RTDECL(int) RTAvloHCPhysDestroy(PAVLOHCPHYSTREE pTree, PAVLOHCPHYSCALLBACK pfnCallBack, void *pvParam); + +/** @} */ + + + +/** AVL tree of RTIOPORTs - using relative offsets internally. + * @{ + */ + +/** + * AVL 'pointer' type for the relative offset pointer scheme. + */ +typedef int32_t AVLOIOPORTPTR; + +/** + * AVL Core node. + */ +typedef struct _AVLOIOPortNodeCore +{ + /** Offset to the left leaf node, relative to this field. */ + AVLOIOPORTPTR pLeft; + /** Offset to the right leaf node, relative to this field. */ + AVLOIOPORTPTR pRight; + /** Key value. */ + RTIOPORT Key; + /** Height of this tree: max(height(left), height(right)) + 1 */ + unsigned char uchHeight; +} AVLOIOPORTNODECORE, *PAVLOIOPORTNODECORE; + +/** A offset base tree with uint32_t keys. */ +typedef AVLOIOPORTPTR AVLOIOPORTTREE; +/** Pointer to an offset base tree with uint32_t keys. */ +typedef AVLOIOPORTTREE *PAVLOIOPORTTREE; + +/** Pointer to an internal tree pointer. + * In this case it's a pointer to a relative offset. */ +typedef AVLOIOPORTTREE *PPAVLOIOPORTNODECORE; + +/** Callback function for RTAvloIOPortDoWithAll() and RTAvloIOPortDestroy(). + * @returns IPRT status codes. */ +typedef DECLCALLBACK(int) AVLOIOPORTCALLBACK(PAVLOIOPORTNODECORE pNode, void *pvUser); +/** Pointer to callback function for RTAvloIOPortDoWithAll() and RTAvloIOPortDestroy(). */ +typedef AVLOIOPORTCALLBACK *PAVLOIOPORTCALLBACK; + +RTDECL(bool) RTAvloIOPortInsert(PAVLOIOPORTTREE pTree, PAVLOIOPORTNODECORE pNode); +RTDECL(PAVLOIOPORTNODECORE) RTAvloIOPortRemove(PAVLOIOPORTTREE pTree, RTIOPORT Key); +RTDECL(PAVLOIOPORTNODECORE) RTAvloIOPortGet(PAVLOIOPORTTREE pTree, RTIOPORT Key); +RTDECL(int) RTAvloIOPortDoWithAll(PAVLOIOPORTTREE pTree, int fFromLeft, PAVLOIOPORTCALLBACK pfnCallBack, void *pvParam); +RTDECL(PAVLOIOPORTNODECORE) RTAvloIOPortGetBestFit(PAVLOIOPORTTREE ppTree, RTIOPORT Key, bool fAbove); +RTDECL(PAVLOIOPORTNODECORE) RTAvloIOPortRemoveBestFit(PAVLOIOPORTTREE ppTree, RTIOPORT Key, bool fAbove); +RTDECL(int) RTAvloIOPortDestroy(PAVLOIOPORTTREE pTree, PAVLOIOPORTCALLBACK pfnCallBack, void *pvParam); + +/** @} */ + + +/** AVL tree of RTIOPORT ranges - using relative offsets internally. + * @{ + */ + +/** + * AVL 'pointer' type for the relative offset pointer scheme. + */ +typedef int32_t AVLROIOPORTPTR; + +/** + * AVL Core node. + */ +typedef struct _AVLROIOPortNodeCore +{ + /** First key value in the range (inclusive). */ + RTIOPORT Key; + /** Last key value in the range (inclusive). */ + RTIOPORT KeyLast; + /** Offset to the left leaf node, relative to this field. */ + AVLROIOPORTPTR pLeft; + /** Offset to the right leaf node, relative to this field. */ + AVLROIOPORTPTR pRight; + /** Height of this tree: max(height(left), height(right)) + 1 */ + unsigned char uchHeight; +} AVLROIOPORTNODECORE, *PAVLROIOPORTNODECORE; + +/** A offset base tree with uint32_t keys. */ +typedef AVLROIOPORTPTR AVLROIOPORTTREE; +/** Pointer to an offset base tree with uint32_t keys. */ +typedef AVLROIOPORTTREE *PAVLROIOPORTTREE; + +/** Pointer to an internal tree pointer. + * In this case it's a pointer to a relative offset. */ +typedef AVLROIOPORTTREE *PPAVLROIOPORTNODECORE; + +/** Callback function for RTAvlroIOPortDoWithAll() and RTAvlroIOPortDestroy(). + * @returns IPRT status codes. */ +typedef DECLCALLBACK(int) AVLROIOPORTCALLBACK(PAVLROIOPORTNODECORE pNode, void *pvUser); +/** Pointer to callback function for RTAvlroIOPortDoWithAll() and RTAvlroIOPortDestroy(). */ +typedef AVLROIOPORTCALLBACK *PAVLROIOPORTCALLBACK; + +RTDECL(bool) RTAvlroIOPortInsert(PAVLROIOPORTTREE pTree, PAVLROIOPORTNODECORE pNode); +RTDECL(PAVLROIOPORTNODECORE) RTAvlroIOPortRemove(PAVLROIOPORTTREE pTree, RTIOPORT Key); +RTDECL(PAVLROIOPORTNODECORE) RTAvlroIOPortGet(PAVLROIOPORTTREE pTree, RTIOPORT Key); +RTDECL(PAVLROIOPORTNODECORE) RTAvlroIOPortRangeGet(PAVLROIOPORTTREE pTree, RTIOPORT Key); +RTDECL(PAVLROIOPORTNODECORE) RTAvlroIOPortRangeRemove(PAVLROIOPORTTREE pTree, RTIOPORT Key); +RTDECL(int) RTAvlroIOPortDoWithAll(PAVLROIOPORTTREE pTree, int fFromLeft, PAVLROIOPORTCALLBACK pfnCallBack, void *pvParam); +RTDECL(int) RTAvlroIOPortDestroy(PAVLROIOPORTTREE pTree, PAVLROIOPORTCALLBACK pfnCallBack, void *pvParam); + +/** @} */ + + +/** AVL tree of RTHCPHYSes. + * @{ + */ + +/** + * AVL 'pointer' type for the relative offset pointer scheme. + */ +typedef struct _AVLHCPhysNodeCore *AVLHCPHYSPTR; + +/** + * AVL Core node. + */ +typedef struct _AVLHCPhysNodeCore +{ + /** Offset to the left leaf node, relative to this field. */ + AVLHCPHYSPTR pLeft; + /** Offset to the right leaf node, relative to this field. */ + AVLHCPHYSPTR pRight; + /** Key value. */ + RTHCPHYS Key; + /** Height of this tree: max(height(left), height(right)) + 1 */ + unsigned char uchHeight; +} AVLHCPHYSNODECORE, *PAVLHCPHYSNODECORE; + +/** A offset base tree with RTHCPHYS keys. */ +typedef AVLHCPHYSPTR AVLHCPHYSTREE; +/** Pointer to an offset base tree with RTHCPHYS keys. */ +typedef AVLHCPHYSTREE *PAVLHCPHYSTREE; + +/** Pointer to an internal tree pointer. + * In this case it's a pointer to a relative offset. */ +typedef AVLHCPHYSTREE *PPAVLHCPHYSNODECORE; + +/** Callback function for RTAvlHCPhysDoWithAll() and RTAvlHCPhysDestroy(). + * @returns IPRT status codes. */ +typedef DECLCALLBACK(int) AVLHCPHYSCALLBACK(PAVLHCPHYSNODECORE pNode, void *pvUser); +/** Pointer to callback function for RTAvlHCPhysDoWithAll() and RTAvlHCPhysDestroy(). */ +typedef AVLHCPHYSCALLBACK *PAVLHCPHYSCALLBACK; + +RTDECL(bool) RTAvlHCPhysInsert(PAVLHCPHYSTREE pTree, PAVLHCPHYSNODECORE pNode); +RTDECL(PAVLHCPHYSNODECORE) RTAvlHCPhysRemove(PAVLHCPHYSTREE pTree, RTHCPHYS Key); +RTDECL(PAVLHCPHYSNODECORE) RTAvlHCPhysGet(PAVLHCPHYSTREE pTree, RTHCPHYS Key); +RTDECL(int) RTAvlHCPhysDoWithAll(PAVLHCPHYSTREE pTree, int fFromLeft, PAVLHCPHYSCALLBACK pfnCallBack, void *pvParam); +RTDECL(PAVLHCPHYSNODECORE) RTAvlHCPhysGetBestFit(PAVLHCPHYSTREE ppTree, RTHCPHYS Key, bool fAbove); +RTDECL(PAVLHCPHYSNODECORE) RTAvlHCPhysRemoveBestFit(PAVLHCPHYSTREE ppTree, RTHCPHYS Key, bool fAbove); +RTDECL(int) RTAvlHCPhysDestroy(PAVLHCPHYSTREE pTree, PAVLHCPHYSCALLBACK pfnCallBack, void *pvParam); + +/** @} */ + +/** AVL tree of RTGCPHYSes. + * @{ + */ + +/** + * AVL 'pointer' type for the relative offset pointer scheme. + */ +typedef struct _AVLGCPhysNodeCore *AVLGCPHYSPTR; + +/** + * AVL Core node. + */ +typedef struct _AVLGCPhysNodeCore +{ + /** Offset to the left leaf node, relative to this field. */ + AVLGCPHYSPTR pLeft; + /** Offset to the right leaf node, relative to this field. */ + AVLGCPHYSPTR pRight; + /** Key value. */ + RTGCPHYS Key; + /** Height of this tree: max(height(left), height(right)) + 1 */ + unsigned char uchHeight; +} AVLGCPHYSNODECORE, *PAVLGCPHYSNODECORE; + +/** A offset base tree with RTGCPHYS keys. */ +typedef AVLGCPHYSPTR AVLGCPHYSTREE; +/** Pointer to an offset base tree with RTGCPHYS keys. */ +typedef AVLGCPHYSTREE *PAVLGCPHYSTREE; + +/** Pointer to an internal tree pointer. + * In this case it's a pointer to a relative offset. */ +typedef AVLGCPHYSTREE *PPAVLGCPHYSNODECORE; + +/** Callback function for RTAvlGCPhysDoWithAll() and RTAvlGCPhysDestroy(). + * @returns IPRT status codes. */ +typedef DECLCALLBACK(int) AVLGCPHYSCALLBACK(PAVLGCPHYSNODECORE pNode, void *pvUser); +/** Pointer to callback function for RTAvlGCPhysDoWithAll() and RTAvlGCPhysDestroy(). */ +typedef AVLGCPHYSCALLBACK *PAVLGCPHYSCALLBACK; + +RTDECL(bool) RTAvlGCPhysInsert(PAVLGCPHYSTREE pTree, PAVLGCPHYSNODECORE pNode); +RTDECL(PAVLGCPHYSNODECORE) RTAvlGCPhysRemove(PAVLGCPHYSTREE pTree, RTGCPHYS Key); +RTDECL(PAVLGCPHYSNODECORE) RTAvlGCPhysGet(PAVLGCPHYSTREE pTree, RTGCPHYS Key); +RTDECL(int) RTAvlGCPhysDoWithAll(PAVLGCPHYSTREE pTree, int fFromLeft, PAVLGCPHYSCALLBACK pfnCallBack, void *pvParam); +RTDECL(PAVLGCPHYSNODECORE) RTAvlGCPhysGetBestFit(PAVLGCPHYSTREE ppTree, RTGCPHYS Key, bool fAbove); +RTDECL(PAVLGCPHYSNODECORE) RTAvlGCPhysRemoveBestFit(PAVLGCPHYSTREE ppTree, RTGCPHYS Key, bool fAbove); +RTDECL(int) RTAvlGCPhysDestroy(PAVLGCPHYSTREE pTree, PAVLGCPHYSCALLBACK pfnCallBack, void *pvParam); + +/** @} */ + + +/** AVL tree of RTFOFF ranges. + * @{ + */ + +/** + * AVL Core node. + */ +typedef struct _AVLRFOFFNodeCore +{ + /** First key value in the range (inclusive). */ + RTFOFF Key; + /** Last key value in the range (inclusive). */ + RTFOFF KeyLast; + /** Offset to the left leaf node, relative to this field. */ + struct _AVLRFOFFNodeCore *pLeft; + /** Offset to the right leaf node, relative to this field. */ + struct _AVLRFOFFNodeCore *pRight; + /** Height of this tree: max(height(left), height(right)) + 1 */ + unsigned char uchHeight; +} AVLRFOFFNODECORE, *PAVLRFOFFNODECORE; + +/** A pointer based tree with RTFOFF ranges. */ +typedef PAVLRFOFFNODECORE AVLRFOFFTREE; +/** Pointer to a pointer based tree with RTFOFF ranges. */ +typedef AVLRFOFFTREE *PAVLRFOFFTREE; + +/** Pointer to an internal tree pointer. + * In this case it's a pointer to a relative offset. */ +typedef AVLRFOFFTREE *PPAVLRFOFFNODECORE; + +/** Callback function for RTAvlrGCPtrDoWithAll() and RTAvlrGCPtrDestroy(). + * @returns IPRT status codes. */ +typedef DECLCALLBACK(int) AVLRFOFFCALLBACK(PAVLRFOFFNODECORE pNode, void *pvUser); +/** Pointer to callback function for RTAvlrGCPtrDoWithAll() and RTAvlrGCPtrDestroy(). */ +typedef AVLRFOFFCALLBACK *PAVLRFOFFCALLBACK; + +RTDECL(bool) RTAvlrFileOffsetInsert( PAVLRFOFFTREE pTree, PAVLRFOFFNODECORE pNode); +RTDECL(PAVLRFOFFNODECORE) RTAvlrFileOffsetRemove( PAVLRFOFFTREE pTree, RTFOFF Key); +RTDECL(PAVLRFOFFNODECORE) RTAvlrFileOffsetGet( PAVLRFOFFTREE pTree, RTFOFF Key); +RTDECL(PAVLRFOFFNODECORE) RTAvlrFileOffsetGetBestFit( PAVLRFOFFTREE pTree, RTFOFF Key, bool fAbove); +RTDECL(PAVLRFOFFNODECORE) RTAvlrFileOffsetRangeGet( PAVLRFOFFTREE pTree, RTFOFF Key); +RTDECL(PAVLRFOFFNODECORE) RTAvlrFileOffsetRangeRemove( PAVLRFOFFTREE pTree, RTFOFF Key); +RTDECL(int) RTAvlrFileOffsetDoWithAll( PAVLRFOFFTREE pTree, int fFromLeft, PAVLRFOFFCALLBACK pfnCallBack, void *pvParam); +RTDECL(int) RTAvlrFileOffsetDestroy( PAVLRFOFFTREE pTree, PAVLRFOFFCALLBACK pfnCallBack, void *pvParam); +RTDECL(PAVLRFOFFNODECORE) RTAvlrFileOffsetGetRoot( PAVLRFOFFTREE pTree); +RTDECL(PAVLRFOFFNODECORE) RTAvlrFileOffsetGetLeft( PAVLRFOFFNODECORE pNode); +RTDECL(PAVLRFOFFNODECORE) RTAvlrFileOffsetGetRight( PAVLRFOFFNODECORE pNode); + +/** @} */ + +/** @} */ + +RT_C_DECLS_END + +#endif + --- linux-raspi2-4.2.0.orig/ubuntu/vbox/include/iprt/cdefs.h +++ linux-raspi2-4.2.0/ubuntu/vbox/include/iprt/cdefs.h @@ -0,0 +1,2863 @@ +/** @file + * IPRT - Common C and C++ definitions. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + +#ifndef ___iprt_cdefs_h +#define ___iprt_cdefs_h + + +/** @defgroup grp_rt_cdefs IPRT Common Definitions and Macros + * @{ + */ + +/** @def RT_C_DECLS_BEGIN + * Used to start a block of function declarations which are shared + * between C and C++ program. + */ + +/** @def RT_C_DECLS_END + * Used to end a block of function declarations which are shared + * between C and C++ program. + */ + +#if defined(__cplusplus) +# define RT_C_DECLS_BEGIN extern "C" { +# define RT_C_DECLS_END } +#else +# define RT_C_DECLS_BEGIN +# define RT_C_DECLS_END +#endif + + +/* + * Shut up DOXYGEN warnings and guide it properly thru the code. + */ +#ifdef DOXYGEN_RUNNING +# define __AMD64__ +# define __X86__ +# define RT_ARCH_AMD64 +# define RT_ARCH_X86 +# define IN_RING0 +# define IN_RING3 +# define IN_RC +# define IN_RC +# define IN_RT_RC +# define IN_RT_R0 +# define IN_RT_R3 +# define IN_RT_STATIC +# define RT_STRICT +# define RT_NO_STRICT +# define RT_LOCK_STRICT +# define RT_LOCK_NO_STRICT +# define RT_LOCK_STRICT_ORDER +# define RT_LOCK_NO_STRICT_ORDER +# define Breakpoint +# define RT_NO_DEPRECATED_MACROS +# define RT_EXCEPTIONS_ENABLED +# define RT_BIG_ENDIAN +# define RT_LITTLE_ENDIAN +# define RT_COMPILER_GROKS_64BIT_BITFIELDS +# define RT_COMPILER_WITH_80BIT_LONG_DOUBLE +# define RT_NO_VISIBILITY_HIDDEN +#endif /* DOXYGEN_RUNNING */ + +/** @def RT_ARCH_X86 + * Indicates that we're compiling for the X86 architecture. + */ + +/** @def RT_ARCH_AMD64 + * Indicates that we're compiling for the AMD64 architecture. + */ + +/** @def RT_ARCH_SPARC + * Indicates that we're compiling for the SPARC V8 architecture (32-bit). + */ + +/** @def RT_ARCH_SPARC64 + * Indicates that we're compiling for the SPARC V9 architecture (64-bit). + */ +#if !defined(RT_ARCH_X86) \ + && !defined(RT_ARCH_AMD64) \ + && !defined(RT_ARCH_SPARC) \ + && !defined(RT_ARCH_SPARC64) \ + && !defined(RT_ARCH_ARM) +# if defined(__amd64__) || defined(__x86_64__) || defined(_M_X64) || defined(__AMD64__) +# define RT_ARCH_AMD64 +# elif defined(__i386__) || defined(_M_IX86) || defined(__X86__) +# define RT_ARCH_X86 +# elif defined(__sparcv9) +# define RT_ARCH_SPARC64 +# elif defined(__sparc__) +# define RT_ARCH_SPARC +# elif defined(__arm__) || defined(__arm32__) +# define RT_ARCH_ARM +# else /* PORTME: append test for new archs. */ +# error "Check what predefined macros your compiler uses to indicate architecture." +# endif +/* PORTME: append new archs checks. */ +#elif defined(RT_ARCH_X86) && defined(RT_ARCH_AMD64) +# error "Both RT_ARCH_X86 and RT_ARCH_AMD64 cannot be defined at the same time!" +#elif defined(RT_ARCH_X86) && defined(RT_ARCH_SPARC) +# error "Both RT_ARCH_X86 and RT_ARCH_SPARC cannot be defined at the same time!" +#elif defined(RT_ARCH_X86) && defined(RT_ARCH_SPARC64) +# error "Both RT_ARCH_X86 and RT_ARCH_SPARC64 cannot be defined at the same time!" +#elif defined(RT_ARCH_AMD64) && defined(RT_ARCH_SPARC) +# error "Both RT_ARCH_AMD64 and RT_ARCH_SPARC cannot be defined at the same time!" +#elif defined(RT_ARCH_AMD64) && defined(RT_ARCH_SPARC64) +# error "Both RT_ARCH_AMD64 and RT_ARCH_SPARC64 cannot be defined at the same time!" +#elif defined(RT_ARCH_SPARC) && defined(RT_ARCH_SPARC64) +# error "Both RT_ARCH_SPARC and RT_ARCH_SPARC64 cannot be defined at the same time!" +#elif defined(RT_ARCH_ARM) && defined(RT_ARCH_AMD64) +# error "Both RT_ARCH_ARM and RT_ARCH_AMD64 cannot be defined at the same time!" +#elif defined(RT_ARCH_ARM) && defined(RT_ARCH_X86) +# error "Both RT_ARCH_ARM and RT_ARCH_X86 cannot be defined at the same time!" +#elif defined(RT_ARCH_ARM) && defined(RT_ARCH_SPARC64) +# error "Both RT_ARCH_ARM and RT_ARCH_SPARC64 cannot be defined at the same time!" +#elif defined(RT_ARCH_ARM) && defined(RT_ARCH_SPARC) +# error "Both RT_ARCH_ARM and RT_ARCH_SPARC cannot be defined at the same time!" +#endif + + +/** @def __X86__ + * Indicates that we're compiling for the X86 architecture. + * @deprecated + */ + +/** @def __AMD64__ + * Indicates that we're compiling for the AMD64 architecture. + * @deprecated + */ +#if !defined(__X86__) && !defined(__AMD64__) && (defined(RT_ARCH_AMD64) || defined(RT_ARCH_X86)) +# if defined(RT_ARCH_AMD64) +# define __AMD64__ +# elif defined(RT_ARCH_X86) +# define __X86__ +# else +# error "Check what predefined macros your compiler uses to indicate architecture." +# endif +#elif defined(__X86__) && defined(__AMD64__) +# error "Both __X86__ and __AMD64__ cannot be defined at the same time!" +#elif defined(__X86__) && !defined(RT_ARCH_X86) +# error "__X86__ without RT_ARCH_X86!" +#elif defined(__AMD64__) && !defined(RT_ARCH_AMD64) +# error "__AMD64__ without RT_ARCH_AMD64!" +#endif + +/** @def RT_BIG_ENDIAN + * Defined if the architecture is big endian. */ +/** @def RT_LITTLE_ENDIAN + * Defined if the architecture is little endian. */ +#if defined(RT_ARCH_AMD64) || defined(RT_ARCH_X86) || defined(RT_ARCH_ARM) +# define RT_LITTLE_ENDIAN +#elif defined(RT_ARCH_SPARC) || defined(RT_ARCH_SPARC64) +# define RT_BIG_ENDIAN +#else +# error "PORTME: architecture endianess" +#endif +#if defined(RT_BIG_ENDIAN) && defined(RT_LITTLE_ENDIAN) +# error "Both RT_BIG_ENDIAN and RT_LITTLE_ENDIAN are defined" +#endif + + +/** @def IN_RING0 + * Used to indicate that we're compiling code which is running + * in Ring-0 Host Context. + */ + +/** @def IN_RING3 + * Used to indicate that we're compiling code which is running + * in Ring-3 Host Context. + */ + +/** @def IN_RC + * Used to indicate that we're compiling code which is running + * in the Raw-mode Context (implies R0). + */ +#if !defined(IN_RING3) && !defined(IN_RING0) && !defined(IN_RC) && !defined(IN_RC) +# error "You must define which context the compiled code should run in; IN_RING3, IN_RING0 or IN_RC" +#endif +#if (defined(IN_RING3) && (defined(IN_RING0) || defined(IN_RC)) ) \ + || (defined(IN_RING0) && (defined(IN_RING3) || defined(IN_RC)) ) \ + || (defined(IN_RC) && (defined(IN_RING3) || defined(IN_RING0)) ) +# error "Only one of the IN_RING3, IN_RING0, IN_RC defines should be defined." +#endif + + +/** @def ARCH_BITS + * Defines the bit count of the current context. + */ +#if !defined(ARCH_BITS) || defined(DOXYGEN_RUNNING) +# if defined(RT_ARCH_AMD64) || defined(RT_ARCH_SPARC64) +# define ARCH_BITS 64 +# else +# define ARCH_BITS 32 +# endif +#endif + +/** @def HC_ARCH_BITS + * Defines the host architecture bit count. + */ +#if !defined(HC_ARCH_BITS) || defined(DOXYGEN_RUNNING) +# ifndef IN_RC +# define HC_ARCH_BITS ARCH_BITS +# else +# define HC_ARCH_BITS 32 +# endif +#endif + +/** @def GC_ARCH_BITS + * Defines the guest architecture bit count. + */ +#if !defined(GC_ARCH_BITS) && !defined(DOXYGEN_RUNNING) +# ifdef VBOX_WITH_64_BITS_GUESTS +# define GC_ARCH_BITS 64 +# else +# define GC_ARCH_BITS 32 +# endif +#endif + +/** @def R3_ARCH_BITS + * Defines the host ring-3 architecture bit count. + */ +#if !defined(R3_ARCH_BITS) || defined(DOXYGEN_RUNNING) +# ifdef IN_RING3 +# define R3_ARCH_BITS ARCH_BITS +# else +# define R3_ARCH_BITS HC_ARCH_BITS +# endif +#endif + +/** @def R0_ARCH_BITS + * Defines the host ring-0 architecture bit count. + */ +#if !defined(R0_ARCH_BITS) || defined(DOXYGEN_RUNNING) +# ifdef IN_RING0 +# define R0_ARCH_BITS ARCH_BITS +# else +# define R0_ARCH_BITS HC_ARCH_BITS +# endif +#endif + +/** @def GC_ARCH_BITS + * Defines the guest architecture bit count. + */ +#if !defined(GC_ARCH_BITS) || defined(DOXYGEN_RUNNING) +# ifdef IN_RC +# define GC_ARCH_BITS ARCH_BITS +# else +# define GC_ARCH_BITS 32 +# endif +#endif + + + +/** @name RT_OPSYS_XXX - Operative System Identifiers. + * These are the value that the RT_OPSYS \#define can take. @{ + */ +/** Unknown OS. */ +#define RT_OPSYS_UNKNOWN 0 +/** OS Agnostic. */ +#define RT_OPSYS_AGNOSTIC 1 +/** Darwin - aka Mac OS X. */ +#define RT_OPSYS_DARWIN 2 +/** DragonFly BSD. */ +#define RT_OPSYS_DRAGONFLY 3 +/** DOS. */ +#define RT_OPSYS_DOS 4 +/** FreeBSD. */ +#define RT_OPSYS_FREEBSD 5 +/** Haiku. */ +#define RT_OPSYS_HAIKU 6 +/** Linux. */ +#define RT_OPSYS_LINUX 7 +/** L4. */ +#define RT_OPSYS_L4 8 +/** Minix. */ +#define RT_OPSYS_MINIX 9 +/** NetBSD. */ +#define RT_OPSYS_NETBSD 11 +/** Netware. */ +#define RT_OPSYS_NETWARE 12 +/** NT (native). */ +#define RT_OPSYS_NT 13 +/** OpenBSD. */ +#define RT_OPSYS_OPENBSD 14 +/** OS/2. */ +#define RT_OPSYS_OS2 15 +/** Plan 9. */ +#define RT_OPSYS_PLAN9 16 +/** QNX. */ +#define RT_OPSYS_QNX 17 +/** Solaris. */ +#define RT_OPSYS_SOLARIS 18 +/** UEFI. */ +#define RT_OPSYS_UEFI 19 +/** Windows. */ +#define RT_OPSYS_WINDOWS 20 +/** The max RT_OPSYS_XXX value (exclusive). */ +#define RT_OPSYS_MAX 21 +/** @} */ + +/** @def RT_OPSYS + * Indicates which OS we're targeting. It's a \#define with is + * assigned one of the RT_OPSYS_XXX defines above. + * + * So to test if we're on FreeBSD do the following: + * @code + * #if RT_OPSYS == RT_OPSYS_FREEBSD + * some_funky_freebsd_specific_stuff(); + * #endif + * @endcode + */ + +/* + * Set RT_OPSYS_XXX according to RT_OS_XXX. + * + * Search: #define RT_OPSYS_([A-Z0-9]+) .* + * Replace: # elif defined(RT_OS_\1)\n# define RT_OPSYS RT_OPSYS_\1 + */ +#ifndef RT_OPSYS +# if defined(RT_OS_UNKNOWN) +# define RT_OPSYS RT_OPSYS_UNKNOWN +# elif defined(RT_OS_AGNOSTIC) +# define RT_OPSYS RT_OPSYS_AGNOSTIC +# elif defined(RT_OS_DARWIN) +# define RT_OPSYS RT_OPSYS_DARWIN +# elif defined(RT_OS_DRAGONFLY) +# define RT_OPSYS RT_OPSYS_DRAGONFLY +# elif defined(RT_OS_DOS) +# define RT_OPSYS RT_OPSYS_DOS +# elif defined(RT_OS_FREEBSD) +# define RT_OPSYS RT_OPSYS_FREEBSD +# elif defined(RT_OS_HAIKU) +# define RT_OPSYS RT_OPSYS_HAIKU +# elif defined(RT_OS_LINUX) +# define RT_OPSYS RT_OPSYS_LINUX +# elif defined(RT_OS_L4) +# define RT_OPSYS RT_OPSYS_L4 +# elif defined(RT_OS_MINIX) +# define RT_OPSYS RT_OPSYS_MINIX +# elif defined(RT_OS_NETBSD) +# define RT_OPSYS RT_OPSYS_NETBSD +# elif defined(RT_OS_NETWARE) +# define RT_OPSYS RT_OPSYS_NETWARE +# elif defined(RT_OS_NT) +# define RT_OPSYS RT_OPSYS_NT +# elif defined(RT_OS_OPENBSD) +# define RT_OPSYS RT_OPSYS_OPENBSD +# elif defined(RT_OS_OS2) +# define RT_OPSYS RT_OPSYS_OS2 +# elif defined(RT_OS_PLAN9) +# define RT_OPSYS RT_OPSYS_PLAN9 +# elif defined(RT_OS_QNX) +# define RT_OPSYS RT_OPSYS_QNX +# elif defined(RT_OS_SOLARIS) +# define RT_OPSYS RT_OPSYS_SOLARIS +# elif defined(RT_OS_UEFI) +# define RT_OPSYS RT_OPSYS_UEFI +# elif defined(RT_OS_WINDOWS) +# define RT_OPSYS RT_OPSYS_WINDOWS +# endif +#endif + +/* + * Guess RT_OPSYS based on compiler predefined macros. + */ +#ifndef RT_OPSYS +# if defined(__APPLE__) +# define RT_OPSYS RT_OPSYS_DARWIN +# elif defined(__DragonFly__) +# define RT_OPSYS RT_OPSYS_DRAGONFLY +# elif defined(__FreeBSD__) /*??*/ +# define RT_OPSYS RT_OPSYS_FREEBSD +# elif defined(__gnu_linux__) +# define RT_OPSYS RT_OPSYS_LINUX +# elif defined(__NetBSD__) /*??*/ +# define RT_OPSYS RT_OPSYS_NETBSD +# elif defined(__OpenBSD__) /*??*/ +# define RT_OPSYS RT_OPSYS_OPENBSD +# elif defined(__OS2__) +# define RT_OPSYS RT_OPSYS_OS2 +# elif defined(__sun__) || defined(__SunOS__) || defined(__sun) || defined(__SunOS) +# define RT_OPSYS RT_OPSYS_SOLARIS +# elif defined(_WIN32) || defined(_WIN64) +# define RT_OPSYS RT_OPSYS_WINDOWS +# else +# error "Port Me" +# endif +#endif + +#if RT_OPSYS < RT_OPSYS_UNKNOWN || RT_OPSYS >= RT_OPSYS_MAX +# error "Invalid RT_OPSYS value." +#endif + +/* + * Do some consistency checks. + * + * Search: #define RT_OPSYS_([A-Z0-9]+) .* + * Replace: #if defined(RT_OS_\1) && RT_OPSYS != RT_OPSYS_\1\n# error RT_OPSYS vs RT_OS_\1\n#endif + */ +#if defined(RT_OS_UNKNOWN) && RT_OPSYS != RT_OPSYS_UNKNOWN +# error RT_OPSYS vs RT_OS_UNKNOWN +#endif +#if defined(RT_OS_AGNOSTIC) && RT_OPSYS != RT_OPSYS_AGNOSTIC +# error RT_OPSYS vs RT_OS_AGNOSTIC +#endif +#if defined(RT_OS_DARWIN) && RT_OPSYS != RT_OPSYS_DARWIN +# error RT_OPSYS vs RT_OS_DARWIN +#endif +#if defined(RT_OS_DRAGONFLY) && RT_OPSYS != RT_OPSYS_DRAGONFLY +# error RT_OPSYS vs RT_OS_DRAGONFLY +#endif +#if defined(RT_OS_DOS) && RT_OPSYS != RT_OPSYS_DOS +# error RT_OPSYS vs RT_OS_DOS +#endif +#if defined(RT_OS_FREEBSD) && RT_OPSYS != RT_OPSYS_FREEBSD +# error RT_OPSYS vs RT_OS_FREEBSD +#endif +#if defined(RT_OS_HAIKU) && RT_OPSYS != RT_OPSYS_HAIKU +# error RT_OPSYS vs RT_OS_HAIKU +#endif +#if defined(RT_OS_LINUX) && RT_OPSYS != RT_OPSYS_LINUX +# error RT_OPSYS vs RT_OS_LINUX +#endif +#if defined(RT_OS_L4) && RT_OPSYS != RT_OPSYS_L4 +# error RT_OPSYS vs RT_OS_L4 +#endif +#if defined(RT_OS_MINIX) && RT_OPSYS != RT_OPSYS_MINIX +# error RT_OPSYS vs RT_OS_MINIX +#endif +#if defined(RT_OS_NETBSD) && RT_OPSYS != RT_OPSYS_NETBSD +# error RT_OPSYS vs RT_OS_NETBSD +#endif +#if defined(RT_OS_NETWARE) && RT_OPSYS != RT_OPSYS_NETWARE +# error RT_OPSYS vs RT_OS_NETWARE +#endif +#if defined(RT_OS_NT) && RT_OPSYS != RT_OPSYS_NT +# error RT_OPSYS vs RT_OS_NT +#endif +#if defined(RT_OS_OPENBSD) && RT_OPSYS != RT_OPSYS_OPENBSD +# error RT_OPSYS vs RT_OS_OPENBSD +#endif +#if defined(RT_OS_OS2) && RT_OPSYS != RT_OPSYS_OS2 +# error RT_OPSYS vs RT_OS_OS2 +#endif +#if defined(RT_OS_PLAN9) && RT_OPSYS != RT_OPSYS_PLAN9 +# error RT_OPSYS vs RT_OS_PLAN9 +#endif +#if defined(RT_OS_QNX) && RT_OPSYS != RT_OPSYS_QNX +# error RT_OPSYS vs RT_OS_QNX +#endif +#if defined(RT_OS_SOLARIS) && RT_OPSYS != RT_OPSYS_SOLARIS +# error RT_OPSYS vs RT_OS_SOLARIS +#endif +#if defined(RT_OS_UEFI) && RT_OPSYS != RT_OPSYS_UEFI +# error RT_OPSYS vs RT_OS_UEFI +#endif +#if defined(RT_OS_WINDOWS) && RT_OPSYS != RT_OPSYS_WINDOWS +# error RT_OPSYS vs RT_OS_WINDOWS +#endif + +/* + * Make sure the RT_OS_XXX macro is defined. + * + * Search: #define RT_OPSYS_([A-Z0-9]+) .* + * Replace: #elif RT_OPSYS == RT_OPSYS_\1\n# ifndef RT_OS_\1\n# define RT_OS_\1\n# endif + */ +#if RT_OPSYS == RT_OPSYS_UNKNOWN +# ifndef RT_OS_UNKNOWN +# define RT_OS_UNKNOWN +# endif +#elif RT_OPSYS == RT_OPSYS_AGNOSTIC +# ifndef RT_OS_AGNOSTIC +# define RT_OS_AGNOSTIC +# endif +#elif RT_OPSYS == RT_OPSYS_DARWIN +# ifndef RT_OS_DARWIN +# define RT_OS_DARWIN +# endif +#elif RT_OPSYS == RT_OPSYS_DRAGONFLY +# ifndef RT_OS_DRAGONFLY +# define RT_OS_DRAGONFLY +# endif +#elif RT_OPSYS == RT_OPSYS_DOS +# ifndef RT_OS_DOS +# define RT_OS_DOS +# endif +#elif RT_OPSYS == RT_OPSYS_FREEBSD +# ifndef RT_OS_FREEBSD +# define RT_OS_FREEBSD +# endif +#elif RT_OPSYS == RT_OPSYS_HAIKU +# ifndef RT_OS_HAIKU +# define RT_OS_HAIKU +# endif +#elif RT_OPSYS == RT_OPSYS_LINUX +# ifndef RT_OS_LINUX +# define RT_OS_LINUX +# endif +#elif RT_OPSYS == RT_OPSYS_L4 +# ifndef RT_OS_L4 +# define RT_OS_L4 +# endif +#elif RT_OPSYS == RT_OPSYS_MINIX +# ifndef RT_OS_MINIX +# define RT_OS_MINIX +# endif +#elif RT_OPSYS == RT_OPSYS_NETBSD +# ifndef RT_OS_NETBSD +# define RT_OS_NETBSD +# endif +#elif RT_OPSYS == RT_OPSYS_NETWARE +# ifndef RT_OS_NETWARE +# define RT_OS_NETWARE +# endif +#elif RT_OPSYS == RT_OPSYS_NT +# ifndef RT_OS_NT +# define RT_OS_NT +# endif +#elif RT_OPSYS == RT_OPSYS_OPENBSD +# ifndef RT_OS_OPENBSD +# define RT_OS_OPENBSD +# endif +#elif RT_OPSYS == RT_OPSYS_OS2 +# ifndef RT_OS_OS2 +# define RT_OS_OS2 +# endif +#elif RT_OPSYS == RT_OPSYS_PLAN9 +# ifndef RT_OS_PLAN9 +# define RT_OS_PLAN9 +# endif +#elif RT_OPSYS == RT_OPSYS_QNX +# ifndef RT_OS_QNX +# define RT_OS_QNX +# endif +#elif RT_OPSYS == RT_OPSYS_SOLARIS +# ifndef RT_OS_SOLARIS +# define RT_OS_SOLARIS +# endif +#elif RT_OPSYS == RT_OPSYS_UEFI +# ifndef RT_OS_UEFI +# define RT_OS_UEFI +# endif +#elif RT_OPSYS == RT_OPSYS_WINDOWS +# ifndef RT_OS_WINDOWS +# define RT_OS_WINDOWS +# endif +#else +# error "Bad RT_OPSYS value." +#endif + + +/** + * Checks whether the given OpSys uses DOS-style paths or not. + * + * By DOS-style paths we include drive lettering and UNC paths. + * + * @returns true / false + * @param a_OpSys The RT_OPSYS_XXX value to check, will be reference + * multiple times. + */ +#define RT_OPSYS_USES_DOS_PATHS(a_OpSys) \ + ( (a_OpSys) == RT_OPSYS_WINDOWS \ + || (a_OpSys) == RT_OPSYS_OS2 \ + || (a_OpSys) == RT_OPSYS_DOS ) + + + +/** @def CTXTYPE + * Declare a type differently in GC, R3 and R0. + * + * @param GCType The GC type. + * @param R3Type The R3 type. + * @param R0Type The R0 type. + * @remark For pointers used only in one context use RCPTRTYPE(), R3R0PTRTYPE(), R3PTRTYPE() or R0PTRTYPE(). + */ +#ifdef IN_RC +# define CTXTYPE(GCType, R3Type, R0Type) GCType +#elif defined(IN_RING3) +# define CTXTYPE(GCType, R3Type, R0Type) R3Type +#else +# define CTXTYPE(GCType, R3Type, R0Type) R0Type +#endif + +/** @def RCPTRTYPE + * Declare a pointer which is used in the raw mode context but appears in structure(s) used by + * both HC and RC. The main purpose is to make sure structures have the same + * size when built for different architectures. + * + * @param RCType The RC type. + */ +#define RCPTRTYPE(RCType) CTXTYPE(RCType, RTRCPTR, RTRCPTR) + +/** @def R3R0PTRTYPE + * Declare a pointer which is used in HC, is explicitly valid in ring 3 and 0, + * but appears in structure(s) used by both HC and GC. The main purpose is to + * make sure structures have the same size when built for different architectures. + * + * @param R3R0Type The R3R0 type. + * @remarks This used to be called HCPTRTYPE. + */ +#define R3R0PTRTYPE(R3R0Type) CTXTYPE(RTHCPTR, R3R0Type, R3R0Type) + +/** @def R3PTRTYPE + * Declare a pointer which is used in R3 but appears in structure(s) used by + * both HC and GC. The main purpose is to make sure structures have the same + * size when built for different architectures. + * + * @param R3Type The R3 type. + */ +#define R3PTRTYPE(R3Type) CTXTYPE(RTHCUINTPTR, R3Type, RTHCUINTPTR) + +/** @def R0PTRTYPE + * Declare a pointer which is used in R0 but appears in structure(s) used by + * both HC and GC. The main purpose is to make sure structures have the same + * size when built for different architectures. + * + * @param R0Type The R0 type. + */ +#define R0PTRTYPE(R0Type) CTXTYPE(RTHCUINTPTR, RTHCUINTPTR, R0Type) + +/** @def CTXSUFF + * Adds the suffix of the current context to the passed in + * identifier name. The suffix is HC or GC. + * + * This is macro should only be used in shared code to avoid a forest of ifdefs. + * @param var Identifier name. + * @deprecated Use CTX_SUFF. Do NOT use this for new code. + */ +/** @def OTHERCTXSUFF + * Adds the suffix of the other context to the passed in + * identifier name. The suffix is HC or GC. + * + * This is macro should only be used in shared code to avoid a forest of ifdefs. + * @param var Identifier name. + * @deprecated Use CTX_SUFF. Do NOT use this for new code. + */ +#ifdef IN_RC +# define CTXSUFF(var) var##GC +# define OTHERCTXSUFF(var) var##HC +#else +# define CTXSUFF(var) var##HC +# define OTHERCTXSUFF(var) var##GC +#endif + +/** @def CTXALLSUFF + * Adds the suffix of the current context to the passed in + * identifier name. The suffix is R3, R0 or GC. + * + * This is macro should only be used in shared code to avoid a forest of ifdefs. + * @param var Identifier name. + * @deprecated Use CTX_SUFF. Do NOT use this for new code. + */ +#ifdef IN_RC +# define CTXALLSUFF(var) var##GC +#elif defined(IN_RING0) +# define CTXALLSUFF(var) var##R0 +#else +# define CTXALLSUFF(var) var##R3 +#endif + +/** @def CTX_SUFF + * Adds the suffix of the current context to the passed in + * identifier name. The suffix is R3, R0 or RC. + * + * This is macro should only be used in shared code to avoid a forest of ifdefs. + * @param var Identifier name. + * + * @remark This will replace CTXALLSUFF and CTXSUFF before long. + */ +#ifdef IN_RC +# define CTX_SUFF(var) var##RC +#elif defined(IN_RING0) +# define CTX_SUFF(var) var##R0 +#else +# define CTX_SUFF(var) var##R3 +#endif + +/** @def CTX_SUFF_Z + * Adds the suffix of the current context to the passed in + * identifier name, combining RC and R0 into RZ. + * The suffix thus is R3 or RZ. + * + * This is macro should only be used in shared code to avoid a forest of ifdefs. + * @param var Identifier name. + * + * @remark This will replace CTXALLSUFF and CTXSUFF before long. + */ +#ifdef IN_RING3 +# define CTX_SUFF_Z(var) var##R3 +#else +# define CTX_SUFF_Z(var) var##RZ +#endif + + +/** @def CTXMID + * Adds the current context as a middle name of an identifier name + * The middle name is HC or GC. + * + * This is macro should only be used in shared code to avoid a forest of ifdefs. + * @param first First name. + * @param last Surname. + */ +/** @def OTHERCTXMID + * Adds the other context as a middle name of an identifier name + * The middle name is HC or GC. + * + * This is macro should only be used in shared code to avoid a forest of ifdefs. + * @param first First name. + * @param last Surname. + * @deprecated use CTX_MID or CTX_MID_Z + */ +#ifdef IN_RC +# define CTXMID(first, last) first##GC##last +# define OTHERCTXMID(first, last) first##HC##last +#else +# define CTXMID(first, last) first##HC##last +# define OTHERCTXMID(first, last) first##GC##last +#endif + +/** @def CTXALLMID + * Adds the current context as a middle name of an identifier name. + * The middle name is R3, R0 or GC. + * + * This is macro should only be used in shared code to avoid a forest of ifdefs. + * @param first First name. + * @param last Surname. + * @deprecated use CTX_MID or CTX_MID_Z + */ +#ifdef IN_RC +# define CTXALLMID(first, last) first##GC##last +#elif defined(IN_RING0) +# define CTXALLMID(first, last) first##R0##last +#else +# define CTXALLMID(first, last) first##R3##last +#endif + +/** @def CTX_MID + * Adds the current context as a middle name of an identifier name. + * The middle name is R3, R0 or RC. + * + * This is macro should only be used in shared code to avoid a forest of ifdefs. + * @param first First name. + * @param last Surname. + */ +#ifdef IN_RC +# define CTX_MID(first, last) first##RC##last +#elif defined(IN_RING0) +# define CTX_MID(first, last) first##R0##last +#else +# define CTX_MID(first, last) first##R3##last +#endif + +/** @def CTX_MID_Z + * Adds the current context as a middle name of an identifier name, combining RC + * and R0 into RZ. + * The middle name thus is either R3 or RZ. + * + * This is macro should only be used in shared code to avoid a forest of ifdefs. + * @param first First name. + * @param last Surname. + */ +#ifdef IN_RING3 +# define CTX_MID_Z(first, last) first##R3##last +#else +# define CTX_MID_Z(first, last) first##RZ##last +#endif + + +/** @def R3STRING + * A macro which in GC and R0 will return a dummy string while in R3 it will return + * the parameter. + * + * This is typically used to wrap description strings in structures shared + * between R3, R0 and/or GC. The intention is to avoid the \#ifdef IN_RING3 mess. + * + * @param pR3String The R3 string. Only referenced in R3. + * @see R0STRING and GCSTRING + */ +#ifdef IN_RING3 +# define R3STRING(pR3String) (pR3String) +#else +# define R3STRING(pR3String) ("") +#endif + +/** @def R0STRING + * A macro which in GC and R3 will return a dummy string while in R0 it will return + * the parameter. + * + * This is typically used to wrap description strings in structures shared + * between R3, R0 and/or GC. The intention is to avoid the \#ifdef IN_RING0 mess. + * + * @param pR0String The R0 string. Only referenced in R0. + * @see R3STRING and GCSTRING + */ +#ifdef IN_RING0 +# define R0STRING(pR0String) (pR0String) +#else +# define R0STRING(pR0String) ("") +#endif + +/** @def RCSTRING + * A macro which in R3 and R0 will return a dummy string while in RC it will return + * the parameter. + * + * This is typically used to wrap description strings in structures shared + * between R3, R0 and/or RC. The intention is to avoid the \#ifdef IN_RC mess. + * + * @param pRCString The RC string. Only referenced in RC. + * @see R3STRING, R0STRING + */ +#ifdef IN_RC +# define RCSTRING(pRCString) (pRCString) +#else +# define RCSTRING(pRCString) ("") +#endif + + +/** @def RT_NOTHING + * A macro that expands to nothing. + * This is primarily intended as a dummy argument for macros to avoid the + * undefined behavior passing empty arguments to an macro (ISO C90 and C++98, + * gcc v4.4 warns about it). + */ +#define RT_NOTHING + +/** @def RT_GCC_EXTENSION + * Macro for shutting up GCC warnings about using language extensions. */ +#ifdef __GNUC__ +# define RT_GCC_EXTENSION __extension__ +#else +# define RT_GCC_EXTENSION +#endif + +/** @def RT_COMPILER_GROKS_64BIT_BITFIELDS + * Macro that is defined if the compiler understands 64-bit bitfields. */ +#if !defined(RT_OS_OS2) || (!defined(__IBMC__) && !defined(__IBMCPP__)) +# define RT_COMPILER_GROKS_64BIT_BITFIELDS +#endif + +/** @def RT_COMPILER_WITH_80BIT_LONG_DOUBLE + * Macro that is defined if the compiler implements long double as the + * IEEE extended precision floating. */ +#if (defined(RT_ARCH_AMD64) || defined(RT_ARCH_X86)) && !defined(RT_OS_WINDOWS) +# define RT_COMPILER_WITH_80BIT_LONG_DOUBLE +#endif + + +/** @def RT_EXCEPTIONS_ENABLED + * Defined when C++ exceptions are enabled. + */ +#if !defined(RT_EXCEPTIONS_ENABLED) \ + && defined(__cplusplus) \ + && ( (defined(_MSC_VER) && defined(_CPPUNWIND)) \ + || (defined(__GNUC__) && defined(__EXCEPTIONS))) +# define RT_EXCEPTIONS_ENABLED +#endif + +/** @def RT_NO_THROW + * How to express that a function doesn't throw C++ exceptions + * and the compiler can thus save itself the bother of trying + * to catch any of them. Put this between the closing parenthesis + * and the semicolon in function prototypes (and implementation if C++). + */ +#ifdef RT_EXCEPTIONS_ENABLED +# define RT_NO_THROW throw() +#else +# define RT_NO_THROW +#endif + +/** @def RT_THROW + * How to express that a method or function throws a type of exceptions. Some + * compilers does not want this kind of information and will warning about it. + * + * @param type The type exception. + * + * @remarks If the actual throwing is done from the header, enclose it by + * \#ifdef RT_EXCEPTIONS_ENABLED ... \#else ... \#endif so the header + * compiles cleanly without exceptions enabled. + * + * Do NOT use this for the actual throwing of exceptions! + */ +#ifdef RT_EXCEPTIONS_ENABLED +# ifdef _MSC_VER +# if _MSC_VER >= 1310 +# define RT_THROW(type) +# else +# define RT_THROW(type) throw(type) +# endif +# else +# define RT_THROW(type) throw(type) +# endif +#else +# define RT_THROW(type) +#endif + +/** @def RT_GCC_SUPPORTS_VISIBILITY_HIDDEN + * Indicates that the "hidden" visibility attribute can be used (GCC) */ +#if defined(__GNUC__) +# if __GNUC__ >= 4 && !defined(RT_OS_OS2) && !defined(RT_OS_WINDOWS) +# define RT_GCC_SUPPORTS_VISIBILITY_HIDDEN +# endif +#endif + +/** @def RTCALL + * The standard calling convention for the Runtime interfaces. + */ +#ifdef _MSC_VER +# define RTCALL __cdecl +#elif defined(RT_OS_OS2) +# define RTCALL __cdecl +#elif defined(__GNUC__) && defined(IN_RING0) && defined(RT_ARCH_X86) /** @todo consider dropping IN_RING0 here. */ +# define RTCALL __attribute__((cdecl,regparm(0))) /* regparm(0) deals with -mregparm=x use in the linux kernel. */ +#else +# define RTCALL +#endif + +/** @def DECLEXPORT + * How to declare an exported function. + * @param type The return type of the function declaration. + */ +#if defined(_MSC_VER) || defined(RT_OS_OS2) +# define DECLEXPORT(type) __declspec(dllexport) type +#elif defined(RT_USE_VISIBILITY_DEFAULT) +# define DECLEXPORT(type) __attribute__((visibility("default"))) type +#else +# define DECLEXPORT(type) type +#endif + +/** @def DECLIMPORT + * How to declare an imported function. + * @param type The return type of the function declaration. + */ +#if defined(_MSC_VER) || (defined(RT_OS_OS2) && !defined(__IBMC__) && !defined(__IBMCPP__)) +# define DECLIMPORT(type) __declspec(dllimport) type +#else +# define DECLIMPORT(type) type +#endif + +/** @def DECLHIDDEN + * How to declare a non-exported function or variable. + * @param type The return type of the function or the data type of the variable. + */ +#if !defined(RT_GCC_SUPPORTS_VISIBILITY_HIDDEN) || defined(RT_NO_VISIBILITY_HIDDEN) +# define DECLHIDDEN(type) type +#else +# define DECLHIDDEN(type) __attribute__((visibility("hidden"))) type +#endif + +/** @def DECL_HIDDEN_CONST + * Workaround for g++ warnings when applying the hidden attribute to a const + * definition. Use DECLHIDDEN for the declaration. + * @param a_Type The return type of the function or the data type of + * the variable. + */ +#if defined(__cplusplus) && defined(__GNUC__) +# define DECL_HIDDEN_CONST(a_Type) a_Type +#else +# define DECL_HIDDEN_CONST(a_Type) DECLHIDDEN(a_Type) +#endif + +/** @def DECL_INVALID + * How to declare a function not available for linking in the current context. + * The purpose is to create compile or like time errors when used. This isn't + * possible on all platforms. + * @param type The return type of the function. + */ +#if defined(_MSC_VER) +# define DECL_INVALID(type) __declspec(dllimport) type __stdcall +#elif defined(__GNUC__) && defined(__cplusplus) +# define DECL_INVALID(type) extern "C++" type +#else +# define DECL_INVALID(type) type +#endif + +/** @def DECLASM + * How to declare an internal assembly function. + * @param type The return type of the function declaration. + */ +#ifdef __cplusplus +# if defined(_MSC_VER) || defined(RT_OS_OS2) +# define DECLASM(type) extern "C" type __cdecl +# elif defined(__GNUC__) && defined(RT_ARCH_X86) +# define DECLASM(type) extern "C" type __attribute__((cdecl,regparm(0))) +# else +# define DECLASM(type) extern "C" type +# endif +#else +# if defined(_MSC_VER) || defined(RT_OS_OS2) +# define DECLASM(type) type __cdecl +# elif defined(__GNUC__) && defined(RT_ARCH_X86) +# define DECLASM(type) type __attribute__((cdecl,regparm(0))) +# else +# define DECLASM(type) type +# endif +#endif + +/** @def DECLASMTYPE + * How to declare an internal assembly function type. + * @param type The return type of the function. + */ +# if defined(_MSC_VER) || defined(RT_OS_OS2) +# define DECLASMTYPE(type) type __cdecl +#else +# define DECLASMTYPE(type) type +#endif + +/** @def DECLNORETURN + * How to declare a function which does not return. + * @note: This macro can be combined with other macros, for example + * @code + * EMR3DECL(DECLNORETURN(void)) foo(void); + * @endcode + */ +#ifdef _MSC_VER +# define DECLNORETURN(type) __declspec(noreturn) type +#elif defined(__GNUC__) +# define DECLNORETURN(type) __attribute__((noreturn)) type +#else +# define DECLNORETURN(type) type +#endif + +/** @def DECLWEAK + * How to declare a variable which is not necessarily resolved at + * runtime. + * @note: This macro can be combined with other macros, for example + * @code + * EMR3DECL(DECLWEAK(int)) foo; + * @endcode + */ +#if defined(__GNUC__) +# define DECLWEAK(type) type __attribute__((weak)) +#else +# define DECLWEAK(type) type +#endif + +/** @def DECLCALLBACK + * How to declare an call back function type. + * @param type The return type of the function declaration. + */ +#define DECLCALLBACK(type) type RTCALL + +/** @def DECLCALLBACKPTR + * How to declare an call back function pointer. + * @param type The return type of the function declaration. + * @param name The name of the variable member. + */ +#if defined(__IBMC__) || defined(__IBMCPP__) +# define DECLCALLBACKPTR(type, name) type (* RTCALL name) +#else +# define DECLCALLBACKPTR(type, name) type (RTCALL * name) +#endif + +/** @def DECLCALLBACKMEMBER + * How to declare an call back function pointer member. + * @param type The return type of the function declaration. + * @param name The name of the struct/union/class member. + */ +#if defined(__IBMC__) || defined(__IBMCPP__) +# define DECLCALLBACKMEMBER(type, name) type (* RTCALL name) +#else +# define DECLCALLBACKMEMBER(type, name) type (RTCALL * name) +#endif + +/** @def DECLR3CALLBACKMEMBER + * How to declare an call back function pointer member - R3 Ptr. + * @param type The return type of the function declaration. + * @param name The name of the struct/union/class member. + * @param args The argument list enclosed in parentheses. + */ +#ifdef IN_RING3 +# define DECLR3CALLBACKMEMBER(type, name, args) DECLCALLBACKMEMBER(type, name) args +#else +# define DECLR3CALLBACKMEMBER(type, name, args) RTR3PTR name +#endif + +/** @def DECLRCCALLBACKMEMBER + * How to declare an call back function pointer member - RC Ptr. + * @param type The return type of the function declaration. + * @param name The name of the struct/union/class member. + * @param args The argument list enclosed in parentheses. + */ +#ifdef IN_RC +# define DECLRCCALLBACKMEMBER(type, name, args) DECLCALLBACKMEMBER(type, name) args +#else +# define DECLRCCALLBACKMEMBER(type, name, args) RTRCPTR name +#endif + +/** @def DECLR0CALLBACKMEMBER + * How to declare an call back function pointer member - R0 Ptr. + * @param type The return type of the function declaration. + * @param name The name of the struct/union/class member. + * @param args The argument list enclosed in parentheses. + */ +#ifdef IN_RING0 +# define DECLR0CALLBACKMEMBER(type, name, args) DECLCALLBACKMEMBER(type, name) args +#else +# define DECLR0CALLBACKMEMBER(type, name, args) RTR0PTR name +#endif + +/** @def DECLINLINE + * How to declare a function as inline. + * @param type The return type of the function declaration. + * @remarks Don't use this macro on C++ methods. + */ +#ifdef __GNUC__ +# define DECLINLINE(type) static __inline__ type +#elif defined(__cplusplus) +# define DECLINLINE(type) inline type +#elif defined(_MSC_VER) +# define DECLINLINE(type) _inline type +#elif defined(__IBMC__) +# define DECLINLINE(type) _Inline type +#else +# define DECLINLINE(type) inline type +#endif + + +/** @def DECL_FORCE_INLINE + * How to declare a function as inline and try convince the compiler to always + * inline it regardless of optimization switches. + * @param type The return type of the function declaration. + * @remarks Use sparsely and with care. Don't use this macro on C++ methods. + */ +#ifdef __GNUC__ +# define DECL_FORCE_INLINE(type) __attribute__((__always_inline__)) DECLINLINE(type) +#elif defined(_MSC_VER) +# define DECL_FORCE_INLINE(type) __forceinline type +#else +# define DECL_FORCE_INLINE(type) DECLINLINE(type) +#endif + + +/** @def DECL_NO_INLINE + * How to declare a function telling the compiler not to inline it. + * @param scope The function scope, static or RT_NOTHING. + * @param type The return type of the function declaration. + * @remarks Don't use this macro on C++ methods. + */ +#ifdef __GNUC__ +# define DECL_NO_INLINE(scope,type) __attribute__((__noinline__)) scope type +#elif defined(_MSC_VER) +# define DECL_NO_INLINE(scope,type) __declspec(noinline) scope type +#else +# define DECL_NO_INLINE(scope,type) scope type +#endif + + +/** @def IN_RT_STATIC + * Used to indicate whether we're linking against a static IPRT + * or not. The IPRT symbols will be declared as hidden (if + * supported). Note that this define has no effect without setting + * IN_RT_R0, IN_RT_R3 or IN_RT_RC indicators are set first. + */ + +/** @def IN_RT_R0 + * Used to indicate whether we're inside the same link module as + * the HC Ring-0 Runtime Library. + */ +/** @def RTR0DECL(type) + * Runtime Library HC Ring-0 export or import declaration. + * @param type The return type of the function declaration. + */ +#ifdef IN_RT_R0 +# ifdef IN_RT_STATIC +# define RTR0DECL(type) DECLHIDDEN(type) RTCALL +# else +# define RTR0DECL(type) DECLEXPORT(type) RTCALL +# endif +#else +# define RTR0DECL(type) DECLIMPORT(type) RTCALL +#endif + +/** @def IN_RT_R3 + * Used to indicate whether we're inside the same link module as + * the HC Ring-3 Runtime Library. + */ +/** @def RTR3DECL(type) + * Runtime Library HC Ring-3 export or import declaration. + * @param type The return type of the function declaration. + */ +#ifdef IN_RT_R3 +# ifdef IN_RT_STATIC +# define RTR3DECL(type) DECLHIDDEN(type) RTCALL +# else +# define RTR3DECL(type) DECLEXPORT(type) RTCALL +# endif +#else +# define RTR3DECL(type) DECLIMPORT(type) RTCALL +#endif + +/** @def IN_RT_RC + * Used to indicate whether we're inside the same link module as the raw-mode + * context (RC) runtime library. + */ +/** @def RTRCDECL(type) + * Runtime Library raw-mode context export or import declaration. + * @param type The return type of the function declaration. + */ +#ifdef IN_RT_RC +# ifdef IN_RT_STATIC +# define RTRCDECL(type) DECLHIDDEN(type) RTCALL +# else +# define RTRCDECL(type) DECLEXPORT(type) RTCALL +# endif +#else +# define RTRCDECL(type) DECLIMPORT(type) RTCALL +#endif + +/** @def RTDECL(type) + * Runtime Library export or import declaration. + * Functions declared using this macro exists in all contexts. + * @param type The return type of the function declaration. + */ +#if defined(IN_RT_R3) || defined(IN_RT_RC) || defined(IN_RT_R0) +# ifdef IN_RT_STATIC +# define RTDECL(type) DECLHIDDEN(type) RTCALL +# else +# define RTDECL(type) DECLEXPORT(type) RTCALL +# endif +#else +# define RTDECL(type) DECLIMPORT(type) RTCALL +#endif + +/** @def RTDATADECL(type) + * Runtime Library export or import declaration. + * Data declared using this macro exists in all contexts. + * @param type The data type. + */ +/** @def RT_DECL_DATA_CONST(type) + * Definition of a const variable. See DECL_HIDDEN_CONST. + * @param type The const data type. + */ +#if defined(IN_RT_R3) || defined(IN_RT_RC) || defined(IN_RT_R0) +# ifdef IN_RT_STATIC +# define RTDATADECL(type) DECLHIDDEN(type) +# define RT_DECL_DATA_CONST(type) DECL_HIDDEN_CONST(type) +# else +# define RTDATADECL(type) DECLEXPORT(type) +# if defined(__cplusplus) && defined(__GNUC__) +# define RT_DECL_DATA_CONST(type) type +# else +# define RT_DECL_DATA_CONST(type) DECLEXPORT(type) +# endif +# endif +#else +# define RTDATADECL(type) DECLIMPORT(type) +# define RT_DECL_DATA_CONST(type) DECLIMPORT(type) +#endif + +/** @def RT_DECL_CLASS + * Declares an class living in the runtime. + */ +#if defined(IN_RT_R3) || defined(IN_RT_RC) || defined(IN_RT_R0) +# ifdef IN_RT_STATIC +# define RT_DECL_CLASS +# else +# define RT_DECL_CLASS DECLEXPORT_CLASS +# endif +#else +# define RT_DECL_CLASS DECLIMPORT_CLASS +#endif + + +/** @def RT_NOCRT + * Symbol name wrapper for the No-CRT bits. + * + * In order to coexist in the same process as other CRTs, we need to + * decorate the symbols such that they don't conflict the ones in the + * other CRTs. The result of such conflicts / duplicate symbols can + * confuse the dynamic loader on Unix like systems. + * + * Define RT_WITHOUT_NOCRT_WRAPPERS to drop the wrapping. + * Define RT_WITHOUT_NOCRT_WRAPPER_ALIASES to drop the aliases to the + * wrapped names. + */ +/** @def RT_NOCRT_STR + * Same as RT_NOCRT only it'll return a double quoted string of the result. + */ +#ifndef RT_WITHOUT_NOCRT_WRAPPERS +# define RT_NOCRT(name) nocrt_ ## name +# define RT_NOCRT_STR(name) "nocrt_" # name +#else +# define RT_NOCRT(name) name +# define RT_NOCRT_STR(name) #name +#endif + + + +/** @def RT_LIKELY + * Give the compiler a hint that an expression is very likely to hold true. + * + * Some compilers support explicit branch prediction so that the CPU backend + * can hint the processor and also so that code blocks can be reordered such + * that the predicted path sees a more linear flow, thus improving cache + * behaviour, etc. + * + * IPRT provides the macros RT_LIKELY() and RT_UNLIKELY() as a way to utilize + * this compiler feature when present. + * + * A few notes about the usage: + * + * - Generally, order your code use RT_LIKELY() instead of RT_UNLIKELY(). + * + * - Generally, use RT_UNLIKELY() with error condition checks (unless you + * have some _strong_ reason to do otherwise, in which case document it), + * and/or RT_LIKELY() with success condition checks, assuming you want + * to optimize for the success path. + * + * - Other than that, if you don't know the likelihood of a test succeeding + * from empirical or other 'hard' evidence, don't make predictions unless + * you happen to be a Dirk Gently character. + * + * - These macros are meant to be used in places that get executed a lot. It + * is wasteful to make predictions in code that is executed rarely (e.g. + * at subsystem initialization time) as the basic block reordering that this + * affects can often generate larger code. + * + * - Note that RT_SUCCESS() and RT_FAILURE() already makes use of RT_LIKELY() + * and RT_UNLIKELY(). Should you wish for prediction free status checks, + * use the RT_SUCCESS_NP() and RT_FAILURE_NP() macros instead. + * + * + * @returns the boolean result of the expression. + * @param expr The expression that's very likely to be true. + * @see RT_UNLIKELY + */ +/** @def RT_UNLIKELY + * Give the compiler a hint that an expression is highly unlikely to hold true. + * + * See the usage instructions give in the RT_LIKELY() docs. + * + * @returns the boolean result of the expression. + * @param expr The expression that's very unlikely to be true. + * @see RT_LIKELY + * + * @deprecated Please use RT_LIKELY() instead wherever possible! That gives us + * a better chance of the windows compilers to generate favorable code + * too. The belief is that the compiler will by default assume the + * if-case is more likely than the else-case. + */ +#if defined(__GNUC__) +# if __GNUC__ >= 3 && !defined(FORTIFY_RUNNING) +# define RT_LIKELY(expr) __builtin_expect(!!(expr), 1) +# define RT_UNLIKELY(expr) __builtin_expect(!!(expr), 0) +# else +# define RT_LIKELY(expr) (expr) +# define RT_UNLIKELY(expr) (expr) +# endif +#else +# define RT_LIKELY(expr) (expr) +# define RT_UNLIKELY(expr) (expr) +#endif + + +/** @def RT_STR + * Returns the argument as a string constant. + * @param str Argument to stringify. */ +#define RT_STR(str) #str +/** @def RT_XSTR + * Returns the expanded argument as a string. + * @param str Argument to expand and stringy. */ +#define RT_XSTR(str) RT_STR(str) + +/** @def RT_CONCAT + * Concatenate the expanded arguments without any extra spaces in between. + * + * @param a The first part. + * @param b The second part. + */ +#define RT_CONCAT(a,b) RT_CONCAT_HLP(a,b) +/** RT_CONCAT helper, don't use. */ +#define RT_CONCAT_HLP(a,b) a##b + +/** @def RT_CONCAT + * Concatenate the expanded arguments without any extra spaces in between. + * + * @param a The 1st part. + * @param b The 2nd part. + * @param c The 3rd part. + */ +#define RT_CONCAT3(a,b,c) RT_CONCAT3_HLP(a,b,c) +/** RT_CONCAT3 helper, don't use. */ +#define RT_CONCAT3_HLP(a,b,c) a##b##c + +/** @def RT_CONCAT + * Concatenate the expanded arguments without any extra spaces in between. + * + * @param a The 1st part. + * @param b The 2nd part. + * @param c The 3rd part. + */ +#define RT_CONCAT4(a,b,c,d) RT_CONCAT4_HLP(a,b,c,d) +/** RT_CONCAT4 helper, don't use. */ +#define RT_CONCAT4_HLP(a,b,c,d) a##b##c##d + +/** + * String constant tuple - string constant, strlen(string constant). + * + * @param a_szConst String constant. + */ +#define RT_STR_TUPLE(a_szConst) a_szConst, (sizeof(a_szConst) - 1) + + +/** + * Macro for using in switch statements that turns constants into strings. + * + * @param a_Const The constant (not string). + */ +#define RT_CASE_RET_STR(a_Const) case a_Const: return #a_Const + + +/** @def RT_BIT + * Convert a bit number into an integer bitmask (unsigned). + * @param bit The bit number. + */ +#define RT_BIT(bit) ( 1U << (bit) ) + +/** @def RT_BIT_32 + * Convert a bit number into a 32-bit bitmask (unsigned). + * @param bit The bit number. + */ +#define RT_BIT_32(bit) ( UINT32_C(1) << (bit) ) + +/** @def RT_BIT_64 + * Convert a bit number into a 64-bit bitmask (unsigned). + * @param bit The bit number. + */ +#define RT_BIT_64(bit) ( UINT64_C(1) << (bit) ) + +/** @def RT_ALIGN + * Align macro. + * @param u Value to align. + * @param uAlignment The alignment. Power of two! + * + * @remark Be extremely careful when using this macro with type which sizeof != sizeof int. + * When possible use any of the other RT_ALIGN_* macros. And when that's not + * possible, make 101% sure that uAlignment is specified with a right sized type. + * + * Specifying an unsigned 32-bit alignment constant with a 64-bit value will give + * you a 32-bit return value! + * + * In short: Don't use this macro. Use RT_ALIGN_T() instead. + */ +#define RT_ALIGN(u, uAlignment) ( ((u) + ((uAlignment) - 1)) & ~((uAlignment) - 1) ) + +/** @def RT_ALIGN_T + * Align macro. + * @param u Value to align. + * @param uAlignment The alignment. Power of two! + * @param type Integer type to use while aligning. + * @remark This macro is the preferred alignment macro, it doesn't have any of the pitfalls RT_ALIGN has. + */ +#define RT_ALIGN_T(u, uAlignment, type) ( ((type)(u) + ((uAlignment) - 1)) & ~(type)((uAlignment) - 1) ) + +/** @def RT_ALIGN_32 + * Align macro for a 32-bit value. + * @param u32 Value to align. + * @param uAlignment The alignment. Power of two! + */ +#define RT_ALIGN_32(u32, uAlignment) RT_ALIGN_T(u32, uAlignment, uint32_t) + +/** @def RT_ALIGN_64 + * Align macro for a 64-bit value. + * @param u64 Value to align. + * @param uAlignment The alignment. Power of two! + */ +#define RT_ALIGN_64(u64, uAlignment) RT_ALIGN_T(u64, uAlignment, uint64_t) + +/** @def RT_ALIGN_Z + * Align macro for size_t. + * @param cb Value to align. + * @param uAlignment The alignment. Power of two! + */ +#define RT_ALIGN_Z(cb, uAlignment) RT_ALIGN_T(cb, uAlignment, size_t) + +/** @def RT_ALIGN_P + * Align macro for pointers. + * @param pv Value to align. + * @param uAlignment The alignment. Power of two! + */ +#define RT_ALIGN_P(pv, uAlignment) RT_ALIGN_PT(pv, uAlignment, void *) + +/** @def RT_ALIGN_PT + * Align macro for pointers with type cast. + * @param u Value to align. + * @param uAlignment The alignment. Power of two! + * @param CastType The type to cast the result to. + */ +#define RT_ALIGN_PT(u, uAlignment, CastType) ( (CastType)RT_ALIGN_T(u, uAlignment, uintptr_t) ) + +/** @def RT_ALIGN_R3PT + * Align macro for ring-3 pointers with type cast. + * @param u Value to align. + * @param uAlignment The alignment. Power of two! + * @param CastType The type to cast the result to. + */ +#define RT_ALIGN_R3PT(u, uAlignment, CastType) ( (CastType)RT_ALIGN_T(u, uAlignment, RTR3UINTPTR) ) + +/** @def RT_ALIGN_R0PT + * Align macro for ring-0 pointers with type cast. + * @param u Value to align. + * @param uAlignment The alignment. Power of two! + * @param CastType The type to cast the result to. + */ +#define RT_ALIGN_R0PT(u, uAlignment, CastType) ( (CastType)RT_ALIGN_T(u, uAlignment, RTR0UINTPTR) ) + +/** @def RT_ALIGN_GCPT + * Align macro for GC pointers with type cast. + * @param u Value to align. + * @param uAlignment The alignment. Power of two! + * @param CastType The type to cast the result to. + */ +#define RT_ALIGN_GCPT(u, uAlignment, CastType) ( (CastType)RT_ALIGN_T(u, uAlignment, RTGCUINTPTR) ) + + +/** @def RT_OFFSETOF + * Our own special offsetof() variant, returns a signed result. + * + * This differs from the usual offsetof() in that it's not relying on builtin + * compiler stuff and thus can use variables in arrays the structure may + * contain. This is useful to determine the sizes of structures ending + * with a variable length field. For gcc >= 4.4 see @bugref{7775}. + * + * @returns offset into the structure of the specified member. signed. + * @param type Structure type. + * @param member Member. + */ +#if defined(__GNUC__) && defined(__cplusplus) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4)) +# define RT_OFFSETOF(type, member) ( (int)(uintptr_t)&( ((type *)(void *)0x1000)->member) - 0x1000 ) +#else +# define RT_OFFSETOF(type, member) ( (int)(uintptr_t)&( ((type *)(void *)0)->member) ) +#endif + +/** @def RT_UOFFSETOF + * Our own special offsetof() variant, returns an unsigned result. + * + * This differs from the usual offsetof() in that it's not relying on builtin + * compiler stuff and thus can use variables in arrays the structure may + * contain. This is useful to determine the sizes of structures ending + * with a variable length field. For gcc >= 4.4 see @bugref{7775}. + * + * @returns offset into the structure of the specified member. unsigned. + * @param type Structure type. + * @param member Member. + */ +#if defined(__GNUC__) && defined(__cplusplus) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4)) +# define RT_UOFFSETOF(type, member) ( (uintptr_t)&( ((type *)(void *)0x1000)->member) - 0x1000 ) +#else +# define RT_UOFFSETOF(type, member) ( (uintptr_t)&( ((type *)(void *)0)->member) ) +#endif + +/** @def RT_OFFSETOF_ADD + * RT_OFFSETOF with an addend. + * + * @returns offset into the structure of the specified member. signed. + * @param type Structure type. + * @param member Member. + * @param addend The addend to add to the offset. + */ +#define RT_OFFSETOF_ADD(type, member, addend) ( (int)RT_UOFFSETOF_ADD(type, member, addend) ) + +/** @def RT_UOFFSETOF_ADD + * RT_UOFFSETOF with an addend. + * + * @returns offset into the structure of the specified member. signed. + * @param type Structure type. + * @param member Member. + * @param addend The addend to add to the offset. + */ +#define RT_UOFFSETOF_ADD(type, member, addend) ( (uintptr_t)&( ((type *)(void *)(uintptr_t)(addend))->member) ) + +/** @def RT_SIZEOFMEMB + * Get the size of a structure member. + * + * @returns size of the structure member. + * @param type Structure type. + * @param member Member. + */ +#define RT_SIZEOFMEMB(type, member) ( sizeof(((type *)(void *)0)->member) ) + +/** @def RT_FROM_MEMBER + * Convert a pointer to a structure member into a pointer to the structure. + * + * @returns pointer to the structure. + * @param pMem Pointer to the member. + * @param Type Structure type. + * @param Member Member name. + */ +#define RT_FROM_MEMBER(pMem, Type, Member) ( (Type *) ((uint8_t *)(void *)(pMem) - RT_UOFFSETOF(Type, Member)) ) + +/** @def RT_FROM_CPP_MEMBER + * Same as RT_FROM_MEMBER except it avoids the annoying g++ warnings about + * invalid access to non-static data member of NULL object. + * + * @returns pointer to the structure. + * @param pMem Pointer to the member. + * @param Type Structure type. + * @param Member Member name. + * + * @remarks Using the __builtin_offsetof does not shut up the compiler. + */ +#if defined(__GNUC__) && defined(__cplusplus) +# define RT_FROM_CPP_MEMBER(pMem, Type, Member) \ + ( (Type *) ((uintptr_t)(pMem) - (uintptr_t)&((Type *)0x1000)->Member + 0x1000U) ) +#else +# define RT_FROM_CPP_MEMBER(pMem, Type, Member) RT_FROM_MEMBER(pMem, Type, Member) +#endif + +/** @def RT_ELEMENTS + * Calculates the number of elements in a statically sized array. + * @returns Element count. + * @param aArray Array in question. + */ +#define RT_ELEMENTS(aArray) ( sizeof(aArray) / sizeof((aArray)[0]) ) + +/** + * Checks if the value is a power of two. + * + * @returns true if power of two, false if not. + * @param uVal The value to test. + * @remarks 0 is a power of two. + * @see VERR_NOT_POWER_OF_TWO + */ +#define RT_IS_POWER_OF_TWO(uVal) ( ((uVal) & ((uVal) - 1)) == 0) + +#ifdef RT_OS_OS2 +/* Undefine RT_MAX since there is an unfortunate clash with the max + resource type define in os2.h. */ +# undef RT_MAX +#endif + +/** @def RT_MAX + * Finds the maximum value. + * @returns The higher of the two. + * @param Value1 Value 1 + * @param Value2 Value 2 + */ +#define RT_MAX(Value1, Value2) ( (Value1) >= (Value2) ? (Value1) : (Value2) ) + +/** @def RT_MIN + * Finds the minimum value. + * @returns The lower of the two. + * @param Value1 Value 1 + * @param Value2 Value 2 + */ +#define RT_MIN(Value1, Value2) ( (Value1) <= (Value2) ? (Value1) : (Value2) ) + +/** @def RT_CLAMP + * Clamps the value to minimum and maximum values. + * @returns The clamped value. + * @param Value The value to check. + * @param Min Minimum value. + * @param Max Maximum value. + */ +#define RT_CLAMP(Value, Min, Max) ( (Value) > (Max) ? (Max) : (Value) < (Min) ? (Min) : (Value) ) + +/** @def RT_ABS + * Get the absolute (non-negative) value. + * @returns The absolute value of Value. + * @param Value The value. + */ +#define RT_ABS(Value) ( (Value) >= 0 ? (Value) : -(Value) ) + +/** @def RT_BOOL + * Turn non-zero/zero into true/false + * @returns The resulting boolean value. + * @param Value The value. + */ +#define RT_BOOL(Value) ( !!(Value) ) + +/** @def RT_LO_U8 + * Gets the low uint8_t of a uint16_t or something equivalent. */ +#ifdef __GNUC__ +# define RT_LO_U8(a) __extension__ ({ AssertCompile(sizeof((a)) == sizeof(uint16_t)); (uint8_t)(a); }) +#else +# define RT_LO_U8(a) ( (uint8_t)(a) ) +#endif +/** @def RT_HI_U8 + * Gets the high uint8_t of a uint16_t or something equivalent. */ +#ifdef __GNUC__ +# define RT_HI_U8(a) __extension__ ({ AssertCompile(sizeof((a)) == sizeof(uint16_t)); (uint8_t)((a) >> 8); }) +#else +# define RT_HI_U8(a) ( (uint8_t)((a) >> 8) ) +#endif + +/** @def RT_LO_U16 + * Gets the low uint16_t of a uint32_t or something equivalent. */ +#ifdef __GNUC__ +# define RT_LO_U16(a) __extension__ ({ AssertCompile(sizeof((a)) == sizeof(uint32_t)); (uint16_t)(a); }) +#else +# define RT_LO_U16(a) ( (uint16_t)(a) ) +#endif +/** @def RT_HI_U16 + * Gets the high uint16_t of a uint32_t or something equivalent. */ +#ifdef __GNUC__ +# define RT_HI_U16(a) __extension__ ({ AssertCompile(sizeof((a)) == sizeof(uint32_t)); (uint16_t)((a) >> 16); }) +#else +# define RT_HI_U16(a) ( (uint16_t)((a) >> 16) ) +#endif + +/** @def RT_LO_U32 + * Gets the low uint32_t of a uint64_t or something equivalent. */ +#ifdef __GNUC__ +# define RT_LO_U32(a) __extension__ ({ AssertCompile(sizeof((a)) == sizeof(uint64_t)); (uint32_t)(a); }) +#else +# define RT_LO_U32(a) ( (uint32_t)(a) ) +#endif +/** @def RT_HI_U32 + * Gets the high uint32_t of a uint64_t or something equivalent. */ +#ifdef __GNUC__ +# define RT_HI_U32(a) __extension__ ({ AssertCompile(sizeof((a)) == sizeof(uint64_t)); (uint32_t)((a) >> 32); }) +#else +# define RT_HI_U32(a) ( (uint32_t)((a) >> 32) ) +#endif + +/** @def RT_BYTE1 + * Gets the first byte of something. */ +#define RT_BYTE1(a) ( (a) & 0xff ) +/** @def RT_BYTE2 + * Gets the second byte of something. */ +#define RT_BYTE2(a) ( ((a) >> 8) & 0xff ) +/** @def RT_BYTE3 + * Gets the second byte of something. */ +#define RT_BYTE3(a) ( ((a) >> 16) & 0xff ) +/** @def RT_BYTE4 + * Gets the fourth byte of something. */ +#define RT_BYTE4(a) ( ((a) >> 24) & 0xff ) +/** @def RT_BYTE5 + * Gets the fifth byte of something. */ +#define RT_BYTE5(a) ( ((a) >> 32) & 0xff ) +/** @def RT_BYTE6 + * Gets the sixth byte of something. */ +#define RT_BYTE6(a) ( ((a) >> 40) & 0xff ) +/** @def RT_BYTE7 + * Gets the seventh byte of something. */ +#define RT_BYTE7(a) ( ((a) >> 48) & 0xff ) +/** @def RT_BYTE8 + * Gets the eight byte of something. */ +#define RT_BYTE8(a) ( ((a) >> 56) & 0xff ) + + +/** @def RT_LODWORD + * Gets the low dword (=uint32_t) of something. + * @deprecated Use RT_LO_U32. */ +#define RT_LODWORD(a) ( (uint32_t)(a) ) +/** @def RT_HIDWORD + * Gets the high dword (=uint32_t) of a 64-bit of something. + * @deprecated Use RT_HI_U32. */ +#define RT_HIDWORD(a) ( (uint32_t)((a) >> 32) ) + +/** @def RT_LOWORD + * Gets the low word (=uint16_t) of something. + * @deprecated Use RT_LO_U16. */ +#define RT_LOWORD(a) ( (a) & 0xffff ) +/** @def RT_HIWORD + * Gets the high word (=uint16_t) of a 32-bit something. + * @deprecated Use RT_HI_U16. */ +#define RT_HIWORD(a) ( (a) >> 16 ) + +/** @def RT_LOBYTE + * Gets the low byte of something. + * @deprecated Use RT_LO_U8. */ +#define RT_LOBYTE(a) ( (a) & 0xff ) +/** @def RT_HIBYTE + * Gets the high byte of a 16-bit something. + * @deprecated Use RT_HI_U8. */ +#define RT_HIBYTE(a) ( (a) >> 8 ) + + +/** @def RT_MAKE_U64 + * Constructs a uint64_t value from two uint32_t values. + */ +#define RT_MAKE_U64(Lo, Hi) ( (uint64_t)((uint32_t)(Hi)) << 32 | (uint32_t)(Lo) ) + +/** @def RT_MAKE_U64_FROM_U16 + * Constructs a uint64_t value from four uint16_t values. + */ +#define RT_MAKE_U64_FROM_U16(w0, w1, w2, w3) \ + ((uint64_t)( (uint64_t)((uint16_t)(w3)) << 48 \ + | (uint64_t)((uint16_t)(w2)) << 32 \ + | (uint32_t)((uint16_t)(w1)) << 16 \ + | (uint16_t)(w0) )) + +/** @def RT_MAKE_U64_FROM_U8 + * Constructs a uint64_t value from eight uint8_t values. + */ +#define RT_MAKE_U64_FROM_U8(b0, b1, b2, b3, b4, b5, b6, b7) \ + ((uint64_t)( (uint64_t)((uint8_t)(b7)) << 56 \ + | (uint64_t)((uint8_t)(b6)) << 48 \ + | (uint64_t)((uint8_t)(b5)) << 40 \ + | (uint64_t)((uint8_t)(b4)) << 32 \ + | (uint32_t)((uint8_t)(b3)) << 24 \ + | (uint32_t)((uint8_t)(b2)) << 16 \ + | (uint16_t)((uint8_t)(b1)) << 8 \ + | (uint8_t)(b0) )) + +/** @def RT_MAKE_U32 + * Constructs a uint32_t value from two uint16_t values. + */ +#define RT_MAKE_U32(Lo, Hi) \ + ((uint32_t)( (uint32_t)((uint16_t)(Hi)) << 16 \ + | (uint16_t)(Lo) )) + +/** @def RT_MAKE_U32_FROM_U8 + * Constructs a uint32_t value from four uint8_t values. + */ +#define RT_MAKE_U32_FROM_U8(b0, b1, b2, b3) \ + ((uint32_t)( (uint32_t)((uint8_t)(b3)) << 24 \ + | (uint32_t)((uint8_t)(b2)) << 16 \ + | (uint16_t)((uint8_t)(b1)) << 8 \ + | (uint8_t)(b0) )) + +/** @def RT_MAKE_U16 + * Constructs a uint16_t value from two uint8_t values. + */ +#define RT_MAKE_U16(Lo, Hi) \ + ((uint16_t)( (uint16_t)((uint8_t)(Hi)) << 8 \ + | (uint8_t)(Lo) )) + + +/** @def RT_BSWAP_U64 + * Reverses the byte order of an uint64_t value. */ +#if 0 +# define RT_BSWAP_U64(u64) RT_BSWAP_U64_C(u64) +#elif defined(__GNUC__) +# define RT_BSWAP_U64(u64) (__builtin_constant_p((u64)) \ + ? RT_BSWAP_U64_C(u64) : ASMByteSwapU64(u64)) +#else +# define RT_BSWAP_U64(u64) ASMByteSwapU64(u64) +#endif + +/** @def RT_BSWAP_U32 + * Reverses the byte order of an uint32_t value. */ +#if 0 +# define RT_BSWAP_U32(u32) RT_BSWAP_U32_C(u32) +#elif defined(__GNUC__) +# define RT_BSWAP_U32(u32) (__builtin_constant_p((u32)) \ + ? RT_BSWAP_U32_C(u32) : ASMByteSwapU32(u32)) +#else +# define RT_BSWAP_U32(u32) ASMByteSwapU32(u32) +#endif + +/** @def RT_BSWAP_U16 + * Reverses the byte order of an uint16_t value. */ +#if 0 +# define RT_BSWAP_U16(u16) RT_BSWAP_U16_C(u16) +#elif defined(__GNUC__) +# define RT_BSWAP_U16(u16) (__builtin_constant_p((u16)) \ + ? RT_BSWAP_U16_C(u16) : ASMByteSwapU16(u16)) +#else +# define RT_BSWAP_U16(u16) ASMByteSwapU16(u16) +#endif + + +/** @def RT_BSWAP_U64_C + * Reverses the byte order of an uint64_t constant. */ +#define RT_BSWAP_U64_C(u64) RT_MAKE_U64(RT_BSWAP_U32_C((u64) >> 32), RT_BSWAP_U32_C((u64) & 0xffffffff)) + +/** @def RT_BSWAP_U32_C + * Reverses the byte order of an uint32_t constant. */ +#define RT_BSWAP_U32_C(u32) RT_MAKE_U32_FROM_U8(RT_BYTE4(u32), RT_BYTE3(u32), RT_BYTE2(u32), RT_BYTE1(u32)) + +/** @def RT_BSWAP_U16_C + * Reverses the byte order of an uint16_t constant. */ +#define RT_BSWAP_U16_C(u16) RT_MAKE_U16(RT_HIBYTE(u16), RT_LOBYTE(u16)) + + +/** @def RT_H2LE_U64 + * Converts an uint64_t value from host to little endian byte order. */ +#ifdef RT_BIG_ENDIAN +# define RT_H2LE_U64(u64) RT_BSWAP_U64(u64) +#else +# define RT_H2LE_U64(u64) (u64) +#endif + +/** @def RT_H2LE_U64_C + * Converts an uint64_t constant from host to little endian byte order. */ +#ifdef RT_BIG_ENDIAN +# define RT_H2LE_U64_C(u64) RT_BSWAP_U64_C(u64) +#else +# define RT_H2LE_U64_C(u64) (u64) +#endif + +/** @def RT_H2LE_U32 + * Converts an uint32_t value from host to little endian byte order. */ +#ifdef RT_BIG_ENDIAN +# define RT_H2LE_U32(u32) RT_BSWAP_U32(u32) +#else +# define RT_H2LE_U32(u32) (u32) +#endif + +/** @def RT_H2LE_U32_C + * Converts an uint32_t constant from host to little endian byte order. */ +#ifdef RT_BIG_ENDIAN +# define RT_H2LE_U32_C(u32) RT_BSWAP_U32_C(u32) +#else +# define RT_H2LE_U32_C(u32) (u32) +#endif + +/** @def RT_H2LE_U16 + * Converts an uint16_t value from host to little endian byte order. */ +#ifdef RT_BIG_ENDIAN +# define RT_H2LE_U16(u16) RT_BSWAP_U16(u16) +#else +# define RT_H2LE_U16(u16) (u16) +#endif + +/** @def RT_H2LE_U16_C + * Converts an uint16_t constant from host to little endian byte order. */ +#ifdef RT_BIG_ENDIAN +# define RT_H2LE_U16_C(u16) RT_BSWAP_U16_C(u16) +#else +# define RT_H2LE_U16_C(u16) (u16) +#endif + + +/** @def RT_LE2H_U64 + * Converts an uint64_t value from little endian to host byte order. */ +#ifdef RT_BIG_ENDIAN +# define RT_LE2H_U64(u64) RT_BSWAP_U64(u64) +#else +# define RT_LE2H_U64(u64) (u64) +#endif + +/** @def RT_LE2H_U64_C + * Converts an uint64_t constant from little endian to host byte order. */ +#ifdef RT_BIG_ENDIAN +# define RT_LE2H_U64_C(u64) RT_BSWAP_U64_C(u64) +#else +# define RT_LE2H_U64_C(u64) (u64) +#endif + +/** @def RT_LE2H_U32 + * Converts an uint32_t value from little endian to host byte order. */ +#ifdef RT_BIG_ENDIAN +# define RT_LE2H_U32(u32) RT_BSWAP_U32(u32) +#else +# define RT_LE2H_U32(u32) (u32) +#endif + +/** @def RT_LE2H_U32_C + * Converts an uint32_t constant from little endian to host byte order. */ +#ifdef RT_BIG_ENDIAN +# define RT_LE2H_U32_C(u32) RT_BSWAP_U32_C(u32) +#else +# define RT_LE2H_U32_C(u32) (u32) +#endif + +/** @def RT_LE2H_U16 + * Converts an uint16_t value from little endian to host byte order. */ +#ifdef RT_BIG_ENDIAN +# define RT_LE2H_U16(u16) RT_BSWAP_U16(u16) +#else +# define RT_LE2H_U16(u16) (u16) +#endif + +/** @def RT_LE2H_U16_C + * Converts an uint16_t constant from little endian to host byte order. */ +#ifdef RT_BIG_ENDIAN +# define RT_LE2H_U16_C(u16) RT_BSWAP_U16_C(u16) +#else +# define RT_LE2H_U16_C(u16) (u16) +#endif + + +/** @def RT_H2BE_U64 + * Converts an uint64_t value from host to big endian byte order. */ +#ifdef RT_BIG_ENDIAN +# define RT_H2BE_U64(u64) (u64) +#else +# define RT_H2BE_U64(u64) RT_BSWAP_U64(u64) +#endif + +/** @def RT_H2BE_U64_C + * Converts an uint64_t constant from host to big endian byte order. */ +#ifdef RT_BIG_ENDIAN +# define RT_H2BE_U64_C(u64) (u64) +#else +# define RT_H2BE_U64_C(u64) RT_BSWAP_U64_C(u64) +#endif + +/** @def RT_H2BE_U32 + * Converts an uint32_t value from host to big endian byte order. */ +#ifdef RT_BIG_ENDIAN +# define RT_H2BE_U32(u32) (u32) +#else +# define RT_H2BE_U32(u32) RT_BSWAP_U32(u32) +#endif + +/** @def RT_H2BE_U32_C + * Converts an uint32_t constant from host to big endian byte order. */ +#ifdef RT_BIG_ENDIAN +# define RT_H2BE_U32_C(u32) (u32) +#else +# define RT_H2BE_U32_C(u32) RT_BSWAP_U32_C(u32) +#endif + +/** @def RT_H2BE_U16 + * Converts an uint16_t value from host to big endian byte order. */ +#ifdef RT_BIG_ENDIAN +# define RT_H2BE_U16(u16) (u16) +#else +# define RT_H2BE_U16(u16) RT_BSWAP_U16(u16) +#endif + +/** @def RT_H2BE_U16_C + * Converts an uint16_t constant from host to big endian byte order. */ +#ifdef RT_BIG_ENDIAN +# define RT_H2BE_U16_C(u16) (u16) +#else +# define RT_H2BE_U16_C(u16) RT_BSWAP_U16_C(u16) +#endif + +/** @def RT_BE2H_U64 + * Converts an uint64_t value from big endian to host byte order. */ +#ifdef RT_BIG_ENDIAN +# define RT_BE2H_U64(u64) (u64) +#else +# define RT_BE2H_U64(u64) RT_BSWAP_U64(u64) +#endif + +/** @def RT_BE2H_U64 + * Converts an uint64_t constant from big endian to host byte order. */ +#ifdef RT_BIG_ENDIAN +# define RT_BE2H_U64_C(u64) (u64) +#else +# define RT_BE2H_U64_C(u64) RT_BSWAP_U64_C(u64) +#endif + +/** @def RT_BE2H_U32 + * Converts an uint32_t value from big endian to host byte order. */ +#ifdef RT_BIG_ENDIAN +# define RT_BE2H_U32(u32) (u32) +#else +# define RT_BE2H_U32(u32) RT_BSWAP_U32(u32) +#endif + +/** @def RT_BE2H_U32_C + * Converts an uint32_t value from big endian to host byte order. */ +#ifdef RT_BIG_ENDIAN +# define RT_BE2H_U32_C(u32) (u32) +#else +# define RT_BE2H_U32_C(u32) RT_BSWAP_U32_C(u32) +#endif + +/** @def RT_BE2H_U16 + * Converts an uint16_t value from big endian to host byte order. */ +#ifdef RT_BIG_ENDIAN +# define RT_BE2H_U16(u16) (u16) +#else +# define RT_BE2H_U16(u16) RT_BSWAP_U16(u16) +#endif + +/** @def RT_BE2H_U16_C + * Converts an uint16_t constant from big endian to host byte order. */ +#ifdef RT_BIG_ENDIAN +# define RT_BE2H_U16_C(u16) (u16) +#else +# define RT_BE2H_U16_C(u16) RT_BSWAP_U16_C(u16) +#endif + + +/** @def RT_H2N_U64 + * Converts an uint64_t value from host to network byte order. */ +#define RT_H2N_U64(u64) RT_H2BE_U64(u64) + +/** @def RT_H2N_U64_C + * Converts an uint64_t constant from host to network byte order. */ +#define RT_H2N_U64_C(u64) RT_H2BE_U64_C(u64) + +/** @def RT_H2N_U32 + * Converts an uint32_t value from host to network byte order. */ +#define RT_H2N_U32(u32) RT_H2BE_U32(u32) + +/** @def RT_H2N_U32_C + * Converts an uint32_t constant from host to network byte order. */ +#define RT_H2N_U32_C(u32) RT_H2BE_U32_C(u32) + +/** @def RT_H2N_U16 + * Converts an uint16_t value from host to network byte order. */ +#define RT_H2N_U16(u16) RT_H2BE_U16(u16) + +/** @def RT_H2N_U16_C + * Converts an uint16_t constant from host to network byte order. */ +#define RT_H2N_U16_C(u16) RT_H2BE_U16_C(u16) + +/** @def RT_N2H_U64 + * Converts an uint64_t value from network to host byte order. */ +#define RT_N2H_U64(u64) RT_BE2H_U64(u64) + +/** @def RT_N2H_U64_C + * Converts an uint64_t constant from network to host byte order. */ +#define RT_N2H_U64_C(u64) RT_BE2H_U64_C(u64) + +/** @def RT_N2H_U32 + * Converts an uint32_t value from network to host byte order. */ +#define RT_N2H_U32(u32) RT_BE2H_U32(u32) + +/** @def RT_N2H_U32_C + * Converts an uint32_t constant from network to host byte order. */ +#define RT_N2H_U32_C(u32) RT_BE2H_U32_C(u32) + +/** @def RT_N2H_U16 + * Converts an uint16_t value from network to host byte order. */ +#define RT_N2H_U16(u16) RT_BE2H_U16(u16) + +/** @def RT_N2H_U16_C + * Converts an uint16_t value from network to host byte order. */ +#define RT_N2H_U16_C(u16) RT_BE2H_U16_C(u16) + + +/* + * The BSD sys/param.h + machine/param.h file is a major source of + * namespace pollution. Kill off some of the worse ones unless we're + * compiling kernel code. + */ +#if defined(RT_OS_DARWIN) \ + && !defined(KERNEL) \ + && !defined(RT_NO_BSD_PARAM_H_UNDEFING) \ + && ( defined(_SYS_PARAM_H_) || defined(_I386_PARAM_H_) ) +/* sys/param.h: */ +# undef PSWP +# undef PVM +# undef PINOD +# undef PRIBO +# undef PVFS +# undef PZERO +# undef PSOCK +# undef PWAIT +# undef PLOCK +# undef PPAUSE +# undef PUSER +# undef PRIMASK +# undef MINBUCKET +# undef MAXALLOCSAVE +# undef FSHIFT +# undef FSCALE + +/* i386/machine.h: */ +# undef ALIGN +# undef ALIGNBYTES +# undef DELAY +# undef STATUS_WORD +# undef USERMODE +# undef BASEPRI +# undef MSIZE +# undef CLSIZE +# undef CLSIZELOG2 +#endif + +/** @def NIL_OFFSET + * NIL offset. + * Whenever we use offsets instead of pointers to save space and relocation effort + * NIL_OFFSET shall be used as the equivalent to NULL. + */ +#define NIL_OFFSET (~0U) + +/** @def NOREF + * Keeps the compiler from bitching about an unused parameter. + */ +#define NOREF(var) (void)(var) + +/** @def RT_BREAKPOINT + * Emit a debug breakpoint instruction. + * + * @remarks In the x86/amd64 gnu world we add a nop instruction after the int3 + * to force gdb to remain at the int3 source line. + * @remarks The L4 kernel will try make sense of the breakpoint, thus the jmp on + * x86/amd64. + */ +#ifdef __GNUC__ +# if defined(RT_ARCH_AMD64) || defined(RT_ARCH_X86) +# if !defined(__L4ENV__) +# define RT_BREAKPOINT() __asm__ __volatile__("int $3\n\tnop\n\t") +# else +# define RT_BREAKPOINT() __asm__ __volatile__("int3; jmp 1f; 1:\n\t") +# endif +# elif defined(RT_ARCH_SPARC64) +# define RT_BREAKPOINT() __asm__ __volatile__("illtrap 0\n\t") /** @todo Sparc64: this is just a wild guess. */ +# elif defined(RT_ARCH_SPARC) +# define RT_BREAKPOINT() __asm__ __volatile__("unimp 0\n\t") /** @todo Sparc: this is just a wild guess (same as Sparc64, just different name). */ +# endif +#endif +#ifdef _MSC_VER +# define RT_BREAKPOINT() __debugbreak() +#endif +#if defined(__IBMC__) || defined(__IBMCPP__) +# define RT_BREAKPOINT() __interrupt(3) +#endif +#ifndef RT_BREAKPOINT +# error "This compiler/arch is not supported!" +#endif + + +/** @defgroup grp_rt_cdefs_size Size Constants + * (Of course, these are binary computer terms, not SI.) + * @{ + */ +/** 1 K (Kilo) (1 024). */ +#define _1K 0x00000400 +/** 2 K (Kilo) (2 048). */ +#define _2K 0x00000800 +/** 4 K (Kilo) (4 096). */ +#define _4K 0x00001000 +/** 8 K (Kilo) (8 192). */ +#define _8K 0x00002000 +/** 16 K (Kilo) (16 384). */ +#define _16K 0x00004000 +/** 32 K (Kilo) (32 678). */ +#define _32K 0x00008000 +/** 64 K (Kilo) (65 536). */ +#define _64K 0x00010000 +/** 128 K (Kilo) (131 072). */ +#define _128K 0x00020000 +/** 256 K (Kilo) (262 144). */ +#define _256K 0x00040000 +/** 512 K (Kilo) (524 288). */ +#define _512K 0x00080000 +/** 1 M (Mega) (1 048 576). */ +#define _1M 0x00100000 +/** 2 M (Mega) (2 097 152). */ +#define _2M 0x00200000 +/** 4 M (Mega) (4 194 304). */ +#define _4M 0x00400000 +/** 1 G (Giga) (1 073 741 824). (32-bit) */ +#define _1G 0x40000000 +/** 1 G (Giga) (1 073 741 824). (64-bit) */ +#define _1G64 0x40000000LL +/** 2 G (Giga) (2 147 483 648). (32-bit) */ +#define _2G32 0x80000000U +/** 2 G (Giga) (2 147 483 648). (64-bit) */ +#define _2G 0x0000000080000000LL +/** 4 G (Giga) (4 294 967 296). */ +#define _4G 0x0000000100000000LL +/** 1 T (Tera) (1 099 511 627 776). */ +#define _1T 0x0000010000000000LL +/** 1 P (Peta) (1 125 899 906 842 624). */ +#define _1P 0x0004000000000000LL +/** 1 E (Exa) (1 152 921 504 606 846 976). */ +#define _1E 0x1000000000000000LL +/** 2 E (Exa) (2 305 843 009 213 693 952). */ +#define _2E 0x2000000000000000ULL +/** @} */ + +/** @defgroup grp_rt_cdefs_decimal_grouping Decimal Constant Grouping Macros + * @{ */ +#define RT_D1(g1) g1 +#define RT_D2(g1, g2) g1#g2 +#define RT_D3(g1, g2, g3) g1#g2#g3 +#define RT_D4(g1, g2, g3, g4) g1#g2#g3#g4 +#define RT_D5(g1, g2, g3, g4, g5) g1#g2#g3#g4#g5 +#define RT_D6(g1, g2, g3, g4, g5, g6) g1#g2#g3#g4#g5#g6 +#define RT_D7(g1, g2, g3, g4, g5, g6, g7) g1#g2#g3#g4#g5#g6#g7 + +#define RT_D1_U(g1) UINT32_C(g1) +#define RT_D2_U(g1, g2) UINT32_C(g1#g2) +#define RT_D3_U(g1, g2, g3) UINT32_C(g1#g2#g3) +#define RT_D4_U(g1, g2, g3, g4) UINT64_C(g1#g2#g3#g4) +#define RT_D5_U(g1, g2, g3, g4, g5) UINT64_C(g1#g2#g3#g4#g5) +#define RT_D6_U(g1, g2, g3, g4, g5, g6) UINT64_C(g1#g2#g3#g4#g5#g6) +#define RT_D7_U(g1, g2, g3, g4, g5, g6, g7) UINT64_C(g1#g2#g3#g4#g5#g6#g7) + +#define RT_D1_S(g1) INT32_C(g1) +#define RT_D2_S(g1, g2) INT32_C(g1#g2) +#define RT_D3_S(g1, g2, g3) INT32_C(g1#g2#g3) +#define RT_D4_S(g1, g2, g3, g4) INT64_C(g1#g2#g3#g4) +#define RT_D5_S(g1, g2, g3, g4, g5) INT64_C(g1#g2#g3#g4#g5) +#define RT_D6_S(g1, g2, g3, g4, g5, g6) INT64_C(g1#g2#g3#g4#g5#g6) +#define RT_D7_S(g1, g2, g3, g4, g5, g6, g7) INT64_C(g1#g2#g3#g4#g5#g6#g7) + +#define RT_D1_U32(g1) UINT32_C(g1) +#define RT_D2_U32(g1, g2) UINT32_C(g1#g2) +#define RT_D3_U32(g1, g2, g3) UINT32_C(g1#g2#g3) +#define RT_D4_U32(g1, g2, g3, g4) UINT32_C(g1#g2#g3#g4) + +#define RT_D1_S32(g1) INT32_C(g1) +#define RT_D2_S32(g1, g2) INT32_C(g1#g2) +#define RT_D3_S32(g1, g2, g3) INT32_C(g1#g2#g3) +#define RT_D4_S32(g1, g2, g3, g4) INT32_C(g1#g2#g3#g4) + +#define RT_D1_U64(g1) UINT64_C(g1) +#define RT_D2_U64(g1, g2) UINT64_C(g1#g2) +#define RT_D3_U64(g1, g2, g3) UINT64_C(g1#g2#g3) +#define RT_D4_U64(g1, g2, g3, g4) UINT64_C(g1#g2#g3#g4) +#define RT_D5_U64(g1, g2, g3, g4, g5) UINT64_C(g1#g2#g3#g4#g5) +#define RT_D6_U64(g1, g2, g3, g4, g5, g6) UINT64_C(g1#g2#g3#g4#g5#g6) +#define RT_D7_U64(g1, g2, g3, g4, g5, g6, g7) UINT64_C(g1#g2#g3#g4#g5#g6#g7) + +#define RT_D1_S64(g1) INT64_C(g1) +#define RT_D2_S64(g1, g2) INT64_C(g1#g2) +#define RT_D3_S64(g1, g2, g3) INT64_C(g1#g2#g3) +#define RT_D4_S64(g1, g2, g3, g4) INT64_C(g1#g2#g3#g4) +#define RT_D5_S64(g1, g2, g3, g4, g5) INT64_C(g1#g2#g3#g4#g5) +#define RT_D6_S64(g1, g2, g3, g4, g5, g6) INT64_C(g1#g2#g3#g4#g5#g6) +#define RT_D7_S64(g1, g2, g3, g4, g5, g6, g7) INT64_C(g1#g2#g3#g4#g5#g6#g7) +/** @} */ + + +/** @defgroup grp_rt_cdefs_time Time Constants + * @{ + */ +/** 1 hour expressed in nanoseconds (64-bit). */ +#define RT_NS_1HOUR UINT64_C(3600000000000) +/** 1 minute expressed in nanoseconds (64-bit). */ +#define RT_NS_1MIN UINT64_C(60000000000) +/** 45 second expressed in nanoseconds. */ +#define RT_NS_45SEC UINT64_C(45000000000) +/** 30 second expressed in nanoseconds. */ +#define RT_NS_30SEC UINT64_C(30000000000) +/** 20 second expressed in nanoseconds. */ +#define RT_NS_20SEC UINT64_C(20000000000) +/** 15 second expressed in nanoseconds. */ +#define RT_NS_15SEC UINT64_C(15000000000) +/** 10 second expressed in nanoseconds. */ +#define RT_NS_10SEC UINT64_C(10000000000) +/** 1 second expressed in nanoseconds. */ +#define RT_NS_1SEC UINT32_C(1000000000) +/** 100 millsecond expressed in nanoseconds. */ +#define RT_NS_100MS UINT32_C(100000000) +/** 10 millsecond expressed in nanoseconds. */ +#define RT_NS_10MS UINT32_C(10000000) +/** 1 millsecond expressed in nanoseconds. */ +#define RT_NS_1MS UINT32_C(1000000) +/** 100 microseconds expressed in nanoseconds. */ +#define RT_NS_100US UINT32_C(100000) +/** 10 microseconds expressed in nanoseconds. */ +#define RT_NS_10US UINT32_C(10000) +/** 1 microsecond expressed in nanoseconds. */ +#define RT_NS_1US UINT32_C(1000) + +/** 1 second expressed in nanoseconds - 64-bit type. */ +#define RT_NS_1SEC_64 UINT64_C(1000000000) +/** 100 millsecond expressed in nanoseconds - 64-bit type. */ +#define RT_NS_100MS_64 UINT64_C(100000000) +/** 10 millsecond expressed in nanoseconds - 64-bit type. */ +#define RT_NS_10MS_64 UINT64_C(10000000) +/** 1 millsecond expressed in nanoseconds - 64-bit type. */ +#define RT_NS_1MS_64 UINT64_C(1000000) +/** 100 microseconds expressed in nanoseconds - 64-bit type. */ +#define RT_NS_100US_64 UINT64_C(100000) +/** 10 microseconds expressed in nanoseconds - 64-bit type. */ +#define RT_NS_10US_64 UINT64_C(10000) +/** 1 microsecond expressed in nanoseconds - 64-bit type. */ +#define RT_NS_1US_64 UINT64_C(1000) + +/** 1 hour expressed in microseconds. */ +#define RT_US_1HOUR UINT32_C(3600000000) +/** 1 minute expressed in microseconds. */ +#define RT_US_1MIN UINT32_C(60000000) +/** 1 second expressed in microseconds. */ +#define RT_US_1SEC UINT32_C(1000000) +/** 100 millsecond expressed in microseconds. */ +#define RT_US_100MS UINT32_C(100000) +/** 10 millsecond expressed in microseconds. */ +#define RT_US_10MS UINT32_C(10000) +/** 1 millsecond expressed in microseconds. */ +#define RT_US_1MS UINT32_C(1000) + +/** 1 hour expressed in microseconds - 64-bit type. */ +#define RT_US_1HOUR_64 UINT64_C(3600000000) +/** 1 minute expressed in microseconds - 64-bit type. */ +#define RT_US_1MIN_64 UINT64_C(60000000) +/** 1 second expressed in microseconds - 64-bit type. */ +#define RT_US_1SEC_64 UINT64_C(1000000) +/** 100 millsecond expressed in microseconds - 64-bit type. */ +#define RT_US_100MS_64 UINT64_C(100000) +/** 10 millsecond expressed in microseconds - 64-bit type. */ +#define RT_US_10MS_64 UINT64_C(10000) +/** 1 millsecond expressed in microseconds - 64-bit type. */ +#define RT_US_1MS_64 UINT64_C(1000) + +/** 1 hour expressed in milliseconds. */ +#define RT_MS_1HOUR UINT32_C(3600000) +/** 1 minute expressed in milliseconds. */ +#define RT_MS_1MIN UINT32_C(60000) +/** 1 second expressed in milliseconds. */ +#define RT_MS_1SEC UINT32_C(1000) + +/** 1 hour expressed in milliseconds - 64-bit type. */ +#define RT_MS_1HOUR_64 UINT64_C(3600000) +/** 1 minute expressed in milliseconds - 64-bit type. */ +#define RT_MS_1MIN_64 UINT64_C(60000) +/** 1 second expressed in milliseconds - 64-bit type. */ +#define RT_MS_1SEC_64 UINT64_C(1000) + +/** The number of seconds per week. */ +#define RT_SEC_1WEEK UINT32_C(604800) +/** The number of seconds per day. */ +#define RT_SEC_1DAY UINT32_C(86400) +/** The number of seconds per hour. */ +#define RT_SEC_1HOUR UINT32_C(3600) + +/** The number of seconds per week - 64-bit type. */ +#define RT_SEC_1WEEK_64 UINT64_C(604800) +/** The number of seconds per day - 64-bit type. */ +#define RT_SEC_1DAY_64 UINT64_C(86400) +/** The number of seconds per hour - 64-bit type. */ +#define RT_SEC_1HOUR_64 UINT64_C(3600) +/** @} */ + + +/** @defgroup grp_rt_cdefs_dbgtype Debug Info Types + * @{ */ +/** Other format. */ +#define RT_DBGTYPE_OTHER RT_BIT_32(0) +/** Stabs. */ +#define RT_DBGTYPE_STABS RT_BIT_32(1) +/** Debug With Arbitrary Record Format (DWARF). */ +#define RT_DBGTYPE_DWARF RT_BIT_32(2) +/** Microsoft Codeview debug info. */ +#define RT_DBGTYPE_CODEVIEW RT_BIT_32(3) +/** Watcom debug info. */ +#define RT_DBGTYPE_WATCOM RT_BIT_32(4) +/** IBM High Level Language debug info. */ +#define RT_DBGTYPE_HLL RT_BIT_32(5) +/** Old OS/2 and Windows symbol file. */ +#define RT_DBGTYPE_SYM RT_BIT_32(6) +/** Map file. */ +#define RT_DBGTYPE_MAP RT_BIT_32(7) +/** @} */ + + +/** @defgroup grp_rt_cdefs_exetype Executable Image Types + * @{ */ +/** Some other format. */ +#define RT_EXETYPE_OTHER RT_BIT_32(0) +/** Portable Executable. */ +#define RT_EXETYPE_PE RT_BIT_32(1) +/** Linear eXecutable. */ +#define RT_EXETYPE_LX RT_BIT_32(2) +/** Linear Executable. */ +#define RT_EXETYPE_LE RT_BIT_32(3) +/** New Executable. */ +#define RT_EXETYPE_NE RT_BIT_32(4) +/** DOS Executable (Mark Zbikowski). */ +#define RT_EXETYPE_MZ RT_BIT_32(5) +/** COM Executable. */ +#define RT_EXETYPE_COM RT_BIT_32(6) +/** a.out Executable. */ +#define RT_EXETYPE_AOUT RT_BIT_32(7) +/** Executable and Linkable Format. */ +#define RT_EXETYPE_ELF RT_BIT_32(8) +/** Mach-O Executable (including FAT ones). */ +#define RT_EXETYPE_MACHO RT_BIT_32(9) +/** TE from UEFI. */ +#define RT_EXETYPE_TE RT_BIT_32(9) +/** @} */ + + +/** @def VALID_PTR + * Pointer validation macro. + * @param ptr The pointer. + */ +#if defined(RT_ARCH_AMD64) +# ifdef IN_RING3 +# if defined(RT_OS_DARWIN) /* first 4GB is reserved for legacy kernel. */ +# define RT_VALID_PTR(ptr) ( (uintptr_t)(ptr) >= _4G \ + && !((uintptr_t)(ptr) & 0xffff800000000000ULL) ) +# elif defined(RT_OS_SOLARIS) /* The kernel only used the top 2TB, but keep it simple. */ +# define RT_VALID_PTR(ptr) ( (uintptr_t)(ptr) + 0x1000U >= 0x2000U \ + && ( ((uintptr_t)(ptr) & 0xffff800000000000ULL) == 0xffff800000000000ULL \ + || ((uintptr_t)(ptr) & 0xffff800000000000ULL) == 0) ) +# else +# define RT_VALID_PTR(ptr) ( (uintptr_t)(ptr) + 0x1000U >= 0x2000U \ + && !((uintptr_t)(ptr) & 0xffff800000000000ULL) ) +# endif +# else /* !IN_RING3 */ +# define RT_VALID_PTR(ptr) ( (uintptr_t)(ptr) + 0x1000U >= 0x2000U \ + && ( ((uintptr_t)(ptr) & 0xffff800000000000ULL) == 0xffff800000000000ULL \ + || ((uintptr_t)(ptr) & 0xffff800000000000ULL) == 0) ) +# endif /* !IN_RING3 */ + +#elif defined(RT_ARCH_X86) +# define RT_VALID_PTR(ptr) ( (uintptr_t)(ptr) + 0x1000U >= 0x2000U ) + +#elif defined(RT_ARCH_SPARC64) +# ifdef IN_RING3 +# if defined(RT_OS_SOLARIS) +/** Sparc64 user mode: According to Figure 9.4 in solaris internals */ +/** @todo # define RT_VALID_PTR(ptr) ( (uintptr_t)(ptr) + 0x80004000U >= 0x80004000U + 0x100000000ULL ) - figure this. */ +# define RT_VALID_PTR(ptr) ( (uintptr_t)(ptr) + 0x80000000U >= 0x80000000U + 0x100000000ULL ) +# else +# error "Port me" +# endif +# else /* !IN_RING3 */ +# if defined(RT_OS_SOLARIS) +/** @todo Sparc64 kernel mode: This is according to Figure 11.1 in solaris + * internals. Verify in sources. */ +# define RT_VALID_PTR(ptr) ( (uintptr_t)(ptr) >= 0x01000000U ) +# else +# error "Port me" +# endif +# endif /* !IN_RING3 */ + +#elif defined(RT_ARCH_SPARC) +# ifdef IN_RING3 +# ifdef RT_OS_SOLARIS +/** Sparc user mode: According to + * http://cvs.opensolaris.org/source/xref/onnv/onnv-gate/usr/src/uts/sun4/os/startup.c#510 */ +# define RT_VALID_PTR(ptr) ( (uintptr_t)(ptr) + 0x400000U >= 0x400000U + 0x2000U ) + +# else +# error "Port me" +# endif +# else /* !IN_RING3 */ +# ifdef RT_OS_SOLARIS +/** @todo Sparc kernel mode: Check the sources! */ +# define RT_VALID_PTR(ptr) ( (uintptr_t)(ptr) + 0x1000U >= 0x2000U ) +# else +# error "Port me" +# endif +# endif /* !IN_RING3 */ + +#elif defined(RT_ARCH_ARM) +/* ASSUMES that at least the last and first 4K are out of bounds. */ +# define RT_VALID_PTR(ptr) ( (uintptr_t)(ptr) + 0x1000U >= 0x2000U ) + +#else +# error "Architecture identifier missing / not implemented." +#endif + +/** Old name for RT_VALID_PTR. */ +#define VALID_PTR(ptr) RT_VALID_PTR(ptr) + +/** @def RT_VALID_ALIGNED_PTR + * Pointer validation macro that also checks the alignment. + * @param ptr The pointer. + * @param align The alignment, must be a power of two. + */ +#define RT_VALID_ALIGNED_PTR(ptr, align) \ + ( !((uintptr_t)(ptr) & (uintptr_t)((align) - 1)) \ + && VALID_PTR(ptr) ) + + +/** @def VALID_PHYS32 + * 32 bits physical address validation macro. + * @param Phys The RTGCPHYS address. + */ +#define VALID_PHYS32(Phys) ( (uint64_t)(Phys) < (uint64_t)_4G ) + +/** @def N_ + * The \#define N_ is used to mark a string for translation. This is usable in + * any part of the code, as it is only used by the tools that create message + * catalogs. This macro is a no-op as far as the compiler and code generation + * is concerned. + * + * If you want to both mark a string for translation and translate it, use _(). + */ +#define N_(s) (s) + +/** @def _ + * The \#define _ is used to mark a string for translation and to translate it + * in one step. + * + * If you want to only mark a string for translation, use N_(). + */ +#define _(s) gettext(s) + + +/** @def __PRETTY_FUNCTION__ + * With GNU C we'd like to use the builtin __PRETTY_FUNCTION__, so define that + * for the other compilers. + */ +#if !defined(__GNUC__) && !defined(__PRETTY_FUNCTION__) +# ifdef _MSC_VER +# define __PRETTY_FUNCTION__ __FUNCSIG__ +# else +# define __PRETTY_FUNCTION__ __FUNCTION__ +# endif +#endif + + +/** @def RT_STRICT + * The \#define RT_STRICT controls whether or not assertions and other runtime + * checks should be compiled in or not. This is defined when DEBUG is defined. + * If RT_NO_STRICT is defined, it will unconditionally be undefined. + * + * If you want assertions which are not subject to compile time options use + * the AssertRelease*() flavors. + */ +#if !defined(RT_STRICT) && defined(DEBUG) +# define RT_STRICT +#endif +#ifdef RT_NO_STRICT +# undef RT_STRICT +#endif + +/** @todo remove this: */ +#if !defined(RT_LOCK_STRICT) && !defined(DEBUG_bird) +# define RT_LOCK_NO_STRICT +#endif +#if !defined(RT_LOCK_STRICT_ORDER) && !defined(DEBUG_bird) +# define RT_LOCK_NO_STRICT_ORDER +#endif + +/** @def RT_LOCK_STRICT + * The \#define RT_LOCK_STRICT controls whether deadlock detection and related + * checks are done in the lock and semaphore code. It is by default enabled in + * RT_STRICT builds, but this behavior can be overridden by defining + * RT_LOCK_NO_STRICT. */ +#if !defined(RT_LOCK_STRICT) && !defined(RT_LOCK_NO_STRICT) && defined(RT_STRICT) +# define RT_LOCK_STRICT +#endif +/** @def RT_LOCK_NO_STRICT + * The \#define RT_LOCK_NO_STRICT disables RT_LOCK_STRICT. */ +#if defined(RT_LOCK_NO_STRICT) && defined(RT_LOCK_STRICT) +# undef RT_LOCK_STRICT +#endif + +/** @def RT_LOCK_STRICT_ORDER + * The \#define RT_LOCK_STRICT_ORDER controls whether locking order is checked + * by the lock and semaphore code. It is by default enabled in RT_STRICT + * builds, but this behavior can be overridden by defining + * RT_LOCK_NO_STRICT_ORDER. */ +#if !defined(RT_LOCK_STRICT_ORDER) && !defined(RT_LOCK_NO_STRICT_ORDER) && defined(RT_STRICT) +# define RT_LOCK_STRICT_ORDER +#endif +/** @def RT_LOCK_NO_STRICT_ORDER + * The \#define RT_LOCK_NO_STRICT_ORDER disables RT_LOCK_STRICT_ORDER. */ +#if defined(RT_LOCK_NO_STRICT_ORDER) && defined(RT_LOCK_STRICT_ORDER) +# undef RT_LOCK_STRICT_ORDER +#endif + + +/** Source position. */ +#define RT_SRC_POS __FILE__, __LINE__, RT_GCC_EXTENSION __PRETTY_FUNCTION__ + +/** Source position declaration. */ +#define RT_SRC_POS_DECL const char *pszFile, unsigned iLine, const char *pszFunction + +/** Source position arguments. */ +#define RT_SRC_POS_ARGS pszFile, iLine, pszFunction + +/** Applies NOREF() to the source position arguments. */ +#define RT_SRC_POS_NOREF() do { NOREF(pszFile); NOREF(iLine); NOREF(pszFunction); } while (0) + + +/** @def RT_INLINE_ASM_EXTERNAL + * Defined as 1 if the compiler does not support inline assembly. + * The ASM* functions will then be implemented in external .asm files. + */ +#if (defined(_MSC_VER) && defined(RT_ARCH_AMD64)) \ + || (!defined(RT_ARCH_AMD64) && !defined(RT_ARCH_X86)) +# define RT_INLINE_ASM_EXTERNAL 1 +#else +# define RT_INLINE_ASM_EXTERNAL 0 +#endif + +/** @def RT_INLINE_ASM_GNU_STYLE + * Defined as 1 if the compiler understands GNU style inline assembly. + */ +#if defined(_MSC_VER) +# define RT_INLINE_ASM_GNU_STYLE 0 +#else +# define RT_INLINE_ASM_GNU_STYLE 1 +#endif + +/** @def RT_INLINE_ASM_USES_INTRIN + * Defined as the major MSC version if the compiler have and uses intrin.h. + * Otherwise it is 0. */ +#ifdef _MSC_VER +# if _MSC_VER >= 1700 /* Visual C++ v11.0 / 2012 */ +# define RT_INLINE_ASM_USES_INTRIN 17 +# elif _MSC_VER >= 1600 /* Visual C++ v10.0 / 2010 */ +# define RT_INLINE_ASM_USES_INTRIN 16 +# elif _MSC_VER >= 1500 /* Visual C++ v9.0 / 2008 */ +# define RT_INLINE_ASM_USES_INTRIN 15 +# elif _MSC_VER >= 1400 /* Visual C++ v8.0 / 2005 */ +# define RT_INLINE_ASM_USES_INTRIN 14 +# endif +#endif +#ifndef RT_INLINE_ASM_USES_INTRIN +# define RT_INLINE_ASM_USES_INTRIN 0 +#endif + +/** @def RT_COMPILER_SUPPORTS_LAMBDA + * If the defined, the compiler supports lambda expressions. These expressions + * are useful for embedding assertions and type checks into macros. */ +#if defined(_MSC_VER) && defined(__cplusplus) +# if _MSC_VER >= 1600 /* Visual C++ v10.0 / 2010 */ +# define RT_COMPILER_SUPPORTS_LAMBDA +# endif +#elif defined(__GNUC__) && defined(__cplusplus) +/* 4.5 or later, I think, if in ++11 mode... */ +#endif + +/** @} */ + + +/** @defgroup grp_rt_cdefs_cpp Special Macros for C++ + * @ingroup grp_rt_cdefs + * @{ + */ + +#ifdef __cplusplus + +/** @def DECLEXPORT_CLASS + * How to declare an exported class. Place this macro after the 'class' + * keyword in the declaration of every class you want to export. + * + * @note It is necessary to use this macro even for inner classes declared + * inside the already exported classes. This is a GCC specific requirement, + * but it seems not to harm other compilers. + */ +#if defined(_MSC_VER) || defined(RT_OS_OS2) +# define DECLEXPORT_CLASS __declspec(dllexport) +#elif defined(RT_USE_VISIBILITY_DEFAULT) +# define DECLEXPORT_CLASS __attribute__((visibility("default"))) +#else +# define DECLEXPORT_CLASS +#endif + +/** @def DECLIMPORT_CLASS + * How to declare an imported class Place this macro after the 'class' + * keyword in the declaration of every class you want to export. + * + * @note It is necessary to use this macro even for inner classes declared + * inside the already exported classes. This is a GCC specific requirement, + * but it seems not to harm other compilers. + */ +#if defined(_MSC_VER) || (defined(RT_OS_OS2) && !defined(__IBMC__) && !defined(__IBMCPP__)) +# define DECLIMPORT_CLASS __declspec(dllimport) +#elif defined(RT_USE_VISIBILITY_DEFAULT) +# define DECLIMPORT_CLASS __attribute__((visibility("default"))) +#else +# define DECLIMPORT_CLASS +#endif + +/** @def WORKAROUND_MSVC7_ERROR_C2593_FOR_BOOL_OP + * Macro to work around error C2593 of the not-so-smart MSVC 7.x ambiguity + * resolver. The following snippet clearly demonstrates the code causing this + * error: + * @code + * class A + * { + * public: + * operator bool() const { return false; } + * operator int*() const { return NULL; } + * }; + * int main() + * { + * A a; + * if (!a); + * if (a && 0); + * return 0; + * } + * @endcode + * The code itself seems pretty valid to me and GCC thinks the same. + * + * This macro fixes the compiler error by explicitly overloading implicit + * global operators !, && and || that take the given class instance as one of + * their arguments. + * + * The best is to use this macro right after the class declaration. + * + * @note The macro expands to nothing for compilers other than MSVC. + * + * @param Cls Class to apply the workaround to + */ +#if defined(_MSC_VER) +# define WORKAROUND_MSVC7_ERROR_C2593_FOR_BOOL_OP(Cls) \ + inline bool operator! (const Cls &that) { return !bool (that); } \ + inline bool operator&& (const Cls &that, bool b) { return bool (that) && b; } \ + inline bool operator|| (const Cls &that, bool b) { return bool (that) || b; } \ + inline bool operator&& (bool b, const Cls &that) { return b && bool (that); } \ + inline bool operator|| (bool b, const Cls &that) { return b || bool (that); } +#else +# define WORKAROUND_MSVC7_ERROR_C2593_FOR_BOOL_OP(Cls) +#endif + +/** @def WORKAROUND_MSVC7_ERROR_C2593_FOR_BOOL_OP_TPL + * Version of WORKAROUND_MSVC7_ERROR_C2593_FOR_BOOL_OP for template classes. + * + * @param Tpl Name of the template class to apply the workaround to + * @param ArgsDecl arguments of the template, as declared in |<>| after the + * |template| keyword, including |<>| + * @param Args arguments of the template, as specified in |<>| after the + * template class name when using the, including |<>| + * + * Example: + * @code + * // template class declaration + * template + * class Foo { ... }; + * // applied workaround + * WORKAROUND_MSVC7_ERROR_C2593_FOR_BOOL_OP_TPL (Foo, , ) + * @endcode + */ +#if defined(_MSC_VER) +# define WORKAROUND_MSVC7_ERROR_C2593_FOR_BOOL_OP_TPL(Tpl, ArgsDecl, Args) \ + template ArgsDecl \ + inline bool operator! (const Tpl Args &that) { return !bool (that); } \ + template ArgsDecl \ + inline bool operator&& (const Tpl Args &that, bool b) { return bool (that) && b; } \ + template ArgsDecl \ + inline bool operator|| (const Tpl Args &that, bool b) { return bool (that) || b; } \ + template ArgsDecl \ + inline bool operator&& (bool b, const Tpl Args &that) { return b && bool (that); } \ + template ArgsDecl \ + inline bool operator|| (bool b, const Tpl Args &that) { return b || bool (that); } +#else +# define WORKAROUND_MSVC7_ERROR_C2593_FOR_BOOL_OP_TPL(Tpl, ArgsDecl, Args) +#endif + + +/** @def DECLARE_CLS_COPY_CTOR_ASSIGN_NOOP + * Declares the copy constructor and the assignment operation as inlined no-ops + * (non-existent functions) for the given class. Use this macro inside the + * private section if you want to effectively disable these operations for your + * class. + * + * @param Cls class name to declare for + */ + +#define DECLARE_CLS_COPY_CTOR_ASSIGN_NOOP(Cls) \ + inline Cls (const Cls &); \ + inline Cls &operator= (const Cls &); + + +/** @def DECLARE_CLS_NEW_DELETE_NOOP + * Declares the new and delete operations as no-ops (non-existent functions) + * for the given class. Use this macro inside the private section if you want + * to effectively limit creating class instances on the stack only. + * + * @note The destructor of the given class must not be virtual, otherwise a + * compile time error will occur. Note that this is not a drawback: having + * the virtual destructor for a stack-based class is absolutely useless + * (the real class of the stack-based instance is always known to the compiler + * at compile time, so it will always call the correct destructor). + * + * @param Cls class name to declare for + */ +#define DECLARE_CLS_NEW_DELETE_NOOP(Cls) \ + inline static void *operator new (size_t); \ + inline static void operator delete (void *); + +#endif /* __cplusplus */ + +/** @} */ + +#endif + --- linux-raspi2-4.2.0.orig/ubuntu/vbox/include/iprt/cpuset.h +++ linux-raspi2-4.2.0/ubuntu/vbox/include/iprt/cpuset.h @@ -0,0 +1,340 @@ +/** @file + * IPRT - CPU Set. + */ + +/* + * Copyright (C) 2008-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + +#ifndef ___iprt_cpuset_h +#define ___iprt_cpuset_h + +#include +#include /* RTMpCpuIdToSetIndex */ +#include + + +RT_C_DECLS_BEGIN + +/** @defgroup grp_rt_cpuset RTCpuSet - CPU Set + * @ingroup grp_rt + * @{ + */ + + +/** + * Clear all CPUs. + * + * @returns pSet. + * @param pSet Pointer to the set. + */ +DECLINLINE(PRTCPUSET) RTCpuSetEmpty(PRTCPUSET pSet) +{ + unsigned i; + for (i = 0; i < RT_ELEMENTS(pSet->bmSet); i++) + pSet->bmSet[i] = 0; + return pSet; +} + + +/** + * Set all CPUs. + * + * @returns pSet. + * @param pSet Pointer to the set. + */ +DECLINLINE(PRTCPUSET) RTCpuSetFill(PRTCPUSET pSet) +{ + unsigned i; + for (i = 0; i < RT_ELEMENTS(pSet->bmSet); i++) + pSet->bmSet[i] = UINT64_MAX; + return pSet; +} + + +/** + * Copies one set to another. + * + * @param pDst Pointer to the destination set. + * @param pSrc Pointer to the source set. + */ +DECLINLINE(void) RTCpuSetCopy(PRTCPUSET pDst, PRTCPUSET pSrc) +{ + unsigned i; + for (i = 0; i < RT_ELEMENTS(pDst->bmSet); i++) + pDst->bmSet[i] = pSrc->bmSet[i]; +} + + +/** + * ANDs the given CPU set with another. + * + * @returns pSet. + * @param pSet Pointer to the set. + * @param pAndMaskSet Pointer to the AND-mask set. + */ +DECLINLINE(PRTCPUSET) RTCpuSetAnd(PRTCPUSET pSet, PRTCPUSET pAndMaskSet) +{ + unsigned i; + for (i = 0; i < RT_ELEMENTS(pSet->bmSet); i++) + ASMAtomicAndU64((volatile uint64_t *)&pSet->bmSet[i], pAndMaskSet->bmSet[i]); + return pSet; +} + + +/** + * Adds a CPU given by its identifier to the set. + * + * @returns 0 on success, -1 if idCpu isn't valid. + * @param pSet Pointer to the set. + * @param idCpu The identifier of the CPU to add. + * @remarks The modification is atomic. + */ +DECLINLINE(int) RTCpuSetAdd(PRTCPUSET pSet, RTCPUID idCpu) +{ + int iCpu = RTMpCpuIdToSetIndex(idCpu); + if (RT_LIKELY(iCpu >= 0)) + { + ASMAtomicBitSet(pSet, iCpu); + return 0; + } + return -1; +} + + +/** + * Adds a CPU given by its identifier to the set. + * + * @returns 0 on success, -1 if iCpu isn't valid. + * @param pSet Pointer to the set. + * @param iCpu The index of the CPU to add. + * @remarks The modification is atomic. + */ +DECLINLINE(int) RTCpuSetAddByIndex(PRTCPUSET pSet, int iCpu) +{ + if (RT_LIKELY((unsigned)iCpu < RTCPUSET_MAX_CPUS)) + { + ASMAtomicBitSet(pSet, iCpu); + return 0; + } + return -1; +} + + +/** + * Removes a CPU given by its identifier from the set. + * + * @returns 0 on success, -1 if idCpu isn't valid. + * @param pSet Pointer to the set. + * @param idCpu The identifier of the CPU to delete. + * @remarks The modification is atomic. + */ +DECLINLINE(int) RTCpuSetDel(PRTCPUSET pSet, RTCPUID idCpu) +{ + int iCpu = RTMpCpuIdToSetIndex(idCpu); + if (RT_LIKELY(iCpu >= 0)) + { + ASMAtomicBitClear(pSet, iCpu); + return 0; + } + return -1; +} + + +/** + * Removes a CPU given by its index from the set. + * + * @returns 0 on success, -1 if iCpu isn't valid. + * @param pSet Pointer to the set. + * @param iCpu The index of the CPU to delete. + * @remarks The modification is atomic. + */ +DECLINLINE(int) RTCpuSetDelByIndex(PRTCPUSET pSet, int iCpu) +{ + if (RT_LIKELY((unsigned)iCpu < RTCPUSET_MAX_CPUS)) + { + ASMAtomicBitClear(pSet, iCpu); + return 0; + } + return -1; +} + + +/** + * Checks if a CPU given by its identifier is a member of the set. + * + * @returns true / false accordingly. + * @param pSet Pointer to the set. + * @param idCpu The identifier of the CPU to look for. + * @remarks The test is atomic. + */ +DECLINLINE(bool) RTCpuSetIsMember(PCRTCPUSET pSet, RTCPUID idCpu) +{ + int iCpu = RTMpCpuIdToSetIndex(idCpu); + if (RT_LIKELY(iCpu >= 0)) + return ASMBitTest((volatile void *)pSet, iCpu); + return false; +} + + +/** + * Checks if a CPU given by its index is a member of the set. + * + * @returns true / false accordingly. + * @param pSet Pointer to the set. + * @param iCpu The index of the CPU in the set. + * @remarks The test is atomic. + */ +DECLINLINE(bool) RTCpuSetIsMemberByIndex(PCRTCPUSET pSet, int iCpu) +{ + if (RT_LIKELY((unsigned)iCpu < RTCPUSET_MAX_CPUS)) + return ASMBitTest((volatile void *)pSet, iCpu); + return false; +} + + +/** + * Checks if the two sets match or not. + * + * @returns true / false accordingly. + * @param pSet1 The first set. + * @param pSet2 The second set. + */ +DECLINLINE(bool) RTCpuSetIsEqual(PCRTCPUSET pSet1, PCRTCPUSET pSet2) +{ + unsigned i; + for (i = 0; i < RT_ELEMENTS(pSet1->bmSet); i++) + if (pSet1->bmSet[i] != pSet2->bmSet[i]) + return false; + return true; +} + + +/** + * Checks if the CPU set is empty or not. + * + * @returns true / false accordingly. + * @param pSet Pointer to the set. + */ +DECLINLINE(bool) RTCpuSetIsEmpty(PRTCPUSET pSet) +{ + unsigned i; + for (i = 0; i < RT_ELEMENTS(pSet->bmSet); i++) + if (pSet->bmSet[i]) + return false; + return true; +} + + +/** + * Converts the CPU set to a 64-bit mask. + * + * @returns The mask. + * @param pSet Pointer to the set. + * @remarks Use with extreme care as it may lose information! + */ +DECLINLINE(uint64_t) RTCpuSetToU64(PCRTCPUSET pSet) +{ + return pSet->bmSet[0]; +} + + +/** + * Initializes the CPU set from a 64-bit mask. + * + * @param pSet Pointer to the set. + * @param fMask The mask. + */ +DECLINLINE(PRTCPUSET) RTCpuSetFromU64(PRTCPUSET pSet, uint64_t fMask) +{ + unsigned i; + + pSet->bmSet[0] = fMask; + for (i = 1; i < RT_ELEMENTS(pSet->bmSet); i++) + pSet->bmSet[i] = 0; + + return pSet; +} + + +/** + * Count the CPUs in the set. + * + * @returns CPU count. + * @param pSet Pointer to the set. + */ +DECLINLINE(int) RTCpuSetCount(PCRTCPUSET pSet) +{ + int cCpus = 0; + unsigned i; + + for (i = 0; i < RT_ELEMENTS(pSet->bmSet); i++) + { + uint64_t u64 = pSet->bmSet[i]; + if (u64 != 0) + { + unsigned iCpu = 64; + while (iCpu-- > 0) + { + if (u64 & 1) + cCpus++; + u64 >>= 1; + } + } + } + return cCpus; +} + + +/** + * Get the highest set index. + * + * @returns The higest set index, -1 if all bits are clear. + * @param pSet Pointer to the set. + */ +DECLINLINE(int) RTCpuLastIndex(PCRTCPUSET pSet) +{ + unsigned i = RT_ELEMENTS(pSet->bmSet); + while (i-- > 0) + { + uint64_t u64 = pSet->bmSet[i]; + if (u64) + { + /* There are more efficient ways to do this in asm.h... */ + unsigned iBit; + for (iBit = 63; iBit > 0; iBit--) + { + if (u64 & RT_BIT_64(63)) + break; + u64 <<= 1; + } + return i * 64 + iBit; + } + } + return 0; +} + + +/** @} */ + +RT_C_DECLS_END + +#endif + --- linux-raspi2-4.2.0.orig/ubuntu/vbox/include/iprt/ctype.h +++ linux-raspi2-4.2.0/ubuntu/vbox/include/iprt/ctype.h @@ -0,0 +1,238 @@ +/** @file + * IPRT - Simple character type classiciation and conversion. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + +#ifndef ___iprt_ctype_h +#define ___iprt_ctype_h + +#include + +/** @name C locale predicates and conversions. + * + * For most practical purposes, this can safely be used when parsing UTF-8 + * strings. Just keep in mind that we only deal with the first 127 chars and + * that full correctness is only archived using the non-existing RTLocIs* API. + * + * @remarks Use the marcros, not the inlined functions. + * + * @remarks ASSUMES the source code includes the basic ASCII chars. This is a + * general IPRT assumption. + * @{ */ +#define RT_C_IS_BLANK(ch) RTLocCIsBlank((ch)) +#define RT_C_IS_ALNUM(ch) RTLocCIsAlNum((ch)) +#define RT_C_IS_ALPHA(ch) RTLocCIsAlpha((ch)) +#define RT_C_IS_CNTRL(ch) RTLocCIsCntrl((ch)) +#define RT_C_IS_DIGIT(ch) RTLocCIsDigit((ch)) +#define RT_C_IS_LOWER(ch) RTLocCIsLower((ch)) +#define RT_C_IS_GRAPH(ch) RTLocCIsGraph((ch)) +#define RT_C_IS_ODIGIT(ch) RTLocCIsODigit((ch)) +#define RT_C_IS_PRINT(ch) RTLocCIsPrint((ch)) +#define RT_C_IS_PUNCT(ch) RTLocCIsPunct((ch)) +#define RT_C_IS_SPACE(ch) RTLocCIsSpace((ch)) +#define RT_C_IS_UPPER(ch) RTLocCIsUpper((ch)) +#define RT_C_IS_XDIGIT(ch) RTLocCIsXDigit((ch)) + +#define RT_C_TO_LOWER(ch) RTLocCToLower((ch)) +#define RT_C_TO_UPPER(ch) RTLocCToUpper((ch)) + +/** + * Checks for a blank character. + * + * @returns true / false. + * @param ch The character to test. + */ +DECL_FORCE_INLINE(bool) RTLocCIsBlank(int ch) +{ + return ch == 0x20 /* space */ + || ch == 0x09; /* horizontal tab */ +} + +/** + * Checks for a control character. + * + * @returns true / false. + * @param ch The character to test. + */ +DECL_FORCE_INLINE(bool) RTLocCIsCntrl(int ch) +{ + return (unsigned)ch < 32U /* 0..2f */ + || ch == 0x7f; +} + +/** + * Checks for a decimal digit. + * + * @returns true / false. + * @param ch The character to test. + */ +DECL_FORCE_INLINE(bool) RTLocCIsDigit(int ch) +{ + return (unsigned)ch - 0x30 < 10U; /* 30..39 */ +} + +/** + * Checks for a lower case character. + * + * @returns true / false. + * @param ch The character to test. + */ +DECL_FORCE_INLINE(bool) RTLocCIsLower(int ch) +{ + return (unsigned)ch - 0x61U < 26U; /* 61..7a */ +} + +/** + * Checks for an octal digit. + * + * @returns true / false. + * @param ch The character to test. + */ +DECL_FORCE_INLINE(bool) RTLocCIsODigit(int ch) +{ + return (unsigned)ch - 0x30 < 8U; /* 30..37 */ +} + +/** + * Checks for a printable character (whitespace included). + * + * @returns true / false. + * @param ch The character to test. + */ +DECL_FORCE_INLINE(bool) RTLocCIsPrint(int ch) +{ + return (unsigned)ch - 0x20U < 95U; /* 20..7e */ +} + +/** + * Checks for punctuation (?). + * + * @returns true / false. + * @param ch The character to test. + */ +DECL_FORCE_INLINE(bool) RTLocCIsPunct(int ch) +{ + return (unsigned)ch - 0x21U < 15U /* 21..2f */ + || (unsigned)ch - 0x2aU < 6U /* 2a..2f */ + || (unsigned)ch - 0x3aU < 7U /* 3a..40 */ + || (unsigned)ch - 0x5bU < 6U /* 5a..60 */ + || (unsigned)ch - 0x7bU < 4U /* 7b..7e */; +} + +/** + * Checks for a white-space character. + * + * @returns true / false. + * @param ch The character to test. + */ +DECL_FORCE_INLINE(bool) RTLocCIsSpace(int ch) +{ + return ch == 0x20 /* 20 (space) */ + || (unsigned)ch - 0x09U < 5U; /* 09..0d */ +} + +/** + * Checks for an upper case character. + * + * @returns true / false. + * @param ch The character to test. + */ +DECL_FORCE_INLINE(bool) RTLocCIsUpper(int ch) +{ + return (unsigned)ch - 0x41 < 26U; /* 41..5a */ +} + +/** + * Checks for a hexadecimal digit. + * + * @returns true / false. + * @param ch The character to test. + */ +DECL_FORCE_INLINE(bool) RTLocCIsXDigit(int ch) +{ + return (unsigned)ch - 0x30 < 10U /* 30..39 (0-9) */ + || (unsigned)ch - 0x41 < 6 /* 41..46 (A-F) */ + || (unsigned)ch - 0x61 < 6; /* 61..66 (a-f) */ +} + +/** + * Checks for an alphabetic character. + * + * @returns true / false. + * @param ch The character to test. + */ +DECL_FORCE_INLINE(bool) RTLocCIsAlpha(int ch) +{ + return RTLocCIsLower(ch) || RTLocCIsUpper(ch); +} + +/** + * Checks for an alphanumerical character. + * + * @returns true / false. + * @param ch The character to test. + */ +DECL_FORCE_INLINE(bool) RTLocCIsAlNum(int ch) +{ + return RTLocCIsDigit(ch) || RTLocCIsAlpha(ch); +} + +/** + * Checks for a printable character whitespace excluded. + * + * @returns true / false. + * @param ch The character to test. + */ +DECL_FORCE_INLINE(bool) RTLocCIsGraph(int ch) +{ + return RTLocCIsPrint(ch) && !RTLocCIsBlank(ch); +} + + +/** + * Converts the character to lower case if applictable. + * + * @returns lower cased character or ch. + * @param ch The character to test. + */ +DECL_FORCE_INLINE(int) RTLocCToLower(int ch) +{ + return RTLocCIsUpper(ch) ? (ch) + 0x20 : (ch); +} + +/** + * Converts the character to upper case if applictable. + * + * @returns upper cased character or ch. + * @param ch The character to test. + */ +DECL_FORCE_INLINE(int) RTLocCToUpper(int ch) +{ + return RTLocCIsLower(ch) ? (ch) - 0x20 : (ch); +} + + +/** @} */ + +#endif + --- linux-raspi2-4.2.0.orig/ubuntu/vbox/include/iprt/err.h +++ linux-raspi2-4.2.0/ubuntu/vbox/include/iprt/err.h @@ -0,0 +1,2489 @@ +/** @file + * IPRT - Status Codes. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + +#ifndef ___iprt_err_h +#define ___iprt_err_h + +#include +#include +#include + + +/** @defgroup grp_rt_err RTErr - Status Codes + * @ingroup grp_rt + * + * The IPRT status codes are in two ranges: {0..999} and {22000..32766}. The + * IPRT users are free to use the range {1000..21999}. See RTERR_RANGE1_FIRST, + * RTERR_RANGE1_LAST, RTERR_RANGE2_FIRST, RTERR_RANGE2_LAST, RTERR_USER_FIRST + * and RTERR_USER_LAST. + * + * @{ + */ + +/** @defgroup grp_rt_err_hlp Status Code Helpers + * @{ + */ + +#ifdef __cplusplus +/** + * Strict type validation class. + * + * This is only really useful for type checking the arguments to RT_SUCCESS, + * RT_SUCCESS_NP, RT_FAILURE and RT_FAILURE_NP. The RTErrStrictType2 + * constructor is for integration with external status code strictness regimes. + */ +class RTErrStrictType +{ +protected: + int32_t m_rc; + +public: + /** + * Constructor for interaction with external status code strictness regimes. + * + * This is a special constructor for helping external return code validator + * classes interact cleanly with RT_SUCCESS, RT_SUCCESS_NP, RT_FAILURE and + * RT_FAILURE_NP while barring automatic cast to integer. + * + * @param rcObj IPRT status code object from an automatic cast. + */ + RTErrStrictType(RTErrStrictType2 const rcObj) + : m_rc(rcObj.getValue()) + { + } + + /** + * Integer constructor used by RT_SUCCESS_NP. + * + * @param rc IPRT style status code. + */ + RTErrStrictType(int32_t rc) + : m_rc(rc) + { + } + +#if 0 /** @todo figure where int32_t is long instead of int. */ + /** + * Integer constructor used by RT_SUCCESS_NP. + * + * @param rc IPRT style status code. + */ + RTErrStrictType(signed int rc) + : m_rc(rc) + { + } +#endif + + /** + * Test for success. + */ + bool success() const + { + return m_rc >= 0; + } + +private: + /** @name Try ban a number of wrong types. + * @{ */ + RTErrStrictType(uint8_t rc) : m_rc(-999) { NOREF(rc); } + RTErrStrictType(uint16_t rc) : m_rc(-999) { NOREF(rc); } + RTErrStrictType(uint32_t rc) : m_rc(-999) { NOREF(rc); } + RTErrStrictType(uint64_t rc) : m_rc(-999) { NOREF(rc); } + RTErrStrictType(int8_t rc) : m_rc(-999) { NOREF(rc); } + RTErrStrictType(int16_t rc) : m_rc(-999) { NOREF(rc); } + RTErrStrictType(int64_t rc) : m_rc(-999) { NOREF(rc); } + /** @todo fight long here - clashes with int32_t/int64_t on some platforms. */ + /** @} */ +}; +#endif /* __cplusplus */ + + +/** @def RTERR_STRICT_RC + * Indicates that RT_SUCCESS_NP, RT_SUCCESS, RT_FAILURE_NP and RT_FAILURE should + * make type enforcing at compile time. + * + * @remarks Only define this for C++ code. + */ +#if defined(__cplusplus) \ + && !defined(RTERR_STRICT_RC) \ + && ( defined(DOXYGEN_RUNNING) \ + || defined(DEBUG) \ + || defined(RT_STRICT) ) +# define RTERR_STRICT_RC 1 +#endif + + +/** @def RT_SUCCESS + * Check for success. We expect success in normal cases, that is the code path depending on + * this check is normally taken. To prevent any prediction use RT_SUCCESS_NP instead. + * + * @returns true if rc indicates success. + * @returns false if rc indicates failure. + * + * @param rc The iprt status code to test. + */ +#define RT_SUCCESS(rc) ( RT_LIKELY(RT_SUCCESS_NP(rc)) ) + +/** @def RT_SUCCESS_NP + * Check for success. Don't predict the result. + * + * @returns true if rc indicates success. + * @returns false if rc indicates failure. + * + * @param rc The iprt status code to test. + */ +#ifdef RTERR_STRICT_RC +# define RT_SUCCESS_NP(rc) ( RTErrStrictType(rc).success() ) +#else +# define RT_SUCCESS_NP(rc) ( (int)(rc) >= VINF_SUCCESS ) +#endif + +/** @def RT_FAILURE + * Check for failure, predicting unlikely. + * + * We don't expect in normal cases, that is the code path depending on this + * check is normally NOT taken. To prevent any prediction use RT_FAILURE_NP + * instead. + * + * @returns true if rc indicates failure. + * @returns false if rc indicates success. + * + * @param rc The iprt status code to test. + * + * @remarks Please structure your code to use the RT_SUCCESS() macro instead of + * RT_FAILURE() where possible, as that gives us a better shot at good + * code with the windows compilers. + */ +#define RT_FAILURE(rc) ( RT_UNLIKELY(!RT_SUCCESS_NP(rc)) ) + +/** @def RT_FAILURE_NP + * Check for failure, no prediction. + * + * @returns true if rc indicates failure. + * @returns false if rc indicates success. + * + * @param rc The iprt status code to test. + */ +#define RT_FAILURE_NP(rc) ( !RT_SUCCESS_NP(rc) ) + +RT_C_DECLS_BEGIN + +/** + * Converts a Darwin HRESULT error to an iprt status code. + * + * @returns iprt status code. + * @param iNativeCode HRESULT error code. + * @remark Darwin ring-3 only. + */ +RTDECL(int) RTErrConvertFromDarwinCOM(int32_t iNativeCode); + +/** + * Converts a Darwin IOReturn error to an iprt status code. + * + * @returns iprt status code. + * @param iNativeCode IOReturn error code. + * @remark Darwin only. + */ +RTDECL(int) RTErrConvertFromDarwinIO(int iNativeCode); + +/** + * Converts a Darwin kern_return_t error to an iprt status code. + * + * @returns iprt status code. + * @param iNativeCode kern_return_t error code. + * @remark Darwin only. + */ +RTDECL(int) RTErrConvertFromDarwinKern(int iNativeCode); + +/** + * Converts a Darwin error to an iprt status code. + * + * This will consult RTErrConvertFromDarwinKern, RTErrConvertFromDarwinIO + * and RTErrConvertFromDarwinCOM in this order. The latter is ring-3 only as it + * doesn't apply elsewhere. + * + * @returns iprt status code. + * @param iNativeCode Darwin error code. + * @remarks Darwin only. + * @remarks This is recommended over RTErrConvertFromDarwinKern and RTErrConvertFromDarwinIO + * since these are really just subsets of the same error space. + */ +RTDECL(int) RTErrConvertFromDarwin(int iNativeCode); + +/** + * Converts errno to iprt status code. + * + * @returns iprt status code. + * @param uNativeCode errno code. + */ +RTDECL(int) RTErrConvertFromErrno(unsigned uNativeCode); + +/** + * Converts a L4 errno to a iprt status code. + * + * @returns iprt status code. + * @param uNativeCode l4 errno. + * @remark L4 only. + */ +RTDECL(int) RTErrConvertFromL4Errno(unsigned uNativeCode); + +/** + * Converts NT status code to iprt status code. + * + * Needless to say, this is only available on NT and winXX targets. + * + * @returns iprt status code. + * @param lNativeCode NT status code. + * @remark Windows only. + */ +RTDECL(int) RTErrConvertFromNtStatus(long lNativeCode); + +/** + * Converts OS/2 error code to iprt status code. + * + * @returns iprt status code. + * @param uNativeCode OS/2 error code. + * @remark OS/2 only. + */ +RTDECL(int) RTErrConvertFromOS2(unsigned uNativeCode); + +/** + * Converts Win32 error code to iprt status code. + * + * @returns iprt status code. + * @param uNativeCode Win32 error code. + * @remark Windows only. + */ +RTDECL(int) RTErrConvertFromWin32(unsigned uNativeCode); + +/** + * Converts an iprt status code to a errno status code. + * + * @returns errno status code. + * @param iErr iprt status code. + */ +RTDECL(int) RTErrConvertToErrno(int iErr); + +#ifdef IN_RING3 + +/** + * iprt status code message. + */ +typedef struct RTSTATUSMSG +{ + /** Pointer to the short message string. */ + const char *pszMsgShort; + /** Pointer to the full message string. */ + const char *pszMsgFull; + /** Pointer to the define string. */ + const char *pszDefine; + /** Status code number. */ + int iCode; +} RTSTATUSMSG; +/** Pointer to iprt status code message. */ +typedef RTSTATUSMSG *PRTSTATUSMSG; +/** Pointer to const iprt status code message. */ +typedef const RTSTATUSMSG *PCRTSTATUSMSG; + +/** + * Get the message structure corresponding to a given iprt status code. + * + * @returns Pointer to read-only message description. + * @param rc The status code. + */ +RTDECL(PCRTSTATUSMSG) RTErrGet(int rc); + +/** + * Get the define corresponding to a given iprt status code. + * + * @returns Pointer to read-only string with the \#define identifier. + * @param rc The status code. + */ +#define RTErrGetDefine(rc) (RTErrGet(rc)->pszDefine) + +/** + * Get the short description corresponding to a given iprt status code. + * + * @returns Pointer to read-only string with the description. + * @param rc The status code. + */ +#define RTErrGetShort(rc) (RTErrGet(rc)->pszMsgShort) + +/** + * Get the full description corresponding to a given iprt status code. + * + * @returns Pointer to read-only string with the description. + * @param rc The status code. + */ +#define RTErrGetFull(rc) (RTErrGet(rc)->pszMsgFull) + +#ifdef RT_OS_WINDOWS +/** + * Windows error code message. + */ +typedef struct RTWINERRMSG +{ + /** Pointer to the full message string. */ + const char *pszMsgFull; + /** Pointer to the define string. */ + const char *pszDefine; + /** Error code number. */ + long iCode; +} RTWINERRMSG; +/** Pointer to Windows error code message. */ +typedef RTWINERRMSG *PRTWINERRMSG; +/** Pointer to const Windows error code message. */ +typedef const RTWINERRMSG *PCRTWINERRMSG; + +/** + * Get the message structure corresponding to a given Windows error code. + * + * @returns Pointer to read-only message description. + * @param rc The status code. + */ +RTDECL(PCRTWINERRMSG) RTErrWinGet(long rc); + +/** On windows COM errors are part of the Windows error database. */ +typedef RTWINERRMSG RTCOMERRMSG; + +#else /* !RT_OS_WINDOWS */ + +/** + * COM/XPCOM error code message. + */ +typedef struct RTCOMERRMSG +{ + /** Pointer to the full message string. */ + const char *pszMsgFull; + /** Pointer to the define string. */ + const char *pszDefine; + /** Error code number. */ + uint32_t iCode; +} RTCOMERRMSG; +#endif /* !RT_OS_WINDOWS */ +/** Pointer to a XPCOM/COM error code message. */ +typedef RTCOMERRMSG *PRTCOMERRMSG; +/** Pointer to const a XPCOM/COM error code message. */ +typedef const RTCOMERRMSG *PCRTCOMERRMSG; + +/** + * Get the message structure corresponding to a given COM/XPCOM error code. + * + * @returns Pointer to read-only message description. + * @param rc The status code. + */ +RTDECL(PCRTCOMERRMSG) RTErrCOMGet(uint32_t rc); + +#endif /* IN_RING3 */ + +/** @defgroup RTERRINFO_FLAGS_XXX RTERRINFO::fFlags + * @{ */ +/** Custom structure (the default). */ +#define RTERRINFO_FLAGS_T_CUSTOM UINT32_C(0) +/** Static structure (RTERRINFOSTATIC). */ +#define RTERRINFO_FLAGS_T_STATIC UINT32_C(1) +/** Allocated structure (RTErrInfoAlloc). */ +#define RTERRINFO_FLAGS_T_ALLOC UINT32_C(2) +/** Reserved type. */ +#define RTERRINFO_FLAGS_T_RESERVED UINT32_C(3) +/** Type mask. */ +#define RTERRINFO_FLAGS_T_MASK UINT32_C(3) +/** Error info is set. */ +#define RTERRINFO_FLAGS_SET RT_BIT_32(2) +/** Fixed flags (magic). */ +#define RTERRINFO_FLAGS_MAGIC UINT32_C(0xbabe0000) +/** The bit mask for the magic value. */ +#define RTERRINFO_FLAGS_MAGIC_MASK UINT32_C(0xffff0000) +/** @} */ + +/** + * Initializes an error info structure. + * + * @returns @a pErrInfo. + * @param pErrInfo The error info structure to init. + * @param pszMsg The message buffer. Must be at least one byte. + * @param cbMsg The size of the message buffer. + */ +DECLINLINE(PRTERRINFO) RTErrInfoInit(PRTERRINFO pErrInfo, char *pszMsg, size_t cbMsg) +{ + *pszMsg = '\0'; + + pErrInfo->fFlags = RTERRINFO_FLAGS_T_CUSTOM | RTERRINFO_FLAGS_MAGIC; + pErrInfo->rc = /*VINF_SUCCESS*/ 0; + pErrInfo->pszMsg = pszMsg; + pErrInfo->cbMsg = cbMsg; + pErrInfo->apvReserved[0] = NULL; + pErrInfo->apvReserved[1] = NULL; + + return pErrInfo; +} + +/** + * Initialize a static error info structure. + * + * @returns Pointer to the core error info structure. + * @param pStaticErrInfo The static error info structure to init. + */ +DECLINLINE(PRTERRINFO) RTErrInfoInitStatic(PRTERRINFOSTATIC pStaticErrInfo) +{ + RTErrInfoInit(&pStaticErrInfo->Core, pStaticErrInfo->szMsg, sizeof(pStaticErrInfo->szMsg)); + pStaticErrInfo->Core.fFlags = RTERRINFO_FLAGS_T_STATIC | RTERRINFO_FLAGS_MAGIC; + return &pStaticErrInfo->Core; +} + +/** + * Allocates a error info structure with a buffer at least the given size. + * + * @returns Pointer to an error info structure on success, NULL on failure. + * + * @param cbMsg The minimum message buffer size. Use 0 to get + * the default buffer size. + */ +RTDECL(PRTERRINFO) RTErrInfoAlloc(size_t cbMsg); + +/** + * Same as RTErrInfoAlloc, except that an IPRT status code is returned. + * + * @returns IPRT status code. + * + * @param cbMsg The minimum message buffer size. Use 0 to get + * the default buffer size. + * @param ppErrInfo Where to store the pointer to the allocated + * error info structure on success. This is + * always set to NULL. + */ +RTDECL(int) RTErrInfoAllocEx(size_t cbMsg, PRTERRINFO *ppErrInfo); + +/** + * Frees an error info structure allocated by RTErrInfoAlloc or + * RTErrInfoAllocEx. + * + * @param pErrInfo The error info structure. + */ +RTDECL(void) RTErrInfoFree(PRTERRINFO pErrInfo); + +/** + * Fills in the error info details. + * + * @returns @a rc. + * + * @param pErrInfo The error info structure to fill in. + * @param rc The status code to return. + * @param pszMsg The error message string. + */ +RTDECL(int) RTErrInfoSet(PRTERRINFO pErrInfo, int rc, const char *pszMsg); + +/** + * Fills in the error info details, with a sprintf style message. + * + * @returns @a rc. + * + * @param pErrInfo The error info structure to fill in. + * @param rc The status code to return. + * @param pszFormat The format string. + * @param ... The format arguments. + */ +RTDECL(int) RTErrInfoSetF(PRTERRINFO pErrInfo, int rc, const char *pszFormat, ...); + +/** + * Fills in the error info details, with a vsprintf style message. + * + * @returns @a rc. + * + * @param pErrInfo The error info structure to fill in. + * @param rc The status code to return. + * @param pszFormat The format string. + * @param va The format arguments. + */ +RTDECL(int) RTErrInfoSetV(PRTERRINFO pErrInfo, int rc, const char *pszFormat, va_list va); + +/** + * Adds more error info details. + * + * @returns @a rc. + * + * @param pErrInfo The error info structure to fill in. + * @param rc The status code to return. + * @param pszMsg The error message string to add. + */ +RTDECL(int) RTErrInfoAdd(PRTERRINFO pErrInfo, int rc, const char *pszMsg); + +/** + * Adds more error info details, with a sprintf style message. + * + * @returns @a rc. + * + * @param pErrInfo The error info structure to fill in. + * @param rc The status code to return. + * @param pszFormat The format string to add. + * @param ... The format arguments. + */ +RTDECL(int) RTErrInfoAddF(PRTERRINFO pErrInfo, int rc, const char *pszFormat, ...); + +/** + * Adds more error info details, with a vsprintf style message. + * + * @returns @a rc. + * + * @param pErrInfo The error info structure to fill in. + * @param rc The status code to return. + * @param pszFormat The format string to add. + * @param va The format arguments. + */ +RTDECL(int) RTErrInfoAddV(PRTERRINFO pErrInfo, int rc, const char *pszFormat, va_list va); + +/** + * Checks if the error info is set. + * + * @returns true if set, false if not. + * @param pErrInfo The error info structure. NULL is OK. + */ +DECLINLINE(bool) RTErrInfoIsSet(PCRTERRINFO pErrInfo) +{ + if (!pErrInfo) + return false; + return (pErrInfo->fFlags & (RTERRINFO_FLAGS_MAGIC_MASK | RTERRINFO_FLAGS_SET)) + == (RTERRINFO_FLAGS_MAGIC | RTERRINFO_FLAGS_SET); +} + +/** + * Clears the error info structure. + * + * @param pErrInfo The error info structure. NULL is OK. + */ +DECLINLINE(void) RTErrInfoClear(PRTERRINFO pErrInfo) +{ + if (pErrInfo) + { + pErrInfo->fFlags &= ~RTERRINFO_FLAGS_SET; + pErrInfo->rc = /*VINF_SUCCESS*/0; + *pErrInfo->pszMsg = '\0'; + } +} + +/** + * Storage for error variables. + * + * @remarks Do NOT touch the members! They are platform specific and what's + * where may change at any time! + */ +typedef union RTERRVARS +{ + int8_t ai8Vars[32]; + int16_t ai16Vars[16]; + int32_t ai32Vars[8]; + int64_t ai64Vars[4]; +} RTERRVARS; +/** Pointer to an error variable storage union. */ +typedef RTERRVARS *PRTERRVARS; +/** Pointer to a const error variable storage union. */ +typedef RTERRVARS const *PCRTERRVARS; + +/** + * Saves the error variables. + * + * @returns @a pVars. + * @param pVars The variable storage union. + */ +RTDECL(PRTERRVARS) RTErrVarsSave(PRTERRVARS pVars); + +/** + * Restores the error variables. + * + * @param pVars The variable storage union. + */ +RTDECL(void) RTErrVarsRestore(PCRTERRVARS pVars); + +/** + * Checks if the first variable set equals the second. + * + * @returns true if they are equal, false if not. + * @param pVars1 The first variable storage union. + * @param pVars2 The second variable storage union. + */ +RTDECL(bool) RTErrVarsAreEqual(PCRTERRVARS pVars1, PCRTERRVARS pVars2); + +/** + * Checks if the (live) error variables have changed since we saved them. + * + * @returns @c true if they have changed, @c false if not. + * @param pVars The saved variables to compare the current state + * against. + */ +RTDECL(bool) RTErrVarsHaveChanged(PCRTERRVARS pVars); + +RT_C_DECLS_END + +/** @} */ + +/** @name Status Code Ranges + * @{ */ +/** The first status code in the primary IPRT range. */ +#define RTERR_RANGE1_FIRST 0 +/** The last status code in the primary IPRT range. */ +#define RTERR_RANGE1_LAST 999 + +/** The first status code in the secondary IPRT range. */ +#define RTERR_RANGE2_FIRST 22000 +/** The last status code in the secondary IPRT range. */ +#define RTERR_RANGE2_LAST 32766 + +/** The first status code in the user range. */ +#define RTERR_USER_FIRST 1000 +/** The last status code in the user range. */ +#define RTERR_USER_LAST 21999 +/** @} */ + + +/* SED-START */ + +/** @name Misc. Status Codes + * @{ + */ +/** Success. */ +#define VINF_SUCCESS 0 + +/** General failure - DON'T USE THIS!!! */ +#define VERR_GENERAL_FAILURE (-1) +/** Invalid parameter. */ +#define VERR_INVALID_PARAMETER (-2) +/** Invalid parameter. */ +#define VWRN_INVALID_PARAMETER 2 +/** Invalid magic or cookie. */ +#define VERR_INVALID_MAGIC (-3) +/** Invalid magic or cookie. */ +#define VWRN_INVALID_MAGIC 3 +/** Invalid loader handle. */ +#define VERR_INVALID_HANDLE (-4) +/** Invalid loader handle. */ +#define VWRN_INVALID_HANDLE 4 +/** Failed to lock the address range. */ +#define VERR_LOCK_FAILED (-5) +/** Invalid memory pointer. */ +#define VERR_INVALID_POINTER (-6) +/** Failed to patch the IDT. */ +#define VERR_IDT_FAILED (-7) +/** Memory allocation failed. */ +#define VERR_NO_MEMORY (-8) +/** Already loaded. */ +#define VERR_ALREADY_LOADED (-9) +/** Permission denied. */ +#define VERR_PERMISSION_DENIED (-10) +/** Permission denied. */ +#define VINF_PERMISSION_DENIED 10 +/** Version mismatch. */ +#define VERR_VERSION_MISMATCH (-11) +/** The request function is not implemented. */ +#define VERR_NOT_IMPLEMENTED (-12) +/** Invalid flags was given. */ +#define VERR_INVALID_FLAGS (-13) + +/** Not equal. */ +#define VERR_NOT_EQUAL (-18) +/** The specified path does not point at a symbolic link. */ +#define VERR_NOT_SYMLINK (-19) +/** Failed to allocate temporary memory. */ +#define VERR_NO_TMP_MEMORY (-20) +/** Invalid file mode mask (RTFMODE). */ +#define VERR_INVALID_FMODE (-21) +/** Incorrect call order. */ +#define VERR_WRONG_ORDER (-22) +/** There is no TLS (thread local storage) available for storing the current thread. */ +#define VERR_NO_TLS_FOR_SELF (-23) +/** Failed to set the TLS (thread local storage) entry which points to our thread structure. */ +#define VERR_FAILED_TO_SET_SELF_TLS (-24) +/** Not able to allocate contiguous memory. */ +#define VERR_NO_CONT_MEMORY (-26) +/** No memory available for page table or page directory. */ +#define VERR_NO_PAGE_MEMORY (-27) +/** Already initialized. */ +#define VINF_ALREADY_INITIALIZED 28 +/** The specified thread is dead. */ +#define VERR_THREAD_IS_DEAD (-29) +/** The specified thread is not waitable. */ +#define VERR_THREAD_NOT_WAITABLE (-30) +/** Pagetable not present. */ +#define VERR_PAGE_TABLE_NOT_PRESENT (-31) +/** Invalid context. + * Typically an API was used by the wrong thread. */ +#define VERR_INVALID_CONTEXT (-32) +/** The per process timer is busy. */ +#define VERR_TIMER_BUSY (-33) +/** Address conflict. */ +#define VERR_ADDRESS_CONFLICT (-34) +/** Unresolved (unknown) host platform error. */ +#define VERR_UNRESOLVED_ERROR (-35) +/** Invalid function. */ +#define VERR_INVALID_FUNCTION (-36) +/** Not supported. */ +#define VERR_NOT_SUPPORTED (-37) +/** Not supported. */ +#define VINF_NOT_SUPPORTED 37 +/** Access denied. */ +#define VERR_ACCESS_DENIED (-38) +/** Call interrupted. */ +#define VERR_INTERRUPTED (-39) +/** Call interrupted. */ +#define VINF_INTERRUPTED 39 +/** Timeout. */ +#define VERR_TIMEOUT (-40) +/** Timeout. */ +#define VINF_TIMEOUT 40 +/** Buffer too small to save result. */ +#define VERR_BUFFER_OVERFLOW (-41) +/** Buffer too small to save result. */ +#define VINF_BUFFER_OVERFLOW 41 +/** Data size overflow. */ +#define VERR_TOO_MUCH_DATA (-42) +/** Max threads number reached. */ +#define VERR_MAX_THRDS_REACHED (-43) +/** Max process number reached. */ +#define VERR_MAX_PROCS_REACHED (-44) +/** The recipient process has refused the signal. */ +#define VERR_SIGNAL_REFUSED (-45) +/** A signal is already pending. */ +#define VERR_SIGNAL_PENDING (-46) +/** The signal being posted is not correct. */ +#define VERR_SIGNAL_INVALID (-47) +/** The state changed. + * This is a generic error message and needs a context to make sense. */ +#define VERR_STATE_CHANGED (-48) +/** Warning, the state changed. + * This is a generic error message and needs a context to make sense. */ +#define VWRN_STATE_CHANGED 48 +/** Error while parsing UUID string */ +#define VERR_INVALID_UUID_FORMAT (-49) +/** The specified process was not found. */ +#define VERR_PROCESS_NOT_FOUND (-50) +/** The process specified to a non-block wait had not exited. */ +#define VERR_PROCESS_RUNNING (-51) +/** Retry the operation. */ +#define VERR_TRY_AGAIN (-52) +/** Retry the operation. */ +#define VINF_TRY_AGAIN 52 +/** Generic parse error. */ +#define VERR_PARSE_ERROR (-53) +/** Value out of range. */ +#define VERR_OUT_OF_RANGE (-54) +/** A numeric conversion encountered a value which was too big for the target. */ +#define VERR_NUMBER_TOO_BIG (-55) +/** A numeric conversion encountered a value which was too big for the target. */ +#define VWRN_NUMBER_TOO_BIG 55 +/** The number begin converted (string) contained no digits. */ +#define VERR_NO_DIGITS (-56) +/** The number begin converted (string) contained no digits. */ +#define VWRN_NO_DIGITS 56 +/** Encountered a '-' during conversion to an unsigned value. */ +#define VERR_NEGATIVE_UNSIGNED (-57) +/** Encountered a '-' during conversion to an unsigned value. */ +#define VWRN_NEGATIVE_UNSIGNED 57 +/** Error while characters translation (unicode and so). */ +#define VERR_NO_TRANSLATION (-58) +/** Error while characters translation (unicode and so). */ +#define VWRN_NO_TRANSLATION 58 +/** Encountered unicode code point which is reserved for use as endian indicator (0xffff or 0xfffe). */ +#define VERR_CODE_POINT_ENDIAN_INDICATOR (-59) +/** Encountered unicode code point in the surrogate range (0xd800 to 0xdfff). */ +#define VERR_CODE_POINT_SURROGATE (-60) +/** A string claiming to be UTF-8 is incorrectly encoded. */ +#define VERR_INVALID_UTF8_ENCODING (-61) +/** A string claiming to be in UTF-16 is incorrectly encoded. */ +#define VERR_INVALID_UTF16_ENCODING (-62) +/** Encountered a unicode code point which cannot be represented as UTF-16. */ +#define VERR_CANT_RECODE_AS_UTF16 (-63) +/** Got an out of memory condition trying to allocate a string. */ +#define VERR_NO_STR_MEMORY (-64) +/** Got an out of memory condition trying to allocate a UTF-16 (/UCS-2) string. */ +#define VERR_NO_UTF16_MEMORY (-65) +/** Get an out of memory condition trying to allocate a code point array. */ +#define VERR_NO_CODE_POINT_MEMORY (-66) +/** Can't free the memory because it's used in mapping. */ +#define VERR_MEMORY_BUSY (-67) +/** The timer can't be started because it's already active. */ +#define VERR_TIMER_ACTIVE (-68) +/** The timer can't be stopped because it's already suspended. */ +#define VERR_TIMER_SUSPENDED (-69) +/** The operation was cancelled by the user (copy) or another thread (local ipc). */ +#define VERR_CANCELLED (-70) +/** Failed to initialize a memory object. + * Exactly what this means is OS specific. */ +#define VERR_MEMOBJ_INIT_FAILED (-71) +/** Out of memory condition when allocating memory with low physical backing. */ +#define VERR_NO_LOW_MEMORY (-72) +/** Out of memory condition when allocating physical memory (without mapping). */ +#define VERR_NO_PHYS_MEMORY (-73) +/** The address (virtual or physical) is too big. */ +#define VERR_ADDRESS_TOO_BIG (-74) +/** Failed to map a memory object. */ +#define VERR_MAP_FAILED (-75) +/** Trailing characters. */ +#define VERR_TRAILING_CHARS (-76) +/** Trailing characters. */ +#define VWRN_TRAILING_CHARS 76 +/** Trailing spaces. */ +#define VERR_TRAILING_SPACES (-77) +/** Trailing spaces. */ +#define VWRN_TRAILING_SPACES 77 +/** Generic not found error. */ +#define VERR_NOT_FOUND (-78) +/** Generic not found warning. */ +#define VWRN_NOT_FOUND 78 +/** Generic invalid state error. */ +#define VERR_INVALID_STATE (-79) +/** Generic invalid state warning. */ +#define VWRN_INVALID_STATE 79 +/** Generic out of resources error. */ +#define VERR_OUT_OF_RESOURCES (-80) +/** Generic out of resources warning. */ +#define VWRN_OUT_OF_RESOURCES 80 +/** No more handles available, too many open handles. */ +#define VERR_NO_MORE_HANDLES (-81) +/** Preemption is disabled. + * The requested operation can only be performed when preemption is enabled. */ +#define VERR_PREEMPT_DISABLED (-82) +/** End of string. */ +#define VERR_END_OF_STRING (-83) +/** End of string. */ +#define VINF_END_OF_STRING 83 +/** A page count is out of range. */ +#define VERR_PAGE_COUNT_OUT_OF_RANGE (-84) +/** Generic object destroyed status. */ +#define VERR_OBJECT_DESTROYED (-85) +/** Generic object was destroyed by the call status. */ +#define VINF_OBJECT_DESTROYED 85 +/** Generic dangling objects status. */ +#define VERR_DANGLING_OBJECTS (-86) +/** Generic dangling objects status. */ +#define VWRN_DANGLING_OBJECTS 86 +/** Invalid Base64 encoding. */ +#define VERR_INVALID_BASE64_ENCODING (-87) +/** Return instigated by a callback or similar. */ +#define VERR_CALLBACK_RETURN (-88) +/** Return instigated by a callback or similar. */ +#define VINF_CALLBACK_RETURN 88 +/** Authentication failure. */ +#define VERR_AUTHENTICATION_FAILURE (-89) +/** Not a power of two. */ +#define VERR_NOT_POWER_OF_TWO (-90) +/** Status code, typically given as a parameter, that isn't supposed to be used. */ +#define VERR_IGNORED (-91) +/** Concurrent access to the object is not allowed. */ +#define VERR_CONCURRENT_ACCESS (-92) +/** The caller does not have a reference to the object. + * This status is used when two threads is caught sharing the same object + * reference. */ +#define VERR_CALLER_NO_REFERENCE (-93) +/** Generic no change error. */ +#define VERR_NO_CHANGE (-95) +/** Generic no change info. */ +#define VINF_NO_CHANGE 95 +/** Out of memory condition when allocating executable memory. */ +#define VERR_NO_EXEC_MEMORY (-96) +/** The alignment is not supported. */ +#define VERR_UNSUPPORTED_ALIGNMENT (-97) +/** The alignment is not really supported, however we got lucky with this + * allocation. */ +#define VINF_UNSUPPORTED_ALIGNMENT 97 +/** Duplicate something. */ +#define VERR_DUPLICATE (-98) +/** Something is missing. */ +#define VERR_MISSING (-99) +/** An unexpected (/unknown) exception was caught. */ +#define VERR_UNEXPECTED_EXCEPTION (-22400) +/** Buffer underflow. */ +#define VERR_BUFFER_UNDERFLOW (-22401) +/** Buffer underflow. */ +#define VINF_BUFFER_UNDERFLOW 22401 +/** Uneven input. */ +#define VERR_UNEVEN_INPUT (-22402) +/** Something is not available or not working properly. */ +#define VERR_NOT_AVAILABLE (-22403) +/** The RTPROC_FLAGS_DETACHED flag isn't supported. */ +#define VERR_PROC_DETACH_NOT_SUPPORTED (-22404) +/** An account is restricted in a certain way. */ +#define VERR_ACCOUNT_RESTRICTED (-22405) +/** An account is restricted in a certain way. */ +#define VINF_ACCOUNT_RESTRICTED 22405 +/** Not able satisfy all the requirements of the request. */ +#define VERR_UNABLE_TO_SATISFY_REQUIREMENTS (-22406) +/** Not able satisfy all the requirements of the request. */ +#define VWRN_UNABLE_TO_SATISFY_REQUIREMENTS 22406 +/** The requested allocation is too big. */ +#define VERR_ALLOCATION_TOO_BIG (-22407) +/** Mismatch. */ +#define VERR_MISMATCH (-22408) +/** Wrong type. */ +#define VERR_WRONG_TYPE (-22409) +/** @} */ + + +/** @name Common File/Disk/Pipe/etc Status Codes + * @{ + */ +/** Unresolved (unknown) file i/o error. */ +#define VERR_FILE_IO_ERROR (-100) +/** File/Device open failed. */ +#define VERR_OPEN_FAILED (-101) +/** File not found. */ +#define VERR_FILE_NOT_FOUND (-102) +/** Path not found. */ +#define VERR_PATH_NOT_FOUND (-103) +/** Invalid (malformed) file/path name. */ +#define VERR_INVALID_NAME (-104) +/** The object in question already exists. */ +#define VERR_ALREADY_EXISTS (-105) +/** The object in question already exists. */ +#define VWRN_ALREADY_EXISTS 105 +/** Too many open files. */ +#define VERR_TOO_MANY_OPEN_FILES (-106) +/** Seek error. */ +#define VERR_SEEK (-107) +/** Seek below file start. */ +#define VERR_NEGATIVE_SEEK (-108) +/** Trying to seek on device. */ +#define VERR_SEEK_ON_DEVICE (-109) +/** Reached the end of the file. */ +#define VERR_EOF (-110) +/** Reached the end of the file. */ +#define VINF_EOF 110 +/** Generic file read error. */ +#define VERR_READ_ERROR (-111) +/** Generic file write error. */ +#define VERR_WRITE_ERROR (-112) +/** Write protect error. */ +#define VERR_WRITE_PROTECT (-113) +/** Sharing violation, file is being used by another process. */ +#define VERR_SHARING_VIOLATION (-114) +/** Unable to lock a region of a file. */ +#define VERR_FILE_LOCK_FAILED (-115) +/** File access error, another process has locked a portion of the file. */ +#define VERR_FILE_LOCK_VIOLATION (-116) +/** File or directory can't be created. */ +#define VERR_CANT_CREATE (-117) +/** Directory can't be deleted. */ +#define VERR_CANT_DELETE_DIRECTORY (-118) +/** Can't move file to another disk. */ +#define VERR_NOT_SAME_DEVICE (-119) +/** The filename or extension is too long. */ +#define VERR_FILENAME_TOO_LONG (-120) +/** Media not present in drive. */ +#define VERR_MEDIA_NOT_PRESENT (-121) +/** The type of media was not recognized. Not formatted? */ +#define VERR_MEDIA_NOT_RECOGNIZED (-122) +/** Can't unlock - region was not locked. */ +#define VERR_FILE_NOT_LOCKED (-123) +/** Unrecoverable error: lock was lost. */ +#define VERR_FILE_LOCK_LOST (-124) +/** Can't delete directory with files. */ +#define VERR_DIR_NOT_EMPTY (-125) +/** A directory operation was attempted on a non-directory object. */ +#define VERR_NOT_A_DIRECTORY (-126) +/** A non-directory operation was attempted on a directory object. */ +#define VERR_IS_A_DIRECTORY (-127) +/** Tried to grow a file beyond the limit imposed by the process or the filesystem. */ +#define VERR_FILE_TOO_BIG (-128) +/** No pending request the aio context has to wait for completion. */ +#define VERR_FILE_AIO_NO_REQUEST (-129) +/** The request could not be canceled or prepared for another transfer + * because it is still in progress. */ +#define VERR_FILE_AIO_IN_PROGRESS (-130) +/** The request could not be canceled because it already completed. */ +#define VERR_FILE_AIO_COMPLETED (-131) +/** The I/O context couldn't be destroyed because there are still pending requests. */ +#define VERR_FILE_AIO_BUSY (-132) +/** The requests couldn't be submitted because that would exceed the capacity of the context. */ +#define VERR_FILE_AIO_LIMIT_EXCEEDED (-133) +/** The request was canceled. */ +#define VERR_FILE_AIO_CANCELED (-134) +/** The request wasn't submitted so it can't be canceled. */ +#define VERR_FILE_AIO_NOT_SUBMITTED (-135) +/** A request was not prepared and thus could not be submitted. */ +#define VERR_FILE_AIO_NOT_PREPARED (-136) +/** Not all requests could be submitted due to resource shortage. */ +#define VERR_FILE_AIO_INSUFFICIENT_RESSOURCES (-137) +/** Device or resource is busy. */ +#define VERR_RESOURCE_BUSY (-138) +/** A file operation was attempted on a non-file object. */ +#define VERR_NOT_A_FILE (-139) +/** A non-file operation was attempted on a file object. */ +#define VERR_IS_A_FILE (-140) +/** Unexpected filesystem object type. */ +#define VERR_UNEXPECTED_FS_OBJ_TYPE (-141) +/** A path does not start with a root specification. */ +#define VERR_PATH_DOES_NOT_START_WITH_ROOT (-142) +/** A path is relative, expected an absolute path. */ +#define VERR_PATH_IS_RELATIVE (-143) +/** A path is not relative (start with root), expected an relative path. */ +#define VERR_PATH_IS_NOT_RELATIVE (-144) +/** Zero length path. */ +#define VERR_PATH_ZERO_LENGTH (-145) +/** There are not enough events available on the host to create the I/O context. + * This exact meaning is host platform dependent. */ +#define VERR_FILE_AIO_INSUFFICIENT_EVENTS (-146) +/** @} */ + + +/** @name Generic Filesystem I/O Status Codes + * @{ + */ +/** Unresolved (unknown) disk i/o error. */ +#define VERR_DISK_IO_ERROR (-150) +/** Invalid drive number. */ +#define VERR_INVALID_DRIVE (-151) +/** Disk is full. */ +#define VERR_DISK_FULL (-152) +/** Disk was changed. */ +#define VERR_DISK_CHANGE (-153) +/** Drive is locked. */ +#define VERR_DRIVE_LOCKED (-154) +/** The specified disk or diskette cannot be accessed. */ +#define VERR_DISK_INVALID_FORMAT (-155) +/** Too many symbolic links. */ +#define VERR_TOO_MANY_SYMLINKS (-156) +/** The OS does not support setting the time stamps on a symbolic link. */ +#define VERR_NS_SYMLINK_SET_TIME (-157) +/** The OS does not support changing the owner of a symbolic link. */ +#define VERR_NS_SYMLINK_CHANGE_OWNER (-158) +/** @} */ + + +/** @name Generic Directory Enumeration Status Codes + * @{ + */ +/** Unresolved (unknown) search error. */ +#define VERR_SEARCH_ERROR (-200) +/** No more files found. */ +#define VERR_NO_MORE_FILES (-201) +/** No more search handles available. */ +#define VERR_NO_MORE_SEARCH_HANDLES (-202) +/** RTDirReadEx() failed to retrieve the extra data which was requested. */ +#define VWRN_NO_DIRENT_INFO 203 +/** @} */ + + +/** @name Internal Processing Errors + * @{ + */ +/** Internal error - this should never happen. */ +#define VERR_INTERNAL_ERROR (-225) +/** Internal error no. 2. */ +#define VERR_INTERNAL_ERROR_2 (-226) +/** Internal error no. 3. */ +#define VERR_INTERNAL_ERROR_3 (-227) +/** Internal error no. 4. */ +#define VERR_INTERNAL_ERROR_4 (-228) +/** Internal error no. 5. */ +#define VERR_INTERNAL_ERROR_5 (-229) +/** Internal error: Unexpected status code. */ +#define VERR_IPE_UNEXPECTED_STATUS (-230) +/** Internal error: Unexpected status code. */ +#define VERR_IPE_UNEXPECTED_INFO_STATUS (-231) +/** Internal error: Unexpected status code. */ +#define VERR_IPE_UNEXPECTED_ERROR_STATUS (-232) +/** Internal error: Uninitialized status code. + * @remarks This is used by value elsewhere. */ +#define VERR_IPE_UNINITIALIZED_STATUS (-233) +/** Internal error: Supposedly unreachable default case in a switch. */ +#define VERR_IPE_NOT_REACHED_DEFAULT_CASE (-234) +/** @} */ + + +/** @name Generic Device I/O Status Codes + * @{ + */ +/** Unresolved (unknown) device i/o error. */ +#define VERR_DEV_IO_ERROR (-250) +/** Device i/o: Bad unit. */ +#define VERR_IO_BAD_UNIT (-251) +/** Device i/o: Not ready. */ +#define VERR_IO_NOT_READY (-252) +/** Device i/o: Bad command. */ +#define VERR_IO_BAD_COMMAND (-253) +/** Device i/o: CRC error. */ +#define VERR_IO_CRC (-254) +/** Device i/o: Bad length. */ +#define VERR_IO_BAD_LENGTH (-255) +/** Device i/o: Sector not found. */ +#define VERR_IO_SECTOR_NOT_FOUND (-256) +/** Device i/o: General failure. */ +#define VERR_IO_GEN_FAILURE (-257) +/** @} */ + + +/** @name Generic Pipe I/O Status Codes + * @{ + */ +/** Unresolved (unknown) pipe i/o error. */ +#define VERR_PIPE_IO_ERROR (-300) +/** Broken pipe. */ +#define VERR_BROKEN_PIPE (-301) +/** Bad pipe. */ +#define VERR_BAD_PIPE (-302) +/** Pipe is busy. */ +#define VERR_PIPE_BUSY (-303) +/** No data in pipe. */ +#define VERR_NO_DATA (-304) +/** Pipe is not connected. */ +#define VERR_PIPE_NOT_CONNECTED (-305) +/** More data available in pipe. */ +#define VERR_MORE_DATA (-306) +/** Expected read pipe, got a write pipe instead. */ +#define VERR_PIPE_NOT_READ (-307) +/** Expected write pipe, got a read pipe instead. */ +#define VERR_PIPE_NOT_WRITE (-308) +/** @} */ + + +/** @name Generic Semaphores Status Codes + * @{ + */ +/** Unresolved (unknown) semaphore error. */ +#define VERR_SEM_ERROR (-350) +/** Too many semaphores. */ +#define VERR_TOO_MANY_SEMAPHORES (-351) +/** Exclusive semaphore is owned by another process. */ +#define VERR_EXCL_SEM_ALREADY_OWNED (-352) +/** The semaphore is set and cannot be closed. */ +#define VERR_SEM_IS_SET (-353) +/** The semaphore cannot be set again. */ +#define VERR_TOO_MANY_SEM_REQUESTS (-354) +/** Attempt to release mutex not owned by caller. */ +#define VERR_NOT_OWNER (-355) +/** The semaphore has been opened too many times. */ +#define VERR_TOO_MANY_OPENS (-356) +/** The maximum posts for the event semaphore has been reached. */ +#define VERR_TOO_MANY_POSTS (-357) +/** The event semaphore has already been posted. */ +#define VERR_ALREADY_POSTED (-358) +/** The event semaphore has already been reset. */ +#define VERR_ALREADY_RESET (-359) +/** The semaphore is in use. */ +#define VERR_SEM_BUSY (-360) +/** The previous ownership of this semaphore has ended. */ +#define VERR_SEM_OWNER_DIED (-361) +/** Failed to open semaphore by name - not found. */ +#define VERR_SEM_NOT_FOUND (-362) +/** Semaphore destroyed while waiting. */ +#define VERR_SEM_DESTROYED (-363) +/** Nested ownership requests are not permitted for this semaphore type. */ +#define VERR_SEM_NESTED (-364) +/** The release call only release a semaphore nesting, i.e. the caller is still + * holding the semaphore. */ +#define VINF_SEM_NESTED (364) +/** Deadlock detected. */ +#define VERR_DEADLOCK (-365) +/** Ping-Pong listen or speak out of turn error. */ +#define VERR_SEM_OUT_OF_TURN (-366) +/** Tried to take a semaphore in a bad context. */ +#define VERR_SEM_BAD_CONTEXT (-367) +/** Don't spin for the semaphore, but it is safe to try grab it. */ +#define VINF_SEM_BAD_CONTEXT (367) +/** Wrong locking order detected. */ +#define VERR_SEM_LV_WRONG_ORDER (-368) +/** Wrong release order detected. */ +#define VERR_SEM_LV_WRONG_RELEASE_ORDER (-369) +/** Attempt to recursively enter a non-recursive lock. */ +#define VERR_SEM_LV_NESTED (-370) +/** Invalid parameters passed to the lock validator. */ +#define VERR_SEM_LV_INVALID_PARAMETER (-371) +/** The lock validator detected a deadlock. */ +#define VERR_SEM_LV_DEADLOCK (-372) +/** The lock validator detected an existing deadlock. + * The deadlock was not caused by the current operation, but existed already. */ +#define VERR_SEM_LV_EXISTING_DEADLOCK (-373) +/** Not the lock owner according our records. */ +#define VERR_SEM_LV_NOT_OWNER (-374) +/** An illegal lock upgrade was attempted. */ +#define VERR_SEM_LV_ILLEGAL_UPGRADE (-375) +/** The thread is not a valid signaller of the event. */ +#define VERR_SEM_LV_NOT_SIGNALLER (-376) +/** Internal error in the lock validator or related components. */ +#define VERR_SEM_LV_INTERNAL_ERROR (-377) +/** @} */ + + +/** @name Generic Network I/O Status Codes + * @{ + */ +/** Unresolved (unknown) network error. */ +#define VERR_NET_IO_ERROR (-400) +/** The network is busy or is out of resources. */ +#define VERR_NET_OUT_OF_RESOURCES (-401) +/** Net host name not found. */ +#define VERR_NET_HOST_NOT_FOUND (-402) +/** Network path not found. */ +#define VERR_NET_PATH_NOT_FOUND (-403) +/** General network printing error. */ +#define VERR_NET_PRINT_ERROR (-404) +/** The machine is not on the network. */ +#define VERR_NET_NO_NETWORK (-405) +/** Name is not unique on the network. */ +#define VERR_NET_NOT_UNIQUE_NAME (-406) + +/* These are BSD networking error codes - numbers correspond, don't mess! */ +/** Operation in progress. */ +#define VERR_NET_IN_PROGRESS (-436) +/** Operation already in progress. */ +#define VERR_NET_ALREADY_IN_PROGRESS (-437) +/** Attempted socket operation with a non-socket handle. + * (This includes closed handles.) */ +#define VERR_NET_NOT_SOCKET (-438) +/** Destination address required. */ +#define VERR_NET_DEST_ADDRESS_REQUIRED (-439) +/** Message too long. */ +#define VERR_NET_MSG_SIZE (-440) +/** Protocol wrong type for socket. */ +#define VERR_NET_PROTOCOL_TYPE (-441) +/** Protocol not available. */ +#define VERR_NET_PROTOCOL_NOT_AVAILABLE (-442) +/** Protocol not supported. */ +#define VERR_NET_PROTOCOL_NOT_SUPPORTED (-443) +/** Socket type not supported. */ +#define VERR_NET_SOCKET_TYPE_NOT_SUPPORTED (-444) +/** Operation not supported. */ +#define VERR_NET_OPERATION_NOT_SUPPORTED (-445) +/** Protocol family not supported. */ +#define VERR_NET_PROTOCOL_FAMILY_NOT_SUPPORTED (-446) +/** Address family not supported by protocol family. */ +#define VERR_NET_ADDRESS_FAMILY_NOT_SUPPORTED (-447) +/** Address already in use. */ +#define VERR_NET_ADDRESS_IN_USE (-448) +/** Can't assign requested address. */ +#define VERR_NET_ADDRESS_NOT_AVAILABLE (-449) +/** Network is down. */ +#define VERR_NET_DOWN (-450) +/** Network is unreachable. */ +#define VERR_NET_UNREACHABLE (-451) +/** Network dropped connection on reset. */ +#define VERR_NET_CONNECTION_RESET (-452) +/** Software caused connection abort. */ +#define VERR_NET_CONNECTION_ABORTED (-453) +/** Connection reset by peer. */ +#define VERR_NET_CONNECTION_RESET_BY_PEER (-454) +/** No buffer space available. */ +#define VERR_NET_NO_BUFFER_SPACE (-455) +/** Socket is already connected. */ +#define VERR_NET_ALREADY_CONNECTED (-456) +/** Socket is not connected. */ +#define VERR_NET_NOT_CONNECTED (-457) +/** Can't send after socket shutdown. */ +#define VERR_NET_SHUTDOWN (-458) +/** Too many references: can't splice. */ +#define VERR_NET_TOO_MANY_REFERENCES (-459) +/** Too many references: can't splice. */ +#define VERR_NET_CONNECTION_TIMED_OUT (-460) +/** Connection refused. */ +#define VERR_NET_CONNECTION_REFUSED (-461) +/* ELOOP is not net. */ +/* ENAMETOOLONG is not net. */ +/** Host is down. */ +#define VERR_NET_HOST_DOWN (-464) +/** No route to host. */ +#define VERR_NET_HOST_UNREACHABLE (-465) +/** Protocol error. */ +#define VERR_NET_PROTOCOL_ERROR (-466) +/** Incomplete packet was submitted by guest. */ +#define VERR_NET_INCOMPLETE_TX_PACKET (-467) +/** @} */ + + +/** @name TCP Status Codes + * @{ + */ +/** Stop the TCP server. */ +#define VERR_TCP_SERVER_STOP (-500) +/** The server was stopped. */ +#define VINF_TCP_SERVER_STOP 500 +/** The TCP server was shut down using RTTcpServerShutdown. */ +#define VERR_TCP_SERVER_SHUTDOWN (-501) +/** The TCP server was destroyed. */ +#define VERR_TCP_SERVER_DESTROYED (-502) +/** The TCP server has no client associated with it. */ +#define VINF_TCP_SERVER_NO_CLIENT 503 +/** @} */ + + +/** @name UDP Status Codes + * @{ + */ +/** Stop the UDP server. */ +#define VERR_UDP_SERVER_STOP (-520) +/** The server was stopped. */ +#define VINF_UDP_SERVER_STOP 520 +/** The UDP server was shut down using RTUdpServerShutdown. */ +#define VERR_UDP_SERVER_SHUTDOWN (-521) +/** The UDP server was destroyed. */ +#define VERR_UDP_SERVER_DESTROYED (-522) +/** The UDP server has no client associated with it. */ +#define VINF_UDP_SERVER_NO_CLIENT 523 +/** @} */ + + +/** @name L4 Specific Status Codes + * @{ + */ +/** Invalid offset in an L4 dataspace */ +#define VERR_L4_INVALID_DS_OFFSET (-550) +/** IPC error */ +#define VERR_IPC (-551) +/** Item already used */ +#define VERR_RESOURCE_IN_USE (-552) +/** Source/destination not found */ +#define VERR_IPC_PROCESS_NOT_FOUND (-553) +/** Receive timeout */ +#define VERR_IPC_RECEIVE_TIMEOUT (-554) +/** Send timeout */ +#define VERR_IPC_SEND_TIMEOUT (-555) +/** Receive cancelled */ +#define VERR_IPC_RECEIVE_CANCELLED (-556) +/** Send cancelled */ +#define VERR_IPC_SEND_CANCELLED (-557) +/** Receive aborted */ +#define VERR_IPC_RECEIVE_ABORTED (-558) +/** Send aborted */ +#define VERR_IPC_SEND_ABORTED (-559) +/** Couldn't map pages during receive */ +#define VERR_IPC_RECEIVE_MAP_FAILED (-560) +/** Couldn't map pages during send */ +#define VERR_IPC_SEND_MAP_FAILED (-561) +/** Send pagefault timeout in receive */ +#define VERR_IPC_RECEIVE_SEND_PF_TIMEOUT (-562) +/** Send pagefault timeout in send */ +#define VERR_IPC_SEND_SEND_PF_TIMEOUT (-563) +/** (One) receive buffer was too small, or too few buffers */ +#define VINF_IPC_RECEIVE_MSG_CUT 564 +/** (One) send buffer was too small, or too few buffers */ +#define VINF_IPC_SEND_MSG_CUT 565 +/** Dataspace manager server not found */ +#define VERR_L4_DS_MANAGER_NOT_FOUND (-566) +/** @} */ + + +/** @name Loader Status Codes. + * @{ + */ +/** Invalid executable signature. */ +#define VERR_INVALID_EXE_SIGNATURE (-600) +/** The iprt loader recognized a ELF image, but doesn't support loading it. */ +#define VERR_ELF_EXE_NOT_SUPPORTED (-601) +/** The iprt loader recognized a PE image, but doesn't support loading it. */ +#define VERR_PE_EXE_NOT_SUPPORTED (-602) +/** The iprt loader recognized a LX image, but doesn't support loading it. */ +#define VERR_LX_EXE_NOT_SUPPORTED (-603) +/** The iprt loader recognized a LE image, but doesn't support loading it. */ +#define VERR_LE_EXE_NOT_SUPPORTED (-604) +/** The iprt loader recognized a NE image, but doesn't support loading it. */ +#define VERR_NE_EXE_NOT_SUPPORTED (-605) +/** The iprt loader recognized a MZ image, but doesn't support loading it. */ +#define VERR_MZ_EXE_NOT_SUPPORTED (-606) +/** The iprt loader recognized an a.out image, but doesn't support loading it. */ +#define VERR_AOUT_EXE_NOT_SUPPORTED (-607) +/** Bad executable. */ +#define VERR_BAD_EXE_FORMAT (-608) +/** Symbol (export) not found. */ +#define VERR_SYMBOL_NOT_FOUND (-609) +/** Module not found. */ +#define VERR_MODULE_NOT_FOUND (-610) +/** The loader resolved an external symbol to an address to big for the image format. */ +#define VERR_SYMBOL_VALUE_TOO_BIG (-611) +/** The image is too big. */ +#define VERR_IMAGE_TOO_BIG (-612) +/** The image base address is to high for this image type. */ +#define VERR_IMAGE_BASE_TOO_HIGH (-614) +/** Mismatching architecture. */ +#define VERR_LDR_ARCH_MISMATCH (-615) +/** Mismatch between IPRT and native loader. */ +#define VERR_LDR_MISMATCH_NATIVE (-616) +/** Failed to resolve an imported (external) symbol. */ +#define VERR_LDR_IMPORTED_SYMBOL_NOT_FOUND (-617) +/** Generic loader failure. */ +#define VERR_LDR_GENERAL_FAILURE (-618) +/** Code signing error. */ +#define VERR_LDR_IMAGE_HASH (-619) +/** The PE loader encountered delayed imports, a feature which hasn't been implemented yet. */ +#define VERR_LDRPE_DELAY_IMPORT (-620) +/** The PE loader encountered a malformed certificate. */ +#define VERR_LDRPE_CERT_MALFORMED (-621) +/** The PE loader encountered a certificate with an unsupported type or structure revision. */ +#define VERR_LDRPE_CERT_UNSUPPORTED (-622) +/** The PE loader doesn't know how to deal with the global pointer data directory entry yet. */ +#define VERR_LDRPE_GLOBALPTR (-623) +/** The PE loader doesn't support the TLS data directory yet. */ +#define VERR_LDRPE_TLS (-624) +/** The PE loader doesn't grok the COM descriptor data directory entry. */ +#define VERR_LDRPE_COM_DESCRIPTOR (-625) +/** The PE loader encountered an unknown load config directory/header size. */ +#define VERR_LDRPE_LOAD_CONFIG_SIZE (-626) +/** The PE loader encountered a lock prefix table, a feature which hasn't been implemented yet. */ +#define VERR_LDRPE_LOCK_PREFIX_TABLE (-627) +/** The ELF loader doesn't handle foreign endianness. */ +#define VERR_LDRELF_ODD_ENDIAN (-630) +/** The ELF image is 'dynamic', the ELF loader can only deal with 'relocatable' images at present. */ +#define VERR_LDRELF_DYN (-631) +/** The ELF image is 'executable', the ELF loader can only deal with 'relocatable' images at present. */ +#define VERR_LDRELF_EXEC (-632) +/** The ELF image was created for an unsupported target machine type. */ +#define VERR_LDRELF_MACHINE (-633) +/** The ELF version is not supported. */ +#define VERR_LDRELF_VERSION (-634) +/** The ELF loader cannot handle multiple SYMTAB sections. */ +#define VERR_LDRELF_MULTIPLE_SYMTABS (-635) +/** The ELF loader encountered a relocation type which is not implemented. */ +#define VERR_LDRELF_RELOCATION_NOT_SUPPORTED (-636) +/** The ELF loader encountered a bad symbol index. */ +#define VERR_LDRELF_INVALID_SYMBOL_INDEX (-637) +/** The ELF loader encountered an invalid symbol name offset. */ +#define VERR_LDRELF_INVALID_SYMBOL_NAME_OFFSET (-638) +/** The ELF loader encountered an invalid relocation offset. */ +#define VERR_LDRELF_INVALID_RELOCATION_OFFSET (-639) +/** The ELF loader didn't find the symbol/string table for the image. */ +#define VERR_LDRELF_NO_SYMBOL_OR_NO_STRING_TABS (-640) +/** Invalid link address. */ +#define VERR_LDR_INVALID_LINK_ADDRESS (-647) +/** Invalid image relative virtual address. */ +#define VERR_LDR_INVALID_RVA (-648) +/** Invalid segment:offset address. */ +#define VERR_LDR_INVALID_SEG_OFFSET (-649) +/** @}*/ + +/** @name Debug Info Reader Status Codes. + * @{ + */ +/** The module contains no line number information. */ +#define VERR_DBG_NO_LINE_NUMBERS (-650) +/** The module contains no symbol information. */ +#define VERR_DBG_NO_SYMBOLS (-651) +/** The specified segment:offset address was invalid. Typically an attempt at + * addressing outside the segment boundary. */ +#define VERR_DBG_INVALID_ADDRESS (-652) +/** Invalid segment index. */ +#define VERR_DBG_INVALID_SEGMENT_INDEX (-653) +/** Invalid segment offset. */ +#define VERR_DBG_INVALID_SEGMENT_OFFSET (-654) +/** Invalid image relative virtual address. */ +#define VERR_DBG_INVALID_RVA (-655) +/** Invalid image relative virtual address. */ +#define VERR_DBG_SPECIAL_SEGMENT (-656) +/** Address conflict within a module/segment. + * Attempted to add a segment, symbol or line number that fully or partially + * overlaps with an existing one. */ +#define VERR_DBG_ADDRESS_CONFLICT (-657) +/** Duplicate symbol within the module. + * Attempted to add a symbol which name already exists within the module. */ +#define VERR_DBG_DUPLICATE_SYMBOL (-658) +/** The segment index specified when adding a new segment is already in use. */ +#define VERR_DBG_SEGMENT_INDEX_CONFLICT (-659) +/** No line number was found for the specified address/ordinal/whatever. */ +#define VERR_DBG_LINE_NOT_FOUND (-660) +/** The length of the symbol name is out of range. + * This means it is an empty string or that it's greater or equal to + * RTDBG_SYMBOL_NAME_LENGTH. */ +#define VERR_DBG_SYMBOL_NAME_OUT_OF_RANGE (-661) +/** The length of the file name is out of range. + * This means it is an empty string or that it's greater or equal to + * RTDBG_FILE_NAME_LENGTH. */ +#define VERR_DBG_FILE_NAME_OUT_OF_RANGE (-662) +/** The length of the segment name is out of range. + * This means it is an empty string or that it is greater or equal to + * RTDBG_SEGMENT_NAME_LENGTH. */ +#define VERR_DBG_SEGMENT_NAME_OUT_OF_RANGE (-663) +/** The specified address range wraps around. */ +#define VERR_DBG_ADDRESS_WRAP (-664) +/** The file is not a valid NM map file. */ +#define VERR_DBG_NOT_NM_MAP_FILE (-665) +/** The file is not a valid /proc/kallsyms file. */ +#define VERR_DBG_NOT_LINUX_KALLSYMS (-666) +/** No debug module interpreter matching the debug info. */ +#define VERR_DBG_NO_MATCHING_INTERPRETER (-667) +/** Bad DWARF line number header. */ +#define VERR_DWARF_BAD_LINE_NUMBER_HEADER (-668) +/** Unexpected end of DWARF unit. */ +#define VERR_DWARF_UNEXPECTED_END (-669) +/** DWARF LEB value overflows the decoder type. */ +#define VERR_DWARF_LEB_OVERFLOW (-670) +/** Bad DWARF extended line number opcode. */ +#define VERR_DWARF_BAD_LNE (-671) +/** Bad DWARF string. */ +#define VERR_DWARF_BAD_STRING (-672) +/** Bad DWARF position. */ +#define VERR_DWARF_BAD_POS (-673) +/** Bad DWARF info. */ +#define VERR_DWARF_BAD_INFO (-674) +/** Bad DWARF abbreviation data. */ +#define VERR_DWARF_BAD_ABBREV (-675) +/** A DWARF abbreviation was not found. */ +#define VERR_DWARF_ABBREV_NOT_FOUND (-676) +/** Encountered an unknown attribute form. */ +#define VERR_DWARF_UNKNOWN_FORM (-677) +/** Encountered an unexpected attribute form. */ +#define VERR_DWARF_UNEXPECTED_FORM (-678) +/** Unfinished code. */ +#define VERR_DWARF_TODO (-679) +/** Unknown location opcode. */ +#define VERR_DWARF_UNKNOWN_LOC_OPCODE (-680) +/** Expression stack overflow. */ +#define VERR_DWARF_STACK_OVERFLOW (-681) +/** Expression stack underflow. */ +#define VERR_DWARF_STACK_UNDERFLOW (-682) +/** Internal processing error in the DWARF code. */ +#define VERR_DWARF_IPE (-683) +/** Invalid configuration property value. */ +#define VERR_DBG_CFG_INVALID_VALUE (-684) +/** Not an integer property. */ +#define VERR_DBG_CFG_NOT_UINT_PROP (-685) +/** Deferred loading of information failed. */ +#define VERR_DBG_DEFERRED_LOAD_FAILED (-686) +/** Unfinished debug info reader code. */ +#define VERR_DBG_TODO (-687) +/** Found file, but it didn't match the search criteria. */ +#define VERR_DBG_FILE_MISMATCH (-688) +/** Internal processing error in the debug module reader code. */ +#define VERR_DBG_MOD_IPE (-689) +/** The symbol size was adjusted while adding it. */ +#define VINF_DBG_ADJUSTED_SYM_SIZE 690 +/** Unable to parse the CodeView debug information. */ +#define VERR_CV_BAD_FORMAT (-691) +/** Unfinished CodeView debug information feature. */ +#define VERR_CV_TODO (-692) +/** Internal processing error the CodeView debug information reader. */ +#define VERR_CV_IPE (-693) +/** @} */ + +/** @name Request Packet Status Codes. + * @{ + */ +/** Invalid RT request type. + * For the RTReqAlloc() case, the caller just specified an illegal enmType. For + * all the other occurrences it means indicates corruption, broken logic, or stupid + * interface user. */ +#define VERR_RT_REQUEST_INVALID_TYPE (-700) +/** Invalid RT request state. + * The state of the request packet was not the expected and accepted one(s). Either + * the interface user screwed up, or we've got corruption/broken logic. */ +#define VERR_RT_REQUEST_STATE (-701) +/** Invalid RT request packet. + * One or more of the RT controlled packet members didn't contain the correct + * values. Some thing's broken. */ +#define VERR_RT_REQUEST_INVALID_PACKAGE (-702) +/** The status field has not been updated yet as the request is still + * pending completion. Someone queried the iStatus field before the request + * has been fully processed. */ +#define VERR_RT_REQUEST_STATUS_STILL_PENDING (-703) +/** The request has been freed, don't read the status now. + * Someone is reading the iStatus field of a freed request packet. */ +#define VERR_RT_REQUEST_STATUS_FREED (-704) +/** @} */ + +/** @name Environment Status Code + * @{ + */ +/** The specified environment variable was not found. (RTEnvGetEx) */ +#define VERR_ENV_VAR_NOT_FOUND (-750) +/** The specified environment variable was not found. (RTEnvUnsetEx) */ +#define VINF_ENV_VAR_NOT_FOUND (750) +/** Unable to translate all the variables in the default environment due to + * codeset issues (LANG / LC_ALL / LC_CTYPE). */ +#define VWRN_ENV_NOT_FULLY_TRANSLATED (751) +/** Invalid environment variable name. */ +#define VERR_ENV_INVALID_VAR_NAME (-752) +/** The environment variable is an unset record. */ +#define VINF_ENV_VAR_UNSET (753) +/** The environment variable has been recorded as being unset. */ +#define VERR_ENV_VAR_UNSET (-753) +/** @} */ + +/** @name Multiprocessor Status Codes. + * @{ + */ +/** The specified cpu is offline. */ +#define VERR_CPU_OFFLINE (-800) +/** The specified cpu was not found. */ +#define VERR_CPU_NOT_FOUND (-801) +/** Not all of the requested CPUs showed up in the PFNRTMPWORKER. */ +#define VERR_NOT_ALL_CPUS_SHOWED (-802) +/** Internal processing error in the RTMp code.*/ +#define VERR_CPU_IPE_1 (-803) +/** @} */ + +/** @name RTGetOpt status codes + * @{ */ +/** RTGetOpt: Command line option not recognized. */ +#define VERR_GETOPT_UNKNOWN_OPTION (-825) +/** RTGetOpt: Command line option needs argument. */ +#define VERR_GETOPT_REQUIRED_ARGUMENT_MISSING (-826) +/** RTGetOpt: Command line option has argument with bad format. */ +#define VERR_GETOPT_INVALID_ARGUMENT_FORMAT (-827) +/** RTGetOpt: Not an option. */ +#define VINF_GETOPT_NOT_OPTION 828 +/** RTGetOpt: Command line option needs an index. */ +#define VERR_GETOPT_INDEX_MISSING (-829) +/** @} */ + +/** @name RTCache status codes + * @{ */ +/** RTCache: cache is full. */ +#define VERR_CACHE_FULL (-850) +/** RTCache: cache is empty. */ +#define VERR_CACHE_EMPTY (-851) +/** @} */ + +/** @name RTMemCache status codes + * @{ */ +/** Reached the max cache size. */ +#define VERR_MEM_CACHE_MAX_SIZE (-855) +/** @} */ + +/** @name RTS3 status codes + * @{ */ +/** Access denied error. */ +#define VERR_S3_ACCESS_DENIED (-875) +/** The bucket/key wasn't found. */ +#define VERR_S3_NOT_FOUND (-876) +/** Bucket already exists. */ +#define VERR_S3_BUCKET_ALREADY_EXISTS (-877) +/** Can't delete bucket with keys. */ +#define VERR_S3_BUCKET_NOT_EMPTY (-878) +/** The current operation was canceled. */ +#define VERR_S3_CANCELED (-879) +/** @} */ + +/** @name HTTP status codes + * @{ */ +/** HTTP initialization failed. */ +#define VERR_HTTP_INIT_FAILED (-885) +/** The server has not found anything matching the URI given. */ +#define VERR_HTTP_NOT_FOUND (-886) +/** The request is for something forbidden. Authorization will not help. */ +#define VERR_HTTP_ACCESS_DENIED (-887) +/** The server did not understand the request due to bad syntax. */ +#define VERR_HTTP_BAD_REQUEST (-888) +/** Couldn't connect to the server (proxy?). */ +#define VERR_HTTP_COULDNT_CONNECT (-889) +/** SSL connection error. */ +#define VERR_HTTP_SSL_CONNECT_ERROR (-890) +/** CAcert is missing or has the wrong format. */ +#define VERR_HTTP_CACERT_WRONG_FORMAT (-891) +/** Certificate cannot be authenticated with the given CA certificates. */ +#define VERR_HTTP_CACERT_CANNOT_AUTHENTICATE (-892) +/** The current HTTP request was forcefully aborted */ +#define VERR_HTTP_ABORTED (-893) +/** Request was redirected. */ +#define VERR_HTTP_REDIRECTED (-894) +/** @} */ + +/** @name RTManifest status codes + * @{ */ +/** A digest type used in the manifest file isn't supported. */ +#define VERR_MANIFEST_UNSUPPORTED_DIGEST_TYPE (-900) +/** An entry in the manifest file couldn't be interpreted correctly. */ +#define VERR_MANIFEST_WRONG_FILE_FORMAT (-901) +/** A digest doesn't match the corresponding file. */ +#define VERR_MANIFEST_DIGEST_MISMATCH (-902) +/** The file list doesn't match to the content of the manifest file. */ +#define VERR_MANIFEST_FILE_MISMATCH (-903) +/** The specified attribute (name) was not found in the manifest. */ +#define VERR_MANIFEST_ATTR_NOT_FOUND (-904) +/** The attribute type did not match. */ +#define VERR_MANIFEST_ATTR_TYPE_MISMATCH (-905) +/** No attribute of the specified types was found. */ +#define VERR_MANIFEST_ATTR_TYPE_NOT_FOUND (-906) +/** @} */ + +/** @name RTTar status codes + * @{ */ +/** The checksum of a tar header record doesn't match. */ +#define VERR_TAR_CHKSUM_MISMATCH (-925) +/** The tar end of file record was read. */ +#define VERR_TAR_END_OF_FILE (-926) +/** The tar file ended unexpectedly. */ +#define VERR_TAR_UNEXPECTED_EOS (-927) +/** The tar termination records was encountered without reaching the end of + * the input stream. */ +#define VERR_TAR_EOS_MORE_INPUT (-928) +/** A number tar header field was malformed. */ +#define VERR_TAR_BAD_NUM_FIELD (-929) +/** A numeric tar header field was not terminated correctly. */ +#define VERR_TAR_BAD_NUM_FIELD_TERM (-930) +/** A number tar header field was encoded using base-256 which this + * tar implementation currently does not support. */ +#define VERR_TAR_BASE_256_NOT_SUPPORTED (-931) +/** A number tar header field yielded a value too large for the internal + * variable of the tar interpreter. */ +#define VERR_TAR_NUM_VALUE_TOO_LARGE (-932) +/** The combined minor and major device number type is too small to hold the + * value stored in the tar header. */ +#define VERR_TAR_DEV_VALUE_TOO_LARGE (-933) +/** The mode field in a tar header is bad. */ +#define VERR_TAR_BAD_MODE_FIELD (-934) +/** The mode field should not include the type. */ +#define VERR_TAR_MODE_WITH_TYPE (-935) +/** The size field should be zero for links and symlinks. */ +#define VERR_TAR_SIZE_NOT_ZERO (-936) +/** Encountered an unknown type flag. */ +#define VERR_TAR_UNKNOWN_TYPE_FLAG (-937) +/** The tar header is all zeros. */ +#define VERR_TAR_ZERO_HEADER (-938) +/** Not a uniform standard tape v0.0 archive header. */ +#define VERR_TAR_NOT_USTAR_V00 (-939) +/** The name is empty. */ +#define VERR_TAR_EMPTY_NAME (-940) +/** A non-directory entry has a name ending with a slash. */ +#define VERR_TAR_NON_DIR_ENDS_WITH_SLASH (-941) +/** Encountered an unsupported portable archive exchange (pax) header. */ +#define VERR_TAR_UNSUPPORTED_PAX_TYPE (-942) +/** Encountered an unsupported Solaris Tar extension. */ +#define VERR_TAR_UNSUPPORTED_SOLARIS_HDR_TYPE (-943) +/** Encountered an unsupported GNU Tar extension. */ +#define VERR_TAR_UNSUPPORTED_GNU_HDR_TYPE (-944) +/** Malformed checksum field in the tar header. */ +#define VERR_TAR_BAD_CHKSUM_FIELD (-945) +/** Malformed checksum field in the tar header. */ +#define VERR_TAR_MALFORMED_GNU_LONGXXXX (-946) +/** Too long name or link string. */ +#define VERR_TAR_NAME_TOO_LONG (-947) +/** A directory entry in the archive. */ +#define VINF_TAR_DIR_PATH (948) +/** @} */ + +/** @name RTPoll status codes + * @{ */ +/** The handle is not pollable. */ +#define VERR_POLL_HANDLE_NOT_POLLABLE (-950) +/** The handle ID is already present in the poll set. */ +#define VERR_POLL_HANDLE_ID_EXISTS (-951) +/** The handle ID was not found in the set. */ +#define VERR_POLL_HANDLE_ID_NOT_FOUND (-952) +/** The poll set is full. */ +#define VERR_POLL_SET_IS_FULL (-953) +/** @} */ + +/** @name Pkzip status codes + * @{ */ +/** No end of central directory record found. */ +#define VERR_PKZIP_NO_EOCB (-960) +/** Too long name string. */ +#define VERR_PKZIP_NAME_TOO_LONG (-961) +/** Local file header corrupt. */ +#define VERR_PKZIP_BAD_LF_HEADER (-962) +/** Central directory file header corrupt. */ +#define VERR_PKZIP_BAD_CDF_HEADER (-963) +/** Encountered an unknown type flag. */ +#define VERR_PKZIP_UNKNOWN_TYPE_FLAG (-964) +/** Found a ZIP64 Extra Information Field in a ZIP32 file. */ +#define VERR_PKZIP_ZIP64EX_IN_ZIP32 (-965) + + +/** @name RTZip status codes + * @{ */ +/** Generic zip error. */ +#define VERR_ZIP_ERROR (-22000) +/** The compressed data was corrupted. */ +#define VERR_ZIP_CORRUPTED (-22001) +/** Ran out of memory while compressing or uncompressing. */ +#define VERR_ZIP_NO_MEMORY (-22002) +/** The compression format version is unsupported. */ +#define VERR_ZIP_UNSUPPORTED_VERSION (-22003) +/** The compression method is unsupported. */ +#define VERR_ZIP_UNSUPPORTED_METHOD (-22004) +/** The compressed data started with a bad header. */ +#define VERR_ZIP_BAD_HEADER (-22005) +/** @} */ + +/** @name RTVfs status codes + * @{ */ +/** The VFS chain specification does not have a valid prefix. */ +#define VERR_VFS_CHAIN_NO_PREFIX (-22100) +/** The VFS chain specification is empty. */ +#define VERR_VFS_CHAIN_EMPTY (-22101) +/** Expected an element. */ +#define VERR_VFS_CHAIN_EXPECTED_ELEMENT (-22102) +/** The VFS object type is not known. */ +#define VERR_VFS_CHAIN_UNKNOWN_TYPE (-22103) +/** Expected a left parentheses. */ +#define VERR_VFS_CHAIN_EXPECTED_LEFT_PARENTHESES (-22104) +/** Expected a right parentheses. */ +#define VERR_VFS_CHAIN_EXPECTED_RIGHT_PARENTHESES (-22105) +/** Expected a provider name. */ +#define VERR_VFS_CHAIN_EXPECTED_PROVIDER_NAME (-22106) +/** Expected an action (> or |). */ +#define VERR_VFS_CHAIN_EXPECTED_ACTION (-22107) +/** Only one action element is currently supported. */ +#define VERR_VFS_CHAIN_MULTIPLE_ACTIONS (-22108) +/** Expected to find a driving action (>), but there is none. */ +#define VERR_VFS_CHAIN_NO_ACTION (-22109) +/** Expected pipe action. */ +#define VERR_VFS_CHAIN_EXPECTED_PIPE (-22110) +/** Unexpected action type. */ +#define VERR_VFS_CHAIN_UNEXPECTED_ACTION_TYPE (-22111) +/** @} */ + +/** @name RTDvm status codes + * @{ */ +/** The volume map doesn't contain any valid volume. */ +#define VERR_DVM_MAP_EMPTY (-22200) +/** There is no volume behind the current one. */ +#define VERR_DVM_MAP_NO_VOLUME (-22201) +/** @} */ + +/** @name Logger status codes + * @{ */ +/** The internal logger revision did not match. */ +#define VERR_LOG_REVISION_MISMATCH (-22300) +/** @} */ + +/* see above, 22400..22499 is used for misc codes! */ + +/** @name Logger status codes + * @{ */ +/** Power off is not supported by the hardware or the OS. */ +#define VERR_SYS_CANNOT_POWER_OFF (-22500) +/** The halt action was requested, but the OS may actually power + * off the machine. */ +#define VINF_SYS_MAY_POWER_OFF (22501) +/** Shutdown failed. */ +#define VERR_SYS_SHUTDOWN_FAILED (-22502) +/** @} */ + +/** @name Filesystem status codes + * @{ */ +/** Filesystem can't be opened because it is corrupt. */ +#define VERR_FILESYSTEM_CORRUPT (-22600) +/** @} */ + +/** @name RTZipXar status codes. + * @{ */ +/** Wrong magic value. */ +#define VERR_XAR_WRONG_MAGIC (-22700) +/** Bad header size. */ +#define VERR_XAR_BAD_HDR_SIZE (-22701) +/** Unsupported version. */ +#define VERR_XAR_UNSUPPORTED_VERSION (-22702) +/** Unsupported hashing function. */ +#define VERR_XAR_UNSUPPORTED_HASH_FUNCTION (-22703) +/** The table of content (TOC) is too small and therefore can't be valid. */ +#define VERR_XAR_TOC_TOO_SMALL (-22704) +/** The table of content (TOC) is too big. */ +#define VERR_XAR_TOC_TOO_BIG (-22705) +/** The compressed table of content is too big. */ +#define VERR_XAR_TOC_TOO_BIG_COMPRESSED (-22706) +/** The uncompressed table of content size in the header didn't match what + * ZLib returned. */ +#define VERR_XAR_TOC_UNCOMP_SIZE_MISMATCH (-22707) +/** The table of content string length didn't match the size specified in the + * header. */ +#define VERR_XAR_TOC_STRLEN_MISMATCH (-22708) +/** The table of content isn't valid UTF-8. */ +#define VERR_XAR_TOC_UTF8_ENCODING (-22709) +/** XML error while parsing the table of content. */ +#define VERR_XAR_TOC_XML_PARSE_ERROR (-22710) +/** The table of content XML document does not have a toc element. */ +#define VERR_XML_TOC_ELEMENT_MISSING (-22711) +/** The table of content XML element (toc) has siblings, we expected it to be + * an only child or the root element (xar). */ +#define VERR_XML_TOC_ELEMENT_HAS_SIBLINGS (-22712) +/** The XAR table of content digest doesn't match. */ +#define VERR_XAR_TOC_DIGEST_MISMATCH (-22713) +/** Bad or missing XAR checksum element. */ +#define VERR_XAR_BAD_CHECKSUM_ELEMENT (-22714) +/** The hash function in the header doesn't match the one in the table of + * content. */ +#define VERR_XAR_HASH_FUNCTION_MISMATCH (-22715) +/** Bad digest length encountered in the table of content. */ +#define VERR_XAR_BAD_DIGEST_LENGTH (-22716) +/** The order of elements in the XAR file does not lend it self to expansion + * from via an I/O stream. */ +#define VERR_XAR_NOT_STREAMBLE_ELEMENT_ORDER (-22717) +/** Missing offset element in table of content sub-element. */ +#define VERR_XAR_MISSING_OFFSET_ELEMENT (-22718) +/** Bad offset element in table of content sub-element. */ +#define VERR_XAR_BAD_OFFSET_ELEMENT (-22719) +/** Missing size element in table of content sub-element. */ +#define VERR_XAR_MISSING_SIZE_ELEMENT (-22720) +/** Bad size element in table of content sub-element. */ +#define VERR_XAR_BAD_SIZE_ELEMENT (-22721) +/** Missing length element in table of content sub-element. */ +#define VERR_XAR_MISSING_LENGTH_ELEMENT (-22722) +/** Bad length element in table of content sub-element. */ +#define VERR_XAR_BAD_LENGTH_ELEMENT (-22723) +/** Bad file element in XAR table of content. */ +#define VERR_XAR_BAD_FILE_ELEMENT (-22724) +/** Missing data element for XAR file. */ +#define VERR_XAR_MISSING_DATA_ELEMENT (-22725) +/** Unknown XAR file type value. */ +#define VERR_XAR_UNKNOWN_FILE_TYPE (-22726) +/** Missing encoding element for XAR data stream. */ +#define VERR_XAR_NO_ENCODING (-22727) +/** Bad timestamp for XAR file. */ +#define VERR_XAR_BAD_FILE_TIMESTAMP (-22728) +/** Bad file mode for XAR file. */ +#define VERR_XAR_BAD_FILE_MODE (-22729) +/** Bad file user id for XAR file. */ +#define VERR_XAR_BAD_FILE_UID (-22730) +/** Bad file group id for XAR file. */ +#define VERR_XAR_BAD_FILE_GID (-22731) +/** Bad file inode device number for XAR file. */ +#define VERR_XAR_BAD_FILE_DEVICE_NO (-22732) +/** Bad file inode number for XAR file. */ +#define VERR_XAR_BAD_FILE_INODE (-22733) +/** Invalid name for XAR file. */ +#define VERR_XAR_INVALID_FILE_NAME (-22734) +/** The message digest of the extracted data does not match the one supplied. */ +#define VERR_XAR_EXTRACTED_HASH_MISMATCH (-22735) +/** The extracted data has exceeded the expected size. */ +#define VERR_XAR_EXTRACTED_SIZE_EXCEEDED (-22736) +/** The message digest of the archived data does not match the one supplied. */ +#define VERR_XAR_ARCHIVED_HASH_MISMATCH (-22737) +/** The decompressor completed without using all the input data. */ +#define VERR_XAR_UNUSED_ARCHIVED_DATA (-22738) +/** Expected the archived and extracted XAR data sizes to be the same for + * uncompressed data. */ +#define VERR_XAR_ARCHIVED_AND_EXTRACTED_SIZES_MISMATCH (-22739) +/** @} */ + +/** @name RTX509 status codes + * @{ */ +/** Error reading a certificate in PEM format from BIO. */ +#define VERR_X509_READING_CERT_FROM_BIO (-23100) +/** Error extracting a public key from the certificate. */ +#define VERR_X509_EXTRACT_PUBKEY_FROM_CERT (-23101) +/** Error extracting RSA from the public key. */ +#define VERR_X509_EXTRACT_RSA_FROM_PUBLIC_KEY (-23102) +/** Signature verification failed. */ +#define VERR_X509_RSA_VERIFICATION_FUILURE (-23103) +/** Basic constraints were not found. */ +#define VERR_X509_NO_BASIC_CONSTARAINTS (-23104) +/** Error getting extensions from the certificate. */ +#define VERR_X509_GETTING_EXTENSION_FROM_CERT (-23105) +/** Error getting a data from the extension. */ +#define VERR_X509_GETTING_DATA_FROM_EXTENSION (-23106) +/** Error formatting an extension. */ +#define VERR_X509_PRINT_EXTENSION_TO_BIO (-23107) +/** X509 certificate verification error. */ +#define VERR_X509_CERTIFICATE_VERIFICATION_FAILURE (-23108) +/** X509 certificate isn't self signed. */ +#define VERR_X509_NOT_SELFSIGNED_CERTIFICATE (-23109) +/** Warning X509 certificate isn't self signed. */ +#define VINF_X509_NOT_SELFSIGNED_CERTIFICATE 23109 +/** @} */ + +/** @name RTAsn1 status codes + * @{ */ +/** Temporary place holder. */ +#define VERR_ASN1_ERROR (-22800) +/** Encountered an ASN.1 string type that is not supported. */ +#define VERR_ASN1_STRING_TYPE_NOT_IMPLEMENTED (-22801) +/** Invalid ASN.1 UTF-8 STRING encoding. */ +#define VERR_ASN1_INVALID_UTF8_STRING_ENCODING (-22802) +/** Invalid ASN.1 NUMERIC STRING encoding. */ +#define VERR_ASN1_INVALID_NUMERIC_STRING_ENCODING (-22803) +/** Invalid ASN.1 PRINTABLE STRING encoding. */ +#define VERR_ASN1_INVALID_PRINTABLE_STRING_ENCODING (-22804) +/** Invalid ASN.1 T61/TELETEX STRING encoding. */ +#define VERR_ASN1_INVALID_T61_STRING_ENCODING (-22805) +/** Invalid ASN.1 VIDEOTEX STRING encoding. */ +#define VERR_ASN1_INVALID_VIDEOTEX_STRING_ENCODING (-22806) +/** Invalid ASN.1 IA5 STRING encoding. */ +#define VERR_ASN1_INVALID_IA5_STRING_ENCODING (-22807) +/** Invalid ASN.1 GRAPHIC STRING encoding. */ +#define VERR_ASN1_INVALID_GRAPHIC_STRING_ENCODING (-22808) +/** Invalid ASN.1 ISO-646/VISIBLE STRING encoding. */ +#define VERR_ASN1_INVALID_VISIBLE_STRING_ENCODING (-22809) +/** Invalid ASN.1 GENERAL STRING encoding. */ +#define VERR_ASN1_INVALID_GENERAL_STRING_ENCODING (-22810) +/** Invalid ASN.1 UNIVERSAL STRING encoding. */ +#define VERR_ASN1_INVALID_UNIVERSAL_STRING_ENCODING (-22811) +/** Invalid ASN.1 BMP STRING encoding. */ +#define VERR_ASN1_INVALID_BMP_STRING_ENCODING (-22812) +/** Invalid ASN.1 OBJECT IDENTIFIER encoding. */ +#define VERR_ASN1_INVALID_OBJID_ENCODING (-22813) +/** A component value of an ASN.1 OBJECT IDENTIFIER is too big for our + * internal representation (32-bits). */ +#define VERR_ASN1_OBJID_COMPONENT_TOO_BIG (-22814) +/** Too many components in an ASN.1 OBJECT IDENTIFIER for our internal + * representation. */ +#define VERR_ASN1_OBJID_TOO_MANY_COMPONENTS (-22815) +/** The dotted-string representation of an ASN.1 OBJECT IDENTIFIER would be too + * long for our internal representation. */ +#define VERR_ASN1_OBJID_TOO_LONG_STRING_FORM (-22816) +/** Invalid dotted string. */ +#define VERR_ASN1_OBJID_INVALID_DOTTED_STRING (-22817) +/** Constructed string type not implemented. */ +#define VERR_ASN1_CONSTRUCTED_STRING_NOT_IMPL (-22818) +/** Expected a different string tag. */ +#define VERR_ASN1_STRING_TAG_MISMATCH (-22819) +/** Expected a different time tag. */ +#define VERR_ASN1_TIME_TAG_MISMATCH (-22820) +/** More unconsumed data available. */ +#define VINF_ASN1_MORE_DATA (22821) +/** RTAsnEncodeWriteHeader return code indicating that nothing was written + * and the content should be skipped as well. */ +#define VINF_ASN1_NOT_ENCODED (22822) +/** Unknown escape sequence encountered in TeletexString. */ +#define VERR_ASN1_TELETEX_UNKNOWN_ESC_SEQ (-22823) +/** Unsupported escape sequence encountered in TeletexString. */ +#define VERR_ASN1_TELETEX_UNSUPPORTED_ESC_SEQ (-22824) +/** Unsupported character set. */ +#define VERR_ASN1_TELETEX_UNSUPPORTED_CHARSET (-22825) +/** ASN.1 object has no virtual method table. */ +#define VERR_ASN1_NO_VTABLE (-22826) +/** ASN.1 object has no pfnCheckSanity method. */ +#define VERR_ASN1_NO_CHECK_SANITY_METHOD (-22827) +/** ASN.1 object is not present */ +#define VERR_ASN1_NOT_PRESENT (-22828) +/** There are unconsumed bytes after decoding an ASN.1 object. */ +#define VERR_ASN1_CURSOR_NOT_AT_END (-22829) +/** Long ASN.1 tag form is not implemented. */ +#define VERR_ASN1_CURSOR_LONG_TAG (-22830) +/** Bad ASN.1 object length encoding. */ +#define VERR_ASN1_CURSOR_BAD_LENGTH_ENCODING (-22831) +/** Indefinite length form is against the rules. */ +#define VERR_ASN1_CURSOR_ILLEGAL_IDEFINITE_LENGTH (-22832) +/** Indefinite length form is not implemented. */ +#define VERR_ASN1_CURSOR_IDEFINITE_LENGTH_NOT_SUP (-22833) +/** ASN.1 object length goes beyond the end of the byte stream being decoded. */ +#define VERR_ASN1_CURSOR_BAD_LENGTH (-22834) +/** Not more data in ASN.1 byte stream. */ +#define VERR_ASN1_CURSOR_NO_MORE_DATA (-22835) +/** Too little data in ASN.1 byte stream. */ +#define VERR_ASN1_CURSOR_TOO_LITTLE_DATA_LEFT (-22836) +/** Constructed string is not according to the encoding rules. */ +#define VERR_ASN1_CURSOR_ILLEGAL_CONSTRUCTED_STRING (-22837) +/** Unexpected ASN.1 tag encountered while decoding. */ +#define VERR_ASN1_CURSOR_TAG_MISMATCH (-22838) +/** Unexpected ASN.1 tag class/flag encountered while decoding. */ +#define VERR_ASN1_CURSOR_TAG_FLAG_CLASS_MISMATCH (-22839) +/** ASN.1 bit string object is out of bounds. */ +#define VERR_ASN1_BITSTRING_OUT_OF_BOUNDS (-22840) +/** Bad ASN.1 time object. */ +#define VERR_ASN1_TIME_BAD_NORMALIZE_INPUT (-22841) +/** Failed to normalize ASN.1 time object. */ +#define VERR_ASN1_TIME_NORMALIZE_ERROR (-22842) +/** Normalization of ASN.1 time object didn't work out. */ +#define VERR_ASN1_TIME_NORMALIZE_MISMATCH (-22843) +/** Invalid ASN.1 UTC TIME encoding. */ +#define VERR_ASN1_INVALID_UTC_TIME_ENCODING (-22844) +/** Invalid ASN.1 GENERALIZED TIME encoding. */ +#define VERR_ASN1_INVALID_GENERALIZED_TIME_ENCODING (-22845) +/** Invalid ASN.1 BOOLEAN encoding. */ +#define VERR_ASN1_INVALID_BOOLEAN_ENCODING (-22846) +/** Invalid ASN.1 NULL encoding. */ +#define VERR_ASN1_INVALID_NULL_ENCODING (-22847) +/** Invalid ASN.1 BIT STRING encoding. */ +#define VERR_ASN1_INVALID_BITSTRING_ENCODING (-22848) +/** Unimplemented ASN.1 tag reached the RTAsn1DynType code. */ +#define VERR_ASN1_DYNTYPE_TAG_NOT_IMPL (-22849) +/** ASN.1 tag and flags/class mismatch in RTAsn1DynType code. */ +#define VERR_ASN1_DYNTYPE_BAD_TAG (-22850) +/** Unexpected ASN.1 fake/dummy object. */ +#define VERR_ASN1_DUMMY_OBJECT (-22851) +/** ASN.1 object is too long. */ +#define VERR_ASN1_TOO_LONG (-22852) +/** Expected primitive ASN.1 object. */ +#define VERR_ASN1_EXPECTED_PRIMITIVE (-22853) +/** Expected valid data pointer for ASN.1 object. */ +#define VERR_ASN1_INVALID_DATA_POINTER (-22854) +/** The ASN.1 encoding is too deeply nested for the decoder. */ +#define VERR_ASN1_TOO_DEEPLY_NESTED (-22855) + +/** ANS.1 internal error 1. */ +#define VERR_ASN1_INTERNAL_ERROR_1 (-22895) +/** ANS.1 internal error 2. */ +#define VERR_ASN1_INTERNAL_ERROR_2 (-22896) +/** ANS.1 internal error 3. */ +#define VERR_ASN1_INTERNAL_ERROR_3 (-22897) +/** ANS.1 internal error 4. */ +#define VERR_ASN1_INTERNAL_ERROR_4 (-22898) +/** ANS.1 internal error 5. */ +#define VERR_ASN1_INTERNAL_ERROR_5 (-22899) +/** @} */ + +/** @name More RTLdr status codes. + * @{ */ +/** Image Verification Failure: No Authenticode Signature. */ +#define VERR_LDRVI_NOT_SIGNED (-22900) +/** Image Verification Warning: No Authenticode Signature, but on whitelist. */ +#define VINF_LDRVI_NOT_SIGNED (22900) +/** Image Verification Failure: Error reading image headers. */ +#define VERR_LDRVI_READ_ERROR_HDR (-22901) +/** Image Verification Failure: Error reading section headers. */ +#define VERR_LDRVI_READ_ERROR_SHDRS (-22902) +/** Image Verification Failure: Error reading authenticode signature data. */ +#define VERR_LDRVI_READ_ERROR_SIGNATURE (-22903) +/** Image Verification Failure: Error reading file for hashing. */ +#define VERR_LDRVI_READ_ERROR_HASH (-22904) +/** Image Verification Failure: Error determining the file length. */ +#define VERR_LDRVI_FILE_LENGTH_ERROR (-22905) +/** Image Verification Failure: Error allocating memory for state data. */ +#define VERR_LDRVI_NO_MEMORY_STATE (-22906) +/** Image Verification Failure: Error allocating memory for authenticode + * signature data. */ +#define VERR_LDRVI_NO_MEMORY_SIGNATURE (-22907) +/** Image Verification Failure: Error allocating memory for section headers. */ +#define VERR_LDRVI_NO_MEMORY_SHDRS (-22908) +/** Image Verification Failure: Authenticode parsing output. */ +#define VERR_LDRVI_NO_MEMORY_PARSE_OUTPUT (-22909) +/** Image Verification Failure: Invalid security directory entry. */ +#define VERR_LDRVI_INVALID_SECURITY_DIR_ENTRY (-22910) +/** Image Verification Failure: */ +#define VERR_LDRVI_BAD_CERT_HDR_LENGTH (-22911) +/** Image Verification Failure: */ +#define VERR_LDRVI_BAD_CERT_HDR_REVISION (-22912) +/** Image Verification Failure: */ +#define VERR_LDRVI_BAD_CERT_HDR_TYPE (-22913) +/** Image Verification Failure: More than one certificate table entry. */ +#define VERR_LDRVI_BAD_CERT_MULTIPLE (-22914) + +/** Image Verification Failure: */ +#define VERR_LDRVI_BAD_MZ_OFFSET (-22915) +/** Image Verification Failure: Invalid section count. */ +#define VERR_LDRVI_INVALID_SECTION_COUNT (-22916) +/** Image Verification Failure: Raw data offsets and sizes are out of range. */ +#define VERR_LDRVI_SECTION_RAW_DATA_VALUES (-22917) +/** Optional header magic and target machine does not match. */ +#define VERR_LDRVI_MACHINE_OPT_HDR_MAGIC_MISMATCH (-22918) +/** Unsupported image target architecture. */ +#define VERR_LDRVI_UNSUPPORTED_ARCH (-22919) + +/** Image Verification Failure: Internal error in signature parser. */ +#define VERR_LDRVI_PARSE_IPE (-22921) +/** Generic BER parse error. Will be refined later. */ +#define VERR_LDRVI_PARSE_BER_ERROR (-22922) + +/** Expected the signed data content to be the object ID of + * SpcIndirectDataContent, found something else instead. */ +#define VERR_LDRVI_EXPECTED_INDIRECT_DATA_CONTENT_OID (-22923) +/** Page hash table size overflow. */ +#define VERR_LDRVI_PAGE_HASH_TAB_SIZE_OVERFLOW (-22924) +/** Page hash table is too long (covers signature data, i.e. itself). */ +#define VERR_LDRVI_PAGE_HASH_TAB_TOO_LONG (-22925) +/** The page hash table is not strictly ordered by offset. */ +#define VERR_LDRVI_PAGE_HASH_TAB_NOT_STRICTLY_SORTED (-22926) +/** The page hash table hashes data outside the defined and implicit sections. */ +#define VERR_PAGE_HASH_TAB_HASHES_NON_SECTION_DATA (-22927) +/** Page hash mismatch. */ +#define VERR_LDRVI_PAGE_HASH_MISMATCH (-22928) +/** Image hash mismatch. */ +#define VERR_LDRVI_IMAGE_HASH_MISMATCH (-22929) + +/** Cannot resolve symbol because it's a forwarder. */ +#define VERR_LDR_FORWARDER (-22950) +/** The symbol is not a forwarder. */ +#define VERR_LDR_NOT_FORWARDER (-22951) +/** Malformed forwarder entry. */ +#define VERR_LDR_BAD_FORWARDER (-22952) +/** Too long forwarder chain or there is a loop. */ +#define VERR_LDR_FORWARDER_CHAIN_TOO_LONG (-22953) +/** Support for forwarders has not been implemented. */ +#define VERR_LDR_FORWARDERS_NOT_SUPPORTED (-22954) +/** @} */ + +/** @name RTCrX509 status codes. + * @{ */ +/** Generic X.509 error. */ +#define VERR_CR_X509_GENERIC_ERROR (-23000) +/** Internal error in the X.509 code. */ +#define VERR_CR_X509_INTERNAL_ERROR (-23001) +/** Internal error in the X.509 certificate path building and verification + * code. */ +#define VERR_CR_X509_CERTPATHS_INTERNAL_ERROR (-23002) +/** Path not verified yet. */ +#define VERR_CR_X509_NOT_VERIFIED (-23003) +/** The certificate path has no trust anchor. */ +#define VERR_CR_X509_NO_TRUST_ANCHOR (-23004) +/** Unknown X.509 certificate signature algorithm. */ +#define VERR_CR_X509_UNKNOWN_CERT_SIGN_ALGO (-23005) +/** Certificate signature algorithm mismatch. */ +#define VERR_CR_X509_CERT_SIGN_ALGO_MISMATCH (-23006) +/** The signature algorithm in the to-be-signed certificate part does not match + * the one associated with the signature. */ +#define VERR_CR_X509_CERT_TBS_SIGN_ALGO_MISMATCH (-23007) +/** Certificate extensions requires certificate version 3 or later. */ +#define VERR_CR_X509_TBSCERT_EXTS_REQ_V3 (-23008) +/** Unique issuer and subject IDs require version certificate 2. */ +#define VERR_CR_X509_TBSCERT_UNIQUE_IDS_REQ_V2 (-23009) +/** Certificate serial number length is out of bounds. */ +#define VERR_CR_X509_TBSCERT_SERIAL_NUMBER_OUT_OF_BOUNDS (-23010) +/** Unsupported X.509 certificate version. */ +#define VERR_CR_X509_TBSCERT_UNSUPPORTED_VERSION (-23011) +/** Public key is too small. */ +#define VERR_CR_X509_PUBLIC_KEY_TOO_SMALL (-23012) +/** Invalid string tag for a X.509 name object. */ +#define VERR_CR_X509_INVALID_NAME_STRING_TAG (-23013) +/** Empty string in X.509 name object. */ +#define VERR_CR_X509_NAME_EMPTY_STRING (-23014) +/** Non-string object inside X.509 name object. */ +#define VERR_CR_X509_NAME_NOT_STRING (-23015) +/** Empty set inside X.509 name. */ +#define VERR_CR_X509_NAME_EMPTY_SET (-23016) +/** Empty sub-string set inside X.509 name. */ +#define VERR_CR_X509_NAME_EMPTY_SUB_SET (-23017) +/** The NotBefore and NotAfter values of an X.509 Validity object seems to + * have been swapped around. */ +#define VERR_CR_X509_VALIDITY_SWAPPED (-23018) +/** Duplicate certificate extension. */ +#define VERR_CR_X509_TBSCERT_DUPLICATE_EXTENSION (-23019) +/** Missing relative distinguished name map entry. */ +#define VERR_CR_X509_NAME_MISSING_RDN_MAP_ENTRY (-23020) +/** Certificate path validator: No trusted certificate paths. */ +#define VERR_CR_X509_CPV_NO_TRUSTED_PATHS (-23021) +/** Certificate path validator: No valid certificate policy. */ +#define VERR_CR_X509_CPV_NO_VALID_POLICY (-23022) +/** Certificate path validator: Unknown critical certificate extension. */ +#define VERR_CR_X509_CPV_UNKNOWN_CRITICAL_EXTENSION (-23023) +/** Certificate path validator: Intermediate certificate is missing the + * KeyCertSign usage flag. */ +#define VERR_CR_X509_CPV_MISSING_KEY_CERT_SIGN (-23024) +/** Certificate path validator: Hit the max certificate path length before + * reaching trust anchor. */ +#define VERR_CR_X509_CPV_MAX_PATH_LENGTH (-23025) +/** Certificate path validator: Intermediate certificate is not marked as a + * certificate authority (CA). */ +#define VERR_CR_X509_CPV_NOT_CA_CERT (-23026) +/** Certificate path validator: Intermediate certificate is not a version 3 + * certificate. */ +#define VERR_CR_X509_CPV_NOT_V3_CERT (-23027) +/** Certificate path validator: Invalid policy mapping (to/from anyPolicy). */ +#define VERR_CR_X509_CPV_INVALID_POLICY_MAPPING (-23028) +/** Certificate path validator: Name constraints permits no names. */ +#define VERR_CR_X509_CPV_NO_PERMITTED_NAMES (-23029) +/** Certificate path validator: Name constraints does not permits the + * certificate name. */ +#define VERR_CR_X509_CPV_NAME_NOT_PERMITTED (-23030) +/** Certificate path validator: Name constraints does not permits the + * alternative certificate name. */ +#define VERR_CR_X509_CPV_ALT_NAME_NOT_PERMITTED (-23031) +/** Certificate path validator: Intermediate certificate subject does not + * match child issuer property. */ +#define VERR_CR_X509_CPV_ISSUER_MISMATCH (-23032) +/** Certificate path validator: The certificate is not valid at the + * specified time. */ +#define VERR_CR_X509_CPV_NOT_VALID_AT_TIME (-23033) +/** Certificate path validator: Unexpected choice found in general subtree + * object (name constraints). */ +#define VERR_CR_X509_CPV_UNEXP_GENERAL_SUBTREE_CHOICE (-23034) +/** Certificate path validator: Unexpected minimum value found in general + * subtree object (name constraints). */ +#define VERR_CR_X509_CPV_UNEXP_GENERAL_SUBTREE_MIN (-23035) +/** Certificate path validator: Unexpected maximum value found in + * general subtree object (name constraints). */ +#define VERR_CR_X509_CPV_UNEXP_GENERAL_SUBTREE_MAX (-23036) +/** Certificate path builder: Encountered bad certificate context. */ +#define VERR_CR_X509_CPB_BAD_CERT_CTX (-23037) +/** OpenSSL d2i_X509 failed. */ +#define VERR_CR_X509_OSSL_D2I_FAILED (-23090) +/** @} */ + +/** @name RTCrPkcs7 status codes. + * @{ */ +/** Generic PKCS \#7 error. */ +#define VERR_CR_PKCS7_GENERIC_ERROR (-23300) +/** Signed data verification failed because there are zero signer infos. */ +#define VERR_CR_PKCS7_NO_SIGNER_INFOS (-23301) +/** Signed data certificate not found. */ +#define VERR_CR_PKCS7_SIGNED_DATA_CERT_NOT_FOUND (-23302) +/** Signed data verification failed due to key usage issues. */ +#define VERR_CR_PKCS7_KEY_USAGE_MISMATCH (-23303) +/** Signed data verification failed because of missing (or duplicate) + * authenticated content-type attribute. */ +#define VERR_CR_PKCS7_MISSING_CONTENT_TYPE_ATTRIB (-23304) +/** Signed data verification failed because of the authenticated content-type + * attribute did not match. */ +#define VERR_CR_PKCS7_CONTENT_TYPE_ATTRIB_MISMATCH (-23305) +/** Signed data verification failed because of a malformed authenticated + * content-type attribute. */ +#define VERR_CR_PKCS7_BAD_CONTENT_TYPE_ATTRIB (-23306) +/** Signed data verification failed because of missing (or duplicate) + * authenticated message-digest attribute. */ +#define VERR_CR_PKCS7_MISSING_MESSAGE_DIGEST_ATTRIB (-23307) +/** Signed data verification failed because the authenticated message-digest + * attribute did not match. */ +#define VERR_CR_PKCS7_MESSAGE_DIGEST_ATTRIB_MISMATCH (-23308) +/** Signed data verification failed because of a malformed authenticated + * message-digest attribute. */ +#define VERR_CR_PKCS7_BAD_MESSAGE_DIGEST_ATTRIB (-23309) +/** Signature verification failed. */ +#define VERR_CR_PKCS7_SIGNATURE_VERIFICATION_FAILED (-23310) +/** Internal PKCS \#7 error. */ +#define VERR_CR_PKCS7_INTERNAL_ERROR (-22311) +/** OpenSSL d2i_PKCS7 failed. */ +#define VERR_CR_PKCS7_OSSL_D2I_FAILED (-22312) +/** OpenSSL PKCS \#7 verification failed. */ +#define VERR_CR_PKCS7_OSSL_VERIFY_FAILED (-22313) +/** Digest algorithm parameters are not supported by the PKCS \#7 code. */ +#define VERR_CR_PKCS7_DIGEST_PARAMS_NOT_IMPL (-22314) +/** The digest algorithm of a signer info entry was not found in the list of + * digest algorithms in the signed data. */ +#define VERR_CR_PKCS7_DIGEST_ALGO_NOT_FOUND_IN_LIST (-22315) +/** The PKCS \#7 content is not signed data. */ +#define VERR_CR_PKCS7_NOT_SIGNED_DATA (-22316) +/** No digest algorithms listed in PKCS \#7 signed data. */ +#define VERR_CR_PKCS7_NO_DIGEST_ALGORITHMS (-22317) +/** Too many digest algorithms used by PKCS \#7 signed data. This is an + * internal limitation of the code that aims at saving kernel stack space. */ +#define VERR_CR_PKCS7_TOO_MANY_DIGEST_ALGORITHMS (-22318) +/** Error creating digest algorithm calculator. */ +#define VERR_CR_PKCS7_DIGEST_CREATE_ERROR (-22319) +/** Error while calculating a digest for a PKCS \#7 verification operation. */ +#define VERR_CR_PKCS7_DIGEST_CALC_ERROR (-22320) +/** Unsupported PKCS \#7 signed data version. */ +#define VERR_CR_PKCS7_SIGNED_DATA_VERSION (-22350) +/** PKCS \#7 signed data has no digest algorithms listed. */ +#define VERR_CR_PKCS7_SIGNED_DATA_NO_DIGEST_ALGOS (-22351) +/** Unknown digest algorithm used by PKCS \#7 object. */ +#define VERR_CR_PKCS7_UNKNOWN_DIGEST_ALGORITHM (-22352) +/** Expected PKCS \#7 object to ship at least one certificate. */ +#define VERR_CR_PKCS7_NO_CERTIFICATES (-22353) +/** Expected PKCS \#7 object to not contain any CRLs. */ +#define VERR_CR_PKCS7_EXPECTED_NO_CRLS (-22354) +/** Expected PKCS \#7 object to contain exactly on signer info entry. */ +#define VERR_CR_PKCS7_EXPECTED_ONE_SIGNER_INFO (-22355) +/** Unsupported PKCS \#7 signer info version. */ +#define VERR_CR_PKCS7_SIGNER_INFO_VERSION (-22356) +/** PKCS \#7 singer info contains no issuer serial number. */ +#define VERR_CR_PKCS7_SIGNER_INFO_NO_ISSUER_SERIAL_NO (-22357) +/** Expected PKCS \#7 object to ship the signer certificate(s). */ +#define VERR_CR_PKCS7_SIGNER_CERT_NOT_SHIPPED (-22358) +/** The encrypted digest algorithm does not match the one in the certificate. */ +#define VERR_CR_PKCS7_SIGNER_INFO_DIGEST_ENCRYPT_MISMATCH (-22359) +/** @} */ + +/** @name RTCrSpc status codes. + * @{ */ +/** Generic SPC error. */ +#define VERR_CR_SPC_GENERIC_ERROR (-23400) +/** SPC requires there to be exactly one SignerInfo entry. */ +#define VERR_CR_SPC_NOT_EXACTLY_ONE_SIGNER_INFOS (-23401) +/** There shall be exactly one digest algorithm to go with the single + * SingerInfo entry required by SPC. */ +#define VERR_CR_SPC_NOT_EXACTLY_ONE_DIGEST_ALGO (-23402) +/** The digest algorithm in the SignerInfo does not match the one in the + * indirect data. */ +#define VERR_CR_SPC_SIGNED_IND_DATA_DIGEST_ALGO_MISMATCH (-23403) +/** The digest algorithm in the indirect data was not found in the list of + * digest algorithms in the signed data structure. */ +#define VERR_CR_SPC_IND_DATA_DIGEST_ALGO_NOT_IN_DIGEST_ALGOS (-23404) +/** The digest algorithm is not known to us. */ +#define VERR_CR_SPC_UNKNOWN_DIGEST_ALGO (-23405) +/** The indirect data digest size does not match the digest algorithm. */ +#define VERR_CR_SPC_IND_DATA_DIGEST_SIZE_MISMATCH (-23406) +/** Expected PE image data inside indirect data object. */ +#define VERR_CR_SPC_EXPECTED_PE_IMAGE_DATA (-23407) +/** Internal SPC error: The PE image data is missing. */ +#define VERR_CR_SPC_PEIMAGE_DATA_NOT_PRESENT (-23408) +/** Bad SPC object moniker UUID field. */ +#define VERR_CR_SPC_BAD_MONIKER_UUID (-23409) +/** Unknown SPC object moniker UUID. */ +#define VERR_CR_SPC_UNKNOWN_MONIKER_UUID (-23410) +/** Internal SPC error: Bad object moniker choice value. */ +#define VERR_CR_SPC_BAD_MONIKER_CHOICE (-23411) +/** Internal SPC error: Bad object moniker data pointer. */ +#define VERR_CR_SPC_MONIKER_BAD_DATA (-23412) +/** Multiple PE image page hash tables. */ +#define VERR_CR_SPC_PEIMAGE_MULTIPLE_HASH_TABS (-23413) +/** Unknown SPC PE image attribute. */ +#define VERR_CR_SPC_PEIMAGE_UNKNOWN_ATTRIBUTE (-23414) +/** URL not expected in SPC PE image data. */ +#define VERR_CR_SPC_PEIMAGE_URL_UNEXPECTED (-23415) +/** PE image data without any valid content was not expected. */ +#define VERR_CR_SPC_PEIMAGE_NO_CONTENT (-23416) +/** @} */ + +/** @name RTCrPkix status codes. + * @{ */ +/** Generic PKCS \#7 error. */ +#define VERR_CR_PKIX_GENERIC_ERROR (-23500) +/** Parameters was presented to a signature schema that does not take any. */ +#define VERR_CR_PKIX_SIGNATURE_TAKES_NO_PARAMETERS (-23501) +/** Unknown hash digest type. */ +#define VERR_CR_PKIX_UNKNOWN_DIGEST_TYPE (-23502) +/** Internal error. */ +#define VERR_CR_PKIX_INTERNAL_ERROR (-23503) +/** The hash is too long for the key used when signing/verifying. */ +#define VERR_CR_PKIX_HASH_TOO_LONG_FOR_KEY (-23504) +/** The signature is too long for the scratch buffer. */ +#define VERR_CR_PKIX_SIGNATURE_TOO_LONG (-23505) +/** The signature is greater than or equal to the key. */ +#define VERR_CR_PKIX_SIGNATURE_GE_KEY (-23506) +/** The signature is negative. */ +#define VERR_CR_PKIX_SIGNATURE_NEGATIVE (-23507) +/** Invalid signature length. */ +#define VERR_CR_PKIX_INVALID_SIGNATURE_LENGTH (-23508) +/** PKIX signature no does not match up to the current data. */ +#define VERR_CR_PKIX_SIGNATURE_MISMATCH (-23509) +/** PKIX cipher algorithm parameters are not implemented. */ +#define VERR_CR_PKIX_CIPHER_ALGO_PARAMS_NOT_IMPL (-23510) +/** Cipher algorithm is not known to us. */ +#define VERR_CR_PKIX_CIPHER_ALGO_NOT_KNOWN (-23511) +/** PKIX cipher algorithm is not known to OpenSSL. */ +#define VERR_CR_PKIX_OSSL_CIPHER_ALGO_NOT_KNOWN (-23512) +/** PKIX cipher algorithm is not known to OpenSSL EVP API. */ +#define VERR_CR_PKIX_OSSL_CIPHER_ALGO_NOT_KNOWN_EVP (-23513) +/** OpenSSL failed to init PKIX cipher algorithm context. */ +#define VERR_CR_PKIX_OSSL_CIPHER_ALOG_INIT_FAILED (-23514) +/** Final OpenSSL PKIX verification failed. */ +#define VERR_CR_PKIX_OSSL_VERIFY_FINAL_FAILED (-23515) +/** OpenSSL failed to decode the public key. */ +#define VERR_CR_PKIX_OSSL_D2I_PUBLIC_KEY_FAILED (-23516) +/** The EVP_PKEY_type API in OpenSSL failed. */ +#define VERR_CR_PKIX_OSSL_EVP_PKEY_TYPE_ERROR (-23517) +/** @} */ + +/** @name RTCrStore status codes. + * @{ */ +/** Generic store error. */ +#define VERR_CR_STORE_GENERIC_ERROR (-23700) +/** @} */ + +/** @name RTCrRsa status codes. + * @{ */ +/** Generic RSA error. */ +#define VERR_CR_RSA_GENERIC_ERROR (-23900) +/** @} */ + +/** @name RTBigNum status codes. + * @{ */ +/** Sensitive input requires the result(s) to be initialized as sensitive. */ +#define VERR_BIGNUM_SENSITIVE_INPUT (-24000) +/** Attempt to divide by zero. */ +#define VERR_BIGNUM_DIV_BY_ZERO (-24001) +/** Negative exponent makes no sense to integer math. */ +#define VERR_BIGNUM_NEGATIVE_EXPONENT (-24002) + +/** @} */ + +/** @name RTCrDigest status codes. + * @{ */ +/** OpenSSL failed to initialize the digest algorithm contextn. */ +#define VERR_CR_DIGEST_OSSL_DIGEST_INIT_ERROR (-24200) +/** OpenSSL failed to clone the digest algorithm context. */ +#define VERR_CR_DIGEST_OSSL_DIGEST_CTX_COPY_ERROR (-24201) +/** @} */ + +/* SED-END */ + +/** @} */ + +#endif + --- linux-raspi2-4.2.0.orig/ubuntu/vbox/include/iprt/errno.h +++ linux-raspi2-4.2.0/ubuntu/vbox/include/iprt/errno.h @@ -0,0 +1,318 @@ +/** @file + * IPRT - errno.h wrapper. + */ + +/* + * Copyright (C) 2012-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + + +#ifndef ___iprt_errno_h___ +#define ___iprt_errno_h___ + +#ifndef IPRT_NO_CRT +# if defined(RT_OS_DARWIN) && defined(KERNEL) +# include +# elif defined(RT_OS_LINUX) && defined(__KERNEL__) +# include +# elif defined(RT_OS_FREEBSD) && defined(_KERNEL) +# include +# else +# include +# endif +#endif + + +/* + * Supply missing errno values according to the current RT_OS_XXX definition. + * + * Note! These supplements are for making no-CRT mode, as well as making UNIXy + * code that makes used of odd errno defines internally, work smoothly. + * + * When adding more error codes, always check the following errno.h sources: + * - RT_OS_DARWIN: http://fxr.watson.org/fxr/source/bsd/sys/errno.h?v=xnu-1699.24.8 + * - RT_OS_FREEBSD: http://fxr.watson.org/fxr/source/sys/errno.h?v=DFBSD + * - RT_OS_NETBSD: http://fxr.watson.org/fxr/source/sys/errno.h?v=NETBSD + * - RT_OS_OPENBSD: http://fxr.watson.org/fxr/source/sys/errno.h?v=OPENBSD + * - RT_OS_OS2: http://svn.netlabs.org/libc/browser/trunk/libc/include/sys/errno.h + * - RT_OS_LINUX: http://fxr.watson.org/fxr/source/include/asm-generic/errno.h?v=linux-2.6 + * - RT_OS_SOLARIS: http://fxr.watson.org/fxr/source/common/sys/errno.h?v=OPENSOLARIS + * - RT_OS_WINDOWS: tools/win.x86/vcc/v8sp1/include/errno.h + */ + +#if defined(RT_OS_DARWIN) \ + || defined(RT_OS_FREEBSD) \ + || defined(RT_OS_NETBSD) \ + || defined(RT_OS_OPENBSD) \ + || defined(RT_OS_OS2) +# define RT_ERRNO_OS_BSD +#endif +#ifdef RT_OS_SOLARIS +# define RT_ERRNO_OS_SYSV_HARDCORE /* ?? */ +#endif + +/* The relatively similar part. */ +#ifndef EPERM +# define EPERM (1) +#endif +#ifndef ENOENT +# define ENOENT (2) +#endif +#ifndef ESRCH +# define ESRCH (3) +#endif +#ifndef EINTR +# define EINTR (4) +#endif +#ifndef EIO +# define EIO (5) +#endif +#ifndef ENXIO +# define ENXIO (6) +#endif +#ifndef E2BIG +# define E2BIG (7) +#endif +#ifndef ENOEXEC +# define ENOEXEC (8) +#endif +#ifndef EBADF +# define EBADF (9) +#endif +#ifndef ECHILD +# define ECHILD (10) +#endif +#ifndef EAGAIN +# if defined(RT_ERRNO_OS_BSD) +# define EAGAIN (35) +# else +# define EAGAIN (11) +# endif +#endif +#ifndef EWOULDBLOCK +# define EWOULDBLOCK EAGAIN +#endif +#ifndef EDEADLK +# if defined(RT_ERRNO_OS_BSD) +# define EDEADLK (11) +# elif defined(RT_OS_LINUX) +# define EDEADLK (35) +# elif defined(RT_OS_WINDOWS) +# define EDEADLK (36) +# else +# define EDEADLK (45) +# endif +#endif +#ifndef EDEADLOCK +# define EDEADLOCK EDEADLK +#endif +#ifndef ENOMEM +# define ENOMEM (12) +#endif +#ifndef EACCES +# define EACCES (13) +#endif +#ifndef EFAULT +# define EFAULT (14) +#endif +#ifndef ENOTBLK +# define ENOTBLK (15) +#endif +#ifndef EBUSY +# define EBUSY (16) +#endif +#ifndef EEXIST +# define EEXIST (17) +#endif +#ifndef EXDEV +# define EXDEV (18) +#endif +#ifndef ENODEV +# define ENODEV (19) +#endif +#ifndef ENOTDIR +# define ENOTDIR (20) +#endif +#ifndef EISDIR +# define EISDIR (21) +#endif +#ifndef EINVAL +# define EINVAL (22) +#endif +#ifndef ENFILE +# define ENFILE (23) +#endif +#ifndef EMFILE +# define EMFILE (24) +#endif +#ifndef ENOTTY +# define ENOTTY (25) +#endif +#ifndef ETXTBSY +# define ETXTBSY (26) +#endif +#ifndef EFBIG +# define EFBIG (27) +#endif +#ifndef ENOSPC +# define ENOSPC (28) +#endif +#ifndef ESPIPE +# define ESPIPE (29) +#endif +#ifndef EROFS +# define EROFS (30) +#endif +#ifndef EMLINK +# define EMLINK (31) +#endif +#ifndef EPIPE +# define EPIPE (32) +#endif +#ifndef EDOM +# define EDOM (33) +#endif +#ifndef ERANGE +# define ERANGE (34) +#endif + +/* 35 - also EAGAIN on BSD and EDEADLK on Linux. */ +#ifndef ENOMSG +# if defined(RT_OS_DARWIN) +# define ENOMSG (91) +# elif defined(RT_OS_FREEBSD) +# define ENOMSG (83) +# elif defined(RT_OS_LINUX) +# define ENOMSG (42) +# else +# define ENOMSG (35) +# endif +#endif + +/* 36 - Also EDEADLK on Windows. */ +#ifndef EIDRM +# if defined(RT_OS_DARWIN) +# define EIDRM (90) +# elif defined(RT_OS_FREEBSD) || defined(RT_OS_NETBSD) +# define EIDRM (82) +# elif defined(RT_OS_OPENBSD) +# define EIDRM (89) +# elif defined(RT_OS_LINUX) +# define EIDRM (43) +# elif defined(RT_OS_WINDOWS) +# define EIDRM (600) +# else +# define EIDRM (36) +# endif +#endif +#ifndef EINPROGRESS +# if defined(RT_ERRNO_OS_BSD) +# define EINPROGRESS (36) +# elif defined(RT_OS_LINUX) +# define EINPROGRESS (115) +# else +# define EINPROGRESS (150) +# endif +#endif +#ifndef ENAMETOOLONG +# if defined(RT_ERRNO_OS_BSD) +# define ENAMETOOLONG (63) +# elif defined(RT_OS_LINUX) +# define ENAMETOOLONG (36) +# else +# define ENAMETOOLONG (78) +# endif +#endif + +/* 37 */ +#ifndef ECHRNG +# if defined(RT_ERRNO_OS_SYSV_HARDCORE) +# define ECHRNG (37) +# else +# define ECHRNG (599) +# endif +#endif +#ifndef ENOLCK +# if defined(RT_ERRNO_OS_BSD) +# define ENOLCK (77) +# elif defined(RT_OS_LINUX) +# define ENOLCK (37) +# else +# define ENOLCK (46) +# endif +#endif +#ifndef EALREADY +# if defined(RT_ERRNO_OS_BSD) +# define EALREADY (37) +# elif defined(RT_OS_LINUX) +# define EALREADY (114) +# else +# define EALREADY (149) +# endif +#endif + +/** @todo errno constants {37..44}. */ + +/* 45 - also EDEADLK on Solaris, EL2NSYNC on Linux. */ +#ifndef ENOTSUP +# if defined(RT_ERRNO_OS_BSD) +# define ENOTSUP (45) +# elif defined(RT_OS_LINUX) +# define ENOTSUP (95) +# else +# define ENOTSUP (48) +# endif +#endif +#ifndef EOPNOTSUPP +# if defined(RT_ERRNO_OS_BSD) +# define EOPNOTSUPP ENOTSUP +# elif defined(RT_OS_LINUX) +# define EOPNOTSUPP ENOTSUP +# else +# define EOPNOTSUPP (122) +# endif +#endif + +/** @todo errno constants {46..74}. */ + +/* 75 - note that Solaris has constant with value 75. */ +#ifndef EOVERFLOW +# if defined(RT_OS_OPENBSD) +# define EOVERFLOW (87) +# elif defined(RT_ERRNO_OS_BSD) +# define EOVERFLOW (84) +# elif defined(RT_OS_LINUX) +# define EOVERFLOW (75) +# else +# define EOVERFLOW (79) +# endif +#endif +#ifndef EPROGMISMATCH +# if defined(RT_ERRNO_OS_BSD) +# define EPROGMISMATCH (75) +# else +# define EPROGMISMATCH (598) +# endif +#endif + +/** @todo errno constants {76..}. */ + + +#endif --- linux-raspi2-4.2.0.orig/ubuntu/vbox/include/iprt/fs.h +++ linux-raspi2-4.2.0/ubuntu/vbox/include/iprt/fs.h @@ -0,0 +1,624 @@ +/** @file + * IPRT - Filesystem. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + +#ifndef ___iprt_fs_h +#define ___iprt_fs_h + +#include +#include +#include + + +RT_C_DECLS_BEGIN + +/** @defgroup grp_rt_fs RTFs - Filesystem and Volume + * @ingroup grp_rt + * @{ + */ + + +/** @name Filesystem Object Mode Flags. + * + * There are two sets of flags: the unix mode flags and the dos attributes. + * + * APIs returning mode flags will provide both sets. + * + * When specifying mode flags to any API at least one of them must be given. If + * one set is missing the API will synthesize it from the one given if it + * requires it. + * + * Both sets match their x86 ABIs, the DOS/NT one is simply shifted up 16 bits. + * The DOS/NT range is bits 16 to 31 inclusively. The Unix range is bits 0 to 15 + * (inclusively). + * + * @remarks These constants have been comitted to a binary format and must not + * be changed in any incompatible ways. + * + * @{ + */ + +/** Set user id on execution (S_ISUID). */ +#define RTFS_UNIX_ISUID 0004000U +/** Set group id on execution (S_ISGID). */ +#define RTFS_UNIX_ISGID 0002000U +/** Sticky bit (S_ISVTX / S_ISTXT). */ +#define RTFS_UNIX_ISTXT 0001000U + +/** Owner RWX mask (S_IRWXU). */ +#define RTFS_UNIX_IRWXU 0000700U +/** Owner readable (S_IRUSR). */ +#define RTFS_UNIX_IRUSR 0000400U +/** Owner writable (S_IWUSR). */ +#define RTFS_UNIX_IWUSR 0000200U +/** Owner executable (S_IXUSR). */ +#define RTFS_UNIX_IXUSR 0000100U + +/** Group RWX mask (S_IRWXG). */ +#define RTFS_UNIX_IRWXG 0000070U +/** Group readable (S_IRGRP). */ +#define RTFS_UNIX_IRGRP 0000040U +/** Group writable (S_IWGRP). */ +#define RTFS_UNIX_IWGRP 0000020U +/** Group executable (S_IXGRP). */ +#define RTFS_UNIX_IXGRP 0000010U + +/** Other RWX mask (S_IRWXO). */ +#define RTFS_UNIX_IRWXO 0000007U +/** Other readable (S_IROTH). */ +#define RTFS_UNIX_IROTH 0000004U +/** Other writable (S_IWOTH). */ +#define RTFS_UNIX_IWOTH 0000002U +/** Other executable (S_IXOTH). */ +#define RTFS_UNIX_IXOTH 0000001U + +/** All UNIX access permission bits (0777). */ +#define RTFS_UNIX_ALL_ACCESS_PERMS 0000777U +/** All UNIX permission bits, including set id and sticky bits. */ +#define RTFS_UNIX_ALL_PERMS 0007777U + +/** Named pipe (fifo) (S_IFIFO). */ +#define RTFS_TYPE_FIFO 0010000U +/** Character device (S_IFCHR). */ +#define RTFS_TYPE_DEV_CHAR 0020000U +/** Directory (S_IFDIR). */ +#define RTFS_TYPE_DIRECTORY 0040000U +/** Block device (S_IFBLK). */ +#define RTFS_TYPE_DEV_BLOCK 0060000U +/** Regular file (S_IFREG). */ +#define RTFS_TYPE_FILE 0100000U +/** Symbolic link (S_IFLNK). */ +#define RTFS_TYPE_SYMLINK 0120000U +/** Socket (S_IFSOCK). */ +#define RTFS_TYPE_SOCKET 0140000U +/** Whiteout (S_IFWHT). */ +#define RTFS_TYPE_WHITEOUT 0160000U +/** Type mask (S_IFMT). */ +#define RTFS_TYPE_MASK 0170000U + +/** Unix attribute mask. */ +#define RTFS_UNIX_MASK 0xffffU +/** The mask of all the NT, OS/2 and DOS attributes. */ +#define RTFS_DOS_MASK (0x7fffU << RTFS_DOS_SHIFT) + +/** The shift value. */ +#define RTFS_DOS_SHIFT 16 +/** The mask of the OS/2 and DOS attributes. */ +#define RTFS_DOS_MASK_OS2 (0x003fU << RTFS_DOS_SHIFT) +/** The mask of the NT attributes. */ +#define RTFS_DOS_MASK_NT (0x7fffU << RTFS_DOS_SHIFT) + +/** Readonly object. */ +#define RTFS_DOS_READONLY (0x0001U << RTFS_DOS_SHIFT) +/** Hidden object. */ +#define RTFS_DOS_HIDDEN (0x0002U << RTFS_DOS_SHIFT) +/** System object. */ +#define RTFS_DOS_SYSTEM (0x0004U << RTFS_DOS_SHIFT) +/** Directory. */ +#define RTFS_DOS_DIRECTORY (0x0010U << RTFS_DOS_SHIFT) +/** Archived object. + * This bit is set by the filesystem after each modification of a file. */ +#define RTFS_DOS_ARCHIVED (0x0020U << RTFS_DOS_SHIFT) +/** Undocumented / Reserved, used to be the FAT volume label. */ +#define RTFS_DOS_NT_DEVICE (0x0040U << RTFS_DOS_SHIFT) +/** Normal object, no other attribute set (NT). */ +#define RTFS_DOS_NT_NORMAL (0x0080U << RTFS_DOS_SHIFT) +/** Temporary object (NT). */ +#define RTFS_DOS_NT_TEMPORARY (0x0100U << RTFS_DOS_SHIFT) +/** Sparse file (NT). */ +#define RTFS_DOS_NT_SPARSE_FILE (0x0200U << RTFS_DOS_SHIFT) +/** Reparse point (NT). */ +#define RTFS_DOS_NT_REPARSE_POINT (0x0400U << RTFS_DOS_SHIFT) +/** Compressed object (NT). + * For a directory, compression is the default for new files. */ +#define RTFS_DOS_NT_COMPRESSED (0x0800U << RTFS_DOS_SHIFT) +/** Physically offline data (NT). + * MSDN say, don't mess with this one. */ +#define RTFS_DOS_NT_OFFLINE (0x1000U << RTFS_DOS_SHIFT) +/** Not content indexed by the content indexing service (NT). */ +#define RTFS_DOS_NT_NOT_CONTENT_INDEXED (0x2000U << RTFS_DOS_SHIFT) +/** Encryped object (NT). + * For a directory, encrypted is the default for new files. */ +#define RTFS_DOS_NT_ENCRYPTED (0x4000U << RTFS_DOS_SHIFT) + +/** @} */ + + +/** @name Filesystem Object Type Predicates. + * @{ */ +/** Checks the mode flags indicate a named pipe (fifo) (S_ISFIFO). */ +#define RTFS_IS_FIFO(fMode) ( ((fMode) & RTFS_TYPE_MASK) == RTFS_TYPE_FIFO ) +/** Checks the mode flags indicate a character device (S_ISCHR). */ +#define RTFS_IS_DEV_CHAR(fMode) ( ((fMode) & RTFS_TYPE_MASK) == RTFS_TYPE_DEV_CHAR ) +/** Checks the mode flags indicate a directory (S_ISDIR). */ +#define RTFS_IS_DIRECTORY(fMode) ( ((fMode) & RTFS_TYPE_MASK) == RTFS_TYPE_DIRECTORY ) +/** Checks the mode flags indicate a block device (S_ISBLK). */ +#define RTFS_IS_DEV_BLOCK(fMode) ( ((fMode) & RTFS_TYPE_MASK) == RTFS_TYPE_DEV_BLOCK ) +/** Checks the mode flags indicate a regular file (S_ISREG). */ +#define RTFS_IS_FILE(fMode) ( ((fMode) & RTFS_TYPE_MASK) == RTFS_TYPE_FILE ) +/** Checks the mode flags indicate a symbolic link (S_ISLNK). */ +#define RTFS_IS_SYMLINK(fMode) ( ((fMode) & RTFS_TYPE_MASK) == RTFS_TYPE_SYMLINK ) +/** Checks the mode flags indicate a socket (S_ISSOCK). */ +#define RTFS_IS_SOCKET(fMode) ( ((fMode) & RTFS_TYPE_MASK) == RTFS_TYPE_SOCKET ) +/** Checks the mode flags indicate a whiteout (S_ISWHT). */ +#define RTFS_IS_WHITEOUT(fMode) ( ((fMode) & RTFS_TYPE_MASK) == RTFS_TYPE_WHITEOUT ) +/** @} */ + + +/** + * Filesystem type IDs returned by RTFsQueryType. + * + * This enum is subject to changes and must not be used as part of any ABI or + * binary format (file, network, etc). + * + * @remarks When adding new entries, please update RTFsTypeName(). Also, try + * add them to the most natural group. + */ +typedef enum RTFSTYPE +{ + /** Unknown file system. */ + RTFSTYPE_UNKNOWN = 0, + + /** Universal Disk Format. */ + RTFSTYPE_UDF, + /** ISO 9660, aka Compact Disc File System (CDFS). */ + RTFSTYPE_ISO9660, + /** Filesystem in Userspace. */ + RTFSTYPE_FUSE, + /** VirtualBox shared folders. */ + RTFSTYPE_VBOXSHF, + + /* Linux: */ + RTFSTYPE_EXT, + RTFSTYPE_EXT2, + RTFSTYPE_EXT3, + RTFSTYPE_EXT4, + RTFSTYPE_XFS, + RTFSTYPE_CIFS, + RTFSTYPE_SMBFS, + RTFSTYPE_TMPFS, + RTFSTYPE_SYSFS, + RTFSTYPE_PROC, + RTFSTYPE_OCFS2, + RTFSTYPE_BTRFS, + + /* Windows: */ + /** New Technology File System. */ + RTFSTYPE_NTFS, + /** FAT12, FAT16 and FAT32 lumped into one basket. + * The partition size limit of FAT12 and FAT16 will be the factor + * limiting the file size (except, perhaps for the 64KB cluster case on + * non-Windows hosts). */ + RTFSTYPE_FAT, + + /* Solaris: */ + /** Zettabyte File System. */ + RTFSTYPE_ZFS, + /** Unix File System. */ + RTFSTYPE_UFS, + /** Network File System. */ + RTFSTYPE_NFS, + + /* Mac OS X: */ + /** Hierarchical File System. */ + RTFSTYPE_HFS, + /** @todo RTFSTYPE_HFS_PLUS? */ + RTFSTYPE_AUTOFS, + RTFSTYPE_DEVFS, + + /* *BSD: */ + + /* OS/2: */ + /** High Performance File System. */ + RTFSTYPE_HPFS, + /** Journaled File System (v2). */ + RTFSTYPE_JFS, + + /** The end of valid Filesystem types IDs. */ + RTFSTYPE_END, + /** The usual 32-bit type blow up. */ + RTFSTYPE_32BIT_HACK = 0x7fffffff +} RTFSTYPE; +/** Pointer to a Filesystem type ID. */ +typedef RTFSTYPE *PRTFSTYPE; + + +/** + * The available additional information in a RTFSOBJATTR object. + */ +typedef enum RTFSOBJATTRADD +{ + /** No additional information is available / requested. */ + RTFSOBJATTRADD_NOTHING = 1, + /** The additional unix attributes (RTFSOBJATTR::u::Unix) are available / + * requested. */ + RTFSOBJATTRADD_UNIX, + /** The additional unix attributes (RTFSOBJATTR::u::UnixOwner) are + * available / requested. */ + RTFSOBJATTRADD_UNIX_OWNER, + /** The additional unix attributes (RTFSOBJATTR::u::UnixGroup) are + * available / requested. */ + RTFSOBJATTRADD_UNIX_GROUP, + /** The additional extended attribute size (RTFSOBJATTR::u::EASize) is available / requested. */ + RTFSOBJATTRADD_EASIZE, + /** The last valid item (inclusive). + * The valid range is RTFSOBJATTRADD_NOTHING thru RTFSOBJATTRADD_LAST. */ + RTFSOBJATTRADD_LAST = RTFSOBJATTRADD_EASIZE, + + /** The usual 32-bit hack. */ + RTFSOBJATTRADD_32BIT_SIZE_HACK = 0x7fffffff +} RTFSOBJATTRADD; + +/** The number of bytes reserved for the additional attribute union. */ +#define RTFSOBJATTRUNION_MAX_SIZE 128 + +/** + * Additional Unix Attributes (RTFSOBJATTRADD_UNIX). + */ +typedef struct RTFSOBJATTRUNIX +{ + /** The user owning the filesystem object (st_uid). + * This field is NIL_UID if not supported. */ + RTUID uid; + + /** The group the filesystem object is assigned (st_gid). + * This field is NIL_GID if not supported. */ + RTGID gid; + + /** Number of hard links to this filesystem object (st_nlink). + * This field is 1 if the filesystem doesn't support hardlinking or + * the information isn't available. + */ + uint32_t cHardlinks; + + /** The device number of the device which this filesystem object resides on (st_dev). + * This field is 0 if this information is not available. */ + RTDEV INodeIdDevice; + + /** The unique identifier (within the filesystem) of this filesystem object (st_ino). + * Together with INodeIdDevice, this field can be used as a OS wide unique id + * when both their values are not 0. + * This field is 0 if the information is not available. */ + RTINODE INodeId; + + /** User flags (st_flags). + * This field is 0 if this information is not available. */ + uint32_t fFlags; + + /** The current generation number (st_gen). + * This field is 0 if this information is not available. */ + uint32_t GenerationId; + + /** The device number of a character or block device type object (st_rdev). + * This field is 0 if the file isn't of a character or block device type and + * when the OS doesn't subscribe to the major+minor device idenfication scheme. */ + RTDEV Device; +} RTFSOBJATTRUNIX; + + +/** + * Additional Unix Attributes (RTFSOBJATTRADD_UNIX_OWNER). + * + * @remarks This interface is mainly for TAR. + */ +typedef struct RTFSOBJATTRUNIXOWNER +{ + /** The user owning the filesystem object (st_uid). + * This field is NIL_UID if not supported. */ + RTUID uid; + /** The user name. + * Empty if not available or not supported, truncated if too long. */ + char szName[RTFSOBJATTRUNION_MAX_SIZE - sizeof(RTUID)]; +} RTFSOBJATTRUNIXOWNER; + + +/** + * Additional Unix Attributes (RTFSOBJATTRADD_UNIX_GROUP). + * + * @remarks This interface is mainly for TAR. + */ +typedef struct RTFSOBJATTRUNIXGROUP +{ + /** The user owning the filesystem object (st_uid). + * This field is NIL_GID if not supported. */ + RTGID gid; + /** The group name. + * Empty if not available or not supported, truncated if too long. */ + char szName[RTFSOBJATTRUNION_MAX_SIZE - sizeof(RTGID)]; +} RTFSOBJATTRUNIXGROUP; + + +/** + * Filesystem object attributes. + */ +typedef struct RTFSOBJATTR +{ + /** Mode flags (st_mode). RTFS_UNIX_*, RTFS_TYPE_*, and RTFS_DOS_*. */ + RTFMODE fMode; + + /** The additional attributes available. */ + RTFSOBJATTRADD enmAdditional; + + /** + * Additional attributes. + * + * Unless explicitly specified to an API, the API can provide additional + * data as it is provided by the underlying OS. + */ + union RTFSOBJATTRUNION + { + /** Additional Unix Attributes - RTFSOBJATTRADD_UNIX. */ + RTFSOBJATTRUNIX Unix; + /** Additional Unix Owner Attributes - RTFSOBJATTRADD_UNIX_OWNER. */ + RTFSOBJATTRUNIXOWNER UnixOwner; + /** Additional Unix Group Attributes - RTFSOBJATTRADD_UNIX_GROUP. */ + RTFSOBJATTRUNIXGROUP UnixGroup; + + /** + * Extended attribute size is available when RTFS_DOS_HAVE_EA_SIZE is set. + */ + struct RTFSOBJATTREASIZE + { + /** Size of EAs. */ + RTFOFF cb; + } EASize; + /** Reserved space. */ + uint8_t abReserveSpace[128]; + } u; +} RTFSOBJATTR; +/** Pointer to a filesystem object attributes structure. */ +typedef RTFSOBJATTR *PRTFSOBJATTR; +/** Pointer to a const filesystem object attributes structure. */ +typedef const RTFSOBJATTR *PCRTFSOBJATTR; + + +/** + * Filesystem object information structure. + * + * This is returned by the RTPathQueryInfo(), RTFileQueryInfo() and RTDirRead() APIs. + */ +typedef struct RTFSOBJINFO +{ + /** Logical size (st_size). + * For normal files this is the size of the file. + * For symbolic links, this is the length of the path name contained + * in the symbolic link. + * For other objects this fields needs to be specified. + */ + RTFOFF cbObject; + + /** Disk allocation size (st_blocks * DEV_BSIZE). */ + RTFOFF cbAllocated; + + /** Time of last access (st_atime). */ + RTTIMESPEC AccessTime; + + /** Time of last data modification (st_mtime). */ + RTTIMESPEC ModificationTime; + + /** Time of last status change (st_ctime). + * If not available this is set to ModificationTime. + */ + RTTIMESPEC ChangeTime; + + /** Time of file birth (st_birthtime). + * If not available this is set to ChangeTime. + */ + RTTIMESPEC BirthTime; + + /** Attributes. */ + RTFSOBJATTR Attr; + +} RTFSOBJINFO; +/** Pointer to a filesystem object information structure. */ +typedef RTFSOBJINFO *PRTFSOBJINFO; +/** Pointer to a const filesystem object information structure. */ +typedef const RTFSOBJINFO *PCRTFSOBJINFO; + + +#ifdef IN_RING3 + +/** + * Query the sizes of a filesystem. + * + * @returns iprt status code. + * @param pszFsPath Path within the mounted filesystem. + * @param pcbTotal Where to store the total filesystem space. (Optional) + * @param pcbFree Where to store the remaining free space in the filesystem. (Optional) + * @param pcbBlock Where to store the block size. (Optional) + * @param pcbSector Where to store the sector size. (Optional) + * + * @sa RTFileQueryFsSizes + */ +RTR3DECL(int) RTFsQuerySizes(const char *pszFsPath, PRTFOFF pcbTotal, RTFOFF *pcbFree, + uint32_t *pcbBlock, uint32_t *pcbSector); + +/** + * Query the mountpoint of a filesystem. + * + * @returns iprt status code. + * @returns VERR_BUFFER_OVERFLOW if cbMountpoint isn't enough. + * @param pszFsPath Path within the mounted filesystem. + * @param pszMountpoint Where to store the mountpoint path. + * @param cbMountpoint Size of the buffer pointed to by pszMountpoint. + */ +RTR3DECL(int) RTFsQueryMountpoint(const char *pszFsPath, char *pszMountpoint, size_t cbMountpoint); + +/** + * Query the label of a filesystem. + * + * @returns iprt status code. + * @returns VERR_BUFFER_OVERFLOW if cbLabel isn't enough. + * @param pszFsPath Path within the mounted filesystem. + * @param pszLabel Where to store the label. + * @param cbLabel Size of the buffer pointed to by pszLabel. + */ +RTR3DECL(int) RTFsQueryLabel(const char *pszFsPath, char *pszLabel, size_t cbLabel); + +/** + * Query the serial number of a filesystem. + * + * @returns iprt status code. + * @param pszFsPath Path within the mounted filesystem. + * @param pu32Serial Where to store the serial number. + */ +RTR3DECL(int) RTFsQuerySerial(const char *pszFsPath, uint32_t *pu32Serial); + +/** + * Query the name of the filesystem driver. + * + * @returns iprt status code. + * @returns VERR_BUFFER_OVERFLOW if cbFsDriver isn't enough. + * @param pszFsPath Path within the mounted filesystem. + * @param pszFsDriver Where to store the filesystem driver name. + * @param cbFsDriver Size of the buffer pointed to by pszFsDriver. + */ +RTR3DECL(int) RTFsQueryDriver(const char *pszFsPath, char *pszFsDriver, size_t cbFsDriver); + +/** + * Query the name of the filesystem the file is located on. + * + * @returns iprt status code. + * @param pszFsPath Path within the mounted filesystem. It must exist. + * In case this is a symlink, the file it refers to is + * evaluated. + * @param penmType Where to store the filesystem type, this is always + * set. See RTFSTYPE for the values. + */ +RTR3DECL(int) RTFsQueryType(const char *pszFsPath, PRTFSTYPE penmType); + +#endif /* IN_RING3 */ + +/** + * Gets the name of a filesystem type. + * + * @returns Pointer to a read-only string containing the name. + * @param enmType A valid filesystem ID. If outside the valid range, + * the returned string will be pointing to a static + * memory buffer which will be changed on subsequent + * calls to this function by any thread. + */ +RTDECL(const char *) RTFsTypeName(RTFSTYPE enmType); + +/** + * Filesystem properties. + */ +typedef struct RTFSPROPERTIES +{ + /** The maximum size of a filesystem object name. + * This does not include the '\\0'. */ + uint32_t cbMaxComponent; + + /** True if the filesystem is remote. + * False if the filesystem is local. */ + bool fRemote; + + /** True if the filesystem is case sensitive. + * False if the filesystem is case insensitive. */ + bool fCaseSensitive; + + /** True if the filesystem is mounted read only. + * False if the filesystem is mounted read write. */ + bool fReadOnly; + + /** True if the filesystem can encode unicode object names. + * False if it can't. */ + bool fSupportsUnicode; + + /** True if the filesystem is compresses. + * False if it isn't or we don't know. */ + bool fCompressed; + + /** True if the filesystem compresses of individual files. + * False if it doesn't or we don't know. */ + bool fFileCompression; + + /** @todo more? */ +} RTFSPROPERTIES; +/** Pointer to a filesystem properties structure. */ +typedef RTFSPROPERTIES *PRTFSPROPERTIES; +/** Pointer to a const filesystem properties structure. */ +typedef RTFSPROPERTIES const *PCRTFSPROPERTIES; + +#ifdef IN_RING3 + +/** + * Query the properties of a mounted filesystem. + * + * @returns iprt status code. + * @param pszFsPath Path within the mounted filesystem. + * @param pProperties Where to store the properties. + */ +RTR3DECL(int) RTFsQueryProperties(const char *pszFsPath, PRTFSPROPERTIES pProperties); + + +/** + * Mountpoint enumerator callback. + * + * @returns iprt status code. Failure terminates the enumeration. + * @param pszMountpoint The mountpoint name. + * @param pvUser The user argument. + */ +typedef DECLCALLBACK(int) FNRTFSMOUNTPOINTENUM(const char *pszMountpoint, void *pvUser); +/** Pointer to a FNRTFSMOUNTPOINTENUM(). */ +typedef FNRTFSMOUNTPOINTENUM *PFNRTFSMOUNTPOINTENUM; + +/** + * Enumerate mount points. + * + * @returns iprt status code. + * @param pfnCallback The callback function. + * @param pvUser The user argument to the callback. + */ +RTR3DECL(int) RTFsMountpointsEnum(PFNRTFSMOUNTPOINTENUM pfnCallback, void *pvUser); + + +#endif /* IN_RING3 */ + +/** @} */ + +RT_C_DECLS_END + +#endif /* !___iprt_fs_h */ + --- linux-raspi2-4.2.0.orig/ubuntu/vbox/include/iprt/heap.h +++ linux-raspi2-4.2.0/ubuntu/vbox/include/iprt/heap.h @@ -0,0 +1,356 @@ +/** @file + * IPRT - Heap Implementations + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + +#ifndef ___iprt_heap_h +#define ___iprt_heap_h + +#include +#include + +RT_C_DECLS_BEGIN + +/** @defgroup grp_rt_heap RTHeap - Heap Implementations + * @ingroup grp_rt + * @{ + */ + + +/** @defgroup grp_rt_heap_simple RTHeapSimple - Simple Heap + * @{ + */ + +/** + * Initializes the heap. + * + * @returns IPRT status code. + * @param pHeap Where to store the heap anchor block on success. + * @param pvMemory Pointer to the heap memory. + * @param cbMemory The size of the heap memory. + */ +RTDECL(int) RTHeapSimpleInit(PRTHEAPSIMPLE pHeap, void *pvMemory, size_t cbMemory); + +/** + * Merge two simple heaps into one. + * + * The requirement is of course that they next two each other memory wise. + * + * @returns IPRT status code. + * @param pHeap Where to store the handle to the merged heap on success. + * @param Heap1 Handle to the first heap. + * @param Heap2 Handle to the second heap. + * @remark This API isn't implemented yet. + */ +RTDECL(int) RTHeapSimpleMerge(PRTHEAPSIMPLE pHeap, RTHEAPSIMPLE Heap1, RTHEAPSIMPLE Heap2); + +/** + * Relocater the heap internal structures after copying it to a new location. + * + * This can be used when loading a saved heap. + * + * @returns IPRT status code. + * @param hHeap Heap handle that has already been adjusted by to the new + * location. That is to say, when calling + * RTHeapSimpleInit, the caller must note the offset of the + * returned heap handle into the heap memory. This offset + * must be used when calcuating the handle value for the + * new location. The offset may in some cases not be zero! + * @param offDelta The delta between the new and old location, i.e. what + * should be added to the internal pointers. + */ +RTDECL(int) RTHeapSimpleRelocate(RTHEAPSIMPLE hHeap, uintptr_t offDelta); + +/** + * Allocates memory from the specified simple heap. + * + * @returns Pointer to the allocated memory block on success. + * @returns NULL if the request cannot be satisfied. (A VERR_NO_MEMORY condition.) + * + * @param Heap The heap to allocate the memory on. + * @param cb The requested heap block size. + * @param cbAlignment The requested heap block alignment. Pass 0 for default alignment. + * Must be a power of 2. + */ +RTDECL(void *) RTHeapSimpleAlloc(RTHEAPSIMPLE Heap, size_t cb, size_t cbAlignment); + +/** + * Allocates zeroed memory from the specified simple heap. + * + * @returns Pointer to the allocated memory block on success. + * @returns NULL if the request cannot be satisfied. (A VERR_NO_MEMORY condition.) + * + * @param Heap The heap to allocate the memory on. + * @param cb The requested heap block size. + * @param cbAlignment The requested heap block alignment. Pass 0 for default alignment. + * Must be a power of 2. + */ +RTDECL(void *) RTHeapSimpleAllocZ(RTHEAPSIMPLE Heap, size_t cb, size_t cbAlignment); + +/** + * Reallocates / Allocates / Frees a heap block. + * + * @param Heap The heap. This is optional and will only be used for strict assertions. + * @param pv The heap block returned by RTHeapSimple. If NULL it behaves like RTHeapSimpleAlloc(). + * @param cbNew The new size of the heap block. If NULL it behaves like RTHeapSimpleFree(). + * @param cbAlignment The requested heap block alignment. Pass 0 for default alignment. + * Must be a power of 2. + * @remark This API isn't implemented yet. + */ +RTDECL(void *) RTHeapSimpleRealloc(RTHEAPSIMPLE Heap, void *pv, size_t cbNew, size_t cbAlignment); + +/** + * Reallocates / Allocates / Frees a heap block, zeroing any new bits. + * + * @param Heap The heap. This is optional and will only be used for strict assertions. + * @param pv The heap block returned by RTHeapSimple. If NULL it behaves like RTHeapSimpleAllocZ(). + * @param cbNew The new size of the heap block. If NULL it behaves like RTHeapSimpleFree(). + * @param cbAlignment The requested heap block alignment. Pass 0 for default alignment. + * Must be a power of 2. + * @remark This API isn't implemented yet. + */ +RTDECL(void *) RTHeapSimpleReallocZ(RTHEAPSIMPLE Heap, void *pv, size_t cbNew, size_t cbAlignment); + +/** + * Frees memory allocated from a simple heap. + * + * @param Heap The heap. This is optional and will only be used for strict assertions. + * @param pv The heap block returned by RTHeapSimple + */ +RTDECL(void) RTHeapSimpleFree(RTHEAPSIMPLE Heap, void *pv); + +/** + * Gets the size of the specified heap block. + * + * @returns The actual size of the heap block. + * @returns 0 if \a pv is NULL or it doesn't point to a valid heap block. An invalid \a pv + * can also cause traps or trigger assertions. + * @param Heap The heap. This is optional and will only be used for strict assertions. + * @param pv The heap block returned by RTHeapSimple + */ +RTDECL(size_t) RTHeapSimpleSize(RTHEAPSIMPLE Heap, void *pv); + +/** + * Gets the size of the heap. + * + * This size includes all the internal heap structures. So, even if the heap is + * empty the RTHeapSimpleGetFreeSize() will never reach the heap size returned + * by this function. + * + * @returns The heap size. + * @returns 0 if heap was safely detected as being bad. + * @param Heap The heap. + */ +RTDECL(size_t) RTHeapSimpleGetHeapSize(RTHEAPSIMPLE Heap); + +/** + * Returns the sum of all free heap blocks. + * + * This is the amount of memory you can theoretically allocate + * if you do allocations exactly matching the free blocks. + * + * @returns The size of the free blocks. + * @returns 0 if heap was safely detected as being bad. + * @param Heap The heap. + */ +RTDECL(size_t) RTHeapSimpleGetFreeSize(RTHEAPSIMPLE Heap); + +/** + * Printf like callbaclk function for RTHeapSimpleDump. + * @param pszFormat IPRT format string. + * @param ... Format arguments. + */ +typedef DECLCALLBACK(void) FNRTHEAPSIMPLEPRINTF(const char *pszFormat, ...); +/** Pointer to a FNRTHEAPSIMPLEPRINTF function. */ +typedef FNRTHEAPSIMPLEPRINTF *PFNRTHEAPSIMPLEPRINTF; + +/** + * Dumps the hypervisor heap. + * + * @param Heap The heap handle. + * @param pfnPrintf Printf like function that groks IPRT formatting. + */ +RTDECL(void) RTHeapSimpleDump(RTHEAPSIMPLE Heap, PFNRTHEAPSIMPLEPRINTF pfnPrintf); + +/** @} */ + + + +/** @defgroup grp_rt_heap_offset RTHeapOffset - Offset Based Heap + * + * This is a variation on the simple heap that doesn't use pointers internally + * and therefore can be saved and restored without any extra effort. + * + * @{ + */ + +/** + * Initializes the heap. + * + * @returns IPRT status code. + * @param phHeap Where to store the heap anchor block on success. + * @param pvMemory Pointer to the heap memory. + * @param cbMemory The size of the heap memory. + */ +RTDECL(int) RTHeapOffsetInit(PRTHEAPOFFSET phHeap, void *pvMemory, size_t cbMemory); + +/** + * Merge two simple heaps into one. + * + * The requirement is of course that they next two each other memory wise. + * + * @returns IPRT status code. + * @param phHeap Where to store the handle to the merged heap on success. + * @param hHeap1 Handle to the first heap. + * @param hHeap2 Handle to the second heap. + * @remark This API isn't implemented yet. + */ +RTDECL(int) RTHeapOffsetMerge(PRTHEAPOFFSET phHeap, RTHEAPOFFSET hHeap1, RTHEAPOFFSET hHeap2); + +/** + * Allocates memory from the specified simple heap. + * + * @returns Pointer to the allocated memory block on success. + * @returns NULL if the request cannot be satisfied. (A VERR_NO_MEMORY condition.) + * + * @param hHeap The heap to allocate the memory on. + * @param cb The requested heap block size. + * @param cbAlignment The requested heap block alignment. Pass 0 for default alignment. + * Must be a power of 2. + */ +RTDECL(void *) RTHeapOffsetAlloc(RTHEAPOFFSET hHeap, size_t cb, size_t cbAlignment); + +/** + * Allocates zeroed memory from the specified simple heap. + * + * @returns Pointer to the allocated memory block on success. + * @returns NULL if the request cannot be satisfied. (A VERR_NO_MEMORY condition.) + * + * @param hHeap The heap to allocate the memory on. + * @param cb The requested heap block size. + * @param cbAlignment The requested heap block alignment. Pass 0 for default + * alignment. Must be a power of 2. + */ +RTDECL(void *) RTHeapOffsetAllocZ(RTHEAPOFFSET hHeap, size_t cb, size_t cbAlignment); + +/** + * Reallocates / Allocates / Frees a heap block. + * + * @param hHeap The heap handle. This is optional and will only be used + * for strict assertions. + * @param pv The heap block returned by RTHeapOffset. If NULL it + * behaves like RTHeapOffsetAlloc(). + * @param cbNew The new size of the heap block. If NULL it behaves like + * RTHeapOffsetFree(). + * @param cbAlignment The requested heap block alignment. Pass 0 for default + * alignment. Must be a power of 2. + * @remark This API isn't implemented yet. + */ +RTDECL(void *) RTHeapOffsetRealloc(RTHEAPOFFSET hHeap, void *pv, size_t cbNew, size_t cbAlignment); + +/** + * Reallocates / Allocates / Frees a heap block, zeroing any new bits. + * + * @param hHeap The heap handle. This is optional and will only be used + * for strict assertions. + * @param pv The heap block returned by RTHeapOffset. If NULL it + * behaves like RTHeapOffsetAllocZ(). + * @param cbNew The new size of the heap block. If NULL it behaves like + * RTHeapOffsetFree(). + * @param cbAlignment The requested heap block alignment. Pass 0 for default + * alignment. Must be a power of 2. + * @remark This API isn't implemented yet. + */ +RTDECL(void *) RTHeapOffsetReallocZ(RTHEAPOFFSET hHeap, void *pv, size_t cbNew, size_t cbAlignment); + +/** + * Frees memory allocated from a simple heap. + * + * @param hHeap The heap handle. This is optional and will only be used + * for strict assertions. + * @param pv The heap block returned by RTHeapOffset + */ +RTDECL(void) RTHeapOffsetFree(RTHEAPOFFSET hHeap, void *pv); + +/** + * Gets the size of the specified heap block. + * + * @returns The actual size of the heap block. + * @returns 0 if \a pv is NULL or it doesn't point to a valid heap block. An + * invalid \a pv can also cause traps or trigger assertions. + * + * @param hHeap The heap handle. This is optional and will only be used + * for strict assertions. + * @param pv The heap block returned by RTHeapOffset + */ +RTDECL(size_t) RTHeapOffsetSize(RTHEAPOFFSET hHeap, void *pv); + +/** + * Gets the size of the heap. + * + * This size includes all the internal heap structures. So, even if the heap is + * empty the RTHeapOffsetGetFreeSize() will never reach the heap size returned + * by this function. + * + * @returns The heap size. + * @returns 0 if heap was safely detected as being bad. + * @param hHeap The heap handle. + */ +RTDECL(size_t) RTHeapOffsetGetHeapSize(RTHEAPOFFSET hHeap); + +/** + * Returns the sum of all free heap blocks. + * + * This is the amount of memory you can theoretically allocate + * if you do allocations exactly matching the free blocks. + * + * @returns The size of the free blocks. + * @returns 0 if heap was safely detected as being bad. + * @param hHeap The heap handle. + */ +RTDECL(size_t) RTHeapOffsetGetFreeSize(RTHEAPOFFSET hHeap); + +/** + * Printf like callbaclk function for RTHeapOffsetDump. + * @param pszFormat IPRT format string. + * @param ... Format arguments. + */ +typedef DECLCALLBACK(void) FNRTHEAPOFFSETPRINTF(const char *pszFormat, ...); +/** Pointer to a FNRTHEAPOFFSETPRINTF function. */ +typedef FNRTHEAPOFFSETPRINTF *PFNRTHEAPOFFSETPRINTF; + +/** + * Dumps the hypervisor heap. + * + * @param hHeap The heap handle. + * @param pfnPrintf Printf like function that groks IPRT formatting. + */ +RTDECL(void) RTHeapOffsetDump(RTHEAPOFFSET hHeap, PFNRTHEAPOFFSETPRINTF pfnPrintf); + +/** @} */ + +/** @} */ +RT_C_DECLS_END + +#endif + --- linux-raspi2-4.2.0.orig/ubuntu/vbox/include/iprt/initterm.h +++ linux-raspi2-4.2.0/ubuntu/vbox/include/iprt/initterm.h @@ -0,0 +1,254 @@ +/** @file + * IPRT - Runtime Init/Term. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + +#ifndef ___iprt_initterm_h +#define ___iprt_initterm_h + +#include +#include + +RT_C_DECLS_BEGIN + +/** @defgroup grp_rt IPRT C/C++ APIs + * @{ + */ + +/** @defgroup grp_rt_initterm Init / Term + * @{ + */ + +#ifdef IN_RING3 +/** @name RTR3Init flags (RTR3INIT_XXX). + * @{ */ +/** Try initialize SUPLib. */ +#define RTR3INIT_FLAGS_SUPLIB RT_BIT(0) +/** Initializing IPRT from a DLL. */ +#define RTR3INIT_FLAGS_DLL RT_BIT(1) +/** We are sharing a process space, so we need to behave. */ +#define RTR3INIT_FLAGS_UNOBTRUSIVE RT_BIT(2) +/** The caller ensures that the argument bector is UTF-8. */ +#define RTR3INIT_FLAGS_UTF8_ARGV RT_BIT(3) +/** @} */ + +/** @name RTR3InitEx version + * @{ */ +/** Version 1. */ +#define RTR3INIT_VER_1 UINT32_C(1) +/** The current version. */ +#define RTR3INIT_VER_CUR RTR3INIT_VER_1 +/** @} */ + +/** + * Initializes the runtime library. + * + * @returns iprt status code. + * @param fFlags Flags, see RTR3INIT_XXX. + */ +RTR3DECL(int) RTR3InitExeNoArguments(uint32_t fFlags); + +/** + * Initializes the runtime library. + * + * @returns iprt status code. + * @param cArgs Pointer to the argument count. + * @param ppapszArgs Pointer to the argument vector pointer. + * @param fFlags Flags, see RTR3INIT_XXX. + */ +RTR3DECL(int) RTR3InitExe(int cArgs, char ***papszArgs, uint32_t fFlags); + +/** + * Initializes the runtime library. + * + * @returns iprt status code. + * @param fFlags Flags, see RTR3INIT_XXX. + */ +RTR3DECL(int) RTR3InitDll(uint32_t fFlags); + +/** + * Initializes the runtime library and possibly also SUPLib too. + * + * Avoid this interface, it's not considered stable. + * + * @returns IPRT status code. + * @param iVersion The interface version. Must be 0 atm. + * @param fFlags Flags, see RTR3INIT_XXX. + * @param cArgs Pointer to the argument count. + * @param ppapszArgs Pointer to the argument vector pointer. NULL + * allowed if @a cArgs is 0. + * @param pszProgramPath The program path. Pass NULL if we're to figure it + * out ourselves. + */ +RTR3DECL(int) RTR3InitEx(uint32_t iVersion, uint32_t fFlags, int cArgs, char ***papszArgs, const char *pszProgramPath); + +/** + * Terminates the runtime library. + */ +RTR3DECL(void) RTR3Term(void); + +/** + * Is IPRT succesfully initialized? + * + * @returns true/false. + */ +RTR3DECL(bool) RTR3InitIsInitialized(void); + +/** + * Are we running in unobtrusive mode? + * @returns true/false. + */ +RTR3DECL(bool) RTR3InitIsUnobtrusive(void); +#endif /* IN_RING3 */ + + +#ifdef IN_RING0 +/** + * Initializes the ring-0 driver runtime library. + * + * @returns iprt status code. + * @param fReserved Flags reserved for the future. + */ +RTR0DECL(int) RTR0Init(unsigned fReserved); + +/** + * Terminates the ring-0 driver runtime library. + */ +RTR0DECL(void) RTR0Term(void); + +/** + * Forcibily terminates the ring-0 driver runtime library. + * + * This should be used when statically linking the IPRT. Module using dynamic + * linking shall use RTR0Term. If you're not sure, use RTR0Term! + */ +RTR0DECL(void) RTR0TermForced(void); +#endif + +#ifdef IN_RC +/** + * Initializes the raw-mode context runtime library. + * + * @returns iprt status code. + * + * @param u64ProgramStartNanoTS The startup timestamp. + */ +RTRCDECL(int) RTRCInit(uint64_t u64ProgramStartNanoTS); + +/** + * Terminates the raw-mode context runtime library. + */ +RTRCDECL(void) RTRCTerm(void); +#endif + + +/** + * Termination reason. + */ +typedef enum RTTERMREASON +{ + /** Normal exit. iStatus contains the exit code. */ + RTTERMREASON_EXIT = 1, + /** Any abnormal exit. iStatus is 0 and has no meaning. */ + RTTERMREASON_ABEND, + /** Killed by a signal. The iStatus contains the signal number. */ + RTTERMREASON_SIGNAL, + /** The IPRT module is being unloaded. iStatus is 0 and has no meaning. */ + RTTERMREASON_UNLOAD +} RTTERMREASON; + +/** Whether lazy clean up is Okay or not. + * When the process is exiting, it is a waste of time to for instance free heap + * memory or close open files. OTOH, when the runtime is unloaded from the + * process, it is important to release absolutely all resources to prevent + * resource leaks. */ +#define RTTERMREASON_IS_LAZY_CLEANUP_OK(enmReason) ((enmReason) != RTTERMREASON_UNLOAD) + + +/** + * IPRT termination callback function. + * + * @param enmReason The cause of the termination. + * @param iStatus The meaning of this depends on enmReason. + * @param pvUser User argument passed to RTTermRegisterCallback. + */ +typedef DECLCALLBACK(void) FNRTTERMCALLBACK(RTTERMREASON enmReason, int32_t iStatus, void *pvUser); +/** Pointer to an IPRT termination callback function. */ +typedef FNRTTERMCALLBACK *PFNRTTERMCALLBACK; + + +/** + * Registers a termination callback. + * + * This is intended for performing clean up during IPRT termination. Frequently + * paired with lazy initialization thru RTOnce. + * + * The callbacks are called in LIFO order. + * + * @returns IPRT status code. + * + * @param pfnCallback The callback function. + * @param pvUser The user argument for the callback. + * + * @remarks May need to acquire a fast mutex or critical section, so use with + * some care in ring-0 context. + * + * @remarks Be very careful using this from code that may be unloaded before + * IPRT terminates. Unlike some atexit and on_exit implementations, + * IPRT will not automatically unregister callbacks when a module gets + * unloaded. + */ +RTDECL(int) RTTermRegisterCallback(PFNRTTERMCALLBACK pfnCallback, void *pvUser); + +/** + * Deregister a termination callback. + * + * @returns VINF_SUCCESS if found, VERR_NOT_FOUND if the callback/pvUser pair + * wasn't found. + * + * @param pfnCallback The callback function. + * @param pvUser The user argument for the callback. + */ +RTDECL(int) RTTermDeregisterCallback(PFNRTTERMCALLBACK pfnCallback, void *pvUser); + +/** + * Runs the termination callback queue. + * + * Normally called by an internal IPRT termination function, but may also be + * called by external code immediately prior to terminating IPRT if it is in a + * better position to state the termination reason and/or status. + * + * @param enmReason The reason why it's called. + * @param iStatus The associated exit status or signal number. + */ +RTDECL(void) RTTermRunCallbacks(RTTERMREASON enmReason, int32_t iStatus); + +/** @} */ + +/** @} */ + +RT_C_DECLS_END + + +#endif + --- linux-raspi2-4.2.0.orig/ubuntu/vbox/include/iprt/list.h +++ linux-raspi2-4.2.0/ubuntu/vbox/include/iprt/list.h @@ -0,0 +1,437 @@ +/** @file + * IPRT - Generic Doubly Linked List. + */ + +/* + * Copyright (C) 2010-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + +#ifndef ___iprt_list_h +#define ___iprt_list_h + +#include + +/** @defgroup grp_rt_list RTList - Generic Doubly Linked List + * @ingroup grp_rt + * + * The list implementation is circular without any type wise distintion between + * the list and its nodes. This can be confusing since the list head usually + * resides in a different structure than the nodes, so care must be taken when + * walking the list. + * + * @{ + */ + +RT_C_DECLS_BEGIN + +/** + * A list node of a doubly linked list. + */ +typedef struct RTLISTNODE +{ + /** Pointer to the next list node. */ + struct RTLISTNODE *pNext; + /** Pointer to the previous list node. */ + struct RTLISTNODE *pPrev; +} RTLISTNODE; +/** Pointer to a list node. */ +typedef RTLISTNODE *PRTLISTNODE; +/** Pointer to a const list node. */ +typedef RTLISTNODE const *PCRTLISTNODE; +/** Pointer to a list node pointer. */ +typedef PRTLISTNODE *PPRTLISTNODE; + +/** The anchor (head/tail) of a doubly linked list. + * + * @remarks Please use this instead of RTLISTNODE to indicate a list + * head/tail. It makes the code so much easier to read. Also, + * always mention the actual list node type(s) in the comment. */ +typedef RTLISTNODE RTLISTANCHOR; +/** Pointer to a doubly linked list anchor. */ +typedef RTLISTANCHOR *PRTLISTANCHOR; +/** Pointer to a const doubly linked list anchor. */ +typedef RTLISTANCHOR const *PCRTLISTANCHOR; + + +/** + * Initialize a list. + * + * @param pList Pointer to an unitialised list. + */ +DECLINLINE(void) RTListInit(PRTLISTNODE pList) +{ + pList->pNext = pList; + pList->pPrev = pList; +} + +/** + * Append a node to the end of the list. + * + * @param pList The list to append the node to. + * @param pNode The node to append. + */ +DECLINLINE(void) RTListAppend(PRTLISTNODE pList, PRTLISTNODE pNode) +{ + pList->pPrev->pNext = pNode; + pNode->pPrev = pList->pPrev; + pNode->pNext = pList; + pList->pPrev = pNode; +} + +/** + * Add a node as the first element of the list. + * + * @param pList The list to prepend the node to. + * @param pNode The node to prepend. + */ +DECLINLINE(void) RTListPrepend(PRTLISTNODE pList, PRTLISTNODE pNode) +{ + pList->pNext->pPrev = pNode; + pNode->pNext = pList->pNext; + pNode->pPrev = pList; + pList->pNext = pNode; +} + +/** + * Inserts a node after the specified one. + * + * @param pCurNode The current node. + * @param pNewNode The node to insert. + */ +DECLINLINE(void) RTListNodeInsertAfter(PRTLISTNODE pCurNode, PRTLISTNODE pNewNode) +{ + RTListPrepend(pCurNode, pNewNode); +} + +/** + * Inserts a node before the specified one. + * + * @param pCurNode The current node. + * @param pNewNode The node to insert. + */ +DECLINLINE(void) RTListNodeInsertBefore(PRTLISTNODE pCurNode, PRTLISTNODE pNewNode) +{ + RTListAppend(pCurNode, pNewNode); +} + +/** + * Remove a node from a list. + * + * @param pNode The node to remove. + */ +DECLINLINE(void) RTListNodeRemove(PRTLISTNODE pNode) +{ + PRTLISTNODE pPrev = pNode->pPrev; + PRTLISTNODE pNext = pNode->pNext; + + pPrev->pNext = pNext; + pNext->pPrev = pPrev; + + /* poison */ + pNode->pNext = NULL; + pNode->pPrev = NULL; +} + +/** + * Checks if a node is the last element in the list. + * + * @retval @c true if the node is the last element in the list. + * @retval @c false otherwise + * + * @param pList The list. + * @param pNode The node to check. + */ +#define RTListNodeIsLast(pList, pNode) ((pNode)->pNext == (pList)) + +/** + * Checks if a node is the first element in the list. + * + * @retval @c true if the node is the first element in the list. + * @retval @c false otherwise. + * + * @param pList The list. + * @param pNode The node to check. + */ +#define RTListNodeIsFirst(pList, pNode) ((pNode)->pPrev == (pList)) + +/** + * Checks if a type converted node is actually the dummy element (@a pList). + * + * @retval @c true if the node is the dummy element in the list. + * @retval @c false otherwise. + * + * @param pList The list. + * @param pNodeStruct The node structure to check. Typically + * something obtained from RTListNodeGetNext() or + * RTListNodeGetPrev(). This is NOT a PRTLISTNODE + * but something that contains a RTLISTNODE member! + * @param Type Structure the list node is a member of. + * @param Member The list node member. + */ +#define RTListNodeIsDummy(pList, pNode, Type, Member) \ + ( (pNode) == RT_FROM_MEMBER((pList), Type, Member) ) +/** @copydoc RTListNodeIsDummy */ +#define RTListNodeIsDummyCpp(pList, pNode, Type, Member) \ + ( (pNode) == RT_FROM_CPP_MEMBER((pList), Type, Member) ) + +/** + * Checks if a list is empty. + * + * @retval @c true if the list is empty. + * @retval @c false otherwise. + * + * @param pList The list to check. + */ +#define RTListIsEmpty(pList) ((pList)->pPrev == (pList)) + +/** + * Returns the next node in the list. + * + * @returns The next node. + * + * @param pCurNode The current node. + * @param Type Structure the list node is a member of. + * @param Member The list node member. + */ +#define RTListNodeGetNext(pCurNode, Type, Member) \ + RT_FROM_MEMBER((pCurNode)->pNext, Type, Member) +/** @copydoc RTListNodeGetNext */ +#define RTListNodeGetNextCpp(pCurNode, Type, Member) \ + RT_FROM_CPP_MEMBER((pCurNode)->pNext, Type, Member) + +/** + * Returns the previous node in the list. + * + * @returns The previous node. + * + * @param pCurNode The current node. + * @param Type Structure the list node is a member of. + * @param Member The list node member. + */ +#define RTListNodeGetPrev(pCurNode, Type, Member) \ + RT_FROM_MEMBER((pCurNode)->pPrev, Type, Member) +/** @copydoc RTListNodeGetPrev */ +#define RTListNodeGetPrevCpp(pCurNode, Type, Member) \ + RT_FROM_CPP_MEMBER((pCurNode)->pPrev, Type, Member) + +/** + * Returns the first element in the list (checks for empty list). + * + * @retval Pointer to the first list element. + * @retval NULL if the list is empty. + * + * @param pList List to get the first element from. + * @param Type Structure the list node is a member of. + * @param Member The list node member. + */ +#define RTListGetFirst(pList, Type, Member) \ + (!RTListIsEmpty(pList) ? RTListNodeGetNext(pList, Type, Member) : NULL) +/** @copydoc RTListGetFirst */ +#define RTListGetFirstCpp(pList, Type, Member) \ + (!RTListIsEmpty(pList) ? RTListNodeGetNextCpp(pList, Type, Member) : NULL) + +/** + * Returns the last element in the list (checks for empty list). + * + * @retval Pointer to the last list element. + * @retval NULL if the list is empty. + * + * @param pList List to get the last element from. + * @param Type Structure the list node is a member of. + * @param Member The list node member. + */ +#define RTListGetLast(pList, Type, Member) \ + (!RTListIsEmpty(pList) ? RTListNodeGetPrev(pList, Type, Member) : NULL) +/** @copydoc RTListGetLast */ +#define RTListGetLastCpp(pList, Type, Member) \ + (!RTListIsEmpty(pList) ? RTListNodeGetPrevCpp(pList, Type, Member) : NULL) + +/** + * Returns the next node in the list or NULL if the end has been reached. + * + * @returns The next node or NULL. + * + * @param pList The list @a pCurNode is linked on. + * @param pCurNode The current node, of type @a Type. + * @param Type Structure the list node is a member of. + * @param Member The list node member. + */ +#define RTListGetNext(pList, pCurNode, Type, Member) \ + ( (pCurNode)->Member.pNext != (pList) ? RT_FROM_MEMBER((pCurNode)->Member.pNext, Type, Member) : NULL ) +/** @copydoc RTListGetNext */ +#define RTListGetNextCpp(pList, pCurNode, Type, Member) \ + ( (pCurNode)->Member.pNext != (pList) ? RT_FROM_CPP_MEMBER((pCurNode)->Member.pNext, Type, Member) : NULL ) + +/** + * Returns the previous node in the list or NULL if the start has been reached. + * + * @returns The previous node or NULL. + * + * @param pList The list @a pCurNode is linked on. + * @param pCurNode The current node, of type @a Type. + * @param Type Structure the list node is a member of. + * @param Member The list node member. + */ +#define RTListGetPrev(pList, pCurNode, Type, Member) \ + ( (pCurNode)->Member.pPrev != (pList) ? RT_FROM_MEMBER((pCurNode)->Member.pPrev, Type, Member) : NULL ) +/** @copydoc RTListGetPrev */ +#define RTListGetPrevCpp(pList, pCurNode, Type, Member) \ + ( (pCurNode)->Member.pPrev != (pList) ? RT_FROM_CPP_MEMBER((pCurNode)->Member.pPrev, Type, Member) : NULL ) + +/** + * Enumerate the list in head to tail order. + * + * @param pList List to enumerate. + * @param pIterator The iterator variable name. + * @param Type Structure the list node is a member of. + * @param Member The list node member name. + */ +#define RTListForEach(pList, pIterator, Type, Member) \ + for (pIterator = RTListNodeGetNext(pList, Type, Member); \ + !RTListNodeIsDummy(pList, pIterator, Type, Member); \ + pIterator = RT_FROM_MEMBER((pIterator)->Member.pNext, Type, Member) ) +/** @copydoc RTListForEach */ +#define RTListForEachCpp(pList, pIterator, Type, Member) \ + for (pIterator = RTListNodeGetNextCpp(pList, Type, Member); \ + !RTListNodeIsDummyCpp(pList, pIterator, Type, Member); \ + pIterator = RT_FROM_CPP_MEMBER((pIterator)->Member.pNext, Type, Member) ) + + +/** + * Enumerate the list in head to tail order, safe against removal of the + * current node. + * + * @param pList List to enumerate. + * @param pIterator The iterator variable name. + * @param pIterNext The name of the variable saving the pointer to + * the next element. + * @param Type Structure the list node is a member of. + * @param Member The list node member name. + */ +#define RTListForEachSafe(pList, pIterator, pIterNext, Type, Member) \ + for (pIterator = RTListNodeGetNext(pList, Type, Member), \ + pIterNext = RT_FROM_MEMBER((pIterator)->Member.pNext, Type, Member); \ + !RTListNodeIsDummy(pList, pIterator, Type, Member); \ + pIterator = pIterNext, \ + pIterNext = RT_FROM_MEMBER((pIterator)->Member.pNext, Type, Member) ) +/** @copydoc RTListForEachSafe */ +#define RTListForEachSafeCpp(pList, pIterator, pIterNext, Type, Member) \ + for (pIterator = RTListNodeGetNextCpp(pList, Type, Member), \ + pIterNext = RT_FROM_CPP_MEMBER((pIterator)->Member.pNext, Type, Member); \ + !RTListNodeIsDummyCpp(pList, pIterator, Type, Member); \ + pIterator = pIterNext, \ + pIterNext = RT_FROM_CPP_MEMBER((pIterator)->Member.pNext, Type, Member) ) + + +/** + * Enumerate the list in reverse order (tail to head). + * + * @param pList List to enumerate. + * @param pIterator The iterator variable name. + * @param Type Structure the list node is a member of. + * @param Member The list node member name. + */ +#define RTListForEachReverse(pList, pIterator, Type, Member) \ + for (pIterator = RTListNodeGetPrev(pList, Type, Member); \ + !RTListNodeIsDummy(pList, pIterator, Type, Member); \ + pIterator = RT_FROM_MEMBER((pIterator)->Member.pPrev, Type, Member) ) +/** @copydoc RTListForEachReverse */ +#define RTListForEachReverseCpp(pList, pIterator, Type, Member) \ + for (pIterator = RTListNodeGetPrevCpp(pList, Type, Member); \ + !RTListNodeIsDummyCpp(pList, pIterator, Type, Member); \ + pIterator = RT_FROM_CPP_MEMBER((pIterator)->Member.pPrev, Type, Member) ) + + +/** + * Enumerate the list in reverse order (tail to head). + * + * @param pList List to enumerate. + * @param pIterator The iterator variable name. + * @param pIterPrev The name of the variable saving the pointer to + * the previous element. + * @param Type Structure the list node is a member of. + * @param Member The list node member name. + */ +#define RTListForEachReverseSafe(pList, pIterator, pIterPrev, Type, Member) \ + for (pIterator = RTListNodeGetPrev(pList, Type, Member), \ + pIterPrev = RT_FROM_MEMBER((pIterator)->Member.pPrev, Type, Member); \ + !RTListNodeIsDummy(pList, pIterator, Type, Member); \ + pIterator = pIterPrev, \ + pIterPrev = RT_FROM_MEMBER((pIterator)->Member.pPrev, Type, Member) ) +/** @copydoc RTListForEachReverseSafe */ +#define RTListForEachReverseSafeCpp(pList, pIterator, pIterPrev, Type, Member) \ + for (pIterator = RTListNodeGetPrevCpp(pList, Type, Member), \ + pIterPrev = RT_FROM_CPP_MEMBER((pIterator)->Member.pPrev, Type, Member); \ + !RTListNodeIsDummyCpp(pList, pIterator, Type, Member); \ + pIterator = pIterPrev, \ + pIterPrev = RT_FROM_CPP_MEMBER((pIterator)->Member.pPrev, Type, Member) ) + + +/** + * Move the given list to a new list header. + * + * @param pListDst The new list. + * @param pListSrc The list to move. + */ +DECLINLINE(void) RTListMove(PRTLISTNODE pListDst, PRTLISTNODE pListSrc) +{ + if (!RTListIsEmpty(pListSrc)) + { + pListDst->pNext = pListSrc->pNext; + pListDst->pPrev = pListSrc->pPrev; + + /* Adjust the first and last element links */ + pListDst->pNext->pPrev = pListDst; + pListDst->pPrev->pNext = pListDst; + + /* Finally remove the elements from the source list */ + RTListInit(pListSrc); + } +} + +/** + * List concatenation. + * + * @returns nothing. + * @param pListDst The destination list. + * @param pListSrc The source list to concatenate. + */ +DECLINLINE(void) RTListConcatenate(PRTLISTANCHOR pListDst, PRTLISTANCHOR pListSrc) +{ + if (!RTListIsEmpty(pListSrc)) + { + PRTLISTNODE pFirst = pListSrc->pNext; + PRTLISTNODE pLast = pListSrc->pPrev; + + pListDst->pPrev->pNext = pFirst; + pFirst->pPrev = pListDst->pPrev; + pLast->pNext = pListDst; + pListDst->pPrev = pLast; + + /* Finally remove the elements from the source list */ + RTListInit(pListSrc); + } +} + +RT_C_DECLS_END + +/** @} */ + +#endif --- linux-raspi2-4.2.0.orig/ubuntu/vbox/include/iprt/lockvalidator.h +++ linux-raspi2-4.2.0/ubuntu/vbox/include/iprt/lockvalidator.h @@ -0,0 +1,1123 @@ +/** @file + * IPRT - Lock Validator. + */ + +/* + * Copyright (C) 2009-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + +#ifndef ___iprt_lockvalidator_h +#define ___iprt_lockvalidator_h + +#include +#include +#include +#include +#include + + +/** @defgroup grp_rtlockval RTLockValidator - Lock Validator + * @ingroup grp_rt + * @{ + */ + +RT_C_DECLS_BEGIN + +/** Pointer to a record union. + * @internal */ +typedef union RTLOCKVALRECUNION *PRTLOCKVALRECUNION; + +/** + * Source position. + */ +typedef struct RTLOCKVALSRCPOS +{ + /** The file where the lock was taken. */ + R3R0PTRTYPE(const char * volatile) pszFile; + /** The function where the lock was taken. */ + R3R0PTRTYPE(const char * volatile) pszFunction; + /** Some ID indicating where the lock was taken, typically an address. */ + RTHCUINTPTR volatile uId; + /** The line number in the file. */ + uint32_t volatile uLine; +#if HC_ARCH_BITS == 64 + uint32_t u32Padding; /**< Alignment padding. */ +#endif +} RTLOCKVALSRCPOS; +AssertCompileSize(RTLOCKVALSRCPOS, HC_ARCH_BITS == 32 ? 16 : 32); +/* The pointer types are defined in iprt/types.h. */ + +/** @def RTLOCKVALSRCPOS_INIT + * Initializer for a RTLOCKVALSRCPOS variable. + * + * @param pszFile The file name. Optional (NULL). + * @param uLine The line number in that file. Optional (0). + * @param pszFunction The function. Optional (NULL). + * @param uId Some location ID, normally the return address. + * Optional (NULL). + */ +#if HC_ARCH_BITS == 64 +# define RTLOCKVALSRCPOS_INIT(pszFile, uLine, pszFunction, uId) \ + { (pszFile), (pszFunction), (uId), (uLine), 0 } +#else +# define RTLOCKVALSRCPOS_INIT(pszFile, uLine, pszFunction, uId) \ + { (pszFile), (pszFunction), (uId), (uLine) } +#endif + +/** @def RTLOCKVALSRCPOS_INIT_DEBUG_API + * Initializer for a RTLOCKVALSRCPOS variable in a typicial debug API + * variant. Assumes RT_SRC_POS_DECL and RTHCUINTPTR uId as arguments. + */ +#define RTLOCKVALSRCPOS_INIT_DEBUG_API() \ + RTLOCKVALSRCPOS_INIT(pszFile, iLine, pszFunction, uId) + +/** @def RTLOCKVALSRCPOS_INIT_NORMAL_API + * Initializer for a RTLOCKVALSRCPOS variable in a normal API + * variant. Assumes iprt/asm.h is included. + */ +#define RTLOCKVALSRCPOS_INIT_NORMAL_API() \ + RTLOCKVALSRCPOS_INIT(__FILE__, __LINE__, __PRETTY_FUNCTION__, (uintptr_t)ASMReturnAddress()) + +/** @def RTLOCKVALSRCPOS_INIT_POS_NO_ID + * Initializer for a RTLOCKVALSRCPOS variable when no @c uId is present. + * Assumes iprt/asm.h is included. + */ +#define RTLOCKVALSRCPOS_INIT_POS_NO_ID() \ + RTLOCKVALSRCPOS_INIT(pszFile, iLine, pszFunction, (uintptr_t)ASMReturnAddress()) + + +/** + * Lock validator record core. + */ +typedef struct RTLOCKVALRECORE +{ + /** The magic value indicating the record type. */ + uint32_t volatile u32Magic; +} RTLOCKVALRECCORE; +/** Pointer to a lock validator record core. */ +typedef RTLOCKVALRECCORE *PRTLOCKVALRECCORE; +/** Pointer to a const lock validator record core. */ +typedef RTLOCKVALRECCORE const *PCRTLOCKVALRECCORE; + + +/** + * Record recording the exclusive ownership of a lock. + * + * This is typically part of the per-lock data structure when compiling with + * the lock validator. + */ +typedef struct RTLOCKVALRECEXCL +{ + /** Record core with RTLOCKVALRECEXCL_MAGIC as the magic value. */ + RTLOCKVALRECCORE Core; + /** Whether it's enabled or not. */ + bool fEnabled; + /** Reserved. */ + bool afReserved[3]; + /** Source position where the lock was taken. */ + RTLOCKVALSRCPOS SrcPos; + /** The current owner thread. */ + RTTHREAD volatile hThread; + /** Pointer to the lock record below us. Only accessed by the owner. */ + R3R0PTRTYPE(PRTLOCKVALRECUNION) pDown; + /** Recursion count */ + uint32_t cRecursion; + /** The lock sub-class. */ + uint32_t volatile uSubClass; + /** The lock class. */ + RTLOCKVALCLASS hClass; + /** Pointer to the lock. */ + RTHCPTR hLock; + /** Pointer to the next sibling record. + * This is used to find the read side of a read-write lock. */ + R3R0PTRTYPE(PRTLOCKVALRECUNION) pSibling; + /** The lock name. + * @remarks The bytes beyond 32 are for better size alignment and can be + * taken and used for other purposes if it becomes necessary. */ + char szName[32 + (HC_ARCH_BITS == 32 ? 12 : 8)]; +} RTLOCKVALRECEXCL; +AssertCompileSize(RTLOCKVALRECEXCL, HC_ARCH_BITS == 32 ? 0x60 : 0x80); +/* The pointer type is defined in iprt/types.h. */ + +/** + * For recording the one ownership share. + */ +typedef struct RTLOCKVALRECSHRDOWN +{ + /** Record core with RTLOCKVALRECSHRDOWN_MAGIC as the magic value. */ + RTLOCKVALRECCORE Core; + /** Recursion count */ + uint16_t cRecursion; + /** Static (true) or dynamic (false) allocated record. */ + bool fStaticAlloc; + /** Reserved. */ + bool fReserved; + /** The current owner thread. */ + RTTHREAD volatile hThread; + /** Pointer to the lock record below us. Only accessed by the owner. */ + R3R0PTRTYPE(PRTLOCKVALRECUNION) pDown; + /** Pointer back to the shared record. */ + R3R0PTRTYPE(PRTLOCKVALRECSHRD) pSharedRec; +#if HC_ARCH_BITS == 32 + /** Reserved. */ + RTHCPTR pvReserved; +#endif + /** Source position where the lock was taken. */ + RTLOCKVALSRCPOS SrcPos; +} RTLOCKVALRECSHRDOWN; +AssertCompileSize(RTLOCKVALRECSHRDOWN, HC_ARCH_BITS == 32 ? 24 + 16 : 32 + 32); +/** Pointer to a RTLOCKVALRECSHRDOWN. */ +typedef RTLOCKVALRECSHRDOWN *PRTLOCKVALRECSHRDOWN; + +/** + * Record recording the shared ownership of a lock. + * + * This is typically part of the per-lock data structure when compiling with + * the lock validator. + */ +typedef struct RTLOCKVALRECSHRD +{ + /** Record core with RTLOCKVALRECSHRD_MAGIC as the magic value. */ + RTLOCKVALRECCORE Core; + /** The lock sub-class. */ + uint32_t volatile uSubClass; + /** The lock class. */ + RTLOCKVALCLASS hClass; + /** Pointer to the lock. */ + RTHCPTR hLock; + /** Pointer to the next sibling record. + * This is used to find the write side of a read-write lock. */ + R3R0PTRTYPE(PRTLOCKVALRECUNION) pSibling; + + /** The number of entries in the table. + * Updated before inserting and after removal. */ + uint32_t volatile cEntries; + /** The index of the last entry (approximately). */ + uint32_t volatile iLastEntry; + /** The max table size. */ + uint32_t volatile cAllocated; + /** Set if the table is being reallocated, clear if not. + * This is used together with rtLockValidatorSerializeDetectionEnter to make + * sure there is exactly one thread doing the reallocation and that nobody is + * using the table at that point. */ + bool volatile fReallocating; + /** Whether it's enabled or not. */ + bool fEnabled; + /** Set if event semaphore signaller, clear if read-write semaphore. */ + bool fSignaller; + /** Alignment padding. */ + bool fPadding; + /** Pointer to a table containing pointers to records of all the owners. */ + R3R0PTRTYPE(PRTLOCKVALRECSHRDOWN volatile *) papOwners; + + /** The lock name. + * @remarks The bytes beyond 32 are for better size alignment and can be + * taken and used for other purposes if it becomes necessary. */ + char szName[32 + (HC_ARCH_BITS == 32 ? 8 : 8)]; +} RTLOCKVALRECSHRD; +AssertCompileSize(RTLOCKVALRECSHRD, HC_ARCH_BITS == 32 ? 0x50 : 0x60); + + +/** + * Makes the two records siblings. + * + * @returns VINF_SUCCESS on success, VERR_SEM_LV_INVALID_PARAMETER if either of + * the records are invalid. + * @param pRec1 Record 1. + * @param pRec2 Record 2. + */ +RTDECL(int) RTLockValidatorRecMakeSiblings(PRTLOCKVALRECCORE pRec1, PRTLOCKVALRECCORE pRec2); + +/** + * Initialize a lock validator record. + * + * Use RTLockValidatorRecExclDelete to deinitialize it. + * + * @param pRec The record. + * @param hClass The class (no reference consumed). If NIL, the + * no lock order validation will be performed on + * this lock. + * @param uSubClass The sub-class. This is used to define lock + * order inside the same class. If you don't know, + * then pass RTLOCKVAL_SUB_CLASS_NONE. + * @param hLock The lock handle. + * @param fEnabled Pass @c false to explicitly disable lock + * validation, otherwise @c true. + * @param pszNameFmt Name format string for the lock validator, + * optional (NULL). Max length is 32 bytes. + * @param ... Format string arguments. + */ +RTDECL(void) RTLockValidatorRecExclInit(PRTLOCKVALRECEXCL pRec, RTLOCKVALCLASS hClass, uint32_t uSubClass, + void *hLock, bool fEnabled, const char *pszNameFmt, ...); +/** + * Initialize a lock validator record. + * + * Use RTLockValidatorRecExclDelete to deinitialize it. + * + * @param pRec The record. + * @param hClass The class (no reference consumed). If NIL, the + * no lock order validation will be performed on + * this lock. + * @param uSubClass The sub-class. This is used to define lock + * order inside the same class. If you don't know, + * then pass RTLOCKVAL_SUB_CLASS_NONE. + * @param hLock The lock handle. + * @param fEnabled Pass @c false to explicitly disable lock + * validation, otherwise @c true. + * @param pszNameFmt Name format string for the lock validator, + * optional (NULL). Max length is 32 bytes. + * @param va Format string arguments. + */ +RTDECL(void) RTLockValidatorRecExclInitV(PRTLOCKVALRECEXCL pRec, RTLOCKVALCLASS hClass, uint32_t uSubClass, + void *hLock, bool fEnabled, const char *pszNameFmt, va_list va); +/** + * Uninitialize a lock validator record previously initialized by + * RTLockRecValidatorInit. + * + * @param pRec The record. Must be valid. + */ +RTDECL(void) RTLockValidatorRecExclDelete(PRTLOCKVALRECEXCL pRec); + +/** + * Create and initialize a lock validator record. + * + * Use RTLockValidatorRecExclDestroy to deinitialize and destroy the returned + * record. + * + * @return VINF_SUCCESS or VERR_NO_MEMORY. + * @param ppRec Where to return the record pointer. + * @param hClass The class (no reference consumed). If NIL, the + * no lock order validation will be performed on + * this lock. + * @param uSubClass The sub-class. This is used to define lock + * order inside the same class. If you don't know, + * then pass RTLOCKVAL_SUB_CLASS_NONE. + * @param hLock The lock handle. + * @param fEnabled Pass @c false to explicitly disable lock + * validation, otherwise @c true. + * @param pszNameFmt Name format string for the lock validator, + * optional (NULL). Max length is 32 bytes. + * @param ... Format string arguments. + */ +RTDECL(int) RTLockValidatorRecExclCreate(PRTLOCKVALRECEXCL *ppRec, RTLOCKVALCLASS hClass, uint32_t uSubClass, + void *hLock, bool fEnabled, const char *pszNameFmt, ...); + +/** + * Create and initialize a lock validator record. + * + * Use RTLockValidatorRecExclDestroy to deinitialize and destroy the returned + * record. + * + * @return VINF_SUCCESS or VERR_NO_MEMORY. + * @param ppRec Where to return the record pointer. + * @param hClass The class (no reference consumed). If NIL, the + * no lock order validation will be performed on + * this lock. + * @param uSubClass The sub-class. This is used to define lock + * order inside the same class. If you don't know, + * then pass RTLOCKVAL_SUB_CLASS_NONE. + * @param hLock The lock handle. + * @param fEnabled Pass @c false to explicitly disable lock + * validation, otherwise @c true. + * @param pszNameFmt Name format string for the lock validator, + * optional (NULL). Max length is 32 bytes. + * @param va Format string arguments. + */ +RTDECL(int) RTLockValidatorRecExclCreateV(PRTLOCKVALRECEXCL *ppRec, RTLOCKVALCLASS hClass, uint32_t uSubClass, + void *hLock, bool fEnabled, const char *pszNameFmt, va_list va); + +/** + * Deinitialize and destroy a record created by RTLockValidatorRecExclCreate. + * + * @param ppRec Pointer to the record pointer. Will be set to + * NULL. + */ +RTDECL(void) RTLockValidatorRecExclDestroy(PRTLOCKVALRECEXCL *ppRec); + +/** + * Sets the sub-class of the record. + * + * It is recommended to try make sure that nobody is using this class while + * changing the value. + * + * @returns The old sub-class. RTLOCKVAL_SUB_CLASS_INVALID is returns if the + * lock validator isn't compiled in or either of the parameters are + * invalid. + * @param pRec The validator record. + * @param uSubClass The new sub-class value. + */ +RTDECL(uint32_t) RTLockValidatorRecExclSetSubClass(PRTLOCKVALRECEXCL pRec, uint32_t uSubClass); + +/** + * Record the specified thread as lock owner and increment the write lock count. + * + * This function is typically called after acquiring the lock. It accounts for + * recursions so it can be used instead of RTLockValidatorRecExclRecursion. Use + * RTLockValidatorRecExclReleaseOwner to reverse the effect. + * + * @param pRec The validator record. + * @param hThreadSelf The handle of the calling thread. If not known, + * pass NIL_RTTHREAD and we'll figure it out. + * @param pSrcPos The source position of the lock operation. + * @param fFirstRecursion Set if it is the first recursion, clear if not + * sure. + */ +RTDECL(void) RTLockValidatorRecExclSetOwner(PRTLOCKVALRECEXCL pRec, RTTHREAD hThreadSelf, + PCRTLOCKVALSRCPOS pSrcPos, bool fFirstRecursion); + +/** + * Check the exit order and release (unset) the ownership. + * + * This is called by routines implementing releasing an exclusive lock, + * typically before getting down to the final lock releasing. Can be used for + * recursive releasing instead of RTLockValidatorRecExclUnwind. + * + * @retval VINF_SUCCESS on success. + * @retval VERR_SEM_LV_WRONG_RELEASE_ORDER if the order is wrong. Will have + * done all necessary whining and breakpointing before returning. + * @retval VERR_SEM_LV_INVALID_PARAMETER if the input is invalid. + * + * @param pRec The validator record. + * @param fFinalRecursion Set if it's the final recursion, clear if not + * sure. + */ +RTDECL(int) RTLockValidatorRecExclReleaseOwner(PRTLOCKVALRECEXCL pRec, bool fFinalRecursion); + +/** + * Clear the lock ownership and decrement the write lock count. + * + * This is only for special cases where we wish to drop lock validation + * recording. See RTLockValidatorRecExclCheckAndRelease. + * + * @param pRec The validator record. + */ +RTDECL(void) RTLockValidatorRecExclReleaseOwnerUnchecked(PRTLOCKVALRECEXCL pRec); + +/** + * Checks and records a lock recursion. + * + * @retval VINF_SUCCESS on success. + * @retval VERR_SEM_LV_NESTED if the semaphore class forbids recursion. Gone + * thru the motions. + * @retval VERR_SEM_LV_WRONG_ORDER if the locking order is wrong. Gone thru + * the motions. + * @retval VERR_SEM_LV_INVALID_PARAMETER if the input is invalid. + * + * @param pRec The validator record. + * @param pSrcPos The source position of the lock operation. + */ +RTDECL(int) RTLockValidatorRecExclRecursion(PRTLOCKVALRECEXCL pRec, PCRTLOCKVALSRCPOS pSrcPos); + +/** + * Checks and records a lock unwind (releasing one recursion). + * + * This should be coupled with called to RTLockValidatorRecExclRecursion. + * + * @retval VINF_SUCCESS on success. + * @retval VERR_SEM_LV_WRONG_RELEASE_ORDER if the release order is wrong. Gone + * thru the motions. + * @retval VERR_SEM_LV_INVALID_PARAMETER if the input is invalid. + * + * @param pRec The validator record. + */ +RTDECL(int) RTLockValidatorRecExclUnwind(PRTLOCKVALRECEXCL pRec); + +/** + * Checks and records a mixed recursion. + * + * An example of a mixed recursion is a writer requesting read access to a + * SemRW. + * + * This should be coupled with called to RTLockValidatorRecExclUnwindMixed. + * + * @retval VINF_SUCCESS on success. + * @retval VERR_SEM_LV_NESTED if the semaphore class forbids recursion. Gone + * thru the motions. + * @retval VERR_SEM_LV_WRONG_ORDER if the locking order is wrong. Gone thru + * the motions. + * @retval VERR_SEM_LV_INVALID_PARAMETER if the input is invalid. + * + * @param pRec The validator record it to accounted it to. + * @param pRecMixed The validator record it came in on. + * @param pSrcPos The source position of the lock operation. + */ +RTDECL(int) RTLockValidatorRecExclRecursionMixed(PRTLOCKVALRECEXCL pRec, PRTLOCKVALRECCORE pRecMixed, PCRTLOCKVALSRCPOS pSrcPos); + +/** + * Checks and records the unwinding of a mixed recursion. + * + * This should be coupled with called to RTLockValidatorRecExclRecursionMixed. + * + * @retval VINF_SUCCESS on success. + * @retval VERR_SEM_LV_WRONG_RELEASE_ORDER if the release order is wrong. Gone + * thru the motions. + * @retval VERR_SEM_LV_INVALID_PARAMETER if the input is invalid. + * + * @param pRec The validator record it was accounted to. + * @param pRecMixed The validator record it came in on. + */ +RTDECL(int) RTLockValidatorRecExclUnwindMixed(PRTLOCKVALRECEXCL pRec, PRTLOCKVALRECCORE pRecMixed); + +/** + * Check the exclusive locking order. + * + * This is called by routines implementing exclusive lock acquisition. + * + * @retval VINF_SUCCESS on success. + * @retval VERR_SEM_LV_WRONG_ORDER if the order is wrong. Will have done all + * necessary whining and breakpointing before returning. + * @retval VERR_SEM_LV_INVALID_PARAMETER if the input is invalid. + * + * @param pRec The validator record. + * @param hThreadSelf The handle of the calling thread. If not known, + * pass NIL_RTTHREAD and we'll figure it out. + * @param pSrcPos The source position of the lock operation. + * @param cMillies The timeout, in milliseconds. + */ +RTDECL(int) RTLockValidatorRecExclCheckOrder(PRTLOCKVALRECEXCL pRec, RTTHREAD hThreadSelf, + PCRTLOCKVALSRCPOS pSrcPos, RTMSINTERVAL cMillies); + +/** + * Do deadlock detection before blocking on exclusive access to a lock and + * change the thread state. + * + * @retval VINF_SUCCESS - thread is in the specified sleep state. + * @retval VERR_SEM_LV_DEADLOCK if blocking would deadlock. Gone thru the + * motions. + * @retval VERR_SEM_LV_NESTED if the semaphore isn't recursive and hThread is + * already the owner. Gone thru the motions. + * @retval VERR_SEM_LV_ILLEGAL_UPGRADE if it's a deadlock on the same lock. + * The caller must handle any legal upgrades without invoking this + * function (for now). + * @retval VERR_SEM_LV_INVALID_PARAMETER if the input is invalid. + * + * @param pRec The validator record we're blocking on. + * @param hThreadSelf The current thread. Shall not be NIL_RTTHREAD! + * @param pSrcPos The source position of the lock operation. + * @param fRecursiveOk Whether it's ok to recurse. + * @param cMillies The timeout, in milliseconds. + * @param enmSleepState The sleep state to enter on successful return. + * @param fReallySleeping Is it really going to sleep now or not. Use + * false before calls to other IPRT synchronization + * methods. + */ +RTDECL(int) RTLockValidatorRecExclCheckBlocking(PRTLOCKVALRECEXCL pRec, RTTHREAD hThreadSelf, + PCRTLOCKVALSRCPOS pSrcPos, bool fRecursiveOk, RTMSINTERVAL cMillies, + RTTHREADSTATE enmSleepState, bool fReallySleeping); + +/** + * RTLockValidatorRecExclCheckOrder and RTLockValidatorRecExclCheckBlocking + * baked into one call. + * + * @returns Any of the statuses returned by the two APIs. + * @param pRec The validator record. + * @param hThreadSelf The current thread. Shall not be NIL_RTTHREAD! + * @param pSrcPos The source position of the lock operation. + * @param fRecursiveOk Whether it's ok to recurse. + * @param cMillies The timeout, in milliseconds. + * @param enmSleepState The sleep state to enter on successful return. + * @param fReallySleeping Is it really going to sleep now or not. Use + * false before calls to other IPRT synchronization + * methods. + */ +RTDECL(int) RTLockValidatorRecExclCheckOrderAndBlocking(PRTLOCKVALRECEXCL pRec, RTTHREAD hThreadSelf, + PCRTLOCKVALSRCPOS pSrcPos, bool fRecursiveOk, RTMSINTERVAL cMillies, + RTTHREADSTATE enmSleepState, bool fReallySleeping); + +/** + * Initialize a lock validator record for a shared lock. + * + * Use RTLockValidatorRecSharedDelete to deinitialize it. + * + * @param pRec The shared lock record. + * @param hClass The class (no reference consumed). If NIL, the + * no lock order validation will be performed on + * this lock. + * @param uSubClass The sub-class. This is used to define lock + * order inside the same class. If you don't know, + * then pass RTLOCKVAL_SUB_CLASS_NONE. + * @param hLock The lock handle. + * @param fSignaller Set if event semaphore signaller logic should be + * applied to this record, clear if read-write + * semaphore logic should be used. + * @param fEnabled Pass @c false to explicitly disable lock + * validation, otherwise @c true. + * @param pszNameFmt Name format string for the lock validator, + * optional (NULL). Max length is 32 bytes. + * @param ... Format string arguments. + */ +RTDECL(void) RTLockValidatorRecSharedInit(PRTLOCKVALRECSHRD pRec, RTLOCKVALCLASS hClass, uint32_t uSubClass, + void *hLock, bool fSignaller, bool fEnabled, const char *pszNameFmt, ...); + +/** + * Initialize a lock validator record for a shared lock. + * + * Use RTLockValidatorRecSharedDelete to deinitialize it. + * + * @param pRec The shared lock record. + * @param hClass The class (no reference consumed). If NIL, the + * no lock order validation will be performed on + * this lock. + * @param uSubClass The sub-class. This is used to define lock + * order inside the same class. If you don't know, + * then pass RTLOCKVAL_SUB_CLASS_NONE. + * @param hLock The lock handle. + * @param fSignaller Set if event semaphore signaller logic should be + * applied to this record, clear if read-write + * semaphore logic should be used. + * @param fEnabled Pass @c false to explicitly disable lock + * validation, otherwise @c true. + * @param pszNameFmt Name format string for the lock validator, + * optional (NULL). Max length is 32 bytes. + * @param va Format string arguments. + */ +RTDECL(void) RTLockValidatorRecSharedInitV(PRTLOCKVALRECSHRD pRec, RTLOCKVALCLASS hClass, uint32_t uSubClass, + void *hLock, bool fSignaller, bool fEnabled, const char *pszNameFmt, va_list va); + +/** + * Uninitialize a lock validator record previously initialized by + * RTLockValidatorRecSharedInit. + * + * @param pRec The shared lock record. Must be valid. + */ +RTDECL(void) RTLockValidatorRecSharedDelete(PRTLOCKVALRECSHRD pRec); + +/** + * Create and initialize a lock validator record for a shared lock. + * + * Use RTLockValidatorRecSharedDestroy to deinitialize and destroy the returned + * record. + * + * @returns IPRT status code. + * @param ppRec Where to return the record pointer. + * @param hClass The class (no reference consumed). If NIL, the + * no lock order validation will be performed on + * this lock. + * @param uSubClass The sub-class. This is used to define lock + * order inside the same class. If you don't know, + * then pass RTLOCKVAL_SUB_CLASS_NONE. + * @param pvLock The lock handle or address. + * @param fSignaller Set if event semaphore signaller logic should be + * applied to this record, clear if read-write + * semaphore logic should be used. + * @param fEnabled Pass @c false to explicitly disable lock + * validation, otherwise @c true. + * @param pszNameFmt Name format string for the lock validator, + * optional (NULL). Max length is 32 bytes. + * @param ... Format string arguments. + */ +RTDECL(int) RTLockValidatorRecSharedCreate(PRTLOCKVALRECSHRD *ppRec, RTLOCKVALCLASS hClass, uint32_t uSubClass, + void *pvLock, bool fSignaller, bool fEnabled, const char *pszNameFmt, ...); + +/** + * Create and initialize a lock validator record for a shared lock. + * + * Use RTLockValidatorRecSharedDestroy to deinitialize and destroy the returned + * record. + * + * @returns IPRT status code. + * @param ppRec Where to return the record pointer. + * @param hClass The class (no reference consumed). If NIL, the + * no lock order validation will be performed on + * this lock. + * @param uSubClass The sub-class. This is used to define lock + * order inside the same class. If you don't know, + * then pass RTLOCKVAL_SUB_CLASS_NONE. + * @param pvLock The lock handle or address. + * @param fSignaller Set if event semaphore signaller logic should be + * applied to this record, clear if read-write + * semaphore logic should be used. + * @param fEnabled Pass @c false to explicitly disable lock + * validation, otherwise @c true. + * @param pszNameFmt Name format string for the lock validator, + * optional (NULL). Max length is 32 bytes. + * @param va Format string arguments. + */ +RTDECL(int) RTLockValidatorRecSharedCreateV(PRTLOCKVALRECSHRD *ppRec, RTLOCKVALCLASS hClass, uint32_t uSubClass, + void *pvLock, bool fSignaller, bool fEnabled, const char *pszNameFmt, va_list va); + +/** + * Deinitialize and destroy a record created by RTLockValidatorRecSharedCreate. + * + * @param ppRec Pointer to the record pointer. Will be set to + * NULL. + */ +RTDECL(void) RTLockValidatorRecSharedDestroy(PRTLOCKVALRECSHRD *ppRec); + +/** + * Sets the sub-class of the record. + * + * It is recommended to try make sure that nobody is using this class while + * changing the value. + * + * @returns The old sub-class. RTLOCKVAL_SUB_CLASS_INVALID is returns if the + * lock validator isn't compiled in or either of the parameters are + * invalid. + * @param pRec The validator record. + * @param uSubClass The new sub-class value. + */ +RTDECL(uint32_t) RTLockValidatorRecSharedSetSubClass(PRTLOCKVALRECSHRD pRec, uint32_t uSubClass); + +/** + * Check the shared locking order. + * + * This is called by routines implementing shared lock acquisition. + * + * @retval VINF_SUCCESS on success. + * @retval VERR_SEM_LV_WRONG_ORDER if the order is wrong. Will have done all + * necessary whining and breakpointing before returning. + * @retval VERR_SEM_LV_INVALID_PARAMETER if the input is invalid. + * + * @param pRec The validator record. + * @param hThreadSelf The handle of the calling thread. If not known, + * pass NIL_RTTHREAD and we'll figure it out. + * @param pSrcPos The source position of the lock operation. + */ +RTDECL(int) RTLockValidatorRecSharedCheckOrder(PRTLOCKVALRECSHRD pRec, RTTHREAD hThreadSelf, + PCRTLOCKVALSRCPOS pSrcPos, RTMSINTERVAL cMillies); + +/** + * Do deadlock detection before blocking on shared access to a lock and change + * the thread state. + * + * @retval VINF_SUCCESS - thread is in the specified sleep state. + * @retval VERR_SEM_LV_DEADLOCK if blocking would deadlock. Gone thru the + * motions. + * @retval VERR_SEM_LV_NESTED if the semaphore isn't recursive and hThread is + * already the owner. Gone thru the motions. + * @retval VERR_SEM_LV_ILLEGAL_UPGRADE if it's a deadlock on the same lock. + * The caller must handle any legal upgrades without invoking this + * function (for now). + * @retval VERR_SEM_LV_INVALID_PARAMETER if the input is invalid. + * + * @param pRec The validator record we're blocking on. + * @param hThreadSelf The current thread. Shall not be NIL_RTTHREAD! + * @param pSrcPos The source position of the lock operation. + * @param fRecursiveOk Whether it's ok to recurse. + * @param enmSleepState The sleep state to enter on successful return. + * @param fReallySleeping Is it really going to sleep now or not. Use + * false before calls to other IPRT synchronization + * methods. + */ +RTDECL(int) RTLockValidatorRecSharedCheckBlocking(PRTLOCKVALRECSHRD pRec, RTTHREAD hThreadSelf, + PCRTLOCKVALSRCPOS pSrcPos, bool fRecursiveOk, RTMSINTERVAL cMillies, + RTTHREADSTATE enmSleepState, bool fReallySleeping); + +/** + * RTLockValidatorRecSharedCheckOrder and RTLockValidatorRecSharedCheckBlocking + * baked into one call. + * + * @returns Any of the statuses returned by the two APIs. + * @param pRec The validator record. + * @param hThreadSelf The current thread. Shall not be NIL_RTTHREAD! + * @param pSrcPos The source position of the lock operation. + * @param fRecursiveOk Whether it's ok to recurse. + * @param enmSleepState The sleep state to enter on successful return. + * @param fReallySleeping Is it really going to sleep now or not. Use + * false before calls to other IPRT synchronization + * methods. + */ +RTDECL(int) RTLockValidatorRecSharedCheckOrderAndBlocking(PRTLOCKVALRECSHRD pRec, RTTHREAD hThreadSelf, + PCRTLOCKVALSRCPOS pSrcPos, bool fRecursiveOk, RTMSINTERVAL cMillies, + RTTHREADSTATE enmSleepState, bool fReallySleeping); + +/** + * Removes all current owners and makes hThread the only owner. + * + * @param pRec The validator record. + * @param hThread The thread handle of the owner. NIL_RTTHREAD is + * an alias for the current thread. + * @param pSrcPos The source position of the lock operation. + */ +RTDECL(void) RTLockValidatorRecSharedResetOwner(PRTLOCKVALRECSHRD pRec, RTTHREAD hThread, PCRTLOCKVALSRCPOS pSrcPos); + +/** + * Adds an owner to a shared locking record. + * + * Takes recursion into account. This function is typically called after + * acquiring the lock in shared mode. + * + * @param pRec The validator record. + * @param hThread The thread handle of the owner. NIL_RTTHREAD is + * an alias for the current thread. + * @param pSrcPos The source position of the lock operation. + */ +RTDECL(void) RTLockValidatorRecSharedAddOwner(PRTLOCKVALRECSHRD pRec, RTTHREAD hThread, PCRTLOCKVALSRCPOS pSrcPos); + +/** + * Removes an owner from a shared locking record. + * + * Takes recursion into account. This function is typically called before + * releasing the lock. + * + * @param pRec The validator record. + * @param hThread The thread handle of the owner. NIL_RTTHREAD is + * an alias for the current thread. + */ +RTDECL(void) RTLockValidatorRecSharedRemoveOwner(PRTLOCKVALRECSHRD pRec, RTTHREAD hThread); + +/** + * Checks if the specified thread is one of the owners. + * + * @returns true if it is, false if not. + * + * @param pRec The validator record. + * @param hThread The thread handle of the owner. NIL_RTTHREAD is + * an alias for the current thread. + */ +RTDECL(bool) RTLockValidatorRecSharedIsOwner(PRTLOCKVALRECSHRD pRec, RTTHREAD hThread); + +/** + * Check the exit order and release (unset) the shared ownership. + * + * This is called by routines implementing releasing the read/write lock. + * + * @retval VINF_SUCCESS on success. + * @retval VERR_SEM_LV_WRONG_RELEASE_ORDER if the order is wrong. Will have + * done all necessary whining and breakpointing before returning. + * @retval VERR_SEM_LV_INVALID_PARAMETER if the input is invalid. + * + * @param pRec The validator record. + * @param hThreadSelf The handle of the calling thread. NIL_RTTHREAD + * is an alias for the current thread. + */ +RTDECL(int) RTLockValidatorRecSharedCheckAndRelease(PRTLOCKVALRECSHRD pRec, RTTHREAD hThreadSelf); + +/** + * Check the signaller of an event. + * + * This is called by routines implementing releasing the event semaphore (both + * kinds). + * + * @retval VINF_SUCCESS on success. + * @retval VERR_SEM_LV_NOT_SIGNALLER if the thread is not in the record. Will + * have done all necessary whining and breakpointing before returning. + * @retval VERR_SEM_LV_INVALID_PARAMETER if the input is invalid. + * + * @param pRec The validator record. + * @param hThreadSelf The handle of the calling thread. NIL_RTTHREAD + * is an alias for the current thread. + */ +RTDECL(int) RTLockValidatorRecSharedCheckSignaller(PRTLOCKVALRECSHRD pRec, RTTHREAD hThreadSelf); + +/** + * Gets the number of write locks and critical sections the specified + * thread owns. + * + * This number does not include any nested lock/critect entries. + * + * Note that it probably will return 0 for non-strict builds since + * release builds doesn't do unnecessary diagnostic counting like this. + * + * @returns Number of locks on success (0+) and VERR_INVALID_HANDLER on failure + * @param Thread The thread we're inquiring about. + * @remarks Will only work for strict builds. + */ +RTDECL(int32_t) RTLockValidatorWriteLockGetCount(RTTHREAD Thread); + +/** + * Works the THREADINT::cWriteLocks member, mostly internal. + * + * @param Thread The current thread. + */ +RTDECL(void) RTLockValidatorWriteLockInc(RTTHREAD Thread); + +/** + * Works the THREADINT::cWriteLocks member, mostly internal. + * + * @param Thread The current thread. + */ +RTDECL(void) RTLockValidatorWriteLockDec(RTTHREAD Thread); + +/** + * Gets the number of read locks the specified thread owns. + * + * Note that nesting read lock entry will be included in the + * total sum. And that it probably will return 0 for non-strict + * builds since release builds doesn't do unnecessary diagnostic + * counting like this. + * + * @returns Number of read locks on success (0+) and VERR_INVALID_HANDLER on failure + * @param Thread The thread we're inquiring about. + */ +RTDECL(int32_t) RTLockValidatorReadLockGetCount(RTTHREAD Thread); + +/** + * Works the THREADINT::cReadLocks member. + * + * @param Thread The current thread. + */ +RTDECL(void) RTLockValidatorReadLockInc(RTTHREAD Thread); + +/** + * Works the THREADINT::cReadLocks member. + * + * @param Thread The current thread. + */ +RTDECL(void) RTLockValidatorReadLockDec(RTTHREAD Thread); + +/** + * Query which lock the specified thread is waiting on. + * + * @returns The lock handle value or NULL. + * @param hThread The thread in question. + */ +RTDECL(void *) RTLockValidatorQueryBlocking(RTTHREAD hThread); + +/** + * Checks if the thread is running in the lock validator after it has entered a + * block state. + * + * @returns true if it is, false if it isn't. + * @param hThread The thread in question. + */ +RTDECL(bool) RTLockValidatorIsBlockedThreadInValidator(RTTHREAD hThread); + +/** + * Checks if the calling thread is holding a lock in the specified class. + * + * @returns true if it holds a lock in the specific class, false if it + * doesn't. + * + * @param hCurrentThread The current thread. Pass NIL_RTTHREAD if you're + * lazy. + * @param hClass The class. + */ +RTDECL(bool) RTLockValidatorHoldsLocksInClass(RTTHREAD hCurrentThread, RTLOCKVALCLASS hClass); + +/** + * Checks if the calling thread is holding a lock in the specified sub-class. + * + * @returns true if it holds a lock in the specific sub-class, false if it + * doesn't. + * + * @param hCurrentThread The current thread. Pass NIL_RTTHREAD if you're + * lazy. + * @param hClass The class. + * @param uSubClass The new sub-class value. + */ +RTDECL(bool) RTLockValidatorHoldsLocksInSubClass(RTTHREAD hCurrentThread, RTLOCKVALCLASS hClass, uint32_t uSubClass); + + + +/** + * Creates a new lock validator class, all properties specified. + * + * @returns IPRT status code + * @param phClass Where to return the class handle. + * @param pSrcPos The source position of the create call. + * @param fAutodidact Whether the class should be allowed to teach + * itself new locking order rules (true), or if the + * user will teach it all it needs to know (false). + * @param fRecursionOk Whether to allow lock recursion or not. + * @param fStrictReleaseOrder Enforce strict lock release order or not. + * @param cMsMinDeadlock Used to raise the sleep interval at which + * deadlock detection kicks in. Minimum is 1 ms, + * while RT_INDEFINITE_WAIT will disable it. + * @param cMsMinOrder Used to raise the sleep interval at which lock + * order validation kicks in. Minimum is 1 ms, + * while RT_INDEFINITE_WAIT will disable it. + * @param pszNameFmt Class name format string, optional (NULL). Max + * length is 32 bytes. + * @param ... Format string arguments. + * + * @remarks The properties can be modified after creation by the + * RTLockValidatorClassSet* methods. + */ +RTDECL(int) RTLockValidatorClassCreateEx(PRTLOCKVALCLASS phClass, PCRTLOCKVALSRCPOS pSrcPos, + bool fAutodidact, bool fRecursionOk, bool fStrictReleaseOrder, + RTMSINTERVAL cMsMinDeadlock, RTMSINTERVAL cMsMinOrder, + const char *pszNameFmt, ...); + +/** + * Creates a new lock validator class, all properties specified. + * + * @returns IPRT status code + * @param phClass Where to return the class handle. + * @param pSrcPos The source position of the create call. + * @param fAutodidact Whether the class should be allowed to teach + * itself new locking order rules (true), or if the + * user will teach it all it needs to know (false). + * @param fRecursionOk Whether to allow lock recursion or not. + * @param fStrictReleaseOrder Enforce strict lock release order or not. + * @param cMsMinDeadlock Used to raise the sleep interval at which + * deadlock detection kicks in. Minimum is 1 ms, + * while RT_INDEFINITE_WAIT will disable it. + * @param cMsMinOrder Used to raise the sleep interval at which lock + * order validation kicks in. Minimum is 1 ms, + * while RT_INDEFINITE_WAIT will disable it. + * @param pszNameFmt Class name format string, optional (NULL). Max + * length is 32 bytes. + * @param va Format string arguments. + * + * @remarks The properties can be modified after creation by the + * RTLockValidatorClassSet* methods. + */ +RTDECL(int) RTLockValidatorClassCreateExV(PRTLOCKVALCLASS phClass, PCRTLOCKVALSRCPOS pSrcPos, + bool fAutodidact, bool fRecursionOk, bool fStrictReleaseOrder, + RTMSINTERVAL cMsMinDeadlock, RTMSINTERVAL cMsMinOrder, + const char *pszNameFmt, va_list va); + +/** + * Creates a new lock validator class. + * + * @returns IPRT status code + * @param phClass Where to return the class handle. + * @param fAutodidact Whether the class should be allowed to teach + * itself new locking order rules (true), or if the + * user will teach it all it needs to know (false). + * @param pszFile The source position of the call, file. + * @param iLine The source position of the call, line. + * @param pszFunction The source position of the call, function. + * @param pszNameFmt Class name format string, optional (NULL). Max + * length is 32 bytes. + * @param ... Format string arguments. + */ +RTDECL(int) RTLockValidatorClassCreate(PRTLOCKVALCLASS phClass, bool fAutodidact, RT_SRC_POS_DECL, const char *pszNameFmt, ...); + +/** + * Creates a new lock validator class with a reference that is consumed by the + * first call to RTLockValidatorClassRetain. + * + * This is tailored for use in the parameter list of a semaphore constructor. + * + * @returns Class handle with a reference that is automatically consumed by the + * first retainer. NIL_RTLOCKVALCLASS if we run into trouble. + * + * @param pszFile The source position of the call, file. + * @param iLine The source position of the call, line. + * @param pszFunction The source position of the call, function. + * @param pszNameFmt Class name format string, optional (NULL). Max + * length is 32 bytes. + * @param ... Format string arguments. + */ +RTDECL(RTLOCKVALCLASS) RTLockValidatorClassCreateUnique(RT_SRC_POS_DECL, const char *pszNameFmt, ...); + +/** + * Finds a class for the specified source position. + * + * @returns A handle to the class (not retained!) or NIL_RTLOCKVALCLASS. + * @param pSrcPos The source position. + */ +RTDECL(RTLOCKVALCLASS) RTLockValidatorClassFindForSrcPos(PRTLOCKVALSRCPOS pSrcPos); + +/** + * Finds or creates a class given the source position. + * + * @returns Class handle (not retained!) or NIL_RTLOCKVALCLASS. + * @param pszFile The source file. + * @param iLine The line in that source file. + * @param pszFunction The function name. + * @param pszNameFmt Class name format string, optional (NULL). Max + * length is 32 bytes. + * @param ... Format string arguments. + */ +RTDECL(RTLOCKVALCLASS) RTLockValidatorClassForSrcPos(RT_SRC_POS_DECL, const char *pszNameFmt, ...); + +/** + * Retains a reference to a lock validator class. + * + * @returns New reference count; UINT32_MAX if the handle is invalid. + * @param hClass Handle to the class. + */ +RTDECL(uint32_t) RTLockValidatorClassRetain(RTLOCKVALCLASS hClass); + +/** + * Releases a reference to a lock validator class. + * + * @returns New reference count. 0 if hClass is NIL_RTLOCKVALCLASS. UINT32_MAX + * if the handle is invalid. + * @param hClass Handle to the class. + */ +RTDECL(uint32_t) RTLockValidatorClassRelease(RTLOCKVALCLASS hClass); + +/** + * Teaches the class @a hClass that locks in the class @a hPriorClass can be + * held when taking a lock of class @hClass + * + * @returns IPRT status. + * @param hClass Handle to the pupil class. + * @param hPriorClass Handle to the class that can be held prior to + * taking a lock in the pupil class. (No reference + * is consumed.) + */ +RTDECL(int) RTLockValidatorClassAddPriorClass(RTLOCKVALCLASS hClass, RTLOCKVALCLASS hPriorClass); + +/** + * Enables or disables the strict release order enforcing. + * + * @returns IPRT status. + * @param hClass Handle to the class to change. + * @param fEnable Enable it (true) or disable it (false). + */ +RTDECL(int) RTLockValidatorClassEnforceStrictReleaseOrder(RTLOCKVALCLASS hClass, bool fEnabled); + +/** + * Enables / disables the lock validator for new locks. + * + * @returns The old setting. + * @param fEnabled The new setting. + */ +RTDECL(bool) RTLockValidatorSetEnabled(bool fEnabled); + +/** + * Is the lock validator enabled? + * + * @returns True if enabled, false if not. + */ +RTDECL(bool) RTLockValidatorIsEnabled(void); + +/** + * Controls whether the lock validator should be quiet or noisy (default). + * + * @returns The old setting. + * @param fQuiet The new setting. + */ +RTDECL(bool) RTLockValidatorSetQuiet(bool fQuiet); + +/** + * Is the lock validator quiet or noisy? + * + * @returns True if it is quiet, false if noisy. + */ +RTDECL(bool) RTLockValidatorIsQuiet(void); + +/** + * Makes the lock validator panic (default) or not. + * + * @returns The old setting. + * @param fPanic The new setting. + */ +RTDECL(bool) RTLockValidatorSetMayPanic(bool fPanic); + +/** + * Can the lock validator cause panic. + * + * @returns True if it can, false if not. + */ +RTDECL(bool) RTLockValidatorMayPanic(void); + + +RT_C_DECLS_END + +/** @} */ + +#endif + --- linux-raspi2-4.2.0.orig/ubuntu/vbox/include/iprt/log.h +++ linux-raspi2-4.2.0/ubuntu/vbox/include/iprt/log.h @@ -0,0 +1,2518 @@ +/** @file + * IPRT - Logging. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + +#ifndef ___iprt_log_h +#define ___iprt_log_h + +#include +#include +#include + +RT_C_DECLS_BEGIN + +/** @defgroup grp_rt_log RTLog - Logging + * @ingroup grp_rt + * @{ + */ + +/** + * IPRT Logging Groups. + * (Remember to update RT_LOGGROUP_NAMES!) + * + * @remark It should be pretty obvious, but just to have + * mentioned it, the values are sorted alphabetically (using the + * english alphabet) except for _DEFAULT which is always first. + * + * If anyone might be wondering what the alphabet looks like: + * a b c d e f g h i j k l m n o p q r s t u v w x y z + */ +typedef enum RTLOGGROUP +{ + /** Default logging group. */ + RTLOGGROUP_DEFAULT, + RTLOGGROUP_DBG, + RTLOGGROUP_DBG_DWARF, + RTLOGGROUP_DIR, + RTLOGGROUP_FILE, + RTLOGGROUP_FS, + RTLOGGROUP_LDR, + RTLOGGROUP_PATH, + RTLOGGROUP_PROCESS, + RTLOGGROUP_SYMLINK, + RTLOGGROUP_THREAD, + RTLOGGROUP_TIME, + RTLOGGROUP_TIMER, + RTLOGGROUP_ZIP = 31, + RTLOGGROUP_FIRST_USER = 32 +} RTLOGGROUP; + +/** @def RT_LOGGROUP_NAMES + * IPRT Logging group names. + * + * Must correspond 100% to RTLOGGROUP! + * Don't forget commas! + * + * @remark It should be pretty obvious, but just to have + * mentioned it, the values are sorted alphabetically (using the + * english alphabet) except for _DEFAULT which is always first. + * + * If anyone might be wondering what the alphabet looks like: + * a b c d e f g h i j k l m n o p q r s t u v w x y z + */ +#define RT_LOGGROUP_NAMES \ + "DEFAULT", \ + "RT_DBG", \ + "RT_DBG_DWARF", \ + "RT_DIR", \ + "RT_FILE", \ + "RT_FS", \ + "RT_LDR", \ + "RT_PATH", \ + "RT_PROCESS", \ + "RT_SYMLINK", \ + "RT_THREAD", \ + "RT_TIME", \ + "RT_TIMER", \ + "RT_13", \ + "RT_14", \ + "RT_15", \ + "RT_16", \ + "RT_17", \ + "RT_18", \ + "RT_19", \ + "RT_20", \ + "RT_21", \ + "RT_22", \ + "RT_23", \ + "RT_24", \ + "RT_25", \ + "RT_26", \ + "RT_27", \ + "RT_28", \ + "RT_29", \ + "RT_30", \ + "RT_ZIP" \ + + +/** @def LOG_GROUP + * Active logging group. + */ +#ifndef LOG_GROUP +# define LOG_GROUP RTLOGGROUP_DEFAULT +#endif + +/** @def LOG_FN_FMT + * You can use this to specify you desired way of printing __PRETTY_FUNCTION__ + * if you dislike the default one. + */ +#ifndef LOG_FN_FMT +# define LOG_FN_FMT "%Rfn" +#endif + +#ifdef LOG_INSTANCE +# error "LOG_INSTANCE is no longer supported." +#endif +#ifdef LOG_REL_INSTANCE +# error "LOG_REL_INSTANCE is no longer supported." +#endif + +/** Logger structure. */ +#ifdef IN_RC +typedef struct RTLOGGERRC RTLOGGER; +#else +typedef struct RTLOGGER RTLOGGER; +#endif +/** Pointer to logger structure. */ +typedef RTLOGGER *PRTLOGGER; +/** Pointer to const logger structure. */ +typedef const RTLOGGER *PCRTLOGGER; + + +/** Guest context logger structure. */ +typedef struct RTLOGGERRC RTLOGGERRC; +/** Pointer to guest context logger structure. */ +typedef RTLOGGERRC *PRTLOGGERRC; +/** Pointer to const guest context logger structure. */ +typedef const RTLOGGERRC *PCRTLOGGERRC; + + +/** + * Logger phase. + * + * Used for signalling the log header/footer callback what to do. + */ +typedef enum RTLOGPHASE +{ + /** Begin of the logging. */ + RTLOGPHASE_BEGIN = 0, + /** End of the logging. */ + RTLOGPHASE_END, + /** Before rotating the log file. */ + RTLOGPHASE_PREROTATE, + /** After rotating the log file. */ + RTLOGPHASE_POSTROTATE, + /** 32-bit type blow up hack. */ + RTLOGPHASE_32BIT_HACK = 0x7fffffff +} RTLOGPHASE; + + +/** + * Logger function. + * + * @param pszFormat Format string. + * @param ... Optional arguments as specified in the format string. + */ +typedef DECLCALLBACK(void) FNRTLOGGER(const char *pszFormat, ...); +/** Pointer to logger function. */ +typedef FNRTLOGGER *PFNRTLOGGER; + +/** + * Flush function. + * + * @param pLogger Pointer to the logger instance which is to be flushed. + */ +typedef DECLCALLBACK(void) FNRTLOGFLUSH(PRTLOGGER pLogger); +/** Pointer to flush function. */ +typedef FNRTLOGFLUSH *PFNRTLOGFLUSH; + +/** + * Flush function. + * + * @param pLogger Pointer to the logger instance which is to be flushed. + */ +typedef DECLCALLBACK(void) FNRTLOGFLUSHGC(PRTLOGGERRC pLogger); +/** Pointer to logger function. */ +typedef RCPTRTYPE(FNRTLOGFLUSHGC *) PFNRTLOGFLUSHGC; + +/** + * Header/footer message callback. + * + * @param pLogger Pointer to the logger instance. + * @param pszFormat Format string. + * @param ... Optional arguments specified in the format string. + */ +typedef DECLCALLBACK(void) FNRTLOGPHASEMSG(PRTLOGGER pLogger, const char *pszFormat, ...); +/** Pointer to header/footer message callback function. */ +typedef FNRTLOGPHASEMSG *PFNRTLOGPHASEMSG; + +/** + * Log file header/footer callback. + * + * @param pLogger Pointer to the logger instance. + * @param enmLogPhase Indicates at what time the callback is invoked. + * @param pfnLogPhaseMsg Callback for writing the header/footer (RTLogPrintf + * and others are out of bounds). + */ +typedef DECLCALLBACK(void) FNRTLOGPHASE(PRTLOGGER pLogger, RTLOGPHASE enmLogPhase, PFNRTLOGPHASEMSG pfnLogPhaseMsg); +/** Pointer to log header/footer callback function. */ +typedef FNRTLOGPHASE *PFNRTLOGPHASE; + +/** + * Custom log prefix callback. + * + * + * @returns The number of chars written. + * + * @param pLogger Pointer to the logger instance. + * @param pchBuf Output buffer pointer. + * No need to terminate the output. + * @param cchBuf The size of the output buffer. + * @param pvUser The user argument. + */ +typedef DECLCALLBACK(size_t) FNRTLOGPREFIX(PRTLOGGER pLogger, char *pchBuf, size_t cchBuf, void *pvUser); +/** Pointer to prefix callback function. */ +typedef FNRTLOGPREFIX *PFNRTLOGPREFIX; + + + +/** + * Logger instance structure for raw-mode context (RC). + */ +struct RTLOGGERRC +{ + /** Pointer to temporary scratch buffer. + * This is used to format the log messages. */ + char achScratch[32768]; + /** Current scratch buffer position. */ + uint32_t offScratch; + /** This is set if a prefix is pending. */ + bool fPendingPrefix; + bool afAlignment[3]; + /** Pointer to the logger function. + * This is actually pointer to a wrapper which will push a pointer to the + * instance pointer onto the stack before jumping to the real logger function. + * A very unfortunate hack to work around the missing variadic macro support in C++. */ + RCPTRTYPE(PFNRTLOGGER) pfnLogger; + /** Pointer to the flush function. */ + PFNRTLOGFLUSHGC pfnFlush; + /** Magic number (RTLOGGERRC_MAGIC). */ + uint32_t u32Magic; + /** Logger instance flags - RTLOGFLAGS. */ + uint32_t fFlags; + /** Number of groups in the afGroups member. */ + uint32_t cGroups; + /** Group flags array - RTLOGGRPFLAGS. + * This member have variable length and may extend way beyond + * the declared size of 1 entry. */ + uint32_t afGroups[1]; +}; + +/** RTLOGGERRC::u32Magic value. (John Rogers Searle) */ +#define RTLOGGERRC_MAGIC 0x19320731 + + + +#ifndef IN_RC + +/** Pointer to internal logger bits. */ +typedef struct RTLOGGERINTERNAL *PRTLOGGERINTERNAL; + +/** + * Logger instance structure. + */ +struct RTLOGGER +{ + /** Pointer to temporary scratch buffer. + * This is used to format the log messages. */ + char achScratch[49152]; + /** Current scratch buffer position. */ + uint32_t offScratch; + /** Magic number. */ + uint32_t u32Magic; + /** Logger instance flags - RTLOGFLAGS. */ + uint32_t fFlags; + /** Destination flags - RTLOGDEST. */ + uint32_t fDestFlags; + /** Pointer to the internal bits of the logger. + * (The memory is allocated in the same block as RTLOGGER.) */ + PRTLOGGERINTERNAL pInt; + /** Pointer to the logger function (used in non-C99 mode only). + * + * This is actually pointer to a wrapper which will push a pointer to the + * instance pointer onto the stack before jumping to the real logger function. + * A very unfortunate hack to work around the missing variadic macro + * support in older C++/C standards. (The memory is allocated using + * RTMemExecAlloc(), except for agnostic R0 code.) */ + PFNRTLOGGER pfnLogger; + /** Number of groups in the afGroups and papszGroups members. */ + uint32_t cGroups; + /** Group flags array - RTLOGGRPFLAGS. + * This member have variable length and may extend way beyond + * the declared size of 1 entry. */ + uint32_t afGroups[1]; +}; + +/** RTLOGGER::u32Magic value. (Avram Noam Chomsky) */ +# define RTLOGGER_MAGIC UINT32_C(0x19281207) + +#endif /* !IN_RC */ + + +/** + * Logger flags. + */ +typedef enum RTLOGFLAGS +{ + /** The logger instance is disabled for normal output. */ + RTLOGFLAGS_DISABLED = 0x00000001, + /** The logger instance is using buffered output. */ + RTLOGFLAGS_BUFFERED = 0x00000002, + /** The logger instance expands LF to CR/LF. */ + RTLOGFLAGS_USECRLF = 0x00000010, + /** Append to the log destination where applicable. */ + RTLOGFLAGS_APPEND = 0x00000020, + /** Show relative timestamps with PREFIX_TSC and PREFIX_TS */ + RTLOGFLAGS_REL_TS = 0x00000040, + /** Show decimal timestamps with PREFIX_TSC and PREFIX_TS */ + RTLOGFLAGS_DECIMAL_TS = 0x00000080, + /** Open the file in write through mode. */ + RTLOGFLAGS_WRITE_THROUGH = 0x00000100, + /** Flush the file to disk when flushing the buffer. */ + RTLOGFLAGS_FLUSH = 0x00000200, + /** Restrict the number of log entries per group. */ + RTLOGFLAGS_RESTRICT_GROUPS = 0x00000400, + /** New lines should be prefixed with the write and read lock counts. */ + RTLOGFLAGS_PREFIX_LOCK_COUNTS = 0x00008000, + /** New lines should be prefixed with the CPU id (ApicID on intel/amd). */ + RTLOGFLAGS_PREFIX_CPUID = 0x00010000, + /** New lines should be prefixed with the native process id. */ + RTLOGFLAGS_PREFIX_PID = 0x00020000, + /** New lines should be prefixed with group flag number causing the output. */ + RTLOGFLAGS_PREFIX_FLAG_NO = 0x00040000, + /** New lines should be prefixed with group flag name causing the output. */ + RTLOGFLAGS_PREFIX_FLAG = 0x00080000, + /** New lines should be prefixed with group number. */ + RTLOGFLAGS_PREFIX_GROUP_NO = 0x00100000, + /** New lines should be prefixed with group name. */ + RTLOGFLAGS_PREFIX_GROUP = 0x00200000, + /** New lines should be prefixed with the native thread id. */ + RTLOGFLAGS_PREFIX_TID = 0x00400000, + /** New lines should be prefixed with thread name. */ + RTLOGFLAGS_PREFIX_THREAD = 0x00800000, + /** New lines should be prefixed with data from a custom callback. */ + RTLOGFLAGS_PREFIX_CUSTOM = 0x01000000, + /** New lines should be prefixed with formatted timestamp since program start. */ + RTLOGFLAGS_PREFIX_TIME_PROG = 0x04000000, + /** New lines should be prefixed with formatted timestamp (UCT). */ + RTLOGFLAGS_PREFIX_TIME = 0x08000000, + /** New lines should be prefixed with milliseconds since program start. */ + RTLOGFLAGS_PREFIX_MS_PROG = 0x10000000, + /** New lines should be prefixed with timestamp. */ + RTLOGFLAGS_PREFIX_TSC = 0x20000000, + /** New lines should be prefixed with timestamp. */ + RTLOGFLAGS_PREFIX_TS = 0x40000000, + /** The prefix mask. */ + RTLOGFLAGS_PREFIX_MASK = 0x7dff8000 +} RTLOGFLAGS; + +/** + * Logger per group flags. + * + * @remarks We only use the lower 16 bits here. We'll be combining it with the + * group number in a few places. + */ +typedef enum RTLOGGRPFLAGS +{ + /** Enabled. */ + RTLOGGRPFLAGS_ENABLED = 0x0001, + /** Flow logging. */ + RTLOGGRPFLAGS_FLOW = 0x0002, + /** Warnings logging. */ + RTLOGGRPFLAGS_WARN = 0x0004, + /* 0x0008 for later. */ + /** Level 1 logging. */ + RTLOGGRPFLAGS_LEVEL_1 = 0x0010, + /** Level 2 logging. */ + RTLOGGRPFLAGS_LEVEL_2 = 0x0020, + /** Level 3 logging. */ + RTLOGGRPFLAGS_LEVEL_3 = 0x0040, + /** Level 4 logging. */ + RTLOGGRPFLAGS_LEVEL_4 = 0x0080, + /** Level 5 logging. */ + RTLOGGRPFLAGS_LEVEL_5 = 0x0100, + /** Level 6 logging. */ + RTLOGGRPFLAGS_LEVEL_6 = 0x0200, + /** Level 7 logging. */ + RTLOGGRPFLAGS_LEVEL_7 = 0x0400, + /** Level 8 logging. */ + RTLOGGRPFLAGS_LEVEL_8 = 0x0800, + /** Level 9 logging. */ + RTLOGGRPFLAGS_LEVEL_9 = 0x1000, + /** Level 10 logging. */ + RTLOGGRPFLAGS_LEVEL_10 = 0x2000, + /** Level 11 logging. */ + RTLOGGRPFLAGS_LEVEL_11 = 0x4000, + /** Level 12 logging. */ + RTLOGGRPFLAGS_LEVEL_12 = 0x8000, + + /** Restrict the number of log entries. */ + RTLOGGRPFLAGS_RESTRICT = 0x40000000, + /** Blow up the type. */ + RTLOGGRPFLAGS_32BIT_HACK = 0x7fffffff +} RTLOGGRPFLAGS; + +/** + * Logger destination type. + */ +typedef enum RTLOGDEST +{ + /** Log to file. */ + RTLOGDEST_FILE = 0x00000001, + /** Log to stdout. */ + RTLOGDEST_STDOUT = 0x00000002, + /** Log to stderr. */ + RTLOGDEST_STDERR = 0x00000004, + /** Log to debugger (win32 only). */ + RTLOGDEST_DEBUGGER = 0x00000008, + /** Log to com port. */ + RTLOGDEST_COM = 0x00000010, + /** Log a memory ring buffer. */ + RTLOGDEST_RINGBUF = 0x00000020, + /** Just a dummy flag to be used when no other flag applies. */ + RTLOGDEST_DUMMY = 0x20000000, + /** Log to a user defined output stream. */ + RTLOGDEST_USER = 0x40000000 +} RTLOGDEST; + + +RTDECL(void) RTLogPrintfEx(void *pvInstance, unsigned fFlags, unsigned iGroup, const char *pszFormat, ...); + + +#ifdef DOXYGEN_RUNNING +# define LOG_DISABLED +# define LOG_ENABLED +# define LOG_ENABLE_FLOW +#endif + +/** @def LOG_DISABLED + * Use this compile time define to disable all logging macros. It can + * be overridden for each of the logging macros by the LOG_ENABLE* + * compile time defines. + */ + +/** @def LOG_ENABLED + * Use this compile time define to enable logging when not in debug mode + * or LOG_DISABLED is set. + * This will enabled Log() only. + */ + +/** @def LOG_ENABLE_FLOW + * Use this compile time define to enable flow logging when not in + * debug mode or LOG_DISABLED is defined. + * This will enable LogFlow() only. + */ + +/* + * Determine whether logging is enabled and forcefully normalize the indicators. + */ +#if (defined(DEBUG) || defined(LOG_ENABLED)) && !defined(LOG_DISABLED) +# undef LOG_DISABLED +# undef LOG_ENABLED +# define LOG_ENABLED +#else +# undef LOG_ENABLED +# undef LOG_DISABLED +# define LOG_DISABLED +#endif + + +/** @def LOG_USE_C99 + * Governs the use of variadic macros. + */ +#ifndef LOG_USE_C99 +# if defined(RT_ARCH_AMD64) || defined(RT_OS_DARWIN) || defined(RT_ARCH_SPARC) || defined(RT_ARCH_SPARC64) +# define LOG_USE_C99 +# endif +#endif + + +/** @name Macros for checking whether a log level is enabled. + * @{ */ +/** @def LogIsItEnabled + * Checks whether the specified logging group is enabled or not. + */ +#ifdef LOG_ENABLED +# define LogIsItEnabled(a_fFlags, a_iGroup) ( RTLogDefaultInstanceEx(RT_MAKE_U32(a_fFlags, a_iGroup)) != NULL ) +#else +# define LogIsItEnabled(a_fFlags, a_iGroup) (false) +#endif + +/** @def LogIsEnabled + * Checks whether level 1 logging is enabled. + */ +#define LogIsEnabled() LogIsItEnabled(RTLOGGRPFLAGS_LEVEL_1, LOG_GROUP) + +/** @def LogIs2Enabled + * Checks whether level 2 logging is enabled. + */ +#define LogIs2Enabled() LogIsItEnabled(RTLOGGRPFLAGS_LEVEL_2, LOG_GROUP) + +/** @def LogIs3Enabled + * Checks whether level 3 logging is enabled. + */ +#define LogIs3Enabled() LogIsItEnabled(RTLOGGRPFLAGS_LEVEL_3, LOG_GROUP) + +/** @def LogIs4Enabled + * Checks whether level 4 logging is enabled. + */ +#define LogIs4Enabled() LogIsItEnabled(RTLOGGRPFLAGS_LEVEL_4, LOG_GROUP) + +/** @def LogIs5Enabled + * Checks whether level 5 logging is enabled. + */ +#define LogIs5Enabled() LogIsItEnabled(RTLOGGRPFLAGS_LEVEL_5, LOG_GROUP) + +/** @def LogIs6Enabled + * Checks whether level 6 logging is enabled. + */ +#define LogIs6Enabled() LogIsItEnabled(RTLOGGRPFLAGS_LEVEL_6, LOG_GROUP) + +/** @def LogIs7Enabled + * Checks whether level 7 logging is enabled. + */ +#define LogIs7Enabled() LogIsItEnabled(RTLOGGRPFLAGS_LEVEL_7, LOG_GROUP) + +/** @def LogIs8Enabled + * Checks whether level 8 logging is enabled. + */ +#define LogIs8Enabled() LogIsItEnabled(RTLOGGRPFLAGS_LEVEL_8, LOG_GROUP) + +/** @def LogIs9Enabled + * Checks whether level 9 logging is enabled. + */ +#define LogIs9Enabled() LogIsItEnabled(RTLOGGRPFLAGS_LEVEL_9, LOG_GROUP) + +/** @def LogIs10Enabled + * Checks whether level 10 logging is enabled. + */ +#define LogIs10Enabled() LogIsItEnabled(RTLOGGRPFLAGS_LEVEL_10, LOG_GROUP) + +/** @def LogIs11Enabled + * Checks whether level 11 logging is enabled. + */ +#define LogIs11Enabled() LogIsItEnabled(RTLOGGRPFLAGS_LEVEL_11, LOG_GROUP) + +/** @def LogIs12Enabled + * Checks whether level 12 logging is enabled. + */ +#define LogIs12Enabled() LogIsItEnabled(RTLOGGRPFLAGS_LEVEL_12, LOG_GROUP) + +/** @def LogIsFlowEnabled + * Checks whether execution flow logging is enabled. + */ +#define LogIsFlowEnabled() LogIsItEnabled(RTLOGGRPFLAGS_FLOW, LOG_GROUP) + +/** @def LogIsWarnEnabled + * Checks whether execution flow logging is enabled. + */ +#define LogIsWarnEnabled() LogIsItEnabled(RTLOGGRPFLAGS_WARN, LOG_GROUP) +/** @} */ + + +/** @def LogIt + * Write to specific logger if group enabled. + */ +#ifdef LOG_ENABLED +# if defined(LOG_USE_C99) +# define _LogRemoveParentheseis(...) __VA_ARGS__ +# define _LogIt(a_fFlags, a_iGroup, ...) \ + do \ + { \ + register PRTLOGGER LogIt_pLogger = RTLogDefaultInstanceEx(RT_MAKE_U32(a_fFlags, a_iGroup)); \ + if (RT_LIKELY(!LogIt_pLogger)) \ + { /* likely */ } \ + else \ + RTLogLoggerEx(LogIt_pLogger, a_fFlags, a_iGroup, __VA_ARGS__); \ + } while (0) +# define LogIt(a_fFlags, a_iGroup, fmtargs) _LogIt(a_fFlags, a_iGroup, _LogRemoveParentheseis fmtargs) +# define _LogItAlways(a_fFlags, a_iGroup, ...) RTLogLoggerEx(NULL, a_fFlags, UINT32_MAX, __VA_ARGS__) +# define LogItAlways(a_fFlags, a_iGroup, fmtargs) _LogItAlways(a_fFlags, a_iGroup, _LogRemoveParentheseis fmtargs) + /** @todo invent a flag or something for skipping the group check so we can pass iGroup. LogItAlways. */ +# else +# define LogIt(a_fFlags, a_iGroup, fmtargs) \ + do \ + { \ + register PRTLOGGER LogIt_pLogger = RTLogDefaultInstanceEx(RT_MAKE_U32(a_fFlags, a_iGroup)); \ + if (RT_LIKELY(!LogIt_pLogger)) \ + { /* likely */ } \ + else \ + { \ + LogIt_pLogger->pfnLogger fmtargs; \ + } \ + } while (0) +# define LogItAlways(a_fFlags, a_iGroup, fmtargs) \ + do \ + { \ + register PRTLOGGER LogIt_pLogger = RTLogDefaultInstanceEx(RT_MAKE_U32(0, UINT16_MAX)); \ + if (LogIt_pLogger) \ + LogIt_pLogger->pfnLogger fmtargs; \ + } while (0) +# endif +#else +# define LogIt(a_fFlags, a_iGroup, fmtargs) do { } while (0) +# define LogItAlways(a_fFlags, a_iGroup, fmtargs) do { } while (0) +# if defined(LOG_USE_C99) +# define _LogRemoveParentheseis(...) __VA_ARGS__ +# define _LogIt(a_fFlags, a_iGroup, ...) do { } while (0) +# define _LogItAlways(a_fFlags, a_iGroup, ...) do { } while (0) +# endif +#endif + + +/** @name Basic logging macros + * @{ */ +/** @def Log + * Level 1 logging that works regardless of the group settings. + */ +#define LogAlways(a) LogItAlways(RTLOGGRPFLAGS_LEVEL_1, LOG_GROUP, a) + +/** @def Log + * Level 1 logging. + */ +#define Log(a) LogIt(RTLOGGRPFLAGS_LEVEL_1, LOG_GROUP, a) + +/** @def Log2 + * Level 2 logging. + */ +#define Log2(a) LogIt(RTLOGGRPFLAGS_LEVEL_2, LOG_GROUP, a) + +/** @def Log3 + * Level 3 logging. + */ +#define Log3(a) LogIt(RTLOGGRPFLAGS_LEVEL_3, LOG_GROUP, a) + +/** @def Log4 + * Level 4 logging. + */ +#define Log4(a) LogIt(RTLOGGRPFLAGS_LEVEL_4, LOG_GROUP, a) + +/** @def Log5 + * Level 5 logging. + */ +#define Log5(a) LogIt(RTLOGGRPFLAGS_LEVEL_5, LOG_GROUP, a) + +/** @def Log6 + * Level 6 logging. + */ +#define Log6(a) LogIt(RTLOGGRPFLAGS_LEVEL_6, LOG_GROUP, a) + +/** @def Log7 + * Level 7 logging. + */ +#define Log7(a) LogIt(RTLOGGRPFLAGS_LEVEL_7, LOG_GROUP, a) + +/** @def Log8 + * Level 8 logging. + */ +#define Log8(a) LogIt(RTLOGGRPFLAGS_LEVEL_8, LOG_GROUP, a) + +/** @def Log9 + * Level 9 logging. + */ +#define Log9(a) LogIt(RTLOGGRPFLAGS_LEVEL_9, LOG_GROUP, a) + +/** @def Log10 + * Level 10 logging. + */ +#define Log10(a) LogIt(RTLOGGRPFLAGS_LEVEL_10, LOG_GROUP, a) + +/** @def Log11 + * Level 11 logging. + */ +#define Log11(a) LogIt(RTLOGGRPFLAGS_LEVEL_11, LOG_GROUP, a) + +/** @def Log12 + * Level 12 logging. + */ +#define Log12(a) LogIt(RTLOGGRPFLAGS_LEVEL_12, LOG_GROUP, a) + +/** @def LogFlow + * Logging of execution flow. + */ +#define LogFlow(a) LogIt(RTLOGGRPFLAGS_FLOW, LOG_GROUP, a) + +/** @def LogWarn + * Logging of warnings. + */ +#define LogWarn(a) LogIt(RTLOGGRPFLAGS_WARN, LOG_GROUP, a) +/** @} */ + + +/** @name Logging macros prefixing the current function name. + * @{ */ +/** @def LogFunc + * Level 1 logging inside C/C++ functions. + * + * Prepends the given log message with the function name followed by a + * semicolon and space. + * + * @param a Log message in format ("string\n" [, args]). + */ +#ifdef LOG_USE_C99 +# define LogFunc(a) _LogIt(RTLOGGRPFLAGS_LEVEL_1, LOG_GROUP, LOG_FN_FMT ": %M", RT_GCC_EXTENSION __PRETTY_FUNCTION__, _LogRemoveParentheseis a ) +#else +# define LogFunc(a) do { Log((LOG_FN_FMT ": ", __PRETTY_FUNCTION__)); Log(a); } while (0) +#endif + +/** @def Log2Func + * Level 2 logging inside C/C++ functions. + * + * Prepends the given log message with the function name followed by a + * semicolon and space. + * + * @param a Log message in format ("string\n" [, args]). + */ +#ifdef LOG_USE_C99 +# define Log2Func(a) _LogIt(RTLOGGRPFLAGS_LEVEL_2, LOG_GROUP, LOG_FN_FMT ": %M", RT_GCC_EXTENSION __PRETTY_FUNCTION__, _LogRemoveParentheseis a ) +#else +# define Log2Func(a) do { Log2((LOG_FN_FMT ": ", __PRETTY_FUNCTION__)); Log2(a); } while (0) +#endif + +/** @def Log3Func + * Level 3 logging inside C/C++ functions. + * + * Prepends the given log message with the function name followed by a + * semicolon and space. + * + * @param a Log message in format ("string\n" [, args]). + */ +#ifdef LOG_USE_C99 +# define Log3Func(a) _LogIt(RTLOGGRPFLAGS_LEVEL_3, LOG_GROUP, LOG_FN_FMT ": %M", RT_GCC_EXTENSION __PRETTY_FUNCTION__, _LogRemoveParentheseis a ) +#else +# define Log3Func(a) do { Log3((LOG_FN_FMT ": ", __PRETTY_FUNCTION__)); Log3(a); } while (0) +#endif + +/** @def Log4Func + * Level 4 logging inside C/C++ functions. + * + * Prepends the given log message with the function name followed by a + * semicolon and space. + * + * @param a Log message in format ("string\n" [, args]). + */ +#ifdef LOG_USE_C99 +# define Log4Func(a) _LogIt(RTLOGGRPFLAGS_LEVEL_4, LOG_GROUP, LOG_FN_FMT ": %M", RT_GCC_EXTENSION __PRETTY_FUNCTION__, _LogRemoveParentheseis a ) +#else +# define Log4Func(a) do { Log4((LOG_FN_FMT ": ", __PRETTY_FUNCTION__)); Log4(a); } while (0) +#endif + +/** @def Log5Func + * Level 5 logging inside C/C++ functions. + * + * Prepends the given log message with the function name followed by a + * semicolon and space. + * + * @param a Log message in format ("string\n" [, args]). + */ +#ifdef LOG_USE_C99 +# define Log5Func(a) _LogIt(RTLOGGRPFLAGS_LEVEL_5, LOG_GROUP, LOG_FN_FMT ": %M", RT_GCC_EXTENSION __PRETTY_FUNCTION__, _LogRemoveParentheseis a ) +#else +# define Log5Func(a) do { Log5((LOG_FN_FMT ": ", __PRETTY_FUNCTION__)); Log5(a); } while (0) +#endif + +/** @def Log6Func + * Level 6 logging inside C/C++ functions. + * + * Prepends the given log message with the function name followed by a + * semicolon and space. + * + * @param a Log message in format ("string\n" [, args]). + */ +#ifdef LOG_USE_C99 +# define Log6Func(a) _LogIt(RTLOGGRPFLAGS_LEVEL_6, LOG_GROUP, LOG_FN_FMT ": %M", RT_GCC_EXTENSION __PRETTY_FUNCTION__, _LogRemoveParentheseis a ) +#else +# define Log6Func(a) do { Log6((LOG_FN_FMT ": ", __PRETTY_FUNCTION__)); Log6(a); } while (0) +#endif + +/** @def Log7Func + * Level 7 logging inside C/C++ functions. + * + * Prepends the given log message with the function name followed by a + * semicolon and space. + * + * @param a Log message in format ("string\n" [, args]). + */ +#ifdef LOG_USE_C99 +# define Log7Func(a) _LogIt(RTLOGGRPFLAGS_LEVEL_7, LOG_GROUP, LOG_FN_FMT ": %M", RT_GCC_EXTENSION __PRETTY_FUNCTION__, _LogRemoveParentheseis a ) +#else +# define Log7Func(a) do { Log7((LOG_FN_FMT ": ", __PRETTY_FUNCTION__)); Log7(a); } while (0) +#endif + +/** @def Log8Func + * Level 8 logging inside C/C++ functions. + * + * Prepends the given log message with the function name followed by a + * semicolon and space. + * + * @param a Log message in format ("string\n" [, args]). + */ +#ifdef LOG_USE_C99 +# define Log8Func(a) _LogIt(RTLOGGRPFLAGS_LEVEL_8, LOG_GROUP, LOG_FN_FMT ": %M", RT_GCC_EXTENSION __PRETTY_FUNCTION__, _LogRemoveParentheseis a ) +#else +# define Log8Func(a) do { Log8((LOG_FN_FMT ": ", __PRETTY_FUNCTION__)); Log8(a); } while (0) +#endif + +/** @def Log9Func + * Level 9 logging inside C/C++ functions. + * + * Prepends the given log message with the function name followed by a + * semicolon and space. + * + * @param a Log message in format ("string\n" [, args]). + */ +#ifdef LOG_USE_C99 +# define Log9Func(a) _LogIt(RTLOGGRPFLAGS_LEVEL_9, LOG_GROUP, LOG_FN_FMT ": %M", RT_GCC_EXTENSION __PRETTY_FUNCTION__, _LogRemoveParentheseis a ) +#else +# define Log9Func(a) do { Log9((LOG_FN_FMT ": ", __PRETTY_FUNCTION__)); Log9(a); } while (0) +#endif + +/** @def Log10Func + * Level 10 logging inside C/C++ functions. + * + * Prepends the given log message with the function name followed by a + * semicolon and space. + * + * @param a Log message in format ("string\n" [, args]). + */ +#ifdef LOG_USE_C99 +# define Log10Func(a) _LogIt(RTLOGGRPFLAGS_LEVEL_10, LOG_GROUP, LOG_FN_FMT ": %M", RT_GCC_EXTENSION __PRETTY_FUNCTION__, _LogRemoveParentheseis a ) +#else +# define Log10Func(a) do { Log10((LOG_FN_FMT ": ", __PRETTY_FUNCTION__)); Log10(a); } while (0) +#endif + +/** @def Log11Func + * Level 11 logging inside C/C++ functions. + * + * Prepends the given log message with the function name followed by a + * semicolon and space. + * + * @param a Log message in format ("string\n" [, args]). + */ +#ifdef LOG_USE_C99 +# define Log11Func(a) _LogIt(RTLOGGRPFLAGS_LEVEL_11, LOG_GROUP, LOG_FN_FMT ": %M", RT_GCC_EXTENSION __PRETTY_FUNCTION__, _LogRemoveParentheseis a ) +#else +# define Log11Func(a) do { Log11((LOG_FN_FMT ": ", __PRETTY_FUNCTION__)); Log11(a); } while (0) +#endif + +/** @def Log12Func + * Level 12 logging inside C/C++ functions. + * + * Prepends the given log message with the function name followed by a + * semicolon and space. + * + * @param a Log message in format ("string\n" [, args]). + */ +#ifdef LOG_USE_C99 +# define Log12Func(a) _LogIt(RTLOGGRPFLAGS_LEVEL_12, LOG_GROUP, LOG_FN_FMT ": %M", RT_GCC_EXTENSION __PRETTY_FUNCTION__, _LogRemoveParentheseis a ) +#else +# define Log12Func(a) do { Log12((LOG_FN_FMT ": ", __PRETTY_FUNCTION__)); Log12(a); } while (0) +#endif + +/** @def LogFlowFunc + * Macro to log the execution flow inside C/C++ functions. + * + * Prepends the given log message with the function name followed by + * a semicolon and space. + * + * @param a Log message in format ("string\n" [, args]). + */ +#ifdef LOG_USE_C99 +# define LogFlowFunc(a) \ + _LogIt(RTLOGGRPFLAGS_FLOW, LOG_GROUP, LOG_FN_FMT ": %M", RT_GCC_EXTENSION __PRETTY_FUNCTION__, _LogRemoveParentheseis a ) +#else +# define LogFlowFunc(a) \ + do { LogFlow((LOG_FN_FMT ": ", __PRETTY_FUNCTION__)); LogFlow(a); } while (0) +#endif + +/** @def LogWarnFunc + * Macro to log a warning inside C/C++ functions. + * + * Prepends the given log message with the function name followed by + * a semicolon and space. + * + * @param a Log message in format ("string\n" [, args]). + */ +#ifdef LOG_USE_C99 +# define LogWarnFunc(a) \ + _LogIt(RTLOGGRPFLAGS_WARN, LOG_GROUP, LOG_FN_FMT ": %M", __PRETTY_FUNCTION__, _LogRemoveParentheseis a ) +#else +# define LogWarnFunc(a) \ + do { LogFlow((LOG_FN_FMT ": ", __PRETTY_FUNCTION__)); LogFlow(a); } while (0) +#endif +/** @} */ + + +/** @name Logging macros prefixing the this pointer value and method name. + * @{ */ + +/** @def LogThisFunc + * Level 1 logging inside a C++ non-static method, with object pointer and + * method name prefixed to the given message. + * @param a Log message in format ("string\n" [, args]). + */ +#ifdef LOG_USE_C99 +# define LogThisFunc(a) \ + _LogIt(RTLOGGRPFLAGS_LEVEL_1, LOG_GROUP, "{%p} " LOG_FN_FMT ": %M", this, __PRETTY_FUNCTION__, _LogRemoveParentheseis a ) +#else +# define LogThisFunc(a) do { Log(("{%p} " LOG_FN_FMT ": ", this, __PRETTY_FUNCTION__)); Log(a); } while (0) +#endif + +/** @def Log2ThisFunc + * Level 2 logging inside a C++ non-static method, with object pointer and + * method name prefixed to the given message. + * @param a Log message in format ("string\n" [, args]). + */ +#ifdef LOG_USE_C99 +# define Log2ThisFunc(a) \ + _LogIt(RTLOGGRPFLAGS_LEVEL_2, LOG_GROUP, "{%p} " LOG_FN_FMT ": %M", this, __PRETTY_FUNCTION__, _LogRemoveParentheseis a ) +#else +# define Log2ThisFunc(a) do { Log2(("{%p} " LOG_FN_FMT ": ", this, __PRETTY_FUNCTION__)); Log2(a); } while (0) +#endif + +/** @def Log3ThisFunc + * Level 3 logging inside a C++ non-static method, with object pointer and + * method name prefixed to the given message. + * @param a Log message in format ("string\n" [, args]). + */ +#ifdef LOG_USE_C99 +# define Log3ThisFunc(a) \ + _LogIt(RTLOGGRPFLAGS_LEVEL_3, LOG_GROUP, "{%p} " LOG_FN_FMT ": %M", this, __PRETTY_FUNCTION__, _LogRemoveParentheseis a ) +#else +# define Log3ThisFunc(a) do { Log3(("{%p} " LOG_FN_FMT ": ", this, __PRETTY_FUNCTION__)); Log3(a); } while (0) +#endif + +/** @def Log4ThisFunc + * Level 4 logging inside a C++ non-static method, with object pointer and + * method name prefixed to the given message. + * @param a Log message in format ("string\n" [, args]). + */ +#ifdef LOG_USE_C99 +# define Log4ThisFunc(a) \ + _LogIt(RTLOGGRPFLAGS_LEVEL_4, LOG_GROUP, "{%p} " LOG_FN_FMT ": %M", this, __PRETTY_FUNCTION__, _LogRemoveParentheseis a ) +#else +# define Log4ThisFunc(a) do { Log4(("{%p} " LOG_FN_FMT ": ", this, __PRETTY_FUNCTION__)); Log4(a); } while (0) +#endif + +/** @def Log5ThisFunc + * Level 5 logging inside a C++ non-static method, with object pointer and + * method name prefixed to the given message. + * @param a Log message in format ("string\n" [, args]). + */ +#ifdef LOG_USE_C99 +# define Log5ThisFunc(a) \ + _LogIt(RTLOGGRPFLAGS_LEVEL_5, LOG_GROUP, "{%p} " LOG_FN_FMT ": %M", this, __PRETTY_FUNCTION__, _LogRemoveParentheseis a ) +#else +# define Log5ThisFunc(a) do { Log5(("{%p} " LOG_FN_FMT ": ", this, __PRETTY_FUNCTION__)); Log5(a); } while (0) +#endif + +/** @def Log6ThisFunc + * Level 6 logging inside a C++ non-static method, with object pointer and + * method name prefixed to the given message. + * @param a Log message in format ("string\n" [, args]). + */ +#ifdef LOG_USE_C99 +# define Log6ThisFunc(a) \ + _LogIt(RTLOGGRPFLAGS_LEVEL_6, LOG_GROUP, "{%p} " LOG_FN_FMT ": %M", this, __PRETTY_FUNCTION__, _LogRemoveParentheseis a ) +#else +# define Log6ThisFunc(a) do { Log6(("{%p} " LOG_FN_FMT ": ", this, __PRETTY_FUNCTION__)); Log6(a); } while (0) +#endif + +/** @def Log7ThisFunc + * Level 7 logging inside a C++ non-static method, with object pointer and + * method name prefixed to the given message. + * @param a Log message in format ("string\n" [, args]). + */ +#ifdef LOG_USE_C99 +# define Log7ThisFunc(a) \ + _LogIt(RTLOGGRPFLAGS_LEVEL_7, LOG_GROUP, "{%p} " LOG_FN_FMT ": %M", this, __PRETTY_FUNCTION__, _LogRemoveParentheseis a ) +#else +# define Log7ThisFunc(a) do { Log7(("{%p} " LOG_FN_FMT ": ", this, __PRETTY_FUNCTION__)); Log7(a); } while (0) +#endif + +/** @def Log8ThisFunc + * Level 8 logging inside a C++ non-static method, with object pointer and + * method name prefixed to the given message. + * @param a Log message in format ("string\n" [, args]). + */ +#ifdef LOG_USE_C99 +# define Log8ThisFunc(a) \ + _LogIt(RTLOGGRPFLAGS_LEVEL_8, LOG_GROUP, "{%p} " LOG_FN_FMT ": %M", this, __PRETTY_FUNCTION__, _LogRemoveParentheseis a ) +#else +# define Log8ThisFunc(a) do { Log8(("{%p} " LOG_FN_FMT ": ", this, __PRETTY_FUNCTION__)); Log8(a); } while (0) +#endif + +/** @def Log9ThisFunc + * Level 9 logging inside a C++ non-static method, with object pointer and + * method name prefixed to the given message. + * @param a Log message in format ("string\n" [, args]). + */ +#ifdef LOG_USE_C99 +# define Log9ThisFunc(a) \ + _LogIt(RTLOGGRPFLAGS_LEVEL_9, LOG_GROUP, "{%p} " LOG_FN_FMT ": %M", this, __PRETTY_FUNCTION__, _LogRemoveParentheseis a ) +#else +# define Log9ThisFunc(a) do { Log9(("{%p} " LOG_FN_FMT ": ", this, __PRETTY_FUNCTION__)); Log9(a); } while (0) +#endif + +/** @def Log10ThisFunc + * Level 10 logging inside a C++ non-static method, with object pointer and + * method name prefixed to the given message. + * @param a Log message in format ("string\n" [, args]). + */ +#ifdef LOG_USE_C99 +# define Log10ThisFunc(a) \ + _LogIt(RTLOGGRPFLAGS_LEVEL_10, LOG_GROUP, "{%p} " LOG_FN_FMT ": %M", this, __PRETTY_FUNCTION__, _LogRemoveParentheseis a ) +#else +# define Log10ThisFunc(a) do { Log10(("{%p} " LOG_FN_FMT ": ", this, __PRETTY_FUNCTION__)); Log10(a); } while (0) +#endif + +/** @def Log11ThisFunc + * Level 11 logging inside a C++ non-static method, with object pointer and + * method name prefixed to the given message. + * @param a Log message in format ("string\n" [, args]). + */ +#ifdef LOG_USE_C99 +# define Log11ThisFunc(a) \ + _LogIt(RTLOGGRPFLAGS_LEVEL_11, LOG_GROUP, "{%p} " LOG_FN_FMT ": %M", this, __PRETTY_FUNCTION__, _LogRemoveParentheseis a ) +#else +# define Log11ThisFunc(a) do { Log11(("{%p} " LOG_FN_FMT ": ", this, __PRETTY_FUNCTION__)); Log11(a); } while (0) +#endif + +/** @def Log12ThisFunc + * Level 12 logging inside a C++ non-static method, with object pointer and + * method name prefixed to the given message. + * @param a Log message in format ("string\n" [, args]). + */ +#ifdef LOG_USE_C99 +# define Log12ThisFunc(a) \ + _LogIt(RTLOGGRPFLAGS_LEVEL_12, LOG_GROUP, "{%p} " LOG_FN_FMT ": %M", this, __PRETTY_FUNCTION__, _LogRemoveParentheseis a ) +#else +# define Log12ThisFunc(a) do { Log12(("{%p} " LOG_FN_FMT ": ", this, __PRETTY_FUNCTION__)); Log12(a); } while (0) +#endif + +/** @def LogFlowThisFunc + * Flow level logging inside a C++ non-static method, with object pointer and + * method name prefixed to the given message. + * @param a Log message in format ("string\n" [, args]). + */ +#ifdef LOG_USE_C99 +# define LogFlowThisFunc(a) \ + _LogIt(RTLOGGRPFLAGS_FLOW, LOG_GROUP, "{%p} " LOG_FN_FMT ": %M", this, __PRETTY_FUNCTION__, _LogRemoveParentheseis a ) +#else +# define LogFlowThisFunc(a) do { LogFlow(("{%p} " LOG_FN_FMT ": ", this, __PRETTY_FUNCTION__)); LogFlow(a); } while (0) +#endif + +/** @def LogWarnThisFunc + * Warning level logging inside a C++ non-static method, with object pointer and + * method name prefixed to the given message. + * @param a Log message in format ("string\n" [, args]). + */ +#ifdef LOG_USE_C99 +# define LogWarnThisFunc(a) \ + _LogIt(RTLOGGRPFLAGS_WARN, LOG_GROUP, "{%p} " LOG_FN_FMT ": %M", this, __PRETTY_FUNCTION__, _LogRemoveParentheseis a ) +#else +# define LogWarnThisFunc(a) do { LogWarn(("{%p} " LOG_FN_FMT ": ", this, __PRETTY_FUNCTION__)); LogWarn(a); } while (0) +#endif +/** @} */ + + +/** @name Misc Logging Macros + * @{ */ + +/** @def LogWarning1 + * The same as Log(), but prepents a "WARNING! " string to the message. + * + * @param a Custom log message in format ("string\n" [, args]). + */ +#if defined(LOG_USE_C99) +# define Log1Warning(a) _LogIt(RTLOGGRPFLAGS_LEVEL_1, LOG_GROUP, "WARNING! %M", _LogRemoveParentheseis a ) +#else +# define Log1Warning(a) do { Log(("WARNING! ")); Log(a); } while (0) +#endif + +/** @def LogWarningFunc + * The same as LogWarning(), but prepents the log message with the function name. + * + * @param a Log message in format ("string\n" [, args]). + */ +#ifdef LOG_USE_C99 +# define Log1WarningFunc(a) \ + _LogIt(RTLOGGRPFLAGS_LEVEL_1, LOG_GROUP, LOG_FN_FMT ": WARNING! %M", __PRETTY_FUNCTION__, _LogRemoveParentheseis a ) +#else +# define Log1WarningFunc(a) \ + do { Log((LOG_FN_FMT ": WARNING! ", __PRETTY_FUNCTION__)); Log(a); } while (0) +#endif + +/** @def LogWarningThisFunc + * The same as LogWarningFunc() but for class functions (methods): the resulting + * log line is additionally prepended with a hex value of |this| pointer. + * + * @param a Log message in format ("string\n" [, args]). + */ +#ifdef LOG_USE_C99 +# define Log1WarningThisFunc(a) \ + _LogIt(RTLOGGRPFLAGS_LEVEL_1, LOG_GROUP, "{%p} " LOG_FN_FMT ": WARNING! %M", this, __PRETTY_FUNCTION__, _LogRemoveParentheseis a ) +#else +# define Log1WarningThisFunc(a) \ + do { Log(("{%p} " LOG_FN_FMT ": WARNING! ", this, __PRETTY_FUNCTION__)); Log(a); } while (0) +#endif + + +/** Shortcut to |LogFlowFunc ("ENTER\n")|, marks the beginnig of the function. */ +#define LogFlowFuncEnter() LogFlowFunc(("ENTER\n")) + +/** Shortcut to |LogFlowFunc ("LEAVE\n")|, marks the end of the function. */ +#define LogFlowFuncLeave() LogFlowFunc(("LEAVE\n")) + +/** Shortcut to |LogFlowFunc ("LEAVE: %Rrc\n")|, marks the end of the function. */ +#define LogFlowFuncLeaveRC(rc) LogFlowFunc(("LEAVE: %Rrc\n", (rc))) + +/** Shortcut to |LogFlowThisFunc ("ENTER\n")|, marks the beginnig of the function. */ +#define LogFlowThisFuncEnter() LogFlowThisFunc(("ENTER\n")) + +/** Shortcut to |LogFlowThisFunc ("LEAVE\n")|, marks the end of the function. */ +#define LogFlowThisFuncLeave() LogFlowThisFunc(("LEAVE\n")) + + +/** @def LogObjRefCnt + * Helper macro to print the current reference count of the given COM object + * to the log file. + * + * @param pObj Pointer to the object in question (must be a pointer to an + * IUnknown subclass or simply define COM-style AddRef() and + * Release() methods) + */ +#define LogObjRefCnt(pObj) \ + do { \ + if (LogIsFlowEnabled()) \ + { \ + int cRefsForLog = (pObj)->AddRef(); \ + LogFlow((#pObj "{%p}.refCnt=%d\n", (pObj), cRefsForLog - 1)); \ + (pObj)->Release(); \ + } \ + } while (0) +/** @} */ + + + +/** @name Passing Function Call Position When Logging. + * + * This is a little bit ugly as we have to omit the comma before the + * position parameters so that we don't inccur any overhead in non-logging + * builds (!defined(LOG_ENABLED). + * + * @{ */ +/** Source position for passing to a function call. */ +#ifdef LOG_ENABLED +# define RTLOG_COMMA_SRC_POS , __FILE__, __LINE__, __PRETTY_FUNCTION__ +#else +# define RTLOG_COMMA_SRC_POS RT_NOTHING +#endif +/** Source position declaration. */ +#ifdef LOG_ENABLED +# define RTLOG_COMMA_SRC_POS_DECL , const char *pszFile, unsigned iLine, const char *pszFunction +#else +# define RTLOG_COMMA_SRC_POS_DECL RT_NOTHING +#endif +/** Source position arguments. */ +#ifdef LOG_ENABLED +# define RTLOG_COMMA_SRC_POS_ARGS , pszFile, iLine, pszFunction +#else +# define RTLOG_COMMA_SRC_POS_ARGS RT_NOTHING +#endif +/** Applies NOREF() to the source position arguments. */ +#ifdef LOG_ENABLED +# define RTLOG_SRC_POS_NOREF() do { NOREF(pszFile); NOREF(iLine); NOREF(pszFunction); } while (0) +#else +# define RTLOG_SRC_POS_NOREF() do { } while (0) +#endif +/** @} */ + + + +/** @name Release Logging + * @{ + */ + +#ifdef DOXYGEN_RUNNING +# define RTLOG_REL_DISABLED +# define RTLOG_REL_ENABLED +#endif + +/** @def RTLOG_REL_DISABLED + * Use this compile time define to disable all release logging + * macros. + */ + +/** @def RTLOG_REL_ENABLED + * Use this compile time define to override RTLOG_REL_DISABLE. + */ + +/* + * Determine whether release logging is enabled and forcefully normalize the indicators. + */ +#if !defined(RTLOG_REL_DISABLED) || defined(RTLOG_REL_ENABLED) +# undef RTLOG_REL_DISABLED +# undef RTLOG_REL_ENABLED +# define RTLOG_REL_ENABLED +#else +# undef RTLOG_REL_ENABLED +# undef RTLOG_REL_DISABLED +# define RTLOG_REL_DISABLED +#endif + +/** @name Macros for checking whether a release log level is enabled. + * @{ */ +/** @def LogRelIsItEnabled + * Checks whether the specified release logging group is enabled or not. + */ +#define LogRelIsItEnabled(a_fFlags, a_iGroup) ( RTLogRelGetDefaultInstanceEx(RT_MAKE_U32(a_fFlags, a_iGroup)) != NULL ) + +/** @def LogRelIsEnabled + * Checks whether level 1 release logging is enabled. + */ +#define LogRelIsEnabled() LogRelIsItEnabled(RTLOGGRPFLAGS_LEVEL_1, LOG_GROUP) + +/** @def LogRelIs2Enabled + * Checks whether level 2 release logging is enabled. + */ +#define LogRelIs2Enabled() LogRelIsItEnabled(RTLOGGRPFLAGS_LEVEL_2, LOG_GROUP) + +/** @def LogRelIs3Enabled + * Checks whether level 3 release logging is enabled. + */ +#define LogRelIs3Enabled() LogRelIsItEnabled(RTLOGGRPFLAGS_LEVEL_3, LOG_GROUP) + +/** @def LogRelIs4Enabled + * Checks whether level 4 release logging is enabled. + */ +#define LogRelIs4Enabled() LogRelIsItEnabled(RTLOGGRPFLAGS_LEVEL_4, LOG_GROUP) + +/** @def LogRelIs5Enabled + * Checks whether level 5 release logging is enabled. + */ +#define LogRelIs5Enabled() LogRelIsItEnabled(RTLOGGRPFLAGS_LEVEL_5, LOG_GROUP) + +/** @def LogRelIs6Enabled + * Checks whether level 6 release logging is enabled. + */ +#define LogRelIs6Enabled() LogRelIsItEnabled(RTLOGGRPFLAGS_LEVEL_6, LOG_GROUP) + +/** @def LogRelIs7Enabled + * Checks whether level 7 release logging is enabled. + */ +#define LogRelIs7Enabled() LogRelIsItEnabled(RTLOGGRPFLAGS_LEVEL_7, LOG_GROUP) + +/** @def LogRelIs8Enabled + * Checks whether level 8 release logging is enabled. + */ +#define LogRelIs8Enabled() LogRelIsItEnabled(RTLOGGRPFLAGS_LEVEL_8, LOG_GROUP) + +/** @def LogRelIs2Enabled + * Checks whether level 9 release logging is enabled. + */ +#define LogRelIs9Enabled() LogRelIsItEnabled(RTLOGGRPFLAGS_LEVEL_9, LOG_GROUP) + +/** @def LogRelIs10Enabled + * Checks whether level 10 release logging is enabled. + */ +#define LogRelIs10Enabled() LogRelIsItEnabled(RTLOGGRPFLAGS_LEVEL_10, LOG_GROUP) + +/** @def LogRelIs11Enabled + * Checks whether level 10 release logging is enabled. + */ +#define LogRelIs11Enabled() LogRelIsItEnabled(RTLOGGRPFLAGS_LEVEL_11, LOG_GROUP) + +/** @def LogRelIs12Enabled + * Checks whether level 12 release logging is enabled. + */ +#define LogRelIs12Enabled() LogRelIsItEnabled(RTLOGGRPFLAGS_LEVEL_12, LOG_GROUP) + +/** @def LogRelIsFlowEnabled + * Checks whether execution flow release logging is enabled. + */ +#define LogRelIsFlowEnabled() LogRelIsItEnabled(RTLOGGRPFLAGS_FLOW, LOG_GROUP) + +/** @def LogRelIsWarnEnabled + * Checks whether warning level release logging is enabled. + */ +#define LogRelIsWarnEnabled() LogRelIsItEnabled(RTLOGGRPFLAGS_FLOW, LOG_GROUP) +/** @} */ + + +/** @def LogRelIt + * Write to specific logger if group enabled. + */ +/** @def LogRelItLikely + * Write to specific logger if group enabled, assuming it likely it is enabled. + */ +/** @def LogRelMaxIt + * Write to specific logger if group enabled and at less than a_cMax messages + * have hit the log. Uses a static variable to count. + */ +#ifdef RTLOG_REL_ENABLED +# if defined(LOG_USE_C99) +# define _LogRelRemoveParentheseis(...) __VA_ARGS__ +# define _LogRelIt(a_fFlags, a_iGroup, ...) \ + do \ + { \ + PRTLOGGER LogRelIt_pLogger = RTLogRelGetDefaultInstanceEx(RT_MAKE_U32(a_fFlags, a_iGroup)); \ + if (RT_LIKELY(!LogRelIt_pLogger)) \ + { /* likely */ } \ + else \ + RTLogLoggerEx(LogRelIt_pLogger, a_fFlags, a_iGroup, __VA_ARGS__); \ + _LogIt(a_fFlags, a_iGroup, __VA_ARGS__); \ + } while (0) +# define LogRelIt(a_fFlags, a_iGroup, fmtargs) \ + _LogRelIt(a_fFlags, a_iGroup, _LogRelRemoveParentheseis fmtargs) +# define _LogRelItLikely(a_fFlags, a_iGroup, ...) \ + do \ + { \ + PRTLOGGER LogRelIt_pLogger = RTLogRelGetDefaultInstanceEx(RT_MAKE_U32(a_fFlags, a_iGroup)); \ + if (LogRelIt_pLogger) \ + RTLogLoggerEx(LogRelIt_pLogger, a_fFlags, a_iGroup, __VA_ARGS__); \ + _LogIt(a_fFlags, a_iGroup, __VA_ARGS__); \ + } while (0) +# define LogRelItLikely(a_fFlags, a_iGroup, fmtargs) \ + _LogRelItLikely(a_fFlags, a_iGroup, _LogRelRemoveParentheseis fmtargs) +# define _LogRelMaxIt(a_cMax, a_fFlags, a_iGroup, ...) \ + do \ + { \ + PRTLOGGER LogRelIt_pLogger = RTLogRelGetDefaultInstanceEx(RT_MAKE_U32(a_fFlags, a_iGroup)); \ + if (LogRelIt_pLogger) \ + { \ + static uint32_t s_LogRelMaxIt_cLogged = 0; \ + if (s_LogRelMaxIt_cLogged < (a_cMax)) \ + { \ + s_LogRelMaxIt_cLogged++; \ + RTLogLoggerEx(LogRelIt_pLogger, a_fFlags, a_iGroup, __VA_ARGS__); \ + } \ + } \ + _LogIt(a_fFlags, a_iGroup, __VA_ARGS__); \ + } while (0) +# define LogRelMaxIt(a_cMax, a_fFlags, a_iGroup, fmtargs) \ + _LogRelMaxIt(a_cMax, a_fFlags, a_iGroup, _LogRelRemoveParentheseis fmtargs) +# else +# define LogRelItLikely(a_fFlags, a_iGroup, fmtargs) \ + do \ + { \ + PRTLOGGER LogRelIt_pLogger = RTLogRelGetDefaultInstanceEx(RT_MAKE_U32(a_fFlags, a_iGroup)); \ + if (LogRelIt_pLogger) \ + { \ + LogRelIt_pLogger->pfnLogger fmtargs; \ + } \ + LogIt(a_fFlags, a_iGroup, fmtargs); \ + } while (0) +# define LogRelIt(a_fFlags, a_iGroup, fmtargs) \ + do \ + { \ + PRTLOGGER LogRelIt_pLogger = RTLogRelGetDefaultInstanceEx(RT_MAKE_U32(a_fFlags, a_iGroup)); \ + if (RT_LIKELY(!LogRelIt_pLogger)) \ + { /* likely */ } \ + else \ + { \ + LogRelIt_pLogger->pfnLogger fmtargs; \ + } \ + LogIt(a_fFlags, a_iGroup, fmtargs); \ + } while (0) +# define LogRelMaxIt(a_cMax, a_fFlags, a_iGroup, fmtargs) \ + do \ + { \ + PRTLOGGER LogRelIt_pLogger = RTLogRelGetDefaultInstanceEx(RT_MAKE_U32(a_fFlags, a_iGroup)); \ + if (LogRelIt_pLogger) \ + { \ + static uint32_t s_LogRelMaxIt_cLogged = 0; \ + if (s_LogRelMaxIt_cLogged < (a_cMax)) \ + { \ + s_LogRelMaxIt_cLogged++; \ + LogRelIt_pLogger->pfnLogger fmtargs; \ + } \ + } \ + LogIt(a_fFlags, a_iGroup, fmtargs); \ + } while (0) +# endif +#else /* !RTLOG_REL_ENABLED */ +# define LogRelIt(a_fFlags, a_iGroup, fmtargs) do { } while (0) +# define LogRelItLikely(a_fFlags, a_iGroup, fmtargs) do { } while (0) +# define LogRelMaxIt(a_cMax, a_fFlags, a_iGroup, fmtargs) do { } while (0) +# if defined(LOG_USE_C99) +# define _LogRelRemoveParentheseis(...) __VA_ARGS__ +# define _LogRelIt(a_fFlags, a_iGroup, ...) do { } while (0) +# define _LogRelItLikely(a_fFlags, a_iGroup, ...) do { } while (0) +# define _LogRelMaxIt(a_cMax, a_fFlags, a_iGroup, ...) do { } while (0) +# endif +#endif /* !RTLOG_REL_ENABLED */ + + +/** @name Basic release logging macros + * @{ */ +/** @def LogRel + * Level 1 release logging. + */ +#define LogRel(a) LogRelItLikely(RTLOGGRPFLAGS_LEVEL_1, LOG_GROUP, a) + +/** @def LogRel2 + * Level 2 release logging. + */ +#define LogRel2(a) LogRelIt(RTLOGGRPFLAGS_LEVEL_2, LOG_GROUP, a) + +/** @def LogRel3 + * Level 3 release logging. + */ +#define LogRel3(a) LogRelIt(RTLOGGRPFLAGS_LEVEL_3, LOG_GROUP, a) + +/** @def LogRel4 + * Level 4 release logging. + */ +#define LogRel4(a) LogRelIt(RTLOGGRPFLAGS_LEVEL_4, LOG_GROUP, a) + +/** @def LogRel5 + * Level 5 release logging. + */ +#define LogRel5(a) LogRelIt(RTLOGGRPFLAGS_LEVEL_5, LOG_GROUP, a) + +/** @def LogRel6 + * Level 6 release logging. + */ +#define LogRel6(a) LogRelIt(RTLOGGRPFLAGS_LEVEL_6, LOG_GROUP, a) + +/** @def LogRel7 + * Level 7 release logging. + */ +#define LogRel7(a) LogRelIt(RTLOGGRPFLAGS_LEVEL_7, LOG_GROUP, a) + +/** @def LogRel8 + * Level 8 release logging. + */ +#define LogRel8(a) LogRelIt(RTLOGGRPFLAGS_LEVEL_8, LOG_GROUP, a) + +/** @def LogRel9 + * Level 9 release logging. + */ +#define LogRel9(a) LogRelIt(RTLOGGRPFLAGS_LEVEL_9, LOG_GROUP, a) + +/** @def LogRel10 + * Level 10 release logging. + */ +#define LogRel10(a) LogRelIt(RTLOGGRPFLAGS_LEVEL_10, LOG_GROUP, a) + +/** @def LogRel11 + * Level 11 release logging. + */ +#define LogRel11(a) LogRelIt(RTLOGGRPFLAGS_LEVEL_11, LOG_GROUP, a) + +/** @def LogRel12 + * Level 12 release logging. + */ +#define LogRel12(a) LogRelIt(RTLOGGRPFLAGS_LEVEL_12, LOG_GROUP, a) + +/** @def LogRelFlow + * Logging of execution flow. + */ +#define LogRelFlow(a) LogRelIt(RTLOGGRPFLAGS_FLOW, LOG_GROUP, a) + +/** @def LogRelWarn + * Warning level release logging. + */ +#define LogRelWarn(a) LogRelIt(RTLOGGRPFLAGS_WARN, LOG_GROUP, a) +/** @} */ + + + +/** @name Basic release logging macros with local max + * @{ */ +/** @def LogRelMax + * Level 1 release logging with a max number of log entries. + */ +#define LogRelMax(a_cMax, a) LogRelMaxIt(a_cMax, RTLOGGRPFLAGS_LEVEL_1, LOG_GROUP, a) + +/** @def LogRelMax2 + * Level 2 release logging with a max number of log entries. + */ +#define LogRelMax2(a_cMax, a) LogRelMaxIt(a_cMax, RTLOGGRPFLAGS_LEVEL_2, LOG_GROUP, a) + +/** @def LogRelMax3 + * Level 3 release logging with a max number of log entries. + */ +#define LogRelMax3(a_cMax, a) LogRelMaxIt(a_cMax, RTLOGGRPFLAGS_LEVEL_3, LOG_GROUP, a) + +/** @def LogRelMax4 + * Level 4 release logging with a max number of log entries. + */ +#define LogRelMax4(a_cMax, a) LogRelMaxIt(a_cMax, RTLOGGRPFLAGS_LEVEL_4, LOG_GROUP, a) + +/** @def LogRelMax5 + * Level 5 release logging with a max number of log entries. + */ +#define LogRelMax5(a_cMax, a) LogRelMaxIt(a_cMax, RTLOGGRPFLAGS_LEVEL_5, LOG_GROUP, a) + +/** @def LogRelMax6 + * Level 6 release logging with a max number of log entries. + */ +#define LogRelMax6(a_cMax, a) LogRelMaxIt(a_cMax, RTLOGGRPFLAGS_LEVEL_6, LOG_GROUP, a) + +/** @def LogRelMax7 + * Level 7 release logging with a max number of log entries. + */ +#define LogRelMax7(a_cMax, a) LogRelMaxIt(a_cMax, RTLOGGRPFLAGS_LEVEL_7, LOG_GROUP, a) + +/** @def LogRelMax8 + * Level 8 release logging with a max number of log entries. + */ +#define LogRelMax8(a_cMax, a) LogRelMaxIt(a_cMax, RTLOGGRPFLAGS_LEVEL_8, LOG_GROUP, a) + +/** @def LogRelMax9 + * Level 9 release logging with a max number of log entries. + */ +#define LogRelMax9(a_cMax, a) LogRelMaxIt(a_cMax, RTLOGGRPFLAGS_LEVEL_9, LOG_GROUP, a) + +/** @def LogRelMax10 + * Level 10 release logging with a max number of log entries. + */ +#define LogRelMax10(a_cMax, a) LogRelMaxIt(a_cMax, RTLOGGRPFLAGS_LEVEL_10, LOG_GROUP, a) + +/** @def LogRelMax11 + * Level 11 release logging with a max number of log entries. + */ +#define LogRelMax11(a_cMax, a) LogRelMaxIt(a_cMax, RTLOGGRPFLAGS_LEVEL_11, LOG_GROUP, a) + +/** @def LogRelMax12 + * Level 12 release logging with a max number of log entries. + */ +#define LogRelMax12(a_cMax, a) LogRelMaxIt(a_cMax, RTLOGGRPFLAGS_LEVEL_12, LOG_GROUP, a) + +/** @def LogRelFlow + * Logging of execution flow with a max number of log entries. + */ +#define LogRelMaxFlow(a_cMax, a) LogRelMaxIt(a_cMax, RTLOGGRPFLAGS_FLOW, LOG_GROUP, a) +/** @} */ + + +/** @name Release logging macros prefixing the current function name. + * @{ */ + +/** @def LogRelFunc + * Release logging. Prepends the given log message with the function name + * followed by a semicolon and space. + */ +#ifdef LOG_USE_C99 +# define LogRelFunc(a) \ + _LogRelItLikely(RTLOGGRPFLAGS_LEVEL_1, LOG_GROUP, LOG_FN_FMT ": %M", RT_GCC_EXTENSION __PRETTY_FUNCTION__, _LogRemoveParentheseis a ) +#else +# define LogRelFunc(a) do { LogRel((LOG_FN_FMT ": ", __PRETTY_FUNCTION__)); LogRel(a); } while (0) +#endif + +/** @def LogRelFlowFunc + * Release logging. Macro to log the execution flow inside C/C++ functions. + * + * Prepends the given log message with the function name followed by + * a semicolon and space. + * + * @param a Log message in format ("string\n" [, args]). + */ +#ifdef LOG_USE_C99 +# define LogRelFlowFunc(a) _LogRelIt(RTLOGGRPFLAGS_FLOW, LOG_GROUP, LOG_FN_FMT ": %M", __PRETTY_FUNCTION__, _LogRemoveParentheseis a ) +#else +# define LogRelFlowFunc(a) do { LogRelFlow((LOG_FN_FMT ": ", __PRETTY_FUNCTION__)); LogRelFlow(a); } while (0) +#endif + +/** @def LogRelMaxFunc + * Release logging. Prepends the given log message with the function name + * followed by a semicolon and space. + */ +#ifdef LOG_USE_C99 +# define LogRelMaxFunc(a_cMax, a) \ + _LogRelMaxIt(a_cMax, RTLOGGRPFLAGS_LEVEL_1, LOG_GROUP, LOG_FN_FMT ": %M", __PRETTY_FUNCTION__, _LogRemoveParentheseis a ) +#else +# define LogRelMaxFunc(a_cMax, a) \ + do { LogRelMax(a_cMax, (LOG_FN_FMT ": ", __PRETTY_FUNCTION__)); LogRelMax(a_cMax, a); } while (0) +#endif + +/** @def LogRelMaxFlowFunc + * Release logging. Macro to log the execution flow inside C/C++ functions. + * + * Prepends the given log message with the function name followed by + * a semicolon and space. + * + * @param a_cMax Max number of times this should hit the log. + * @param a Log message in format ("string\n" [, args]). + */ +#ifdef LOG_USE_C99 +# define LogRelMaxFlowFunc(a_cMax, a) \ + _LogRelMaxIt(a_cMax, RTLOGGRPFLAGS_FLOW, LOG_GROUP, LOG_FN_FMT ": %M", __PRETTY_FUNCTION__, _LogRemoveParentheseis a ) +#else +# define LogRelMaxFlowFunc(a_cMax, a) \ + do { LogRelMaxFlow(a_cMax, (LOG_FN_FMT ": ", __PRETTY_FUNCTION__)); LogRelFlow(a_cMax, a); } while (0) +#endif + +/** @} */ + + +/** @name Release Logging macros prefixing the this pointer value and method name. + * @{ */ + +/** @def LogRelThisFunc + * The same as LogRelFunc but for class functions (methods): the resulting log + * line is additionally prepended with a hex value of |this| pointer. + */ +#ifdef LOG_USE_C99 +# define LogRelThisFunc(a) \ + _LogRelItLikely(RTLOGGRPFLAGS_LEVEL_1, LOG_GROUP, "{%p} " LOG_FN_FMT ": %M", this, __PRETTY_FUNCTION__, _LogRemoveParentheseis a ) +#else +# define LogRelThisFunc(a) \ + do { LogRel(("{%p} " LOG_FN_FMT ": ", this, __PRETTY_FUNCTION__)); LogRel(a); } while (0) +#endif + +/** @def LogRelMaxThisFunc + * The same as LogRelFunc but for class functions (methods): the resulting log + * line is additionally prepended with a hex value of |this| pointer. + * @param a_cMax Max number of times this should hit the log. + * @param a Log message in format ("string\n" [, args]). + */ +#ifdef LOG_USE_C99 +# define LogRelMaxThisFunc(a_cMax, a) \ + _LogRelMaxIt(a_cMax, RTLOGGRPFLAGS_LEVEL_1, LOG_GROUP, "{%p} " LOG_FN_FMT ": %M", this, __PRETTY_FUNCTION__, _LogRemoveParentheseis a ) +#else +# define LogRelMaxThisFunc(a_cMax, a) \ + do { LogRelMax(a_cMax, ("{%p} " LOG_FN_FMT ": ", this, __PRETTY_FUNCTION__)); LogRelMax(a_cMax, a); } while (0) +#endif + +/** @} */ + + +#ifndef IN_RC +/** + * Sets the default release logger instance. + * + * @returns The old default instance. + * @param pLogger The new default release logger instance. + */ +RTDECL(PRTLOGGER) RTLogRelSetDefaultInstance(PRTLOGGER pLogger); +#endif /* !IN_RC */ + +/** + * Gets the default release logger instance. + * + * @returns Pointer to default release logger instance if availble, otherwise NULL. + */ +RTDECL(PRTLOGGER) RTLogRelGetDefaultInstance(void); + +/** + * Gets the default release logger instance. + * + * @returns Pointer to default release logger instance if availble, otherwise NULL. + * @param fFlagsAndGroup The flags in the lower 16 bits, the group number in + * the high 16 bits. + */ +RTDECL(PRTLOGGER) RTLogRelGetDefaultInstanceEx(uint32_t fFlagsAndGroup); + +/** + * Write to a logger instance, defaulting to the release one. + * + * This function will check whether the instance, group and flags makes up a + * logging kind which is currently enabled before writing anything to the log. + * + * @param pLogger Pointer to logger instance. + * @param fFlags The logging flags. + * @param iGroup The group. + * The value ~0U is reserved for compatibility with RTLogLogger[V] and is + * only for internal usage! + * @param pszFormat Format string. + * @param ... Format arguments. + * @remark This is a worker function for LogRelIt. + */ +RTDECL(void) RTLogRelLogger(PRTLOGGER pLogger, unsigned fFlags, unsigned iGroup, const char *pszFormat, ...); + +/** + * Write to a logger instance, defaulting to the release one. + * + * This function will check whether the instance, group and flags makes up a + * logging kind which is currently enabled before writing anything to the log. + * + * @param pLogger Pointer to logger instance. If NULL the default release instance is attempted. + * @param fFlags The logging flags. + * @param iGroup The group. + * The value ~0U is reserved for compatibility with RTLogLogger[V] and is + * only for internal usage! + * @param pszFormat Format string. + * @param args Format arguments. + */ +RTDECL(void) RTLogRelLoggerV(PRTLOGGER pLogger, unsigned fFlags, unsigned iGroup, const char *pszFormat, va_list args); + +/** + * printf like function for writing to the default release log. + * + * @param pszFormat Printf like format string. + * @param ... Optional arguments as specified in pszFormat. + * + * @remark The API doesn't support formatting of floating point numbers at the moment. + */ +RTDECL(void) RTLogRelPrintf(const char *pszFormat, ...); + +/** + * vprintf like function for writing to the default release log. + * + * @param pszFormat Printf like format string. + * @param args Optional arguments as specified in pszFormat. + * + * @remark The API doesn't support formatting of floating point numbers at the moment. + */ +RTDECL(void) RTLogRelPrintfV(const char *pszFormat, va_list args); + +/** + * Changes the buffering setting of the default release logger. + * + * This can be used for optimizing longish logging sequences. + * + * @returns The old state. + * @param fBuffered The new state. + */ +RTDECL(bool) RTLogRelSetBuffering(bool fBuffered); + +/** @} */ + + + +/** @name COM port logging + * { + */ + +#ifdef DOXYGEN_RUNNING +# define LOG_TO_COM +# define LOG_NO_COM +#endif + +/** @def LOG_TO_COM + * Redirects the normal logging macros to the serial versions. + */ + +/** @def LOG_NO_COM + * Disables all LogCom* macros. + */ + +/** @def LogCom + * Generic logging to serial port. + */ +#if defined(LOG_ENABLED) && !defined(LOG_NO_COM) +# define LogCom(a) RTLogComPrintf a +#else +# define LogCom(a) do { } while (0) +#endif + +/** @def LogComFlow + * Logging to serial port of execution flow. + */ +#if defined(LOG_ENABLED) && defined(LOG_ENABLE_FLOW) && !defined(LOG_NO_COM) +# define LogComFlow(a) RTLogComPrintf a +#else +# define LogComFlow(a) do { } while (0) +#endif + +#ifdef LOG_TO_COM +# undef Log +# define Log(a) LogCom(a) +# undef LogFlow +# define LogFlow(a) LogComFlow(a) +#endif + +/** @} */ + + +/** @name Backdoor Logging + * @{ + */ + +#ifdef DOXYGEN_RUNNING +# define LOG_TO_BACKDOOR +# define LOG_NO_BACKDOOR +#endif + +/** @def LOG_TO_BACKDOOR + * Redirects the normal logging macros to the backdoor versions. + */ + +/** @def LOG_NO_BACKDOOR + * Disables all LogBackdoor* macros. + */ + +/** @def LogBackdoor + * Generic logging to the VBox backdoor via port I/O. + */ +#if defined(LOG_ENABLED) && !defined(LOG_NO_BACKDOOR) +# define LogBackdoor(a) RTLogBackdoorPrintf a +#else +# define LogBackdoor(a) do { } while (0) +#endif + +/** @def LogBackdoorFlow + * Logging of execution flow messages to the backdoor I/O port. + */ +#if defined(LOG_ENABLED) && !defined(LOG_NO_BACKDOOR) +# define LogBackdoorFlow(a) RTLogBackdoorPrintf a +#else +# define LogBackdoorFlow(a) do { } while (0) +#endif + +/** @def LogRelBackdoor + * Release logging to the VBox backdoor via port I/O. + */ +#if !defined(LOG_NO_BACKDOOR) +# define LogRelBackdoor(a) RTLogBackdoorPrintf a +#else +# define LogRelBackdoor(a) do { } while (0) +#endif + +#ifdef LOG_TO_BACKDOOR +# undef Log +# define Log(a) LogBackdoor(a) +# undef LogFlow +# define LogFlow(a) LogBackdoorFlow(a) +# undef LogRel +# define LogRel(a) LogRelBackdoor(a) +# if defined(LOG_USE_C99) +# undef _LogIt +# define _LogIt(a_fFlags, a_iGroup, ...) LogBackdoor((__VA_ARGS__)) +# endif +#endif + +/** @} */ + + + +/** + * Gets the default logger instance, creating it if necessary. + * + * @returns Pointer to default logger instance if availble, otherwise NULL. + */ +RTDECL(PRTLOGGER) RTLogDefaultInstance(void); + +/** + * Gets the logger instance if enabled, creating it if necessary. + * + * @returns Pointer to default logger instance, if group has the specified + * flags enabled. Otherwise NULL is returned. + * @param fFlagsAndGroup The flags in the lower 16 bits, the group number in + * the high 16 bits. + */ +RTDECL(PRTLOGGER) RTLogDefaultInstanceEx(uint32_t fFlagsAndGroup); + +/** + * Gets the default logger instance. + * + * @returns Pointer to default logger instance if availble, otherwise NULL. + */ +RTDECL(PRTLOGGER) RTLogGetDefaultInstance(void); + +/** + * Gets the default logger instance if enabled. + * + * @returns Pointer to default logger instance, if group has the specified + * flags enabled. Otherwise NULL is returned. + * @param fFlagsAndGroup The flags in the lower 16 bits, the group number in + * the high 16 bits. + */ +RTDECL(PRTLOGGER) RTLogGetDefaultInstanceEx(uint32_t fFlagsAndGroup); + +#ifndef IN_RC +/** + * Sets the default logger instance. + * + * @returns The old default instance. + * @param pLogger The new default logger instance. + */ +RTDECL(PRTLOGGER) RTLogSetDefaultInstance(PRTLOGGER pLogger); +#endif /* !IN_RC */ + +#ifdef IN_RING0 +/** + * Changes the default logger instance for the current thread. + * + * @returns IPRT status code. + * @param pLogger The logger instance. Pass NULL for deregistration. + * @param uKey Associated key for cleanup purposes. If pLogger is NULL, + * all instances with this key will be deregistered. So in + * order to only deregister the instance associated with the + * current thread use 0. + */ +RTDECL(int) RTLogSetDefaultInstanceThread(PRTLOGGER pLogger, uintptr_t uKey); +#endif /* IN_RING0 */ + + +#ifndef IN_RC +/** + * Creates the default logger instance for a iprt users. + * + * Any user of the logging features will need to implement + * this or use the generic dummy. + * + * @returns Pointer to the logger instance. + */ +RTDECL(PRTLOGGER) RTLogDefaultInit(void); + +/** + * Create a logger instance. + * + * @returns iprt status code. + * + * @param ppLogger Where to store the logger instance. + * @param fFlags Logger instance flags, a combination of the + * RTLOGFLAGS_* values. + * @param pszGroupSettings The initial group settings. + * @param pszEnvVarBase Base name for the environment variables for + * this instance. + * @param cGroups Number of groups in the array. + * @param papszGroups Pointer to array of groups. This must stick + * around for the life of the logger instance. + * @param fDestFlags The destination flags. RTLOGDEST_FILE is ORed + * if pszFilenameFmt specified. + * @param pszFilenameFmt Log filename format string. Standard + * RTStrFormat(). + * @param ... Format arguments. + */ +RTDECL(int) RTLogCreate(PRTLOGGER *ppLogger, uint32_t fFlags, const char *pszGroupSettings, + const char *pszEnvVarBase, unsigned cGroups, const char * const * papszGroups, + uint32_t fDestFlags, const char *pszFilenameFmt, ...); + +/** + * Create a logger instance. + * + * @returns iprt status code. + * + * @param ppLogger Where to store the logger instance. + * @param fFlags Logger instance flags, a combination of the + * RTLOGFLAGS_* values. + * @param pszGroupSettings The initial group settings. + * @param pszEnvVarBase Base name for the environment variables for + * this instance. + * @param cGroups Number of groups in the array. + * @param papszGroups Pointer to array of groups. This must stick + * around for the life of the logger instance. + * @param fDestFlags The destination flags. RTLOGDEST_FILE is ORed + * if pszFilenameFmt specified. + * @param pfnPhase Callback function for starting logging and for + * ending or starting a new file for log history + * rotation. NULL is OK. + * @param cHistory Number of old log files to keep when performing + * log history rotation. 0 means no history. + * @param cbHistoryFileMax Maximum size of log file when performing + * history rotation. 0 means no size limit. + * @param cSecsHistoryTimeSlot Maximum time interval per log file when + * performing history rotation, in seconds. + * 0 means time limit. + * @param pszErrorMsg A buffer which is filled with an error message if something fails. May be NULL. + * @param cchErrorMsg The size of the error message buffer. + * @param pszFilenameFmt Log filename format string. Standard RTStrFormat(). + * @param ... Format arguments. + */ +RTDECL(int) RTLogCreateEx(PRTLOGGER *ppLogger, uint32_t fFlags, const char *pszGroupSettings, + const char *pszEnvVarBase, unsigned cGroups, const char * const * papszGroups, + uint32_t fDestFlags, PFNRTLOGPHASE pfnPhase, uint32_t cHistory, + uint64_t cbHistoryFileMax, uint32_t cSecsHistoryTimeSlot, + char *pszErrorMsg, size_t cchErrorMsg, const char *pszFilenameFmt, ...); + +/** + * Create a logger instance. + * + * @returns iprt status code. + * + * @param ppLogger Where to store the logger instance. + * @param fFlags Logger instance flags, a combination of the + * RTLOGFLAGS_* values. + * @param pszGroupSettings The initial group settings. + * @param pszEnvVarBase Base name for the environment variables for + * this instance. + * @param cGroups Number of groups in the array. + * @param papszGroups Pointer to array of groups. This must stick + * around for the life of the logger instance. + * @param fDestFlags The destination flags. RTLOGDEST_FILE is ORed + * if pszFilenameFmt specified. + * @param pfnPhase Callback function for starting logging and for + * ending or starting a new file for log history + * rotation. + * @param cHistory Number of old log files to keep when performing + * log history rotation. 0 means no history. + * @param cbHistoryFileMax Maximum size of log file when performing + * history rotation. 0 means no size limit. + * @param cSecsHistoryTimeSlot Maximum time interval per log file when + * performing history rotation, in seconds. + * 0 means no time limit. + * @param pszErrorMsg A buffer which is filled with an error message + * if something fails. May be NULL. + * @param cchErrorMsg The size of the error message buffer. + * @param pszFilenameFmt Log filename format string. Standard + * RTStrFormat(). + * @param args Format arguments. + */ +RTDECL(int) RTLogCreateExV(PRTLOGGER *ppLogger, uint32_t fFlags, const char *pszGroupSettings, + const char *pszEnvVarBase, unsigned cGroups, const char * const * papszGroups, + uint32_t fDestFlags, PFNRTLOGPHASE pfnPhase, uint32_t cHistory, + uint64_t cbHistoryFileMax, uint32_t cSecsHistoryTimeSlot, + char *pszErrorMsg, size_t cchErrorMsg, const char *pszFilenameFmt, va_list args); + +/** + * Create a logger instance for singled threaded ring-0 usage. + * + * @returns iprt status code. + * + * @param pLogger Where to create the logger instance. + * @param cbLogger The amount of memory available for the logger instance. + * @param pLoggerR0Ptr The ring-0 address corresponding to @a pLogger. + * @param pfnLoggerR0Ptr Pointer to logger wrapper function. + * @param pfnFlushR0Ptr Pointer to flush function. + * @param fFlags Logger instance flags, a combination of the RTLOGFLAGS_* values. + * @param fDestFlags The destination flags. + */ +RTDECL(int) RTLogCreateForR0(PRTLOGGER pLogger, size_t cbLogger, + RTR0PTR pLoggerR0Ptr, RTR0PTR pfnLoggerR0Ptr, RTR0PTR pfnFlushR0Ptr, + uint32_t fFlags, uint32_t fDestFlags); + +/** + * Calculates the minimum size of a ring-0 logger instance. + * + * @returns The minimum size. + * @param cGroups The number of groups. + * @param fFlags Relevant flags. + */ +RTDECL(size_t) RTLogCalcSizeForR0(uint32_t cGroups, uint32_t fFlags); + +/** + * Destroys a logger instance. + * + * The instance is flushed and all output destinations closed (where applicable). + * + * @returns iprt status code. + * @param pLogger The logger instance which close destroyed. NULL is fine. + */ +RTDECL(int) RTLogDestroy(PRTLOGGER pLogger); + +/** + * Create a logger instance clone for RC usage. + * + * @returns iprt status code. + * + * @param pLogger The logger instance to be cloned. + * @param pLoggerRC Where to create the RC logger instance. + * @param cbLoggerRC Amount of memory allocated to for the RC logger + * instance clone. + * @param pfnLoggerRCPtr Pointer to logger wrapper function for this + * instance (RC Ptr). + * @param pfnFlushRCPtr Pointer to flush function (RC Ptr). + * @param fFlags Logger instance flags, a combination of the RTLOGFLAGS_* values. + */ +RTDECL(int) RTLogCloneRC(PRTLOGGER pLogger, PRTLOGGERRC pLoggerRC, size_t cbLoggerRC, + RTRCPTR pfnLoggerRCPtr, RTRCPTR pfnFlushRCPtr, uint32_t fFlags); + +/** + * Flushes a RC logger instance to a R3 logger. + * + * @returns iprt status code. + * @param pLogger The R3 logger instance to flush pLoggerRC to. If NULL + * the default logger is used. + * @param pLoggerRC The RC logger instance to flush. + */ +RTDECL(void) RTLogFlushRC(PRTLOGGER pLogger, PRTLOGGERRC pLoggerRC); + +/** + * Flushes the buffer in one logger instance onto another logger. + * + * @returns iprt status code. + * + * @param pSrcLogger The logger instance to flush. + * @param pDstLogger The logger instance to flush onto. + * If NULL the default logger will be used. + */ +RTDECL(void) RTLogFlushToLogger(PRTLOGGER pSrcLogger, PRTLOGGER pDstLogger); + +/** + * Flushes a R0 logger instance to a R3 logger. + * + * @returns iprt status code. + * @param pLogger The R3 logger instance to flush pLoggerR0 to. If NULL + * the default logger is used. + * @param pLoggerR0 The R0 logger instance to flush. + */ +RTDECL(void) RTLogFlushR0(PRTLOGGER pLogger, PRTLOGGER pLoggerR0); + +/** + * Sets the custom prefix callback. + * + * @returns IPRT status code. + * @param pLogger The logger instance. + * @param pfnCallback The callback. + * @param pvUser The user argument for the callback. + * */ +RTDECL(int) RTLogSetCustomPrefixCallback(PRTLOGGER pLogger, PFNRTLOGPREFIX pfnCallback, void *pvUser); + +/** + * Same as RTLogSetCustomPrefixCallback for loggers created by + * RTLogCreateForR0. + * + * @returns IPRT status code. + * @param pLogger The logger instance. + * @param pLoggerR0Ptr The ring-0 address corresponding to @a pLogger. + * @param pfnCallbackR0Ptr The callback. + * @param pvUserR0Ptr The user argument for the callback. + * */ +RTDECL(int) RTLogSetCustomPrefixCallbackForR0(PRTLOGGER pLogger, RTR0PTR pLoggerR0Ptr, + RTR0PTR pfnCallbackR0Ptr, RTR0PTR pvUserR0Ptr); + +/** + * Copies the group settings and flags from logger instance to another. + * + * @returns IPRT status code. + * @param pDstLogger The destination logger instance. + * @param pDstLoggerR0Ptr The ring-0 address corresponding to @a pDstLogger. + * @param pSrcLogger The source logger instance. If NULL the default one is used. + * @param fFlagsOr OR mask for the flags. + * @param fFlagsAnd AND mask for the flags. + */ +RTDECL(int) RTLogCopyGroupsAndFlagsForR0(PRTLOGGER pDstLogger, RTR0PTR pDstLoggerR0Ptr, + PCRTLOGGER pSrcLogger, uint32_t fFlagsOr, uint32_t fFlagsAnd); + +/** + * Get the current log group settings as a string. + * + * @returns VINF_SUCCESS or VERR_BUFFER_OVERFLOW. + * @param pLogger Logger instance (NULL for default logger). + * @param pszBuf The output buffer. + * @param cchBuf The size of the output buffer. Must be greater + * than zero. + */ +RTDECL(int) RTLogGetGroupSettings(PRTLOGGER pLogger, char *pszBuf, size_t cchBuf); + +/** + * Updates the group settings for the logger instance using the specified + * specification string. + * + * @returns iprt status code. + * Failures can safely be ignored. + * @param pLogger Logger instance (NULL for default logger). + * @param pszValue Value to parse. + */ +RTDECL(int) RTLogGroupSettings(PRTLOGGER pLogger, const char *pszValue); +#endif /* !IN_RC */ + +/** + * Updates the flags for the logger instance using the specified + * specification string. + * + * @returns iprt status code. + * Failures can safely be ignored. + * @param pLogger Logger instance (NULL for default logger). + * @param pszValue Value to parse. + */ +RTDECL(int) RTLogFlags(PRTLOGGER pLogger, const char *pszValue); + +/** + * Changes the buffering setting of the specified logger. + * + * This can be used for optimizing longish logging sequences. + * + * @returns The old state. + * @param pLogger The logger instance (NULL is an alias for the + * default logger). + * @param fBuffered The new state. + */ +RTDECL(bool) RTLogSetBuffering(PRTLOGGER pLogger, bool fBuffered); + +/** + * Sets the max number of entries per group. + * + * @returns Old restriction. + * + * @param pLogger The logger instance (NULL is an alias for the + * default logger). + * @param cMaxEntriesPerGroup The max number of entries per group. + * + * @remarks Lowering the limit of an active logger may quietly mute groups. + * Raising it may reactive already muted groups. + */ +RTDECL(uint32_t) RTLogSetGroupLimit(PRTLOGGER pLogger, uint32_t cMaxEntriesPerGroup); + +#ifndef IN_RC +/** + * Get the current log flags as a string. + * + * @returns VINF_SUCCESS or VERR_BUFFER_OVERFLOW. + * @param pLogger Logger instance (NULL for default logger). + * @param pszBuf The output buffer. + * @param cchBuf The size of the output buffer. Must be greater + * than zero. + */ +RTDECL(int) RTLogGetFlags(PRTLOGGER pLogger, char *pszBuf, size_t cchBuf); + +/** + * Updates the logger destination using the specified string. + * + * @returns VINF_SUCCESS or VERR_BUFFER_OVERFLOW. + * @param pLogger Logger instance (NULL for default logger). + * @param pszValue The value to parse. + */ +RTDECL(int) RTLogDestinations(PRTLOGGER pLogger, char const *pszValue); + +/** + * Get the current log destinations as a string. + * + * @returns VINF_SUCCESS or VERR_BUFFER_OVERFLOW. + * @param pLogger Logger instance (NULL for default logger). + * @param pszBuf The output buffer. + * @param cchBuf The size of the output buffer. Must be greater + * than 0. + */ +RTDECL(int) RTLogGetDestinations(PRTLOGGER pLogger, char *pszBuf, size_t cchBuf); +#endif /* !IN_RC */ + +/** + * Flushes the specified logger. + * + * @param pLogger The logger instance to flush. + * If NULL the default instance is used. The default instance + * will not be initialized by this call. + */ +RTDECL(void) RTLogFlush(PRTLOGGER pLogger); + +/** + * Write to a logger instance. + * + * @param pLogger Pointer to logger instance. + * @param pvCallerRet Ignored. + * @param pszFormat Format string. + * @param ... Format arguments. + */ +RTDECL(void) RTLogLogger(PRTLOGGER pLogger, void *pvCallerRet, const char *pszFormat, ...); + +/** + * Write to a logger instance. + * + * @param pLogger Pointer to logger instance. + * @param pszFormat Format string. + * @param args Format arguments. + */ +RTDECL(void) RTLogLoggerV(PRTLOGGER pLogger, const char *pszFormat, va_list args); + +/** + * Write to a logger instance. + * + * This function will check whether the instance, group and flags makes up a + * logging kind which is currently enabled before writing anything to the log. + * + * @param pLogger Pointer to logger instance. If NULL the default logger instance will be attempted. + * @param fFlags The logging flags. + * @param iGroup The group. + * The value ~0U is reserved for compatibility with RTLogLogger[V] and is + * only for internal usage! + * @param pszFormat Format string. + * @param ... Format arguments. + * @remark This is a worker function of LogIt. + */ +RTDECL(void) RTLogLoggerEx(PRTLOGGER pLogger, unsigned fFlags, unsigned iGroup, const char *pszFormat, ...); + +/** + * Write to a logger instance. + * + * This function will check whether the instance, group and flags makes up a + * logging kind which is currently enabled before writing anything to the log. + * + * @param pLogger Pointer to logger instance. If NULL the default logger instance will be attempted. + * @param fFlags The logging flags. + * @param iGroup The group. + * The value ~0U is reserved for compatibility with RTLogLogger[V] and is + * only for internal usage! + * @param pszFormat Format string. + * @param args Format arguments. + */ +RTDECL(void) RTLogLoggerExV(PRTLOGGER pLogger, unsigned fFlags, unsigned iGroup, const char *pszFormat, va_list args); + +/** + * printf like function for writing to the default log. + * + * @param pszFormat Printf like format string. + * @param ... Optional arguments as specified in pszFormat. + * + * @remark The API doesn't support formatting of floating point numbers at the moment. + */ +RTDECL(void) RTLogPrintf(const char *pszFormat, ...); + +/** + * vprintf like function for writing to the default log. + * + * @param pszFormat Printf like format string. + * @param args Optional arguments as specified in pszFormat. + * + * @remark The API doesn't support formatting of floating point numbers at the moment. + */ +RTDECL(void) RTLogPrintfV(const char *pszFormat, va_list args); + +/** + * Dumper vprintf-like function outputting to a logger. + * + * @param pvUser Pointer to the logger instance to use, NULL for + * default instance. + * @param pszFormat Format string. + * @param va Format arguments. + */ +RTDECL(void) RTLogDumpPrintfV(void *pvUser, const char *pszFormat, va_list va); + + +#ifndef DECLARED_FNRTSTROUTPUT /* duplicated in iprt/string.h */ +#define DECLARED_FNRTSTROUTPUT +/** + * Output callback. + * + * @returns number of bytes written. + * @param pvArg User argument. + * @param pachChars Pointer to an array of utf-8 characters. + * @param cbChars Number of bytes in the character array pointed to by pachChars. + */ +typedef DECLCALLBACK(size_t) FNRTSTROUTPUT(void *pvArg, const char *pachChars, size_t cbChars); +/** Pointer to callback function. */ +typedef FNRTSTROUTPUT *PFNRTSTROUTPUT; +#endif + +/** + * Partial vsprintf worker implementation. + * + * @returns number of bytes formatted. + * @param pfnOutput Output worker. + * Called in two ways. Normally with a string an it's length. + * For termination, it's called with NULL for string, 0 for length. + * @param pvArg Argument to output worker. + * @param pszFormat Format string. + * @param args Argument list. + */ +RTDECL(size_t) RTLogFormatV(PFNRTSTROUTPUT pfnOutput, void *pvArg, const char *pszFormat, va_list args); + +/** + * Write log buffer to COM port. + * + * @param pach Pointer to the buffer to write. + * @param cb Number of bytes to write. + */ +RTDECL(void) RTLogWriteCom(const char *pach, size_t cb); + +/** + * Prints a formatted string to the serial port used for logging. + * + * @returns Number of bytes written. + * @param pszFormat Format string. + * @param ... Optional arguments specified in the format string. + */ +RTDECL(size_t) RTLogComPrintf(const char *pszFormat, ...); + +/** + * Prints a formatted string to the serial port used for logging. + * + * @returns Number of bytes written. + * @param pszFormat Format string. + * @param args Optional arguments specified in the format string. + */ +RTDECL(size_t) RTLogComPrintfV(const char *pszFormat, va_list args); + + +#if 0 /* not implemented yet */ + +/** Indicates that the semaphores shall be used to notify the other + * part about buffer changes. */ +#define LOGHOOKBUFFER_FLAGS_SEMAPHORED 1 + +/** + * Log Hook Buffer. + * Use to communicate between the logger and a log consumer. + */ +typedef struct RTLOGHOOKBUFFER +{ + /** Write pointer. */ + volatile void *pvWrite; + /** Read pointer. */ + volatile void *pvRead; + /** Buffer start. */ + void *pvStart; + /** Buffer end (exclusive). */ + void *pvEnd; + /** Signaling semaphore used by the writer to wait on a full buffer. + * Only used when indicated in flags. */ + void *pvSemWriter; + /** Signaling semaphore used by the read to wait on an empty buffer. + * Only used when indicated in flags. */ + void *pvSemReader; + /** Buffer flags. Current reserved and set to zero. */ + volatile unsigned fFlags; +} RTLOGHOOKBUFFER; +/** Pointer to a log hook buffer. */ +typedef RTLOGHOOKBUFFER *PRTLOGHOOKBUFFER; + + +/** + * Register a logging hook. + * + * This type of logging hooks are expecting different threads acting + * producer and consumer. They share a circular buffer which have two + * pointers one for each end. When the buffer is full there are two + * alternatives (indicated by a buffer flag), either wait for the + * consumer to get it's job done, or to write a generic message saying + * buffer overflow. + * + * Since the waiting would need a signal semaphore, we'll skip that for now. + * + * @returns iprt status code. + * @param pBuffer Pointer to a logger hook buffer. + */ +RTDECL(int) RTLogRegisterHook(PRTLOGGER pLogger, PRTLOGHOOKBUFFER pBuffer); + +/** + * Deregister a logging hook registered with RTLogRegisterHook(). + * + * @returns iprt status code. + * @param pBuffer Pointer to a logger hook buffer. + */ +RTDECL(int) RTLogDeregisterHook(PRTLOGGER pLogger, PRTLOGHOOKBUFFER pBuffer); + +#endif /* not implemented yet */ + + + +/** + * Write log buffer to a debugger (RTLOGDEST_DEBUGGER). + * + * @param pach What to write. + * @param cb How much to write. + * @remark When linking statically, this function can be replaced by defining your own. + */ +RTDECL(void) RTLogWriteDebugger(const char *pach, size_t cb); + +/** + * Write log buffer to a user defined output stream (RTLOGDEST_USER). + * + * @param pach What to write. + * @param cb How much to write. + * @remark When linking statically, this function can be replaced by defining your own. + */ +RTDECL(void) RTLogWriteUser(const char *pach, size_t cb); + +/** + * Write log buffer to stdout (RTLOGDEST_STDOUT). + * + * @param pach What to write. + * @param cb How much to write. + * @remark When linking statically, this function can be replaced by defining your own. + */ +RTDECL(void) RTLogWriteStdOut(const char *pach, size_t cb); + +/** + * Write log buffer to stdout (RTLOGDEST_STDERR). + * + * @param pach What to write. + * @param cb How much to write. + * @remark When linking statically, this function can be replaced by defining your own. + */ +RTDECL(void) RTLogWriteStdErr(const char *pach, size_t cb); + +#ifdef VBOX + +/** + * Prints a formatted string to the backdoor port. + * + * @returns Number of bytes written. + * @param pszFormat Format string. + * @param ... Optional arguments specified in the format string. + */ +RTDECL(size_t) RTLogBackdoorPrintf(const char *pszFormat, ...); + +/** + * Prints a formatted string to the backdoor port. + * + * @returns Number of bytes written. + * @param pszFormat Format string. + * @param args Optional arguments specified in the format string. + */ +RTDECL(size_t) RTLogBackdoorPrintfV(const char *pszFormat, va_list args); + +#endif /* VBOX */ + +RT_C_DECLS_END + +/** @} */ + +#endif + --- linux-raspi2-4.2.0.orig/ubuntu/vbox/include/iprt/mangling.h +++ linux-raspi2-4.2.0/ubuntu/vbox/include/iprt/mangling.h @@ -0,0 +1,3006 @@ +/** @file + * IPRT - Symbol Mangling. + * + * This header is used to mangle public IPRT symbol to make it possible to have + * several IPRT version loaded into one symbol space at the same time. To + * enable symbol mangling you create a header which the compiler includes for + * every compilation unit (check out the -include option of gcc). Your header + * will define RT_MANGLER(name) and then include this header to set up the + * actual mappings. + */ + +/* + * Copyright (C) 2011-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + +#ifndef ___iprt_mangling_h +#define ___iprt_mangling_h + +#ifndef RT_MANGLER +# error "RT_MANGLER is not defined." +#endif + +#ifndef DOXYGEN_RUNNING + +/** @def RT_WITH_MANGLING + * Indicates that we're mangling symbols. */ +# define RT_WITH_MANGLING + + +/* + * Stable functions (alphabetical order): + */ +# define ASMAtomicCmpXchgExU64 RT_MANGLER(ASMAtomicCmpXchgExU64) /* not-some-systems... */ +# define ASMAtomicCmpXchgExU64_EndProc RT_MANGLER(ASMAtomicCmpXchgExU64_EndProc) +# define ASMAtomicCmpXchgU64 RT_MANGLER(ASMAtomicCmpXchgU64) /* not-some-systems... */ +# define ASMAtomicCmpXchgU64_EndProc RT_MANGLER(ASMAtomicCmpXchgU64_EndProc) +# define ASMAtomicReadU64 RT_MANGLER(ASMAtomicReadU64) /* not-some-systems... */ +# define ASMAtomicReadU64_EndProc RT_MANGLER(ASMAtomicReadU64_EndProc) +# define ASMAtomicUoAndU32 RT_MANGLER(ASMAtomicUoAndU32) /* not-some-systems... */ +# define ASMAtomicUoAndU32_EndProc RT_MANGLER(ASMAtomicUoAndU32_EndProc) +# define ASMAtomicUoAndU64 RT_MANGLER(ASMAtomicUoAndU64) /* not-some-systems... */ +# define ASMAtomicUoAndU64_EndProc RT_MANGLER(ASMAtomicUoAndU64_EndProc) +# define ASMAtomicUoDecU32 RT_MANGLER(ASMAtomicUoDecU32) /* not-some-systems... */ +# define ASMAtomicUoDecU32_EndProc RT_MANGLER(ASMAtomicUoDecU32_EndProc) +# define ASMAtomicUoIncU32 RT_MANGLER(ASMAtomicUoIncU32) /* not-some-systems... */ +# define ASMAtomicUoIncU32_EndProc RT_MANGLER(ASMAtomicUoIncU32_EndProc) +# define ASMAtomicUoOrU32 RT_MANGLER(ASMAtomicUoOrU32) /* not-some-systems... */ +# define ASMAtomicUoOrU32_EndProc RT_MANGLER(ASMAtomicUoOrU32_EndProc) +# define ASMAtomicUoOrU64 RT_MANGLER(ASMAtomicUoOrU64) /* not-some-systems... */ +# define ASMAtomicUoOrU64_EndProc RT_MANGLER(ASMAtomicUoOrU64_EndProc) +# define ASMAtomicUoReadU64 RT_MANGLER(ASMAtomicUoReadU64) /* not-some-systems... */ +# define ASMAtomicUoReadU64_EndProc RT_MANGLER(ASMAtomicUoReadU64_EndProc) +# define ASMAtomicXchgU64 RT_MANGLER(ASMAtomicXchgU64) /* not-some-systems... */ +# define ASMAtomicXchgU64_EndProc RT_MANGLER(ASMAtomicXchgU64_EndProc) +# define ASMCpuIdExSlow RT_MANGLER(ASMCpuIdExSlow) +# define ASMCpuIdExSlow_EndProc RT_MANGLER(ASMCpuIdExSlow_EndProc) +# define ASMGetXcr0 RT_MANGLER(ASMGetXcr0) +# define ASMGetXcr0_EndProc RT_MANGLER(ASMGetXcr0_EndProc) +# define ASMRdMsrEx RT_MANGLER(ASMRdMsrEx) +# define ASMRdMsrEx_EndProc RT_MANGLER(ASMRdMsrEx_EndProc) +# define ASMSetXcr0 RT_MANGLER(ASMSetXcr0) +# define ASMSetXcr0_EndProc RT_MANGLER(ASMSetXcr0_EndProc) +# define ASMWrMsrEx RT_MANGLER(ASMWrMsrEx) +# define ASMWrMsrEx_EndProc RT_MANGLER(ASMWrMsrEx_EndProc) +# define ASMXRstor RT_MANGLER(ASMXRstor) +# define ASMXRstor_EndProc RT_MANGLER(ASMXRstor_EndProc) +# define ASMXSave RT_MANGLER(ASMXSave) +# define ASMXSave_EndProc RT_MANGLER(ASMXSave_EndProc) +# define RTAssertAreQuiet RT_MANGLER(RTAssertAreQuiet) +# define RTAssertMayPanic RT_MANGLER(RTAssertMayPanic) +# define RTAssertMsg1 RT_MANGLER(RTAssertMsg1) +# define RTAssertMsg1Weak RT_MANGLER(RTAssertMsg1Weak) +# define RTAssertMsg2 RT_MANGLER(RTAssertMsg2) +# define RTAssertMsg2Add RT_MANGLER(RTAssertMsg2Add) +# define RTAssertMsg2AddV RT_MANGLER(RTAssertMsg2AddV) +# define RTAssertMsg2AddWeak RT_MANGLER(RTAssertMsg2AddWeak) +# define RTAssertMsg2AddWeakV RT_MANGLER(RTAssertMsg2AddWeakV) +# define RTAssertMsg2V RT_MANGLER(RTAssertMsg2V) +# define RTAssertMsg2Weak RT_MANGLER(RTAssertMsg2Weak) +# define RTAssertMsg2WeakV RT_MANGLER(RTAssertMsg2WeakV) +# define RTAssertSetMayPanic RT_MANGLER(RTAssertSetMayPanic) +# define RTAssertSetQuiet RT_MANGLER(RTAssertSetQuiet) +# define RTAssertShouldPanic RT_MANGLER(RTAssertShouldPanic) +# define RTAvlGCPhysDestroy RT_MANGLER(RTAvlGCPhysDestroy) +# define RTAvlGCPhysDoWithAll RT_MANGLER(RTAvlGCPhysDoWithAll) +# define RTAvlGCPhysGet RT_MANGLER(RTAvlGCPhysGet) +# define RTAvlGCPhysGetBestFit RT_MANGLER(RTAvlGCPhysGetBestFit) +# define RTAvlGCPhysInsert RT_MANGLER(RTAvlGCPhysInsert) +# define RTAvlGCPhysRemove RT_MANGLER(RTAvlGCPhysRemove) +# define RTAvlGCPhysRemoveBestFit RT_MANGLER(RTAvlGCPhysRemoveBestFit) +# define RTAvlGCPtrDestroy RT_MANGLER(RTAvlGCPtrDestroy) +# define RTAvlGCPtrDoWithAll RT_MANGLER(RTAvlGCPtrDoWithAll) +# define RTAvlGCPtrGet RT_MANGLER(RTAvlGCPtrGet) +# define RTAvlGCPtrGetBestFit RT_MANGLER(RTAvlGCPtrGetBestFit) +# define RTAvlGCPtrInsert RT_MANGLER(RTAvlGCPtrInsert) +# define RTAvlGCPtrRemove RT_MANGLER(RTAvlGCPtrRemove) +# define RTAvlGCPtrRemoveBestFit RT_MANGLER(RTAvlGCPtrRemoveBestFit) +# define RTAvlHCPhysDestroy RT_MANGLER(RTAvlHCPhysDestroy) +# define RTAvlHCPhysDoWithAll RT_MANGLER(RTAvlHCPhysDoWithAll) +# define RTAvlHCPhysGet RT_MANGLER(RTAvlHCPhysGet) +# define RTAvlHCPhysGetBestFit RT_MANGLER(RTAvlHCPhysGetBestFit) +# define RTAvlHCPhysInsert RT_MANGLER(RTAvlHCPhysInsert) +# define RTAvlHCPhysRemove RT_MANGLER(RTAvlHCPhysRemove) +# define RTAvlHCPhysRemoveBestFit RT_MANGLER(RTAvlHCPhysRemoveBestFit) +# define RTAvllU32Destroy RT_MANGLER(RTAvllU32Destroy) +# define RTAvllU32DoWithAll RT_MANGLER(RTAvllU32DoWithAll) +# define RTAvllU32Get RT_MANGLER(RTAvllU32Get) +# define RTAvllU32GetBestFit RT_MANGLER(RTAvllU32GetBestFit) +# define RTAvllU32Insert RT_MANGLER(RTAvllU32Insert) +# define RTAvllU32Remove RT_MANGLER(RTAvllU32Remove) +# define RTAvllU32RemoveBestFit RT_MANGLER(RTAvllU32RemoveBestFit) +# define RTAvllU32RemoveNode RT_MANGLER(RTAvllU32RemoveNode) +# define RTAvloGCPhysDestroy RT_MANGLER(RTAvloGCPhysDestroy) +# define RTAvloGCPhysDoWithAll RT_MANGLER(RTAvloGCPhysDoWithAll) +# define RTAvloGCPhysGet RT_MANGLER(RTAvloGCPhysGet) +# define RTAvloGCPhysGetBestFit RT_MANGLER(RTAvloGCPhysGetBestFit) +# define RTAvloGCPhysInsert RT_MANGLER(RTAvloGCPhysInsert) +# define RTAvloGCPhysRemove RT_MANGLER(RTAvloGCPhysRemove) +# define RTAvloGCPhysRemoveBestFit RT_MANGLER(RTAvloGCPhysRemoveBestFit) +# define RTAvloGCPtrDestroy RT_MANGLER(RTAvloGCPtrDestroy) +# define RTAvloGCPtrDoWithAll RT_MANGLER(RTAvloGCPtrDoWithAll) +# define RTAvloGCPtrGet RT_MANGLER(RTAvloGCPtrGet) +# define RTAvloGCPtrGetBestFit RT_MANGLER(RTAvloGCPtrGetBestFit) +# define RTAvloGCPtrInsert RT_MANGLER(RTAvloGCPtrInsert) +# define RTAvloGCPtrRemove RT_MANGLER(RTAvloGCPtrRemove) +# define RTAvloGCPtrRemoveBestFit RT_MANGLER(RTAvloGCPtrRemoveBestFit) +# define RTAvloHCPhysDestroy RT_MANGLER(RTAvloHCPhysDestroy) +# define RTAvloHCPhysDoWithAll RT_MANGLER(RTAvloHCPhysDoWithAll) +# define RTAvloHCPhysGet RT_MANGLER(RTAvloHCPhysGet) +# define RTAvloHCPhysGetBestFit RT_MANGLER(RTAvloHCPhysGetBestFit) +# define RTAvloHCPhysInsert RT_MANGLER(RTAvloHCPhysInsert) +# define RTAvloHCPhysRemove RT_MANGLER(RTAvloHCPhysRemove) +# define RTAvloHCPhysRemoveBestFit RT_MANGLER(RTAvloHCPhysRemoveBestFit) +# define RTAvloIOPortDestroy RT_MANGLER(RTAvloIOPortDestroy) +# define RTAvloIOPortDoWithAll RT_MANGLER(RTAvloIOPortDoWithAll) +# define RTAvloIOPortGet RT_MANGLER(RTAvloIOPortGet) +# define RTAvloIOPortGetBestFit RT_MANGLER(RTAvloIOPortGetBestFit) +# define RTAvloIOPortInsert RT_MANGLER(RTAvloIOPortInsert) +# define RTAvloIOPortRemove RT_MANGLER(RTAvloIOPortRemove) +# define RTAvloIOPortRemoveBestFit RT_MANGLER(RTAvloIOPortRemoveBestFit) +# define RTAvloU32Destroy RT_MANGLER(RTAvloU32Destroy) +# define RTAvloU32DoWithAll RT_MANGLER(RTAvloU32DoWithAll) +# define RTAvloU32Get RT_MANGLER(RTAvloU32Get) +# define RTAvloU32GetBestFit RT_MANGLER(RTAvloU32GetBestFit) +# define RTAvloU32Insert RT_MANGLER(RTAvloU32Insert) +# define RTAvloU32Remove RT_MANGLER(RTAvloU32Remove) +# define RTAvloU32RemoveBestFit RT_MANGLER(RTAvloU32RemoveBestFit) +# define RTAvlPVDestroy RT_MANGLER(RTAvlPVDestroy) +# define RTAvlPVDoWithAll RT_MANGLER(RTAvlPVDoWithAll) +# define RTAvlPVGet RT_MANGLER(RTAvlPVGet) +# define RTAvlPVGetBestFit RT_MANGLER(RTAvlPVGetBestFit) +# define RTAvlPVInsert RT_MANGLER(RTAvlPVInsert) +# define RTAvlPVRemove RT_MANGLER(RTAvlPVRemove) +# define RTAvlPVRemoveBestFit RT_MANGLER(RTAvlPVRemoveBestFit) +# define RTAvlrFileOffsetDestroy RT_MANGLER(RTAvlrFileOffsetDestroy) +# define RTAvlrFileOffsetDoWithAll RT_MANGLER(RTAvlrFileOffsetDoWithAll) +# define RTAvlrFileOffsetGet RT_MANGLER(RTAvlrFileOffsetGet) +# define RTAvlrFileOffsetGetBestFit RT_MANGLER(RTAvlrFileOffsetGetBestFit) +# define RTAvlrFileOffsetGetLeft RT_MANGLER(RTAvlrFileOffsetGetLeft) +# define RTAvlrFileOffsetGetRight RT_MANGLER(RTAvlrFileOffsetGetRight) +# define RTAvlrFileOffsetGetRoot RT_MANGLER(RTAvlrFileOffsetGetRoot) +# define RTAvlrFileOffsetInsert RT_MANGLER(RTAvlrFileOffsetInsert) +# define RTAvlrFileOffsetRangeGet RT_MANGLER(RTAvlrFileOffsetRangeGet) +# define RTAvlrFileOffsetRangeRemove RT_MANGLER(RTAvlrFileOffsetRangeRemove) +# define RTAvlrFileOffsetRemove RT_MANGLER(RTAvlrFileOffsetRemove) +# define RTAvlrGCPtrDestroy RT_MANGLER(RTAvlrGCPtrDestroy) +# define RTAvlrGCPtrDoWithAll RT_MANGLER(RTAvlrGCPtrDoWithAll) +# define RTAvlrGCPtrGet RT_MANGLER(RTAvlrGCPtrGet) +# define RTAvlrGCPtrGetBestFit RT_MANGLER(RTAvlrGCPtrGetBestFit) +# define RTAvlrGCPtrGetLeft RT_MANGLER(RTAvlrGCPtrGetLeft) +# define RTAvlrGCPtrGetRight RT_MANGLER(RTAvlrGCPtrGetRight) +# define RTAvlrGCPtrGetRoot RT_MANGLER(RTAvlrGCPtrGetRoot) +# define RTAvlrGCPtrInsert RT_MANGLER(RTAvlrGCPtrInsert) +# define RTAvlrGCPtrRangeGet RT_MANGLER(RTAvlrGCPtrRangeGet) +# define RTAvlrGCPtrRangeRemove RT_MANGLER(RTAvlrGCPtrRangeRemove) +# define RTAvlrGCPtrRemove RT_MANGLER(RTAvlrGCPtrRemove) +# define RTAvlroGCPhysDestroy RT_MANGLER(RTAvlroGCPhysDestroy) +# define RTAvlroGCPhysDoWithAll RT_MANGLER(RTAvlroGCPhysDoWithAll) +# define RTAvlroGCPhysGet RT_MANGLER(RTAvlroGCPhysGet) +# define RTAvlroGCPhysGetBestFit RT_MANGLER(RTAvlroGCPhysGetBestFit) +# define RTAvlroGCPhysGetLeft RT_MANGLER(RTAvlroGCPhysGetLeft) +# define RTAvlroGCPhysGetRight RT_MANGLER(RTAvlroGCPhysGetRight) +# define RTAvlroGCPhysGetRoot RT_MANGLER(RTAvlroGCPhysGetRoot) +# define RTAvlroGCPhysInsert RT_MANGLER(RTAvlroGCPhysInsert) +# define RTAvlroGCPhysRangeGet RT_MANGLER(RTAvlroGCPhysRangeGet) +# define RTAvlroGCPhysRangeRemove RT_MANGLER(RTAvlroGCPhysRangeRemove) +# define RTAvlroGCPhysRemove RT_MANGLER(RTAvlroGCPhysRemove) +# define RTAvlroGCPtrDestroy RT_MANGLER(RTAvlroGCPtrDestroy) +# define RTAvlroGCPtrDoWithAll RT_MANGLER(RTAvlroGCPtrDoWithAll) +# define RTAvlroGCPtrGet RT_MANGLER(RTAvlroGCPtrGet) +# define RTAvlroGCPtrGetBestFit RT_MANGLER(RTAvlroGCPtrGetBestFit) +# define RTAvlroGCPtrGetLeft RT_MANGLER(RTAvlroGCPtrGetLeft) +# define RTAvlroGCPtrGetRight RT_MANGLER(RTAvlroGCPtrGetRight) +# define RTAvlroGCPtrGetRoot RT_MANGLER(RTAvlroGCPtrGetRoot) +# define RTAvlroGCPtrInsert RT_MANGLER(RTAvlroGCPtrInsert) +# define RTAvlroGCPtrRangeGet RT_MANGLER(RTAvlroGCPtrRangeGet) +# define RTAvlroGCPtrRangeRemove RT_MANGLER(RTAvlroGCPtrRangeRemove) +# define RTAvlroGCPtrRemove RT_MANGLER(RTAvlroGCPtrRemove) +# define RTAvlroIOPortDestroy RT_MANGLER(RTAvlroIOPortDestroy) +# define RTAvlroIOPortDoWithAll RT_MANGLER(RTAvlroIOPortDoWithAll) +# define RTAvlroIOPortGet RT_MANGLER(RTAvlroIOPortGet) +# define RTAvlroIOPortInsert RT_MANGLER(RTAvlroIOPortInsert) +# define RTAvlroIOPortRangeGet RT_MANGLER(RTAvlroIOPortRangeGet) +# define RTAvlroIOPortRangeRemove RT_MANGLER(RTAvlroIOPortRangeRemove) +# define RTAvlroIOPortRemove RT_MANGLER(RTAvlroIOPortRemove) +# define RTAvlrooGCPtrDestroy RT_MANGLER(RTAvlrooGCPtrDestroy) +# define RTAvlrooGCPtrDoWithAll RT_MANGLER(RTAvlrooGCPtrDoWithAll) +# define RTAvlrooGCPtrGet RT_MANGLER(RTAvlrooGCPtrGet) +# define RTAvlrooGCPtrGetBestFit RT_MANGLER(RTAvlrooGCPtrGetBestFit) +# define RTAvlrooGCPtrGetLeft RT_MANGLER(RTAvlrooGCPtrGetLeft) +# define RTAvlrooGCPtrGetNextEqual RT_MANGLER(RTAvlrooGCPtrGetNextEqual) +# define RTAvlrooGCPtrGetRight RT_MANGLER(RTAvlrooGCPtrGetRight) +# define RTAvlrooGCPtrGetRoot RT_MANGLER(RTAvlrooGCPtrGetRoot) +# define RTAvlrooGCPtrInsert RT_MANGLER(RTAvlrooGCPtrInsert) +# define RTAvlrooGCPtrRangeGet RT_MANGLER(RTAvlrooGCPtrRangeGet) +# define RTAvlrooGCPtrRangeRemove RT_MANGLER(RTAvlrooGCPtrRangeRemove) +# define RTAvlrooGCPtrRemove RT_MANGLER(RTAvlrooGCPtrRemove) +# define RTAvlrPVDestroy RT_MANGLER(RTAvlrPVDestroy) +# define RTAvlrPVDoWithAll RT_MANGLER(RTAvlrPVDoWithAll) +# define RTAvlrPVGet RT_MANGLER(RTAvlrPVGet) +# define RTAvlrPVGetBestFit RT_MANGLER(RTAvlrPVGetBestFit) +# define RTAvlrPVInsert RT_MANGLER(RTAvlrPVInsert) +# define RTAvlrPVRangeGet RT_MANGLER(RTAvlrPVRangeGet) +# define RTAvlrPVRangeRemove RT_MANGLER(RTAvlrPVRangeRemove) +# define RTAvlrPVRemove RT_MANGLER(RTAvlrPVRemove) +# define RTAvlrPVRemoveBestFit RT_MANGLER(RTAvlrPVRemoveBestFit) +# define RTAvlrU64Destroy RT_MANGLER(RTAvlrU64Destroy) +# define RTAvlrU64DoWithAll RT_MANGLER(RTAvlrU64DoWithAll) +# define RTAvlrU64Get RT_MANGLER(RTAvlrU64Get) +# define RTAvlrU64GetBestFit RT_MANGLER(RTAvlrU64GetBestFit) +# define RTAvlrU64Insert RT_MANGLER(RTAvlrU64Insert) +# define RTAvlrU64RangeGet RT_MANGLER(RTAvlrU64RangeGet) +# define RTAvlrU64RangeRemove RT_MANGLER(RTAvlrU64RangeRemove) +# define RTAvlrU64Remove RT_MANGLER(RTAvlrU64Remove) +# define RTAvlrU64RemoveBestFit RT_MANGLER(RTAvlrU64RemoveBestFit) +# define RTAvlrUIntPtrDestroy RT_MANGLER(RTAvlrUIntPtrDestroy) +# define RTAvlrUIntPtrDoWithAll RT_MANGLER(RTAvlrUIntPtrDoWithAll) +# define RTAvlrUIntPtrGet RT_MANGLER(RTAvlrUIntPtrGet) +# define RTAvlrUIntPtrGetBestFit RT_MANGLER(RTAvlrUIntPtrGetBestFit) +# define RTAvlrUIntPtrGetLeft RT_MANGLER(RTAvlrUIntPtrGetLeft) +# define RTAvlrUIntPtrGetRight RT_MANGLER(RTAvlrUIntPtrGetRight) +# define RTAvlrUIntPtrGetRoot RT_MANGLER(RTAvlrUIntPtrGetRoot) +# define RTAvlrUIntPtrInsert RT_MANGLER(RTAvlrUIntPtrInsert) +# define RTAvlrUIntPtrRangeGet RT_MANGLER(RTAvlrUIntPtrRangeGet) +# define RTAvlrUIntPtrRangeRemove RT_MANGLER(RTAvlrUIntPtrRangeRemove) +# define RTAvlrUIntPtrRemove RT_MANGLER(RTAvlrUIntPtrRemove) +# define RTAvlU32Destroy RT_MANGLER(RTAvlU32Destroy) +# define RTAvlU32DoWithAll RT_MANGLER(RTAvlU32DoWithAll) +# define RTAvlU32Get RT_MANGLER(RTAvlU32Get) +# define RTAvlU32GetBestFit RT_MANGLER(RTAvlU32GetBestFit) +# define RTAvlU32Insert RT_MANGLER(RTAvlU32Insert) +# define RTAvlU32Remove RT_MANGLER(RTAvlU32Remove) +# define RTAvlU32RemoveBestFit RT_MANGLER(RTAvlU32RemoveBestFit) +# define RTAvlUIntPtrDestroy RT_MANGLER(RTAvlUIntPtrDestroy) +# define RTAvlUIntPtrDoWithAll RT_MANGLER(RTAvlUIntPtrDoWithAll) +# define RTAvlUIntPtrGet RT_MANGLER(RTAvlUIntPtrGet) +# define RTAvlUIntPtrGetBestFit RT_MANGLER(RTAvlUIntPtrGetBestFit) +# define RTAvlUIntPtrGetLeft RT_MANGLER(RTAvlUIntPtrGetLeft) +# define RTAvlUIntPtrGetRight RT_MANGLER(RTAvlUIntPtrGetRight) +# define RTAvlUIntPtrGetRoot RT_MANGLER(RTAvlUIntPtrGetRoot) +# define RTAvlUIntPtrInsert RT_MANGLER(RTAvlUIntPtrInsert) +# define RTAvlUIntPtrRemove RT_MANGLER(RTAvlUIntPtrRemove) +# define RTAvlULDestroy RT_MANGLER(RTAvlULDestroy) +# define RTAvlULDoWithAll RT_MANGLER(RTAvlULDoWithAll) +# define RTAvlULGet RT_MANGLER(RTAvlULGet) +# define RTAvlULGetBestFit RT_MANGLER(RTAvlULGetBestFit) +# define RTAvlULInsert RT_MANGLER(RTAvlULInsert) +# define RTAvlULRemove RT_MANGLER(RTAvlULRemove) +# define RTAvlULRemoveBestFit RT_MANGLER(RTAvlULRemoveBestFit) +# define RTBase64Decode RT_MANGLER(RTBase64Decode) +# define RTBase64DecodeEx RT_MANGLER(RTBase64DecodeEx) +# define RTBase64DecodedSize RT_MANGLER(RTBase64DecodedSize) +# define RTBase64DecodedSizeEx RT_MANGLER(RTBase64DecodedSizeEx) +# define RTBase64Encode RT_MANGLER(RTBase64Encode) +# define RTBase64EncodedLength RT_MANGLER(RTBase64EncodedLength) +# define RTBldCfgCompiler RT_MANGLER(RTBldCfgCompiler) +# define RTBldCfgRevision RT_MANGLER(RTBldCfgRevision) +# define RTBldCfgRevisionStr RT_MANGLER(RTBldCfgRevisionStr) +# define RTBldCfgTarget RT_MANGLER(RTBldCfgTarget) +# define RTBldCfgTargetArch RT_MANGLER(RTBldCfgTargetArch) +# define RTBldCfgTargetDotArch RT_MANGLER(RTBldCfgTargetDotArch) +# define RTBldCfgType RT_MANGLER(RTBldCfgType) +# define RTBldCfgVersion RT_MANGLER(RTBldCfgVersion) +# define RTBldCfgVersionBuild RT_MANGLER(RTBldCfgVersionBuild) +# define RTBldCfgVersionMajor RT_MANGLER(RTBldCfgVersionMajor) +# define RTBldCfgVersionMinor RT_MANGLER(RTBldCfgVersionMinor) +# define RTCdromOpen RT_MANGLER(RTCdromOpen) +# define RTCdromRetain RT_MANGLER(RTCdromRetain) +# define RTCdromRelease RT_MANGLER(RTCdromRelease) +# define RTCdromQueryMountPoint RT_MANGLER(RTCdromQueryMountPoint) +# define RTCdromUnmount RT_MANGLER(RTCdromUnmount) +# define RTCdromEject RT_MANGLER(RTCdromEject) +# define RTCdromLock RT_MANGLER(RTCdromLock) +# define RTCdromUnlock RT_MANGLER(RTCdromUnlock) +# define RTCdromCount RT_MANGLER(RTCdromCount) +# define RTCdromOrdinalToName RT_MANGLER(RTCdromOrdinalToName) +# define RTCdromOpenByOrdinal RT_MANGLER(RTCdromOpenByOrdinal) +# define RTCidrStrToIPv4 RT_MANGLER(RTCidrStrToIPv4) +# define RTCircBufAcquireReadBlock RT_MANGLER(RTCircBufAcquireReadBlock) +# define RTCircBufAcquireWriteBlock RT_MANGLER(RTCircBufAcquireWriteBlock) +# define RTCircBufCreate RT_MANGLER(RTCircBufCreate) +# define RTCircBufDestroy RT_MANGLER(RTCircBufDestroy) +# define RTCircBufFree RT_MANGLER(RTCircBufFree) +# define RTCircBufIsReading RT_MANGLER(RTCircBufIsReading) +# define RTCircBufIsWriting RT_MANGLER(RTCircBufIsWriting) +# define RTCircBufReleaseReadBlock RT_MANGLER(RTCircBufReleaseReadBlock) +# define RTCircBufReleaseWriteBlock RT_MANGLER(RTCircBufReleaseWriteBlock) +# define RTCircBufReset RT_MANGLER(RTCircBufReset) +# define RTCircBufSize RT_MANGLER(RTCircBufSize) +# define RTCircBufUsed RT_MANGLER(RTCircBufUsed) +# define RTCoreDumperDisable RT_MANGLER(RTCoreDumperDisable) /* solaris */ +# define RTCoreDumperSetup RT_MANGLER(RTCoreDumperSetup) /* solaris */ +# define RTCoreDumperTakeDump RT_MANGLER(RTCoreDumperTakeDump) /* solaris */ +# define RTCrc32 RT_MANGLER(RTCrc32) +# define RTCrc32Finish RT_MANGLER(RTCrc32Finish) +# define RTCrc32Process RT_MANGLER(RTCrc32Process) +# define RTCrc32Start RT_MANGLER(RTCrc32Start) +# define RTCrc32C RT_MANGLER(RTCrc32C) +# define RTCrc32CFinish RT_MANGLER(RTCrc32CFinish) +# define RTCrc32CProcess RT_MANGLER(RTCrc32CProcess) +# define RTCrc32CStart RT_MANGLER(RTCrc32CStart) +# define RTCrc64 RT_MANGLER(RTCrc64) +# define RTCrc64Finish RT_MANGLER(RTCrc64Finish) +# define RTCrc64Process RT_MANGLER(RTCrc64Process) +# define RTCrc64Start RT_MANGLER(RTCrc64Start) +# define RTCrcAdler32 RT_MANGLER(RTCrcAdler32) +# define RTCrcAdler32Finish RT_MANGLER(RTCrcAdler32Finish) +# define RTCrcAdler32Process RT_MANGLER(RTCrcAdler32Process) +# define RTCrcAdler32Start RT_MANGLER(RTCrcAdler32Start) +# define RTCritSectDelete RT_MANGLER(RTCritSectDelete) +# define RTCritSectEnter RT_MANGLER(RTCritSectEnter) +# define RTCritSectEnterDebug RT_MANGLER(RTCritSectEnterDebug) +# define RTCritSectEnterMultiple RT_MANGLER(RTCritSectEnterMultiple) +# define RTCritSectEnterMultipleDebug RT_MANGLER(RTCritSectEnterMultipleDebug) +# define RTCritSectInit RT_MANGLER(RTCritSectInit) +# define RTCritSectInitEx RT_MANGLER(RTCritSectInitEx) +# define RTCritSectLeave RT_MANGLER(RTCritSectLeave) +# define RTCritSectLeaveMultiple RT_MANGLER(RTCritSectLeaveMultiple) +# define RTCritSectSetSubClass RT_MANGLER(RTCritSectSetSubClass) +# define RTCritSectTryEnter RT_MANGLER(RTCritSectTryEnter) +# define RTCritSectTryEnterDebug RT_MANGLER(RTCritSectTryEnterDebug) +# define RTCritSectRwDelete RT_MANGLER(RTCritSectRwDelete) +# define RTCritSectRwEnterExcl RT_MANGLER(RTCritSectRwEnterExcl) +# define RTCritSectRwEnterExclDebug RT_MANGLER(RTCritSectRwEnterExclDebug) +# define RTCritSectRwEnterShared RT_MANGLER(RTCritSectRwEnterShared) +# define RTCritSectRwEnterSharedDebug RT_MANGLER(RTCritSectRwEnterSharedDebug) +# define RTCritSectRwGetReadCount RT_MANGLER(RTCritSectRwGetReadCount) +# define RTCritSectRwGetWriteRecursion RT_MANGLER(RTCritSectRwGetWriteRecursion) +# define RTCritSectRwGetWriterReadRecursion RT_MANGLER(RTCritSectRwGetWriterReadRecursion) +# define RTCritSectRwInit RT_MANGLER(RTCritSectRwInit) +# define RTCritSectRwInitEx RT_MANGLER(RTCritSectRwInitEx) +# define RTCritSectRwIsReadOwner RT_MANGLER(RTCritSectRwIsReadOwner) +# define RTCritSectRwIsWriteOwner RT_MANGLER(RTCritSectRwIsWriteOwner) +# define RTCritSectRwLeaveExcl RT_MANGLER(RTCritSectRwLeaveExcl) +# define RTCritSectRwLeaveShared RT_MANGLER(RTCritSectRwLeaveShared) +# define RTCritSectRwSetSubClass RT_MANGLER(RTCritSectRwSetSubClass) +# define RTCritSectRwTryEnterExcl RT_MANGLER(RTCritSectRwTryEnterExcl) +# define RTCritSectRwTryEnterExclDebug RT_MANGLER(RTCritSectRwTryEnterExclDebug) +# define RTCritSectRwTryEnterShared RT_MANGLER(RTCritSectRwTryEnterShared) +# define RTCritSectRwTryEnterSharedDebug RT_MANGLER(RTCritSectRwTryEnterSharedDebug) +# define RTDbgAsCreate RT_MANGLER(RTDbgAsCreate) +# define RTDbgAsCreateF RT_MANGLER(RTDbgAsCreateF) +# define RTDbgAsCreateV RT_MANGLER(RTDbgAsCreateV) +# define RTDbgAsFirstAddr RT_MANGLER(RTDbgAsFirstAddr) +# define RTDbgAsLastAddr RT_MANGLER(RTDbgAsLastAddr) +# define RTDbgAsLineAdd RT_MANGLER(RTDbgAsLineAdd) +# define RTDbgAsLineByAddr RT_MANGLER(RTDbgAsLineByAddr) +# define RTDbgAsLineByAddrA RT_MANGLER(RTDbgAsLineByAddrA) +# define RTDbgAsLockExcl RT_MANGLER(RTDbgAsLockExcl) +# define RTDbgAsModuleByAddr RT_MANGLER(RTDbgAsModuleByAddr) +# define RTDbgAsModuleByIndex RT_MANGLER(RTDbgAsModuleByIndex) +# define RTDbgAsModuleByName RT_MANGLER(RTDbgAsModuleByName) +# define RTDbgAsModuleCount RT_MANGLER(RTDbgAsModuleCount) +# define RTDbgAsModuleLink RT_MANGLER(RTDbgAsModuleLink) +# define RTDbgAsModuleLinkSeg RT_MANGLER(RTDbgAsModuleLinkSeg) +# define RTDbgAsModuleQueryMapByIndex RT_MANGLER(RTDbgAsModuleQueryMapByIndex) +# define RTDbgAsModuleUnlink RT_MANGLER(RTDbgAsModuleUnlink) +# define RTDbgAsModuleUnlinkByAddr RT_MANGLER(RTDbgAsModuleUnlinkByAddr) +# define RTDbgAsName RT_MANGLER(RTDbgAsName) +# define RTDbgAsRelease RT_MANGLER(RTDbgAsRelease) +# define RTDbgAsRetain RT_MANGLER(RTDbgAsRetain) +# define RTDbgAsSymbolAdd RT_MANGLER(RTDbgAsSymbolAdd) +# define RTDbgAsSymbolByAddr RT_MANGLER(RTDbgAsSymbolByAddr) +# define RTDbgAsSymbolByAddrA RT_MANGLER(RTDbgAsSymbolByAddrA) +# define RTDbgAsSymbolByName RT_MANGLER(RTDbgAsSymbolByName) +# define RTDbgAsSymbolByNameA RT_MANGLER(RTDbgAsSymbolByNameA) +# define RTDbgAsUnlockExcl RT_MANGLER(RTDbgAsUnlockExcl) +# define RTDbgCfgCreate RT_MANGLER(RTDbgCfgCreate) +# define RTDbgCfgRetain RT_MANGLER(RTDbgCfgRetain) +# define RTDbgCfgRelease RT_MANGLER(RTDbgCfgRelease) +# define RTDbgCfgChangeString RT_MANGLER(RTDbgCfgChangeString) +# define RTDbgCfgChangeUInt RT_MANGLER(RTDbgCfgChangeUInt) +# define RTDbgCfgQueryString RT_MANGLER(RTDbgCfgQueryString) +# define RTDbgCfgQueryUInt RT_MANGLER(RTDbgCfgQueryUInt) +# define RTDbgCfgOpenDbg RT_MANGLER(RTDbgCfgOpenDbg) +# define RTDbgCfgOpenDsymBundle RT_MANGLER(RTDbgCfgOpenDsymBundle) +# define RTDbgCfgOpenMachOImage RT_MANGLER(RTDbgCfgOpenMachOImage) +# define RTDbgCfgOpenDwo RT_MANGLER(RTDbgCfgOpenDwo) +# define RTDbgCfgOpenPdb70 RT_MANGLER(RTDbgCfgOpenPdb70) +# define RTDbgCfgOpenPdb20 RT_MANGLER(RTDbgCfgOpenPdb20) +# define RTDbgCfgOpenPeImage RT_MANGLER(RTDbgCfgOpenPeImage) +# define RTDbgCfgSetLogCallback RT_MANGLER(RTDbgCfgSetLogCallback) +# define RTDbgLineAlloc RT_MANGLER(RTDbgLineAlloc) +# define RTDbgLineDup RT_MANGLER(RTDbgLineDup) +# define RTDbgLineFree RT_MANGLER(RTDbgLineFree) +# define RTDbgModCreate RT_MANGLER(RTDbgModCreate) +# define RTDbgModCreateFromDbg RT_MANGLER(RTDbgModCreateFromDbg) +# define RTDbgModCreateFromDwo RT_MANGLER(RTDbgModCreateFromDwo) +# define RTDbgModCreateFromImage RT_MANGLER(RTDbgModCreateFromImage) +# define RTDbgModCreateFromMap RT_MANGLER(RTDbgModCreateFromMap) +# define RTDbgModCreateFromPdb RT_MANGLER(RTDbgModCreateFromPdb) +# define RTDbgModCreateFromPeImage RT_MANGLER(RTDbgModCreateFromPeImage) +# define RTDbgModCreateFromMachOImage RT_MANGLER(RTDbgModCreateFromMachOImage) +# define RTDbgModGetTag RT_MANGLER(RTDbgModGetTag) +# define RTDbgModImageSize RT_MANGLER(RTDbgModImageSize) +# define RTDbgModIsDeferred RT_MANGLER(RTDbgModIsDeferred) +# define RTDbgModIsExports RT_MANGLER(RTDbgModIsExports) +# define RTDbgModLineAdd RT_MANGLER(RTDbgModLineAdd) +# define RTDbgModLineByAddr RT_MANGLER(RTDbgModLineByAddr) +# define RTDbgModLineByAddrA RT_MANGLER(RTDbgModLineByAddrA) +# define RTDbgModLineByOrdinal RT_MANGLER(RTDbgModLineByOrdinal) +# define RTDbgModLineByOrdinalA RT_MANGLER(RTDbgModLineByOrdinalA) +# define RTDbgModLineCount RT_MANGLER(RTDbgModLineCount) +# define RTDbgModName RT_MANGLER(RTDbgModName) +# define RTDbgModDebugFile RT_MANGLER(RTDbgModDebugFile) +# define RTDbgModImageFile RT_MANGLER(RTDbgModImageFile) +# define RTDbgModImageFileUsed RT_MANGLER(RTDbgModImageFileUsed) +# define RTDbgModRelease RT_MANGLER(RTDbgModRelease) +# define RTDbgModRemoveAll RT_MANGLER(RTDbgModRemoveAll) +# define RTDbgModRetain RT_MANGLER(RTDbgModRetain) +# define RTDbgModRvaToSegOff RT_MANGLER(RTDbgModRvaToSegOff) +# define RTDbgModSegmentAdd RT_MANGLER(RTDbgModSegmentAdd) +# define RTDbgModSegmentByIndex RT_MANGLER(RTDbgModSegmentByIndex) +# define RTDbgModSegmentCount RT_MANGLER(RTDbgModSegmentCount) +# define RTDbgModSegmentRva RT_MANGLER(RTDbgModSegmentRva) +# define RTDbgModSegmentSize RT_MANGLER(RTDbgModSegmentSize) +# define RTDbgModSetTag RT_MANGLER(RTDbgModSetTag) +# define RTDbgModSymbolAdd RT_MANGLER(RTDbgModSymbolAdd) +# define RTDbgModSymbolByAddr RT_MANGLER(RTDbgModSymbolByAddr) +# define RTDbgModSymbolByAddrA RT_MANGLER(RTDbgModSymbolByAddrA) +# define RTDbgModSymbolByName RT_MANGLER(RTDbgModSymbolByName) +# define RTDbgModSymbolByNameA RT_MANGLER(RTDbgModSymbolByNameA) +# define RTDbgModSymbolByOrdinal RT_MANGLER(RTDbgModSymbolByOrdinal) +# define RTDbgModSymbolByOrdinalA RT_MANGLER(RTDbgModSymbolByOrdinalA) +# define RTDbgModSymbolCount RT_MANGLER(RTDbgModSymbolCount) +# define RTDbgSymbolAlloc RT_MANGLER(RTDbgSymbolAlloc) +# define RTDbgSymbolDup RT_MANGLER(RTDbgSymbolDup) +# define RTDbgSymbolFree RT_MANGLER(RTDbgSymbolFree) +# define RTDirClose RT_MANGLER(RTDirClose) +# define RTDirCreate RT_MANGLER(RTDirCreate) +# define RTDirCreateFullPath RT_MANGLER(RTDirCreateFullPath) +# define RTDirCreateTemp RT_MANGLER(RTDirCreateTemp) +# define RTDirCreateTempSecure RT_MANGLER(RTDirCreateTempSecure) +# define RTDirCreateUniqueNumbered RT_MANGLER(RTDirCreateUniqueNumbered) +# define RTDirEntryIsStdDotLink RT_MANGLER(RTDirEntryIsStdDotLink) +# define RTDirEntryExIsStdDotLink RT_MANGLER(RTDirEntryExIsStdDotLink) +# define RTDirExists RT_MANGLER(RTDirExists) +# define RTDirFlush RT_MANGLER(RTDirFlush) +# define RTDirFlushParent RT_MANGLER(RTDirFlushParent) +# define RTDirOpen RT_MANGLER(RTDirOpen) +# define RTDirOpenFiltered RT_MANGLER(RTDirOpenFiltered) +# define RTDirQueryInfo RT_MANGLER(RTDirQueryInfo) +# define RTDirQueryUnknownType RT_MANGLER(RTDirQueryUnknownType) +# define RTDirQueryUnknownTypeEx RT_MANGLER(RTDirQueryUnknownTypeEx) +# define RTDirRead RT_MANGLER(RTDirRead) +# define RTDirReadEx RT_MANGLER(RTDirReadEx) +# define RTDirRemove RT_MANGLER(RTDirRemove) +# define RTDirRemoveRecursive RT_MANGLER(RTDirRemoveRecursive) +# define RTDirRename RT_MANGLER(RTDirRename) +# define RTDirSetTimes RT_MANGLER(RTDirSetTimes) +# define RTDvmCreate RT_MANGLER(RTDvmCreate) +# define RTDvmRetain RT_MANGLER(RTDvmRetain) +# define RTDvmRelease RT_MANGLER(RTDvmRelease) +# define RTDvmMapOpen RT_MANGLER(RTDvmMapOpen) +# define RTDvmMapInitialize RT_MANGLER(RTDvmMapInitialize) +# define RTDvmMapGetFormat RT_MANGLER(RTDvmMapGetFormat) +# define RTDvmMapGetValidVolumes RT_MANGLER(RTDvmMapGetValidVolumes) +# define RTDvmMapGetMaxVolumes RT_MANGLER(RTDvmMapGetMaxVolumes) +# define RTDvmMapQueryBlockStatus RT_MANGLER(RTDvmMapQueryBlockStatus) +# define RTDvmMapQueryFirstVolume RT_MANGLER(RTDvmMapQueryFirstVolume) +# define RTDvmMapQueryNextVolume RT_MANGLER(RTDvmMapQueryNextVolume) +# define RTDvmVolumeRetain RT_MANGLER(RTDvmVolumeRetain) +# define RTDvmVolumeRelease RT_MANGLER(RTDvmVolumeRelease) +# define RTDvmVolumeGetSize RT_MANGLER(RTDvmVolumeGetSize) +# define RTDvmVolumeQueryName RT_MANGLER(RTDvmVolumeQueryName) +# define RTDvmVolumeGetType RT_MANGLER(RTDvmVolumeGetType) +# define RTDvmVolumeGetFlags RT_MANGLER(RTDvmVolumeGetFlags) +# define RTDvmVolumeRead RT_MANGLER(RTDvmVolumeRead) +# define RTDvmVolumeWrite RT_MANGLER(RTDvmVolumeWrite) +# define RTDvmVolumeSetQueryBlockStatusCallback RT_MANGLER(RTDvmVolumeSetQueryBlockStatusCallback) +# define RTDvmVolumeTypeGetDescr RT_MANGLER(RTDvmVolumeTypeGetDescr) +# define RTDvmVolumeCreateVfsFile RT_MANGLER(RTDvmVolumeCreateVfsFile) +# define RTEnvApplyChanges RT_MANGLER(RTEnvApplyChanges) +# define RTEnvClone RT_MANGLER(RTEnvClone) +# define RTEnvCountEx RT_MANGLER(RTEnvCountEx) +# define RTEnvCreate RT_MANGLER(RTEnvCreate) +# define RTEnvCreateChangeRecord RT_MANGLER(RTEnvCreateChangeRecord) +# define RTEnvDestroy RT_MANGLER(RTEnvDestroy) +# define RTEnvDupEx RT_MANGLER(RTEnvDupEx) +# define RTEnvExist RT_MANGLER(RTEnvExist) +# define RTEnvExistsBad RT_MANGLER(RTEnvExistsBad) +# define RTEnvExistsUtf8 RT_MANGLER(RTEnvExistsUtf8) +# define RTEnvExistEx RT_MANGLER(RTEnvExistEx) +# define RTEnvFreeUtf8Block RT_MANGLER(RTEnvFreeUtf8Block) +# define RTEnvFreeUtf16Block RT_MANGLER(RTEnvFreeUtf16Block) +# define RTEnvGet RT_MANGLER(RTEnvGet) +# define RTEnvGetBad RT_MANGLER(RTEnvGetBad) +# define RTEnvGetByIndexEx RT_MANGLER(RTEnvGetByIndexEx) +# define RTEnvGetByIndexRawEx RT_MANGLER(RTEnvGetByIndexRawEx) +# define RTEnvGetUtf8 RT_MANGLER(RTEnvGetUtf8) +# define RTEnvGetEx RT_MANGLER(RTEnvGetEx) +# define RTEnvGetExecEnvP RT_MANGLER(RTEnvGetExecEnvP) +# define RTEnvIsChangeRecord RT_MANGLER(RTEnvIsChangeRecord) +# define RTEnvPut RT_MANGLER(RTEnvPut) +# define RTEnvPutBad RT_MANGLER(RTEnvPutBad) +# define RTEnvPutUtf8 RT_MANGLER(RTEnvPutUtf8) +# define RTEnvPutEx RT_MANGLER(RTEnvPutEx) +# define RTEnvQueryUtf16Block RT_MANGLER(RTEnvQueryUtf16Block) +# define RTEnvQueryUtf8Block RT_MANGLER(RTEnvQueryUtf8Block) +# define RTEnvReset RT_MANGLER(RTEnvReset) +# define RTEnvSet RT_MANGLER(RTEnvSet) +# define RTEnvSetBad RT_MANGLER(RTEnvSetBad) +# define RTEnvSetUtf8 RT_MANGLER(RTEnvSetUtf8) +# define RTEnvSetEx RT_MANGLER(RTEnvSetEx) +# define RTEnvUnset RT_MANGLER(RTEnvUnset) +# define RTEnvUnsetBad RT_MANGLER(RTEnvUnsetBad) +# define RTEnvUnsetUtf8 RT_MANGLER(RTEnvUnsetUtf8) +# define RTEnvUnsetEx RT_MANGLER(RTEnvUnsetEx) +# define RTErrCOMGet RT_MANGLER(RTErrCOMGet) +# define RTErrConvertFromErrno RT_MANGLER(RTErrConvertFromErrno) +# define RTErrConvertToErrno RT_MANGLER(RTErrConvertToErrno) +# define RTErrGet RT_MANGLER(RTErrGet) +# define RTErrInfoAlloc RT_MANGLER(RTErrInfoAlloc) +# define RTErrInfoAllocEx RT_MANGLER(RTErrInfoAllocEx) +# define RTErrInfoFree RT_MANGLER(RTErrInfoFree) +# define RTErrInfoSet RT_MANGLER(RTErrInfoSet) +# define RTErrInfoSetF RT_MANGLER(RTErrInfoSetF) +# define RTErrInfoSetV RT_MANGLER(RTErrInfoSetV) +# define RTErrVarsAreEqual RT_MANGLER(RTErrVarsAreEqual) +# define RTErrVarsHaveChanged RT_MANGLER(RTErrVarsHaveChanged) +# define RTErrVarsRestore RT_MANGLER(RTErrVarsRestore) +# define RTErrVarsSave RT_MANGLER(RTErrVarsSave) +# define RTFileAioCtxAssociateWithFile RT_MANGLER(RTFileAioCtxAssociateWithFile) +# define RTFileAioCtxCreate RT_MANGLER(RTFileAioCtxCreate) +# define RTFileAioCtxDestroy RT_MANGLER(RTFileAioCtxDestroy) +# define RTFileAioCtxGetMaxReqCount RT_MANGLER(RTFileAioCtxGetMaxReqCount) +# define RTFileAioCtxSubmit RT_MANGLER(RTFileAioCtxSubmit) +# define RTFileAioCtxWait RT_MANGLER(RTFileAioCtxWait) +# define RTFileAioCtxWakeup RT_MANGLER(RTFileAioCtxWakeup) +# define RTFileAioGetLimits RT_MANGLER(RTFileAioGetLimits) +# define RTFileAioReqCancel RT_MANGLER(RTFileAioReqCancel) +# define RTFileAioReqCreate RT_MANGLER(RTFileAioReqCreate) +# define RTFileAioReqDestroy RT_MANGLER(RTFileAioReqDestroy) +# define RTFileAioReqGetRC RT_MANGLER(RTFileAioReqGetRC) +# define RTFileAioReqGetUser RT_MANGLER(RTFileAioReqGetUser) +# define RTFileAioReqPrepareFlush RT_MANGLER(RTFileAioReqPrepareFlush) +# define RTFileAioReqPrepareRead RT_MANGLER(RTFileAioReqPrepareRead) +# define RTFileAioReqPrepareWrite RT_MANGLER(RTFileAioReqPrepareWrite) +# define RTFileChangeLock RT_MANGLER(RTFileChangeLock) +# define RTFileClose RT_MANGLER(RTFileClose) +# define RTFileCompare RT_MANGLER(RTFileCompare) +# define RTFileCompareByHandles RT_MANGLER(RTFileCompareByHandles) +# define RTFileCompareByHandlesEx RT_MANGLER(RTFileCompareByHandlesEx) +# define RTFileCompareEx RT_MANGLER(RTFileCompareEx) +# define RTFileCopy RT_MANGLER(RTFileCopy) +# define RTFileCopyByHandles RT_MANGLER(RTFileCopyByHandles) +# define RTFileCopyByHandlesEx RT_MANGLER(RTFileCopyByHandlesEx) +# define RTFileCopyEx RT_MANGLER(RTFileCopyEx) +# define RTFileCreateTemp RT_MANGLER(RTFileCreateTemp) +# define RTFileCreateTempSecure RT_MANGLER(RTFileCreateTempSecure) +# define RTFileDelete RT_MANGLER(RTFileDelete) +# define RTFileExists RT_MANGLER(RTFileExists) +# define RTFileFlush RT_MANGLER(RTFileFlush) +# define RTFileFromNative RT_MANGLER(RTFileFromNative) +# define RTFileGetMaxSize RT_MANGLER(RTFileGetMaxSize) +# define RTFileGetMaxSizeEx RT_MANGLER(RTFileGetMaxSizeEx) +# define RTFileGetSize RT_MANGLER(RTFileGetSize) +# define RTFileIoCtl RT_MANGLER(RTFileIoCtl) +# define RTFileIsValid RT_MANGLER(RTFileIsValid) +# define RTFileLock RT_MANGLER(RTFileLock) +# define RTFileModeToFlags RT_MANGLER(RTFileModeToFlags) +# define RTFileModeToFlagsEx RT_MANGLER(RTFileModeToFlagsEx) +# define RTFileMove RT_MANGLER(RTFileMove) +# define RTFileOpen RT_MANGLER(RTFileOpen) +# define RTFileOpenBitBucket RT_MANGLER(RTFileOpenBitBucket) +# define RTFileOpenF RT_MANGLER(RTFileOpenF) +# define RTFileOpenV RT_MANGLER(RTFileOpenV) +# define RTFileQueryFsSizes RT_MANGLER(RTFileQueryFsSizes) +# define RTFileQueryInfo RT_MANGLER(RTFileQueryInfo) +# define RTFileQuerySize RT_MANGLER(RTFileQuerySize) +# define RTFileRead RT_MANGLER(RTFileRead) +# define RTFileReadAll RT_MANGLER(RTFileReadAll) +# define RTFileReadAllByHandle RT_MANGLER(RTFileReadAllByHandle) +# define RTFileReadAllByHandleEx RT_MANGLER(RTFileReadAllByHandleEx) +# define RTFileReadAllEx RT_MANGLER(RTFileReadAllEx) +# define RTFileReadAllFree RT_MANGLER(RTFileReadAllFree) +# define RTFileReadAt RT_MANGLER(RTFileReadAt) +# define RTFileRename RT_MANGLER(RTFileRename) +# define RTFileSeek RT_MANGLER(RTFileSeek) +# define RTFileSetForceFlags RT_MANGLER(RTFileSetForceFlags) +# define RTFileSetMode RT_MANGLER(RTFileSetMode) +# define RTFileSetOwner RT_MANGLER(RTFileSetOwner) +# define RTFileSetSize RT_MANGLER(RTFileSetSize) +# define RTFileSetTimes RT_MANGLER(RTFileSetTimes) +# define RTFileSgReadAt RT_MANGLER(RTFileSgReadAt) +# define RTFileSgWriteAt RT_MANGLER(RTFileSgWriteAt) +# define RTFileTell RT_MANGLER(RTFileTell) +# define RTFileToNative RT_MANGLER(RTFileToNative) +# define RTFileUnlock RT_MANGLER(RTFileUnlock) +# define RTFileWrite RT_MANGLER(RTFileWrite) +# define RTFileWriteAt RT_MANGLER(RTFileWriteAt) +# define RTFilesystemVfsFromFile RT_MANGLER(RTFilesystemVfsFromFile) +# define RTFsQueryProperties RT_MANGLER(RTFsQueryProperties) +# define RTFsQuerySerial RT_MANGLER(RTFsQuerySerial) +# define RTFsQuerySizes RT_MANGLER(RTFsQuerySizes) +# define RTFsQueryType RT_MANGLER(RTFsQueryType) +# define RTFsTypeName RT_MANGLER(RTFsTypeName) +# define RTGetOpt RT_MANGLER(RTGetOpt) +# define RTGetOptArgvFree RT_MANGLER(RTGetOptArgvFree) +# define RTGetOptArgvFromString RT_MANGLER(RTGetOptArgvFromString) +# define RTGetOptArgvToString RT_MANGLER(RTGetOptArgvToString) +# define RTGetOptArgvToUtf16String RT_MANGLER(RTGetOptArgvToUtf16String) +# define RTGetOptFetchValue RT_MANGLER(RTGetOptFetchValue) +# define RTGetOptInit RT_MANGLER(RTGetOptInit) +# define RTGetOptPrintError RT_MANGLER(RTGetOptPrintError) +# define RTHandleClose RT_MANGLER(RTHandleClose) +# define RTHandleGetStandard RT_MANGLER(RTHandleGetStandard) +# define RTHandleTableAlloc RT_MANGLER(RTHandleTableAlloc) +# define RTHandleTableAllocWithCtx RT_MANGLER(RTHandleTableAllocWithCtx) +# define RTHandleTableCreate RT_MANGLER(RTHandleTableCreate) +# define RTHandleTableCreateEx RT_MANGLER(RTHandleTableCreateEx) +# define RTHandleTableDestroy RT_MANGLER(RTHandleTableDestroy) +# define RTHandleTableFree RT_MANGLER(RTHandleTableFree) +# define RTHandleTableFreeWithCtx RT_MANGLER(RTHandleTableFreeWithCtx) +# define RTHandleTableLookup RT_MANGLER(RTHandleTableLookup) +# define RTHandleTableLookupWithCtx RT_MANGLER(RTHandleTableLookupWithCtx) +# define RTHeapOffsetAlloc RT_MANGLER(RTHeapOffsetAlloc) +# define RTHeapOffsetAllocZ RT_MANGLER(RTHeapOffsetAllocZ) +# define RTHeapOffsetDump RT_MANGLER(RTHeapOffsetDump) +# define RTHeapOffsetFree RT_MANGLER(RTHeapOffsetFree) +# define RTHeapOffsetGetFreeSize RT_MANGLER(RTHeapOffsetGetFreeSize) +# define RTHeapOffsetGetHeapSize RT_MANGLER(RTHeapOffsetGetHeapSize) +# define RTHeapOffsetInit RT_MANGLER(RTHeapOffsetInit) +# define RTHeapOffsetSize RT_MANGLER(RTHeapOffsetSize) +# define RTHeapSimpleAlloc RT_MANGLER(RTHeapSimpleAlloc) +# define RTHeapSimpleAllocZ RT_MANGLER(RTHeapSimpleAllocZ) +# define RTHeapSimpleDump RT_MANGLER(RTHeapSimpleDump) +# define RTHeapSimpleFree RT_MANGLER(RTHeapSimpleFree) +# define RTHeapSimpleGetFreeSize RT_MANGLER(RTHeapSimpleGetFreeSize) +# define RTHeapSimpleGetHeapSize RT_MANGLER(RTHeapSimpleGetHeapSize) +# define RTHeapSimpleInit RT_MANGLER(RTHeapSimpleInit) +# define RTHeapSimpleRelocate RT_MANGLER(RTHeapSimpleRelocate) +# define RTHeapSimpleSize RT_MANGLER(RTHeapSimpleSize) +# define RTHttpGetFile RT_MANGLER(RTHttpGetFile) +# define RTHttpUseSystemProxySettings RT_MANGLER(RTHttpUseSystemProxySettings) +# define RTIsoFsClose RT_MANGLER(RTIsoFsClose) +# define RTIsoFsExtractFile RT_MANGLER(RTIsoFsExtractFile) +# define RTIsoFsGetFileInfo RT_MANGLER(RTIsoFsGetFileInfo) +# define RTIsoFsOpen RT_MANGLER(RTIsoFsOpen) +# define RTLatin1CalcUtf16Len RT_MANGLER(RTLatin1CalcUtf16Len) +# define RTLatin1CalcUtf16LenEx RT_MANGLER(RTLatin1CalcUtf16LenEx) +# define RTLatin1CalcUtf8Len RT_MANGLER(RTLatin1CalcUtf8Len) +# define RTLatin1CalcUtf8LenEx RT_MANGLER(RTLatin1CalcUtf8LenEx) +# define RTLatin1ToUtf16ExTag RT_MANGLER(RTLatin1ToUtf16ExTag) +# define RTLatin1ToUtf16Tag RT_MANGLER(RTLatin1ToUtf16Tag) +# define RTLatin1ToUtf8ExTag RT_MANGLER(RTLatin1ToUtf8ExTag) +# define RTLatin1ToUtf8Tag RT_MANGLER(RTLatin1ToUtf8Tag) +# define RTLdrClose RT_MANGLER(RTLdrClose) +# define RTLdrEnumDbgInfo RT_MANGLER(RTLdrEnumDbgInfo) +# define RTLdrEnumSegments RT_MANGLER(RTLdrEnumSegments) +# define RTLdrEnumSymbols RT_MANGLER(RTLdrEnumSymbols) +# define RTLdrGetArch RT_MANGLER(RTLdrGetArch) +# define RTLdrGetBits RT_MANGLER(RTLdrGetBits) +# define RTLdrGetEndian RT_MANGLER(RTLdrGetEndian) +# define RTLdrGetFormat RT_MANGLER(RTLdrGetFormat) +# define RTLdrGetFunction RT_MANGLER(RTLdrGetFunction) +# define RTLdrGetNativeHandle RT_MANGLER(RTLdrGetNativeHandle) +# define RTLdrGetSuff RT_MANGLER(RTLdrGetSuff) +# define RTLdrGetSymbol RT_MANGLER(RTLdrGetSymbol) +# define RTLdrGetSymbolEx RT_MANGLER(RTLdrGetSymbolEx) +# define RTLdrGetSystemSymbol RT_MANGLER(RTLdrGetSystemSymbol) +# define RTLdrGetType RT_MANGLER(RTLdrGetType) +# define RTLdrIsLoadable RT_MANGLER(RTLdrIsLoadable) +# define RTLdrLinkAddressToRva RT_MANGLER(RTLdrLinkAddressToRva) +# define RTLdrLinkAddressToSegOffset RT_MANGLER(RTLdrLinkAddressToSegOffset) +# define RTLdrLoad RT_MANGLER(RTLdrLoad) +# define RTLdrLoadAppPriv RT_MANGLER(RTLdrLoadAppPriv) +# define RTLdrLoadEx RT_MANGLER(RTLdrLoadEx) +# define RTLdrLoadSystem RT_MANGLER(RTLdrLoadSystem) +# define RTLdrOpen RT_MANGLER(RTLdrOpen) +# define RTLdrOpenInMemory RT_MANGLER(RTLdrOpenInMemory) +# define RTLdrOpenkLdr RT_MANGLER(RTLdrOpenkLdr) +# define RTLdrRelocate RT_MANGLER(RTLdrRelocate) +# define RTLdrRvaToSegOffset RT_MANGLER(RTLdrRvaToSegOffset) +# define RTLdrQueryForwarderInfo RT_MANGLER(RTLdrQueryForwarderInfo) +# define RTLdrQueryProp RT_MANGLER(RTLdrQueryProp) +# define RTLdrSegOffsetToRva RT_MANGLER(RTLdrSegOffsetToRva) +# define RTLdrSize RT_MANGLER(RTLdrSize) +# define RTLinuxCheckDevicePath RT_MANGLER(RTLinuxCheckDevicePath) +# define RTLinuxCheckDevicePathV RT_MANGLER(RTLinuxCheckDevicePathV) +# define RTLinuxSysFsClose RT_MANGLER(RTLinuxSysFsClose) +# define RTLinuxSysFsExists RT_MANGLER(RTLinuxSysFsExists) +# define RTLinuxSysFsExistsV RT_MANGLER(RTLinuxSysFsExistsV) +# define RTLinuxSysFsGetLinkDest RT_MANGLER(RTLinuxSysFsGetLinkDest) +# define RTLinuxSysFsGetLinkDestV RT_MANGLER(RTLinuxSysFsGetLinkDestV) +# define RTLinuxSysFsOpen RT_MANGLER(RTLinuxSysFsOpen) +# define RTLinuxSysFsOpenV RT_MANGLER(RTLinuxSysFsOpenV) +# define RTLinuxSysFsReadDevNumFile RT_MANGLER(RTLinuxSysFsReadDevNumFile) +# define RTLinuxSysFsReadDevNumFileV RT_MANGLER(RTLinuxSysFsReadDevNumFileV) +# define RTLinuxSysFsReadFile RT_MANGLER(RTLinuxSysFsReadFile) +# define RTLinuxSysFsReadIntFile RT_MANGLER(RTLinuxSysFsReadIntFile) +# define RTLinuxSysFsReadIntFileV RT_MANGLER(RTLinuxSysFsReadIntFileV) +# define RTLinuxSysFsReadStr RT_MANGLER(RTLinuxSysFsReadStr) +# define RTLinuxSysFsReadStrFile RT_MANGLER(RTLinuxSysFsReadStrFile) +# define RTLinuxSysFsReadStrFileV RT_MANGLER(RTLinuxSysFsReadStrFileV) +# define RTLockValidatorClassAddPriorClass RT_MANGLER(RTLockValidatorClassAddPriorClass) +# define RTLockValidatorClassCreate RT_MANGLER(RTLockValidatorClassCreate) +# define RTLockValidatorClassCreateEx RT_MANGLER(RTLockValidatorClassCreateEx) +# define RTLockValidatorClassCreateExV RT_MANGLER(RTLockValidatorClassCreateExV) +# define RTLockValidatorClassCreateUnique RT_MANGLER(RTLockValidatorClassCreateUnique) +# define RTLockValidatorClassEnforceStrictReleaseOrder RT_MANGLER(RTLockValidatorClassEnforceStrictReleaseOrder) +# define RTLockValidatorClassFindForSrcPos RT_MANGLER(RTLockValidatorClassFindForSrcPos) +# define RTLockValidatorClassForSrcPos RT_MANGLER(RTLockValidatorClassForSrcPos) +# define RTLockValidatorClassRelease RT_MANGLER(RTLockValidatorClassRelease) +# define RTLockValidatorClassRetain RT_MANGLER(RTLockValidatorClassRetain) +# define RTLockValidatorHoldsLocksInClass RT_MANGLER(RTLockValidatorHoldsLocksInClass) +# define RTLockValidatorHoldsLocksInSubClass RT_MANGLER(RTLockValidatorHoldsLocksInSubClass) +# define RTLockValidatorIsBlockedThreadInValidator RT_MANGLER(RTLockValidatorIsBlockedThreadInValidator) +# define RTLockValidatorIsEnabled RT_MANGLER(RTLockValidatorIsEnabled) +# define RTLockValidatorIsQuiet RT_MANGLER(RTLockValidatorIsQuiet) +# define RTLockValidatorMayPanic RT_MANGLER(RTLockValidatorMayPanic) +# define RTLockValidatorQueryBlocking RT_MANGLER(RTLockValidatorQueryBlocking) +# define RTLockValidatorReadLockDec RT_MANGLER(RTLockValidatorReadLockDec) +# define RTLockValidatorReadLockGetCount RT_MANGLER(RTLockValidatorReadLockGetCount) +# define RTLockValidatorReadLockInc RT_MANGLER(RTLockValidatorReadLockInc) +# define RTLockValidatorRecExclCheckBlocking RT_MANGLER(RTLockValidatorRecExclCheckBlocking) +# define RTLockValidatorRecExclCheckOrder RT_MANGLER(RTLockValidatorRecExclCheckOrder) +# define RTLockValidatorRecExclCheckOrderAndBlocking RT_MANGLER(RTLockValidatorRecExclCheckOrderAndBlocking) +# define RTLockValidatorRecExclCreate RT_MANGLER(RTLockValidatorRecExclCreate) +# define RTLockValidatorRecExclCreateV RT_MANGLER(RTLockValidatorRecExclCreateV) +# define RTLockValidatorRecExclDelete RT_MANGLER(RTLockValidatorRecExclDelete) +# define RTLockValidatorRecExclDestroy RT_MANGLER(RTLockValidatorRecExclDestroy) +# define RTLockValidatorRecExclInit RT_MANGLER(RTLockValidatorRecExclInit) +# define RTLockValidatorRecExclInitV RT_MANGLER(RTLockValidatorRecExclInitV) +# define RTLockValidatorRecExclRecursion RT_MANGLER(RTLockValidatorRecExclRecursion) +# define RTLockValidatorRecExclRecursionMixed RT_MANGLER(RTLockValidatorRecExclRecursionMixed) +# define RTLockValidatorRecExclReleaseOwner RT_MANGLER(RTLockValidatorRecExclReleaseOwner) +# define RTLockValidatorRecExclReleaseOwnerUnchecked RT_MANGLER(RTLockValidatorRecExclReleaseOwnerUnchecked) +# define RTLockValidatorRecExclSetOwner RT_MANGLER(RTLockValidatorRecExclSetOwner) +# define RTLockValidatorRecExclSetSubClass RT_MANGLER(RTLockValidatorRecExclSetSubClass) +# define RTLockValidatorRecExclUnwind RT_MANGLER(RTLockValidatorRecExclUnwind) +# define RTLockValidatorRecExclUnwindMixed RT_MANGLER(RTLockValidatorRecExclUnwindMixed) +# define RTLockValidatorRecMakeSiblings RT_MANGLER(RTLockValidatorRecMakeSiblings) +# define RTLockValidatorRecSharedAddOwner RT_MANGLER(RTLockValidatorRecSharedAddOwner) +# define RTLockValidatorRecSharedCheckAndRelease RT_MANGLER(RTLockValidatorRecSharedCheckAndRelease) +# define RTLockValidatorRecSharedCheckBlocking RT_MANGLER(RTLockValidatorRecSharedCheckBlocking) +# define RTLockValidatorRecSharedCheckOrder RT_MANGLER(RTLockValidatorRecSharedCheckOrder) +# define RTLockValidatorRecSharedCheckOrderAndBlocking RT_MANGLER(RTLockValidatorRecSharedCheckOrderAndBlocking) +# define RTLockValidatorRecSharedCheckSignaller RT_MANGLER(RTLockValidatorRecSharedCheckSignaller) +# define RTLockValidatorRecSharedCreate RT_MANGLER(RTLockValidatorRecSharedCreate) +# define RTLockValidatorRecSharedCreateV RT_MANGLER(RTLockValidatorRecSharedCreateV) +# define RTLockValidatorRecSharedDelete RT_MANGLER(RTLockValidatorRecSharedDelete) +# define RTLockValidatorRecSharedDestroy RT_MANGLER(RTLockValidatorRecSharedDestroy) +# define RTLockValidatorRecSharedInit RT_MANGLER(RTLockValidatorRecSharedInit) +# define RTLockValidatorRecSharedInitV RT_MANGLER(RTLockValidatorRecSharedInitV) +# define RTLockValidatorRecSharedIsOwner RT_MANGLER(RTLockValidatorRecSharedIsOwner) +# define RTLockValidatorRecSharedRemoveOwner RT_MANGLER(RTLockValidatorRecSharedRemoveOwner) +# define RTLockValidatorRecSharedResetOwner RT_MANGLER(RTLockValidatorRecSharedResetOwner) +# define RTLockValidatorRecSharedSetSubClass RT_MANGLER(RTLockValidatorRecSharedSetSubClass) +# define RTLockValidatorSetEnabled RT_MANGLER(RTLockValidatorSetEnabled) +# define RTLockValidatorSetMayPanic RT_MANGLER(RTLockValidatorSetMayPanic) +# define RTLockValidatorSetQuiet RT_MANGLER(RTLockValidatorSetQuiet) +# define RTLockValidatorWriteLockDec RT_MANGLER(RTLockValidatorWriteLockDec) +# define RTLockValidatorWriteLockGetCount RT_MANGLER(RTLockValidatorWriteLockGetCount) +# define RTLockValidatorWriteLockInc RT_MANGLER(RTLockValidatorWriteLockInc) +# define RTLogBackdoorPrintf RT_MANGLER(RTLogBackdoorPrintf) /* r0drv-guest */ +# define RTLogBackdoorPrintfV RT_MANGLER(RTLogBackdoorPrintfV) /* r0drv-guest */ +# define RTLogCalcSizeForR0 RT_MANGLER(RTLogCalcSizeForR0) +# define RTLogCloneRC RT_MANGLER(RTLogCloneRC) +# define RTLogComPrintf RT_MANGLER(RTLogComPrintf) +# define RTLogComPrintfV RT_MANGLER(RTLogComPrintfV) +# define RTLogCopyGroupsAndFlagsForR0 RT_MANGLER(RTLogCopyGroupsAndFlagsForR0) +# define RTLogCreate RT_MANGLER(RTLogCreate) +# define RTLogCreateEx RT_MANGLER(RTLogCreateEx) +# define RTLogCreateExV RT_MANGLER(RTLogCreateExV) +# define RTLogCreateForR0 RT_MANGLER(RTLogCreateForR0) +# define RTLogDefaultInit RT_MANGLER(RTLogDefaultInit) +# define RTLogDefaultInstance RT_MANGLER(RTLogDefaultInstance) +# define RTLogDefaultInstanceEx RT_MANGLER(RTLogDefaultInstanceEx) +# define RTLogDestinations RT_MANGLER(RTLogDestinations) +# define RTLogDestroy RT_MANGLER(RTLogDestroy) +# define RTLogFlags RT_MANGLER(RTLogFlags) +# define RTLogFlush RT_MANGLER(RTLogFlush) +# define RTLogFlushRC RT_MANGLER(RTLogFlushRC) +# define RTLogFlushR0 RT_MANGLER(RTLogFlushR0) +# define RTLogFlushToLogger RT_MANGLER(RTLogFlushToLogger) +# define RTLogFormatV RT_MANGLER(RTLogFormatV) +# define RTLogGetDefaultInstance RT_MANGLER(RTLogGetDefaultInstance) +# define RTLogGetDefaultInstanceEx RT_MANGLER(RTLogGetDefaultInstanceEx) +# define RTLogGetDestinations RT_MANGLER(RTLogGetDestinations) +# define RTLogGetFlags RT_MANGLER(RTLogGetFlags) +# define RTLogGetGroupSettings RT_MANGLER(RTLogGetGroupSettings) +# define RTLogGroupSettings RT_MANGLER(RTLogGroupSettings) +# define RTLogLogger RT_MANGLER(RTLogLogger) +# define RTLogLoggerEx RT_MANGLER(RTLogLoggerEx) +# define RTLogLoggerExV RT_MANGLER(RTLogLoggerExV) +# define RTLogLoggerV RT_MANGLER(RTLogLoggerV) +# define RTLogPrintf RT_MANGLER(RTLogPrintf) +# define RTLogPrintfV RT_MANGLER(RTLogPrintfV) +# define RTLogDumpPrintfV RT_MANGLER(RTLogDumpPrintfV) +# define RTLogRelGetDefaultInstance RT_MANGLER(RTLogRelGetDefaultInstance) +# define RTLogRelGetDefaultInstanceEx RT_MANGLER(RTLogRelGetDefaultInstanceEx) +# define RTLogRelLogger RT_MANGLER(RTLogRelLogger) +# define RTLogRelLoggerV RT_MANGLER(RTLogRelLoggerV) +# define RTLogRelPrintf RT_MANGLER(RTLogRelPrintf) +# define RTLogRelPrintfV RT_MANGLER(RTLogRelPrintfV) +# define RTLogRelSetBuffering RT_MANGLER(RTLogRelSetBuffering) +# define RTLogRelSetDefaultInstance RT_MANGLER(RTLogRelSetDefaultInstance) +# define RTLogSetBuffering RT_MANGLER(RTLogSetBuffering) +# define RTLogSetCustomPrefixCallback RT_MANGLER(RTLogSetCustomPrefixCallback) +# define RTLogSetCustomPrefixCallbackForR0 RT_MANGLER(RTLogSetCustomPrefixCallbackForR0) +# define RTLogSetDefaultInstance RT_MANGLER(RTLogSetDefaultInstance) +# define RTLogSetDefaultInstanceThread RT_MANGLER(RTLogSetDefaultInstanceThread) /* r0drv */ +# define RTLogSetGroupLimit RT_MANGLER(RTLogSetGroupLimit) +# define RTLogWriteCom RT_MANGLER(RTLogWriteCom) +# define RTLogWriteCom RT_MANGLER(RTLogWriteCom) +# define RTLogWriteDebugger RT_MANGLER(RTLogWriteDebugger) +# define RTLogWriteStdErr RT_MANGLER(RTLogWriteStdErr) +# define RTLogWriteStdOut RT_MANGLER(RTLogWriteStdOut) +# define RTLogWriteUser RT_MANGLER(RTLogWriteUser) +# define RTManifestCreate RT_MANGLER(RTManifestCreate) +# define RTManifestDup RT_MANGLER(RTManifestDup) +# define RTManifestEntryAdd RT_MANGLER(RTManifestEntryAdd) +# define RTManifestEntryAddIoStream RT_MANGLER(RTManifestEntryAddIoStream) +# define RTManifestEntryAddPassthruIoStream RT_MANGLER(RTManifestEntryAddPassthruIoStream) +# define RTManifestEntryExists RT_MANGLER(RTManifestEntryExists) +# define RTManifestEntryRemove RT_MANGLER(RTManifestEntryRemove) +# define RTManifestEntryQueryAttr RT_MANGLER(RTManifestEntryQueryAttr) +# define RTManifestEntrySetAttr RT_MANGLER(RTManifestEntrySetAttr) +# define RTManifestEntryUnsetAttr RT_MANGLER(RTManifestEntryUnsetAttr) +# define RTManifestEquals RT_MANGLER(RTManifestEquals) +# define RTManifestEqualsEx RT_MANGLER(RTManifestEqualsEx) +# define RTManifestPtIosAddEntryNow RT_MANGLER(RTManifestPtIosAddEntryNow) +# define RTManifestQueryAttr RT_MANGLER(RTManifestQueryAttr) +# define RTManifestReadStandard RT_MANGLER(RTManifestReadStandard) +# define RTManifestReadStandardEx RT_MANGLER(RTManifestReadStandardEx) +# define RTManifestReadStandardFromFile RT_MANGLER(RTManifestReadStandardFromFile) +# define RTManifestRelease RT_MANGLER(RTManifestRelease) +# define RTManifestRetain RT_MANGLER(RTManifestRetain) +# define RTManifestSetAttr RT_MANGLER(RTManifestSetAttr) +# define RTManifestUnsetAttr RT_MANGLER(RTManifestUnsetAttr) +# define RTManifestVerify RT_MANGLER(RTManifestVerify) +# define RTManifestVerifyDigestType RT_MANGLER(RTManifestVerifyDigestType) +# define RTManifestVerifyFiles RT_MANGLER(RTManifestVerifyFiles) +# define RTManifestVerifyFilesBuf RT_MANGLER(RTManifestVerifyFilesBuf) +# define RTManifestWriteFiles RT_MANGLER(RTManifestWriteFiles) +# define RTManifestWriteFilesBuf RT_MANGLER(RTManifestWriteFilesBuf) +# define RTManifestWriteStandard RT_MANGLER(RTManifestWriteStandard) +# define RTManifestWriteStandardToFile RT_MANGLER(RTManifestWriteStandardToFile) +# define RTMd5 RT_MANGLER(RTMd5) +# define RTMd5Final RT_MANGLER(RTMd5Final) +# define RTMd5FromString RT_MANGLER(RTMd5FromString) +# define RTMd5Init RT_MANGLER(RTMd5Init) +# define RTMd5ToString RT_MANGLER(RTMd5ToString) +# define RTMd5Update RT_MANGLER(RTMd5Update) +# define RTMemAllocExTag RT_MANGLER(RTMemAllocExTag) +# define RTMemAllocTag RT_MANGLER(RTMemAllocTag) +# define RTMemAllocVarTag RT_MANGLER(RTMemAllocVarTag) +# define RTMemAllocZTag RT_MANGLER(RTMemAllocZTag) +# define RTMemAllocZVarTag RT_MANGLER(RTMemAllocZVarTag) +# define RTMemCacheAlloc RT_MANGLER(RTMemCacheAlloc) +# define RTMemCacheAllocEx RT_MANGLER(RTMemCacheAllocEx) +# define RTMemCacheCreate RT_MANGLER(RTMemCacheCreate) +# define RTMemCacheDestroy RT_MANGLER(RTMemCacheDestroy) +# define RTMemCacheFree RT_MANGLER(RTMemCacheFree) +# define RTMemContAlloc RT_MANGLER(RTMemContAlloc) /* r0drv */ +# define RTMemContFree RT_MANGLER(RTMemContFree) /* r0drv */ +# define RTMemDump RT_MANGLER(RTMemDump) +# define RTMemDupExTag RT_MANGLER(RTMemDupExTag) +# define RTMemDupTag RT_MANGLER(RTMemDupTag) +# define RTMemEfAlloc RT_MANGLER(RTMemEfAlloc) +# define RTMemEfAllocNP RT_MANGLER(RTMemEfAllocNP) +# define RTMemEfAllocVar RT_MANGLER(RTMemEfAllocVar) +# define RTMemEfAllocVarNP RT_MANGLER(RTMemEfAllocVarNP) +# define RTMemEfAllocZ RT_MANGLER(RTMemEfAllocZ) +# define RTMemEfAllocZNP RT_MANGLER(RTMemEfAllocZNP) +# define RTMemEfAllocZVar RT_MANGLER(RTMemEfAllocZVar) +# define RTMemEfAllocZVarNP RT_MANGLER(RTMemEfAllocZVarNP) +# define RTMemEfDup RT_MANGLER(RTMemEfDup) +# define RTMemEfDupEx RT_MANGLER(RTMemEfDupEx) +# define RTMemEfDupExNP RT_MANGLER(RTMemEfDupExNP) +# define RTMemEfDupNP RT_MANGLER(RTMemEfDupNP) +# define RTMemEfFree RT_MANGLER(RTMemEfFree) +# define RTMemEfFreeNP RT_MANGLER(RTMemEfFreeNP) +# define RTMemEfRealloc RT_MANGLER(RTMemEfRealloc) +# define RTMemEfReallocNP RT_MANGLER(RTMemEfReallocNP) +# define RTMemEfTmpAlloc RT_MANGLER(RTMemEfTmpAlloc) +# define RTMemEfTmpAllocNP RT_MANGLER(RTMemEfTmpAllocNP) +# define RTMemEfTmpAllocZ RT_MANGLER(RTMemEfTmpAllocZ) +# define RTMemEfTmpAllocZNP RT_MANGLER(RTMemEfTmpAllocZNP) +# define RTMemEfTmpFree RT_MANGLER(RTMemEfTmpFree) +# define RTMemEfTmpFreeNP RT_MANGLER(RTMemEfTmpFreeNP) +# define RTMemExecAllocTag RT_MANGLER(RTMemExecAllocTag) +# define RTMemExecFree RT_MANGLER(RTMemExecFree) +# define RTMemFree RT_MANGLER(RTMemFree) +# define RTMemFreeEx RT_MANGLER(RTMemFreeEx) +# define RTMemLockedAllocExTag RT_MANGLER(RTMemLockedAllocExTag) +# define RTMemLockedAllocZExTag RT_MANGLER(RTMemLockedAllocZExTag) +# define RTMemLockedAllocTag RT_MANGLER(RTMemLockedAllocTag) +# define RTMemLockedAllocZTag RT_MANGLER(RTMemLockedAllocZTag) +# define RTMemLockedFree RT_MANGLER(RTMemLockedFree) +# define RTMemPageAllocTag RT_MANGLER(RTMemPageAllocTag) +# define RTMemPageAllocZTag RT_MANGLER(RTMemPageAllocZTag) +# define RTMemPageFree RT_MANGLER(RTMemPageFree) +# define RTMemPoolAlloc RT_MANGLER(RTMemPoolAlloc) +# define RTMemPoolAllocZ RT_MANGLER(RTMemPoolAllocZ) +# define RTMemPoolCreate RT_MANGLER(RTMemPoolCreate) +# define RTMemPoolDestroy RT_MANGLER(RTMemPoolDestroy) +# define RTMemPoolDup RT_MANGLER(RTMemPoolDup) +# define RTMemPoolDupEx RT_MANGLER(RTMemPoolDupEx) +# define RTMemPoolFree RT_MANGLER(RTMemPoolFree) +# define RTMemPoolRealloc RT_MANGLER(RTMemPoolRealloc) +# define RTMemPoolRefCount RT_MANGLER(RTMemPoolRefCount) +# define RTMemPoolRelease RT_MANGLER(RTMemPoolRelease) +# define RTMemPoolRetain RT_MANGLER(RTMemPoolRetain) +# define RTMemProtect RT_MANGLER(RTMemProtect) +# define RTMemReallocTag RT_MANGLER(RTMemReallocTag) +# define RTMemTmpAllocTag RT_MANGLER(RTMemTmpAllocTag) +# define RTMemTmpAllocZTag RT_MANGLER(RTMemTmpAllocZTag) +# define RTMemTmpFree RT_MANGLER(RTMemTmpFree) +# define RTMemTrackerDumpAllToFile RT_MANGLER(RTMemTrackerDumpAllToFile) +# define RTMemTrackerDumpAllToLog RT_MANGLER(RTMemTrackerDumpAllToLog) +# define RTMemTrackerDumpAllToLogRel RT_MANGLER(RTMemTrackerDumpAllToLogRel) +# define RTMemTrackerDumpAllToStdErr RT_MANGLER(RTMemTrackerDumpAllToStdErr) +# define RTMemTrackerDumpAllToStdOut RT_MANGLER(RTMemTrackerDumpAllToStdOut) +# define RTMemTrackerDumpStatsToFile RT_MANGLER(RTMemTrackerDumpStatsToFile) +# define RTMemTrackerDumpStatsToLog RT_MANGLER(RTMemTrackerDumpStatsToLog) +# define RTMemTrackerDumpStatsToLogRel RT_MANGLER(RTMemTrackerDumpStatsToLogRel) +# define RTMemTrackerDumpStatsToStdErr RT_MANGLER(RTMemTrackerDumpStatsToStdErr) +# define RTMemTrackerDumpStatsToStdOut RT_MANGLER(RTMemTrackerDumpStatsToStdOut) +# define RTMemTrackerHdrAlloc RT_MANGLER(RTMemTrackerHdrAlloc) +# define RTMemTrackerHdrFree RT_MANGLER(RTMemTrackerHdrFree) +# define RTMemTrackerHdrReallocDone RT_MANGLER(RTMemTrackerHdrReallocDone) +# define RTMemTrackerHdrReallocPrep RT_MANGLER(RTMemTrackerHdrReallocPrep) +# define RTMemWipeThoroughly RT_MANGLER(RTMemWipeThoroughly) +# define RTMpCpuId RT_MANGLER(RTMpCpuId) +# define RTMpCpuIdFromSetIndex RT_MANGLER(RTMpCpuIdFromSetIndex) +# define RTMpCpuIdToSetIndex RT_MANGLER(RTMpCpuIdToSetIndex) +# define RTMpCurSetIndex RT_MANGLER(RTMpCurSetIndex) +# define RTMpCurSetIndexAndId RT_MANGLER(RTMpCurSetIndexAndId) +# define RTMpGetArraySize RT_MANGLER(RTMpGetArraySize) +# define RTMpGetCount RT_MANGLER(RTMpGetCount) +# define RTMpGetCurFrequency RT_MANGLER(RTMpGetCurFrequency) +# define RTMpGetDescription RT_MANGLER(RTMpGetDescription) +# define RTMpGetMaxCpuId RT_MANGLER(RTMpGetMaxCpuId) +# define RTMpGetMaxFrequency RT_MANGLER(RTMpGetMaxFrequency) +# define RTMpGetOnlineCount RT_MANGLER(RTMpGetOnlineCount) +# define RTMpGetOnlineCoreCount RT_MANGLER(RTMpGetOnlineCoreCount) +# define RTMpGetOnlineSet RT_MANGLER(RTMpGetOnlineSet) +# define RTMpGetPresentCount RT_MANGLER(RTMpGetPresentCount) +# define RTMpGetPresentCoreCount RT_MANGLER(RTMpGetPresentCoreCount) +# define RTMpGetPresentSet RT_MANGLER(RTMpGetPresentSet) +# define RTMpGetSet RT_MANGLER(RTMpGetSet) +# define RTMpGetCoreCount RT_MANGLER(RTMpGetCoreCount) +# define RTMpIsCpuOnline RT_MANGLER(RTMpIsCpuOnline) +# define RTMpIsCpuPossible RT_MANGLER(RTMpIsCpuPossible) /* r0drv */ +# define RTMpIsCpuPresent RT_MANGLER(RTMpIsCpuPresent) +# define RTMpIsCpuWorkPending RT_MANGLER(RTMpIsCpuWorkPending) +# define RTMpNotificationDeregister RT_MANGLER(RTMpNotificationDeregister) /* r0drv */ +# define RTMpNotificationRegister RT_MANGLER(RTMpNotificationRegister) /* r0drv */ +# define RTMpOnAll RT_MANGLER(RTMpOnAll) /* r0drv */ +# define RTMpOnAllIsConcurrentSafe RT_MANGLER(RTMpOnAllIsConcurrentSafe) /* r0drv */ +# define RTMpOnOthers RT_MANGLER(RTMpOnOthers) /* r0drv */ +# define RTMpOnPair RT_MANGLER(RTMpOnPair) /* r0drv */ +# define RTMpOnPairIsConcurrentExecSupported RT_MANGLER(RTMpOnPairIsConcurrentExecSupported) /* r0drv */ +# define RTMpOnSpecific RT_MANGLER(RTMpOnSpecific) /* r0drv */ +# define RTMpPokeCpu RT_MANGLER(RTMpPokeCpu) /* r0drv */ +# define RTMsgError RT_MANGLER(RTMsgError) +# define RTMsgErrorExit RT_MANGLER(RTMsgErrorExit) +# define RTMsgErrorExitV RT_MANGLER(RTMsgErrorExitV) +# define RTMsgErrorRc RT_MANGLER(RTMsgErrorRc) +# define RTMsgErrorRcV RT_MANGLER(RTMsgErrorRcV) +# define RTMsgErrorV RT_MANGLER(RTMsgErrorV) +# define RTMsgInfo RT_MANGLER(RTMsgInfo) +# define RTMsgInfoV RT_MANGLER(RTMsgInfoV) +# define RTMsgInitFailure RT_MANGLER(RTMsgInitFailure) +# define RTMsgSetProgName RT_MANGLER(RTMsgSetProgName) +# define RTMsgWarning RT_MANGLER(RTMsgWarning) +# define RTMsgWarningV RT_MANGLER(RTMsgWarningV) +# define RTNetIPv4AddDataChecksum RT_MANGLER(RTNetIPv4AddDataChecksum) +# define RTNetIPv4AddTCPChecksum RT_MANGLER(RTNetIPv4AddTCPChecksum) +# define RTNetIPv4AddUDPChecksum RT_MANGLER(RTNetIPv4AddUDPChecksum) +# define RTNetIPv4FinalizeChecksum RT_MANGLER(RTNetIPv4FinalizeChecksum) +# define RTNetIPv4HdrChecksum RT_MANGLER(RTNetIPv4HdrChecksum) +# define RTNetIPv4IsDHCPValid RT_MANGLER(RTNetIPv4IsDHCPValid) +# define RTNetIPv4IsHdrValid RT_MANGLER(RTNetIPv4IsHdrValid) +# define RTNetIPv4IsTCPSizeValid RT_MANGLER(RTNetIPv4IsTCPSizeValid) +# define RTNetIPv4IsTCPValid RT_MANGLER(RTNetIPv4IsTCPValid) +# define RTNetIPv4IsUDPSizeValid RT_MANGLER(RTNetIPv4IsUDPSizeValid) +# define RTNetIPv4IsUDPValid RT_MANGLER(RTNetIPv4IsUDPValid) +# define RTNetIPv4PseudoChecksum RT_MANGLER(RTNetIPv4PseudoChecksum) +# define RTNetIPv4PseudoChecksumBits RT_MANGLER(RTNetIPv4PseudoChecksumBits) +# define RTNetIPv4TCPChecksum RT_MANGLER(RTNetIPv4TCPChecksum) +# define RTNetIPv4UDPChecksum RT_MANGLER(RTNetIPv4UDPChecksum) +# define RTNetIPv6PseudoChecksum RT_MANGLER(RTNetIPv6PseudoChecksum) +# define RTNetIPv6PseudoChecksumBits RT_MANGLER(RTNetIPv6PseudoChecksumBits) +# define RTNetIPv6PseudoChecksumEx RT_MANGLER(RTNetIPv6PseudoChecksumEx) +# define RTNetTCPChecksum RT_MANGLER(RTNetTCPChecksum) +# define RTNetUDPChecksum RT_MANGLER(RTNetUDPChecksum) +# define RTNetStrToMacAddr RT_MANGLER(RTNetStrToMacAddr) +# define RTNetIsIPv4AddrStr RT_MANGLER(RTNetIsIPv4AddrStr) +# define RTNetStrToIPv4AddrEx RT_MANGLER(RTNetStrToIPv4AddrEx) +# define RTNetStrToIPv4Addr RT_MANGLER(RTNetStrToIPv4Addr) +# define RTNetIsIPv6AddrStr RT_MANGLER(RTNetIsIPv6AddrStr) +# define RTNetStrToIPv6AddrEx RT_MANGLER(RTNetStrToIPv6AddrEx) +# define RTNetStrToIPv6Addr RT_MANGLER(RTNetStrToIPv6Addr) +# define RTOnceSlow RT_MANGLER(RTOnceSlow) +# define RTOnceReset RT_MANGLER(RTOnceReset) +# define RTPathAbs RT_MANGLER(RTPathAbs) +# define RTPathAbsDup RT_MANGLER(RTPathAbsDup) +# define RTPathAbsEx RT_MANGLER(RTPathAbsEx) +# define RTPathAbsExDup RT_MANGLER(RTPathAbsExDup) +# define RTPathAppDocs RT_MANGLER(RTPathAppDocs) +# define RTPathAppend RT_MANGLER(RTPathAppend) +# define RTPathAppendEx RT_MANGLER(RTPathAppendEx) +# define RTPathAppPrivateArch RT_MANGLER(RTPathAppPrivateArch) +# define RTPathAppPrivateArchTop RT_MANGLER(RTPathAppPrivateArchTop) +# define RTPathAppPrivateNoArch RT_MANGLER(RTPathAppPrivateNoArch) +# define RTPathCalcRelative RT_MANGLER(RTPathCalcRelative) +# define RTPathChangeToDosSlashes RT_MANGLER(RTPathChangeToDosSlashes) +# define RTPathChangeToUnixSlashes RT_MANGLER(RTPathChangeToUnixSlashes) +# define RTPathCompare RT_MANGLER(RTPathCompare) +# define RTPathCopyComponents RT_MANGLER(RTPathCopyComponents) +# define RTPathCountComponents RT_MANGLER(RTPathCountComponents) +# define RTPathExecDir RT_MANGLER(RTPathExecDir) +# define RTPathExists RT_MANGLER(RTPathExists) +# define RTPathExistsEx RT_MANGLER(RTPathExistsEx) +# define RTPathSuffix RT_MANGLER(RTPathSuffix) +# define RTPathFilename RT_MANGLER(RTPathFilename) +# define RTPathFilenameEx RT_MANGLER(RTPathFilenameEx) +# define RTPathGetCurrent RT_MANGLER(RTPathGetCurrent) +# define RTPathGetCurrentDrive RT_MANGLER(RTPathGetCurrentDrive) +# define RTPathGetCurrentOnDrive RT_MANGLER(RTPathGetCurrentOnDrive) +# define RTPathGetMode RT_MANGLER(RTPathGetMode) +# define RTPathHasSuffix RT_MANGLER(RTPathHasSuffix) +# define RTPathHasPath RT_MANGLER(RTPathHasPath) +# define RTPathIsSame RT_MANGLER(RTPathIsSame) +# define RTPathJoin RT_MANGLER(RTPathJoin) +# define RTPathJoinA RT_MANGLER(RTPathJoinA) +# define RTPathJoinEx RT_MANGLER(RTPathJoinEx) +# define RTPathParse RT_MANGLER(RTPathParse) +# define RTPathParsedReassemble RT_MANGLER(RTPathParsedReassemble) +# define RTPathParseSimple RT_MANGLER(RTPathParseSimple) +# define RTPathQueryInfo RT_MANGLER(RTPathQueryInfo) +# define RTPathQueryInfoEx RT_MANGLER(RTPathQueryInfoEx) +# define RTPathReal RT_MANGLER(RTPathReal) +# define RTPathRealDup RT_MANGLER(RTPathRealDup) +# define RTPathRename RT_MANGLER(RTPathRename) +# define RTPathRmCmd RT_MANGLER(RTPathRmCmd) +# define RTPathSetCurrent RT_MANGLER(RTPathSetCurrent) +# define RTPathSetMode RT_MANGLER(RTPathSetMode) /* not-win */ +# define RTPathSetOwner RT_MANGLER(RTPathSetOwner) /* not-win */ +# define RTPathSetOwnerEx RT_MANGLER(RTPathSetOwnerEx) /* not-win */ +# define RTPathSetTimes RT_MANGLER(RTPathSetTimes) +# define RTPathSetTimesEx RT_MANGLER(RTPathSetTimesEx) +# define RTPathSharedLibs RT_MANGLER(RTPathSharedLibs) +# define RTPathSplit RT_MANGLER(RTPathSplit) +# define RTPathSplitATag RT_MANGLER(RTPathSplitATag) +# define RTPathSplitFree RT_MANGLER(RTPathSplitFree) +# define RTPathSplitReassemble RT_MANGLER(RTPathSplitReassemble) +# define RTPathStartsWith RT_MANGLER(RTPathStartsWith) +# define RTPathStartsWithRoot RT_MANGLER(RTPathStartsWithRoot) +# define RTPathStripSuffix RT_MANGLER(RTPathStripSuffix) +# define RTPathStripFilename RT_MANGLER(RTPathStripFilename) +# define RTPathStripTrailingSlash RT_MANGLER(RTPathStripTrailingSlash) +# define RTPathTemp RT_MANGLER(RTPathTemp) +# define RTPathTraverseList RT_MANGLER(RTPathTraverseList) +# define RTPathUnlink RT_MANGLER(RTPathUnlink) +# define RTPathUserDocuments RT_MANGLER(RTPathUserDocuments) +# define RTPathUserHome RT_MANGLER(RTPathUserHome) +# define RTPipeClose RT_MANGLER(RTPipeClose) +# define RTPipeCreate RT_MANGLER(RTPipeCreate) +# define RTPipeFlush RT_MANGLER(RTPipeFlush) +# define RTPipeFromNative RT_MANGLER(RTPipeFromNative) +# define RTPipeQueryReadable RT_MANGLER(RTPipeQueryReadable) +# define RTPipeRead RT_MANGLER(RTPipeRead) +# define RTPipeReadBlocking RT_MANGLER(RTPipeReadBlocking) +# define RTPipeSelectOne RT_MANGLER(RTPipeSelectOne) +# define RTPipeToNative RT_MANGLER(RTPipeToNative) +# define RTPipeWrite RT_MANGLER(RTPipeWrite) +# define RTPipeWriteBlocking RT_MANGLER(RTPipeWriteBlocking) +# define RTPoll RT_MANGLER(RTPoll) +# define RTPollNoResume RT_MANGLER(RTPollNoResume) +# define RTPollSetAdd RT_MANGLER(RTPollSetAdd) +# define RTPollSetCreate RT_MANGLER(RTPollSetCreate) +# define RTPollSetDestroy RT_MANGLER(RTPollSetDestroy) +# define RTPollSetEventsChange RT_MANGLER(RTPollSetEventsChange) +# define RTPollSetGetCount RT_MANGLER(RTPollSetGetCount) +# define RTPollSetQueryHandle RT_MANGLER(RTPollSetQueryHandle) +# define RTPollSetRemove RT_MANGLER(RTPollSetRemove) +# define RTPowerNotificationDeregister RT_MANGLER(RTPowerNotificationDeregister) /* r0drv */ +# define RTPowerNotificationRegister RT_MANGLER(RTPowerNotificationRegister) /* r0drv */ +# define RTPowerSignalEvent RT_MANGLER(RTPowerSignalEvent) /* r0drv */ +# define RTPrintf RT_MANGLER(RTPrintf) +# define RTPrintfV RT_MANGLER(RTPrintfV) +# define RTProcCreate RT_MANGLER(RTProcCreate) +# define RTProcCreateEx RT_MANGLER(RTProcCreateEx) +# define RTProcDaemonize RT_MANGLER(RTProcDaemonize) +# define RTProcDaemonizeUsingFork RT_MANGLER(RTProcDaemonizeUsingFork) +# define RTProcGetAffinityMask RT_MANGLER(RTProcGetAffinityMask) +# define RTProcGetExecutablePath RT_MANGLER(RTProcGetExecutablePath) +# define RTProcGetPriority RT_MANGLER(RTProcGetPriority) +# define RTProcIsRunningByName RT_MANGLER(RTProcIsRunningByName) +# define RTProcQueryParent RT_MANGLER(RTProcQueryParent) +# define RTProcQueryUsername RT_MANGLER(RTProcQueryUsername) +# define RTProcQueryUsernameA RT_MANGLER(RTProcQueryUsernameA) +# define RTProcSelf RT_MANGLER(RTProcSelf) +# define RTProcSetPriority RT_MANGLER(RTProcSetPriority) +# define RTProcShortName RT_MANGLER(RTProcShortName) +# define RTProcTerminate RT_MANGLER(RTProcTerminate) +# define RTProcWait RT_MANGLER(RTProcWait) +# define RTProcWaitNoResume RT_MANGLER(RTProcWaitNoResume) +# define RTR0AssertPanicSystem RT_MANGLER(RTR0AssertPanicSystem) /* r0drv */ +# define RTR0DbgKrnlInfoOpen RT_MANGLER(RTR0DbgKrnlInfoOpen) /* r0drv */ +# define RTR0DbgKrnlInfoQueryMember RT_MANGLER(RTR0DbgKrnlInfoQueryMember) /* r0drv */ +# define RTR0DbgKrnlInfoQuerySymbol RT_MANGLER(RTR0DbgKrnlInfoQuerySymbol) /* r0drv */ +# define RTR0DbgKrnlInfoRelease RT_MANGLER(RTR0DbgKrnlInfoRelease) /* r0drv */ +# define RTR0DbgKrnlInfoRetain RT_MANGLER(RTR0DbgKrnlInfoRetain) /* r0drv */ +# define RTR0Init RT_MANGLER(RTR0Init) /* r0drv */ +# define RTR0MemAreKrnlAndUsrDifferent RT_MANGLER(RTR0MemAreKrnlAndUsrDifferent) /* r0drv */ +# define RTR0MemExecDonate RT_MANGLER(RTR0MemExecDonate) /* r0drv */ +# define RTR0MemKernelIsValidAddr RT_MANGLER(RTR0MemKernelIsValidAddr) /* r0drv */ +# define RTR0MemObjAddress RT_MANGLER(RTR0MemObjAddress) /* r0drv */ +# define RTR0MemObjAddressR3 RT_MANGLER(RTR0MemObjAddressR3) /* r0drv */ +# define RTR0MemKernelCopyFrom RT_MANGLER(RTR0MemKernelCopyFrom) /* r0drv */ +# define RTR0MemKernelCopyTo RT_MANGLER(RTR0MemKernelCopyTo) /* r0drv */ +# define RTR0MemObjAllocContTag RT_MANGLER(RTR0MemObjAllocContTag) /* r0drv */ +# define RTR0MemObjAllocLowTag RT_MANGLER(RTR0MemObjAllocLowTag) /* r0drv */ +# define RTR0MemObjAllocPageTag RT_MANGLER(RTR0MemObjAllocPageTag) /* r0drv */ +# define RTR0MemObjAllocPhysExTag RT_MANGLER(RTR0MemObjAllocPhysExTag) /* r0drv */ +# define RTR0MemObjAllocPhysNCTag RT_MANGLER(RTR0MemObjAllocPhysNCTag) /* r0drv */ +# define RTR0MemObjAllocPhysTag RT_MANGLER(RTR0MemObjAllocPhysTag) /* r0drv */ +# define RTR0MemObjEnterPhysTag RT_MANGLER(RTR0MemObjEnterPhysTag) /* r0drv */ +# define RTR0MemObjFree RT_MANGLER(RTR0MemObjFree) /* r0drv */ +# define RTR0MemObjGetPagePhysAddr RT_MANGLER(RTR0MemObjGetPagePhysAddr) /* r0drv */ +# define RTR0MemObjIsMapping RT_MANGLER(RTR0MemObjIsMapping) /* r0drv */ +# define RTR0MemObjLockKernelTag RT_MANGLER(RTR0MemObjLockKernelTag) /* r0drv */ +# define RTR0MemObjLockUserTag RT_MANGLER(RTR0MemObjLockUserTag) /* r0drv */ +# define RTR0MemObjMapKernelExTag RT_MANGLER(RTR0MemObjMapKernelExTag) /* r0drv */ +# define RTR0MemObjMapKernelTag RT_MANGLER(RTR0MemObjMapKernelTag) /* r0drv */ +# define RTR0MemObjMapUserTag RT_MANGLER(RTR0MemObjMapUserTag) /* r0drv */ +# define RTR0MemObjProtect RT_MANGLER(RTR0MemObjProtect) /* r0drv */ +# define RTR0MemObjReserveKernelTag RT_MANGLER(RTR0MemObjReserveKernelTag) /* r0drv */ +# define RTR0MemObjReserveUserTag RT_MANGLER(RTR0MemObjReserveUserTag) /* r0drv */ +# define RTR0MemObjSize RT_MANGLER(RTR0MemObjSize) /* r0drv */ +# define RTR0MemUserCopyFrom RT_MANGLER(RTR0MemUserCopyFrom) /* r0drv */ +# define RTR0MemUserCopyTo RT_MANGLER(RTR0MemUserCopyTo) /* r0drv */ +# define RTR0MemUserIsValidAddr RT_MANGLER(RTR0MemUserIsValidAddr) /* r0drv */ +# define RTR0ProcHandleSelf RT_MANGLER(RTR0ProcHandleSelf) /* r0drv */ +# define RTR0Term RT_MANGLER(RTR0Term) /* r0drv */ +# define RTR0TermForced RT_MANGLER(RTR0TermForced) /* r0drv */ +# define RTR3InitDll RT_MANGLER(RTR3InitDll) +# define RTR3InitExe RT_MANGLER(RTR3InitExe) +# define RTR3InitExeNoArguments RT_MANGLER(RTR3InitExeNoArguments) +# define RTR3InitEx RT_MANGLER(RTR3InitEx) +# define RTR3InitIsInitialized RT_MANGLER(RTR3InitIsInitialized) +# define RTR3InitIsUnobtrusive RT_MANGLER(RTR3InitIsUnobtrusive) +# define rtR3MemAlloc RT_MANGLER(rtR3MemAlloc) +# define rtR3MemFree RT_MANGLER(rtR3MemFree) +# define rtR3MemRealloc RT_MANGLER(rtR3MemRealloc) +# define RTRCInit RT_MANGLER(RTRCInit) +# define RTRCTerm RT_MANGLER(RTRCTerm) +# define RTRandAdvBytes RT_MANGLER(RTRandAdvBytes) +# define RTRandAdvCreateParkMiller RT_MANGLER(RTRandAdvCreateParkMiller) +# define RTRandAdvCreateSystemFaster RT_MANGLER(RTRandAdvCreateSystemFaster) +# define RTRandAdvCreateSystemTruer RT_MANGLER(RTRandAdvCreateSystemTruer) +# define RTRandAdvDestroy RT_MANGLER(RTRandAdvDestroy) +# define RTRandAdvRestoreState RT_MANGLER(RTRandAdvRestoreState) +# define RTRandAdvS32 RT_MANGLER(RTRandAdvS32) +# define RTRandAdvS32Ex RT_MANGLER(RTRandAdvS32Ex) +# define RTRandAdvS64 RT_MANGLER(RTRandAdvS64) +# define RTRandAdvS64Ex RT_MANGLER(RTRandAdvS64Ex) +# define RTRandAdvSaveState RT_MANGLER(RTRandAdvSaveState) +# define RTRandAdvSeed RT_MANGLER(RTRandAdvSeed) +# define RTRandAdvU32 RT_MANGLER(RTRandAdvU32) +# define RTRandAdvU32Ex RT_MANGLER(RTRandAdvU32Ex) +# define RTRandAdvU64 RT_MANGLER(RTRandAdvU64) +# define RTRandAdvU64Ex RT_MANGLER(RTRandAdvU64Ex) +# define RTRandBytes RT_MANGLER(RTRandBytes) +# define RTRandS32 RT_MANGLER(RTRandS32) +# define RTRandS32Ex RT_MANGLER(RTRandS32Ex) +# define RTRandS64 RT_MANGLER(RTRandS64) +# define RTRandS64Ex RT_MANGLER(RTRandS64Ex) +# define RTRandU32 RT_MANGLER(RTRandU32) +# define RTRandU32Ex RT_MANGLER(RTRandU32Ex) +# define RTRandU64 RT_MANGLER(RTRandU64) +# define RTRandU64Ex RT_MANGLER(RTRandU64Ex) +# define RTReqPoolAlloc RT_MANGLER(RTReqPoolAlloc) +# define RTReqPoolCallEx RT_MANGLER(RTReqPoolCallEx) +# define RTReqPoolCallExV RT_MANGLER(RTReqPoolCallExV) +# define RTReqPoolCallWait RT_MANGLER(RTReqPoolCallWait) +# define RTReqPoolCallNoWait RT_MANGLER(RTReqPoolCallNoWait) +# define RTReqPoolCallVoidWait RT_MANGLER(RTReqPoolCallVoidWait) +# define RTReqPoolCallVoidNoWait RT_MANGLER(RTReqPoolCallVoidNoWait) +# define RTReqPoolCreate RT_MANGLER(RTReqPoolCreate) +# define RTReqPoolGetCfgVar RT_MANGLER(RTReqPoolGetCfgVar) +# define RTReqPoolGetStat RT_MANGLER(RTReqPoolGetStat) +# define RTReqPoolRetain RT_MANGLER(RTReqPoolRetain) +# define RTReqPoolRelease RT_MANGLER(RTReqPoolRelease) +# define RTReqPoolSetCfgVar RT_MANGLER(RTReqPoolSetCfgVar) +# define RTReqQueueAlloc RT_MANGLER(RTReqQueueAlloc) +# define RTReqQueueCall RT_MANGLER(RTReqQueueCall) +# define RTReqQueueCallEx RT_MANGLER(RTReqQueueCallEx) +# define RTReqQueueCallV RT_MANGLER(RTReqQueueCallV) +# define RTReqQueueCallVoid RT_MANGLER(RTReqQueueCallVoid) +# define RTReqQueueCreate RT_MANGLER(RTReqQueueCreate) +# define RTReqQueueDestroy RT_MANGLER(RTReqQueueDestroy) +# define RTReqQueueIsBusy RT_MANGLER(RTReqQueueIsBusy) +# define RTReqQueueProcess RT_MANGLER(RTReqQueueProcess) +# define RTReqSubmit RT_MANGLER(RTReqSubmit) +# define RTReqRelease RT_MANGLER(RTReqRelease) +# define RTReqRetain RT_MANGLER(RTReqRetain) +# define RTReqWait RT_MANGLER(RTReqWait) +# define RTRSAVerify RT_MANGLER(RTRSAVerify) +# define RTReqGetStatus RT_MANGLER(RTReqGetStatus) +# define RTS3BucketsDestroy RT_MANGLER(RTS3BucketsDestroy) +# define RTS3Create RT_MANGLER(RTS3Create) +# define RTS3CreateBucket RT_MANGLER(RTS3CreateBucket) +# define RTS3DeleteBucket RT_MANGLER(RTS3DeleteBucket) +# define RTS3DeleteKey RT_MANGLER(RTS3DeleteKey) +# define RTS3Destroy RT_MANGLER(RTS3Destroy) +# define RTS3GetBucketKeys RT_MANGLER(RTS3GetBucketKeys) +# define RTS3GetBuckets RT_MANGLER(RTS3GetBuckets) +# define RTS3GetKey RT_MANGLER(RTS3GetKey) +# define RTS3KeysDestroy RT_MANGLER(RTS3KeysDestroy) +# define RTS3PutKey RT_MANGLER(RTS3PutKey) +# define RTS3SetProgressCallback RT_MANGLER(RTS3SetProgressCallback) +# define RTSemEventAddSignaller RT_MANGLER(RTSemEventAddSignaller) +# define RTSemEventCreate RT_MANGLER(RTSemEventCreate) +# define RTSemEventCreateEx RT_MANGLER(RTSemEventCreateEx) +# define RTSemEventDestroy RT_MANGLER(RTSemEventDestroy) +# define RTSemEventGetResolution RT_MANGLER(RTSemEventGetResolution) /* r0drv */ +# define RTSemEventMultiAddSignaller RT_MANGLER(RTSemEventMultiAddSignaller) +# define RTSemEventMultiCreate RT_MANGLER(RTSemEventMultiCreate) +# define RTSemEventMultiCreateEx RT_MANGLER(RTSemEventMultiCreateEx) +# define RTSemEventMultiDestroy RT_MANGLER(RTSemEventMultiDestroy) +# define RTSemEventMultiGetResolution RT_MANGLER(RTSemEventMultiGetResolution) /* r0drv */ +# define RTSemEventMultiRemoveSignaller RT_MANGLER(RTSemEventMultiRemoveSignaller) +# define RTSemEventMultiReset RT_MANGLER(RTSemEventMultiReset) +# define RTSemEventMultiSetSignaller RT_MANGLER(RTSemEventMultiSetSignaller) +# define RTSemEventMultiSignal RT_MANGLER(RTSemEventMultiSignal) +# define RTSemEventMultiWait RT_MANGLER(RTSemEventMultiWait) +# define RTSemEventMultiWaitEx RT_MANGLER(RTSemEventMultiWaitEx) +# define RTSemEventMultiWaitEx RT_MANGLER(RTSemEventMultiWaitEx) /* r0drv */ +# define RTSemEventMultiWaitExDebug RT_MANGLER(RTSemEventMultiWaitExDebug) +# define RTSemEventMultiWaitExDebug RT_MANGLER(RTSemEventMultiWaitExDebug) /* r0drv */ +# define RTSemEventMultiWaitNoResume RT_MANGLER(RTSemEventMultiWaitNoResume) +# define RTSemEventRemoveSignaller RT_MANGLER(RTSemEventRemoveSignaller) +# define RTSemEventSetSignaller RT_MANGLER(RTSemEventSetSignaller) +# define RTSemEventSignal RT_MANGLER(RTSemEventSignal) +# define RTSemEventWait RT_MANGLER(RTSemEventWait) +# define RTSemEventWaitEx RT_MANGLER(RTSemEventWaitEx) /* r0drv */ +# define RTSemEventWaitExDebug RT_MANGLER(RTSemEventWaitExDebug) /* r0drv */ +# define RTSemEventWaitNoResume RT_MANGLER(RTSemEventWaitNoResume) +# define RTSemFastMutexCreate RT_MANGLER(RTSemFastMutexCreate) +# define RTSemFastMutexDestroy RT_MANGLER(RTSemFastMutexDestroy) +# define RTSemFastMutexRelease RT_MANGLER(RTSemFastMutexRelease) +# define RTSemFastMutexRequest RT_MANGLER(RTSemFastMutexRequest) +# define RTSemMutexCreate RT_MANGLER(RTSemMutexCreate) +# define RTSemMutexCreateEx RT_MANGLER(RTSemMutexCreateEx) +# define RTSemMutexDestroy RT_MANGLER(RTSemMutexDestroy) +# define RTSemMutexIsOwned RT_MANGLER(RTSemMutexIsOwned) +# define RTSemMutexRelease RT_MANGLER(RTSemMutexRelease) +# define RTSemMutexRequest RT_MANGLER(RTSemMutexRequest) +# define RTSemMutexRequestDebug RT_MANGLER(RTSemMutexRequestDebug) +# define RTSemMutexRequestNoResume RT_MANGLER(RTSemMutexRequestNoResume) +# define RTSemMutexRequestNoResumeDebug RT_MANGLER(RTSemMutexRequestNoResumeDebug) +# define RTSemMutexSetSubClass RT_MANGLER(RTSemMutexSetSubClass) +# define RTSemPing RT_MANGLER(RTSemPing) +# define RTSemPingPongDelete RT_MANGLER(RTSemPingPongDelete) +# define RTSemPingPongInit RT_MANGLER(RTSemPingPongInit) +# define RTSemPingWait RT_MANGLER(RTSemPingWait) +# define RTSemPong RT_MANGLER(RTSemPong) +# define RTSemPongWait RT_MANGLER(RTSemPongWait) +# define RTSemRWCreate RT_MANGLER(RTSemRWCreate) +# define RTSemRWCreateEx RT_MANGLER(RTSemRWCreateEx) +# define RTSemRWDestroy RT_MANGLER(RTSemRWDestroy) +# define RTSemRWGetReadCount RT_MANGLER(RTSemRWGetReadCount) +# define RTSemRWGetWriteRecursion RT_MANGLER(RTSemRWGetWriteRecursion) +# define RTSemRWGetWriterReadRecursion RT_MANGLER(RTSemRWGetWriterReadRecursion) +# define RTSemRWIsReadOwner RT_MANGLER(RTSemRWIsReadOwner) +# define RTSemRWIsWriteOwner RT_MANGLER(RTSemRWIsWriteOwner) +# define RTSemRWReleaseRead RT_MANGLER(RTSemRWReleaseRead) +# define RTSemRWReleaseWrite RT_MANGLER(RTSemRWReleaseWrite) +# define RTSemRWRequestRead RT_MANGLER(RTSemRWRequestRead) +# define RTSemRWRequestReadDebug RT_MANGLER(RTSemRWRequestReadDebug) +# define RTSemRWRequestReadNoResume RT_MANGLER(RTSemRWRequestReadNoResume) +# define RTSemRWRequestReadNoResumeDebug RT_MANGLER(RTSemRWRequestReadNoResumeDebug) +# define RTSemRWRequestWrite RT_MANGLER(RTSemRWRequestWrite) +# define RTSemRWRequestWriteDebug RT_MANGLER(RTSemRWRequestWriteDebug) +# define RTSemRWRequestWriteNoResume RT_MANGLER(RTSemRWRequestWriteNoResume) +# define RTSemRWRequestWriteNoResumeDebug RT_MANGLER(RTSemRWRequestWriteNoResumeDebug) +# define RTSemRWSetSubClass RT_MANGLER(RTSemRWSetSubClass) +# define RTSemSpinMutexCreate RT_MANGLER(RTSemSpinMutexCreate) +# define RTSemSpinMutexDestroy RT_MANGLER(RTSemSpinMutexDestroy) +# define RTSemSpinMutexRelease RT_MANGLER(RTSemSpinMutexRelease) +# define RTSemSpinMutexRequest RT_MANGLER(RTSemSpinMutexRequest) +# define RTSemSpinMutexTryRequest RT_MANGLER(RTSemSpinMutexTryRequest) +# define RTSemXRoadsCreate RT_MANGLER(RTSemXRoadsCreate) +# define RTSemXRoadsDestroy RT_MANGLER(RTSemXRoadsDestroy) +# define RTSemXRoadsEWEnter RT_MANGLER(RTSemXRoadsEWEnter) +# define RTSemXRoadsEWLeave RT_MANGLER(RTSemXRoadsEWLeave) +# define RTSemXRoadsNSEnter RT_MANGLER(RTSemXRoadsNSEnter) +# define RTSemXRoadsNSLeave RT_MANGLER(RTSemXRoadsNSLeave) +# define RTSgBufAdvance RT_MANGLER(RTSgBufAdvance) +# define RTSgBufClone RT_MANGLER(RTSgBufClone) +# define RTSgBufCmp RT_MANGLER(RTSgBufCmp) +# define RTSgBufCmpEx RT_MANGLER(RTSgBufCmpEx) +# define RTSgBufCopy RT_MANGLER(RTSgBufCopy) +# define RTSgBufCopyFromBuf RT_MANGLER(RTSgBufCopyFromBuf) +# define RTSgBufCopyToBuf RT_MANGLER(RTSgBufCopyToBuf) +# define RTSgBufInit RT_MANGLER(RTSgBufInit) +# define RTSgBufIsZero RT_MANGLER(RTSgBufIsZero) +# define RTSgBufReset RT_MANGLER(RTSgBufReset) +# define RTSgBufSegArrayCreate RT_MANGLER(RTSgBufSegArrayCreate) +# define RTSgBufSet RT_MANGLER(RTSgBufSet) +# define RTSgBufGetNextSegment RT_MANGLER(RTSgBufGetNextSegment) +# define RTSha1 RT_MANGLER(RTSha1) +# define RTSha1Digest RT_MANGLER(RTSha1Digest) +# define RTSha1DigestFromFile RT_MANGLER(RTSha1DigestFromFile) +# define RTSha1Final RT_MANGLER(RTSha1Final) +# define RTSha1FromString RT_MANGLER(RTSha1FromString) +# define RTSha1Init RT_MANGLER(RTSha1Init) +# define RTSha1ToString RT_MANGLER(RTSha1ToString) +# define RTSha1Update RT_MANGLER(RTSha1Update) +# define RTSha224 RT_MANGLER(RTSha224) +# define RTSha224Final RT_MANGLER(RTSha224Final) +# define RTSha224FromString RT_MANGLER(RTSha224FromString) +# define RTSha224Init RT_MANGLER(RTSha224Init) +# define RTSha224ToString RT_MANGLER(RTSha224ToString) +# define RTSha224Update RT_MANGLER(RTSha224Update) +# define RTSha224Digest RT_MANGLER(RTSha224Digest) +# define RTSha224DigestFromFile RT_MANGLER(RTSha224DigestFromFile) +# define RTSha256 RT_MANGLER(RTSha256) +# define RTSha256Final RT_MANGLER(RTSha256Final) +# define RTSha256FromString RT_MANGLER(RTSha256FromString) +# define RTSha256Init RT_MANGLER(RTSha256Init) +# define RTSha256ToString RT_MANGLER(RTSha256ToString) +# define RTSha256Update RT_MANGLER(RTSha256Update) +# define RTSha256Digest RT_MANGLER(RTSha256Digest) +# define RTSha256DigestFromFile RT_MANGLER(RTSha256DigestFromFile) +# define RTSha384 RT_MANGLER(RTSha384) +# define RTSha384Final RT_MANGLER(RTSha384Final) +# define RTSha384FromString RT_MANGLER(RTSha384FromString) +# define RTSha384Init RT_MANGLER(RTSha384Init) +# define RTSha384ToString RT_MANGLER(RTSha384ToString) +# define RTSha384Update RT_MANGLER(RTSha384Update) +# define RTSha512 RT_MANGLER(RTSha512) +# define RTSha512Final RT_MANGLER(RTSha512Final) +# define RTSha512FromString RT_MANGLER(RTSha512FromString) +# define RTSha512Init RT_MANGLER(RTSha512Init) +# define RTSha512ToString RT_MANGLER(RTSha512ToString) +# define RTSha512Update RT_MANGLER(RTSha512Update) +# define RTSha512t224 RT_MANGLER(RTSha512t224) +# define RTSha512t224Final RT_MANGLER(RTSha512t224Final) +# define RTSha512t224FromString RT_MANGLER(RTSha512t224FromString) +# define RTSha512t224Init RT_MANGLER(RTSha512t224Init) +# define RTSha512t224ToString RT_MANGLER(RTSha512t224ToString) +# define RTSha512t224Update RT_MANGLER(RTSha512t224Update) +# define RTSha512t256 RT_MANGLER(RTSha512t256) +# define RTSha512t256Final RT_MANGLER(RTSha512t256Final) +# define RTSha512t256FromString RT_MANGLER(RTSha512t256FromString) +# define RTSha512t256Init RT_MANGLER(RTSha512t256Init) +# define RTSha512t256ToString RT_MANGLER(RTSha512t256ToString) +# define RTSha512t256Update RT_MANGLER(RTSha512t256Update) +# define RTSocketClose RT_MANGLER(RTSocketClose) +# define RTSocketFromNative RT_MANGLER(RTSocketFromNative) +# define RTSocketQueryAddressStr RT_MANGLER(RTSocketQueryAddressStr) +# define RTSocketGetLocalAddress RT_MANGLER(RTSocketGetLocalAddress) +# define RTSocketGetPeerAddress RT_MANGLER(RTSocketGetPeerAddress) +# define RTSocketParseInetAddress RT_MANGLER(RTSocketParseInetAddress) +# define RTSocketRead RT_MANGLER(RTSocketRead) +# define RTSocketReadFrom RT_MANGLER(RTSocketReadFrom) +# define RTSocketReadNB RT_MANGLER(RTSocketReadNB) +# define RTSocketRelease RT_MANGLER(RTSocketRelease) +# define RTSocketRetain RT_MANGLER(RTSocketRetain) +# define RTSocketSelectOne RT_MANGLER(RTSocketSelectOne) +# define RTSocketSelectOneEx RT_MANGLER(RTSocketSelectOneEx) +# define RTSocketSetInheritance RT_MANGLER(RTSocketSetInheritance) +# define RTSocketSgWrite RT_MANGLER(RTSocketSgWrite) +# define RTSocketSgWriteL RT_MANGLER(RTSocketSgWriteL) +# define RTSocketSgWriteLNB RT_MANGLER(RTSocketSgWriteLNB) +# define RTSocketSgWriteLV RT_MANGLER(RTSocketSgWriteLV) +# define RTSocketSgWriteLVNB RT_MANGLER(RTSocketSgWriteLVNB) +# define RTSocketSgWriteNB RT_MANGLER(RTSocketSgWriteNB) +# define RTSocketShutdown RT_MANGLER(RTSocketShutdown) +# define RTSocketToNative RT_MANGLER(RTSocketToNative) +# define RTSocketWrite RT_MANGLER(RTSocketWrite) +# define RTSocketWriteNB RT_MANGLER(RTSocketWriteNB) +# define RTSocketWriteTo RT_MANGLER(RTSocketWriteTo) +# define RTSortApvIsSorted RT_MANGLER(RTSortApvIsSorted) +# define RTSortApvShell RT_MANGLER(RTSortApvShell) +# define RTSortIsSorted RT_MANGLER(RTSortIsSorted) +# define RTSpinlockAcquire RT_MANGLER(RTSpinlockAcquire) +# define RTSpinlockAcquireNoInts RT_MANGLER(RTSpinlockAcquireNoInts) +# define RTSpinlockCreate RT_MANGLER(RTSpinlockCreate) +# define RTSpinlockDestroy RT_MANGLER(RTSpinlockDestroy) +# define RTSpinlockRelease RT_MANGLER(RTSpinlockRelease) +# define RTStrAAppendExNVTag RT_MANGLER(RTStrAAppendExNVTag) +# define RTStrAAppendNTag RT_MANGLER(RTStrAAppendNTag) +# define RTStrAAppendTag RT_MANGLER(RTStrAAppendTag) +# define RTStrAllocExTag RT_MANGLER(RTStrAllocExTag) +# define RTStrAllocTag RT_MANGLER(RTStrAllocTag) +# define RTStrAPrintf2VTag RT_MANGLER(RTStrAPrintf2VTag) +# define RTStrAPrintfVTag RT_MANGLER(RTStrAPrintfVTag) +# define RTStrATruncateTag RT_MANGLER(RTStrATruncateTag) +# define RTStrCacheCreate RT_MANGLER(RTStrCacheCreate) +# define RTStrCacheDestroy RT_MANGLER(RTStrCacheDestroy) +# define RTStrCacheEnter RT_MANGLER(RTStrCacheEnter) +# define RTStrCacheEnterLower RT_MANGLER(RTStrCacheEnterLower) +# define RTStrCacheEnterLowerN RT_MANGLER(RTStrCacheEnterLowerN) +# define RTStrCacheEnterN RT_MANGLER(RTStrCacheEnterN) +# define RTStrCacheGetStats RT_MANGLER(RTStrCacheGetStats) +# define RTStrCacheIsRealImpl RT_MANGLER(RTStrCacheIsRealImpl) +# define RTStrCacheLength RT_MANGLER(RTStrCacheLength) +# define RTStrCacheRelease RT_MANGLER(RTStrCacheRelease) +# define RTStrCacheRetain RT_MANGLER(RTStrCacheRetain) +# define RTStrCalcLatin1Len RT_MANGLER(RTStrCalcLatin1Len) +# define RTStrCalcLatin1LenEx RT_MANGLER(RTStrCalcLatin1LenEx) +# define RTStrCalcUtf16Len RT_MANGLER(RTStrCalcUtf16Len) +# define RTStrCalcUtf16LenEx RT_MANGLER(RTStrCalcUtf16LenEx) +# define RTStrCat RT_MANGLER(RTStrCat) +# define RTStrCatEx RT_MANGLER(RTStrCatEx) +# define RTStrCatP RT_MANGLER(RTStrCatP) +# define RTStrCatPEx RT_MANGLER(RTStrCatPEx) +# define RTStrCmp RT_MANGLER(RTStrCmp) +# define RTStrConvertHexBytes RT_MANGLER(RTStrConvertHexBytes) +# define RTStrCopy RT_MANGLER(RTStrCopy) +# define RTStrCopyEx RT_MANGLER(RTStrCopyEx) +# define RTStrCopyP RT_MANGLER(RTStrCopyP) +# define RTStrCopyPEx RT_MANGLER(RTStrCopyPEx) +# define RTStrCurrentCPToUtf8Tag RT_MANGLER(RTStrCurrentCPToUtf8Tag) +# define RTStrDupExTag RT_MANGLER(RTStrDupExTag) +# define RTStrDupNTag RT_MANGLER(RTStrDupNTag) +# define RTStrDupTag RT_MANGLER(RTStrDupTag) +# define RTStrFormat RT_MANGLER(RTStrFormat) +# define RTStrFormatNumber RT_MANGLER(RTStrFormatNumber) +# define RTStrFormatR80 RT_MANGLER(RTStrFormatR80) +# define RTStrFormatR80u2 RT_MANGLER(RTStrFormatR80u2) +# define RTStrFormatTypeDeregister RT_MANGLER(RTStrFormatTypeDeregister) +# define RTStrFormatTypeRegister RT_MANGLER(RTStrFormatTypeRegister) +# define RTStrFormatTypeSetUser RT_MANGLER(RTStrFormatTypeSetUser) +# define RTStrFormatU128 RT_MANGLER(RTStrFormatU128) +# define RTStrFormatU16 RT_MANGLER(RTStrFormatU16) +# define RTStrFormatU32 RT_MANGLER(RTStrFormatU32) +# define RTStrFormatU64 RT_MANGLER(RTStrFormatU64) +# define RTStrFormatU8 RT_MANGLER(RTStrFormatU8) +# define RTStrFormatV RT_MANGLER(RTStrFormatV) +# define RTStrFree RT_MANGLER(RTStrFree) +# define RTStrGetCpExInternal RT_MANGLER(RTStrGetCpExInternal) +# define RTStrGetCpInternal RT_MANGLER(RTStrGetCpInternal) +# define RTStrGetCpNExInternal RT_MANGLER(RTStrGetCpNExInternal) +# define RTStrHash1 RT_MANGLER(RTStrHash1) +# define RTStrHash1ExN RT_MANGLER(RTStrHash1ExN) +# define RTStrHash1ExNV RT_MANGLER(RTStrHash1ExNV) +# define RTStrHash1N RT_MANGLER(RTStrHash1N) +# define RTStrICmp RT_MANGLER(RTStrICmp) +# define RTStrIStr RT_MANGLER(RTStrIStr) +# define RTStrIsCaseFoldable RT_MANGLER(RTStrIsCaseFoldable) +# define RTStrIsLowerCased RT_MANGLER(RTStrIsLowerCased) +# define RTStrIsUpperCased RT_MANGLER(RTStrIsUpperCased) +# define RTStrIsValidEncoding RT_MANGLER(RTStrIsValidEncoding) +# define RTStrmClearError RT_MANGLER(RTStrmClearError) +# define RTStrmClose RT_MANGLER(RTStrmClose) +# define RTStrmError RT_MANGLER(RTStrmError) +# define RTStrmFlush RT_MANGLER(RTStrmFlush) +# define RTStrmGetCh RT_MANGLER(RTStrmGetCh) +# define RTStrmInputGetEchoChars RT_MANGLER(RTStrmInputGetEchoChars) +# define RTStrmGetLine RT_MANGLER(RTStrmGetLine) +# define RTStrmOpen RT_MANGLER(RTStrmOpen) +# define RTStrmOpenF RT_MANGLER(RTStrmOpenF) +# define RTStrmOpenFV RT_MANGLER(RTStrmOpenFV) +# define RTStrmPrintf RT_MANGLER(RTStrmPrintf) +# define RTStrmPrintfV RT_MANGLER(RTStrmPrintfV) +# define RTStrmDumpPrintfV RT_MANGLER(RTStrmDumpPrintfV) +# define RTStrmPutCh RT_MANGLER(RTStrmPutCh) +# define RTStrmPutStr RT_MANGLER(RTStrmPutStr) +# define RTStrmReadEx RT_MANGLER(RTStrmReadEx) +# define RTStrmRewind RT_MANGLER(RTStrmRewind) +# define RTStrmInputSetEchoChars RT_MANGLER(RTStrmInputSetEchoChars) +# define RTStrmSetMode RT_MANGLER(RTStrmSetMode) +# define RTStrmWriteEx RT_MANGLER(RTStrmWriteEx) +# define RTStrNCmp RT_MANGLER(RTStrNCmp) +# define RTStrNICmp RT_MANGLER(RTStrNICmp) +# define RTStrNLen RT_MANGLER(RTStrNLen) +# define RTStrNLenEx RT_MANGLER(RTStrNLenEx) +# define RTStrPrevCp RT_MANGLER(RTStrPrevCp) +# define RTStrPrintf RT_MANGLER(RTStrPrintf) +# define RTStrPrintfEx RT_MANGLER(RTStrPrintfEx) +# define RTStrPrintfExV RT_MANGLER(RTStrPrintfExV) +# define RTStrPrintfV RT_MANGLER(RTStrPrintfV) +# define RTStrPrintHexBytes RT_MANGLER(RTStrPrintHexBytes) +# define RTStrPurgeEncoding RT_MANGLER(RTStrPurgeEncoding) +# define RTStrPurgeComplementSet RT_MANGLER(RTStrPurgeComplementSet) +# define RTStrPutCpInternal RT_MANGLER(RTStrPutCpInternal) +# define RTStrReallocTag RT_MANGLER(RTStrReallocTag) +# define RTStrSimplePatternMatch RT_MANGLER(RTStrSimplePatternMatch) +# define RTStrSimplePatternMultiMatch RT_MANGLER(RTStrSimplePatternMultiMatch) +# define RTStrSimplePatternNMatch RT_MANGLER(RTStrSimplePatternNMatch) +# define RTStrSpaceDestroy RT_MANGLER(RTStrSpaceDestroy) +# define RTStrSpaceEnumerate RT_MANGLER(RTStrSpaceEnumerate) +# define RTStrSpaceGet RT_MANGLER(RTStrSpaceGet) +# define RTStrSpaceGetN RT_MANGLER(RTStrSpaceGetN) +# define RTStrSpaceInsert RT_MANGLER(RTStrSpaceInsert) +# define RTStrSpaceRemove RT_MANGLER(RTStrSpaceRemove) +# define RTStrStr RT_MANGLER(RTStrStr) +# define RTStrStrip RT_MANGLER(RTStrStrip) +# define RTStrStripL RT_MANGLER(RTStrStripL) +# define RTStrStripR RT_MANGLER(RTStrStripR) +# define RTStrToInt16 RT_MANGLER(RTStrToInt16) +# define RTStrToInt16Ex RT_MANGLER(RTStrToInt16Ex) +# define RTStrToInt16Full RT_MANGLER(RTStrToInt16Full) +# define RTStrToInt32 RT_MANGLER(RTStrToInt32) +# define RTStrToInt32Ex RT_MANGLER(RTStrToInt32Ex) +# define RTStrToInt32Full RT_MANGLER(RTStrToInt32Full) +# define RTStrToInt64 RT_MANGLER(RTStrToInt64) +# define RTStrToInt64Ex RT_MANGLER(RTStrToInt64Ex) +# define RTStrToInt64Full RT_MANGLER(RTStrToInt64Full) +# define RTStrToInt8 RT_MANGLER(RTStrToInt8) +# define RTStrToInt8Ex RT_MANGLER(RTStrToInt8Ex) +# define RTStrToInt8Full RT_MANGLER(RTStrToInt8Full) +# define RTStrToLatin1ExTag RT_MANGLER(RTStrToLatin1ExTag) +# define RTStrToLatin1Tag RT_MANGLER(RTStrToLatin1Tag) +# define RTStrToLower RT_MANGLER(RTStrToLower) +# define RTStrToUInt16 RT_MANGLER(RTStrToUInt16) +# define RTStrToUInt16Ex RT_MANGLER(RTStrToUInt16Ex) +# define RTStrToUInt16Full RT_MANGLER(RTStrToUInt16Full) +# define RTStrToUInt32 RT_MANGLER(RTStrToUInt32) +# define RTStrToUInt32Ex RT_MANGLER(RTStrToUInt32Ex) +# define RTStrToUInt32Full RT_MANGLER(RTStrToUInt32Full) +# define RTStrToUInt64 RT_MANGLER(RTStrToUInt64) +# define RTStrToUInt64Ex RT_MANGLER(RTStrToUInt64Ex) +# define RTStrToUInt64Full RT_MANGLER(RTStrToUInt64Full) +# define RTStrToUInt8 RT_MANGLER(RTStrToUInt8) +# define RTStrToUInt8Ex RT_MANGLER(RTStrToUInt8Ex) +# define RTStrToUInt8Full RT_MANGLER(RTStrToUInt8Full) +# define RTStrToUni RT_MANGLER(RTStrToUni) +# define RTStrToUniEx RT_MANGLER(RTStrToUniEx) +# define RTStrToUpper RT_MANGLER(RTStrToUpper) +# define RTStrToUtf16ExTag RT_MANGLER(RTStrToUtf16ExTag) +# define RTStrToUtf16Tag RT_MANGLER(RTStrToUtf16Tag) +# define RTStrUniLen RT_MANGLER(RTStrUniLen) +# define RTStrUniLenEx RT_MANGLER(RTStrUniLenEx) +# define RTStrUtf8ToCurrentCPTag RT_MANGLER(RTStrUtf8ToCurrentCPTag) +# define RTStrValidateEncoding RT_MANGLER(RTStrValidateEncoding) +# define RTStrValidateEncodingEx RT_MANGLER(RTStrValidateEncodingEx) +# define RTStrVersionCompare RT_MANGLER(RTStrVersionCompare) +# define RTSymlinkCreate RT_MANGLER(RTSymlinkCreate) +# define RTSymlinkDelete RT_MANGLER(RTSymlinkDelete) +# define RTSymlinkExists RT_MANGLER(RTSymlinkExists) +# define RTSymlinkIsDangling RT_MANGLER(RTSymlinkIsDangling) +# define RTSymlinkRead RT_MANGLER(RTSymlinkRead) +# define RTSymlinkReadA RT_MANGLER(RTSymlinkReadA) +# define RTSystemQueryAvailableRam RT_MANGLER(RTSystemQueryAvailableRam) +# define RTSystemQueryDmiString RT_MANGLER(RTSystemQueryDmiString) +# define RTSystemQueryOSInfo RT_MANGLER(RTSystemQueryOSInfo) +# define RTSystemQueryTotalRam RT_MANGLER(RTSystemQueryTotalRam) +# define RTSystemShutdown RT_MANGLER(RTSystemShutdown) +# define RTTarClose RT_MANGLER(RTTarClose) +# define RTTarFileClose RT_MANGLER(RTTarFileClose) +# define RTTarFileGetSize RT_MANGLER(RTTarFileGetSize) +# define RTTarFileOpen RT_MANGLER(RTTarFileOpen) +# define RTTarFileReadAt RT_MANGLER(RTTarFileReadAt) +# define RTTarFileSetSize RT_MANGLER(RTTarFileSetSize) +# define RTTarFileWriteAt RT_MANGLER(RTTarFileWriteAt) +# define RTTarOpen RT_MANGLER(RTTarOpen) +# define RTTcpClientCancelConnect RT_MANGLER(RTTcpClientCancelConnect) +# define RTTcpClientClose RT_MANGLER(RTTcpClientClose) +# define RTTcpClientCloseEx RT_MANGLER(RTTcpClientCloseEx) +# define RTTcpClientConnect RT_MANGLER(RTTcpClientConnect) +# define RTTcpClientConnectEx RT_MANGLER(RTTcpClientConnectEx) +# define RTTcpFlush RT_MANGLER(RTTcpFlush) +# define RTTcpGetLocalAddress RT_MANGLER(RTTcpGetLocalAddress) +# define RTTcpGetPeerAddress RT_MANGLER(RTTcpGetPeerAddress) +# define RTTcpRead RT_MANGLER(RTTcpRead) +# define RTTcpReadNB RT_MANGLER(RTTcpReadNB) +# define RTTcpSelectOne RT_MANGLER(RTTcpSelectOne) +# define RTTcpSelectOneEx RT_MANGLER(RTTcpSelectOneEx) +# define RTTcpServerCreate RT_MANGLER(RTTcpServerCreate) +# define RTTcpServerCreateEx RT_MANGLER(RTTcpServerCreateEx) +# define RTTcpServerDestroy RT_MANGLER(RTTcpServerDestroy) +# define RTTcpServerDisconnectClient RT_MANGLER(RTTcpServerDisconnectClient) +# define RTTcpServerDisconnectClient2 RT_MANGLER(RTTcpServerDisconnectClient2) +# define RTTcpServerListen RT_MANGLER(RTTcpServerListen) +# define RTTcpServerListen2 RT_MANGLER(RTTcpServerListen2) +# define RTTcpServerShutdown RT_MANGLER(RTTcpServerShutdown) +# define RTTcpSetSendCoalescing RT_MANGLER(RTTcpSetSendCoalescing) +# define RTTcpSgWrite RT_MANGLER(RTTcpSgWrite) +# define RTTcpSgWriteL RT_MANGLER(RTTcpSgWriteL) +# define RTTcpSgWriteLNB RT_MANGLER(RTTcpSgWriteLNB) +# define RTTcpSgWriteLV RT_MANGLER(RTTcpSgWriteLV) +# define RTTcpSgWriteLVNB RT_MANGLER(RTTcpSgWriteLVNB) +# define RTTcpSgWriteNB RT_MANGLER(RTTcpSgWriteNB) +# define RTTcpWrite RT_MANGLER(RTTcpWrite) +# define RTTcpWriteNB RT_MANGLER(RTTcpWriteNB) +# define RTTermDeregisterCallback RT_MANGLER(RTTermDeregisterCallback) +# define RTTermRegisterCallback RT_MANGLER(RTTermRegisterCallback) +# define RTTermRunCallbacks RT_MANGLER(RTTermRunCallbacks) +# define RTTestBanner RT_MANGLER(RTTestBanner) +# define RTTestChangeName RT_MANGLER(RTTestChangeName) +# define RTTestCreate RT_MANGLER(RTTestCreate) +# define RTTestCreateEx RT_MANGLER(RTTestCreateEx) +# define RTTestDestroy RT_MANGLER(RTTestDestroy) +# define RTTestErrorCount RT_MANGLER(RTTestErrorCount) +# define RTTestErrorInc RT_MANGLER(RTTestErrorInc) +# define RTTestFailed RT_MANGLER(RTTestFailed) +# define RTTestFailedV RT_MANGLER(RTTestFailedV) +# define RTTestFailureDetails RT_MANGLER(RTTestFailureDetails) +# define RTTestFailureDetailsV RT_MANGLER(RTTestFailureDetailsV) +# define RTTestGuardedAlloc RT_MANGLER(RTTestGuardedAlloc) +# define RTTestGuardedAllocHead RT_MANGLER(RTTestGuardedAllocHead) +# define RTTestGuardedAllocTail RT_MANGLER(RTTestGuardedAllocTail) +# define RTTestGuardedFree RT_MANGLER(RTTestGuardedFree) +# define RTTestIErrorCount RT_MANGLER(RTTestIErrorCount) +# define RTTestIErrorInc RT_MANGLER(RTTestIErrorInc) +# define RTTestIFailed RT_MANGLER(RTTestIFailed) +# define RTTestIFailedRc RT_MANGLER(RTTestIFailedRc) +# define RTTestIFailedRcV RT_MANGLER(RTTestIFailedRcV) +# define RTTestIFailedV RT_MANGLER(RTTestIFailedV) +# define RTTestIFailureDetails RT_MANGLER(RTTestIFailureDetails) +# define RTTestIFailureDetailsV RT_MANGLER(RTTestIFailureDetailsV) +# define RTTestInitAndCreate RT_MANGLER(RTTestInitAndCreate) +# define RTTestInitExAndCreate RT_MANGLER(RTTestInitExAndCreate) +# define RTTestIPassed RT_MANGLER(RTTestIPassed) +# define RTTestIPassedV RT_MANGLER(RTTestIPassedV) +# define RTTestIPrintf RT_MANGLER(RTTestIPrintf) +# define RTTestIPrintfV RT_MANGLER(RTTestIPrintfV) +# define RTTestISub RT_MANGLER(RTTestISub) +# define RTTestISubDone RT_MANGLER(RTTestISubDone) +# define RTTestISubF RT_MANGLER(RTTestISubF) +# define RTTestISubV RT_MANGLER(RTTestISubV) +# define RTTestIValue RT_MANGLER(RTTestIValue) +# define RTTestIValueF RT_MANGLER(RTTestIValueF) +# define RTTestIValueV RT_MANGLER(RTTestIValueV) +# define RTTestPassed RT_MANGLER(RTTestPassed) +# define RTTestPassedV RT_MANGLER(RTTestPassedV) +# define RTTestPrintf RT_MANGLER(RTTestPrintf) +# define RTTestPrintfNl RT_MANGLER(RTTestPrintfNl) +# define RTTestPrintfNlV RT_MANGLER(RTTestPrintfNlV) +# define RTTestPrintfV RT_MANGLER(RTTestPrintfV) +# define RTTestSetDefault RT_MANGLER(RTTestSetDefault) +# define RTTestSkipAndDestroy RT_MANGLER(RTTestSkipAndDestroy) +# define RTTestSkipAndDestroyV RT_MANGLER(RTTestSkipAndDestroyV) +# define RTTestSkipped RT_MANGLER(RTTestSkipped) +# define RTTestSkippedV RT_MANGLER(RTTestSkippedV) +# define RTTestSub RT_MANGLER(RTTestSub) +# define RTTestSubDone RT_MANGLER(RTTestSubDone) +# define RTTestSubErrorCount RT_MANGLER(RTTestSubErrorCount) +# define RTTestSubF RT_MANGLER(RTTestSubF) +# define RTTestSubV RT_MANGLER(RTTestSubV) +# define RTTestSummaryAndDestroy RT_MANGLER(RTTestSummaryAndDestroy) +# define RTTestValue RT_MANGLER(RTTestValue) +# define RTTestValueF RT_MANGLER(RTTestValueF) +# define RTTestValueV RT_MANGLER(RTTestValueV) +# define RTThreadAdopt RT_MANGLER(RTThreadAdopt) +# define RTThreadBlocking RT_MANGLER(RTThreadBlocking) +# define RTThreadCreate RT_MANGLER(RTThreadCreate) +# define RTThreadCreateF RT_MANGLER(RTThreadCreateF) +# define RTThreadCreateV RT_MANGLER(RTThreadCreateV) +# define RTThreadCtxHookIsEnabled RT_MANGLER(RTThreadCtxHookIsEnabled) /* r0drv */ +# define RTThreadCtxHookCreate RT_MANGLER(RTThreadCtxHookCreate) /* r0drv */ +# define RTThreadCtxHookDestroy RT_MANGLER(RTThreadCtxHookDestroy) /* r0drv */ +# define RTThreadCtxHookDisable RT_MANGLER(RTThreadCtxHookDisable) /* r0drv */ +# define RTThreadCtxHookEnable RT_MANGLER(RTThreadCtxHookEnable) /* r0drv */ +# define RTThreadFromNative RT_MANGLER(RTThreadFromNative) +# define RTThreadGetAffinity RT_MANGLER(RTThreadGetAffinity) +# define RTThreadGetExecutionTimeMilli RT_MANGLER(RTThreadGetExecutionTimeMilli) +# define RTThreadGetName RT_MANGLER(RTThreadGetName) +# define RTThreadGetNative RT_MANGLER(RTThreadGetNative) +# define RTThreadGetNativeState RT_MANGLER(RTThreadGetNativeState) +# define RTThreadGetReallySleeping RT_MANGLER(RTThreadGetReallySleeping) +# define RTThreadGetState RT_MANGLER(RTThreadGetState) +# define RTThreadGetType RT_MANGLER(RTThreadGetType) +# define RTThreadIsInInterrupt RT_MANGLER(RTThreadIsInInterrupt) /* r0drv */ +# define RTThreadIsInitialized RT_MANGLER(RTThreadIsInitialized) +# define RTThreadIsMain RT_MANGLER(RTThreadIsMain) +# define RTThreadIsSelfAlive RT_MANGLER(RTThreadIsSelfAlive) +# define RTThreadIsSelfKnown RT_MANGLER(RTThreadIsSelfKnown) +# define RTThreadNativeSelf RT_MANGLER(RTThreadNativeSelf) +# define RTThreadPoke RT_MANGLER(RTThreadPoke) /* not-win not-os2 */ +# define RTThreadPreemptDisable RT_MANGLER(RTThreadPreemptDisable) /* r0drv */ +# define RTThreadPreemptIsEnabled RT_MANGLER(RTThreadPreemptIsEnabled) /* r0drv */ +# define RTThreadPreemptIsPending RT_MANGLER(RTThreadPreemptIsPending) /* r0drv */ +# define RTThreadPreemptIsPendingTrusty RT_MANGLER(RTThreadPreemptIsPendingTrusty) /* r0drv */ +# define RTThreadPreemptIsPossible RT_MANGLER(RTThreadPreemptIsPossible) /* r0drv */ +# define RTThreadPreemptRestore RT_MANGLER(RTThreadPreemptRestore) /* r0drv */ +# define RTThreadSelf RT_MANGLER(RTThreadSelf) +# define RTThreadSelfAutoAdopt RT_MANGLER(RTThreadSelfAutoAdopt) +# define RTThreadSelfName RT_MANGLER(RTThreadSelfName) +# define RTThreadSetAffinity RT_MANGLER(RTThreadSetAffinity) +# define RTThreadSetAffinityToCpu RT_MANGLER(RTThreadSetAffinityToCpu) +# define RTThreadSetName RT_MANGLER(RTThreadSetName) +# define RTThreadSetType RT_MANGLER(RTThreadSetType) +# define RTThreadSleep RT_MANGLER(RTThreadSleep) +# define RTThreadSleepNoLog RT_MANGLER(RTThreadSleepNoLog) +# define RTThreadStateName RT_MANGLER(RTThreadStateName) +# define RTThreadUnblocked RT_MANGLER(RTThreadUnblocked) +# define RTThreadUserReset RT_MANGLER(RTThreadUserReset) +# define RTThreadUserSignal RT_MANGLER(RTThreadUserSignal) +# define RTThreadUserWait RT_MANGLER(RTThreadUserWait) +# define RTThreadUserWaitNoResume RT_MANGLER(RTThreadUserWaitNoResume) +# define RTThreadWait RT_MANGLER(RTThreadWait) +# define RTThreadWaitNoResume RT_MANGLER(RTThreadWaitNoResume) +# define RTThreadYield RT_MANGLER(RTThreadYield) +# define RTTimeDbgBad RT_MANGLER(RTTimeDbgBad) +# define RTTimeDbgExpired RT_MANGLER(RTTimeDbgExpired) +# define RTTimeDbgRaces RT_MANGLER(RTTimeDbgRaces) +# define RTTimeDbgSteps RT_MANGLER(RTTimeDbgSteps) +# define RTTimeExplode RT_MANGLER(RTTimeExplode) +# define RTTimeImplode RT_MANGLER(RTTimeImplode) +# define RTTimeIsLeapYear RT_MANGLER(RTTimeIsLeapYear) +# define RTTimeLocalDeltaNano RT_MANGLER(RTTimeLocalDeltaNano) +# define RTTimeLocalExplode RT_MANGLER(RTTimeLocalExplode) +# define RTTimeLocalNow RT_MANGLER(RTTimeLocalNow) +# define RTTimeMilliTS RT_MANGLER(RTTimeMilliTS) +# define RTTimeNanoTS RT_MANGLER(RTTimeNanoTS) +# define RTTimeNanoTSLegacyAsync RT_MANGLER(RTTimeNanoTSLegacyAsync) +# define RTTimeNanoTSLegacyAsync_EndProc RT_MANGLER(RTTimeNanoTSLegacyAsync_EndProc) +# define RTTimeNanoTSLegacyAsyncUseApicId RT_MANGLER(RTTimeNanoTSLegacyAsyncUseApicId) +# define RTTimeNanoTSLegacyAsyncUseApicId_EndProc RT_MANGLER(RTTimeNanoTSLegacyAsyncUseApicId_EndProc) +# define RTTimeNanoTSLegacyAsyncUseRdtscp RT_MANGLER(RTTimeNanoTSLegacyAsyncUseRdtscp) +# define RTTimeNanoTSLegacyAsyncUseRdtscp_EndProc RT_MANGLER(RTTimeNanoTSLegacyAsyncUseRdtscp_EndProc) +# define RTTimeNanoTSLegacyAsyncUseIdtrLim RT_MANGLER(RTTimeNanoTSLegacyAsyncUseIdtrLim) +# define RTTimeNanoTSLegacyAsyncUseIdtrLim_EndProc RT_MANGLER(RTTimeNanoTSLegacyAsyncUseIdtrLim_EndProc) +# define RTTimeNanoTSLegacySyncInvarNoDelta RT_MANGLER(RTTimeNanoTSLegacySyncInvarNoDelta) +# define RTTimeNanoTSLegacySyncInvarNoDelta_EndProc RT_MANGLER(RTTimeNanoTSLegacySyncInvarNoDelta_EndProc) +# define RTTimeNanoTSLegacySyncInvarWithDelta RT_MANGLER(RTTimeNanoTSLegacySyncInvarWithDelta) +# define RTTimeNanoTSLegacySyncInvarWithDelta_EndProc RT_MANGLER(RTTimeNanoTSLegacySyncInvarWithDelta_EndProc) +# define RTTimeNanoTSLegacySyncInvarWithDeltaUseApicId RT_MANGLER(RTTimeNanoTSLegacySyncInvarWithDeltaUseApicId) +# define RTTimeNanoTSLegacySyncInvarWithDeltaUseApicId_EndProc RT_MANGLER(RTTimeNanoTSLegacySyncInvarWithDeltaUseApicId_EndProc) +# define RTTimeNanoTSLegacySyncInvarWithDeltaUseRdtscp RT_MANGLER(RTTimeNanoTSLegacySyncInvarWithDeltaUseRdtscp) +# define RTTimeNanoTSLegacySyncInvarWithDeltaUseRdtscp_EndProc RT_MANGLER(RTTimeNanoTSLegacySyncInvarWithDeltaUseRdtscp_EndProc) +# define RTTimeNanoTSLegacySyncInvarWithDeltaUseIdtrLim RT_MANGLER(RTTimeNanoTSLegacySyncInvarWithDeltaUseIdtrLim) +# define RTTimeNanoTSLegacySyncInvarWithDeltaUseIdtrLim_EndProc RT_MANGLER(RTTimeNanoTSLegacySyncInvarWithDeltaUseIdtrLim_EndProc) +# define RTTimeNanoTSLFenceAsync RT_MANGLER(RTTimeNanoTSLFenceAsync) +# define RTTimeNanoTSLFenceAsync_EndProc RT_MANGLER(RTTimeNanoTSLFenceAsync_EndProc) +# define RTTimeNanoTSLFenceAsyncUseApicId RT_MANGLER(RTTimeNanoTSLFenceAsyncUseApicId) +# define RTTimeNanoTSLFenceAsyncUseApicId_EndProc RT_MANGLER(RTTimeNanoTSLFenceAsyncUseApicId_EndProc) +# define RTTimeNanoTSLFenceAsyncUseRdtscp RT_MANGLER(RTTimeNanoTSLFenceAsyncUseRdtscp) +# define RTTimeNanoTSLFenceAsyncUseRdtscp_EndProc RT_MANGLER(RTTimeNanoTSLFenceAsyncUseRdtscp_EndProc) +# define RTTimeNanoTSLFenceAsyncUseIdtrLim RT_MANGLER(RTTimeNanoTSLFenceAsyncUseIdtrLim) +# define RTTimeNanoTSLFenceAsyncUseIdtrLim_EndProc RT_MANGLER(RTTimeNanoTSLFenceAsyncUseIdtrLim_EndProc) +# define RTTimeNanoTSLFenceSyncInvarNoDelta RT_MANGLER(RTTimeNanoTSLFenceSyncInvarNoDelta) +# define RTTimeNanoTSLFenceSyncInvarNoDelta_EndProc RT_MANGLER(RTTimeNanoTSLFenceSyncInvarNoDelta_EndProc) +# define RTTimeNanoTSLFenceSyncInvarWithDelta RT_MANGLER(RTTimeNanoTSLFenceSyncInvarWithDelta) +# define RTTimeNanoTSLFenceSyncInvarWithDelta_EndProc RT_MANGLER(RTTimeNanoTSLFenceSyncInvarWithDelta_EndProc) +# define RTTimeNanoTSLFenceSyncInvarWithDeltaUseApicId RT_MANGLER(RTTimeNanoTSLFenceSyncInvarWithDeltaUseApicId) +# define RTTimeNanoTSLFenceSyncInvarWithDeltaUseApicId_EndProc RT_MANGLER(RTTimeNanoTSLFenceSyncInvarWithDeltaUseApicId_EndProc) +# define RTTimeNanoTSLFenceSyncInvarWithDeltaUseRdtscp RT_MANGLER(RTTimeNanoTSLFenceSyncInvarWithDeltaUseRdtscp) +# define RTTimeNanoTSLFenceSyncInvarWithDeltaUseRdtscp_EndProc RT_MANGLER(RTTimeNanoTSLFenceSyncInvarWithDeltaUseRdtscp_EndProc) +# define RTTimeNanoTSLFenceSyncInvarWithDeltaUseIdtrLim RT_MANGLER(RTTimeNanoTSLFenceSyncInvarWithDeltaUseIdtrLim) +# define RTTimeNanoTSLFenceSyncInvarWithDeltaUseIdtrLim_EndProc RT_MANGLER(RTTimeNanoTSLFenceSyncInvarWithDeltaUseIdtrLim_EndProc) +# define RTTimeNormalize RT_MANGLER(RTTimeNormalize) +# define RTTimeNow RT_MANGLER(RTTimeNow) +# define RTTimeProgramMicroTS RT_MANGLER(RTTimeProgramMicroTS) +# define RTTimeProgramMilliTS RT_MANGLER(RTTimeProgramMilliTS) +# define RTTimeProgramNanoTS RT_MANGLER(RTTimeProgramNanoTS) +# define RTTimeProgramSecTS RT_MANGLER(RTTimeProgramSecTS) +# define RTTimeProgramStartNanoTS RT_MANGLER(RTTimeProgramStartNanoTS) +# define RTTimerCanDoHighResolution RT_MANGLER(RTTimerCanDoHighResolution) +# define RTTimerChangeInterval RT_MANGLER(RTTimerChangeInterval) +# define RTTimerCreate RT_MANGLER(RTTimerCreate) +# define RTTimerCreateEx RT_MANGLER(RTTimerCreateEx) +# define RTTimerDestroy RT_MANGLER(RTTimerDestroy) +# define RTTimerGetSystemGranularity RT_MANGLER(RTTimerGetSystemGranularity) /* r0drv */ +# define RTTimerLRCreate RT_MANGLER(RTTimerLRCreate) +# define RTTimerLRCreateEx RT_MANGLER(RTTimerLRCreateEx) +# define RTTimerLRDestroy RT_MANGLER(RTTimerLRDestroy) +# define RTTimerLRStart RT_MANGLER(RTTimerLRStart) +# define RTTimerLRStop RT_MANGLER(RTTimerLRStop) +# define RTTimerLRChangeInterval RT_MANGLER(RTTimerLRChangeInterval) +# define RTTimerReleaseSystemGranularity RT_MANGLER(RTTimerReleaseSystemGranularity) /* r0drv */ +# define RTTimerRequestSystemGranularity RT_MANGLER(RTTimerRequestSystemGranularity) /* r0drv */ +# define RTTimerStart RT_MANGLER(RTTimerStart) +# define RTTimerStop RT_MANGLER(RTTimerStop) +# define RTTimeSet RT_MANGLER(RTTimeSet) +# define RTTimeSpecFromString RT_MANGLER(RTTimeSpecFromString) +# define RTTimeSpecToString RT_MANGLER(RTTimeSpecToString) +# define RTTimeSystemMilliTS RT_MANGLER(RTTimeSystemMilliTS) +# define RTTimeSystemNanoTS RT_MANGLER(RTTimeSystemNanoTS) +# define RTTimeFromString RT_MANGLER(RTTimeFromString) +# define RTTimeToString RT_MANGLER(RTTimeToString) +# define RTTlsAlloc RT_MANGLER(RTTlsAlloc) +# define RTTlsAllocEx RT_MANGLER(RTTlsAllocEx) +# define RTTlsFree RT_MANGLER(RTTlsFree) +# define RTTlsGet RT_MANGLER(RTTlsGet) +# define RTTlsGetEx RT_MANGLER(RTTlsGetEx) +# define RTTlsSet RT_MANGLER(RTTlsSet) +# define RTTraceBufAddMsg RT_MANGLER(RTTraceBufAddMsg) +# define RTTraceBufAddMsgEx RT_MANGLER(RTTraceBufAddMsgEx) +# define RTTraceBufAddMsgF RT_MANGLER(RTTraceBufAddMsgF) +# define RTTraceBufAddMsgV RT_MANGLER(RTTraceBufAddMsgV) +# define RTTraceBufAddPos RT_MANGLER(RTTraceBufAddPos) +# define RTTraceBufAddPosMsg RT_MANGLER(RTTraceBufAddPosMsg) +# define RTTraceBufAddPosMsgEx RT_MANGLER(RTTraceBufAddPosMsgEx) +# define RTTraceBufAddPosMsgF RT_MANGLER(RTTraceBufAddPosMsgF) +# define RTTraceBufAddPosMsgV RT_MANGLER(RTTraceBufAddPosMsgV) +# define RTTraceBufCarve RT_MANGLER(RTTraceBufCarve) +# define RTTraceBufCreate RT_MANGLER(RTTraceBufCreate) +# define RTTraceBufDisable RT_MANGLER(RTTraceBufDisable) +# define RTTraceBufDumpToAssert RT_MANGLER(RTTraceBufDumpToAssert) +# define RTTraceBufDumpToLog RT_MANGLER(RTTraceBufDumpToLog) +# define RTTraceBufEnable RT_MANGLER(RTTraceBufEnable) +# define RTTraceBufEnumEntries RT_MANGLER(RTTraceBufEnumEntries) +# define RTTraceBufGetEntryCount RT_MANGLER(RTTraceBufGetEntryCount) +# define RTTraceBufGetEntrySize RT_MANGLER(RTTraceBufGetEntrySize) +# define RTTraceBufRelease RT_MANGLER(RTTraceBufRelease) +# define RTTraceBufRetain RT_MANGLER(RTTraceBufRetain) +# define RTTraceGetDefaultBuf RT_MANGLER(RTTraceGetDefaultBuf) +# define RTTraceSetDefaultBuf RT_MANGLER(RTTraceSetDefaultBuf) +# define RTUdpRead RT_MANGLER(RTUdpRead) +# define RTUdpServerCreate RT_MANGLER(RTUdpServerCreate) +# define RTUdpServerCreateEx RT_MANGLER(RTUdpServerCreateEx) +# define RTUdpServerDestroy RT_MANGLER(RTUdpServerDestroy) +# define RTUdpServerListen RT_MANGLER(RTUdpServerListen) +# define RTUdpServerShutdown RT_MANGLER(RTUdpServerShutdown) +# define RTUdpWrite RT_MANGLER(RTUdpWrite) +# define RTUniFree RT_MANGLER(RTUniFree) +# define RTUriAuthority RT_MANGLER(RTUriAuthority) +# define RTUriCreate RT_MANGLER(RTUriCreate) +# define RTUriFileCreate RT_MANGLER(RTUriFileCreate) +# define RTUriFileNPath RT_MANGLER(RTUriFileNPath) +# define RTUriFilePath RT_MANGLER(RTUriFilePath) +# define RTUriFragment RT_MANGLER(RTUriFragment) +# define RTUriHasScheme RT_MANGLER(RTUriHasScheme) +# define RTUriPath RT_MANGLER(RTUriPath) +# define RTUriQuery RT_MANGLER(RTUriQuery) +# define RTUriScheme RT_MANGLER(RTUriScheme) +# define RTUtf16AllocTag RT_MANGLER(RTUtf16AllocTag) +# define RTUtf16CalcLatin1Len RT_MANGLER(RTUtf16CalcLatin1Len) +# define RTUtf16CalcLatin1LenEx RT_MANGLER(RTUtf16CalcLatin1LenEx) +# define RTUtf16CalcUtf8Len RT_MANGLER(RTUtf16CalcUtf8Len) +# define RTUtf16CalcUtf8LenEx RT_MANGLER(RTUtf16CalcUtf8LenEx) +# define RTUtf16Cmp RT_MANGLER(RTUtf16Cmp) +# define RTUtf16CmpAscii RT_MANGLER(RTUtf16CmpAscii) +# define RTUtf16DupExTag RT_MANGLER(RTUtf16DupExTag) +# define RTUtf16DupTag RT_MANGLER(RTUtf16DupTag) +# define RTUtf16Free RT_MANGLER(RTUtf16Free) +# define RTUtf16GetCpExInternal RT_MANGLER(RTUtf16GetCpExInternal) +# define RTUtf16GetCpInternal RT_MANGLER(RTUtf16GetCpInternal) +# define RTUtf16ICmp RT_MANGLER(RTUtf16ICmp) +# define RTUtf16IsValidEncoding RT_MANGLER(RTUtf16IsValidEncoding) +# define RTUtf16Len RT_MANGLER(RTUtf16Len) +# define RTUtf16LocaleICmp RT_MANGLER(RTUtf16LocaleICmp) +# define RTUtf16PutCpInternal RT_MANGLER(RTUtf16PutCpInternal) +# define RTUtf16ToLatin1ExTag RT_MANGLER(RTUtf16ToLatin1ExTag) +# define RTUtf16ToLatin1Tag RT_MANGLER(RTUtf16ToLatin1Tag) +# define RTUtf16ToLower RT_MANGLER(RTUtf16ToLower) +# define RTUtf16ToUpper RT_MANGLER(RTUtf16ToUpper) +# define RTUtf16PurgeComplementSet RT_MANGLER(RTUtf16PurgeComplementSet) +# define RTUtf16ToUtf8ExTag RT_MANGLER(RTUtf16ToUtf8ExTag) +# define RTUtf16ToUtf8Tag RT_MANGLER(RTUtf16ToUtf8Tag) +# define RTUtf16ValidateEncoding RT_MANGLER(RTUtf16ValidateEncoding) +# define RTUtf16ValidateEncodingEx RT_MANGLER(RTUtf16ValidateEncodingEx) +# define RTUuidClear RT_MANGLER(RTUuidClear) +# define RTUuidCompare RT_MANGLER(RTUuidCompare) +# define RTUuidCompare2Strs RT_MANGLER(RTUuidCompare2Strs) +# define RTUuidCompareStr RT_MANGLER(RTUuidCompareStr) +# define RTUuidCreate RT_MANGLER(RTUuidCreate) +# define RTUuidFromStr RT_MANGLER(RTUuidFromStr) +# define RTUuidFromUtf16 RT_MANGLER(RTUuidFromUtf16) +# define RTUuidIsNull RT_MANGLER(RTUuidIsNull) +# define RTUuidToStr RT_MANGLER(RTUuidToStr) +# define RTUuidToUtf16 RT_MANGLER(RTUuidToUtf16) +# define RTVfsChainElementDeregisterProvider RT_MANGLER(RTVfsChainElementDeregisterProvider) +# define RTVfsChainElementRegisterProvider RT_MANGLER(RTVfsChainElementRegisterProvider) +# define RTVfsChainIsSpec RT_MANGLER(RTVfsChainIsSpec) +# define RTVfsChainOpenFile RT_MANGLER(RTVfsChainOpenFile) +# define RTVfsChainOpenIoStream RT_MANGLER(RTVfsChainOpenIoStream) +# define RTVfsChainSpecFree RT_MANGLER(RTVfsChainSpecFree) +# define RTVfsChainSpecParse RT_MANGLER(RTVfsChainSpecParse) +# define RTVfsDirRelease RT_MANGLER(RTVfsDirRelease) +# define RTVfsDirRetain RT_MANGLER(RTVfsDirRetain) +# define RTVfsFileFlush RT_MANGLER(RTVfsFileFlush) +# define RTVfsFileFromRTFile RT_MANGLER(RTVfsFileFromRTFile) +# define RTVfsFileGetSize RT_MANGLER(RTVfsFileGetSize) +# define RTVfsFileOpen RT_MANGLER(RTVfsFileOpen) +# define RTVfsFileOpenNormal RT_MANGLER(RTVfsFileOpenNormal) +# define RTVfsFilePoll RT_MANGLER(RTVfsFilePoll) +# define RTVfsFileQueryInfo RT_MANGLER(RTVfsFileQueryInfo) +# define RTVfsFileRead RT_MANGLER(RTVfsFileRead) +# define RTVfsFileReadAt RT_MANGLER(RTVfsFileReadAt) +# define RTVfsFileRelease RT_MANGLER(RTVfsFileRelease) +# define RTVfsFileRetain RT_MANGLER(RTVfsFileRetain) +# define RTVfsFileSeek RT_MANGLER(RTVfsFileSeek) +# define RTVfsFileTell RT_MANGLER(RTVfsFileTell) +# define RTVfsFileToIoStream RT_MANGLER(RTVfsFileToIoStream) +# define RTVfsFileWrite RT_MANGLER(RTVfsFileWrite) +# define RTVfsFileWriteAt RT_MANGLER(RTVfsFileWriteAt) +# define RTVfsFsStrmNext RT_MANGLER(RTVfsFsStrmNext) +# define RTVfsFsStrmQueryInfo RT_MANGLER(RTVfsFsStrmQueryInfo) +# define RTVfsFsStrmRelease RT_MANGLER(RTVfsFsStrmRelease) +# define RTVfsFsStrmRetain RT_MANGLER(RTVfsFsStrmRetain) +# define RTVfsIoStreamToPrivate RT_MANGLER(RTVfsIoStreamToPrivate) +# define RTVfsIoStrmFlush RT_MANGLER(RTVfsIoStrmFlush) +# define RTVfsIoStrmFromRTFile RT_MANGLER(RTVfsIoStrmFromRTFile) +# define RTVfsIoStrmFromStdHandle RT_MANGLER(RTVfsIoStrmFromStdHandle) +# define RTVfsIoStrmIsAtEnd RT_MANGLER(RTVfsIoStrmIsAtEnd) +# define RTVfsIoStrmOpenNormal RT_MANGLER(RTVfsIoStrmOpenNormal) +# define RTVfsIoStrmPoll RT_MANGLER(RTVfsIoStrmPoll) +# define RTVfsIoStrmQueryInfo RT_MANGLER(RTVfsIoStrmQueryInfo) +# define RTVfsIoStrmRead RT_MANGLER(RTVfsIoStrmRead) +# define RTVfsIoStrmReadAt RT_MANGLER(RTVfsIoStrmReadAt) +# define RTVfsIoStrmRelease RT_MANGLER(RTVfsIoStrmRelease) +# define RTVfsIoStrmRetain RT_MANGLER(RTVfsIoStrmRetain) +# define RTVfsIoStrmSgRead RT_MANGLER(RTVfsIoStrmSgRead) +# define RTVfsIoStrmSgWrite RT_MANGLER(RTVfsIoStrmSgWrite) +# define RTVfsIoStrmSkip RT_MANGLER(RTVfsIoStrmSkip) +# define RTVfsIoStrmTell RT_MANGLER(RTVfsIoStrmTell) +# define RTVfsIoStrmToFile RT_MANGLER(RTVfsIoStrmToFile) +# define RTVfsIoStrmValidateUtf8Encoding RT_MANGLER(RTVfsIoStrmValidateUtf8Encoding) +# define RTVfsIoStrmWrite RT_MANGLER(RTVfsIoStrmWrite) +# define RTVfsIoStrmWriteAt RT_MANGLER(RTVfsIoStrmWriteAt) +# define RTVfsIoStrmZeroFill RT_MANGLER(RTVfsIoStrmZeroFill) +# define RTVfsIsRangeInUse RT_MANGLER(RTVfsIsRangeInUse) +# define RTVfsLockAcquireReadSlow RT_MANGLER(RTVfsLockAcquireReadSlow) +# define RTVfsLockAcquireWriteSlow RT_MANGLER(RTVfsLockAcquireWriteSlow) +# define RTVfsLockRelease RT_MANGLER(RTVfsLockRelease) +# define RTVfsLockReleaseReadSlow RT_MANGLER(RTVfsLockReleaseReadSlow) +# define RTVfsLockReleaseWriteSlow RT_MANGLER(RTVfsLockReleaseWriteSlow) +# define RTVfsLockRetain RT_MANGLER(RTVfsLockRetain) +# define RTVfsMemorizeIoStreamAsFile RT_MANGLER(RTVfsMemorizeIoStreamAsFile) +# define RTVfsNew RT_MANGLER(RTVfsNew) +# define RTVfsNewBaseObj RT_MANGLER(RTVfsNewBaseObj) +# define RTVfsNewFile RT_MANGLER(RTVfsNewFile) +# define RTVfsNewFsStream RT_MANGLER(RTVfsNewFsStream) +# define RTVfsNewIoStream RT_MANGLER(RTVfsNewIoStream) +# define RTVfsNewSymlink RT_MANGLER(RTVfsNewSymlink) +# define RTVfsObjFromDir RT_MANGLER(RTVfsObjFromDir) +# define RTVfsObjFromFile RT_MANGLER(RTVfsObjFromFile) +# define RTVfsObjFromFsStream RT_MANGLER(RTVfsObjFromFsStream) +# define RTVfsObjFromIoStream RT_MANGLER(RTVfsObjFromIoStream) +# define RTVfsObjFromSymlink RT_MANGLER(RTVfsObjFromSymlink) +# define RTVfsObjFromVfs RT_MANGLER(RTVfsObjFromVfs) +# define RTVfsObjQueryInfo RT_MANGLER(RTVfsObjQueryInfo) +# define RTVfsObjRelease RT_MANGLER(RTVfsObjRelease) +# define RTVfsObjRetain RT_MANGLER(RTVfsObjRetain) +# define RTVfsObjToDir RT_MANGLER(RTVfsObjToDir) +# define RTVfsObjToFile RT_MANGLER(RTVfsObjToFile) +# define RTVfsObjToFsStream RT_MANGLER(RTVfsObjToFsStream) +# define RTVfsObjToIoStream RT_MANGLER(RTVfsObjToIoStream) +# define RTVfsObjToSymlink RT_MANGLER(RTVfsObjToSymlink) +# define RTVfsObjToVfs RT_MANGLER(RTVfsObjToVfs) +# define RTVfsParsePath RT_MANGLER(RTVfsParsePath) +# define RTVfsParsePathA RT_MANGLER(RTVfsParsePathA) +# define RTVfsParsePathAppend RT_MANGLER(RTVfsParsePathAppend) +# define RTVfsParsePathFree RT_MANGLER(RTVfsParsePathFree) +# define RTVfsRelease RT_MANGLER(RTVfsRelease) +# define RTVfsRetain RT_MANGLER(RTVfsRetain) +# define RTVfsSymlinkQueryInfo RT_MANGLER(RTVfsSymlinkQueryInfo) +# define RTVfsSymlinkRead RT_MANGLER(RTVfsSymlinkRead) +# define RTVfsSymlinkRelease RT_MANGLER(RTVfsSymlinkRelease) +# define RTVfsSymlinkRetain RT_MANGLER(RTVfsSymlinkRetain) +# define RTVfsSymlinkSetMode RT_MANGLER(RTVfsSymlinkSetMode) +# define RTVfsSymlinkSetOwner RT_MANGLER(RTVfsSymlinkSetOwner) +# define RTVfsSymlinkSetTimes RT_MANGLER(RTVfsSymlinkSetTimes) +# define RTVfsUtilDummyPollOne RT_MANGLER(RTVfsUtilDummyPollOne) +# define RTVfsUtilPumpIoStreams RT_MANGLER(RTVfsUtilPumpIoStreams) +# define RTX509PrepareOpenSSL RT_MANGLER(RTX509PrepareOpenSSL) +# define RTX509CertificateVerify RT_MANGLER(RTX509CertificateVerify) +# define RTX509GetErrorDescription RT_MANGLER(RTX509GetErrorDescription) +# define RTZipBlockCompress RT_MANGLER(RTZipBlockCompress) +# define RTZipBlockDecompress RT_MANGLER(RTZipBlockDecompress) +# define RTZipCompCreate RT_MANGLER(RTZipCompCreate) +# define RTZipCompDestroy RT_MANGLER(RTZipCompDestroy) +# define RTZipCompFinish RT_MANGLER(RTZipCompFinish) +# define RTZipCompress RT_MANGLER(RTZipCompress) +# define RTZipDecompCreate RT_MANGLER(RTZipDecompCreate) +# define RTZipDecompDestroy RT_MANGLER(RTZipDecompDestroy) +# define RTZipDecompress RT_MANGLER(RTZipDecompress) +# define RTZipGzipCompressIoStream RT_MANGLER(RTZipGzipCompressIoStream) +# define RTZipGzipDecompressIoStream RT_MANGLER(RTZipGzipDecompressIoStream) +# define RTZipPkzipFsStreamFromIoStream RT_MANGLER(RTZipPkzipFsStreamFromIoStream) +# define RTZipPkzipMemDecompress RT_MANGLER(RTZipPkzipMemDecompress) +# define RTZipTarCmd RT_MANGLER(RTZipTarCmd) +# define RTZipUnzipCmd RT_MANGLER(RTZipUnzipCmd) +# define RTZipTarFsStreamFromIoStream RT_MANGLER(RTZipTarFsStreamFromIoStream) +# define RTZipXarFsStreamFromIoStream RT_MANGLER(RTZipXarFsStreamFromIoStream) + +/* sort/merge into the above later: */ +# define RTAsn1ContentAllocZ RT_MANGLER(RTAsn1ContentAllocZ) +# define RTAsn1ContentDup RT_MANGLER(RTAsn1ContentDup) +# define RTAsn1ContentFree RT_MANGLER(RTAsn1ContentFree) +# define RTAsn1ContentReallocZ RT_MANGLER(RTAsn1ContentReallocZ) +# define RTAsn1ContextTagN_Clone RT_MANGLER(RTAsn1ContextTagN_Clone) +# define RTAsn1ContextTagN_Init RT_MANGLER(RTAsn1ContextTagN_Init) +# define RTAsn1Dummy_InitEx RT_MANGLER(RTAsn1Dummy_InitEx) +# define RTAsn1MemAllocZ RT_MANGLER(RTAsn1MemAllocZ) +# define RTAsn1MemDup RT_MANGLER(RTAsn1MemDup) +# define RTAsn1MemFree RT_MANGLER(RTAsn1MemFree) +# define RTAsn1MemGrowArray RT_MANGLER(RTAsn1MemGrowArray) +# define RTAsn1MemInitAllocation RT_MANGLER(RTAsn1MemInitAllocation) +# define RTAsn1SeqOfCore_Clone RT_MANGLER(RTAsn1SeqOfCore_Clone) +# define RTAsn1SeqOfCore_Init RT_MANGLER(RTAsn1SeqOfCore_Init) +# define RTAsn1SequenceCore_Clone RT_MANGLER(RTAsn1SequenceCore_Clone) +# define RTAsn1SequenceCore_Init RT_MANGLER(RTAsn1SequenceCore_Init) +# define RTAsn1SetCore_Clone RT_MANGLER(RTAsn1SetCore_Clone) +# define RTAsn1SetCore_Init RT_MANGLER(RTAsn1SetCore_Init) +# define RTAsn1SetOfCore_Clone RT_MANGLER(RTAsn1SetOfCore_Clone) +# define RTAsn1SetOfCore_Init RT_MANGLER(RTAsn1SetOfCore_Init) +# define RTAsn1VtCheckSanity RT_MANGLER(RTAsn1VtCheckSanity) +# define RTAsn1VtClone RT_MANGLER(RTAsn1VtClone) +# define RTAsn1VtCompare RT_MANGLER(RTAsn1VtCompare) +# define RTAsn1VtDeepEnum RT_MANGLER(RTAsn1VtDeepEnum) +# define RTAsn1VtDelete RT_MANGLER(RTAsn1VtDelete) +# define RTAsn1CursorCheckEnd RT_MANGLER(RTAsn1CursorCheckEnd) +# define RTAsn1CursorGetBitString RT_MANGLER(RTAsn1CursorGetBitString) +# define RTAsn1CursorGetBitStringEx RT_MANGLER(RTAsn1CursorGetBitStringEx) +# define RTAsn1CursorGetBmpString RT_MANGLER(RTAsn1CursorGetBmpString) +# define RTAsn1CursorGetBoolean RT_MANGLER(RTAsn1CursorGetBoolean) +# define RTAsn1CursorGetContextTagNCursor RT_MANGLER(RTAsn1CursorGetContextTagNCursor) +# define RTAsn1CursorGetCore RT_MANGLER(RTAsn1CursorGetCore) +# define RTAsn1CursorGetDynType RT_MANGLER(RTAsn1CursorGetDynType) +# define RTAsn1CursorGetIa5String RT_MANGLER(RTAsn1CursorGetIa5String) +# define RTAsn1CursorGetInteger RT_MANGLER(RTAsn1CursorGetInteger) +# define RTAsn1CursorGetNull RT_MANGLER(RTAsn1CursorGetNull) +# define RTAsn1CursorGetObjId RT_MANGLER(RTAsn1CursorGetObjId) +# define RTAsn1CursorGetOctetString RT_MANGLER(RTAsn1CursorGetOctetString) +# define RTAsn1CursorGetSequenceCursor RT_MANGLER(RTAsn1CursorGetSequenceCursor) +# define RTAsn1CursorGetSetCursor RT_MANGLER(RTAsn1CursorGetSetCursor) +# define RTAsn1CursorGetString RT_MANGLER(RTAsn1CursorGetString) +# define RTAsn1CursorGetTime RT_MANGLER(RTAsn1CursorGetTime) +# define RTAsn1CursorGetUtf8String RT_MANGLER(RTAsn1CursorGetUtf8String) +# define RTAsn1CursorInitAllocation RT_MANGLER(RTAsn1CursorInitAllocation) +# define RTAsn1CursorInitPrimary RT_MANGLER(RTAsn1CursorInitPrimary) +# define RTAsn1CursorInitSubFromCore RT_MANGLER(RTAsn1CursorInitSubFromCore) +# define RTAsn1CursorIsNextEx RT_MANGLER(RTAsn1CursorIsNextEx) +# define RTAsn1CursorMatchTagClassFlagsEx RT_MANGLER(RTAsn1CursorMatchTagClassFlagsEx) +# define RTAsn1CursorPeek RT_MANGLER(RTAsn1CursorPeek) +# define RTAsn1CursorReadHdr RT_MANGLER(RTAsn1CursorReadHdr) +# define RTAsn1CursorSetInfo RT_MANGLER(RTAsn1CursorSetInfo) +# define RTAsn1CursorSetInfoV RT_MANGLER(RTAsn1CursorSetInfoV) +# define RTAsn1Dump RT_MANGLER(RTAsn1Dump) +# define RTAsn1EncodePrepare RT_MANGLER(RTAsn1EncodePrepare) +# define RTAsn1EncodeRecalcHdrSize RT_MANGLER(RTAsn1EncodeRecalcHdrSize) +# define RTAsn1EncodeWrite RT_MANGLER(RTAsn1EncodeWrite) +# define RTAsnEncodeWriteHeader RT_MANGLER(RTAsnEncodeWriteHeader) +# define RTAsn1BitString_CheckSanity RT_MANGLER(RTAsn1BitString_CheckSanity) +# define RTAsn1BitString_Clone RT_MANGLER(RTAsn1BitString_Clone) +# define RTAsn1BitString_Compare RT_MANGLER(RTAsn1BitString_Compare) +# define RTAsn1BitString_Delete RT_MANGLER(RTAsn1BitString_Delete) +# define RTAsn1BitString_Enum RT_MANGLER(RTAsn1BitString_Enum) +# define RTAsn1BitString_GetAsUInt64 RT_MANGLER(RTAsn1BitString_GetAsUInt64) +# define RTAsn1BitString_Init RT_MANGLER(RTAsn1BitString_Init) +# define RTAsn1SeqOfBitStrings_CheckSanity RT_MANGLER(RTAsn1SeqOfBitStrings_CheckSanity) +# define RTAsn1SeqOfBitStrings_Clone RT_MANGLER(RTAsn1SeqOfBitStrings_Clone) +# define RTAsn1SeqOfBitStrings_Compare RT_MANGLER(RTAsn1SeqOfBitStrings_Compare) +# define RTAsn1SeqOfBitStrings_Delete RT_MANGLER(RTAsn1SeqOfBitStrings_Delete) +# define RTAsn1SeqOfBitStrings_Enum RT_MANGLER(RTAsn1SeqOfBitStrings_Enum) +# define RTAsn1SeqOfBitStrings_Init RT_MANGLER(RTAsn1SeqOfBitStrings_Init) +# define RTAsn1SetOfBitStrings_CheckSanity RT_MANGLER(RTAsn1SetOfBitStrings_CheckSanity) +# define RTAsn1SetOfBitStrings_Clone RT_MANGLER(RTAsn1SetOfBitStrings_Clone) +# define RTAsn1SetOfBitStrings_Compare RT_MANGLER(RTAsn1SetOfBitStrings_Compare) +# define RTAsn1SetOfBitStrings_Delete RT_MANGLER(RTAsn1SetOfBitStrings_Delete) +# define RTAsn1SetOfBitStrings_Enum RT_MANGLER(RTAsn1SetOfBitStrings_Enum) +# define RTAsn1SetOfBitStrings_Init RT_MANGLER(RTAsn1SetOfBitStrings_Init) +# define RTAsn1BitString_DecodeAsn1 RT_MANGLER(RTAsn1BitString_DecodeAsn1) +# define RTAsn1BitString_DecodeAsn1Ex RT_MANGLER(RTAsn1BitString_DecodeAsn1Ex) +# define RTAsn1SeqOfBitStrings_DecodeAsn1 RT_MANGLER(RTAsn1SeqOfBitStrings_DecodeAsn1) +# define RTAsn1SetOfBitStrings_DecodeAsn1 RT_MANGLER(RTAsn1SetOfBitStrings_DecodeAsn1) +# define RTAsn1Boolean_CheckSanity RT_MANGLER(RTAsn1Boolean_CheckSanity) +# define RTAsn1Boolean_Clone RT_MANGLER(RTAsn1Boolean_Clone) +# define RTAsn1Boolean_Compare RT_MANGLER(RTAsn1Boolean_Compare) +# define RTAsn1Boolean_Delete RT_MANGLER(RTAsn1Boolean_Delete) +# define RTAsn1Boolean_Enum RT_MANGLER(RTAsn1Boolean_Enum) +# define RTAsn1Boolean_Init RT_MANGLER(RTAsn1Boolean_Init) +# define RTAsn1Boolean_InitDefault RT_MANGLER(RTAsn1Boolean_InitDefault) +# define RTAsn1Boolean_Set RT_MANGLER(RTAsn1Boolean_Set) +# define RTAsn1SeqOfBooleans_CheckSanity RT_MANGLER(RTAsn1SeqOfBooleans_CheckSanity) +# define RTAsn1SeqOfBooleans_Clone RT_MANGLER(RTAsn1SeqOfBooleans_Clone) +# define RTAsn1SeqOfBooleans_Compare RT_MANGLER(RTAsn1SeqOfBooleans_Compare) +# define RTAsn1SeqOfBooleans_Delete RT_MANGLER(RTAsn1SeqOfBooleans_Delete) +# define RTAsn1SeqOfBooleans_Enum RT_MANGLER(RTAsn1SeqOfBooleans_Enum) +# define RTAsn1SeqOfBooleans_Init RT_MANGLER(RTAsn1SeqOfBooleans_Init) +# define RTAsn1SetOfBooleans_CheckSanity RT_MANGLER(RTAsn1SetOfBooleans_CheckSanity) +# define RTAsn1SetOfBooleans_Clone RT_MANGLER(RTAsn1SetOfBooleans_Clone) +# define RTAsn1SetOfBooleans_Compare RT_MANGLER(RTAsn1SetOfBooleans_Compare) +# define RTAsn1SetOfBooleans_Delete RT_MANGLER(RTAsn1SetOfBooleans_Delete) +# define RTAsn1SetOfBooleans_Enum RT_MANGLER(RTAsn1SetOfBooleans_Enum) +# define RTAsn1SetOfBooleans_Init RT_MANGLER(RTAsn1SetOfBooleans_Init) +# define RTAsn1Boolean_DecodeAsn1 RT_MANGLER(RTAsn1Boolean_DecodeAsn1) +# define RTAsn1SeqOfBooleans_DecodeAsn1 RT_MANGLER(RTAsn1SeqOfBooleans_DecodeAsn1) +# define RTAsn1SetOfBooleans_DecodeAsn1 RT_MANGLER(RTAsn1SetOfBooleans_DecodeAsn1) +# define RTAsn1Core_ChangeTag RT_MANGLER(RTAsn1Core_ChangeTag) +# define RTAsn1Core_CheckSanity RT_MANGLER(RTAsn1Core_CheckSanity) +# define RTAsn1Core_Clone RT_MANGLER(RTAsn1Core_Clone) +# define RTAsn1Core_CloneContent RT_MANGLER(RTAsn1Core_CloneContent) +# define RTAsn1Core_CloneNoContent RT_MANGLER(RTAsn1Core_CloneNoContent) +# define RTAsn1Core_Compare RT_MANGLER(RTAsn1Core_Compare) +# define RTAsn1Core_CompareEx RT_MANGLER(RTAsn1Core_CompareEx) +# define RTAsn1Core_Delete RT_MANGLER(RTAsn1Core_Delete) +# define RTAsn1Core_Enum RT_MANGLER(RTAsn1Core_Enum) +# define RTAsn1Core_Init RT_MANGLER(RTAsn1Core_Init) +# define RTAsn1Core_InitDefault RT_MANGLER(RTAsn1Core_InitDefault) +# define RTAsn1Core_InitEx RT_MANGLER(RTAsn1Core_InitEx) +# define RTAsn1Core_ResetImplict RT_MANGLER(RTAsn1Core_ResetImplict) +# define RTAsn1Core_SetTagAndFlags RT_MANGLER(RTAsn1Core_SetTagAndFlags) +# define RTAsn1SeqOfCores_CheckSanity RT_MANGLER(RTAsn1SeqOfCores_CheckSanity) +# define RTAsn1SeqOfCores_Clone RT_MANGLER(RTAsn1SeqOfCores_Clone) +# define RTAsn1SeqOfCores_Compare RT_MANGLER(RTAsn1SeqOfCores_Compare) +# define RTAsn1SeqOfCores_Delete RT_MANGLER(RTAsn1SeqOfCores_Delete) +# define RTAsn1SeqOfCores_Enum RT_MANGLER(RTAsn1SeqOfCores_Enum) +# define RTAsn1SeqOfCores_Init RT_MANGLER(RTAsn1SeqOfCores_Init) +# define RTAsn1SetOfCores_CheckSanity RT_MANGLER(RTAsn1SetOfCores_CheckSanity) +# define RTAsn1SetOfCores_Clone RT_MANGLER(RTAsn1SetOfCores_Clone) +# define RTAsn1SetOfCores_Compare RT_MANGLER(RTAsn1SetOfCores_Compare) +# define RTAsn1SetOfCores_Delete RT_MANGLER(RTAsn1SetOfCores_Delete) +# define RTAsn1SetOfCores_Enum RT_MANGLER(RTAsn1SetOfCores_Enum) +# define RTAsn1SetOfCores_Init RT_MANGLER(RTAsn1SetOfCores_Init) +# define RTAsn1Core_DecodeAsn1 RT_MANGLER(RTAsn1Core_DecodeAsn1) +# define RTAsn1SeqOfCores_DecodeAsn1 RT_MANGLER(RTAsn1SeqOfCores_DecodeAsn1) +# define RTAsn1SetOfCores_DecodeAsn1 RT_MANGLER(RTAsn1SetOfCores_DecodeAsn1) +# define RTAsn1DynType_CheckSanity RT_MANGLER(RTAsn1DynType_CheckSanity) +# define RTAsn1DynType_Clone RT_MANGLER(RTAsn1DynType_Clone) +# define RTAsn1DynType_Compare RT_MANGLER(RTAsn1DynType_Compare) +# define RTAsn1DynType_Delete RT_MANGLER(RTAsn1DynType_Delete) +# define RTAsn1DynType_Enum RT_MANGLER(RTAsn1DynType_Enum) +# define RTAsn1DynType_Init RT_MANGLER(RTAsn1DynType_Init) +# define RTAsn1DynType_DecodeAsn1 RT_MANGLER(RTAsn1DynType_DecodeAsn1) +# define RTAsn1Integer_CheckSanity RT_MANGLER(RTAsn1Integer_CheckSanity) +# define RTAsn1Integer_Clone RT_MANGLER(RTAsn1Integer_Clone) +# define RTAsn1Integer_Compare RT_MANGLER(RTAsn1Integer_Compare) +# define RTAsn1Integer_Delete RT_MANGLER(RTAsn1Integer_Delete) +# define RTAsn1Integer_Enum RT_MANGLER(RTAsn1Integer_Enum) +# define RTAsn1Integer_FromBigNum RT_MANGLER(RTAsn1Integer_FromBigNum) +# define RTAsn1Integer_Init RT_MANGLER(RTAsn1Integer_Init) +# define RTAsn1Integer_InitDefault RT_MANGLER(RTAsn1Integer_InitDefault) +# define RTAsn1Integer_InitU64 RT_MANGLER(RTAsn1Integer_InitU64) +# define RTAsn1Integer_ToBigNum RT_MANGLER(RTAsn1Integer_ToBigNum) +# define RTAsn1Integer_UnsignedCompare RT_MANGLER(RTAsn1Integer_UnsignedCompare) +# define RTAsn1Integer_UnsignedCompareWithU32 RT_MANGLER(RTAsn1Integer_UnsignedCompareWithU32) +# define RTAsn1Integer_UnsignedCompareWithU64 RT_MANGLER(RTAsn1Integer_UnsignedCompareWithU64) +# define RTAsn1Integer_UnsignedLastBit RT_MANGLER(RTAsn1Integer_UnsignedLastBit) +# define RTAsn1SeqOfIntegers_CheckSanity RT_MANGLER(RTAsn1SeqOfIntegers_CheckSanity) +# define RTAsn1SeqOfIntegers_Clone RT_MANGLER(RTAsn1SeqOfIntegers_Clone) +# define RTAsn1SeqOfIntegers_Compare RT_MANGLER(RTAsn1SeqOfIntegers_Compare) +# define RTAsn1SeqOfIntegers_Delete RT_MANGLER(RTAsn1SeqOfIntegers_Delete) +# define RTAsn1SeqOfIntegers_Enum RT_MANGLER(RTAsn1SeqOfIntegers_Enum) +# define RTAsn1SeqOfIntegers_Init RT_MANGLER(RTAsn1SeqOfIntegers_Init) +# define RTAsn1SetOfIntegers_CheckSanity RT_MANGLER(RTAsn1SetOfIntegers_CheckSanity) +# define RTAsn1SetOfIntegers_Clone RT_MANGLER(RTAsn1SetOfIntegers_Clone) +# define RTAsn1SetOfIntegers_Compare RT_MANGLER(RTAsn1SetOfIntegers_Compare) +# define RTAsn1SetOfIntegers_Delete RT_MANGLER(RTAsn1SetOfIntegers_Delete) +# define RTAsn1SetOfIntegers_Enum RT_MANGLER(RTAsn1SetOfIntegers_Enum) +# define RTAsn1SetOfIntegers_Init RT_MANGLER(RTAsn1SetOfIntegers_Init) +# define RTAsn1Integer_DecodeAsn1 RT_MANGLER(RTAsn1Integer_DecodeAsn1) +# define RTAsn1SeqOfIntegers_DecodeAsn1 RT_MANGLER(RTAsn1SeqOfIntegers_DecodeAsn1) +# define RTAsn1SetOfIntegers_DecodeAsn1 RT_MANGLER(RTAsn1SetOfIntegers_DecodeAsn1) +# define RTAsn1Null_CheckSanity RT_MANGLER(RTAsn1Null_CheckSanity) +# define RTAsn1Null_Clone RT_MANGLER(RTAsn1Null_Clone) +# define RTAsn1Null_Compare RT_MANGLER(RTAsn1Null_Compare) +# define RTAsn1Null_Delete RT_MANGLER(RTAsn1Null_Delete) +# define RTAsn1Null_Enum RT_MANGLER(RTAsn1Null_Enum) +# define RTAsn1Null_Init RT_MANGLER(RTAsn1Null_Init) +# define RTAsn1Null_DecodeAsn1 RT_MANGLER(RTAsn1Null_DecodeAsn1) +# define RTAsn1ObjIdCountComponents RT_MANGLER(RTAsn1ObjIdCountComponents) +# define RTAsn1ObjIdGetComponentsAsUInt32 RT_MANGLER(RTAsn1ObjIdGetComponentsAsUInt32) +# define RTAsn1ObjIdGetLastComponentsAsUInt32 RT_MANGLER(RTAsn1ObjIdGetLastComponentsAsUInt32) +# define RTAsn1ObjId_CheckSanity RT_MANGLER(RTAsn1ObjId_CheckSanity) +# define RTAsn1ObjId_Clone RT_MANGLER(RTAsn1ObjId_Clone) +# define RTAsn1ObjId_Compare RT_MANGLER(RTAsn1ObjId_Compare) +# define RTAsn1ObjId_CompareWithString RT_MANGLER(RTAsn1ObjId_CompareWithString) +# define RTAsn1ObjId_Delete RT_MANGLER(RTAsn1ObjId_Delete) +# define RTAsn1ObjId_Enum RT_MANGLER(RTAsn1ObjId_Enum) +# define RTAsn1ObjId_Init RT_MANGLER(RTAsn1ObjId_Init) +# define RTAsn1ObjId_InitFromString RT_MANGLER(RTAsn1ObjId_InitFromString) +# define RTAsn1ObjId_StartsWith RT_MANGLER(RTAsn1ObjId_StartsWith) +# define RTAsn1SeqOfObjIds_CheckSanity RT_MANGLER(RTAsn1SeqOfObjIds_CheckSanity) +# define RTAsn1SeqOfObjIds_Clone RT_MANGLER(RTAsn1SeqOfObjIds_Clone) +# define RTAsn1SeqOfObjIds_Compare RT_MANGLER(RTAsn1SeqOfObjIds_Compare) +# define RTAsn1SeqOfObjIds_Delete RT_MANGLER(RTAsn1SeqOfObjIds_Delete) +# define RTAsn1SeqOfObjIds_Enum RT_MANGLER(RTAsn1SeqOfObjIds_Enum) +# define RTAsn1SeqOfObjIds_Init RT_MANGLER(RTAsn1SeqOfObjIds_Init) +# define RTAsn1SetOfObjIds_CheckSanity RT_MANGLER(RTAsn1SetOfObjIds_CheckSanity) +# define RTAsn1SetOfObjIds_Clone RT_MANGLER(RTAsn1SetOfObjIds_Clone) +# define RTAsn1SetOfObjIds_Compare RT_MANGLER(RTAsn1SetOfObjIds_Compare) +# define RTAsn1SetOfObjIds_Delete RT_MANGLER(RTAsn1SetOfObjIds_Delete) +# define RTAsn1SetOfObjIds_Enum RT_MANGLER(RTAsn1SetOfObjIds_Enum) +# define RTAsn1SetOfObjIds_Init RT_MANGLER(RTAsn1SetOfObjIds_Init) +# define RTAsn1ObjId_DecodeAsn1 RT_MANGLER(RTAsn1ObjId_DecodeAsn1) +# define RTAsn1SeqOfObjIds_DecodeAsn1 RT_MANGLER(RTAsn1SeqOfObjIds_DecodeAsn1) +# define RTAsn1SetOfObjIds_DecodeAsn1 RT_MANGLER(RTAsn1SetOfObjIds_DecodeAsn1) +# define RTAsn1OctetString_CheckSanity RT_MANGLER(RTAsn1OctetString_CheckSanity) +# define RTAsn1OctetString_Clone RT_MANGLER(RTAsn1OctetString_Clone) +# define RTAsn1OctetString_Compare RT_MANGLER(RTAsn1OctetString_Compare) +# define RTAsn1OctetString_Delete RT_MANGLER(RTAsn1OctetString_Delete) +# define RTAsn1OctetString_Enum RT_MANGLER(RTAsn1OctetString_Enum) +# define RTAsn1OctetString_Init RT_MANGLER(RTAsn1OctetString_Init) +# define RTAsn1SeqOfOctetStrings_CheckSanity RT_MANGLER(RTAsn1SeqOfOctetStrings_CheckSanity) +# define RTAsn1SeqOfOctetStrings_Clone RT_MANGLER(RTAsn1SeqOfOctetStrings_Clone) +# define RTAsn1SeqOfOctetStrings_Compare RT_MANGLER(RTAsn1SeqOfOctetStrings_Compare) +# define RTAsn1SeqOfOctetStrings_Delete RT_MANGLER(RTAsn1SeqOfOctetStrings_Delete) +# define RTAsn1SeqOfOctetStrings_Enum RT_MANGLER(RTAsn1SeqOfOctetStrings_Enum) +# define RTAsn1SeqOfOctetStrings_Init RT_MANGLER(RTAsn1SeqOfOctetStrings_Init) +# define RTAsn1SetOfOctetStrings_CheckSanity RT_MANGLER(RTAsn1SetOfOctetStrings_CheckSanity) +# define RTAsn1SetOfOctetStrings_Clone RT_MANGLER(RTAsn1SetOfOctetStrings_Clone) +# define RTAsn1SetOfOctetStrings_Compare RT_MANGLER(RTAsn1SetOfOctetStrings_Compare) +# define RTAsn1SetOfOctetStrings_Delete RT_MANGLER(RTAsn1SetOfOctetStrings_Delete) +# define RTAsn1SetOfOctetStrings_Enum RT_MANGLER(RTAsn1SetOfOctetStrings_Enum) +# define RTAsn1SetOfOctetStrings_Init RT_MANGLER(RTAsn1SetOfOctetStrings_Init) +# define RTAsn1OctetString_DecodeAsn1 RT_MANGLER(RTAsn1OctetString_DecodeAsn1) +# define RTAsn1SeqOfOctetStrings_DecodeAsn1 RT_MANGLER(RTAsn1SeqOfOctetStrings_DecodeAsn1) +# define RTAsn1SetOfOctetStrings_DecodeAsn1 RT_MANGLER(RTAsn1SetOfOctetStrings_DecodeAsn1) +# define RTAsn1BmpString_CheckSanity RT_MANGLER(RTAsn1BmpString_CheckSanity) +# define RTAsn1BmpString_Clone RT_MANGLER(RTAsn1BmpString_Clone) +# define RTAsn1BmpString_Compare RT_MANGLER(RTAsn1BmpString_Compare) +# define RTAsn1BmpString_Delete RT_MANGLER(RTAsn1BmpString_Delete) +# define RTAsn1BmpString_Enum RT_MANGLER(RTAsn1BmpString_Enum) +# define RTAsn1BmpString_Init RT_MANGLER(RTAsn1BmpString_Init) +# define RTAsn1GeneralString_CheckSanity RT_MANGLER(RTAsn1GeneralString_CheckSanity) +# define RTAsn1GeneralString_Clone RT_MANGLER(RTAsn1GeneralString_Clone) +# define RTAsn1GeneralString_Compare RT_MANGLER(RTAsn1GeneralString_Compare) +# define RTAsn1GeneralString_Delete RT_MANGLER(RTAsn1GeneralString_Delete) +# define RTAsn1GeneralString_Enum RT_MANGLER(RTAsn1GeneralString_Enum) +# define RTAsn1GeneralString_Init RT_MANGLER(RTAsn1GeneralString_Init) +# define RTAsn1GraphicString_CheckSanity RT_MANGLER(RTAsn1GraphicString_CheckSanity) +# define RTAsn1GraphicString_Clone RT_MANGLER(RTAsn1GraphicString_Clone) +# define RTAsn1GraphicString_Compare RT_MANGLER(RTAsn1GraphicString_Compare) +# define RTAsn1GraphicString_Delete RT_MANGLER(RTAsn1GraphicString_Delete) +# define RTAsn1GraphicString_Enum RT_MANGLER(RTAsn1GraphicString_Enum) +# define RTAsn1GraphicString_Init RT_MANGLER(RTAsn1GraphicString_Init) +# define RTAsn1Ia5String_CheckSanity RT_MANGLER(RTAsn1Ia5String_CheckSanity) +# define RTAsn1Ia5String_Clone RT_MANGLER(RTAsn1Ia5String_Clone) +# define RTAsn1Ia5String_Compare RT_MANGLER(RTAsn1Ia5String_Compare) +# define RTAsn1Ia5String_Delete RT_MANGLER(RTAsn1Ia5String_Delete) +# define RTAsn1Ia5String_Enum RT_MANGLER(RTAsn1Ia5String_Enum) +# define RTAsn1Ia5String_Init RT_MANGLER(RTAsn1Ia5String_Init) +# define RTAsn1NumericString_CheckSanity RT_MANGLER(RTAsn1NumericString_CheckSanity) +# define RTAsn1NumericString_Clone RT_MANGLER(RTAsn1NumericString_Clone) +# define RTAsn1NumericString_Compare RT_MANGLER(RTAsn1NumericString_Compare) +# define RTAsn1NumericString_Delete RT_MANGLER(RTAsn1NumericString_Delete) +# define RTAsn1NumericString_Enum RT_MANGLER(RTAsn1NumericString_Enum) +# define RTAsn1NumericString_Init RT_MANGLER(RTAsn1NumericString_Init) +# define RTAsn1PrintableString_CheckSanity RT_MANGLER(RTAsn1PrintableString_CheckSanity) +# define RTAsn1PrintableString_Clone RT_MANGLER(RTAsn1PrintableString_Clone) +# define RTAsn1PrintableString_Compare RT_MANGLER(RTAsn1PrintableString_Compare) +# define RTAsn1PrintableString_Delete RT_MANGLER(RTAsn1PrintableString_Delete) +# define RTAsn1PrintableString_Enum RT_MANGLER(RTAsn1PrintableString_Enum) +# define RTAsn1PrintableString_Init RT_MANGLER(RTAsn1PrintableString_Init) +# define RTAsn1SeqOfStrings_CheckSanity RT_MANGLER(RTAsn1SeqOfStrings_CheckSanity) +# define RTAsn1SeqOfStrings_Clone RT_MANGLER(RTAsn1SeqOfStrings_Clone) +# define RTAsn1SeqOfStrings_Compare RT_MANGLER(RTAsn1SeqOfStrings_Compare) +# define RTAsn1SeqOfStrings_Delete RT_MANGLER(RTAsn1SeqOfStrings_Delete) +# define RTAsn1SeqOfStrings_Enum RT_MANGLER(RTAsn1SeqOfStrings_Enum) +# define RTAsn1SeqOfStrings_Init RT_MANGLER(RTAsn1SeqOfStrings_Init) +# define RTAsn1SetOfStrings_CheckSanity RT_MANGLER(RTAsn1SetOfStrings_CheckSanity) +# define RTAsn1SetOfStrings_Clone RT_MANGLER(RTAsn1SetOfStrings_Clone) +# define RTAsn1SetOfStrings_Compare RT_MANGLER(RTAsn1SetOfStrings_Compare) +# define RTAsn1SetOfStrings_Delete RT_MANGLER(RTAsn1SetOfStrings_Delete) +# define RTAsn1SetOfStrings_Enum RT_MANGLER(RTAsn1SetOfStrings_Enum) +# define RTAsn1SetOfStrings_Init RT_MANGLER(RTAsn1SetOfStrings_Init) +# define RTAsn1String_CheckSanity RT_MANGLER(RTAsn1String_CheckSanity) +# define RTAsn1String_Clone RT_MANGLER(RTAsn1String_Clone) +# define RTAsn1String_Compare RT_MANGLER(RTAsn1String_Compare) +# define RTAsn1String_CompareEx RT_MANGLER(RTAsn1String_CompareEx) +# define RTAsn1String_CompareWithString RT_MANGLER(RTAsn1String_CompareWithString) +# define RTAsn1String_Delete RT_MANGLER(RTAsn1String_Delete) +# define RTAsn1String_Enum RT_MANGLER(RTAsn1String_Enum) +# define RTAsn1String_Init RT_MANGLER(RTAsn1String_Init) +# define RTAsn1String_InitEx RT_MANGLER(RTAsn1String_InitEx) +# define RTAsn1String_InitWithValue RT_MANGLER(RTAsn1String_InitWithValue) +# define RTAsn1String_QueryUtf8 RT_MANGLER(RTAsn1String_QueryUtf8) +# define RTAsn1String_QueryUtf8Len RT_MANGLER(RTAsn1String_QueryUtf8Len) +# define RTAsn1String_RecodeAsUtf8 RT_MANGLER(RTAsn1String_RecodeAsUtf8) +# define RTAsn1T61String_CheckSanity RT_MANGLER(RTAsn1T61String_CheckSanity) +# define RTAsn1T61String_Clone RT_MANGLER(RTAsn1T61String_Clone) +# define RTAsn1T61String_Compare RT_MANGLER(RTAsn1T61String_Compare) +# define RTAsn1T61String_Delete RT_MANGLER(RTAsn1T61String_Delete) +# define RTAsn1T61String_Enum RT_MANGLER(RTAsn1T61String_Enum) +# define RTAsn1T61String_Init RT_MANGLER(RTAsn1T61String_Init) +# define RTAsn1UniversalString_CheckSanity RT_MANGLER(RTAsn1UniversalString_CheckSanity) +# define RTAsn1UniversalString_Clone RT_MANGLER(RTAsn1UniversalString_Clone) +# define RTAsn1UniversalString_Compare RT_MANGLER(RTAsn1UniversalString_Compare) +# define RTAsn1UniversalString_Delete RT_MANGLER(RTAsn1UniversalString_Delete) +# define RTAsn1UniversalString_Enum RT_MANGLER(RTAsn1UniversalString_Enum) +# define RTAsn1UniversalString_Init RT_MANGLER(RTAsn1UniversalString_Init) +# define RTAsn1Utf8String_CheckSanity RT_MANGLER(RTAsn1Utf8String_CheckSanity) +# define RTAsn1Utf8String_Clone RT_MANGLER(RTAsn1Utf8String_Clone) +# define RTAsn1Utf8String_Compare RT_MANGLER(RTAsn1Utf8String_Compare) +# define RTAsn1Utf8String_Delete RT_MANGLER(RTAsn1Utf8String_Delete) +# define RTAsn1Utf8String_Enum RT_MANGLER(RTAsn1Utf8String_Enum) +# define RTAsn1Utf8String_Init RT_MANGLER(RTAsn1Utf8String_Init) +# define RTAsn1VisibleString_CheckSanity RT_MANGLER(RTAsn1VisibleString_CheckSanity) +# define RTAsn1VisibleString_Clone RT_MANGLER(RTAsn1VisibleString_Clone) +# define RTAsn1VisibleString_Compare RT_MANGLER(RTAsn1VisibleString_Compare) +# define RTAsn1VisibleString_Delete RT_MANGLER(RTAsn1VisibleString_Delete) +# define RTAsn1VisibleString_Enum RT_MANGLER(RTAsn1VisibleString_Enum) +# define RTAsn1VisibleString_Init RT_MANGLER(RTAsn1VisibleString_Init) +# define RTAsn1BmpString_DecodeAsn1 RT_MANGLER(RTAsn1BmpString_DecodeAsn1) +# define RTAsn1GeneralString_DecodeAsn1 RT_MANGLER(RTAsn1GeneralString_DecodeAsn1) +# define RTAsn1GraphicString_DecodeAsn1 RT_MANGLER(RTAsn1GraphicString_DecodeAsn1) +# define RTAsn1Ia5String_DecodeAsn1 RT_MANGLER(RTAsn1Ia5String_DecodeAsn1) +# define RTAsn1NumericString_DecodeAsn1 RT_MANGLER(RTAsn1NumericString_DecodeAsn1) +# define RTAsn1PrintableString_DecodeAsn1 RT_MANGLER(RTAsn1PrintableString_DecodeAsn1) +# define RTAsn1SeqOfStrings_DecodeAsn1 RT_MANGLER(RTAsn1SeqOfStrings_DecodeAsn1) +# define RTAsn1SetOfStrings_DecodeAsn1 RT_MANGLER(RTAsn1SetOfStrings_DecodeAsn1) +# define RTAsn1String_DecodeAsn1 RT_MANGLER(RTAsn1String_DecodeAsn1) +# define RTAsn1T61String_DecodeAsn1 RT_MANGLER(RTAsn1T61String_DecodeAsn1) +# define RTAsn1UniversalString_DecodeAsn1 RT_MANGLER(RTAsn1UniversalString_DecodeAsn1) +# define RTAsn1Utf8String_DecodeAsn1 RT_MANGLER(RTAsn1Utf8String_DecodeAsn1) +# define RTAsn1VisibleString_DecodeAsn1 RT_MANGLER(RTAsn1VisibleString_DecodeAsn1) +# define RTAsn1GeneralizedTime_CheckSanity RT_MANGLER(RTAsn1GeneralizedTime_CheckSanity) +# define RTAsn1GeneralizedTime_Clone RT_MANGLER(RTAsn1GeneralizedTime_Clone) +# define RTAsn1GeneralizedTime_Compare RT_MANGLER(RTAsn1GeneralizedTime_Compare) +# define RTAsn1GeneralizedTime_Delete RT_MANGLER(RTAsn1GeneralizedTime_Delete) +# define RTAsn1GeneralizedTime_Enum RT_MANGLER(RTAsn1GeneralizedTime_Enum) +# define RTAsn1GeneralizedTime_Init RT_MANGLER(RTAsn1GeneralizedTime_Init) +# define RTAsn1SeqOfTimes_CheckSanity RT_MANGLER(RTAsn1SeqOfTimes_CheckSanity) +# define RTAsn1SeqOfTimes_Clone RT_MANGLER(RTAsn1SeqOfTimes_Clone) +# define RTAsn1SeqOfTimes_Compare RT_MANGLER(RTAsn1SeqOfTimes_Compare) +# define RTAsn1SeqOfTimes_Delete RT_MANGLER(RTAsn1SeqOfTimes_Delete) +# define RTAsn1SeqOfTimes_Enum RT_MANGLER(RTAsn1SeqOfTimes_Enum) +# define RTAsn1SeqOfTimes_Init RT_MANGLER(RTAsn1SeqOfTimes_Init) +# define RTAsn1SetOfTimes_CheckSanity RT_MANGLER(RTAsn1SetOfTimes_CheckSanity) +# define RTAsn1SetOfTimes_Clone RT_MANGLER(RTAsn1SetOfTimes_Clone) +# define RTAsn1SetOfTimes_Compare RT_MANGLER(RTAsn1SetOfTimes_Compare) +# define RTAsn1SetOfTimes_Delete RT_MANGLER(RTAsn1SetOfTimes_Delete) +# define RTAsn1SetOfTimes_Enum RT_MANGLER(RTAsn1SetOfTimes_Enum) +# define RTAsn1SetOfTimes_Init RT_MANGLER(RTAsn1SetOfTimes_Init) +# define RTAsn1Time_CheckSanity RT_MANGLER(RTAsn1Time_CheckSanity) +# define RTAsn1Time_Clone RT_MANGLER(RTAsn1Time_Clone) +# define RTAsn1Time_Compare RT_MANGLER(RTAsn1Time_Compare) +# define RTAsn1Time_CompareWithTimeSpec RT_MANGLER(RTAsn1Time_CompareWithTimeSpec) +# define RTAsn1Time_Delete RT_MANGLER(RTAsn1Time_Delete) +# define RTAsn1Time_Enum RT_MANGLER(RTAsn1Time_Enum) +# define RTAsn1Time_Init RT_MANGLER(RTAsn1Time_Init) +# define RTAsn1UtcTime_CheckSanity RT_MANGLER(RTAsn1UtcTime_CheckSanity) +# define RTAsn1UtcTime_Clone RT_MANGLER(RTAsn1UtcTime_Clone) +# define RTAsn1UtcTime_Compare RT_MANGLER(RTAsn1UtcTime_Compare) +# define RTAsn1UtcTime_Delete RT_MANGLER(RTAsn1UtcTime_Delete) +# define RTAsn1UtcTime_Enum RT_MANGLER(RTAsn1UtcTime_Enum) +# define RTAsn1UtcTime_Init RT_MANGLER(RTAsn1UtcTime_Init) +# define RTAsn1GeneralizedTime_DecodeAsn1 RT_MANGLER(RTAsn1GeneralizedTime_DecodeAsn1) +# define RTAsn1SeqOfTimes_DecodeAsn1 RT_MANGLER(RTAsn1SeqOfTimes_DecodeAsn1) +# define RTAsn1SetOfTimes_DecodeAsn1 RT_MANGLER(RTAsn1SetOfTimes_DecodeAsn1) +# define RTAsn1Time_DecodeAsn1 RT_MANGLER(RTAsn1Time_DecodeAsn1) +# define RTAsn1UtcTime_DecodeAsn1 RT_MANGLER(RTAsn1UtcTime_DecodeAsn1) +# define RTMd2 RT_MANGLER(RTMd2) +# define RTMd2Final RT_MANGLER(RTMd2Final) +# define RTMd2Init RT_MANGLER(RTMd2Init) +# define RTMd2Update RT_MANGLER(RTMd2Update) +# define RTMd2FromString RT_MANGLER(RTMd2FromString) +# define RTMd2ToString RT_MANGLER(RTMd2ToString) +# define RTCrDigestClone RT_MANGLER(RTCrDigestClone) +# define RTCrDigestCreate RT_MANGLER(RTCrDigestCreate) +# define RTCrDigestFinal RT_MANGLER(RTCrDigestFinal) +# define RTCrDigestGetConsumedSize RT_MANGLER(RTCrDigestGetConsumedSize) +# define RTCrDigestGetHash RT_MANGLER(RTCrDigestGetHash) +# define RTCrDigestGetHashSize RT_MANGLER(RTCrDigestGetHashSize) +# define RTCrDigestGetType RT_MANGLER(RTCrDigestGetType) +# define RTCrDigestIsFinalized RT_MANGLER(RTCrDigestIsFinalized) +# define RTCrDigestMatch RT_MANGLER(RTCrDigestMatch) +# define RTCrDigestRelease RT_MANGLER(RTCrDigestRelease) +# define RTCrDigestReset RT_MANGLER(RTCrDigestReset) +# define RTCrDigestRetain RT_MANGLER(RTCrDigestRetain) +# define RTCrDigestUpdate RT_MANGLER(RTCrDigestUpdate) +# define RTCrDigestCreateByObjId RT_MANGLER(RTCrDigestCreateByObjId) +# define RTCrDigestCreateByObjIdString RT_MANGLER(RTCrDigestCreateByObjIdString) +# define RTCrDigestCreateByType RT_MANGLER(RTCrDigestCreateByType) +# define RTCrDigestFindByObjId RT_MANGLER(RTCrDigestFindByObjId) +# define RTCrDigestFindByObjIdString RT_MANGLER(RTCrDigestFindByObjIdString) +# define RTCrDigestFindByType RT_MANGLER(RTCrDigestFindByType) +# define RTCrRsaDigestInfo_DecodeAsn1 RT_MANGLER(RTCrRsaDigestInfo_DecodeAsn1) +# define RTCrRsaOtherPrimeInfo_DecodeAsn1 RT_MANGLER(RTCrRsaOtherPrimeInfo_DecodeAsn1) +# define RTCrRsaOtherPrimeInfos_DecodeAsn1 RT_MANGLER(RTCrRsaOtherPrimeInfos_DecodeAsn1) +# define RTCrRsaPrivateKey_DecodeAsn1 RT_MANGLER(RTCrRsaPrivateKey_DecodeAsn1) +# define RTCrRsaPublicKey_DecodeAsn1 RT_MANGLER(RTCrRsaPublicKey_DecodeAsn1) +# define RTCrRsaDigestInfo_Compare RT_MANGLER(RTCrRsaDigestInfo_Compare) +# define RTCrRsaDigestInfo_Delete RT_MANGLER(RTCrRsaDigestInfo_Delete) +# define RTCrRsaDigestInfo_Enum RT_MANGLER(RTCrRsaDigestInfo_Enum) +# define RTCrRsaOtherPrimeInfo_Compare RT_MANGLER(RTCrRsaOtherPrimeInfo_Compare) +# define RTCrRsaOtherPrimeInfo_Delete RT_MANGLER(RTCrRsaOtherPrimeInfo_Delete) +# define RTCrRsaOtherPrimeInfo_Enum RT_MANGLER(RTCrRsaOtherPrimeInfo_Enum) +# define RTCrRsaOtherPrimeInfos_Compare RT_MANGLER(RTCrRsaOtherPrimeInfos_Compare) +# define RTCrRsaOtherPrimeInfos_Delete RT_MANGLER(RTCrRsaOtherPrimeInfos_Delete) +# define RTCrRsaOtherPrimeInfos_Enum RT_MANGLER(RTCrRsaOtherPrimeInfos_Enum) +# define RTCrRsaPrivateKey_Compare RT_MANGLER(RTCrRsaPrivateKey_Compare) +# define RTCrRsaPrivateKey_Delete RT_MANGLER(RTCrRsaPrivateKey_Delete) +# define RTCrRsaPrivateKey_Enum RT_MANGLER(RTCrRsaPrivateKey_Enum) +# define RTCrRsaPublicKey_Compare RT_MANGLER(RTCrRsaPublicKey_Compare) +# define RTCrRsaPublicKey_Delete RT_MANGLER(RTCrRsaPublicKey_Delete) +# define RTCrRsaPublicKey_Enum RT_MANGLER(RTCrRsaPublicKey_Enum) +# define RTCrRsaDigestInfo_Clone RT_MANGLER(RTCrRsaDigestInfo_Clone) +# define RTCrRsaDigestInfo_Init RT_MANGLER(RTCrRsaDigestInfo_Init) +# define RTCrRsaOtherPrimeInfo_Clone RT_MANGLER(RTCrRsaOtherPrimeInfo_Clone) +# define RTCrRsaOtherPrimeInfo_Init RT_MANGLER(RTCrRsaOtherPrimeInfo_Init) +# define RTCrRsaOtherPrimeInfos_Clone RT_MANGLER(RTCrRsaOtherPrimeInfos_Clone) +# define RTCrRsaOtherPrimeInfos_Init RT_MANGLER(RTCrRsaOtherPrimeInfos_Init) +# define RTCrRsaPrivateKey_Clone RT_MANGLER(RTCrRsaPrivateKey_Clone) +# define RTCrRsaPrivateKey_Init RT_MANGLER(RTCrRsaPrivateKey_Init) +# define RTCrRsaPublicKey_Clone RT_MANGLER(RTCrRsaPublicKey_Clone) +# define RTCrRsaPublicKey_Init RT_MANGLER(RTCrRsaPublicKey_Init) +# define RTCrRsaDigestInfo_CheckSanity RT_MANGLER(RTCrRsaDigestInfo_CheckSanity) +# define RTCrRsaOtherPrimeInfo_CheckSanity RT_MANGLER(RTCrRsaOtherPrimeInfo_CheckSanity) +# define RTCrRsaOtherPrimeInfos_CheckSanity RT_MANGLER(RTCrRsaOtherPrimeInfos_CheckSanity) +# define RTCrRsaPrivateKey_CheckSanity RT_MANGLER(RTCrRsaPrivateKey_CheckSanity) +# define RTCrRsaPublicKey_CheckSanity RT_MANGLER(RTCrRsaPublicKey_CheckSanity) +# define RTCrPemFreeSections RT_MANGLER(RTCrPemFreeSections) +# define RTCrPemReadFile RT_MANGLER(RTCrPemReadFile) +# define RTCrPkcs7Attribute_DecodeAsn1 RT_MANGLER(RTCrPkcs7Attribute_DecodeAsn1) +# define RTCrPkcs7Attributes_DecodeAsn1 RT_MANGLER(RTCrPkcs7Attributes_DecodeAsn1) +# define RTCrPkcs7ContentInfo_DecodeAsn1 RT_MANGLER(RTCrPkcs7ContentInfo_DecodeAsn1) +# define RTCrPkcs7DigestInfo_DecodeAsn1 RT_MANGLER(RTCrPkcs7DigestInfo_DecodeAsn1) +# define RTCrPkcs7IssuerAndSerialNumber_DecodeAsn1 RT_MANGLER(RTCrPkcs7IssuerAndSerialNumber_DecodeAsn1) +# define RTCrPkcs7SignedData_DecodeAsn1 RT_MANGLER(RTCrPkcs7SignedData_DecodeAsn1) +# define RTCrPkcs7SignerInfo_DecodeAsn1 RT_MANGLER(RTCrPkcs7SignerInfo_DecodeAsn1) +# define RTCrPkcs7SignerInfos_DecodeAsn1 RT_MANGLER(RTCrPkcs7SignerInfos_DecodeAsn1) +# define RTCrPkcs7Attribute_Compare RT_MANGLER(RTCrPkcs7Attribute_Compare) +# define RTCrPkcs7Attribute_Delete RT_MANGLER(RTCrPkcs7Attribute_Delete) +# define RTCrPkcs7Attribute_Enum RT_MANGLER(RTCrPkcs7Attribute_Enum) +# define RTCrPkcs7Attributes_Compare RT_MANGLER(RTCrPkcs7Attributes_Compare) +# define RTCrPkcs7Attributes_Delete RT_MANGLER(RTCrPkcs7Attributes_Delete) +# define RTCrPkcs7Attributes_Enum RT_MANGLER(RTCrPkcs7Attributes_Enum) +# define RTCrPkcs7ContentInfo_Compare RT_MANGLER(RTCrPkcs7ContentInfo_Compare) +# define RTCrPkcs7ContentInfo_Delete RT_MANGLER(RTCrPkcs7ContentInfo_Delete) +# define RTCrPkcs7ContentInfo_Enum RT_MANGLER(RTCrPkcs7ContentInfo_Enum) +# define RTCrPkcs7ContentInfo_IsSignedData RT_MANGLER(RTCrPkcs7ContentInfo_IsSignedData) +# define RTCrPkcs7DigestInfo_Compare RT_MANGLER(RTCrPkcs7DigestInfo_Compare) +# define RTCrPkcs7DigestInfo_Delete RT_MANGLER(RTCrPkcs7DigestInfo_Delete) +# define RTCrPkcs7DigestInfo_Enum RT_MANGLER(RTCrPkcs7DigestInfo_Enum) +# define RTCrPkcs7IssuerAndSerialNumber_Compare RT_MANGLER(RTCrPkcs7IssuerAndSerialNumber_Compare) +# define RTCrPkcs7IssuerAndSerialNumber_Delete RT_MANGLER(RTCrPkcs7IssuerAndSerialNumber_Delete) +# define RTCrPkcs7IssuerAndSerialNumber_Enum RT_MANGLER(RTCrPkcs7IssuerAndSerialNumber_Enum) +# define RTCrPkcs7SignedData_Compare RT_MANGLER(RTCrPkcs7SignedData_Compare) +# define RTCrPkcs7SignedData_Delete RT_MANGLER(RTCrPkcs7SignedData_Delete) +# define RTCrPkcs7SignedData_Enum RT_MANGLER(RTCrPkcs7SignedData_Enum) +# define RTCrPkcs7SignerInfo_Compare RT_MANGLER(RTCrPkcs7SignerInfo_Compare) +# define RTCrPkcs7SignerInfo_Delete RT_MANGLER(RTCrPkcs7SignerInfo_Delete) +# define RTCrPkcs7SignerInfo_Enum RT_MANGLER(RTCrPkcs7SignerInfo_Enum) +# define RTCrPkcs7SignerInfo_GetSigningTime RT_MANGLER(RTCrPkcs7SignerInfo_GetSigningTime) +# define RTCrPkcs7SignerInfo_GetMsTimestamp RT_MANGLER(RTCrPkcs7SignerInfo_GetMsTimestamp) +# define RTCrPkcs7SignerInfos_Compare RT_MANGLER(RTCrPkcs7SignerInfos_Compare) +# define RTCrPkcs7SignerInfos_Delete RT_MANGLER(RTCrPkcs7SignerInfos_Delete) +# define RTCrPkcs7SignerInfos_Enum RT_MANGLER(RTCrPkcs7SignerInfos_Enum) +# define RTCrPkcs7Attribute_Clone RT_MANGLER(RTCrPkcs7Attribute_Clone) +# define RTCrPkcs7Attribute_Init RT_MANGLER(RTCrPkcs7Attribute_Init) +# define RTCrPkcs7Attributes_Clone RT_MANGLER(RTCrPkcs7Attributes_Clone) +# define RTCrPkcs7Attributes_Init RT_MANGLER(RTCrPkcs7Attributes_Init) +# define RTCrPkcs7ContentInfo_Clone RT_MANGLER(RTCrPkcs7ContentInfo_Clone) +# define RTCrPkcs7ContentInfo_Init RT_MANGLER(RTCrPkcs7ContentInfo_Init) +# define RTCrPkcs7DigestInfo_Clone RT_MANGLER(RTCrPkcs7DigestInfo_Clone) +# define RTCrPkcs7DigestInfo_Init RT_MANGLER(RTCrPkcs7DigestInfo_Init) +# define RTCrPkcs7IssuerAndSerialNumber_Clone RT_MANGLER(RTCrPkcs7IssuerAndSerialNumber_Clone) +# define RTCrPkcs7IssuerAndSerialNumber_Init RT_MANGLER(RTCrPkcs7IssuerAndSerialNumber_Init) +# define RTCrPkcs7SignedData_Clone RT_MANGLER(RTCrPkcs7SignedData_Clone) +# define RTCrPkcs7SignedData_Init RT_MANGLER(RTCrPkcs7SignedData_Init) +# define RTCrPkcs7SignerInfo_Clone RT_MANGLER(RTCrPkcs7SignerInfo_Clone) +# define RTCrPkcs7SignerInfo_Init RT_MANGLER(RTCrPkcs7SignerInfo_Init) +# define RTCrPkcs7SignerInfos_Clone RT_MANGLER(RTCrPkcs7SignerInfos_Clone) +# define RTCrPkcs7SignerInfos_Init RT_MANGLER(RTCrPkcs7SignerInfos_Init) +# define RTCrPkcs7Attribute_CheckSanity RT_MANGLER(RTCrPkcs7Attribute_CheckSanity) +# define RTCrPkcs7Attributes_CheckSanity RT_MANGLER(RTCrPkcs7Attributes_CheckSanity) +# define RTCrPkcs7ContentInfo_CheckSanity RT_MANGLER(RTCrPkcs7ContentInfo_CheckSanity) +# define RTCrPkcs7DigestInfo_CheckSanity RT_MANGLER(RTCrPkcs7DigestInfo_CheckSanity) +# define RTCrPkcs7IssuerAndSerialNumber_CheckSanity RT_MANGLER(RTCrPkcs7IssuerAndSerialNumber_CheckSanity) +# define RTCrPkcs7SignedData_CheckSanity RT_MANGLER(RTCrPkcs7SignedData_CheckSanity) +# define RTCrPkcs7SignerInfo_CheckSanity RT_MANGLER(RTCrPkcs7SignerInfo_CheckSanity) +# define RTCrPkcs7SignerInfos_CheckSanity RT_MANGLER(RTCrPkcs7SignerInfos_CheckSanity) +# define RTCrPkcs7VerifyCertCallbackCodeSigning RT_MANGLER(RTCrPkcs7VerifyCertCallbackCodeSigning) +# define RTCrPkcs7VerifyCertCallbackDefault RT_MANGLER(RTCrPkcs7VerifyCertCallbackDefault) +# define RTCrPkcs7VerifySignedData RT_MANGLER(RTCrPkcs7VerifySignedData) +# define RTCrPkcs7Cert_CheckSanity RT_MANGLER(RTCrPkcs7Cert_CheckSanity) +# define RTCrPkcs7Cert_Clone RT_MANGLER(RTCrPkcs7Cert_Clone) +# define RTCrPkcs7Cert_Compare RT_MANGLER(RTCrPkcs7Cert_Compare) +# define RTCrPkcs7Cert_DecodeAsn1 RT_MANGLER(RTCrPkcs7Cert_DecodeAsn1) +# define RTCrPkcs7Cert_Delete RT_MANGLER(RTCrPkcs7Cert_Delete) +# define RTCrPkcs7Cert_Enum RT_MANGLER(RTCrPkcs7Cert_Enum) +# define RTCrPkcs7Cert_Init RT_MANGLER(RTCrPkcs7Cert_Init) +# define RTCrPkcs7SetOfCerts_CheckSanity RT_MANGLER(RTCrPkcs7SetOfCerts_CheckSanity) +# define RTCrPkcs7SetOfCerts_Clone RT_MANGLER(RTCrPkcs7SetOfCerts_Clone) +# define RTCrPkcs7SetOfCerts_Compare RT_MANGLER(RTCrPkcs7SetOfCerts_Compare) +# define RTCrPkcs7SetOfCerts_DecodeAsn1 RT_MANGLER(RTCrPkcs7SetOfCerts_DecodeAsn1) +# define RTCrPkcs7SetOfCerts_Delete RT_MANGLER(RTCrPkcs7SetOfCerts_Delete) +# define RTCrPkcs7SetOfCerts_Enum RT_MANGLER(RTCrPkcs7SetOfCerts_Enum) +# define RTCrPkcs7SetOfCerts_Init RT_MANGLER(RTCrPkcs7SetOfCerts_Init) +# define RTCrPkcs7SetOfCerts_FindX509ByIssuerAndSerialNumber RT_MANGLER(RTCrPkcs7SetOfCerts_FindX509ByIssuerAndSerialNumber) +# define RTCrPkcs7SetOfContentInfos_CheckSanity RT_MANGLER(RTCrPkcs7SetOfContentInfos_CheckSanity) +# define RTCrPkcs7SetOfContentInfos_Clone RT_MANGLER(RTCrPkcs7SetOfContentInfos_Clone) +# define RTCrPkcs7SetOfContentInfos_Compare RT_MANGLER(RTCrPkcs7SetOfContentInfos_Compare) +# define RTCrPkcs7SetOfContentInfos_DecodeAsn1 RT_MANGLER(RTCrPkcs7SetOfContentInfos_DecodeAsn1) +# define RTCrPkcs7SetOfContentInfos_Delete RT_MANGLER(RTCrPkcs7SetOfContentInfos_Delete) +# define RTCrPkcs7SetOfContentInfos_Enum RT_MANGLER(RTCrPkcs7SetOfContentInfos_Enum) +# define RTCrPkcs7SetOfContentInfos_Init RT_MANGLER(RTCrPkcs7SetOfContentInfos_Init) +# define RTCrPkcs7SetOfSignedData_CheckSanity RT_MANGLER(RTCrPkcs7SetOfSignedData_CheckSanity) +# define RTCrPkcs7SetOfSignedData_Clone RT_MANGLER(RTCrPkcs7SetOfSignedData_Clone) +# define RTCrPkcs7SetOfSignedData_Compare RT_MANGLER(RTCrPkcs7SetOfSignedData_Compare) +# define RTCrPkcs7SetOfSignedData_DecodeAsn1 RT_MANGLER(RTCrPkcs7SetOfSignedData_DecodeAsn1) +# define RTCrPkcs7SetOfSignedData_Delete RT_MANGLER(RTCrPkcs7SetOfSignedData_Delete) +# define RTCrPkcs7SetOfSignedData_Enum RT_MANGLER(RTCrPkcs7SetOfSignedData_Enum) +# define RTCrPkcs7SetOfSignedData_Init RT_MANGLER(RTCrPkcs7SetOfSignedData_Init) +# define RTCrPkixSignatureCreateByObjId RT_MANGLER(RTCrPkixSignatureCreateByObjId) +# define RTCrPkixSignatureCreateByObjIdString RT_MANGLER(RTCrPkixSignatureCreateByObjIdString) +# define RTCrPkixSignatureCreate RT_MANGLER(RTCrPkixSignatureCreate) +# define RTCrPkixSignatureRelease RT_MANGLER(RTCrPkixSignatureRelease) +# define RTCrPkixSignatureRetain RT_MANGLER(RTCrPkixSignatureRetain) +# define RTCrPkixSignatureSign RT_MANGLER(RTCrPkixSignatureSign) +# define RTCrPkixSignatureVerify RT_MANGLER(RTCrPkixSignatureVerify) +# define RTCrPkixSignatureVerifyBitString RT_MANGLER(RTCrPkixSignatureVerifyBitString) +# define RTCrPkixSignatureVerifyOctetString RT_MANGLER(RTCrPkixSignatureVerifyOctetString) +# define RTCrPkixGetCiperOidFromSignatureAlgorithm RT_MANGLER(RTCrPkixGetCiperOidFromSignatureAlgorithm) +# define RTCrPkixPubKeyVerifySignature RT_MANGLER(RTCrPkixPubKeyVerifySignature) +# define RTCrSpcAttributeTypeAndOptionalValue_DecodeAsn1 RT_MANGLER(RTCrSpcAttributeTypeAndOptionalValue_DecodeAsn1) +# define RTCrSpcIndirectDataContent_DecodeAsn1 RT_MANGLER(RTCrSpcIndirectDataContent_DecodeAsn1) +# define RTCrSpcLink_DecodeAsn1 RT_MANGLER(RTCrSpcLink_DecodeAsn1) +# define RTCrSpcPeImageData_DecodeAsn1 RT_MANGLER(RTCrSpcPeImageData_DecodeAsn1) +# define RTCrSpcSerializedObjectAttribute_DecodeAsn1 RT_MANGLER(RTCrSpcSerializedObjectAttribute_DecodeAsn1) +# define RTCrSpcSerializedObjectAttributes_DecodeAsn1 RT_MANGLER(RTCrSpcSerializedObjectAttributes_DecodeAsn1) +# define RTCrSpcSerializedObject_DecodeAsn1 RT_MANGLER(RTCrSpcSerializedObject_DecodeAsn1) +# define RTCrSpcSerializedPageHashes_DecodeAsn1 RT_MANGLER(RTCrSpcSerializedPageHashes_DecodeAsn1) +# define RTCrSpcString_DecodeAsn1 RT_MANGLER(RTCrSpcString_DecodeAsn1) +# define RTCrSpcAttributeTypeAndOptionalValue_Compare RT_MANGLER(RTCrSpcAttributeTypeAndOptionalValue_Compare) +# define RTCrSpcAttributeTypeAndOptionalValue_Delete RT_MANGLER(RTCrSpcAttributeTypeAndOptionalValue_Delete) +# define RTCrSpcAttributeTypeAndOptionalValue_Enum RT_MANGLER(RTCrSpcAttributeTypeAndOptionalValue_Enum) +# define RTCrSpcIndirectDataContent_Compare RT_MANGLER(RTCrSpcIndirectDataContent_Compare) +# define RTCrSpcIndirectDataContent_Delete RT_MANGLER(RTCrSpcIndirectDataContent_Delete) +# define RTCrSpcIndirectDataContent_Enum RT_MANGLER(RTCrSpcIndirectDataContent_Enum) +# define RTCrSpcIndirectDataContent_GetPeImageObjAttrib RT_MANGLER(RTCrSpcIndirectDataContent_GetPeImageObjAttrib) +# define RTCrSpcLink_Compare RT_MANGLER(RTCrSpcLink_Compare) +# define RTCrSpcLink_Delete RT_MANGLER(RTCrSpcLink_Delete) +# define RTCrSpcLink_Enum RT_MANGLER(RTCrSpcLink_Enum) +# define RTCrSpcPeImageData_Compare RT_MANGLER(RTCrSpcPeImageData_Compare) +# define RTCrSpcPeImageData_Delete RT_MANGLER(RTCrSpcPeImageData_Delete) +# define RTCrSpcPeImageData_Enum RT_MANGLER(RTCrSpcPeImageData_Enum) +# define RTCrSpcSerializedObjectAttribute_Compare RT_MANGLER(RTCrSpcSerializedObjectAttribute_Compare) +# define RTCrSpcSerializedObjectAttribute_Delete RT_MANGLER(RTCrSpcSerializedObjectAttribute_Delete) +# define RTCrSpcSerializedObjectAttribute_Enum RT_MANGLER(RTCrSpcSerializedObjectAttribute_Enum) +# define RTCrSpcSerializedObjectAttributes_Compare RT_MANGLER(RTCrSpcSerializedObjectAttributes_Compare) +# define RTCrSpcSerializedObjectAttributes_Delete RT_MANGLER(RTCrSpcSerializedObjectAttributes_Delete) +# define RTCrSpcSerializedObjectAttributes_Enum RT_MANGLER(RTCrSpcSerializedObjectAttributes_Enum) +# define RTCrSpcSerializedObject_Compare RT_MANGLER(RTCrSpcSerializedObject_Compare) +# define RTCrSpcSerializedObject_Delete RT_MANGLER(RTCrSpcSerializedObject_Delete) +# define RTCrSpcSerializedObject_Enum RT_MANGLER(RTCrSpcSerializedObject_Enum) +# define RTCrSpcSerializedPageHashes_Compare RT_MANGLER(RTCrSpcSerializedPageHashes_Compare) +# define RTCrSpcSerializedPageHashes_Delete RT_MANGLER(RTCrSpcSerializedPageHashes_Delete) +# define RTCrSpcSerializedPageHashes_Enum RT_MANGLER(RTCrSpcSerializedPageHashes_Enum) +# define RTCrSpcSerializedPageHashes_UpdateDerivedData RT_MANGLER(RTCrSpcSerializedPageHashes_UpdateDerivedData) +# define RTCrSpcString_Compare RT_MANGLER(RTCrSpcString_Compare) +# define RTCrSpcString_Delete RT_MANGLER(RTCrSpcString_Delete) +# define RTCrSpcString_Enum RT_MANGLER(RTCrSpcString_Enum) +# define RTCrSpcAttributeTypeAndOptionalValue_Clone RT_MANGLER(RTCrSpcAttributeTypeAndOptionalValue_Clone) +# define RTCrSpcAttributeTypeAndOptionalValue_Init RT_MANGLER(RTCrSpcAttributeTypeAndOptionalValue_Init) +# define RTCrSpcIndirectDataContent_Clone RT_MANGLER(RTCrSpcIndirectDataContent_Clone) +# define RTCrSpcIndirectDataContent_Init RT_MANGLER(RTCrSpcIndirectDataContent_Init) +# define RTCrSpcLink_Clone RT_MANGLER(RTCrSpcLink_Clone) +# define RTCrSpcLink_Init RT_MANGLER(RTCrSpcLink_Init) +# define RTCrSpcPeImageData_Clone RT_MANGLER(RTCrSpcPeImageData_Clone) +# define RTCrSpcPeImageData_Init RT_MANGLER(RTCrSpcPeImageData_Init) +# define RTCrSpcSerializedObjectAttribute_Clone RT_MANGLER(RTCrSpcSerializedObjectAttribute_Clone) +# define RTCrSpcSerializedObjectAttribute_Init RT_MANGLER(RTCrSpcSerializedObjectAttribute_Init) +# define RTCrSpcSerializedObjectAttributes_Clone RT_MANGLER(RTCrSpcSerializedObjectAttributes_Clone) +# define RTCrSpcSerializedObjectAttributes_Init RT_MANGLER(RTCrSpcSerializedObjectAttributes_Init) +# define RTCrSpcSerializedObject_Clone RT_MANGLER(RTCrSpcSerializedObject_Clone) +# define RTCrSpcSerializedObject_Init RT_MANGLER(RTCrSpcSerializedObject_Init) +# define RTCrSpcSerializedPageHashes_Clone RT_MANGLER(RTCrSpcSerializedPageHashes_Clone) +# define RTCrSpcSerializedPageHashes_Init RT_MANGLER(RTCrSpcSerializedPageHashes_Init) +# define RTCrSpcString_Clone RT_MANGLER(RTCrSpcString_Clone) +# define RTCrSpcString_Init RT_MANGLER(RTCrSpcString_Init) +# define RTCrSpcAttributeTypeAndOptionalValue_CheckSanity RT_MANGLER(RTCrSpcAttributeTypeAndOptionalValue_CheckSanity) +# define RTCrSpcIndirectDataContent_CheckSanity RT_MANGLER(RTCrSpcIndirectDataContent_CheckSanity) +# define RTCrSpcIndirectDataContent_CheckSanityEx RT_MANGLER(RTCrSpcIndirectDataContent_CheckSanityEx) +# define RTCrSpcLink_CheckSanity RT_MANGLER(RTCrSpcLink_CheckSanity) +# define RTCrSpcPeImageData_CheckSanity RT_MANGLER(RTCrSpcPeImageData_CheckSanity) +# define RTCrSpcSerializedObjectAttribute_CheckSanity RT_MANGLER(RTCrSpcSerializedObjectAttribute_CheckSanity) +# define RTCrSpcSerializedObjectAttributes_CheckSanity RT_MANGLER(RTCrSpcSerializedObjectAttributes_CheckSanity) +# define RTCrSpcSerializedObject_CheckSanity RT_MANGLER(RTCrSpcSerializedObject_CheckSanity) +# define RTCrSpcSerializedPageHashes_CheckSanity RT_MANGLER(RTCrSpcSerializedPageHashes_CheckSanity) +# define RTCrSpcString_CheckSanity RT_MANGLER(RTCrSpcString_CheckSanity) +# define RTCrX509AlgorithmIdentifier_DecodeAsn1 RT_MANGLER(RTCrX509AlgorithmIdentifier_DecodeAsn1) +# define RTCrX509AlgorithmIdentifiers_DecodeAsn1 RT_MANGLER(RTCrX509AlgorithmIdentifiers_DecodeAsn1) +# define RTCrX509AttributeTypeAndValue_DecodeAsn1 RT_MANGLER(RTCrX509AttributeTypeAndValue_DecodeAsn1) +# define RTCrX509AttributeTypeAndValues_DecodeAsn1 RT_MANGLER(RTCrX509AttributeTypeAndValues_DecodeAsn1) +# define RTCrX509AuthorityKeyIdentifier_DecodeAsn1 RT_MANGLER(RTCrX509AuthorityKeyIdentifier_DecodeAsn1) +# define RTCrX509BasicConstraints_DecodeAsn1 RT_MANGLER(RTCrX509BasicConstraints_DecodeAsn1) +# define RTCrX509CertificatePolicies_DecodeAsn1 RT_MANGLER(RTCrX509CertificatePolicies_DecodeAsn1) +# define RTCrX509Certificate_DecodeAsn1 RT_MANGLER(RTCrX509Certificate_DecodeAsn1) +# define RTCrX509Certificates_DecodeAsn1 RT_MANGLER(RTCrX509Certificates_DecodeAsn1) +# define RTCrX509Extension_DecodeAsn1 RT_MANGLER(RTCrX509Extension_DecodeAsn1) +# define RTCrX509Extension_ExtnValue_DecodeAsn1 RT_MANGLER(RTCrX509Extension_ExtnValue_DecodeAsn1) +# define RTCrX509Extensions_DecodeAsn1 RT_MANGLER(RTCrX509Extensions_DecodeAsn1) +# define RTCrX509GeneralName_DecodeAsn1 RT_MANGLER(RTCrX509GeneralName_DecodeAsn1) +# define RTCrX509GeneralNames_DecodeAsn1 RT_MANGLER(RTCrX509GeneralNames_DecodeAsn1) +# define RTCrX509GeneralSubtree_DecodeAsn1 RT_MANGLER(RTCrX509GeneralSubtree_DecodeAsn1) +# define RTCrX509GeneralSubtrees_DecodeAsn1 RT_MANGLER(RTCrX509GeneralSubtrees_DecodeAsn1) +# define RTCrX509NameConstraints_DecodeAsn1 RT_MANGLER(RTCrX509NameConstraints_DecodeAsn1) +# define RTCrX509Name_DecodeAsn1 RT_MANGLER(RTCrX509Name_DecodeAsn1) +# define RTCrX509OldAuthorityKeyIdentifier_DecodeAsn1 RT_MANGLER(RTCrX509OldAuthorityKeyIdentifier_DecodeAsn1) +# define RTCrX509OtherName_DecodeAsn1 RT_MANGLER(RTCrX509OtherName_DecodeAsn1) +# define RTCrX509PolicyConstraints_DecodeAsn1 RT_MANGLER(RTCrX509PolicyConstraints_DecodeAsn1) +# define RTCrX509PolicyInformation_DecodeAsn1 RT_MANGLER(RTCrX509PolicyInformation_DecodeAsn1) +# define RTCrX509PolicyMapping_DecodeAsn1 RT_MANGLER(RTCrX509PolicyMapping_DecodeAsn1) +# define RTCrX509PolicyMappings_DecodeAsn1 RT_MANGLER(RTCrX509PolicyMappings_DecodeAsn1) +# define RTCrX509PolicyQualifierInfo_DecodeAsn1 RT_MANGLER(RTCrX509PolicyQualifierInfo_DecodeAsn1) +# define RTCrX509PolicyQualifierInfos_DecodeAsn1 RT_MANGLER(RTCrX509PolicyQualifierInfos_DecodeAsn1) +# define RTCrX509SubjectPublicKeyInfo_DecodeAsn1 RT_MANGLER(RTCrX509SubjectPublicKeyInfo_DecodeAsn1) +# define RTCrX509TbsCertificate_DecodeAsn1 RT_MANGLER(RTCrX509TbsCertificate_DecodeAsn1) +# define RTCrX509Validity_DecodeAsn1 RT_MANGLER(RTCrX509Validity_DecodeAsn1) +# define RTCrX509CertPathsBuild RT_MANGLER(RTCrX509CertPathsBuild) +# define RTCrX509CertPathsCreate RT_MANGLER(RTCrX509CertPathsCreate) +# define RTCrX509CertPathsCreateEx RT_MANGLER(RTCrX509CertPathsCreateEx) +# define RTCrX509CertPathsDumpAll RT_MANGLER(RTCrX509CertPathsDumpAll) +# define RTCrX509CertPathsDumpOne RT_MANGLER(RTCrX509CertPathsDumpOne) +# define RTCrX509CertPathsGetPathCount RT_MANGLER(RTCrX509CertPathsGetPathCount) +# define RTCrX509CertPathsGetPathLength RT_MANGLER(RTCrX509CertPathsGetPathLength) +# define RTCrX509CertPathsGetPathNodeCert RT_MANGLER(RTCrX509CertPathsGetPathNodeCert) +# define RTCrX509CertPathsGetPathVerifyResult RT_MANGLER(RTCrX509CertPathsGetPathVerifyResult) +# define RTCrX509CertPathsQueryPathInfo RT_MANGLER(RTCrX509CertPathsQueryPathInfo) +# define RTCrX509CertPathsRelease RT_MANGLER(RTCrX509CertPathsRelease) +# define RTCrX509CertPathsRetain RT_MANGLER(RTCrX509CertPathsRetain) +# define RTCrX509CertPathsSetTrustedStore RT_MANGLER(RTCrX509CertPathsSetTrustedStore) +# define RTCrX509CertPathsSetUntrustedArray RT_MANGLER(RTCrX509CertPathsSetUntrustedArray) +# define RTCrX509CertPathsSetUntrustedSet RT_MANGLER(RTCrX509CertPathsSetUntrustedSet) +# define RTCrX509CertPathsSetUntrustedStore RT_MANGLER(RTCrX509CertPathsSetUntrustedStore) +# define RTCrX509CertPathsSetValidTime RT_MANGLER(RTCrX509CertPathsSetValidTime) +# define RTCrX509CertPathsSetValidTimeSpec RT_MANGLER(RTCrX509CertPathsSetValidTimeSpec) +# define RTCrX509CertPathsValidateAll RT_MANGLER(RTCrX509CertPathsValidateAll) +# define RTCrX509CertPathsValidateOne RT_MANGLER(RTCrX509CertPathsValidateOne) +# define RTCrX509AlgorithmIdentifier_Compare RT_MANGLER(RTCrX509AlgorithmIdentifier_Compare) +# define RTCrX509AlgorithmIdentifier_CompareDigestAndEncryptedDigest RT_MANGLER(RTCrX509AlgorithmIdentifier_CompareDigestAndEncryptedDigest) +# define RTCrX509AlgorithmIdentifier_CompareWithString RT_MANGLER(RTCrX509AlgorithmIdentifier_CompareWithString) +# define RTCrX509AlgorithmIdentifier_Delete RT_MANGLER(RTCrX509AlgorithmIdentifier_Delete) +# define RTCrX509AlgorithmIdentifier_Enum RT_MANGLER(RTCrX509AlgorithmIdentifier_Enum) +# define RTCrX509AlgorithmIdentifier_QueryDigestSize RT_MANGLER(RTCrX509AlgorithmIdentifier_QueryDigestSize) +# define RTCrX509AlgorithmIdentifier_QueryDigestType RT_MANGLER(RTCrX509AlgorithmIdentifier_QueryDigestType) +# define RTCrX509AlgorithmIdentifiers_Compare RT_MANGLER(RTCrX509AlgorithmIdentifiers_Compare) +# define RTCrX509AlgorithmIdentifiers_Delete RT_MANGLER(RTCrX509AlgorithmIdentifiers_Delete) +# define RTCrX509AlgorithmIdentifiers_Enum RT_MANGLER(RTCrX509AlgorithmIdentifiers_Enum) +# define RTCrX509AttributeTypeAndValue_Compare RT_MANGLER(RTCrX509AttributeTypeAndValue_Compare) +# define RTCrX509AttributeTypeAndValue_Delete RT_MANGLER(RTCrX509AttributeTypeAndValue_Delete) +# define RTCrX509AttributeTypeAndValue_Enum RT_MANGLER(RTCrX509AttributeTypeAndValue_Enum) +# define RTCrX509AttributeTypeAndValues_Compare RT_MANGLER(RTCrX509AttributeTypeAndValues_Compare) +# define RTCrX509AttributeTypeAndValues_Delete RT_MANGLER(RTCrX509AttributeTypeAndValues_Delete) +# define RTCrX509AttributeTypeAndValues_Enum RT_MANGLER(RTCrX509AttributeTypeAndValues_Enum) +# define RTCrX509AuthorityKeyIdentifier_Compare RT_MANGLER(RTCrX509AuthorityKeyIdentifier_Compare) +# define RTCrX509AuthorityKeyIdentifier_Delete RT_MANGLER(RTCrX509AuthorityKeyIdentifier_Delete) +# define RTCrX509AuthorityKeyIdentifier_Enum RT_MANGLER(RTCrX509AuthorityKeyIdentifier_Enum) +# define RTCrX509BasicConstraints_Compare RT_MANGLER(RTCrX509BasicConstraints_Compare) +# define RTCrX509BasicConstraints_Delete RT_MANGLER(RTCrX509BasicConstraints_Delete) +# define RTCrX509BasicConstraints_Enum RT_MANGLER(RTCrX509BasicConstraints_Enum) +# define RTCrX509CertificatePolicies_Compare RT_MANGLER(RTCrX509CertificatePolicies_Compare) +# define RTCrX509CertificatePolicies_Delete RT_MANGLER(RTCrX509CertificatePolicies_Delete) +# define RTCrX509CertificatePolicies_Enum RT_MANGLER(RTCrX509CertificatePolicies_Enum) +# define RTCrX509Certificate_Compare RT_MANGLER(RTCrX509Certificate_Compare) +# define RTCrX509Certificate_Delete RT_MANGLER(RTCrX509Certificate_Delete) +# define RTCrX509Certificate_Enum RT_MANGLER(RTCrX509Certificate_Enum) +# define RTCrX509Certificate_IsSelfSigned RT_MANGLER(RTCrX509Certificate_IsSelfSigned) +# define RTCrX509Certificate_MatchIssuerAndSerialNumber RT_MANGLER(RTCrX509Certificate_MatchIssuerAndSerialNumber) +# define RTCrX509Certificate_MatchSubjectOrAltSubjectByRfc5280 RT_MANGLER(RTCrX509Certificate_MatchSubjectOrAltSubjectByRfc5280) +# define RTCrX509Certificates_Compare RT_MANGLER(RTCrX509Certificates_Compare) +# define RTCrX509Certificates_Delete RT_MANGLER(RTCrX509Certificates_Delete) +# define RTCrX509Certificates_Enum RT_MANGLER(RTCrX509Certificates_Enum) +# define RTCrX509Certificates_FindByIssuerAndSerialNumber RT_MANGLER(RTCrX509Certificates_FindByIssuerAndSerialNumber) +# define RTCrX509Extension_Compare RT_MANGLER(RTCrX509Extension_Compare) +# define RTCrX509Extension_Delete RT_MANGLER(RTCrX509Extension_Delete) +# define RTCrX509Extension_Enum RT_MANGLER(RTCrX509Extension_Enum) +# define RTCrX509Extensions_Compare RT_MANGLER(RTCrX509Extensions_Compare) +# define RTCrX509Extensions_Delete RT_MANGLER(RTCrX509Extensions_Delete) +# define RTCrX509Extensions_Enum RT_MANGLER(RTCrX509Extensions_Enum) +# define RTCrX509GeneralName_Compare RT_MANGLER(RTCrX509GeneralName_Compare) +# define RTCrX509GeneralName_ConstraintMatch RT_MANGLER(RTCrX509GeneralName_ConstraintMatch) +# define RTCrX509GeneralName_Delete RT_MANGLER(RTCrX509GeneralName_Delete) +# define RTCrX509GeneralName_Enum RT_MANGLER(RTCrX509GeneralName_Enum) +# define RTCrX509GeneralNames_Compare RT_MANGLER(RTCrX509GeneralNames_Compare) +# define RTCrX509GeneralNames_Delete RT_MANGLER(RTCrX509GeneralNames_Delete) +# define RTCrX509GeneralNames_Enum RT_MANGLER(RTCrX509GeneralNames_Enum) +# define RTCrX509GeneralSubtree_Compare RT_MANGLER(RTCrX509GeneralSubtree_Compare) +# define RTCrX509GeneralSubtree_ConstraintMatch RT_MANGLER(RTCrX509GeneralSubtree_ConstraintMatch) +# define RTCrX509GeneralSubtree_Delete RT_MANGLER(RTCrX509GeneralSubtree_Delete) +# define RTCrX509GeneralSubtree_Enum RT_MANGLER(RTCrX509GeneralSubtree_Enum) +# define RTCrX509GeneralSubtrees_Compare RT_MANGLER(RTCrX509GeneralSubtrees_Compare) +# define RTCrX509GeneralSubtrees_Delete RT_MANGLER(RTCrX509GeneralSubtrees_Delete) +# define RTCrX509GeneralSubtrees_Enum RT_MANGLER(RTCrX509GeneralSubtrees_Enum) +# define RTCrX509NameConstraints_Compare RT_MANGLER(RTCrX509NameConstraints_Compare) +# define RTCrX509NameConstraints_Delete RT_MANGLER(RTCrX509NameConstraints_Delete) +# define RTCrX509NameConstraints_Enum RT_MANGLER(RTCrX509NameConstraints_Enum) +# define RTCrX509Name_Compare RT_MANGLER(RTCrX509Name_Compare) +# define RTCrX509Name_ConstraintMatch RT_MANGLER(RTCrX509Name_ConstraintMatch) +# define RTCrX509Name_Delete RT_MANGLER(RTCrX509Name_Delete) +# define RTCrX509Name_Enum RT_MANGLER(RTCrX509Name_Enum) +# define RTCrX509Name_FormatAsString RT_MANGLER(RTCrX509Name_FormatAsString) +# define RTCrX509Name_MatchByRfc5280 RT_MANGLER(RTCrX509Name_MatchByRfc5280) +# define RTCrX509Name_MatchWithString RT_MANGLER(RTCrX509Name_MatchWithString) +# define RTCrX509OldAuthorityKeyIdentifier_Compare RT_MANGLER(RTCrX509OldAuthorityKeyIdentifier_Compare) +# define RTCrX509OldAuthorityKeyIdentifier_Delete RT_MANGLER(RTCrX509OldAuthorityKeyIdentifier_Delete) +# define RTCrX509OldAuthorityKeyIdentifier_Enum RT_MANGLER(RTCrX509OldAuthorityKeyIdentifier_Enum) +# define RTCrX509OtherName_Compare RT_MANGLER(RTCrX509OtherName_Compare) +# define RTCrX509OtherName_Delete RT_MANGLER(RTCrX509OtherName_Delete) +# define RTCrX509OtherName_Enum RT_MANGLER(RTCrX509OtherName_Enum) +# define RTCrX509PolicyConstraints_Compare RT_MANGLER(RTCrX509PolicyConstraints_Compare) +# define RTCrX509PolicyConstraints_Delete RT_MANGLER(RTCrX509PolicyConstraints_Delete) +# define RTCrX509PolicyConstraints_Enum RT_MANGLER(RTCrX509PolicyConstraints_Enum) +# define RTCrX509PolicyInformation_Compare RT_MANGLER(RTCrX509PolicyInformation_Compare) +# define RTCrX509PolicyInformation_Delete RT_MANGLER(RTCrX509PolicyInformation_Delete) +# define RTCrX509PolicyInformation_Enum RT_MANGLER(RTCrX509PolicyInformation_Enum) +# define RTCrX509PolicyMapping_Compare RT_MANGLER(RTCrX509PolicyMapping_Compare) +# define RTCrX509PolicyMapping_Delete RT_MANGLER(RTCrX509PolicyMapping_Delete) +# define RTCrX509PolicyMapping_Enum RT_MANGLER(RTCrX509PolicyMapping_Enum) +# define RTCrX509PolicyMappings_Compare RT_MANGLER(RTCrX509PolicyMappings_Compare) +# define RTCrX509PolicyMappings_Delete RT_MANGLER(RTCrX509PolicyMappings_Delete) +# define RTCrX509PolicyMappings_Enum RT_MANGLER(RTCrX509PolicyMappings_Enum) +# define RTCrX509PolicyQualifierInfo_Compare RT_MANGLER(RTCrX509PolicyQualifierInfo_Compare) +# define RTCrX509PolicyQualifierInfo_Delete RT_MANGLER(RTCrX509PolicyQualifierInfo_Delete) +# define RTCrX509PolicyQualifierInfo_Enum RT_MANGLER(RTCrX509PolicyQualifierInfo_Enum) +# define RTCrX509PolicyQualifierInfos_Compare RT_MANGLER(RTCrX509PolicyQualifierInfos_Compare) +# define RTCrX509PolicyQualifierInfos_Delete RT_MANGLER(RTCrX509PolicyQualifierInfos_Delete) +# define RTCrX509PolicyQualifierInfos_Enum RT_MANGLER(RTCrX509PolicyQualifierInfos_Enum) +# define RTCrX509SubjectPublicKeyInfo_Compare RT_MANGLER(RTCrX509SubjectPublicKeyInfo_Compare) +# define RTCrX509SubjectPublicKeyInfo_Delete RT_MANGLER(RTCrX509SubjectPublicKeyInfo_Delete) +# define RTCrX509SubjectPublicKeyInfo_Enum RT_MANGLER(RTCrX509SubjectPublicKeyInfo_Enum) +# define RTCrX509TbsCertificate_Compare RT_MANGLER(RTCrX509TbsCertificate_Compare) +# define RTCrX509TbsCertificate_Delete RT_MANGLER(RTCrX509TbsCertificate_Delete) +# define RTCrX509TbsCertificate_Enum RT_MANGLER(RTCrX509TbsCertificate_Enum) +# define RTCrX509TbsCertificate_ReprocessExtensions RT_MANGLER(RTCrX509TbsCertificate_ReprocessExtensions) +# define RTCrX509Validity_Compare RT_MANGLER(RTCrX509Validity_Compare) +# define RTCrX509Validity_Delete RT_MANGLER(RTCrX509Validity_Delete) +# define RTCrX509Validity_Enum RT_MANGLER(RTCrX509Validity_Enum) +# define RTCrX509Validity_IsValidAtTimeSpec RT_MANGLER(RTCrX509Validity_IsValidAtTimeSpec) +# define RTCrX509Certificate_ReadFromFile RT_MANGLER(RTCrX509Certificate_ReadFromFile) +# define RTCrX509AlgorithmIdentifier_Clone RT_MANGLER(RTCrX509AlgorithmIdentifier_Clone) +# define RTCrX509AlgorithmIdentifier_Init RT_MANGLER(RTCrX509AlgorithmIdentifier_Init) +# define RTCrX509AlgorithmIdentifiers_Clone RT_MANGLER(RTCrX509AlgorithmIdentifiers_Clone) +# define RTCrX509AlgorithmIdentifiers_Init RT_MANGLER(RTCrX509AlgorithmIdentifiers_Init) +# define RTCrX509AttributeTypeAndValue_Clone RT_MANGLER(RTCrX509AttributeTypeAndValue_Clone) +# define RTCrX509AttributeTypeAndValue_Init RT_MANGLER(RTCrX509AttributeTypeAndValue_Init) +# define RTCrX509AttributeTypeAndValues_Clone RT_MANGLER(RTCrX509AttributeTypeAndValues_Clone) +# define RTCrX509AttributeTypeAndValues_Init RT_MANGLER(RTCrX509AttributeTypeAndValues_Init) +# define RTCrX509AuthorityKeyIdentifier_Clone RT_MANGLER(RTCrX509AuthorityKeyIdentifier_Clone) +# define RTCrX509AuthorityKeyIdentifier_Init RT_MANGLER(RTCrX509AuthorityKeyIdentifier_Init) +# define RTCrX509BasicConstraints_Clone RT_MANGLER(RTCrX509BasicConstraints_Clone) +# define RTCrX509BasicConstraints_Init RT_MANGLER(RTCrX509BasicConstraints_Init) +# define RTCrX509CertificatePolicies_Clone RT_MANGLER(RTCrX509CertificatePolicies_Clone) +# define RTCrX509CertificatePolicies_Init RT_MANGLER(RTCrX509CertificatePolicies_Init) +# define RTCrX509Certificate_Clone RT_MANGLER(RTCrX509Certificate_Clone) +# define RTCrX509Certificate_Init RT_MANGLER(RTCrX509Certificate_Init) +# define RTCrX509Certificates_Clone RT_MANGLER(RTCrX509Certificates_Clone) +# define RTCrX509Certificates_Init RT_MANGLER(RTCrX509Certificates_Init) +# define RTCrX509Extension_Clone RT_MANGLER(RTCrX509Extension_Clone) +# define RTCrX509Extension_Init RT_MANGLER(RTCrX509Extension_Init) +# define RTCrX509Extensions_Clone RT_MANGLER(RTCrX509Extensions_Clone) +# define RTCrX509Extensions_Init RT_MANGLER(RTCrX509Extensions_Init) +# define RTCrX509GeneralName_Clone RT_MANGLER(RTCrX509GeneralName_Clone) +# define RTCrX509GeneralName_Init RT_MANGLER(RTCrX509GeneralName_Init) +# define RTCrX509GeneralNames_Clone RT_MANGLER(RTCrX509GeneralNames_Clone) +# define RTCrX509GeneralNames_Init RT_MANGLER(RTCrX509GeneralNames_Init) +# define RTCrX509GeneralSubtree_Clone RT_MANGLER(RTCrX509GeneralSubtree_Clone) +# define RTCrX509GeneralSubtree_Init RT_MANGLER(RTCrX509GeneralSubtree_Init) +# define RTCrX509GeneralSubtrees_Clone RT_MANGLER(RTCrX509GeneralSubtrees_Clone) +# define RTCrX509GeneralSubtrees_Init RT_MANGLER(RTCrX509GeneralSubtrees_Init) +# define RTCrX509NameConstraints_Clone RT_MANGLER(RTCrX509NameConstraints_Clone) +# define RTCrX509NameConstraints_Init RT_MANGLER(RTCrX509NameConstraints_Init) +# define RTCrX509Name_Clone RT_MANGLER(RTCrX509Name_Clone) +# define RTCrX509Name_Init RT_MANGLER(RTCrX509Name_Init) +# define RTCrX509Name_RecodeAsUtf8 RT_MANGLER(RTCrX509Name_RecodeAsUtf8) +# define RTCrX509OldAuthorityKeyIdentifier_Clone RT_MANGLER(RTCrX509OldAuthorityKeyIdentifier_Clone) +# define RTCrX509OldAuthorityKeyIdentifier_Init RT_MANGLER(RTCrX509OldAuthorityKeyIdentifier_Init) +# define RTCrX509OtherName_Clone RT_MANGLER(RTCrX509OtherName_Clone) +# define RTCrX509OtherName_Init RT_MANGLER(RTCrX509OtherName_Init) +# define RTCrX509PolicyConstraints_Clone RT_MANGLER(RTCrX509PolicyConstraints_Clone) +# define RTCrX509PolicyConstraints_Init RT_MANGLER(RTCrX509PolicyConstraints_Init) +# define RTCrX509PolicyInformation_Clone RT_MANGLER(RTCrX509PolicyInformation_Clone) +# define RTCrX509PolicyInformation_Init RT_MANGLER(RTCrX509PolicyInformation_Init) +# define RTCrX509PolicyMapping_Clone RT_MANGLER(RTCrX509PolicyMapping_Clone) +# define RTCrX509PolicyMapping_Init RT_MANGLER(RTCrX509PolicyMapping_Init) +# define RTCrX509PolicyMappings_Clone RT_MANGLER(RTCrX509PolicyMappings_Clone) +# define RTCrX509PolicyMappings_Init RT_MANGLER(RTCrX509PolicyMappings_Init) +# define RTCrX509PolicyQualifierInfo_Clone RT_MANGLER(RTCrX509PolicyQualifierInfo_Clone) +# define RTCrX509PolicyQualifierInfo_Init RT_MANGLER(RTCrX509PolicyQualifierInfo_Init) +# define RTCrX509PolicyQualifierInfos_Clone RT_MANGLER(RTCrX509PolicyQualifierInfos_Clone) +# define RTCrX509PolicyQualifierInfos_Init RT_MANGLER(RTCrX509PolicyQualifierInfos_Init) +# define RTCrX509SubjectPublicKeyInfo_Clone RT_MANGLER(RTCrX509SubjectPublicKeyInfo_Clone) +# define RTCrX509SubjectPublicKeyInfo_Init RT_MANGLER(RTCrX509SubjectPublicKeyInfo_Init) +# define RTCrX509TbsCertificate_Clone RT_MANGLER(RTCrX509TbsCertificate_Clone) +# define RTCrX509TbsCertificate_Init RT_MANGLER(RTCrX509TbsCertificate_Init) +# define RTCrX509Validity_Clone RT_MANGLER(RTCrX509Validity_Clone) +# define RTCrX509Validity_Init RT_MANGLER(RTCrX509Validity_Init) +# define RTCrX509AlgorithmIdentifier_CheckSanity RT_MANGLER(RTCrX509AlgorithmIdentifier_CheckSanity) +# define RTCrX509AlgorithmIdentifiers_CheckSanity RT_MANGLER(RTCrX509AlgorithmIdentifiers_CheckSanity) +# define RTCrX509AttributeTypeAndValue_CheckSanity RT_MANGLER(RTCrX509AttributeTypeAndValue_CheckSanity) +# define RTCrX509AttributeTypeAndValues_CheckSanity RT_MANGLER(RTCrX509AttributeTypeAndValues_CheckSanity) +# define RTCrX509AuthorityKeyIdentifier_CheckSanity RT_MANGLER(RTCrX509AuthorityKeyIdentifier_CheckSanity) +# define RTCrX509BasicConstraints_CheckSanity RT_MANGLER(RTCrX509BasicConstraints_CheckSanity) +# define RTCrX509CertificatePolicies_CheckSanity RT_MANGLER(RTCrX509CertificatePolicies_CheckSanity) +# define RTCrX509Certificate_CheckSanity RT_MANGLER(RTCrX509Certificate_CheckSanity) +# define RTCrX509Certificates_CheckSanity RT_MANGLER(RTCrX509Certificates_CheckSanity) +# define RTCrX509Extension_CheckSanity RT_MANGLER(RTCrX509Extension_CheckSanity) +# define RTCrX509Extensions_CheckSanity RT_MANGLER(RTCrX509Extensions_CheckSanity) +# define RTCrX509GeneralName_CheckSanity RT_MANGLER(RTCrX509GeneralName_CheckSanity) +# define RTCrX509GeneralNames_CheckSanity RT_MANGLER(RTCrX509GeneralNames_CheckSanity) +# define RTCrX509GeneralSubtree_CheckSanity RT_MANGLER(RTCrX509GeneralSubtree_CheckSanity) +# define RTCrX509GeneralSubtrees_CheckSanity RT_MANGLER(RTCrX509GeneralSubtrees_CheckSanity) +# define RTCrX509NameConstraints_CheckSanity RT_MANGLER(RTCrX509NameConstraints_CheckSanity) +# define RTCrX509Name_CheckSanity RT_MANGLER(RTCrX509Name_CheckSanity) +# define RTCrX509OldAuthorityKeyIdentifier_CheckSanity RT_MANGLER(RTCrX509OldAuthorityKeyIdentifier_CheckSanity) +# define RTCrX509OtherName_CheckSanity RT_MANGLER(RTCrX509OtherName_CheckSanity) +# define RTCrX509PolicyConstraints_CheckSanity RT_MANGLER(RTCrX509PolicyConstraints_CheckSanity) +# define RTCrX509PolicyInformation_CheckSanity RT_MANGLER(RTCrX509PolicyInformation_CheckSanity) +# define RTCrX509PolicyMapping_CheckSanity RT_MANGLER(RTCrX509PolicyMapping_CheckSanity) +# define RTCrX509PolicyMappings_CheckSanity RT_MANGLER(RTCrX509PolicyMappings_CheckSanity) +# define RTCrX509PolicyQualifierInfo_CheckSanity RT_MANGLER(RTCrX509PolicyQualifierInfo_CheckSanity) +# define RTCrX509PolicyQualifierInfos_CheckSanity RT_MANGLER(RTCrX509PolicyQualifierInfos_CheckSanity) +# define RTCrX509SubjectPublicKeyInfo_CheckSanity RT_MANGLER(RTCrX509SubjectPublicKeyInfo_CheckSanity) +# define RTCrX509TbsCertificate_CheckSanity RT_MANGLER(RTCrX509TbsCertificate_CheckSanity) +# define RTCrX509Validity_CheckSanity RT_MANGLER(RTCrX509Validity_CheckSanity) +# define RTCrX509Certificate_VerifySignature RT_MANGLER(RTCrX509Certificate_VerifySignature) +# define RTCrTafCertPathControls_DecodeAsn1 RT_MANGLER(RTCrTafCertPathControls_DecodeAsn1) +# define RTCrTafTrustAnchorChoice_DecodeAsn1 RT_MANGLER(RTCrTafTrustAnchorChoice_DecodeAsn1) +# define RTCrTafTrustAnchorInfo_DecodeAsn1 RT_MANGLER(RTCrTafTrustAnchorInfo_DecodeAsn1) +# define RTCrTafTrustAnchorList_DecodeAsn1 RT_MANGLER(RTCrTafTrustAnchorList_DecodeAsn1) +# define RTCrTafCertPathControls_Compare RT_MANGLER(RTCrTafCertPathControls_Compare) +# define RTCrTafCertPathControls_Delete RT_MANGLER(RTCrTafCertPathControls_Delete) +# define RTCrTafCertPathControls_Enum RT_MANGLER(RTCrTafCertPathControls_Enum) +# define RTCrTafTrustAnchorChoice_Compare RT_MANGLER(RTCrTafTrustAnchorChoice_Compare) +# define RTCrTafTrustAnchorChoice_Delete RT_MANGLER(RTCrTafTrustAnchorChoice_Delete) +# define RTCrTafTrustAnchorChoice_Enum RT_MANGLER(RTCrTafTrustAnchorChoice_Enum) +# define RTCrTafTrustAnchorInfo_Compare RT_MANGLER(RTCrTafTrustAnchorInfo_Compare) +# define RTCrTafTrustAnchorInfo_Delete RT_MANGLER(RTCrTafTrustAnchorInfo_Delete) +# define RTCrTafTrustAnchorInfo_Enum RT_MANGLER(RTCrTafTrustAnchorInfo_Enum) +# define RTCrTafTrustAnchorList_Compare RT_MANGLER(RTCrTafTrustAnchorList_Compare) +# define RTCrTafTrustAnchorList_Delete RT_MANGLER(RTCrTafTrustAnchorList_Delete) +# define RTCrTafTrustAnchorList_Enum RT_MANGLER(RTCrTafTrustAnchorList_Enum) +# define RTCrTafCertPathControls_Clone RT_MANGLER(RTCrTafCertPathControls_Clone) +# define RTCrTafCertPathControls_Init RT_MANGLER(RTCrTafCertPathControls_Init) +# define RTCrTafTrustAnchorChoice_Clone RT_MANGLER(RTCrTafTrustAnchorChoice_Clone) +# define RTCrTafTrustAnchorChoice_Init RT_MANGLER(RTCrTafTrustAnchorChoice_Init) +# define RTCrTafTrustAnchorInfo_Clone RT_MANGLER(RTCrTafTrustAnchorInfo_Clone) +# define RTCrTafTrustAnchorInfo_Init RT_MANGLER(RTCrTafTrustAnchorInfo_Init) +# define RTCrTafTrustAnchorList_Clone RT_MANGLER(RTCrTafTrustAnchorList_Clone) +# define RTCrTafTrustAnchorList_Init RT_MANGLER(RTCrTafTrustAnchorList_Init) +# define RTCrTafCertPathControls_CheckSanity RT_MANGLER(RTCrTafCertPathControls_CheckSanity) +# define RTCrTafTrustAnchorChoice_CheckSanity RT_MANGLER(RTCrTafTrustAnchorChoice_CheckSanity) +# define RTCrTafTrustAnchorInfo_CheckSanity RT_MANGLER(RTCrTafTrustAnchorInfo_CheckSanity) +# define RTCrTafTrustAnchorList_CheckSanity RT_MANGLER(RTCrTafTrustAnchorList_CheckSanity) +# define RTCrTspAccuracy_CheckSanity RT_MANGLER(RTCrTspAccuracy_CheckSanity) +# define RTCrTspAccuracy_Clone RT_MANGLER(RTCrTspAccuracy_Clone) +# define RTCrTspAccuracy_Compare RT_MANGLER(RTCrTspAccuracy_Compare) +# define RTCrTspAccuracy_DecodeAsn1 RT_MANGLER(RTCrTspAccuracy_DecodeAsn1) +# define RTCrTspAccuracy_Delete RT_MANGLER(RTCrTspAccuracy_Delete) +# define RTCrTspAccuracy_Enum RT_MANGLER(RTCrTspAccuracy_Enum) +# define RTCrTspAccuracy_Init RT_MANGLER(RTCrTspAccuracy_Init) +# define RTCrTspMessageImprint_CheckSanity RT_MANGLER(RTCrTspMessageImprint_CheckSanity) +# define RTCrTspMessageImprint_Clone RT_MANGLER(RTCrTspMessageImprint_Clone) +# define RTCrTspMessageImprint_Compare RT_MANGLER(RTCrTspMessageImprint_Compare) +# define RTCrTspMessageImprint_DecodeAsn1 RT_MANGLER(RTCrTspMessageImprint_DecodeAsn1) +# define RTCrTspMessageImprint_Delete RT_MANGLER(RTCrTspMessageImprint_Delete) +# define RTCrTspMessageImprint_Enum RT_MANGLER(RTCrTspMessageImprint_Enum) +# define RTCrTspMessageImprint_Init RT_MANGLER(RTCrTspMessageImprint_Init) +# define RTCrTspTstInfo_CheckSanity RT_MANGLER(RTCrTspTstInfo_CheckSanity) +# define RTCrTspTstInfo_Clone RT_MANGLER(RTCrTspTstInfo_Clone) +# define RTCrTspTstInfo_Compare RT_MANGLER(RTCrTspTstInfo_Compare) +# define RTCrTspTstInfo_DecodeAsn1 RT_MANGLER(RTCrTspTstInfo_DecodeAsn1) +# define RTCrTspTstInfo_Delete RT_MANGLER(RTCrTspTstInfo_Delete) +# define RTCrTspTstInfo_Enum RT_MANGLER(RTCrTspTstInfo_Enum) +# define RTCrTspTstInfo_Init RT_MANGLER(RTCrTspTstInfo_Init) +# define RTCrCertCtxRelease RT_MANGLER(RTCrCertCtxRelease) +# define RTCrCertCtxRetain RT_MANGLER(RTCrCertCtxRetain) +# define RTCrStoreCertAddEncoded RT_MANGLER(RTCrStoreCertAddEncoded) +# define RTCrStoreCertByIssuerAndSerialNo RT_MANGLER(RTCrStoreCertByIssuerAndSerialNo) +# define RTCrStoreCertFindAll RT_MANGLER(RTCrStoreCertFindAll) +# define RTCrStoreCertFindBySubjectOrAltSubjectByRfc5280 RT_MANGLER(RTCrStoreCertFindBySubjectOrAltSubjectByRfc5280) +# define RTCrStoreCertSearchDestroy RT_MANGLER(RTCrStoreCertSearchDestroy) +# define RTCrStoreCertSearchNext RT_MANGLER(RTCrStoreCertSearchNext) +# define RTCrStoreConvertToOpenSslCertStack RT_MANGLER(RTCrStoreConvertToOpenSslCertStack) +# define RTCrStoreConvertToOpenSslCertStore RT_MANGLER(RTCrStoreConvertToOpenSslCertStore) +# define RTCrStoreRelease RT_MANGLER(RTCrStoreRelease) +# define RTCrStoreRetain RT_MANGLER(RTCrStoreRetain) +# define RTCrStoreCreateInMem RT_MANGLER(RTCrStoreCreateInMem) +# define RTCrStoreCertAddFromFile RT_MANGLER(RTCrStoreCertAddFromFile) +# define RTErrInfoAdd RT_MANGLER(RTErrInfoAdd) +# define RTErrInfoAddF RT_MANGLER(RTErrInfoAddF) +# define RTErrInfoAddV RT_MANGLER(RTErrInfoAddV) +# define RTLdrHashImage RT_MANGLER(RTLdrHashImage) +# define RTLdrOpenWithReader RT_MANGLER(RTLdrOpenWithReader) +# define RTLdrQueryPropEx RT_MANGLER(RTLdrQueryPropEx) +# define RTLdrVerifySignature RT_MANGLER(RTLdrVerifySignature) +# define RTBigNumAdd RT_MANGLER(RTBigNumAdd) +# define RTBigNumAssign RT_MANGLER(RTBigNumAssign) +# define RTBigNumBitWidth RT_MANGLER(RTBigNumBitWidth) +# define RTBigNumByteWidth RT_MANGLER(RTBigNumByteWidth) +# define RTBigNumClone RT_MANGLER(RTBigNumClone) +# define RTBigNumCompare RT_MANGLER(RTBigNumCompare) +# define RTBigNumCompareWithS64 RT_MANGLER(RTBigNumCompareWithS64) +# define RTBigNumCompareWithU64 RT_MANGLER(RTBigNumCompareWithU64) +# define RTBigNumDestroy RT_MANGLER(RTBigNumDestroy) +# define RTBigNumDivide RT_MANGLER(RTBigNumDivide) +# define RTBigNumDivideKnuth RT_MANGLER(RTBigNumDivideKnuth) +# define RTBigNumDivideLong RT_MANGLER(RTBigNumDivideLong) +# define RTBigNumExponentiate RT_MANGLER(RTBigNumExponentiate) +# define RTBigNumInit RT_MANGLER(RTBigNumInit) +# define RTBigNumInitZero RT_MANGLER(RTBigNumInitZero) +# define RTBigNumModExp RT_MANGLER(RTBigNumModExp) +# define RTBigNumModulo RT_MANGLER(RTBigNumModulo) +# define RTBigNumMultiply RT_MANGLER(RTBigNumMultiply) +# define RTBigNumNegate RT_MANGLER(RTBigNumNegate) +# define RTBigNumNegateThis RT_MANGLER(RTBigNumNegateThis) +# define RTBigNumShiftLeft RT_MANGLER(RTBigNumShiftLeft) +# define RTBigNumShiftRight RT_MANGLER(RTBigNumShiftRight) +# define RTBigNumSubtract RT_MANGLER(RTBigNumSubtract) +# define RTBigNumToBytesBigEndian RT_MANGLER(RTBigNumToBytesBigEndian) +# define RTUInt128MulByU64 RT_MANGLER(RTUInt128MulByU64) +# define RTUInt128MulByU64_EndProc RT_MANGLER(RTUInt128MulByU64_EndProc) +# define RTUtf16Copy RT_MANGLER(RTUtf16Copy) +# define RTUtf16CopyAscii RT_MANGLER(RTUtf16CopyAscii) +# define RTUtf16Cat RT_MANGLER(RTUtf16Cat) +# define RTUtf16CatAscii RT_MANGLER(RTUtf16CatAscii) +# define RTUtf16End RT_MANGLER(RTUtf16End) +# define RTUtf16ICmpAscii RT_MANGLER(RTUtf16ICmpAscii) +# define RTUtf16NLen RT_MANGLER(RTUtf16NLen) +# define RTUtf16NLenEx RT_MANGLER(RTUtf16NLenEx) +# define RTUtf16PrintHexBytes RT_MANGLER(RTUtf16PrintHexBytes) +# define RTMemSaferAllocZExTag RT_MANGLER(RTMemSaferAllocZExTag) +# define RTMemSaferAllocZTag RT_MANGLER(RTMemSaferAllocZTag) +# define RTMemSaferFree RT_MANGLER(RTMemSaferFree) +# define RTMemSaferReallocZExTag RT_MANGLER(RTMemSaferReallocZExTag) +# define RTMemSaferReallocZTag RT_MANGLER(RTMemSaferReallocZTag) +# define RTMemSaferScramble RT_MANGLER(RTMemSaferScramble) +# define RTMemSaferUnscramble RT_MANGLER(RTMemSaferUnscramble) +# define RTErrConvertFromDarwin RT_MANGLER(RTErrConvertFromDarwin) +# define RTErrConvertFromDarwinCOM RT_MANGLER(RTErrConvertFromDarwinCOM) +# define RTErrConvertFromDarwinIO RT_MANGLER(RTErrConvertFromDarwinIO) +# define RTErrConvertFromDarwinKern RT_MANGLER(RTErrConvertFromDarwinKern) +# define RTErrConvertFromDarwin RT_MANGLER(RTErrConvertFromDarwin) +# define RTErrConvertFromDarwinIO RT_MANGLER(RTErrConvertFromDarwinIO) +# define RTErrConvertFromDarwinKern RT_MANGLER(RTErrConvertFromDarwinKern) + +/* + * Stable variables (alphabetical order): + */ +# define g_apfnRTZlibDeps RT_MANGLER(g_apfnRTZlibDeps) /* os2 win solaris */ +# define g_aRTUniFlagsRanges RT_MANGLER(g_aRTUniFlagsRanges) +# define g_aRTUniLowerRanges RT_MANGLER(g_aRTUniLowerRanges) +# define g_aRTUniUpperRanges RT_MANGLER(g_aRTUniUpperRanges) +# define g_fRTAlignmentChecks RT_MANGLER(g_fRTAlignmentChecks) +# define g_hKrnlDbgInfo RT_MANGLER(g_hKrnlDbgInfo) /* solaris */ +# define g_pStdErr RT_MANGLER(g_pStdErr) +# define g_pStdIn RT_MANGLER(g_pStdIn) +# define g_pStdOut RT_MANGLER(g_pStdOut) +# define g_pszRTAssertExpr RT_MANGLER(g_pszRTAssertExpr) +# define g_pszRTAssertFile RT_MANGLER(g_pszRTAssertFile) +# define g_pszRTAssertFunction RT_MANGLER(g_pszRTAssertFunction) +# define g_szRTAssertMsg1 RT_MANGLER(g_szRTAssertMsg1) +# define g_szRTAssertMsg2 RT_MANGLER(g_szRTAssertMsg2) +# define g_u32RTAssertLine RT_MANGLER(g_u32RTAssertLine) + +/* sort/merge into the above later: */ +# define g_RTAsn1Time_Vtable RT_MANGLER(g_RTAsn1Time_Vtable) +# define g_RTAsn1String_Vtable RT_MANGLER(g_RTAsn1String_Vtable) +# define g_RTAsn1OctetString_Vtable RT_MANGLER(g_RTAsn1OctetString_Vtable) +# define g_RTAsn1ObjId_Vtable RT_MANGLER(g_RTAsn1ObjId_Vtable) +# define g_RTAsn1Null_Vtable RT_MANGLER(g_RTAsn1Null_Vtable) +# define g_RTAsn1Integer_Vtable RT_MANGLER(g_RTAsn1Integer_Vtable) +# define g_RTAsn1Core_Vtable RT_MANGLER(g_RTAsn1Core_Vtable) +# define g_RTAsn1Boolean_Vtable RT_MANGLER(g_RTAsn1Boolean_Vtable) +# define g_RTAsn1BitString_Vtable RT_MANGLER(g_RTAsn1BitString_Vtable) +# define g_RTAsn1DefaultAllocator RT_MANGLER(g_RTAsn1DefaultAllocator) +# define g_RTAsn1EFenceAllocator RT_MANGLER(g_RTAsn1EFenceAllocator) +#if 0 /* Disabled for now as I'm not sure the assmbler supports mangling yet. */ +# define g_abRTZeroPage RT_MANGLER(g_abRTZeroPage) +# define g_abRTZero4K RT_MANGLER(g_abRTZero4K) +# define g_abRTZero8K RT_MANGLER(g_abRTZero8K) +# define g_abRTZero16K RT_MANGLER(g_abRTZero16K) +# define g_abRTZero32K RT_MANGLER(g_abRTZero32K) +# define g_abRTZero64K RT_MANGLER(g_abRTZero64K) +#endif + + +/* + * Unstable functions (alphabetical order): + */ +/** @todo the list is incomplete! See the .def files + libraries. */ + + +/* + * Unstable variables (alphabetical order): + */ +/* none */ + +#endif /* !DOXYGEN_RUNNING */ + +#endif + --- linux-raspi2-4.2.0.orig/ubuntu/vbox/include/iprt/mem.h +++ linux-raspi2-4.2.0/ubuntu/vbox/include/iprt/mem.h @@ -0,0 +1,940 @@ +/** @file + * IPRT - Memory Management and Manipulation. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + +#ifndef ___iprt_mem_h +#define ___iprt_mem_h + + +#include +#include + + +#ifdef IN_RC +# error "There are no RTMem APIs available Guest Context!" +#endif + + +/** @defgroup grp_rt_mem RTMem - Memory Management and Manipulation + * @ingroup grp_rt + * @{ + */ + +RT_C_DECLS_BEGIN + +/** @def RTMEM_ALIGNMENT + * The alignment of the memory blocks returned by RTMemAlloc(), RTMemAllocZ(), + * RTMemRealloc(), RTMemTmpAlloc() and RTMemTmpAllocZ() for allocations greater + * than RTMEM_ALIGNMENT. + * + * @note This alignment is not forced if the electric fence is active! + */ +#if defined(RT_OS_OS2) +# define RTMEM_ALIGNMENT 4 +#else +# define RTMEM_ALIGNMENT 8 +#endif + +/** @def RTMEM_TAG + * The default allocation tag used by the RTMem allocation APIs. + * + * When not defined before the inclusion of iprt/mem.h or iprt/memobj.h, this + * will default to the pointer to the current file name. The memory API will + * make of use of this as pointer to a volatile but read-only string. + * The alternative tag includes the line number for a more-detailed analysis. + */ +#ifndef RTMEM_TAG +# if 0 +# define RTMEM_TAG (__FILE__ ":" RT_XSTR(__LINE__)) +# else +# define RTMEM_TAG (__FILE__) +# endif +#endif + + +/** @name Allocate temporary memory. + * @{ */ +/** + * Allocates temporary memory with default tag. + * + * Temporary memory blocks are used for not too large memory blocks which + * are believed not to stick around for too long. Using this API instead + * of RTMemAlloc() not only gives the heap manager room for optimization + * but makes the code easier to read. + * + * @returns Pointer to the allocated memory. + * @returns NULL on failure, assertion raised in strict builds. + * @param cb Size in bytes of the memory block to allocated. + */ +#define RTMemTmpAlloc(cb) RTMemTmpAllocTag((cb), RTMEM_TAG) + +/** + * Allocates temporary memory with custom tag. + * + * Temporary memory blocks are used for not too large memory blocks which + * are believed not to stick around for too long. Using this API instead + * of RTMemAlloc() not only gives the heap manager room for optimization + * but makes the code easier to read. + * + * @returns Pointer to the allocated memory. + * @returns NULL on failure, assertion raised in strict builds. + * @param cb Size in bytes of the memory block to allocated. + * @param pszTag Allocation tag used for statistics and such. + */ +RTDECL(void *) RTMemTmpAllocTag(size_t cb, const char *pszTag) RT_NO_THROW; + +/** + * Allocates zero'd temporary memory with default tag. + * + * Same as RTMemTmpAlloc() but the memory will be zero'd. + * + * @returns Pointer to the allocated memory. + * @returns NULL on failure, assertion raised in strict builds. + * @param cb Size in bytes of the memory block to allocated. + */ +#define RTMemTmpAllocZ(cb) RTMemTmpAllocZTag((cb), RTMEM_TAG) + +/** + * Allocates zero'd temporary memory with custom tag. + * + * Same as RTMemTmpAlloc() but the memory will be zero'd. + * + * @returns Pointer to the allocated memory. + * @returns NULL on failure, assertion raised in strict builds. + * @param cb Size in bytes of the memory block to allocated. + * @param pszTag Allocation tag used for statistics and such. + */ +RTDECL(void *) RTMemTmpAllocZTag(size_t cb, const char *pszTag) RT_NO_THROW; + +/** + * Free temporary memory. + * + * @param pv Pointer to memory block. + */ +RTDECL(void) RTMemTmpFree(void *pv) RT_NO_THROW; + +/** @} */ + + +/** + * Allocates memory with default tag. + * + * @returns Pointer to the allocated memory. + * @returns NULL on failure, assertion raised in strict builds. + * @param cb Size in bytes of the memory block to allocated. + * @param pszTag Allocation tag used for statistics and such. + */ +#define RTMemAlloc(cb) RTMemAllocTag((cb), RTMEM_TAG) + +/** + * Allocates memory with custom tag. + * + * @returns Pointer to the allocated memory. + * @returns NULL on failure, assertion raised in strict builds. + * @param cb Size in bytes of the memory block to allocated. + * @param pszTag Allocation tag used for statistics and such. + */ +RTDECL(void *) RTMemAllocTag(size_t cb, const char *pszTag) RT_NO_THROW; + +/** + * Allocates zero'd memory with default tag. + * + * Instead of memset(pv, 0, sizeof()) use this when you want zero'd + * memory. This keeps the code smaller and the heap can skip the memset + * in about 0.42% of calls :-). + * + * @returns Pointer to the allocated memory. + * @returns NULL on failure. + * @param cb Size in bytes of the memory block to allocated. + */ +#define RTMemAllocZ(cb) RTMemAllocZTag((cb), RTMEM_TAG) + +/** + * Allocates zero'd memory with custom tag. + * + * Instead of memset(pv, 0, sizeof()) use this when you want zero'd + * memory. This keeps the code smaller and the heap can skip the memset + * in about 0.42% of calls :-). + * + * @returns Pointer to the allocated memory. + * @returns NULL on failure. + * @param cb Size in bytes of the memory block to allocated. + * @param pszTag Allocation tag used for statistics and such. + */ +RTDECL(void *) RTMemAllocZTag(size_t cb, const char *pszTag) RT_NO_THROW; + +/** + * Wrapper around RTMemAlloc for automatically aligning variable sized + * allocations so that the various electric fence heaps works correctly. + * + * @returns See RTMemAlloc. + * @param cbUnaligned The unaligned size. + */ +#define RTMemAllocVar(cbUnaligned) RTMemAllocVarTag((cbUnaligned), RTMEM_TAG) + +/** + * Wrapper around RTMemAllocTag for automatically aligning variable sized + * allocations so that the various electric fence heaps works correctly. + * + * @returns See RTMemAlloc. + * @param cbUnaligned The unaligned size. + * @param pszTag Allocation tag used for statistics and such. + */ +RTDECL(void *) RTMemAllocVarTag(size_t cbUnaligned, const char *pszTag) RT_NO_THROW; + +/** + * Wrapper around RTMemAllocZ for automatically aligning variable sized + * allocations so that the various electric fence heaps works correctly. + * + * @returns See RTMemAllocZ. + * @param cbUnaligned The unaligned size. + */ +#define RTMemAllocZVar(cbUnaligned) RTMemAllocZVarTag((cbUnaligned), RTMEM_TAG) + +/** + * Wrapper around RTMemAllocZTag for automatically aligning variable sized + * allocations so that the various electric fence heaps works correctly. + * + * @returns See RTMemAllocZ. + * @param cbUnaligned The unaligned size. + * @param pszTag Allocation tag used for statistics and such. + */ +RTDECL(void *) RTMemAllocZVarTag(size_t cbUnaligned, const char *pszTag) RT_NO_THROW; + +/** + * Duplicates a chunk of memory into a new heap block (default tag). + * + * @returns New heap block with the duplicate data. + * @returns NULL if we're out of memory. + * @param pvSrc The memory to duplicate. + * @param cb The amount of memory to duplicate. + */ +#define RTMemDup(pvSrc, cb) RTMemDupTag((pvSrc), (cb), RTMEM_TAG) + +/** + * Duplicates a chunk of memory into a new heap block (custom tag). + * + * @returns New heap block with the duplicate data. + * @returns NULL if we're out of memory. + * @param pvSrc The memory to duplicate. + * @param cb The amount of memory to duplicate. + * @param pszTag Allocation tag used for statistics and such. + */ +RTDECL(void *) RTMemDupTag(const void *pvSrc, size_t cb, const char *pszTag) RT_NO_THROW; + +/** + * Duplicates a chunk of memory into a new heap block with some additional + * zeroed memory (default tag). + * + * @returns New heap block with the duplicate data. + * @returns NULL if we're out of memory. + * @param pvSrc The memory to duplicate. + * @param cbSrc The amount of memory to duplicate. + * @param cbExtra The amount of extra memory to allocate and zero. + */ +#define RTMemDupEx(pvSrc, cbSrc, cbExtra) RTMemDupExTag((pvSrc), (cbSrc), (cbExtra), RTMEM_TAG) + +/** + * Duplicates a chunk of memory into a new heap block with some additional + * zeroed memory (default tag). + * + * @returns New heap block with the duplicate data. + * @returns NULL if we're out of memory. + * @param pvSrc The memory to duplicate. + * @param cbSrc The amount of memory to duplicate. + * @param cbExtra The amount of extra memory to allocate and zero. + * @param pszTag Allocation tag used for statistics and such. + */ +RTDECL(void *) RTMemDupExTag(const void *pvSrc, size_t cbSrc, size_t cbExtra, const char *pszTag) RT_NO_THROW; + +/** + * Reallocates memory with default tag. + * + * @returns Pointer to the allocated memory. + * @returns NULL on failure. + * @param pvOld The memory block to reallocate. + * @param cbNew The new block size (in bytes). + */ +#define RTMemRealloc(pvOld, cbNew) RTMemReallocTag((pvOld), (cbNew), RTMEM_TAG) + +/** + * Reallocates memory with custom tag. + * + * @returns Pointer to the allocated memory. + * @returns NULL on failure. + * @param pvOld The memory block to reallocate. + * @param cbNew The new block size (in bytes). + * @param pszTag Allocation tag used for statistics and such. + */ +RTDECL(void *) RTMemReallocTag(void *pvOld, size_t cbNew, const char *pszTag) RT_NO_THROW; + +/** + * Frees memory. + * + * @param pv Pointer to memory block. + */ +RTDECL(void) RTMemFree(void *pv) RT_NO_THROW; + + + +/** @def RTR0MemAllocEx and RTR0MemAllocExTag flags. + * @{ */ +/** The returned memory should be zeroed. */ +#define RTMEMALLOCEX_FLAGS_ZEROED RT_BIT(0) +/** It must be load code into the returned memory block and execute it. */ +#define RTMEMALLOCEX_FLAGS_EXEC RT_BIT(1) +/** Allocation from any context. + * Will return VERR_NOT_SUPPORTED if not supported. */ +#define RTMEMALLOCEX_FLAGS_ANY_CTX_ALLOC RT_BIT(2) +/** Allocate the memory such that it can be freed from any context. + * Will return VERR_NOT_SUPPORTED if not supported. */ +#define RTMEMALLOCEX_FLAGS_ANY_CTX_FREE RT_BIT(3) +/** Allocate and free from any context. + * Will return VERR_NOT_SUPPORTED if not supported. */ +#define RTMEMALLOCEX_FLAGS_ANY_CTX (RTMEMALLOCEX_FLAGS_ANY_CTX_ALLOC | RTMEMALLOCEX_FLAGS_ANY_CTX_FREE) +/** Reachable by 16-bit address. + * Will return VERR_NOT_SUPPORTED if not supported. */ +#define RTMEMALLOCEX_FLAGS_16BIT_REACH RT_BIT(4) +/** Reachable by 32-bit address. + * Will return VERR_NOT_SUPPORTED if not supported. */ +#define RTMEMALLOCEX_FLAGS_32BIT_REACH RT_BIT(5) +/** Mask of valid flags. */ +#define RTMEMALLOCEX_FLAGS_VALID_MASK UINT32_C(0x0000003f) +/** Mask of valid flags for ring-0. */ +#define RTMEMALLOCEX_FLAGS_VALID_MASK_R0 UINT32_C(0x0000000f) +/** @} */ + +/** + * Extended heap allocation API, default tag. + * + * @returns IPRT status code. + * @retval VERR_NO_MEMORY if we're out of memory. + * @retval VERR_NO_EXEC_MEMORY if we're out of executable memory. + * @retval VERR_NOT_SUPPORTED if any of the specified flags are unsupported. + * + * @param cb The amount of memory to allocate. + * @param cbAlignment The alignment requirements. Use 0 to indicate + * default alignment. + * @param fFlags A combination of the RTMEMALLOCEX_FLAGS_XXX + * defines. + * @param ppv Where to return the memory. + */ +#define RTMemAllocEx(cb, cbAlignment, fFlags, ppv) RTMemAllocExTag((cb), (cbAlignment), (fFlags), RTMEM_TAG, (ppv)) + +/** + * Extended heap allocation API, custom tag. + * + * Depending on the implementation, using this function may add extra overhead, + * so use the simpler APIs where ever possible. + * + * @returns IPRT status code. + * @retval VERR_NO_MEMORY if we're out of memory. + * @retval VERR_NO_EXEC_MEMORY if we're out of executable memory. + * @retval VERR_NOT_SUPPORTED if any of the specified flags are unsupported. + * + * @param cb The amount of memory to allocate. + * @param cbAlignment The alignment requirements. Use 0 to indicate + * default alignment. + * @param fFlags A combination of the RTMEMALLOCEX_FLAGS_XXX + * defines. + * @param pszTag The tag. + * @param ppv Where to return the memory. + */ +RTDECL(int) RTMemAllocExTag(size_t cb, size_t cbAlignment, uint32_t fFlags, const char *pszTag, void **ppv) RT_NO_THROW; + +/** + * For freeing memory allocated by RTMemAllocEx or RTMemAllocExTag. + * + * @param pv What to free, NULL is fine. + * @param cb The amount of allocated memory. + * @param fFlags The flags specified when allocating the memory. + * Whether the exact flags are requires depends on + * the implementation, but in general, ring-0 + * doesn't require anything while ring-3 requires + * RTMEMALLOCEX_FLAGS_EXEC if used. + */ +RTDECL(void) RTMemFreeEx(void *pv, size_t cb) RT_NO_THROW; + + + +/** + * Allocates memory which may contain code (default tag). + * + * @returns Pointer to the allocated memory. + * @returns NULL on failure. + * @param cb Size in bytes of the memory block to allocate. + */ +#define RTMemExecAlloc(cb) RTMemExecAllocTag((cb), RTMEM_TAG) + +/** + * Allocates memory which may contain code (custom tag). + * + * @returns Pointer to the allocated memory. + * @returns NULL on failure. + * @param cb Size in bytes of the memory block to allocate. + * @param pszTag Allocation tag used for statistics and such. + */ +RTDECL(void *) RTMemExecAllocTag(size_t cb, const char *pszTag) RT_NO_THROW; + +/** + * Free executable/read/write memory allocated by RTMemExecAlloc(). + * + * @param pv Pointer to memory block. + * @param cb The allocation size. + */ +RTDECL(void) RTMemExecFree(void *pv, size_t cb) RT_NO_THROW; + +#if defined(IN_RING0) && defined(RT_ARCH_AMD64) && defined(RT_OS_LINUX) +/** + * Donate read+write+execute memory to the exec heap. + * + * This API is specific to AMD64 and Linux/GNU. A kernel module that desires to + * use RTMemExecAlloc on AMD64 Linux/GNU will have to donate some statically + * allocated memory in the module if it wishes for GCC generated code to work. + * GCC can only generate modules that work in the address range ~2GB to ~0 + * currently. + * + * The API only accept one single donation. + * + * @returns IPRT status code. + * @param pvMemory Pointer to the memory block. + * @param cb The size of the memory block. + */ +RTR0DECL(int) RTR0MemExecDonate(void *pvMemory, size_t cb) RT_NO_THROW; +#endif /* R0+AMD64+LINUX */ + +/** + * Allocate page aligned memory with default tag. + * + * @returns Pointer to the allocated memory. + * @returns NULL if we're out of memory. + * @param cb Size of the memory block. Will be rounded up to page size. + */ +#define RTMemPageAlloc(cb) RTMemPageAllocTag((cb), RTMEM_TAG) + +/** + * Allocate page aligned memory with custom tag. + * + * @returns Pointer to the allocated memory. + * @returns NULL if we're out of memory. + * @param cb Size of the memory block. Will be rounded up to page size. + * @param pszTag Allocation tag used for statistics and such. + */ +RTDECL(void *) RTMemPageAllocTag(size_t cb, const char *pszTag) RT_NO_THROW; + +/** + * Allocate zero'd page aligned memory with default tag. + * + * @returns Pointer to the allocated memory. + * @returns NULL if we're out of memory. + * @param cb Size of the memory block. Will be rounded up to page size. + */ +#define RTMemPageAllocZ(cb) RTMemPageAllocZTag((cb), RTMEM_TAG) + +/** + * Allocate zero'd page aligned memory with custom tag. + * + * @returns Pointer to the allocated memory. + * @returns NULL if we're out of memory. + * @param cb Size of the memory block. Will be rounded up to page size. + * @param pszTag Allocation tag used for statistics and such. + */ +RTDECL(void *) RTMemPageAllocZTag(size_t cb, const char *pszTag) RT_NO_THROW; + +/** + * Free a memory block allocated with RTMemPageAlloc() or RTMemPageAllocZ(). + * + * @param pv Pointer to the block as it was returned by the allocation function. + * NULL will be ignored. + * @param cb The allocation size. Will be rounded up to page size. + * Ignored if @a pv is NULL. + */ +RTDECL(void) RTMemPageFree(void *pv, size_t cb) RT_NO_THROW; + +/** Page level protection flags for RTMemProtect(). + * @{ + */ +/** No access at all. */ +#define RTMEM_PROT_NONE 0 +/** Read access. */ +#define RTMEM_PROT_READ 1 +/** Write access. */ +#define RTMEM_PROT_WRITE 2 +/** Execute access. */ +#define RTMEM_PROT_EXEC 4 +/** @} */ + +/** + * Change the page level protection of a memory region. + * + * @returns iprt status code. + * @param pv Start of the region. Will be rounded down to nearest page boundary. + * @param cb Size of the region. Will be rounded up to the nearest page boundary. + * @param fProtect The new protection, a combination of the RTMEM_PROT_* defines. + */ +RTDECL(int) RTMemProtect(void *pv, size_t cb, unsigned fProtect) RT_NO_THROW; + +/** + * Goes thru some pains to make sure the specified memory block is thoroughly + * scrambled. + * + * @param pv The start of the memory block. + * @param cb The size of the memory block. + * @param cMinPasses The minimum number of passes to make. + */ +RTDECL(void) RTMemWipeThoroughly(void *pv, size_t cb, size_t cMinPasses) RT_NO_THROW; + +#ifdef IN_RING0 + +/** + * Allocates physical contiguous memory (below 4GB). + * The allocation is page aligned and the content is undefined. + * + * @returns Pointer to the memory block. This is page aligned. + * @param pPhys Where to store the physical address. + * @param cb The allocation size in bytes. This is always + * rounded up to PAGE_SIZE. + */ +RTR0DECL(void *) RTMemContAlloc(PRTCCPHYS pPhys, size_t cb) RT_NO_THROW; + +/** + * Frees memory allocated ysing RTMemContAlloc(). + * + * @param pv Pointer to return from RTMemContAlloc(). + * @param cb The cb parameter passed to RTMemContAlloc(). + */ +RTR0DECL(void) RTMemContFree(void *pv, size_t cb) RT_NO_THROW; + +/** + * Copy memory from an user mode buffer into a kernel buffer. + * + * @retval VINF_SUCCESS on success. + * @retval VERR_ACCESS_DENIED on error. + * + * @param pvDst The kernel mode destination address. + * @param R3PtrSrc The user mode source address. + * @param cb The number of bytes to copy. + */ +RTR0DECL(int) RTR0MemUserCopyFrom(void *pvDst, RTR3PTR R3PtrSrc, size_t cb); + +/** + * Copy memory from a kernel buffer into a user mode one. + * + * @retval VINF_SUCCESS on success. + * @retval VERR_ACCESS_DENIED on error. + * + * @param R3PtrDst The user mode destination address. + * @param pvSrc The kernel mode source address. + * @param cb The number of bytes to copy. + */ +RTR0DECL(int) RTR0MemUserCopyTo(RTR3PTR R3PtrDst, void const *pvSrc, size_t cb); + +/** + * Tests if the specified address is in the user addressable range. + * + * This function does not check whether the memory at that address is accessible + * or anything of that sort, only if the address it self is in the user mode + * range. + * + * @returns true if it's in the user addressable range. false if not. + * @param R3Ptr The user mode pointer to test. + * + * @remarks Some systems may have overlapping kernel and user address ranges. + * One prominent example of this is the x86 version of Mac OS X. Use + * RTR0MemAreKrnlAndUsrDifferent() to check. + */ +RTR0DECL(bool) RTR0MemUserIsValidAddr(RTR3PTR R3Ptr); + +/** + * Tests if the specified address is in the kernel mode range. + * + * This function does not check whether the memory at that address is accessible + * or anything of that sort, only if the address it self is in the kernel mode + * range. + * + * @returns true if it's in the kernel range. false if not. + * @param pv The alleged kernel mode pointer. + * + * @remarks Some systems may have overlapping kernel and user address ranges. + * One prominent example of this is the x86 version of Mac OS X. Use + * RTR0MemAreKrnlAndUsrDifferent() to check. + */ +RTR0DECL(bool) RTR0MemKernelIsValidAddr(void *pv); + +/** + * Are user mode and kernel mode address ranges distinctly different. + * + * This determines whether RTR0MemKernelIsValidAddr and RTR0MemUserIsValidAddr + * can be used for deciding whether some arbitrary address is a user mode or a + * kernel mode one. + * + * @returns true if they are, false if not. + */ +RTR0DECL(bool) RTR0MemAreKrnlAndUsrDifferent(void); + +/** + * Copy memory from an potentially unsafe kernel mode location and into a safe + * (kernel) buffer. + * + * @retval VINF_SUCCESS on success. + * @retval VERR_ACCESS_DENIED on error. + * @retval VERR_NOT_SUPPORTED if not (yet) supported. + * + * @param pvDst The destination address (safe). + * @param pvSrc The source address (potentially unsafe). + * @param cb The number of bytes to copy. + */ +RTR0DECL(int) RTR0MemKernelCopyFrom(void *pvDst, void const *pvSrc, size_t cb); + +/** + * Copy from a safe (kernel) buffer and to a potentially unsafe kenrel mode + * location. + * + * @retval VINF_SUCCESS on success. + * @retval VERR_ACCESS_DENIED on error. + * @retval VERR_NOT_SUPPORTED if not (yet) supported. + * + * @param pvDst The destination address (potentially unsafe). + * @param pvSrc The source address (safe). + * @param cb The number of bytes to copy. + */ +RTR0DECL(int) RTR0MemKernelCopyTo(void *pvDst, void const *pvSrc, size_t cb); + +#endif /* IN_RING0 */ + + +/** @name Electrical Fence Version of some APIs. + * @{ + */ + +/** + * Same as RTMemTmpAllocTag() except that it's fenced. + * + * @returns Pointer to the allocated memory. + * @returns NULL on failure. + * @param cb Size in bytes of the memory block to allocate. + * @param pszTag Allocation tag used for statistics and such. + */ +RTDECL(void *) RTMemEfTmpAlloc(size_t cb, const char *pszTag, RT_SRC_POS_DECL) RT_NO_THROW; + +/** + * Same as RTMemTmpAllocZTag() except that it's fenced. + * + * @returns Pointer to the allocated memory. + * @returns NULL on failure. + * @param cb Size in bytes of the memory block to allocate. + * @param pszTag Allocation tag used for statistics and such. + */ +RTDECL(void *) RTMemEfTmpAllocZ(size_t cb, const char *pszTag, RT_SRC_POS_DECL) RT_NO_THROW; + +/** + * Same as RTMemTmpFree() except that it's for fenced memory. + * + * @param pv Pointer to memory block. + */ +RTDECL(void) RTMemEfTmpFree(void *pv, RT_SRC_POS_DECL) RT_NO_THROW; + +/** + * Same as RTMemAllocTag() except that it's fenced. + * + * @returns Pointer to the allocated memory. Free with RTMemEfFree(). + * @returns NULL on failure. + * @param cb Size in bytes of the memory block to allocate. + * @param pszTag Allocation tag used for statistics and such. + */ +RTDECL(void *) RTMemEfAlloc(size_t cb, const char *pszTag, RT_SRC_POS_DECL) RT_NO_THROW; + +/** + * Same as RTMemAllocZTag() except that it's fenced. + * + * @returns Pointer to the allocated memory. + * @returns NULL on failure. + * @param cb Size in bytes of the memory block to allocate. + * @param pszTag Allocation tag used for statistics and such. + */ +RTDECL(void *) RTMemEfAllocZ(size_t cb, const char *pszTag, RT_SRC_POS_DECL) RT_NO_THROW; + +/** + * Same as RTMemAllocVarTag() except that it's fenced. + * + * @returns Pointer to the allocated memory. Free with RTMemEfFree(). + * @returns NULL on failure. + * @param cbUnaligned Size in bytes of the memory block to allocate. + * @param pszTag Allocation tag used for statistics and such. + */ +RTDECL(void *) RTMemEfAllocVar(size_t cbUnaligned, const char *pszTag, RT_SRC_POS_DECL) RT_NO_THROW; + +/** + * Same as RTMemAllocZVarTag() except that it's fenced. + * + * @returns Pointer to the allocated memory. + * @returns NULL on failure. + * @param cbUnaligned Size in bytes of the memory block to allocate. + * @param pszTag Allocation tag used for statistics and such. + */ +RTDECL(void *) RTMemEfAllocZVar(size_t cbUnaligned, const char *pszTag, RT_SRC_POS_DECL) RT_NO_THROW; + +/** + * Same as RTMemReallocTag() except that it's fenced. + * + * @returns Pointer to the allocated memory. + * @returns NULL on failure. + * @param pvOld The memory block to reallocate. + * @param cbNew The new block size (in bytes). + * @param pszTag Allocation tag used for statistics and such. + */ +RTDECL(void *) RTMemEfRealloc(void *pvOld, size_t cbNew, const char *pszTag, RT_SRC_POS_DECL) RT_NO_THROW; + +/** + * Free memory allocated by any of the RTMemEf* allocators. + * + * @param pv Pointer to memory block. + */ +RTDECL(void) RTMemEfFree(void *pv, RT_SRC_POS_DECL) RT_NO_THROW; + +/** + * Same as RTMemDupTag() except that it's fenced. + * + * @returns New heap block with the duplicate data. + * @returns NULL if we're out of memory. + * @param pvSrc The memory to duplicate. + * @param cb The amount of memory to duplicate. + * @param pszTag Allocation tag used for statistics and such. + */ +RTDECL(void *) RTMemEfDup(const void *pvSrc, size_t cb, const char *pszTag, RT_SRC_POS_DECL) RT_NO_THROW; + +/** + * Same as RTMemEfDupExTag except that it's fenced. + * + * @returns New heap block with the duplicate data. + * @returns NULL if we're out of memory. + * @param pvSrc The memory to duplicate. + * @param cbSrc The amount of memory to duplicate. + * @param cbExtra The amount of extra memory to allocate and zero. + * @param pszTag Allocation tag used for statistics and such. + */ +RTDECL(void *) RTMemEfDupEx(const void *pvSrc, size_t cbSrc, size_t cbExtra, const char *pszTag, RT_SRC_POS_DECL) RT_NO_THROW; + +/** @def RTMEM_WRAP_SOME_NEW_AND_DELETE_TO_EF + * Define RTMEM_WRAP_SOME_NEW_AND_DELETE_TO_EF to enable electric fence new and + * delete operators for classes which uses the RTMEMEF_NEW_AND_DELETE_OPERATORS + * macro. + */ +/** @def RTMEMEF_NEW_AND_DELETE_OPERATORS + * Defines the electric fence new and delete operators for a class when + * RTMEM_WRAP_SOME_NEW_AND_DELETE_TO_EF is define. + */ +#if defined(RTMEM_WRAP_SOME_NEW_AND_DELETE_TO_EF) && !defined(RTMEM_NO_WRAP_SOME_NEW_AND_DELETE_TO_EF) +# if defined(RT_EXCEPTIONS_ENABLED) +# define RTMEMEF_NEW_AND_DELETE_OPERATORS() \ + void *operator new(size_t cb) RT_THROW(std::bad_alloc) \ + { \ + void *pv = RTMemEfAlloc(cb, RTMEM_TAG, RT_SRC_POS); \ + if (RT_LIKELY(pv)) \ + return pv; \ + throw std::bad_alloc(); \ + } \ + void *operator new(size_t cb, const std::nothrow_t ¬hrow_constant) RT_NO_THROW \ + { \ + NOREF(nothrow_constant); \ + return RTMemEfAlloc(cb, RTMEM_TAG, RT_SRC_POS); \ + } \ + void *operator new[](size_t cb) RT_THROW(std::bad_alloc) \ + { \ + void *pv = RTMemEfAlloc(cb, RTMEM_TAG, RT_SRC_POS); \ + if (RT_LIKELY(pv)) \ + return pv; \ + throw std::bad_alloc(); \ + } \ + void *operator new[](size_t cb, const std::nothrow_t ¬hrow_constant) RT_NO_THROW \ + { \ + NOREF(nothrow_constant); \ + return RTMemEfAlloc(cb, RTMEM_TAG, RT_SRC_POS); \ + } \ + \ + void operator delete(void *pv) RT_NO_THROW \ + { \ + RTMemEfFree(pv, RT_SRC_POS); \ + } \ + void operator delete(void *pv, const std::nothrow_t ¬hrow_constant) RT_NO_THROW \ + { \ + NOREF(nothrow_constant); \ + RTMemEfFree(pv, RT_SRC_POS); \ + } \ + void operator delete[](void *pv) RT_NO_THROW \ + { \ + RTMemEfFree(pv, RT_SRC_POS); \ + } \ + void operator delete[](void *pv, const std::nothrow_t ¬hrow_constant) RT_NO_THROW \ + { \ + NOREF(nothrow_constant); \ + RTMemEfFree(pv, RT_SRC_POS); \ + } \ + \ + typedef int UsingElectricNewAndDeleteOperators +# else +# define RTMEMEF_NEW_AND_DELETE_OPERATORS() \ + void *operator new(size_t cb) \ + { \ + return RTMemEfAlloc(cb, RTMEM_TAG, RT_SRC_POS); \ + } \ + void *operator new(size_t cb, const std::nothrow_t ¬hrow_constant) \ + { \ + NOREF(nothrow_constant); \ + return RTMemEfAlloc(cb, RTMEM_TAG, RT_SRC_POS); \ + } \ + void *operator new[](size_t cb) \ + { \ + return RTMemEfAlloc(cb, RTMEM_TAG, RT_SRC_POS); \ + } \ + void *operator new[](size_t cb, const std::nothrow_t ¬hrow_constant) \ + { \ + NOREF(nothrow_constant); \ + return RTMemEfAlloc(cb, RTMEM_TAG, RT_SRC_POS); \ + } \ + \ + void operator delete(void *pv) \ + { \ + RTMemEfFree(pv, RT_SRC_POS); \ + } \ + void operator delete(void *pv, const std::nothrow_t ¬hrow_constant) \ + { \ + NOREF(nothrow_constant); \ + RTMemEfFree(pv, RT_SRC_POS); \ + } \ + void operator delete[](void *pv) \ + { \ + RTMemEfFree(pv, RT_SRC_POS); \ + } \ + void operator delete[](void *pv, const std::nothrow_t ¬hrow_constant) \ + { \ + NOREF(nothrow_constant); \ + RTMemEfFree(pv, RT_SRC_POS); \ + } \ + \ + typedef int UsingElectricNewAndDeleteOperators +# endif +#else +# define RTMEMEF_NEW_AND_DELETE_OPERATORS() \ + typedef int UsingDefaultNewAndDeleteOperators +#endif +#ifdef DOXYGEN_RUNNING +# define RTMEM_WRAP_SOME_NEW_AND_DELETE_TO_EF +#endif + +/** @def RTMEM_WRAP_TO_EF_APIS + * Define RTMEM_WRAP_TO_EF_APIS to wrap RTMem APIs to RTMemEf APIs. + */ +#if defined(RTMEM_WRAP_TO_EF_APIS) && defined(IN_RING3) && !defined(RTMEM_NO_WRAP_TO_EF_APIS) +# define RTMemTmpAllocTag(cb, pszTag) RTMemEfTmpAlloc((cb), (pszTag), RT_SRC_POS) +# define RTMemTmpAllocZTag(cb, pszTag) RTMemEfTmpAllocZ((cb), (pszTag), RT_SRC_POS) +# define RTMemTmpFree(pv) RTMemEfTmpFree((pv), RT_SRC_POS) +# define RTMemAllocTag(cb, pszTag) RTMemEfAlloc((cb), (pszTag), RT_SRC_POS) +# define RTMemAllocZTag(cb, pszTag) RTMemEfAllocZ((cb), (pszTag), RT_SRC_POS) +# define RTMemAllocVarTag(cbUnaligned, pszTag) RTMemEfAllocVar((cbUnaligned), (pszTag), RT_SRC_POS) +# define RTMemAllocZVarTag(cbUnaligned, pszTag) RTMemEfAllocZVar((cbUnaligned), (pszTag), RT_SRC_POS) +# define RTMemReallocTag(pvOld, cbNew, pszTag) RTMemEfRealloc((pvOld), (cbNew), (pszTag), RT_SRC_POS) +# define RTMemFree(pv) RTMemEfFree((pv), RT_SRC_POS) +# define RTMemDupTag(pvSrc, cb, pszTag) RTMemEfDup((pvSrc), (cb), (pszTag), RT_SRC_POS) +# define RTMemDupExTag(pvSrc, cbSrc, cbExtra, pszTag) RTMemEfDupEx((pvSrc), (cbSrc), (cbExtra), (pszTag), RT_SRC_POS) +#endif +#ifdef DOXYGEN_RUNNING +# define RTMEM_WRAP_TO_EF_APIS +#endif + +/** + * Fenced drop-in replacement for RTMemTmpAllocTag. + * @copydoc RTMemTmpAllocTag + */ +RTDECL(void *) RTMemEfTmpAllocNP(size_t cb, const char *pszTag) RT_NO_THROW; + +/** + * Fenced drop-in replacement for RTMemTmpAllocZTag. + * @copydoc RTMemTmpAllocZTag + */ +RTDECL(void *) RTMemEfTmpAllocZNP(size_t cb, const char *pszTag) RT_NO_THROW; + +/** + * Fenced drop-in replacement for RTMemTmpFreeTag. + * @copydoc RTMemTmpFreeTag + */ +RTDECL(void) RTMemEfTmpFreeNP(void *pv) RT_NO_THROW; + +/** + * Fenced drop-in replacement for RTMemAllocTag. + * @copydoc RTMemAllocTag + */ +RTDECL(void *) RTMemEfAllocNP(size_t cb, const char *pszTag) RT_NO_THROW; + +/** + * Fenced drop-in replacement for RTMemAllocZTag. + * @copydoc RTMemAllocZTag + */ +RTDECL(void *) RTMemEfAllocZNP(size_t cb, const char *pszTag) RT_NO_THROW; + +/** + * Fenced drop-in replacement for RTMemAllocVarTag + * @copydoc RTMemAllocVarTag + */ +RTDECL(void *) RTMemEfAllocVarNP(size_t cbUnaligned, const char *pszTag) RT_NO_THROW; + +/** + * Fenced drop-in replacement for RTMemAllocZVarTag. + * @copydoc RTMemAllocZVarTag + */ +RTDECL(void *) RTMemEfAllocZVarNP(size_t cbUnaligned, const char *pszTag) RT_NO_THROW; + +/** + * Fenced drop-in replacement for RTMemReallocTag. + * @copydoc RTMemReallocTag + */ +RTDECL(void *) RTMemEfReallocNP(void *pvOld, size_t cbNew, const char *pszTag) RT_NO_THROW; + +/** + * Fenced drop-in replacement for RTMemFree. + * @copydoc RTMemFree + */ +RTDECL(void) RTMemEfFreeNP(void *pv) RT_NO_THROW; + +/** + * Fenced drop-in replacement for RTMemDupExTag. + * @copydoc RTMemDupExTag + */ +RTDECL(void *) RTMemEfDupNP(const void *pvSrc, size_t cb, const char *pszTag) RT_NO_THROW; + +/** + * Fenced drop-in replacement for RTMemDupExTag. + * @copydoc RTMemDupExTag + */ +RTDECL(void *) RTMemEfDupExNP(const void *pvSrc, size_t cbSrc, size_t cbExtra, const char *pszTag) RT_NO_THROW; + +/** @} */ + +RT_C_DECLS_END + +/** @} */ + + +#endif + --- linux-raspi2-4.2.0.orig/ubuntu/vbox/include/iprt/memobj.h +++ linux-raspi2-4.2.0/ubuntu/vbox/include/iprt/memobj.h @@ -0,0 +1,629 @@ +/** @file + * IPRT - Memory Objects (Ring-0). + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + +#ifndef ___iprt_memobj_h +#define ___iprt_memobj_h + +#include +#include + +RT_C_DECLS_BEGIN + +/** @defgroup grp_rt_memobj RTMemObj - Memory Object Manipulation (Ring-0) + * @ingroup grp_rt + * @{ + */ + +/** @def RTMEM_TAG + * The default allocation tag used by the RTMem allocation APIs. + * + * When not defined before the inclusion of iprt/memobj.h or iprt/mem.h, this + * will default to the pointer to the current file name. The memory API will + * make of use of this as pointer to a volatile but read-only string. + */ +#ifndef RTMEM_TAG +# define RTMEM_TAG (__FILE__) +#endif + +#ifdef IN_RING0 + +/** + * Checks if this is mapping or not. + * + * @returns true if it's a mapping, otherwise false. + * @param MemObj The ring-0 memory object handle. + */ +RTR0DECL(bool) RTR0MemObjIsMapping(RTR0MEMOBJ MemObj); + +/** + * Gets the address of a ring-0 memory object. + * + * @returns The address of the memory object. + * @returns NULL if the handle is invalid (asserts in strict builds) or if there isn't any mapping. + * @param MemObj The ring-0 memory object handle. + */ +RTR0DECL(void *) RTR0MemObjAddress(RTR0MEMOBJ MemObj); + +/** + * Gets the ring-3 address of a ring-0 memory object. + * + * This only applies to ring-0 memory object with ring-3 mappings of some kind, i.e. + * locked user memory, reserved user address space and user mappings. This API should + * not be used on any other objects. + * + * @returns The address of the memory object. + * @returns NIL_RTR3PTR if the handle is invalid or if it's not an object with a ring-3 mapping. + * Strict builds will assert in both cases. + * @param MemObj The ring-0 memory object handle. + */ +RTR0DECL(RTR3PTR) RTR0MemObjAddressR3(RTR0MEMOBJ MemObj); + +/** + * Gets the size of a ring-0 memory object. + * + * The returned value may differ from the one specified to the API creating the + * object because of alignment adjustments. The minimal alignment currently + * employed by any API is PAGE_SIZE, so the result can safely be shifted by + * PAGE_SHIFT to calculate a page count. + * + * @returns The object size. + * @returns 0 if the handle is invalid (asserts in strict builds) or if there isn't any mapping. + * @param MemObj The ring-0 memory object handle. + */ +RTR0DECL(size_t) RTR0MemObjSize(RTR0MEMOBJ MemObj); + +/** + * Get the physical address of an page in the memory object. + * + * @returns The physical address. + * @returns NIL_RTHCPHYS if the object doesn't contain fixed physical pages. + * @returns NIL_RTHCPHYS if the iPage is out of range. + * @returns NIL_RTHCPHYS if the object handle isn't valid. + * @param MemObj The ring-0 memory object handle. + * @param iPage The page number within the object. + */ +RTR0DECL(RTHCPHYS) RTR0MemObjGetPagePhysAddr(RTR0MEMOBJ MemObj, size_t iPage); + +/** + * Frees a ring-0 memory object. + * + * @returns IPRT status code. + * @retval VERR_INVALID_HANDLE if + * @param MemObj The ring-0 memory object to be freed. NULL is accepted. + * @param fFreeMappings Whether or not to free mappings of the object. + */ +RTR0DECL(int) RTR0MemObjFree(RTR0MEMOBJ MemObj, bool fFreeMappings); + +/** + * Allocates page aligned virtual kernel memory (default tag). + * + * The memory is taken from a non paged (= fixed physical memory backing) pool. + * + * @returns IPRT status code. + * @param pMemObj Where to store the ring-0 memory object handle. + * @param cb Number of bytes to allocate. This is rounded up to nearest page. + * @param fExecutable Flag indicating whether it should be permitted to executed code in the memory object. + */ +#define RTR0MemObjAllocPage(pMemObj, cb, fExecutable) \ + RTR0MemObjAllocPageTag((pMemObj), (cb), (fExecutable), RTMEM_TAG) + +/** + * Allocates page aligned virtual kernel memory (custom tag). + * + * The memory is taken from a non paged (= fixed physical memory backing) pool. + * + * @returns IPRT status code. + * @param pMemObj Where to store the ring-0 memory object handle. + * @param cb Number of bytes to allocate. This is rounded up to nearest page. + * @param fExecutable Flag indicating whether it should be permitted to executed code in the memory object. + * @param pszTag Allocation tag used for statistics and such. + */ +RTR0DECL(int) RTR0MemObjAllocPageTag(PRTR0MEMOBJ pMemObj, size_t cb, bool fExecutable, const char *pszTag); + +/** + * Allocates page aligned virtual kernel memory with physical backing below 4GB + * (default tag). + * + * The physical memory backing the allocation is fixed. + * + * @returns IPRT status code. + * @param pMemObj Where to store the ring-0 memory object handle. + * @param cb Number of bytes to allocate. This is rounded up to nearest page. + * @param fExecutable Flag indicating whether it should be permitted to executed code in the memory object. + */ +#define RTR0MemObjAllocLow(pMemObj, cb, fExecutable) \ + RTR0MemObjAllocLowTag((pMemObj), (cb), (fExecutable), RTMEM_TAG) + +/** + * Allocates page aligned virtual kernel memory with physical backing below 4GB + * (custom tag). + * + * The physical memory backing the allocation is fixed. + * + * @returns IPRT status code. + * @param pMemObj Where to store the ring-0 memory object handle. + * @param cb Number of bytes to allocate. This is rounded up to nearest page. + * @param fExecutable Flag indicating whether it should be permitted to executed code in the memory object. + * @param pszTag Allocation tag used for statistics and such. + */ +RTR0DECL(int) RTR0MemObjAllocLowTag(PRTR0MEMOBJ pMemObj, size_t cb, bool fExecutable, const char *pszTag); + +/** + * Allocates page aligned virtual kernel memory with contiguous physical backing + * below 4GB (default tag). + * + * The physical memory backing the allocation is fixed. + * + * @returns IPRT status code. + * @param pMemObj Where to store the ring-0 memory object handle. + * @param cb Number of bytes to allocate. This is rounded up to nearest page. + * @param fExecutable Flag indicating whether it should be permitted to executed code in the memory object. + */ +#define RTR0MemObjAllocCont(pMemObj, cb, fExecutable) \ + RTR0MemObjAllocContTag((pMemObj), (cb), (fExecutable), RTMEM_TAG) + +/** + * Allocates page aligned virtual kernel memory with contiguous physical backing + * below 4GB (custom tag). + * + * The physical memory backing the allocation is fixed. + * + * @returns IPRT status code. + * @param pMemObj Where to store the ring-0 memory object handle. + * @param cb Number of bytes to allocate. This is rounded up to nearest page. + * @param fExecutable Flag indicating whether it should be permitted to executed code in the memory object. + * @param pszTag Allocation tag used for statistics and such. + */ +RTR0DECL(int) RTR0MemObjAllocContTag(PRTR0MEMOBJ pMemObj, size_t cb, bool fExecutable, const char *pszTag); + +/** + * Locks a range of user virtual memory (default tag). + * + * @returns IPRT status code. + * @param pMemObj Where to store the ring-0 memory object handle. + * @param R3Ptr User virtual address. This is rounded down to a page + * boundary. + * @param cb Number of bytes to lock. This is rounded up to + * nearest page boundary. + * @param fAccess The desired access, a combination of RTMEM_PROT_READ + * and RTMEM_PROT_WRITE. + * @param R0Process The process to lock pages in. NIL_R0PROCESS is an + * alias for the current one. + * + * @remarks RTR0MemGetAddressR3() and RTR0MemGetAddress() will return therounded + * down address. + * + * @remarks Linux: This API requires that the memory begin locked is in a memory + * mapping that is not required in any forked off child process. This + * is not intented as permanent restriction, feel free to help out + * lifting it. + */ +#define RTR0MemObjLockUser(pMemObj, R3Ptr, cb, fAccess, R0Process) \ + RTR0MemObjLockUserTag((pMemObj), (R3Ptr), (cb), (fAccess), (R0Process), RTMEM_TAG) + +/** + * Locks a range of user virtual memory (custom tag). + * + * @returns IPRT status code. + * @param pMemObj Where to store the ring-0 memory object handle. + * @param R3Ptr User virtual address. This is rounded down to a page + * boundary. + * @param cb Number of bytes to lock. This is rounded up to + * nearest page boundary. + * @param fAccess The desired access, a combination of RTMEM_PROT_READ + * and RTMEM_PROT_WRITE. + * @param R0Process The process to lock pages in. NIL_R0PROCESS is an + * alias for the current one. + * @param pszTag Allocation tag used for statistics and such. + * + * @remarks RTR0MemGetAddressR3() and RTR0MemGetAddress() will return therounded + * down address. + * + * @remarks Linux: This API requires that the memory begin locked is in a memory + * mapping that is not required in any forked off child process. This + * is not intented as permanent restriction, feel free to help out + * lifting it. + */ +RTR0DECL(int) RTR0MemObjLockUserTag(PRTR0MEMOBJ pMemObj, RTR3PTR R3Ptr, size_t cb, uint32_t fAccess, + RTR0PROCESS R0Process, const char *pszTag); + +/** + * Locks a range of kernel virtual memory (default tag). + * + * @returns IPRT status code. + * @param pMemObj Where to store the ring-0 memory object handle. + * @param pv Kernel virtual address. This is rounded down to a page boundary. + * @param cb Number of bytes to lock. This is rounded up to nearest page boundary. + * @param fAccess The desired access, a combination of RTMEM_PROT_READ + * and RTMEM_PROT_WRITE. + * + * @remark RTR0MemGetAddress() will return the rounded down address. + */ +#define RTR0MemObjLockKernel(pMemObj, pv, cb, fAccess) \ + RTR0MemObjLockKernelTag((pMemObj), (pv), (cb), (fAccess), RTMEM_TAG) + +/** + * Locks a range of kernel virtual memory (custom tag). + * + * @returns IPRT status code. + * @param pMemObj Where to store the ring-0 memory object handle. + * @param pv Kernel virtual address. This is rounded down to a page boundary. + * @param cb Number of bytes to lock. This is rounded up to nearest page boundary. + * @param fAccess The desired access, a combination of RTMEM_PROT_READ + * and RTMEM_PROT_WRITE. + * @param pszTag Allocation tag used for statistics and such. + * + * @remark RTR0MemGetAddress() will return the rounded down address. + */ +RTR0DECL(int) RTR0MemObjLockKernelTag(PRTR0MEMOBJ pMemObj, void *pv, size_t cb, uint32_t fAccess, const char *pszTag); + +/** + * Allocates contiguous page aligned physical memory without (necessarily) any + * kernel mapping (default tag). + * + * @returns IPRT status code. + * @param pMemObj Where to store the ring-0 memory object handle. + * @param cb Number of bytes to allocate. This is rounded up to nearest page. + * @param PhysHighest The highest permitable address (inclusive). + * Pass NIL_RTHCPHYS if any address is acceptable. + */ +#define RTR0MemObjAllocPhys(pMemObj, cb, PhysHighest) \ + RTR0MemObjAllocPhysTag((pMemObj), (cb), (PhysHighest), RTMEM_TAG) + +/** + * Allocates contiguous page aligned physical memory without (necessarily) any + * kernel mapping (custom tag). + * + * @returns IPRT status code. + * @param pMemObj Where to store the ring-0 memory object handle. + * @param cb Number of bytes to allocate. This is rounded up to nearest page. + * @param PhysHighest The highest permitable address (inclusive). + * Pass NIL_RTHCPHYS if any address is acceptable. + * @param pszTag Allocation tag used for statistics and such. + */ +RTR0DECL(int) RTR0MemObjAllocPhysTag(PRTR0MEMOBJ pMemObj, size_t cb, RTHCPHYS PhysHighest, const char *pszTag); + +/** + * Allocates contiguous physical memory without (necessarily) any kernel mapping + * (default tag). + * + * @returns IPRT status code. + * @param pMemObj Where to store the ring-0 memory object handle. + * @param cb Number of bytes to allocate. This is rounded up to nearest page. + * @param PhysHighest The highest permitable address (inclusive). + * Pass NIL_RTHCPHYS if any address is acceptable. + * @param uAlignment The alignment of the reserved memory. + * Supported values are 0 (alias for PAGE_SIZE), PAGE_SIZE, _2M, _4M and _1G. + */ +#define RTR0MemObjAllocPhysEx(pMemObj, cb, PhysHighest, uAlignment) \ + RTR0MemObjAllocPhysExTag((pMemObj), (cb), (PhysHighest), (uAlignment), RTMEM_TAG) + +/** + * Allocates contiguous physical memory without (necessarily) any kernel mapping + * (custom tag). + * + * @returns IPRT status code. + * @param pMemObj Where to store the ring-0 memory object handle. + * @param cb Number of bytes to allocate. This is rounded up to nearest page. + * @param PhysHighest The highest permitable address (inclusive). + * Pass NIL_RTHCPHYS if any address is acceptable. + * @param uAlignment The alignment of the reserved memory. + * Supported values are 0 (alias for PAGE_SIZE), PAGE_SIZE, _2M, _4M and _1G. + * @param pszTag Allocation tag used for statistics and such. + */ +RTR0DECL(int) RTR0MemObjAllocPhysExTag(PRTR0MEMOBJ pMemObj, size_t cb, RTHCPHYS PhysHighest, size_t uAlignment, const char *pszTag); + +/** + * Allocates non-contiguous page aligned physical memory without (necessarily) + * any kernel mapping (default tag). + * + * This API is for allocating huge amounts of pages and will return + * VERR_NOT_SUPPORTED if this cannot be implemented in a satisfactory + * manner. + * + * @returns IPRT status code. + * @retval VERR_NOT_SUPPORTED if it's not possible to allocated unmapped + * physical memory on this platform. The caller should expect + * this error and have a fallback strategy for it. + * + * @param pMemObj Where to store the ring-0 memory object handle. + * @param cb Number of bytes to allocate. This is rounded up to nearest page. + * @param PhysHighest The highest permitable address (inclusive). + * Pass NIL_RTHCPHYS if any address is acceptable. + */ +#define RTR0MemObjAllocPhysNC(pMemObj, cb, PhysHighest) \ + RTR0MemObjAllocPhysNCTag((pMemObj), (cb), (PhysHighest), RTMEM_TAG) + +/** + * Allocates non-contiguous page aligned physical memory without (necessarily) + * any kernel mapping (custom tag). + * + * This API is for allocating huge amounts of pages and will return + * VERR_NOT_SUPPORTED if this cannot be implemented in a satisfactory + * manner. + * + * @returns IPRT status code. + * @retval VERR_NOT_SUPPORTED if it's not possible to allocated unmapped + * physical memory on this platform. The caller should expect + * this error and have a fallback strategy for it. + * + * @param pMemObj Where to store the ring-0 memory object handle. + * @param cb Number of bytes to allocate. This is rounded up to nearest page. + * @param PhysHighest The highest permitable address (inclusive). + * Pass NIL_RTHCPHYS if any address is acceptable. + * @param pszTag Allocation tag used for statistics and such. + */ +RTR0DECL(int) RTR0MemObjAllocPhysNCTag(PRTR0MEMOBJ pMemObj, size_t cb, RTHCPHYS PhysHighest, const char *pszTag); + +/** Memory cache policy for RTR0MemObjEnterPhys. + * @{ + */ +/** Default caching policy -- don't care. */ +#define RTMEM_CACHE_POLICY_DONT_CARE UINT32_C(0) +/** MMIO caching policy -- uncachable. */ +#define RTMEM_CACHE_POLICY_MMIO UINT32_C(1) +/** @} */ + +/** + * Creates a page aligned, contiguous, physical memory object (default tag). + * + * No physical memory is allocated, we trust you do know what you're doing. + * + * @returns IPRT status code. + * @param pMemObj Where to store the ring-0 memory object handle. + * @param Phys The physical address to start at. This is rounded down to the + * nearest page boundary. + * @param cb The size of the object in bytes. This is rounded up to nearest page boundary. + * @param uCachePolicy One of the RTMEM_CACHE_XXX modes. + */ +#define RTR0MemObjEnterPhys(pMemObj, Phys, cb, uCachePolicy) \ + RTR0MemObjEnterPhysTag((pMemObj), (Phys), (cb), (uCachePolicy), RTMEM_TAG) + +/** + * Creates a page aligned, contiguous, physical memory object (custom tag). + * + * No physical memory is allocated, we trust you do know what you're doing. + * + * @returns IPRT status code. + * @param pMemObj Where to store the ring-0 memory object handle. + * @param Phys The physical address to start at. This is rounded down to the + * nearest page boundary. + * @param cb The size of the object in bytes. This is rounded up to nearest page boundary. + * @param uCachePolicy One of the RTMEM_CACHE_XXX modes. + * @param pszTag Allocation tag used for statistics and such. + */ +RTR0DECL(int) RTR0MemObjEnterPhysTag(PRTR0MEMOBJ pMemObj, RTHCPHYS Phys, size_t cb, uint32_t uCachePolicy, const char *pszTag); + +/** + * Reserves kernel virtual address space (default tag). + * + * If this function fails with VERR_NOT_SUPPORTED, the idea is that you + * can use RTR0MemObjEnterPhys() + RTR0MemObjMapKernel() as a fallback if + * you have a safe physical address range to make use of... + * + * @returns IPRT status code. + * @param pMemObj Where to store the ring-0 memory object handle. + * @param pvFixed Requested address. (void *)-1 means any address. This must match the alignment. + * @param cb The number of bytes to reserve. This is rounded up to nearest page. + * @param uAlignment The alignment of the reserved memory. + * Supported values are 0 (alias for PAGE_SIZE), PAGE_SIZE, _2M and _4M. + */ +#define RTR0MemObjReserveKernel(pMemObj, pvFixed, cb, uAlignment) \ + RTR0MemObjReserveKernelTag((pMemObj), (pvFixed), (cb), (uAlignment), RTMEM_TAG) + +/** + * Reserves kernel virtual address space (custom tag). + * + * If this function fails with VERR_NOT_SUPPORTED, the idea is that you + * can use RTR0MemObjEnterPhys() + RTR0MemObjMapKernel() as a fallback if + * you have a safe physical address range to make use of... + * + * @returns IPRT status code. + * @param pMemObj Where to store the ring-0 memory object handle. + * @param pvFixed Requested address. (void *)-1 means any address. This must match the alignment. + * @param cb The number of bytes to reserve. This is rounded up to nearest page. + * @param uAlignment The alignment of the reserved memory. + * Supported values are 0 (alias for PAGE_SIZE), PAGE_SIZE, _2M and _4M. + * @param pszTag Allocation tag used for statistics and such. + */ +RTR0DECL(int) RTR0MemObjReserveKernelTag(PRTR0MEMOBJ pMemObj, void *pvFixed, size_t cb, size_t uAlignment, const char *pszTag); + +/** + * Reserves user virtual address space in the current process (default tag). + * + * @returns IPRT status code. + * @param pMemObj Where to store the ring-0 memory object handle. + * @param R3PtrFixed Requested address. (RTR3PTR)-1 means any address. This must match the alignment. + * @param cb The number of bytes to reserve. This is rounded up to nearest PAGE_SIZE. + * @param uAlignment The alignment of the reserved memory. + * Supported values are 0 (alias for PAGE_SIZE), PAGE_SIZE, _2M and _4M. + * @param R0Process The process to reserve the memory in. NIL_R0PROCESS is an alias for the current one. + */ +#define RTR0MemObjReserveUser(pMemObj, R3PtrFixed, cb, uAlignment, R0Process) \ + RTR0MemObjReserveUserTag((pMemObj), (R3PtrFixed), (cb), (uAlignment), (R0Process), RTMEM_TAG) + +/** + * Reserves user virtual address space in the current process (custom tag). + * + * @returns IPRT status code. + * @param pMemObj Where to store the ring-0 memory object handle. + * @param R3PtrFixed Requested address. (RTR3PTR)-1 means any address. This must match the alignment. + * @param cb The number of bytes to reserve. This is rounded up to nearest PAGE_SIZE. + * @param uAlignment The alignment of the reserved memory. + * Supported values are 0 (alias for PAGE_SIZE), PAGE_SIZE, _2M and _4M. + * @param R0Process The process to reserve the memory in. NIL_R0PROCESS is an alias for the current one. + * @param pszTag Allocation tag used for statistics and such. + */ +RTR0DECL(int) RTR0MemObjReserveUserTag(PRTR0MEMOBJ pMemObj, RTR3PTR R3PtrFixed, size_t cb, size_t uAlignment, + RTR0PROCESS R0Process, const char *pszTag); + +/** + * Maps a memory object into kernel virtual address space (default tag). + * + * This is the same as calling RTR0MemObjMapKernelEx with cbSub and offSub set + * to zero. + * + * @returns IPRT status code. + * @param pMemObj Where to store the ring-0 memory object handle of the mapping object. + * @param MemObjToMap The object to be map. + * @param pvFixed Requested address. (void *)-1 means any address. This must match the alignment. + * @param uAlignment The alignment of the reserved memory. + * Supported values are 0 (alias for PAGE_SIZE), PAGE_SIZE, _2M and _4M. + * @param fProt Combination of RTMEM_PROT_* flags (except RTMEM_PROT_NONE). + */ +#define RTR0MemObjMapKernel(pMemObj, MemObjToMap, pvFixed, uAlignment, fProt) \ + RTR0MemObjMapKernelTag((pMemObj), (MemObjToMap), (pvFixed), (uAlignment), (fProt), RTMEM_TAG) + +/** + * Maps a memory object into kernel virtual address space (custom tag). + * + * This is the same as calling RTR0MemObjMapKernelEx with cbSub and offSub set + * to zero. + * + * @returns IPRT status code. + * @param pMemObj Where to store the ring-0 memory object handle of the mapping object. + * @param MemObjToMap The object to be map. + * @param pvFixed Requested address. (void *)-1 means any address. This must match the alignment. + * @param uAlignment The alignment of the reserved memory. + * Supported values are 0 (alias for PAGE_SIZE), PAGE_SIZE, _2M and _4M. + * @param fProt Combination of RTMEM_PROT_* flags (except RTMEM_PROT_NONE). + * @param pszTag Allocation tag used for statistics and such. + */ +RTR0DECL(int) RTR0MemObjMapKernelTag(PRTR0MEMOBJ pMemObj, RTR0MEMOBJ MemObjToMap, void *pvFixed, + size_t uAlignment, unsigned fProt, const char *pszTag); + +/** + * Maps a memory object into kernel virtual address space (default tag). + * + * The ability to map subsections of the object into kernel space is currently + * not implemented on all platforms. All/Most of platforms supports mapping the + * whole object into kernel space. + * + * @returns IPRT status code. + * @retval VERR_NOT_SUPPORTED if it's not possible to map a subsection of a + * memory object on this platform. When you hit this, try implement it. + * + * @param pMemObj Where to store the ring-0 memory object handle of the mapping object. + * @param MemObjToMap The object to be map. + * @param pvFixed Requested address. (void *)-1 means any address. This must match the alignment. + * @param uAlignment The alignment of the reserved memory. + * Supported values are 0 (alias for PAGE_SIZE), PAGE_SIZE, _2M and _4M. + * @param fProt Combination of RTMEM_PROT_* flags (except RTMEM_PROT_NONE). + * @param offSub Where in the object to start mapping. If non-zero + * the value must be page aligned and cbSub must be + * non-zero as well. + * @param cbSub The size of the part of the object to be mapped. If + * zero the entire object is mapped. The value must be + * page aligned. + */ +#define RTR0MemObjMapKernelEx(pMemObj, MemObjToMap, pvFixed, uAlignment, fProt, offSub, cbSub) \ + RTR0MemObjMapKernelExTag((pMemObj), (MemObjToMap), (pvFixed), (uAlignment), (fProt), (offSub), (cbSub), RTMEM_TAG) + +/** + * Maps a memory object into kernel virtual address space (custom tag). + * + * The ability to map subsections of the object into kernel space is currently + * not implemented on all platforms. All/Most of platforms supports mapping the + * whole object into kernel space. + * + * @returns IPRT status code. + * @retval VERR_NOT_SUPPORTED if it's not possible to map a subsection of a + * memory object on this platform. When you hit this, try implement it. + * + * @param pMemObj Where to store the ring-0 memory object handle of the mapping object. + * @param MemObjToMap The object to be map. + * @param pvFixed Requested address. (void *)-1 means any address. This must match the alignment. + * @param uAlignment The alignment of the reserved memory. + * Supported values are 0 (alias for PAGE_SIZE), PAGE_SIZE, _2M and _4M. + * @param fProt Combination of RTMEM_PROT_* flags (except RTMEM_PROT_NONE). + * @param offSub Where in the object to start mapping. If non-zero + * the value must be page aligned and cbSub must be + * non-zero as well. + * @param cbSub The size of the part of the object to be mapped. If + * zero the entire object is mapped. The value must be + * page aligned. + * @param pszTag Allocation tag used for statistics and such. + */ +RTR0DECL(int) RTR0MemObjMapKernelExTag(PRTR0MEMOBJ pMemObj, RTR0MEMOBJ MemObjToMap, void *pvFixed, size_t uAlignment, + unsigned fProt, size_t offSub, size_t cbSub, const char *pszTag); + +/** + * Maps a memory object into user virtual address space in the current process + * (default tag). + * + * @returns IPRT status code. + * @param pMemObj Where to store the ring-0 memory object handle of the mapping object. + * @param MemObjToMap The object to be map. + * @param R3PtrFixed Requested address. (RTR3PTR)-1 means any address. This must match the alignment. + * @param uAlignment The alignment of the reserved memory. + * Supported values are 0 (alias for PAGE_SIZE), PAGE_SIZE, _2M and _4M. + * @param fProt Combination of RTMEM_PROT_* flags (except RTMEM_PROT_NONE). + * @param R0Process The process to map the memory into. NIL_R0PROCESS is an alias for the current one. + */ +#define RTR0MemObjMapUser(pMemObj, MemObjToMap, R3PtrFixed, uAlignment, fProt, R0Process) \ + RTR0MemObjMapUserTag((pMemObj), (MemObjToMap), (R3PtrFixed), (uAlignment), (fProt), (R0Process), RTMEM_TAG) + +/** + * Maps a memory object into user virtual address space in the current process + * (custom tag). + * + * @returns IPRT status code. + * @param pMemObj Where to store the ring-0 memory object handle of the mapping object. + * @param MemObjToMap The object to be map. + * @param R3PtrFixed Requested address. (RTR3PTR)-1 means any address. This must match the alignment. + * @param uAlignment The alignment of the reserved memory. + * Supported values are 0 (alias for PAGE_SIZE), PAGE_SIZE, _2M and _4M. + * @param fProt Combination of RTMEM_PROT_* flags (except RTMEM_PROT_NONE). + * @param R0Process The process to map the memory into. NIL_R0PROCESS is an alias for the current one. + * @param pszTag Allocation tag used for statistics and such. + */ +RTR0DECL(int) RTR0MemObjMapUserTag(PRTR0MEMOBJ pMemObj, RTR0MEMOBJ MemObjToMap, RTR3PTR R3PtrFixed, + size_t uAlignment, unsigned fProt, RTR0PROCESS R0Process, const char *pszTag); + +/** + * Change the page level protection of one or more pages in a memory object. + * + * @returns IPRT status code. + * @retval VERR_NOT_SUPPORTED if the OS doesn't provide any way to manipulate + * page level protection. The caller must handle this status code + * gracefully. (Note that it may also occur if the implementation is + * missing, in which case just go ahead and implement it.) + * + * @param hMemObj Memory object handle. + * @param offSub Offset into the memory object. Must be page aligned. + * @param cbSub Number of bytes to change the protection of. Must be + * page aligned. + * @param fProt Combination of RTMEM_PROT_* flags. + */ +RTR0DECL(int) RTR0MemObjProtect(RTR0MEMOBJ hMemObj, size_t offSub, size_t cbSub, uint32_t fProt); + +#endif /* IN_RING0 */ + +/** @} */ + +RT_C_DECLS_END + +#endif + --- linux-raspi2-4.2.0.orig/ubuntu/vbox/include/iprt/mp.h +++ linux-raspi2-4.2.0/ubuntu/vbox/include/iprt/mp.h @@ -0,0 +1,477 @@ +/** @file + * IPRT - Multiprocessor. + */ + +/* + * Copyright (C) 2008-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + +#ifndef ___iprt_mp_h +#define ___iprt_mp_h + +#include +#include + + +RT_C_DECLS_BEGIN + +/** @defgroup grp_rt_mp RTMp - Multiprocessor + * @ingroup grp_rt + * @{ + */ + +/** + * Gets the identifier of the CPU executing the call. + * + * When called from a system mode where scheduling is active, like ring-3 or + * kernel mode with interrupts enabled on some systems, no assumptions should + * be made about the current CPU when the call returns. + * + * @returns CPU Id. + */ +RTDECL(RTCPUID) RTMpCpuId(void); + +/** + * Get the CPU set index of the CPU executing the call. + * + * Same scheduling warnings as for RTMpCpuId(). + * + * @returns CPU set index. + */ +RTDECL(int) RTMpCurSetIndex(void); + +/** + * Get the CPU set index and identifier of the CPU executing the call. + * + * Same scheduling warnings as for RTMpCpuId(). + * + * @returns CPU set index. + * @param pidCpu Where to return the CPU identifier. (not optional) + */ +RTDECL(int) RTMpCurSetIndexAndId(PRTCPUID pidCpu); + +/** + * Converts a CPU identifier to a CPU set index. + * + * This may or may not validate the presence of the CPU. + * + * @returns The CPU set index on success, -1 on failure. + * @param idCpu The identifier of the CPU. + */ +RTDECL(int) RTMpCpuIdToSetIndex(RTCPUID idCpu); + +/** + * Converts a CPU set index to a a CPU identifier. + * + * This may or may not validate the presence of the CPU, so, use + * RTMpIsCpuPossible for that. + * + * @returns The corresponding CPU identifier, NIL_RTCPUID on failure. + * @param iCpu The CPU set index. + */ +RTDECL(RTCPUID) RTMpCpuIdFromSetIndex(int iCpu); + +/** + * Gets the max CPU identifier (inclusive). + * + * Intended for brute force enumerations, but use with + * care as it may be expensive. + * + * @returns The current higest CPU identifier value. + */ +RTDECL(RTCPUID) RTMpGetMaxCpuId(void); + +/** + * Gets the size of a CPU array that is indexed by CPU set index. + * + * This takes both online, offline and hot-plugged cpus into account. + * + * @returns Number of elements. + * + * @remarks Use RTMpCpuIdToSetIndex to convert a RTCPUID into an array index. + */ +RTDECL(uint32_t) RTMpGetArraySize(void); + +/** + * Checks if a CPU exists in the system or may possibly be hotplugged later. + * + * @returns true/false accordingly. + * @param idCpu The identifier of the CPU. + */ +RTDECL(bool) RTMpIsCpuPossible(RTCPUID idCpu); + +/** + * Gets set of the CPUs present in the system plus any that may + * possibly be hotplugged later. + * + * @returns pSet. + * @param pSet Where to put the set. + */ +RTDECL(PRTCPUSET) RTMpGetSet(PRTCPUSET pSet); + +/** + * Get the count of CPUs present in the system plus any that may + * possibly be hotplugged later. + * + * @returns The count. + * @remarks Don't use this for CPU array sizing, use RTMpGetArraySize instead. + */ +RTDECL(RTCPUID) RTMpGetCount(void); + +/** + * Get the count of physical CPU cores present in the system plus any that may + * possibly be hotplugged later. + * + * @returns The number of cores. + */ +RTDECL(RTCPUID) RTMpGetCoreCount(void); + +/** + * Gets set of the CPUs present that are currently online. + * + * @returns pSet. + * @param pSet Where to put the set. + */ +RTDECL(PRTCPUSET) RTMpGetOnlineSet(PRTCPUSET pSet); + +/** + * Get the count of CPUs that are currently online. + * + * @return The count. + */ +RTDECL(RTCPUID) RTMpGetOnlineCount(void); + +/** + * Get the count of physical CPU cores in the system with one or more online + * threads. + * + * @returns The number of online cores. + */ +RTDECL(RTCPUID) RTMpGetOnlineCoreCount(void); + +/** + * Checks if a CPU is online or not. + * + * @returns true/false accordingly. + * @param idCpu The identifier of the CPU. + */ +RTDECL(bool) RTMpIsCpuOnline(RTCPUID idCpu); + + +/** + * Gets set of the CPUs present in the system. + * + * @returns pSet. + * @param pSet Where to put the set. + */ +RTDECL(PRTCPUSET) RTMpGetPresentSet(PRTCPUSET pSet); + +/** + * Get the count of CPUs that are present in the system. + * + * @return The count. + */ +RTDECL(RTCPUID) RTMpGetPresentCount(void); + +/** + * Get the count of physical CPU cores present in the system. + * + * @returns The number of cores. + */ +RTDECL(RTCPUID) RTMpGetPresentCoreCount(void); + +/** + * Checks if a CPU is present in the system. + * + * @returns true/false accordingly. + * @param idCpu The identifier of the CPU. + */ +RTDECL(bool) RTMpIsCpuPresent(RTCPUID idCpu); + + +/** + * Get the current frequency of a CPU. + * + * The CPU must be online. + * + * @returns The frequency as MHz. 0 if the CPU is offline + * or the information is not available. + * @param idCpu The identifier of the CPU. + */ +RTDECL(uint32_t) RTMpGetCurFrequency(RTCPUID idCpu); + +/** + * Get the maximum frequency of a CPU. + * + * The CPU must be online. + * + * @returns The frequency as MHz. 0 if the CPU is offline + * or the information is not available. + * @param idCpu The identifier of the CPU. + */ +RTDECL(uint32_t) RTMpGetMaxFrequency(RTCPUID idCpu); + +/** + * Get the CPU description string. + * + * The CPU must be online. + * + * @returns IPRT status code. + * @param idCpu The identifier of the CPU. NIL_RTCPUID can be used to + * indicate the current CPU. + * @param pszBuf The output buffer. + * @param cbBuf The size of the output buffer. + */ +RTDECL(int) RTMpGetDescription(RTCPUID idCpu, char *pszBuf, size_t cbBuf); + + +#ifdef IN_RING0 + +/** + * Check if there's work (DPCs on Windows) pending on the current CPU. + * + * @return true if there's pending work on the current CPU, false otherwise. + */ +RTDECL(bool) RTMpIsCpuWorkPending(void); + + +/** + * Worker function passed to RTMpOnAll, RTMpOnOthers and RTMpOnSpecific that + * is to be called on the target cpus. + * + * @param idCpu The identifier for the CPU the function is called on. + * @param pvUser1 The 1st user argument. + * @param pvUser2 The 2nd user argument. + */ +typedef DECLCALLBACK(void) FNRTMPWORKER(RTCPUID idCpu, void *pvUser1, void *pvUser2); +/** Pointer to a FNRTMPWORKER. */ +typedef FNRTMPWORKER *PFNRTMPWORKER; + +/** @name RTMPON_F_XXX - RTMpOn flags. + * @{ */ +/** Caller doesn't care if pfnWorker is executed at the same time on the + * specified CPUs or not, as long as it gets executed. */ +#define RTMPON_F_WHATEVER_EXEC 0 +/** The caller insists on pfnWorker being executed more or less concurrently + * on the specified CPUs. */ +#define RTMPON_F_CONCURRENT_EXEC RT_BIT_32(1) +/** Mask of valid bits. */ +#define RTMPON_F_VALID_MASK UINT32_C(0x00000001) +/** @}*/ + +/** + * Checks if the RTMpOnAll() is safe with regards to all threads executing + * concurrently. + * + * If for instance, the RTMpOnAll() is implemented in a way where the threads + * might cause a classic deadlock, it is considered -not- concurrent safe. + * Windows currently is one such platform where it isn't safe. + * + * @returns true if RTMpOnAll() is concurrent safe, false otherwise. + */ +RTDECL(bool) RTMpOnAllIsConcurrentSafe(void); + +/** + * Executes a function on each (online) CPU in the system. + * + * @returns IPRT status code. + * @retval VINF_SUCCESS on success. + * @retval VERR_NOT_SUPPORTED if this kind of operation isn't supported by the system. + * + * @param pfnWorker The worker function. + * @param pvUser1 The first user argument for the worker. + * @param pvUser2 The second user argument for the worker. + * + * @remarks The execution isn't in any way guaranteed to be simultaneous, + * it might even be serial (cpu by cpu). + */ +RTDECL(int) RTMpOnAll(PFNRTMPWORKER pfnWorker, void *pvUser1, void *pvUser2); + +/** + * Executes a function on a all other (online) CPUs in the system. + * + * The caller must disable preemption prior to calling this API if the outcome + * is to make any sense. But do *not* disable interrupts. + * + * @returns IPRT status code. + * @retval VINF_SUCCESS on success. + * @retval VERR_NOT_SUPPORTED if this kind of operation isn't supported by the system. + * + * @param pfnWorker The worker function. + * @param pvUser1 The first user argument for the worker. + * @param pvUser2 The second user argument for the worker. + * + * @remarks The execution isn't in any way guaranteed to be simultaneous, + * it might even be serial (cpu by cpu). + */ +RTDECL(int) RTMpOnOthers(PFNRTMPWORKER pfnWorker, void *pvUser1, void *pvUser2); + +/** + * Executes a function on a specific CPU in the system. + * + * @returns IPRT status code. + * @retval VINF_SUCCESS on success. + * @retval VERR_NOT_SUPPORTED if this kind of operation isn't supported by the system. + * @retval VERR_CPU_OFFLINE if the CPU is offline. + * @retval VERR_CPU_NOT_FOUND if the CPU wasn't found. + * + * @param idCpu The id of the CPU. + * @param pfnWorker The worker function. + * @param pvUser1 The first user argument for the worker. + * @param pvUser2 The second user argument for the worker. + */ +RTDECL(int) RTMpOnSpecific(RTCPUID idCpu, PFNRTMPWORKER pfnWorker, void *pvUser1, void *pvUser2); + +/** + * Executes a function on two specific CPUs in the system. + * + * @returns IPRT status code. + * @retval VINF_SUCCESS on success. + * @retval VERR_NOT_SUPPORTED if this kind of operation isn't supported by the + * system or if the specified modifier flag isn't supported. + * @retval VERR_CPU_OFFLINE if one or more of the CPUs are offline (see + * remarks). + * @retval VERR_CPU_NOT_FOUND if on or both of the CPUs weren't found. + * @retval VERR_NOT_ALL_CPUS_SHOWED if one of the CPUs didn't show. + * + * @param idCpu1 The id of the first CPU. + * @param idCpu2 The id of the second CPU. + * @param fFlags Combination of RTMPON_F_XXX flags. + * @param pfnWorker The worker function. + * @param pvUser1 The first user argument for the worker. + * @param pvUser2 The second user argument for the worker. + * + * @remarks There is a possible race between one (or both) of the CPUs going + * offline while setting up the call. The worker function must take + * this into account. + */ +RTDECL(int) RTMpOnPair(RTCPUID idCpu1, RTCPUID idCpu2, uint32_t fFlags, PFNRTMPWORKER pfnWorker, void *pvUser1, void *pvUser2); + +/** + * Indicates whether RTMpOnPair supports running the pfnWorker concurrently on + * both CPUs using RTMPON_F_CONCURRENT_EXEC. + * + * @returns true if supported, false if not. + */ +RTDECL(bool) RTMpOnPairIsConcurrentExecSupported(void); + + +/** + * Pokes the specified CPU. + * + * This should cause the execution on the CPU to be interrupted and forcing it + * to enter kernel context. It is optimized version of a RTMpOnSpecific call + * with a worker which returns immediately. + * + * @returns IPRT status code. + * @retval VERR_NOT_SUPPORTED if this kind of operation isn't supported by the + * system. The caller must not automatically assume that this API works + * when any of the RTMpOn* APIs works. This is because not all systems + * supports unicast MP events and this API will not be implemented as a + * broadcast. + * @retval VERR_CPU_OFFLINE if the CPU is offline. + * @retval VERR_CPU_NOT_FOUND if the CPU wasn't found. + * + * @param idCpu The id of the CPU to poke. + */ +RTDECL(int) RTMpPokeCpu(RTCPUID idCpu); + + +/** + * MP event, see FNRTMPNOTIFICATION. + */ +typedef enum RTMPEVENT +{ + /** The CPU goes online. */ + RTMPEVENT_ONLINE = 1, + /** The CPU goes offline. */ + RTMPEVENT_OFFLINE +} RTMPEVENT; + +/** + * Notification callback. + * + * The context this is called in differs a bit from platform to platform, so be + * careful while in here. + * + * On Windows we're running with IRQL=PASSIVE_LEVEL (reschedulable) according to + * the KeRegisterProcessorChangeCallback documentation - unrestricted API + * access. Probably not being called on the onlined/offlined CPU... + * + * On Solaris we're holding the cpu_lock, IPL/SPL/PIL is not yet known, however + * we will most likely -not- be firing on the CPU going offline/online. + * + * On Linux it looks like we're called with preemption enabled on any CPU and + * not necessarily on the CPU going offline/online. + * + * There is no callbacks for darwin at the moment, due to lack of suitable KPI. + * + * @param idCpu The CPU this applies to. + * @param enmEvent The event. + * @param pvUser The user argument. + */ +typedef DECLCALLBACK(void) FNRTMPNOTIFICATION(RTMPEVENT enmEvent, RTCPUID idCpu, void *pvUser); +/** Pointer to a FNRTMPNOTIFICATION(). */ +typedef FNRTMPNOTIFICATION *PFNRTMPNOTIFICATION; + +/** + * Registers a notification callback for cpu events. + * + * On platforms which doesn't do cpu offline/online events this API + * will just be a no-op that pretends to work. + * + * @todo We'll be adding a flag to this soon to indicate whether the callback should be called on all + * CPUs that are currently online while it's being registered. This is to help avoid some race + * conditions (we'll hopefully be able to implement this on linux, solaris/win is no issue). + * + * @returns IPRT status code. + * @retval VINF_SUCCESS on success. + * @retval VERR_NO_MEMORY if a registration record cannot be allocated. + * @retval VERR_ALREADY_EXISTS if the pfnCallback and pvUser already exist + * in the callback list. + * + * @param pfnCallback The callback. + * @param pvUser The user argument to the callback function. + */ +RTDECL(int) RTMpNotificationRegister(PFNRTMPNOTIFICATION pfnCallback, void *pvUser); + +/** + * This deregisters a notification callback registered via RTMpNotificationRegister(). + * + * The pfnCallback and pvUser arguments must be identical to the registration call + * of we won't find the right entry. + * + * @returns IPRT status code. + * @retval VINF_SUCCESS on success. + * @retval VERR_NOT_FOUND if no matching entry was found. + * + * @param pfnCallback The callback. + * @param pvUser The user argument to the callback function. + */ +RTDECL(int) RTMpNotificationDeregister(PFNRTMPNOTIFICATION pfnCallback, void *pvUser); + +#endif /* IN_RING0 */ + +/** @} */ + +RT_C_DECLS_END + +#endif + --- linux-raspi2-4.2.0.orig/ubuntu/vbox/include/iprt/net.h +++ linux-raspi2-4.2.0/ubuntu/vbox/include/iprt/net.h @@ -0,0 +1,946 @@ +/** @file + * IPRT - Network Protocols. + */ + +/* + * Copyright (C) 2008-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + +#ifndef ___iprt_net_h +#define ___iprt_net_h + +#include +#include +#include + + +RT_C_DECLS_BEGIN + +/** @defgroup grp_rt_net RTNet - Network Protocols + * @ingroup grp_rt + * @{ + */ + +/** + * Converts an stringified Ethernet MAC address into the RTMAC representation. + * + * @todo This should be move to some generic part of the runtime. + * + * @returns VINF_SUCCESS on success, VERR_GETOPT_INVALID_ARGUMENT_FORMAT on + * failure. + * + * @param pszValue The value to convert. + * @param pAddr Where to store the result. + */ +RTDECL(int) RTNetStrToMacAddr(const char *pszAddr, PRTMAC pMacAddr); + +/** + * IPv4 address. + */ +typedef RTUINT32U RTNETADDRIPV4; +AssertCompileSize(RTNETADDRIPV4, 4); +/** Pointer to a IPv4 address. */ +typedef RTNETADDRIPV4 *PRTNETADDRIPV4; +/** Pointer to a const IPv4 address. */ +typedef RTNETADDRIPV4 const *PCRTNETADDRIPV4; + +/** + * Tests if the given string is an IPv4 address. + * + * @returns boolean. + * @param pcszAddr String which may be an IPv4 address. + */ +RTDECL(bool) RTNetIsIPv4AddrStr(const char *pcszAddr); + +/** + * Parses dotted-decimal IPv4 address into RTNETADDRIPV4 representation. + * + * @returns VINF_SUCCESS on success, VERR_INVALID_PARAMETER on + * failure. + * + * @param pcszAddr The value to convert. + * @param ppszNext Where to store the pointer to the first char + * following the address. (Optional) + * @param pAddr Where to store the result. + */ +RTDECL(int) RTNetStrToIPv4AddrEx(const char *pcszAddr, PRTNETADDRIPV4 pAddr, char **ppszNext); + +/** + * Parses dotted-decimal IPv4 address into RTNETADDRIPV4 representation. + * Leading and trailing whitespace is ignored. + * + * @returns VINF_SUCCESS on success, VERR_INVALID_PARAMETER on + * failure. + * + * @param pcszAddr The value to convert. + * @param pAddr Where to store the result. + */ +RTDECL(int) RTNetStrToIPv4Addr(const char *pcszAddr, PRTNETADDRIPV4 pAddr); + +/** + * IPv6 address. + */ +typedef RTUINT128U RTNETADDRIPV6; +AssertCompileSize(RTNETADDRIPV6, 16); +/** Pointer to a IPv6 address. */ +typedef RTNETADDRIPV6 *PRTNETADDRIPV6; +/** Pointer to a const IPv6 address. */ +typedef RTNETADDRIPV6 const *PCRTNETADDRIPV6; + +/** + * Tests if the given string is a valid IPv6 address. + * + * @returns @c true if it is, @c false if not. + * @param pszAddress String which may be an IPv6 address. + */ +RTDECL(bool) RTNetIsIPv6AddrStr(const char *pszAddress); + +/** + * Parses IPv6 address into RTNETADDRIPV6 representation. + * + * @returns VINF_SUCCESS on success, VERR_INVALID_PARAMETER on + * failure. + * + * @param pcszAddr The value to convert. + * @param ppszNext Where to store the pointer to the first char + * following the address. (Optional) + * @param pAddr Where to store the result. + */ +RTDECL(int) RTNetStrToIPv6AddrEx(const char *pcszAddr, PRTNETADDRIPV6 pAddr, char **ppszNext); + +/** + * Parses IPv6 address into RTNETADDRIPV6 representation. + * Leading and trailing whitespace is ignored. + * + * @returns VINF_SUCCESS on success, VERR_INVALID_PARAMETER on + * failure. + * + * @param pcszAddr The value to convert. + * @param ppszZone Where to store the pointer to the first char + * of the zone id. NULL is stored if there is + * no zone id. + * @param pAddr Where to store the result. + */ +RTDECL(int) RTNetStrToIPv6Addr(const char *pcszAddr, PRTNETADDRIPV6 pAddr, char **ppszZone); + +/** + * IPX address. + */ +#pragma pack(1) +typedef struct RTNETADDRIPX +{ + /** The network ID. */ + uint32_t Network; + /** The node ID. (Defaults to the MAC address apparently.) */ + RTMAC Node; +} RTNETADDRIPX; +#pragma pack() +AssertCompileSize(RTNETADDRIPX, 4+6); +/** Pointer to an IPX address. */ +typedef RTNETADDRIPX *PRTNETADDRIPX; +/** Pointer to a const IPX address. */ +typedef RTNETADDRIPX const *PCRTNETADDRIPX; + +/** + * Network address union. + * + * @remarks The size of this structure may change in the future. + */ +typedef union RTNETADDRU +{ + /** 64-bit view. */ + uint64_t au64[2]; + /** 32-bit view. */ + uint32_t au32[4]; + /** 16-bit view. */ + uint16_t au16[8]; + /** 8-bit view. */ + uint8_t au8[16]; + /** IPv4 view. */ + RTNETADDRIPV4 IPv4; +#ifndef IPv6 /* Work around X11 and RDP defining IPv6 to 1. */ + /** IPv6 view. */ + RTNETADDRIPV6 IPv6; +#endif + /** IPX view. */ + RTNETADDRIPX Ipx; + /** MAC address view. */ + RTMAC Mac; +} RTNETADDRU; +AssertCompileSize(RTNETADDRU, 16); +/** Pointer to an address union. */ +typedef RTNETADDRU *PRTNETADDRU; +/** Pointer to a const address union. */ +typedef RTNETADDRU const *PCRTNETADDRU; + +/** + * Network address type. + * + * @remarks The value assignments may change in the future. + */ +typedef enum RTNETADDRTYPE +{ + /** The invalid 0 entry. */ + RTNETADDRTYPE_INVALID = 0, + /** IP version 4. */ + RTNETADDRTYPE_IPV4, + /** IP version 6. */ + RTNETADDRTYPE_IPV6, + /** IPX. */ + RTNETADDRTYPE_IPX, + /** MAC address. */ + RTNETADDRTYPE_MAC, + /** The end of the valid values. */ + RTNETADDRTYPE_END, + /** The usual 32-bit hack. */ + RTNETADDRTYPE_32_BIT_HACK = 0x7fffffff +} RTNETADDRTYPE; +/** Pointer to a network address type. */ +typedef RTNETADDRTYPE *PRTNETADDRTYPE; +/** Pointer to a const network address type. */ +typedef RTNETADDRTYPE const *PCRTNETADDRTYPE; + +/** + * Network address. + * + * @remarks The size and type values may change. + */ +typedef struct RTNETADDR +{ + /** The address union. */ + RTNETADDRU uAddr; + /** Indicates which view of @a u that is valid. */ + RTNETADDRTYPE enmType; + /** The port number for IPv4 and IPv6 addresses. This is set to + * RTNETADDR_NA_PORT if not applicable. */ + uint32_t uPort; +} RTNETADDR; +/** Pointer to a network address. */ +typedef RTNETADDR *PRTNETADDR; +/** Pointer to a const network address. */ +typedef RTNETADDR const *PCRTNETADDR; + +/** The not applicable value of RTNETADDR::uPort value use to inid. */ +#define RTNETADDR_PORT_NA UINT32_MAX + +/** + * Ethernet header. + */ +#pragma pack(1) +typedef struct RTNETETHERHDR +{ + RTMAC DstMac; + RTMAC SrcMac; + /** Ethernet frame type or frame size, depending on the kind of ethernet. + * This is big endian on the wire. */ + uint16_t EtherType; +} RTNETETHERHDR; +#pragma pack() +AssertCompileSize(RTNETETHERHDR, 14); +/** Pointer to an ethernet header. */ +typedef RTNETETHERHDR *PRTNETETHERHDR; +/** Pointer to a const ethernet header. */ +typedef RTNETETHERHDR const *PCRTNETETHERHDR; + +/** @name EtherType (RTNETETHERHDR::EtherType) + * @{ */ +#define RTNET_ETHERTYPE_IPV4 UINT16_C(0x0800) +#define RTNET_ETHERTYPE_ARP UINT16_C(0x0806) +#define RTNET_ETHERTYPE_IPV6 UINT16_C(0x86dd) +#define RTNET_ETHERTYPE_VLAN UINT16_C(0x8100) +#define RTNET_ETHERTYPE_IPX_1 UINT16_C(0x8037) +#define RTNET_ETHERTYPE_IPX_2 UINT16_C(0x8137) +#define RTNET_ETHERTYPE_IPX_3 UINT16_C(0x8138) +/** @} */ + + +/** + * IPv4 header. + * All is bigendian on the wire. + */ +#pragma pack(1) +typedef struct RTNETIPV4 +{ +#ifdef RT_BIG_ENDIAN + unsigned int ip_v : 4; + unsigned int ip_hl : 4; + unsigned int ip_tos : 8; + unsigned int ip_len : 16; +#else + /** 00:0 - Header length given as a 32-bit word count. */ + unsigned int ip_hl : 4; + /** 00:4 - Header version. */ + unsigned int ip_v : 4; + /** 01 - Type of service. */ + unsigned int ip_tos : 8; + /** 02 - Total length (header + data). */ + unsigned int ip_len : 16; +#endif + /** 04 - Packet idenficiation. */ + uint16_t ip_id; + /** 06 - Offset if fragmented. */ + uint16_t ip_off; + /** 08 - Time to live. */ + uint8_t ip_ttl; + /** 09 - Protocol. */ + uint8_t ip_p; + /** 0a - Header check sum. */ + uint16_t ip_sum; + /** 0c - Source address. */ + RTNETADDRIPV4 ip_src; + /** 10 - Destination address. */ + RTNETADDRIPV4 ip_dst; + /** 14 - Options (optional). */ + uint32_t ip_options[1]; +} RTNETIPV4; +#pragma pack() +AssertCompileSize(RTNETIPV4, 6 * 4); +/** Pointer to a IPv4 header. */ +typedef RTNETIPV4 *PRTNETIPV4; +/** Pointer to a const IPv4 header. */ +typedef RTNETIPV4 const *PCRTNETIPV4; + +/** The minimum IPv4 header length (in bytes). + * Up to and including RTNETIPV4::ip_dst. */ +#define RTNETIPV4_MIN_LEN (20) + + +/** @name IPv4 Protocol Numbers + * @{ */ +/** IPv4: ICMP */ +#define RTNETIPV4_PROT_ICMP (1) +/** IPv4: TCP */ +#define RTNETIPV4_PROT_TCP (6) +/** IPv4: UDP */ +#define RTNETIPV4_PROT_UDP (17) +/** @} */ + +/** @name Common IPv4 Port Assignments + * @{ + */ +/** Boostrap Protocol / DHCP) Server. */ +#define RTNETIPV4_PORT_BOOTPS (67) +/** Boostrap Protocol / DHCP) Client. */ +#define RTNETIPV4_PORT_BOOTPC (68) +/** @} */ + +/** @name IPv4 Flags + * @{ */ +/** IPv4: Don't fragment */ +#define RTNETIPV4_FLAGS_DF (0x4000) +/** IPv4: More fragments */ +#define RTNETIPV4_FLAGS_MF (0x2000) +/** @} */ + +RTDECL(uint16_t) RTNetIPv4HdrChecksum(PCRTNETIPV4 pIpHdr); +RTDECL(bool) RTNetIPv4IsHdrValid(PCRTNETIPV4 pIpHdr, size_t cbHdrMax, size_t cbPktMax, bool fChecksum); +RTDECL(uint32_t) RTNetIPv4PseudoChecksum(PCRTNETIPV4 pIpHdr); +RTDECL(uint32_t) RTNetIPv4PseudoChecksumBits(RTNETADDRIPV4 SrcAddr, RTNETADDRIPV4 DstAddr, uint8_t bProtocol, uint16_t cbPkt); +RTDECL(uint32_t) RTNetIPv4AddDataChecksum(void const *pvData, size_t cbData, uint32_t u32Sum, bool *pfOdd); +RTDECL(uint16_t) RTNetIPv4FinalizeChecksum(uint32_t u32Sum); + + +/** + * IPv6 header. + * All is bigendian on the wire. + */ +#pragma pack(1) +typedef struct RTNETIPV6 +{ + /** Version (4 bits), Traffic Class (8 bits) and Flow Lable (20 bits). + * @todo this is probably mislabeled - ip6_flow vs. ip6_vfc, fix later. */ + uint32_t ip6_vfc; + /** 04 - Payload length, including extension headers. */ + uint16_t ip6_plen; + /** 06 - Next header type (RTNETIPV4_PROT_XXX). */ + uint8_t ip6_nxt; + /** 07 - Hop limit. */ + uint8_t ip6_hlim; + /** xx - Source address. */ + RTNETADDRIPV6 ip6_src; + /** xx - Destination address. */ + RTNETADDRIPV6 ip6_dst; +} RTNETIPV6; +#pragma pack() +AssertCompileSize(RTNETIPV6, 8 + 16 + 16); +/** Pointer to a IPv6 header. */ +typedef RTNETIPV6 *PRTNETIPV6; +/** Pointer to a const IPv6 header. */ +typedef RTNETIPV6 const *PCRTNETIPV6; + +/** The minimum IPv6 header length (in bytes). + * Up to and including RTNETIPV6::ip6_dst. */ +#define RTNETIPV6_MIN_LEN (40) +#define RTNETIPV6_ICMPV6_ND_WITH_LLA_OPT_MIN_LEN (32) + +RTDECL(uint32_t) RTNetIPv6PseudoChecksum(PCRTNETIPV6 pIpHdr); +RTDECL(uint32_t) RTNetIPv6PseudoChecksumEx(PCRTNETIPV6 pIpHdr, uint8_t bProtocol, uint16_t cbPkt); +RTDECL(uint32_t) RTNetIPv6PseudoChecksumBits(PCRTNETADDRIPV6 pSrcAddr, PCRTNETADDRIPV6 pDstAddr, + uint8_t bProtocol, uint16_t cbPkt); + + +/** + * UDP header. + */ +#pragma pack(1) +typedef struct RTNETUDP +{ + /** The source port. */ + uint16_t uh_sport; + /** The destination port. */ + uint16_t uh_dport; + /** The length of the UDP header and associated data. */ + uint16_t uh_ulen; + /** The checksum of the pseudo header, the UDP header and the data. */ + uint16_t uh_sum; +} RTNETUDP; +#pragma pack() +AssertCompileSize(RTNETUDP, 8); +/** Pointer to an UDP header. */ +typedef RTNETUDP *PRTNETUDP; +/** Pointer to a const UDP header. */ +typedef RTNETUDP const *PCRTNETUDP; + +/** The minimum UDP packet length (in bytes). (RTNETUDP::uh_ulen) */ +#define RTNETUDP_MIN_LEN (8) + +RTDECL(uint16_t) RTNetUDPChecksum(uint32_t u32Sum, PCRTNETUDP pUdpHdr); +RTDECL(uint32_t) RTNetIPv4AddUDPChecksum(PCRTNETUDP pUdpHdr, uint32_t u32Sum); +RTDECL(uint16_t) RTNetIPv4UDPChecksum(PCRTNETIPV4 pIpHdr, PCRTNETUDP pUdpHdr, void const *pvData); +RTDECL(bool) RTNetIPv4IsUDPSizeValid(PCRTNETIPV4 pIpHdr, PCRTNETUDP pUdpHdr, size_t cbPktMax); +RTDECL(bool) RTNetIPv4IsUDPValid(PCRTNETIPV4 pIpHdr, PCRTNETUDP pUdpHdr, void const *pvData, size_t cbPktMax, bool fChecksum); + + +/** + * IPv4 BOOTP / DHCP packet. + */ +#pragma pack(1) +typedef struct RTNETBOOTP +{ + /** 00 - The packet opcode (RTNETBOOTP_OP_*). */ + uint8_t bp_op; + /** 01 - Hardware address type. Same as RTNETARPHDR::ar_htype. */ + uint8_t bp_htype; + /** 02 - Hardware address length. */ + uint8_t bp_hlen; + /** 03 - Gateway hops. */ + uint8_t bp_hops; + /** 04 - Transaction ID. */ + uint32_t bp_xid; + /** 08 - Seconds since boot started. */ + uint16_t bp_secs; + /** 0a - Unused (BOOTP) / Flags (DHCP) (RTNET_DHCP_FLAGS_*). */ + uint16_t bp_flags; + /** 0c - Client IPv4 address. */ + RTNETADDRIPV4 bp_ciaddr; + /** 10 - Your IPv4 address. */ + RTNETADDRIPV4 bp_yiaddr; + /** 14 - Server IPv4 address. */ + RTNETADDRIPV4 bp_siaddr; + /** 18 - Gateway IPv4 address. */ + RTNETADDRIPV4 bp_giaddr; + /** 1c - Client hardware address. */ + union + { + uint8_t au8[16]; + RTMAC Mac; + } bp_chaddr; + /** 2c - Server name. */ + uint8_t bp_sname[64]; + /** 6c - File name / more DHCP options. */ + uint8_t bp_file[128]; + /** ec - Vendor specific area (BOOTP) / Options (DHCP). + * @remark This is really 312 bytes in the DHCP version. */ + union + { + uint8_t au8[128]; + struct DHCP + { + /** ec - The DHCP cookie (RTNET_DHCP_COOKIE). */ + uint32_t dhcp_cookie; + /** f0 - The DHCP options. */ + uint8_t dhcp_opts[124]; + } Dhcp; + } bp_vend; + +} RTNETBOOTP; +#pragma pack() +AssertCompileSize(RTNETBOOTP, 0xec + 128); +/** Pointer to a BOOTP / DHCP packet. */ +typedef RTNETBOOTP *PRTNETBOOTP; +/** Pointer to a const BOOTP / DHCP packet. */ +typedef RTNETBOOTP const *PCRTNETBOOTP; + +/** Minimum BOOTP packet length. For quick validation, no standard thing really. */ +#define RTNETBOOTP_MIN_LEN 0xec +/** Minimum DHCP packet length. For quick validation, no standard thing really. */ +#define RTNETBOOTP_DHCP_MIN_LEN 0xf1 + +/** The normal size of the a DHCP packet (i.e. a RTNETBOOTP). + * Same as RTNET_DHCP_OPT_SIZE, just expressed differently. */ +#define RTNET_DHCP_NORMAL_SIZE (0xec + 4 + RTNET_DHCP_OPT_SIZE) +/** The normal size of RTNETBOOTP::bp_vend::Dhcp::dhcp_opts. */ +#define RTNET_DHCP_OPT_SIZE (312 - 4) + +/** @name BOOTP packet opcode values + * @{ */ +#define RTNETBOOTP_OP_REQUEST 1 +#define RTNETBOOTP_OP_REPLY 2 +/** @} */ + +/** @name DHCP flags (RTNETBOOTP::bp_flags) + * @{ */ +#define RTNET_DHCP_FLAGS_NO_BROADCAST UINT16_C(0x8000) /** @todo check test!!! */ +/** @} */ + +/** The DHCP cookie (network endian). */ +#define RTNET_DHCP_COOKIE UINT32_C(0x63825363) + +/** + * An IPv4 DHCP option header. + */ +typedef struct RTNETDHCPOPT +{ + /** 00 - The DHCP option. */ + uint8_t dhcp_opt; + /** 01 - The data length (excluding this header). */ + uint8_t dhcp_len; + /* 02 - The option data follows here, optional and of variable length. */ +} RTNETDHCPOPT; +AssertCompileSize(RTNETDHCPOPT, 2); +/** Pointer to a DHCP option header. */ +typedef RTNETDHCPOPT *PRTNETDHCPOPT; +/** Pointer to a const DHCP option header. */ +typedef RTNETDHCPOPT const *PCRTNETDHCPOPT; + +/** @name DHCP options + * @{ */ +/** 1 byte padding, this has no dhcp_len field. */ +#define RTNET_DHCP_OPT_PAD 0 + +/** The subnet mask. */ +#define RTNET_DHCP_OPT_SUBNET_MASK 1 +/** The time offset. */ +#define RTNET_DHCP_OPT_TIME_OFFSET 2 +/** The routers for the subnet. */ +#define RTNET_DHCP_OPT_ROUTERS 3 +/** Domain Name Server. */ +#define RTNET_DHCP_OPT_DNS 6 +/** Host name. */ +#define RTNET_DHCP_OPT_HOST_NAME 12 +/** Domain name. */ +#define RTNET_DHCP_OPT_DOMAIN_NAME 15 + +/** The requested address. */ +#define RTNET_DHCP_OPT_REQ_ADDR 50 +/** The lease time in seconds. */ +#define RTNET_DHCP_OPT_LEASE_TIME 51 +/** Option overload. + * Indicates that the bp_file and/or bp_sname holds contains DHCP options. */ +#define RTNET_DHCP_OPT_OPTION_OVERLOAD 52 +/** Have a 8-bit message type value as data, see RTNET_DHCP_MT_*. */ +#define RTNET_DHCP_OPT_MSG_TYPE 53 +/** Server ID. */ +#define RTNET_DHCP_OPT_SERVER_ID 54 +/** Parameter request list. */ +#define RTNET_DHCP_OPT_PARAM_REQ_LIST 55 +/** The maximum DHCP message size a client is willing to accept. */ +#define RTNET_DHCP_OPT_MAX_DHCP_MSG_SIZE 57 +/** Client ID. */ +#define RTNET_DHCP_OPT_CLIENT_ID 61 +/** TFTP server name. */ +#define RTNET_DHCP_OPT_TFTP_SERVER_NAME 66 +/** Bootfile name. */ +#define RTNET_DHCP_OPT_BOOTFILE_NAME 67 + +/** Marks the end of the DHCP options, this has no dhcp_len field. */ +#define RTNET_DHCP_OPT_END 255 +/** @} */ + +/** @name DHCP Message Types (option 53) + * @{ */ +#define RTNET_DHCP_MT_DISCOVER 1 +#define RTNET_DHCP_MT_OFFER 2 +#define RTNET_DHCP_MT_REQUEST 3 +#define RTNET_DHCP_MT_DECLINE 4 +#define RTNET_DHCP_MT_ACK 5 +#define RTNET_DHCP_MT_NAC 6 +#define RTNET_DHCP_MT_RELEASE 7 +#define RTNET_DHCP_MT_INFORM 8 +/** @} */ + +/** @name DHCP Flags + * @{ */ +#define RTNET_DHCP_FLAG_BROADCAST 0x8000 +/** @} */ + +RTDECL(bool) RTNetIPv4IsDHCPValid(PCRTNETUDP pUdpHdr, PCRTNETBOOTP pDhcp, size_t cbDhcp, uint8_t *pMsgType); + + +/** + * IPv4 DHCP packet. + * @deprecated Use RTNETBOOTP. + */ +#pragma pack(1) +typedef struct RTNETDHCP +{ + /** 00 - The packet opcode. */ + uint8_t Op; + /** Hardware address type. */ + uint8_t HType; + /** Hardware address length. */ + uint8_t HLen; + uint8_t Hops; + uint32_t XID; + uint16_t Secs; + uint16_t Flags; + /** Client IPv4 address. */ + RTNETADDRIPV4 CIAddr; + /** Your IPv4 address. */ + RTNETADDRIPV4 YIAddr; + /** Server IPv4 address. */ + RTNETADDRIPV4 SIAddr; + /** Gateway IPv4 address. */ + RTNETADDRIPV4 GIAddr; + /** Client hardware address. */ + uint8_t CHAddr[16]; + /** Server name. */ + uint8_t SName[64]; + uint8_t File[128]; + uint8_t abMagic[4]; + uint8_t DhcpOpt; + uint8_t DhcpLen; /* 1 */ + uint8_t DhcpReq; + uint8_t abOptions[57]; +} RTNETDHCP; +#pragma pack() +/** @todo AssertCompileSize(RTNETDHCP, ); */ +/** Pointer to a DHCP packet. */ +typedef RTNETDHCP *PRTNETDHCP; +/** Pointer to a const DHCP packet. */ +typedef RTNETDHCP const *PCRTNETDHCP; + + +/** + * TCP packet. + */ +#pragma pack(1) +typedef struct RTNETTCP +{ + /** 00 - The source port. */ + uint16_t th_sport; + /** 02 - The destination port. */ + uint16_t th_dport; + /** 04 - The sequence number. */ + uint32_t th_seq; + /** 08 - The acknowledgement number. */ + uint32_t th_ack; +#ifdef RT_BIG_ENDIAN + unsigned int th_win : 16; + unsigned int th_flags : 8; + unsigned int th_off : 4; + unsigned int th_x2 : 4; +#else + /** 0c:0 - Reserved. */ + unsigned int th_x2 : 4; + /** 0c:4 - The data offset given as a dword count from the start of this header. */ + unsigned int th_off : 4; + /** 0d - flags. */ + unsigned int th_flags : 8; + /** 0e - The window. */ + unsigned int th_win : 16; +#endif + /** 10 - The checksum of the pseudo header, the TCP header and the data. */ + uint16_t th_sum; + /** 12 - The urgent pointer. */ + uint16_t th_urp; + /* (options follows here and then the data (aka text).) */ +} RTNETTCP; +#pragma pack() +AssertCompileSize(RTNETTCP, 20); +/** Pointer to a TCP packet. */ +typedef RTNETTCP *PRTNETTCP; +/** Pointer to a const TCP packet. */ +typedef RTNETTCP const *PCRTNETTCP; + +/** The minimum TCP header length (in bytes). (RTNETTCP::th_off * 4) */ +#define RTNETTCP_MIN_LEN (20) + +/** @name TCP flags (RTNETTCP::th_flags) + * @{ */ +#define RTNETTCP_F_FIN 0x01 +#define RTNETTCP_F_SYN 0x02 +#define RTNETTCP_F_RST 0x04 +#define RTNETTCP_F_PSH 0x08 +#define RTNETTCP_F_ACK 0x10 +#define RTNETTCP_F_URG 0x20 +#define RTNETTCP_F_ECE 0x40 +#define RTNETTCP_F_CWR 0x80 +/** @} */ + +RTDECL(uint16_t) RTNetTCPChecksum(uint32_t u32Sum, PCRTNETTCP pTcpHdr, void const *pvData, size_t cbData); +RTDECL(uint32_t) RTNetIPv4AddTCPChecksum(PCRTNETTCP pTcpHdr, uint32_t u32Sum); +RTDECL(uint16_t) RTNetIPv4TCPChecksum(PCRTNETIPV4 pIpHdr, PCRTNETTCP pTcpHdr, void const *pvData); +RTDECL(bool) RTNetIPv4IsTCPSizeValid(PCRTNETIPV4 pIpHdr, PCRTNETTCP pTcpHdr, size_t cbHdrMax, size_t cbPktMax); +RTDECL(bool) RTNetIPv4IsTCPValid(PCRTNETIPV4 pIpHdr, PCRTNETTCP pTcpHdr, size_t cbHdrMax, void const *pvData, + size_t cbPktMax, bool fChecksum); + + +/** + * IPv4 ICMP packet header. + */ +#pragma pack(1) +typedef struct RTNETICMPV4HDR +{ + /** 00 - The ICMP message type. */ + uint8_t icmp_type; + /** 01 - Type specific code that further qualifies the message. */ + uint8_t icmp_code; + /** 02 - Checksum of the ICMP message. */ + uint16_t icmp_cksum; +} RTNETICMPV4HDR; +#pragma pack() +AssertCompileSize(RTNETICMPV4HDR, 4); +/** Pointer to an ICMP packet header. */ +typedef RTNETICMPV4HDR *PRTNETICMPV4HDR; +/** Pointer to a const ICMP packet header. */ +typedef RTNETICMPV4HDR const *PCRTNETICMPV4HDR; + +/** @name ICMP (v4) message types. + * @{ */ +#define RTNETICMPV4_TYPE_ECHO_REPLY 0 +#define RTNETICMPV4_TYPE_ECHO_REQUEST 8 +#define RTNETICMPV4_TYPE_TRACEROUTE 30 +/** @} */ + +/** + * IPv4 ICMP ECHO Reply & Request packet. + */ +#pragma pack(1) +typedef struct RTNETICMPV4ECHO +{ + /** 00 - The ICMP header. */ + RTNETICMPV4HDR Hdr; + /** 04 - The identifier to help the requestor match up the reply. + * Can be 0. Typically fixed value. */ + uint16_t icmp_id; + /** 06 - The sequence number to help the requestor match up the reply. + * Can be 0. Typically incrementing between requests. */ + uint16_t icmp_seq; + /** 08 - Variable length data that is to be returned unmodified in the reply. */ + uint8_t icmp_data[1]; +} RTNETICMPV4ECHO; +#pragma pack() +AssertCompileSize(RTNETICMPV4ECHO, 9); +/** Pointer to an ICMP ECHO packet. */ +typedef RTNETICMPV4ECHO *PRTNETICMPV4ECHO; +/** Pointer to a const ICMP ECHO packet. */ +typedef RTNETICMPV4ECHO const *PCRTNETICMPV4ECHO; + +/** + * IPv4 ICMP TRACEROUTE packet. + * This is an reply to an IP packet with the traceroute option set. + */ +#pragma pack(1) +typedef struct RTNETICMPV4TRACEROUTE +{ + /** 00 - The ICMP header. */ + RTNETICMPV4HDR Hdr; + /** 04 - Identifier copied from the traceroute option's ID number. */ + uint16_t icmp_id; + /** 06 - Unused. (Possibly an icmp_seq?) */ + uint16_t icmp_void; + /** 08 - Outbound hop count. From the IP packet causing this message. */ + uint16_t icmp_ohc; + /** 0a - Return hop count. From the IP packet causing this message. */ + uint16_t icmp_rhc; + /** 0c - Output link speed, 0 if not known. */ + uint32_t icmp_speed; + /** 10 - Output link MTU, 0 if not known. */ + uint32_t icmp_mtu; +} RTNETICMPV4TRACEROUTE; +#pragma pack() +AssertCompileSize(RTNETICMPV4TRACEROUTE, 20); +/** Pointer to an ICMP TRACEROUTE packet. */ +typedef RTNETICMPV4TRACEROUTE *PRTNETICMPV4TRACEROUTE; +/** Pointer to a const ICMP TRACEROUTE packet. */ +typedef RTNETICMPV4TRACEROUTE const *PCRTNETICMPV4TRACEROUTE; + +/** @todo add more ICMPv4 as needed. */ + +/** + * IPv4 ICMP union packet. + */ +typedef union RTNETICMPV4 +{ + RTNETICMPV4HDR Hdr; + RTNETICMPV4ECHO Echo; + RTNETICMPV4TRACEROUTE Traceroute; +} RTNETICMPV4; +/** Pointer to an ICMP union packet. */ +typedef RTNETICMPV4 *PRTNETICMPV4; +/** Pointer to a const ICMP union packet. */ +typedef RTNETICMPV4 const *PCRTNETICMPV4; + + +/** + * IPv6 ICMP packet header. + */ +#pragma pack(1) +typedef struct RTNETICMPV6HDR +{ + /** 00 - The ICMPv6 message type. */ + uint8_t icmp6_type; + /** 01 - Type specific code that further qualifies the message. */ + uint8_t icmp6_code; + /** 02 - Checksum of the ICMPv6 message. */ + uint16_t icmp6_cksum; +} RTNETICMPV6HDR; +#pragma pack() +AssertCompileSize(RTNETICMPV6HDR, 4); +/** Pointer to an ICMPv6 packet header. */ +typedef RTNETICMPV6HDR *PRTNETICMPV6HDR; +/** Pointer to a const ICMP packet header. */ +typedef RTNETICMPV6HDR const *PCRTNETICMPV6HDR; + +#define RTNETIPV6_PROT_ICMPV6 (58) + +/** @name Internet Control Message Protocol version 6 (ICMPv6) message types. + * @{ */ +#define RTNETIPV6_ICMP_TYPE_RS 133 +#define RTNETIPV6_ICMP_TYPE_RA 134 +#define RTNETIPV6_ICMP_TYPE_NS 135 +#define RTNETIPV6_ICMP_TYPE_NA 136 +#define RTNETIPV6_ICMP_TYPE_RDR 137 +/** @} */ + +/** @name Neighbor Discovery option types + * @{ */ +#define RTNETIPV6_ICMP_ND_SLLA_OPT (1) +#define RTNETIPV6_ICMP_ND_TLLA_OPT (2) +/** @} */ + +/** ICMPv6 ND Source/Target Link Layer Address option */ +#pragma pack(1) +typedef struct RTNETNDP_LLA_OPT +{ + uint8_t type; + uint8_t len; + RTMAC lla; +} RTNETNDP_LLA_OPT; +#pragma pack() + +AssertCompileSize(RTNETNDP_LLA_OPT, 1+1+6); + +typedef RTNETNDP_LLA_OPT *PRTNETNDP_LLA_OPT; +typedef RTNETNDP_LLA_OPT const *PCRTNETNDP_LLA_OPT; + +/** ICMPv6 ND Neighbor Sollicitation */ +#pragma pack(1) +typedef struct RTNETNDP +{ + /** 00 - The ICMPv6 header. */ + RTNETICMPV6HDR Hdr; + /** 04 - reserved */ + uint32_t reserved; + /** 08 - target address */ + RTNETADDRIPV6 target_address; +} RTNETNDP; +#pragma pack() +AssertCompileSize(RTNETNDP, 4+4+16); +/** Pointer to a NDP ND packet. */ +typedef RTNETNDP *PRTNETNDP; +/** Pointer to a const NDP NS packet. */ +typedef RTNETNDP const *PCRTNETNDP; + + +/** + * Ethernet ARP header. + */ +#pragma pack(1) +typedef struct RTNETARPHDR +{ + /** The hardware type. */ + uint16_t ar_htype; + /** The protocol type (ethertype). */ + uint16_t ar_ptype; + /** The hardware address length. */ + uint8_t ar_hlen; + /** The protocol address length. */ + uint8_t ar_plen; + /** The operation. */ + uint16_t ar_oper; +} RTNETARPHDR; +#pragma pack() +AssertCompileSize(RTNETARPHDR, 8); +/** Pointer to an ethernet ARP header. */ +typedef RTNETARPHDR *PRTNETARPHDR; +/** Pointer to a const ethernet ARP header. */ +typedef RTNETARPHDR const *PCRTNETARPHDR; + +/** ARP hardware type - ethernet. */ +#define RTNET_ARP_ETHER UINT16_C(1) + +/** @name ARP operations + * @{ */ +#define RTNET_ARPOP_REQUEST UINT16_C(1) /**< Request hardware address given a protocol address (ARP). */ +#define RTNET_ARPOP_REPLY UINT16_C(2) +#define RTNET_ARPOP_REVREQUEST UINT16_C(3) /**< Request protocol address given a hardware address (RARP). */ +#define RTNET_ARPOP_REVREPLY UINT16_C(4) +#define RTNET_ARPOP_INVREQUEST UINT16_C(8) /**< Inverse ARP. */ +#define RTNET_ARPOP_INVREPLY UINT16_C(9) +/** Check if an ARP operation is a request or not. */ +#define RTNET_ARPOP_IS_REQUEST(Op) ((Op) & 1) +/** Check if an ARP operation is a reply or not. */ +#define RTNET_ARPOP_IS_REPLY(Op) (!RTNET_ARPOP_IS_REQUEST(Op)) +/** @} */ + + +/** + * Ethernet IPv4 + 6-byte MAC ARP request packet. + */ +#pragma pack(1) +typedef struct RTNETARPIPV4 +{ + /** ARP header. */ + RTNETARPHDR Hdr; + /** The sender hardware address. */ + RTMAC ar_sha; + /** The sender protocol address. */ + RTNETADDRIPV4 ar_spa; + /** The target hardware address. */ + RTMAC ar_tha; + /** The target protocol address. */ + RTNETADDRIPV4 ar_tpa; +} RTNETARPIPV4; +#pragma pack() +AssertCompileSize(RTNETARPIPV4, 8+6+4+6+4); +/** Pointer to an ethernet IPv4+MAC ARP request packet. */ +typedef RTNETARPIPV4 *PRTNETARPIPV4; +/** Pointer to a const ethernet IPv4+MAC ARP request packet. */ +typedef RTNETARPIPV4 const *PCRTNETARPIPV4; + + +/** @} */ + +RT_C_DECLS_END + +#endif + --- linux-raspi2-4.2.0.orig/ubuntu/vbox/include/iprt/nocrt/limits.h +++ linux-raspi2-4.2.0/ubuntu/vbox/include/iprt/nocrt/limits.h @@ -0,0 +1,86 @@ +/** @file + * IPRT / No-CRT - Our own limits header. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + +#ifndef ___iprt_nocrt_limits_h +#define ___iprt_nocrt_limits_h + +#include + +#define CHAR_BIT 8 +#define SCHAR_MAX 0x7f +#define SCHAR_MIN (-0x7f - 1) +#define UCHAR_MAX 0xff +#if 1 /* ASSUMES: signed char */ +# define CHAR_MAX SCHAR_MAX +# define CHAR_MIN SCHAR_MIN +#else +# define CHAR_MAX UCHAR_MAX +# define CHAR_MIN 0 +#endif + +#define WORD_BIT 16 +#define USHRT_MAX 0xffff +#define SHRT_MAX 0x7fff +#define SHRT_MIN (-0x7fff - 1) + +/* ASSUMES 32-bit int */ +#define UINT_MAX 0xffffffffU +#define INT_MAX 0x7fffffff +#define INT_MIN (-0x7fffffff - 1) + +#if defined(RT_ARCH_X86) || defined(RT_OS_WINDOWS) || defined(RT_ARCH_SPARC) +# define LONG_BIT 32 +# define ULONG_MAX 0xffffffffU +# define LONG_MAX 0x7fffffff +# define LONG_MIN (-0x7fffffff - 1) +#elif defined(RT_ARCH_AMD64) || defined(RT_ARCH_SPARC64) +# define LONG_BIT 64 +# define ULONG_MAX UINT64_C(0xffffffffffffffff) +# define LONG_MAX INT64_C(0x7fffffffffffffff) +# define LONG_MIN (INT64_C(-0x7fffffffffffffff) - 1) +#else +# error "PORTME" +#endif + +#define LLONG_BIT 64 +#define ULLONG_MAX UINT64_C(0xffffffffffffffff) +#define LLONG_MAX INT64_C(0x7fffffffffffffff) +#define LLONG_MIN (INT64_C(-0x7fffffffffffffff) - 1) + +#if ARCH_BITS == 32 +# define SIZE_T_MAX 0xffffffffU +# define SSIZE_MAX 0x7fffffff +#elif ARCH_BITS == 64 +# define SIZE_T_MAX UINT64_C(0xffffffffffffffff) +# define SSIZE_MAX INT64_C(0x7fffffffffffffff) +#else +# error "huh?" +#endif + +/*#define OFF_MAX __OFF_MAX +#define OFF_MIN __OFF_MIN*/ + +#endif + --- linux-raspi2-4.2.0.orig/ubuntu/vbox/include/iprt/param.h +++ linux-raspi2-4.2.0/ubuntu/vbox/include/iprt/param.h @@ -0,0 +1,131 @@ +/** @file + * IPRT - Parameter Definitions. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + +#ifndef ___iprt_param_h +#define ___iprt_param_h + +/** @todo Much of the PAGE_* stuff here is obsolete and highly risky to have around. + * As for component configs (MM_*), either we gather all in here or we move those bits away! */ + +/** @defgroup grp_rt_param System Parameter Definitions + * @ingroup grp_rt_cdefs + * @{ + */ + +/* Undefine PAGE_SIZE and PAGE_SHIFT to avoid unnecessary noice when clashing + * with system headers. Include system headers before / after iprt depending + * on which you wish to take precedence. */ +#undef PAGE_SIZE +#undef PAGE_SHIFT + +/* Undefine PAGE_OFFSET_MASK to avoid the conflict with the-linux-kernel.h */ +#undef PAGE_OFFSET_MASK + +/** + * i386 Page size. + */ +#if defined(RT_ARCH_SPARC64) +# define PAGE_SIZE 8192 +#else +# define PAGE_SIZE 4096 +#endif + +/** + * i386 Page shift. + * This is used to convert between size (in bytes) and page count. + */ +#if defined(RT_ARCH_SPARC64) +# define PAGE_SHIFT 13 +#else +# define PAGE_SHIFT 12 +#endif + +/** + * i386 Page offset mask. + * + * Do NOT one-complement this for whatever purpose. You may get a 32-bit const when you want a 64-bit one. + * Use PAGE_BASE_MASK, PAGE_BASE_GC_MASK, PAGE_BASE_HC_MASK, PAGE_ADDRESS() or X86_PTE_PAE_PG_MASK. + */ +#if defined(RT_ARCH_SPARC64) +# define PAGE_OFFSET_MASK 0x1fff +#else +# define PAGE_OFFSET_MASK 0xfff +#endif + +/** + * Page address mask for the guest context POINTERS. + * @remark Physical addresses are always masked using X86_PTE_PAE_PG_MASK! + */ +#define PAGE_BASE_GC_MASK (~(RTGCUINTPTR)PAGE_OFFSET_MASK) + +/** + * Page address mask for the host context POINTERS. + * @remark Physical addresses are always masked using X86_PTE_PAE_PG_MASK! + */ +#define PAGE_BASE_HC_MASK (~(RTHCUINTPTR)PAGE_OFFSET_MASK) + +/** + * Page address mask for the both context POINTERS. + * + * Be careful when using this since it may be a size too big! + * @remark Physical addresses are always masked using X86_PTE_PAE_PG_MASK! + */ +#define PAGE_BASE_MASK (~(RTUINTPTR)PAGE_OFFSET_MASK) + +/** + * Get the page aligned address of a POINTER in the CURRENT context. + * + * @returns Page aligned address (it's an uintptr_t). + * @param pv The virtual address to align. + * + * @remarks Physical addresses are always masked using X86_PTE_PAE_PG_MASK! + * @remarks This only works with POINTERS in the current context. + * Do NOT use on guest address or physical address! + */ +#define PAGE_ADDRESS(pv) ((uintptr_t)(pv) & ~(uintptr_t)PAGE_OFFSET_MASK) + +/** + * Get the page aligned address of a physical address + * + * @returns Page aligned address (it's an RTHCPHYS or RTGCPHYS). + * @param Phys The physical address to align. + */ +#define PHYS_PAGE_ADDRESS(Phys) ((Phys) & X86_PTE_PAE_PG_MASK) + +/** + * Host max path (the reasonable value). + * @remarks defined both by iprt/param.h and iprt/path.h. + */ +#if !defined(___iprt_path_h) || defined(DOXYGEN_RUNNING) +# define RTPATH_MAX (4096 + 4) /* (PATH_MAX + 1) on linux w/ some alignment */ +#endif + +/** @} */ + + +/** @} */ + +#endif + --- linux-raspi2-4.2.0.orig/ubuntu/vbox/include/iprt/path.h +++ linux-raspi2-4.2.0/ubuntu/vbox/include/iprt/path.h @@ -0,0 +1,1397 @@ +/** @file + * IPRT - Path Manipulation. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + +#ifndef ___iprt_path_h +#define ___iprt_path_h + +#include +#include +#ifdef IN_RING3 +# include +#endif + + + +RT_C_DECLS_BEGIN + +/** @defgroup grp_rt_path RTPath - Path Manipulation + * @ingroup grp_rt + * @{ + */ + +/** + * Host max path (the reasonable value). + * @remarks defined both by iprt/param.h and iprt/path.h. + */ +#if !defined(___iprt_param_h) || defined(DOXYGEN_RUNNING) +# define RTPATH_MAX (4096 + 4) /* (PATH_MAX + 1) on linux w/ some alignment */ +#endif + +/** @def RTPATH_TAG + * The default allocation tag used by the RTPath allocation APIs. + * + * When not defined before the inclusion of iprt/string.h, this will default to + * the pointer to the current file name. The string API will make of use of + * this as pointer to a volatile but read-only string. + */ +#ifndef RTPATH_TAG +# define RTPATH_TAG (__FILE__) +#endif + + +/** @name RTPATH_F_XXX - Generic flags for APIs working on the file system. + * @{ */ +/** Last component: Work on the link. */ +#define RTPATH_F_ON_LINK RT_BIT_32(0) +/** Last component: Follow if link. */ +#define RTPATH_F_FOLLOW_LINK RT_BIT_32(1) +/** Don't allow symbolic links as part of the path. + * @remarks this flag is currently not implemented and will be ignored. */ +#define RTPATH_F_NO_SYMLINKS RT_BIT_32(2) +/** @} */ + +/** Validates a flags parameter containing RTPATH_F_*. + * @remarks The parameters will be referenced multiple times. */ +#define RTPATH_F_IS_VALID(a_fFlags, a_fIgnore) \ + ( ((a_fFlags) & ~(uint32_t)((a_fIgnore) | RTPATH_F_NO_SYMLINKS)) == RTPATH_F_ON_LINK \ + || ((a_fFlags) & ~(uint32_t)((a_fIgnore) | RTPATH_F_NO_SYMLINKS)) == RTPATH_F_FOLLOW_LINK ) + + +/** @name RTPATH_STR_F_XXX - Generic flags for APIs working with path strings. + * @{ + */ +/** Host OS path style (default 0 value). */ +#define RTPATH_STR_F_STYLE_HOST UINT32_C(0x00000000) +/** DOS, OS/2 and Windows path style. */ +#define RTPATH_STR_F_STYLE_DOS UINT32_C(0x00000001) +/** Unix path style. */ +#define RTPATH_STR_F_STYLE_UNIX UINT32_C(0x00000002) +/** Reserved path style. */ +#define RTPATH_STR_F_STYLE_RESERVED UINT32_C(0x00000003) +/** The path style mask. */ +#define RTPATH_STR_F_STYLE_MASK UINT32_C(0x00000003) +/** Partial path - no start. + * This causes the API to skip the root specification parsing. */ +#define RTPATH_STR_F_NO_START UINT32_C(0x00000010) +/** Partial path - no end. + * This causes the API to skip the filename and dir-slash parsing. */ +#define RTPATH_STR_F_NO_END UINT32_C(0x00000020) +/** Partial path - no start and no end. */ +#define RTPATH_STR_F_MIDDLE (RTPATH_STR_F_NO_START | RTPATH_STR_F_NO_END) + +/** Reserved for future use. */ +#define RTPATH_STR_F_RESERVED_MASK UINT32_C(0x0000ffcc) +/** @} */ + +/** Validates a flags parameter containing RTPATH_FSTR_. + * @remarks The parameters will be references multiple times. */ +#define RTPATH_STR_F_IS_VALID(a_fFlags, a_fIgnore) \ + ( ((a_fFlags) & ~((uint32_t)(a_fIgnore) | RTPATH_STR_F_STYLE_MASK | RTPATH_STR_F_MIDDLE)) == 0 \ + && ((a_fFlags) & RTPATH_STR_F_STYLE_MASK) != RTPATH_STR_F_STYLE_RESERVED \ + && ((a_fFlags) & RTPATH_STR_F_RESERVED_MASK) == 0 ) + + +/** @def RTPATH_STYLE + * The host path style. This is set to RTPATH_STR_F_STYLE_DOS, + * RTPATH_STR_F_STYLE_UNIX, or other future styles. */ +#if defined(RT_OS_OS2) || defined(RT_OS_WINDOWS) +# define RTPATH_STYLE RTPATH_STR_F_STYLE_DOS +#else +# define RTPATH_STYLE RTPATH_STR_F_STYLE_UNIX +#endif + + +/** @def RTPATH_SLASH + * The preferred slash character. + * + * @remark IPRT will always accept unix slashes. So, normally you would + * never have to use this define. + */ +#if RTPATH_STYLE == RTPATH_STR_F_STYLE_DOS +# define RTPATH_SLASH '\\' +#elif RTPATH_STYLE == RTPATH_STR_F_STYLE_UNIX +# define RTPATH_SLASH '/' +#else +# error "Unsupported RTPATH_STYLE value." +#endif + +/** @deprecated Use '/'! */ +#define RTPATH_DELIMITER RTPATH_SLASH + + +/** @def RTPATH_SLASH_STR + * The preferred slash character as a string, handy for concatenations + * with other strings. + * + * @remark IPRT will always accept unix slashes. So, normally you would + * never have to use this define. + */ +#if RTPATH_STYLE == RTPATH_STR_F_STYLE_DOS +# define RTPATH_SLASH_STR "\\" +#elif RTPATH_STYLE == RTPATH_STR_F_STYLE_UNIX +# define RTPATH_SLASH_STR "/" +#else +# error "Unsupported RTPATH_STYLE value." +#endif + + +/** @def RTPATH_IS_SLASH + * Checks if a character is a slash. + * + * @returns true if it's a slash and false if not. + * @returns @param a_ch Char to check. + */ +#if RTPATH_STYLE == RTPATH_STR_F_STYLE_DOS +# define RTPATH_IS_SLASH(a_ch) ( (a_ch) == '\\' || (a_ch) == '/' ) +#elif RTPATH_STYLE == RTPATH_STR_F_STYLE_UNIX +# define RTPATH_IS_SLASH(a_ch) ( (a_ch) == '/' ) +#else +# error "Unsupported RTPATH_STYLE value." +#endif + + +/** @def RTPATH_IS_VOLSEP + * Checks if a character marks the end of the volume specification. + * + * @remark This is sufficient for the drive letter concept on PC. + * However it might be insufficient on other platforms + * and even on PC a UNC volume spec won't be detected this way. + * Use the RTPath@() instead. + * + * @returns true if it is and false if it isn't. + * @returns @param a_ch Char to check. + */ +#if RTPATH_STYLE == RTPATH_STR_F_STYLE_DOS +# define RTPATH_IS_VOLSEP(a_ch) ( (a_ch) == ':' ) +#elif RTPATH_STYLE == RTPATH_STR_F_STYLE_UNIX +# define RTPATH_IS_VOLSEP(a_ch) (false) +#else +# error "Unsupported RTPATH_STYLE value." +#endif + + +/** @def RTPATH_IS_SEP + * Checks if a character is path component separator + * + * @returns true if it is and false if it isn't. + * @returns @param a_ch Char to check. + * @ + */ +#define RTPATH_IS_SEP(a_ch) ( RTPATH_IS_SLASH(a_ch) || RTPATH_IS_VOLSEP(a_ch) ) + + +/** + * Checks if the path exists. + * + * Symbolic links will all be attempted resolved and broken links means false. + * + * @returns true if it exists and false if it doesn't. + * @param pszPath The path to check. + */ +RTDECL(bool) RTPathExists(const char *pszPath); + +/** + * Checks if the path exists. + * + * @returns true if it exists and false if it doesn't. + * @param pszPath The path to check. + * @param fFlags RTPATH_F_ON_LINK or RTPATH_F_FOLLOW_LINK. + */ +RTDECL(bool) RTPathExistsEx(const char *pszPath, uint32_t fFlags); + +/** + * Sets the current working directory of the process. + * + * @returns IPRT status code. + * @param pszPath The path to the new working directory. + */ +RTDECL(int) RTPathSetCurrent(const char *pszPath); + +/** + * Gets the current working directory of the process. + * + * @returns IPRT status code. + * @param pszPath Where to store the path. + * @param cchPath The size of the buffer pszPath points to. + */ +RTDECL(int) RTPathGetCurrent(char *pszPath, size_t cchPath); + +/** + * Gets the current working directory on the specified drive. + * + * On systems without drive letters, the root slash will be returned. + * + * @returns IPRT status code. + * @param chDrive The drive we're querying the driver letter on. + * @param pszPath Where to store the working directroy path. + * @param cbPath The size of the buffer pszPath points to. + */ +RTDECL(int) RTPathGetCurrentOnDrive(char chDrive, char *pszPath, size_t cbPath); + +/** + * Gets the current working drive of the process. + * + * Normally drive letter and colon will be returned, never trailing a root + * slash. If the current directory is on a UNC share, the root of the share + * will be returned. On systems without drive letters, an empty string is + * returned for consistency. + * + * @returns IPRT status code. + * @param pszPath Where to store the working drive or UNC root. + * @param cbPath The size of the buffer pszPath points to. + */ +RTDECL(int) RTPathGetCurrentDrive(char *pszPath, size_t cbPath); + +/** + * Get the real path (no symlinks, no . or .. components), must exist. + * + * @returns iprt status code. + * @param pszPath The path to resolve. + * @param pszRealPath Where to store the real path. + * @param cchRealPath Size of the buffer. + */ +RTDECL(int) RTPathReal(const char *pszPath, char *pszRealPath, size_t cchRealPath); + +/** + * Same as RTPathReal only the result is RTStrDup()'ed. + * + * @returns Pointer to real path. Use RTStrFree() to free this string. + * @returns NULL if RTPathReal() or RTStrDup() fails. + * @param pszPath The path to resolve. + */ +RTDECL(char *) RTPathRealDup(const char *pszPath); + +/** + * Get the absolute path (starts from root, no . or .. components), doesn't have + * to exist. Note that this method is designed to never perform actual file + * system access, therefore symlinks are not resolved. + * + * @returns iprt status code. + * @param pszPath The path to resolve. + * @param pszAbsPath Where to store the absolute path. + * @param cchAbsPath Size of the buffer. + */ +RTDECL(int) RTPathAbs(const char *pszPath, char *pszAbsPath, size_t cchAbsPath); + +/** + * Same as RTPathAbs only the result is RTStrDup()'ed. + * + * @returns Pointer to the absolute path. Use RTStrFree() to free this string. + * @returns NULL if RTPathAbs() or RTStrDup() fails. + * @param pszPath The path to resolve. + */ +RTDECL(char *) RTPathAbsDup(const char *pszPath); + +/** + * Get the absolute path (no symlinks, no . or .. components), assuming the + * given base path as the current directory. The resulting path doesn't have + * to exist. + * + * @returns iprt status code. + * @param pszBase The base path to act like a current directory. + * When NULL, the actual cwd is used (i.e. the call + * is equivalent to RTPathAbs(pszPath, ...). + * @param pszPath The path to resolve. + * @param pszAbsPath Where to store the absolute path. + * @param cchAbsPath Size of the buffer. + */ +RTDECL(int) RTPathAbsEx(const char *pszBase, const char *pszPath, char *pszAbsPath, size_t cchAbsPath); + +/** + * Same as RTPathAbsEx only the result is RTStrDup()'ed. + * + * @returns Pointer to the absolute path. Use RTStrFree() to free this string. + * @returns NULL if RTPathAbsEx() or RTStrDup() fails. + * @param pszBase The base path to act like a current directory. + * When NULL, the actual cwd is used (i.e. the call + * is equivalent to RTPathAbs(pszPath, ...). + * @param pszPath The path to resolve. + */ +RTDECL(char *) RTPathAbsExDup(const char *pszBase, const char *pszPath); + +/** + * Strips the filename from a path. Truncates the given string in-place by overwriting the + * last path separator character with a null byte in a platform-neutral way. + * + * @param pszPath Path from which filename should be extracted, will be truncated. + * If the string contains no path separator, it will be changed to a "." string. + */ +RTDECL(void) RTPathStripFilename(char *pszPath); + +/** + * Strips the last suffix from a path. + * + * @param pszPath Path which suffix should be stripped. + */ +RTDECL(void) RTPathStripSuffix(char *pszPath); + +/** + * Strips the trailing slashes of a path name. + * + * Won't strip root slashes. + * + * @returns The new length of pszPath. + * @param pszPath Path to strip. + */ +RTDECL(size_t) RTPathStripTrailingSlash(char *pszPath); + +/** + * Changes all the slashes in the specified path to DOS style. + * + * Unless @a fForce is set, nothing will be done when on a UNIX flavored system + * since paths wont work with DOS style slashes there. + * + * @returns @a pszPath. + * @param pszPath The path to modify. + * @param fForce Whether to force the conversion on non-DOS OSes. + */ +RTDECL(char *) RTPathChangeToDosSlashes(char *pszPath, bool fForce); + +/** + * Changes all the slashes in the specified path to unix style. + * + * Unless @a fForce is set, nothing will be done when on a UNIX flavored system + * since paths wont work with DOS style slashes there. + * + * @returns @a pszPath. + * @param pszPath The path to modify. + * @param fForce Whether to force the conversion on non-DOS OSes. + */ +RTDECL(char *) RTPathChangeToUnixSlashes(char *pszPath, bool fForce); + +/** + * Simple parsing of the a path. + * + * It figures the length of the directory component, the offset of + * the file name and the location of the suffix dot. + * + * @returns The path length. + * + * @param pszPath Path to find filename in. + * @param pcchDir Where to put the length of the directory component. If + * no directory, this will be 0. Optional. + * @param poffName Where to store the filename offset. + * If empty string or if it's ending with a slash this + * will be set to -1. Optional. + * @param poffSuff Where to store the suffix offset (the last dot). + * If empty string or if it's ending with a slash this + * will be set to -1. Optional. + */ +RTDECL(size_t) RTPathParseSimple(const char *pszPath, size_t *pcchDir, ssize_t *poffName, ssize_t *poffSuff); + +/** + * Finds the filename in a path. + * + * @returns Pointer to filename within pszPath. + * @returns NULL if no filename (i.e. empty string or ends with a slash). + * @param pszPath Path to find filename in. + */ +RTDECL(char *) RTPathFilename(const char *pszPath); + +/** + * Finds the filename in a path, extended version. + * + * @returns Pointer to filename within pszPath. + * @returns NULL if no filename (i.e. empty string or ends with a slash). + * @param pszPath Path to find filename in. + * @param fFlags RTPATH_STR_F_STYLE_XXX. Other RTPATH_STR_F_XXX flags + * will be ignored. + */ +RTDECL(char *) RTPathFilenameEx(const char *pszPath, uint32_t fFlags); + +/** + * Finds the suffix part of in a path (last dot and onwards). + * + * @returns Pointer to suffix within pszPath. + * @returns NULL if no suffix + * @param pszPath Path to find suffix in. + * + * @remarks IPRT terminology: A suffix includes the dot, the extension starts + * after the dot. For instance suffix '.txt' and extension 'txt'. + */ +RTDECL(char *) RTPathSuffix(const char *pszPath); + +/** + * Checks if a path has an extension / suffix. + * + * @returns true if extension / suffix present. + * @returns false if no extension / suffix. + * @param pszPath Path to check. + */ +RTDECL(bool) RTPathHasSuffix(const char *pszPath); +/** Same thing, different name. */ +#define RTPathHasExt RTPathHasSuffix + +/** + * Checks if a path includes more than a filename. + * + * @returns true if path present. + * @returns false if no path. + * @param pszPath Path to check. + */ +RTDECL(bool) RTPathHasPath(const char *pszPath); +/** Misspelled, don't use. */ +#define RTPathHavePath RTPathHasPath + +/** + * Checks if the path starts with a root specifier or not. + * + * @returns @c true if it starts with root, @c false if not. + * + * @param pszPath Path to check. + */ +RTDECL(bool) RTPathStartsWithRoot(const char *pszPath); + +/** + * Counts the components in the specified path. + * + * An empty string has zero components. A lone root slash is considered have + * one. The paths "/init" and "/bin/" are considered having two components. An + * UNC share specifier like "\\myserver\share" will be considered as one single + * component. + * + * @returns The number of path components. + * @param pszPath The path to parse. + */ +RTDECL(size_t) RTPathCountComponents(const char *pszPath); + +/** + * Copies the specified number of path components from @a pszSrc and into @a + * pszDst. + * + * @returns VINF_SUCCESS or VERR_BUFFER_OVERFLOW. In the latter case the buffer + * is not touched. + * + * @param pszDst The destination buffer. + * @param cbDst The size of the destination buffer. + * @param pszSrc The source path. + * @param cComponents The number of components to copy from @a pszSrc. + */ +RTDECL(int) RTPathCopyComponents(char *pszDst, size_t cbDst, const char *pszSrc, size_t cComponents); + +/** @name Path properties returned by RTPathParse and RTPathSplit. + * @{ */ + +/** Indicates that there is a filename. + * If not set, either a lone root spec was given (RTPATH_PROP_UNC, + * RTPATH_PROP_ROOT_SLASH, or RTPATH_PROP_VOLUME) or the final component had a + * trailing slash (RTPATH_PROP_DIR_SLASH). */ +#define RTPATH_PROP_FILENAME UINT16_C(0x0001) +/** Indicates that a directory was specified using a trailing slash. + * @note This is not set for lone root specifications (RTPATH_PROP_UNC, + * RTPATH_PROP_ROOT_SLASH, or RTPATH_PROP_VOLUME). + * @note The slash is not counted into the last component. However, it is + * counted into cchPath. */ +#define RTPATH_PROP_DIR_SLASH UINT16_C(0x0002) + +/** The filename has a suffix (extension). */ +#define RTPATH_PROP_SUFFIX UINT16_C(0x0004) +/** Indicates that this is an UNC path (Windows and OS/2 only). + * + * UNC = Universal Naming Convention. It is on the form '//Computer/', + * '//Namespace/', '//ComputerName/Resource' and '//Namespace/Resource'. + * RTPathParse, RTPathSplit and friends does not consider the 'Resource' as + * part of the UNC root specifier. Thus the root specs for the above examples + * would be '//ComputerName/' or '//Namespace/'. + * + * Please note that '//something' is not a UNC path, there must be a slash + * following the computer or namespace. + */ +#define RTPATH_PROP_UNC UINT16_C(0x0010) +/** A root slash was specified (unix style root). + * (While the path must relative if not set, this being set doesn't make it + * absolute.) + * + * This will be set in the following examples: '/', '/bin', 'C:/', 'C:/Windows', + * '//./', '//./PhysicalDisk0', '//example.org/', and '//example.org/share'. + * + * It will not be set for the following examples: '.', 'bin/ls', 'C:', and + * 'C:Windows'. + */ +#define RTPATH_PROP_ROOT_SLASH UINT16_C(0x0020) +/** A volume is specified (Windows, DOS and OS/2). + * For examples: 'C:', 'C:/', and 'A:/AutoExec.bat'. */ +#define RTPATH_PROP_VOLUME UINT16_C(0x0040) +/** The path is absolute, i.e. has a root specifier (root-slash, + * volume or UNC) and contains no winding '..' bits, though it may contain + * unnecessary slashes (RTPATH_PROP_EXTRA_SLASHES) and '.' components + * (RTPATH_PROP_DOT_REFS). + * + * On systems without volumes and UNC (unix style) it will be set for '/', + * '/bin/ls', and '/bin//./ls', but not for 'bin/ls', /bin/../usr/bin/env', + * '/./bin/ls' or '/.'. + * + * On systems with volumes, it will be set for 'C:/', C:/Windows', and + * 'C:/./Windows//', but not for 'C:', 'C:Windows', or 'C:/Windows/../boot.ini'. + * + * On systems with UNC paths, it will be set for '//localhost/', + * '//localhost/C$', '//localhost/C$/Windows/System32', '//localhost/.', and + * '//localhost/C$//./AutoExec.bat', but not for + * '//localhost/C$/Windows/../AutoExec.bat'. + * + * @note For the RTPathAbs definition, this flag needs to be set while both + * RTPATH_PROP_EXTRA_SLASHES and RTPATH_PROP_DOT_REFS must be cleared. + */ +#define RTPATH_PROP_ABSOLUTE UINT16_C(0x0100) +/** Relative path. Inverse of RTPATH_PROP_ABSOLUTE. */ +#define RTPATH_PROP_RELATIVE UINT16_C(0x0200) +/** The path contains unnecessary slashes. Meaning, that if */ +#define RTPATH_PROP_EXTRA_SLASHES UINT16_C(0x0400) +/** The path contains references to the special '.' (dot) directory link. */ +#define RTPATH_PROP_DOT_REFS UINT16_C(0x0800) +/** The path contains references to the special '..' (dot) directory link. + * RTPATH_PROP_RELATIVE will always be set together with this. */ +#define RTPATH_PROP_DOTDOT_REFS UINT16_C(0x1000) + + +/** Macro to determin whether to insert a slash after the first component when + * joining it with something else. + * (All other components in a split or parsed path requies slashes added.) */ +#define RTPATH_PROP_FIRST_NEEDS_NO_SLASH(a_fProps) \ + RT_BOOL( (a_fProps) & (RTPATH_PROP_ROOT_SLASH | RTPATH_PROP_VOLUME | RTPATH_PROP_UNC) ) + +/** Macro to determin whether there is a root specification of any kind + * (unix, volumes, unc). */ +#define RTPATH_PROP_HAS_ROOT_SPEC(a_fProps) \ + RT_BOOL( (a_fProps) & (RTPATH_PROP_ROOT_SLASH | RTPATH_PROP_VOLUME | RTPATH_PROP_UNC) ) + +/** @} */ + + +/** + * Parsed path. + * + * The first component is the root, volume or UNC specifier, if present. Use + * RTPATH_PROP_HAS_ROOT_SPEC() on RTPATHPARSED::fProps to determine its + * precense. + * + * Other than the root component, no component will include directory separators + * (slashes). + */ +typedef struct RTPATHPARSED +{ + /** Number of path components. + * This will always be set on VERR_BUFFER_OVERFLOW returns from RTPathParsed + * so the caller can calculate the required buffer size. */ + uint16_t cComps; + /** Path property flags, RTPATH_PROP_XXX */ + uint16_t fProps; + /** On success this is the length of the described path, i.e. sum of all + * component lengths and necessary separators. + * Do NOT use this to index in the source path in case it contains + * unnecessary slashes that RTPathParsed has ignored here. */ + uint16_t cchPath; + /** Reserved for future use. */ + uint16_t u16Reserved; + /** The offset of the filename suffix, offset of the NUL char if none. */ + uint16_t offSuffix; + /** The lenght of the suffix. */ + uint16_t cchSuffix; + /** Array of component descriptors (variable size). + * @note Don't try figure the end of the input path by adding up off and cch + * of the last component. If RTPATH_PROP_DIR_SLASH is set, there may + * be one or more trailing slashes that are unaccounted for! */ + struct + { + /** The offset of the component. */ + uint16_t off; + /** The length of the component. */ + uint16_t cch; + } aComps[1]; +} RTPATHPARSED; +/** Pointer to to a parsed path result. */ +typedef RTPATHPARSED *PRTPATHPARSED; +/** Pointer to to a const parsed path result. */ +typedef RTPATHPARSED *PCRTPATHPARSED; + + +/** + * Parses the path. + * + * @returns IPRT status code. + * @retval VERR_INVALID_POINTER if pParsed or pszPath is an invalid pointer. + * @retval VERR_INVALID_PARAMETER if cbOutput is less than the RTPATHPARSED + * strucuture. No output. (asserted) + * @retval VERR_BUFFER_OVERFLOW there are more components in the path than + * there is space in aComps. The required amount of space can be + * determined from the pParsed->cComps: + * @code + * RT_OFFSETOF(RTPATHPARSED, aComps[pParsed->cComps]) + * @endcode + * @retval VERR_PATH_ZERO_LENGTH if the path is empty. + * + * @param pszPath The path to parse. + * @param pParsed Where to store the details of the parsed path. + * @param cbParsed The size of the buffer. Must be at least the + * size of RTPATHPARSED. + * @param fFlags Combination of RTPATH_STR_F_XXX flags. + * Most users will pass 0. + * @sa RTPathSplit, RTPathSplitA. + */ +RTDECL(int) RTPathParse(const char *pszPath, PRTPATHPARSED pParsed, size_t cbParsed, uint32_t fFlags); + +/** + * Reassembles a path parsed by RTPathParse. + * + * This will be more useful as more APIs manipulating the RTPATHPARSED output + * are added. + * + * @returns IPRT status code. + * @retval VERR_BUFFER_OVERFLOW if @a cbDstPath is less than or equal to + * RTPATHPARSED::cchPath. + * + * @param pszSrcPath The source path. + * @param pParsed The parser output for @a pszSrcPath. + * @param fFlags Combination of RTPATH_STR_F_STYLE_XXX. + * Most users will pass 0. + * @param pszDstPath Pointer to the buffer where the path is to be + * reassembled. + * @param cbDstPath The size of the output buffer. + */ +RTDECL(int) RTPathParsedReassemble(const char *pszSrcPath, PRTPATHPARSED pParsed, uint32_t fFlags, + char *pszDstPath, size_t cbDstPath); + + +/** + * Output buffer for RTPathSplit and RTPathSplitA. + */ +typedef struct RTPATHSPLIT +{ + /** Number of path components. + * This will always be set on VERR_BUFFER_OVERFLOW returns from RTPathParsed + * so the caller can calculate the required buffer size. */ + uint16_t cComps; + /** Path property flags, RTPATH_PROP_XXX */ + uint16_t fProps; + /** On success this is the length of the described path, i.e. sum of all + * component lengths and necessary separators. + * Do NOT use this to index in the source path in case it contains + * unnecessary slashes that RTPathSplit has ignored here. */ + uint16_t cchPath; + /** Reserved (internal use). */ + uint16_t u16Reserved; + /** The amount of memory used (on success) or required (on + * VERR_BUFFER_OVERFLOW) of this structure and it's strings. */ + uint32_t cbNeeded; + /** Pointer to the filename suffix (the dot), if any. Points to the NUL + * character of the last component if none or if RTPATH_PROP_DIR_SLASH is + * present. */ + const char *pszSuffix; + /** Array of component strings (variable size). */ + char *apszComps[1]; +} RTPATHSPLIT; +/** Pointer to a split path buffer. */ +typedef RTPATHSPLIT *PRTPATHSPLIT; +/** Pointer to a const split path buffer. */ +typedef RTPATHSPLIT const *PCRTPATHSPLIT; + +/** + * Splits the path into individual component strings, carved from user supplied + * the given buffer block. + * + * @returns IPRT status code. + * @retval VERR_INVALID_POINTER if pParsed or pszPath is an invalid pointer. + * @retval VERR_INVALID_PARAMETER if cbOutput is less than the RTPATHSPLIT + * strucuture. No output. (asserted) + * @retval VERR_BUFFER_OVERFLOW there are more components in the path than + * there is space in aComps. The required amount of space can be + * determined from the pParsed->cComps: + * @code + * RT_OFFSETOF(RTPATHPARSED, aComps[pParsed->cComps]) + * @endcode + * @retval VERR_PATH_ZERO_LENGTH if the path is empty. + * @retval VERR_FILENAME_TOO_LONG if the filename is too long (close to 64 KB). + * + * @param pszPath The path to parse. + * @param pSplit Where to store the details of the parsed path. + * @param cbSplit The size of the buffer pointed to by @a pSplit + * (variable sized array at the end). Must be at + * least the size of RTPATHSPLIT. + * @param fFlags Combination of RTPATH_STR_F_XXX flags. + * Most users will pass 0. + * + * @sa RTPathSplitA, RTPathParse. + */ +RTDECL(int) RTPathSplit(const char *pszPath, PRTPATHSPLIT pSplit, size_t cbSplit, uint32_t fFlags); + +/** + * Splits the path into individual component strings, allocating the buffer on + * the default thread heap. + * + * @returns IPRT status code. + * @retval VERR_INVALID_POINTER if pParsed or pszPath is an invalid pointer. + * @retval VERR_PATH_ZERO_LENGTH if the path is empty. + * + * @param pszPath The path to parse. + * @param ppSplit Where to return the pointer to the output on + * success. This must be freed by calling + * RTPathSplitFree(). + * @param fFlags Combination of RTPATH_STR_F_XXX flags. + * Most users will pass 0. + * @sa RTPathSplitFree, RTPathSplit, RTPathParse. + */ +#define RTPathSplitA(pszPath, ppSplit, fFlags) RTPathSplitATag(pszPath, ppSplit, fFlags, RTPATH_TAG) + +/** + * Splits the path into individual component strings, allocating the buffer on + * the default thread heap. + * + * @returns IPRT status code. + * @retval VERR_INVALID_POINTER if pParsed or pszPath is an invalid pointer. + * @retval VERR_PATH_ZERO_LENGTH if the path is empty. + * + * @param pszPath The path to parse. + * @param ppSplit Where to return the pointer to the output on + * success. This must be freed by calling + * RTPathSplitFree(). + * @param fFlags Combination of RTPATH_STR_F_XXX flags. + * Most users will pass 0. + * @param pszTag Allocation tag used for statistics and such. + * @sa RTPathSplitFree, RTPathSplit, RTPathParse. + */ +RTDECL(int) RTPathSplitATag(const char *pszPath, PRTPATHSPLIT *ppSplit, uint32_t fFlags, const char *pszTag); + +/** + * Frees buffer returned by RTPathSplitA. + * + * @param pSplit What RTPathSplitA returned. + * @sa RTPathSplitA + */ +RTDECL(void) RTPathSplitFree(PRTPATHSPLIT pSplit); + +/** + * Reassembles a path parsed by RTPathSplit. + * + * This will be more useful as more APIs manipulating the RTPATHSPLIT output are + * added. + * + * @returns IPRT status code. + * @retval VERR_BUFFER_OVERFLOW if @a cbDstPath is less than or equal to + * RTPATHSPLIT::cchPath. + * + * @param pParsed The parser output for @a pszSrcPath. + * @param fFlags Combination of RTPATH_STR_F_STYLE_XXX. + * Most users will pass 0. + * @param pszDstPath Pointer to the buffer where the path is to be + * reassembled. + * @param cbDstPath The size of the output buffer. + */ +RTDECL(int) RTPathSplitReassemble(PRTPATHSPLIT pSplit, uint32_t fFlags, char *pszDstPath, size_t cbDstPath); + +/** + * Checks if the two paths leads to the file system object. + * + * If the objects exist, we'll query attributes for them. If that's not + * conclusive (some OSes) or one of them doesn't exist, we'll use a combination + * of RTPathAbs and RTPathCompare to determine the result. + * + * @returns true, false, or VERR_FILENAME_TOO_LONG. + * @param pszPath1 The first path. + * @param pszPath2 The seoncd path. + */ +RTDECL(int) RTPathIsSame(const char *pszPath1, const char *pszPath2); + + +/** + * Compares two paths. + * + * The comparison takes platform-dependent details into account, + * such as: + *

    + *
  • On DOS-like platforms, both separator chars (|\| and |/|) are considered + * to be equal. + *
  • On platforms with case-insensitive file systems, mismatching characters + * are uppercased and compared again. + *
+ * + * @returns @< 0 if the first path less than the second path. + * @returns 0 if the first path identical to the second path. + * @returns @> 0 if the first path greater than the second path. + * + * @param pszPath1 Path to compare (must be an absolute path). + * @param pszPath2 Path to compare (must be an absolute path). + * + * @remarks File system details are currently ignored. This means that you won't + * get case-insensitive compares on unix systems when a path goes into a + * case-insensitive filesystem like FAT, HPFS, HFS, NTFS, JFS, or + * similar. For NT, OS/2 and similar you'll won't get case-sensitive + * compares on a case-sensitive file system. + */ +RTDECL(int) RTPathCompare(const char *pszPath1, const char *pszPath2); + +/** + * Checks if a path starts with the given parent path. + * + * This means that either the path and the parent path matches completely, or + * that the path is to some file or directory residing in the tree given by the + * parent directory. + * + * The path comparison takes platform-dependent details into account, + * see RTPathCompare() for details. + * + * @returns |true| when \a pszPath starts with \a pszParentPath (or when they + * are identical), or |false| otherwise. + * + * @param pszPath Path to check, must be an absolute path. + * @param pszParentPath Parent path, must be an absolute path. + * No trailing directory slash! + * + * @remarks This API doesn't currently handle root directory compares in a + * manner consistent with the other APIs. RTPathStartsWith(pszSomePath, + * "/") will not work if pszSomePath isn't "/". + */ +RTDECL(bool) RTPathStartsWith(const char *pszPath, const char *pszParentPath); + +/** + * Appends one partial path to another. + * + * The main purpose of this function is to deal correctly with the slashes when + * concatenating the two partial paths. + * + * @retval VINF_SUCCESS on success. + * @retval VERR_BUFFER_OVERFLOW if the result is too big to fit within + * cbPathDst bytes. No changes has been made. + * @retval VERR_INVALID_PARAMETER if the string pointed to by pszPath is longer + * than cbPathDst-1 bytes (failed to find terminator). Asserted. + * + * @param pszPath The path to append pszAppend to. This serves as both + * input and output. This can be empty, in which case + * pszAppend is just copied over. + * @param cbPathDst The size of the buffer pszPath points to, terminator + * included. This should NOT be strlen(pszPath). + * @param pszAppend The partial path to append to pszPath. This can be + * NULL, in which case nothing is done. + * + * @remarks See the RTPathAppendEx remarks. + */ +RTDECL(int) RTPathAppend(char *pszPath, size_t cbPathDst, const char *pszAppend); + +/** + * Appends one partial path to another. + * + * The main purpose of this function is to deal correctly with the slashes when + * concatenating the two partial paths. + * + * @retval VINF_SUCCESS on success. + * @retval VERR_BUFFER_OVERFLOW if the result is too big to fit within + * cbPathDst bytes. No changes has been made. + * @retval VERR_INVALID_PARAMETER if the string pointed to by pszPath is longer + * than cbPathDst-1 bytes (failed to find terminator). Asserted. + * + * @param pszPath The path to append pszAppend to. This serves as both + * input and output. This can be empty, in which case + * pszAppend is just copied over. + * @param cbPathDst The size of the buffer pszPath points to, terminator + * included. This should NOT be strlen(pszPath). + * @param pszAppend The partial path to append to pszPath. This can be + * NULL, in which case nothing is done. + * @param cchAppendMax The maximum number or characters to take from @a + * pszAppend. RTSTR_MAX is fine. + * + * @remarks On OS/2, Window and similar systems, concatenating a drive letter + * specifier with a slash prefixed path will result in an absolute + * path. Meaning, RTPathAppend(strcpy(szBuf, "C:"), sizeof(szBuf), + * "/bar") will result in "C:/bar". (This follows directly from the + * behavior when pszPath is empty.) + * + * On the other hand, when joining a drive letter specifier with a + * partial path that does not start with a slash, the result is not an + * absolute path. Meaning, RTPathAppend(strcpy(szBuf, "C:"), + * sizeof(szBuf), "bar") will result in "C:bar". + */ +RTDECL(int) RTPathAppendEx(char *pszPath, size_t cbPathDst, const char *pszAppend, size_t cchAppendMax); + +/** + * Like RTPathAppend, but with the base path as a separate argument instead of + * in the path buffer. + * + * @retval VINF_SUCCESS on success. + * @retval VERR_BUFFER_OVERFLOW if the result is too big to fit within + * cbPathDst bytes. + * @retval VERR_INVALID_PARAMETER if the string pointed to by pszPath is longer + * than cbPathDst-1 bytes (failed to find terminator). Asserted. + * + * @param pszPathDst Where to store the resulting path. + * @param cbPathDst The size of the buffer pszPathDst points to, + * terminator included. + * @param pszPathSrc The base path to copy into @a pszPathDst before + * appending @a pszAppend. + * @param pszAppend The partial path to append to pszPathSrc. This can + * be NULL, in which case nothing is done. + * + */ +RTDECL(int) RTPathJoin(char *pszPathDst, size_t cbPathDst, const char *pszPathSrc, + const char *pszAppend); + +/** + * Same as RTPathJoin, except that the output buffer is allocated. + * + * @returns Buffer containing the joined up path, call RTStrFree to free. NULL + * on allocation failure. + * @param pszPathSrc The base path to copy into @a pszPathDst before + * appending @a pszAppend. + * @param pszAppend The partial path to append to pszPathSrc. This can + * be NULL, in which case nothing is done. + * + */ +RTDECL(char *) RTPathJoinA(const char *pszPathSrc, const char *pszAppend); + +/** + * Extended version of RTPathJoin, both inputs can be specified as substrings. + * + * @retval VINF_SUCCESS on success. + * @retval VERR_BUFFER_OVERFLOW if the result is too big to fit within + * cbPathDst bytes. + * @retval VERR_INVALID_PARAMETER if the string pointed to by pszPath is longer + * than cbPathDst-1 bytes (failed to find terminator). Asserted. + * + * @param pszPathDst Where to store the resulting path. + * @param cbPathDst The size of the buffer pszPathDst points to, + * terminator included. + * @param pszPathSrc The base path to copy into @a pszPathDst before + * appending @a pszAppend. + * @param cchPathSrcMax The maximum number of bytes to copy from @a + * pszPathSrc. RTSTR_MAX is find. + * @param pszAppend The partial path to append to pszPathSrc. This can + * be NULL, in which case nothing is done. + * @param cchAppendMax The maximum number of bytes to copy from @a + * pszAppend. RTSTR_MAX is find. + * + */ +RTDECL(int) RTPathJoinEx(char *pszPathDst, size_t cbPathDst, + const char *pszPathSrc, size_t cchPathSrcMax, + const char *pszAppend, size_t cchAppendMax); + +/** + * Callback for RTPathTraverseList that's called for each element. + * + * @returns IPRT style status code. Return VERR_TRY_AGAIN to continue, any other + * value will abort the traversing and be returned to the caller. + * + * @param pchPath Pointer to the start of the current path. This is + * not null terminated. + * @param cchPath The length of the path. + * @param pvUser1 The first user parameter. + * @param pvUser2 The second user parameter. + */ +typedef DECLCALLBACK(int) FNRTPATHTRAVERSER(char const *pchPath, size_t cchPath, void *pvUser1, void *pvUser2); +/** Pointer to a FNRTPATHTRAVERSER. */ +typedef FNRTPATHTRAVERSER *PFNRTPATHTRAVERSER; + +/** + * Traverses a string that can contain multiple paths separated by a special + * character. + * + * @returns IPRT style status code from the callback or VERR_END_OF_STRING if + * the callback returned VERR_TRY_AGAIN for all paths in the string. + * + * @param pszPathList The string to traverse. + * @param chSep The separator character. Using the null terminator + * is fine, but the result will simply be that there + * will only be one callback for the entire string + * (save any leading white space). + * @param pfnCallback The callback. + * @param pvUser1 First user argument for the callback. + * @param pvUser2 Second user argument for the callback. + */ +RTDECL(int) RTPathTraverseList(const char *pszPathList, char chSep, PFNRTPATHTRAVERSER pfnCallback, void *pvUser1, void *pvUser2); + + +/** + * Calculate a relative path between the two given paths. + * + * @returns IPRT status code. + * @retval VINF_SUCCESS on success. + * @retval VERR_BUFFER_OVERFLOW if the result is too big to fit within + * cbPathDst bytes. + * @retval VERR_NOT_SUPPORTED if both paths start with different volume specifiers. + * @param pszPathDst Where to store the resulting path. + * @param cbPathDst The size of the buffer pszPathDst points to, + * terminator included. + * @param pszPathFrom The path to start from creating the relative path. + * @param pszPathTo The path to reach with the created relative path. + */ +RTDECL(int) RTPathCalcRelative(char *pszPathDst, size_t cbPathDst, + const char *pszPathFrom, + const char *pszPathTo); + +#ifdef IN_RING3 + +/** + * Gets the path to the directory containing the executable. + * + * @returns iprt status code. + * @param pszPath Buffer where to store the path. + * @param cchPath Buffer size in bytes. + */ +RTDECL(int) RTPathExecDir(char *pszPath, size_t cchPath); + +/** + * Gets the user home directory. + * + * @returns iprt status code. + * @param pszPath Buffer where to store the path. + * @param cchPath Buffer size in bytes. + */ +RTDECL(int) RTPathUserHome(char *pszPath, size_t cchPath); + +/** + * Gets the user documents directory. + * + * The returned path isn't guaranteed to exist. + * + * @returns iprt status code. + * @param pszPath Buffer where to store the path. + * @param cchPath Buffer size in bytes. + */ +RTDECL(int) RTPathUserDocuments(char *pszPath, size_t cchPath); + +/** + * Gets the directory of shared libraries. + * + * This is not the same as RTPathAppPrivateArch() as Linux depends all shared + * libraries in a common global directory where ld.so can find them. + * + * Linux: /usr/lib + * Solaris: /opt/@/@@ or something + * Windows: @/@ + * Old path: same as RTPathExecDir() + * + * @returns iprt status code. + * @param pszPath Buffer where to store the path. + * @param cchPath Buffer size in bytes. + */ +RTDECL(int) RTPathSharedLibs(char *pszPath, size_t cchPath); + +/** + * Gets the directory for architecture-independent application data, for + * example NLS files, module sources, ... + * + * Linux: /usr/shared/@ + * Solaris: /opt/@ + * Windows: @/@ + * Old path: same as RTPathExecDir() + * + * @returns iprt status code. + * @param pszPath Buffer where to store the path. + * @param cchPath Buffer size in bytes. + */ +RTDECL(int) RTPathAppPrivateNoArch(char *pszPath, size_t cchPath); + +/** + * Gets the directory for architecture-dependent application data, for + * example modules which can be loaded at runtime. + * + * Linux: /usr/lib/@ + * Solaris: /opt/@/@@ or something + * Windows: @/@ + * Old path: same as RTPathExecDir() + * + * @returns iprt status code. + * @param pszPath Buffer where to store the path. + * @param cchPath Buffer size in bytes. + */ +RTDECL(int) RTPathAppPrivateArch(char *pszPath, size_t cchPath); + +/** + * Gets the toplevel directory for architecture-dependent application data. + * + * This differs from RTPathAppPrivateArch on Solaris only where it will work + * around the /opt/@/amd64 and /opt/@/i386 multi + * architecture installation style. + * + * Linux: /usr/lib/@ + * Solaris: /opt/@ + * Windows: @/@ + * Old path: same as RTPathExecDir() + * + * @returns iprt status code. + * @param pszPath Buffer where to store the path. + * @param cchPath Buffer size in bytes. + */ +RTDECL(int) RTPathAppPrivateArchTop(char *pszPath, size_t cchPath); + +/** + * Gets the directory for documentation. + * + * Linux: /usr/share/doc/@ + * Solaris: /opt/@ + * Windows: @/@ + * Old path: same as RTPathExecDir() + * + * @returns iprt status code. + * @param pszPath Buffer where to store the path. + * @param cchPath Buffer size in bytes. + */ +RTDECL(int) RTPathAppDocs(char *pszPath, size_t cchPath); + +/** + * Gets the temporary directory path. + * + * @returns iprt status code. + * @param pszPath Buffer where to store the path. + * @param cchPath Buffer size in bytes. + */ +RTDECL(int) RTPathTemp(char *pszPath, size_t cchPath); + +/** + * Query information about a file system object. + * + * This API will resolve NOT symbolic links in the last component (just like + * unix lstat()). + * + * @returns IPRT status code. + * @retval VINF_SUCCESS if the object exists, information returned. + * @retval VERR_PATH_NOT_FOUND if any but the last component in the specified + * path was not found or was not a directory. + * @retval VERR_FILE_NOT_FOUND if the object does not exist (but path to the + * parent directory exists). + * + * @param pszPath Path to the file system object. + * @param pObjInfo Object information structure to be filled on successful + * return. + * @param enmAdditionalAttribs + * Which set of additional attributes to request. + * Use RTFSOBJATTRADD_NOTHING if this doesn't matter. + */ +RTR3DECL(int) RTPathQueryInfo(const char *pszPath, PRTFSOBJINFO pObjInfo, RTFSOBJATTRADD enmAdditionalAttribs); + +/** + * Query information about a file system object. + * + * @returns IPRT status code. + * @retval VINF_SUCCESS if the object exists, information returned. + * @retval VERR_PATH_NOT_FOUND if any but the last component in the specified + * path was not found or was not a directory. + * @retval VERR_FILE_NOT_FOUND if the object does not exist (but path to the + * parent directory exists). + * + * @param pszPath Path to the file system object. + * @param pObjInfo Object information structure to be filled on successful return. + * @param enmAdditionalAttribs + * Which set of additional attributes to request. + * Use RTFSOBJATTRADD_NOTHING if this doesn't matter. + * @param fFlags RTPATH_F_ON_LINK or RTPATH_F_FOLLOW_LINK. + */ +RTR3DECL(int) RTPathQueryInfoEx(const char *pszPath, PRTFSOBJINFO pObjInfo, RTFSOBJATTRADD enmAdditionalAttribs, uint32_t fFlags); + +/** + * Changes the mode flags of a file system object. + * + * The API requires at least one of the mode flag sets (Unix/Dos) to + * be set. The type is ignored. + * + * This API will resolve symbolic links in the last component since + * mode isn't important for symbolic links. + * + * @returns iprt status code. + * @param pszPath Path to the file system object. + * @param fMode The new file mode, see @ref grp_rt_fs for details. + */ +RTR3DECL(int) RTPathSetMode(const char *pszPath, RTFMODE fMode); + +/** + * Gets the mode flags of a file system object. + * + * @returns iprt status code. + * @param pszPath Path to the file system object. + * @param pfMode Where to store the file mode, see @ref grp_rt_fs for details. + * + * @remark This is wrapper around RTPathQueryInfoEx(RTPATH_F_FOLLOW_LINK) and + * exists to complement RTPathSetMode(). + */ +RTR3DECL(int) RTPathGetMode(const char *pszPath, PRTFMODE pfMode); + +/** + * Changes one or more of the timestamps associated of file system object. + * + * This API will not resolve symbolic links in the last component (just + * like unix lutimes()). + * + * @returns iprt status code. + * @param pszPath Path to the file system object. + * @param pAccessTime Pointer to the new access time. + * @param pModificationTime Pointer to the new modification time. + * @param pChangeTime Pointer to the new change time. NULL if not to be changed. + * @param pBirthTime Pointer to the new time of birth. NULL if not to be changed. + * + * @remark The file system might not implement all these time attributes, + * the API will ignore the ones which aren't supported. + * + * @remark The file system might not implement the time resolution + * employed by this interface, the time will be chopped to fit. + * + * @remark The file system may update the change time even if it's + * not specified. + * + * @remark POSIX can only set Access & Modification and will always set both. + */ +RTR3DECL(int) RTPathSetTimes(const char *pszPath, PCRTTIMESPEC pAccessTime, PCRTTIMESPEC pModificationTime, + PCRTTIMESPEC pChangeTime, PCRTTIMESPEC pBirthTime); + +/** + * Changes one or more of the timestamps associated of file system object. + * + * @returns iprt status code. + * @param pszPath Path to the file system object. + * @param pAccessTime Pointer to the new access time. + * @param pModificationTime Pointer to the new modification time. + * @param pChangeTime Pointer to the new change time. NULL if not to be changed. + * @param pBirthTime Pointer to the new time of birth. NULL if not to be changed. + * @param fFlags RTPATH_F_ON_LINK or RTPATH_F_FOLLOW_LINK. + * + * @remark The file system might not implement all these time attributes, + * the API will ignore the ones which aren't supported. + * + * @remark The file system might not implement the time resolution + * employed by this interface, the time will be chopped to fit. + * + * @remark The file system may update the change time even if it's + * not specified. + * + * @remark POSIX can only set Access & Modification and will always set both. + */ +RTR3DECL(int) RTPathSetTimesEx(const char *pszPath, PCRTTIMESPEC pAccessTime, PCRTTIMESPEC pModificationTime, + PCRTTIMESPEC pChangeTime, PCRTTIMESPEC pBirthTime, uint32_t fFlags); + +/** + * Gets one or more of the timestamps associated of file system object. + * + * @returns iprt status code. + * @param pszPath Path to the file system object. + * @param pAccessTime Where to store the access time. NULL is ok. + * @param pModificationTime Where to store the modification time. NULL is ok. + * @param pChangeTime Where to store the change time. NULL is ok. + * @param pBirthTime Where to store the creation time. NULL is ok. + * + * @remark This is wrapper around RTPathQueryInfo() and exists to complement + * RTPathSetTimes(). If the last component is a symbolic link, it will + * not be resolved. + */ +RTR3DECL(int) RTPathGetTimes(const char *pszPath, PRTTIMESPEC pAccessTime, PRTTIMESPEC pModificationTime, + PRTTIMESPEC pChangeTime, PRTTIMESPEC pBirthTime); + +/** + * Changes the owner and/or group of a file system object. + * + * This API will not resolve symbolic links in the last component (just + * like unix lchown()). + * + * @returns iprt status code. + * @param pszPath Path to the file system object. + * @param uid The new file owner user id. Pass NIL_RTUID to leave + * this unchanged. + * @param gid The new group id. Pass NIL_RTGUID to leave this + * unchanged. + */ +RTR3DECL(int) RTPathSetOwner(const char *pszPath, uint32_t uid, uint32_t gid); + +/** + * Changes the owner and/or group of a file system object. + * + * @returns iprt status code. + * @param pszPath Path to the file system object. + * @param uid The new file owner user id. Pass NIL_RTUID to leave + * this unchanged. + * @param gid The new group id. Pass NIL_RTGID to leave this + * unchanged. + * @param fFlags RTPATH_F_ON_LINK or RTPATH_F_FOLLOW_LINK. + */ +RTR3DECL(int) RTPathSetOwnerEx(const char *pszPath, uint32_t uid, uint32_t gid, uint32_t fFlags); + +/** + * Gets the owner and/or group of a file system object. + * + * @returns iprt status code. + * @param pszPath Path to the file system object. + * @param pUid Where to store the owner user id. NULL is ok. + * @param pGid Where to store the group id. NULL is ok. + * + * @remark This is wrapper around RTPathQueryInfo() and exists to complement + * RTPathGetOwner(). If the last component is a symbolic link, it will + * not be resolved. + */ +RTR3DECL(int) RTPathGetOwner(const char *pszPath, uint32_t *pUid, uint32_t *pGid); + + +/** @name RTPathRename, RTDirRename & RTFileRename flags. + * @{ */ +/** Do not replace anything. */ +#define RTPATHRENAME_FLAGS_NO_REPLACE UINT32_C(0) +/** This will replace attempt any target which isn't a directory. */ +#define RTPATHRENAME_FLAGS_REPLACE RT_BIT(0) +/** Don't allow symbolic links as part of the path. + * @remarks this flag is currently not implemented and will be ignored. */ +#define RTPATHRENAME_FLAGS_NO_SYMLINKS RT_BIT(1) +/** @} */ + +/** + * Renames a path within a filesystem. + * + * This will rename symbolic links. If RTPATHRENAME_FLAGS_REPLACE is used and + * pszDst is a symbolic link, it will be replaced and not its target. + * + * @returns IPRT status code. + * @param pszSrc The source path. + * @param pszDst The destination path. + * @param fRename Rename flags, RTPATHRENAME_FLAGS_*. + */ +RTR3DECL(int) RTPathRename(const char *pszSrc, const char *pszDst, unsigned fRename); + +/** @name RTPathUnlink flags. + * @{ */ +/** Don't allow symbolic links as part of the path. + * @remarks this flag is currently not implemented and will be ignored. */ +#define RTPATHUNLINK_FLAGS_NO_SYMLINKS RT_BIT(0) +/** @} */ + +/** + * Removes the last component of the path. + * + * @returns IPRT status code. + * @param pszPath The path. + * @param fUnlink Unlink flags, RTPATHUNLINK_FLAGS_*. + */ +RTR3DECL(int) RTPathUnlink(const char *pszPath, uint32_t fUnlink); + +/** + * A /bin/rm tool. + * + * @returns Program exit code. + * + * @param cArgs The number of arguments. + * @param papszArgs The argument vector. (Note that this may be + * reordered, so the memory must be writable.) + */ +RTDECL(RTEXITCODE) RTPathRmCmd(unsigned cArgs, char **papszArgs); + +#endif /* IN_RING3 */ + +/** @} */ + +RT_C_DECLS_END + +#endif + --- linux-raspi2-4.2.0.orig/ubuntu/vbox/include/iprt/power.h +++ linux-raspi2-4.2.0/ubuntu/vbox/include/iprt/power.h @@ -0,0 +1,112 @@ +/** @file + * IPRT - Power management. + */ + +/* + * Copyright (C) 2008-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + +#ifndef ___iprt_power_h +#define ___iprt_power_h + +#include +#include + + +RT_C_DECLS_BEGIN + +/** @defgroup grp_rt_power RTPower - Power management + * @ingroup grp_rt + * @{ + */ + +#ifdef IN_RING0 + +/** + * MP event, see FNRTPOWERNOTIFICATION. + */ +typedef enum RTPOWEREVENT +{ + /** The system will go into suspend mode. */ + RTPOWEREVENT_SUSPEND = 1, + /** The system has resumed. */ + RTPOWEREVENT_RESUME +} RTPOWEREVENT; + +/** + * Notification callback. + * + * The context this is called in differs a bit from platform to + * platform, so be careful while in here. + * + * @param enmEvent The event. + * @param pvUser The user argument. + */ +typedef DECLCALLBACK(void) FNRTPOWERNOTIFICATION(RTPOWEREVENT enmEvent, void *pvUser); +/** Pointer to a FNRTPOWERNOTIFICATION(). */ +typedef FNRTPOWERNOTIFICATION *PFNRTPOWERNOTIFICATION; + +/** + * Registers a notification callback for power events. + * + * @returns IPRT status code. + * @retval VINF_SUCCESS on success. + * @retval VERR_NO_MEMORY if a registration record cannot be allocated. + * @retval VERR_ALREADY_EXISTS if the pfnCallback and pvUser already exist + * in the callback list. + * + * @param pfnCallback The callback. + * @param pvUser The user argument to the callback function. + */ +RTDECL(int) RTPowerNotificationRegister(PFNRTPOWERNOTIFICATION pfnCallback, void *pvUser); + +/** + * This deregisters a notification callback registered via RTPowerNotificationRegister(). + * + * The pfnCallback and pvUser arguments must be identical to the registration call + * of we won't find the right entry. + * + * @returns IPRT status code. + * @retval VINF_SUCCESS on success. + * @retval VERR_NOT_FOUND if no matching entry was found. + * + * @param pfnCallback The callback. + * @param pvUser The user argument to the callback function. + */ +RTDECL(int) RTPowerNotificationDeregister(PFNRTPOWERNOTIFICATION pfnCallback, void *pvUser); + +/** + * This calls all registered power management callback handlers registered via RTPowerNotificationRegister(). + * + * @returns IPRT status code. + * @retval VINF_SUCCESS on success. + * + * @param enmEvent Power Management event + */ +RTDECL(int) RTPowerSignalEvent(RTPOWEREVENT enmEvent); + +#endif /* IN_RING0 */ + +/** @} */ + +RT_C_DECLS_END + +#endif + --- linux-raspi2-4.2.0.orig/ubuntu/vbox/include/iprt/process.h +++ linux-raspi2-4.2.0/ubuntu/vbox/include/iprt/process.h @@ -0,0 +1,413 @@ +/** @file + * IPRT - Process Management. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + +#ifndef ___iprt_process_h +#define ___iprt_process_h + +#include +#include + +RT_C_DECLS_BEGIN + +/** @defgroup grp_rt_process RTProc - Process Management + * @ingroup grp_rt + * @{ + */ + + +/** + * Process priority. + * + * The process priority is used to select how scheduling properties + * are assigned to the different thread types (see THREADTYPE). + * + * In addition to using the policy assigned to the process at startup (DEFAULT) + * it is possible to change the process priority at runtime. This allows for + * a GUI, resource manager or admin to adjust the general priority of a task + * without upsetting the fine-tuned priority of the threads within. + */ +typedef enum RTPROCPRIORITY +{ + /** Invalid priority. */ + RTPROCPRIORITY_INVALID = 0, + /** Default priority. + * Derive the scheduling policy from the priority of the RTR3Init() + * and RTProcSetPriority() callers and the rights the process have + * to alter its own priority. + */ + RTPROCPRIORITY_DEFAULT, + /** Flat priority. + * Assumes a scheduling policy which puts the process at the default priority + * and with all thread at the same priority. + */ + RTPROCPRIORITY_FLAT, + /** Low priority. + * Assumes a scheduling policy which puts the process mostly below the + * default priority of the host OS. + */ + RTPROCPRIORITY_LOW, + /** Normal priority. + * Assume a scheduling policy which shares the CPU resources fairly with + * other processes running with the default priority of the host OS. + */ + RTPROCPRIORITY_NORMAL, + /** High priority. + * Assumes a scheduling policy which puts the task above the default + * priority of the host OS. This policy might easily cause other tasks + * in the system to starve. + */ + RTPROCPRIORITY_HIGH, + /** Last priority, used for validation. */ + RTPROCPRIORITY_LAST +} RTPROCPRIORITY; + + +/** + * Get the current process identifier. + * + * @returns Process identifier. + */ +RTDECL(RTPROCESS) RTProcSelf(void); + + +#ifdef IN_RING0 +/** + * Get the current process handle. + * + * @returns Ring-0 process handle. + */ +RTR0DECL(RTR0PROCESS) RTR0ProcHandleSelf(void); +#endif + + +#ifdef IN_RING3 + +/** + * Attempts to alter the priority of the current process. + * + * @returns iprt status code. + * @param enmPriority The new priority. + */ +RTR3DECL(int) RTProcSetPriority(RTPROCPRIORITY enmPriority); + +/** + * Gets the current priority of this process. + * + * @returns The priority (see RTPROCPRIORITY). + */ +RTR3DECL(RTPROCPRIORITY) RTProcGetPriority(void); + +/** + * Create a child process. + * + * @returns iprt status code. + * @param pszExec Executable image to use to create the child process. + * @param papszArgs Pointer to an array of arguments to the child. The array terminated by an entry containing NULL. + * @param Env Handle to the environment block for the child. + * @param fFlags Flags, one of the RTPROC_FLAGS_* defines. + * @param pProcess Where to store the process identifier on successful return. + * The content is not changed on failure. NULL is allowed. + */ +RTR3DECL(int) RTProcCreate(const char *pszExec, const char * const *papszArgs, RTENV Env, unsigned fFlags, PRTPROCESS pProcess); + + +/** + * Create a child process. + * + * @returns IPRT status code. + * + * @param pszExec Executable image to use to create the child process. + * @param papszArgs Pointer to an array of arguments to the child. The + * array terminated by an entry containing NULL. + * @param hEnv Handle to the environment block for the child. Pass + * RTENV_DEFAULT to use the environment of the current + * process. + * @param fFlags Flags, one of the RTPROC_FLAGS_* defines. + * @param phStdIn The standard in handle to assign the new process. Pass + * NULL to use the same as the current process. If the + * handle is NIL, we'll close the standard input of the + * guest. + * @param phStdOut The standard out handle to assign the new process. Pass + * NULL to use the same as the current process. If the + * handle is NIL, we'll close the standard output of the + * guest. + * @param phStdErr The standard error handle to assign the new process. Pass + * NULL to use the same as the current process. If the + * handle is NIL, we'll close the standard error of the + * guest. + * @param pszAsUser User to run the process as. Pass NULL to use the same + * user as the current process. + * Windows: Use user@domain format to specify a domain. + * @param pszPassword Password to use to authenticate @a pszAsUser. Must be + * NULL wif pszAsUser is NULL. Whether this is actually + * used or not depends on the platform. + * @param phProcess Where to store the process handle on successful return. + * The content is not changed on failure. NULL is allowed. + * + * @remarks The handles does not have to be created as inheritable, but it + * doesn't hurt if they are as it may avoid race conditions on some + * platforms. + * + * @remarks The as-user feature isn't supported/implemented on all platforms and + * will cause a-yet-to-be-determined-error-status on these. + */ +RTR3DECL(int) RTProcCreateEx(const char *pszExec, const char * const *papszArgs, RTENV hEnv, uint32_t fFlags, + PCRTHANDLE phStdIn, PCRTHANDLE phStdOut, PCRTHANDLE phStdErr, const char *pszAsUser, + const char *pszPassword, PRTPROCESS phProcess); + +/** @name RTProcCreate and RTProcCreateEx flags + * @{ */ +/** Detach the child process from the parents process tree and process group, + * session or/and console (depends on the platform what's done applicable). + * + * The new process will not be a direct decendent of the parent and it will not + * be possible to wait for it, i.e. @a phProcess shall be NULL. */ +#define RTPROC_FLAGS_DETACHED RT_BIT(0) +/** Don't show the started process. + * This is a window (and maybe OS/2) concept, do not use on other platforms. */ +#define RTPROC_FLAGS_HIDDEN RT_BIT(1) +/** Use special code path for starting child processes from a service (daemon). + * This is a windows concept for dealing with the so called "Session 0" + * isolation which was introduced with Windows Vista. Do not use on other + * platforms. */ +#define RTPROC_FLAGS_SERVICE RT_BIT(2) +/** Suppress changing the process contract id for the child process + * on Solaris. Without this flag the contract id is always changed, as that's + * the more frequently used case. */ +#define RTPROC_FLAGS_SAME_CONTRACT RT_BIT(3) +/** Do not load user profile data when executing a process. + * This bit at the moment only is valid on Windows. */ +#define RTPROC_FLAGS_NO_PROFILE RT_BIT(4) +/** Create process without a console window. + * This is a Windows (and OS/2) concept, do not use on other platforms. */ +#define RTPROC_FLAGS_NO_WINDOW RT_BIT(5) +/** Search the PATH for the executable. */ +#define RTPROC_FLAGS_SEARCH_PATH RT_BIT(6) +/** Don't quote and escape arguments on Windows and similar platforms where a + * command line is passed to the child process instead of an argument vector, + * just join up argv with a space between each. Ignored on platforms + * passing argument the vector. */ +#define RTPROC_FLAGS_UNQUOTED_ARGS RT_BIT(7) +/** Valid flag mask. */ +#define RTPROC_FLAGS_VALID_MASK UINT32_C(0xff) +/** @} */ + + +/** + * Process exit reason. + */ +typedef enum RTPROCEXITREASON +{ + /** Normal exit. iStatus contains the exit code. */ + RTPROCEXITREASON_NORMAL = 1, + /** Any abnormal exit. iStatus is undefined. */ + RTPROCEXITREASON_ABEND, + /** Killed by a signal. The iStatus field contains the signal number. */ + RTPROCEXITREASON_SIGNAL +} RTPROCEXITREASON; + +/** + * Process exit status. + */ +typedef struct RTPROCSTATUS +{ + /** The process exit status if the exit was a normal one. */ + int iStatus; + /** The reason the process terminated. */ + RTPROCEXITREASON enmReason; +} RTPROCSTATUS; +/** Pointer to a process exit status structure. */ +typedef RTPROCSTATUS *PRTPROCSTATUS; +/** Pointer to a const process exit status structure. */ +typedef const RTPROCSTATUS *PCRTPROCSTATUS; + + +/** Flags for RTProcWait(). + * @{ */ +/** Block indefinitly waiting for the process to exit. */ +#define RTPROCWAIT_FLAGS_BLOCK 0 +/** Don't block, just check if the process have exited. */ +#define RTPROCWAIT_FLAGS_NOBLOCK 1 +/** @} */ + +/** + * Waits for a process, resumes on interruption. + * + * @returns VINF_SUCCESS when the status code for the process was collected and + * put in *pProcStatus. + * @returns VERR_PROCESS_NOT_FOUND if the specified process wasn't found. + * @returns VERR_PROCESS_RUNNING when the RTPROCWAIT_FLAGS_NOBLOCK and the + * process haven't exited yet. + * + * @param Process The process to wait for. + * @param fFlags The wait flags, any of the RTPROCWAIT_FLAGS_ \#defines. + * @param pProcStatus Where to store the exit status on success. + * Optional. + */ +RTR3DECL(int) RTProcWait(RTPROCESS Process, unsigned fFlags, PRTPROCSTATUS pProcStatus); + +/** + * Waits for a process, returns on interruption. + * + * @returns VINF_SUCCESS when the status code for the process was collected and + * put in *pProcStatus. + * @returns VERR_PROCESS_NOT_FOUND if the specified process wasn't found. + * @returns VERR_PROCESS_RUNNING when the RTPROCWAIT_FLAGS_NOBLOCK and the + * process haven't exited yet. + * @returns VERR_INTERRUPTED when the wait was interrupted by the arrival of a + * signal or other async event. + * + * @param Process The process to wait for. + * @param fFlags The wait flags, any of the RTPROCWAIT_FLAGS_ \#defines. + * @param pProcStatus Where to store the exit status on success. + * Optional. + */ +RTR3DECL(int) RTProcWaitNoResume(RTPROCESS Process, unsigned fFlags, PRTPROCSTATUS pProcStatus); + +/** + * Terminates (kills) a running process. + * + * @returns IPRT status code. + * @param Process The process to terminate. + */ +RTR3DECL(int) RTProcTerminate(RTPROCESS Process); + +/** + * Gets the processor affinity mask of the current process. + * + * @returns The affinity mask. + */ +RTR3DECL(uint64_t) RTProcGetAffinityMask(void); + +/** + * Gets the short process name. + * + * @returns Pointer to read-only name string. + */ +RTR3DECL(const char *) RTProcShortName(void); + +/** + * Gets the path to the executable image of the current process. + * + * @returns pszExecPath on success. NULL on buffer overflow or other errors. + * + * @param pszExecPath Where to store the path. + * @param cbExecPath The size of the buffer. + */ +RTR3DECL(char *) RTProcGetExecutablePath(char *pszExecPath, size_t cbExecPath); + +/** + * Daemonize the current process, making it a background process. + * + * The way this work is that it will spawn a detached / backgrounded / + * daemonized / call-it-what-you-want process that isn't a direct child of the + * current process. The spawned will have the same arguments a the caller, + * except that the @a pszDaemonizedOpt is appended to prevent that the new + * process calls this API again. + * + * The new process will have the standard handles directed to/from the + * bitbucket. + * + * @returns IPRT status code. On success it is normal for the caller to exit + * the process by returning from main(). + * + * @param papszArgs The argument vector of the calling process. + * @param pszDaemonized The daemonized option. This is appended to the end + * of the parameter list of the daemonized process. + */ +RTR3DECL(int) RTProcDaemonize(const char * const *papszArgs, const char *pszDaemonizedOpt); + +/** + * Daemonize the current process, making it a background process. The current + * process will exit if daemonizing is successful. + * + * @returns IPRT status code. On success it will only return in the child + * process, the parent will exit. On failure, it will return in the + * parent process and no child has been spawned. + * + * @param fNoChDir Pass false to change working directory to "/". + * @param fNoClose Pass false to redirect standard file streams to the null device. + * @param pszPidfile Path to a file to write the process id of the daemon + * process to. Daemonizing will fail if this file already + * exists or cannot be written. May be NULL. + */ +RTR3DECL(int) RTProcDaemonizeUsingFork(bool fNoChDir, bool fNoClose, const char *pszPidfile); + +/** + * Check if the given process is running on the system. + * + * This check is case sensitive on most systems, except for Windows, OS/2 and + * Darwin. + * + * @returns true if the process is running & false otherwise. + * @param pszName Process name to search for. If no path is given only the + * filename part of the running process set will be + * matched. If a path is specified, the full path will be + * matched. + */ +RTR3DECL(bool) RTProcIsRunningByName(const char *pszName); + +/** + * Queries the parent process ID. + * + * @returns IPRT status code + * @param hProcess The process to query the parent of. + * @param phParent Where to return the parent process ID. + */ +RTR3DECL(int) RTProcQueryParent(RTPROCESS hProcess, PRTPROCESS phParent); + +/** + * Query the username of the given process. + * + * @returns IPRT status code. + * @retval VERR_BUFFER_OVERFLOW if the given buffer size is to small for the username. + * @param hProcess The process handle to query the username for. + * @param pszUser Where to store the user name on success. + * @param cbUser The size of the user name buffer. + * @param pcbUser Where to store the username length on success + * or the required buffer size if VERR_BUFFER_OVERFLOW + * is returned. + */ +RTR3DECL(int) RTProcQueryUsername(RTPROCESS hProcess, char *pszUser, size_t cbUser, + size_t *pcbUser); + +/** + * Query the username of the given process allocating the string for the username. + * + * @returns IPRT status code. + * @param hProcess The process handle to query the username for. + * @param ppszUser Where to store the pointer to the string containing + * the username on success. Free with RTStrFree(). + */ +RTR3DECL(int) RTProcQueryUsernameA(RTPROCESS hProcess, char **ppszUser); + +#endif /* IN_RING3 */ + +/** @} */ + +RT_C_DECLS_END + +#endif + --- linux-raspi2-4.2.0.orig/ubuntu/vbox/include/iprt/semaphore.h +++ linux-raspi2-4.2.0/ubuntu/vbox/include/iprt/semaphore.h @@ -0,0 +1,1441 @@ +/** @file + * IPRT - Semaphore. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + +#ifndef ___iprt_semaphore_h +#define ___iprt_semaphore_h + +#include +#include +#if defined(RT_LOCK_STRICT_ORDER) && defined(IN_RING3) +# include +#endif + + +RT_C_DECLS_BEGIN + +/** @defgroup grp_rt_sems RTSem - Semaphores + * + * This module implements all kinds of event and mutex semaphores; in addition + * to these, IPRT implements "critical sections", which are fast recursive + * mutexes (see @ref grp_rt_critsect ). C++ users may find @ref grp_rt_cpp_lock + * interesting. + * + * @ingroup grp_rt + * @{ + */ + + +/** @name Generic Semaphore Wait Flags. + * + * @remarks Exactly one of RTSEMWAIT_FLAGS_RELATIVE and + * RTSEMWAIT_FLAGS_ABSOLUTE must be set, unless + * RTSEMWAIT_FLAGS_INDEFINITE is used. + * + * Exactly one of RTSEMWAIT_FLAGS_NANOSECS and + * RTSEMWAIT_FLAGS_MILLISECS must be set, unless + * RTSEMWAIT_FLAGS_INDEFINITE is used. + * + * Exactly one of RTSEMWAIT_FLAGS_RESUME and RTSEMWAIT_FLAGS_NORESUME + * must be set. + * + * The interruptible vs resume stuff is ring-0 vs ring-3 semantics. + * + * @{ */ +/** The timeout is relative. */ +#define RTSEMWAIT_FLAGS_RELATIVE RT_BIT_32(0) +/** The timeout is absolute. */ +#define RTSEMWAIT_FLAGS_ABSOLUTE RT_BIT_32(1) +/** The timeout is specified in nanoseconds. */ +#define RTSEMWAIT_FLAGS_NANOSECS RT_BIT_32(2) +/** The timeout is specified in milliseconds. */ +#define RTSEMWAIT_FLAGS_MILLISECS RT_BIT_32(3) +/** Indefinite wait. + * The relative/absolute and nano-/millisecond flags are ignored. */ +#define RTSEMWAIT_FLAGS_INDEFINITE RT_BIT_32(4) +/** Mask covering the time related bits. */ +#define RTSEMWAIT_FLAGS_TIME_MASK UINT32_C(0x0000001f) + +/** Interruptible wait. */ +#define RTSEMWAIT_FLAGS_INTERRUPTIBLE RT_BIT_32(5) +/** No automatic resume, same as interruptible. */ +#define RTSEMWAIT_FLAGS_NORESUME RTSEMWAIT_FLAGS_INTERRUPTIBLE +/** Uninterruptible wait. */ +#define RTSEMWAIT_FLAGS_UNINTERRUPTIBLE RT_BIT_32(6) +/** Resume on interrupt, same as uninterruptible. */ +#define RTSEMWAIT_FLAGS_RESUME RTSEMWAIT_FLAGS_UNINTERRUPTIBLE + +/** Macro for validate the flags. */ +#define RTSEMWAIT_FLAGS_ARE_VALID(fFlags) \ + ( !((fFlags) & UINT32_C(0xffffff80)) \ + && ( ((fFlags) & RTSEMWAIT_FLAGS_INDEFINITE) \ + ? ( (((fFlags) & UINT32_C(0x20))) ^ (((fFlags) >> 1) & UINT32_C(0x20)) ) == UINT32_C(0x20) \ + : ( (((fFlags) & UINT32_C(0x25))) ^ (((fFlags) >> 1) & UINT32_C(0x25)) ) == UINT32_C(0x25) )) +/** @} */ + + + +/** @defgroup grp_rt_sems_event RTSemEvent - Single Release Event Semaphores + * + * Event semaphores can be used for inter-thread communication when one thread + * wants to notify another thread that something happened. A thread can block + * ("wait") on an event semaphore until it is signalled by another thread; see + * RTSemEventCreate, RTSemEventSignal and RTSemEventWait. + * + * @{ */ + +/** + * Create an event semaphore. + * + * @returns iprt status code. + * @param phEventSem Where to store the handle to the newly created + * event semaphore. + */ +RTDECL(int) RTSemEventCreate(PRTSEMEVENT phEventSem); + +/** + * Create an event semaphore. + * + * @returns iprt status code. + * @param phEventSem Where to store the handle to the newly created + * event semaphore. + * @param fFlags Flags, any combination of the + * RTSEMEVENT_FLAGS_XXX \#defines. + * @param hClass The class (no reference consumed). Since we + * don't do order checks on event semaphores, the + * use of the class is limited to controlling the + * timeout threshold for deadlock detection. + * @param pszNameFmt Name format string for the lock validator, + * optional (NULL). Max length is 32 bytes. + * @param ... Format string arguments. + */ +RTDECL(int) RTSemEventCreateEx(PRTSEMEVENT phEventSem, uint32_t fFlags, RTLOCKVALCLASS hClass, const char *pszNameFmt, ...); + +/** @name RTSemMutexCreateEx flags + * @{ */ +/** Disables lock validation. */ +#define RTSEMEVENT_FLAGS_NO_LOCK_VAL UINT32_C(0x00000001) +/** Bootstrap hack for use with certain memory allocator locks only! */ +#define RTSEMEVENT_FLAGS_BOOTSTRAP_HACK UINT32_C(0x00000004) +/** @} */ + +/** + * Destroy an event semaphore. + * + * @returns iprt status code. + * @param hEventSem Handle of the event semaphore. NIL_RTSEMEVENT + * is quietly ignored (VINF_SUCCESS). + */ +RTDECL(int) RTSemEventDestroy(RTSEMEVENT hEventSem); + +/** + * Signal an event semaphore. + * + * The event semaphore will be signaled and automatically reset after exactly + * one thread have successfully returned from RTSemEventWait() after + * waiting/polling on that semaphore. + * + * @returns iprt status code. + * @param hEventSem The event semaphore to signal. + * + * @remarks ring-0: This works when preemption is disabled. However it is + * system specific whether it works in interrupt context or with + * interrupts disabled. + */ +RTDECL(int) RTSemEventSignal(RTSEMEVENT hEventSem); + +/** + * Wait for the event semaphore to be signaled, resume on interruption. + * + * This function will resume if the wait is interrupted by an async system event + * (like a unix signal) or similar. + * + * @returns iprt status code. + * Will not return VERR_INTERRUPTED. + * @param hEventSem The event semaphore to wait on. + * @param cMillies Number of milliseconds to wait. + */ +RTDECL(int) RTSemEventWait(RTSEMEVENT hEventSem, RTMSINTERVAL cMillies); + +/** + * Wait for the event semaphore to be signaled, return on interruption. + * + * This function will not resume the wait if interrupted. + * + * @returns iprt status code. + * @param hEventSem The event semaphore to wait on. + * @param cMillies Number of milliseconds to wait. + */ +RTDECL(int) RTSemEventWaitNoResume(RTSEMEVENT hEventSem, RTMSINTERVAL cMillies); + +/** + * Extended API for waiting on an event semaphore to be signaled. + * + * @returns IPRT status code. + * @param hEventSem The event semaphore to wait on. + * @param fFlags Combination of RTSEMWAIT_FLAGS_XXX. + * @param uTimeout The timeout, ignored if + * RTSEMWAIT_FLAGS_INDEFINITE is set in @a flags. + * Whether this is absolute or relative, + * milliseconds or nanoseconds depends on the @a + * fFlags value. Do not pass RT_INDEFINITE_WAIT + * here, use RTSEMWAIT_FLAGS_INDEFINITE instead. + */ +RTDECL(int) RTSemEventWaitEx(RTSEMEVENT hEventSem, uint32_t fFlags, uint64_t uTimeout); + +/** + * Debug version of RTSemEventWaitEx that tracks the location. + * + * @returns IPRT status code, see RTSemEventWaitEx. + * @param hEventSem The event semaphore to wait on. + * @param fFlags See RTSemEventWaitEx. + * @param uTimeout See RTSemEventWaitEx. + * @param uId Some kind of locking location ID. Typically a + * return address up the stack. Optional (0). + * @param pszFile The file where the lock is being acquired from. + * Optional. + * @param iLine The line number in that file. Optional (0). + * @param pszFunction The function where the lock is being acquired + * from. Optional. + */ +RTDECL(int) RTSemEventWaitExDebug(RTSEMEVENT hEventSem, uint32_t fFlags, uint64_t uTimeout, + RTHCUINTPTR uId, RT_SRC_POS_DECL); + +/** + * Gets the best timeout resolution that RTSemEventWaitEx can do. + * + * @returns The resolution in nanoseconds. + */ +RTDECL(uint32_t) RTSemEventGetResolution(void); + +/** + * Sets the signaller thread to one specific thread. + * + * This is only used for validating usage and deadlock detection. When used + * after calls to RTSemEventAddSignaller, the specified thread will be the only + * signalling thread. + * + * @param hEventSem The event semaphore. + * @param hThread The thread that will signal it. Pass + * NIL_RTTHREAD to indicate that there is no + * special signalling thread. + */ +RTDECL(void) RTSemEventSetSignaller(RTSEMEVENT hEventSem, RTTHREAD hThread); + +/** + * To add more signalling threads. + * + * First call RTSemEventSetSignaller then add further threads with this. + * + * @param hEventSem The event semaphore. + * @param hThread The thread that will signal it. NIL_RTTHREAD is + * not accepted. + */ +RTDECL(void) RTSemEventAddSignaller(RTSEMEVENT hEventSem, RTTHREAD hThread); + +/** + * To remove a signalling thread. + * + * Reverts work done by RTSemEventAddSignaller and RTSemEventSetSignaller. + * + * @param hEventSem The event semaphore. + * @param hThread A previously added thread. + */ +RTDECL(void) RTSemEventRemoveSignaller(RTSEMEVENT hEventSem, RTTHREAD hThread); + +/** @} */ + + +/** @defgroup grp_rt_sems_event_multi RTSemEventMulti - Multiple Release Event Semaphores + * + * A variant of @ref grp_rt_sems_event where all threads will be unblocked when + * signalling the semaphore. + * + * @{ */ + +/** + * Creates a multiple release event semaphore. + * + * @returns iprt status code. + * @param phEventMultiSem Where to store the handle to the newly created + * multiple release event semaphore. + */ +RTDECL(int) RTSemEventMultiCreate(PRTSEMEVENTMULTI phEventMultiSem); + +/** + * Creates a multiple release event semaphore. + * + * @returns iprt status code. + * @param phEventMultiSem Where to store the handle to the newly created + * multiple release event semaphore. + * @param fFlags Flags, any combination of the + * RTSEMEVENTMULTI_FLAGS_XXX \#defines. + * @param hClass The class (no reference consumed). Since we + * don't do order checks on event semaphores, the + * use of the class is limited to controlling the + * timeout threshold for deadlock detection. + * @param pszNameFmt Name format string for the lock validator, + * optional (NULL). Max length is 32 bytes. + * @param ... Format string arguments. + */ +RTDECL(int) RTSemEventMultiCreateEx(PRTSEMEVENTMULTI phEventMultiSem, uint32_t fFlags, RTLOCKVALCLASS hClass, + const char *pszNameFmt, ...); + +/** @name RTSemMutexCreateEx flags + * @{ */ +/** Disables lock validation. */ +#define RTSEMEVENTMULTI_FLAGS_NO_LOCK_VAL UINT32_C(0x00000001) +/** @} */ + +/** + * Destroy an event multi semaphore. + * + * @returns iprt status code. + * @param hEventMultiSem The multiple release event semaphore. NIL is + * quietly ignored (VINF_SUCCESS). + */ +RTDECL(int) RTSemEventMultiDestroy(RTSEMEVENTMULTI hEventMultiSem); + +/** + * Signal an event multi semaphore. + * + * @returns iprt status code. + * @param hEventMultiSem The multiple release event semaphore. + * + * @remarks ring-0: This works when preemption is disabled. However it is + * system specific whether it works in interrupt context or with + * interrupts disabled. + */ +RTDECL(int) RTSemEventMultiSignal(RTSEMEVENTMULTI hEventMultiSem); + +/** + * Resets an event multi semaphore to non-signaled state. + * + * @returns iprt status code. + * @param hEventMultiSem The multiple release event semaphore. + */ +RTDECL(int) RTSemEventMultiReset(RTSEMEVENTMULTI hEventMultiSem); + +/** + * Wait for the event multi semaphore to be signaled, resume on interruption. + * + * This function will resume if the wait is interrupted by an async + * system event (like a unix signal) or similar. + * + * @returns iprt status code. + * Will not return VERR_INTERRUPTED. + * @param hEventMultiSem The multiple release event semaphore. + * @param cMillies Number of milliseconds to wait. + */ +RTDECL(int) RTSemEventMultiWait(RTSEMEVENTMULTI hEventMultiSem, RTMSINTERVAL cMillies); + +/** + * Wait for the event multi semaphore to be signaled, return on interruption. + * + * This function will not resume the wait if interrupted. + * + * @returns iprt status code. + * @param hEventMultiSem The multiple release event semaphore. + * @param cMillies Number of milliseconds to wait. + * @todo Rename to RTSemEventMultiWaitIntr since it is mainly for + * ring-0 consumption. + */ +RTDECL(int) RTSemEventMultiWaitNoResume(RTSEMEVENTMULTI hEventMultiSem, RTMSINTERVAL cMillies); + +/** + * Extended API for waiting on an event semaphore to be signaled. + * + * @returns IPRT status code. + * @param hEventMultiSem The multiple release event semaphore to wait + * on. + * @param fFlags Combination of the RTSEMWAIT_FLAGS_XXX. + * @param uTimeout The timeout, ignored if + * RTSEMWAIT_FLAGS_INDEFINITE is set in @a flags. + * Whether this is absolute or relative, + * milliseconds or nanoseconds depends on the @a + * fFlags value. Do not pass RT_INDEFINITE_WAIT + * here, use RTSEMWAIT_FLAGS_INDEFINITE instead. + */ +RTDECL(int) RTSemEventMultiWaitEx(RTSEMEVENTMULTI hEventMultiSem, uint32_t fFlags, uint64_t uTimeout); + +/** + * Debug version of RTSemEventMultiWaitEx that tracks the location. + + * @returns IPRT status code, see RTSemEventMultiWaitEx. + * @param hEventMultiSem The multiple release event semaphore handle. + * @param fFlags See RTSemEventMultiWaitEx. + * @param uTimeout See RTSemEventMultiWaitEx. + * @param uId Some kind of locking location ID. Typically a + * return address up the stack. Optional (0). + * @param pszFile The file where the lock is being acquired from. + * Optional. + * @param iLine The line number in that file. Optional (0). + * @param pszFunction The function where the lock is being acquired + * from. Optional. + */ +RTDECL(int) RTSemEventMultiWaitExDebug(RTSEMEVENTMULTI hEventMultiSem, uint32_t fFlags, uint64_t uTimeout, + RTHCUINTPTR uId, RT_SRC_POS_DECL); + +/** + * Gets the best timeout resolution that RTSemEventMultiWaitEx can do. + * + * @returns The resolution in nanoseconds. + */ +RTDECL(uint32_t) RTSemEventMultiGetResolution(void); + +/** + * Sets the signaller thread to one specific thread. + * + * This is only used for validating usage and deadlock detection. When used + * after calls to RTSemEventAddSignaller, the specified thread will be the only + * signalling thread. + * + * @param hEventMultiSem The multiple release event semaphore. + * @param hThread The thread that will signal it. Pass + * NIL_RTTHREAD to indicate that there is no + * special signalling thread. + */ +RTDECL(void) RTSemEventMultiSetSignaller(RTSEMEVENTMULTI hEventMultiSem, RTTHREAD hThread); + +/** + * To add more signalling threads. + * + * First call RTSemEventSetSignaller then add further threads with this. + * + * @param hEventMultiSem The multiple release event semaphore. + * @param hThread The thread that will signal it. NIL_RTTHREAD is + * not accepted. + */ +RTDECL(void) RTSemEventMultiAddSignaller(RTSEMEVENTMULTI hEventMultiSem, RTTHREAD hThread); + +/** + * To remove a signalling thread. + * + * Reverts work done by RTSemEventAddSignaller and RTSemEventSetSignaller. + * + * @param hEventMultiSem The multiple release event semaphore. + * @param hThread A previously added thread. + */ +RTDECL(void) RTSemEventMultiRemoveSignaller(RTSEMEVENTMULTI hEventMultiSem, RTTHREAD hThread); + +/** @} */ + + +/** @defgroup grp_rt_sems_mutex RTSemMutex - Mutex semaphores. + * + * Mutex semaphores protect a section of code or data to which access must be + * exclusive. Only one thread can hold access to a critical section at one + * time. See RTSemMutexCreate, RTSemMutexRequest and RTSemMutexRelease. + * + * @remarks These are less efficient than "fast mutexes" and "critical + * sections", which IPRT implements as well; see @ref + * grp_rt_sems_fast_mutex and @ref grp_rt_critsect . + * + * @{ */ + +/** + * Create a mutex semaphore. + * + * @returns iprt status code. + * @param phMutexSem Where to store the mutex semaphore handle. + */ +RTDECL(int) RTSemMutexCreate(PRTSEMMUTEX phMutexSem); + +/** + * Creates a read/write semaphore. + * + * @returns iprt status code. + * @param phRWSem Where to store the handle to the newly created + * RW semaphore. + * @param fFlags Flags, any combination of the + * RTSEMMUTEX_FLAGS_XXX \#defines. + * @param hClass The class (no reference consumed). If NIL, no + * lock order validation will be performed on this + * lock. + * @param uSubClass The sub-class. This is used to define lock + * order within a class. RTLOCKVAL_SUB_CLASS_NONE + * is the recommended value here. + * @param pszNameFmt Name format string for the lock validator, + * optional (NULL). Max length is 32 bytes. + * @param ... Format string arguments. + */ +RTDECL(int) RTSemMutexCreateEx(PRTSEMMUTEX phMutexSem, uint32_t fFlags, + RTLOCKVALCLASS hClass, uint32_t uSubClass, const char *pszNameFmt, ...); + +/** @name RTSemMutexCreateEx flags + * @{ */ +/** Disables lock validation. */ +#define RTSEMMUTEX_FLAGS_NO_LOCK_VAL UINT32_C(0x00000001) +/** @} */ + + +/** + * Destroy a mutex semaphore. + * + * @returns iprt status code. + * @param hMutexSem The mutex semaphore to destroy. NIL is quietly + * ignored (VINF_SUCCESS). + */ +RTDECL(int) RTSemMutexDestroy(RTSEMMUTEX hMutexSem); + +/** + * Changes the lock validator sub-class of the mutex semaphore. + * + * It is recommended to try make sure that nobody is using this semaphore while + * changing the value. + * + * @returns The old sub-class. RTLOCKVAL_SUB_CLASS_INVALID is returns if the + * lock validator isn't compiled in or either of the parameters are + * invalid. + * @param hMutexSem The handle to the mutex semaphore. + * @param uSubClass The new sub-class value. + */ +RTDECL(uint32_t) RTSemMutexSetSubClass(RTSEMMUTEX hMutexSem, uint32_t uSubClass); + +/** + * Request ownership of a mutex semaphore, resume on interruption. + * + * This function will resume if the wait is interrupted by an async + * system event (like a unix signal) or similar. + * + * The same thread may request a mutex semaphore multiple times, + * a nested counter is kept to make sure it's released on the right + * RTSemMutexRelease() call. + * + * @returns iprt status code. + * Will not return VERR_INTERRUPTED. + * @param hMutexSem The mutex semaphore to request ownership over. + * @param cMillies The number of milliseconds to wait. + */ +RTDECL(int) RTSemMutexRequest(RTSEMMUTEX hMutexSem, RTMSINTERVAL cMillies); + +/** + * Request ownership of a mutex semaphore, return on interruption. + * + * This function will not resume the wait if interrupted. + * + * The same thread may request a mutex semaphore multiple times, + * a nested counter is kept to make sure it's released on the right + * RTSemMutexRelease() call. + * + * @returns iprt status code. + * @param hMutexSem The mutex semaphore to request ownership over. + * @param cMillies The number of milliseconds to wait. + */ +RTDECL(int) RTSemMutexRequestNoResume(RTSEMMUTEX hMutexSem, RTMSINTERVAL cMillies); + +/** + * Debug version of RTSemMutexRequest that tracks the location. + * + * @returns iprt status code. + * Will not return VERR_INTERRUPTED. + * @param hMutexSem The mutex semaphore to request ownership over. + * @param cMillies The number of milliseconds to wait. + * @param uId Some kind of locking location ID. Typically a + * return address up the stack. Optional (0). + * @param pszFile The file where the lock is being acquired from. + * Optional. + * @param iLine The line number in that file. Optional (0). + * @param pszFunction The function where the lock is being acquired + * from. Optional. + */ +RTDECL(int) RTSemMutexRequestDebug(RTSEMMUTEX hMutexSem, RTMSINTERVAL cMillies, RTHCUINTPTR uId, RT_SRC_POS_DECL); + +/** + * Debug version of RTSemMutexRequestNoResume that tracks the location. + * + * @returns iprt status code. + * @param hMutexSem The mutex semaphore to request ownership over. + * @param cMillies The number of milliseconds to wait. + * @param uId Some kind of locking location ID. Typically a + * return address up the stack. Optional (0). + * @param pszFile The file where the lock is being acquired from. + * Optional. + * @param iLine The line number in that file. Optional (0). + * @param pszFunction The function where the lock is being acquired + * from. Optional. + */ +RTDECL(int) RTSemMutexRequestNoResumeDebug(RTSEMMUTEX hMutexSem, RTMSINTERVAL cMillies, RTHCUINTPTR uId, RT_SRC_POS_DECL); + +/** + * Request ownership of a mutex semaphore, extended edition. + * + * The same thread may request a mutex semaphore multiple times, + * a nested counter is kept to make sure it's released on the right + * RTSemMutexRelease() call. + * + * @returns iprt status code. + * @param hMutexSem The mutex semaphore to request ownership over. + * @param fFlags Combination of the RTSEMWAIT_FLAGS_XXX. + * @param uTimeout The timeout, ignored if + * RTSEMWAIT_FLAGS_INDEFINITE is set in @a flags. + * Whether this is absolute or relative, + * milliseconds or nanoseconds depends on the @a + * fFlags value. Do not pass RT_INDEFINITE_WAIT + * here, use RTSEMWAIT_FLAGS_INDEFINITE instead. + */ +RTDECL(int) RTSemMutexRequestEx(RTSEMMUTEX hMutexSem, uint32_t fFlags, uint64_t uTimeout); + +/** + * Debug version of RTSemMutexRequestEx that tracks the location. + * + * @returns iprt status code. + * @param hMutexSem The mutex semaphore to request ownership over. + * @param fFlags See RTSemMutexRequestEx. + * @param uTimeout See RTSemMutexRequestEx. + * @param uId Some kind of locking location ID. Typically a + * return address up the stack. Optional (0). + * @param pszFile The file where the lock is being acquired from. + * Optional. + * @param iLine The line number in that file. Optional (0). + * @param pszFunction The function where the lock is being acquired + * from. Optional. + */ +RTDECL(int) RTSemMutexRequestExDebug(RTSEMMUTEX hMutexSem, uint32_t fFlags, uint64_t uTimeout, + RTHCUINTPTR uId, RT_SRC_POS_DECL); + +/** + * Release the ownership of a mutex semaphore. + * + * @returns iprt status code. + * @param hMutexSem The mutex to release the ownership of. It goes + * without saying the the calling thread must own + * it. + */ +RTDECL(int) RTSemMutexRelease(RTSEMMUTEX hMutexSem); + +/** + * Checks if the mutex semaphore is owned or not. + * + * @returns true if owned, false if not. + * @param hMutexSem The mutex semaphore. + */ +RTDECL(bool) RTSemMutexIsOwned(RTSEMMUTEX hMutexSem); + +/* Strict build: Remap the two request calls to the debug versions. */ +#if defined(RT_STRICT) && !defined(RTSEMMUTEX_WITHOUT_REMAPPING) && !defined(RT_WITH_MANGLING) +# ifdef ___iprt_asm_h +# define RTSemMutexRequest(hMutexSem, cMillies) RTSemMutexRequestDebug((hMutexSem), (cMillies), (uintptr_t)ASMReturnAddress(), RT_SRC_POS) +# define RTSemMutexRequestNoResume(hMutexSem, cMillies) RTSemMutexRequestNoResumeDebug((hMutexSem), (cMillies), (uintptr_t)ASMReturnAddress(), RT_SRC_POS) +# define RTSemMutexRequestEx(hMutexSem, fFlags, uTimeout) RTSemMutexRequestExDebug((hMutexSem), (fFlags), (uTimeout), (uintptr_t)ASMReturnAddress(), RT_SRC_POS) +# else +# define RTSemMutexRequest(hMutexSem, cMillies) RTSemMutexRequestDebug((hMutexSem), (cMillies), 0, RT_SRC_POS) +# define RTSemMutexRequestNoResume(hMutexSem, cMillies) RTSemMutexRequestNoResumeDebug((hMutexSem), (cMillies), 0, RT_SRC_POS) +# define RTSemMutexRequestEx(hMutexSem, fFlags, uTimeout) RTSemMutexRequestExDebug((hMutexSem), (fFlags), (uTimeout), 0, RT_SRC_POS) +# endif +#endif + +/* Strict lock order: Automatically classify locks by init location. */ +#if defined(RT_LOCK_STRICT_ORDER) && defined(IN_RING3) && !defined(RTSEMMUTEX_WITHOUT_REMAPPING) && !defined(RT_WITH_MANGLING) +# define RTSemMutexCreate(phMutexSem) \ + RTSemMutexCreateEx((phMutexSem), 0 /*fFlags*/, \ + RTLockValidatorClassForSrcPos(RT_SRC_POS, NULL), \ + RTLOCKVAL_SUB_CLASS_NONE, NULL) +#endif + +/** @} */ + + +/** @defgroup grp_rt_sems_fast_mutex RTSemFastMutex - Fast Mutex Semaphores + * + * Fast mutexes work like regular mutexes in that they allow only a single + * thread access to a critical piece of code or data. As opposed to mutexes, + * they require no syscall if the fast mutex is not held (like critical + * sections). Unlike critical sections however, they are *not* recursive. + * + * @remarks The fast mutexes has sideeffects on IRQL on Windows hosts. So use + * with care and test on windows with driver verifier. + * + * @{ */ + +/** + * Create a fast mutex semaphore. + * + * @returns iprt status code. + * @param phFastMtx Where to store the handle to the newly created + * fast mutex semaphore. + * + * @remarks Fast mutex semaphores are not recursive. + */ +RTDECL(int) RTSemFastMutexCreate(PRTSEMFASTMUTEX phFastMtx); + +/** + * Destroy a fast mutex semaphore. + * + * @returns iprt status code. + * @param hFastMtx Handle to the fast mutex semaphore. NIL is + * quietly ignored (VINF_SUCCESS). + */ +RTDECL(int) RTSemFastMutexDestroy(RTSEMFASTMUTEX hFastMtx); + +/** + * Request ownership of a fast mutex semaphore. + * + * The same thread may request a mutex semaphore multiple times, + * a nested counter is kept to make sure it's released on the right + * RTSemMutexRelease() call. + * + * @returns iprt status code. + * @param hFastMtx Handle to the fast mutex semaphore. + */ +RTDECL(int) RTSemFastMutexRequest(RTSEMFASTMUTEX hFastMtx); + +/** + * Release the ownership of a fast mutex semaphore. + * + * @returns iprt status code. + * @param hFastMtx Handle to the fast mutex semaphore. It goes + * without saying the the calling thread must own + * it. + */ +RTDECL(int) RTSemFastMutexRelease(RTSEMFASTMUTEX hFastMtx); + +/** @} */ + + +/** @defgroup grp_rt_sems_spin_mutex RTSemSpinMutex - Spinning Mutex Semaphores + * + * A very adaptive variant of mutex semaphore that is tailored for the ring-0 + * logger. + * + * @{ */ + +/** + * Creates a spinning mutex semaphore. + * + * @returns iprt status code. + * @retval VERR_INVALID_PARAMETER on invalid flags. + * @retval VERR_NO_MEMORY if out of memory for the semaphore structure and + * handle. + * + * @param phSpinMtx Where to return the handle to the create semaphore. + * @param fFlags Flags, see RTSEMSPINMUTEX_FLAGS_XXX. + */ +RTDECL(int) RTSemSpinMutexCreate(PRTSEMSPINMUTEX phSpinMtx, uint32_t fFlags); + +/** @name RTSemSpinMutexCreate flags. + * @{ */ +/** Always take the semaphore in a IRQ safe way. + * (In plain words: always disable interrupts.) */ +#define RTSEMSPINMUTEX_FLAGS_IRQ_SAFE RT_BIT_32(0) +/** Mask of valid flags. */ +#define RTSEMSPINMUTEX_FLAGS_VALID_MASK UINT32_C(0x00000001) +/** @} */ + +/** + * Destroys a spinning mutex semaphore. + * + * @returns iprt status code. + * @retval VERR_INVALID_HANDLE (or crash) if the handle is invalid. (NIL will + * not cause this status.) + * + * @param hSpinMtx The semaphore handle. NIL_RTSEMSPINMUTEX is ignored + * quietly (VINF_SUCCESS). + */ +RTDECL(int) RTSemSpinMutexDestroy(RTSEMSPINMUTEX hSpinMtx); + +/** + * Request the spinning mutex semaphore. + * + * This may block if the context we're called in allows this. If not it will + * spin. If called in an interrupt context, we will only spin if the current + * owner isn't interrupted. Also, on some systems it is not always possible to + * wake up blocking threads in all contexts, so, which will either be indicated + * by returning VERR_SEM_BAD_CONTEXT or by temporarily switching the semaphore + * into pure spinlock state. + * + * Preemption will be disabled upon return. IRQs may also be disabled. + * + * @returns iprt status code. + * @retval VERR_SEM_BAD_CONTEXT if the context it's called in isn't suitable + * for releasing it if someone is sleeping on it. + * @retval VERR_SEM_DESTROYED if destroyed. + * @retval VERR_SEM_NESTED if held by the caller. Asserted. + * @retval VERR_INVALID_HANDLE if the handle is invalid. Asserted + * + * @param hSpinMtx The semaphore handle. + */ +RTDECL(int) RTSemSpinMutexRequest(RTSEMSPINMUTEX hSpinMtx); + +/** + * Like RTSemSpinMutexRequest but it won't block or spin if the semaphore is + * held by someone else. + * + * @returns iprt status code. + * @retval VERR_SEM_BUSY if held by someone else. + * @retval VERR_SEM_DESTROYED if destroyed. + * @retval VERR_SEM_NESTED if held by the caller. Asserted. + * @retval VERR_INVALID_HANDLE if the handle is invalid. Asserted + * + * @param hSpinMtx The semaphore handle. + */ +RTDECL(int) RTSemSpinMutexTryRequest(RTSEMSPINMUTEX hSpinMtx); + +/** + * Releases the semaphore previously acquired by RTSemSpinMutexRequest or + * RTSemSpinMutexTryRequest. + * + * @returns iprt status code. + * @retval VERR_SEM_DESTROYED if destroyed. + * @retval VERR_NOT_OWNER if not owner. Asserted. + * @retval VERR_INVALID_HANDLE if the handle is invalid. Asserted. + * + * @param hSpinMtx The semaphore handle. + */ +RTDECL(int) RTSemSpinMutexRelease(RTSEMSPINMUTEX hSpinMtx); + +/** @} */ + + +/** @defgroup grp_rt_sem_rw RTSemRW - Read / Write Semaphores + * + * Read/write semaphores are a fancier version of mutexes in that they grant + * read access to the protected data to several threads at the same time but + * allow only one writer at a time. This can make code scale better at the + * expense of slightly more overhead in mutex management. + * + * @{ */ + +/** + * Creates a read/write semaphore. + * + * @returns iprt status code. + * @param phRWSem Where to store the handle to the newly created + * RW semaphore. + */ +RTDECL(int) RTSemRWCreate(PRTSEMRW phRWSem); + +/** + * Creates a read/write semaphore. + * + * @returns iprt status code. + * @param phRWSem Where to store the handle to the newly created + * RW semaphore. + * @param fFlags Flags, any combination of the RTSEMRW_FLAGS_XXX + * \#defines. + * @param hClass The class (no reference consumed). If NIL, no + * lock order validation will be performed on this + * lock. + * @param uSubClass The sub-class. This is used to define lock + * order within a class. RTLOCKVAL_SUB_CLASS_NONE + * is the recommended value here. + * @param pszNameFmt Name format string for the lock validator, + * optional (NULL). Max length is 32 bytes. + * @param ... Format string arguments. + */ +RTDECL(int) RTSemRWCreateEx(PRTSEMRW phRWSem, uint32_t fFlags, + RTLOCKVALCLASS hClass, uint32_t uSubClass, const char *pszNameFmt, ...); + +/** @name RTSemRWCreateEx flags + * @{ */ +/** Disables lock validation. */ +#define RTSEMRW_FLAGS_NO_LOCK_VAL UINT32_C(0x00000001) +/** @} */ + +/** + * Destroys a read/write semaphore. + * + * @returns iprt status code. + * @param hRWSem Handle to the read/write semaphore. NIL is + * quietly ignored (VINF_SUCCESS). + */ +RTDECL(int) RTSemRWDestroy(RTSEMRW hRWSem); + +/** + * Changes the lock validator sub-class of the read/write semaphore. + * + * It is recommended to try make sure that nobody is using this semaphore while + * changing the value. + * + * @returns The old sub-class. RTLOCKVAL_SUB_CLASS_INVALID is returns if the + * lock validator isn't compiled in or either of the parameters are + * invalid. + * @param hRWSem Handle to the read/write semaphore. + * @param uSubClass The new sub-class value. + */ +RTDECL(uint32_t) RTSemRWSetSubClass(RTSEMRW hRWSem, uint32_t uSubClass); + +/** + * Request read access to a read/write semaphore, resume on interruption + * + * @returns iprt status code. + * @retval VINF_SUCCESS on success. + * @retval VERR_INTERRUPT if the wait was interrupted. + * @retval VERR_INVALID_HANDLE if hRWSem is invalid. + * + * @param hRWSem Handle to the read/write semaphore. + * @param cMillies The number of milliseconds to wait. + */ +RTDECL(int) RTSemRWRequestRead(RTSEMRW hRWSem, RTMSINTERVAL cMillies); + +/** + * Request read access to a read/write semaphore, return on interruption + * + * @returns iprt status code. + * @retval VINF_SUCCESS on success. + * @retval VERR_INTERRUPT if the wait was interrupted. + * @retval VERR_INVALID_HANDLE if hRWSem is invalid. + * + * @param hRWSem Handle to the read/write semaphore. + * @param cMillies The number of milliseconds to wait. + */ +RTDECL(int) RTSemRWRequestReadNoResume(RTSEMRW hRWSem, RTMSINTERVAL cMillies); + +/** + * Debug version of RTSemRWRequestRead that tracks the location. + * + * @returns iprt status code. + * @retval VINF_SUCCESS on success. + * @retval VERR_INTERRUPT if the wait was interrupted. + * @retval VERR_INVALID_HANDLE if hRWSem is invalid. + * + * @param hRWSem Handle to the read/write semaphore. + * @param cMillies The number of milliseconds to wait. + * @param uId Some kind of locking location ID. Typically a + * return address up the stack. Optional (0). + * @param pszFile The file where the lock is being acquired from. + * Optional. + * @param iLine The line number in that file. Optional (0). + * @param pszFunction The function where the lock is being acquired + * from. Optional. + */ +RTDECL(int) RTSemRWRequestReadDebug(RTSEMRW hRWSem, RTMSINTERVAL cMillies, RTHCUINTPTR uId, RT_SRC_POS_DECL); + +/** + * Debug version of RTSemRWRequestWriteNoResume that tracks the location. + * + * @returns iprt status code. + * @retval VINF_SUCCESS on success. + * @retval VERR_INTERRUPT if the wait was interrupted. + * @retval VERR_INVALID_HANDLE if hRWSem is invalid. + * + * @param hRWSem Handle to the read/write semaphore. + * @param cMillies The number of milliseconds to wait. + * @param uId Some kind of locking location ID. Typically a + * return address up the stack. Optional (0). + * @param pszFile The file where the lock is being acquired from. + * Optional. + * @param iLine The line number in that file. Optional (0). + * @param pszFunction The function where the lock is being acquired + * from. Optional. + */ +RTDECL(int) RTSemRWRequestReadNoResumeDebug(RTSEMRW hRWSem, RTMSINTERVAL cMillies, RTHCUINTPTR uId, RT_SRC_POS_DECL); + +/** + * Request read access to a read/write semaphore, extended edition. + * + * @returns iprt status code. + * @retval VINF_SUCCESS on success. + * @retval VERR_INTERRUPT if the wait was interrupted. + * @retval VERR_TIMEOUT if the wait timed out. + * @retval VERR_INVALID_HANDLE if hRWSem is invalid. + * + * @param hRWSem Handle to the read/write semaphore. + * @param fFlags Combination of the RTSEMWAIT_FLAGS_XXX. + * @param uTimeout The timeout, ignored if + * RTSEMWAIT_FLAGS_INDEFINITE is set in @a flags. + * Whether this is absolute or relative, + * milliseconds or nanoseconds depends on the @a + * fFlags value. Do not pass RT_INDEFINITE_WAIT + * here, use RTSEMWAIT_FLAGS_INDEFINITE instead. + */ +RTDECL(int) RTSemRWRequestReadEx(RTSEMRW hRWSem, uint32_t fFlags, uint64_t uTimeout); + + +/** + * Debug version of RTSemRWRequestReadEx that tracks the location. + * + * @returns iprt status code. + * @retval VINF_SUCCESS on success. + * @retval VERR_INTERRUPT if the wait was interrupted. + * @retval VERR_TIMEOUT if the wait timed out. + * @retval VERR_INVALID_HANDLE if hRWSem is invalid. + * + * @param hRWSem Handle to the read/write semaphore. + * @param fFlags See RTSemRWRequestReadEx. + * @param uTimeout See RTSemRWRequestReadEx. + * @param uId Some kind of locking location ID. Typically a + * return address up the stack. Optional (0). + * @param pszFile The file where the lock is being acquired from. + * Optional. + * @param iLine The line number in that file. Optional (0). + * @param pszFunction The function where the lock is being acquired + * from. Optional. + */ +RTDECL(int) RTSemRWRequestReadExDebug(RTSEMRW hRWSem, uint32_t fFlags, uint64_t uTimeout, + RTHCUINTPTR uId, RT_SRC_POS_DECL); + +/** + * Release read access to a read/write semaphore. + * + * @returns iprt status code. + * @param hRWSem Handle to the read/write semaphore. It goes + * without saying that caller must own read + * privileges to the semaphore. + */ +RTDECL(int) RTSemRWReleaseRead(RTSEMRW hRWSem); + +/** + * Request write access to a read/write semaphore, resume on interruption. + * + * @returns iprt status code. + * @retval VINF_SUCCESS on success. + * @retval VERR_DEADLOCK if the caller owned the read lock. + * @retval VERR_INVALID_HANDLE if hRWSem is invalid. + * + * @param hRWSem Handle to the read/write semaphore. + * @param cMillies The number of milliseconds to wait. + */ +RTDECL(int) RTSemRWRequestWrite(RTSEMRW hRWSem, RTMSINTERVAL cMillies); + +/** + * Request write access to a read/write semaphore, return on interruption. + * + * @returns iprt status code. + * @retval VINF_SUCCESS on success. + * @retval VERR_INTERRUPT if the wait was interrupted. + * @retval VERR_DEADLOCK if the caller owned the read lock. + * @retval VERR_INVALID_HANDLE if hRWSem is invalid. + * + * @param hRWSem Handle to the read/write semaphore. + * @param cMillies The number of milliseconds to wait. + */ +RTDECL(int) RTSemRWRequestWriteNoResume(RTSEMRW hRWSem, RTMSINTERVAL cMillies); + +/** + * Debug version of RTSemRWRequestWrite that tracks the location. + * + * @returns IPRT status code, see RTSemRWRequestWrite. + * @param hRWSem Handle to the read/write semaphore. + * @param cMillies The number of milliseconds to wait. + * @param uId Some kind of locking location ID. Typically a + * return address up the stack. Optional (0). + * @param pszFile The file where the lock is being acquired from. + * Optional. + * @param iLine The line number in that file. Optional (0). + * @param pszFunction The function where the lock is being acquired + * from. Optional. + */ +RTDECL(int) RTSemRWRequestWriteDebug(RTSEMRW hRWSem, RTMSINTERVAL cMillies, RTHCUINTPTR uId, RT_SRC_POS_DECL); + +/** + * Debug version of RTSemRWRequestWriteNoResume that tracks the location. + * + * @returns IPRT status code, see RTSemRWRequestWriteNoResume. + * @param hRWSem Handle to the read/write semaphore. + * @param cMillies The number of milliseconds to wait. + * @param uId Some kind of locking location ID. Typically a + * return address up the stack. Optional (0). + * @param pszFile The file where the lock is being acquired from. + * Optional. + * @param iLine The line number in that file. Optional (0). + * @param pszFunction The function where the lock is being acquired + * from. Optional. + */ +RTDECL(int) RTSemRWRequestWriteNoResumeDebug(RTSEMRW hRWSem, RTMSINTERVAL cMillies, RTHCUINTPTR uId, RT_SRC_POS_DECL); + +/** + * Request write access to a read/write semaphore, extended edition. + * + * @returns iprt status code. + * @retval VINF_SUCCESS on success. + * @retval VERR_INTERRUPTED if the wait was interrupted. + * @retval VERR_TIMEOUT if the wait timed out. + * @retval VERR_DEADLOCK if the caller owned the read lock. Do not depend on + * this as it is implementation specific. + * @retval VERR_INVALID_HANDLE if hRWSem is invalid. + * + * @param hRWSem Handle to the read/write semaphore. + * @param fFlags Combination of the RTSEMWAIT_FLAGS_XXX. + * @param uTimeout The timeout, ignored if + * RTSEMWAIT_FLAGS_INDEFINITE is set in @a flags. + * Whether this is absolute or relative, + * milliseconds or nanoseconds depends on the @a + * fFlags value. Do not pass RT_INDEFINITE_WAIT + * here, use RTSEMWAIT_FLAGS_INDEFINITE instead. + */ +RTDECL(int) RTSemRWRequestWriteEx(RTSEMRW hRWSem, uint32_t fFlags, uint64_t uTimeout); + +/** + * Debug version of RTSemRWRequestWriteEx that tracks the location. + * + * @returns IPRT status code, see RTSemRWRequestWriteEx. + * @param hRWSem Handle to the read/write semaphore. + * @param fFlags See RTSemRWRequestWriteEx. + * @param uTimeout See RTSemRWRequestWriteEx. + * @param uId Some kind of locking location ID. Typically a + * return address up the stack. Optional (0). + * @param pszFile The file where the lock is being acquired from. + * Optional. + * @param iLine The line number in that file. Optional (0). + * @param pszFunction The function where the lock is being acquired + * from. Optional. + */ +RTDECL(int) RTSemRWRequestWriteExDebug(RTSEMRW hRWSem, uint32_t fFlags, uint64_t uTimeout, + RTHCUINTPTR uId, RT_SRC_POS_DECL); + +/** + * Release write access to a read/write semaphore. + * + * @returns iprt status code. + * @param hRWSem Handle to the read/write semaphore. Goes + * without saying that caller must have write + * access to the semaphore. + */ +RTDECL(int) RTSemRWReleaseWrite(RTSEMRW hRWSem); + +/** + * Checks if the caller is the exclusive semaphore owner. + * + * @returns true / false accoringly. + * @param hRWSem Handle to the read/write semaphore. + */ +RTDECL(bool) RTSemRWIsWriteOwner(RTSEMRW hRWSem); + +/** + * Checks if the caller is one of the read owners of the semaphore. + * + * @note !CAUTION! This API doesn't work reliably if lock validation isn't + * enabled. Meaning, the answer is not trustworhty unless + * RT_LOCK_STRICT or RTSEMRW_STRICT was defined at build time. Also, + * make sure you do not use RTSEMRW_FLAGS_NO_LOCK_VAL when creating + * the semaphore. And finally, if you used a locking class, don't + * disable deadlock detection by setting cMsMinDeadlock to + * RT_INDEFINITE_WAIT. + * + * In short, only use this for assertions. + * + * @returns true if reader, false if not. + * @param hRWSem Handle to the read/write semaphore. + * @param fWannaHear What you'd like to hear when lock validation is + * not available. (For avoiding asserting all over + * the place.) + */ +RTDECL(bool) RTSemRWIsReadOwner(RTSEMRW hRWSem, bool fWannaHear); + +/** + * Gets the write recursion count. + * + * @returns The write recursion count (0 if bad semaphore handle). + * @param hRWSem Handle to the read/write semaphore. + */ +RTDECL(uint32_t) RTSemRWGetWriteRecursion(RTSEMRW hRWSem); + +/** + * Gets the read recursion count of the current writer. + * + * @returns The read recursion count (0 if bad semaphore handle). + * @param hRWSem Handle to the read/write semaphore. + */ +RTDECL(uint32_t) RTSemRWGetWriterReadRecursion(RTSEMRW hRWSem); + +/** + * Gets the current number of reads. + * + * This includes all read recursions, so it might be higher than the number of + * read owners. It does not include reads done by the current writer. + * + * @returns The read count (0 if bad semaphore handle). + * @param hRWSem Handle to the read/write semaphore. + */ +RTDECL(uint32_t) RTSemRWGetReadCount(RTSEMRW hRWSem); + +/* Strict build: Remap the four request calls to the debug versions. */ +#if defined(RT_STRICT) && !defined(RTSEMRW_WITHOUT_REMAPPING) && !defined(RT_WITH_MANGLING) +# ifdef ___iprt_asm_h +# define RTSemRWRequestRead(hRWSem, cMillies) RTSemRWRequestReadDebug((hRWSem), (cMillies), (uintptr_t)ASMReturnAddress(), RT_SRC_POS) +# define RTSemRWRequestReadNoResume(hRWSem, cMillies) RTSemRWRequestReadNoResumeDebug((hRWSem), (cMillies), (uintptr_t)ASMReturnAddress(), RT_SRC_POS) +# define RTSemRWRequestWrite(hRWSem, cMillies) RTSemRWRequestWriteDebug((hRWSem), (cMillies), (uintptr_t)ASMReturnAddress(), RT_SRC_POS) +# define RTSemRWRequestWriteNoResume(hRWSem, cMillies) RTSemRWRequestWriteNoResumeDebug((hRWSem), (cMillies), (uintptr_t)ASMReturnAddress(), RT_SRC_POS) +# define RTSemRWRequestWriteEx(hRWSem, fFlags, uTimeout) RTSemRWRequestWriteExDebug((hRWSem), (fFlags), (uTimeout), (uintptr_t)ASMReturnAddress(), RT_SRC_POS) +# else +# define RTSemRWRequestRead(hRWSem, cMillies) RTSemRWRequestReadDebug((hRWSem), (cMillies), 0, RT_SRC_POS) +# define RTSemRWRequestReadNoResume(hRWSem, cMillies) RTSemRWRequestReadNoResumeDebug((hRWSem), (cMillies), 0, RT_SRC_POS) +# define RTSemRWRequestWrite(hRWSem, cMillies) RTSemRWRequestWriteDebug((hRWSem), (cMillies), 0, RT_SRC_POS) +# define RTSemRWRequestWriteNoResume(hRWSem, cMillies) RTSemRWRequestWriteNoResumeDebug((hRWSem), (cMillies), 0, RT_SRC_POS) +# define RTSemRWRequestWriteEx(hRWSem, fFlags, uTimeout) RTSemRWRequestWriteExDebug((hRWSem), (fFlags), (uTimeout), 0, RT_SRC_POS) +# endif +#endif + +/* Strict lock order: Automatically classify locks by init location. */ +#if defined(RT_LOCK_STRICT_ORDER) && defined(IN_RING3) && !defined(RTSEMRW_WITHOUT_REMAPPING) && !defined(RT_WITH_MANGLING) +# define RTSemRWCreate(phSemRW) \ + RTSemRWCreateEx((phSemRW), 0 /*fFlags*/, \ + RTLockValidatorClassForSrcPos(RT_SRC_POS, NULL), \ + RTLOCKVAL_SUB_CLASS_NONE, NULL) +#endif + +/** @} */ + + +/** @defgroup grp_rt_sems_pingpong RTSemPingPong - Ping-Pong Construct + * + * Serialization of a two way communication. + * + * @{ */ + +/** + * Ping-pong speaker + */ +typedef enum RTPINGPONGSPEAKER +{ + /** Not initialized. */ + RTPINGPONGSPEAKER_UNINITIALIZE = 0, + /** Ping is speaking, Pong is waiting. */ + RTPINGPONGSPEAKER_PING, + /** Pong is signaled, Ping is waiting. */ + RTPINGPONGSPEAKER_PONG_SIGNALED, + /** Pong is speaking, Ping is waiting. */ + RTPINGPONGSPEAKER_PONG, + /** Ping is signaled, Pong is waiting. */ + RTPINGPONGSPEAKER_PING_SIGNALED, + /** Hack to ensure that it's at least 32-bits wide. */ + RTPINGPONGSPEAKER_HACK = 0x7fffffff +} RTPINGPONGSPEAKER; + +/** + * Ping-Pong construct. + * + * Two threads, one saying Ping and the other saying Pong. The construct + * makes sure they don't speak out of turn and that they can wait and poll + * on the conversation. + */ +typedef struct RTPINGPONG +{ + /** The semaphore the Ping thread waits on. */ + RTSEMEVENT Ping; + /** The semaphore the Pong thread waits on. */ + RTSEMEVENT Pong; + /** The current speaker. */ + volatile RTPINGPONGSPEAKER enmSpeaker; +#if HC_ARCH_BITS == 64 + /** Padding the structure to become a multiple of sizeof(RTHCPTR). */ + uint32_t u32Padding; +#endif +} RTPINGPONG; +/** Pointer to Ping-Pong construct. */ +typedef RTPINGPONG *PRTPINGPONG; + +/** + * Init a Ping-Pong construct. + * + * @returns iprt status code. + * @param pPP Pointer to the ping-pong structure which needs initialization. + */ +RTDECL(int) RTSemPingPongInit(PRTPINGPONG pPP); + +/** + * Deletes a Ping-Pong construct. + * + * @returns iprt status code. + * @param pPP Pointer to the ping-pong structure which is to be destroyed. + * (I.e. put into uninitialized state.) + */ +RTDECL(int) RTSemPingPongDelete(PRTPINGPONG pPP); + +/** + * Signals the pong thread in a ping-pong construct. (I.e. sends ping.) + * This is called by the ping thread. + * + * @returns iprt status code. + * @param pPP Pointer to the ping-pong structure to ping. + */ +RTDECL(int) RTSemPing(PRTPINGPONG pPP); + +/** + * Signals the ping thread in a ping-pong construct. (I.e. sends pong.) + * This is called by the pong thread. + * + * @returns iprt status code. + * @param pPP Pointer to the ping-pong structure to pong. + */ +RTDECL(int) RTSemPong(PRTPINGPONG pPP); + +/** + * Wait function for the ping thread. + * + * @returns iprt status code. + * Will not return VERR_INTERRUPTED. + * @param pPP Pointer to the ping-pong structure to wait on. + * @param cMillies Number of milliseconds to wait. + */ +RTDECL(int) RTSemPingWait(PRTPINGPONG pPP, RTMSINTERVAL cMillies); + +/** + * Wait function for the pong thread. + * + * @returns iprt status code. + * Will not return VERR_INTERRUPTED. + * @param pPP Pointer to the ping-pong structure to wait on. + * @param cMillies Number of milliseconds to wait. + */ +RTDECL(int) RTSemPongWait(PRTPINGPONG pPP, RTMSINTERVAL cMillies); + + +/** + * Checks if the pong thread is speaking. + * + * @returns true / false. + * @param pPP Pointer to the ping-pong structure. + * @remark This is NOT the same as !RTSemPongIsSpeaker(). + */ +DECLINLINE(bool) RTSemPingIsSpeaker(PRTPINGPONG pPP) +{ + RTPINGPONGSPEAKER enmSpeaker = pPP->enmSpeaker; + return enmSpeaker == RTPINGPONGSPEAKER_PING; +} + + +/** + * Checks if the pong thread is speaking. + * + * @returns true / false. + * @param pPP Pointer to the ping-pong structure. + * @remark This is NOT the same as !RTSemPingIsSpeaker(). + */ +DECLINLINE(bool) RTSemPongIsSpeaker(PRTPINGPONG pPP) +{ + RTPINGPONGSPEAKER enmSpeaker = pPP->enmSpeaker; + return enmSpeaker == RTPINGPONGSPEAKER_PONG; +} + + +/** + * Checks whether the ping thread should wait. + * + * @returns true / false. + * @param pPP Pointer to the ping-pong structure. + * @remark This is NOT the same as !RTSemPongShouldWait(). + */ +DECLINLINE(bool) RTSemPingShouldWait(PRTPINGPONG pPP) +{ + RTPINGPONGSPEAKER enmSpeaker = pPP->enmSpeaker; + return enmSpeaker == RTPINGPONGSPEAKER_PONG + || enmSpeaker == RTPINGPONGSPEAKER_PONG_SIGNALED + || enmSpeaker == RTPINGPONGSPEAKER_PING_SIGNALED; +} + + +/** + * Checks whether the pong thread should wait. + * + * @returns true / false. + * @param pPP Pointer to the ping-pong structure. + * @remark This is NOT the same as !RTSemPingShouldWait(). + */ +DECLINLINE(bool) RTSemPongShouldWait(PRTPINGPONG pPP) +{ + RTPINGPONGSPEAKER enmSpeaker = pPP->enmSpeaker; + return enmSpeaker == RTPINGPONGSPEAKER_PING + || enmSpeaker == RTPINGPONGSPEAKER_PING_SIGNALED + || enmSpeaker == RTPINGPONGSPEAKER_PONG_SIGNALED; +} + +/** @} */ + + +/** @defgroup grp_rt_sems_xroads RTSemXRoads - Crossroads + * + * The crossroads semaphore is intended to prevent two classes of incompatible + * events from occurring simultaneously, like south/north bound traffic and + * west/east bound traffic at a 4-way junction. + * + * @remarks In order to simplify the implementation, the current flow is always + * given priority. So, it won't work at all well when busy! + * + * @remarks "XRoads" is used as a name because it is briefer than "crossroads" + * and it slightly stresses that is a 4 way crossing to the users of + * American English. + * @{ + */ + +/** + * Creates a crossroads semaphore. + * + * @returns IPRT status code. + * + * @param phXRoads Where to return the handle to the newly created + * crossroads semaphore. + */ +RTDECL(int) RTSemXRoadsCreate(PRTSEMXROADS phXRoads); + +/** + * Destroys a crossroads semaphore. + * + * @returns IPRT status code. + * + * @param hXRoads Handle to the crossroads semaphore that is to be + * destroyed. NIL_RTSEMXROADS is quitetly ignored + * (VINF_SUCCESS). + */ +RTDECL(int) RTSemXRoadsDestroy(RTSEMXROADS hXRoads); + +/** + * Enter the crossroads from the south or north. + * + * (Coupled with RTSemXRoadsNSLeave.) + * + * @returns IPRT status code. + * @param hXRoads Handle to the crossroads semaphore. + */ +RTDECL(int) RTSemXRoadsNSEnter(RTSEMXROADS hXRoads); + +/** + * Leave the crossroads to the north or south. + * + * (Coupled with RTSemXRoadsNSEnter.) + * + * @returns IPRT status code. + * @param hXRoads Handle to the crossroads semaphore. + */ +RTDECL(int) RTSemXRoadsNSLeave(RTSEMXROADS hXRoads); + +/** + * Leave the crossroads from the east or west. + * + * (Coupled with RTSemXRoadsEWLeave.) + * + * @returns IPRT status code. + * @param hXRoads Handle to the crossroads semaphore. + */ +RTDECL(int) RTSemXRoadsEWEnter(RTSEMXROADS hXRoads); + +/** + * Leave the crossroads to the west or east. + * + * (Coupled with RTSemXRoadsEWEnter.) + * + * @returns IPRT status code. + * @param hXRoads Handle to the crossroads semaphore. + */ +RTDECL(int) RTSemXRoadsEWLeave(RTSEMXROADS hXRoads); + +/** @} */ + +/** @} */ + +RT_C_DECLS_END + +#endif + --- linux-raspi2-4.2.0.orig/ubuntu/vbox/include/iprt/spinlock.h +++ linux-raspi2-4.2.0/ubuntu/vbox/include/iprt/spinlock.h @@ -0,0 +1,92 @@ +/** @file + * IPRT - Spinlocks. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + +#ifndef ___iprt_spinlock_h +#define ___iprt_spinlock_h + +#include +#include + +RT_C_DECLS_BEGIN + + +/** @defgroup grp_rt_spinlock RTSpinlock - Spinlocks + * @ingroup grp_rt + * @{ + */ + +/** + * Creates a spinlock. + * + * @returns iprt status code. + * @param pSpinlock Where to store the spinlock handle. + * @param fFlags Creation flags, see RTSPINLOCK_FLAGS_XXX. + * @param pszName Spinlock name, for debugging purposes. String lifetime + * must be the same as the lock as it won't be copied. + */ +RTDECL(int) RTSpinlockCreate(PRTSPINLOCK pSpinlock, uint32_t fFlags, const char *pszName); + +/** @name RTSPINLOCK_FLAGS_XXX + * @{ */ +/** Disable interrupts when taking the spinlock, making it interrupt safe + * (sans NMI of course). + * + * This is generally the safest option, though it isn't really required unless + * the data being protect is also accessed from interrupt handler context. */ +#define RTSPINLOCK_FLAGS_INTERRUPT_SAFE RT_BIT(1) +/** No need to disable interrupts, the protect code/data is not used by + * interrupt handlers. */ +#define RTSPINLOCK_FLAGS_INTERRUPT_UNSAFE RT_BIT(2) +/** @} */ + +/** + * Destroys a spinlock created by RTSpinlockCreate(). + * + * @returns iprt status code. + * @param Spinlock Spinlock returned by RTSpinlockCreate(). + */ +RTDECL(int) RTSpinlockDestroy(RTSPINLOCK Spinlock); + +/** + * Acquires the spinlock. + * + * @param Spinlock The spinlock to acquire. + */ +RTDECL(void) RTSpinlockAcquire(RTSPINLOCK Spinlock); + +/** + * Releases the spinlock. + * + * @param Spinlock The spinlock to acquire. + */ +RTDECL(void) RTSpinlockRelease(RTSPINLOCK Spinlock); + + +/** @} */ + +RT_C_DECLS_END + +#endif + --- linux-raspi2-4.2.0.orig/ubuntu/vbox/include/iprt/stdarg.h +++ linux-raspi2-4.2.0/ubuntu/vbox/include/iprt/stdarg.h @@ -0,0 +1,54 @@ +/** @file + * IPRT - stdarg.h wrapper. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + +#ifndef ___iprt_stdarg_h +#define ___iprt_stdarg_h + +#ifdef IPRT_NO_CRT +# include +# include +#else +# include +# if defined(RT_OS_FREEBSD) && defined(_KERNEL) +# include +# elif defined(RT_OS_SOLARIS) && defined(_KERNEL) && defined(__GNUC__) +# include +# if __GNUC__ >= 4 /* System headers refers to __builtin_stdarg_start. */ +# define __builtin_stdarg_start __builtin_va_start +# endif +# else +# include +# endif +#endif + +/* + * MSC doesn't implement va_copy. + */ +#ifndef va_copy +# define va_copy(dst, src) do { (dst) = (src); } while (0) /** @todo check AMD64 */ +#endif + +#endif + --- linux-raspi2-4.2.0.orig/ubuntu/vbox/include/iprt/stdint.h +++ linux-raspi2-4.2.0/ubuntu/vbox/include/iprt/stdint.h @@ -0,0 +1,244 @@ +/** @file + * IPRT - stdint.h wrapper (for backlevel compilers like MSC). + */ + +/* + * Copyright (C) 2009-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + +#ifndef __iprt_stdint_h +#define __iprt_stdint_h + +#include + + +/* + * Use the stdint.h on systems that have one. + */ +#if !(defined(RT_OS_LINUX) && defined(__KERNEL__)) \ + && !(defined(RT_OS_FREEBSD) && defined(_KERNEL)) \ + && !defined(_MSC_VER) \ + && !defined(__IBMC__) \ + && !defined(__IBMCPP__) \ + && !defined(IPRT_NO_CRT) \ + && !defined(IPRT_DONT_USE_SYSTEM_STDINT_H) \ + && !defined(DOXYGEN_RUNNING) + +# ifndef __STDC_CONSTANT_MACROS +# define __STDC_CONSTANT_MACROS +# endif +# ifndef __STDC_LIMIT_MACROS +# define __STDC_LIMIT_MACROS +# endif +# include + +# if defined(RT_OS_DARWIN) && defined(KERNEL) && defined(RT_ARCH_AMD64) + /* + * Kludge to fix the incorrect 32-bit constant macros in + * Kernel.framework/Headers/stdin.h. uint32_t and int32_t are + * int not long as these macros use, which is significant when + * targeting AMD64. (10a222) + */ +# undef INT32_C +# define INT32_C(Value) (Value) +# undef UINT32_C +# define UINT32_C(Value) (Value ## U) +# endif /* 64-bit darwin kludge. */ + +#elif defined(RT_OS_FREEBSD) && defined(_KERNEL) + +# ifndef __STDC_CONSTANT_MACROS +# define __STDC_CONSTANT_MACROS +# endif +# ifndef __STDC_LIMIT_MACROS +# define __STDC_LIMIT_MACROS +# endif +# include + +#else /* No system stdint.h */ + +/* + * Define the types we use. + * The linux kernel defines all these in linux/types.h, so skip it. + */ +# if !(defined(RT_OS_LINUX) && defined(__KERNEL__)) \ + || defined(IPRT_NO_CRT) \ + || defined(IPRT_DONT_USE_SYSTEM_STDINT_H) \ + || defined(DOXGEN_RUNNING) + + /* Simplify the [u]int64_t type detection mess. */ +# undef IPRT_STDINT_USE_STRUCT_FOR_64_BIT_TYPES +# ifdef __IBMCPP__ +# if __IBMCPP__ < 350 && (defined(__WINDOWS__) || defined(_AIX) || defined(__OS2__)) +# define IPRT_STDINT_USE_STRUCT_FOR_64_BIT_TYPES +# endif +# endif +# ifdef __IBMC__ +# if __IBMC__ < 350 && (defined(__WINDOWS__) || defined(_AIX) || defined(__OS2__)) +# define IPRT_STDINT_USE_STRUCT_FOR_64_BIT_TYPES +# endif +# endif + + /* x-bit types */ +# if defined(RT_ARCH_AMD64) || defined(RT_ARCH_X86) || defined(RT_ARCH_SPARC) || defined(RT_ARCH_SPARC64) +# if !defined(_INT8_T_DECLARED) && !defined(_INT8_T) +typedef signed char int8_t; +# endif +# if !defined(_UINT8_T_DECLARED) && !defined(_UINT8_T) +typedef unsigned char uint8_t; +# endif +# if !defined(_INT16_T_DECLARED) && !defined(_INT16_T) +typedef signed short int16_t; +# endif +# if !defined(_UINT16_T_DECLARED) && !defined(_UINT16_T) +typedef unsigned short uint16_t; +# endif +# if !defined(_INT32_T_DECLARED) && !defined(_INT32_T) +typedef signed int int32_t; +# endif +# if !defined(_UINT32_T_DECLARED) && !defined(_UINT32_T) +typedef unsigned int uint32_t; +# endif +# if defined(_MSC_VER) +# if !defined(_INT64_T_DECLARED) && !defined(_INT64_T) +typedef signed _int64 int64_t; +# endif +# if !defined(_UINT64_T_DECLARED) && !defined(_UINT64_T) +typedef unsigned _int64 uint64_t; +# endif +# elif defined(IPRT_STDINT_USE_STRUCT_FOR_64_BIT_TYPES) +# if !defined(_INT64_T_DECLARED) && !defined(_INT64_T) +typedef struct { uint32_t lo; int32_t hi; } int64_t; +# endif +# if !defined(_UINT64_T_DECLARED) && !defined(_UINT64_T) +typedef struct { uint32_t lo; uint32_t hi; } uint64_t; +# endif +# else /* Use long long for 64-bit types */ +# if !defined(_INT64_T_DECLARED) && !defined(_INT64_T) +typedef signed long long int64_t; +# endif +# if !defined(_UINT64_T_DECLARED) && !defined(_UINT64_T) +typedef unsigned long long uint64_t; +# endif +# endif + + /* max integer types */ +# if !defined(_INTMAX_T_DECLARED) && !defined(_INTMAX_T) +typedef int64_t intmax_t; +# endif +# if !defined(_UINTMAX_T_DECLARED) && !defined(_UINTMAX_T) +typedef uint64_t uintmax_t; +# endif + +# else +# error "PORTME: Add architecture. Don't forget to check the [U]INTx_C() and [U]INTMAX_MIN/MAX macros." +# endif + +# endif /* !linux kernel or stuff */ + + /* pointer <-> integer types */ +# if !defined(_MSC_VER) || defined(DOXYGEN_RUNNING) +# if ARCH_BITS == 32 \ + || defined(RT_OS_LINUX) \ + || defined(RT_OS_FREEBSD) +# if !defined(_INTPTR_T_DECLARED) && !defined(_INTPTR_T) +typedef signed long intptr_t; +# endif +# if !defined(_UINTPTR_T_DECLARED) && !defined(_UINTPTR_T) +typedef unsigned long uintptr_t; +# endif +# else +# if !defined(_INTPTR_T_DECLARED) && !defined(_INTPTR_T) +typedef int64_t intptr_t; +# endif +# if !defined(_UINTPTR_T_DECLARED) && !defined(_UINTPTR_T) +typedef uint64_t uintptr_t; +# endif +# endif +# endif /* !_MSC_VER */ + +#endif /* no system stdint.h */ + + +/* + * Make sure the [U]INTx_C(c) macros are present. + * For In C++ source the system stdint.h may have skipped these if it was + * included before we managed to define __STDC_CONSTANT_MACROS. (Kludge alert!) + */ +#if !defined(INT8_C) \ + || !defined(INT16_C) \ + || !defined(INT32_C) \ + || !defined(INT64_C) \ + || !defined(INTMAX_C) \ + || !defined(UINT8_C) \ + || !defined(UINT16_C) \ + || !defined(UINT32_C) \ + || !defined(UINT64_C) \ + || !defined(UINTMAX_C) +# define INT8_C(Value) (Value) +# define INT16_C(Value) (Value) +# define INT32_C(Value) (Value) +# define INT64_C(Value) (Value ## LL) +# define UINT8_C(Value) (Value) +# define UINT16_C(Value) (Value) +# define UINT32_C(Value) (Value ## U) +# define UINT64_C(Value) (Value ## ULL) +# define INTMAX_C(Value) INT64_C(Value) +# define UINTMAX_C(Value) UINT64_C(Value) +#endif + + +/* + * Make sure the INTx_MIN and [U]INTx_MAX macros are present. + * For In C++ source the system stdint.h may have skipped these if it was + * included before we managed to define __STDC_LIMIT_MACROS. (Kludge alert!) + */ +#if !defined(INT8_MIN) \ + || !defined(INT16_MIN) \ + || !defined(INT32_MIN) \ + || !defined(INT64_MIN) \ + || !defined(INT8_MAX) \ + || !defined(INT16_MAX) \ + || !defined(INT32_MAX) \ + || !defined(INT64_MAX) \ + || !defined(UINT8_MAX) \ + || !defined(UINT16_MAX) \ + || !defined(UINT32_MAX) \ + || !defined(UINT64_MAX) +# define INT8_MIN (INT8_C(-0x7f) - 1) +# define INT16_MIN (INT16_C(-0x7fff) - 1) +# define INT32_MIN (INT32_C(-0x7fffffff) - 1) +# define INT64_MIN (INT64_C(-0x7fffffffffffffff) - 1) +# define INT8_MAX INT8_C(0x7f) +# define INT16_MAX INT16_C(0x7fff) +# define INT32_MAX INT32_C(0x7fffffff) +# define INT64_MAX INT64_C(0x7fffffffffffffff) +# define UINT8_MAX UINT8_C(0xff) +# define UINT16_MAX UINT16_C(0xffff) +# define UINT32_MAX UINT32_C(0xffffffff) +# define UINT64_MAX UINT64_C(0xffffffffffffffff) + +# define INTMAX_MIN INT64_MIN +# define INTMAX_MAX INT64_MAX +# define UINTMAX_MAX UINT64_MAX +#endif + +#endif + --- linux-raspi2-4.2.0.orig/ubuntu/vbox/include/iprt/string.h +++ linux-raspi2-4.2.0/ubuntu/vbox/include/iprt/string.h @@ -0,0 +1,4180 @@ +/** @file + * IPRT - String Manipulation. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + +#ifndef ___iprt_string_h +#define ___iprt_string_h + +#include +#include +#include +#include +#include /* for VINF_SUCCESS */ +#if defined(RT_OS_LINUX) && defined(__KERNEL__) + RT_C_DECLS_BEGIN +# include + RT_C_DECLS_END + +#elif defined(IN_XF86_MODULE) && !defined(NO_ANSIC) + RT_C_DECLS_BEGIN +# include "xf86_ansic.h" + RT_C_DECLS_END + +#elif defined(RT_OS_FREEBSD) && defined(_KERNEL) + RT_C_DECLS_BEGIN + /** @todo + * XXX: Very ugly hack to get things build on recent FreeBSD builds. They have + * memchr now and we need to include param.h to get __FreeBSD_version and make + * memchr available based on the version below or we can't compile the kernel + * module on older versions anymore. + * + * But including param.h here opens Pandora's box because we clash with a few + * defines namely PVM and PAGE_SIZE. We can safely undefine PVM here but not + * PAGE_SIZE because this results in build errors sooner or later. Luckily this + * define is in a header included by param.h (machine/param.h). We define the + * guards here to prevent inclusion of it if PAGE_SIZE was defined already. + * + * @todo aeichner: Search for an elegant solution and cleanup this mess ASAP! + */ +# ifdef PAGE_SIZE +# define _AMD64_INCLUDE_PARAM_H_ +# define _I386_INCLUDE_PARAM_H_ +# define _MACHINE_PARAM_H_ +# endif +# include /* __FreeBSD_version */ +# undef PVM +# include + /* + * No memmove on versions < 7.2 + * Defining a macro using bcopy here + */ +# define memmove(dst, src, size) bcopy(src, dst, size) + RT_C_DECLS_END + +#elif defined(RT_OS_SOLARIS) && defined(_KERNEL) + /* + * Same case as with FreeBSD kernel: + * The string.h stuff clashes with sys/system.h + * ffs = find first set bit. + */ +# define ffs ffs_string_h +# include +# undef ffs +# undef strpbrk + +#else +# include +#endif + +/* + * Supply prototypes for standard string functions provided by + * IPRT instead of the operating environment. + */ +#if defined(RT_OS_DARWIN) && defined(KERNEL) +RT_C_DECLS_BEGIN +void *memchr(const void *pv, int ch, size_t cb); +char *strpbrk(const char *pszStr, const char *pszChars); +RT_C_DECLS_END +#endif + +#if defined(RT_OS_FREEBSD) && defined(_KERNEL) +RT_C_DECLS_BEGIN +#if __FreeBSD_version < 900000 +void *memchr(const void *pv, int ch, size_t cb); +#endif +char *strpbrk(const char *pszStr, const char *pszChars); +RT_C_DECLS_END +#endif + +/** @def RT_USE_RTC_3629 + * When defined the UTF-8 range will stop at 0x10ffff. If not defined, the + * range stops at 0x7fffffff. + * @remarks Must be defined both when building and using the IPRT. */ +#ifdef DOXYGEN_RUNNING +# define RT_USE_RTC_3629 +#endif + + +/** + * Byte zero the specified object. + * + * This will use sizeof(Obj) to figure the size and will call memset, bzero + * or some compiler intrinsic to perform the actual zeroing. + * + * @param Obj The object to zero. Make sure to dereference pointers. + * + * @remarks Because the macro may use memset it has been placed in string.h + * instead of cdefs.h to avoid build issues because someone forgot + * to include this header. + * + * @ingroup grp_rt_cdefs + */ +#define RT_ZERO(Obj) RT_BZERO(&(Obj), sizeof(Obj)) + +/** + * Byte zero the specified memory area. + * + * This will call memset, bzero or some compiler intrinsic to clear the + * specified bytes of memory. + * + * @param pv Pointer to the memory. + * @param cb The number of bytes to clear. Please, don't pass 0. + * + * @remarks Because the macro may use memset it has been placed in string.h + * instead of cdefs.h to avoid build issues because someone forgot + * to include this header. + * + * @ingroup grp_rt_cdefs + */ +#define RT_BZERO(pv, cb) do { memset((pv), 0, cb); } while (0) + + + +/** @defgroup grp_rt_str RTStr - String Manipulation + * Mostly UTF-8 related helpers where the standard string functions won't do. + * @ingroup grp_rt + * @{ + */ + +RT_C_DECLS_BEGIN + + +/** + * The maximum string length. + */ +#define RTSTR_MAX (~(size_t)0) + + +/** @def RTSTR_TAG + * The default allocation tag used by the RTStr allocation APIs. + * + * When not defined before the inclusion of iprt/string.h, this will default to + * the pointer to the current file name. The string API will make of use of + * this as pointer to a volatile but read-only string. + */ +#ifndef RTSTR_TAG +# define RTSTR_TAG (__FILE__) +#endif + + +#ifdef IN_RING3 + +/** + * Allocates tmp buffer with default tag, translates pszString from UTF8 to + * current codepage. + * + * @returns iprt status code. + * @param ppszString Receives pointer of allocated native CP string. + * The returned pointer must be freed using RTStrFree(). + * @param pszString UTF-8 string to convert. + */ +#define RTStrUtf8ToCurrentCP(ppszString, pszString) RTStrUtf8ToCurrentCPTag((ppszString), (pszString), RTSTR_TAG) + +/** + * Allocates tmp buffer with custom tag, translates pszString from UTF8 to + * current codepage. + * + * @returns iprt status code. + * @param ppszString Receives pointer of allocated native CP string. + * The returned pointer must be freed using + * RTStrFree()., const char *pszTag + * @param pszString UTF-8 string to convert. + * @param pszTag Allocation tag used for statistics and such. + */ +RTR3DECL(int) RTStrUtf8ToCurrentCPTag(char **ppszString, const char *pszString, const char *pszTag); + +/** + * Allocates tmp buffer, translates pszString from current codepage to UTF-8. + * + * @returns iprt status code. + * @param ppszString Receives pointer of allocated UTF-8 string. + * The returned pointer must be freed using RTStrFree(). + * @param pszString Native string to convert. + */ +#define RTStrCurrentCPToUtf8(ppszString, pszString) RTStrCurrentCPToUtf8Tag((ppszString), (pszString), RTSTR_TAG) + +/** + * Allocates tmp buffer, translates pszString from current codepage to UTF-8. + * + * @returns iprt status code. + * @param ppszString Receives pointer of allocated UTF-8 string. + * The returned pointer must be freed using RTStrFree(). + * @param pszString Native string to convert. + * @param pszTag Allocation tag used for statistics and such. + */ +RTR3DECL(int) RTStrCurrentCPToUtf8Tag(char **ppszString, const char *pszString, const char *pszTag); + +#endif /* IN_RING3 */ + +/** + * Free string allocated by any of the non-UCS-2 string functions. + * + * @returns iprt status code. + * @param pszString Pointer to buffer with string to free. + * NULL is accepted. + */ +RTDECL(void) RTStrFree(char *pszString); + +/** + * Allocates a new copy of the given UTF-8 string (default tag). + * + * @returns Pointer to the allocated UTF-8 string. + * @param pszString UTF-8 string to duplicate. + */ +#define RTStrDup(pszString) RTStrDupTag((pszString), RTSTR_TAG) + +/** + * Allocates a new copy of the given UTF-8 string (custom tag). + * + * @returns Pointer to the allocated UTF-8 string. + * @param pszString UTF-8 string to duplicate. + * @param pszTag Allocation tag used for statistics and such. + */ +RTDECL(char *) RTStrDupTag(const char *pszString, const char *pszTag); + +/** + * Allocates a new copy of the given UTF-8 string (default tag). + * + * @returns iprt status code. + * @param ppszString Receives pointer of the allocated UTF-8 string. + * The returned pointer must be freed using RTStrFree(). + * @param pszString UTF-8 string to duplicate. + */ +#define RTStrDupEx(ppszString, pszString) RTStrDupExTag((ppszString), (pszString), RTSTR_TAG) + +/** + * Allocates a new copy of the given UTF-8 string (custom tag). + * + * @returns iprt status code. + * @param ppszString Receives pointer of the allocated UTF-8 string. + * The returned pointer must be freed using RTStrFree(). + * @param pszString UTF-8 string to duplicate. + * @param pszTag Allocation tag used for statistics and such. + */ +RTDECL(int) RTStrDupExTag(char **ppszString, const char *pszString, const char *pszTag); + +/** + * Allocates a new copy of the given UTF-8 substring (default tag). + * + * @returns Pointer to the allocated UTF-8 substring. + * @param pszString UTF-8 string to duplicate. + * @param cchMax The max number of chars to duplicate, not counting + * the terminator. + */ +#define RTStrDupN(pszString, cchMax) RTStrDupNTag((pszString), (cchMax), RTSTR_TAG) + +/** + * Allocates a new copy of the given UTF-8 substring (custom tag). + * + * @returns Pointer to the allocated UTF-8 substring. + * @param pszString UTF-8 string to duplicate. + * @param cchMax The max number of chars to duplicate, not counting + * the terminator. + * @param pszTag Allocation tag used for statistics and such. + */ +RTDECL(char *) RTStrDupNTag(const char *pszString, size_t cchMax, const char *pszTag); + +/** + * Appends a string onto an existing IPRT allocated string (default tag). + * + * @retval VINF_SUCCESS + * @retval VERR_NO_STR_MEMORY if we failed to reallocate the string, @a *ppsz + * remains unchanged. + * + * @param ppsz Pointer to the string pointer. The string + * pointer must either be NULL or point to a string + * returned by an IPRT string API. (In/Out) + * @param pszAppend The string to append. NULL and empty strings + * are quietly ignored. + */ +#define RTStrAAppend(ppsz, pszAppend) RTStrAAppendTag((ppsz), (pszAppend), RTSTR_TAG) + +/** + * Appends a string onto an existing IPRT allocated string (custom tag). + * + * @retval VINF_SUCCESS + * @retval VERR_NO_STR_MEMORY if we failed to reallocate the string, @a *ppsz + * remains unchanged. + * + * @param ppsz Pointer to the string pointer. The string + * pointer must either be NULL or point to a string + * returned by an IPRT string API. (In/Out) + * @param pszAppend The string to append. NULL and empty strings + * are quietly ignored. + * @param pszTag Allocation tag used for statistics and such. + */ +RTDECL(int) RTStrAAppendTag(char **ppsz, const char *pszAppend, const char *pszTag); + +/** + * Appends N bytes from a strings onto an existing IPRT allocated string + * (default tag). + * + * @retval VINF_SUCCESS + * @retval VERR_NO_STR_MEMORY if we failed to reallocate the string, @a *ppsz + * remains unchanged. + * + * @param ppsz Pointer to the string pointer. The string + * pointer must either be NULL or point to a string + * returned by an IPRT string API. (In/Out) + * @param pszAppend The string to append. Can be NULL if cchAppend + * is NULL. + * @param cchAppend The number of chars (not code points) to append + * from pszAppend. Must not be more than + * @a pszAppend contains, except for the special + * value RTSTR_MAX that can be used to indicate all + * of @a pszAppend without having to strlen it. + */ +#define RTStrAAppendN(ppsz, pszAppend, cchAppend) RTStrAAppendNTag((ppsz), (pszAppend), (cchAppend), RTSTR_TAG) + +/** + * Appends N bytes from a strings onto an existing IPRT allocated string (custom + * tag). + * + * @retval VINF_SUCCESS + * @retval VERR_NO_STR_MEMORY if we failed to reallocate the string, @a *ppsz + * remains unchanged. + * + * @param ppsz Pointer to the string pointer. The string + * pointer must either be NULL or point to a string + * returned by an IPRT string API. (In/Out) + * @param pszAppend The string to append. Can be NULL if cchAppend + * is NULL. + * @param cchAppend The number of chars (not code points) to append + * from pszAppend. Must not be more than + * @a pszAppend contains, except for the special + * value RTSTR_MAX that can be used to indicate all + * of @a pszAppend without having to strlen it. + * @param pszTag Allocation tag used for statistics and such. + */ +RTDECL(int) RTStrAAppendNTag(char **ppsz, const char *pszAppend, size_t cchAppend, const char *pszTag); + +/** + * Appends one or more strings onto an existing IPRT allocated string. + * + * This is a very flexible and efficient alternative to using RTStrAPrintf to + * combine several strings together. + * + * @retval VINF_SUCCESS + * @retval VERR_NO_STR_MEMORY if we failed to reallocate the string, @a *ppsz + * remains unchanged. + * + * @param ppsz Pointer to the string pointer. The string + * pointer must either be NULL or point to a string + * returned by an IPRT string API. (In/Out) + * @param cPairs The number of string / length pairs in the + * @a va. + * @param va List of string (const char *) and length + * (size_t) pairs. The strings will be appended to + * the string in the first argument. + */ +#define RTStrAAppendExNV(ppsz, cPairs, va) RTStrAAppendExNVTag((ppsz), (cPairs), (va), RTSTR_TAG) + +/** + * Appends one or more strings onto an existing IPRT allocated string. + * + * This is a very flexible and efficient alternative to using RTStrAPrintf to + * combine several strings together. + * + * @retval VINF_SUCCESS + * @retval VERR_NO_STR_MEMORY if we failed to reallocate the string, @a *ppsz + * remains unchanged. + * + * @param ppsz Pointer to the string pointer. The string + * pointer must either be NULL or point to a string + * returned by an IPRT string API. (In/Out) + * @param cPairs The number of string / length pairs in the + * @a va. + * @param va List of string (const char *) and length + * (size_t) pairs. The strings will be appended to + * the string in the first argument. + * @param pszTag Allocation tag used for statistics and such. + */ +RTDECL(int) RTStrAAppendExNVTag(char **ppsz, size_t cPairs, va_list va, const char *pszTag); + +/** + * Appends one or more strings onto an existing IPRT allocated string + * (untagged). + * + * This is a very flexible and efficient alternative to using RTStrAPrintf to + * combine several strings together. + * + * @retval VINF_SUCCESS + * @retval VERR_NO_STR_MEMORY if we failed to reallocate the string, @a *ppsz + * remains unchanged. + * + * @param ppsz Pointer to the string pointer. The string + * pointer must either be NULL or point to a string + * returned by an IPRT string API. (In/Out) + * @param cPairs The number of string / length pairs in the + * ellipsis. + * @param ... List of string (const char *) and length + * (size_t) pairs. The strings will be appended to + * the string in the first argument. + */ +DECLINLINE(int) RTStrAAppendExN(char **ppsz, size_t cPairs, ...) +{ + int rc; + va_list va; + va_start(va, cPairs); + rc = RTStrAAppendExNVTag(ppsz, cPairs, va, RTSTR_TAG); + va_end(va); + return rc; +} + +/** + * Appends one or more strings onto an existing IPRT allocated string (custom + * tag). + * + * This is a very flexible and efficient alternative to using RTStrAPrintf to + * combine several strings together. + * + * @retval VINF_SUCCESS + * @retval VERR_NO_STR_MEMORY if we failed to reallocate the string, @a *ppsz + * remains unchanged. + * + * @param ppsz Pointer to the string pointer. The string + * pointer must either be NULL or point to a string + * returned by an IPRT string API. (In/Out) + * @param pszTag Allocation tag used for statistics and such. + * @param cPairs The number of string / length pairs in the + * ellipsis. + * @param ... List of string (const char *) and length + * (size_t) pairs. The strings will be appended to + * the string in the first argument. + */ +DECLINLINE(int) RTStrAAppendExNTag(char **ppsz, const char *pszTag, size_t cPairs, ...) +{ + int rc; + va_list va; + va_start(va, cPairs); + rc = RTStrAAppendExNVTag(ppsz, cPairs, va, pszTag); + va_end(va); + return rc; +} + +/** + * Truncates an IPRT allocated string (default tag). + * + * @retval VINF_SUCCESS. + * @retval VERR_OUT_OF_RANGE if cchNew is too long. Nothing is done. + * + * @param ppsz Pointer to the string pointer. The string + * pointer can be NULL if @a cchNew is 0, no change + * is made then. If we actually reallocate the + * string, the string pointer might be changed by + * this call. (In/Out) + * @param cchNew The new string length (excluding the + * terminator). The string must be at least this + * long or we'll return VERR_OUT_OF_RANGE and + * assert on you. + */ +#define RTStrATruncate(ppsz, cchNew) RTStrATruncateTag((ppsz), (cchNew), RTSTR_TAG) + +/** + * Truncates an IPRT allocated string. + * + * @retval VINF_SUCCESS. + * @retval VERR_OUT_OF_RANGE if cchNew is too long. Nothing is done. + * + * @param ppsz Pointer to the string pointer. The string + * pointer can be NULL if @a cchNew is 0, no change + * is made then. If we actually reallocate the + * string, the string pointer might be changed by + * this call. (In/Out) + * @param cchNew The new string length (excluding the + * terminator). The string must be at least this + * long or we'll return VERR_OUT_OF_RANGE and + * assert on you. + * @param pszTag Allocation tag used for statistics and such. + */ +RTDECL(int) RTStrATruncateTag(char **ppsz, size_t cchNew, const char *pszTag); + +/** + * Allocates memory for string storage (default tag). + * + * You should normally not use this function, except if there is some very + * custom string handling you need doing that isn't covered by any of the other + * APIs. + * + * @returns Pointer to the allocated string. The first byte is always set + * to the string terminator char, the contents of the remainder of the + * memory is undefined. The string must be freed by calling RTStrFree. + * + * NULL is returned if the allocation failed. Please translate this to + * VERR_NO_STR_MEMORY and not VERR_NO_MEMORY. Also consider + * RTStrAllocEx if an IPRT status code is required. + * + * @param cb How many bytes to allocate. If this is zero, we + * will allocate a terminator byte anyway. + */ +#define RTStrAlloc(cb) RTStrAllocTag((cb), RTSTR_TAG) + +/** + * Allocates memory for string storage (custom tag). + * + * You should normally not use this function, except if there is some very + * custom string handling you need doing that isn't covered by any of the other + * APIs. + * + * @returns Pointer to the allocated string. The first byte is always set + * to the string terminator char, the contents of the remainder of the + * memory is undefined. The string must be freed by calling RTStrFree. + * + * NULL is returned if the allocation failed. Please translate this to + * VERR_NO_STR_MEMORY and not VERR_NO_MEMORY. Also consider + * RTStrAllocEx if an IPRT status code is required. + * + * @param cb How many bytes to allocate. If this is zero, we + * will allocate a terminator byte anyway. + * @param pszTag Allocation tag used for statistics and such. + */ +RTDECL(char *) RTStrAllocTag(size_t cb, const char *pszTag); + +/** + * Allocates memory for string storage, with status code (default tag). + * + * You should normally not use this function, except if there is some very + * custom string handling you need doing that isn't covered by any of the other + * APIs. + * + * @retval VINF_SUCCESS + * @retval VERR_NO_STR_MEMORY + * + * @param ppsz Where to return the allocated string. This will + * be set to NULL on failure. On success, the + * returned memory will always start with a + * terminator char so that it is considered a valid + * C string, the contents of rest of the memory is + * undefined. + * @param cb How many bytes to allocate. If this is zero, we + * will allocate a terminator byte anyway. + */ +#define RTStrAllocEx(ppsz, cb) RTStrAllocExTag((ppsz), (cb), RTSTR_TAG) + +/** + * Allocates memory for string storage, with status code (custom tag). + * + * You should normally not use this function, except if there is some very + * custom string handling you need doing that isn't covered by any of the other + * APIs. + * + * @retval VINF_SUCCESS + * @retval VERR_NO_STR_MEMORY + * + * @param ppsz Where to return the allocated string. This will + * be set to NULL on failure. On success, the + * returned memory will always start with a + * terminator char so that it is considered a valid + * C string, the contents of rest of the memory is + * undefined. + * @param cb How many bytes to allocate. If this is zero, we + * will allocate a terminator byte anyway. + * @param pszTag Allocation tag used for statistics and such. + */ +RTDECL(int) RTStrAllocExTag(char **ppsz, size_t cb, const char *pszTag); + +/** + * Reallocates the specified string (default tag). + * + * You should normally not have use this function, except perhaps to truncate a + * really long string you've got from some IPRT string API, but then you should + * use RTStrATruncate. + * + * @returns VINF_SUCCESS. + * @retval VERR_NO_STR_MEMORY if we failed to reallocate the string, @a *ppsz + * remains unchanged. + * + * @param ppsz Pointer to the string variable containing the + * input and output string. + * + * When not freeing the string, the result will + * always have the last byte set to the terminator + * character so that when used for string + * truncation the result will be a valid C string + * (your job to keep it a valid UTF-8 string). + * + * When the input string is NULL and we're supposed + * to reallocate, the returned string will also + * have the first byte set to the terminator char + * so it will be a valid C string. + * + * @param cbNew When @a cbNew is zero, we'll behave like + * RTStrFree and @a *ppsz will be set to NULL. + * + * When not zero, this will be the new size of the + * memory backing the string, i.e. it includes the + * terminator char. + */ +#define RTStrRealloc(ppsz, cbNew) RTStrReallocTag((ppsz), (cbNew), RTSTR_TAG) + +/** + * Reallocates the specified string (custom tag). + * + * You should normally not have use this function, except perhaps to truncate a + * really long string you've got from some IPRT string API, but then you should + * use RTStrATruncate. + * + * @returns VINF_SUCCESS. + * @retval VERR_NO_STR_MEMORY if we failed to reallocate the string, @a *ppsz + * remains unchanged. + * + * @param ppsz Pointer to the string variable containing the + * input and output string. + * + * When not freeing the string, the result will + * always have the last byte set to the terminator + * character so that when used for string + * truncation the result will be a valid C string + * (your job to keep it a valid UTF-8 string). + * + * When the input string is NULL and we're supposed + * to reallocate, the returned string will also + * have the first byte set to the terminator char + * so it will be a valid C string. + * + * @param cbNew When @a cbNew is zero, we'll behave like + * RTStrFree and @a *ppsz will be set to NULL. + * + * When not zero, this will be the new size of the + * memory backing the string, i.e. it includes the + * terminator char. + * @param pszTag Allocation tag used for statistics and such. + */ +RTDECL(int) RTStrReallocTag(char **ppsz, size_t cbNew, const char *pszTag); + +/** + * Validates the UTF-8 encoding of the string. + * + * @returns iprt status code. + * @param psz The string. + */ +RTDECL(int) RTStrValidateEncoding(const char *psz); + +/** @name Flags for RTStrValidateEncodingEx and RTUtf16ValidateEncodingEx + */ +/** Check that the string is zero terminated within the given size. + * VERR_BUFFER_OVERFLOW will be returned if the check fails. */ +#define RTSTR_VALIDATE_ENCODING_ZERO_TERMINATED RT_BIT_32(0) +/** Check that the string is exactly the given length. + * If it terminates early, VERR_BUFFER_UNDERFLOW will be returned. When used + * together with RTSTR_VALIDATE_ENCODING_ZERO_TERMINATED, the given length must + * include the terminator or VERR_BUFFER_OVERFLOW will be returned. */ +#define RTSTR_VALIDATE_ENCODING_EXACT_LENGTH RT_BIT_32(1) +/** @} */ + +/** + * Validates the UTF-8 encoding of the string. + * + * @returns iprt status code. + * @param psz The string. + * @param cch The max string length (/ size). Use RTSTR_MAX to + * process the entire string. + * @param fFlags Combination of RTSTR_VALIDATE_ENCODING_XXX flags. + */ +RTDECL(int) RTStrValidateEncodingEx(const char *psz, size_t cch, uint32_t fFlags); + +/** + * Checks if the UTF-8 encoding is valid. + * + * @returns true / false. + * @param psz The string. + */ +RTDECL(bool) RTStrIsValidEncoding(const char *psz); + +/** + * Purge all bad UTF-8 encoding in the string, replacing it with '?'. + * + * @returns The number of bad characters (0 if nothing was done). + * @param psz The string to purge. + */ +RTDECL(size_t) RTStrPurgeEncoding(char *psz); + +/** + * Sanitise a (valid) UTF-8 string by replacing all characters outside a white + * list in-place by an ASCII replacement character. Multi-byte characters will + * be replaced byte by byte. + * + * @returns The number of code points replaced, or a negative value if the + * string is not correctly encoded. In this last case the string + * may be partially processed. + * @param psz The string to sanitise. + * @param puszValidSets A zero-terminated array of pairs of Unicode points. + * Each pair is the start and end point of a range, + * and the union of these ranges forms the white list. + * @param chReplacement The ASCII replacement character. + */ +RTDECL(ssize_t) RTStrPurgeComplementSet(char *psz, PCRTUNICP puszValidSet, char chReplacement); + +/** + * Gets the number of code points the string is made up of, excluding + * the terminator. + * + * + * @returns Number of code points (RTUNICP). + * @returns 0 if the string was incorrectly encoded. + * @param psz The string. + */ +RTDECL(size_t) RTStrUniLen(const char *psz); + +/** + * Gets the number of code points the string is made up of, excluding + * the terminator. + * + * This function will validate the string, and incorrectly encoded UTF-8 + * strings will be rejected. + * + * @returns iprt status code. + * @param psz The string. + * @param cch The max string length. Use RTSTR_MAX to process the entire string. + * @param pcuc Where to store the code point count. + * This is undefined on failure. + */ +RTDECL(int) RTStrUniLenEx(const char *psz, size_t cch, size_t *pcuc); + +/** + * Translate a UTF-8 string into an unicode string (i.e. RTUNICPs), allocating the string buffer. + * + * @returns iprt status code. + * @param pszString UTF-8 string to convert. + * @param ppUniString Receives pointer to the allocated unicode string. + * The returned string must be freed using RTUniFree(). + */ +RTDECL(int) RTStrToUni(const char *pszString, PRTUNICP *ppUniString); + +/** + * Translates pszString from UTF-8 to an array of code points, allocating the result + * array if requested. + * + * @returns iprt status code. + * @param pszString UTF-8 string to convert. + * @param cchString The maximum size in chars (the type) to convert. The conversion stop + * when it reaches cchString or the string terminator ('\\0'). + * Use RTSTR_MAX to translate the entire string. + * @param ppaCps If cCps is non-zero, this must either be pointing to pointer to + * a buffer of the specified size, or pointer to a NULL pointer. + * If *ppusz is NULL or cCps is zero a buffer of at least cCps items + * will be allocated to hold the translated string. + * If a buffer was requested it must be freed using RTUtf16Free(). + * @param cCps The number of code points in the unicode string. This includes the terminator. + * @param pcCps Where to store the length of the translated string, + * excluding the terminator. (Optional) + * + * This may be set under some error conditions, + * however, only for VERR_BUFFER_OVERFLOW and + * VERR_NO_STR_MEMORY will it contain a valid string + * length that can be used to resize the buffer. + */ +RTDECL(int) RTStrToUniEx(const char *pszString, size_t cchString, PRTUNICP *ppaCps, size_t cCps, size_t *pcCps); + +/** + * Calculates the length of the string in RTUTF16 items. + * + * This function will validate the string, and incorrectly encoded UTF-8 + * strings will be rejected. The primary purpose of this function is to + * help allocate buffers for RTStrToUtf16Ex of the correct size. For most + * other purposes RTStrCalcUtf16LenEx() should be used. + * + * @returns Number of RTUTF16 items. + * @returns 0 if the string was incorrectly encoded. + * @param psz The string. + */ +RTDECL(size_t) RTStrCalcUtf16Len(const char *psz); + +/** + * Calculates the length of the string in RTUTF16 items. + * + * This function will validate the string, and incorrectly encoded UTF-8 + * strings will be rejected. + * + * @returns iprt status code. + * @param psz The string. + * @param cch The max string length. Use RTSTR_MAX to process the entire string. + * @param pcwc Where to store the string length. Optional. + * This is undefined on failure. + */ +RTDECL(int) RTStrCalcUtf16LenEx(const char *psz, size_t cch, size_t *pcwc); + +/** + * Translate a UTF-8 string into a UTF-16 allocating the result buffer (default + * tag). + * + * @returns iprt status code. + * @param pszString UTF-8 string to convert. + * @param ppwszString Receives pointer to the allocated UTF-16 string. + * The returned string must be freed using RTUtf16Free(). + */ +#define RTStrToUtf16(pszString, ppwszString) RTStrToUtf16Tag((pszString), (ppwszString), RTSTR_TAG) + +/** + * Translate a UTF-8 string into a UTF-16 allocating the result buffer (custom + * tag). + * + * @returns iprt status code. + * @param pszString UTF-8 string to convert. + * @param ppwszString Receives pointer to the allocated UTF-16 string. + * The returned string must be freed using RTUtf16Free(). + * @param pszTag Allocation tag used for statistics and such. + */ +RTDECL(int) RTStrToUtf16Tag(const char *pszString, PRTUTF16 *ppwszString, const char *pszTag); + +/** + * Translates pszString from UTF-8 to UTF-16, allocating the result buffer if requested. + * + * @returns iprt status code. + * @param pszString UTF-8 string to convert. + * @param cchString The maximum size in chars (the type) to convert. The conversion stop + * when it reaches cchString or the string terminator ('\\0'). + * Use RTSTR_MAX to translate the entire string. + * @param ppwsz If cwc is non-zero, this must either be pointing to pointer to + * a buffer of the specified size, or pointer to a NULL pointer. + * If *ppwsz is NULL or cwc is zero a buffer of at least cwc items + * will be allocated to hold the translated string. + * If a buffer was requested it must be freed using RTUtf16Free(). + * @param cwc The buffer size in RTUTF16s. This includes the terminator. + * @param pcwc Where to store the length of the translated string, + * excluding the terminator. (Optional) + * + * This may be set under some error conditions, + * however, only for VERR_BUFFER_OVERFLOW and + * VERR_NO_STR_MEMORY will it contain a valid string + * length that can be used to resize the buffer. + */ +#define RTStrToUtf16Ex(pszString, cchString, ppwsz, cwc, pcwc) \ + RTStrToUtf16ExTag((pszString), (cchString), (ppwsz), (cwc), (pcwc), RTSTR_TAG) + +/** + * Translates pszString from UTF-8 to UTF-16, allocating the result buffer if + * requested (custom tag). + * + * @returns iprt status code. + * @param pszString UTF-8 string to convert. + * @param cchString The maximum size in chars (the type) to convert. The conversion stop + * when it reaches cchString or the string terminator ('\\0'). + * Use RTSTR_MAX to translate the entire string. + * @param ppwsz If cwc is non-zero, this must either be pointing to pointer to + * a buffer of the specified size, or pointer to a NULL pointer. + * If *ppwsz is NULL or cwc is zero a buffer of at least cwc items + * will be allocated to hold the translated string. + * If a buffer was requested it must be freed using RTUtf16Free(). + * @param cwc The buffer size in RTUTF16s. This includes the terminator. + * @param pcwc Where to store the length of the translated string, + * excluding the terminator. (Optional) + * + * This may be set under some error conditions, + * however, only for VERR_BUFFER_OVERFLOW and + * VERR_NO_STR_MEMORY will it contain a valid string + * length that can be used to resize the buffer. + * @param pszTag Allocation tag used for statistics and such. + */ +RTDECL(int) RTStrToUtf16ExTag(const char *pszString, size_t cchString, PRTUTF16 *ppwsz, size_t cwc, size_t *pcwc, const char *pszTag); + + +/** + * Calculates the length of the string in Latin-1 characters. + * + * This function will validate the string, and incorrectly encoded UTF-8 + * strings as well as string with codepoints outside the latin-1 range will be + * rejected. The primary purpose of this function is to help allocate buffers + * for RTStrToLatin1Ex of the correct size. For most other purposes + * RTStrCalcLatin1LenEx() should be used. + * + * @returns Number of Latin-1 characters. + * @returns 0 if the string was incorrectly encoded. + * @param psz The string. + */ +RTDECL(size_t) RTStrCalcLatin1Len(const char *psz); + +/** + * Calculates the length of the string in Latin-1 characters. + * + * This function will validate the string, and incorrectly encoded UTF-8 + * strings as well as string with codepoints outside the latin-1 range will be + * rejected. + * + * @returns iprt status code. + * @param psz The string. + * @param cch The max string length. Use RTSTR_MAX to process the + * entire string. + * @param pcch Where to store the string length. Optional. + * This is undefined on failure. + */ +RTDECL(int) RTStrCalcLatin1LenEx(const char *psz, size_t cch, size_t *pcwc); + +/** + * Translate a UTF-8 string into a Latin-1 allocating the result buffer (default + * tag). + * + * @returns iprt status code. + * @param pszString UTF-8 string to convert. + * @param ppszString Receives pointer to the allocated Latin-1 string. + * The returned string must be freed using RTStrFree(). + */ +#define RTStrToLatin1(pszString, ppszString) RTStrToLatin1Tag((pszString), (ppszString), RTSTR_TAG) + +/** + * Translate a UTF-8 string into a Latin-1 allocating the result buffer (custom + * tag). + * + * @returns iprt status code. + * @param pszString UTF-8 string to convert. + * @param ppszString Receives pointer to the allocated Latin-1 string. + * The returned string must be freed using RTStrFree(). + * @param pszTag Allocation tag used for statistics and such. + */ +RTDECL(int) RTStrToLatin1Tag(const char *pszString, char **ppszString, const char *pszTag); + +/** + * Translates pszString from UTF-8 to Latin-1, allocating the result buffer if requested. + * + * @returns iprt status code. + * @param pszString UTF-8 string to convert. + * @param cchString The maximum size in chars (the type) to convert. + * The conversion stop when it reaches cchString or + * the string terminator ('\\0'). Use RTSTR_MAX to + * translate the entire string. + * @param ppsz If cch is non-zero, this must either be pointing to + * pointer to a buffer of the specified size, or + * pointer to a NULL pointer. If *ppsz is NULL or cch + * is zero a buffer of at least cch items will be + * allocated to hold the translated string. If a + * buffer was requested it must be freed using + * RTStrFree(). + * @param cch The buffer size in bytes. This includes the + * terminator. + * @param pcch Where to store the length of the translated string, + * excluding the terminator. (Optional) + * + * This may be set under some error conditions, + * however, only for VERR_BUFFER_OVERFLOW and + * VERR_NO_STR_MEMORY will it contain a valid string + * length that can be used to resize the buffer. + */ +#define RTStrToLatin1Ex(pszString, cchString, ppsz, cch, pcch) \ + RTStrToLatin1ExTag((pszString), (cchString), (ppsz), (cch), (pcch), RTSTR_TAG) + +/** + * Translates pszString from UTF-8 to Latin1, allocating the result buffer if + * requested (custom tag). + * + * @returns iprt status code. + * @param pszString UTF-8 string to convert. + * @param cchString The maximum size in chars (the type) to convert. + * The conversion stop when it reaches cchString or + * the string terminator ('\\0'). Use RTSTR_MAX to + * translate the entire string. + * @param ppsz If cch is non-zero, this must either be pointing to + * pointer to a buffer of the specified size, or + * pointer to a NULL pointer. If *ppsz is NULL or cch + * is zero a buffer of at least cch items will be + * allocated to hold the translated string. If a + * buffer was requested it must be freed using + * RTStrFree(). + * @param cch The buffer size in bytes. This includes the + * terminator. + * @param pcch Where to store the length of the translated string, + * excluding the terminator. (Optional) + * + * This may be set under some error conditions, + * however, only for VERR_BUFFER_OVERFLOW and + * VERR_NO_STR_MEMORY will it contain a valid string + * length that can be used to resize the buffer. + * @param pszTag Allocation tag used for statistics and such. + */ +RTDECL(int) RTStrToLatin1ExTag(const char *pszString, size_t cchString, char **ppsz, size_t cch, size_t *pcch, const char *pszTag); + + +/** + * Translate a Latin1 string into a UTF-8 allocating the result buffer (default + * tag). + * + * @returns iprt status code. + * @param pszString Latin1 string to convert. + * @param ppszString Receives pointer of allocated UTF-8 string on + * success, and is always set to NULL on failure. + * The returned pointer must be freed using RTStrFree(). + */ +#define RTLatin1ToUtf8(pszString, ppszString) RTLatin1ToUtf8Tag((pszString), (ppszString), RTSTR_TAG) + +/** + * Translate a Latin-1 string into a UTF-8 allocating the result buffer. + * + * @returns iprt status code. + * @param pszString Latin-1 string to convert. + * @param ppszString Receives pointer of allocated UTF-8 string on + * success, and is always set to NULL on failure. + * The returned pointer must be freed using RTStrFree(). + * @param pszTag Allocation tag used for statistics and such. + */ +RTDECL(int) RTLatin1ToUtf8Tag(const char *pszString, char **ppszString, const char *pszTag); + +/** + * Translates Latin-1 to UTF-8 using buffer provided by the caller or a fittingly + * sized buffer allocated by the function (default tag). + * + * @returns iprt status code. + * @param pszString The Latin-1 string to convert. + * @param cchString The number of Latin-1 characters to translate from + * pszString. The translation will stop when reaching + * cchString or the terminator ('\\0'). Use RTSTR_MAX + * to translate the entire string. + * @param ppsz If cch is non-zero, this must either be pointing to + * a pointer to a buffer of the specified size, or + * pointer to a NULL pointer. If *ppsz is NULL or cch + * is zero a buffer of at least cch chars will be + * allocated to hold the translated string. If a + * buffer was requested it must be freed using + * RTStrFree(). + * @param cch The buffer size in chars (the type). This includes the terminator. + * @param pcch Where to store the length of the translated string, + * excluding the terminator. (Optional) + * + * This may be set under some error conditions, + * however, only for VERR_BUFFER_OVERFLOW and + * VERR_NO_STR_MEMORY will it contain a valid string + * length that can be used to resize the buffer. + */ +#define RTLatin1ToUtf8Ex(pszString, cchString, ppsz, cch, pcch) \ + RTLatin1ToUtf8ExTag((pszString), (cchString), (ppsz), (cch), (pcch), RTSTR_TAG) + +/** + * Translates Latin1 to UTF-8 using buffer provided by the caller or a fittingly + * sized buffer allocated by the function (custom tag). + * + * @returns iprt status code. + * @param pszString The Latin1 string to convert. + * @param cchString The number of Latin1 characters to translate from + * pwszString. The translation will stop when + * reaching cchString or the terminator ('\\0'). Use + * RTSTR_MAX to translate the entire string. + * @param ppsz If cch is non-zero, this must either be pointing to + * a pointer to a buffer of the specified size, or + * pointer to a NULL pointer. If *ppsz is NULL or cch + * is zero a buffer of at least cch chars will be + * allocated to hold the translated string. If a + * buffer was requested it must be freed using + * RTStrFree(). + * @param cch The buffer size in chars (the type). This includes + * the terminator. + * @param pcch Where to store the length of the translated string, + * excluding the terminator. (Optional) + * + * This may be set under some error conditions, + * however, only for VERR_BUFFER_OVERFLOW and + * VERR_NO_STR_MEMORY will it contain a valid string + * length that can be used to resize the buffer. + * @param pszTag Allocation tag used for statistics and such. + */ +RTDECL(int) RTLatin1ToUtf8ExTag(const char *pszString, size_t cchString, char **ppsz, size_t cch, size_t *pcch, const char *pszTag); + +/** + * Calculates the length of the Latin-1 string in UTF-8 chars (bytes). + * + * The primary purpose of this function is to help allocate buffers for + * RTLatin1ToUtf8() of the correct size. For most other purposes + * RTLatin1ToUtf8Ex() should be used. + * + * @returns Number of chars (bytes). + * @returns 0 if the string was incorrectly encoded. + * @param psz The Latin-1 string. + */ +RTDECL(size_t) RTLatin1CalcUtf8Len(const char *psz); + +/** + * Calculates the length of the Latin-1 string in UTF-8 chars (bytes). + * + * @returns iprt status code. + * @param psz The string. + * @param cch The max string length. Use RTSTR_MAX to process the entire string. + * @param pcch Where to store the string length (in bytes). Optional. + * This is undefined on failure. + */ +RTDECL(int) RTLatin1CalcUtf8LenEx(const char *psz, size_t cch, size_t *pcch); + +/** + * Get the unicode code point at the given string position. + * + * @returns unicode code point. + * @returns RTUNICP_INVALID if the encoding is invalid. + * @param psz The string. + */ +RTDECL(RTUNICP) RTStrGetCpInternal(const char *psz); + +/** + * Get the unicode code point at the given string position. + * + * @returns iprt status code + * @returns VERR_INVALID_UTF8_ENCODING if the encoding is invalid. + * @param ppsz The string cursor. + * This is advanced one character forward on failure. + * @param pCp Where to store the unicode code point. + * Stores RTUNICP_INVALID if the encoding is invalid. + */ +RTDECL(int) RTStrGetCpExInternal(const char **ppsz, PRTUNICP pCp); + +/** + * Get the unicode code point at the given string position for a string of a + * given length. + * + * @returns iprt status code + * @retval VERR_INVALID_UTF8_ENCODING if the encoding is invalid. + * @retval VERR_END_OF_STRING if *pcch is 0. *pCp is set to RTUNICP_INVALID. + * + * @param ppsz The string. + * @param pcch Pointer to the length of the string. This will be + * decremented by the size of the code point. + * @param pCp Where to store the unicode code point. + * Stores RTUNICP_INVALID if the encoding is invalid. + */ +RTDECL(int) RTStrGetCpNExInternal(const char **ppsz, size_t *pcch, PRTUNICP pCp); + +/** + * Put the unicode code point at the given string position + * and return the pointer to the char following it. + * + * This function will not consider anything at or following the + * buffer area pointed to by psz. It is therefore not suitable for + * inserting code points into a string, only appending/overwriting. + * + * @returns pointer to the char following the written code point. + * @param psz The string. + * @param CodePoint The code point to write. + * This should not be RTUNICP_INVALID or any other + * character out of the UTF-8 range. + * + * @remark This is a worker function for RTStrPutCp(). + * + */ +RTDECL(char *) RTStrPutCpInternal(char *psz, RTUNICP CodePoint); + +/** + * Get the unicode code point at the given string position. + * + * @returns unicode code point. + * @returns RTUNICP_INVALID if the encoding is invalid. + * @param psz The string. + * + * @remark We optimize this operation by using an inline function for + * the most frequent and simplest sequence, the rest is + * handled by RTStrGetCpInternal(). + */ +DECLINLINE(RTUNICP) RTStrGetCp(const char *psz) +{ + const unsigned char uch = *(const unsigned char *)psz; + if (!(uch & RT_BIT(7))) + return uch; + return RTStrGetCpInternal(psz); +} + +/** + * Get the unicode code point at the given string position. + * + * @returns iprt status code. + * @param ppsz Pointer to the string pointer. This will be updated to + * point to the char following the current code point. + * This is advanced one character forward on failure. + * @param pCp Where to store the code point. + * RTUNICP_INVALID is stored here on failure. + * + * @remark We optimize this operation by using an inline function for + * the most frequent and simplest sequence, the rest is + * handled by RTStrGetCpExInternal(). + */ +DECLINLINE(int) RTStrGetCpEx(const char **ppsz, PRTUNICP pCp) +{ + const unsigned char uch = **(const unsigned char **)ppsz; + if (!(uch & RT_BIT(7))) + { + (*ppsz)++; + *pCp = uch; + return VINF_SUCCESS; + } + return RTStrGetCpExInternal(ppsz, pCp); +} + +/** + * Get the unicode code point at the given string position for a string of a + * given maximum length. + * + * @returns iprt status code. + * @retval VERR_INVALID_UTF8_ENCODING if the encoding is invalid. + * @retval VERR_END_OF_STRING if *pcch is 0. *pCp is set to RTUNICP_INVALID. + * + * @param ppsz Pointer to the string pointer. This will be updated to + * point to the char following the current code point. + * @param pcch Pointer to the maximum string length. This will be + * decremented by the size of the code point found. + * @param pCp Where to store the code point. + * RTUNICP_INVALID is stored here on failure. + * + * @remark We optimize this operation by using an inline function for + * the most frequent and simplest sequence, the rest is + * handled by RTStrGetCpNExInternal(). + */ +DECLINLINE(int) RTStrGetCpNEx(const char **ppsz, size_t *pcch, PRTUNICP pCp) +{ + if (RT_LIKELY(*pcch != 0)) + { + const unsigned char uch = **(const unsigned char **)ppsz; + if (!(uch & RT_BIT(7))) + { + (*ppsz)++; + (*pcch)--; + *pCp = uch; + return VINF_SUCCESS; + } + } + return RTStrGetCpNExInternal(ppsz, pcch, pCp); +} + +/** + * Get the UTF-8 size in characters of a given Unicode code point. + * + * The code point is expected to be a valid Unicode one, but not necessarily in + * the range supported by UTF-8. + * + * @returns The number of chars (bytes) required to encode the code point, or + * zero if there is no UTF-8 encoding. + * @param CodePoint The unicode code point. + */ +DECLINLINE(size_t) RTStrCpSize(RTUNICP CodePoint) +{ + if (CodePoint < 0x00000080) + return 1; + if (CodePoint < 0x00000800) + return 2; + if (CodePoint < 0x00010000) + return 3; +#ifdef RT_USE_RTC_3629 + if (CodePoint < 0x00011000) + return 4; +#else + if (CodePoint < 0x00200000) + return 4; + if (CodePoint < 0x04000000) + return 5; + if (CodePoint < 0x7fffffff) + return 6; +#endif + return 0; +} + +/** + * Put the unicode code point at the given string position + * and return the pointer to the char following it. + * + * This function will not consider anything at or following the + * buffer area pointed to by psz. It is therefore not suitable for + * inserting code points into a string, only appending/overwriting. + * + * @returns pointer to the char following the written code point. + * @param psz The string. + * @param CodePoint The code point to write. + * This should not be RTUNICP_INVALID or any other + * character out of the UTF-8 range. + * + * @remark We optimize this operation by using an inline function for + * the most frequent and simplest sequence, the rest is + * handled by RTStrPutCpInternal(). + */ +DECLINLINE(char *) RTStrPutCp(char *psz, RTUNICP CodePoint) +{ + if (CodePoint < 0x80) + { + *psz++ = (unsigned char)CodePoint; + return psz; + } + return RTStrPutCpInternal(psz, CodePoint); +} + +/** + * Skips ahead, past the current code point. + * + * @returns Pointer to the char after the current code point. + * @param psz Pointer to the current code point. + * @remark This will not move the next valid code point, only past the current one. + */ +DECLINLINE(char *) RTStrNextCp(const char *psz) +{ + RTUNICP Cp; + RTStrGetCpEx(&psz, &Cp); + return (char *)psz; +} + +/** + * Skips back to the previous code point. + * + * @returns Pointer to the char before the current code point. + * @returns pszStart on failure. + * @param pszStart Pointer to the start of the string. + * @param psz Pointer to the current code point. + */ +RTDECL(char *) RTStrPrevCp(const char *pszStart, const char *psz); + +/** + * Get the unicode code point at the given string position. + * + * @returns unicode code point. + * @returns RTUNICP_INVALID if the encoding is invalid. + * @param psz The string. + */ +DECLINLINE(RTUNICP) RTLatin1GetCp(const char *psz) +{ + return *(const unsigned char *)psz; +} + +/** + * Get the unicode code point at the given string position. + * + * @returns iprt status code. + * @param ppsz Pointer to the string pointer. This will be updated to + * point to the char following the current code point. + * This is advanced one character forward on failure. + * @param pCp Where to store the code point. + * RTUNICP_INVALID is stored here on failure. + * + * @remark We optimize this operation by using an inline function for + * the most frequent and simplest sequence, the rest is + * handled by RTStrGetCpExInternal(). + */ +DECLINLINE(int) RTLatin1GetCpEx(const char **ppsz, PRTUNICP pCp) +{ + const unsigned char uch = **(const unsigned char **)ppsz; + (*ppsz)++; + *pCp = uch; + return VINF_SUCCESS; +} + +/** + * Get the unicode code point at the given string position for a string of a + * given maximum length. + * + * @returns iprt status code. + * @retval VERR_END_OF_STRING if *pcch is 0. *pCp is set to RTUNICP_INVALID. + * + * @param ppsz Pointer to the string pointer. This will be updated to + * point to the char following the current code point. + * @param pcch Pointer to the maximum string length. This will be + * decremented by the size of the code point found. + * @param pCp Where to store the code point. + * RTUNICP_INVALID is stored here on failure. + */ +DECLINLINE(int) RTLatin1GetCpNEx(const char **ppsz, size_t *pcch, PRTUNICP pCp) +{ + if (RT_LIKELY(*pcch != 0)) + { + const unsigned char uch = **(const unsigned char **)ppsz; + (*ppsz)++; + (*pcch)--; + *pCp = uch; + return VINF_SUCCESS; + } + *pCp = RTUNICP_INVALID; + return VERR_END_OF_STRING; +} + +/** + * Get the Latin-1 size in characters of a given Unicode code point. + * + * The code point is expected to be a valid Unicode one, but not necessarily in + * the range supported by Latin-1. + * + * @returns the size in characters, or zero if there is no Latin-1 encoding + */ +DECLINLINE(size_t) RTLatin1CpSize(RTUNICP CodePoint) +{ + if (CodePoint < 0x100) + return 1; + return 0; +} + +/** + * Put the unicode code point at the given string position + * and return the pointer to the char following it. + * + * This function will not consider anything at or following the + * buffer area pointed to by psz. It is therefore not suitable for + * inserting code points into a string, only appending/overwriting. + * + * @returns pointer to the char following the written code point. + * @param psz The string. + * @param CodePoint The code point to write. + * This should not be RTUNICP_INVALID or any other + * character out of the Latin-1 range. + */ +DECLINLINE(char *) RTLatin1PutCp(char *psz, RTUNICP CodePoint) +{ + AssertReturn(CodePoint < 0x100, NULL); + *psz++ = (unsigned char)CodePoint; + return psz; +} + +/** + * Skips ahead, past the current code point. + * + * @returns Pointer to the char after the current code point. + * @param psz Pointer to the current code point. + * @remark This will not move the next valid code point, only past the current one. + */ +DECLINLINE(char *) RTLatin1NextCp(const char *psz) +{ + psz++; + return (char *)psz; +} + +/** + * Skips back to the previous code point. + * + * @returns Pointer to the char before the current code point. + * @returns pszStart on failure. + * @param pszStart Pointer to the start of the string. + * @param psz Pointer to the current code point. + */ +DECLINLINE(char *) RTLatin1PrevCp(const char *psz) +{ + psz--; + return (char *)psz; +} + + +/** @page pg_rt_str_format The IPRT Format Strings + * + * IPRT implements most of the commonly used format types and flags with the + * exception of floating point which is completely missing. In addition IPRT + * provides a number of IPRT specific format types for the IPRT typedefs and + * other useful things. Note that several of these extensions are similar to + * \%p and doesn't care much if you try add formating flags/width/precision. + * + * + * Group 0a, The commonly used format types: + * - \%s - Takes a pointer to a zero terminated string (UTF-8) and + * prints it with the optionally adjustment (width, -) and + * length restriction (precision). + * - \%ls - Same as \%s except that the input is UTF-16 (output UTF-8). + * - \%Ls - Same as \%s except that the input is UCS-32 (output UTF-8). + * - \%S - Same as \%s, used to convert to current codeset but this is + * now done by the streams code. Deprecated, use \%s. + * - \%lS - Ditto. Deprecated, use \%ls. + * - \%LS - Ditto. Deprecated, use \%Ls. + * - \%c - Takes a char and prints it. + * - \%d - Takes a signed integer and prints it as decimal. Thousand + * separator (\'), zero padding (0), adjustment (-+), width, + * precision + * - \%i - Same as \%d. + * - \%u - Takes an unsigned integer and prints it as decimal. Thousand + * separator (\'), zero padding (0), adjustment (-+), width, + * precision + * - \%x - Takes an unsigned integer and prints it as lowercased + * hexadecimal. The special hash (\#) flag causes a '0x' + * prefixed to be printed. Zero padding (0), adjustment (-+), + * width, precision. + * - \%X - Same as \%x except that it is uppercased. + * - \%o - Takes an unsigned (?) integer and prints it as octal. Zero + * padding (0), adjustment (-+), width, precision. + * - \%p - Takes a pointer (void technically) and prints it. Zero + * padding (0), adjustment (-+), width, precision. + * + * The \%d, \%i, \%u, \%x, \%X and \%o format types support the following + * argument type specifiers: + * - \%ll - long long (uint64_t). + * - \%L - long long (uint64_t). + * - \%l - long (uint32_t, uint64_t) + * - \%h - short (int16_t). + * - \%hh - char (int8_t). + * - \%H - char (int8_t). + * - \%z - size_t. + * - \%j - intmax_t (int64_t). + * - \%t - ptrdiff_t. + * The type in parentheses is typical sizes, however when printing those types + * you are better off using the special group 2 format types below (\%RX32 and + * such). + * + * + * Group 0b, IPRT format tricks: + * - %M - Replaces the format string, takes a string pointer. + * - %N - Nested formatting, takes a pointer to a format string + * followed by the pointer to a va_list variable. The va_list + * variable will not be modified and the caller must do va_end() + * on it. Make sure the va_list variable is NOT in a parameter + * list or some gcc versions/targets may get it all wrong. + * + * + * Group 1, the basic runtime typedefs (excluding those which obviously are + * pointer): + * - \%RTbool - Takes a bool value and prints 'true', 'false', or '!%d!'. + * - \%RTfile - Takes a #RTFILE value. + * - \%RTfmode - Takes a #RTFMODE value. + * - \%RTfoff - Takes a #RTFOFF value. + * - \%RTfp16 - Takes a #RTFAR16 value. + * - \%RTfp32 - Takes a #RTFAR32 value. + * - \%RTfp64 - Takes a #RTFAR64 value. + * - \%RTgid - Takes a #RTGID value. + * - \%RTino - Takes a #RTINODE value. + * - \%RTint - Takes a #RTINT value. + * - \%RTiop - Takes a #RTIOPORT value. + * - \%RTldrm - Takes a #RTLDRMOD value. + * - \%RTmac - Takes a #PCRTMAC pointer. + * - \%RTnaddr - Takes a #PCRTNETADDR value. + * - \%RTnaipv4 - Takes a #RTNETADDRIPV4 value. + * - \%RTnaipv6 - Takes a #PCRTNETADDRIPV6 value. + * - \%RTnthrd - Takes a #RTNATIVETHREAD value. + * - \%RTnthrd - Takes a #RTNATIVETHREAD value. + * - \%RTproc - Takes a #RTPROCESS value. + * - \%RTptr - Takes a #RTINTPTR or #RTUINTPTR value (but not void *). + * - \%RTreg - Takes a #RTCCUINTREG value. + * - \%RTsel - Takes a #RTSEL value. + * - \%RTsem - Takes a #RTSEMEVENT, #RTSEMEVENTMULTI, #RTSEMMUTEX, #RTSEMFASTMUTEX, or #RTSEMRW value. + * - \%RTsock - Takes a #RTSOCKET value. + * - \%RTthrd - Takes a #RTTHREAD value. + * - \%RTuid - Takes a #RTUID value. + * - \%RTuint - Takes a #RTUINT value. + * - \%RTunicp - Takes a #RTUNICP value. + * - \%RTutf16 - Takes a #RTUTF16 value. + * - \%RTuuid - Takes a #PCRTUUID and will print the UUID as a string. + * - \%RTxuint - Takes a #RTUINT or #RTINT value, formatting it as hex. + * - \%RGi - Takes a #RTGCINT value. + * - \%RGp - Takes a #RTGCPHYS value. + * - \%RGr - Takes a #RTGCUINTREG value. + * - \%RGu - Takes a #RTGCUINT value. + * - \%RGv - Takes a #RTGCPTR, #RTGCINTPTR or #RTGCUINTPTR value. + * - \%RGx - Takes a #RTGCUINT or #RTGCINT value, formatting it as hex. + * - \%RHi - Takes a #RTHCINT value. + * - \%RHp - Takes a #RTHCPHYS value. + * - \%RHr - Takes a #RTHCUINTREG value. + * - \%RHu - Takes a #RTHCUINT value. + * - \%RHv - Takes a #RTHCPTR, #RTHCINTPTR or #RTHCUINTPTR value. + * - \%RHx - Takes a #RTHCUINT or #RTHCINT value, formatting it as hex. + * - \%RRv - Takes a #RTRCPTR, #RTRCINTPTR or #RTRCUINTPTR value. + * - \%RCi - Takes a #RTINT value. + * - \%RCp - Takes a #RTCCPHYS value. + * - \%RCr - Takes a #RTCCUINTREG value. + * - \%RCu - Takes a #RTUINT value. + * - \%RCv - Takes a #uintptr_t, #intptr_t, void * value. + * - \%RCx - Takes a #RTUINT or #RTINT value, formatting it as hex. + * + * + * Group 2, the generic integer types which are prefered over relying on what + * bit-count a 'long', 'short', or 'long long' has on a platform. This are + * highly prefered for the [u]intXX_t kind of types: + * - \%RI[8|16|32|64] - Signed integer value of the specifed bit count. + * - \%RU[8|16|32|64] - Unsigned integer value of the specifed bit count. + * - \%RX[8|16|32|64] - Hexadecimal integer value of the specifed bit count. + * + * + * Group 3, hex dumpers and other complex stuff which requires more than simple + * formatting: + * - \%Rhxd - Takes a pointer to the memory which is to be dumped in typical + * hex format. Use the precision to specify the length, and the width to + * set the number of bytes per line. Default width and precision is 16. + * - \%Rhxs - Takes a pointer to the memory to be displayed as a hex string, + * i.e. a series of space separated bytes formatted as two digit hex value. + * Use the precision to specify the length. Default length is 16 bytes. + * The width, if specified, is ignored. + * - \%Rrc - Takes an integer iprt status code as argument. Will insert the + * status code define corresponding to the iprt status code. + * - \%Rrs - Takes an integer iprt status code as argument. Will insert the + * short description of the specified status code. + * - \%Rrf - Takes an integer iprt status code as argument. Will insert the + * full description of the specified status code. + * - \%Rra - Takes an integer iprt status code as argument. Will insert the + * status code define + full description. + * - \%Rwc - Takes a long Windows error code as argument. Will insert the status + * code define corresponding to the Windows error code. + * - \%Rwf - Takes a long Windows error code as argument. Will insert the + * full description of the specified status code. + * - \%Rwa - Takes a long Windows error code as argument. Will insert the + * error code define + full description. + * + * - \%Rhrc - Takes a COM/XPCOM status code as argument. Will insert the status + * code define corresponding to the Windows error code. + * - \%Rhrf - Takes a COM/XPCOM status code as argument. Will insert the + * full description of the specified status code. + * - \%Rhra - Takes a COM/XPCOM error code as argument. Will insert the + * error code define + full description. + * + * - \%Rfn - Pretty printing of a function or method. It drops the + * return code and parameter list. + * - \%Rbn - Prints the base name. For dropping the path in + * order to save space when printing a path name. + * + * On other platforms, \%Rw? simply prints the argument in a form of 0xXXXXXXXX. + * + * + * Group 4, structure dumpers: + * - \%RDtimespec - Takes a PCRTTIMESPEC. + * + * + * Group 5, XML / HTML escapers: + * - \%RMas - Takes a string pointer (const char *) and outputs + * it as an attribute value with the proper escaping. + * This typically ends up in double quotes. + * + * - \%RMes - Takes a string pointer (const char *) and outputs + * it as an element with the necessary escaping. + * + * Group 6, CPU Architecture Register dumpers: + * - \%RAx86[reg] - Takes a 64-bit register value if the register is + * 64-bit or smaller. Check the code wrt which + * registers are implemented. + * + */ + +#ifndef DECLARED_FNRTSTROUTPUT /* duplicated in iprt/log.h */ +# define DECLARED_FNRTSTROUTPUT +/** + * Output callback. + * + * @returns number of bytes written. + * @param pvArg User argument. + * @param pachChars Pointer to an array of utf-8 characters. + * @param cbChars Number of bytes in the character array pointed to by pachChars. + */ +typedef DECLCALLBACK(size_t) FNRTSTROUTPUT(void *pvArg, const char *pachChars, size_t cbChars); +/** Pointer to callback function. */ +typedef FNRTSTROUTPUT *PFNRTSTROUTPUT; +#endif + +/** Format flag. + * These are used by RTStrFormat extensions and RTStrFormatNumber, mind + * that not all flags makes sense to both of the functions. + * @{ */ +#define RTSTR_F_CAPITAL 0x0001 +#define RTSTR_F_LEFT 0x0002 +#define RTSTR_F_ZEROPAD 0x0004 +#define RTSTR_F_SPECIAL 0x0008 +#define RTSTR_F_VALSIGNED 0x0010 +#define RTSTR_F_PLUS 0x0020 +#define RTSTR_F_BLANK 0x0040 +#define RTSTR_F_WIDTH 0x0080 +#define RTSTR_F_PRECISION 0x0100 +#define RTSTR_F_THOUSAND_SEP 0x0200 + +#define RTSTR_F_BIT_MASK 0xf800 +#define RTSTR_F_8BIT 0x0800 +#define RTSTR_F_16BIT 0x1000 +#define RTSTR_F_32BIT 0x2000 +#define RTSTR_F_64BIT 0x4000 +#define RTSTR_F_128BIT 0x8000 +/** @} */ + +/** @def RTSTR_GET_BIT_FLAG + * Gets the bit flag for the specified type. + */ +#define RTSTR_GET_BIT_FLAG(type) \ + ( sizeof(type) * 8 == 32 ? RTSTR_F_32BIT \ + : sizeof(type) * 8 == 64 ? RTSTR_F_64BIT \ + : sizeof(type) * 8 == 16 ? RTSTR_F_16BIT \ + : sizeof(type) * 8 == 8 ? RTSTR_F_8BIT \ + : sizeof(type) * 8 == 128 ? RTSTR_F_128BIT \ + : 0) + + +/** + * Callback to format non-standard format specifiers. + * + * @returns The number of bytes formatted. + * @param pvArg Formatter argument. + * @param pfnOutput Pointer to output function. + * @param pvArgOutput Argument for the output function. + * @param ppszFormat Pointer to the format string pointer. Advance this till the char + * after the format specifier. + * @param pArgs Pointer to the argument list. Use this to fetch the arguments. + * @param cchWidth Format Width. -1 if not specified. + * @param cchPrecision Format Precision. -1 if not specified. + * @param fFlags Flags (RTSTR_NTFS_*). + * @param chArgSize The argument size specifier, 'l' or 'L'. + */ +typedef DECLCALLBACK(size_t) FNSTRFORMAT(void *pvArg, PFNRTSTROUTPUT pfnOutput, void *pvArgOutput, + const char **ppszFormat, va_list *pArgs, int cchWidth, + int cchPrecision, unsigned fFlags, char chArgSize); +/** Pointer to a FNSTRFORMAT() function. */ +typedef FNSTRFORMAT *PFNSTRFORMAT; + + +/** + * Partial implementation of a printf like formatter. + * It doesn't do everything correct, and there is no floating point support. + * However, it supports custom formats by the means of a format callback. + * + * @returns number of bytes formatted. + * @param pfnOutput Output worker. + * Called in two ways. Normally with a string and its length. + * For termination, it's called with NULL for string, 0 for length. + * @param pvArgOutput Argument to the output worker. + * @param pfnFormat Custom format worker. + * @param pvArgFormat Argument to the format worker. + * @param pszFormat Pointer to the format string, @see pg_rt_str_format. + * @param InArgs Argument list. + */ +RTDECL(size_t) RTStrFormatV(PFNRTSTROUTPUT pfnOutput, void *pvArgOutput, PFNSTRFORMAT pfnFormat, void *pvArgFormat, const char *pszFormat, va_list InArgs); + +/** + * Partial implementation of a printf like formatter. + * It doesn't do everything correct, and there is no floating point support. + * However, it supports custom formats by the means of a format callback. + * + * @returns number of bytes formatted. + * @param pfnOutput Output worker. + * Called in two ways. Normally with a string and its length. + * For termination, it's called with NULL for string, 0 for length. + * @param pvArgOutput Argument to the output worker. + * @param pfnFormat Custom format worker. + * @param pvArgFormat Argument to the format worker. + * @param pszFormat Pointer to the format string, @see pg_rt_str_format. + * @param ... Argument list. + */ +RTDECL(size_t) RTStrFormat(PFNRTSTROUTPUT pfnOutput, void *pvArgOutput, PFNSTRFORMAT pfnFormat, void *pvArgFormat, const char *pszFormat, ...); + +/** + * Formats an integer number according to the parameters. + * + * @returns Length of the formatted number. + * @param psz Pointer to output string buffer of sufficient size. + * @param u64Value Value to format. + * @param uiBase Number representation base. + * @param cchWidth Width. + * @param cchPrecision Precision. + * @param fFlags Flags, RTSTR_F_XXX. + */ +RTDECL(int) RTStrFormatNumber(char *psz, uint64_t u64Value, unsigned int uiBase, signed int cchWidth, signed int cchPrecision, unsigned int fFlags); + +/** + * Formats an unsigned 8-bit number. + * + * @returns The length of the formatted number or VERR_BUFFER_OVERFLOW. + * @param pszBuf The output buffer. + * @param cbBuf The size of the output buffer. + * @param u8Value The value to format. + * @param uiBase Number representation base. + * @param cchWidth Width. + * @param cchPrecision Precision. + * @param fFlags Flags, RTSTR_F_XXX. + */ +RTDECL(ssize_t) RTStrFormatU8(char *pszBuf, size_t cbBuf, uint8_t u8Value, unsigned int uiBase, + signed int cchWidth, signed int cchPrecision, uint32_t fFlags); + +/** + * Formats an unsigned 16-bit number. + * + * @returns The length of the formatted number or VERR_BUFFER_OVERFLOW. + * @param pszBuf The output buffer. + * @param cbBuf The size of the output buffer. + * @param u16Value The value to format. + * @param uiBase Number representation base. + * @param cchWidth Width. + * @param cchPrecision Precision. + * @param fFlags Flags, RTSTR_F_XXX. + */ +RTDECL(ssize_t) RTStrFormatU16(char *pszBuf, size_t cbBuf, uint16_t u16Value, unsigned int uiBase, + signed int cchWidth, signed int cchPrecision, uint32_t fFlags); + +/** + * Formats an unsigned 32-bit number. + * + * @returns The length of the formatted number or VERR_BUFFER_OVERFLOW. + * @param pszBuf The output buffer. + * @param cbBuf The size of the output buffer. + * @param u32Value The value to format. + * @param uiBase Number representation base. + * @param cchWidth Width. + * @param cchPrecision Precision. + * @param fFlags Flags, RTSTR_F_XXX. + */ +RTDECL(ssize_t) RTStrFormatU32(char *pszBuf, size_t cbBuf, uint32_t u32Value, unsigned int uiBase, + signed int cchWidth, signed int cchPrecision, uint32_t fFlags); + +/** + * Formats an unsigned 64-bit number. + * + * @returns The length of the formatted number or VERR_BUFFER_OVERFLOW. + * @param pszBuf The output buffer. + * @param cbBuf The size of the output buffer. + * @param u64Value The value to format. + * @param uiBase Number representation base. + * @param cchWidth Width. + * @param cchPrecision Precision. + * @param fFlags Flags, RTSTR_F_XXX. + */ +RTDECL(ssize_t) RTStrFormatU64(char *pszBuf, size_t cbBuf, uint64_t u64Value, unsigned int uiBase, + signed int cchWidth, signed int cchPrecision, uint32_t fFlags); + +/** + * Formats an unsigned 128-bit number. + * + * @returns The length of the formatted number or VERR_BUFFER_OVERFLOW. + * @param pszBuf The output buffer. + * @param cbBuf The size of the output buffer. + * @param pu128Value The value to format. + * @param uiBase Number representation base. + * @param cchWidth Width. + * @param cchPrecision Precision. + * @param fFlags Flags, RTSTR_F_XXX. + */ +RTDECL(ssize_t) RTStrFormatU128(char *pszBuf, size_t cbBuf, PCRTUINT128U pu128Value, unsigned int uiBase, + signed int cchWidth, signed int cchPrecision, uint32_t fFlags); + +/** + * Formats an 80-bit extended floating point number. + * + * @returns The length of the formatted number or VERR_BUFFER_OVERFLOW. + * @param pszBuf The output buffer. + * @param cbBuf The size of the output buffer. + * @param pr80Value The value to format. + * @param cchWidth Width. + * @param cchPrecision Precision. + * @param fFlags Flags, RTSTR_F_XXX. + */ +RTDECL(ssize_t) RTStrFormatR80(char *pszBuf, size_t cbBuf, PCRTFLOAT80U pr80Value, signed int cchWidth, + signed int cchPrecision, uint32_t fFlags); + +/** + * Formats an 80-bit extended floating point number, version 2. + * + * @returns The length of the formatted number or VERR_BUFFER_OVERFLOW. + * @param pszBuf The output buffer. + * @param cbBuf The size of the output buffer. + * @param pr80Value The value to format. + * @param cchWidth Width. + * @param cchPrecision Precision. + * @param fFlags Flags, RTSTR_F_XXX. + */ +RTDECL(ssize_t) RTStrFormatR80u2(char *pszBuf, size_t cbBuf, PCRTFLOAT80U2 pr80Value, signed int cchWidth, + signed int cchPrecision, uint32_t fFlags); + + + +/** + * Callback for formatting a type. + * + * This is registered using the RTStrFormatTypeRegister function and will + * be called during string formatting to handle the specified %R[type]. + * The argument for this format type is assumed to be a pointer and it's + * passed in the @a pvValue argument. + * + * @returns Length of the formatted output. + * @param pfnOutput Output worker. + * @param pvArgOutput Argument to the output worker. + * @param pszType The type name. + * @param pvValue The argument value. + * @param cchWidth Width. + * @param cchPrecision Precision. + * @param fFlags Flags (NTFS_*). + * @param pvUser The user argument. + */ +typedef DECLCALLBACK(size_t) FNRTSTRFORMATTYPE(PFNRTSTROUTPUT pfnOutput, void *pvArgOutput, + const char *pszType, void const *pvValue, + int cchWidth, int cchPrecision, unsigned fFlags, + void *pvUser); +/** Pointer to a FNRTSTRFORMATTYPE. */ +typedef FNRTSTRFORMATTYPE *PFNRTSTRFORMATTYPE; + + +/** + * Register a format handler for a type. + * + * The format handler is used to handle '%R[type]' format types, where the argument + * in the vector is a pointer value (a bit restrictive, but keeps it simple). + * + * The caller must ensure that no other thread will be making use of any of + * the dynamic formatting type facilities simultaneously with this call. + * + * @returns IPRT status code. + * @retval VINF_SUCCESS on success. + * @retval VERR_ALREADY_EXISTS if the type has already been registered. + * @retval VERR_TOO_MANY_OPEN_FILES if all the type slots has been allocated already. + * + * @param pszType The type name. + * @param pfnHandler The handler address. See FNRTSTRFORMATTYPE for details. + * @param pvUser The user argument to pass to the handler. See RTStrFormatTypeSetUser + * for how to update this later. + */ +RTDECL(int) RTStrFormatTypeRegister(const char *pszType, PFNRTSTRFORMATTYPE pfnHandler, void *pvUser); + +/** + * Deregisters a format type. + * + * The caller must ensure that no other thread will be making use of any of + * the dynamic formatting type facilities simultaneously with this call. + * + * @returns IPRT status code. + * @retval VINF_SUCCESS on success. + * @retval VERR_FILE_NOT_FOUND if not found. + * + * @param pszType The type to deregister. + */ +RTDECL(int) RTStrFormatTypeDeregister(const char *pszType); + +/** + * Sets the user argument for a type. + * + * This can be used if a user argument needs relocating in GC. + * + * @returns IPRT status code. + * @retval VINF_SUCCESS on success. + * @retval VERR_FILE_NOT_FOUND if not found. + * + * @param pszType The type to update. + * @param pvUser The new user argument value. + */ +RTDECL(int) RTStrFormatTypeSetUser(const char *pszType, void *pvUser); + + +/** + * String printf. + * + * @returns The length of the returned string (in pszBuffer) excluding the + * terminator. + * @param pszBuffer Output buffer. + * @param cchBuffer Size of the output buffer. + * @param pszFormat Pointer to the format string, @see pg_rt_str_format. + * @param args The format argument. + */ +RTDECL(size_t) RTStrPrintfV(char *pszBuffer, size_t cchBuffer, const char *pszFormat, va_list args); + +/** + * String printf. + * + * @returns The length of the returned string (in pszBuffer) excluding the + * terminator. + * @param pszBuffer Output buffer. + * @param cchBuffer Size of the output buffer. + * @param pszFormat Pointer to the format string, @see pg_rt_str_format. + * @param ... The format argument. + */ +RTDECL(size_t) RTStrPrintf(char *pszBuffer, size_t cchBuffer, const char *pszFormat, ...); + + +/** + * String printf with custom formatting. + * + * @returns The length of the returned string (in pszBuffer) excluding the + * terminator. + * @param pfnFormat Pointer to handler function for the custom formats. + * @param pvArg Argument to the pfnFormat function. + * @param pszBuffer Output buffer. + * @param cchBuffer Size of the output buffer. + * @param pszFormat Pointer to the format string, @see pg_rt_str_format. + * @param args The format argument. + */ +RTDECL(size_t) RTStrPrintfExV(PFNSTRFORMAT pfnFormat, void *pvArg, char *pszBuffer, size_t cchBuffer, const char *pszFormat, va_list args); + +/** + * String printf with custom formatting. + * + * @returns The length of the returned string (in pszBuffer) excluding the + * terminator. + * @param pfnFormat Pointer to handler function for the custom formats. + * @param pvArg Argument to the pfnFormat function. + * @param pszBuffer Output buffer. + * @param cchBuffer Size of the output buffer. + * @param pszFormat Pointer to the format string, @see pg_rt_str_format. + * @param ... The format argument. + */ +RTDECL(size_t) RTStrPrintfEx(PFNSTRFORMAT pfnFormat, void *pvArg, char *pszBuffer, size_t cchBuffer, const char *pszFormat, ...); + + +/** + * Allocating string printf (default tag). + * + * @returns The length of the string in the returned *ppszBuffer excluding the + * terminator. + * @returns -1 on failure. + * @param ppszBuffer Where to store the pointer to the allocated output buffer. + * The buffer should be freed using RTStrFree(). + * On failure *ppszBuffer will be set to NULL. + * @param pszFormat Pointer to the format string, @see pg_rt_str_format. + * @param args The format argument. + */ +#define RTStrAPrintfV(ppszBuffer, pszFormat, args) RTStrAPrintfVTag((ppszBuffer), (pszFormat), (args), RTSTR_TAG) + +/** + * Allocating string printf (custom tag). + * + * @returns The length of the string in the returned *ppszBuffer excluding the + * terminator. + * @returns -1 on failure. + * @param ppszBuffer Where to store the pointer to the allocated output buffer. + * The buffer should be freed using RTStrFree(). + * On failure *ppszBuffer will be set to NULL. + * @param pszFormat Pointer to the format string, @see pg_rt_str_format. + * @param args The format argument. + * @param pszTag Allocation tag used for statistics and such. + */ +RTDECL(int) RTStrAPrintfVTag(char **ppszBuffer, const char *pszFormat, va_list args, const char *pszTag); + +/** + * Allocating string printf. + * + * @returns The length of the string in the returned *ppszBuffer excluding the + * terminator. + * @returns -1 on failure. + * @param ppszBuffer Where to store the pointer to the allocated output buffer. + * The buffer should be freed using RTStrFree(). + * On failure *ppszBuffer will be set to NULL. + * @param pszFormat Pointer to the format string, @see pg_rt_str_format. + * @param ... The format argument. + */ +DECLINLINE(int) RTStrAPrintf(char **ppszBuffer, const char *pszFormat, ...) +{ + int cbRet; + va_list va; + va_start(va, pszFormat); + cbRet = RTStrAPrintfVTag(ppszBuffer, pszFormat, va, RTSTR_TAG); + va_end(va); + return cbRet; +} + +/** + * Allocating string printf (custom tag). + * + * @returns The length of the string in the returned *ppszBuffer excluding the + * terminator. + * @returns -1 on failure. + * @param ppszBuffer Where to store the pointer to the allocated output buffer. + * The buffer should be freed using RTStrFree(). + * On failure *ppszBuffer will be set to NULL. + * @param pszTag Allocation tag used for statistics and such. + * @param pszFormat Pointer to the format string, @see pg_rt_str_format. + * @param ... The format argument. + */ +DECLINLINE(int) RTStrAPrintfTag(char **ppszBuffer, const char *pszTag, const char *pszFormat, ...) +{ + int cbRet; + va_list va; + va_start(va, pszFormat); + cbRet = RTStrAPrintfVTag(ppszBuffer, pszFormat, va, pszTag); + va_end(va); + return cbRet; +} + +/** + * Allocating string printf, version 2. + * + * @returns Formatted string. Use RTStrFree() to free it. NULL when out of + * memory. + * @param pszFormat Pointer to the format string, @see pg_rt_str_format. + * @param args The format argument. + */ +#define RTStrAPrintf2V(pszFormat, args) RTStrAPrintf2VTag((pszFormat), (args), RTSTR_TAG) + +/** + * Allocating string printf, version 2. + * + * @returns Formatted string. Use RTStrFree() to free it. NULL when out of + * memory. + * @param pszFormat Pointer to the format string, @see pg_rt_str_format. + * @param args The format argument. + * @param pszTag Allocation tag used for statistics and such. + */ +RTDECL(char *) RTStrAPrintf2VTag(const char *pszFormat, va_list args, const char *pszTag); + +/** + * Allocating string printf, version 2 (default tag). + * + * @returns Formatted string. Use RTStrFree() to free it. NULL when out of + * memory. + * @param pszFormat Pointer to the format string, @see pg_rt_str_format. + * @param ... The format argument. + */ +DECLINLINE(char *) RTStrAPrintf2(const char *pszFormat, ...) +{ + char *pszRet; + va_list va; + va_start(va, pszFormat); + pszRet = RTStrAPrintf2VTag(pszFormat, va, RTSTR_TAG); + va_end(va); + return pszRet; +} + +/** + * Allocating string printf, version 2 (custom tag). + * + * @returns Formatted string. Use RTStrFree() to free it. NULL when out of + * memory. + * @param pszTag Allocation tag used for statistics and such. + * @param pszFormat Pointer to the format string, @see pg_rt_str_format. + * @param ... The format argument. + */ +DECLINLINE(char *) RTStrAPrintf2Tag(const char *pszTag, const char *pszFormat, ...) +{ + char *pszRet; + va_list va; + va_start(va, pszFormat); + pszRet = RTStrAPrintf2VTag(pszFormat, va, pszTag); + va_end(va); + return pszRet; +} + +/** + * Strips blankspaces from both ends of the string. + * + * @returns Pointer to first non-blank char in the string. + * @param psz The string to strip. + */ +RTDECL(char *) RTStrStrip(char *psz); + +/** + * Strips blankspaces from the start of the string. + * + * @returns Pointer to first non-blank char in the string. + * @param psz The string to strip. + */ +RTDECL(char *) RTStrStripL(const char *psz); + +/** + * Strips blankspaces from the end of the string. + * + * @returns psz. + * @param psz The string to strip. + */ +RTDECL(char *) RTStrStripR(char *psz); + +/** + * String copy with overflow handling. + * + * @retval VINF_SUCCESS on success. + * @retval VERR_BUFFER_OVERFLOW if the destination buffer is too small. The + * buffer will contain as much of the string as it can hold, fully + * terminated. + * + * @param pszDst The destination buffer. + * @param cbDst The size of the destination buffer (in bytes). + * @param pszSrc The source string. NULL is not OK. + */ +RTDECL(int) RTStrCopy(char *pszDst, size_t cbDst, const char *pszSrc); + +/** + * String copy with overflow handling. + * + * @retval VINF_SUCCESS on success. + * @retval VERR_BUFFER_OVERFLOW if the destination buffer is too small. The + * buffer will contain as much of the string as it can hold, fully + * terminated. + * + * @param pszDst The destination buffer. + * @param cbDst The size of the destination buffer (in bytes). + * @param pszSrc The source string. NULL is not OK. + * @param cchSrcMax The maximum number of chars (not code points) to + * copy from the source string, not counting the + * terminator as usual. + */ +RTDECL(int) RTStrCopyEx(char *pszDst, size_t cbDst, const char *pszSrc, size_t cchSrcMax); + +/** + * String copy with overflow handling and buffer advancing. + * + * @retval VINF_SUCCESS on success. + * @retval VERR_BUFFER_OVERFLOW if the destination buffer is too small. The + * buffer will contain as much of the string as it can hold, fully + * terminated. + * + * @param ppszDst Pointer to the destination buffer pointer. + * This will be advanced to the end of the copied + * bytes (points at the terminator). This is also + * updated on overflow. + * @param pcbDst Pointer to the destination buffer size + * variable. This will be updated in accord with + * the buffer pointer. + * @param pszSrc The source string. NULL is not OK. + */ +RTDECL(int) RTStrCopyP(char **ppszDst, size_t *pcbDst, const char *pszSrc); + +/** + * String copy with overflow handling. + * + * @retval VINF_SUCCESS on success. + * @retval VERR_BUFFER_OVERFLOW if the destination buffer is too small. The + * buffer will contain as much of the string as it can hold, fully + * terminated. + * + * @param ppszDst Pointer to the destination buffer pointer. + * This will be advanced to the end of the copied + * bytes (points at the terminator). This is also + * updated on overflow. + * @param pcbDst Pointer to the destination buffer size + * variable. This will be updated in accord with + * the buffer pointer. + * @param pszSrc The source string. NULL is not OK. + * @param cchSrcMax The maximum number of chars (not code points) to + * copy from the source string, not counting the + * terminator as usual. + */ +RTDECL(int) RTStrCopyPEx(char **ppszDst, size_t *pcbDst, const char *pszSrc, size_t cchSrcMax); + +/** + * String concatenation with overflow handling. + * + * @retval VINF_SUCCESS on success. + * @retval VERR_BUFFER_OVERFLOW if the destination buffer is too small. The + * buffer will contain as much of the string as it can hold, fully + * terminated. + * + * @param pszDst The destination buffer. + * @param cbDst The size of the destination buffer (in bytes). + * @param pszSrc The source string. NULL is not OK. + */ +RTDECL(int) RTStrCat(char *pszDst, size_t cbDst, const char *pszSrc); + +/** + * String concatenation with overflow handling. + * + * @retval VINF_SUCCESS on success. + * @retval VERR_BUFFER_OVERFLOW if the destination buffer is too small. The + * buffer will contain as much of the string as it can hold, fully + * terminated. + * + * @param pszDst The destination buffer. + * @param cbDst The size of the destination buffer (in bytes). + * @param pszSrc The source string. NULL is not OK. + * @param cchSrcMax The maximum number of chars (not code points) to + * copy from the source string, not counting the + * terminator as usual. + */ +RTDECL(int) RTStrCatEx(char *pszDst, size_t cbDst, const char *pszSrc, size_t cchSrcMax); + +/** + * String concatenation with overflow handling. + * + * @retval VINF_SUCCESS on success. + * @retval VERR_BUFFER_OVERFLOW if the destination buffer is too small. The + * buffer will contain as much of the string as it can hold, fully + * terminated. + * + * @param ppszDst Pointer to the destination buffer pointer. + * This will be advanced to the end of the copied + * bytes (points at the terminator). This is also + * updated on overflow. + * @param pcbDst Pointer to the destination buffer size + * variable. This will be updated in accord with + * the buffer pointer. + * @param pszSrc The source string. NULL is not OK. + */ +RTDECL(int) RTStrCatP(char **ppszDst, size_t *pcbDst, const char *pszSrc); + +/** + * String concatenation with overflow handling and buffer advancing. + * + * @retval VINF_SUCCESS on success. + * @retval VERR_BUFFER_OVERFLOW if the destination buffer is too small. The + * buffer will contain as much of the string as it can hold, fully + * terminated. + * + * @param ppszDst Pointer to the destination buffer pointer. + * This will be advanced to the end of the copied + * bytes (points at the terminator). This is also + * updated on overflow. + * @param pcbDst Pointer to the destination buffer size + * variable. This will be updated in accord with + * the buffer pointer. + * @param pszSrc The source string. NULL is not OK. + * @param cchSrcMax The maximum number of chars (not code points) to + * copy from the source string, not counting the + * terminator as usual. + */ +RTDECL(int) RTStrCatPEx(char **ppszDst, size_t *pcbDst, const char *pszSrc, size_t cchSrcMax); + +/** + * Performs a case sensitive string compare between two UTF-8 strings. + * + * Encoding errors are ignored by the current implementation. So, the only + * difference between this and the CRT strcmp function is the handling of + * NULL arguments. + * + * @returns < 0 if the first string less than the second string. + * @returns 0 if the first string identical to the second string. + * @returns > 0 if the first string greater than the second string. + * @param psz1 First UTF-8 string. Null is allowed. + * @param psz2 Second UTF-8 string. Null is allowed. + */ +RTDECL(int) RTStrCmp(const char *psz1, const char *psz2); + +/** + * Performs a case sensitive string compare between two UTF-8 strings, given + * a maximum string length. + * + * Encoding errors are ignored by the current implementation. So, the only + * difference between this and the CRT strncmp function is the handling of + * NULL arguments. + * + * @returns < 0 if the first string less than the second string. + * @returns 0 if the first string identical to the second string. + * @returns > 0 if the first string greater than the second string. + * @param psz1 First UTF-8 string. Null is allowed. + * @param psz2 Second UTF-8 string. Null is allowed. + * @param cchMax The maximum string length + */ +RTDECL(int) RTStrNCmp(const char *psz1, const char *psz2, size_t cchMax); + +/** + * Performs a case insensitive string compare between two UTF-8 strings. + * + * This is a simplified compare, as only the simplified lower/upper case folding + * specified by the unicode specs are used. It does not consider character pairs + * as they are used in some languages, just simple upper & lower case compares. + * + * The result is the difference between the mismatching codepoints after they + * both have been lower cased. + * + * If the string encoding is invalid the function will assert (strict builds) + * and use RTStrCmp for the remainder of the string. + * + * @returns < 0 if the first string less than the second string. + * @returns 0 if the first string identical to the second string. + * @returns > 0 if the first string greater than the second string. + * @param psz1 First UTF-8 string. Null is allowed. + * @param psz2 Second UTF-8 string. Null is allowed. + */ +RTDECL(int) RTStrICmp(const char *psz1, const char *psz2); + +/** + * Performs a case insensitive string compare between two UTF-8 strings, given a + * maximum string length. + * + * This is a simplified compare, as only the simplified lower/upper case folding + * specified by the unicode specs are used. It does not consider character pairs + * as they are used in some languages, just simple upper & lower case compares. + * + * The result is the difference between the mismatching codepoints after they + * both have been lower cased. + * + * If the string encoding is invalid the function will assert (strict builds) + * and use RTStrCmp for the remainder of the string. + * + * @returns < 0 if the first string less than the second string. + * @returns 0 if the first string identical to the second string. + * @returns > 0 if the first string greater than the second string. + * @param psz1 First UTF-8 string. Null is allowed. + * @param psz2 Second UTF-8 string. Null is allowed. + * @param cchMax Maximum string length + */ +RTDECL(int) RTStrNICmp(const char *psz1, const char *psz2, size_t cchMax); + +/** + * Locates a case sensitive substring. + * + * If any of the two strings are NULL, then NULL is returned. If the needle is + * an empty string, then the haystack is returned (i.e. matches anything). + * + * @returns Pointer to the first occurrence of the substring if found, NULL if + * not. + * + * @param pszHaystack The string to search. + * @param pszNeedle The substring to search for. + * + * @remarks The difference between this and strstr is the handling of NULL + * pointers. + */ +RTDECL(char *) RTStrStr(const char *pszHaystack, const char *pszNeedle); + +/** + * Locates a case insensitive substring. + * + * If any of the two strings are NULL, then NULL is returned. If the needle is + * an empty string, then the haystack is returned (i.e. matches anything). + * + * @returns Pointer to the first occurrence of the substring if found, NULL if + * not. + * + * @param pszHaystack The string to search. + * @param pszNeedle The substring to search for. + * + */ +RTDECL(char *) RTStrIStr(const char *pszHaystack, const char *pszNeedle); + +/** + * Converts the string to lower case. + * + * @returns Pointer to the converted string. + * @param psz The string to convert. + */ +RTDECL(char *) RTStrToLower(char *psz); + +/** + * Converts the string to upper case. + * + * @returns Pointer to the converted string. + * @param psz The string to convert. + */ +RTDECL(char *) RTStrToUpper(char *psz); + +/** + * Checks if the string is case foldable, i.e. whether it would change if + * subject to RTStrToLower or RTStrToUpper. + * + * @returns true / false + * @param psz The string in question. + */ +RTDECL(bool) RTStrIsCaseFoldable(const char *psz); + +/** + * Checks if the string is upper cased (no lower case chars in it). + * + * @returns true / false + * @param psz The string in question. + */ +RTDECL(bool) RTStrIsUpperCased(const char *psz); + +/** + * Checks if the string is lower cased (no upper case chars in it). + * + * @returns true / false + * @param psz The string in question. + */ +RTDECL(bool) RTStrIsLowerCased(const char *psz); + +/** + * Find the length of a zero-terminated byte string, given + * a max string length. + * + * See also RTStrNLenEx. + * + * @returns The string length or cbMax. The returned length does not include + * the zero terminator if it was found. + * + * @param pszString The string. + * @param cchMax The max string length. + */ +RTDECL(size_t) RTStrNLen(const char *pszString, size_t cchMax); + +/** + * Find the length of a zero-terminated byte string, given + * a max string length. + * + * See also RTStrNLen. + * + * @returns IPRT status code. + * @retval VINF_SUCCESS if the string has a length less than cchMax. + * @retval VERR_BUFFER_OVERFLOW if the end of the string wasn't found + * before cchMax was reached. + * + * @param pszString The string. + * @param cchMax The max string length. + * @param pcch Where to store the string length excluding the + * terminator. This is set to cchMax if the terminator + * isn't found. + */ +RTDECL(int) RTStrNLenEx(const char *pszString, size_t cchMax, size_t *pcch); + +RT_C_DECLS_END + +/** The maximum size argument of a memchr call. */ +#define RTSTR_MEMCHR_MAX ((~(size_t)0 >> 1) - 15) + +/** + * Find the zero terminator in a string with a limited length. + * + * @returns Pointer to the zero terminator. + * @returns NULL if the zero terminator was not found. + * + * @param pszString The string. + * @param cchMax The max string length. RTSTR_MAX is fine. + */ +#if defined(__cplusplus) && !defined(DOXYGEN_RUNNING) +DECLINLINE(char const *) RTStrEnd(char const *pszString, size_t cchMax) +{ + /* Avoid potential issues with memchr seen in glibc. + * See sysdeps/x86_64/memchr.S in glibc versions older than 2.11 */ + while (cchMax > RTSTR_MEMCHR_MAX) + { + char const *pszRet = (char const *)memchr(pszString, '\0', RTSTR_MEMCHR_MAX); + if (RT_LIKELY(pszRet)) + return pszRet; + pszString += RTSTR_MEMCHR_MAX; + cchMax -= RTSTR_MEMCHR_MAX; + } + return (char const *)memchr(pszString, '\0', cchMax); +} + +DECLINLINE(char *) RTStrEnd(char *pszString, size_t cchMax) +#else +DECLINLINE(char *) RTStrEnd(const char *pszString, size_t cchMax) +#endif +{ + /* Avoid potential issues with memchr seen in glibc. + * See sysdeps/x86_64/memchr.S in glibc versions older than 2.11 */ + while (cchMax > RTSTR_MEMCHR_MAX) + { + char *pszRet = (char *)memchr(pszString, '\0', RTSTR_MEMCHR_MAX); + if (RT_LIKELY(pszRet)) + return pszRet; + pszString += RTSTR_MEMCHR_MAX; + cchMax -= RTSTR_MEMCHR_MAX; + } + return (char *)memchr(pszString, '\0', cchMax); +} + +RT_C_DECLS_BEGIN + +/** + * Matches a simple string pattern. + * + * @returns true if the string matches the pattern, otherwise false. + * + * @param pszPattern The pattern. Special chars are '*' and '?', where the + * asterisk matches zero or more characters and question + * mark matches exactly one character. + * @param pszString The string to match against the pattern. + */ +RTDECL(bool) RTStrSimplePatternMatch(const char *pszPattern, const char *pszString); + +/** + * Matches a simple string pattern, neither which needs to be zero terminated. + * + * This is identical to RTStrSimplePatternMatch except that you can optionally + * specify the length of both the pattern and the string. The function will + * stop when it hits a string terminator or either of the lengths. + * + * @returns true if the string matches the pattern, otherwise false. + * + * @param pszPattern The pattern. Special chars are '*' and '?', where the + * asterisk matches zero or more characters and question + * mark matches exactly one character. + * @param cchPattern The pattern length. Pass RTSTR_MAX if you don't know the + * length and wish to stop at the string terminator. + * @param pszString The string to match against the pattern. + * @param cchString The string length. Pass RTSTR_MAX if you don't know the + * length and wish to match up to the string terminator. + */ +RTDECL(bool) RTStrSimplePatternNMatch(const char *pszPattern, size_t cchPattern, + const char *pszString, size_t cchString); + +/** + * Matches multiple patterns against a string. + * + * The patterns are separated by the pipe character (|). + * + * @returns true if the string matches the pattern, otherwise false. + * + * @param pszPatterns The patterns. + * @param cchPatterns The lengths of the patterns to use. Pass RTSTR_MAX to + * stop at the terminator. + * @param pszString The string to match against the pattern. + * @param cchString The string length. Pass RTSTR_MAX stop stop at the + * terminator. + * @param poffPattern Offset into the patterns string of the patttern that + * matched. If no match, this will be set to RTSTR_MAX. + * This is optional, NULL is fine. + */ +RTDECL(bool) RTStrSimplePatternMultiMatch(const char *pszPatterns, size_t cchPatterns, + const char *pszString, size_t cchString, + size_t *poffPattern); + +/** + * Compares two version strings RTStrICmp fashion. + * + * The version string is split up into sections at punctuation, spaces, + * underscores, dashes and plus signs. The sections are then split up into + * numeric and string sub-sections. Finally, the sub-sections are compared + * in a numeric or case insesntivie fashion depending on what they are. + * + * The following strings are considered to be equal: "1.0.0", "1.00.0", "1.0", + * "1". These aren't: "1.0.0r993", "1.0", "1.0r993", "1.0_Beta3", "1.1" + * + * @returns < 0 if the first string less than the second string. + * @returns 0 if the first string identical to the second string. + * @returns > 0 if the first string greater than the second string. + * + * @param pszVer1 First version string to compare. + * @param pszVer2 Second version string to compare first version with. + */ +RTDECL(int) RTStrVersionCompare(const char *pszVer1, const char *pszVer2); + + +/** @defgroup rt_str_conv String To/From Number Conversions + * @{ */ + +/** + * Converts a string representation of a number to a 64-bit unsigned number. + * + * @returns iprt status code. + * Warnings are used to indicate conversion problems. + * @retval VWRN_NUMBER_TOO_BIG + * @retval VWRN_NEGATIVE_UNSIGNED + * @retval VWRN_TRAILING_CHARS + * @retval VWRN_TRAILING_SPACES + * @retval VINF_SUCCESS + * @retval VERR_NO_DIGITS + * + * @param pszValue Pointer to the string value. + * @param ppszNext Where to store the pointer to the first char following the number. (Optional) + * @param uBase The base of the representation used. + * If 0 the function will look for known prefixes before defaulting to 10. + * @param pu64 Where to store the converted number. (optional) + */ +RTDECL(int) RTStrToUInt64Ex(const char *pszValue, char **ppszNext, unsigned uBase, uint64_t *pu64); + +/** + * Converts a string representation of a number to a 64-bit unsigned number, + * making sure the full string is converted. + * + * @returns iprt status code. + * Warnings are used to indicate conversion problems. + * @retval VWRN_NUMBER_TOO_BIG + * @retval VWRN_NEGATIVE_UNSIGNED + * @retval VINF_SUCCESS + * @retval VERR_NO_DIGITS + * @retval VERR_TRAILING_SPACES + * @retval VERR_TRAILING_CHARS + * + * @param pszValue Pointer to the string value. + * @param uBase The base of the representation used. + * If 0 the function will look for known prefixes before defaulting to 10. + * @param pu64 Where to store the converted number. (optional) + */ +RTDECL(int) RTStrToUInt64Full(const char *pszValue, unsigned uBase, uint64_t *pu64); + +/** + * Converts a string representation of a number to a 64-bit unsigned number. + * The base is guessed. + * + * @returns 64-bit unsigned number on success. + * @returns 0 on failure. + * @param pszValue Pointer to the string value. + */ +RTDECL(uint64_t) RTStrToUInt64(const char *pszValue); + +/** + * Converts a string representation of a number to a 32-bit unsigned number. + * + * @returns iprt status code. + * Warnings are used to indicate conversion problems. + * @retval VWRN_NUMBER_TOO_BIG + * @retval VWRN_NEGATIVE_UNSIGNED + * @retval VWRN_TRAILING_CHARS + * @retval VWRN_TRAILING_SPACES + * @retval VINF_SUCCESS + * @retval VERR_NO_DIGITS + * + * @param pszValue Pointer to the string value. + * @param ppszNext Where to store the pointer to the first char following the number. (Optional) + * @param uBase The base of the representation used. + * If 0 the function will look for known prefixes before defaulting to 10. + * @param pu32 Where to store the converted number. (optional) + */ +RTDECL(int) RTStrToUInt32Ex(const char *pszValue, char **ppszNext, unsigned uBase, uint32_t *pu32); + +/** + * Converts a string representation of a number to a 32-bit unsigned number, + * making sure the full string is converted. + * + * @returns iprt status code. + * Warnings are used to indicate conversion problems. + * @retval VWRN_NUMBER_TOO_BIG + * @retval VWRN_NEGATIVE_UNSIGNED + * @retval VINF_SUCCESS + * @retval VERR_NO_DIGITS + * @retval VERR_TRAILING_SPACES + * @retval VERR_TRAILING_CHARS + * + * @param pszValue Pointer to the string value. + * @param uBase The base of the representation used. + * If 0 the function will look for known prefixes before defaulting to 10. + * @param pu32 Where to store the converted number. (optional) + */ +RTDECL(int) RTStrToUInt32Full(const char *pszValue, unsigned uBase, uint32_t *pu32); + +/** + * Converts a string representation of a number to a 64-bit unsigned number. + * The base is guessed. + * + * @returns 32-bit unsigned number on success. + * @returns 0 on failure. + * @param pszValue Pointer to the string value. + */ +RTDECL(uint32_t) RTStrToUInt32(const char *pszValue); + +/** + * Converts a string representation of a number to a 16-bit unsigned number. + * + * @returns iprt status code. + * Warnings are used to indicate conversion problems. + * @retval VWRN_NUMBER_TOO_BIG + * @retval VWRN_NEGATIVE_UNSIGNED + * @retval VWRN_TRAILING_CHARS + * @retval VWRN_TRAILING_SPACES + * @retval VINF_SUCCESS + * @retval VERR_NO_DIGITS + * + * @param pszValue Pointer to the string value. + * @param ppszNext Where to store the pointer to the first char following the number. (Optional) + * @param uBase The base of the representation used. + * If 0 the function will look for known prefixes before defaulting to 10. + * @param pu16 Where to store the converted number. (optional) + */ +RTDECL(int) RTStrToUInt16Ex(const char *pszValue, char **ppszNext, unsigned uBase, uint16_t *pu16); + +/** + * Converts a string representation of a number to a 16-bit unsigned number, + * making sure the full string is converted. + * + * @returns iprt status code. + * Warnings are used to indicate conversion problems. + * @retval VWRN_NUMBER_TOO_BIG + * @retval VWRN_NEGATIVE_UNSIGNED + * @retval VINF_SUCCESS + * @retval VERR_NO_DIGITS + * @retval VERR_TRAILING_SPACES + * @retval VERR_TRAILING_CHARS + * + * @param pszValue Pointer to the string value. + * @param uBase The base of the representation used. + * If 0 the function will look for known prefixes before defaulting to 10. + * @param pu16 Where to store the converted number. (optional) + */ +RTDECL(int) RTStrToUInt16Full(const char *pszValue, unsigned uBase, uint16_t *pu16); + +/** + * Converts a string representation of a number to a 16-bit unsigned number. + * The base is guessed. + * + * @returns 16-bit unsigned number on success. + * @returns 0 on failure. + * @param pszValue Pointer to the string value. + */ +RTDECL(uint16_t) RTStrToUInt16(const char *pszValue); + +/** + * Converts a string representation of a number to a 8-bit unsigned number. + * + * @returns iprt status code. + * Warnings are used to indicate conversion problems. + * @retval VWRN_NUMBER_TOO_BIG + * @retval VWRN_NEGATIVE_UNSIGNED + * @retval VWRN_TRAILING_CHARS + * @retval VWRN_TRAILING_SPACES + * @retval VINF_SUCCESS + * @retval VERR_NO_DIGITS + * + * @param pszValue Pointer to the string value. + * @param ppszNext Where to store the pointer to the first char following the number. (Optional) + * @param uBase The base of the representation used. + * If 0 the function will look for known prefixes before defaulting to 10. + * @param pu8 Where to store the converted number. (optional) + */ +RTDECL(int) RTStrToUInt8Ex(const char *pszValue, char **ppszNext, unsigned uBase, uint8_t *pu8); + +/** + * Converts a string representation of a number to a 8-bit unsigned number, + * making sure the full string is converted. + * + * @returns iprt status code. + * Warnings are used to indicate conversion problems. + * @retval VWRN_NUMBER_TOO_BIG + * @retval VWRN_NEGATIVE_UNSIGNED + * @retval VINF_SUCCESS + * @retval VERR_NO_DIGITS + * @retval VERR_TRAILING_SPACES + * @retval VERR_TRAILING_CHARS + * + * @param pszValue Pointer to the string value. + * @param uBase The base of the representation used. + * If 0 the function will look for known prefixes before defaulting to 10. + * @param pu8 Where to store the converted number. (optional) + */ +RTDECL(int) RTStrToUInt8Full(const char *pszValue, unsigned uBase, uint8_t *pu8); + +/** + * Converts a string representation of a number to a 8-bit unsigned number. + * The base is guessed. + * + * @returns 8-bit unsigned number on success. + * @returns 0 on failure. + * @param pszValue Pointer to the string value. + */ +RTDECL(uint8_t) RTStrToUInt8(const char *pszValue); + +/** + * Converts a string representation of a number to a 64-bit signed number. + * + * @returns iprt status code. + * Warnings are used to indicate conversion problems. + * @retval VWRN_NUMBER_TOO_BIG + * @retval VWRN_TRAILING_CHARS + * @retval VWRN_TRAILING_SPACES + * @retval VINF_SUCCESS + * @retval VERR_NO_DIGITS + * + * @param pszValue Pointer to the string value. + * @param ppszNext Where to store the pointer to the first char following the number. (Optional) + * @param uBase The base of the representation used. + * If 0 the function will look for known prefixes before defaulting to 10. + * @param pi64 Where to store the converted number. (optional) + */ +RTDECL(int) RTStrToInt64Ex(const char *pszValue, char **ppszNext, unsigned uBase, int64_t *pi64); + +/** + * Converts a string representation of a number to a 64-bit signed number, + * making sure the full string is converted. + * + * @returns iprt status code. + * Warnings are used to indicate conversion problems. + * @retval VWRN_NUMBER_TOO_BIG + * @retval VINF_SUCCESS + * @retval VERR_TRAILING_CHARS + * @retval VERR_TRAILING_SPACES + * @retval VERR_NO_DIGITS + * + * @param pszValue Pointer to the string value. + * @param uBase The base of the representation used. + * If 0 the function will look for known prefixes before defaulting to 10. + * @param pi64 Where to store the converted number. (optional) + */ +RTDECL(int) RTStrToInt64Full(const char *pszValue, unsigned uBase, int64_t *pi64); + +/** + * Converts a string representation of a number to a 64-bit signed number. + * The base is guessed. + * + * @returns 64-bit signed number on success. + * @returns 0 on failure. + * @param pszValue Pointer to the string value. + */ +RTDECL(int64_t) RTStrToInt64(const char *pszValue); + +/** + * Converts a string representation of a number to a 32-bit signed number. + * + * @returns iprt status code. + * Warnings are used to indicate conversion problems. + * @retval VWRN_NUMBER_TOO_BIG + * @retval VWRN_TRAILING_CHARS + * @retval VWRN_TRAILING_SPACES + * @retval VINF_SUCCESS + * @retval VERR_NO_DIGITS + * + * @param pszValue Pointer to the string value. + * @param ppszNext Where to store the pointer to the first char following the number. (Optional) + * @param uBase The base of the representation used. + * If 0 the function will look for known prefixes before defaulting to 10. + * @param pi32 Where to store the converted number. (optional) + */ +RTDECL(int) RTStrToInt32Ex(const char *pszValue, char **ppszNext, unsigned uBase, int32_t *pi32); + +/** + * Converts a string representation of a number to a 32-bit signed number, + * making sure the full string is converted. + * + * @returns iprt status code. + * Warnings are used to indicate conversion problems. + * @retval VWRN_NUMBER_TOO_BIG + * @retval VINF_SUCCESS + * @retval VERR_TRAILING_CHARS + * @retval VERR_TRAILING_SPACES + * @retval VERR_NO_DIGITS + * + * @param pszValue Pointer to the string value. + * @param uBase The base of the representation used. + * If 0 the function will look for known prefixes before defaulting to 10. + * @param pi32 Where to store the converted number. (optional) + */ +RTDECL(int) RTStrToInt32Full(const char *pszValue, unsigned uBase, int32_t *pi32); + +/** + * Converts a string representation of a number to a 32-bit signed number. + * The base is guessed. + * + * @returns 32-bit signed number on success. + * @returns 0 on failure. + * @param pszValue Pointer to the string value. + */ +RTDECL(int32_t) RTStrToInt32(const char *pszValue); + +/** + * Converts a string representation of a number to a 16-bit signed number. + * + * @returns iprt status code. + * Warnings are used to indicate conversion problems. + * @retval VWRN_NUMBER_TOO_BIG + * @retval VWRN_TRAILING_CHARS + * @retval VWRN_TRAILING_SPACES + * @retval VINF_SUCCESS + * @retval VERR_NO_DIGITS + * + * @param pszValue Pointer to the string value. + * @param ppszNext Where to store the pointer to the first char following the number. (Optional) + * @param uBase The base of the representation used. + * If 0 the function will look for known prefixes before defaulting to 10. + * @param pi16 Where to store the converted number. (optional) + */ +RTDECL(int) RTStrToInt16Ex(const char *pszValue, char **ppszNext, unsigned uBase, int16_t *pi16); + +/** + * Converts a string representation of a number to a 16-bit signed number, + * making sure the full string is converted. + * + * @returns iprt status code. + * Warnings are used to indicate conversion problems. + * @retval VWRN_NUMBER_TOO_BIG + * @retval VINF_SUCCESS + * @retval VERR_TRAILING_CHARS + * @retval VERR_TRAILING_SPACES + * @retval VERR_NO_DIGITS + * + * @param pszValue Pointer to the string value. + * @param uBase The base of the representation used. + * If 0 the function will look for known prefixes before defaulting to 10. + * @param pi16 Where to store the converted number. (optional) + */ +RTDECL(int) RTStrToInt16Full(const char *pszValue, unsigned uBase, int16_t *pi16); + +/** + * Converts a string representation of a number to a 16-bit signed number. + * The base is guessed. + * + * @returns 16-bit signed number on success. + * @returns 0 on failure. + * @param pszValue Pointer to the string value. + */ +RTDECL(int16_t) RTStrToInt16(const char *pszValue); + +/** + * Converts a string representation of a number to a 8-bit signed number. + * + * @returns iprt status code. + * Warnings are used to indicate conversion problems. + * @retval VWRN_NUMBER_TOO_BIG + * @retval VWRN_TRAILING_CHARS + * @retval VWRN_TRAILING_SPACES + * @retval VINF_SUCCESS + * @retval VERR_NO_DIGITS + * + * @param pszValue Pointer to the string value. + * @param ppszNext Where to store the pointer to the first char following the number. (Optional) + * @param uBase The base of the representation used. + * If 0 the function will look for known prefixes before defaulting to 10. + * @param pi8 Where to store the converted number. (optional) + */ +RTDECL(int) RTStrToInt8Ex(const char *pszValue, char **ppszNext, unsigned uBase, int8_t *pi8); + +/** + * Converts a string representation of a number to a 8-bit signed number, + * making sure the full string is converted. + * + * @returns iprt status code. + * Warnings are used to indicate conversion problems. + * @retval VWRN_NUMBER_TOO_BIG + * @retval VINF_SUCCESS + * @retval VERR_TRAILING_CHARS + * @retval VERR_TRAILING_SPACES + * @retval VERR_NO_DIGITS + * + * @param pszValue Pointer to the string value. + * @param uBase The base of the representation used. + * If 0 the function will look for known prefixes before defaulting to 10. + * @param pi8 Where to store the converted number. (optional) + */ +RTDECL(int) RTStrToInt8Full(const char *pszValue, unsigned uBase, int8_t *pi8); + +/** + * Converts a string representation of a number to a 8-bit signed number. + * The base is guessed. + * + * @returns 8-bit signed number on success. + * @returns 0 on failure. + * @param pszValue Pointer to the string value. + */ +RTDECL(int8_t) RTStrToInt8(const char *pszValue); + +/** + * Formats a buffer stream as hex bytes. + * + * The default is no separating spaces or line breaks or anything. + * + * @returns IPRT status code. + * @retval VERR_INVALID_POINTER if any of the pointers are wrong. + * @retval VERR_BUFFER_OVERFLOW if the buffer is insufficent to hold the bytes. + * + * @param pszBuf Output string buffer. + * @param cchBuf The size of the output buffer. + * @param pv Pointer to the bytes to stringify. + * @param cb The number of bytes to stringify. + * @param fFlags Combination of RTSTRPRINTHEXBYTES_F_XXX values. + * @sa RTUtf16PrintHexBytes. + */ +RTDECL(int) RTStrPrintHexBytes(char *pszBuf, size_t cchBuf, void const *pv, size_t cb, uint32_t fFlags); +/** @name RTSTRPRINTHEXBYTES_F_XXX - flags for RTStrPrintHexBytes and RTUtf16PritnHexBytes. + * @{ */ +/** Upper case hex digits, the default is lower case. */ +#define RTSTRPRINTHEXBYTES_F_UPPER RT_BIT(0) +/** @} */ + +/** + * Converts a string of hex bytes back into binary data. + * + * @returns IPRT status code. + * @retval VERR_INVALID_POINTER if any of the pointers are wrong. + * @retval VERR_BUFFER_OVERFLOW if the string contains too many hex bytes. + * @retval VERR_BUFFER_UNDERFLOW if there aren't enough hex bytes to fill up + * the output buffer. + * @retval VERR_UNEVEN_INPUT if the input contains a half byte. + * @retval VERR_NO_DIGITS + * @retval VWRN_TRAILING_CHARS + * @retval VWRN_TRAILING_SPACES + * + * @param pszHex The string containing the hex bytes. + * @param pv Output buffer. + * @param cb The size of the output buffer. + * @param fFlags Must be zero, reserved for future use. + */ +RTDECL(int) RTStrConvertHexBytes(char const *pszHex, void *pv, size_t cb, uint32_t fFlags); + +/** @} */ + + +/** @defgroup rt_str_space Unique String Space + * @{ + */ + +/** Pointer to a string name space container node core. */ +typedef struct RTSTRSPACECORE *PRTSTRSPACECORE; +/** Pointer to a pointer to a string name space container node core. */ +typedef PRTSTRSPACECORE *PPRTSTRSPACECORE; + +/** + * String name space container node core. + */ +typedef struct RTSTRSPACECORE +{ + /** Hash key. Don't touch. */ + uint32_t Key; + /** Pointer to the left leaf node. Don't touch. */ + PRTSTRSPACECORE pLeft; + /** Pointer to the left right node. Don't touch. */ + PRTSTRSPACECORE pRight; + /** Pointer to the list of string with the same key. Don't touch. */ + PRTSTRSPACECORE pList; + /** Height of this tree: max(heigth(left), heigth(right)) + 1. Don't touch */ + unsigned char uchHeight; + /** The string length. Read only! */ + size_t cchString; + /** Pointer to the string. Read only! */ + const char *pszString; +} RTSTRSPACECORE; + +/** String space. (Initialize with NULL.) */ +typedef PRTSTRSPACECORE RTSTRSPACE; +/** Pointer to a string space. */ +typedef PPRTSTRSPACECORE PRTSTRSPACE; + + +/** + * Inserts a string into a unique string space. + * + * @returns true on success. + * @returns false if the string collided with an existing string. + * @param pStrSpace The space to insert it into. + * @param pStr The string node. + */ +RTDECL(bool) RTStrSpaceInsert(PRTSTRSPACE pStrSpace, PRTSTRSPACECORE pStr); + +/** + * Removes a string from a unique string space. + * + * @returns Pointer to the removed string node. + * @returns NULL if the string was not found in the string space. + * @param pStrSpace The space to remove it from. + * @param pszString The string to remove. + */ +RTDECL(PRTSTRSPACECORE) RTStrSpaceRemove(PRTSTRSPACE pStrSpace, const char *pszString); + +/** + * Gets a string from a unique string space. + * + * @returns Pointer to the string node. + * @returns NULL if the string was not found in the string space. + * @param pStrSpace The space to get it from. + * @param pszString The string to get. + */ +RTDECL(PRTSTRSPACECORE) RTStrSpaceGet(PRTSTRSPACE pStrSpace, const char *pszString); + +/** + * Gets a string from a unique string space. + * + * @returns Pointer to the string node. + * @returns NULL if the string was not found in the string space. + * @param pStrSpace The space to get it from. + * @param pszString The string to get. + * @param cchMax The max string length to evaluate. Passing + * RTSTR_MAX is ok and makes it behave just like + * RTStrSpaceGet. + */ +RTDECL(PRTSTRSPACECORE) RTStrSpaceGetN(PRTSTRSPACE pStrSpace, const char *pszString, size_t cchMax); + +/** + * Callback function for RTStrSpaceEnumerate() and RTStrSpaceDestroy(). + * + * @returns 0 on continue. + * @returns Non-zero to aborts the operation. + * @param pStr The string node + * @param pvUser The user specified argument. + */ +typedef DECLCALLBACK(int) FNRTSTRSPACECALLBACK(PRTSTRSPACECORE pStr, void *pvUser); +/** Pointer to callback function for RTStrSpaceEnumerate() and RTStrSpaceDestroy(). */ +typedef FNRTSTRSPACECALLBACK *PFNRTSTRSPACECALLBACK; + +/** + * Destroys the string space. + * + * The caller supplies a callback which will be called for each of the string + * nodes in for freeing their memory and other resources. + * + * @returns 0 or what ever non-zero return value pfnCallback returned + * when aborting the destruction. + * @param pStrSpace The space to destroy. + * @param pfnCallback The callback. + * @param pvUser The user argument. + */ +RTDECL(int) RTStrSpaceDestroy(PRTSTRSPACE pStrSpace, PFNRTSTRSPACECALLBACK pfnCallback, void *pvUser); + +/** + * Enumerates the string space. + * The caller supplies a callback which will be called for each of + * the string nodes. + * + * @returns 0 or what ever non-zero return value pfnCallback returned + * when aborting the destruction. + * @param pStrSpace The space to enumerate. + * @param pfnCallback The callback. + * @param pvUser The user argument. + */ +RTDECL(int) RTStrSpaceEnumerate(PRTSTRSPACE pStrSpace, PFNRTSTRSPACECALLBACK pfnCallback, void *pvUser); + +/** @} */ + + +/** @defgroup rt_str_hash Sting hashing + * @{ */ + +/** + * Hashes the given string using algorithm \#1. + * + * @returns String hash. + * @param pszString The string to hash. + */ +RTDECL(uint32_t) RTStrHash1(const char *pszString); + +/** + * Hashes the given string using algorithm \#1. + * + * @returns String hash. + * @param pszString The string to hash. + * @param cchString The max length to hash. Hashing will stop if the + * terminator character is encountered first. Passing + * RTSTR_MAX is fine. + */ +RTDECL(uint32_t) RTStrHash1N(const char *pszString, size_t cchString); + +/** + * Hashes the given strings as if they were concatenated using algorithm \#1. + * + * @returns String hash. + * @param cPairs The number of string / length pairs in the + * ellipsis. + * @param ... List of string (const char *) and length + * (size_t) pairs. Passing RTSTR_MAX as the size is + * fine. + */ +RTDECL(uint32_t) RTStrHash1ExN(size_t cPairs, ...); + +/** + * Hashes the given strings as if they were concatenated using algorithm \#1. + * + * @returns String hash. + * @param cPairs The number of string / length pairs in the @a va. + * @param va List of string (const char *) and length + * (size_t) pairs. Passing RTSTR_MAX as the size is + * fine. + */ +RTDECL(uint32_t) RTStrHash1ExNV(size_t cPairs, va_list va); + +/** @} */ + + +/** @defgroup rt_str_utf16 UTF-16 String Manipulation + * @{ + */ + +/** + * Allocates memory for UTF-16 string storage (default tag). + * + * You should normally not use this function, except if there is some very + * custom string handling you need doing that isn't covered by any of the other + * APIs. + * + * @returns Pointer to the allocated UTF-16 string. The first wide char is + * always set to the string terminator char, the contents of the + * remainder of the memory is undefined. The string must be freed by + * calling RTUtf16Free. + * + * NULL is returned if the allocation failed. Please translate this to + * VERR_NO_UTF16_MEMORY and not VERR_NO_MEMORY. Also consider + * RTUtf16AllocEx if an IPRT status code is required. + * + * @param cb How many bytes to allocate, will be rounded up + * to a multiple of two. If this is zero, we will + * allocate a terminator wide char anyway. + */ +#define RTUtf16Alloc(cb) RTUtf16AllocTag((cb), RTSTR_TAG) + +/** + * Allocates memory for UTF-16 string storage (custom tag). + * + * You should normally not use this function, except if there is some very + * custom string handling you need doing that isn't covered by any of the other + * APIs. + * + * @returns Pointer to the allocated UTF-16 string. The first wide char is + * always set to the string terminator char, the contents of the + * remainder of the memory is undefined. The string must be freed by + * calling RTUtf16Free. + * + * NULL is returned if the allocation failed. Please translate this to + * VERR_NO_UTF16_MEMORY and not VERR_NO_MEMORY. Also consider + * RTUtf16AllocExTag if an IPRT status code is required. + * + * @param cb How many bytes to allocate, will be rounded up + * to a multiple of two. If this is zero, we will + * allocate a terminator wide char anyway. + * @param pszTag Allocation tag used for statistics and such. + */ +RTDECL(PRTUTF16) RTUtf16AllocTag(size_t cb, const char *pszTag); + + +/** + * Free a UTF-16 string allocated by RTStrToUtf16(), RTStrToUtf16Ex(), + * RTLatin1ToUtf16(), RTLatin1ToUtf16Ex(), RTUtf16Dup() or RTUtf16DupEx(). + * + * @returns iprt status code. + * @param pwszString The UTF-16 string to free. NULL is accepted. + */ +RTDECL(void) RTUtf16Free(PRTUTF16 pwszString); + +/** + * Allocates a new copy of the specified UTF-16 string (default tag). + * + * @returns Pointer to the allocated string copy. Use RTUtf16Free() to free it. + * @returns NULL when out of memory. + * @param pwszString UTF-16 string to duplicate. + * @remark This function will not make any attempt to validate the encoding. + */ +#define RTUtf16Dup(pwszString) RTUtf16DupTag((pwszString), RTSTR_TAG) + +/** + * Allocates a new copy of the specified UTF-16 string (custom tag). + * + * @returns Pointer to the allocated string copy. Use RTUtf16Free() to free it. + * @returns NULL when out of memory. + * @param pwszString UTF-16 string to duplicate. + * @param pszTag Allocation tag used for statistics and such. + * @remark This function will not make any attempt to validate the encoding. + */ +RTDECL(PRTUTF16) RTUtf16DupTag(PCRTUTF16 pwszString, const char *pszTag); + +/** + * Allocates a new copy of the specified UTF-16 string (default tag). + * + * @returns iprt status code. + * @param ppwszString Receives pointer of the allocated UTF-16 string. + * The returned pointer must be freed using RTUtf16Free(). + * @param pwszString UTF-16 string to duplicate. + * @param cwcExtra Number of extra RTUTF16 items to allocate. + * @remark This function will not make any attempt to validate the encoding. + */ +#define RTUtf16DupEx(ppwszString, pwszString, cwcExtra) \ + RTUtf16DupExTag((ppwszString), (pwszString), (cwcExtra), RTSTR_TAG) + +/** + * Allocates a new copy of the specified UTF-16 string (custom tag). + * + * @returns iprt status code. + * @param ppwszString Receives pointer of the allocated UTF-16 string. + * The returned pointer must be freed using RTUtf16Free(). + * @param pwszString UTF-16 string to duplicate. + * @param cwcExtra Number of extra RTUTF16 items to allocate. + * @param pszTag Allocation tag used for statistics and such. + * @remark This function will not make any attempt to validate the encoding. + */ +RTDECL(int) RTUtf16DupExTag(PRTUTF16 *ppwszString, PCRTUTF16 pwszString, size_t cwcExtra, const char *pszTag); + +/** + * Returns the length of a UTF-16 string in UTF-16 characters + * without trailing '\\0'. + * + * Surrogate pairs counts as two UTF-16 characters here. Use RTUtf16CpCnt() + * to get the exact number of code points in the string. + * + * @returns The number of RTUTF16 items in the string. + * @param pwszString Pointer the UTF-16 string. + * @remark This function will not make any attempt to validate the encoding. + */ +RTDECL(size_t) RTUtf16Len(PCRTUTF16 pwszString); + +/** + * Find the length of a zero-terminated byte string, given a max string length. + * + * @returns The string length or cbMax. The returned length does not include + * the zero terminator if it was found. + * + * @param pwszString The string. + * @param cwcMax The max string length in RTUTF16s. + * @sa RTUtf16NLenEx, RTStrNLen. + */ +RTDECL(size_t) RTUtf16NLen(PCRTUTF16 pwszString, size_t cwcMax); + +/** + * Find the length of a zero-terminated byte string, given + * a max string length. + * + * @returns IPRT status code. + * @retval VINF_SUCCESS if the string has a length less than cchMax. + * @retval VERR_BUFFER_OVERFLOW if the end of the string wasn't found + * before cwcMax was reached. + * + * @param pwszString The string. + * @param cwcMax The max string length in RTUTF16s. + * @param pcwc Where to store the string length excluding the + * terminator. This is set to cwcMax if the terminator + * isn't found. + * @sa RTUtf16NLen, RTStrNLenEx. + */ +RTDECL(int) RTUtf16NLenEx(PCRTUTF16 pwszString, size_t cwcMax, size_t *pcwc); + +/** + * Find the zero terminator in a string with a limited length. + * + * @returns Pointer to the zero terminator. + * @returns NULL if the zero terminator was not found. + * + * @param pwszString The string. + * @param cwcMax The max string length. RTSTR_MAX is fine. + */ +RTDECL(PCRTUTF16) RTUtf16End(PCRTUTF16 pwszString, size_t cwcMax); + +/** + * Strips blankspaces from both ends of the string. + * + * @returns Pointer to first non-blank char in the string. + * @param pwsz The string to strip. + */ +RTDECL(PRTUTF16) RTUtf16Strip(PRTUTF16 pwsz); + +/** + * Strips blankspaces from the start of the string. + * + * @returns Pointer to first non-blank char in the string. + * @param pwsz The string to strip. + */ +RTDECL(PRTUTF16) RTUtf16StripL(PCRTUTF16 pwsz); + +/** + * Strips blankspaces from the end of the string. + * + * @returns pwsz. + * @param pwsz The string to strip. + */ +RTDECL(PRTUTF16) RTUtf16StripR(PRTUTF16 pwsz); + +/** + * String copy with overflow handling. + * + * @retval VINF_SUCCESS on success. + * @retval VERR_BUFFER_OVERFLOW if the destination buffer is too small. The + * buffer will contain as much of the string as it can hold, fully + * terminated. + * + * @param pwszDst The destination buffer. + * @param cwcDst The size of the destination buffer in RTUTF16s. + * @param pwszSrc The source string. NULL is not OK. + */ +RTDECL(int) RTUtf16Copy(PRTUTF16 pwszDst, size_t cwcDst, PCRTUTF16 pwszSrc); + +/** + * String copy with overflow handling, ASCII source. + * + * @retval VINF_SUCCESS on success. + * @retval VERR_BUFFER_OVERFLOW if the destination buffer is too small. The + * buffer will contain as much of the string as it can hold, fully + * terminated. + * + * @param pwszDst The destination buffer. + * @param cwcDst The size of the destination buffer in RTUTF16s. + * @param pszSrc The source string, pure ASCII. NULL is not OK. + */ +RTDECL(int) RTUtf16CopyAscii(PRTUTF16 pwszDst, size_t cwcDst, const char *pszSrc); + +/** + * String copy with overflow handling. + * + * @retval VINF_SUCCESS on success. + * @retval VERR_BUFFER_OVERFLOW if the destination buffer is too small. The + * buffer will contain as much of the string as it can hold, fully + * terminated. + * + * @param pwszDst The destination buffer. + * @param cwcDst The size of the destination buffer in RTUTF16s. + * @param pwszSrc The source string. NULL is not OK. + * @param cwcSrcMax The maximum number of chars (not code points) to + * copy from the source string, not counting the + * terminator as usual. + */ +RTDECL(int) RTUtf16CopyEx(PRTUTF16 pwszDst, size_t cwcDst, PCRTUTF16 pwszSrc, size_t cwcSrcMax); + +/** + * String concatenation with overflow handling. + * + * @retval VINF_SUCCESS on success. + * @retval VERR_BUFFER_OVERFLOW if the destination buffer is too small. The + * buffer will contain as much of the string as it can hold, fully + * terminated. + * + * @param pszDst The destination buffer. + * @param cwcDst The size of the destination buffer in RTUTF16s. + * @param pwszSrc The source string. NULL is not OK. + */ +RTDECL(int) RTUtf16Cat(PRTUTF16 pwszDst, size_t cwcDst, PCRTUTF16 pwszSrc); + +/** + * String concatenation with overflow handling, ASCII source. + * + * @retval VINF_SUCCESS on success. + * @retval VERR_BUFFER_OVERFLOW if the destination buffer is too small. The + * buffer will contain as much of the string as it can hold, fully + * terminated. + * + * @param pszDst The destination buffer. + * @param cwcDst The size of the destination buffer in RTUTF16s. + * @param pszSrc The source string, pure ASCII. NULL is not OK. + */ +RTDECL(int) RTUtf16CatAscii(PRTUTF16 pwszDst, size_t cwcDst, const char *pwszSrc); + +/** + * String concatenation with overflow handling. + * + * @retval VINF_SUCCESS on success. + * @retval VERR_BUFFER_OVERFLOW if the destination buffer is too small. The + * buffer will contain as much of the string as it can hold, fully + * terminated. + * + * @param pwszDst The destination buffer. + * @param cwcDst The size of the destination buffer in RTUTF16s. + * @param pwszSrc The source string. NULL is not OK. + * @param cwcSrcMax The maximum number of UTF-16 chars (not code + * points) to copy from the source string, not + * counting the terminator as usual. + */ +RTDECL(int) RTUtf16CatEx(PRTUTF16 pwszDst, size_t cwcDst, PCRTUTF16 pwszSrc, size_t cwcSrcMax); + +/** + * Performs a case sensitive string compare between two UTF-16 strings. + * + * @returns < 0 if the first string less than the second string.s + * @returns 0 if the first string identical to the second string. + * @returns > 0 if the first string greater than the second string. + * @param pwsz1 First UTF-16 string. Null is allowed. + * @param pwsz2 Second UTF-16 string. Null is allowed. + * @remark This function will not make any attempt to validate the encoding. + */ +RTDECL(int) RTUtf16Cmp(PCRTUTF16 pwsz1, PCRTUTF16 pwsz2); + +/** + * Performs a case sensitive string compare between an UTF-16 string and a pure + * ASCII string. + * + * @returns < 0 if the first string less than the second string.s + * @returns 0 if the first string identical to the second string. + * @returns > 0 if the first string greater than the second string. + * @param pwsz1 First UTF-16 string. Null is allowed. + * @param psz2 Second string, pure ASCII. Null is allowed. + * @remark This function will not make any attempt to validate the encoding. + */ +RTDECL(int) RTUtf16CmpAscii(PCRTUTF16 pwsz1, const char *psz2); + +/** + * Performs a case insensitive string compare between two UTF-16 strings. + * + * This is a simplified compare, as only the simplified lower/upper case folding + * specified by the unicode specs are used. It does not consider character pairs + * as they are used in some languages, just simple upper & lower case compares. + * + * @returns < 0 if the first string less than the second string. + * @returns 0 if the first string identical to the second string. + * @returns > 0 if the first string greater than the second string. + * @param pwsz1 First UTF-16 string. Null is allowed. + * @param pwsz2 Second UTF-16 string. Null is allowed. + */ +RTDECL(int) RTUtf16ICmp(PCRTUTF16 pwsz1, PCRTUTF16 pwsz2); + +/** + * Performs a case insensitive string compare between an UTF-16 string and an + * pure ASCII string. + * + * Since this compare only takes cares about the first 128 codepoints in + * unicode, no tables are needed and there aren't any real complications. + * + * @returns < 0 if the first string less than the second string. + * @returns 0 if the first string identical to the second string. + * @returns > 0 if the first string greater than the second string. + * @param pwsz1 First UTF-16 string. Null is allowed. + * @param psz2 Second string, pure ASCII. Null is allowed. + */ +RTDECL(int) RTUtf16ICmpAscii(PCRTUTF16 pwsz1, const char *psz2); + +/** + * Performs a case insensitive string compare between two UTF-16 strings + * using the current locale of the process (if applicable). + * + * This differs from RTUtf16ICmp() in that it will try, if a locale with the + * required data is available, to do a correct case-insensitive compare. It + * follows that it is more complex and thereby likely to be more expensive. + * + * @returns < 0 if the first string less than the second string. + * @returns 0 if the first string identical to the second string. + * @returns > 0 if the first string greater than the second string. + * @param pwsz1 First UTF-16 string. Null is allowed. + * @param pwsz2 Second UTF-16 string. Null is allowed. + */ +RTDECL(int) RTUtf16LocaleICmp(PCRTUTF16 pwsz1, PCRTUTF16 pwsz2); + +/** + * Folds a UTF-16 string to lowercase. + * + * This is a very simple folding; is uses the simple lowercase + * code point, it is not related to any locale just the most common + * lowercase codepoint setup by the unicode specs, and it will not + * create new surrogate pairs or remove existing ones. + * + * @returns Pointer to the passed in string. + * @param pwsz The string to fold. + */ +RTDECL(PRTUTF16) RTUtf16ToLower(PRTUTF16 pwsz); + +/** + * Folds a UTF-16 string to uppercase. + * + * This is a very simple folding; is uses the simple uppercase + * code point, it is not related to any locale just the most common + * uppercase codepoint setup by the unicode specs, and it will not + * create new surrogate pairs or remove existing ones. + * + * @returns Pointer to the passed in string. + * @param pwsz The string to fold. + */ +RTDECL(PRTUTF16) RTUtf16ToUpper(PRTUTF16 pwsz); + +/** + * Validates the UTF-16 encoding of the string. + * + * @returns iprt status code. + * @param pwsz The string. + */ +RTDECL(int) RTUtf16ValidateEncoding(PCRTUTF16 pwsz); + +/** + * Validates the UTF-16 encoding of the string. + * + * @returns iprt status code. + * @param pwsz The string. + * @param cwc The max string length (/ size) in UTF-16 units. Use + * RTSTR_MAX to process the entire string. + * @param fFlags Combination of RTSTR_VALIDATE_ENCODING_XXX flags. + */ +RTDECL(int) RTUtf16ValidateEncodingEx(PCRTUTF16 pwsz, size_t cwc, uint32_t fFlags); + +/** + * Checks if the UTF-16 encoding is valid. + * + * @returns true / false. + * @param pwsz The string. + */ +RTDECL(bool) RTUtf16IsValidEncoding(PCRTUTF16 pwsz); + +/** + * Sanitise a (valid) UTF-16 string by replacing all characters outside a white + * list in-place by an ASCII replacement character. Multi-byte characters will + * be replaced byte by byte. + * + * @returns The number of code points replaced, or a negative value if the + * string is not correctly encoded. In this last case the string + * may be partially processed. + * @param pwsz The string to sanitise. + * @param puszValidSets A zero-terminated array of pairs of Unicode points. + * Each pair is the start and end point of a range, + * and the union of these ranges forms the white list. + * @param chReplacement The ASCII replacement character. + */ +RTDECL(ssize_t) RTUtf16PurgeComplementSet(PRTUTF16 pwsz, PCRTUNICP puszValidSet, char chReplacement); + +/** + * Translate a UTF-16 string into a UTF-8 allocating the result buffer (default + * tag). + * + * @returns iprt status code. + * @param pwszString UTF-16 string to convert. + * @param ppszString Receives pointer of allocated UTF-8 string on + * success, and is always set to NULL on failure. + * The returned pointer must be freed using RTStrFree(). + */ +#define RTUtf16ToUtf8(pwszString, ppszString) RTUtf16ToUtf8Tag((pwszString), (ppszString), RTSTR_TAG) + +/** + * Translate a UTF-16 string into a UTF-8 allocating the result buffer. + * + * @returns iprt status code. + * @param pwszString UTF-16 string to convert. + * @param ppszString Receives pointer of allocated UTF-8 string on + * success, and is always set to NULL on failure. + * The returned pointer must be freed using RTStrFree(). + * @param pszTag Allocation tag used for statistics and such. + */ +RTDECL(int) RTUtf16ToUtf8Tag(PCRTUTF16 pwszString, char **ppszString, const char *pszTag); + +/** + * Translates UTF-16 to UTF-8 using buffer provided by the caller or a fittingly + * sized buffer allocated by the function (default tag). + * + * @returns iprt status code. + * @param pwszString The UTF-16 string to convert. + * @param cwcString The number of RTUTF16 items to translate from pwszString. + * The translation will stop when reaching cwcString or the terminator ('\\0'). + * Use RTSTR_MAX to translate the entire string. + * @param ppsz If cch is non-zero, this must either be pointing to a pointer to + * a buffer of the specified size, or pointer to a NULL pointer. + * If *ppsz is NULL or cch is zero a buffer of at least cch chars + * will be allocated to hold the translated string. + * If a buffer was requested it must be freed using RTStrFree(). + * @param cch The buffer size in chars (the type). This includes the terminator. + * @param pcch Where to store the length of the translated string, + * excluding the terminator. (Optional) + * + * This may be set under some error conditions, + * however, only for VERR_BUFFER_OVERFLOW and + * VERR_NO_STR_MEMORY will it contain a valid string + * length that can be used to resize the buffer. + */ +#define RTUtf16ToUtf8Ex(pwszString, cwcString, ppsz, cch, pcch) \ + RTUtf16ToUtf8ExTag((pwszString), (cwcString), (ppsz), (cch), (pcch), RTSTR_TAG) + +/** + * Translates UTF-16 to UTF-8 using buffer provided by the caller or a fittingly + * sized buffer allocated by the function (custom tag). + * + * @returns iprt status code. + * @param pwszString The UTF-16 string to convert. + * @param cwcString The number of RTUTF16 items to translate from pwszString. + * The translation will stop when reaching cwcString or the terminator ('\\0'). + * Use RTSTR_MAX to translate the entire string. + * @param ppsz If cch is non-zero, this must either be pointing to a pointer to + * a buffer of the specified size, or pointer to a NULL pointer. + * If *ppsz is NULL or cch is zero a buffer of at least cch chars + * will be allocated to hold the translated string. + * If a buffer was requested it must be freed using RTStrFree(). + * @param cch The buffer size in chars (the type). This includes the terminator. + * @param pcch Where to store the length of the translated string, + * excluding the terminator. (Optional) + * + * This may be set under some error conditions, + * however, only for VERR_BUFFER_OVERFLOW and + * VERR_NO_STR_MEMORY will it contain a valid string + * length that can be used to resize the buffer. + * @param pszTag Allocation tag used for statistics and such. + */ +RTDECL(int) RTUtf16ToUtf8ExTag(PCRTUTF16 pwszString, size_t cwcString, char **ppsz, size_t cch, size_t *pcch, const char *pszTag); + +/** + * Calculates the length of the UTF-16 string in UTF-8 chars (bytes). + * + * This function will validate the string, and incorrectly encoded UTF-16 + * strings will be rejected. The primary purpose of this function is to + * help allocate buffers for RTUtf16ToUtf8() of the correct size. For most + * other purposes RTUtf16ToUtf8Ex() should be used. + * + * @returns Number of char (bytes). + * @returns 0 if the string was incorrectly encoded. + * @param pwsz The UTF-16 string. + */ +RTDECL(size_t) RTUtf16CalcUtf8Len(PCRTUTF16 pwsz); + +/** + * Calculates the length of the UTF-16 string in UTF-8 chars (bytes). + * + * This function will validate the string, and incorrectly encoded UTF-16 + * strings will be rejected. + * + * @returns iprt status code. + * @param pwsz The string. + * @param cwc The max string length. Use RTSTR_MAX to process the entire string. + * @param pcch Where to store the string length (in bytes). Optional. + * This is undefined on failure. + */ +RTDECL(int) RTUtf16CalcUtf8LenEx(PCRTUTF16 pwsz, size_t cwc, size_t *pcch); + +/** + * Translate a UTF-16 string into a Latin-1 (ISO-8859-1) allocating the result + * buffer (default tag). + * + * @returns iprt status code. + * @param pwszString UTF-16 string to convert. + * @param ppszString Receives pointer of allocated Latin1 string on + * success, and is always set to NULL on failure. + * The returned pointer must be freed using RTStrFree(). + */ +#define RTUtf16ToLatin1(pwszString, ppszString) RTUtf16ToLatin1Tag((pwszString), (ppszString), RTSTR_TAG) + +/** + * Translate a UTF-16 string into a Latin-1 (ISO-8859-1) allocating the result + * buffer (custom tag). + * + * @returns iprt status code. + * @param pwszString UTF-16 string to convert. + * @param ppszString Receives pointer of allocated Latin1 string on + * success, and is always set to NULL on failure. + * The returned pointer must be freed using RTStrFree(). + * @param pszTag Allocation tag used for statistics and such. + */ +RTDECL(int) RTUtf16ToLatin1Tag(PCRTUTF16 pwszString, char **ppszString, const char *pszTag); + +/** + * Translates UTF-16 to Latin-1 (ISO-8859-1) using buffer provided by the caller + * or a fittingly sized buffer allocated by the function (default tag). + * + * @returns iprt status code. + * @param pwszString The UTF-16 string to convert. + * @param cwcString The number of RTUTF16 items to translate from + * pwszString. The translation will stop when reaching + * cwcString or the terminator ('\\0'). Use RTSTR_MAX + * to translate the entire string. + * @param ppsz Pointer to the pointer to the Latin-1 string. The + * buffer can optionally be preallocated by the caller. + * + * If cch is zero, *ppsz is undefined. + * + * If cch is non-zero and *ppsz is not NULL, then this + * will be used as the output buffer. + * VERR_BUFFER_OVERFLOW will be returned if this is + * insufficient. + * + * If cch is zero or *ppsz is NULL, then a buffer of + * sufficient size is allocated. cch can be used to + * specify a minimum size of this buffer. Use + * RTUtf16Free() to free the result. + * + * @param cch The buffer size in chars (the type). This includes + * the terminator. + * @param pcch Where to store the length of the translated string, + * excluding the terminator. (Optional) + * + * This may be set under some error conditions, + * however, only for VERR_BUFFER_OVERFLOW and + * VERR_NO_STR_MEMORY will it contain a valid string + * length that can be used to resize the buffer. + */ +#define RTUtf16ToLatin1Ex(pwszString, cwcString, ppsz, cch, pcch) \ + RTUtf16ToLatin1ExTag((pwszString), (cwcString), (ppsz), (cch), (pcch), RTSTR_TAG) + +/** + * Translates UTF-16 to Latin-1 (ISO-8859-1) using buffer provided by the caller + * or a fittingly sized buffer allocated by the function (custom tag). + * + * @returns iprt status code. + * @param pwszString The UTF-16 string to convert. + * @param cwcString The number of RTUTF16 items to translate from + * pwszString. The translation will stop when reaching + * cwcString or the terminator ('\\0'). Use RTSTR_MAX + * to translate the entire string. + * @param ppsz Pointer to the pointer to the Latin-1 string. The + * buffer can optionally be preallocated by the caller. + * + * If cch is zero, *ppsz is undefined. + * + * If cch is non-zero and *ppsz is not NULL, then this + * will be used as the output buffer. + * VERR_BUFFER_OVERFLOW will be returned if this is + * insufficient. + * + * If cch is zero or *ppsz is NULL, then a buffer of + * sufficient size is allocated. cch can be used to + * specify a minimum size of this buffer. Use + * RTUtf16Free() to free the result. + * + * @param cch The buffer size in chars (the type). This includes + * the terminator. + * @param pcch Where to store the length of the translated string, + * excluding the terminator. (Optional) + * + * This may be set under some error conditions, + * however, only for VERR_BUFFER_OVERFLOW and + * VERR_NO_STR_MEMORY will it contain a valid string + * length that can be used to resize the buffer. + * @param pszTag Allocation tag used for statistics and such. + */ +RTDECL(int) RTUtf16ToLatin1ExTag(PCRTUTF16 pwszString, size_t cwcString, char **ppsz, size_t cch, size_t *pcch, const char *pszTag); + +/** + * Calculates the length of the UTF-16 string in Latin-1 (ISO-8859-1) chars. + * + * This function will validate the string, and incorrectly encoded UTF-16 + * strings will be rejected. The primary purpose of this function is to + * help allocate buffers for RTUtf16ToLatin1() of the correct size. For most + * other purposes RTUtf16ToLatin1Ex() should be used. + * + * @returns Number of char (bytes). + * @returns 0 if the string was incorrectly encoded. + * @param pwsz The UTF-16 string. + */ +RTDECL(size_t) RTUtf16CalcLatin1Len(PCRTUTF16 pwsz); + +/** + * Calculates the length of the UTF-16 string in Latin-1 (ISO-8859-1) chars. + * + * This function will validate the string, and incorrectly encoded UTF-16 + * strings will be rejected. + * + * @returns iprt status code. + * @param pwsz The string. + * @param cwc The max string length. Use RTSTR_MAX to process the + * entire string. + * @param pcch Where to store the string length (in bytes). Optional. + * This is undefined on failure. + */ +RTDECL(int) RTUtf16CalcLatin1LenEx(PCRTUTF16 pwsz, size_t cwc, size_t *pcch); + +/** + * Get the unicode code point at the given string position. + * + * @returns unicode code point. + * @returns RTUNICP_INVALID if the encoding is invalid. + * @param pwsz The string. + * + * @remark This is an internal worker for RTUtf16GetCp(). + */ +RTDECL(RTUNICP) RTUtf16GetCpInternal(PCRTUTF16 pwsz); + +/** + * Get the unicode code point at the given string position. + * + * @returns iprt status code. + * @param ppwsz Pointer to the string pointer. This will be updated to + * point to the char following the current code point. + * @param pCp Where to store the code point. + * RTUNICP_INVALID is stored here on failure. + * + * @remark This is an internal worker for RTUtf16GetCpEx(). + */ +RTDECL(int) RTUtf16GetCpExInternal(PCRTUTF16 *ppwsz, PRTUNICP pCp); + +/** + * Put the unicode code point at the given string position + * and return the pointer to the char following it. + * + * This function will not consider anything at or following the + * buffer area pointed to by pwsz. It is therefore not suitable for + * inserting code points into a string, only appending/overwriting. + * + * @returns pointer to the char following the written code point. + * @param pwsz The string. + * @param CodePoint The code point to write. + * This should not be RTUNICP_INVALID or any other + * character out of the UTF-16 range. + * + * @remark This is an internal worker for RTUtf16GetCpEx(). + */ +RTDECL(PRTUTF16) RTUtf16PutCpInternal(PRTUTF16 pwsz, RTUNICP CodePoint); + +/** + * Get the unicode code point at the given string position. + * + * @returns unicode code point. + * @returns RTUNICP_INVALID if the encoding is invalid. + * @param pwsz The string. + * + * @remark We optimize this operation by using an inline function for + * everything which isn't a surrogate pair or an endian indicator. + */ +DECLINLINE(RTUNICP) RTUtf16GetCp(PCRTUTF16 pwsz) +{ + const RTUTF16 wc = *pwsz; + if (wc < 0xd800 || (wc > 0xdfff && wc < 0xfffe)) + return wc; + return RTUtf16GetCpInternal(pwsz); +} + +/** + * Get the unicode code point at the given string position. + * + * @returns iprt status code. + * @param ppwsz Pointer to the string pointer. This will be updated to + * point to the char following the current code point. + * @param pCp Where to store the code point. + * RTUNICP_INVALID is stored here on failure. + * + * @remark We optimize this operation by using an inline function for + * everything which isn't a surrogate pair or and endian indicator. + */ +DECLINLINE(int) RTUtf16GetCpEx(PCRTUTF16 *ppwsz, PRTUNICP pCp) +{ + const RTUTF16 wc = **ppwsz; + if (wc < 0xd800 || (wc > 0xdfff && wc < 0xfffe)) + { + (*ppwsz)++; + *pCp = wc; + return VINF_SUCCESS; + } + return RTUtf16GetCpExInternal(ppwsz, pCp); +} + +/** + * Put the unicode code point at the given string position + * and return the pointer to the char following it. + * + * This function will not consider anything at or following the + * buffer area pointed to by pwsz. It is therefore not suitable for + * inserting code points into a string, only appending/overwriting. + * + * @returns pointer to the char following the written code point. + * @param pwsz The string. + * @param CodePoint The code point to write. + * This should not be RTUNICP_INVALID or any other + * character out of the UTF-16 range. + * + * @remark We optimize this operation by using an inline function for + * everything which isn't a surrogate pair or and endian indicator. + */ +DECLINLINE(PRTUTF16) RTUtf16PutCp(PRTUTF16 pwsz, RTUNICP CodePoint) +{ + if (CodePoint < 0xd800 || (CodePoint > 0xd800 && CodePoint < 0xfffe)) + { + *pwsz++ = (RTUTF16)CodePoint; + return pwsz; + } + return RTUtf16PutCpInternal(pwsz, CodePoint); +} + +/** + * Skips ahead, past the current code point. + * + * @returns Pointer to the char after the current code point. + * @param pwsz Pointer to the current code point. + * @remark This will not move the next valid code point, only past the current one. + */ +DECLINLINE(PRTUTF16) RTUtf16NextCp(PCRTUTF16 pwsz) +{ + RTUNICP Cp; + RTUtf16GetCpEx(&pwsz, &Cp); + return (PRTUTF16)pwsz; +} + +/** + * Skips backwards, to the previous code point. + * + * @returns Pointer to the char after the current code point. + * @param pwszStart Pointer to the start of the string. + * @param pwsz Pointer to the current code point. + */ +RTDECL(PRTUTF16) RTUtf16PrevCp(PCRTUTF16 pwszStart, PCRTUTF16 pwsz); + + +/** + * Checks if the UTF-16 char is the high surrogate char (i.e. + * the 1st char in the pair). + * + * @returns true if it is. + * @returns false if it isn't. + * @param wc The character to investigate. + */ +DECLINLINE(bool) RTUtf16IsHighSurrogate(RTUTF16 wc) +{ + return wc >= 0xd800 && wc <= 0xdbff; +} + +/** + * Checks if the UTF-16 char is the low surrogate char (i.e. + * the 2nd char in the pair). + * + * @returns true if it is. + * @returns false if it isn't. + * @param wc The character to investigate. + */ +DECLINLINE(bool) RTUtf16IsLowSurrogate(RTUTF16 wc) +{ + return wc >= 0xdc00 && wc <= 0xdfff; +} + + +/** + * Checks if the two UTF-16 chars form a valid surrogate pair. + * + * @returns true if they do. + * @returns false if they doesn't. + * @param wcHigh The high (1st) character. + * @param wcLow The low (2nd) character. + */ +DECLINLINE(bool) RTUtf16IsSurrogatePair(RTUTF16 wcHigh, RTUTF16 wcLow) +{ + return RTUtf16IsHighSurrogate(wcHigh) + && RTUtf16IsLowSurrogate(wcLow); +} + +/** + * Formats a buffer stream as hex bytes. + * + * The default is no separating spaces or line breaks or anything. + * + * @returns IPRT status code. + * @retval VERR_INVALID_POINTER if any of the pointers are wrong. + * @retval VERR_BUFFER_OVERFLOW if the buffer is insufficent to hold the bytes. + * + * @param pwszBuf Output string buffer. + * @param cwcBuf The size of the output buffer in RTUTF16 units. + * @param pv Pointer to the bytes to stringify. + * @param cb The number of bytes to stringify. + * @param fFlags Combination of RTSTRPRINTHEXBYTES_F_XXX values. + * @sa RTStrPrintHexBytes. + */ +RTDECL(int) RTUtf16PrintHexBytes(PRTUTF16 pwszBuf, size_t cwcBuf, void const *pv, size_t cb, uint32_t fFlags); + +/** @} */ + + +/** @defgroup rt_str_latin1 Latin-1 (ISO-8859-1) String Manipulation + * @{ + */ + +/** + * Calculates the length of the Latin-1 (ISO-8859-1) string in RTUTF16 items. + * + * @returns Number of RTUTF16 items. + * @param psz The Latin-1 string. + */ +RTDECL(size_t) RTLatin1CalcUtf16Len(const char *psz); + +/** + * Calculates the length of the Latin-1 (ISO-8859-1) string in RTUTF16 items. + * + * @returns iprt status code. + * @param psz The Latin-1 string. + * @param cch The max string length. Use RTSTR_MAX to process the + * entire string. + * @param pcwc Where to store the string length. Optional. + * This is undefined on failure. + */ +RTDECL(int) RTLatin1CalcUtf16LenEx(const char *psz, size_t cch, size_t *pcwc); + +/** + * Translate a Latin-1 (ISO-8859-1) string into a UTF-16 allocating the result + * buffer (default tag). + * + * @returns iprt status code. + * @param pszString The Latin-1 string to convert. + * @param ppwszString Receives pointer to the allocated UTF-16 string. The + * returned string must be freed using RTUtf16Free(). + */ +#define RTLatin1ToUtf16(pszString, ppwszString) RTLatin1ToUtf16Tag((pszString), (ppwszString), RTSTR_TAG) + +/** + * Translate a Latin-1 (ISO-8859-1) string into a UTF-16 allocating the result + * buffer (custom tag). + * + * @returns iprt status code. + * @param pszString The Latin-1 string to convert. + * @param ppwszString Receives pointer to the allocated UTF-16 string. The + * returned string must be freed using RTUtf16Free(). + * @param pszTag Allocation tag used for statistics and such. + */ +RTDECL(int) RTLatin1ToUtf16Tag(const char *pszString, PRTUTF16 *ppwszString, const char *pszTag); + +/** + * Translates pszString from Latin-1 (ISO-8859-1) to UTF-16, allocating the + * result buffer if requested (default tag). + * + * @returns iprt status code. + * @param pszString The Latin-1 string to convert. + * @param cchString The maximum size in chars (the type) to convert. + * The conversion stops when it reaches cchString or + * the string terminator ('\\0'). + * Use RTSTR_MAX to translate the entire string. + * @param ppwsz If cwc is non-zero, this must either be pointing + * to pointer to a buffer of the specified size, or + * pointer to a NULL pointer. + * If *ppwsz is NULL or cwc is zero a buffer of at + * least cwc items will be allocated to hold the + * translated string. If a buffer was requested it + * must be freed using RTUtf16Free(). + * @param cwc The buffer size in RTUTF16s. This includes the + * terminator. + * @param pcwc Where to store the length of the translated string, + * excluding the terminator. (Optional) + * + * This may be set under some error conditions, + * however, only for VERR_BUFFER_OVERFLOW and + * VERR_NO_STR_MEMORY will it contain a valid string + * length that can be used to resize the buffer. + */ +#define RTLatin1ToUtf16Ex(pszString, cchString, ppwsz, cwc, pcwc) \ + RTLatin1ToUtf16ExTag((pszString), (cchString), (ppwsz), (cwc), (pcwc), RTSTR_TAG) + +/** + * Translates pszString from Latin-1 (ISO-8859-1) to UTF-16, allocating the + * result buffer if requested. + * + * @returns iprt status code. + * @param pszString The Latin-1 string to convert. + * @param cchString The maximum size in chars (the type) to convert. + * The conversion stops when it reaches cchString or + * the string terminator ('\\0'). + * Use RTSTR_MAX to translate the entire string. + * @param ppwsz If cwc is non-zero, this must either be pointing + * to pointer to a buffer of the specified size, or + * pointer to a NULL pointer. + * If *ppwsz is NULL or cwc is zero a buffer of at + * least cwc items will be allocated to hold the + * translated string. If a buffer was requested it + * must be freed using RTUtf16Free(). + * @param cwc The buffer size in RTUTF16s. This includes the + * terminator. + * @param pcwc Where to store the length of the translated string, + * excluding the terminator. (Optional) + * + * This may be set under some error conditions, + * however, only for VERR_BUFFER_OVERFLOW and + * VERR_NO_STR_MEMORY will it contain a valid string + * length that can be used to resize the buffer. + * @param pszTag Allocation tag used for statistics and such. + */ +RTDECL(int) RTLatin1ToUtf16ExTag(const char *pszString, size_t cchString, + PRTUTF16 *ppwsz, size_t cwc, size_t *pcwc, const char *pszTag); + +/** @} */ + +#ifndef ___iprt_nocrt_string_h +# if defined(RT_OS_WINDOWS) +RTDECL(void *) mempcpy(void *pvDst, const void *pvSrc, size_t cb); +# endif +#endif + + +RT_C_DECLS_END + +/** @} */ + +#endif + --- linux-raspi2-4.2.0.orig/ubuntu/vbox/include/iprt/thread.h +++ linux-raspi2-4.2.0/ubuntu/vbox/include/iprt/thread.h @@ -0,0 +1,943 @@ +/** @file + * IPRT - Threads. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + +#ifndef ___iprt_thread_h +#define ___iprt_thread_h + +#include +#include +#include + + +RT_C_DECLS_BEGIN + +/** @defgroup grp_rt_thread RTThread - Thread Management + * @ingroup grp_rt + * @{ + */ + +/** + * The thread state. + */ +typedef enum RTTHREADSTATE +{ + /** The usual invalid 0 value. */ + RTTHREADSTATE_INVALID = 0, + /** The thread is being initialized. */ + RTTHREADSTATE_INITIALIZING, + /** The thread has terminated */ + RTTHREADSTATE_TERMINATED, + /** Probably running. */ + RTTHREADSTATE_RUNNING, + + /** Waiting on a critical section. */ + RTTHREADSTATE_CRITSECT, + /** Waiting on a event semaphore. */ + RTTHREADSTATE_EVENT, + /** Waiting on a event multiple wakeup semaphore. */ + RTTHREADSTATE_EVENT_MULTI, + /** Waiting on a fast mutex. */ + RTTHREADSTATE_FAST_MUTEX, + /** Waiting on a mutex. */ + RTTHREADSTATE_MUTEX, + /** Waiting on a read write semaphore, read (shared) access. */ + RTTHREADSTATE_RW_READ, + /** Waiting on a read write semaphore, write (exclusive) access. */ + RTTHREADSTATE_RW_WRITE, + /** The thread is sleeping. */ + RTTHREADSTATE_SLEEP, + /** Waiting on a spin mutex. */ + RTTHREADSTATE_SPIN_MUTEX, + /** End of the thread states. */ + RTTHREADSTATE_END, + + /** The usual 32-bit size hack. */ + RTTHREADSTATE_32BIT_HACK = 0x7fffffff +} RTTHREADSTATE; + +/** Checks if a thread state indicates that the thread is sleeping. */ +#define RTTHREAD_IS_SLEEPING(enmState) ((enmState) >= RTTHREADSTATE_CRITSECT) + +/** + * Thread types. + * Besides identifying the purpose of the thread, the thread type is + * used to select the scheduling properties. + * + * The types in are placed in a rough order of ascending priority. + */ +typedef enum RTTHREADTYPE +{ + /** Invalid type. */ + RTTHREADTYPE_INVALID = 0, + /** Infrequent poller thread. + * This type of thread will sleep for the most of the time, and do + * infrequent polls on resources at 0.5 sec or higher intervals. + */ + RTTHREADTYPE_INFREQUENT_POLLER, + /** Main heavy worker thread. + * Thread of this type is driving asynchronous tasks in the Main + * API which takes a long time and might involve a bit of CPU. Like + * for instance creating a fixed sized VDI. + */ + RTTHREADTYPE_MAIN_HEAVY_WORKER, + /** The emulation thread type. + * While being a thread with very high workload it still is vital + * that it gets scheduled frequently. When possible all other thread + * types except DEFAULT and GUI should interrupt this one ASAP when + * they become ready. + */ + RTTHREADTYPE_EMULATION, + /** The default thread type. + * Since it doesn't say much about the purpose of the thread + * nothing special is normally done to the scheduling. This type + * should be avoided. + * The main thread is registered with default type during RTR3Init() + * and that's what the default process priority is derived from. + */ + RTTHREADTYPE_DEFAULT, + /** The GUI thread type + * The GUI normally have a low workload but is frequently scheduled + * to handle events. When possible the scheduler should not leave + * threads of this kind waiting for too long (~50ms). + */ + RTTHREADTYPE_GUI, + /** Main worker thread. + * Thread of this type is driving asynchronous tasks in the Main API. + * In most cases this means little work an a lot of waiting. + */ + RTTHREADTYPE_MAIN_WORKER, + /** VRDP I/O thread. + * These threads are I/O threads in the RDP server will hang around + * waiting for data, process it and pass it on. + */ + RTTHREADTYPE_VRDP_IO, + /** The debugger type. + * Threads involved in servicing the debugger. It must remain + * responsive even when things are running wild in. + */ + RTTHREADTYPE_DEBUGGER, + /** Message pump thread. + * Thread pumping messages from one thread/process to another + * thread/process. The workload is very small, most of the time + * it's blocked waiting for messages to be produced or processed. + * This type of thread will be favored after I/O threads. + */ + RTTHREADTYPE_MSG_PUMP, + /** The I/O thread type. + * Doing I/O means shuffling data, waiting for request to arrive and + * for them to complete. The thread should be favored when competing + * with any other threads except timer threads. + */ + RTTHREADTYPE_IO, + /** The timer thread type. + * A timer thread is mostly waiting for the timer to tick + * and then perform a little bit of work. Accuracy is important here, + * so the thread should be favoured over all threads. If premention can + * be configured at thread level, it could be made very short. + */ + RTTHREADTYPE_TIMER, + /** Only used for validation. */ + RTTHREADTYPE_END +} RTTHREADTYPE; + + +#ifndef IN_RC + +/** + * Checks if the IPRT thread component has been initialized. + * + * This is used to avoid calling into RTThread before the runtime has been + * initialized. + * + * @returns @c true if it's initialized, @c false if not. + */ +RTDECL(bool) RTThreadIsInitialized(void); + +/** + * Get the thread handle of the current thread. + * + * @returns Thread handle. + */ +RTDECL(RTTHREAD) RTThreadSelf(void); + +/** + * Get the native thread handle of the current thread. + * + * @returns Native thread handle. + */ +RTDECL(RTNATIVETHREAD) RTThreadNativeSelf(void); + +/** + * Millisecond granular sleep function. + * + * @returns VINF_SUCCESS on success. + * @returns VERR_INTERRUPTED if a signal or other asynchronous stuff happened + * which interrupt the peaceful sleep. + * @param cMillies Number of milliseconds to sleep. + * 0 milliseconds means yielding the timeslice - deprecated! + * @remark See RTThreadNanoSleep() for sleeping for smaller periods of time. + */ +RTDECL(int) RTThreadSleep(RTMSINTERVAL cMillies); + +/** + * Millisecond granular sleep function, no logger calls. + * + * Same as RTThreadSleep, except it will never call into the IPRT logger. It + * can therefore safely be used in places where the logger is off limits, like + * at termination or init time. The electric fence heap is one consumer of + * this API. + * + * @returns VINF_SUCCESS on success. + * @returns VERR_INTERRUPTED if a signal or other asynchronous stuff happened + * which interrupt the peaceful sleep. + * @param cMillies Number of milliseconds to sleep. + * 0 milliseconds means yielding the timeslice - deprecated! + */ +RTDECL(int) RTThreadSleepNoLog(RTMSINTERVAL cMillies); + +/** + * Yields the CPU. + * + * @returns true if we yielded. + * @returns false if it's probable that we didn't yield. + */ +RTDECL(bool) RTThreadYield(void); + + + +/** + * Thread function. + * + * @returns 0 on success. + * @param ThreadSelf Thread handle to this thread. + * @param pvUser User argument. + */ +typedef DECLCALLBACK(int) FNRTTHREAD(RTTHREAD ThreadSelf, void *pvUser); +/** Pointer to a FNRTTHREAD(). */ +typedef FNRTTHREAD *PFNRTTHREAD; + +/** + * Thread creation flags. + */ +typedef enum RTTHREADFLAGS +{ + /** This flag is used to keep the thread structure around so it can + * be waited on after termination. @sa RTThreadWait and + * RTThreadWaitNoResume. Not required for RTThreadUserWait and friends! + */ + RTTHREADFLAGS_WAITABLE = RT_BIT(0), + /** The bit number corresponding to the RTTHREADFLAGS_WAITABLE mask. */ + RTTHREADFLAGS_WAITABLE_BIT = 0, + + /** Mask of valid flags, use for validation. */ + RTTHREADFLAGS_MASK = RT_BIT(0) +} RTTHREADFLAGS; + + +/** + * Create a new thread. + * + * @returns iprt status code. + * @param pThread Where to store the thread handle to the new thread. (optional) + * @param pfnThread The thread function. + * @param pvUser User argument. + * @param cbStack The size of the stack for the new thread. + * Use 0 for the default stack size. + * @param enmType The thread type. Used for deciding scheduling attributes + * of the thread. + * @param fFlags Flags of the RTTHREADFLAGS type (ORed together). + * @param pszName Thread name. + * + * @remark When called in Ring-0, this API will create a new kernel thread and not a thread in + * the context of the calling process. + */ +RTDECL(int) RTThreadCreate(PRTTHREAD pThread, PFNRTTHREAD pfnThread, void *pvUser, size_t cbStack, + RTTHREADTYPE enmType, unsigned fFlags, const char *pszName); +#ifndef RT_OS_LINUX /* XXX crashes genksyms at least on 32-bit Linux hosts */ +/** @copydoc RTThreadCreate */ +typedef DECLCALLBACKPTR(int, PFNRTTHREADCREATE)(PRTTHREAD pThread, PFNRTTHREAD pfnThread, void *pvUser, size_t cbStack, + RTTHREADTYPE enmType, unsigned fFlags, const char *pszName); +#endif + + +/** + * Create a new thread. + * + * Same as RTThreadCreate except the name is given in the RTStrPrintfV form. + * + * @returns iprt status code. + * @param pThread See RTThreadCreate. + * @param pfnThread See RTThreadCreate. + * @param pvUser See RTThreadCreate. + * @param cbStack See RTThreadCreate. + * @param enmType See RTThreadCreate. + * @param fFlags See RTThreadCreate. + * @param pszName Thread name format. + * @param va Format arguments. + */ +RTDECL(int) RTThreadCreateV(PRTTHREAD pThread, PFNRTTHREAD pfnThread, void *pvUser, size_t cbStack, + RTTHREADTYPE enmType, uint32_t fFlags, const char *pszNameFmt, va_list va); + +/** + * Create a new thread. + * + * Same as RTThreadCreate except the name is given in the RTStrPrintf form. + * + * @returns iprt status code. + * @param pThread See RTThreadCreate. + * @param pfnThread See RTThreadCreate. + * @param pvUser See RTThreadCreate. + * @param cbStack See RTThreadCreate. + * @param enmType See RTThreadCreate. + * @param fFlags See RTThreadCreate. + * @param pszName Thread name format. + * @param ... Format arguments. + */ +RTDECL(int) RTThreadCreateF(PRTTHREAD pThread, PFNRTTHREAD pfnThread, void *pvUser, size_t cbStack, + RTTHREADTYPE enmType, uint32_t fFlags, const char *pszNameFmt, ...); + +/** + * Gets the native thread id of a IPRT thread. + * + * @returns The native thread id. + * @param Thread The IPRT thread. + */ +RTDECL(RTNATIVETHREAD) RTThreadGetNative(RTTHREAD Thread); + +/** + * Gets the IPRT thread of a native thread. + * + * @returns The IPRT thread handle + * @returns NIL_RTTHREAD if not a thread known to IPRT. + * @param NativeThread The native thread handle/id. + */ +RTDECL(RTTHREAD) RTThreadFromNative(RTNATIVETHREAD NativeThread); + +/** + * Changes the type of the specified thread. + * + * @returns iprt status code. + * @param Thread The thread which type should be changed. + * @param enmType The new thread type. + * @remark In Ring-0 it only works if Thread == RTThreadSelf(). + */ +RTDECL(int) RTThreadSetType(RTTHREAD Thread, RTTHREADTYPE enmType); + +/** + * Wait for the thread to terminate, resume on interruption. + * + * @returns iprt status code. + * Will not return VERR_INTERRUPTED. + * @param Thread The thread to wait for. + * @param cMillies The number of milliseconds to wait. Use RT_INDEFINITE_WAIT for + * an indefinite wait. + * @param prc Where to store the return code of the thread. Optional. + */ +RTDECL(int) RTThreadWait(RTTHREAD Thread, RTMSINTERVAL cMillies, int *prc); + +/** + * Wait for the thread to terminate, return on interruption. + * + * @returns iprt status code. + * @param Thread The thread to wait for. + * @param cMillies The number of milliseconds to wait. Use RT_INDEFINITE_WAIT for + * an indefinite wait. + * @param prc Where to store the return code of the thread. Optional. + */ +RTDECL(int) RTThreadWaitNoResume(RTTHREAD Thread, RTMSINTERVAL cMillies, int *prc); + +/** + * Gets the name of the current thread thread. + * + * @returns Pointer to readonly name string. + * @returns NULL on failure. + */ +RTDECL(const char *) RTThreadSelfName(void); + +/** + * Gets the name of a thread. + * + * @returns Pointer to readonly name string. + * @returns NULL on failure. + * @param Thread Thread handle of the thread to query the name of. + */ +RTDECL(const char *) RTThreadGetName(RTTHREAD Thread); + +/** + * Gets the type of the specified thread. + * + * @returns The thread type. + * @returns RTTHREADTYPE_INVALID if the thread handle is invalid. + * @param Thread The thread in question. + */ +RTDECL(RTTHREADTYPE) RTThreadGetType(RTTHREAD Thread); + +/** + * Sets the name of a thread. + * + * @returns iprt status code. + * @param Thread Thread handle of the thread to query the name of. + * @param pszName The thread name. + */ +RTDECL(int) RTThreadSetName(RTTHREAD Thread, const char *pszName); + +/** + * Checks if the specified thread is the main thread. + * + * @returns true if it is, false if it isn't. + * + * @param hThread The thread handle. + */ +RTDECL(bool) RTThreadIsMain(RTTHREAD hThread); + +/** + * Checks if the calling thread is known to IPRT. + * + * @returns @c true if it is, @c false if it isn't. + */ +RTDECL(bool) RTThreadIsSelfKnown(void); + +/** + * Checks if the calling thread is know to IPRT and is alive. + * + * @returns @c true if it is, @c false if it isn't. + */ +RTDECL(bool) RTThreadIsSelfAlive(void); + +/** + * Checks if the calling thread is known to IPRT. + * + * @returns @c true if it is, @c false if it isn't. + */ +RTDECL(bool) RTThreadIsOperational(void); + +/** + * Signal the user event. + * + * @returns iprt status code. + */ +RTDECL(int) RTThreadUserSignal(RTTHREAD Thread); + +/** + * Wait for the user event. + * + * @returns iprt status code. + * @param Thread The thread to wait for. + * @param cMillies The number of milliseconds to wait. Use RT_INDEFINITE_WAIT for + * an indefinite wait. + */ +RTDECL(int) RTThreadUserWait(RTTHREAD Thread, RTMSINTERVAL cMillies); + +/** + * Wait for the user event, return on interruption. + * + * @returns iprt status code. + * @param Thread The thread to wait for. + * @param cMillies The number of milliseconds to wait. Use RT_INDEFINITE_WAIT for + * an indefinite wait. + */ +RTDECL(int) RTThreadUserWaitNoResume(RTTHREAD Thread, RTMSINTERVAL cMillies); + +/** + * Reset the user event. + * + * @returns iprt status code. + * @param Thread The thread to reset. + */ +RTDECL(int) RTThreadUserReset(RTTHREAD Thread); + +/** + * Pokes the thread. + * + * This will signal the thread, attempting to interrupt whatever it's currently + * doing. This is *NOT* implemented on all platforms and may cause unresolved + * symbols during linking or VERR_NOT_IMPLEMENTED at runtime. + * + * @returns IPRT status code. + * + * @param hThread The thread to poke. This must not be the + * calling thread. + */ +RTDECL(int) RTThreadPoke(RTTHREAD hThread); + +# ifdef IN_RING0 + +/** + * Check if preemption is currently enabled or not for the current thread. + * + * @note This may return true even on systems where preemption isn't + * possible. In that case, it means no call to RTThreadPreemptDisable + * has been made and interrupts are still enabled. + * + * @returns true if preemption is enabled, false if preemetion is disabled. + * @param hThread Must be NIL_RTTHREAD for now. + */ +RTDECL(bool) RTThreadPreemptIsEnabled(RTTHREAD hThread); + +/** + * Check if preemption is pending for the current thread. + * + * This function should be called regularly when executing larger portions of + * code with preemption disabled. + * + * @returns true if pending, false if not. + * @param hThread Must be NIL_RTTHREAD for now. + */ +RTDECL(bool) RTThreadPreemptIsPending(RTTHREAD hThread); + +/** + * Is RTThreadPreemptIsPending reliable? + * + * @returns true if reliable, false if not. + */ +RTDECL(bool) RTThreadPreemptIsPendingTrusty(void); + +/** + * Is preemption possible on this system. + * + * @returns true if possible, false if not. + */ +RTDECL(bool) RTThreadPreemptIsPossible(void); + +/** + * Preemption state saved by RTThreadPreemptDisable and used by + * RTThreadPreemptRestore to restore the previous state. + */ +typedef struct RTTHREADPREEMPTSTATE +{ + /** In debug builds this will be used to check for cpu migration. */ + RTCPUID idCpu; +# ifdef RT_OS_WINDOWS + /** The old IRQL. Don't touch! */ + unsigned char uchOldIrql; + /** Reserved, MBZ. */ + uint8_t bReserved1; + /** Reserved, MBZ. */ + uint8_t bReserved2; + /** Reserved, MBZ. */ + uint8_t bReserved3; +# define RTTHREADPREEMPTSTATE_INITIALIZER { NIL_RTCPUID, 255, 0, 0, 0 } +# elif defined(RT_OS_HAIKU) + /** The cpu_state. Don't touch! */ + uint32_t uOldCpuState; +# define RTTHREADPREEMPTSTATE_INITIALIZER { NIL_RTCPUID, 0 } +# elif defined(RT_OS_SOLARIS) + /** The Old PIL. Don't touch! */ + uint32_t uOldPil; +# define RTTHREADPREEMPTSTATE_INITIALIZER { NIL_RTCPUID, UINT32_MAX } +# else + /** Reserved, MBZ. */ + uint32_t u32Reserved; +# define RTTHREADPREEMPTSTATE_INITIALIZER { NIL_RTCPUID, 0 } +# endif +} RTTHREADPREEMPTSTATE; +/** Pointer to a preemption state. */ +typedef RTTHREADPREEMPTSTATE *PRTTHREADPREEMPTSTATE; + +/** + * Disable preemption. + * + * A call to this function must be matched by exactly one call to + * RTThreadPreemptRestore(). + * + * @param pState Where to store the preemption state. + */ +RTDECL(void) RTThreadPreemptDisable(PRTTHREADPREEMPTSTATE pState); + +/** + * Restores the preemption state, undoing a previous call to + * RTThreadPreemptDisable. + * + * A call to this function must be matching a previous call to + * RTThreadPreemptDisable. + * + * @param pState The state return by RTThreadPreemptDisable. + */ +RTDECL(void) RTThreadPreemptRestore(PRTTHREADPREEMPTSTATE pState); + +/** + * Check if the thread is executing in interrupt context. + * + * @returns true if in interrupt context, false if not. + * @param hThread Must be NIL_RTTHREAD for now. + */ +RTDECL(bool) RTThreadIsInInterrupt(RTTHREAD hThread); + + +/** + * Thread context swithcing events. + */ +typedef enum RTTHREADCTXEVENT +{ + /** This thread is being scheduled out on the current CPU (includes preemption, + * waiting, sleep and whatever else may trigger scheduling). */ + RTTHREADCTXEVENT_OUT = 0, + /** This thread is being scheduled in on the current CPU and will resume + * execution. */ + RTTHREADCTXEVENT_IN, + /** The usual 32-bit size hack. */ + RTTHREADCTXEVENT_32BIT_HACK = 0x7fffffff +} RTTHREADCTXEVENT; + +/** + * Thread context switching hook callback. + * + * This hook function is called when a thread is scheduled and preempted. Check + * @a enmEvent to see which it is. Since the function is being called from + * hooks inside the scheduler, it is limited what you can do from this function. + * Do NOT acquire locks, sleep or yield the thread for instance. IRQ safe + * spinlocks are fine though. + * + * @returns IPRT status code. + * @param enmEvent The thread-context event. Please quitely ignore unknown + * events, we may add more (thread exit, ++) later. + * @param pvUser User argument. + */ +typedef DECLCALLBACK(void) FNRTTHREADCTXHOOK(RTTHREADCTXEVENT enmEvent, void *pvUser); +/** Pointer to a context switching hook. */ +typedef FNRTTHREADCTXHOOK *PFNRTTHREADCTXHOOK; + +/** + * Initializes a thread context switching hook for the current thread. + * + * The hook is created as disabled, use RTThreadCtxHookEnable to enable it. + * + * @returns IPRT status code. + * @param phCtxHook Where to store the hook handle. + * @param fFlags Reserved for future extensions, must be zero. + * @param pfnCallback Pointer to a the hook function (callback) that + * should be called for all context switching events + * involving the current thread. + * @param pvUser User argument that will be passed to @a pfnCallback. + * @remarks Preemption must be enabled. + */ +RTDECL(int) RTThreadCtxHookCreate(PRTTHREADCTXHOOK phCtxHook, uint32_t fFlags, PFNRTTHREADCTXHOOK pfnCallback, void *pvUser); + +/** + * Destroys a thread context switching hook. + * + * Caller must make sure the hook is disabled before the final reference is + * released. Recommended to call this on the owning thread, otherwise the + * memory backing it may on some systems only be released when the thread + * terminates. + * + * @returns IPRT status code. + * + * @param hCtxHook The context hook handle. NIL_RTTHREADCTXHOOK is + * ignored and the function will return VINF_SUCCESS. + * @remarks Preemption must be enabled. + * @remarks Do not call from FNRTTHREADCTXHOOK. + */ +RTDECL(int) RTThreadCtxHookDestroy(RTTHREADCTXHOOK hCtxHook); + +/** + * Enables the context switching hooks for the current thread. + * + * @returns IPRT status code. + * @param hCtxHook The context hook handle. + * @remarks Should be called with preemption disabled. + */ +RTDECL(int) RTThreadCtxHookEnable(RTTHREADCTXHOOK hCtxHook); + +/** + * Disables the thread context switching hook for the current thread. + * + * Will not assert or fail if called twice or with a NIL handle. + * + * @returns IPRT status code. + * @param hCtxHook The context hook handle. NIL_RTTHREADCTXHOOK is + * ignored and the function wil return VINF_SUCCESS. + * @remarks Should be called with preemption disabled. + * @remarks Do not call from FNRTTHREADCTXHOOK. + */ +RTDECL(int) RTThreadCtxHookDisable(RTTHREADCTXHOOK hCtxHook); + +/** + * Is the thread context switching hook enabled? + * + * @returns true if registered, false if not supported or not registered. + * @param hCtxHook The context hook handle. NIL_RTTHREADCTXHOOK is + * ignored and the function will return false. + * + * @remarks Can be called from any thread, though is naturally subject to races + * when not called from the thread associated with the hook. + */ +RTDECL(bool) RTThreadCtxHookIsEnabled(RTTHREADCTXHOOK hCtxHook); + +# endif /* IN_RING0 */ + + +# ifdef IN_RING3 + +/** + * Adopts a non-IPRT thread. + * + * @returns IPRT status code. + * @param enmType The thread type. + * @param fFlags The thread flags. RTTHREADFLAGS_WAITABLE is not currently allowed. + * @param pszName The thread name. Optional + * @param pThread Where to store the thread handle. Optional. + */ +RTDECL(int) RTThreadAdopt(RTTHREADTYPE enmType, unsigned fFlags, const char *pszName, PRTTHREAD pThread); + +/** + * Get the thread handle of the current thread, automatically adopting alien + * threads. + * + * @returns Thread handle. + */ +RTDECL(RTTHREAD) RTThreadSelfAutoAdopt(void); + +/** + * Gets the affinity mask of the current thread. + * + * @returns IPRT status code. + * @param pCpuSet Where to return the CPU affienty set of the calling + * thread. + */ +RTR3DECL(int) RTThreadGetAffinity(PRTCPUSET pCpuSet); + +/** + * Sets the affinity mask of the current thread. + * + * @returns iprt status code. + * @param pCpuSet The set of CPUs this thread can run on. NULL means + * all CPUs. + */ +RTR3DECL(int) RTThreadSetAffinity(PCRTCPUSET pCpuSet); + +/** + * Binds the thread to one specific CPU. + * + * @returns iprt status code. + * @param idCpu The ID of the CPU to bind this thread to. Use + * NIL_RTCPUID to unbind it. + */ +RTR3DECL(int) RTThreadSetAffinityToCpu(RTCPUID idCpu); + +/** + * Unblocks a thread. + * + * This function is paired with RTThreadBlocking and RTThreadBlockingDebug. + * + * @param hThread The current thread. + * @param enmCurState The current state, used to check for nested blocking. + * The new state will be running. + */ +RTDECL(void) RTThreadUnblocked(RTTHREAD hThread, RTTHREADSTATE enmCurState); + +/** + * Change the thread state to blocking. + * + * @param hThread The current thread. + * @param enmState The sleep state. + * @param fReallySleeping Really going to sleep now. Use false before calls + * to other IPRT synchronization methods. + */ +RTDECL(void) RTThreadBlocking(RTTHREAD hThread, RTTHREADSTATE enmState, bool fReallySleeping); + +/** + * Get the current thread state. + * + * A thread that is reported as sleeping may actually still be running inside + * the lock validator or/and in the code of some other IPRT synchronization + * primitive. Use RTThreadGetReallySleeping + * + * @returns The thread state. + * @param hThread The thread. + */ +RTDECL(RTTHREADSTATE) RTThreadGetState(RTTHREAD hThread); + +/** + * Checks if the thread is really sleeping or not. + * + * @returns RTTHREADSTATE_RUNNING if not really sleeping, otherwise the state it + * is sleeping in. + * @param hThread The thread. + */ +RTDECL(RTTHREADSTATE) RTThreadGetReallySleeping(RTTHREAD hThread); + +/** + * Translate a thread state into a string. + * + * @returns Pointer to a read-only string containing the state name. + * @param enmState The state. + */ +RTDECL(const char *) RTThreadStateName(RTTHREADSTATE enmState); + + +/** + * Native thread states returned by RTThreadNativeState. + */ +typedef enum RTTHREADNATIVESTATE +{ + /** Invalid thread handle. */ + RTTHREADNATIVESTATE_INVALID = 0, + /** Unable to determine the thread state. */ + RTTHREADNATIVESTATE_UNKNOWN, + /** The thread is running. */ + RTTHREADNATIVESTATE_RUNNING, + /** The thread is blocked. */ + RTTHREADNATIVESTATE_BLOCKED, + /** The thread is suspended / stopped. */ + RTTHREADNATIVESTATE_SUSPENDED, + /** The thread has terminated. */ + RTTHREADNATIVESTATE_TERMINATED, + /** Make sure it's a 32-bit type. */ + RTTHREADNATIVESTATE_32BIT_HACK = 0x7fffffff +} RTTHREADNATIVESTATE; + + +/** + * Get the native state of a thread. + * + * @returns Native state. + * @param hThread The thread handle. + * + * @remarks Not yet implemented on all systems, so have a backup plan for + * RTTHREADNATIVESTATE_UNKNOWN. + */ +RTDECL(RTTHREADNATIVESTATE) RTThreadGetNativeState(RTTHREAD hThread); + + +/** + * Get the execution times of the specified thread + * + * @returns IPRT status code. + * @param pKernelTime Kernel execution time in ms (out) + * @param pUserTime User execution time in ms (out) + * + */ +RTR3DECL(int) RTThreadGetExecutionTimeMilli(uint64_t *pKernelTime, uint64_t *pUserTime); + +/** @name Thread Local Storage + * @{ + */ +/** + * Thread termination callback for destroying a non-zero TLS entry. + * + * @remarks It is not permitable to use any RTTls APIs at this time. Doing so + * may lead to endless loops, crashes, and other bad stuff. + * + * @param pvValue The current value. + */ +typedef DECLCALLBACK(void) FNRTTLSDTOR(void *pvValue); +/** Pointer to a FNRTTLSDTOR. */ +typedef FNRTTLSDTOR *PFNRTTLSDTOR; + +/** + * Allocates a TLS entry (index). + * + * Example code: + * @code + RTTLS g_iTls = NIL_RTTLS; + + ... + + // once for the process, allocate the TLS index + if (g_iTls == NIL_RTTLS) + g_iTls = RTTlsAlloc(); + + // set the thread-local value. + RTTlsSet(g_iTls, pMyData); + + ... + + // get the thread-local value + PMYDATA pMyData = (PMYDATA)RTTlsGet(g_iTls); + + @endcode + * + * @returns the index of the allocated TLS entry. + * @returns NIL_RTTLS on failure. + */ +RTR3DECL(RTTLS) RTTlsAlloc(void); + +/** + * Variant of RTTlsAlloc that returns a status code. + * + * @returns IPRT status code. + * @retval VERR_NOT_SUPPORTED if pfnDestructor is non-NULL and the platform + * doesn't support this feature. + * + * @param piTls Where to store the index of the allocated TLS entry. + * This is set to NIL_RTTLS on failure. + * @param pfnDestructor Optional callback function for cleaning up on + * thread termination. WARNING! This feature may not + * be implemented everywhere. + */ +RTR3DECL(int) RTTlsAllocEx(PRTTLS piTls, PFNRTTLSDTOR pfnDestructor); + +/** + * Frees a TLS entry. + * + * @returns IPRT status code. + * @param iTls The index of the TLS entry. + */ +RTR3DECL(int) RTTlsFree(RTTLS iTls); + +/** + * Get the (thread-local) value stored in a TLS entry. + * + * @returns value in given TLS entry. + * @retval NULL if RTTlsSet() has not yet been called on this thread, or if the + * TLS index is invalid. + * + * @param iTls The index of the TLS entry. + */ +RTR3DECL(void *) RTTlsGet(RTTLS iTls); + +/** + * Get the value stored in a TLS entry. + * + * @returns IPRT status code. + * @param iTls The index of the TLS entry. + * @param ppvValue Where to store the value. The value will be NULL if + * RTTlsSet has not yet been called on this thread. + */ +RTR3DECL(int) RTTlsGetEx(RTTLS iTls, void **ppvValue); + +/** + * Set the value stored in an allocated TLS entry. + * + * @returns IPRT status. + * @param iTls The index of the TLS entry. + * @param pvValue The value to store. + * + * @remarks Note that NULL is considered a special value. + */ +RTR3DECL(int) RTTlsSet(RTTLS iTls, void *pvValue); + +/** @} */ + +# endif /* IN_RING3 */ +# endif /* !IN_RC */ + +/** @} */ + +RT_C_DECLS_END + +#endif + --- linux-raspi2-4.2.0.orig/ubuntu/vbox/include/iprt/time.h +++ linux-raspi2-4.2.0/ubuntu/vbox/include/iprt/time.h @@ -0,0 +1,1034 @@ +/** @file + * IPRT - Time. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + +#ifndef ___iprt_time_h +#define ___iprt_time_h + +#include +#include + +RT_C_DECLS_BEGIN + +/** @defgroup grp_rt_time RTTime - Time + * @ingroup grp_rt + * @{ + */ + +/** Time Specification. + * + * Use the inline RTTimeSpecGet/Set to operate on structure this so we + * can easily change the representation if required later. + * + * The current representation is in nanoseconds relative to the unix epoch + * (1970-01-01 00:00:00 UTC). This gives us an approximate span from + * 1678 to 2262 without sacrificing the resolution offered by the various + * host OSes (BSD & LINUX 1ns, NT 100ns). + */ +typedef struct RTTIMESPEC +{ + /** Nanoseconds since epoch. + * The name is intentially too long to be comfortable to use because you should be + * using inline helpers! */ + int64_t i64NanosecondsRelativeToUnixEpoch; +} RTTIMESPEC; + + +/** @name RTTIMESPEC methods + * @{ */ + +/** + * Gets the time as nanoseconds relative to the unix epoch. + * + * @returns Nanoseconds relative to unix epoch. + * @param pTime The time spec to interpret. + */ +DECLINLINE(int64_t) RTTimeSpecGetNano(PCRTTIMESPEC pTime) +{ + return pTime->i64NanosecondsRelativeToUnixEpoch; +} + + +/** + * Sets the time give by nanoseconds relative to the unix epoch. + * + * @returns pTime. + * @param pTime The time spec to modify. + * @param i64Nano The new time in nanoseconds. + */ +DECLINLINE(PRTTIMESPEC) RTTimeSpecSetNano(PRTTIMESPEC pTime, int64_t i64Nano) +{ + pTime->i64NanosecondsRelativeToUnixEpoch = i64Nano; + return pTime; +} + + +/** + * Gets the time as microseconds relative to the unix epoch. + * + * @returns microseconds relative to unix epoch. + * @param pTime The time spec to interpret. + */ +DECLINLINE(int64_t) RTTimeSpecGetMicro(PCRTTIMESPEC pTime) +{ + return pTime->i64NanosecondsRelativeToUnixEpoch / RT_NS_1US; +} + + +/** + * Sets the time given by microseconds relative to the unix epoch. + * + * @returns pTime. + * @param pTime The time spec to modify. + * @param i64Micro The new time in microsecond. + */ +DECLINLINE(PRTTIMESPEC) RTTimeSpecSetMicro(PRTTIMESPEC pTime, int64_t i64Micro) +{ + pTime->i64NanosecondsRelativeToUnixEpoch = i64Micro * RT_NS_1US; + return pTime; +} + + +/** + * Gets the time as milliseconds relative to the unix epoch. + * + * @returns milliseconds relative to unix epoch. + * @param pTime The time spec to interpret. + */ +DECLINLINE(int64_t) RTTimeSpecGetMilli(PCRTTIMESPEC pTime) +{ + return pTime->i64NanosecondsRelativeToUnixEpoch / RT_NS_1MS; +} + + +/** + * Sets the time given by milliseconds relative to the unix epoch. + * + * @returns pTime. + * @param pTime The time spec to modify. + * @param i64Milli The new time in milliseconds. + */ +DECLINLINE(PRTTIMESPEC) RTTimeSpecSetMilli(PRTTIMESPEC pTime, int64_t i64Milli) +{ + pTime->i64NanosecondsRelativeToUnixEpoch = i64Milli * RT_NS_1MS; + return pTime; +} + + +/** + * Gets the time as seconds relative to the unix epoch. + * + * @returns seconds relative to unix epoch. + * @param pTime The time spec to interpret. + */ +DECLINLINE(int64_t) RTTimeSpecGetSeconds(PCRTTIMESPEC pTime) +{ + return pTime->i64NanosecondsRelativeToUnixEpoch / RT_NS_1SEC; +} + + +/** + * Sets the time given by seconds relative to the unix epoch. + * + * @returns pTime. + * @param pTime The time spec to modify. + * @param i64Seconds The new time in seconds. + */ +DECLINLINE(PRTTIMESPEC) RTTimeSpecSetSeconds(PRTTIMESPEC pTime, int64_t i64Seconds) +{ + pTime->i64NanosecondsRelativeToUnixEpoch = i64Seconds * RT_NS_1SEC; + return pTime; +} + + +/** + * Makes the time spec absolute like abs() does (i.e. a positive value). + * + * @returns pTime. + * @param pTime The time spec to modify. + */ +DECLINLINE(PRTTIMESPEC) RTTimeSpecAbsolute(PRTTIMESPEC pTime) +{ + if (pTime->i64NanosecondsRelativeToUnixEpoch < 0) + pTime->i64NanosecondsRelativeToUnixEpoch = -pTime->i64NanosecondsRelativeToUnixEpoch; + return pTime; +} + + +/** + * Negates the time. + * + * @returns pTime. + * @param pTime The time spec to modify. + */ +DECLINLINE(PRTTIMESPEC) RTTimeSpecNegate(PRTTIMESPEC pTime) +{ + pTime->i64NanosecondsRelativeToUnixEpoch = -pTime->i64NanosecondsRelativeToUnixEpoch; + return pTime; +} + + +/** + * Adds a time period to the time. + * + * @returns pTime. + * @param pTime The time spec to modify. + * @param pTimeAdd The time spec to add to pTime. + */ +DECLINLINE(PRTTIMESPEC) RTTimeSpecAdd(PRTTIMESPEC pTime, PCRTTIMESPEC pTimeAdd) +{ + pTime->i64NanosecondsRelativeToUnixEpoch += pTimeAdd->i64NanosecondsRelativeToUnixEpoch; + return pTime; +} + + +/** + * Adds a time period give as nanoseconds from the time. + * + * @returns pTime. + * @param pTime The time spec to modify. + * @param i64Nano The time period in nanoseconds. + */ +DECLINLINE(PRTTIMESPEC) RTTimeSpecAddNano(PRTTIMESPEC pTime, int64_t i64Nano) +{ + pTime->i64NanosecondsRelativeToUnixEpoch += i64Nano; + return pTime; +} + + +/** + * Adds a time period give as microseconds from the time. + * + * @returns pTime. + * @param pTime The time spec to modify. + * @param i64Micro The time period in microseconds. + */ +DECLINLINE(PRTTIMESPEC) RTTimeSpecAddMicro(PRTTIMESPEC pTime, int64_t i64Micro) +{ + pTime->i64NanosecondsRelativeToUnixEpoch += i64Micro * RT_NS_1US; + return pTime; +} + + +/** + * Adds a time period give as milliseconds from the time. + * + * @returns pTime. + * @param pTime The time spec to modify. + * @param i64Milli The time period in milliseconds. + */ +DECLINLINE(PRTTIMESPEC) RTTimeSpecAddMilli(PRTTIMESPEC pTime, int64_t i64Milli) +{ + pTime->i64NanosecondsRelativeToUnixEpoch += i64Milli * RT_NS_1MS; + return pTime; +} + + +/** + * Adds a time period give as seconds from the time. + * + * @returns pTime. + * @param pTime The time spec to modify. + * @param i64Seconds The time period in seconds. + */ +DECLINLINE(PRTTIMESPEC) RTTimeSpecAddSeconds(PRTTIMESPEC pTime, int64_t i64Seconds) +{ + pTime->i64NanosecondsRelativeToUnixEpoch += i64Seconds * RT_NS_1SEC; + return pTime; +} + + +/** + * Subtracts a time period from the time. + * + * @returns pTime. + * @param pTime The time spec to modify. + * @param pTimeSub The time spec to subtract from pTime. + */ +DECLINLINE(PRTTIMESPEC) RTTimeSpecSub(PRTTIMESPEC pTime, PCRTTIMESPEC pTimeSub) +{ + pTime->i64NanosecondsRelativeToUnixEpoch -= pTimeSub->i64NanosecondsRelativeToUnixEpoch; + return pTime; +} + + +/** + * Subtracts a time period give as nanoseconds from the time. + * + * @returns pTime. + * @param pTime The time spec to modify. + * @param i64Nano The time period in nanoseconds. + */ +DECLINLINE(PRTTIMESPEC) RTTimeSpecSubNano(PRTTIMESPEC pTime, int64_t i64Nano) +{ + pTime->i64NanosecondsRelativeToUnixEpoch -= i64Nano; + return pTime; +} + + +/** + * Subtracts a time period give as microseconds from the time. + * + * @returns pTime. + * @param pTime The time spec to modify. + * @param i64Micro The time period in microseconds. + */ +DECLINLINE(PRTTIMESPEC) RTTimeSpecSubMicro(PRTTIMESPEC pTime, int64_t i64Micro) +{ + pTime->i64NanosecondsRelativeToUnixEpoch -= i64Micro * RT_NS_1US; + return pTime; +} + + +/** + * Subtracts a time period give as milliseconds from the time. + * + * @returns pTime. + * @param pTime The time spec to modify. + * @param i64Milli The time period in milliseconds. + */ +DECLINLINE(PRTTIMESPEC) RTTimeSpecSubMilli(PRTTIMESPEC pTime, int64_t i64Milli) +{ + pTime->i64NanosecondsRelativeToUnixEpoch -= i64Milli * RT_NS_1MS; + return pTime; +} + + +/** + * Subtracts a time period give as seconds from the time. + * + * @returns pTime. + * @param pTime The time spec to modify. + * @param i64Seconds The time period in seconds. + */ +DECLINLINE(PRTTIMESPEC) RTTimeSpecSubSeconds(PRTTIMESPEC pTime, int64_t i64Seconds) +{ + pTime->i64NanosecondsRelativeToUnixEpoch -= i64Seconds * RT_NS_1SEC; + return pTime; +} + + +/** + * Gives the time in seconds and nanoseconds. + * + * @returns pTime. + * @param pTime The time spec to interpret. + * @param *pi32Seconds Where to store the time period in seconds. + * @param *pi32Nano Where to store the time period in nanoseconds. + */ +DECLINLINE(void) RTTimeSpecGetSecondsAndNano(PRTTIMESPEC pTime, int32_t *pi32Seconds, int32_t *pi32Nano) +{ + int64_t i64 = RTTimeSpecGetNano(pTime); + int32_t i32Nano = (int32_t)(i64 % RT_NS_1SEC); + i64 /= RT_NS_1SEC; + if (i32Nano < 0) + { + i32Nano += RT_NS_1SEC; + i64--; + } + *pi32Seconds = (int32_t)i64; + *pi32Nano = i32Nano; +} + + +/* PORTME: Add struct timeval guard macro here. */ +#if defined(RTTIME_INCL_TIMEVAL) || defined(_STRUCT_TIMEVAL) || defined(_SYS__TIMEVAL_H_) || defined(_SYS_TIME_H) || defined(_TIMEVAL) || defined(_LINUX_TIME_H) +/** + * Gets the time as POSIX timeval. + * + * @returns pTime. + * @param pTime The time spec to interpret. + * @param pTimeval Where to store the time as POSIX timeval. + */ +DECLINLINE(struct timeval *) RTTimeSpecGetTimeval(PCRTTIMESPEC pTime, struct timeval *pTimeval) +{ + int64_t i64 = RTTimeSpecGetMicro(pTime); + int32_t i32Micro = (int32_t)(i64 % RT_US_1SEC); + i64 /= RT_US_1SEC; + if (i32Micro < 0) + { + i32Micro += RT_US_1SEC; + i64--; + } + pTimeval->tv_sec = (time_t)i64; + pTimeval->tv_usec = i32Micro; + return pTimeval; +} + +/** + * Sets the time as POSIX timeval. + * + * @returns pTime. + * @param pTime The time spec to modify. + * @param pTimeval Pointer to the POSIX timeval struct with the new time. + */ +DECLINLINE(PRTTIMESPEC) RTTimeSpecSetTimeval(PRTTIMESPEC pTime, const struct timeval *pTimeval) +{ + return RTTimeSpecAddMicro(RTTimeSpecSetSeconds(pTime, pTimeval->tv_sec), pTimeval->tv_usec); +} +#endif /* various ways of detecting struct timeval */ + + +/* PORTME: Add struct timespec guard macro here. */ +#if defined(RTTIME_INCL_TIMESPEC) || defined(_STRUCT_TIMESPEC) || defined(_SYS__TIMESPEC_H_) || defined(TIMEVAL_TO_TIMESPEC) || defined(_TIMESPEC) +/** + * Gets the time as POSIX timespec. + * + * @returns pTime. + * @param pTime The time spec to interpret. + * @param pTimespec Where to store the time as POSIX timespec. + */ +DECLINLINE(struct timespec *) RTTimeSpecGetTimespec(PCRTTIMESPEC pTime, struct timespec *pTimespec) +{ + int64_t i64 = RTTimeSpecGetNano(pTime); + int32_t i32Nano = (int32_t)(i64 % RT_NS_1SEC); + i64 /= RT_NS_1SEC; + if (i32Nano < 0) + { + i32Nano += RT_NS_1SEC; + i64--; + } + pTimespec->tv_sec = (time_t)i64; + pTimespec->tv_nsec = i32Nano; + return pTimespec; +} + +/** + * Sets the time as POSIX timespec. + * + * @returns pTime. + * @param pTime The time spec to modify. + * @param pTimespec Pointer to the POSIX timespec struct with the new time. + */ +DECLINLINE(PRTTIMESPEC) RTTimeSpecSetTimespec(PRTTIMESPEC pTime, const struct timespec *pTimespec) +{ + return RTTimeSpecAddNano(RTTimeSpecSetSeconds(pTime, pTimespec->tv_sec), pTimespec->tv_nsec); +} +#endif /* various ways of detecting struct timespec */ + + + +/** The offset of the unix epoch and the base for NT time (in 100ns units). + * Nt time starts at 1601-01-01 00:00:00. */ +#define RTTIME_NT_TIME_OFFSET_UNIX (116444736000000000LL) + + +/** + * Gets the time as NT time. + * + * @returns Nt time. + * @param pTime The time spec to interpret. + */ +DECLINLINE(uint64_t) RTTimeSpecGetNtTime(PCRTTIMESPEC pTime) +{ + return pTime->i64NanosecondsRelativeToUnixEpoch / 100 + + RTTIME_NT_TIME_OFFSET_UNIX; +} + + +/** + * Sets the time given by Nt time. + * + * @returns pTime. + * @param pTime The time spec to modify. + * @param u64NtTime The new time in Nt time. + */ +DECLINLINE(PRTTIMESPEC) RTTimeSpecSetNtTime(PRTTIMESPEC pTime, uint64_t u64NtTime) +{ + pTime->i64NanosecondsRelativeToUnixEpoch = + ((int64_t)u64NtTime - RTTIME_NT_TIME_OFFSET_UNIX) * 100; + return pTime; +} + + +#ifdef _FILETIME_ +/** + * Gets the time as NT file time. + * + * @returns pFileTime. + * @param pTime The time spec to interpret. + * @param pFileTime Pointer to NT filetime structure. + */ +DECLINLINE(PFILETIME) RTTimeSpecGetNtFileTime(PCRTTIMESPEC pTime, PFILETIME pFileTime) +{ + *((uint64_t *)pFileTime) = RTTimeSpecGetNtTime(pTime); + return pFileTime; +} + +/** + * Sets the time as NT file time. + * + * @returns pTime. + * @param pTime The time spec to modify. + * @param pFileTime Where to store the time as Nt file time. + */ +DECLINLINE(PRTTIMESPEC) RTTimeSpecSetNtFileTime(PRTTIMESPEC pTime, const FILETIME *pFileTime) +{ + return RTTimeSpecSetNtTime(pTime, *(const uint64_t *)pFileTime); +} +#endif + + +/** The offset to the start of DOS time. + * DOS time starts 1980-01-01 00:00:00. */ +#define RTTIME_OFFSET_DOS_TIME (315532800000000000LL) + + +/** + * Gets the time as seconds relative to the start of dos time. + * + * @returns seconds relative to the start of dos time. + * @param pTime The time spec to interpret. + */ +DECLINLINE(int64_t) RTTimeSpecGetDosSeconds(PCRTTIMESPEC pTime) +{ + return (pTime->i64NanosecondsRelativeToUnixEpoch - RTTIME_OFFSET_DOS_TIME) + / RT_NS_1SEC; +} + + +/** + * Sets the time given by seconds relative to the start of dos time. + * + * @returns pTime. + * @param pTime The time spec to modify. + * @param i64Seconds The new time in seconds relative to the start of dos time. + */ +DECLINLINE(PRTTIMESPEC) RTTimeSpecSetDosSeconds(PRTTIMESPEC pTime, int64_t i64Seconds) +{ + pTime->i64NanosecondsRelativeToUnixEpoch = i64Seconds * RT_NS_1SEC + + RTTIME_OFFSET_DOS_TIME; + return pTime; +} + + +/** + * Compare two time specs. + * + * @returns true they are equal. + * @returns false they are not equal. + * @param pTime1 The 1st time spec. + * @param pTime2 The 2nd time spec. + */ +DECLINLINE(bool) RTTimeSpecIsEqual(PCRTTIMESPEC pTime1, PCRTTIMESPEC pTime2) +{ + return pTime1->i64NanosecondsRelativeToUnixEpoch == pTime2->i64NanosecondsRelativeToUnixEpoch; +} + + +/** + * Compare two time specs. + * + * @returns 0 if equal, -1 if @a pLeft is smaller, 1 if @a pLeft is larger. + * @returns false they are not equal. + * @param pLeft The 1st time spec. + * @param pRight The 2nd time spec. + */ +DECLINLINE(int) RTTimeSpecCompare(PCRTTIMESPEC pLeft, PCRTTIMESPEC pRight) +{ + if (pLeft->i64NanosecondsRelativeToUnixEpoch == pRight->i64NanosecondsRelativeToUnixEpoch) + return 0; + return pLeft->i64NanosecondsRelativeToUnixEpoch < pRight->i64NanosecondsRelativeToUnixEpoch ? -1 : 1; +} + + +/** + * Converts a time spec to a ISO date string. + * + * @returns psz on success. + * @returns NULL on buffer underflow. + * @param pTime The time spec. + * @param psz Where to store the string. + * @param cb The size of the buffer. + */ +RTDECL(char *) RTTimeSpecToString(PCRTTIMESPEC pTime, char *psz, size_t cb); + +/** + * Attempts to convert an ISO date string to a time structure. + * + * We're a little forgiving with zero padding, unspecified parts, and leading + * and trailing spaces. + * + * @retval pTime on success, + * @retval NULL on failure. + * @param pTime The time spec. + * @param pszString The ISO date string to convert. + */ +RTDECL(PRTTIMESPEC) RTTimeSpecFromString(PRTTIMESPEC pTime, const char *pszString); + +/** @} */ + + +/** + * Exploded time. + */ +#pragma pack(1) +typedef struct RTTIME +{ + /** The year number. */ + int32_t i32Year; + /** The month of the year (1-12). January is 1. */ + uint8_t u8Month; + /** The day of the week (0-6). Monday is 0. */ + uint8_t u8WeekDay; + /** The day of the year (1-366). January the 1st is 1. */ + uint16_t u16YearDay; + /** The day of the month (1-31). */ + uint8_t u8MonthDay; + /** Hour of the day (0-23). */ + uint8_t u8Hour; + /** The minute of the hour (0-59). */ + uint8_t u8Minute; + /** The second of the minute (0-60). + * (u32Nanosecond / 1000000) */ + uint8_t u8Second; + /** The nanoseconds of the second (0-999999999). */ + uint32_t u32Nanosecond; + /** Flags, of the RTTIME_FLAGS_* \#defines. */ + uint32_t fFlags; + /** UCT time offset in minutes (-840-840). + * @remarks The implementation of RTTimeLocal* isn't quite there yet, so this might not be 100% correct. */ + int32_t offUTC; +} RTTIME; +#pragma pack() +/** Pointer to a exploded time structure. */ +typedef RTTIME *PRTTIME; +/** Pointer to a const exploded time structure. */ +typedef const RTTIME *PCRTTIME; + +/** @name RTTIME::fFlags values. + * @{ */ +/** Set if the time is UTC. If clear the time local time. */ +#define RTTIME_FLAGS_TYPE_MASK 3 +/** the time is UTC time. */ +#define RTTIME_FLAGS_TYPE_UTC 2 +/** The time is local time. */ +#define RTTIME_FLAGS_TYPE_LOCAL 3 + +/** Set if the time is local and daylight saving time is in effect. + * Not bit is not valid if RTTIME_FLAGS_NO_DST_DATA is set. */ +#define RTTIME_FLAGS_DST RT_BIT(4) +/** Set if the time is local and there is no data available on daylight saving time. */ +#define RTTIME_FLAGS_NO_DST_DATA RT_BIT(5) +/** Set if the year is a leap year. + * This is mutual exclusiv with RTTIME_FLAGS_COMMON_YEAR. */ +#define RTTIME_FLAGS_LEAP_YEAR RT_BIT(6) +/** Set if the year is a common year. + * This is mutual exclusiv with RTTIME_FLAGS_LEAP_YEAR. */ +#define RTTIME_FLAGS_COMMON_YEAR RT_BIT(7) +/** The mask of valid flags. */ +#define RTTIME_FLAGS_MASK UINT32_C(0xff) +/** @} */ + + +/** + * Gets the current system time (UTC). + * + * @returns pTime. + * @param pTime Where to store the time. + */ +RTDECL(PRTTIMESPEC) RTTimeNow(PRTTIMESPEC pTime); + +/** + * Sets the system time. + * + * @returns IPRT status code + * @param pTime The new system time (UTC). + * + * @remarks This will usually fail because changing the wall time is usually + * requires extra privileges. + */ +RTDECL(int) RTTimeSet(PCRTTIMESPEC pTime); + +/** + * Explodes a time spec (UTC). + * + * @returns pTime. + * @param pTime Where to store the exploded time. + * @param pTimeSpec The time spec to exploded. + */ +RTDECL(PRTTIME) RTTimeExplode(PRTTIME pTime, PCRTTIMESPEC pTimeSpec); + +/** + * Implodes exploded time to a time spec (UTC). + * + * @returns pTime on success. + * @returns NULL if the pTime data is invalid. + * @param pTimeSpec Where to store the imploded UTC time. + * If pTime specifies a time which outside the range, maximum or + * minimum values will be returned. + * @param pTime Pointer to the exploded time to implode. + * The fields u8Month, u8WeekDay and u8MonthDay are not used, + * and all the other fields are expected to be within their + * bounds. Use RTTimeNormalize() to calculate u16YearDay and + * normalize the ranges of the fields. + */ +RTDECL(PRTTIMESPEC) RTTimeImplode(PRTTIMESPEC pTimeSpec, PCRTTIME pTime); + +/** + * Normalizes the fields of a time structure. + * + * It is possible to calculate year-day from month/day and vice + * versa. If you adjust any of of these, make sure to zero the + * other so you make it clear which of the fields to use. If + * it's ambiguous, the year-day field is used (and you get + * assertions in debug builds). + * + * All the time fields and the year-day or month/day fields will + * be adjusted for overflows. (Since all fields are unsigned, there + * is no underflows.) It is possible to exploit this for simple + * date math, though the recommended way of doing that to implode + * the time into a timespec and do the math on that. + * + * @returns pTime on success. + * @returns NULL if the data is invalid. + * + * @param pTime The time structure to normalize. + * + * @remarks This function doesn't work with local time, only with UTC time. + */ +RTDECL(PRTTIME) RTTimeNormalize(PRTTIME pTime); + +/** + * Gets the current local system time. + * + * @returns pTime. + * @param pTime Where to store the local time. + */ +RTDECL(PRTTIMESPEC) RTTimeLocalNow(PRTTIMESPEC pTime); + +/** + * Gets the delta between UTC and local time. + * + * @code + * RTTIMESPEC LocalTime; + * RTTimeSpecAddNano(RTTimeNow(&LocalTime), RTTimeLocalDeltaNano()); + * @endcode + * + * @returns Returns the nanosecond delta between UTC and local time. + */ +RTDECL(int64_t) RTTimeLocalDeltaNano(void); + +/** + * Explodes a time spec to the localized timezone. + * + * @returns pTime. + * @param pTime Where to store the exploded time. + * @param pTimeSpec The time spec to exploded (UTC). + */ +RTDECL(PRTTIME) RTTimeLocalExplode(PRTTIME pTime, PCRTTIMESPEC pTimeSpec); + +/** + * Normalizes the fields of a time structure containing local time. + * + * See RTTimeNormalize for details. + * + * @returns pTime on success. + * @returns NULL if the data is invalid. + * @param pTime The time structure to normalize. + */ +RTDECL(PRTTIME) RTTimeLocalNormalize(PRTTIME pTime); + +/** + * Converts a time spec to a ISO date string. + * + * @returns psz on success. + * @returns NULL on buffer underflow. + * @param pTime The time. Caller should've normalized this. + * @param psz Where to store the string. + * @param cb The size of the buffer. + */ +RTDECL(char *) RTTimeToString(PCRTTIME pTime, char *psz, size_t cb); + +/** + * Attempts to convert an ISO date string to a time structure. + * + * We're a little forgiving with zero padding, unspecified parts, and leading + * and trailing spaces. + * + * @retval pTime on success, + * @retval NULL on failure. + * @param pTime Where to store the time on success. + * @param pszString The ISO date string to convert. + */ +RTDECL(PRTTIME) RTTimeFromString(PRTTIME pTime, const char *pszString); + +/** + * Checks if a year is a leap year or not. + * + * @returns true if it's a leap year. + * @returns false if it's a common year. + * @param i32Year The year in question. + */ +RTDECL(bool) RTTimeIsLeapYear(int32_t i32Year); + +/** + * Gets the current nanosecond timestamp. + * + * @returns nanosecond timestamp. + */ +RTDECL(uint64_t) RTTimeNanoTS(void); + +/** + * Gets the current millisecond timestamp. + * + * @returns millisecond timestamp. + */ +RTDECL(uint64_t) RTTimeMilliTS(void); + +/** + * Debugging the time api. + * + * @returns the number of 1ns steps which has been applied by RTTimeNanoTS(). + */ +RTDECL(uint32_t) RTTimeDbgSteps(void); + +/** + * Debugging the time api. + * + * @returns the number of times the TSC interval expired RTTimeNanoTS(). + */ +RTDECL(uint32_t) RTTimeDbgExpired(void); + +/** + * Debugging the time api. + * + * @returns the number of bad previous values encountered by RTTimeNanoTS(). + */ +RTDECL(uint32_t) RTTimeDbgBad(void); + +/** + * Debugging the time api. + * + * @returns the number of update races in RTTimeNanoTS(). + */ +RTDECL(uint32_t) RTTimeDbgRaces(void); + +/** @name RTTimeNanoTS GIP worker functions, for TM. + * @{ */ +/** Pointer to a RTTIMENANOTSDATA structure. */ +typedef struct RTTIMENANOTSDATA *PRTTIMENANOTSDATA; + +/** + * Nanosecond timestamp data. + * + * This is used to keep track of statistics and callback so IPRT + * and TM (VirtualBox) can share code. + * + * @remark Keep this in sync with the assembly version in timesupA.asm. + */ +typedef struct RTTIMENANOTSDATA +{ + /** Where the previous timestamp is stored. + * This is maintained to ensure that time doesn't go backwards or anything. */ + uint64_t volatile *pu64Prev; + + /** + * Helper function that's used by the assembly routines when something goes bust. + * + * @param pData Pointer to this structure. + * @param u64NanoTS The calculated nano ts. + * @param u64DeltaPrev The delta relative to the previously returned timestamp. + * @param u64PrevNanoTS The previously returned timestamp (as it was read it). + */ + DECLCALLBACKMEMBER(void, pfnBad)(PRTTIMENANOTSDATA pData, uint64_t u64NanoTS, uint64_t u64DeltaPrev, uint64_t u64PrevNanoTS); + + /** + * Callback for when rediscovery is required. + * + * @returns Nanosecond timestamp. + * @param pData Pointer to this structure. + */ + DECLCALLBACKMEMBER(uint64_t, pfnRediscover)(PRTTIMENANOTSDATA pData); + + /** + * Callback for when some CPU index related stuff goes wrong. + * + * @returns Nanosecond timestamp. + * @param pData Pointer to this structure. + * @param idApic The APIC ID if available, otherwise (UINT16_MAX-1). + * @param iCpuSet The CPU set index if available, otherwise + * (UINT16_MAX-1). + * @param iGipCpu The GIP CPU array index if available, otherwise + * (UINT16_MAX-1). + */ + DECLCALLBACKMEMBER(uint64_t, pfnBadCpuIndex)(PRTTIMENANOTSDATA pData, uint16_t idApic, uint16_t iCpuSet, uint16_t iGipCpu); + + /** Number of 1ns steps because of overshooting the period. */ + uint32_t c1nsSteps; + /** The number of times the interval expired (overflow). */ + uint32_t cExpired; + /** Number of "bad" previous values. */ + uint32_t cBadPrev; + /** The number of update races. */ + uint32_t cUpdateRaces; +} RTTIMENANOTSDATA; + +#ifndef IN_RING3 +/** + * The Ring-3 layout of the RTTIMENANOTSDATA structure. + */ +typedef struct RTTIMENANOTSDATAR3 +{ + R3PTRTYPE(uint64_t volatile *) pu64Prev; + DECLR3CALLBACKMEMBER(void, pfnBad,(PRTTIMENANOTSDATA pData, uint64_t u64NanoTS, uint64_t u64DeltaPrev, uint64_t u64PrevNanoTS)); + DECLR3CALLBACKMEMBER(uint64_t, pfnRediscover,(PRTTIMENANOTSDATA pData)); + DECLR3CALLBACKMEMBER(uint64_t, pfnBadCpuIndex,(PRTTIMENANOTSDATA pData, uint16_t idApic, uint16_t iCpuSet, uint16_t iGipCpu)); + uint32_t c1nsSteps; + uint32_t cExpired; + uint32_t cBadPrev; + uint32_t cUpdateRaces; +} RTTIMENANOTSDATAR3; +#else +typedef RTTIMENANOTSDATA RTTIMENANOTSDATAR3; +#endif + +#ifndef IN_RING0 +/** + * The Ring-3 layout of the RTTIMENANOTSDATA structure. + */ +typedef struct RTTIMENANOTSDATAR0 +{ + R0PTRTYPE(uint64_t volatile *) pu64Prev; + DECLR0CALLBACKMEMBER(void, pfnBad,(PRTTIMENANOTSDATA pData, uint64_t u64NanoTS, uint64_t u64DeltaPrev, uint64_t u64PrevNanoTS)); + DECLR0CALLBACKMEMBER(uint64_t, pfnRediscover,(PRTTIMENANOTSDATA pData)); + DECLR0CALLBACKMEMBER(uint64_t, pfnBadCpuIndex,(PRTTIMENANOTSDATA pData, uint16_t idApic, uint16_t iCpuSet, uint16_t iGipCpu)); + uint32_t c1nsSteps; + uint32_t cExpired; + uint32_t cBadPrev; + uint32_t cUpdateRaces; +} RTTIMENANOTSDATAR0; +#else +typedef RTTIMENANOTSDATA RTTIMENANOTSDATAR0; +#endif + +#ifndef IN_RC +/** + * The RC layout of the RTTIMENANOTSDATA structure. + */ +typedef struct RTTIMENANOTSDATARC +{ + RCPTRTYPE(uint64_t volatile *) pu64Prev; + DECLRCCALLBACKMEMBER(void, pfnBad,(PRTTIMENANOTSDATA pData, uint64_t u64NanoTS, uint64_t u64DeltaPrev, uint64_t u64PrevNanoTS)); + DECLRCCALLBACKMEMBER(uint64_t, pfnRediscover,(PRTTIMENANOTSDATA pData)); + DECLRCCALLBACKMEMBER(uint64_t, pfnBadCpuIndex,(PRTTIMENANOTSDATA pData, uint16_t idApic, uint16_t iCpuSet, uint16_t iGipCpu)); + uint32_t c1nsSteps; + uint32_t cExpired; + uint32_t cBadPrev; + uint32_t cUpdateRaces; +} RTTIMENANOTSDATARC; +#else +typedef RTTIMENANOTSDATA RTTIMENANOTSDATARC; +#endif + +/** Internal RTTimeNanoTS worker (assembly). */ +typedef DECLCALLBACK(uint64_t) FNTIMENANOTSINTERNAL(PRTTIMENANOTSDATA pData); +/** Pointer to an internal RTTimeNanoTS worker (assembly). */ +typedef FNTIMENANOTSINTERNAL *PFNTIMENANOTSINTERNAL; +RTDECL(uint64_t) RTTimeNanoTSLegacySyncInvarNoDelta(PRTTIMENANOTSDATA pData); +RTDECL(uint64_t) RTTimeNanoTSLFenceSyncInvarNoDelta(PRTTIMENANOTSDATA pData); +#ifdef IN_RING3 +RTDECL(uint64_t) RTTimeNanoTSLegacyAsyncUseApicId(PRTTIMENANOTSDATA pData); +RTDECL(uint64_t) RTTimeNanoTSLegacyAsyncUseRdtscp(PRTTIMENANOTSDATA pData); +RTDECL(uint64_t) RTTimeNanoTSLegacyAsyncUseIdtrLim(PRTTIMENANOTSDATA pData); +RTDECL(uint64_t) RTTimeNanoTSLegacySyncInvarWithDeltaUseApicId(PRTTIMENANOTSDATA pData); +RTDECL(uint64_t) RTTimeNanoTSLegacySyncInvarWithDeltaUseRdtscp(PRTTIMENANOTSDATA pData); +RTDECL(uint64_t) RTTimeNanoTSLegacySyncInvarWithDeltaUseIdtrLim(PRTTIMENANOTSDATA pData); +RTDECL(uint64_t) RTTimeNanoTSLFenceAsyncUseApicId(PRTTIMENANOTSDATA pData); +RTDECL(uint64_t) RTTimeNanoTSLFenceAsyncUseRdtscp(PRTTIMENANOTSDATA pData); +RTDECL(uint64_t) RTTimeNanoTSLFenceAsyncUseIdtrLim(PRTTIMENANOTSDATA pData); +RTDECL(uint64_t) RTTimeNanoTSLFenceSyncInvarWithDeltaUseApicId(PRTTIMENANOTSDATA pData); +RTDECL(uint64_t) RTTimeNanoTSLFenceSyncInvarWithDeltaUseRdtscp(PRTTIMENANOTSDATA pData); +RTDECL(uint64_t) RTTimeNanoTSLFenceSyncInvarWithDeltaUseIdtrLim(PRTTIMENANOTSDATA pData); +#else +RTDECL(uint64_t) RTTimeNanoTSLegacyAsync(PRTTIMENANOTSDATA pData); +RTDECL(uint64_t) RTTimeNanoTSLegacySyncInvarWithDelta(PRTTIMENANOTSDATA pData); +RTDECL(uint64_t) RTTimeNanoTSLFenceAsync(PRTTIMENANOTSDATA pData); +RTDECL(uint64_t) RTTimeNanoTSLFenceSyncInvarWithDelta(PRTTIMENANOTSDATA pData); +#endif + +/** @} */ + + +/** + * Gets the current nanosecond timestamp. + * + * This differs from RTTimeNanoTS in that it will use system APIs and not do any + * resolution or performance optimizations. + * + * @returns nanosecond timestamp. + */ +RTDECL(uint64_t) RTTimeSystemNanoTS(void); + +/** + * Gets the current millisecond timestamp. + * + * This differs from RTTimeNanoTS in that it will use system APIs and not do any + * resolution or performance optimizations. + * + * @returns millisecond timestamp. + */ +RTDECL(uint64_t) RTTimeSystemMilliTS(void); + +/** + * Get the nanosecond timestamp relative to program startup. + * + * @returns Timestamp relative to program startup. + */ +RTDECL(uint64_t) RTTimeProgramNanoTS(void); + +/** + * Get the microsecond timestamp relative to program startup. + * + * @returns Timestamp relative to program startup. + */ +RTDECL(uint64_t) RTTimeProgramMicroTS(void); + +/** + * Get the millisecond timestamp relative to program startup. + * + * @returns Timestamp relative to program startup. + */ +RTDECL(uint64_t) RTTimeProgramMilliTS(void); + +/** + * Get the second timestamp relative to program startup. + * + * @returns Timestamp relative to program startup. + */ +RTDECL(uint32_t) RTTimeProgramSecTS(void); + +/** + * Get the RTTimeNanoTS() of when the program started. + * + * @returns Program startup timestamp. + */ +RTDECL(uint64_t) RTTimeProgramStartNanoTS(void); + +/** @} */ + +RT_C_DECLS_END + +#endif + --- linux-raspi2-4.2.0.orig/ubuntu/vbox/include/iprt/timer.h +++ linux-raspi2-4.2.0/ubuntu/vbox/include/iprt/timer.h @@ -0,0 +1,387 @@ +/** @file + * IPRT - Timer. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + +#ifndef ___iprt_timer_h +#define ___iprt_timer_h + + +#include +#include + + +RT_C_DECLS_BEGIN + +/** @defgroup grp_rt_timer RTTimer - Timer + * + * The IPRT timer API provides a simple abstraction of recurring and one-shot callback timers. + * + * Because of the great variation in the native APIs and the quality of + * the service delivered by those native APIs, the timers are operated + * on at best effort basis. + * + * All the ring-3 implementations are naturally at the mercy of the scheduler, + * which means that the callback rate might vary quite a bit and we might skip + * ticks. Many systems have a restriction that a process can only have one + * timer. IPRT currently makes no efforts at multiplexing timers in those kind + * of situations and will simply fail if you try to create more than one timer. + * + * Things are generally better in ring-0. The implementations will use interrupt + * time callbacks wherever available, and if not, resort to a high priority + * kernel thread. + * + * @ingroup grp_rt + * @{ + */ + + +/** Timer handle. */ +typedef struct RTTIMER *PRTTIMER; + +/** + * Timer callback function. + * + * The context this call is made in varies with different platforms and + * kernel / user mode IPRT. + * + * In kernel mode a timer callback should not waste time, it shouldn't + * waste stack and it should be prepared that some APIs might not work + * correctly because of weird OS restrictions in this context that we + * haven't discovered and avoided yet. Please fix those APIs so they + * at least avoid panics and weird behaviour. + * + * @param pTimer Timer handle. + * @param pvUser User argument. + * @param iTick The current timer tick. This is always 1 on the first + * callback after the timer was started. For omni timers + * this will be 1 when a cpu comes back online. + */ +typedef DECLCALLBACK(void) FNRTTIMER(PRTTIMER pTimer, void *pvUser, uint64_t iTick); +/** Pointer to FNRTTIMER() function. */ +typedef FNRTTIMER *PFNRTTIMER; + + +/** + * Create a recurring timer. + * + * @returns iprt status code. + * @param ppTimer Where to store the timer handle. + * @param uMilliesInterval Milliseconds between the timer ticks. + * This is rounded up to the system granularity. + * @param pfnTimer Callback function which shall be scheduled for execution + * on every timer tick. + * @param pvUser User argument for the callback. + * @see RTTimerCreateEx, RTTimerStart, RTTimerStop, RTTimerChangeInterval, + * RTTimerDestroy, RTTimerGetSystemGranularity + */ +RTDECL(int) RTTimerCreate(PRTTIMER *ppTimer, unsigned uMilliesInterval, PFNRTTIMER pfnTimer, void *pvUser); + +/** + * Create a suspended timer. + * + * @returns iprt status code. + * @retval VERR_NOT_SUPPORTED if an unsupported flag was specfied. + * @retval VERR_CPU_NOT_FOUND if the specified CPU + * + * @param ppTimer Where to store the timer handle. + * @param u64NanoInterval The interval between timer ticks specified in nanoseconds if it's + * a recurring timer. This is rounded to the fit the system timer granularity. + * For one shot timers, pass 0. + * @param fFlags Timer flags. + * @param pfnTimer Callback function which shall be scheduled for execution + * on every timer tick. + * @param pvUser User argument for the callback. + * @see RTTimerStart, RTTimerStop, RTTimerChangeInterval, RTTimerDestroy, + * RTTimerGetSystemGranularity, RTTimerCanDoHighResolution + */ +RTDECL(int) RTTimerCreateEx(PRTTIMER *ppTimer, uint64_t u64NanoInterval, uint32_t fFlags, PFNRTTIMER pfnTimer, void *pvUser); + +/** @name RTTimerCreateEx flags + * @{ */ +/** Any CPU is fine. (Must be 0.) */ +#define RTTIMER_FLAGS_CPU_ANY UINT32_C(0) +/** One specific CPU */ +#define RTTIMER_FLAGS_CPU_SPECIFIC RT_BIT(16) +/** Omni timer, run on all online CPUs. + * @remarks The timer callback isn't necessarily running at the time same time on each CPU. */ +#define RTTIMER_FLAGS_CPU_ALL ( RTTIMER_FLAGS_CPU_MASK | RTTIMER_FLAGS_CPU_SPECIFIC ) +/** CPU mask. */ +#define RTTIMER_FLAGS_CPU_MASK UINT32_C(0xffff) +/** Desire a high resolution timer that works with RTTimerChangeInterval and + * isn't subject to RTTimerGetSystemGranularity rounding. + * @remarks This is quietly ignored if the feature isn't supported. */ +#define RTTIMER_FLAGS_HIGH_RES RT_BIT(17) +/** Convert a CPU set index (0-based) to RTTimerCreateEx flags. + * This will automatically OR in the RTTIMER_FLAGS_CPU_SPECIFIC flag. */ +#define RTTIMER_FLAGS_CPU(iCpu) ( (iCpu) | RTTIMER_FLAGS_CPU_SPECIFIC ) +/** Macro that validates the flags. */ +#define RTTIMER_FLAGS_ARE_VALID(fFlags) \ + ( !((fFlags) & ~((fFlags) & RTTIMER_FLAGS_CPU_SPECIFIC ? UINT32_C(0x3ffff) : UINT32_C(0x30000))) ) +/** @} */ + +/** + * Stops and destroys a running timer. + * + * @returns iprt status code. + * @retval VERR_INVALID_CONTEXT if executing at the wrong IRQL (windows), PIL + * (solaris), or similar. Portable code does not destroy timers with + * preemption (or interrupts) disabled. + * @param pTimer Timer to stop and destroy. NULL is ok. + */ +RTDECL(int) RTTimerDestroy(PRTTIMER pTimer); + +/** + * Starts a suspended timer. + * + * @returns IPRT status code. + * @retval VERR_INVALID_HANDLE if pTimer isn't valid. + * @retval VERR_TIMER_ACTIVE if the timer isn't suspended. + * @retval VERR_CPU_OFFLINE if the CPU the timer was created to run on is not + * online (this include the case where it's not present in the + * system). + * + * @param pTimer The timer to activate. + * @param u64First The RTTimeSystemNanoTS() for when the timer should start + * firing (relative). If 0 is specified, the timer will + * fire ASAP. + * @remarks When RTTimerCanDoHighResolution returns true, this API is + * callable with preemption disabled in ring-0. + * @see RTTimerStop + */ +RTDECL(int) RTTimerStart(PRTTIMER pTimer, uint64_t u64First); + +/** + * Stops an active timer. + * + * @todo May return while the timer callback function is being services on + * some platforms (ring-0 Windows, ring-0 linux). This needs to be + * addressed at some point... + * + * @returns IPRT status code. + * @retval VERR_INVALID_HANDLE if pTimer isn't valid. + * @retval VERR_TIMER_SUSPENDED if the timer isn't active. + * @retval VERR_NOT_SUPPORTED if the IPRT implementation doesn't support + * stopping a timer. + * + * @param pTimer The timer to suspend. + * @remarks Can be called from the timer callback function to stop it. + * @see RTTimerStart + */ +RTDECL(int) RTTimerStop(PRTTIMER pTimer); + +/** + * Changes the interval of a periodic timer. + * + * If the timer is active, it is implementation dependent whether the change + * takes place immediately or after the next tick. To get defined behavior, + * stop the timer before calling this API. + * + * @returns IPRT status code. + * @retval VERR_INVALID_HANDLE if pTimer isn't valid. + * @retval VERR_NOT_SUPPORTED if not supported. + * @retval VERR_INVALID_STATE if not a periodic timer. + * + * @param pTimer The timer to activate. + * @param u64NanoInterval The interval between timer ticks specified in + * nanoseconds. This is rounded to the fit the + * system timer granularity. + * @remarks Callable from the timer callback. Callable with preemption + * disabled in ring-0. + */ +RTDECL(int) RTTimerChangeInterval(PRTTIMER pTimer, uint64_t u64NanoInterval); + +/** + * Gets the (current) timer granularity of the system. + * + * @returns The timer granularity of the system in nanoseconds. + * @see RTTimerRequestSystemGranularity + */ +RTDECL(uint32_t) RTTimerGetSystemGranularity(void); + +/** + * Requests a specific system timer granularity. + * + * Successfull calls to this API must be coupled with the exact same number of + * calls to RTTimerReleaseSystemGranularity() in order to undo any changes made. + * + * + * @returns IPRT status code. + * @retval VERR_NOT_SUPPORTED if the requested value isn't supported by the host platform + * or if the host platform doesn't support modifying the system timer granularity. + * @retval VERR_PERMISSION_DENIED if the caller doesn't have the necessary privilege to + * modify the system timer granularity. + * + * @param u32Request The requested system timer granularity in nanoseconds. + * @param pu32Granted Where to store the granted system granularity. This is the value + * that should be passed to RTTimerReleaseSystemGranularity(). It + * is what RTTimerGetSystemGranularity() would return immediately + * after the change was made. + * + * The value differ from the request in two ways; rounding and + * scale. Meaning if your request is for 10.000.000 you might + * be granted 10.000.055 or 1.000.000. + * @see RTTimerReleaseSystemGranularity, RTTimerGetSystemGranularity + */ +RTDECL(int) RTTimerRequestSystemGranularity(uint32_t u32Request, uint32_t *pu32Granted); + +/** + * Releases a system timer granularity grant acquired by RTTimerRequestSystemGranularity(). + * + * @returns IPRT status code. + * @retval VERR_NOT_SUPPORTED if the host platform doesn't have any way of modifying + * the system timer granularity. + * @retval VERR_WRONG_ORDER if nobody call RTTimerRequestSystemGranularity() with the + * given grant value. + * @param u32Granted The granted system granularity. + * @see RTTimerRequestSystemGranularity + */ +RTDECL(int) RTTimerReleaseSystemGranularity(uint32_t u32Granted); + +/** + * Checks if the system support high resolution timers. + * + * The kind of support we are checking for is the kind of dynamically + * reprogrammable timers employed by recent Solaris and Linux kernels. It also + * implies that we can specify microsecond (or even better maybe) intervals + * without getting into trouble. + * + * @returns true if supported, false it not. + * + * @remarks Returning true also means RTTimerChangeInterval must be implemented + * and RTTimerStart be callable with preemption disabled. + */ +RTDECL(bool) RTTimerCanDoHighResolution(void); + + +/** + * Timer callback function for low res timers. + * + * This is identical to FNRTTIMER except for the first parameter, so + * see FNRTTIMER for details. + * + * @param hTimerLR The low resolution timer handle. + * @param pvUser User argument. + * @param iTick The current timer tick. This is always 1 on the first + * callback after the timer was started. Will jump if we've + * skipped ticks when lagging behind. + */ +typedef DECLCALLBACK(void) FNRTTIMERLR(RTTIMERLR hTimerLR, void *pvUser, uint64_t iTick); +/** Pointer to FNRTTIMER() function. */ +typedef FNRTTIMERLR *PFNRTTIMERLR; + + +/** + * Create a recurring low resolution timer. + * + * @returns iprt status code. + * @param phTimerLR Where to store the timer handle. + * @param uMilliesInterval Milliseconds between the timer ticks, at least 100 ms. + * If higher resolution is required use the other API. + * @param pfnTimer Callback function which shall be scheduled for execution + * on every timer tick. + * @param pvUser User argument for the callback. + * @see RTTimerLRCreateEx, RTTimerLRDestroy, RTTimerLRStop + */ +RTDECL(int) RTTimerLRCreate(PRTTIMERLR phTimerLR, uint32_t uMilliesInterval, PFNRTTIMERLR pfnTimer, void *pvUser); + +/** + * Create a suspended low resolution timer. + * + * @returns iprt status code. + * @retval VERR_NOT_SUPPORTED if an unsupported flag was specfied. + * + * @param phTimerLR Where to store the timer handle. + * @param u64NanoInterval The interval between timer ticks specified in nanoseconds if it's + * a recurring timer, the minimum for is 100000000 ns. + * For one shot timers, pass 0. + * @param fFlags Timer flags. Same as RTTimerCreateEx. + * @param pfnTimer Callback function which shall be scheduled for execution + * on every timer tick. + * @param pvUser User argument for the callback. + * @see RTTimerLRStart, RTTimerLRStop, RTTimerLRDestroy + */ +RTDECL(int) RTTimerLRCreateEx(PRTTIMERLR phTimerLR, uint64_t u64NanoInterval, uint32_t fFlags, PFNRTTIMERLR pfnTimer, void *pvUser); + +/** + * Stops and destroys a running low resolution timer. + * + * @returns iprt status code. + * @param hTimerLR The low resolution timer to stop and destroy. + * NIL_RTTIMERLR is accepted. + */ +RTDECL(int) RTTimerLRDestroy(RTTIMERLR hTimerLR); + +/** + * Starts a low resolution timer. + * + * @returns IPRT status code. + * @retval VERR_INVALID_HANDLE if pTimer isn't valid. + * @retval VERR_TIMER_ACTIVE if the timer isn't suspended. + * + * @param hTimerLR The low resolution timer to activate. + * @param u64First The RTTimeSystemNanoTS() for when the timer should start + * firing (relative), the minimum is 100000000 ns. + * If 0 is specified, the timer will fire ASAP. + * + * @see RTTimerLRStop + */ +RTDECL(int) RTTimerLRStart(RTTIMERLR hTimerLR, uint64_t u64First); + +/** + * Stops an active low resolution timer. + * + * @returns IPRT status code. + * @retval VERR_INVALID_HANDLE if pTimer isn't valid. + * @retval VERR_TIMER_SUSPENDED if the timer isn't active. + * @retval VERR_NOT_SUPPORTED if the IPRT implementation doesn't support stopping a timer. + * + * @param hTimerLR The low resolution timer to suspend. + * + * @see RTTimerLRStart + */ +RTDECL(int) RTTimerLRStop(RTTIMERLR hTimerLR); + +/** + * Changes the interval of a low resolution timer. + * + * If the timer is active, the next tick will occure immediately just like with + * RTTimerLRStart() when u64First parameter is zero. + * + * @returns IPRT status code. + * @retval VERR_INVALID_HANDLE if pTimer isn't valid. + * @retval VERR_NOT_SUPPORTED if not supported. + * + * @param hTimerLR The low resolution timer to update. + * @param u64NanoInterval The interval between timer ticks specified in + * nanoseconds. This is rounded to the fit the + * system timer granularity. + * @remarks Callable from the timer callback. + */ +RTDECL(int) RTTimerLRChangeInterval(RTTIMERLR hTimerLR, uint64_t u64NanoInterval); + +/** @} */ + +RT_C_DECLS_END + +#endif --- linux-raspi2-4.2.0.orig/ubuntu/vbox/include/iprt/types.h +++ linux-raspi2-4.2.0/ubuntu/vbox/include/iprt/types.h @@ -0,0 +1,2605 @@ +/** @file + * IPRT - Types. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + +#ifndef ___iprt_types_h +#define ___iprt_types_h + +#include +#include +#include + +/* + * Include standard C types. + */ +#ifndef IPRT_NO_CRT + +# if defined(IN_XF86_MODULE) && !defined(NO_ANSIC) + /* + * Kludge for xfree86 modules: size_t and other types are redefined. + */ +RT_C_DECLS_BEGIN +# include "xf86_ansic.h" +# undef NULL +RT_C_DECLS_END + +# elif defined(RT_OS_DARWIN) && defined(KERNEL) + /* + * Kludge for the darwin kernel: + * stddef.h is missing IIRC. + */ +# ifndef _PTRDIFF_T +# define _PTRDIFF_T + typedef __darwin_ptrdiff_t ptrdiff_t; +# endif +# include + +# elif defined(RT_OS_FREEBSD) && defined(_KERNEL) + /* + * Kludge for the FreeBSD kernel: + * stddef.h and sys/types.h have slightly different offsetof definitions + * when compiling in kernel mode. This is just to make GCC shut up. + */ +# ifndef _STDDEF_H_ +# undef offsetof +# endif +# include +# ifndef _SYS_TYPES_H_ +# undef offsetof +# endif +# include +# ifndef offsetof +# error "offsetof is not defined..." +# endif + +# elif defined(RT_OS_FREEBSD) && HC_ARCH_BITS == 64 && defined(RT_ARCH_X86) + /* + * Kludge for compiling 32-bit code on a 64-bit FreeBSD: + * FreeBSD declares uint64_t and int64_t wrong (long unsigned and long int + * though they need to be long long unsigned and long long int). These + * defines conflict with our declaration in stdint.h. Adding the defines + * below omits the definitions in the system header. + */ +# include +# define _UINT64_T_DECLARED +# define _INT64_T_DECLARED +# define _UINTPTR_T_DECLARED +# define _INTPTR_T_DECLARED +# include + +# elif defined(RT_OS_LINUX) && defined(__KERNEL__) + /* + * Kludge for the linux kernel: + * 1. sys/types.h doesn't mix with the kernel. + * 2. Starting with 2.6.19, linux/types.h typedefs bool and linux/stddef.h + * declares false and true as enum values. + * 3. Starting with 2.6.24, linux/types.h typedefs uintptr_t. + * We work around these issues here and nowhere else. + */ +# include +# if defined(__cplusplus) + typedef bool _Bool; +# endif +# define bool linux_bool +# define true linux_true +# define false linux_false +# define uintptr_t linux_uintptr_t +# include +# if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,33) +# include +# else +# ifndef AUTOCONF_INCLUDED +# include +# endif +# endif +# include +# if defined(__cplusplus) + /* + * Starting with 3.3, appends 'notrace' (which + * expands to __attribute__((no_instrument_function))) to inline, + * __inline and __inline__. Revert that. + */ +# undef inline +# define inline inline +# undef __inline__ +# define __inline__ __inline__ +# undef __inline +# define __inline __inline +# endif +# include +# include + /* + * Starting with 3.4, defines NULL as '((void*)0)' which + * does not work for C++ code. + */ +# undef NULL +# undef uintptr_t +# ifdef __GNUC__ +# if (__GNUC__ * 100 + __GNUC_MINOR__) <= 400 + /* + * does + * #define __inline__ __inline__ __attribute__((always_inline)) + * in some older Linux kernels. Forcing inlining will fail for some RTStrA* + * functions with gcc <= 4.0 due to passing variable argument lists. + */ +# undef __inline__ +# define __inline__ __inline__ +# endif +# endif +# undef false +# undef true +# undef bool +# else +# include +# include +# endif + + +/* Define any types missing from sys/types.h on windows. */ +# ifdef _MSC_VER +# undef ssize_t + typedef intptr_t ssize_t; +# endif + +#else /* no crt */ +# include +#endif /* no crt */ + + + +/** @def NULL + * NULL pointer. + */ +#ifndef NULL +# ifdef __cplusplus +# define NULL 0 +# else +# define NULL ((void*)0) +# endif +#endif + + + +/** @defgroup grp_rt_types IPRT Base Types + * @{ + */ + +/* define wchar_t, we don't wanna include all the wcsstuff to get this. */ +#ifdef _MSC_VER +# ifndef _WCHAR_T_DEFINED + typedef unsigned short wchar_t; +# define _WCHAR_T_DEFINED +# endif +#endif +#ifdef __GNUC__ +/** @todo wchar_t on GNUC */ +#endif + +/* + * C doesn't have bool, nor does VisualAge for C++ v3.08. + */ +#if !defined(__cplusplus) || (defined(__IBMCPP__) && defined(RT_OS_OS2)) +# if defined(__GNUC__) +# if defined(RT_OS_LINUX) && __GNUC__ < 3 +typedef uint8_t bool; +# elif defined(RT_OS_FREEBSD) +# ifndef __bool_true_false_are_defined +typedef _Bool bool; +# endif +# else +# if (defined(RT_OS_DARWIN) || defined(RT_OS_HAIKU)) && (defined(_STDBOOL_H) || defined(__STDBOOL_H)) +# undef bool +# endif +typedef _Bool bool; +# endif +# else +typedef unsigned char bool; +# endif +# ifndef true +# define true (1) +# endif +# ifndef false +# define false (0) +# endif +#endif + +/** + * 128-bit unsigned integer. + */ +#if defined(__GNUC__) && defined(RT_ARCH_AMD64) +typedef __uint128_t uint128_t; +#else +typedef struct uint128_s +{ +# ifdef RT_BIG_ENDIAN + uint64_t Hi; + uint64_t Lo; +# else + uint64_t Lo; + uint64_t Hi; +# endif +} uint128_t; +#endif + + +/** + * 128-bit signed integer. + */ +#if defined(__GNUC__) && defined(RT_ARCH_AMD64) +typedef __int128_t int128_t; +#else +typedef struct int128_s +{ +# ifdef RT_BIG_ENDIAN + int64_t Hi; + uint64_t Lo; +# else + uint64_t Lo; + int64_t Hi; +# endif +} int128_t; +#endif + + +/** + * 16-bit unsigned integer union. + */ +typedef union RTUINT16U +{ + /** natural view. */ + uint16_t u; + + /** 16-bit view. */ + uint16_t au16[1]; + /** 8-bit view. */ + uint8_t au8[2]; + /** 16-bit hi/lo view. */ + struct + { +#ifdef RT_BIG_ENDIAN + uint8_t Hi; + uint8_t Lo; +#else + uint8_t Lo; + uint8_t Hi; +#endif + } s; +} RTUINT16U; +/** Pointer to a 16-bit unsigned integer union. */ +typedef RTUINT16U *PRTUINT16U; +/** Pointer to a const 32-bit unsigned integer union. */ +typedef const RTUINT16U *PCRTUINT16U; + + +/** + * 32-bit unsigned integer union. + */ +typedef union RTUINT32U +{ + /** natural view. */ + uint32_t u; + /** Hi/Low view. */ + struct + { +#ifdef RT_BIG_ENDIAN + uint16_t Hi; + uint16_t Lo; +#else + uint16_t Lo; + uint16_t Hi; +#endif + } s; + /** Word view. */ + struct + { +#ifdef RT_BIG_ENDIAN + uint16_t w1; + uint16_t w0; +#else + uint16_t w0; + uint16_t w1; +#endif + } Words; + + /** 32-bit view. */ + uint32_t au32[1]; + /** 16-bit view. */ + uint16_t au16[2]; + /** 8-bit view. */ + uint8_t au8[4]; +} RTUINT32U; +/** Pointer to a 32-bit unsigned integer union. */ +typedef RTUINT32U *PRTUINT32U; +/** Pointer to a const 32-bit unsigned integer union. */ +typedef const RTUINT32U *PCRTUINT32U; + + +/** + * 64-bit unsigned integer union. + */ +typedef union RTUINT64U +{ + /** Natural view. */ + uint64_t u; + /** Hi/Low view. */ + struct + { +#ifdef RT_BIG_ENDIAN + uint32_t Hi; + uint32_t Lo; +#else + uint32_t Lo; + uint32_t Hi; +#endif + } s; + /** Double-Word view. */ + struct + { +#ifdef RT_BIG_ENDIAN + uint32_t dw1; + uint32_t dw0; +#else + uint32_t dw0; + uint32_t dw1; +#endif + } DWords; + /** Word view. */ + struct + { +#ifdef RT_BIG_ENDIAN + uint16_t w3; + uint16_t w2; + uint16_t w1; + uint16_t w0; +#else + uint16_t w0; + uint16_t w1; + uint16_t w2; + uint16_t w3; +#endif + } Words; + + /** 64-bit view. */ + uint64_t au64[1]; + /** 32-bit view. */ + uint32_t au32[2]; + /** 16-bit view. */ + uint16_t au16[4]; + /** 8-bit view. */ + uint8_t au8[8]; +} RTUINT64U; +/** Pointer to a 64-bit unsigned integer union. */ +typedef RTUINT64U *PRTUINT64U; +/** Pointer to a const 64-bit unsigned integer union. */ +typedef const RTUINT64U *PCRTUINT64U; + + +/** + * 128-bit unsigned integer union. + */ +#pragma pack(1) +typedef union RTUINT128U +{ + /** Hi/Low view. + * @remarks We put this first so we can have portable initializers + * (RTUINT128_INIT) */ + struct + { +#ifdef RT_BIG_ENDIAN + uint64_t Hi; + uint64_t Lo; +#else + uint64_t Lo; + uint64_t Hi; +#endif + } s; + + /** Natural view. + * WARNING! This member depends on the compiler supporting 128-bit stuff. */ + uint128_t u; + + /** Quad-Word view. */ + struct + { +#ifdef RT_BIG_ENDIAN + uint64_t qw1; + uint64_t qw0; +#else + uint64_t qw0; + uint64_t qw1; +#endif + } QWords; + /** Double-Word view. */ + struct + { +#ifdef RT_BIG_ENDIAN + uint32_t dw3; + uint32_t dw2; + uint32_t dw1; + uint32_t dw0; +#else + uint32_t dw0; + uint32_t dw1; + uint32_t dw2; + uint32_t dw3; +#endif + } DWords; + /** Word view. */ + struct + { +#ifdef RT_BIG_ENDIAN + uint16_t w7; + uint16_t w6; + uint16_t w5; + uint16_t w4; + uint16_t w3; + uint16_t w2; + uint16_t w1; + uint16_t w0; +#else + uint16_t w0; + uint16_t w1; + uint16_t w2; + uint16_t w3; + uint16_t w4; + uint16_t w5; + uint16_t w6; + uint16_t w7; +#endif + } Words; + + /** 64-bit view. */ + uint64_t au64[2]; + /** 32-bit view. */ + uint32_t au32[4]; + /** 16-bit view. */ + uint16_t au16[8]; + /** 8-bit view. */ + uint8_t au8[16]; +} RTUINT128U; +#pragma pack() +/** Pointer to a 64-bit unsigned integer union. */ +typedef RTUINT128U *PRTUINT128U; +/** Pointer to a const 64-bit unsigned integer union. */ +typedef const RTUINT128U *PCRTUINT128U; + +/** @def RTUINT128_INIT + * Portable RTUINT128U initializer. */ +#ifdef RT_BIG_ENDIAN +# define RTUINT128_INIT(a_Hi, a_Lo) { { a_Hi, a_Lo } } +#else +# define RTUINT128_INIT(a_Hi, a_Lo) { { a_Lo, a_Hi } } +#endif + +/** @def RTUINT128_INIT_C + * Portable RTUINT128U initializer for 64-bit constants. */ +#ifdef RT_BIG_ENDIAN +# define RTUINT128_INIT_C(a_Hi, a_Lo) { { UINT64_C(a_Hi), UINT64_C(a_Lo) } } +#else +# define RTUINT128_INIT_C(a_Hi, a_Lo) { { UINT64_C(a_Lo), UINT64_C(a_Hi) } } +#endif + + +/** + * Double precision floating point format (64-bit). + */ +typedef union RTFLOAT64U +{ +#if defined(RT_ARCH_AMD64) || defined(RT_ARCH_X86) + /** Double view. */ + double rd; +#endif + /** Format using regular bitfields. */ + struct + { +# ifdef RT_BIG_ENDIAN + /** The sign indicator. */ + uint32_t fSign : 1; + /** The exponent (offseted by 1023). */ + uint32_t uExponent : 11; + /** The fraction, bits 32 thru 51. */ + uint32_t u20FractionHigh : 20; + /** The fraction, bits 0 thru 31. */ + uint32_t u32FractionLow; +# else + /** The fraction, bits 0 thru 31. */ + uint32_t u32FractionLow; + /** The fraction, bits 32 thru 51. */ + uint32_t u20FractionHigh : 20; + /** The exponent (offseted by 1023). */ + uint32_t uExponent : 11; + /** The sign indicator. */ + uint32_t fSign : 1; +# endif + } s; + +#ifdef RT_COMPILER_GROKS_64BIT_BITFIELDS + /** Format using 64-bit bitfields. */ + RT_GCC_EXTENSION struct + { +# ifdef RT_BIG_ENDIAN + /** The sign indicator. */ + RT_GCC_EXTENSION uint64_t fSign : 1; + /** The exponent (offseted by 1023). */ + RT_GCC_EXTENSION uint64_t uExponent : 11; + /** The fraction. */ + RT_GCC_EXTENSION uint64_t uFraction : 52; +# else + /** The fraction. */ + RT_GCC_EXTENSION uint64_t uFraction : 52; + /** The exponent (offseted by 1023). */ + RT_GCC_EXTENSION uint64_t uExponent : 11; + /** The sign indicator. */ + RT_GCC_EXTENSION uint64_t fSign : 1; +# endif + } s64; +#endif + + /** 64-bit view. */ + uint64_t au64[1]; + /** 32-bit view. */ + uint32_t au32[2]; + /** 16-bit view. */ + uint16_t au16[4]; + /** 8-bit view. */ + uint8_t au8[8]; +} RTFLOAT64U; +/** Pointer to a double precision floating point format union. */ +typedef RTFLOAT64U *PRTFLOAT64U; +/** Pointer to a const double precision floating point format union. */ +typedef const RTFLOAT64U *PCRTFLOAT64U; + + +#if !defined(__IBMCPP__) && !defined(__IBMC__) + +/** + * Extended Double precision floating point format (80-bit). + */ +#pragma pack(1) +typedef union RTFLOAT80U +{ + /** Format using bitfields. */ + RT_GCC_EXTENSION struct + { +# ifdef RT_BIG_ENDIAN + /** The sign indicator. */ + RT_GCC_EXTENSION uint16_t fSign : 1; + /** The exponent (offseted by 16383). */ + RT_GCC_EXTENSION uint16_t uExponent : 15; + /** The mantissa. */ + uint64_t u64Mantissa; +# else + /** The mantissa. */ + uint64_t u64Mantissa; + /** The exponent (offseted by 16383). */ + RT_GCC_EXTENSION uint16_t uExponent : 15; + /** The sign indicator. */ + RT_GCC_EXTENSION uint16_t fSign : 1; +# endif + } s; + + /** 64-bit view. */ + uint64_t au64[1]; + /** 32-bit view. */ + uint32_t au32[2]; + /** 16-bit view. */ + uint16_t au16[5]; + /** 8-bit view. */ + uint8_t au8[10]; +} RTFLOAT80U; +#pragma pack() +/** Pointer to a extended precision floating point format union. */ +typedef RTFLOAT80U *PRTFLOAT80U; +/** Pointer to a const extended precision floating point format union. */ +typedef const RTFLOAT80U *PCRTFLOAT80U; + + +/** + * A variant of RTFLOAT80U that may be larger than 80-bits depending on how the + * compiler implements long double. + */ +#pragma pack(1) +typedef union RTFLOAT80U2 +{ +#ifdef RT_COMPILER_WITH_80BIT_LONG_DOUBLE + /** Long double view. */ + long double lrd; +#endif + /** Format using bitfields. */ + RT_GCC_EXTENSION struct + { +#ifdef RT_BIG_ENDIAN + /** The sign indicator. */ + RT_GCC_EXTENSION uint16_t fSign : 1; + /** The exponent (offseted by 16383). */ + RT_GCC_EXTENSION uint16_t uExponent : 15; + /** The mantissa. */ + uint64_t u64Mantissa; +#else + /** The mantissa. */ + uint64_t u64Mantissa; + /** The exponent (offseted by 16383). */ + RT_GCC_EXTENSION uint16_t uExponent : 15; + /** The sign indicator. */ + RT_GCC_EXTENSION uint16_t fSign : 1; +#endif + } s; + + /** Bitfield exposing the J bit and the fraction. */ + RT_GCC_EXTENSION struct + { +#ifdef RT_BIG_ENDIAN + /** The sign indicator. */ + RT_GCC_EXTENSION uint16_t fSign : 1; + /** The exponent (offseted by 16383). */ + RT_GCC_EXTENSION uint16_t uExponent : 15; + /** The J bit, aka the integer bit. */ + uint32_t fInteger; + /** The fraction, bits 32 thru 62. */ + uint32_t u31FractionHigh : 31; + /** The fraction, bits 0 thru 31. */ + uint32_t u32FractionLow : 32; +#else + /** The fraction, bits 0 thru 31. */ + uint32_t u32FractionLow : 32; + /** The fraction, bits 32 thru 62. */ + uint32_t u31FractionHigh : 31; + /** The J bit, aka the integer bit. */ + uint32_t fInteger; + /** The exponent (offseted by 16383). */ + RT_GCC_EXTENSION uint16_t uExponent : 15; + /** The sign indicator. */ + RT_GCC_EXTENSION uint16_t fSign : 1; +#endif + } sj; + +#ifdef RT_COMPILER_GROKS_64BIT_BITFIELDS + /** 64-bit bitfields exposing the J bit and the fraction. */ + RT_GCC_EXTENSION struct + { +# ifdef RT_BIG_ENDIAN + /** The sign indicator. */ + RT_GCC_EXTENSION uint16_t fSign : 1; + /** The exponent (offseted by 16383). */ + RT_GCC_EXTENSION uint16_t uExponent : 15; + /** The J bit, aka the integer bit. */ + RT_GCC_EXTENSION uint64_t fInteger : 1; + /** The fraction. */ + RT_GCC_EXTENSION uint64_t u63Fraction : 63; +# else + /** The fraction. */ + RT_GCC_EXTENSION uint64_t u63Fraction : 63; + /** The J bit, aka the integer bit. */ + RT_GCC_EXTENSION uint64_t fInteger : 1; + /** The exponent (offseted by 16383). */ + RT_GCC_EXTENSION uint16_t uExponent : 15; + /** The sign indicator. */ + RT_GCC_EXTENSION uint16_t fSign : 1; +# endif + } sj64; +#endif + + /** 64-bit view. */ + uint64_t au64[1]; + /** 32-bit view. */ + uint32_t au32[2]; + /** 16-bit view. */ + uint16_t au16[5]; + /** 8-bit view. */ + uint8_t au8[10]; +} RTFLOAT80U2; +#pragma pack() +/** Pointer to a extended precision floating point format union, 2nd + * variant. */ +typedef RTFLOAT80U2 *PRTFLOAT80U2; +/** Pointer to a const extended precision floating point format union, 2nd + * variant. */ +typedef const RTFLOAT80U2 *PCRTFLOAT80U2; + +#endif /* uint16_t bitfields doesn't work */ + + +/** Generic function type. + * @see PFNRT + */ +typedef DECLCALLBACK(void) FNRT(void); + +/** Generic function pointer. + * With -pedantic, gcc-4 complains when casting a function to a data object, for + * example: + * + * @code + * void foo(void) + * { + * } + * + * void *bar = (void *)foo; + * @endcode + * + * The compiler would warn with "ISO C++ forbids casting between + * pointer-to-function and pointer-to-object". The purpose of this warning is + * not to bother the programmer but to point out that he is probably doing + * something dangerous, assigning a pointer to executable code to a data object. + */ +typedef FNRT *PFNRT; + +/** Millisecond interval. */ +typedef uint32_t RTMSINTERVAL; +/** Pointer to a millisecond interval. */ +typedef RTMSINTERVAL *PRTMSINTERVAL; +/** Pointer to a const millisecond interval. */ +typedef const RTMSINTERVAL *PCRTMSINTERVAL; + +/** Pointer to a time spec structure. */ +typedef struct RTTIMESPEC *PRTTIMESPEC; +/** Pointer to a const time spec structure. */ +typedef const struct RTTIMESPEC *PCRTTIMESPEC; + + + +/** @defgroup grp_rt_types_both Common Guest and Host Context Basic Types + * @{ + */ + +/** Signed integer which can contain both GC and HC pointers. */ +#if (HC_ARCH_BITS == 32 && GC_ARCH_BITS == 32) +typedef int32_t RTINTPTR; +#elif (HC_ARCH_BITS == 64 || GC_ARCH_BITS == 64) +typedef int64_t RTINTPTR; +#else +# error Unsupported HC_ARCH_BITS and/or GC_ARCH_BITS values. +#endif +/** Pointer to signed integer which can contain both GC and HC pointers. */ +typedef RTINTPTR *PRTINTPTR; +/** Pointer const to signed integer which can contain both GC and HC pointers. */ +typedef const RTINTPTR *PCRTINTPTR; +/** The maximum value the RTINTPTR type can hold. */ +#if (HC_ARCH_BITS == 32 && GC_ARCH_BITS == 32) +# define RTINTPTR_MAX INT32_MAX +#elif (HC_ARCH_BITS == 64 || GC_ARCH_BITS == 64) +# define RTINTPTR_MAX INT64_MAX +#else +# error Unsupported HC_ARCH_BITS and/or GC_ARCH_BITS values. +#endif +/** The minimum value the RTINTPTR type can hold. */ +#if (HC_ARCH_BITS == 32 && GC_ARCH_BITS == 32) +# define RTINTPTR_MIN INT32_MIN +#elif (HC_ARCH_BITS == 64 || GC_ARCH_BITS == 64) +# define RTINTPTR_MIN INT64_MIN +#else +# error Unsupported HC_ARCH_BITS and/or GC_ARCH_BITS values. +#endif + +/** Unsigned integer which can contain both GC and HC pointers. */ +#if (HC_ARCH_BITS == 32 && GC_ARCH_BITS == 32) +typedef uint32_t RTUINTPTR; +#elif (HC_ARCH_BITS == 64 || GC_ARCH_BITS == 64) +typedef uint64_t RTUINTPTR; +#else +# error Unsupported HC_ARCH_BITS and/or GC_ARCH_BITS values. +#endif +/** Pointer to unsigned integer which can contain both GC and HC pointers. */ +typedef RTUINTPTR *PRTUINTPTR; +/** Pointer const to unsigned integer which can contain both GC and HC pointers. */ +typedef const RTUINTPTR *PCRTUINTPTR; +/** The maximum value the RTUINTPTR type can hold. */ +#if (HC_ARCH_BITS == 32 && GC_ARCH_BITS == 32) +# define RTUINTPTR_MAX UINT32_MAX +#elif (HC_ARCH_BITS == 64 || GC_ARCH_BITS == 64) +# define RTUINTPTR_MAX UINT64_MAX +#else +# error Unsupported HC_ARCH_BITS and/or GC_ARCH_BITS values. +#endif + +/** Signed integer. */ +typedef int32_t RTINT; +/** Pointer to signed integer. */ +typedef RTINT *PRTINT; +/** Pointer to const signed integer. */ +typedef const RTINT *PCRTINT; + +/** Unsigned integer. */ +typedef uint32_t RTUINT; +/** Pointer to unsigned integer. */ +typedef RTUINT *PRTUINT; +/** Pointer to const unsigned integer. */ +typedef const RTUINT *PCRTUINT; + +/** A file offset / size (off_t). */ +typedef int64_t RTFOFF; +/** Pointer to a file offset / size. */ +typedef RTFOFF *PRTFOFF; +/** The max value for RTFOFF. */ +#define RTFOFF_MAX INT64_MAX +/** The min value for RTFOFF. */ +#define RTFOFF_MIN INT64_MIN + +/** File mode (see iprt/fs.h). */ +typedef uint32_t RTFMODE; +/** Pointer to file mode. */ +typedef RTFMODE *PRTFMODE; + +/** Device unix number. */ +typedef uint32_t RTDEV; +/** Pointer to a device unix number. */ +typedef RTDEV *PRTDEV; + +/** @name RTDEV Macros + * @{ */ +/** + * Our makedev macro. + * @returns RTDEV + * @param uMajor The major device number. + * @param uMinor The minor device number. + */ +#define RTDEV_MAKE(uMajor, uMinor) ((RTDEV)( ((RTDEV)(uMajor) << 24) | (uMinor & UINT32_C(0x00ffffff)) )) +/** + * Get the major device node number from an RTDEV type. + * @returns The major device number of @a uDev + * @param uDev The device number. + */ +#define RTDEV_MAJOR(uDev) ((uDev) >> 24) +/** + * Get the minor device node number from an RTDEV type. + * @returns The minor device number of @a uDev + * @param uDev The device number. + */ +#define RTDEV_MINOR(uDev) ((uDev) & UINT32_C(0x00ffffff)) +/** @} */ + +/** i-node number. */ +typedef uint64_t RTINODE; +/** Pointer to a i-node number. */ +typedef RTINODE *PRTINODE; + +/** User id. */ +typedef uint32_t RTUID; +/** Pointer to a user id. */ +typedef RTUID *PRTUID; +/** NIL user id. + * @todo check this for portability! */ +#define NIL_RTUID (~(RTUID)0) + +/** Group id. */ +typedef uint32_t RTGID; +/** Pointer to a group id. */ +typedef RTGID *PRTGID; +/** NIL group id. + * @todo check this for portability! */ +#define NIL_RTGID (~(RTGID)0) + +/** I/O Port. */ +typedef uint16_t RTIOPORT; +/** Pointer to I/O Port. */ +typedef RTIOPORT *PRTIOPORT; +/** Pointer to const I/O Port. */ +typedef const RTIOPORT *PCRTIOPORT; + +/** Selector. */ +typedef uint16_t RTSEL; +/** Pointer to selector. */ +typedef RTSEL *PRTSEL; +/** Pointer to const selector. */ +typedef const RTSEL *PCRTSEL; +/** Max selector value. */ +#define RTSEL_MAX UINT16_MAX + +/** Far 16-bit pointer. */ +#pragma pack(1) +typedef struct RTFAR16 +{ + uint16_t off; + RTSEL sel; +} RTFAR16; +#pragma pack() +/** Pointer to Far 16-bit pointer. */ +typedef RTFAR16 *PRTFAR16; +/** Pointer to const Far 16-bit pointer. */ +typedef const RTFAR16 *PCRTFAR16; + +/** Far 32-bit pointer. */ +#pragma pack(1) +typedef struct RTFAR32 +{ + uint32_t off; + RTSEL sel; +} RTFAR32; +#pragma pack() +/** Pointer to Far 32-bit pointer. */ +typedef RTFAR32 *PRTFAR32; +/** Pointer to const Far 32-bit pointer. */ +typedef const RTFAR32 *PCRTFAR32; + +/** Far 64-bit pointer. */ +#pragma pack(1) +typedef struct RTFAR64 +{ + uint64_t off; + RTSEL sel; +} RTFAR64; +#pragma pack() +/** Pointer to Far 64-bit pointer. */ +typedef RTFAR64 *PRTFAR64; +/** Pointer to const Far 64-bit pointer. */ +typedef const RTFAR64 *PCRTFAR64; + +/** @} */ + + +/** @defgroup grp_rt_types_hc Host Context Basic Types + * @{ + */ + +/** HC Natural signed integer. + * @deprecated silly type. */ +typedef int32_t RTHCINT; +/** Pointer to HC Natural signed integer. + * @deprecated silly type. */ +typedef RTHCINT *PRTHCINT; +/** Pointer to const HC Natural signed integer. + * @deprecated silly type. */ +typedef const RTHCINT *PCRTHCINT; + +/** HC Natural unsigned integer. + * @deprecated silly type. */ +typedef uint32_t RTHCUINT; +/** Pointer to HC Natural unsigned integer. + * @deprecated silly type. */ +typedef RTHCUINT *PRTHCUINT; +/** Pointer to const HC Natural unsigned integer. + * @deprecated silly type. */ +typedef const RTHCUINT *PCRTHCUINT; + + +/** Signed integer which can contain a HC pointer. */ +#if HC_ARCH_BITS == 32 +typedef int32_t RTHCINTPTR; +#elif HC_ARCH_BITS == 64 +typedef int64_t RTHCINTPTR; +#else +# error Unsupported HC_ARCH_BITS value. +#endif +/** Pointer to signed integer which can contain a HC pointer. */ +typedef RTHCINTPTR *PRTHCINTPTR; +/** Pointer to const signed integer which can contain a HC pointer. */ +typedef const RTHCINTPTR *PCRTHCINTPTR; +/** Max RTHCINTPTR value. */ +#if HC_ARCH_BITS == 32 +# define RTHCINTPTR_MAX INT32_MAX +#else +# define RTHCINTPTR_MAX INT64_MAX +#endif +/** Min RTHCINTPTR value. */ +#if HC_ARCH_BITS == 32 +# define RTHCINTPTR_MIN INT32_MIN +#else +# define RTHCINTPTR_MIN INT64_MIN +#endif + +/** Signed integer which can contain a HC ring-3 pointer. */ +#if R3_ARCH_BITS == 32 +typedef int32_t RTR3INTPTR; +#elif R3_ARCH_BITS == 64 +typedef int64_t RTR3INTPTR; +#else +# error Unsupported R3_ARCH_BITS value. +#endif +/** Pointer to signed integer which can contain a HC ring-3 pointer. */ +typedef RTR3INTPTR *PRTR3INTPTR; +/** Pointer to const signed integer which can contain a HC ring-3 pointer. */ +typedef const RTR3INTPTR *PCRTR3INTPTR; +/** Max RTR3INTPTR value. */ +#if R3_ARCH_BITS == 32 +# define RTR3INTPTR_MAX INT32_MAX +#else +# define RTR3INTPTR_MAX INT64_MAX +#endif +/** Min RTR3INTPTR value. */ +#if R3_ARCH_BITS == 32 +# define RTR3INTPTR_MIN INT32_MIN +#else +# define RTR3INTPTR_MIN INT64_MIN +#endif + +/** Signed integer which can contain a HC ring-0 pointer. */ +#if R0_ARCH_BITS == 32 +typedef int32_t RTR0INTPTR; +#elif R0_ARCH_BITS == 64 +typedef int64_t RTR0INTPTR; +#else +# error Unsupported R0_ARCH_BITS value. +#endif +/** Pointer to signed integer which can contain a HC ring-0 pointer. */ +typedef RTR0INTPTR *PRTR0INTPTR; +/** Pointer to const signed integer which can contain a HC ring-0 pointer. */ +typedef const RTR0INTPTR *PCRTR0INTPTR; +/** Max RTR0INTPTR value. */ +#if R0_ARCH_BITS == 32 +# define RTR0INTPTR_MAX INT32_MAX +#else +# define RTR0INTPTR_MAX INT64_MAX +#endif +/** Min RTHCINTPTR value. */ +#if R0_ARCH_BITS == 32 +# define RTR0INTPTR_MIN INT32_MIN +#else +# define RTR0INTPTR_MIN INT64_MIN +#endif + + +/** Unsigned integer which can contain a HC pointer. */ +#if HC_ARCH_BITS == 32 +typedef uint32_t RTHCUINTPTR; +#elif HC_ARCH_BITS == 64 +typedef uint64_t RTHCUINTPTR; +#else +# error Unsupported HC_ARCH_BITS value. +#endif +/** Pointer to unsigned integer which can contain a HC pointer. */ +typedef RTHCUINTPTR *PRTHCUINTPTR; +/** Pointer to unsigned integer which can contain a HC pointer. */ +typedef const RTHCUINTPTR *PCRTHCUINTPTR; +/** Max RTHCUINTTPR value. */ +#if HC_ARCH_BITS == 32 +# define RTHCUINTPTR_MAX UINT32_MAX +#else +# define RTHCUINTPTR_MAX UINT64_MAX +#endif + +/** Unsigned integer which can contain a HC ring-3 pointer. */ +#if R3_ARCH_BITS == 32 +typedef uint32_t RTR3UINTPTR; +#elif R3_ARCH_BITS == 64 +typedef uint64_t RTR3UINTPTR; +#else +# error Unsupported R3_ARCH_BITS value. +#endif +/** Pointer to unsigned integer which can contain a HC ring-3 pointer. */ +typedef RTR3UINTPTR *PRTR3UINTPTR; +/** Pointer to unsigned integer which can contain a HC ring-3 pointer. */ +typedef const RTR3UINTPTR *PCRTR3UINTPTR; +/** Max RTHCUINTTPR value. */ +#if R3_ARCH_BITS == 32 +# define RTR3UINTPTR_MAX UINT32_MAX +#else +# define RTR3UINTPTR_MAX UINT64_MAX +#endif + +/** Unsigned integer which can contain a HC ring-0 pointer. */ +#if R0_ARCH_BITS == 32 +typedef uint32_t RTR0UINTPTR; +#elif R0_ARCH_BITS == 64 +typedef uint64_t RTR0UINTPTR; +#else +# error Unsupported R0_ARCH_BITS value. +#endif +/** Pointer to unsigned integer which can contain a HC ring-0 pointer. */ +typedef RTR0UINTPTR *PRTR0UINTPTR; +/** Pointer to unsigned integer which can contain a HC ring-0 pointer. */ +typedef const RTR0UINTPTR *PCRTR0UINTPTR; +/** Max RTR0UINTTPR value. */ +#if HC_ARCH_BITS == 32 +# define RTR0UINTPTR_MAX UINT32_MAX +#else +# define RTR0UINTPTR_MAX UINT64_MAX +#endif + + +/** Host Physical Memory Address. */ +typedef uint64_t RTHCPHYS; +/** Pointer to Host Physical Memory Address. */ +typedef RTHCPHYS *PRTHCPHYS; +/** Pointer to const Host Physical Memory Address. */ +typedef const RTHCPHYS *PCRTHCPHYS; +/** @def NIL_RTHCPHYS + * NIL HC Physical Address. + * NIL_RTHCPHYS is used to signal an invalid physical address, similar + * to the NULL pointer. + */ +#define NIL_RTHCPHYS (~(RTHCPHYS)0) +/** Max RTHCPHYS value. */ +#define RTHCPHYS_MAX UINT64_MAX + + +/** HC pointer. */ +#ifndef IN_RC +typedef void * RTHCPTR; +#else +typedef RTHCUINTPTR RTHCPTR; +#endif +/** Pointer to HC pointer. */ +typedef RTHCPTR *PRTHCPTR; +/** Pointer to const HC pointer. */ +typedef const RTHCPTR *PCRTHCPTR; +/** @def NIL_RTHCPTR + * NIL HC pointer. + */ +#define NIL_RTHCPTR ((RTHCPTR)0) +/** Max RTHCPTR value. */ +#define RTHCPTR_MAX ((RTHCPTR)RTHCUINTPTR_MAX) + + +/** HC ring-3 pointer. */ +#ifdef IN_RING3 +typedef void * RTR3PTR; +#else +typedef RTR3UINTPTR RTR3PTR; +#endif +/** Pointer to HC ring-3 pointer. */ +typedef RTR3PTR *PRTR3PTR; +/** Pointer to const HC ring-3 pointer. */ +typedef const RTR3PTR *PCRTR3PTR; +/** @def NIL_RTR3PTR + * NIL HC ring-3 pointer. + */ +#ifndef IN_RING3 +# define NIL_RTR3PTR ((RTR3PTR)0) +#else +# define NIL_RTR3PTR (NULL) +#endif +/** Max RTR3PTR value. */ +#define RTR3PTR_MAX ((RTR3PTR)RTR3UINTPTR_MAX) + +/** HC ring-0 pointer. */ +#ifdef IN_RING0 +typedef void * RTR0PTR; +#else +typedef RTR0UINTPTR RTR0PTR; +#endif +/** Pointer to HC ring-0 pointer. */ +typedef RTR0PTR *PRTR0PTR; +/** Pointer to const HC ring-0 pointer. */ +typedef const RTR0PTR *PCRTR0PTR; +/** @def NIL_RTR0PTR + * NIL HC ring-0 pointer. + */ +#ifndef IN_RING0 +# define NIL_RTR0PTR ((RTR0PTR)0) +#else +# define NIL_RTR0PTR (NULL) +#endif +/** Max RTR3PTR value. */ +#define RTR0PTR_MAX ((RTR0PTR)RTR0UINTPTR_MAX) + + +/** Unsigned integer register in the host context. */ +#if HC_ARCH_BITS == 32 +typedef uint32_t RTHCUINTREG; +#elif HC_ARCH_BITS == 64 +typedef uint64_t RTHCUINTREG; +#else +# error "Unsupported HC_ARCH_BITS!" +#endif +/** Pointer to an unsigned integer register in the host context. */ +typedef RTHCUINTREG *PRTHCUINTREG; +/** Pointer to a const unsigned integer register in the host context. */ +typedef const RTHCUINTREG *PCRTHCUINTREG; + +/** Unsigned integer register in the host ring-3 context. */ +#if R3_ARCH_BITS == 32 +typedef uint32_t RTR3UINTREG; +#elif R3_ARCH_BITS == 64 +typedef uint64_t RTR3UINTREG; +#else +# error "Unsupported R3_ARCH_BITS!" +#endif +/** Pointer to an unsigned integer register in the host ring-3 context. */ +typedef RTR3UINTREG *PRTR3UINTREG; +/** Pointer to a const unsigned integer register in the host ring-3 context. */ +typedef const RTR3UINTREG *PCRTR3UINTREG; + +/** Unsigned integer register in the host ring-3 context. */ +#if R0_ARCH_BITS == 32 +typedef uint32_t RTR0UINTREG; +#elif R0_ARCH_BITS == 64 +typedef uint64_t RTR0UINTREG; +#else +# error "Unsupported R3_ARCH_BITS!" +#endif +/** Pointer to an unsigned integer register in the host ring-3 context. */ +typedef RTR0UINTREG *PRTR0UINTREG; +/** Pointer to a const unsigned integer register in the host ring-3 context. */ +typedef const RTR0UINTREG *PCRTR0UINTREG; + +/** @} */ + + +/** @defgroup grp_rt_types_gc Guest Context Basic Types + * @{ + */ + +/** Natural signed integer in the GC. + * @deprecated silly type. */ +#if GC_ARCH_BITS == 32 +typedef int32_t RTGCINT; +#elif GC_ARCH_BITS == 64 /** @todo this isn't right, natural int is 32-bit, see RTHCINT. */ +typedef int64_t RTGCINT; +#endif +/** Pointer to natural signed integer in GC. + * @deprecated silly type. */ +typedef RTGCINT *PRTGCINT; +/** Pointer to const natural signed integer in GC. + * @deprecated silly type. */ +typedef const RTGCINT *PCRTGCINT; + +/** Natural unsigned integer in the GC. + * @deprecated silly type. */ +#if GC_ARCH_BITS == 32 +typedef uint32_t RTGCUINT; +#elif GC_ARCH_BITS == 64 /** @todo this isn't right, natural int is 32-bit, see RTHCUINT. */ +typedef uint64_t RTGCUINT; +#endif +/** Pointer to natural unsigned integer in GC. + * @deprecated silly type. */ +typedef RTGCUINT *PRTGCUINT; +/** Pointer to const natural unsigned integer in GC. + * @deprecated silly type. */ +typedef const RTGCUINT *PCRTGCUINT; + +/** Signed integer which can contain a GC pointer. */ +#if GC_ARCH_BITS == 32 +typedef int32_t RTGCINTPTR; +#elif GC_ARCH_BITS == 64 +typedef int64_t RTGCINTPTR; +#endif +/** Pointer to signed integer which can contain a GC pointer. */ +typedef RTGCINTPTR *PRTGCINTPTR; +/** Pointer to const signed integer which can contain a GC pointer. */ +typedef const RTGCINTPTR *PCRTGCINTPTR; + +/** Unsigned integer which can contain a GC pointer. */ +#if GC_ARCH_BITS == 32 +typedef uint32_t RTGCUINTPTR; +#elif GC_ARCH_BITS == 64 +typedef uint64_t RTGCUINTPTR; +#else +# error Unsupported GC_ARCH_BITS value. +#endif +/** Pointer to unsigned integer which can contain a GC pointer. */ +typedef RTGCUINTPTR *PRTGCUINTPTR; +/** Pointer to unsigned integer which can contain a GC pointer. */ +typedef const RTGCUINTPTR *PCRTGCUINTPTR; + +/** Unsigned integer which can contain a 32 bits GC pointer. */ +typedef uint32_t RTGCUINTPTR32; +/** Pointer to unsigned integer which can contain a 32 bits GC pointer. */ +typedef RTGCUINTPTR32 *PRTGCUINTPTR32; +/** Pointer to unsigned integer which can contain a 32 bits GC pointer. */ +typedef const RTGCUINTPTR32 *PCRTGCUINTPTR32; + +/** Unsigned integer which can contain a 64 bits GC pointer. */ +typedef uint64_t RTGCUINTPTR64; +/** Pointer to unsigned integer which can contain a 32 bits GC pointer. */ +typedef RTGCUINTPTR64 *PRTGCUINTPTR64; +/** Pointer to unsigned integer which can contain a 32 bits GC pointer. */ +typedef const RTGCUINTPTR64 *PCRTGCUINTPTR64; + +/** Guest Physical Memory Address.*/ +typedef uint64_t RTGCPHYS; +/** Pointer to Guest Physical Memory Address. */ +typedef RTGCPHYS *PRTGCPHYS; +/** Pointer to const Guest Physical Memory Address. */ +typedef const RTGCPHYS *PCRTGCPHYS; +/** @def NIL_RTGCPHYS + * NIL GC Physical Address. + * NIL_RTGCPHYS is used to signal an invalid physical address, similar + * to the NULL pointer. Note that this value may actually be valid in + * some contexts. + */ +#define NIL_RTGCPHYS (~(RTGCPHYS)0U) +/** Max guest physical memory address value. */ +#define RTGCPHYS_MAX UINT64_MAX + + +/** Guest Physical Memory Address; limited to 32 bits.*/ +typedef uint32_t RTGCPHYS32; +/** Pointer to Guest Physical Memory Address. */ +typedef RTGCPHYS32 *PRTGCPHYS32; +/** Pointer to const Guest Physical Memory Address. */ +typedef const RTGCPHYS32 *PCRTGCPHYS32; +/** @def NIL_RTGCPHYS32 + * NIL GC Physical Address. + * NIL_RTGCPHYS32 is used to signal an invalid physical address, similar + * to the NULL pointer. Note that this value may actually be valid in + * some contexts. + */ +#define NIL_RTGCPHYS32 (~(RTGCPHYS32)0) + + +/** Guest Physical Memory Address; limited to 64 bits.*/ +typedef uint64_t RTGCPHYS64; +/** Pointer to Guest Physical Memory Address. */ +typedef RTGCPHYS64 *PRTGCPHYS64; +/** Pointer to const Guest Physical Memory Address. */ +typedef const RTGCPHYS64 *PCRTGCPHYS64; +/** @def NIL_RTGCPHYS64 + * NIL GC Physical Address. + * NIL_RTGCPHYS64 is used to signal an invalid physical address, similar + * to the NULL pointer. Note that this value may actually be valid in + * some contexts. + */ +#define NIL_RTGCPHYS64 (~(RTGCPHYS64)0) + +/** Guest context pointer, 32 bits. + * Keep in mind that this type is an unsigned integer in + * HC and void pointer in GC. + */ +typedef RTGCUINTPTR32 RTGCPTR32; +/** Pointer to a guest context pointer. */ +typedef RTGCPTR32 *PRTGCPTR32; +/** Pointer to a const guest context pointer. */ +typedef const RTGCPTR32 *PCRTGCPTR32; +/** @def NIL_RTGCPTR32 + * NIL GC pointer. + */ +#define NIL_RTGCPTR32 ((RTGCPTR32)0) + +/** Guest context pointer, 64 bits. + */ +typedef RTGCUINTPTR64 RTGCPTR64; +/** Pointer to a guest context pointer. */ +typedef RTGCPTR64 *PRTGCPTR64; +/** Pointer to a const guest context pointer. */ +typedef const RTGCPTR64 *PCRTGCPTR64; +/** @def NIL_RTGCPTR64 + * NIL GC pointer. + */ +#define NIL_RTGCPTR64 ((RTGCPTR64)0) + +/** Guest context pointer. + * Keep in mind that this type is an unsigned integer in + * HC and void pointer in GC. + */ +#if GC_ARCH_BITS == 64 +typedef RTGCPTR64 RTGCPTR; +/** Pointer to a guest context pointer. */ +typedef PRTGCPTR64 PRTGCPTR; +/** Pointer to a const guest context pointer. */ +typedef PCRTGCPTR64 PCRTGCPTR; +/** @def NIL_RTGCPTR + * NIL GC pointer. + */ +# define NIL_RTGCPTR NIL_RTGCPTR64 +/** Max RTGCPTR value. */ +# define RTGCPTR_MAX UINT64_MAX +#elif GC_ARCH_BITS == 32 +typedef RTGCPTR32 RTGCPTR; +/** Pointer to a guest context pointer. */ +typedef PRTGCPTR32 PRTGCPTR; +/** Pointer to a const guest context pointer. */ +typedef PCRTGCPTR32 PCRTGCPTR; +/** @def NIL_RTGCPTR + * NIL GC pointer. + */ +# define NIL_RTGCPTR NIL_RTGCPTR32 +/** Max RTGCPTR value. */ +# define RTGCPTR_MAX UINT32_MAX +#else +# error "Unsupported GC_ARCH_BITS!" +#endif + +/** Unsigned integer register in the guest context. */ +typedef uint32_t RTGCUINTREG32; +/** Pointer to an unsigned integer register in the guest context. */ +typedef RTGCUINTREG32 *PRTGCUINTREG32; +/** Pointer to a const unsigned integer register in the guest context. */ +typedef const RTGCUINTREG32 *PCRTGCUINTREG32; + +typedef uint64_t RTGCUINTREG64; +/** Pointer to an unsigned integer register in the guest context. */ +typedef RTGCUINTREG64 *PRTGCUINTREG64; +/** Pointer to a const unsigned integer register in the guest context. */ +typedef const RTGCUINTREG64 *PCRTGCUINTREG64; + +#if GC_ARCH_BITS == 64 +typedef RTGCUINTREG64 RTGCUINTREG; +#elif GC_ARCH_BITS == 32 +typedef RTGCUINTREG32 RTGCUINTREG; +#else +# error "Unsupported GC_ARCH_BITS!" +#endif +/** Pointer to an unsigned integer register in the guest context. */ +typedef RTGCUINTREG *PRTGCUINTREG; +/** Pointer to a const unsigned integer register in the guest context. */ +typedef const RTGCUINTREG *PCRTGCUINTREG; + +/** @} */ + +/** @defgroup grp_rt_types_rc Raw mode Context Basic Types + * @{ + */ + +/** Raw mode context pointer; a 32 bits guest context pointer. + * Keep in mind that this type is an unsigned integer in + * HC and void pointer in RC. + */ +#ifdef IN_RC +typedef void * RTRCPTR; +#else +typedef uint32_t RTRCPTR; +#endif +/** Pointer to a raw mode context pointer. */ +typedef RTRCPTR *PRTRCPTR; +/** Pointer to a const raw mode context pointer. */ +typedef const RTRCPTR *PCRTRCPTR; +/** @def NIL_RTGCPTR + * NIL RC pointer. + */ +#ifndef IN_RC +# define NIL_RTRCPTR ((RTRCPTR)0) +#else +# define NIL_RTRCPTR (NULL) +#endif +/** @def RTRCPTR_MAX + * The maximum value a RTRCPTR can have. Mostly used as INVALID value. + */ +#define RTRCPTR_MAX ((RTRCPTR)UINT32_MAX) + +/** Raw mode context pointer, unsigned integer variant. */ +typedef int32_t RTRCINTPTR; +/** @def RTRCUINTPTR_MAX + * The maximum value a RTRCUINPTR can have. + */ +#define RTRCUINTPTR_MAX ((RTRCUINTPTR)UINT32_MAX) + +/** Raw mode context pointer, signed integer variant. */ +typedef uint32_t RTRCUINTPTR; +/** @def RTRCINTPTR_MIN + * The minimum value a RTRCINPTR can have. + */ +#define RTRCINTPTR_MIN ((RTRCINTPTR)INT32_MIN) +/** @def RTRCINTPTR_MAX + * The maximum value a RTRCINPTR can have. + */ +#define RTRCINTPTR_MAX ((RTRCINTPTR)INT32_MAX) + +/** @} */ + + +/** @defgroup grp_rt_types_cc Current Context Basic Types + * @{ + */ + +/** Current Context Physical Memory Address.*/ +#ifdef IN_RC +typedef RTGCPHYS RTCCPHYS; +#else +typedef RTHCPHYS RTCCPHYS; +#endif +/** Pointer to Current Context Physical Memory Address. */ +typedef RTCCPHYS *PRTCCPHYS; +/** Pointer to const Current Context Physical Memory Address. */ +typedef const RTCCPHYS *PCRTCCPHYS; +/** @def NIL_RTCCPHYS + * NIL CC Physical Address. + * NIL_RTCCPHYS is used to signal an invalid physical address, similar + * to the NULL pointer. + */ +#ifdef IN_RC +# define NIL_RTCCPHYS NIL_RTGCPHYS +#else +# define NIL_RTCCPHYS NIL_RTHCPHYS +#endif + +/** Unsigned integer register in the current context. */ +#if ARCH_BITS == 32 +typedef uint32_t RTCCUINTREG; +#elif ARCH_BITS == 64 +typedef uint64_t RTCCUINTREG; +#else +# error "Unsupported ARCH_BITS!" +#endif +/** Pointer to an unsigned integer register in the current context. */ +typedef RTCCUINTREG *PRTCCUINTREG; +/** Pointer to a const unsigned integer register in the current context. */ +typedef RTCCUINTREG const *PCRTCCUINTREG; + +/** Signed integer register in the current context. */ +#if ARCH_BITS == 32 +typedef int32_t RTCCINTREG; +#elif ARCH_BITS == 64 +typedef int64_t RTCCINTREG; +#endif +/** Pointer to a signed integer register in the current context. */ +typedef RTCCINTREG *PRTCCINTREG; +/** Pointer to a const signed integer register in the current context. */ +typedef RTCCINTREG const *PCRTCCINTREG; + +/** @} */ + + + +/** Pointer to a big integer number. */ +typedef struct RTBIGNUM *PRTBIGNUM; +/** Pointer to a const big integer number. */ +typedef struct RTBIGNUM const *PCRTBIGNUM; + + +/** Pointer to a critical section. */ +typedef struct RTCRITSECT *PRTCRITSECT; +/** Pointer to a const critical section. */ +typedef const struct RTCRITSECT *PCRTCRITSECT; + +/** Pointer to a read/write critical section. */ +typedef struct RTCRITSECTRW *PRTCRITSECTRW; +/** Pointer to a const read/write critical section. */ +typedef const struct RTCRITSECTRW *PCRTCRITSECTRW; + + +/** Condition variable handle. */ +typedef R3PTRTYPE(struct RTCONDVARINTERNAL *) RTCONDVAR; +/** Pointer to a condition variable handle. */ +typedef RTCONDVAR *PRTCONDVAR; +/** Nil condition variable handle. */ +#define NIL_RTCONDVAR 0 + +/** Cryptographic (certificate) store handle. */ +typedef R3R0PTRTYPE(struct RTCRSTOREINT *) RTCRSTORE; +/** Pointer to a Cryptographic (certificate) store handle. */ +typedef RTCRSTORE *PRTCRSTORE; +/** Nil Cryptographic (certificate) store handle. */ +#define NIL_RTCRSTORE 0 + +/** Pointer to a const (store) certificate context. */ +typedef struct RTCRCERTCTX const *PCRTCRCERTCTX; + +/** Cryptographic message digest handle. */ +typedef R3R0PTRTYPE(struct RTCRDIGESTINT *) RTCRDIGEST; +/** Pointer to a cryptographic message digest handle. */ +typedef RTCRDIGEST *PRTCRDIGEST; +/** NIL cryptographic message digest handle. */ +#define NIL_RTCRDIGEST (0) + +/** Public key encryption schema handle. */ +typedef R3R0PTRTYPE(struct RTCRPKIXENCRYPTIONINT *) RTCRPKIXENCRYPTION; +/** Pointer to a public key encryption schema handle. */ +typedef RTCRPKIXENCRYPTION *PRTCRPKIXENCRYPTION; +/** NIL public key encryption schema handle */ +#define NIL_RTCRPKIXENCRYPTION (0) + +/** Public key signature schema handle. */ +typedef R3R0PTRTYPE(struct RTCRPKIXSIGNATUREINT *) RTCRPKIXSIGNATURE; +/** Pointer to a public key signature schema handle. */ +typedef RTCRPKIXSIGNATURE *PRTCRPKIXSIGNATURE; +/** NIL public key signature schema handle */ +#define NIL_RTCRPKIXSIGNATURE (0) + +/** X.509 certificate paths builder & validator handle. */ +typedef R3R0PTRTYPE(struct RTCRX509CERTPATHSINT *) RTCRX509CERTPATHS; +/** Pointer to a certificate paths builder & validator handle. */ +typedef RTCRX509CERTPATHS *PRTCRX509CERTPATHS; +/** Nil certificate paths builder & validator handle. */ +#define NIL_RTCRX509CERTPATHS 0 + +/** File handle. */ +typedef R3R0PTRTYPE(struct RTFILEINT *) RTFILE; +/** Pointer to file handle. */ +typedef RTFILE *PRTFILE; +/** Nil file handle. */ +#define NIL_RTFILE ((RTFILE)~(RTHCINTPTR)0) + +/** Async I/O request handle. */ +typedef R3PTRTYPE(struct RTFILEAIOREQINTERNAL *) RTFILEAIOREQ; +/** Pointer to an async I/O request handle. */ +typedef RTFILEAIOREQ *PRTFILEAIOREQ; +/** Nil request handle. */ +#define NIL_RTFILEAIOREQ 0 + +/** Async I/O completion context handle. */ +typedef R3PTRTYPE(struct RTFILEAIOCTXINTERNAL *) RTFILEAIOCTX; +/** Pointer to an async I/O completion context handle. */ +typedef RTFILEAIOCTX *PRTFILEAIOCTX; +/** Nil context handle. */ +#define NIL_RTFILEAIOCTX 0 + +/** Loader module handle. */ +typedef R3R0PTRTYPE(struct RTLDRMODINTERNAL *) RTLDRMOD; +/** Pointer to a loader module handle. */ +typedef RTLDRMOD *PRTLDRMOD; +/** Nil loader module handle. */ +#define NIL_RTLDRMOD 0 + +/** Lock validator class handle. */ +typedef R3R0PTRTYPE(struct RTLOCKVALCLASSINT *) RTLOCKVALCLASS; +/** Pointer to a lock validator class handle. */ +typedef RTLOCKVALCLASS *PRTLOCKVALCLASS; +/** Nil lock validator class handle. */ +#define NIL_RTLOCKVALCLASS ((RTLOCKVALCLASS)0) + +/** Ring-0 memory object handle. */ +typedef R0PTRTYPE(struct RTR0MEMOBJINTERNAL *) RTR0MEMOBJ; +/** Pointer to a Ring-0 memory object handle. */ +typedef RTR0MEMOBJ *PRTR0MEMOBJ; +/** Nil ring-0 memory object handle. */ +#define NIL_RTR0MEMOBJ 0 + +/** Native thread handle. */ +typedef RTHCUINTPTR RTNATIVETHREAD; +/** Pointer to an native thread handle. */ +typedef RTNATIVETHREAD *PRTNATIVETHREAD; +/** Nil native thread handle. */ +#define NIL_RTNATIVETHREAD (~(RTNATIVETHREAD)0) + +/** Pipe handle. */ +typedef R3R0PTRTYPE(struct RTPIPEINTERNAL *) RTPIPE; +/** Pointer to a pipe handle. */ +typedef RTPIPE *PRTPIPE; +/** Nil pipe handle. + * @remarks This is not 0 because of UNIX and OS/2 handle values. Take care! */ +#define NIL_RTPIPE ((RTPIPE)RTHCUINTPTR_MAX) + +/** @typedef RTPOLLSET + * Poll set handle. */ +typedef R3R0PTRTYPE(struct RTPOLLSETINTERNAL *) RTPOLLSET; +/** Pointer to a poll set handle. */ +typedef RTPOLLSET *PRTPOLLSET; +/** Nil poll set handle handle. */ +#define NIL_RTPOLLSET ((RTPOLLSET)0) + +/** Process identifier. */ +typedef uint32_t RTPROCESS; +/** Pointer to a process identifier. */ +typedef RTPROCESS *PRTPROCESS; +/** Nil process identifier. */ +#define NIL_RTPROCESS (~(RTPROCESS)0) + +/** Process ring-0 handle. */ +typedef RTR0UINTPTR RTR0PROCESS; +/** Pointer to a ring-0 process handle. */ +typedef RTR0PROCESS *PRTR0PROCESS; +/** Nil ring-0 process handle. */ +#define NIL_RTR0PROCESS (~(RTR0PROCESS)0) + +/** @typedef RTSEMEVENT + * Event Semaphore handle. */ +typedef R3R0PTRTYPE(struct RTSEMEVENTINTERNAL *) RTSEMEVENT; +/** Pointer to an event semaphore handle. */ +typedef RTSEMEVENT *PRTSEMEVENT; +/** Nil event semaphore handle. */ +#define NIL_RTSEMEVENT 0 + +/** @typedef RTSEMEVENTMULTI + * Event Multiple Release Semaphore handle. */ +typedef R3R0PTRTYPE(struct RTSEMEVENTMULTIINTERNAL *) RTSEMEVENTMULTI; +/** Pointer to an event multiple release semaphore handle. */ +typedef RTSEMEVENTMULTI *PRTSEMEVENTMULTI; +/** Nil multiple release event semaphore handle. */ +#define NIL_RTSEMEVENTMULTI 0 + +/** @typedef RTSEMFASTMUTEX + * Fast mutex Semaphore handle. */ +typedef R3R0PTRTYPE(struct RTSEMFASTMUTEXINTERNAL *) RTSEMFASTMUTEX; +/** Pointer to a fast mutex semaphore handle. */ +typedef RTSEMFASTMUTEX *PRTSEMFASTMUTEX; +/** Nil fast mutex semaphore handle. */ +#define NIL_RTSEMFASTMUTEX 0 + +/** @typedef RTSEMMUTEX + * Mutex Semaphore handle. */ +typedef R3R0PTRTYPE(struct RTSEMMUTEXINTERNAL *) RTSEMMUTEX; +/** Pointer to a mutex semaphore handle. */ +typedef RTSEMMUTEX *PRTSEMMUTEX; +/** Nil mutex semaphore handle. */ +#define NIL_RTSEMMUTEX 0 + +/** @typedef RTSEMSPINMUTEX + * Spinning mutex Semaphore handle. */ +typedef R3R0PTRTYPE(struct RTSEMSPINMUTEXINTERNAL *) RTSEMSPINMUTEX; +/** Pointer to a spinning mutex semaphore handle. */ +typedef RTSEMSPINMUTEX *PRTSEMSPINMUTEX; +/** Nil spinning mutex semaphore handle. */ +#define NIL_RTSEMSPINMUTEX 0 + +/** @typedef RTSEMRW + * Read/Write Semaphore handle. */ +typedef R3R0PTRTYPE(struct RTSEMRWINTERNAL *) RTSEMRW; +/** Pointer to a read/write semaphore handle. */ +typedef RTSEMRW *PRTSEMRW; +/** Nil read/write semaphore handle. */ +#define NIL_RTSEMRW 0 + +/** @typedef RTSEMXROADS + * Crossroads semaphore handle. */ +typedef R3R0PTRTYPE(struct RTSEMXROADSINTERNAL *) RTSEMXROADS; +/** Pointer to a crossroads semaphore handle. */ +typedef RTSEMXROADS *PRTSEMXROADS; +/** Nil crossroads semaphore handle. */ +#define NIL_RTSEMXROADS ((RTSEMXROADS)0) + +/** Spinlock handle. */ +typedef R3R0PTRTYPE(struct RTSPINLOCKINTERNAL *) RTSPINLOCK; +/** Pointer to a spinlock handle. */ +typedef RTSPINLOCK *PRTSPINLOCK; +/** Nil spinlock handle. */ +#define NIL_RTSPINLOCK 0 + +/** Socket handle. */ +typedef R3R0PTRTYPE(struct RTSOCKETINT *) RTSOCKET; +/** Pointer to socket handle. */ +typedef RTSOCKET *PRTSOCKET; +/** Nil socket handle. */ +#define NIL_RTSOCKET ((RTSOCKET)0) + +/** Pointer to a RTTCPSERVER handle. */ +typedef struct RTTCPSERVER *PRTTCPSERVER; +/** Pointer to a RTTCPSERVER handle. */ +typedef PRTTCPSERVER *PPRTTCPSERVER; +/** Nil RTTCPSERVER handle. */ +#define NIL_RTTCPSERVER ((PRTTCPSERVER)0) + +/** Pointer to a RTUDPSERVER handle. */ +typedef struct RTUDPSERVER *PRTUDPSERVER; +/** Pointer to a RTUDPSERVER handle. */ +typedef PRTUDPSERVER *PPRTUDPSERVER; +/** Nil RTUDPSERVER handle. */ +#define NIL_RTUDPSERVER ((PRTUDPSERVER)0) + +/** Thread handle.*/ +typedef R3R0PTRTYPE(struct RTTHREADINT *) RTTHREAD; +/** Pointer to thread handle. */ +typedef RTTHREAD *PRTTHREAD; +/** Nil thread handle. */ +#define NIL_RTTHREAD 0 + +/** Thread context switching hook handle. */ +typedef R0PTRTYPE(struct RTTHREADCTXHOOKINT *) RTTHREADCTXHOOK; +/** Pointer to Thread context switching hook handle. */ +typedef RTTHREADCTXHOOK *PRTTHREADCTXHOOK; +/** Nil Thread context switching hook handle. */ +#define NIL_RTTHREADCTXHOOK ((RTTHREADCTXHOOK)0) + +/** A TLS index. */ +typedef RTHCINTPTR RTTLS; +/** Pointer to a TLS index. */ +typedef RTTLS *PRTTLS; +/** Pointer to a const TLS index. */ +typedef RTTLS const *PCRTTLS; +/** NIL TLS index value. */ +#define NIL_RTTLS ((RTTLS)-1) + +/** Trace buffer handle. + * @remarks This is not a R3/R0 type like most other handles! + */ +typedef struct RTTRACEBUFINT *RTTRACEBUF; +/** Pointer to a trace buffer handle. */ +typedef RTTRACEBUF *PRTTRACEBUF; +/** Nil trace buffer handle. */ +#define NIL_RTTRACEBUF ((RTTRACEBUF)0) +/** The handle of the default trace buffer. + * This can be used with any of the RTTraceBufAdd APIs. */ +#define RTTRACEBUF_DEFAULT ((RTTRACEBUF)-2) + +/** Handle to a simple heap. */ +typedef R3R0PTRTYPE(struct RTHEAPSIMPLEINTERNAL *) RTHEAPSIMPLE; +/** Pointer to a handle to a simple heap. */ +typedef RTHEAPSIMPLE *PRTHEAPSIMPLE; +/** NIL simple heap handle. */ +#define NIL_RTHEAPSIMPLE ((RTHEAPSIMPLE)0) + +/** Handle to an offset based heap. */ +typedef R3R0PTRTYPE(struct RTHEAPOFFSETINTERNAL *) RTHEAPOFFSET; +/** Pointer to a handle to an offset based heap. */ +typedef RTHEAPOFFSET *PRTHEAPOFFSET; +/** NIL offset based heap handle. */ +#define NIL_RTHEAPOFFSET ((RTHEAPOFFSET)0) + +/** Handle to an environment block. */ +typedef R3PTRTYPE(struct RTENVINTERNAL *) RTENV; +/** Pointer to a handle to an environment block. */ +typedef RTENV *PRTENV; +/** NIL simple heap handle. */ +#define NIL_RTENV ((RTENV)0) + +/** A CPU identifier. + * @remarks This doesn't have to correspond to the APIC ID (intel/amd). Nor + * does it have to correspond to the bits in the affinity mask, at + * least not until we've sorted out Windows NT. */ +typedef uint32_t RTCPUID; +/** Pointer to a CPU identifier. */ +typedef RTCPUID *PRTCPUID; +/** Pointer to a const CPU identifier. */ +typedef RTCPUID const *PCRTCPUID; +/** Nil CPU Id. */ +#define NIL_RTCPUID ((RTCPUID)~0) + +/** The maximum number of CPUs a set can contain and IPRT is able + * to reference. (Should be max of support arch/platforms.) + * @remarks Must be a multiple of 64 (see RTCPUSET). */ +#if defined(RT_ARCH_X86) || defined(RT_ARCH_AMD64) +# define RTCPUSET_MAX_CPUS 256 +#elif defined(RT_ARCH_SPARC) || defined(RT_ARCH_SPARC64) +# define RTCPUSET_MAX_CPUS 1024 +#else +# define RTCPUSET_MAX_CPUS 64 +#endif +/** A CPU set. + * @note Treat this as an opaque type and always use RTCpuSet* for + * manipulating it. */ +typedef struct RTCPUSET +{ + /** The bitmap. */ + uint64_t bmSet[RTCPUSET_MAX_CPUS / 64]; +} RTCPUSET; +/** Pointer to a CPU set. */ +typedef RTCPUSET *PRTCPUSET; +/** Pointer to a const CPU set. */ +typedef RTCPUSET const *PCRTCPUSET; + +/** A handle table handle. */ +typedef R3R0PTRTYPE(struct RTHANDLETABLEINT *) RTHANDLETABLE; +/** A pointer to a handle table handle. */ +typedef RTHANDLETABLE *PRTHANDLETABLE; +/** @def NIL_RTHANDLETABLE + * NIL handle table handle. */ +#define NIL_RTHANDLETABLE ((RTHANDLETABLE)0) + +/** A handle to a low resolution timer. */ +typedef R3R0PTRTYPE(struct RTTIMERLRINT *) RTTIMERLR; +/** A pointer to a low resolution timer handle. */ +typedef RTTIMERLR *PRTTIMERLR; +/** @def NIL_RTTIMERLR + * NIL low resolution timer handle value. */ +#define NIL_RTTIMERLR ((RTTIMERLR)0) + +/** Handle to a random number generator. */ +typedef R3R0PTRTYPE(struct RTRANDINT *) RTRAND; +/** Pointer to a random number generator handle. */ +typedef RTRAND *PRTRAND; +/** NIL random number generator handle value. */ +#define NIL_RTRAND ((RTRAND)0) + +/** Debug address space handle. */ +typedef R3R0PTRTYPE(struct RTDBGASINT *) RTDBGAS; +/** Pointer to a debug address space handle. */ +typedef RTDBGAS *PRTDBGAS; +/** NIL debug address space handle. */ +#define NIL_RTDBGAS ((RTDBGAS)0) + +/** Debug module handle. */ +typedef R3R0PTRTYPE(struct RTDBGMODINT *) RTDBGMOD; +/** Pointer to a debug module handle. */ +typedef RTDBGMOD *PRTDBGMOD; +/** NIL debug module handle. */ +#define NIL_RTDBGMOD ((RTDBGMOD)0) + +/** Manifest handle. */ +typedef struct RTMANIFESTINT *RTMANIFEST; +/** Pointer to a manifest handle. */ +typedef RTMANIFEST *PRTMANIFEST; +/** NIL manifest handle. */ +#define NIL_RTMANIFEST ((RTMANIFEST)~(uintptr_t)0) + +/** Memory pool handle. */ +typedef R3R0PTRTYPE(struct RTMEMPOOLINT *) RTMEMPOOL; +/** Pointer to a memory pool handle. */ +typedef RTMEMPOOL *PRTMEMPOOL; +/** NIL memory pool handle. */ +#define NIL_RTMEMPOOL ((RTMEMPOOL)0) +/** The default memory pool handle. */ +#define RTMEMPOOL_DEFAULT ((RTMEMPOOL)-2) + +/** String cache handle. */ +typedef R3R0PTRTYPE(struct RTSTRCACHEINT *) RTSTRCACHE; +/** Pointer to a string cache handle. */ +typedef RTSTRCACHE *PRTSTRCACHE; +/** NIL string cache handle. */ +#define NIL_RTSTRCACHE ((RTSTRCACHE)0) +/** The default string cache handle. */ +#define RTSTRCACHE_DEFAULT ((RTSTRCACHE)-2) + + +/** Virtual Filesystem handle. */ +typedef struct RTVFSINTERNAL *RTVFS; +/** Pointer to a VFS handle. */ +typedef RTVFS *PRTVFS; +/** A NIL VFS handle. */ +#define NIL_RTVFS ((RTVFS)~(uintptr_t)0) + +/** Virtual Filesystem base object handle. */ +typedef struct RTVFSOBJINTERNAL *RTVFSOBJ; +/** Pointer to a VFS base object handle. */ +typedef RTVFSOBJ *PRTVFSOBJ; +/** A NIL VFS base object handle. */ +#define NIL_RTVFSOBJ ((RTVFSOBJ)~(uintptr_t)0) + +/** Virtual Filesystem directory handle. */ +typedef struct RTVFSDIRINTERNAL *RTVFSDIR; +/** Pointer to a VFS directory handle. */ +typedef RTVFSDIR *PRTVFSDIR; +/** A NIL VFS directory handle. */ +#define NIL_RTVFSDIR ((RTVFSDIR)~(uintptr_t)0) + +/** Virtual Filesystem filesystem stream handle. */ +typedef struct RTVFSFSSTREAMINTERNAL *RTVFSFSSTREAM; +/** Pointer to a VFS filesystem stream handle. */ +typedef RTVFSFSSTREAM *PRTVFSFSSTREAM; +/** A NIL VFS filesystem stream handle. */ +#define NIL_RTVFSFSSTREAM ((RTVFSFSSTREAM)~(uintptr_t)0) + +/** Virtual Filesystem I/O stream handle. */ +typedef struct RTVFSIOSTREAMINTERNAL *RTVFSIOSTREAM; +/** Pointer to a VFS I/O stream handle. */ +typedef RTVFSIOSTREAM *PRTVFSIOSTREAM; +/** A NIL VFS I/O stream handle. */ +#define NIL_RTVFSIOSTREAM ((RTVFSIOSTREAM)~(uintptr_t)0) + +/** Virtual Filesystem file handle. */ +typedef struct RTVFSFILEINTERNAL *RTVFSFILE; +/** Pointer to a VFS file handle. */ +typedef RTVFSFILE *PRTVFSFILE; +/** A NIL VFS file handle. */ +#define NIL_RTVFSFILE ((RTVFSFILE)~(uintptr_t)0) + +/** Virtual Filesystem symbolic link handle. */ +typedef struct RTVFSSYMLINKINTERNAL *RTVFSSYMLINK; +/** Pointer to a VFS symbolic link handle. */ +typedef RTVFSSYMLINK *PRTVFSSYMLINK; +/** A NIL VFS symbolic link handle. */ +#define NIL_RTVFSSYMLINK ((RTVFSSYMLINK)~(uintptr_t)0) + +/** Async I/O manager handle. */ +typedef struct RTAIOMGRINT *RTAIOMGR; +/** Pointer to a async I/O manager handle. */ +typedef RTAIOMGR *PRTAIOMGR; +/** A NIL async I/O manager handle. */ +#define NIL_RTAIOMGR ((RTAIOMGR)~(uintptr_t)0) + +/** Async I/O manager file handle. */ +typedef struct RTAIOMGRFILEINT *RTAIOMGRFILE; +/** Pointer to a async I/O manager file handle. */ +typedef RTAIOMGRFILE *PRTAIOMGRFILE; +/** A NIL async I/O manager file handle. */ +#define NIL_RTAIOMGRFILE ((RTAIOMGRFILE)~(uintptr_t)0) + +/** + * Handle type. + * + * This is usually used together with RTHANDLEUNION. + */ +typedef enum RTHANDLETYPE +{ + /** The invalid zero value. */ + RTHANDLETYPE_INVALID = 0, + /** File handle. */ + RTHANDLETYPE_FILE, + /** Pipe handle */ + RTHANDLETYPE_PIPE, + /** Socket handle. */ + RTHANDLETYPE_SOCKET, + /** Thread handle. */ + RTHANDLETYPE_THREAD, + /** The end of the valid values. */ + RTHANDLETYPE_END, + /** The 32-bit type blow up. */ + RTHANDLETYPE_32BIT_HACK = 0x7fffffff +} RTHANDLETYPE; +/** Pointer to a handle type. */ +typedef RTHANDLETYPE *PRTHANDLETYPE; + +/** + * Handle union. + * + * This is usually used together with RTHANDLETYPE or as RTHANDLE. + */ +typedef union RTHANDLEUNION +{ + RTFILE hFile; /**< File handle. */ + RTPIPE hPipe; /**< Pipe handle. */ + RTSOCKET hSocket; /**< Socket handle. */ + RTTHREAD hThread; /**< Thread handle. */ + /** Generic integer handle value. + * Note that RTFILE is not yet pointer sized, so accessing it via this member + * isn't necessarily safe or fully portable. */ + RTHCUINTPTR uInt; +} RTHANDLEUNION; +/** Pointer to a handle union. */ +typedef RTHANDLEUNION *PRTHANDLEUNION; +/** Pointer to a const handle union. */ +typedef RTHANDLEUNION const *PCRTHANDLEUNION; + +/** + * Generic handle. + */ +typedef struct RTHANDLE +{ + /** The handle type. */ + RTHANDLETYPE enmType; + /** The handle value. */ + RTHANDLEUNION u; +} RTHANDLE; +/** Pointer to a generic handle. */ +typedef RTHANDLE *PRTHANDLE; +/** Pointer to a const generic handle. */ +typedef RTHANDLE const *PCRTHANDLE; + + +/** + * Standard handles. + * + * @remarks These have the correct file descriptor values for unixy systems and + * can be used directly in code specific to those platforms. + */ +typedef enum RTHANDLESTD +{ + /** Invalid standard handle. */ + RTHANDLESTD_INVALID = -1, + /** The standard input handle. */ + RTHANDLESTD_INPUT = 0, + /** The standard output handle. */ + RTHANDLESTD_OUTPUT, + /** The standard error handle. */ + RTHANDLESTD_ERROR, + /** The typical 32-bit type hack. */ + RTHANDLESTD_32BIT_HACK = 0x7fffffff +} RTHANDLESTD; + + +/** + * Error info. + * + * See RTErrInfo*. + */ +typedef struct RTERRINFO +{ + /** Flags, see RTERRINFO_FLAGS_XXX. */ + uint32_t fFlags; + /** The status code. */ + int32_t rc; + /** The size of the message */ + size_t cbMsg; + /** The error buffer. */ + char *pszMsg; + /** Reserved for future use. */ + void *apvReserved[2]; +} RTERRINFO; +/** Pointer to an error info structure. */ +typedef RTERRINFO *PRTERRINFO; +/** Pointer to a const error info structure. */ +typedef RTERRINFO const *PCRTERRINFO; + +/** + * Static error info structure, see RTErrInfoInitStatic. + */ +typedef struct RTERRINFOSTATIC +{ + /** The core error info. */ + RTERRINFO Core; + /** The static message buffer. */ + char szMsg[3072]; +} RTERRINFOSTATIC; +/** Pointer to a error info buffer. */ +typedef RTERRINFOSTATIC *PRTERRINFOSTATIC; +/** Pointer to a const static error info buffer. */ +typedef RTERRINFOSTATIC const *PCRTERRINFOSTATIC; + + +/** + * UUID data type. + * + * See RTUuid*. + * + * @remarks IPRT defines that the first three integers in the @c Gen struct + * interpretation are in little endian representation. This is + * different to many other UUID implementation, and requires + * conversion if you need to achieve consistent results. + */ +typedef union RTUUID +{ + /** 8-bit view. */ + uint8_t au8[16]; + /** 16-bit view. */ + uint16_t au16[8]; + /** 32-bit view. */ + uint32_t au32[4]; + /** 64-bit view. */ + uint64_t au64[2]; + /** The way the UUID is declared by the DCE specification. */ + struct + { + uint32_t u32TimeLow; + uint16_t u16TimeMid; + uint16_t u16TimeHiAndVersion; + uint8_t u8ClockSeqHiAndReserved; + uint8_t u8ClockSeqLow; + uint8_t au8Node[6]; + } Gen; +} RTUUID; +/** Pointer to UUID data. */ +typedef RTUUID *PRTUUID; +/** Pointer to readonly UUID data. */ +typedef const RTUUID *PCRTUUID; + +/** Initializes a RTUUID structure with all zeros (RTUuidIsNull() true). */ +#define RTUUID_INITIALIZE_NULL { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } + +/** UUID string maximum length. */ +#define RTUUID_STR_LENGTH 37 + + +/** Compression handle. */ +typedef struct RTZIPCOMP *PRTZIPCOMP; +/** Decompressor handle. */ +typedef struct RTZIPDECOMP *PRTZIPDECOMP; + + +/** + * Unicode Code Point. + */ +typedef uint32_t RTUNICP; +/** Pointer to an Unicode Code Point. */ +typedef RTUNICP *PRTUNICP; +/** Pointer to an Unicode Code Point. */ +typedef const RTUNICP *PCRTUNICP; +/** Max value a RTUNICP type can hold. */ +#define RTUNICP_MAX ( ~(RTUNICP)0 ) +/** Invalid code point. + * This is returned when encountered invalid encodings or invalid + * unicode code points. */ +#define RTUNICP_INVALID ( UINT32_C(0xfffffffe) ) + + +/** + * UTF-16 character. + * @remark wchar_t is not usable since it's compiler defined. + * @remark When we use the term character we're not talking about unicode code point, but + * the basic unit of the string encoding. Thus cwc - count of wide chars - means + * count of RTUTF16; cuc - count of unicode chars - means count of RTUNICP; + * and cch means count of the typedef 'char', which is assumed to be an octet. + */ +typedef uint16_t RTUTF16; +/** Pointer to a UTF-16 character. */ +typedef RTUTF16 *PRTUTF16; +/** Pointer to a const UTF-16 character. */ +typedef const RTUTF16 *PCRTUTF16; + + +/** + * Wait for ever if we have to. + */ +#define RT_INDEFINITE_WAIT (~0U) + + +/** + * Generic process callback. + * + * @returns VBox status code. Failure will cancel the operation. + * @param uPercentage The percentage of the operation which has been completed. + * @param pvUser The user specified argument. + */ +typedef DECLCALLBACK(int) FNRTPROGRESS(unsigned uPrecentage, void *pvUser); +/** Pointer to a generic progress callback function, FNRTPROCESS(). */ +typedef FNRTPROGRESS *PFNRTPROGRESS; + +/** + * Generic vprintf-like callback function for dumpers. + * + * @param pvUser User argument. + * @param pszFormat The format string. + * @param va Arguments for the format string. + */ +typedef DECLCALLBACK(void) FNRTDUMPPRINTFV(void *pvUser, const char *pszFormat, va_list va); +/** Pointer to a generic printf-like function for dumping. */ +typedef FNRTDUMPPRINTFV *PFNRTDUMPPRINTFV; + + +/** + * A point in a two dimentional coordinate system. + */ +typedef struct RTPOINT +{ + /** X coordinate. */ + int32_t x; + /** Y coordinate. */ + int32_t y; +} RTPOINT; +/** Pointer to a point. */ +typedef RTPOINT *PRTPOINT; +/** Pointer to a const point. */ +typedef const RTPOINT *PCRTPOINT; + + +/** + * Rectangle data type, double point. + */ +typedef struct RTRECT +{ + /** left X coordinate. */ + int32_t xLeft; + /** top Y coordinate. */ + int32_t yTop; + /** right X coordinate. (exclusive) */ + int32_t xRight; + /** bottom Y coordinate. (exclusive) */ + int32_t yBottom; +} RTRECT; +/** Pointer to a double point rectangle. */ +typedef RTRECT *PRTRECT; +/** Pointer to a const double point rectangle. */ +typedef const RTRECT *PCRTRECT; + + +/** + * Rectangle data type, point + size. + */ +typedef struct RTRECT2 +{ + /** X coordinate. + * Unless stated otherwise, this is the top left corner. */ + int32_t x; + /** Y coordinate. + * Unless stated otherwise, this is the top left corner. */ + int32_t y; + /** The width. + * Unless stated otherwise, this is to the right of (x,y) and will not + * be a negative number. */ + int32_t cx; + /** The height. + * Unless stated otherwise, this is down from (x,y) and will not be a + * negative number. */ + int32_t cy; +} RTRECT2; +/** Pointer to a point + size rectangle. */ +typedef RTRECT2 *PRTRECT2; +/** Pointer to a const point + size rectangle. */ +typedef const RTRECT2 *PCRTRECT2; + + +/** + * The size of a rectangle. + */ +typedef struct RTRECTSIZE +{ + /** The width (along the x-axis). */ + uint32_t cx; + /** The height (along the y-axis). */ + uint32_t cy; +} RTRECTSIZE; +/** Pointer to a rectangle size. */ +typedef RTRECTSIZE *PRTRECTSIZE; +/** Pointer to a const rectangle size. */ +typedef const RTRECTSIZE *PCRTRECTSIZE; + + +/** + * Ethernet MAC address. + * + * The first 24 bits make up the Organisationally Unique Identifier (OUI), + * where the first bit (little endian) indicates multicast (set) / unicast, + * and the second bit indicates locally (set) / global administered. If all + * bits are set, it's a broadcast. + */ +typedef union RTMAC +{ + /** @todo add a bitfield view of this stuff. */ + /** 8-bit view. */ + uint8_t au8[6]; + /** 16-bit view. */ + uint16_t au16[3]; +} RTMAC; +/** Pointer to a MAC address. */ +typedef RTMAC *PRTMAC; +/** Pointer to a readonly MAC address. */ +typedef const RTMAC *PCRTMAC; + + +/** Pointer to a lock validator record. + * The structure definition is found in iprt/lockvalidator.h. */ +typedef struct RTLOCKVALRECEXCL *PRTLOCKVALRECEXCL; +/** Pointer to a record of one ownership share. + * The structure definition is found in iprt/lockvalidator.h. */ +typedef struct RTLOCKVALRECSHRD *PRTLOCKVALRECSHRD; +/** Pointer to a lock validator source position. + * The structure definition is found in iprt/lockvalidator.h. */ +typedef struct RTLOCKVALSRCPOS *PRTLOCKVALSRCPOS; +/** Pointer to a const lock validator source position. + * The structure definition is found in iprt/lockvalidator.h. */ +typedef struct RTLOCKVALSRCPOS const *PCRTLOCKVALSRCPOS; + +/** @name Special sub-class values. + * The range 16..UINT32_MAX is available to the user, the range 0..15 is + * reserved for the lock validator. In the user range the locks can only be + * taking in ascending order. + * @{ */ +/** Invalid value. */ +#define RTLOCKVAL_SUB_CLASS_INVALID UINT32_C(0) +/** Not allowed to be taken with any other locks in the same class. + * This is the recommended value. */ +#define RTLOCKVAL_SUB_CLASS_NONE UINT32_C(1) +/** Any order is allowed within the class. */ +#define RTLOCKVAL_SUB_CLASS_ANY UINT32_C(2) +/** The first user value. */ +#define RTLOCKVAL_SUB_CLASS_USER UINT32_C(16) +/** @} */ + + +/** + * Digest types. + */ +typedef enum RTDIGESTTYPE +{ + /** Invalid digest value. */ + RTDIGESTTYPE_INVALID = 0, + /** Unknown digest type. */ + RTDIGESTTYPE_UNKNOWN, + /** CRC32 checksum. */ + RTDIGESTTYPE_CRC32, + /** CRC64 checksum. */ + RTDIGESTTYPE_CRC64, + /** MD2 checksum (unsafe!). */ + RTDIGESTTYPE_MD2, + /** MD4 checksum (unsafe!!). */ + RTDIGESTTYPE_MD4, + /** MD5 checksum (unsafe!). */ + RTDIGESTTYPE_MD5, + /** SHA-1 checksum (unsafe!). */ + RTDIGESTTYPE_SHA1, + /** SHA-224 checksum. */ + RTDIGESTTYPE_SHA224, + /** SHA-256 checksum. */ + RTDIGESTTYPE_SHA256, + /** SHA-384 checksum. */ + RTDIGESTTYPE_SHA384, + /** SHA-512 checksum. */ + RTDIGESTTYPE_SHA512, + /** SHA-512/224 checksum. */ + RTDIGESTTYPE_SHA512T224, + /** SHA-512/256 checksum. */ + RTDIGESTTYPE_SHA512T256, + /** End of valid types. */ + RTDIGESTTYPE_END, + /** Usual 32-bit type blowup. */ + RTDIGESTTYPE_32BIT_HACK = 0x7fffffff +} RTDIGESTTYPE; + +/** + * Process exit codes. + */ +typedef enum RTEXITCODE +{ + /** Success. */ + RTEXITCODE_SUCCESS = 0, + /** General failure. */ + RTEXITCODE_FAILURE = 1, + /** Invalid arguments. */ + RTEXITCODE_SYNTAX = 2, + /** Initialization failure (usually IPRT, but could be used for other + * components as well). */ + RTEXITCODE_INIT = 3, + /** Test skipped. */ + RTEXITCODE_SKIPPED = 4, + /** The end of valid exit codes. */ + RTEXITCODE_END, + /** The usual 32-bit type hack. */ + RTEXITCODE_32BIT_HACK = 0x7fffffff +} RTEXITCODE; + +/** + * Range descriptor. + */ +typedef struct RTRANGE +{ + /** Start offset. */ + uint64_t offStart; + /** Range size. */ + size_t cbRange; +} RTRANGE; +/** Pointer to a range descriptor. */ +typedef RTRANGE *PRTRANGE; +/** Pointer to a readonly range descriptor. */ +typedef const RTRANGE *PCRTRANGE; + + +/** + * Generic pointer union. + */ +typedef union RTPTRUNION +{ + /** Pointer into the void... */ + void *pv; + /** As a signed integer. */ + intptr_t i; + /** As an unsigned integer. */ + intptr_t u; + /** Pointer to char value. */ + char *pch; + /** Pointer to char value. */ + unsigned char *puch; + /** Pointer to a int value. */ + int *pi; + /** Pointer to a unsigned int value. */ + unsigned int *pu; + /** Pointer to a long value. */ + long *pl; + /** Pointer to a long value. */ + unsigned long *pul; + /** Pointer to a 8-bit unsigned value. */ + uint8_t *pu8; + /** Pointer to a 16-bit unsigned value. */ + uint16_t *pu16; + /** Pointer to a 32-bit unsigned value. */ + uint32_t *pu32; + /** Pointer to a 64-bit unsigned value. */ + uint64_t *pu64; + /** Pointer to a UTF-16 character. */ + PRTUTF16 pwc; + /** Pointer to a UUID character. */ + PRTUUID pUuid; +} RTPTRUNION; +/** Pointer to a pointer union. */ +typedef RTPTRUNION *PRTPTRUNION; + +/** + * Generic const pointer union. + */ +typedef union RTCPTRUNION +{ + /** Pointer into the void... */ + void const *pv; + /** As a signed integer. */ + intptr_t i; + /** As an unsigned integer. */ + intptr_t u; + /** Pointer to char value. */ + char const *pch; + /** Pointer to char value. */ + unsigned char const *puch; + /** Pointer to a int value. */ + int const *pi; + /** Pointer to a unsigned int value. */ + unsigned int const *pu; + /** Pointer to a long value. */ + long const *pl; + /** Pointer to a long value. */ + unsigned long const *pul; + /** Pointer to a 8-bit unsigned value. */ + uint8_t const *pu8; + /** Pointer to a 16-bit unsigned value. */ + uint16_t const *pu16; + /** Pointer to a 32-bit unsigned value. */ + uint32_t const *pu32; + /** Pointer to a 64-bit unsigned value. */ + uint64_t const *pu64; + /** Pointer to a UTF-16 character. */ + PCRTUTF16 pwc; + /** Pointer to a UUID character. */ + PCRTUUID pUuid; +} RTCPTRUNION; +/** Pointer to a const pointer union. */ +typedef RTCPTRUNION *PRTCPTRUNION; + +/** + * Generic volatile pointer union. + */ +typedef union RTVPTRUNION +{ + /** Pointer into the void... */ + void volatile *pv; + /** As a signed integer. */ + intptr_t i; + /** As an unsigned integer. */ + intptr_t u; + /** Pointer to char value. */ + char volatile *pch; + /** Pointer to char value. */ + unsigned char volatile *puch; + /** Pointer to a int value. */ + int volatile *pi; + /** Pointer to a unsigned int value. */ + unsigned int volatile *pu; + /** Pointer to a long value. */ + long volatile *pl; + /** Pointer to a long value. */ + unsigned long volatile *pul; + /** Pointer to a 8-bit unsigned value. */ + uint8_t volatile *pu8; + /** Pointer to a 16-bit unsigned value. */ + uint16_t volatile *pu16; + /** Pointer to a 32-bit unsigned value. */ + uint32_t volatile *pu32; + /** Pointer to a 64-bit unsigned value. */ + uint64_t volatile *pu64; + /** Pointer to a UTF-16 character. */ + RTUTF16 volatile *pwc; + /** Pointer to a UUID character. */ + RTUUID volatile *pUuid; +} RTVPTRUNION; +/** Pointer to a const pointer union. */ +typedef RTVPTRUNION *PRTVPTRUNION; + +/** + * Generic const volatile pointer union. + */ +typedef union RTCVPTRUNION +{ + /** Pointer into the void... */ + void const volatile *pv; + /** As a signed integer. */ + intptr_t i; + /** As an unsigned integer. */ + intptr_t u; + /** Pointer to char value. */ + char const volatile *pch; + /** Pointer to char value. */ + unsigned char const volatile *puch; + /** Pointer to a int value. */ + int const volatile *pi; + /** Pointer to a unsigned int value. */ + unsigned int const volatile *pu; + /** Pointer to a long value. */ + long const volatile *pl; + /** Pointer to a long value. */ + unsigned long const volatile *pul; + /** Pointer to a 8-bit unsigned value. */ + uint8_t const volatile *pu8; + /** Pointer to a 16-bit unsigned value. */ + uint16_t const volatile *pu16; + /** Pointer to a 32-bit unsigned value. */ + uint32_t const volatile *pu32; + /** Pointer to a 64-bit unsigned value. */ + uint64_t const volatile *pu64; + /** Pointer to a UTF-16 character. */ + RTUTF16 const volatile *pwc; + /** Pointer to a UUID character. */ + RTUUID const volatile *pUuid; +} RTCVPTRUNION; +/** Pointer to a const pointer union. */ +typedef RTCVPTRUNION *PRTCVPTRUNION; + + + +#ifdef __cplusplus +/** + * Strict type validation helper class. + * + * See RTErrStrictType and RT_SUCCESS_NP. + */ +class RTErrStrictType2 +{ +protected: + /** The status code. */ + int32_t m_rc; + +public: + /** + * Constructor. + * @param rc IPRT style status code. + */ + RTErrStrictType2(int32_t rc) : m_rc(rc) + { + } + + /** + * Get the status code. + * @returns IPRT style status code. + */ + int32_t getValue() const + { + return m_rc; + } +}; +#endif /* __cplusplus */ +/** @} */ + +#endif + --- linux-raspi2-4.2.0.orig/ubuntu/vbox/include/iprt/uni.h +++ linux-raspi2-4.2.0/ubuntu/vbox/include/iprt/uni.h @@ -0,0 +1,478 @@ +/** @file + * IPRT - Unicode Code Points. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + +#ifndef ___iprt_uni_h +#define ___iprt_uni_h + +/** @defgroup grp_rt_uni RTUniCp - Unicode Code Points + * @ingroup grp_rt + * @{ + */ + +/** @def RTUNI_USE_WCTYPE + * Define RTUNI_USE_WCTYPE to not use the IPRT unicode data but the + * data which the C runtime library provides. */ +#ifdef DOXYGEN_RUNNING +# define RTUNI_USE_WCTYPE +#endif + +#include +#ifdef RTUNI_USE_WCTYPE +# include +#endif + +RT_C_DECLS_BEGIN + + +#ifndef RTUNI_USE_WCTYPE + +/** + * A unicode flags range. + * @internal + */ +typedef struct RTUNIFLAGSRANGE +{ + /** The first code point of the range. */ + RTUNICP BeginCP; + /** The last + 1 code point of the range. */ + RTUNICP EndCP; + /** Pointer to the array of case folded code points. */ + const uint8_t *pafFlags; +} RTUNIFLAGSRANGE; +/** Pointer to a flags range. + * @internal */ +typedef RTUNIFLAGSRANGE *PRTUNIFLAGSRANGE; +/** Pointer to a const flags range. + * @internal */ +typedef const RTUNIFLAGSRANGE *PCRTUNIFLAGSRANGE; + +/** + * A unicode case folded range. + * @internal + */ +typedef struct RTUNICASERANGE +{ + /** The first code point of the range. */ + RTUNICP BeginCP; + /** The last + 1 code point of the range. */ + RTUNICP EndCP; + /** Pointer to the array of case folded code points. */ + PCRTUNICP paFoldedCPs; +} RTUNICASERANGE; +/** Pointer to a case folded range. + * @internal */ +typedef RTUNICASERANGE *PRTUNICASERANGE; +/** Pointer to a const case folded range. + * @internal */ +typedef const RTUNICASERANGE *PCRTUNICASERANGE; + +/** @name Unicode Code Point Flags. + * @internal + * @{ */ +#define RTUNI_UPPER RT_BIT(0) +#define RTUNI_LOWER RT_BIT(1) +#define RTUNI_ALPHA RT_BIT(2) +#define RTUNI_XDIGIT RT_BIT(3) +#define RTUNI_DDIGIT RT_BIT(4) +#define RTUNI_WSPACE RT_BIT(5) +/*#define RTUNI_BSPACE RT_BIT(6) - later */ +/** When set, the codepoint requires further checking wrt NFC and NFD + * normalization. I.e. set when either of QC_NFD and QC_NFC are not Y. */ +#define RTUNI_QC_NFX RT_BIT(7) +/** @} */ + + +/** + * Array of flags ranges. + * @internal + */ +extern RTDATADECL(const RTUNIFLAGSRANGE) g_aRTUniFlagsRanges[]; + +/** + * Gets the flags for a unicode code point. + * + * @returns The flag mask. (RTUNI_*) + * @param CodePoint The unicode code point. + * @internal + */ +DECLINLINE(RTUNICP) rtUniCpFlags(RTUNICP CodePoint) +{ + PCRTUNIFLAGSRANGE pCur = &g_aRTUniFlagsRanges[0]; + do + { + if (pCur->EndCP > CodePoint) + { + if (pCur->BeginCP <= CodePoint) + return pCur->pafFlags[CodePoint - pCur->BeginCP]; + break; + } + pCur++; + } while (pCur->EndCP != RTUNICP_MAX); + return 0; +} + + +/** + * Checks if a unicode code point is upper case. + * + * @returns true if it is. + * @returns false if it isn't. + * @param CodePoint The code point. + */ +DECLINLINE(bool) RTUniCpIsUpper(RTUNICP CodePoint) +{ + return (rtUniCpFlags(CodePoint) & RTUNI_UPPER) != 0; +} + + +/** + * Checks if a unicode code point is lower case. + * + * @returns true if it is. + * @returns false if it isn't. + * @param CodePoint The code point. + */ +DECLINLINE(bool) RTUniCpIsLower(RTUNICP CodePoint) +{ + return (rtUniCpFlags(CodePoint) & RTUNI_LOWER) != 0; +} + + +/** + * Checks if a unicode code point is case foldable. + * + * @returns true if it is. + * @returns false if it isn't. + * @param CodePoint The code point. + */ +DECLINLINE(bool) RTUniCpIsFoldable(RTUNICP CodePoint) +{ + /* Right enough. */ + return (rtUniCpFlags(CodePoint) & (RTUNI_LOWER | RTUNI_UPPER)) != 0; +} + + +/** + * Checks if a unicode code point is alphabetic. + * + * @returns true if it is. + * @returns false if it isn't. + * @param CodePoint The code point. + */ +DECLINLINE(bool) RTUniCpIsAlphabetic(RTUNICP CodePoint) +{ + return (rtUniCpFlags(CodePoint) & RTUNI_ALPHA) != 0; +} + + +/** + * Checks if a unicode code point is a decimal digit. + * + * @returns true if it is. + * @returns false if it isn't. + * @param CodePoint The code point. + */ +DECLINLINE(bool) RTUniCpIsDecDigit(RTUNICP CodePoint) +{ + return (rtUniCpFlags(CodePoint) & RTUNI_DDIGIT) != 0; +} + + +/** + * Checks if a unicode code point is a hexadecimal digit. + * + * @returns true if it is. + * @returns false if it isn't. + * @param CodePoint The code point. + */ +DECLINLINE(bool) RTUniCpIsHexDigit(RTUNICP CodePoint) +{ + return (rtUniCpFlags(CodePoint) & RTUNI_XDIGIT) != 0; +} + + +/** + * Checks if a unicode code point is white space. + * + * @returns true if it is. + * @returns false if it isn't. + * @param CodePoint The code point. + */ +DECLINLINE(bool) RTUniCpIsSpace(RTUNICP CodePoint) +{ + return (rtUniCpFlags(CodePoint) & RTUNI_WSPACE) != 0; +} + + + +/** + * Array of uppercase ranges. + * @internal + */ +extern RTDATADECL(const RTUNICASERANGE) g_aRTUniUpperRanges[]; + +/** + * Array of lowercase ranges. + * @internal + */ +extern RTDATADECL(const RTUNICASERANGE) g_aRTUniLowerRanges[]; + + +/** + * Folds a unicode code point using the specified range array. + * + * @returns FOlded code point. + * @param CodePoint The unicode code point to fold. + * @param pCur The case folding range to use. + */ +DECLINLINE(RTUNICP) rtUniCpFold(RTUNICP CodePoint, PCRTUNICASERANGE pCur) +{ + do + { + if (pCur->EndCP > CodePoint) + { + if (pCur->BeginCP <= CodePoint) + CodePoint = pCur->paFoldedCPs[CodePoint - pCur->BeginCP]; + break; + } + pCur++; + } while (pCur->EndCP != RTUNICP_MAX); + return CodePoint; +} + + +/** + * Folds a unicode code point to upper case. + * + * @returns Folded code point. + * @param CodePoint The unicode code point to fold. + */ +DECLINLINE(RTUNICP) RTUniCpToUpper(RTUNICP CodePoint) +{ + return rtUniCpFold(CodePoint, &g_aRTUniUpperRanges[0]); +} + + +/** + * Folds a unicode code point to lower case. + * + * @returns Folded code point. + * @param CodePoint The unicode code point to fold. + */ +DECLINLINE(RTUNICP) RTUniCpToLower(RTUNICP CodePoint) +{ + return rtUniCpFold(CodePoint, &g_aRTUniLowerRanges[0]); +} + + +#else /* RTUNI_USE_WCTYPE */ + + +/** + * Checks if a unicode code point is upper case. + * + * @returns true if it is. + * @returns false if it isn't. + * @param CodePoint The code point. + */ +DECLINLINE(bool) RTUniCpIsUpper(RTUNICP CodePoint) +{ + return !!iswupper(CodePoint); +} + + +/** + * Checks if a unicode code point is lower case. + * + * @returns true if it is. + * @returns false if it isn't. + * @param CodePoint The code point. + */ +DECLINLINE(bool) RTUniCpIsLower(RTUNICP CodePoint) +{ + return !!iswlower(CodePoint); +} + + +/** + * Checks if a unicode code point is case foldable. + * + * @returns true if it is. + * @returns false if it isn't. + * @param CodePoint The code point. + */ +DECLINLINE(bool) RTUniCpIsFoldable(RTUNICP CodePoint) +{ + /* Right enough. */ + return iswupper(CodePoint) || iswlower(CodePoint); +} + + +/** + * Checks if a unicode code point is alphabetic. + * + * @returns true if it is. + * @returns false if it isn't. + * @param CodePoint The code point. + */ +DECLINLINE(bool) RTUniCpIsAlphabetic(RTUNICP CodePoint) +{ + return !!iswalpha(CodePoint); +} + + +/** + * Checks if a unicode code point is a decimal digit. + * + * @returns true if it is. + * @returns false if it isn't. + * @param CodePoint The code point. + */ +DECLINLINE(bool) RTUniCpIsDecDigit(RTUNICP CodePoint) +{ + return !!iswdigit(CodePoint); +} + + +/** + * Checks if a unicode code point is a hexadecimal digit. + * + * @returns true if it is. + * @returns false if it isn't. + * @param CodePoint The code point. + */ +DECLINLINE(bool) RTUniCpIsHexDigit(RTUNICP CodePoint) +{ + return !!iswxdigit(CodePoint); +} + + +/** + * Checks if a unicode code point is white space. + * + * @returns true if it is. + * @returns false if it isn't. + * @param CodePoint The code point. + */ +DECLINLINE(bool) RTUniCpIsSpace(RTUNICP CodePoint) +{ + return !!iswspace(CodePoint); +} + + +/** + * Folds a unicode code point to upper case. + * + * @returns Folded code point. + * @param CodePoint The unicode code point to fold. + */ +DECLINLINE(RTUNICP) RTUniCpToUpper(RTUNICP CodePoint) +{ + return towupper(CodePoint); +} + + +/** + * Folds a unicode code point to lower case. + * + * @returns Folded code point. + * @param CodePoint The unicode code point to fold. + */ +DECLINLINE(RTUNICP) RTUniCpToLower(RTUNICP CodePoint) +{ + return towlower(CodePoint); +} + + +#endif /* RTUNI_USE_WCTYPE */ + + +/** + * Frees a unicode string. + * + * @param pusz The string to free. + */ +RTDECL(void) RTUniFree(PRTUNICP pusz); + + +/** + * Checks if a code point valid. + * + * Any code point (defined or not) within the 17 unicode planes (0 thru 16), + * except surrogates will be considered valid code points by this function. + * + * @returns true if in range, false if not. + * @param CodePoint The unicode code point to validate. + */ +DECLINLINE(bool) RTUniCpIsValid(RTUNICP CodePoint) +{ + return CodePoint <= 0x00d7ff + || ( CodePoint <= 0x10ffff + && CodePoint >= 0x00e000); +} + + +/** + * Checks if the given code point is in the BMP range. + * + * Surrogates are not considered in the BMP range by this function. + * + * @returns true if in BMP, false if not. + * @param CodePoint The unicode code point to consider. + */ +DECLINLINE(bool) RTUniCpIsBMP(RTUNICP CodePoint) +{ + return CodePoint <= 0xd7ff + || ( CodePoint <= 0xffff + && CodePoint >= 0xe000); +} + + +/** + * Folds a unicode code point to lower case. + * + * @returns Folded code point. + * @param CodePoint The unicode code point to fold. + */ +DECLINLINE(size_t) RTUniCpCalcUtf8Len(RTUNICP CodePoint) +{ + if (CodePoint < 0x80) + return 1; + return 2 + + (CodePoint >= 0x00000800) + + (CodePoint >= 0x00010000) + + (CodePoint >= 0x00200000) + + (CodePoint >= 0x04000000) + + (CodePoint >= 0x80000000) /* illegal */; +} + + + +RT_C_DECLS_END +/** @} */ + + +#endif + --- linux-raspi2-4.2.0.orig/ubuntu/vbox/include/iprt/x86.h +++ linux-raspi2-4.2.0/ubuntu/vbox/include/iprt/x86.h @@ -0,0 +1,3891 @@ +/** @file + * IPRT - X86 and AMD64 Structures and Definitions. + * + * @note x86.mac is generated from this file by running 'kmk incs' in the root. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + +#ifndef ___iprt_x86_h +#define ___iprt_x86_h + +#ifndef VBOX_FOR_DTRACE_LIB +# include +# include +#else +# pragma D depends_on library vbox-types.d +#endif + +/* Workaround for Solaris sys/regset.h defining CS, DS */ +#ifdef RT_OS_SOLARIS +# undef CS +# undef DS +#endif + +/** @defgroup grp_rt_x86 x86 Types and Definitions + * @ingroup grp_rt + * @{ + */ + +#ifndef VBOX_FOR_DTRACE_LIB +/** + * EFLAGS Bits. + */ +typedef struct X86EFLAGSBITS +{ + /** Bit 0 - CF - Carry flag - Status flag. */ + unsigned u1CF : 1; + /** Bit 1 - 1 - Reserved flag. */ + unsigned u1Reserved0 : 1; + /** Bit 2 - PF - Parity flag - Status flag. */ + unsigned u1PF : 1; + /** Bit 3 - 0 - Reserved flag. */ + unsigned u1Reserved1 : 1; + /** Bit 4 - AF - Auxiliary carry flag - Status flag. */ + unsigned u1AF : 1; + /** Bit 5 - 0 - Reserved flag. */ + unsigned u1Reserved2 : 1; + /** Bit 6 - ZF - Zero flag - Status flag. */ + unsigned u1ZF : 1; + /** Bit 7 - SF - Signed flag - Status flag. */ + unsigned u1SF : 1; + /** Bit 8 - TF - Trap flag - System flag. */ + unsigned u1TF : 1; + /** Bit 9 - IF - Interrupt flag - System flag. */ + unsigned u1IF : 1; + /** Bit 10 - DF - Direction flag - Control flag. */ + unsigned u1DF : 1; + /** Bit 11 - OF - Overflow flag - Status flag. */ + unsigned u1OF : 1; + /** Bit 12-13 - IOPL - I/O privilege level flag - System flag. */ + unsigned u2IOPL : 2; + /** Bit 14 - NT - Nested task flag - System flag. */ + unsigned u1NT : 1; + /** Bit 15 - 0 - Reserved flag. */ + unsigned u1Reserved3 : 1; + /** Bit 16 - RF - Resume flag - System flag. */ + unsigned u1RF : 1; + /** Bit 17 - VM - Virtual 8086 mode - System flag. */ + unsigned u1VM : 1; + /** Bit 18 - AC - Alignment check flag - System flag. Works with CR0.AM. */ + unsigned u1AC : 1; + /** Bit 19 - VIF - Virtual interrupt flag - System flag. */ + unsigned u1VIF : 1; + /** Bit 20 - VIP - Virtual interrupt pending flag - System flag. */ + unsigned u1VIP : 1; + /** Bit 21 - ID - CPUID flag - System flag. If this responds to flipping CPUID is supported. */ + unsigned u1ID : 1; + /** Bit 22-31 - 0 - Reserved flag. */ + unsigned u10Reserved4 : 10; +} X86EFLAGSBITS; +/** Pointer to EFLAGS bits. */ +typedef X86EFLAGSBITS *PX86EFLAGSBITS; +/** Pointer to const EFLAGS bits. */ +typedef const X86EFLAGSBITS *PCX86EFLAGSBITS; +#endif /* !VBOX_FOR_DTRACE_LIB */ + +/** + * EFLAGS. + */ +typedef union X86EFLAGS +{ + /** The plain unsigned view. */ + uint32_t u; +#ifndef VBOX_FOR_DTRACE_LIB + /** The bitfield view. */ + X86EFLAGSBITS Bits; +#endif + /** The 8-bit view. */ + uint8_t au8[4]; + /** The 16-bit view. */ + uint16_t au16[2]; + /** The 32-bit view. */ + uint32_t au32[1]; + /** The 32-bit view. */ + uint32_t u32; +} X86EFLAGS; +/** Pointer to EFLAGS. */ +typedef X86EFLAGS *PX86EFLAGS; +/** Pointer to const EFLAGS. */ +typedef const X86EFLAGS *PCX86EFLAGS; + +/** + * RFLAGS (32 upper bits are reserved). + */ +typedef union X86RFLAGS +{ + /** The plain unsigned view. */ + uint64_t u; +#ifndef VBOX_FOR_DTRACE_LIB + /** The bitfield view. */ + X86EFLAGSBITS Bits; +#endif + /** The 8-bit view. */ + uint8_t au8[8]; + /** The 16-bit view. */ + uint16_t au16[4]; + /** The 32-bit view. */ + uint32_t au32[2]; + /** The 64-bit view. */ + uint64_t au64[1]; + /** The 64-bit view. */ + uint64_t u64; +} X86RFLAGS; +/** Pointer to RFLAGS. */ +typedef X86RFLAGS *PX86RFLAGS; +/** Pointer to const RFLAGS. */ +typedef const X86RFLAGS *PCX86RFLAGS; + + +/** @name EFLAGS + * @{ + */ +/** Bit 0 - CF - Carry flag - Status flag. */ +#define X86_EFL_CF RT_BIT(0) +#define X86_EFL_CF_BIT 0 +/** Bit 1 - Reserved, reads as 1. */ +#define X86_EFL_1 RT_BIT(1) +/** Bit 2 - PF - Parity flag - Status flag. */ +#define X86_EFL_PF RT_BIT(2) +/** Bit 4 - AF - Auxiliary carry flag - Status flag. */ +#define X86_EFL_AF RT_BIT(4) +#define X86_EFL_AF_BIT 4 +/** Bit 6 - ZF - Zero flag - Status flag. */ +#define X86_EFL_ZF RT_BIT(6) +#define X86_EFL_ZF_BIT 6 +/** Bit 7 - SF - Signed flag - Status flag. */ +#define X86_EFL_SF RT_BIT(7) +#define X86_EFL_SF_BIT 7 +/** Bit 8 - TF - Trap flag - System flag. */ +#define X86_EFL_TF RT_BIT(8) +/** Bit 9 - IF - Interrupt flag - System flag. */ +#define X86_EFL_IF RT_BIT(9) +/** Bit 10 - DF - Direction flag - Control flag. */ +#define X86_EFL_DF RT_BIT(10) +/** Bit 11 - OF - Overflow flag - Status flag. */ +#define X86_EFL_OF RT_BIT(11) +#define X86_EFL_OF_BIT 11 +/** Bit 12-13 - IOPL - I/O privilege level flag - System flag. */ +#define X86_EFL_IOPL (RT_BIT(12) | RT_BIT(13)) +/** Bit 14 - NT - Nested task flag - System flag. */ +#define X86_EFL_NT RT_BIT(14) +/** Bit 16 - RF - Resume flag - System flag. */ +#define X86_EFL_RF RT_BIT(16) +/** Bit 17 - VM - Virtual 8086 mode - System flag. */ +#define X86_EFL_VM RT_BIT(17) +/** Bit 18 - AC - Alignment check flag - System flag. Works with CR0.AM. */ +#define X86_EFL_AC RT_BIT(18) +/** Bit 19 - VIF - Virtual interrupt flag - System flag. */ +#define X86_EFL_VIF RT_BIT(19) +/** Bit 20 - VIP - Virtual interrupt pending flag - System flag. */ +#define X86_EFL_VIP RT_BIT(20) +/** Bit 21 - ID - CPUID flag - System flag. If this responds to flipping CPUID is supported. */ +#define X86_EFL_ID RT_BIT(21) +/** All live bits. */ +#define X86_EFL_LIVE_MASK UINT32_C(0x003f7fd5) +/** Read as 1 bits. */ +#define X86_EFL_RA1_MASK RT_BIT_32(1) +/** IOPL shift. */ +#define X86_EFL_IOPL_SHIFT 12 +/** The IOPL level from the flags. */ +#define X86_EFL_GET_IOPL(efl) (((efl) >> X86_EFL_IOPL_SHIFT) & 3) +/** Bits restored by popf */ +#define X86_EFL_POPF_BITS ( X86_EFL_CF | X86_EFL_PF | X86_EFL_AF | X86_EFL_ZF | X86_EFL_SF | X86_EFL_TF | X86_EFL_IF \ + | X86_EFL_DF | X86_EFL_OF | X86_EFL_IOPL | X86_EFL_NT | X86_EFL_AC | X86_EFL_ID ) +/** The status bits commonly updated by arithmetic instructions. */ +#define X86_EFL_STATUS_BITS ( X86_EFL_CF | X86_EFL_PF | X86_EFL_AF | X86_EFL_ZF | X86_EFL_SF | X86_EFL_OF ) +/** @} */ + + +/** CPUID Feature information - ECX. + * CPUID query with EAX=1. + */ +#ifndef VBOX_FOR_DTRACE_LIB +typedef struct X86CPUIDFEATECX +{ + /** Bit 0 - SSE3 - Supports SSE3 or not. */ + unsigned u1SSE3 : 1; + /** Bit 1 - PCLMULQDQ. */ + unsigned u1PCLMULQDQ : 1; + /** Bit 2 - DS Area 64-bit layout. */ + unsigned u1DTE64 : 1; + /** Bit 3 - MONITOR - Supports MONITOR/MWAIT. */ + unsigned u1Monitor : 1; + /** Bit 4 - CPL-DS - CPL Qualified Debug Store. */ + unsigned u1CPLDS : 1; + /** Bit 5 - VMX - Virtual Machine Technology. */ + unsigned u1VMX : 1; + /** Bit 6 - SMX: Safer Mode Extensions. */ + unsigned u1SMX : 1; + /** Bit 7 - EST - Enh. SpeedStep Tech. */ + unsigned u1EST : 1; + /** Bit 8 - TM2 - Terminal Monitor 2. */ + unsigned u1TM2 : 1; + /** Bit 9 - SSSE3 - Supplemental Streaming SIMD Extensions 3. */ + unsigned u1SSSE3 : 1; + /** Bit 10 - CNTX-ID - L1 Context ID. */ + unsigned u1CNTXID : 1; + /** Bit 11 - Reserved. */ + unsigned u1Reserved1 : 1; + /** Bit 12 - FMA. */ + unsigned u1FMA : 1; + /** Bit 13 - CX16 - CMPXCHG16B. */ + unsigned u1CX16 : 1; + /** Bit 14 - xTPR Update Control. Processor supports changing IA32_MISC_ENABLES[bit 23]. */ + unsigned u1TPRUpdate : 1; + /** Bit 15 - PDCM - Perf/Debug Capability MSR. */ + unsigned u1PDCM : 1; + /** Bit 16 - Reserved. */ + unsigned u1Reserved2 : 1; + /** Bit 17 - PCID - Process-context identifiers. */ + unsigned u1PCID : 1; + /** Bit 18 - Direct Cache Access. */ + unsigned u1DCA : 1; + /** Bit 19 - SSE4_1 - Supports SSE4_1 or not. */ + unsigned u1SSE4_1 : 1; + /** Bit 20 - SSE4_2 - Supports SSE4_2 or not. */ + unsigned u1SSE4_2 : 1; + /** Bit 21 - x2APIC. */ + unsigned u1x2APIC : 1; + /** Bit 22 - MOVBE - Supports MOVBE. */ + unsigned u1MOVBE : 1; + /** Bit 23 - POPCNT - Supports POPCNT. */ + unsigned u1POPCNT : 1; + /** Bit 24 - TSC-Deadline. */ + unsigned u1TSCDEADLINE : 1; + /** Bit 25 - AES. */ + unsigned u1AES : 1; + /** Bit 26 - XSAVE - Supports XSAVE. */ + unsigned u1XSAVE : 1; + /** Bit 27 - OSXSAVE - Supports OSXSAVE. */ + unsigned u1OSXSAVE : 1; + /** Bit 28 - AVX - Supports AVX instruction extensions. */ + unsigned u1AVX : 1; + /** Bit 29 - F16C - Supports 16-bit floating point conversion instructions. */ + unsigned u1F16C : 1; + /** Bit 30 - RDRAND - Supports RDRAND. */ + unsigned u1RDRAND : 1; + /** Bit 31 - Hypervisor present (we're a guest). */ + unsigned u1HVP : 1; +} X86CPUIDFEATECX; +#else /* VBOX_FOR_DTRACE_LIB */ +typedef uint32_t X86CPUIDFEATECX; +#endif /* VBOX_FOR_DTRACE_LIB */ +/** Pointer to CPUID Feature Information - ECX. */ +typedef X86CPUIDFEATECX *PX86CPUIDFEATECX; +/** Pointer to const CPUID Feature Information - ECX. */ +typedef const X86CPUIDFEATECX *PCX86CPUIDFEATECX; + + +/** CPUID Feature Information - EDX. + * CPUID query with EAX=1. + */ +#ifndef VBOX_FOR_DTRACE_LIB /* DTrace different (brain-dead from a C pov) bitfield implementation */ +typedef struct X86CPUIDFEATEDX +{ + /** Bit 0 - FPU - x87 FPU on Chip. */ + unsigned u1FPU : 1; + /** Bit 1 - VME - Virtual 8086 Mode Enhancements. */ + unsigned u1VME : 1; + /** Bit 2 - DE - Debugging extensions. */ + unsigned u1DE : 1; + /** Bit 3 - PSE - Page Size Extension. */ + unsigned u1PSE : 1; + /** Bit 4 - TSC - Time Stamp Counter. */ + unsigned u1TSC : 1; + /** Bit 5 - MSR - Model Specific Registers RDMSR and WRMSR Instructions. */ + unsigned u1MSR : 1; + /** Bit 6 - PAE - Physical Address Extension. */ + unsigned u1PAE : 1; + /** Bit 7 - MCE - Machine Check Exception. */ + unsigned u1MCE : 1; + /** Bit 8 - CX8 - CMPXCHG8B instruction. */ + unsigned u1CX8 : 1; + /** Bit 9 - APIC - APIC On-Chip. */ + unsigned u1APIC : 1; + /** Bit 10 - Reserved. */ + unsigned u1Reserved1 : 1; + /** Bit 11 - SEP - SYSENTER and SYSEXIT. */ + unsigned u1SEP : 1; + /** Bit 12 - MTRR - Memory Type Range Registers. */ + unsigned u1MTRR : 1; + /** Bit 13 - PGE - PTE Global Bit. */ + unsigned u1PGE : 1; + /** Bit 14 - MCA - Machine Check Architecture. */ + unsigned u1MCA : 1; + /** Bit 15 - CMOV - Conditional Move Instructions. */ + unsigned u1CMOV : 1; + /** Bit 16 - PAT - Page Attribute Table. */ + unsigned u1PAT : 1; + /** Bit 17 - PSE-36 - 36-bit Page Size Extension. */ + unsigned u1PSE36 : 1; + /** Bit 18 - PSN - Processor Serial Number. */ + unsigned u1PSN : 1; + /** Bit 19 - CLFSH - CLFLUSH Instruction. */ + unsigned u1CLFSH : 1; + /** Bit 20 - Reserved. */ + unsigned u1Reserved2 : 1; + /** Bit 21 - DS - Debug Store. */ + unsigned u1DS : 1; + /** Bit 22 - ACPI - Thermal Monitor and Software Controlled Clock Facilities. */ + unsigned u1ACPI : 1; + /** Bit 23 - MMX - Intel MMX 'Technology'. */ + unsigned u1MMX : 1; + /** Bit 24 - FXSR - FXSAVE and FXRSTOR Instructions. */ + unsigned u1FXSR : 1; + /** Bit 25 - SSE - SSE Support. */ + unsigned u1SSE : 1; + /** Bit 26 - SSE2 - SSE2 Support. */ + unsigned u1SSE2 : 1; + /** Bit 27 - SS - Self Snoop. */ + unsigned u1SS : 1; + /** Bit 28 - HTT - Hyper-Threading Technology. */ + unsigned u1HTT : 1; + /** Bit 29 - TM - Thermal Monitor. */ + unsigned u1TM : 1; + /** Bit 30 - Reserved - . */ + unsigned u1Reserved3 : 1; + /** Bit 31 - PBE - Pending Break Enabled. */ + unsigned u1PBE : 1; +} X86CPUIDFEATEDX; +#else /* VBOX_FOR_DTRACE_LIB */ +typedef uint32_t X86CPUIDFEATEDX; +#endif /* VBOX_FOR_DTRACE_LIB */ +/** Pointer to CPUID Feature Information - EDX. */ +typedef X86CPUIDFEATEDX *PX86CPUIDFEATEDX; +/** Pointer to const CPUID Feature Information - EDX. */ +typedef const X86CPUIDFEATEDX *PCX86CPUIDFEATEDX; + +/** @name CPUID Vendor information. + * CPUID query with EAX=0. + * @{ + */ +#define X86_CPUID_VENDOR_INTEL_EBX 0x756e6547 /* Genu */ +#define X86_CPUID_VENDOR_INTEL_ECX 0x6c65746e /* ntel */ +#define X86_CPUID_VENDOR_INTEL_EDX 0x49656e69 /* ineI */ + +#define X86_CPUID_VENDOR_AMD_EBX 0x68747541 /* Auth */ +#define X86_CPUID_VENDOR_AMD_ECX 0x444d4163 /* cAMD */ +#define X86_CPUID_VENDOR_AMD_EDX 0x69746e65 /* enti */ + +#define X86_CPUID_VENDOR_VIA_EBX 0x746e6543 /* Cent */ +#define X86_CPUID_VENDOR_VIA_ECX 0x736c7561 /* auls */ +#define X86_CPUID_VENDOR_VIA_EDX 0x48727561 /* aurH */ +/** @} */ + + +/** @name CPUID Feature information. + * CPUID query with EAX=1. + * @{ + */ +/** ECX Bit 0 - SSE3 - Supports SSE3 or not. */ +#define X86_CPUID_FEATURE_ECX_SSE3 RT_BIT(0) +/** ECX Bit 1 - PCLMUL - PCLMULQDQ support (for AES-GCM). */ +#define X86_CPUID_FEATURE_ECX_PCLMUL RT_BIT(1) +/** ECX Bit 2 - DTES64 - DS Area 64-bit Layout. */ +#define X86_CPUID_FEATURE_ECX_DTES64 RT_BIT(2) +/** ECX Bit 3 - MONITOR - Supports MONITOR/MWAIT. */ +#define X86_CPUID_FEATURE_ECX_MONITOR RT_BIT(3) +/** ECX Bit 4 - CPL-DS - CPL Qualified Debug Store. */ +#define X86_CPUID_FEATURE_ECX_CPLDS RT_BIT(4) +/** ECX Bit 5 - VMX - Virtual Machine Technology. */ +#define X86_CPUID_FEATURE_ECX_VMX RT_BIT(5) +/** ECX Bit 6 - SMX - Safer Mode Extensions. */ +#define X86_CPUID_FEATURE_ECX_SMX RT_BIT(6) +/** ECX Bit 7 - EST - Enh. SpeedStep Tech. */ +#define X86_CPUID_FEATURE_ECX_EST RT_BIT(7) +/** ECX Bit 8 - TM2 - Terminal Monitor 2. */ +#define X86_CPUID_FEATURE_ECX_TM2 RT_BIT(8) +/** ECX Bit 9 - SSSE3 - Supplemental Streaming SIMD Extensions 3. */ +#define X86_CPUID_FEATURE_ECX_SSSE3 RT_BIT(9) +/** ECX Bit 10 - CNTX-ID - L1 Context ID. */ +#define X86_CPUID_FEATURE_ECX_CNTXID RT_BIT(10) +/** ECX Bit 11 - SDBG - Sillicon debug interface (IA32_DEBUG_INTERFACE MSR). + * See figure 3-6 and table 3-10, in intel Vol. 2A. from 2015-01-01. */ +#define X86_CPUID_FEATURE_ECX_SDBG RT_BIT(11) +/** ECX Bit 12 - FMA. */ +#define X86_CPUID_FEATURE_ECX_FMA RT_BIT(12) +/** ECX Bit 13 - CX16 - CMPXCHG16B. */ +#define X86_CPUID_FEATURE_ECX_CX16 RT_BIT(13) +/** ECX Bit 14 - xTPR Update Control. Processor supports changing IA32_MISC_ENABLES[bit 23]. */ +#define X86_CPUID_FEATURE_ECX_TPRUPDATE RT_BIT(14) +/** ECX Bit 15 - PDCM - Perf/Debug Capability MSR. */ +#define X86_CPUID_FEATURE_ECX_PDCM RT_BIT(15) +/** ECX Bit 17 - PCID - Process-context identifiers. */ +#define X86_CPUID_FEATURE_ECX_PCID RT_BIT(17) +/** ECX Bit 18 - DCA - Direct Cache Access. */ +#define X86_CPUID_FEATURE_ECX_DCA RT_BIT(18) +/** ECX Bit 19 - SSE4_1 - Supports SSE4_1 or not. */ +#define X86_CPUID_FEATURE_ECX_SSE4_1 RT_BIT(19) +/** ECX Bit 20 - SSE4_2 - Supports SSE4_2 or not. */ +#define X86_CPUID_FEATURE_ECX_SSE4_2 RT_BIT(20) +/** ECX Bit 21 - x2APIC support. */ +#define X86_CPUID_FEATURE_ECX_X2APIC RT_BIT(21) +/** ECX Bit 22 - MOVBE instruction. */ +#define X86_CPUID_FEATURE_ECX_MOVBE RT_BIT(22) +/** ECX Bit 23 - POPCNT instruction. */ +#define X86_CPUID_FEATURE_ECX_POPCNT RT_BIT(23) +/** ECX Bir 24 - TSC-Deadline. */ +#define X86_CPUID_FEATURE_ECX_TSCDEADL RT_BIT(24) +/** ECX Bit 25 - AES instructions. */ +#define X86_CPUID_FEATURE_ECX_AES RT_BIT(25) +/** ECX Bit 26 - XSAVE instruction. */ +#define X86_CPUID_FEATURE_ECX_XSAVE RT_BIT(26) +/** ECX Bit 27 - OSXSAVE instruction. */ +#define X86_CPUID_FEATURE_ECX_OSXSAVE RT_BIT(27) +/** ECX Bit 28 - AVX. */ +#define X86_CPUID_FEATURE_ECX_AVX RT_BIT(28) +/** ECX Bit 29 - F16C - Half-precision convert instruction support. */ +#define X86_CPUID_FEATURE_ECX_F16C RT_BIT(29) +/** ECX Bit 30 - RDRAND instruction. */ +#define X86_CPUID_FEATURE_ECX_RDRAND RT_BIT(30) +/** ECX Bit 31 - Hypervisor Present (software only). */ +#define X86_CPUID_FEATURE_ECX_HVP RT_BIT(31) + + +/** Bit 0 - FPU - x87 FPU on Chip. */ +#define X86_CPUID_FEATURE_EDX_FPU RT_BIT(0) +/** Bit 1 - VME - Virtual 8086 Mode Enhancements. */ +#define X86_CPUID_FEATURE_EDX_VME RT_BIT(1) +/** Bit 2 - DE - Debugging extensions. */ +#define X86_CPUID_FEATURE_EDX_DE RT_BIT(2) +/** Bit 3 - PSE - Page Size Extension. */ +#define X86_CPUID_FEATURE_EDX_PSE RT_BIT(3) +/** Bit 4 - TSC - Time Stamp Counter. */ +#define X86_CPUID_FEATURE_EDX_TSC RT_BIT(4) +/** Bit 5 - MSR - Model Specific Registers RDMSR and WRMSR Instructions. */ +#define X86_CPUID_FEATURE_EDX_MSR RT_BIT(5) +/** Bit 6 - PAE - Physical Address Extension. */ +#define X86_CPUID_FEATURE_EDX_PAE RT_BIT(6) +/** Bit 7 - MCE - Machine Check Exception. */ +#define X86_CPUID_FEATURE_EDX_MCE RT_BIT(7) +/** Bit 8 - CX8 - CMPXCHG8B instruction. */ +#define X86_CPUID_FEATURE_EDX_CX8 RT_BIT(8) +/** Bit 9 - APIC - APIC On-Chip. */ +#define X86_CPUID_FEATURE_EDX_APIC RT_BIT(9) +/** Bit 11 - SEP - SYSENTER and SYSEXIT Present. */ +#define X86_CPUID_FEATURE_EDX_SEP RT_BIT(11) +/** Bit 12 - MTRR - Memory Type Range Registers. */ +#define X86_CPUID_FEATURE_EDX_MTRR RT_BIT(12) +/** Bit 13 - PGE - PTE Global Bit. */ +#define X86_CPUID_FEATURE_EDX_PGE RT_BIT(13) +/** Bit 14 - MCA - Machine Check Architecture. */ +#define X86_CPUID_FEATURE_EDX_MCA RT_BIT(14) +/** Bit 15 - CMOV - Conditional Move Instructions. */ +#define X86_CPUID_FEATURE_EDX_CMOV RT_BIT(15) +/** Bit 16 - PAT - Page Attribute Table. */ +#define X86_CPUID_FEATURE_EDX_PAT RT_BIT(16) +/** Bit 17 - PSE-36 - 36-bit Page Size Extension. */ +#define X86_CPUID_FEATURE_EDX_PSE36 RT_BIT(17) +/** Bit 18 - PSN - Processor Serial Number. */ +#define X86_CPUID_FEATURE_EDX_PSN RT_BIT(18) +/** Bit 19 - CLFSH - CLFLUSH Instruction. */ +#define X86_CPUID_FEATURE_EDX_CLFSH RT_BIT(19) +/** Bit 21 - DS - Debug Store. */ +#define X86_CPUID_FEATURE_EDX_DS RT_BIT(21) +/** Bit 22 - ACPI - Thermal Monitor and Software Controlled Clock Facilities. */ +#define X86_CPUID_FEATURE_EDX_ACPI RT_BIT(22) +/** Bit 23 - MMX - Intel MMX Technology. */ +#define X86_CPUID_FEATURE_EDX_MMX RT_BIT(23) +/** Bit 24 - FXSR - FXSAVE and FXRSTOR Instructions. */ +#define X86_CPUID_FEATURE_EDX_FXSR RT_BIT(24) +/** Bit 25 - SSE - SSE Support. */ +#define X86_CPUID_FEATURE_EDX_SSE RT_BIT(25) +/** Bit 26 - SSE2 - SSE2 Support. */ +#define X86_CPUID_FEATURE_EDX_SSE2 RT_BIT(26) +/** Bit 27 - SS - Self Snoop. */ +#define X86_CPUID_FEATURE_EDX_SS RT_BIT(27) +/** Bit 28 - HTT - Hyper-Threading Technology. */ +#define X86_CPUID_FEATURE_EDX_HTT RT_BIT(28) +/** Bit 29 - TM - Therm. Monitor. */ +#define X86_CPUID_FEATURE_EDX_TM RT_BIT(29) +/** Bit 31 - PBE - Pending Break Enabled. */ +#define X86_CPUID_FEATURE_EDX_PBE RT_BIT(31) +/** @} */ + +/** @name CPUID mwait/monitor information. + * CPUID query with EAX=5. + * @{ + */ +/** ECX Bit 0 - MWAITEXT - Supports mwait/monitor extensions or not. */ +#define X86_CPUID_MWAIT_ECX_EXT RT_BIT(0) +/** ECX Bit 1 - MWAITBREAK - Break mwait for external interrupt even if EFLAGS.IF=0. */ +#define X86_CPUID_MWAIT_ECX_BREAKIRQIF0 RT_BIT(1) +/** @} */ + + +/** @name CPUID Structured Extended Feature information. + * CPUID query with EAX=7. + * @{ + */ +/** EBX Bit 0 - FSGSBASE - Supports RDFSBASE/RDGSBASE/WRFSBASE/WRGSBASE. */ +#define X86_CPUID_STEXT_FEATURE_EBX_FSGSBASE RT_BIT(0) +/** EBX Bit 1 - TSCADJUST - Supports MSR_IA32_TSC_ADJUST. */ +#define X86_CPUID_STEXT_FEATURE_EBX_TSC_ADJUST RT_BIT(1) +/** EBX Bit 3 - BMI1 - Advanced Bit Manipulation extension 1. */ +#define X86_CPUID_STEXT_FEATURE_EBX_BMI1 RT_BIT(3) +/** EBX Bit 4 - HLE - Hardware Lock Elision. */ +#define X86_CPUID_STEXT_FEATURE_EBX_HLE RT_BIT(4) +/** EBX Bit 5 - AVX2 - Advanced Vector Extensions 2. */ +#define X86_CPUID_STEXT_FEATURE_EBX_AVX2 RT_BIT(5) +/** EBX Bit 7 - SMEP - Supervisor Mode Execution Prevention. */ +#define X86_CPUID_STEXT_FEATURE_EBX_SMEP RT_BIT(7) +/** EBX Bit 8 - BMI2 - Advanced Bit Manipulation extension 2. */ +#define X86_CPUID_STEXT_FEATURE_EBX_BMI2 RT_BIT(8) +/** EBX Bit 9 - ERMS - Supports Enhanced REP MOVSB/STOSB. */ +#define X86_CPUID_STEXT_FEATURE_EBX_ERMS RT_BIT(9) +/** EBX Bit 10 - INVPCID - Supports INVPCID. */ +#define X86_CPUID_STEXT_FEATURE_EBX_INVPCID RT_BIT(10) +/** EBX Bit 11 - RTM - Supports Restricted Transactional Memory. */ +#define X86_CPUID_STEXT_FEATURE_EBX_RTM RT_BIT(11) +/** EBX Bit 12 - PQM - Supports Platform Quality of Service Monitoring. */ +#define X86_CPUID_STEXT_FEATURE_EBX_PQM RT_BIT(12) +/** EBX Bit 13 - DEPFPU_CS_DS - Deprecates FPU CS, FPU DS values if set. */ +#define X86_CPUID_STEXT_FEATURE_EBX_DEPR_FPU_CS_DS RT_BIT(13) +/** EBX Bit 14 - MPE - Supports Intel Memory Protection Extensions. */ +#define X86_CPUID_STEXT_FEATURE_EBX_MPE RT_BIT(14) +/** EBX Bit 15 - PQE - Supports Platform Quality of Service Enforcement. */ +#define X86_CPUID_STEXT_FEATURE_EBX_PQE RT_BIT(15) +/** EBX Bit 16 - AVX512F - Supports AVX512F. */ +#define X86_CPUID_STEXT_FEATURE_EBX_AVX512F RT_BIT(16) +/** EBX Bit 18 - RDSEED - Supports RDSEED. */ +#define X86_CPUID_STEXT_FEATURE_EBX_RDSEED RT_BIT(18) +/** EBX Bit 19 - ADX - Supports ADCX/ADOX. */ +#define X86_CPUID_STEXT_FEATURE_EBX_ADX RT_BIT(19) +/** EBX Bit 20 - SMAP - Supports Supervisor Mode Access Prevention. */ +#define X86_CPUID_STEXT_FEATURE_EBX_SMAP RT_BIT(20) +/** EBX Bit 23 - CLFLUSHOPT - Supports CLFLUSHOPT (Cache Line Flush). */ +#define X86_CPUID_STEXT_FEATURE_EBX_CLFLUSHOPT RT_BIT(23) +/** EBX Bit 25 - INTEL_PT - Supports Intel Processor Trace. */ +#define X86_CPUID_STEXT_FEATURE_EBX_INTEL_PT RT_BIT(25) +/** EBX Bit 26 - AVX512PF - Supports AVX512PF. */ +#define X86_CPUID_STEXT_FEATURE_EBX_AVX512PF RT_BIT(26) +/** EBX Bit 27 - AVX512ER - Supports AVX512ER. */ +#define X86_CPUID_STEXT_FEATURE_EBX_AVX512ER RT_BIT(27) +/** EBX Bit 28 - AVX512CD - Supports AVX512CD. */ +#define X86_CPUID_STEXT_FEATURE_EBX_AVX512CD RT_BIT(28) +/** EBX Bit 29 - SHA - Supports Secure Hash Algorithm extensions. */ +#define X86_CPUID_STEXT_FEATURE_EBX_SHA RT_BIT(29) + +/** ECX Bit 0 - PREFETCHWT1 - Supports the PREFETCHWT1 instruction. */ +#define X86_CPUID_STEXT_FEATURE_ECX_PREFETCHWT1 RT_BIT(0) +/** @} */ + + +/** @name CPUID Extended Feature information. + * CPUID query with EAX=0x80000001. + * @{ + */ +/** ECX Bit 0 - LAHF/SAHF support in 64-bit mode. */ +#define X86_CPUID_EXT_FEATURE_ECX_LAHF_SAHF RT_BIT(0) + +/** EDX Bit 11 - SYSCALL/SYSRET. */ +#define X86_CPUID_EXT_FEATURE_EDX_SYSCALL RT_BIT(11) +/** EDX Bit 20 - No-Execute/Execute-Disable. */ +#define X86_CPUID_EXT_FEATURE_EDX_NX RT_BIT(20) +/** EDX Bit 26 - 1 GB large page. */ +#define X86_CPUID_EXT_FEATURE_EDX_PAGE1GB RT_BIT(26) +/** EDX Bit 27 - RDTSCP. */ +#define X86_CPUID_EXT_FEATURE_EDX_RDTSCP RT_BIT(27) +/** EDX Bit 29 - AMD Long Mode/Intel-64 Instructions. */ +#define X86_CPUID_EXT_FEATURE_EDX_LONG_MODE RT_BIT(29) +/** @}*/ + +/** @name CPUID AMD Feature information. + * CPUID query with EAX=0x80000001. + * @{ + */ +/** Bit 0 - FPU - x87 FPU on Chip. */ +#define X86_CPUID_AMD_FEATURE_EDX_FPU RT_BIT(0) +/** Bit 1 - VME - Virtual 8086 Mode Enhancements. */ +#define X86_CPUID_AMD_FEATURE_EDX_VME RT_BIT(1) +/** Bit 2 - DE - Debugging extensions. */ +#define X86_CPUID_AMD_FEATURE_EDX_DE RT_BIT(2) +/** Bit 3 - PSE - Page Size Extension. */ +#define X86_CPUID_AMD_FEATURE_EDX_PSE RT_BIT(3) +/** Bit 4 - TSC - Time Stamp Counter. */ +#define X86_CPUID_AMD_FEATURE_EDX_TSC RT_BIT(4) +/** Bit 5 - MSR - K86 Model Specific Registers RDMSR and WRMSR Instructions. */ +#define X86_CPUID_AMD_FEATURE_EDX_MSR RT_BIT(5) +/** Bit 6 - PAE - Physical Address Extension. */ +#define X86_CPUID_AMD_FEATURE_EDX_PAE RT_BIT(6) +/** Bit 7 - MCE - Machine Check Exception. */ +#define X86_CPUID_AMD_FEATURE_EDX_MCE RT_BIT(7) +/** Bit 8 - CX8 - CMPXCHG8B instruction. */ +#define X86_CPUID_AMD_FEATURE_EDX_CX8 RT_BIT(8) +/** Bit 9 - APIC - APIC On-Chip. */ +#define X86_CPUID_AMD_FEATURE_EDX_APIC RT_BIT(9) +/** Bit 12 - MTRR - Memory Type Range Registers. */ +#define X86_CPUID_AMD_FEATURE_EDX_MTRR RT_BIT(12) +/** Bit 13 - PGE - PTE Global Bit. */ +#define X86_CPUID_AMD_FEATURE_EDX_PGE RT_BIT(13) +/** Bit 14 - MCA - Machine Check Architecture. */ +#define X86_CPUID_AMD_FEATURE_EDX_MCA RT_BIT(14) +/** Bit 15 - CMOV - Conditional Move Instructions. */ +#define X86_CPUID_AMD_FEATURE_EDX_CMOV RT_BIT(15) +/** Bit 16 - PAT - Page Attribute Table. */ +#define X86_CPUID_AMD_FEATURE_EDX_PAT RT_BIT(16) +/** Bit 17 - PSE-36 - 36-bit Page Size Extension. */ +#define X86_CPUID_AMD_FEATURE_EDX_PSE36 RT_BIT(17) +/** Bit 22 - AXMMX - AMD Extensions to MMX Instructions. */ +#define X86_CPUID_AMD_FEATURE_EDX_AXMMX RT_BIT(22) +/** Bit 23 - MMX - Intel MMX Technology. */ +#define X86_CPUID_AMD_FEATURE_EDX_MMX RT_BIT(23) +/** Bit 24 - FXSR - FXSAVE and FXRSTOR Instructions. */ +#define X86_CPUID_AMD_FEATURE_EDX_FXSR RT_BIT(24) +/** Bit 25 - FFXSR - AMD fast FXSAVE and FXRSTOR Instructions. */ +#define X86_CPUID_AMD_FEATURE_EDX_FFXSR RT_BIT(25) +/** Bit 30 - 3DNOWEXT - AMD Extensions to 3DNow. */ +#define X86_CPUID_AMD_FEATURE_EDX_3DNOW_EX RT_BIT(30) +/** Bit 31 - 3DNOW - AMD 3DNow. */ +#define X86_CPUID_AMD_FEATURE_EDX_3DNOW RT_BIT(31) + +/** Bit 1 - CmpLegacy - Core multi-processing legacy mode. */ +#define X86_CPUID_AMD_FEATURE_ECX_CMPL RT_BIT(1) +/** Bit 2 - SVM - AMD VM extensions. */ +#define X86_CPUID_AMD_FEATURE_ECX_SVM RT_BIT(2) +/** Bit 3 - EXTAPIC - AMD extended APIC registers starting at 0x400. */ +#define X86_CPUID_AMD_FEATURE_ECX_EXT_APIC RT_BIT(3) +/** Bit 4 - CR8L - AMD LOCK MOV CR0 means MOV CR8. */ +#define X86_CPUID_AMD_FEATURE_ECX_CR8L RT_BIT(4) +/** Bit 5 - ABM - AMD Advanced bit manipulation. LZCNT instruction support. */ +#define X86_CPUID_AMD_FEATURE_ECX_ABM RT_BIT(5) +/** Bit 6 - SSE4A - AMD EXTRQ, INSERTQ, MOVNTSS, and MOVNTSD instruction support. */ +#define X86_CPUID_AMD_FEATURE_ECX_SSE4A RT_BIT(6) +/** Bit 7 - MISALIGNSSE - AMD Misaligned SSE mode. */ +#define X86_CPUID_AMD_FEATURE_ECX_MISALNSSE RT_BIT(7) +/** Bit 8 - 3DNOWPRF - AMD PREFETCH and PREFETCHW instruction support. */ +#define X86_CPUID_AMD_FEATURE_ECX_3DNOWPRF RT_BIT(8) +/** Bit 9 - OSVW - AMD OS visible workaround. */ +#define X86_CPUID_AMD_FEATURE_ECX_OSVW RT_BIT(9) +/** Bit 10 - IBS - Instruct based sampling. */ +#define X86_CPUID_AMD_FEATURE_ECX_IBS RT_BIT(10) +/** Bit 11 - XOP - Extended operation support (see APM6). */ +#define X86_CPUID_AMD_FEATURE_ECX_XOP RT_BIT(11) +/** Bit 12 - SKINIT - AMD SKINIT: SKINIT, STGI, and DEV support. */ +#define X86_CPUID_AMD_FEATURE_ECX_SKINIT RT_BIT(12) +/** Bit 13 - WDT - AMD Watchdog timer support. */ +#define X86_CPUID_AMD_FEATURE_ECX_WDT RT_BIT(13) +/** Bit 15 - LWP - Lightweight profiling support. */ +#define X86_CPUID_AMD_FEATURE_ECX_LWP RT_BIT(15) +/** Bit 16 - FMA4 - Four operand FMA instruction support. */ +#define X86_CPUID_AMD_FEATURE_ECX_FMA4 RT_BIT(16) +/** Bit 19 - NodeId - Indicates support for + * MSR_C001_100C[NodeId,NodesPerProcessr]. */ +#define X86_CPUID_AMD_FEATURE_ECX_NODEID RT_BIT(19) +/** Bit 21 - TBM - Trailing bit manipulation instruction support. */ +#define X86_CPUID_AMD_FEATURE_ECX_TBM RT_BIT(21) +/** Bit 22 - TopologyExtensions - . */ +#define X86_CPUID_AMD_FEATURE_ECX_TOPOEXT RT_BIT(22) +/** @} */ + + +/** @name CPUID AMD Feature information. + * CPUID query with EAX=0x80000007. + * @{ + */ +/** Bit 0 - TS - Temperature Sensor. */ +#define X86_CPUID_AMD_ADVPOWER_EDX_TS RT_BIT(0) +/** Bit 1 - FID - Frequency ID Control. */ +#define X86_CPUID_AMD_ADVPOWER_EDX_FID RT_BIT(1) +/** Bit 2 - VID - Voltage ID Control. */ +#define X86_CPUID_AMD_ADVPOWER_EDX_VID RT_BIT(2) +/** Bit 3 - TTP - THERMTRIP. */ +#define X86_CPUID_AMD_ADVPOWER_EDX_TTP RT_BIT(3) +/** Bit 4 - TM - Hardware Thermal Control. */ +#define X86_CPUID_AMD_ADVPOWER_EDX_TM RT_BIT(4) +/** Bit 5 - STC - Software Thermal Control. */ +#define X86_CPUID_AMD_ADVPOWER_EDX_STC RT_BIT(5) +/** Bit 6 - MC - 100 Mhz Multiplier Control. */ +#define X86_CPUID_AMD_ADVPOWER_EDX_MC RT_BIT(6) +/** Bit 7 - HWPSTATE - Hardware P-State Control. */ +#define X86_CPUID_AMD_ADVPOWER_EDX_HWPSTATE RT_BIT(7) +/** Bit 8 - TSCINVAR - TSC Invariant. */ +#define X86_CPUID_AMD_ADVPOWER_EDX_TSCINVAR RT_BIT(8) +/** Bit 9 - CPB - TSC Invariant. */ +#define X86_CPUID_AMD_ADVPOWER_EDX_CPB RT_BIT(9) +/** Bit 10 - EffFreqRO - MPERF/APERF. */ +#define X86_CPUID_AMD_ADVPOWER_EDX_EFRO RT_BIT(10) +/** Bit 11 - PFI - Processor feedback interface (see EAX). */ +#define X86_CPUID_AMD_ADVPOWER_EDX_PFI RT_BIT(11) +/** Bit 12 - PA - Processor accumulator (MSR c001_007a). */ +#define X86_CPUID_AMD_ADVPOWER_EDX_PA RT_BIT(12) +/** @} */ + + +/** @name CR0 + * @{ */ +/** Bit 0 - PE - Protection Enabled */ +#define X86_CR0_PE RT_BIT(0) +#define X86_CR0_PROTECTION_ENABLE RT_BIT(0) +/** Bit 1 - MP - Monitor Coprocessor */ +#define X86_CR0_MP RT_BIT(1) +#define X86_CR0_MONITOR_COPROCESSOR RT_BIT(1) +/** Bit 2 - EM - Emulation. */ +#define X86_CR0_EM RT_BIT(2) +#define X86_CR0_EMULATE_FPU RT_BIT(2) +/** Bit 3 - TS - Task Switch. */ +#define X86_CR0_TS RT_BIT(3) +#define X86_CR0_TASK_SWITCH RT_BIT(3) +/** Bit 4 - ET - Extension flag. ('hardcoded' to 1) */ +#define X86_CR0_ET RT_BIT(4) +#define X86_CR0_EXTENSION_TYPE RT_BIT(4) +/** Bit 5 - NE - Numeric error. */ +#define X86_CR0_NE RT_BIT(5) +#define X86_CR0_NUMERIC_ERROR RT_BIT(5) +/** Bit 16 - WP - Write Protect. */ +#define X86_CR0_WP RT_BIT(16) +#define X86_CR0_WRITE_PROTECT RT_BIT(16) +/** Bit 18 - AM - Alignment Mask. */ +#define X86_CR0_AM RT_BIT(18) +#define X86_CR0_ALIGMENT_MASK RT_BIT(18) +/** Bit 29 - NW - Not Write-though. */ +#define X86_CR0_NW RT_BIT(29) +#define X86_CR0_NOT_WRITE_THROUGH RT_BIT(29) +/** Bit 30 - WP - Cache Disable. */ +#define X86_CR0_CD RT_BIT(30) +#define X86_CR0_CACHE_DISABLE RT_BIT(30) +/** Bit 31 - PG - Paging. */ +#define X86_CR0_PG RT_BIT(31) +#define X86_CR0_PAGING RT_BIT(31) +/** @} */ + + +/** @name CR3 + * @{ */ +/** Bit 3 - PWT - Page-level Writes Transparent. */ +#define X86_CR3_PWT RT_BIT(3) +/** Bit 4 - PCD - Page-level Cache Disable. */ +#define X86_CR3_PCD RT_BIT(4) +/** Bits 12-31 - - Page directory page number. */ +#define X86_CR3_PAGE_MASK (0xfffff000) +/** Bits 5-31 - - PAE Page directory page number. */ +#define X86_CR3_PAE_PAGE_MASK (0xffffffe0) +/** Bits 12-51 - - AMD64 Page directory page number. */ +#define X86_CR3_AMD64_PAGE_MASK UINT64_C(0x000ffffffffff000) +/** @} */ + + +/** @name CR4 + * @{ */ +/** Bit 0 - VME - Virtual-8086 Mode Extensions. */ +#define X86_CR4_VME RT_BIT(0) +/** Bit 1 - PVI - Protected-Mode Virtual Interrupts. */ +#define X86_CR4_PVI RT_BIT(1) +/** Bit 2 - TSD - Time Stamp Disable. */ +#define X86_CR4_TSD RT_BIT(2) +/** Bit 3 - DE - Debugging Extensions. */ +#define X86_CR4_DE RT_BIT(3) +/** Bit 4 - PSE - Page Size Extension. */ +#define X86_CR4_PSE RT_BIT(4) +/** Bit 5 - PAE - Physical Address Extension. */ +#define X86_CR4_PAE RT_BIT(5) +/** Bit 6 - MCE - Machine-Check Enable. */ +#define X86_CR4_MCE RT_BIT(6) +/** Bit 7 - PGE - Page Global Enable. */ +#define X86_CR4_PGE RT_BIT(7) +/** Bit 8 - PCE - Performance-Monitoring Counter Enable. */ +#define X86_CR4_PCE RT_BIT(8) +/** Bit 9 - OSFXSR - Operating System Support for FXSAVE and FXRSTORE instructions. */ +#define X86_CR4_OSFXSR RT_BIT(9) +/** Bit 10 - OSXMMEEXCPT - Operating System Support for Unmasked SIMD Floating-Point Exceptions. */ +#define X86_CR4_OSXMMEEXCPT RT_BIT(10) +/** Bit 13 - VMXE - VMX mode is enabled. */ +#define X86_CR4_VMXE RT_BIT(13) +/** Bit 14 - SMXE - Safer Mode Extensions Enabled. */ +#define X86_CR4_SMXE RT_BIT(14) +/** Bit 17 - PCIDE - Process-Context Identifiers Enabled. */ +#define X86_CR4_PCIDE RT_BIT(17) +/** Bit 18 - OSXSAVE - Operating System Support for XSAVE and processor + * extended states. */ +#define X86_CR4_OSXSAVE RT_BIT(18) +/** Bit 20 - SMEP - Supervisor-mode Execution Prevention enabled. */ +#define X86_CR4_SMEP RT_BIT(20) +/** Bit 21 - SMAP - Supervisor-mode Access Prevention enabled. */ +#define X86_CR4_SMAP RT_BIT(21) +/** Bit 22 - PKE - Protection Key Enable. */ +#define X86_CR4_PKE RT_BIT(22) +/** @} */ + + +/** @name DR6 + * @{ */ +/** Bit 0 - B0 - Breakpoint 0 condition detected. */ +#define X86_DR6_B0 RT_BIT(0) +/** Bit 1 - B1 - Breakpoint 1 condition detected. */ +#define X86_DR6_B1 RT_BIT(1) +/** Bit 2 - B2 - Breakpoint 2 condition detected. */ +#define X86_DR6_B2 RT_BIT(2) +/** Bit 3 - B3 - Breakpoint 3 condition detected. */ +#define X86_DR6_B3 RT_BIT(3) +/** Mask of all the Bx bits. */ +#define X86_DR6_B_MASK UINT64_C(0x0000000f) +/** Bit 13 - BD - Debug register access detected. Corresponds to the X86_DR7_GD bit. */ +#define X86_DR6_BD RT_BIT(13) +/** Bit 14 - BS - Single step */ +#define X86_DR6_BS RT_BIT(14) +/** Bit 15 - BT - Task switch. (TSS T bit.) */ +#define X86_DR6_BT RT_BIT(15) +/** Value of DR6 after powerup/reset. */ +#define X86_DR6_INIT_VAL UINT64_C(0xFFFF0FF0) +/** Bits which must be 1s in DR6. */ +#define X86_DR6_RA1_MASK UINT64_C(0xffff0ff0) +/** Bits which must be 0s in DR6. */ +#define X86_DR6_RAZ_MASK RT_BIT_64(12) +/** Bits which must be 0s on writes to DR6. */ +#define X86_DR6_MBZ_MASK UINT64_C(0xffffffff00000000) +/** @} */ + +/** Get the DR6.Bx bit for a the given breakpoint. */ +#define X86_DR6_B(iBp) RT_BIT_64(iBp) + + +/** @name DR7 + * @{ */ +/** Bit 0 - L0 - Local breakpoint enable. Cleared on task switch. */ +#define X86_DR7_L0 RT_BIT(0) +/** Bit 1 - G0 - Global breakpoint enable. Not cleared on task switch. */ +#define X86_DR7_G0 RT_BIT(1) +/** Bit 2 - L1 - Local breakpoint enable. Cleared on task switch. */ +#define X86_DR7_L1 RT_BIT(2) +/** Bit 3 - G1 - Global breakpoint enable. Not cleared on task switch. */ +#define X86_DR7_G1 RT_BIT(3) +/** Bit 4 - L2 - Local breakpoint enable. Cleared on task switch. */ +#define X86_DR7_L2 RT_BIT(4) +/** Bit 5 - G2 - Global breakpoint enable. Not cleared on task switch. */ +#define X86_DR7_G2 RT_BIT(5) +/** Bit 6 - L3 - Local breakpoint enable. Cleared on task switch. */ +#define X86_DR7_L3 RT_BIT(6) +/** Bit 7 - G3 - Global breakpoint enable. Not cleared on task switch. */ +#define X86_DR7_G3 RT_BIT(7) +/** Bit 8 - LE - Local breakpoint exact. (Not supported (read ignored) by P6 and later.) */ +#define X86_DR7_LE RT_BIT(8) +/** Bit 9 - GE - Local breakpoint exact. (Not supported (read ignored) by P6 and later.) */ +#define X86_DR7_GE RT_BIT(9) + +/** L0, L1, L2, and L3. */ +#define X86_DR7_LE_ALL UINT64_C(0x0000000000000055) +/** L0, L1, L2, and L3. */ +#define X86_DR7_GE_ALL UINT64_C(0x00000000000000aa) + +/** Bit 12 - IR (ICE) - Interrupt redirection on Pentium. When set, the in + * Circuit Emulator (ICE) will break emulation on breakpoints and stuff. + * May cause CPU hang if enabled without ICE attached when the ICEBP/INT1 + * instruction is executed. + * @see http://www.rcollins.org/secrets/DR7.html */ +#define X86_DR7_ICE_IR RT_BIT(12) +/** Bit 13 - GD - General detect enable. Enables emulators to get exceptions when + * any DR register is accessed. */ +#define X86_DR7_GD RT_BIT(13) +/** Bit 14 - TR1 (ICE) - Code discontinuity trace for use with ICE on + * Pentium. */ +#define X86_DR7_ICE_TR1 RT_BIT(14) +/** Bit 15 - TR2 (ICE) - Controls unknown ICE trace feature of the pentium. */ +#define X86_DR7_ICE_TR2 RT_BIT(15) +/** Bit 16 & 17 - R/W0 - Read write field 0. Values X86_DR7_RW_*. */ +#define X86_DR7_RW0_MASK (3 << 16) +/** Bit 18 & 19 - LEN0 - Length field 0. Values X86_DR7_LEN_*. */ +#define X86_DR7_LEN0_MASK (3 << 18) +/** Bit 20 & 21 - R/W1 - Read write field 0. Values X86_DR7_RW_*. */ +#define X86_DR7_RW1_MASK (3 << 20) +/** Bit 22 & 23 - LEN1 - Length field 0. Values X86_DR7_LEN_*. */ +#define X86_DR7_LEN1_MASK (3 << 22) +/** Bit 24 & 25 - R/W2 - Read write field 0. Values X86_DR7_RW_*. */ +#define X86_DR7_RW2_MASK (3 << 24) +/** Bit 26 & 27 - LEN2 - Length field 0. Values X86_DR7_LEN_*. */ +#define X86_DR7_LEN2_MASK (3 << 26) +/** Bit 28 & 29 - R/W3 - Read write field 0. Values X86_DR7_RW_*. */ +#define X86_DR7_RW3_MASK (3 << 28) +/** Bit 30 & 31 - LEN3 - Length field 0. Values X86_DR7_LEN_*. */ +#define X86_DR7_LEN3_MASK (3 << 30) + +/** Bits which reads as 1s. */ +#define X86_DR7_RA1_MASK (RT_BIT(10)) +/** Bits which reads as zeros. These are related to ICE (bits 12, 14, 15). */ +#define X86_DR7_RAZ_MASK UINT64_C(0x0000d800) +/** Bits which must be 0s when writing to DR7. */ +#define X86_DR7_MBZ_MASK UINT64_C(0xffffffff00000000) + +/** Calcs the L bit of Nth breakpoint. + * @param iBp The breakpoint number [0..3]. + */ +#define X86_DR7_L(iBp) ( UINT32_C(1) << (iBp * 2) ) + +/** Calcs the G bit of Nth breakpoint. + * @param iBp The breakpoint number [0..3]. + */ +#define X86_DR7_G(iBp) ( UINT32_C(1) << (iBp * 2 + 1) ) + +/** Calcs the L and G bits of Nth breakpoint. + * @param iBp The breakpoint number [0..3]. + */ +#define X86_DR7_L_G(iBp) ( UINT32_C(3) << (iBp * 2) ) + +/** @name Read/Write values. + * @{ */ +/** Break on instruction fetch only. */ +#define X86_DR7_RW_EO 0U +/** Break on write only. */ +#define X86_DR7_RW_WO 1U +/** Break on I/O read/write. This is only defined if CR4.DE is set. */ +#define X86_DR7_RW_IO 2U +/** Break on read or write (but not instruction fetches). */ +#define X86_DR7_RW_RW 3U +/** @} */ + +/** Shifts a X86_DR7_RW_* value to its right place. + * @param iBp The breakpoint number [0..3]. + * @param fRw One of the X86_DR7_RW_* value. + */ +#define X86_DR7_RW(iBp, fRw) ( (fRw) << ((iBp) * 4 + 16) ) + +/** Fetch the R/Wx bits for a given breakpoint (so it can be compared with + * one of the X86_DR7_RW_XXX constants). + * + * @returns X86_DR7_RW_XXX + * @param uDR7 DR7 value + * @param iBp The breakpoint number [0..3]. + */ +#define X86_DR7_GET_RW(uDR7, iBp) ( ( (uDR7) >> ((iBp) * 4 + 16) ) & UINT32_C(3) ) + +/** R/W0, R/W1, R/W2, and R/W3. */ +#define X86_DR7_RW_ALL_MASKS UINT32_C(0x33330000) + +#ifndef VBOX_FOR_DTRACE_LIB +/** Checks if there are any I/O breakpoint types configured in the RW + * registers. Does NOT check if these are enabled, sorry. */ +# define X86_DR7_ANY_RW_IO(uDR7) \ + ( ( UINT32_C(0x22220000) & (uDR7) ) /* any candidates? */ \ + && ( ( (UINT32_C(0x22220000) & (uDR7) ) >> 1 ) & ~(uDR7) ) ) +AssertCompile(X86_DR7_ANY_RW_IO(UINT32_C(0x33330000)) == 0); +AssertCompile(X86_DR7_ANY_RW_IO(UINT32_C(0x22220000)) == 1); +AssertCompile(X86_DR7_ANY_RW_IO(UINT32_C(0x32320000)) == 1); +AssertCompile(X86_DR7_ANY_RW_IO(UINT32_C(0x23230000)) == 1); +AssertCompile(X86_DR7_ANY_RW_IO(UINT32_C(0x00000000)) == 0); +AssertCompile(X86_DR7_ANY_RW_IO(UINT32_C(0x00010000)) == 0); +AssertCompile(X86_DR7_ANY_RW_IO(UINT32_C(0x00020000)) == 1); +AssertCompile(X86_DR7_ANY_RW_IO(UINT32_C(0x00030000)) == 0); +AssertCompile(X86_DR7_ANY_RW_IO(UINT32_C(0x00040000)) == 0); +#endif /* !VBOX_FOR_DTRACE_LIB */ + +/** @name Length values. + * @{ */ +#define X86_DR7_LEN_BYTE 0U +#define X86_DR7_LEN_WORD 1U +#define X86_DR7_LEN_QWORD 2U /**< AMD64 long mode only. */ +#define X86_DR7_LEN_DWORD 3U +/** @} */ + +/** Shifts a X86_DR7_LEN_* value to its right place. + * @param iBp The breakpoint number [0..3]. + * @param cb One of the X86_DR7_LEN_* values. + */ +#define X86_DR7_LEN(iBp, cb) ( (cb) << ((iBp) * 4 + 18) ) + +/** Fetch the breakpoint length bits from the DR7 value. + * @param uDR7 DR7 value + * @param iBp The breakpoint number [0..3]. + */ +#define X86_DR7_GET_LEN(uDR7, iBp) ( ( (uDR7) >> ((iBp) * 4 + 18) ) & UINT32_C(0x3) ) + +/** Mask used to check if any breakpoints are enabled. */ +#define X86_DR7_ENABLED_MASK UINT32_C(0x000000ff) + +/** LEN0, LEN1, LEN2, and LEN3. */ +#define X86_DR7_LEN_ALL_MASKS UINT32_C(0xcccc0000) +/** R/W0, R/W1, R/W2, R/W3,LEN0, LEN1, LEN2, and LEN3. */ +#define X86_DR7_RW_LEN_ALL_MASKS UINT32_C(0xffff0000) + +/** Value of DR7 after powerup/reset. */ +#define X86_DR7_INIT_VAL 0x400 +/** @} */ + + +/** @name Machine Specific Registers + * @{ + */ +/** Machine check address register (P5). */ +#define MSR_P5_MC_ADDR UINT32_C(0x00000000) +/** Machine check type register (P5). */ +#define MSR_P5_MC_TYPE UINT32_C(0x00000001) +/** Time Stamp Counter. */ +#define MSR_IA32_TSC 0x10 +#define MSR_IA32_CESR UINT32_C(0x00000011) +#define MSR_IA32_CTR0 UINT32_C(0x00000012) +#define MSR_IA32_CTR1 UINT32_C(0x00000013) + +#define MSR_IA32_PLATFORM_ID 0x17 + +#ifndef MSR_IA32_APICBASE /* qemu cpu.h kludge */ +# define MSR_IA32_APICBASE 0x1b +/** Local APIC enabled. */ +# define MSR_IA32_APICBASE_EN RT_BIT_64(11) +/** X2APIC enabled (requires the EN bit to be set). */ +# define MSR_IA32_APICBASE_EXTD RT_BIT_64(10) +/** The processor is the boot strap processor (BSP). */ +# define MSR_IA32_APICBASE_BSP RT_BIT_64(8) +/** Minimum base address mask, consult CPUID leaf 0x80000008 for the actual + * width. */ +# define MSR_IA32_APICBASE_BASE_MIN UINT64_C(0x0000000ffffff000) +#endif + +/** Undocumented intel MSR for reporting thread and core counts. + * Judging from the XNU sources, it seems to be introduced in Nehalem. The + * first 16 bits is the thread count. The next 16 bits the core count, except + * on Westmere where it seems it's only the next 4 bits for some reason. */ +#define MSR_CORE_THREAD_COUNT 0x35 + +/** CPU Feature control. */ +#define MSR_IA32_FEATURE_CONTROL 0x3A +#define MSR_IA32_FEATURE_CONTROL_LOCK RT_BIT(0) +#define MSR_IA32_FEATURE_CONTROL_SMX_VMXON RT_BIT(1) +#define MSR_IA32_FEATURE_CONTROL_VMXON RT_BIT(2) + +/** Per-processor TSC adjust MSR. */ +#define MSR_IA32_TSC_ADJUST 0x3B + +/** BIOS update trigger (microcode update). */ +#define MSR_IA32_BIOS_UPDT_TRIG 0x79 + +/** BIOS update signature (microcode). */ +#define MSR_IA32_BIOS_SIGN_ID 0x8B + +/** General performance counter no. 0. */ +#define MSR_IA32_PMC0 0xC1 +/** General performance counter no. 1. */ +#define MSR_IA32_PMC1 0xC2 +/** General performance counter no. 2. */ +#define MSR_IA32_PMC2 0xC3 +/** General performance counter no. 3. */ +#define MSR_IA32_PMC3 0xC4 + +/** Nehalem power control. */ +#define MSR_IA32_PLATFORM_INFO 0xCE + +/** Get FSB clock status (Intel-specific). */ +#define MSR_IA32_FSB_CLOCK_STS 0xCD + +/** C-State configuration control. Intel specific: Nehalem, Sandy Bridge. */ +#define MSR_PKG_CST_CONFIG_CONTROL UINT32_C(0x000000e2) + +/** C0 Maximum Frequency Clock Count */ +#define MSR_IA32_MPERF 0xE7 +/** C0 Actual Frequency Clock Count */ +#define MSR_IA32_APERF 0xE8 + +/** MTRR Capabilities. */ +#define MSR_IA32_MTRR_CAP 0xFE + +/** Cache control/info. */ +#define MSR_BBL_CR_CTL3 UINT32_C(0x11e) + +#ifndef MSR_IA32_SYSENTER_CS /* qemu cpu.h kludge */ +/** SYSENTER_CS - the R0 CS, indirectly giving R0 SS, R3 CS and R3 DS. + * R0 SS == CS + 8 + * R3 CS == CS + 16 + * R3 SS == CS + 24 + */ +#define MSR_IA32_SYSENTER_CS 0x174 +/** SYSENTER_ESP - the R0 ESP. */ +#define MSR_IA32_SYSENTER_ESP 0x175 +/** SYSENTER_EIP - the R0 EIP. */ +#define MSR_IA32_SYSENTER_EIP 0x176 +#endif + +/** Machine Check Global Capabilities Register. */ +#define MSR_IA32_MCG_CAP 0x179 +/** Machine Check Global Status Register. */ +#define MSR_IA32_MCG_STATUS 0x17A +/** Machine Check Global Control Register. */ +#define MSR_IA32_MCG_CTRL 0x17B + +/** Page Attribute Table. */ +#define MSR_IA32_CR_PAT 0x277 + +/** Performance counter MSRs. (Intel only) */ +#define MSR_IA32_PERFEVTSEL0 0x186 +#define MSR_IA32_PERFEVTSEL1 0x187 +/** Flexible ratio, seems to be undocumented, used by XNU (tsc.c). + * The 16th bit whether flex ratio is being used, in which case bits 15:8 + * holds a ratio that Apple takes for TSC granularity. + * + * @note This MSR conflicts the P4 MSR_MCG_R12 register. */ +#define MSR_FLEX_RATIO 0x194 +/** Performance state value and starting with Intel core more. + * Apple uses the >=core features to determine TSC granularity on older CPUs. */ +#define MSR_IA32_PERF_STATUS 0x198 +#define MSR_IA32_PERF_CTL 0x199 +#define MSR_IA32_THERM_STATUS 0x19c + +/** Enable misc. processor features (R/W). */ +#define MSR_IA32_MISC_ENABLE 0x1A0 +/** Enable fast-strings feature (for REP MOVS and REP STORS). */ +#define MSR_IA32_MISC_ENABLE_FAST_STRINGS RT_BIT_64(0) +/** Automatic Thermal Control Circuit Enable (R/W). */ +#define MSR_IA32_MISC_ENABLE_TCC RT_BIT_64(3) +/** Performance Monitoring Available (R). */ +#define MSR_IA32_MISC_ENABLE_PERF_MON RT_BIT_64(7) +/** Branch Trace Storage Unavailable (R/O). */ +#define MSR_IA32_MISC_ENABLE_BTS_UNAVAIL RT_BIT_64(11) +/** Precise Event Based Sampling (PEBS) Unavailable (R/O). */ +#define MSR_IA32_MISC_ENABLE_PEBS_UNAVAIL RT_BIT_64(12) +/** Enhanced Intel SpeedStep Technology Enable (R/W). */ +#define MSR_IA32_MISC_ENABLE_SST_ENABLE RT_BIT_64(16) +/** If MONITOR/MWAIT is supported (R/W). */ +#define MSR_IA32_MISC_ENABLE_MONITOR RT_BIT_64(18) +/** Limit CPUID Maxval to 3 leafs (R/W). */ +#define MSR_IA32_MISC_ENABLE_LIMIT_CPUID RT_BIT_64(22) +/** When set to 1, xTPR messages are disabled (R/W). */ +#define MSR_IA32_MISC_ENABLE_XTPR_MSG_DISABLE RT_BIT_64(23) +/** When set to 1, the Execute Disable Bit feature (XD Bit) is disabled (R/W). */ +#define MSR_IA32_MISC_ENABLE_XD_DISABLE RT_BIT_64(34) + +/** Trace/Profile Resource Control (R/W) */ +#define MSR_IA32_DEBUGCTL UINT32_C(0x000001d9) +/** The number (0..3 or 0..15) of the last branch record register on P4 and + * related Xeons. */ +#define MSR_P4_LASTBRANCH_TOS UINT32_C(0x000001da) +/** @name Last branch registers for P4 and Xeon, models 0 thru 2. + * @{ */ +#define MSR_P4_LASTBRANCH_0 UINT32_C(0x000001db) +#define MSR_P4_LASTBRANCH_1 UINT32_C(0x000001dc) +#define MSR_P4_LASTBRANCH_2 UINT32_C(0x000001dd) +#define MSR_P4_LASTBRANCH_3 UINT32_C(0x000001de) +/** @} */ + + +#define IA32_MTRR_PHYSBASE0 0x200 +#define IA32_MTRR_PHYSMASK0 0x201 +#define IA32_MTRR_PHYSBASE1 0x202 +#define IA32_MTRR_PHYSMASK1 0x203 +#define IA32_MTRR_PHYSBASE2 0x204 +#define IA32_MTRR_PHYSMASK2 0x205 +#define IA32_MTRR_PHYSBASE3 0x206 +#define IA32_MTRR_PHYSMASK3 0x207 +#define IA32_MTRR_PHYSBASE4 0x208 +#define IA32_MTRR_PHYSMASK4 0x209 +#define IA32_MTRR_PHYSBASE5 0x20a +#define IA32_MTRR_PHYSMASK5 0x20b +#define IA32_MTRR_PHYSBASE6 0x20c +#define IA32_MTRR_PHYSMASK6 0x20d +#define IA32_MTRR_PHYSBASE7 0x20e +#define IA32_MTRR_PHYSMASK7 0x20f +#define IA32_MTRR_PHYSBASE8 0x210 +#define IA32_MTRR_PHYSMASK8 0x211 +#define IA32_MTRR_PHYSBASE9 0x212 +#define IA32_MTRR_PHYSMASK9 0x213 + +/** Fixed range MTRRs. + * @{ */ +#define IA32_MTRR_FIX64K_00000 0x250 +#define IA32_MTRR_FIX16K_80000 0x258 +#define IA32_MTRR_FIX16K_A0000 0x259 +#define IA32_MTRR_FIX4K_C0000 0x268 +#define IA32_MTRR_FIX4K_C8000 0x269 +#define IA32_MTRR_FIX4K_D0000 0x26a +#define IA32_MTRR_FIX4K_D8000 0x26b +#define IA32_MTRR_FIX4K_E0000 0x26c +#define IA32_MTRR_FIX4K_E8000 0x26d +#define IA32_MTRR_FIX4K_F0000 0x26e +#define IA32_MTRR_FIX4K_F8000 0x26f +/** @} */ + +/** MTRR Default Range. */ +#define MSR_IA32_MTRR_DEF_TYPE 0x2FF + +#define MSR_IA32_MC0_CTL 0x400 +#define MSR_IA32_MC0_STATUS 0x401 + +/** Basic VMX information. */ +#define MSR_IA32_VMX_BASIC_INFO 0x480 +/** Allowed settings for pin-based VM execution controls */ +#define MSR_IA32_VMX_PINBASED_CTLS 0x481 +/** Allowed settings for proc-based VM execution controls */ +#define MSR_IA32_VMX_PROCBASED_CTLS 0x482 +/** Allowed settings for the VMX exit controls. */ +#define MSR_IA32_VMX_EXIT_CTLS 0x483 +/** Allowed settings for the VMX entry controls. */ +#define MSR_IA32_VMX_ENTRY_CTLS 0x484 +/** Misc VMX info. */ +#define MSR_IA32_VMX_MISC 0x485 +/** Fixed cleared bits in CR0. */ +#define MSR_IA32_VMX_CR0_FIXED0 0x486 +/** Fixed set bits in CR0. */ +#define MSR_IA32_VMX_CR0_FIXED1 0x487 +/** Fixed cleared bits in CR4. */ +#define MSR_IA32_VMX_CR4_FIXED0 0x488 +/** Fixed set bits in CR4. */ +#define MSR_IA32_VMX_CR4_FIXED1 0x489 +/** Information for enumerating fields in the VMCS. */ +#define MSR_IA32_VMX_VMCS_ENUM 0x48A +/** Allowed settings for the VM-functions controls. */ +#define MSR_IA32_VMX_VMFUNC 0x491 +/** Allowed settings for secondary proc-based VM execution controls */ +#define MSR_IA32_VMX_PROCBASED_CTLS2 0x48B +/** EPT capabilities. */ +#define MSR_IA32_VMX_EPT_VPID_CAP 0x48C +/** DS Save Area (R/W). */ +#define MSR_IA32_DS_AREA 0x600 +/** Running Average Power Limit (RAPL) power units. */ +#define MSR_RAPL_POWER_UNIT 0x606 +/** X2APIC MSR ranges. */ +#define MSR_IA32_X2APIC_START 0x800 +#define MSR_IA32_X2APIC_TPR 0x808 +#define MSR_IA32_X2APIC_END 0xBFF + +/** K6 EFER - Extended Feature Enable Register. */ +#define MSR_K6_EFER UINT32_C(0xc0000080) +/** @todo document EFER */ +/** Bit 0 - SCE - System call extensions (SYSCALL / SYSRET). (R/W) */ +#define MSR_K6_EFER_SCE RT_BIT(0) +/** Bit 8 - LME - Long mode enabled. (R/W) */ +#define MSR_K6_EFER_LME RT_BIT(8) +/** Bit 10 - LMA - Long mode active. (R) */ +#define MSR_K6_EFER_LMA RT_BIT(10) +/** Bit 11 - NXE - No-Execute Page Protection Enabled. (R/W) */ +#define MSR_K6_EFER_NXE RT_BIT(11) +/** Bit 12 - SVME - Secure VM Extension Enabled. (R/W) */ +#define MSR_K6_EFER_SVME RT_BIT(12) +/** Bit 13 - LMSLE - Long Mode Segment Limit Enable. (R/W?) */ +#define MSR_K6_EFER_LMSLE RT_BIT(13) +/** Bit 14 - FFXSR - Fast FXSAVE / FXRSTOR (skip XMM*). (R/W) */ +#define MSR_K6_EFER_FFXSR RT_BIT(14) +/** Bit 15 - TCE - Translation Cache Extension. (R/W) */ +#define MSR_K6_EFER_TCE RT_BIT(15) +/** K6 STAR - SYSCALL/RET targets. */ +#define MSR_K6_STAR UINT32_C(0xc0000081) +/** Shift value for getting the SYSRET CS and SS value. */ +#define MSR_K6_STAR_SYSRET_CS_SS_SHIFT 48 +/** Shift value for getting the SYSCALL CS and SS value. */ +#define MSR_K6_STAR_SYSCALL_CS_SS_SHIFT 32 +/** Selector mask for use after shifting. */ +#define MSR_K6_STAR_SEL_MASK UINT32_C(0xffff) +/** The mask which give the SYSCALL EIP. */ +#define MSR_K6_STAR_SYSCALL_EIP_MASK UINT32_C(0xffffffff) +/** K6 WHCR - Write Handling Control Register. */ +#define MSR_K6_WHCR UINT32_C(0xc0000082) +/** K6 UWCCR - UC/WC Cacheability Control Register. */ +#define MSR_K6_UWCCR UINT32_C(0xc0000085) +/** K6 PSOR - Processor State Observability Register. */ +#define MSR_K6_PSOR UINT32_C(0xc0000087) +/** K6 PFIR - Page Flush/Invalidate Register. */ +#define MSR_K6_PFIR UINT32_C(0xc0000088) + +/** Performance counter MSRs. (AMD only) */ +#define MSR_K7_EVNTSEL0 UINT32_C(0xc0010000) +#define MSR_K7_EVNTSEL1 UINT32_C(0xc0010001) +#define MSR_K7_EVNTSEL2 UINT32_C(0xc0010002) +#define MSR_K7_EVNTSEL3 UINT32_C(0xc0010003) +#define MSR_K7_PERFCTR0 UINT32_C(0xc0010004) +#define MSR_K7_PERFCTR1 UINT32_C(0xc0010005) +#define MSR_K7_PERFCTR2 UINT32_C(0xc0010006) +#define MSR_K7_PERFCTR3 UINT32_C(0xc0010007) + +/** K8 LSTAR - Long mode SYSCALL target (RIP). */ +#define MSR_K8_LSTAR UINT32_C(0xc0000082) +/** K8 CSTAR - Compatibility mode SYSCALL target (RIP). */ +#define MSR_K8_CSTAR UINT32_C(0xc0000083) +/** K8 SF_MASK - SYSCALL flag mask. (aka SFMASK) */ +#define MSR_K8_SF_MASK UINT32_C(0xc0000084) +/** K8 FS.base - The 64-bit base FS register. */ +#define MSR_K8_FS_BASE UINT32_C(0xc0000100) +/** K8 GS.base - The 64-bit base GS register. */ +#define MSR_K8_GS_BASE UINT32_C(0xc0000101) +/** K8 KernelGSbase - Used with SWAPGS. */ +#define MSR_K8_KERNEL_GS_BASE UINT32_C(0xc0000102) +/** K8 TSC_AUX - Used with RDTSCP. */ +#define MSR_K8_TSC_AUX UINT32_C(0xc0000103) +#define MSR_K8_SYSCFG UINT32_C(0xc0010010) +#define MSR_K8_HWCR UINT32_C(0xc0010015) +#define MSR_K8_IORRBASE0 UINT32_C(0xc0010016) +#define MSR_K8_IORRMASK0 UINT32_C(0xc0010017) +#define MSR_K8_IORRBASE1 UINT32_C(0xc0010018) +#define MSR_K8_IORRMASK1 UINT32_C(0xc0010019) +#define MSR_K8_TOP_MEM1 UINT32_C(0xc001001a) +#define MSR_K8_TOP_MEM2 UINT32_C(0xc001001d) +/** North bridge config? See BIOS & Kernel dev guides for + * details. */ +#define MSR_K8_NB_CFG UINT32_C(0xc001001f) + +/** Hypertransport interrupt pending register. + * "BIOS and Kernel Developer's Guide for AMD NPT Family 0Fh Processors" */ +#define MSR_K8_INT_PENDING UINT32_C(0xc0010055) +#define MSR_K8_VM_CR UINT32_C(0xc0010114) +#define MSR_K8_VM_CR_SVM_DISABLE RT_BIT(4) + +#define MSR_K8_IGNNE UINT32_C(0xc0010115) +#define MSR_K8_SMM_CTL UINT32_C(0xc0010116) +/** SVM - VM_HSAVE_PA - Physical address for saving and restoring + * host state during world switch. */ +#define MSR_K8_VM_HSAVE_PA UINT32_C(0xc0010117) + +/** @} */ + + +/** @name Page Table / Directory / Directory Pointers / L4. + * @{ + */ + +/** Page table/directory entry as an unsigned integer. */ +typedef uint32_t X86PGUINT; +/** Pointer to a page table/directory table entry as an unsigned integer. */ +typedef X86PGUINT *PX86PGUINT; +/** Pointer to an const page table/directory table entry as an unsigned integer. */ +typedef X86PGUINT const *PCX86PGUINT; + +/** Number of entries in a 32-bit PT/PD. */ +#define X86_PG_ENTRIES 1024 + + +/** PAE page table/page directory/pdpt/l4/l5 entry as an unsigned integer. */ +typedef uint64_t X86PGPAEUINT; +/** Pointer to a PAE page table/page directory/pdpt/l4/l5 entry as an unsigned integer. */ +typedef X86PGPAEUINT *PX86PGPAEUINT; +/** Pointer to an const PAE page table/page directory/pdpt/l4/l5 entry as an unsigned integer. */ +typedef X86PGPAEUINT const *PCX86PGPAEUINT; + +/** Number of entries in a PAE PT/PD. */ +#define X86_PG_PAE_ENTRIES 512 +/** Number of entries in a PAE PDPT. */ +#define X86_PG_PAE_PDPE_ENTRIES 4 + +/** Number of entries in an AMD64 PT/PD/PDPT/L4/L5. */ +#define X86_PG_AMD64_ENTRIES X86_PG_PAE_ENTRIES +/** Number of entries in an AMD64 PDPT. + * Just for complementing X86_PG_PAE_PDPE_ENTRIES, using X86_PG_AMD64_ENTRIES for this is fine too. */ +#define X86_PG_AMD64_PDPE_ENTRIES X86_PG_AMD64_ENTRIES + +/** The size of a 4KB page. */ +#define X86_PAGE_4K_SIZE _4K +/** The page shift of a 4KB page. */ +#define X86_PAGE_4K_SHIFT 12 +/** The 4KB page offset mask. */ +#define X86_PAGE_4K_OFFSET_MASK 0xfff +/** The 4KB page base mask for virtual addresses. */ +#define X86_PAGE_4K_BASE_MASK 0xfffffffffffff000ULL +/** The 4KB page base mask for virtual addresses - 32bit version. */ +#define X86_PAGE_4K_BASE_MASK_32 0xfffff000U + +/** The size of a 2MB page. */ +#define X86_PAGE_2M_SIZE _2M +/** The page shift of a 2MB page. */ +#define X86_PAGE_2M_SHIFT 21 +/** The 2MB page offset mask. */ +#define X86_PAGE_2M_OFFSET_MASK 0x001fffff +/** The 2MB page base mask for virtual addresses. */ +#define X86_PAGE_2M_BASE_MASK 0xffffffffffe00000ULL +/** The 2MB page base mask for virtual addresses - 32bit version. */ +#define X86_PAGE_2M_BASE_MASK_32 0xffe00000U + +/** The size of a 4MB page. */ +#define X86_PAGE_4M_SIZE _4M +/** The page shift of a 4MB page. */ +#define X86_PAGE_4M_SHIFT 22 +/** The 4MB page offset mask. */ +#define X86_PAGE_4M_OFFSET_MASK 0x003fffff +/** The 4MB page base mask for virtual addresses. */ +#define X86_PAGE_4M_BASE_MASK 0xffffffffffc00000ULL +/** The 4MB page base mask for virtual addresses - 32bit version. */ +#define X86_PAGE_4M_BASE_MASK_32 0xffc00000U + +/** + * Check if the given address is canonical. + */ +#define X86_IS_CANONICAL(a_u64Addr) ((uint64_t)(a_u64Addr) + UINT64_C(0x800000000000) < UINT64_C(0x1000000000000)) + + +/** @name Page Table Entry + * @{ + */ +/** Bit 0 - P - Present bit. */ +#define X86_PTE_BIT_P 0 +/** Bit 1 - R/W - Read (clear) / Write (set) bit. */ +#define X86_PTE_BIT_RW 1 +/** Bit 2 - U/S - User (set) / Supervisor (clear) bit. */ +#define X86_PTE_BIT_US 2 +/** Bit 3 - PWT - Page level write thru bit. */ +#define X86_PTE_BIT_PWT 3 +/** Bit 4 - PCD - Page level cache disable bit. */ +#define X86_PTE_BIT_PCD 4 +/** Bit 5 - A - Access bit. */ +#define X86_PTE_BIT_A 5 +/** Bit 6 - D - Dirty bit. */ +#define X86_PTE_BIT_D 6 +/** Bit 7 - PAT - Page Attribute Table index bit. Reserved and 0 if not supported. */ +#define X86_PTE_BIT_PAT 7 +/** Bit 8 - G - Global flag. */ +#define X86_PTE_BIT_G 8 + +/** Bit 0 - P - Present bit mask. */ +#define X86_PTE_P RT_BIT(0) +/** Bit 1 - R/W - Read (clear) / Write (set) bit mask. */ +#define X86_PTE_RW RT_BIT(1) +/** Bit 2 - U/S - User (set) / Supervisor (clear) bit mask. */ +#define X86_PTE_US RT_BIT(2) +/** Bit 3 - PWT - Page level write thru bit mask. */ +#define X86_PTE_PWT RT_BIT(3) +/** Bit 4 - PCD - Page level cache disable bit mask. */ +#define X86_PTE_PCD RT_BIT(4) +/** Bit 5 - A - Access bit mask. */ +#define X86_PTE_A RT_BIT(5) +/** Bit 6 - D - Dirty bit mask. */ +#define X86_PTE_D RT_BIT(6) +/** Bit 7 - PAT - Page Attribute Table index bit mask. Reserved and 0 if not supported. */ +#define X86_PTE_PAT RT_BIT(7) +/** Bit 8 - G - Global bit mask. */ +#define X86_PTE_G RT_BIT(8) + +/** Bits 9-11 - - Available for use to system software. */ +#define X86_PTE_AVL_MASK (RT_BIT(9) | RT_BIT(10) | RT_BIT(11)) +/** Bits 12-31 - - Physical Page number of the next level. */ +#define X86_PTE_PG_MASK ( 0xfffff000 ) + +/** Bits 12-51 - - PAE - Physical Page number of the next level. */ +#define X86_PTE_PAE_PG_MASK UINT64_C(0x000ffffffffff000) +/** Bits 63 - NX - PAE/LM - No execution flag. */ +#define X86_PTE_PAE_NX RT_BIT_64(63) +/** Bits 62-52 - - PAE - MBZ bits when NX is active. */ +#define X86_PTE_PAE_MBZ_MASK_NX UINT64_C(0x7ff0000000000000) +/** Bits 63-52 - - PAE - MBZ bits when no NX. */ +#define X86_PTE_PAE_MBZ_MASK_NO_NX UINT64_C(0xfff0000000000000) +/** No bits - - LM - MBZ bits when NX is active. */ +#define X86_PTE_LM_MBZ_MASK_NX UINT64_C(0x0000000000000000) +/** Bits 63 - - LM - MBZ bits when no NX. */ +#define X86_PTE_LM_MBZ_MASK_NO_NX UINT64_C(0x8000000000000000) + +/** + * Page table entry. + */ +typedef struct X86PTEBITS +{ + /** Flags whether(=1) or not the page is present. */ + unsigned u1Present : 1; + /** Read(=0) / Write(=1) flag. */ + unsigned u1Write : 1; + /** User(=1) / Supervisor (=0) flag. */ + unsigned u1User : 1; + /** Write Thru flag. If PAT enabled, bit 0 of the index. */ + unsigned u1WriteThru : 1; + /** Cache disabled flag. If PAT enabled, bit 1 of the index. */ + unsigned u1CacheDisable : 1; + /** Accessed flag. + * Indicates that the page have been read or written to. */ + unsigned u1Accessed : 1; + /** Dirty flag. + * Indicates that the page has been written to. */ + unsigned u1Dirty : 1; + /** Reserved / If PAT enabled, bit 2 of the index. */ + unsigned u1PAT : 1; + /** Global flag. (Ignored in all but final level.) */ + unsigned u1Global : 1; + /** Available for use to system software. */ + unsigned u3Available : 3; + /** Physical Page number of the next level. */ + unsigned u20PageNo : 20; +} X86PTEBITS; +/** Pointer to a page table entry. */ +typedef X86PTEBITS *PX86PTEBITS; +/** Pointer to a const page table entry. */ +typedef const X86PTEBITS *PCX86PTEBITS; + +/** + * Page table entry. + */ +typedef union X86PTE +{ + /** Unsigned integer view */ + X86PGUINT u; + /** Bit field view. */ + X86PTEBITS n; + /** 32-bit view. */ + uint32_t au32[1]; + /** 16-bit view. */ + uint16_t au16[2]; + /** 8-bit view. */ + uint8_t au8[4]; +} X86PTE; +/** Pointer to a page table entry. */ +typedef X86PTE *PX86PTE; +/** Pointer to a const page table entry. */ +typedef const X86PTE *PCX86PTE; + + +/** + * PAE page table entry. + */ +typedef struct X86PTEPAEBITS +{ + /** Flags whether(=1) or not the page is present. */ + uint32_t u1Present : 1; + /** Read(=0) / Write(=1) flag. */ + uint32_t u1Write : 1; + /** User(=1) / Supervisor(=0) flag. */ + uint32_t u1User : 1; + /** Write Thru flag. If PAT enabled, bit 0 of the index. */ + uint32_t u1WriteThru : 1; + /** Cache disabled flag. If PAT enabled, bit 1 of the index. */ + uint32_t u1CacheDisable : 1; + /** Accessed flag. + * Indicates that the page have been read or written to. */ + uint32_t u1Accessed : 1; + /** Dirty flag. + * Indicates that the page has been written to. */ + uint32_t u1Dirty : 1; + /** Reserved / If PAT enabled, bit 2 of the index. */ + uint32_t u1PAT : 1; + /** Global flag. (Ignored in all but final level.) */ + uint32_t u1Global : 1; + /** Available for use to system software. */ + uint32_t u3Available : 3; + /** Physical Page number of the next level - Low Part. Don't use this. */ + uint32_t u20PageNoLow : 20; + /** Physical Page number of the next level - High Part. Don't use this. */ + uint32_t u20PageNoHigh : 20; + /** MBZ bits */ + uint32_t u11Reserved : 11; + /** No Execute flag. */ + uint32_t u1NoExecute : 1; +} X86PTEPAEBITS; +/** Pointer to a page table entry. */ +typedef X86PTEPAEBITS *PX86PTEPAEBITS; +/** Pointer to a page table entry. */ +typedef const X86PTEPAEBITS *PCX86PTEPAEBITS; + +/** + * PAE Page table entry. + */ +typedef union X86PTEPAE +{ + /** Unsigned integer view */ + X86PGPAEUINT u; + /** Bit field view. */ + X86PTEPAEBITS n; + /** 32-bit view. */ + uint32_t au32[2]; + /** 16-bit view. */ + uint16_t au16[4]; + /** 8-bit view. */ + uint8_t au8[8]; +} X86PTEPAE; +/** Pointer to a PAE page table entry. */ +typedef X86PTEPAE *PX86PTEPAE; +/** Pointer to a const PAE page table entry. */ +typedef const X86PTEPAE *PCX86PTEPAE; +/** @} */ + +/** + * Page table. + */ +typedef struct X86PT +{ + /** PTE Array. */ + X86PTE a[X86_PG_ENTRIES]; +} X86PT; +/** Pointer to a page table. */ +typedef X86PT *PX86PT; +/** Pointer to a const page table. */ +typedef const X86PT *PCX86PT; + +/** The page shift to get the PT index. */ +#define X86_PT_SHIFT 12 +/** The PT index mask (apply to a shifted page address). */ +#define X86_PT_MASK 0x3ff + + +/** + * Page directory. + */ +typedef struct X86PTPAE +{ + /** PTE Array. */ + X86PTEPAE a[X86_PG_PAE_ENTRIES]; +} X86PTPAE; +/** Pointer to a page table. */ +typedef X86PTPAE *PX86PTPAE; +/** Pointer to a const page table. */ +typedef const X86PTPAE *PCX86PTPAE; + +/** The page shift to get the PA PTE index. */ +#define X86_PT_PAE_SHIFT 12 +/** The PAE PT index mask (apply to a shifted page address). */ +#define X86_PT_PAE_MASK 0x1ff + + +/** @name 4KB Page Directory Entry + * @{ + */ +/** Bit 0 - P - Present bit. */ +#define X86_PDE_P RT_BIT(0) +/** Bit 1 - R/W - Read (clear) / Write (set) bit. */ +#define X86_PDE_RW RT_BIT(1) +/** Bit 2 - U/S - User (set) / Supervisor (clear) bit. */ +#define X86_PDE_US RT_BIT(2) +/** Bit 3 - PWT - Page level write thru bit. */ +#define X86_PDE_PWT RT_BIT(3) +/** Bit 4 - PCD - Page level cache disable bit. */ +#define X86_PDE_PCD RT_BIT(4) +/** Bit 5 - A - Access bit. */ +#define X86_PDE_A RT_BIT(5) +/** Bit 7 - PS - Page size attribute. + * Clear mean 4KB pages, set means large pages (2/4MB). */ +#define X86_PDE_PS RT_BIT(7) +/** Bits 9-11 - - Available for use to system software. */ +#define X86_PDE_AVL_MASK (RT_BIT(9) | RT_BIT(10) | RT_BIT(11)) +/** Bits 12-31 - - Physical Page number of the next level. */ +#define X86_PDE_PG_MASK ( 0xfffff000 ) + +/** Bits 12-51 - - PAE - Physical Page number of the next level. */ +#define X86_PDE_PAE_PG_MASK UINT64_C(0x000ffffffffff000) +/** Bits 63 - NX - PAE/LM - No execution flag. */ +#define X86_PDE_PAE_NX RT_BIT_64(63) +/** Bits 62-52, 7 - - PAE - MBZ bits when NX is active. */ +#define X86_PDE_PAE_MBZ_MASK_NX UINT64_C(0x7ff0000000000080) +/** Bits 63-52, 7 - - PAE - MBZ bits when no NX. */ +#define X86_PDE_PAE_MBZ_MASK_NO_NX UINT64_C(0xfff0000000000080) +/** Bit 7 - - LM - MBZ bits when NX is active. */ +#define X86_PDE_LM_MBZ_MASK_NX UINT64_C(0x0000000000000080) +/** Bits 63, 7 - - LM - MBZ bits when no NX. */ +#define X86_PDE_LM_MBZ_MASK_NO_NX UINT64_C(0x8000000000000080) + +/** + * Page directory entry. + */ +typedef struct X86PDEBITS +{ + /** Flags whether(=1) or not the page is present. */ + unsigned u1Present : 1; + /** Read(=0) / Write(=1) flag. */ + unsigned u1Write : 1; + /** User(=1) / Supervisor (=0) flag. */ + unsigned u1User : 1; + /** Write Thru flag. If PAT enabled, bit 0 of the index. */ + unsigned u1WriteThru : 1; + /** Cache disabled flag. If PAT enabled, bit 1 of the index. */ + unsigned u1CacheDisable : 1; + /** Accessed flag. + * Indicates that the page has been read or written to. */ + unsigned u1Accessed : 1; + /** Reserved / Ignored (dirty bit). */ + unsigned u1Reserved0 : 1; + /** Size bit if PSE is enabled - in any event it's 0. */ + unsigned u1Size : 1; + /** Reserved / Ignored (global bit). */ + unsigned u1Reserved1 : 1; + /** Available for use to system software. */ + unsigned u3Available : 3; + /** Physical Page number of the next level. */ + unsigned u20PageNo : 20; +} X86PDEBITS; +/** Pointer to a page directory entry. */ +typedef X86PDEBITS *PX86PDEBITS; +/** Pointer to a const page directory entry. */ +typedef const X86PDEBITS *PCX86PDEBITS; + + +/** + * PAE page directory entry. + */ +typedef struct X86PDEPAEBITS +{ + /** Flags whether(=1) or not the page is present. */ + uint32_t u1Present : 1; + /** Read(=0) / Write(=1) flag. */ + uint32_t u1Write : 1; + /** User(=1) / Supervisor (=0) flag. */ + uint32_t u1User : 1; + /** Write Thru flag. If PAT enabled, bit 0 of the index. */ + uint32_t u1WriteThru : 1; + /** Cache disabled flag. If PAT enabled, bit 1 of the index. */ + uint32_t u1CacheDisable : 1; + /** Accessed flag. + * Indicates that the page has been read or written to. */ + uint32_t u1Accessed : 1; + /** Reserved / Ignored (dirty bit). */ + uint32_t u1Reserved0 : 1; + /** Size bit if PSE is enabled - in any event it's 0. */ + uint32_t u1Size : 1; + /** Reserved / Ignored (global bit). / */ + uint32_t u1Reserved1 : 1; + /** Available for use to system software. */ + uint32_t u3Available : 3; + /** Physical Page number of the next level - Low Part. Don't use! */ + uint32_t u20PageNoLow : 20; + /** Physical Page number of the next level - High Part. Don't use! */ + uint32_t u20PageNoHigh : 20; + /** MBZ bits */ + uint32_t u11Reserved : 11; + /** No Execute flag. */ + uint32_t u1NoExecute : 1; +} X86PDEPAEBITS; +/** Pointer to a page directory entry. */ +typedef X86PDEPAEBITS *PX86PDEPAEBITS; +/** Pointer to a const page directory entry. */ +typedef const X86PDEPAEBITS *PCX86PDEPAEBITS; + +/** @} */ + + +/** @name 2/4MB Page Directory Entry + * @{ + */ +/** Bit 0 - P - Present bit. */ +#define X86_PDE4M_P RT_BIT(0) +/** Bit 1 - R/W - Read (clear) / Write (set) bit. */ +#define X86_PDE4M_RW RT_BIT(1) +/** Bit 2 - U/S - User (set) / Supervisor (clear) bit. */ +#define X86_PDE4M_US RT_BIT(2) +/** Bit 3 - PWT - Page level write thru bit. */ +#define X86_PDE4M_PWT RT_BIT(3) +/** Bit 4 - PCD - Page level cache disable bit. */ +#define X86_PDE4M_PCD RT_BIT(4) +/** Bit 5 - A - Access bit. */ +#define X86_PDE4M_A RT_BIT(5) +/** Bit 6 - D - Dirty bit. */ +#define X86_PDE4M_D RT_BIT(6) +/** Bit 7 - PS - Page size attribute. Clear mean 4KB pages, set means large pages (2/4MB). */ +#define X86_PDE4M_PS RT_BIT(7) +/** Bit 8 - G - Global flag. */ +#define X86_PDE4M_G RT_BIT(8) +/** Bits 9-11 - AVL - Available for use to system software. */ +#define X86_PDE4M_AVL (RT_BIT(9) | RT_BIT(10) | RT_BIT(11)) +/** Bit 12 - PAT - Page Attribute Table index bit. Reserved and 0 if not supported. */ +#define X86_PDE4M_PAT RT_BIT(12) +/** Shift to get from X86_PTE_PAT to X86_PDE4M_PAT. */ +#define X86_PDE4M_PAT_SHIFT (12 - 7) +/** Bits 22-31 - - Physical Page number. */ +#define X86_PDE4M_PG_MASK ( 0xffc00000 ) +/** Bits 20-13 - - Physical Page number high part (32-39 bits). AMD64 hack. */ +#define X86_PDE4M_PG_HIGH_MASK ( 0x001fe000 ) +/** The number of bits to the high part of the page number. */ +#define X86_PDE4M_PG_HIGH_SHIFT 19 +/** Bit 21 - - MBZ bits for AMD CPUs, no PSE36. */ +#define X86_PDE4M_MBZ_MASK RT_BIT_32(21) + +/** Bits 21-51 - - PAE/LM - Physical Page number. + * (Bits 40-51 (long mode) & bits 36-51 (pae legacy) are reserved according to the Intel docs; AMD allows for more.) */ +#define X86_PDE2M_PAE_PG_MASK UINT64_C(0x000fffffffe00000) +/** Bits 63 - NX - PAE/LM - No execution flag. */ +#define X86_PDE2M_PAE_NX RT_BIT_64(63) +/** Bits 62-52, 20-13 - - PAE - MBZ bits when NX is active. */ +#define X86_PDE2M_PAE_MBZ_MASK_NX UINT64_C(0x7ff00000001fe000) +/** Bits 63-52, 20-13 - - PAE - MBZ bits when no NX. */ +#define X86_PDE2M_PAE_MBZ_MASK_NO_NX UINT64_C(0xfff00000001fe000) +/** Bits 20-13 - - LM - MBZ bits when NX is active. */ +#define X86_PDE2M_LM_MBZ_MASK_NX UINT64_C(0x00000000001fe000) +/** Bits 63, 20-13 - - LM - MBZ bits when no NX. */ +#define X86_PDE2M_LM_MBZ_MASK_NO_NX UINT64_C(0x80000000001fe000) + +/** + * 4MB page directory entry. + */ +typedef struct X86PDE4MBITS +{ + /** Flags whether(=1) or not the page is present. */ + unsigned u1Present : 1; + /** Read(=0) / Write(=1) flag. */ + unsigned u1Write : 1; + /** User(=1) / Supervisor (=0) flag. */ + unsigned u1User : 1; + /** Write Thru flag. If PAT enabled, bit 0 of the index. */ + unsigned u1WriteThru : 1; + /** Cache disabled flag. If PAT enabled, bit 1 of the index. */ + unsigned u1CacheDisable : 1; + /** Accessed flag. + * Indicates that the page have been read or written to. */ + unsigned u1Accessed : 1; + /** Dirty flag. + * Indicates that the page has been written to. */ + unsigned u1Dirty : 1; + /** Page size flag - always 1 for 4MB entries. */ + unsigned u1Size : 1; + /** Global flag. */ + unsigned u1Global : 1; + /** Available for use to system software. */ + unsigned u3Available : 3; + /** Reserved / If PAT enabled, bit 2 of the index. */ + unsigned u1PAT : 1; + /** Bits 32-39 of the page number on AMD64. + * This AMD64 hack allows accessing 40bits of physical memory without PAE. */ + unsigned u8PageNoHigh : 8; + /** Reserved. */ + unsigned u1Reserved : 1; + /** Physical Page number of the page. */ + unsigned u10PageNo : 10; +} X86PDE4MBITS; +/** Pointer to a page table entry. */ +typedef X86PDE4MBITS *PX86PDE4MBITS; +/** Pointer to a const page table entry. */ +typedef const X86PDE4MBITS *PCX86PDE4MBITS; + + +/** + * 2MB PAE page directory entry. + */ +typedef struct X86PDE2MPAEBITS +{ + /** Flags whether(=1) or not the page is present. */ + uint32_t u1Present : 1; + /** Read(=0) / Write(=1) flag. */ + uint32_t u1Write : 1; + /** User(=1) / Supervisor(=0) flag. */ + uint32_t u1User : 1; + /** Write Thru flag. If PAT enabled, bit 0 of the index. */ + uint32_t u1WriteThru : 1; + /** Cache disabled flag. If PAT enabled, bit 1 of the index. */ + uint32_t u1CacheDisable : 1; + /** Accessed flag. + * Indicates that the page have been read or written to. */ + uint32_t u1Accessed : 1; + /** Dirty flag. + * Indicates that the page has been written to. */ + uint32_t u1Dirty : 1; + /** Page size flag - always 1 for 2MB entries. */ + uint32_t u1Size : 1; + /** Global flag. */ + uint32_t u1Global : 1; + /** Available for use to system software. */ + uint32_t u3Available : 3; + /** Reserved / If PAT enabled, bit 2 of the index. */ + uint32_t u1PAT : 1; + /** Reserved. */ + uint32_t u9Reserved : 9; + /** Physical Page number of the next level - Low part. Don't use! */ + uint32_t u10PageNoLow : 10; + /** Physical Page number of the next level - High part. Don't use! */ + uint32_t u20PageNoHigh : 20; + /** MBZ bits */ + uint32_t u11Reserved : 11; + /** No Execute flag. */ + uint32_t u1NoExecute : 1; +} X86PDE2MPAEBITS; +/** Pointer to a 2MB PAE page table entry. */ +typedef X86PDE2MPAEBITS *PX86PDE2MPAEBITS; +/** Pointer to a 2MB PAE page table entry. */ +typedef const X86PDE2MPAEBITS *PCX86PDE2MPAEBITS; + +/** @} */ + +/** + * Page directory entry. + */ +typedef union X86PDE +{ + /** Unsigned integer view. */ + X86PGUINT u; + /** Normal view. */ + X86PDEBITS n; + /** 4MB view (big). */ + X86PDE4MBITS b; + /** 8 bit unsigned integer view. */ + uint8_t au8[4]; + /** 16 bit unsigned integer view. */ + uint16_t au16[2]; + /** 32 bit unsigned integer view. */ + uint32_t au32[1]; +} X86PDE; +/** Pointer to a page directory entry. */ +typedef X86PDE *PX86PDE; +/** Pointer to a const page directory entry. */ +typedef const X86PDE *PCX86PDE; + +/** + * PAE page directory entry. + */ +typedef union X86PDEPAE +{ + /** Unsigned integer view. */ + X86PGPAEUINT u; + /** Normal view. */ + X86PDEPAEBITS n; + /** 2MB page view (big). */ + X86PDE2MPAEBITS b; + /** 8 bit unsigned integer view. */ + uint8_t au8[8]; + /** 16 bit unsigned integer view. */ + uint16_t au16[4]; + /** 32 bit unsigned integer view. */ + uint32_t au32[2]; +} X86PDEPAE; +/** Pointer to a page directory entry. */ +typedef X86PDEPAE *PX86PDEPAE; +/** Pointer to a const page directory entry. */ +typedef const X86PDEPAE *PCX86PDEPAE; + +/** + * Page directory. + */ +typedef struct X86PD +{ + /** PDE Array. */ + X86PDE a[X86_PG_ENTRIES]; +} X86PD; +/** Pointer to a page directory. */ +typedef X86PD *PX86PD; +/** Pointer to a const page directory. */ +typedef const X86PD *PCX86PD; + +/** The page shift to get the PD index. */ +#define X86_PD_SHIFT 22 +/** The PD index mask (apply to a shifted page address). */ +#define X86_PD_MASK 0x3ff + + +/** + * PAE page directory. + */ +typedef struct X86PDPAE +{ + /** PDE Array. */ + X86PDEPAE a[X86_PG_PAE_ENTRIES]; +} X86PDPAE; +/** Pointer to a PAE page directory. */ +typedef X86PDPAE *PX86PDPAE; +/** Pointer to a const PAE page directory. */ +typedef const X86PDPAE *PCX86PDPAE; + +/** The page shift to get the PAE PD index. */ +#define X86_PD_PAE_SHIFT 21 +/** The PAE PD index mask (apply to a shifted page address). */ +#define X86_PD_PAE_MASK 0x1ff + + +/** @name Page Directory Pointer Table Entry (PAE) + * @{ + */ +/** Bit 0 - P - Present bit. */ +#define X86_PDPE_P RT_BIT(0) +/** Bit 1 - R/W - Read (clear) / Write (set) bit. Long Mode only. */ +#define X86_PDPE_RW RT_BIT(1) +/** Bit 2 - U/S - User (set) / Supervisor (clear) bit. Long Mode only. */ +#define X86_PDPE_US RT_BIT(2) +/** Bit 3 - PWT - Page level write thru bit. */ +#define X86_PDPE_PWT RT_BIT(3) +/** Bit 4 - PCD - Page level cache disable bit. */ +#define X86_PDPE_PCD RT_BIT(4) +/** Bit 5 - A - Access bit. Long Mode only. */ +#define X86_PDPE_A RT_BIT(5) +/** Bit 7 - PS - Page size (1GB). Long Mode only. */ +#define X86_PDPE_LM_PS RT_BIT(7) +/** Bits 9-11 - - Available for use to system software. */ +#define X86_PDPE_AVL_MASK (RT_BIT(9) | RT_BIT(10) | RT_BIT(11)) +/** Bits 12-51 - - PAE - Physical Page number of the next level. */ +#define X86_PDPE_PG_MASK UINT64_C(0x000ffffffffff000) +/** Bits 63-52, 8-5, 2-1 - - PAE - MBZ bits (NX is long mode only). */ +#define X86_PDPE_PAE_MBZ_MASK UINT64_C(0xfff00000000001e6) +/** Bits 63 - NX - LM - No execution flag. Long Mode only. */ +#define X86_PDPE_LM_NX RT_BIT_64(63) +/** Bits 8, 7 - - LM - MBZ bits when NX is active. */ +#define X86_PDPE_LM_MBZ_MASK_NX UINT64_C(0x0000000000000180) +/** Bits 63, 8, 7 - - LM - MBZ bits when no NX. */ +#define X86_PDPE_LM_MBZ_MASK_NO_NX UINT64_C(0x8000000000000180) +/** Bits 29-13 - - LM - MBZ bits for 1GB page entry when NX is active. */ +#define X86_PDPE1G_LM_MBZ_MASK_NX UINT64_C(0x000000003fffe000) +/** Bits 63, 29-13 - - LM - MBZ bits for 1GB page entry when no NX. */ +#define X86_PDPE1G_LM_MBZ_MASK_NO_NX UINT64_C(0x800000003fffe000) + + +/** + * Page directory pointer table entry. + */ +typedef struct X86PDPEBITS +{ + /** Flags whether(=1) or not the page is present. */ + uint32_t u1Present : 1; + /** Chunk of reserved bits. */ + uint32_t u2Reserved : 2; + /** Write Thru flag. If PAT enabled, bit 0 of the index. */ + uint32_t u1WriteThru : 1; + /** Cache disabled flag. If PAT enabled, bit 1 of the index. */ + uint32_t u1CacheDisable : 1; + /** Chunk of reserved bits. */ + uint32_t u4Reserved : 4; + /** Available for use to system software. */ + uint32_t u3Available : 3; + /** Physical Page number of the next level - Low Part. Don't use! */ + uint32_t u20PageNoLow : 20; + /** Physical Page number of the next level - High Part. Don't use! */ + uint32_t u20PageNoHigh : 20; + /** MBZ bits */ + uint32_t u12Reserved : 12; +} X86PDPEBITS; +/** Pointer to a page directory pointer table entry. */ +typedef X86PDPEBITS *PX86PTPEBITS; +/** Pointer to a const page directory pointer table entry. */ +typedef const X86PDPEBITS *PCX86PTPEBITS; + +/** + * Page directory pointer table entry. AMD64 version + */ +typedef struct X86PDPEAMD64BITS +{ + /** Flags whether(=1) or not the page is present. */ + uint32_t u1Present : 1; + /** Read(=0) / Write(=1) flag. */ + uint32_t u1Write : 1; + /** User(=1) / Supervisor (=0) flag. */ + uint32_t u1User : 1; + /** Write Thru flag. If PAT enabled, bit 0 of the index. */ + uint32_t u1WriteThru : 1; + /** Cache disabled flag. If PAT enabled, bit 1 of the index. */ + uint32_t u1CacheDisable : 1; + /** Accessed flag. + * Indicates that the page have been read or written to. */ + uint32_t u1Accessed : 1; + /** Chunk of reserved bits. */ + uint32_t u3Reserved : 3; + /** Available for use to system software. */ + uint32_t u3Available : 3; + /** Physical Page number of the next level - Low Part. Don't use! */ + uint32_t u20PageNoLow : 20; + /** Physical Page number of the next level - High Part. Don't use! */ + uint32_t u20PageNoHigh : 20; + /** MBZ bits */ + uint32_t u11Reserved : 11; + /** No Execute flag. */ + uint32_t u1NoExecute : 1; +} X86PDPEAMD64BITS; +/** Pointer to a page directory pointer table entry. */ +typedef X86PDPEAMD64BITS *PX86PDPEAMD64BITS; +/** Pointer to a const page directory pointer table entry. */ +typedef const X86PDPEAMD64BITS *PCX86PDPEAMD64BITS; + +/** + * Page directory pointer table entry. + */ +typedef union X86PDPE +{ + /** Unsigned integer view. */ + X86PGPAEUINT u; + /** Normal view. */ + X86PDPEBITS n; + /** AMD64 view. */ + X86PDPEAMD64BITS lm; + /** 8 bit unsigned integer view. */ + uint8_t au8[8]; + /** 16 bit unsigned integer view. */ + uint16_t au16[4]; + /** 32 bit unsigned integer view. */ + uint32_t au32[2]; +} X86PDPE; +/** Pointer to a page directory pointer table entry. */ +typedef X86PDPE *PX86PDPE; +/** Pointer to a const page directory pointer table entry. */ +typedef const X86PDPE *PCX86PDPE; + + +/** + * Page directory pointer table. + */ +typedef struct X86PDPT +{ + /** PDE Array. */ + X86PDPE a[X86_PG_AMD64_PDPE_ENTRIES]; +} X86PDPT; +/** Pointer to a page directory pointer table. */ +typedef X86PDPT *PX86PDPT; +/** Pointer to a const page directory pointer table. */ +typedef const X86PDPT *PCX86PDPT; + +/** The page shift to get the PDPT index. */ +#define X86_PDPT_SHIFT 30 +/** The PDPT index mask (apply to a shifted page address). (32 bits PAE) */ +#define X86_PDPT_MASK_PAE 0x3 +/** The PDPT index mask (apply to a shifted page address). (64 bits PAE)*/ +#define X86_PDPT_MASK_AMD64 0x1ff + +/** @} */ + + +/** @name Page Map Level-4 Entry (Long Mode PAE) + * @{ + */ +/** Bit 0 - P - Present bit. */ +#define X86_PML4E_P RT_BIT(0) +/** Bit 1 - R/W - Read (clear) / Write (set) bit. */ +#define X86_PML4E_RW RT_BIT(1) +/** Bit 2 - U/S - User (set) / Supervisor (clear) bit. */ +#define X86_PML4E_US RT_BIT(2) +/** Bit 3 - PWT - Page level write thru bit. */ +#define X86_PML4E_PWT RT_BIT(3) +/** Bit 4 - PCD - Page level cache disable bit. */ +#define X86_PML4E_PCD RT_BIT(4) +/** Bit 5 - A - Access bit. */ +#define X86_PML4E_A RT_BIT(5) +/** Bits 9-11 - - Available for use to system software. */ +#define X86_PML4E_AVL_MASK (RT_BIT(9) | RT_BIT(10) | RT_BIT(11)) +/** Bits 12-51 - - PAE - Physical Page number of the next level. */ +#define X86_PML4E_PG_MASK UINT64_C(0x000ffffffffff000) +/** Bits 8, 7 - - MBZ bits when NX is active. */ +#define X86_PML4E_MBZ_MASK_NX UINT64_C(0x0000000000000080) +/** Bits 63, 7 - - MBZ bits when no NX. */ +#define X86_PML4E_MBZ_MASK_NO_NX UINT64_C(0x8000000000000080) +/** Bits 63 - NX - PAE - No execution flag. */ +#define X86_PML4E_NX RT_BIT_64(63) + +/** + * Page Map Level-4 Entry + */ +typedef struct X86PML4EBITS +{ + /** Flags whether(=1) or not the page is present. */ + uint32_t u1Present : 1; + /** Read(=0) / Write(=1) flag. */ + uint32_t u1Write : 1; + /** User(=1) / Supervisor (=0) flag. */ + uint32_t u1User : 1; + /** Write Thru flag. If PAT enabled, bit 0 of the index. */ + uint32_t u1WriteThru : 1; + /** Cache disabled flag. If PAT enabled, bit 1 of the index. */ + uint32_t u1CacheDisable : 1; + /** Accessed flag. + * Indicates that the page have been read or written to. */ + uint32_t u1Accessed : 1; + /** Chunk of reserved bits. */ + uint32_t u3Reserved : 3; + /** Available for use to system software. */ + uint32_t u3Available : 3; + /** Physical Page number of the next level - Low Part. Don't use! */ + uint32_t u20PageNoLow : 20; + /** Physical Page number of the next level - High Part. Don't use! */ + uint32_t u20PageNoHigh : 20; + /** MBZ bits */ + uint32_t u11Reserved : 11; + /** No Execute flag. */ + uint32_t u1NoExecute : 1; +} X86PML4EBITS; +/** Pointer to a page map level-4 entry. */ +typedef X86PML4EBITS *PX86PML4EBITS; +/** Pointer to a const page map level-4 entry. */ +typedef const X86PML4EBITS *PCX86PML4EBITS; + +/** + * Page Map Level-4 Entry. + */ +typedef union X86PML4E +{ + /** Unsigned integer view. */ + X86PGPAEUINT u; + /** Normal view. */ + X86PML4EBITS n; + /** 8 bit unsigned integer view. */ + uint8_t au8[8]; + /** 16 bit unsigned integer view. */ + uint16_t au16[4]; + /** 32 bit unsigned integer view. */ + uint32_t au32[2]; +} X86PML4E; +/** Pointer to a page map level-4 entry. */ +typedef X86PML4E *PX86PML4E; +/** Pointer to a const page map level-4 entry. */ +typedef const X86PML4E *PCX86PML4E; + + +/** + * Page Map Level-4. + */ +typedef struct X86PML4 +{ + /** PDE Array. */ + X86PML4E a[X86_PG_PAE_ENTRIES]; +} X86PML4; +/** Pointer to a page map level-4. */ +typedef X86PML4 *PX86PML4; +/** Pointer to a const page map level-4. */ +typedef const X86PML4 *PCX86PML4; + +/** The page shift to get the PML4 index. */ +#define X86_PML4_SHIFT 39 +/** The PML4 index mask (apply to a shifted page address). */ +#define X86_PML4_MASK 0x1ff + +/** @} */ + +/** @} */ + +/** + * 32-bit protected mode FSTENV image. + */ +typedef struct X86FSTENV32P +{ + uint16_t FCW; + uint16_t padding1; + uint16_t FSW; + uint16_t padding2; + uint16_t FTW; + uint16_t padding3; + uint32_t FPUIP; + uint16_t FPUCS; + uint16_t FOP; + uint32_t FPUDP; + uint16_t FPUDS; + uint16_t padding4; +} X86FSTENV32P; +/** Pointer to a 32-bit protected mode FSTENV image. */ +typedef X86FSTENV32P *PX86FSTENV32P; +/** Pointer to a const 32-bit protected mode FSTENV image. */ +typedef X86FSTENV32P const *PCX86FSTENV32P; + + +/** + * 80-bit MMX/FPU register type. + */ +typedef struct X86FPUMMX +{ + uint8_t reg[10]; +} X86FPUMMX; +#ifndef VBOX_FOR_DTRACE_LIB +AssertCompileSize(X86FPUMMX, 10); +#endif +/** Pointer to a 80-bit MMX/FPU register type. */ +typedef X86FPUMMX *PX86FPUMMX; +/** Pointer to a const 80-bit MMX/FPU register type. */ +typedef const X86FPUMMX *PCX86FPUMMX; + +/** FPU (x87) register. */ +typedef union X86FPUREG +{ + /** MMX view. */ + uint64_t mmx; + /** FPU view - todo. */ + X86FPUMMX fpu; + /** Extended precision floating point view. */ + RTFLOAT80U r80; + /** Extended precision floating point view v2 */ + RTFLOAT80U2 r80Ex; + /** 8-bit view. */ + uint8_t au8[16]; + /** 16-bit view. */ + uint16_t au16[8]; + /** 32-bit view. */ + uint32_t au32[4]; + /** 64-bit view. */ + uint64_t au64[2]; + /** 128-bit view. (yeah, very helpful) */ + uint128_t au128[1]; +} X86FPUREG; +#ifndef VBOX_FOR_DTRACE_LIB +AssertCompileSize(X86FPUREG, 16); +#endif +/** Pointer to a FPU register. */ +typedef X86FPUREG *PX86FPUREG; +/** Pointer to a const FPU register. */ +typedef X86FPUREG const *PCX86FPUREG; + +/** + * XMM register union. + */ +typedef union X86XMMREG +{ + /** XMM Register view *. */ + uint128_t xmm; + /** 8-bit view. */ + uint8_t au8[16]; + /** 16-bit view. */ + uint16_t au16[8]; + /** 32-bit view. */ + uint32_t au32[4]; + /** 64-bit view. */ + uint64_t au64[2]; + /** 128-bit view. (yeah, very helpful) */ + uint128_t au128[1]; +} X86XMMREG; +#ifndef VBOX_FOR_DTRACE_LIB +AssertCompileSize(X86XMMREG, 16); +#endif +/** Pointer to an XMM register state. */ +typedef X86XMMREG *PX86XMMREG; +/** Pointer to a const XMM register state. */ +typedef X86XMMREG const *PCX86XMMREG; + +/** + * YMM register union. + */ +typedef union X86YMMREG +{ + /** 8-bit view. */ + uint8_t au8[32]; + /** 16-bit view. */ + uint16_t au16[16]; + /** 32-bit view. */ + uint32_t au32[8]; + /** 64-bit view. */ + uint64_t au64[4]; + /** 128-bit view. (yeah, very helpful) */ + uint128_t au128[2]; + /** XMM sub register view. */ + X86XMMREG aXmm[2]; +} X86YMMREG; +#ifndef VBOX_FOR_DTRACE_LIB +AssertCompileSize(X86YMMREG, 32); +#endif +/** Pointer to an YMM register state. */ +typedef X86YMMREG *PX86YMMREG; +/** Pointer to a const YMM register state. */ +typedef X86YMMREG const *PCX86YMMREG; + +/** + * ZMM register union. + */ +typedef union X86ZMMREG +{ + /** 8-bit view. */ + uint8_t au8[64]; + /** 16-bit view. */ + uint16_t au16[32]; + /** 32-bit view. */ + uint32_t au32[16]; + /** 64-bit view. */ + uint64_t au64[8]; + /** 128-bit view. (yeah, very helpful) */ + uint128_t au128[4]; + /** XMM sub register view. */ + X86XMMREG aXmm[4]; + /** YMM sub register view. */ + X86YMMREG aYmm[2]; +} X86ZMMREG; +#ifndef VBOX_FOR_DTRACE_LIB +AssertCompileSize(X86ZMMREG, 64); +#endif +/** Pointer to an ZMM register state. */ +typedef X86ZMMREG *PX86ZMMREG; +/** Pointer to a const ZMM register state. */ +typedef X86ZMMREG const *PCX86ZMMREG; + + +/** + * 32-bit FPU state (aka FSAVE/FRSTOR Memory Region). + * @todo verify this... + */ +#pragma pack(1) +typedef struct X86FPUSTATE +{ + /** 0x00 - Control word. */ + uint16_t FCW; + /** 0x02 - Alignment word */ + uint16_t Dummy1; + /** 0x04 - Status word. */ + uint16_t FSW; + /** 0x06 - Alignment word */ + uint16_t Dummy2; + /** 0x08 - Tag word */ + uint16_t FTW; + /** 0x0a - Alignment word */ + uint16_t Dummy3; + + /** 0x0c - Instruction pointer. */ + uint32_t FPUIP; + /** 0x10 - Code selector. */ + uint16_t CS; + /** 0x12 - Opcode. */ + uint16_t FOP; + /** 0x14 - FOO. */ + uint32_t FPUOO; + /** 0x18 - FOS. */ + uint32_t FPUOS; + /** 0x1c - FPU register. */ + X86FPUREG regs[8]; +} X86FPUSTATE; +#pragma pack() +/** Pointer to a FPU state. */ +typedef X86FPUSTATE *PX86FPUSTATE; +/** Pointer to a const FPU state. */ +typedef const X86FPUSTATE *PCX86FPUSTATE; + +/** + * FPU Extended state (aka FXSAVE/FXRSTORE Memory Region). + */ +#pragma pack(1) +typedef struct X86FXSTATE +{ + /** 0x00 - Control word. */ + uint16_t FCW; + /** 0x02 - Status word. */ + uint16_t FSW; + /** 0x04 - Tag word. (The upper byte is always zero.) */ + uint16_t FTW; + /** 0x06 - Opcode. */ + uint16_t FOP; + /** 0x08 - Instruction pointer. */ + uint32_t FPUIP; + /** 0x0c - Code selector. */ + uint16_t CS; + uint16_t Rsrvd1; + /** 0x10 - Data pointer. */ + uint32_t FPUDP; + /** 0x14 - Data segment */ + uint16_t DS; + /** 0x16 */ + uint16_t Rsrvd2; + /** 0x18 */ + uint32_t MXCSR; + /** 0x1c */ + uint32_t MXCSR_MASK; + /** 0x20 - FPU registers. */ + X86FPUREG aRegs[8]; + /** 0xA0 - XMM registers - 8 registers in 32 bits mode, 16 in long mode. */ + X86XMMREG aXMM[16]; + /* - offset 416 - */ + uint32_t au32RsrvdRest[(464 - 416) / sizeof(uint32_t)]; + /* - offset 464 - Software usable reserved bits. */ + uint32_t au32RsrvdForSoftware[(512 - 464) / sizeof(uint32_t)]; +} X86FXSTATE; +#pragma pack() +/** Pointer to a FPU Extended state. */ +typedef X86FXSTATE *PX86FXSTATE; +/** Pointer to a const FPU Extended state. */ +typedef const X86FXSTATE *PCX86FXSTATE; + +/** Offset for software usable reserved bits (464:511) where we store a 32-bit + * magic. Don't forget to update x86.mac if you change this! */ +#define X86_OFF_FXSTATE_RSVD 0x1d0 +/** The 32-bit magic used to recognize if this a 32-bit FPU state. Don't + * forget to update x86.mac if you change this! + * @todo r=bird: This has nothing what-so-ever to do here.... */ +#define X86_FXSTATE_RSVD_32BIT_MAGIC 0x32b3232b +#ifndef VBOX_FOR_DTRACE_LIB +AssertCompileSize(X86FXSTATE, 512); +AssertCompileMemberOffset(X86FXSTATE, au32RsrvdForSoftware, X86_OFF_FXSTATE_RSVD); +#endif + +/** @name FPU status word flags. + * @{ */ +/** Exception Flag: Invalid operation. */ +#define X86_FSW_IE RT_BIT(0) +/** Exception Flag: Denormalized operand. */ +#define X86_FSW_DE RT_BIT(1) +/** Exception Flag: Zero divide. */ +#define X86_FSW_ZE RT_BIT(2) +/** Exception Flag: Overflow. */ +#define X86_FSW_OE RT_BIT(3) +/** Exception Flag: Underflow. */ +#define X86_FSW_UE RT_BIT(4) +/** Exception Flag: Precision. */ +#define X86_FSW_PE RT_BIT(5) +/** Stack fault. */ +#define X86_FSW_SF RT_BIT(6) +/** Error summary status. */ +#define X86_FSW_ES RT_BIT(7) +/** Mask of exceptions flags, excluding the summary bit. */ +#define X86_FSW_XCPT_MASK UINT16_C(0x007f) +/** Mask of exceptions flags, including the summary bit. */ +#define X86_FSW_XCPT_ES_MASK UINT16_C(0x00ff) +/** Condition code 0. */ +#define X86_FSW_C0 RT_BIT(8) +/** Condition code 1. */ +#define X86_FSW_C1 RT_BIT(9) +/** Condition code 2. */ +#define X86_FSW_C2 RT_BIT(10) +/** Top of the stack mask. */ +#define X86_FSW_TOP_MASK UINT16_C(0x3800) +/** TOP shift value. */ +#define X86_FSW_TOP_SHIFT 11 +/** Mask for getting TOP value after shifting it right. */ +#define X86_FSW_TOP_SMASK UINT16_C(0x0007) +/** Get the TOP value. */ +#define X86_FSW_TOP_GET(a_uFsw) (((a_uFsw) >> X86_FSW_TOP_SHIFT) & X86_FSW_TOP_SMASK) +/** Condition code 3. */ +#define X86_FSW_C3 RT_BIT(14) +/** Mask of exceptions flags, including the summary bit. */ +#define X86_FSW_C_MASK UINT16_C(0x4700) +/** FPU busy. */ +#define X86_FSW_B RT_BIT(15) +/** @} */ + + +/** @name FPU control word flags. + * @{ */ +/** Exception Mask: Invalid operation. */ +#define X86_FCW_IM RT_BIT(0) +/** Exception Mask: Denormalized operand. */ +#define X86_FCW_DM RT_BIT(1) +/** Exception Mask: Zero divide. */ +#define X86_FCW_ZM RT_BIT(2) +/** Exception Mask: Overflow. */ +#define X86_FCW_OM RT_BIT(3) +/** Exception Mask: Underflow. */ +#define X86_FCW_UM RT_BIT(4) +/** Exception Mask: Precision. */ +#define X86_FCW_PM RT_BIT(5) +/** Mask all exceptions, the value typically loaded (by for instance fninit). + * @remarks This includes reserved bit 6. */ +#define X86_FCW_MASK_ALL UINT16_C(0x007f) +/** Mask all exceptions. Same as X86_FSW_XCPT_MASK. */ +#define X86_FCW_XCPT_MASK UINT16_C(0x003f) +/** Precision control mask. */ +#define X86_FCW_PC_MASK UINT16_C(0x0300) +/** Precision control: 24-bit. */ +#define X86_FCW_PC_24 UINT16_C(0x0000) +/** Precision control: Reserved. */ +#define X86_FCW_PC_RSVD UINT16_C(0x0100) +/** Precision control: 53-bit. */ +#define X86_FCW_PC_53 UINT16_C(0x0200) +/** Precision control: 64-bit. */ +#define X86_FCW_PC_64 UINT16_C(0x0300) +/** Rounding control mask. */ +#define X86_FCW_RC_MASK UINT16_C(0x0c00) +/** Rounding control: To nearest. */ +#define X86_FCW_RC_NEAREST UINT16_C(0x0000) +/** Rounding control: Down. */ +#define X86_FCW_RC_DOWN UINT16_C(0x0400) +/** Rounding control: Up. */ +#define X86_FCW_RC_UP UINT16_C(0x0800) +/** Rounding control: Towards zero. */ +#define X86_FCW_RC_ZERO UINT16_C(0x0c00) +/** Bits which should be zero, apparently. */ +#define X86_FCW_ZERO_MASK UINT16_C(0xf080) +/** @} */ + +/** @name SSE MXCSR + * @{ */ +/** Exception Flag: Invalid operation. */ +#define X86_MXSCR_IE RT_BIT(0) +/** Exception Flag: Denormalized operand. */ +#define X86_MXSCR_DE RT_BIT(1) +/** Exception Flag: Zero divide. */ +#define X86_MXSCR_ZE RT_BIT(2) +/** Exception Flag: Overflow. */ +#define X86_MXSCR_OE RT_BIT(3) +/** Exception Flag: Underflow. */ +#define X86_MXSCR_UE RT_BIT(4) +/** Exception Flag: Precision. */ +#define X86_MXSCR_PE RT_BIT(5) + +/** Denormals are zero. */ +#define X86_MXSCR_DAZ RT_BIT(6) + +/** Exception Mask: Invalid operation. */ +#define X86_MXSCR_IM RT_BIT(7) +/** Exception Mask: Denormalized operand. */ +#define X86_MXSCR_DM RT_BIT(8) +/** Exception Mask: Zero divide. */ +#define X86_MXSCR_ZM RT_BIT(9) +/** Exception Mask: Overflow. */ +#define X86_MXSCR_OM RT_BIT(10) +/** Exception Mask: Underflow. */ +#define X86_MXSCR_UM RT_BIT(11) +/** Exception Mask: Precision. */ +#define X86_MXSCR_PM RT_BIT(12) + +/** Rounding control mask. */ +#define X86_MXSCR_RC_MASK UINT16_C(0x6000) +/** Rounding control: To nearest. */ +#define X86_MXSCR_RC_NEAREST UINT16_C(0x0000) +/** Rounding control: Down. */ +#define X86_MXSCR_RC_DOWN UINT16_C(0x2000) +/** Rounding control: Up. */ +#define X86_MXSCR_RC_UP UINT16_C(0x4000) +/** Rounding control: Towards zero. */ +#define X86_MXSCR_RC_ZERO UINT16_C(0x6000) + +/** Flush-to-zero for masked underflow. */ +#define X86_MXSCR_FZ RT_BIT(15) + +/** Misaligned Exception Mask (AMD MISALIGNSSE). */ +#define X86_MXSCR_MM RT_BIT(17) +/** @} */ + +/** + * XSAVE header. + */ +typedef struct X86XSAVEHDR +{ + /** XTATE_BV - Bitmap indicating whether a component is in the state. */ + uint64_t bmXState; + /** XCOMP_BC - Bitmap used by instructions applying structure compaction. */ + uint64_t bmXComp; + /** Reserved for furture extensions, probably MBZ. */ + uint64_t au64Reserved[6]; +} X86XSAVEHDR; +#ifndef VBOX_FOR_DTRACE_LIB +AssertCompileSize(X86XSAVEHDR, 64); +#endif +/** Pointer to an XSAVE header. */ +typedef X86XSAVEHDR *PX86XSAVEHDR; +/** Pointer to a const XSAVE header. */ +typedef X86XSAVEHDR const *PCX86XSAVEHDR; + + +/** + * The high 128-bit YMM register state (XSAVE_C_YMM). + * (The lower 128-bits being in X86FXSTATE.) + */ +typedef struct X86XSAVEYMMHI +{ + /** 16 registers in 64-bit mode, 8 in 32-bit mode. */ + X86XMMREG aYmmHi[16]; +} X86XSAVEYMMHI; +#ifndef VBOX_FOR_DTRACE_LIB +AssertCompileSize(X86XSAVEYMMHI, 256); +#endif +/** Pointer to a high 128-bit YMM register state. */ +typedef X86XSAVEYMMHI *PX86XSAVEYMMHI; +/** Pointer to a const high 128-bit YMM register state. */ +typedef X86XSAVEYMMHI const *PCX86XSAVEYMMHI; + +/** + * Intel MPX bound registers state (XSAVE_C_BNDREGS). + */ +typedef struct X86XSAVEBNDREGS +{ + /** Array of registers (BND0...BND3). */ + struct + { + /** Lower bound. */ + uint64_t uLowerBound; + /** Upper bound. */ + uint64_t uUpperBound; + } aRegs[4]; +} X86XSAVEBNDREGS; +#ifndef VBOX_FOR_DTRACE_LIB +AssertCompileSize(X86XSAVEBNDREGS, 64); +#endif +/** Pointer to a MPX bound register state. */ +typedef X86XSAVEBNDREGS *PX86XSAVEBNDREGS; +/** Pointer to a const MPX bound register state. */ +typedef X86XSAVEBNDREGS const *PCX86XSAVEBNDREGS; + +/** + * Intel MPX bound config and status register state (XSAVE_C_BNDCSR). + */ +typedef struct X86XSAVEBNDCFG +{ + uint64_t fConfig; + uint64_t fStatus; +} X86XSAVEBNDCFG; +#ifndef VBOX_FOR_DTRACE_LIB +AssertCompileSize(X86XSAVEBNDCFG, 16); +#endif +/** Pointer to a MPX bound config and status register state. */ +typedef X86XSAVEBNDCFG *PX86XSAVEBNDCFG; +/** Pointer to a const MPX bound config and status register state. */ +typedef X86XSAVEBNDCFG *PCX86XSAVEBNDCFG; + +/** + * AVX-512 opmask state (XSAVE_C_OPMASK). + */ +typedef struct X86XSAVEOPMASK +{ + /** The K0..K7 values. */ + uint64_t aKRegs[8]; +} X86XSAVEOPMASK; +#ifndef VBOX_FOR_DTRACE_LIB +AssertCompileSize(X86XSAVEOPMASK, 64); +#endif +/** Pointer to a AVX-512 opmask state. */ +typedef X86XSAVEOPMASK *PX86XSAVEOPMASK; +/** Pointer to a const AVX-512 opmask state. */ +typedef X86XSAVEOPMASK const *PCX86XSAVEOPMASK; + +/** + * ZMM0-15 upper 256 bits introduced in AVX-512 (XSAVE_C_ZMM_HI256). + */ +typedef struct X86XSAVEZMMHI256 +{ + /** Upper 256-bits of ZMM0-15. */ + X86YMMREG aHi256Regs[16]; +} X86XSAVEZMMHI256; +#ifndef VBOX_FOR_DTRACE_LIB +AssertCompileSize(X86XSAVEZMMHI256, 512); +#endif +/** Pointer to a state comprising the upper 256-bits of ZMM0-15. */ +typedef X86XSAVEZMMHI256 *PX86XSAVEZMMHI256; +/** Pointer to a const state comprising the upper 256-bits of ZMM0-15. */ +typedef X86XSAVEZMMHI256 const *PCX86XSAVEZMMHI256; + +/** + * ZMM16-31 register state introduced in AVX-512 (XSAVE_C_ZMM_16HI). + */ +typedef struct X86XSAVEZMM16HI +{ + /** ZMM16 thru ZMM31. */ + X86ZMMREG aRegs[16]; +} X86XSAVEZMM16HI; +#ifndef VBOX_FOR_DTRACE_LIB +AssertCompileSize(X86XSAVEZMM16HI, 1024); +#endif +/** Pointer to a state comprising ZMM16-32. */ +typedef X86XSAVEZMM16HI *PX86XSAVEZMM16HI; +/** Pointer to a const state comprising ZMM16-32. */ +typedef X86XSAVEZMM16HI const *PCX86XSAVEZMM16HI; + +/** + * AMD Light weight profiling state (XSAVE_C_LWP). + * + * We probably won't play with this as AMD seems to be dropping from their "zen" + * processor micro architecture. + */ +typedef struct X86XSAVELWP +{ + /** Details when needed. */ + uint64_t auLater[128/8]; +} X86XSAVELWP; +#ifndef VBOX_FOR_DTRACE_LIB +AssertCompileSize(X86XSAVELWP, 128); +#endif + + +/** + * x86 FPU/SSE/AVX/XXXX state. + * + * Please bump DBGFCORE_FMT_VERSION by 1 in dbgfcorefmt.h if you make any + * changes to this structure. + */ +typedef struct X86XSAVEAREA +{ + /** The x87 and SSE region (or legacy region if you like). */ + X86FXSTATE x87; + /** The XSAVE header. */ + X86XSAVEHDR Hdr; + /** Beyond the header, there isn't really a fixed layout, but we can + generally assume the YMM (AVX) register extensions are present and + follows immediately. */ + union + { + /** This is a typical layout on intel CPUs (good for debuggers). */ + struct + { + X86XSAVEYMMHI YmmHi; + X86XSAVEBNDREGS BndRegs; + X86XSAVEBNDCFG BndCfg; + uint8_t abFudgeToMatchDocs[0xB0]; + X86XSAVEOPMASK Opmask; + X86XSAVEZMMHI256 ZmmHi256; + X86XSAVEZMM16HI Zmm16Hi; + } Intel; + + /** This is a typical layout on AMD Bulldozer type CPUs (good for debuggers). */ + struct + { + X86XSAVEYMMHI YmmHi; + X86XSAVELWP Lwp; + } AmdBd; + + /** To enbling static deployments that have a reasonable chance of working for + * the next 3-6 CPU generations without running short on space, we allocate a + * lot of extra space here, making the structure a round 8KB in size. This + * leaves us 7616 bytes for extended state. The skylake xeons are likely to use + * 2112 of these, leaving us with 5504 bytes for future Intel generations. */ + uint8_t ab[8192 - 512 - 64]; + } u; +} X86XSAVEAREA; +#ifndef VBOX_FOR_DTRACE_LIB +AssertCompileSize(X86XSAVEAREA, 8192); +AssertCompileMemberSize(X86XSAVEAREA, u.Intel, 0x840 /*2112 => total 0xa80 (2688) */); +AssertCompileMemberOffset(X86XSAVEAREA, Hdr, 0x200); +AssertCompileMemberOffset(X86XSAVEAREA, u.Intel.YmmHi, 0x240); +AssertCompileMemberOffset(X86XSAVEAREA, u.Intel.BndRegs, 0x340); +AssertCompileMemberOffset(X86XSAVEAREA, u.Intel.BndCfg, 0x380); +AssertCompileMemberOffset(X86XSAVEAREA, u.Intel.Opmask, 0x440 /* 1088 */); +AssertCompileMemberOffset(X86XSAVEAREA, u.Intel.ZmmHi256, 0x480 /* 1152 */); +AssertCompileMemberOffset(X86XSAVEAREA, u.Intel.Zmm16Hi, 0x680 /* 1664 */); +#endif +/** Pointer to a XSAVE area. */ +typedef X86XSAVEAREA *PX86XSAVEAREA; +/** Pointer to a const XSAVE area. */ +typedef X86XSAVEAREA const *PCX86XSAVEAREA; + + +/** @name XSAVE_C_XXX - XSAVE State Components Bits. + * @{ */ +/** Bit 0 - x87 - Legacy FPU state (bit number) */ +#define XSAVE_C_X87_BIT 0 +/** Bit 0 - x87 - Legacy FPU state. */ +#define XSAVE_C_X87 RT_BIT_64(XSAVE_C_X87_BIT) +/** Bit 1 - SSE - 128-bit SSE state (bit number). */ +#define XSAVE_C_SSE_BIT 1 +/** Bit 1 - SSE - 128-bit SSE state. */ +#define XSAVE_C_SSE RT_BIT_64(XSAVE_C_SSE_BIT) +/** Bit 2 - YMM_Hi128 - Upper 128 bits of YMM0-15 (AVX) (bit number). */ +#define XSAVE_C_YMM_BIT 2 +/** Bit 2 - YMM_Hi128 - Upper 128 bits of YMM0-15 (AVX). */ +#define XSAVE_C_YMM RT_BIT_64(XSAVE_C_YMM_BIT) +/** Bit 3 - BNDREGS - MPX bound register state (bit number). */ +#define XSAVE_C_BNDREGS_BIT 3 +/** Bit 3 - BNDREGS - MPX bound register state. */ +#define XSAVE_C_BNDREGS RT_BIT_64(XSAVE_C_BNDREGS_BIT) +/** Bit 4 - BNDCSR - MPX bound config and status state (bit number). */ +#define XSAVE_C_BNDCSR_BIT 4 +/** Bit 4 - BNDCSR - MPX bound config and status state. */ +#define XSAVE_C_BNDCSR RT_BIT_64(XSAVE_C_BNDCSR_BIT) +/** Bit 5 - Opmask - opmask state (bit number). */ +#define XSAVE_C_OPMASK_BIT 5 +/** Bit 5 - Opmask - opmask state. */ +#define XSAVE_C_OPMASK RT_BIT_64(XSAVE_C_OPMASK_BIT) +/** Bit 6 - ZMM_Hi256 - Upper 256 bits of ZMM0-15 (AVX-512) (bit number). */ +#define XSAVE_C_ZMM_HI256_BIT 6 +/** Bit 6 - ZMM_Hi256 - Upper 256 bits of ZMM0-15 (AVX-512). */ +#define XSAVE_C_ZMM_HI256 RT_BIT_64(XSAVE_C_ZMM_HI256_BIT) +/** Bit 7 - Hi16_ZMM - 512-bits ZMM16-31 state (AVX-512) (bit number). */ +#define XSAVE_C_ZMM_16HI_BIT 7 +/** Bit 7 - Hi16_ZMM - 512-bits ZMM16-31 state (AVX-512). */ +#define XSAVE_C_ZMM_16HI RT_BIT_64(XSAVE_C_ZMM_16HI_BIT) +/** Bit 9 - PKRU - Protection-key state (bit number). */ +#define XSAVE_C_PKRU_BIT 9 +/** Bit 9 - PKRU - Protection-key state. */ +#define XSAVE_C_PKRU RT_BIT_64(XSAVE_C_PKRU_BIT) +/** Bit 62 - LWP - Lightweight Profiling (AMD) (bit number). */ +#define XSAVE_C_LWP_BIT 62 +/** Bit 62 - LWP - Lightweight Profiling (AMD). */ +#define XSAVE_C_LWP RT_BIT_64(XSAVE_C_LWP_BIT) +/** @} */ + + + +/** @name Selector Descriptor + * @{ + */ + +#ifndef VBOX_FOR_DTRACE_LIB +/** + * Descriptor attributes (as seen by VT-x). + */ +typedef struct X86DESCATTRBITS +{ + /** 00 - Segment Type. */ + unsigned u4Type : 4; + /** 04 - Descriptor Type. System(=0) or code/data selector */ + unsigned u1DescType : 1; + /** 05 - Descriptor Privilege level. */ + unsigned u2Dpl : 2; + /** 07 - Flags selector present(=1) or not. */ + unsigned u1Present : 1; + /** 08 - Segment limit 16-19. */ + unsigned u4LimitHigh : 4; + /** 0c - Available for system software. */ + unsigned u1Available : 1; + /** 0d - 32 bits mode: Reserved - 0, long mode: Long Attribute Bit. */ + unsigned u1Long : 1; + /** 0e - This flags meaning depends on the segment type. Try make sense out + * of the intel manual yourself. */ + unsigned u1DefBig : 1; + /** 0f - Granularity of the limit. If set 4KB granularity is used, if + * clear byte. */ + unsigned u1Granularity : 1; + /** 10 - "Unusable" selector, special Intel (VT-x only?) bit. */ + unsigned u1Unusable : 1; +} X86DESCATTRBITS; +#endif /* !VBOX_FOR_DTRACE_LIB */ + +/** @name X86DESCATTR masks + * @{ */ +#define X86DESCATTR_TYPE UINT32_C(0x0000000f) +#define X86DESCATTR_DT UINT32_C(0x00000010) +#define X86DESCATTR_DPL UINT32_C(0x00000060) +#define X86DESCATTR_DPL_SHIFT 5 /**< Shift count for the DPL value. */ +#define X86DESCATTR_P UINT32_C(0x00000080) +#define X86DESCATTR_LIMIT_HIGH UINT32_C(0x00000f00) +#define X86DESCATTR_AVL UINT32_C(0x00001000) +#define X86DESCATTR_L UINT32_C(0x00002000) +#define X86DESCATTR_D UINT32_C(0x00004000) +#define X86DESCATTR_G UINT32_C(0x00008000) +#define X86DESCATTR_UNUSABLE UINT32_C(0x00010000) +/** @} */ + +#pragma pack(1) +typedef union X86DESCATTR +{ + /** Unsigned integer view. */ + uint32_t u; +#ifndef VBOX_FOR_DTRACE_LIB + /** Normal view. */ + X86DESCATTRBITS n; +#endif +} X86DESCATTR; +#pragma pack() +/** Pointer to descriptor attributes. */ +typedef X86DESCATTR *PX86DESCATTR; +/** Pointer to const descriptor attributes. */ +typedef const X86DESCATTR *PCX86DESCATTR; + +#ifndef VBOX_FOR_DTRACE_LIB + +/** + * Generic descriptor table entry + */ +#pragma pack(1) +typedef struct X86DESCGENERIC +{ + /** 00 - Limit - Low word. */ + unsigned u16LimitLow : 16; + /** 10 - Base address - lowe word. + * Don't try set this to 24 because MSC is doing stupid things then. */ + unsigned u16BaseLow : 16; + /** 20 - Base address - first 8 bits of high word. */ + unsigned u8BaseHigh1 : 8; + /** 28 - Segment Type. */ + unsigned u4Type : 4; + /** 2c - Descriptor Type. System(=0) or code/data selector */ + unsigned u1DescType : 1; + /** 2d - Descriptor Privilege level. */ + unsigned u2Dpl : 2; + /** 2f - Flags selector present(=1) or not. */ + unsigned u1Present : 1; + /** 30 - Segment limit 16-19. */ + unsigned u4LimitHigh : 4; + /** 34 - Available for system software. */ + unsigned u1Available : 1; + /** 35 - 32 bits mode: Reserved - 0, long mode: Long Attribute Bit. */ + unsigned u1Long : 1; + /** 36 - This flags meaning depends on the segment type. Try make sense out + * of the intel manual yourself. */ + unsigned u1DefBig : 1; + /** 37 - Granularity of the limit. If set 4KB granularity is used, if + * clear byte. */ + unsigned u1Granularity : 1; + /** 38 - Base address - highest 8 bits. */ + unsigned u8BaseHigh2 : 8; +} X86DESCGENERIC; +#pragma pack() +/** Pointer to a generic descriptor entry. */ +typedef X86DESCGENERIC *PX86DESCGENERIC; +/** Pointer to a const generic descriptor entry. */ +typedef const X86DESCGENERIC *PCX86DESCGENERIC; + +/** @name Bit offsets of X86DESCGENERIC members. + * @{*/ +#define X86DESCGENERIC_BIT_OFF_LIMIT_LOW (0) /**< Bit offset of X86DESCGENERIC::u16LimitLow. */ +#define X86DESCGENERIC_BIT_OFF_BASE_LOW (16) /**< Bit offset of X86DESCGENERIC::u16BaseLow. */ +#define X86DESCGENERIC_BIT_OFF_BASE_HIGH1 (32) /**< Bit offset of X86DESCGENERIC::u8BaseHigh1. */ +#define X86DESCGENERIC_BIT_OFF_TYPE (40) /**< Bit offset of X86DESCGENERIC::u4Type. */ +#define X86DESCGENERIC_BIT_OFF_DESC_TYPE (44) /**< Bit offset of X86DESCGENERIC::u1DescType. */ +#define X86DESCGENERIC_BIT_OFF_DPL (45) /**< Bit offset of X86DESCGENERIC::u2Dpl. */ +#define X86DESCGENERIC_BIT_OFF_PRESENT (47) /**< Bit offset of X86DESCGENERIC::uu1Present. */ +#define X86DESCGENERIC_BIT_OFF_LIMIT_HIGH (48) /**< Bit offset of X86DESCGENERIC::u4LimitHigh. */ +#define X86DESCGENERIC_BIT_OFF_AVAILABLE (52) /**< Bit offset of X86DESCGENERIC::u1Available. */ +#define X86DESCGENERIC_BIT_OFF_LONG (53) /**< Bit offset of X86DESCGENERIC::u1Long. */ +#define X86DESCGENERIC_BIT_OFF_DEF_BIG (54) /**< Bit offset of X86DESCGENERIC::u1DefBig. */ +#define X86DESCGENERIC_BIT_OFF_GRANULARITY (55) /**< Bit offset of X86DESCGENERIC::u1Granularity. */ +#define X86DESCGENERIC_BIT_OFF_BASE_HIGH2 (56) /**< Bit offset of X86DESCGENERIC::u8BaseHigh2. */ +/** @} */ + +/** + * Call-, Interrupt-, Trap- or Task-gate descriptor (legacy). + */ +typedef struct X86DESCGATE +{ + /** 00 - Target code segment offset - Low word. + * Ignored if task-gate. */ + unsigned u16OffsetLow : 16; + /** 10 - Target code segment selector for call-, interrupt- and trap-gates, + * TSS selector if task-gate. */ + unsigned u16Sel : 16; + /** 20 - Number of parameters for a call-gate. + * Ignored if interrupt-, trap- or task-gate. */ + unsigned u4ParmCount : 4; + /** 24 - Reserved / ignored. */ + unsigned u4Reserved : 4; + /** 28 - Segment Type. */ + unsigned u4Type : 4; + /** 2c - Descriptor Type (0 = system). */ + unsigned u1DescType : 1; + /** 2d - Descriptor Privilege level. */ + unsigned u2Dpl : 2; + /** 2f - Flags selector present(=1) or not. */ + unsigned u1Present : 1; + /** 30 - Target code segment offset - High word. + * Ignored if task-gate. */ + unsigned u16OffsetHigh : 16; +} X86DESCGATE; +/** Pointer to a Call-, Interrupt-, Trap- or Task-gate descriptor entry. */ +typedef X86DESCGATE *PX86DESCGATE; +/** Pointer to a const Call-, Interrupt-, Trap- or Task-gate descriptor entry. */ +typedef const X86DESCGATE *PCX86DESCGATE; + +#endif /* VBOX_FOR_DTRACE_LIB */ + +/** + * Descriptor table entry. + */ +#pragma pack(1) +typedef union X86DESC +{ +#ifndef VBOX_FOR_DTRACE_LIB + /** Generic descriptor view. */ + X86DESCGENERIC Gen; + /** Gate descriptor view. */ + X86DESCGATE Gate; +#endif + + /** 8 bit unsigned integer view. */ + uint8_t au8[8]; + /** 16 bit unsigned integer view. */ + uint16_t au16[4]; + /** 32 bit unsigned integer view. */ + uint32_t au32[2]; + /** 64 bit unsigned integer view. */ + uint64_t au64[1]; + /** Unsigned integer view. */ + uint64_t u; +} X86DESC; +#ifndef VBOX_FOR_DTRACE_LIB +AssertCompileSize(X86DESC, 8); +#endif +#pragma pack() +/** Pointer to descriptor table entry. */ +typedef X86DESC *PX86DESC; +/** Pointer to const descriptor table entry. */ +typedef const X86DESC *PCX86DESC; + +/** @def X86DESC_BASE + * Return the base address of a descriptor. + */ +#define X86DESC_BASE(a_pDesc) /*ASM-NOINC*/ \ + ( ((uint32_t)((a_pDesc)->Gen.u8BaseHigh2) << 24) \ + | ( (a_pDesc)->Gen.u8BaseHigh1 << 16) \ + | ( (a_pDesc)->Gen.u16BaseLow ) ) + +/** @def X86DESC_LIMIT + * Return the limit of a descriptor. + */ +#define X86DESC_LIMIT(a_pDesc) /*ASM-NOINC*/ \ + ( ((uint32_t)((a_pDesc)->Gen.u4LimitHigh) << 16) \ + | ( (a_pDesc)->Gen.u16LimitLow ) ) + +/** @def X86DESC_LIMIT_G + * Return the limit of a descriptor with the granularity bit taken into account. + * @returns Selector limit (uint32_t). + * @param a_pDesc Pointer to the descriptor. + */ +#define X86DESC_LIMIT_G(a_pDesc) /*ASM-NOINC*/ \ + ( (a_pDesc)->Gen.u1Granularity \ + ? ( ( ((uint32_t)(a_pDesc)->Gen.u4LimitHigh << 16) | (a_pDesc)->Gen.u16LimitLow ) << 12 ) | UINT32_C(0xfff) \ + : ((uint32_t)(a_pDesc)->Gen.u4LimitHigh << 16) | (a_pDesc)->Gen.u16LimitLow \ + ) + +/** @def X86DESC_GET_HID_ATTR + * Get the descriptor attributes for the hidden register. + */ +#define X86DESC_GET_HID_ATTR(a_pDesc) /*ASM-NOINC*/ \ + ( ((a_pDesc)->u >> (16+16+8)) & UINT32_C(0xf0ff) ) /** @todo do we have a define for 0xf0ff? */ + +#ifndef VBOX_FOR_DTRACE_LIB + +/** + * 64 bits generic descriptor table entry + * Note: most of these bits have no meaning in long mode. + */ +#pragma pack(1) +typedef struct X86DESC64GENERIC +{ + /** Limit - Low word - *IGNORED*. */ + unsigned u16LimitLow : 16; + /** Base address - low word. - *IGNORED* + * Don't try set this to 24 because MSC is doing stupid things then. */ + unsigned u16BaseLow : 16; + /** Base address - first 8 bits of high word. - *IGNORED* */ + unsigned u8BaseHigh1 : 8; + /** Segment Type. */ + unsigned u4Type : 4; + /** Descriptor Type. System(=0) or code/data selector */ + unsigned u1DescType : 1; + /** Descriptor Privilege level. */ + unsigned u2Dpl : 2; + /** Flags selector present(=1) or not. */ + unsigned u1Present : 1; + /** Segment limit 16-19. - *IGNORED* */ + unsigned u4LimitHigh : 4; + /** Available for system software. - *IGNORED* */ + unsigned u1Available : 1; + /** Long mode flag. */ + unsigned u1Long : 1; + /** This flags meaning depends on the segment type. Try make sense out + * of the intel manual yourself. */ + unsigned u1DefBig : 1; + /** Granularity of the limit. If set 4KB granularity is used, if + * clear byte. - *IGNORED* */ + unsigned u1Granularity : 1; + /** Base address - highest 8 bits. - *IGNORED* */ + unsigned u8BaseHigh2 : 8; + /** Base address - bits 63-32. */ + unsigned u32BaseHigh3 : 32; + unsigned u8Reserved : 8; + unsigned u5Zeros : 5; + unsigned u19Reserved : 19; +} X86DESC64GENERIC; +#pragma pack() +/** Pointer to a generic descriptor entry. */ +typedef X86DESC64GENERIC *PX86DESC64GENERIC; +/** Pointer to a const generic descriptor entry. */ +typedef const X86DESC64GENERIC *PCX86DESC64GENERIC; + +/** + * System descriptor table entry (64 bits) + * + * @remarks This is, save a couple of comments, identical to X86DESC64GENERIC... + */ +#pragma pack(1) +typedef struct X86DESC64SYSTEM +{ + /** Limit - Low word. */ + unsigned u16LimitLow : 16; + /** Base address - lowe word. + * Don't try set this to 24 because MSC is doing stupid things then. */ + unsigned u16BaseLow : 16; + /** Base address - first 8 bits of high word. */ + unsigned u8BaseHigh1 : 8; + /** Segment Type. */ + unsigned u4Type : 4; + /** Descriptor Type. System(=0) or code/data selector */ + unsigned u1DescType : 1; + /** Descriptor Privilege level. */ + unsigned u2Dpl : 2; + /** Flags selector present(=1) or not. */ + unsigned u1Present : 1; + /** Segment limit 16-19. */ + unsigned u4LimitHigh : 4; + /** Available for system software. */ + unsigned u1Available : 1; + /** Reserved - 0. */ + unsigned u1Reserved : 1; + /** This flags meaning depends on the segment type. Try make sense out + * of the intel manual yourself. */ + unsigned u1DefBig : 1; + /** Granularity of the limit. If set 4KB granularity is used, if + * clear byte. */ + unsigned u1Granularity : 1; + /** Base address - bits 31-24. */ + unsigned u8BaseHigh2 : 8; + /** Base address - bits 63-32. */ + unsigned u32BaseHigh3 : 32; + unsigned u8Reserved : 8; + unsigned u5Zeros : 5; + unsigned u19Reserved : 19; +} X86DESC64SYSTEM; +#pragma pack() +/** Pointer to a system descriptor entry. */ +typedef X86DESC64SYSTEM *PX86DESC64SYSTEM; +/** Pointer to a const system descriptor entry. */ +typedef const X86DESC64SYSTEM *PCX86DESC64SYSTEM; + +/** + * Call-, Interrupt-, Trap- or Task-gate descriptor (64-bit). + */ +typedef struct X86DESC64GATE +{ + /** Target code segment offset - Low word. */ + unsigned u16OffsetLow : 16; + /** Target code segment selector. */ + unsigned u16Sel : 16; + /** Interrupt stack table for interrupt- and trap-gates. + * Ignored by call-gates. */ + unsigned u3IST : 3; + /** Reserved / ignored. */ + unsigned u5Reserved : 5; + /** Segment Type. */ + unsigned u4Type : 4; + /** Descriptor Type (0 = system). */ + unsigned u1DescType : 1; + /** Descriptor Privilege level. */ + unsigned u2Dpl : 2; + /** Flags selector present(=1) or not. */ + unsigned u1Present : 1; + /** Target code segment offset - High word. + * Ignored if task-gate. */ + unsigned u16OffsetHigh : 16; + /** Target code segment offset - Top dword. + * Ignored if task-gate. */ + unsigned u32OffsetTop : 32; + /** Reserved / ignored / must be zero. + * For call-gates bits 8 thru 12 must be zero, the other gates ignores this. */ + unsigned u32Reserved : 32; +} X86DESC64GATE; +AssertCompileSize(X86DESC64GATE, 16); +/** Pointer to a Call-, Interrupt-, Trap- or Task-gate descriptor entry. */ +typedef X86DESC64GATE *PX86DESC64GATE; +/** Pointer to a const Call-, Interrupt-, Trap- or Task-gate descriptor entry. */ +typedef const X86DESC64GATE *PCX86DESC64GATE; + +#endif /* VBOX_FOR_DTRACE_LIB */ + +/** + * Descriptor table entry. + */ +#pragma pack(1) +typedef union X86DESC64 +{ +#ifndef VBOX_FOR_DTRACE_LIB + /** Generic descriptor view. */ + X86DESC64GENERIC Gen; + /** System descriptor view. */ + X86DESC64SYSTEM System; + /** Gate descriptor view. */ + X86DESC64GATE Gate; +#endif + + /** 8 bit unsigned integer view. */ + uint8_t au8[16]; + /** 16 bit unsigned integer view. */ + uint16_t au16[8]; + /** 32 bit unsigned integer view. */ + uint32_t au32[4]; + /** 64 bit unsigned integer view. */ + uint64_t au64[2]; +} X86DESC64; +#ifndef VBOX_FOR_DTRACE_LIB +AssertCompileSize(X86DESC64, 16); +#endif +#pragma pack() +/** Pointer to descriptor table entry. */ +typedef X86DESC64 *PX86DESC64; +/** Pointer to const descriptor table entry. */ +typedef const X86DESC64 *PCX86DESC64; + +/** @def X86DESC64_BASE + * Return the base of a 64-bit descriptor. + */ +#define X86DESC64_BASE(a_pDesc) /*ASM-NOINC*/ \ + ( ((uint64_t)((a_pDesc)->Gen.u32BaseHigh3) << 32) \ + | ((uint32_t)((a_pDesc)->Gen.u8BaseHigh2) << 24) \ + | ( (a_pDesc)->Gen.u8BaseHigh1 << 16) \ + | ( (a_pDesc)->Gen.u16BaseLow ) ) + + + +/** @name Host system descriptor table entry - Use with care! + * @{ */ +/** Host system descriptor table entry. */ +#if HC_ARCH_BITS == 64 +typedef X86DESC64 X86DESCHC; +#else +typedef X86DESC X86DESCHC; +#endif +/** Pointer to a host system descriptor table entry. */ +#if HC_ARCH_BITS == 64 +typedef PX86DESC64 PX86DESCHC; +#else +typedef PX86DESC PX86DESCHC; +#endif +/** Pointer to a const host system descriptor table entry. */ +#if HC_ARCH_BITS == 64 +typedef PCX86DESC64 PCX86DESCHC; +#else +typedef PCX86DESC PCX86DESCHC; +#endif +/** @} */ + + +/** @name Selector Descriptor Types. + * @{ + */ + +/** @name Non-System Selector Types. + * @{ */ +/** Code(=set)/Data(=clear) bit. */ +#define X86_SEL_TYPE_CODE 8 +/** Memory(=set)/System(=clear) bit. */ +#define X86_SEL_TYPE_MEMORY RT_BIT(4) +/** Accessed bit. */ +#define X86_SEL_TYPE_ACCESSED 1 +/** Expand down bit (for data selectors only). */ +#define X86_SEL_TYPE_DOWN 4 +/** Conforming bit (for code selectors only). */ +#define X86_SEL_TYPE_CONF 4 +/** Write bit (for data selectors only). */ +#define X86_SEL_TYPE_WRITE 2 +/** Read bit (for code selectors only). */ +#define X86_SEL_TYPE_READ 2 +/** The bit number of the code segment read bit (relative to u4Type). */ +#define X86_SEL_TYPE_READ_BIT 1 + +/** Read only selector type. */ +#define X86_SEL_TYPE_RO 0 +/** Accessed read only selector type. */ +#define X86_SEL_TYPE_RO_ACC (0 | X86_SEL_TYPE_ACCESSED) +/** Read write selector type. */ +#define X86_SEL_TYPE_RW 2 +/** Accessed read write selector type. */ +#define X86_SEL_TYPE_RW_ACC (2 | X86_SEL_TYPE_ACCESSED) +/** Expand down read only selector type. */ +#define X86_SEL_TYPE_RO_DOWN 4 +/** Accessed expand down read only selector type. */ +#define X86_SEL_TYPE_RO_DOWN_ACC (4 | X86_SEL_TYPE_ACCESSED) +/** Expand down read write selector type. */ +#define X86_SEL_TYPE_RW_DOWN 6 +/** Accessed expand down read write selector type. */ +#define X86_SEL_TYPE_RW_DOWN_ACC (6 | X86_SEL_TYPE_ACCESSED) +/** Execute only selector type. */ +#define X86_SEL_TYPE_EO (0 | X86_SEL_TYPE_CODE) +/** Accessed execute only selector type. */ +#define X86_SEL_TYPE_EO_ACC (0 | X86_SEL_TYPE_CODE | X86_SEL_TYPE_ACCESSED) +/** Execute and read selector type. */ +#define X86_SEL_TYPE_ER (2 | X86_SEL_TYPE_CODE) +/** Accessed execute and read selector type. */ +#define X86_SEL_TYPE_ER_ACC (2 | X86_SEL_TYPE_CODE | X86_SEL_TYPE_ACCESSED) +/** Conforming execute only selector type. */ +#define X86_SEL_TYPE_EO_CONF (4 | X86_SEL_TYPE_CODE) +/** Accessed Conforming execute only selector type. */ +#define X86_SEL_TYPE_EO_CONF_ACC (4 | X86_SEL_TYPE_CODE | X86_SEL_TYPE_ACCESSED) +/** Conforming execute and write selector type. */ +#define X86_SEL_TYPE_ER_CONF (6 | X86_SEL_TYPE_CODE) +/** Accessed Conforming execute and write selector type. */ +#define X86_SEL_TYPE_ER_CONF_ACC (6 | X86_SEL_TYPE_CODE | X86_SEL_TYPE_ACCESSED) +/** @} */ + + +/** @name System Selector Types. + * @{ */ +/** The TSS busy bit mask. */ +#define X86_SEL_TYPE_SYS_TSS_BUSY_MASK 2 + +/** Undefined system selector type. */ +#define X86_SEL_TYPE_SYS_UNDEFINED 0 +/** 286 TSS selector. */ +#define X86_SEL_TYPE_SYS_286_TSS_AVAIL 1 +/** LDT selector. */ +#define X86_SEL_TYPE_SYS_LDT 2 +/** 286 TSS selector - Busy. */ +#define X86_SEL_TYPE_SYS_286_TSS_BUSY 3 +/** 286 Callgate selector. */ +#define X86_SEL_TYPE_SYS_286_CALL_GATE 4 +/** Taskgate selector. */ +#define X86_SEL_TYPE_SYS_TASK_GATE 5 +/** 286 Interrupt gate selector. */ +#define X86_SEL_TYPE_SYS_286_INT_GATE 6 +/** 286 Trapgate selector. */ +#define X86_SEL_TYPE_SYS_286_TRAP_GATE 7 +/** Undefined system selector. */ +#define X86_SEL_TYPE_SYS_UNDEFINED2 8 +/** 386 TSS selector. */ +#define X86_SEL_TYPE_SYS_386_TSS_AVAIL 9 +/** Undefined system selector. */ +#define X86_SEL_TYPE_SYS_UNDEFINED3 0xA +/** 386 TSS selector - Busy. */ +#define X86_SEL_TYPE_SYS_386_TSS_BUSY 0xB +/** 386 Callgate selector. */ +#define X86_SEL_TYPE_SYS_386_CALL_GATE 0xC +/** Undefined system selector. */ +#define X86_SEL_TYPE_SYS_UNDEFINED4 0xD +/** 386 Interruptgate selector. */ +#define X86_SEL_TYPE_SYS_386_INT_GATE 0xE +/** 386 Trapgate selector. */ +#define X86_SEL_TYPE_SYS_386_TRAP_GATE 0xF +/** @} */ + +/** @name AMD64 System Selector Types. + * @{ */ +/** LDT selector. */ +#define AMD64_SEL_TYPE_SYS_LDT 2 +/** TSS selector - Busy. */ +#define AMD64_SEL_TYPE_SYS_TSS_AVAIL 9 +/** TSS selector - Busy. */ +#define AMD64_SEL_TYPE_SYS_TSS_BUSY 0xB +/** Callgate selector. */ +#define AMD64_SEL_TYPE_SYS_CALL_GATE 0xC +/** Interruptgate selector. */ +#define AMD64_SEL_TYPE_SYS_INT_GATE 0xE +/** Trapgate selector. */ +#define AMD64_SEL_TYPE_SYS_TRAP_GATE 0xF +/** @} */ + +/** @} */ + + +/** @name Descriptor Table Entry Flag Masks. + * These are for the 2nd 32-bit word of a descriptor. + * @{ */ +/** Bits 8-11 - TYPE - Descriptor type mask. */ +#define X86_DESC_TYPE_MASK (RT_BIT(8) | RT_BIT(9) | RT_BIT(10) | RT_BIT(11)) +/** Bit 12 - S - System (=0) or Code/Data (=1). */ +#define X86_DESC_S RT_BIT(12) +/** Bits 13-14 - DPL - Descriptor Privilege Level. */ +#define X86_DESC_DPL (RT_BIT(13) | RT_BIT(14)) +/** Bit 15 - P - Present. */ +#define X86_DESC_P RT_BIT(15) +/** Bit 20 - AVL - Available for system software. */ +#define X86_DESC_AVL RT_BIT(20) +/** Bit 22 - DB - Default operation size. 0 = 16 bit, 1 = 32 bit. */ +#define X86_DESC_DB RT_BIT(22) +/** Bit 23 - G - Granularity of the limit. If set 4KB granularity is + * used, if clear byte. */ +#define X86_DESC_G RT_BIT(23) +/** @} */ + +/** @} */ + + +/** @name Task Segments. + * @{ + */ + +/** + * The minimum TSS descriptor limit for 286 tasks. + */ +#define X86_SEL_TYPE_SYS_286_TSS_LIMIT_MIN 0x2b + +/** + * The minimum TSS descriptor segment limit for 386 tasks. + */ +#define X86_SEL_TYPE_SYS_386_TSS_LIMIT_MIN 0x67 + +/** + * 16-bit Task Segment (TSS). + */ +#pragma pack(1) +typedef struct X86TSS16 +{ + /** Back link to previous task. (static) */ + RTSEL selPrev; + /** Ring-0 stack pointer. (static) */ + uint16_t sp0; + /** Ring-0 stack segment. (static) */ + RTSEL ss0; + /** Ring-1 stack pointer. (static) */ + uint16_t sp1; + /** Ring-1 stack segment. (static) */ + RTSEL ss1; + /** Ring-2 stack pointer. (static) */ + uint16_t sp2; + /** Ring-2 stack segment. (static) */ + RTSEL ss2; + /** IP before task switch. */ + uint16_t ip; + /** FLAGS before task switch. */ + uint16_t flags; + /** AX before task switch. */ + uint16_t ax; + /** CX before task switch. */ + uint16_t cx; + /** DX before task switch. */ + uint16_t dx; + /** BX before task switch. */ + uint16_t bx; + /** SP before task switch. */ + uint16_t sp; + /** BP before task switch. */ + uint16_t bp; + /** SI before task switch. */ + uint16_t si; + /** DI before task switch. */ + uint16_t di; + /** ES before task switch. */ + RTSEL es; + /** CS before task switch. */ + RTSEL cs; + /** SS before task switch. */ + RTSEL ss; + /** DS before task switch. */ + RTSEL ds; + /** LDTR before task switch. */ + RTSEL selLdt; +} X86TSS16; +#ifndef VBOX_FOR_DTRACE_LIB +AssertCompileSize(X86TSS16, X86_SEL_TYPE_SYS_286_TSS_LIMIT_MIN + 1); +#endif +#pragma pack() +/** Pointer to a 16-bit task segment. */ +typedef X86TSS16 *PX86TSS16; +/** Pointer to a const 16-bit task segment. */ +typedef const X86TSS16 *PCX86TSS16; + + +/** + * 32-bit Task Segment (TSS). + */ +#pragma pack(1) +typedef struct X86TSS32 +{ + /** Back link to previous task. (static) */ + RTSEL selPrev; + uint16_t padding1; + /** Ring-0 stack pointer. (static) */ + uint32_t esp0; + /** Ring-0 stack segment. (static) */ + RTSEL ss0; + uint16_t padding_ss0; + /** Ring-1 stack pointer. (static) */ + uint32_t esp1; + /** Ring-1 stack segment. (static) */ + RTSEL ss1; + uint16_t padding_ss1; + /** Ring-2 stack pointer. (static) */ + uint32_t esp2; + /** Ring-2 stack segment. (static) */ + RTSEL ss2; + uint16_t padding_ss2; + /** Page directory for the task. (static) */ + uint32_t cr3; + /** EIP before task switch. */ + uint32_t eip; + /** EFLAGS before task switch. */ + uint32_t eflags; + /** EAX before task switch. */ + uint32_t eax; + /** ECX before task switch. */ + uint32_t ecx; + /** EDX before task switch. */ + uint32_t edx; + /** EBX before task switch. */ + uint32_t ebx; + /** ESP before task switch. */ + uint32_t esp; + /** EBP before task switch. */ + uint32_t ebp; + /** ESI before task switch. */ + uint32_t esi; + /** EDI before task switch. */ + uint32_t edi; + /** ES before task switch. */ + RTSEL es; + uint16_t padding_es; + /** CS before task switch. */ + RTSEL cs; + uint16_t padding_cs; + /** SS before task switch. */ + RTSEL ss; + uint16_t padding_ss; + /** DS before task switch. */ + RTSEL ds; + uint16_t padding_ds; + /** FS before task switch. */ + RTSEL fs; + uint16_t padding_fs; + /** GS before task switch. */ + RTSEL gs; + uint16_t padding_gs; + /** LDTR before task switch. */ + RTSEL selLdt; + uint16_t padding_ldt; + /** Debug trap flag */ + uint16_t fDebugTrap; + /** Offset relative to the TSS of the start of the I/O Bitmap + * and the end of the interrupt redirection bitmap. */ + uint16_t offIoBitmap; + /** 32 bytes for the virtual interrupt redirection bitmap. (VME) */ + uint8_t IntRedirBitmap[32]; +} X86TSS32; +#pragma pack() +/** Pointer to task segment. */ +typedef X86TSS32 *PX86TSS32; +/** Pointer to const task segment. */ +typedef const X86TSS32 *PCX86TSS32; + +/** + * 64-bit Task segment. + */ +#pragma pack(1) +typedef struct X86TSS64 +{ + /** Reserved. */ + uint32_t u32Reserved; + /** Ring-0 stack pointer. (static) */ + uint64_t rsp0; + /** Ring-1 stack pointer. (static) */ + uint64_t rsp1; + /** Ring-2 stack pointer. (static) */ + uint64_t rsp2; + /** Reserved. */ + uint32_t u32Reserved2[2]; + /* IST */ + uint64_t ist1; + uint64_t ist2; + uint64_t ist3; + uint64_t ist4; + uint64_t ist5; + uint64_t ist6; + uint64_t ist7; + /* Reserved. */ + uint16_t u16Reserved[5]; + /** Offset relative to the TSS of the start of the I/O Bitmap + * and the end of the interrupt redirection bitmap. */ + uint16_t offIoBitmap; + /** 32 bytes for the virtual interrupt redirection bitmap. (VME) */ + uint8_t IntRedirBitmap[32]; +} X86TSS64; +#pragma pack() +/** Pointer to a 64-bit task segment. */ +typedef X86TSS64 *PX86TSS64; +/** Pointer to a const 64-bit task segment. */ +typedef const X86TSS64 *PCX86TSS64; +#ifndef VBOX_FOR_DTRACE_LIB +AssertCompileSize(X86TSS64, 136); +#endif + +/** @} */ + + +/** @name Selectors. + * @{ + */ + +/** + * The shift used to convert a selector from and to index an index (C). + */ +#define X86_SEL_SHIFT 3 + +/** + * The mask used to mask off the table indicator and RPL of an selector. + */ +#define X86_SEL_MASK 0xfff8U + +/** + * The mask used to mask off the RPL of an selector. + * This is suitable for checking for NULL selectors. + */ +#define X86_SEL_MASK_OFF_RPL 0xfffcU + +/** + * The bit indicating that a selector is in the LDT and not in the GDT. + */ +#define X86_SEL_LDT 0x0004U + +/** + * The bit mask for getting the RPL of a selector. + */ +#define X86_SEL_RPL 0x0003U + +/** + * The mask covering both RPL and LDT. + * This is incidentally the same as sizeof(X86DESC) - 1, so good for limit + * checks. + */ +#define X86_SEL_RPL_LDT 0x0007U + +/** @} */ + + +/** + * x86 Exceptions/Faults/Traps. + */ +typedef enum X86XCPT +{ + /** \#DE - Divide error. */ + X86_XCPT_DE = 0x00, + /** \#DB - Debug event (single step, DRx, ..) */ + X86_XCPT_DB = 0x01, + /** NMI - Non-Maskable Interrupt */ + X86_XCPT_NMI = 0x02, + /** \#BP - Breakpoint (INT3). */ + X86_XCPT_BP = 0x03, + /** \#OF - Overflow (INTO). */ + X86_XCPT_OF = 0x04, + /** \#BR - Bound range exceeded (BOUND). */ + X86_XCPT_BR = 0x05, + /** \#UD - Undefined opcode. */ + X86_XCPT_UD = 0x06, + /** \#NM - Device not available (math coprocessor device). */ + X86_XCPT_NM = 0x07, + /** \#DF - Double fault. */ + X86_XCPT_DF = 0x08, + /** ??? - Coprocessor segment overrun (obsolete). */ + X86_XCPT_CO_SEG_OVERRUN = 0x09, + /** \#TS - Taskswitch (TSS). */ + X86_XCPT_TS = 0x0a, + /** \#NP - Segment no present. */ + X86_XCPT_NP = 0x0b, + /** \#SS - Stack segment fault. */ + X86_XCPT_SS = 0x0c, + /** \#GP - General protection fault. */ + X86_XCPT_GP = 0x0d, + /** \#PF - Page fault. */ + X86_XCPT_PF = 0x0e, + /* 0x0f is reserved (to avoid conflict with spurious interrupts in BIOS setup). */ + /** \#MF - Math fault (FPU). */ + X86_XCPT_MF = 0x10, + /** \#AC - Alignment check. */ + X86_XCPT_AC = 0x11, + /** \#MC - Machine check. */ + X86_XCPT_MC = 0x12, + /** \#XF - SIMD Floating-Pointer Exception. */ + X86_XCPT_XF = 0x13, + /** \#VE - Virtualization Exception. */ + X86_XCPT_VE = 0x14, + /** \#SX - Security Exception. */ + X86_XCPT_SX = 0x1f +} X86XCPT; +/** Pointer to a x86 exception code. */ +typedef X86XCPT *PX86XCPT; +/** Pointer to a const x86 exception code. */ +typedef const X86XCPT *PCX86XCPT; +/** The maximum exception value. */ +#define X86_XCPT_MAX (X86_XCPT_SX) + + +/** @name Trap Error Codes + * @{ + */ +/** External indicator. */ +#define X86_TRAP_ERR_EXTERNAL 1 +/** IDT indicator. */ +#define X86_TRAP_ERR_IDT 2 +/** Descriptor table indicator - If set LDT, if clear GDT. */ +#define X86_TRAP_ERR_TI 4 +/** Mask for getting the selector. */ +#define X86_TRAP_ERR_SEL_MASK 0xfff8 +/** Shift for getting the selector table index (C type index). */ +#define X86_TRAP_ERR_SEL_SHIFT 3 +/** @} */ + + +/** @name \#PF Trap Error Codes + * @{ + */ +/** Bit 0 - P - Not present (clear) or page level protection (set) fault. */ +#define X86_TRAP_PF_P RT_BIT(0) +/** Bit 1 - R/W - Read (clear) or write (set) access. */ +#define X86_TRAP_PF_RW RT_BIT(1) +/** Bit 2 - U/S - CPU executing in user mode (set) or supervisor mode (clear). */ +#define X86_TRAP_PF_US RT_BIT(2) +/** Bit 3 - RSVD- Reserved bit violation (set), i.e. reserved bit was set to 1. */ +#define X86_TRAP_PF_RSVD RT_BIT(3) +/** Bit 4 - I/D - Instruction fetch (set) / Data access (clear) - PAE + NXE. */ +#define X86_TRAP_PF_ID RT_BIT(4) +/** Bit 5 - PK - Protection-key violation (AMD64 mode only). */ +#define X86_TRAP_PF_PK RT_BIT(5) +/** @} */ + +#pragma pack(1) +/** + * 16-bit IDTR. + */ +typedef struct X86IDTR16 +{ + /** Offset. */ + uint16_t offSel; + /** Selector. */ + uint16_t uSel; +} X86IDTR16, *PX86IDTR16; +#pragma pack() + +#pragma pack(1) +/** + * 32-bit IDTR/GDTR. + */ +typedef struct X86XDTR32 +{ + /** Size of the descriptor table. */ + uint16_t cb; + /** Address of the descriptor table. */ +#ifndef VBOX_FOR_DTRACE_LIB + uint32_t uAddr; +#else + uint16_t au16Addr[2]; +#endif +} X86XDTR32, *PX86XDTR32; +#pragma pack() + +#pragma pack(1) +/** + * 64-bit IDTR/GDTR. + */ +typedef struct X86XDTR64 +{ + /** Size of the descriptor table. */ + uint16_t cb; + /** Address of the descriptor table. */ +#ifndef VBOX_FOR_DTRACE_LIB + uint64_t uAddr; +#else + uint16_t au16Addr[4]; +#endif +} X86XDTR64, *PX86XDTR64; +#pragma pack() + + +/** @name ModR/M + * @{ */ +#define X86_MODRM_RM_MASK UINT8_C(0x07) +#define X86_MODRM_REG_MASK UINT8_C(0x38) +#define X86_MODRM_REG_SMASK UINT8_C(0x07) +#define X86_MODRM_REG_SHIFT 3 +#define X86_MODRM_MOD_MASK UINT8_C(0xc0) +#define X86_MODRM_MOD_SMASK UINT8_C(0x03) +#define X86_MODRM_MOD_SHIFT 6 +#ifndef VBOX_FOR_DTRACE_LIB +AssertCompile((X86_MODRM_RM_MASK | X86_MODRM_REG_MASK | X86_MODRM_MOD_MASK) == 0xff); +AssertCompile((X86_MODRM_REG_MASK >> X86_MODRM_REG_SHIFT) == X86_MODRM_REG_SMASK); +AssertCompile((X86_MODRM_MOD_MASK >> X86_MODRM_MOD_SHIFT) == X86_MODRM_MOD_SMASK); +#endif +/** @} */ + +/** @name SIB + * @{ */ +#define X86_SIB_BASE_MASK UINT8_C(0x07) +#define X86_SIB_INDEX_MASK UINT8_C(0x38) +#define X86_SIB_INDEX_SMASK UINT8_C(0x07) +#define X86_SIB_INDEX_SHIFT 3 +#define X86_SIB_SCALE_MASK UINT8_C(0xc0) +#define X86_SIB_SCALE_SMASK UINT8_C(0x03) +#define X86_SIB_SCALE_SHIFT 6 +#ifndef VBOX_FOR_DTRACE_LIB +AssertCompile((X86_SIB_BASE_MASK | X86_SIB_INDEX_MASK | X86_SIB_SCALE_MASK) == 0xff); +AssertCompile((X86_SIB_INDEX_MASK >> X86_SIB_INDEX_SHIFT) == X86_SIB_INDEX_SMASK); +AssertCompile((X86_SIB_SCALE_MASK >> X86_SIB_SCALE_SHIFT) == X86_SIB_SCALE_SMASK); +#endif +/** @} */ + +/** @name General register indexes + * @{ */ +#define X86_GREG_xAX 0 +#define X86_GREG_xCX 1 +#define X86_GREG_xDX 2 +#define X86_GREG_xBX 3 +#define X86_GREG_xSP 4 +#define X86_GREG_xBP 5 +#define X86_GREG_xSI 6 +#define X86_GREG_xDI 7 +#define X86_GREG_x8 8 +#define X86_GREG_x9 9 +#define X86_GREG_x10 10 +#define X86_GREG_x11 11 +#define X86_GREG_x12 12 +#define X86_GREG_x13 13 +#define X86_GREG_x14 14 +#define X86_GREG_x15 15 +/** @} */ + +/** @name X86_SREG_XXX - Segment register indexes. + * @{ */ +#define X86_SREG_ES 0 +#define X86_SREG_CS 1 +#define X86_SREG_SS 2 +#define X86_SREG_DS 3 +#define X86_SREG_FS 4 +#define X86_SREG_GS 5 +/** @} */ +/** Segment register count. */ +#define X86_SREG_COUNT 6 + + +/** @name X86_OP_XXX - Prefixes + * @{ */ +#define X86_OP_PRF_CS UINT8_C(0x2e) +#define X86_OP_PRF_SS UINT8_C(0x36) +#define X86_OP_PRF_DS UINT8_C(0x3e) +#define X86_OP_PRF_ES UINT8_C(0x26) +#define X86_OP_PRF_FS UINT8_C(0x64) +#define X86_OP_PRF_GS UINT8_C(0x65) +#define X86_OP_PRF_SIZE_OP UINT8_C(0x66) +#define X86_OP_PRF_SIZE_ADDR UINT8_C(0x67) +#define X86_OP_PRF_LOCK UINT8_C(0xf0) +#define X86_OP_PRF_REPZ UINT8_C(0xf2) +#define X86_OP_PRF_REPNZ UINT8_C(0xf3) +#define X86_OP_REX_B UINT8_C(0x41) +#define X86_OP_REX_X UINT8_C(0x42) +#define X86_OP_REX_R UINT8_C(0x44) +#define X86_OP_REX_W UINT8_C(0x48) +/** @} */ + + +/** @} */ + +#endif + --- linux-raspi2-4.2.0.orig/ubuntu/vbox/r0drv/alloc-r0drv.c +++ linux-raspi2-4.2.0/ubuntu/vbox/r0drv/alloc-r0drv.c @@ -0,0 +1,430 @@ +/* $Id: alloc-r0drv.cpp $ */ +/** @file + * IPRT - Memory Allocation, Ring-0 Driver. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + + +/******************************************************************************* +* Header Files * +*******************************************************************************/ +#define RTMEM_NO_WRAP_TO_EF_APIS +#include +#include "internal/iprt.h" + +#if defined(RT_ARCH_AMD64) || defined(RT_ARCH_X86) +# include +#endif +#include +#ifdef RT_MORE_STRICT +# include +#endif +#include +#include +#include +#include "r0drv/alloc-r0drv.h" + + +/******************************************************************************* +* Defined Constants And Macros * +*******************************************************************************/ +#ifdef RT_STRICT +# define RTR0MEM_STRICT +#endif + +#ifdef RTR0MEM_STRICT +# define RTR0MEM_FENCE_EXTRA 16 +#else +# define RTR0MEM_FENCE_EXTRA 0 +#endif + + +/******************************************************************************* +* Global Variables * +*******************************************************************************/ +#ifdef RTR0MEM_STRICT +/** Fence data. */ +static uint8_t const g_abFence[RTR0MEM_FENCE_EXTRA] = +{ + 0x77, 0x88, 0x66, 0x99, 0x55, 0xaa, 0x44, 0xbb, + 0x33, 0xcc, 0x22, 0xdd, 0x11, 0xee, 0x00, 0xff +}; +#endif + + +/** + * Wrapper around rtR0MemAllocEx. + * + * @returns Pointer to the allocated memory block header. + * @param cb The number of bytes to allocate (sans header). + * @param fFlags The allocation flags. + */ +DECLINLINE(PRTMEMHDR) rtR0MemAlloc(size_t cb, uint32_t fFlags) +{ + PRTMEMHDR pHdr; + int rc = rtR0MemAllocEx(cb, fFlags, &pHdr); + if (RT_FAILURE(rc)) + return NULL; + return pHdr; +} + + +RTDECL(void *) RTMemTmpAllocTag(size_t cb, const char *pszTag) RT_NO_THROW +{ + return RTMemAllocTag(cb, pszTag); +} +RT_EXPORT_SYMBOL(RTMemTmpAllocTag); + + +RTDECL(void *) RTMemTmpAllocZTag(size_t cb, const char *pszTag) RT_NO_THROW +{ + return RTMemAllocZTag(cb, pszTag); +} +RT_EXPORT_SYMBOL(RTMemTmpAllocZTag); + + +RTDECL(void) RTMemTmpFree(void *pv) RT_NO_THROW +{ + return RTMemFree(pv); +} +RT_EXPORT_SYMBOL(RTMemTmpFree); + + + + + +RTDECL(void *) RTMemAllocTag(size_t cb, const char *pszTag) RT_NO_THROW +{ + PRTMEMHDR pHdr; + RT_ASSERT_INTS_ON(); + + pHdr = rtR0MemAlloc(cb + RTR0MEM_FENCE_EXTRA, 0); + if (pHdr) + { +#ifdef RTR0MEM_STRICT + pHdr->cbReq = (uint32_t)cb; Assert(pHdr->cbReq == cb); + memcpy((uint8_t *)(pHdr + 1) + cb, &g_abFence[0], RTR0MEM_FENCE_EXTRA); +#endif + return pHdr + 1; + } + return NULL; +} +RT_EXPORT_SYMBOL(RTMemAllocTag); + + +RTDECL(void *) RTMemAllocZTag(size_t cb, const char *pszTag) RT_NO_THROW +{ + PRTMEMHDR pHdr; + RT_ASSERT_INTS_ON(); + + pHdr = rtR0MemAlloc(cb + RTR0MEM_FENCE_EXTRA, RTMEMHDR_FLAG_ZEROED); + if (pHdr) + { +#ifdef RTR0MEM_STRICT + pHdr->cbReq = (uint32_t)cb; Assert(pHdr->cbReq == cb); + memcpy((uint8_t *)(pHdr + 1) + cb, &g_abFence[0], RTR0MEM_FENCE_EXTRA); + return memset(pHdr + 1, 0, cb); +#else + return memset(pHdr + 1, 0, pHdr->cb); +#endif + } + return NULL; +} +RT_EXPORT_SYMBOL(RTMemAllocZTag); + + +RTDECL(void *) RTMemAllocVarTag(size_t cbUnaligned, const char *pszTag) +{ + size_t cbAligned; + if (cbUnaligned >= 16) + cbAligned = RT_ALIGN_Z(cbUnaligned, 16); + else + cbAligned = RT_ALIGN_Z(cbUnaligned, sizeof(void *)); + return RTMemAllocTag(cbAligned, pszTag); +} +RT_EXPORT_SYMBOL(RTMemAllocVarTag); + + +RTDECL(void *) RTMemAllocZVarTag(size_t cbUnaligned, const char *pszTag) +{ + size_t cbAligned; + if (cbUnaligned >= 16) + cbAligned = RT_ALIGN_Z(cbUnaligned, 16); + else + cbAligned = RT_ALIGN_Z(cbUnaligned, sizeof(void *)); + return RTMemAllocZTag(cbAligned, pszTag); +} +RT_EXPORT_SYMBOL(RTMemAllocZVarTag); + + +RTDECL(void *) RTMemReallocTag(void *pvOld, size_t cbNew, const char *pszTag) RT_NO_THROW +{ + PRTMEMHDR pHdrOld; + + /* Free. */ + if (!cbNew && pvOld) + { + RTMemFree(pvOld); + return NULL; + } + + /* Alloc. */ + if (!pvOld) + return RTMemAllocTag(cbNew, pszTag); + + /* + * Realloc. + */ + pHdrOld = (PRTMEMHDR)pvOld - 1; + RT_ASSERT_PREEMPTIBLE(); + + if (pHdrOld->u32Magic == RTMEMHDR_MAGIC) + { + PRTMEMHDR pHdrNew; + + /* If there is sufficient space in the old block and we don't cause + substantial internal fragmentation, reuse the old block. */ + if ( pHdrOld->cb >= cbNew + RTR0MEM_FENCE_EXTRA + && pHdrOld->cb - (cbNew + RTR0MEM_FENCE_EXTRA) <= 128) + { + pHdrOld->cbReq = (uint32_t)cbNew; Assert(pHdrOld->cbReq == cbNew); +#ifdef RTR0MEM_STRICT + memcpy((uint8_t *)(pHdrOld + 1) + cbNew, &g_abFence[0], RTR0MEM_FENCE_EXTRA); +#endif + return pvOld; + } + + /* Allocate a new block and copy over the content. */ + pHdrNew = rtR0MemAlloc(cbNew + RTR0MEM_FENCE_EXTRA, 0); + if (pHdrNew) + { + size_t cbCopy = RT_MIN(pHdrOld->cb, pHdrNew->cb); + memcpy(pHdrNew + 1, pvOld, cbCopy); +#ifdef RTR0MEM_STRICT + pHdrNew->cbReq = (uint32_t)cbNew; Assert(pHdrNew->cbReq == cbNew); + memcpy((uint8_t *)(pHdrNew + 1) + cbNew, &g_abFence[0], RTR0MEM_FENCE_EXTRA); + AssertReleaseMsg(!memcmp((uint8_t *)(pHdrOld + 1) + pHdrOld->cbReq, &g_abFence[0], RTR0MEM_FENCE_EXTRA), + ("pHdr=%p pvOld=%p cbReq=%u cb=%u cbNew=%zu fFlags=%#x\n" + "fence: %.*Rhxs\n" + "expected: %.*Rhxs\n", + pHdrOld, pvOld, pHdrOld->cbReq, pHdrOld->cb, cbNew, pHdrOld->fFlags, + RTR0MEM_FENCE_EXTRA, (uint8_t *)(pHdrOld + 1) + pHdrOld->cbReq, + RTR0MEM_FENCE_EXTRA, &g_abFence[0])); +#endif + rtR0MemFree(pHdrOld); + return pHdrNew + 1; + } + } + else + AssertMsgFailed(("pHdrOld->u32Magic=%RX32 pvOld=%p cbNew=%#zx\n", pHdrOld->u32Magic, pvOld, cbNew)); + + return NULL; +} +RT_EXPORT_SYMBOL(RTMemReallocTag); + + +RTDECL(void) RTMemFree(void *pv) RT_NO_THROW +{ + PRTMEMHDR pHdr; + RT_ASSERT_INTS_ON(); + + if (!pv) + return; + pHdr = (PRTMEMHDR)pv - 1; + if (pHdr->u32Magic == RTMEMHDR_MAGIC) + { + Assert(!(pHdr->fFlags & RTMEMHDR_FLAG_ALLOC_EX)); + Assert(!(pHdr->fFlags & RTMEMHDR_FLAG_EXEC)); +#ifdef RTR0MEM_STRICT + AssertReleaseMsg(!memcmp((uint8_t *)(pHdr + 1) + pHdr->cbReq, &g_abFence[0], RTR0MEM_FENCE_EXTRA), + ("pHdr=%p pv=%p cbReq=%u cb=%u fFlags=%#x\n" + "fence: %.*Rhxs\n" + "expected: %.*Rhxs\n", + pHdr, pv, pHdr->cbReq, pHdr->cb, pHdr->fFlags, + RTR0MEM_FENCE_EXTRA, (uint8_t *)(pHdr + 1) + pHdr->cbReq, + RTR0MEM_FENCE_EXTRA, &g_abFence[0])); +#endif + rtR0MemFree(pHdr); + } + else + AssertMsgFailed(("pHdr->u32Magic=%RX32 pv=%p\n", pHdr->u32Magic, pv)); +} +RT_EXPORT_SYMBOL(RTMemFree); + + + + + + +RTDECL(void *) RTMemExecAllocTag(size_t cb, const char *pszTag) RT_NO_THROW +{ + PRTMEMHDR pHdr; +#ifdef RT_OS_SOLARIS /** @todo figure out why */ + RT_ASSERT_INTS_ON(); +#else + RT_ASSERT_PREEMPTIBLE(); +#endif + + pHdr = rtR0MemAlloc(cb + RTR0MEM_FENCE_EXTRA, RTMEMHDR_FLAG_EXEC); + if (pHdr) + { +#ifdef RTR0MEM_STRICT + pHdr->cbReq = (uint32_t)cb; Assert(pHdr->cbReq == cb); + memcpy((uint8_t *)(pHdr + 1) + cb, &g_abFence[0], RTR0MEM_FENCE_EXTRA); +#endif + return pHdr + 1; + } + return NULL; +} +RT_EXPORT_SYMBOL(RTMemExecAllocTag); + + +RTDECL(void) RTMemExecFree(void *pv, size_t cb) RT_NO_THROW +{ + PRTMEMHDR pHdr; + RT_ASSERT_INTS_ON(); + + if (!pv) + return; + pHdr = (PRTMEMHDR)pv - 1; + if (pHdr->u32Magic == RTMEMHDR_MAGIC) + { + Assert(!(pHdr->fFlags & RTMEMHDR_FLAG_ALLOC_EX)); +#ifdef RTR0MEM_STRICT + AssertReleaseMsg(!memcmp((uint8_t *)(pHdr + 1) + pHdr->cbReq, &g_abFence[0], RTR0MEM_FENCE_EXTRA), + ("pHdr=%p pv=%p cbReq=%u cb=%u fFlags=%#x\n" + "fence: %.*Rhxs\n" + "expected: %.*Rhxs\n", + pHdr, pv, pHdr->cbReq, pHdr->cb, pHdr->fFlags, + RTR0MEM_FENCE_EXTRA, (uint8_t *)(pHdr + 1) + pHdr->cbReq, + RTR0MEM_FENCE_EXTRA, &g_abFence[0])); +#endif + rtR0MemFree(pHdr); + } + else + AssertMsgFailed(("pHdr->u32Magic=%RX32 pv=%p\n", pHdr->u32Magic, pv)); +} +RT_EXPORT_SYMBOL(RTMemExecFree); + + + + +RTDECL(int) RTMemAllocExTag(size_t cb, size_t cbAlignment, uint32_t fFlags, const char *pszTag, void **ppv) RT_NO_THROW +{ + uint32_t fHdrFlags = RTMEMHDR_FLAG_ALLOC_EX; + PRTMEMHDR pHdr; + int rc; + + RT_ASSERT_PREEMPT_CPUID_VAR(); + if (!(fFlags & RTMEMALLOCEX_FLAGS_ANY_CTX_ALLOC)) + RT_ASSERT_INTS_ON(); + + /* + * Fake up some alignment support. + */ + AssertMsgReturn(cbAlignment <= sizeof(void *), ("%zu (%#x)\n", cbAlignment, cbAlignment), VERR_UNSUPPORTED_ALIGNMENT); + if (cb < cbAlignment) + cb = cbAlignment; + + /* + * Validate and convert flags. + */ + AssertMsgReturn(!(fFlags & ~RTMEMALLOCEX_FLAGS_VALID_MASK_R0), ("%#x\n", fFlags), VERR_INVALID_PARAMETER); + if (fFlags & RTMEMALLOCEX_FLAGS_ZEROED) + fHdrFlags |= RTMEMHDR_FLAG_ZEROED; + if (fFlags & RTMEMALLOCEX_FLAGS_EXEC) + fHdrFlags |= RTMEMHDR_FLAG_EXEC; + if (fFlags & RTMEMALLOCEX_FLAGS_ANY_CTX_ALLOC) + fHdrFlags |= RTMEMHDR_FLAG_ANY_CTX_ALLOC; + if (fFlags & RTMEMALLOCEX_FLAGS_ANY_CTX_FREE) + fHdrFlags |= RTMEMHDR_FLAG_ANY_CTX_FREE; + + /* + * Do the allocation. + */ + rc = rtR0MemAllocEx(cb + RTR0MEM_FENCE_EXTRA, fHdrFlags, &pHdr); + if (RT_SUCCESS(rc)) + { + void *pv; + + Assert(pHdr->cbReq == cb + RTR0MEM_FENCE_EXTRA); + Assert((pHdr->fFlags & fFlags) == fFlags); + + /* + * Calc user pointer, initialize the memory if requested, and if + * memory strictness is enable set up the fence. + */ + pv = pHdr + 1; + *ppv = pv; + if (fFlags & RTMEMHDR_FLAG_ZEROED) + memset(pv, 0, pHdr->cb); + +#ifdef RTR0MEM_STRICT + pHdr->cbReq = (uint32_t)cb; + memcpy((uint8_t *)pv + cb, &g_abFence[0], RTR0MEM_FENCE_EXTRA); +#endif + } + else if (rc == VERR_NO_MEMORY && (fFlags & RTMEMALLOCEX_FLAGS_EXEC)) + rc = VERR_NO_EXEC_MEMORY; + + RT_ASSERT_PREEMPT_CPUID(); + return rc; +} +RT_EXPORT_SYMBOL(RTMemAllocExTag); + + +RTDECL(void) RTMemFreeEx(void *pv, size_t cb) RT_NO_THROW +{ + PRTMEMHDR pHdr; + + if (!pv) + return; + + AssertPtr(pv); + pHdr = (PRTMEMHDR)pv - 1; + if (pHdr->u32Magic == RTMEMHDR_MAGIC) + { + RT_ASSERT_PREEMPT_CPUID_VAR(); + + Assert(pHdr->fFlags & RTMEMHDR_FLAG_ALLOC_EX); + if (!(pHdr->fFlags & RTMEMHDR_FLAG_ANY_CTX_FREE)) + RT_ASSERT_INTS_ON(); + AssertMsg(pHdr->cbReq == cb, ("cbReq=%zu cb=%zu\n", pHdr->cb, cb)); + +#ifdef RTR0MEM_STRICT + AssertReleaseMsg(!memcmp((uint8_t *)(pHdr + 1) + pHdr->cbReq, &g_abFence[0], RTR0MEM_FENCE_EXTRA), + ("pHdr=%p pv=%p cbReq=%u cb=%u fFlags=%#x\n" + "fence: %.*Rhxs\n" + "expected: %.*Rhxs\n", + pHdr, pv, pHdr->cbReq, pHdr->cb, pHdr->fFlags, + RTR0MEM_FENCE_EXTRA, (uint8_t *)(pHdr + 1) + pHdr->cbReq, + RTR0MEM_FENCE_EXTRA, &g_abFence[0])); +#endif + rtR0MemFree(pHdr); + RT_ASSERT_PREEMPT_CPUID(); + } + else + AssertMsgFailed(("pHdr->u32Magic=%RX32 pv=%p\n", pHdr->u32Magic, pv)); +} +RT_EXPORT_SYMBOL(RTMemFreeEx); + --- linux-raspi2-4.2.0.orig/ubuntu/vbox/r0drv/alloc-r0drv.h +++ linux-raspi2-4.2.0/ubuntu/vbox/r0drv/alloc-r0drv.h @@ -0,0 +1,101 @@ +/* $Id: alloc-r0drv.h $ */ +/** @file + * IPRT - Memory Allocation, Ring-0 Driver. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + +#ifndef ___r0drv_alloc_r0drv_h +#define ___r0drv_alloc_r0drv_h + +#include +#include +#include +#include "internal/magics.h" + +RT_C_DECLS_BEGIN + +/** + * Header which heading all memory blocks. + */ +typedef struct RTMEMHDR +{ + /** Magic (RTMEMHDR_MAGIC). */ + uint32_t u32Magic; + /** Block flags (RTMEMHDR_FLAG_*). */ + uint32_t fFlags; + /** The actual size of the block, header not included. */ + uint32_t cb; + /** The requested allocation size. */ + uint32_t cbReq; +} RTMEMHDR, *PRTMEMHDR; + + +/** @name RTMEMHDR::fFlags. + * @{ */ +/** Clear the allocated memory. */ +#define RTMEMHDR_FLAG_ZEROED RT_BIT(0) +/** Executable flag. */ +#define RTMEMHDR_FLAG_EXEC RT_BIT(1) +/** Use allocation method suitable for any context. */ +#define RTMEMHDR_FLAG_ANY_CTX_ALLOC RT_BIT(2) +/** Use allocation method which allow for freeing in any context. */ +#define RTMEMHDR_FLAG_ANY_CTX_FREE RT_BIT(3) +/** Both alloc and free in any context (or we're just darn lazy). */ +#define RTMEMHDR_FLAG_ANY_CTX (RTMEMHDR_FLAG_ANY_CTX_ALLOC | RTMEMHDR_FLAG_ANY_CTX_FREE) +/** Indicate that it was allocated by rtR0MemAllocExTag. */ +#define RTMEMHDR_FLAG_ALLOC_EX RT_BIT(4) +#ifdef RT_OS_LINUX +/** Linux: Allocated using vm_area hacks. */ +# define RTMEMHDR_FLAG_EXEC_VM_AREA RT_BIT(29) +/** Linux: Allocated from the special heap for executable memory. */ +# define RTMEMHDR_FLAG_EXEC_HEAP RT_BIT(30) +/** Linux: Allocated by kmalloc() instead of vmalloc(). */ +# define RTMEMHDR_FLAG_KMALLOC RT_BIT(31) +#endif +/** @} */ + + +/** + * Heap allocation back end for ring-0. + * + * @returns IPRT status code. VERR_NO_MEMORY suffices for RTMEMHDR_FLAG_EXEC, + * the caller will change it to VERR_NO_EXEC_MEMORY when appropriate. + * + * @param cb The amount of memory requested by the user. This does + * not include the header. + * @param fFlags The allocation flags and more. These should be + * assigned to RTMEMHDR::fFlags together with any flags + * the backend might be using. + * @param ppHdr Where to return the memory header on success. + */ +DECLHIDDEN(int) rtR0MemAllocEx(size_t cb, uint32_t fFlags, PRTMEMHDR *ppHdr); + +/** + * Free memory allocated by rtR0MemAllocEx. + * @param pHdr The memory block to free. (Never NULL.) + */ +DECLHIDDEN(void) rtR0MemFree(PRTMEMHDR pHdr); + +RT_C_DECLS_END +#endif + --- linux-raspi2-4.2.0.orig/ubuntu/vbox/r0drv/generic/semspinmutex-r0drv-generic.c +++ linux-raspi2-4.2.0/ubuntu/vbox/r0drv/generic/semspinmutex-r0drv-generic.c @@ -0,0 +1,503 @@ +/* $Id: semspinmutex-r0drv-generic.c $ */ +/** @file + * IPRT - Spinning Mutex Semaphores, Ring-0 Driver, Generic. + */ + +/* + * Copyright (C) 2009-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + + +/******************************************************************************* +* Header Files * +*******************************************************************************/ +#ifdef RT_OS_WINDOWS +# include "../nt/the-nt-kernel.h" +#endif +#include "internal/iprt.h" + +#include +#include +#include +#include +#include +#include +#include +#include "internal/magics.h" + + +/******************************************************************************* +* Structures and Typedefs * +*******************************************************************************/ +/** + * Saved state information. + */ +typedef struct RTSEMSPINMUTEXSTATE +{ + /** Saved flags register. */ + RTCCUINTREG fSavedFlags; + /** Preemption state. */ + RTTHREADPREEMPTSTATE PreemptState; + /** Whether to spin or sleep. */ + bool fSpin; + /** Whether the flags have been saved. */ + bool fValidFlags; +} RTSEMSPINMUTEXSTATE; + +/** + * Spinning mutex semaphore. + */ +typedef struct RTSEMSPINMUTEXINTERNAL +{ + /** Magic value (RTSEMSPINMUTEX_MAGIC) + * RTCRITSECT_MAGIC is the value of an initialized & operational section. */ + uint32_t volatile u32Magic; + /** Flags. This is a combination of RTSEMSPINMUTEX_FLAGS_XXX and + * RTSEMSPINMUTEX_INT_FLAGS_XXX. */ + uint32_t volatile fFlags; + /** The owner thread. + * This is NIL if the semaphore is not owned by anyone. */ + RTNATIVETHREAD volatile hOwner; + /** Number of threads that are fighting for the lock. */ + int32_t volatile cLockers; + /** The semaphore to block on. */ + RTSEMEVENT hEventSem; + /** Saved state information of the owner. + * This will be restored by RTSemSpinRelease. */ + RTSEMSPINMUTEXSTATE SavedState; +} RTSEMSPINMUTEXINTERNAL; + + +/******************************************************************************* +* Defined Constants And Macros * +*******************************************************************************/ +/*#define RTSEMSPINMUTEX_INT_FLAGS_MUST*/ + +/** Validates the handle, returning if invalid. */ +#define RTSEMSPINMUTEX_VALIDATE_RETURN(pThis) \ + do \ + { \ + uint32_t u32Magic; \ + AssertPtr(pThis); \ + u32Magic = (pThis)->u32Magic; \ + if (u32Magic != RTSEMSPINMUTEX_MAGIC) \ + { \ + AssertMsgFailed(("u32Magic=%#x pThis=%p\n", u32Magic, pThis)); \ + return u32Magic == RTSEMSPINMUTEX_MAGIC_DEAD ? VERR_SEM_DESTROYED : VERR_INVALID_HANDLE; \ + } \ + } while (0) + + +RTDECL(int) RTSemSpinMutexCreate(PRTSEMSPINMUTEX phSpinMtx, uint32_t fFlags) +{ + RTSEMSPINMUTEXINTERNAL *pThis; + int rc; + + AssertReturn(!(fFlags & ~RTSEMSPINMUTEX_FLAGS_VALID_MASK), VERR_INVALID_PARAMETER); + AssertPtr(phSpinMtx); + + /* + * Allocate and initialize the structure. + */ + pThis = (RTSEMSPINMUTEXINTERNAL *)RTMemAllocZ(sizeof(*pThis)); + if (!pThis) + return VERR_NO_MEMORY; + pThis->u32Magic = RTSEMSPINMUTEX_MAGIC; + pThis->fFlags = fFlags; + pThis->hOwner = NIL_RTNATIVETHREAD; + pThis->cLockers = 0; + rc = RTSemEventCreateEx(&pThis->hEventSem, RTSEMEVENT_FLAGS_NO_LOCK_VAL, NIL_RTLOCKVALCLASS, NULL); + if (RT_SUCCESS(rc)) + { + *phSpinMtx = pThis; + return VINF_SUCCESS; + } + + RTMemFree(pThis); + return rc; +} +RT_EXPORT_SYMBOL(RTSemSpinMutexCreate); + + +/** + * Helper for RTSemSpinMutexTryRequest and RTSemSpinMutexRequest. + * + * This will check the current context and see if it's usui + * + * @returns VINF_SUCCESS or VERR_SEM_BAD_CONTEXT. + * @param pState Output structure. + */ +static int rtSemSpinMutexEnter(RTSEMSPINMUTEXSTATE *pState, RTSEMSPINMUTEXINTERNAL *pThis) +{ +#ifndef RT_OS_WINDOWS + RTTHREADPREEMPTSTATE const StateInit = RTTHREADPREEMPTSTATE_INITIALIZER; +#endif + int rc = VINF_SUCCESS; + + /** @todo Later #1: When entering in interrupt context and we're not able to + * wake up threads from it, we could try switch the lock into pure + * spinlock mode. This would require that there are no other threads + * currently waiting on it and that the RTSEMSPINMUTEX_FLAGS_IRQ_SAFE + * flag is set. + * + * Later #2: Similarly, it is possible to turn on the + * RTSEMSPINMUTEX_FLAGS_IRQ_SAFE at run time if we manage to grab the + * semaphore ownership at interrupt time. We might want to try delay the + * RTSEMSPINMUTEX_FLAGS_IRQ_SAFE even, since we're fine if we get it... + */ + +#ifdef RT_OS_WINDOWS + /* + * NT: IRQL <= DISPATCH_LEVEL for waking up threads; IRQL < DISPATCH_LEVEL for sleeping. + */ + pState->PreemptState.uchOldIrql = KeGetCurrentIrql(); + if (pState->PreemptState.uchOldIrql > DISPATCH_LEVEL) + return VERR_SEM_BAD_CONTEXT; + + if (pState->PreemptState.uchOldIrql >= DISPATCH_LEVEL) + pState->fSpin = true; + else + { + pState->fSpin = false; + KeRaiseIrql(DISPATCH_LEVEL, &pState->PreemptState.uchOldIrql); + Assert(pState->PreemptState.uchOldIrql < DISPATCH_LEVEL); + } + +#elif defined(RT_OS_SOLARIS) + /* + * Solaris: RTSemEventSignal will do bad stuff on S10 if interrupts are disabled. + */ + if (!ASMIntAreEnabled()) + return VERR_SEM_BAD_CONTEXT; + + pState->fSpin = !RTThreadPreemptIsEnabled(NIL_RTTHREAD); + if (RTThreadIsInInterrupt(NIL_RTTHREAD)) + { + if (!(pThis->fFlags & RTSEMSPINMUTEX_FLAGS_IRQ_SAFE)) + rc = VINF_SEM_BAD_CONTEXT; /* Try, but owner might be interrupted. */ + pState->fSpin = true; + } + pState->PreemptState = StateInit; + RTThreadPreemptDisable(&pState->PreemptState); + +#elif defined(RT_OS_LINUX) || defined(RT_OS_OS2) + /* + * OSes on which RTSemEventSignal can be called from any context. + */ + pState->fSpin = !RTThreadPreemptIsEnabled(NIL_RTTHREAD); + if (RTThreadIsInInterrupt(NIL_RTTHREAD)) + { + if (!(pThis->fFlags & RTSEMSPINMUTEX_FLAGS_IRQ_SAFE)) + rc = VINF_SEM_BAD_CONTEXT; /* Try, but owner might be interrupted. */ + pState->fSpin = true; + } + pState->PreemptState = StateInit; + RTThreadPreemptDisable(&pState->PreemptState); + +#else /* PORTME: Check for context where we cannot wake up threads. */ + /* + * Default: ASSUME thread can be woken up if interrupts are enabled and + * we're not in an interrupt context. + * ASSUME that we can go to sleep if preemption is enabled. + */ + if ( RTThreadIsInInterrupt(NIL_RTTHREAD) + || !ASMIntAreEnabled()) + return VERR_SEM_BAD_CONTEXT; + + pState->fSpin = !RTThreadPreemptIsEnabled(NIL_RTTHREAD); + pState->PreemptState = StateInit; + RTThreadPreemptDisable(&pState->PreemptState); +#endif + + /* + * Disable interrupts if necessary. + */ + pState->fValidFlags = !!(pThis->fFlags & RTSEMSPINMUTEX_FLAGS_IRQ_SAFE); + if (pState->fValidFlags) + pState->fSavedFlags = ASMIntDisableFlags(); + else + pState->fSavedFlags = 0; + + return rc; +} + + +/** + * Helper for RTSemSpinMutexTryRequest, RTSemSpinMutexRequest and + * RTSemSpinMutexRelease. + * + * @param pState + */ +DECL_FORCE_INLINE(void) rtSemSpinMutexLeave(RTSEMSPINMUTEXSTATE *pState) +{ + /* + * Restore the interrupt flag. + */ + if (pState->fValidFlags) + ASMSetFlags(pState->fSavedFlags); + +#ifdef RT_OS_WINDOWS + /* + * NT: Lower the IRQL if we raised it. + */ + if (pState->PreemptState.uchOldIrql < DISPATCH_LEVEL) + KeLowerIrql(pState->PreemptState.uchOldIrql); +#else + /* + * Default: Restore preemption. + */ + RTThreadPreemptRestore(&pState->PreemptState); +#endif +} + + +RTDECL(int) RTSemSpinMutexTryRequest(RTSEMSPINMUTEX hSpinMtx) +{ + RTSEMSPINMUTEXINTERNAL *pThis = hSpinMtx; + RTNATIVETHREAD hSelf = RTThreadNativeSelf(); + RTSEMSPINMUTEXSTATE State; + bool fRc; + int rc; + + Assert(hSelf != NIL_RTNATIVETHREAD); + RTSEMSPINMUTEX_VALIDATE_RETURN(pThis); + + /* + * Check context, disable preemption and save flags if necessary. + */ + rc = rtSemSpinMutexEnter(&State, pThis); + if (RT_FAILURE(rc)) + return rc; + + /* + * Try take the ownership. + */ + ASMAtomicCmpXchgHandle(&pThis->hOwner, hSelf, NIL_RTNATIVETHREAD, fRc); + if (!fRc) + { + /* Busy, too bad. Check for attempts at nested access. */ + rc = VERR_SEM_BUSY; + if (RT_UNLIKELY(pThis->hOwner == hSelf)) + { + AssertMsgFailed(("%p attempt at nested access\n")); + rc = VERR_SEM_NESTED; + } + + rtSemSpinMutexLeave(&State); + return rc; + } + + /* + * We're the semaphore owner. + */ + ASMAtomicIncS32(&pThis->cLockers); + pThis->SavedState = State; + return VINF_SUCCESS; +} +RT_EXPORT_SYMBOL(RTSemSpinMutexTryRequest); + + +RTDECL(int) RTSemSpinMutexRequest(RTSEMSPINMUTEX hSpinMtx) +{ + RTSEMSPINMUTEXINTERNAL *pThis = hSpinMtx; + RTNATIVETHREAD hSelf = RTThreadNativeSelf(); + RTSEMSPINMUTEXSTATE State; + bool fRc; + int rc; + + Assert(hSelf != NIL_RTNATIVETHREAD); + RTSEMSPINMUTEX_VALIDATE_RETURN(pThis); + + /* + * Check context, disable preemption and save flags if necessary. + */ + rc = rtSemSpinMutexEnter(&State, pThis); + if (RT_FAILURE(rc)) + return rc; + + /* + * Try take the ownership. + */ + ASMAtomicIncS32(&pThis->cLockers); + ASMAtomicCmpXchgHandle(&pThis->hOwner, hSelf, NIL_RTNATIVETHREAD, fRc); + if (!fRc) + { + uint32_t cSpins; + + /* + * It's busy. Check if it's an attempt at nested access. + */ + if (RT_UNLIKELY(pThis->hOwner == hSelf)) + { + AssertMsgFailed(("%p attempt at nested access\n")); + rtSemSpinMutexLeave(&State); + return VERR_SEM_NESTED; + } + + /* + * Return if we're in interrupt context and the semaphore isn't + * configure to be interrupt safe. + */ + if (rc == VINF_SEM_BAD_CONTEXT) + { + rtSemSpinMutexLeave(&State); + return VERR_SEM_BAD_CONTEXT; + } + + /* + * Ok, we have to wait. + */ + if (State.fSpin) + { + for (cSpins = 0; ; cSpins++) + { + ASMAtomicCmpXchgHandle(&pThis->hOwner, hSelf, NIL_RTNATIVETHREAD, fRc); + if (fRc) + break; + ASMNopPause(); + if (RT_UNLIKELY(pThis->u32Magic != RTSEMSPINMUTEX_MAGIC)) + { + rtSemSpinMutexLeave(&State); + return VERR_SEM_DESTROYED; + } + + /* + * "Yield" once in a while. This may lower our IRQL/PIL which + * may preempting us, and it will certainly stop the hammering + * of hOwner for a little while. + */ + if ((cSpins & 0x7f) == 0x1f) + { + rtSemSpinMutexLeave(&State); + rtSemSpinMutexEnter(&State, pThis); + Assert(State.fSpin); + } + } + } + else + { + for (cSpins = 0;; cSpins++) + { + ASMAtomicCmpXchgHandle(&pThis->hOwner, hSelf, NIL_RTNATIVETHREAD, fRc); + if (fRc) + break; + ASMNopPause(); + if (RT_UNLIKELY(pThis->u32Magic != RTSEMSPINMUTEX_MAGIC)) + { + rtSemSpinMutexLeave(&State); + return VERR_SEM_DESTROYED; + } + + if ((cSpins & 15) == 15) /* spin a bit before going sleep (again). */ + { + rtSemSpinMutexLeave(&State); + + rc = RTSemEventWait(pThis->hEventSem, RT_INDEFINITE_WAIT); + ASMCompilerBarrier(); + if (RT_SUCCESS(rc)) + AssertReturn(pThis->u32Magic == RTSEMSPINMUTEX_MAGIC, VERR_SEM_DESTROYED); + else if (rc == VERR_INTERRUPTED) + AssertRC(rc); /* shouldn't happen */ + else + { + AssertRC(rc); + return rc; + } + + rc = rtSemSpinMutexEnter(&State, pThis); + AssertRCReturn(rc, rc); + Assert(!State.fSpin); + } + } + } + } + + /* + * We're the semaphore owner. + */ + pThis->SavedState = State; + Assert(pThis->hOwner == hSelf); + return VINF_SUCCESS; +} +RT_EXPORT_SYMBOL(RTSemSpinMutexRequest); + + +RTDECL(int) RTSemSpinMutexRelease(RTSEMSPINMUTEX hSpinMtx) +{ + RTSEMSPINMUTEXINTERNAL *pThis = hSpinMtx; + RTNATIVETHREAD hSelf = RTThreadNativeSelf(); + uint32_t cLockers; + RTSEMSPINMUTEXSTATE State; + bool fRc; + + Assert(hSelf != NIL_RTNATIVETHREAD); + RTSEMSPINMUTEX_VALIDATE_RETURN(pThis); + + /* + * Get the saved state and try release the semaphore. + */ + State = pThis->SavedState; + ASMCompilerBarrier(); + ASMAtomicCmpXchgHandle(&pThis->hOwner, NIL_RTNATIVETHREAD, hSelf, fRc); + AssertMsgReturn(fRc, + ("hOwner=%p hSelf=%p cLockers=%d\n", pThis->hOwner, hSelf, pThis->cLockers), + VERR_NOT_OWNER); + + cLockers = ASMAtomicDecS32(&pThis->cLockers); + rtSemSpinMutexLeave(&State); + if (cLockers > 0) + { + int rc = RTSemEventSignal(pThis->hEventSem); + AssertReleaseMsg(RT_SUCCESS(rc), ("RTSemEventSignal -> %Rrc\n", rc)); + } + return VINF_SUCCESS; +} +RT_EXPORT_SYMBOL(RTSemSpinMutexRelease); + + +RTDECL(int) RTSemSpinMutexDestroy(RTSEMSPINMUTEX hSpinMtx) +{ + RTSEMSPINMUTEXINTERNAL *pThis; + RTSEMEVENT hEventSem; + int rc; + + if (hSpinMtx == NIL_RTSEMSPINMUTEX) + return VINF_SUCCESS; + pThis = hSpinMtx; + RTSEMSPINMUTEX_VALIDATE_RETURN(pThis); + + /* No destruction races allowed! */ + AssertMsg( pThis->cLockers == 0 + && pThis->hOwner == NIL_RTNATIVETHREAD, + ("pThis=%p cLockers=%d hOwner=%p\n", pThis, pThis->cLockers, pThis->hOwner)); + + /* + * Invalidate the structure, free the mutex and free the structure. + */ + ASMAtomicWriteU32(&pThis->u32Magic, RTSEMSPINMUTEX_MAGIC_DEAD); + hEventSem = pThis->hEventSem; + pThis->hEventSem = NIL_RTSEMEVENT; + rc = RTSemEventDestroy(hEventSem); AssertRC(rc); + + RTMemFree(pThis); + return rc; +} +RT_EXPORT_SYMBOL(RTSemSpinMutexDestroy); + --- linux-raspi2-4.2.0.orig/ubuntu/vbox/r0drv/initterm-r0drv.c +++ linux-raspi2-4.2.0/ubuntu/vbox/r0drv/initterm-r0drv.c @@ -0,0 +1,154 @@ +/* $Id: initterm-r0drv.cpp $ */ +/** @file + * IPRT - Initialization & Termination, R0 Driver, Common. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + + +/******************************************************************************* +* Header Files * +*******************************************************************************/ +#include +#include "internal/iprt.h" + +#include +#include +#include +#include +#include +#ifndef IN_GUEST /* play safe for now */ +# include "r0drv/mp-r0drv.h" +# include "r0drv/power-r0drv.h" +#endif + +#include "internal/initterm.h" +#include "internal/thread.h" + + +/******************************************************************************* +* Global Variables * +*******************************************************************************/ +/** Count of current IPRT users. + * In ring-0 several drivers / kmods / kexts / wossnames may share the + * same runtime code. So, we need to keep count in order not to terminate + * it prematurely. */ +static int32_t volatile g_crtR0Users = 0; + + +/** + * Initializes the ring-0 driver runtime library. + * + * @returns iprt status code. + * @param fReserved Flags reserved for the future. + */ +RTR0DECL(int) RTR0Init(unsigned fReserved) +{ + int rc; + uint32_t cNewUsers; + Assert(fReserved == 0); +#ifndef RT_OS_SOLARIS /* On Solaris our thread preemption information is only obtained in rtR0InitNative().*/ + RT_ASSERT_PREEMPTIBLE(); +#endif + + /* + * The first user initializes it. + * We rely on the module loader to ensure that there are no + * initialization races should two modules share the IPRT. + */ + cNewUsers = ASMAtomicIncS32(&g_crtR0Users); + if (cNewUsers != 1) + { + if (cNewUsers > 1) + return VINF_SUCCESS; + ASMAtomicDecS32(&g_crtR0Users); + return VERR_INTERNAL_ERROR_3; + } + + rc = rtR0InitNative(); + if (RT_SUCCESS(rc)) + { + rc = rtThreadInit(); + if (RT_SUCCESS(rc)) + { +#ifndef IN_GUEST /* play safe for now */ + rc = rtR0MpNotificationInit(); + if (RT_SUCCESS(rc)) + { + rc = rtR0PowerNotificationInit(); + if (RT_SUCCESS(rc)) + return rc; + rtR0MpNotificationTerm(); + } +#else + if (RT_SUCCESS(rc)) + return rc; +#endif + rtThreadTerm(); + } + rtR0TermNative(); + } + return rc; +} +RT_EXPORT_SYMBOL(RTR0Init); + + +static void rtR0Term(void) +{ + rtThreadTerm(); +#ifndef IN_GUEST /* play safe for now */ + rtR0PowerNotificationTerm(); + rtR0MpNotificationTerm(); +#endif + rtR0TermNative(); +} + + +/** + * Terminates the ring-0 driver runtime library. + */ +RTR0DECL(void) RTR0Term(void) +{ + int32_t cNewUsers; + RT_ASSERT_PREEMPTIBLE(); + + cNewUsers = ASMAtomicDecS32(&g_crtR0Users); + Assert(cNewUsers >= 0); + if (cNewUsers == 0) + rtR0Term(); + else if (cNewUsers < 0) + ASMAtomicIncS32(&g_crtR0Users); +} +RT_EXPORT_SYMBOL(RTR0Term); + + +/* Note! Should *not* be exported since it's only for static linking. */ +RTR0DECL(void) RTR0TermForced(void) +{ + RT_ASSERT_PREEMPTIBLE(); + + AssertMsg(g_crtR0Users == 1, ("%d\n", g_crtR0Users)); + ASMAtomicWriteS32(&g_crtR0Users, 0); + + rtR0Term(); +} + --- linux-raspi2-4.2.0.orig/ubuntu/vbox/r0drv/linux/RTLogWriteDebugger-r0drv-linux.c +++ linux-raspi2-4.2.0/ubuntu/vbox/r0drv/linux/RTLogWriteDebugger-r0drv-linux.c @@ -0,0 +1,41 @@ +/* $Id: RTLogWriteDebugger-r0drv-linux.c $ */ +/** @file + * IPRT - Log To Debugger, Ring-0 Driver, Linux. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + + +/******************************************************************************* +* Header Files * +*******************************************************************************/ +#include "the-linux-kernel.h" +#include "internal/iprt.h" +#include + + +RTDECL(void) RTLogWriteDebugger(const char *pch, size_t cb) +{ + printk("%.*s", (int)cb, pch); +} +RT_EXPORT_SYMBOL(RTLogWriteDebugger); + --- linux-raspi2-4.2.0.orig/ubuntu/vbox/r0drv/linux/alloc-r0drv-linux.c +++ linux-raspi2-4.2.0/ubuntu/vbox/r0drv/linux/alloc-r0drv-linux.c @@ -0,0 +1,484 @@ +/* $Id: alloc-r0drv-linux.c $ */ +/** @file + * IPRT - Memory Allocation, Ring-0 Driver, Linux. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + + +/******************************************************************************* +* Header Files * +*******************************************************************************/ +#include "the-linux-kernel.h" +#include "internal/iprt.h" +#include + +#include +#include +#include "r0drv/alloc-r0drv.h" + + +#if (defined(RT_ARCH_AMD64) || defined(DOXYGEN_RUNNING)) && !defined(RTMEMALLOC_EXEC_HEAP) +# if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 23) +/** + * Starting with 2.6.23 we can use __get_vm_area and map_vm_area to allocate + * memory in the moduel range. This is preferrable to the exec heap below. + */ +# define RTMEMALLOC_EXEC_VM_AREA +# else +/** + * We need memory in the module range (~2GB to ~0) this can only be obtained + * thru APIs that are not exported (see module_alloc()). + * + * So, we'll have to create a quick and dirty heap here using BSS memory. + * Very annoying and it's going to restrict us! + */ +# define RTMEMALLOC_EXEC_HEAP +# endif +#endif + +#ifdef RTMEMALLOC_EXEC_HEAP +# include +# include +# include +#endif + + +/******************************************************************************* +* Structures and Typedefs * +*******************************************************************************/ +#ifdef RTMEMALLOC_EXEC_VM_AREA +/** + * Extended header used for headers marked with RTMEMHDR_FLAG_EXEC_VM_AREA. + * + * This is used with allocating executable memory, for things like generated + * code and loaded modules. + */ +typedef struct RTMEMLNXHDREX +{ + /** The VM area for this allocation. */ + struct vm_struct *pVmArea; + void *pvDummy; + /** The header we present to the generic API. */ + RTMEMHDR Hdr; +} RTMEMLNXHDREX; +AssertCompileSize(RTMEMLNXHDREX, 32); +/** Pointer to an extended memory header. */ +typedef RTMEMLNXHDREX *PRTMEMLNXHDREX; +#endif + + +/******************************************************************************* +* Global Variables * +*******************************************************************************/ +#ifdef RTMEMALLOC_EXEC_HEAP +/** The heap. */ +static RTHEAPSIMPLE g_HeapExec = NIL_RTHEAPSIMPLE; +/** Spinlock protecting the heap. */ +static RTSPINLOCK g_HeapExecSpinlock = NIL_RTSPINLOCK; +#endif + + +/** + * API for cleaning up the heap spinlock on IPRT termination. + * This is as RTMemExecDonate specific to AMD64 Linux/GNU. + */ +DECLHIDDEN(void) rtR0MemExecCleanup(void) +{ +#ifdef RTMEMALLOC_EXEC_HEAP + RTSpinlockDestroy(g_HeapExecSpinlock); + g_HeapExecSpinlock = NIL_RTSPINLOCK; +#endif +} + + +/** + * Donate read+write+execute memory to the exec heap. + * + * This API is specific to AMD64 and Linux/GNU. A kernel module that desires to + * use RTMemExecAlloc on AMD64 Linux/GNU will have to donate some statically + * allocated memory in the module if it wishes for GCC generated code to work. + * GCC can only generate modules that work in the address range ~2GB to ~0 + * currently. + * + * The API only accept one single donation. + * + * @returns IPRT status code. + * @retval VERR_NOT_SUPPORTED if the code isn't enabled. + * @param pvMemory Pointer to the memory block. + * @param cb The size of the memory block. + */ +RTR0DECL(int) RTR0MemExecDonate(void *pvMemory, size_t cb) +{ +#ifdef RTMEMALLOC_EXEC_HEAP + int rc; + AssertReturn(g_HeapExec == NIL_RTHEAPSIMPLE, VERR_WRONG_ORDER); + + rc = RTSpinlockCreate(&g_HeapExecSpinlock, RTSPINLOCK_FLAGS_INTERRUPT_SAFE, "RTR0MemExecDonate"); + if (RT_SUCCESS(rc)) + { + rc = RTHeapSimpleInit(&g_HeapExec, pvMemory, cb); + if (RT_FAILURE(rc)) + rtR0MemExecCleanup(); + } + return rc; +#else + return VERR_NOT_SUPPORTED; +#endif +} +RT_EXPORT_SYMBOL(RTR0MemExecDonate); + + + +#ifdef RTMEMALLOC_EXEC_VM_AREA +/** + * Allocate executable kernel memory in the module range. + * + * @returns Pointer to a allocation header success. NULL on failure. + * + * @param cb The size the user requested. + */ +static PRTMEMHDR rtR0MemAllocExecVmArea(size_t cb) +{ + size_t const cbAlloc = RT_ALIGN_Z(sizeof(RTMEMLNXHDREX) + cb, PAGE_SIZE); + size_t const cPages = cbAlloc >> PAGE_SHIFT; + struct page **papPages; + struct vm_struct *pVmArea; + size_t iPage; + + pVmArea = __get_vm_area(cbAlloc, VM_ALLOC, MODULES_VADDR, MODULES_END); + if (!pVmArea) + return NULL; + pVmArea->nr_pages = 0; /* paranoia? */ + pVmArea->pages = NULL; /* paranoia? */ + + papPages = (struct page **)kmalloc(cPages * sizeof(papPages[0]), GFP_KERNEL | __GFP_NOWARN); + if (!papPages) + { + vunmap(pVmArea->addr); + return NULL; + } + + for (iPage = 0; iPage < cPages; iPage++) + { + papPages[iPage] = alloc_page(GFP_KERNEL | __GFP_HIGHMEM | __GFP_NOWARN); + if (!papPages[iPage]) + break; + } + if (iPage == cPages) + { + /* + * Map the pages. + * + * Not entirely sure we really need to set nr_pages and pages here, but + * they provide a very convenient place for storing something we need + * in the free function, if nothing else... + */ +# if LINUX_VERSION_CODE < KERNEL_VERSION(3, 17, 0) + struct page **papPagesIterator = papPages; +# endif + pVmArea->nr_pages = cPages; + pVmArea->pages = papPages; + if (!map_vm_area(pVmArea, PAGE_KERNEL_EXEC, +# if LINUX_VERSION_CODE < KERNEL_VERSION(3, 17, 0) + &papPagesIterator +# else + papPages +# endif + )) + { + PRTMEMLNXHDREX pHdrEx = (PRTMEMLNXHDREX)pVmArea->addr; + pHdrEx->pVmArea = pVmArea; + pHdrEx->pvDummy = NULL; + return &pHdrEx->Hdr; + } + /* bail out */ +# if LINUX_VERSION_CODE < KERNEL_VERSION(3, 17, 0) + pVmArea->nr_pages = papPagesIterator - papPages; +# endif + } + + vunmap(pVmArea->addr); + + while (iPage-- > 0) + __free_page(papPages[iPage]); + kfree(papPages); + + return NULL; +} +#endif /* RTMEMALLOC_EXEC_VM_AREA */ + + +/** + * OS specific allocation function. + */ +DECLHIDDEN(int) rtR0MemAllocEx(size_t cb, uint32_t fFlags, PRTMEMHDR *ppHdr) +{ + PRTMEMHDR pHdr; + + /* + * Allocate. + */ + if (fFlags & RTMEMHDR_FLAG_EXEC) + { + if (fFlags & RTMEMHDR_FLAG_ANY_CTX) + return VERR_NOT_SUPPORTED; + +#if defined(RT_ARCH_AMD64) +# ifdef RTMEMALLOC_EXEC_HEAP + if (g_HeapExec != NIL_RTHEAPSIMPLE) + { + RTSpinlockAcquire(g_HeapExecSpinlock); + pHdr = (PRTMEMHDR)RTHeapSimpleAlloc(g_HeapExec, cb + sizeof(*pHdr), 0); + RTSpinlockRelease(g_HeapExecSpinlock); + fFlags |= RTMEMHDR_FLAG_EXEC_HEAP; + } + else + pHdr = NULL; + +# elif defined(RTMEMALLOC_EXEC_VM_AREA) + pHdr = rtR0MemAllocExecVmArea(cb); + fFlags |= RTMEMHDR_FLAG_EXEC_VM_AREA; + +# else /* !RTMEMALLOC_EXEC_HEAP */ +# error "you don not want to go here..." + pHdr = (PRTMEMHDR)__vmalloc(cb + sizeof(*pHdr), GFP_KERNEL | __GFP_HIGHMEM | __GFP_NOWARN, MY_PAGE_KERNEL_EXEC); +# endif /* !RTMEMALLOC_EXEC_HEAP */ + +#elif defined(PAGE_KERNEL_EXEC) && defined(CONFIG_X86_PAE) + pHdr = (PRTMEMHDR)__vmalloc(cb + sizeof(*pHdr), GFP_KERNEL | __GFP_HIGHMEM | __GFP_NOWARN, MY_PAGE_KERNEL_EXEC); +#else + pHdr = (PRTMEMHDR)vmalloc(cb + sizeof(*pHdr)); +#endif + } + else + { + if ( +#if 1 /* vmalloc has serious performance issues, avoid it. */ + cb <= PAGE_SIZE*16 - sizeof(*pHdr) +#else + cb <= PAGE_SIZE +#endif + || (fFlags & RTMEMHDR_FLAG_ANY_CTX) + ) + { + fFlags |= RTMEMHDR_FLAG_KMALLOC; + pHdr = kmalloc(cb + sizeof(*pHdr), + (fFlags & RTMEMHDR_FLAG_ANY_CTX_ALLOC) ? (GFP_ATOMIC | __GFP_NOWARN) + : (GFP_KERNEL | __GFP_NOWARN)); + if (RT_UNLIKELY( !pHdr + && cb > PAGE_SIZE + && !(fFlags & RTMEMHDR_FLAG_ANY_CTX) )) + { + fFlags &= ~RTMEMHDR_FLAG_KMALLOC; + pHdr = vmalloc(cb + sizeof(*pHdr)); + } + } + else + pHdr = vmalloc(cb + sizeof(*pHdr)); + } + if (RT_UNLIKELY(!pHdr)) + return VERR_NO_MEMORY; + + /* + * Initialize. + */ + pHdr->u32Magic = RTMEMHDR_MAGIC; + pHdr->fFlags = fFlags; + pHdr->cb = cb; + pHdr->cbReq = cb; + + *ppHdr = pHdr; + return VINF_SUCCESS; +} + + +/** + * OS specific free function. + */ +DECLHIDDEN(void) rtR0MemFree(PRTMEMHDR pHdr) +{ + pHdr->u32Magic += 1; + if (pHdr->fFlags & RTMEMHDR_FLAG_KMALLOC) + kfree(pHdr); +#ifdef RTMEMALLOC_EXEC_HEAP + else if (pHdr->fFlags & RTMEMHDR_FLAG_EXEC_HEAP) + { + RTSpinlockAcquire(g_HeapExecSpinlock); + RTHeapSimpleFree(g_HeapExec, pHdr); + RTSpinlockRelease(g_HeapExecSpinlock); + } +#endif +#ifdef RTMEMALLOC_EXEC_VM_AREA + else if (pHdr->fFlags & RTMEMHDR_FLAG_EXEC_VM_AREA) + { + PRTMEMLNXHDREX pHdrEx = RT_FROM_MEMBER(pHdr, RTMEMLNXHDREX, Hdr); + size_t iPage = pHdrEx->pVmArea->nr_pages; + struct page **papPages = pHdrEx->pVmArea->pages; + void *pvMapping = pHdrEx->pVmArea->addr; + + vunmap(pvMapping); + + while (iPage-- > 0) + __free_page(papPages[iPage]); + kfree(papPages); + } +#endif + else + vfree(pHdr); +} + + + +/** + * Compute order. Some functions allocate 2^order pages. + * + * @returns order. + * @param cPages Number of pages. + */ +static int CalcPowerOf2Order(unsigned long cPages) +{ + int iOrder; + unsigned long cTmp; + + for (iOrder = 0, cTmp = cPages; cTmp >>= 1; ++iOrder) + ; + if (cPages & ~(1 << iOrder)) + ++iOrder; + + return iOrder; +} + + +/** + * Allocates physical contiguous memory (below 4GB). + * The allocation is page aligned and the content is undefined. + * + * @returns Pointer to the memory block. This is page aligned. + * @param pPhys Where to store the physical address. + * @param cb The allocation size in bytes. This is always + * rounded up to PAGE_SIZE. + */ +RTR0DECL(void *) RTMemContAlloc(PRTCCPHYS pPhys, size_t cb) +{ + int cOrder; + unsigned cPages; + struct page *paPages; + + /* + * validate input. + */ + Assert(VALID_PTR(pPhys)); + Assert(cb > 0); + + /* + * Allocate page pointer array. + */ + cb = RT_ALIGN_Z(cb, PAGE_SIZE); + cPages = cb >> PAGE_SHIFT; + cOrder = CalcPowerOf2Order(cPages); +#if (defined(RT_ARCH_AMD64) || defined(CONFIG_X86_PAE)) && defined(GFP_DMA32) + /* ZONE_DMA32: 0-4GB */ + paPages = alloc_pages(GFP_DMA32 | __GFP_NOWARN, cOrder); + if (!paPages) +#endif +#ifdef RT_ARCH_AMD64 + /* ZONE_DMA; 0-16MB */ + paPages = alloc_pages(GFP_DMA | __GFP_NOWARN, cOrder); +#else + /* ZONE_NORMAL: 0-896MB */ + paPages = alloc_pages(GFP_USER | __GFP_NOWARN, cOrder); +#endif + if (paPages) + { + /* + * Reserve the pages and mark them executable. + */ + unsigned iPage; + for (iPage = 0; iPage < cPages; iPage++) + { + Assert(!PageHighMem(&paPages[iPage])); + if (iPage + 1 < cPages) + { + AssertMsg( (uintptr_t)phys_to_virt(page_to_phys(&paPages[iPage])) + PAGE_SIZE + == (uintptr_t)phys_to_virt(page_to_phys(&paPages[iPage + 1])) + && page_to_phys(&paPages[iPage]) + PAGE_SIZE + == page_to_phys(&paPages[iPage + 1]), + ("iPage=%i cPages=%u [0]=%#llx,%p [1]=%#llx,%p\n", iPage, cPages, + (long long)page_to_phys(&paPages[iPage]), phys_to_virt(page_to_phys(&paPages[iPage])), + (long long)page_to_phys(&paPages[iPage + 1]), phys_to_virt(page_to_phys(&paPages[iPage + 1])) )); + } + + SetPageReserved(&paPages[iPage]); +#if LINUX_VERSION_CODE > KERNEL_VERSION(2, 4, 20) /** @todo find the exact kernel where change_page_attr was introduced. */ + MY_SET_PAGES_EXEC(&paPages[iPage], 1); +#endif + } + *pPhys = page_to_phys(paPages); + return phys_to_virt(page_to_phys(paPages)); + } + + return NULL; +} +RT_EXPORT_SYMBOL(RTMemContAlloc); + + +/** + * Frees memory allocated using RTMemContAlloc(). + * + * @param pv Pointer to return from RTMemContAlloc(). + * @param cb The cb parameter passed to RTMemContAlloc(). + */ +RTR0DECL(void) RTMemContFree(void *pv, size_t cb) +{ + if (pv) + { + int cOrder; + unsigned cPages; + unsigned iPage; + struct page *paPages; + + /* validate */ + AssertMsg(!((uintptr_t)pv & PAGE_OFFSET_MASK), ("pv=%p\n", pv)); + Assert(cb > 0); + + /* calc order and get pages */ + cb = RT_ALIGN_Z(cb, PAGE_SIZE); + cPages = cb >> PAGE_SHIFT; + cOrder = CalcPowerOf2Order(cPages); + paPages = virt_to_page(pv); + + /* + * Restore page attributes freeing the pages. + */ + for (iPage = 0; iPage < cPages; iPage++) + { + ClearPageReserved(&paPages[iPage]); +#if LINUX_VERSION_CODE > KERNEL_VERSION(2, 4, 20) /** @todo find the exact kernel where change_page_attr was introduced. */ + MY_SET_PAGES_NOEXEC(&paPages[iPage], 1); +#endif + } + __free_pages(paPages, cOrder); + } +} +RT_EXPORT_SYMBOL(RTMemContFree); + --- linux-raspi2-4.2.0.orig/ubuntu/vbox/r0drv/linux/assert-r0drv-linux.c +++ linux-raspi2-4.2.0/ubuntu/vbox/r0drv/linux/assert-r0drv-linux.c @@ -0,0 +1,70 @@ +/* $Id: assert-r0drv-linux.c $ */ +/** @file + * IPRT - Assertion Workers, Ring-0 Drivers, Linux. + */ + +/* + * Copyright (C) 2007-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + + +/******************************************************************************* +* Header Files * +*******************************************************************************/ +#include "the-linux-kernel.h" +#include "internal/iprt.h" + +#include +#include +#include +#include +#include + +#include "internal/assert.h" + + +DECLHIDDEN(void) rtR0AssertNativeMsg1(const char *pszExpr, unsigned uLine, const char *pszFile, const char *pszFunction) +{ + printk(KERN_EMERG + "\r\n!!Assertion Failed!!\r\n" + "Expression: %s\r\n" + "Location : %s(%d) %s\r\n", + pszExpr, pszFile, uLine, pszFunction); +} + + +DECLHIDDEN(void) rtR0AssertNativeMsg2V(bool fInitial, const char *pszFormat, va_list va) +{ + char szMsg[256]; + + RTStrPrintfV(szMsg, sizeof(szMsg) - 1, pszFormat, va); + szMsg[sizeof(szMsg) - 1] = '\0'; + printk(KERN_EMERG "%s", szMsg); + + NOREF(fInitial); +} + + +RTR0DECL(void) RTR0AssertPanicSystem(void) +{ + panic("%s%s", g_szRTAssertMsg1, g_szRTAssertMsg2); +} +RT_EXPORT_SYMBOL(RTR0AssertPanicSystem); + --- linux-raspi2-4.2.0.orig/ubuntu/vbox/r0drv/linux/initterm-r0drv-linux.c +++ linux-raspi2-4.2.0/ubuntu/vbox/r0drv/linux/initterm-r0drv-linux.c @@ -0,0 +1,121 @@ +/* $Id: initterm-r0drv-linux.c $ */ +/** @file + * IPRT - Initialization & Termination, R0 Driver, Linux. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + + +/******************************************************************************* +* Header Files * +*******************************************************************************/ +#include "the-linux-kernel.h" +#include "internal/iprt.h" +#include +#include +#include "internal/initterm.h" + + +/******************************************************************************* +* Global Variables * +*******************************************************************************/ +/** The IPRT work queue. */ +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 5, 41) +static struct workqueue_struct *g_prtR0LnxWorkQueue; +#else +static DECLARE_TASK_QUEUE(g_rtR0LnxWorkQueue); +#endif + + +/******************************************************************************* +* Internal Functions * +*******************************************************************************/ +/* in alloc-r0drv0-linux.c */ +DECLHIDDEN(void) rtR0MemExecCleanup(void); + + +/** + * Pushes an item onto the IPRT work queue. + * + * @param pWork The work item. + * @param pfnWorker The callback function. It will be called back + * with @a pWork as argument. + */ +DECLHIDDEN(void) rtR0LnxWorkqueuePush(RTR0LNXWORKQUEUEITEM *pWork, void (*pfnWorker)(RTR0LNXWORKQUEUEITEM *)) +{ +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 5, 41) +# if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 20) + INIT_WORK(pWork, pfnWorker); +# else + INIT_WORK(pWork, pfnWorker, pWork); +# endif + queue_work(g_prtR0LnxWorkQueue, pWork); +#else + INIT_TQUEUE(pWork, (void (*)(void *))pfnWorker, pWork); + queue_task(pWork, &g_rtR0LnxWorkQueue); +#endif +} + + +/** + * Flushes all items in the IPRT work queue. + * + * @remarks This is mostly for 2.4.x compatability. Must not be called from + * atomic contexts or with unncessary locks held. + */ +DECLHIDDEN(void) rtR0LnxWorkqueueFlush(void) +{ +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 5, 41) + flush_workqueue(g_prtR0LnxWorkQueue); +#else + run_task_queue(&g_rtR0LnxWorkQueue); +#endif +} + + +DECLHIDDEN(int) rtR0InitNative(void) +{ +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 5, 41) + #if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 13) + g_prtR0LnxWorkQueue = create_workqueue("iprt-VBoxWQueue"); + #else + g_prtR0LnxWorkQueue = create_workqueue("iprt-VBoxQ"); + #endif + if (!g_prtR0LnxWorkQueue) + return VERR_NO_MEMORY; +#endif + + return VINF_SUCCESS; +} + + +DECLHIDDEN(void) rtR0TermNative(void) +{ + rtR0LnxWorkqueueFlush(); +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 5, 41) + destroy_workqueue(g_prtR0LnxWorkQueue); + g_prtR0LnxWorkQueue = NULL; +#endif + + rtR0MemExecCleanup(); +} + --- linux-raspi2-4.2.0.orig/ubuntu/vbox/r0drv/linux/memobj-r0drv-linux.c +++ linux-raspi2-4.2.0/ubuntu/vbox/r0drv/linux/memobj-r0drv-linux.c @@ -0,0 +1,1626 @@ +/* $Id: memobj-r0drv-linux.c $ */ +/** @file + * IPRT - Ring-0 Memory Objects, Linux. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + + +/******************************************************************************* +* Header Files * +*******************************************************************************/ +#include "the-linux-kernel.h" + +#include +#include +#include +#include +#include +#include +#include "internal/memobj.h" + + +/******************************************************************************* +* Defined Constants And Macros * +*******************************************************************************/ +/* early 2.6 kernels */ +#ifndef PAGE_SHARED_EXEC +# define PAGE_SHARED_EXEC PAGE_SHARED +#endif +#ifndef PAGE_READONLY_EXEC +# define PAGE_READONLY_EXEC PAGE_READONLY +#endif + +/* + * 2.6.29+ kernels don't work with remap_pfn_range() anymore because + * track_pfn_vma_new() is apparently not defined for non-RAM pages. + * It should be safe to use vm_insert_page() older kernels as well. + */ +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 23) +# define VBOX_USE_INSERT_PAGE +#endif +#if defined(CONFIG_X86_PAE) \ + && ( defined(HAVE_26_STYLE_REMAP_PAGE_RANGE) \ + || ( LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 0) \ + && LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 11))) +# define VBOX_USE_PAE_HACK +#endif + + +/******************************************************************************* +* Structures and Typedefs * +*******************************************************************************/ +/** + * The Darwin version of the memory object structure. + */ +typedef struct RTR0MEMOBJLNX +{ + /** The core structure. */ + RTR0MEMOBJINTERNAL Core; + /** Set if the allocation is contiguous. + * This means it has to be given back as one chunk. */ + bool fContiguous; + /** Set if we've vmap'ed the memory into ring-0. */ + bool fMappedToRing0; + /** The pages in the apPages array. */ + size_t cPages; + /** Array of struct page pointers. (variable size) */ + struct page *apPages[1]; +} RTR0MEMOBJLNX, *PRTR0MEMOBJLNX; + + +static void rtR0MemObjLinuxFreePages(PRTR0MEMOBJLNX pMemLnx); + + +/** + * Helper that converts from a RTR0PROCESS handle to a linux task. + * + * @returns The corresponding Linux task. + * @param R0Process IPRT ring-0 process handle. + */ +static struct task_struct *rtR0ProcessToLinuxTask(RTR0PROCESS R0Process) +{ + /** @todo fix rtR0ProcessToLinuxTask!! */ + /** @todo many (all?) callers currently assume that we return 'current'! */ + return R0Process == RTR0ProcHandleSelf() ? current : NULL; +} + + +/** + * Compute order. Some functions allocate 2^order pages. + * + * @returns order. + * @param cPages Number of pages. + */ +static int rtR0MemObjLinuxOrder(size_t cPages) +{ + int iOrder; + size_t cTmp; + + for (iOrder = 0, cTmp = cPages; cTmp >>= 1; ++iOrder) + ; + if (cPages & ~((size_t)1 << iOrder)) + ++iOrder; + + return iOrder; +} + + +/** + * Converts from RTMEM_PROT_* to Linux PAGE_*. + * + * @returns Linux page protection constant. + * @param fProt The IPRT protection mask. + * @param fKernel Whether it applies to kernel or user space. + */ +static pgprot_t rtR0MemObjLinuxConvertProt(unsigned fProt, bool fKernel) +{ + switch (fProt) + { + default: + AssertMsgFailed(("%#x %d\n", fProt, fKernel)); + case RTMEM_PROT_NONE: + return PAGE_NONE; + + case RTMEM_PROT_READ: + return fKernel ? PAGE_KERNEL_RO : PAGE_READONLY; + + case RTMEM_PROT_WRITE: + case RTMEM_PROT_WRITE | RTMEM_PROT_READ: + return fKernel ? PAGE_KERNEL : PAGE_SHARED; + + case RTMEM_PROT_EXEC: + case RTMEM_PROT_EXEC | RTMEM_PROT_READ: +#if defined(RT_ARCH_X86) || defined(RT_ARCH_AMD64) + if (fKernel) + { + pgprot_t fPg = MY_PAGE_KERNEL_EXEC; + pgprot_val(fPg) &= ~_PAGE_RW; + return fPg; + } + return PAGE_READONLY_EXEC; +#else + return fKernel ? MY_PAGE_KERNEL_EXEC : PAGE_READONLY_EXEC; +#endif + + case RTMEM_PROT_WRITE | RTMEM_PROT_EXEC: + case RTMEM_PROT_WRITE | RTMEM_PROT_EXEC | RTMEM_PROT_READ: + return fKernel ? MY_PAGE_KERNEL_EXEC : PAGE_SHARED_EXEC; + } +} + + +/** + * Worker for rtR0MemObjNativeReserveUser and rtR0MemObjNativerMapUser that creates + * an empty user space mapping. + * + * We acquire the mmap_sem of the task! + * + * @returns Pointer to the mapping. + * (void *)-1 on failure. + * @param R3PtrFixed (RTR3PTR)-1 if anywhere, otherwise a specific location. + * @param cb The size of the mapping. + * @param uAlignment The alignment of the mapping. + * @param pTask The Linux task to create this mapping in. + * @param fProt The RTMEM_PROT_* mask. + */ +static void *rtR0MemObjLinuxDoMmap(RTR3PTR R3PtrFixed, size_t cb, size_t uAlignment, struct task_struct *pTask, unsigned fProt) +{ + unsigned fLnxProt; + unsigned long ulAddr; + + Assert((pTask == current)); /* do_mmap */ + + /* + * Convert from IPRT protection to mman.h PROT_ and call do_mmap. + */ + fProt &= (RTMEM_PROT_NONE | RTMEM_PROT_READ | RTMEM_PROT_WRITE | RTMEM_PROT_EXEC); + if (fProt == RTMEM_PROT_NONE) + fLnxProt = PROT_NONE; + else + { + fLnxProt = 0; + if (fProt & RTMEM_PROT_READ) + fLnxProt |= PROT_READ; + if (fProt & RTMEM_PROT_WRITE) + fLnxProt |= PROT_WRITE; + if (fProt & RTMEM_PROT_EXEC) + fLnxProt |= PROT_EXEC; + } + + if (R3PtrFixed != (RTR3PTR)-1) + { +#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 5, 0) + ulAddr = vm_mmap(NULL, R3PtrFixed, cb, fLnxProt, MAP_SHARED | MAP_ANONYMOUS | MAP_FIXED, 0); +#else + down_write(&pTask->mm->mmap_sem); + ulAddr = do_mmap(NULL, R3PtrFixed, cb, fLnxProt, MAP_SHARED | MAP_ANONYMOUS | MAP_FIXED, 0); + up_write(&pTask->mm->mmap_sem); +#endif + } + else + { +#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 5, 0) + ulAddr = vm_mmap(NULL, 0, cb, fLnxProt, MAP_SHARED | MAP_ANONYMOUS, 0); +#else + down_write(&pTask->mm->mmap_sem); + ulAddr = do_mmap(NULL, 0, cb, fLnxProt, MAP_SHARED | MAP_ANONYMOUS, 0); + up_write(&pTask->mm->mmap_sem); +#endif + if ( !(ulAddr & ~PAGE_MASK) + && (ulAddr & (uAlignment - 1))) + { + /** @todo implement uAlignment properly... We'll probably need to make some dummy mappings to fill + * up alignment gaps. This is of course complicated by fragmentation (which we might have cause + * ourselves) and further by there begin two mmap strategies (top / bottom). */ + /* For now, just ignore uAlignment requirements... */ + } + } + + + if (ulAddr & ~PAGE_MASK) /* ~PAGE_MASK == PAGE_OFFSET_MASK */ + return (void *)-1; + return (void *)ulAddr; +} + + +/** + * Worker that destroys a user space mapping. + * Undoes what rtR0MemObjLinuxDoMmap did. + * + * We acquire the mmap_sem of the task! + * + * @param pv The ring-3 mapping. + * @param cb The size of the mapping. + * @param pTask The Linux task to destroy this mapping in. + */ +static void rtR0MemObjLinuxDoMunmap(void *pv, size_t cb, struct task_struct *pTask) +{ +#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 5, 0) + Assert(pTask == current); + vm_munmap((unsigned long)pv, cb); +#elif defined(USE_RHEL4_MUNMAP) + down_write(&pTask->mm->mmap_sem); + do_munmap(pTask->mm, (unsigned long)pv, cb, 0); /* should it be 1 or 0? */ + up_write(&pTask->mm->mmap_sem); +#else + down_write(&pTask->mm->mmap_sem); + do_munmap(pTask->mm, (unsigned long)pv, cb); + up_write(&pTask->mm->mmap_sem); +#endif +} + + +/** + * Internal worker that allocates physical pages and creates the memory object for them. + * + * @returns IPRT status code. + * @param ppMemLnx Where to store the memory object pointer. + * @param enmType The object type. + * @param cb The number of bytes to allocate. + * @param uAlignment The alignment of the physical memory. + * Only valid if fContiguous == true, ignored otherwise. + * @param fFlagsLnx The page allocation flags (GPFs). + * @param fContiguous Whether the allocation must be contiguous. + * @param rcNoMem What to return when we're out of pages. + */ +static int rtR0MemObjLinuxAllocPages(PRTR0MEMOBJLNX *ppMemLnx, RTR0MEMOBJTYPE enmType, size_t cb, + size_t uAlignment, unsigned fFlagsLnx, bool fContiguous, int rcNoMem) +{ + size_t iPage; + size_t const cPages = cb >> PAGE_SHIFT; + struct page *paPages; + + /* + * Allocate a memory object structure that's large enough to contain + * the page pointer array. + */ + PRTR0MEMOBJLNX pMemLnx = (PRTR0MEMOBJLNX)rtR0MemObjNew(RT_OFFSETOF(RTR0MEMOBJLNX, apPages[cPages]), enmType, NULL, cb); + if (!pMemLnx) + return VERR_NO_MEMORY; + pMemLnx->cPages = cPages; + + if (cPages > 255) + { +# ifdef __GFP_REPEAT + /* Try hard to allocate the memory, but the allocation attempt might fail. */ + fFlagsLnx |= __GFP_REPEAT; +# endif +# ifdef __GFP_NOMEMALLOC + /* Introduced with Linux 2.6.12: Don't use emergency reserves */ + fFlagsLnx |= __GFP_NOMEMALLOC; +# endif + } + + /* + * Allocate the pages. + * For small allocations we'll try contiguous first and then fall back on page by page. + */ +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 4, 22) + if ( fContiguous + || cb <= PAGE_SIZE * 2) + { +# ifdef VBOX_USE_INSERT_PAGE + paPages = alloc_pages(fFlagsLnx | __GFP_COMP | __GFP_NOWARN, rtR0MemObjLinuxOrder(cPages)); +# else + paPages = alloc_pages(fFlagsLnx | __GFP_NOWARN, rtR0MemObjLinuxOrder(cPages)); +# endif + if (paPages) + { + fContiguous = true; + for (iPage = 0; iPage < cPages; iPage++) + pMemLnx->apPages[iPage] = &paPages[iPage]; + } + else if (fContiguous) + { + rtR0MemObjDelete(&pMemLnx->Core); + return rcNoMem; + } + } + + if (!fContiguous) + { + for (iPage = 0; iPage < cPages; iPage++) + { + pMemLnx->apPages[iPage] = alloc_page(fFlagsLnx | __GFP_NOWARN); + if (RT_UNLIKELY(!pMemLnx->apPages[iPage])) + { + while (iPage-- > 0) + __free_page(pMemLnx->apPages[iPage]); + rtR0MemObjDelete(&pMemLnx->Core); + return rcNoMem; + } + } + } + +#else /* < 2.4.22 */ + /** @todo figure out why we didn't allocate page-by-page on 2.4.21 and older... */ + paPages = alloc_pages(fFlagsLnx, rtR0MemObjLinuxOrder(cPages)); + if (!paPages) + { + rtR0MemObjDelete(&pMemLnx->Core); + return rcNoMem; + } + for (iPage = 0; iPage < cPages; iPage++) + { + pMemLnx->apPages[iPage] = &paPages[iPage]; + MY_SET_PAGES_EXEC(pMemLnx->apPages[iPage], 1); + if (PageHighMem(pMemLnx->apPages[iPage])) + BUG(); + } + + fContiguous = true; +#endif /* < 2.4.22 */ + pMemLnx->fContiguous = fContiguous; + + /* + * Reserve the pages. + */ + for (iPage = 0; iPage < cPages; iPage++) + SetPageReserved(pMemLnx->apPages[iPage]); + + /* + * Note that the physical address of memory allocated with alloc_pages(flags, order) + * is always 2^(PAGE_SHIFT+order)-aligned. + */ + if ( fContiguous + && uAlignment > PAGE_SIZE) + { + /* + * Check for alignment constraints. The physical address of memory allocated with + * alloc_pages(flags, order) is always 2^(PAGE_SHIFT+order)-aligned. + */ + if (RT_UNLIKELY(page_to_phys(pMemLnx->apPages[0]) & (uAlignment - 1))) + { + /* + * This should never happen! + */ + printk("rtR0MemObjLinuxAllocPages(cb=0x%lx, uAlignment=0x%lx): alloc_pages(..., %d) returned physical memory at 0x%lx!\n", + (unsigned long)cb, (unsigned long)uAlignment, rtR0MemObjLinuxOrder(cPages), (unsigned long)page_to_phys(pMemLnx->apPages[0])); + rtR0MemObjLinuxFreePages(pMemLnx); + return rcNoMem; + } + } + + *ppMemLnx = pMemLnx; + return VINF_SUCCESS; +} + + +/** + * Frees the physical pages allocated by the rtR0MemObjLinuxAllocPages() call. + * + * This method does NOT free the object. + * + * @param pMemLnx The object which physical pages should be freed. + */ +static void rtR0MemObjLinuxFreePages(PRTR0MEMOBJLNX pMemLnx) +{ + size_t iPage = pMemLnx->cPages; + if (iPage > 0) + { + /* + * Restore the page flags. + */ + while (iPage-- > 0) + { + ClearPageReserved(pMemLnx->apPages[iPage]); +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 4, 22) +#else + MY_SET_PAGES_NOEXEC(pMemLnx->apPages[iPage], 1); +#endif + } + + /* + * Free the pages. + */ +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 4, 22) + if (!pMemLnx->fContiguous) + { + iPage = pMemLnx->cPages; + while (iPage-- > 0) + __free_page(pMemLnx->apPages[iPage]); + } + else +#endif + __free_pages(pMemLnx->apPages[0], rtR0MemObjLinuxOrder(pMemLnx->cPages)); + + pMemLnx->cPages = 0; + } +} + + +/** + * Maps the allocation into ring-0. + * + * This will update the RTR0MEMOBJLNX::Core.pv and RTR0MEMOBJ::fMappedToRing0 members. + * + * Contiguous mappings that isn't in 'high' memory will already be mapped into kernel + * space, so we'll use that mapping if possible. If execute access is required, we'll + * play safe and do our own mapping. + * + * @returns IPRT status code. + * @param pMemLnx The linux memory object to map. + * @param fExecutable Whether execute access is required. + */ +static int rtR0MemObjLinuxVMap(PRTR0MEMOBJLNX pMemLnx, bool fExecutable) +{ + int rc = VINF_SUCCESS; + + /* + * Choose mapping strategy. + */ + bool fMustMap = fExecutable + || !pMemLnx->fContiguous; + if (!fMustMap) + { + size_t iPage = pMemLnx->cPages; + while (iPage-- > 0) + if (PageHighMem(pMemLnx->apPages[iPage])) + { + fMustMap = true; + break; + } + } + + Assert(!pMemLnx->Core.pv); + Assert(!pMemLnx->fMappedToRing0); + + if (fMustMap) + { + /* + * Use vmap - 2.4.22 and later. + */ +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 4, 22) + pgprot_t fPg; + pgprot_val(fPg) = _PAGE_PRESENT | _PAGE_RW; +# ifdef _PAGE_NX + if (!fExecutable) + pgprot_val(fPg) |= _PAGE_NX; +# endif + +# ifdef VM_MAP + pMemLnx->Core.pv = vmap(&pMemLnx->apPages[0], pMemLnx->cPages, VM_MAP, fPg); +# else + pMemLnx->Core.pv = vmap(&pMemLnx->apPages[0], pMemLnx->cPages, VM_ALLOC, fPg); +# endif + if (pMemLnx->Core.pv) + pMemLnx->fMappedToRing0 = true; + else + rc = VERR_MAP_FAILED; +#else /* < 2.4.22 */ + rc = VERR_NOT_SUPPORTED; +#endif + } + else + { + /* + * Use the kernel RAM mapping. + */ + pMemLnx->Core.pv = phys_to_virt(page_to_phys(pMemLnx->apPages[0])); + Assert(pMemLnx->Core.pv); + } + + return rc; +} + + +/** + * Undoes what rtR0MemObjLinuxVMap() did. + * + * @param pMemLnx The linux memory object. + */ +static void rtR0MemObjLinuxVUnmap(PRTR0MEMOBJLNX pMemLnx) +{ +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 4, 22) + if (pMemLnx->fMappedToRing0) + { + Assert(pMemLnx->Core.pv); + vunmap(pMemLnx->Core.pv); + pMemLnx->fMappedToRing0 = false; + } +#else /* < 2.4.22 */ + Assert(!pMemLnx->fMappedToRing0); +#endif + pMemLnx->Core.pv = NULL; +} + + +DECLHIDDEN(int) rtR0MemObjNativeFree(RTR0MEMOBJ pMem) +{ + PRTR0MEMOBJLNX pMemLnx = (PRTR0MEMOBJLNX)pMem; + + /* + * Release any memory that we've allocated or locked. + */ + switch (pMemLnx->Core.enmType) + { + case RTR0MEMOBJTYPE_LOW: + case RTR0MEMOBJTYPE_PAGE: + case RTR0MEMOBJTYPE_CONT: + case RTR0MEMOBJTYPE_PHYS: + case RTR0MEMOBJTYPE_PHYS_NC: + rtR0MemObjLinuxVUnmap(pMemLnx); + rtR0MemObjLinuxFreePages(pMemLnx); + break; + + case RTR0MEMOBJTYPE_LOCK: + if (pMemLnx->Core.u.Lock.R0Process != NIL_RTR0PROCESS) + { + struct task_struct *pTask = rtR0ProcessToLinuxTask(pMemLnx->Core.u.Lock.R0Process); + size_t iPage; + Assert(pTask); + if (pTask && pTask->mm) + down_read(&pTask->mm->mmap_sem); + + iPage = pMemLnx->cPages; + while (iPage-- > 0) + { + if (!PageReserved(pMemLnx->apPages[iPage])) + SetPageDirty(pMemLnx->apPages[iPage]); + page_cache_release(pMemLnx->apPages[iPage]); + } + + if (pTask && pTask->mm) + up_read(&pTask->mm->mmap_sem); + } + /* else: kernel memory - nothing to do here. */ + break; + + case RTR0MEMOBJTYPE_RES_VIRT: + Assert(pMemLnx->Core.pv); + if (pMemLnx->Core.u.ResVirt.R0Process != NIL_RTR0PROCESS) + { + struct task_struct *pTask = rtR0ProcessToLinuxTask(pMemLnx->Core.u.Lock.R0Process); + Assert(pTask); + if (pTask && pTask->mm) + rtR0MemObjLinuxDoMunmap(pMemLnx->Core.pv, pMemLnx->Core.cb, pTask); + } + else + { + vunmap(pMemLnx->Core.pv); + + Assert(pMemLnx->cPages == 1 && pMemLnx->apPages[0] != NULL); + __free_page(pMemLnx->apPages[0]); + pMemLnx->apPages[0] = NULL; + pMemLnx->cPages = 0; + } + pMemLnx->Core.pv = NULL; + break; + + case RTR0MEMOBJTYPE_MAPPING: + Assert(pMemLnx->cPages == 0); Assert(pMemLnx->Core.pv); + if (pMemLnx->Core.u.ResVirt.R0Process != NIL_RTR0PROCESS) + { + struct task_struct *pTask = rtR0ProcessToLinuxTask(pMemLnx->Core.u.Lock.R0Process); + Assert(pTask); + if (pTask && pTask->mm) + rtR0MemObjLinuxDoMunmap(pMemLnx->Core.pv, pMemLnx->Core.cb, pTask); + } + else + vunmap(pMemLnx->Core.pv); + pMemLnx->Core.pv = NULL; + break; + + default: + AssertMsgFailed(("enmType=%d\n", pMemLnx->Core.enmType)); + return VERR_INTERNAL_ERROR; + } + return VINF_SUCCESS; +} + + +DECLHIDDEN(int) rtR0MemObjNativeAllocPage(PPRTR0MEMOBJINTERNAL ppMem, size_t cb, bool fExecutable) +{ + PRTR0MEMOBJLNX pMemLnx; + int rc; + +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 4, 22) + rc = rtR0MemObjLinuxAllocPages(&pMemLnx, RTR0MEMOBJTYPE_PAGE, cb, PAGE_SIZE, GFP_HIGHUSER, + false /* non-contiguous */, VERR_NO_MEMORY); +#else + rc = rtR0MemObjLinuxAllocPages(&pMemLnx, RTR0MEMOBJTYPE_PAGE, cb, PAGE_SIZE, GFP_USER, + false /* non-contiguous */, VERR_NO_MEMORY); +#endif + if (RT_SUCCESS(rc)) + { + rc = rtR0MemObjLinuxVMap(pMemLnx, fExecutable); + if (RT_SUCCESS(rc)) + { + *ppMem = &pMemLnx->Core; + return rc; + } + + rtR0MemObjLinuxFreePages(pMemLnx); + rtR0MemObjDelete(&pMemLnx->Core); + } + + return rc; +} + + +DECLHIDDEN(int) rtR0MemObjNativeAllocLow(PPRTR0MEMOBJINTERNAL ppMem, size_t cb, bool fExecutable) +{ + PRTR0MEMOBJLNX pMemLnx; + int rc; + + /* Try to avoid GFP_DMA. GFM_DMA32 was introduced with Linux 2.6.15. */ +#if (defined(RT_ARCH_AMD64) || defined(CONFIG_X86_PAE)) && defined(GFP_DMA32) + /* ZONE_DMA32: 0-4GB */ + rc = rtR0MemObjLinuxAllocPages(&pMemLnx, RTR0MEMOBJTYPE_LOW, cb, PAGE_SIZE, GFP_DMA32, + false /* non-contiguous */, VERR_NO_LOW_MEMORY); + if (RT_FAILURE(rc)) +#endif +#ifdef RT_ARCH_AMD64 + /* ZONE_DMA: 0-16MB */ + rc = rtR0MemObjLinuxAllocPages(&pMemLnx, RTR0MEMOBJTYPE_LOW, cb, PAGE_SIZE, GFP_DMA, + false /* non-contiguous */, VERR_NO_LOW_MEMORY); +#else +# ifdef CONFIG_X86_PAE +# endif + /* ZONE_NORMAL: 0-896MB */ + rc = rtR0MemObjLinuxAllocPages(&pMemLnx, RTR0MEMOBJTYPE_LOW, cb, PAGE_SIZE, GFP_USER, + false /* non-contiguous */, VERR_NO_LOW_MEMORY); +#endif + if (RT_SUCCESS(rc)) + { + rc = rtR0MemObjLinuxVMap(pMemLnx, fExecutable); + if (RT_SUCCESS(rc)) + { + *ppMem = &pMemLnx->Core; + return rc; + } + + rtR0MemObjLinuxFreePages(pMemLnx); + rtR0MemObjDelete(&pMemLnx->Core); + } + + return rc; +} + + +DECLHIDDEN(int) rtR0MemObjNativeAllocCont(PPRTR0MEMOBJINTERNAL ppMem, size_t cb, bool fExecutable) +{ + PRTR0MEMOBJLNX pMemLnx; + int rc; + +#if (defined(RT_ARCH_AMD64) || defined(CONFIG_X86_PAE)) && defined(GFP_DMA32) + /* ZONE_DMA32: 0-4GB */ + rc = rtR0MemObjLinuxAllocPages(&pMemLnx, RTR0MEMOBJTYPE_CONT, cb, PAGE_SIZE, GFP_DMA32, + true /* contiguous */, VERR_NO_CONT_MEMORY); + if (RT_FAILURE(rc)) +#endif +#ifdef RT_ARCH_AMD64 + /* ZONE_DMA: 0-16MB */ + rc = rtR0MemObjLinuxAllocPages(&pMemLnx, RTR0MEMOBJTYPE_CONT, cb, PAGE_SIZE, GFP_DMA, + true /* contiguous */, VERR_NO_CONT_MEMORY); +#else + /* ZONE_NORMAL (32-bit hosts): 0-896MB */ + rc = rtR0MemObjLinuxAllocPages(&pMemLnx, RTR0MEMOBJTYPE_CONT, cb, PAGE_SIZE, GFP_USER, + true /* contiguous */, VERR_NO_CONT_MEMORY); +#endif + if (RT_SUCCESS(rc)) + { + rc = rtR0MemObjLinuxVMap(pMemLnx, fExecutable); + if (RT_SUCCESS(rc)) + { +#if defined(RT_STRICT) && (defined(RT_ARCH_AMD64) || defined(CONFIG_HIGHMEM64G)) + size_t iPage = pMemLnx->cPages; + while (iPage-- > 0) + Assert(page_to_phys(pMemLnx->apPages[iPage]) < _4G); +#endif + pMemLnx->Core.u.Cont.Phys = page_to_phys(pMemLnx->apPages[0]); + *ppMem = &pMemLnx->Core; + return rc; + } + + rtR0MemObjLinuxFreePages(pMemLnx); + rtR0MemObjDelete(&pMemLnx->Core); + } + + return rc; +} + + +/** + * Worker for rtR0MemObjLinuxAllocPhysSub that tries one allocation strategy. + * + * @returns IPRT status. + * @param ppMemLnx Where to + * @param enmType The object type. + * @param cb The size of the allocation. + * @param uAlignment The alignment of the physical memory. + * Only valid for fContiguous == true, ignored otherwise. + * @param PhysHighest See rtR0MemObjNativeAllocPhys. + * @param fGfp The Linux GFP flags to use for the allocation. + */ +static int rtR0MemObjLinuxAllocPhysSub2(PPRTR0MEMOBJINTERNAL ppMem, RTR0MEMOBJTYPE enmType, + size_t cb, size_t uAlignment, RTHCPHYS PhysHighest, unsigned fGfp) +{ + PRTR0MEMOBJLNX pMemLnx; + int rc; + + rc = rtR0MemObjLinuxAllocPages(&pMemLnx, enmType, cb, uAlignment, fGfp, + enmType == RTR0MEMOBJTYPE_PHYS /* contiguous / non-contiguous */, + VERR_NO_PHYS_MEMORY); + if (RT_FAILURE(rc)) + return rc; + + /* + * Check the addresses if necessary. (Can be optimized a bit for PHYS.) + */ + if (PhysHighest != NIL_RTHCPHYS) + { + size_t iPage = pMemLnx->cPages; + while (iPage-- > 0) + if (page_to_phys(pMemLnx->apPages[iPage]) > PhysHighest) + { + rtR0MemObjLinuxFreePages(pMemLnx); + rtR0MemObjDelete(&pMemLnx->Core); + return VERR_NO_MEMORY; + } + } + + /* + * Complete the object. + */ + if (enmType == RTR0MEMOBJTYPE_PHYS) + { + pMemLnx->Core.u.Phys.PhysBase = page_to_phys(pMemLnx->apPages[0]); + pMemLnx->Core.u.Phys.fAllocated = true; + } + *ppMem = &pMemLnx->Core; + return rc; +} + + +/** + * Worker for rtR0MemObjNativeAllocPhys and rtR0MemObjNativeAllocPhysNC. + * + * @returns IPRT status. + * @param ppMem Where to store the memory object pointer on success. + * @param enmType The object type. + * @param cb The size of the allocation. + * @param uAlignment The alignment of the physical memory. + * Only valid for enmType == RTR0MEMOBJTYPE_PHYS, ignored otherwise. + * @param PhysHighest See rtR0MemObjNativeAllocPhys. + */ +static int rtR0MemObjLinuxAllocPhysSub(PPRTR0MEMOBJINTERNAL ppMem, RTR0MEMOBJTYPE enmType, + size_t cb, size_t uAlignment, RTHCPHYS PhysHighest) +{ + int rc; + + /* + * There are two clear cases and that's the <=16MB and anything-goes ones. + * When the physical address limit is somewhere in-between those two we'll + * just have to try, starting with HIGHUSER and working our way thru the + * different types, hoping we'll get lucky. + * + * We should probably move this physical address restriction logic up to + * the page alloc function as it would be more efficient there. But since + * we don't expect this to be a performance issue just yet it can wait. + */ + if (PhysHighest == NIL_RTHCPHYS) + /* ZONE_HIGHMEM: the whole physical memory */ + rc = rtR0MemObjLinuxAllocPhysSub2(ppMem, enmType, cb, uAlignment, PhysHighest, GFP_HIGHUSER); + else if (PhysHighest <= _1M * 16) + /* ZONE_DMA: 0-16MB */ + rc = rtR0MemObjLinuxAllocPhysSub2(ppMem, enmType, cb, uAlignment, PhysHighest, GFP_DMA); + else + { + rc = VERR_NO_MEMORY; + if (RT_FAILURE(rc)) + /* ZONE_HIGHMEM: the whole physical memory */ + rc = rtR0MemObjLinuxAllocPhysSub2(ppMem, enmType, cb, uAlignment, PhysHighest, GFP_HIGHUSER); + if (RT_FAILURE(rc)) + /* ZONE_NORMAL: 0-896MB */ + rc = rtR0MemObjLinuxAllocPhysSub2(ppMem, enmType, cb, uAlignment, PhysHighest, GFP_USER); +#ifdef GFP_DMA32 + if (RT_FAILURE(rc)) + /* ZONE_DMA32: 0-4GB */ + rc = rtR0MemObjLinuxAllocPhysSub2(ppMem, enmType, cb, uAlignment, PhysHighest, GFP_DMA32); +#endif + if (RT_FAILURE(rc)) + /* ZONE_DMA: 0-16MB */ + rc = rtR0MemObjLinuxAllocPhysSub2(ppMem, enmType, cb, uAlignment, PhysHighest, GFP_DMA); + } + return rc; +} + + +/** + * Translates a kernel virtual address to a linux page structure by walking the + * page tables. + * + * @note We do assume that the page tables will not change as we are walking + * them. This assumption is rather forced by the fact that I could not + * immediately see any way of preventing this from happening. So, we + * take some extra care when accessing them. + * + * Because of this, we don't want to use this function on memory where + * attribute changes to nearby pages is likely to cause large pages to + * be used or split up. So, don't use this for the linear mapping of + * physical memory. + * + * @returns Pointer to the page structur or NULL if it could not be found. + * @param pv The kernel virtual address. + */ +static struct page *rtR0MemObjLinuxVirtToPage(void *pv) +{ + unsigned long ulAddr = (unsigned long)pv; + unsigned long pfn; + struct page *pPage; + pte_t *pEntry; + union + { + pgd_t Global; +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 11) + pud_t Upper; +#endif + pmd_t Middle; + pte_t Entry; + } u; + + /* Should this happen in a situation this code will be called in? And if + * so, can it change under our feet? See also + * "Documentation/vm/active_mm.txt" in the kernel sources. */ + if (RT_UNLIKELY(!current->active_mm)) + return NULL; + u.Global = *pgd_offset(current->active_mm, ulAddr); + if (RT_UNLIKELY(pgd_none(u.Global))) + return NULL; + +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 11) + u.Upper = *pud_offset(&u.Global, ulAddr); + if (RT_UNLIKELY(pud_none(u.Upper))) + return NULL; +# if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 25) + if (pud_large(u.Upper)) + { + pPage = pud_page(u.Upper); + AssertReturn(pPage, NULL); + pfn = page_to_pfn(pPage); /* doing the safe way... */ + pfn += (ulAddr >> PAGE_SHIFT) & ((UINT32_C(1) << (PUD_SHIFT - PAGE_SHIFT)) - 1); + return pfn_to_page(pfn); + } +# endif + + u.Middle = *pmd_offset(&u.Upper, ulAddr); +#else /* < 2.6.11 */ + u.Middle = *pmd_offset(&u.Global, ulAddr); +#endif /* < 2.6.11 */ + if (RT_UNLIKELY(pmd_none(u.Middle))) + return NULL; +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 0) + if (pmd_large(u.Middle)) + { + pPage = pmd_page(u.Middle); + AssertReturn(pPage, NULL); + pfn = page_to_pfn(pPage); /* doing the safe way... */ + pfn += (ulAddr >> PAGE_SHIFT) & ((UINT32_C(1) << (PMD_SHIFT - PAGE_SHIFT)) - 1); + return pfn_to_page(pfn); + } +#endif + +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 5, 5) || defined(pte_offset_map) /* As usual, RHEL 3 had pte_offset_map earlier. */ + pEntry = pte_offset_map(&u.Middle, ulAddr); +#else + pEntry = pte_offset(&u.Middle, ulAddr); +#endif + if (RT_UNLIKELY(!pEntry)) + return NULL; + u.Entry = *pEntry; +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 5, 5) || defined(pte_offset_map) + pte_unmap(pEntry); +#endif + + if (RT_UNLIKELY(!pte_present(u.Entry))) + return NULL; + return pte_page(u.Entry); +} + + +DECLHIDDEN(int) rtR0MemObjNativeAllocPhys(PPRTR0MEMOBJINTERNAL ppMem, size_t cb, RTHCPHYS PhysHighest, size_t uAlignment) +{ + return rtR0MemObjLinuxAllocPhysSub(ppMem, RTR0MEMOBJTYPE_PHYS, cb, uAlignment, PhysHighest); +} + + +DECLHIDDEN(int) rtR0MemObjNativeAllocPhysNC(PPRTR0MEMOBJINTERNAL ppMem, size_t cb, RTHCPHYS PhysHighest) +{ + return rtR0MemObjLinuxAllocPhysSub(ppMem, RTR0MEMOBJTYPE_PHYS_NC, cb, PAGE_SIZE, PhysHighest); +} + + +DECLHIDDEN(int) rtR0MemObjNativeEnterPhys(PPRTR0MEMOBJINTERNAL ppMem, RTHCPHYS Phys, size_t cb, uint32_t uCachePolicy) +{ + /* + * All we need to do here is to validate that we can use + * ioremap on the specified address (32/64-bit dma_addr_t). + */ + PRTR0MEMOBJLNX pMemLnx; + dma_addr_t PhysAddr = Phys; + AssertMsgReturn(PhysAddr == Phys, ("%#llx\n", (unsigned long long)Phys), VERR_ADDRESS_TOO_BIG); + + pMemLnx = (PRTR0MEMOBJLNX)rtR0MemObjNew(sizeof(*pMemLnx), RTR0MEMOBJTYPE_PHYS, NULL, cb); + if (!pMemLnx) + return VERR_NO_MEMORY; + + pMemLnx->Core.u.Phys.PhysBase = PhysAddr; + pMemLnx->Core.u.Phys.fAllocated = false; + pMemLnx->Core.u.Phys.uCachePolicy = uCachePolicy; + Assert(!pMemLnx->cPages); + *ppMem = &pMemLnx->Core; + return VINF_SUCCESS; +} + + +DECLHIDDEN(int) rtR0MemObjNativeLockUser(PPRTR0MEMOBJINTERNAL ppMem, RTR3PTR R3Ptr, size_t cb, uint32_t fAccess, RTR0PROCESS R0Process) +{ + const int cPages = cb >> PAGE_SHIFT; + struct task_struct *pTask = rtR0ProcessToLinuxTask(R0Process); + struct vm_area_struct **papVMAs; + PRTR0MEMOBJLNX pMemLnx; + int rc = VERR_NO_MEMORY; + int const fWrite = fAccess & RTMEM_PROT_WRITE ? 1 : 0; + + /* + * Check for valid task and size overflows. + */ + if (!pTask) + return VERR_NOT_SUPPORTED; + if (((size_t)cPages << PAGE_SHIFT) != cb) + return VERR_OUT_OF_RANGE; + + /* + * Allocate the memory object and a temporary buffer for the VMAs. + */ + pMemLnx = (PRTR0MEMOBJLNX)rtR0MemObjNew(RT_OFFSETOF(RTR0MEMOBJLNX, apPages[cPages]), RTR0MEMOBJTYPE_LOCK, (void *)R3Ptr, cb); + if (!pMemLnx) + return VERR_NO_MEMORY; + + papVMAs = (struct vm_area_struct **)RTMemAlloc(sizeof(*papVMAs) * cPages); + if (papVMAs) + { + down_read(&pTask->mm->mmap_sem); + + /* + * Get user pages. + */ + rc = get_user_pages(pTask, /* Task for fault accounting. */ + pTask->mm, /* Whose pages. */ + R3Ptr, /* Where from. */ + cPages, /* How many pages. */ + fWrite, /* Write to memory. */ + fWrite, /* force write access. */ + &pMemLnx->apPages[0], /* Page array. */ + papVMAs); /* vmas */ + if (rc == cPages) + { + /* + * Flush dcache (required?), protect against fork and _really_ pin the page + * table entries. get_user_pages() will protect against swapping out the + * pages but it will NOT protect against removing page table entries. This + * can be achieved with + * - using mlock / mmap(..., MAP_LOCKED, ...) from userland. This requires + * an appropriate limit set up with setrlimit(..., RLIMIT_MEMLOCK, ...). + * Usual Linux distributions support only a limited size of locked pages + * (e.g. 32KB). + * - setting the PageReserved bit (as we do in rtR0MemObjLinuxAllocPages() + * or by + * - setting the VM_LOCKED flag. This is the same as doing mlock() without + * a range check. + */ + /** @todo The Linux fork() protection will require more work if this API + * is to be used for anything but locking VM pages. */ + while (rc-- > 0) + { + flush_dcache_page(pMemLnx->apPages[rc]); + papVMAs[rc]->vm_flags |= (VM_DONTCOPY | VM_LOCKED); + } + + up_read(&pTask->mm->mmap_sem); + + RTMemFree(papVMAs); + + pMemLnx->Core.u.Lock.R0Process = R0Process; + pMemLnx->cPages = cPages; + Assert(!pMemLnx->fMappedToRing0); + *ppMem = &pMemLnx->Core; + + return VINF_SUCCESS; + } + + /* + * Failed - we need to unlock any pages that we succeeded to lock. + */ + while (rc-- > 0) + { + if (!PageReserved(pMemLnx->apPages[rc])) + SetPageDirty(pMemLnx->apPages[rc]); + page_cache_release(pMemLnx->apPages[rc]); + } + + up_read(&pTask->mm->mmap_sem); + + RTMemFree(papVMAs); + rc = VERR_LOCK_FAILED; + } + + rtR0MemObjDelete(&pMemLnx->Core); + return rc; +} + + +DECLHIDDEN(int) rtR0MemObjNativeLockKernel(PPRTR0MEMOBJINTERNAL ppMem, void *pv, size_t cb, uint32_t fAccess) +{ + void *pvLast = (uint8_t *)pv + cb - 1; + size_t const cPages = cb >> PAGE_SHIFT; + PRTR0MEMOBJLNX pMemLnx; + bool fLinearMapping; + int rc; + uint8_t *pbPage; + size_t iPage; + NOREF(fAccess); + + if ( !RTR0MemKernelIsValidAddr(pv) + || !RTR0MemKernelIsValidAddr(pv + cb)) + return VERR_INVALID_PARAMETER; + + /* + * The lower part of the kernel memory has a linear mapping between + * physical and virtual addresses. So we take a short cut here. This is + * assumed to be the cleanest way to handle those addresses (and the code + * is well tested, though the test for determining it is not very nice). + * If we ever decide it isn't we can still remove it. + */ +#if 0 + fLinearMapping = (unsigned long)pvLast < VMALLOC_START; +#else + fLinearMapping = (unsigned long)pv >= (unsigned long)__va(0) + && (unsigned long)pvLast < (unsigned long)high_memory; +#endif + + /* + * Allocate the memory object. + */ + pMemLnx = (PRTR0MEMOBJLNX)rtR0MemObjNew(RT_OFFSETOF(RTR0MEMOBJLNX, apPages[cPages]), RTR0MEMOBJTYPE_LOCK, pv, cb); + if (!pMemLnx) + return VERR_NO_MEMORY; + + /* + * Gather the pages. + * We ASSUME all kernel pages are non-swappable and non-movable. + */ + rc = VINF_SUCCESS; + pbPage = (uint8_t *)pvLast; + iPage = cPages; + if (!fLinearMapping) + { + while (iPage-- > 0) + { + struct page *pPage = rtR0MemObjLinuxVirtToPage(pbPage); + if (RT_UNLIKELY(!pPage)) + { + rc = VERR_LOCK_FAILED; + break; + } + pMemLnx->apPages[iPage] = pPage; + pbPage -= PAGE_SIZE; + } + } + else + { + while (iPage-- > 0) + { + pMemLnx->apPages[iPage] = virt_to_page(pbPage); + pbPage -= PAGE_SIZE; + } + } + if (RT_SUCCESS(rc)) + { + /* + * Complete the memory object and return. + */ + pMemLnx->Core.u.Lock.R0Process = NIL_RTR0PROCESS; + pMemLnx->cPages = cPages; + Assert(!pMemLnx->fMappedToRing0); + *ppMem = &pMemLnx->Core; + + return VINF_SUCCESS; + } + + rtR0MemObjDelete(&pMemLnx->Core); + return rc; +} + + +DECLHIDDEN(int) rtR0MemObjNativeReserveKernel(PPRTR0MEMOBJINTERNAL ppMem, void *pvFixed, size_t cb, size_t uAlignment) +{ +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 4, 22) + const size_t cPages = cb >> PAGE_SHIFT; + struct page *pDummyPage; + struct page **papPages; + + /* check for unsupported stuff. */ + AssertMsgReturn(pvFixed == (void *)-1, ("%p\n", pvFixed), VERR_NOT_SUPPORTED); + if (uAlignment > PAGE_SIZE) + return VERR_NOT_SUPPORTED; + + /* + * Allocate a dummy page and create a page pointer array for vmap such that + * the dummy page is mapped all over the reserved area. + */ + pDummyPage = alloc_page(GFP_HIGHUSER | __GFP_NOWARN); + if (!pDummyPage) + return VERR_NO_MEMORY; + papPages = RTMemAlloc(sizeof(*papPages) * cPages); + if (papPages) + { + void *pv; + size_t iPage = cPages; + while (iPage-- > 0) + papPages[iPage] = pDummyPage; +# ifdef VM_MAP + pv = vmap(papPages, cPages, VM_MAP, PAGE_KERNEL_RO); +# else + pv = vmap(papPages, cPages, VM_ALLOC, PAGE_KERNEL_RO); +# endif + RTMemFree(papPages); + if (pv) + { + PRTR0MEMOBJLNX pMemLnx = (PRTR0MEMOBJLNX)rtR0MemObjNew(sizeof(*pMemLnx), RTR0MEMOBJTYPE_RES_VIRT, pv, cb); + if (pMemLnx) + { + pMemLnx->Core.u.ResVirt.R0Process = NIL_RTR0PROCESS; + pMemLnx->cPages = 1; + pMemLnx->apPages[0] = pDummyPage; + *ppMem = &pMemLnx->Core; + return VINF_SUCCESS; + } + vunmap(pv); + } + } + __free_page(pDummyPage); + return VERR_NO_MEMORY; + +#else /* < 2.4.22 */ + /* + * Could probably use ioremap here, but the caller is in a better position than us + * to select some safe physical memory. + */ + return VERR_NOT_SUPPORTED; +#endif +} + + +DECLHIDDEN(int) rtR0MemObjNativeReserveUser(PPRTR0MEMOBJINTERNAL ppMem, RTR3PTR R3PtrFixed, size_t cb, size_t uAlignment, RTR0PROCESS R0Process) +{ + PRTR0MEMOBJLNX pMemLnx; + void *pv; + struct task_struct *pTask = rtR0ProcessToLinuxTask(R0Process); + if (!pTask) + return VERR_NOT_SUPPORTED; + + /* + * Check that the specified alignment is supported. + */ + if (uAlignment > PAGE_SIZE) + return VERR_NOT_SUPPORTED; + + /* + * Let rtR0MemObjLinuxDoMmap do the difficult bits. + */ + pv = rtR0MemObjLinuxDoMmap(R3PtrFixed, cb, uAlignment, pTask, RTMEM_PROT_NONE); + if (pv == (void *)-1) + return VERR_NO_MEMORY; + + pMemLnx = (PRTR0MEMOBJLNX)rtR0MemObjNew(sizeof(*pMemLnx), RTR0MEMOBJTYPE_RES_VIRT, pv, cb); + if (!pMemLnx) + { + rtR0MemObjLinuxDoMunmap(pv, cb, pTask); + return VERR_NO_MEMORY; + } + + pMemLnx->Core.u.ResVirt.R0Process = R0Process; + *ppMem = &pMemLnx->Core; + return VINF_SUCCESS; +} + + +DECLHIDDEN(int) rtR0MemObjNativeMapKernel(PPRTR0MEMOBJINTERNAL ppMem, RTR0MEMOBJ pMemToMap, + void *pvFixed, size_t uAlignment, + unsigned fProt, size_t offSub, size_t cbSub) +{ + int rc = VERR_NO_MEMORY; + PRTR0MEMOBJLNX pMemLnxToMap = (PRTR0MEMOBJLNX)pMemToMap; + PRTR0MEMOBJLNX pMemLnx; + + /* Fail if requested to do something we can't. */ + AssertMsgReturn(!offSub && !cbSub, ("%#x %#x\n", offSub, cbSub), VERR_NOT_SUPPORTED); + AssertMsgReturn(pvFixed == (void *)-1, ("%p\n", pvFixed), VERR_NOT_SUPPORTED); + if (uAlignment > PAGE_SIZE) + return VERR_NOT_SUPPORTED; + + /* + * Create the IPRT memory object. + */ + pMemLnx = (PRTR0MEMOBJLNX)rtR0MemObjNew(sizeof(*pMemLnx), RTR0MEMOBJTYPE_MAPPING, NULL, pMemLnxToMap->Core.cb); + if (pMemLnx) + { + if (pMemLnxToMap->cPages) + { +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 4, 22) + /* + * Use vmap - 2.4.22 and later. + */ + pgprot_t fPg = rtR0MemObjLinuxConvertProt(fProt, true /* kernel */); +# ifdef VM_MAP + pMemLnx->Core.pv = vmap(&pMemLnxToMap->apPages[0], pMemLnxToMap->cPages, VM_MAP, fPg); +# else + pMemLnx->Core.pv = vmap(&pMemLnxToMap->apPages[0], pMemLnxToMap->cPages, VM_ALLOC, fPg); +# endif + if (pMemLnx->Core.pv) + { + pMemLnx->fMappedToRing0 = true; + rc = VINF_SUCCESS; + } + else + rc = VERR_MAP_FAILED; + +#else /* < 2.4.22 */ + /* + * Only option here is to share mappings if possible and forget about fProt. + */ + if (rtR0MemObjIsRing3(pMemToMap)) + rc = VERR_NOT_SUPPORTED; + else + { + rc = VINF_SUCCESS; + if (!pMemLnxToMap->Core.pv) + rc = rtR0MemObjLinuxVMap(pMemLnxToMap, !!(fProt & RTMEM_PROT_EXEC)); + if (RT_SUCCESS(rc)) + { + Assert(pMemLnxToMap->Core.pv); + pMemLnx->Core.pv = pMemLnxToMap->Core.pv; + } + } +#endif + } + else + { + /* + * MMIO / physical memory. + */ + Assert(pMemLnxToMap->Core.enmType == RTR0MEMOBJTYPE_PHYS && !pMemLnxToMap->Core.u.Phys.fAllocated); + pMemLnx->Core.pv = pMemLnxToMap->Core.u.Phys.uCachePolicy == RTMEM_CACHE_POLICY_MMIO + ? ioremap_nocache(pMemLnxToMap->Core.u.Phys.PhysBase, pMemLnxToMap->Core.cb) + : ioremap(pMemLnxToMap->Core.u.Phys.PhysBase, pMemLnxToMap->Core.cb); + if (pMemLnx->Core.pv) + { + /** @todo fix protection. */ + rc = VINF_SUCCESS; + } + } + if (RT_SUCCESS(rc)) + { + pMemLnx->Core.u.Mapping.R0Process = NIL_RTR0PROCESS; + *ppMem = &pMemLnx->Core; + return VINF_SUCCESS; + } + rtR0MemObjDelete(&pMemLnx->Core); + } + + return rc; +} + + +#ifdef VBOX_USE_PAE_HACK +/** + * Replace the PFN of a PTE with the address of the actual page. + * + * The caller maps a reserved dummy page at the address with the desired access + * and flags. + * + * This hack is required for older Linux kernels which don't provide + * remap_pfn_range(). + * + * @returns 0 on success, -ENOMEM on failure. + * @param mm The memory context. + * @param ulAddr The mapping address. + * @param Phys The physical address of the page to map. + */ +static int rtR0MemObjLinuxFixPte(struct mm_struct *mm, unsigned long ulAddr, RTHCPHYS Phys) +{ + int rc = -ENOMEM; + pgd_t *pgd; + + spin_lock(&mm->page_table_lock); + + pgd = pgd_offset(mm, ulAddr); + if (!pgd_none(*pgd) && !pgd_bad(*pgd)) + { + pmd_t *pmd = pmd_offset(pgd, ulAddr); + if (!pmd_none(*pmd)) + { + pte_t *ptep = pte_offset_map(pmd, ulAddr); + if (ptep) + { + pte_t pte = *ptep; + pte.pte_high &= 0xfff00000; + pte.pte_high |= ((Phys >> 32) & 0x000fffff); + pte.pte_low &= 0x00000fff; + pte.pte_low |= (Phys & 0xfffff000); + set_pte(ptep, pte); + pte_unmap(ptep); + rc = 0; + } + } + } + + spin_unlock(&mm->page_table_lock); + return rc; +} +#endif /* VBOX_USE_PAE_HACK */ + + +DECLHIDDEN(int) rtR0MemObjNativeMapUser(PPRTR0MEMOBJINTERNAL ppMem, RTR0MEMOBJ pMemToMap, RTR3PTR R3PtrFixed, + size_t uAlignment, unsigned fProt, RTR0PROCESS R0Process) +{ + struct task_struct *pTask = rtR0ProcessToLinuxTask(R0Process); + PRTR0MEMOBJLNX pMemLnxToMap = (PRTR0MEMOBJLNX)pMemToMap; + int rc = VERR_NO_MEMORY; + PRTR0MEMOBJLNX pMemLnx; +#ifdef VBOX_USE_PAE_HACK + struct page *pDummyPage; + RTHCPHYS DummyPhys; +#endif + + /* + * Check for restrictions. + */ + if (!pTask) + return VERR_NOT_SUPPORTED; + if (uAlignment > PAGE_SIZE) + return VERR_NOT_SUPPORTED; + +#ifdef VBOX_USE_PAE_HACK + /* + * Allocate a dummy page for use when mapping the memory. + */ + pDummyPage = alloc_page(GFP_USER | __GFP_NOWARN); + if (!pDummyPage) + return VERR_NO_MEMORY; + SetPageReserved(pDummyPage); + DummyPhys = page_to_phys(pDummyPage); +#endif + + /* + * Create the IPRT memory object. + */ + pMemLnx = (PRTR0MEMOBJLNX)rtR0MemObjNew(sizeof(*pMemLnx), RTR0MEMOBJTYPE_MAPPING, NULL, pMemLnxToMap->Core.cb); + if (pMemLnx) + { + /* + * Allocate user space mapping. + */ + void *pv; + pv = rtR0MemObjLinuxDoMmap(R3PtrFixed, pMemLnxToMap->Core.cb, uAlignment, pTask, fProt); + if (pv != (void *)-1) + { + /* + * Map page by page into the mmap area. + * This is generic, paranoid and not very efficient. + */ + pgprot_t fPg = rtR0MemObjLinuxConvertProt(fProt, false /* user */); + unsigned long ulAddrCur = (unsigned long)pv; + const size_t cPages = pMemLnxToMap->Core.cb >> PAGE_SHIFT; + size_t iPage; + + down_write(&pTask->mm->mmap_sem); + + rc = VINF_SUCCESS; + if (pMemLnxToMap->cPages) + { + for (iPage = 0; iPage < cPages; iPage++, ulAddrCur += PAGE_SIZE) + { +#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 11) + RTHCPHYS Phys = page_to_phys(pMemLnxToMap->apPages[iPage]); +#endif +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 0) || defined(HAVE_26_STYLE_REMAP_PAGE_RANGE) + struct vm_area_struct *vma = find_vma(pTask->mm, ulAddrCur); /* this is probably the same for all the pages... */ + AssertBreakStmt(vma, rc = VERR_INTERNAL_ERROR); +#endif +#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 0) && defined(RT_ARCH_X86) + /* remap_page_range() limitation on x86 */ + AssertBreakStmt(Phys < _4G, rc = VERR_NO_MEMORY); +#endif + +#if defined(VBOX_USE_INSERT_PAGE) && LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 22) + rc = vm_insert_page(vma, ulAddrCur, pMemLnxToMap->apPages[iPage]); + /* Thes flags help making 100% sure some bad stuff wont happen (swap, core, ++). + * See remap_pfn_range() in mm/memory.c */ +#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 7, 0) + vma->vm_flags |= VM_DONTEXPAND | VM_DONTDUMP; +#else + vma->vm_flags |= VM_RESERVED; +#endif +#elif LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 11) + rc = remap_pfn_range(vma, ulAddrCur, page_to_pfn(pMemLnxToMap->apPages[iPage]), PAGE_SIZE, fPg); +#elif defined(VBOX_USE_PAE_HACK) + rc = remap_page_range(vma, ulAddrCur, DummyPhys, PAGE_SIZE, fPg); + if (!rc) + rc = rtR0MemObjLinuxFixPte(pTask->mm, ulAddrCur, Phys); +#elif LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 0) || defined(HAVE_26_STYLE_REMAP_PAGE_RANGE) + rc = remap_page_range(vma, ulAddrCur, Phys, PAGE_SIZE, fPg); +#else /* 2.4 */ + rc = remap_page_range(ulAddrCur, Phys, PAGE_SIZE, fPg); +#endif + if (rc) + { + rc = VERR_NO_MEMORY; + break; + } + } + } + else + { + RTHCPHYS Phys; + if (pMemLnxToMap->Core.enmType == RTR0MEMOBJTYPE_PHYS) + Phys = pMemLnxToMap->Core.u.Phys.PhysBase; + else if (pMemLnxToMap->Core.enmType == RTR0MEMOBJTYPE_CONT) + Phys = pMemLnxToMap->Core.u.Cont.Phys; + else + { + AssertMsgFailed(("%d\n", pMemLnxToMap->Core.enmType)); + Phys = NIL_RTHCPHYS; + } + if (Phys != NIL_RTHCPHYS) + { + for (iPage = 0; iPage < cPages; iPage++, ulAddrCur += PAGE_SIZE, Phys += PAGE_SIZE) + { +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 0) || defined(HAVE_26_STYLE_REMAP_PAGE_RANGE) + struct vm_area_struct *vma = find_vma(pTask->mm, ulAddrCur); /* this is probably the same for all the pages... */ + AssertBreakStmt(vma, rc = VERR_INTERNAL_ERROR); +#endif +#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 0) && defined(RT_ARCH_X86) + /* remap_page_range() limitation on x86 */ + AssertBreakStmt(Phys < _4G, rc = VERR_NO_MEMORY); +#endif + +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 11) + rc = remap_pfn_range(vma, ulAddrCur, Phys, PAGE_SIZE, fPg); +#elif defined(VBOX_USE_PAE_HACK) + rc = remap_page_range(vma, ulAddrCur, DummyPhys, PAGE_SIZE, fPg); + if (!rc) + rc = rtR0MemObjLinuxFixPte(pTask->mm, ulAddrCur, Phys); +#elif LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 0) || defined(HAVE_26_STYLE_REMAP_PAGE_RANGE) + rc = remap_page_range(vma, ulAddrCur, Phys, PAGE_SIZE, fPg); +#else /* 2.4 */ + rc = remap_page_range(ulAddrCur, Phys, PAGE_SIZE, fPg); +#endif + if (rc) + { + rc = VERR_NO_MEMORY; + break; + } + } + } + } + +#ifdef CONFIG_NUMA_BALANCING +# if LINUX_VERSION_CODE < KERNEL_VERSION(3, 13, 0) +# ifdef RHEL_RELEASE_CODE +# if RHEL_RELEASE_CODE < RHEL_RELEASE_VERSION(7, 0) +# define VBOX_NUMA_HACK_OLD +# endif +# endif +# endif + if (RT_SUCCESS(rc)) + { + /** @todo Ugly hack! But right now we have no other means to + * disable automatic NUMA page balancing. */ +# ifdef RT_OS_X86 +# ifdef VBOX_NUMA_HACK_OLD + pTask->mm->numa_next_reset = jiffies + 0x7fffffffUL; +# endif + pTask->mm->numa_next_scan = jiffies + 0x7fffffffUL; +# else +# ifdef VBOX_NUMA_HACK_OLD + pTask->mm->numa_next_reset = jiffies + 0x7fffffffffffffffUL; +# endif + pTask->mm->numa_next_scan = jiffies + 0x7fffffffffffffffUL; +# endif + } +#endif /* CONFIG_NUMA_BALANCING */ + + up_write(&pTask->mm->mmap_sem); + + if (RT_SUCCESS(rc)) + { +#ifdef VBOX_USE_PAE_HACK + __free_page(pDummyPage); +#endif + pMemLnx->Core.pv = pv; + pMemLnx->Core.u.Mapping.R0Process = R0Process; + *ppMem = &pMemLnx->Core; + return VINF_SUCCESS; + } + + /* + * Bail out. + */ + rtR0MemObjLinuxDoMunmap(pv, pMemLnxToMap->Core.cb, pTask); + } + rtR0MemObjDelete(&pMemLnx->Core); + } +#ifdef VBOX_USE_PAE_HACK + __free_page(pDummyPage); +#endif + + return rc; +} + + +DECLHIDDEN(int) rtR0MemObjNativeProtect(PRTR0MEMOBJINTERNAL pMem, size_t offSub, size_t cbSub, uint32_t fProt) +{ + NOREF(pMem); + NOREF(offSub); + NOREF(cbSub); + NOREF(fProt); + return VERR_NOT_SUPPORTED; +} + + +DECLHIDDEN(RTHCPHYS) rtR0MemObjNativeGetPagePhysAddr(PRTR0MEMOBJINTERNAL pMem, size_t iPage) +{ + PRTR0MEMOBJLNX pMemLnx = (PRTR0MEMOBJLNX)pMem; + + if (pMemLnx->cPages) + return page_to_phys(pMemLnx->apPages[iPage]); + + switch (pMemLnx->Core.enmType) + { + case RTR0MEMOBJTYPE_CONT: + return pMemLnx->Core.u.Cont.Phys + (iPage << PAGE_SHIFT); + + case RTR0MEMOBJTYPE_PHYS: + return pMemLnx->Core.u.Phys.PhysBase + (iPage << PAGE_SHIFT); + + /* the parent knows */ + case RTR0MEMOBJTYPE_MAPPING: + return rtR0MemObjNativeGetPagePhysAddr(pMemLnx->Core.uRel.Child.pParent, iPage); + + /* cPages > 0 */ + case RTR0MEMOBJTYPE_LOW: + case RTR0MEMOBJTYPE_LOCK: + case RTR0MEMOBJTYPE_PHYS_NC: + case RTR0MEMOBJTYPE_PAGE: + default: + AssertMsgFailed(("%d\n", pMemLnx->Core.enmType)); + /* fall thru */ + + case RTR0MEMOBJTYPE_RES_VIRT: + return NIL_RTHCPHYS; + } +} + --- linux-raspi2-4.2.0.orig/ubuntu/vbox/r0drv/linux/memuserkernel-r0drv-linux.c +++ linux-raspi2-4.2.0/ubuntu/vbox/r0drv/linux/memuserkernel-r0drv-linux.c @@ -0,0 +1,157 @@ +/* $Id: memuserkernel-r0drv-linux.c $ */ +/** @file + * IPRT - User & Kernel Memory, Ring-0 Driver, Linux. + */ + +/* + * Copyright (C) 2009-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + + +/******************************************************************************* +* Header Files * +*******************************************************************************/ +#include "the-linux-kernel.h" +#include "internal/iprt.h" + +#include +#include + + +RTR0DECL(int) RTR0MemUserCopyFrom(void *pvDst, RTR3PTR R3PtrSrc, size_t cb) +{ + if (RT_LIKELY(copy_from_user(pvDst, (void *)R3PtrSrc, cb) == 0)) + return VINF_SUCCESS; + return VERR_ACCESS_DENIED; +} +RT_EXPORT_SYMBOL(RTR0MemUserCopyFrom); + + +RTR0DECL(int) RTR0MemUserCopyTo(RTR3PTR R3PtrDst, void const *pvSrc, size_t cb) +{ + if (RT_LIKELY(copy_to_user((void *)R3PtrDst, pvSrc, cb) == 0)) + return VINF_SUCCESS; + return VERR_ACCESS_DENIED; +} +RT_EXPORT_SYMBOL(RTR0MemUserCopyTo); + + +RTR0DECL(bool) RTR0MemUserIsValidAddr(RTR3PTR R3Ptr) +{ + return access_ok(VERIFY_READ, (void *)R3Ptr, 1); +} +RT_EXPORT_SYMBOL(RTR0MemUserIsValidAddr); + + +RTR0DECL(bool) RTR0MemKernelIsValidAddr(void *pv) +{ + /* Couldn't find a straight forward way of doing this... */ +#if defined(RT_ARCH_X86) && defined(CONFIG_X86_HIGH_ENTRY) + return true; /* ?? */ +#elif defined(RT_ARCH_X86) || defined(RT_ARCH_AMD64) + return (uintptr_t)pv >= PAGE_OFFSET; +#else +# error "PORT ME" + return !access_ok(VERIFY_READ, pv, 1); +#endif +} +RT_EXPORT_SYMBOL(RTR0MemKernelIsValidAddr); + + +RTR0DECL(bool) RTR0MemAreKrnlAndUsrDifferent(void) +{ +#if defined(RT_ARCH_X86) && defined(CONFIG_X86_HIGH_ENTRY) /* ?? */ + return false; +#else + return true; +#endif +} +RT_EXPORT_SYMBOL(RTR0MemAreKrnlAndUsrDifferent); + + +/** + * Treats both source and destination as unsafe buffers. + */ +static int rtR0MemKernelCopyLnxWorker(void *pvDst, void const *pvSrc, size_t cb) +{ +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 5, 55) +/* _ASM_EXTABLE was introduced in 2.6.25 from what I can tell. Using #ifndef + here since it has to be a macro and you never know what someone might have + backported to an earlier kernel release. */ +# ifndef _ASM_EXTABLE +# if ARCH_BITS == 32 +# define _ASM_EXTABLE(a_Instr, a_Resume) \ + ".section __ex_table,\"a\"\n" \ + ".balign 4\n" \ + ".long " #a_Instr "\n" \ + ".long " #a_Resume "\n" \ + ".previous\n" +# else +# define _ASM_EXTABLE(a_Instr, a_Resume) \ + ".section __ex_table,\"a\"\n" \ + ".balign 8\n" \ + ".quad " #a_Instr "\n" \ + ".quad " #a_Resume "\n" \ + ".previous\n" +# endif +# endif /* !_ASM_EXTABLE */ + int rc; + if (!cb) + return VINF_SUCCESS; + + __asm__ __volatile__ ("cld\n" + "1:\n\t" + "rep; movsb\n" + "2:\n\t" + ".section .fixup,\"ax\"\n" + "3:\n\t" + "movl %4, %0\n" + ".previous\n" + _ASM_EXTABLE(1b, 3b) + : "=r" (rc), + "=D" (pvDst), + "=S" (pvSrc), + "=c" (cb) + : "i" (VERR_ACCESS_DENIED), + "0" (VINF_SUCCESS), + "1" (pvDst), + "2" (pvSrc), + "3" (cb) + : "memory"); + return rc; +#else + return VERR_NOT_SUPPORTED; +#endif +} + + +RTR0DECL(int) RTR0MemKernelCopyFrom(void *pvDst, void const *pvSrc, size_t cb) +{ + return rtR0MemKernelCopyLnxWorker(pvDst, pvSrc, cb); +} +RT_EXPORT_SYMBOL(RTR0MemKernelCopyFrom); + + +RTR0DECL(int) RTR0MemKernelCopyTo(void *pvDst, void const *pvSrc, size_t cb) +{ + return rtR0MemKernelCopyLnxWorker(pvDst, pvSrc, cb); +} +RT_EXPORT_SYMBOL(RTR0MemKernelCopyTo); + --- linux-raspi2-4.2.0.orig/ubuntu/vbox/r0drv/linux/mp-r0drv-linux.c +++ linux-raspi2-4.2.0/ubuntu/vbox/r0drv/linux/mp-r0drv-linux.c @@ -0,0 +1,571 @@ +/* $Id: mp-r0drv-linux.c $ */ +/** @file + * IPRT - Multiprocessor, Ring-0 Driver, Linux. + */ + +/* + * Copyright (C) 2008-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + + +/******************************************************************************* +* Header Files * +*******************************************************************************/ +#include "the-linux-kernel.h" +#include "internal/iprt.h" + +#include +#include +#include +#include +#include +#include "r0drv/mp-r0drv.h" + + +RTDECL(RTCPUID) RTMpCpuId(void) +{ + return smp_processor_id(); +} +RT_EXPORT_SYMBOL(RTMpCpuId); + + +RTDECL(int) RTMpCurSetIndex(void) +{ + return smp_processor_id(); +} +RT_EXPORT_SYMBOL(RTMpCurSetIndex); + + +RTDECL(int) RTMpCurSetIndexAndId(PRTCPUID pidCpu) +{ + return *pidCpu = smp_processor_id(); +} +RT_EXPORT_SYMBOL(RTMpCurSetIndexAndId); + + +RTDECL(int) RTMpCpuIdToSetIndex(RTCPUID idCpu) +{ + return idCpu < RTCPUSET_MAX_CPUS && idCpu < NR_CPUS ? (int)idCpu : -1; +} +RT_EXPORT_SYMBOL(RTMpCpuIdToSetIndex); + + +RTDECL(RTCPUID) RTMpCpuIdFromSetIndex(int iCpu) +{ + return iCpu < NR_CPUS ? (RTCPUID)iCpu : NIL_RTCPUID; +} +RT_EXPORT_SYMBOL(RTMpCpuIdFromSetIndex); + + +RTDECL(RTCPUID) RTMpGetMaxCpuId(void) +{ + return NR_CPUS - 1; //??? +} +RT_EXPORT_SYMBOL(RTMpGetMaxCpuId); + + +RTDECL(bool) RTMpIsCpuPossible(RTCPUID idCpu) +{ +#if defined(CONFIG_SMP) + if (RT_UNLIKELY(idCpu >= NR_CPUS)) + return false; + +# if defined(cpu_possible) + return cpu_possible(idCpu); +# else /* < 2.5.29 */ + return idCpu < (RTCPUID)smp_num_cpus; +# endif +#else + return idCpu == RTMpCpuId(); +#endif +} +RT_EXPORT_SYMBOL(RTMpIsCpuPossible); + + +RTDECL(PRTCPUSET) RTMpGetSet(PRTCPUSET pSet) +{ + RTCPUID idCpu; + + RTCpuSetEmpty(pSet); + idCpu = RTMpGetMaxCpuId(); + do + { + if (RTMpIsCpuPossible(idCpu)) + RTCpuSetAdd(pSet, idCpu); + } while (idCpu-- > 0); + return pSet; +} +RT_EXPORT_SYMBOL(RTMpGetSet); + + +RTDECL(RTCPUID) RTMpGetCount(void) +{ +#ifdef CONFIG_SMP +# if defined(CONFIG_HOTPLUG_CPU) /* introduced & uses cpu_present */ + return num_present_cpus(); +# elif defined(num_possible_cpus) + return num_possible_cpus(); +# elif LINUX_VERSION_CODE < KERNEL_VERSION(2, 5, 0) + return smp_num_cpus; +# else + RTCPUSET Set; + RTMpGetSet(&Set); + return RTCpuSetCount(&Set); +# endif +#else + return 1; +#endif +} +RT_EXPORT_SYMBOL(RTMpGetCount); + + +RTDECL(bool) RTMpIsCpuOnline(RTCPUID idCpu) +{ +#ifdef CONFIG_SMP + if (RT_UNLIKELY(idCpu >= NR_CPUS)) + return false; +# ifdef cpu_online + return cpu_online(idCpu); +# else /* 2.4: */ + return cpu_online_map & RT_BIT_64(idCpu); +# endif +#else + return idCpu == RTMpCpuId(); +#endif +} +RT_EXPORT_SYMBOL(RTMpIsCpuOnline); + + +RTDECL(PRTCPUSET) RTMpGetOnlineSet(PRTCPUSET pSet) +{ +#ifdef CONFIG_SMP + RTCPUID idCpu; + + RTCpuSetEmpty(pSet); + idCpu = RTMpGetMaxCpuId(); + do + { + if (RTMpIsCpuOnline(idCpu)) + RTCpuSetAdd(pSet, idCpu); + } while (idCpu-- > 0); +#else + RTCpuSetEmpty(pSet); + RTCpuSetAdd(pSet, RTMpCpuId()); +#endif + return pSet; +} +RT_EXPORT_SYMBOL(RTMpGetOnlineSet); + + +RTDECL(RTCPUID) RTMpGetOnlineCount(void) +{ +#ifdef CONFIG_SMP +# if defined(num_online_cpus) + return num_online_cpus(); +# else + RTCPUSET Set; + RTMpGetOnlineSet(&Set); + return RTCpuSetCount(&Set); +# endif +#else + return 1; +#endif +} +RT_EXPORT_SYMBOL(RTMpGetOnlineCount); + + +RTDECL(bool) RTMpIsCpuWorkPending(void) +{ + /** @todo (not used on non-Windows platforms yet). */ + return false; +} +RT_EXPORT_SYMBOL(RTMpIsCpuWorkPending); + + +/** + * Wrapper between the native linux per-cpu callbacks and PFNRTWORKER. + * + * @param pvInfo Pointer to the RTMPARGS package. + */ +static void rtmpLinuxWrapper(void *pvInfo) +{ + PRTMPARGS pArgs = (PRTMPARGS)pvInfo; + ASMAtomicIncU32(&pArgs->cHits); + pArgs->pfnWorker(RTMpCpuId(), pArgs->pvUser1, pArgs->pvUser2); +} + + +/** + * Wrapper between the native linux per-cpu callbacks and PFNRTWORKER, does hit + * increment after calling the worker. + * + * @param pvInfo Pointer to the RTMPARGS package. + */ +static void rtmpLinuxWrapperPostInc(void *pvInfo) +{ + PRTMPARGS pArgs = (PRTMPARGS)pvInfo; + pArgs->pfnWorker(RTMpCpuId(), pArgs->pvUser1, pArgs->pvUser2); + ASMAtomicIncU32(&pArgs->cHits); +} + + +/** + * Wrapper between the native linux all-cpu callbacks and PFNRTWORKER. + * + * @param pvInfo Pointer to the RTMPARGS package. + */ +static void rtmpLinuxAllWrapper(void *pvInfo) +{ + PRTMPARGS pArgs = (PRTMPARGS)pvInfo; + PRTCPUSET pWorkerSet = pArgs->pWorkerSet; + RTCPUID idCpu = RTMpCpuId(); + Assert(!RTThreadPreemptIsEnabled(NIL_RTTHREAD)); + + if (RTCpuSetIsMember(pWorkerSet, idCpu)) + { + pArgs->pfnWorker(idCpu, pArgs->pvUser1, pArgs->pvUser2); + RTCpuSetDel(pWorkerSet, idCpu); + } +} + + +RTDECL(int) RTMpOnAll(PFNRTMPWORKER pfnWorker, void *pvUser1, void *pvUser2) +{ + int rc; + RTMPARGS Args; + RTCPUSET OnlineSet; + RTCPUID idCpu; + uint32_t cLoops; + + RTTHREADPREEMPTSTATE PreemptState = RTTHREADPREEMPTSTATE_INITIALIZER; + + Args.pfnWorker = pfnWorker; + Args.pvUser1 = pvUser1; + Args.pvUser2 = pvUser2; + Args.idCpu = NIL_RTCPUID; + Args.cHits = 0; + + RTThreadPreemptDisable(&PreemptState); + RTMpGetOnlineSet(&OnlineSet); + Args.pWorkerSet = &OnlineSet; + idCpu = RTMpCpuId(); + + if (RTCpuSetCount(&OnlineSet) > 1) + { + /* Fire the function on all other CPUs without waiting for completion. */ +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 27) + rc = smp_call_function(rtmpLinuxAllWrapper, &Args, 0 /* wait */); +#else + rc = smp_call_function(rtmpLinuxAllWrapper, &Args, 0 /* retry */, 0 /* wait */); +#endif + Assert(!rc); NOREF(rc); + } + + /* Fire the function on this CPU. */ + Args.pfnWorker(idCpu, Args.pvUser1, Args.pvUser2); + RTCpuSetDel(Args.pWorkerSet, idCpu); + + /* Wait for all of them finish. */ + cLoops = 64000; + while (!RTCpuSetIsEmpty(Args.pWorkerSet)) + { + /* Periodically check if any CPU in the wait set has gone offline, if so update the wait set. */ + if (!cLoops--) + { + RTCPUSET OnlineSetNow; + RTMpGetOnlineSet(&OnlineSetNow); + RTCpuSetAnd(Args.pWorkerSet, &OnlineSetNow); + + cLoops = 64000; + } + + ASMNopPause(); + } + + RTThreadPreemptRestore(&PreemptState); + return VINF_SUCCESS; +} +RT_EXPORT_SYMBOL(RTMpOnAll); + + +RTDECL(int) RTMpOnOthers(PFNRTMPWORKER pfnWorker, void *pvUser1, void *pvUser2) +{ + int rc; + RTMPARGS Args; + + RTTHREADPREEMPTSTATE PreemptState = RTTHREADPREEMPTSTATE_INITIALIZER; + Args.pfnWorker = pfnWorker; + Args.pvUser1 = pvUser1; + Args.pvUser2 = pvUser2; + Args.idCpu = NIL_RTCPUID; + Args.cHits = 0; + + RTThreadPreemptDisable(&PreemptState); +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 27) + rc = smp_call_function(rtmpLinuxWrapper, &Args, 1 /* wait */); +#else /* older kernels */ + rc = smp_call_function(rtmpLinuxWrapper, &Args, 0 /* retry */, 1 /* wait */); +#endif /* older kernels */ + RTThreadPreemptRestore(&PreemptState); + + Assert(rc == 0); NOREF(rc); + return VINF_SUCCESS; +} +RT_EXPORT_SYMBOL(RTMpOnOthers); + + +#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 27) +/** + * Wrapper between the native linux per-cpu callbacks and PFNRTWORKER + * employed by RTMpOnPair on older kernels that lacks smp_call_function_many. + * + * @param pvInfo Pointer to the RTMPARGS package. + */ +static void rtMpLinuxOnPairWrapper(void *pvInfo) +{ + PRTMPARGS pArgs = (PRTMPARGS)pvInfo; + RTCPUID idCpu = RTMpCpuId(); + + if ( idCpu == pArgs->idCpu + || idCpu == pArgs->idCpu2) + { + pArgs->pfnWorker(idCpu, pArgs->pvUser1, pArgs->pvUser2); + ASMAtomicIncU32(&pArgs->cHits); + } +} +#endif + + +RTDECL(int) RTMpOnPair(RTCPUID idCpu1, RTCPUID idCpu2, uint32_t fFlags, PFNRTMPWORKER pfnWorker, void *pvUser1, void *pvUser2) +{ + int rc; + RTTHREADPREEMPTSTATE PreemptState = RTTHREADPREEMPTSTATE_INITIALIZER; + + AssertReturn(idCpu1 != idCpu2, VERR_INVALID_PARAMETER); + AssertReturn(!(fFlags & RTMPON_F_VALID_MASK), VERR_INVALID_FLAGS); + + /* + * Check that both CPUs are online before doing the broadcast call. + */ + RTThreadPreemptDisable(&PreemptState); + if ( RTMpIsCpuOnline(idCpu1) + && RTMpIsCpuOnline(idCpu2)) + { + /* + * Use the smp_call_function variant taking a cpu mask where available, + * falling back on broadcast with filter. Slight snag if one of the + * CPUs is the one we're running on, we must do the call and the post + * call wait ourselves. + */ +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 27) + cpumask_t DstCpuMask; +#endif + RTCPUID idCpuSelf = RTMpCpuId(); + bool const fCallSelf = idCpuSelf == idCpu1 || idCpuSelf == idCpu2; + RTMPARGS Args; + Args.pfnWorker = pfnWorker; + Args.pvUser1 = pvUser1; + Args.pvUser2 = pvUser2; + Args.idCpu = idCpu1; + Args.idCpu2 = idCpu2; + Args.cHits = 0; + +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 28) + cpumask_clear(&DstCpuMask); + cpumask_set_cpu(idCpu1, &DstCpuMask); + cpumask_set_cpu(idCpu2, &DstCpuMask); +#elif LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 27) + cpus_clear(DstCpuMask); + cpu_set(idCpu1, DstCpuMask); + cpu_set(idCpu2, DstCpuMask); +#endif + +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 29) + smp_call_function_many(&DstCpuMask, rtmpLinuxWrapperPostInc, &Args, !fCallSelf /* wait */); + rc = 0; +#elif LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 28) + rc = smp_call_function_many(&DstCpuMask, rtmpLinuxWrapperPostInc, &Args, !fCallSelf /* wait */); +#elif LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 27) + rc = smp_call_function_mask(DstCpuMask, rtmpLinuxWrapperPostInc, &Args, !fCallSelf /* wait */); +#else /* older kernels */ + rc = smp_call_function(rtMpLinuxOnPairWrapper, &Args, 0 /* retry */, !fCallSelf /* wait */); +#endif /* older kernels */ + Assert(rc == 0); + + /* Call ourselves if necessary and wait for the other party to be done. */ + if (fCallSelf) + { + uint32_t cLoops = 0; + rtmpLinuxWrapper(&Args); + while (ASMAtomicReadU32(&Args.cHits) < 2) + { + if ((cLoops & 0x1ff) == 0 && !RTMpIsCpuOnline(idCpuSelf == idCpu1 ? idCpu2 : idCpu1)) + break; + cLoops++; + ASMNopPause(); + } + } + + Assert(Args.cHits <= 2); + if (Args.cHits == 2) + rc = VINF_SUCCESS; + else if (Args.cHits == 1) + rc = VERR_NOT_ALL_CPUS_SHOWED; + else if (Args.cHits == 0) + rc = VERR_CPU_OFFLINE; + else + rc = VERR_CPU_IPE_1; + } + /* + * A CPU must be present to be considered just offline. + */ + else if ( RTMpIsCpuPresent(idCpu1) + && RTMpIsCpuPresent(idCpu2)) + rc = VERR_CPU_OFFLINE; + else + rc = VERR_CPU_NOT_FOUND; + RTThreadPreemptRestore(&PreemptState);; + return rc; +} +RT_EXPORT_SYMBOL(RTMpOnPair); + + +RTDECL(bool) RTMpOnPairIsConcurrentExecSupported(void) +{ + return true; +} +RT_EXPORT_SYMBOL(RTMpOnPairIsConcurrentExecSupported); + + +#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 19) +/** + * Wrapper between the native linux per-cpu callbacks and PFNRTWORKER + * employed by RTMpOnSpecific on older kernels that lacks smp_call_function_single. + * + * @param pvInfo Pointer to the RTMPARGS package. + */ +static void rtmpOnSpecificLinuxWrapper(void *pvInfo) +{ + PRTMPARGS pArgs = (PRTMPARGS)pvInfo; + RTCPUID idCpu = RTMpCpuId(); + + if (idCpu == pArgs->idCpu) + { + pArgs->pfnWorker(idCpu, pArgs->pvUser1, pArgs->pvUser2); + ASMAtomicIncU32(&pArgs->cHits); + } +} +#endif + + +RTDECL(int) RTMpOnSpecific(RTCPUID idCpu, PFNRTMPWORKER pfnWorker, void *pvUser1, void *pvUser2) +{ + int rc; + RTMPARGS Args; + + RTTHREADPREEMPTSTATE PreemptState = RTTHREADPREEMPTSTATE_INITIALIZER; + Args.pfnWorker = pfnWorker; + Args.pvUser1 = pvUser1; + Args.pvUser2 = pvUser2; + Args.idCpu = idCpu; + Args.cHits = 0; + + if (!RTMpIsCpuPossible(idCpu)) + return VERR_CPU_NOT_FOUND; + + RTThreadPreemptDisable(&PreemptState); + if (idCpu != RTMpCpuId()) + { + if (RTMpIsCpuOnline(idCpu)) + { +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 27) + rc = smp_call_function_single(idCpu, rtmpLinuxWrapper, &Args, 1 /* wait */); +#elif LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 19) + rc = smp_call_function_single(idCpu, rtmpLinuxWrapper, &Args, 0 /* retry */, 1 /* wait */); +#else /* older kernels */ + rc = smp_call_function(rtmpOnSpecificLinuxWrapper, &Args, 0 /* retry */, 1 /* wait */); +#endif /* older kernels */ + Assert(rc == 0); + rc = Args.cHits ? VINF_SUCCESS : VERR_CPU_OFFLINE; + } + else + rc = VERR_CPU_OFFLINE; + } + else + { + rtmpLinuxWrapper(&Args); + rc = VINF_SUCCESS; + } + RTThreadPreemptRestore(&PreemptState);; + + NOREF(rc); + return rc; +} +RT_EXPORT_SYMBOL(RTMpOnSpecific); + + +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 19) +/** + * Dummy callback used by RTMpPokeCpu. + * + * @param pvInfo Ignored. + */ +static void rtmpLinuxPokeCpuCallback(void *pvInfo) +{ + NOREF(pvInfo); +} +#endif + + +RTDECL(int) RTMpPokeCpu(RTCPUID idCpu) +{ +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 19) + int rc; + + if (!RTMpIsCpuPossible(idCpu)) + return VERR_CPU_NOT_FOUND; + if (!RTMpIsCpuOnline(idCpu)) + return VERR_CPU_OFFLINE; + +# if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 27) + rc = smp_call_function_single(idCpu, rtmpLinuxPokeCpuCallback, NULL, 0 /* wait */); +# elif LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 19) + rc = smp_call_function_single(idCpu, rtmpLinuxPokeCpuCallback, NULL, 0 /* retry */, 0 /* wait */); +# else /* older kernels */ +# error oops +# endif /* older kernels */ + NOREF(rc); + Assert(rc == 0); + return VINF_SUCCESS; + +#else /* older kernels */ + /* no unicast here? */ + return VERR_NOT_SUPPORTED; +#endif /* older kernels */ +} +RT_EXPORT_SYMBOL(RTMpPokeCpu); + + +RTDECL(bool) RTMpOnAllIsConcurrentSafe(void) +{ + return true; +} +RT_EXPORT_SYMBOL(RTMpOnAllIsConcurrentSafe); + --- linux-raspi2-4.2.0.orig/ubuntu/vbox/r0drv/linux/mpnotification-r0drv-linux.c +++ linux-raspi2-4.2.0/ubuntu/vbox/r0drv/linux/mpnotification-r0drv-linux.c @@ -0,0 +1,204 @@ +/* $Id: mpnotification-r0drv-linux.c $ */ +/** @file + * IPRT - Multiprocessor Event Notifications, Ring-0 Driver, Linux. + */ + +/* + * Copyright (C) 2008-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + + +/******************************************************************************* +* Header Files * +*******************************************************************************/ +#include "the-linux-kernel.h" +#include "internal/iprt.h" + +#include +#include +#include +#include +#include "r0drv/mp-r0drv.h" + + +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 5, 71) && defined(CONFIG_SMP) + +/******************************************************************************* +* Internal Functions * +*******************************************************************************/ +static int rtMpNotificationLinuxCallback(struct notifier_block *pNotifierBlock, unsigned long ulNativeEvent, void *pvCpu); + + +/******************************************************************************* +* Global Variables * +*******************************************************************************/ +/** + * The notifier block we use for registering the callback. + */ +static struct notifier_block g_NotifierBlock = +{ + .notifier_call = rtMpNotificationLinuxCallback, + .next = NULL, + .priority = 0 +}; + +# ifdef CPU_DOWN_FAILED +/** + * The set of CPUs we've seen going offline recently. + */ +static RTCPUSET g_MpPendingOfflineSet; +# endif + + +/** + * The native callback. + * + * @returns NOTIFY_DONE. + * @param pNotifierBlock Pointer to g_NotifierBlock. + * @param ulNativeEvent The native event. + * @param pvCpu The cpu id cast into a pointer value. + * + * @remarks This can fire with preemption enabled and on any CPU. + */ +static int rtMpNotificationLinuxCallback(struct notifier_block *pNotifierBlock, unsigned long ulNativeEvent, void *pvCpu) +{ + bool fProcessEvent = false; + RTCPUID idCpu = (uintptr_t)pvCpu; + NOREF(pNotifierBlock); + + /* + * Note that redhat/CentOS ported _some_ of the FROZEN macros + * back to their 2.6.18-92.1.10.el5 kernel but actually don't + * use them. Thus we have to test for both CPU_TASKS_FROZEN and + * the individual event variants. + */ + switch (ulNativeEvent) + { + /* + * Pick up online events or failures to go offline. + * Ignore failure events for CPUs we didn't see go offline. + */ +# ifdef CPU_DOWN_FAILED + case CPU_DOWN_FAILED: +# if defined(CPU_TASKS_FROZEN) && defined(CPU_DOWN_FAILED_FROZEN) + case CPU_DOWN_FAILED_FROZEN: +# endif + if (!RTCpuSetIsMember(&g_MpPendingOfflineSet, idCpu)) + break; /* fProcessEvents = false */ + /* fall thru */ +# endif + case CPU_ONLINE: +# if defined(CPU_TASKS_FROZEN) && defined(CPU_ONLINE_FROZEN) + case CPU_ONLINE_FROZEN: +# endif +# ifdef CPU_DOWN_FAILED + RTCpuSetDel(&g_MpPendingOfflineSet, idCpu); +# endif + fProcessEvent = true; + break; + + /* + * Pick the earliest possible offline event. + * The only important thing here is that we get the event and that + * it's exactly one. + */ +# ifdef CPU_DOWN_PREPARE + case CPU_DOWN_PREPARE: +# if defined(CPU_TASKS_FROZEN) && defined(CPU_DOWN_PREPARE_FROZEN) + case CPU_DOWN_PREPARE_FROZEN: +# endif + fProcessEvent = true; +# else + case CPU_DEAD: +# if defined(CPU_TASKS_FROZEN) && defined(CPU_DEAD_FROZEN) + case CPU_DEAD_FROZEN: +# endif + /* Don't process CPU_DEAD notifications. */ +# endif +# ifdef CPU_DOWN_FAILED + RTCpuSetAdd(&g_MpPendingOfflineSet, idCpu); +# endif + break; + } + + if (!fProcessEvent) + return NOTIFY_DONE; + + switch (ulNativeEvent) + { +# ifdef CPU_DOWN_FAILED + case CPU_DOWN_FAILED: +# if defined(CPU_TASKS_FROZEN) && defined(CPU_DOWN_FAILED_FROZEN) + case CPU_DOWN_FAILED_FROZEN: +# endif +# endif + case CPU_ONLINE: +# if defined(CPU_TASKS_FROZEN) && defined(CPU_ONLINE_FROZEN) + case CPU_ONLINE_FROZEN: +# endif + rtMpNotificationDoCallbacks(RTMPEVENT_ONLINE, idCpu); + break; + +# ifdef CPU_DOWN_PREPARE + case CPU_DOWN_PREPARE: +# if defined(CPU_TASKS_FROZEN) && defined(CPU_DOWN_PREPARE_FROZEN) + case CPU_DOWN_PREPARE_FROZEN: +# endif + rtMpNotificationDoCallbacks(RTMPEVENT_OFFLINE, idCpu); + break; +# endif + } + + return NOTIFY_DONE; +} + + +DECLHIDDEN(int) rtR0MpNotificationNativeInit(void) +{ + int rc; + +# ifdef CPU_DOWN_FAILED + RTCpuSetEmpty(&g_MpPendingOfflineSet); +# endif + + rc = register_cpu_notifier(&g_NotifierBlock); + AssertMsgReturn(!rc, ("%d\n", rc), RTErrConvertFromErrno(rc)); + return VINF_SUCCESS; +} + + +DECLHIDDEN(void) rtR0MpNotificationNativeTerm(void) +{ + unregister_cpu_notifier(&g_NotifierBlock); +} + +#else /* Not supported / Not needed */ + +DECLHIDDEN(int) rtR0MpNotificationNativeInit(void) +{ + return VINF_SUCCESS; +} + +DECLHIDDEN(void) rtR0MpNotificationNativeTerm(void) +{ +} + +#endif /* Not supported / Not needed */ + --- linux-raspi2-4.2.0.orig/ubuntu/vbox/r0drv/linux/process-r0drv-linux.c +++ linux-raspi2-4.2.0/ubuntu/vbox/r0drv/linux/process-r0drv-linux.c @@ -0,0 +1,49 @@ +/* $Id: process-r0drv-linux.c $ */ +/** @file + * IPRT - Process, Ring-0 Driver, Linux. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + + +/******************************************************************************* +* Header Files * +*******************************************************************************/ +#include "the-linux-kernel.h" +#include "internal/iprt.h" + +#include + + +RTDECL(RTPROCESS) RTProcSelf(void) +{ + return (RTPROCESS)current->tgid; +} +RT_EXPORT_SYMBOL(RTProcSelf); + + +RTR0DECL(RTR0PROCESS) RTR0ProcHandleSelf(void) +{ + return (RTR0PROCESS)current->tgid; +} +RT_EXPORT_SYMBOL(RTR0ProcHandleSelf); + --- linux-raspi2-4.2.0.orig/ubuntu/vbox/r0drv/linux/semevent-r0drv-linux.c +++ linux-raspi2-4.2.0/ubuntu/vbox/r0drv/linux/semevent-r0drv-linux.c @@ -0,0 +1,266 @@ +/* $Id: semevent-r0drv-linux.c $ */ +/** @file + * IPRT - Single Release Event Semaphores, Ring-0 Driver, Linux. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + + +/******************************************************************************* +* Header Files * +*******************************************************************************/ +#define RTSEMEVENT_WITHOUT_REMAPPING +#include "the-linux-kernel.h" +#include "internal/iprt.h" +#include + +#include +#include +#include +#include +#include + +#include "waitqueue-r0drv-linux.h" +#include "internal/magics.h" + + +/******************************************************************************* +* Structures and Typedefs * +*******************************************************************************/ +/** + * Linux event semaphore. + */ +typedef struct RTSEMEVENTINTERNAL +{ + /** Magic value (RTSEMEVENT_MAGIC). */ + uint32_t volatile u32Magic; + /** The object status - !0 when signaled and 0 when reset. */ + uint32_t volatile fState; + /** Reference counter. */ + uint32_t volatile cRefs; + /** The wait queue. */ + wait_queue_head_t Head; +} RTSEMEVENTINTERNAL, *PRTSEMEVENTINTERNAL; + + + +RTDECL(int) RTSemEventCreate(PRTSEMEVENT phEventSem) +{ + return RTSemEventCreateEx(phEventSem, 0 /*fFlags*/, NIL_RTLOCKVALCLASS, NULL); +} + + +RTDECL(int) RTSemEventCreateEx(PRTSEMEVENT phEventSem, uint32_t fFlags, RTLOCKVALCLASS hClass, const char *pszNameFmt, ...) +{ + PRTSEMEVENTINTERNAL pThis; + + AssertReturn(!(fFlags & ~(RTSEMEVENT_FLAGS_NO_LOCK_VAL | RTSEMEVENT_FLAGS_BOOTSTRAP_HACK)), VERR_INVALID_PARAMETER); + Assert(!(fFlags & RTSEMEVENT_FLAGS_BOOTSTRAP_HACK) || (fFlags & RTSEMEVENT_FLAGS_NO_LOCK_VAL)); + + pThis = (PRTSEMEVENTINTERNAL)RTMemAlloc(sizeof(*pThis)); + if (!pThis) + return VERR_NO_MEMORY; + + pThis->u32Magic = RTSEMEVENT_MAGIC; + pThis->fState = 0; + pThis->cRefs = 1; + init_waitqueue_head(&pThis->Head); + + *phEventSem = pThis; + return VINF_SUCCESS; +} +RT_EXPORT_SYMBOL(RTSemEventCreate); + + +/** + * Retains a reference to the event semaphore. + * + * @param pThis The event semaphore. + */ +DECLINLINE(void) rtR0SemEventLnxRetain(PRTSEMEVENTINTERNAL pThis) +{ + uint32_t cRefs = ASMAtomicIncU32(&pThis->cRefs); + Assert(cRefs < 100000); NOREF(cRefs); +} + + +/** + * Releases a reference to the event semaphore. + * + * @param pThis The event semaphore. + */ +DECLINLINE(void) rtR0SemEventLnxRelease(PRTSEMEVENTINTERNAL pThis) +{ + if (RT_UNLIKELY(ASMAtomicDecU32(&pThis->cRefs) == 0)) + RTMemFree(pThis); +} + + +RTDECL(int) RTSemEventDestroy(RTSEMEVENT hEventSem) +{ + /* + * Validate input. + */ + PRTSEMEVENTINTERNAL pThis = hEventSem; + if (pThis == NIL_RTSEMEVENT) + return VINF_SUCCESS; + AssertMsgReturn(pThis->u32Magic == RTSEMEVENT_MAGIC, ("pThis->u32Magic=%RX32 pThis=%p\n", pThis->u32Magic, pThis), VERR_INVALID_HANDLE); + Assert(pThis->cRefs > 0); + + /* + * Invalidate it and signal the object just in case. + */ + ASMAtomicWriteU32(&pThis->u32Magic, ~RTSEMEVENT_MAGIC); + ASMAtomicWriteU32(&pThis->fState, 0); + Assert(!waitqueue_active(&pThis->Head)); + wake_up_all(&pThis->Head); + rtR0SemEventLnxRelease(pThis); + return VINF_SUCCESS; +} +RT_EXPORT_SYMBOL(RTSemEventDestroy); + + +RTDECL(int) RTSemEventSignal(RTSEMEVENT hEventSem) +{ + /* + * Validate input. + */ + PRTSEMEVENTINTERNAL pThis = (PRTSEMEVENTINTERNAL)hEventSem; + AssertPtrReturn(pThis, VERR_INVALID_HANDLE); + AssertMsgReturn(pThis->u32Magic == RTSEMEVENT_MAGIC, ("pThis->u32Magic=%RX32 pThis=%p\n", pThis->u32Magic, pThis), VERR_INVALID_HANDLE); + rtR0SemEventLnxRetain(pThis); + + /* + * Signal the event object. + */ + ASMAtomicWriteU32(&pThis->fState, 1); + wake_up(&pThis->Head); + + rtR0SemEventLnxRelease(pThis); + return VINF_SUCCESS; +} +RT_EXPORT_SYMBOL(RTSemEventSignal); + + +/** + * Worker for RTSemEventWaitEx and RTSemEventWaitExDebug. + * + * @returns VBox status code. + * @param pThis The event semaphore. + * @param fFlags See RTSemEventWaitEx. + * @param uTimeout See RTSemEventWaitEx. + * @param pSrcPos The source code position of the wait. + */ +static int rtR0SemEventLnxWait(PRTSEMEVENTINTERNAL pThis, uint32_t fFlags, uint64_t uTimeout, + PCRTLOCKVALSRCPOS pSrcPos) +{ + int rc; + + /* + * Validate the input. + */ + AssertPtrReturn(pThis, VERR_INVALID_PARAMETER); + AssertMsgReturn(pThis->u32Magic == RTSEMEVENT_MAGIC, ("%p u32Magic=%RX32\n", pThis, pThis->u32Magic), VERR_INVALID_PARAMETER); + AssertReturn(RTSEMWAIT_FLAGS_ARE_VALID(fFlags), VERR_INVALID_PARAMETER); + rtR0SemEventLnxRetain(pThis); + + /* + * Try grab the event without setting up the wait. + */ + if ( 1 /** @todo check if there are someone waiting already - waitqueue_active, but then what do we do below? */ + && ASMAtomicCmpXchgU32(&pThis->fState, 0, 1)) + rc = VINF_SUCCESS; + else + { + /* + * We have to wait. + */ + RTR0SEMLNXWAIT Wait; + rc = rtR0SemLnxWaitInit(&Wait, fFlags, uTimeout, &pThis->Head); + if (RT_SUCCESS(rc)) + { + IPRT_DEBUG_SEMS_STATE(pThis, 'E'); + for (;;) + { + /* The destruction test. */ + if (RT_UNLIKELY(pThis->u32Magic != RTSEMEVENT_MAGIC)) + rc = VERR_SEM_DESTROYED; + else + { + rtR0SemLnxWaitPrepare(&Wait); + + /* Check the exit conditions. */ + if (RT_UNLIKELY(pThis->u32Magic != RTSEMEVENT_MAGIC)) + rc = VERR_SEM_DESTROYED; + else if (ASMAtomicCmpXchgU32(&pThis->fState, 0, 1)) + rc = VINF_SUCCESS; + else if (rtR0SemLnxWaitHasTimedOut(&Wait)) + rc = VERR_TIMEOUT; + else if (rtR0SemLnxWaitWasInterrupted(&Wait)) + rc = VERR_INTERRUPTED; + else + { + /* Do the wait and then recheck the conditions. */ + rtR0SemLnxWaitDoIt(&Wait); + continue; + } + } + break; + } + + rtR0SemLnxWaitDelete(&Wait); + IPRT_DEBUG_SEMS_STATE_RC(pThis, 'E', rc); + } + } + + rtR0SemEventLnxRelease(pThis); + return rc; +} + + +RTDECL(int) RTSemEventWaitEx(RTSEMEVENT hEventSem, uint32_t fFlags, uint64_t uTimeout) +{ +#ifndef RTSEMEVENT_STRICT + return rtR0SemEventLnxWait(hEventSem, fFlags, uTimeout, NULL); +#else + RTLOCKVALSRCPOS SrcPos = RTLOCKVALSRCPOS_INIT_NORMAL_API(); + return rtR0SemEventLnxWait(hEventSem, fFlags, uTimeout, &SrcPos); +#endif +} +RT_EXPORT_SYMBOL(RTSemEventWaitEx); + + +RTDECL(int) RTSemEventWaitExDebug(RTSEMEVENT hEventSem, uint32_t fFlags, uint64_t uTimeout, + RTHCUINTPTR uId, RT_SRC_POS_DECL) +{ + RTLOCKVALSRCPOS SrcPos = RTLOCKVALSRCPOS_INIT_DEBUG_API(); + return rtR0SemEventLnxWait(hEventSem, fFlags, uTimeout, &SrcPos); +} +RT_EXPORT_SYMBOL(RTSemEventWaitExDebug); + + +RTDECL(uint32_t) RTSemEventGetResolution(void) +{ + return rtR0SemLnxWaitGetResolution(); +} +RT_EXPORT_SYMBOL(RTSemEventGetResolution); + --- linux-raspi2-4.2.0.orig/ubuntu/vbox/r0drv/linux/semeventmulti-r0drv-linux.c +++ linux-raspi2-4.2.0/ubuntu/vbox/r0drv/linux/semeventmulti-r0drv-linux.c @@ -0,0 +1,331 @@ +/* $Id: semeventmulti-r0drv-linux.c $ */ +/** @file + * IPRT - Multiple Release Event Semaphores, Ring-0 Driver, Linux. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + + +/******************************************************************************* +* Header Files * +*******************************************************************************/ +#define RTSEMEVENTMULTI_WITHOUT_REMAPPING +#include "the-linux-kernel.h" +#include "internal/iprt.h" +#include + +#include +#include +#include +#include +#include + +#include "waitqueue-r0drv-linux.h" +#include "internal/magics.h" + + +/******************************************************************************* +* Defined Constants And Macros * +*******************************************************************************/ +/** @name fStateAndGen values + * @{ */ +/** The state bit number. */ +#define RTSEMEVENTMULTILNX_STATE_BIT 0 +/** The state mask. */ +#define RTSEMEVENTMULTILNX_STATE_MASK RT_BIT_32(RTSEMEVENTMULTILNX_STATE_BIT) +/** The generation mask. */ +#define RTSEMEVENTMULTILNX_GEN_MASK ~RTSEMEVENTMULTILNX_STATE_MASK +/** The generation shift. */ +#define RTSEMEVENTMULTILNX_GEN_SHIFT 1 +/** The initial variable value. */ +#define RTSEMEVENTMULTILNX_STATE_GEN_INIT UINT32_C(0xfffffffc) +/** @} */ + + +/******************************************************************************* +* Structures and Typedefs * +*******************************************************************************/ +/** + * Linux event semaphore. + */ +typedef struct RTSEMEVENTMULTIINTERNAL +{ + /** Magic value (RTSEMEVENTMULTI_MAGIC). */ + uint32_t volatile u32Magic; + /** The object state bit and generation counter. + * The generation counter is incremented every time the object is + * signalled. */ + uint32_t volatile fStateAndGen; + /** Reference counter. */ + uint32_t volatile cRefs; + /** The wait queue. */ + wait_queue_head_t Head; +} RTSEMEVENTMULTIINTERNAL, *PRTSEMEVENTMULTIINTERNAL; + + + + + +RTDECL(int) RTSemEventMultiCreate(PRTSEMEVENTMULTI phEventMultiSem) +{ + return RTSemEventMultiCreateEx(phEventMultiSem, 0 /*fFlags*/, NIL_RTLOCKVALCLASS, NULL); +} + + +RTDECL(int) RTSemEventMultiCreateEx(PRTSEMEVENTMULTI phEventMultiSem, uint32_t fFlags, RTLOCKVALCLASS hClass, + const char *pszNameFmt, ...) +{ + PRTSEMEVENTMULTIINTERNAL pThis; + + AssertReturn(!(fFlags & ~RTSEMEVENTMULTI_FLAGS_NO_LOCK_VAL), VERR_INVALID_PARAMETER); + pThis = (PRTSEMEVENTMULTIINTERNAL)RTMemAlloc(sizeof(*pThis)); + if (pThis) + { + pThis->u32Magic = RTSEMEVENTMULTI_MAGIC; + pThis->fStateAndGen = RTSEMEVENTMULTILNX_STATE_GEN_INIT; + pThis->cRefs = 1; + init_waitqueue_head(&pThis->Head); + + *phEventMultiSem = pThis; + return VINF_SUCCESS; + } + return VERR_NO_MEMORY; +} +RT_EXPORT_SYMBOL(RTSemEventMultiCreate); + + +/** + * Retain a reference to the semaphore. + * + * @param pThis The semaphore. + */ +DECLINLINE(void) rtR0SemEventMultiLnxRetain(PRTSEMEVENTMULTIINTERNAL pThis) +{ + uint32_t cRefs = ASMAtomicIncU32(&pThis->cRefs); + NOREF(cRefs); + Assert(cRefs && cRefs < 100000); +} + + +/** + * Release a reference, destroy the thing if necessary. + * + * @param pThis The semaphore. + */ +DECLINLINE(void) rtR0SemEventMultiLnxRelease(PRTSEMEVENTMULTIINTERNAL pThis) +{ + if (RT_UNLIKELY(ASMAtomicDecU32(&pThis->cRefs) == 0)) + { + Assert(pThis->u32Magic != RTSEMEVENTMULTI_MAGIC); + RTMemFree(pThis); + } +} + + +RTDECL(int) RTSemEventMultiDestroy(RTSEMEVENTMULTI hEventMultiSem) +{ + /* + * Validate input. + */ + PRTSEMEVENTMULTIINTERNAL pThis = (PRTSEMEVENTMULTIINTERNAL)hEventMultiSem; + if (pThis == NIL_RTSEMEVENTMULTI) + return VINF_SUCCESS; + AssertPtrReturn(pThis, VERR_INVALID_PARAMETER); + AssertMsgReturn(pThis->u32Magic == RTSEMEVENTMULTI_MAGIC, ("%p u32Magic=%RX32\n", pThis, pThis->u32Magic), VERR_INVALID_PARAMETER); + Assert(pThis->cRefs > 0); + + /* + * Invalidate it and signal the object just in case. + */ + ASMAtomicWriteU32(&pThis->u32Magic, ~RTSEMEVENTMULTI_MAGIC); + ASMAtomicAndU32(&pThis->fStateAndGen, RTSEMEVENTMULTILNX_GEN_MASK); + Assert(!waitqueue_active(&pThis->Head)); + wake_up_all(&pThis->Head); + rtR0SemEventMultiLnxRelease(pThis); + return VINF_SUCCESS; +} +RT_EXPORT_SYMBOL(RTSemEventMultiDestroy); + + +RTDECL(int) RTSemEventMultiSignal(RTSEMEVENTMULTI hEventMultiSem) +{ + uint32_t fNew; + uint32_t fOld; + + /* + * Validate input. + */ + PRTSEMEVENTMULTIINTERNAL pThis = (PRTSEMEVENTMULTIINTERNAL)hEventMultiSem; + if (!pThis) + return VERR_INVALID_PARAMETER; + AssertPtrReturn(pThis, VERR_INVALID_PARAMETER); + AssertMsgReturn(pThis->u32Magic == RTSEMEVENTMULTI_MAGIC, ("%p u32Magic=%RX32\n", pThis, pThis->u32Magic), VERR_INVALID_PARAMETER); + rtR0SemEventMultiLnxRetain(pThis); + + /* + * Signal the event object. The cause of the paranoia here is racing to try + * deal with racing RTSemEventMultiSignal calls (should probably be + * forbidden, but it's relatively easy to handle). + */ + do + { + fNew = fOld = ASMAtomicUoReadU32(&pThis->fStateAndGen); + fNew += 1 << RTSEMEVENTMULTILNX_GEN_SHIFT; + fNew |= RTSEMEVENTMULTILNX_STATE_MASK; + } + while (!ASMAtomicCmpXchgU32(&pThis->fStateAndGen, fNew, fOld)); + + wake_up_all(&pThis->Head); + + rtR0SemEventMultiLnxRelease(pThis); + return VINF_SUCCESS; +} +RT_EXPORT_SYMBOL(RTSemEventMultiSignal); + + +RTDECL(int) RTSemEventMultiReset(RTSEMEVENTMULTI hEventMultiSem) +{ + /* + * Validate input. + */ + PRTSEMEVENTMULTIINTERNAL pThis = (PRTSEMEVENTMULTIINTERNAL)hEventMultiSem; + if (!pThis) + return VERR_INVALID_PARAMETER; + AssertPtrReturn(pThis, VERR_INVALID_PARAMETER); + AssertMsgReturn(pThis->u32Magic == RTSEMEVENTMULTI_MAGIC, ("%p u32Magic=%RX32\n", pThis, pThis->u32Magic), VERR_INVALID_PARAMETER); + rtR0SemEventMultiLnxRetain(pThis); + + /* + * Reset it. + */ + ASMAtomicAndU32(&pThis->fStateAndGen, ~RTSEMEVENTMULTILNX_STATE_MASK); + + rtR0SemEventMultiLnxRelease(pThis); + return VINF_SUCCESS; +} +RT_EXPORT_SYMBOL(RTSemEventMultiReset); + + +/** + * Worker for RTSemEventMultiWaitEx and RTSemEventMultiWaitExDebug. + * + * @returns VBox status code. + * @param pThis The event semaphore. + * @param fFlags See RTSemEventMultiWaitEx. + * @param uTimeout See RTSemEventMultiWaitEx. + * @param pSrcPos The source code position of the wait. + */ +static int rtR0SemEventMultiLnxWait(PRTSEMEVENTMULTIINTERNAL pThis, uint32_t fFlags, uint64_t uTimeout, + PCRTLOCKVALSRCPOS pSrcPos) +{ + uint32_t fOrgStateAndGen; + int rc; + + /* + * Validate the input. + */ + AssertPtrReturn(pThis, VERR_INVALID_PARAMETER); + AssertMsgReturn(pThis->u32Magic == RTSEMEVENTMULTI_MAGIC, ("%p u32Magic=%RX32\n", pThis, pThis->u32Magic), VERR_INVALID_PARAMETER); + AssertReturn(RTSEMWAIT_FLAGS_ARE_VALID(fFlags), VERR_INVALID_PARAMETER); + rtR0SemEventMultiLnxRetain(pThis); + + /* + * Is the event already signalled or do we have to wait? + */ + fOrgStateAndGen = ASMAtomicUoReadU32(&pThis->fStateAndGen); + if (fOrgStateAndGen & RTSEMEVENTMULTILNX_STATE_MASK) + rc = VINF_SUCCESS; + else + { + /* + * We have to wait. + */ + RTR0SEMLNXWAIT Wait; + rc = rtR0SemLnxWaitInit(&Wait, fFlags, uTimeout, &pThis->Head); + if (RT_SUCCESS(rc)) + { + IPRT_DEBUG_SEMS_STATE(pThis, 'E'); + for (;;) + { + /* The destruction test. */ + if (RT_UNLIKELY(pThis->u32Magic != RTSEMEVENTMULTI_MAGIC)) + rc = VERR_SEM_DESTROYED; + else + { + rtR0SemLnxWaitPrepare(&Wait); + + /* Check the exit conditions. */ + if (RT_UNLIKELY(pThis->u32Magic != RTSEMEVENTMULTI_MAGIC)) + rc = VERR_SEM_DESTROYED; + else if (ASMAtomicUoReadU32(&pThis->fStateAndGen) != fOrgStateAndGen) + rc = VINF_SUCCESS; + else if (rtR0SemLnxWaitHasTimedOut(&Wait)) + rc = VERR_TIMEOUT; + else if (rtR0SemLnxWaitWasInterrupted(&Wait)) + rc = VERR_INTERRUPTED; + else + { + /* Do the wait and then recheck the conditions. */ + rtR0SemLnxWaitDoIt(&Wait); + continue; + } + } + break; + } + + rtR0SemLnxWaitDelete(&Wait); + IPRT_DEBUG_SEMS_STATE_RC(pThis, 'E', rc); + } + } + + rtR0SemEventMultiLnxRelease(pThis); + return rc; +} + + +RTDECL(int) RTSemEventMultiWaitEx(RTSEMEVENTMULTI hEventMultiSem, uint32_t fFlags, uint64_t uTimeout) +{ +#ifndef RTSEMEVENT_STRICT + return rtR0SemEventMultiLnxWait(hEventMultiSem, fFlags, uTimeout, NULL); +#else + RTLOCKVALSRCPOS SrcPos = RTLOCKVALSRCPOS_INIT_NORMAL_API(); + return rtR0SemEventMultiLnxWait(hEventMultiSem, fFlags, uTimeout, &SrcPos); +#endif +} +RT_EXPORT_SYMBOL(RTSemEventMultiWaitEx); + + +RTDECL(int) RTSemEventMultiWaitExDebug(RTSEMEVENTMULTI hEventMultiSem, uint32_t fFlags, uint64_t uTimeout, + RTHCUINTPTR uId, RT_SRC_POS_DECL) +{ + RTLOCKVALSRCPOS SrcPos = RTLOCKVALSRCPOS_INIT_DEBUG_API(); + return rtR0SemEventMultiLnxWait(hEventMultiSem, fFlags, uTimeout, &SrcPos); +} +RT_EXPORT_SYMBOL(RTSemEventMultiWaitExDebug); + + +RTDECL(uint32_t) RTSemEventMultiGetResolution(void) +{ + return rtR0SemLnxWaitGetResolution(); +} +RT_EXPORT_SYMBOL(RTSemEventMultiGetResolution); + --- linux-raspi2-4.2.0.orig/ubuntu/vbox/r0drv/linux/semfastmutex-r0drv-linux.c +++ linux-raspi2-4.2.0/ubuntu/vbox/r0drv/linux/semfastmutex-r0drv-linux.c @@ -0,0 +1,146 @@ +/* $Id: semfastmutex-r0drv-linux.c $ */ +/** @file + * IPRT - Fast Mutex Semaphores, Ring-0 Driver, Linux. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + + +/******************************************************************************* +* Header Files * +*******************************************************************************/ +#include "the-linux-kernel.h" +#include "internal/iprt.h" +#include +#include +#include +#include +#include +#if defined(RT_STRICT) || defined(IPRT_DEBUG_SEMS) +# include +#endif + +#include "internal/magics.h" + + +/******************************************************************************* +* Structures and Typedefs * +*******************************************************************************/ +/** + * Wrapper for the linux semaphore structure. + */ +typedef struct RTSEMFASTMUTEXINTERNAL +{ + /** Magic value (RTSEMFASTMUTEX_MAGIC). */ + uint32_t u32Magic; + /** the linux semaphore. */ + struct semaphore Semaphore; +#if defined(RT_STRICT) || defined(IPRT_DEBUG_SEMS) + /** For check. */ + RTNATIVETHREAD volatile Owner; +#endif +} RTSEMFASTMUTEXINTERNAL, *PRTSEMFASTMUTEXINTERNAL; + + +RTDECL(int) RTSemFastMutexCreate(PRTSEMFASTMUTEX phFastMtx) +{ + /* + * Allocate. + */ + PRTSEMFASTMUTEXINTERNAL pThis; + pThis = (PRTSEMFASTMUTEXINTERNAL)RTMemAlloc(sizeof(*pThis)); + if (!pThis) + return VERR_NO_MEMORY; + + /* + * Initialize. + */ + pThis->u32Magic = RTSEMFASTMUTEX_MAGIC; + sema_init(&pThis->Semaphore, 1); +#if defined(RT_STRICT) || defined(IPRT_DEBUG_SEMS) + pThis->Owner = NIL_RTNATIVETHREAD; +#endif + + *phFastMtx = pThis; + return VINF_SUCCESS; +} +RT_EXPORT_SYMBOL(RTSemFastMutexCreate); + + +RTDECL(int) RTSemFastMutexDestroy(RTSEMFASTMUTEX hFastMtx) +{ + /* + * Validate. + */ + PRTSEMFASTMUTEXINTERNAL pThis = hFastMtx; + if (pThis == NIL_RTSEMFASTMUTEX) + return VINF_SUCCESS; + AssertPtrReturn(pThis, VERR_INVALID_HANDLE); + AssertMsgReturn(pThis->u32Magic == RTSEMFASTMUTEX_MAGIC, ("u32Magic=%RX32 pThis=%p\n", pThis->u32Magic, pThis), VERR_INVALID_HANDLE); + + ASMAtomicWriteU32(&pThis->u32Magic, RTSEMFASTMUTEX_MAGIC_DEAD); + RTMemFree(pThis); + return VINF_SUCCESS; +} +RT_EXPORT_SYMBOL(RTSemFastMutexDestroy); + + +RTDECL(int) RTSemFastMutexRequest(RTSEMFASTMUTEX hFastMtx) +{ + /* + * Validate. + */ + PRTSEMFASTMUTEXINTERNAL pThis = hFastMtx; + AssertPtrReturn(pThis, VERR_INVALID_HANDLE); + AssertMsgReturn(pThis->u32Magic == RTSEMFASTMUTEX_MAGIC, ("u32Magic=%RX32 pThis=%p\n", pThis->u32Magic, pThis), VERR_INVALID_HANDLE); + + IPRT_DEBUG_SEMS_STATE(pThis, 'd'); + down(&pThis->Semaphore); +#if defined(RT_STRICT) || defined(IPRT_DEBUG_SEMS) + IPRT_DEBUG_SEMS_STATE(pThis, 'o'); + AssertRelease(pThis->Owner == NIL_RTNATIVETHREAD); + ASMAtomicUoWriteSize(&pThis->Owner, RTThreadNativeSelf()); +#endif + return VINF_SUCCESS; +} +RT_EXPORT_SYMBOL(RTSemFastMutexRequest); + + +RTDECL(int) RTSemFastMutexRelease(RTSEMFASTMUTEX hFastMtx) +{ + /* + * Validate. + */ + PRTSEMFASTMUTEXINTERNAL pThis = hFastMtx; + AssertPtrReturn(pThis, VERR_INVALID_HANDLE); + AssertMsgReturn(pThis->u32Magic == RTSEMFASTMUTEX_MAGIC, ("u32Magic=%RX32 pThis=%p\n", pThis->u32Magic, pThis), VERR_INVALID_HANDLE); + +#if defined(RT_STRICT) || defined(IPRT_DEBUG_SEMS) + AssertRelease(pThis->Owner == RTThreadNativeSelf()); + ASMAtomicUoWriteSize(&pThis->Owner, NIL_RTNATIVETHREAD); +#endif + up(&pThis->Semaphore); + IPRT_DEBUG_SEMS_STATE(pThis, 'u'); + return VINF_SUCCESS; +} +RT_EXPORT_SYMBOL(RTSemFastMutexRelease); + --- linux-raspi2-4.2.0.orig/ubuntu/vbox/r0drv/linux/semmutex-r0drv-linux.c +++ linux-raspi2-4.2.0/ubuntu/vbox/r0drv/linux/semmutex-r0drv-linux.c @@ -0,0 +1,398 @@ +/* $Id: semmutex-r0drv-linux.c $ */ +/** @file + * IPRT - Mutex Semaphores, Ring-0 Driver, Linux. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + + +/******************************************************************************* +* Header Files * +*******************************************************************************/ +#define RTSEMMUTEX_WITHOUT_REMAPPING +#include "the-linux-kernel.h" +#include "internal/iprt.h" +#include + +#include +#include +#include +#include +#include + +#include "internal/magics.h" + + +/******************************************************************************* +* Structures and Typedefs * +*******************************************************************************/ +typedef struct RTSEMMUTEXLNXWAITER +{ + /** The list entry. */ + RTLISTNODE ListEntry; + /** The waiting task. */ + struct task_struct *pTask; + /** Why did we wake up? */ + enum + { + /** Wakeup to take the semaphore. */ + RTSEMMUTEXLNXWAITER_WAKEUP, + /** Mutex is being destroyed. */ + RTSEMMUTEXLNXWAITER_DESTROYED, + /** Some other reason. */ + RTSEMMUTEXLNXWAITER_OTHER + } volatile enmReason; +} RTSEMMUTEXLNXWAITER, *PRTSEMMUTEXLNXWAITER; + +/** + * Wrapper for the linux semaphore structure. + */ +typedef struct RTSEMMUTEXINTERNAL +{ + /** Magic value (RTSEMMUTEX_MAGIC). */ + uint32_t u32Magic; + /** The number of recursions. */ + uint32_t cRecursions; + /** The list of waiting threads. */ + RTLISTANCHOR WaiterList; + /** The current owner, NULL if none. */ + struct task_struct *pOwnerTask; + /** The number of references to this piece of memory. This is used to + * prevent it from being kicked from underneath us while waiting. */ + uint32_t volatile cRefs; + /** The spinlock protecting the members and falling asleep. */ + spinlock_t Spinlock; +} RTSEMMUTEXINTERNAL, *PRTSEMMUTEXINTERNAL; + + +RTDECL(int) RTSemMutexCreate(PRTSEMMUTEX phMtx) +{ + /* + * Allocate. + */ + PRTSEMMUTEXINTERNAL pThis; + pThis = (PRTSEMMUTEXINTERNAL)RTMemAlloc(sizeof(*pThis)); + if (!pThis) + return VERR_NO_MEMORY; + + /* + * Initialize. + */ + pThis->u32Magic = RTSEMMUTEX_MAGIC; + pThis->cRecursions = 0; + pThis->pOwnerTask = NULL; + pThis->cRefs = 1; + RTListInit(&pThis->WaiterList); + spin_lock_init(&pThis->Spinlock); + + *phMtx = pThis; + return VINF_SUCCESS; +} +RT_EXPORT_SYMBOL(RTSemMutexCreate); + + +RTDECL(int) RTSemMutexDestroy(RTSEMMUTEX hMtx) +{ + PRTSEMMUTEXINTERNAL pThis = hMtx; + PRTSEMMUTEXLNXWAITER pCur; + unsigned long fSavedIrq; + + /* + * Validate. + */ + if (pThis == NIL_RTSEMMUTEX) + return VINF_SUCCESS; + AssertPtrReturn(pThis, VERR_INVALID_HANDLE); + AssertMsgReturn(pThis->u32Magic == RTSEMMUTEX_MAGIC, ("u32Magic=%RX32 pThis=%p\n", pThis->u32Magic, pThis), VERR_INVALID_HANDLE); + + /* + * Kill it, kick waiters and release it. + */ + AssertReturn(ASMAtomicCmpXchgU32(&pThis->u32Magic, RTSEMMUTEX_MAGIC_DEAD, RTSEMMUTEX_MAGIC), VERR_INVALID_HANDLE); + + spin_lock_irqsave(&pThis->Spinlock, fSavedIrq); + RTListForEach(&pThis->WaiterList, pCur, RTSEMMUTEXLNXWAITER, ListEntry) + { + pCur->enmReason = RTSEMMUTEXLNXWAITER_DESTROYED; + wake_up_process(pCur->pTask); + } + + if (ASMAtomicDecU32(&pThis->cRefs) != 0) + spin_unlock_irqrestore(&pThis->Spinlock, fSavedIrq); + else + { + spin_unlock_irqrestore(&pThis->Spinlock, fSavedIrq); + RTMemFree(pThis); + } + + return VINF_SUCCESS; +} +RT_EXPORT_SYMBOL(RTSemMutexDestroy); + + +/** + * Worker for rtSemMutexLinuxRequest that handles the case where we go to sleep. + * + * @returns VINF_SUCCESS, VERR_INTERRUPTED, VERR_TIMEOUT or VERR_SEM_DESTROYED. + * Returns without owning the spinlock. + * @param pThis The mutex instance. + * @param cMillies The timeout. + * @param fInterruptible The wait type. + * @param fSavedIrq The saved IRQ flags. + */ +static int rtSemMutexLinuxRequestSleep(PRTSEMMUTEXINTERNAL pThis, RTMSINTERVAL cMillies, + bool fInterruptible, unsigned long fSavedIrq) +{ + struct task_struct *pSelf = current; + int rc = VERR_TIMEOUT; + long lTimeout = cMillies == RT_INDEFINITE_WAIT ? MAX_SCHEDULE_TIMEOUT : msecs_to_jiffies(cMillies); + RTSEMMUTEXLNXWAITER Waiter; + + IPRT_DEBUG_SEMS_STATE(pThis, 'm'); + + /* + * Grab a reference to the mutex and add ourselves to the waiter list. + */ + ASMAtomicIncU32(&pThis->cRefs); + + Waiter.pTask = pSelf; + Waiter.enmReason = RTSEMMUTEXLNXWAITER_OTHER; + RTListAppend(&pThis->WaiterList, &Waiter.ListEntry); + + /* + * Do the waiting. + */ + for (;;) + { + /* Check signal and timeout conditions. */ + if ( fInterruptible + && signal_pending(pSelf)) + { + rc = VERR_INTERRUPTED; + break; + } + + if (!lTimeout) + break; + + /* Go to sleep. */ + set_task_state(pSelf, fInterruptible ? TASK_INTERRUPTIBLE : TASK_UNINTERRUPTIBLE); + spin_unlock_irq(&pThis->Spinlock); + + lTimeout = schedule_timeout(lTimeout); + + spin_lock_irq(&pThis->Spinlock); + set_current_state(TASK_RUNNING); + + /* Did someone wake us up? */ + if (Waiter.enmReason == RTSEMMUTEXLNXWAITER_WAKEUP) + { + Assert(pThis->cRecursions == 0); + pThis->cRecursions = 1; + pThis->pOwnerTask = pSelf; + rc = VINF_SUCCESS; + break; + } + + /* Is the mutex being destroyed? */ + if (RT_UNLIKELY( Waiter.enmReason == RTSEMMUTEXLNXWAITER_DESTROYED + || pThis->u32Magic != RTSEMMUTEX_MAGIC)) + { + rc = VERR_SEM_DESTROYED; + break; + } + } + + /* + * Unlink ourself from the waiter list, dereference the mutex and exit the + * lock. We might have to free the mutex if it was the destroyed. + */ + RTListNodeRemove(&Waiter.ListEntry); + IPRT_DEBUG_SEMS_STATE_RC(pThis, 'M', rc); + + if (RT_LIKELY(ASMAtomicDecU32(&pThis->cRefs) != 0)) + spin_unlock_irqrestore(&pThis->Spinlock, fSavedIrq); + else + { + Assert(RT_FAILURE_NP(rc)); + spin_unlock_irqrestore(&pThis->Spinlock, fSavedIrq); + RTMemFree(pThis); + } + return rc; +} + + +/** + * Internal worker. + */ +DECLINLINE(int) rtSemMutexLinuxRequest(RTSEMMUTEX hMutexSem, RTMSINTERVAL cMillies, bool fInterruptible) +{ + PRTSEMMUTEXINTERNAL pThis = hMutexSem; + struct task_struct *pSelf = current; + unsigned long fSavedIrq; + int rc; + + /* + * Validate. + */ + AssertPtrReturn(pThis, VERR_INVALID_HANDLE); + AssertMsgReturn(pThis->u32Magic == RTSEMMUTEX_MAGIC, ("u32Magic=%RX32 pThis=%p\n", pThis->u32Magic, pThis), VERR_INVALID_HANDLE); + Assert(pThis->cRefs >= 1); + + /* + * Lock it and check if it's a recursion. + */ + spin_lock_irqsave(&pThis->Spinlock, fSavedIrq); + if (pThis->pOwnerTask == pSelf) + { + pThis->cRecursions++; + Assert(pThis->cRecursions > 1); + Assert(pThis->cRecursions < 256); + rc = VINF_SUCCESS; + } + /* + * Not a recursion, maybe it's not owned by anyone then? + */ + else if ( pThis->pOwnerTask == NULL + && RTListIsEmpty(&pThis->WaiterList)) + { + Assert(pThis->cRecursions == 0); + pThis->cRecursions = 1; + pThis->pOwnerTask = pSelf; + rc = VINF_SUCCESS; + } + /* + * Was it a polling call? + */ + else if (cMillies == 0) + rc = VERR_TIMEOUT; + /* + * No, so go to sleep. + */ + else + return rtSemMutexLinuxRequestSleep(pThis, cMillies, fInterruptible, fSavedIrq); + + IPRT_DEBUG_SEMS_STATE_RC(pThis, 'M', rc); + spin_unlock_irqrestore(&pThis->Spinlock, fSavedIrq); + return rc; +} + + +RTDECL(int) RTSemMutexRequest(RTSEMMUTEX hMutexSem, RTMSINTERVAL cMillies) +{ + return rtSemMutexLinuxRequest(hMutexSem, cMillies, false /*fInterruptible*/); +} +RT_EXPORT_SYMBOL(RTSemMutexRequest); + + +RTDECL(int) RTSemMutexRequestDebug(RTSEMMUTEX hMutexSem, RTMSINTERVAL cMillies, RTHCUINTPTR uId, RT_SRC_POS_DECL) +{ + return RTSemMutexRequest(hMutexSem, cMillies); +} +RT_EXPORT_SYMBOL(RTSemMutexRequestDebug); + + +RTDECL(int) RTSemMutexRequestNoResume(RTSEMMUTEX hMutexSem, RTMSINTERVAL cMillies) +{ + return rtSemMutexLinuxRequest(hMutexSem, cMillies, true /*fInterruptible*/); +} +RT_EXPORT_SYMBOL(RTSemMutexRequestNoResume); + + +RTDECL(int) RTSemMutexRequestNoResumeDebug(RTSEMMUTEX hMutexSem, RTMSINTERVAL cMillies, RTHCUINTPTR uId, RT_SRC_POS_DECL) +{ + return RTSemMutexRequestNoResume(hMutexSem, cMillies); +} +RT_EXPORT_SYMBOL(RTSemMutexRequestNoResumeDebug); + + +RTDECL(int) RTSemMutexRelease(RTSEMMUTEX hMtx) +{ + PRTSEMMUTEXINTERNAL pThis = hMtx; + struct task_struct *pSelf = current; + unsigned long fSavedIrq; + int rc; + + /* + * Validate. + */ + AssertPtrReturn(pThis, VERR_INVALID_HANDLE); + AssertMsgReturn(pThis->u32Magic == RTSEMMUTEX_MAGIC, ("u32Magic=%RX32 pThis=%p\n", pThis->u32Magic, pThis), VERR_INVALID_HANDLE); + Assert(pThis->cRefs >= 1); + + /* + * Take the lock and release one recursion. + */ + spin_lock_irqsave(&pThis->Spinlock, fSavedIrq); + if (pThis->pOwnerTask == pSelf) + { + Assert(pThis->cRecursions > 0); + if (--pThis->cRecursions == 0) + { + pThis->pOwnerTask = NULL; + + /* anyone to wake up? */ + if (!RTListIsEmpty(&pThis->WaiterList)) + { + PRTSEMMUTEXLNXWAITER pWaiter = RTListGetFirst(&pThis->WaiterList, RTSEMMUTEXLNXWAITER, ListEntry); + pWaiter->enmReason = RTSEMMUTEXLNXWAITER_WAKEUP; + wake_up_process(pWaiter->pTask); + } + IPRT_DEBUG_SEMS_STATE(pThis, 'u'); + } + rc = VINF_SUCCESS; + } + else + rc = VERR_NOT_OWNER; + spin_unlock_irqrestore(&pThis->Spinlock, fSavedIrq); + + AssertRC(rc); + return rc; +} +RT_EXPORT_SYMBOL(RTSemMutexRelease); + + +RTDECL(bool) RTSemMutexIsOwned(RTSEMMUTEX hMutexSem) +{ + PRTSEMMUTEXINTERNAL pThis = hMutexSem; + unsigned long fSavedIrq; + bool fOwned; + + /* + * Validate. + */ + AssertPtrReturn(pThis, false); + AssertMsgReturn(pThis->u32Magic == RTSEMMUTEX_MAGIC, ("u32Magic=%RX32 pThis=%p\n", pThis->u32Magic, pThis), false); + Assert(pThis->cRefs >= 1); + + /* + * Take the lock and release one recursion. + */ + spin_lock_irqsave(&pThis->Spinlock, fSavedIrq); + fOwned = pThis->pOwnerTask != NULL; + spin_unlock_irqrestore(&pThis->Spinlock, fSavedIrq); + + return fOwned; + +} +RT_EXPORT_SYMBOL(RTSemMutexIsOwned); + --- linux-raspi2-4.2.0.orig/ubuntu/vbox/r0drv/linux/spinlock-r0drv-linux.c +++ linux-raspi2-4.2.0/ubuntu/vbox/r0drv/linux/spinlock-r0drv-linux.c @@ -0,0 +1,179 @@ +/* $Id: spinlock-r0drv-linux.c $ */ +/** @file + * IPRT - Spinlocks, Ring-0 Driver, Linux. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + + +/******************************************************************************* +* Header Files * +*******************************************************************************/ +#include "the-linux-kernel.h" +#include "internal/iprt.h" +#include + +#include +#if defined(RT_ARCH_AMD64) || defined(RT_ARCH_X86) +# include +#endif +#include +#include +#include +#include +#include +#include "internal/magics.h" + + +/******************************************************************************* +* Structures and Typedefs * +*******************************************************************************/ +/** + * Wrapper for the spinlock_t structure. + */ +typedef struct RTSPINLOCKINTERNAL +{ + /** Spinlock magic value (RTSPINLOCK_MAGIC). */ + uint32_t volatile u32Magic; + /** The spinlock creation flags. */ + uint32_t fFlags; + /** The saved interrupt flag. */ + unsigned long volatile fIntSaved; + /** The linux spinlock structure. */ + spinlock_t Spinlock; +#ifdef RT_MORE_STRICT + /** The idAssertCpu variable before acquring the lock for asserting after + * releasing the spinlock. */ + RTCPUID volatile idAssertCpu; + /** The CPU that owns the lock. */ + RTCPUID volatile idCpuOwner; +#endif +} RTSPINLOCKINTERNAL, *PRTSPINLOCKINTERNAL; + + + +RTDECL(int) RTSpinlockCreate(PRTSPINLOCK pSpinlock, uint32_t fFlags, const char *pszName) +{ + PRTSPINLOCKINTERNAL pThis; + AssertReturn(fFlags == RTSPINLOCK_FLAGS_INTERRUPT_SAFE || fFlags == RTSPINLOCK_FLAGS_INTERRUPT_UNSAFE, VERR_INVALID_PARAMETER); + + /* + * Allocate. + */ + Assert(sizeof(RTSPINLOCKINTERNAL) > sizeof(void *)); + pThis = (PRTSPINLOCKINTERNAL)RTMemAlloc(sizeof(*pThis)); + if (!pThis) + return VERR_NO_MEMORY; + /* + * Initialize and return. + */ + pThis->u32Magic = RTSPINLOCK_MAGIC; + pThis->fFlags = fFlags; + pThis->fIntSaved = 0; +#ifdef RT_MORE_STRICT + pThis->idCpuOwner = NIL_RTCPUID; + pThis->idAssertCpu = NIL_RTCPUID; +#endif + + spin_lock_init(&pThis->Spinlock); + + *pSpinlock = pThis; + return VINF_SUCCESS; +} +RT_EXPORT_SYMBOL(RTSpinlockCreate); + + +RTDECL(int) RTSpinlockDestroy(RTSPINLOCK Spinlock) +{ + /* + * Validate input. + */ + PRTSPINLOCKINTERNAL pThis = (PRTSPINLOCKINTERNAL)Spinlock; + if (!pThis) + return VERR_INVALID_PARAMETER; + if (pThis->u32Magic != RTSPINLOCK_MAGIC) + { + AssertMsgFailed(("Invalid spinlock %p magic=%#x\n", pThis, pThis->u32Magic)); + return VERR_INVALID_PARAMETER; + } + + ASMAtomicIncU32(&pThis->u32Magic); + RTMemFree(pThis); + return VINF_SUCCESS; +} +RT_EXPORT_SYMBOL(RTSpinlockDestroy); + + +RTDECL(void) RTSpinlockAcquire(RTSPINLOCK Spinlock) +{ + PRTSPINLOCKINTERNAL pThis = (PRTSPINLOCKINTERNAL)Spinlock; + RT_ASSERT_PREEMPT_CPUID_VAR(); + AssertMsg(pThis && pThis->u32Magic == RTSPINLOCK_MAGIC, + ("pThis=%p u32Magic=%08x\n", pThis, pThis ? (int)pThis->u32Magic : 0)); + +#ifdef CONFIG_PROVE_LOCKING + lockdep_off(); +#endif + if (pThis->fFlags & RTSPINLOCK_FLAGS_INTERRUPT_SAFE) + { + unsigned long fIntSaved; + spin_lock_irqsave(&pThis->Spinlock, fIntSaved); + pThis->fIntSaved = fIntSaved; + } + else + spin_lock(&pThis->Spinlock); +#ifdef CONFIG_PROVE_LOCKING + lockdep_on(); +#endif + + RT_ASSERT_PREEMPT_CPUID_SPIN_ACQUIRED(pThis); +} +RT_EXPORT_SYMBOL(RTSpinlockAcquire); + + +RTDECL(void) RTSpinlockRelease(RTSPINLOCK Spinlock) +{ + PRTSPINLOCKINTERNAL pThis = (PRTSPINLOCKINTERNAL)Spinlock; + RT_ASSERT_PREEMPT_CPUID_SPIN_RELEASE_VARS(); + AssertMsg(pThis && pThis->u32Magic == RTSPINLOCK_MAGIC, + ("pThis=%p u32Magic=%08x\n", pThis, pThis ? (int)pThis->u32Magic : 0)); + RT_ASSERT_PREEMPT_CPUID_SPIN_RELEASE(pThis); + +#ifdef CONFIG_PROVE_LOCKING + lockdep_off(); +#endif + if (pThis->fFlags & RTSPINLOCK_FLAGS_INTERRUPT_SAFE) + { + unsigned long fIntSaved = pThis->fIntSaved; + pThis->fIntSaved = 0; + spin_unlock_irqrestore(&pThis->Spinlock, fIntSaved); + } + else + spin_unlock(&pThis->Spinlock); +#ifdef CONFIG_PROVE_LOCKING + lockdep_on(); +#endif + + RT_ASSERT_PREEMPT_CPUID(); +} +RT_EXPORT_SYMBOL(RTSpinlockRelease); + --- linux-raspi2-4.2.0.orig/ubuntu/vbox/r0drv/linux/string.h +++ linux-raspi2-4.2.0/ubuntu/vbox/r0drv/linux/string.h @@ -0,0 +1,57 @@ +/* $Id: string.h $ */ +/** @file + * IPRT - wrapper for the linux kernel asm/string.h. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + +#ifndef ___string_h +#define ___string_h + +#include + +RT_C_DECLS_BEGIN +#ifndef bool /* Linux 2.6.19 C++ nightmare */ +#define bool bool_type +#define true true_type +#define false false_type +#define _Bool int +#define bool_type_r0drv_string_h__ +#endif +#include +#include +#ifdef bool_type_r0drv_string_h__ +#undef bool +#undef true +#undef false +#undef bool_type_r0drv_string_h__ +#endif +char *strpbrk(const char *pszStr, const char *pszChars) +#if defined(__THROW) + __THROW +#endif + ; + +RT_C_DECLS_END + +#endif + --- linux-raspi2-4.2.0.orig/ubuntu/vbox/r0drv/linux/the-linux-kernel.h +++ linux-raspi2-4.2.0/ubuntu/vbox/r0drv/linux/the-linux-kernel.h @@ -0,0 +1,429 @@ +/* $Id: the-linux-kernel.h $ */ +/** @file + * IPRT - Include all necessary headers for the Linux kernel. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + +#ifndef ___the_linux_kernel_h +#define ___the_linux_kernel_h + +/* + * Include iprt/types.h to install the bool wrappers. + * Then use the linux bool type for all the stuff include here. + */ +#include +#define bool linux_bool + +#include +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 33) +# include +#else +# ifndef AUTOCONF_INCLUDED +# include +# endif +#endif + +/* We only support 2.4 and 2.6 series kernels */ +#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 4, 0) +# error We only support 2.4 and 2.6 series kernels +#endif +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 5, 0) && LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 0) +# error We only support 2.4 and 2.6 series kernels +#endif + +#if defined(CONFIG_MODVERSIONS) && !defined(MODVERSIONS) +# define MODVERSIONS +# if LINUX_VERSION_CODE < KERNEL_VERSION(2, 5, 71) +# include +# endif +#endif +#ifndef KBUILD_STR +# if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 16) +# define KBUILD_STR(s) s +# else +# define KBUILD_STR(s) #s +# endif +#endif +# if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 3, 0) +# include /* for macro IS_ENABLED */ +# endif +#include +#include +#include +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 27) +# include +#else /* older kernels */ +# include +#endif /* older kernels */ +#include +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 0) +# include +#endif +#include +#include +#include +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 0) +# include +#endif +#include +#include +#include +#include +#include +#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 9, 0) +# include +#endif +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 7) +# include +#endif +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 16) +# include +# include +#endif +#include +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 5, 71) +# include +# include +#endif +/* For the basic additions module */ +#include +#include +#include +#include +#include +#ifndef HAVE_UNLOCKED_IOCTL /* linux/fs.h defines this */ +# include +#endif +/* For the shared folders module */ +#include +#define wchar_t linux_wchar_t +#include +#undef wchar_t +#include +#include +#include +#include + +/* For thread-context hooks. */ +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 18) && defined(CONFIG_PREEMPT_NOTIFIERS) +# include +#endif + +/* for workqueue / task queues. */ +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 5, 41) +# include +#else +# include +#endif + +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 0) +# include +#endif + +/* for cr4_init_shadow() / cpu_tlbstate. */ +#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 20, 0) +# include +#endif + +#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 7, 0) +# include +#else +static inline void clac(void) { } +static inline void stac(void) { } +#endif + +#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 0) +# ifndef page_to_pfn +# define page_to_pfn(page) ((page) - mem_map) +# endif +#endif + +#ifndef DEFINE_WAIT +# define DEFINE_WAIT(name) DECLARE_WAITQUEUE(name, current) +#endif + +#ifndef __GFP_NOWARN +# define __GFP_NOWARN 0 +#endif + +/* + * 2.4 / early 2.6 compatibility wrappers + */ +#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 7) + +# ifndef MAX_JIFFY_OFFSET +# define MAX_JIFFY_OFFSET ((~0UL >> 1)-1) +# endif + +# if LINUX_VERSION_CODE < KERNEL_VERSION(2, 4, 29) || LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 0) + +DECLINLINE(unsigned int) jiffies_to_msecs(unsigned long cJiffies) +{ +# if HZ <= 1000 && !(1000 % HZ) + return (1000 / HZ) * cJiffies; +# elif HZ > 1000 && !(HZ % 1000) + return (cJiffies + (HZ / 1000) - 1) / (HZ / 1000); +# else + return (cJiffies * 1000) / HZ; +# endif +} + +DECLINLINE(unsigned long) msecs_to_jiffies(unsigned int cMillies) +{ +# if HZ > 1000 + if (cMillies > jiffies_to_msecs(MAX_JIFFY_OFFSET)) + return MAX_JIFFY_OFFSET; +# endif +# if HZ <= 1000 && !(1000 % HZ) + return (cMillies + (1000 / HZ) - 1) / (1000 / HZ); +# elif HZ > 1000 && !(HZ % 1000) + return cMillies * (HZ / 1000); +# else + return (cMillies * HZ + 999) / 1000; +# endif +} + +# endif /* < 2.4.29 || >= 2.6.0 */ + +#endif /* < 2.6.7 */ + +/* + * 2.4 compatibility wrappers + */ +#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 0) + +# define prepare_to_wait(q, wait, state) \ + do { \ + add_wait_queue(q, wait); \ + set_current_state(state); \ + } while (0) + +# define after_wait(wait) \ + do { \ + list_del_init(&(wait)->task_list); \ + } while (0) + +# define finish_wait(q, wait) \ + do { \ + set_current_state(TASK_RUNNING); \ + remove_wait_queue(q, wait); \ + } while (0) + +#else /* >= 2.6.0 */ + +# define after_wait(wait) do {} while (0) + +#endif /* >= 2.6.0 */ + +/** @def TICK_NSEC + * The time between ticks in nsec */ +#ifndef TICK_NSEC +# define TICK_NSEC (1000000000UL / HZ) +#endif + +/* + * This sucks soooo badly on x86! Why don't they export __PAGE_KERNEL_EXEC so PAGE_KERNEL_EXEC would be usable? + */ +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 8) && defined(RT_ARCH_AMD64) +# define MY_PAGE_KERNEL_EXEC PAGE_KERNEL_EXEC +#elif LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 8) && defined(PAGE_KERNEL_EXEC) && defined(CONFIG_X86_PAE) +# ifdef __PAGE_KERNEL_EXEC + /* >= 2.6.27 */ +# define MY_PAGE_KERNEL_EXEC __pgprot(cpu_has_pge ? __PAGE_KERNEL_EXEC | _PAGE_GLOBAL : __PAGE_KERNEL_EXEC) +# else +# define MY_PAGE_KERNEL_EXEC __pgprot(cpu_has_pge ? _PAGE_KERNEL_EXEC | _PAGE_GLOBAL : _PAGE_KERNEL_EXEC) +# endif +#else +# define MY_PAGE_KERNEL_EXEC PAGE_KERNEL +#endif + + +/* + * The redhat hack section. + * - The current hacks are for 2.4.21-15.EL only. + */ +#ifndef NO_REDHAT_HACKS +/* accounting. */ +# if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 0) +# ifdef VM_ACCOUNT +# define USE_RHEL4_MUNMAP +# endif +# endif + +/* backported remap_page_range. */ +# if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 0) +# include +# ifdef tlb_vma /* probably not good enough... */ +# define HAVE_26_STYLE_REMAP_PAGE_RANGE 1 +# endif +# endif + +# ifndef RT_ARCH_AMD64 +/* In 2.6.9-22.ELsmp we have to call change_page_attr() twice when changing + * the page attributes from PAGE_KERNEL to something else, because there appears + * to be a bug in one of the many patches that redhat applied. + * It should be safe to do this on less buggy linux kernels too. ;-) + */ +# define MY_CHANGE_PAGE_ATTR(pPages, cPages, prot) \ + do { \ + if (pgprot_val(prot) != pgprot_val(PAGE_KERNEL)) \ + change_page_attr(pPages, cPages, prot); \ + change_page_attr(pPages, cPages, prot); \ + } while (0) +# endif /* !RT_ARCH_AMD64 */ +#endif /* !NO_REDHAT_HACKS */ + +#ifndef MY_CHANGE_PAGE_ATTR +# ifdef RT_ARCH_AMD64 /** @todo This is a cheap hack, but it'll get around that 'else BUG();' in __change_page_attr(). */ +# define MY_CHANGE_PAGE_ATTR(pPages, cPages, prot) \ + do { \ + change_page_attr(pPages, cPages, PAGE_KERNEL_NOCACHE); \ + change_page_attr(pPages, cPages, prot); \ + } while (0) +# else +# define MY_CHANGE_PAGE_ATTR(pPages, cPages, prot) change_page_attr(pPages, cPages, prot) +# endif +#endif + +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 25) +# define MY_SET_PAGES_EXEC(pPages, cPages) set_pages_x(pPages, cPages) +# define MY_SET_PAGES_NOEXEC(pPages, cPages) set_pages_nx(pPages, cPages) +#else +# define MY_SET_PAGES_EXEC(pPages, cPages) \ + do { \ + if (pgprot_val(MY_PAGE_KERNEL_EXEC) != pgprot_val(PAGE_KERNEL)) \ + MY_CHANGE_PAGE_ATTR(pPages, cPages, MY_PAGE_KERNEL_EXEC); \ + } while (0) +# define MY_SET_PAGES_NOEXEC(pPages, cPages) \ + do { \ + if (pgprot_val(MY_PAGE_KERNEL_EXEC) != pgprot_val(PAGE_KERNEL)) \ + MY_CHANGE_PAGE_ATTR(pPages, cPages, PAGE_KERNEL); \ + } while (0) +#endif + +/** @def ONE_MSEC_IN_JIFFIES + * The number of jiffies that make up 1 millisecond. Must be at least 1! */ +#if HZ <= 1000 +# define ONE_MSEC_IN_JIFFIES 1 +#elif !(HZ % 1000) +# define ONE_MSEC_IN_JIFFIES (HZ / 1000) +#else +# define ONE_MSEC_IN_JIFFIES ((HZ + 999) / 1000) +# error "HZ is not a multiple of 1000, the GIP stuff won't work right!" +#endif + +/* + * Stop using the linux bool type. + */ +#undef bool + +/* + * There are post-2.6.24 kernels (confusingly with unchanged version number) + * which eliminate macros which were marked as deprecated. + */ +#ifndef __attribute_used__ +#define __attribute_used__ __used +#endif + +/** + * Hack for shortening pointers on linux so we can stuff more stuff into the + * task_struct::comm field. This is used by the semaphore code but put here + * because we don't have any better place atm. Don't use outside IPRT, please. + */ +#ifdef RT_ARCH_AMD64 +# define IPRT_DEBUG_SEMS_ADDRESS(addr) ( ((long)(addr) & (long)~UINT64_C(0xfffffff000000000)) ) +#else +# define IPRT_DEBUG_SEMS_ADDRESS(addr) ( (long)(addr) ) +#endif + +/** + * Puts semaphore info into the task_struct::comm field if IPRT_DEBUG_SEMS is + * defined. + */ +#ifdef IPRT_DEBUG_SEMS +# define IPRT_DEBUG_SEMS_STATE(pThis, chState) \ + snprintf(current->comm, sizeof(current->comm), "%c%lx", (chState), IPRT_DEBUG_SEMS_ADDRESS(pThis)); +#else +# define IPRT_DEBUG_SEMS_STATE(pThis, chState) do { } while (0) +#endif + +/** + * Puts semaphore info into the task_struct::comm field if IPRT_DEBUG_SEMS is + * defined. + */ +#ifdef IPRT_DEBUG_SEMS +# define IPRT_DEBUG_SEMS_STATE_RC(pThis, chState, rc) \ + snprintf(current->comm, sizeof(current->comm), "%c%lx:%d", (chState), IPRT_DEBUG_SEMS_ADDRESS(pThis), rc); +#else +# define IPRT_DEBUG_SEMS_STATE_RC(pThis, chState, rc) do { } while (0) +#endif + +/** @name Macros for preserving EFLAGS.AC on 3.19+/amd64 paranoid. + * The AMD 64 switch_to in macro in arch/x86/include/asm/switch_to.h stopped + * restoring flags. + * @{ */ +#ifdef CONFIG_X86_SMAP +# include +# define IPRT_X86_EFL_AC RT_BIT(18) +# define IPRT_LINUX_SAVE_EFL_AC() RTCCUINTREG fSavedEfl = ASMGetFlags(); +# define IPRT_LINUX_RESTORE_EFL_AC() ASMSetFlags(fSavedEfl) +# define IPRT_LINUX_RESTORE_EFL_ONLY_AC() ASMSetFlags((ASMGetFlags() & ~IPRT_X86_EFL_AC) | (fSavedEfl & IPRT_X86_EFL_AC)) +#else +# define IPRT_LINUX_SAVE_EFL_AC() do { } while (0) +# define IPRT_LINUX_RESTORE_EFL_AC() do { } while (0) +# define IPRT_LINUX_RESTORE_EFL_ONLY_AC() do { } while (0) +#endif +/** @} */ + +/* + * There are some conflicting defines in iprt/param.h, sort them out here. + */ +#ifndef ___iprt_param_h +# undef PAGE_SIZE +# undef PAGE_OFFSET_MASK +# include +#endif + +/* + * Some global indicator macros. + */ +/** @def IPRT_LINUX_HAS_HRTIMER + * Whether the kernel support high resolution timers (Linux kernel versions + * 2.6.28 and later (hrtimer_add_expires_ns() & schedule_hrtimeout). */ +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 28) +# define IPRT_LINUX_HAS_HRTIMER +#endif + +/* + * Workqueue stuff, see initterm-r0drv-linux.c. + */ +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 5, 41) +typedef struct work_struct RTR0LNXWORKQUEUEITEM; +#else +typedef struct tq_struct RTR0LNXWORKQUEUEITEM; +#endif +DECLHIDDEN(void) rtR0LnxWorkqueuePush(RTR0LNXWORKQUEUEITEM *pWork, void (*pfnWorker)(RTR0LNXWORKQUEUEITEM *)); +DECLHIDDEN(void) rtR0LnxWorkqueueFlush(void); + + +#endif --- linux-raspi2-4.2.0.orig/ubuntu/vbox/r0drv/linux/thread-r0drv-linux.c +++ linux-raspi2-4.2.0/ubuntu/vbox/r0drv/linux/thread-r0drv-linux.c @@ -0,0 +1,232 @@ +/* $Id: thread-r0drv-linux.c $ */ +/** @file + * IPRT - Threads, Ring-0 Driver, Linux. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + + +/******************************************************************************* +* Header Files * +*******************************************************************************/ +#include "the-linux-kernel.h" +#include "internal/iprt.h" +#include + +#include +#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 5, 28) || defined(CONFIG_X86_SMAP) +# include +#endif +#include +#include +#include + + +/******************************************************************************* +* Global Variables * +*******************************************************************************/ +#ifndef CONFIG_PREEMPT +/** Per-cpu preemption counters. */ +static int32_t volatile g_acPreemptDisabled[NR_CPUS]; +#endif + + +RTDECL(RTNATIVETHREAD) RTThreadNativeSelf(void) +{ + return (RTNATIVETHREAD)current; +} +RT_EXPORT_SYMBOL(RTThreadNativeSelf); + + +static int rtR0ThreadLnxSleepCommon(RTMSINTERVAL cMillies) +{ + long cJiffies = msecs_to_jiffies(cMillies); + set_current_state(TASK_INTERRUPTIBLE); + cJiffies = schedule_timeout(cJiffies); + if (!cJiffies) + return VINF_SUCCESS; + return VERR_INTERRUPTED; +} + + +RTDECL(int) RTThreadSleep(RTMSINTERVAL cMillies) +{ + return rtR0ThreadLnxSleepCommon(cMillies); +} +RT_EXPORT_SYMBOL(RTThreadSleep); + + +RTDECL(int) RTThreadSleepNoLog(RTMSINTERVAL cMillies) +{ + return rtR0ThreadLnxSleepCommon(cMillies); +} +RT_EXPORT_SYMBOL(RTThreadSleepNoLog); + + +RTDECL(bool) RTThreadYield(void) +{ +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 4, 20) + yield(); +#else + /** @todo r=ramshankar: Can we use cond_resched() instead? */ + set_current_state(TASK_RUNNING); + sys_sched_yield(); + schedule(); +#endif + return true; +} +RT_EXPORT_SYMBOL(RTThreadYield); + + +RTDECL(bool) RTThreadPreemptIsEnabled(RTTHREAD hThread) +{ +#ifdef CONFIG_PREEMPT + Assert(hThread == NIL_RTTHREAD); +# ifdef preemptible + return preemptible(); +# else + return preempt_count() == 0 && !in_atomic() && !irqs_disabled(); +# endif +#else + int32_t c; + + Assert(hThread == NIL_RTTHREAD); + c = g_acPreemptDisabled[smp_processor_id()]; + AssertMsg(c >= 0 && c < 32, ("%d\n", c)); + if (c != 0) + return false; +# if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 5, 32) + if (in_atomic()) + return false; +# endif +# if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 5, 28) + if (irqs_disabled()) + return false; +# else + if (!ASMIntAreEnabled()) + return false; +# endif + return true; +#endif +} +RT_EXPORT_SYMBOL(RTThreadPreemptIsEnabled); + + +RTDECL(bool) RTThreadPreemptIsPending(RTTHREAD hThread) +{ + Assert(hThread == NIL_RTTHREAD); +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 5, 4) + return !!test_tsk_thread_flag(current, TIF_NEED_RESCHED); + +#elif LINUX_VERSION_CODE >= KERNEL_VERSION(2, 4, 20) + return !!need_resched(); + +#elif LINUX_VERSION_CODE >= KERNEL_VERSION(2, 1, 110) + return current->need_resched != 0; + +#else + return need_resched != 0; +#endif +} +RT_EXPORT_SYMBOL(RTThreadPreemptIsPending); + + +RTDECL(bool) RTThreadPreemptIsPendingTrusty(void) +{ + /* yes, RTThreadPreemptIsPending is reliable. */ + return true; +} +RT_EXPORT_SYMBOL(RTThreadPreemptIsPendingTrusty); + + +RTDECL(bool) RTThreadPreemptIsPossible(void) +{ + /** @todo r=ramshankar: What about CONFIG_PREEMPT_VOLUNTARY? That can preempt + * too but does so in voluntarily in explicit preemption points. */ +#ifdef CONFIG_PREEMPT + return true; /* yes, kernel preemption is possible. */ +#else + return false; /* no kernel preemption */ +#endif +} +RT_EXPORT_SYMBOL(RTThreadPreemptIsPossible); + + +RTDECL(void) RTThreadPreemptDisable(PRTTHREADPREEMPTSTATE pState) +{ +#ifdef CONFIG_PREEMPT + AssertPtr(pState); + Assert(pState->u32Reserved == 0); + pState->u32Reserved = 42; + /* This ASSUMES that CONFIG_PREEMPT_COUNT is always defined with CONFIG_PREEMPT. */ + preempt_disable(); + RT_ASSERT_PREEMPT_CPUID_DISABLE(pState); + +#else /* !CONFIG_PREEMPT */ + int32_t c; + AssertPtr(pState); + Assert(pState->u32Reserved == 0); + + /* Do our own accounting. */ + c = ASMAtomicIncS32(&g_acPreemptDisabled[smp_processor_id()]); + AssertMsg(c > 0 && c < 32, ("%d\n", c)); + pState->u32Reserved = c; + RT_ASSERT_PREEMPT_CPUID_DISABLE(pState); +#endif +} +RT_EXPORT_SYMBOL(RTThreadPreemptDisable); + + +RTDECL(void) RTThreadPreemptRestore(PRTTHREADPREEMPTSTATE pState) +{ +#ifdef CONFIG_PREEMPT + IPRT_LINUX_SAVE_EFL_AC(); /* paranoia */ + AssertPtr(pState); + Assert(pState->u32Reserved == 42); + RT_ASSERT_PREEMPT_CPUID_RESTORE(pState); + preempt_enable(); + IPRT_LINUX_RESTORE_EFL_ONLY_AC(); /* paranoia */ + +#else + int32_t volatile *pc; + AssertPtr(pState); + AssertMsg(pState->u32Reserved > 0 && pState->u32Reserved < 32, ("%d\n", pState->u32Reserved)); + RT_ASSERT_PREEMPT_CPUID_RESTORE(pState); + + /* Do our own accounting. */ + pc = &g_acPreemptDisabled[smp_processor_id()]; + AssertMsg(pState->u32Reserved == (uint32_t)*pc, ("u32Reserved=%d *pc=%d \n", pState->u32Reserved, *pc)); + ASMAtomicUoWriteS32(pc, pState->u32Reserved - 1); +#endif + pState->u32Reserved = 0; +} +RT_EXPORT_SYMBOL(RTThreadPreemptRestore); + + +RTDECL(bool) RTThreadIsInInterrupt(RTTHREAD hThread) +{ + Assert(hThread == NIL_RTTHREAD); NOREF(hThread); + + return in_interrupt() != 0; +} +RT_EXPORT_SYMBOL(RTThreadIsInInterrupt); + --- linux-raspi2-4.2.0.orig/ubuntu/vbox/r0drv/linux/thread2-r0drv-linux.c +++ linux-raspi2-4.2.0/ubuntu/vbox/r0drv/linux/thread2-r0drv-linux.c @@ -0,0 +1,154 @@ +/* $Id: thread2-r0drv-linux.c $ */ +/** @file + * IPRT - Threads (Part 2), Ring-0 Driver, Linux. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + + +/******************************************************************************* +* Header Files * +*******************************************************************************/ +#include "the-linux-kernel.h" +#include "internal/iprt.h" + +#include +#include +#include +#include "internal/thread.h" + + +RTDECL(RTTHREAD) RTThreadSelf(void) +{ + return rtThreadGetByNative((RTNATIVETHREAD)current); +} + + +DECLHIDDEN(int) rtThreadNativeInit(void) +{ + return VINF_SUCCESS; +} + + +DECLHIDDEN(int) rtThreadNativeSetPriority(PRTTHREADINT pThread, RTTHREADTYPE enmType) +{ +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 11) + /* See comment near MAX_RT_PRIO in linux/sched.h for details on + sched_priority. */ + int iSchedClass = SCHED_NORMAL; + struct sched_param Param = { .sched_priority = MAX_PRIO - 1 }; + switch (enmType) + { + case RTTHREADTYPE_INFREQUENT_POLLER: + Param.sched_priority = MAX_RT_PRIO + 5; + break; + + case RTTHREADTYPE_EMULATION: + Param.sched_priority = MAX_RT_PRIO + 4; + break; + + case RTTHREADTYPE_DEFAULT: + Param.sched_priority = MAX_RT_PRIO + 3; + break; + + case RTTHREADTYPE_MSG_PUMP: + Param.sched_priority = MAX_RT_PRIO + 2; + break; + + case RTTHREADTYPE_IO: + iSchedClass = SCHED_FIFO; + Param.sched_priority = MAX_RT_PRIO - 1; + break; + + case RTTHREADTYPE_TIMER: + iSchedClass = SCHED_FIFO; + Param.sched_priority = 1; /* not 0 just in case */ + break; + + default: + AssertMsgFailed(("enmType=%d\n", enmType)); + return VERR_INVALID_PARAMETER; + } + + sched_setscheduler(current, iSchedClass, &Param); +#endif + + return VINF_SUCCESS; +} + + +DECLHIDDEN(int) rtThreadNativeAdopt(PRTTHREADINT pThread) +{ + return VERR_NOT_IMPLEMENTED; +} + + +DECLHIDDEN(void) rtThreadNativeWaitKludge(PRTTHREADINT pThread) +{ + /** @todo fix RTThreadWait/RTR0Term race on linux. */ + RTThreadSleep(1); NOREF(pThread); +} + + +DECLHIDDEN(void) rtThreadNativeDestroy(PRTTHREADINT pThread) +{ + NOREF(pThread); +} + + +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 4) +/** + * Native kernel thread wrapper function. + * + * This will forward to rtThreadMain and do termination upon return. + * + * @param pvArg Pointer to the argument package. + */ +static int rtThreadNativeMain(void *pvArg) +{ + PRTTHREADINT pThread = (PRTTHREADINT)pvArg; + + rtThreadMain(pThread, (RTNATIVETHREAD)current, &pThread->szName[0]); + return 0; +} +#endif + + +DECLHIDDEN(int) rtThreadNativeCreate(PRTTHREADINT pThreadInt, PRTNATIVETHREAD pNativeThread) +{ +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 4) + struct task_struct *NativeThread; + + RT_ASSERT_PREEMPTIBLE(); + + NativeThread = kthread_run(rtThreadNativeMain, pThreadInt, "iprt-%s", pThreadInt->szName); + + if (IS_ERR(NativeThread)) + return VERR_GENERAL_FAILURE; + + *pNativeThread = (RTNATIVETHREAD)NativeThread; + return VINF_SUCCESS; +#else + return VERR_NOT_IMPLEMENTED; +#endif +} + --- linux-raspi2-4.2.0.orig/ubuntu/vbox/r0drv/linux/time-r0drv-linux.c +++ linux-raspi2-4.2.0/ubuntu/vbox/r0drv/linux/time-r0drv-linux.c @@ -0,0 +1,184 @@ +/* $Id: time-r0drv-linux.c $ */ +/** @file + * IPRT - Time, Ring-0 Driver, Linux. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + + +/******************************************************************************* +* Header Files * +*******************************************************************************/ +#define LOG_GROUP RTLOGGROUP_TIME +#include "the-linux-kernel.h" +#include "internal/iprt.h" +#include +#include + + + +DECLINLINE(uint64_t) rtTimeGetSystemNanoTS(void) +{ +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 16) /* This must match timer-r0drv-linux.c! */ + /* + * Use ktime_get_ts, this is also what clock_gettime(CLOCK_MONOTONIC,) is using. + */ + uint64_t u64; + struct timespec Ts; + ktime_get_ts(&Ts); + u64 = Ts.tv_sec * RT_NS_1SEC_64 + Ts.tv_nsec; + return u64; + +#elif LINUX_VERSION_CODE >= KERNEL_VERSION(2, 5, 60) + /* + * Seems there is no way of getting to the exact source of + * sys_clock_gettime(CLOCK_MONOTONIC, &ts) here, I think. But + * 64-bit jiffies adjusted for the initial value should be pretty + * much the same I hope. + */ + uint64_t u64 = get_jiffies_64(); +# ifdef INITIAL_JIFFIES + u64 += INITIAL_JIFFIES; +# endif + u64 *= TICK_NSEC; + return u64; + +#else /* < 2.5.60 */ +# if BITS_PER_LONG >= 64 + /* + * This is the same as above, except that there is no get_jiffies_64() + * here and we rely on long, and therefor jiffies, being 64-bit instead. + */ + uint64_t u64 = jiffies; +# ifdef INITIAL_JIFFIES + u64 += INITIAL_JIFFIES; +# endif + u64 *= TICK_NSEC; + return u64; + +# else /* 32 bit jiffies */ + /* + * We'll have to try track jiffy rollovers here or we'll be + * in trouble every time it flips. + * + * The high dword of the s_u64Last is the rollover count, the + * low dword is the previous jiffies. Updating is done by + * atomic compare & exchange of course. + */ + static uint64_t volatile s_u64Last = 0; + uint64_t u64; + + for (;;) + { + uint64_t u64NewLast; + int32_t iDelta; + uint32_t cRollovers; + uint32_t u32LastJiffies; + + /* sample the values */ + unsigned long ulNow = jiffies; + uint64_t u64Last = s_u64Last; + if (ulNow != jiffies) + continue; /* try again */ +# ifdef INITIAL_JIFFIES + ulNow += INITIAL_JIFFIES; +# endif + + u32LastJiffies = (uint32_t)u64Last; + cRollovers = u64Last >> 32; + + /* + * Check for rollover and update the static last value. + * + * We have to make sure we update it successfully to rule out + * an underrun because of racing someone. + */ + iDelta = ulNow - u32LastJiffies; + if (iDelta < 0) + { + cRollovers++; + u64NewLast = RT_MAKE_U64(ulNow, cRollovers); + if (!ASMAtomicCmpXchgU64(&s_u64Last, u64NewLast, u64Last)) + continue; /* race, try again */ + } + else + { + u64NewLast = RT_MAKE_U64(ulNow, cRollovers); + ASMAtomicCmpXchgU64(&s_u64Last, u64NewLast, u64Last); + } + + /* calculate the return value */ + u64 = ulNow; + u64 *= TICK_NSEC; + u64 += cRollovers * (_4G * TICK_NSEC); + break; + } + + return u64; +# endif /* 32 bit jiffies */ +#endif /* < 2.5.60 */ +} + + +RTDECL(uint64_t) RTTimeNanoTS(void) +{ + return rtTimeGetSystemNanoTS(); +} +RT_EXPORT_SYMBOL(RTTimeNanoTS); + + +RTDECL(uint64_t) RTTimeMilliTS(void) +{ + return rtTimeGetSystemNanoTS() / RT_NS_1MS; +} +RT_EXPORT_SYMBOL(RTTimeMilliTS); + + +RTDECL(uint64_t) RTTimeSystemNanoTS(void) +{ + return rtTimeGetSystemNanoTS(); +} +RT_EXPORT_SYMBOL(RTTimeSystemNanoTS); + + +RTDECL(uint64_t) RTTimeSystemMilliTS(void) +{ + return rtTimeGetSystemNanoTS() / RT_NS_1MS; +} +RT_EXPORT_SYMBOL(RTTimeSystemMilliTS); + + +RTDECL(PRTTIMESPEC) RTTimeNow(PRTTIMESPEC pTime) +{ +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 16) + struct timespec Ts; + ktime_get_real_ts(&Ts); + return RTTimeSpecSetTimespec(pTime, &Ts); + +#else /* < 2.6.16 */ + struct timeval Tv; + do_gettimeofday(&Tv); + return RTTimeSpecSetTimeval(pTime, &Tv); +#endif +} +RT_EXPORT_SYMBOL(RTTimeNow); + --- linux-raspi2-4.2.0.orig/ubuntu/vbox/r0drv/linux/timer-r0drv-linux.c +++ linux-raspi2-4.2.0/ubuntu/vbox/r0drv/linux/timer-r0drv-linux.c @@ -0,0 +1,1622 @@ +/* $Id: timer-r0drv-linux.c $ */ +/** @file + * IPRT - Timers, Ring-0 Driver, Linux. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + + +/******************************************************************************* +* Header Files * +*******************************************************************************/ +#include "the-linux-kernel.h" +#include "internal/iprt.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "internal/magics.h" + +/** @def RTTIMER_LINUX_WITH_HRTIMER + * Whether to use high resolution timers. */ +#if !defined(RTTIMER_LINUX_WITH_HRTIMER) \ + && defined(IPRT_LINUX_HAS_HRTIMER) +# define RTTIMER_LINUX_WITH_HRTIMER +#endif + +#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 31) +# define mod_timer_pinned mod_timer +# define HRTIMER_MODE_ABS_PINNED HRTIMER_MODE_ABS +#endif + + +/******************************************************************************* +* Structures and Typedefs * +*******************************************************************************/ +/** + * Timer state machine. + * + * This is used to try handle the issues with MP events and + * timers that runs on all CPUs. It's relatively nasty :-/ + */ +typedef enum RTTIMERLNXSTATE +{ + /** Stopped. */ + RTTIMERLNXSTATE_STOPPED = 0, + /** Transient state; next ACTIVE. */ + RTTIMERLNXSTATE_STARTING, + /** Transient state; next ACTIVE. (not really necessary) */ + RTTIMERLNXSTATE_MP_STARTING, + /** Active. */ + RTTIMERLNXSTATE_ACTIVE, + /** Active and in callback; next ACTIVE, STOPPED or CALLBACK_DESTROYING. */ + RTTIMERLNXSTATE_CALLBACK, + /** Stopped while in the callback; next STOPPED. */ + RTTIMERLNXSTATE_CB_STOPPING, + /** Restarted while in the callback; next ACTIVE, STOPPED, DESTROYING. */ + RTTIMERLNXSTATE_CB_RESTARTING, + /** The callback shall destroy the timer; next STOPPED. */ + RTTIMERLNXSTATE_CB_DESTROYING, + /** Transient state; next STOPPED. */ + RTTIMERLNXSTATE_STOPPING, + /** Transient state; next STOPPED. */ + RTTIMERLNXSTATE_MP_STOPPING, + /** The usual 32-bit hack. */ + RTTIMERLNXSTATE_32BIT_HACK = 0x7fffffff +} RTTIMERLNXSTATE; + + +/** + * A Linux sub-timer. + */ +typedef struct RTTIMERLNXSUBTIMER +{ + /** Timer specific data. */ + union + { +#if defined(RTTIMER_LINUX_WITH_HRTIMER) + /** High resolution timer. */ + struct + { + /** The linux timer structure. */ + struct hrtimer LnxTimer; + } Hr; +#endif + /** Standard timer. */ + struct + { + /** The linux timer structure. */ + struct timer_list LnxTimer; + /** The start of the current run (ns). + * This is used to calculate when the timer ought to fire the next time. */ + uint64_t u64NextTS; + /** The u64NextTS in jiffies. */ + unsigned long ulNextJiffies; + /** Set when starting or changing the timer so that u64StartTs + * and u64NextTS gets reinitialized (eliminating some jitter). */ + bool volatile fFirstAfterChg; + } Std; + } u; + /** The current tick number. */ + uint64_t iTick; + /** Restart the single shot timer at this specific time. + * Used when a single shot timer is restarted from the callback. */ + uint64_t volatile uNsRestartAt; + /** Pointer to the parent timer. */ + PRTTIMER pParent; + /** The current sub-timer state. */ + RTTIMERLNXSTATE volatile enmState; +} RTTIMERLNXSUBTIMER; +/** Pointer to a linux sub-timer. */ +typedef RTTIMERLNXSUBTIMER *PRTTIMERLNXSUBTIMER; + + +/** + * The internal representation of an Linux timer handle. + */ +typedef struct RTTIMER +{ + /** Magic. + * This is RTTIMER_MAGIC, but changes to something else before the timer + * is destroyed to indicate clearly that thread should exit. */ + uint32_t volatile u32Magic; + /** Spinlock synchronizing the fSuspended and MP event handling. + * This is NIL_RTSPINLOCK if cCpus == 1. */ + RTSPINLOCK hSpinlock; + /** Flag indicating that the timer is suspended. */ + bool volatile fSuspended; + /** Whether the timer must run on one specific CPU or not. */ + bool fSpecificCpu; +#ifdef CONFIG_SMP + /** Whether the timer must run on all CPUs or not. */ + bool fAllCpus; +#endif /* else: All -> specific on non-SMP kernels */ + /** Whether it is a high resolution timer or a standard one. */ + bool fHighRes; + /** The id of the CPU it must run on if fSpecificCpu is set. */ + RTCPUID idCpu; + /** The number of CPUs this timer should run on. */ + RTCPUID cCpus; + /** Callback. */ + PFNRTTIMER pfnTimer; + /** User argument. */ + void *pvUser; + /** The timer interval. 0 if one-shot. */ + uint64_t volatile u64NanoInterval; + /** This is set to the number of jiffies between ticks if the interval is + * an exact number of jiffies. (Standard timers only.) */ + unsigned long volatile cJiffies; + /** The change interval spinlock for standard timers only. */ + spinlock_t ChgIntLock; + /** Workqueue item for delayed destruction. */ + RTR0LNXWORKQUEUEITEM DtorWorkqueueItem; + /** Sub-timers. + * Normally there is just one, but for RTTIMER_FLAGS_CPU_ALL this will contain + * an entry for all possible cpus. In that case the index will be the same as + * for the RTCpuSet. */ + RTTIMERLNXSUBTIMER aSubTimers[1]; +} RTTIMER; + + +/** + * A rtTimerLinuxStartOnCpu and rtTimerLinuxStartOnCpu argument package. + */ +typedef struct RTTIMERLINUXSTARTONCPUARGS +{ + /** The current time (RTTimeSystemNanoTS). */ + uint64_t u64Now; + /** When to start firing (delta). */ + uint64_t u64First; +} RTTIMERLINUXSTARTONCPUARGS; +/** Pointer to a rtTimerLinuxStartOnCpu argument package. */ +typedef RTTIMERLINUXSTARTONCPUARGS *PRTTIMERLINUXSTARTONCPUARGS; + + +/******************************************************************************* +* Internal Functions * +*******************************************************************************/ +#ifdef CONFIG_SMP +static DECLCALLBACK(void) rtTimerLinuxMpEvent(RTMPEVENT enmEvent, RTCPUID idCpu, void *pvUser); +#endif + +#if 0 +#define DEBUG_HACKING +#include +#include +static void myLogBackdoorPrintf(const char *pszFormat, ...) +{ + char szTmp[256]; + va_list args; + size_t cb; + + cb = RTStrPrintf(szTmp, sizeof(szTmp) - 10, "%d: ", RTMpCpuId()); + va_start(args, pszFormat); + cb += RTStrPrintfV(&szTmp[cb], sizeof(szTmp) - cb, pszFormat, args); + va_end(args); + + ASMOutStrU8(0x504, (uint8_t *)&szTmp[0], cb); +} +# define RTAssertMsg1Weak(pszExpr, uLine, pszFile, pszFunction) \ + myLogBackdoorPrintf("\n!!Guest Assertion failed!!\n%s(%d) %s\n%s\n", uLine, pszFile, pszFunction, (pszExpr)) +# define RTAssertMsg2Weak myLogBackdoorPrintf +# define RTTIMERLNX_LOG(a) myLogBackdoorPrintf a +#else +# define RTTIMERLNX_LOG(a) do { } while (0) +#endif + +/** + * Sets the state. + */ +DECLINLINE(void) rtTimerLnxSetState(RTTIMERLNXSTATE volatile *penmState, RTTIMERLNXSTATE enmNewState) +{ +#ifdef DEBUG_HACKING + RTTIMERLNX_LOG(("set %d -> %d\n", *penmState, enmNewState)); +#endif + ASMAtomicWriteU32((uint32_t volatile *)penmState, enmNewState); +} + + +/** + * Sets the state if it has a certain value. + * + * @return true if xchg was done. + * @return false if xchg wasn't done. + */ +#ifdef DEBUG_HACKING +#define rtTimerLnxCmpXchgState(penmState, enmNewState, enmCurState) rtTimerLnxCmpXchgStateDebug(penmState, enmNewState, enmCurState, __LINE__) +static bool rtTimerLnxCmpXchgStateDebug(RTTIMERLNXSTATE volatile *penmState, RTTIMERLNXSTATE enmNewState, + RTTIMERLNXSTATE enmCurState, uint32_t uLine) +{ + RTTIMERLNXSTATE enmOldState = enmCurState; + bool fRc = ASMAtomicCmpXchgExU32((uint32_t volatile *)penmState, enmNewState, enmCurState, (uint32_t *)&enmOldState); + RTTIMERLNX_LOG(("cxg %d -> %d - %d at %u\n", enmOldState, enmNewState, fRc, uLine)); + return fRc; +} +#else +DECLINLINE(bool) rtTimerLnxCmpXchgState(RTTIMERLNXSTATE volatile *penmState, RTTIMERLNXSTATE enmNewState, + RTTIMERLNXSTATE enmCurState) +{ + return ASMAtomicCmpXchgU32((uint32_t volatile *)penmState, enmNewState, enmCurState); +} +#endif + + +/** + * Gets the state. + */ +DECLINLINE(RTTIMERLNXSTATE) rtTimerLnxGetState(RTTIMERLNXSTATE volatile *penmState) +{ + return (RTTIMERLNXSTATE)ASMAtomicUoReadU32((uint32_t volatile *)penmState); +} + +#ifdef RTTIMER_LINUX_WITH_HRTIMER + +/** + * Converts a nano second time stamp to ktime_t. + * + * ASSUMES RTTimeSystemNanoTS() is implemented using ktime_get_ts(). + * + * @returns ktime_t. + * @param cNanoSecs Nanoseconds. + */ +DECLINLINE(ktime_t) rtTimerLnxNanoToKt(uint64_t cNanoSecs) +{ + /* With some luck the compiler optimizes the division out of this... (Bet it doesn't.) */ + return ktime_set(cNanoSecs / 1000000000, cNanoSecs % 1000000000); +} + +/** + * Converts ktime_t to a nano second time stamp. + * + * ASSUMES RTTimeSystemNanoTS() is implemented using ktime_get_ts(). + * + * @returns nano second time stamp. + * @param Kt ktime_t. + */ +DECLINLINE(uint64_t) rtTimerLnxKtToNano(ktime_t Kt) +{ + return ktime_to_ns(Kt); +} + +#endif /* RTTIMER_LINUX_WITH_HRTIMER */ + +/** + * Converts a nano second interval to jiffies. + * + * @returns Jiffies. + * @param cNanoSecs Nanoseconds. + */ +DECLINLINE(unsigned long) rtTimerLnxNanoToJiffies(uint64_t cNanoSecs) +{ + /* this can be made even better... */ + if (cNanoSecs > (uint64_t)TICK_NSEC * MAX_JIFFY_OFFSET) + return MAX_JIFFY_OFFSET; +# if ARCH_BITS == 32 + if (RT_LIKELY(cNanoSecs <= UINT32_MAX)) + return ((uint32_t)cNanoSecs + (TICK_NSEC-1)) / TICK_NSEC; +# endif + return (cNanoSecs + (TICK_NSEC-1)) / TICK_NSEC; +} + + +/** + * Starts a sub-timer (RTTimerStart). + * + * @param pSubTimer The sub-timer to start. + * @param u64Now The current timestamp (RTTimeSystemNanoTS()). + * @param u64First The interval from u64Now to the first time the timer should fire. + * @param fPinned true = timer pinned to a specific CPU, + * false = timer can migrate between CPUs + * @param fHighRes Whether the user requested a high resolution timer or not. + * @param enmOldState The old timer state. + */ +static void rtTimerLnxStartSubTimer(PRTTIMERLNXSUBTIMER pSubTimer, uint64_t u64Now, uint64_t u64First, + bool fPinned, bool fHighRes) +{ + /* + * Calc when it should start firing. + */ + uint64_t u64NextTS = u64Now + u64First; + if (!fHighRes) + pSubTimer->u.Std.u64NextTS = u64NextTS; + RTTIMERLNX_LOG(("startsubtimer %p\n", pSubTimer->pParent)); + + pSubTimer->iTick = 0; + +#ifdef RTTIMER_LINUX_WITH_HRTIMER + if (fHighRes) + hrtimer_start(&pSubTimer->u.Hr.LnxTimer, rtTimerLnxNanoToKt(u64NextTS), + fPinned ? HRTIMER_MODE_ABS_PINNED : HRTIMER_MODE_ABS); + else +#endif + { + unsigned long cJiffies = !u64First ? 0 : rtTimerLnxNanoToJiffies(u64First); + pSubTimer->u.Std.ulNextJiffies = jiffies + cJiffies; + pSubTimer->u.Std.fFirstAfterChg = true; +#ifdef CONFIG_SMP + if (fPinned) + mod_timer_pinned(&pSubTimer->u.Std.LnxTimer, pSubTimer->u.Std.ulNextJiffies); + else +#endif + mod_timer(&pSubTimer->u.Std.LnxTimer, pSubTimer->u.Std.ulNextJiffies); + } + + /* Be a bit careful here since we could be racing the callback. */ + if (!rtTimerLnxCmpXchgState(&pSubTimer->enmState, RTTIMERLNXSTATE_ACTIVE, RTTIMERLNXSTATE_STARTING)) + rtTimerLnxCmpXchgState(&pSubTimer->enmState, RTTIMERLNXSTATE_ACTIVE, RTTIMERLNXSTATE_MP_STARTING); +} + + +/** + * Stops a sub-timer (RTTimerStart and rtTimerLinuxMpEvent()). + * + * The caller has already changed the state, so we will not be in a callback + * situation wrt to the calling thread. + * + * @param pSubTimer The sub-timer. + * @param fHighRes Whether the user requested a high resolution timer or not. + */ +static void rtTimerLnxStopSubTimer(PRTTIMERLNXSUBTIMER pSubTimer, bool fHighRes) +{ + RTTIMERLNX_LOG(("stopsubtimer %p %d\n", pSubTimer->pParent, fHighRes)); +#ifdef RTTIMER_LINUX_WITH_HRTIMER + if (fHighRes) + { + /* There is no equivalent to del_timer in the hrtimer API, + hrtimer_cancel() == del_timer_sync(). Just like the WARN_ON in + del_timer_sync() asserts, waiting for a timer callback to complete + is deadlock prone, so don't do it. */ + int rc = hrtimer_try_to_cancel(&pSubTimer->u.Hr.LnxTimer); + if (rc < 0) + { + hrtimer_start(&pSubTimer->u.Hr.LnxTimer, ktime_set(KTIME_SEC_MAX, 0), HRTIMER_MODE_ABS); + hrtimer_try_to_cancel(&pSubTimer->u.Hr.LnxTimer); + } + } + else +#endif + del_timer(&pSubTimer->u.Std.LnxTimer); + + rtTimerLnxSetState(&pSubTimer->enmState, RTTIMERLNXSTATE_STOPPED); +} + + +/** + * Used by RTTimerDestroy and rtTimerLnxCallbackDestroy to do the actual work. + * + * @param pTimer The timer in question. + */ +static void rtTimerLnxDestroyIt(PRTTIMER pTimer) +{ + RTSPINLOCK hSpinlock = pTimer->hSpinlock; + RTCPUID iCpu; + Assert(pTimer->fSuspended); + RTTIMERLNX_LOG(("destroyit %p\n", pTimer)); + + /* + * Remove the MP notifications first because it'll reduce the risk of + * us overtaking any MP event that might theoretically be racing us here. + */ +#ifdef CONFIG_SMP + if ( pTimer->cCpus > 1 + && hSpinlock != NIL_RTSPINLOCK) + { + int rc = RTMpNotificationDeregister(rtTimerLinuxMpEvent, pTimer); + AssertRC(rc); + } +#endif /* CONFIG_SMP */ + + /* + * Invalidate the handle. + */ + ASMAtomicWriteU32(&pTimer->u32Magic, ~RTTIMER_MAGIC); + + /* + * Make sure all timers have stopped executing since we're stopping them in + * an asynchronous manner up in rtTimerLnxStopSubTimer. + */ + iCpu = pTimer->cCpus; + while (iCpu-- > 0) + { +#ifdef RTTIMER_LINUX_WITH_HRTIMER + if (pTimer->fHighRes) + hrtimer_cancel(&pTimer->aSubTimers[iCpu].u.Hr.LnxTimer); + else +#endif + del_timer_sync(&pTimer->aSubTimers[iCpu].u.Std.LnxTimer); + } + + /* + * Finally, free the resources. + */ + RTMemFreeEx(pTimer, RT_OFFSETOF(RTTIMER, aSubTimers[pTimer->cCpus])); + if (hSpinlock != NIL_RTSPINLOCK) + RTSpinlockDestroy(hSpinlock); +} + + +/** + * Workqueue callback (no DECLCALLBACK!) for deferred destruction. + * + * @param pWork Pointer to the DtorWorkqueueItem member of our timer + * structure. + */ +static void rtTimerLnxDestroyDeferred(RTR0LNXWORKQUEUEITEM *pWork) +{ + PRTTIMER pTimer = RT_FROM_MEMBER(pWork, RTTIMER, DtorWorkqueueItem); + rtTimerLnxDestroyIt(pTimer); +} + + +/** + * Called when the timer was destroyed by the callback function. + * + * @param pTimer The timer. + * @param pSubTimer The sub-timer which we're handling, the state of this + * will be RTTIMERLNXSTATE_CALLBACK_DESTROYING. + */ +static void rtTimerLnxCallbackDestroy(PRTTIMER pTimer, PRTTIMERLNXSUBTIMER pSubTimer) +{ + /* + * If it's an omni timer, the last dude does the destroying. + */ + if (pTimer->cCpus > 1) + { + uint32_t iCpu = pTimer->cCpus; + RTSpinlockAcquire(pTimer->hSpinlock); + + Assert(pSubTimer->enmState == RTTIMERLNXSTATE_CB_DESTROYING); + rtTimerLnxSetState(&pSubTimer->enmState, RTTIMERLNXSTATE_STOPPED); + + while (iCpu-- > 0) + if (rtTimerLnxGetState(&pTimer->aSubTimers[iCpu].enmState) != RTTIMERLNXSTATE_STOPPED) + { + RTSpinlockRelease(pTimer->hSpinlock); + return; + } + + RTSpinlockRelease(pTimer->hSpinlock); + } + + /* + * Destroying a timer from the callback is unsafe since the callout code + * might be touching the timer structure upon return (hrtimer does!). So, + * we have to defer the actual destruction to the IRPT workqueue. + */ + rtR0LnxWorkqueuePush(&pTimer->DtorWorkqueueItem, rtTimerLnxDestroyDeferred); +} + + +#ifdef CONFIG_SMP +/** + * Deal with a sub-timer that has migrated. + * + * @param pTimer The timer. + * @param pSubTimer The sub-timer. + */ +static void rtTimerLnxCallbackHandleMigration(PRTTIMER pTimer, PRTTIMERLNXSUBTIMER pSubTimer) +{ + RTTIMERLNXSTATE enmState; + if (pTimer->cCpus > 1) + RTSpinlockAcquire(pTimer->hSpinlock); + + do + { + enmState = rtTimerLnxGetState(&pSubTimer->enmState); + switch (enmState) + { + case RTTIMERLNXSTATE_STOPPING: + case RTTIMERLNXSTATE_MP_STOPPING: + enmState = RTTIMERLNXSTATE_STOPPED; + case RTTIMERLNXSTATE_STOPPED: + break; + + default: + AssertMsgFailed(("%d\n", enmState)); + case RTTIMERLNXSTATE_STARTING: + case RTTIMERLNXSTATE_MP_STARTING: + case RTTIMERLNXSTATE_ACTIVE: + case RTTIMERLNXSTATE_CALLBACK: + case RTTIMERLNXSTATE_CB_STOPPING: + case RTTIMERLNXSTATE_CB_RESTARTING: + if (rtTimerLnxCmpXchgState(&pSubTimer->enmState, RTTIMERLNXSTATE_STOPPED, enmState)) + enmState = RTTIMERLNXSTATE_STOPPED; + break; + + case RTTIMERLNXSTATE_CB_DESTROYING: + { + if (pTimer->cCpus > 1) + RTSpinlockRelease(pTimer->hSpinlock); + + rtTimerLnxCallbackDestroy(pTimer, pSubTimer); + return; + } + } + } while (enmState != RTTIMERLNXSTATE_STOPPED); + + if (pTimer->cCpus > 1) + RTSpinlockRelease(pTimer->hSpinlock); +} +#endif /* CONFIG_SMP */ + + +/** + * The slow path of rtTimerLnxChangeToCallbackState. + * + * @returns true if changed successfully, false if not. + * @param pSubTimer The sub-timer. + */ +static bool rtTimerLnxChangeToCallbackStateSlow(PRTTIMERLNXSUBTIMER pSubTimer) +{ + for (;;) + { + RTTIMERLNXSTATE enmState = rtTimerLnxGetState(&pSubTimer->enmState); + switch (enmState) + { + case RTTIMERLNXSTATE_ACTIVE: + case RTTIMERLNXSTATE_STARTING: + case RTTIMERLNXSTATE_MP_STARTING: + if (rtTimerLnxCmpXchgState(&pSubTimer->enmState, RTTIMERLNXSTATE_CALLBACK, enmState)) + return true; + break; + + case RTTIMERLNXSTATE_CALLBACK: + case RTTIMERLNXSTATE_CB_STOPPING: + case RTTIMERLNXSTATE_CB_RESTARTING: + case RTTIMERLNXSTATE_CB_DESTROYING: + AssertMsgFailed(("%d\n", enmState)); + default: + return false; + } + ASMNopPause(); + } +} + + +/** + * Tries to change the sub-timer state to 'callback'. + * + * @returns true if changed successfully, false if not. + * @param pSubTimer The sub-timer. + */ +DECLINLINE(bool) rtTimerLnxChangeToCallbackState(PRTTIMERLNXSUBTIMER pSubTimer) +{ + if (RT_LIKELY(rtTimerLnxCmpXchgState(&pSubTimer->enmState, RTTIMERLNXSTATE_CALLBACK, RTTIMERLNXSTATE_ACTIVE))) + return true; + return rtTimerLnxChangeToCallbackStateSlow(pSubTimer); +} + + +#ifdef RTTIMER_LINUX_WITH_HRTIMER +/** + * Timer callback function for high resolution timers. + * + * @returns HRTIMER_NORESTART or HRTIMER_RESTART depending on whether it's a + * one-shot or interval timer. + * @param pHrTimer Pointer to the sub-timer structure. + */ +static enum hrtimer_restart rtTimerLinuxHrCallback(struct hrtimer *pHrTimer) +{ + PRTTIMERLNXSUBTIMER pSubTimer = RT_FROM_MEMBER(pHrTimer, RTTIMERLNXSUBTIMER, u.Hr.LnxTimer); + PRTTIMER pTimer = pSubTimer->pParent; + + + RTTIMERLNX_LOG(("hrcallback %p\n", pTimer)); + if (RT_UNLIKELY(!rtTimerLnxChangeToCallbackState(pSubTimer))) + return HRTIMER_NORESTART; + +#ifdef CONFIG_SMP + /* + * Check for unwanted migration. + */ + if (pTimer->fAllCpus || pTimer->fSpecificCpu) + { + RTCPUID idCpu = RTMpCpuId(); + if (RT_UNLIKELY( pTimer->fAllCpus + ? (RTCPUID)(pSubTimer - &pTimer->aSubTimers[0]) != idCpu + : pTimer->idCpu != idCpu)) + { + rtTimerLnxCallbackHandleMigration(pTimer, pSubTimer); + return HRTIMER_NORESTART; + } + } +#endif + + if (pTimer->u64NanoInterval) + { + /* + * Periodic timer, run it and update the native timer afterwards so + * we can handle RTTimerStop and RTTimerChangeInterval from the + * callback as well as a racing control thread. + */ + pTimer->pfnTimer(pTimer, pTimer->pvUser, ++pSubTimer->iTick); + hrtimer_add_expires_ns(&pSubTimer->u.Hr.LnxTimer, ASMAtomicReadU64(&pTimer->u64NanoInterval)); + if (RT_LIKELY(rtTimerLnxCmpXchgState(&pSubTimer->enmState, RTTIMERLNXSTATE_ACTIVE, RTTIMERLNXSTATE_CALLBACK))) + return HRTIMER_RESTART; + } + else + { + /* + * One shot timer (no omni), stop it before dispatching it. + * Allow RTTimerStart as well as RTTimerDestroy to be called from + * the callback. + */ + ASMAtomicWriteBool(&pTimer->fSuspended, true); + pTimer->pfnTimer(pTimer, pTimer->pvUser, ++pSubTimer->iTick); + if (RT_LIKELY(rtTimerLnxCmpXchgState(&pSubTimer->enmState, RTTIMERLNXSTATE_STOPPED, RTTIMERLNXSTATE_CALLBACK))) + return HRTIMER_NORESTART; + } + + /* + * Some state change occurred while we were in the callback routine. + */ + for (;;) + { + RTTIMERLNXSTATE enmState = rtTimerLnxGetState(&pSubTimer->enmState); + switch (enmState) + { + case RTTIMERLNXSTATE_CB_DESTROYING: + rtTimerLnxCallbackDestroy(pTimer, pSubTimer); + return HRTIMER_NORESTART; + + case RTTIMERLNXSTATE_CB_STOPPING: + if (rtTimerLnxCmpXchgState(&pSubTimer->enmState, RTTIMERLNXSTATE_STOPPED, RTTIMERLNXSTATE_CB_STOPPING)) + return HRTIMER_NORESTART; + break; + + case RTTIMERLNXSTATE_CB_RESTARTING: + if (rtTimerLnxCmpXchgState(&pSubTimer->enmState, RTTIMERLNXSTATE_ACTIVE, RTTIMERLNXSTATE_CB_RESTARTING)) + { + pSubTimer->iTick = 0; + hrtimer_set_expires(&pSubTimer->u.Hr.LnxTimer, rtTimerLnxNanoToKt(pSubTimer->uNsRestartAt)); + return HRTIMER_RESTART; + } + break; + + default: + AssertMsgFailed(("%d\n", enmState)); + return HRTIMER_NORESTART; + } + ASMNopPause(); + } +} +#endif /* RTTIMER_LINUX_WITH_HRTIMER */ + + +/** + * Timer callback function for standard timers. + * + * @param ulUser Address of the sub-timer structure. + */ +static void rtTimerLinuxStdCallback(unsigned long ulUser) +{ + PRTTIMERLNXSUBTIMER pSubTimer = (PRTTIMERLNXSUBTIMER)ulUser; + PRTTIMER pTimer = pSubTimer->pParent; + + RTTIMERLNX_LOG(("stdcallback %p\n", pTimer)); + if (RT_UNLIKELY(!rtTimerLnxChangeToCallbackState(pSubTimer))) + return; + +#ifdef CONFIG_SMP + /* + * Check for unwanted migration. + */ + if (pTimer->fAllCpus || pTimer->fSpecificCpu) + { + RTCPUID idCpu = RTMpCpuId(); + if (RT_UNLIKELY( pTimer->fAllCpus + ? (RTCPUID)(pSubTimer - &pTimer->aSubTimers[0]) != idCpu + : pTimer->idCpu != idCpu)) + { + rtTimerLnxCallbackHandleMigration(pTimer, pSubTimer); + return; + } + } +#endif + + if (pTimer->u64NanoInterval) + { + /* + * Interval timer, calculate the next timeout. + * + * The first time around, we'll re-adjust the u.Std.u64NextTS to + * try prevent some jittering if we were started at a bad time. + */ + const uint64_t iTick = ++pSubTimer->iTick; + uint64_t u64NanoInterval; + unsigned long cJiffies; + unsigned long flFlags; + + spin_lock_irqsave(&pTimer->ChgIntLock, flFlags); + u64NanoInterval = pTimer->u64NanoInterval; + cJiffies = pTimer->cJiffies; + if (RT_UNLIKELY(pSubTimer->u.Std.fFirstAfterChg)) + { + pSubTimer->u.Std.fFirstAfterChg = false; + pSubTimer->u.Std.u64NextTS = RTTimeSystemNanoTS(); + pSubTimer->u.Std.ulNextJiffies = jiffies; + } + spin_unlock_irqrestore(&pTimer->ChgIntLock, flFlags); + + pSubTimer->u.Std.u64NextTS += u64NanoInterval; + if (cJiffies) + { + pSubTimer->u.Std.ulNextJiffies += cJiffies; + /* Prevent overflows when the jiffies counter wraps around. + * Special thanks to Ken Preslan for helping debugging! */ + while (time_before(pSubTimer->u.Std.ulNextJiffies, jiffies)) + { + pSubTimer->u.Std.ulNextJiffies += cJiffies; + pSubTimer->u.Std.u64NextTS += u64NanoInterval; + } + } + else + { + const uint64_t u64NanoTS = RTTimeSystemNanoTS(); + while (pSubTimer->u.Std.u64NextTS < u64NanoTS) + pSubTimer->u.Std.u64NextTS += u64NanoInterval; + pSubTimer->u.Std.ulNextJiffies = jiffies + rtTimerLnxNanoToJiffies(pSubTimer->u.Std.u64NextTS - u64NanoTS); + } + + /* + * Run the timer and re-arm it unless the state changed . + * . + * We must re-arm it afterwards as we're not in a position to undo this . + * operation if for instance someone stopped or destroyed us while we . + * were in the callback. (Linux takes care of any races here.) + */ + pTimer->pfnTimer(pTimer, pTimer->pvUser, iTick); + if (RT_LIKELY(rtTimerLnxCmpXchgState(&pSubTimer->enmState, RTTIMERLNXSTATE_ACTIVE, RTTIMERLNXSTATE_CALLBACK))) + { +#ifdef CONFIG_SMP + if (pTimer->fSpecificCpu || pTimer->fAllCpus) + mod_timer_pinned(&pSubTimer->u.Std.LnxTimer, pSubTimer->u.Std.ulNextJiffies); + else +#endif + mod_timer(&pSubTimer->u.Std.LnxTimer, pSubTimer->u.Std.ulNextJiffies); + return; + } + } + else + { + /* + * One shot timer, stop it before dispatching it. + * Allow RTTimerStart as well as RTTimerDestroy to be called from + * the callback. + */ + ASMAtomicWriteBool(&pTimer->fSuspended, true); + pTimer->pfnTimer(pTimer, pTimer->pvUser, ++pSubTimer->iTick); + if (RT_LIKELY(rtTimerLnxCmpXchgState(&pSubTimer->enmState, RTTIMERLNXSTATE_STOPPED, RTTIMERLNXSTATE_CALLBACK))) + return; + } + + /* + * Some state change occurred while we were in the callback routine. + */ + for (;;) + { + RTTIMERLNXSTATE enmState = rtTimerLnxGetState(&pSubTimer->enmState); + switch (enmState) + { + case RTTIMERLNXSTATE_CB_DESTROYING: + rtTimerLnxCallbackDestroy(pTimer, pSubTimer); + return; + + case RTTIMERLNXSTATE_CB_STOPPING: + if (rtTimerLnxCmpXchgState(&pSubTimer->enmState, RTTIMERLNXSTATE_STOPPED, RTTIMERLNXSTATE_CB_STOPPING)) + return; + break; + + case RTTIMERLNXSTATE_CB_RESTARTING: + if (rtTimerLnxCmpXchgState(&pSubTimer->enmState, RTTIMERLNXSTATE_ACTIVE, RTTIMERLNXSTATE_CB_RESTARTING)) + { + uint64_t u64NanoTS; + uint64_t u64NextTS; + unsigned long flFlags; + + spin_lock_irqsave(&pTimer->ChgIntLock, flFlags); + u64NextTS = pSubTimer->uNsRestartAt; + u64NanoTS = RTTimeSystemNanoTS(); + pSubTimer->iTick = 0; + pSubTimer->u.Std.u64NextTS = u64NextTS; + pSubTimer->u.Std.fFirstAfterChg = true; + pSubTimer->u.Std.ulNextJiffies = u64NextTS > u64NanoTS + ? jiffies + rtTimerLnxNanoToJiffies(u64NextTS - u64NanoTS) + : jiffies; + spin_unlock_irqrestore(&pTimer->ChgIntLock, flFlags); + +#ifdef CONFIG_SMP + if (pTimer->fSpecificCpu || pTimer->fAllCpus) + mod_timer_pinned(&pSubTimer->u.Std.LnxTimer, pSubTimer->u.Std.ulNextJiffies); + else +#endif + mod_timer(&pSubTimer->u.Std.LnxTimer, pSubTimer->u.Std.ulNextJiffies); + return; + } + break; + + default: + AssertMsgFailed(("%d\n", enmState)); + return; + } + ASMNopPause(); + } +} + + +#ifdef CONFIG_SMP + +/** + * Per-cpu callback function (RTMpOnAll/RTMpOnSpecific). + * + * @param idCpu The current CPU. + * @param pvUser1 Pointer to the timer. + * @param pvUser2 Pointer to the argument structure. + */ +static DECLCALLBACK(void) rtTimerLnxStartAllOnCpu(RTCPUID idCpu, void *pvUser1, void *pvUser2) +{ + PRTTIMERLINUXSTARTONCPUARGS pArgs = (PRTTIMERLINUXSTARTONCPUARGS)pvUser2; + PRTTIMER pTimer = (PRTTIMER)pvUser1; + Assert(idCpu < pTimer->cCpus); + rtTimerLnxStartSubTimer(&pTimer->aSubTimers[idCpu], pArgs->u64Now, pArgs->u64First, true /*fPinned*/, pTimer->fHighRes); +} + + +/** + * Worker for RTTimerStart() that takes care of the ugly bits. + * + * @returns RTTimerStart() return value. + * @param pTimer The timer. + * @param pArgs The argument structure. + */ +static int rtTimerLnxOmniStart(PRTTIMER pTimer, PRTTIMERLINUXSTARTONCPUARGS pArgs) +{ + RTCPUID iCpu; + RTCPUSET OnlineSet; + RTCPUSET OnlineSet2; + int rc2; + + /* + * Prepare all the sub-timers for the startup and then flag the timer + * as a whole as non-suspended, make sure we get them all before + * clearing fSuspended as the MP handler will be waiting on this + * should something happen while we're looping. + */ + RTSpinlockAcquire(pTimer->hSpinlock); + + /* Just make it a omni timer restriction that no stop/start races are allowed. */ + for (iCpu = 0; iCpu < pTimer->cCpus; iCpu++) + if (rtTimerLnxGetState(&pTimer->aSubTimers[iCpu].enmState) != RTTIMERLNXSTATE_STOPPED) + { + RTSpinlockRelease(pTimer->hSpinlock); + return VERR_TIMER_BUSY; + } + + do + { + RTMpGetOnlineSet(&OnlineSet); + for (iCpu = 0; iCpu < pTimer->cCpus; iCpu++) + { + Assert(pTimer->aSubTimers[iCpu].enmState != RTTIMERLNXSTATE_MP_STOPPING); + rtTimerLnxSetState(&pTimer->aSubTimers[iCpu].enmState, + RTCpuSetIsMember(&OnlineSet, iCpu) + ? RTTIMERLNXSTATE_STARTING + : RTTIMERLNXSTATE_STOPPED); + } + } while (!RTCpuSetIsEqual(&OnlineSet, RTMpGetOnlineSet(&OnlineSet2))); + + ASMAtomicWriteBool(&pTimer->fSuspended, false); + + RTSpinlockRelease(pTimer->hSpinlock); + + /* + * Start them (can't find any exported function that allows me to + * do this without the cross calls). + */ + pArgs->u64Now = RTTimeSystemNanoTS(); + rc2 = RTMpOnAll(rtTimerLnxStartAllOnCpu, pTimer, pArgs); + AssertRC(rc2); /* screw this if it fails. */ + + /* + * Reset the sub-timers who didn't start up (ALL CPUs case). + */ + RTSpinlockAcquire(pTimer->hSpinlock); + + for (iCpu = 0; iCpu < pTimer->cCpus; iCpu++) + if (rtTimerLnxCmpXchgState(&pTimer->aSubTimers[iCpu].enmState, RTTIMERLNXSTATE_STOPPED, RTTIMERLNXSTATE_STARTING)) + { + /** @todo very odd case for a rainy day. Cpus that temporarily went offline while + * we were between calls needs to nudged as the MP handler will ignore events for + * them because of the STARTING state. This is an extremely unlikely case - not that + * that means anything in my experience... ;-) */ + RTTIMERLNX_LOG(("what!? iCpu=%u -> didn't start\n", iCpu)); + } + + RTSpinlockRelease(pTimer->hSpinlock); + + return VINF_SUCCESS; +} + + +/** + * Worker for RTTimerStop() that takes care of the ugly SMP bits. + * + * @returns true if there was any active callbacks, false if not. + * @param pTimer The timer (valid). + * @param fForDestroy Whether this is for RTTimerDestroy or not. + */ +static bool rtTimerLnxOmniStop(PRTTIMER pTimer, bool fForDestroy) +{ + bool fActiveCallbacks = false; + RTCPUID iCpu; + RTTIMERLNXSTATE enmState; + + + /* + * Mark the timer as suspended and flag all timers as stopping, except + * for those being stopped by an MP event. + */ + RTSpinlockAcquire(pTimer->hSpinlock); + + ASMAtomicWriteBool(&pTimer->fSuspended, true); + for (iCpu = 0; iCpu < pTimer->cCpus; iCpu++) + { + for (;;) + { + enmState = rtTimerLnxGetState(&pTimer->aSubTimers[iCpu].enmState); + if ( enmState == RTTIMERLNXSTATE_STOPPED + || enmState == RTTIMERLNXSTATE_MP_STOPPING) + break; + if ( enmState == RTTIMERLNXSTATE_CALLBACK + || enmState == RTTIMERLNXSTATE_CB_STOPPING + || enmState == RTTIMERLNXSTATE_CB_RESTARTING) + { + Assert(enmState != RTTIMERLNXSTATE_CB_STOPPING || fForDestroy); + if (rtTimerLnxCmpXchgState(&pTimer->aSubTimers[iCpu].enmState, + !fForDestroy ? RTTIMERLNXSTATE_CB_STOPPING : RTTIMERLNXSTATE_CB_DESTROYING, + enmState)) + { + fActiveCallbacks = true; + break; + } + } + else + { + Assert(enmState == RTTIMERLNXSTATE_ACTIVE); + if (rtTimerLnxCmpXchgState(&pTimer->aSubTimers[iCpu].enmState, RTTIMERLNXSTATE_STOPPING, enmState)) + break; + } + ASMNopPause(); + } + } + + RTSpinlockRelease(pTimer->hSpinlock); + + /* + * Do the actual stopping. Fortunately, this doesn't require any IPIs. + * Unfortunately it cannot be done synchronously. + */ + for (iCpu = 0; iCpu < pTimer->cCpus; iCpu++) + if (rtTimerLnxGetState(&pTimer->aSubTimers[iCpu].enmState) == RTTIMERLNXSTATE_STOPPING) + rtTimerLnxStopSubTimer(&pTimer->aSubTimers[iCpu], pTimer->fHighRes); + + return fActiveCallbacks; +} + + +/** + * Per-cpu callback function (RTMpOnSpecific) used by rtTimerLinuxMpEvent() + * to start a sub-timer on a cpu that just have come online. + * + * @param idCpu The current CPU. + * @param pvUser1 Pointer to the timer. + * @param pvUser2 Pointer to the argument structure. + */ +static DECLCALLBACK(void) rtTimerLinuxMpStartOnCpu(RTCPUID idCpu, void *pvUser1, void *pvUser2) +{ + PRTTIMERLINUXSTARTONCPUARGS pArgs = (PRTTIMERLINUXSTARTONCPUARGS)pvUser2; + PRTTIMER pTimer = (PRTTIMER)pvUser1; + RTSPINLOCK hSpinlock; + Assert(idCpu < pTimer->cCpus); + + /* + * We have to be kind of careful here as we might be racing RTTimerStop + * (and/or RTTimerDestroy, thus the paranoia. + */ + hSpinlock = pTimer->hSpinlock; + if ( hSpinlock != NIL_RTSPINLOCK + && pTimer->u32Magic == RTTIMER_MAGIC) + { + RTSpinlockAcquire(hSpinlock); + + if ( !ASMAtomicUoReadBool(&pTimer->fSuspended) + && pTimer->u32Magic == RTTIMER_MAGIC) + { + /* We're sane and the timer is not suspended yet. */ + PRTTIMERLNXSUBTIMER pSubTimer = &pTimer->aSubTimers[idCpu]; + if (rtTimerLnxCmpXchgState(&pSubTimer->enmState, RTTIMERLNXSTATE_MP_STARTING, RTTIMERLNXSTATE_STOPPED)) + rtTimerLnxStartSubTimer(pSubTimer, pArgs->u64Now, pArgs->u64First, true /*fPinned*/, pTimer->fHighRes); + } + + RTSpinlockRelease(hSpinlock); + } +} + + +/** + * MP event notification callback. + * + * @param enmEvent The event. + * @param idCpu The cpu it applies to. + * @param pvUser The timer. + */ +static DECLCALLBACK(void) rtTimerLinuxMpEvent(RTMPEVENT enmEvent, RTCPUID idCpu, void *pvUser) +{ + PRTTIMER pTimer = (PRTTIMER)pvUser; + PRTTIMERLNXSUBTIMER pSubTimer = &pTimer->aSubTimers[idCpu]; + RTSPINLOCK hSpinlock; + + Assert(idCpu < pTimer->cCpus); + + /* + * Some initial paranoia. + */ + if (pTimer->u32Magic != RTTIMER_MAGIC) + return; + hSpinlock = pTimer->hSpinlock; + if (hSpinlock == NIL_RTSPINLOCK) + return; + + RTSpinlockAcquire(hSpinlock); + + /* Is it active? */ + if ( !ASMAtomicUoReadBool(&pTimer->fSuspended) + && pTimer->u32Magic == RTTIMER_MAGIC) + { + switch (enmEvent) + { + /* + * Try do it without leaving the spin lock, but if we have to, retake it + * when we're on the right cpu. + */ + case RTMPEVENT_ONLINE: + if (rtTimerLnxCmpXchgState(&pSubTimer->enmState, RTTIMERLNXSTATE_MP_STARTING, RTTIMERLNXSTATE_STOPPED)) + { + RTTIMERLINUXSTARTONCPUARGS Args; + Args.u64Now = RTTimeSystemNanoTS(); + Args.u64First = 0; + + if (RTMpCpuId() == idCpu) + rtTimerLnxStartSubTimer(pSubTimer, Args.u64Now, Args.u64First, true /*fPinned*/, pTimer->fHighRes); + else + { + rtTimerLnxSetState(&pSubTimer->enmState, RTTIMERLNXSTATE_STOPPED); /* we'll recheck it. */ + RTSpinlockRelease(hSpinlock); + + RTMpOnSpecific(idCpu, rtTimerLinuxMpStartOnCpu, pTimer, &Args); + return; /* we've left the spinlock */ + } + } + break; + + /* + * The CPU is (going) offline, make sure the sub-timer is stopped. + * + * Linux will migrate it to a different CPU, but we don't want this. The + * timer function is checking for this. + */ + case RTMPEVENT_OFFLINE: + { + RTTIMERLNXSTATE enmState; + while ( (enmState = rtTimerLnxGetState(&pSubTimer->enmState)) == RTTIMERLNXSTATE_ACTIVE + || enmState == RTTIMERLNXSTATE_CALLBACK + || enmState == RTTIMERLNXSTATE_CB_RESTARTING) + { + if (enmState == RTTIMERLNXSTATE_ACTIVE) + { + if (rtTimerLnxCmpXchgState(&pSubTimer->enmState, RTTIMERLNXSTATE_MP_STOPPING, RTTIMERLNXSTATE_ACTIVE)) + { + RTSpinlockRelease(hSpinlock); + + rtTimerLnxStopSubTimer(pSubTimer, pTimer->fHighRes); + return; /* we've left the spinlock */ + } + } + else if (rtTimerLnxCmpXchgState(&pSubTimer->enmState, RTTIMERLNXSTATE_CB_STOPPING, enmState)) + break; + + /* State not stable, try again. */ + ASMNopPause(); + } + break; + } + } + } + + RTSpinlockRelease(hSpinlock); +} + +#endif /* CONFIG_SMP */ + + +/** + * Callback function use by RTTimerStart via RTMpOnSpecific to start a timer + * running on a specific CPU. + * + * @param idCpu The current CPU. + * @param pvUser1 Pointer to the timer. + * @param pvUser2 Pointer to the argument structure. + */ +static DECLCALLBACK(void) rtTimerLnxStartOnSpecificCpu(RTCPUID idCpu, void *pvUser1, void *pvUser2) +{ + PRTTIMERLINUXSTARTONCPUARGS pArgs = (PRTTIMERLINUXSTARTONCPUARGS)pvUser2; + PRTTIMER pTimer = (PRTTIMER)pvUser1; + rtTimerLnxStartSubTimer(&pTimer->aSubTimers[0], pArgs->u64Now, pArgs->u64First, true /*fPinned*/, pTimer->fHighRes); +} + + +RTDECL(int) RTTimerStart(PRTTIMER pTimer, uint64_t u64First) +{ + RTTIMERLINUXSTARTONCPUARGS Args; + int rc2; + + /* + * Validate. + */ + AssertPtrReturn(pTimer, VERR_INVALID_HANDLE); + AssertReturn(pTimer->u32Magic == RTTIMER_MAGIC, VERR_INVALID_HANDLE); + + if (!ASMAtomicUoReadBool(&pTimer->fSuspended)) + return VERR_TIMER_ACTIVE; + RTTIMERLNX_LOG(("start %p cCpus=%d\n", pTimer, pTimer->cCpus)); + + Args.u64First = u64First; +#ifdef CONFIG_SMP + /* + * Omni timer? + */ + if (pTimer->fAllCpus) + return rtTimerLnxOmniStart(pTimer, &Args); +#endif + + /* + * Simple timer - Pretty straight forward if it wasn't for restarting. + */ + Args.u64Now = RTTimeSystemNanoTS(); + ASMAtomicWriteU64(&pTimer->aSubTimers[0].uNsRestartAt, Args.u64Now + u64First); + for (;;) + { + RTTIMERLNXSTATE enmState = rtTimerLnxGetState(&pTimer->aSubTimers[0].enmState); + switch (enmState) + { + case RTTIMERLNXSTATE_STOPPED: + if (rtTimerLnxCmpXchgState(&pTimer->aSubTimers[0].enmState, RTTIMERLNXSTATE_STARTING, RTTIMERLNXSTATE_STOPPED)) + { + ASMAtomicWriteBool(&pTimer->fSuspended, false); + if (!pTimer->fSpecificCpu) + rtTimerLnxStartSubTimer(&pTimer->aSubTimers[0], Args.u64Now, Args.u64First, + false /*fPinned*/, pTimer->fHighRes); + else + { + rc2 = RTMpOnSpecific(pTimer->idCpu, rtTimerLnxStartOnSpecificCpu, pTimer, &Args); + if (RT_FAILURE(rc2)) + { + /* Suspend it, the cpu id is probably invalid or offline. */ + ASMAtomicWriteBool(&pTimer->fSuspended, true); + rtTimerLnxSetState(&pTimer->aSubTimers[0].enmState, RTTIMERLNXSTATE_STOPPED); + return rc2; + } + } + return VINF_SUCCESS; + } + break; + + case RTTIMERLNXSTATE_CALLBACK: + case RTTIMERLNXSTATE_CB_STOPPING: + if (rtTimerLnxCmpXchgState(&pTimer->aSubTimers[0].enmState, RTTIMERLNXSTATE_CB_RESTARTING, enmState)) + { + ASMAtomicWriteBool(&pTimer->fSuspended, false); + return VINF_SUCCESS; + } + break; + + default: + AssertMsgFailed(("%d\n", enmState)); + return VERR_INTERNAL_ERROR_4; + } + ASMNopPause(); + } +} +RT_EXPORT_SYMBOL(RTTimerStart); + + +/** + * Common worker for RTTimerStop and RTTimerDestroy. + * + * @returns true if there was any active callbacks, false if not. + * @param pTimer The timer to stop. + * @param fForDestroy Whether it's RTTimerDestroy calling or not. + */ +static bool rtTimerLnxStop(PRTTIMER pTimer, bool fForDestroy) +{ + RTTIMERLNX_LOG(("lnxstop %p %d\n", pTimer, fForDestroy)); +#ifdef CONFIG_SMP + /* + * Omni timer? + */ + if (pTimer->fAllCpus) + return rtTimerLnxOmniStop(pTimer, fForDestroy); +#endif + + /* + * Simple timer. + */ + ASMAtomicWriteBool(&pTimer->fSuspended, true); + for (;;) + { + RTTIMERLNXSTATE enmState = rtTimerLnxGetState(&pTimer->aSubTimers[0].enmState); + switch (enmState) + { + case RTTIMERLNXSTATE_ACTIVE: + if (rtTimerLnxCmpXchgState(&pTimer->aSubTimers[0].enmState, RTTIMERLNXSTATE_STOPPING, RTTIMERLNXSTATE_ACTIVE)) + { + rtTimerLnxStopSubTimer(&pTimer->aSubTimers[0], pTimer->fHighRes); + return false; + } + break; + + case RTTIMERLNXSTATE_CALLBACK: + case RTTIMERLNXSTATE_CB_RESTARTING: + case RTTIMERLNXSTATE_CB_STOPPING: + Assert(enmState != RTTIMERLNXSTATE_CB_STOPPING || fForDestroy); + if (rtTimerLnxCmpXchgState(&pTimer->aSubTimers[0].enmState, + !fForDestroy ? RTTIMERLNXSTATE_CB_STOPPING : RTTIMERLNXSTATE_CB_DESTROYING, + enmState)) + return true; + break; + + case RTTIMERLNXSTATE_STOPPED: + return VINF_SUCCESS; + + case RTTIMERLNXSTATE_CB_DESTROYING: + AssertMsgFailed(("enmState=%d pTimer=%p\n", enmState, pTimer)); + return true; + + default: + case RTTIMERLNXSTATE_STARTING: + case RTTIMERLNXSTATE_MP_STARTING: + case RTTIMERLNXSTATE_STOPPING: + case RTTIMERLNXSTATE_MP_STOPPING: + AssertMsgFailed(("enmState=%d pTimer=%p\n", enmState, pTimer)); + return false; + } + + /* State not stable, try again. */ + ASMNopPause(); + } +} + + +RTDECL(int) RTTimerStop(PRTTIMER pTimer) +{ + /* + * Validate. + */ + AssertPtrReturn(pTimer, VERR_INVALID_HANDLE); + AssertReturn(pTimer->u32Magic == RTTIMER_MAGIC, VERR_INVALID_HANDLE); + RTTIMERLNX_LOG(("stop %p\n", pTimer)); + + if (ASMAtomicUoReadBool(&pTimer->fSuspended)) + return VERR_TIMER_SUSPENDED; + + rtTimerLnxStop(pTimer, false /*fForDestroy*/); + return VINF_SUCCESS; +} +RT_EXPORT_SYMBOL(RTTimerStop); + + +RTDECL(int) RTTimerChangeInterval(PRTTIMER pTimer, uint64_t u64NanoInterval) +{ + unsigned long cJiffies; + unsigned long flFlags; + + /* + * Validate. + */ + AssertPtrReturn(pTimer, VERR_INVALID_HANDLE); + AssertReturn(pTimer->u32Magic == RTTIMER_MAGIC, VERR_INVALID_HANDLE); + AssertReturn(u64NanoInterval, VERR_INVALID_PARAMETER); + AssertReturn(u64NanoInterval < UINT64_MAX / 8, VERR_INVALID_PARAMETER); + AssertReturn(pTimer->u64NanoInterval, VERR_INVALID_STATE); + RTTIMERLNX_LOG(("change %p %llu\n", pTimer, u64NanoInterval)); + +#ifdef RTTIMER_LINUX_WITH_HRTIMER + /* + * For the high resolution timers it is easy since we don't care so much + * about when it is applied to the sub-timers. + */ + if (pTimer->fHighRes) + { + ASMAtomicWriteU64(&pTimer->u64NanoInterval, u64NanoInterval); + return VINF_SUCCESS; + } +#endif + + /* + * Standard timers have a bit more complicated way of calculating + * their interval and such. So, forget omni timers for now. + */ + if (pTimer->cCpus > 1) + return VERR_NOT_SUPPORTED; + + cJiffies = u64NanoInterval / RTTimerGetSystemGranularity(); + if (cJiffies * RTTimerGetSystemGranularity() != u64NanoInterval) + cJiffies = 0; + + spin_lock_irqsave(&pTimer->ChgIntLock, flFlags); + pTimer->aSubTimers[0].u.Std.fFirstAfterChg = true; + pTimer->cJiffies = cJiffies; + ASMAtomicWriteU64(&pTimer->u64NanoInterval, u64NanoInterval); + spin_unlock_irqrestore(&pTimer->ChgIntLock, flFlags); + return VINF_SUCCESS; +} +RT_EXPORT_SYMBOL(RTTimerChangeInterval); + + +RTDECL(int) RTTimerDestroy(PRTTIMER pTimer) +{ + bool fCanDestroy; + + /* + * Validate. It's ok to pass NULL pointer. + */ + if (pTimer == /*NIL_RTTIMER*/ NULL) + return VINF_SUCCESS; + AssertPtrReturn(pTimer, VERR_INVALID_HANDLE); + AssertReturn(pTimer->u32Magic == RTTIMER_MAGIC, VERR_INVALID_HANDLE); + RTTIMERLNX_LOG(("destroy %p\n", pTimer)); +/** @todo We should invalidate the magic here! */ + + /* + * Stop the timer if it's still active, then destroy it if we can. + */ + if (!ASMAtomicUoReadBool(&pTimer->fSuspended)) + fCanDestroy = rtTimerLnxStop(pTimer, true /*fForDestroy*/); + else + { + uint32_t iCpu = pTimer->cCpus; + if (pTimer->cCpus > 1) + RTSpinlockAcquire(pTimer->hSpinlock); + + fCanDestroy = true; + while (iCpu-- > 0) + { + for (;;) + { + RTTIMERLNXSTATE enmState = rtTimerLnxGetState(&pTimer->aSubTimers[iCpu].enmState); + switch (enmState) + { + case RTTIMERLNXSTATE_CALLBACK: + case RTTIMERLNXSTATE_CB_RESTARTING: + case RTTIMERLNXSTATE_CB_STOPPING: + if (!rtTimerLnxCmpXchgState(&pTimer->aSubTimers[iCpu].enmState, RTTIMERLNXSTATE_CB_DESTROYING, enmState)) + continue; + fCanDestroy = false; + break; + + case RTTIMERLNXSTATE_CB_DESTROYING: + AssertMsgFailed(("%d\n", enmState)); + fCanDestroy = false; + break; + default: + break; + } + break; + } + } + + if (pTimer->cCpus > 1) + RTSpinlockRelease(pTimer->hSpinlock); + } + + if (fCanDestroy) + { + /* For paranoid reasons, defer actually destroying the semaphore when + in atomic or interrupt context. */ +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 5, 32) + if (in_atomic() || in_interrupt()) +#else + if (in_interrupt()) +#endif + rtR0LnxWorkqueuePush(&pTimer->DtorWorkqueueItem, rtTimerLnxDestroyDeferred); + else + rtTimerLnxDestroyIt(pTimer); + } + + return VINF_SUCCESS; +} +RT_EXPORT_SYMBOL(RTTimerDestroy); + + +RTDECL(int) RTTimerCreateEx(PRTTIMER *ppTimer, uint64_t u64NanoInterval, uint32_t fFlags, PFNRTTIMER pfnTimer, void *pvUser) +{ + PRTTIMER pTimer; + RTCPUID iCpu; + unsigned cCpus; + int rc; + + rtR0LnxWorkqueueFlush(); /* for 2.4 */ + *ppTimer = NULL; + + /* + * Validate flags. + */ + if (!RTTIMER_FLAGS_ARE_VALID(fFlags)) + return VERR_INVALID_PARAMETER; + if ( (fFlags & RTTIMER_FLAGS_CPU_SPECIFIC) + && (fFlags & RTTIMER_FLAGS_CPU_ALL) != RTTIMER_FLAGS_CPU_ALL + && !RTMpIsCpuPossible(RTMpCpuIdFromSetIndex(fFlags & RTTIMER_FLAGS_CPU_MASK))) + return VERR_CPU_NOT_FOUND; + + /* + * Allocate the timer handler. + */ + cCpus = 1; +#ifdef CONFIG_SMP + if ((fFlags & RTTIMER_FLAGS_CPU_ALL) == RTTIMER_FLAGS_CPU_ALL) + { + cCpus = RTMpGetMaxCpuId() + 1; + Assert(cCpus <= RTCPUSET_MAX_CPUS); /* On linux we have a 1:1 relationship between cpuid and set index. */ + AssertReturn(u64NanoInterval, VERR_NOT_IMPLEMENTED); /* We don't implement single shot on all cpus, sorry. */ + } +#endif + + rc = RTMemAllocEx(RT_OFFSETOF(RTTIMER, aSubTimers[cCpus]), 0, + RTMEMALLOCEX_FLAGS_ZEROED | RTMEMALLOCEX_FLAGS_ANY_CTX_FREE, (void **)&pTimer); + if (RT_FAILURE(rc)) + return rc; + + /* + * Initialize it. + */ + pTimer->u32Magic = RTTIMER_MAGIC; + pTimer->hSpinlock = NIL_RTSPINLOCK; + pTimer->fSuspended = true; + pTimer->fHighRes = !!(fFlags & RTTIMER_FLAGS_HIGH_RES); +#ifdef CONFIG_SMP + pTimer->fSpecificCpu = (fFlags & RTTIMER_FLAGS_CPU_SPECIFIC) && (fFlags & RTTIMER_FLAGS_CPU_ALL) != RTTIMER_FLAGS_CPU_ALL; + pTimer->fAllCpus = (fFlags & RTTIMER_FLAGS_CPU_ALL) == RTTIMER_FLAGS_CPU_ALL; + pTimer->idCpu = pTimer->fSpecificCpu + ? RTMpCpuIdFromSetIndex(fFlags & RTTIMER_FLAGS_CPU_MASK) + : NIL_RTCPUID; +#else + pTimer->fSpecificCpu = !!(fFlags & RTTIMER_FLAGS_CPU_SPECIFIC); + pTimer->idCpu = RTMpCpuId(); +#endif + pTimer->cCpus = cCpus; + pTimer->pfnTimer = pfnTimer; + pTimer->pvUser = pvUser; + pTimer->u64NanoInterval = u64NanoInterval; + pTimer->cJiffies = u64NanoInterval / RTTimerGetSystemGranularity(); + if (pTimer->cJiffies * RTTimerGetSystemGranularity() != u64NanoInterval) + pTimer->cJiffies = 0; + spin_lock_init(&pTimer->ChgIntLock); + + for (iCpu = 0; iCpu < cCpus; iCpu++) + { +#ifdef RTTIMER_LINUX_WITH_HRTIMER + if (pTimer->fHighRes) + { + hrtimer_init(&pTimer->aSubTimers[iCpu].u.Hr.LnxTimer, CLOCK_MONOTONIC, HRTIMER_MODE_ABS); + pTimer->aSubTimers[iCpu].u.Hr.LnxTimer.function = rtTimerLinuxHrCallback; + } + else +#endif + { + init_timer(&pTimer->aSubTimers[iCpu].u.Std.LnxTimer); + pTimer->aSubTimers[iCpu].u.Std.LnxTimer.data = (unsigned long)&pTimer->aSubTimers[iCpu]; + pTimer->aSubTimers[iCpu].u.Std.LnxTimer.function = rtTimerLinuxStdCallback; + pTimer->aSubTimers[iCpu].u.Std.LnxTimer.expires = jiffies; + pTimer->aSubTimers[iCpu].u.Std.u64NextTS = 0; + } + pTimer->aSubTimers[iCpu].iTick = 0; + pTimer->aSubTimers[iCpu].pParent = pTimer; + pTimer->aSubTimers[iCpu].enmState = RTTIMERLNXSTATE_STOPPED; + } + +#ifdef CONFIG_SMP + /* + * If this is running on ALL cpus, we'll have to register a callback + * for MP events (so timers can be started/stopped on cpus going + * online/offline). We also create the spinlock for synchronizing + * stop/start/mp-event. + */ + if (cCpus > 1) + { + int rc = RTSpinlockCreate(&pTimer->hSpinlock, RTSPINLOCK_FLAGS_INTERRUPT_SAFE, "RTTimerLnx"); + if (RT_SUCCESS(rc)) + rc = RTMpNotificationRegister(rtTimerLinuxMpEvent, pTimer); + else + pTimer->hSpinlock = NIL_RTSPINLOCK; + if (RT_FAILURE(rc)) + { + RTTimerDestroy(pTimer); + return rc; + } + } +#endif /* CONFIG_SMP */ + + RTTIMERLNX_LOG(("create %p hires=%d fFlags=%#x cCpus=%u\n", pTimer, pTimer->fHighRes, fFlags, cCpus)); + *ppTimer = pTimer; + return VINF_SUCCESS; +} +RT_EXPORT_SYMBOL(RTTimerCreateEx); + + +RTDECL(uint32_t) RTTimerGetSystemGranularity(void) +{ +#if 0 /** @todo Not sure if this is what we want or not... Add new API for + * querying the resolution of the high res timers? */ + struct timespec Ts; + int rc = hrtimer_get_res(CLOCK_MONOTONIC, &Ts); + if (!rc) + { + Assert(!Ts.tv_sec); + return Ts.tv_nsec; + } +#endif + return RT_NS_1SEC / HZ; /* ns */ +} +RT_EXPORT_SYMBOL(RTTimerGetSystemGranularity); + + +RTDECL(int) RTTimerRequestSystemGranularity(uint32_t u32Request, uint32_t *pu32Granted) +{ + return VERR_NOT_SUPPORTED; +} +RT_EXPORT_SYMBOL(RTTimerRequestSystemGranularity); + + +RTDECL(int) RTTimerReleaseSystemGranularity(uint32_t u32Granted) +{ + return VERR_NOT_SUPPORTED; +} +RT_EXPORT_SYMBOL(RTTimerReleaseSystemGranularity); + + +RTDECL(bool) RTTimerCanDoHighResolution(void) +{ +#ifdef RTTIMER_LINUX_WITH_HRTIMER + return true; +#else + return false; +#endif +} +RT_EXPORT_SYMBOL(RTTimerCanDoHighResolution); + --- linux-raspi2-4.2.0.orig/ubuntu/vbox/r0drv/linux/waitqueue-r0drv-linux.h +++ linux-raspi2-4.2.0/ubuntu/vbox/r0drv/linux/waitqueue-r0drv-linux.h @@ -0,0 +1,286 @@ +/* $Id: waitqueue-r0drv-linux.h $ */ +/** @file + * IPRT - Linux Ring-0 Driver Helpers for Abstracting Wait Queues, + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + + +#ifndef ___r0drv_linux_waitqueue_r0drv_linux_h +#define ___r0drv_linux_waitqueue_r0drv_linux_h + +#include "the-linux-kernel.h" + +#include +#include +#include +#include + +/** The resolution (nanoseconds) specified when using + * schedule_hrtimeout_range. */ +#define RTR0SEMLNXWAIT_RESOLUTION 50000 + + +/** + * Kernel mode Linux wait state structure. + */ +typedef struct RTR0SEMLNXWAIT +{ + /** The wait queue entry. */ + wait_queue_t WaitQE; + /** The absolute timeout given as nano seconds since the start of the + * monotonic clock. */ + uint64_t uNsAbsTimeout; + /** The timeout in nano seconds relative to the start of the wait. */ + uint64_t cNsRelTimeout; + /** The native timeout value. */ + union + { +#ifdef IPRT_LINUX_HAS_HRTIMER + /** The timeout when fHighRes is true. Absolute, so no updating. */ + ktime_t KtTimeout; +#endif + /** The timeout when fHighRes is false. Updated after waiting. */ + long lTimeout; + } u; + /** Set if we use high resolution timeouts. */ + bool fHighRes; + /** Set if it's an indefinite wait. */ + bool fIndefinite; + /** Set if we've already timed out. + * Set by rtR0SemLnxWaitDoIt and read by rtR0SemLnxWaitHasTimedOut. */ + bool fTimedOut; + /** TASK_INTERRUPTIBLE or TASK_UNINTERRUPTIBLE. */ + int iWaitState; + /** The wait queue. */ + wait_queue_head_t *pWaitQueue; +} RTR0SEMLNXWAIT; +/** Pointer to a linux wait state. */ +typedef RTR0SEMLNXWAIT *PRTR0SEMLNXWAIT; + + +/** + * Initializes a wait. + * + * The caller MUST check the wait condition BEFORE calling this function or the + * timeout logic will be flawed. + * + * @returns VINF_SUCCESS or VERR_TIMEOUT. + * @param pWait The wait structure. + * @param fFlags The wait flags. + * @param uTimeout The timeout. + * @param pWaitQueue The wait queue head. + */ +DECLINLINE(int) rtR0SemLnxWaitInit(PRTR0SEMLNXWAIT pWait, uint32_t fFlags, uint64_t uTimeout, + wait_queue_head_t *pWaitQueue) +{ + /* + * Process the flags and timeout. + */ + if (!(fFlags & RTSEMWAIT_FLAGS_INDEFINITE)) + { +/** @todo optimize: millisecs -> nanosecs -> millisec -> jiffies */ + if (fFlags & RTSEMWAIT_FLAGS_MILLISECS) + uTimeout = uTimeout < UINT64_MAX / RT_US_1SEC * RT_US_1SEC + ? uTimeout * RT_US_1SEC + : UINT64_MAX; + if (uTimeout == UINT64_MAX) + fFlags |= RTSEMWAIT_FLAGS_INDEFINITE; + else + { + uint64_t u64Now; + if (fFlags & RTSEMWAIT_FLAGS_RELATIVE) + { + if (uTimeout == 0) + return VERR_TIMEOUT; + + u64Now = RTTimeSystemNanoTS(); + pWait->cNsRelTimeout = uTimeout; + pWait->uNsAbsTimeout = u64Now + uTimeout; + if (pWait->uNsAbsTimeout < u64Now) /* overflow */ + fFlags |= RTSEMWAIT_FLAGS_INDEFINITE; + } + else + { + u64Now = RTTimeSystemNanoTS(); + if (u64Now >= uTimeout) + return VERR_TIMEOUT; + + pWait->cNsRelTimeout = uTimeout - u64Now; + pWait->uNsAbsTimeout = uTimeout; + } + } + } + + if (!(fFlags & RTSEMWAIT_FLAGS_INDEFINITE)) + { + pWait->fIndefinite = false; +#ifdef IPRT_LINUX_HAS_HRTIMER + if ( (fFlags & (RTSEMWAIT_FLAGS_NANOSECS | RTSEMWAIT_FLAGS_ABSOLUTE)) + || pWait->cNsRelTimeout < RT_NS_1SEC / HZ * 4) + { + pWait->fHighRes = true; +# if BITS_PER_LONG < 64 + if ( KTIME_SEC_MAX <= LONG_MAX + && pWait->uNsAbsTimeout >= KTIME_SEC_MAX * RT_NS_1SEC_64 + (RT_NS_1SEC - 1)) + fFlags |= RTSEMWAIT_FLAGS_INDEFINITE; + else +# endif + pWait->u.KtTimeout = ns_to_ktime(pWait->uNsAbsTimeout); + } + else +#endif + { + uint64_t cJiffies = ASMMultU64ByU32DivByU32(pWait->cNsRelTimeout, HZ, RT_NS_1SEC); + if (cJiffies >= MAX_JIFFY_OFFSET) + fFlags |= RTSEMWAIT_FLAGS_INDEFINITE; + else + { + pWait->u.lTimeout = (long)cJiffies; + pWait->fHighRes = false; + } + } + } + + if (fFlags & RTSEMWAIT_FLAGS_INDEFINITE) + { + pWait->fIndefinite = true; + pWait->fHighRes = false; + pWait->uNsAbsTimeout = UINT64_MAX; + pWait->cNsRelTimeout = UINT64_MAX; + pWait->u.lTimeout = LONG_MAX; + } + + pWait->fTimedOut = false; + + /* + * Initialize the wait queue related bits. + */ +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 5, 39) + init_wait((&pWait->WaitQE)); +#else + RT_ZERO(pWait->WaitQE); + init_waitqueue_entry((&pWait->WaitQE), current); +#endif + pWait->pWaitQueue = pWaitQueue; + pWait->iWaitState = fFlags & RTSEMWAIT_FLAGS_INTERRUPTIBLE + ? TASK_INTERRUPTIBLE : TASK_UNINTERRUPTIBLE; + + return VINF_SUCCESS; +} + + +/** + * Prepares the next wait. + * + * This must be called before rtR0SemLnxWaitDoIt, and the caller should check + * the exit conditions in-between the two calls. + * + * @param pWait The wait structure. + */ +DECLINLINE(void) rtR0SemLnxWaitPrepare(PRTR0SEMLNXWAIT pWait) +{ + /* Make everything thru schedule*() atomic scheduling wise. (Is this correct?) */ + prepare_to_wait(pWait->pWaitQueue, &pWait->WaitQE, pWait->iWaitState); +} + + +/** + * Do the actual wait. + * + * @param pWait The wait structure. + */ +DECLINLINE(void) rtR0SemLnxWaitDoIt(PRTR0SEMLNXWAIT pWait) +{ + if (pWait->fIndefinite) + schedule(); +#ifdef IPRT_LINUX_HAS_HRTIMER + else if (pWait->fHighRes) + { + int rc = schedule_hrtimeout_range(&pWait->u.KtTimeout, HRTIMER_MODE_ABS, RTR0SEMLNXWAIT_RESOLUTION); + if (!rc) + pWait->fTimedOut = true; + } +#endif + else + { + pWait->u.lTimeout = schedule_timeout(pWait->u.lTimeout); + if (pWait->u.lTimeout <= 0) + pWait->fTimedOut = true; + } + after_wait((&pWait->WaitQE)); +} + + +/** + * Checks if a linux wait was interrupted. + * + * @returns true / false + * @param pWait The wait structure. + * @remarks This shall be called before the first rtR0SemLnxWaitDoIt(). + */ +DECLINLINE(bool) rtR0SemLnxWaitWasInterrupted(PRTR0SEMLNXWAIT pWait) +{ + return pWait->iWaitState == TASK_INTERRUPTIBLE + && signal_pending(current); +} + + +/** + * Checks if a linux wait has timed out. + * + * @returns true / false + * @param pWait The wait structure. + */ +DECLINLINE(bool) rtR0SemLnxWaitHasTimedOut(PRTR0SEMLNXWAIT pWait) +{ + return pWait->fTimedOut; +} + + +/** + * Deletes a linux wait. + * + * @param pWait The wait structure. + */ +DECLINLINE(void) rtR0SemLnxWaitDelete(PRTR0SEMLNXWAIT pWait) +{ + finish_wait(pWait->pWaitQueue, &pWait->WaitQE); +} + + +/** + * Gets the max resolution of the timeout machinery. + * + * @returns Resolution specified in nanoseconds. + */ +DECLINLINE(uint32_t) rtR0SemLnxWaitGetResolution(void) +{ +#ifdef IPRT_LINUX_HAS_HRTIMER + return RTR0SEMLNXWAIT_RESOLUTION; +#else + return RT_NS_1SEC / HZ; /* ns */ +#endif +} + +#endif + --- linux-raspi2-4.2.0.orig/ubuntu/vbox/r0drv/memobj-r0drv.c +++ linux-raspi2-4.2.0/ubuntu/vbox/r0drv/memobj-r0drv.c @@ -0,0 +1,783 @@ +/* $Id: memobj-r0drv.cpp $ */ +/** @file + * IPRT - Ring-0 Memory Objects, Common Code. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + + +/******************************************************************************* +* Header Files * +*******************************************************************************/ +#define LOG_GROUP RTLOGGROUP_DEFAULT ///@todo RTLOGGROUP_MEM +#include +#include "internal/iprt.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "internal/memobj.h" + + +/** + * Internal function for allocating a new memory object. + * + * @returns The allocated and initialized handle. + * @param cbSelf The size of the memory object handle. 0 mean default size. + * @param enmType The memory object type. + * @param pv The memory object mapping. + * @param cb The size of the memory object. + */ +DECLHIDDEN(PRTR0MEMOBJINTERNAL) rtR0MemObjNew(size_t cbSelf, RTR0MEMOBJTYPE enmType, void *pv, size_t cb) +{ + PRTR0MEMOBJINTERNAL pNew; + + /* validate the size */ + if (!cbSelf) + cbSelf = sizeof(*pNew); + Assert(cbSelf >= sizeof(*pNew)); + Assert(cbSelf == (uint32_t)cbSelf); + AssertMsg(RT_ALIGN_Z(cb, PAGE_SIZE) == cb, ("%#zx\n", cb)); + + /* + * Allocate and initialize the object. + */ + pNew = (PRTR0MEMOBJINTERNAL)RTMemAllocZ(cbSelf); + if (pNew) + { + pNew->u32Magic = RTR0MEMOBJ_MAGIC; + pNew->cbSelf = (uint32_t)cbSelf; + pNew->enmType = enmType; + pNew->fFlags = 0; + pNew->cb = cb; + pNew->pv = pv; + } + return pNew; +} + + +/** + * Deletes an incomplete memory object. + * + * This is for cleaning up after failures during object creation. + * + * @param pMem The incomplete memory object to delete. + */ +DECLHIDDEN(void) rtR0MemObjDelete(PRTR0MEMOBJINTERNAL pMem) +{ + if (pMem) + { + ASMAtomicUoWriteU32(&pMem->u32Magic, ~RTR0MEMOBJ_MAGIC); + pMem->enmType = RTR0MEMOBJTYPE_END; + RTMemFree(pMem); + } +} + + +/** + * Links a mapping object to a primary object. + * + * @returns IPRT status code. + * @retval VINF_SUCCESS on success. + * @retval VINF_NO_MEMORY if we couldn't expand the mapping array of the parent. + * @param pParent The parent (primary) memory object. + * @param pChild The child (mapping) memory object. + */ +static int rtR0MemObjLink(PRTR0MEMOBJINTERNAL pParent, PRTR0MEMOBJINTERNAL pChild) +{ + uint32_t i; + + /* sanity */ + Assert(rtR0MemObjIsMapping(pChild)); + Assert(!rtR0MemObjIsMapping(pParent)); + + /* expand the array? */ + i = pParent->uRel.Parent.cMappings; + if (i >= pParent->uRel.Parent.cMappingsAllocated) + { + void *pv = RTMemRealloc(pParent->uRel.Parent.papMappings, + (i + 32) * sizeof(pParent->uRel.Parent.papMappings[0])); + if (!pv) + return VERR_NO_MEMORY; + pParent->uRel.Parent.papMappings = (PPRTR0MEMOBJINTERNAL)pv; + pParent->uRel.Parent.cMappingsAllocated = i + 32; + Assert(i == pParent->uRel.Parent.cMappings); + } + + /* do the linking. */ + pParent->uRel.Parent.papMappings[i] = pChild; + pParent->uRel.Parent.cMappings++; + pChild->uRel.Child.pParent = pParent; + + return VINF_SUCCESS; +} + + +/** + * Checks if this is mapping or not. + * + * @returns true if it's a mapping, otherwise false. + * @param MemObj The ring-0 memory object handle. + */ +RTR0DECL(bool) RTR0MemObjIsMapping(RTR0MEMOBJ MemObj) +{ + /* Validate the object handle. */ + PRTR0MEMOBJINTERNAL pMem; + AssertPtrReturn(MemObj, false); + pMem = (PRTR0MEMOBJINTERNAL)MemObj; + AssertMsgReturn(pMem->u32Magic == RTR0MEMOBJ_MAGIC, ("%p: %#x\n", pMem, pMem->u32Magic), false); + AssertMsgReturn(pMem->enmType > RTR0MEMOBJTYPE_INVALID && pMem->enmType < RTR0MEMOBJTYPE_END, ("%p: %d\n", pMem, pMem->enmType), false); + + /* hand it on to the inlined worker. */ + return rtR0MemObjIsMapping(pMem); +} +RT_EXPORT_SYMBOL(RTR0MemObjIsMapping); + + +/** + * Gets the address of a ring-0 memory object. + * + * @returns The address of the memory object. + * @returns NULL if the handle is invalid (asserts in strict builds) or if there isn't any mapping. + * @param MemObj The ring-0 memory object handle. + */ +RTR0DECL(void *) RTR0MemObjAddress(RTR0MEMOBJ MemObj) +{ + /* Validate the object handle. */ + PRTR0MEMOBJINTERNAL pMem; + if (RT_UNLIKELY(MemObj == NIL_RTR0MEMOBJ)) + return NULL; + AssertPtrReturn(MemObj, NULL); + pMem = (PRTR0MEMOBJINTERNAL)MemObj; + AssertMsgReturn(pMem->u32Magic == RTR0MEMOBJ_MAGIC, ("%p: %#x\n", pMem, pMem->u32Magic), NULL); + AssertMsgReturn(pMem->enmType > RTR0MEMOBJTYPE_INVALID && pMem->enmType < RTR0MEMOBJTYPE_END, ("%p: %d\n", pMem, pMem->enmType), NULL); + + /* return the mapping address. */ + return pMem->pv; +} +RT_EXPORT_SYMBOL(RTR0MemObjAddress); + + +/** + * Gets the ring-3 address of a ring-0 memory object. + * + * This only applies to ring-0 memory object with ring-3 mappings of some kind, i.e. + * locked user memory, reserved user address space and user mappings. This API should + * not be used on any other objects. + * + * @returns The address of the memory object. + * @returns NIL_RTR3PTR if the handle is invalid or if it's not an object with a ring-3 mapping. + * Strict builds will assert in both cases. + * @param MemObj The ring-0 memory object handle. + */ +RTR0DECL(RTR3PTR) RTR0MemObjAddressR3(RTR0MEMOBJ MemObj) +{ + PRTR0MEMOBJINTERNAL pMem; + + /* Validate the object handle. */ + if (RT_UNLIKELY(MemObj == NIL_RTR0MEMOBJ)) + return NIL_RTR3PTR; + AssertPtrReturn(MemObj, NIL_RTR3PTR); + pMem = (PRTR0MEMOBJINTERNAL)MemObj; + AssertMsgReturn(pMem->u32Magic == RTR0MEMOBJ_MAGIC, ("%p: %#x\n", pMem, pMem->u32Magic), NIL_RTR3PTR); + AssertMsgReturn(pMem->enmType > RTR0MEMOBJTYPE_INVALID && pMem->enmType < RTR0MEMOBJTYPE_END, ("%p: %d\n", pMem, pMem->enmType), NIL_RTR3PTR); + if (RT_UNLIKELY( ( pMem->enmType != RTR0MEMOBJTYPE_MAPPING + || pMem->u.Mapping.R0Process == NIL_RTR0PROCESS) + && ( pMem->enmType != RTR0MEMOBJTYPE_LOCK + || pMem->u.Lock.R0Process == NIL_RTR0PROCESS) + && ( pMem->enmType != RTR0MEMOBJTYPE_PHYS_NC + || pMem->u.Lock.R0Process == NIL_RTR0PROCESS) + && ( pMem->enmType != RTR0MEMOBJTYPE_RES_VIRT + || pMem->u.ResVirt.R0Process == NIL_RTR0PROCESS))) + return NIL_RTR3PTR; + + /* return the mapping address. */ + return (RTR3PTR)pMem->pv; +} +RT_EXPORT_SYMBOL(RTR0MemObjAddressR3); + + +/** + * Gets the size of a ring-0 memory object. + * + * The returned value may differ from the one specified to the API creating the + * object because of alignment adjustments. The minimal alignment currently + * employed by any API is PAGE_SIZE, so the result can safely be shifted by + * PAGE_SHIFT to calculate a page count. + * + * @returns The object size. + * @returns 0 if the handle is invalid (asserts in strict builds) or if there isn't any mapping. + * @param MemObj The ring-0 memory object handle. + */ +RTR0DECL(size_t) RTR0MemObjSize(RTR0MEMOBJ MemObj) +{ + PRTR0MEMOBJINTERNAL pMem; + + /* Validate the object handle. */ + if (RT_UNLIKELY(MemObj == NIL_RTR0MEMOBJ)) + return 0; + AssertPtrReturn(MemObj, 0); + pMem = (PRTR0MEMOBJINTERNAL)MemObj; + AssertMsgReturn(pMem->u32Magic == RTR0MEMOBJ_MAGIC, ("%p: %#x\n", pMem, pMem->u32Magic), 0); + AssertMsgReturn(pMem->enmType > RTR0MEMOBJTYPE_INVALID && pMem->enmType < RTR0MEMOBJTYPE_END, ("%p: %d\n", pMem, pMem->enmType), 0); + AssertMsg(RT_ALIGN_Z(pMem->cb, PAGE_SIZE) == pMem->cb, ("%#zx\n", pMem->cb)); + + /* return the size. */ + return pMem->cb; +} +RT_EXPORT_SYMBOL(RTR0MemObjSize); + + +/** + * Get the physical address of an page in the memory object. + * + * @returns The physical address. + * @returns NIL_RTHCPHYS if the object doesn't contain fixed physical pages. + * @returns NIL_RTHCPHYS if the iPage is out of range. + * @returns NIL_RTHCPHYS if the object handle isn't valid. + * @param MemObj The ring-0 memory object handle. + * @param iPage The page number within the object. + */ +/* Work around gcc bug 55940 */ +#if defined(__GNUC__) && defined(RT_ARCH_X86) +# if (__GNUC__ * 100 + __GNUC_MINOR__) == 407 + __attribute__((__optimize__ ("no-shrink-wrap"))) +# endif +#endif +RTR0DECL(RTHCPHYS) RTR0MemObjGetPagePhysAddr(RTR0MEMOBJ MemObj, size_t iPage) +{ + /* Validate the object handle. */ + PRTR0MEMOBJINTERNAL pMem; + size_t cPages; + AssertPtrReturn(MemObj, NIL_RTHCPHYS); + pMem = (PRTR0MEMOBJINTERNAL)MemObj; + AssertReturn(pMem->u32Magic == RTR0MEMOBJ_MAGIC, NIL_RTHCPHYS); + AssertReturn(pMem->enmType > RTR0MEMOBJTYPE_INVALID && pMem->enmType < RTR0MEMOBJTYPE_END, NIL_RTHCPHYS); + AssertMsgReturn(pMem->u32Magic == RTR0MEMOBJ_MAGIC, ("%p: %#x\n", pMem, pMem->u32Magic), NIL_RTHCPHYS); + AssertMsgReturn(pMem->enmType > RTR0MEMOBJTYPE_INVALID && pMem->enmType < RTR0MEMOBJTYPE_END, ("%p: %d\n", pMem, pMem->enmType), NIL_RTHCPHYS); + cPages = (pMem->cb >> PAGE_SHIFT); + if (iPage >= cPages) + { + /* permit: while (RTR0MemObjGetPagePhysAddr(pMem, iPage++) != NIL_RTHCPHYS) {} */ + if (iPage == cPages) + return NIL_RTHCPHYS; + AssertReturn(iPage < (pMem->cb >> PAGE_SHIFT), NIL_RTHCPHYS); + } + + /* + * We know the address of physically contiguous allocations and mappings. + */ + if (pMem->enmType == RTR0MEMOBJTYPE_CONT) + return pMem->u.Cont.Phys + iPage * PAGE_SIZE; + if (pMem->enmType == RTR0MEMOBJTYPE_PHYS) + return pMem->u.Phys.PhysBase + iPage * PAGE_SIZE; + + /* + * Do the job. + */ + return rtR0MemObjNativeGetPagePhysAddr(pMem, iPage); +} +RT_EXPORT_SYMBOL(RTR0MemObjGetPagePhysAddr); + + +/** + * Frees a ring-0 memory object. + * + * @returns IPRT status code. + * @retval VERR_INVALID_HANDLE if + * @param MemObj The ring-0 memory object to be freed. NULL is accepted. + * @param fFreeMappings Whether or not to free mappings of the object. + */ +RTR0DECL(int) RTR0MemObjFree(RTR0MEMOBJ MemObj, bool fFreeMappings) +{ + /* + * Validate the object handle. + */ + PRTR0MEMOBJINTERNAL pMem; + int rc; + + if (MemObj == NIL_RTR0MEMOBJ) + return VINF_SUCCESS; + AssertPtrReturn(MemObj, VERR_INVALID_HANDLE); + pMem = (PRTR0MEMOBJINTERNAL)MemObj; + AssertReturn(pMem->u32Magic == RTR0MEMOBJ_MAGIC, VERR_INVALID_HANDLE); + AssertReturn(pMem->enmType > RTR0MEMOBJTYPE_INVALID && pMem->enmType < RTR0MEMOBJTYPE_END, VERR_INVALID_HANDLE); + RT_ASSERT_PREEMPTIBLE(); + + /* + * Deal with mappings according to fFreeMappings. + */ + if ( !rtR0MemObjIsMapping(pMem) + && pMem->uRel.Parent.cMappings > 0) + { + /* fail if not requested to free mappings. */ + if (!fFreeMappings) + return VERR_MEMORY_BUSY; + + while (pMem->uRel.Parent.cMappings > 0) + { + PRTR0MEMOBJINTERNAL pChild = pMem->uRel.Parent.papMappings[--pMem->uRel.Parent.cMappings]; + pMem->uRel.Parent.papMappings[pMem->uRel.Parent.cMappings] = NULL; + + /* sanity checks. */ + AssertPtr(pChild); + AssertFatal(pChild->u32Magic == RTR0MEMOBJ_MAGIC); + AssertFatal(pChild->enmType > RTR0MEMOBJTYPE_INVALID && pChild->enmType < RTR0MEMOBJTYPE_END); + AssertFatal(rtR0MemObjIsMapping(pChild)); + + /* free the mapping. */ + rc = rtR0MemObjNativeFree(pChild); + if (RT_FAILURE(rc)) + { + Log(("RTR0MemObjFree: failed to free mapping %p: %p %#zx; rc=%Rrc\n", pChild, pChild->pv, pChild->cb, rc)); + pMem->uRel.Parent.papMappings[pMem->uRel.Parent.cMappings++] = pChild; + return rc; + } + } + } + + /* + * Free this object. + */ + rc = rtR0MemObjNativeFree(pMem); + if (RT_SUCCESS(rc)) + { + /* + * Ok, it was freed just fine. Now, if it's a mapping we'll have to remove it from the parent. + */ + if (rtR0MemObjIsMapping(pMem)) + { + PRTR0MEMOBJINTERNAL pParent = pMem->uRel.Child.pParent; + uint32_t i; + + /* sanity checks */ + AssertPtr(pParent); + AssertFatal(pParent->u32Magic == RTR0MEMOBJ_MAGIC); + AssertFatal(pParent->enmType > RTR0MEMOBJTYPE_INVALID && pParent->enmType < RTR0MEMOBJTYPE_END); + AssertFatal(!rtR0MemObjIsMapping(pParent)); + AssertFatal(pParent->uRel.Parent.cMappings > 0); + AssertPtr(pParent->uRel.Parent.papMappings); + + /* locate and remove from the array of mappings. */ + i = pParent->uRel.Parent.cMappings; + while (i-- > 0) + { + if (pParent->uRel.Parent.papMappings[i] == pMem) + { + pParent->uRel.Parent.papMappings[i] = pParent->uRel.Parent.papMappings[--pParent->uRel.Parent.cMappings]; + break; + } + } + Assert(i != UINT32_MAX); + } + else + Assert(pMem->uRel.Parent.cMappings == 0); + + /* + * Finally, destroy the handle. + */ + pMem->u32Magic++; + pMem->enmType = RTR0MEMOBJTYPE_END; + if (!rtR0MemObjIsMapping(pMem)) + RTMemFree(pMem->uRel.Parent.papMappings); + RTMemFree(pMem); + } + else + Log(("RTR0MemObjFree: failed to free %p: %d %p %#zx; rc=%Rrc\n", + pMem, pMem->enmType, pMem->pv, pMem->cb, rc)); + return rc; +} +RT_EXPORT_SYMBOL(RTR0MemObjFree); + + + +RTR0DECL(int) RTR0MemObjAllocPageTag(PRTR0MEMOBJ pMemObj, size_t cb, bool fExecutable, const char *pszTag) +{ + /* sanity checks. */ + const size_t cbAligned = RT_ALIGN_Z(cb, PAGE_SIZE); + AssertPtrReturn(pMemObj, VERR_INVALID_POINTER); + *pMemObj = NIL_RTR0MEMOBJ; + AssertReturn(cb > 0, VERR_INVALID_PARAMETER); + AssertReturn(cb <= cbAligned, VERR_INVALID_PARAMETER); + RT_ASSERT_PREEMPTIBLE(); + + /* do the allocation. */ + return rtR0MemObjNativeAllocPage(pMemObj, cbAligned, fExecutable); +} +RT_EXPORT_SYMBOL(RTR0MemObjAllocPageTag); + + +RTR0DECL(int) RTR0MemObjAllocLowTag(PRTR0MEMOBJ pMemObj, size_t cb, bool fExecutable, const char *pszTag) +{ + /* sanity checks. */ + const size_t cbAligned = RT_ALIGN_Z(cb, PAGE_SIZE); + AssertPtrReturn(pMemObj, VERR_INVALID_POINTER); + *pMemObj = NIL_RTR0MEMOBJ; + AssertReturn(cb > 0, VERR_INVALID_PARAMETER); + AssertReturn(cb <= cbAligned, VERR_INVALID_PARAMETER); + RT_ASSERT_PREEMPTIBLE(); + + /* do the allocation. */ + return rtR0MemObjNativeAllocLow(pMemObj, cbAligned, fExecutable); +} +RT_EXPORT_SYMBOL(RTR0MemObjAllocLowTag); + + +RTR0DECL(int) RTR0MemObjAllocContTag(PRTR0MEMOBJ pMemObj, size_t cb, bool fExecutable, const char *pszTag) +{ + /* sanity checks. */ + const size_t cbAligned = RT_ALIGN_Z(cb, PAGE_SIZE); + AssertPtrReturn(pMemObj, VERR_INVALID_POINTER); + *pMemObj = NIL_RTR0MEMOBJ; + AssertReturn(cb > 0, VERR_INVALID_PARAMETER); + AssertReturn(cb <= cbAligned, VERR_INVALID_PARAMETER); + RT_ASSERT_PREEMPTIBLE(); + + /* do the allocation. */ + return rtR0MemObjNativeAllocCont(pMemObj, cbAligned, fExecutable); +} +RT_EXPORT_SYMBOL(RTR0MemObjAllocContTag); + + +RTR0DECL(int) RTR0MemObjLockUserTag(PRTR0MEMOBJ pMemObj, RTR3PTR R3Ptr, size_t cb, + uint32_t fAccess, RTR0PROCESS R0Process, const char *pszTag) +{ + /* sanity checks. */ + const size_t cbAligned = RT_ALIGN_Z(cb + (R3Ptr & PAGE_OFFSET_MASK), PAGE_SIZE); + RTR3PTR const R3PtrAligned = (R3Ptr & ~(RTR3PTR)PAGE_OFFSET_MASK); + AssertPtrReturn(pMemObj, VERR_INVALID_POINTER); + *pMemObj = NIL_RTR0MEMOBJ; + AssertReturn(cb > 0, VERR_INVALID_PARAMETER); + AssertReturn(cb <= cbAligned, VERR_INVALID_PARAMETER); + if (R0Process == NIL_RTR0PROCESS) + R0Process = RTR0ProcHandleSelf(); + AssertReturn(!(fAccess & ~(RTMEM_PROT_READ | RTMEM_PROT_WRITE)), VERR_INVALID_PARAMETER); + AssertReturn(fAccess, VERR_INVALID_PARAMETER); + RT_ASSERT_PREEMPTIBLE(); + + /* do the locking. */ + return rtR0MemObjNativeLockUser(pMemObj, R3PtrAligned, cbAligned, fAccess, R0Process); +} +RT_EXPORT_SYMBOL(RTR0MemObjLockUserTag); + + +RTR0DECL(int) RTR0MemObjLockKernelTag(PRTR0MEMOBJ pMemObj, void *pv, size_t cb, uint32_t fAccess, const char *pszTag) +{ + /* sanity checks. */ + const size_t cbAligned = RT_ALIGN_Z(cb + ((uintptr_t)pv & PAGE_OFFSET_MASK), PAGE_SIZE); + void * const pvAligned = (void *)((uintptr_t)pv & ~(uintptr_t)PAGE_OFFSET_MASK); + AssertPtrReturn(pMemObj, VERR_INVALID_POINTER); + *pMemObj = NIL_RTR0MEMOBJ; + AssertReturn(cb > 0, VERR_INVALID_PARAMETER); + AssertReturn(cb <= cbAligned, VERR_INVALID_PARAMETER); + AssertPtrReturn(pvAligned, VERR_INVALID_POINTER); + AssertReturn(!(fAccess & ~(RTMEM_PROT_READ | RTMEM_PROT_WRITE)), VERR_INVALID_PARAMETER); + AssertReturn(fAccess, VERR_INVALID_PARAMETER); + RT_ASSERT_PREEMPTIBLE(); + + /* do the allocation. */ + return rtR0MemObjNativeLockKernel(pMemObj, pvAligned, cbAligned, fAccess); +} +RT_EXPORT_SYMBOL(RTR0MemObjLockKernelTag); + + +RTR0DECL(int) RTR0MemObjAllocPhysTag(PRTR0MEMOBJ pMemObj, size_t cb, RTHCPHYS PhysHighest, const char *pszTag) +{ + /* sanity checks. */ + const size_t cbAligned = RT_ALIGN_Z(cb, PAGE_SIZE); + AssertPtrReturn(pMemObj, VERR_INVALID_POINTER); + *pMemObj = NIL_RTR0MEMOBJ; + AssertReturn(cb > 0, VERR_INVALID_PARAMETER); + AssertReturn(cb <= cbAligned, VERR_INVALID_PARAMETER); + AssertReturn(PhysHighest >= cb, VERR_INVALID_PARAMETER); + RT_ASSERT_PREEMPTIBLE(); + + /* do the allocation. */ + return rtR0MemObjNativeAllocPhys(pMemObj, cbAligned, PhysHighest, PAGE_SIZE /* page aligned */); +} +RT_EXPORT_SYMBOL(RTR0MemObjAllocPhysTag); + + +RTR0DECL(int) RTR0MemObjAllocPhysExTag(PRTR0MEMOBJ pMemObj, size_t cb, RTHCPHYS PhysHighest, size_t uAlignment, const char *pszTag) +{ + /* sanity checks. */ + const size_t cbAligned = RT_ALIGN_Z(cb, PAGE_SIZE); + AssertPtrReturn(pMemObj, VERR_INVALID_POINTER); + *pMemObj = NIL_RTR0MEMOBJ; + AssertReturn(cb > 0, VERR_INVALID_PARAMETER); + AssertReturn(cb <= cbAligned, VERR_INVALID_PARAMETER); + AssertReturn(PhysHighest >= cb, VERR_INVALID_PARAMETER); + if (uAlignment == 0) + uAlignment = PAGE_SIZE; + AssertReturn( uAlignment == PAGE_SIZE + || uAlignment == _2M + || uAlignment == _4M + || uAlignment == _1G, + VERR_INVALID_PARAMETER); +#if HC_ARCH_BITS == 32 + /* Memory allocated in this way is typically mapped into kernel space as well; simply + don't allow this on 32 bits hosts as the kernel space is too crowded already. */ + if (uAlignment != PAGE_SIZE) + return VERR_NOT_SUPPORTED; +#endif + RT_ASSERT_PREEMPTIBLE(); + + /* do the allocation. */ + return rtR0MemObjNativeAllocPhys(pMemObj, cbAligned, PhysHighest, uAlignment); +} +RT_EXPORT_SYMBOL(RTR0MemObjAllocPhysExTag); + + +RTR0DECL(int) RTR0MemObjAllocPhysNCTag(PRTR0MEMOBJ pMemObj, size_t cb, RTHCPHYS PhysHighest, const char *pszTag) +{ + /* sanity checks. */ + const size_t cbAligned = RT_ALIGN_Z(cb, PAGE_SIZE); + AssertPtrReturn(pMemObj, VERR_INVALID_POINTER); + *pMemObj = NIL_RTR0MEMOBJ; + AssertReturn(cb > 0, VERR_INVALID_PARAMETER); + AssertReturn(cb <= cbAligned, VERR_INVALID_PARAMETER); + AssertReturn(PhysHighest >= cb, VERR_INVALID_PARAMETER); + RT_ASSERT_PREEMPTIBLE(); + + /* do the allocation. */ + return rtR0MemObjNativeAllocPhysNC(pMemObj, cbAligned, PhysHighest); +} +RT_EXPORT_SYMBOL(RTR0MemObjAllocPhysNCTag); + + +RTR0DECL(int) RTR0MemObjEnterPhysTag(PRTR0MEMOBJ pMemObj, RTHCPHYS Phys, size_t cb, uint32_t uCachePolicy, const char *pszTag) +{ + /* sanity checks. */ + const size_t cbAligned = RT_ALIGN_Z(cb + (Phys & PAGE_OFFSET_MASK), PAGE_SIZE); + const RTHCPHYS PhysAligned = Phys & ~(RTHCPHYS)PAGE_OFFSET_MASK; + AssertPtrReturn(pMemObj, VERR_INVALID_POINTER); + *pMemObj = NIL_RTR0MEMOBJ; + AssertReturn(cb > 0, VERR_INVALID_PARAMETER); + AssertReturn(cb <= cbAligned, VERR_INVALID_PARAMETER); + AssertReturn(Phys != NIL_RTHCPHYS, VERR_INVALID_PARAMETER); + AssertReturn( uCachePolicy == RTMEM_CACHE_POLICY_DONT_CARE + || uCachePolicy == RTMEM_CACHE_POLICY_MMIO, + VERR_INVALID_PARAMETER); + RT_ASSERT_PREEMPTIBLE(); + + /* do the allocation. */ + return rtR0MemObjNativeEnterPhys(pMemObj, PhysAligned, cbAligned, uCachePolicy); +} +RT_EXPORT_SYMBOL(RTR0MemObjEnterPhysTag); + + +RTR0DECL(int) RTR0MemObjReserveKernelTag(PRTR0MEMOBJ pMemObj, void *pvFixed, size_t cb, size_t uAlignment, const char *pszTag) +{ + /* sanity checks. */ + const size_t cbAligned = RT_ALIGN_Z(cb, PAGE_SIZE); + AssertPtrReturn(pMemObj, VERR_INVALID_POINTER); + *pMemObj = NIL_RTR0MEMOBJ; + if (uAlignment == 0) + uAlignment = PAGE_SIZE; + AssertReturn(uAlignment == PAGE_SIZE || uAlignment == _2M || uAlignment == _4M, VERR_INVALID_PARAMETER); + AssertReturn(cb > 0, VERR_INVALID_PARAMETER); + AssertReturn(cb <= cbAligned, VERR_INVALID_PARAMETER); + if (pvFixed != (void *)-1) + AssertReturn(!((uintptr_t)pvFixed & (uAlignment - 1)), VERR_INVALID_PARAMETER); + RT_ASSERT_PREEMPTIBLE(); + + /* do the reservation. */ + return rtR0MemObjNativeReserveKernel(pMemObj, pvFixed, cbAligned, uAlignment); +} +RT_EXPORT_SYMBOL(RTR0MemObjReserveKernelTag); + + +RTR0DECL(int) RTR0MemObjReserveUserTag(PRTR0MEMOBJ pMemObj, RTR3PTR R3PtrFixed, size_t cb, + size_t uAlignment, RTR0PROCESS R0Process, const char *pszTag) +{ + /* sanity checks. */ + const size_t cbAligned = RT_ALIGN_Z(cb, PAGE_SIZE); + AssertPtrReturn(pMemObj, VERR_INVALID_POINTER); + *pMemObj = NIL_RTR0MEMOBJ; + if (uAlignment == 0) + uAlignment = PAGE_SIZE; + AssertReturn(uAlignment == PAGE_SIZE || uAlignment == _2M || uAlignment == _4M, VERR_INVALID_PARAMETER); + AssertReturn(cb > 0, VERR_INVALID_PARAMETER); + AssertReturn(cb <= cbAligned, VERR_INVALID_PARAMETER); + if (R3PtrFixed != (RTR3PTR)-1) + AssertReturn(!(R3PtrFixed & (uAlignment - 1)), VERR_INVALID_PARAMETER); + if (R0Process == NIL_RTR0PROCESS) + R0Process = RTR0ProcHandleSelf(); + RT_ASSERT_PREEMPTIBLE(); + + /* do the reservation. */ + return rtR0MemObjNativeReserveUser(pMemObj, R3PtrFixed, cbAligned, uAlignment, R0Process); +} +RT_EXPORT_SYMBOL(RTR0MemObjReserveUserTag); + + +RTR0DECL(int) RTR0MemObjMapKernelTag(PRTR0MEMOBJ pMemObj, RTR0MEMOBJ MemObjToMap, void *pvFixed, + size_t uAlignment, unsigned fProt, const char *pszTag) +{ + return RTR0MemObjMapKernelExTag(pMemObj, MemObjToMap, pvFixed, uAlignment, fProt, 0, 0, pszTag); +} +RT_EXPORT_SYMBOL(RTR0MemObjMapKernelTag); + + +RTR0DECL(int) RTR0MemObjMapKernelExTag(PRTR0MEMOBJ pMemObj, RTR0MEMOBJ MemObjToMap, void *pvFixed, size_t uAlignment, + unsigned fProt, size_t offSub, size_t cbSub, const char *pszTag) +{ + PRTR0MEMOBJINTERNAL pMemToMap; + PRTR0MEMOBJINTERNAL pNew; + int rc; + + /* sanity checks. */ + AssertPtrReturn(pMemObj, VERR_INVALID_POINTER); + *pMemObj = NIL_RTR0MEMOBJ; + AssertPtrReturn(MemObjToMap, VERR_INVALID_HANDLE); + pMemToMap = (PRTR0MEMOBJINTERNAL)MemObjToMap; + AssertReturn(pMemToMap->u32Magic == RTR0MEMOBJ_MAGIC, VERR_INVALID_HANDLE); + AssertReturn(pMemToMap->enmType > RTR0MEMOBJTYPE_INVALID && pMemToMap->enmType < RTR0MEMOBJTYPE_END, VERR_INVALID_HANDLE); + AssertReturn(!rtR0MemObjIsMapping(pMemToMap), VERR_INVALID_PARAMETER); + AssertReturn(pMemToMap->enmType != RTR0MEMOBJTYPE_RES_VIRT, VERR_INVALID_PARAMETER); + if (uAlignment == 0) + uAlignment = PAGE_SIZE; + AssertReturn(uAlignment == PAGE_SIZE || uAlignment == _2M || uAlignment == _4M, VERR_INVALID_PARAMETER); + if (pvFixed != (void *)-1) + AssertReturn(!((uintptr_t)pvFixed & (uAlignment - 1)), VERR_INVALID_PARAMETER); + AssertReturn(fProt != RTMEM_PROT_NONE, VERR_INVALID_PARAMETER); + AssertReturn(!(fProt & ~(RTMEM_PROT_READ | RTMEM_PROT_WRITE | RTMEM_PROT_EXEC)), VERR_INVALID_PARAMETER); + AssertReturn(!(offSub & PAGE_OFFSET_MASK), VERR_INVALID_PARAMETER); + AssertReturn(offSub < pMemToMap->cb, VERR_INVALID_PARAMETER); + AssertReturn(!(cbSub & PAGE_OFFSET_MASK), VERR_INVALID_PARAMETER); + AssertReturn(cbSub <= pMemToMap->cb, VERR_INVALID_PARAMETER); + AssertReturn((!offSub && !cbSub) || (offSub + cbSub) <= pMemToMap->cb, VERR_INVALID_PARAMETER); + RT_ASSERT_PREEMPTIBLE(); + + /* adjust the request to simplify the native code. */ + if (offSub == 0 && cbSub == pMemToMap->cb) + cbSub = 0; + + /* do the mapping. */ + rc = rtR0MemObjNativeMapKernel(&pNew, pMemToMap, pvFixed, uAlignment, fProt, offSub, cbSub); + if (RT_SUCCESS(rc)) + { + /* link it. */ + rc = rtR0MemObjLink(pMemToMap, pNew); + if (RT_SUCCESS(rc)) + *pMemObj = pNew; + else + { + /* damn, out of memory. bail out. */ + int rc2 = rtR0MemObjNativeFree(pNew); + AssertRC(rc2); + pNew->u32Magic++; + pNew->enmType = RTR0MEMOBJTYPE_END; + RTMemFree(pNew); + } + } + + return rc; +} +RT_EXPORT_SYMBOL(RTR0MemObjMapKernelExTag); + + +RTR0DECL(int) RTR0MemObjMapUserTag(PRTR0MEMOBJ pMemObj, RTR0MEMOBJ MemObjToMap, RTR3PTR R3PtrFixed, + size_t uAlignment, unsigned fProt, RTR0PROCESS R0Process, const char *pszTag) +{ + /* sanity checks. */ + PRTR0MEMOBJINTERNAL pMemToMap; + PRTR0MEMOBJINTERNAL pNew; + int rc; + AssertPtrReturn(pMemObj, VERR_INVALID_POINTER); + pMemToMap = (PRTR0MEMOBJINTERNAL)MemObjToMap; + *pMemObj = NIL_RTR0MEMOBJ; + AssertPtrReturn(MemObjToMap, VERR_INVALID_HANDLE); + AssertReturn(pMemToMap->u32Magic == RTR0MEMOBJ_MAGIC, VERR_INVALID_HANDLE); + AssertReturn(pMemToMap->enmType > RTR0MEMOBJTYPE_INVALID && pMemToMap->enmType < RTR0MEMOBJTYPE_END, VERR_INVALID_HANDLE); + AssertReturn(!rtR0MemObjIsMapping(pMemToMap), VERR_INVALID_PARAMETER); + AssertReturn(pMemToMap->enmType != RTR0MEMOBJTYPE_RES_VIRT, VERR_INVALID_PARAMETER); + if (uAlignment == 0) + uAlignment = PAGE_SIZE; + AssertReturn(uAlignment == PAGE_SIZE || uAlignment == _2M || uAlignment == _4M, VERR_INVALID_PARAMETER); + if (R3PtrFixed != (RTR3PTR)-1) + AssertReturn(!(R3PtrFixed & (uAlignment - 1)), VERR_INVALID_PARAMETER); + AssertReturn(fProt != RTMEM_PROT_NONE, VERR_INVALID_PARAMETER); + AssertReturn(!(fProt & ~(RTMEM_PROT_READ | RTMEM_PROT_WRITE | RTMEM_PROT_EXEC)), VERR_INVALID_PARAMETER); + if (R0Process == NIL_RTR0PROCESS) + R0Process = RTR0ProcHandleSelf(); + RT_ASSERT_PREEMPTIBLE(); + + /* do the mapping. */ + rc = rtR0MemObjNativeMapUser(&pNew, pMemToMap, R3PtrFixed, uAlignment, fProt, R0Process); + if (RT_SUCCESS(rc)) + { + /* link it. */ + rc = rtR0MemObjLink(pMemToMap, pNew); + if (RT_SUCCESS(rc)) + *pMemObj = pNew; + else + { + /* damn, out of memory. bail out. */ + int rc2 = rtR0MemObjNativeFree(pNew); + AssertRC(rc2); + pNew->u32Magic++; + pNew->enmType = RTR0MEMOBJTYPE_END; + RTMemFree(pNew); + } + } + + return rc; +} +RT_EXPORT_SYMBOL(RTR0MemObjMapUserTag); + + +RTR0DECL(int) RTR0MemObjProtect(RTR0MEMOBJ hMemObj, size_t offSub, size_t cbSub, uint32_t fProt) +{ + PRTR0MEMOBJINTERNAL pMemObj; + int rc; + + /* sanity checks. */ + pMemObj = (PRTR0MEMOBJINTERNAL)hMemObj; + AssertPtrReturn(pMemObj, VERR_INVALID_HANDLE); + AssertReturn(pMemObj->u32Magic == RTR0MEMOBJ_MAGIC, VERR_INVALID_HANDLE); + AssertReturn(pMemObj->enmType > RTR0MEMOBJTYPE_INVALID && pMemObj->enmType < RTR0MEMOBJTYPE_END, VERR_INVALID_HANDLE); + AssertReturn(rtR0MemObjIsProtectable(pMemObj), VERR_INVALID_PARAMETER); + AssertReturn(!(offSub & PAGE_OFFSET_MASK), VERR_INVALID_PARAMETER); + AssertReturn(offSub < pMemObj->cb, VERR_INVALID_PARAMETER); + AssertReturn(!(cbSub & PAGE_OFFSET_MASK), VERR_INVALID_PARAMETER); + AssertReturn(cbSub <= pMemObj->cb, VERR_INVALID_PARAMETER); + AssertReturn(offSub + cbSub <= pMemObj->cb, VERR_INVALID_PARAMETER); + AssertReturn(!(fProt & ~(RTMEM_PROT_NONE | RTMEM_PROT_READ | RTMEM_PROT_WRITE | RTMEM_PROT_EXEC)), VERR_INVALID_PARAMETER); + RT_ASSERT_PREEMPTIBLE(); + + /* do the job */ + rc = rtR0MemObjNativeProtect(pMemObj, offSub, cbSub, fProt); + if (RT_SUCCESS(rc)) + pMemObj->fFlags |= RTR0MEMOBJ_FLAGS_PROT_CHANGED; /* record it */ + + return rc; +} +RT_EXPORT_SYMBOL(RTR0MemObjProtect); + --- linux-raspi2-4.2.0.orig/ubuntu/vbox/r0drv/mp-r0drv.h +++ linux-raspi2-4.2.0/ubuntu/vbox/r0drv/mp-r0drv.h @@ -0,0 +1,82 @@ +/* $Id: mp-r0drv.h $ */ +/** @file + * IPRT - Multiprocessor, Ring-0 Driver, Internal Header. + */ + +/* + * Copyright (C) 2008-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + +#ifndef ___r0drv_mp_r0drv_h +#define ___r0drv_mp_r0drv_h + +#include + +RT_C_DECLS_BEGIN + +/** + * MP callback + * + * @param idCpu CPU id + * @param pvUser1 The first user argument. + * @param pvUser2 The second user argument. + */ +typedef DECLCALLBACK(void) FNMPWORKER(RTCPUID idCpu, void *pvUser1, void *pvUser2); +/** Pointer to a FNMPWORKER(). */ +typedef FNMPWORKER *PFNMPWORKER; + +/** + * RTMpOn* argument packet used by the host specific callback + * wrapper functions. + */ +typedef struct RTMPARGS +{ + PFNMPWORKER pfnWorker; + void *pvUser1; + void *pvUser2; + RTCPUID idCpu; + RTCPUID idCpu2; + uint32_t volatile cHits; +#ifdef RT_OS_WINDOWS + /** Turns out that KeFlushQueuedDpcs doesn't necessarily wait till all + * callbacks are done. So, do reference counting to make sure we don't free + * this structure befor all CPUs have completely handled their requests. */ + int32_t volatile cRefs; +#endif +#ifdef RT_OS_LINUX + PRTCPUSET pWorkerSet; +#endif +} RTMPARGS; +/** Pointer to a RTMpOn* argument packet. */ +typedef RTMPARGS *PRTMPARGS; + +/* Called from initterm-r0drv.cpp: */ +DECLHIDDEN(int) rtR0MpNotificationInit(void); +DECLHIDDEN(void) rtR0MpNotificationTerm(void); + +/* The following is only relevant when using mpnotifcation-r0drv.cpp: */ +DECLHIDDEN(int) rtR0MpNotificationNativeInit(void); +DECLHIDDEN(void) rtR0MpNotificationNativeTerm(void); +DECLHIDDEN(void) rtMpNotificationDoCallbacks(RTMPEVENT enmEvent, RTCPUID idCpu); + +RT_C_DECLS_END + +#endif + --- linux-raspi2-4.2.0.orig/ubuntu/vbox/r0drv/mpnotification-r0drv.c +++ linux-raspi2-4.2.0/ubuntu/vbox/r0drv/mpnotification-r0drv.c @@ -0,0 +1,322 @@ +/* $Id: mpnotification-r0drv.c $ */ +/** @file + * IPRT - Multiprocessor, Ring-0 Driver, Event Notifications. + */ + +/* + * Copyright (C) 2008-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + + +/******************************************************************************* +* Header Files * +*******************************************************************************/ +#include +#include "internal/iprt.h" + +#include +#if defined(RT_ARCH_AMD64) || defined(RT_ARCH_X86) +# include +#endif +#include +#include +#include +#include +#include +#include +#include "r0drv/mp-r0drv.h" + + +/******************************************************************************* +* Structures and Typedefs * +*******************************************************************************/ +/** + * Notification registration record tracking + * RTMpRegisterNotification() calls. + */ +typedef struct RTMPNOTIFYREG +{ + /** Pointer to the next record. */ + struct RTMPNOTIFYREG * volatile pNext; + /** The callback. */ + PFNRTMPNOTIFICATION pfnCallback; + /** The user argument. */ + void *pvUser; + /** Bit mask indicating whether we've done this callback or not. */ + uint8_t bmDone[sizeof(void *)]; +} RTMPNOTIFYREG; +/** Pointer to a registration record. */ +typedef RTMPNOTIFYREG *PRTMPNOTIFYREG; + + +/******************************************************************************* +* Global Variables * +*******************************************************************************/ +/** The spinlock protecting the list. */ +static RTSPINLOCK volatile g_hRTMpNotifySpinLock = NIL_RTSPINLOCK; +/** List of callbacks, in registration order. */ +static PRTMPNOTIFYREG volatile g_pRTMpCallbackHead = NULL; +/** The current done bit. */ +static uint32_t volatile g_iRTMpDoneBit; +/** The list generation. + * This is increased whenever the list has been modified. The callback routine + * make use of this to avoid having restart at the list head after each callback. */ +static uint32_t volatile g_iRTMpGeneration; + + + + +/** + * This is called by the native code. + * + * @param idCpu The CPU id the event applies to. + * @param enmEvent The event. + */ +DECLHIDDEN(void) rtMpNotificationDoCallbacks(RTMPEVENT enmEvent, RTCPUID idCpu) +{ + PRTMPNOTIFYREG pCur; + RTSPINLOCK hSpinlock; + + /* + * This is a little bit tricky as we cannot be holding the spinlock + * while calling the callback. This means that the list might change + * while we're walking it, and that multiple events might be running + * concurrently (depending on the OS). + * + * So, the first measure is to employ a 32-bitmask for each + * record where we'll use a bit that rotates for each call to + * this function to indicate which records that has been + * processed. This will take care of both changes to the list + * and a reasonable amount of concurrent events. + * + * In order to avoid having to restart the list walks for every + * callback we make, we'll make use a list generation number that is + * incremented everytime the list is changed. So, if it remains + * unchanged over a callback we can safely continue the iteration. + */ + uint32_t iDone = ASMAtomicIncU32(&g_iRTMpDoneBit); + iDone %= RT_SIZEOFMEMB(RTMPNOTIFYREG, bmDone) * 8; + + hSpinlock = g_hRTMpNotifySpinLock; + if (hSpinlock == NIL_RTSPINLOCK) + return; + RTSpinlockAcquire(hSpinlock); + + /* Clear the bit. */ + for (pCur = g_pRTMpCallbackHead; pCur; pCur = pCur->pNext) + ASMAtomicBitClear(&pCur->bmDone[0], iDone); + + /* Iterate the records and perform the callbacks. */ + do + { + uint32_t const iGeneration = ASMAtomicUoReadU32(&g_iRTMpGeneration); + + pCur = g_pRTMpCallbackHead; + while (pCur) + { + if (!ASMAtomicBitTestAndSet(&pCur->bmDone[0], iDone)) + { + PFNRTMPNOTIFICATION pfnCallback = pCur->pfnCallback; + void *pvUser = pCur->pvUser; + pCur = pCur->pNext; + RTSpinlockRelease(g_hRTMpNotifySpinLock); + + pfnCallback(enmEvent, idCpu, pvUser); + + /* carefully require the lock here, see RTR0MpNotificationTerm(). */ + hSpinlock = g_hRTMpNotifySpinLock; + if (hSpinlock == NIL_RTSPINLOCK) + return; + RTSpinlockAcquire(hSpinlock); + if (ASMAtomicUoReadU32(&g_iRTMpGeneration) != iGeneration) + break; + } + else + pCur = pCur->pNext; + } + } while (pCur); + + RTSpinlockRelease(hSpinlock); +} + + + +RTDECL(int) RTMpNotificationRegister(PFNRTMPNOTIFICATION pfnCallback, void *pvUser) +{ + PRTMPNOTIFYREG pCur; + PRTMPNOTIFYREG pNew; + + /* + * Validation. + */ + AssertPtrReturn(pfnCallback, VERR_INVALID_POINTER); + AssertReturn(g_hRTMpNotifySpinLock != NIL_RTSPINLOCK, VERR_WRONG_ORDER); + RT_ASSERT_PREEMPTIBLE(); + + RTSpinlockAcquire(g_hRTMpNotifySpinLock); + for (pCur = g_pRTMpCallbackHead; pCur; pCur = pCur->pNext) + if ( pCur->pvUser == pvUser + && pCur->pfnCallback == pfnCallback) + break; + RTSpinlockRelease(g_hRTMpNotifySpinLock); + AssertMsgReturn(!pCur, ("pCur=%p pfnCallback=%p pvUser=%p\n", pCur, pfnCallback, pvUser), VERR_ALREADY_EXISTS); + + /* + * Allocate a new record and attempt to insert it. + */ + pNew = (PRTMPNOTIFYREG)RTMemAlloc(sizeof(*pNew)); + if (!pNew) + return VERR_NO_MEMORY; + + pNew->pNext = NULL; + pNew->pfnCallback = pfnCallback; + pNew->pvUser = pvUser; + memset(&pNew->bmDone[0], 0xff, sizeof(pNew->bmDone)); + + RTSpinlockAcquire(g_hRTMpNotifySpinLock); + + pCur = g_pRTMpCallbackHead; + if (!pCur) + g_pRTMpCallbackHead = pNew; + else + { + for (pCur = g_pRTMpCallbackHead; ; pCur = pCur->pNext) + if ( pCur->pvUser == pvUser + && pCur->pfnCallback == pfnCallback) + break; + else if (!pCur->pNext) + { + pCur->pNext = pNew; + pCur = NULL; + break; + } + } + + ASMAtomicIncU32(&g_iRTMpGeneration); + + RTSpinlockRelease(g_hRTMpNotifySpinLock); + + /* duplicate? */ + if (pCur) + { + RTMemFree(pCur); + AssertMsgFailedReturn(("pCur=%p pfnCallback=%p pvUser=%p\n", pCur, pfnCallback, pvUser), VERR_ALREADY_EXISTS); + } + + return VINF_SUCCESS; +} +RT_EXPORT_SYMBOL(RTMpNotificationRegister); + + +RTDECL(int) RTMpNotificationDeregister(PFNRTMPNOTIFICATION pfnCallback, void *pvUser) +{ + PRTMPNOTIFYREG pPrev; + PRTMPNOTIFYREG pCur; + + /* + * Validation. + */ + AssertPtrReturn(pfnCallback, VERR_INVALID_POINTER); + AssertReturn(g_hRTMpNotifySpinLock != NIL_RTSPINLOCK, VERR_WRONG_ORDER); + RT_ASSERT_INTS_ON(); + + /* + * Find and unlink the record from the list. + */ + RTSpinlockAcquire(g_hRTMpNotifySpinLock); + pPrev = NULL; + for (pCur = g_pRTMpCallbackHead; pCur; pCur = pCur->pNext) + { + if ( pCur->pvUser == pvUser + && pCur->pfnCallback == pfnCallback) + break; + pPrev = pCur; + } + if (pCur) + { + if (pPrev) + pPrev->pNext = pCur->pNext; + else + g_pRTMpCallbackHead = pCur->pNext; + ASMAtomicIncU32(&g_iRTMpGeneration); + } + RTSpinlockRelease(g_hRTMpNotifySpinLock); + + if (!pCur) + return VERR_NOT_FOUND; + + /* + * Invalidate and free the record. + */ + pCur->pNext = NULL; + pCur->pfnCallback = NULL; + RTMemFree(pCur); + + return VINF_SUCCESS; +} +RT_EXPORT_SYMBOL(RTMpNotificationDeregister); + + +DECLHIDDEN(int) rtR0MpNotificationInit(void) +{ + int rc = RTSpinlockCreate((PRTSPINLOCK)&g_hRTMpNotifySpinLock, RTSPINLOCK_FLAGS_INTERRUPT_SAFE, "RTR0Mp"); + if (RT_SUCCESS(rc)) + { + rc = rtR0MpNotificationNativeInit(); + if (RT_SUCCESS(rc)) + return rc; + + RTSpinlockDestroy(g_hRTMpNotifySpinLock); + g_hRTMpNotifySpinLock = NIL_RTSPINLOCK; + } + return rc; +} + + +DECLHIDDEN(void) rtR0MpNotificationTerm(void) +{ + PRTMPNOTIFYREG pHead; + RTSPINLOCK hSpinlock = g_hRTMpNotifySpinLock; + AssertReturnVoid(hSpinlock != NIL_RTSPINLOCK); + + rtR0MpNotificationNativeTerm(); + + /* pick up the list and the spinlock. */ + RTSpinlockAcquire(hSpinlock); + ASMAtomicWriteHandle(&g_hRTMpNotifySpinLock, NIL_RTSPINLOCK); + pHead = g_pRTMpCallbackHead; + g_pRTMpCallbackHead = NULL; + ASMAtomicIncU32(&g_iRTMpGeneration); + RTSpinlockRelease(hSpinlock); + + /* free the list. */ + while (pHead) + { + PRTMPNOTIFYREG pFree = pHead; + pHead = pHead->pNext; + + pFree->pNext = NULL; + pFree->pfnCallback = NULL; + RTMemFree(pFree); + } + + RTSpinlockDestroy(hSpinlock); +} + --- linux-raspi2-4.2.0.orig/ubuntu/vbox/r0drv/power-r0drv.h +++ linux-raspi2-4.2.0/ubuntu/vbox/r0drv/power-r0drv.h @@ -0,0 +1,41 @@ +/* $Id: power-r0drv.h $ */ +/** @file + * IPRT - Power Management, Ring-0 Driver, Internal Header. + */ + +/* + * Copyright (C) 2008-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + +#ifndef ___r0drv_powermgt_r0drv_h +#define ___r0drv_powermgt_r0drv_h + +#include + +RT_C_DECLS_BEGIN + +/* Called from initterm-r0drv.cpp: */ +DECLHIDDEN(int) rtR0PowerNotificationInit(void); +DECLHIDDEN(void) rtR0PowerNotificationTerm(void); + +RT_C_DECLS_END + +#endif + --- linux-raspi2-4.2.0.orig/ubuntu/vbox/r0drv/powernotification-r0drv.c +++ linux-raspi2-4.2.0/ubuntu/vbox/r0drv/powernotification-r0drv.c @@ -0,0 +1,318 @@ +/* $Id: powernotification-r0drv.c $ */ +/** @file + * IPRT - Power Management, Ring-0 Driver, Event Notifications. + */ + +/* + * Copyright (C) 2008-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + + +/******************************************************************************* +* Header Files * +*******************************************************************************/ +#include +#include "internal/iprt.h" + +#include +#if defined(RT_ARCH_AMD64) || defined(RT_ARCH_X86) +# include +#endif +#include +#include +#include +#include +#include +#include +#include "r0drv/mp-r0drv.h" +#include "r0drv/power-r0drv.h" + + +/******************************************************************************* +* Structures and Typedefs * +*******************************************************************************/ +/** + * Notification registration record tracking + * RTPowerRegisterNotification() calls. + */ +typedef struct RTPOWERNOTIFYREG +{ + /** Pointer to the next record. */ + struct RTPOWERNOTIFYREG * volatile pNext; + /** The callback. */ + PFNRTPOWERNOTIFICATION pfnCallback; + /** The user argument. */ + void *pvUser; + /** Bit mask indicating whether we've done this callback or not. */ + uint8_t bmDone[sizeof(void *)]; +} RTPOWERNOTIFYREG; +/** Pointer to a registration record. */ +typedef RTPOWERNOTIFYREG *PRTPOWERNOTIFYREG; + + +/******************************************************************************* +* Global Variables * +*******************************************************************************/ +/** The spinlock protecting the list. */ +static RTSPINLOCK volatile g_hRTPowerNotifySpinLock = NIL_RTSPINLOCK; +/** List of callbacks, in registration order. */ +static PRTPOWERNOTIFYREG volatile g_pRTPowerCallbackHead = NULL; +/** The current done bit. */ +static uint32_t volatile g_iRTPowerDoneBit; +/** The list generation. + * This is increased whenever the list has been modified. The callback routine + * make use of this to avoid having restart at the list head after each callback. */ +static uint32_t volatile g_iRTPowerGeneration; + + + + +RTDECL(int) RTPowerSignalEvent(RTPOWEREVENT enmEvent) +{ + PRTPOWERNOTIFYREG pCur; + RTSPINLOCK hSpinlock; + + /* + * This is a little bit tricky as we cannot be holding the spinlock + * while calling the callback. This means that the list might change + * while we're walking it, and that multiple events might be running + * concurrently (depending on the OS). + * + * So, the first measure is to employ a 32-bitmask for each + * record where we'll use a bit that rotates for each call to + * this function to indicate which records that has been + * processed. This will take care of both changes to the list + * and a reasonable amount of concurrent events. + * + * In order to avoid having to restart the list walks for every + * callback we make, we'll make use a list generation number that is + * incremented everytime the list is changed. So, if it remains + * unchanged over a callback we can safely continue the iteration. + */ + uint32_t iDone = ASMAtomicIncU32(&g_iRTPowerDoneBit); + iDone %= RT_SIZEOFMEMB(RTPOWERNOTIFYREG, bmDone) * 8; + + hSpinlock = g_hRTPowerNotifySpinLock; + if (hSpinlock == NIL_RTSPINLOCK) + return VERR_ACCESS_DENIED; + RTSpinlockAcquire(hSpinlock); + + /* Clear the bit. */ + for (pCur = g_pRTPowerCallbackHead; pCur; pCur = pCur->pNext) + ASMAtomicBitClear(&pCur->bmDone[0], iDone); + + /* Iterate the records and perform the callbacks. */ + do + { + uint32_t const iGeneration = ASMAtomicUoReadU32(&g_iRTPowerGeneration); + + pCur = g_pRTPowerCallbackHead; + while (pCur) + { + if (!ASMAtomicBitTestAndSet(&pCur->bmDone[0], iDone)) + { + PFNRTPOWERNOTIFICATION pfnCallback = pCur->pfnCallback; + void *pvUser = pCur->pvUser; + pCur = pCur->pNext; + RTSpinlockRelease(g_hRTPowerNotifySpinLock); + + pfnCallback(enmEvent, pvUser); + + /* carefully require the lock here, see RTR0MpNotificationTerm(). */ + hSpinlock = g_hRTPowerNotifySpinLock; + if (hSpinlock == NIL_RTSPINLOCK) + return VERR_ACCESS_DENIED; + RTSpinlockAcquire(hSpinlock); + if (ASMAtomicUoReadU32(&g_iRTPowerGeneration) != iGeneration) + break; + } + else + pCur = pCur->pNext; + } + } while (pCur); + + RTSpinlockRelease(hSpinlock); + return VINF_SUCCESS; +} +RT_EXPORT_SYMBOL(RTPowerSignalEvent); + + +RTDECL(int) RTPowerNotificationRegister(PFNRTPOWERNOTIFICATION pfnCallback, void *pvUser) +{ + PRTPOWERNOTIFYREG pCur; + PRTPOWERNOTIFYREG pNew; + + /* + * Validation. + */ + AssertPtrReturn(pfnCallback, VERR_INVALID_POINTER); + AssertReturn(g_hRTPowerNotifySpinLock != NIL_RTSPINLOCK, VERR_WRONG_ORDER); + RT_ASSERT_PREEMPTIBLE(); + + RTSpinlockAcquire(g_hRTPowerNotifySpinLock); + for (pCur = g_pRTPowerCallbackHead; pCur; pCur = pCur->pNext) + if ( pCur->pvUser == pvUser + && pCur->pfnCallback == pfnCallback) + break; + RTSpinlockRelease(g_hRTPowerNotifySpinLock); + AssertMsgReturn(!pCur, ("pCur=%p pfnCallback=%p pvUser=%p\n", pCur, pfnCallback, pvUser), VERR_ALREADY_EXISTS); + + /* + * Allocate a new record and attempt to insert it. + */ + pNew = (PRTPOWERNOTIFYREG)RTMemAlloc(sizeof(*pNew)); + if (!pNew) + return VERR_NO_MEMORY; + + pNew->pNext = NULL; + pNew->pfnCallback = pfnCallback; + pNew->pvUser = pvUser; + memset(&pNew->bmDone[0], 0xff, sizeof(pNew->bmDone)); + + RTSpinlockAcquire(g_hRTPowerNotifySpinLock); + + pCur = g_pRTPowerCallbackHead; + if (!pCur) + g_pRTPowerCallbackHead = pNew; + else + { + for (pCur = g_pRTPowerCallbackHead; ; pCur = pCur->pNext) + if ( pCur->pvUser == pvUser + && pCur->pfnCallback == pfnCallback) + break; + else if (!pCur->pNext) + { + pCur->pNext = pNew; + pCur = NULL; + break; + } + } + + ASMAtomicIncU32(&g_iRTPowerGeneration); + + RTSpinlockRelease(g_hRTPowerNotifySpinLock); + + /* duplicate? */ + if (pCur) + { + RTMemFree(pCur); + AssertMsgFailedReturn(("pCur=%p pfnCallback=%p pvUser=%p\n", pCur, pfnCallback, pvUser), VERR_ALREADY_EXISTS); + } + + return VINF_SUCCESS; +} +RT_EXPORT_SYMBOL(RTPowerNotificationRegister); + + +RTDECL(int) RTPowerNotificationDeregister(PFNRTPOWERNOTIFICATION pfnCallback, void *pvUser) +{ + PRTPOWERNOTIFYREG pPrev; + PRTPOWERNOTIFYREG pCur; + + /* + * Validation. + */ + AssertPtrReturn(pfnCallback, VERR_INVALID_POINTER); + AssertReturn(g_hRTPowerNotifySpinLock != NIL_RTSPINLOCK, VERR_WRONG_ORDER); + RT_ASSERT_INTS_ON(); + + /* + * Find and unlink the record from the list. + */ + RTSpinlockAcquire(g_hRTPowerNotifySpinLock); + pPrev = NULL; + for (pCur = g_pRTPowerCallbackHead; pCur; pCur = pCur->pNext) + { + if ( pCur->pvUser == pvUser + && pCur->pfnCallback == pfnCallback) + break; + pPrev = pCur; + } + if (pCur) + { + if (pPrev) + pPrev->pNext = pCur->pNext; + else + g_pRTPowerCallbackHead = pCur->pNext; + ASMAtomicIncU32(&g_iRTPowerGeneration); + } + RTSpinlockRelease(g_hRTPowerNotifySpinLock); + + if (!pCur) + return VERR_NOT_FOUND; + + /* + * Invalidate and free the record. + */ + pCur->pNext = NULL; + pCur->pfnCallback = NULL; + RTMemFree(pCur); + + return VINF_SUCCESS; +} +RT_EXPORT_SYMBOL(RTPowerNotificationDeregister); + + +DECLHIDDEN(int) rtR0PowerNotificationInit(void) +{ + int rc = RTSpinlockCreate((PRTSPINLOCK)&g_hRTPowerNotifySpinLock, RTSPINLOCK_FLAGS_INTERRUPT_SAFE, "RTR0Power"); + if (RT_SUCCESS(rc)) + { + /** @todo OS specific init here */ + return rc; +#if 0 + RTSpinlockDestroy(g_hRTPowerNotifySpinLock); + g_hRTPowerNotifySpinLock = NIL_RTSPINLOCK; +#endif + } + return rc; +} + + +DECLHIDDEN(void) rtR0PowerNotificationTerm(void) +{ + PRTPOWERNOTIFYREG pHead; + RTSPINLOCK hSpinlock = g_hRTPowerNotifySpinLock; + AssertReturnVoid(hSpinlock != NIL_RTSPINLOCK); + + /** @todo OS specific term here */ + + /* pick up the list and the spinlock. */ + RTSpinlockAcquire(hSpinlock); + ASMAtomicWriteHandle(&g_hRTPowerNotifySpinLock, NIL_RTSPINLOCK); + pHead = g_pRTPowerCallbackHead; + g_pRTPowerCallbackHead = NULL; + ASMAtomicIncU32(&g_iRTPowerGeneration); + RTSpinlockRelease(hSpinlock); + + /* free the list. */ + while (pHead) + { + PRTPOWERNOTIFYREG pFree = pHead; + pHead = pHead->pNext; + + pFree->pNext = NULL; + pFree->pfnCallback = NULL; + RTMemFree(pFree); + } + + RTSpinlockDestroy(hSpinlock); +} + --- linux-raspi2-4.2.0.orig/ubuntu/vbox/vboxguest/GenericRequest.c +++ linux-raspi2-4.2.0/ubuntu/vbox/vboxguest/GenericRequest.c @@ -0,0 +1,179 @@ +/* $Id: GenericRequest.cpp $ */ +/** @file + * VBoxGuestLibR0 - Generic VMMDev request management. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + +#include "VBGLInternal.h" +#include +#include +#include +#include + +DECLVBGL(int) VbglGRVerify (const VMMDevRequestHeader *pReq, size_t cbReq) +{ + size_t cbReqExpected; + + if (!pReq || cbReq < sizeof (VMMDevRequestHeader)) + { + dprintf(("VbglGRVerify: Invalid parameter: pReq = %p, cbReq = %zu\n", pReq, cbReq)); + return VERR_INVALID_PARAMETER; + } + + if (pReq->size > cbReq) + { + dprintf(("VbglGRVerify: request size %u > buffer size %zu\n", pReq->size, cbReq)); + return VERR_INVALID_PARAMETER; + } + + /* The request size must correspond to the request type. */ + cbReqExpected = vmmdevGetRequestSize(pReq->requestType); + + if (cbReq < cbReqExpected) + { + dprintf(("VbglGRVerify: buffer size %zu < expected size %zu\n", cbReq, cbReqExpected)); + return VERR_INVALID_PARAMETER; + } + + if (cbReqExpected == cbReq) + { + /* This is most likely a fixed size request, and in this case the request size + * must be also equal to the expected size. + */ + if (pReq->size != cbReqExpected) + { + dprintf(("VbglGRVerify: request size %u != expected size %zu\n", pReq->size, cbReqExpected)); + return VERR_INVALID_PARAMETER; + } + + return VINF_SUCCESS; + } + + /* + * This can be a variable size request. Check the request type and limit the size + * to VMMDEV_MAX_VMMDEVREQ_SIZE, which is max size supported by the host. + * + * Note: Keep this list sorted for easier human lookup! + */ + if ( pReq->requestType == VMMDevReq_ChangeMemBalloon +#ifdef VBOX_WITH_64_BITS_GUESTS + || pReq->requestType == VMMDevReq_HGCMCall32 + || pReq->requestType == VMMDevReq_HGCMCall64 +#else + || pReq->requestType == VMMDevReq_HGCMCall +#endif /* VBOX_WITH_64_BITS_GUESTS */ + || pReq->requestType == VMMDevReq_RegisterSharedModule + || pReq->requestType == VMMDevReq_ReportGuestUserState + || pReq->requestType == VMMDevReq_LogString + || pReq->requestType == VMMDevReq_SetPointerShape + || pReq->requestType == VMMDevReq_VideoSetVisibleRegion) + { + if (cbReq > VMMDEV_MAX_VMMDEVREQ_SIZE) + { + dprintf(("VbglGRVerify: VMMDevReq_LogString: buffer size %zu too big\n", cbReq)); + return VERR_BUFFER_OVERFLOW; /* @todo is this error code ok? */ + } + } + else + { + dprintf(("VbglGRVerify: request size %u > buffer size %zu\n", pReq->size, cbReq)); + return VERR_IO_BAD_LENGTH; /* @todo is this error code ok? */ + } + + return VINF_SUCCESS; +} + +DECLVBGL(int) VbglGRAlloc (VMMDevRequestHeader **ppReq, uint32_t cbSize, VMMDevRequestType reqType) +{ + VMMDevRequestHeader *pReq; + int rc = vbglR0Enter (); + + if (RT_FAILURE(rc)) + return rc; + + if (!ppReq || cbSize < sizeof (VMMDevRequestHeader)) + { + dprintf(("VbglGRAlloc: Invalid parameter: ppReq = %p, cbSize = %u\n", ppReq, cbSize)); + return VERR_INVALID_PARAMETER; + } + + pReq = (VMMDevRequestHeader *)VbglPhysHeapAlloc (cbSize); + if (!pReq) + { + AssertMsgFailed(("VbglGRAlloc: no memory\n")); + rc = VERR_NO_MEMORY; + } + else + { + memset(pReq, 0xAA, cbSize); + + pReq->size = cbSize; + pReq->version = VMMDEV_REQUEST_HEADER_VERSION; + pReq->requestType = reqType; + pReq->rc = VERR_GENERAL_FAILURE; + pReq->reserved1 = 0; + pReq->reserved2 = 0; + + *ppReq = pReq; + } + + return rc; +} + +DECLVBGL(int) VbglGRPerform (VMMDevRequestHeader *pReq) +{ + RTCCPHYS physaddr; + int rc = vbglR0Enter (); + + if (RT_FAILURE(rc)) + return rc; + + if (!pReq) + return VERR_INVALID_PARAMETER; + + physaddr = VbglPhysHeapGetPhysAddr (pReq); + if ( !physaddr + || (physaddr >> 32) != 0) /* Port IO is 32 bit. */ + { + rc = VERR_VBGL_INVALID_ADDR; + } + else + { + ASMOutU32(g_vbgldata.portVMMDev + VMMDEV_PORT_OFF_REQUEST, (uint32_t)physaddr); + /* Make the compiler aware that the host has changed memory. */ + ASMCompilerBarrier(); + rc = pReq->rc; + } + return rc; +} + +DECLVBGL(void) VbglGRFree (VMMDevRequestHeader *pReq) +{ + int rc = vbglR0Enter (); + + if (RT_FAILURE(rc)) + return; + + VbglPhysHeapFree (pReq); +} + --- linux-raspi2-4.2.0.orig/ubuntu/vbox/vboxguest/HGCMInternal.c +++ linux-raspi2-4.2.0/ubuntu/vbox/vboxguest/HGCMInternal.c @@ -0,0 +1,1073 @@ +/* $Id: HGCMInternal.cpp $ */ +/** @file + * VBoxGuestLib - Host-Guest Communication Manager internal functions, implemented by VBoxGuest + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + +/* Entire file is ifdef'ed with VBGL_VBOXGUEST */ +#ifdef VBGL_VBOXGUEST + +/******************************************************************************* +* Header Files * +*******************************************************************************/ +#define LOG_GROUP LOG_GROUP_HGCM + +#include "VBGLInternal.h" +#include +#include +#include +#include +#include +#include +#include +#include + +/******************************************************************************* +* Defined Constants And Macros * +*******************************************************************************/ +/** The max parameter buffer size for a user request. */ +#define VBGLR0_MAX_HGCM_USER_PARM (24*_1M) +/** The max parameter buffer size for a kernel request. */ +#define VBGLR0_MAX_HGCM_KERNEL_PARM (16*_1M) +#if defined(RT_OS_LINUX) || defined(RT_OS_DARWIN) +/** Linux needs to use bounce buffers since RTR0MemObjLockUser has unwanted + * side effects. + * Darwin 32bit & 64bit also needs this because of 4GB/4GB user/kernel space. */ +# define USE_BOUNCE_BUFFERS +#endif + + +/******************************************************************************* +* Structures and Typedefs * +*******************************************************************************/ +/** + * Lock info structure used by VbglR0HGCMInternalCall and its helpers. + */ +struct VbglR0ParmInfo +{ + uint32_t cLockBufs; + struct + { + uint32_t iParm; + RTR0MEMOBJ hObj; +#ifdef USE_BOUNCE_BUFFERS + void *pvSmallBuf; +#endif + } aLockBufs[10]; +}; + + + +/* These functions can be only used by VBoxGuest. */ + +DECLVBGL(int) VbglR0HGCMInternalConnect (VBoxGuestHGCMConnectInfo *pConnectInfo, + PFNVBGLHGCMCALLBACK pfnAsyncCallback, void *pvAsyncData, uint32_t u32AsyncData) +{ + VMMDevHGCMConnect *pHGCMConnect; + int rc; + + if (!pConnectInfo || !pfnAsyncCallback) + return VERR_INVALID_PARAMETER; + + pHGCMConnect = NULL; + + /* Allocate request */ + rc = VbglGRAlloc ((VMMDevRequestHeader **)&pHGCMConnect, sizeof (VMMDevHGCMConnect), VMMDevReq_HGCMConnect); + + if (RT_SUCCESS(rc)) + { + /* Initialize request memory */ + pHGCMConnect->header.fu32Flags = 0; + + memcpy (&pHGCMConnect->loc, &pConnectInfo->Loc, sizeof (HGCMServiceLocation)); + pHGCMConnect->u32ClientID = 0; + + /* Issue request */ + rc = VbglGRPerform (&pHGCMConnect->header.header); + + if (RT_SUCCESS(rc)) + { + /* Check if host decides to process the request asynchronously. */ + if (rc == VINF_HGCM_ASYNC_EXECUTE) + { + /* Wait for request completion interrupt notification from host */ + pfnAsyncCallback (&pHGCMConnect->header, pvAsyncData, u32AsyncData); + } + + pConnectInfo->result = pHGCMConnect->header.result; + + if (RT_SUCCESS (pConnectInfo->result)) + pConnectInfo->u32ClientID = pHGCMConnect->u32ClientID; + } + + VbglGRFree (&pHGCMConnect->header.header); + } + + return rc; +} + + +DECLR0VBGL(int) VbglR0HGCMInternalDisconnect (VBoxGuestHGCMDisconnectInfo *pDisconnectInfo, + PFNVBGLHGCMCALLBACK pfnAsyncCallback, void *pvAsyncData, uint32_t u32AsyncData) +{ + VMMDevHGCMDisconnect *pHGCMDisconnect; + int rc; + + if (!pDisconnectInfo || !pfnAsyncCallback) + return VERR_INVALID_PARAMETER; + + pHGCMDisconnect = NULL; + + /* Allocate request */ + rc = VbglGRAlloc ((VMMDevRequestHeader **)&pHGCMDisconnect, sizeof (VMMDevHGCMDisconnect), VMMDevReq_HGCMDisconnect); + + if (RT_SUCCESS(rc)) + { + /* Initialize request memory */ + pHGCMDisconnect->header.fu32Flags = 0; + + pHGCMDisconnect->u32ClientID = pDisconnectInfo->u32ClientID; + + /* Issue request */ + rc = VbglGRPerform (&pHGCMDisconnect->header.header); + + if (RT_SUCCESS(rc)) + { + /* Check if host decides to process the request asynchronously. */ + if (rc == VINF_HGCM_ASYNC_EXECUTE) + { + /* Wait for request completion interrupt notification from host */ + pfnAsyncCallback (&pHGCMDisconnect->header, pvAsyncData, u32AsyncData); + } + + pDisconnectInfo->result = pHGCMDisconnect->header.result; + } + + VbglGRFree (&pHGCMDisconnect->header.header); + } + + return rc; +} + + +/** + * Preprocesses the HGCM call, validating and locking/buffering parameters. + * + * @returns VBox status code. + * + * @param pCallInfo The call info. + * @param cbCallInfo The size of the call info structure. + * @param fIsUser Is it a user request or kernel request. + * @param pcbExtra Where to return the extra request space needed for + * physical page lists. + */ +static int vbglR0HGCMInternalPreprocessCall(VBoxGuestHGCMCallInfo const *pCallInfo, uint32_t cbCallInfo, + bool fIsUser, struct VbglR0ParmInfo *pParmInfo, size_t *pcbExtra) +{ + HGCMFunctionParameter const *pSrcParm = VBOXGUEST_HGCM_CALL_PARMS(pCallInfo); + uint32_t cParms = pCallInfo->cParms; + uint32_t iParm; + uint32_t cb; + + /* + * Lock down the any linear buffers so we can get their addresses + * and figure out how much extra storage we need for page lists. + * + * Note! With kernel mode users we can be assertive. For user mode users + * we should just (debug) log it and fail without any fanfare. + */ + *pcbExtra = 0; + pParmInfo->cLockBufs = 0; + for (iParm = 0; iParm < cParms; iParm++, pSrcParm++) + { + switch (pSrcParm->type) + { + case VMMDevHGCMParmType_32bit: + Log4(("GstHGCMCall: parm=%u type=32bit: %#010x\n", iParm, pSrcParm->u.value32)); + break; + + case VMMDevHGCMParmType_64bit: + Log4(("GstHGCMCall: parm=%u type=64bit: %#018RX64\n", iParm, pSrcParm->u.value64)); + break; + + case VMMDevHGCMParmType_PageList: + if (fIsUser) + return VERR_INVALID_PARAMETER; + cb = pSrcParm->u.PageList.size; + if (cb) + { + uint32_t off = pSrcParm->u.PageList.offset; + HGCMPageListInfo *pPgLst; + uint32_t cPages; + uint32_t u32; + + AssertMsgReturn(cb <= VBGLR0_MAX_HGCM_KERNEL_PARM, ("%#x > %#x\n", cb, VBGLR0_MAX_HGCM_KERNEL_PARM), + VERR_OUT_OF_RANGE); + AssertMsgReturn( off >= pCallInfo->cParms * sizeof(HGCMFunctionParameter) + && off <= cbCallInfo - sizeof(HGCMPageListInfo), + ("offset=%#x cParms=%#x cbCallInfo=%#x\n", off, pCallInfo->cParms, cbCallInfo), + VERR_INVALID_PARAMETER); + + pPgLst = (HGCMPageListInfo *)((uint8_t *)pCallInfo + off); + cPages = pPgLst->cPages; + u32 = RT_OFFSETOF(HGCMPageListInfo, aPages[cPages]) + off; + AssertMsgReturn(u32 <= cbCallInfo, + ("u32=%#x (cPages=%#x offset=%#x) cbCallInfo=%#x\n", u32, cPages, off, cbCallInfo), + VERR_INVALID_PARAMETER); + AssertMsgReturn(pPgLst->offFirstPage < PAGE_SIZE, ("#x\n", pPgLst->offFirstPage), VERR_INVALID_PARAMETER); + u32 = RT_ALIGN_32(pPgLst->offFirstPage + cb, PAGE_SIZE) >> PAGE_SHIFT; + AssertMsgReturn(cPages == u32, ("cPages=%#x u32=%#x\n", cPages, u32), VERR_INVALID_PARAMETER); + AssertMsgReturn(VBOX_HGCM_F_PARM_ARE_VALID(pPgLst->flags), ("%#x\n", pPgLst->flags), VERR_INVALID_PARAMETER); + Log4(("GstHGCMCall: parm=%u type=pglst: cb=%#010x cPgs=%u offPg0=%#x flags=%#x\n", + iParm, cb, cPages, pPgLst->offFirstPage, pPgLst->flags)); + u32 = cPages; + while (u32-- > 0) + { + Log4(("GstHGCMCall: pg#%u=%RHp\n", u32, pPgLst->aPages[u32])); + AssertMsgReturn(!(pPgLst->aPages[u32] & (PAGE_OFFSET_MASK | UINT64_C(0xfff0000000000000))), + ("pg#%u=%RHp\n", u32, pPgLst->aPages[u32]), + VERR_INVALID_PARAMETER); + } + + *pcbExtra += RT_OFFSETOF(HGCMPageListInfo, aPages[pPgLst->cPages]); + } + else + Log4(("GstHGCMCall: parm=%u type=pglst: cb=0\n", iParm)); + break; + + case VMMDevHGCMParmType_LinAddr_Locked_In: + case VMMDevHGCMParmType_LinAddr_Locked_Out: + case VMMDevHGCMParmType_LinAddr_Locked: + if (fIsUser) + return VERR_INVALID_PARAMETER; + if (!VBGLR0_CAN_USE_PHYS_PAGE_LIST(/*a_fLocked =*/ true)) + { + cb = pSrcParm->u.Pointer.size; + AssertMsgReturn(cb <= VBGLR0_MAX_HGCM_KERNEL_PARM, ("%#x > %#x\n", cb, VBGLR0_MAX_HGCM_KERNEL_PARM), + VERR_OUT_OF_RANGE); + if (cb != 0) + Log4(("GstHGCMCall: parm=%u type=%#x: cb=%#010x pv=%p\n", + iParm, pSrcParm->type, cb, pSrcParm->u.Pointer.u.linearAddr)); + else + Log4(("GstHGCMCall: parm=%u type=%#x: cb=0\n", iParm, pSrcParm->type)); + break; + } + /* fall thru */ + + case VMMDevHGCMParmType_LinAddr_In: + case VMMDevHGCMParmType_LinAddr_Out: + case VMMDevHGCMParmType_LinAddr: + cb = pSrcParm->u.Pointer.size; + if (cb != 0) + { +#ifdef USE_BOUNCE_BUFFERS + void *pvSmallBuf = NULL; +#endif + uint32_t iLockBuf = pParmInfo->cLockBufs; + RTR0MEMOBJ hObj; + int rc; + uint32_t fAccess = pSrcParm->type == VMMDevHGCMParmType_LinAddr_In + || pSrcParm->type == VMMDevHGCMParmType_LinAddr_Locked_In + ? RTMEM_PROT_READ + : RTMEM_PROT_READ | RTMEM_PROT_WRITE; + + AssertReturn(iLockBuf < RT_ELEMENTS(pParmInfo->aLockBufs), VERR_INVALID_PARAMETER); + if (!fIsUser) + { + AssertMsgReturn(cb <= VBGLR0_MAX_HGCM_KERNEL_PARM, ("%#x > %#x\n", cb, VBGLR0_MAX_HGCM_KERNEL_PARM), + VERR_OUT_OF_RANGE); + rc = RTR0MemObjLockKernel(&hObj, (void *)pSrcParm->u.Pointer.u.linearAddr, cb, fAccess); + if (RT_FAILURE(rc)) + { + Log(("GstHGCMCall: id=%#x fn=%u parm=%u RTR0MemObjLockKernel(,%p,%#x) -> %Rrc\n", + pCallInfo->u32ClientID, pCallInfo->u32Function, iParm, pSrcParm->u.Pointer.u.linearAddr, cb, rc)); + return rc; + } + Log3(("GstHGCMCall: parm=%u type=%#x: cb=%#010x pv=%p locked kernel -> %p\n", + iParm, pSrcParm->type, cb, pSrcParm->u.Pointer.u.linearAddr, hObj)); + } + else if (cb > VBGLR0_MAX_HGCM_USER_PARM) + { + Log(("GstHGCMCall: id=%#x fn=%u parm=%u pv=%p cb=%#x > %#x -> out of range\n", + pCallInfo->u32ClientID, pCallInfo->u32Function, iParm, pSrcParm->u.Pointer.u.linearAddr, + cb, VBGLR0_MAX_HGCM_USER_PARM)); + return VERR_OUT_OF_RANGE; + } + else + { +#ifndef USE_BOUNCE_BUFFERS + rc = RTR0MemObjLockUser(&hObj, (RTR3PTR)pSrcParm->u.Pointer.u.linearAddr, cb, fAccess, NIL_RTR0PROCESS); + if (RT_FAILURE(rc)) + { + Log(("GstHGCMCall: id=%#x fn=%u parm=%u RTR0MemObjLockUser(,%p,%#x,nil) -> %Rrc\n", + pCallInfo->u32ClientID, pCallInfo->u32Function, iParm, pSrcParm->u.Pointer.u.linearAddr, cb, rc)); + return rc; + } + Log3(("GstHGCMCall: parm=%u type=%#x: cb=%#010x pv=%p locked user -> %p\n", + iParm, pSrcParm->type, cb, pSrcParm->u.Pointer.u.linearAddr, hObj)); + +#else /* USE_BOUNCE_BUFFERS */ + /* + * This is a bit massive, but we don't want to waste a + * whole page for a 3 byte string buffer (guest props). + * + * The threshold is ASSUMING sizeof(RTMEMHDR) == 16 and + * the system is using some power of two allocator. + */ + /** @todo A more efficient strategy would be to combine buffers. However it + * is probably going to be more massive than the current code, so + * it can wait till later. */ + bool fCopyIn = pSrcParm->type != VMMDevHGCMParmType_LinAddr_Out + && pSrcParm->type != VMMDevHGCMParmType_LinAddr_Locked_Out; + if (cb <= PAGE_SIZE / 2 - 16) + { + pvSmallBuf = fCopyIn ? RTMemTmpAlloc(cb) : RTMemTmpAllocZ(cb); + if (RT_UNLIKELY(!pvSmallBuf)) + return VERR_NO_MEMORY; + if (fCopyIn) + { + rc = RTR0MemUserCopyFrom(pvSmallBuf, pSrcParm->u.Pointer.u.linearAddr, cb); + if (RT_FAILURE(rc)) + { + RTMemTmpFree(pvSmallBuf); + Log(("GstHGCMCall: id=%#x fn=%u parm=%u RTR0MemUserCopyFrom(,%p,%#x) -> %Rrc\n", + pCallInfo->u32ClientID, pCallInfo->u32Function, iParm, + pSrcParm->u.Pointer.u.linearAddr, cb, rc)); + return rc; + } + } + rc = RTR0MemObjLockKernel(&hObj, pvSmallBuf, cb, fAccess); + if (RT_FAILURE(rc)) + { + RTMemTmpFree(pvSmallBuf); + Log(("GstHGCMCall: RTR0MemObjLockKernel failed for small buffer: rc=%Rrc pvSmallBuf=%p cb=%#x\n", + rc, pvSmallBuf, cb)); + return rc; + } + Log3(("GstHGCMCall: parm=%u type=%#x: cb=%#010x pv=%p small buffer %p -> %p\n", + iParm, pSrcParm->type, cb, pSrcParm->u.Pointer.u.linearAddr, pvSmallBuf, hObj)); + } + else + { + rc = RTR0MemObjAllocPage(&hObj, cb, false /*fExecutable*/); + if (RT_FAILURE(rc)) + return rc; + if (!fCopyIn) + memset(RTR0MemObjAddress(hObj), '\0', cb); + else + { + rc = RTR0MemUserCopyFrom(RTR0MemObjAddress(hObj), pSrcParm->u.Pointer.u.linearAddr, cb); + if (RT_FAILURE(rc)) + { + RTR0MemObjFree(hObj, false /*fFreeMappings*/); + Log(("GstHGCMCall: id=%#x fn=%u parm=%u RTR0MemUserCopyFrom(,%p,%#x) -> %Rrc\n", + pCallInfo->u32ClientID, pCallInfo->u32Function, iParm, + pSrcParm->u.Pointer.u.linearAddr, cb, rc)); + return rc; + } + } + Log3(("GstHGCMCall: parm=%u type=%#x: cb=%#010x pv=%p big buffer -> %p\n", + iParm, pSrcParm->type, cb, pSrcParm->u.Pointer.u.linearAddr, hObj)); + } +#endif /* USE_BOUNCE_BUFFERS */ + } + + pParmInfo->aLockBufs[iLockBuf].iParm = iParm; + pParmInfo->aLockBufs[iLockBuf].hObj = hObj; +#ifdef USE_BOUNCE_BUFFERS + pParmInfo->aLockBufs[iLockBuf].pvSmallBuf = pvSmallBuf; +#endif + pParmInfo->cLockBufs = iLockBuf + 1; + + if (VBGLR0_CAN_USE_PHYS_PAGE_LIST(/*a_fLocked =*/ false)) + { + size_t const cPages = RTR0MemObjSize(hObj) >> PAGE_SHIFT; + *pcbExtra += RT_OFFSETOF(HGCMPageListInfo, aPages[cPages]); + } + } + else + Log4(("GstHGCMCall: parm=%u type=%#x: cb=0\n", iParm, pSrcParm->type)); + break; + + default: + return VERR_INVALID_PARAMETER; + } + } + + return VINF_SUCCESS; +} + + +/** + * Translates locked linear address to the normal type. + * The locked types are only for the guest side and not handled by the host. + * + * @returns normal linear address type. + * @param enmType The type. + */ +static HGCMFunctionParameterType vbglR0HGCMInternalConvertLinAddrType(HGCMFunctionParameterType enmType) +{ + switch (enmType) + { + case VMMDevHGCMParmType_LinAddr_Locked_In: + return VMMDevHGCMParmType_LinAddr_In; + case VMMDevHGCMParmType_LinAddr_Locked_Out: + return VMMDevHGCMParmType_LinAddr_Out; + case VMMDevHGCMParmType_LinAddr_Locked: + return VMMDevHGCMParmType_LinAddr; + default: + return enmType; + } +} + + +/** + * Translates linear address types to page list direction flags. + * + * @returns page list flags. + * @param enmType The type. + */ +static uint32_t vbglR0HGCMInternalLinAddrTypeToPageListFlags(HGCMFunctionParameterType enmType) +{ + switch (enmType) + { + case VMMDevHGCMParmType_LinAddr_In: + case VMMDevHGCMParmType_LinAddr_Locked_In: + return VBOX_HGCM_F_PARM_DIRECTION_TO_HOST; + + case VMMDevHGCMParmType_LinAddr_Out: + case VMMDevHGCMParmType_LinAddr_Locked_Out: + return VBOX_HGCM_F_PARM_DIRECTION_FROM_HOST; + + default: AssertFailed(); + case VMMDevHGCMParmType_LinAddr: + case VMMDevHGCMParmType_LinAddr_Locked: + return VBOX_HGCM_F_PARM_DIRECTION_BOTH; + } +} + + +/** + * Initializes the call request that we're sending to the host. + * + * @returns VBox status code. + * + * @param pCallInfo The call info. + * @param cbCallInfo The size of the call info structure. + * @param fIsUser Is it a user request or kernel request. + * @param pcbExtra Where to return the extra request space needed for + * physical page lists. + */ +static void vbglR0HGCMInternalInitCall(VMMDevHGCMCall *pHGCMCall, VBoxGuestHGCMCallInfo const *pCallInfo, + uint32_t cbCallInfo, bool fIsUser, struct VbglR0ParmInfo *pParmInfo) +{ + HGCMFunctionParameter const *pSrcParm = VBOXGUEST_HGCM_CALL_PARMS(pCallInfo); + HGCMFunctionParameter *pDstParm = VMMDEV_HGCM_CALL_PARMS(pHGCMCall); + uint32_t cParms = pCallInfo->cParms; + uint32_t offExtra = (uintptr_t)(pDstParm + cParms) - (uintptr_t)pHGCMCall; + uint32_t iLockBuf = 0; + uint32_t iParm; + + + /* + * The call request headers. + */ + pHGCMCall->header.fu32Flags = 0; + pHGCMCall->header.result = VINF_SUCCESS; + + pHGCMCall->u32ClientID = pCallInfo->u32ClientID; + pHGCMCall->u32Function = pCallInfo->u32Function; + pHGCMCall->cParms = cParms; + + /* + * The parameters. + */ + for (iParm = 0; iParm < pCallInfo->cParms; iParm++, pSrcParm++, pDstParm++) + { + switch (pSrcParm->type) + { + case VMMDevHGCMParmType_32bit: + case VMMDevHGCMParmType_64bit: + *pDstParm = *pSrcParm; + break; + + case VMMDevHGCMParmType_PageList: + pDstParm->type = VMMDevHGCMParmType_PageList; + pDstParm->u.PageList.size = pSrcParm->u.PageList.size; + if (pSrcParm->u.PageList.size) + { + HGCMPageListInfo const *pSrcPgLst = (HGCMPageListInfo *)((uint8_t *)pCallInfo + pSrcParm->u.PageList.offset); + HGCMPageListInfo *pDstPgLst = (HGCMPageListInfo *)((uint8_t *)pHGCMCall + offExtra); + uint32_t const cPages = pSrcPgLst->cPages; + uint32_t iPage; + + pDstParm->u.PageList.offset = offExtra; + pDstPgLst->flags = pSrcPgLst->flags; + pDstPgLst->offFirstPage = pSrcPgLst->offFirstPage; + pDstPgLst->cPages = cPages; + for (iPage = 0; iPage < cPages; iPage++) + pDstPgLst->aPages[iPage] = pSrcPgLst->aPages[iPage]; + + offExtra += RT_OFFSETOF(HGCMPageListInfo, aPages[cPages]); + } + else + pDstParm->u.PageList.offset = 0; + break; + + case VMMDevHGCMParmType_LinAddr_Locked_In: + case VMMDevHGCMParmType_LinAddr_Locked_Out: + case VMMDevHGCMParmType_LinAddr_Locked: + if (!VBGLR0_CAN_USE_PHYS_PAGE_LIST(/*a_fLocked =*/ true)) + { + *pDstParm = *pSrcParm; + pDstParm->type = vbglR0HGCMInternalConvertLinAddrType(pSrcParm->type); + break; + } + /* fall thru */ + + case VMMDevHGCMParmType_LinAddr_In: + case VMMDevHGCMParmType_LinAddr_Out: + case VMMDevHGCMParmType_LinAddr: + if (pSrcParm->u.Pointer.size != 0) + { +#ifdef USE_BOUNCE_BUFFERS + void *pvSmallBuf = pParmInfo->aLockBufs[iLockBuf].pvSmallBuf; +#endif + RTR0MEMOBJ hObj = pParmInfo->aLockBufs[iLockBuf].hObj; + Assert(iParm == pParmInfo->aLockBufs[iLockBuf].iParm); + + if (VBGLR0_CAN_USE_PHYS_PAGE_LIST(/*a_fLocked =*/ false)) + { + HGCMPageListInfo *pDstPgLst = (HGCMPageListInfo *)((uint8_t *)pHGCMCall + offExtra); + size_t const cPages = RTR0MemObjSize(hObj) >> PAGE_SHIFT; + size_t iPage; + + pDstParm->type = VMMDevHGCMParmType_PageList; + pDstParm->u.PageList.size = pSrcParm->u.Pointer.size; + pDstParm->u.PageList.offset = offExtra; + pDstPgLst->flags = vbglR0HGCMInternalLinAddrTypeToPageListFlags(pSrcParm->type); +#ifdef USE_BOUNCE_BUFFERS + if (fIsUser) + pDstPgLst->offFirstPage = (uintptr_t)pvSmallBuf & PAGE_OFFSET_MASK; + else +#endif + pDstPgLst->offFirstPage = pSrcParm->u.Pointer.u.linearAddr & PAGE_OFFSET_MASK; + pDstPgLst->cPages = cPages; Assert(pDstPgLst->cPages == cPages); + for (iPage = 0; iPage < cPages; iPage++) + { + pDstPgLst->aPages[iPage] = RTR0MemObjGetPagePhysAddr(hObj, iPage); + Assert(pDstPgLst->aPages[iPage] != NIL_RTHCPHYS); + } + + offExtra += RT_OFFSETOF(HGCMPageListInfo, aPages[cPages]); + } + else + { + pDstParm->type = vbglR0HGCMInternalConvertLinAddrType(pSrcParm->type); + pDstParm->u.Pointer.size = pSrcParm->u.Pointer.size; +#ifdef USE_BOUNCE_BUFFERS + if (fIsUser) + pDstParm->u.Pointer.u.linearAddr = pvSmallBuf + ? (uintptr_t)pvSmallBuf + : (uintptr_t)RTR0MemObjAddress(hObj); + else +#endif + pDstParm->u.Pointer.u.linearAddr = pSrcParm->u.Pointer.u.linearAddr; + } + iLockBuf++; + } + else + { + pDstParm->type = vbglR0HGCMInternalConvertLinAddrType(pSrcParm->type); + pDstParm->u.Pointer.size = 0; + pDstParm->u.Pointer.u.linearAddr = 0; + } + break; + + default: + AssertFailed(); + pDstParm->type = VMMDevHGCMParmType_Invalid; + break; + } + } +} + + +/** + * Performs the call and completion wait. + * + * @returns VBox status code of this operation, not necessarily the call. + * + * @param pHGCMCall The HGCM call info. + * @param pfnAsyncCallback The async callback that will wait for the call + * to complete. + * @param pvAsyncData Argument for the callback. + * @param u32AsyncData Argument for the callback. + * @param pfLeakIt Where to return the leak it / free it, + * indicator. Cancellation fun. + */ +static int vbglR0HGCMInternalDoCall(VMMDevHGCMCall *pHGCMCall, PFNVBGLHGCMCALLBACK pfnAsyncCallback, + void *pvAsyncData, uint32_t u32AsyncData, bool *pfLeakIt) +{ + int rc; + + Log(("calling VbglGRPerform\n")); + rc = VbglGRPerform(&pHGCMCall->header.header); + Log(("VbglGRPerform rc = %Rrc (header rc=%d)\n", rc, pHGCMCall->header.result)); + + /* + * If the call failed, but as a result of the request itself, then pretend + * success. Upper layers will interpret the result code in the packet. + */ + if ( RT_FAILURE(rc) + && rc == pHGCMCall->header.result) + { + Assert(pHGCMCall->header.fu32Flags & VBOX_HGCM_REQ_DONE); + rc = VINF_SUCCESS; + } + + /* + * Check if host decides to process the request asynchronously, + * if so, we wait for it to complete using the caller supplied callback. + */ + *pfLeakIt = false; + if (rc == VINF_HGCM_ASYNC_EXECUTE) + { + Log(("Processing HGCM call asynchronously\n")); + rc = pfnAsyncCallback(&pHGCMCall->header, pvAsyncData, u32AsyncData); + if (pHGCMCall->header.fu32Flags & VBOX_HGCM_REQ_DONE) + { + Assert(!(pHGCMCall->header.fu32Flags & VBOX_HGCM_REQ_CANCELLED)); + rc = VINF_SUCCESS; + } + else + { + /* + * The request didn't complete in time or the call was interrupted, + * the RC from the callback indicates which. Try cancel the request. + * + * This is a bit messy because we're racing request completion. Sorry. + */ + /** @todo It would be nice if we could use the waiter callback to do further + * waiting in case of a completion race. If it wasn't for WINNT having its own + * version of all that stuff, I would've done it already. */ + VMMDevHGCMCancel2 *pCancelReq; + int rc2 = VbglGRAlloc((VMMDevRequestHeader **)&pCancelReq, sizeof(*pCancelReq), VMMDevReq_HGCMCancel2); + if (RT_SUCCESS(rc2)) + { + pCancelReq->physReqToCancel = VbglPhysHeapGetPhysAddr(pHGCMCall); + rc2 = VbglGRPerform(&pCancelReq->header); + VbglGRFree(&pCancelReq->header); + } +#if 1 /** @todo ADDVER: Remove this on next minor version change. */ + if (rc2 == VERR_NOT_IMPLEMENTED) + { + /* host is too old, or we're out of heap. */ + pHGCMCall->header.fu32Flags |= VBOX_HGCM_REQ_CANCELLED; + pHGCMCall->header.header.requestType = VMMDevReq_HGCMCancel; + rc2 = VbglGRPerform(&pHGCMCall->header.header); + if (rc2 == VERR_INVALID_PARAMETER) + rc2 = VERR_NOT_FOUND; + else if (RT_SUCCESS(rc)) + RTThreadSleep(1); + } +#endif + if (RT_SUCCESS(rc)) rc = VERR_INTERRUPTED; /** @todo weed this out from the WINNT VBoxGuest code. */ + if (RT_SUCCESS(rc2)) + { + Log(("vbglR0HGCMInternalDoCall: successfully cancelled\n")); + pHGCMCall->header.fu32Flags |= VBOX_HGCM_REQ_CANCELLED; + } + else + { + /* + * Wait for a bit while the host (hopefully) completes it. + */ + uint64_t u64Start = RTTimeSystemMilliTS(); + uint32_t cMilliesToWait = rc2 == VERR_NOT_FOUND || rc2 == VERR_SEM_DESTROYED ? 500 : 2000; + uint64_t cElapsed = 0; + if (rc2 != VERR_NOT_FOUND) + { + static unsigned s_cErrors = 0; + if (s_cErrors++ < 32) + LogRel(("vbglR0HGCMInternalDoCall: Failed to cancel the HGCM call on %Rrc: rc2=%Rrc\n", rc, rc2)); + } + else + Log(("vbglR0HGCMInternalDoCall: Cancel race rc=%Rrc rc2=%Rrc\n", rc, rc2)); + + do + { + ASMCompilerBarrier(); /* paranoia */ + if (pHGCMCall->header.fu32Flags & VBOX_HGCM_REQ_DONE) + break; + RTThreadSleep(1); + cElapsed = RTTimeSystemMilliTS() - u64Start; + } while (cElapsed < cMilliesToWait); + + ASMCompilerBarrier(); /* paranoia^2 */ + if (pHGCMCall->header.fu32Flags & VBOX_HGCM_REQ_DONE) + rc = VINF_SUCCESS; + else + { + LogRel(("vbglR0HGCMInternalDoCall: Leaking %u bytes. Pending call to %u with %u parms. (rc2=%Rrc)\n", + pHGCMCall->header.header.size, pHGCMCall->u32Function, pHGCMCall->cParms, rc2)); + *pfLeakIt = true; + } + Log(("vbglR0HGCMInternalDoCall: Cancel race ended with rc=%Rrc (rc2=%Rrc) after %llu ms\n", rc, rc2, cElapsed)); + } + } + } + + Log(("GstHGCMCall: rc=%Rrc result=%Rrc fu32Flags=%#x fLeakIt=%d\n", + rc, pHGCMCall->header.result, pHGCMCall->header.fu32Flags, *pfLeakIt)); + return rc; +} + + +/** + * Copies the result of the call back to the caller info structure and user + * buffers (if using bounce buffers). + * + * @returns rc, unless RTR0MemUserCopyTo fails. + * @param pCallInfo Call info structure to update. + * @param pHGCMCall HGCM call request. + * @param pParmInfo Parameter locking/buffering info. + * @param fIsUser Is it a user (true) or kernel request. + * @param rc The current result code. Passed along to + * preserve informational status codes. + */ +static int vbglR0HGCMInternalCopyBackResult(VBoxGuestHGCMCallInfo *pCallInfo, VMMDevHGCMCall const *pHGCMCall, + struct VbglR0ParmInfo *pParmInfo, bool fIsUser, int rc) +{ + HGCMFunctionParameter const *pSrcParm = VMMDEV_HGCM_CALL_PARMS(pHGCMCall); + HGCMFunctionParameter *pDstParm = VBOXGUEST_HGCM_CALL_PARMS(pCallInfo); + uint32_t cParms = pCallInfo->cParms; +#ifdef USE_BOUNCE_BUFFERS + uint32_t iLockBuf = 0; +#endif + uint32_t iParm; + + /* + * The call result. + */ + pCallInfo->result = pHGCMCall->header.result; + + /* + * Copy back parameters. + */ + for (iParm = 0; iParm < cParms; iParm++, pSrcParm++, pDstParm++) + { + switch (pDstParm->type) + { + case VMMDevHGCMParmType_32bit: + case VMMDevHGCMParmType_64bit: + *pDstParm = *pSrcParm; + break; + + case VMMDevHGCMParmType_PageList: + pDstParm->u.PageList.size = pSrcParm->u.PageList.size; + break; + + case VMMDevHGCMParmType_LinAddr_Locked_In: + case VMMDevHGCMParmType_LinAddr_In: +#ifdef USE_BOUNCE_BUFFERS + if ( fIsUser + && iLockBuf < pParmInfo->cLockBufs + && iParm == pParmInfo->aLockBufs[iLockBuf].iParm) + iLockBuf++; +#endif + pDstParm->u.Pointer.size = pSrcParm->u.Pointer.size; + break; + + case VMMDevHGCMParmType_LinAddr_Locked_Out: + case VMMDevHGCMParmType_LinAddr_Locked: + if (!VBGLR0_CAN_USE_PHYS_PAGE_LIST(/*a_fLocked =*/ true)) + { + pDstParm->u.Pointer.size = pSrcParm->u.Pointer.size; + break; + } + /* fall thru */ + + case VMMDevHGCMParmType_LinAddr_Out: + case VMMDevHGCMParmType_LinAddr: + { +#ifdef USE_BOUNCE_BUFFERS + if (fIsUser) + { + size_t cbOut = RT_MIN(pSrcParm->u.Pointer.size, pDstParm->u.Pointer.size); + if (cbOut) + { + int rc2; + Assert(pParmInfo->aLockBufs[iLockBuf].iParm == iParm); + rc2 = RTR0MemUserCopyTo((RTR3PTR)pDstParm->u.Pointer.u.linearAddr, + pParmInfo->aLockBufs[iLockBuf].pvSmallBuf + ? pParmInfo->aLockBufs[iLockBuf].pvSmallBuf + : RTR0MemObjAddress(pParmInfo->aLockBufs[iLockBuf].hObj), + cbOut); + if (RT_FAILURE(rc2)) + return rc2; + iLockBuf++; + } + else if ( iLockBuf < pParmInfo->cLockBufs + && iParm == pParmInfo->aLockBufs[iLockBuf].iParm) + iLockBuf++; + } +#endif + pDstParm->u.Pointer.size = pSrcParm->u.Pointer.size; + break; + } + + default: + AssertFailed(); + rc = VERR_INTERNAL_ERROR_4; + break; + } + } + +#ifdef USE_BOUNCE_BUFFERS + Assert(!fIsUser || pParmInfo->cLockBufs == iLockBuf); +#endif + return rc; +} + + +DECLR0VBGL(int) VbglR0HGCMInternalCall(VBoxGuestHGCMCallInfo *pCallInfo, uint32_t cbCallInfo, uint32_t fFlags, + PFNVBGLHGCMCALLBACK pfnAsyncCallback, void *pvAsyncData, uint32_t u32AsyncData) +{ + bool fIsUser = (fFlags & VBGLR0_HGCMCALL_F_MODE_MASK) == VBGLR0_HGCMCALL_F_USER; + struct VbglR0ParmInfo ParmInfo; + size_t cbExtra; + int rc; + + /* + * Basic validation. + */ + AssertMsgReturn( !pCallInfo + || !pfnAsyncCallback + || pCallInfo->cParms > VBOX_HGCM_MAX_PARMS + || !(fFlags & ~VBGLR0_HGCMCALL_F_MODE_MASK), + ("pCallInfo=%p pfnAsyncCallback=%p fFlags=%#x\n", pCallInfo, pfnAsyncCallback, fFlags), + VERR_INVALID_PARAMETER); + AssertReturn( cbCallInfo >= sizeof(VBoxGuestHGCMCallInfo) + || cbCallInfo >= pCallInfo->cParms * sizeof(HGCMFunctionParameter), + VERR_INVALID_PARAMETER); + + Log(("GstHGCMCall: u32ClientID=%#x u32Function=%u cParms=%u cbCallInfo=%#x fFlags=%#x\n", + pCallInfo->u32ClientID, pCallInfo->u32ClientID, pCallInfo->u32Function, pCallInfo->cParms, cbCallInfo, fFlags)); + + /* + * Validate, lock and buffer the parameters for the call. + * This will calculate the amount of extra space for physical page list. + */ + rc = vbglR0HGCMInternalPreprocessCall(pCallInfo, cbCallInfo, fIsUser, &ParmInfo, &cbExtra); + if (RT_SUCCESS(rc)) + { + /* + * Allocate the request buffer and recreate the call request. + */ + VMMDevHGCMCall *pHGCMCall; + rc = VbglGRAlloc((VMMDevRequestHeader **)&pHGCMCall, + sizeof(VMMDevHGCMCall) + pCallInfo->cParms * sizeof(HGCMFunctionParameter) + cbExtra, + VMMDevReq_HGCMCall); + if (RT_SUCCESS(rc)) + { + bool fLeakIt; + vbglR0HGCMInternalInitCall(pHGCMCall, pCallInfo, cbCallInfo, fIsUser, &ParmInfo); + + /* + * Perform the call. + */ + rc = vbglR0HGCMInternalDoCall(pHGCMCall, pfnAsyncCallback, pvAsyncData, u32AsyncData, &fLeakIt); + if (RT_SUCCESS(rc)) + { + /* + * Copy back the result (parameters and buffers that changed). + */ + rc = vbglR0HGCMInternalCopyBackResult(pCallInfo, pHGCMCall, &ParmInfo, fIsUser, rc); + } + else + { + if ( rc != VERR_INTERRUPTED + && rc != VERR_TIMEOUT) + { + static unsigned s_cErrors = 0; + if (s_cErrors++ < 32) + LogRel(("VbglR0HGCMInternalCall: vbglR0HGCMInternalDoCall failed. rc=%Rrc\n", rc)); + } + } + + if (!fLeakIt) + VbglGRFree(&pHGCMCall->header.header); + } + } + else + LogRel(("VbglR0HGCMInternalCall: vbglR0HGCMInternalPreprocessCall failed. rc=%Rrc\n", rc)); + + /* + * Release locks and free bounce buffers. + */ + if (ParmInfo.cLockBufs) + while (ParmInfo.cLockBufs-- > 0) + { + RTR0MemObjFree(ParmInfo.aLockBufs[ParmInfo.cLockBufs].hObj, false /*fFreeMappings*/); +#ifdef USE_BOUNCE_BUFFERS + RTMemTmpFree(ParmInfo.aLockBufs[ParmInfo.cLockBufs].pvSmallBuf); +#endif + } + + return rc; +} + + +#if ARCH_BITS == 64 +DECLR0VBGL(int) VbglR0HGCMInternalCall32(VBoxGuestHGCMCallInfo *pCallInfo, uint32_t cbCallInfo, uint32_t fFlags, + PFNVBGLHGCMCALLBACK pfnAsyncCallback, void *pvAsyncData, uint32_t u32AsyncData) +{ + VBoxGuestHGCMCallInfo *pCallInfo64 = NULL; + HGCMFunctionParameter *pParm64 = NULL; + HGCMFunctionParameter32 *pParm32 = NULL; + uint32_t cParms = 0; + uint32_t iParm = 0; + int rc = VINF_SUCCESS; + + /* + * Input validation. + */ + AssertMsgReturn( !pCallInfo + || !pfnAsyncCallback + || pCallInfo->cParms > VBOX_HGCM_MAX_PARMS + || !(fFlags & ~VBGLR0_HGCMCALL_F_MODE_MASK), + ("pCallInfo=%p pfnAsyncCallback=%p fFlags=%#x\n", pCallInfo, pfnAsyncCallback, fFlags), + VERR_INVALID_PARAMETER); + AssertReturn( cbCallInfo >= sizeof(VBoxGuestHGCMCallInfo) + || cbCallInfo >= pCallInfo->cParms * sizeof(HGCMFunctionParameter32), + VERR_INVALID_PARAMETER); + + /* This Assert does not work on Solaris/Windows 64/32 mixed mode, not sure why, skipping for now */ +#if !defined(RT_OS_SOLARIS) && !defined(RT_OS_WINDOWS) + AssertReturn((fFlags & VBGLR0_HGCMCALL_F_MODE_MASK) == VBGLR0_HGCMCALL_F_KERNEL, VERR_WRONG_ORDER); +#endif + + cParms = pCallInfo->cParms; + Log(("VbglR0HGCMInternalCall32: cParms=%d, u32Function=%d, fFlags=%#x\n", cParms, pCallInfo->u32Function, fFlags)); + + /* + * The simple approach, allocate a temporary request and convert the parameters. + */ + pCallInfo64 = (VBoxGuestHGCMCallInfo *)RTMemTmpAllocZ(sizeof(*pCallInfo64) + cParms * sizeof(HGCMFunctionParameter)); + if (!pCallInfo64) + return VERR_NO_TMP_MEMORY; + + *pCallInfo64 = *pCallInfo; + pParm32 = VBOXGUEST_HGCM_CALL_PARMS32(pCallInfo); + pParm64 = VBOXGUEST_HGCM_CALL_PARMS(pCallInfo64); + for (iParm = 0; iParm < cParms; iParm++, pParm32++, pParm64++) + { + switch (pParm32->type) + { + case VMMDevHGCMParmType_32bit: + pParm64->type = VMMDevHGCMParmType_32bit; + pParm64->u.value32 = pParm32->u.value32; + break; + + case VMMDevHGCMParmType_64bit: + pParm64->type = VMMDevHGCMParmType_64bit; + pParm64->u.value64 = pParm32->u.value64; + break; + + case VMMDevHGCMParmType_LinAddr_Out: + case VMMDevHGCMParmType_LinAddr: + case VMMDevHGCMParmType_LinAddr_In: + pParm64->type = pParm32->type; + pParm64->u.Pointer.size = pParm32->u.Pointer.size; + pParm64->u.Pointer.u.linearAddr = pParm32->u.Pointer.u.linearAddr; + break; + + default: + rc = VERR_INVALID_PARAMETER; + LogRel(("VbglR0HGCMInternalCall32: pParm32 type %#x invalid.\n", pParm32->type)); + break; + } + if (RT_FAILURE(rc)) + break; + } + if (RT_SUCCESS(rc)) + { + rc = VbglR0HGCMInternalCall(pCallInfo64, sizeof(*pCallInfo64) + cParms * sizeof(HGCMFunctionParameter), fFlags, + pfnAsyncCallback, pvAsyncData, u32AsyncData); + + if (RT_SUCCESS(rc)) + { + *pCallInfo = *pCallInfo64; + + /* + * Copy back. + */ + pParm32 = VBOXGUEST_HGCM_CALL_PARMS32(pCallInfo); + pParm64 = VBOXGUEST_HGCM_CALL_PARMS(pCallInfo64); + for (iParm = 0; iParm < cParms; iParm++, pParm32++, pParm64++) + { + switch (pParm64->type) + { + case VMMDevHGCMParmType_32bit: + pParm32->u.value32 = pParm64->u.value32; + break; + + case VMMDevHGCMParmType_64bit: + pParm32->u.value64 = pParm64->u.value64; + break; + + case VMMDevHGCMParmType_LinAddr_Out: + case VMMDevHGCMParmType_LinAddr: + case VMMDevHGCMParmType_LinAddr_In: + pParm32->u.Pointer.size = pParm64->u.Pointer.size; + break; + + default: + LogRel(("VbglR0HGCMInternalCall32: failed invalid pParm32 type %d\n", pParm32->type)); + rc = VERR_INTERNAL_ERROR_3; + break; + } + } + } + else + { + static unsigned s_cErrors = 0; + if (s_cErrors++ < 32) + LogRel(("VbglR0HGCMInternalCall32: VbglR0HGCMInternalCall failed. rc=%Rrc\n", rc)); + } + } + else + { + static unsigned s_cErrors = 0; + if (s_cErrors++ < 32) + LogRel(("VbglR0HGCMInternalCall32: failed. rc=%Rrc\n", rc)); + } + + RTMemTmpFree(pCallInfo64); + return rc; +} +#endif /* ARCH_BITS == 64 */ + +#endif /* VBGL_VBOXGUEST */ + --- linux-raspi2-4.2.0.orig/ubuntu/vbox/vboxguest/Init.c +++ linux-raspi2-4.2.0/ubuntu/vbox/vboxguest/Init.c @@ -0,0 +1,308 @@ +/* $Id: Init.cpp $ */ +/** @file + * VBoxGuestLibR0 - Library initialization. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + +/******************************************************************************* +* Header Files * +*******************************************************************************/ +#define VBGL_DECL_DATA +#include "VBGLInternal.h" + +#include +#include +#include + +/******************************************************************************* +* Global Variables * +*******************************************************************************/ +/** The global VBGL instance data. */ +VBGLDATA g_vbgldata; + +/** + * Used by vbglQueryDriverInfo and VbglInit to try get the host feature mask and + * version information (g_vbgldata::hostVersion). + * + * This was first implemented by the host in 3.1 and we quietly ignore failures + * for that reason. + */ +static void vbglR0QueryHostVersion (void) +{ + VMMDevReqHostVersion *pReq; + + int rc = VbglGRAlloc ((VMMDevRequestHeader **) &pReq, sizeof (*pReq), VMMDevReq_GetHostVersion); + + if (RT_SUCCESS (rc)) + { + rc = VbglGRPerform (&pReq->header); + + if (RT_SUCCESS (rc)) + { + g_vbgldata.hostVersion = *pReq; + Log (("vbglR0QueryHostVersion: %u.%u.%ur%u %#x\n", + pReq->major, pReq->minor, pReq->build, pReq->revision, pReq->features)); + } + + VbglGRFree (&pReq->header); + } +} + +#ifndef VBGL_VBOXGUEST +/** + * The guest library uses lazy initialization for VMMDev port and memory, + * because these values are provided by the VBoxGuest driver and it might + * be loaded later than other drivers. + * + * The VbglEnter checks the current library status, tries to retrieve these + * values and fails if they are unavailable. + * + */ +static void vbglQueryDriverInfo (void) +{ + int rc = VINF_SUCCESS; + + rc = RTSemMutexRequest(g_vbgldata.mutexDriverInit, RT_INDEFINITE_WAIT); + + if (RT_FAILURE(rc)) + return; + + if (g_vbgldata.status == VbglStatusReady) + { + RTSemMutexRelease(g_vbgldata.mutexDriverInit); + return; + } + + rc = vbglDriverOpen(&g_vbgldata.driver); + + if (RT_SUCCESS(rc)) + { + /* + * Try query the port info. + */ + VBoxGuestPortInfo port; + + rc = vbglDriverIOCtl (&g_vbgldata.driver, + VBOXGUEST_IOCTL_GETVMMDEVPORT, &port, + sizeof (port)); + + if (RT_SUCCESS (rc)) + { + dprintf (("port = 0x%04X, mem = %p\n", port.portAddress, port.pVMMDevMemory)); + + g_vbgldata.portVMMDev = port.portAddress; + g_vbgldata.pVMMDevMemory = port.pVMMDevMemory; + + g_vbgldata.status = VbglStatusReady; + + vbglR0QueryHostVersion(); + } + } + RTSemMutexRelease(g_vbgldata.mutexDriverInit); + dprintf (("vbglQueryDriverInfo rc = %d\n", rc)); +} +#endif /* !VBGL_VBOXGUEST */ + +/** + * Checks if VBGL has been initialized. + * + * The client library, this will lazily complete the initialization. + * + * @return VINF_SUCCESS or VERR_VBGL_NOT_INITIALIZED. + */ +int vbglR0Enter (void) +{ + int rc; + +#ifndef VBGL_VBOXGUEST + if (g_vbgldata.status == VbglStatusInitializing) + { + vbglQueryDriverInfo (); + } +#endif + + rc = g_vbgldata.status == VbglStatusReady? VINF_SUCCESS: VERR_VBGL_NOT_INITIALIZED; + + // dprintf(("VbglEnter: rc = %d\n", rc)); + + return rc; +} + +int vbglInitCommon (void) +{ + int rc = VINF_SUCCESS; + + RT_ZERO(g_vbgldata); + + g_vbgldata.status = VbglStatusInitializing; + + rc = VbglPhysHeapInit (); + + if (RT_SUCCESS(rc)) + { + /* other subsystems, none yet */ + ; + } + else + { + LogRel(("vbglInitCommon: VbglPhysHeapInit failed. rc=%Rrc\n", rc)); + g_vbgldata.status = VbglStatusNotInitialized; + } + + dprintf(("vbglInitCommon: rc = %d\n", rc)); + + return rc; +} + +DECLVBGL(void) vbglTerminateCommon (void) +{ + VbglPhysHeapTerminate (); + g_vbgldata.status = VbglStatusNotInitialized; + + return; +} + +#ifdef VBGL_VBOXGUEST + +DECLVBGL(int) VbglInit (VBGLIOPORT portVMMDev, VMMDevMemory *pVMMDevMemory) +{ + int rc = VINF_SUCCESS; + +# ifdef RT_OS_WINDOWS /** @todo r=bird: this doesn't make sense. Is there something special going on on windows? */ + dprintf(("vbglInit: starts g_vbgldata.status %d\n", g_vbgldata.status)); + + if (g_vbgldata.status == VbglStatusInitializing + || g_vbgldata.status == VbglStatusReady) + { + /* Initialization is already in process. */ + return rc; + } +# else + dprintf(("vbglInit: starts\n")); +# endif + + rc = vbglInitCommon (); + + if (RT_SUCCESS(rc)) + { + g_vbgldata.portVMMDev = portVMMDev; + g_vbgldata.pVMMDevMemory = pVMMDevMemory; + + g_vbgldata.status = VbglStatusReady; + + vbglR0QueryHostVersion(); + } + else + { + g_vbgldata.status = VbglStatusNotInitialized; + } + + return rc; +} + +DECLVBGL(void) VbglTerminate (void) +{ + vbglTerminateCommon (); + + return; +} + + +#else /* !VBGL_VBOXGUEST */ + +DECLVBGL(int) VbglInit (void) +{ + int rc = VINF_SUCCESS; + + if (g_vbgldata.status == VbglStatusInitializing + || g_vbgldata.status == VbglStatusReady) + { + /* Initialization is already in process. */ + return rc; + } + + rc = vbglInitCommon (); + + if (RT_SUCCESS(rc)) + { + rc = RTSemMutexCreate(&g_vbgldata.mutexDriverInit); + if (RT_SUCCESS(rc)) + { + /* Try to obtain VMMDev port via IOCTL to VBoxGuest main driver. */ + vbglQueryDriverInfo (); + +# ifdef VBOX_WITH_HGCM + rc = vbglR0HGCMInit (); +# endif /* VBOX_WITH_HGCM */ + + if (RT_FAILURE(rc)) + { + RTSemMutexDestroy(g_vbgldata.mutexDriverInit); + g_vbgldata.mutexDriverInit = NIL_RTSEMMUTEX; + } + } + + if (RT_FAILURE(rc)) + { + vbglTerminateCommon (); + } + + } + + return rc; +} + +DECLVBGL(void) VbglTerminate (void) +{ +# ifdef VBOX_WITH_HGCM + vbglR0HGCMTerminate (); +# endif + + /* driver open could fail, which does not prevent VbglInit from succeeding, + * close the driver only if it is opened */ + if (vbglDriverIsOpened(&g_vbgldata.driver)) + vbglDriverClose(&g_vbgldata.driver); + RTSemMutexDestroy(g_vbgldata.mutexDriverInit); + g_vbgldata.mutexDriverInit = NIL_RTSEMMUTEX; + + /* note: do vbglTerminateCommon as a last step since it zeroez up the g_vbgldata + * conceptually, doing vbglTerminateCommon last is correct + * since this is the reverse order to how init is done */ + vbglTerminateCommon (); + + return; +} + +int vbglGetDriver(VBGLDRIVER **ppDriver) +{ + if (g_vbgldata.status != VbglStatusReady) + { + vbglQueryDriverInfo(); + if (g_vbgldata.status != VbglStatusReady) + return VERR_TRY_AGAIN; + } + *ppDriver = &g_vbgldata.driver; + return VINF_SUCCESS; +} + +#endif /* !VBGL_VBOXGUEST */ --- linux-raspi2-4.2.0.orig/ubuntu/vbox/vboxguest/Makefile +++ linux-raspi2-4.2.0/ubuntu/vbox/vboxguest/Makefile @@ -0,0 +1,148 @@ +KBUILD_EXTMOD=${srctree}/ubuntu/vbox +# $Revision: 98752 $ +## @file +# VirtualBox Guest Additions Module Makefile. +# + +# +# Copyright (C) 2006-2015 Oracle Corporation +# +# This file is part of VirtualBox Open Source Edition (OSE), as +# available from http://www.virtualbox.org. This file is free software; +# you can redistribute it and/or modify it under the terms of the GNU +# General Public License (GPL) as published by the Free Software +# Foundation, in version 2 as it comes in the "COPYING" file of the +# VirtualBox OSE distribution. VirtualBox OSE is distributed in the +# hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. +# + +# Linux kbuild sets this to our source directory if we are called from there +obj ?= $(CURDIR) +include $(obj)/Makefile.include.header + +MOD_NAME = vboxguest + +MOD_OBJS = \ + VBoxGuest-linux.o \ + VBoxGuest.o \ + GenericRequest.o \ + HGCMInternal.o \ + Init.o \ + PhysHeap.o \ + SysHlp.o \ + VMMDev.o \ + r0drv/alloc-r0drv.o \ + r0drv/initterm-r0drv.o \ + r0drv/memobj-r0drv.o \ + r0drv/mpnotification-r0drv.o \ + r0drv/powernotification-r0drv.o \ + r0drv/linux/alloc-r0drv-linux.o \ + r0drv/linux/assert-r0drv-linux.o \ + r0drv/linux/initterm-r0drv-linux.o \ + r0drv/linux/memobj-r0drv-linux.o \ + r0drv/linux/memuserkernel-r0drv-linux.o \ + r0drv/linux/mp-r0drv-linux.o \ + r0drv/linux/mpnotification-r0drv-linux.o \ + r0drv/linux/process-r0drv-linux.o \ + r0drv/linux/semevent-r0drv-linux.o \ + r0drv/linux/semeventmulti-r0drv-linux.o \ + r0drv/linux/semfastmutex-r0drv-linux.o \ + r0drv/linux/semmutex-r0drv-linux.o \ + r0drv/linux/spinlock-r0drv-linux.o \ + r0drv/linux/thread-r0drv-linux.o \ + r0drv/linux/thread2-r0drv-linux.o \ + r0drv/linux/time-r0drv-linux.o \ + r0drv/linux/timer-r0drv-linux.o \ + r0drv/linux/RTLogWriteDebugger-r0drv-linux.o \ + r0drv/generic/semspinmutex-r0drv-generic.o \ + common/alloc/alloc.o \ + common/err/RTErrConvertFromErrno.o \ + common/err/RTErrConvertToErrno.o \ + common/log/log.o \ + common/log/logellipsis.o \ + common/log/logrel.o \ + common/log/logrelellipsis.o \ + common/log/logcom.o \ + common/log/logformat.o \ + common/misc/RTAssertMsg1Weak.o \ + common/misc/RTAssertMsg2.o \ + common/misc/RTAssertMsg2Add.o \ + common/misc/RTAssertMsg2AddWeak.o \ + common/misc/RTAssertMsg2AddWeakV.o \ + common/misc/RTAssertMsg2Weak.o \ + common/misc/RTAssertMsg2WeakV.o \ + common/misc/assert.o \ + common/misc/thread.o \ + common/string/RTStrCopy.o \ + common/string/RTStrCopyEx.o \ + common/string/RTStrCopyP.o \ + common/string/strformat.o \ + common/string/strformatrt.o \ + common/string/strformattype.o \ + common/string/strprintf.o \ + common/string/strtonum.o \ + common/table/avlpv.o \ + common/time/time.o \ + generic/RTAssertShouldPanic-generic.o \ + generic/RTLogWriteStdErr-stub-generic.o \ + generic/RTLogWriteStdOut-stub-generic.o \ + generic/RTMpGetCoreCount-generic.o \ + generic/RTSemEventWait-2-ex-generic.o \ + generic/RTSemEventWaitNoResume-2-ex-generic.o \ + generic/RTSemEventMultiWait-2-ex-generic.o \ + generic/RTSemEventMultiWaitNoResume-2-ex-generic.o \ + generic/errvars-generic.o \ + generic/mppresent-generic.o \ + VBox/log-vbox.o \ + VBox/logbackdoor.o +ifeq ($(BUILD_TARGET_ARCH),x86) +MOD_OBJS += \ + common/math/gcc/divdi3.o \ + common/math/gcc/moddi3.o \ + common/math/gcc/udivdi3.o \ + common/math/gcc/umoddi3.o \ + common/math/gcc/qdivrem.o +endif +ifeq ($(BUILD_TARGET_ARCH),amd64) +MOD_OBJS += common/alloc/heapsimple.o +endif + +MOD_DEFS = -DVBOX -DRT_OS_LINUX -DIN_RING0 -DIN_RT_R0 -DIN_GUEST \ + -DIN_GUEST_R0 -DIN_MODULE -DRT_WITH_VBOX -DVBGL_VBOXGUEST \ + -DVBOX_WITH_HGCM +ifeq ($(BUILD_TARGET_ARCH),amd64) + MOD_DEFS += -DRT_ARCH_AMD64 +else + MOD_DEFS += -DRT_ARCH_X86 +endif +ifeq ($(BUILD_TARGET_ARCH),amd64) + MOD_DEFS += -DVBOX_WITH_64_BITS_GUESTS +endif +MOD_INCL = $(addprefix -I$(KBUILD_EXTMOD),/ /include /r0drv/linux) +MOD_INCL += $(addprefix -I$(KBUILD_EXTMOD)/vboxguest,/ /include /r0drv/linux) + +ifneq ($(wildcard $(KBUILD_EXTMOD)/vboxguest),) + MANGLING := $(KBUILD_EXTMOD)/vboxguest/include/VBox/VBoxGuestMangling.h +else + MANGLING := $(KBUILD_EXTMOD)/include/VBox/VBoxGuestMangling.h +endif +ifeq ($(KERN_VERSION),24) + ## @todo move to MOD_DEFS when we have finished refactoring + MOD_CFLAGS = -DEXPORT_SYMTAB +else + MOD_CFLAGS = -Wno-declaration-after-statement -include $(MANGLING) +endif + +MOD_CLEAN = . linux r0drv generic r0drv/linux r0drv/generic VBox \ + common/alloc common/err common/log common/math/gcc common/misc \ + common/string common/time + +include $(obj)/Makefile.include.footer + +check: $(MOD_NAME) + @if ! readelf -p __ksymtab_strings vboxguest.ko | grep -E "\[.*\] *(RT|g_..*RT.*)"; then \ + echo "All exported IPRT symbols are properly renamed!"; \ + else \ + echo "error: Some exported IPRT symbols was not properly renamed! See above." >&2; \ + false; \ + fi --- linux-raspi2-4.2.0.orig/ubuntu/vbox/vboxguest/Makefile.include.footer +++ linux-raspi2-4.2.0/ubuntu/vbox/vboxguest/Makefile.include.footer @@ -0,0 +1,93 @@ +# +# VirtualBox Guest Additions kernel module Makefile, common parts. +# +# See Makefile.include.header for details of how to use this. +# +# Copyright (C) 2006-2015 Oracle Corporation +# +# This file is part of VirtualBox Open Source Edition (OSE), as +# available from http://www.virtualbox.org. This file is free software; +# you can redistribute it and/or modify it under the terms of the GNU +# General Public License (GPL) as published by the Free Software +# Foundation, in version 2 as it comes in the "COPYING" file of the +# VirtualBox OSE distribution. VirtualBox OSE is distributed in the +# hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. +# + +# override is required by the Debian guys +override MODULE = $(MOD_NAME) +OBJS = $(MOD_OBJS) + +ifneq ($(MAKECMDGOALS),clean) + +KBUILD_VERBOSE ?= 1 + +# +# Compiler options +# +ifndef INCL + INCL := $(addprefix -I,$(KERN_INCL) $(EXTRA_INCL)) + ifndef KBUILD_EXTMOD + KBUILD_EXTMOD := $(shell pwd) + endif + INCL += $(MOD_INCL) + export INCL +endif +KFLAGS := -D__KERNEL__ -DMODULE $(MOD_DEFS) +ifeq ($(BUILD_TYPE),debug) + KFLAGS += -DDEBUG -DDEBUG_$(subst $(subst _, ,_),_,$(USERNAME)) -DDEBUG_USERNAME=$(subst $(subst _, ,_),_,$(USERNAME)) +endif + +ifeq ($(KERN_VERSION), 24) +# +# 2.4 +# + +ifeq ($(BUILD_TARGET_ARCH),amd64) + KFLAGS += -mcmodel=kernel +endif + +CFLAGS := -O2 -DVBOX_LINUX_2_4 $(MOD_CFLAGS) $(INCL) $(KFLAGS) $(MOD_EXTRA) $(KDEBUG) +MODULE_EXT := o + +# 2.4 Module linking +$(MODULE).o: $(OBJS) + $(LD) -o $@ -r $(OBJS) + +.PHONY: $(MODULE) +all: $(MODULE) +$(MODULE): $(MODULE).o + +else +# +# 2.6 and later +# + +MODULE_EXT := ko + +$(MODULE)-y := $(OBJS) + +# build defs +EXTRA_CFLAGS += $(MOD_CFLAGS) $(INCL) $(KFLAGS) $(MOD_EXTRA) $(KDEBUG) + +all: $(MODULE) + +obj-m += $(MODULE).o + +# OL/UEK: disable module signing for external modules -- we don't have any private key +$(MODULE): + $(MAKE) KBUILD_VERBOSE=$(KBUILD_VERBOSE) CONFIG_MODULE_SIG= -C $(KERN_DIR) SUBDIRS=$(CURDIR) SRCROOT=$(CURDIR) modules + +endif + +install: $(MODULE) + @mkdir -p $(MODULE_DIR); \ + install -m 0664 -o root -g root $(MODULE).$(MODULE_EXT) $(MODULE_DIR); \ + PATH="$(PATH):/bin:/sbin" depmod -a; + +endif # eq($(MAKECMDGOALS),clean) + +# important: Don't remove Module.symvers! DKMS does 'make clean' before building ... +clean: + for f in $(MOD_CLEAN); do rm -f $$f/*.o $$f/.*.cmd $$f/.*.flags; done + rm -rf .$(MOD_NAME)* .tmp_ver* $(MOD_NAME).* Modules.symvers modules.order --- linux-raspi2-4.2.0.orig/ubuntu/vbox/vboxguest/Makefile.include.header +++ linux-raspi2-4.2.0/ubuntu/vbox/vboxguest/Makefile.include.header @@ -0,0 +1,173 @@ +# +# VirtualBox Guest Additions kernel module Makefile, common parts. +# +# (For 2.6.x, the main file must be called 'Makefile'!) +# +# Copyright (C) 2006-2015 Oracle Corporation +# +# This file is part of VirtualBox Open Source Edition (OSE), as +# available from http://www.virtualbox.org. This file is free software; +# you can redistribute it and/or modify it under the terms of the GNU +# General Public License (GPL) as published by the Free Software +# Foundation, in version 2 as it comes in the "COPYING" file of the +# VirtualBox OSE distribution. VirtualBox OSE is distributed in the +# hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. +# + +# +# These file should be included by the Makefiles for any kernel modules we +# build as part of the Guest Additions. The intended way of doing this is as +# follows: +# +# # Linux kbuild sets this to our source directory if we are called from +# # there +# obj ?= $(CURDIR) +# include $(obj)/Makefile.include.header +# MOD_NAME = +# MOD_OBJS = +# MOD_DEFS = +# MOD_INCL = +# MOD_CFLAGS = +# MOD_CLEAN = +# include $(obj)/Makefile.include.footer +# +# The kmk kBuild define KBUILD_TARGET_ARCH is available. +# + + +# +# First, figure out which architecture we're targeting and the build type. +# (We have to support basic cross building (ARCH=i386|x86_64).) +# While at it, warn about BUILD_* vars found to help with user problems. +# +ifeq ($(filter-out x86_64 amd64 AMD64,$(shell uname -m)),) + BUILD_TARGET_ARCH_DEF := amd64 +else + BUILD_TARGET_ARCH_DEF := x86 +endif +ifneq ($(filter-out amd64 x86,$(BUILD_TARGET_ARCH)),) + $(warning Ignoring unknown BUILD_TARGET_ARCH value '$(BUILD_TARGET_ARCH)'.) + BUILD_TARGET_ARCH := +endif +ifeq ($(BUILD_TARGET_ARCH),) + ifeq ($(ARCH),x86_64) + BUILD_TARGET_ARCH := amd64 + else + ifeq ($(ARCH),i386) + ifeq ($(CONFIG_X86_32),y) + BUILD_TARGET_ARCH := x86 + else + BUILD_TARGET_ARCH := amd64 + endif + else + ifeq ($(ARCH),x86) + ifeq ($(CONFIG_X86_32),y) + BUILD_TARGET_ARCH := x86 + else + BUILD_TARGET_ARCH := amd64 + endif + else + BUILD_TARGET_ARCH := $(BUILD_TARGET_ARCH_DEF) + endif + endif + endif +else + ifneq ($(BUILD_TARGET_ARCH),$(BUILD_TARGET_ARCH_DEF)) + $(warning Using BUILD_TARGET_ARCH='$(BUILD_TARGET_ARCH)' from the $(origin BUILD_TARGET_ARCH).) + endif +endif + +ifneq ($(filter-out release profile debug strict,$(BUILD_TYPE)),) + $(warning Ignoring unknown BUILD_TYPE value '$(BUILD_TYPE)'.) + BUILD_TYPE := +endif +ifeq ($(BUILD_TYPE),) + BUILD_TYPE := release +else + ifneq ($(BUILD_TYPE),release) + $(warning Using BUILD_TYPE='$(BUILD_TYPE)' from the $(origin BUILD_TYPE).) + endif +endif +ifeq ($(USERNAME),) + USERNAME := noname +endif + +ifneq ($(MAKECMDGOALS),clean) + +ifeq ($(KERNELRELEASE),) + + # + # building from this directory + # + + # kernel base directory + ifndef KERN_DIR + KERN_DIR := /lib/modules/$(shell uname -r)/build + ifneq ($(shell if test -d $(KERN_DIR); then echo yes; fi),yes) + KERN_DIR := /usr/src/linux + ifneq ($(shell if test -d $(KERN_DIR); then echo yes; fi),yes) + $(error Error: unable to find the sources of your current Linux kernel. \ + Specify KERN_DIR= and run Make again) + endif + $(warning Warning: using /usr/src/linux as the source directory of your \ + Linux kernel. If this is not correct, specify \ + KERN_DIR= and run Make again.) + endif + else + ifneq ($(shell if test -d $(KERN_DIR); then echo yes; fi),yes) + $(error Error: KERN_DIR does not point to a directory) + endif + endif + + # includes + ifndef KERN_INCL + KERN_INCL = $(KERN_DIR)/include + endif + ifneq ($(shell if test -d $(KERN_INCL); then echo yes; fi),yes) + $(error Error: unable to find the include directory for your current Linux \ + kernel. Specify KERN_INCL= and run Make again) + endif + + # module install dir, only for current kernel + ifneq ($(filter install install_rpm,$(MAKECMDGOALS)),) + ifndef MODULE_DIR + MODULE_DIR_TST := /lib/modules/$(shell uname -r) + ifeq ($(shell if test -d $(MODULE_DIR_TST); then echo yes; fi),yes) + MODULE_DIR := $(MODULE_DIR_TST)/misc + else + $(error Unable to find the folder to install the module to) + endif + endif # MODULE_DIR unspecified + endif + + # guess kernel version (24 or 26) + ifeq ($(shell if grep '"2\.4\.' $(KERN_INCL)/linux/version.h > /dev/null; then echo yes; fi),yes) + KERN_VERSION := 24 + else + KERN_VERSION := 26 + endif + +else # neq($(KERNELRELEASE),) + + # + # building from kbuild (make -C M=`pwd`) + # + + # guess kernel version (24 or 26) + ifeq ($(shell if echo "$(VERSION).$(PATCHLEVEL)." | grep '2\.4\.' > /dev/null; then echo yes; fi),yes) + KERN_VERSION := 24 + else + KERN_VERSION := 26 + endif + +endif # neq($(KERNELRELEASE),) + +# debug - show guesses. +ifdef DEBUG +$(warning dbg: KERN_DIR = $(KERN_DIR)) +$(warning dbg: KERN_INCL = $(KERN_INCL)) +$(warning dbg: MODULE_DIR = $(MODULE_DIR)) +$(warning dbg: KERN_VERSION = $(KERN_VERSION)) +endif + +endif # eq($(MAKECMDGOALS),clean) --- linux-raspi2-4.2.0.orig/ubuntu/vbox/vboxguest/PhysHeap.c +++ linux-raspi2-4.2.0/ubuntu/vbox/vboxguest/PhysHeap.c @@ -0,0 +1,636 @@ +/* $Id: PhysHeap.cpp $ */ +/** @file + * VBoxGuestLibR0 - Physical memory heap. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + +#include "VBGLInternal.h" + +#include +#include +#include + +/* Physical memory heap consists of double linked list + * of chunks. Memory blocks are allocated inside these chunks + * and are members of Allocated and Free double linked lists. + * + * When allocating a block, we search in Free linked + * list for a suitable free block. If there is no such block, + * a new chunk is allocated and the new block is taken from + * the new chunk as the only chunk-sized free block. + * Allocated block is excluded from the Free list and goes to + * Alloc list. + * + * When freeing block, we check the pointer and then + * exclude block from Alloc list and move it to free list. + * + * For each chunk we maintain the allocated blocks counter. + * if 2 (or more) entire chunks are free they are immediately + * deallocated, so we always have at most 1 free chunk. + * + * When freeing blocks, two subsequent free blocks are always + * merged together. Current implementation merges blocks only + * when there is a block after the just freed one. + * + */ + +#define VBGL_PH_ASSERT Assert +#define VBGL_PH_ASSERTMsg AssertMsg + +// #define DUMPHEAP + +#ifdef DUMPHEAP +# define VBGL_PH_dprintf(a) RTAssertMsg2Weak a +#else +# define VBGL_PH_dprintf(a) +#endif + +/* Heap block signature */ +#define VBGL_PH_BLOCKSIGNATURE (0xADDBBBBB) + + +/* Heap chunk signature */ +#define VBGL_PH_CHUNKSIGNATURE (0xADDCCCCC) +/* Heap chunk allocation unit */ +#define VBGL_PH_CHUNKSIZE (0x10000) + +/* Heap block bit flags */ +#define VBGL_PH_BF_ALLOCATED (0x1) + +struct _VBGLPHYSHEAPBLOCK +{ + uint32_t u32Signature; + + /* Size of user data in the block. Does not include the block header. */ + uint32_t cbDataSize; + + uint32_t fu32Flags; + + struct _VBGLPHYSHEAPBLOCK *pNext; + struct _VBGLPHYSHEAPBLOCK *pPrev; + + struct _VBGLPHYSHEAPCHUNK *pChunk; +}; + +struct _VBGLPHYSHEAPCHUNK +{ + uint32_t u32Signature; + + /* Size of the chunk. Includes the chunk header. */ + uint32_t cbSize; + + /* Physical address of the chunk */ + uint32_t physAddr; + + /* Number of allocated blocks in the chunk */ + int32_t cAllocatedBlocks; + + struct _VBGLPHYSHEAPCHUNK *pNext; + struct _VBGLPHYSHEAPCHUNK *pPrev; +}; + + +#ifndef DUMPHEAP +#define dumpheap(a) +#else +void dumpheap (char *point) +{ + VBGL_PH_dprintf(("VBGL_PH dump at '%s'\n", point)); + + VBGL_PH_dprintf(("Chunks:\n")); + + VBGLPHYSHEAPCHUNK *pChunk = g_vbgldata.pChunkHead; + + while (pChunk) + { + VBGL_PH_dprintf(("%p: pNext = %p, pPrev = %p, sign = %08X, size = %8d, allocated = %8d, phys = %08X\n", + pChunk, pChunk->pNext, pChunk->pPrev, pChunk->u32Signature, pChunk->cbSize, pChunk->cAllocatedBlocks, pChunk->physAddr)); + + pChunk = pChunk->pNext; + } + + VBGL_PH_dprintf(("Allocated blocks:\n")); + + VBGLPHYSHEAPBLOCK *pBlock = g_vbgldata.pAllocBlocksHead; + + while (pBlock) + { + VBGL_PH_dprintf(("%p: pNext = %p, pPrev = %p, sign = %08X, size = %8d, flags = %08X, pChunk = %p\n", + pBlock, pBlock->pNext, pBlock->pPrev, pBlock->u32Signature, pBlock->cbDataSize, pBlock->fu32Flags, pBlock->pChunk)); + + pBlock = pBlock->pNext; + } + + VBGL_PH_dprintf(("Free blocks:\n")); + + pBlock = g_vbgldata.pFreeBlocksHead; + + while (pBlock) + { + VBGL_PH_dprintf(("%p: pNext = %p, pPrev = %p, sign = %08X, size = %8d, flags = %08X, pChunk = %p\n", + pBlock, pBlock->pNext, pBlock->pPrev, pBlock->u32Signature, pBlock->cbDataSize, pBlock->fu32Flags, pBlock->pChunk)); + + pBlock = pBlock->pNext; + } + + VBGL_PH_dprintf(("VBGL_PH dump at '%s' done\n", point)); +} +#endif + + +DECLINLINE(void *) vbglPhysHeapBlock2Data (VBGLPHYSHEAPBLOCK *pBlock) +{ + return (void *)(pBlock? (char *)pBlock + sizeof (VBGLPHYSHEAPBLOCK): NULL); +} + +DECLINLINE(VBGLPHYSHEAPBLOCK *) vbglPhysHeapData2Block (void *p) +{ + VBGLPHYSHEAPBLOCK *pBlock = (VBGLPHYSHEAPBLOCK *)(p? (char *)p - sizeof (VBGLPHYSHEAPBLOCK): NULL); + + VBGL_PH_ASSERTMsg(pBlock == NULL || pBlock->u32Signature == VBGL_PH_BLOCKSIGNATURE, + ("pBlock->u32Signature = %08X\n", pBlock->u32Signature)); + + return pBlock; +} + +DECLINLINE(int) vbglPhysHeapEnter (void) +{ + int rc = RTSemFastMutexRequest(g_vbgldata.mutexHeap); + + VBGL_PH_ASSERTMsg(RT_SUCCESS(rc), + ("Failed to request heap mutex, rc = %Rrc\n", rc)); + + return rc; +} + +DECLINLINE(void) vbglPhysHeapLeave (void) +{ + RTSemFastMutexRelease(g_vbgldata.mutexHeap); +} + + +static void vbglPhysHeapInitBlock (VBGLPHYSHEAPBLOCK *pBlock, VBGLPHYSHEAPCHUNK *pChunk, uint32_t cbDataSize) +{ + VBGL_PH_ASSERT(pBlock != NULL); + VBGL_PH_ASSERT(pChunk != NULL); + + pBlock->u32Signature = VBGL_PH_BLOCKSIGNATURE; + pBlock->cbDataSize = cbDataSize; + pBlock->fu32Flags = 0; + pBlock->pNext = NULL; + pBlock->pPrev = NULL; + pBlock->pChunk = pChunk; +} + + +static void vbglPhysHeapInsertBlock (VBGLPHYSHEAPBLOCK *pInsertAfter, VBGLPHYSHEAPBLOCK *pBlock) +{ + VBGL_PH_ASSERTMsg(pBlock->pNext == NULL, + ("pBlock->pNext = %p\n", pBlock->pNext)); + VBGL_PH_ASSERTMsg(pBlock->pPrev == NULL, + ("pBlock->pPrev = %p\n", pBlock->pPrev)); + + if (pInsertAfter) + { + pBlock->pNext = pInsertAfter->pNext; + pBlock->pPrev = pInsertAfter; + + if (pInsertAfter->pNext) + { + pInsertAfter->pNext->pPrev = pBlock; + } + + pInsertAfter->pNext = pBlock; + } + else + { + /* inserting to head of list */ + pBlock->pPrev = NULL; + + if (pBlock->fu32Flags & VBGL_PH_BF_ALLOCATED) + { + pBlock->pNext = g_vbgldata.pAllocBlocksHead; + + if (g_vbgldata.pAllocBlocksHead) + { + g_vbgldata.pAllocBlocksHead->pPrev = pBlock; + } + + g_vbgldata.pAllocBlocksHead = pBlock; + } + else + { + pBlock->pNext = g_vbgldata.pFreeBlocksHead; + + if (g_vbgldata.pFreeBlocksHead) + { + g_vbgldata.pFreeBlocksHead->pPrev = pBlock; + } + + g_vbgldata.pFreeBlocksHead = pBlock; + } + } +} + +static void vbglPhysHeapExcludeBlock (VBGLPHYSHEAPBLOCK *pBlock) +{ + if (pBlock->pNext) + { + pBlock->pNext->pPrev = pBlock->pPrev; + } + else + { + /* this is tail of list but we do not maintain tails of block lists. + * so do nothing. + */ + ; + } + + if (pBlock->pPrev) + { + pBlock->pPrev->pNext = pBlock->pNext; + } + else + { + /* this is head of list but we do not maintain tails of block lists. */ + if (pBlock->fu32Flags & VBGL_PH_BF_ALLOCATED) + { + g_vbgldata.pAllocBlocksHead = pBlock->pNext; + } + else + { + g_vbgldata.pFreeBlocksHead = pBlock->pNext; + } + } + + pBlock->pNext = NULL; + pBlock->pPrev = NULL; +} + +static VBGLPHYSHEAPBLOCK *vbglPhysHeapChunkAlloc (uint32_t cbSize) +{ + RTCCPHYS physAddr; + VBGLPHYSHEAPCHUNK *pChunk; + VBGLPHYSHEAPBLOCK *pBlock; + VBGL_PH_dprintf(("Allocating new chunk of size %d\n", cbSize)); + + /* Compute chunk size to allocate */ + if (cbSize < VBGL_PH_CHUNKSIZE) + { + /* Includes case of block size 0 during initialization */ + cbSize = VBGL_PH_CHUNKSIZE; + } + else + { + /* Round up to next chunk size, which must be power of 2 */ + cbSize = (cbSize + (VBGL_PH_CHUNKSIZE - 1)) & ~(VBGL_PH_CHUNKSIZE - 1); + } + + physAddr = 0; + /* This function allocates physical contiguous memory (below 4GB) according to the IPRT docs. + * Address < 4G is required for the port IO. + */ + pChunk = (VBGLPHYSHEAPCHUNK *)RTMemContAlloc (&physAddr, cbSize); + + if (!pChunk) + { + LogRel(("vbglPhysHeapChunkAlloc: failed to alloc %u contiguous bytes.\n", cbSize)); + return NULL; + } + + AssertRelease(physAddr < _4G && physAddr + cbSize <= _4G); + + pChunk->u32Signature = VBGL_PH_CHUNKSIGNATURE; + pChunk->cbSize = cbSize; + pChunk->physAddr = (uint32_t)physAddr; + pChunk->cAllocatedBlocks = 0; + pChunk->pNext = g_vbgldata.pChunkHead; + pChunk->pPrev = NULL; + + /* Initialize the free block, which now occupies entire chunk. */ + pBlock = (VBGLPHYSHEAPBLOCK *)((char *)pChunk + sizeof (VBGLPHYSHEAPCHUNK)); + + vbglPhysHeapInitBlock (pBlock, pChunk, cbSize - sizeof (VBGLPHYSHEAPCHUNK) - sizeof (VBGLPHYSHEAPBLOCK)); + + vbglPhysHeapInsertBlock (NULL, pBlock); + + g_vbgldata.pChunkHead = pChunk; + + VBGL_PH_dprintf(("Allocated chunk %p, block = %p size=%x\n", pChunk, pBlock, cbSize)); + + return pBlock; +} + + +void vbglPhysHeapChunkDelete (VBGLPHYSHEAPCHUNK *pChunk) +{ + char *p; + VBGL_PH_ASSERT(pChunk != NULL); + VBGL_PH_ASSERTMsg(pChunk->u32Signature == VBGL_PH_CHUNKSIGNATURE, + ("pChunk->u32Signature = %08X\n", pChunk->u32Signature)); + + VBGL_PH_dprintf(("Deleting chunk %p size %x\n", pChunk, pChunk->cbSize)); + + /* first scan the chunk and exclude all blocks from lists */ + + p = (char *)pChunk + sizeof (VBGLPHYSHEAPCHUNK); + + while (p < (char *)pChunk + pChunk->cbSize) + { + VBGLPHYSHEAPBLOCK *pBlock = (VBGLPHYSHEAPBLOCK *)p; + + p += pBlock->cbDataSize + sizeof (VBGLPHYSHEAPBLOCK); + + vbglPhysHeapExcludeBlock (pBlock); + } + + VBGL_PH_ASSERTMsg(p == (char *)pChunk + pChunk->cbSize, + ("p = %p, (char *)pChunk + pChunk->cbSize = %p, pChunk->cbSize = %08X\n", + p, (char *)pChunk + pChunk->cbSize, pChunk->cbSize)); + + /* Exclude chunk from the chunk list */ + if (pChunk->pNext) + { + pChunk->pNext->pPrev = pChunk->pPrev; + } + else + { + /* we do not maintain tail */ + ; + } + + if (pChunk->pPrev) + { + pChunk->pPrev->pNext = pChunk->pNext; + } + else + { + /* the chunk was head */ + g_vbgldata.pChunkHead = pChunk->pNext; + } + + RTMemContFree (pChunk, pChunk->cbSize); +} + + +DECLVBGL(void *) VbglPhysHeapAlloc (uint32_t cbSize) +{ + VBGLPHYSHEAPBLOCK *pBlock, *iter; + int rc = vbglPhysHeapEnter (); + + if (RT_FAILURE(rc)) + return NULL; + + dumpheap ("pre alloc"); + + pBlock = NULL; + + /* If there are free blocks in the heap, look at them. */ + iter = g_vbgldata.pFreeBlocksHead; + + /* There will be not many blocks in the heap, so + * linear search would be fast enough. + */ + + while (iter) + { + if (iter->cbDataSize == cbSize) + { + /* exact match */ + pBlock = iter; + break; + } + + /* Looking for a free block with nearest size */ + if (iter->cbDataSize > cbSize) + { + if (pBlock) + { + if (iter->cbDataSize < pBlock->cbDataSize) + { + pBlock = iter; + } + } + else + { + pBlock = iter; + } + } + + iter = iter->pNext; + } + + if (!pBlock) + { + /* No free blocks, allocate a new chunk, + * the only free block of the chunk will + * be returned. + */ + pBlock = vbglPhysHeapChunkAlloc (cbSize); + } + + if (pBlock) + { + VBGL_PH_ASSERTMsg(pBlock->u32Signature == VBGL_PH_BLOCKSIGNATURE, + ("pBlock = %p, pBlock->u32Signature = %08X\n", pBlock, pBlock->u32Signature)); + VBGL_PH_ASSERTMsg((pBlock->fu32Flags & VBGL_PH_BF_ALLOCATED) == 0, + ("pBlock = %p, pBlock->fu32Flags = %08X\n", pBlock, pBlock->fu32Flags)); + + /* We have a free block, either found or allocated. */ + + if (pBlock->cbDataSize > 2*(cbSize + sizeof (VBGLPHYSHEAPBLOCK))) + { + /* Data will occupy less than a half of the block, + * the block should be split. + */ + iter = (VBGLPHYSHEAPBLOCK *)((char *)pBlock + sizeof (VBGLPHYSHEAPBLOCK) + cbSize); + + /* Init the new 'iter' block, initialized blocks are always marked as free. */ + vbglPhysHeapInitBlock (iter, pBlock->pChunk, pBlock->cbDataSize - cbSize - sizeof (VBGLPHYSHEAPBLOCK)); + + pBlock->cbDataSize = cbSize; + + /* Insert the new 'iter' block after the 'pBlock' in the free list */ + vbglPhysHeapInsertBlock (pBlock, iter); + } + + /* Exclude pBlock from free list */ + vbglPhysHeapExcludeBlock (pBlock); + + /* Mark as allocated */ + pBlock->fu32Flags |= VBGL_PH_BF_ALLOCATED; + + /* Insert to allocated list */ + vbglPhysHeapInsertBlock (NULL, pBlock); + + /* Adjust the chunk allocated blocks counter */ + pBlock->pChunk->cAllocatedBlocks++; + } + + dumpheap ("post alloc"); + + vbglPhysHeapLeave (); + VBGL_PH_dprintf(("VbglPhysHeapAlloc %x size %x\n", vbglPhysHeapBlock2Data (pBlock), pBlock->cbDataSize)); + + return vbglPhysHeapBlock2Data (pBlock); +} + +DECLVBGL(uint32_t) VbglPhysHeapGetPhysAddr (void *p) +{ + uint32_t physAddr = 0; + VBGLPHYSHEAPBLOCK *pBlock = vbglPhysHeapData2Block (p); + + if (pBlock) + { + VBGL_PH_ASSERTMsg((pBlock->fu32Flags & VBGL_PH_BF_ALLOCATED) != 0, + ("pBlock = %p, pBlock->fu32Flags = %08X\n", pBlock, pBlock->fu32Flags)); + + if (pBlock->fu32Flags & VBGL_PH_BF_ALLOCATED) + physAddr = pBlock->pChunk->physAddr + (uint32_t)((uintptr_t)p - (uintptr_t)pBlock->pChunk); + } + + return physAddr; +} + +DECLVBGL(void) VbglPhysHeapFree (void *p) +{ + VBGLPHYSHEAPBLOCK *pBlock; + VBGLPHYSHEAPBLOCK *pNeighbour; + + int rc = vbglPhysHeapEnter (); + if (RT_FAILURE(rc)) + return; + + dumpheap ("pre free"); + + pBlock = vbglPhysHeapData2Block (p); + + if (!pBlock) + { + vbglPhysHeapLeave (); + return; + } + + VBGL_PH_ASSERTMsg((pBlock->fu32Flags & VBGL_PH_BF_ALLOCATED) != 0, + ("pBlock = %p, pBlock->fu32Flags = %08X\n", pBlock, pBlock->fu32Flags)); + + /* Exclude from allocated list */ + vbglPhysHeapExcludeBlock (pBlock); + + dumpheap ("post exclude"); + + VBGL_PH_dprintf(("VbglPhysHeapFree %x size %x\n", p, pBlock->cbDataSize)); + + /* Mark as free */ + pBlock->fu32Flags &= ~VBGL_PH_BF_ALLOCATED; + + /* Insert to free list */ + vbglPhysHeapInsertBlock (NULL, pBlock); + + dumpheap ("post insert"); + + /* Adjust the chunk allocated blocks counter */ + pBlock->pChunk->cAllocatedBlocks--; + + VBGL_PH_ASSERT(pBlock->pChunk->cAllocatedBlocks >= 0); + + /* Check if we can merge 2 free blocks. To simplify heap maintenance, + * we will look at block after the just freed one. + * This will not prevent us from detecting free memory chunks. + * Also in most cases blocks are deallocated in reverse allocation order + * and in that case the merging will work. + */ + + pNeighbour = (VBGLPHYSHEAPBLOCK *)((char *)p + pBlock->cbDataSize); + + if ((char *)pNeighbour < (char *)pBlock->pChunk + pBlock->pChunk->cbSize + && (pNeighbour->fu32Flags & VBGL_PH_BF_ALLOCATED) == 0) + { + /* The next block is free as well. */ + + /* Adjust size of current memory block */ + pBlock->cbDataSize += pNeighbour->cbDataSize + sizeof (VBGLPHYSHEAPBLOCK); + + /* Exclude the next neighbour */ + vbglPhysHeapExcludeBlock (pNeighbour); + } + + dumpheap ("post merge"); + + /* now check if there are 2 or more free chunks */ + if (pBlock->pChunk->cAllocatedBlocks == 0) + { + VBGLPHYSHEAPCHUNK *pChunk = g_vbgldata.pChunkHead; + + uint32_t u32FreeChunks = 0; + + while (pChunk) + { + if (pChunk->cAllocatedBlocks == 0) + { + u32FreeChunks++; + } + + pChunk = pChunk->pNext; + } + + if (u32FreeChunks > 1) + { + /* Delete current chunk, it will also exclude all free blocks + * remaining in the chunk from the free list, so the pBlock + * will also be invalid after this. + */ + vbglPhysHeapChunkDelete (pBlock->pChunk); + } + } + + dumpheap ("post free"); + + vbglPhysHeapLeave (); +} + +DECLVBGL(int) VbglPhysHeapInit (void) +{ + int rc = VINF_SUCCESS; + + /* Allocate the first chunk of the heap. */ + VBGLPHYSHEAPBLOCK *pBlock = vbglPhysHeapChunkAlloc (0); + + if (!pBlock) + rc = VERR_NO_MEMORY; + + RTSemFastMutexCreate(&g_vbgldata.mutexHeap); + + return rc; +} + +DECLVBGL(void) VbglPhysHeapTerminate (void) +{ + while (g_vbgldata.pChunkHead) + { + vbglPhysHeapChunkDelete (g_vbgldata.pChunkHead); + } + + RTSemFastMutexDestroy(g_vbgldata.mutexHeap); +} + --- linux-raspi2-4.2.0.orig/ubuntu/vbox/vboxguest/SysHlp.c +++ linux-raspi2-4.2.0/ubuntu/vbox/vboxguest/SysHlp.c @@ -0,0 +1,351 @@ +/* $Id: SysHlp.cpp $ */ +/** @file + * VBoxGuestLibR0 - IDC with VBoxGuest and HGCM helpers. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + +#define LOG_GROUP LOG_GROUP_HGCM +#include + +#include +#include "SysHlp.h" + +#include + +#ifdef VBGL_VBOXGUEST + +#if !defined (RT_OS_WINDOWS) +# include +# include +#endif + + +/** + * Internal worker for locking a range of linear addresses. + * + * @returns VBox status code. + * @param ppvCtx Where to store context data. + * @param pv The start of the range. + * @param u32Size The size of the range. + * @param fWriteAccess Lock for read-write (true) or readonly (false). + * @param fFlags HGCM call flags, VBGLR0_HGCM_F_XXX. + */ +int vbglLockLinear (void **ppvCtx, void *pv, uint32_t u32Size, bool fWriteAccess, uint32_t fFlags) +{ + int rc = VINF_SUCCESS; +#ifndef RT_OS_WINDOWS + RTR0MEMOBJ MemObj = NIL_RTR0MEMOBJ; + uint32_t fAccess = RTMEM_PROT_READ | (fWriteAccess ? RTMEM_PROT_WRITE : 0); +#endif + + /* Zero size buffers shouldn't be locked. */ + if (u32Size == 0) + { + Assert(pv == NULL); +#ifdef RT_OS_WINDOWS + *ppvCtx = NULL; +#else + *ppvCtx = NIL_RTR0MEMOBJ; +#endif + return VINF_SUCCESS; + } + + /** @todo just use IPRT here. the extra allocation shouldn't matter much... + * Then we can move all this up one level even. */ +#ifdef RT_OS_WINDOWS + PMDL pMdl = IoAllocateMdl (pv, u32Size, FALSE, FALSE, NULL); + + if (pMdl == NULL) + { + rc = VERR_NOT_SUPPORTED; + AssertMsgFailed(("IoAllocateMdl %p %x failed!!\n", pv, u32Size)); + } + else + { + __try { + /* Calls to MmProbeAndLockPages must be enclosed in a try/except block. */ + MmProbeAndLockPages (pMdl, + /** @todo (fFlags & VBGLR0_HGCMCALL_F_MODE_MASK) == VBGLR0_HGCMCALL_F_USER? UserMode: KernelMode */ + KernelMode, + (fWriteAccess) ? IoModifyAccess : IoReadAccess); + + *ppvCtx = pMdl; + + } __except(EXCEPTION_EXECUTE_HANDLER) { + + IoFreeMdl (pMdl); + /** @todo */ + rc = VERR_INVALID_PARAMETER; + AssertMsgFailed(("MmProbeAndLockPages %p %x failed!!\n", pv, u32Size)); + } + } + +#else + /* + * Lock depending on context. + * + * Note: We will later use the memory object here to convert the HGCM + * linear buffer parameter into a physical page list. This is why + * we lock both kernel pages on all systems, even those where we + * know they aren't pageable. + */ + if ((fFlags & VBGLR0_HGCMCALL_F_MODE_MASK) == VBGLR0_HGCMCALL_F_USER) + rc = RTR0MemObjLockUser(&MemObj, (RTR3PTR)pv, u32Size, fAccess, NIL_RTR0PROCESS); + else + rc = RTR0MemObjLockKernel(&MemObj, pv, u32Size, fAccess); + if (RT_SUCCESS(rc)) + *ppvCtx = MemObj; + else + *ppvCtx = NIL_RTR0MEMOBJ; + +#endif + + return rc; +} + +void vbglUnlockLinear (void *pvCtx, void *pv, uint32_t u32Size) +{ +#ifdef RT_OS_WINDOWS + PMDL pMdl = (PMDL)pvCtx; + + Assert(pMdl); + if (pMdl != NULL) + { + MmUnlockPages (pMdl); + IoFreeMdl (pMdl); + } + +#else + RTR0MEMOBJ MemObj = (RTR0MEMOBJ)pvCtx; + int rc = RTR0MemObjFree(MemObj, false); + AssertRC(rc); + +#endif + + NOREF(pv); + NOREF(u32Size); +} + +#else /* !VBGL_VBOXGUEST */ + +# ifdef RT_OS_OS2 +# include /* for VBOXGUESTOS2IDCCONNECT */ +RT_C_DECLS_BEGIN +/* + * On OS/2 we'll do the connecting in the assembly code of the + * client driver, exporting a g_VBoxGuestIDC symbol containing + * the connection information obtained from the 16-bit IDC. + */ +extern VBOXGUESTOS2IDCCONNECT g_VBoxGuestIDC; +RT_C_DECLS_END +# endif + +# if !defined(RT_OS_OS2) \ + && !defined(RT_OS_WINDOWS) +RT_C_DECLS_BEGIN +extern DECLVBGL(void *) VBoxGuestIDCOpen (uint32_t *pu32Version); +extern DECLVBGL(void) VBoxGuestIDCClose (void *pvOpaque); +extern DECLVBGL(int) VBoxGuestIDCCall (void *pvOpaque, unsigned int iCmd, void *pvData, size_t cbSize, size_t *pcbReturn); +RT_C_DECLS_END +# endif + +bool vbglDriverIsOpened (VBGLDRIVER *pDriver) +{ +# ifdef RT_OS_WINDOWS + return pDriver->pFileObject != NULL; +# elif defined (RT_OS_OS2) + return pDriver->u32Session != UINT32_MAX && pDriver->u32Session != 0; +# else + return pDriver->pvOpaque != NULL; +# endif +} + +int vbglDriverOpen (VBGLDRIVER *pDriver) +{ +# ifdef RT_OS_WINDOWS + UNICODE_STRING uszDeviceName; + RtlInitUnicodeString (&uszDeviceName, L"\\Device\\VBoxGuest"); + + PDEVICE_OBJECT pDeviceObject = NULL; + PFILE_OBJECT pFileObject = NULL; + + NTSTATUS rc = IoGetDeviceObjectPointer (&uszDeviceName, FILE_ALL_ACCESS, + &pFileObject, &pDeviceObject); + + if (NT_SUCCESS (rc)) + { + Log(("vbglDriverOpen VBoxGuest successful pDeviceObject=%x\n", pDeviceObject)); + pDriver->pDeviceObject = pDeviceObject; + pDriver->pFileObject = pFileObject; + return VINF_SUCCESS; + } + /** @todo return RTErrConvertFromNtStatus(rc)! */ + Log(("vbglDriverOpen VBoxGuest failed with ntstatus=%x\n", rc)); + return rc; + +# elif defined (RT_OS_OS2) + /* + * Just check whether the connection was made or not. + */ + if ( g_VBoxGuestIDC.u32Version == VMMDEV_VERSION + && VALID_PTR(g_VBoxGuestIDC.u32Session) + && VALID_PTR(g_VBoxGuestIDC.pfnServiceEP)) + { + pDriver->u32Session = g_VBoxGuestIDC.u32Session; + return VINF_SUCCESS; + } + pDriver->u32Session = UINT32_MAX; + Log(("vbglDriverOpen: failed\n")); + return VERR_FILE_NOT_FOUND; + +# else + uint32_t u32VMMDevVersion; + pDriver->pvOpaque = VBoxGuestIDCOpen (&u32VMMDevVersion); + if ( pDriver->pvOpaque + && u32VMMDevVersion == VMMDEV_VERSION) + return VINF_SUCCESS; + + Log(("vbglDriverOpen: failed\n")); + return VERR_FILE_NOT_FOUND; +# endif +} + +# ifdef RT_OS_WINDOWS +static NTSTATUS vbglDriverIOCtlCompletion (IN PDEVICE_OBJECT DeviceObject, + IN PIRP Irp, + IN PVOID Context) +{ + Log(("VBGL completion %x\n", Irp)); + + KEVENT *pEvent = (KEVENT *)Context; + KeSetEvent (pEvent, IO_NO_INCREMENT, FALSE); + + return STATUS_MORE_PROCESSING_REQUIRED; +} +# endif + +int vbglDriverIOCtl (VBGLDRIVER *pDriver, uint32_t u32Function, void *pvData, uint32_t cbData) +{ + Log(("vbglDriverIOCtl: pDriver: %p, Func: %x, pvData: %p, cbData: %d\n", pDriver, u32Function, pvData, cbData)); + +# ifdef RT_OS_WINDOWS + KEVENT Event; + + KeInitializeEvent (&Event, NotificationEvent, FALSE); + + /* Have to use the IoAllocateIRP method because this code is generic and + * must work in any thread context. + * The IoBuildDeviceIoControlRequest, which was used here, does not work + * when APCs are disabled, for example. + */ + PIRP irp = IoAllocateIrp (pDriver->pDeviceObject->StackSize, FALSE); + + Log(("vbglDriverIOCtl: irp %p, IRQL = %d\n", irp, KeGetCurrentIrql())); + + if (irp == NULL) + { + Log(("vbglDriverIOCtl: IRP allocation failed!\n")); + return VERR_NO_MEMORY; + } + + /* + * Setup the IRP_MJ_DEVICE_CONTROL IRP. + */ + + PIO_STACK_LOCATION nextStack = IoGetNextIrpStackLocation (irp); + + nextStack->MajorFunction = IRP_MJ_DEVICE_CONTROL; + nextStack->MinorFunction = 0; + nextStack->DeviceObject = pDriver->pDeviceObject; + nextStack->Parameters.DeviceIoControl.OutputBufferLength = cbData; + nextStack->Parameters.DeviceIoControl.InputBufferLength = cbData; + nextStack->Parameters.DeviceIoControl.IoControlCode = u32Function; + nextStack->Parameters.DeviceIoControl.Type3InputBuffer = pvData; + + irp->AssociatedIrp.SystemBuffer = pvData; /* Output buffer. */ + irp->MdlAddress = NULL; + + /* A completion routine is required to signal the Event. */ + IoSetCompletionRoutine (irp, vbglDriverIOCtlCompletion, &Event, TRUE, TRUE, TRUE); + + NTSTATUS rc = IoCallDriver (pDriver->pDeviceObject, irp); + + if (NT_SUCCESS (rc)) + { + /* Wait the event to be signalled by the completion routine. */ + KeWaitForSingleObject (&Event, + Executive, + KernelMode, + FALSE, + NULL); + + rc = irp->IoStatus.Status; + + Log(("vbglDriverIOCtl: wait completed IRQL = %d\n", KeGetCurrentIrql())); + } + + IoFreeIrp (irp); + + if (rc != STATUS_SUCCESS) + Log(("vbglDriverIOCtl: ntstatus=%x\n", rc)); + + if (NT_SUCCESS(rc)) + return VINF_SUCCESS; + if (rc == STATUS_INVALID_PARAMETER) + return VERR_INVALID_PARAMETER; + if (rc == STATUS_INVALID_BUFFER_SIZE) + return VERR_OUT_OF_RANGE; + return VERR_VBGL_IOCTL_FAILED; + +# elif defined (RT_OS_OS2) + if ( pDriver->u32Session + && pDriver->u32Session == g_VBoxGuestIDC.u32Session) + return g_VBoxGuestIDC.pfnServiceEP(pDriver->u32Session, u32Function, pvData, cbData, NULL); + + Log(("vbglDriverIOCtl: No connection\n")); + return VERR_WRONG_ORDER; + +# else + return VBoxGuestIDCCall(pDriver->pvOpaque, u32Function, pvData, cbData, NULL); +# endif +} + +void vbglDriverClose (VBGLDRIVER *pDriver) +{ +# ifdef RT_OS_WINDOWS + Log(("vbglDriverClose pDeviceObject=%x\n", pDriver->pDeviceObject)); + ObDereferenceObject (pDriver->pFileObject); + pDriver->pFileObject = NULL; + pDriver->pDeviceObject = NULL; + +# elif defined (RT_OS_OS2) + pDriver->u32Session = 0; + +# else + VBoxGuestIDCClose (pDriver->pvOpaque); + pDriver->pvOpaque = NULL; +# endif +} + +#endif /* !VBGL_VBOXGUEST */ + --- linux-raspi2-4.2.0.orig/ubuntu/vbox/vboxguest/SysHlp.h +++ linux-raspi2-4.2.0/ubuntu/vbox/vboxguest/SysHlp.h @@ -0,0 +1,122 @@ +/* $Id: SysHlp.h $ */ +/** @file + * VBoxGuestLibR0 - System dependent helpers internal header. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + +#ifndef __VBoxGuestLib_SysHlp_h +#define __VBoxGuestLib_SysHlp_h + +#include + +#ifdef RT_OS_WINDOWS +# undef PAGE_SIZE +# undef PAGE_SHIFT +# if (_MSC_VER >= 1400) && !defined(VBOX_WITH_PATCHED_DDK) +# include +# define _InterlockedExchange _InterlockedExchange_StupidDDKVsCompilerCrap +# define _InterlockedExchangeAdd _InterlockedExchangeAdd_StupidDDKVsCompilerCrap +# define _InterlockedCompareExchange _InterlockedCompareExchange_StupidDDKVsCompilerCrap +# define _InterlockedAddLargeStatistic _InterlockedAddLargeStatistic_StupidDDKVsCompilerCrap +# pragma warning(disable : 4163) +RT_C_DECLS_BEGIN +# include +RT_C_DECLS_END +# pragma warning(default : 4163) +# undef _InterlockedExchange +# undef _InterlockedExchangeAdd +# undef _InterlockedCompareExchange +# undef _InterlockedAddLargeStatistic +# else +RT_C_DECLS_BEGIN +# include +RT_C_DECLS_END +# endif +/* XP DDK #defines ExFreePool to ExFreePoolWithTag. The latter does not exist on NT4, so... + * The same for ExAllocatePool. + */ +#undef ExAllocatePool +#undef ExFreePool +#endif + +typedef struct _VBGLDRIVER +{ +#ifdef RT_OS_WINDOWS + PDEVICE_OBJECT pDeviceObject; + PFILE_OBJECT pFileObject; +#elif defined (RT_OS_OS2) + uint32_t u32Session; /**< just for sanity checking. */ +#else /* PORTME */ + void *pvOpaque; +#endif +} VBGLDRIVER; + +int vbglLockLinear (void **ppvCtx, void *pv, uint32_t u32Size, bool fWriteAccess, uint32_t fFlags); +void vbglUnlockLinear (void *pvCtx, void *pv, uint32_t u32Size); + + +#ifndef VBGL_VBOXGUEST + +/** + * Open VBoxGuest driver. + * + * @param pDriver Pointer to the driver structure. + * + * @return VBox error code + */ +int vbglDriverOpen (VBGLDRIVER *pDriver); + +/** + * Answers whether the VBoxGuest driver is opened + * + * @param pDriver Pointer to the driver structure. + * + * @return true - if opened, false - otherwise + */ +bool vbglDriverIsOpened (VBGLDRIVER *pDriver); + +/** + * Call VBoxGuest driver. + * + * @param pDriver Pointer to the driver structure. + * @param u32Function Function code. + * @param pvData Pointer to supplied in/out data buffer. + * @param cbData Size of data buffer. + * + * @return VBox error code + */ +int vbglDriverIOCtl (VBGLDRIVER *pDriver, uint32_t u32Function, void *pvData, uint32_t cbData); + +/** + * Close VBoxGuest driver. + * + * @param pDriver Pointer to the driver structure. + * + * @return VBox error code + */ +void vbglDriverClose (VBGLDRIVER *pDriver); + +#endif + +#endif /* !__VBoxGuestLib_SysHlp_h */ + --- linux-raspi2-4.2.0.orig/ubuntu/vbox/vboxguest/VBGLInternal.h +++ linux-raspi2-4.2.0/ubuntu/vbox/vboxguest/VBGLInternal.h @@ -0,0 +1,171 @@ +/* $Id: VBGLInternal.h $ */ +/** @file + * VBoxGuestLibR0 - Internal header. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + +#ifndef ___VBoxGuestLib_VBGLInternal_h +#define ___VBoxGuestLib_VBGLInternal_h + +#include +#include +#include + +#include + + +#ifdef RT_OS_WINDOWS /** @todo dprintf() -> Log() */ +# if (defined(DEBUG) && !defined(NO_LOGGING)) || defined(LOG_ENABLED) +# define dprintf(a) RTLogBackdoorPrintf a +# else +# define dprintf(a) do {} while (0) +# endif +#else +# define dprintf(a) Log(a) +#endif + +#include "SysHlp.h" + +#pragma pack(4) /** @todo r=bird: What do we need packing for here? None of these structures are shared between drivers AFAIK. */ + +struct _VBGLPHYSHEAPBLOCK; +typedef struct _VBGLPHYSHEAPBLOCK VBGLPHYSHEAPBLOCK; +struct _VBGLPHYSHEAPCHUNK; +typedef struct _VBGLPHYSHEAPCHUNK VBGLPHYSHEAPCHUNK; + +#ifndef VBGL_VBOXGUEST +struct VBGLHGCMHANDLEDATA +{ + uint32_t fAllocated; + VBGLDRIVER driver; +}; +#endif + +enum VbglLibStatus +{ + VbglStatusNotInitialized = 0, + VbglStatusInitializing, + VbglStatusReady +}; + +/** + * Global VBGL ring-0 data. + * Lives in VbglR0Init.cpp. + */ +typedef struct _VBGLDATA +{ + enum VbglLibStatus status; + + VBGLIOPORT portVMMDev; + + VMMDevMemory *pVMMDevMemory; + + /** + * Physical memory heap data. + * @{ + */ + + VBGLPHYSHEAPBLOCK *pFreeBlocksHead; + VBGLPHYSHEAPBLOCK *pAllocBlocksHead; + VBGLPHYSHEAPCHUNK *pChunkHead; + + RTSEMFASTMUTEX mutexHeap; + /** @} */ + + /** + * The host version data. + */ + VMMDevReqHostVersion hostVersion; + + +#ifndef VBGL_VBOXGUEST + /** + * Handle for the main driver instance. + * @{ + */ + + RTSEMMUTEX mutexDriverInit; + + VBGLDRIVER driver; + + /** @} */ + + /** + * Fast heap for HGCM handles data. + * @{ + */ + + RTSEMFASTMUTEX mutexHGCMHandle; + + struct VBGLHGCMHANDLEDATA aHGCMHandleData[64]; + + /** @} */ +#endif +} VBGLDATA; + + +#pragma pack() + +#ifndef VBGL_DECL_DATA +extern VBGLDATA g_vbgldata; +#endif + +/** + * Internal macro for checking whether we can pass physical page lists to the + * host. + * + * ASSUMES that vbglR0Enter has been called already. + * + * @param a_fLocked For the windows shared folders workarounds. + * + * @remarks Disabled the PageList feature for locked memory on Windows, + * because a new MDL is created by VBGL to get the page addresses + * and the pages from the MDL are marked as dirty when they should not. + */ +#if defined(RT_OS_WINDOWS) +# define VBGLR0_CAN_USE_PHYS_PAGE_LIST(a_fLocked) \ + ( !(a_fLocked) && (g_vbgldata.hostVersion.features & VMMDEV_HVF_HGCM_PHYS_PAGE_LIST) ) +#else +# define VBGLR0_CAN_USE_PHYS_PAGE_LIST(a_fLocked) \ + ( !!(g_vbgldata.hostVersion.features & VMMDEV_HVF_HGCM_PHYS_PAGE_LIST) ) +#endif + +int vbglR0Enter (void); + +#ifdef VBOX_WITH_HGCM +# ifndef VBGL_VBOXGUEST +int vbglR0HGCMInit (void); +int vbglR0HGCMTerminate (void); +# endif +#endif /* VBOX_WITH_HGCM */ + +#ifndef VBGL_VBOXGUEST +/** + * Get a handle to the main VBoxGuest driver. + * @returns VERR_TRY_AGAIN if the main driver has not yet been loaded. + */ +int vbglGetDriver(VBGLDRIVER **ppDriver); +#endif + +#endif /* !___VBoxGuestLib_VBGLInternal_h */ + --- linux-raspi2-4.2.0.orig/ubuntu/vbox/vboxguest/VBox/log-vbox.c +++ linux-raspi2-4.2.0/ubuntu/vbox/vboxguest/VBox/log-vbox.c @@ -0,0 +1,506 @@ +/* $Id: log-vbox.cpp $ */ +/** @file + * VirtualBox Runtime - Logging configuration. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + +/** @page pg_rtlog Runtime - Logging + * + * VBox uses the IPRT logging system which supports group level flags and multiple + * destinations. The GC logging is making it even more interesting since GC logging will + * have to be buffered and written when back in host context. + * + * [more later] + * + * + * @section sec_logging_destination The Destination Specifier. + * + * The {logger-env-base}_DEST environment variable can be used to specify where + * the log output goes. The following specifiers are recognized: + * + * - file=\ + * This sets the logger output filename to \. Not formatting + * or anything is supported. Each logger specifies a default name if + * file logging should be enabled by default. + * + * - nofile + * This disables the file output. + * + * - stdout + * Enables logger output to stdout. + * + * - nostdout + * Disables logger output to stdout. + * + * - stderr + * Enables logger output to stderr. + * + * - nostderr + * Disables logger output to stderr. + * + * - debugger + * Enables logger output to native debugger. (Win32/64 only) + * + * - nodebugger + * Disables logger output to native debugger. (Win32/64 only) + * + * - user + * Enables logger output to special backdoor if in guest r0. + * + * - nodebugger + * Disables logger output to special user stream. + * + * + * + * @section sec_logging_destination The Group Specifier. + * + * The {logger-env-base} environment variable can be used to specify which + * logger groups to enable and which to disable. By default all groups are + * disabled. For your convenience this specifier is case in-sensitive (ASCII). + * + * The specifier is evaluated from left to right. + * + * [more later] + * + * The groups settings can be reprogrammed during execution using the + * RTLogGroupSettings() command and a group specifier. + * + * + * + * @section sec_logging_default The Default Logger + * + * The default logger uses VBOX_LOG_DEST as destination specifier. File output is + * enabled by default and goes to a file "./VBox-\.log". + * + * The default logger have all groups turned off by default to force the developer + * to be careful with what log information to collect - logging everything is + * generally NOT a good idea. + * + * The log groups of the default logger can be found in the LOGGROUP in enum. The + * VBOX_LOG environment variable and the .log debugger command can be used to + * configure the groups. + * + * Each group have flags in addition to the enable/disable flag. These flags can + * be appended to the group name using dot separators. The flags correspond to + * RTLOGGRPFLAGS and have a short and a long version: + * + * - e - Enabled: Whether the group is enabled at all. + * - l - Level2: Level-2 logging. + * - f - Flow: Execution flow logging (entry messages) + * - s - Sander: Special Sander logging messages. + * - b - Bird: Special Bird logging messages. + * + * @todo Update this section... + * + * Example: + * + * VBOX_LOG=+all+pgm.e.s.b.z.l-qemu + * + * Space and ';' separators are allowed: + * + * VBOX_LOG=+all +pgm.e.s.b.z.l ; - qemu + * + */ + + +/******************************************************************************* +* Header Files * +*******************************************************************************/ +#ifdef IN_RING3 +# if defined(RT_OS_WINDOWS) +# include +# elif defined(RT_OS_LINUX) +# include +# elif defined(RT_OS_FREEBSD) +# include +# include +# include +# include +# include +# elif defined(RT_OS_HAIKU) +# include +# elif defined(RT_OS_SOLARIS) +# define _STRUCTURED_PROC 1 +# undef _FILE_OFFSET_BITS /* procfs doesn't like this */ +# include +# include +# elif defined(RT_OS_OS2) +# include +# endif +#endif + +#include +#include +#include +#include +#ifdef IN_RING3 +# include +# include +# include +# include +# include +# include +# include +#endif +#if defined(IN_RING0) && defined(RT_OS_DARWIN) +# include +# include +#endif + + +/******************************************************************************* +* Global Variables * +*******************************************************************************/ +/** The default logger. */ +static PRTLOGGER g_pLogger = NULL; +/** The default logger groups. + * This must match LOGGROUP! */ +static const char *g_apszGroups[] = +VBOX_LOGGROUP_NAMES; + + +/** + * Creates the default logger instance for a VBox process. + * + * @returns Pointer to the logger instance. + */ +RTDECL(PRTLOGGER) RTLogDefaultInit(void) +{ + /* + * Initialize the default logger instance. + * Take care to do this once and not recursively. + */ + static volatile uint32_t fInitializing = 0; + PRTLOGGER pLogger; + int rc; + + if (g_pLogger || !ASMAtomicCmpXchgU32(&fInitializing, 1, 0)) + return g_pLogger; + +#ifdef IN_RING3 + /* + * Assert the group definitions. + */ +#define ASSERT_LOG_GROUP(grp) ASSERT_LOG_GROUP2(LOG_GROUP_##grp, #grp) +#define ASSERT_LOG_GROUP2(def, str) \ + do { if (strcmp(g_apszGroups[def], str)) {printf("%s='%s' expects '%s'\n", #def, g_apszGroups[def], str); RTAssertDoPanic(); } } while (0) + ASSERT_LOG_GROUP(DEFAULT); + ASSERT_LOG_GROUP(AUDIO_MIXER); + ASSERT_LOG_GROUP(AUDIO_MIXER_BUFFER); + ASSERT_LOG_GROUP(CFGM); + ASSERT_LOG_GROUP(CPUM); + ASSERT_LOG_GROUP(CSAM); + ASSERT_LOG_GROUP(DBGC); + ASSERT_LOG_GROUP(DBGF); + ASSERT_LOG_GROUP(DBGF_INFO); + ASSERT_LOG_GROUP(DEV); + ASSERT_LOG_GROUP(DEV_AC97); + ASSERT_LOG_GROUP(DEV_ACPI); + ASSERT_LOG_GROUP(DEV_APIC); + ASSERT_LOG_GROUP(DEV_FDC); + ASSERT_LOG_GROUP(DEV_HDA); + ASSERT_LOG_GROUP(DEV_HDA_CODEC); + ASSERT_LOG_GROUP(DEV_HPET); + ASSERT_LOG_GROUP(DEV_IDE); + ASSERT_LOG_GROUP(DEV_KBD); + ASSERT_LOG_GROUP(DEV_LPC); + ASSERT_LOG_GROUP(DEV_NE2000); + ASSERT_LOG_GROUP(DEV_PC); + ASSERT_LOG_GROUP(DEV_PC_ARCH); + ASSERT_LOG_GROUP(DEV_PC_BIOS); + ASSERT_LOG_GROUP(DEV_PCI); + ASSERT_LOG_GROUP(DEV_PCNET); + ASSERT_LOG_GROUP(DEV_PIC); + ASSERT_LOG_GROUP(DEV_PIT); + ASSERT_LOG_GROUP(DEV_RTC); + ASSERT_LOG_GROUP(DEV_SB16); + ASSERT_LOG_GROUP(DEV_SERIAL); + ASSERT_LOG_GROUP(DEV_SMC); + ASSERT_LOG_GROUP(DEV_VGA); + ASSERT_LOG_GROUP(DEV_VMM); + ASSERT_LOG_GROUP(DEV_VMM_STDERR); + ASSERT_LOG_GROUP(DIS); + ASSERT_LOG_GROUP(DRV); + ASSERT_LOG_GROUP(DRV_ACPI); + ASSERT_LOG_GROUP(DRV_AUDIO); + ASSERT_LOG_GROUP(DRV_BLOCK); + ASSERT_LOG_GROUP(DRV_FLOPPY); + ASSERT_LOG_GROUP(DRV_HOST_AUDIO); + ASSERT_LOG_GROUP(DRV_HOST_DVD); + ASSERT_LOG_GROUP(DRV_HOST_FLOPPY); + ASSERT_LOG_GROUP(DRV_ISO); + ASSERT_LOG_GROUP(DRV_KBD_QUEUE); + ASSERT_LOG_GROUP(DRV_MOUSE_QUEUE); + ASSERT_LOG_GROUP(DRV_NAT); + ASSERT_LOG_GROUP(DRV_RAW_IMAGE); + ASSERT_LOG_GROUP(DRV_TUN); + ASSERT_LOG_GROUP(DRV_USBPROXY); + ASSERT_LOG_GROUP(DRV_VBOXHDD); + ASSERT_LOG_GROUP(DRV_VRDE_AUDIO); + ASSERT_LOG_GROUP(DRV_VSWITCH); + ASSERT_LOG_GROUP(DRV_VUSB); + ASSERT_LOG_GROUP(EM); + ASSERT_LOG_GROUP(GUI); + ASSERT_LOG_GROUP(HGCM); + ASSERT_LOG_GROUP(HM); + ASSERT_LOG_GROUP(IOM); + ASSERT_LOG_GROUP(LWIP); + ASSERT_LOG_GROUP(MAIN); + ASSERT_LOG_GROUP(MM); + ASSERT_LOG_GROUP(MM_HEAP); + ASSERT_LOG_GROUP(MM_HYPER); + ASSERT_LOG_GROUP(MM_HYPER_HEAP); + ASSERT_LOG_GROUP(MM_PHYS); + ASSERT_LOG_GROUP(MM_POOL); + ASSERT_LOG_GROUP(NAT_SERVICE); + ASSERT_LOG_GROUP(NET_SERVICE); + ASSERT_LOG_GROUP(PATM); + ASSERT_LOG_GROUP(PDM); + ASSERT_LOG_GROUP(PDM_DEVICE); + ASSERT_LOG_GROUP(PDM_DRIVER); + ASSERT_LOG_GROUP(PDM_LDR); + ASSERT_LOG_GROUP(PDM_QUEUE); + ASSERT_LOG_GROUP(PGM); + ASSERT_LOG_GROUP(PGM_POOL); + ASSERT_LOG_GROUP(REM); + ASSERT_LOG_GROUP(REM_DISAS); + ASSERT_LOG_GROUP(REM_HANDLER); + ASSERT_LOG_GROUP(REM_IOPORT); + ASSERT_LOG_GROUP(REM_MMIO); + ASSERT_LOG_GROUP(REM_PRINTF); + ASSERT_LOG_GROUP(REM_RUN); + ASSERT_LOG_GROUP(SELM); + ASSERT_LOG_GROUP(SSM); + ASSERT_LOG_GROUP(STAM); + ASSERT_LOG_GROUP(SUP); + ASSERT_LOG_GROUP(TM); + ASSERT_LOG_GROUP(TRPM); + ASSERT_LOG_GROUP(VM); + ASSERT_LOG_GROUP(VMM); + ASSERT_LOG_GROUP(VRDP); +#undef ASSERT_LOG_GROUP +#undef ASSERT_LOG_GROUP2 +#endif /* IN_RING3 */ + + /* + * Create the default logging instance. + */ +#ifdef IN_RING3 +# ifndef IN_GUEST + char szExecName[RTPATH_MAX]; + if (!RTProcGetExecutablePath(szExecName, sizeof(szExecName))) + strcpy(szExecName, "VBox"); + RTTIMESPEC TimeSpec; + RTTIME Time; + RTTimeExplode(&Time, RTTimeNow(&TimeSpec)); + rc = RTLogCreate(&pLogger, 0, NULL, "VBOX_LOG", RT_ELEMENTS(g_apszGroups), &g_apszGroups[0], RTLOGDEST_FILE, + "./%04d-%02d-%02d-%02d-%02d-%02d.%03d-%s-%d.log", + Time.i32Year, Time.u8Month, Time.u8MonthDay, Time.u8Hour, Time.u8Minute, Time.u8Second, Time.u32Nanosecond / 10000000, + RTPathFilename(szExecName), RTProcSelf()); + if (RT_SUCCESS(rc)) + { + /* + * Write a log header. + */ + char szBuf[RTPATH_MAX]; + RTTimeSpecToString(&TimeSpec, szBuf, sizeof(szBuf)); + RTLogLoggerEx(pLogger, 0, ~0U, "Log created: %s\n", szBuf); + RTLogLoggerEx(pLogger, 0, ~0U, "Executable: %s\n", szExecName); + + /* executable and arguments - tricky and all platform specific. */ +# if defined(RT_OS_WINDOWS) + RTLogLoggerEx(pLogger, 0, ~0U, "Commandline: %ls\n", GetCommandLineW()); + +# elif defined(RT_OS_SOLARIS) + psinfo_t psi; + char szArgFileBuf[80]; + RTStrPrintf(szArgFileBuf, sizeof(szArgFileBuf), "/proc/%ld/psinfo", (long)getpid()); + FILE* pFile = fopen(szArgFileBuf, "rb"); + if (pFile) + { + if (fread(&psi, sizeof(psi), 1, pFile) == 1) + { +# if 0 /* 100% safe:*/ + RTLogLoggerEx(pLogger, 0, ~0U, "Args: %s\n", psi.pr_psargs); +# else /* probably safe: */ + const char * const *argv = (const char * const *)psi.pr_argv; + for (int iArg = 0; iArg < psi.pr_argc; iArg++) + RTLogLoggerEx(pLogger, 0, ~0U, "Arg[%d]: %s\n", iArg, argv[iArg]); +# endif + + } + fclose(pFile); + } + +# elif defined(RT_OS_LINUX) + FILE *pFile = fopen("/proc/self/cmdline", "r"); + if (pFile) + { + /* braindead */ + unsigned iArg = 0; + int ch; + bool fNew = true; + while (!feof(pFile) && (ch = fgetc(pFile)) != EOF) + { + if (fNew) + { + RTLogLoggerEx(pLogger, 0, ~0U, "Arg[%u]: ", iArg++); + fNew = false; + } + if (ch) + RTLogLoggerEx(pLogger, 0, ~0U, "%c", ch); + else + { + RTLogLoggerEx(pLogger, 0, ~0U, "\n"); + fNew = true; + } + } + if (!fNew) + RTLogLoggerEx(pLogger, 0, ~0U, "\n"); + fclose(pFile); + } + +# elif defined(RT_OS_HAIKU) + team_info info; + if (get_team_info(0, &info) == B_OK) + { + /* there is an info.argc, but no way to know arg boundaries */ + RTLogLoggerEx(pLogger, 0, ~0U, "Commandline: %.64s\n", info.args); + } + +# elif defined(RT_OS_FREEBSD) + /* Retrieve the required length first */ + int aiName[4]; + aiName[0] = CTL_KERN; + aiName[1] = KERN_PROC; + aiName[2] = KERN_PROC_ARGS; /* Introduced in FreeBSD 4.0 */ + aiName[3] = getpid(); + size_t cchArgs = 0; + int rcBSD = sysctl(aiName, RT_ELEMENTS(aiName), NULL, &cchArgs, NULL, 0); + if (cchArgs > 0) + { + char *pszArgFileBuf = (char *)RTMemAllocZ(cchArgs + 1 /* Safety */); + if (pszArgFileBuf) + { + /* Retrieve the argument list */ + rcBSD = sysctl(aiName, RT_ELEMENTS(aiName), pszArgFileBuf, &cchArgs, NULL, 0); + if (!rcBSD) + { + unsigned iArg = 0; + size_t off = 0; + while (off < cchArgs) + { + size_t cchArg = strlen(&pszArgFileBuf[off]); + RTLogLoggerEx(pLogger, 0, ~0U, "Arg[%u]: %s\n", iArg, &pszArgFileBuf[off]); + + /* advance */ + off += cchArg + 1; + iArg++; + } + } + RTMemFree(pszArgFileBuf); + } + } + +# elif defined(RT_OS_OS2) || defined(RT_OS_DARWIN) + /* commandline? */ +# else +# error needs porting. +# endif + } + +# else /* IN_GUEST */ + /* The user destination is backdoor logging. */ + rc = RTLogCreate(&pLogger, 0, NULL, "VBOX_LOG", RT_ELEMENTS(g_apszGroups), &g_apszGroups[0], RTLOGDEST_USER, "VBox.log"); +# endif /* IN_GUEST */ + +#else /* IN_RING0 */ + + /* Some platforms has trouble allocating memory with interrupts and/or + preemption disabled. Check and fail before we panic. */ +# if defined(RT_OS_DARWIN) + if ( !ASMIntAreEnabled() + || !RTThreadPreemptIsEnabled(NIL_RTTHREAD)) + return NULL; +# endif + +# ifndef IN_GUEST + rc = RTLogCreate(&pLogger, 0, NULL, "VBOX_LOG", RT_ELEMENTS(g_apszGroups), &g_apszGroups[0], RTLOGDEST_FILE, "VBox-ring0.log"); +# else /* IN_GUEST */ + rc = RTLogCreate(&pLogger, 0, NULL, "VBOX_LOG", RT_ELEMENTS(g_apszGroups), &g_apszGroups[0], RTLOGDEST_USER, "VBox-ring0.log"); +# endif /* IN_GUEST */ + if (RT_SUCCESS(rc)) + { + /* + * This is where you set your ring-0 logging preferences. + * + * On platforms which don't differ between debugger and kernel + * log printing, STDOUT is gonna be a stub and the DEBUGGER + * destination is the one doing all the work. On platforms + * that do differ (like Darwin), STDOUT is the kernel log. + */ +# if defined(DEBUG_bird) + /*RTLogGroupSettings(pLogger, "all=~0 -default.l6.l5.l4.l3");*/ + RTLogFlags(pLogger, "enabled unbuffered pid tid"); +# ifndef IN_GUEST + pLogger->fDestFlags |= RTLOGDEST_DEBUGGER | RTLOGDEST_STDOUT; +# endif +# endif +# if defined(DEBUG_sandervl) && !defined(IN_GUEST) + RTLogGroupSettings(pLogger, "+all"); + RTLogFlags(pLogger, "enabled unbuffered"); + pLogger->fDestFlags |= RTLOGDEST_DEBUGGER; +# endif +# if defined(DEBUG_ramshankar) /* Guest ring-0 as well */ + RTLogGroupSettings(pLogger, "+all.e.l.f"); + RTLogFlags(pLogger, "enabled unbuffered"); + pLogger->fDestFlags |= RTLOGDEST_DEBUGGER; +# endif +# if defined(DEBUG_aleksey) /* Guest ring-0 as well */ + RTLogGroupSettings(pLogger, "net_flt_drv.e.l.f.l3.l4.l5 +net_adp_drv.e.l.f.l3.l4.l5"); + RTLogFlags(pLogger, "enabled unbuffered"); + pLogger->fDestFlags |= RTLOGDEST_DEBUGGER | RTLOGDEST_STDOUT; +# endif +# if defined(DEBUG_andy) /* Guest ring-0 as well */ + RTLogGroupSettings(pLogger, "+all.e.l.f"); + RTLogFlags(pLogger, "enabled unbuffered pid tid"); + pLogger->fDestFlags |= RTLOGDEST_DEBUGGER | RTLOGDEST_STDOUT; +# endif +# if defined(DEBUG_misha) /* Guest ring-0 as well */ + RTLogFlags(pLogger, "enabled unbuffered"); + pLogger->fDestFlags |= RTLOGDEST_DEBUGGER; +# endif +# if defined(DEBUG_michael) && defined(IN_GUEST) + RTLogGroupSettings(pLogger, "+all.e.l.f"); + RTLogFlags(pLogger, "enabled unbuffered"); + pLogger->fDestFlags |= RTLOGDEST_DEBUGGER | RTLOGDEST_STDOUT; +# endif +# if 0 /* vboxdrv logging - ATTENTION: this is what we're referring to guys! Change to '# if 1'. */ + RTLogGroupSettings(pLogger, "all=~0 -default.l6.l5.l4.l3"); + RTLogFlags(pLogger, "enabled unbuffered tid"); + pLogger->fDestFlags |= RTLOGDEST_DEBUGGER | RTLOGDEST_STDOUT; +# endif + } +#endif /* IN_RING0 */ + return g_pLogger = RT_SUCCESS(rc) ? pLogger : NULL; +} --- linux-raspi2-4.2.0.orig/ubuntu/vbox/vboxguest/VBox/logbackdoor.c +++ linux-raspi2-4.2.0/ubuntu/vbox/vboxguest/VBox/logbackdoor.c @@ -0,0 +1,93 @@ +/* $Id: logbackdoor.cpp $ */ +/** @file + * VirtualBox Runtime - Guest Backdoor Logging. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + +/******************************************************************************* +* Header Files * +*******************************************************************************/ +#include +#include "internal/iprt.h" +#include +#include +#ifdef IN_GUEST_R3 +# include +#endif + + +/******************************************************************************* +* Internal Functions * +*******************************************************************************/ +static DECLCALLBACK(size_t) rtLogBackdoorOutput(void *pv, const char *pachChars, size_t cbChars); + + +RTDECL(size_t) RTLogBackdoorPrintf(const char *pszFormat, ...) +{ + va_list args; + size_t cb; + + va_start(args, pszFormat); + cb = RTLogBackdoorPrintfV(pszFormat, args); + va_end(args); + + return cb; +} + +RT_EXPORT_SYMBOL(RTLogBackdoorPrintf); + + +RTDECL(size_t) RTLogBackdoorPrintfV(const char *pszFormat, va_list args) +{ + return RTLogFormatV(rtLogBackdoorOutput, NULL, pszFormat, args); +} + +RT_EXPORT_SYMBOL(RTLogBackdoorPrintfV); + + +/** + * Callback for RTLogFormatV which writes to the backdoor. + * See PFNLOGOUTPUT() for details. + */ +static DECLCALLBACK(size_t) rtLogBackdoorOutput(void *pv, const char *pachChars, size_t cbChars) +{ + RTLogWriteUser(pachChars, cbChars); + return cbChars; +} + + +RTDECL(void) RTLogWriteUser(const char *pch, size_t cb) +{ +#ifdef IN_GUEST_R3 + VbglR3WriteLog(pch, cb); +#else /* !IN_GUEST_R3 */ + const uint8_t *pau8 = (const uint8_t *)pch; + if (cb > 1) + ASMOutStrU8(RTLOG_DEBUG_PORT, pau8, cb); + else if (cb) + ASMOutU8(RTLOG_DEBUG_PORT, *pau8); +#endif /* !IN_GUEST_R3 */ +} + +RT_EXPORT_SYMBOL(RTLogWriteUser); + --- linux-raspi2-4.2.0.orig/ubuntu/vbox/vboxguest/VBoxGuest-linux.c +++ linux-raspi2-4.2.0/ubuntu/vbox/vboxguest/VBoxGuest-linux.c @@ -0,0 +1,1081 @@ +/* $Rev: 100489 $ */ +/** @file + * VBoxGuest - Linux specifics. + * + * Note. Unfortunately, the difference between this and SUPDrv-linux.c is + * a little bit too big to be helpful. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + */ + +/******************************************************************************* +* Header Files * +*******************************************************************************/ +#define LOG_GROUP LOG_GROUP_SUP_DRV + +#include "the-linux-kernel.h" + +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 15) +# define VBOXGUEST_WITH_INPUT_DRIVER +#endif + +#include "VBoxGuestInternal.h" +#ifdef VBOXGUEST_WITH_INPUT_DRIVER +# include +#endif +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + + +/******************************************************************************* +* Defined Constants And Macros * +*******************************************************************************/ +/** The device name. */ +#define DEVICE_NAME "vboxguest" +/** The device name for the device node open to everyone.. */ +#define DEVICE_NAME_USER "vboxuser" +/** The name of the PCI driver */ +#define DRIVER_NAME DEVICE_NAME + + +/* 2.4.x compatibility macros that may or may not be defined. */ +#ifndef IRQ_RETVAL +# define irqreturn_t void +# define IRQ_RETVAL(n) +#endif + + +/******************************************************************************* +* Internal Functions * +*******************************************************************************/ +static void vboxguestLinuxTermPci(struct pci_dev *pPciDev); +static int vboxguestLinuxModInit(void); +static void vboxguestLinuxModExit(void); +static int vboxguestLinuxOpen(struct inode *pInode, struct file *pFilp); +static int vboxguestLinuxRelease(struct inode *pInode, struct file *pFilp); +#ifdef HAVE_UNLOCKED_IOCTL +static long vboxguestLinuxIOCtl(struct file *pFilp, unsigned int uCmd, unsigned long ulArg); +#else +static int vboxguestLinuxIOCtl(struct inode *pInode, struct file *pFilp, unsigned int uCmd, unsigned long ulArg); +#endif +static int vboxguestFAsync(int fd, struct file *pFile, int fOn); +static unsigned int vboxguestPoll(struct file *pFile, poll_table *pPt); +static ssize_t vboxguestRead(struct file *pFile, char *pbBuf, size_t cbRead, loff_t *poff); + + +/******************************************************************************* +* Global Variables * +*******************************************************************************/ +/** + * Device extention & session data association structure. + */ +static VBOXGUESTDEVEXT g_DevExt; +/** The PCI device. */ +static struct pci_dev *g_pPciDev = NULL; +/** The base of the I/O port range. */ +static RTIOPORT g_IOPortBase; +/** The base of the MMIO range. */ +static RTHCPHYS g_MMIOPhysAddr = NIL_RTHCPHYS; +/** The size of the MMIO range as seen by PCI. */ +static uint32_t g_cbMMIO; +/** The pointer to the mapping of the MMIO range. */ +static void *g_pvMMIOBase; +/** Wait queue used by polling. */ +static wait_queue_head_t g_PollEventQueue; +/** Asynchronous notification stuff. */ +static struct fasync_struct *g_pFAsyncQueue; +#ifdef VBOXGUEST_WITH_INPUT_DRIVER +/** Pre-allocated mouse status VMMDev request for use in the IRQ + * handler. */ +static VMMDevReqMouseStatus *g_pMouseStatusReq; +#endif +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 0) +/** Whether we've create the logger or not. */ +static volatile bool g_fLoggerCreated; +/** Release logger group settings. */ +static char g_szLogGrp[128]; +/** Release logger flags settings. */ +static char g_szLogFlags[128]; +/** Release logger destination settings. */ +static char g_szLogDst[128]; +# if 0 +/** Debug logger group settings. */ +static char g_szDbgLogGrp[128]; +/** Debug logger flags settings. */ +static char g_szDbgLogFlags[128]; +/** Debug logger destination settings. */ +static char g_szDbgLogDst[128]; +# endif +#endif + +/** The input device handle */ +#ifdef VBOXGUEST_WITH_INPUT_DRIVER +static struct input_dev *g_pInputDevice = NULL; +#endif + +/** The file_operations structure. */ +static struct file_operations g_FileOps = +{ + owner: THIS_MODULE, + open: vboxguestLinuxOpen, + release: vboxguestLinuxRelease, +#ifdef HAVE_UNLOCKED_IOCTL + unlocked_ioctl: vboxguestLinuxIOCtl, +#else + ioctl: vboxguestLinuxIOCtl, +#endif + fasync: vboxguestFAsync, + read: vboxguestRead, + poll: vboxguestPoll, + llseek: no_llseek, +}; + +/** The miscdevice structure. */ +static struct miscdevice g_MiscDevice = +{ + minor: MISC_DYNAMIC_MINOR, + name: DEVICE_NAME, + fops: &g_FileOps, +}; + +/** The file_operations structure for the user device. + * @remarks For the time being we'll be using the same implementation as + * /dev/vboxguest here. */ +static struct file_operations g_FileOpsUser = +{ + owner: THIS_MODULE, + open: vboxguestLinuxOpen, + release: vboxguestLinuxRelease, +#ifdef HAVE_UNLOCKED_IOCTL + unlocked_ioctl: vboxguestLinuxIOCtl, +#else + ioctl: vboxguestLinuxIOCtl, +#endif +}; + +/** The miscdevice structure for the user device. */ +static struct miscdevice g_MiscDeviceUser = +{ + minor: MISC_DYNAMIC_MINOR, + name: DEVICE_NAME_USER, + fops: &g_FileOpsUser, +}; + + +/** PCI hotplug structure. */ +static const struct pci_device_id +#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 8, 0) +__devinitdata +#endif +g_VBoxGuestPciId[] = +{ + { + vendor: VMMDEV_VENDORID, + device: VMMDEV_DEVICEID + }, + { + /* empty entry */ + } +}; +MODULE_DEVICE_TABLE(pci, g_VBoxGuestPciId); + +static PVBOXGUESTSESSION g_pKernelSession = NULL; + +/** + * Converts a VBox status code to a linux error code. + * + * @returns corresponding negative linux error code. + * @param rc supdrv error code (SUPDRV_ERR_* defines). + */ +static int vboxguestLinuxConvertToNegErrno(int rc) +{ + if ( rc > -1000 + && rc < 1000) + return -RTErrConvertToErrno(rc); + switch (rc) + { + case VERR_HGCM_SERVICE_NOT_FOUND: return -ESRCH; + case VINF_HGCM_CLIENT_REJECTED: return 0; + case VERR_HGCM_INVALID_CMD_ADDRESS: return -EFAULT; + case VINF_HGCM_ASYNC_EXECUTE: return 0; + case VERR_HGCM_INTERNAL: return -EPROTO; + case VERR_HGCM_INVALID_CLIENT_ID: return -EINVAL; + case VINF_HGCM_SAVE_STATE: return 0; + /* No reason to return this to a guest */ + // case VERR_HGCM_SERVICE_EXISTS: return -EEXIST; + default: + AssertMsgFailed(("Unhandled error code %Rrc\n", rc)); + return -EPROTO; + } +} + + + +/** + * Does the PCI detection and init of the device. + * + * @returns 0 on success, negated errno on failure. + */ +static int vboxguestLinuxProbePci(struct pci_dev *pPciDev, + const struct pci_device_id *id) +{ + int rc; + + NOREF(id); + AssertReturn(!g_pPciDev, -EINVAL); + rc = pci_enable_device(pPciDev); + if (rc >= 0) + { + /* I/O Ports are mandatory, the MMIO bit is not. */ + g_IOPortBase = pci_resource_start(pPciDev, 0); + if (g_IOPortBase != 0) + { + /* + * Map the register address space. + */ + g_MMIOPhysAddr = pci_resource_start(pPciDev, 1); + g_cbMMIO = pci_resource_len(pPciDev, 1); + if (request_mem_region(g_MMIOPhysAddr, g_cbMMIO, DEVICE_NAME) != NULL) + { + g_pvMMIOBase = ioremap(g_MMIOPhysAddr, g_cbMMIO); + if (g_pvMMIOBase) + { + /** @todo why aren't we requesting ownership of the I/O ports as well? */ + g_pPciDev = pPciDev; + return 0; + } + + /* failure cleanup path */ + LogRel((DEVICE_NAME ": ioremap failed; MMIO Addr=%RHp cb=%#x\n", g_MMIOPhysAddr, g_cbMMIO)); + rc = -ENOMEM; + release_mem_region(g_MMIOPhysAddr, g_cbMMIO); + } + else + { + LogRel((DEVICE_NAME ": failed to obtain adapter memory\n")); + rc = -EBUSY; + } + g_MMIOPhysAddr = NIL_RTHCPHYS; + g_cbMMIO = 0; + g_IOPortBase = 0; + } + else + { + LogRel((DEVICE_NAME ": did not find expected hardware resources\n")); + rc = -ENXIO; + } + pci_disable_device(pPciDev); + } + else + LogRel((DEVICE_NAME ": could not enable device: %d\n", rc)); + return rc; +} + + +/** + * Clean up the usage of the PCI device. + */ +static void vboxguestLinuxTermPci(struct pci_dev *pPciDev) +{ + g_pPciDev = NULL; + if (pPciDev) + { + iounmap(g_pvMMIOBase); + g_pvMMIOBase = NULL; + + release_mem_region(g_MMIOPhysAddr, g_cbMMIO); + g_MMIOPhysAddr = NIL_RTHCPHYS; + g_cbMMIO = 0; + + pci_disable_device(pPciDev); + } +} + + +/** Structure for registering the PCI driver. */ +static struct pci_driver g_PciDriver = +{ + name: DRIVER_NAME, + id_table: g_VBoxGuestPciId, + probe: vboxguestLinuxProbePci, + remove: vboxguestLinuxTermPci +}; + + +/** + * Interrupt service routine. + * + * @returns In 2.4 it returns void. + * In 2.6 we indicate whether we've handled the IRQ or not. + * + * @param iIrq The IRQ number. + * @param pvDevId The device ID, a pointer to g_DevExt. + * @param pvRegs Register set. Removed in 2.6.19. + */ +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 19) +static irqreturn_t vboxguestLinuxISR(int iIrrq, void *pvDevId) +#else +static irqreturn_t vboxguestLinuxISR(int iIrrq, void *pvDevId, struct pt_regs *pRegs) +#endif +{ + bool fTaken = VbgdCommonISR(&g_DevExt); + return IRQ_RETVAL(fTaken); +} + + +/** + * Registers the ISR and initializes the poll wait queue. + */ +static int __init vboxguestLinuxInitISR(void) +{ + int rc; + + init_waitqueue_head(&g_PollEventQueue); + rc = request_irq(g_pPciDev->irq, + vboxguestLinuxISR, +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 20) + IRQF_SHARED, +#else + SA_SHIRQ, +#endif + DEVICE_NAME, + &g_DevExt); + if (rc) + { + LogRel((DEVICE_NAME ": could not request IRQ %d: err=%d\n", g_pPciDev->irq, rc)); + return rc; + } + return 0; +} + + +/** + * Deregisters the ISR. + */ +static void vboxguestLinuxTermISR(void) +{ + free_irq(g_pPciDev->irq, &g_DevExt); +} + + +#ifdef VBOXGUEST_WITH_INPUT_DRIVER +/** Calls the kernel IOCtl to report mouse status to the host on behalf of + * our kernel session. */ +static int vboxguestLinuxSetMouseStatus(uint32_t fStatus) +{ + return VbgdCommonIoCtl(VBOXGUEST_IOCTL_SET_MOUSE_STATUS, &g_DevExt, + g_pKernelSession, &fStatus, sizeof(fStatus), + NULL); +} + + +/** Called when the input device is first opened. Sets up absolute reporting. + */ +static int vboxguestOpenInputDevice(struct input_dev *pDev) +{ + NOREF(pDev); + if (RT_FAILURE(vboxguestLinuxSetMouseStatus + ( VMMDEV_MOUSE_GUEST_CAN_ABSOLUTE + | VMMDEV_MOUSE_NEW_PROTOCOL))) + return ENODEV; + return 0; +} + + +/** Called if all open handles to the device are closed, disables absolute + * reporting. */ +static void vboxguestCloseInputDevice(struct input_dev *pDev) +{ + NOREF(pDev); + vboxguestLinuxSetMouseStatus(0); +} + + +/** + * Creates the kernel input device. + */ +static int __init vboxguestLinuxCreateInputDevice(void) +{ + int rc; + + rc = VbglGRAlloc((VMMDevRequestHeader **)&g_pMouseStatusReq, + sizeof(*g_pMouseStatusReq), + VMMDevReq_GetMouseStatus); + if (RT_FAILURE(rc)) + return -ENOMEM; + g_pInputDevice = input_allocate_device(); + if (!g_pInputDevice) + { + VbglGRFree(&g_pMouseStatusReq->header); + return -ENOMEM; + } + g_pInputDevice->id.bustype = BUS_PCI; + g_pInputDevice->id.vendor = VMMDEV_VENDORID; + g_pInputDevice->id.product = VMMDEV_DEVICEID; + g_pInputDevice->id.version = VBOX_SHORT_VERSION; + g_pInputDevice->open = vboxguestOpenInputDevice; + g_pInputDevice->close = vboxguestCloseInputDevice; +# if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 22) + g_pInputDevice->cdev.dev = &g_pPciDev->dev; +# else + g_pInputDevice->dev.parent = &g_pPciDev->dev; +# endif + { + int rc = input_register_device(g_pInputDevice); + if (rc) + { + VbglGRFree(&g_pMouseStatusReq->header); + input_free_device(g_pInputDevice); + return rc; + } + } + /* Do what one of our competitors apparently does as that works. */ + ASMBitSet(g_pInputDevice->evbit, EV_ABS); + ASMBitSet(g_pInputDevice->evbit, EV_KEY); +# ifdef EV_SYN + ASMBitSet(g_pInputDevice->evbit, EV_SYN); +# endif + input_set_abs_params(g_pInputDevice, ABS_X, VMMDEV_MOUSE_RANGE_MIN, + VMMDEV_MOUSE_RANGE_MAX, 0, 0); + input_set_abs_params(g_pInputDevice, ABS_Y, VMMDEV_MOUSE_RANGE_MIN, + VMMDEV_MOUSE_RANGE_MAX, 0, 0); + ASMBitSet(g_pInputDevice->keybit, BTN_MOUSE); + /** @todo this string should be in a header file somewhere. */ + g_pInputDevice->name = "VirtualBox mouse integration"; + return 0; +} + + +/** + * Terminates the kernel input device. + */ +static void vboxguestLinuxTermInputDevice(void) +{ + VbglGRFree(&g_pMouseStatusReq->header); + /* See documentation of input_register_device(): input_free_device() + * should not be called after a device has been registered. */ + input_unregister_device(g_pInputDevice); +} +#endif /* VBOXGUEST_WITH_INPUT_DRIVER */ + + +/** + * Creates the device nodes. + * + * @returns 0 on success, negated errno on failure. + */ +static int __init vboxguestLinuxInitDeviceNodes(void) +{ + int rc; + + /* + * The full feature device node. + */ + rc = misc_register(&g_MiscDevice); + if (rc) + { + LogRel((DEVICE_NAME ": misc_register failed for %s (rc=%d)\n", DEVICE_NAME, rc)); + return rc; + } + + /* + * The device node intended to be accessible by all users. + */ + rc = misc_register(&g_MiscDeviceUser); + if (rc) + { + LogRel((DEVICE_NAME ": misc_register failed for %s (rc=%d)\n", DEVICE_NAME_USER, rc)); + misc_deregister(&g_MiscDevice); + return rc; + } + + return 0; +} + + +/** + * Deregisters the device nodes. + */ +static void vboxguestLinuxTermDeviceNodes(void) +{ + misc_deregister(&g_MiscDevice); + misc_deregister(&g_MiscDeviceUser); +} + + +/** + * Initialize module. + * + * @returns appropriate status code. + */ +static int __init vboxguestLinuxModInit(void) +{ + static const char * const s_apszGroups[] = VBOX_LOGGROUP_NAMES; + PRTLOGGER pRelLogger; + int rc; + + /* + * Initialize IPRT first. + */ + rc = RTR0Init(0); + if (RT_FAILURE(rc)) + { + printk(KERN_ERR DEVICE_NAME ": RTR0Init failed, rc=%d.\n", rc); + return -EINVAL; + } + + /* + * Create the release log. + * (We do that here instead of common code because we want to log + * early failures using the LogRel macro.) + */ + rc = RTLogCreate(&pRelLogger, 0 /* fFlags */, "all", + "VBOX_RELEASE_LOG", RT_ELEMENTS(s_apszGroups), s_apszGroups, + RTLOGDEST_STDOUT | RTLOGDEST_DEBUGGER | RTLOGDEST_USER, NULL); + if (RT_SUCCESS(rc)) + { +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 0) + RTLogGroupSettings(pRelLogger, g_szLogGrp); + RTLogFlags(pRelLogger, g_szLogFlags); + RTLogDestinations(pRelLogger, g_szLogDst); +#endif + RTLogRelSetDefaultInstance(pRelLogger); + } +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 0) + g_fLoggerCreated = true; +#endif + + /* + * Locate and initialize the PCI device. + */ + rc = pci_register_driver(&g_PciDriver); + if (rc >= 0 && g_pPciDev) + { + /* + * Register the interrupt service routine for it. + */ + rc = vboxguestLinuxInitISR(); + if (rc >= 0) + { + /* + * Call the common device extension initializer. + */ +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 0) && defined(RT_ARCH_X86) + VBOXOSTYPE enmOSType = VBOXOSTYPE_Linux26; +#elif LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 0) && defined(RT_ARCH_AMD64) + VBOXOSTYPE enmOSType = VBOXOSTYPE_Linux26_x64; +#elif LINUX_VERSION_CODE >= KERNEL_VERSION(2, 4, 0) && defined(RT_ARCH_X86) + VBOXOSTYPE enmOSType = VBOXOSTYPE_Linux24; +#elif LINUX_VERSION_CODE >= KERNEL_VERSION(2, 4, 0) && defined(RT_ARCH_AMD64) + VBOXOSTYPE enmOSType = VBOXOSTYPE_Linux24_x64; +#else +# warning "huh? which arch + version is this?" + VBOXOSTYPE enmOsType = VBOXOSTYPE_Linux; +#endif + rc = VbgdCommonInitDevExt(&g_DevExt, + g_IOPortBase, + g_pvMMIOBase, + g_cbMMIO, + enmOSType, + VMMDEV_EVENT_MOUSE_POSITION_CHANGED); + if (RT_SUCCESS(rc)) + { + /* + * Create the kernel session for this driver. + */ + rc = VbgdCommonCreateKernelSession(&g_DevExt, + &g_pKernelSession); + if (RT_SUCCESS(rc)) + { + /* + * Create the kernel input device. + */ +#ifdef VBOXGUEST_WITH_INPUT_DRIVER + rc = vboxguestLinuxCreateInputDevice(); + if (rc >= 0) + { +#endif + /* + * Finally, create the device nodes. + */ + rc = vboxguestLinuxInitDeviceNodes(); + if (rc >= 0) + { + /* some useful information for the user but don't show this on the console */ + LogRel((DEVICE_NAME ": misc device minor %d, IRQ %d, I/O port %RTiop, MMIO at %RHp (size 0x%x)\n", + g_MiscDevice.minor, g_pPciDev->irq, g_IOPortBase, g_MMIOPhysAddr, g_cbMMIO)); + printk(KERN_DEBUG DEVICE_NAME ": Successfully loaded version " + VBOX_VERSION_STRING " (interface " RT_XSTR(VMMDEV_VERSION) ")\n"); + return rc; + } + + /* bail out */ +#ifdef VBOXGUEST_WITH_INPUT_DRIVER + vboxguestLinuxTermInputDevice(); + } + else + { + LogRel((DEVICE_NAME ": vboxguestCreateInputDevice failed with rc=%Rrc\n", rc)); + rc = RTErrConvertFromErrno(rc); + } +#endif + VbgdCommonCloseSession(&g_DevExt, g_pKernelSession); + } + VbgdCommonDeleteDevExt(&g_DevExt); + } + else + { + LogRel((DEVICE_NAME ": VbgdCommonInitDevExt failed with rc=%Rrc\n", rc)); + rc = RTErrConvertFromErrno(rc); + } + vboxguestLinuxTermISR(); + } + } + else + { + LogRel((DEVICE_NAME ": PCI device not found, probably running on physical hardware.\n")); + rc = -ENODEV; + } + pci_unregister_driver(&g_PciDriver); + RTLogDestroy(RTLogRelSetDefaultInstance(NULL)); + RTLogDestroy(RTLogSetDefaultInstance(NULL)); + RTR0Term(); + return rc; +} + + +/** + * Unload the module. + */ +static void __exit vboxguestLinuxModExit(void) +{ + /* + * Inverse order of init. + */ + vboxguestLinuxTermDeviceNodes(); +#ifdef VBOXGUEST_WITH_INPUT_DRIVER + vboxguestLinuxTermInputDevice(); +#endif + VbgdCommonCloseSession(&g_DevExt, g_pKernelSession); + VbgdCommonDeleteDevExt(&g_DevExt); + vboxguestLinuxTermISR(); + pci_unregister_driver(&g_PciDriver); + RTLogDestroy(RTLogRelSetDefaultInstance(NULL)); + RTLogDestroy(RTLogSetDefaultInstance(NULL)); + RTR0Term(); +} + + +/** + * Device open. Called on open /dev/vboxdrv + * + * @param pInode Pointer to inode info structure. + * @param pFilp Associated file pointer. + */ +static int vboxguestLinuxOpen(struct inode *pInode, struct file *pFilp) +{ + int rc; + PVBOXGUESTSESSION pSession; + Log((DEVICE_NAME ": pFilp=%p pid=%d/%d %s\n", pFilp, RTProcSelf(), current->pid, current->comm)); + + /* + * Call common code to create the user session. Associate it with + * the file so we can access it in the other methods. + */ + rc = VbgdCommonCreateUserSession(&g_DevExt, &pSession); + if (RT_SUCCESS(rc)) + { + pFilp->private_data = pSession; + if (MINOR(pInode->i_rdev) == g_MiscDeviceUser.minor) + pSession->fUserSession = true; + } + + Log(("vboxguestLinuxOpen: g_DevExt=%p pSession=%p rc=%d/%d (pid=%d/%d %s)\n", + &g_DevExt, pSession, rc, vboxguestLinuxConvertToNegErrno(rc), + RTProcSelf(), current->pid, current->comm)); + return vboxguestLinuxConvertToNegErrno(rc); +} + + +/** + * Close device. + * + * @param pInode Pointer to inode info structure. + * @param pFilp Associated file pointer. + */ +static int vboxguestLinuxRelease(struct inode *pInode, struct file *pFilp) +{ + Log(("vboxguestLinuxRelease: pFilp=%p pSession=%p pid=%d/%d %s\n", + pFilp, pFilp->private_data, RTProcSelf(), current->pid, current->comm)); + +#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 28) + /* This housekeeping was needed in older kernel versions to ensure that + * the file pointer didn't get left on the polling queue. */ + vboxguestFAsync(-1, pFilp, 0); +#endif + VbgdCommonCloseSession(&g_DevExt, (PVBOXGUESTSESSION)pFilp->private_data); + pFilp->private_data = NULL; + return 0; +} + + +/** + * Device I/O Control entry point. + * + * @param pFilp Associated file pointer. + * @param uCmd The function specified to ioctl(). + * @param ulArg The argument specified to ioctl(). + */ +#ifdef HAVE_UNLOCKED_IOCTL +static long vboxguestLinuxIOCtl(struct file *pFilp, unsigned int uCmd, unsigned long ulArg) +#else +static int vboxguestLinuxIOCtl(struct inode *pInode, struct file *pFilp, unsigned int uCmd, unsigned long ulArg) +#endif +{ + PVBOXGUESTSESSION pSession = (PVBOXGUESTSESSION)pFilp->private_data; + uint32_t cbData = _IOC_SIZE(uCmd); + void *pvBufFree; + void *pvBuf; + int rc; + uint64_t au64Buf[32/sizeof(uint64_t)]; + + Log6(("vboxguestLinuxIOCtl: pFilp=%p uCmd=%#x ulArg=%p pid=%d/%d\n", pFilp, uCmd, (void *)ulArg, RTProcSelf(), current->pid)); + + /* + * Buffer the request. + */ + if (cbData <= sizeof(au64Buf)) + { + pvBufFree = NULL; + pvBuf = &au64Buf[0]; + } + else + { + pvBufFree = pvBuf = RTMemTmpAlloc(cbData); + if (RT_UNLIKELY(!pvBuf)) + { + LogRel((DEVICE_NAME "::IOCtl: RTMemTmpAlloc failed to alloc %u bytes.\n", cbData)); + return -ENOMEM; + } + } + if (RT_LIKELY(copy_from_user(pvBuf, (void *)ulArg, cbData) == 0)) + { + /* + * Process the IOCtl. + */ + size_t cbDataReturned; + rc = VbgdCommonIoCtl(uCmd, &g_DevExt, pSession, pvBuf, cbData, &cbDataReturned); + + /* + * Copy ioctl data and output buffer back to user space. + */ + if (RT_SUCCESS(rc)) + { + rc = 0; + if (RT_UNLIKELY(cbDataReturned > cbData)) + { + LogRel((DEVICE_NAME "::IOCtl: too much output data %u expected %u\n", cbDataReturned, cbData)); + cbDataReturned = cbData; + } + if (cbDataReturned > 0) + { + if (RT_UNLIKELY(copy_to_user((void *)ulArg, pvBuf, cbDataReturned) != 0)) + { + LogRel((DEVICE_NAME "::IOCtl: copy_to_user failed; pvBuf=%p ulArg=%p cbDataReturned=%u uCmd=%d\n", + pvBuf, (void *)ulArg, cbDataReturned, uCmd, rc)); + rc = -EFAULT; + } + } + } + else + { + Log(("vboxguestLinuxIOCtl: pFilp=%p uCmd=%#x ulArg=%p failed, rc=%d\n", pFilp, uCmd, (void *)ulArg, rc)); + rc = -rc; Assert(rc > 0); /* Positive returns == negated VBox error status codes. */ + } + } + else + { + Log((DEVICE_NAME "::IOCtl: copy_from_user(,%#lx, %#x) failed; uCmd=%#x.\n", ulArg, cbData, uCmd)); + rc = -EFAULT; + } + if (pvBufFree) + RTMemFree(pvBufFree); + + Log6(("vboxguestLinuxIOCtl: returns %d (pid=%d/%d)\n", rc, RTProcSelf(), current->pid)); + return rc; +} + + +/** + * Asynchronous notification activation method. + * + * @returns 0 on success, negative errno on failure. + * + * @param fd The file descriptor. + * @param pFile The file structure. + * @param fOn On/off indicator. + */ +static int vboxguestFAsync(int fd, struct file *pFile, int fOn) +{ + return fasync_helper(fd, pFile, fOn, &g_pFAsyncQueue); +} + + +/** + * Poll function. + * + * This returns ready to read if the mouse pointer mode or the pointer position + * has changed since last call to read. + * + * @returns 0 if no changes, POLLIN | POLLRDNORM if there are unseen changes. + * + * @param pFile The file structure. + * @param pPt The poll table. + * + * @remarks This is probably not really used, X11 is said to use the fasync + * interface instead. + */ +static unsigned int vboxguestPoll(struct file *pFile, poll_table *pPt) +{ + PVBOXGUESTSESSION pSession = (PVBOXGUESTSESSION)pFile->private_data; + uint32_t u32CurSeq = ASMAtomicUoReadU32(&g_DevExt.u32MousePosChangedSeq); + unsigned int fMask = pSession->u32MousePosChangedSeq != u32CurSeq + ? POLLIN | POLLRDNORM + : 0; + poll_wait(pFile, &g_PollEventQueue, pPt); + return fMask; +} + + +/** + * Read to go with our poll/fasync response. + * + * @returns 1 or -EINVAL. + * + * @param pFile The file structure. + * @param pbBuf The buffer to read into. + * @param cbRead The max number of bytes to read. + * @param poff The current file position. + * + * @remarks This is probably not really used as X11 lets the driver do its own + * event reading. The poll condition is therefore also cleared when we + * see VMMDevReq_GetMouseStatus in VbgdCommonIoCtl_VMMRequest. + */ +static ssize_t vboxguestRead(struct file *pFile, char *pbBuf, size_t cbRead, loff_t *poff) +{ + PVBOXGUESTSESSION pSession = (PVBOXGUESTSESSION)pFile->private_data; + uint32_t u32CurSeq = ASMAtomicUoReadU32(&g_DevExt.u32MousePosChangedSeq); + + if (*poff != 0) + return -EINVAL; + + /* + * Fake a single byte read if we're not up to date with the current mouse position. + */ + if ( pSession->u32MousePosChangedSeq != u32CurSeq + && cbRead > 0) + { + pSession->u32MousePosChangedSeq = u32CurSeq; + pbBuf[0] = 0; + return 1; + } + return 0; +} + + +void VbgdNativeISRMousePollEvent(PVBOXGUESTDEVEXT pDevExt) +{ +#ifdef VBOXGUEST_WITH_INPUT_DRIVER + int rc; +#endif + NOREF(pDevExt); + + /* + * Wake up everyone that's in a poll() and post anyone that has + * subscribed to async notifications. + */ + Log3(("VbgdNativeISRMousePollEvent: wake_up_all\n")); + wake_up_all(&g_PollEventQueue); + Log3(("VbgdNativeISRMousePollEvent: kill_fasync\n")); + kill_fasync(&g_pFAsyncQueue, SIGIO, POLL_IN); +#ifdef VBOXGUEST_WITH_INPUT_DRIVER + /* Report events to the kernel input device */ + g_pMouseStatusReq->mouseFeatures = 0; + g_pMouseStatusReq->pointerXPos = 0; + g_pMouseStatusReq->pointerYPos = 0; + rc = VbglGRPerform(&g_pMouseStatusReq->header); + if (RT_SUCCESS(rc)) + { + input_report_abs(g_pInputDevice, ABS_X, + g_pMouseStatusReq->pointerXPos); + input_report_abs(g_pInputDevice, ABS_Y, + g_pMouseStatusReq->pointerYPos); +# ifdef EV_SYN + input_sync(g_pInputDevice); +# endif + } +#endif + Log3(("VbgdNativeISRMousePollEvent: done\n")); +} + + +/* Common code that depend on g_DevExt. */ +#include "VBoxGuestIDC-unix.c.h" + +EXPORT_SYMBOL(VBoxGuestIDCOpen); +EXPORT_SYMBOL(VBoxGuestIDCClose); +EXPORT_SYMBOL(VBoxGuestIDCCall); + + +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 0) + +/** log and dbg_log parameter setter. */ +static int vboxguestLinuxParamLogGrpSet(const char *pszValue, struct kernel_param *pParam) +{ + if (g_fLoggerCreated) + { + PRTLOGGER pLogger = pParam->name[0] == 'd' ? RTLogDefaultInstance() : RTLogRelGetDefaultInstance(); + if (pLogger) + RTLogGroupSettings(pLogger, pszValue); + } + else if (pParam->name[0] != 'd') + strlcpy(&g_szLogGrp[0], pszValue, sizeof(g_szLogGrp)); + + return 0; +} + +/** log and dbg_log parameter getter. */ +static int vboxguestLinuxParamLogGrpGet(char *pszBuf, struct kernel_param *pParam) +{ + PRTLOGGER pLogger = pParam->name[0] == 'd' ? RTLogDefaultInstance() : RTLogRelGetDefaultInstance(); + *pszBuf = '\0'; + if (pLogger) + RTLogGetGroupSettings(pLogger, pszBuf, _4K); + return strlen(pszBuf); +} + + +/** log and dbg_log_flags parameter setter. */ +static int vboxguestLinuxParamLogFlagsSet(const char *pszValue, struct kernel_param *pParam) +{ + if (g_fLoggerCreated) + { + PRTLOGGER pLogger = pParam->name[0] == 'd' ? RTLogDefaultInstance() : RTLogRelGetDefaultInstance(); + if (pLogger) + RTLogFlags(pLogger, pszValue); + } + else if (pParam->name[0] != 'd') + strlcpy(&g_szLogFlags[0], pszValue, sizeof(g_szLogFlags)); + return 0; +} + +/** log and dbg_log_flags parameter getter. */ +static int vboxguestLinuxParamLogFlagsGet(char *pszBuf, struct kernel_param *pParam) +{ + PRTLOGGER pLogger = pParam->name[0] == 'd' ? RTLogDefaultInstance() : RTLogRelGetDefaultInstance(); + *pszBuf = '\0'; + if (pLogger) + RTLogGetFlags(pLogger, pszBuf, _4K); + return strlen(pszBuf); +} + + +/** log and dbg_log_dest parameter setter. */ +static int vboxguestLinuxParamLogDstSet(const char *pszValue, struct kernel_param *pParam) +{ + if (g_fLoggerCreated) + { + PRTLOGGER pLogger = pParam->name[0] == 'd' ? RTLogDefaultInstance() : RTLogRelGetDefaultInstance(); + if (pLogger) + RTLogDestinations(pLogger, pszValue); + } + else if (pParam->name[0] != 'd') + strlcpy(&g_szLogDst[0], pszValue, sizeof(g_szLogDst)); + return 0; +} + +/** log and dbg_log_dest parameter getter. */ +static int vboxguestLinuxParamLogDstGet(char *pszBuf, struct kernel_param *pParam) +{ + PRTLOGGER pLogger = pParam->name[0] == 'd' ? RTLogDefaultInstance() : RTLogRelGetDefaultInstance(); + *pszBuf = '\0'; + if (pLogger) + RTLogGetDestinations(pLogger, pszBuf, _4K); + return strlen(pszBuf); +} + + +/** r3_log_to_host parameter setter. */ +static int vboxguestLinuxParamR3LogToHostSet(const char *pszValue, struct kernel_param *pParam) +{ + if ( pszValue == NULL + || *pszValue == '\0' + || *pszValue == 'n' + || *pszValue == 'N' + || *pszValue == 'd' + || *pszValue == 'D' + || ( (*pszValue == 'o' || *pszValue == 'O') + && (*pszValue == 'f' || *pszValue == 'F') ) + ) + g_DevExt.fLoggingEnabled = false; + else + g_DevExt.fLoggingEnabled = true; + return 0; +} + +/** r3_log_to_host parameter getter. */ +static int vboxguestLinuxParamR3LogToHostGet(char *pszBuf, struct kernel_param *pParam) +{ + strcpy(pszBuf, g_DevExt.fLoggingEnabled ? "enabled" : "disabled"); + return strlen(pszBuf); +} + + +/* + * Define module parameters. + */ +module_param_call(log, vboxguestLinuxParamLogGrpSet, vboxguestLinuxParamLogGrpGet, NULL, 0664); +module_param_call(log_flags, vboxguestLinuxParamLogFlagsSet, vboxguestLinuxParamLogFlagsGet, NULL, 0664); +module_param_call(log_dest, vboxguestLinuxParamLogDstSet, vboxguestLinuxParamLogDstGet, NULL, 0664); +# ifdef LOG_ENABLED +module_param_call(dbg_log, vboxguestLinuxParamLogGrpSet, vboxguestLinuxParamLogGrpGet, NULL, 0664); +module_param_call(dbg_log_flags, vboxguestLinuxParamLogFlagsSet, vboxguestLinuxParamLogFlagsGet, NULL, 0664); +module_param_call(dbg_log_dest, vboxguestLinuxParamLogDstSet, vboxguestLinuxParamLogDstGet, NULL, 0664); +# endif +module_param_call(r3_log_to_host, vboxguestLinuxParamR3LogToHostSet, vboxguestLinuxParamR3LogToHostGet, NULL, 0664); + +#endif /* 2.6.0 and later */ + + +module_init(vboxguestLinuxModInit); +module_exit(vboxguestLinuxModExit); + +MODULE_AUTHOR(VBOX_VENDOR); +MODULE_DESCRIPTION(VBOX_PRODUCT " Guest Additions for Linux Module"); +MODULE_LICENSE("GPL"); +#ifdef MODULE_VERSION +MODULE_VERSION(VBOX_VERSION_STRING); +#endif + --- linux-raspi2-4.2.0.orig/ubuntu/vbox/vboxguest/VBoxGuest.c +++ linux-raspi2-4.2.0/ubuntu/vbox/vboxguest/VBoxGuest.c @@ -0,0 +1,3723 @@ +/* $Id: VBoxGuest.cpp $ */ +/** @file + * VBoxGuest - Guest Additions Driver, Common Code. + */ + +/* + * Copyright (C) 2007-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + + +/******************************************************************************* +* Header Files * +*******************************************************************************/ +#define LOG_GROUP LOG_GROUP_DEFAULT +#include "VBoxGuestInternal.h" +#include /* for VMMDEV_RAM_SIZE */ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#ifdef VBOX_WITH_HGCM +# include +#endif +#include "version-generated.h" +#if defined(RT_OS_LINUX) || defined(RT_OS_FREEBSD) +# include "revision-generated.h" +#endif +#ifdef RT_OS_WINDOWS +# ifndef CTL_CODE +# include +# endif +#endif +#if defined(RT_OS_SOLARIS) || defined(RT_OS_DARWIN) +# include +#endif + + +/******************************************************************************* +* Defined Constants And Macros * +*******************************************************************************/ +#define VBOXGUEST_ACQUIRE_STYLE_EVENTS (VMMDEV_EVENT_DISPLAY_CHANGE_REQUEST | VMMDEV_EVENT_SEAMLESS_MODE_CHANGE_REQUEST) + + +/******************************************************************************* +* Internal Functions * +*******************************************************************************/ +#ifdef VBOX_WITH_HGCM +static DECLCALLBACK(int) vbgdHgcmAsyncWaitCallback(VMMDevHGCMRequestHeader *pHdrNonVolatile, void *pvUser, uint32_t u32User); +#endif +static int vbgdIoCtl_CancelAllWaitEvents(PVBOXGUESTDEVEXT pDevExt, PVBOXGUESTSESSION pSession); +static void vbgdBitUsageTrackerClear(PVBOXGUESTBITUSAGETRACER pTracker); +static uint32_t vbgdGetAllowedEventMaskForSession(PVBOXGUESTDEVEXT pDevExt, PVBOXGUESTSESSION pSession); +static int vbgdResetEventFilterOnHost(PVBOXGUESTDEVEXT pDevExt, uint32_t fFixedEvents); +static int vbgdResetMouseStatusOnHost(PVBOXGUESTDEVEXT pDevExt); +static int vbgdResetCapabilitiesOnHost(PVBOXGUESTDEVEXT pDevExt); +static int vbgdSetSessionEventFilter(PVBOXGUESTDEVEXT pDevExt, PVBOXGUESTSESSION pSession, + uint32_t fOrMask, uint32_t fNotMask, bool fSessionTermination); +static int vbgdSetSessionMouseStatus(PVBOXGUESTDEVEXT pDevExt, PVBOXGUESTSESSION pSession, + uint32_t fOrMask, uint32_t fNotMask, bool fSessionTermination); +static int vbgdSetSessionCapabilities(PVBOXGUESTDEVEXT pDevExt, PVBOXGUESTSESSION pSession, + uint32_t fOrMask, uint32_t fNoMask, bool fSessionTermination); +static int vbgdAcquireSessionCapabilities(PVBOXGUESTDEVEXT pDevExt, PVBOXGUESTSESSION pSession, uint32_t fOrMask, + uint32_t fNotMask, VBOXGUESTCAPSACQUIRE_FLAGS enmFlags, bool fSessionTermination); +static int vbgdDispatchEventsLocked(PVBOXGUESTDEVEXT pDevExt, uint32_t fEvents); + + +/******************************************************************************* +* Global Variables * +*******************************************************************************/ +static const uint32_t g_cbChangeMemBalloonReq = RT_OFFSETOF(VMMDevChangeMemBalloon, aPhysPage[VMMDEV_MEMORY_BALLOON_CHUNK_PAGES]); + +#if defined(RT_OS_DARWIN) || defined(RT_OS_SOLARIS) +/** + * Drag in the rest of IRPT since we share it with the + * rest of the kernel modules on Solaris. + */ +PFNRT g_apfnVBoxGuestIPRTDeps[] = +{ + /* VirtioNet */ + (PFNRT)RTRandBytes, + /* RTSemMutex* */ + (PFNRT)RTSemMutexCreate, + (PFNRT)RTSemMutexDestroy, + (PFNRT)RTSemMutexRequest, + (PFNRT)RTSemMutexRequestNoResume, + (PFNRT)RTSemMutexRequestDebug, + (PFNRT)RTSemMutexRequestNoResumeDebug, + (PFNRT)RTSemMutexRelease, + (PFNRT)RTSemMutexIsOwned, + NULL +}; +#endif /* RT_OS_DARWIN || RT_OS_SOLARIS */ + + +/** + * Reserves memory in which the VMM can relocate any guest mappings + * that are floating around. + * + * This operation is a little bit tricky since the VMM might not accept + * just any address because of address clashes between the three contexts + * it operates in, so use a small stack to perform this operation. + * + * @returns VBox status code (ignored). + * @param pDevExt The device extension. + */ +static int vbgdInitFixateGuestMappings(PVBOXGUESTDEVEXT pDevExt) +{ + /* + * Query the required space. + */ + VMMDevReqHypervisorInfo *pReq; + int rc = VbglGRAlloc((VMMDevRequestHeader **)&pReq, sizeof(VMMDevReqHypervisorInfo), VMMDevReq_GetHypervisorInfo); + if (RT_FAILURE(rc)) + return rc; + pReq->hypervisorStart = 0; + pReq->hypervisorSize = 0; + rc = VbglGRPerform(&pReq->header); + if (RT_FAILURE(rc)) /* this shouldn't happen! */ + { + VbglGRFree(&pReq->header); + return rc; + } + + /* + * The VMM will report back if there is nothing it wants to map, like for + * instance in VT-x and AMD-V mode. + */ + if (pReq->hypervisorSize == 0) + Log(("vbgdInitFixateGuestMappings: nothing to do\n")); + else + { + /* + * We have to try several times since the host can be picky + * about certain addresses. + */ + RTR0MEMOBJ hFictive = NIL_RTR0MEMOBJ; + uint32_t cbHypervisor = pReq->hypervisorSize; + RTR0MEMOBJ ahTries[5]; + uint32_t iTry; + bool fBitched = false; + Log(("vbgdInitFixateGuestMappings: cbHypervisor=%#x\n", cbHypervisor)); + for (iTry = 0; iTry < RT_ELEMENTS(ahTries); iTry++) + { + /* + * Reserve space, or if that isn't supported, create a object for + * some fictive physical memory and map that in to kernel space. + * + * To make the code a bit uglier, most systems cannot help with + * 4MB alignment, so we have to deal with that in addition to + * having two ways of getting the memory. + */ + uint32_t uAlignment = _4M; + RTR0MEMOBJ hObj; + rc = RTR0MemObjReserveKernel(&hObj, (void *)-1, RT_ALIGN_32(cbHypervisor, _4M), uAlignment); + if (rc == VERR_NOT_SUPPORTED) + { + uAlignment = PAGE_SIZE; + rc = RTR0MemObjReserveKernel(&hObj, (void *)-1, RT_ALIGN_32(cbHypervisor, _4M) + _4M, uAlignment); + } + /* + * If both RTR0MemObjReserveKernel calls above failed because either not supported or + * not implemented at all at the current platform, try to map the memory object into the + * virtual kernel space. + */ + if (rc == VERR_NOT_SUPPORTED) + { + if (hFictive == NIL_RTR0MEMOBJ) + { + rc = RTR0MemObjEnterPhys(&hObj, VBOXGUEST_HYPERVISOR_PHYSICAL_START, cbHypervisor + _4M, RTMEM_CACHE_POLICY_DONT_CARE); + if (RT_FAILURE(rc)) + break; + hFictive = hObj; + } + uAlignment = _4M; + rc = RTR0MemObjMapKernel(&hObj, hFictive, (void *)-1, uAlignment, RTMEM_PROT_READ | RTMEM_PROT_WRITE); + if (rc == VERR_NOT_SUPPORTED) + { + uAlignment = PAGE_SIZE; + rc = RTR0MemObjMapKernel(&hObj, hFictive, (void *)-1, uAlignment, RTMEM_PROT_READ | RTMEM_PROT_WRITE); + } + } + if (RT_FAILURE(rc)) + { + LogRel(("VBoxGuest: Failed to reserve memory for the hypervisor: rc=%Rrc (cbHypervisor=%#x uAlignment=%#x iTry=%u)\n", + rc, cbHypervisor, uAlignment, iTry)); + fBitched = true; + break; + } + + /* + * Try set it. + */ + pReq->header.requestType = VMMDevReq_SetHypervisorInfo; + pReq->header.rc = VERR_INTERNAL_ERROR; + pReq->hypervisorSize = cbHypervisor; + pReq->hypervisorStart = (RTGCPTR32)(uintptr_t)RTR0MemObjAddress(hObj); + if ( uAlignment == PAGE_SIZE + && pReq->hypervisorStart & (_4M - 1)) + pReq->hypervisorStart = RT_ALIGN_32(pReq->hypervisorStart, _4M); + AssertMsg(RT_ALIGN_32(pReq->hypervisorStart, _4M) == pReq->hypervisorStart, ("%#x\n", pReq->hypervisorStart)); + + rc = VbglGRPerform(&pReq->header); + if (RT_SUCCESS(rc)) + { + pDevExt->hGuestMappings = hFictive != NIL_RTR0MEMOBJ ? hFictive : hObj; + Log(("VBoxGuest: %p LB %#x; uAlignment=%#x iTry=%u hGuestMappings=%p (%s)\n", + RTR0MemObjAddress(pDevExt->hGuestMappings), + RTR0MemObjSize(pDevExt->hGuestMappings), + uAlignment, iTry, pDevExt->hGuestMappings, hFictive != NIL_RTR0PTR ? "fictive" : "reservation")); + break; + } + ahTries[iTry] = hObj; + } + + /* + * Cleanup failed attempts. + */ + while (iTry-- > 0) + RTR0MemObjFree(ahTries[iTry], false /* fFreeMappings */); + if ( RT_FAILURE(rc) + && hFictive != NIL_RTR0PTR) + RTR0MemObjFree(hFictive, false /* fFreeMappings */); + if (RT_FAILURE(rc) && !fBitched) + LogRel(("VBoxGuest: Warning: failed to reserve %#d of memory for guest mappings.\n", cbHypervisor)); + } + VbglGRFree(&pReq->header); + + /* + * We ignore failed attempts for now. + */ + return VINF_SUCCESS; +} + + +/** + * Undo what vbgdInitFixateGuestMappings did. + * + * @param pDevExt The device extension. + */ +static void vbgdTermUnfixGuestMappings(PVBOXGUESTDEVEXT pDevExt) +{ + if (pDevExt->hGuestMappings != NIL_RTR0PTR) + { + /* + * Tell the host that we're going to free the memory we reserved for + * it, the free it up. (Leak the memory if anything goes wrong here.) + */ + VMMDevReqHypervisorInfo *pReq; + int rc = VbglGRAlloc((VMMDevRequestHeader **)&pReq, sizeof(VMMDevReqHypervisorInfo), VMMDevReq_SetHypervisorInfo); + if (RT_SUCCESS(rc)) + { + pReq->hypervisorStart = 0; + pReq->hypervisorSize = 0; + rc = VbglGRPerform(&pReq->header); + VbglGRFree(&pReq->header); + } + if (RT_SUCCESS(rc)) + { + rc = RTR0MemObjFree(pDevExt->hGuestMappings, true /* fFreeMappings */); + AssertRC(rc); + } + else + LogRel(("vbgdTermUnfixGuestMappings: Failed to unfix the guest mappings! rc=%Rrc\n", rc)); + + pDevExt->hGuestMappings = NIL_RTR0MEMOBJ; + } +} + + + +/** + * Report the guest information to the host. + * + * @returns IPRT status code. + * @param enmOSType The OS type to report. + */ +static int vbgdReportGuestInfo(VBOXOSTYPE enmOSType) +{ + /* + * Allocate and fill in the two guest info reports. + */ + VMMDevReportGuestInfo2 *pReqInfo2 = NULL; + VMMDevReportGuestInfo *pReqInfo1 = NULL; + int rc = VbglGRAlloc((VMMDevRequestHeader **)&pReqInfo2, sizeof (VMMDevReportGuestInfo2), VMMDevReq_ReportGuestInfo2); + Log(("vbgdReportGuestInfo: VbglGRAlloc VMMDevReportGuestInfo2 completed with rc=%Rrc\n", rc)); + if (RT_SUCCESS(rc)) + { + pReqInfo2->guestInfo.additionsMajor = VBOX_VERSION_MAJOR; + pReqInfo2->guestInfo.additionsMinor = VBOX_VERSION_MINOR; + pReqInfo2->guestInfo.additionsBuild = VBOX_VERSION_BUILD; + pReqInfo2->guestInfo.additionsRevision = VBOX_SVN_REV; + pReqInfo2->guestInfo.additionsFeatures = 0; /* (no features defined yet) */ + RTStrCopy(pReqInfo2->guestInfo.szName, sizeof(pReqInfo2->guestInfo.szName), VBOX_VERSION_STRING); + + rc = VbglGRAlloc((VMMDevRequestHeader **)&pReqInfo1, sizeof (VMMDevReportGuestInfo), VMMDevReq_ReportGuestInfo); + Log(("vbgdReportGuestInfo: VbglGRAlloc VMMDevReportGuestInfo completed with rc=%Rrc\n", rc)); + if (RT_SUCCESS(rc)) + { + pReqInfo1->guestInfo.interfaceVersion = VMMDEV_VERSION; + pReqInfo1->guestInfo.osType = enmOSType; + + /* + * There are two protocols here: + * 1. Info2 + Info1. Supported by >=3.2.51. + * 2. Info1 and optionally Info2. The old protocol. + * + * We try protocol 1 first. It will fail with VERR_NOT_SUPPORTED + * if not supported by the VMMDev (message ordering requirement). + */ + rc = VbglGRPerform(&pReqInfo2->header); + Log(("vbgdReportGuestInfo: VbglGRPerform VMMDevReportGuestInfo2 completed with rc=%Rrc\n", rc)); + if (RT_SUCCESS(rc)) + { + rc = VbglGRPerform(&pReqInfo1->header); + Log(("vbgdReportGuestInfo: VbglGRPerform VMMDevReportGuestInfo completed with rc=%Rrc\n", rc)); + } + else if ( rc == VERR_NOT_SUPPORTED + || rc == VERR_NOT_IMPLEMENTED) + { + rc = VbglGRPerform(&pReqInfo1->header); + Log(("vbgdReportGuestInfo: VbglGRPerform VMMDevReportGuestInfo completed with rc=%Rrc\n", rc)); + if (RT_SUCCESS(rc)) + { + rc = VbglGRPerform(&pReqInfo2->header); + Log(("vbgdReportGuestInfo: VbglGRPerform VMMDevReportGuestInfo2 completed with rc=%Rrc\n", rc)); + if (rc == VERR_NOT_IMPLEMENTED) + rc = VINF_SUCCESS; + } + } + VbglGRFree(&pReqInfo1->header); + } + VbglGRFree(&pReqInfo2->header); + } + + return rc; +} + + +/** + * Report the guest driver status to the host. + * + * @returns IPRT status code. + * @param fActive Flag whether the driver is now active or not. + */ +static int vbgdReportDriverStatus(bool fActive) +{ + /* + * Report guest status of the VBox driver to the host. + */ + VMMDevReportGuestStatus *pReq2 = NULL; + int rc = VbglGRAlloc((VMMDevRequestHeader **)&pReq2, sizeof(*pReq2), VMMDevReq_ReportGuestStatus); + Log(("vbgdReportDriverStatus: VbglGRAlloc VMMDevReportGuestStatus completed with rc=%Rrc\n", rc)); + if (RT_SUCCESS(rc)) + { + pReq2->guestStatus.facility = VBoxGuestFacilityType_VBoxGuestDriver; + pReq2->guestStatus.status = fActive ? + VBoxGuestFacilityStatus_Active + : VBoxGuestFacilityStatus_Inactive; + pReq2->guestStatus.flags = 0; + rc = VbglGRPerform(&pReq2->header); + Log(("vbgdReportDriverStatus: VbglGRPerform VMMDevReportGuestStatus completed with fActive=%d, rc=%Rrc\n", + fActive ? 1 : 0, rc)); + if (rc == VERR_NOT_IMPLEMENTED) /* Compatibility with older hosts. */ + rc = VINF_SUCCESS; + VbglGRFree(&pReq2->header); + } + + return rc; +} + + +/** @name Memory Ballooning + * @{ + */ + +/** + * Inflate the balloon by one chunk represented by an R0 memory object. + * + * The caller owns the balloon mutex. + * + * @returns IPRT status code. + * @param pMemObj Pointer to the R0 memory object. + * @param pReq The pre-allocated request for performing the VMMDev call. + */ +static int vbgdBalloonInflate(PRTR0MEMOBJ pMemObj, VMMDevChangeMemBalloon *pReq) +{ + uint32_t iPage; + int rc; + + for (iPage = 0; iPage < VMMDEV_MEMORY_BALLOON_CHUNK_PAGES; iPage++) + { + RTHCPHYS phys = RTR0MemObjGetPagePhysAddr(*pMemObj, iPage); + pReq->aPhysPage[iPage] = phys; + } + + pReq->fInflate = true; + pReq->header.size = g_cbChangeMemBalloonReq; + pReq->cPages = VMMDEV_MEMORY_BALLOON_CHUNK_PAGES; + + rc = VbglGRPerform(&pReq->header); + if (RT_FAILURE(rc)) + LogRel(("vbgdBalloonInflate: VbglGRPerform failed. rc=%Rrc\n", rc)); + return rc; +} + + +/** + * Deflate the balloon by one chunk - info the host and free the memory object. + * + * The caller owns the balloon mutex. + * + * @returns IPRT status code. + * @param pMemObj Pointer to the R0 memory object. + * The memory object will be freed afterwards. + * @param pReq The pre-allocated request for performing the VMMDev call. + */ +static int vbgdBalloonDeflate(PRTR0MEMOBJ pMemObj, VMMDevChangeMemBalloon *pReq) +{ + uint32_t iPage; + int rc; + + for (iPage = 0; iPage < VMMDEV_MEMORY_BALLOON_CHUNK_PAGES; iPage++) + { + RTHCPHYS phys = RTR0MemObjGetPagePhysAddr(*pMemObj, iPage); + pReq->aPhysPage[iPage] = phys; + } + + pReq->fInflate = false; + pReq->header.size = g_cbChangeMemBalloonReq; + pReq->cPages = VMMDEV_MEMORY_BALLOON_CHUNK_PAGES; + + rc = VbglGRPerform(&pReq->header); + if (RT_FAILURE(rc)) + { + LogRel(("vbgdBalloonDeflate: VbglGRPerform failed. rc=%Rrc\n", rc)); + return rc; + } + + rc = RTR0MemObjFree(*pMemObj, true); + if (RT_FAILURE(rc)) + { + LogRel(("vbgdBalloonDeflate: RTR0MemObjFree(%p,true) -> %Rrc; this is *BAD*!\n", *pMemObj, rc)); + return rc; + } + + *pMemObj = NIL_RTR0MEMOBJ; + return VINF_SUCCESS; +} + + +/** + * Inflate/deflate the memory balloon and notify the host. + * + * This is a worker used by vbgdIoCtl_CheckMemoryBalloon - it takes the mutex. + * + * @returns VBox status code. + * @param pDevExt The device extension. + * @param pSession The session. + * @param cBalloonChunks The new size of the balloon in chunks of 1MB. + * @param pfHandleInR3 Where to return the handle-in-ring3 indicator + * (VINF_SUCCESS if set). + */ +static int vbgdSetBalloonSizeKernel(PVBOXGUESTDEVEXT pDevExt, uint32_t cBalloonChunks, uint32_t *pfHandleInR3) +{ + int rc = VINF_SUCCESS; + + if (pDevExt->MemBalloon.fUseKernelAPI) + { + VMMDevChangeMemBalloon *pReq; + uint32_t i; + + if (cBalloonChunks > pDevExt->MemBalloon.cMaxChunks) + { + LogRel(("vbgdSetBalloonSizeKernel: illegal balloon size %u (max=%u)\n", + cBalloonChunks, pDevExt->MemBalloon.cMaxChunks)); + return VERR_INVALID_PARAMETER; + } + + if (cBalloonChunks == pDevExt->MemBalloon.cMaxChunks) + return VINF_SUCCESS; /* nothing to do */ + + if ( cBalloonChunks > pDevExt->MemBalloon.cChunks + && !pDevExt->MemBalloon.paMemObj) + { + pDevExt->MemBalloon.paMemObj = (PRTR0MEMOBJ)RTMemAllocZ(sizeof(RTR0MEMOBJ) * pDevExt->MemBalloon.cMaxChunks); + if (!pDevExt->MemBalloon.paMemObj) + { + LogRel(("vbgdSetBalloonSizeKernel: no memory for paMemObj!\n")); + return VERR_NO_MEMORY; + } + } + + rc = VbglGRAlloc((VMMDevRequestHeader **)&pReq, g_cbChangeMemBalloonReq, VMMDevReq_ChangeMemBalloon); + if (RT_FAILURE(rc)) + return rc; + + if (cBalloonChunks > pDevExt->MemBalloon.cChunks) + { + /* inflate */ + for (i = pDevExt->MemBalloon.cChunks; i < cBalloonChunks; i++) + { + rc = RTR0MemObjAllocPhysNC(&pDevExt->MemBalloon.paMemObj[i], + VMMDEV_MEMORY_BALLOON_CHUNK_SIZE, NIL_RTHCPHYS); + if (RT_FAILURE(rc)) + { + if (rc == VERR_NOT_SUPPORTED) + { + /* not supported -- fall back to the R3-allocated memory. */ + rc = VINF_SUCCESS; + pDevExt->MemBalloon.fUseKernelAPI = false; + Assert(pDevExt->MemBalloon.cChunks == 0); + Log(("VBoxGuestSetBalloonSizeKernel: PhysNC allocs not supported, falling back to R3 allocs.\n")); + } + /* else if (rc == VERR_NO_MEMORY || rc == VERR_NO_PHYS_MEMORY): + * cannot allocate more memory => don't try further, just stop here */ + /* else: XXX what else can fail? VERR_MEMOBJ_INIT_FAILED for instance. just stop. */ + break; + } + + rc = vbgdBalloonInflate(&pDevExt->MemBalloon.paMemObj[i], pReq); + if (RT_FAILURE(rc)) + { + Log(("vboxGuestSetBalloonSize(inflate): failed, rc=%Rrc!\n", rc)); + RTR0MemObjFree(pDevExt->MemBalloon.paMemObj[i], true); + pDevExt->MemBalloon.paMemObj[i] = NIL_RTR0MEMOBJ; + break; + } + pDevExt->MemBalloon.cChunks++; + } + } + else + { + /* deflate */ + for (i = pDevExt->MemBalloon.cChunks; i-- > cBalloonChunks;) + { + rc = vbgdBalloonDeflate(&pDevExt->MemBalloon.paMemObj[i], pReq); + if (RT_FAILURE(rc)) + { + Log(("vboxGuestSetBalloonSize(deflate): failed, rc=%Rrc!\n", rc)); + break; + } + pDevExt->MemBalloon.cChunks--; + } + } + + VbglGRFree(&pReq->header); + } + + /* + * Set the handle-in-ring3 indicator. When set Ring-3 will have to work + * the balloon changes via the other API. + */ + *pfHandleInR3 = pDevExt->MemBalloon.fUseKernelAPI ? false : true; + + return rc; +} + + +/** + * Inflate/deflate the balloon by one chunk. + * + * Worker for vbgdIoCtl_ChangeMemoryBalloon - it takes the mutex. + * + * @returns VBox status code. + * @param pDevExt The device extension. + * @param pSession The session. + * @param u64ChunkAddr The address of the chunk to add to / remove from the + * balloon. + * @param fInflate Inflate if true, deflate if false. + */ +static int vbgdSetBalloonSizeFromUser(PVBOXGUESTDEVEXT pDevExt, PVBOXGUESTSESSION pSession, uint64_t u64ChunkAddr, bool fInflate) +{ + VMMDevChangeMemBalloon *pReq; + int rc = VINF_SUCCESS; + uint32_t i; + PRTR0MEMOBJ pMemObj = NULL; + + if (fInflate) + { + if ( pDevExt->MemBalloon.cChunks > pDevExt->MemBalloon.cMaxChunks - 1 + || pDevExt->MemBalloon.cMaxChunks == 0 /* If called without first querying. */) + { + LogRel(("vboxGuestSetBalloonSize: cannot inflate balloon, already have %u chunks (max=%u)\n", + pDevExt->MemBalloon.cChunks, pDevExt->MemBalloon.cMaxChunks)); + return VERR_INVALID_PARAMETER; + } + + if (!pDevExt->MemBalloon.paMemObj) + { + pDevExt->MemBalloon.paMemObj = (PRTR0MEMOBJ)RTMemAlloc(sizeof(RTR0MEMOBJ) * pDevExt->MemBalloon.cMaxChunks); + if (!pDevExt->MemBalloon.paMemObj) + { + LogRel(("VBoxGuestSetBalloonSizeFromUser: no memory for paMemObj!\n")); + return VERR_NO_MEMORY; + } + for (i = 0; i < pDevExt->MemBalloon.cMaxChunks; i++) + pDevExt->MemBalloon.paMemObj[i] = NIL_RTR0MEMOBJ; + } + } + else + { + if (pDevExt->MemBalloon.cChunks == 0) + { + AssertMsgFailed(("vboxGuestSetBalloonSize: cannot decrease balloon, already at size 0\n")); + return VERR_INVALID_PARAMETER; + } + } + + /* + * Enumerate all memory objects and check if the object is already registered. + */ + for (i = 0; i < pDevExt->MemBalloon.cMaxChunks; i++) + { + if ( fInflate + && !pMemObj + && pDevExt->MemBalloon.paMemObj[i] == NIL_RTR0MEMOBJ) + pMemObj = &pDevExt->MemBalloon.paMemObj[i]; /* found free object pointer */ + if (RTR0MemObjAddressR3(pDevExt->MemBalloon.paMemObj[i]) == u64ChunkAddr) + { + if (fInflate) + return VERR_ALREADY_EXISTS; /* don't provide the same memory twice */ + pMemObj = &pDevExt->MemBalloon.paMemObj[i]; + break; + } + } + if (!pMemObj) + { + if (fInflate) + { + /* no free object pointer found -- should not happen */ + return VERR_NO_MEMORY; + } + + /* cannot free this memory as it wasn't provided before */ + return VERR_NOT_FOUND; + } + + /* + * Try inflate / default the balloon as requested. + */ + rc = VbglGRAlloc((VMMDevRequestHeader **)&pReq, g_cbChangeMemBalloonReq, VMMDevReq_ChangeMemBalloon); + if (RT_FAILURE(rc)) + return rc; + + if (fInflate) + { + rc = RTR0MemObjLockUser(pMemObj, (RTR3PTR)u64ChunkAddr, VMMDEV_MEMORY_BALLOON_CHUNK_SIZE, + RTMEM_PROT_READ | RTMEM_PROT_WRITE, NIL_RTR0PROCESS); + if (RT_SUCCESS(rc)) + { + rc = vbgdBalloonInflate(pMemObj, pReq); + if (RT_SUCCESS(rc)) + pDevExt->MemBalloon.cChunks++; + else + { + Log(("vboxGuestSetBalloonSize(inflate): failed, rc=%Rrc!\n", rc)); + RTR0MemObjFree(*pMemObj, true); + *pMemObj = NIL_RTR0MEMOBJ; + } + } + } + else + { + rc = vbgdBalloonDeflate(pMemObj, pReq); + if (RT_SUCCESS(rc)) + pDevExt->MemBalloon.cChunks--; + else + Log(("vboxGuestSetBalloonSize(deflate): failed, rc=%Rrc!\n", rc)); + } + + VbglGRFree(&pReq->header); + return rc; +} + + +/** + * Cleanup the memory balloon of a session. + * + * Will request the balloon mutex, so it must be valid and the caller must not + * own it already. + * + * @param pDevExt The device extension. + * @param pDevExt The session. Can be NULL at unload. + */ +static void vbgdCloseMemBalloon(PVBOXGUESTDEVEXT pDevExt, PVBOXGUESTSESSION pSession) +{ + RTSemFastMutexRequest(pDevExt->MemBalloon.hMtx); + if ( pDevExt->MemBalloon.pOwner == pSession + || pSession == NULL /*unload*/) + { + if (pDevExt->MemBalloon.paMemObj) + { + VMMDevChangeMemBalloon *pReq; + int rc = VbglGRAlloc((VMMDevRequestHeader **)&pReq, g_cbChangeMemBalloonReq, VMMDevReq_ChangeMemBalloon); + if (RT_SUCCESS(rc)) + { + uint32_t i; + for (i = pDevExt->MemBalloon.cChunks; i-- > 0;) + { + rc = vbgdBalloonDeflate(&pDevExt->MemBalloon.paMemObj[i], pReq); + if (RT_FAILURE(rc)) + { + LogRel(("vbgdCloseMemBalloon: Deflate failed with rc=%Rrc. Will leak %u chunks.\n", + rc, pDevExt->MemBalloon.cChunks)); + break; + } + pDevExt->MemBalloon.paMemObj[i] = NIL_RTR0MEMOBJ; + pDevExt->MemBalloon.cChunks--; + } + VbglGRFree(&pReq->header); + } + else + LogRel(("vbgdCloseMemBalloon: Failed to allocate VMMDev request buffer (rc=%Rrc). Will leak %u chunks.\n", + rc, pDevExt->MemBalloon.cChunks)); + RTMemFree(pDevExt->MemBalloon.paMemObj); + pDevExt->MemBalloon.paMemObj = NULL; + } + + pDevExt->MemBalloon.pOwner = NULL; + } + RTSemFastMutexRelease(pDevExt->MemBalloon.hMtx); +} + +/** @} */ + + + +/** @name Heartbeat + * @{ + */ + +/** + * Sends heartbeat to host. + * + * @returns VBox status code. + */ +static int vbgdHeartbeatSend(PVBOXGUESTDEVEXT pDevExt) +{ + int rc; + if (pDevExt->pReqGuestHeartbeat) + { + rc = VbglGRPerform(pDevExt->pReqGuestHeartbeat); + Log(("vbgdHeartbeatSend: VbglGRPerform vbgdHeartbeatSend completed with rc=%Rrc\n", rc)); + } + else + rc = VERR_INVALID_STATE; + return rc; +} + + +/** + * Callback for heartbeat timer. + */ +static DECLCALLBACK(void) vbgdHeartbeatTimerHandler(PRTTIMER hTimer, void *pvUser, uint64_t iTick) +{ + PVBOXGUESTDEVEXT pDevExt = (PVBOXGUESTDEVEXT)pvUser; + int rc; + AssertReturnVoid(pDevExt); + + rc = vbgdHeartbeatSend(pDevExt); + if (RT_FAILURE(rc)) + Log(("HB Timer: vbgdHeartbeatSend failed: rc=%Rrc\n", rc)); + + NOREF(hTimer); NOREF(iTick); +} + + +/** + * Configure the host to check guest's heartbeat + * and get heartbeat interval from the host. + * + * @returns VBox status code. + * @param pDevExt The device extension. + * @param fEnabled Set true to enable guest heartbeat checks on host. + */ +static int vbgdHeartbeatHostConfigure(PVBOXGUESTDEVEXT pDevExt, bool fEnabled) +{ + VMMDevReqHeartbeat *pReq; + int rc = VbglGRAlloc((VMMDevRequestHeader **)&pReq, sizeof(*pReq), VMMDevReq_HeartbeatConfigure); + Log(("vbgdHeartbeatHostConfigure: VbglGRAlloc vbgdHeartbeatHostConfigure completed with rc=%Rrc\n", rc)); + if (RT_SUCCESS(rc)) + { + pReq->fEnabled = fEnabled; + pReq->cNsInterval = 0; + rc = VbglGRPerform(&pReq->header); + Log(("vbgdHeartbeatHostConfigure: VbglGRPerform vbgdHeartbeatHostConfigure completed with rc=%Rrc\n", rc)); + pDevExt->cNsHeartbeatInterval = pReq->cNsInterval; + VbglGRFree(&pReq->header); + } + return rc; +} + + +/** + * Initializes the heartbeat timer. + * + * This feature may be disabled by the host. + * + * @returns VBox status (ignored). + * @param pDevExt The device extension. + */ +static int vbgdHeartbeatInit(PVBOXGUESTDEVEXT pDevExt) +{ + /* + * Make sure that heartbeat checking is disabled. + */ + int rc = vbgdHeartbeatHostConfigure(pDevExt, false); + if (RT_SUCCESS(rc)) + { + rc = vbgdHeartbeatHostConfigure(pDevExt, true); + if (RT_SUCCESS(rc)) + { + /* + * Preallocate the request to use it from the timer callback because: + * 1) on Windows VbglGRAlloc must be called at IRQL <= APC_LEVEL + * and the timer callback runs at DISPATCH_LEVEL; + * 2) avoid repeated allocations. + */ + rc = VbglGRAlloc(&pDevExt->pReqGuestHeartbeat, sizeof(*pDevExt->pReqGuestHeartbeat), VMMDevReq_GuestHeartbeat); + if (RT_SUCCESS(rc)) + { + LogRel(("VbgdCommonInitDevExt: Setting up heartbeat to trigger every %RU64 milliseconds\n", + pDevExt->cNsHeartbeatInterval / RT_NS_1MS)); + rc = RTTimerCreateEx(&pDevExt->pHeartbeatTimer, pDevExt->cNsHeartbeatInterval, 0 /*fFlags*/, + (PFNRTTIMER)vbgdHeartbeatTimerHandler, pDevExt); + if (RT_SUCCESS(rc)) + { + rc = RTTimerStart(pDevExt->pHeartbeatTimer, 0); + if (RT_SUCCESS(rc)) + return VINF_SUCCESS; + + LogRel(("VbgdCommonInitDevExt: Heartbeat timer failed to start, rc=%Rrc\n", rc)); + } + else + LogRel(("VbgdCommonInitDevExt: Failed to create heartbeat timer: %Rrc\n", rc)); + + VbglGRFree(pDevExt->pReqGuestHeartbeat); + pDevExt->pReqGuestHeartbeat = NULL; + } + else + LogRel(("VbgdCommonInitDevExt: VbglGRAlloc(VMMDevReq_GuestHeartbeat): %Rrc\n", rc)); + + LogRel(("VbgdCommonInitDevExt: Failed to set up the timer, guest heartbeat is disabled\n")); + vbgdHeartbeatHostConfigure(pDevExt, false); + } + else + LogRel(("VbgdCommonInitDevExt: Failed to configure host for heartbeat checking: rc=%Rrc\n", rc)); + } + return rc; +} + +/** @} */ + + +/** + * Helper to reinit the VMMDev communication after hibernation. + * + * @returns VBox status code. + * @param pDevExt The device extension. + * @param enmOSType The OS type. + * + * @todo Call this on all platforms, not just windows. + */ +int VbgdCommonReinitDevExtAfterHibernation(PVBOXGUESTDEVEXT pDevExt, VBOXOSTYPE enmOSType) +{ + int rc = vbgdReportGuestInfo(enmOSType); + if (RT_SUCCESS(rc)) + { + rc = vbgdReportDriverStatus(true /* Driver is active */); + if (RT_FAILURE(rc)) + Log(("VbgdCommonReinitDevExtAfterHibernation: could not report guest driver status, rc=%Rrc\n", rc)); + } + else + Log(("VbgdCommonReinitDevExtAfterHibernation: could not report guest information to host, rc=%Rrc\n", rc)); + LogFlow(("VbgdCommonReinitDevExtAfterHibernation: returned with rc=%Rrc\n", rc)); + return rc; +} + + +/** + * Initializes the VBoxGuest device extension when the + * device driver is loaded. + * + * The native code locates the VMMDev on the PCI bus and retrieve + * the MMIO and I/O port ranges, this function will take care of + * mapping the MMIO memory (if present). Upon successful return + * the native code should set up the interrupt handler. + * + * @returns VBox status code. + * + * @param pDevExt The device extension. Allocated by the native code. + * @param IOPortBase The base of the I/O port range. + * @param pvMMIOBase The base of the MMIO memory mapping. + * This is optional, pass NULL if not present. + * @param cbMMIO The size of the MMIO memory mapping. + * This is optional, pass 0 if not present. + * @param enmOSType The guest OS type to report to the VMMDev. + * @param fFixedEvents Events that will be enabled upon init and no client + * will ever be allowed to mask. + */ +int VbgdCommonInitDevExt(PVBOXGUESTDEVEXT pDevExt, uint16_t IOPortBase, + void *pvMMIOBase, uint32_t cbMMIO, VBOXOSTYPE enmOSType, uint32_t fFixedEvents) +{ + int rc, rc2; + +#ifdef VBOX_GUESTDRV_WITH_RELEASE_LOGGER + /* + * Create the release log. + */ + static const char * const s_apszGroups[] = VBOX_LOGGROUP_NAMES; + PRTLOGGER pRelLogger; + rc = RTLogCreate(&pRelLogger, 0 /*fFlags*/, "all", "VBOXGUEST_RELEASE_LOG", RT_ELEMENTS(s_apszGroups), s_apszGroups, + RTLOGDEST_STDOUT | RTLOGDEST_DEBUGGER, NULL); + if (RT_SUCCESS(rc)) + RTLogRelSetDefaultInstance(pRelLogger); + /** @todo Add native hook for getting logger config parameters and setting + * them. On linux we should use the module parameter stuff... */ +#endif + + /* + * Adjust fFixedEvents. + */ +#ifdef VBOX_WITH_HGCM + fFixedEvents |= VMMDEV_EVENT_HGCM; +#endif + + /* + * Initialize the data. + */ + pDevExt->IOPortBase = IOPortBase; + pDevExt->pVMMDevMemory = NULL; + pDevExt->hGuestMappings = NIL_RTR0MEMOBJ; + pDevExt->EventSpinlock = NIL_RTSPINLOCK; + pDevExt->pIrqAckEvents = NULL; + pDevExt->PhysIrqAckEvents = NIL_RTCCPHYS; + RTListInit(&pDevExt->WaitList); +#ifdef VBOX_WITH_HGCM + RTListInit(&pDevExt->HGCMWaitList); +#endif +#ifdef VBOXGUEST_USE_DEFERRED_WAKE_UP + RTListInit(&pDevExt->WakeUpList); +#endif + RTListInit(&pDevExt->WokenUpList); + RTListInit(&pDevExt->FreeList); + RTListInit(&pDevExt->SessionList); + pDevExt->cSessions = 0; + pDevExt->fLoggingEnabled = false; + pDevExt->f32PendingEvents = 0; + pDevExt->u32MousePosChangedSeq = 0; + pDevExt->SessionSpinlock = NIL_RTSPINLOCK; + pDevExt->MemBalloon.hMtx = NIL_RTSEMFASTMUTEX; + pDevExt->MemBalloon.cChunks = 0; + pDevExt->MemBalloon.cMaxChunks = 0; + pDevExt->MemBalloon.fUseKernelAPI = true; + pDevExt->MemBalloon.paMemObj = NULL; + pDevExt->MemBalloon.pOwner = NULL; + pDevExt->MouseNotifyCallback.pfnNotify = NULL; + pDevExt->MouseNotifyCallback.pvUser = NULL; + pDevExt->pReqGuestHeartbeat = NULL; + + pDevExt->fFixedEvents = fFixedEvents; + vbgdBitUsageTrackerClear(&pDevExt->EventFilterTracker); + pDevExt->fEventFilterHost = UINT32_MAX; /* forces a report */ + + vbgdBitUsageTrackerClear(&pDevExt->MouseStatusTracker); + pDevExt->fMouseStatusHost = UINT32_MAX; /* forces a report */ + + pDevExt->fAcquireModeGuestCaps = 0; + pDevExt->fSetModeGuestCaps = 0; + pDevExt->fAcquiredGuestCaps = 0; + vbgdBitUsageTrackerClear(&pDevExt->SetGuestCapsTracker); + pDevExt->fGuestCapsHost = UINT32_MAX; /* forces a report */ + + /* + * If there is an MMIO region validate the version and size. + */ + if (pvMMIOBase) + { + VMMDevMemory *pVMMDev = (VMMDevMemory *)pvMMIOBase; + Assert(cbMMIO); + if ( pVMMDev->u32Version == VMMDEV_MEMORY_VERSION + && pVMMDev->u32Size >= 32 + && pVMMDev->u32Size <= cbMMIO) + { + pDevExt->pVMMDevMemory = pVMMDev; + Log(("VbgdCommonInitDevExt: VMMDevMemory: mapping=%p size=%#RX32 (%#RX32) version=%#RX32\n", + pVMMDev, pVMMDev->u32Size, cbMMIO, pVMMDev->u32Version)); + } + else /* try live without it. */ + LogRel(("VbgdCommonInitDevExt: Bogus VMMDev memory; u32Version=%RX32 (expected %RX32) u32Size=%RX32 (expected <= %RX32)\n", + pVMMDev->u32Version, VMMDEV_MEMORY_VERSION, pVMMDev->u32Size, cbMMIO)); + } + + /* + * Create the wait and session spinlocks as well as the ballooning mutex. + */ + rc = RTSpinlockCreate(&pDevExt->EventSpinlock, RTSPINLOCK_FLAGS_INTERRUPT_SAFE, "VBoxGuestEvent"); + if (RT_SUCCESS(rc)) + rc = RTSpinlockCreate(&pDevExt->SessionSpinlock, RTSPINLOCK_FLAGS_INTERRUPT_SAFE, "VBoxGuestSession"); + if (RT_FAILURE(rc)) + { + LogRel(("VbgdCommonInitDevExt: failed to create spinlock, rc=%Rrc!\n", rc)); + if (pDevExt->EventSpinlock != NIL_RTSPINLOCK) + RTSpinlockDestroy(pDevExt->EventSpinlock); + return rc; + } + + rc = RTSemFastMutexCreate(&pDevExt->MemBalloon.hMtx); + if (RT_FAILURE(rc)) + { + LogRel(("VbgdCommonInitDevExt: failed to create mutex, rc=%Rrc!\n", rc)); + RTSpinlockDestroy(pDevExt->SessionSpinlock); + RTSpinlockDestroy(pDevExt->EventSpinlock); + return rc; + } + + /* + * Initialize the guest library and report the guest info back to VMMDev, + * set the interrupt control filter mask, and fixate the guest mappings + * made by the VMM. + */ + rc = VbglInit(pDevExt->IOPortBase, (VMMDevMemory *)pDevExt->pVMMDevMemory); + if (RT_SUCCESS(rc)) + { + rc = VbglGRAlloc((VMMDevRequestHeader **)&pDevExt->pIrqAckEvents, sizeof(VMMDevEvents), VMMDevReq_AcknowledgeEvents); + if (RT_SUCCESS(rc)) + { + pDevExt->PhysIrqAckEvents = VbglPhysHeapGetPhysAddr(pDevExt->pIrqAckEvents); + Assert(pDevExt->PhysIrqAckEvents != 0); + + rc = vbgdReportGuestInfo(enmOSType); + if (RT_SUCCESS(rc)) + { + /* + * Set the fixed event and make sure the host doesn't have any lingering + * the guest capabilities or mouse status bits set. + */ + rc = vbgdResetEventFilterOnHost(pDevExt, pDevExt->fFixedEvents); + if (RT_SUCCESS(rc)) + { + rc = vbgdResetCapabilitiesOnHost(pDevExt); + if (RT_SUCCESS(rc)) + { + rc = vbgdResetMouseStatusOnHost(pDevExt); + if (RT_SUCCESS(rc)) + { + /* + * Initialize stuff which may fail without requiring the driver init to fail. + */ + vbgdInitFixateGuestMappings(pDevExt); + vbgdHeartbeatInit(pDevExt); + + /* + * Done! + */ + rc = vbgdReportDriverStatus(true /* Driver is active */); + if (RT_FAILURE(rc)) + LogRel(("VbgdCommonInitDevExt: VBoxReportGuestDriverStatus failed, rc=%Rrc\n", rc)); + + LogFlowFunc(("VbgdCommonInitDevExt: returns success\n")); + return VINF_SUCCESS; + } + LogRel(("VbgdCommonInitDevExt: failed to clear mouse status: rc=%Rrc\n", rc)); + } + else + LogRel(("VbgdCommonInitDevExt: failed to clear guest capabilities: rc=%Rrc\n", rc)); + } + else + LogRel(("VbgdCommonInitDevExt: failed to set fixed event filter: rc=%Rrc\n", rc)); + } + else + LogRel(("VbgdCommonInitDevExt: VBoxReportGuestInfo failed: rc=%Rrc\n", rc)); + VbglGRFree((VMMDevRequestHeader *)pDevExt->pIrqAckEvents); + } + else + LogRel(("VbgdCommonInitDevExt: VBoxGRAlloc failed: rc=%Rrc\n", rc)); + + VbglTerminate(); + } + else + LogRel(("VbgdCommonInitDevExt: VbglInit failed: rc=%Rrc\n", rc)); + + rc2 = RTSemFastMutexDestroy(pDevExt->MemBalloon.hMtx); AssertRC(rc2); + rc2 = RTSpinlockDestroy(pDevExt->EventSpinlock); AssertRC(rc2); + rc2 = RTSpinlockDestroy(pDevExt->SessionSpinlock); AssertRC(rc2); + +#ifdef VBOX_GUESTDRV_WITH_RELEASE_LOGGER + RTLogDestroy(RTLogRelSetDefaultInstance(NULL)); + RTLogDestroy(RTLogSetDefaultInstance(NULL)); +#endif + return rc; /* (failed) */ +} + + +/** + * Deletes all the items in a wait chain. + * @param pList The head of the chain. + */ +static void vbgdDeleteWaitList(PRTLISTNODE pList) +{ + while (!RTListIsEmpty(pList)) + { + int rc2; + PVBOXGUESTWAIT pWait = RTListGetFirst(pList, VBOXGUESTWAIT, ListNode); + RTListNodeRemove(&pWait->ListNode); + + rc2 = RTSemEventMultiDestroy(pWait->Event); AssertRC(rc2); + pWait->Event = NIL_RTSEMEVENTMULTI; + pWait->pSession = NULL; + RTMemFree(pWait); + } +} + + +/** + * Destroys the VBoxGuest device extension. + * + * The native code should call this before the driver is loaded, + * but don't call this on shutdown. + * + * @param pDevExt The device extension. + */ +void VbgdCommonDeleteDevExt(PVBOXGUESTDEVEXT pDevExt) +{ + int rc2; + Log(("VbgdCommonDeleteDevExt:\n")); + Log(("VBoxGuest: The additions driver is terminating.\n")); + + /* + * Stop and destroy HB timer and + * disable host heartbeat checking. + */ + if (pDevExt->pHeartbeatTimer) + { + RTTimerDestroy(pDevExt->pHeartbeatTimer); + vbgdHeartbeatHostConfigure(pDevExt, false); + } + + VbglGRFree(pDevExt->pReqGuestHeartbeat); + pDevExt->pReqGuestHeartbeat = NULL; + + /* + * Clean up the bits that involves the host first. + */ + vbgdTermUnfixGuestMappings(pDevExt); + if (!RTListIsEmpty(&pDevExt->SessionList)) + { + LogRelFunc(("session list not empty!\n")); + RTListInit(&pDevExt->SessionList); + } + /* Update the host flags (mouse status etc) not to reflect this session. */ + pDevExt->fFixedEvents = 0; + vbgdResetEventFilterOnHost(pDevExt, 0 /*fFixedEvents*/); + vbgdResetCapabilitiesOnHost(pDevExt); + vbgdResetMouseStatusOnHost(pDevExt); + + vbgdCloseMemBalloon(pDevExt, (PVBOXGUESTSESSION)NULL); + + /* + * Cleanup all the other resources. + */ + rc2 = RTSpinlockDestroy(pDevExt->EventSpinlock); AssertRC(rc2); + rc2 = RTSpinlockDestroy(pDevExt->SessionSpinlock); AssertRC(rc2); + rc2 = RTSemFastMutexDestroy(pDevExt->MemBalloon.hMtx); AssertRC(rc2); + + vbgdDeleteWaitList(&pDevExt->WaitList); +#ifdef VBOX_WITH_HGCM + vbgdDeleteWaitList(&pDevExt->HGCMWaitList); +#endif +#ifdef VBOXGUEST_USE_DEFERRED_WAKE_UP + vbgdDeleteWaitList(&pDevExt->WakeUpList); +#endif + vbgdDeleteWaitList(&pDevExt->WokenUpList); + vbgdDeleteWaitList(&pDevExt->FreeList); + + VbglTerminate(); + + pDevExt->pVMMDevMemory = NULL; + + pDevExt->IOPortBase = 0; + pDevExt->pIrqAckEvents = NULL; + +#ifdef VBOX_GUESTDRV_WITH_RELEASE_LOGGER + RTLogDestroy(RTLogRelSetDefaultInstance(NULL)); + RTLogDestroy(RTLogSetDefaultInstance(NULL)); +#endif + +} + + +/** + * Creates a VBoxGuest user session. + * + * The native code calls this when a ring-3 client opens the device. + * Use VbgdCommonCreateKernelSession when a ring-0 client connects. + * + * @returns VBox status code. + * @param pDevExt The device extension. + * @param ppSession Where to store the session on success. + */ +int VbgdCommonCreateUserSession(PVBOXGUESTDEVEXT pDevExt, PVBOXGUESTSESSION *ppSession) +{ + PVBOXGUESTSESSION pSession = (PVBOXGUESTSESSION)RTMemAllocZ(sizeof(*pSession)); + if (RT_UNLIKELY(!pSession)) + { + LogRel(("VbgdCommonCreateUserSession: no memory!\n")); + return VERR_NO_MEMORY; + } + + pSession->Process = RTProcSelf(); + pSession->R0Process = RTR0ProcHandleSelf(); + pSession->pDevExt = pDevExt; + RTSpinlockAcquire(pDevExt->SessionSpinlock); + RTListAppend(&pDevExt->SessionList, &pSession->ListNode); + pDevExt->cSessions++; + RTSpinlockRelease(pDevExt->SessionSpinlock); + + *ppSession = pSession; + LogFlow(("VbgdCommonCreateUserSession: pSession=%p proc=%RTproc (%d) r0proc=%p\n", + pSession, pSession->Process, (int)pSession->Process, (uintptr_t)pSession->R0Process)); /** @todo %RTr0proc */ + return VINF_SUCCESS; +} + + +/** + * Creates a VBoxGuest kernel session. + * + * The native code calls this when a ring-0 client connects to the device. + * Use VbgdCommonCreateUserSession when a ring-3 client opens the device. + * + * @returns VBox status code. + * @param pDevExt The device extension. + * @param ppSession Where to store the session on success. + */ +int VbgdCommonCreateKernelSession(PVBOXGUESTDEVEXT pDevExt, PVBOXGUESTSESSION *ppSession) +{ + PVBOXGUESTSESSION pSession = (PVBOXGUESTSESSION)RTMemAllocZ(sizeof(*pSession)); + if (RT_UNLIKELY(!pSession)) + { + LogRel(("VbgdCommonCreateKernelSession: no memory!\n")); + return VERR_NO_MEMORY; + } + + pSession->Process = NIL_RTPROCESS; + pSession->R0Process = NIL_RTR0PROCESS; + pSession->pDevExt = pDevExt; + RTSpinlockAcquire(pDevExt->SessionSpinlock); + RTListAppend(&pDevExt->SessionList, &pSession->ListNode); + pDevExt->cSessions++; + RTSpinlockRelease(pDevExt->SessionSpinlock); + + *ppSession = pSession; + LogFlow(("VbgdCommonCreateKernelSession: pSession=%p proc=%RTproc (%d) r0proc=%p\n", + pSession, pSession->Process, (int)pSession->Process, (uintptr_t)pSession->R0Process)); /** @todo %RTr0proc */ + return VINF_SUCCESS; +} + + +/** + * Closes a VBoxGuest session. + * + * @param pDevExt The device extension. + * @param pSession The session to close (and free). + */ +void VbgdCommonCloseSession(PVBOXGUESTDEVEXT pDevExt, PVBOXGUESTSESSION pSession) +{ +#ifdef VBOX_WITH_HGCM + unsigned i; +#endif + LogFlow(("VbgdCommonCloseSession: pSession=%p proc=%RTproc (%d) r0proc=%p\n", + pSession, pSession->Process, (int)pSession->Process, (uintptr_t)pSession->R0Process)); /** @todo %RTr0proc */ + + RTSpinlockAcquire(pDevExt->SessionSpinlock); + RTListNodeRemove(&pSession->ListNode); + pDevExt->cSessions--; + RTSpinlockRelease(pDevExt->SessionSpinlock); + vbgdAcquireSessionCapabilities(pDevExt, pSession, 0, UINT32_MAX, VBOXGUESTCAPSACQUIRE_FLAGS_NONE, + true /*fSessionTermination*/); + vbgdSetSessionCapabilities(pDevExt, pSession, 0 /*fOrMask*/, UINT32_MAX /*fNotMask*/, true /*fSessionTermination*/); + vbgdSetSessionEventFilter(pDevExt, pSession, 0 /*fOrMask*/, UINT32_MAX /*fNotMask*/, true /*fSessionTermination*/); + vbgdSetSessionMouseStatus(pDevExt, pSession, 0 /*fOrMask*/, UINT32_MAX /*fNotMask*/, true /*fSessionTermination*/); + + vbgdIoCtl_CancelAllWaitEvents(pDevExt, pSession); + +#ifdef VBOX_WITH_HGCM + for (i = 0; i < RT_ELEMENTS(pSession->aHGCMClientIds); i++) + if (pSession->aHGCMClientIds[i]) + { + VBoxGuestHGCMDisconnectInfo Info; + Info.result = 0; + Info.u32ClientID = pSession->aHGCMClientIds[i]; + pSession->aHGCMClientIds[i] = 0; + Log(("VbgdCommonCloseSession: disconnecting client id %#RX32\n", Info.u32ClientID)); + VbglR0HGCMInternalDisconnect(&Info, vbgdHgcmAsyncWaitCallback, pDevExt, RT_INDEFINITE_WAIT); + } +#endif + + pSession->pDevExt = NULL; + pSession->Process = NIL_RTPROCESS; + pSession->R0Process = NIL_RTR0PROCESS; + vbgdCloseMemBalloon(pDevExt, pSession); + RTMemFree(pSession); +} + + +/** + * Allocates a wait-for-event entry. + * + * @returns The wait-for-event entry. + * @param pDevExt The device extension. + * @param pSession The session that's allocating this. Can be NULL. + */ +static PVBOXGUESTWAIT vbgdWaitAlloc(PVBOXGUESTDEVEXT pDevExt, PVBOXGUESTSESSION pSession) +{ + /* + * Allocate it one way or the other. + */ + PVBOXGUESTWAIT pWait = RTListGetFirst(&pDevExt->FreeList, VBOXGUESTWAIT, ListNode); + if (pWait) + { + RTSpinlockAcquire(pDevExt->EventSpinlock); + + pWait = RTListGetFirst(&pDevExt->FreeList, VBOXGUESTWAIT, ListNode); + if (pWait) + RTListNodeRemove(&pWait->ListNode); + + RTSpinlockRelease(pDevExt->EventSpinlock); + } + if (!pWait) + { + int rc; + + pWait = (PVBOXGUESTWAIT)RTMemAlloc(sizeof(*pWait)); + if (!pWait) + { + LogRelMax(32, ("vbgdWaitAlloc: out-of-memory!\n")); + return NULL; + } + + rc = RTSemEventMultiCreate(&pWait->Event); + if (RT_FAILURE(rc)) + { + LogRelMax(32, ("VbgdCommonIoCtl: RTSemEventMultiCreate failed with rc=%Rrc!\n", rc)); + RTMemFree(pWait); + return NULL; + } + + pWait->ListNode.pNext = NULL; + pWait->ListNode.pPrev = NULL; + } + + /* + * Zero members just as an precaution. + */ + pWait->fReqEvents = 0; + pWait->fResEvents = 0; +#ifdef VBOXGUEST_USE_DEFERRED_WAKE_UP + pWait->fPendingWakeUp = false; + pWait->fFreeMe = false; +#endif + pWait->pSession = pSession; +#ifdef VBOX_WITH_HGCM + pWait->pHGCMReq = NULL; +#endif + RTSemEventMultiReset(pWait->Event); + return pWait; +} + + +/** + * Frees the wait-for-event entry. + * + * The caller must own the wait spinlock ! + * The entry must be in a list! + * + * @param pDevExt The device extension. + * @param pWait The wait-for-event entry to free. + */ +static void vbgdWaitFreeLocked(PVBOXGUESTDEVEXT pDevExt, PVBOXGUESTWAIT pWait) +{ + pWait->fReqEvents = 0; + pWait->fResEvents = 0; +#ifdef VBOX_WITH_HGCM + pWait->pHGCMReq = NULL; +#endif +#ifdef VBOXGUEST_USE_DEFERRED_WAKE_UP + Assert(!pWait->fFreeMe); + if (pWait->fPendingWakeUp) + pWait->fFreeMe = true; + else +#endif + { + RTListNodeRemove(&pWait->ListNode); + RTListAppend(&pDevExt->FreeList, &pWait->ListNode); + } +} + + +/** + * Frees the wait-for-event entry. + * + * @param pDevExt The device extension. + * @param pWait The wait-for-event entry to free. + */ +static void vbgdWaitFreeUnlocked(PVBOXGUESTDEVEXT pDevExt, PVBOXGUESTWAIT pWait) +{ + RTSpinlockAcquire(pDevExt->EventSpinlock); + vbgdWaitFreeLocked(pDevExt, pWait); + RTSpinlockRelease(pDevExt->EventSpinlock); +} + + +#ifdef VBOXGUEST_USE_DEFERRED_WAKE_UP +/** + * Processes the wake-up list. + * + * All entries in the wake-up list gets signalled and moved to the woken-up + * list. + * + * @param pDevExt The device extension. + */ +void VbgdCommonWaitDoWakeUps(PVBOXGUESTDEVEXT pDevExt) +{ + if (!RTListIsEmpty(&pDevExt->WakeUpList)) + { + RTSpinlockAcquire(pDevExt->EventSpinlock); + for (;;) + { + int rc; + PVBOXGUESTWAIT pWait = RTListGetFirst(&pDevExt->WakeUpList, VBOXGUESTWAIT, ListNode); + if (!pWait) + break; + pWait->fPendingWakeUp = true; + RTSpinlockRelease(pDevExt->EventSpinlock); + + rc = RTSemEventMultiSignal(pWait->Event); + AssertRC(rc); + + RTSpinlockAcquire(pDevExt->EventSpinlock); + pWait->fPendingWakeUp = false; + if (!pWait->fFreeMe) + { + RTListNodeRemove(&pWait->ListNode); + RTListAppend(&pDevExt->WokenUpList, &pWait->ListNode); + } + else + { + pWait->fFreeMe = false; + vbgdWaitFreeLocked(pDevExt, pWait); + } + } + RTSpinlockRelease(pDevExt->EventSpinlock); + } +} +#endif /* VBOXGUEST_USE_DEFERRED_WAKE_UP */ + + +/** + * Implements the fast (no input or output) type of IOCtls. + * + * This is currently just a placeholder stub inherited from the support driver code. + * + * @returns VBox status code. + * @param iFunction The IOCtl function number. + * @param pDevExt The device extension. + * @param pSession The session. + */ +int VbgdCommonIoCtlFast(unsigned iFunction, PVBOXGUESTDEVEXT pDevExt, PVBOXGUESTSESSION pSession) +{ + LogFlow(("VbgdCommonIoCtlFast: iFunction=%#x pDevExt=%p pSession=%p\n", iFunction, pDevExt, pSession)); + + NOREF(iFunction); + NOREF(pDevExt); + NOREF(pSession); + return VERR_NOT_SUPPORTED; +} + + +/** + * Return the VMM device port. + * + * returns IPRT status code. + * @param pDevExt The device extension. + * @param pInfo The request info. + * @param pcbDataReturned (out) contains the number of bytes to return. + */ +static int vbgdIoCtl_GetVMMDevPort(PVBOXGUESTDEVEXT pDevExt, VBoxGuestPortInfo *pInfo, size_t *pcbDataReturned) +{ + LogFlow(("VBOXGUEST_IOCTL_GETVMMDEVPORT\n")); + + pInfo->portAddress = pDevExt->IOPortBase; + pInfo->pVMMDevMemory = (VMMDevMemory *)pDevExt->pVMMDevMemory; + if (pcbDataReturned) + *pcbDataReturned = sizeof(*pInfo); + return VINF_SUCCESS; +} + + +#ifndef RT_OS_WINDOWS +/** + * Set the callback for the kernel mouse handler. + * + * returns IPRT status code. + * @param pDevExt The device extension. + * @param pNotify The new callback information. + */ +int vbgdIoCtl_SetMouseNotifyCallback(PVBOXGUESTDEVEXT pDevExt, VBoxGuestMouseSetNotifyCallback *pNotify) +{ + LogFlow(("VBOXGUEST_IOCTL_SET_MOUSE_NOTIFY_CALLBACK: pfnNotify=%p pvUser=%p\n", pNotify->pfnNotify, pNotify->pvUser)); + + RTSpinlockAcquire(pDevExt->EventSpinlock); + pDevExt->MouseNotifyCallback = *pNotify; + RTSpinlockRelease(pDevExt->EventSpinlock); + return VINF_SUCCESS; +} +#endif + + +/** + * Worker vbgdIoCtl_WaitEvent. + * + * The caller enters the spinlock, we leave it. + * + * @returns VINF_SUCCESS if we've left the spinlock and can return immediately. + */ +DECLINLINE(int) vbdgCheckWaitEventCondition(PVBOXGUESTDEVEXT pDevExt, PVBOXGUESTSESSION pSession, + VBoxGuestWaitEventInfo *pInfo, int iEvent, const uint32_t fReqEvents) +{ + uint32_t fMatches = pDevExt->f32PendingEvents & fReqEvents; + if (fMatches & VBOXGUEST_ACQUIRE_STYLE_EVENTS) + fMatches &= vbgdGetAllowedEventMaskForSession(pDevExt, pSession); + if (fMatches || pSession->fPendingCancelWaitEvents) + { + ASMAtomicAndU32(&pDevExt->f32PendingEvents, ~fMatches); + RTSpinlockRelease(pDevExt->EventSpinlock); + + pInfo->u32EventFlagsOut = fMatches; + pInfo->u32Result = VBOXGUEST_WAITEVENT_OK; + if (fReqEvents & ~((uint32_t)1 << iEvent)) + LogFlow(("VBOXGUEST_IOCTL_WAITEVENT: returns %#x\n", pInfo->u32EventFlagsOut)); + else + LogFlow(("VBOXGUEST_IOCTL_WAITEVENT: returns %#x/%d\n", pInfo->u32EventFlagsOut, iEvent)); + pSession->fPendingCancelWaitEvents = false; + return VINF_SUCCESS; + } + + RTSpinlockRelease(pDevExt->EventSpinlock); + return VERR_TIMEOUT; +} + + +static int vbgdIoCtl_WaitEvent(PVBOXGUESTDEVEXT pDevExt, PVBOXGUESTSESSION pSession, + VBoxGuestWaitEventInfo *pInfo, size_t *pcbDataReturned, bool fInterruptible) +{ + const uint32_t fReqEvents = pInfo->u32EventMaskIn; + uint32_t fResEvents; + int iEvent; + PVBOXGUESTWAIT pWait; + int rc; + + pInfo->u32EventFlagsOut = 0; + pInfo->u32Result = VBOXGUEST_WAITEVENT_ERROR; + if (pcbDataReturned) + *pcbDataReturned = sizeof(*pInfo); + + /* + * Copy and verify the input mask. + */ + iEvent = ASMBitFirstSetU32(fReqEvents) - 1; + if (RT_UNLIKELY(iEvent < 0)) + { + LogRel(("VBOXGUEST_IOCTL_WAITEVENT: Invalid input mask %#x!!\n", fReqEvents)); + return VERR_INVALID_PARAMETER; + } + + /* + * Check the condition up front, before doing the wait-for-event allocations. + */ + RTSpinlockAcquire(pDevExt->EventSpinlock); + rc = vbdgCheckWaitEventCondition(pDevExt, pSession, pInfo, iEvent, fReqEvents); + if (rc == VINF_SUCCESS) + return rc; + + if (!pInfo->u32TimeoutIn) + { + pInfo->u32Result = VBOXGUEST_WAITEVENT_TIMEOUT; + LogFlow(("VBOXGUEST_IOCTL_WAITEVENT: returns VERR_TIMEOUT\n")); + return VERR_TIMEOUT; + } + + pWait = vbgdWaitAlloc(pDevExt, pSession); + if (!pWait) + return VERR_NO_MEMORY; + pWait->fReqEvents = fReqEvents; + + /* + * We've got the wait entry now, re-enter the spinlock and check for the condition. + * If the wait condition is met, return. + * Otherwise enter into the list and go to sleep waiting for the ISR to signal us. + */ + RTSpinlockAcquire(pDevExt->EventSpinlock); + RTListAppend(&pDevExt->WaitList, &pWait->ListNode); + rc = vbdgCheckWaitEventCondition(pDevExt, pSession, pInfo, iEvent, fReqEvents); + if (rc == VINF_SUCCESS) + { + vbgdWaitFreeUnlocked(pDevExt, pWait); + return rc; + } + + if (fInterruptible) + rc = RTSemEventMultiWaitNoResume(pWait->Event, + pInfo->u32TimeoutIn == UINT32_MAX ? RT_INDEFINITE_WAIT : pInfo->u32TimeoutIn); + else + rc = RTSemEventMultiWait(pWait->Event, + pInfo->u32TimeoutIn == UINT32_MAX ? RT_INDEFINITE_WAIT : pInfo->u32TimeoutIn); + + /* + * There is one special case here and that's when the semaphore is + * destroyed upon device driver unload. This shouldn't happen of course, + * but in case it does, just get out of here ASAP. + */ + if (rc == VERR_SEM_DESTROYED) + return rc; + + /* + * Unlink the wait item and dispose of it. + */ + RTSpinlockAcquire(pDevExt->EventSpinlock); + fResEvents = pWait->fResEvents; + vbgdWaitFreeLocked(pDevExt, pWait); + RTSpinlockRelease(pDevExt->EventSpinlock); + + /* + * Now deal with the return code. + */ + if ( fResEvents + && fResEvents != UINT32_MAX) + { + pInfo->u32EventFlagsOut = fResEvents; + pInfo->u32Result = VBOXGUEST_WAITEVENT_OK; + if (fReqEvents & ~((uint32_t)1 << iEvent)) + LogFlow(("VBOXGUEST_IOCTL_WAITEVENT: returns %#x\n", pInfo->u32EventFlagsOut)); + else + LogFlow(("VBOXGUEST_IOCTL_WAITEVENT: returns %#x/%d\n", pInfo->u32EventFlagsOut, iEvent)); + rc = VINF_SUCCESS; + } + else if ( fResEvents == UINT32_MAX + || rc == VERR_INTERRUPTED) + { + pInfo->u32Result = VBOXGUEST_WAITEVENT_INTERRUPTED; + rc = VERR_INTERRUPTED; + LogFlow(("VBOXGUEST_IOCTL_WAITEVENT: returns VERR_INTERRUPTED\n")); + } + else if (rc == VERR_TIMEOUT) + { + pInfo->u32Result = VBOXGUEST_WAITEVENT_TIMEOUT; + LogFlow(("VBOXGUEST_IOCTL_WAITEVENT: returns VERR_TIMEOUT (2)\n")); + } + else + { + if (RT_SUCCESS(rc)) + { + LogRelMax(32, ("VBOXGUEST_IOCTL_WAITEVENT: returns %Rrc but no events!\n", rc)); + rc = VERR_INTERNAL_ERROR; + } + pInfo->u32Result = VBOXGUEST_WAITEVENT_ERROR; + LogFlow(("VBOXGUEST_IOCTL_WAITEVENT: returns %Rrc\n", rc)); + } + + return rc; +} + + +static int vbgdIoCtl_CancelAllWaitEvents(PVBOXGUESTDEVEXT pDevExt, PVBOXGUESTSESSION pSession) +{ + PVBOXGUESTWAIT pWait; + PVBOXGUESTWAIT pSafe; + int rc = 0; + /* Was as least one WAITEVENT in process for this session? If not we + * set a flag that the next call should be interrupted immediately. This + * is needed so that a user thread can reliably interrupt another one in a + * WAITEVENT loop. */ + bool fCancelledOne = false; + + LogFlow(("VBOXGUEST_IOCTL_CANCEL_ALL_WAITEVENTS\n")); + + /* + * Walk the event list and wake up anyone with a matching session. + */ + RTSpinlockAcquire(pDevExt->EventSpinlock); + RTListForEachSafe(&pDevExt->WaitList, pWait, pSafe, VBOXGUESTWAIT, ListNode) + { + if (pWait->pSession == pSession) + { + fCancelledOne = true; + pWait->fResEvents = UINT32_MAX; + RTListNodeRemove(&pWait->ListNode); +#ifdef VBOXGUEST_USE_DEFERRED_WAKE_UP + RTListAppend(&pDevExt->WakeUpList, &pWait->ListNode); +#else + rc |= RTSemEventMultiSignal(pWait->Event); + RTListAppend(&pDevExt->WokenUpList, &pWait->ListNode); +#endif + } + } + if (!fCancelledOne) + pSession->fPendingCancelWaitEvents = true; + RTSpinlockRelease(pDevExt->EventSpinlock); + Assert(rc == 0); + NOREF(rc); + +#ifdef VBOXGUEST_USE_DEFERRED_WAKE_UP + VbgdCommonWaitDoWakeUps(pDevExt); +#endif + + return VINF_SUCCESS; +} + + +/** + * Checks if the VMM request is allowed in the context of the given session. + * + * @returns VINF_SUCCESS or VERR_PERMISSION_DENIED. + * @param pSession The calling session. + * @param enmType The request type. + * @param pReqHdr The request. + */ +static int vbgdCheckIfVmmReqIsAllowed(PVBOXGUESTDEVEXT pDevExt, PVBOXGUESTSESSION pSession, VMMDevRequestType enmType, + VMMDevRequestHeader const *pReqHdr) +{ + /* + * Categorize the request being made. + */ + /** @todo This need quite some more work! */ + enum + { + kLevel_Invalid, kLevel_NoOne, kLevel_OnlyVBoxGuest, kLevel_OnlyKernel, kLevel_TrustedUsers, kLevel_AllUsers + } enmRequired; + switch (enmType) + { + /* + * Deny access to anything we don't know or provide specialized I/O controls for. + */ +#ifdef VBOX_WITH_HGCM + case VMMDevReq_HGCMConnect: + case VMMDevReq_HGCMDisconnect: +# ifdef VBOX_WITH_64_BITS_GUESTS + case VMMDevReq_HGCMCall32: + case VMMDevReq_HGCMCall64: +# else + case VMMDevReq_HGCMCall: +# endif /* VBOX_WITH_64_BITS_GUESTS */ + case VMMDevReq_HGCMCancel: + case VMMDevReq_HGCMCancel2: +#endif /* VBOX_WITH_HGCM */ + case VMMDevReq_SetGuestCapabilities: + default: + enmRequired = kLevel_NoOne; + break; + + /* + * There are a few things only this driver can do (and it doesn't use + * the VMMRequst I/O control route anyway, but whatever). + */ + case VMMDevReq_ReportGuestInfo: + case VMMDevReq_ReportGuestInfo2: + case VMMDevReq_GetHypervisorInfo: + case VMMDevReq_SetHypervisorInfo: + case VMMDevReq_RegisterPatchMemory: + case VMMDevReq_DeregisterPatchMemory: + case VMMDevReq_GetMemBalloonChangeRequest: + enmRequired = kLevel_OnlyVBoxGuest; + break; + + /* + * Trusted users apps only. + */ + case VMMDevReq_QueryCredentials: + case VMMDevReq_ReportCredentialsJudgement: + case VMMDevReq_RegisterSharedModule: + case VMMDevReq_UnregisterSharedModule: + case VMMDevReq_WriteCoreDump: + case VMMDevReq_GetCpuHotPlugRequest: + case VMMDevReq_SetCpuHotPlugStatus: + case VMMDevReq_CheckSharedModules: + case VMMDevReq_GetPageSharingStatus: + case VMMDevReq_DebugIsPageShared: + case VMMDevReq_ReportGuestStats: + case VMMDevReq_ReportGuestUserState: + case VMMDevReq_GetStatisticsChangeRequest: + case VMMDevReq_ChangeMemBalloon: + enmRequired = kLevel_TrustedUsers; + break; + + /* + * Anyone. + */ + case VMMDevReq_GetMouseStatus: + case VMMDevReq_SetMouseStatus: + case VMMDevReq_SetPointerShape: + case VMMDevReq_GetHostVersion: + case VMMDevReq_Idle: + case VMMDevReq_GetHostTime: + case VMMDevReq_SetPowerStatus: + case VMMDevReq_AcknowledgeEvents: + case VMMDevReq_CtlGuestFilterMask: + case VMMDevReq_ReportGuestStatus: + case VMMDevReq_GetDisplayChangeRequest: + case VMMDevReq_VideoModeSupported: + case VMMDevReq_GetHeightReduction: + case VMMDevReq_GetDisplayChangeRequest2: + case VMMDevReq_VideoModeSupported2: + case VMMDevReq_VideoAccelEnable: + case VMMDevReq_VideoAccelFlush: + case VMMDevReq_VideoSetVisibleRegion: + case VMMDevReq_GetDisplayChangeRequestEx: + case VMMDevReq_GetSeamlessChangeRequest: + case VMMDevReq_GetVRDPChangeRequest: + case VMMDevReq_LogString: + case VMMDevReq_GetSessionId: + enmRequired = kLevel_AllUsers; + break; + + /* + * Depends on the request parameters... + */ + /** @todo this have to be changed into an I/O control and the facilities + * tracked in the session so they can automatically be failed when the + * session terminates without reporting the new status. + * + * The information presented by IGuest is not reliable without this! */ + case VMMDevReq_ReportGuestCapabilities: + switch (((VMMDevReportGuestStatus const *)pReqHdr)->guestStatus.facility) + { + case VBoxGuestFacilityType_All: + case VBoxGuestFacilityType_VBoxGuestDriver: + enmRequired = kLevel_OnlyVBoxGuest; + break; + case VBoxGuestFacilityType_VBoxService: + enmRequired = kLevel_TrustedUsers; + break; + case VBoxGuestFacilityType_VBoxTrayClient: + case VBoxGuestFacilityType_Seamless: + case VBoxGuestFacilityType_Graphics: + default: + enmRequired = kLevel_AllUsers; + break; + } + break; + } + + /* + * Check against the session. + */ + switch (enmRequired) + { + default: + case kLevel_NoOne: + break; + case kLevel_OnlyVBoxGuest: + case kLevel_OnlyKernel: + if (pSession->R0Process == NIL_RTR0PROCESS) + return VINF_SUCCESS; + break; + case kLevel_TrustedUsers: + case kLevel_AllUsers: + return VINF_SUCCESS; + } + + return VERR_PERMISSION_DENIED; +} + +static int vbgdIoCtl_VMMRequest(PVBOXGUESTDEVEXT pDevExt, PVBOXGUESTSESSION pSession, + VMMDevRequestHeader *pReqHdr, size_t cbData, size_t *pcbDataReturned) +{ + int rc; + VMMDevRequestHeader *pReqCopy; + + /* + * Validate the header and request size. + */ + const VMMDevRequestType enmType = pReqHdr->requestType; + const uint32_t cbReq = pReqHdr->size; + const uint32_t cbMinSize = (uint32_t)vmmdevGetRequestSize(enmType); + + LogFlow(("VBOXGUEST_IOCTL_VMMREQUEST: type %d\n", pReqHdr->requestType)); + + if (cbReq < cbMinSize) + { + LogRel(("VBOXGUEST_IOCTL_VMMREQUEST: invalid hdr size %#x, expected >= %#x; type=%#x!!\n", + cbReq, cbMinSize, enmType)); + return VERR_INVALID_PARAMETER; + } + if (cbReq > cbData) + { + LogRel(("VBOXGUEST_IOCTL_VMMREQUEST: invalid size %#x, expected >= %#x (hdr); type=%#x!!\n", + cbData, cbReq, enmType)); + return VERR_INVALID_PARAMETER; + } + rc = VbglGRVerify(pReqHdr, cbData); + if (RT_FAILURE(rc)) + { + Log(("VBOXGUEST_IOCTL_VMMREQUEST: invalid header: size %#x, expected >= %#x (hdr); type=%#x; rc=%Rrc!!\n", + cbData, cbReq, enmType, rc)); + return rc; + } + + rc = vbgdCheckIfVmmReqIsAllowed(pDevExt, pSession, enmType, pReqHdr); + if (RT_FAILURE(rc)) + { + Log(("VBOXGUEST_IOCTL_VMMREQUEST: Operation not allowed! type=%#x rc=%Rrc\n", enmType, rc)); + return rc; + } + + /* + * Make a copy of the request in the physical memory heap so + * the VBoxGuestLibrary can more easily deal with the request. + * (This is really a waste of time since the OS or the OS specific + * code has already buffered or locked the input/output buffer, but + * it does makes things a bit simpler wrt to phys address.) + */ + rc = VbglGRAlloc(&pReqCopy, cbReq, enmType); + if (RT_FAILURE(rc)) + { + Log(("VBOXGUEST_IOCTL_VMMREQUEST: failed to allocate %u (%#x) bytes to cache the request. rc=%Rrc!!\n", + cbReq, cbReq, rc)); + return rc; + } + memcpy(pReqCopy, pReqHdr, cbReq); + + if (enmType == VMMDevReq_GetMouseStatus) /* clear poll condition. */ + pSession->u32MousePosChangedSeq = ASMAtomicUoReadU32(&pDevExt->u32MousePosChangedSeq); + + rc = VbglGRPerform(pReqCopy); + if ( RT_SUCCESS(rc) + && RT_SUCCESS(pReqCopy->rc)) + { + Assert(rc != VINF_HGCM_ASYNC_EXECUTE); + Assert(pReqCopy->rc != VINF_HGCM_ASYNC_EXECUTE); + + memcpy(pReqHdr, pReqCopy, cbReq); + if (pcbDataReturned) + *pcbDataReturned = cbReq; + } + else if (RT_FAILURE(rc)) + Log(("VBOXGUEST_IOCTL_VMMREQUEST: VbglGRPerform - rc=%Rrc!\n", rc)); + else + { + Log(("VBOXGUEST_IOCTL_VMMREQUEST: request execution failed; VMMDev rc=%Rrc!\n", pReqCopy->rc)); + rc = pReqCopy->rc; + } + + VbglGRFree(pReqCopy); + return rc; +} + + +#ifdef VBOX_WITH_HGCM + +AssertCompile(RT_INDEFINITE_WAIT == (uint32_t)RT_INDEFINITE_WAIT); /* assumed by code below */ + +/** Worker for vbgdHgcmAsyncWaitCallback*. */ +static int vbgdHgcmAsyncWaitCallbackWorker(VMMDevHGCMRequestHeader volatile *pHdr, PVBOXGUESTDEVEXT pDevExt, + bool fInterruptible, uint32_t cMillies) +{ + int rc; + + /* + * Check to see if the condition was met by the time we got here. + * + * We create a simple poll loop here for dealing with out-of-memory + * conditions since the caller isn't necessarily able to deal with + * us returning too early. + */ + PVBOXGUESTWAIT pWait; + for (;;) + { + RTSpinlockAcquire(pDevExt->EventSpinlock); + if ((pHdr->fu32Flags & VBOX_HGCM_REQ_DONE) != 0) + { + RTSpinlockRelease(pDevExt->EventSpinlock); + return VINF_SUCCESS; + } + RTSpinlockRelease(pDevExt->EventSpinlock); + + pWait = vbgdWaitAlloc(pDevExt, NULL); + if (pWait) + break; + if (fInterruptible) + return VERR_INTERRUPTED; + RTThreadSleep(1); + } + pWait->fReqEvents = VMMDEV_EVENT_HGCM; + pWait->pHGCMReq = pHdr; + + /* + * Re-enter the spinlock and re-check for the condition. + * If the condition is met, return. + * Otherwise link us into the HGCM wait list and go to sleep. + */ + RTSpinlockAcquire(pDevExt->EventSpinlock); + RTListAppend(&pDevExt->HGCMWaitList, &pWait->ListNode); + if ((pHdr->fu32Flags & VBOX_HGCM_REQ_DONE) != 0) + { + vbgdWaitFreeLocked(pDevExt, pWait); + RTSpinlockRelease(pDevExt->EventSpinlock); + return VINF_SUCCESS; + } + RTSpinlockRelease(pDevExt->EventSpinlock); + + if (fInterruptible) + rc = RTSemEventMultiWaitNoResume(pWait->Event, cMillies); + else + rc = RTSemEventMultiWait(pWait->Event, cMillies); + if (rc == VERR_SEM_DESTROYED) + return rc; + + /* + * Unlink, free and return. + */ + if ( RT_FAILURE(rc) + && rc != VERR_TIMEOUT + && ( !fInterruptible + || rc != VERR_INTERRUPTED)) + LogRel(("vbgdHgcmAsyncWaitCallback: wait failed! %Rrc\n", rc)); + + vbgdWaitFreeUnlocked(pDevExt, pWait); + return rc; +} + + +/** + * This is a callback for dealing with async waits. + * + * It operates in a manner similar to vbgdIoCtl_WaitEvent. + */ +static DECLCALLBACK(int) vbgdHgcmAsyncWaitCallback(VMMDevHGCMRequestHeader *pHdr, void *pvUser, uint32_t u32User) +{ + PVBOXGUESTDEVEXT pDevExt = (PVBOXGUESTDEVEXT)pvUser; + LogFlow(("vbgdHgcmAsyncWaitCallback: requestType=%d\n", pHdr->header.requestType)); + return vbgdHgcmAsyncWaitCallbackWorker((VMMDevHGCMRequestHeader volatile *)pHdr, pDevExt, + false /* fInterruptible */, u32User /* cMillies */); +} + + +/** + * This is a callback for dealing with async waits with a timeout. + * + * It operates in a manner similar to vbgdIoCtl_WaitEvent. + */ +static DECLCALLBACK(int) vbgdHgcmAsyncWaitCallbackInterruptible(VMMDevHGCMRequestHeader *pHdr, void *pvUser, uint32_t u32User) +{ + PVBOXGUESTDEVEXT pDevExt = (PVBOXGUESTDEVEXT)pvUser; + LogFlow(("vbgdHgcmAsyncWaitCallbackInterruptible: requestType=%d\n", pHdr->header.requestType)); + return vbgdHgcmAsyncWaitCallbackWorker((VMMDevHGCMRequestHeader volatile *)pHdr, pDevExt, + true /* fInterruptible */, u32User /* cMillies */); +} + + +static int vbgdIoCtl_HGCMConnect(PVBOXGUESTDEVEXT pDevExt, PVBOXGUESTSESSION pSession, + VBoxGuestHGCMConnectInfo *pInfo, size_t *pcbDataReturned) +{ + int rc; + + /* + * The VbglHGCMConnect call will invoke the callback if the HGCM + * call is performed in an ASYNC fashion. The function is not able + * to deal with cancelled requests. + */ + Log(("VBOXGUEST_IOCTL_HGCM_CONNECT: %.128s\n", + pInfo->Loc.type == VMMDevHGCMLoc_LocalHost || pInfo->Loc.type == VMMDevHGCMLoc_LocalHost_Existing + ? pInfo->Loc.u.host.achName : "")); + + rc = VbglR0HGCMInternalConnect(pInfo, vbgdHgcmAsyncWaitCallback, pDevExt, RT_INDEFINITE_WAIT); + if (RT_SUCCESS(rc)) + { + Log(("VBOXGUEST_IOCTL_HGCM_CONNECT: u32Client=%RX32 result=%Rrc (rc=%Rrc)\n", + pInfo->u32ClientID, pInfo->result, rc)); + if (RT_SUCCESS(pInfo->result)) + { + /* + * Append the client id to the client id table. + * If the table has somehow become filled up, we'll disconnect the session. + */ + unsigned i; + RTSpinlockAcquire(pDevExt->SessionSpinlock); + for (i = 0; i < RT_ELEMENTS(pSession->aHGCMClientIds); i++) + if (!pSession->aHGCMClientIds[i]) + { + pSession->aHGCMClientIds[i] = pInfo->u32ClientID; + break; + } + RTSpinlockRelease(pDevExt->SessionSpinlock); + if (i >= RT_ELEMENTS(pSession->aHGCMClientIds)) + { + VBoxGuestHGCMDisconnectInfo Info; + LogRelMax(32, ("VBOXGUEST_IOCTL_HGCM_CONNECT: too many HGCMConnect calls for one session!\n")); + Info.result = 0; + Info.u32ClientID = pInfo->u32ClientID; + VbglR0HGCMInternalDisconnect(&Info, vbgdHgcmAsyncWaitCallback, pDevExt, RT_INDEFINITE_WAIT); + return VERR_TOO_MANY_OPEN_FILES; + } + } + else + rc = pInfo->result; + if (pcbDataReturned) + *pcbDataReturned = sizeof(*pInfo); + } + return rc; +} + + +static int vbgdIoCtl_HGCMDisconnect(PVBOXGUESTDEVEXT pDevExt, PVBOXGUESTSESSION pSession, + VBoxGuestHGCMDisconnectInfo *pInfo, size_t *pcbDataReturned) +{ + /* + * Validate the client id and invalidate its entry while we're in the call. + */ + int rc; + const uint32_t u32ClientId = pInfo->u32ClientID; + unsigned i; + RTSpinlockAcquire(pDevExt->SessionSpinlock); + for (i = 0; i < RT_ELEMENTS(pSession->aHGCMClientIds); i++) + if (pSession->aHGCMClientIds[i] == u32ClientId) + { + pSession->aHGCMClientIds[i] = UINT32_MAX; + break; + } + RTSpinlockRelease(pDevExt->SessionSpinlock); + if (i >= RT_ELEMENTS(pSession->aHGCMClientIds)) + { + LogRelMax(32, ("VBOXGUEST_IOCTL_HGCM_DISCONNECT: u32Client=%RX32\n", u32ClientId)); + return VERR_INVALID_HANDLE; + } + + /* + * The VbglHGCMConnect call will invoke the callback if the HGCM + * call is performed in an ASYNC fashion. The function is not able + * to deal with cancelled requests. + */ + Log(("VBOXGUEST_IOCTL_HGCM_DISCONNECT: u32Client=%RX32\n", pInfo->u32ClientID)); + rc = VbglR0HGCMInternalDisconnect(pInfo, vbgdHgcmAsyncWaitCallback, pDevExt, RT_INDEFINITE_WAIT); + if (RT_SUCCESS(rc)) + { + LogFlow(("VBOXGUEST_IOCTL_HGCM_DISCONNECT: result=%Rrc\n", pInfo->result)); + if (pcbDataReturned) + *pcbDataReturned = sizeof(*pInfo); + } + + /* Update the client id array according to the result. */ + RTSpinlockAcquire(pDevExt->SessionSpinlock); + if (pSession->aHGCMClientIds[i] == UINT32_MAX) + pSession->aHGCMClientIds[i] = RT_SUCCESS(rc) && RT_SUCCESS(pInfo->result) ? 0 : u32ClientId; + RTSpinlockRelease(pDevExt->SessionSpinlock); + + return rc; +} + + +static int vbgdIoCtl_HGCMCall(PVBOXGUESTDEVEXT pDevExt, PVBOXGUESTSESSION pSession, VBoxGuestHGCMCallInfo *pInfo, + uint32_t cMillies, bool fInterruptible, bool f32bit, bool fUserData, + size_t cbExtra, size_t cbData, size_t *pcbDataReturned) +{ + const uint32_t u32ClientId = pInfo->u32ClientID; + uint32_t fFlags; + size_t cbActual; + unsigned i; + int rc; + + /* + * Some more validations. + */ + if (pInfo->cParms > 4096) /* (Just make sure it doesn't overflow the next check.) */ + { + LogRel(("VBOXGUEST_IOCTL_HGCM_CALL: cParm=%RX32 is not sane\n", pInfo->cParms)); + return VERR_INVALID_PARAMETER; + } + + cbActual = cbExtra + sizeof(*pInfo); +#ifdef RT_ARCH_AMD64 + if (f32bit) + cbActual += pInfo->cParms * sizeof(HGCMFunctionParameter32); + else +#endif + cbActual += pInfo->cParms * sizeof(HGCMFunctionParameter); + if (cbData < cbActual) + { + LogRel(("VBOXGUEST_IOCTL_HGCM_CALL: cbData=%#zx (%zu) required size is %#zx (%zu)\n", + cbData, cbData, cbActual, cbActual)); + return VERR_INVALID_PARAMETER; + } + + /* + * Validate the client id. + */ + RTSpinlockAcquire(pDevExt->SessionSpinlock); + for (i = 0; i < RT_ELEMENTS(pSession->aHGCMClientIds); i++) + if (pSession->aHGCMClientIds[i] == u32ClientId) + break; + RTSpinlockRelease(pDevExt->SessionSpinlock); + if (RT_UNLIKELY(i >= RT_ELEMENTS(pSession->aHGCMClientIds))) + { + LogRelMax(32, ("VBOXGUEST_IOCTL_HGCM_CALL: Invalid handle. u32Client=%RX32\n", u32ClientId)); + return VERR_INVALID_HANDLE; + } + + /* + * The VbglHGCMCall call will invoke the callback if the HGCM + * call is performed in an ASYNC fashion. This function can + * deal with cancelled requests, so we let user more requests + * be interruptible (should add a flag for this later I guess). + */ + LogFlow(("VBOXGUEST_IOCTL_HGCM_CALL: u32Client=%RX32\n", pInfo->u32ClientID)); + fFlags = !fUserData && pSession->R0Process == NIL_RTR0PROCESS ? VBGLR0_HGCMCALL_F_KERNEL : VBGLR0_HGCMCALL_F_USER; + uint32_t cbInfo = (uint32_t)(cbData - cbExtra); +#ifdef RT_ARCH_AMD64 + if (f32bit) + { + if (fInterruptible) + rc = VbglR0HGCMInternalCall32(pInfo, cbInfo, fFlags, vbgdHgcmAsyncWaitCallbackInterruptible, pDevExt, cMillies); + else + rc = VbglR0HGCMInternalCall32(pInfo, cbInfo, fFlags, vbgdHgcmAsyncWaitCallback, pDevExt, cMillies); + } + else +#endif + { + if (fInterruptible) + rc = VbglR0HGCMInternalCall(pInfo, cbInfo, fFlags, vbgdHgcmAsyncWaitCallbackInterruptible, pDevExt, cMillies); + else + rc = VbglR0HGCMInternalCall(pInfo, cbInfo, fFlags, vbgdHgcmAsyncWaitCallback, pDevExt, cMillies); + } + if (RT_SUCCESS(rc)) + { + LogFlow(("VBOXGUEST_IOCTL_HGCM_CALL: result=%Rrc\n", pInfo->result)); + if (pcbDataReturned) + *pcbDataReturned = cbActual; + } + else + { + if ( rc != VERR_INTERRUPTED + && rc != VERR_TIMEOUT) + LogRelMax(32, ("VBOXGUEST_IOCTL_HGCM_CALL: %s Failed. rc=%Rrc.\n", f32bit ? "32" : "64", rc)); + else + Log(("VBOXGUEST_IOCTL_HGCM_CALL: %s Failed. rc=%Rrc.\n", f32bit ? "32" : "64", rc)); + } + return rc; +} + +#endif /* VBOX_WITH_HGCM */ + +/** + * Handle VBOXGUEST_IOCTL_CHECK_BALLOON from R3. + * + * Ask the host for the size of the balloon and try to set it accordingly. If + * this approach fails because it's not supported, return with fHandleInR3 set + * and let the user land supply memory we can lock via the other ioctl. + * + * @returns VBox status code. + * + * @param pDevExt The device extension. + * @param pSession The session. + * @param pInfo The output buffer. + * @param pcbDataReturned Where to store the amount of returned data. Can + * be NULL. + */ +static int vbgdIoCtl_CheckMemoryBalloon(PVBOXGUESTDEVEXT pDevExt, PVBOXGUESTSESSION pSession, + VBoxGuestCheckBalloonInfo *pInfo, size_t *pcbDataReturned) +{ + VMMDevGetMemBalloonChangeRequest *pReq; + int rc; + + LogFlow(("VBOXGUEST_IOCTL_CHECK_BALLOON:\n")); + rc = RTSemFastMutexRequest(pDevExt->MemBalloon.hMtx); + AssertRCReturn(rc, rc); + + /* + * The first user trying to query/change the balloon becomes the + * owner and owns it until the session is closed (vbgdCloseMemBalloon). + */ + if ( pDevExt->MemBalloon.pOwner != pSession + && pDevExt->MemBalloon.pOwner == NULL) + pDevExt->MemBalloon.pOwner = pSession; + + if (pDevExt->MemBalloon.pOwner == pSession) + { + rc = VbglGRAlloc((VMMDevRequestHeader **)&pReq, sizeof(VMMDevGetMemBalloonChangeRequest), VMMDevReq_GetMemBalloonChangeRequest); + if (RT_SUCCESS(rc)) + { + /* + * This is a response to that event. Setting this bit means that + * we request the value from the host and change the guest memory + * balloon according to this value. + */ + pReq->eventAck = VMMDEV_EVENT_BALLOON_CHANGE_REQUEST; + rc = VbglGRPerform(&pReq->header); + if (RT_SUCCESS(rc)) + { + Assert(pDevExt->MemBalloon.cMaxChunks == pReq->cPhysMemChunks || pDevExt->MemBalloon.cMaxChunks == 0); + pDevExt->MemBalloon.cMaxChunks = pReq->cPhysMemChunks; + + pInfo->cBalloonChunks = pReq->cBalloonChunks; + pInfo->fHandleInR3 = false; + + rc = vbgdSetBalloonSizeKernel(pDevExt, pReq->cBalloonChunks, &pInfo->fHandleInR3); + /* Ignore various out of memory failures. */ + if ( rc == VERR_NO_MEMORY + || rc == VERR_NO_PHYS_MEMORY + || rc == VERR_NO_CONT_MEMORY) + rc = VINF_SUCCESS; + + if (pcbDataReturned) + *pcbDataReturned = sizeof(VBoxGuestCheckBalloonInfo); + } + else + LogRel(("VBOXGUEST_IOCTL_CHECK_BALLOON: VbglGRPerform failed. rc=%Rrc\n", rc)); + VbglGRFree(&pReq->header); + } + } + else + rc = VERR_PERMISSION_DENIED; + + RTSemFastMutexRelease(pDevExt->MemBalloon.hMtx); + LogFlow(("VBOXGUEST_IOCTL_CHECK_BALLOON returns %Rrc\n", rc)); + return rc; +} + + +/** + * Handle a request for changing the memory balloon. + * + * @returns VBox status code. + * + * @param pDevExt The device extention. + * @param pSession The session. + * @param pInfo The change request structure (input). + * @param pcbDataReturned Where to store the amount of returned data. Can + * be NULL. + */ +static int vbgdIoCtl_ChangeMemoryBalloon(PVBOXGUESTDEVEXT pDevExt, PVBOXGUESTSESSION pSession, + VBoxGuestChangeBalloonInfo *pInfo, size_t *pcbDataReturned) +{ + int rc; + LogFlow(("VBOXGUEST_IOCTL_CHANGE_BALLOON: fInflate=%RTbool u64ChunkAddr=%#RX64\n", pInfo->fInflate, pInfo->u64ChunkAddr)); + + rc = RTSemFastMutexRequest(pDevExt->MemBalloon.hMtx); + AssertRCReturn(rc, rc); + + if (!pDevExt->MemBalloon.fUseKernelAPI) + { + /* + * The first user trying to query/change the balloon becomes the + * owner and owns it until the session is closed (vbgdCloseMemBalloon). + */ + if ( pDevExt->MemBalloon.pOwner != pSession + && pDevExt->MemBalloon.pOwner == NULL) + pDevExt->MemBalloon.pOwner = pSession; + + if (pDevExt->MemBalloon.pOwner == pSession) + { + rc = vbgdSetBalloonSizeFromUser(pDevExt, pSession, pInfo->u64ChunkAddr, !!pInfo->fInflate); + if (pcbDataReturned) + *pcbDataReturned = 0; + } + else + rc = VERR_PERMISSION_DENIED; + } + else + rc = VERR_PERMISSION_DENIED; + + RTSemFastMutexRelease(pDevExt->MemBalloon.hMtx); + return rc; +} + + +/** + * Handle a request for writing a core dump of the guest on the host. + * + * @returns VBox status code. + * + * @param pDevExt The device extension. + * @param pInfo The output buffer. + */ +static int vbgdIoCtl_WriteCoreDump(PVBOXGUESTDEVEXT pDevExt, VBoxGuestWriteCoreDump *pInfo) +{ + VMMDevReqWriteCoreDump *pReq = NULL; + int rc; + LogFlow(("VBOXGUEST_IOCTL_WRITE_CORE_DUMP\n")); + + rc = VbglGRAlloc((VMMDevRequestHeader **)&pReq, sizeof(*pReq), VMMDevReq_WriteCoreDump); + if (RT_SUCCESS(rc)) + { + pReq->fFlags = pInfo->fFlags; + rc = VbglGRPerform(&pReq->header); + if (RT_FAILURE(rc)) + Log(("VBOXGUEST_IOCTL_WRITE_CORE_DUMP: VbglGRPerform failed, rc=%Rrc!\n", rc)); + + VbglGRFree(&pReq->header); + } + else + Log(("VBOXGUEST_IOCTL_WRITE_CORE_DUMP: failed to allocate %u (%#x) bytes to cache the request. rc=%Rrc!!\n", + sizeof(*pReq), sizeof(*pReq), rc)); + return rc; +} + + +/** + * Guest backdoor logging. + * + * @returns VBox status code. + * + * @param pDevExt The device extension. + * @param pch The log message (need not be NULL terminated). + * @param cbData Size of the buffer. + * @param pcbDataReturned Where to store the amount of returned data. Can be NULL. + */ +static int vbgdIoCtl_Log(PVBOXGUESTDEVEXT pDevExt, const char *pch, size_t cbData, size_t *pcbDataReturned, bool fUserSession) +{ + if (pDevExt->fLoggingEnabled) + RTLogBackdoorPrintf("%.*s", cbData, pch); + else if (!fUserSession) + LogRel(("%.*s", cbData, pch)); + else + Log(("%.*s", cbData, pch)); + if (pcbDataReturned) + *pcbDataReturned = 0; + return VINF_SUCCESS; +} + + +/** @name Guest Capabilities, Mouse Status and Event Filter + * @{ + */ + +/** + * Clears a bit usage tracker (init time). + * + * @param pTracker The tracker to clear. + */ +static void vbgdBitUsageTrackerClear(PVBOXGUESTBITUSAGETRACER pTracker) +{ + uint32_t iBit; + AssertCompile(sizeof(pTracker->acPerBitUsage) == 32 * sizeof(uint32_t)); + + for (iBit = 0; iBit < 32; iBit++) + pTracker->acPerBitUsage[iBit] = 0; + pTracker->fMask = 0; +} + + +#ifdef VBOX_STRICT +/** + * Checks that pTracker->fMask is correct and that the usage values are within + * the valid range. + * + * @param pTracker The tracker. + * @param cMax Max valid usage value. + * @param pszWhat Identifies the tracker in assertions. + */ +static void vbgdBitUsageTrackerCheckMask(PCVBOXGUESTBITUSAGETRACER pTracker, uint32_t cMax, const char *pszWhat) +{ + uint32_t fMask = 0; + uint32_t iBit; + AssertCompile(sizeof(pTracker->acPerBitUsage) == 32 * sizeof(uint32_t)); + + for (iBit = 0; iBit < 32; iBit++) + if (pTracker->acPerBitUsage[iBit]) + { + fMask |= RT_BIT_32(iBit); + AssertMsg(pTracker->acPerBitUsage[iBit] <= cMax, + ("%s: acPerBitUsage[%u]=%#x cMax=%#x\n", pszWhat, iBit, pTracker->acPerBitUsage[iBit], cMax)); + } + + AssertMsg(fMask == pTracker->fMask, ("%s: %#x vs %#x\n", pszWhat, fMask, pTracker->fMask)); +} +#endif + + +/** + * Applies a change to the bit usage tracker. + * + * + * @returns true if the mask changed, false if not. + * @param pTracker The bit usage tracker. + * @param fChanged The bits to change. + * @param fPrevious The previous value of the bits. + * @param cMax The max valid usage value for assertions. + * @param pszWhat Identifies the tracker in assertions. + */ +static bool vbgdBitUsageTrackerChange(PVBOXGUESTBITUSAGETRACER pTracker, uint32_t fChanged, uint32_t fPrevious, + uint32_t cMax, const char *pszWhat) +{ + bool fGlobalChange = false; + AssertCompile(sizeof(pTracker->acPerBitUsage) == 32 * sizeof(uint32_t)); + + while (fChanged) + { + uint32_t const iBit = ASMBitFirstSetU32(fChanged) - 1; + uint32_t const fBitMask = RT_BIT_32(iBit); + Assert(iBit < 32); Assert(fBitMask & fChanged); + + if (fBitMask & fPrevious) + { + pTracker->acPerBitUsage[iBit] -= 1; + AssertMsg(pTracker->acPerBitUsage[iBit] <= cMax, + ("%s: acPerBitUsage[%u]=%#x cMax=%#x\n", pszWhat, iBit, pTracker->acPerBitUsage[iBit], cMax)); + if (pTracker->acPerBitUsage[iBit] == 0) + { + fGlobalChange = true; + pTracker->fMask &= ~fBitMask; + } + } + else + { + pTracker->acPerBitUsage[iBit] += 1; + AssertMsg(pTracker->acPerBitUsage[iBit] > 0 && pTracker->acPerBitUsage[iBit] <= cMax, + ("pTracker->acPerBitUsage[%u]=%#x cMax=%#x\n", pszWhat, iBit, pTracker->acPerBitUsage[iBit], cMax)); + if (pTracker->acPerBitUsage[iBit] == 1) + { + fGlobalChange = true; + pTracker->fMask |= fBitMask; + } + } + + fChanged &= ~fBitMask; + } + +#ifdef VBOX_STRICT + vbgdBitUsageTrackerCheckMask(pTracker, cMax, pszWhat); +#endif + NOREF(pszWhat); NOREF(cMax); + return fGlobalChange; +} + + +/** + * Init and termination worker for resetting the (host) event filter on the host + * + * @returns VBox status code. + * @param pDevExt The device extension. + * @param fFixedEvents Fixed events (init time). + */ +static int vbgdResetEventFilterOnHost(PVBOXGUESTDEVEXT pDevExt, uint32_t fFixedEvents) +{ + VMMDevCtlGuestFilterMask *pReq; + int rc = VbglGRAlloc((VMMDevRequestHeader **)&pReq, sizeof(*pReq), VMMDevReq_CtlGuestFilterMask); + if (RT_SUCCESS(rc)) + { + pReq->u32NotMask = UINT32_MAX & ~fFixedEvents; + pReq->u32OrMask = fFixedEvents; + rc = VbglGRPerform(&pReq->header); + if (RT_FAILURE(rc)) + LogRelFunc(("failed with rc=%Rrc\n", rc)); + VbglGRFree(&pReq->header); + } + return rc; +} + + +/** + * Changes the event filter mask for the given session. + * + * This is called in response to VBOXGUEST_IOCTL_CTL_FILTER_MASK as well as to + * do session cleanup. + * + * @returns VBox status code. + * @param pDevExt The device extension. + * @param pSession The session. + * @param fOrMask The events to add. + * @param fNotMask The events to remove. + * @param fSessionTermination Set if we're called by the session cleanup code. + * This tweaks the error handling so we perform + * proper session cleanup even if the host + * misbehaves. + * + * @remarks Takes the session spinlock. + */ +static int vbgdSetSessionEventFilter(PVBOXGUESTDEVEXT pDevExt, PVBOXGUESTSESSION pSession, + uint32_t fOrMask, uint32_t fNotMask, bool fSessionTermination) +{ + VMMDevCtlGuestFilterMask *pReq; + uint32_t fChanged; + uint32_t fPrevious; + int rc; + + /* + * Preallocate a request buffer so we can do all in one go without leaving the spinlock. + */ + rc = VbglGRAlloc((VMMDevRequestHeader **)&pReq, sizeof(*pReq), VMMDevReq_CtlGuestFilterMask); + if (RT_SUCCESS(rc)) + { /* nothing */ } + else if (!fSessionTermination) + { + LogRel(("vbgdSetSessionFilterMask: VbglGRAlloc failure: %Rrc\n", rc)); + return rc; + } + else + pReq = NULL; /* Ignore failure, we must do session cleanup. */ + + + RTSpinlockAcquire(pDevExt->SessionSpinlock); + + /* + * Apply the changes to the session mask. + */ + fPrevious = pSession->fEventFilter; + pSession->fEventFilter |= fOrMask; + pSession->fEventFilter &= ~fNotMask; + + /* + * If anything actually changed, update the global usage counters. + */ + fChanged = fPrevious ^ pSession->fEventFilter; + if (fChanged) + { + bool fGlobalChange = vbgdBitUsageTrackerChange(&pDevExt->EventFilterTracker, fChanged, fPrevious, + pDevExt->cSessions, "EventFilterTracker"); + + /* + * If there are global changes, update the event filter on the host. + */ + if (fGlobalChange || pDevExt->fEventFilterHost == UINT32_MAX) + { + Assert(pReq || fSessionTermination); + if (pReq) + { + pReq->u32OrMask = pDevExt->fFixedEvents | pDevExt->EventFilterTracker.fMask; + if (pReq->u32OrMask == pDevExt->fEventFilterHost) + rc = VINF_SUCCESS; + else + { + pDevExt->fEventFilterHost = pReq->u32OrMask; + pReq->u32NotMask = ~pReq->u32OrMask; + rc = VbglGRPerform(&pReq->header); + if (RT_FAILURE(rc)) + { + /* + * Failed, roll back (unless it's session termination time). + */ + pDevExt->fEventFilterHost = UINT32_MAX; + if (!fSessionTermination) + { + vbgdBitUsageTrackerChange(&pDevExt->EventFilterTracker, fChanged, pSession->fEventFilter, + pDevExt->cSessions, "EventFilterTracker"); + pSession->fEventFilter = fPrevious; + } + } + } + } + else + rc = VINF_SUCCESS; + } + } + + RTSpinlockRelease(pDevExt->SessionSpinlock); + if (pReq) + VbglGRFree(&pReq->header); + return rc; +} + + +/** + * Handle VBOXGUEST_IOCTL_CTL_FILTER_MASK. + * + * @returns VBox status code. + * + * @param pDevExt The device extension. + * @param pSession The session. + * @param pInfo The request. + */ +static int vbgdIoCtl_CtlFilterMask(PVBOXGUESTDEVEXT pDevExt, PVBOXGUESTSESSION pSession, VBoxGuestFilterMaskInfo *pInfo) +{ + LogFlow(("VBOXGUEST_IOCTL_CTL_FILTER_MASK: or=%#x not=%#x\n", pInfo->u32OrMask, pInfo->u32NotMask)); + + if ((pInfo->u32OrMask | pInfo->u32NotMask) & ~VMMDEV_EVENT_VALID_EVENT_MASK) + { + Log(("VBOXGUEST_IOCTL_CTL_FILTER_MASK: or=%#x not=%#x: Invalid masks!\n", pInfo->u32OrMask, pInfo->u32NotMask)); + return VERR_INVALID_PARAMETER; + } + + return vbgdSetSessionEventFilter(pDevExt, pSession, pInfo->u32OrMask, pInfo->u32NotMask, false /*fSessionTermination*/); +} + + +/** + * Init and termination worker for set mouse feature status to zero on the host. + * + * @returns VBox status code. + * @param pDevExt The device extension. + */ +static int vbgdResetMouseStatusOnHost(PVBOXGUESTDEVEXT pDevExt) +{ + VMMDevReqMouseStatus *pReq; + int rc = VbglGRAlloc((VMMDevRequestHeader **)&pReq, sizeof(*pReq), VMMDevReq_SetMouseStatus); + if (RT_SUCCESS(rc)) + { + pReq->mouseFeatures = 0; + pReq->pointerXPos = 0; + pReq->pointerYPos = 0; + rc = VbglGRPerform(&pReq->header); + if (RT_FAILURE(rc)) + LogRelFunc(("failed with rc=%Rrc\n", rc)); + VbglGRFree(&pReq->header); + } + return rc; +} + + +/** + * Changes the mouse status mask for the given session. + * + * This is called in response to VBOXGUEST_IOCTL_SET_MOUSE_STATUS as well as to + * do session cleanup. + * + * @returns VBox status code. + * @param pDevExt The device extension. + * @param pSession The session. + * @param fOrMask The status flags to add. + * @param fNotMask The status flags to remove. + * @param fSessionTermination Set if we're called by the session cleanup code. + * This tweaks the error handling so we perform + * proper session cleanup even if the host + * misbehaves. + * + * @remarks Takes the session spinlock. + */ +static int vbgdSetSessionMouseStatus(PVBOXGUESTDEVEXT pDevExt, PVBOXGUESTSESSION pSession, + uint32_t fOrMask, uint32_t fNotMask, bool fSessionTermination) +{ + VMMDevReqMouseStatus *pReq; + uint32_t fChanged; + uint32_t fPrevious; + int rc; + + /* + * Preallocate a request buffer so we can do all in one go without leaving the spinlock. + */ + rc = VbglGRAlloc((VMMDevRequestHeader **)&pReq, sizeof(*pReq), VMMDevReq_SetMouseStatus); + if (RT_SUCCESS(rc)) + { /* nothing */ } + else if (!fSessionTermination) + { + LogRel(("vbgdSetSessionMouseStatus: VbglGRAlloc failure: %Rrc\n", rc)); + return rc; + } + else + pReq = NULL; /* Ignore failure, we must do session cleanup. */ + + + RTSpinlockAcquire(pDevExt->SessionSpinlock); + + /* + * Apply the changes to the session mask. + */ + fPrevious = pSession->fMouseStatus; + pSession->fMouseStatus |= fOrMask; + pSession->fMouseStatus &= ~fNotMask; + + /* + * If anything actually changed, update the global usage counters. + */ + fChanged = fPrevious ^ pSession->fMouseStatus; + if (fChanged) + { + bool fGlobalChange = vbgdBitUsageTrackerChange(&pDevExt->MouseStatusTracker, fChanged, fPrevious, + pDevExt->cSessions, "MouseStatusTracker"); + + /* + * If there are global changes, update the event filter on the host. + */ + if (fGlobalChange || pDevExt->fMouseStatusHost == UINT32_MAX) + { + Assert(pReq || fSessionTermination); + if (pReq) + { + pReq->mouseFeatures = pDevExt->MouseStatusTracker.fMask; + if (pReq->mouseFeatures == pDevExt->fMouseStatusHost) + rc = VINF_SUCCESS; + else + { + pDevExt->fMouseStatusHost = pReq->mouseFeatures; + pReq->pointerXPos = 0; + pReq->pointerYPos = 0; + rc = VbglGRPerform(&pReq->header); + if (RT_FAILURE(rc)) + { + /* + * Failed, roll back (unless it's session termination time). + */ + pDevExt->fMouseStatusHost = UINT32_MAX; + if (!fSessionTermination) + { + vbgdBitUsageTrackerChange(&pDevExt->MouseStatusTracker, fChanged, pSession->fMouseStatus, + pDevExt->cSessions, "MouseStatusTracker"); + pSession->fMouseStatus = fPrevious; + } + } + } + } + else + rc = VINF_SUCCESS; + } + } + + RTSpinlockRelease(pDevExt->SessionSpinlock); + if (pReq) + VbglGRFree(&pReq->header); + return rc; +} + + +/** + * Sets the mouse status features for this session and updates them globally. + * + * @returns VBox status code. + * + * @param pDevExt The device extention. + * @param pSession The session. + * @param fFeatures New bitmap of enabled features. + */ +static int vbgdIoCtl_SetMouseStatus(PVBOXGUESTDEVEXT pDevExt, PVBOXGUESTSESSION pSession, uint32_t fFeatures) +{ + LogFlow(("VBOXGUEST_IOCTL_SET_MOUSE_STATUS: features=%#x\n", fFeatures)); + + if (fFeatures & ~VMMDEV_MOUSE_GUEST_MASK) + return VERR_INVALID_PARAMETER; + + return vbgdSetSessionMouseStatus(pDevExt, pSession, fFeatures, ~fFeatures, false /*fSessionTermination*/); +} + + +/** + * Return the mask of VMM device events that this session is allowed to see (wrt + * to "acquire" mode guest capabilities). + * + * The events associated with guest capabilities in "acquire" mode will be + * restricted to sessions which has acquired the respective capabilities. + * If someone else tries to wait for acquired events, they won't be woken up + * when the event becomes pending. Should some other thread in the session + * acquire the capability while the corresponding event is pending, the waiting + * thread will woken up. + * + * @returns Mask of events valid for the given session. + * @param pDevExt The device extension. + * @param pSession The session. + * + * @remarks Needs only be called when dispatching events in the + * VBOXGUEST_ACQUIRE_STYLE_EVENTS mask. + */ +static uint32_t vbgdGetAllowedEventMaskForSession(PVBOXGUESTDEVEXT pDevExt, PVBOXGUESTSESSION pSession) +{ + uint32_t fAcquireModeGuestCaps; + uint32_t fAcquiredGuestCaps; + uint32_t fAllowedEvents; + + /* + * Note! Reads pSession->fAcquiredGuestCaps and pDevExt->fAcquireModeGuestCaps + * WITHOUT holding VBOXGUESTDEVEXT::SessionSpinlock. + */ + fAcquireModeGuestCaps = ASMAtomicUoReadU32(&pDevExt->fAcquireModeGuestCaps); + if (fAcquireModeGuestCaps == 0) + return VMMDEV_EVENT_VALID_EVENT_MASK; + fAcquiredGuestCaps = ASMAtomicUoReadU32(&pSession->fAcquiredGuestCaps); + + /* + * Calculate which events to allow according to the cap config and caps + * acquired by the session. + */ + fAllowedEvents = VMMDEV_EVENT_VALID_EVENT_MASK; + if ( !(fAcquiredGuestCaps & VMMDEV_GUEST_SUPPORTS_GRAPHICS) + && (fAcquireModeGuestCaps & VMMDEV_GUEST_SUPPORTS_GRAPHICS)) + fAllowedEvents &= ~VMMDEV_EVENT_DISPLAY_CHANGE_REQUEST; + + if ( !(fAcquiredGuestCaps & VMMDEV_GUEST_SUPPORTS_SEAMLESS) + && (fAcquireModeGuestCaps & VMMDEV_GUEST_SUPPORTS_SEAMLESS)) + fAllowedEvents &= ~VMMDEV_EVENT_SEAMLESS_MODE_CHANGE_REQUEST; + + return fAllowedEvents; +} + + +/** + * Init and termination worker for set guest capabilities to zero on the host. + * + * @returns VBox status code. + * @param pDevExt The device extension. + */ +static int vbgdResetCapabilitiesOnHost(PVBOXGUESTDEVEXT pDevExt) +{ + VMMDevReqGuestCapabilities2 *pReq; + int rc = VbglGRAlloc((VMMDevRequestHeader **)&pReq, sizeof(*pReq), VMMDevReq_SetGuestCapabilities); + if (RT_SUCCESS(rc)) + { + pReq->u32NotMask = UINT32_MAX; + pReq->u32OrMask = 0; + rc = VbglGRPerform(&pReq->header); + + if (RT_FAILURE(rc)) + LogRelFunc(("failed with rc=%Rrc\n", rc)); + VbglGRFree(&pReq->header); + } + return rc; +} + + +/** + * Sets the guest capabilities to the host while holding the lock. + * + * This will ASSUME that we're the ones in charge of the mask, so + * we'll simply clear all bits we don't set. + * + * @returns VBox status code. + * @param fMask The new mask. + */ +static int vbgdUpdateCapabilitiesOnHostWithReqAndLock(PVBOXGUESTDEVEXT pDevExt, VMMDevReqGuestCapabilities2 *pReq) +{ + int rc; + + pReq->u32OrMask = pDevExt->fAcquiredGuestCaps | pDevExt->SetGuestCapsTracker.fMask; + if (pReq->u32OrMask == pDevExt->fGuestCapsHost) + rc = VINF_SUCCESS; + else + { + pDevExt->fGuestCapsHost = pReq->u32OrMask; + pReq->u32NotMask = ~pReq->u32OrMask; + rc = VbglGRPerform(&pReq->header); + if (RT_FAILURE(rc)) + pDevExt->fGuestCapsHost = UINT32_MAX; + } + + return rc; +} + + +/** + * Switch a set of capabilities into "acquire" mode and (maybe) acquire them for + * the given session. + * + * This is called in response to VBOXGUEST_IOCTL_GUEST_CAPS_ACQUIRE as well as + * to do session cleanup. + * + * @returns VBox status code. + * @param pDevExt The device extension. + * @param pSession The session. + * @param fOrMask The capabilities to add . + * @param fNotMask The capabilities to remove. Ignored in + * VBOXGUESTCAPSACQUIRE_FLAGS_CONFIG_ACQUIRE_MODE. + * @param enmFlags Confusing operation modifier. + * VBOXGUESTCAPSACQUIRE_FLAGS_NONE means to both + * configure and acquire/release the capabilities. + * VBOXGUESTCAPSACQUIRE_FLAGS_CONFIG_ACQUIRE_MODE + * means only configure capabilities in the + * @a fOrMask capabilities for "acquire" mode. + * @param fSessionTermination Set if we're called by the session cleanup code. + * This tweaks the error handling so we perform + * proper session cleanup even if the host + * misbehaves. + * + * @remarks Takes both the session and event spinlocks. + */ +static int vbgdAcquireSessionCapabilities(PVBOXGUESTDEVEXT pDevExt, PVBOXGUESTSESSION pSession, + uint32_t fOrMask, uint32_t fNotMask, VBOXGUESTCAPSACQUIRE_FLAGS enmFlags, + bool fSessionTermination) +{ + uint32_t fCurrentOwnedCaps; + uint32_t fSessionRemovedCaps; + uint32_t fSessionAddedCaps; + uint32_t fOtherConflictingCaps; + VMMDevReqGuestCapabilities2 *pReq = NULL; + int rc; + + + /* + * Validate and adjust input. + */ + if (fOrMask & ~( VMMDEV_GUEST_SUPPORTS_SEAMLESS + | VMMDEV_GUEST_SUPPORTS_GUEST_HOST_WINDOW_MAPPING + | VMMDEV_GUEST_SUPPORTS_GRAPHICS ) ) + { + LogRel(("vbgdAcquireSessionCapabilities: pSession=%p fOrMask=%#x fNotMask=%#x enmFlags=%#x -- invalid fOrMask\n", + pSession, fOrMask, fNotMask, enmFlags)); + return VERR_INVALID_PARAMETER; + } + + if ( enmFlags != VBOXGUESTCAPSACQUIRE_FLAGS_CONFIG_ACQUIRE_MODE + && enmFlags != VBOXGUESTCAPSACQUIRE_FLAGS_NONE) + { + LogRel(("vbgdAcquireSessionCapabilities: pSession=%p fOrMask=%#x fNotMask=%#x enmFlags=%#x: invalid enmFlags %d\n", + pSession, fOrMask, fNotMask, enmFlags)); + return VERR_INVALID_PARAMETER; + } + Assert(!fOrMask || !fSessionTermination); + + /* The fNotMask no need to have all values valid, invalid ones will simply be ignored. */ + fNotMask &= ~fOrMask; + + /* + * Preallocate a update request if we're about to do more than just configure + * the capability mode. + */ + if (enmFlags != VBOXGUESTCAPSACQUIRE_FLAGS_CONFIG_ACQUIRE_MODE) + { + rc = VbglGRAlloc((VMMDevRequestHeader **)&pReq, sizeof(*pReq), VMMDevReq_SetGuestCapabilities); + if (RT_SUCCESS(rc)) + { /* do nothing */ } + else if (!fSessionTermination) + { + LogRel(("vbgdAcquireSessionCapabilities: pSession=%p fOrMask=%#x fNotMask=%#x enmFlags=%#x: VbglGRAlloc failure: %Rrc\n", + pSession, fOrMask, fNotMask, enmFlags, rc)); + return rc; + } + else + pReq = NULL; /* Ignore failure, we must do session cleanup. */ + } + + /* + * Try switch the capabilities in the OR mask into "acquire" mode. + * + * Note! We currently ignore anyone which may already have "set" the capabilities + * in fOrMask. Perhaps not the best way to handle it, but it's simple... + */ + RTSpinlockAcquire(pDevExt->EventSpinlock); + + if (!(pDevExt->fSetModeGuestCaps & fOrMask)) + pDevExt->fAcquireModeGuestCaps |= fOrMask; + else + { + RTSpinlockRelease(pDevExt->EventSpinlock); + + if (pReq) + VbglGRFree(&pReq->header); + AssertMsgFailed(("Trying to change caps mode: %#x\n", fOrMask)); + LogRel(("vbgdAcquireSessionCapabilities: pSession=%p fOrMask=%#x fNotMask=%#x enmFlags=%#x: calling caps acquire for set caps\n", + pSession, fOrMask, fNotMask, enmFlags)); + return VERR_INVALID_STATE; + } + + /* + * If we only wanted to switch the capabilities into "acquire" mode, we're done now. + */ + if (enmFlags & VBOXGUESTCAPSACQUIRE_FLAGS_CONFIG_ACQUIRE_MODE) + { + RTSpinlockRelease(pDevExt->EventSpinlock); + + Assert(!pReq); + Log(("vbgdAcquireSessionCapabilities: pSession=%p fOrMask=%#x fNotMask=%#x enmFlags=%#x: configured acquire caps: 0x%x\n", + pSession, fOrMask, fNotMask, enmFlags)); + return VINF_SUCCESS; + } + Assert(pReq || fSessionTermination); + + /* + * Caller wants to acquire/release the capabilities too. + * + * Note! The mode change of the capabilities above won't be reverted on + * failure, this is intentional. + */ + fCurrentOwnedCaps = pSession->fAcquiredGuestCaps; + fSessionRemovedCaps = fCurrentOwnedCaps & fNotMask; + fSessionAddedCaps = fOrMask & ~fCurrentOwnedCaps; + fOtherConflictingCaps = pDevExt->fAcquiredGuestCaps & ~fCurrentOwnedCaps; + fOtherConflictingCaps &= fSessionAddedCaps; + + if (!fOtherConflictingCaps) + { + if (fSessionAddedCaps) + { + pSession->fAcquiredGuestCaps |= fSessionAddedCaps; + pDevExt->fAcquiredGuestCaps |= fSessionAddedCaps; + } + + if (fSessionRemovedCaps) + { + pSession->fAcquiredGuestCaps &= ~fSessionRemovedCaps; + pDevExt->fAcquiredGuestCaps &= ~fSessionRemovedCaps; + } + + /* + * If something changes (which is very likely), tell the host. + */ + if (fSessionAddedCaps || fSessionRemovedCaps || pDevExt->fGuestCapsHost == UINT32_MAX) + { + Assert(pReq || fSessionTermination); + if (pReq) + { + rc = vbgdUpdateCapabilitiesOnHostWithReqAndLock(pDevExt, pReq); + if (RT_FAILURE(rc) && !fSessionTermination) + { + /* Failed, roll back. */ + if (fSessionAddedCaps) + { + pSession->fAcquiredGuestCaps &= ~fSessionAddedCaps; + pDevExt->fAcquiredGuestCaps &= ~fSessionAddedCaps; + } + if (fSessionRemovedCaps) + { + pSession->fAcquiredGuestCaps |= fSessionRemovedCaps; + pDevExt->fAcquiredGuestCaps |= fSessionRemovedCaps; + } + + RTSpinlockRelease(pDevExt->EventSpinlock); + LogRel(("vbgdAcquireSessionCapabilities: vbgdUpdateCapabilitiesOnHostWithReqAndLock failed: rc=%Rrc\n", rc)); + VbglGRFree(&pReq->header); + return rc; + } + } + } + } + else + { + RTSpinlockRelease(pDevExt->EventSpinlock); + + Log(("vbgdAcquireSessionCapabilities: Caps %#x were busy\n", fOtherConflictingCaps)); + VbglGRFree(&pReq->header); + return VERR_RESOURCE_BUSY; + } + + RTSpinlockRelease(pDevExt->EventSpinlock); + if (pReq) + VbglGRFree(&pReq->header); + + /* + * If we added a capability, check if that means some other thread in our + * session should be unblocked because there are events pending. + * + * HACK ALERT! When the seamless support capability is added we generate a + * seamless change event so that the ring-3 client can sync with + * the seamless state. Although this introduces a spurious + * wakeups of the ring-3 client, it solves the problem of client + * state inconsistency in multiuser environment (on Windows). + */ + if (fSessionAddedCaps) + { + uint32_t fGenFakeEvents = 0; + if (fSessionAddedCaps & VMMDEV_GUEST_SUPPORTS_SEAMLESS) + fGenFakeEvents |= VMMDEV_EVENT_SEAMLESS_MODE_CHANGE_REQUEST; + + RTSpinlockAcquire(pDevExt->EventSpinlock); + if (fGenFakeEvents || pDevExt->f32PendingEvents) + vbgdDispatchEventsLocked(pDevExt, fGenFakeEvents); + RTSpinlockRelease(pDevExt->EventSpinlock); + +#ifdef VBOXGUEST_USE_DEFERRED_WAKE_UP + VbgdCommonWaitDoWakeUps(pDevExt); +#endif + } + + return VINF_SUCCESS; +} + + +/** + * Handle VBOXGUEST_IOCTL_GUEST_CAPS_ACQUIRE. + * + * @returns VBox status code. + * + * @param pDevExt The device extension. + * @param pSession The session. + * @param pAcquire The request. + */ +static int vbgdIoCtl_GuestCapsAcquire(PVBOXGUESTDEVEXT pDevExt, PVBOXGUESTSESSION pSession, VBoxGuestCapsAquire *pAcquire) +{ + int rc; + LogFlow(("VBOXGUEST_IOCTL_GUEST_CAPS_ACQUIRE: or=%#x not=%#x flags=%#x\n", + pAcquire->u32OrMask, pAcquire->u32NotMask, pAcquire->enmFlags)); + + rc = vbgdAcquireSessionCapabilities(pDevExt, pSession, pAcquire->u32OrMask, pAcquire->u32NotMask, pAcquire->enmFlags, + false /*fSessionTermination*/); + if (RT_FAILURE(rc)) + LogRel(("VbgdCommonIoCtl: GUEST_CAPS_ACQUIRE failed rc=%Rrc\n", rc)); + pAcquire->rc = rc; + return VINF_SUCCESS; +} + + +/** + * Sets the guest capabilities for a session. + * + * @returns VBox status code. + * @param pDevExt The device extension. + * @param pSession The session. + * @param fOrMask The capabilities to add. + * @param fNotMask The capabilities to remove. + * @param fSessionTermination Set if we're called by the session cleanup code. + * This tweaks the error handling so we perform + * proper session cleanup even if the host + * misbehaves. + * + * @remarks Takes the session spinlock. + */ +static int vbgdSetSessionCapabilities(PVBOXGUESTDEVEXT pDevExt, PVBOXGUESTSESSION pSession, + uint32_t fOrMask, uint32_t fNotMask, bool fSessionTermination) +{ + /* + * Preallocate a request buffer so we can do all in one go without leaving the spinlock. + */ + VMMDevReqGuestCapabilities2 *pReq; + int rc = VbglGRAlloc((VMMDevRequestHeader **)&pReq, sizeof(*pReq), VMMDevReq_SetGuestCapabilities); + if (RT_SUCCESS(rc)) + { /* nothing */ } + else if (!fSessionTermination) + { + LogRel(("vbgdSetSessionCapabilities: VbglGRAlloc failure: %Rrc\n", rc)); + return rc; + } + else + pReq = NULL; /* Ignore failure, we must do session cleanup. */ + + + RTSpinlockAcquire(pDevExt->SessionSpinlock); + +#ifndef VBOXGUEST_DISREGARD_ACQUIRE_MODE_GUEST_CAPS + /* + * Capabilities in "acquire" mode cannot be set via this API. + * (Acquire mode is only used on windows at the time of writing.) + */ + if (!(fOrMask & pDevExt->fAcquireModeGuestCaps)) +#endif + { + /* + * Apply the changes to the session mask. + */ + uint32_t fChanged; + uint32_t fPrevious = pSession->fCapabilities; + pSession->fCapabilities |= fOrMask; + pSession->fCapabilities &= ~fNotMask; + + /* + * If anything actually changed, update the global usage counters. + */ + fChanged = fPrevious ^ pSession->fCapabilities; + if (fChanged) + { + bool fGlobalChange = vbgdBitUsageTrackerChange(&pDevExt->SetGuestCapsTracker, fChanged, fPrevious, + pDevExt->cSessions, "SetGuestCapsTracker"); + + /* + * If there are global changes, update the capabilities on the host. + */ + if (fGlobalChange || pDevExt->fGuestCapsHost == UINT32_MAX) + { + Assert(pReq || fSessionTermination); + if (pReq) + { + rc = vbgdUpdateCapabilitiesOnHostWithReqAndLock(pDevExt, pReq); + + /* On failure, roll back (unless it's session termination time). */ + if (RT_FAILURE(rc) && !fSessionTermination) + { + vbgdBitUsageTrackerChange(&pDevExt->SetGuestCapsTracker, fChanged, pSession->fCapabilities, + pDevExt->cSessions, "SetGuestCapsTracker"); + pSession->fCapabilities = fPrevious; + } + } + } + } + } +#ifndef VBOXGUEST_DISREGARD_ACQUIRE_MODE_GUEST_CAPS + else + rc = VERR_RESOURCE_BUSY; +#endif + + RTSpinlockRelease(pDevExt->SessionSpinlock); + if (pReq) + VbglGRFree(&pReq->header); + return rc; +} + + +/** + * Handle VBOXGUEST_IOCTL_SET_GUEST_CAPABILITIES. + * + * @returns VBox status code. + * + * @param pDevExt The device extension. + * @param pSession The session. + * @param pInfo The request. + */ +static int vbgdIoCtl_SetCapabilities(PVBOXGUESTDEVEXT pDevExt, PVBOXGUESTSESSION pSession, VBoxGuestSetCapabilitiesInfo *pInfo) +{ + int rc; + LogFlow(("VBOXGUEST_IOCTL_SET_GUEST_CAPABILITIES: or=%#x not=%#x\n", pInfo->u32OrMask, pInfo->u32NotMask)); + + if (!((pInfo->u32OrMask | pInfo->u32NotMask) & ~VMMDEV_GUEST_CAPABILITIES_MASK)) + rc = vbgdSetSessionCapabilities(pDevExt, pSession, pInfo->u32OrMask, pInfo->u32NotMask, false /*fSessionTermination*/); + else + rc = VERR_INVALID_PARAMETER; + + return rc; +} + +/** @} */ + + +/** + * Common IOCtl for user to kernel and kernel to kernel communication. + * + * This function only does the basic validation and then invokes + * worker functions that takes care of each specific function. + * + * @returns VBox status code. + * + * @param iFunction The requested function. + * @param pDevExt The device extension. + * @param pSession The client session. + * @param pvData The input/output data buffer. Can be NULL depending on the function. + * @param cbData The max size of the data buffer. + * @param pcbDataReturned Where to store the amount of returned data. Can be NULL. + */ +int VbgdCommonIoCtl(unsigned iFunction, PVBOXGUESTDEVEXT pDevExt, PVBOXGUESTSESSION pSession, + void *pvData, size_t cbData, size_t *pcbDataReturned) +{ + int rc; + LogFlow(("VbgdCommonIoCtl: iFunction=%#x pDevExt=%p pSession=%p pvData=%p cbData=%zu\n", + iFunction, pDevExt, pSession, pvData, cbData)); + + /* + * Make sure the returned data size is set to zero. + */ + if (pcbDataReturned) + *pcbDataReturned = 0; + + /* + * Define some helper macros to simplify validation. + */ +#define CHECKRET_RING0(mnemonic) \ + do { \ + if (pSession->R0Process != NIL_RTR0PROCESS) \ + { \ + LogFunc((mnemonic ": Ring-0 only, caller is %RTproc/%p\n", \ + pSession->Process, (uintptr_t)pSession->R0Process)); \ + return VERR_PERMISSION_DENIED; \ + } \ + } while (0) +#define CHECKRET_MIN_SIZE(mnemonic, cbMin) \ + do { \ + if (cbData < (cbMin)) \ + { \ + LogFunc((mnemonic ": cbData=%#zx (%zu) min is %#zx (%zu)\n", \ + cbData, cbData, (size_t)(cbMin), (size_t)(cbMin))); \ + return VERR_BUFFER_OVERFLOW; \ + } \ + if ((cbMin) != 0 && !VALID_PTR(pvData)) \ + { \ + LogFunc((mnemonic ": Invalid pointer %p\n", pvData)); \ + return VERR_INVALID_POINTER; \ + } \ + } while (0) +#define CHECKRET_SIZE(mnemonic, cb) \ + do { \ + if (cbData != (cb)) \ + { \ + LogFunc((mnemonic ": cbData=%#zx (%zu) expected is %#zx (%zu)\n", \ + cbData, cbData, (size_t)(cb), (size_t)(cb))); \ + return VERR_BUFFER_OVERFLOW; \ + } \ + if ((cb) != 0 && !VALID_PTR(pvData)) \ + { \ + LogFunc((mnemonic ": Invalid pointer %p\n", pvData)); \ + return VERR_INVALID_POINTER; \ + } \ + } while (0) + + + /* + * Deal with variably sized requests first. + */ + rc = VINF_SUCCESS; + if (VBOXGUEST_IOCTL_STRIP_SIZE(iFunction) == VBOXGUEST_IOCTL_STRIP_SIZE(VBOXGUEST_IOCTL_VMMREQUEST(0))) + { + CHECKRET_MIN_SIZE("VMMREQUEST", sizeof(VMMDevRequestHeader)); + rc = vbgdIoCtl_VMMRequest(pDevExt, pSession, (VMMDevRequestHeader *)pvData, cbData, pcbDataReturned); + } +#ifdef VBOX_WITH_HGCM + /* + * These ones are a bit tricky. + */ + else if (VBOXGUEST_IOCTL_STRIP_SIZE(iFunction) == VBOXGUEST_IOCTL_STRIP_SIZE(VBOXGUEST_IOCTL_HGCM_CALL(0))) + { + bool fInterruptible = pSession->R0Process != NIL_RTR0PROCESS; + CHECKRET_MIN_SIZE("HGCM_CALL", sizeof(VBoxGuestHGCMCallInfo)); + rc = vbgdIoCtl_HGCMCall(pDevExt, pSession, (VBoxGuestHGCMCallInfo *)pvData, RT_INDEFINITE_WAIT, + fInterruptible, false /*f32bit*/, false /* fUserData */, + 0, cbData, pcbDataReturned); + } + else if (VBOXGUEST_IOCTL_STRIP_SIZE(iFunction) == VBOXGUEST_IOCTL_STRIP_SIZE(VBOXGUEST_IOCTL_HGCM_CALL_TIMED(0))) + { + VBoxGuestHGCMCallInfoTimed *pInfo = (VBoxGuestHGCMCallInfoTimed *)pvData; + CHECKRET_MIN_SIZE("HGCM_CALL_TIMED", sizeof(VBoxGuestHGCMCallInfoTimed)); + rc = vbgdIoCtl_HGCMCall(pDevExt, pSession, &pInfo->info, pInfo->u32Timeout, + !!pInfo->fInterruptible || pSession->R0Process != NIL_RTR0PROCESS, + false /*f32bit*/, false /* fUserData */, + RT_OFFSETOF(VBoxGuestHGCMCallInfoTimed, info), cbData, pcbDataReturned); + } + else if (VBOXGUEST_IOCTL_STRIP_SIZE(iFunction) == VBOXGUEST_IOCTL_STRIP_SIZE(VBOXGUEST_IOCTL_HGCM_CALL_USERDATA(0))) + { + bool fInterruptible = true; + CHECKRET_MIN_SIZE("HGCM_CALL", sizeof(VBoxGuestHGCMCallInfo)); + rc = vbgdIoCtl_HGCMCall(pDevExt, pSession, (VBoxGuestHGCMCallInfo *)pvData, RT_INDEFINITE_WAIT, + fInterruptible, false /*f32bit*/, true /* fUserData */, + 0, cbData, pcbDataReturned); + } +# ifdef RT_ARCH_AMD64 + else if (VBOXGUEST_IOCTL_STRIP_SIZE(iFunction) == VBOXGUEST_IOCTL_STRIP_SIZE(VBOXGUEST_IOCTL_HGCM_CALL_32(0))) + { + bool fInterruptible = pSession->R0Process != NIL_RTR0PROCESS; + CHECKRET_MIN_SIZE("HGCM_CALL", sizeof(VBoxGuestHGCMCallInfo)); + rc = vbgdIoCtl_HGCMCall(pDevExt, pSession, (VBoxGuestHGCMCallInfo *)pvData, RT_INDEFINITE_WAIT, + fInterruptible, true /*f32bit*/, false /* fUserData */, + 0, cbData, pcbDataReturned); + } + else if (VBOXGUEST_IOCTL_STRIP_SIZE(iFunction) == VBOXGUEST_IOCTL_STRIP_SIZE(VBOXGUEST_IOCTL_HGCM_CALL_TIMED_32(0))) + { + CHECKRET_MIN_SIZE("HGCM_CALL_TIMED", sizeof(VBoxGuestHGCMCallInfoTimed)); + VBoxGuestHGCMCallInfoTimed *pInfo = (VBoxGuestHGCMCallInfoTimed *)pvData; + rc = vbgdIoCtl_HGCMCall(pDevExt, pSession, &pInfo->info, pInfo->u32Timeout, + !!pInfo->fInterruptible || pSession->R0Process != NIL_RTR0PROCESS, + true /*f32bit*/, false /* fUserData */, + RT_OFFSETOF(VBoxGuestHGCMCallInfoTimed, info), cbData, pcbDataReturned); + } +# endif +#endif /* VBOX_WITH_HGCM */ + else if (VBOXGUEST_IOCTL_STRIP_SIZE(iFunction) == VBOXGUEST_IOCTL_STRIP_SIZE(VBOXGUEST_IOCTL_LOG(0))) + { + CHECKRET_MIN_SIZE("LOG", 1); + rc = vbgdIoCtl_Log(pDevExt, (char *)pvData, cbData, pcbDataReturned, pSession->fUserSession); + } + else + { + switch (iFunction) + { + case VBOXGUEST_IOCTL_GETVMMDEVPORT: + CHECKRET_RING0("GETVMMDEVPORT"); + CHECKRET_MIN_SIZE("GETVMMDEVPORT", sizeof(VBoxGuestPortInfo)); + rc = vbgdIoCtl_GetVMMDevPort(pDevExt, (VBoxGuestPortInfo *)pvData, pcbDataReturned); + break; + +#ifndef RT_OS_WINDOWS /* Windows has its own implementation of this. */ + case VBOXGUEST_IOCTL_SET_MOUSE_NOTIFY_CALLBACK: + CHECKRET_RING0("SET_MOUSE_NOTIFY_CALLBACK"); + CHECKRET_SIZE("SET_MOUSE_NOTIFY_CALLBACK", sizeof(VBoxGuestMouseSetNotifyCallback)); + rc = vbgdIoCtl_SetMouseNotifyCallback(pDevExt, (VBoxGuestMouseSetNotifyCallback *)pvData); + break; +#endif + + case VBOXGUEST_IOCTL_WAITEVENT: + CHECKRET_MIN_SIZE("WAITEVENT", sizeof(VBoxGuestWaitEventInfo)); + rc = vbgdIoCtl_WaitEvent(pDevExt, pSession, (VBoxGuestWaitEventInfo *)pvData, + pcbDataReturned, pSession->R0Process != NIL_RTR0PROCESS); + break; + + case VBOXGUEST_IOCTL_CANCEL_ALL_WAITEVENTS: + CHECKRET_SIZE("CANCEL_ALL_WAITEVENTS", 0); + rc = vbgdIoCtl_CancelAllWaitEvents(pDevExt, pSession); + break; + + case VBOXGUEST_IOCTL_CTL_FILTER_MASK: + CHECKRET_MIN_SIZE("CTL_FILTER_MASK", sizeof(VBoxGuestFilterMaskInfo)); + rc = vbgdIoCtl_CtlFilterMask(pDevExt, pSession, (VBoxGuestFilterMaskInfo *)pvData); + break; + +#ifdef VBOX_WITH_HGCM + case VBOXGUEST_IOCTL_HGCM_CONNECT: +# ifdef RT_ARCH_AMD64 + case VBOXGUEST_IOCTL_HGCM_CONNECT_32: +# endif + CHECKRET_MIN_SIZE("HGCM_CONNECT", sizeof(VBoxGuestHGCMConnectInfo)); + rc = vbgdIoCtl_HGCMConnect(pDevExt, pSession, (VBoxGuestHGCMConnectInfo *)pvData, pcbDataReturned); + break; + + case VBOXGUEST_IOCTL_HGCM_DISCONNECT: +# ifdef RT_ARCH_AMD64 + case VBOXGUEST_IOCTL_HGCM_DISCONNECT_32: +# endif + CHECKRET_MIN_SIZE("HGCM_DISCONNECT", sizeof(VBoxGuestHGCMDisconnectInfo)); + rc = vbgdIoCtl_HGCMDisconnect(pDevExt, pSession, (VBoxGuestHGCMDisconnectInfo *)pvData, pcbDataReturned); + break; +#endif /* VBOX_WITH_HGCM */ + + case VBOXGUEST_IOCTL_CHECK_BALLOON: + CHECKRET_MIN_SIZE("CHECK_MEMORY_BALLOON", sizeof(VBoxGuestCheckBalloonInfo)); + rc = vbgdIoCtl_CheckMemoryBalloon(pDevExt, pSession, (VBoxGuestCheckBalloonInfo *)pvData, pcbDataReturned); + break; + + case VBOXGUEST_IOCTL_CHANGE_BALLOON: + CHECKRET_MIN_SIZE("CHANGE_MEMORY_BALLOON", sizeof(VBoxGuestChangeBalloonInfo)); + rc = vbgdIoCtl_ChangeMemoryBalloon(pDevExt, pSession, (VBoxGuestChangeBalloonInfo *)pvData, pcbDataReturned); + break; + + case VBOXGUEST_IOCTL_WRITE_CORE_DUMP: + CHECKRET_MIN_SIZE("WRITE_CORE_DUMP", sizeof(VBoxGuestWriteCoreDump)); + rc = vbgdIoCtl_WriteCoreDump(pDevExt, (VBoxGuestWriteCoreDump *)pvData); + break; + + case VBOXGUEST_IOCTL_SET_MOUSE_STATUS: + CHECKRET_SIZE("SET_MOUSE_STATUS", sizeof(uint32_t)); + rc = vbgdIoCtl_SetMouseStatus(pDevExt, pSession, *(uint32_t *)pvData); + break; + +#ifdef VBOX_WITH_DPC_LATENCY_CHECKER + case VBOXGUEST_IOCTL_DPC_LATENCY_CHECKER: + CHECKRET_SIZE("DPC_LATENCY_CHECKER", 0); + rc = VbgdNtIOCtl_DpcLatencyChecker(); + break; +#endif + + case VBOXGUEST_IOCTL_GUEST_CAPS_ACQUIRE: + CHECKRET_SIZE("GUEST_CAPS_ACQUIRE", sizeof(VBoxGuestCapsAquire)); + rc = vbgdIoCtl_GuestCapsAcquire(pDevExt, pSession, (VBoxGuestCapsAquire *)pvData); + *pcbDataReturned = sizeof(VBoxGuestCapsAquire); + break; + + case VBOXGUEST_IOCTL_SET_GUEST_CAPABILITIES: + CHECKRET_MIN_SIZE("SET_GUEST_CAPABILITIES", sizeof(VBoxGuestSetCapabilitiesInfo)); + rc = vbgdIoCtl_SetCapabilities(pDevExt, pSession, (VBoxGuestSetCapabilitiesInfo *)pvData); + break; + + default: + { + LogRel(("VbgdCommonIoCtl: Unknown request iFunction=%#x stripped size=%#x\n", + iFunction, VBOXGUEST_IOCTL_STRIP_SIZE(iFunction))); + rc = VERR_NOT_SUPPORTED; + break; + } + } + } + + LogFlow(("VbgdCommonIoCtl: returns %Rrc *pcbDataReturned=%zu\n", rc, pcbDataReturned ? *pcbDataReturned : 0)); + return rc; +} + + +/** + * Used by VbgdCommonISR as well as the acquire guest capability code. + * + * @returns VINF_SUCCESS on success. On failure, ORed together + * RTSemEventMultiSignal errors (completes processing despite errors). + * @param pDevExt The VBoxGuest device extension. + * @param fEvents The events to dispatch. + */ +static int vbgdDispatchEventsLocked(PVBOXGUESTDEVEXT pDevExt, uint32_t fEvents) +{ + PVBOXGUESTWAIT pWait; + PVBOXGUESTWAIT pSafe; + int rc = VINF_SUCCESS; + + fEvents |= pDevExt->f32PendingEvents; + + RTListForEachSafe(&pDevExt->WaitList, pWait, pSafe, VBOXGUESTWAIT, ListNode) + { + uint32_t fHandledEvents = pWait->fReqEvents & fEvents; + if ( fHandledEvents != 0 + && !pWait->fResEvents) + { + /* Does this one wait on any of the events we're dispatching? We do a quick + check first, then deal with VBOXGUEST_ACQUIRE_STYLE_EVENTS as applicable. */ + if (fHandledEvents & VBOXGUEST_ACQUIRE_STYLE_EVENTS) + fHandledEvents &= vbgdGetAllowedEventMaskForSession(pDevExt, pWait->pSession); + if (fHandledEvents) + { + pWait->fResEvents = pWait->fReqEvents & fEvents & fHandledEvents; + fEvents &= ~pWait->fResEvents; + RTListNodeRemove(&pWait->ListNode); +#ifdef VBOXGUEST_USE_DEFERRED_WAKE_UP + RTListAppend(&pDevExt->WakeUpList, &pWait->ListNode); +#else + RTListAppend(&pDevExt->WokenUpList, &pWait->ListNode); + rc |= RTSemEventMultiSignal(pWait->Event); +#endif + if (!fEvents) + break; + } + } + } + + ASMAtomicWriteU32(&pDevExt->f32PendingEvents, fEvents); + return rc; +} + + +/** + * Common interrupt service routine. + * + * This deals with events and with waking up thread waiting for those events. + * + * @returns true if it was our interrupt, false if it wasn't. + * @param pDevExt The VBoxGuest device extension. + */ +bool VbgdCommonISR(PVBOXGUESTDEVEXT pDevExt) +{ + VMMDevEvents volatile *pReq = pDevExt->pIrqAckEvents; + bool fMousePositionChanged = false; + int rc = 0; + bool fOurIrq; + + /* + * Make sure we've initialized the device extension. + */ + if (RT_UNLIKELY(!pReq)) + return false; + + /* + * Enter the spinlock and check if it's our IRQ or not. + */ + RTSpinlockAcquire(pDevExt->EventSpinlock); + fOurIrq = pDevExt->pVMMDevMemory->V.V1_04.fHaveEvents; + if (fOurIrq) + { + /* + * Acknowlegde events. + * We don't use VbglGRPerform here as it may take another spinlocks. + */ + pReq->header.rc = VERR_INTERNAL_ERROR; + pReq->events = 0; + ASMCompilerBarrier(); + ASMOutU32(pDevExt->IOPortBase + VMMDEV_PORT_OFF_REQUEST, (uint32_t)pDevExt->PhysIrqAckEvents); + ASMCompilerBarrier(); /* paranoia */ + if (RT_SUCCESS(pReq->header.rc)) + { + uint32_t fEvents = pReq->events; + + Log3(("VbgdCommonISR: acknowledge events succeeded %#RX32\n", fEvents)); + + /* + * VMMDEV_EVENT_MOUSE_POSITION_CHANGED can only be polled for. + */ + if (fEvents & VMMDEV_EVENT_MOUSE_POSITION_CHANGED) + { + fMousePositionChanged = true; + fEvents &= ~VMMDEV_EVENT_MOUSE_POSITION_CHANGED; +#ifndef RT_OS_WINDOWS + if (pDevExt->MouseNotifyCallback.pfnNotify) + pDevExt->MouseNotifyCallback.pfnNotify(pDevExt->MouseNotifyCallback.pvUser); +#endif + } + +#ifdef VBOX_WITH_HGCM + /* + * The HGCM event/list is kind of different in that we evaluate all entries. + */ + if (fEvents & VMMDEV_EVENT_HGCM) + { + PVBOXGUESTWAIT pWait; + PVBOXGUESTWAIT pSafe; + RTListForEachSafe(&pDevExt->HGCMWaitList, pWait, pSafe, VBOXGUESTWAIT, ListNode) + { + if (pWait->pHGCMReq->fu32Flags & VBOX_HGCM_REQ_DONE) + { + pWait->fResEvents = VMMDEV_EVENT_HGCM; + RTListNodeRemove(&pWait->ListNode); +# ifdef VBOXGUEST_USE_DEFERRED_WAKE_UP + RTListAppend(&pDevExt->WakeUpList, &pWait->ListNode); +# else + RTListAppend(&pDevExt->WokenUpList, &pWait->ListNode); + rc |= RTSemEventMultiSignal(pWait->Event); +# endif + } + } + fEvents &= ~VMMDEV_EVENT_HGCM; + } +#endif + + /* + * Normal FIFO waiter evaluation. + */ + rc |= vbgdDispatchEventsLocked(pDevExt, fEvents); + } + else /* something is serious wrong... */ + Log(("VbgdCommonISR: acknowledge events failed rc=%Rrc (events=%#x)!!\n", + pReq->header.rc, pReq->events)); + } + else + Log3(("VbgdCommonISR: not ours\n")); + + RTSpinlockRelease(pDevExt->EventSpinlock); + +#if defined(VBOXGUEST_USE_DEFERRED_WAKE_UP) && !defined(RT_OS_DARWIN) && !defined(RT_OS_WINDOWS) + /* + * Do wake-ups. + * Note. On Windows this isn't possible at this IRQL, so a DPC will take + * care of it. Same on darwin, doing it in the work loop callback. + */ + VbgdCommonWaitDoWakeUps(pDevExt); +#endif + + /* + * Work the poll and async notification queues on OSes that implements that. + * (Do this outside the spinlock to prevent some recursive spinlocking.) + */ + if (fMousePositionChanged) + { + ASMAtomicIncU32(&pDevExt->u32MousePosChangedSeq); + VbgdNativeISRMousePollEvent(pDevExt); + } + + Assert(rc == 0); + NOREF(rc); + return fOurIrq; +} + --- linux-raspi2-4.2.0.orig/ubuntu/vbox/vboxguest/VBoxGuestIDC-unix.c.h +++ linux-raspi2-4.2.0/ubuntu/vbox/vboxguest/VBoxGuestIDC-unix.c.h @@ -0,0 +1,148 @@ +/* $Rev: 98751 $ */ +/** @file + * VBoxGuest - Inter Driver Communication, unix implementation. + * + * This file is included by the platform specific source file. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + + +/** @todo Use some header that we have in common with VBoxGuestLib.h... */ +/** @todo fix DECLVBGL usage. */ +RT_C_DECLS_BEGIN +DECLEXPORT(void *) VBOXCALL VBoxGuestIDCOpen(uint32_t *pu32Version); +DECLEXPORT(int) VBOXCALL VBoxGuestIDCClose(void *pvSession); +DECLEXPORT(int) VBOXCALL VBoxGuestIDCCall(void *pvSession, unsigned iCmd, void *pvData, size_t cbData, size_t *pcbDataReturned); +RT_C_DECLS_END + + +/** + * Open a new IDC connection. + * + * @returns Opaque pointer to session object. + * @param pu32Version Where to store VMMDev version. + */ +DECLEXPORT(void *) VBOXCALL VBoxGuestIDCOpen(uint32_t *pu32Version) +{ + PVBOXGUESTSESSION pSession; + int rc; + LogFlow(("VBoxGuestIDCOpen: Version=%#x\n", pu32Version ? *pu32Version : 0)); + + AssertPtrReturn(pu32Version, NULL); + +#ifdef RT_OS_SOLARIS + mutex_enter(&g_LdiMtx); + if (!g_LdiHandle) + { + ldi_ident_t DevIdent = ldi_ident_from_anon(); + rc = ldi_open_by_name(VBOXGUEST_DEVICE_NAME, FREAD, kcred, &g_LdiHandle, DevIdent); + ldi_ident_release(DevIdent); + if (rc) + { + LogRel(("VBoxGuestIDCOpen: ldi_open_by_name failed. rc=%d\n", rc)); + mutex_exit(&g_LdiMtx); + return NULL; + } + } + ++g_cLdiOpens; + mutex_exit(&g_LdiMtx); +#endif + + rc = VbgdCommonCreateKernelSession(&g_DevExt, &pSession); + if (RT_SUCCESS(rc)) + { + *pu32Version = VMMDEV_VERSION; + return pSession; + } + +#ifdef RT_OS_SOLARIS + mutex_enter(&g_LdiMtx); + if (g_cLdiOpens > 0) + --g_cLdiOpens; + if ( g_cLdiOpens == 0 + && g_LdiHandle) + { + ldi_close(g_LdiHandle, FREAD, kcred); + g_LdiHandle = NULL; + } + mutex_exit(&g_LdiMtx); +#endif + + LogRel(("VBoxGuestIDCOpen: VbgdCommonCreateKernelSession failed. rc=%d\n", rc)); + return NULL; +} + + +/** + * Close an IDC connection. + * + * @returns VBox error code. + * @param pvState Opaque pointer to the session object. + */ +DECLEXPORT(int) VBOXCALL VBoxGuestIDCClose(void *pvSession) +{ + PVBOXGUESTSESSION pSession = (PVBOXGUESTSESSION)pvSession; + LogFlow(("VBoxGuestIDCClose:\n")); + + AssertPtrReturn(pSession, VERR_INVALID_POINTER); + VbgdCommonCloseSession(&g_DevExt, pSession); + +#ifdef RT_OS_SOLARIS + mutex_enter(&g_LdiMtx); + if (g_cLdiOpens > 0) + --g_cLdiOpens; + if ( g_cLdiOpens == 0 + && g_LdiHandle) + { + ldi_close(g_LdiHandle, FREAD, kcred); + g_LdiHandle = NULL; + } + mutex_exit(&g_LdiMtx); +#endif + + return VINF_SUCCESS; +} + + +/** + * Perform an IDC call. + * + * @returns VBox error code. + * @param pvSession Opaque pointer to the session. + * @param iCmd Requested function. + * @param pvData IO data buffer. + * @param cbData Size of the data buffer. + * @param pcbDataReturned Where to store the amount of returned data. + */ +DECLEXPORT(int) VBOXCALL VBoxGuestIDCCall(void *pvSession, unsigned iCmd, void *pvData, size_t cbData, size_t *pcbDataReturned) +{ + PVBOXGUESTSESSION pSession = (PVBOXGUESTSESSION)pvSession; + LogFlow(("VBoxGuestIDCCall: %pvSession=%p Cmd=%u pvData=%p cbData=%d\n", pvSession, iCmd, pvData, cbData)); + + AssertPtrReturn(pSession, VERR_INVALID_POINTER); + AssertMsgReturn(pSession->pDevExt == &g_DevExt, + ("SC: %p != %p\n", pSession->pDevExt, &g_DevExt), VERR_INVALID_HANDLE); + + return VbgdCommonIoCtl(iCmd, &g_DevExt, pSession, pvData, cbData, pcbDataReturned); +} + --- linux-raspi2-4.2.0.orig/ubuntu/vbox/vboxguest/VBoxGuestInternal.h +++ linux-raspi2-4.2.0/ubuntu/vbox/vboxguest/VBoxGuestInternal.h @@ -0,0 +1,351 @@ +/* $Id: VBoxGuestInternal.h $ */ +/** @file + * VBoxGuest - Guest Additions Driver. + */ + +/* + * Copyright (C) 2010-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + +#ifndef ___VBoxGuestInternal_h +#define ___VBoxGuestInternal_h + +#include +#include +#include +#include +#include +#include +#include +#include + +/** @def VBOXGUEST_USE_WAKE_UP_LIST + * Defer wake-up of waiting thread when defined. */ +#if defined(RT_OS_DARWIN) || defined(RT_OS_SOLARIS) || defined(RT_OS_WINDOWS) || defined(DOXYGEN_RUNNING) +# define VBOXGUEST_USE_DEFERRED_WAKE_UP +#endif + + +/** Pointer to the VBoxGuest per session data. */ +typedef struct VBOXGUESTSESSION *PVBOXGUESTSESSION; + +/** Pointer to a wait-for-event entry. */ +typedef struct VBOXGUESTWAIT *PVBOXGUESTWAIT; + +/** + * VBox guest wait for event entry. + * + * Each waiting thread allocates one of these items and adds + * it to the wait list before going to sleep on the event sem. + */ +typedef struct VBOXGUESTWAIT +{ + /** The list node. */ + RTLISTNODE ListNode; + /** The events we are waiting on. */ + uint32_t fReqEvents; + /** The events we received. */ + uint32_t volatile fResEvents; +#ifdef VBOXGUEST_USE_DEFERRED_WAKE_UP + /** Set by VbgdCommonWaitDoWakeUps before leaving the spinlock to call + * RTSemEventMultiSignal. */ + bool volatile fPendingWakeUp; + /** Set by the requestor thread if it got the spinlock before the + * signaller. Deals with the race in VbgdCommonWaitDoWakeUps. */ + bool volatile fFreeMe; +#endif + /** The event semaphore. */ + RTSEMEVENTMULTI Event; + /** The session that's waiting. */ + PVBOXGUESTSESSION pSession; +#ifdef VBOX_WITH_HGCM + /** The HGCM request we're waiting for to complete. */ + VMMDevHGCMRequestHeader volatile *pHGCMReq; +#endif +} VBOXGUESTWAIT; + + +/** + * VBox guest memory balloon. + */ +typedef struct VBOXGUESTMEMBALLOON +{ + /** Mutex protecting the members below from concurrent access.. */ + RTSEMFASTMUTEX hMtx; + /** The current number of chunks in the balloon. */ + uint32_t cChunks; + /** The maximum number of chunks in the balloon (typically the amount of guest + * memory / chunksize). */ + uint32_t cMaxChunks; + /** This is true if we are using RTR0MemObjAllocPhysNC() / RTR0MemObjGetPagePhysAddr() + * and false otherwise. */ + bool fUseKernelAPI; + /** The current owner of the balloon. + * This is automatically assigned to the first session using the ballooning + * API and first released when the session closes. */ + PVBOXGUESTSESSION pOwner; + /** The pointer to the array of memory objects holding the chunks of the + * balloon. This array is cMaxChunks in size when present. */ + PRTR0MEMOBJ paMemObj; +} VBOXGUESTMEMBALLOON; +/** Pointer to a memory balloon. */ +typedef VBOXGUESTMEMBALLOON *PVBOXGUESTMEMBALLOON; + + +/** + * Per bit usage tracker for a uint32_t mask. + * + * Used for optimal handling of guest properties, mouse status and event filter. + */ +typedef struct VBOXGUESTBITUSAGETRACER +{ + /** Per bit usage counters. */ + uint32_t acPerBitUsage[32]; + /** The current mask according to acPerBitUsage. */ + uint32_t fMask; +} VBOXGUESTBITUSAGETRACER; +/** Pointer to a per bit usage tracker. */ +typedef VBOXGUESTBITUSAGETRACER *PVBOXGUESTBITUSAGETRACER; +/** Pointer to a const per bit usage tracker. */ +typedef VBOXGUESTBITUSAGETRACER const *PCVBOXGUESTBITUSAGETRACER; + + +/** + * VBox guest device (data) extension. + */ +typedef struct VBOXGUESTDEVEXT +{ + /** The base of the adapter I/O ports. */ + RTIOPORT IOPortBase; + /** Pointer to the mapping of the VMMDev adapter memory. */ + VMMDevMemory volatile *pVMMDevMemory; + /** The memory object reserving space for the guest mappings. */ + RTR0MEMOBJ hGuestMappings; + /** Spinlock protecting the signaling and resetting of the wait-for-event + * semaphores as well as the event acking in the ISR. */ + RTSPINLOCK EventSpinlock; + /** Preallocated VMMDevEvents for the IRQ handler. */ + VMMDevEvents *pIrqAckEvents; + /** The physical address of pIrqAckEvents. */ + RTCCPHYS PhysIrqAckEvents; + /** Wait-for-event list for threads waiting for multiple events + * (VBOXGUESTWAIT). */ + RTLISTANCHOR WaitList; +#ifdef VBOX_WITH_HGCM + /** Wait-for-event list for threads waiting on HGCM async completion + * (VBOXGUESTWAIT). + * + * The entire list is evaluated upon the arrival of an HGCM event, unlike + * the other lists which are only evaluated till the first thread has + * been woken up. */ + RTLISTANCHOR HGCMWaitList; +#endif +#ifdef VBOXGUEST_USE_DEFERRED_WAKE_UP + /** List of wait-for-event entries that needs waking up + * (VBOXGUESTWAIT). */ + RTLISTANCHOR WakeUpList; +#endif + /** List of wait-for-event entries that has been woken up + * (VBOXGUESTWAIT). */ + RTLISTANCHOR WokenUpList; + /** List of free wait-for-event entries (VBOXGUESTWAIT). */ + RTLISTANCHOR FreeList; + /** Mask of pending events. */ + uint32_t volatile f32PendingEvents; + /** Current VMMDEV_EVENT_MOUSE_POSITION_CHANGED sequence number. + * Used to implement polling. */ + uint32_t volatile u32MousePosChangedSeq; + + /** Spinlock various items in the VBOXGUESTSESSION. */ + RTSPINLOCK SessionSpinlock; + /** List of guest sessions (VBOXGUESTSESSION). We currently traverse this + * but do not search it, so a list data type should be fine. Use under the + * #SessionSpinlock lock. */ + RTLISTANCHOR SessionList; + /** Number of session. */ + uint32_t cSessions; + /** Flag indicating whether logging to the release log + * is enabled. */ + bool fLoggingEnabled; + /** Memory balloon information for RTR0MemObjAllocPhysNC(). */ + VBOXGUESTMEMBALLOON MemBalloon; + /** Callback and user data for a kernel mouse handler. */ + VBoxGuestMouseSetNotifyCallback MouseNotifyCallback; + + /** @name Host Event Filtering + * @{ */ + /** Events we won't permit anyone to filter out. */ + uint32_t fFixedEvents; + /** Usage counters for the host events. (Fixed events are not included.) */ + VBOXGUESTBITUSAGETRACER EventFilterTracker; + /** The event filter last reported to the host (UINT32_MAX on failure). */ + uint32_t fEventFilterHost; + /** @} */ + + /** @name Mouse Status + * @{ */ + /** Usage counters for the mouse statuses (VMMDEV_MOUSE_XXX). */ + VBOXGUESTBITUSAGETRACER MouseStatusTracker; + /** The mouse status last reported to the host (UINT32_MAX on failure). */ + uint32_t fMouseStatusHost; + /** @} */ + + /** @name Guest Capabilities + * @{ */ + /** Guest capabilities which have been set to "acquire" mode. This means + * that only one session can use them at a time, and that they will be + * automatically cleaned up if that session exits without doing so. + * + * Protected by VBOXGUESTDEVEXT::SessionSpinlock, but is unfortunately read + * without holding the lock in a couple of places. */ + uint32_t volatile fAcquireModeGuestCaps; + /** Guest capabilities which have been set to "set" mode. This just means + * that they have been blocked from ever being set to "acquire" mode. */ + uint32_t fSetModeGuestCaps; + /** Mask of all capabilities which are currently acquired by some session + * and as such reported to the host. */ + uint32_t fAcquiredGuestCaps; + /** Usage counters for guest capabilities in "set" mode. Indexed by + * capability bit number, one count per session using a capability. */ + VBOXGUESTBITUSAGETRACER SetGuestCapsTracker; + /** The guest capabilities last reported to the host (UINT32_MAX on failure). */ + uint32_t fGuestCapsHost; + /** @} */ + + /** Heartbeat timer which fires with interval + * cNsHearbeatInterval and its handler sends + * VMMDevReq_GuestHeartbeat to VMMDev. */ + PRTTIMER pHeartbeatTimer; + /** Heartbeat timer interval in nanoseconds. */ + uint64_t cNsHeartbeatInterval; + /** Preallocated VMMDevReq_GuestHeartbeat request. */ + VMMDevRequestHeader *pReqGuestHeartbeat; +} VBOXGUESTDEVEXT; +/** Pointer to the VBoxGuest driver data. */ +typedef VBOXGUESTDEVEXT *PVBOXGUESTDEVEXT; + + +/** + * The VBoxGuest per session data. + */ +typedef struct VBOXGUESTSESSION +{ + /** The list node. */ + RTLISTNODE ListNode; +#if defined(RT_OS_DARWIN) || defined(RT_OS_FREEBSD) || defined(RT_OS_OS2) || defined(RT_OS_SOLARIS) + /** Pointer to the next session with the same hash. */ + PVBOXGUESTSESSION pNextHash; +#endif +#if defined(RT_OS_OS2) + /** The system file number of this session. */ + uint16_t sfn; + uint16_t Alignment; /**< Alignment */ +#endif + /** The process (id) of the session. + * This is NIL if it's a kernel session. */ + RTPROCESS Process; + /** Which process this session is associated with. + * This is NIL if it's a kernel session. */ + RTR0PROCESS R0Process; + /** Pointer to the device extension. */ + PVBOXGUESTDEVEXT pDevExt; + +#ifdef VBOX_WITH_HGCM + /** Array containing HGCM client IDs associated with this session. + * This will be automatically disconnected when the session is closed. */ + uint32_t volatile aHGCMClientIds[64]; +#endif + /** The last consumed VMMDEV_EVENT_MOUSE_POSITION_CHANGED sequence number. + * Used to implement polling. */ + uint32_t volatile u32MousePosChangedSeq; + /** Host events requested by the session. + * An event type requested in any guest session will be added to the host + * filter. Protected by VBOXGUESTDEVEXT::SessionSpinlock. */ + uint32_t fEventFilter; + /** Guest capabilities held in "acquired" by this session. + * Protected by VBOXGUESTDEVEXT::SessionSpinlock, but is unfortunately read + * without holding the lock in a couple of places. */ + uint32_t volatile fAcquiredGuestCaps; + /** Guest capabilities in "set" mode for this session. + * These accumulated for sessions via VBOXGUESTDEVEXT::acGuestCapsSet and + * reported to the host. Protected by VBOXGUESTDEVEXT::SessionSpinlock. */ + uint32_t fCapabilities; + /** Mouse features supported. A feature enabled in any guest session will + * be enabled for the host. + * @note We invert the VMMDEV_MOUSE_GUEST_NEEDS_HOST_CURSOR feature in this + * bitmap. The logic of this is that the real feature is when the host + * cursor is not needed, and we tell the host it is not needed if any + * session explicitly fails to assert it. Storing it inverted simplifies + * the checks. + * Use under the VBOXGUESTDEVEXT#SessionSpinlock lock. */ + uint32_t fMouseStatus; +#ifdef RT_OS_DARWIN + /** Pointer to the associated org_virtualbox_VBoxGuestClient object. */ + void *pvVBoxGuestClient; + /** Whether this session has been opened or not. */ + bool fOpened; +#endif + /** Whether a CANCEL_ALL_WAITEVENTS is pending. This happens when + * CANCEL_ALL_WAITEVENTS is called, but no call to WAITEVENT is in process + * in the current session. In that case the next call will be interrupted + * at once. */ + bool volatile fPendingCancelWaitEvents; + /** Does this session belong to a root process or a user one? */ + bool fUserSession; +} VBOXGUESTSESSION; + +RT_C_DECLS_BEGIN + +int VbgdCommonInitDevExt(PVBOXGUESTDEVEXT pDevExt, uint16_t IOPortBase, void *pvMMIOBase, uint32_t cbMMIO, + VBOXOSTYPE enmOSType, uint32_t fEvents); +bool VbgdCommonISR(PVBOXGUESTDEVEXT pDevExt); +void VbgdCommonDeleteDevExt(PVBOXGUESTDEVEXT pDevExt); +int VbgdCommonReinitDevExtAfterHibernation(PVBOXGUESTDEVEXT pDevExt, VBOXOSTYPE enmOSType); +#ifdef VBOXGUEST_USE_DEFERRED_WAKE_UP +void VbgdCommonWaitDoWakeUps(PVBOXGUESTDEVEXT pDevExt); +#endif + +int VbgdCommonCreateUserSession(PVBOXGUESTDEVEXT pDevExt, PVBOXGUESTSESSION *ppSession); +int VbgdCommonCreateKernelSession(PVBOXGUESTDEVEXT pDevExt, PVBOXGUESTSESSION *ppSession); +void VbgdCommonCloseSession(PVBOXGUESTDEVEXT pDevExt, PVBOXGUESTSESSION pSession); + +int VbgdCommonIoCtlFast(unsigned iFunction, PVBOXGUESTDEVEXT pDevExt, PVBOXGUESTSESSION pSession); +int VbgdCommonIoCtl(unsigned iFunction, PVBOXGUESTDEVEXT pDevExt, PVBOXGUESTSESSION pSession, + void *pvData, size_t cbData, size_t *pcbDataReturned); + +/** + * ISR callback for notifying threads polling for mouse events. + * + * This is called at the end of the ISR, after leaving the event spinlock, if + * VMMDEV_EVENT_MOUSE_POSITION_CHANGED was raised by the host. + * + * @param pDevExt The device extension. + */ +void VbgdNativeISRMousePollEvent(PVBOXGUESTDEVEXT pDevExt); + + +#ifdef VBOX_WITH_DPC_LATENCY_CHECKER +int VbgdNtIOCtl_DpcLatencyChecker(void); +#endif + +RT_C_DECLS_END + +#endif + --- linux-raspi2-4.2.0.orig/ubuntu/vbox/vboxguest/VBoxGuestLog.h +++ linux-raspi2-4.2.0/ubuntu/vbox/vboxguest/VBoxGuestLog.h @@ -0,0 +1,59 @@ +/* $Id: VBoxGuestLog.h $ */ +/** @file + * VBoxGuestLibR0 - Guest Logging facility. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + +#ifndef __VBOXGUESTLOG__H +#define __VBOXGUESTLOG__H + +#ifndef RT_OS_WINDOWS +# error "Don't include this file." +#else /* RT_OS_WINDOWS */ +/* Save LOG_ENABLED state, because "VBox/rt/log.h" + * may undefine it for IN_RING0 code. + */ +# if (defined(DEBUG) && !defined(NO_LOGGING)) || defined(LOG_ENABLED) +# define __LOG_ENABLED_SAVED__ +# endif + +# if (defined(DEBUG) && !defined(NO_LOGGING)) || defined(LOG_ENABLED) +# ifdef VBOX_GUEST +# include +# undef Log +# define Log(a) RTLogBackdoorPrintf a +# else +# define Log(a) DbgPrint a +# endif +# else +# define Log(a) +# endif + +# ifdef __LOG_ENABLED_SAVED__ +# define LOG_ENABLED +# undef __LOG_ENABLED_SAVED__ +# endif + +#endif /* RT_OS_WINDOWS */ + +#endif /* !__VBOXGUESTLOG__H */ --- linux-raspi2-4.2.0.orig/ubuntu/vbox/vboxguest/VMMDev.c +++ linux-raspi2-4.2.0/ubuntu/vbox/vboxguest/VMMDev.c @@ -0,0 +1,44 @@ +/* $Id: VMMDev.cpp $ */ +/** @file + * VBoxGuestLibR0 - VMMDev device related functions. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + +#include "VBGLInternal.h" + + +DECLVBGL(int) VbglQueryVMMDevMemory (VMMDevMemory **ppVMMDevMemory) +{ + int rc = vbglR0Enter (); + + if (RT_FAILURE(rc)) + return rc; + + /* If the memory was not found, return an error. */ + if (!g_vbgldata.pVMMDevMemory) + return VERR_NOT_SUPPORTED; + + *ppVMMDevMemory = g_vbgldata.pVMMDevMemory; + return rc; +} + --- linux-raspi2-4.2.0.orig/ubuntu/vbox/vboxguest/common/alloc/alloc.c +++ linux-raspi2-4.2.0/ubuntu/vbox/vboxguest/common/alloc/alloc.c @@ -0,0 +1,63 @@ +/* $Id: alloc.cpp $ */ +/** @file + * IPRT - Memory Allocation. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + + +/******************************************************************************* +* Header Files * +*******************************************************************************/ +#ifndef RTMEM_NO_WRAP_TO_EF_APIS +# define RTMEM_NO_WRAP_TO_EF_APIS +#endif +#include +#include "internal/iprt.h" + +#include +#include + + + +RTDECL(void *) RTMemDupTag(const void *pvSrc, size_t cb, const char *pszTag) RT_NO_THROW +{ + void *pvDst = RTMemAllocTag(cb, pszTag); + if (pvDst) + memcpy(pvDst, pvSrc, cb); + return pvDst; +} +RT_EXPORT_SYMBOL(RTMemDupTag); + + +RTDECL(void *) RTMemDupExTag(const void *pvSrc, size_t cbSrc, size_t cbExtra, const char *pszTag) RT_NO_THROW +{ + void *pvDst = RTMemAllocTag(cbSrc + cbExtra, pszTag); + if (pvDst) + { + memcpy(pvDst, pvSrc, cbSrc); + memset((uint8_t *)pvDst + cbSrc, 0, cbExtra); + } + return pvDst; +} +RT_EXPORT_SYMBOL(RTMemDupExTag); + --- linux-raspi2-4.2.0.orig/ubuntu/vbox/vboxguest/common/alloc/heapsimple.c +++ linux-raspi2-4.2.0/ubuntu/vbox/vboxguest/common/alloc/heapsimple.c @@ -0,0 +1,920 @@ +/* $Id: heapsimple.cpp $ */ +/** @file + * IPRT - A Simple Heap. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + + +/******************************************************************************* +* Header Files * +*******************************************************************************/ +#define LOG_GROUP RTLOGGROUP_DEFAULT +#include +#include "internal/iprt.h" + +#include +#include +#include +#include +#include +#include + +#include "internal/magics.h" + + +/******************************************************************************* +* Structures and Typedefs * +*******************************************************************************/ +/** Pointer to the heap anchor block. */ +typedef struct RTHEAPSIMPLEINTERNAL *PRTHEAPSIMPLEINTERNAL; +/** Pointer to a heap block. */ +typedef struct RTHEAPSIMPLEBLOCK *PRTHEAPSIMPLEBLOCK; +/** Pointer to a free heap block. */ +typedef struct RTHEAPSIMPLEFREE *PRTHEAPSIMPLEFREE; + +/** + * Structure describing a simple heap block. + * If this block is allocated, it is followed by the user data. + * If this block is free, see RTHEAPSIMPLEFREE. + */ +typedef struct RTHEAPSIMPLEBLOCK +{ + /** The next block in the global block list. */ + PRTHEAPSIMPLEBLOCK pNext; + /** The previous block in the global block list. */ + PRTHEAPSIMPLEBLOCK pPrev; + /** Pointer to the heap anchor block. */ + PRTHEAPSIMPLEINTERNAL pHeap; + /** Flags + magic. */ + uintptr_t fFlags; +} RTHEAPSIMPLEBLOCK; +AssertCompileSizeAlignment(RTHEAPSIMPLEBLOCK, 16); + +/** The block is free if this flag is set. When cleared it's allocated. */ +#define RTHEAPSIMPLEBLOCK_FLAGS_FREE ((uintptr_t)RT_BIT(0)) +/** The magic value. */ +#define RTHEAPSIMPLEBLOCK_FLAGS_MAGIC ((uintptr_t)0xabcdef00) +/** The mask that needs to be applied to RTHEAPSIMPLEBLOCK::fFlags to obtain the magic value. */ +#define RTHEAPSIMPLEBLOCK_FLAGS_MAGIC_MASK (~(uintptr_t)RT_BIT(0)) + +/** + * Checks if the specified block is valid or not. + * @returns boolean answer. + * @param pBlock Pointer to a RTHEAPSIMPLEBLOCK structure. + */ +#define RTHEAPSIMPLEBLOCK_IS_VALID(pBlock) \ + ( ((pBlock)->fFlags & RTHEAPSIMPLEBLOCK_FLAGS_MAGIC_MASK) == RTHEAPSIMPLEBLOCK_FLAGS_MAGIC ) + +/** + * Checks if the specified block is valid and in use. + * @returns boolean answer. + * @param pBlock Pointer to a RTHEAPSIMPLEBLOCK structure. + */ +#define RTHEAPSIMPLEBLOCK_IS_VALID_USED(pBlock) \ + ( ((pBlock)->fFlags & (RTHEAPSIMPLEBLOCK_FLAGS_MAGIC_MASK | RTHEAPSIMPLEBLOCK_FLAGS_FREE)) \ + == RTHEAPSIMPLEBLOCK_FLAGS_MAGIC ) + +/** + * Checks if the specified block is valid and free. + * @returns boolean answer. + * @param pBlock Pointer to a RTHEAPSIMPLEBLOCK structure. + */ +#define RTHEAPSIMPLEBLOCK_IS_VALID_FREE(pBlock) \ + ( ((pBlock)->fFlags & (RTHEAPSIMPLEBLOCK_FLAGS_MAGIC_MASK | RTHEAPSIMPLEBLOCK_FLAGS_FREE)) \ + == (RTHEAPSIMPLEBLOCK_FLAGS_MAGIC | RTHEAPSIMPLEBLOCK_FLAGS_FREE) ) + +/** + * Checks if the specified block is free or not. + * @returns boolean answer. + * @param pBlock Pointer to a valid RTHEAPSIMPLEBLOCK structure. + */ +#define RTHEAPSIMPLEBLOCK_IS_FREE(pBlock) (!!((pBlock)->fFlags & RTHEAPSIMPLEBLOCK_FLAGS_FREE)) + +/** + * A free heap block. + * This is an extended version of RTHEAPSIMPLEBLOCK that takes the unused + * user data to store free list pointers and a cached size value. + */ +typedef struct RTHEAPSIMPLEFREE +{ + /** Core stuff. */ + RTHEAPSIMPLEBLOCK Core; + /** Pointer to the next free block. */ + PRTHEAPSIMPLEFREE pNext; + /** Pointer to the previous free block. */ + PRTHEAPSIMPLEFREE pPrev; + /** The size of the block (excluding the RTHEAPSIMPLEBLOCK part). */ + size_t cb; + /** An alignment filler to make it a multiple of (sizeof(void *) * 2). */ + size_t Alignment; +} RTHEAPSIMPLEFREE; + + +/** + * The heap anchor block. + * This structure is placed at the head of the memory block specified to RTHeapSimpleInit(), + * which means that the first RTHEAPSIMPLEBLOCK appears immediately after this structure. + */ +typedef struct RTHEAPSIMPLEINTERNAL +{ + /** The typical magic (RTHEAPSIMPLE_MAGIC). */ + size_t uMagic; + /** The heap size. (This structure is included!) */ + size_t cbHeap; + /** Pointer to the end of the heap. */ + void *pvEnd; + /** The amount of free memory in the heap. */ + size_t cbFree; + /** Free head pointer. */ + PRTHEAPSIMPLEFREE pFreeHead; + /** Free tail pointer. */ + PRTHEAPSIMPLEFREE pFreeTail; + /** Make the size of this structure is a multiple of 32. */ + size_t auAlignment[2]; +} RTHEAPSIMPLEINTERNAL; +AssertCompileSizeAlignment(RTHEAPSIMPLEINTERNAL, 32); + + +/** The minimum allocation size. */ +#define RTHEAPSIMPLE_MIN_BLOCK (sizeof(RTHEAPSIMPLEBLOCK)) +AssertCompile(RTHEAPSIMPLE_MIN_BLOCK >= sizeof(RTHEAPSIMPLEBLOCK)); +AssertCompile(RTHEAPSIMPLE_MIN_BLOCK >= sizeof(RTHEAPSIMPLEFREE) - sizeof(RTHEAPSIMPLEBLOCK)); + +/** The minimum and default alignment. */ +#define RTHEAPSIMPLE_ALIGNMENT (sizeof(RTHEAPSIMPLEBLOCK)) + + +/******************************************************************************* +* Defined Constants And Macros * +*******************************************************************************/ +#ifdef RT_STRICT +# define RTHEAPSIMPLE_STRICT 1 +#endif + +#define ASSERT_L(a, b) AssertMsg((uintptr_t)(a) < (uintptr_t)(b), ("a=%p b=%p\n", (uintptr_t)(a), (uintptr_t)(b))) +#define ASSERT_LE(a, b) AssertMsg((uintptr_t)(a) <= (uintptr_t)(b), ("a=%p b=%p\n", (uintptr_t)(a), (uintptr_t)(b))) +#define ASSERT_G(a, b) AssertMsg((uintptr_t)(a) > (uintptr_t)(b), ("a=%p b=%p\n", (uintptr_t)(a), (uintptr_t)(b))) +#define ASSERT_GE(a, b) AssertMsg((uintptr_t)(a) >= (uintptr_t)(b), ("a=%p b=%p\n", (uintptr_t)(a), (uintptr_t)(b))) +#define ASSERT_ALIGN(a) AssertMsg(!((uintptr_t)(a) & (RTHEAPSIMPLE_ALIGNMENT - 1)), ("a=%p\n", (uintptr_t)(a))) + +#define ASSERT_PREV(pHeapInt, pBlock) \ + do { ASSERT_ALIGN((pBlock)->pPrev); \ + if ((pBlock)->pPrev) \ + { \ + ASSERT_L((pBlock)->pPrev, (pBlock)); \ + ASSERT_GE((pBlock)->pPrev, (pHeapInt) + 1); \ + } \ + else \ + Assert((pBlock) == (PRTHEAPSIMPLEBLOCK)((pHeapInt) + 1)); \ + } while (0) + +#define ASSERT_NEXT(pHeap, pBlock) \ + do { ASSERT_ALIGN((pBlock)->pNext); \ + if ((pBlock)->pNext) \ + { \ + ASSERT_L((pBlock)->pNext, (pHeapInt)->pvEnd); \ + ASSERT_G((pBlock)->pNext, (pBlock)); \ + } \ + } while (0) + +#define ASSERT_BLOCK(pHeapInt, pBlock) \ + do { AssertMsg(RTHEAPSIMPLEBLOCK_IS_VALID(pBlock), ("%#x\n", (pBlock)->fFlags)); \ + AssertMsg((pBlock)->pHeap == (pHeapInt), ("%p != %p\n", (pBlock)->pHeap, (pHeapInt))); \ + ASSERT_GE((pBlock), (pHeapInt) + 1); \ + ASSERT_L((pBlock), (pHeapInt)->pvEnd); \ + ASSERT_NEXT(pHeapInt, pBlock); \ + ASSERT_PREV(pHeapInt, pBlock); \ + } while (0) + +#define ASSERT_BLOCK_USED(pHeapInt, pBlock) \ + do { AssertMsg(RTHEAPSIMPLEBLOCK_IS_VALID_USED((pBlock)), ("%#x\n", (pBlock)->fFlags)); \ + AssertMsg((pBlock)->pHeap == (pHeapInt), ("%p != %p\n", (pBlock)->pHeap, (pHeapInt))); \ + ASSERT_GE((pBlock), (pHeapInt) + 1); \ + ASSERT_L((pBlock), (pHeapInt)->pvEnd); \ + ASSERT_NEXT(pHeapInt, pBlock); \ + ASSERT_PREV(pHeapInt, pBlock); \ + } while (0) + +#define ASSERT_FREE_PREV(pHeapInt, pBlock) \ + do { ASSERT_ALIGN((pBlock)->pPrev); \ + if ((pBlock)->pPrev) \ + { \ + ASSERT_GE((pBlock)->pPrev, (pHeapInt)->pFreeHead); \ + ASSERT_L((pBlock)->pPrev, (pBlock)); \ + ASSERT_LE((pBlock)->pPrev, (pBlock)->Core.pPrev); \ + } \ + else \ + Assert((pBlock) == (pHeapInt)->pFreeHead); \ + } while (0) + +#define ASSERT_FREE_NEXT(pHeapInt, pBlock) \ + do { ASSERT_ALIGN((pBlock)->pNext); \ + if ((pBlock)->pNext) \ + { \ + ASSERT_LE((pBlock)->pNext, (pHeapInt)->pFreeTail); \ + ASSERT_G((pBlock)->pNext, (pBlock)); \ + ASSERT_GE((pBlock)->pNext, (pBlock)->Core.pNext); \ + } \ + else \ + Assert((pBlock) == (pHeapInt)->pFreeTail); \ + } while (0) + +#ifdef RTHEAPSIMPLE_STRICT +# define ASSERT_FREE_CB(pHeapInt, pBlock) \ + do { size_t cbCalc = ((pBlock)->Core.pNext ? (uintptr_t)(pBlock)->Core.pNext : (uintptr_t)(pHeapInt)->pvEnd) \ + - (uintptr_t)(pBlock) - sizeof(RTHEAPSIMPLEBLOCK); \ + AssertMsg((pBlock)->cb == cbCalc, ("cb=%#zx cbCalc=%#zx\n", (pBlock)->cb, cbCalc)); \ + } while (0) +#else +# define ASSERT_FREE_CB(pHeapInt, pBlock) do {} while (0) +#endif + +/** Asserts that a free block is valid. */ +#define ASSERT_BLOCK_FREE(pHeapInt, pBlock) \ + do { ASSERT_BLOCK(pHeapInt, &(pBlock)->Core); \ + Assert(RTHEAPSIMPLEBLOCK_IS_VALID_FREE(&(pBlock)->Core)); \ + ASSERT_GE((pBlock), (pHeapInt)->pFreeHead); \ + ASSERT_LE((pBlock), (pHeapInt)->pFreeTail); \ + ASSERT_FREE_NEXT(pHeapInt, pBlock); \ + ASSERT_FREE_PREV(pHeapInt, pBlock); \ + ASSERT_FREE_CB(pHeapInt, pBlock); \ + } while (0) + +/** Asserts that the heap anchor block is ok. */ +#define ASSERT_ANCHOR(pHeapInt) \ + do { AssertPtr(pHeapInt);\ + Assert((pHeapInt)->uMagic == RTHEAPSIMPLE_MAGIC); \ + } while (0) + + +/******************************************************************************* +* Internal Functions * +*******************************************************************************/ +#ifdef RTHEAPSIMPLE_STRICT +static void rtHeapSimpleAssertAll(PRTHEAPSIMPLEINTERNAL pHeapInt); +#endif +static PRTHEAPSIMPLEBLOCK rtHeapSimpleAllocBlock(PRTHEAPSIMPLEINTERNAL pHeapInt, size_t cb, size_t uAlignment); +static void rtHeapSimpleFreeBlock(PRTHEAPSIMPLEINTERNAL pHeapInt, PRTHEAPSIMPLEBLOCK pBlock); + + +RTDECL(int) RTHeapSimpleInit(PRTHEAPSIMPLE phHeap, void *pvMemory, size_t cbMemory) +{ + PRTHEAPSIMPLEINTERNAL pHeapInt; + PRTHEAPSIMPLEFREE pFree; + unsigned i; + + /* + * Validate input. The imposed minimum heap size is just a convenient value. + */ + AssertReturn(cbMemory >= PAGE_SIZE, VERR_INVALID_PARAMETER); + AssertPtrReturn(pvMemory, VERR_INVALID_POINTER); + AssertReturn((uintptr_t)pvMemory + (cbMemory - 1) > (uintptr_t)cbMemory, VERR_INVALID_PARAMETER); + + /* + * Place the heap anchor block at the start of the heap memory, + * enforce 32 byte alignment of it. Also align the heap size correctly. + */ + pHeapInt = (PRTHEAPSIMPLEINTERNAL)pvMemory; + if ((uintptr_t)pvMemory & 31) + { + const uintptr_t off = 32 - ((uintptr_t)pvMemory & 31); + cbMemory -= off; + pHeapInt = (PRTHEAPSIMPLEINTERNAL)((uintptr_t)pvMemory + off); + } + cbMemory &= ~(RTHEAPSIMPLE_ALIGNMENT - 1); + + + /* Init the heap anchor block. */ + pHeapInt->uMagic = RTHEAPSIMPLE_MAGIC; + pHeapInt->pvEnd = (uint8_t *)pHeapInt + cbMemory; + pHeapInt->cbHeap = cbMemory; + pHeapInt->cbFree = cbMemory + - sizeof(RTHEAPSIMPLEBLOCK) + - sizeof(RTHEAPSIMPLEINTERNAL); + pHeapInt->pFreeTail = pHeapInt->pFreeHead = (PRTHEAPSIMPLEFREE)(pHeapInt + 1); + for (i = 0; i < RT_ELEMENTS(pHeapInt->auAlignment); i++) + pHeapInt->auAlignment[i] = ~(size_t)0; + + /* Init the single free block. */ + pFree = pHeapInt->pFreeHead; + pFree->Core.pNext = NULL; + pFree->Core.pPrev = NULL; + pFree->Core.pHeap = pHeapInt; + pFree->Core.fFlags = RTHEAPSIMPLEBLOCK_FLAGS_MAGIC | RTHEAPSIMPLEBLOCK_FLAGS_FREE; + pFree->pNext = NULL; + pFree->pPrev = NULL; + pFree->cb = pHeapInt->cbFree; + + *phHeap = pHeapInt; + +#ifdef RTHEAPSIMPLE_STRICT + rtHeapSimpleAssertAll(pHeapInt); +#endif + return VINF_SUCCESS; +} +RT_EXPORT_SYMBOL(RTHeapSimpleInit); + + +RTDECL(int) RTHeapSimpleRelocate(RTHEAPSIMPLE hHeap, uintptr_t offDelta) +{ + PRTHEAPSIMPLEINTERNAL pHeapInt = hHeap; + PRTHEAPSIMPLEFREE pCur; + + /* + * Validate input. + */ + AssertPtrReturn(pHeapInt, VERR_INVALID_HANDLE); + AssertReturn(pHeapInt->uMagic == RTHEAPSIMPLE_MAGIC, VERR_INVALID_HANDLE); + AssertMsgReturn((uintptr_t)pHeapInt - (uintptr_t)pHeapInt->pvEnd + pHeapInt->cbHeap == offDelta, + ("offDelta=%p, expected=%p\n", offDelta, (uintptr_t)pHeapInt->pvEnd - pHeapInt->cbHeap - (uintptr_t)pHeapInt), + VERR_INVALID_PARAMETER); + + /* + * Relocate the heap anchor block. + */ +#define RELOCATE_IT(var, type, offDelta) do { if (RT_UNLIKELY((var) != NULL)) { (var) = (type)((uintptr_t)(var) + offDelta); } } while (0) + RELOCATE_IT(pHeapInt->pvEnd, void *, offDelta); + RELOCATE_IT(pHeapInt->pFreeHead, PRTHEAPSIMPLEFREE, offDelta); + RELOCATE_IT(pHeapInt->pFreeTail, PRTHEAPSIMPLEFREE, offDelta); + + /* + * Walk the heap blocks. + */ + for (pCur = (PRTHEAPSIMPLEFREE)(pHeapInt + 1); + pCur && (uintptr_t)pCur < (uintptr_t)pHeapInt->pvEnd; + pCur = (PRTHEAPSIMPLEFREE)pCur->Core.pNext) + { + RELOCATE_IT(pCur->Core.pNext, PRTHEAPSIMPLEBLOCK, offDelta); + RELOCATE_IT(pCur->Core.pPrev, PRTHEAPSIMPLEBLOCK, offDelta); + RELOCATE_IT(pCur->Core.pHeap, PRTHEAPSIMPLEINTERNAL, offDelta); + if (RTHEAPSIMPLEBLOCK_IS_FREE(&pCur->Core)) + { + RELOCATE_IT(pCur->pNext, PRTHEAPSIMPLEFREE, offDelta); + RELOCATE_IT(pCur->pPrev, PRTHEAPSIMPLEFREE, offDelta); + } + } +#undef RELOCATE_IT + +#ifdef RTHEAPSIMPLE_STRICT + /* + * Give it a once over before we return. + */ + rtHeapSimpleAssertAll(pHeapInt); +#endif + return VINF_SUCCESS; +} +RT_EXPORT_SYMBOL(RTHeapSimpleRelocate); + + +RTDECL(void *) RTHeapSimpleAlloc(RTHEAPSIMPLE hHeap, size_t cb, size_t cbAlignment) +{ + PRTHEAPSIMPLEINTERNAL pHeapInt = hHeap; + PRTHEAPSIMPLEBLOCK pBlock; + + /* + * Validate and adjust the input. + */ + AssertPtrReturn(pHeapInt, NULL); + if (cb < RTHEAPSIMPLE_MIN_BLOCK) + cb = RTHEAPSIMPLE_MIN_BLOCK; + else + cb = RT_ALIGN_Z(cb, RTHEAPSIMPLE_ALIGNMENT); + if (!cbAlignment) + cbAlignment = RTHEAPSIMPLE_ALIGNMENT; + else + { + Assert(!(cbAlignment & (cbAlignment - 1))); + Assert((cbAlignment & ~(cbAlignment - 1)) == cbAlignment); + if (cbAlignment < RTHEAPSIMPLE_ALIGNMENT) + cbAlignment = RTHEAPSIMPLE_ALIGNMENT; + } + + /* + * Do the allocation. + */ + pBlock = rtHeapSimpleAllocBlock(pHeapInt, cb, cbAlignment); + if (RT_LIKELY(pBlock)) + { + void *pv = pBlock + 1; + return pv; + } + return NULL; +} +RT_EXPORT_SYMBOL(RTHeapSimpleAlloc); + + +RTDECL(void *) RTHeapSimpleAllocZ(RTHEAPSIMPLE hHeap, size_t cb, size_t cbAlignment) +{ + PRTHEAPSIMPLEINTERNAL pHeapInt = hHeap; + PRTHEAPSIMPLEBLOCK pBlock; + + /* + * Validate and adjust the input. + */ + AssertPtrReturn(pHeapInt, NULL); + if (cb < RTHEAPSIMPLE_MIN_BLOCK) + cb = RTHEAPSIMPLE_MIN_BLOCK; + else + cb = RT_ALIGN_Z(cb, RTHEAPSIMPLE_ALIGNMENT); + if (!cbAlignment) + cbAlignment = RTHEAPSIMPLE_ALIGNMENT; + else + { + Assert(!(cbAlignment & (cbAlignment - 1))); + Assert((cbAlignment & ~(cbAlignment - 1)) == cbAlignment); + if (cbAlignment < RTHEAPSIMPLE_ALIGNMENT) + cbAlignment = RTHEAPSIMPLE_ALIGNMENT; + } + + /* + * Do the allocation. + */ + pBlock = rtHeapSimpleAllocBlock(pHeapInt, cb, cbAlignment); + if (RT_LIKELY(pBlock)) + { + void *pv = pBlock + 1; + memset(pv, 0, cb); + return pv; + } + return NULL; +} +RT_EXPORT_SYMBOL(RTHeapSimpleAllocZ); + + +/** + * Allocates a block of memory from the specified heap. + * + * No parameter validation or adjustment is performed. + * + * @returns Pointer to the allocated block. + * @returns NULL on failure. + * + * @param pHeapInt The heap. + * @param cb Size of the memory block to allocate. + * @param uAlignment The alignment specifications for the allocated block. + */ +static PRTHEAPSIMPLEBLOCK rtHeapSimpleAllocBlock(PRTHEAPSIMPLEINTERNAL pHeapInt, size_t cb, size_t uAlignment) +{ + PRTHEAPSIMPLEBLOCK pRet = NULL; + PRTHEAPSIMPLEFREE pFree; + +#ifdef RTHEAPSIMPLE_STRICT + rtHeapSimpleAssertAll(pHeapInt); +#endif + + /* + * Search for a fitting block from the lower end of the heap. + */ + for (pFree = pHeapInt->pFreeHead; + pFree; + pFree = pFree->pNext) + { + uintptr_t offAlign; + ASSERT_BLOCK_FREE(pHeapInt, pFree); + + /* + * Match for size and alignment. + */ + if (pFree->cb < cb) + continue; + offAlign = (uintptr_t)(&pFree->Core + 1) & (uAlignment - 1); + if (offAlign) + { + RTHEAPSIMPLEFREE Free; + PRTHEAPSIMPLEBLOCK pPrev; + + offAlign = uAlignment - offAlign; + if (pFree->cb - offAlign < cb) + continue; + + /* + * Make a stack copy of the free block header and adjust the pointer. + */ + Free = *pFree; + pFree = (PRTHEAPSIMPLEFREE)((uintptr_t)pFree + offAlign); + + /* + * Donate offAlign bytes to the node in front of us. + * If we're the head node, we'll have to create a fake node. We'll + * mark it USED for simplicity. + * + * (Should this policy of donating memory to the guy in front of us + * cause big 'leaks', we could create a new free node if there is room + * for that.) + */ + pPrev = Free.Core.pPrev; + if (pPrev) + { + AssertMsg(!RTHEAPSIMPLEBLOCK_IS_FREE(pPrev), ("Impossible!\n")); + pPrev->pNext = &pFree->Core; + } + else + { + pPrev = (PRTHEAPSIMPLEBLOCK)(pHeapInt + 1); + Assert(pPrev == &pFree->Core); + pPrev->pPrev = NULL; + pPrev->pNext = &pFree->Core; + pPrev->pHeap = pHeapInt; + pPrev->fFlags = RTHEAPSIMPLEBLOCK_FLAGS_MAGIC; + } + pHeapInt->cbFree -= offAlign; + + /* + * Recreate pFree in the new position and adjust the neighbors. + */ + *pFree = Free; + + /* the core */ + if (pFree->Core.pNext) + pFree->Core.pNext->pPrev = &pFree->Core; + pFree->Core.pPrev = pPrev; + + /* the free part */ + pFree->cb -= offAlign; + if (pFree->pNext) + pFree->pNext->pPrev = pFree; + else + pHeapInt->pFreeTail = pFree; + if (pFree->pPrev) + pFree->pPrev->pNext = pFree; + else + pHeapInt->pFreeHead = pFree; + ASSERT_BLOCK_FREE(pHeapInt, pFree); + ASSERT_BLOCK_USED(pHeapInt, pPrev); + } + + /* + * Split off a new FREE block? + */ + if (pFree->cb >= cb + RT_ALIGN_Z(sizeof(RTHEAPSIMPLEFREE), RTHEAPSIMPLE_ALIGNMENT)) + { + /* + * Move the FREE block up to make room for the new USED block. + */ + PRTHEAPSIMPLEFREE pNew = (PRTHEAPSIMPLEFREE)((uintptr_t)&pFree->Core + cb + sizeof(RTHEAPSIMPLEBLOCK)); + + pNew->Core.pNext = pFree->Core.pNext; + if (pFree->Core.pNext) + pFree->Core.pNext->pPrev = &pNew->Core; + pNew->Core.pPrev = &pFree->Core; + pNew->Core.pHeap = pHeapInt; + pNew->Core.fFlags = RTHEAPSIMPLEBLOCK_FLAGS_MAGIC | RTHEAPSIMPLEBLOCK_FLAGS_FREE; + + pNew->pNext = pFree->pNext; + if (pNew->pNext) + pNew->pNext->pPrev = pNew; + else + pHeapInt->pFreeTail = pNew; + pNew->pPrev = pFree->pPrev; + if (pNew->pPrev) + pNew->pPrev->pNext = pNew; + else + pHeapInt->pFreeHead = pNew; + pNew->cb = (pNew->Core.pNext ? (uintptr_t)pNew->Core.pNext : (uintptr_t)pHeapInt->pvEnd) \ + - (uintptr_t)pNew - sizeof(RTHEAPSIMPLEBLOCK); + ASSERT_BLOCK_FREE(pHeapInt, pNew); + + /* + * Update the old FREE node making it a USED node. + */ + pFree->Core.fFlags &= ~RTHEAPSIMPLEBLOCK_FLAGS_FREE; + pFree->Core.pNext = &pNew->Core; + pHeapInt->cbFree -= pFree->cb; + pHeapInt->cbFree += pNew->cb; + pRet = &pFree->Core; + ASSERT_BLOCK_USED(pHeapInt, pRet); + } + else + { + /* + * Link it out of the free list. + */ + if (pFree->pNext) + pFree->pNext->pPrev = pFree->pPrev; + else + pHeapInt->pFreeTail = pFree->pPrev; + if (pFree->pPrev) + pFree->pPrev->pNext = pFree->pNext; + else + pHeapInt->pFreeHead = pFree->pNext; + + /* + * Convert it to a used block. + */ + pHeapInt->cbFree -= pFree->cb; + pFree->Core.fFlags &= ~RTHEAPSIMPLEBLOCK_FLAGS_FREE; + pRet = &pFree->Core; + ASSERT_BLOCK_USED(pHeapInt, pRet); + } + break; + } + +#ifdef RTHEAPSIMPLE_STRICT + rtHeapSimpleAssertAll(pHeapInt); +#endif + return pRet; +} + + +RTDECL(void) RTHeapSimpleFree(RTHEAPSIMPLE hHeap, void *pv) +{ + PRTHEAPSIMPLEINTERNAL pHeapInt; + PRTHEAPSIMPLEBLOCK pBlock; + + /* + * Validate input. + */ + if (!pv) + return; + AssertPtr(pv); + Assert(RT_ALIGN_P(pv, RTHEAPSIMPLE_ALIGNMENT) == pv); + + /* + * Get the block and heap. If in strict mode, validate these. + */ + pBlock = (PRTHEAPSIMPLEBLOCK)pv - 1; + pHeapInt = pBlock->pHeap; + ASSERT_BLOCK_USED(pHeapInt, pBlock); + ASSERT_ANCHOR(pHeapInt); + Assert(pHeapInt == (PRTHEAPSIMPLEINTERNAL)hHeap || !hHeap); + +#ifdef RTHEAPSIMPLE_FREE_POISON + /* + * Poison the block. + */ + const size_t cbBlock = (pBlock->pNext ? (uintptr_t)pBlock->pNext : (uintptr_t)pHeapInt->pvEnd) + - (uintptr_t)pBlock - sizeof(RTHEAPSIMPLEBLOCK); + memset(pBlock + 1, RTHEAPSIMPLE_FREE_POISON, cbBlock); +#endif + + /* + * Call worker which does the actual job. + */ + rtHeapSimpleFreeBlock(pHeapInt, pBlock); +} +RT_EXPORT_SYMBOL(RTHeapSimpleFree); + + +/** + * Free a memory block. + * + * @param pHeapInt The heap. + * @param pBlock The memory block to free. + */ +static void rtHeapSimpleFreeBlock(PRTHEAPSIMPLEINTERNAL pHeapInt, PRTHEAPSIMPLEBLOCK pBlock) +{ + PRTHEAPSIMPLEFREE pFree = (PRTHEAPSIMPLEFREE)pBlock; + PRTHEAPSIMPLEFREE pLeft; + PRTHEAPSIMPLEFREE pRight; + +#ifdef RTHEAPSIMPLE_STRICT + rtHeapSimpleAssertAll(pHeapInt); +#endif + + /* + * Look for the closest free list blocks by walking the blocks right + * of us (both lists are sorted by address). + */ + pLeft = NULL; + pRight = NULL; + if (pHeapInt->pFreeTail) + { + pRight = (PRTHEAPSIMPLEFREE)pFree->Core.pNext; + while (pRight && !RTHEAPSIMPLEBLOCK_IS_FREE(&pRight->Core)) + { + ASSERT_BLOCK(pHeapInt, &pRight->Core); + pRight = (PRTHEAPSIMPLEFREE)pRight->Core.pNext; + } + if (!pRight) + pLeft = pHeapInt->pFreeTail; + else + { + ASSERT_BLOCK_FREE(pHeapInt, pRight); + pLeft = pRight->pPrev; + } + if (pLeft) + ASSERT_BLOCK_FREE(pHeapInt, pLeft); + } + AssertMsgReturnVoid(pLeft != pFree, ("Freed twice! pv=%p (pBlock=%p)\n", pBlock + 1, pBlock)); + ASSERT_L(pLeft, pFree); + Assert(!pRight || (uintptr_t)pRight > (uintptr_t)pFree); + Assert(!pLeft || pLeft->pNext == pRight); + + /* + * Insert at the head of the free block list? + */ + if (!pLeft) + { + Assert(pRight == pHeapInt->pFreeHead); + pFree->Core.fFlags |= RTHEAPSIMPLEBLOCK_FLAGS_FREE; + pFree->pPrev = NULL; + pFree->pNext = pRight; + if (pRight) + pRight->pPrev = pFree; + else + pHeapInt->pFreeTail = pFree; + pHeapInt->pFreeHead = pFree; + } + else + { + /* + * Can we merge with left hand free block? + */ + if (pLeft->Core.pNext == &pFree->Core) + { + pLeft->Core.pNext = pFree->Core.pNext; + if (pFree->Core.pNext) + pFree->Core.pNext->pPrev = &pLeft->Core; + pHeapInt->cbFree -= pLeft->cb; + pFree = pLeft; + } + /* + * No, just link it into the free list then. + */ + else + { + pFree->Core.fFlags |= RTHEAPSIMPLEBLOCK_FLAGS_FREE; + pFree->pNext = pRight; + pFree->pPrev = pLeft; + pLeft->pNext = pFree; + if (pRight) + pRight->pPrev = pFree; + else + pHeapInt->pFreeTail = pFree; + } + } + + /* + * Can we merge with right hand free block? + */ + if ( pRight + && pRight->Core.pPrev == &pFree->Core) + { + /* core */ + pFree->Core.pNext = pRight->Core.pNext; + if (pRight->Core.pNext) + pRight->Core.pNext->pPrev = &pFree->Core; + + /* free */ + pFree->pNext = pRight->pNext; + if (pRight->pNext) + pRight->pNext->pPrev = pFree; + else + pHeapInt->pFreeTail = pFree; + pHeapInt->cbFree -= pRight->cb; + } + + /* + * Calculate the size and update free stats. + */ + pFree->cb = (pFree->Core.pNext ? (uintptr_t)pFree->Core.pNext : (uintptr_t)pHeapInt->pvEnd) + - (uintptr_t)pFree - sizeof(RTHEAPSIMPLEBLOCK); + pHeapInt->cbFree += pFree->cb; + ASSERT_BLOCK_FREE(pHeapInt, pFree); + +#ifdef RTHEAPSIMPLE_STRICT + rtHeapSimpleAssertAll(pHeapInt); +#endif +} + + +#ifdef RTHEAPSIMPLE_STRICT +/** + * Internal consistency check (relying on assertions). + * @param pHeapInt + */ +static void rtHeapSimpleAssertAll(PRTHEAPSIMPLEINTERNAL pHeapInt) +{ + PRTHEAPSIMPLEFREE pPrev = NULL; + PRTHEAPSIMPLEFREE pPrevFree = NULL; + PRTHEAPSIMPLEFREE pBlock; + for (pBlock = (PRTHEAPSIMPLEFREE)(pHeapInt + 1); + pBlock; + pBlock = (PRTHEAPSIMPLEFREE)pBlock->Core.pNext) + { + if (RTHEAPSIMPLEBLOCK_IS_FREE(&pBlock->Core)) + { + ASSERT_BLOCK_FREE(pHeapInt, pBlock); + Assert(pBlock->pPrev == pPrevFree); + Assert(pPrevFree || pHeapInt->pFreeHead == pBlock); + pPrevFree = pBlock; + } + else + ASSERT_BLOCK_USED(pHeapInt, &pBlock->Core); + Assert(!pPrev || pPrev == (PRTHEAPSIMPLEFREE)pBlock->Core.pPrev); + pPrev = pBlock; + } + Assert(pHeapInt->pFreeTail == pPrevFree); +} +#endif + + +RTDECL(size_t) RTHeapSimpleSize(RTHEAPSIMPLE hHeap, void *pv) +{ + PRTHEAPSIMPLEINTERNAL pHeapInt; + PRTHEAPSIMPLEBLOCK pBlock; + size_t cbBlock; + + /* + * Validate input. + */ + if (!pv) + return 0; + AssertPtrReturn(pv, 0); + AssertReturn(RT_ALIGN_P(pv, RTHEAPSIMPLE_ALIGNMENT) == pv, 0); + + /* + * Get the block and heap. If in strict mode, validate these. + */ + pBlock = (PRTHEAPSIMPLEBLOCK)pv - 1; + pHeapInt = pBlock->pHeap; + ASSERT_BLOCK_USED(pHeapInt, pBlock); + ASSERT_ANCHOR(pHeapInt); + Assert(pHeapInt == (PRTHEAPSIMPLEINTERNAL)hHeap || !hHeap); + + /* + * Calculate the block size. + */ + cbBlock = (pBlock->pNext ? (uintptr_t)pBlock->pNext : (uintptr_t)pHeapInt->pvEnd) + - (uintptr_t)pBlock- sizeof(RTHEAPSIMPLEBLOCK); + return cbBlock; +} +RT_EXPORT_SYMBOL(RTHeapSimpleSize); + + +RTDECL(size_t) RTHeapSimpleGetHeapSize(RTHEAPSIMPLE hHeap) +{ + PRTHEAPSIMPLEINTERNAL pHeapInt; + + if (hHeap == NIL_RTHEAPSIMPLE) + return 0; + + pHeapInt = hHeap; + AssertPtrReturn(pHeapInt, 0); + ASSERT_ANCHOR(pHeapInt); + return pHeapInt->cbHeap; +} +RT_EXPORT_SYMBOL(RTHeapSimpleGetHeapSize); + + +RTDECL(size_t) RTHeapSimpleGetFreeSize(RTHEAPSIMPLE hHeap) +{ + PRTHEAPSIMPLEINTERNAL pHeapInt; + + if (hHeap == NIL_RTHEAPSIMPLE) + return 0; + + pHeapInt = hHeap; + AssertPtrReturn(pHeapInt, 0); + ASSERT_ANCHOR(pHeapInt); + return pHeapInt->cbFree; +} +RT_EXPORT_SYMBOL(RTHeapSimpleGetFreeSize); + + +RTDECL(void) RTHeapSimpleDump(RTHEAPSIMPLE hHeap, PFNRTHEAPSIMPLEPRINTF pfnPrintf) +{ + PRTHEAPSIMPLEINTERNAL pHeapInt = (PRTHEAPSIMPLEINTERNAL)hHeap; + PRTHEAPSIMPLEFREE pBlock; + + pfnPrintf("**** Dumping Heap %p - cbHeap=%zx cbFree=%zx ****\n", + hHeap, pHeapInt->cbHeap, pHeapInt->cbFree); + + for (pBlock = (PRTHEAPSIMPLEFREE)(pHeapInt + 1); + pBlock; + pBlock = (PRTHEAPSIMPLEFREE)pBlock->Core.pNext) + { + size_t cb = (pBlock->pNext ? (uintptr_t)pBlock->Core.pNext : (uintptr_t)pHeapInt->pvEnd) + - (uintptr_t)pBlock - sizeof(RTHEAPSIMPLEBLOCK); + if (RTHEAPSIMPLEBLOCK_IS_FREE(&pBlock->Core)) + pfnPrintf("%p %06x FREE pNext=%p pPrev=%p fFlags=%#x cb=%#06x : cb=%#06x pNext=%p pPrev=%p\n", + pBlock, (uintptr_t)pBlock - (uintptr_t)(pHeapInt + 1), pBlock->Core.pNext, pBlock->Core.pPrev, pBlock->Core.fFlags, cb, + pBlock->cb, pBlock->pNext, pBlock->pPrev); + else + pfnPrintf("%p %06x USED pNext=%p pPrev=%p fFlags=%#x cb=%#06x\n", + pBlock, (uintptr_t)pBlock - (uintptr_t)(pHeapInt + 1), pBlock->Core.pNext, pBlock->Core.pPrev, pBlock->Core.fFlags, cb); + } + pfnPrintf("**** Done dumping Heap %p ****\n", hHeap); +} +RT_EXPORT_SYMBOL(RTHeapSimpleDump); + --- linux-raspi2-4.2.0.orig/ubuntu/vbox/vboxguest/common/err/RTErrConvertFromErrno.c +++ linux-raspi2-4.2.0/ubuntu/vbox/vboxguest/common/err/RTErrConvertFromErrno.c @@ -0,0 +1,452 @@ +/* $Id: RTErrConvertFromErrno.cpp $ */ +/** @file + * IPRT - Convert errno to iprt status codes. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + + +/******************************************************************************* +* Header Files * +*******************************************************************************/ +#include +#include "internal/iprt.h" + +#include +#include + + +RTDECL(int) RTErrConvertFromErrno(unsigned uNativeCode) +{ + /* very fast check for no error. */ + if (uNativeCode == 0) + return VINF_SUCCESS; + + /* + * Process error codes. + * + * (Use a switch and not a table since the numbers vary among compilers + * and OSes. So we let the compiler switch optimizer handle speed issues.) + * + * This switch is arranged like the Linux i386 errno.h! This switch is mirrored + * by RTErrConvertToErrno. + */ + switch (uNativeCode) + { /* Linux number */ +#ifdef EPERM + case EPERM: return VERR_ACCESS_DENIED; /* 1 */ +#endif +#ifdef ENOENT + case ENOENT: return VERR_FILE_NOT_FOUND; +#endif +#ifdef ESRCH + case ESRCH: return VERR_PROCESS_NOT_FOUND; +#endif +#ifdef EINTR + case EINTR: return VERR_INTERRUPTED; +#endif +#ifdef EIO + case EIO: return VERR_DEV_IO_ERROR; +#endif +#ifdef ENXIO + case ENXIO: return VERR_DEV_IO_ERROR; /**@todo fix this duplicate error */ +#endif +#ifdef E2BIG + case E2BIG: return VERR_TOO_MUCH_DATA; +#endif +#ifdef ENOEXEC + case ENOEXEC: return VERR_BAD_EXE_FORMAT; +#endif +#ifdef EBADF + case EBADF: return VERR_INVALID_HANDLE; +#endif +#ifdef ECHILD + case ECHILD: return VERR_PROCESS_NOT_FOUND; /* 10 */ /**@todo fix duplicate error */ +#endif +#ifdef EAGAIN + case EAGAIN: return VERR_TRY_AGAIN; +#endif +#ifdef ENOMEM + case ENOMEM: return VERR_NO_MEMORY; +#endif +#ifdef EACCES + case EACCES: return VERR_ACCESS_DENIED; /**@todo fix duplicate error */ +#endif +#ifdef EFAULT + case EFAULT: return VERR_INVALID_POINTER; +#endif +#ifdef ENOTBLK + //case ENOTBLK: return VERR_; +#endif +#ifdef EBUSY + case EBUSY: return VERR_RESOURCE_BUSY; +#endif +#ifdef EEXIST + case EEXIST: return VERR_ALREADY_EXISTS; +#endif +#ifdef EXDEV + case EXDEV: return VERR_NOT_SAME_DEVICE; +#endif +#ifdef ENODEV + case ENODEV: return VERR_NOT_SUPPORTED; /**@todo fix duplicate error */ +#endif +#ifdef ENOTDIR + case ENOTDIR: return VERR_PATH_NOT_FOUND; /* 20 */ +#endif +#ifdef EISDIR + case EISDIR: return VERR_IS_A_DIRECTORY; +#endif +#ifdef EINVAL + case EINVAL: return VERR_INVALID_PARAMETER; +#endif +#ifdef ENFILE + case ENFILE: return VERR_TOO_MANY_OPEN_FILES; /**@Todo fix duplicate error */ +#endif +#ifdef EMFILE + case EMFILE: return VERR_TOO_MANY_OPEN_FILES; +#endif +#ifdef ENOTTY + case ENOTTY: return VERR_INVALID_FUNCTION; +#endif +#ifdef ETXTBSY + case ETXTBSY: return VERR_SHARING_VIOLATION; +#endif +#ifdef EFBIG + case EFBIG: return VERR_FILE_TOO_BIG; +#endif +#ifdef ENOSPC + case ENOSPC: return VERR_DISK_FULL; +#endif +#ifdef ESPIPE + case ESPIPE: return VERR_SEEK_ON_DEVICE; +#endif +#ifdef EROFS + case EROFS: return VERR_WRITE_PROTECT; /* 30 */ +#endif +#ifdef EMLINK + //case EMLINK: +#endif +#ifdef EPIPE + case EPIPE: return VERR_BROKEN_PIPE; +#endif +#ifdef EDOM + case EDOM: return VERR_INVALID_PARAMETER; /**@todo fix duplicate error */ +#endif +#ifdef ERANGE + case ERANGE: return VERR_INVALID_PARAMETER; /**@todo fix duplicate error */ +#endif +#ifdef EDEADLK + case EDEADLK: return VERR_DEADLOCK; +#endif +#ifdef ENAMETOOLONG + case ENAMETOOLONG: return VERR_FILENAME_TOO_LONG; +#endif +#ifdef ENOLCK + case ENOLCK: return VERR_FILE_LOCK_FAILED; +#endif +#ifdef ENOSYS /** @todo map this differently on solaris. */ + case ENOSYS: return VERR_NOT_SUPPORTED; +#endif +#ifdef ENOTEMPTY + case ENOTEMPTY: return VERR_DIR_NOT_EMPTY; +#endif +#ifdef ELOOP + case ELOOP: return VERR_TOO_MANY_SYMLINKS; /* 40 */ +#endif + //41?? +#ifdef ENOMSG + //case ENOMSG 42 /* No message of desired type */ +#endif +#ifdef EIDRM + //case EIDRM 43 /* Identifier removed */ +#endif +#ifdef ECHRNG + //case ECHRNG 44 /* Channel number out of range */ +#endif +#ifdef EL2NSYNC + //case EL2NSYNC 45 /* Level 2 not synchronized */ +#endif +#ifdef EL3HLT + //case EL3HLT 46 /* Level 3 halted */ +#endif +#ifdef EL3RST + //case EL3RST 47 /* Level 3 reset */ +#endif +#ifdef ELNRNG + //case ELNRNG 48 /* Link number out of range */ +#endif +#ifdef EUNATCH + //case EUNATCH 49 /* Protocol driver not attached */ +#endif +#ifdef ENOCSI + //case ENOCSI 50 /* No CSI structure available */ +#endif +#ifdef EL2HLT + //case EL2HLT 51 /* Level 2 halted */ +#endif +#ifdef EBADE + //case EBADE 52 /* Invalid exchange */ +#endif +#ifdef EBADR + //case EBADR 53 /* Invalid request descriptor */ +#endif +#ifdef EXFULL + //case EXFULL 54 /* Exchange full */ +#endif +#ifdef ENOANO + //case ENOANO 55 /* No anode */ +#endif +#ifdef EBADRQC + //case EBADRQC 56 /* Invalid request code */ +#endif +#ifdef EBADSLT + //case EBADSLT 57 /* Invalid slot */ +#endif + //case 58: +#ifdef EBFONT + //case EBFONT 59 /* Bad font file format */ +#endif +#ifdef ENOSTR + //case ENOSTR 60 /* Device not a stream */ +#endif +#ifdef ENODATA + case ENODATA: return VERR_NO_DATA; +#endif +#ifdef ETIME + //case ETIME 62 /* Timer expired */ +#endif +#ifdef ENOSR + //case ENOSR 63 /* Out of streams resources */ +#endif +#ifdef ENONET + case ENONET: return VERR_NET_NO_NETWORK; +#endif +#ifdef ENOPKG + //case ENOPKG 65 /* Package not installed */ +#endif +#ifdef EREMOTE + //case EREMOTE 66 /* Object is remote */ +#endif +#ifdef ENOLINK + //case ENOLINK 67 /* Link has been severed */ +#endif +#ifdef EADV + //case EADV 68 /* Advertise error */ +#endif +#ifdef ESRMNT + //case ESRMNT 69 /* Srmount error */ +#endif +#ifdef ECOMM + //case ECOMM 70 /* Communication error on send */ +#endif +#ifdef EPROTO + case EPROTO: return VERR_NET_PROTOCOL_ERROR; +#endif +#ifdef EMULTIHOP + //case EMULTIHOP 72 /* Multihop attempted */ +#endif +#ifdef EDOTDOT + //case EDOTDOT 73 /* RFS specific error */ +#endif +#ifdef EBADMSG + //case EBADMSG 74 /* Not a data message */ +#endif +#ifdef EOVERFLOW + case EOVERFLOW: return VERR_TOO_MUCH_DATA; /**@todo fix duplicate error */ +#endif +#ifdef ENOTUNIQ + case ENOTUNIQ: return VERR_NET_NOT_UNIQUE_NAME; +#endif +#ifdef EBADFD + case EBADFD: return VERR_INVALID_HANDLE; /**@todo fix duplicate error? */ +#endif +#ifdef EREMCHG + //case EREMCHG 78 /* Remote address changed */ +#endif +#ifdef ELIBACC + //case ELIBACC 79 /* Can not access a needed shared library */ +#endif +#ifdef ELIBBAD + //case ELIBBAD 80 /* Accessing a corrupted shared library */ +#endif +#ifdef ELIBSCN + //case ELIBSCN 81 /* .lib section in a.out corrupted */ +#endif +#ifdef ELIBMAX + //case ELIBMAX 82 /* Attempting to link in too many shared libraries */ +#endif +#ifdef ELIBEXEC + //case ELIBEXEC 83 /* Cannot exec a shared library directly */ +#endif +#ifdef EILSEQ + case EILSEQ: return VERR_NO_TRANSLATION; +#endif +#ifdef ERESTART + case ERESTART: return VERR_INTERRUPTED;/**@todo fix duplicate error?*/ +#endif +#ifdef ESTRPIPE + //case ESTRPIPE 86 /* Streams pipe error */ +#endif +#ifdef EUSERS + //case EUSERS 87 /* Too many users */ +#endif +#ifdef ENOTSOCK + case ENOTSOCK: return VERR_NET_NOT_SOCKET; +#endif +#ifdef EDESTADDRREQ + case EDESTADDRREQ: return VERR_NET_DEST_ADDRESS_REQUIRED; +#endif +#ifdef EMSGSIZE + case EMSGSIZE: return VERR_NET_MSG_SIZE; +#endif +#ifdef EPROTOTYPE + case EPROTOTYPE: return VERR_NET_PROTOCOL_TYPE; +#endif +#ifdef ENOPROTOOPT + case ENOPROTOOPT: return VERR_NET_PROTOCOL_NOT_AVAILABLE; +#endif +#ifdef EPROTONOSUPPORT + case EPROTONOSUPPORT: return VERR_NET_PROTOCOL_NOT_SUPPORTED; +#endif +#ifdef ESOCKTNOSUPPORT + case ESOCKTNOSUPPORT: return VERR_NET_SOCKET_TYPE_NOT_SUPPORTED; +#endif +#ifdef EOPNOTSUPP /** @todo map this differently on solaris. */ + case EOPNOTSUPP: return VERR_NET_OPERATION_NOT_SUPPORTED; +#endif +#ifdef EPFNOSUPPORT + case EPFNOSUPPORT: return VERR_NET_PROTOCOL_FAMILY_NOT_SUPPORTED; +#endif +#ifdef EAFNOSUPPORT + case EAFNOSUPPORT: return VERR_NET_ADDRESS_FAMILY_NOT_SUPPORTED; +#endif +#ifdef EADDRINUSE + case EADDRINUSE: return VERR_NET_ADDRESS_IN_USE; +#endif +#ifdef EADDRNOTAVAIL + case EADDRNOTAVAIL: return VERR_NET_ADDRESS_NOT_AVAILABLE; +#endif +#ifdef ENETDOWN + case ENETDOWN: return VERR_NET_DOWN; +#endif +#ifdef ENETUNREACH + case ENETUNREACH: return VERR_NET_UNREACHABLE; +#endif +#ifdef ENETRESET + case ENETRESET: return VERR_NET_CONNECTION_RESET; +#endif +#ifdef ECONNABORTED + case ECONNABORTED: return VERR_NET_CONNECTION_ABORTED; +#endif +#ifdef ECONNRESET + case ECONNRESET: return VERR_NET_CONNECTION_RESET_BY_PEER; +#endif +#ifdef ENOBUFS + case ENOBUFS: return VERR_NET_NO_BUFFER_SPACE; +#endif +#ifdef EISCONN + case EISCONN: return VERR_NET_ALREADY_CONNECTED; +#endif +#ifdef ENOTCONN + case ENOTCONN: return VERR_NET_NOT_CONNECTED; +#endif +#ifdef ESHUTDOWN + case ESHUTDOWN: return VERR_NET_SHUTDOWN; +#endif +#ifdef ETOOMANYREFS + case ETOOMANYREFS: return VERR_NET_TOO_MANY_REFERENCES; +#endif +#ifdef ETIMEDOUT + case ETIMEDOUT: return VERR_TIMEOUT; +#endif +#ifdef ECONNREFUSED + case ECONNREFUSED: return VERR_NET_CONNECTION_REFUSED; +#endif +#ifdef EHOSTDOWN + case EHOSTDOWN: return VERR_NET_HOST_DOWN; +#endif +#ifdef EHOSTUNREACH + case EHOSTUNREACH: return VERR_NET_HOST_UNREACHABLE; +#endif +#ifdef EALREADY + case EALREADY: return VERR_NET_ALREADY_IN_PROGRESS; +#endif +#ifdef EINPROGRESS + case EINPROGRESS: return VERR_NET_IN_PROGRESS; +#endif +#ifdef ESTALE + //case ESTALE 116 /* Stale NFS file handle */ +#endif +#ifdef EUCLEAN + //case EUCLEAN 117 /* Structure needs cleaning */ +#endif +#ifdef ENOTNAM + //case ENOTNAM 118 /* Not a XENIX named type file */ +#endif +#ifdef ENAVAIL + //case ENAVAIL 119 /* No XENIX semaphores available */ +#endif +#ifdef EISNAM + //case EISNAM 120 /* Is a named type file */ +#endif +#ifdef EREMOTEIO + //case EREMOTEIO 121 /* Remote I/O error */ +#endif +#ifdef EDQUOT + case EDQUOT: return VERR_DISK_FULL; /**@todo fix duplicate error */ +#endif +#ifdef ENOMEDIUM + case ENOMEDIUM: return VERR_MEDIA_NOT_PRESENT; +#endif +#ifdef EMEDIUMTYPE + case EMEDIUMTYPE: return VERR_MEDIA_NOT_RECOGNIZED; +#endif +#if defined(EWOULDBLOCK) && (EWOULDBLOCK != EAGAIN) + case EWOULDBLOCK: return VERR_TRY_AGAIN; +#endif + + /* Non-linux */ + +#ifdef EPROCLIM + case EPROCLIM: return VERR_MAX_PROCS_REACHED; +#endif +#ifdef EDOOFUS +# if EDOOFUS != EINVAL + case EDOOFUS: return VERR_INTERNAL_ERROR; +# endif +#endif +#ifdef ENOTSUP +# ifndef EOPNOTSUPP + case ENOTSUP: return VERR_NOT_SUPPORTED; +# else +# if ENOTSUP != EOPNOTSUPP + case ENOTSUP: return VERR_NOT_SUPPORTED; +# endif +# endif +#endif + default: + AssertMsgFailed(("Unhandled error code %d\n", uNativeCode)); + return VERR_UNRESOLVED_ERROR; + } +} +RT_EXPORT_SYMBOL(RTErrConvertFromErrno); + --- linux-raspi2-4.2.0.orig/ubuntu/vbox/vboxguest/common/err/RTErrConvertToErrno.c +++ linux-raspi2-4.2.0/ubuntu/vbox/vboxguest/common/err/RTErrConvertToErrno.c @@ -0,0 +1,451 @@ +/* $Id: RTErrConvertToErrno.cpp $ */ +/** @file + * IPRT - Convert iprt status codes to errno. + */ + +/* + * Copyright (C) 2007-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + + +/******************************************************************************* +* Header Files * +*******************************************************************************/ +#include +#include "internal/iprt.h" + +#include +#include +#include + + +RTDECL(int) RTErrConvertToErrno(int iErr) +{ + /* very fast check for no error. */ + if (RT_SUCCESS(iErr)) + return 0; + + /* + * Process error codes. + * + * (Use a switch and not a table since the numbers vary among compilers + * and OSes. So we let the compiler switch optimizer handle speed issues.) + * + * This switch is arranged like the Linux i386 errno.h! It also mirrors the + * conversions performed by RTErrConvertFromErrno with a few extra case since + * there are far more IPRT status codes than Unix ones. + */ + switch (iErr) + { +#ifdef EPERM + case VERR_ACCESS_DENIED: return EPERM; +#endif +#ifdef ENOENT + case VERR_FILE_NOT_FOUND: return ENOENT; +#endif +#ifdef ESRCH + case VERR_PROCESS_NOT_FOUND: return ESRCH; +#endif +#ifdef EINTR + case VERR_INTERRUPTED: return EINTR; +#endif +#ifdef EIO + case VERR_DEV_IO_ERROR: return EIO; +#endif +#ifdef ENXIO + //case VERR_DEV_IO_ERROR: return ENXIO; +#endif +#ifdef E2BIG + case VERR_TOO_MUCH_DATA: return E2BIG; +#endif +#ifdef ENOEXEC + case VERR_BAD_EXE_FORMAT: return ENOEXEC; +#endif +#ifdef EBADF + case VERR_INVALID_HANDLE: return EBADF; +#endif +#ifdef ECHILD + //case VERR_PROCESS_NOT_FOUND: return ECHILD; +#endif +#ifdef EAGAIN + case VERR_TRY_AGAIN: return EAGAIN; +#endif +#ifdef ENOMEM + case VERR_NO_MEMORY: return ENOMEM; +#endif +#ifdef EACCES + //case VERR_ACCESS_DENIED: return EACCES; +#endif +#ifdef EFAULT + case VERR_INVALID_POINTER: return EFAULT; +#endif +#ifdef ENOTBLK + //case ENOTBLK: return VERR_; +#endif +#ifdef EBUSY + case VERR_RESOURCE_BUSY: return EBUSY; +#endif +#ifdef EEXIST + case VERR_ALREADY_EXISTS: return EEXIST; +#endif +#ifdef EXDEV + case VERR_NOT_SAME_DEVICE: return EXDEV; +#endif +#ifdef ENODEV + //case VERR_NOT_SUPPORTED: return ENODEV; +#endif +#ifdef ENOTDIR + case VERR_NOT_A_DIRECTORY: + case VERR_PATH_NOT_FOUND: return ENOTDIR; +#endif +#ifdef EISDIR + case VERR_IS_A_DIRECTORY: return EISDIR; +#endif +#ifdef EINVAL + case VERR_INVALID_PARAMETER: return EINVAL; +#endif +#ifdef ENFILE + case VERR_TOO_MANY_OPEN_FILES: return ENFILE; +#endif +#ifdef EMFILE + //case VERR_TOO_MANY_OPEN_FILES: return EMFILE; +#endif +#ifdef ENOTTY + case VERR_INVALID_FUNCTION: return ENOTTY; +#endif +#ifdef ETXTBSY + case VERR_SHARING_VIOLATION: return ETXTBSY; +#endif +#ifdef EFBIG + case VERR_FILE_TOO_BIG: return EFBIG; +#endif +#ifdef ENOSPC + case VERR_DISK_FULL: return ENOSPC; +#endif +#ifdef ESPIPE + case VERR_SEEK_ON_DEVICE: return ESPIPE; +#endif +#ifdef EROFS + case VERR_WRITE_PROTECT: return EROFS; +#endif +#ifdef EMLINK + //case EMLINK: +#endif +#ifdef EPIPE + case VERR_BROKEN_PIPE: return EPIPE; +#endif +#ifdef EDOM + //case VERR_INVALID_PARAMETER: return EDOM; +#endif +#ifdef ERANGE + //case VERR_INVALID_PARAMETER: return ERANGE; +#endif +#ifdef EDEADLK + case VERR_DEADLOCK: return EDEADLK; +#endif +#ifdef ENAMETOOLONG + case VERR_FILENAME_TOO_LONG: return ENAMETOOLONG; +#endif +#ifdef ENOLCK + case VERR_FILE_LOCK_FAILED: return ENOLCK; +#endif +#ifdef ENOSYS + case VERR_NOT_IMPLEMENTED: + case VERR_NOT_SUPPORTED: return ENOSYS; +#endif +#ifdef ENOTEMPTY + case VERR_DIR_NOT_EMPTY: return ENOTEMPTY; +#endif +#ifdef ELOOP + case VERR_TOO_MANY_SYMLINKS: return ELOOP; +#endif + //41?? +#ifdef ENOMSG + //case ENOMSG 42 /* No message of desired type */ +#endif +#ifdef EIDRM + //case EIDRM 43 /* Identifier removed */ +#endif +#ifdef ECHRNG + //case ECHRNG 44 /* Channel number out of range */ +#endif +#ifdef EL2NSYNC + //case EL2NSYNC 45 /* Level 2 not synchronized */ +#endif +#ifdef EL3HLT + //case EL3HLT 46 /* Level 3 halted */ +#endif +#ifdef EL3RST + //case EL3RST 47 /* Level 3 reset */ +#endif +#ifdef ELNRNG + //case ELNRNG 48 /* Link number out of range */ +#endif +#ifdef EUNATCH + //case EUNATCH 49 /* Protocol driver not attached */ +#endif +#ifdef ENOCSI + //case ENOCSI 50 /* No CSI structure available */ +#endif +#ifdef EL2HLT + //case EL2HLT 51 /* Level 2 halted */ +#endif +#ifdef EBADE + //case EBADE 52 /* Invalid exchange */ +#endif +#ifdef EBADR + //case EBADR 53 /* Invalid request descriptor */ +#endif +#ifdef EXFULL + //case EXFULL 54 /* Exchange full */ +#endif +#ifdef ENOANO + //case ENOANO 55 /* No anode */ +#endif +#ifdef EBADRQC + //case EBADRQC 56 /* Invalid request code */ +#endif +#ifdef EBADSLT + //case EBADSLT 57 /* Invalid slot */ +#endif + //case 58: +#ifdef EBFONT + //case EBFONT 59 /* Bad font file format */ +#endif +#ifdef ENOSTR + //case ENOSTR 60 /* Device not a stream */ +#endif +#ifdef ENODATA + case VERR_NO_DATA: return ENODATA; +#endif +#ifdef ETIME + //case ETIME 62 /* Timer expired */ +#endif +#ifdef ENOSR + //case ENOSR 63 /* Out of streams resources */ +#endif +#ifdef ENONET + case VERR_NET_NO_NETWORK: return ENONET; +#endif +#ifdef ENOPKG + //case ENOPKG 65 /* Package not installed */ +#endif +#ifdef EREMOTE + //case EREMOTE 66 /* Object is remote */ +#endif +#ifdef ENOLINK + //case ENOLINK 67 /* Link has been severed */ +#endif +#ifdef EADV + //case EADV 68 /* Advertise error */ +#endif +#ifdef ESRMNT + //case ESRMNT 69 /* Srmount error */ +#endif +#ifdef ECOMM + //case ECOMM 70 /* Communication error on send */ +#endif +#ifdef EPROTO + //case EPROTO 71 /* Protocol error */ +#endif +#ifdef EMULTIHOP + //case EMULTIHOP 72 /* Multihop attempted */ +#endif +#ifdef EDOTDOT + //case EDOTDOT 73 /* RFS specific error */ +#endif +#ifdef EBADMSG + //case EBADMSG 74 /* Not a data message */ +#endif +#ifdef EOVERFLOW + //case VERR_TOO_MUCH_DATA: return EOVERFLOW; +#endif +#ifdef ENOTUNIQ + case VERR_NET_NOT_UNIQUE_NAME: return ENOTUNIQ; +#endif +#ifdef EBADFD + //case VERR_INVALID_HANDLE: return EBADFD; +#endif +#ifdef EREMCHG + //case EREMCHG 78 /* Remote address changed */ +#endif +#ifdef ELIBACC + //case ELIBACC 79 /* Can not access a needed shared library */ +#endif +#ifdef ELIBBAD + //case ELIBBAD 80 /* Accessing a corrupted shared library */ +#endif +#ifdef ELIBSCN + //case ELIBSCN 81 /* .lib section in a.out corrupted */ +#endif +#ifdef ELIBMAX + //case ELIBMAX 82 /* Attempting to link in too many shared libraries */ +#endif +#ifdef ELIBEXEC + //case ELIBEXEC 83 /* Cannot exec a shared library directly */ +#endif +#ifdef EILSEQ + case VERR_NO_TRANSLATION: return EILSEQ; +#endif +#ifdef ERESTART + //case VERR_INTERRUPTED: return ERESTART; +#endif +#ifdef ESTRPIPE + //case ESTRPIPE 86 /* Streams pipe error */ +#endif +#ifdef EUSERS + //case EUSERS 87 /* Too many users */ +#endif +#ifdef ENOTSOCK + case VERR_NET_NOT_SOCKET: return ENOTSOCK; +#endif +#ifdef EDESTADDRREQ + case VERR_NET_DEST_ADDRESS_REQUIRED: return EDESTADDRREQ; +#endif +#ifdef EMSGSIZE + case VERR_NET_MSG_SIZE: return EMSGSIZE; +#endif +#ifdef EPROTOTYPE + case VERR_NET_PROTOCOL_TYPE: return EPROTOTYPE; +#endif +#ifdef ENOPROTOOPT + case VERR_NET_PROTOCOL_NOT_AVAILABLE: return ENOPROTOOPT; +#endif +#ifdef EPROTONOSUPPORT + case VERR_NET_PROTOCOL_NOT_SUPPORTED: return EPROTONOSUPPORT; +#endif +#ifdef ESOCKTNOSUPPORT + case VERR_NET_SOCKET_TYPE_NOT_SUPPORTED: return ESOCKTNOSUPPORT; +#endif +#ifdef EOPNOTSUPP + case VERR_NET_OPERATION_NOT_SUPPORTED: return EOPNOTSUPP; +#endif +#ifdef EPFNOSUPPORT + case VERR_NET_PROTOCOL_FAMILY_NOT_SUPPORTED: return EPFNOSUPPORT; +#endif +#ifdef EAFNOSUPPORT + case VERR_NET_ADDRESS_FAMILY_NOT_SUPPORTED: return EAFNOSUPPORT; +#endif +#ifdef EADDRINUSE + case VERR_NET_ADDRESS_IN_USE: return EADDRINUSE; +#endif +#ifdef EADDRNOTAVAIL + case VERR_NET_ADDRESS_NOT_AVAILABLE: return EADDRNOTAVAIL; +#endif +#ifdef ENETDOWN + case VERR_NET_DOWN: return ENETDOWN; +#endif +#ifdef ENETUNREACH + case VERR_NET_UNREACHABLE: return ENETUNREACH; +#endif +#ifdef ENETRESET + case VERR_NET_CONNECTION_RESET: return ENETRESET; +#endif +#ifdef ECONNABORTED + case VERR_NET_CONNECTION_ABORTED: return ECONNABORTED; +#endif +#ifdef ECONNRESET + case VERR_NET_CONNECTION_RESET_BY_PEER: return ECONNRESET; +#endif +#ifdef ENOBUFS + case VERR_NET_NO_BUFFER_SPACE: return ENOBUFS; +#endif +#ifdef EISCONN + case VERR_NET_ALREADY_CONNECTED: return EISCONN; +#endif +#ifdef ENOTCONN + case VERR_NET_NOT_CONNECTED: return ENOTCONN; +#endif +#ifdef ESHUTDOWN + case VERR_NET_SHUTDOWN: return ESHUTDOWN; +#endif +#ifdef ETOOMANYREFS + case VERR_NET_TOO_MANY_REFERENCES: return ETOOMANYREFS; +#endif +#ifdef ETIMEDOUT + case VERR_TIMEOUT: return ETIMEDOUT; +#endif +#ifdef ECONNREFUSED + case VERR_NET_CONNECTION_REFUSED: return ECONNREFUSED; +#endif +#ifdef EHOSTDOWN + case VERR_NET_HOST_DOWN: return EHOSTDOWN; +#endif +#ifdef EHOSTUNREACH + case VERR_NET_HOST_UNREACHABLE: return EHOSTUNREACH; +#endif +#ifdef EALREADY + case VERR_NET_ALREADY_IN_PROGRESS: return EALREADY; +#endif +#ifdef EINPROGRESS + case VERR_NET_IN_PROGRESS: return EINPROGRESS; +#endif +#ifdef ESTALE + //case ESTALE 116 /* Stale NFS file handle */ +#endif +#ifdef EUCLEAN + //case EUCLEAN 117 /* Structure needs cleaning */ +#endif +#ifdef ENOTNAM + //case ENOTNAM 118 /* Not a XENIX named type file */ +#endif +#ifdef ENAVAIL + //case ENAVAIL 119 /* No XENIX semaphores available */ +#endif +#ifdef EISNAM + //case EISNAM 120 /* Is a named type file */ +#endif +#ifdef EREMOTEIO + //case EREMOTEIO 121 /* Remote I/O error */ +#endif +#ifdef EDQUOT + //case VERR_DISK_FULL: return EDQUOT; +#endif +#ifdef ENOMEDIUM + case VERR_MEDIA_NOT_PRESENT: return ENOMEDIUM; +#endif +#ifdef EMEDIUMTYPE + case VERR_MEDIA_NOT_RECOGNIZED: return EMEDIUMTYPE; +#endif + + /* Non-linux */ + +#ifdef EPROCLIM + case VERR_MAX_PROCS_REACHED: return EPROCLIM; +#endif +#ifdef EDOOFUS + case VERR_INTERNAL_ERROR: + case VERR_INTERNAL_ERROR_2: + case VERR_INTERNAL_ERROR_3: return EDOOFUS; +#endif + + default: + /* The idea here is that if you hit this, you will have to + translate the status code yourself. */ + AssertMsgFailed(("Unhandled error code %Rrc\n", iErr)); +#ifdef EPROTO + return EPROTO; +#else + return EINVAL; +#endif + } +} +RT_EXPORT_SYMBOL(RTErrConvertToErrno); + --- linux-raspi2-4.2.0.orig/ubuntu/vbox/vboxguest/common/log/log.c +++ linux-raspi2-4.2.0/ubuntu/vbox/vboxguest/common/log/log.c @@ -0,0 +1,3922 @@ +/* $Id: log.cpp $ */ +/** @file + * Runtime VBox - Logger. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + + +/******************************************************************************* +* Header Files * +*******************************************************************************/ +#include +#include "internal/iprt.h" + +#ifndef IN_RC +# include +# include +# include +# include +# include +#endif +#ifdef IN_RING3 +# include +# include +# include +# include +#endif +#include +#include +#if defined(RT_ARCH_AMD64) || defined(RT_ARCH_X86) +# include +#endif +#include +#include +#include + +#include +#include +#include +#ifdef IN_RING3 +# include +# include +#endif + + +/******************************************************************************* +* Defined Constants And Macros * +*******************************************************************************/ +/** @def RTLOG_RINGBUF_DEFAULT_SIZE + * The default ring buffer size. */ +/** @def RTLOG_RINGBUF_MAX_SIZE + * The max ring buffer size. */ +/** @def RTLOG_RINGBUF_MIN_SIZE + * The min ring buffer size. */ +#ifdef IN_RING0 +# define RTLOG_RINGBUF_DEFAULT_SIZE _64K +# define RTLOG_RINGBUF_MAX_SIZE _4M +# define RTLOG_RINGBUF_MIN_SIZE _1K +#elif defined(IN_RING3) || defined(DOXYGEN_RUNNING) +# define RTLOG_RINGBUF_DEFAULT_SIZE _512K +# define RTLOG_RINGBUF_MAX_SIZE _1G +# define RTLOG_RINGBUF_MIN_SIZE _4K +#endif +/** The start of ring buffer eye catcher (16 bytes). */ +#define RTLOG_RINGBUF_EYE_CATCHER "START RING BUF\0" +AssertCompile(sizeof(RTLOG_RINGBUF_EYE_CATCHER) == 16); +/** The end of ring buffer eye catcher (16 bytes). This also ensures that the ring buffer + * forms are properly terminated C string (leading zero chars). */ +#define RTLOG_RINGBUF_EYE_CATCHER_END "\0\0\0END RING BUF" +AssertCompile(sizeof(RTLOG_RINGBUF_EYE_CATCHER_END) == 16); + + +/******************************************************************************* +* Structures and Typedefs * +*******************************************************************************/ +/** + * Arguments passed to the output function. + */ +typedef struct RTLOGOUTPUTPREFIXEDARGS +{ + /** The logger instance. */ + PRTLOGGER pLogger; + /** The flags. (used for prefixing.) */ + unsigned fFlags; + /** The group. (used for prefixing.) */ + unsigned iGroup; +} RTLOGOUTPUTPREFIXEDARGS, *PRTLOGOUTPUTPREFIXEDARGS; + +#ifndef IN_RC + +/** + * Internal logger data. + * + * @remarks Don't make casual changes to this structure. + */ +typedef struct RTLOGGERINTERNAL +{ + /** The structure revision (RTLOGGERINTERNAL_REV). */ + uint32_t uRevision; + /** The size of the internal logger structure. */ + uint32_t cbSelf; + + /** Spinning mutex semaphore. Can be NIL. */ + RTSEMSPINMUTEX hSpinMtx; + /** Pointer to the flush function. */ + PFNRTLOGFLUSH pfnFlush; + + /** Custom prefix callback. */ + PFNRTLOGPREFIX pfnPrefix; + /** Prefix callback argument. */ + void *pvPrefixUserArg; + /** This is set if a prefix is pending. */ + bool fPendingPrefix; + /** Alignment padding. */ + bool afPadding1[2]; + /** Set if fully created. Used to avoid confusing in a few functions used to + * parse logger settings from environment variables. */ + bool fCreated; + + /** The max number of groups that there is room for in afGroups and papszGroups. + * Used by RTLogCopyGroupAndFlags(). */ + uint32_t cMaxGroups; + /** Pointer to the group name array. + * (The data is readonly and provided by the user.) */ + const char * const *papszGroups; + + /** The number of log entries per group. NULL if + * RTLOGFLAGS_RESTRICT_GROUPS is not specified. */ + uint32_t *pacEntriesPerGroup; + /** The max number of entries per group. */ + uint32_t cMaxEntriesPerGroup; + + /** @name Ring buffer logging + * The ring buffer records the last cbRingBuf - 1 of log output. The + * other configured log destinations are not touched until someone calls + * RTLogFlush(), when the ring buffer content is written to them all. + * + * The aim here is a fast logging destination, that avoids wasting storage + * space saving disk space when dealing with huge log volumes where the + * interesting bits usually are found near the end of the log. This is + * typically the case for scenarios that crashes or hits assertions. + * + * RTLogFlush() is called implicitly when hitting an assertion. While on a + * crash the most debuggers are able to make calls these days, it's usually + * possible to view the ring buffer memory. + * + * @{ */ + /** Ring buffer size (including both eye catchers). */ + uint32_t cbRingBuf; + /** Number of bytes passing thru the ring buffer since last RTLogFlush call. + * (This is used to avoid writing out the same bytes twice.) */ + uint64_t volatile cbRingBufUnflushed; + /** Ring buffer pointer (points at RTLOG_RINGBUF_EYE_CATCHER). */ + char *pszRingBuf; + /** Current ring buffer position (where to write the next char). */ + char * volatile pchRingBufCur; + /** @} */ + +# ifdef IN_RING3 /* Note! Must be at the end! */ + /** @name File logging bits for the logger. + * @{ */ + /** Pointer to the function called when starting logging, and when + * ending or starting a new log file as part of history rotation. + * This can be NULL. */ + PFNRTLOGPHASE pfnPhase; + + /** Handle to log file (if open). */ + RTFILE hFile; + /** Log file history settings: maximum amount of data to put in a file. */ + uint64_t cbHistoryFileMax; + /** Log file history settings: current amount of data in a file. */ + uint64_t cbHistoryFileWritten; + /** Log file history settings: maximum time to use a file (in seconds). */ + uint32_t cSecsHistoryTimeSlot; + /** Log file history settings: in what time slot was the file created. */ + uint32_t uHistoryTimeSlotStart; + /** Log file history settings: number of older files to keep. + * 0 means no history. */ + uint32_t cHistory; + /** Pointer to filename. */ + char szFilename[RTPATH_MAX]; + /** @} */ +# endif /* IN_RING3 */ +} RTLOGGERINTERNAL; + +/** The revision of the internal logger structure. */ +# define RTLOGGERINTERNAL_REV UINT32_C(10) + +# ifdef IN_RING3 +/** The size of the RTLOGGERINTERNAL structure in ring-0. */ +# define RTLOGGERINTERNAL_R0_SIZE RT_OFFSETOF(RTLOGGERINTERNAL, pfnPhase) +AssertCompileMemberAlignment(RTLOGGERINTERNAL, hFile, sizeof(void *)); +AssertCompileMemberAlignment(RTLOGGERINTERNAL, cbHistoryFileMax, sizeof(uint64_t)); +# endif +AssertCompileMemberAlignment(RTLOGGERINTERNAL, cbRingBufUnflushed, sizeof(uint64_t)); + +#endif /* !IN_RC */ + + +/******************************************************************************* +* Internal Functions * +*******************************************************************************/ +#ifndef IN_RC +static unsigned rtlogGroupFlags(const char *psz); +#endif +#ifdef IN_RING0 +static void rtR0LogLoggerExFallback(uint32_t fDestFlags, uint32_t fFlags, PRTLOGGERINTERNAL pInt, + const char *pszFormat, va_list va); +#endif +#ifdef IN_RING3 +static int rtlogFileOpen(PRTLOGGER pLogger, char *pszErrorMsg, size_t cchErrorMsg); +static void rtlogRotate(PRTLOGGER pLogger, uint32_t uTimeSlot, bool fFirst); +#endif +#ifndef IN_RC +static void rtLogRingBufFlush(PRTLOGGER pLogger); +#endif +static void rtlogFlush(PRTLOGGER pLogger); +static DECLCALLBACK(size_t) rtLogOutput(void *pv, const char *pachChars, size_t cbChars); +static DECLCALLBACK(size_t) rtLogOutputPrefixed(void *pv, const char *pachChars, size_t cbChars); +static void rtlogLoggerExVLocked(PRTLOGGER pLogger, unsigned fFlags, unsigned iGroup, const char *pszFormat, va_list args); +#ifndef IN_RC +static void rtlogLoggerExFLocked(PRTLOGGER pLogger, unsigned fFlags, unsigned iGroup, const char *pszFormat, ...); +#endif + + +/******************************************************************************* +* Global Variables * +*******************************************************************************/ +#ifdef IN_RC +/** Default logger instance. Make it weak because our RC module loader does not + * necessarily resolve this symbol and the compiler _must_ check if this is + * the case or not. That doesn't work for Darwin (``incompatible feature used: + * .weak_reference (must specify "-dynamic" to be used'') */ +# ifdef RT_OS_DARWIN +extern "C" DECLIMPORT(RTLOGGERRC) g_Logger; +# else +extern "C" DECLWEAK(DECLIMPORT(RTLOGGERRC)) g_Logger; +# endif +#else /* !IN_RC */ +/** Default logger instance. */ +static PRTLOGGER g_pLogger; +#endif /* !IN_RC */ +#ifdef IN_RING3 +/** The RTThreadGetWriteLockCount() change caused by the logger mutex semaphore. */ +static uint32_t volatile g_cLoggerLockCount; +#endif + +#ifdef IN_RING0 +/** Number of per-thread loggers. */ +static int32_t volatile g_cPerThreadLoggers; +/** Per-thread loggers. + * This is just a quick TLS hack suitable for debug logging only. + * If we run out of entries, just unload and reload the driver. */ +static struct RTLOGGERPERTHREAD +{ + /** The thread. */ + RTNATIVETHREAD volatile NativeThread; + /** The (process / session) key. */ + uintptr_t volatile uKey; + /** The logger instance.*/ + PRTLOGGER volatile pLogger; +} g_aPerThreadLoggers[8] = +{ + { NIL_RTNATIVETHREAD, 0, 0}, + { NIL_RTNATIVETHREAD, 0, 0}, + { NIL_RTNATIVETHREAD, 0, 0}, + { NIL_RTNATIVETHREAD, 0, 0}, + { NIL_RTNATIVETHREAD, 0, 0}, + { NIL_RTNATIVETHREAD, 0, 0}, + { NIL_RTNATIVETHREAD, 0, 0}, + { NIL_RTNATIVETHREAD, 0, 0} +}; +#endif /* IN_RING0 */ + +/** + * Logger flags instructions. + */ +static struct +{ + const char *pszInstr; /**< The name */ + size_t cchInstr; /**< The size of the name. */ + uint32_t fFlag; /**< The flag value. */ + bool fInverted; /**< Inverse meaning? */ +} const g_aLogFlags[] = +{ + { "disabled", sizeof("disabled" ) - 1, RTLOGFLAGS_DISABLED, false }, + { "enabled", sizeof("enabled" ) - 1, RTLOGFLAGS_DISABLED, true }, + { "buffered", sizeof("buffered" ) - 1, RTLOGFLAGS_BUFFERED, false }, + { "unbuffered", sizeof("unbuffered" ) - 1, RTLOGFLAGS_BUFFERED, true }, + { "usecrlf", sizeof("usecrlf" ) - 1, RTLOGFLAGS_USECRLF, false }, + { "uself", sizeof("uself" ) - 1, RTLOGFLAGS_USECRLF, true }, + { "append", sizeof("append" ) - 1, RTLOGFLAGS_APPEND, false }, + { "overwrite", sizeof("overwrite" ) - 1, RTLOGFLAGS_APPEND, true }, + { "rel", sizeof("rel" ) - 1, RTLOGFLAGS_REL_TS, false }, + { "abs", sizeof("abs" ) - 1, RTLOGFLAGS_REL_TS, true }, + { "dec", sizeof("dec" ) - 1, RTLOGFLAGS_DECIMAL_TS, false }, + { "hex", sizeof("hex" ) - 1, RTLOGFLAGS_DECIMAL_TS, true }, + { "writethru", sizeof("writethru" ) - 1, RTLOGFLAGS_WRITE_THROUGH, false }, + { "writethrough", sizeof("writethrough") - 1, RTLOGFLAGS_WRITE_THROUGH, false }, + { "flush", sizeof("flush" ) - 1, RTLOGFLAGS_FLUSH, false }, + { "lockcnts", sizeof("lockcnts" ) - 1, RTLOGFLAGS_PREFIX_LOCK_COUNTS, false }, + { "cpuid", sizeof("cpuid" ) - 1, RTLOGFLAGS_PREFIX_CPUID, false }, + { "pid", sizeof("pid" ) - 1, RTLOGFLAGS_PREFIX_PID, false }, + { "flagno", sizeof("flagno" ) - 1, RTLOGFLAGS_PREFIX_FLAG_NO, false }, + { "flag", sizeof("flag" ) - 1, RTLOGFLAGS_PREFIX_FLAG, false }, + { "groupno", sizeof("groupno" ) - 1, RTLOGFLAGS_PREFIX_GROUP_NO, false }, + { "group", sizeof("group" ) - 1, RTLOGFLAGS_PREFIX_GROUP, false }, + { "tid", sizeof("tid" ) - 1, RTLOGFLAGS_PREFIX_TID, false }, + { "thread", sizeof("thread" ) - 1, RTLOGFLAGS_PREFIX_THREAD, false }, + { "custom", sizeof("custom" ) - 1, RTLOGFLAGS_PREFIX_CUSTOM, false }, + { "timeprog", sizeof("timeprog" ) - 1, RTLOGFLAGS_PREFIX_TIME_PROG, false }, + { "time", sizeof("time" ) - 1, RTLOGFLAGS_PREFIX_TIME, false }, + { "msprog", sizeof("msprog" ) - 1, RTLOGFLAGS_PREFIX_MS_PROG, false }, + { "tsc", sizeof("tsc" ) - 1, RTLOGFLAGS_PREFIX_TSC, false }, /* before ts! */ + { "ts", sizeof("ts" ) - 1, RTLOGFLAGS_PREFIX_TS, false }, + /* We intentionally omit RTLOGFLAGS_RESTRICT_GROUPS. */ +}; + +/** + * Logger destination instructions. + */ +static struct +{ + const char *pszInstr; /**< The name. */ + size_t cchInstr; /**< The size of the name. */ + uint32_t fFlag; /**< The corresponding destination flag. */ +} const s_aLogDst[] = +{ + { RT_STR_TUPLE("file"), RTLOGDEST_FILE }, /* Must be 1st! */ + { RT_STR_TUPLE("dir"), RTLOGDEST_FILE }, /* Must be 2nd! */ + { RT_STR_TUPLE("history"), 0 }, /* Must be 3rd! */ + { RT_STR_TUPLE("histsize"), 0 }, /* Must be 4th! */ + { RT_STR_TUPLE("histtime"), 0 }, /* Must be 5th! */ + { RT_STR_TUPLE("ringbuf"), RTLOGDEST_RINGBUF }, /* Must be 6th! */ + { RT_STR_TUPLE("stdout"), RTLOGDEST_STDOUT }, + { RT_STR_TUPLE("stderr"), RTLOGDEST_STDERR }, + { RT_STR_TUPLE("debugger"), RTLOGDEST_DEBUGGER }, + { RT_STR_TUPLE("com"), RTLOGDEST_COM }, + { RT_STR_TUPLE("user"), RTLOGDEST_USER }, +}; + +/** Log rotation backoff table - millisecond sleep intervals. + * Important on Windows host, especially for VBoxSVC release logging. Only a + * medium term solution, until a proper fix for log file handling is available. + * 10 seconds total. + */ +static const uint32_t g_acMsLogBackoff[] = +{ 10, 10, 10, 20, 50, 100, 200, 200, 200, 200, 500, 500, 500, 500, 1000, 1000, 1000, 1000, 1000, 1000, 1000 }; + + +/** + * Locks the logger instance. + * + * @returns See RTSemSpinMutexRequest(). + * @param pLogger The logger instance. + */ +DECLINLINE(int) rtlogLock(PRTLOGGER pLogger) +{ +#ifndef IN_RC + PRTLOGGERINTERNAL pInt = pLogger->pInt; + AssertMsgReturn(pInt->uRevision == RTLOGGERINTERNAL_REV, ("%#x != %#x\n", pInt->uRevision, RTLOGGERINTERNAL_REV), + VERR_LOG_REVISION_MISMATCH); + AssertMsgReturn(pInt->cbSelf == sizeof(*pInt), ("%#x != %#x\n", pInt->cbSelf, sizeof(*pInt)), + VERR_LOG_REVISION_MISMATCH); + if (pInt->hSpinMtx != NIL_RTSEMSPINMUTEX) + { + int rc = RTSemSpinMutexRequest(pInt->hSpinMtx); + if (RT_FAILURE(rc)) + return rc; + } +#else + NOREF(pLogger); +#endif + return VINF_SUCCESS; +} + + +/** + * Unlocks the logger instance. + * @param pLogger The logger instance. + */ +DECLINLINE(void) rtlogUnlock(PRTLOGGER pLogger) +{ +#ifndef IN_RC + if (pLogger->pInt->hSpinMtx != NIL_RTSEMSPINMUTEX) + RTSemSpinMutexRelease(pLogger->pInt->hSpinMtx); +#else + NOREF(pLogger); +#endif + return; +} + +#ifndef IN_RC +# ifdef IN_RING3 + +# ifdef SOME_UNUSED_FUNCTION +/** + * Logging to file, output callback. + * + * @param pvArg User argument. + * @param pachChars Pointer to an array of utf-8 characters. + * @param cbChars Number of bytes in the character array pointed to by pachChars. + */ +static DECLCALLBACK(size_t) rtlogPhaseWrite(void *pvArg, const char *pachChars, size_t cbChars) +{ + PRTLOGGER pLogger = (PRTLOGGER)pvArg; + RTFileWrite(pLogger->pInt->hFile, pachChars, cbChars, NULL); + return cbChars; +} + + +/** + * Callback to format VBox formatting extentions. + * See @ref pg_rt_str_format for a reference on the format types. + * + * @returns The number of bytes formatted. + * @param pvArg Formatter argument. + * @param pfnOutput Pointer to output function. + * @param pvArgOutput Argument for the output function. + * @param ppszFormat Pointer to the format string pointer. Advance this till the char + * after the format specifier. + * @param pArgs Pointer to the argument list. Use this to fetch the arguments. + * @param cchWidth Format Width. -1 if not specified. + * @param cchPrecision Format Precision. -1 if not specified. + * @param fFlags Flags (RTSTR_NTFS_*). + * @param chArgSize The argument size specifier, 'l' or 'L'. + */ +static DECLCALLBACK(size_t) rtlogPhaseFormatStr(void *pvArg, PFNRTSTROUTPUT pfnOutput, void *pvArgOutput, + const char **ppszFormat, va_list *pArgs, int cchWidth, + int cchPrecision, unsigned fFlags, char chArgSize) +{ + char ch = *(*ppszFormat)++; + + AssertMsgFailed(("Invalid logger phase format type '%%%c%.10s'!\n", ch, *ppszFormat)); NOREF(ch); + + return 0; +} + +# endif /* SOME_UNUSED_FUNCTION */ + + +/** + * Log phase callback function, assumes the lock is already held + * + * @param pLogger The logger instance. + * @param pszFormat Format string. + * @param ... Optional arguments as specified in the format string. + */ +static DECLCALLBACK(void) rtlogPhaseMsgLocked(PRTLOGGER pLogger, const char *pszFormat, ...) +{ + va_list args; + AssertPtrReturnVoid(pLogger); + AssertPtrReturnVoid(pLogger->pInt); + Assert(pLogger->pInt->hSpinMtx != NIL_RTSEMSPINMUTEX); + + va_start(args, pszFormat); + rtlogLoggerExVLocked(pLogger, 0, ~0, pszFormat, args); + va_end(args); +} + + +/** + * Log phase callback function, assumes the lock is not held. + * + * @param pLogger The logger instance. + * @param pszFormat Format string. + * @param ... Optional arguments as specified in the format string. + */ +static DECLCALLBACK(void) rtlogPhaseMsgNormal(PRTLOGGER pLogger, const char *pszFormat, ...) +{ + va_list args; + AssertPtrReturnVoid(pLogger); + AssertPtrReturnVoid(pLogger->pInt); + Assert(pLogger->pInt->hSpinMtx != NIL_RTSEMSPINMUTEX); + + va_start(args, pszFormat); + RTLogLoggerExV(pLogger, 0, ~0, pszFormat, args); + va_end(args); +} + +# endif /* IN_RING3 */ + +/** + * Adjusts the ring buffer. + * + * @returns IPRT status code. + * @param pLogger The logger instance. + * @param cbNewSize The new ring buffer size (0 == default). + * @param fForce Whether to do this even if the logger instance hasn't + * really been fully created yet (i.e. during RTLogCreate). + */ +static int rtLogRingBufAdjust(PRTLOGGER pLogger, uint32_t cbNewSize, bool fForce) +{ + /* + * If this is early logger init, don't do anything. + */ + if (!pLogger->pInt->fCreated && !fForce) + return VINF_SUCCESS; + + /* + * Lock the logger and make the necessary changes. + */ + int rc = rtlogLock(pLogger); + if (RT_SUCCESS(rc)) + { + if (cbNewSize == 0) + cbNewSize = RTLOG_RINGBUF_DEFAULT_SIZE; + if ( pLogger->pInt->cbRingBuf != cbNewSize + || !pLogger->pInt->pchRingBufCur) + { + uintptr_t offOld = pLogger->pInt->pchRingBufCur - pLogger->pInt->pszRingBuf; + if (offOld < sizeof(RTLOG_RINGBUF_EYE_CATCHER)) + offOld = sizeof(RTLOG_RINGBUF_EYE_CATCHER); + else if (offOld >= cbNewSize) + { + memmove(pLogger->pInt->pszRingBuf, &pLogger->pInt->pszRingBuf[offOld - cbNewSize], cbNewSize); + offOld = sizeof(RTLOG_RINGBUF_EYE_CATCHER); + } + + void *pvNew = RTMemRealloc(pLogger->pInt->pchRingBufCur, cbNewSize); + if (pvNew) + { + pLogger->pInt->pszRingBuf = (char *)pvNew; + pLogger->pInt->pchRingBufCur = (char *)pvNew + offOld; + pLogger->pInt->cbRingBuf = cbNewSize; + memcpy(pvNew, RTLOG_RINGBUF_EYE_CATCHER, sizeof(RTLOG_RINGBUF_EYE_CATCHER)); + memcpy((char *)pvNew + cbNewSize - sizeof(RTLOG_RINGBUF_EYE_CATCHER_END), + RTLOG_RINGBUF_EYE_CATCHER_END, sizeof(RTLOG_RINGBUF_EYE_CATCHER_END)); + rc = VINF_SUCCESS; + } + else + rc = VERR_NO_MEMORY; + } + rtlogUnlock(pLogger); + } + + return rc; +} + + +/** + * Writes text to the ring buffer. + * + * @param pInt The internal logger data structure. + * @param pachText The text to write. + * @param cchText The number of chars (bytes) to write. + */ +static void rtLogRingBufWrite(PRTLOGGERINTERNAL pInt, const char *pachText, size_t cchText) +{ + /* + * Get the ring buffer data, adjusting it to only describe the writable + * part of the buffer. + */ + char * const pchStart = &pInt->pszRingBuf[sizeof(RTLOG_RINGBUF_EYE_CATCHER)]; + size_t const cchBuf = pInt->cbRingBuf - sizeof(RTLOG_RINGBUF_EYE_CATCHER) - sizeof(RTLOG_RINGBUF_EYE_CATCHER_END); + char *pchCur = pInt->pchRingBufCur; + size_t cchLeft = pchCur - pchStart; + if (RT_LIKELY(cchLeft < cchBuf)) + cchLeft = cchBuf - cchLeft; + else + { + /* May happen in ring-0 where a thread or two went ahead without getting the lock. */ + pchCur = pchStart; + cchLeft = cchBuf; + } + Assert(cchBuf < pInt->cbRingBuf); + + if (cchText < cchLeft) + { + /* + * The text fits in the remaining space. + */ + memcpy(pchCur, pachText, cchText); + pchCur[cchText] = '\0'; + pInt->pchRingBufCur = &pchCur[cchText]; + pInt->cbRingBufUnflushed += cchText; + } + else + { + /* + * The text wraps around. Taking the simple but inefficient approach + * to input texts that are longer than the ring buffer since that + * is unlikely to the be a frequent case. + */ + /* Fill to the end of the buffer. */ + memcpy(pchCur, pachText, cchLeft); + pachText += cchLeft; + cchText -= cchLeft; + pInt->cbRingBufUnflushed += cchLeft; + pInt->pchRingBufCur = pchStart; + + /* Ring buffer overflows (the plainly inefficient bit). */ + while (cchText >= cchBuf) + { + memcpy(pchStart, pachText, cchBuf); + pachText += cchBuf; + cchText -= cchBuf; + pInt->cbRingBufUnflushed += cchBuf; + } + + /* The final bit, if any. */ + if (cchText > 0) + { + memcpy(pchStart, pachText, cchText); + pInt->cbRingBufUnflushed += cchText; + } + pchStart[cchText] = '\0'; + pInt->pchRingBufCur = &pchStart[cchText]; + } +} + + +/** + * Flushes the ring buffer to all the other log destinations. + * + * @param pLogger The logger instance which ring buffer should be flushed. + */ +static void rtLogRingBufFlush(PRTLOGGER pLogger) +{ + const char *pszPreamble; + size_t cchPreamble; + const char *pszFirst; + size_t cchFirst; + const char *pszSecond; + size_t cchSecond; + + /* + * Get the ring buffer data, adjusting it to only describe the writable + * part of the buffer. + */ + uint64_t cchUnflushed = pLogger->pInt->cbRingBufUnflushed; + char * const pszBuf = &pLogger->pInt->pszRingBuf[sizeof(RTLOG_RINGBUF_EYE_CATCHER)]; + size_t const cchBuf = pLogger->pInt->cbRingBuf - sizeof(RTLOG_RINGBUF_EYE_CATCHER) - sizeof(RTLOG_RINGBUF_EYE_CATCHER_END); + size_t offCur = pLogger->pInt->pchRingBufCur - pszBuf; + size_t cchAfter; + if (RT_LIKELY(offCur < cchBuf)) + cchAfter = cchBuf - offCur; + else /* May happen in ring-0 where a thread or two went ahead without getting the lock. */ + { + offCur = 0; + cchAfter = cchBuf; + } + + pLogger->pInt->cbRingBufUnflushed = 0; + + /* + * Figure out whether there are one or two segments that needs writing, + * making the last segment is terminated. (The first is always + * terminated because of the eye-catcher at the end of the buffer.) + */ + if (cchUnflushed == 0) + return; + pszBuf[offCur] = '\0'; + if (cchUnflushed >= cchBuf) + { + pszFirst = &pszBuf[offCur + 1]; + cchFirst = cchAfter ? cchAfter - 1 : 0; + pszSecond = pszBuf; + cchSecond = offCur; + pszPreamble = "\n*FLUSH RING BUF*\n"; + cchPreamble = sizeof("\n*FLUSH RING BUF*\n") - 1; + } + else if ((size_t)cchUnflushed <= offCur) + { + cchFirst = (size_t)cchUnflushed; + pszFirst = &pszBuf[offCur - cchFirst]; + pszSecond = ""; + cchSecond = 0; + pszPreamble = ""; + cchPreamble = 0; + } + else + { + cchFirst = (size_t)cchUnflushed - offCur; + pszFirst = &pszBuf[cchBuf - cchFirst]; + pszSecond = pszBuf; + cchSecond = offCur; + pszPreamble = ""; + cchPreamble = 0; + } + + /* + * Write the ring buffer to all other destiations. + */ + if (pLogger->fDestFlags & RTLOGDEST_USER) + { + if (cchPreamble) + RTLogWriteUser(pszPreamble, cchPreamble); + if (cchFirst) + RTLogWriteUser(pszFirst, cchFirst); + if (cchSecond) + RTLogWriteUser(pszSecond, cchSecond); + } + + if (pLogger->fDestFlags & RTLOGDEST_DEBUGGER) + { + if (cchPreamble) + RTLogWriteDebugger(pszPreamble, cchPreamble); + if (cchFirst) + RTLogWriteDebugger(pszFirst, cchFirst); + if (cchSecond) + RTLogWriteDebugger(pszSecond, cchSecond); + } + +# ifdef IN_RING3 + if (pLogger->fDestFlags & RTLOGDEST_FILE) + { + if (pLogger->pInt->hFile != NIL_RTFILE) + { + if (cchPreamble) + RTFileWrite(pLogger->pInt->hFile, pszPreamble, cchPreamble, NULL); + if (cchFirst) + RTFileWrite(pLogger->pInt->hFile, pszFirst, cchFirst, NULL); + if (cchSecond) + RTFileWrite(pLogger->pInt->hFile, pszSecond, cchSecond, NULL); + if (pLogger->fFlags & RTLOGFLAGS_FLUSH) + RTFileFlush(pLogger->pInt->hFile); + } + if (pLogger->pInt->cHistory) + pLogger->pInt->cbHistoryFileWritten += cchFirst + cchSecond; + } +# endif + + if (pLogger->fDestFlags & RTLOGDEST_STDOUT) + { + if (cchPreamble) + RTLogWriteStdOut(pszPreamble, cchPreamble); + if (cchFirst) + RTLogWriteStdOut(pszFirst, cchFirst); + if (cchSecond) + RTLogWriteStdOut(pszSecond, cchSecond); + } + + if (pLogger->fDestFlags & RTLOGDEST_STDERR) + { + if (cchPreamble) + RTLogWriteStdErr(pszPreamble, cchPreamble); + if (cchFirst) + RTLogWriteStdErr(pszFirst, cchFirst); + if (cchSecond) + RTLogWriteStdErr(pszSecond, cchSecond); + } + +# if defined(IN_RING0) && !defined(LOG_NO_COM) + if (pLogger->fDestFlags & RTLOGDEST_COM) + { + if (cchPreamble) + RTLogWriteCom(pszPreamble, cchPreamble); + if (cchFirst) + RTLogWriteCom(pszFirst, cchFirst); + if (cchSecond) + RTLogWriteCom(pszSecond, cchSecond); + } +# endif +} + + + + +RTDECL(int) RTLogCreateExV(PRTLOGGER *ppLogger, uint32_t fFlags, const char *pszGroupSettings, + const char *pszEnvVarBase, unsigned cGroups, const char * const *papszGroups, + uint32_t fDestFlags, PFNRTLOGPHASE pfnPhase, uint32_t cHistory, + uint64_t cbHistoryFileMax, uint32_t cSecsHistoryTimeSlot, + char *pszErrorMsg, size_t cchErrorMsg, const char *pszFilenameFmt, va_list args) +{ + int rc; + size_t offInternal; + size_t cbLogger; + PRTLOGGER pLogger; + + /* + * Validate input. + */ + if ( (cGroups && !papszGroups) + || !VALID_PTR(ppLogger) ) + { + AssertMsgFailed(("Invalid parameters!\n")); + return VERR_INVALID_PARAMETER; + } + *ppLogger = NULL; + + if (pszErrorMsg) + RTStrPrintf(pszErrorMsg, cchErrorMsg, N_("unknown error")); + + AssertMsgReturn(cHistory < _1M, ("%#x", cHistory), VERR_OUT_OF_RANGE); + + /* + * Allocate a logger instance. + */ + offInternal = RT_OFFSETOF(RTLOGGER, afGroups[cGroups]); + offInternal = RT_ALIGN_Z(offInternal, sizeof(uint64_t)); + cbLogger = offInternal + sizeof(RTLOGGERINTERNAL); + if (fFlags & RTLOGFLAGS_RESTRICT_GROUPS) + cbLogger += cGroups * sizeof(uint32_t); + pLogger = (PRTLOGGER)RTMemAllocZVar(cbLogger); + if (pLogger) + { +# if defined(RT_ARCH_X86) && (!defined(LOG_USE_C99) || !defined(RT_WITHOUT_EXEC_ALLOC)) + uint8_t *pu8Code; +# endif + pLogger->u32Magic = RTLOGGER_MAGIC; + pLogger->cGroups = cGroups; + pLogger->fFlags = fFlags; + pLogger->fDestFlags = fDestFlags; + pLogger->pInt = (PRTLOGGERINTERNAL)((uintptr_t)pLogger + offInternal); + pLogger->pInt->uRevision = RTLOGGERINTERNAL_REV; + pLogger->pInt->cbSelf = sizeof(RTLOGGERINTERNAL); + pLogger->pInt->hSpinMtx = NIL_RTSEMSPINMUTEX; + pLogger->pInt->pfnFlush = NULL; + pLogger->pInt->pfnPrefix = NULL; + pLogger->pInt->pvPrefixUserArg = NULL; + pLogger->pInt->afPadding1[0] = false; + pLogger->pInt->afPadding1[1] = false; + pLogger->pInt->fCreated = false; + pLogger->pInt->cMaxGroups = cGroups; + pLogger->pInt->papszGroups = papszGroups; + if (fFlags & RTLOGFLAGS_RESTRICT_GROUPS) + pLogger->pInt->pacEntriesPerGroup = (uint32_t *)(pLogger->pInt + 1); + else + pLogger->pInt->pacEntriesPerGroup = NULL; + pLogger->pInt->cMaxEntriesPerGroup = UINT32_MAX; +# ifdef IN_RING3 + pLogger->pInt->pfnPhase = pfnPhase; + pLogger->pInt->hFile = NIL_RTFILE; + pLogger->pInt->cHistory = cHistory; + if (cbHistoryFileMax == 0) + pLogger->pInt->cbHistoryFileMax = UINT64_MAX; + else + pLogger->pInt->cbHistoryFileMax = cbHistoryFileMax; + if (cSecsHistoryTimeSlot == 0) + pLogger->pInt->cSecsHistoryTimeSlot = UINT32_MAX; + else + pLogger->pInt->cSecsHistoryTimeSlot = cSecsHistoryTimeSlot; +# endif /* IN_RING3 */ + if (pszGroupSettings) + RTLogGroupSettings(pLogger, pszGroupSettings); + +# if defined(RT_ARCH_X86) && (!defined(LOG_USE_C99) || !defined(RT_WITHOUT_EXEC_ALLOC)) + /* + * Emit wrapper code. + */ + pu8Code = (uint8_t *)RTMemExecAlloc(64); + if (pu8Code) + { + pLogger->pfnLogger = *(PFNRTLOGGER*)&pu8Code; + *pu8Code++ = 0x68; /* push imm32 */ + *(void **)pu8Code = pLogger; + pu8Code += sizeof(void *); + *pu8Code++ = 0xe8; /* call rel32 */ + *(uint32_t *)pu8Code = (uintptr_t)RTLogLogger - ((uintptr_t)pu8Code + sizeof(uint32_t)); + pu8Code += sizeof(uint32_t); + *pu8Code++ = 0x8d; /* lea esp, [esp + 4] */ + *pu8Code++ = 0x64; + *pu8Code++ = 0x24; + *pu8Code++ = 0x04; + *pu8Code++ = 0xc3; /* ret near */ + AssertMsg((uintptr_t)pu8Code - (uintptr_t)pLogger->pfnLogger <= 64, + ("Wrapper assembly is too big! %d bytes\n", (uintptr_t)pu8Code - (uintptr_t)pLogger->pfnLogger)); + rc = VINF_SUCCESS; + } + else + { +# ifdef RT_OS_LINUX + if (pszErrorMsg) /* Most probably SELinux causing trouble since the larger RTMemAlloc succeeded. */ + RTStrPrintf(pszErrorMsg, cchErrorMsg, N_("mmap(PROT_WRITE | PROT_EXEC) failed -- SELinux?")); +# endif + rc = VERR_NO_MEMORY; + } + if (RT_SUCCESS(rc)) +# endif /* X86 wrapper code*/ + { +# ifdef IN_RING3 /* files and env.vars. are only accessible when in R3 at the present time. */ + /* + * Format the filename. + */ + if (pszFilenameFmt) + { + /** @todo validate the length, fail on overflow. */ + RTStrPrintfV(pLogger->pInt->szFilename, sizeof(pLogger->pInt->szFilename), pszFilenameFmt, args); + pLogger->fDestFlags |= RTLOGDEST_FILE; + } + + /* + * Parse the environment variables. + */ + if (pszEnvVarBase) + { + /* make temp copy of environment variable base. */ + size_t cchEnvVarBase = strlen(pszEnvVarBase); + char *pszEnvVar = (char *)alloca(cchEnvVarBase + 16); + memcpy(pszEnvVar, pszEnvVarBase, cchEnvVarBase); + + /* + * Destination. + */ + strcpy(pszEnvVar + cchEnvVarBase, "_DEST"); + const char *pszValue = RTEnvGet(pszEnvVar); + if (pszValue) + RTLogDestinations(pLogger, pszValue); + + /* + * The flags. + */ + strcpy(pszEnvVar + cchEnvVarBase, "_FLAGS"); + pszValue = RTEnvGet(pszEnvVar); + if (pszValue) + RTLogFlags(pLogger, pszValue); + + /* + * The group settings. + */ + pszEnvVar[cchEnvVarBase] = '\0'; + pszValue = RTEnvGet(pszEnvVar); + if (pszValue) + RTLogGroupSettings(pLogger, pszValue); + } +# endif /* IN_RING3 */ + + /* + * Open the destination(s). + */ + rc = VINF_SUCCESS; +# ifdef IN_RING3 + if (pLogger->fDestFlags & RTLOGDEST_FILE) + { + if (pLogger->fFlags & RTLOGFLAGS_APPEND) + { + rc = rtlogFileOpen(pLogger, pszErrorMsg, cchErrorMsg); + + /* Rotate in case of appending to a too big log file, + otherwise this simply doesn't do anything. */ + rtlogRotate(pLogger, 0, true /* fFirst */); + } + else + { + /* Force rotation if it is configured. */ + pLogger->pInt->cbHistoryFileWritten = UINT64_MAX; + rtlogRotate(pLogger, 0, true /* fFirst */); + + /* If the file is not open then rotation is not set up. */ + if (pLogger->pInt->hFile == NIL_RTFILE) + { + pLogger->pInt->cbHistoryFileWritten = 0; + rc = rtlogFileOpen(pLogger, pszErrorMsg, cchErrorMsg); + } + } + } +# endif /* IN_RING3 */ + + if ((pLogger->fDestFlags & RTLOGDEST_RINGBUF) && RT_SUCCESS(rc)) + rc = rtLogRingBufAdjust(pLogger, pLogger->pInt->cbRingBuf, true /*fForce*/); + + /* + * Create mutex and check how much it counts when entering the lock + * so that we can report the values for RTLOGFLAGS_PREFIX_LOCK_COUNTS. + */ + if (RT_SUCCESS(rc)) + { + rc = RTSemSpinMutexCreate(&pLogger->pInt->hSpinMtx, RTSEMSPINMUTEX_FLAGS_IRQ_SAFE); + if (RT_SUCCESS(rc)) + { +# ifdef IN_RING3 /** @todo do counters in ring-0 too? */ + RTTHREAD Thread = RTThreadSelf(); + if (Thread != NIL_RTTHREAD) + { + int32_t c = RTLockValidatorWriteLockGetCount(Thread); + RTSemSpinMutexRequest(pLogger->pInt->hSpinMtx); + c = RTLockValidatorWriteLockGetCount(Thread) - c; + RTSemSpinMutexRelease(pLogger->pInt->hSpinMtx); + ASMAtomicWriteU32(&g_cLoggerLockCount, c); + } + + /* Use the callback to generate some initial log contents. */ + Assert(VALID_PTR(pLogger->pInt->pfnPhase) || pLogger->pInt->pfnPhase == NULL); + if (pLogger->pInt->pfnPhase) + pLogger->pInt->pfnPhase(pLogger, RTLOGPHASE_BEGIN, rtlogPhaseMsgNormal); +# endif + pLogger->pInt->fCreated = true; + *ppLogger = pLogger; + return VINF_SUCCESS; + } + + if (pszErrorMsg) + RTStrPrintf(pszErrorMsg, cchErrorMsg, N_("failed to create semaphore")); + } +# ifdef IN_RING3 + RTFileClose(pLogger->pInt->hFile); +# endif +# if defined(LOG_USE_C99) && defined(RT_WITHOUT_EXEC_ALLOC) + RTMemFree(*(void **)&pLogger->pfnLogger); +# else + RTMemExecFree(*(void **)&pLogger->pfnLogger, 64); +# endif + } + RTMemFree(pLogger); + } + else + rc = VERR_NO_MEMORY; + + return rc; +} +RT_EXPORT_SYMBOL(RTLogCreateExV); + + +RTDECL(int) RTLogCreate(PRTLOGGER *ppLogger, uint32_t fFlags, const char *pszGroupSettings, + const char *pszEnvVarBase, unsigned cGroups, const char * const * papszGroups, + uint32_t fDestFlags, const char *pszFilenameFmt, ...) +{ + va_list args; + int rc; + + va_start(args, pszFilenameFmt); + rc = RTLogCreateExV(ppLogger, fFlags, pszGroupSettings, pszEnvVarBase, cGroups, papszGroups, + fDestFlags, NULL /*pfnPhase*/, 0 /*cHistory*/, 0 /*cbHistoryFileMax*/, 0 /*cSecsHistoryTimeSlot*/, + NULL /*pszErrorMsg*/, 0 /*cchErrorMsg*/, pszFilenameFmt, args); + va_end(args); + return rc; +} +RT_EXPORT_SYMBOL(RTLogCreate); + + +RTDECL(int) RTLogCreateEx(PRTLOGGER *ppLogger, uint32_t fFlags, const char *pszGroupSettings, + const char *pszEnvVarBase, unsigned cGroups, const char * const * papszGroups, + uint32_t fDestFlags, PFNRTLOGPHASE pfnPhase, uint32_t cHistory, + uint64_t cbHistoryFileMax, uint32_t cSecsHistoryTimeSlot, + char *pszErrorMsg, size_t cchErrorMsg, const char *pszFilenameFmt, ...) +{ + va_list args; + int rc; + + va_start(args, pszFilenameFmt); + rc = RTLogCreateExV(ppLogger, fFlags, pszGroupSettings, pszEnvVarBase, cGroups, papszGroups, + fDestFlags, pfnPhase, cHistory, cbHistoryFileMax, cSecsHistoryTimeSlot, + pszErrorMsg, cchErrorMsg, pszFilenameFmt, args); + va_end(args); + return rc; +} +RT_EXPORT_SYMBOL(RTLogCreateEx); + + +/** + * Destroys a logger instance. + * + * The instance is flushed and all output destinations closed (where applicable). + * + * @returns iprt status code. + * @param pLogger The logger instance which close destroyed. NULL is fine. + */ +RTDECL(int) RTLogDestroy(PRTLOGGER pLogger) +{ + int rc; + uint32_t iGroup; + RTSEMSPINMUTEX hSpinMtx; + + /* + * Validate input. + */ + if (!pLogger) + return VINF_SUCCESS; + AssertPtrReturn(pLogger, VERR_INVALID_POINTER); + AssertReturn(pLogger->u32Magic == RTLOGGER_MAGIC, VERR_INVALID_MAGIC); + AssertPtrReturn(pLogger->pInt, VERR_INVALID_POINTER); + + /* + * Acquire logger instance sem and disable all logging. (paranoia) + */ + rc = rtlogLock(pLogger); + AssertMsgRCReturn(rc, ("%Rrc\n", rc), rc); + + pLogger->fFlags |= RTLOGFLAGS_DISABLED; + iGroup = pLogger->cGroups; + while (iGroup-- > 0) + pLogger->afGroups[iGroup] = 0; + + /* + * Flush it. + */ + rtlogFlush(pLogger); + +# ifdef IN_RING3 + /* + * Add end of logging message. + */ + if ( (pLogger->fDestFlags & RTLOGDEST_FILE) + && pLogger->pInt->hFile != NIL_RTFILE) + pLogger->pInt->pfnPhase(pLogger, RTLOGPHASE_END, rtlogPhaseMsgLocked); + + /* + * Close output stuffs. + */ + if (pLogger->pInt->hFile != NIL_RTFILE) + { + int rc2 = RTFileClose(pLogger->pInt->hFile); + AssertRC(rc2); + if (RT_FAILURE(rc2) && RT_SUCCESS(rc)) + rc = rc2; + pLogger->pInt->hFile = NIL_RTFILE; + } +# endif + + /* + * Free the mutex, the wrapper and the instance memory. + */ + hSpinMtx = pLogger->pInt->hSpinMtx; + pLogger->pInt->hSpinMtx = NIL_RTSEMSPINMUTEX; + if (hSpinMtx != NIL_RTSEMSPINMUTEX) + { + int rc2; + RTSemSpinMutexRelease(hSpinMtx); + rc2 = RTSemSpinMutexDestroy(hSpinMtx); + AssertRC(rc2); + if (RT_FAILURE(rc2) && RT_SUCCESS(rc)) + rc = rc2; + } + + if (pLogger->pfnLogger) + { +# if defined(LOG_USE_C99) && defined(RT_WITHOUT_EXEC_ALLOC) + RTMemFree(*(void **)&pLogger->pfnLogger); +# else + RTMemExecFree(*(void **)&pLogger->pfnLogger, 64); +# endif + pLogger->pfnLogger = NULL; + } + RTMemFree(pLogger); + + return rc; +} +RT_EXPORT_SYMBOL(RTLogDestroy); + + +/** + * Create a logger instance clone for RC usage. + * + * @returns iprt status code. + * + * @param pLogger The logger instance to be cloned. + * @param pLoggerRC Where to create the RC logger instance. + * @param cbLoggerRC Amount of memory allocated to for the RC logger + * instance clone. + * @param pfnLoggerRCPtr Pointer to logger wrapper function for this + * instance (RC Ptr). + * @param pfnFlushRCPtr Pointer to flush function (RC Ptr). + * @param fFlags Logger instance flags, a combination of the RTLOGFLAGS_* values. + */ +RTDECL(int) RTLogCloneRC(PRTLOGGER pLogger, PRTLOGGERRC pLoggerRC, size_t cbLoggerRC, + RTRCPTR pfnLoggerRCPtr, RTRCPTR pfnFlushRCPtr, uint32_t fFlags) +{ + /* + * Validate input. + */ + if ( !pLoggerRC + || !pfnFlushRCPtr + || !pfnLoggerRCPtr) + { + AssertMsgFailed(("Invalid parameters!\n")); + return VERR_INVALID_PARAMETER; + } + if (cbLoggerRC < sizeof(*pLoggerRC)) + { + AssertMsgFailed(("%d min=%d\n", cbLoggerRC, sizeof(*pLoggerRC))); + return VERR_INVALID_PARAMETER; + } + + /* + * Initialize GC instance. + */ + pLoggerRC->offScratch = 0; + pLoggerRC->fPendingPrefix = false; + pLoggerRC->pfnLogger = pfnLoggerRCPtr; + pLoggerRC->pfnFlush = pfnFlushRCPtr; + pLoggerRC->u32Magic = RTLOGGERRC_MAGIC; + pLoggerRC->fFlags = fFlags | RTLOGFLAGS_DISABLED; + pLoggerRC->cGroups = 1; + pLoggerRC->afGroups[0] = 0; + + /* + * Resolve defaults. + */ + if (!pLogger) + { + pLogger = RTLogDefaultInstance(); + if (!pLogger) + return VINF_SUCCESS; + } + + /* + * Check if there's enough space for the groups. + */ + if (cbLoggerRC < (size_t)RT_OFFSETOF(RTLOGGERRC, afGroups[pLogger->cGroups])) + { + AssertMsgFailed(("%d req=%d cGroups=%d\n", cbLoggerRC, RT_OFFSETOF(RTLOGGERRC, afGroups[pLogger->cGroups]), pLogger->cGroups)); + return VERR_BUFFER_OVERFLOW; + } + memcpy(&pLoggerRC->afGroups[0], &pLogger->afGroups[0], pLogger->cGroups * sizeof(pLoggerRC->afGroups[0])); + pLoggerRC->cGroups = pLogger->cGroups; + + /* + * Copy bits from the HC instance. + */ + pLoggerRC->fPendingPrefix = pLogger->pInt->fPendingPrefix; + pLoggerRC->fFlags |= pLogger->fFlags; + + /* + * Check if we can remove the disabled flag. + */ + if ( pLogger->fDestFlags + && !((pLogger->fFlags | fFlags) & RTLOGFLAGS_DISABLED)) + pLoggerRC->fFlags &= ~RTLOGFLAGS_DISABLED; + + return VINF_SUCCESS; +} +RT_EXPORT_SYMBOL(RTLogCloneRC); + + +/** + * Flushes a RC logger instance to a R3 logger. + * + * + * @returns iprt status code. + * @param pLogger The R3 logger instance to flush pLoggerRC to. If NULL + * the default logger is used. + * @param pLoggerRC The RC logger instance to flush. + */ +RTDECL(void) RTLogFlushRC(PRTLOGGER pLogger, PRTLOGGERRC pLoggerRC) +{ + /* + * Resolve defaults. + */ + if (!pLogger) + { + pLogger = RTLogDefaultInstance(); + if (!pLogger) + { + pLoggerRC->offScratch = 0; + return; + } + } + + /* + * Any thing to flush? + */ + if ( pLogger->offScratch + || pLoggerRC->offScratch) + { + /* + * Acquire logger instance sem. + */ + int rc = rtlogLock(pLogger); + if (RT_FAILURE(rc)) + return; + + /* + * Write whatever the GC instance contains to the HC one, and then + * flush the HC instance. + */ + if (pLoggerRC->offScratch) + { + rtLogOutput(pLogger, pLoggerRC->achScratch, pLoggerRC->offScratch); + rtLogOutput(pLogger, NULL, 0); + pLoggerRC->offScratch = 0; + } + + /* + * Release the semaphore. + */ + rtlogUnlock(pLogger); + } +} +RT_EXPORT_SYMBOL(RTLogFlushRC); + +# ifdef IN_RING3 + +RTDECL(int) RTLogCreateForR0(PRTLOGGER pLogger, size_t cbLogger, + RTR0PTR pLoggerR0Ptr, RTR0PTR pfnLoggerR0Ptr, RTR0PTR pfnFlushR0Ptr, + uint32_t fFlags, uint32_t fDestFlags) +{ + /* + * Validate input. + */ + AssertPtrReturn(pLogger, VERR_INVALID_PARAMETER); + size_t const cbRequired = sizeof(*pLogger) + RTLOGGERINTERNAL_R0_SIZE; + AssertReturn(cbLogger >= cbRequired, VERR_BUFFER_OVERFLOW); + AssertReturn(pLoggerR0Ptr != NIL_RTR0PTR, VERR_INVALID_PARAMETER); + AssertReturn(pfnLoggerR0Ptr != NIL_RTR0PTR, VERR_INVALID_PARAMETER); + + /* + * Initialize the ring-0 instance. + */ + pLogger->achScratch[0] = 0; + pLogger->offScratch = 0; + pLogger->pfnLogger = (PFNRTLOGGER)pfnLoggerR0Ptr; + pLogger->fFlags = fFlags; + pLogger->fDestFlags = fDestFlags & ~RTLOGDEST_FILE; + pLogger->pInt = NULL; + pLogger->cGroups = 1; + pLogger->afGroups[0] = 0; + + uint32_t cMaxGroups = (uint32_t)((cbLogger - cbRequired) / sizeof(pLogger->afGroups[0])); + if (fFlags & RTLOGFLAGS_RESTRICT_GROUPS) + cMaxGroups /= 2; + PRTLOGGERINTERNAL pInt; + for (;;) + { + AssertReturn(cMaxGroups > 0, VERR_BUFFER_OVERFLOW); + pInt = (PRTLOGGERINTERNAL)&pLogger->afGroups[cMaxGroups]; + if (!((uintptr_t)pInt & (sizeof(uint64_t) - 1))) + break; + cMaxGroups--; + } + pLogger->pInt = (PRTLOGGERINTERNAL)(pLoggerR0Ptr + (uintptr_t)pInt - (uintptr_t)pLogger); + pInt->uRevision = RTLOGGERINTERNAL_REV; + pInt->cbSelf = RTLOGGERINTERNAL_R0_SIZE; + pInt->hSpinMtx = NIL_RTSEMSPINMUTEX; /* Not serialized. */ + pInt->pfnFlush = (PFNRTLOGFLUSH)pfnFlushR0Ptr; + pInt->pfnPrefix = NULL; + pInt->pvPrefixUserArg = NULL; + pInt->fPendingPrefix = false; + pInt->cMaxGroups = cMaxGroups; + pInt->papszGroups = NULL; + pInt->cMaxEntriesPerGroup = UINT32_MAX; + if (fFlags & RTLOGFLAGS_RESTRICT_GROUPS) + { + memset(pInt + 1, 0, sizeof(uint32_t) * cMaxGroups); + pInt->pacEntriesPerGroup= (uint32_t *)(pLogger->pInt + 1); + } + else + pInt->pacEntriesPerGroup= NULL; + + pInt->fCreated = true; + pLogger->u32Magic = RTLOGGER_MAGIC; + return VINF_SUCCESS; +} +RT_EXPORT_SYMBOL(RTLogCreateForR0); + + +RTDECL(size_t) RTLogCalcSizeForR0(uint32_t cGroups, uint32_t fFlags) +{ + size_t cb = RT_OFFSETOF(RTLOGGER, afGroups[cGroups]); + cb = RT_ALIGN_Z(cb, sizeof(uint64_t)); + cb += sizeof(RTLOGGERINTERNAL); + if (fFlags & RTLOGFLAGS_RESTRICT_GROUPS) + cb += sizeof(uint32_t) * cGroups; + return cb; +} +RT_EXPORT_SYMBOL(RTLogCalcSizeForR0); + + +RTDECL(int) RTLogCopyGroupsAndFlagsForR0(PRTLOGGER pDstLogger, RTR0PTR pDstLoggerR0Ptr, + PCRTLOGGER pSrcLogger, uint32_t fFlagsOr, uint32_t fFlagsAnd) +{ + /* + * Validate input. + */ + AssertPtrReturn(pDstLogger, VERR_INVALID_PARAMETER); + AssertPtrNullReturn(pSrcLogger, VERR_INVALID_PARAMETER); + + /* + * Resolve defaults. + */ + if (!pSrcLogger) + { + pSrcLogger = RTLogDefaultInstance(); + if (!pSrcLogger) + { + pDstLogger->fFlags |= RTLOGFLAGS_DISABLED | fFlagsOr; + pDstLogger->cGroups = 1; + pDstLogger->afGroups[0] = 0; + return VINF_SUCCESS; + } + } + + /* + * Copy flags and group settings. + */ + pDstLogger->fFlags = (pSrcLogger->fFlags & fFlagsAnd & ~RTLOGFLAGS_RESTRICT_GROUPS) | fFlagsOr; + + PRTLOGGERINTERNAL pDstInt = (PRTLOGGERINTERNAL)((uintptr_t)pDstLogger->pInt - pDstLoggerR0Ptr + (uintptr_t)pDstLogger); + int rc = VINF_SUCCESS; + uint32_t cGroups = pSrcLogger->cGroups; + if (cGroups > pDstInt->cMaxGroups) + { + AssertMsgFailed(("cMaxGroups=%zd cGroups=%zd (min size %d)\n", pDstInt->cMaxGroups, + pSrcLogger->cGroups, RT_OFFSETOF(RTLOGGER, afGroups[pSrcLogger->cGroups]) + RTLOGGERINTERNAL_R0_SIZE)); + rc = VERR_INVALID_PARAMETER; + cGroups = pDstInt->cMaxGroups; + } + memcpy(&pDstLogger->afGroups[0], &pSrcLogger->afGroups[0], cGroups * sizeof(pDstLogger->afGroups[0])); + pDstLogger->cGroups = cGroups; + + return rc; +} +RT_EXPORT_SYMBOL(RTLogCopyGroupsAndFlagsForR0); + + +RTDECL(int) RTLogSetCustomPrefixCallbackForR0(PRTLOGGER pLogger, RTR0PTR pLoggerR0Ptr, + RTR0PTR pfnCallbackR0Ptr, RTR0PTR pvUserR0Ptr) +{ + AssertPtrReturn(pLogger, VERR_INVALID_POINTER); + AssertReturn(pLogger->u32Magic == RTLOGGER_MAGIC, VERR_INVALID_MAGIC); + + /* + * Do the work. + */ + PRTLOGGERINTERNAL pInt = (PRTLOGGERINTERNAL)((uintptr_t)pLogger->pInt - pLoggerR0Ptr + (uintptr_t)pLogger); + AssertReturn(pInt->uRevision == RTLOGGERINTERNAL_REV, VERR_LOG_REVISION_MISMATCH); + pInt->pvPrefixUserArg = (void *)pvUserR0Ptr; + pInt->pfnPrefix = (PFNRTLOGPREFIX)pfnCallbackR0Ptr; + + return VINF_SUCCESS; +} +RT_EXPORT_SYMBOL(RTLogSetCustomPrefixCallbackForR0); + +RTDECL(void) RTLogFlushR0(PRTLOGGER pLogger, PRTLOGGER pLoggerR0) +{ + /* + * Resolve defaults. + */ + if (!pLogger) + { + pLogger = RTLogDefaultInstance(); + if (!pLogger) + { + /* flushing to "/dev/null". */ + if (pLoggerR0->offScratch) + pLoggerR0->offScratch = 0; + return; + } + } + + /* + * Anything to flush? + */ + if ( pLoggerR0->offScratch + || pLogger->offScratch) + { + /* + * Acquire logger semaphores. + */ + int rc = rtlogLock(pLogger); + if (RT_FAILURE(rc)) + return; + if (RT_SUCCESS(rc)) + { + /* + * Write whatever the GC instance contains to the HC one, and then + * flush the HC instance. + */ + if (pLoggerR0->offScratch) + { + rtLogOutput(pLogger, pLoggerR0->achScratch, pLoggerR0->offScratch); + rtLogOutput(pLogger, NULL, 0); + pLoggerR0->offScratch = 0; + } + } + rtlogUnlock(pLogger); + } +} +RT_EXPORT_SYMBOL(RTLogFlushR0); + +# endif /* IN_RING3 */ + + +/** + * Flushes the buffer in one logger instance onto another logger. + * + * @returns iprt status code. + * + * @param pSrcLogger The logger instance to flush. + * @param pDstLogger The logger instance to flush onto. + * If NULL the default logger will be used. + */ +RTDECL(void) RTLogFlushToLogger(PRTLOGGER pSrcLogger, PRTLOGGER pDstLogger) +{ + /* + * Resolve defaults. + */ + if (!pDstLogger) + { + pDstLogger = RTLogDefaultInstance(); + if (!pDstLogger) + { + /* flushing to "/dev/null". */ + if (pSrcLogger->offScratch) + { + int rc = rtlogLock(pSrcLogger); + if (RT_SUCCESS(rc)) + { + pSrcLogger->offScratch = 0; + rtlogUnlock(pSrcLogger); + } + } + return; + } + } + + /* + * Any thing to flush? + */ + if ( pSrcLogger->offScratch + || pDstLogger->offScratch) + { + /* + * Acquire logger semaphores. + */ + int rc = rtlogLock(pDstLogger); + if (RT_FAILURE(rc)) + return; + rc = rtlogLock(pSrcLogger); + if (RT_SUCCESS(rc)) + { + /* + * Write whatever the GC instance contains to the HC one, and then + * flush the HC instance. + */ + if (pSrcLogger->offScratch) + { + rtLogOutput(pDstLogger, pSrcLogger->achScratch, pSrcLogger->offScratch); + rtLogOutput(pDstLogger, NULL, 0); + pSrcLogger->offScratch = 0; + } + + /* + * Release the semaphores. + */ + rtlogUnlock(pSrcLogger); + } + rtlogUnlock(pDstLogger); + } +} +RT_EXPORT_SYMBOL(RTLogFlushToLogger); + + +/** + * Sets the custom prefix callback. + * + * @returns IPRT status code. + * @param pLogger The logger instance. + * @param pfnCallback The callback. + * @param pvUser The user argument for the callback. + * */ +RTDECL(int) RTLogSetCustomPrefixCallback(PRTLOGGER pLogger, PFNRTLOGPREFIX pfnCallback, void *pvUser) +{ + /* + * Resolve defaults. + */ + if (!pLogger) + { + pLogger = RTLogDefaultInstance(); + if (!pLogger) + return VINF_SUCCESS; + } + AssertReturn(pLogger->u32Magic == RTLOGGER_MAGIC, VERR_INVALID_MAGIC); + + /* + * Do the work. + */ + rtlogLock(pLogger); + pLogger->pInt->pvPrefixUserArg = pvUser; + pLogger->pInt->pfnPrefix = pfnCallback; + rtlogUnlock(pLogger); + + return VINF_SUCCESS; +} +RT_EXPORT_SYMBOL(RTLogSetCustomPrefixCallback); + + +/** + * Matches a group name with a pattern mask in an case insensitive manner (ASCII). + * + * @returns true if matching and *ppachMask set to the end of the pattern. + * @returns false if no match. + * @param pszGrp The group name. + * @param ppachMask Pointer to the pointer to the mask. Only wildcard supported is '*'. + * @param cchMask The length of the mask, including modifiers. The modifiers is why + * we update *ppachMask on match. + */ +static bool rtlogIsGroupMatching(const char *pszGrp, const char **ppachMask, size_t cchMask) +{ + const char *pachMask; + + if (!pszGrp || !*pszGrp) + return false; + pachMask = *ppachMask; + for (;;) + { + if (RT_C_TO_LOWER(*pszGrp) != RT_C_TO_LOWER(*pachMask)) + { + const char *pszTmp; + + /* + * Check for wildcard and do a minimal match if found. + */ + if (*pachMask != '*') + return false; + + /* eat '*'s. */ + do pachMask++; + while (--cchMask && *pachMask == '*'); + + /* is there more to match? */ + if ( !cchMask + || *pachMask == '.' + || *pachMask == '=') + break; /* we're good */ + + /* do extremely minimal matching (fixme) */ + pszTmp = strchr(pszGrp, RT_C_TO_LOWER(*pachMask)); + if (!pszTmp) + pszTmp = strchr(pszGrp, RT_C_TO_UPPER(*pachMask)); + if (!pszTmp) + return false; + pszGrp = pszTmp; + continue; + } + + /* done? */ + if (!*++pszGrp) + { + /* trailing wildcard is ok. */ + do + { + pachMask++; + cchMask--; + } while (cchMask && *pachMask == '*'); + if ( !cchMask + || *pachMask == '.' + || *pachMask == '=') + break; /* we're good */ + return false; + } + + if (!--cchMask) + return false; + pachMask++; + } + + /* match */ + *ppachMask = pachMask; + return true; +} + + +/** + * Updates the group settings for the logger instance using the specified + * specification string. + * + * @returns iprt status code. + * Failures can safely be ignored. + * @param pLogger Logger instance. + * @param pszValue Value to parse. + */ +RTDECL(int) RTLogGroupSettings(PRTLOGGER pLogger, const char *pszValue) +{ + /* + * Resolve defaults. + */ + if (!pLogger) + { + pLogger = RTLogDefaultInstance(); + if (!pLogger) + return VINF_SUCCESS; + } + + /* + * Iterate the string. + */ + while (*pszValue) + { + /* + * Skip prefixes (blanks, ;, + and -). + */ + bool fEnabled = true; + char ch; + const char *pszStart; + unsigned i; + size_t cch; + + while ((ch = *pszValue) == '+' || ch == '-' || ch == ' ' || ch == '\t' || ch == '\n' || ch == ';') + { + if (ch == '+' || ch == '-' || ch == ';') + fEnabled = ch != '-'; + pszValue++; + } + if (!*pszValue) + break; + + /* + * Find end. + */ + pszStart = pszValue; + while ((ch = *pszValue) != '\0' && ch != '+' && ch != '-' && ch != ' ' && ch != '\t') + pszValue++; + + /* + * Find the group (ascii case insensitive search). + * Special group 'all'. + */ + cch = pszValue - pszStart; + if ( cch >= 3 + && (pszStart[0] == 'a' || pszStart[0] == 'A') + && (pszStart[1] == 'l' || pszStart[1] == 'L') + && (pszStart[2] == 'l' || pszStart[2] == 'L') + && (cch == 3 || pszStart[3] == '.' || pszStart[3] == '=')) + { + /* + * All. + */ + unsigned fFlags = cch == 3 + ? RTLOGGRPFLAGS_ENABLED | RTLOGGRPFLAGS_LEVEL_1 + : rtlogGroupFlags(&pszStart[3]); + for (i = 0; i < pLogger->cGroups; i++) + { + if (fEnabled) + pLogger->afGroups[i] |= fFlags; + else + pLogger->afGroups[i] &= ~fFlags; + } + } + else + { + /* + * Specific group(s). + */ + for (i = 0; i < pLogger->cGroups; i++) + { + const char *psz2 = (const char*)pszStart; + if (rtlogIsGroupMatching(pLogger->pInt->papszGroups[i], &psz2, cch)) + { + unsigned fFlags = RTLOGGRPFLAGS_ENABLED | RTLOGGRPFLAGS_LEVEL_1; + if (*psz2 == '.' || *psz2 == '=') + fFlags = rtlogGroupFlags(psz2); + if (fEnabled) + pLogger->afGroups[i] |= fFlags; + else + pLogger->afGroups[i] &= ~fFlags; + } + } /* for each group */ + } + + } /* parse specification */ + + return VINF_SUCCESS; +} +RT_EXPORT_SYMBOL(RTLogGroupSettings); + + +/** + * Interprets the group flags suffix. + * + * @returns Flags specified. (0 is possible!) + * @param psz Start of Suffix. (Either dot or equal sign.) + */ +static unsigned rtlogGroupFlags(const char *psz) +{ + unsigned fFlags = 0; + + /* + * Literal flags. + */ + while (*psz == '.') + { + static struct + { + const char *pszFlag; /* lowercase!! */ + unsigned fFlag; + } aFlags[] = + { + { "eo", RTLOGGRPFLAGS_ENABLED }, + { "enabledonly",RTLOGGRPFLAGS_ENABLED }, + { "e", RTLOGGRPFLAGS_ENABLED | RTLOGGRPFLAGS_LEVEL_1 | RTLOGGRPFLAGS_WARN }, + { "enabled", RTLOGGRPFLAGS_ENABLED | RTLOGGRPFLAGS_LEVEL_1 | RTLOGGRPFLAGS_WARN }, + { "l1", RTLOGGRPFLAGS_LEVEL_1 }, + { "level1", RTLOGGRPFLAGS_LEVEL_1 }, + { "l", RTLOGGRPFLAGS_LEVEL_2 }, + { "l2", RTLOGGRPFLAGS_LEVEL_2 }, + { "level2", RTLOGGRPFLAGS_LEVEL_2 }, + { "l3", RTLOGGRPFLAGS_LEVEL_3 }, + { "level3", RTLOGGRPFLAGS_LEVEL_3 }, + { "l4", RTLOGGRPFLAGS_LEVEL_4 }, + { "level4", RTLOGGRPFLAGS_LEVEL_4 }, + { "l5", RTLOGGRPFLAGS_LEVEL_5 }, + { "level5", RTLOGGRPFLAGS_LEVEL_5 }, + { "l6", RTLOGGRPFLAGS_LEVEL_6 }, + { "level6", RTLOGGRPFLAGS_LEVEL_6 }, + { "l7", RTLOGGRPFLAGS_LEVEL_7 }, + { "level7", RTLOGGRPFLAGS_LEVEL_7 }, + { "l8", RTLOGGRPFLAGS_LEVEL_8 }, + { "level8", RTLOGGRPFLAGS_LEVEL_8 }, + { "l9", RTLOGGRPFLAGS_LEVEL_9 }, + { "level9", RTLOGGRPFLAGS_LEVEL_9 }, + { "l10", RTLOGGRPFLAGS_LEVEL_10 }, + { "level10", RTLOGGRPFLAGS_LEVEL_10 }, + { "l11", RTLOGGRPFLAGS_LEVEL_11 }, + { "level11", RTLOGGRPFLAGS_LEVEL_11 }, + { "l12", RTLOGGRPFLAGS_LEVEL_12 }, + { "level12", RTLOGGRPFLAGS_LEVEL_12 }, + { "f", RTLOGGRPFLAGS_FLOW }, + { "flow", RTLOGGRPFLAGS_FLOW }, + { "w", RTLOGGRPFLAGS_WARN }, + { "warn", RTLOGGRPFLAGS_WARN }, + { "warning", RTLOGGRPFLAGS_WARN }, + { "restrict", RTLOGGRPFLAGS_RESTRICT }, + + }; + unsigned i; + bool fFound = false; + psz++; + for (i = 0; i < RT_ELEMENTS(aFlags) && !fFound; i++) + { + const char *psz1 = aFlags[i].pszFlag; + const char *psz2 = psz; + while (*psz1 == RT_C_TO_LOWER(*psz2)) + { + psz1++; + psz2++; + if (!*psz1) + { + if ( (*psz2 >= 'a' && *psz2 <= 'z') + || (*psz2 >= 'A' && *psz2 <= 'Z') + || (*psz2 >= '0' && *psz2 <= '9') ) + break; + fFlags |= aFlags[i].fFlag; + fFound = true; + psz = psz2; + break; + } + } /* strincmp */ + } /* for each flags */ + AssertMsg(fFound, ("%.15s...", psz)); + } + + /* + * Flag value. + */ + if (*psz == '=') + { + psz++; + if (*psz == '~') + fFlags = ~RTStrToInt32(psz + 1); + else + fFlags = RTStrToInt32(psz); + } + + return fFlags; +} + +/** + * Helper for RTLogGetGroupSettings. + */ +static int rtLogGetGroupSettingsAddOne(const char *pszName, uint32_t fGroup, char **ppszBuf, size_t *pcchBuf, bool *pfNotFirst) +{ +# define APPEND_PSZ(psz,cch) do { memcpy(*ppszBuf, (psz), (cch)); *ppszBuf += (cch); *pcchBuf -= (cch); } while (0) +# define APPEND_SZ(sz) APPEND_PSZ(sz, sizeof(sz) - 1) +# define APPEND_CH(ch) do { **ppszBuf = (ch); *ppszBuf += 1; *pcchBuf -= 1; } while (0) + + /* + * Add the name. + */ + size_t cchName = strlen(pszName); + if (cchName + 1 + *pfNotFirst > *pcchBuf) + return VERR_BUFFER_OVERFLOW; + if (*pfNotFirst) + APPEND_CH(' '); + else + *pfNotFirst = true; + APPEND_PSZ(pszName, cchName); + + /* + * Only generate mnemonics for the simple+common bits. + */ + if (fGroup == (RTLOGGRPFLAGS_ENABLED | RTLOGGRPFLAGS_LEVEL_1)) + /* nothing */; + else if ( fGroup == (RTLOGGRPFLAGS_ENABLED | RTLOGGRPFLAGS_LEVEL_1 | RTLOGGRPFLAGS_LEVEL_2 | RTLOGGRPFLAGS_FLOW) + && *pcchBuf >= sizeof(".e.l.f")) + APPEND_SZ(".e.l.f"); + else if ( fGroup == (RTLOGGRPFLAGS_ENABLED | RTLOGGRPFLAGS_LEVEL_1 | RTLOGGRPFLAGS_FLOW) + && *pcchBuf >= sizeof(".e.f")) + APPEND_SZ(".e.f"); + else if (*pcchBuf >= 1 + 10 + 1) + { + size_t cch; + APPEND_CH('='); + cch = RTStrFormatNumber(*ppszBuf, fGroup, 16, 0, 0, RTSTR_F_SPECIAL | RTSTR_F_32BIT); + *ppszBuf += cch; + *pcchBuf -= cch; + } + else + return VERR_BUFFER_OVERFLOW; + +# undef APPEND_PSZ +# undef APPEND_SZ +# undef APPEND_CH + return VINF_SUCCESS; +} + + +/** + * Get the current log group settings as a string. + * + * @returns VINF_SUCCESS or VERR_BUFFER_OVERFLOW. + * @param pLogger Logger instance (NULL for default logger). + * @param pszBuf The output buffer. + * @param cchBuf The size of the output buffer. Must be greater + * than zero. + */ +RTDECL(int) RTLogGetGroupSettings(PRTLOGGER pLogger, char *pszBuf, size_t cchBuf) +{ + bool fNotFirst = false; + int rc = VINF_SUCCESS; + uint32_t cGroups; + uint32_t fGroup; + uint32_t i; + + Assert(cchBuf); + + /* + * Resolve defaults. + */ + if (!pLogger) + { + pLogger = RTLogDefaultInstance(); + if (!pLogger) + { + *pszBuf = '\0'; + return VINF_SUCCESS; + } + } + + cGroups = pLogger->cGroups; + + /* + * Check if all are the same. + */ + fGroup = pLogger->afGroups[0]; + for (i = 1; i < cGroups; i++) + if (pLogger->afGroups[i] != fGroup) + break; + if (i >= cGroups) + rc = rtLogGetGroupSettingsAddOne("all", fGroup, &pszBuf, &cchBuf, &fNotFirst); + else + { + + /* + * Iterate all the groups and print all that are enabled. + */ + for (i = 0; i < cGroups; i++) + { + fGroup = pLogger->afGroups[i]; + if (fGroup) + { + const char *pszName = pLogger->pInt->papszGroups[i]; + if (pszName) + { + rc = rtLogGetGroupSettingsAddOne(pszName, fGroup, &pszBuf, &cchBuf, &fNotFirst); + if (rc) + break; + } + } + } + } + + *pszBuf = '\0'; + return rc; +} +RT_EXPORT_SYMBOL(RTLogGetGroupSettings); + +#endif /* !IN_RC */ + +/** + * Updates the flags for the logger instance using the specified + * specification string. + * + * @returns iprt status code. + * Failures can safely be ignored. + * @param pLogger Logger instance (NULL for default logger). + * @param pszValue Value to parse. + */ +RTDECL(int) RTLogFlags(PRTLOGGER pLogger, const char *pszValue) +{ + int rc = VINF_SUCCESS; + + /* + * Resolve defaults. + */ + if (!pLogger) + { + pLogger = RTLogDefaultInstance(); + if (!pLogger) + return VINF_SUCCESS; + } + + /* + * Iterate the string. + */ + while (*pszValue) + { + /* check no prefix. */ + bool fNo = false; + char ch; + unsigned i; + + /* skip blanks. */ + while (RT_C_IS_SPACE(*pszValue)) + pszValue++; + if (!*pszValue) + return rc; + + while ((ch = *pszValue) != '\0') + { + if (ch == 'n' && pszValue[1] == 'o') + { + pszValue += 2; + fNo = !fNo; + } + else if (ch == '+') + { + pszValue++; + fNo = true; + } + else if (ch == '-' || ch == '!' || ch == '~') + { + pszValue++; + fNo = !fNo; + } + else + break; + } + + /* instruction. */ + for (i = 0; i < RT_ELEMENTS(g_aLogFlags); i++) + { + if (!strncmp(pszValue, g_aLogFlags[i].pszInstr, g_aLogFlags[i].cchInstr)) + { + if (fNo == g_aLogFlags[i].fInverted) + pLogger->fFlags |= g_aLogFlags[i].fFlag; + else + pLogger->fFlags &= ~g_aLogFlags[i].fFlag; + pszValue += g_aLogFlags[i].cchInstr; + break; + } + } + + /* unknown instruction? */ + if (i >= RT_ELEMENTS(g_aLogFlags)) + { + AssertMsgFailed(("Invalid flags! unknown instruction %.20s\n", pszValue)); + pszValue++; + } + + /* skip blanks and delimiters. */ + while (RT_C_IS_SPACE(*pszValue) || *pszValue == ';') + pszValue++; + } /* while more environment variable value left */ + + return rc; +} +RT_EXPORT_SYMBOL(RTLogFlags); + + +/** + * Changes the buffering setting of the specified logger. + * + * This can be used for optimizing longish logging sequences. + * + * @returns The old state. + * @param pLogger The logger instance (NULL is an alias for the + * default logger). + * @param fBuffered The new state. + */ +RTDECL(bool) RTLogSetBuffering(PRTLOGGER pLogger, bool fBuffered) +{ + bool fOld; + + /* + * Resolve the logger instance. + */ + if (!pLogger) + { + pLogger = RTLogDefaultInstance(); + if (!pLogger) + return false; + } + + rtlogLock(pLogger); + fOld = !!(pLogger->fFlags & RTLOGFLAGS_BUFFERED); + if (fBuffered) + pLogger->fFlags |= RTLOGFLAGS_BUFFERED; + else + pLogger->fFlags &= ~RTLOGFLAGS_BUFFERED; + rtlogUnlock(pLogger); + + return fOld; +} +RT_EXPORT_SYMBOL(RTLogSetBuffering); + + +#ifdef IN_RING3 +RTDECL(uint32_t) RTLogSetGroupLimit(PRTLOGGER pLogger, uint32_t cMaxEntriesPerGroup) +{ + /* + * Resolve the logger instance. + */ + if (!pLogger) + { + pLogger = RTLogDefaultInstance(); + if (!pLogger) + return UINT32_MAX; + } + + rtlogLock(pLogger); + uint32_t cOld = pLogger->pInt->cMaxEntriesPerGroup; + pLogger->pInt->cMaxEntriesPerGroup = cMaxEntriesPerGroup; + rtlogUnlock(pLogger); + + return cOld; +} +#endif + +#ifndef IN_RC + +/** + * Get the current log flags as a string. + * + * @returns VINF_SUCCESS or VERR_BUFFER_OVERFLOW. + * @param pLogger Logger instance (NULL for default logger). + * @param pszBuf The output buffer. + * @param cchBuf The size of the output buffer. Must be greater + * than zero. + */ +RTDECL(int) RTLogGetFlags(PRTLOGGER pLogger, char *pszBuf, size_t cchBuf) +{ + bool fNotFirst = false; + int rc = VINF_SUCCESS; + uint32_t fFlags; + unsigned i; + + Assert(cchBuf); + + /* + * Resolve defaults. + */ + if (!pLogger) + { + pLogger = RTLogDefaultInstance(); + if (!pLogger) + { + *pszBuf = '\0'; + return VINF_SUCCESS; + } + } + + /* + * Add the flags in the list. + */ + fFlags = pLogger->fFlags; + for (i = 0; i < RT_ELEMENTS(g_aLogFlags); i++) + if ( !g_aLogFlags[i].fInverted + ? (g_aLogFlags[i].fFlag & fFlags) + : !(g_aLogFlags[i].fFlag & fFlags)) + { + size_t cchInstr = g_aLogFlags[i].cchInstr; + if (cchInstr + fNotFirst + 1 > cchBuf) + { + rc = VERR_BUFFER_OVERFLOW; + break; + } + if (fNotFirst) + { + *pszBuf++ = ' '; + cchBuf--; + } + memcpy(pszBuf, g_aLogFlags[i].pszInstr, cchInstr); + pszBuf += cchInstr; + cchBuf -= cchInstr; + fNotFirst = true; + } + *pszBuf = '\0'; + return rc; +} +RT_EXPORT_SYMBOL(RTLogGetFlags); + + +/** + * Updates the logger destination using the specified string. + * + * @returns VINF_SUCCESS or VERR_BUFFER_OVERFLOW. + * @param pLogger Logger instance (NULL for default logger). + * @param pszValue The value to parse. + */ +RTDECL(int) RTLogDestinations(PRTLOGGER pLogger, char const *pszValue) +{ + /* + * Resolve defaults. + */ + if (!pLogger) + { + pLogger = RTLogDefaultInstance(); + if (!pLogger) + return VINF_SUCCESS; + } + + /* + * Do the parsing. + */ + while (*pszValue) + { + bool fNo; + unsigned i; + + /* skip blanks. */ + while (RT_C_IS_SPACE(*pszValue)) + pszValue++; + if (!*pszValue) + break; + + /* check no prefix. */ + fNo = false; + if (pszValue[0] == 'n' && pszValue[1] == 'o') + { + fNo = true; + pszValue += 2; + } + + /* instruction. */ + for (i = 0; i < RT_ELEMENTS(s_aLogDst); i++) + { + size_t cchInstr = strlen(s_aLogDst[i].pszInstr); + if (!strncmp(pszValue, s_aLogDst[i].pszInstr, cchInstr)) + { + if (!fNo) + pLogger->fDestFlags |= s_aLogDst[i].fFlag; + else + pLogger->fDestFlags &= ~s_aLogDst[i].fFlag; + pszValue += cchInstr; + + /* check for value. */ + while (RT_C_IS_SPACE(*pszValue)) + pszValue++; + if (*pszValue == '=' || *pszValue == ':') + { + const char *pszEnd; + + pszValue++; + pszEnd = strchr(pszValue, ';'); + if (!pszEnd) + pszEnd = strchr(pszValue, '\0'); + size_t cch = pszEnd - pszValue; +# ifdef IN_RING3 + char szTmp[sizeof(pLogger->pInt->szFilename)]; +# else + char szTmp[32]; +# endif + if (0) + { /* nothing */ } +#ifdef IN_RING3 + + /* log file name */ + else if (i == 0 /* file */ && !fNo) + { + AssertReturn(cch < sizeof(pLogger->pInt->szFilename), VERR_OUT_OF_RANGE); + memcpy(pLogger->pInt->szFilename, pszValue, cch); + pLogger->pInt->szFilename[cch] = '\0'; + /** @todo reopen log file if pLogger->pInt->fCreated is true ... */ + } + /* log directory */ + else if (i == 1 /* dir */ && !fNo) + { + const char *pszFile = RTPathFilename(pLogger->pInt->szFilename); + size_t cchFile = pszFile ? strlen(pszFile) : 0; + AssertReturn(cchFile + cch + 1 < sizeof(pLogger->pInt->szFilename), VERR_OUT_OF_RANGE); + memcpy(szTmp, cchFile ? pszFile : "", cchFile + 1); + + memcpy(pLogger->pInt->szFilename, pszValue, cch); + pLogger->pInt->szFilename[cch] = '\0'; + RTPathStripTrailingSlash(pLogger->pInt->szFilename); + + cch = strlen(pLogger->pInt->szFilename); + pLogger->pInt->szFilename[cch++] = '/'; + memcpy(&pLogger->pInt->szFilename[cch], szTmp, cchFile); + pLogger->pInt->szFilename[cch + cchFile] = '\0'; + /** @todo reopen log file if pLogger->pInt->fCreated is true ... */ + } + else if (i == 2 /* history */) + { + if (!fNo) + { + uint32_t cHistory = 0; + int rc = RTStrCopyEx(szTmp, sizeof(szTmp), pszValue, cch); + if (RT_SUCCESS(rc)) + rc = RTStrToUInt32Full(szTmp, 0, &cHistory); + AssertMsgReturn(RT_SUCCESS(rc) && cHistory < _1M, ("Invalid history value %s (%Rrc)!\n", szTmp, rc), rc); + pLogger->pInt->cHistory = cHistory; + } + else + pLogger->pInt->cHistory = 0; + } + else if (i == 3 /* histsize */) + { + if (!fNo) + { + int rc = RTStrCopyEx(szTmp, sizeof(szTmp), pszValue, cch); + if (RT_SUCCESS(rc)) + rc = RTStrToUInt64Full(szTmp, 0, &pLogger->pInt->cbHistoryFileMax); + AssertMsgRCReturn(rc, ("Invalid history file size value %s (%Rrc)!\n", szTmp, rc), rc); + if (pLogger->pInt->cbHistoryFileMax == 0) + pLogger->pInt->cbHistoryFileMax = UINT64_MAX; + } + else + pLogger->pInt->cbHistoryFileMax = UINT64_MAX; + } + else if (i == 4 /* histtime */) + { + if (!fNo) + { + int rc = RTStrCopyEx(szTmp, sizeof(szTmp), pszValue, cch); + if (RT_SUCCESS(rc)) + rc = RTStrToUInt32Full(szTmp, 0, &pLogger->pInt->cSecsHistoryTimeSlot); + AssertMsgRCReturn(rc, ("Invalid history time slot value %s (%Rrc)!\n", szTmp, rc), rc); + if (pLogger->pInt->cSecsHistoryTimeSlot == 0) + pLogger->pInt->cSecsHistoryTimeSlot = UINT32_MAX; + } + else + pLogger->pInt->cSecsHistoryTimeSlot = UINT32_MAX; + } +# endif /* IN_RING3 */ + else if (i == 5 /* ringbuf */ && !fNo) + { + int rc = RTStrCopyEx(szTmp, sizeof(szTmp), pszValue, cch); + uint32_t cbRingBuf; + if (RT_SUCCESS(rc)) + rc = RTStrToUInt32Full(szTmp, 0, &cbRingBuf); + AssertMsgRCReturn(rc, ("Invalid ring buffer size value '%s' (%Rrc)!\n", szTmp, rc), rc); + + if (cbRingBuf == 0) + cbRingBuf = RTLOG_RINGBUF_DEFAULT_SIZE; + else if (cbRingBuf < RTLOG_RINGBUF_MIN_SIZE) + cbRingBuf = RTLOG_RINGBUF_MIN_SIZE; + else if (cbRingBuf > RTLOG_RINGBUF_MAX_SIZE) + cbRingBuf = RTLOG_RINGBUF_MAX_SIZE; + else + cbRingBuf = RT_ALIGN_32(cbRingBuf, 64); + rc = rtLogRingBufAdjust(pLogger, cbRingBuf, false /*fForce*/); + if (RT_FAILURE(rc)) + return rc; + } + else + AssertMsgFailedReturn(("Invalid destination value! %s%s doesn't take a value!\n", + fNo ? "no" : "", s_aLogDst[i].pszInstr), + VERR_INVALID_PARAMETER); + + pszValue = pszEnd + (*pszEnd != '\0'); + } + else if (i == 5 /* ringbuf */ && !fNo && !pLogger->pInt->pszRingBuf) + { + int rc = rtLogRingBufAdjust(pLogger, pLogger->pInt->cbRingBuf, false /*fForce*/); + if (RT_FAILURE(rc)) + return rc; + } + break; + } + } + + /* assert known instruction */ + AssertMsgReturn(i < RT_ELEMENTS(s_aLogDst), + ("Invalid destination value! unknown instruction %.20s\n", pszValue), + VERR_INVALID_PARAMETER); + + /* skip blanks and delimiters. */ + while (RT_C_IS_SPACE(*pszValue) || *pszValue == ';') + pszValue++; + } /* while more environment variable value left */ + + return VINF_SUCCESS; +} +RT_EXPORT_SYMBOL(RTLogDestinations); + + +/** + * Get the current log destinations as a string. + * + * @returns VINF_SUCCESS or VERR_BUFFER_OVERFLOW. + * @param pLogger Logger instance (NULL for default logger). + * @param pszBuf The output buffer. + * @param cchBuf The size of the output buffer. Must be greater + * than 0. + */ +RTDECL(int) RTLogGetDestinations(PRTLOGGER pLogger, char *pszBuf, size_t cchBuf) +{ + bool fNotFirst = false; + int rc = VINF_SUCCESS; + uint32_t fDestFlags; + unsigned i; + + AssertReturn(cchBuf, VERR_INVALID_PARAMETER); + *pszBuf = '\0'; + + /* + * Resolve defaults. + */ + if (!pLogger) + { + pLogger = RTLogDefaultInstance(); + if (!pLogger) + return VINF_SUCCESS; + } + + /* + * Add the flags in the list. + */ + fDestFlags = pLogger->fDestFlags; + for (i = 6; i < RT_ELEMENTS(s_aLogDst); i++) + if (s_aLogDst[i].fFlag & fDestFlags) + { + if (fNotFirst) + { + rc = RTStrCopyP(&pszBuf, &cchBuf, " "); + if (RT_FAILURE(rc)) + return rc; + } + rc = RTStrCopyP(&pszBuf, &cchBuf, s_aLogDst[i].pszInstr); + if (RT_FAILURE(rc)) + return rc; + fNotFirst = true; + } + + char szNum[32]; + +# ifdef IN_RING3 + /* + * Add the filename. + */ + if (fDestFlags & RTLOGDEST_FILE) + { + rc = RTStrCopyP(&pszBuf, &cchBuf, fNotFirst ? " file=" : "file="); + if (RT_FAILURE(rc)) + return rc; + rc = RTStrCopyP(&pszBuf, &cchBuf, pLogger->pInt->szFilename); + if (RT_FAILURE(rc)) + return rc; + fNotFirst = true; + + if (pLogger->pInt->cHistory) + { + RTStrPrintf(szNum, sizeof(szNum), fNotFirst ? " history=%u" : "history=%u", pLogger->pInt->cHistory); + rc = RTStrCopyP(&pszBuf, &cchBuf, szNum); + if (RT_FAILURE(rc)) + return rc; + fNotFirst = true; + } + if (pLogger->pInt->cbHistoryFileMax != UINT64_MAX) + { + RTStrPrintf(szNum, sizeof(szNum), fNotFirst ? " histsize=%llu" : "histsize=%llu", pLogger->pInt->cbHistoryFileMax); + rc = RTStrCopyP(&pszBuf, &cchBuf, szNum); + if (RT_FAILURE(rc)) + return rc; + fNotFirst = true; + } + if (pLogger->pInt->cSecsHistoryTimeSlot != UINT32_MAX) + { + RTStrPrintf(szNum, sizeof(szNum), fNotFirst ? " histtime=%llu" : "histtime=%llu", pLogger->pInt->cSecsHistoryTimeSlot); + rc = RTStrCopyP(&pszBuf, &cchBuf, szNum); + if (RT_FAILURE(rc)) + return rc; + fNotFirst = true; + } + } +# endif /* IN_RING3 */ + + /* + * Add the ring buffer. + */ + if (fDestFlags & RTLOGDEST_RINGBUF) + { + if (pLogger->pInt->cbRingBuf == RTLOG_RINGBUF_DEFAULT_SIZE) + rc = RTStrCopyP(&pszBuf, &cchBuf, fNotFirst ? " ringbuf" : "ringbuf"); + else + { + RTStrPrintf(szNum, sizeof(szNum), fNotFirst ? " ringbuf=%#x" : "ringbuf=%#x", pLogger->pInt->cbRingBuf); + rc = RTStrCopyP(&pszBuf, &cchBuf, szNum); + } + if (RT_FAILURE(rc)) + return rc; + fNotFirst = true; + } + + return VINF_SUCCESS; +} +RT_EXPORT_SYMBOL(RTLogGetDestinations); + +#endif /* !IN_RC */ + +/** + * Flushes the specified logger. + * + * @param pLogger The logger instance to flush. + * If NULL the default instance is used. The default instance + * will not be initialized by this call. + */ +RTDECL(void) RTLogFlush(PRTLOGGER pLogger) +{ + /* + * Resolve defaults. + */ + if (!pLogger) + { +#ifdef IN_RC + pLogger = &g_Logger; +#else + pLogger = g_pLogger; +#endif + if (!pLogger) + return; + } + + /* + * Any thing to flush? + */ + if ( pLogger->offScratch +#ifndef IN_RC + || (pLogger->fDestFlags & RTLOGDEST_RINGBUF) +#endif + ) + { +#ifndef IN_RC + /* + * Acquire logger instance sem. + */ + int rc = rtlogLock(pLogger); + if (RT_FAILURE(rc)) + return; +#endif + /* + * Call worker. + */ + rtlogFlush(pLogger); + +#ifndef IN_RC + /* + * Since this is an explicit flush call, the ring buffer content should + * be flushed to the other destinations if active. + */ + if ( (pLogger->fDestFlags & RTLOGDEST_RINGBUF) + && pLogger->pInt->pszRingBuf /* paranoia */) + rtLogRingBufFlush(pLogger); + + /* + * Release the semaphore. + */ + rtlogUnlock(pLogger); +#endif + } +} +RT_EXPORT_SYMBOL(RTLogFlush); + + +/** + * Common worker for RTLogDefaultInstance and RTLogDefaultInstanceEx. + */ +DECL_FORCE_INLINE(PRTLOGGER) rtLogDefaultInstanceCommon(void) +{ +#ifdef IN_RC + return &g_Logger; + +#else /* !IN_RC */ +# ifdef IN_RING0 + /* + * Check per thread loggers first. + */ + if (g_cPerThreadLoggers) + { + const RTNATIVETHREAD Self = RTThreadNativeSelf(); + int32_t i = RT_ELEMENTS(g_aPerThreadLoggers); + while (i-- > 0) + if (g_aPerThreadLoggers[i].NativeThread == Self) + return g_aPerThreadLoggers[i].pLogger; + } +# endif /* IN_RING0 */ + + /* + * If no per thread logger, use the default one. + */ + if (!g_pLogger) + g_pLogger = RTLogDefaultInit(); + return g_pLogger; +#endif /* !IN_RC */ +} + + +RTDECL(PRTLOGGER) RTLogDefaultInstance(void) +{ + return rtLogDefaultInstanceCommon(); +} +RT_EXPORT_SYMBOL(RTLogDefaultInstance); + + +RTDECL(PRTLOGGER) RTLogDefaultInstanceEx(uint32_t fFlagsAndGroup) +{ + PRTLOGGER pLogger = rtLogDefaultInstanceCommon(); + if (pLogger) + { + if (pLogger->fFlags & RTLOGFLAGS_DISABLED) + pLogger = NULL; + else + { + uint16_t const fFlags = RT_LO_U16(fFlagsAndGroup); + uint16_t const iGroup = RT_HI_U16(fFlagsAndGroup); + if ( iGroup != UINT16_MAX + && ( (pLogger->afGroups[iGroup < pLogger->cGroups ? iGroup : 0] & (fFlags | RTLOGGRPFLAGS_ENABLED)) + != (fFlags | RTLOGGRPFLAGS_ENABLED))) + pLogger = NULL; + } + } + return pLogger; +} +RT_EXPORT_SYMBOL(RTLogDefaultInstanceEx); + + +/** + * Common worker for RTLogGetDefaultInstance and RTLogGetDefaultInstanceEx. + */ +DECL_FORCE_INLINE(PRTLOGGER) rtLogGetDefaultInstanceCommon(void) +{ +#ifdef IN_RC + return &g_Logger; +#else +# ifdef IN_RING0 + /* + * Check per thread loggers first. + */ + if (g_cPerThreadLoggers) + { + const RTNATIVETHREAD Self = RTThreadNativeSelf(); + int32_t i = RT_ELEMENTS(g_aPerThreadLoggers); + while (i-- > 0) + if (g_aPerThreadLoggers[i].NativeThread == Self) + return g_aPerThreadLoggers[i].pLogger; + } +# endif /* IN_RING0 */ + + return g_pLogger; +#endif +} + + +RTDECL(PRTLOGGER) RTLogGetDefaultInstance(void) +{ + return rtLogGetDefaultInstanceCommon(); +} +RT_EXPORT_SYMBOL(RTLogGetDefaultInstance); + + +RTDECL(PRTLOGGER) RTLogGetDefaultInstanceEx(uint32_t fFlagsAndGroup) +{ + PRTLOGGER pLogger = rtLogGetDefaultInstanceCommon(); + if (pLogger) + { + if (pLogger->fFlags & RTLOGFLAGS_DISABLED) + pLogger = NULL; + else + { + uint32_t const fFlags = RT_LO_U16(fFlagsAndGroup); + uint16_t const iGroup = RT_HI_U16(fFlagsAndGroup); + if ( iGroup != UINT16_MAX + && ( (pLogger->afGroups[iGroup < pLogger->cGroups ? iGroup : 0] & (fFlags | RTLOGGRPFLAGS_ENABLED)) + != (fFlags | RTLOGGRPFLAGS_ENABLED))) + pLogger = NULL; + } + } + return pLogger; +} +RT_EXPORT_SYMBOL(RTLogGetDefaultInstanceEx); + + +#ifndef IN_RC +/** + * Sets the default logger instance. + * + * @returns iprt status code. + * @param pLogger The new default logger instance. + */ +RTDECL(PRTLOGGER) RTLogSetDefaultInstance(PRTLOGGER pLogger) +{ + return ASMAtomicXchgPtrT(&g_pLogger, pLogger, PRTLOGGER); +} +RT_EXPORT_SYMBOL(RTLogSetDefaultInstance); +#endif /* !IN_RC */ + + +#ifdef IN_RING0 +/** + * Changes the default logger instance for the current thread. + * + * @returns IPRT status code. + * @param pLogger The logger instance. Pass NULL for deregistration. + * @param uKey Associated key for cleanup purposes. If pLogger is NULL, + * all instances with this key will be deregistered. So in + * order to only deregister the instance associated with the + * current thread use 0. + */ +RTDECL(int) RTLogSetDefaultInstanceThread(PRTLOGGER pLogger, uintptr_t uKey) +{ + int rc; + RTNATIVETHREAD Self = RTThreadNativeSelf(); + if (pLogger) + { + int32_t i; + unsigned j; + + AssertReturn(pLogger->u32Magic == RTLOGGER_MAGIC, VERR_INVALID_MAGIC); + + /* + * Iterate the table to see if there is already an entry for this thread. + */ + i = RT_ELEMENTS(g_aPerThreadLoggers); + while (i-- > 0) + if (g_aPerThreadLoggers[i].NativeThread == Self) + { + ASMAtomicWritePtr((void * volatile *)&g_aPerThreadLoggers[i].uKey, (void *)uKey); + g_aPerThreadLoggers[i].pLogger = pLogger; + return VINF_SUCCESS; + } + + /* + * Allocate a new table entry. + */ + i = ASMAtomicIncS32(&g_cPerThreadLoggers); + if (i > (int32_t)RT_ELEMENTS(g_aPerThreadLoggers)) + { + ASMAtomicDecS32(&g_cPerThreadLoggers); + return VERR_BUFFER_OVERFLOW; /* horrible error code! */ + } + + for (j = 0; j < 10; j++) + { + i = RT_ELEMENTS(g_aPerThreadLoggers); + while (i-- > 0) + { + AssertCompile(sizeof(RTNATIVETHREAD) == sizeof(void*)); + if ( g_aPerThreadLoggers[i].NativeThread == NIL_RTNATIVETHREAD + && ASMAtomicCmpXchgPtr((void * volatile *)&g_aPerThreadLoggers[i].NativeThread, (void *)Self, (void *)NIL_RTNATIVETHREAD)) + { + ASMAtomicWritePtr((void * volatile *)&g_aPerThreadLoggers[i].uKey, (void *)uKey); + ASMAtomicWritePtr(&g_aPerThreadLoggers[i].pLogger, pLogger); + return VINF_SUCCESS; + } + } + } + + ASMAtomicDecS32(&g_cPerThreadLoggers); + rc = VERR_INTERNAL_ERROR; + } + else + { + /* + * Search the array for the current thread. + */ + int32_t i = RT_ELEMENTS(g_aPerThreadLoggers); + while (i-- > 0) + if ( g_aPerThreadLoggers[i].NativeThread == Self + || g_aPerThreadLoggers[i].uKey == uKey) + { + ASMAtomicWriteNullPtr((void * volatile *)&g_aPerThreadLoggers[i].uKey); + ASMAtomicWriteNullPtr(&g_aPerThreadLoggers[i].pLogger); + ASMAtomicWriteHandle(&g_aPerThreadLoggers[i].NativeThread, NIL_RTNATIVETHREAD); + ASMAtomicDecS32(&g_cPerThreadLoggers); + } + + rc = VINF_SUCCESS; + } + return rc; +} +RT_EXPORT_SYMBOL(RTLogSetDefaultInstanceThread); +#endif /* IN_RING0 */ + + +/** + * Write to a logger instance. + * + * @param pLogger Pointer to logger instance. + * @param pszFormat Format string. + * @param args Format arguments. + */ +RTDECL(void) RTLogLoggerV(PRTLOGGER pLogger, const char *pszFormat, va_list args) +{ + RTLogLoggerExV(pLogger, 0, ~0U, pszFormat, args); +} +RT_EXPORT_SYMBOL(RTLogLoggerV); + + +/** + * Write to a logger instance. + * + * This function will check whether the instance, group and flags makes up a + * logging kind which is currently enabled before writing anything to the log. + * + * @param pLogger Pointer to logger instance. If NULL the default logger instance will be attempted. + * @param fFlags The logging flags. + * @param iGroup The group. + * The value ~0U is reserved for compatibility with RTLogLogger[V] and is + * only for internal usage! + * @param pszFormat Format string. + * @param args Format arguments. + */ +RTDECL(void) RTLogLoggerExV(PRTLOGGER pLogger, unsigned fFlags, unsigned iGroup, const char *pszFormat, va_list args) +{ + int rc; + + /* + * A NULL logger means default instance. + */ + if (!pLogger) + { + pLogger = RTLogDefaultInstance(); + if (!pLogger) + return; + } + + /* + * Validate and correct iGroup. + */ + if (iGroup != ~0U && iGroup >= pLogger->cGroups) + iGroup = 0; + + /* + * If no output, then just skip it. + */ + if ( (pLogger->fFlags & RTLOGFLAGS_DISABLED) +#ifndef IN_RC + || !pLogger->fDestFlags +#endif + || !pszFormat || !*pszFormat) + return; + if ( iGroup != ~0U + && (pLogger->afGroups[iGroup] & (fFlags | RTLOGGRPFLAGS_ENABLED)) != (fFlags | RTLOGGRPFLAGS_ENABLED)) + return; + + /* + * Acquire logger instance sem. + */ + rc = rtlogLock(pLogger); + if (RT_FAILURE(rc)) + { +#ifdef IN_RING0 + if (pLogger->fDestFlags & ~RTLOGDEST_FILE) + rtR0LogLoggerExFallback(pLogger->fDestFlags, pLogger->fFlags, pLogger->pInt, pszFormat, args); +#endif + return; + } + + /* + * Check restrictions and call worker. + */ +#ifndef IN_RC + if (RT_UNLIKELY( (pLogger->fFlags & RTLOGFLAGS_RESTRICT_GROUPS) + && iGroup < pLogger->cGroups + && (pLogger->afGroups[iGroup] & RTLOGGRPFLAGS_RESTRICT) + && ++pLogger->pInt->pacEntriesPerGroup[iGroup] >= pLogger->pInt->cMaxEntriesPerGroup )) + { + uint32_t cEntries = pLogger->pInt->pacEntriesPerGroup[iGroup]; + if (cEntries > pLogger->pInt->cMaxEntriesPerGroup) + pLogger->pInt->pacEntriesPerGroup[iGroup] = cEntries - 1; + else + { + rtlogLoggerExVLocked(pLogger, fFlags, iGroup, pszFormat, args); + if ( pLogger->pInt->papszGroups + && pLogger->pInt->papszGroups[iGroup]) + rtlogLoggerExFLocked(pLogger, fFlags, iGroup, "%u messages from group %s (#%u), muting it.\n", + cEntries, pLogger->pInt->papszGroups[iGroup], iGroup); + else + rtlogLoggerExFLocked(pLogger, fFlags, iGroup, "%u messages from group #%u, muting it.\n", + cEntries, iGroup); + } + } + else +#endif + rtlogLoggerExVLocked(pLogger, fFlags, iGroup, pszFormat, args); + + /* + * Release the semaphore. + */ + rtlogUnlock(pLogger); +} +RT_EXPORT_SYMBOL(RTLogLoggerExV); + + +#ifdef IN_RING0 +/** + * For rtR0LogLoggerExFallbackOutput and rtR0LogLoggerExFallbackFlush. + */ +typedef struct RTR0LOGLOGGERFALLBACK +{ + /** The current scratch buffer offset. */ + uint32_t offScratch; + /** The destination flags. */ + uint32_t fDestFlags; + /** For ring buffer output. */ + PRTLOGGERINTERNAL pInt; + /** The scratch buffer. */ + char achScratch[80]; +} RTR0LOGLOGGERFALLBACK; +/** Pointer to RTR0LOGLOGGERFALLBACK which is used by + * rtR0LogLoggerExFallbackOutput. */ +typedef RTR0LOGLOGGERFALLBACK *PRTR0LOGLOGGERFALLBACK; + + +/** + * Flushes the fallback buffer. + * + * @param pThis The scratch buffer. + */ +static void rtR0LogLoggerExFallbackFlush(PRTR0LOGLOGGERFALLBACK pThis) +{ + if (!pThis->offScratch) + return; + + if ( (pThis->fDestFlags & RTLOGDEST_RINGBUF) + && pThis->pInt + && pThis->pInt->pszRingBuf /* paranoia */) + rtLogRingBufWrite(pThis->pInt, pThis->achScratch, pThis->offScratch); + else + { + if (pThis->fDestFlags & RTLOGDEST_USER) + RTLogWriteUser(pThis->achScratch, pThis->offScratch); + + if (pThis->fDestFlags & RTLOGDEST_DEBUGGER) + RTLogWriteDebugger(pThis->achScratch, pThis->offScratch); + + if (pThis->fDestFlags & RTLOGDEST_STDOUT) + RTLogWriteStdOut(pThis->achScratch, pThis->offScratch); + + if (pThis->fDestFlags & RTLOGDEST_STDERR) + RTLogWriteStdErr(pThis->achScratch, pThis->offScratch); + +# ifndef LOG_NO_COM + if (pThis->fDestFlags & RTLOGDEST_COM) + RTLogWriteCom(pThis->achScratch, pThis->offScratch); +# endif + } + + /* empty the buffer. */ + pThis->offScratch = 0; +} + + +/** + * Callback for RTLogFormatV used by rtR0LogLoggerExFallback. + * See PFNLOGOUTPUT() for details. + */ +static DECLCALLBACK(size_t) rtR0LogLoggerExFallbackOutput(void *pv, const char *pachChars, size_t cbChars) +{ + PRTR0LOGLOGGERFALLBACK pThis = (PRTR0LOGLOGGERFALLBACK)pv; + if (cbChars) + { + size_t cbRet = 0; + for (;;) + { + /* how much */ + uint32_t cb = sizeof(pThis->achScratch) - pThis->offScratch - 1; /* minus 1 - for the string terminator. */ + if (cb > cbChars) + cb = (uint32_t)cbChars; + + /* copy */ + memcpy(&pThis->achScratch[pThis->offScratch], pachChars, cb); + + /* advance */ + pThis->offScratch += cb; + cbRet += cb; + cbChars -= cb; + + /* done? */ + if (cbChars <= 0) + return cbRet; + + pachChars += cb; + + /* flush */ + pThis->achScratch[pThis->offScratch] = '\0'; + rtR0LogLoggerExFallbackFlush(pThis); + } + + /* won't ever get here! */ + } + else + { + /* + * Termination call, flush the log. + */ + pThis->achScratch[pThis->offScratch] = '\0'; + rtR0LogLoggerExFallbackFlush(pThis); + return 0; + } +} + + +/** + * Ring-0 fallback for cases where we're unable to grab the lock. + * + * This will happen when we're at a too high IRQL on Windows for instance and + * needs to be dealt with or we'll drop a lot of log output. This fallback will + * only output to some of the log destinations as a few of them may be doing + * dangerous things. We won't be doing any prefixing here either, at least not + * for the present, because it's too much hassle. + * + * @param fDestFlags The destination flags. + * @param fFlags The logger flags. + * @param pInt The internal logger data, for ring buffer output. + * @param pszFormat The format string. + * @param va The format arguments. + */ +static void rtR0LogLoggerExFallback(uint32_t fDestFlags, uint32_t fFlags, PRTLOGGERINTERNAL pInt, + const char *pszFormat, va_list va) +{ + RTR0LOGLOGGERFALLBACK This; + This.fDestFlags = fDestFlags; + This.pInt = pInt; + + /* fallback indicator. */ + This.offScratch = 2; + This.achScratch[0] = '['; + This.achScratch[1] = 'F'; + + /* selected prefixes */ + if (fFlags & RTLOGFLAGS_PREFIX_PID) + { + RTPROCESS Process = RTProcSelf(); + This.achScratch[This.offScratch++] = ' '; + This.offScratch += RTStrFormatNumber(&This.achScratch[This.offScratch], Process, 16, sizeof(RTPROCESS) * 2, 0, RTSTR_F_ZEROPAD); + } + if (fFlags & RTLOGFLAGS_PREFIX_TID) + { + RTNATIVETHREAD Thread = RTThreadNativeSelf(); + This.achScratch[This.offScratch++] = ' '; + This.offScratch += RTStrFormatNumber(&This.achScratch[This.offScratch], Thread, 16, sizeof(RTNATIVETHREAD) * 2, 0, RTSTR_F_ZEROPAD); + } + + This.achScratch[This.offScratch++] = ']'; + This.achScratch[This.offScratch++] = ' '; + + RTLogFormatV(rtR0LogLoggerExFallbackOutput, &This, pszFormat, va); +} +#endif /* IN_RING0 */ + + +/** + * vprintf like function for writing to the default log. + * + * @param pszFormat Printf like format string. + * @param args Optional arguments as specified in pszFormat. + * + * @remark The API doesn't support formatting of floating point numbers at the moment. + */ +RTDECL(void) RTLogPrintfV(const char *pszFormat, va_list args) +{ + RTLogLoggerV(NULL, pszFormat, args); +} +RT_EXPORT_SYMBOL(RTLogPrintfV); + + +/** + * Dumper vprintf-like function outputting to a logger. + * + * @param pvUser Pointer to the logger instance to use, NULL for + * default instance. + * @param pszFormat Format string. + * @param va Format arguments. + */ +RTDECL(void) RTLogDumpPrintfV(void *pvUser, const char *pszFormat, va_list va) +{ + RTLogLoggerV((PRTLOGGER)pvUser, pszFormat, va); +} +RT_EXPORT_SYMBOL(RTLogDumpPrintfV); + + +#ifdef IN_RING3 + +/** + * Opens/creates the log file. + * + * @param pLogger The logger instance to update. NULL is not allowed! + * @param pszErrorMsg A buffer which is filled with an error message if + * something fails. May be NULL. + * @param cchErrorMsg The size of the error message buffer. + */ +static int rtlogFileOpen(PRTLOGGER pLogger, char *pszErrorMsg, size_t cchErrorMsg) +{ + uint32_t fOpen = RTFILE_O_WRITE | RTFILE_O_DENY_NONE; + if (pLogger->fFlags & RTLOGFLAGS_APPEND) + fOpen |= RTFILE_O_OPEN_CREATE | RTFILE_O_APPEND; + else + fOpen |= RTFILE_O_CREATE_REPLACE; + if (pLogger->fFlags & RTLOGFLAGS_WRITE_THROUGH) + fOpen |= RTFILE_O_WRITE_THROUGH; + + unsigned cBackoff = 0; + int rc = RTFileOpen(&pLogger->pInt->hFile, pLogger->pInt->szFilename, fOpen); + while ( rc == VERR_SHARING_VIOLATION + && cBackoff < RT_ELEMENTS(g_acMsLogBackoff)) + { + RTThreadSleep(g_acMsLogBackoff[cBackoff++]); + rc = RTFileOpen(&pLogger->pInt->hFile, pLogger->pInt->szFilename, fOpen); + } + if (RT_SUCCESS(rc)) + { + rc = RTFileGetSize(pLogger->pInt->hFile, &pLogger->pInt->cbHistoryFileWritten); + if (RT_FAILURE(rc)) + { + /* Don't complain if this fails, assume the file is empty. */ + pLogger->pInt->cbHistoryFileWritten = 0; + rc = VINF_SUCCESS; + } + } + else + { + pLogger->pInt->hFile = NIL_RTFILE; + if (pszErrorMsg) + RTStrPrintf(pszErrorMsg, cchErrorMsg, N_("could not open file '%s' (fOpen=%#x)"), pLogger->pInt->szFilename, fOpen); + } + return rc; +} + + +/** + * Closes, rotates and opens the log files if necessary. + * + * Used by the rtlogFlush() function as well as RTLogCreateExV. + * + * @param pLogger The logger instance to update. NULL is not allowed! + * @param uTimeSlit Current time slot (for tikme based rotation). + * @param fFirst Flag whether this is the beginning of logging, i.e. + * called from RTLogCreateExV. Prevents pfnPhase from + * being called. + */ +static void rtlogRotate(PRTLOGGER pLogger, uint32_t uTimeSlot, bool fFirst) +{ + /* Suppress rotating empty log files simply because the time elapsed. */ + if (RT_UNLIKELY(!pLogger->pInt->cbHistoryFileWritten)) + pLogger->pInt->uHistoryTimeSlotStart = uTimeSlot; + + /* Check rotation condition: file still small enough and not too old? */ + if (RT_LIKELY( pLogger->pInt->cbHistoryFileWritten < pLogger->pInt->cbHistoryFileMax + && uTimeSlot == pLogger->pInt->uHistoryTimeSlotStart)) + return; + + /* + * Save "disabled" log flag and make sure logging is disabled. + * The logging in the functions called during log file history + * rotation would cause severe trouble otherwise. + */ + uint32_t const fSavedFlags = pLogger->fFlags; + pLogger->fFlags |= RTLOGFLAGS_DISABLED; + + /* + * Disable log rotation temporarily, otherwise with extreme settings and + * chatty phase logging we could run into endless rotation. + */ + uint32_t const cSavedHistory = pLogger->pInt->cHistory; + pLogger->pInt->cHistory = 0; + + /* + * Close the old log file. + */ + if (pLogger->pInt->hFile != NIL_RTFILE) + { + /* Use the callback to generate some final log contents, but only if + * this is a rotation with a fully set up logger. Leave the other case + * to the RTLogCreateExV function. */ + if (pLogger->pInt->pfnPhase && !fFirst) + { + uint32_t fODestFlags = pLogger->fDestFlags; + pLogger->fDestFlags &= RTLOGDEST_FILE; + pLogger->pInt->pfnPhase(pLogger, RTLOGPHASE_PREROTATE, rtlogPhaseMsgLocked); + pLogger->fDestFlags = fODestFlags; + } + RTFileClose(pLogger->pInt->hFile); + pLogger->pInt->hFile = NIL_RTFILE; + } + + if (cSavedHistory) + { + /* + * Rotate the log files. + */ + for (uint32_t i = cSavedHistory - 1; i + 1 > 0; i--) + { + char szOldName[sizeof(pLogger->pInt->szFilename) + 32]; + if (i > 0) + RTStrPrintf(szOldName, sizeof(szOldName), "%s.%u", pLogger->pInt->szFilename, i); + else + RTStrCopy(szOldName, sizeof(szOldName), pLogger->pInt->szFilename); + + char szNewName[sizeof(pLogger->pInt->szFilename) + 32]; + RTStrPrintf(szNewName, sizeof(szNewName), "%s.%u", pLogger->pInt->szFilename, i + 1); + + unsigned cBackoff = 0; + int rc = RTFileRename(szOldName, szNewName, RTFILEMOVE_FLAGS_REPLACE); + while ( rc == VERR_SHARING_VIOLATION + && cBackoff < RT_ELEMENTS(g_acMsLogBackoff)) + { + RTThreadSleep(g_acMsLogBackoff[cBackoff++]); + rc = RTFileRename(szOldName, szNewName, RTFILEMOVE_FLAGS_REPLACE); + } + + if (rc == VERR_FILE_NOT_FOUND) + RTFileDelete(szNewName); + } + + /* + * Delete excess log files. + */ + for (uint32_t i = cSavedHistory + 1; ; i++) + { + char szExcessName[sizeof(pLogger->pInt->szFilename) + 32]; + RTStrPrintf(szExcessName, sizeof(szExcessName), "%s.%u", pLogger->pInt->szFilename, i); + int rc = RTFileDelete(szExcessName); + if (RT_FAILURE(rc)) + break; + } + } + + /* + * Update logger state and create new log file. + */ + pLogger->pInt->cbHistoryFileWritten = 0; + pLogger->pInt->uHistoryTimeSlotStart = uTimeSlot; + rtlogFileOpen(pLogger, NULL, 0); + + /* + * Use the callback to generate some initial log contents, but only if this + * is a rotation with a fully set up logger. Leave the other case to the + * RTLogCreateExV function. + */ + if (pLogger->pInt->pfnPhase && !fFirst) + { + uint32_t const fSavedDestFlags = pLogger->fDestFlags; + pLogger->fDestFlags &= RTLOGDEST_FILE; + pLogger->pInt->pfnPhase(pLogger, RTLOGPHASE_POSTROTATE, rtlogPhaseMsgLocked); + pLogger->fDestFlags = fSavedDestFlags; + } + + /* Restore saved values. */ + pLogger->pInt->cHistory = cSavedHistory; + pLogger->fFlags = fSavedFlags; +} + +#endif /* IN_RING3 */ + + +/** + * Writes the buffer to the given log device without checking for buffered + * data or anything. + * Used by the RTLogFlush() function. + * + * @param pLogger The logger instance to write to. NULL is not allowed! + */ +static void rtlogFlush(PRTLOGGER pLogger) +{ + uint32_t const cchScratch = pLogger->offScratch; + if (cchScratch == 0) + return; /* nothing to flush. */ + +#ifndef IN_RC + /* + * If the ring buffer is active, the other destinations are only written + * to when the ring buffer is flushed by RTLogFlush(). + */ + if ( (pLogger->fDestFlags & RTLOGDEST_RINGBUF) + && pLogger->pInt + && pLogger->pInt->pszRingBuf /* paraoia */) + { + rtLogRingBufWrite(pLogger->pInt, pLogger->achScratch, pLogger->offScratch); + pLogger->offScratch = 0; /* empty the buffer. */ + } + else +#endif + { + /* Make sure the string is terminated. On Windows, RTLogWriteDebugger + will get upset if it isn't. */ + if (RT_LIKELY(cchScratch < sizeof(pLogger->achScratch))) + pLogger->achScratch[cchScratch] = '\0'; + else + AssertFailed(); + +#ifndef IN_RC + if (pLogger->fDestFlags & RTLOGDEST_USER) + RTLogWriteUser(pLogger->achScratch, cchScratch); + + if (pLogger->fDestFlags & RTLOGDEST_DEBUGGER) + RTLogWriteDebugger(pLogger->achScratch, cchScratch); + +# ifdef IN_RING3 + if ((pLogger->fDestFlags & (RTLOGDEST_FILE | RTLOGDEST_RINGBUF)) == RTLOGDEST_FILE) + { + if (pLogger->pInt->hFile != NIL_RTFILE) + { + RTFileWrite(pLogger->pInt->hFile, pLogger->achScratch, cchScratch, NULL); + if (pLogger->fFlags & RTLOGFLAGS_FLUSH) + RTFileFlush(pLogger->pInt->hFile); + } + if (pLogger->pInt->cHistory) + pLogger->pInt->cbHistoryFileWritten += cchScratch; + } +# endif + + if (pLogger->fDestFlags & RTLOGDEST_STDOUT) + RTLogWriteStdOut(pLogger->achScratch, cchScratch); + + if (pLogger->fDestFlags & RTLOGDEST_STDERR) + RTLogWriteStdErr(pLogger->achScratch, cchScratch); + +# if (defined(IN_RING0) || defined(IN_RC)) && !defined(LOG_NO_COM) + if (pLogger->fDestFlags & RTLOGDEST_COM) + RTLogWriteCom(pLogger->achScratch, cchScratch); +# endif +#endif /* !IN_RC */ + +#ifdef IN_RC + if (pLogger->pfnFlush) + pLogger->pfnFlush(pLogger); +#else + if (pLogger->pInt->pfnFlush) + pLogger->pInt->pfnFlush(pLogger); +#endif + + /* empty the buffer. */ + pLogger->offScratch = 0; + +#ifdef IN_RING3 + /* + * Rotate the log file if configured. Must be done after everything is + * flushed, since this will also use logging/flushing to write the header + * and footer messages. + */ + if ( (pLogger->fDestFlags & RTLOGDEST_FILE) + && pLogger->pInt->cHistory) + rtlogRotate(pLogger, RTTimeProgramSecTS() / pLogger->pInt->cSecsHistoryTimeSlot, false /* fFirst */); +#endif + } +} + + +/** + * Callback for RTLogFormatV which writes to the com port. + * See PFNLOGOUTPUT() for details. + */ +static DECLCALLBACK(size_t) rtLogOutput(void *pv, const char *pachChars, size_t cbChars) +{ + PRTLOGGER pLogger = (PRTLOGGER)pv; + if (cbChars) + { + size_t cbRet = 0; + for (;;) + { +#if defined(DEBUG) && defined(IN_RING3) + /* sanity */ + if (pLogger->offScratch >= sizeof(pLogger->achScratch)) + { + fprintf(stderr, "pLogger->offScratch >= sizeof(pLogger->achScratch) (%#x >= %#x)\n", + pLogger->offScratch, (unsigned)sizeof(pLogger->achScratch)); + AssertBreakpoint(); AssertBreakpoint(); + } +#endif + + /* how much */ + size_t cb = sizeof(pLogger->achScratch) - pLogger->offScratch - 1; + if (cb > cbChars) + cb = cbChars; + + /* copy */ + memcpy(&pLogger->achScratch[pLogger->offScratch], pachChars, cb); + + /* advance */ + pLogger->offScratch += (uint32_t)cb; + cbRet += cb; + cbChars -= cb; + + /* done? */ + if (cbChars <= 0) + return cbRet; + + pachChars += cb; + + /* flush */ + rtlogFlush(pLogger); + } + + /* won't ever get here! */ + } + else + { + /* + * Termination call. + * There's always space for a terminator, and it's not counted. + */ + pLogger->achScratch[pLogger->offScratch] = '\0'; + return 0; + } +} + + +/** + * stpncpy implementation for use in rtLogOutputPrefixed w/ padding. + * + * @returns Pointer to the destination buffer byte following the copied string. + * @param pszDst The destination buffer. + * @param pszSrc The source string. + * @param cchSrcMax The maximum number of characters to copy from + * the string. + * @param cchMinWidth The minimum field with, padd with spaces to + * reach this. + */ +DECLINLINE(char *) rtLogStPNCpyPad(char *pszDst, const char *pszSrc, size_t cchSrcMax, size_t cchMinWidth) +{ + size_t cchSrc = 0; + if (pszSrc) + { + cchSrc = strlen(pszSrc); + if (cchSrc > cchSrcMax) + cchSrc = cchSrcMax; + + memcpy(pszDst, pszSrc, cchSrc); + pszDst += cchSrc; + } + do + *pszDst++ = ' '; + while (cchSrc++ < cchMinWidth); + + return pszDst; +} + + + +/** + * Callback for RTLogFormatV which writes to the logger instance. + * This version supports prefixes. + * + * See PFNLOGOUTPUT() for details. + */ +static DECLCALLBACK(size_t) rtLogOutputPrefixed(void *pv, const char *pachChars, size_t cbChars) +{ + PRTLOGOUTPUTPREFIXEDARGS pArgs = (PRTLOGOUTPUTPREFIXEDARGS)pv; + PRTLOGGER pLogger = pArgs->pLogger; + if (cbChars) + { + size_t cbRet = 0; + for (;;) + { + size_t cb = sizeof(pLogger->achScratch) - pLogger->offScratch - 1; + const char *pszNewLine; + char *psz; +#ifdef IN_RC + bool *pfPendingPrefix = &pLogger->fPendingPrefix; +#else + bool *pfPendingPrefix = &pLogger->pInt->fPendingPrefix; +#endif + + /* + * Pending prefix? + */ + if (*pfPendingPrefix) + { + *pfPendingPrefix = false; + +#if defined(DEBUG) && defined(IN_RING3) + /* sanity */ + if (pLogger->offScratch >= sizeof(pLogger->achScratch)) + { + fprintf(stderr, "pLogger->offScratch >= sizeof(pLogger->achScratch) (%#x >= %#x)\n", + pLogger->offScratch, (unsigned)sizeof(pLogger->achScratch)); + AssertBreakpoint(); AssertBreakpoint(); + } +#endif + + /* + * Flush the buffer if there isn't enough room for the maximum prefix config. + * Max is 256, add a couple of extra bytes. See CCH_PREFIX check way below. + */ + if (cb < 256 + 16) + { + rtlogFlush(pLogger); + cb = sizeof(pLogger->achScratch) - pLogger->offScratch - 1; + } + + /* + * Write the prefixes. + * psz is pointing to the current position. + */ + psz = &pLogger->achScratch[pLogger->offScratch]; + if (pLogger->fFlags & RTLOGFLAGS_PREFIX_TS) + { + uint64_t u64 = RTTimeNanoTS(); + int iBase = 16; + unsigned int fFlags = RTSTR_F_ZEROPAD; + if (pLogger->fFlags & RTLOGFLAGS_DECIMAL_TS) + { + iBase = 10; + fFlags = 0; + } + if (pLogger->fFlags & RTLOGFLAGS_REL_TS) + { + static volatile uint64_t s_u64LastTs; + uint64_t u64DiffTs = u64 - s_u64LastTs; + s_u64LastTs = u64; + /* We could have been preempted just before reading of s_u64LastTs by + * another thread which wrote s_u64LastTs. In that case the difference + * is negative which we simply ignore. */ + u64 = (int64_t)u64DiffTs < 0 ? 0 : u64DiffTs; + } + /* 1E15 nanoseconds = 11 days */ + psz += RTStrFormatNumber(psz, u64, iBase, 16, 0, fFlags); + *psz++ = ' '; + } +#define CCH_PREFIX_01 0 + 17 + + if (pLogger->fFlags & RTLOGFLAGS_PREFIX_TSC) + { +#if defined(RT_ARCH_AMD64) || defined(RT_ARCH_X86) + uint64_t u64 = ASMReadTSC(); +#else + uint64_t u64 = RTTimeNanoTS(); +#endif + int iBase = 16; + unsigned int fFlags = RTSTR_F_ZEROPAD; + if (pLogger->fFlags & RTLOGFLAGS_DECIMAL_TS) + { + iBase = 10; + fFlags = 0; + } + if (pLogger->fFlags & RTLOGFLAGS_REL_TS) + { + static volatile uint64_t s_u64LastTsc; + int64_t i64DiffTsc = u64 - s_u64LastTsc; + s_u64LastTsc = u64; + /* We could have been preempted just before reading of s_u64LastTsc by + * another thread which wrote s_u64LastTsc. In that case the difference + * is negative which we simply ignore. */ + u64 = i64DiffTsc < 0 ? 0 : i64DiffTsc; + } + /* 1E15 ticks at 4GHz = 69 hours */ + psz += RTStrFormatNumber(psz, u64, iBase, 16, 0, fFlags); + *psz++ = ' '; + } +#define CCH_PREFIX_02 CCH_PREFIX_01 + 17 + + if (pLogger->fFlags & RTLOGFLAGS_PREFIX_MS_PROG) + { +#if defined(IN_RING3) || defined(IN_RC) + uint64_t u64 = RTTimeProgramMilliTS(); +#else + uint64_t u64 = 0; +#endif + /* 1E8 milliseconds = 27 hours */ + psz += RTStrFormatNumber(psz, u64, 10, 9, 0, RTSTR_F_ZEROPAD); + *psz++ = ' '; + } +#define CCH_PREFIX_03 CCH_PREFIX_02 + 21 + + if (pLogger->fFlags & RTLOGFLAGS_PREFIX_TIME) + { +#if defined(IN_RING3) || defined(IN_RING0) + RTTIMESPEC TimeSpec; + RTTIME Time; + RTTimeExplode(&Time, RTTimeNow(&TimeSpec)); + psz += RTStrFormatNumber(psz, Time.u8Hour, 10, 2, 0, RTSTR_F_ZEROPAD); + *psz++ = ':'; + psz += RTStrFormatNumber(psz, Time.u8Minute, 10, 2, 0, RTSTR_F_ZEROPAD); + *psz++ = ':'; + psz += RTStrFormatNumber(psz, Time.u8Second, 10, 2, 0, RTSTR_F_ZEROPAD); + *psz++ = '.'; + psz += RTStrFormatNumber(psz, Time.u32Nanosecond / 1000, 10, 6, 0, RTSTR_F_ZEROPAD); + *psz++ = ' '; +#else + memset(psz, ' ', 16); + psz += 16; +#endif + } +#define CCH_PREFIX_04 CCH_PREFIX_03 + (3+1+3+1+3+1+7+1) + + if (pLogger->fFlags & RTLOGFLAGS_PREFIX_TIME_PROG) + { + +#if defined(IN_RING3) || defined(IN_RC) + uint64_t u64 = RTTimeProgramMicroTS(); + psz += RTStrFormatNumber(psz, (uint32_t)(u64 / RT_US_1HOUR), 10, 2, 0, RTSTR_F_ZEROPAD); + *psz++ = ':'; + uint32_t u32 = (uint32_t)(u64 % RT_US_1HOUR); + psz += RTStrFormatNumber(psz, u32 / RT_US_1MIN, 10, 2, 0, RTSTR_F_ZEROPAD); + *psz++ = ':'; + u32 %= RT_US_1MIN; + + psz += RTStrFormatNumber(psz, u32 / RT_US_1SEC, 10, 2, 0, RTSTR_F_ZEROPAD); + *psz++ = '.'; + psz += RTStrFormatNumber(psz, u32 % RT_US_1SEC, 10, 6, 0, RTSTR_F_ZEROPAD); + *psz++ = ' '; +#else + memset(psz, ' ', 16); + psz += 16; +#endif + } +#define CCH_PREFIX_05 CCH_PREFIX_04 + (9+1+2+1+2+1+6+1) + +# if 0 + if (pLogger->fFlags & RTLOGFLAGS_PREFIX_DATETIME) + { + char szDate[32]; + RTTIMESPEC Time; + RTTimeSpecToString(RTTimeNow(&Time), szDate, sizeof(szDate)); + size_t cch = strlen(szDate); + memcpy(psz, szDate, cch); + psz += cch; + *psz++ = ' '; + } +# define CCH_PREFIX_06 CCH_PREFIX_05 + 32 +# else +# define CCH_PREFIX_06 CCH_PREFIX_05 + 0 +# endif + + if (pLogger->fFlags & RTLOGFLAGS_PREFIX_PID) + { +#ifndef IN_RC + RTPROCESS Process = RTProcSelf(); +#else + RTPROCESS Process = NIL_RTPROCESS; +#endif + psz += RTStrFormatNumber(psz, Process, 16, sizeof(RTPROCESS) * 2, 0, RTSTR_F_ZEROPAD); + *psz++ = ' '; + } +#define CCH_PREFIX_07 CCH_PREFIX_06 + 9 + + if (pLogger->fFlags & RTLOGFLAGS_PREFIX_TID) + { +#ifndef IN_RC + RTNATIVETHREAD Thread = RTThreadNativeSelf(); +#else + RTNATIVETHREAD Thread = NIL_RTNATIVETHREAD; +#endif + psz += RTStrFormatNumber(psz, Thread, 16, sizeof(RTNATIVETHREAD) * 2, 0, RTSTR_F_ZEROPAD); + *psz++ = ' '; + } +#define CCH_PREFIX_08 CCH_PREFIX_07 + 17 + + if (pLogger->fFlags & RTLOGFLAGS_PREFIX_THREAD) + { +#ifdef IN_RING3 + const char *pszName = RTThreadSelfName(); +#elif defined IN_RC + const char *pszName = "EMT-RC"; +#else + const char *pszName = "R0"; +#endif + psz = rtLogStPNCpyPad(psz, pszName, 16, 8); + } +#define CCH_PREFIX_09 CCH_PREFIX_08 + 17 + + if (pLogger->fFlags & RTLOGFLAGS_PREFIX_CPUID) + { +#if defined(RT_ARCH_AMD64) || defined(RT_ARCH_X86) + const uint8_t idCpu = ASMGetApicId(); +#else + const RTCPUID idCpu = RTMpCpuId(); +#endif + psz += RTStrFormatNumber(psz, idCpu, 16, sizeof(idCpu) * 2, 0, RTSTR_F_ZEROPAD); + *psz++ = ' '; + } +#define CCH_PREFIX_10 CCH_PREFIX_09 + 17 + +#ifndef IN_RC + if ( (pLogger->fFlags & RTLOGFLAGS_PREFIX_CUSTOM) + && pLogger->pInt->pfnPrefix) + { + psz += pLogger->pInt->pfnPrefix(pLogger, psz, 31, pLogger->pInt->pvPrefixUserArg); + *psz++ = ' '; /* +32 */ + } +#endif +#define CCH_PREFIX_11 CCH_PREFIX_10 + 32 + + if (pLogger->fFlags & RTLOGFLAGS_PREFIX_LOCK_COUNTS) + { +#ifdef IN_RING3 /** @todo implement these counters in ring-0 too? */ + RTTHREAD Thread = RTThreadSelf(); + if (Thread != NIL_RTTHREAD) + { + uint32_t cReadLocks = RTLockValidatorReadLockGetCount(Thread); + uint32_t cWriteLocks = RTLockValidatorWriteLockGetCount(Thread) - g_cLoggerLockCount; + cReadLocks = RT_MIN(0xfff, cReadLocks); + cWriteLocks = RT_MIN(0xfff, cWriteLocks); + psz += RTStrFormatNumber(psz, cReadLocks, 16, 1, 0, RTSTR_F_ZEROPAD); + *psz++ = '/'; + psz += RTStrFormatNumber(psz, cWriteLocks, 16, 1, 0, RTSTR_F_ZEROPAD); + } + else +#endif + { + *psz++ = '?'; + *psz++ = '/'; + *psz++ = '?'; + } + *psz++ = ' '; + } +#define CCH_PREFIX_12 CCH_PREFIX_11 + 8 + + if (pLogger->fFlags & RTLOGFLAGS_PREFIX_FLAG_NO) + { + psz += RTStrFormatNumber(psz, pArgs->fFlags, 16, 8, 0, RTSTR_F_ZEROPAD); + *psz++ = ' '; + } +#define CCH_PREFIX_13 CCH_PREFIX_12 + 9 + + if (pLogger->fFlags & RTLOGFLAGS_PREFIX_FLAG) + { +#ifdef IN_RING3 + const char *pszGroup = pArgs->iGroup != ~0U ? pLogger->pInt->papszGroups[pArgs->iGroup] : NULL; +#else + const char *pszGroup = NULL; +#endif + psz = rtLogStPNCpyPad(psz, pszGroup, 16, 8); + } +#define CCH_PREFIX_14 CCH_PREFIX_13 + 17 + + if (pLogger->fFlags & RTLOGFLAGS_PREFIX_GROUP_NO) + { + if (pArgs->iGroup != ~0U) + { + psz += RTStrFormatNumber(psz, pArgs->iGroup, 16, 3, 0, RTSTR_F_ZEROPAD); + *psz++ = ' '; + } + else + { + memcpy(psz, "-1 ", sizeof("-1 ") - 1); + psz += sizeof("-1 ") - 1; + } /* +9 */ + } +#define CCH_PREFIX_15 CCH_PREFIX_14 + 9 + + if (pLogger->fFlags & RTLOGFLAGS_PREFIX_GROUP) + { + const unsigned fGrp = pLogger->afGroups[pArgs->iGroup != ~0U ? pArgs->iGroup : 0]; + const char *pszGroup; + size_t cch; + switch (pArgs->fFlags & fGrp) + { + case 0: pszGroup = "--------"; cch = sizeof("--------") - 1; break; + case RTLOGGRPFLAGS_ENABLED: pszGroup = "enabled" ; cch = sizeof("enabled" ) - 1; break; + case RTLOGGRPFLAGS_LEVEL_1: pszGroup = "level 1" ; cch = sizeof("level 1" ) - 1; break; + case RTLOGGRPFLAGS_LEVEL_2: pszGroup = "level 2" ; cch = sizeof("level 2" ) - 1; break; + case RTLOGGRPFLAGS_LEVEL_3: pszGroup = "level 3" ; cch = sizeof("level 3" ) - 1; break; + case RTLOGGRPFLAGS_LEVEL_4: pszGroup = "level 4" ; cch = sizeof("level 4" ) - 1; break; + case RTLOGGRPFLAGS_LEVEL_5: pszGroup = "level 5" ; cch = sizeof("level 5" ) - 1; break; + case RTLOGGRPFLAGS_LEVEL_6: pszGroup = "level 6" ; cch = sizeof("level 6" ) - 1; break; + case RTLOGGRPFLAGS_LEVEL_7: pszGroup = "level 7" ; cch = sizeof("level 7" ) - 1; break; + case RTLOGGRPFLAGS_LEVEL_8: pszGroup = "level 8" ; cch = sizeof("level 8" ) - 1; break; + case RTLOGGRPFLAGS_LEVEL_9: pszGroup = "level 9" ; cch = sizeof("level 9" ) - 1; break; + case RTLOGGRPFLAGS_LEVEL_10: pszGroup = "level 10"; cch = sizeof("level 10") - 1; break; + case RTLOGGRPFLAGS_LEVEL_11: pszGroup = "level 11"; cch = sizeof("level 11") - 1; break; + case RTLOGGRPFLAGS_LEVEL_12: pszGroup = "level 12"; cch = sizeof("level 12") - 1; break; + case RTLOGGRPFLAGS_FLOW: pszGroup = "flow" ; cch = sizeof("flow" ) - 1; break; + case RTLOGGRPFLAGS_WARN: pszGroup = "warn" ; cch = sizeof("warn" ) - 1; break; + default: pszGroup = "????????"; cch = sizeof("????????") - 1; break; + } + psz = rtLogStPNCpyPad(psz, pszGroup, 16, 8); + } +#define CCH_PREFIX_16 CCH_PREFIX_15 + 17 + +#define CCH_PREFIX ( CCH_PREFIX_16 ) + { AssertCompile(CCH_PREFIX < 256); } + + /* + * Done, figure what we've used and advance the buffer and free size. + */ + cb = psz - &pLogger->achScratch[pLogger->offScratch]; + AssertMsg(cb <= 223, ("%#zx (%zd) - fFlags=%#x\n", cb, cb, pLogger->fFlags)); + pLogger->offScratch += (uint32_t)cb; + cb = sizeof(pLogger->achScratch) - pLogger->offScratch - 1; + } + else if (cb <= 0) + { + rtlogFlush(pLogger); + cb = sizeof(pLogger->achScratch) - pLogger->offScratch - 1; + } + +#if defined(DEBUG) && defined(IN_RING3) + /* sanity */ + if (pLogger->offScratch >= sizeof(pLogger->achScratch)) + { + fprintf(stderr, "pLogger->offScratch >= sizeof(pLogger->achScratch) (%#x >= %#x)\n", + pLogger->offScratch, (unsigned)sizeof(pLogger->achScratch)); + AssertBreakpoint(); AssertBreakpoint(); + } +#endif + + /* how much */ + if (cb > cbChars) + cb = cbChars; + + /* have newline? */ + pszNewLine = (const char *)memchr(pachChars, '\n', cb); + if (pszNewLine) + { + if (pLogger->fFlags & RTLOGFLAGS_USECRLF) + cb = pszNewLine - pachChars; + else + { + cb = pszNewLine - pachChars + 1; + *pfPendingPrefix = true; + } + } + + /* copy */ + memcpy(&pLogger->achScratch[pLogger->offScratch], pachChars, cb); + + /* advance */ + pLogger->offScratch += (uint32_t)cb; + cbRet += cb; + cbChars -= cb; + + if ( pszNewLine + && (pLogger->fFlags & RTLOGFLAGS_USECRLF) + && pLogger->offScratch + 2 < sizeof(pLogger->achScratch)) + { + memcpy(&pLogger->achScratch[pLogger->offScratch], "\r\n", 2); + pLogger->offScratch += 2; + cbRet++; + cbChars--; + cb++; + *pfPendingPrefix = true; + } + + /* done? */ + if (cbChars <= 0) + return cbRet; + pachChars += cb; + } + + /* won't ever get here! */ + } + else + { + /* + * Termination call. + * There's always space for a terminator, and it's not counted. + */ + pLogger->achScratch[pLogger->offScratch] = '\0'; + return 0; + } +} + + +/** + * Write to a logger instance (worker function). + * + * This function will check whether the instance, group and flags makes up a + * logging kind which is currently enabled before writing anything to the log. + * + * @param pLogger Pointer to logger instance. Must be non-NULL. + * @param fFlags The logging flags. + * @param iGroup The group. + * The value ~0U is reserved for compatibility with RTLogLogger[V] and is + * only for internal usage! + * @param pszFormat Format string. + * @param args Format arguments. + */ +static void rtlogLoggerExVLocked(PRTLOGGER pLogger, unsigned fFlags, unsigned iGroup, const char *pszFormat, va_list args) +{ + /* + * Format the message and perhaps flush it. + */ + if (pLogger->fFlags & (RTLOGFLAGS_PREFIX_MASK | RTLOGFLAGS_USECRLF)) + { + RTLOGOUTPUTPREFIXEDARGS OutputArgs; + OutputArgs.pLogger = pLogger; + OutputArgs.iGroup = iGroup; + OutputArgs.fFlags = fFlags; + RTLogFormatV(rtLogOutputPrefixed, &OutputArgs, pszFormat, args); + } + else + RTLogFormatV(rtLogOutput, pLogger, pszFormat, args); + if ( !(pLogger->fFlags & RTLOGFLAGS_BUFFERED) + && pLogger->offScratch) + rtlogFlush(pLogger); +} + + +#ifndef IN_RC +/** + * For calling rtlogLoggerExVLocked. + * + * @param pLogger The logger. + * @param fFlags The logging flags. + * @param iGroup The group. + * The value ~0U is reserved for compatibility with RTLogLogger[V] and is + * only for internal usage! + * @param pszFormat Format string. + * @param ... Format arguments. + */ +static void rtlogLoggerExFLocked(PRTLOGGER pLogger, unsigned fFlags, unsigned iGroup, const char *pszFormat, ...) +{ + va_list va; + va_start(va, pszFormat); + rtlogLoggerExVLocked(pLogger, fFlags, iGroup, pszFormat, va); + va_end(va); +} +#endif /* !IN_RC */ + --- linux-raspi2-4.2.0.orig/ubuntu/vbox/vboxguest/common/log/logcom.c +++ linux-raspi2-4.2.0/ubuntu/vbox/vboxguest/common/log/logcom.c @@ -0,0 +1,146 @@ +/* $Id: logcom.cpp $ */ +/** @file + * IPRT - Logging to Serial Port. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + + +/******************************************************************************* +* Defined Constants And Macros * +*******************************************************************************/ +#ifndef IPRT_UART_BASE +/** The port address of the COM port to log to. + * + * To override the default (COM1) append IPRT_UART_BASE=0xWXYZ to DEFS in your + * LocalConfig.kmk. Alternatively you can edit this file, but the don't forget + * to also update the default found in VBox/asmdefs.h. + * + * Standard port assignments are: COM1=0x3f8, COM2=0x2f8, COM3=0x3e8, COM4=0x2e8. + */ +# define IPRT_UART_BASE 0x3f8 +#endif + + +/******************************************************************************* +* Header Files * +*******************************************************************************/ +#include +#include "internal/iprt.h" + +#include +#if defined(RT_ARCH_AMD64) || defined(RT_ARCH_X86) /** @todo consider fixing the config instead. */ +# include +#endif +#include +#include + + +/******************************************************************************* +* Internal Functions * +*******************************************************************************/ +static DECLCALLBACK(size_t) rtLogComOutput(void *pv, const char *pachChars, size_t cbChars); + + +/** + * Prints a formatted string to the serial port used for logging. + * + * @returns Number of bytes written. + * @param pszFormat Format string. + * @param ... Optional arguments specified in the format string. + */ +RTDECL(size_t) RTLogComPrintf(const char *pszFormat, ...) +{ + va_list args; + size_t cb; + va_start(args, pszFormat); + cb = RTLogComPrintfV(pszFormat, args); + va_end(args); + + return cb; +} +RT_EXPORT_SYMBOL(RTLogComPrintf); + + +/** + * Prints a formatted string to the serial port used for logging. + * + * @returns Number of bytes written. + * @param pszFormat Format string. + * @param args Optional arguments specified in the format string. + */ +RTDECL(size_t) RTLogComPrintfV(const char *pszFormat, va_list args) +{ + return RTLogFormatV(rtLogComOutput, NULL, pszFormat, args); +} +RT_EXPORT_SYMBOL(RTLogComPrintfV); + + +/** + * Callback for RTLogFormatV which writes to the com port. + * See PFNLOGOUTPUT() for details. + */ +static DECLCALLBACK(size_t) rtLogComOutput(void *pv, const char *pachChars, size_t cbChars) +{ + NOREF(pv); + if (cbChars) + RTLogWriteCom(pachChars, cbChars); + return cbChars; +} + + +/** + * Write log buffer to COM port. + * + * @param pach Pointer to the buffer to write. + * @param cb Number of bytes to write. + */ +RTDECL(void) RTLogWriteCom(const char *pach, size_t cb) +{ +#if defined(RT_ARCH_AMD64) || defined(RT_ARCH_X86) + const uint8_t *pu8; + for (pu8 = (const uint8_t *)pach; cb-- > 0; pu8++) + { + register unsigned cMaxWait; + register uint8_t u8; + + /* expand \n -> \r\n */ + if (*pu8 == '\n') + RTLogWriteCom("\r", 1); + + /* Check if port is ready. */ + cMaxWait = ~0U; + do + { + u8 = ASMInU8(IPRT_UART_BASE + 5); + cMaxWait--; + } while (!(u8 & 0x20) && u8 != 0xff && cMaxWait); + + /* write */ + ASMOutU8(IPRT_UART_BASE, *pu8); + } +#else + /* PORTME? */ +#endif +} +RT_EXPORT_SYMBOL(RTLogWriteCom); + --- linux-raspi2-4.2.0.orig/ubuntu/vbox/vboxguest/common/log/logellipsis.c +++ linux-raspi2-4.2.0/ubuntu/vbox/vboxguest/common/log/logellipsis.c @@ -0,0 +1,105 @@ +/* $Id: logellipsis.cpp $ */ +/** @file + * Runtime VBox - Logger, the ellipsis variants. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + + +/******************************************************************************* +* Header Files * +*******************************************************************************/ +#include +#include "internal/iprt.h" + +#include +#include + + +/** + * Write to a logger instance. + * + * @param pLogger Pointer to logger instance. + * @param pvCallerRet Ignored. + * @param pszFormat Format string. + * @param ... Format arguments. + */ +RTDECL(void) RTLogLogger(PRTLOGGER pLogger, void *pvCallerRet, const char *pszFormat, ...) +{ + va_list args; + va_start(args, pszFormat); +#if defined(RT_OS_DARWIN) && defined(RT_ARCH_X86) && defined(IN_RING3) + /* manually align the stack before doing the call. + * We boldly assume that there is a stack frame here! */ + __asm__ __volatile__("andl $-32, %%esp\t\n" ::: "%esp"); + RTLogLoggerExV(pLogger, 0, ~0U, pszFormat, args); +#else + RTLogLoggerExV(pLogger, 0, ~0U, pszFormat, args); +#endif + va_end(args); + NOREF(pvCallerRet); +} +RT_EXPORT_SYMBOL(RTLogLogger); + + +/** + * Write to a logger instance. + * + * This function will check whether the instance, group and flags makes up a + * logging kind which is currently enabled before writing anything to the log. + * + * @param pLogger Pointer to logger instance. If NULL the default logger instance will be attempted. + * @param fFlags The logging flags. + * @param iGroup The group. + * The value ~0U is reserved for compatibility with RTLogLogger[V] and is + * only for internal usage! + * @param pszFormat Format string. + * @param ... Format arguments. + * @remark This is a worker function of LogIt. + */ +RTDECL(void) RTLogLoggerEx(PRTLOGGER pLogger, unsigned fFlags, unsigned iGroup, const char *pszFormat, ...) +{ + va_list args; + va_start(args, pszFormat); + RTLogLoggerExV(pLogger, fFlags, iGroup, pszFormat, args); + va_end(args); +} +RT_EXPORT_SYMBOL(RTLogLoggerEx); + + +/** + * printf like function for writing to the default log. + * + * @param pszFormat Printf like format string. + * @param ... Optional arguments as specified in pszFormat. + * + * @remark The API doesn't support formatting of floating point numbers at the moment. + */ +RTDECL(void) RTLogPrintf(const char *pszFormat, ...) +{ + va_list args; + va_start(args, pszFormat); + RTLogPrintfV(pszFormat, args); + va_end(args); +} +RT_EXPORT_SYMBOL(RTLogPrintf); + --- linux-raspi2-4.2.0.orig/ubuntu/vbox/vboxguest/common/log/logformat.c +++ linux-raspi2-4.2.0/ubuntu/vbox/vboxguest/common/log/logformat.c @@ -0,0 +1,100 @@ +/* $Id: logformat.cpp $ */ +/** @file + * IPRT - Log Formatter. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + + +/******************************************************************************* +* Header Files * +*******************************************************************************/ +#include +#include "internal/iprt.h" + +#include +#include +#ifdef IN_RING3 +# include +# include +#endif + +#include +#include + + +/******************************************************************************* +* Internal Functions * +*******************************************************************************/ +static DECLCALLBACK(size_t) rtlogFormatStr(void *pvArg, PFNRTSTROUTPUT pfnOutput, + void *pvArgOutput, const char **ppszFormat, + va_list *pArgs, int cchWidth, int cchPrecision, + unsigned fFlags, char chArgSize); + + +/** + * Partial vsprintf worker implementation. + * + * @returns number of bytes formatted. + * @param pfnOutput Output worker. + * Called in two ways. Normally with a string an it's length. + * For termination, it's called with NULL for string, 0 for length. + * @param pvArg Argument to output worker. + * @param pszFormat Format string. + * @param args Argument list. + */ +RTDECL(size_t) RTLogFormatV(PFNRTSTROUTPUT pfnOutput, void *pvArg, const char *pszFormat, va_list args) +{ + return RTStrFormatV(pfnOutput, pvArg, rtlogFormatStr, NULL, pszFormat, args); +} +RT_EXPORT_SYMBOL(RTLogFormatV); + + +/** + * Callback to format VBox formatting extentions. + * See @ref pg_rt_str_format for a reference on the format types. + * + * @returns The number of bytes formatted. + * @param pvArg Formatter argument. + * @param pfnOutput Pointer to output function. + * @param pvArgOutput Argument for the output function. + * @param ppszFormat Pointer to the format string pointer. Advance this till the char + * after the format specifier. + * @param pArgs Pointer to the argument list. Use this to fetch the arguments. + * @param cchWidth Format Width. -1 if not specified. + * @param cchPrecision Format Precision. -1 if not specified. + * @param fFlags Flags (RTSTR_NTFS_*). + * @param chArgSize The argument size specifier, 'l' or 'L'. + */ +static DECLCALLBACK(size_t) rtlogFormatStr(void *pvArg, PFNRTSTROUTPUT pfnOutput, void *pvArgOutput, + const char **ppszFormat, va_list *pArgs, int cchWidth, + int cchPrecision, unsigned fFlags, char chArgSize) +{ + char ch = *(*ppszFormat)++; + + AssertMsgFailed(("Invalid logger format type '%%%c%.10s'!\n", ch, *ppszFormat)); NOREF(ch); + + NOREF(pvArg); NOREF(pfnOutput); NOREF(pvArgOutput); NOREF(pArgs); NOREF(cchWidth); + NOREF(cchPrecision); NOREF(fFlags); NOREF(chArgSize); + return 0; +} + --- linux-raspi2-4.2.0.orig/ubuntu/vbox/vboxguest/common/log/logrel.c +++ linux-raspi2-4.2.0/ubuntu/vbox/vboxguest/common/log/logrel.c @@ -0,0 +1,185 @@ +/* $Id: logrel.cpp $ */ +/** @file + * Runtime VBox - Release Logger. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + + +/******************************************************************************* +* Header Files * +*******************************************************************************/ +#include +#include "internal/iprt.h" + +#ifndef IN_RC +# include +# include +# include +# include +# include +#endif +#ifdef IN_RING3 +# include +# include +#endif +#include +#include +#include +#include +#include + +#include +#include +#include +#ifdef IN_RING3 +# include +# include +#endif + + +/******************************************************************************* +* Global Variables * +*******************************************************************************/ +#ifdef IN_RC +/** Default release logger instance. */ +extern "C" DECLIMPORT(RTLOGGERRC) g_RelLogger; +#else /* !IN_RC */ +/** Default release logger instance. */ +static PRTLOGGER g_pRelLogger; +#endif /* !IN_RC */ + + +RTDECL(PRTLOGGER) RTLogRelGetDefaultInstance(void) +{ +#ifdef IN_RC + return &g_RelLogger; +#else /* !IN_RC */ + return g_pRelLogger; +#endif /* !IN_RC */ +} +RT_EXPORT_SYMBOL(RTLogRelGetDefaultInstance); + + +RTDECL(PRTLOGGER) RTLogRelGetDefaultInstanceEx(uint32_t fFlagsAndGroup) +{ +#ifdef IN_RC + PRTLOGGER pLogger = &g_RelLogger; +#else /* !IN_RC */ + PRTLOGGER pLogger = g_pRelLogger; +#endif /* !IN_RC */ + if (pLogger) + { + if (pLogger->fFlags & RTLOGFLAGS_DISABLED) + pLogger = NULL; + else + { + uint16_t const fFlags = RT_LO_U16(fFlagsAndGroup); + uint16_t const iGroup = RT_HI_U16(fFlagsAndGroup); + if ( iGroup != UINT16_MAX + && ( (pLogger->afGroups[iGroup < pLogger->cGroups ? iGroup : 0] & (fFlags | RTLOGGRPFLAGS_ENABLED)) + != (fFlags | RTLOGGRPFLAGS_ENABLED))) + pLogger = NULL; + } + } + return pLogger; +} +RT_EXPORT_SYMBOL(RTLogRelGetDefaultInstanceEx); + + +#ifndef IN_RC +/** + * Sets the default logger instance. + * + * @returns iprt status code. + * @param pLogger The new default release logger instance. + */ +RTDECL(PRTLOGGER) RTLogRelSetDefaultInstance(PRTLOGGER pLogger) +{ + return ASMAtomicXchgPtrT(&g_pRelLogger, pLogger, PRTLOGGER); +} +RT_EXPORT_SYMBOL(RTLogRelSetDefaultInstance); +#endif /* !IN_RC */ + + +/** + * Write to a logger instance, defaulting to the release one. + * + * This function will check whether the instance, group and flags makes up a + * logging kind which is currently enabled before writing anything to the log. + * + * @param pLogger Pointer to logger instance. If NULL the default release instance is attempted. + * @param fFlags The logging flags. + * @param iGroup The group. + * The value ~0U is reserved for compatibility with RTLogLogger[V] and is + * only for internal usage! + * @param pszFormat Format string. + * @param args Format arguments. + */ +RTDECL(void) RTLogRelLoggerV(PRTLOGGER pLogger, unsigned fFlags, unsigned iGroup, const char *pszFormat, va_list args) +{ + /* + * A NULL logger means default instance. + */ + if (!pLogger) + { + pLogger = RTLogRelGetDefaultInstance(); + if (!pLogger) + return; + } + RTLogLoggerExV(pLogger, fFlags, iGroup, pszFormat, args); +} +RT_EXPORT_SYMBOL(RTLogRelLoggerV); + + +/** + * vprintf like function for writing to the default release log. + * + * @param pszFormat Printf like format string. + * @param args Optional arguments as specified in pszFormat. + * + * @remark The API doesn't support formatting of floating point numbers at the moment. + */ +RTDECL(void) RTLogRelPrintfV(const char *pszFormat, va_list args) +{ + RTLogRelLoggerV(NULL, 0, ~0U, pszFormat, args); +} +RT_EXPORT_SYMBOL(RTLogRelPrintfV); + + +/** + * Changes the buffering setting of the default release logger. + * + * This can be used for optimizing longish logging sequences. + * + * @returns The old state. + * @param fBuffered The new state. + */ +RTDECL(bool) RTLogRelSetBuffering(bool fBuffered) +{ + PRTLOGGER pLogger = RTLogRelGetDefaultInstance(); + if (pLogger) + return RTLogSetBuffering(pLogger, fBuffered); + return false; +} +RT_EXPORT_SYMBOL(RTLogRelSetBuffering); + --- linux-raspi2-4.2.0.orig/ubuntu/vbox/vboxguest/common/log/logrelellipsis.c +++ linux-raspi2-4.2.0/ubuntu/vbox/vboxguest/common/log/logrelellipsis.c @@ -0,0 +1,78 @@ +/* $Id: logrelellipsis.cpp $ */ +/** @file + * Runtime VBox - Logger, the release ellipsis variants. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + + +/******************************************************************************* +* Header Files * +*******************************************************************************/ +#include +#include "internal/iprt.h" + +#include + + +/** + * Write to a logger instance, defaulting to the release one. + * + * This function will check whether the instance, group and flags makes up a + * logging kind which is currently enabled before writing anything to the log. + * + * @param pLogger Pointer to logger instance. + * @param fFlags The logging flags. + * @param iGroup The group. + * The value ~0U is reserved for compatibility with RTLogLogger[V] and is + * only for internal usage! + * @param pszFormat Format string. + * @param ... Format arguments. + * @remark This is a worker function for LogRelIt. + */ +RTDECL(void) RTLogRelLogger(PRTLOGGER pLogger, unsigned fFlags, unsigned iGroup, const char *pszFormat, ...) +{ + va_list args; + va_start(args, pszFormat); + RTLogRelLoggerV(pLogger, fFlags, iGroup, pszFormat, args); + va_end(args); +} +RT_EXPORT_SYMBOL(RTLogRelLogger); + + +/** + * printf like function for writing to the default release log. + * + * @param pszFormat Printf like format string. + * @param ... Optional arguments as specified in pszFormat. + * + * @remark The API doesn't support formatting of floating point numbers at the moment. + */ +RTDECL(void) RTLogRelPrintf(const char *pszFormat, ...) +{ + va_list args; + va_start(args, pszFormat); + RTLogRelPrintfV(pszFormat, args); + va_end(args); +} +RT_EXPORT_SYMBOL(RTLogRelPrintf); + --- linux-raspi2-4.2.0.orig/ubuntu/vbox/vboxguest/common/math/gcc/divdi3.c +++ linux-raspi2-4.2.0/ubuntu/vbox/vboxguest/common/math/gcc/divdi3.c @@ -0,0 +1,70 @@ +/* $NetBSD: divdi3.c,v 1.8 2005/12/11 12:24:37 christos Exp $ */ + +/*- + * Copyright (c) 1992, 1993 + * The Regents of the University of California. All rights reserved. + * + * This software was developed by the Computer Systems Engineering group + * at Lawrence Berkeley Laboratory under DARPA contract BG 91-66 and + * contributed to Berkeley. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the University nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +/*#include +#if defined(LIBC_SCCS) && !defined(lint) +#if 0 +static char sccsid[] = "@(#)divdi3.c 8.1 (Berkeley) 6/4/93"; +#else +__RCSID("$NetBSD: divdi3.c,v 1.8 2005/12/11 12:24:37 christos Exp $"); +#endif +#endif*/ /* LIBC_SCCS and not lint */ + +#include "quad.h" + +/* + * Divide two signed quads. + * ??? if -1/2 should produce -1 on this machine, this code is wrong + */ +quad_t +__divdi3(a, b) + quad_t a, b; +{ + u_quad_t ua, ub, uq; + int neg = 0; + + ua = a; + ub = b; + + if (a < 0) + ua = -ua, neg ^= 1; + if (b < 0) + ub = -ub, neg ^= 1; + + uq = __qdivrem(ua, ub, (u_quad_t *)0); + if (neg) + uq = - uq; + return uq; +} --- linux-raspi2-4.2.0.orig/ubuntu/vbox/vboxguest/common/math/gcc/moddi3.c +++ linux-raspi2-4.2.0/ubuntu/vbox/vboxguest/common/math/gcc/moddi3.c @@ -0,0 +1,70 @@ +/* $NetBSD: moddi3.c,v 1.8 2005/12/11 12:24:37 christos Exp $ */ + +/*- + * Copyright (c) 1992, 1993 + * The Regents of the University of California. All rights reserved. + * + * This software was developed by the Computer Systems Engineering group + * at Lawrence Berkeley Laboratory under DARPA contract BG 91-66 and + * contributed to Berkeley. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the University nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +/*#include +#if defined(LIBC_SCCS) && !defined(lint) +#if 0 +static char sccsid[] = "@(#)moddi3.c 8.1 (Berkeley) 6/4/93"; +#else +__RCSID("$NetBSD: moddi3.c,v 1.8 2005/12/11 12:24:37 christos Exp $"); +#endif +#endif*/ /* LIBC_SCCS and not lint */ + +#include "quad.h" + +/* + * Return remainder after dividing two signed quads. + * + * XXX we assume a % b < 0 iff a < 0, but this is actually machine-dependent. + */ +quad_t +__moddi3(a, b) + quad_t a, b; +{ + u_quad_t ua, ub, ur; + int neg = 0; + + ua = a; + ub = b; + + if (a < 0) + ua = -ua, neg ^= 1; + if (b < 0) + ub = -ub; + (void)__qdivrem(ua, ub, &ur); + if (neg) + ur = -ur; + return (ur); +} --- linux-raspi2-4.2.0.orig/ubuntu/vbox/vboxguest/common/math/gcc/qdivrem.c +++ linux-raspi2-4.2.0/ubuntu/vbox/vboxguest/common/math/gcc/qdivrem.c @@ -0,0 +1,285 @@ +/* $NetBSD: qdivrem.c,v 1.12 2005/12/11 12:24:37 christos Exp $ */ + +/*- + * Copyright (c) 1992, 1993 + * The Regents of the University of California. All rights reserved. + * + * This software was developed by the Computer Systems Engineering group + * at Lawrence Berkeley Laboratory under DARPA contract BG 91-66 and + * contributed to Berkeley. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the University nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +/*#include +#if defined(LIBC_SCCS) && !defined(lint) +#if 0 +static char sccsid[] = "@(#)qdivrem.c 8.1 (Berkeley) 6/4/93"; +#else +__RCSID("$NetBSD: qdivrem.c,v 1.12 2005/12/11 12:24:37 christos Exp $"); +#endif +#endif*/ /* LIBC_SCCS and not lint */ + +/* + * Multiprecision divide. This algorithm is from Knuth vol. 2 (2nd ed), + * section 4.3.1, pp. 257--259. + */ + +#include "quad.h" + +#define B ((int)1 << HALF_BITS) /* digit base */ + +/* Combine two `digits' to make a single two-digit number. */ +#define COMBINE(a, b) (((u_int)(a) << HALF_BITS) | (b)) + +/* select a type for digits in base B: use unsigned short if they fit */ +#if UINT_MAX == 0xffffffffU && USHRT_MAX >= 0xffff +typedef unsigned short digit; +#else +typedef u_int digit; +#endif + +static void shl __P((digit *p, int len, int sh)); + +/* + * __qdivrem(u, v, rem) returns u/v and, optionally, sets *rem to u%v. + * + * We do this in base 2-sup-HALF_BITS, so that all intermediate products + * fit within u_int. As a consequence, the maximum length dividend and + * divisor are 4 `digits' in this base (they are shorter if they have + * leading zeros). + */ +u_quad_t +__qdivrem(uq, vq, arq) + u_quad_t uq, vq, *arq; +{ + union uu tmp; + digit *u, *v, *q; + digit v1, v2; + u_int qhat, rhat, t; + int m, n, d, j, i; + digit uspace[5], vspace[5], qspace[5]; + + /* + * Take care of special cases: divide by zero, and u < v. + */ + if (vq == 0) { + /* divide by zero. */ + static volatile const unsigned int zero = 0; + + tmp.ul[H] = tmp.ul[L] = 1 / zero; + if (arq) + *arq = uq; + return (tmp.q); + } + if (uq < vq) { + if (arq) + *arq = uq; + return (0); + } + u = &uspace[0]; + v = &vspace[0]; + q = &qspace[0]; + + /* + * Break dividend and divisor into digits in base B, then + * count leading zeros to determine m and n. When done, we + * will have: + * u = (u[1]u[2]...u[m+n]) sub B + * v = (v[1]v[2]...v[n]) sub B + * v[1] != 0 + * 1 < n <= 4 (if n = 1, we use a different division algorithm) + * m >= 0 (otherwise u < v, which we already checked) + * m + n = 4 + * and thus + * m = 4 - n <= 2 + */ + tmp.uq = uq; + u[0] = 0; + u[1] = (digit)HHALF(tmp.ul[H]); + u[2] = (digit)LHALF(tmp.ul[H]); + u[3] = (digit)HHALF(tmp.ul[L]); + u[4] = (digit)LHALF(tmp.ul[L]); + tmp.uq = vq; + v[1] = (digit)HHALF(tmp.ul[H]); + v[2] = (digit)LHALF(tmp.ul[H]); + v[3] = (digit)HHALF(tmp.ul[L]); + v[4] = (digit)LHALF(tmp.ul[L]); + for (n = 4; v[1] == 0; v++) { + if (--n == 1) { + u_int rbj; /* r*B+u[j] (not root boy jim) */ + digit q1, q2, q3, q4; + + /* + * Change of plan, per exercise 16. + * r = 0; + * for j = 1..4: + * q[j] = floor((r*B + u[j]) / v), + * r = (r*B + u[j]) % v; + * We unroll this completely here. + */ + t = v[2]; /* nonzero, by definition */ + q1 = (digit)(u[1] / t); + rbj = COMBINE(u[1] % t, u[2]); + q2 = (digit)(rbj / t); + rbj = COMBINE(rbj % t, u[3]); + q3 = (digit)(rbj / t); + rbj = COMBINE(rbj % t, u[4]); + q4 = (digit)(rbj / t); + if (arq) + *arq = rbj % t; + tmp.ul[H] = COMBINE(q1, q2); + tmp.ul[L] = COMBINE(q3, q4); + return (tmp.q); + } + } + + /* + * By adjusting q once we determine m, we can guarantee that + * there is a complete four-digit quotient at &qspace[1] when + * we finally stop. + */ + for (m = 4 - n; u[1] == 0; u++) + m--; + for (i = 4 - m; --i >= 0;) + q[i] = 0; + q += 4 - m; + + /* + * Here we run Program D, translated from MIX to C and acquiring + * a few minor changes. + * + * D1: choose multiplier 1 << d to ensure v[1] >= B/2. + */ + d = 0; + for (t = v[1]; t < B / 2; t <<= 1) + d++; + if (d > 0) { + shl(&u[0], m + n, d); /* u <<= d */ + shl(&v[1], n - 1, d); /* v <<= d */ + } + /* + * D2: j = 0. + */ + j = 0; + v1 = v[1]; /* for D3 -- note that v[1..n] are constant */ + v2 = v[2]; /* for D3 */ + do { + digit uj0, uj1, uj2; + + /* + * D3: Calculate qhat (\^q, in TeX notation). + * Let qhat = min((u[j]*B + u[j+1])/v[1], B-1), and + * let rhat = (u[j]*B + u[j+1]) mod v[1]. + * While rhat < B and v[2]*qhat > rhat*B+u[j+2], + * decrement qhat and increase rhat correspondingly. + * Note that if rhat >= B, v[2]*qhat < rhat*B. + */ + uj0 = u[j + 0]; /* for D3 only -- note that u[j+...] change */ + uj1 = u[j + 1]; /* for D3 only */ + uj2 = u[j + 2]; /* for D3 only */ + if (uj0 == v1) { + qhat = B; + rhat = uj1; + goto qhat_too_big; + } else { + u_int nn = COMBINE(uj0, uj1); + qhat = nn / v1; + rhat = nn % v1; + } + while (v2 * qhat > COMBINE(rhat, uj2)) { + qhat_too_big: + qhat--; + if ((rhat += v1) >= B) + break; + } + /* + * D4: Multiply and subtract. + * The variable `t' holds any borrows across the loop. + * We split this up so that we do not require v[0] = 0, + * and to eliminate a final special case. + */ + for (t = 0, i = n; i > 0; i--) { + t = u[i + j] - v[i] * qhat - t; + u[i + j] = (digit)LHALF(t); + t = (B - HHALF(t)) & (B - 1); + } + t = u[j] - t; + u[j] = (digit)LHALF(t); + /* + * D5: test remainder. + * There is a borrow if and only if HHALF(t) is nonzero; + * in that (rare) case, qhat was too large (by exactly 1). + * Fix it by adding v[1..n] to u[j..j+n]. + */ + if (HHALF(t)) { + qhat--; + for (t = 0, i = n; i > 0; i--) { /* D6: add back. */ + t += u[i + j] + v[i]; + u[i + j] = (digit)LHALF(t); + t = HHALF(t); + } + u[j] = (digit)LHALF(u[j] + t); + } + q[j] = (digit)qhat; + } while (++j <= m); /* D7: loop on j. */ + + /* + * If caller wants the remainder, we have to calculate it as + * u[m..m+n] >> d (this is at most n digits and thus fits in + * u[m+1..m+n], but we may need more source digits). + */ + if (arq) { + if (d) { + for (i = m + n; i > m; --i) + u[i] = (digit)(((u_int)u[i] >> d) | + LHALF((u_int)u[i - 1] << (HALF_BITS - d))); + u[i] = 0; + } + tmp.ul[H] = COMBINE(uspace[1], uspace[2]); + tmp.ul[L] = COMBINE(uspace[3], uspace[4]); + *arq = tmp.q; + } + + tmp.ul[H] = COMBINE(qspace[1], qspace[2]); + tmp.ul[L] = COMBINE(qspace[3], qspace[4]); + return (tmp.q); +} + +/* + * Shift p[0]..p[len] left `sh' bits, ignoring any bits that + * `fall out' the left (there never will be any such anyway). + * We may assume len >= 0. NOTE THAT THIS WRITES len+1 DIGITS. + */ +static void +shl(digit *p, int len, int sh) +{ + int i; + + for (i = 0; i < len; i++) + p[i] = (digit)(LHALF((u_int)p[i] << sh) | + ((u_int)p[i + 1] >> (HALF_BITS - sh))); + p[i] = (digit)(LHALF((u_int)p[i] << sh)); +} --- linux-raspi2-4.2.0.orig/ubuntu/vbox/vboxguest/common/math/gcc/quad.h +++ linux-raspi2-4.2.0/ubuntu/vbox/vboxguest/common/math/gcc/quad.h @@ -0,0 +1,165 @@ +/* $NetBSD: quad.h,v 1.17 2005/12/11 12:24:37 christos Exp $ */ + +/*- + * Copyright (c) 1992, 1993 + * The Regents of the University of California. All rights reserved. + * + * This software was developed by the Computer Systems Engineering group + * at Lawrence Berkeley Laboratory under DARPA contract BG 91-66 and + * contributed to Berkeley. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the University nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * @(#)quad.h 8.1 (Berkeley) 6/4/93 + */ + +/* + * Quad arithmetic. + * + * This library makes the following assumptions: + * + * - The type long long (aka quad_t) exists. + * + * - A quad variable is exactly twice as long as `int'. + * + * - The machine's arithmetic is two's complement. + * + * This library can provide 128-bit arithmetic on a machine with 128-bit + * quads and 64-bit ints, for instance, or 96-bit arithmetic on machines + * with 48-bit ints. + */ + +#if 0 /* iprt */ +#include +#if !defined(_KERNEL) && !defined(_STANDALONE) +#include +#else +#include +#endif +#else /* iprt */ +# include +# include +# undef __P +# define __P(a) a +# undef __GNUC_PREREQ__ +# define __GNUC_PREREQ__(m1,m2) 1 +# if 1 /* ASSUMES: little endian */ +# define _QUAD_HIGHWORD 1 +# define _QUAD_LOWWORD 0 +# else +# define _QUAD_HIGHWORD 0 +# define _QUAD_LOWWORD 1 +# endif +# if !defined(RT_OS_LINUX) || !defined(__KERNEL__) /* (linux/types.h defines u_int) */ + typedef unsigned int u_int; +# endif +# if !defined(RT_OS_SOLARIS) + typedef int64_t quad_t; +# else +# define quad_t int64_t +# endif + typedef uint64_t u_quad_t; + typedef quad_t *qaddr_t; +#endif /* iprt */ + +/* + * Depending on the desired operation, we view a `long long' (aka quad_t) in + * one or more of the following formats. + */ +union uu { + quad_t q; /* as a (signed) quad */ + u_quad_t uq; /* as an unsigned quad */ + int sl[2]; /* as two signed ints */ + u_int ul[2]; /* as two unsigned ints */ +}; + +/* + * Define high and low parts of a quad_t. + */ +#define H _QUAD_HIGHWORD +#define L _QUAD_LOWWORD + +/* + * Total number of bits in a quad_t and in the pieces that make it up. + * These are used for shifting, and also below for halfword extraction + * and assembly. + */ +#define QUAD_BITS (sizeof(quad_t) * CHAR_BIT) +#define INT_BITS (sizeof(int) * CHAR_BIT) +#define HALF_BITS (sizeof(int) * CHAR_BIT / 2) + +/* + * Extract high and low shortwords from longword, and move low shortword of + * longword to upper half of long, i.e., produce the upper longword of + * ((quad_t)(x) << (number_of_bits_in_int/2)). (`x' must actually be u_int.) + * + * These are used in the multiply code, to split a longword into upper + * and lower halves, and to reassemble a product as a quad_t, shifted left + * (sizeof(int)*CHAR_BIT/2). + */ +#define HHALF(x) ((u_int)(x) >> HALF_BITS) +#define LHALF(x) ((u_int)(x) & (((int)1 << HALF_BITS) - 1)) +#define LHUP(x) ((u_int)(x) << HALF_BITS) + +/* + * XXX + * Compensate for gcc 1 vs gcc 2. Gcc 1 defines ?sh?di3's second argument + * as u_quad_t, while gcc 2 correctly uses int. Unfortunately, we still use + * both compilers. + */ +#if __GNUC_PREREQ__(2, 0) || defined(lint) +typedef unsigned int qshift_t; +#else +typedef u_quad_t qshift_t; +#endif + +RT_C_DECLS_BEGIN +quad_t __adddi3 __P((quad_t, quad_t)); +quad_t __anddi3 __P((quad_t, quad_t)); +quad_t __ashldi3 __P((quad_t, qshift_t)); +quad_t __ashrdi3 __P((quad_t, qshift_t)); +int __cmpdi2 __P((quad_t, quad_t )); +quad_t __divdi3 __P((quad_t, quad_t)); +quad_t __fixdfdi __P((double)); +quad_t __fixsfdi __P((float)); +u_quad_t __fixunsdfdi __P((double)); +u_quad_t __fixunssfdi __P((float)); +double __floatdidf __P((quad_t)); +float __floatdisf __P((quad_t)); +double __floatunsdidf __P((u_quad_t)); +quad_t __iordi3 __P((quad_t, quad_t)); +quad_t __lshldi3 __P((quad_t, qshift_t)); +quad_t __lshrdi3 __P((quad_t, qshift_t)); +quad_t __moddi3 __P((quad_t, quad_t)); +quad_t __muldi3 __P((quad_t, quad_t)); +quad_t __negdi2 __P((quad_t)); +quad_t __one_cmpldi2 __P((quad_t)); +u_quad_t __qdivrem __P((u_quad_t, u_quad_t, u_quad_t *)); +quad_t __subdi3 __P((quad_t, quad_t)); +int __ucmpdi2 __P((u_quad_t, u_quad_t)); +u_quad_t __udivdi3 __P((u_quad_t, u_quad_t )); +u_quad_t __umoddi3 __P((u_quad_t, u_quad_t )); +quad_t __xordi3 __P((quad_t, quad_t)); +RT_C_DECLS_END --- linux-raspi2-4.2.0.orig/ubuntu/vbox/vboxguest/common/math/gcc/udivdi3.c +++ linux-raspi2-4.2.0/ubuntu/vbox/vboxguest/common/math/gcc/udivdi3.c @@ -0,0 +1,56 @@ +/* $NetBSD: udivdi3.c,v 1.8 2005/12/11 12:24:37 christos Exp $ */ + +/*- + * Copyright (c) 1992, 1993 + * The Regents of the University of California. All rights reserved. + * + * This software was developed by the Computer Systems Engineering group + * at Lawrence Berkeley Laboratory under DARPA contract BG 91-66 and + * contributed to Berkeley. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the University nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +/*#include +#if defined(LIBC_SCCS) && !defined(lint) +#if 0 +static char sccsid[] = "@(#)udivdi3.c 8.1 (Berkeley) 6/4/93"; +#else +__RCSID("$NetBSD: udivdi3.c,v 1.8 2005/12/11 12:24:37 christos Exp $"); +#endif +#endif*/ /* LIBC_SCCS and not lint */ + +#include "quad.h" + +/* + * Divide two unsigned quads. + */ +u_quad_t +__udivdi3(a, b) + u_quad_t a, b; +{ + + return (__qdivrem(a, b, (u_quad_t *)0)); +} --- linux-raspi2-4.2.0.orig/ubuntu/vbox/vboxguest/common/math/gcc/umoddi3.c +++ linux-raspi2-4.2.0/ubuntu/vbox/vboxguest/common/math/gcc/umoddi3.c @@ -0,0 +1,58 @@ +/* $NetBSD: umoddi3.c,v 1.8 2005/12/11 12:24:37 christos Exp $ */ + +/*- + * Copyright (c) 1992, 1993 + * The Regents of the University of California. All rights reserved. + * + * This software was developed by the Computer Systems Engineering group + * at Lawrence Berkeley Laboratory under DARPA contract BG 91-66 and + * contributed to Berkeley. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the University nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +/*#include +#if defined(LIBC_SCCS) && !defined(lint) +#if 0 +static char sccsid[] = "@(#)umoddi3.c 8.1 (Berkeley) 6/4/93"; +#else +__RCSID("$NetBSD: umoddi3.c,v 1.8 2005/12/11 12:24:37 christos Exp $"); +#endif +#endif*/ /* LIBC_SCCS and not lint */ + +#include "quad.h" + +/* + * Return remainder after dividing two unsigned quads. + */ +u_quad_t +__umoddi3(a, b) + u_quad_t a, b; +{ + u_quad_t r; + + (void)__qdivrem(a, b, &r); + return (r); +} --- linux-raspi2-4.2.0.orig/ubuntu/vbox/vboxguest/common/misc/RTAssertMsg1Weak.c +++ linux-raspi2-4.2.0/ubuntu/vbox/vboxguest/common/misc/RTAssertMsg1Weak.c @@ -0,0 +1,42 @@ +/* $Id: RTAssertMsg1Weak.cpp $ */ +/** @file + * IPRT - RTAssertMsg1Weak. + */ + +/* + * Copyright (C) 2008-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + + +/******************************************************************************* +* Header Files * +*******************************************************************************/ +#include +#include "internal/iprt.h" + +#include + + +RTDECL(void) RTAssertMsg1Weak(const char *pszExpr, unsigned uLine, const char *pszFile, const char *pszFunction) +{ + RTAssertMsg1(pszExpr, uLine, pszFile, pszFunction); +} +RT_EXPORT_SYMBOL(RTAssertMsg1Weak); + --- linux-raspi2-4.2.0.orig/ubuntu/vbox/vboxguest/common/misc/RTAssertMsg2.c +++ linux-raspi2-4.2.0/ubuntu/vbox/vboxguest/common/misc/RTAssertMsg2.c @@ -0,0 +1,45 @@ +/* $Id: RTAssertMsg2.cpp $ */ +/** @file + * IPRT - RTAssertMsg2. + */ + +/* + * Copyright (C) 2008-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + + +/******************************************************************************* +* Header Files * +*******************************************************************************/ +#include +#include "internal/iprt.h" + +#include + + +RTDECL(void) RTAssertMsg2(const char *pszFormat, ...) +{ + va_list va; + va_start(va, pszFormat); + RTAssertMsg2V(pszFormat, va); + va_end(va); +} +RT_EXPORT_SYMBOL(RTAssertMsg2); + --- linux-raspi2-4.2.0.orig/ubuntu/vbox/vboxguest/common/misc/RTAssertMsg2Add.c +++ linux-raspi2-4.2.0/ubuntu/vbox/vboxguest/common/misc/RTAssertMsg2Add.c @@ -0,0 +1,45 @@ +/* $Id: RTAssertMsg2Add.cpp $ */ +/** @file + * IPRT - RTAssertMsg2Add. + */ + +/* + * Copyright (C) 2008-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + + +/******************************************************************************* +* Header Files * +*******************************************************************************/ +#include +#include "internal/iprt.h" + +#include + + +RTDECL(void) RTAssertMsg2Add(const char *pszFormat, ...) +{ + va_list va; + va_start(va, pszFormat); + RTAssertMsg2AddV(pszFormat, va); + va_end(va); +} +RT_EXPORT_SYMBOL(RTAssertMsg2Add); + --- linux-raspi2-4.2.0.orig/ubuntu/vbox/vboxguest/common/misc/RTAssertMsg2AddWeak.c +++ linux-raspi2-4.2.0/ubuntu/vbox/vboxguest/common/misc/RTAssertMsg2AddWeak.c @@ -0,0 +1,45 @@ +/* $Id: RTAssertMsg2AddWeak.cpp $ */ +/** @file + * IPRT - RTAssertMsg2AddWeak. + */ + +/* + * Copyright (C) 2008-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + + +/******************************************************************************* +* Header Files * +*******************************************************************************/ +#include +#include "internal/iprt.h" + +#include + + +RTDECL(void) RTAssertMsg2AddWeak(const char *pszFormat, ...) +{ + va_list va; + va_start(va, pszFormat); + RTAssertMsg2AddWeakV(pszFormat, va); + va_end(va); +} +RT_EXPORT_SYMBOL(RTAssertMsg2AddWeak); + --- linux-raspi2-4.2.0.orig/ubuntu/vbox/vboxguest/common/misc/RTAssertMsg2AddWeakV.c +++ linux-raspi2-4.2.0/ubuntu/vbox/vboxguest/common/misc/RTAssertMsg2AddWeakV.c @@ -0,0 +1,40 @@ +/* $Id: RTAssertMsg2AddWeakV.cpp $ */ +/** @file + * IPRT - RTAssertMsg2AddWeakV. + */ + +/* + * Copyright (C) 2009-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + + +/******************************************************************************* +* Header Files * +*******************************************************************************/ +#include +#include "internal/iprt.h" + + +RTDECL(void) RTAssertMsg2AddWeakV(const char *pszFormat, va_list va) +{ + RTAssertMsg2AddV(pszFormat, va); +} +RT_EXPORT_SYMBOL(RTAssertMsg2AddWeakV); + --- linux-raspi2-4.2.0.orig/ubuntu/vbox/vboxguest/common/misc/RTAssertMsg2Weak.c +++ linux-raspi2-4.2.0/ubuntu/vbox/vboxguest/common/misc/RTAssertMsg2Weak.c @@ -0,0 +1,45 @@ +/* $Id: RTAssertMsg2Weak.cpp $ */ +/** @file + * IPRT - RTAssertMsg2Weak. + */ + +/* + * Copyright (C) 2008-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + + +/******************************************************************************* +* Header Files * +*******************************************************************************/ +#include +#include "internal/iprt.h" + +#include + + +RTDECL(void) RTAssertMsg2Weak(const char *pszFormat, ...) +{ + va_list va; + va_start(va, pszFormat); + RTAssertMsg2WeakV(pszFormat, va); + va_end(va); +} +RT_EXPORT_SYMBOL(RTAssertMsg2Weak); + --- linux-raspi2-4.2.0.orig/ubuntu/vbox/vboxguest/common/misc/RTAssertMsg2WeakV.c +++ linux-raspi2-4.2.0/ubuntu/vbox/vboxguest/common/misc/RTAssertMsg2WeakV.c @@ -0,0 +1,40 @@ +/* $Id: RTAssertMsg2WeakV.cpp $ */ +/** @file + * IPRT - RTAssertMsg2WeakV. + */ + +/* + * Copyright (C) 2009-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + + +/******************************************************************************* +* Header Files * +*******************************************************************************/ +#include +#include "internal/iprt.h" + + +RTDECL(void) RTAssertMsg2WeakV(const char *pszFormat, va_list va) +{ + RTAssertMsg2V(pszFormat, va); +} +RT_EXPORT_SYMBOL(RTAssertMsg2WeakV); + --- linux-raspi2-4.2.0.orig/ubuntu/vbox/vboxguest/common/misc/assert.c +++ linux-raspi2-4.2.0/ubuntu/vbox/vboxguest/common/misc/assert.c @@ -0,0 +1,307 @@ +/* $Id: assert.cpp $ */ +/** @file + * IPRT - Assertions, common code. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + + +/******************************************************************************* +* Header Files * +*******************************************************************************/ +#include +#include "internal/iprt.h" + +#include +#include +#include +#include +#include +#ifdef IN_RING3 +# include +#endif +#include "internal/assert.h" + + +/******************************************************************************* +* Global Variables * +*******************************************************************************/ +/** The last assert message, 1st part. */ +RTDATADECL(char) g_szRTAssertMsg1[1024]; +RT_EXPORT_SYMBOL(g_szRTAssertMsg1); +/** The last assert message, 2nd part. */ +RTDATADECL(char) g_szRTAssertMsg2[4096]; +RT_EXPORT_SYMBOL(g_szRTAssertMsg2); +/** The length of the g_szRTAssertMsg2 content. + * @remarks Race. */ +static uint32_t volatile g_cchRTAssertMsg2; +/** The last assert message, expression. */ +RTDATADECL(const char * volatile) g_pszRTAssertExpr; +RT_EXPORT_SYMBOL(g_pszRTAssertExpr); +/** The last assert message, function name. */ +RTDATADECL(const char * volatile) g_pszRTAssertFunction; +RT_EXPORT_SYMBOL(g_pszRTAssertFunction); +/** The last assert message, file name. */ +RTDATADECL(const char * volatile) g_pszRTAssertFile; +RT_EXPORT_SYMBOL(g_pszRTAssertFile); +/** The last assert message, line number. */ +RTDATADECL(uint32_t volatile) g_u32RTAssertLine; +RT_EXPORT_SYMBOL(g_u32RTAssertLine); + + +/** Set if assertions are quiet. */ +static bool volatile g_fQuiet = false; +/** Set if assertions may panic. */ +static bool volatile g_fMayPanic = true; + + +RTDECL(bool) RTAssertSetQuiet(bool fQuiet) +{ + return ASMAtomicXchgBool(&g_fQuiet, fQuiet); +} +RT_EXPORT_SYMBOL(RTAssertSetQuiet); + + +RTDECL(bool) RTAssertAreQuiet(void) +{ + return ASMAtomicUoReadBool(&g_fQuiet); +} +RT_EXPORT_SYMBOL(RTAssertAreQuiet); + + +RTDECL(bool) RTAssertSetMayPanic(bool fMayPanic) +{ + return ASMAtomicXchgBool(&g_fMayPanic, fMayPanic); +} +RT_EXPORT_SYMBOL(RTAssertSetMayPanic); + + +RTDECL(bool) RTAssertMayPanic(void) +{ + return ASMAtomicUoReadBool(&g_fMayPanic); +} +RT_EXPORT_SYMBOL(RTAssertMayPanic); + + +RTDECL(void) RTAssertMsg1(const char *pszExpr, unsigned uLine, const char *pszFile, const char *pszFunction) +{ + /* + * Fill in the globals. + */ + ASMAtomicUoWritePtr(&g_pszRTAssertExpr, pszExpr); + ASMAtomicUoWritePtr(&g_pszRTAssertFile, pszFile); + ASMAtomicUoWritePtr(&g_pszRTAssertFunction, pszFunction); + ASMAtomicUoWriteU32(&g_u32RTAssertLine, uLine); + RTStrPrintf(g_szRTAssertMsg1, sizeof(g_szRTAssertMsg1), + "\n!!Assertion Failed!!\n" + "Expression: %s\n" + "Location : %s(%d) %s\n", + pszExpr, pszFile, uLine, pszFunction); + + /* + * If not quiet, make noise. + */ + if (!RTAssertAreQuiet()) + { + RTERRVARS SavedErrVars; + RTErrVarsSave(&SavedErrVars); + +#ifdef IN_RING0 +# ifdef IN_GUEST_R0 + RTLogBackdoorPrintf("\n!!Assertion Failed!!\n" + "Expression: %s\n" + "Location : %s(%d) %s\n", + pszExpr, pszFile, uLine, pszFunction); +# endif + /** @todo fully integrate this with the logger... play safe a bit for now. */ + rtR0AssertNativeMsg1(pszExpr, uLine, pszFile, pszFunction); + +#else /* !IN_RING0 */ +# if !defined(IN_RING3) && !defined(LOG_NO_COM) +# if 0 /* Enable this iff you have a COM port and really want this debug info. */ + RTLogComPrintf("\n!!Assertion Failed!!\n" + "Expression: %s\n" + "Location : %s(%d) %s\n", + pszExpr, pszFile, uLine, pszFunction); +# endif +# endif + + PRTLOGGER pLog = RTLogRelGetDefaultInstance(); + if (pLog) + { + RTLogRelPrintf("\n!!Assertion Failed!!\n" + "Expression: %s\n" + "Location : %s(%d) %s\n", + pszExpr, pszFile, uLine, pszFunction); +# ifndef IN_RC /* flushing is done automatically in RC */ + RTLogFlush(pLog); +# endif + } + +# ifndef LOG_ENABLED + if (!pLog) +# endif + { + pLog = RTLogDefaultInstance(); + if (pLog) + { + RTLogPrintf("\n!!Assertion Failed!!\n" + "Expression: %s\n" + "Location : %s(%d) %s\n", + pszExpr, pszFile, uLine, pszFunction); +# ifndef IN_RC /* flushing is done automatically in RC */ + RTLogFlush(pLog); +# endif + } + } + +# ifdef IN_RING3 + /* print to stderr, helps user and gdb debugging. */ + fprintf(stderr, + "\n!!Assertion Failed!!\n" + "Expression: %s\n" + "Location : %s(%d) %s\n", + VALID_PTR(pszExpr) ? pszExpr : "", + VALID_PTR(pszFile) ? pszFile : "", + uLine, + VALID_PTR(pszFunction) ? pszFunction : ""); + fflush(stderr); +# endif +#endif /* !IN_RING0 */ + + RTErrVarsRestore(&SavedErrVars); + } +} +RT_EXPORT_SYMBOL(RTAssertMsg1); + + +/** + * Worker for RTAssertMsg2V and RTAssertMsg2AddV + * + * @param fInitial True if it's RTAssertMsg2V, otherwise false. + * @param pszFormat The message format string. + * @param va The format arguments. + */ +static void rtAssertMsg2Worker(bool fInitial, const char *pszFormat, va_list va) +{ + va_list vaCopy; + size_t cch; + + /* + * The global first. + */ + if (fInitial) + { + va_copy(vaCopy, va); + cch = RTStrPrintfV(g_szRTAssertMsg2, sizeof(g_szRTAssertMsg2), pszFormat, vaCopy); + ASMAtomicWriteU32(&g_cchRTAssertMsg2, (uint32_t)cch); + va_end(vaCopy); + } + else + { + cch = ASMAtomicReadU32(&g_cchRTAssertMsg2); + if (cch < sizeof(g_szRTAssertMsg2) - 4) + { + va_copy(vaCopy, va); + cch += RTStrPrintfV(&g_szRTAssertMsg2[cch], sizeof(g_szRTAssertMsg2) - cch, pszFormat, vaCopy); + ASMAtomicWriteU32(&g_cchRTAssertMsg2, (uint32_t)cch); + va_end(vaCopy); + } + } + + /* + * If not quiet, make some noise. + */ + if (!RTAssertAreQuiet()) + { + RTERRVARS SavedErrVars; + RTErrVarsSave(&SavedErrVars); + +#ifdef IN_RING0 +# ifdef IN_GUEST_R0 + va_copy(vaCopy, va); + RTLogBackdoorPrintfV(pszFormat, vaCopy); + va_end(vaCopy); +# endif + /** @todo fully integrate this with the logger... play safe a bit for now. */ + rtR0AssertNativeMsg2V(fInitial, pszFormat, va); + +#else /* !IN_RING0 */ +# if !defined(IN_RING3) && !defined(LOG_NO_COM) +# if 0 /* Enable this iff you have a COM port and really want this debug info. */ + va_copy(vaCopy, va); + RTLogComPrintfV(pszFormat, vaCopy); + va_end(vaCopy); +# endif +# endif + + PRTLOGGER pLog = RTLogRelGetDefaultInstance(); + if (pLog) + { + va_copy(vaCopy, va); + RTLogRelPrintfV(pszFormat, vaCopy); + va_end(vaCopy); +# ifndef IN_RC /* flushing is done automatically in RC */ + RTLogFlush(pLog); +# endif + } + + pLog = RTLogDefaultInstance(); + if (pLog) + { + va_copy(vaCopy, va); + RTLogPrintfV(pszFormat, vaCopy); + va_end(vaCopy); +# ifndef IN_RC /* flushing is done automatically in RC */ + RTLogFlush(pLog); +#endif + } + +# ifdef IN_RING3 + /* print to stderr, helps user and gdb debugging. */ + char szMsg[sizeof(g_szRTAssertMsg2)]; + va_copy(vaCopy, va); + RTStrPrintfV(szMsg, sizeof(szMsg), pszFormat, vaCopy); + va_end(vaCopy); + fprintf(stderr, "%s", szMsg); + fflush(stderr); +# endif +#endif /* !IN_RING0 */ + + RTErrVarsRestore(&SavedErrVars); + } +} + + +RTDECL(void) RTAssertMsg2V(const char *pszFormat, va_list va) +{ + rtAssertMsg2Worker(true /*fInitial*/, pszFormat, va); +} +RT_EXPORT_SYMBOL(RTAssertMsg2V); + + +RTDECL(void) RTAssertMsg2AddV(const char *pszFormat, va_list va) +{ + rtAssertMsg2Worker(false /*fInitial*/, pszFormat, va); +} +RT_EXPORT_SYMBOL(RTAssertMsg2AddV); + --- linux-raspi2-4.2.0.orig/ubuntu/vbox/vboxguest/common/misc/thread.c +++ linux-raspi2-4.2.0/ubuntu/vbox/vboxguest/common/misc/thread.c @@ -0,0 +1,1586 @@ +/* $Id: thread.cpp $ */ +/** @file + * IPRT - Threads, common routines. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + + +/******************************************************************************* +* Header Files * +*******************************************************************************/ +#define LOG_GROUP RTLOGGROUP_THREAD +#include +#include "internal/iprt.h" + +#include +#include +#include +#include +#include +#include +#ifdef IN_RING0 +# include +#endif +#include +#include +#include +#include "internal/magics.h" +#include "internal/thread.h" +#include "internal/sched.h" +#include "internal/process.h" +#ifdef RT_WITH_ICONV_CACHE +# include "internal/string.h" +#endif + + +/******************************************************************************* +* Defined Constants And Macros * +*******************************************************************************/ +#ifdef IN_RING0 +# define RT_THREAD_LOCK_RW() RTSpinlockAcquire(g_ThreadSpinlock) +# define RT_THREAD_UNLOCK_RW() RTSpinlockRelease(g_ThreadSpinlock) +# define RT_THREAD_LOCK_RD() RTSpinlockAcquire(g_ThreadSpinlock) +# define RT_THREAD_UNLOCK_RD() RTSpinlockRelease(g_ThreadSpinlock) +#else +# define RT_THREAD_LOCK_RW() rtThreadLockRW() +# define RT_THREAD_UNLOCK_RW() rtThreadUnLockRW() +# define RT_THREAD_LOCK_RD() rtThreadLockRD() +# define RT_THREAD_UNLOCK_RD() rtThreadUnLockRD() +#endif + + +/******************************************************************************* +* Global Variables * +*******************************************************************************/ +/** The AVL thread containing the threads. */ +static PAVLPVNODECORE g_ThreadTree; +/** The number of threads in the tree (for ring-0 termination kludge). */ +static uint32_t volatile g_cThreadInTree; +#ifdef IN_RING3 +/** The RW lock protecting the tree. */ +static RTSEMRW g_ThreadRWSem = NIL_RTSEMRW; +#else +/** The spinlocks protecting the tree. */ +static RTSPINLOCK g_ThreadSpinlock = NIL_RTSPINLOCK; +#endif +/** Indicates whether we've been initialized or not. */ +static bool g_frtThreadInitialized; + + +/******************************************************************************* +* Internal Functions * +*******************************************************************************/ +static void rtThreadDestroy(PRTTHREADINT pThread); +#ifdef IN_RING3 +static int rtThreadAdopt(RTTHREADTYPE enmType, unsigned fFlags, uint32_t fIntFlags, const char *pszName); +#endif +static void rtThreadRemoveLocked(PRTTHREADINT pThread); +static PRTTHREADINT rtThreadAlloc(RTTHREADTYPE enmType, unsigned fFlags, uint32_t fIntFlags, const char *pszName); + + +/** @page pg_rt_thread IPRT Thread Internals + * + * IPRT provides interface to whatever native threading that the host provides, + * preferably using a CRT level interface to better integrate with other libraries. + * + * Internally IPRT keeps track of threads by means of the RTTHREADINT structure. + * All the RTTHREADINT structures are kept in a AVL tree which is protected by a + * read/write lock for efficient access. A thread is inserted into the tree in + * three places in the code. The main thread is 'adopted' by IPRT on rtR3Init() + * by rtThreadAdopt(). When creating a new thread there the child and the parent + * race inserting the thread, this is rtThreadMain() and RTThreadCreate. + * + * RTTHREADINT objects are using reference counting as a mean of sticking around + * till no-one needs them any longer. Waitable threads is created with one extra + * reference so they won't go away until they are waited on. This introduces a + * major problem if we use the host thread identifier as key in the AVL tree - the + * host may reuse the thread identifier before the thread was waited on. So, on + * most platforms we are using the RTTHREADINT pointer as key and not the + * thread id. RTThreadSelf() then have to be implemented using a pointer stored + * in thread local storage (TLS). + * + * In Ring-0 we only try keep track of kernel threads created by RTThreadCreate + * at the moment. There we really only need the 'join' feature, but doing things + * the same way allow us to name threads and similar stuff. + */ + + +/** + * Initializes the thread database. + * + * @returns iprt status code. + */ +DECLHIDDEN(int) rtThreadInit(void) +{ +#ifdef IN_RING3 + int rc = VINF_ALREADY_INITIALIZED; + if (g_ThreadRWSem == NIL_RTSEMRW) + { + /* + * We assume the caller is the 1st thread, which we'll call 'main'. + * But first, we'll create the semaphore. + */ + rc = RTSemRWCreateEx(&g_ThreadRWSem, RTSEMRW_FLAGS_NO_LOCK_VAL, NIL_RTLOCKVALCLASS, RTLOCKVAL_SUB_CLASS_NONE, NULL); + if (RT_SUCCESS(rc)) + { + rc = rtThreadNativeInit(); + if (RT_SUCCESS(rc)) + rc = rtThreadAdopt(RTTHREADTYPE_DEFAULT, 0, RTTHREADINT_FLAGS_MAIN, "main"); + if (RT_SUCCESS(rc)) + rc = rtSchedNativeCalcDefaultPriority(RTTHREADTYPE_DEFAULT); + if (RT_SUCCESS(rc)) + { + g_frtThreadInitialized = true; + return VINF_SUCCESS; + } + + /* failed, clear out */ + RTSemRWDestroy(g_ThreadRWSem); + g_ThreadRWSem = NIL_RTSEMRW; + } + } + +#elif defined(IN_RING0) + int rc; + /* + * Create the spinlock and to native init. + */ + Assert(g_ThreadSpinlock == NIL_RTSPINLOCK); + rc = RTSpinlockCreate(&g_ThreadSpinlock, RTSPINLOCK_FLAGS_INTERRUPT_SAFE, "RTThread"); + if (RT_SUCCESS(rc)) + { + rc = rtThreadNativeInit(); + if (RT_SUCCESS(rc)) + { + g_frtThreadInitialized = true; + return VINF_SUCCESS; + } + + /* failed, clear out */ + RTSpinlockDestroy(g_ThreadSpinlock); + g_ThreadSpinlock = NIL_RTSPINLOCK; + } +#else +# error "!IN_RING0 && !IN_RING3" +#endif + return rc; +} + + +#ifdef IN_RING3 +/** + * Called when IPRT was first initialized in unobtrusive mode and later changed + * to obtrustive. + * + * This is only applicable in ring-3. + */ +DECLHIDDEN(void) rtThreadReInitObtrusive(void) +{ + rtThreadNativeReInitObtrusive(); +} +#endif + + +/** + * Terminates the thread database. + */ +DECLHIDDEN(void) rtThreadTerm(void) +{ +#ifdef IN_RING3 + /* we don't cleanup here yet */ + +#elif defined(IN_RING0) + /* just destroy the spinlock and assume the thread is fine... */ + RTSpinlockDestroy(g_ThreadSpinlock); + g_ThreadSpinlock = NIL_RTSPINLOCK; + if (g_ThreadTree != NULL) + RTAssertMsg2Weak("WARNING: g_ThreadTree=%p\n", g_ThreadTree); +#endif +} + + +#ifdef IN_RING3 + +DECLINLINE(void) rtThreadLockRW(void) +{ + if (g_ThreadRWSem == NIL_RTSEMRW) + rtThreadInit(); + int rc = RTSemRWRequestWrite(g_ThreadRWSem, RT_INDEFINITE_WAIT); + AssertReleaseRC(rc); +} + + +DECLINLINE(void) rtThreadLockRD(void) +{ + if (g_ThreadRWSem == NIL_RTSEMRW) + rtThreadInit(); + int rc = RTSemRWRequestRead(g_ThreadRWSem, RT_INDEFINITE_WAIT); + AssertReleaseRC(rc); +} + + +DECLINLINE(void) rtThreadUnLockRW(void) +{ + int rc = RTSemRWReleaseWrite(g_ThreadRWSem); + AssertReleaseRC(rc); +} + + +DECLINLINE(void) rtThreadUnLockRD(void) +{ + int rc = RTSemRWReleaseRead(g_ThreadRWSem); + AssertReleaseRC(rc); +} + + +/** + * Adopts the calling thread. + * No locks are taken or released by this function. + */ +static int rtThreadAdopt(RTTHREADTYPE enmType, unsigned fFlags, uint32_t fIntFlags, const char *pszName) +{ + int rc; + PRTTHREADINT pThread; + Assert(!(fFlags & RTTHREADFLAGS_WAITABLE)); + fFlags &= ~RTTHREADFLAGS_WAITABLE; + + /* + * Allocate and insert the thread. + * (It is vital that rtThreadNativeAdopt updates the TLS before + * we try inserting the thread because of locking.) + */ + rc = VERR_NO_MEMORY; + pThread = rtThreadAlloc(enmType, fFlags, RTTHREADINT_FLAGS_ALIEN | fIntFlags, pszName); + if (pThread) + { + RTNATIVETHREAD NativeThread = RTThreadNativeSelf(); + rc = rtThreadNativeAdopt(pThread); + if (RT_SUCCESS(rc)) + { + rtThreadInsert(pThread, NativeThread); + rtThreadSetState(pThread, RTTHREADSTATE_RUNNING); + rtThreadRelease(pThread); + } + } + return rc; +} + +/** + * Adopts a non-IPRT thread. + * + * @returns IPRT status code. + * @param enmType The thread type. + * @param fFlags The thread flags. RTTHREADFLAGS_WAITABLE is not currently allowed. + * @param pszName The thread name. Optional. + * @param pThread Where to store the thread handle. Optional. + */ +RTDECL(int) RTThreadAdopt(RTTHREADTYPE enmType, unsigned fFlags, const char *pszName, PRTTHREAD pThread) +{ + int rc; + RTTHREAD Thread; + + AssertReturn(!(fFlags & RTTHREADFLAGS_WAITABLE), VERR_INVALID_PARAMETER); + AssertReturn(!pszName || VALID_PTR(pszName), VERR_INVALID_POINTER); + AssertReturn(!pThread || VALID_PTR(pThread), VERR_INVALID_POINTER); + + rc = VINF_SUCCESS; + Thread = RTThreadSelf(); + if (Thread == NIL_RTTHREAD) + { + /* generate a name if none was given. */ + char szName[RTTHREAD_NAME_LEN]; + if (!pszName || !*pszName) + { + static uint32_t s_i32AlienId = 0; + uint32_t i32Id = ASMAtomicIncU32(&s_i32AlienId); + RTStrPrintf(szName, sizeof(szName), "ALIEN-%RX32", i32Id); + pszName = szName; + } + + /* try adopt it */ + rc = rtThreadAdopt(enmType, fFlags, 0, pszName); + Thread = RTThreadSelf(); + Log(("RTThreadAdopt: %RTthrd %RTnthrd '%s' enmType=%d fFlags=%#x rc=%Rrc\n", + Thread, RTThreadNativeSelf(), pszName, enmType, fFlags, rc)); + } + else + Log(("RTThreadAdopt: %RTthrd %RTnthrd '%s' enmType=%d fFlags=%#x - already adopted!\n", + Thread, RTThreadNativeSelf(), pszName, enmType, fFlags)); + + if (pThread) + *pThread = Thread; + return rc; +} +RT_EXPORT_SYMBOL(RTThreadAdopt); + + +/** + * Get the thread handle of the current thread, automatically adopting alien + * threads. + * + * @returns Thread handle. + */ +RTDECL(RTTHREAD) RTThreadSelfAutoAdopt(void) +{ + RTTHREAD hSelf = RTThreadSelf(); + if (RT_UNLIKELY(hSelf == NIL_RTTHREAD)) + RTThreadAdopt(RTTHREADTYPE_DEFAULT, 0, NULL, &hSelf); + return hSelf; +} +RT_EXPORT_SYMBOL(RTThreadSelfAutoAdopt); + +#endif /* IN_RING3 */ + +/** + * Allocates a per thread data structure and initializes the basic fields. + * + * @returns Pointer to per thread data structure. + * This is reference once. + * @returns NULL on failure. + * @param enmType The thread type. + * @param fFlags The thread flags. + * @param fIntFlags The internal thread flags. + * @param pszName Pointer to the thread name. + */ +PRTTHREADINT rtThreadAlloc(RTTHREADTYPE enmType, unsigned fFlags, uint32_t fIntFlags, const char *pszName) +{ + PRTTHREADINT pThread = (PRTTHREADINT)RTMemAllocZ(sizeof(RTTHREADINT)); + if (pThread) + { + size_t cchName; + int rc; + + pThread->Core.Key = (void*)NIL_RTTHREAD; + pThread->u32Magic = RTTHREADINT_MAGIC; + cchName = strlen(pszName); + if (cchName >= RTTHREAD_NAME_LEN) + cchName = RTTHREAD_NAME_LEN - 1; + memcpy(pThread->szName, pszName, cchName); + pThread->szName[cchName] = '\0'; + pThread->cRefs = 2 + !!(fFlags & RTTHREADFLAGS_WAITABLE); /* And extra reference if waitable. */ + pThread->rc = VERR_PROCESS_RUNNING; /** @todo get a better error code! */ + pThread->enmType = enmType; + pThread->fFlags = fFlags; + pThread->fIntFlags = fIntFlags; + pThread->enmState = RTTHREADSTATE_INITIALIZING; + pThread->fReallySleeping = false; +#ifdef IN_RING3 + rtLockValidatorInitPerThread(&pThread->LockValidator); +#endif +#ifdef RT_WITH_ICONV_CACHE + rtStrIconvCacheInit(pThread); +#endif + rc = RTSemEventMultiCreate(&pThread->EventUser); + if (RT_SUCCESS(rc)) + { + rc = RTSemEventMultiCreate(&pThread->EventTerminated); + if (RT_SUCCESS(rc)) + return pThread; + RTSemEventMultiDestroy(pThread->EventUser); + } + RTMemFree(pThread); + } + return NULL; +} + + +/** + * Insert the per thread data structure into the tree. + * + * This can be called from both the thread it self and the parent, + * thus it must handle insertion failures in a nice manner. + * + * @param pThread Pointer to thread structure allocated by rtThreadAlloc(). + * @param NativeThread The native thread id. + */ +DECLHIDDEN(void) rtThreadInsert(PRTTHREADINT pThread, RTNATIVETHREAD NativeThread) +{ + Assert(pThread); + Assert(pThread->u32Magic == RTTHREADINT_MAGIC); + + { + RT_THREAD_LOCK_RW(); + + /* + * Do not insert a terminated thread. + * + * This may happen if the thread finishes before the RTThreadCreate call + * gets this far. Since the OS may quickly reuse the native thread ID + * it should not be reinserted at this point. + */ + if (rtThreadGetState(pThread) != RTTHREADSTATE_TERMINATED) + { + /* + * Before inserting we must check if there is a thread with this id + * in the tree already. We're racing parent and child on insert here + * so that the handle is valid in both ends when they return / start. + * + * If it's not ourself we find, it's a dead alien thread and we will + * unlink it from the tree. Alien threads will be released at this point. + */ + PRTTHREADINT pThreadOther = (PRTTHREADINT)RTAvlPVGet(&g_ThreadTree, (void *)NativeThread); + if (pThreadOther != pThread) + { + bool fRc; + /* remove dead alien if any */ + if (pThreadOther) + { + AssertMsg(pThreadOther->fIntFlags & RTTHREADINT_FLAGS_ALIEN, ("%p:%s; %p:%s\n", pThread, pThread->szName, pThreadOther, pThreadOther->szName)); + ASMAtomicBitClear(&pThread->fIntFlags, RTTHREADINT_FLAG_IN_TREE_BIT); + rtThreadRemoveLocked(pThreadOther); + if (pThreadOther->fIntFlags & RTTHREADINT_FLAGS_ALIEN) + rtThreadRelease(pThreadOther); + } + + /* insert the thread */ + ASMAtomicWritePtr(&pThread->Core.Key, (void *)NativeThread); + fRc = RTAvlPVInsert(&g_ThreadTree, &pThread->Core); + ASMAtomicOrU32(&pThread->fIntFlags, RTTHREADINT_FLAG_IN_TREE); + if (fRc) + ASMAtomicIncU32(&g_cThreadInTree); + + AssertReleaseMsg(fRc, ("Lock problem? %p (%RTnthrd) %s\n", pThread, NativeThread, pThread->szName)); + NOREF(fRc); + } + } + + RT_THREAD_UNLOCK_RW(); + } +} + + +/** + * Removes the thread from the AVL tree, call owns the tree lock + * and has cleared the RTTHREADINT_FLAG_IN_TREE bit. + * + * @param pThread The thread to remove. + */ +static void rtThreadRemoveLocked(PRTTHREADINT pThread) +{ + PRTTHREADINT pThread2 = (PRTTHREADINT)RTAvlPVRemove(&g_ThreadTree, pThread->Core.Key); +#if !defined(RT_OS_OS2) /** @todo this asserts for threads created by NSPR */ + AssertMsg(pThread2 == pThread, ("%p(%s) != %p (%p/%s)\n", pThread2, pThread2 ? pThread2->szName : "", + pThread, pThread->Core.Key, pThread->szName)); +#endif + if (pThread2) + ASMAtomicDecU32(&g_cThreadInTree); +} + + +/** + * Removes the thread from the AVL tree. + * + * @param pThread The thread to remove. + */ +static void rtThreadRemove(PRTTHREADINT pThread) +{ + RT_THREAD_LOCK_RW(); + if (ASMAtomicBitTestAndClear(&pThread->fIntFlags, RTTHREADINT_FLAG_IN_TREE_BIT)) + rtThreadRemoveLocked(pThread); + RT_THREAD_UNLOCK_RW(); +} + + +/** + * Checks if a thread is alive or not. + * + * @returns true if the thread is alive (or we don't really know). + * @returns false if the thread has surely terminate. + */ +DECLINLINE(bool) rtThreadIsAlive(PRTTHREADINT pThread) +{ + return !(pThread->fIntFlags & RTTHREADINT_FLAGS_TERMINATED); +} + + +/** + * Gets a thread by it's native ID. + * + * @returns pointer to the thread structure. + * @returns NULL if not a thread IPRT knows. + * @param NativeThread The native thread id. + */ +DECLHIDDEN(PRTTHREADINT) rtThreadGetByNative(RTNATIVETHREAD NativeThread) +{ + PRTTHREADINT pThread; + /* + * Simple tree lookup. + */ + RT_THREAD_LOCK_RD(); + pThread = (PRTTHREADINT)RTAvlPVGet(&g_ThreadTree, (void *)NativeThread); + RT_THREAD_UNLOCK_RD(); + return pThread; +} + + +/** + * Gets the per thread data structure for a thread handle. + * + * @returns Pointer to the per thread data structure for Thread. + * The caller must release the thread using rtThreadRelease(). + * @returns NULL if Thread was not found. + * @param Thread Thread id which structure is to be returned. + */ +DECLHIDDEN(PRTTHREADINT) rtThreadGet(RTTHREAD Thread) +{ + if ( Thread != NIL_RTTHREAD + && VALID_PTR(Thread)) + { + PRTTHREADINT pThread = (PRTTHREADINT)Thread; + if ( pThread->u32Magic == RTTHREADINT_MAGIC + && pThread->cRefs > 0) + { + ASMAtomicIncU32(&pThread->cRefs); + return pThread; + } + } + + AssertMsgFailed(("Thread=%RTthrd\n", Thread)); + return NULL; +} + +/** + * Release a per thread data structure. + * + * @returns New reference count. + * @param pThread The thread structure to release. + */ +DECLHIDDEN(uint32_t) rtThreadRelease(PRTTHREADINT pThread) +{ + uint32_t cRefs; + + Assert(pThread); + if (pThread->cRefs >= 1) + { + cRefs = ASMAtomicDecU32(&pThread->cRefs); + if (!cRefs) + rtThreadDestroy(pThread); + } + else + { + cRefs = 0; + AssertFailed(); + } + return cRefs; +} + + +/** + * Destroys the per thread data. + * + * @param pThread The thread to destroy. + */ +static void rtThreadDestroy(PRTTHREADINT pThread) +{ + RTSEMEVENTMULTI hEvt1, hEvt2; + /* + * Remove it from the tree and mark it as dead. + * + * Threads that has seen rtThreadTerminate and should already have been + * removed from the tree. There is probably no thread that should + * require removing here. However, be careful making sure that cRefs + * isn't 0 if we do or we'll blow up because the strict locking code + * will be calling us back. + */ + if (ASMBitTest(&pThread->fIntFlags, RTTHREADINT_FLAG_IN_TREE_BIT)) + { + ASMAtomicIncU32(&pThread->cRefs); + rtThreadRemove(pThread); + ASMAtomicDecU32(&pThread->cRefs); + } + + /* + * Invalidate the thread structure. + */ +#ifdef IN_RING3 + rtLockValidatorSerializeDestructEnter(); + + rtLockValidatorDeletePerThread(&pThread->LockValidator); +#endif +#ifdef RT_WITH_ICONV_CACHE + rtStrIconvCacheDestroy(pThread); +#endif + ASMAtomicXchgU32(&pThread->u32Magic, RTTHREADINT_MAGIC_DEAD); + ASMAtomicWritePtr(&pThread->Core.Key, (void *)NIL_RTTHREAD); + pThread->enmType = RTTHREADTYPE_INVALID; + hEvt1 = pThread->EventUser; + pThread->EventUser = NIL_RTSEMEVENTMULTI; + hEvt2 = pThread->EventTerminated; + pThread->EventTerminated = NIL_RTSEMEVENTMULTI; + +#ifdef IN_RING3 + rtLockValidatorSerializeDestructLeave(); +#endif + + /* + * Destroy semaphore resources and free the bugger. + */ + RTSemEventMultiDestroy(hEvt1); + if (hEvt2 != NIL_RTSEMEVENTMULTI) + RTSemEventMultiDestroy(hEvt2); + + rtThreadNativeDestroy(pThread); + RTMemFree(pThread); +} + + +/** + * Terminates the thread. + * Called by the thread wrapper function when the thread terminates. + * + * @param pThread The thread structure. + * @param rc The thread result code. + */ +DECLHIDDEN(void) rtThreadTerminate(PRTTHREADINT pThread, int rc) +{ + Assert(pThread->cRefs >= 1); + +#ifdef IPRT_WITH_GENERIC_TLS + /* + * Destroy TLS entries. + */ + rtThreadTlsDestruction(pThread); +#endif /* IPRT_WITH_GENERIC_TLS */ + + /* + * Set the rc, mark it terminated and signal anyone waiting. + */ + pThread->rc = rc; + rtThreadSetState(pThread, RTTHREADSTATE_TERMINATED); + ASMAtomicOrU32(&pThread->fIntFlags, RTTHREADINT_FLAGS_TERMINATED); + if (pThread->EventTerminated != NIL_RTSEMEVENTMULTI) + RTSemEventMultiSignal(pThread->EventTerminated); + + /* + * Remove the thread from the tree so that there will be no + * key clashes in the AVL tree and release our reference to ourself. + */ + rtThreadRemove(pThread); + rtThreadRelease(pThread); +} + + +/** + * The common thread main function. + * This is called by rtThreadNativeMain(). + * + * @returns The status code of the thread. + * pThread is dereference by the thread before returning! + * @param pThread The thread structure. + * @param NativeThread The native thread id. + * @param pszThreadName The name of the thread (purely a dummy for backtrace). + */ +DECLCALLBACK(DECLHIDDEN(int)) rtThreadMain(PRTTHREADINT pThread, RTNATIVETHREAD NativeThread, const char *pszThreadName) +{ + int rc; + NOREF(pszThreadName); + rtThreadInsert(pThread, NativeThread); + Log(("rtThreadMain: Starting: pThread=%p NativeThread=%RTnthrd Name=%s pfnThread=%p pvUser=%p\n", + pThread, NativeThread, pThread->szName, pThread->pfnThread, pThread->pvUser)); + + /* + * Change the priority. + */ + rc = rtThreadNativeSetPriority(pThread, pThread->enmType); +#ifdef IN_RING3 + AssertMsgRC(rc, ("Failed to set priority of thread %p (%RTnthrd / %s) to enmType=%d enmPriority=%d rc=%Rrc\n", + pThread, NativeThread, pThread->szName, pThread->enmType, g_enmProcessPriority, rc)); +#else + AssertMsgRC(rc, ("Failed to set priority of thread %p (%RTnthrd / %s) to enmType=%d rc=%Rrc\n", + pThread, NativeThread, pThread->szName, pThread->enmType, rc)); +#endif + + /* + * Call thread function and terminate when it returns. + */ + rtThreadSetState(pThread, RTTHREADSTATE_RUNNING); + rc = pThread->pfnThread(pThread, pThread->pvUser); + + /* + * Paranoia checks for leftover resources. + */ +#ifdef RTSEMRW_STRICT + int32_t cWrite = ASMAtomicReadS32(&pThread->cWriteLocks); + Assert(!cWrite); + int32_t cRead = ASMAtomicReadS32(&pThread->cReadLocks); + Assert(!cRead); +#endif + + Log(("rtThreadMain: Terminating: rc=%d pThread=%p NativeThread=%RTnthrd Name=%s pfnThread=%p pvUser=%p\n", + rc, pThread, NativeThread, pThread->szName, pThread->pfnThread, pThread->pvUser)); + rtThreadTerminate(pThread, rc); + return rc; +} + + +/** + * Create a new thread. + * + * @returns iprt status code. + * @param pThread Where to store the thread handle to the new thread. (optional) + * @param pfnThread The thread function. + * @param pvUser User argument. + * @param cbStack The size of the stack for the new thread. + * Use 0 for the default stack size. + * @param enmType The thread type. Used for deciding scheduling attributes + * of the thread. + * @param fFlags Flags of the RTTHREADFLAGS type (ORed together). + * @param pszName Thread name. + */ +RTDECL(int) RTThreadCreate(PRTTHREAD pThread, PFNRTTHREAD pfnThread, void *pvUser, size_t cbStack, + RTTHREADTYPE enmType, unsigned fFlags, const char *pszName) +{ + int rc; + PRTTHREADINT pThreadInt; + + LogFlow(("RTThreadCreate: pThread=%p pfnThread=%p pvUser=%p cbStack=%#x enmType=%d fFlags=%#x pszName=%p:{%s}\n", + pThread, pfnThread, pvUser, cbStack, enmType, fFlags, pszName, pszName)); + + /* + * Validate input. + */ + if (!VALID_PTR(pThread) && pThread) + { + Assert(VALID_PTR(pThread)); + return VERR_INVALID_PARAMETER; + } + if (!VALID_PTR(pfnThread)) + { + Assert(VALID_PTR(pfnThread)); + return VERR_INVALID_PARAMETER; + } + if (!pszName || !*pszName || strlen(pszName) >= RTTHREAD_NAME_LEN) + { + AssertMsgFailed(("pszName=%s (max len is %d because of logging)\n", pszName, RTTHREAD_NAME_LEN - 1)); + return VERR_INVALID_PARAMETER; + } + if (fFlags & ~RTTHREADFLAGS_MASK) + { + AssertMsgFailed(("fFlags=%#x\n", fFlags)); + return VERR_INVALID_PARAMETER; + } + + /* + * Allocate thread argument. + */ + pThreadInt = rtThreadAlloc(enmType, fFlags, 0, pszName); + if (pThreadInt) + { + RTNATIVETHREAD NativeThread; + + pThreadInt->pfnThread = pfnThread; + pThreadInt->pvUser = pvUser; + pThreadInt->cbStack = cbStack; + + rc = rtThreadNativeCreate(pThreadInt, &NativeThread); + if (RT_SUCCESS(rc)) + { + rtThreadInsert(pThreadInt, NativeThread); + rtThreadRelease(pThreadInt); + Log(("RTThreadCreate: Created thread %p (%p) %s\n", pThreadInt, NativeThread, pszName)); + if (pThread) + *pThread = pThreadInt; + return VINF_SUCCESS; + } + + pThreadInt->cRefs = 1; + rtThreadRelease(pThreadInt); + } + else + rc = VERR_NO_TMP_MEMORY; + LogFlow(("RTThreadCreate: Failed to create thread, rc=%Rrc\n", rc)); + AssertReleaseRC(rc); + return rc; +} +RT_EXPORT_SYMBOL(RTThreadCreate); + + +/** + * Create a new thread. + * + * Same as RTThreadCreate except the name is given in the RTStrPrintfV form. + * + * @returns iprt status code. + * @param pThread See RTThreadCreate. + * @param pfnThread See RTThreadCreate. + * @param pvUser See RTThreadCreate. + * @param cbStack See RTThreadCreate. + * @param enmType See RTThreadCreate. + * @param fFlags See RTThreadCreate. + * @param pszNameFmt Thread name format. + * @param va Format arguments. + */ +RTDECL(int) RTThreadCreateV(PRTTHREAD pThread, PFNRTTHREAD pfnThread, void *pvUser, size_t cbStack, + RTTHREADTYPE enmType, uint32_t fFlags, const char *pszNameFmt, va_list va) +{ + char szName[RTTHREAD_NAME_LEN * 2]; + RTStrPrintfV(szName, sizeof(szName), pszNameFmt, va); + return RTThreadCreate(pThread, pfnThread, pvUser, cbStack, enmType, fFlags, szName); +} +RT_EXPORT_SYMBOL(RTThreadCreateV); + + +/** + * Create a new thread. + * + * Same as RTThreadCreate except the name is given in the RTStrPrintf form. + * + * @returns iprt status code. + * @param pThread See RTThreadCreate. + * @param pfnThread See RTThreadCreate. + * @param pvUser See RTThreadCreate. + * @param cbStack See RTThreadCreate. + * @param enmType See RTThreadCreate. + * @param fFlags See RTThreadCreate. + * @param pszNameFmt Thread name format. + * @param ... Format arguments. + */ +RTDECL(int) RTThreadCreateF(PRTTHREAD pThread, PFNRTTHREAD pfnThread, void *pvUser, size_t cbStack, + RTTHREADTYPE enmType, uint32_t fFlags, const char *pszNameFmt, ...) +{ + va_list va; + int rc; + va_start(va, pszNameFmt); + rc = RTThreadCreateV(pThread, pfnThread, pvUser, cbStack, enmType, fFlags, pszNameFmt, va); + va_end(va); + return rc; +} +RT_EXPORT_SYMBOL(RTThreadCreateF); + + +/** + * Gets the native thread id of a IPRT thread. + * + * @returns The native thread id. + * @param Thread The IPRT thread. + */ +RTDECL(RTNATIVETHREAD) RTThreadGetNative(RTTHREAD Thread) +{ + PRTTHREADINT pThread = rtThreadGet(Thread); + if (pThread) + { + RTNATIVETHREAD NativeThread = (RTNATIVETHREAD)pThread->Core.Key; + rtThreadRelease(pThread); + return NativeThread; + } + return NIL_RTNATIVETHREAD; +} +RT_EXPORT_SYMBOL(RTThreadGetNative); + + +/** + * Gets the IPRT thread of a native thread. + * + * @returns The IPRT thread handle + * @returns NIL_RTTHREAD if not a thread known to IPRT. + * @param NativeThread The native thread handle/id. + */ +RTDECL(RTTHREAD) RTThreadFromNative(RTNATIVETHREAD NativeThread) +{ + PRTTHREADINT pThread = rtThreadGetByNative(NativeThread); + if (pThread) + return pThread; + return NIL_RTTHREAD; +} +RT_EXPORT_SYMBOL(RTThreadFromNative); + + +/** + * Gets the name of the current thread thread. + * + * @returns Pointer to readonly name string. + * @returns NULL on failure. + */ +RTDECL(const char *) RTThreadSelfName(void) +{ + RTTHREAD Thread = RTThreadSelf(); + if (Thread != NIL_RTTHREAD) + { + PRTTHREADINT pThread = rtThreadGet(Thread); + if (pThread) + { + const char *szName = pThread->szName; + rtThreadRelease(pThread); + return szName; + } + } + return NULL; +} +RT_EXPORT_SYMBOL(RTThreadSelfName); + + +/** + * Gets the name of a thread. + * + * @returns Pointer to readonly name string. + * @returns NULL on failure. + * @param Thread Thread handle of the thread to query the name of. + */ +RTDECL(const char *) RTThreadGetName(RTTHREAD Thread) +{ + PRTTHREADINT pThread; + if (Thread == NIL_RTTHREAD) + return NULL; + pThread = rtThreadGet(Thread); + if (pThread) + { + const char *szName = pThread->szName; + rtThreadRelease(pThread); + return szName; + } + return NULL; +} +RT_EXPORT_SYMBOL(RTThreadGetName); + + +/** + * Sets the name of a thread. + * + * @returns iprt status code. + * @param Thread Thread handle of the thread to query the name of. + * @param pszName The thread name. + */ +RTDECL(int) RTThreadSetName(RTTHREAD Thread, const char *pszName) +{ + /* + * Validate input. + */ + PRTTHREADINT pThread; + size_t cchName = strlen(pszName); + if (cchName >= RTTHREAD_NAME_LEN) + { + AssertMsgFailed(("pszName=%s is too long, max is %d\n", pszName, RTTHREAD_NAME_LEN - 1)); + return VERR_INVALID_PARAMETER; + } + pThread = rtThreadGet(Thread); + if (!pThread) + return VERR_INVALID_HANDLE; + + /* + * Update the name. + */ + pThread->szName[cchName] = '\0'; /* paranoia */ + memcpy(pThread->szName, pszName, cchName); + rtThreadRelease(pThread); + return VINF_SUCCESS; +} +RT_EXPORT_SYMBOL(RTThreadSetName); + + +/** + * Checks if the specified thread is the main thread. + * + * @returns true if it is, false if it isn't. + * + * @param hThread The thread handle. + * + * @remarks This function may not return the correct value when rtR3Init was + * called on a thread of the than the main one. This could for + * instance happen when the DLL/DYLIB/SO containing IPRT is dynamically + * loaded at run time by a different thread. + */ +RTDECL(bool) RTThreadIsMain(RTTHREAD hThread) +{ + PRTTHREADINT pThread = rtThreadGet(hThread); + if (pThread) + { + bool fRc = !!(pThread->fIntFlags & RTTHREADINT_FLAGS_MAIN); + rtThreadRelease(pThread); + return fRc; + } + return false; +} +RT_EXPORT_SYMBOL(RTThreadIsMain); + + +RTDECL(bool) RTThreadIsSelfAlive(void) +{ + if (g_frtThreadInitialized) + { + RTTHREAD hSelf = RTThreadSelf(); + if (hSelf != NIL_RTTHREAD) + { + /* + * Inspect the thread state. ASSUMES thread state order. + */ + RTTHREADSTATE enmState = rtThreadGetState(hSelf); + if ( enmState >= RTTHREADSTATE_RUNNING + && enmState <= RTTHREADSTATE_END) + return true; + } + } + return false; +} +RT_EXPORT_SYMBOL(RTThreadIsSelfAlive); + + +RTDECL(bool) RTThreadIsSelfKnown(void) +{ + if (g_frtThreadInitialized) + { + RTTHREAD hSelf = RTThreadSelf(); + if (hSelf != NIL_RTTHREAD) + return true; + } + return false; +} +RT_EXPORT_SYMBOL(RTThreadIsSelfKnown); + + +RTDECL(bool) RTThreadIsInitialized(void) +{ + return g_frtThreadInitialized; +} +RT_EXPORT_SYMBOL(RTThreadIsInitialized); + + +/** + * Signal the user event. + * + * @returns iprt status code. + */ +RTDECL(int) RTThreadUserSignal(RTTHREAD Thread) +{ + int rc; + PRTTHREADINT pThread = rtThreadGet(Thread); + if (pThread) + { + rc = RTSemEventMultiSignal(pThread->EventUser); + rtThreadRelease(pThread); + } + else + rc = VERR_INVALID_HANDLE; + return rc; +} +RT_EXPORT_SYMBOL(RTThreadUserSignal); + + +/** + * Wait for the user event, resume on interruption. + * + * @returns iprt status code. + * @param Thread The thread to wait for. + * @param cMillies The number of milliseconds to wait. Use RT_INDEFINITE_WAIT for + * an indefinite wait. + */ +RTDECL(int) RTThreadUserWait(RTTHREAD Thread, RTMSINTERVAL cMillies) +{ + int rc; + PRTTHREADINT pThread = rtThreadGet(Thread); + if (pThread) + { + rc = RTSemEventMultiWait(pThread->EventUser, cMillies); + rtThreadRelease(pThread); + } + else + rc = VERR_INVALID_HANDLE; + return rc; +} +RT_EXPORT_SYMBOL(RTThreadUserWait); + + +/** + * Wait for the user event, return on interruption. + * + * @returns iprt status code. + * @param Thread The thread to wait for. + * @param cMillies The number of milliseconds to wait. Use RT_INDEFINITE_WAIT for + * an indefinite wait. + */ +RTDECL(int) RTThreadUserWaitNoResume(RTTHREAD Thread, RTMSINTERVAL cMillies) +{ + int rc; + PRTTHREADINT pThread = rtThreadGet(Thread); + if (pThread) + { + rc = RTSemEventMultiWaitNoResume(pThread->EventUser, cMillies); + rtThreadRelease(pThread); + } + else + rc = VERR_INVALID_HANDLE; + return rc; +} +RT_EXPORT_SYMBOL(RTThreadUserWaitNoResume); + + +/** + * Reset the user event. + * + * @returns iprt status code. + * @param Thread The thread to reset. + */ +RTDECL(int) RTThreadUserReset(RTTHREAD Thread) +{ + int rc; + PRTTHREADINT pThread = rtThreadGet(Thread); + if (pThread) + { + rc = RTSemEventMultiReset(pThread->EventUser); + rtThreadRelease(pThread); + } + else + rc = VERR_INVALID_HANDLE; + return rc; +} +RT_EXPORT_SYMBOL(RTThreadUserReset); + + +/** + * Wait for the thread to terminate. + * + * @returns iprt status code. + * @param Thread The thread to wait for. + * @param cMillies The number of milliseconds to wait. Use RT_INDEFINITE_WAIT for + * an indefinite wait. + * @param prc Where to store the return code of the thread. Optional. + * @param fAutoResume Whether or not to resume the wait on VERR_INTERRUPTED. + */ +static int rtThreadWait(RTTHREAD Thread, RTMSINTERVAL cMillies, int *prc, bool fAutoResume) +{ + int rc = VERR_INVALID_HANDLE; + if (Thread != NIL_RTTHREAD) + { + PRTTHREADINT pThread = rtThreadGet(Thread); + if (pThread) + { + if (pThread->fFlags & RTTHREADFLAGS_WAITABLE) + { + if (fAutoResume) + rc = RTSemEventMultiWait(pThread->EventTerminated, cMillies); + else + rc = RTSemEventMultiWaitNoResume(pThread->EventTerminated, cMillies); + if (RT_SUCCESS(rc)) + { + if (prc) + *prc = pThread->rc; + + /* + * If the thread is marked as waitable, we'll do one additional + * release in order to free up the thread structure (see how we + * init cRef in rtThreadAlloc()). + */ + if (ASMAtomicBitTestAndClear(&pThread->fFlags, RTTHREADFLAGS_WAITABLE_BIT)) + { + rtThreadRelease(pThread); +#ifdef IN_RING0 + /* + * IPRT termination kludge. Call native code to make sure + * the last thread is really out of IPRT to prevent it from + * crashing after we destroyed the spinlock in rtThreadTerm. + */ + if ( ASMAtomicReadU32(&g_cThreadInTree) == 1 + && ASMAtomicReadU32(&pThread->cRefs) > 1) + rtThreadNativeWaitKludge(pThread); +#endif + } + } + } + else + { + rc = VERR_THREAD_NOT_WAITABLE; + AssertRC(rc); + } + rtThreadRelease(pThread); + } + } + return rc; +} + + +/** + * Wait for the thread to terminate, resume on interruption. + * + * @returns iprt status code. + * Will not return VERR_INTERRUPTED. + * @param Thread The thread to wait for. + * @param cMillies The number of milliseconds to wait. Use RT_INDEFINITE_WAIT for + * an indefinite wait. + * @param prc Where to store the return code of the thread. Optional. + */ +RTDECL(int) RTThreadWait(RTTHREAD Thread, RTMSINTERVAL cMillies, int *prc) +{ + int rc = rtThreadWait(Thread, cMillies, prc, true); + Assert(rc != VERR_INTERRUPTED); + return rc; +} +RT_EXPORT_SYMBOL(RTThreadWait); + + +/** + * Wait for the thread to terminate, return on interruption. + * + * @returns iprt status code. + * @param Thread The thread to wait for. + * @param cMillies The number of milliseconds to wait. Use RT_INDEFINITE_WAIT for + * an indefinite wait. + * @param prc Where to store the return code of the thread. Optional. + */ +RTDECL(int) RTThreadWaitNoResume(RTTHREAD Thread, RTMSINTERVAL cMillies, int *prc) +{ + return rtThreadWait(Thread, cMillies, prc, false); +} +RT_EXPORT_SYMBOL(RTThreadWaitNoResume); + + +/** + * Changes the type of the specified thread. + * + * @returns iprt status code. + * @param Thread The thread which type should be changed. + * @param enmType The new thread type. + */ +RTDECL(int) RTThreadSetType(RTTHREAD Thread, RTTHREADTYPE enmType) +{ + /* + * Validate input. + */ + int rc; + if ( enmType > RTTHREADTYPE_INVALID + && enmType < RTTHREADTYPE_END) + { + PRTTHREADINT pThread = rtThreadGet(Thread); + if (pThread) + { + if (rtThreadIsAlive(pThread)) + { + /* + * Do the job. + */ + RT_THREAD_LOCK_RW(); + rc = rtThreadNativeSetPriority(pThread, enmType); + if (RT_SUCCESS(rc)) + ASMAtomicXchgSize(&pThread->enmType, enmType); + RT_THREAD_UNLOCK_RW(); + if (RT_FAILURE(rc)) + Log(("RTThreadSetType: failed on thread %p (%s), rc=%Rrc!!!\n", Thread, pThread->szName, rc)); + } + else + rc = VERR_THREAD_IS_DEAD; + rtThreadRelease(pThread); + } + else + rc = VERR_INVALID_HANDLE; + } + else + { + AssertMsgFailed(("enmType=%d\n", enmType)); + rc = VERR_INVALID_PARAMETER; + } + return rc; +} +RT_EXPORT_SYMBOL(RTThreadSetType); + + +/** + * Gets the type of the specified thread. + * + * @returns The thread type. + * @returns RTTHREADTYPE_INVALID if the thread handle is invalid. + * @param Thread The thread in question. + */ +RTDECL(RTTHREADTYPE) RTThreadGetType(RTTHREAD Thread) +{ + RTTHREADTYPE enmType = RTTHREADTYPE_INVALID; + PRTTHREADINT pThread = rtThreadGet(Thread); + if (pThread) + { + enmType = pThread->enmType; + rtThreadRelease(pThread); + } + return enmType; +} +RT_EXPORT_SYMBOL(RTThreadGetType); + +#ifdef IN_RING3 + +/** + * Recalculates scheduling attributes for the default process + * priority using the specified priority type for the calling thread. + * + * The scheduling attributes are targeted at threads and they are protected + * by the thread read-write semaphore, that's why RTProc is forwarding the + * operation to RTThread. + * + * @returns iprt status code. + * @remarks Will only work for strict builds. + */ +int rtThreadDoCalcDefaultPriority(RTTHREADTYPE enmType) +{ + RT_THREAD_LOCK_RW(); + int rc = rtSchedNativeCalcDefaultPriority(enmType); + RT_THREAD_UNLOCK_RW(); + return rc; +} + + +/** + * Thread enumerator - sets the priority of one thread. + * + * @returns 0 to continue. + * @returns !0 to stop. In our case a VERR_ code. + * @param pNode The thread node. + * @param pvUser The new priority. + */ +static DECLCALLBACK(int) rtThreadSetPriorityOne(PAVLPVNODECORE pNode, void *pvUser) +{ + PRTTHREADINT pThread = (PRTTHREADINT)pNode; + if (!rtThreadIsAlive(pThread)) + return VINF_SUCCESS; + int rc = rtThreadNativeSetPriority(pThread, pThread->enmType); + if (RT_SUCCESS(rc)) /* hide any warnings */ + return VINF_SUCCESS; + NOREF(pvUser); + return rc; +} + + +/** + * Attempts to alter the priority of the current process. + * + * The scheduling attributes are targeted at threads and they are protected + * by the thread read-write semaphore, that's why RTProc is forwarding the + * operation to RTThread. This operation also involves updating all thread + * which is much faster done from RTThread. + * + * @returns iprt status code. + * @param enmPriority The new priority. + */ +DECLHIDDEN(int) rtThreadDoSetProcPriority(RTPROCPRIORITY enmPriority) +{ + LogFlow(("rtThreadDoSetProcPriority: enmPriority=%d\n", enmPriority)); + + /* + * First validate that we're allowed by the OS to use all the + * scheduling attributes defined by the specified process priority. + */ + RT_THREAD_LOCK_RW(); + int rc = rtProcNativeSetPriority(enmPriority); + if (RT_SUCCESS(rc)) + { + /* + * Update the priority of existing thread. + */ + rc = RTAvlPVDoWithAll(&g_ThreadTree, true, rtThreadSetPriorityOne, NULL); + if (RT_SUCCESS(rc)) + ASMAtomicXchgSize(&g_enmProcessPriority, enmPriority); + else + { + /* + * Failed, restore the priority. + */ + rtProcNativeSetPriority(g_enmProcessPriority); + RTAvlPVDoWithAll(&g_ThreadTree, true, rtThreadSetPriorityOne, NULL); + } + } + RT_THREAD_UNLOCK_RW(); + LogFlow(("rtThreadDoSetProcPriority: returns %Rrc\n", rc)); + return rc; +} + + +/** + * Change the thread state to blocking. + * + * @param hThread The current thread. + * @param enmState The sleep state. + * @param fReallySleeping Really going to sleep now. + */ +RTDECL(void) RTThreadBlocking(RTTHREAD hThread, RTTHREADSTATE enmState, bool fReallySleeping) +{ + Assert(RTTHREAD_IS_SLEEPING(enmState)); + PRTTHREADINT pThread = hThread; + if (pThread != NIL_RTTHREAD) + { + Assert(pThread == RTThreadSelf()); + if (rtThreadGetState(pThread) == RTTHREADSTATE_RUNNING) + rtThreadSetState(pThread, enmState); + ASMAtomicWriteBool(&pThread->fReallySleeping, fReallySleeping); + } +} +RT_EXPORT_SYMBOL(RTThreadBlocking); + + +/** + * Unblocks a thread. + * + * This function is paired with rtThreadBlocking. + * + * @param hThread The current thread. + * @param enmCurState The current state, used to check for nested blocking. + * The new state will be running. + */ +RTDECL(void) RTThreadUnblocked(RTTHREAD hThread, RTTHREADSTATE enmCurState) +{ + PRTTHREADINT pThread = hThread; + if (pThread != NIL_RTTHREAD) + { + Assert(pThread == RTThreadSelf()); + ASMAtomicWriteBool(&pThread->fReallySleeping, false); + + RTTHREADSTATE enmActualState = rtThreadGetState(pThread); + if (enmActualState == enmCurState) + { + rtThreadSetState(pThread, RTTHREADSTATE_RUNNING); + if ( pThread->LockValidator.pRec + && pThread->LockValidator.enmRecState == enmCurState) + ASMAtomicWriteNullPtr(&pThread->LockValidator.pRec); + } + /* This is a bit ugly... :-/ */ + else if ( ( enmActualState == RTTHREADSTATE_TERMINATED + || enmActualState == RTTHREADSTATE_INITIALIZING) + && pThread->LockValidator.pRec) + ASMAtomicWriteNullPtr(&pThread->LockValidator.pRec); + Assert( pThread->LockValidator.pRec == NULL + || RTTHREAD_IS_SLEEPING(enmActualState)); + } +} +RT_EXPORT_SYMBOL(RTThreadUnblocked); + + +/** + * Get the current thread state. + * + * @returns The thread state. + * @param hThread The thread. + */ +RTDECL(RTTHREADSTATE) RTThreadGetState(RTTHREAD hThread) +{ + RTTHREADSTATE enmState = RTTHREADSTATE_INVALID; + PRTTHREADINT pThread = rtThreadGet(hThread); + if (pThread) + { + enmState = rtThreadGetState(pThread); + rtThreadRelease(pThread); + } + return enmState; +} +RT_EXPORT_SYMBOL(RTThreadGetState); + + +RTDECL(RTTHREADSTATE) RTThreadGetReallySleeping(RTTHREAD hThread) +{ + RTTHREADSTATE enmState = RTTHREADSTATE_INVALID; + PRTTHREADINT pThread = rtThreadGet(hThread); + if (pThread) + { + enmState = rtThreadGetState(pThread); + if (!ASMAtomicUoReadBool(&pThread->fReallySleeping)) + enmState = RTTHREADSTATE_RUNNING; + rtThreadRelease(pThread); + } + return enmState; +} +RT_EXPORT_SYMBOL(RTThreadGetReallySleeping); + + +/** + * Translate a thread state into a string. + * + * @returns Pointer to a read-only string containing the state name. + * @param enmState The state. + */ +RTDECL(const char *) RTThreadStateName(RTTHREADSTATE enmState) +{ + switch (enmState) + { + case RTTHREADSTATE_INVALID: return "INVALID"; + case RTTHREADSTATE_INITIALIZING: return "INITIALIZING"; + case RTTHREADSTATE_TERMINATED: return "TERMINATED"; + case RTTHREADSTATE_RUNNING: return "RUNNING"; + case RTTHREADSTATE_CRITSECT: return "CRITSECT"; + case RTTHREADSTATE_EVENT: return "EVENT"; + case RTTHREADSTATE_EVENT_MULTI: return "EVENT_MULTI"; + case RTTHREADSTATE_FAST_MUTEX: return "FAST_MUTEX"; + case RTTHREADSTATE_MUTEX: return "MUTEX"; + case RTTHREADSTATE_RW_READ: return "RW_READ"; + case RTTHREADSTATE_RW_WRITE: return "RW_WRITE"; + case RTTHREADSTATE_SLEEP: return "SLEEP"; + case RTTHREADSTATE_SPIN_MUTEX: return "SPIN_MUTEX"; + default: return "UnknownThreadState"; + } +} +RT_EXPORT_SYMBOL(RTThreadStateName); + +#endif /* IN_RING3 */ +#ifdef IPRT_WITH_GENERIC_TLS + +/** + * Thread enumerator - clears a TLS entry. + * + * @returns 0. + * @param pNode The thread node. + * @param pvUser The TLS index. + */ +static DECLCALLBACK(int) rtThreadClearTlsEntryCallback(PAVLPVNODECORE pNode, void *pvUser) +{ + PRTTHREADINT pThread = (PRTTHREADINT)pNode; + RTTLS iTls = (RTTLS)(uintptr_t)pvUser; + ASMAtomicWriteNullPtr(&pThread->apvTlsEntries[iTls]); + return 0; +} + + +/** + * Helper for the generic TLS implementation that clears a given TLS + * entry on all threads. + * + * @param iTls The TLS entry. (valid) + */ +DECLHIDDEN(void) rtThreadClearTlsEntry(RTTLS iTls) +{ + RT_THREAD_LOCK_RD(); + RTAvlPVDoWithAll(&g_ThreadTree, true /* fFromLeft*/, rtThreadClearTlsEntryCallback, (void *)(uintptr_t)iTls); + RT_THREAD_UNLOCK_RD(); +} + +#endif /* IPRT_WITH_GENERIC_TLS */ + + +#if defined(RT_OS_WINDOWS) && defined(IN_RING3) + +/** + * Thread enumeration callback for RTThreadNameThreads + */ +static DECLCALLBACK(int) rtThreadNameThreadCallback(PAVLPVNODECORE pNode, void *pvUser) +{ + PRTTHREADINT pThread = (PRTTHREADINT)pNode; + rtThreadNativeInformDebugger(pThread); + return 0; +} + +/** + * A function that can be called from the windows debugger to get the names of + * all threads when attaching to a process. + * + * Usage: .call VBoxRT!RTThreadNameThreads() + * + * @returns 0 + * @remarks Do not call from source code as it skips locks. + */ +extern "C" RTDECL(int) RTThreadNameThreads(void); +RTDECL(int) RTThreadNameThreads(void) +{ + return RTAvlPVDoWithAll(&g_ThreadTree, true /* fFromLeft*/, rtThreadNameThreadCallback, NULL); +} + +#endif --- linux-raspi2-4.2.0.orig/ubuntu/vbox/vboxguest/common/string/RTStrCopy.c +++ linux-raspi2-4.2.0/ubuntu/vbox/vboxguest/common/string/RTStrCopy.c @@ -0,0 +1,52 @@ +/* $Id: RTStrCopy.cpp $ */ +/** @file + * IPRT - RTStrCopy. + */ + +/* + * Copyright (C) 2010-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + + +/******************************************************************************* +* Header Files * +*******************************************************************************/ +#include +#include "internal/iprt.h" + + +RTDECL(int) RTStrCopy(char *pszDst, size_t cbDst, const char *pszSrc) +{ + size_t cchSrc = strlen(pszSrc); + if (RT_LIKELY(cchSrc < cbDst)) + { + memcpy(pszDst, pszSrc, cchSrc + 1); + return VINF_SUCCESS; + } + + if (cbDst != 0) + { + memcpy(pszDst, pszSrc, cbDst - 1); + pszDst[cbDst - 1] = '\0'; + } + return VERR_BUFFER_OVERFLOW; +} +RT_EXPORT_SYMBOL(RTStrCopy); + --- linux-raspi2-4.2.0.orig/ubuntu/vbox/vboxguest/common/string/RTStrCopyEx.c +++ linux-raspi2-4.2.0/ubuntu/vbox/vboxguest/common/string/RTStrCopyEx.c @@ -0,0 +1,54 @@ +/* $Id: RTStrCopyEx.cpp $ */ +/** @file + * IPRT - RTStrCopyEx. + */ + +/* + * Copyright (C) 2010-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + + +/******************************************************************************* +* Header Files * +*******************************************************************************/ +#include +#include "internal/iprt.h" + + +RTDECL(int) RTStrCopyEx(char *pszDst, size_t cbDst, const char *pszSrc, size_t cchMaxSrc) +{ + const char *pszSrcEol = RTStrEnd(pszSrc, cchMaxSrc); + size_t cchSrc = pszSrcEol ? (size_t)(pszSrcEol - pszSrc) : cchMaxSrc; + if (RT_LIKELY(cchSrc < cbDst)) + { + memcpy(pszDst, pszSrc, cchSrc); + pszDst[cchSrc] = '\0'; + return VINF_SUCCESS; + } + + if (cbDst != 0) + { + memcpy(pszDst, pszSrc, cbDst - 1); + pszDst[cbDst - 1] = '\0'; + } + return VERR_BUFFER_OVERFLOW; +} +RT_EXPORT_SYMBOL(RTStrCopyEx); + --- linux-raspi2-4.2.0.orig/ubuntu/vbox/vboxguest/common/string/RTStrCopyP.c +++ linux-raspi2-4.2.0/ubuntu/vbox/vboxguest/common/string/RTStrCopyP.c @@ -0,0 +1,58 @@ +/* $Id: RTStrCopyP.cpp $ */ +/** @file + * IPRT - RTStrCopyP. + */ + +/* + * Copyright (C) 2010-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + + +/******************************************************************************* +* Header Files * +*******************************************************************************/ +#include +#include "internal/iprt.h" + + +RTDECL(int) RTStrCopyP(char **ppszDst, size_t *pcbDst, const char *pszSrc) +{ + size_t const cchSrc = strlen(pszSrc); + size_t const cbDst = *pcbDst; + char *pszDst = *ppszDst; + if (RT_LIKELY(cchSrc < cbDst)) + { + memcpy(pszDst, pszSrc, cchSrc + 1); + *ppszDst = pszDst += cchSrc; + *pcbDst -= cchSrc; + return VINF_SUCCESS; + } + + if (cbDst != 0) + { + memcpy(*ppszDst, pszSrc, cbDst - 1); + *ppszDst = pszDst += cbDst - 1; + *pszDst = '\0'; + *pcbDst = 1; + } + return VERR_BUFFER_OVERFLOW; +} +RT_EXPORT_SYMBOL(RTStrCopyP); + --- linux-raspi2-4.2.0.orig/ubuntu/vbox/vboxguest/common/string/strformat.c +++ linux-raspi2-4.2.0/ubuntu/vbox/vboxguest/common/string/strformat.c @@ -0,0 +1,858 @@ +/* $Id: strformat.cpp $ */ +/** @file + * IPRT - String Formatter. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + + +/******************************************************************************* +* Defined Constants * +*******************************************************************************/ +#define ISDIGIT(c) ((c) >= '0' && (c) <= '9') +/*#define MAX(a, b) ((a) >= (b) ? (a) : (b)) +#define MIN(a, b) ((a) < (b) ? (a) : (b)) */ + + +/******************************************************************************* +* Header Files * +*******************************************************************************/ +#define LOG_GROUP RTLOGGROUP_STRING +#include +#include "internal/iprt.h" + +#include +#ifdef IN_RING3 +# include +# include +# include +#endif +#include +#include +#include "internal/string.h" + +/* Wrappers for converting to iprt facilities. */ +#define SSToDS(ptr) ptr +#define kASSERT Assert +#define KENDIAN_LITTLE 1 +#define KENDIAN KENDIAN_LITTLE +#define KSIZE size_t +typedef struct +{ + uint32_t ulLo; + uint32_t ulHi; +} KSIZE64; + + +/******************************************************************************* +* Internal Functions * +*******************************************************************************/ +static unsigned _strnlen(const char *psz, unsigned cchMax); +static unsigned _strnlenUtf16(PCRTUTF16 pwsz, unsigned cchMax); +static int rtStrFormatNumber(char *psz, KSIZE64 ullValue, unsigned int uiBase, signed int cchWidth, signed int cchPrecision, unsigned int fFlags); + + +/** + * Finds the length of a string up to cchMax. + * @returns Length. + * @param psz Pointer to string. + * @param cchMax Max length. + */ +static unsigned _strnlen(const char *psz, unsigned cchMax) +{ + const char *pszC = psz; + + while (cchMax-- > 0 && *psz != '\0') + psz++; + + return (unsigned)(psz - pszC); +} + + +/** + * Finds the length of a string up to cchMax. + * @returns Length. + * @param pwsz Pointer to string. + * @param cchMax Max length. + */ +static unsigned _strnlenUtf16(PCRTUTF16 pwsz, unsigned cchMax) +{ +#ifdef IN_RING3 + unsigned cwc = 0; + while (cchMax-- > 0) + { + RTUNICP cp; + int rc = RTUtf16GetCpEx(&pwsz, &cp); + AssertRC(rc); + if (RT_FAILURE(rc) || !cp) + break; + cwc++; + } + return cwc; +#else /* !IN_RING3 */ + PCRTUTF16 pwszC = pwsz; + + while (cchMax-- > 0 && *pwsz != '\0') + pwsz++; + + return (unsigned)(pwsz - pwszC); +#endif /* !IN_RING3 */ +} + + +/** + * Finds the length of a string up to cchMax. + * @returns Length. + * @param pusz Pointer to string. + * @param cchMax Max length. + */ +static unsigned _strnlenUni(PCRTUNICP pusz, unsigned cchMax) +{ + PCRTUNICP puszC = pusz; + + while (cchMax-- > 0 && *pusz != '\0') + pusz++; + + return (unsigned)(pusz - puszC); +} + + +/** + * Formats an integer number according to the parameters. + * + * @returns Length of the formatted number. + * @param psz Pointer to output string buffer of sufficient size. + * @param u64Value Value to format. + * @param uiBase Number representation base. + * @param cchWidth Width. + * @param cchPrecision Precision. + * @param fFlags Flags (NTFS_*). + */ +RTDECL(int) RTStrFormatNumber(char *psz, uint64_t u64Value, unsigned int uiBase, signed int cchWidth, signed int cchPrecision, + unsigned int fFlags) +{ + return rtStrFormatNumber(psz, *(KSIZE64 *)(void *)&u64Value, uiBase, cchWidth, cchPrecision, fFlags); +} +RT_EXPORT_SYMBOL(RTStrFormatNumber); + + + +/** + * Formats an integer number according to the parameters. + * + * @returns Length of the number. + * @param psz Pointer to output string. + * @param ullValue Value. Using the high part is optional. + * @param uiBase Number representation base. + * @param cchWidth Width + * @param cchPrecision Precision. + * @param fFlags Flags (NTFS_*). + */ +static int rtStrFormatNumber(char *psz, KSIZE64 ullValue, unsigned int uiBase, signed int cchWidth, signed int cchPrecision, + unsigned int fFlags) +{ + const char *pachDigits = "0123456789abcdef"; + char *pszStart = psz; + int cchMax; + int cchValue; + unsigned long ul; + int i; + int j; + + /* + * Validate and adjust input... + */ + Assert(uiBase >= 2 && uiBase <= 16); + if (fFlags & RTSTR_F_CAPITAL) + pachDigits = "0123456789ABCDEF"; + if (fFlags & RTSTR_F_LEFT) + fFlags &= ~RTSTR_F_ZEROPAD; + if ( (fFlags & RTSTR_F_THOUSAND_SEP) + && ( uiBase != 10 + || (fFlags & RTSTR_F_ZEROPAD))) /** @todo implement RTSTR_F_ZEROPAD + RTSTR_F_THOUSAND_SEP. */ + fFlags &= ~RTSTR_F_THOUSAND_SEP; + + /* + * Determine value length + */ + cchValue = 0; + if (ullValue.ulHi || (fFlags & RTSTR_F_64BIT)) + { + uint64_t u64 = *(uint64_t *)(void *)&ullValue; + if ((fFlags & RTSTR_F_VALSIGNED) && (ullValue.ulHi & 0x80000000)) + u64 = -(int64_t)u64; + do + { + cchValue++; + u64 /= uiBase; + } while (u64); + } + else + { + ul = (fFlags & RTSTR_F_VALSIGNED) && (ullValue.ulLo & 0x80000000) ? -(int32_t)ullValue.ulLo : ullValue.ulLo; + do + { + cchValue++; + ul /= uiBase; + } while (ul); + } + if (fFlags & RTSTR_F_THOUSAND_SEP) + { + if (cchValue <= 3) + fFlags &= ~RTSTR_F_THOUSAND_SEP; + else + cchValue += cchValue / 3 - (cchValue % 3 == 0); + } + + /* + * Sign (+/-). + */ + i = 0; + if (fFlags & RTSTR_F_VALSIGNED) + { + if ((ullValue.ulHi || (fFlags & RTSTR_F_64BIT) ? ullValue.ulHi : ullValue.ulLo) & 0x80000000) + { + ullValue.ulLo = -(int32_t)ullValue.ulLo; + if (ullValue.ulHi) + ullValue.ulHi = ~ullValue.ulHi; + psz[i++] = '-'; + } + else if (fFlags & (RTSTR_F_PLUS | RTSTR_F_BLANK)) + psz[i++] = (char)(fFlags & RTSTR_F_PLUS ? '+' : ' '); + } + + /* + * Special (0/0x). + */ + if ((fFlags & RTSTR_F_SPECIAL) && (uiBase % 8) == 0) + { + psz[i++] = '0'; + if (uiBase == 16) + psz[i++] = (char)(fFlags & RTSTR_F_CAPITAL ? 'X' : 'x'); + } + + /* + * width - only if ZEROPAD + */ + cchMax = 64 - (cchValue + i + 1); /* HACK! 64 bytes seems to be the usual buffer size... */ + cchWidth -= i + cchValue; + if (fFlags & RTSTR_F_ZEROPAD) + while (--cchWidth >= 0 && i < cchMax) + { + AssertBreak(i < cchMax); + psz[i++] = '0'; + cchPrecision--; + } + else if (!(fFlags & RTSTR_F_LEFT) && cchWidth > 0) + { + AssertStmt(cchWidth < cchMax, cchWidth = cchMax - 1); + for (j = i - 1; j >= 0; j--) + psz[cchWidth + j] = psz[j]; + for (j = 0; j < cchWidth; j++) + psz[j] = ' '; + i += cchWidth; + } + + /* + * precision + */ + while (--cchPrecision >= cchValue) + { + AssertBreak(i < cchMax); + psz[i++] = '0'; + } + + psz += i; + + /* + * write number - not good enough but it works + */ + psz += cchValue; + i = -1; + if (ullValue.ulHi || (fFlags & RTSTR_F_64BIT)) + { + uint64_t u64 = *(uint64_t *)(void *)&ullValue; + if (fFlags & RTSTR_F_THOUSAND_SEP) + { + do + { + if ((-i - 1) % 4 == 3) + psz[i--] = ' '; + psz[i--] = pachDigits[u64 % uiBase]; + u64 /= uiBase; + } while (u64); + } + else + { + do + { + psz[i--] = pachDigits[u64 % uiBase]; + u64 /= uiBase; + } while (u64); + } + } + else + { + ul = (fFlags & RTSTR_F_VALSIGNED) && (ullValue.ulLo & 0x80000000) ? -(int32_t)ullValue.ulLo : ullValue.ulLo; + if (fFlags & RTSTR_F_THOUSAND_SEP) + { + do + { + if ((-i - 1) % 4 == 3) + psz[i--] = ' '; + psz[i--] = pachDigits[ul % uiBase]; + ul /= uiBase; + } while (ul); + } + else + { + do + { + psz[i--] = pachDigits[ul % uiBase]; + ul /= uiBase; + } while (ul); + } + } + + /* + * width if RTSTR_F_LEFT + */ + if (fFlags & RTSTR_F_LEFT) + while (--cchWidth >= 0) + *psz++ = ' '; + + *psz = '\0'; + return (unsigned)(psz - pszStart); +} + + +/** + * Partial implementation of a printf like formatter. + * It doesn't do everything correct, and there is no floating point support. + * However, it supports custom formats by the means of a format callback. + * + * @returns number of bytes formatted. + * @param pfnOutput Output worker. + * Called in two ways. Normally with a string an it's length. + * For termination, it's called with NULL for string, 0 for length. + * @param pvArgOutput Argument to the output worker. + * @param pfnFormat Custom format worker. + * @param pvArgFormat Argument to the format worker. + * @param pszFormat Format string. + * @param InArgs Argument list. + */ +RTDECL(size_t) RTStrFormatV(PFNRTSTROUTPUT pfnOutput, void *pvArgOutput, PFNSTRFORMAT pfnFormat, void *pvArgFormat, + const char *pszFormat, va_list InArgs) +{ + va_list args; + KSIZE cch = 0; + const char *pszStartOutput = pszFormat; + + va_copy(args, InArgs); /* make a copy so we can reference it (AMD64 / gcc). */ + + while (*pszFormat != '\0') + { + if (*pszFormat == '%') + { + /* output pending string. */ + if (pszStartOutput != pszFormat) + cch += pfnOutput(pvArgOutput, pszStartOutput, pszFormat - pszStartOutput); + + /* skip '%' */ + pszFormat++; + if (*pszFormat == '%') /* '%%'-> '%' */ + pszStartOutput = pszFormat++; + else + { + unsigned int fFlags = 0; + int cchWidth = -1; + int cchPrecision = -1; + unsigned int uBase = 10; + char chArgSize; + + /* flags */ + for (;;) + { + switch (*pszFormat++) + { + case '#': fFlags |= RTSTR_F_SPECIAL; continue; + case '-': fFlags |= RTSTR_F_LEFT; continue; + case '+': fFlags |= RTSTR_F_PLUS; continue; + case ' ': fFlags |= RTSTR_F_BLANK; continue; + case '0': fFlags |= RTSTR_F_ZEROPAD; continue; + case '\'': fFlags |= RTSTR_F_THOUSAND_SEP; continue; + } + pszFormat--; + break; + } + + /* width */ + if (ISDIGIT(*pszFormat)) + { + for (cchWidth = 0; ISDIGIT(*pszFormat); pszFormat++) + { + cchWidth *= 10; + cchWidth += *pszFormat - '0'; + } + fFlags |= RTSTR_F_WIDTH; + } + else if (*pszFormat == '*') + { + pszFormat++; + cchWidth = va_arg(args, int); + if (cchWidth < 0) + { + cchWidth = -cchWidth; + fFlags |= RTSTR_F_LEFT; + } + fFlags |= RTSTR_F_WIDTH; + } + + /* precision */ + if (*pszFormat == '.') + { + pszFormat++; + if (ISDIGIT(*pszFormat)) + { + for (cchPrecision = 0; ISDIGIT(*pszFormat); pszFormat++) + { + cchPrecision *= 10; + cchPrecision += *pszFormat - '0'; + } + + } + else if (*pszFormat == '*') + { + pszFormat++; + cchPrecision = va_arg(args, int); + } + if (cchPrecision < 0) + cchPrecision = 0; + fFlags |= RTSTR_F_PRECISION; + } + + /* + * Argument size. + */ + chArgSize = *pszFormat; + switch (chArgSize) + { + default: + chArgSize = 0; + break; + + case 'z': + case 'L': + case 'j': + case 't': + pszFormat++; + break; + + case 'l': + pszFormat++; + if (*pszFormat == 'l') + { + chArgSize = 'L'; + pszFormat++; + } + break; + + case 'h': + pszFormat++; + if (*pszFormat == 'h') + { + chArgSize = 'H'; + pszFormat++; + } + break; + + case 'I': /* Used by Win32/64 compilers. */ + if ( pszFormat[1] == '6' + && pszFormat[2] == '4') + { + pszFormat += 3; + chArgSize = 'L'; + } + else if ( pszFormat[1] == '3' + && pszFormat[2] == '2') + { + pszFormat += 3; + chArgSize = 0; + } + else + { + pszFormat += 1; + chArgSize = 'j'; + } + break; + + case 'q': /* Used on BSD platforms. */ + pszFormat++; + chArgSize = 'L'; + break; + } + + /* + * The type. + */ + switch (*pszFormat++) + { + /* char */ + case 'c': + { + char ch; + + if (!(fFlags & RTSTR_F_LEFT)) + while (--cchWidth > 0) + cch += pfnOutput(pvArgOutput, " ", 1); + + ch = (char)va_arg(args, int); + cch += pfnOutput(pvArgOutput, SSToDS(&ch), 1); + + while (--cchWidth > 0) + cch += pfnOutput(pvArgOutput, " ", 1); + break; + } + + case 'S': /* Legacy, conversion done by streams now. */ + case 's': + { + if (chArgSize == 'l') + { + /* utf-16 -> utf-8 */ + int cchStr; + PCRTUTF16 pwszStr = va_arg(args, PRTUTF16); + + if (!VALID_PTR(pwszStr)) + { + static RTUTF16 s_wszNull[] = {'<', 'N', 'U', 'L', 'L', '>', '\0' }; + pwszStr = s_wszNull; + } + cchStr = _strnlenUtf16(pwszStr, (unsigned)cchPrecision); + if (!(fFlags & RTSTR_F_LEFT)) + while (--cchWidth >= cchStr) + cch += pfnOutput(pvArgOutput, " ", 1); + cchWidth -= cchStr; + while (cchStr-- > 0) + { +/**@todo #ifndef IN_RC*/ +#ifdef IN_RING3 + RTUNICP Cp; + RTUtf16GetCpEx(&pwszStr, &Cp); + char szUtf8[8]; /* Cp=0x7fffffff -> 6 bytes. */ + char *pszEnd = RTStrPutCp(szUtf8, Cp); + cch += pfnOutput(pvArgOutput, szUtf8, pszEnd - szUtf8); +#else + char ch = (char)*pwszStr++; + cch += pfnOutput(pvArgOutput, &ch, 1); +#endif + } + while (--cchWidth >= 0) + cch += pfnOutput(pvArgOutput, " ", 1); + } + else if (chArgSize == 'L') + { + /* unicp -> utf8 */ + int cchStr; + PCRTUNICP puszStr = va_arg(args, PCRTUNICP); + + if (!VALID_PTR(puszStr)) + { + static RTUNICP s_uszNull[] = {'<', 'N', 'U', 'L', 'L', '>', '\0' }; + puszStr = s_uszNull; + } + cchStr = _strnlenUni(puszStr, (unsigned)cchPrecision); + if (!(fFlags & RTSTR_F_LEFT)) + while (--cchWidth >= cchStr) + cch += pfnOutput(pvArgOutput, " ", 1); + + cchWidth -= cchStr; + while (cchStr-- > 0) + { +/**@todo #ifndef IN_RC*/ +#ifdef IN_RING3 + char szUtf8[8]; /* Cp=0x7fffffff -> 6 bytes. */ + char *pszEnd = RTStrPutCp(szUtf8, *puszStr++); + cch += pfnOutput(pvArgOutput, szUtf8, pszEnd - szUtf8); +#else + char ch = (char)*puszStr++; + cch += pfnOutput(pvArgOutput, &ch, 1); +#endif + } + while (--cchWidth >= 0) + cch += pfnOutput(pvArgOutput, " ", 1); + } + else + { + int cchStr; + const char *pszStr = va_arg(args, char*); + + if (!VALID_PTR(pszStr)) + pszStr = ""; + cchStr = _strnlen(pszStr, (unsigned)cchPrecision); + if (!(fFlags & RTSTR_F_LEFT)) + while (--cchWidth >= cchStr) + cch += pfnOutput(pvArgOutput, " ", 1); + + cch += pfnOutput(pvArgOutput, pszStr, cchStr); + + while (--cchWidth >= cchStr) + cch += pfnOutput(pvArgOutput, " ", 1); + } + break; + } + + /*-----------------*/ + /* integer/pointer */ + /*-----------------*/ + case 'd': + case 'i': + case 'o': + case 'p': + case 'u': + case 'x': + case 'X': + { + char achNum[64]; /* FIXME */ + int cchNum; + uint64_t u64Value; + + switch (pszFormat[-1]) + { + case 'd': /* signed decimal integer */ + case 'i': + fFlags |= RTSTR_F_VALSIGNED; + break; + + case 'o': + uBase = 8; + break; + + case 'p': + fFlags |= RTSTR_F_ZEROPAD; /* Note not standard behaviour (but I like it this way!) */ + uBase = 16; + if (cchWidth < 0) + cchWidth = sizeof(char *) * 2; + break; + + case 'u': + uBase = 10; + break; + + case 'X': + fFlags |= RTSTR_F_CAPITAL; + case 'x': + uBase = 16; + break; + } + + if (pszFormat[-1] == 'p') + u64Value = va_arg(args, uintptr_t); + else if (fFlags & RTSTR_F_VALSIGNED) + { + if (chArgSize == 'L') + { + u64Value = va_arg(args, int64_t); + fFlags |= RTSTR_F_64BIT; + } + else if (chArgSize == 'l') + { + u64Value = va_arg(args, signed long); + fFlags |= RTSTR_GET_BIT_FLAG(unsigned long); + } + else if (chArgSize == 'h') + { + u64Value = va_arg(args, /* signed short */ int); + fFlags |= RTSTR_GET_BIT_FLAG(signed short); + } + else if (chArgSize == 'H') + { + u64Value = va_arg(args, /* int8_t */ int); + fFlags |= RTSTR_GET_BIT_FLAG(int8_t); + } + else if (chArgSize == 'j') + { + u64Value = va_arg(args, /*intmax_t*/ int64_t); + fFlags |= RTSTR_F_64BIT; + } + else if (chArgSize == 'z') + { + u64Value = va_arg(args, size_t); + fFlags |= RTSTR_GET_BIT_FLAG(size_t); + } + else if (chArgSize == 't') + { + u64Value = va_arg(args, ptrdiff_t); + fFlags |= RTSTR_GET_BIT_FLAG(ptrdiff_t); + } + else + { + u64Value = va_arg(args, signed int); + fFlags |= RTSTR_GET_BIT_FLAG(signed int); + } + } + else + { + if (chArgSize == 'L') + { + u64Value = va_arg(args, uint64_t); + fFlags |= RTSTR_F_64BIT; + } + else if (chArgSize == 'l') + { + u64Value = va_arg(args, unsigned long); + fFlags |= RTSTR_GET_BIT_FLAG(unsigned long); + } + else if (chArgSize == 'h') + { + u64Value = va_arg(args, /* unsigned short */ int); + fFlags |= RTSTR_GET_BIT_FLAG(unsigned short); + } + else if (chArgSize == 'H') + { + u64Value = va_arg(args, /* uint8_t */ int); + fFlags |= RTSTR_GET_BIT_FLAG(uint8_t); + } + else if (chArgSize == 'j') + { + u64Value = va_arg(args, /*uintmax_t*/ int64_t); + fFlags |= RTSTR_F_64BIT; + } + else if (chArgSize == 'z') + { + u64Value = va_arg(args, size_t); + fFlags |= RTSTR_GET_BIT_FLAG(size_t); + } + else if (chArgSize == 't') + { + u64Value = va_arg(args, ptrdiff_t); + fFlags |= RTSTR_GET_BIT_FLAG(ptrdiff_t); + } + else + { + u64Value = va_arg(args, unsigned int); + fFlags |= RTSTR_GET_BIT_FLAG(unsigned int); + } + } + cchNum = RTStrFormatNumber((char *)SSToDS(&achNum), u64Value, uBase, cchWidth, cchPrecision, fFlags); + cch += pfnOutput(pvArgOutput, (char *)SSToDS(&achNum), cchNum); + break; + } + + /* + * Nested extensions. + */ + case 'M': /* replace the format string (not stacked yet). */ + { + pszStartOutput = pszFormat = va_arg(args, const char *); + AssertPtr(pszStartOutput); + break; + } + + case 'N': /* real nesting. */ + { + const char *pszFormatNested = va_arg(args, const char *); + va_list *pArgsNested = va_arg(args, va_list *); + va_list ArgsNested; + va_copy(ArgsNested, *pArgsNested); + Assert(pszFormatNested); + cch += RTStrFormatV(pfnOutput, pvArgOutput, pfnFormat, pvArgFormat, pszFormatNested, ArgsNested); + va_end(ArgsNested); + break; + } + + /* + * IPRT Extensions. + */ + case 'R': + { + if (*pszFormat != '[') + { + pszFormat--; + cch += rtstrFormatRt(pfnOutput, pvArgOutput, &pszFormat, &args, cchWidth, cchPrecision, fFlags, chArgSize); + } + else + { + pszFormat--; + cch += rtstrFormatType(pfnOutput, pvArgOutput, &pszFormat, &args, cchWidth, cchPrecision, fFlags, chArgSize); + } + break; + } + + /* + * Custom format. + */ + default: + { + if (pfnFormat) + { + pszFormat--; + cch += pfnFormat(pvArgFormat, pfnOutput, pvArgOutput, &pszFormat, &args, cchWidth, cchPrecision, fFlags, chArgSize); + } + break; + } + } + pszStartOutput = pszFormat; + } + } + else + pszFormat++; + } + + /* output pending string. */ + if (pszStartOutput != pszFormat) + cch += pfnOutput(pvArgOutput, pszStartOutput, pszFormat - pszStartOutput); + + /* terminate the output */ + pfnOutput(pvArgOutput, NULL, 0); + + return cch; +} +RT_EXPORT_SYMBOL(RTStrFormatV); + + +/** + * Partial implementation of a printf like formatter. + * It doesn't do everything correct, and there is no floating point support. + * However, it supports custom formats by the means of a format callback. + * + * @returns number of bytes formatted. + * @param pfnOutput Output worker. + * Called in two ways. Normally with a string an it's length. + * For termination, it's called with NULL for string, 0 for length. + * @param pvArgOutput Argument to the output worker. + * @param pfnFormat Custom format worker. + * @param pvArgFormat Argument to the format worker. + * @param pszFormat Format string. + * @param ... Argument list. + */ +RTDECL(size_t) RTStrFormat(PFNRTSTROUTPUT pfnOutput, void *pvArgOutput, PFNSTRFORMAT pfnFormat, void *pvArgFormat, const char *pszFormat, ...) +{ + size_t cch; + va_list args; + va_start(args, pszFormat); + cch = RTStrFormatV(pfnOutput, pvArgOutput, pfnFormat, pvArgFormat, pszFormat, args); + va_end(args); + return cch; +} +RT_EXPORT_SYMBOL(RTStrFormat); + --- linux-raspi2-4.2.0.orig/ubuntu/vbox/vboxguest/common/string/strformatrt.c +++ linux-raspi2-4.2.0/ubuntu/vbox/vboxguest/common/string/strformatrt.c @@ -0,0 +1,1237 @@ +/* $Id: strformatrt.cpp $ */ +/** @file + * IPRT - IPRT String Formatter Extensions. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + + +/******************************************************************************* +* Header Files * +*******************************************************************************/ +#define LOG_GROUP RTLOGGROUP_STRING +#include +#ifndef RT_NO_EXPORT_SYMBOL +# define RT_NO_EXPORT_SYMBOL /* don't slurp which then again + slurps arch-specific headers defining symbols */ +#endif +#include "internal/iprt.h" + +#include +#include +#include +#include +#ifdef IN_RING3 +# include +# include +#endif +#include +#include +#include +#include +#include +#define STRFORMAT_WITH_X86 +#ifdef STRFORMAT_WITH_X86 +# include +#endif +#include "internal/string.h" + +/******************************************************************************* +* Global Variables * +*******************************************************************************/ +static char g_szHexDigits[17] = "0123456789abcdef"; + + +/** + * Helper that formats a 16-bit hex word in a IPv6 address. + * + * @returns Length in chars. + * @param pszDst The output buffer. Written from the start. + * @param uWord The word to format as hex. + */ +static size_t rtstrFormatIPv6HexWord(char *pszDst, uint16_t uWord) +{ + size_t off; + uint16_t cDigits; + + if (uWord & UINT16_C(0xff00)) + cDigits = uWord & UINT16_C(0xf000) ? 4 : 3; + else + cDigits = uWord & UINT16_C(0x00f0) ? 2 : 1; + + off = 0; + switch (cDigits) + { + case 4: pszDst[off++] = g_szHexDigits[(uWord >> 12) & 0xf]; + case 3: pszDst[off++] = g_szHexDigits[(uWord >> 8) & 0xf]; + case 2: pszDst[off++] = g_szHexDigits[(uWord >> 4) & 0xf]; + case 1: pszDst[off++] = g_szHexDigits[(uWord >> 0) & 0xf]; + break; + } + pszDst[off] = '\0'; + return off; +} + + +/** + * Helper function to format IPv6 address according to RFC 5952. + * + * @returns The number of bytes formatted. + * @param pfnOutput Pointer to output function. + * @param pvArgOutput Argument for the output function. + * @param pIpv6Addr IPv6 address + */ +static size_t rtstrFormatIPv6(PFNRTSTROUTPUT pfnOutput, void *pvArgOutput, PCRTNETADDRIPV6 pIpv6Addr) +{ + size_t cch; /* result */ + bool fEmbeddedIpv4; + size_t cwHexPart; + size_t cwLongestZeroRun; + size_t iLongestZeroStart; + size_t idx; + char szHexWord[8]; + + Assert(pIpv6Addr != NULL); + + /* + * Check for embedded IPv4 address. + * + * IPv4-compatible - ::11.22.33.44 (obsolete) + * IPv4-mapped - ::ffff:11.22.33.44 + * IPv4-translated - ::ffff:0:11.22.33.44 (RFC 2765) + */ + fEmbeddedIpv4 = false; + cwHexPart = RT_ELEMENTS(pIpv6Addr->au16); + if ( pIpv6Addr->au64[0] == 0 + && ( ( pIpv6Addr->au32[2] == 0 + && pIpv6Addr->au32[3] != 0 + && pIpv6Addr->au32[3] != RT_H2BE_U32_C(1) ) + || pIpv6Addr->au32[2] == RT_H2BE_U32_C(0x0000ffff) + || pIpv6Addr->au32[2] == RT_H2BE_U32_C(0xffff0000) ) ) + { + fEmbeddedIpv4 = true; + cwHexPart -= 2; + } + + /* + * Find the longest sequences of two or more zero words. + */ + cwLongestZeroRun = 0; + iLongestZeroStart = 0; + for (idx = 0; idx < cwHexPart; idx++) + if (pIpv6Addr->au16[idx] == 0) + { + size_t iZeroStart = idx; + size_t cwZeroRun; + do + idx++; + while (idx < cwHexPart && pIpv6Addr->au16[idx] == 0); + cwZeroRun = idx - iZeroStart; + if (cwZeroRun > 1 && cwZeroRun > cwLongestZeroRun) + { + cwLongestZeroRun = cwZeroRun; + iLongestZeroStart = iZeroStart; + if (cwZeroRun >= cwHexPart - idx) + break; + } + } + + /* + * Do the formatting. + */ + cch = 0; + if (cwLongestZeroRun == 0) + { + for (idx = 0; idx < cwHexPart; ++idx) + { + if (idx > 0) + cch += pfnOutput(pvArgOutput, ":", 1); + cch += pfnOutput(pvArgOutput, szHexWord, rtstrFormatIPv6HexWord(szHexWord, RT_BE2H_U16(pIpv6Addr->au16[idx]))); + } + + if (fEmbeddedIpv4) + cch += pfnOutput(pvArgOutput, ":", 1); + } + else + { + const size_t iLongestZeroEnd = iLongestZeroStart + cwLongestZeroRun; + + if (iLongestZeroStart == 0) + cch += pfnOutput(pvArgOutput, ":", 1); + else + for (idx = 0; idx < iLongestZeroStart; ++idx) + { + cch += pfnOutput(pvArgOutput, szHexWord, rtstrFormatIPv6HexWord(szHexWord, RT_BE2H_U16(pIpv6Addr->au16[idx]))); + cch += pfnOutput(pvArgOutput, ":", 1); + } + + if (iLongestZeroEnd == cwHexPart) + cch += pfnOutput(pvArgOutput, ":", 1); + else + { + for (idx = iLongestZeroEnd; idx < cwHexPart; ++idx) + { + cch += pfnOutput(pvArgOutput, ":", 1); + cch += pfnOutput(pvArgOutput, szHexWord, rtstrFormatIPv6HexWord(szHexWord, RT_BE2H_U16(pIpv6Addr->au16[idx]))); + } + + if (fEmbeddedIpv4) + cch += pfnOutput(pvArgOutput, ":", 1); + } + } + + if (fEmbeddedIpv4) + cch += RTStrFormat(pfnOutput, pvArgOutput, NULL, 0, + "%u.%u.%u.%u", + pIpv6Addr->au8[12], + pIpv6Addr->au8[13], + pIpv6Addr->au8[14], + pIpv6Addr->au8[15]); + + return cch; +} + + +/** + * Callback to format iprt formatting extentions. + * See @ref pg_rt_str_format for a reference on the format types. + * + * @returns The number of bytes formatted. + * @param pfnOutput Pointer to output function. + * @param pvArgOutput Argument for the output function. + * @param ppszFormat Pointer to the format string pointer. Advance this till the char + * after the format specifier. + * @param pArgs Pointer to the argument list. Use this to fetch the arguments. + * @param cchWidth Format Width. -1 if not specified. + * @param cchPrecision Format Precision. -1 if not specified. + * @param fFlags Flags (RTSTR_NTFS_*). + * @param chArgSize The argument size specifier, 'l' or 'L'. + */ +DECLHIDDEN(size_t) rtstrFormatRt(PFNRTSTROUTPUT pfnOutput, void *pvArgOutput, const char **ppszFormat, va_list *pArgs, + int cchWidth, int cchPrecision, unsigned fFlags, char chArgSize) +{ + const char *pszFormatOrg = *ppszFormat; + char ch = *(*ppszFormat)++; + size_t cch; + char szBuf[80]; + + if (ch == 'R') + { + ch = *(*ppszFormat)++; + switch (ch) + { + /* + * Groups 1 and 2. + */ + case 'T': + case 'G': + case 'H': + case 'R': + case 'C': + case 'I': + case 'X': + case 'U': + { + /* + * Interpret the type. + */ + typedef enum + { + RTSF_INT, + RTSF_INTW, + RTSF_BOOL, + RTSF_FP16, + RTSF_FP32, + RTSF_FP64, + RTSF_IPV4, + RTSF_IPV6, + RTSF_MAC, + RTSF_NETADDR, + RTSF_UUID + } RTSF; + static const struct + { + uint8_t cch; /**< the length of the string. */ + char sz[10]; /**< the part following 'R'. */ + uint8_t cb; /**< the size of the type. */ + uint8_t u8Base; /**< the size of the type. */ + RTSF enmFormat; /**< The way to format it. */ + uint16_t fFlags; /**< additional RTSTR_F_* flags. */ + } + /** Sorted array of types, looked up using binary search! */ + s_aTypes[] = + { +#define STRMEM(str) sizeof(str) - 1, str + { STRMEM("Ci"), sizeof(RTINT), 10, RTSF_INT, RTSTR_F_VALSIGNED }, + { STRMEM("Cp"), sizeof(RTCCPHYS), 16, RTSF_INTW, 0 }, + { STRMEM("Cr"), sizeof(RTCCUINTREG), 16, RTSF_INTW, 0 }, + { STRMEM("Cu"), sizeof(RTUINT), 10, RTSF_INT, 0 }, + { STRMEM("Cv"), sizeof(void *), 16, RTSF_INTW, 0 }, + { STRMEM("Cx"), sizeof(RTUINT), 16, RTSF_INT, 0 }, + { STRMEM("Gi"), sizeof(RTGCINT), 10, RTSF_INT, RTSTR_F_VALSIGNED }, + { STRMEM("Gp"), sizeof(RTGCPHYS), 16, RTSF_INTW, 0 }, + { STRMEM("Gr"), sizeof(RTGCUINTREG), 16, RTSF_INTW, 0 }, + { STRMEM("Gu"), sizeof(RTGCUINT), 10, RTSF_INT, 0 }, + { STRMEM("Gv"), sizeof(RTGCPTR), 16, RTSF_INTW, 0 }, + { STRMEM("Gx"), sizeof(RTGCUINT), 16, RTSF_INT, 0 }, + { STRMEM("Hi"), sizeof(RTHCINT), 10, RTSF_INT, RTSTR_F_VALSIGNED }, + { STRMEM("Hp"), sizeof(RTHCPHYS), 16, RTSF_INTW, 0 }, + { STRMEM("Hr"), sizeof(RTHCUINTREG), 16, RTSF_INTW, 0 }, + { STRMEM("Hu"), sizeof(RTHCUINT), 10, RTSF_INT, 0 }, + { STRMEM("Hv"), sizeof(RTHCPTR), 16, RTSF_INTW, 0 }, + { STRMEM("Hx"), sizeof(RTHCUINT), 16, RTSF_INT, 0 }, + { STRMEM("I16"), sizeof(int16_t), 10, RTSF_INT, RTSTR_F_VALSIGNED }, + { STRMEM("I32"), sizeof(int32_t), 10, RTSF_INT, RTSTR_F_VALSIGNED }, + { STRMEM("I64"), sizeof(int64_t), 10, RTSF_INT, RTSTR_F_VALSIGNED }, + { STRMEM("I8"), sizeof(int8_t), 10, RTSF_INT, RTSTR_F_VALSIGNED }, + { STRMEM("Rv"), sizeof(RTRCPTR), 16, RTSF_INTW, 0 }, + { STRMEM("Tbool"), sizeof(bool), 10, RTSF_BOOL, 0 }, + { STRMEM("Tfile"), sizeof(RTFILE), 10, RTSF_INT, 0 }, + { STRMEM("Tfmode"), sizeof(RTFMODE), 16, RTSF_INTW, 0 }, + { STRMEM("Tfoff"), sizeof(RTFOFF), 10, RTSF_INT, RTSTR_F_VALSIGNED }, + { STRMEM("Tfp16"), sizeof(RTFAR16), 16, RTSF_FP16, RTSTR_F_ZEROPAD }, + { STRMEM("Tfp32"), sizeof(RTFAR32), 16, RTSF_FP32, RTSTR_F_ZEROPAD }, + { STRMEM("Tfp64"), sizeof(RTFAR64), 16, RTSF_FP64, RTSTR_F_ZEROPAD }, + { STRMEM("Tgid"), sizeof(RTGID), 10, RTSF_INT, RTSTR_F_VALSIGNED }, + { STRMEM("Tino"), sizeof(RTINODE), 16, RTSF_INTW, 0 }, + { STRMEM("Tint"), sizeof(RTINT), 10, RTSF_INT, RTSTR_F_VALSIGNED }, + { STRMEM("Tiop"), sizeof(RTIOPORT), 16, RTSF_INTW, 0 }, + { STRMEM("Tldrm"), sizeof(RTLDRMOD), 16, RTSF_INTW, 0 }, + { STRMEM("Tmac"), sizeof(PCRTMAC), 16, RTSF_MAC, 0 }, + { STRMEM("Tnaddr"), sizeof(PCRTNETADDR), 10, RTSF_NETADDR,0 }, + { STRMEM("Tnaipv4"), sizeof(RTNETADDRIPV4), 10, RTSF_IPV4, 0 }, + { STRMEM("Tnaipv6"), sizeof(PCRTNETADDRIPV6),16, RTSF_IPV6, 0 }, + { STRMEM("Tnthrd"), sizeof(RTNATIVETHREAD), 16, RTSF_INTW, 0 }, + { STRMEM("Tproc"), sizeof(RTPROCESS), 16, RTSF_INTW, 0 }, + { STRMEM("Tptr"), sizeof(RTUINTPTR), 16, RTSF_INTW, 0 }, + { STRMEM("Treg"), sizeof(RTCCUINTREG), 16, RTSF_INTW, 0 }, + { STRMEM("Tsel"), sizeof(RTSEL), 16, RTSF_INTW, 0 }, + { STRMEM("Tsem"), sizeof(RTSEMEVENT), 16, RTSF_INTW, 0 }, + { STRMEM("Tsock"), sizeof(RTSOCKET), 10, RTSF_INT, 0 }, + { STRMEM("Tthrd"), sizeof(RTTHREAD), 16, RTSF_INTW, 0 }, + { STRMEM("Tuid"), sizeof(RTUID), 10, RTSF_INT, RTSTR_F_VALSIGNED }, + { STRMEM("Tuint"), sizeof(RTUINT), 10, RTSF_INT, 0 }, + { STRMEM("Tunicp"), sizeof(RTUNICP), 16, RTSF_INTW, RTSTR_F_ZEROPAD }, + { STRMEM("Tutf16"), sizeof(RTUTF16), 16, RTSF_INTW, RTSTR_F_ZEROPAD }, + { STRMEM("Tuuid"), sizeof(PCRTUUID), 16, RTSF_UUID, 0 }, + { STRMEM("Txint"), sizeof(RTUINT), 16, RTSF_INT, 0 }, + { STRMEM("U16"), sizeof(uint16_t), 10, RTSF_INT, 0 }, + { STRMEM("U32"), sizeof(uint32_t), 10, RTSF_INT, 0 }, + { STRMEM("U64"), sizeof(uint64_t), 10, RTSF_INT, 0 }, + { STRMEM("U8"), sizeof(uint8_t), 10, RTSF_INT, 0 }, + { STRMEM("X16"), sizeof(uint16_t), 16, RTSF_INT, 0 }, + { STRMEM("X32"), sizeof(uint32_t), 16, RTSF_INT, 0 }, + { STRMEM("X64"), sizeof(uint64_t), 16, RTSF_INT, 0 }, + { STRMEM("X8"), sizeof(uint8_t), 16, RTSF_INT, 0 }, +#undef STRMEM + }; + static const char s_szNull[] = ""; + + const char *pszType = *ppszFormat - 1; + int iStart = 0; + int iEnd = RT_ELEMENTS(s_aTypes) - 1; + int i = RT_ELEMENTS(s_aTypes) / 2; + + union + { + uint8_t u8; + uint16_t u16; + uint32_t u32; + uint64_t u64; + int8_t i8; + int16_t i16; + int32_t i32; + int64_t i64; + RTFAR16 fp16; + RTFAR32 fp32; + RTFAR64 fp64; + bool fBool; + PCRTMAC pMac; + RTNETADDRIPV4 Ipv4Addr; + PCRTNETADDRIPV6 pIpv6Addr; + PCRTNETADDR pNetAddr; + PCRTUUID pUuid; + } u; + + AssertMsg(!chArgSize, ("Not argument size '%c' for RT types! '%.10s'\n", chArgSize, pszFormatOrg)); + + /* + * Lookup the type - binary search. + */ + for (;;) + { + int iDiff = strncmp(pszType, s_aTypes[i].sz, s_aTypes[i].cch); + if (!iDiff) + break; + if (iEnd == iStart) + { + AssertMsgFailed(("Invalid format type '%.10s'!\n", pszFormatOrg)); + return 0; + } + if (iDiff < 0) + iEnd = i - 1; + else + iStart = i + 1; + if (iEnd < iStart) + { + AssertMsgFailed(("Invalid format type '%.10s'!\n", pszFormatOrg)); + return 0; + } + i = iStart + (iEnd - iStart) / 2; + } + + /* + * Advance the format string and merge flags. + */ + *ppszFormat += s_aTypes[i].cch - 1; + fFlags |= s_aTypes[i].fFlags; + + /* + * Fetch the argument. + * It's important that a signed value gets sign-extended up to 64-bit. + */ + RT_ZERO(u); + if (fFlags & RTSTR_F_VALSIGNED) + { + switch (s_aTypes[i].cb) + { + case sizeof(int8_t): + u.i64 = va_arg(*pArgs, /*int8_t*/int); + fFlags |= RTSTR_F_8BIT; + break; + case sizeof(int16_t): + u.i64 = va_arg(*pArgs, /*int16_t*/int); + fFlags |= RTSTR_F_16BIT; + break; + case sizeof(int32_t): + u.i64 = va_arg(*pArgs, int32_t); + fFlags |= RTSTR_F_32BIT; + break; + case sizeof(int64_t): + u.i64 = va_arg(*pArgs, int64_t); + fFlags |= RTSTR_F_64BIT; + break; + default: + AssertMsgFailed(("Invalid format error, size %d'!\n", s_aTypes[i].cb)); + break; + } + } + else + { + switch (s_aTypes[i].cb) + { + case sizeof(uint8_t): + u.u8 = va_arg(*pArgs, /*uint8_t*/unsigned); + fFlags |= RTSTR_F_8BIT; + break; + case sizeof(uint16_t): + u.u16 = va_arg(*pArgs, /*uint16_t*/unsigned); + fFlags |= RTSTR_F_16BIT; + break; + case sizeof(uint32_t): + u.u32 = va_arg(*pArgs, uint32_t); + fFlags |= RTSTR_F_32BIT; + break; + case sizeof(uint64_t): + u.u64 = va_arg(*pArgs, uint64_t); + fFlags |= RTSTR_F_64BIT; + break; + case sizeof(RTFAR32): + u.fp32 = va_arg(*pArgs, RTFAR32); + break; + case sizeof(RTFAR64): + u.fp64 = va_arg(*pArgs, RTFAR64); + break; + default: + AssertMsgFailed(("Invalid format error, size %d'!\n", s_aTypes[i].cb)); + break; + } + } + + /* + * Format the output. + */ + switch (s_aTypes[i].enmFormat) + { + case RTSF_INT: + { + cch = RTStrFormatNumber(szBuf, u.u64, s_aTypes[i].u8Base, cchWidth, cchPrecision, fFlags); + break; + } + + /* hex which defaults to max width. */ + case RTSF_INTW: + { + Assert(s_aTypes[i].u8Base == 16); + if (cchWidth < 0) + { + cchWidth = s_aTypes[i].cb * 2 + (fFlags & RTSTR_F_SPECIAL ? 2 : 0); + fFlags |= RTSTR_F_ZEROPAD; + } + cch = RTStrFormatNumber(szBuf, u.u64, s_aTypes[i].u8Base, cchWidth, cchPrecision, fFlags); + break; + } + + case RTSF_BOOL: + { + static const char s_szTrue[] = "true "; + static const char s_szFalse[] = "false"; + if (u.u64 == 1) + return pfnOutput(pvArgOutput, s_szTrue, sizeof(s_szTrue) - 1); + if (u.u64 == 0) + return pfnOutput(pvArgOutput, s_szFalse, sizeof(s_szFalse) - 1); + /* invalid boolean value */ + return RTStrFormat(pfnOutput, pvArgOutput, NULL, 0, "!%lld!", u.u64); + } + + case RTSF_FP16: + { + fFlags &= ~(RTSTR_F_VALSIGNED | RTSTR_F_BIT_MASK | RTSTR_F_WIDTH | RTSTR_F_PRECISION | RTSTR_F_THOUSAND_SEP); + cch = RTStrFormatNumber(&szBuf[0], u.fp16.sel, 16, 4, -1, fFlags | RTSTR_F_16BIT); + Assert(cch == 4); + szBuf[4] = ':'; + cch = RTStrFormatNumber(&szBuf[5], u.fp16.off, 16, 4, -1, fFlags | RTSTR_F_16BIT); + Assert(cch == 4); + cch = 4 + 1 + 4; + break; + } + case RTSF_FP32: + { + fFlags &= ~(RTSTR_F_VALSIGNED | RTSTR_F_BIT_MASK | RTSTR_F_WIDTH | RTSTR_F_PRECISION | RTSTR_F_THOUSAND_SEP); + cch = RTStrFormatNumber(&szBuf[0], u.fp32.sel, 16, 4, -1, fFlags | RTSTR_F_16BIT); + Assert(cch == 4); + szBuf[4] = ':'; + cch = RTStrFormatNumber(&szBuf[5], u.fp32.off, 16, 8, -1, fFlags | RTSTR_F_32BIT); + Assert(cch == 8); + cch = 4 + 1 + 8; + break; + } + case RTSF_FP64: + { + fFlags &= ~(RTSTR_F_VALSIGNED | RTSTR_F_BIT_MASK | RTSTR_F_WIDTH | RTSTR_F_PRECISION | RTSTR_F_THOUSAND_SEP); + cch = RTStrFormatNumber(&szBuf[0], u.fp64.sel, 16, 4, -1, fFlags | RTSTR_F_16BIT); + Assert(cch == 4); + szBuf[4] = ':'; + cch = RTStrFormatNumber(&szBuf[5], u.fp64.off, 16, 16, -1, fFlags | RTSTR_F_64BIT); + Assert(cch == 16); + cch = 4 + 1 + 16; + break; + } + + case RTSF_IPV4: + return RTStrFormat(pfnOutput, pvArgOutput, NULL, 0, + "%u.%u.%u.%u", + u.Ipv4Addr.au8[0], + u.Ipv4Addr.au8[1], + u.Ipv4Addr.au8[2], + u.Ipv4Addr.au8[3]); + + case RTSF_IPV6: + { + if (VALID_PTR(u.pIpv6Addr)) + return rtstrFormatIPv6(pfnOutput, pvArgOutput, u.pIpv6Addr); + return pfnOutput(pvArgOutput, s_szNull, sizeof(s_szNull) - 1); + } + + case RTSF_MAC: + { + if (VALID_PTR(u.pMac)) + return RTStrFormat(pfnOutput, pvArgOutput, NULL, 0, + "%02x:%02x:%02x:%02x:%02x:%02x", + u.pMac->au8[0], + u.pMac->au8[1], + u.pMac->au8[2], + u.pMac->au8[3], + u.pMac->au8[4], + u.pMac->au8[5]); + return pfnOutput(pvArgOutput, s_szNull, sizeof(s_szNull) - 1); + } + + case RTSF_NETADDR: + { + if (VALID_PTR(u.pNetAddr)) + { + switch (u.pNetAddr->enmType) + { + case RTNETADDRTYPE_IPV4: + if (u.pNetAddr->uPort == RTNETADDR_PORT_NA) + return RTStrFormat(pfnOutput, pvArgOutput, NULL, 0, + "%u.%u.%u.%u", + u.pNetAddr->uAddr.IPv4.au8[0], + u.pNetAddr->uAddr.IPv4.au8[1], + u.pNetAddr->uAddr.IPv4.au8[2], + u.pNetAddr->uAddr.IPv4.au8[3]); + return RTStrFormat(pfnOutput, pvArgOutput, NULL, 0, + "%u.%u.%u.%u:%u", + u.pNetAddr->uAddr.IPv4.au8[0], + u.pNetAddr->uAddr.IPv4.au8[1], + u.pNetAddr->uAddr.IPv4.au8[2], + u.pNetAddr->uAddr.IPv4.au8[3], + u.pNetAddr->uPort); + + case RTNETADDRTYPE_IPV6: + if (u.pNetAddr->uPort == RTNETADDR_PORT_NA) + return rtstrFormatIPv6(pfnOutput, pvArgOutput, &u.pNetAddr->uAddr.IPv6); + + return RTStrFormat(pfnOutput, pvArgOutput, NULL, 0, + "[%RTnaipv6]:%u", + &u.pNetAddr->uAddr.IPv6, + u.pNetAddr->uPort); + + case RTNETADDRTYPE_MAC: + return RTStrFormat(pfnOutput, pvArgOutput, NULL, 0, + "%02x:%02x:%02x:%02x:%02x:%02x", + u.pNetAddr->uAddr.Mac.au8[0], + u.pNetAddr->uAddr.Mac.au8[1], + u.pNetAddr->uAddr.Mac.au8[2], + u.pNetAddr->uAddr.Mac.au8[3], + u.pNetAddr->uAddr.Mac.au8[4], + u.pNetAddr->uAddr.Mac.au8[5]); + + default: + return RTStrFormat(pfnOutput, pvArgOutput, NULL, 0, + "unsupported-netaddr-type=%u", u.pNetAddr->enmType); + + } + } + return pfnOutput(pvArgOutput, s_szNull, sizeof(s_szNull) - 1); + } + + case RTSF_UUID: + { + if (VALID_PTR(u.pUuid)) + { + /* cannot call RTUuidToStr because of GC/R0. */ + return RTStrFormat(pfnOutput, pvArgOutput, NULL, 0, + "%08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x", + RT_H2LE_U32(u.pUuid->Gen.u32TimeLow), + RT_H2LE_U16(u.pUuid->Gen.u16TimeMid), + RT_H2LE_U16(u.pUuid->Gen.u16TimeHiAndVersion), + u.pUuid->Gen.u8ClockSeqHiAndReserved, + u.pUuid->Gen.u8ClockSeqLow, + u.pUuid->Gen.au8Node[0], + u.pUuid->Gen.au8Node[1], + u.pUuid->Gen.au8Node[2], + u.pUuid->Gen.au8Node[3], + u.pUuid->Gen.au8Node[4], + u.pUuid->Gen.au8Node[5]); + } + return pfnOutput(pvArgOutput, s_szNull, sizeof(s_szNull) - 1); + } + + default: + AssertMsgFailed(("Internal error %d\n", s_aTypes[i].enmFormat)); + return 0; + } + + /* + * Finally, output the formatted string and return. + */ + return pfnOutput(pvArgOutput, szBuf, cch); + } + + + /* Group 3 */ + + /* + * Base name printing. + */ + case 'b': + { + switch (*(*ppszFormat)++) + { + case 'n': + { + const char *pszLastSep; + const char *psz = pszLastSep = va_arg(*pArgs, const char *); + if (!VALID_PTR(psz)) + return pfnOutput(pvArgOutput, RT_STR_TUPLE("")); + + while ((ch = *psz) != '\0') + { + if (RTPATH_IS_SEP(ch)) + { + do + psz++; + while ((ch = *psz) != '\0' && RTPATH_IS_SEP(ch)); + if (!ch) + break; + pszLastSep = psz; + } + psz++; + } + + return pfnOutput(pvArgOutput, pszLastSep, psz - pszLastSep); + } + + default: + AssertMsgFailed(("Invalid status code format type '%.10s'!\n", pszFormatOrg)); + break; + } + break; + } + + + /* + * Pretty function / method name printing. + */ + case 'f': + { + switch (*(*ppszFormat)++) + { + /* + * Pretty function / method name printing. + * This isn't 100% right (see classic signal prototype) and it assumes + * standardized names, but it'll do for today. + */ + case 'n': + { + const char *pszStart; + const char *psz = pszStart = va_arg(*pArgs, const char *); + if (!VALID_PTR(psz)) + return pfnOutput(pvArgOutput, RT_STR_TUPLE("")); + + while ((ch = *psz) != '\0' && ch != '(') + { + if (RT_C_IS_BLANK(ch)) + { + psz++; + while ((ch = *psz) != '\0' && (RT_C_IS_BLANK(ch) || ch == '(')) + psz++; + if (ch) + pszStart = psz; + } + else if (ch == '(') + break; + else + psz++; + } + + return pfnOutput(pvArgOutput, pszStart, psz - pszStart); + } + + default: + AssertMsgFailed(("Invalid status code format type '%.10s'!\n", pszFormatOrg)); + break; + } + break; + } + + + /* + * hex dumping and COM/XPCOM. + */ + case 'h': + { + switch (*(*ppszFormat)++) + { + /* + * Hex stuff. + */ + case 'x': + { + uint8_t *pu8 = va_arg(*pArgs, uint8_t *); + if (cchPrecision < 0) + cchPrecision = 16; + if (pu8) + { + switch (*(*ppszFormat)++) + { + /* + * Regular hex dump. + */ + case 'd': + { + int off = 0; + cch = 0; + + if (cchWidth <= 0) + cchWidth = 16; + + while (off < cchPrecision) + { + int i; + cch += RTStrFormat(pfnOutput, pvArgOutput, NULL, 0, "%s%0*p %04x:", off ? "\n" : "", sizeof(pu8) * 2, (uintptr_t)pu8, off); + for (i = 0; i < cchWidth && off + i < cchPrecision ; i++) + cch += RTStrFormat(pfnOutput, pvArgOutput, NULL, 0, + off + i < cchPrecision ? !(i & 7) && i ? "-%02x" : " %02x" : " ", pu8[i]); + while (i++ < cchWidth) + cch += pfnOutput(pvArgOutput, " ", 3); + + cch += pfnOutput(pvArgOutput, " ", 1); + + for (i = 0; i < cchWidth && off + i < cchPrecision; i++) + { + uint8_t u8 = pu8[i]; + cch += pfnOutput(pvArgOutput, u8 < 127 && u8 >= 32 ? (const char *)&u8 : ".", 1); + } + + /* next */ + pu8 += cchWidth; + off += cchWidth; + } + return cch; + } + + /* + * Hex string. + */ + case 's': + { + if (cchPrecision-- > 0) + { + cch = RTStrFormat(pfnOutput, pvArgOutput, NULL, 0, "%02x", *pu8++); + for (; cchPrecision > 0; cchPrecision--, pu8++) + cch += RTStrFormat(pfnOutput, pvArgOutput, NULL, 0, " %02x", *pu8); + return cch; + } + break; + } + + default: + AssertMsgFailed(("Invalid status code format type '%.10s'!\n", pszFormatOrg)); + break; + } + } + else + return pfnOutput(pvArgOutput, RT_STR_TUPLE("")); + break; + } + + +#ifdef IN_RING3 + /* + * XPCOM / COM status code: %Rhrc, %Rhrf, %Rhra + * ASSUMES: If Windows Then COM else XPCOM. + */ + case 'r': + { + uint32_t hrc = va_arg(*pArgs, uint32_t); + PCRTCOMERRMSG pMsg = RTErrCOMGet(hrc); + switch (*(*ppszFormat)++) + { + case 'c': + return pfnOutput(pvArgOutput, pMsg->pszDefine, strlen(pMsg->pszDefine)); + case 'f': + return pfnOutput(pvArgOutput, pMsg->pszMsgFull,strlen(pMsg->pszMsgFull)); + case 'a': + return RTStrFormat(pfnOutput, pvArgOutput, NULL, 0, "%s (0x%08X) - %s", pMsg->pszDefine, hrc, pMsg->pszMsgFull); + default: + AssertMsgFailed(("Invalid status code format type '%.10s'!\n", pszFormatOrg)); + return 0; + } + break; + } +#endif /* IN_RING3 */ + + default: + AssertMsgFailed(("Invalid status code format type '%.10s'!\n", pszFormatOrg)); + return 0; + + } + break; + } + + /* + * iprt status code: %Rrc, %Rrs, %Rrf, %Rra. + */ + case 'r': + { + int rc = va_arg(*pArgs, int); +#ifdef IN_RING3 /* we don't want this anywhere else yet. */ + PCRTSTATUSMSG pMsg = RTErrGet(rc); + switch (*(*ppszFormat)++) + { + case 'c': + return pfnOutput(pvArgOutput, pMsg->pszDefine, strlen(pMsg->pszDefine)); + case 's': + return pfnOutput(pvArgOutput, pMsg->pszMsgShort, strlen(pMsg->pszMsgShort)); + case 'f': + return pfnOutput(pvArgOutput, pMsg->pszMsgFull, strlen(pMsg->pszMsgFull)); + case 'a': + return RTStrFormat(pfnOutput, pvArgOutput, NULL, 0, "%s (%d) - %s", pMsg->pszDefine, rc, pMsg->pszMsgFull); + default: + AssertMsgFailed(("Invalid status code format type '%.10s'!\n", pszFormatOrg)); + return 0; + } +#else /* !IN_RING3 */ + switch (*(*ppszFormat)++) + { + case 'c': + case 's': + case 'f': + case 'a': + return RTStrFormat(pfnOutput, pvArgOutput, NULL, 0, "%d", rc); + default: + AssertMsgFailed(("Invalid status code format type '%.10s'!\n", pszFormatOrg)); + return 0; + } +#endif /* !IN_RING3 */ + break; + } + +#if defined(IN_RING3) + /* + * Windows status code: %Rwc, %Rwf, %Rwa + */ + case 'w': + { + long rc = va_arg(*pArgs, long); +# if defined(RT_OS_WINDOWS) + PCRTWINERRMSG pMsg = RTErrWinGet(rc); +# endif + switch (*(*ppszFormat)++) + { +# if defined(RT_OS_WINDOWS) + case 'c': + return pfnOutput(pvArgOutput, pMsg->pszDefine, strlen(pMsg->pszDefine)); + case 'f': + return pfnOutput(pvArgOutput, pMsg->pszMsgFull,strlen(pMsg->pszMsgFull)); + case 'a': + return RTStrFormat(pfnOutput, pvArgOutput, NULL, 0, "%s (0x%08X) - %s", pMsg->pszDefine, rc, pMsg->pszMsgFull); +# else + case 'c': + case 'f': + case 'a': + return RTStrFormat(pfnOutput, pvArgOutput, NULL, 0, "0x%08X", rc); +# endif + default: + AssertMsgFailed(("Invalid status code format type '%.10s'!\n", pszFormatOrg)); + return 0; + } + break; + } +#endif /* IN_RING3 */ + + /* + * Group 4, structure dumpers. + */ + case 'D': + { + /* + * Interpret the type. + */ + typedef enum + { + RTST_TIMESPEC + } RTST; +/** Set if it's a pointer */ +#define RTST_FLAGS_POINTER RT_BIT(0) + static const struct + { + uint8_t cch; /**< the length of the string. */ + char sz[16-2]; /**< the part following 'R'. */ + uint8_t cb; /**< the size of the argument. */ + uint8_t fFlags; /**< RTST_FLAGS_* */ + RTST enmType; /**< The structure type. */ + } + /** Sorted array of types, looked up using binary search! */ + s_aTypes[] = + { +#define STRMEM(str) sizeof(str) - 1, str + { STRMEM("Dtimespec"), sizeof(PCRTTIMESPEC), RTST_FLAGS_POINTER, RTST_TIMESPEC}, +#undef STRMEM + }; + const char *pszType = *ppszFormat - 1; + int iStart = 0; + int iEnd = RT_ELEMENTS(s_aTypes) - 1; + int i = RT_ELEMENTS(s_aTypes) / 2; + + union + { + const void *pv; + uint64_t u64; + PCRTTIMESPEC pTimeSpec; + } u; + + AssertMsg(!chArgSize, ("Not argument size '%c' for RT types! '%.10s'\n", chArgSize, pszFormatOrg)); + + /* + * Lookup the type - binary search. + */ + for (;;) + { + int iDiff = strncmp(pszType, s_aTypes[i].sz, s_aTypes[i].cch); + if (!iDiff) + break; + if (iEnd == iStart) + { + AssertMsgFailed(("Invalid format type '%.10s'!\n", pszFormatOrg)); + return 0; + } + if (iDiff < 0) + iEnd = i - 1; + else + iStart = i + 1; + if (iEnd < iStart) + { + AssertMsgFailed(("Invalid format type '%.10s'!\n", pszFormatOrg)); + return 0; + } + i = iStart + (iEnd - iStart) / 2; + } + *ppszFormat += s_aTypes[i].cch - 1; + + /* + * Fetch the argument. + */ + u.u64 = 0; + switch (s_aTypes[i].cb) + { + case sizeof(const void *): + u.pv = va_arg(*pArgs, const void *); + break; + default: + AssertMsgFailed(("Invalid format error, size %d'!\n", s_aTypes[i].cb)); + break; + } + + /* + * If it's a pointer, we'll check if it's valid before going on. + */ + if ((s_aTypes[i].fFlags & RTST_FLAGS_POINTER) && !VALID_PTR(u.pv)) + return pfnOutput(pvArgOutput, RT_STR_TUPLE("")); + + /* + * Format the output. + */ + switch (s_aTypes[i].enmType) + { + case RTST_TIMESPEC: + return RTStrFormat(pfnOutput, pvArgOutput, NULL, NULL, "%'lld ns", RTTimeSpecGetNano(u.pTimeSpec)); + + default: + AssertMsgFailed(("Invalid/unhandled enmType=%d\n", s_aTypes[i].enmType)); + break; + } + break; + } + +#ifdef IN_RING3 + /* + * Group 5, XML / HTML escapers. + */ + case 'M': + { + char chWhat = (*ppszFormat)[0]; + bool fAttr = chWhat == 'a'; + char chType = (*ppszFormat)[1]; + AssertMsgBreak(chWhat == 'a' || chWhat == 'e', ("Invalid IPRT format type '%.10s'!\n", pszFormatOrg)); + *ppszFormat += 2; + switch (chType) + { + case 's': + { + static const char s_szElemEscape[] = "<>&\"'"; + static const char s_szAttrEscape[] = "<>&\"\n\r"; /* more? */ + const char * const pszEscape = fAttr ? s_szAttrEscape : s_szElemEscape; + size_t const cchEscape = (fAttr ? RT_ELEMENTS(s_szAttrEscape) : RT_ELEMENTS(s_szElemEscape)) - 1; + size_t cchOutput = 0; + const char *pszStr = va_arg(*pArgs, char *); + ssize_t cchStr; + ssize_t offCur; + ssize_t offLast; + + if (!VALID_PTR(pszStr)) + pszStr = ""; + cchStr = RTStrNLen(pszStr, (unsigned)cchPrecision); + + if (fAttr) + cchOutput += pfnOutput(pvArgOutput, "\"", 1); + if (!(fFlags & RTSTR_F_LEFT)) + while (--cchWidth >= cchStr) + cchOutput += pfnOutput(pvArgOutput, " ", 1); + + offLast = offCur = 0; + while (offCur < cchStr) + { + if (memchr(pszEscape, pszStr[offCur], cchEscape)) + { + if (offLast < offCur) + cchOutput += pfnOutput(pvArgOutput, &pszStr[offLast], offCur - offLast); + switch (pszStr[offCur]) + { + case '<': cchOutput += pfnOutput(pvArgOutput, "<", 4); break; + case '>': cchOutput += pfnOutput(pvArgOutput, ">", 4); break; + case '&': cchOutput += pfnOutput(pvArgOutput, "&", 5); break; + case '\'': cchOutput += pfnOutput(pvArgOutput, "'", 6); break; + case '"': cchOutput += pfnOutput(pvArgOutput, """, 6); break; + case '\n': cchOutput += pfnOutput(pvArgOutput, " ", 5); break; + case '\r': cchOutput += pfnOutput(pvArgOutput, " ", 5); break; + default: + AssertFailed(); + } + offLast = offCur + 1; + } + offCur++; + } + if (offLast < offCur) + cchOutput += pfnOutput(pvArgOutput, &pszStr[offLast], offCur - offLast); + + while (--cchWidth >= cchStr) + cchOutput += pfnOutput(pvArgOutput, " ", 1); + if (fAttr) + cchOutput += pfnOutput(pvArgOutput, "\"", 1); + return cchOutput; + } + + default: + AssertMsgFailed(("Invalid IPRT format type '%.10s'!\n", pszFormatOrg)); + } + break; + } +#endif /* IN_RING3 */ + + + /* + * Groups 6 - CPU Architecture Register Formatters. + * "%RAarch[reg]" + */ + case 'A': + { + char const * const pszArch = *ppszFormat; + const char *pszReg = pszArch; + size_t cchOutput = 0; + int cPrinted = 0; + size_t cchReg; + + /* Parse out the */ + while ((ch = *pszReg++) && ch != '[') + { /* nothing */ } + AssertMsgBreak(ch == '[', ("Malformed IPRT architecture register format type '%.10s'!\n", pszFormatOrg)); + + cchReg = 0; + while ((ch = pszReg[cchReg]) && ch != ']') + cchReg++; + AssertMsgBreak(ch == ']', ("Malformed IPRT architecture register format type '%.10s'!\n", pszFormatOrg)); + + *ppszFormat = &pszReg[cchReg + 1]; + + +#define REG_EQUALS(a_szReg) (sizeof(a_szReg) - 1 == cchReg && !strncmp(a_szReg, pszReg, sizeof(a_szReg) - 1)) +#define REG_OUT_BIT(a_uVal, a_fBitMask, a_szName) \ + do { \ + if ((a_uVal) & (a_fBitMask)) \ + { \ + if (!cPrinted++) \ + cchOutput += pfnOutput(pvArgOutput, "{" a_szName, sizeof(a_szName)); \ + else \ + cchOutput += pfnOutput(pvArgOutput, "," a_szName, sizeof(a_szName)); \ + (a_uVal) &= ~(a_fBitMask); \ + } \ + } while (0) +#define REG_OUT_CLOSE(a_uVal) \ + do { \ + if ((a_uVal)) \ + { \ + cchOutput += pfnOutput(pvArgOutput, !cPrinted ? "{unkn=" : ",unkn=", 6); \ + cch = RTStrFormatNumber(&szBuf[0], (a_uVal), 16, 1, -1, fFlags); \ + cchOutput += pfnOutput(pvArgOutput, szBuf, cch); \ + cPrinted++; \ + } \ + if (cPrinted) \ + cchOutput += pfnOutput(pvArgOutput, "}", 1); \ + } while (0) + + + if (0) + { /* dummy */ } +#ifdef STRFORMAT_WITH_X86 + /* + * X86 & AMD64. + */ + else if ( pszReg - pszArch == 3 + 1 + && pszArch[0] == 'x' + && pszArch[1] == '8' + && pszArch[2] == '6') + { + if (REG_EQUALS("cr0")) + { + uint64_t cr0 = va_arg(*pArgs, uint64_t); + fFlags |= RTSTR_F_64BIT; + cch = RTStrFormatNumber(&szBuf[0], cr0, 16, 8, -1, fFlags | RTSTR_F_ZEROPAD); + cchOutput += pfnOutput(pvArgOutput, szBuf, cch); + REG_OUT_BIT(cr0, X86_CR0_PE, "PE"); + REG_OUT_BIT(cr0, X86_CR0_MP, "MP"); + REG_OUT_BIT(cr0, X86_CR0_EM, "EM"); + REG_OUT_BIT(cr0, X86_CR0_TS, "DE"); + REG_OUT_BIT(cr0, X86_CR0_ET, "ET"); + REG_OUT_BIT(cr0, X86_CR0_NE, "NE"); + REG_OUT_BIT(cr0, X86_CR0_WP, "WP"); + REG_OUT_BIT(cr0, X86_CR0_AM, "AM"); + REG_OUT_BIT(cr0, X86_CR0_NW, "NW"); + REG_OUT_BIT(cr0, X86_CR0_CD, "CD"); + REG_OUT_BIT(cr0, X86_CR0_PG, "PG"); + REG_OUT_CLOSE(cr0); + } + else if (REG_EQUALS("cr4")) + { + uint64_t cr4 = va_arg(*pArgs, uint64_t); + fFlags |= RTSTR_F_64BIT; + cch = RTStrFormatNumber(&szBuf[0], cr4, 16, 8, -1, fFlags | RTSTR_F_ZEROPAD); + cchOutput += pfnOutput(pvArgOutput, szBuf, cch); + REG_OUT_BIT(cr4, X86_CR4_VME, "VME"); + REG_OUT_BIT(cr4, X86_CR4_PVI, "PVI"); + REG_OUT_BIT(cr4, X86_CR4_TSD, "TSD"); + REG_OUT_BIT(cr4, X86_CR4_DE, "DE"); + REG_OUT_BIT(cr4, X86_CR4_PSE, "PSE"); + REG_OUT_BIT(cr4, X86_CR4_PAE, "PAE"); + REG_OUT_BIT(cr4, X86_CR4_MCE, "MCE"); + REG_OUT_BIT(cr4, X86_CR4_PGE, "PGE"); + REG_OUT_BIT(cr4, X86_CR4_PCE, "PCE"); + REG_OUT_BIT(cr4, X86_CR4_OSFXSR, "OSFXSR"); + REG_OUT_BIT(cr4, X86_CR4_OSXMMEEXCPT, "OSXMMEEXCPT"); + REG_OUT_BIT(cr4, X86_CR4_VMXE, "VMXE"); + REG_OUT_BIT(cr4, X86_CR4_SMXE, "SMXE"); + REG_OUT_BIT(cr4, X86_CR4_PCIDE, "PCIDE"); + REG_OUT_BIT(cr4, X86_CR4_OSXSAVE, "OSXSAVE"); + REG_OUT_BIT(cr4, X86_CR4_SMEP, "SMEP"); + REG_OUT_BIT(cr4, X86_CR4_SMAP, "SMAP"); + REG_OUT_CLOSE(cr4); + } + else + AssertMsgFailed(("Unknown x86 register specified in '%.10s'!\n", pszFormatOrg)); + } +#endif + else + AssertMsgFailed(("Unknown architecture specified in '%.10s'!\n", pszFormatOrg)); +#undef REG_OUT_BIT +#undef REG_OUT_CLOSE +#undef REG_EQUALS + return cchOutput; + } + + /* + * Invalid/Unknown. Bitch about it. + */ + default: + AssertMsgFailed(("Invalid IPRT format type '%.10s'!\n", pszFormatOrg)); + break; + } + } + else + AssertMsgFailed(("Invalid IPRT format type '%.10s'!\n", pszFormatOrg)); + + NOREF(pszFormatOrg); + return 0; +} + --- linux-raspi2-4.2.0.orig/ubuntu/vbox/vboxguest/common/string/strformattype.c +++ linux-raspi2-4.2.0/ubuntu/vbox/vboxguest/common/string/strformattype.c @@ -0,0 +1,476 @@ +/* $Id: strformattype.cpp $ */ +/** @file + * IPRT - IPRT String Formatter Extensions, Dynamic Types. + */ + +/* + * Copyright (C) 2008-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + + +/******************************************************************************* +* Global Variables * +*******************************************************************************/ +#define LOG_GROUP RTLOGGROUP_STRING +#include +#include "internal/iprt.h" + +#include +#include +#include +#include "internal/string.h" + + +/******************************************************************************* +* Defined Constants And Macros * +*******************************************************************************/ +#ifdef RT_STRICT +# define RTSTRFORMATTYPE_WITH_LOCKING +#endif +#ifdef RTSTRFORMATTYPE_WITH_LOCKING +# define RTSTRFORMATTYPE_LOCK_OFFSET 0x7fff0000 +#endif + + +/******************************************************************************* +* Structures and Typedefs * +*******************************************************************************/ +/** + * Description of a registered formatting type. + * + * In GC we'll be using offsets instead of pointers just to try avoid having to + * do the bothersome relocating. This of course assumes that all the relevant + * code stays within the same mapping. + */ +typedef struct RTSTRDYNFMT +{ + /** The length of the type. */ + uint8_t cchType; + /** The type name. */ + char szType[47]; + /** The handler function. + * In GC the offset is relative to g_aTypes[0], so that &g_aTypes[0] + offHandler + * gives the actual address. */ +#ifdef IN_RC + int32_t offHandler; +#else + PFNRTSTRFORMATTYPE pfnHandler; +#endif + /** Callback argument. */ + void * volatile pvUser; +#if ARCH_BITS == 32 + /** Size alignment padding. */ + char abPadding[8]; +#endif +} RTSTRDYNFMT; +AssertCompileSizeAlignment(RTSTRDYNFMT, 32); +typedef RTSTRDYNFMT *PRTSTRDYNFMT; +typedef RTSTRDYNFMT const *PCRTSTRDYNFMT; + + +/******************************************************************************* +* Global Variables * +*******************************************************************************/ +/** The registered types, sorted for binary lookup. + * We use a static array here because it avoids RTMemAlloc dependencies+leaks. */ +static RTSTRDYNFMT g_aTypes[64]; +/** The number of registered types. */ +static uint32_t g_cTypes = 0; +#ifdef RTSTRFORMATTYPE_WITH_LOCKING +/** This is just a thing we assert/spin on. + * Zero == unlocked, negative == write locked, positive == read locked. + * + * The user should do all the serialization and we'll smack his fingers in + * strict builds if he doesn't. */ +static int32_t volatile g_i32Spinlock = 0; +#endif + + +/** + * Locks the stuff for updating. + * + * Mostly for check that the caller is doing his job. + */ +DECLINLINE(void) rtstrFormatTypeWriteLock(void) +{ +#if defined(RTSTRFORMATTYPE_WITH_LOCKING) + if (RT_UNLIKELY(!ASMAtomicCmpXchgS32(&g_i32Spinlock, -RTSTRFORMATTYPE_LOCK_OFFSET, 0))) + { + unsigned volatile i; + + AssertFailed(); + for (i = 0;; i++) + if ( !g_i32Spinlock + && ASMAtomicCmpXchgS32(&g_i32Spinlock, -RTSTRFORMATTYPE_LOCK_OFFSET, 0)) + break; + } +#endif +} + + +/** + * Undoing rtstrFormatTypeWriteLock. + */ +DECLINLINE(void) rtstrFormatTypeWriteUnlock(void) +{ +#if defined(RTSTRFORMATTYPE_WITH_LOCKING) + Assert(g_i32Spinlock < 0); + ASMAtomicAddS32(&g_i32Spinlock, RTSTRFORMATTYPE_LOCK_OFFSET); +#endif +} + + +/** + * Locks the stuff for reading. + * + * This is just cheap stuff to make sure the caller is doing the right thing. + */ +DECLINLINE(void) rtstrFormatTypeReadLock(void) +{ +#if defined(RTSTRFORMATTYPE_WITH_LOCKING) + if (RT_UNLIKELY(ASMAtomicIncS32(&g_i32Spinlock) < 0)) + { + unsigned volatile i; + + AssertFailed(); + for (i = 0;; i++) + if (ASMAtomicUoReadS32(&g_i32Spinlock) > 0) + break; + } +#endif +} + + +/** + * Undoing rtstrFormatTypeReadLock. + */ +DECLINLINE(void) rtstrFormatTypeReadUnlock(void) +{ +#if defined(RTSTRFORMATTYPE_WITH_LOCKING) + Assert(g_i32Spinlock > 0); + ASMAtomicDecS32(&g_i32Spinlock); +#endif +} + + +/** + * Compares a type string with a type entry, the string doesn't need to be terminated. + * + * @returns Same as memcmp. + * @param pszType The type string, doesn't need to be terminated. + * @param cchType The number of chars in @a pszType to compare. + * @param pType The type entry to compare with. + */ +DECLINLINE(int) rtstrFormatTypeCompare(const char *pszType, size_t cchType, PCRTSTRDYNFMT pType) +{ + size_t cch = RT_MIN(cchType, pType->cchType); + int iDiff = memcmp(pszType, pType->szType, cch); + if (!iDiff) + { + if (cchType == pType->cchType) + return 0; + iDiff = cchType < pType->cchType ? -1 : 1; + } + return iDiff; +} + + +/** + * Looks up a type entry. + * + * @returns The type index, -1 on failure. + * @param pszType The type to look up. This doesn't have to be terminated. + * @param cchType The length of the type. + */ +DECLINLINE(int32_t) rtstrFormatTypeLookup(const char *pszType, size_t cchType) +{ + /* + * Lookup the type - binary search. + */ + int32_t iStart = 0; + int32_t iEnd = g_cTypes - 1; + int32_t i = iEnd / 2; + for (;;) + { + int iDiff = rtstrFormatTypeCompare(pszType, cchType, &g_aTypes[i]); + if (!iDiff) + return i; + if (iEnd == iStart) + break; + if (iDiff < 0) + iEnd = i - 1; + else + iStart = i + 1; + if (iEnd < iStart) + break; + i = iStart + (iEnd - iStart) / 2; + } + return -1; +} + + +/** + * Register a format handler for a type. + * + * The format handler is used to handle '%R[type]' format types, where the argument + * in the vector is a pointer value (a bit restrictive, but keeps it simple). + * + * The caller must ensure that no other thread will be making use of any of + * the dynamic formatting type facilities simultaneously with this call. + * + * @returns IPRT status code. + * @retval VINF_SUCCESS on success. + * @retval VERR_ALREADY_EXISTS if the type has already been registered. + * @retval VERR_TOO_MANY_OPEN_FILES if all the type slots has been allocated already. + * + * @param pszType The type name. + * @param pfnHandler The handler address. See FNRTSTRFORMATTYPE for details. + * @param pvUser The user argument to pass to the handler. See RTStrFormatTypeSetUser + * for how to update this later. + */ +RTDECL(int) RTStrFormatTypeRegister(const char *pszType, PFNRTSTRFORMATTYPE pfnHandler, void *pvUser) +{ + int rc; + size_t cchType; + uint32_t cTypes; + + /* + * Validate input. + */ + AssertPtr(pfnHandler); + AssertPtr(pszType); + cchType = strlen(pszType); + AssertReturn(cchType < RT_SIZEOFMEMB(RTSTRDYNFMT, szType), VERR_INVALID_PARAMETER); + + /* + * Try add it. + */ + rtstrFormatTypeWriteLock(); + + /* check that there are empty slots. */ + cTypes = g_cTypes; + if (cTypes < RT_ELEMENTS(g_aTypes)) + { + /* find where to insert it. */ + uint32_t i = 0; + rc = VINF_SUCCESS; + while (i < cTypes) + { + int iDiff = rtstrFormatTypeCompare(pszType, cchType, &g_aTypes[i]); + if (!iDiff) + { + rc = VERR_ALREADY_EXISTS; + break; + } + if (iDiff < 0) + break; + i++; + } + if (RT_SUCCESS(rc)) + { + /* make room. */ + uint32_t cToMove = cTypes - i; + if (cToMove) + memmove(&g_aTypes[i + 1], &g_aTypes[i], cToMove * sizeof(g_aTypes[i])); + + /* insert the new entry. */ + memset(&g_aTypes[i], 0, sizeof(g_aTypes[i])); + memcpy(&g_aTypes[i].szType[0], pszType, cchType + 1); + g_aTypes[i].cchType = (uint8_t)cchType; + g_aTypes[i].pvUser = pvUser; +#ifdef IN_RC + g_aTypes[i].offHandler = (intptr_t)pfnHandler - (intptr_t)&g_aTypes[0]; +#else + g_aTypes[i].pfnHandler = pfnHandler; +#endif + ASMAtomicIncU32(&g_cTypes); + rc = VINF_SUCCESS; + } + } + else + rc = VERR_TOO_MANY_OPEN_FILES; /** @todo fix error code */ + + rtstrFormatTypeWriteUnlock(); + + return rc; +} +RT_EXPORT_SYMBOL(RTStrFormatTypeRegister); + + +/** + * Deregisters a format type. + * + * The caller must ensure that no other thread will be making use of any of + * the dynamic formatting type facilities simultaneously with this call. + * + * @returns IPRT status code. + * @retval VINF_SUCCESS on success. + * @retval VERR_FILE_NOT_FOUND if not found. + * + * @param pszType The type to deregister. + */ +RTDECL(int) RTStrFormatTypeDeregister(const char *pszType) +{ + int32_t i; + + /* + * Validate input. + */ + AssertPtr(pszType); + + /* + * Locate the entry and remove it. + */ + rtstrFormatTypeWriteLock(); + i = rtstrFormatTypeLookup(pszType, strlen(pszType)); + if (i >= 0) + { + const uint32_t cTypes = g_cTypes; + int32_t cToMove = cTypes - i - 1; + if (cToMove > 0) + memmove(&g_aTypes[i], &g_aTypes[i + 1], cToMove * sizeof(g_aTypes[i])); + memset(&g_aTypes[cTypes - 1], 0, sizeof(g_aTypes[0])); + ASMAtomicDecU32(&g_cTypes); + } + rtstrFormatTypeWriteUnlock(); + + Assert(i >= 0); + return i >= 0 + ? VINF_SUCCESS + : VERR_FILE_NOT_FOUND; /** @todo fix status code */ +} +RT_EXPORT_SYMBOL(RTStrFormatTypeDeregister); + + +/** + * Sets the user argument for a type. + * + * This can be used if a user argument needs relocating in GC. + * + * @returns IPRT status code. + * @retval VINF_SUCCESS on success. + * @retval VERR_FILE_NOT_FOUND if not found. + * + * @param pszType The type to update. + * @param pvUser The new user argument value. + */ +RTDECL(int) RTStrFormatTypeSetUser(const char *pszType, void *pvUser) +{ + int32_t i; + + /* + * Validate input. + */ + AssertPtr(pszType); + + /* + * Locate the entry and update it. + */ + rtstrFormatTypeReadLock(); + + i = rtstrFormatTypeLookup(pszType, strlen(pszType)); + if (i >= 0) + ASMAtomicWritePtr(&g_aTypes[i].pvUser, pvUser); + + rtstrFormatTypeReadUnlock(); + + Assert(i >= 0); + return i >= 0 + ? VINF_SUCCESS + : VERR_FILE_NOT_FOUND; /** @todo fix status code */ +} +RT_EXPORT_SYMBOL(RTStrFormatTypeSetUser); + + +/** + * Formats a type using a registered callback handler. + * + * This will handle %R[type]. + * + * @returns The number of bytes formatted. + * @param pfnOutput Pointer to output function. + * @param pvArgOutput Argument for the output function. + * @param ppszFormat Pointer to the format string pointer. Advance this till the char + * after the format specifier. + * @param pArgs Pointer to the argument list. Use this to fetch the arguments. + * @param cchWidth Format Width. -1 if not specified. + * @param cchPrecision Format Precision. -1 if not specified. + * @param fFlags Flags (RTSTR_NTFS_*). + * @param chArgSize The argument size specifier, 'l' or 'L'. + */ +DECLHIDDEN(size_t) rtstrFormatType(PFNRTSTROUTPUT pfnOutput, void *pvArgOutput, const char **ppszFormat, + va_list *pArgs, int cchWidth, int cchPrecision, unsigned fFlags, char chArgSize) +{ + size_t cch; + int32_t i; + char const *pszTypeEnd; + char const *pszType; + char ch; + void *pvValue = va_arg(*pArgs, void *); + NOREF(chArgSize); + + /* + * Parse out the type. + */ + pszType = *ppszFormat + 2; + *ppszFormat = pszType; + Assert(pszType[-1] == '['); + Assert(pszType[-2] == 'R'); + pszTypeEnd = pszType; + while ((ch = *pszTypeEnd) != ']') + { + AssertReturn(ch != '\0', 0); + AssertReturn(ch != '%', 0); + AssertReturn(ch != '[', 0); + pszTypeEnd++; + } + *ppszFormat = pszTypeEnd + 1; + + /* + * Locate the entry and call the handler. + */ + rtstrFormatTypeReadLock(); + + i = rtstrFormatTypeLookup(pszType, pszTypeEnd - pszType); + if (RT_LIKELY(i >= 0)) + { +#ifdef IN_RC + PFNRTSTRFORMATTYPE pfnHandler = (PFNRTSTRFORMATTYPE)((intptr_t)&g_aTypes[0] + g_aTypes[i].offHandler); +#else + PFNRTSTRFORMATTYPE pfnHandler = g_aTypes[i].pfnHandler; +#endif + void *pvUser = ASMAtomicReadPtr(&g_aTypes[i].pvUser); + + rtstrFormatTypeReadUnlock(); + + cch = pfnHandler(pfnOutput, pvArgOutput, g_aTypes[i].szType, pvValue, cchWidth, cchPrecision, fFlags, pvUser); + } + else + { + rtstrFormatTypeReadUnlock(); + + cch = pfnOutput(pvArgOutput, RT_STR_TUPLE("")); + } + + return cch; +} + --- linux-raspi2-4.2.0.orig/ubuntu/vbox/vboxguest/common/string/strprintf.c +++ linux-raspi2-4.2.0/ubuntu/vbox/vboxguest/common/string/strprintf.c @@ -0,0 +1,129 @@ +/* $Id: strprintf.cpp $ */ +/** @file + * IPRT - String Formatters. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + + +/******************************************************************************* +* Header Files * +*******************************************************************************/ +#include +#include "internal/iprt.h" + +#include + + +/******************************************************************************* +* Structures and Typedefs * +*******************************************************************************/ +/** strbufoutput() argument structure. */ +typedef struct STRBUFARG +{ + /** Pointer to current buffer position. */ + char *psz; + /** Number of bytes left in the buffer - not including the trailing zero. */ + size_t cch; +} STRBUFARG; +/** Pointer to a strbufoutput() argument structure. */ +typedef STRBUFARG *PSTRBUFARG; + + +/******************************************************************************* +* Internal Functions * +*******************************************************************************/ +static DECLCALLBACK(size_t) strbufoutput(void *pvArg, const char *pachChars, size_t cbChars); + + +/** + * Output callback. + * + * @returns number of bytes written. + * @param pvArg Pointer to a STRBUFARG structure. + * @param pachChars Pointer to an array of utf-8 characters. + * @param cbChars Number of bytes in the character array pointed to by pachChars. + */ +static DECLCALLBACK(size_t) strbufoutput(void *pvArg, const char *pachChars, size_t cbChars) +{ + PSTRBUFARG pArg = (PSTRBUFARG)pvArg; + + cbChars = RT_MIN(pArg->cch, cbChars); + if (cbChars) + { + memcpy(pArg->psz, pachChars, cbChars); + pArg->cch -= cbChars; + pArg->psz += cbChars; + } + *pArg->psz = '\0'; + + return cbChars; +} + + +RTDECL(size_t) RTStrPrintfExV(PFNSTRFORMAT pfnFormat, void *pvArg, char *pszBuffer, size_t cchBuffer, const char *pszFormat, va_list args) +{ + STRBUFARG Arg; + + if (!cchBuffer) + { + AssertMsgFailed(("Excellent idea! Format a string with no space for the output!\n")); + return 0; + } + + Arg.psz = pszBuffer; + Arg.cch = cchBuffer - 1; + return RTStrFormatV(strbufoutput, &Arg, pfnFormat, pvArg, pszFormat, args); +} +RT_EXPORT_SYMBOL(RTStrPrintfExV); + + +RTDECL(size_t) RTStrPrintfV(char *pszBuffer, size_t cchBuffer, const char *pszFormat, va_list args) +{ + return RTStrPrintfExV(NULL, NULL, pszBuffer, cchBuffer, pszFormat, args); +} +RT_EXPORT_SYMBOL(RTStrPrintfV); + + +RTDECL(size_t) RTStrPrintfEx(PFNSTRFORMAT pfnFormat, void *pvArg, char *pszBuffer, size_t cchBuffer, const char *pszFormat, ...) +{ + va_list args; + size_t cbRet; + va_start(args, pszFormat); + cbRet = RTStrPrintfExV(pfnFormat, pvArg, pszBuffer, cchBuffer, pszFormat, args); + va_end(args); + return cbRet; +} +RT_EXPORT_SYMBOL(RTStrPrintfEx); + + +RTDECL(size_t) RTStrPrintf(char *pszBuffer, size_t cchBuffer, const char *pszFormat, ...) +{ + va_list args; + size_t cbRet; + va_start(args, pszFormat); + cbRet = RTStrPrintfV(pszBuffer, cchBuffer, pszFormat, args); + va_end(args); + return cbRet; +} +RT_EXPORT_SYMBOL(RTStrPrintf); + --- linux-raspi2-4.2.0.orig/ubuntu/vbox/vboxguest/common/string/strtonum.c +++ linux-raspi2-4.2.0/ubuntu/vbox/vboxguest/common/string/strtonum.c @@ -0,0 +1,1013 @@ +/* $Id: strtonum.cpp $ */ +/** @file + * IPRT - String To Number Conversion. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + + +/******************************************************************************* +* Header Files * +*******************************************************************************/ +#include +#include "internal/iprt.h" + +#include +#include /* needed for RT_C_IS_DIGIT */ +#include + + +/******************************************************************************* +* Global Variables * +*******************************************************************************/ +/** 8-bit char -> digit. */ +static const unsigned char g_auchDigits[256] = +{ + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,255,255,255,255,255,255, + 255, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35,255,255,255,255,255, + 255, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255 +}; +/** Approximated overflow shift checks. */ +static const char g_auchShift[36] = +{ + /* 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 */ + 64, 64, 63, 63, 62, 62, 62, 62, 61, 61, 61, 61, 61, 61, 61, 61, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 59, 59, 59, 59 +}; + +/* +#include +int main() +{ + int i; + printf("static const unsigned char g_auchDigits[256] =\n" + "{"); + for (i = 0; i < 256; i++) + { + int ch = 255; + if (i >= '0' && i <= '9') + ch = i - '0'; + else if (i >= 'a' && i <= 'z') + ch = i - 'a' + 10; + else if (i >= 'A' && i <= 'Z') + ch = i - 'A' + 10; + if (i == 0) + printf("\n %3d", ch); + else if ((i % 32) == 0) + printf(",\n %3d", ch); + else + printf(",%3d", ch); + } + printf("\n" + "};\n"); + return 0; +} +*/ + + +/** + * Converts a string representation of a number to a 64-bit unsigned number. + * + * @returns iprt status code. + * Warnings are used to indicate conversion problems. + * @retval VWRN_NUMBER_TOO_BIG + * @retval VWRN_NEGATIVE_UNSIGNED + * @retval VWRN_TRAILING_CHARS + * @retval VWRN_TRAILING_SPACES + * @retval VINF_SUCCESS + * @retval VERR_NO_DIGITS + * + * @param pszValue Pointer to the string value. + * @param ppszNext Where to store the pointer to the first char following the number. (Optional) + * @param uBase The base of the representation used. + * If the function will look for known prefixes before defaulting to 10. + * @param pu64 Where to store the converted number. (optional) + */ +RTDECL(int) RTStrToUInt64Ex(const char *pszValue, char **ppszNext, unsigned uBase, uint64_t *pu64) +{ + const char *psz = pszValue; + int iShift; + int rc; + uint64_t u64; + unsigned char uch; + + /* + * Positive/Negative stuff. + */ + bool fPositive = true; + for (;; psz++) + { + if (*psz == '+') + fPositive = true; + else if (*psz == '-') + fPositive = !fPositive; + else + break; + } + + /* + * Check for hex prefix. + */ + if (!uBase) + { + if ( psz[0] == '0' + && (psz[1] == 'x' || psz[1] == 'X') + && g_auchDigits[(unsigned char)psz[2]] < 16) + { + uBase = 16; + psz += 2; + } + else if ( psz[0] == '0' + && g_auchDigits[(unsigned char)psz[1]] < 8) + { + uBase = 8; + psz++; + } + else + uBase = 10; + } + else if ( uBase == 16 + && psz[0] == '0' + && (psz[1] == 'x' || psz[1] == 'X') + && g_auchDigits[(unsigned char)psz[2]] < 16) + psz += 2; + + /* + * Interpret the value. + * Note: We only support ascii digits at this time... :-) + */ + iShift = g_auchShift[uBase]; + pszValue = psz; /* (Prefix and sign doesn't count in the digit counting.) */ + rc = VINF_SUCCESS; + u64 = 0; + while ((uch = (unsigned char)*psz) != 0) + { + unsigned char chDigit = g_auchDigits[uch]; + uint64_t u64Prev; + + if (chDigit >= uBase) + break; + + u64Prev = u64; + u64 *= uBase; + u64 += chDigit; + if (u64Prev > u64 || (u64Prev >> iShift)) + rc = VWRN_NUMBER_TOO_BIG; + psz++; + } + + if (!fPositive) + { + if (rc == VINF_SUCCESS) + rc = VWRN_NEGATIVE_UNSIGNED; + u64 = -(int64_t)u64; + } + + if (pu64) + *pu64 = u64; + + if (psz == pszValue) + rc = VERR_NO_DIGITS; + + if (ppszNext) + *ppszNext = (char *)psz; + + /* + * Warn about trailing chars/spaces. + */ + if ( rc == VINF_SUCCESS + && *psz) + { + while (*psz == ' ' || *psz == '\t') + psz++; + rc = *psz ? VWRN_TRAILING_CHARS : VWRN_TRAILING_SPACES; + } + + return rc; +} +RT_EXPORT_SYMBOL(RTStrToUInt64Ex); + + +/** + * Converts a string representation of a number to a 64-bit unsigned number, + * making sure the full string is converted. + * + * @returns iprt status code. + * Warnings are used to indicate conversion problems. + * @retval VWRN_NUMBER_TOO_BIG + * @retval VWRN_NEGATIVE_UNSIGNED + * @retval VINF_SUCCESS + * @retval VERR_NO_DIGITS + * @retval VERR_TRAILING_SPACES + * @retval VERR_TRAILING_CHARS + * + * @param pszValue Pointer to the string value. + * @param uBase The base of the representation used. + * If the function will look for known prefixes before defaulting to 10. + * @param pu64 Where to store the converted number. (optional) + */ +RTDECL(int) RTStrToUInt64Full(const char *pszValue, unsigned uBase, uint64_t *pu64) +{ + char *psz; + int rc = RTStrToUInt64Ex(pszValue, &psz, uBase, pu64); + if (RT_SUCCESS(rc) && *psz) + { + if (rc == VWRN_TRAILING_CHARS || rc == VWRN_TRAILING_SPACES) + rc = -rc; + else + { + while (*psz == ' ' || *psz == '\t') + psz++; + rc = *psz ? VERR_TRAILING_CHARS : VERR_TRAILING_SPACES; + } + } + return rc; +} +RT_EXPORT_SYMBOL(RTStrToUInt64Full); + + +/** + * Converts a string representation of a number to a 64-bit unsigned number. + * The base is guessed. + * + * @returns 64-bit unsigned number on success. + * @returns 0 on failure. + * @param pszValue Pointer to the string value. + */ +RTDECL(uint64_t) RTStrToUInt64(const char *pszValue) +{ + uint64_t u64; + int rc = RTStrToUInt64Ex(pszValue, NULL, 0, &u64); + if (RT_SUCCESS(rc)) + return u64; + return 0; +} +RT_EXPORT_SYMBOL(RTStrToUInt64); + + +/** + * Converts a string representation of a number to a 32-bit unsigned number. + * + * @returns iprt status code. + * Warnings are used to indicate conversion problems. + * @retval VWRN_NUMBER_TOO_BIG + * @retval VWRN_NEGATIVE_UNSIGNED + * @retval VWRN_TRAILING_CHARS + * @retval VWRN_TRAILING_SPACES + * @retval VINF_SUCCESS + * @retval VERR_NO_DIGITS + * + * @param pszValue Pointer to the string value. + * @param ppszNext Where to store the pointer to the first char following the number. (Optional) + * @param uBase The base of the representation used. + * If the function will look for known prefixes before defaulting to 10. + * @param pu32 Where to store the converted number. (optional) + */ +RTDECL(int) RTStrToUInt32Ex(const char *pszValue, char **ppszNext, unsigned uBase, uint32_t *pu32) +{ + uint64_t u64; + int rc = RTStrToUInt64Ex(pszValue, ppszNext, uBase, &u64); + if (RT_SUCCESS(rc)) + { + if (u64 & ~0xffffffffULL) + rc = VWRN_NUMBER_TOO_BIG; + } + if (pu32) + *pu32 = (uint32_t)u64; + return rc; +} +RT_EXPORT_SYMBOL(RTStrToUInt32Ex); + + +/** + * Converts a string representation of a number to a 32-bit unsigned number, + * making sure the full string is converted. + * + * @returns iprt status code. + * Warnings are used to indicate conversion problems. + * @retval VWRN_NUMBER_TOO_BIG + * @retval VWRN_NEGATIVE_UNSIGNED + * @retval VINF_SUCCESS + * @retval VERR_NO_DIGITS + * @retval VERR_TRAILING_SPACES + * @retval VERR_TRAILING_CHARS + * + * @param pszValue Pointer to the string value. + * @param uBase The base of the representation used. + * If the function will look for known prefixes before defaulting to 10. + * @param pu32 Where to store the converted number. (optional) + */ +RTDECL(int) RTStrToUInt32Full(const char *pszValue, unsigned uBase, uint32_t *pu32) +{ + uint64_t u64; + int rc = RTStrToUInt64Full(pszValue, uBase, &u64); + if (RT_SUCCESS(rc)) + { + if (u64 & ~0xffffffffULL) + rc = VWRN_NUMBER_TOO_BIG; + } + if (pu32) + *pu32 = (uint32_t)u64; + return rc; +} +RT_EXPORT_SYMBOL(RTStrToUInt32Full); + + +/** + * Converts a string representation of a number to a 64-bit unsigned number. + * The base is guessed. + * + * @returns 32-bit unsigned number on success. + * @returns 0 on failure. + * @param pszValue Pointer to the string value. + */ +RTDECL(uint32_t) RTStrToUInt32(const char *pszValue) +{ + uint32_t u32; + int rc = RTStrToUInt32Ex(pszValue, NULL, 0, &u32); + if (RT_SUCCESS(rc)) + return u32; + return 0; +} +RT_EXPORT_SYMBOL(RTStrToUInt32); + + +/** + * Converts a string representation of a number to a 16-bit unsigned number. + * + * @returns iprt status code. + * Warnings are used to indicate conversion problems. + * @retval VWRN_NUMBER_TOO_BIG + * @retval VWRN_NEGATIVE_UNSIGNED + * @retval VWRN_TRAILING_CHARS + * @retval VWRN_TRAILING_SPACES + * @retval VINF_SUCCESS + * @retval VERR_NO_DIGITS + * + * @param pszValue Pointer to the string value. + * @param ppszNext Where to store the pointer to the first char following the number. (Optional) + * @param uBase The base of the representation used. + * If the function will look for known prefixes before defaulting to 10. + * @param pu16 Where to store the converted number. (optional) + */ +RTDECL(int) RTStrToUInt16Ex(const char *pszValue, char **ppszNext, unsigned uBase, uint16_t *pu16) +{ + uint64_t u64; + int rc = RTStrToUInt64Ex(pszValue, ppszNext, uBase, &u64); + if (RT_SUCCESS(rc)) + { + if (u64 & ~0xffffULL) + rc = VWRN_NUMBER_TOO_BIG; + } + if (pu16) + *pu16 = (uint16_t)u64; + return rc; +} +RT_EXPORT_SYMBOL(RTStrToUInt16Ex); + + +/** + * Converts a string representation of a number to a 16-bit unsigned number, + * making sure the full string is converted. + * + * @returns iprt status code. + * Warnings are used to indicate conversion problems. + * @retval VWRN_NUMBER_TOO_BIG + * @retval VWRN_NEGATIVE_UNSIGNED + * @retval VINF_SUCCESS + * @retval VERR_NO_DIGITS + * @retval VERR_TRAILING_SPACES + * @retval VERR_TRAILING_CHARS + * + * @param pszValue Pointer to the string value. + * @param uBase The base of the representation used. + * If the function will look for known prefixes before defaulting to 10. + * @param pu16 Where to store the converted number. (optional) + */ +RTDECL(int) RTStrToUInt16Full(const char *pszValue, unsigned uBase, uint16_t *pu16) +{ + uint64_t u64; + int rc = RTStrToUInt64Full(pszValue, uBase, &u64); + if (RT_SUCCESS(rc)) + { + if (u64 & ~0xffffULL) + rc = VWRN_NUMBER_TOO_BIG; + } + if (pu16) + *pu16 = (uint16_t)u64; + return rc; +} +RT_EXPORT_SYMBOL(RTStrToUInt16Full); + + +/** + * Converts a string representation of a number to a 16-bit unsigned number. + * The base is guessed. + * + * @returns 16-bit unsigned number on success. + * @returns 0 on failure. + * @param pszValue Pointer to the string value. + */ +RTDECL(uint16_t) RTStrToUInt16(const char *pszValue) +{ + uint16_t u16; + int rc = RTStrToUInt16Ex(pszValue, NULL, 0, &u16); + if (RT_SUCCESS(rc)) + return u16; + return 0; +} +RT_EXPORT_SYMBOL(RTStrToUInt16); + + +/** + * Converts a string representation of a number to a 8-bit unsigned number. + * + * @returns iprt status code. + * Warnings are used to indicate conversion problems. + * @retval VWRN_NUMBER_TOO_BIG + * @retval VWRN_NEGATIVE_UNSIGNED + * @retval VWRN_TRAILING_CHARS + * @retval VWRN_TRAILING_SPACES + * @retval VINF_SUCCESS + * @retval VERR_NO_DIGITS + * + * @param pszValue Pointer to the string value. + * @param ppszNext Where to store the pointer to the first char following the number. (Optional) + * @param uBase The base of the representation used. + * If the function will look for known prefixes before defaulting to 10. + * @param pu8 Where to store the converted number. (optional) + */ +RTDECL(int) RTStrToUInt8Ex(const char *pszValue, char **ppszNext, unsigned uBase, uint8_t *pu8) +{ + uint64_t u64; + int rc = RTStrToUInt64Ex(pszValue, ppszNext, uBase, &u64); + if (RT_SUCCESS(rc)) + { + if (u64 & ~0xffULL) + rc = VWRN_NUMBER_TOO_BIG; + } + if (pu8) + *pu8 = (uint8_t)u64; + return rc; +} +RT_EXPORT_SYMBOL(RTStrToUInt8Ex); + + +/** + * Converts a string representation of a number to a 8-bit unsigned number, + * making sure the full string is converted. + * + * @returns iprt status code. + * Warnings are used to indicate conversion problems. + * @retval VWRN_NUMBER_TOO_BIG + * @retval VWRN_NEGATIVE_UNSIGNED + * @retval VINF_SUCCESS + * @retval VERR_NO_DIGITS + * @retval VERR_TRAILING_SPACES + * @retval VERR_TRAILING_CHARS + * + * @param pszValue Pointer to the string value. + * @param uBase The base of the representation used. + * If the function will look for known prefixes before defaulting to 10. + * @param pu8 Where to store the converted number. (optional) + */ +RTDECL(int) RTStrToUInt8Full(const char *pszValue, unsigned uBase, uint8_t *pu8) +{ + uint64_t u64; + int rc = RTStrToUInt64Full(pszValue, uBase, &u64); + if (RT_SUCCESS(rc)) + { + if (u64 & ~0xffULL) + rc = VWRN_NUMBER_TOO_BIG; + } + if (pu8) + *pu8 = (uint8_t)u64; + return rc; +} +RT_EXPORT_SYMBOL(RTStrToUInt8Full); + + +/** + * Converts a string representation of a number to a 8-bit unsigned number. + * The base is guessed. + * + * @returns 8-bit unsigned number on success. + * @returns 0 on failure. + * @param pszValue Pointer to the string value. + */ +RTDECL(uint8_t) RTStrToUInt8(const char *pszValue) +{ + uint8_t u8; + int rc = RTStrToUInt8Ex(pszValue, NULL, 0, &u8); + if (RT_SUCCESS(rc)) + return u8; + return 0; +} +RT_EXPORT_SYMBOL(RTStrToUInt8); + + + + + + + +/** + * Converts a string representation of a number to a 64-bit signed number. + * + * @returns iprt status code. + * Warnings are used to indicate conversion problems. + * @retval VWRN_NUMBER_TOO_BIG + * @retval VWRN_TRAILING_CHARS + * @retval VWRN_TRAILING_SPACES + * @retval VINF_SUCCESS + * @retval VERR_NO_DIGITS + * + * @param pszValue Pointer to the string value. + * @param ppszNext Where to store the pointer to the first char following the number. (Optional) + * @param uBase The base of the representation used. + * If the function will look for known prefixes before defaulting to 10. + * @param pi64 Where to store the converted number. (optional) + */ +RTDECL(int) RTStrToInt64Ex(const char *pszValue, char **ppszNext, unsigned uBase, int64_t *pi64) +{ + const char *psz = pszValue; + int iShift; + int rc; + int64_t i64; + unsigned char uch; + + /* + * Positive/Negative stuff. + */ + bool fPositive = true; + for (;; psz++) + { + if (*psz == '+') + fPositive = true; + else if (*psz == '-') + fPositive = !fPositive; + else + break; + } + + /* + * Check for hex prefix. + */ + if (!uBase) + { + if ( *psz == '0' + && (psz[1] == 'x' || psz[1] == 'X') + && g_auchDigits[(unsigned char)psz[2]] < 16) + { + uBase = 16; + psz += 2; + } + else if ( *psz == '0' + && g_auchDigits[(unsigned char)psz[1]] < 8) + { + uBase = 8; + psz++; + } + else + uBase = 10; + } + else if ( uBase == 16 + && *psz == '0' + && (psz[1] == 'x' || psz[1] == 'X') + && g_auchDigits[(unsigned char)psz[2]] < 16) + psz += 2; + + /* + * Interpret the value. + * Note: We only support ascii digits at this time... :-) + */ + iShift = g_auchShift[uBase]; /** @todo test this, it's probably not 100% right yet. */ + pszValue = psz; /* (Prefix and sign doesn't count in the digit counting.) */ + rc = VINF_SUCCESS; + i64 = 0; + while ((uch = (unsigned char)*psz) != 0) + { + unsigned char chDigit = g_auchDigits[uch]; + int64_t i64Prev; + + if (chDigit >= uBase) + break; + + i64Prev = i64; + i64 *= uBase; + i64 += chDigit; + if (i64Prev > i64 || (i64Prev >> iShift)) + rc = VWRN_NUMBER_TOO_BIG; + psz++; + } + + if (!fPositive) + i64 = -i64; + + if (pi64) + *pi64 = i64; + + if (psz == pszValue) + rc = VERR_NO_DIGITS; + + if (ppszNext) + *ppszNext = (char *)psz; + + /* + * Warn about trailing chars/spaces. + */ + if ( rc == VINF_SUCCESS + && *psz) + { + while (*psz == ' ' || *psz == '\t') + psz++; + rc = *psz ? VWRN_TRAILING_CHARS : VWRN_TRAILING_SPACES; + } + + return rc; +} +RT_EXPORT_SYMBOL(RTStrToInt64Ex); + + +/** + * Converts a string representation of a number to a 64-bit signed number, + * making sure the full string is converted. + * + * @returns iprt status code. + * Warnings are used to indicate conversion problems. + * @retval VWRN_NUMBER_TOO_BIG + * @retval VINF_SUCCESS + * @retval VERR_TRAILING_CHARS + * @retval VERR_TRAILING_SPACES + * @retval VERR_NO_DIGITS + * + * @param pszValue Pointer to the string value. + * @param uBase The base of the representation used. + * If the function will look for known prefixes before defaulting to 10. + * @param pi64 Where to store the converted number. (optional) + */ +RTDECL(int) RTStrToInt64Full(const char *pszValue, unsigned uBase, int64_t *pi64) +{ + char *psz; + int rc = RTStrToInt64Ex(pszValue, &psz, uBase, pi64); + if (RT_SUCCESS(rc) && *psz) + { + if (rc == VWRN_TRAILING_CHARS || rc == VWRN_TRAILING_SPACES) + rc = -rc; + else + { + while (*psz == ' ' || *psz == '\t') + psz++; + rc = *psz ? VERR_TRAILING_CHARS : VERR_TRAILING_SPACES; + } + } + return rc; +} +RT_EXPORT_SYMBOL(RTStrToInt64Full); + + +/** + * Converts a string representation of a number to a 64-bit signed number. + * The base is guessed. + * + * @returns 64-bit signed number on success. + * @returns 0 on failure. + * @param pszValue Pointer to the string value. + */ +RTDECL(int64_t) RTStrToInt64(const char *pszValue) +{ + int64_t i64; + int rc = RTStrToInt64Ex(pszValue, NULL, 0, &i64); + if (RT_SUCCESS(rc)) + return i64; + return 0; +} +RT_EXPORT_SYMBOL(RTStrToInt64); + + +/** + * Converts a string representation of a number to a 32-bit signed number. + * + * @returns iprt status code. + * Warnings are used to indicate conversion problems. + * @retval VWRN_NUMBER_TOO_BIG + * @retval VWRN_TRAILING_CHARS + * @retval VWRN_TRAILING_SPACES + * @retval VINF_SUCCESS + * @retval VERR_NO_DIGITS + * + * @param pszValue Pointer to the string value. + * @param ppszNext Where to store the pointer to the first char following the number. (Optional) + * @param uBase The base of the representation used. + * If the function will look for known prefixes before defaulting to 10. + * @param pi32 Where to store the converted number. (optional) + */ +RTDECL(int) RTStrToInt32Ex(const char *pszValue, char **ppszNext, unsigned uBase, int32_t *pi32) +{ + int64_t i64; + int rc = RTStrToInt64Ex(pszValue, ppszNext, uBase, &i64); + if (RT_SUCCESS(rc)) + { + int32_t i32 = (int32_t)i64; + if (i64 != (int64_t)i32) + rc = VWRN_NUMBER_TOO_BIG; + } + if (pi32) + *pi32 = (int32_t)i64; + return rc; +} +RT_EXPORT_SYMBOL(RTStrToInt32Ex); + + +/** + * Converts a string representation of a number to a 32-bit signed number, + * making sure the full string is converted. + * + * @returns iprt status code. + * Warnings are used to indicate conversion problems. + * @retval VWRN_NUMBER_TOO_BIG + * @retval VINF_SUCCESS + * @retval VERR_TRAILING_CHARS + * @retval VERR_TRAILING_SPACES + * @retval VERR_NO_DIGITS + * + * @param pszValue Pointer to the string value. + * @param uBase The base of the representation used. + * If the function will look for known prefixes before defaulting to 10. + * @param pi32 Where to store the converted number. (optional) + */ +RTDECL(int) RTStrToInt32Full(const char *pszValue, unsigned uBase, int32_t *pi32) +{ + int64_t i64; + int rc = RTStrToInt64Full(pszValue, uBase, &i64); + if (RT_SUCCESS(rc)) + { + int32_t i32 = (int32_t)i64; + if (i64 != (int64_t)i32) + rc = VWRN_NUMBER_TOO_BIG; + } + if (pi32) + *pi32 = (int32_t)i64; + return rc; +} +RT_EXPORT_SYMBOL(RTStrToInt32Full); + + +/** + * Converts a string representation of a number to a 32-bit signed number. + * The base is guessed. + * + * @returns 32-bit signed number on success. + * @returns 0 on failure. + * @param pszValue Pointer to the string value. + */ +RTDECL(int32_t) RTStrToInt32(const char *pszValue) +{ + int32_t i32; + int rc = RTStrToInt32Ex(pszValue, NULL, 0, &i32); + if (RT_SUCCESS(rc)) + return i32; + return 0; +} +RT_EXPORT_SYMBOL(RTStrToInt32); + + +/** + * Converts a string representation of a number to a 16-bit signed number. + * + * @returns iprt status code. + * Warnings are used to indicate conversion problems. + * @retval VWRN_NUMBER_TOO_BIG + * @retval VWRN_TRAILING_CHARS + * @retval VWRN_TRAILING_SPACES + * @retval VINF_SUCCESS + * @retval VERR_NO_DIGITS + * + * @param pszValue Pointer to the string value. + * @param ppszNext Where to store the pointer to the first char following the number. (Optional) + * @param uBase The base of the representation used. + * If the function will look for known prefixes before defaulting to 10. + * @param pi16 Where to store the converted number. (optional) + */ +RTDECL(int) RTStrToInt16Ex(const char *pszValue, char **ppszNext, unsigned uBase, int16_t *pi16) +{ + int64_t i64; + int rc = RTStrToInt64Ex(pszValue, ppszNext, uBase, &i64); + if (RT_SUCCESS(rc)) + { + int16_t i16 = (int16_t)i64; + if (i64 != (int64_t)i16) + rc = VWRN_NUMBER_TOO_BIG; + } + if (pi16) + *pi16 = (int16_t)i64; + return rc; +} +RT_EXPORT_SYMBOL(RTStrToInt16Ex); + + +/** + * Converts a string representation of a number to a 16-bit signed number, + * making sure the full string is converted. + * + * @returns iprt status code. + * Warnings are used to indicate conversion problems. + * @retval VWRN_NUMBER_TOO_BIG + * @retval VINF_SUCCESS + * @retval VERR_TRAILING_CHARS + * @retval VERR_TRAILING_SPACES + * @retval VERR_NO_DIGITS + * + * @param pszValue Pointer to the string value. + * @param uBase The base of the representation used. + * If the function will look for known prefixes before defaulting to 10. + * @param pi16 Where to store the converted number. (optional) + */ +RTDECL(int) RTStrToInt16Full(const char *pszValue, unsigned uBase, int16_t *pi16) +{ + int64_t i64; + int rc = RTStrToInt64Full(pszValue, uBase, &i64); + if (RT_SUCCESS(rc)) + { + int16_t i16 = (int16_t)i64; + if (i64 != (int64_t)i16) + rc = VWRN_NUMBER_TOO_BIG; + } + if (pi16) + *pi16 = (int16_t)i64; + return rc; +} +RT_EXPORT_SYMBOL(RTStrToInt16Full); + + +/** + * Converts a string representation of a number to a 16-bit signed number. + * The base is guessed. + * + * @returns 16-bit signed number on success. + * @returns 0 on failure. + * @param pszValue Pointer to the string value. + */ +RTDECL(int16_t) RTStrToInt16(const char *pszValue) +{ + int16_t i16; + int rc = RTStrToInt16Ex(pszValue, NULL, 0, &i16); + if (RT_SUCCESS(rc)) + return i16; + return 0; +} +RT_EXPORT_SYMBOL(RTStrToInt16); + + +/** + * Converts a string representation of a number to a 8-bit signed number. + * + * @returns iprt status code. + * Warnings are used to indicate conversion problems. + * @retval VWRN_NUMBER_TOO_BIG + * @retval VWRN_TRAILING_CHARS + * @retval VWRN_TRAILING_SPACES + * @retval VINF_SUCCESS + * @retval VERR_NO_DIGITS + * + * @param pszValue Pointer to the string value. + * @param ppszNext Where to store the pointer to the first char following the number. (Optional) + * @param uBase The base of the representation used. + * If the function will look for known prefixes before defaulting to 10. + * @param pi8 Where to store the converted number. (optional) + */ +RTDECL(int) RTStrToInt8Ex(const char *pszValue, char **ppszNext, unsigned uBase, int8_t *pi8) +{ + int64_t i64; + int rc = RTStrToInt64Ex(pszValue, ppszNext, uBase, &i64); + if (RT_SUCCESS(rc)) + { + int8_t i8 = (int8_t)i64; + if (i64 != (int64_t)i8) + rc = VWRN_NUMBER_TOO_BIG; + } + if (pi8) + *pi8 = (int8_t)i64; + return rc; +} +RT_EXPORT_SYMBOL(RTStrToInt8Ex); + + +/** + * Converts a string representation of a number to a 8-bit signed number, + * making sure the full string is converted. + * + * @returns iprt status code. + * Warnings are used to indicate conversion problems. + * @retval VWRN_NUMBER_TOO_BIG + * @retval VINF_SUCCESS + * @retval VERR_TRAILING_CHARS + * @retval VERR_TRAILING_SPACES + * @retval VERR_NO_DIGITS + * + * @param pszValue Pointer to the string value. + * @param uBase The base of the representation used. + * If the function will look for known prefixes before defaulting to 10. + * @param pi8 Where to store the converted number. (optional) + */ +RTDECL(int) RTStrToInt8Full(const char *pszValue, unsigned uBase, int8_t *pi8) +{ + int64_t i64; + int rc = RTStrToInt64Full(pszValue, uBase, &i64); + if (RT_SUCCESS(rc)) + { + int8_t i8 = (int8_t)i64; + if (i64 != (int64_t)i8) + rc = VWRN_NUMBER_TOO_BIG; + } + if (pi8) + *pi8 = (int8_t)i64; + return rc; +} +RT_EXPORT_SYMBOL(RTStrToInt8Full); + + +/** + * Converts a string representation of a number to a 8-bit signed number. + * The base is guessed. + * + * @returns 8-bit signed number on success. + * @returns 0 on failure. + * @param pszValue Pointer to the string value. + */ +RTDECL(int8_t) RTStrToInt8(const char *pszValue) +{ + int8_t i8; + int rc = RTStrToInt8Ex(pszValue, NULL, 0, &i8); + if (RT_SUCCESS(rc)) + return i8; + return 0; +} +RT_EXPORT_SYMBOL(RTStrToInt8); + + +RTDECL(int) RTStrConvertHexBytes(char const *pszHex, void *pv, size_t cb, uint32_t fFlags) +{ + size_t cbDst; + uint8_t *pbDst; + const char *pszSrc; + + AssertPtrReturn(pszHex, VERR_INVALID_POINTER); + AssertReturn(!fFlags, VERR_INVALID_PARAMETER); + + cbDst = cb; + pbDst = (uint8_t *)pv; + pszSrc = pszHex; + for (;;) + { + /* Pick the next two digit from the string. */ + char ch = *pszSrc++; + unsigned char uchDigit1 = g_auchDigits[(unsigned char)ch]; + unsigned char uchDigit2; + if (uchDigit1 >= 16) + { + if (!ch) + return cbDst == 0 ? VINF_SUCCESS : VERR_BUFFER_UNDERFLOW; + + while (ch == ' ' || ch == '\t') + ch = *pszSrc++; + return ch ? VWRN_TRAILING_CHARS : VWRN_TRAILING_SPACES; + } + + ch = *pszSrc++; + uchDigit2 = g_auchDigits[(unsigned char)ch]; + if (uchDigit2 >= 16) + return VERR_UNEVEN_INPUT; + + /* Add the byte to the output buffer. */ + if (!cbDst) + return VERR_BUFFER_OVERFLOW; + cbDst--; + *pbDst++ = (uchDigit1 << 4) | uchDigit2; + } +} +RT_EXPORT_SYMBOL(RTStrConvertHexBytes); + --- linux-raspi2-4.2.0.orig/ubuntu/vbox/vboxguest/common/table/avl_Base.cpp.h +++ linux-raspi2-4.2.0/ubuntu/vbox/vboxguest/common/table/avl_Base.cpp.h @@ -0,0 +1,460 @@ +/* $Id: avl_Base.cpp.h $ */ +/** @file + * kAVLBase - basic routines for all AVL trees. + */ + +/* + * Copyright (C) 2001-2012 knut st. osmundsen (bird-src-spam@anduin.net) + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + +#ifndef _kAVLBase_h_ +#define _kAVLBase_h_ + + +/** @page pg_rt_kAVL kAVL Template configuration. + * @internal + * + * This is a template made to implement multiple AVL trees. The differences + * among the implementations are related to the key used. + * + * \#define KAVL_FN + * Use this to alter the names of the AVL functions. + * Must be defined. + * + * \#define KAVL_EQUAL_ALLOWED + * Define this to tell us that equal keys are allowed. + * Then Equal keys will be put in a list pointed to by pList in the KAVLNODECORE. + * This is by default not defined. + * + * \#define KAVL_CHECK_FOR_EQUAL_INSERT + * Define this to enable insert check for equal nodes. + * This is by default not defined. + * + * \#define KAVL_MAX_STACK + * Use this to specify the number of stack entries the stack will use when inserting + * and removing nodes from the tree. I think the size should be about + * log2() + 3 + * Must be defined. + * + */ + +/******************************************************************************* +* Defined Constants And Macros * +*******************************************************************************/ +#define AVL_HEIGHTOF(pNode) ((unsigned char)((pNode) != NULL ? pNode->uchHeight : 0)) + +/** @def KAVL_GET_POINTER + * Reads a 'pointer' value. + * + * @returns The native pointer. + * @param pp Pointer to the pointer to read. + */ + +/** @def KAVL_GET_POINTER_NULL + * Reads a 'pointer' value which can be KAVL_NULL. + * + * @returns The native pointer. + * @returns NULL pointer if KAVL_NULL. + * @param pp Pointer to the pointer to read. + */ + +/** @def KAVL_SET_POINTER + * Writes a 'pointer' value. + * For offset-based schemes offset relative to pp is calculated and assigned to *pp. + * + * @returns stored pointer. + * @param pp Pointer to where to store the pointer. + * @param p Native pointer to assign to *pp. + */ + +/** @def KAVL_SET_POINTER_NULL + * Writes a 'pointer' value which can be KAVL_NULL. + * + * For offset-based schemes offset relative to pp is calculated and assigned to *pp, + * if p is not KAVL_NULL of course. + * + * @returns stored pointer. + * @param pp Pointer to where to store the pointer. + * @param pp2 Pointer to where to pointer to assign to pp. This can be KAVL_NULL + */ + +#ifndef KAVL_GET_POINTER +# ifdef KAVL_OFFSET +# define KAVL_GET_POINTER(pp) ( (PKAVLNODECORE)((intptr_t)(pp) + *(pp)) ) +# define KAVL_GET_POINTER_NULL(pp) ( *(pp) != KAVL_NULL ? KAVL_GET_POINTER(pp) : NULL ) +# define KAVL_SET_POINTER(pp, p) ( (*(pp)) = ((intptr_t)(p) - (intptr_t)(pp)) ) +# define KAVL_SET_POINTER_NULL(pp, pp2) ( (*(pp)) = *(pp2) != KAVL_NULL ? (intptr_t)KAVL_GET_POINTER(pp2) - (intptr_t)(pp) : KAVL_NULL ) +# else +# define KAVL_GET_POINTER(pp) ( *(pp) ) +# define KAVL_GET_POINTER_NULL(pp) ( *(pp) ) +# define KAVL_SET_POINTER(pp, p) ( (*(pp)) = (p) ) +# define KAVL_SET_POINTER_NULL(pp, pp2) ( (*(pp)) = *(pp2) ) +# endif +#endif + + +/** @def KAVL_NULL + * The NULL 'pointer' equivalent. + */ +#ifndef KAVL_NULL +# ifdef KAVL_OFFSET +# define KAVL_NULL 0 +# else +# define KAVL_NULL NULL +# endif +#endif + +#ifndef KAVL_RANGE +# define KAVL_R_IS_INTERSECTING(key1B, key2B, key1E, key2E) KAVL_E(key1B, key2B) +# define KAVL_R_IS_IDENTICAL(key1B, key2B, key1E, key2E) KAVL_E(key1B, key2B) +#endif + +/** @def KAVL_DECL + * Function declation macro in the RTDECL tradition. + * @param a_Type The function return type. */ +#ifndef KAVL_DECL +# define KAVL_DECL(a_Type) RTDECL(a_Type) +#endif + + +/******************************************************************************* +* Structures and Typedefs * +*******************************************************************************/ +/* + * A stack used to avoid recursive calls... + */ +typedef struct _kAvlStack +{ + unsigned cEntries; + PPKAVLNODECORE aEntries[KAVL_MAX_STACK]; +} KAVLSTACK, *PKAVLSTACK; + +typedef struct _kAvlStack2 +{ + unsigned cEntries; + PKAVLNODECORE aEntries[KAVL_MAX_STACK]; + char achFlags[KAVL_MAX_STACK]; +} KAVLSTACK2, *PLAVLSTACK2; + + + +/** + * Rewinds a stack of pointers to pointers to nodes, rebalancing the tree. + * @param pStack Pointer to stack to rewind. + * @sketch LOOP thru all stack entries + * BEGIN + * Get pointer to pointer to node (and pointer to node) from the stack. + * IF 2 higher left subtree than in right subtree THEN + * BEGIN + * IF higher (or equal) left-sub-subtree than right-sub-subtree THEN + * * n+2|n+3 + * / \ / \ + * n+2 n ==> n+1 n+1|n+2 + * / \ / \ + * n+1 n|n+1 n|n+1 n + * + * Or with keys: + * + * 4 2 + * / \ / \ + * 2 5 ==> 1 4 + * / \ / \ + * 1 3 3 5 + * + * ELSE + * * n+2 + * / \ / \ + * n+2 n n+1 n+1 + * / \ ==> / \ / \ + * n n+1 n L R n + * / \ + * L R + * + * Or with keys: + * 6 4 + * / \ / \ + * 2 7 ==> 2 6 + * / \ / \ / \ + * 1 4 1 3 5 7 + * / \ + * 3 5 + * END + * ELSE IF 2 higher in right subtree than in left subtree THEN + * BEGIN + * Same as above but left <==> right. (invert the picture) + * ELSE + * IF correct height THEN break + * ELSE correct height. + * END + */ +DECLINLINE(void) KAVL_FN(Rebalance)(PKAVLSTACK pStack) +{ + while (pStack->cEntries > 0) + { + /** @todo Perhaps some of these KAVL_SET_POINTER_NULL() cases could be optimized away.. */ + PPKAVLNODECORE ppNode = pStack->aEntries[--pStack->cEntries]; + PKAVLNODECORE pNode = KAVL_GET_POINTER(ppNode); + PKAVLNODECORE pLeftNode = KAVL_GET_POINTER_NULL(&pNode->pLeft); + unsigned char uchLeftHeight = AVL_HEIGHTOF(pLeftNode); + PKAVLNODECORE pRightNode = KAVL_GET_POINTER_NULL(&pNode->pRight); + unsigned char uchRightHeight = AVL_HEIGHTOF(pRightNode); + + if (uchRightHeight + 1 < uchLeftHeight) + { + PKAVLNODECORE pLeftLeftNode = KAVL_GET_POINTER_NULL(&pLeftNode->pLeft); + PKAVLNODECORE pLeftRightNode = KAVL_GET_POINTER_NULL(&pLeftNode->pRight); + unsigned char uchLeftRightHeight = AVL_HEIGHTOF(pLeftRightNode); + + if (AVL_HEIGHTOF(pLeftLeftNode) >= uchLeftRightHeight) + { + KAVL_SET_POINTER_NULL(&pNode->pLeft, &pLeftNode->pRight); + KAVL_SET_POINTER(&pLeftNode->pRight, pNode); + pLeftNode->uchHeight = (unsigned char)(1 + (pNode->uchHeight = (unsigned char)(1 + uchLeftRightHeight))); + KAVL_SET_POINTER(ppNode, pLeftNode); + } + else + { + KAVL_SET_POINTER_NULL(&pLeftNode->pRight, &pLeftRightNode->pLeft); + KAVL_SET_POINTER_NULL(&pNode->pLeft, &pLeftRightNode->pRight); + KAVL_SET_POINTER(&pLeftRightNode->pLeft, pLeftNode); + KAVL_SET_POINTER(&pLeftRightNode->pRight, pNode); + pLeftNode->uchHeight = pNode->uchHeight = uchLeftRightHeight; + pLeftRightNode->uchHeight = uchLeftHeight; + KAVL_SET_POINTER(ppNode, pLeftRightNode); + } + } + else if (uchLeftHeight + 1 < uchRightHeight) + { + PKAVLNODECORE pRightLeftNode = KAVL_GET_POINTER_NULL(&pRightNode->pLeft); + unsigned char uchRightLeftHeight = AVL_HEIGHTOF(pRightLeftNode); + PKAVLNODECORE pRightRightNode = KAVL_GET_POINTER_NULL(&pRightNode->pRight); + + if (AVL_HEIGHTOF(pRightRightNode) >= uchRightLeftHeight) + { + KAVL_SET_POINTER_NULL(&pNode->pRight, &pRightNode->pLeft); + KAVL_SET_POINTER(&pRightNode->pLeft, pNode); + pRightNode->uchHeight = (unsigned char)(1 + (pNode->uchHeight = (unsigned char)(1 + uchRightLeftHeight))); + KAVL_SET_POINTER(ppNode, pRightNode); + } + else + { + KAVL_SET_POINTER_NULL(&pRightNode->pLeft, &pRightLeftNode->pRight); + KAVL_SET_POINTER_NULL(&pNode->pRight, &pRightLeftNode->pLeft); + KAVL_SET_POINTER(&pRightLeftNode->pRight, pRightNode); + KAVL_SET_POINTER(&pRightLeftNode->pLeft, pNode); + pRightNode->uchHeight = pNode->uchHeight = uchRightLeftHeight; + pRightLeftNode->uchHeight = uchRightHeight; + KAVL_SET_POINTER(ppNode, pRightLeftNode); + } + } + else + { + register unsigned char uchHeight = (unsigned char)(KMAX(uchLeftHeight, uchRightHeight) + 1); + if (uchHeight == pNode->uchHeight) + break; + pNode->uchHeight = uchHeight; + } + } + +} + + + + +/** + * Inserts a node into the AVL-tree. + * @returns TRUE if inserted. + * FALSE if node exists in tree. + * @param ppTree Pointer to the AVL-tree root node pointer. + * @param pNode Pointer to the node which is to be added. + * @sketch Find the location of the node (using binary tree algorithm.): + * LOOP until KAVL_NULL leaf pointer + * BEGIN + * Add node pointer pointer to the AVL-stack. + * IF new-node-key < node key THEN + * left + * ELSE + * right + * END + * Fill in leaf node and insert it. + * Rebalance the tree. + */ +KAVL_DECL(bool) KAVL_FN(Insert)(PPKAVLNODECORE ppTree, PKAVLNODECORE pNode) +{ + KAVLSTACK AVLStack; + PPKAVLNODECORE ppCurNode = ppTree; + register PKAVLNODECORE pCurNode; + register KAVLKEY Key = pNode->Key; NOREF(Key); +#ifdef KAVL_RANGE + register KAVLKEY KeyLast = pNode->KeyLast; NOREF(KeyLast); +#endif + + AVLStack.cEntries = 0; + +#ifdef KAVL_RANGE + if (Key > KeyLast) + return false; +#endif + + for (;;) + { + if (*ppCurNode != KAVL_NULL) + pCurNode = KAVL_GET_POINTER(ppCurNode); + else + break; + + kASSERT(AVLStack.cEntries < KAVL_MAX_STACK); + AVLStack.aEntries[AVLStack.cEntries++] = ppCurNode; +#ifdef KAVL_EQUAL_ALLOWED + if (KAVL_R_IS_IDENTICAL(pCurNode->Key, Key, pCurNode->KeyLast, KeyLast)) + { + /* + * If equal then we'll use a list of equal nodes. + */ + pNode->pLeft = pNode->pRight = KAVL_NULL; + pNode->uchHeight = 0; + KAVL_SET_POINTER_NULL(&pNode->pList, &pCurNode->pList); + KAVL_SET_POINTER(&pCurNode->pList, pNode); + return true; + } +#endif +#ifdef KAVL_CHECK_FOR_EQUAL_INSERT + if (KAVL_R_IS_INTERSECTING(pCurNode->Key, Key, pCurNode->KeyLast, KeyLast)) + return false; +#endif + if (KAVL_G(pCurNode->Key, Key)) + ppCurNode = &pCurNode->pLeft; + else + ppCurNode = &pCurNode->pRight; + } + + pNode->pLeft = pNode->pRight = KAVL_NULL; +#ifdef KAVL_EQUAL_ALLOWED + pNode->pList = KAVL_NULL; +#endif + pNode->uchHeight = 1; + KAVL_SET_POINTER(ppCurNode, pNode); + + KAVL_FN(Rebalance)(SSToDS(&AVLStack)); + return true; +} + + +/** + * Removes a node from the AVL-tree. + * @returns Pointer to the node. + * @param ppTree Pointer to the AVL-tree root node pointer. + * @param Key Key value of the node which is to be removed. + * @sketch Find the node which is to be removed: + * LOOP until not found + * BEGIN + * Add node pointer pointer to the AVL-stack. + * IF the keys matches THEN break! + * IF remove key < node key THEN + * left + * ELSE + * right + * END + * IF found THEN + * BEGIN + * IF left node not empty THEN + * BEGIN + * Find the right most node in the left tree while adding the pointer to the pointer to it's parent to the stack: + * Start at left node. + * LOOP until right node is empty + * BEGIN + * Add to stack. + * go right. + * END + * Link out the found node. + * Replace the node which is to be removed with the found node. + * Correct the stack entry for the pointer to the left tree. + * END + * ELSE + * BEGIN + * Move up right node. + * Remove last stack entry. + * END + * Balance tree using stack. + * END + * return pointer to the removed node (if found). + */ +KAVL_DECL(PKAVLNODECORE) KAVL_FN(Remove)(PPKAVLNODECORE ppTree, KAVLKEY Key) +{ + KAVLSTACK AVLStack; + PPKAVLNODECORE ppDeleteNode = ppTree; + register PKAVLNODECORE pDeleteNode; + + AVLStack.cEntries = 0; + + for (;;) + { + if (*ppDeleteNode != KAVL_NULL) + pDeleteNode = KAVL_GET_POINTER(ppDeleteNode); + else + return NULL; + + kASSERT(AVLStack.cEntries < KAVL_MAX_STACK); + AVLStack.aEntries[AVLStack.cEntries++] = ppDeleteNode; + if (KAVL_E(pDeleteNode->Key, Key)) + break; + + if (KAVL_G(pDeleteNode->Key, Key)) + ppDeleteNode = &pDeleteNode->pLeft; + else + ppDeleteNode = &pDeleteNode->pRight; + } + + if (pDeleteNode->pLeft != KAVL_NULL) + { + /* find the rightmost node in the left tree. */ + const unsigned iStackEntry = AVLStack.cEntries; + PPKAVLNODECORE ppLeftLeast = &pDeleteNode->pLeft; + register PKAVLNODECORE pLeftLeast = KAVL_GET_POINTER(ppLeftLeast); + + while (pLeftLeast->pRight != KAVL_NULL) + { + kASSERT(AVLStack.cEntries < KAVL_MAX_STACK); + AVLStack.aEntries[AVLStack.cEntries++] = ppLeftLeast; + ppLeftLeast = &pLeftLeast->pRight; + pLeftLeast = KAVL_GET_POINTER(ppLeftLeast); + } + + /* link out pLeftLeast */ + KAVL_SET_POINTER_NULL(ppLeftLeast, &pLeftLeast->pLeft); + + /* link it in place of the delete node. */ + KAVL_SET_POINTER_NULL(&pLeftLeast->pLeft, &pDeleteNode->pLeft); + KAVL_SET_POINTER_NULL(&pLeftLeast->pRight, &pDeleteNode->pRight); + pLeftLeast->uchHeight = pDeleteNode->uchHeight; + KAVL_SET_POINTER(ppDeleteNode, pLeftLeast); + AVLStack.aEntries[iStackEntry] = &pLeftLeast->pLeft; + } + else + { + KAVL_SET_POINTER_NULL(ppDeleteNode, &pDeleteNode->pRight); + AVLStack.cEntries--; + } + + KAVL_FN(Rebalance)(SSToDS(&AVLStack)); + return pDeleteNode; +} + +#endif --- linux-raspi2-4.2.0.orig/ubuntu/vbox/vboxguest/common/table/avl_Destroy.cpp.h +++ linux-raspi2-4.2.0/ubuntu/vbox/vboxguest/common/table/avl_Destroy.cpp.h @@ -0,0 +1,110 @@ +/* $Id: avl_Destroy.cpp.h $ */ +/** @file + * kAVLDestroy - Walk the tree calling a callback to destroy all the nodes. + */ + +/* + * Copyright (C) 1999-2011 knut st. osmundsen (bird-src-spam@anduin.net) + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + +#ifndef _kAVLDestroy_h_ +#define _kAVLDestroy_h_ + + +/** + * Destroys the specified tree, starting with the root node and working our way down. + * + * @returns 0 on success. + * @returns Return value from callback on failure. On failure, the tree will be in + * an unbalanced condition and only further calls to the Destroy should be + * made on it. Note that the node we fail on will be considered dead and + * no action is taken to link it back into the tree. + * @param ppTree Pointer to the AVL-tree root node pointer. + * @param pfnCallBack Pointer to callback function. + * @param pvUser User parameter passed on to the callback function. + */ +KAVL_DECL(int) KAVL_FN(Destroy)(PPKAVLNODECORE ppTree, PKAVLCALLBACK pfnCallBack, void *pvUser) +{ + unsigned cEntries; + PKAVLNODECORE apEntries[KAVL_MAX_STACK]; + int rc; + + if (*ppTree == KAVL_NULL) + return VINF_SUCCESS; + + cEntries = 1; + apEntries[0] = KAVL_GET_POINTER(ppTree); + while (cEntries > 0) + { + /* + * Process the subtrees first. + */ + PKAVLNODECORE pNode = apEntries[cEntries - 1]; + if (pNode->pLeft != KAVL_NULL) + apEntries[cEntries++] = KAVL_GET_POINTER(&pNode->pLeft); + else if (pNode->pRight != KAVL_NULL) + apEntries[cEntries++] = KAVL_GET_POINTER(&pNode->pRight); + else + { +#ifdef KAVL_EQUAL_ALLOWED + /* + * Process nodes with the same key. + */ + while (pNode->pList != KAVL_NULL) + { + PKAVLNODECORE pEqual = KAVL_GET_POINTER(&pNode->pList); + KAVL_SET_POINTER(&pNode->pList, KAVL_GET_POINTER_NULL(&pEqual->pList)); + pEqual->pList = KAVL_NULL; + + rc = pfnCallBack(pEqual, pvUser); + if (rc != VINF_SUCCESS) + return rc; + } +#endif + + /* + * Unlink the node. + */ + if (--cEntries > 0) + { + PKAVLNODECORE pParent = apEntries[cEntries - 1]; + if (KAVL_GET_POINTER(&pParent->pLeft) == pNode) + pParent->pLeft = KAVL_NULL; + else + pParent->pRight = KAVL_NULL; + } + else + *ppTree = KAVL_NULL; + + kASSERT(pNode->pLeft == KAVL_NULL); + kASSERT(pNode->pRight == KAVL_NULL); + rc = pfnCallBack(pNode, pvUser); + if (rc != VINF_SUCCESS) + return rc; + } + } /* while */ + + kASSERT(*ppTree == KAVL_NULL); + + return VINF_SUCCESS; +} + +#endif + --- linux-raspi2-4.2.0.orig/ubuntu/vbox/vboxguest/common/table/avl_DoWithAll.cpp.h +++ linux-raspi2-4.2.0/ubuntu/vbox/vboxguest/common/table/avl_DoWithAll.cpp.h @@ -0,0 +1,142 @@ +/* $Id: avl_DoWithAll.cpp.h $ */ +/** @file + * kAVLDoWithAll - Do with all nodes routine for AVL trees. + */ + +/* + * Copyright (C) 1999-2011 knut st. osmundsen (bird-src-spam@anduin.net) + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + +#ifndef _kAVLDoWithAll_h_ +#define _kAVLDoWithAll_h_ + + +/** + * Iterates thru all nodes in the given tree. + * @returns 0 on success. Return from callback on failure. + * @param ppTree Pointer to the AVL-tree root node pointer. + * @param fFromLeft TRUE: Left to right. + * FALSE: Right to left. + * @param pfnCallBack Pointer to callback function. + * @param pvParam Userparameter passed on to the callback function. + */ +KAVL_DECL(int) KAVL_FN(DoWithAll)(PPKAVLNODECORE ppTree, int fFromLeft, PKAVLCALLBACK pfnCallBack, void * pvParam) +{ + KAVLSTACK2 AVLStack; + PKAVLNODECORE pNode; +#ifdef KAVL_EQUAL_ALLOWED + PKAVLNODECORE pEqual; +#endif + int rc; + + if (*ppTree == KAVL_NULL) + return VINF_SUCCESS; + + AVLStack.cEntries = 1; + AVLStack.achFlags[0] = 0; + AVLStack.aEntries[0] = KAVL_GET_POINTER(ppTree); + + if (fFromLeft) + { /* from left */ + while (AVLStack.cEntries > 0) + { + pNode = AVLStack.aEntries[AVLStack.cEntries - 1]; + + /* left */ + if (!AVLStack.achFlags[AVLStack.cEntries - 1]++) + { + if (pNode->pLeft != KAVL_NULL) + { + AVLStack.achFlags[AVLStack.cEntries] = 0; /* 0 first, 1 last */ + AVLStack.aEntries[AVLStack.cEntries++] = KAVL_GET_POINTER(&pNode->pLeft); + continue; + } + } + + /* center */ + rc = pfnCallBack(pNode, pvParam); + if (rc != VINF_SUCCESS) + return rc; +#ifdef KAVL_EQUAL_ALLOWED + if (pNode->pList != KAVL_NULL) + for (pEqual = KAVL_GET_POINTER(&pNode->pList); pEqual; pEqual = KAVL_GET_POINTER_NULL(&pEqual->pList)) + { + rc = pfnCallBack(pEqual, pvParam); + if (rc != VINF_SUCCESS) + return rc; + } +#endif + + /* right */ + AVLStack.cEntries--; + if (pNode->pRight != KAVL_NULL) + { + AVLStack.achFlags[AVLStack.cEntries] = 0; + AVLStack.aEntries[AVLStack.cEntries++] = KAVL_GET_POINTER(&pNode->pRight); + } + } /* while */ + } + else + { /* from right */ + while (AVLStack.cEntries > 0) + { + pNode = AVLStack.aEntries[AVLStack.cEntries - 1]; + + /* right */ + if (!AVLStack.achFlags[AVLStack.cEntries - 1]++) + { + if (pNode->pRight != KAVL_NULL) + { + AVLStack.achFlags[AVLStack.cEntries] = 0; /* 0 first, 1 last */ + AVLStack.aEntries[AVLStack.cEntries++] = KAVL_GET_POINTER(&pNode->pRight); + continue; + } + } + + /* center */ + rc = pfnCallBack(pNode, pvParam); + if (rc != VINF_SUCCESS) + return rc; +#ifdef KAVL_EQUAL_ALLOWED + if (pNode->pList != KAVL_NULL) + for (pEqual = KAVL_GET_POINTER(&pNode->pList); pEqual; pEqual = KAVL_GET_POINTER_NULL(&pEqual->pList)) + { + rc = pfnCallBack(pEqual, pvParam); + if (rc != VINF_SUCCESS) + return rc; + } +#endif + + /* left */ + AVLStack.cEntries--; + if (pNode->pLeft != KAVL_NULL) + { + AVLStack.achFlags[AVLStack.cEntries] = 0; + AVLStack.aEntries[AVLStack.cEntries++] = KAVL_GET_POINTER(&pNode->pLeft); + } + } /* while */ + } + + return VINF_SUCCESS; +} + + +#endif + --- linux-raspi2-4.2.0.orig/ubuntu/vbox/vboxguest/common/table/avl_Get.cpp.h +++ linux-raspi2-4.2.0/ubuntu/vbox/vboxguest/common/table/avl_Get.cpp.h @@ -0,0 +1,67 @@ +/* $Id: avl_Get.cpp.h $ */ +/** @file + * kAVLGet - get routine for AVL trees. + */ + +/* + * Copyright (C) 1999-2012 knut st. osmundsen (bird-src-spam@anduin.net) + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + +#ifndef _kAVLGet_h_ +#define _kAVLGet_h_ + + +/** + * Gets a node from the tree (does not remove it!) + * @returns Pointer to the node holding the given key. + * @param ppTree Pointer to the AVL-tree root node pointer. + * @param Key Key value of the node which is to be found. + * @author knut st. osmundsen + */ +KAVL_DECL(PKAVLNODECORE) KAVL_FN(Get)(PPKAVLNODECORE ppTree, KAVLKEY Key) +{ + register PKAVLNODECORE pNode = KAVL_GET_POINTER_NULL(ppTree); + + if (pNode) + { + while (KAVL_NE(pNode->Key, Key)) + { + if (KAVL_G(pNode->Key, Key)) + { + if (pNode->pLeft != KAVL_NULL) + pNode = KAVL_GET_POINTER(&pNode->pLeft); + else + return NULL; + } + else + { + if (pNode->pRight != KAVL_NULL) + pNode = KAVL_GET_POINTER(&pNode->pRight); + else + return NULL; + } + } + } + + return pNode; +} + + +#endif --- linux-raspi2-4.2.0.orig/ubuntu/vbox/vboxguest/common/table/avl_GetBestFit.cpp.h +++ linux-raspi2-4.2.0/ubuntu/vbox/vboxguest/common/table/avl_GetBestFit.cpp.h @@ -0,0 +1,103 @@ +/* $Id: avl_GetBestFit.cpp.h $ */ +/** @file + * kAVLGetBestFit - Get Best Fit routine for AVL trees. + * Intended specially on heaps. The tree should allow duplicate keys. + * + */ + +/* + * Copyright (C) 1999-2012 knut st. osmundsen (bird-src-spam@anduin.net) + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + +#ifndef _kAVLGetBestFit_h_ +#define _kAVLGetBestFit_h_ + + +/** + * Finds the best fitting node in the tree for the given Key value. + * @returns Pointer to the best fitting node found. + * @param ppTree Pointer to Pointer to the tree root node. + * @param Key The Key of which is to be found a best fitting match for.. + * @param fAbove TRUE: Returned node is have the closest key to Key from above. + * FALSE: Returned node is have the closest key to Key from below. + * @sketch The best fitting node is always located in the searchpath above you. + * >= (above): The node where you last turned left. + * <= (below): the node where you last turned right. + */ +KAVL_DECL(PKAVLNODECORE) KAVL_FN(GetBestFit)(PPKAVLNODECORE ppTree, KAVLKEY Key, bool fAbove) +{ + register PKAVLNODECORE pNode = KAVL_GET_POINTER_NULL(ppTree); + if (pNode) + { + PKAVLNODECORE pNodeLast = NULL; + if (fAbove) + { /* pNode->Key >= Key */ + while (KAVL_NE(pNode->Key, Key)) + { + if (KAVL_G(pNode->Key, Key)) + { + if (pNode->pLeft != KAVL_NULL) + { + pNodeLast = pNode; + pNode = KAVL_GET_POINTER(&pNode->pLeft); + } + else + return pNode; + } + else + { + if (pNode->pRight != KAVL_NULL) + pNode = KAVL_GET_POINTER(&pNode->pRight); + else + return pNodeLast; + } + } + } + else + { /* pNode->Key <= Key */ + while (KAVL_NE(pNode->Key, Key)) + { + if (KAVL_G(pNode->Key, Key)) + { + if (pNode->pLeft != KAVL_NULL) + pNode = KAVL_GET_POINTER(&pNode->pLeft); + else + return pNodeLast; + } + else + { + if (pNode->pRight != KAVL_NULL) + { + pNodeLast = pNode; + pNode = KAVL_GET_POINTER(&pNode->pRight); + } + else + return pNode; + } + } + } + } + + /* perfect match or nothing. */ + return pNode; +} + + +#endif --- linux-raspi2-4.2.0.orig/ubuntu/vbox/vboxguest/common/table/avl_RemoveBestFit.cpp.h +++ linux-raspi2-4.2.0/ubuntu/vbox/vboxguest/common/table/avl_RemoveBestFit.cpp.h @@ -0,0 +1,70 @@ +/* $Id: avl_RemoveBestFit.cpp.h $ */ +/** @file + * kAVLRemoveBestFit - Remove Best Fit routine for AVL trees. + * Intended specially on heaps. The tree should allow duplicate keys. + * + */ + +/* + * Copyright (C) 1999-2011 knut st. osmundsen (bird-src-spam@anduin.net) + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + +#ifndef _kAVLRemoveBestFit_h_ +#define _kAVLRemoveBestFit_h_ + + +/** + * Finds the best fitting node in the tree for the given Key value. + * And removes it. + * @returns Pointer to the best fitting node found. + * @param ppTree Pointer to Pointer to the tree root node. + * @param Key The Key of which is to be found a best fitting match for.. + * @param fAbove TRUE: Returned node is have the closest key to Key from above. + * FALSE: Returned node is have the closest key to Key from below. + * @sketch The best fitting node is always located in the searchpath above you. + * >= (above): The node where you last turned left. + * <= (below): the node where you last turned right. + * @remark This implementation should be speeded up slightly! + */ +KAVL_DECL(PKAVLNODECORE) KAVL_FN(RemoveBestFit)(PPKAVLNODECORE ppTree, KAVLKEY Key, bool fAbove) +{ + /* + * If we find anything we'll have to remove the node and return it. + * But, if duplicate keys are allowed we'll have to check for multiple + * nodes first and return one of them before doing an expensive remove+insert. + */ + PKAVLNODECORE pNode = KAVL_FN(GetBestFit)(ppTree, Key, fAbove); + if (pNode != NULL) + { +#ifdef KAVL_EQUAL_ALLOWED + if (pNode->pList != KAVL_NULL) + { + PKAVLNODECORE pRet = KAVL_GET_POINTER(&pNode->pList); + KAVL_SET_POINTER_NULL(&pNode->pList, &pRet->pList); + return pRet; + } +#endif + pNode = KAVL_FN(Remove)(ppTree, pNode->Key); + } + return pNode; +} + + +#endif --- linux-raspi2-4.2.0.orig/ubuntu/vbox/vboxguest/common/table/avlpv.c +++ linux-raspi2-4.2.0/ubuntu/vbox/vboxguest/common/table/avlpv.c @@ -0,0 +1,77 @@ +/* $Id: avlpv.cpp $ */ +/** @file + * IPRT - AVL tree, void *, unique keys. + */ + +/* + * Copyright (C) 2001-2010 knut st. osmundsen (bird-src-spam@anduin.net) + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + +#ifndef NOFILEID +static const char szFileId[] = "Id: kAVLPVInt.c,v 1.5 2003/02/13 02:02:35 bird Exp $"; +#endif + +/******************************************************************************* +* Defined Constants And Macros * +*******************************************************************************/ +/* + * AVL configuration. + */ +#define KAVL_FN(a) RTAvlPV##a +#define KAVL_MAX_STACK 27 /* Up to 2^24 nodes. */ +#define KAVL_CHECK_FOR_EQUAL_INSERT 1 /* No duplicate keys! */ +#define KAVLNODECORE AVLPVNODECORE +#define PKAVLNODECORE PAVLPVNODECORE +#define PPKAVLNODECORE PPAVLPVNODECORE +#define KAVLKEY AVLPVKEY +#define PKAVLKEY PAVLPVKEY +#define KAVLENUMDATA AVLPVENUMDATA +#define PKAVLENUMDATA PAVLPVENUMDATA +#define PKAVLCALLBACK PAVLPVCALLBACK + + +/* + * AVL Compare macros + */ +#define KAVL_G(key1, key2) ( (const char*)(key1) > (const char*)(key2) ) +#define KAVL_E(key1, key2) ( (const char*)(key1) == (const char*)(key2) ) +#define KAVL_NE(key1, key2) ( (const char*)(key1) != (const char*)(key2) ) + + +/******************************************************************************* +* Header Files * +*******************************************************************************/ +#include +#include +#include + +/* + * Include the code. + */ +#define SSToDS(ptr) ptr +#define KMAX RT_MAX +#define kASSERT Assert +#include "avl_Base.cpp.h" +#include "avl_Get.cpp.h" +#include "avl_GetBestFit.cpp.h" +#include "avl_RemoveBestFit.cpp.h" +#include "avl_DoWithAll.cpp.h" +#include "avl_Destroy.cpp.h" + --- linux-raspi2-4.2.0.orig/ubuntu/vbox/vboxguest/common/time/time.c +++ linux-raspi2-4.2.0/ubuntu/vbox/vboxguest/common/time/time.c @@ -0,0 +1,907 @@ +/* $Id: time.cpp $ */ +/** @file + * IPRT - Time. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + + +/******************************************************************************* +* Header Files * +*******************************************************************************/ +#define LOG_GROUP RTLOGGROUP_TIME +#include +#include "internal/iprt.h" + +#include +#include +#include +#include "internal/time.h" + + +/******************************************************************************* +* Defined Constants And Macros * +*******************************************************************************/ +/** The max year we possibly could implode. */ +#define RTTIME_MAX_YEAR (292 + 1970) +/** The min year we possibly could implode. */ +#define RTTIME_MIN_YEAR (-293 + 1970) + +/** The max day supported by our time representation. (2262-04-11T23-47-16.854775807) */ +#define RTTIME_MAX_DAY (365*292+71 + 101-1) +/** The min day supported by our time representation. (1677-09-21T00-12-43.145224192) */ +#define RTTIME_MIN_DAY (365*-293-70 + 264-1) + +/** The max nano second into the max day. (2262-04-11T23-47-16.854775807) */ +#define RTTIME_MAX_DAY_NANO ( INT64_C(1000000000) * (23*3600 + 47*60 + 16) + 854775807 ) +/** The min nano second into the min day. (1677-09-21T00-12-43.145224192) */ +#define RTTIME_MIN_DAY_NANO ( INT64_C(1000000000) * (00*3600 + 12*60 + 43) + 145224192 ) + + +/******************************************************************************* +* Global Variables * +*******************************************************************************/ +/** + * Days per month in a common year. + */ +static const uint8_t g_acDaysInMonths[12] = +{ + /*Jan Feb Mar Arp May Jun Jul Aug Sep Oct Nov Dec */ + 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 +}; + +/** + * Days per month in a leap year. + */ +static const uint8_t g_acDaysInMonthsLeap[12] = +{ + /*Jan Feb Mar Arp May Jun Jul Aug Sep Oct Nov Dec */ + 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 +}; + +/** + * The day of year for each month in a common year. + */ +static const uint16_t g_aiDayOfYear[12 + 1] = +{ + 1, /* Jan */ + 1+31, /* Feb */ + 1+31+28, /* Mar */ + 1+31+28+31, /* Apr */ + 1+31+28+31+30, /* May */ + 1+31+28+31+30+31, /* Jun */ + 1+31+28+31+30+31+30, /* Jul */ + 1+31+28+31+30+31+30+31, /* Aug */ + 1+31+28+31+30+31+30+31+31, /* Sep */ + 1+31+28+31+30+31+30+31+31+30, /* Oct */ + 1+31+28+31+30+31+30+31+31+30+31, /* Nov */ + 1+31+28+31+30+31+30+31+31+30+31+30, /* Dec */ + 1+31+28+31+30+31+30+31+31+30+31+30+31 +}; + +/** + * The day of year for each month in a leap year. + */ +static const uint16_t g_aiDayOfYearLeap[12 + 1] = +{ + 1, /* Jan */ + 1+31, /* Feb */ + 1+31+29, /* Mar */ + 1+31+29+31, /* Apr */ + 1+31+29+31+30, /* May */ + 1+31+29+31+30+31, /* Jun */ + 1+31+29+31+30+31+30, /* Jul */ + 1+31+29+31+30+31+30+31, /* Aug */ + 1+31+29+31+30+31+30+31+31, /* Sep */ + 1+31+29+31+30+31+30+31+31+30, /* Oct */ + 1+31+29+31+30+31+30+31+31+30+31, /* Nov */ + 1+31+29+31+30+31+30+31+31+30+31+30, /* Dec */ + 1+31+29+31+30+31+30+31+31+30+31+30+31 +}; + +/** The index of 1970 in g_aoffYear */ +#define OFF_YEAR_IDX_EPOCH 300 +/** The year of the first index. */ +#define OFF_YEAR_IDX_0_YEAR 1670 + +/** + * The number of days the 1st of January a year is offseted from 1970-01-01. + */ +static const int32_t g_aoffYear[] = +{ +/*1670:*/ 365*-300+-72, 365*-299+-72, 365*-298+-72, 365*-297+-71, 365*-296+-71, 365*-295+-71, 365*-294+-71, 365*-293+-70, 365*-292+-70, 365*-291+-70, +/*1680:*/ 365*-290+-70, 365*-289+-69, 365*-288+-69, 365*-287+-69, 365*-286+-69, 365*-285+-68, 365*-284+-68, 365*-283+-68, 365*-282+-68, 365*-281+-67, +/*1690:*/ 365*-280+-67, 365*-279+-67, 365*-278+-67, 365*-277+-66, 365*-276+-66, 365*-275+-66, 365*-274+-66, 365*-273+-65, 365*-272+-65, 365*-271+-65, +/*1700:*/ 365*-270+-65, 365*-269+-65, 365*-268+-65, 365*-267+-65, 365*-266+-65, 365*-265+-64, 365*-264+-64, 365*-263+-64, 365*-262+-64, 365*-261+-63, +/*1710:*/ 365*-260+-63, 365*-259+-63, 365*-258+-63, 365*-257+-62, 365*-256+-62, 365*-255+-62, 365*-254+-62, 365*-253+-61, 365*-252+-61, 365*-251+-61, +/*1720:*/ 365*-250+-61, 365*-249+-60, 365*-248+-60, 365*-247+-60, 365*-246+-60, 365*-245+-59, 365*-244+-59, 365*-243+-59, 365*-242+-59, 365*-241+-58, +/*1730:*/ 365*-240+-58, 365*-239+-58, 365*-238+-58, 365*-237+-57, 365*-236+-57, 365*-235+-57, 365*-234+-57, 365*-233+-56, 365*-232+-56, 365*-231+-56, +/*1740:*/ 365*-230+-56, 365*-229+-55, 365*-228+-55, 365*-227+-55, 365*-226+-55, 365*-225+-54, 365*-224+-54, 365*-223+-54, 365*-222+-54, 365*-221+-53, +/*1750:*/ 365*-220+-53, 365*-219+-53, 365*-218+-53, 365*-217+-52, 365*-216+-52, 365*-215+-52, 365*-214+-52, 365*-213+-51, 365*-212+-51, 365*-211+-51, +/*1760:*/ 365*-210+-51, 365*-209+-50, 365*-208+-50, 365*-207+-50, 365*-206+-50, 365*-205+-49, 365*-204+-49, 365*-203+-49, 365*-202+-49, 365*-201+-48, +/*1770:*/ 365*-200+-48, 365*-199+-48, 365*-198+-48, 365*-197+-47, 365*-196+-47, 365*-195+-47, 365*-194+-47, 365*-193+-46, 365*-192+-46, 365*-191+-46, +/*1780:*/ 365*-190+-46, 365*-189+-45, 365*-188+-45, 365*-187+-45, 365*-186+-45, 365*-185+-44, 365*-184+-44, 365*-183+-44, 365*-182+-44, 365*-181+-43, +/*1790:*/ 365*-180+-43, 365*-179+-43, 365*-178+-43, 365*-177+-42, 365*-176+-42, 365*-175+-42, 365*-174+-42, 365*-173+-41, 365*-172+-41, 365*-171+-41, +/*1800:*/ 365*-170+-41, 365*-169+-41, 365*-168+-41, 365*-167+-41, 365*-166+-41, 365*-165+-40, 365*-164+-40, 365*-163+-40, 365*-162+-40, 365*-161+-39, +/*1810:*/ 365*-160+-39, 365*-159+-39, 365*-158+-39, 365*-157+-38, 365*-156+-38, 365*-155+-38, 365*-154+-38, 365*-153+-37, 365*-152+-37, 365*-151+-37, +/*1820:*/ 365*-150+-37, 365*-149+-36, 365*-148+-36, 365*-147+-36, 365*-146+-36, 365*-145+-35, 365*-144+-35, 365*-143+-35, 365*-142+-35, 365*-141+-34, +/*1830:*/ 365*-140+-34, 365*-139+-34, 365*-138+-34, 365*-137+-33, 365*-136+-33, 365*-135+-33, 365*-134+-33, 365*-133+-32, 365*-132+-32, 365*-131+-32, +/*1840:*/ 365*-130+-32, 365*-129+-31, 365*-128+-31, 365*-127+-31, 365*-126+-31, 365*-125+-30, 365*-124+-30, 365*-123+-30, 365*-122+-30, 365*-121+-29, +/*1850:*/ 365*-120+-29, 365*-119+-29, 365*-118+-29, 365*-117+-28, 365*-116+-28, 365*-115+-28, 365*-114+-28, 365*-113+-27, 365*-112+-27, 365*-111+-27, +/*1860:*/ 365*-110+-27, 365*-109+-26, 365*-108+-26, 365*-107+-26, 365*-106+-26, 365*-105+-25, 365*-104+-25, 365*-103+-25, 365*-102+-25, 365*-101+-24, +/*1870:*/ 365*-100+-24, 365* -99+-24, 365* -98+-24, 365* -97+-23, 365* -96+-23, 365* -95+-23, 365* -94+-23, 365* -93+-22, 365* -92+-22, 365* -91+-22, +/*1880:*/ 365* -90+-22, 365* -89+-21, 365* -88+-21, 365* -87+-21, 365* -86+-21, 365* -85+-20, 365* -84+-20, 365* -83+-20, 365* -82+-20, 365* -81+-19, +/*1890:*/ 365* -80+-19, 365* -79+-19, 365* -78+-19, 365* -77+-18, 365* -76+-18, 365* -75+-18, 365* -74+-18, 365* -73+-17, 365* -72+-17, 365* -71+-17, +/*1900:*/ 365* -70+-17, 365* -69+-17, 365* -68+-17, 365* -67+-17, 365* -66+-17, 365* -65+-16, 365* -64+-16, 365* -63+-16, 365* -62+-16, 365* -61+-15, +/*1910:*/ 365* -60+-15, 365* -59+-15, 365* -58+-15, 365* -57+-14, 365* -56+-14, 365* -55+-14, 365* -54+-14, 365* -53+-13, 365* -52+-13, 365* -51+-13, +/*1920:*/ 365* -50+-13, 365* -49+-12, 365* -48+-12, 365* -47+-12, 365* -46+-12, 365* -45+-11, 365* -44+-11, 365* -43+-11, 365* -42+-11, 365* -41+-10, +/*1930:*/ 365* -40+-10, 365* -39+-10, 365* -38+-10, 365* -37+-9 , 365* -36+-9 , 365* -35+-9 , 365* -34+-9 , 365* -33+-8 , 365* -32+-8 , 365* -31+-8 , +/*1940:*/ 365* -30+-8 , 365* -29+-7 , 365* -28+-7 , 365* -27+-7 , 365* -26+-7 , 365* -25+-6 , 365* -24+-6 , 365* -23+-6 , 365* -22+-6 , 365* -21+-5 , +/*1950:*/ 365* -20+-5 , 365* -19+-5 , 365* -18+-5 , 365* -17+-4 , 365* -16+-4 , 365* -15+-4 , 365* -14+-4 , 365* -13+-3 , 365* -12+-3 , 365* -11+-3 , +/*1960:*/ 365* -10+-3 , 365* -9+-2 , 365* -8+-2 , 365* -7+-2 , 365* -6+-2 , 365* -5+-1 , 365* -4+-1 , 365* -3+-1 , 365* -2+-1 , 365* -1+0 , +/*1970:*/ 365* 0+0 , 365* 1+0 , 365* 2+0 , 365* 3+1 , 365* 4+1 , 365* 5+1 , 365* 6+1 , 365* 7+2 , 365* 8+2 , 365* 9+2 , +/*1980:*/ 365* 10+2 , 365* 11+3 , 365* 12+3 , 365* 13+3 , 365* 14+3 , 365* 15+4 , 365* 16+4 , 365* 17+4 , 365* 18+4 , 365* 19+5 , +/*1990:*/ 365* 20+5 , 365* 21+5 , 365* 22+5 , 365* 23+6 , 365* 24+6 , 365* 25+6 , 365* 26+6 , 365* 27+7 , 365* 28+7 , 365* 29+7 , +/*2000:*/ 365* 30+7 , 365* 31+8 , 365* 32+8 , 365* 33+8 , 365* 34+8 , 365* 35+9 , 365* 36+9 , 365* 37+9 , 365* 38+9 , 365* 39+10 , +/*2010:*/ 365* 40+10 , 365* 41+10 , 365* 42+10 , 365* 43+11 , 365* 44+11 , 365* 45+11 , 365* 46+11 , 365* 47+12 , 365* 48+12 , 365* 49+12 , +/*2020:*/ 365* 50+12 , 365* 51+13 , 365* 52+13 , 365* 53+13 , 365* 54+13 , 365* 55+14 , 365* 56+14 , 365* 57+14 , 365* 58+14 , 365* 59+15 , +/*2030:*/ 365* 60+15 , 365* 61+15 , 365* 62+15 , 365* 63+16 , 365* 64+16 , 365* 65+16 , 365* 66+16 , 365* 67+17 , 365* 68+17 , 365* 69+17 , +/*2040:*/ 365* 70+17 , 365* 71+18 , 365* 72+18 , 365* 73+18 , 365* 74+18 , 365* 75+19 , 365* 76+19 , 365* 77+19 , 365* 78+19 , 365* 79+20 , +/*2050:*/ 365* 80+20 , 365* 81+20 , 365* 82+20 , 365* 83+21 , 365* 84+21 , 365* 85+21 , 365* 86+21 , 365* 87+22 , 365* 88+22 , 365* 89+22 , +/*2060:*/ 365* 90+22 , 365* 91+23 , 365* 92+23 , 365* 93+23 , 365* 94+23 , 365* 95+24 , 365* 96+24 , 365* 97+24 , 365* 98+24 , 365* 99+25 , +/*2070:*/ 365* 100+25 , 365* 101+25 , 365* 102+25 , 365* 103+26 , 365* 104+26 , 365* 105+26 , 365* 106+26 , 365* 107+27 , 365* 108+27 , 365* 109+27 , +/*2080:*/ 365* 110+27 , 365* 111+28 , 365* 112+28 , 365* 113+28 , 365* 114+28 , 365* 115+29 , 365* 116+29 , 365* 117+29 , 365* 118+29 , 365* 119+30 , +/*2090:*/ 365* 120+30 , 365* 121+30 , 365* 122+30 , 365* 123+31 , 365* 124+31 , 365* 125+31 , 365* 126+31 , 365* 127+32 , 365* 128+32 , 365* 129+32 , +/*2100:*/ 365* 130+32 , 365* 131+32 , 365* 132+32 , 365* 133+32 , 365* 134+32 , 365* 135+33 , 365* 136+33 , 365* 137+33 , 365* 138+33 , 365* 139+34 , +/*2110:*/ 365* 140+34 , 365* 141+34 , 365* 142+34 , 365* 143+35 , 365* 144+35 , 365* 145+35 , 365* 146+35 , 365* 147+36 , 365* 148+36 , 365* 149+36 , +/*2120:*/ 365* 150+36 , 365* 151+37 , 365* 152+37 , 365* 153+37 , 365* 154+37 , 365* 155+38 , 365* 156+38 , 365* 157+38 , 365* 158+38 , 365* 159+39 , +/*2130:*/ 365* 160+39 , 365* 161+39 , 365* 162+39 , 365* 163+40 , 365* 164+40 , 365* 165+40 , 365* 166+40 , 365* 167+41 , 365* 168+41 , 365* 169+41 , +/*2140:*/ 365* 170+41 , 365* 171+42 , 365* 172+42 , 365* 173+42 , 365* 174+42 , 365* 175+43 , 365* 176+43 , 365* 177+43 , 365* 178+43 , 365* 179+44 , +/*2150:*/ 365* 180+44 , 365* 181+44 , 365* 182+44 , 365* 183+45 , 365* 184+45 , 365* 185+45 , 365* 186+45 , 365* 187+46 , 365* 188+46 , 365* 189+46 , +/*2160:*/ 365* 190+46 , 365* 191+47 , 365* 192+47 , 365* 193+47 , 365* 194+47 , 365* 195+48 , 365* 196+48 , 365* 197+48 , 365* 198+48 , 365* 199+49 , +/*2170:*/ 365* 200+49 , 365* 201+49 , 365* 202+49 , 365* 203+50 , 365* 204+50 , 365* 205+50 , 365* 206+50 , 365* 207+51 , 365* 208+51 , 365* 209+51 , +/*2180:*/ 365* 210+51 , 365* 211+52 , 365* 212+52 , 365* 213+52 , 365* 214+52 , 365* 215+53 , 365* 216+53 , 365* 217+53 , 365* 218+53 , 365* 219+54 , +/*2190:*/ 365* 220+54 , 365* 221+54 , 365* 222+54 , 365* 223+55 , 365* 224+55 , 365* 225+55 , 365* 226+55 , 365* 227+56 , 365* 228+56 , 365* 229+56 , +/*2200:*/ 365* 230+56 , 365* 231+56 , 365* 232+56 , 365* 233+56 , 365* 234+56 , 365* 235+57 , 365* 236+57 , 365* 237+57 , 365* 238+57 , 365* 239+58 , +/*2210:*/ 365* 240+58 , 365* 241+58 , 365* 242+58 , 365* 243+59 , 365* 244+59 , 365* 245+59 , 365* 246+59 , 365* 247+60 , 365* 248+60 , 365* 249+60 , +/*2220:*/ 365* 250+60 , 365* 251+61 , 365* 252+61 , 365* 253+61 , 365* 254+61 , 365* 255+62 , 365* 256+62 , 365* 257+62 , 365* 258+62 , 365* 259+63 , +/*2230:*/ 365* 260+63 , 365* 261+63 , 365* 262+63 , 365* 263+64 , 365* 264+64 , 365* 265+64 , 365* 266+64 , 365* 267+65 , 365* 268+65 , 365* 269+65 , +/*2240:*/ 365* 270+65 , 365* 271+66 , 365* 272+66 , 365* 273+66 , 365* 274+66 , 365* 275+67 , 365* 276+67 , 365* 277+67 , 365* 278+67 , 365* 279+68 , +/*2250:*/ 365* 280+68 , 365* 281+68 , 365* 282+68 , 365* 283+69 , 365* 284+69 , 365* 285+69 , 365* 286+69 , 365* 287+70 , 365* 288+70 , 365* 289+70 , +/*2260:*/ 365* 290+70 , 365* 291+71 , 365* 292+71 , 365* 293+71 , 365* 294+71 , 365* 295+72 , 365* 296+72 , 365* 297+72 , 365* 298+72 , 365* 299+73 +}; + +/* generator code: +#include +bool isLeapYear(int iYear) +{ + return iYear % 4 == 0 && (iYear % 100 != 0 || iYear % 400 == 0); +} +void printYear(int iYear, int iLeap) +{ + if (!(iYear % 10)) + printf("\n/" "*%d:*" "/", iYear + 1970); + printf(" 365*%4d+%-3d,", iYear, iLeap); +} +int main() +{ + int iYear = 0; + int iLeap = 0; + while (iYear > -300) + iLeap -= isLeapYear(1970 + --iYear); + while (iYear < 300) + { + printYear(iYear, iLeap); + iLeap += isLeapYear(1970 + iYear++); + } + printf("\n"); + return 0; +} +*/ + + +/** + * Checks if a year is a leap year or not. + * + * @returns true if it's a leap year. + * @returns false if it's a common year. + * @param i32Year The year in question. + */ +DECLINLINE(bool) rtTimeIsLeapYear(int32_t i32Year) +{ + return i32Year % 4 == 0 + && ( i32Year % 100 != 0 + || i32Year % 400 == 0); +} + + +/** + * Checks if a year is a leap year or not. + * + * @returns true if it's a leap year. + * @returns false if it's a common year. + * @param i32Year The year in question. + */ +RTDECL(bool) RTTimeIsLeapYear(int32_t i32Year) +{ + return rtTimeIsLeapYear(i32Year); +} +RT_EXPORT_SYMBOL(RTTimeIsLeapYear); + + +/** + * Explodes a time spec (UTC). + * + * @returns pTime. + * @param pTime Where to store the exploded time. + * @param pTimeSpec The time spec to exploded. + */ +RTDECL(PRTTIME) RTTimeExplode(PRTTIME pTime, PCRTTIMESPEC pTimeSpec) +{ + int64_t i64Div; + int32_t i32Div; + int32_t i32Rem; + unsigned iYear; + const uint16_t *paiDayOfYear; + int iMonth; + + AssertMsg(VALID_PTR(pTime), ("%p\n", pTime)); + AssertMsg(VALID_PTR(pTimeSpec), ("%p\n", pTime)); + + /* + * The simple stuff first. + */ + pTime->fFlags = RTTIME_FLAGS_TYPE_UTC; + i64Div = pTimeSpec->i64NanosecondsRelativeToUnixEpoch; + i32Rem = (int32_t)(i64Div % 1000000000); + i64Div /= 1000000000; + if (i32Rem < 0) + { + i32Rem += 1000000000; + i64Div--; + } + pTime->u32Nanosecond = i32Rem; + + /* second */ + i32Rem = (int32_t)(i64Div % 60); + i64Div /= 60; + if (i32Rem < 0) + { + i32Rem += 60; + i64Div--; + } + pTime->u8Second = i32Rem; + + /* minute */ + i32Div = (int32_t)i64Div; /* 60,000,000,000 > 33bit, so 31bit suffices. */ + i32Rem = i32Div % 60; + i32Div /= 60; + if (i32Rem < 0) + { + i32Rem += 60; + i32Div--; + } + pTime->u8Minute = i32Rem; + + /* hour */ + i32Rem = i32Div % 24; + i32Div /= 24; /* days relative to 1970-01-01 */ + if (i32Rem < 0) + { + i32Rem += 24; + i32Div--; + } + pTime->u8Hour = i32Rem; + + /* weekday - 1970-01-01 was a Thursday (3) */ + pTime->u8WeekDay = ((int)(i32Div % 7) + 3 + 7) % 7; + + /* + * We've now got a number of days relative to 1970-01-01. + * To get the correct year number we have to mess with leap years. Fortunately, + * the representation we've got only supports a few hundred years, so we can + * generate a table and perform a simple two way search from the modulus 365 derived. + */ + iYear = OFF_YEAR_IDX_EPOCH + i32Div / 365; + while (g_aoffYear[iYear + 1] <= i32Div) + iYear++; + while (g_aoffYear[iYear] > i32Div) + iYear--; + pTime->i32Year = iYear + OFF_YEAR_IDX_0_YEAR; + i32Div -= g_aoffYear[iYear]; + pTime->u16YearDay = i32Div + 1; + + /* + * Figuring out the month is done in a manner similar to the year, only here we + * ensure that the index is matching or too small. + */ + if (rtTimeIsLeapYear(pTime->i32Year)) + { + pTime->fFlags |= RTTIME_FLAGS_LEAP_YEAR; + paiDayOfYear = &g_aiDayOfYearLeap[0]; + } + else + { + pTime->fFlags |= RTTIME_FLAGS_COMMON_YEAR; + paiDayOfYear = &g_aiDayOfYear[0]; + } + iMonth = i32Div / 32; + i32Div++; + while (paiDayOfYear[iMonth + 1] <= i32Div) + iMonth++; + pTime->u8Month = iMonth + 1; + i32Div -= paiDayOfYear[iMonth]; + pTime->u8MonthDay = i32Div + 1; + + /* This is for UTC timespecs, so, no offset. */ + pTime->offUTC = 0; + + return pTime; +} +RT_EXPORT_SYMBOL(RTTimeExplode); + + +/** + * Implodes exploded time to a time spec (UTC). + * + * @returns pTime on success. + * @returns NULL if the pTime data is invalid. + * @param pTimeSpec Where to store the imploded UTC time. + * If pTime specifies a time which outside the range, maximum or + * minimum values will be returned. + * @param pTime Pointer to the exploded time to implode. + * The fields u8Month, u8WeekDay and u8MonthDay are not used, + * and all the other fields are expected to be within their + * bounds. Use RTTimeNormalize() to calculate u16YearDay and + * normalize the ranges of the fields. + */ +RTDECL(PRTTIMESPEC) RTTimeImplode(PRTTIMESPEC pTimeSpec, PCRTTIME pTime) +{ + int32_t i32Days; + uint32_t u32Secs; + int64_t i64Nanos; + + /* + * Validate input. + */ + AssertReturn(VALID_PTR(pTimeSpec), NULL); + AssertReturn(VALID_PTR(pTime), NULL); + AssertReturn(pTime->u32Nanosecond < 1000000000, NULL); + AssertReturn(pTime->u8Second < 60, NULL); + AssertReturn(pTime->u8Minute < 60, NULL); + AssertReturn(pTime->u8Hour < 24, NULL); + AssertReturn(pTime->u16YearDay >= 1, NULL); + AssertReturn(pTime->u16YearDay <= (rtTimeIsLeapYear(pTime->i32Year) ? 366 : 365), NULL); + AssertMsgReturn(pTime->i32Year <= RTTIME_MAX_YEAR && pTime->i32Year >= RTTIME_MIN_YEAR, ("%RI32\n", pTime->i32Year), NULL); + + /* + * Do the conversion to nanoseconds. + */ + i32Days = g_aoffYear[pTime->i32Year - OFF_YEAR_IDX_0_YEAR] + + pTime->u16YearDay - 1; + AssertMsgReturn(i32Days <= RTTIME_MAX_DAY && i32Days >= RTTIME_MIN_DAY, ("%RI32\n", i32Days), NULL); + + u32Secs = pTime->u8Second + + pTime->u8Minute * 60 + + pTime->u8Hour * 3600; + i64Nanos = (uint64_t)pTime->u32Nanosecond + + u32Secs * UINT64_C(1000000000); + AssertMsgReturn(i32Days != RTTIME_MAX_DAY || i64Nanos <= RTTIME_MAX_DAY_NANO, ("%RI64\n", i64Nanos), NULL); + AssertMsgReturn(i32Days != RTTIME_MIN_DAY || i64Nanos >= RTTIME_MIN_DAY_NANO, ("%RI64\n", i64Nanos), NULL); + + i64Nanos += i32Days * UINT64_C(86400000000000); + + pTimeSpec->i64NanosecondsRelativeToUnixEpoch = i64Nanos; + return pTimeSpec; +} +RT_EXPORT_SYMBOL(RTTimeImplode); + + +/** + * Internal worker for RTTimeNormalize and RTTimeLocalNormalize. + * It doesn't adjust the UCT offset but leaves that for RTTimeLocalNormalize. + */ +static PRTTIME rtTimeNormalizeInternal(PRTTIME pTime) +{ + unsigned uSecond; + unsigned uMinute; + unsigned uHour; + bool fLeapYear; + + /* + * Fix the YearDay and Month/MonthDay. + */ + fLeapYear = rtTimeIsLeapYear(pTime->i32Year); + if (!pTime->u16YearDay) + { + /* + * The Month+MonthDay must present, overflow adjust them and calc the year day. + */ + AssertMsgReturn( pTime->u8Month + && pTime->u8MonthDay, + ("date=%d-%d-%d\n", pTime->i32Year, pTime->u8Month, pTime->u8MonthDay), + NULL); + while (pTime->u8Month > 12) + { + pTime->u8Month -= 12; + pTime->i32Year++; + fLeapYear = rtTimeIsLeapYear(pTime->i32Year); + pTime->fFlags &= ~(RTTIME_FLAGS_COMMON_YEAR | RTTIME_FLAGS_LEAP_YEAR); + } + + for (;;) + { + unsigned cDaysInMonth = fLeapYear + ? g_acDaysInMonthsLeap[pTime->u8Month - 1] + : g_acDaysInMonths[pTime->u8Month - 1]; + if (pTime->u8MonthDay <= cDaysInMonth) + break; + pTime->u8MonthDay -= cDaysInMonth; + if (pTime->u8Month != 12) + pTime->u8Month++; + else + { + pTime->u8Month = 1; + pTime->i32Year++; + fLeapYear = rtTimeIsLeapYear(pTime->i32Year); + pTime->fFlags &= ~(RTTIME_FLAGS_COMMON_YEAR | RTTIME_FLAGS_LEAP_YEAR); + } + } + + pTime->u16YearDay = pTime->u8MonthDay - 1 + + (fLeapYear + ? g_aiDayOfYearLeap[pTime->u8Month - 1] + : g_aiDayOfYear[pTime->u8Month - 1]); + } + else + { + /* + * Are both YearDay and Month/MonthDay valid? + * Check that they don't overflow and match, if not use YearDay (simpler). + */ + bool fRecalc = true; + if ( pTime->u8Month + && pTime->u8MonthDay) + { + do + { + uint16_t u16YearDay; + + /* If you change one, zero the other to make clear what you mean. */ + AssertBreak(pTime->u8Month <= 12); + AssertBreak(pTime->u8MonthDay <= (fLeapYear + ? g_acDaysInMonthsLeap[pTime->u8Month - 1] + : g_acDaysInMonths[pTime->u8Month - 1])); + u16YearDay = pTime->u8MonthDay - 1 + + (fLeapYear + ? g_aiDayOfYearLeap[pTime->u8Month - 1] + : g_aiDayOfYear[pTime->u8Month - 1]); + AssertBreak(u16YearDay == pTime->u16YearDay); + fRecalc = false; + } while (0); + } + if (fRecalc) + { + const uint16_t *paiDayOfYear; + + /* overflow adjust YearDay */ + while (pTime->u16YearDay > (fLeapYear ? 366 : 365)) + { + pTime->u16YearDay -= fLeapYear ? 366 : 365; + pTime->i32Year++; + fLeapYear = rtTimeIsLeapYear(pTime->i32Year); + pTime->fFlags &= ~(RTTIME_FLAGS_COMMON_YEAR | RTTIME_FLAGS_LEAP_YEAR); + } + + /* calc Month and MonthDay */ + paiDayOfYear = fLeapYear + ? &g_aiDayOfYearLeap[0] + : &g_aiDayOfYear[0]; + pTime->u8Month = 1; + while (pTime->u16YearDay > paiDayOfYear[pTime->u8Month]) + pTime->u8Month++; + Assert(pTime->u8Month >= 1 && pTime->u8Month <= 12); + pTime->u8MonthDay = pTime->u16YearDay - paiDayOfYear[pTime->u8Month - 1] + 1; + } + } + + /* + * Fixup time overflows. + * Use unsigned int values internally to avoid overflows. + */ + uSecond = pTime->u8Second; + uMinute = pTime->u8Minute; + uHour = pTime->u8Hour; + + while (pTime->u32Nanosecond >= 1000000000) + { + pTime->u32Nanosecond -= 1000000000; + uSecond++; + } + + while (uSecond >= 60) + { + uSecond -= 60; + uMinute++; + } + + while (uMinute >= 60) + { + uMinute -= 60; + uHour++; + } + + while (uHour >= 24) + { + uHour -= 24; + + /* This is really a RTTimeIncDay kind of thing... */ + if (pTime->u16YearDay + 1 != (fLeapYear ? g_aiDayOfYearLeap[pTime->u8Month] : g_aiDayOfYear[pTime->u8Month])) + { + pTime->u16YearDay++; + pTime->u8MonthDay++; + } + else if (pTime->u8Month != 12) + { + pTime->u16YearDay++; + pTime->u8Month++; + pTime->u8MonthDay = 1; + } + else + { + pTime->i32Year++; + fLeapYear = rtTimeIsLeapYear(pTime->i32Year); + pTime->fFlags &= ~(RTTIME_FLAGS_COMMON_YEAR | RTTIME_FLAGS_LEAP_YEAR); + pTime->u16YearDay = 1; + pTime->u8Month = 1; + pTime->u8MonthDay = 1; + } + } + + pTime->u8Second = uSecond; + pTime->u8Minute = uMinute; + pTime->u8Hour = uHour; + + /* + * Correct the leap year flag. + * Assert if it's wrong, but ignore if unset. + */ + if (fLeapYear) + { + Assert(!(pTime->fFlags & RTTIME_FLAGS_COMMON_YEAR)); + pTime->fFlags &= ~RTTIME_FLAGS_COMMON_YEAR; + pTime->fFlags |= RTTIME_FLAGS_LEAP_YEAR; + } + else + { + Assert(!(pTime->fFlags & RTTIME_FLAGS_LEAP_YEAR)); + pTime->fFlags &= ~RTTIME_FLAGS_LEAP_YEAR; + pTime->fFlags |= RTTIME_FLAGS_COMMON_YEAR; + } + + + /* + * Calc week day. + * + * 1970-01-01 was a Thursday (3), so find the number of days relative to + * that point. We use the table when possible and a slow+stupid+brute-force + * algorithm for points outside it. Feel free to optimize the latter by + * using some clever formula. + */ + if ( pTime->i32Year >= OFF_YEAR_IDX_0_YEAR + && pTime->i32Year < OFF_YEAR_IDX_0_YEAR + (int32_t)RT_ELEMENTS(g_aoffYear)) + { + int32_t offDays = g_aoffYear[pTime->i32Year - OFF_YEAR_IDX_0_YEAR] + + pTime->u16YearDay -1; + pTime->u8WeekDay = ((offDays % 7) + 3 + 7) % 7; + } + else + { + int32_t i32Year = pTime->i32Year; + if (i32Year >= 1970) + { + uint64_t offDays = pTime->u16YearDay - 1; + while (--i32Year >= 1970) + offDays += rtTimeIsLeapYear(i32Year) ? 366 : 365; + pTime->u8WeekDay = (uint8_t)((offDays + 3) % 7); + } + else + { + int64_t offDays = (fLeapYear ? -366 - 1 : -365 - 1) + pTime->u16YearDay; + while (++i32Year < 1970) + offDays -= rtTimeIsLeapYear(i32Year) ? 366 : 365; + pTime->u8WeekDay = ((int)(offDays % 7) + 3 + 7) % 7; + } + } + return pTime; +} + + +/** + * Normalizes the fields of a time structure. + * + * It is possible to calculate year-day from month/day and vice + * versa. If you adjust any of these, make sure to zero the + * other so you make it clear which of the fields to use. If + * it's ambiguous, the year-day field is used (and you get + * assertions in debug builds). + * + * All the time fields and the year-day or month/day fields will + * be adjusted for overflows. (Since all fields are unsigned, there + * is no underflows.) It is possible to exploit this for simple + * date math, though the recommended way of doing that to implode + * the time into a timespec and do the math on that. + * + * @returns pTime on success. + * @returns NULL if the data is invalid. + * + * @param pTime The time structure to normalize. + * + * @remarks This function doesn't work with local time, only with UTC time. + */ +RTDECL(PRTTIME) RTTimeNormalize(PRTTIME pTime) +{ + /* + * Validate that we've got the minimum of stuff handy. + */ + AssertReturn(VALID_PTR(pTime), NULL); + AssertMsgReturn(!(pTime->fFlags & ~RTTIME_FLAGS_MASK), ("%#x\n", pTime->fFlags), NULL); + AssertMsgReturn((pTime->fFlags & RTTIME_FLAGS_TYPE_MASK) != RTTIME_FLAGS_TYPE_LOCAL, ("Use RTTimeLocalNormalize!\n"), NULL); + AssertMsgReturn(pTime->offUTC == 0, ("%d; Use RTTimeLocalNormalize!\n", pTime->offUTC), NULL); + + pTime = rtTimeNormalizeInternal(pTime); + if (pTime) + pTime->fFlags |= RTTIME_FLAGS_TYPE_UTC; + return pTime; +} +RT_EXPORT_SYMBOL(RTTimeNormalize); + + +/** + * Converts a time spec to a ISO date string. + * + * @returns psz on success. + * @returns NULL on buffer underflow. + * @param pTime The time. Caller should've normalized this. + * @param psz Where to store the string. + * @param cb The size of the buffer. + */ +RTDECL(char *) RTTimeToString(PCRTTIME pTime, char *psz, size_t cb) +{ + size_t cch; + + /* (Default to UTC if not specified) */ + if ( (pTime->fFlags & RTTIME_FLAGS_TYPE_MASK) == RTTIME_FLAGS_TYPE_LOCAL + && pTime->offUTC) + { + int32_t offUTCHour = pTime->offUTC / 60; + int32_t offUTCMinute = pTime->offUTC % 60; + char chSign; + Assert(pTime->offUTC <= 840 && pTime->offUTC >= -840); + if (pTime->offUTC >= 0) + chSign = '+'; + else + { + chSign = '-'; + offUTCMinute = -offUTCMinute; + offUTCHour = -offUTCHour; + } + cch = RTStrPrintf(psz, cb, + "%RI32-%02u-%02uT%02u:%02u:%02u.%09RU32%c%02%02", + pTime->i32Year, pTime->u8Month, pTime->u8MonthDay, + pTime->u8Hour, pTime->u8Minute, pTime->u8Second, pTime->u32Nanosecond, + chSign, offUTCHour, offUTCMinute); + if ( cch <= 15 + || psz[cch - 5] != chSign) + return NULL; + } + else + { + cch = RTStrPrintf(psz, cb, "%RI32-%02u-%02uT%02u:%02u:%02u.%09RU32Z", + pTime->i32Year, pTime->u8Month, pTime->u8MonthDay, + pTime->u8Hour, pTime->u8Minute, pTime->u8Second, pTime->u32Nanosecond); + if ( cch <= 15 + || psz[cch - 1] != 'Z') + return NULL; + } + return psz; +} +RT_EXPORT_SYMBOL(RTTimeToString); + + +/** + * Converts a time spec to a ISO date string. + * + * @returns psz on success. + * @returns NULL on buffer underflow. + * @param pTime The time spec. + * @param psz Where to store the string. + * @param cb The size of the buffer. + */ +RTDECL(char *) RTTimeSpecToString(PCRTTIMESPEC pTime, char *psz, size_t cb) +{ + RTTIME Time; + return RTTimeToString(RTTimeExplode(&Time, pTime), psz, cb); +} +RT_EXPORT_SYMBOL(RTTimeSpecToString); + + + +/** + * Attempts to convert an ISO date string to a time structure. + * + * We're a little forgiving with zero padding, unspecified parts, and leading + * and trailing spaces. + * + * @retval pTime on success, + * @retval NULL on failure. + * @param pTime Where to store the time on success. + * @param pszString The ISO date string to convert. + */ +RTDECL(PRTTIME) RTTimeFromString(PRTTIME pTime, const char *pszString) +{ + /* Ignore leading spaces. */ + while (RT_C_IS_SPACE(*pszString)) + pszString++; + + /* + * Init non date & time parts. + */ + pTime->fFlags = RTTIME_FLAGS_TYPE_LOCAL; + pTime->offUTC = 0; + + /* + * The day part. + */ + + /* Year */ + int rc = RTStrToInt32Ex(pszString, (char **)&pszString, 10, &pTime->i32Year); + if (rc != VWRN_TRAILING_CHARS) + return NULL; + + bool const fLeapYear = rtTimeIsLeapYear(pTime->i32Year); + if (fLeapYear) + pTime->fFlags |= RTTIME_FLAGS_LEAP_YEAR; + + if (*pszString++ != '-') + return NULL; + + /* Month of the year. */ + rc = RTStrToUInt8Ex(pszString, (char **)&pszString, 10, &pTime->u8Month); + if (rc != VWRN_TRAILING_CHARS) + return NULL; + if (pTime->u8Month == 0 || pTime->u8Month > 12) + return NULL; + if (*pszString++ != '-') + return NULL; + + /* Day of month.*/ + rc = RTStrToUInt8Ex(pszString, (char **)&pszString, 10, &pTime->u8MonthDay); + if (rc != VWRN_TRAILING_CHARS && rc != VINF_SUCCESS) + return NULL; + unsigned const cDaysInMonth = fLeapYear + ? g_acDaysInMonthsLeap[pTime->u8Month - 1] + : g_acDaysInMonths[pTime->u8Month - 1]; + if (pTime->u8MonthDay == 0 || pTime->u8MonthDay > cDaysInMonth) + return NULL; + + /* Calculate year day. */ + pTime->u16YearDay = pTime->u8MonthDay - 1 + + (fLeapYear + ? g_aiDayOfYearLeap[pTime->u8Month - 1] + : g_aiDayOfYear[pTime->u8Month - 1]); + + /* + * The time part. + */ + if (*pszString++ != 'T') + return NULL; + + /* Hour. */ + rc = RTStrToUInt8Ex(pszString, (char **)&pszString, 10, &pTime->u8Hour); + if (rc != VWRN_TRAILING_CHARS) + return NULL; + if (pTime->u8Hour > 23) + return NULL; + if (*pszString++ != ':') + return NULL; + + /* Minute. */ + rc = RTStrToUInt8Ex(pszString, (char **)&pszString, 10, &pTime->u8Minute); + if (rc != VWRN_TRAILING_CHARS) + return NULL; + if (pTime->u8Minute > 59) + return NULL; + if (*pszString++ != ':') + return NULL; + + /* Second. */ + rc = RTStrToUInt8Ex(pszString, (char **)&pszString, 10, &pTime->u8Minute); + if (rc != VINF_SUCCESS && rc != VWRN_TRAILING_CHARS && rc != VWRN_TRAILING_SPACES) + return NULL; + if (pTime->u8Second > 59) + return NULL; + + /* Nanoseconds is optional and probably non-standard. */ + if (*pszString == '.') + { + rc = RTStrToUInt32Ex(pszString + 1, (char **)&pszString, 10, &pTime->u32Nanosecond); + if (rc != VINF_SUCCESS && rc != VWRN_TRAILING_CHARS && rc != VWRN_TRAILING_SPACES) + return NULL; + if (pTime->u32Nanosecond >= 1000000000) + return NULL; + } + else + pTime->u32Nanosecond = 0; + + /* + * Time zone. + */ + if (*pszString == 'Z') + { + pszString++; + pTime->fFlags &= ~RTTIME_FLAGS_TYPE_MASK; + pTime->fFlags |= ~RTTIME_FLAGS_TYPE_UTC; + pTime->offUTC = 0; + } + else if ( *pszString == '+' + || *pszString == '-') + { + rc = RTStrToInt32Ex(pszString, (char **)&pszString, 10, &pTime->offUTC); + if (rc != VINF_SUCCESS && rc != VWRN_TRAILING_CHARS && rc != VWRN_TRAILING_SPACES) + return NULL; + } + /* else: No time zone given, local with offUTC = 0. */ + + /* + * The rest of the string should be blanks. + */ + char ch; + while ((ch = *pszString++) != '\0') + if (!RT_C_IS_BLANK(ch)) + return NULL; + + return pTime; +} +RT_EXPORT_SYMBOL(RTTimeFromString); + + +/** + * Attempts to convert an ISO date string to a time structure. + * + * We're a little forgiving with zero padding, unspecified parts, and leading + * and trailing spaces. + * + * @retval pTime on success, + * @retval NULL on failure. + * @param pTime The time spec. + * @param pszString The ISO date string to convert. + */ +RTDECL(PRTTIMESPEC) RTTimeSpecFromString(PRTTIMESPEC pTime, const char *pszString) +{ + RTTIME Time; + if (RTTimeFromString(&Time, pszString)) + return RTTimeImplode(pTime, &Time); + return NULL; +} +RT_EXPORT_SYMBOL(RTTimeSpecFromString); + --- linux-raspi2-4.2.0.orig/ubuntu/vbox/vboxguest/do_Module.symvers +++ linux-raspi2-4.2.0/ubuntu/vbox/vboxguest/do_Module.symvers @@ -0,0 +1,33 @@ +#!/bin/sh + +# +# This script is used when building kernel modules from DKMS. I don't +# know how to solve the problem of inter-module dependencies better. +# +# Copyright (C) 2008-2015 Oracle Corporation +# +# This file is part of VirtualBox Open Source Edition (OSE), as +# available from http://www.virtualbox.org. This file is free software; +# you can redistribute it and/or modify it under the terms of the GNU +# General Public License (GPL) as published by the Free Software +# Foundation, in version 2 as it comes in the "COPYING" file of the +# VirtualBox OSE distribution. VirtualBox OSE is distributed in the +# hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. +# + +SYMFILE="/tmp/$1-Module.symvers" +case "$2" in + save) + if [ -f "$3" ]; then + cp "$3" "$SYMFILE" + fi + ;; + restore) + if [ -f "$SYMFILE" ]; then + cp "$SYMFILE" "$3" + fi + ;; + *) + echo "Usage: save|restore " + ;; +esac --- linux-raspi2-4.2.0.orig/ubuntu/vbox/vboxguest/generic/RTAssertShouldPanic-generic.c +++ linux-raspi2-4.2.0/ubuntu/vbox/vboxguest/generic/RTAssertShouldPanic-generic.c @@ -0,0 +1,44 @@ +/* $Id: RTAssertShouldPanic-generic.cpp $ */ +/** @file + * IPRT - Assertions, generic RTAssertShouldPanic. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + + +/******************************************************************************* +* Header Files * +*******************************************************************************/ +#include +#include "internal/iprt.h" + + +RTDECL(bool) RTAssertShouldPanic(void) +{ +#if 0 /* Enable this to not panic on assertions. (Make sure this code is used!) */ + return false; +#else + return RTAssertMayPanic(); +#endif +} +RT_EXPORT_SYMBOL(RTAssertShouldPanic); + --- linux-raspi2-4.2.0.orig/ubuntu/vbox/vboxguest/generic/RTLogWriteStdErr-stub-generic.c +++ linux-raspi2-4.2.0/ubuntu/vbox/vboxguest/generic/RTLogWriteStdErr-stub-generic.c @@ -0,0 +1,42 @@ +/* $Id: RTLogWriteStdErr-stub-generic.cpp $ */ +/** @file + * IPRT - Log To StdErr, Generic Dummy. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + + +/******************************************************************************* +* Header Files * +*******************************************************************************/ +#include +#include "internal/iprt.h" + + +RTDECL(void) RTLogWriteStdErr(const char *pch, size_t cb) +{ + NOREF(pch); + NOREF(cb); + return; +} +RT_EXPORT_SYMBOL(RTLogWriteStdErr); + --- linux-raspi2-4.2.0.orig/ubuntu/vbox/vboxguest/generic/RTLogWriteStdOut-stub-generic.c +++ linux-raspi2-4.2.0/ubuntu/vbox/vboxguest/generic/RTLogWriteStdOut-stub-generic.c @@ -0,0 +1,42 @@ +/* $Id: RTLogWriteStdOut-stub-generic.cpp $ */ +/** @file + * IPRT - Log To StdOut, Generic Dummy. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + + +/******************************************************************************* +* Header Files * +*******************************************************************************/ +#include +#include "internal/iprt.h" + + +RTDECL(void) RTLogWriteStdOut(const char *pch, size_t cb) +{ + NOREF(pch); + NOREF(cb); + return; +} +RT_EXPORT_SYMBOL(RTLogWriteStdOut); + --- linux-raspi2-4.2.0.orig/ubuntu/vbox/vboxguest/generic/RTMpGetCoreCount-generic.c +++ linux-raspi2-4.2.0/ubuntu/vbox/vboxguest/generic/RTMpGetCoreCount-generic.c @@ -0,0 +1,40 @@ +/* $Id: RTMpGetCoreCount-generic.cpp $ */ +/** @file + * IPRT - Multiprocessor, Generic RTMpGetCoreCount. + */ + +/* + * Copyright (C) 2013-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + + +/******************************************************************************* +* Header Files * +*******************************************************************************/ +#include +#include "internal/iprt.h" + + +RTDECL(RTCPUID) RTMpGetCoreCount(void) +{ + return RTMpGetCount(); +} +RT_EXPORT_SYMBOL(RTMpGetCoreCount); + --- linux-raspi2-4.2.0.orig/ubuntu/vbox/vboxguest/generic/RTSemEventMultiWait-2-ex-generic.c +++ linux-raspi2-4.2.0/ubuntu/vbox/vboxguest/generic/RTSemEventMultiWait-2-ex-generic.c @@ -0,0 +1,53 @@ +/* $Id: RTSemEventMultiWait-2-ex-generic.cpp $ */ +/** @file + * IPRT - RTSemEventMultiWait, implementation based on RTSemEventMultiWaitEx. + */ + +/* + * Copyright (C) 2010-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + + +/******************************************************************************* +* Header Files * +*******************************************************************************/ +#define LOG_GROUP RTLOGGROUP_SEM +#define RTSEMEVENTMULTI_WITHOUT_REMAPPING +#include +#include "internal/iprt.h" + +#include +#include + + +RTDECL(int) RTSemEventMultiWait(RTSEMEVENTMULTI hEventMultiSem, RTMSINTERVAL cMillies) +{ + int rc; + if (cMillies == RT_INDEFINITE_WAIT) + rc = RTSemEventMultiWaitEx(hEventMultiSem, RTSEMWAIT_FLAGS_RESUME | RTSEMWAIT_FLAGS_INDEFINITE, 0); + else + rc = RTSemEventMultiWaitEx(hEventMultiSem, + RTSEMWAIT_FLAGS_RESUME | RTSEMWAIT_FLAGS_RELATIVE | RTSEMWAIT_FLAGS_MILLISECS, + cMillies); + Assert(rc != VERR_INTERRUPTED); + return rc; +} +RT_EXPORT_SYMBOL(RTSemEventMultiWait); + --- linux-raspi2-4.2.0.orig/ubuntu/vbox/vboxguest/generic/RTSemEventMultiWaitNoResume-2-ex-generic.c +++ linux-raspi2-4.2.0/ubuntu/vbox/vboxguest/generic/RTSemEventMultiWaitNoResume-2-ex-generic.c @@ -0,0 +1,53 @@ +/* $Id: RTSemEventMultiWaitNoResume-2-ex-generic.cpp $ */ +/** @file + * IPRT - RTSemEventMultiWaitNoResume, generic implementation based + * on RTSemEventMultiWaitEx. + */ + +/* + * Copyright (C) 2010-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + + +/******************************************************************************* +* Header Files * +*******************************************************************************/ +#define LOG_GROUP RTLOGGROUP_SEM +#define RTSEMEVENTMULTI_WITHOUT_REMAPPING +#include +#include "internal/iprt.h" + +#include +#include + + +RTDECL(int) RTSemEventMultiWaitNoResume(RTSEMEVENTMULTI hEventMultiSem, RTMSINTERVAL cMillies) +{ + int rc; + if (cMillies == RT_INDEFINITE_WAIT) + rc = RTSemEventMultiWaitEx(hEventMultiSem, RTSEMWAIT_FLAGS_NORESUME | RTSEMWAIT_FLAGS_INDEFINITE, 0); + else + rc = RTSemEventMultiWaitEx(hEventMultiSem, + RTSEMWAIT_FLAGS_NORESUME | RTSEMWAIT_FLAGS_RELATIVE | RTSEMWAIT_FLAGS_MILLISECS, + cMillies); + return rc; +} +RT_EXPORT_SYMBOL(RTSemEventMultiWaitNoResume); + --- linux-raspi2-4.2.0.orig/ubuntu/vbox/vboxguest/generic/RTSemEventWait-2-ex-generic.c +++ linux-raspi2-4.2.0/ubuntu/vbox/vboxguest/generic/RTSemEventWait-2-ex-generic.c @@ -0,0 +1,53 @@ +/* $Id: RTSemEventWait-2-ex-generic.cpp $ */ +/** @file + * IPRT - RTSemEventWait, implementation based on RTSemEventWaitEx. + */ + +/* + * Copyright (C) 2010-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + + +/******************************************************************************* +* Header Files * +*******************************************************************************/ +#define LOG_GROUP RTLOGGROUP_SEM +#define RTSEMEVENT_WITHOUT_REMAPPING +#include +#include "internal/iprt.h" + +#include +#include + + +RTDECL(int) RTSemEventWait(RTSEMEVENT hEventSem, RTMSINTERVAL cMillies) +{ + int rc; + if (cMillies == RT_INDEFINITE_WAIT) + rc = RTSemEventWaitEx(hEventSem, RTSEMWAIT_FLAGS_RESUME | RTSEMWAIT_FLAGS_INDEFINITE, 0); + else + rc = RTSemEventWaitEx(hEventSem, + RTSEMWAIT_FLAGS_RESUME | RTSEMWAIT_FLAGS_RELATIVE | RTSEMWAIT_FLAGS_MILLISECS, + cMillies); + Assert(rc != VERR_INTERRUPTED); + return rc; +} +RT_EXPORT_SYMBOL(RTSemEventWait); + --- linux-raspi2-4.2.0.orig/ubuntu/vbox/vboxguest/generic/RTSemEventWaitNoResume-2-ex-generic.c +++ linux-raspi2-4.2.0/ubuntu/vbox/vboxguest/generic/RTSemEventWaitNoResume-2-ex-generic.c @@ -0,0 +1,53 @@ +/* $Id: RTSemEventWaitNoResume-2-ex-generic.cpp $ */ +/** @file + * IPRT - RTSemEventWaitNoResume, generic implementation based + * on RTSemEventWaitEx. + */ + +/* + * Copyright (C) 2010-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + + +/******************************************************************************* +* Header Files * +*******************************************************************************/ +#define LOG_GROUP RTLOGGROUP_SEM +#define RTSEMEVENT_WITHOUT_REMAPPING +#include +#include "internal/iprt.h" + +#include +#include + + +RTDECL(int) RTSemEventWaitNoResume(RTSEMEVENT hEventSem, RTMSINTERVAL cMillies) +{ + int rc; + if (cMillies == RT_INDEFINITE_WAIT) + rc = RTSemEventWaitEx(hEventSem, RTSEMWAIT_FLAGS_NORESUME | RTSEMWAIT_FLAGS_INDEFINITE, 0); + else + rc = RTSemEventWaitEx(hEventSem, + RTSEMWAIT_FLAGS_NORESUME | RTSEMWAIT_FLAGS_RELATIVE | RTSEMWAIT_FLAGS_MILLISECS, + cMillies); + return rc; +} +RT_EXPORT_SYMBOL(RTSemEventWaitNoResume); + --- linux-raspi2-4.2.0.orig/ubuntu/vbox/vboxguest/generic/errvars-generic.c +++ linux-raspi2-4.2.0/ubuntu/vbox/vboxguest/generic/errvars-generic.c @@ -0,0 +1,66 @@ +/* $Id: errvars-generic.cpp $ */ +/** @file + * IPRT - Save and Restore Error Variables, generic stub implementation. + */ + +/* + * Copyright (C) 2011-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + + +/******************************************************************************* +* Header Files * +*******************************************************************************/ +#include +#include "internal/iprt.h" + +#include +#include "internal/magics.h" + + + +RTDECL(PRTERRVARS) RTErrVarsSave(PRTERRVARS pVars) +{ + pVars->ai32Vars[0] = RTERRVARS_MAGIC; + return pVars; +} + + +RTDECL(void) RTErrVarsRestore(PCRTERRVARS pVars) +{ + Assert(pVars->ai32Vars[0] == RTERRVARS_MAGIC); +} + + +RTDECL(bool) RTErrVarsAreEqual(PCRTERRVARS pVars1, PCRTERRVARS pVars2) +{ + Assert(pVars1->ai32Vars[0] == RTERRVARS_MAGIC); + Assert(pVars2->ai32Vars[0] == RTERRVARS_MAGIC); + + return pVars1->ai32Vars[0] == pVars2->ai32Vars[0]; +} + + +RTDECL(bool) RTErrVarsHaveChanged(PCRTERRVARS pVars) +{ + Assert(pVars->ai32Vars[0] == RTERRVARS_MAGIC); + return false; +} + --- linux-raspi2-4.2.0.orig/ubuntu/vbox/vboxguest/generic/mppresent-generic.c +++ linux-raspi2-4.2.0/ubuntu/vbox/vboxguest/generic/mppresent-generic.c @@ -0,0 +1,61 @@ +/* $Id: mppresent-generic.cpp $ */ +/** @file + * IPRT - Multiprocessor, Stubs for the RTMp*Present* API. + */ + +/* + * Copyright (C) 2008-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + + +/******************************************************************************* +* Header Files * +*******************************************************************************/ +#include +#include "internal/iprt.h" + + +RTDECL(PRTCPUSET) RTMpGetPresentSet(PRTCPUSET pSet) +{ + return RTMpGetSet(pSet); +} +RT_EXPORT_SYMBOL(RTMpGetPresentSet); + + +RTDECL(RTCPUID) RTMpGetPresentCount(void) +{ + return RTMpGetCount(); +} +RT_EXPORT_SYMBOL(RTMpGetPresentCount); + + +RTDECL(RTCPUID) RTMpGetPresentCoreCount(void) +{ + return RTMpGetCoreCount(); +} +RT_EXPORT_SYMBOL(RTMpGetPresentCoreCount); + + +RTDECL(bool) RTMpIsCpuPresent(RTCPUID idCpu) +{ + return RTMpIsCpuPossible(idCpu); +} +RT_EXPORT_SYMBOL(RTMpIsCpuPresent); + --- linux-raspi2-4.2.0.orig/ubuntu/vbox/vboxguest/product-generated.h +++ linux-raspi2-4.2.0/ubuntu/vbox/vboxguest/product-generated.h @@ -0,0 +1,10 @@ +#ifndef ___product_generated_h___ +#define ___product_generated_h___ + +#define VBOX_VENDOR "Oracle Corporation" +#define VBOX_VENDOR_SHORT "Oracle" +#define VBOX_PRODUCT "Oracle VM VirtualBox" +#define VBOX_BUILD_PUBLISHER "_Ubuntu" +#define VBOX_C_YEAR "2015" + +#endif --- linux-raspi2-4.2.0.orig/ubuntu/vbox/vboxguest/revision-generated.h +++ linux-raspi2-4.2.0/ubuntu/vbox/vboxguest/revision-generated.h @@ -0,0 +1 @@ +#define VBOX_SVN_REV 101573 --- linux-raspi2-4.2.0.orig/ubuntu/vbox/vboxguest/version-generated.h +++ linux-raspi2-4.2.0/ubuntu/vbox/vboxguest/version-generated.h @@ -0,0 +1,13 @@ +#ifndef ___version_generated_h___ +#define ___version_generated_h___ + +#define VBOX_VERSION_MAJOR 5 +#define VBOX_VERSION_MINOR 0 +#define VBOX_VERSION_BUILD 0 +#define VBOX_VERSION_STRING_RAW "5.0.0" +#define VBOX_VERSION_STRING "5.0.0_Ubuntu" +#define VBOX_API_VERSION_STRING "5_0" + +#define VBOX_PRIVATE_BUILD_DESC "Private build by root" + +#endif --- linux-raspi2-4.2.0.orig/ubuntu/vbox/vboxsf/GenericRequest.c +++ linux-raspi2-4.2.0/ubuntu/vbox/vboxsf/GenericRequest.c @@ -0,0 +1,179 @@ +/* $Id: GenericRequest.cpp $ */ +/** @file + * VBoxGuestLibR0 - Generic VMMDev request management. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + +#include "VBGLInternal.h" +#include +#include +#include +#include + +DECLVBGL(int) VbglGRVerify (const VMMDevRequestHeader *pReq, size_t cbReq) +{ + size_t cbReqExpected; + + if (!pReq || cbReq < sizeof (VMMDevRequestHeader)) + { + dprintf(("VbglGRVerify: Invalid parameter: pReq = %p, cbReq = %zu\n", pReq, cbReq)); + return VERR_INVALID_PARAMETER; + } + + if (pReq->size > cbReq) + { + dprintf(("VbglGRVerify: request size %u > buffer size %zu\n", pReq->size, cbReq)); + return VERR_INVALID_PARAMETER; + } + + /* The request size must correspond to the request type. */ + cbReqExpected = vmmdevGetRequestSize(pReq->requestType); + + if (cbReq < cbReqExpected) + { + dprintf(("VbglGRVerify: buffer size %zu < expected size %zu\n", cbReq, cbReqExpected)); + return VERR_INVALID_PARAMETER; + } + + if (cbReqExpected == cbReq) + { + /* This is most likely a fixed size request, and in this case the request size + * must be also equal to the expected size. + */ + if (pReq->size != cbReqExpected) + { + dprintf(("VbglGRVerify: request size %u != expected size %zu\n", pReq->size, cbReqExpected)); + return VERR_INVALID_PARAMETER; + } + + return VINF_SUCCESS; + } + + /* + * This can be a variable size request. Check the request type and limit the size + * to VMMDEV_MAX_VMMDEVREQ_SIZE, which is max size supported by the host. + * + * Note: Keep this list sorted for easier human lookup! + */ + if ( pReq->requestType == VMMDevReq_ChangeMemBalloon +#ifdef VBOX_WITH_64_BITS_GUESTS + || pReq->requestType == VMMDevReq_HGCMCall32 + || pReq->requestType == VMMDevReq_HGCMCall64 +#else + || pReq->requestType == VMMDevReq_HGCMCall +#endif /* VBOX_WITH_64_BITS_GUESTS */ + || pReq->requestType == VMMDevReq_RegisterSharedModule + || pReq->requestType == VMMDevReq_ReportGuestUserState + || pReq->requestType == VMMDevReq_LogString + || pReq->requestType == VMMDevReq_SetPointerShape + || pReq->requestType == VMMDevReq_VideoSetVisibleRegion) + { + if (cbReq > VMMDEV_MAX_VMMDEVREQ_SIZE) + { + dprintf(("VbglGRVerify: VMMDevReq_LogString: buffer size %zu too big\n", cbReq)); + return VERR_BUFFER_OVERFLOW; /* @todo is this error code ok? */ + } + } + else + { + dprintf(("VbglGRVerify: request size %u > buffer size %zu\n", pReq->size, cbReq)); + return VERR_IO_BAD_LENGTH; /* @todo is this error code ok? */ + } + + return VINF_SUCCESS; +} + +DECLVBGL(int) VbglGRAlloc (VMMDevRequestHeader **ppReq, uint32_t cbSize, VMMDevRequestType reqType) +{ + VMMDevRequestHeader *pReq; + int rc = vbglR0Enter (); + + if (RT_FAILURE(rc)) + return rc; + + if (!ppReq || cbSize < sizeof (VMMDevRequestHeader)) + { + dprintf(("VbglGRAlloc: Invalid parameter: ppReq = %p, cbSize = %u\n", ppReq, cbSize)); + return VERR_INVALID_PARAMETER; + } + + pReq = (VMMDevRequestHeader *)VbglPhysHeapAlloc (cbSize); + if (!pReq) + { + AssertMsgFailed(("VbglGRAlloc: no memory\n")); + rc = VERR_NO_MEMORY; + } + else + { + memset(pReq, 0xAA, cbSize); + + pReq->size = cbSize; + pReq->version = VMMDEV_REQUEST_HEADER_VERSION; + pReq->requestType = reqType; + pReq->rc = VERR_GENERAL_FAILURE; + pReq->reserved1 = 0; + pReq->reserved2 = 0; + + *ppReq = pReq; + } + + return rc; +} + +DECLVBGL(int) VbglGRPerform (VMMDevRequestHeader *pReq) +{ + RTCCPHYS physaddr; + int rc = vbglR0Enter (); + + if (RT_FAILURE(rc)) + return rc; + + if (!pReq) + return VERR_INVALID_PARAMETER; + + physaddr = VbglPhysHeapGetPhysAddr (pReq); + if ( !physaddr + || (physaddr >> 32) != 0) /* Port IO is 32 bit. */ + { + rc = VERR_VBGL_INVALID_ADDR; + } + else + { + ASMOutU32(g_vbgldata.portVMMDev + VMMDEV_PORT_OFF_REQUEST, (uint32_t)physaddr); + /* Make the compiler aware that the host has changed memory. */ + ASMCompilerBarrier(); + rc = pReq->rc; + } + return rc; +} + +DECLVBGL(void) VbglGRFree (VMMDevRequestHeader *pReq) +{ + int rc = vbglR0Enter (); + + if (RT_FAILURE(rc)) + return; + + VbglPhysHeapFree (pReq); +} + --- linux-raspi2-4.2.0.orig/ubuntu/vbox/vboxsf/HGCM.c +++ linux-raspi2-4.2.0/ubuntu/vbox/vboxsf/HGCM.c @@ -0,0 +1,222 @@ +/* $Id: HGCM.cpp $ */ +/** @file + * VBoxGuestLib - Host-Guest Communication Manager. + * + * These public functions can be only used by other drivers. They all + * do an IOCTL to VBoxGuest via IDC. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + +/* Entire file is ifdef'ed with !VBGL_VBOXGUEST */ +#ifndef VBGL_VBOXGUEST + +#include "VBGLInternal.h" + +#include +#include +#include + +#define VBGL_HGCM_ASSERTMsg AssertReleaseMsg + +/** + * Initializes the HGCM VBGL bits. + * + * @return VBox status code. + */ +int vbglR0HGCMInit (void) +{ + return RTSemFastMutexCreate(&g_vbgldata.mutexHGCMHandle); +} + +/** + * Initializes the HGCM VBGL bits. + * + * @return VBox status code. + */ +int vbglR0HGCMTerminate (void) +{ + RTSemFastMutexDestroy(g_vbgldata.mutexHGCMHandle); + g_vbgldata.mutexHGCMHandle = NIL_RTSEMFASTMUTEX; + + return VINF_SUCCESS; +} + +DECLINLINE(int) vbglHandleHeapEnter (void) +{ + int rc = RTSemFastMutexRequest(g_vbgldata.mutexHGCMHandle); + + VBGL_HGCM_ASSERTMsg(RT_SUCCESS(rc), + ("Failed to request handle heap mutex, rc = %Rrc\n", rc)); + + return rc; +} + +DECLINLINE(void) vbglHandleHeapLeave (void) +{ + RTSemFastMutexRelease(g_vbgldata.mutexHGCMHandle); +} + +struct VBGLHGCMHANDLEDATA *vbglHGCMHandleAlloc (void) +{ + struct VBGLHGCMHANDLEDATA *p; + int rc = vbglHandleHeapEnter (); + uint32_t i; + + if (RT_FAILURE (rc)) + return NULL; + + p = NULL; + + /** Simple linear search in array. This will be called not so often, only connect/disconnect. + * @todo bitmap for faster search and other obvious optimizations. + */ + + for (i = 0; i < RT_ELEMENTS(g_vbgldata.aHGCMHandleData); i++) + { + if (!g_vbgldata.aHGCMHandleData[i].fAllocated) + { + p = &g_vbgldata.aHGCMHandleData[i]; + p->fAllocated = 1; + break; + } + } + + vbglHandleHeapLeave (); + + VBGL_HGCM_ASSERTMsg(p != NULL, + ("Not enough HGCM handles.\n")); + + return p; +} + +void vbglHGCMHandleFree (struct VBGLHGCMHANDLEDATA *pHandle) +{ + int rc; + + if (!pHandle) + return; + + rc = vbglHandleHeapEnter (); + + if (RT_FAILURE (rc)) + return; + + VBGL_HGCM_ASSERTMsg(pHandle->fAllocated, + ("Freeing not allocated handle.\n")); + + memset(pHandle, 0, sizeof (struct VBGLHGCMHANDLEDATA)); + vbglHandleHeapLeave (); + return; +} + +DECLVBGL(int) VbglHGCMConnect (VBGLHGCMHANDLE *pHandle, VBoxGuestHGCMConnectInfo *pData) +{ + int rc; + struct VBGLHGCMHANDLEDATA *pHandleData; + + if (!pHandle || !pData) + return VERR_INVALID_PARAMETER; + + pHandleData = vbglHGCMHandleAlloc(); + if (!pHandleData) + rc = VERR_NO_MEMORY; + else + { + rc = vbglDriverOpen (&pHandleData->driver); + if (RT_SUCCESS(rc)) + { + rc = vbglDriverIOCtl (&pHandleData->driver, VBOXGUEST_IOCTL_HGCM_CONNECT, pData, sizeof (*pData)); + if (RT_SUCCESS(rc)) + rc = pData->result; + if (RT_SUCCESS(rc)) + { + *pHandle = pHandleData; + return rc; + } + + vbglDriverClose (&pHandleData->driver); + } + + vbglHGCMHandleFree (pHandleData); + } + + return rc; +} + +DECLVBGL(int) VbglHGCMDisconnect (VBGLHGCMHANDLE handle, VBoxGuestHGCMDisconnectInfo *pData) +{ + int rc = VINF_SUCCESS; + + rc = vbglDriverIOCtl (&handle->driver, VBOXGUEST_IOCTL_HGCM_DISCONNECT, pData, sizeof (*pData)); + + vbglDriverClose (&handle->driver); + + vbglHGCMHandleFree (handle); + + return rc; +} + +DECLVBGL(int) VbglHGCMCall (VBGLHGCMHANDLE handle, VBoxGuestHGCMCallInfo *pData, uint32_t cbData) +{ + int rc = VINF_SUCCESS; + + VBGL_HGCM_ASSERTMsg(cbData >= sizeof (VBoxGuestHGCMCallInfo) + pData->cParms * sizeof (HGCMFunctionParameter), + ("cbData = %d, cParms = %d (calculated size %d)\n", cbData, pData->cParms, sizeof (VBoxGuestHGCMCallInfo) + pData->cParms * sizeof (VBoxGuestHGCMCallInfo))); + + rc = vbglDriverIOCtl (&handle->driver, VBOXGUEST_IOCTL_HGCM_CALL(cbData), pData, cbData); + + return rc; +} + +DECLVBGL(int) VbglHGCMCallUserData (VBGLHGCMHANDLE handle, VBoxGuestHGCMCallInfo *pData, uint32_t cbData) +{ + int rc = VINF_SUCCESS; + + VBGL_HGCM_ASSERTMsg(cbData >= sizeof (VBoxGuestHGCMCallInfo) + pData->cParms * sizeof (HGCMFunctionParameter), + ("cbData = %d, cParms = %d (calculated size %d)\n", cbData, pData->cParms, sizeof (VBoxGuestHGCMCallInfo) + pData->cParms * sizeof (VBoxGuestHGCMCallInfo))); + + rc = vbglDriverIOCtl (&handle->driver, VBOXGUEST_IOCTL_HGCM_CALL_USERDATA(cbData), pData, cbData); + + return rc; +} + + +DECLVBGL(int) VbglHGCMCallTimed (VBGLHGCMHANDLE handle, + VBoxGuestHGCMCallInfoTimed *pData, uint32_t cbData) +{ + int rc = VINF_SUCCESS; + + uint32_t cbExpected = sizeof (VBoxGuestHGCMCallInfoTimed) + + pData->info.cParms * sizeof (HGCMFunctionParameter); + VBGL_HGCM_ASSERTMsg(cbData >= cbExpected, + ("cbData = %d, cParms = %d (calculated size %d)\n", + cbData, pData->info.cParms, cbExpected)); + + rc = vbglDriverIOCtl (&handle->driver, VBOXGUEST_IOCTL_HGCM_CALL_TIMED(cbData), + pData, cbData); + + return rc; +} + +#endif /* !VBGL_VBOXGUEST */ + --- linux-raspi2-4.2.0.orig/ubuntu/vbox/vboxsf/Init.c +++ linux-raspi2-4.2.0/ubuntu/vbox/vboxsf/Init.c @@ -0,0 +1,308 @@ +/* $Id: Init.cpp $ */ +/** @file + * VBoxGuestLibR0 - Library initialization. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + +/******************************************************************************* +* Header Files * +*******************************************************************************/ +#define VBGL_DECL_DATA +#include "VBGLInternal.h" + +#include +#include +#include + +/******************************************************************************* +* Global Variables * +*******************************************************************************/ +/** The global VBGL instance data. */ +VBGLDATA g_vbgldata; + +/** + * Used by vbglQueryDriverInfo and VbglInit to try get the host feature mask and + * version information (g_vbgldata::hostVersion). + * + * This was first implemented by the host in 3.1 and we quietly ignore failures + * for that reason. + */ +static void vbglR0QueryHostVersion (void) +{ + VMMDevReqHostVersion *pReq; + + int rc = VbglGRAlloc ((VMMDevRequestHeader **) &pReq, sizeof (*pReq), VMMDevReq_GetHostVersion); + + if (RT_SUCCESS (rc)) + { + rc = VbglGRPerform (&pReq->header); + + if (RT_SUCCESS (rc)) + { + g_vbgldata.hostVersion = *pReq; + Log (("vbglR0QueryHostVersion: %u.%u.%ur%u %#x\n", + pReq->major, pReq->minor, pReq->build, pReq->revision, pReq->features)); + } + + VbglGRFree (&pReq->header); + } +} + +#ifndef VBGL_VBOXGUEST +/** + * The guest library uses lazy initialization for VMMDev port and memory, + * because these values are provided by the VBoxGuest driver and it might + * be loaded later than other drivers. + * + * The VbglEnter checks the current library status, tries to retrieve these + * values and fails if they are unavailable. + * + */ +static void vbglQueryDriverInfo (void) +{ + int rc = VINF_SUCCESS; + + rc = RTSemMutexRequest(g_vbgldata.mutexDriverInit, RT_INDEFINITE_WAIT); + + if (RT_FAILURE(rc)) + return; + + if (g_vbgldata.status == VbglStatusReady) + { + RTSemMutexRelease(g_vbgldata.mutexDriverInit); + return; + } + + rc = vbglDriverOpen(&g_vbgldata.driver); + + if (RT_SUCCESS(rc)) + { + /* + * Try query the port info. + */ + VBoxGuestPortInfo port; + + rc = vbglDriverIOCtl (&g_vbgldata.driver, + VBOXGUEST_IOCTL_GETVMMDEVPORT, &port, + sizeof (port)); + + if (RT_SUCCESS (rc)) + { + dprintf (("port = 0x%04X, mem = %p\n", port.portAddress, port.pVMMDevMemory)); + + g_vbgldata.portVMMDev = port.portAddress; + g_vbgldata.pVMMDevMemory = port.pVMMDevMemory; + + g_vbgldata.status = VbglStatusReady; + + vbglR0QueryHostVersion(); + } + } + RTSemMutexRelease(g_vbgldata.mutexDriverInit); + dprintf (("vbglQueryDriverInfo rc = %d\n", rc)); +} +#endif /* !VBGL_VBOXGUEST */ + +/** + * Checks if VBGL has been initialized. + * + * The client library, this will lazily complete the initialization. + * + * @return VINF_SUCCESS or VERR_VBGL_NOT_INITIALIZED. + */ +int vbglR0Enter (void) +{ + int rc; + +#ifndef VBGL_VBOXGUEST + if (g_vbgldata.status == VbglStatusInitializing) + { + vbglQueryDriverInfo (); + } +#endif + + rc = g_vbgldata.status == VbglStatusReady? VINF_SUCCESS: VERR_VBGL_NOT_INITIALIZED; + + // dprintf(("VbglEnter: rc = %d\n", rc)); + + return rc; +} + +int vbglInitCommon (void) +{ + int rc = VINF_SUCCESS; + + RT_ZERO(g_vbgldata); + + g_vbgldata.status = VbglStatusInitializing; + + rc = VbglPhysHeapInit (); + + if (RT_SUCCESS(rc)) + { + /* other subsystems, none yet */ + ; + } + else + { + LogRel(("vbglInitCommon: VbglPhysHeapInit failed. rc=%Rrc\n", rc)); + g_vbgldata.status = VbglStatusNotInitialized; + } + + dprintf(("vbglInitCommon: rc = %d\n", rc)); + + return rc; +} + +DECLVBGL(void) vbglTerminateCommon (void) +{ + VbglPhysHeapTerminate (); + g_vbgldata.status = VbglStatusNotInitialized; + + return; +} + +#ifdef VBGL_VBOXGUEST + +DECLVBGL(int) VbglInit (VBGLIOPORT portVMMDev, VMMDevMemory *pVMMDevMemory) +{ + int rc = VINF_SUCCESS; + +# ifdef RT_OS_WINDOWS /** @todo r=bird: this doesn't make sense. Is there something special going on on windows? */ + dprintf(("vbglInit: starts g_vbgldata.status %d\n", g_vbgldata.status)); + + if (g_vbgldata.status == VbglStatusInitializing + || g_vbgldata.status == VbglStatusReady) + { + /* Initialization is already in process. */ + return rc; + } +# else + dprintf(("vbglInit: starts\n")); +# endif + + rc = vbglInitCommon (); + + if (RT_SUCCESS(rc)) + { + g_vbgldata.portVMMDev = portVMMDev; + g_vbgldata.pVMMDevMemory = pVMMDevMemory; + + g_vbgldata.status = VbglStatusReady; + + vbglR0QueryHostVersion(); + } + else + { + g_vbgldata.status = VbglStatusNotInitialized; + } + + return rc; +} + +DECLVBGL(void) VbglTerminate (void) +{ + vbglTerminateCommon (); + + return; +} + + +#else /* !VBGL_VBOXGUEST */ + +DECLVBGL(int) VbglInit (void) +{ + int rc = VINF_SUCCESS; + + if (g_vbgldata.status == VbglStatusInitializing + || g_vbgldata.status == VbglStatusReady) + { + /* Initialization is already in process. */ + return rc; + } + + rc = vbglInitCommon (); + + if (RT_SUCCESS(rc)) + { + rc = RTSemMutexCreate(&g_vbgldata.mutexDriverInit); + if (RT_SUCCESS(rc)) + { + /* Try to obtain VMMDev port via IOCTL to VBoxGuest main driver. */ + vbglQueryDriverInfo (); + +# ifdef VBOX_WITH_HGCM + rc = vbglR0HGCMInit (); +# endif /* VBOX_WITH_HGCM */ + + if (RT_FAILURE(rc)) + { + RTSemMutexDestroy(g_vbgldata.mutexDriverInit); + g_vbgldata.mutexDriverInit = NIL_RTSEMMUTEX; + } + } + + if (RT_FAILURE(rc)) + { + vbglTerminateCommon (); + } + + } + + return rc; +} + +DECLVBGL(void) VbglTerminate (void) +{ +# ifdef VBOX_WITH_HGCM + vbglR0HGCMTerminate (); +# endif + + /* driver open could fail, which does not prevent VbglInit from succeeding, + * close the driver only if it is opened */ + if (vbglDriverIsOpened(&g_vbgldata.driver)) + vbglDriverClose(&g_vbgldata.driver); + RTSemMutexDestroy(g_vbgldata.mutexDriverInit); + g_vbgldata.mutexDriverInit = NIL_RTSEMMUTEX; + + /* note: do vbglTerminateCommon as a last step since it zeroez up the g_vbgldata + * conceptually, doing vbglTerminateCommon last is correct + * since this is the reverse order to how init is done */ + vbglTerminateCommon (); + + return; +} + +int vbglGetDriver(VBGLDRIVER **ppDriver) +{ + if (g_vbgldata.status != VbglStatusReady) + { + vbglQueryDriverInfo(); + if (g_vbgldata.status != VbglStatusReady) + return VERR_TRY_AGAIN; + } + *ppDriver = &g_vbgldata.driver; + return VINF_SUCCESS; +} + +#endif /* !VBGL_VBOXGUEST */ --- linux-raspi2-4.2.0.orig/ubuntu/vbox/vboxsf/Makefile +++ linux-raspi2-4.2.0/ubuntu/vbox/vboxsf/Makefile @@ -0,0 +1,92 @@ +KBUILD_EXTMOD=${srctree}/ubuntu/vbox +# +# VirtualBox Guest Additions Module Makefile. +# +# (For 2.6.x this file must be 'Makefile'!) +# +# Copyright (C) 2006-2011 Oracle Corporation +# +# This file is part of VirtualBox Open Source Edition (OSE), as +# available from http://www.virtualbox.org. This file is free software; +# you can redistribute it and/or modify it under the terms of the GNU +# General Public License (GPL) as published by the Free Software +# Foundation, in version 2 as it comes in the "COPYING" file of the +# VirtualBox OSE distribution. VirtualBox OSE is distributed in the +# hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. +# + +# Linux kbuild sets this to our source directory if we are called from there +obj ?= $(CURDIR) +include $(obj)/Makefile.include.header + +MOD_NAME = vboxsf +MOD_OBJS = \ + vfsmod.o \ + dirops.o \ + lnkops.o \ + regops.o \ + utils.o \ + GenericRequest.o \ + SysHlp.o \ + PhysHeap.o \ + Init.o \ + VMMDev.o \ + HGCM.o \ + VBoxGuestR0LibSharedFolders.o \ + VbglR0CanUsePhysPageList.o +ifeq ($(BUILD_TARGET_ARCH),x86) +MOD_OBJS += \ + divdi3.o \ + moddi3.o \ + udivdi3.o \ + umoddi3.o \ + qdivrem.o +endif + +MOD_INCL = \ + $(addprefix -I$(KBUILD_EXTMOD),/ /include /r0drv/linux) \ + $(addprefix -I$(KBUILD_EXTMOD)/vboxsf,/ /include /r0drv/linux) + +ifneq ($(wildcard $(KBUILD_EXTMOD)/vboxsf),) + MANGLING := $(KBUILD_EXTMOD)/vboxsf/include/VBox/VBoxGuestMangling.h +else + MANGLING := $(KBUILD_EXTMOD)/include/VBox/VBoxGuestMangling.h +endif + +MOD_DEFS = -DRT_OS_LINUX -DIN_RING0 -DIN_RT_R0 \ + -DIN_SUP_R0 -DVBOX -DVBOX_WITH_HGCM -DIN_MODULE -DIN_GUEST_R0 +# our module does not export any symbol +MOD_DEFS += -DRT_NO_EXPORT_SYMBOL +ifeq ($(BUILD_TARGET_ARCH),amd64) + MOD_DEFS += -DRT_ARCH_AMD64 -DVBOX_WITH_64_BITS_GUESTS +else + MOD_DEFS += -DRT_ARCH_X86 +endif + +ifeq ($(KERN_VERSION), 24) + MOD_CFLAGS = +else + MOD_CFLAGS = -Wno-declaration-after-statement -fshort-wchar -include $(MANGLING) + +# special hack for Fedora Core 6 2.6.18 (fc6), rhel5 2.6.18 (el5), +# ClarkConnect 4.3 (cc4) and ClarkConnect 5 (v5) + ifeq ($(KERNELRELEASE),) + MOD_EXTRA += $(foreach inc,$(KERN_INCL),\ + $(if $(wildcard $(inc)/linux/utsrelease.h),\ + $(if $(shell grep '"2.6.18.*fc6.*"' $(inc)/linux/utsrelease.h; \ + grep '"2.6.18.*el5.*"' $(inc)/linux/utsrelease.h; \ + grep '"2.6.18.*v5.*"' $(inc)/linux/utsrelease.h; \ + grep '"2.6.18.*cc4.*"' $(inc)/linux/utsrelease.h),\ + -DKERNEL_FC6,),)) + else + MOD_EXTRA += $(if $(shell echo "$(KERNELRELEASE)"|grep '2.6.18.*fc6.*';\ + echo "$(KERNELRELEASE)"|grep '2.6.18.*el5.*';\ + echo "$(KERNELRELEASE)"|grep '2.6.18.*v5.*';\ + echo "$(KERNELRELEASE)"|grep '2.6.18.*cc4.*'),\ + -DKERNEL_FC6,) + endif +endif + +MOD_CLEAN = . linux r0drv r0drv/linux + +include $(obj)/Makefile.include.footer --- linux-raspi2-4.2.0.orig/ubuntu/vbox/vboxsf/Makefile.include.footer +++ linux-raspi2-4.2.0/ubuntu/vbox/vboxsf/Makefile.include.footer @@ -0,0 +1,93 @@ +# +# VirtualBox Guest Additions kernel module Makefile, common parts. +# +# See Makefile.include.header for details of how to use this. +# +# Copyright (C) 2006-2015 Oracle Corporation +# +# This file is part of VirtualBox Open Source Edition (OSE), as +# available from http://www.virtualbox.org. This file is free software; +# you can redistribute it and/or modify it under the terms of the GNU +# General Public License (GPL) as published by the Free Software +# Foundation, in version 2 as it comes in the "COPYING" file of the +# VirtualBox OSE distribution. VirtualBox OSE is distributed in the +# hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. +# + +# override is required by the Debian guys +override MODULE = $(MOD_NAME) +OBJS = $(MOD_OBJS) + +ifneq ($(MAKECMDGOALS),clean) + +KBUILD_VERBOSE ?= 1 + +# +# Compiler options +# +ifndef INCL + INCL := $(addprefix -I,$(KERN_INCL) $(EXTRA_INCL)) + ifndef KBUILD_EXTMOD + KBUILD_EXTMOD := $(shell pwd) + endif + INCL += $(MOD_INCL) + export INCL +endif +KFLAGS := -D__KERNEL__ -DMODULE $(MOD_DEFS) +ifeq ($(BUILD_TYPE),debug) + KFLAGS += -DDEBUG -DDEBUG_$(subst $(subst _, ,_),_,$(USERNAME)) -DDEBUG_USERNAME=$(subst $(subst _, ,_),_,$(USERNAME)) +endif + +ifeq ($(KERN_VERSION), 24) +# +# 2.4 +# + +ifeq ($(BUILD_TARGET_ARCH),amd64) + KFLAGS += -mcmodel=kernel +endif + +CFLAGS := -O2 -DVBOX_LINUX_2_4 $(MOD_CFLAGS) $(INCL) $(KFLAGS) $(MOD_EXTRA) $(KDEBUG) +MODULE_EXT := o + +# 2.4 Module linking +$(MODULE).o: $(OBJS) + $(LD) -o $@ -r $(OBJS) + +.PHONY: $(MODULE) +all: $(MODULE) +$(MODULE): $(MODULE).o + +else +# +# 2.6 and later +# + +MODULE_EXT := ko + +$(MODULE)-y := $(OBJS) + +# build defs +EXTRA_CFLAGS += $(MOD_CFLAGS) $(INCL) $(KFLAGS) $(MOD_EXTRA) $(KDEBUG) + +all: $(MODULE) + +obj-m += $(MODULE).o + +# OL/UEK: disable module signing for external modules -- we don't have any private key +$(MODULE): + $(MAKE) KBUILD_VERBOSE=$(KBUILD_VERBOSE) CONFIG_MODULE_SIG= -C $(KERN_DIR) SUBDIRS=$(CURDIR) SRCROOT=$(CURDIR) modules + +endif + +install: $(MODULE) + @mkdir -p $(MODULE_DIR); \ + install -m 0664 -o root -g root $(MODULE).$(MODULE_EXT) $(MODULE_DIR); \ + PATH="$(PATH):/bin:/sbin" depmod -a; + +endif # eq($(MAKECMDGOALS),clean) + +# important: Don't remove Module.symvers! DKMS does 'make clean' before building ... +clean: + for f in $(MOD_CLEAN); do rm -f $$f/*.o $$f/.*.cmd $$f/.*.flags; done + rm -rf .$(MOD_NAME)* .tmp_ver* $(MOD_NAME).* Modules.symvers modules.order --- linux-raspi2-4.2.0.orig/ubuntu/vbox/vboxsf/Makefile.include.header +++ linux-raspi2-4.2.0/ubuntu/vbox/vboxsf/Makefile.include.header @@ -0,0 +1,173 @@ +# +# VirtualBox Guest Additions kernel module Makefile, common parts. +# +# (For 2.6.x, the main file must be called 'Makefile'!) +# +# Copyright (C) 2006-2015 Oracle Corporation +# +# This file is part of VirtualBox Open Source Edition (OSE), as +# available from http://www.virtualbox.org. This file is free software; +# you can redistribute it and/or modify it under the terms of the GNU +# General Public License (GPL) as published by the Free Software +# Foundation, in version 2 as it comes in the "COPYING" file of the +# VirtualBox OSE distribution. VirtualBox OSE is distributed in the +# hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. +# + +# +# These file should be included by the Makefiles for any kernel modules we +# build as part of the Guest Additions. The intended way of doing this is as +# follows: +# +# # Linux kbuild sets this to our source directory if we are called from +# # there +# obj ?= $(CURDIR) +# include $(obj)/Makefile.include.header +# MOD_NAME = +# MOD_OBJS = +# MOD_DEFS = +# MOD_INCL = +# MOD_CFLAGS = +# MOD_CLEAN = +# include $(obj)/Makefile.include.footer +# +# The kmk kBuild define KBUILD_TARGET_ARCH is available. +# + + +# +# First, figure out which architecture we're targeting and the build type. +# (We have to support basic cross building (ARCH=i386|x86_64).) +# While at it, warn about BUILD_* vars found to help with user problems. +# +ifeq ($(filter-out x86_64 amd64 AMD64,$(shell uname -m)),) + BUILD_TARGET_ARCH_DEF := amd64 +else + BUILD_TARGET_ARCH_DEF := x86 +endif +ifneq ($(filter-out amd64 x86,$(BUILD_TARGET_ARCH)),) + $(warning Ignoring unknown BUILD_TARGET_ARCH value '$(BUILD_TARGET_ARCH)'.) + BUILD_TARGET_ARCH := +endif +ifeq ($(BUILD_TARGET_ARCH),) + ifeq ($(ARCH),x86_64) + BUILD_TARGET_ARCH := amd64 + else + ifeq ($(ARCH),i386) + ifeq ($(CONFIG_X86_32),y) + BUILD_TARGET_ARCH := x86 + else + BUILD_TARGET_ARCH := amd64 + endif + else + ifeq ($(ARCH),x86) + ifeq ($(CONFIG_X86_32),y) + BUILD_TARGET_ARCH := x86 + else + BUILD_TARGET_ARCH := amd64 + endif + else + BUILD_TARGET_ARCH := $(BUILD_TARGET_ARCH_DEF) + endif + endif + endif +else + ifneq ($(BUILD_TARGET_ARCH),$(BUILD_TARGET_ARCH_DEF)) + $(warning Using BUILD_TARGET_ARCH='$(BUILD_TARGET_ARCH)' from the $(origin BUILD_TARGET_ARCH).) + endif +endif + +ifneq ($(filter-out release profile debug strict,$(BUILD_TYPE)),) + $(warning Ignoring unknown BUILD_TYPE value '$(BUILD_TYPE)'.) + BUILD_TYPE := +endif +ifeq ($(BUILD_TYPE),) + BUILD_TYPE := release +else + ifneq ($(BUILD_TYPE),release) + $(warning Using BUILD_TYPE='$(BUILD_TYPE)' from the $(origin BUILD_TYPE).) + endif +endif +ifeq ($(USERNAME),) + USERNAME := noname +endif + +ifneq ($(MAKECMDGOALS),clean) + +ifeq ($(KERNELRELEASE),) + + # + # building from this directory + # + + # kernel base directory + ifndef KERN_DIR + KERN_DIR := /lib/modules/$(shell uname -r)/build + ifneq ($(shell if test -d $(KERN_DIR); then echo yes; fi),yes) + KERN_DIR := /usr/src/linux + ifneq ($(shell if test -d $(KERN_DIR); then echo yes; fi),yes) + $(error Error: unable to find the sources of your current Linux kernel. \ + Specify KERN_DIR= and run Make again) + endif + $(warning Warning: using /usr/src/linux as the source directory of your \ + Linux kernel. If this is not correct, specify \ + KERN_DIR= and run Make again.) + endif + else + ifneq ($(shell if test -d $(KERN_DIR); then echo yes; fi),yes) + $(error Error: KERN_DIR does not point to a directory) + endif + endif + + # includes + ifndef KERN_INCL + KERN_INCL = $(KERN_DIR)/include + endif + ifneq ($(shell if test -d $(KERN_INCL); then echo yes; fi),yes) + $(error Error: unable to find the include directory for your current Linux \ + kernel. Specify KERN_INCL= and run Make again) + endif + + # module install dir, only for current kernel + ifneq ($(filter install install_rpm,$(MAKECMDGOALS)),) + ifndef MODULE_DIR + MODULE_DIR_TST := /lib/modules/$(shell uname -r) + ifeq ($(shell if test -d $(MODULE_DIR_TST); then echo yes; fi),yes) + MODULE_DIR := $(MODULE_DIR_TST)/misc + else + $(error Unable to find the folder to install the module to) + endif + endif # MODULE_DIR unspecified + endif + + # guess kernel version (24 or 26) + ifeq ($(shell if grep '"2\.4\.' $(KERN_INCL)/linux/version.h > /dev/null; then echo yes; fi),yes) + KERN_VERSION := 24 + else + KERN_VERSION := 26 + endif + +else # neq($(KERNELRELEASE),) + + # + # building from kbuild (make -C M=`pwd`) + # + + # guess kernel version (24 or 26) + ifeq ($(shell if echo "$(VERSION).$(PATCHLEVEL)." | grep '2\.4\.' > /dev/null; then echo yes; fi),yes) + KERN_VERSION := 24 + else + KERN_VERSION := 26 + endif + +endif # neq($(KERNELRELEASE),) + +# debug - show guesses. +ifdef DEBUG +$(warning dbg: KERN_DIR = $(KERN_DIR)) +$(warning dbg: KERN_INCL = $(KERN_INCL)) +$(warning dbg: MODULE_DIR = $(MODULE_DIR)) +$(warning dbg: KERN_VERSION = $(KERN_VERSION)) +endif + +endif # eq($(MAKECMDGOALS),clean) --- linux-raspi2-4.2.0.orig/ubuntu/vbox/vboxsf/PhysHeap.c +++ linux-raspi2-4.2.0/ubuntu/vbox/vboxsf/PhysHeap.c @@ -0,0 +1,636 @@ +/* $Id: PhysHeap.cpp $ */ +/** @file + * VBoxGuestLibR0 - Physical memory heap. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + +#include "VBGLInternal.h" + +#include +#include +#include + +/* Physical memory heap consists of double linked list + * of chunks. Memory blocks are allocated inside these chunks + * and are members of Allocated and Free double linked lists. + * + * When allocating a block, we search in Free linked + * list for a suitable free block. If there is no such block, + * a new chunk is allocated and the new block is taken from + * the new chunk as the only chunk-sized free block. + * Allocated block is excluded from the Free list and goes to + * Alloc list. + * + * When freeing block, we check the pointer and then + * exclude block from Alloc list and move it to free list. + * + * For each chunk we maintain the allocated blocks counter. + * if 2 (or more) entire chunks are free they are immediately + * deallocated, so we always have at most 1 free chunk. + * + * When freeing blocks, two subsequent free blocks are always + * merged together. Current implementation merges blocks only + * when there is a block after the just freed one. + * + */ + +#define VBGL_PH_ASSERT Assert +#define VBGL_PH_ASSERTMsg AssertMsg + +// #define DUMPHEAP + +#ifdef DUMPHEAP +# define VBGL_PH_dprintf(a) RTAssertMsg2Weak a +#else +# define VBGL_PH_dprintf(a) +#endif + +/* Heap block signature */ +#define VBGL_PH_BLOCKSIGNATURE (0xADDBBBBB) + + +/* Heap chunk signature */ +#define VBGL_PH_CHUNKSIGNATURE (0xADDCCCCC) +/* Heap chunk allocation unit */ +#define VBGL_PH_CHUNKSIZE (0x10000) + +/* Heap block bit flags */ +#define VBGL_PH_BF_ALLOCATED (0x1) + +struct _VBGLPHYSHEAPBLOCK +{ + uint32_t u32Signature; + + /* Size of user data in the block. Does not include the block header. */ + uint32_t cbDataSize; + + uint32_t fu32Flags; + + struct _VBGLPHYSHEAPBLOCK *pNext; + struct _VBGLPHYSHEAPBLOCK *pPrev; + + struct _VBGLPHYSHEAPCHUNK *pChunk; +}; + +struct _VBGLPHYSHEAPCHUNK +{ + uint32_t u32Signature; + + /* Size of the chunk. Includes the chunk header. */ + uint32_t cbSize; + + /* Physical address of the chunk */ + uint32_t physAddr; + + /* Number of allocated blocks in the chunk */ + int32_t cAllocatedBlocks; + + struct _VBGLPHYSHEAPCHUNK *pNext; + struct _VBGLPHYSHEAPCHUNK *pPrev; +}; + + +#ifndef DUMPHEAP +#define dumpheap(a) +#else +void dumpheap (char *point) +{ + VBGL_PH_dprintf(("VBGL_PH dump at '%s'\n", point)); + + VBGL_PH_dprintf(("Chunks:\n")); + + VBGLPHYSHEAPCHUNK *pChunk = g_vbgldata.pChunkHead; + + while (pChunk) + { + VBGL_PH_dprintf(("%p: pNext = %p, pPrev = %p, sign = %08X, size = %8d, allocated = %8d, phys = %08X\n", + pChunk, pChunk->pNext, pChunk->pPrev, pChunk->u32Signature, pChunk->cbSize, pChunk->cAllocatedBlocks, pChunk->physAddr)); + + pChunk = pChunk->pNext; + } + + VBGL_PH_dprintf(("Allocated blocks:\n")); + + VBGLPHYSHEAPBLOCK *pBlock = g_vbgldata.pAllocBlocksHead; + + while (pBlock) + { + VBGL_PH_dprintf(("%p: pNext = %p, pPrev = %p, sign = %08X, size = %8d, flags = %08X, pChunk = %p\n", + pBlock, pBlock->pNext, pBlock->pPrev, pBlock->u32Signature, pBlock->cbDataSize, pBlock->fu32Flags, pBlock->pChunk)); + + pBlock = pBlock->pNext; + } + + VBGL_PH_dprintf(("Free blocks:\n")); + + pBlock = g_vbgldata.pFreeBlocksHead; + + while (pBlock) + { + VBGL_PH_dprintf(("%p: pNext = %p, pPrev = %p, sign = %08X, size = %8d, flags = %08X, pChunk = %p\n", + pBlock, pBlock->pNext, pBlock->pPrev, pBlock->u32Signature, pBlock->cbDataSize, pBlock->fu32Flags, pBlock->pChunk)); + + pBlock = pBlock->pNext; + } + + VBGL_PH_dprintf(("VBGL_PH dump at '%s' done\n", point)); +} +#endif + + +DECLINLINE(void *) vbglPhysHeapBlock2Data (VBGLPHYSHEAPBLOCK *pBlock) +{ + return (void *)(pBlock? (char *)pBlock + sizeof (VBGLPHYSHEAPBLOCK): NULL); +} + +DECLINLINE(VBGLPHYSHEAPBLOCK *) vbglPhysHeapData2Block (void *p) +{ + VBGLPHYSHEAPBLOCK *pBlock = (VBGLPHYSHEAPBLOCK *)(p? (char *)p - sizeof (VBGLPHYSHEAPBLOCK): NULL); + + VBGL_PH_ASSERTMsg(pBlock == NULL || pBlock->u32Signature == VBGL_PH_BLOCKSIGNATURE, + ("pBlock->u32Signature = %08X\n", pBlock->u32Signature)); + + return pBlock; +} + +DECLINLINE(int) vbglPhysHeapEnter (void) +{ + int rc = RTSemFastMutexRequest(g_vbgldata.mutexHeap); + + VBGL_PH_ASSERTMsg(RT_SUCCESS(rc), + ("Failed to request heap mutex, rc = %Rrc\n", rc)); + + return rc; +} + +DECLINLINE(void) vbglPhysHeapLeave (void) +{ + RTSemFastMutexRelease(g_vbgldata.mutexHeap); +} + + +static void vbglPhysHeapInitBlock (VBGLPHYSHEAPBLOCK *pBlock, VBGLPHYSHEAPCHUNK *pChunk, uint32_t cbDataSize) +{ + VBGL_PH_ASSERT(pBlock != NULL); + VBGL_PH_ASSERT(pChunk != NULL); + + pBlock->u32Signature = VBGL_PH_BLOCKSIGNATURE; + pBlock->cbDataSize = cbDataSize; + pBlock->fu32Flags = 0; + pBlock->pNext = NULL; + pBlock->pPrev = NULL; + pBlock->pChunk = pChunk; +} + + +static void vbglPhysHeapInsertBlock (VBGLPHYSHEAPBLOCK *pInsertAfter, VBGLPHYSHEAPBLOCK *pBlock) +{ + VBGL_PH_ASSERTMsg(pBlock->pNext == NULL, + ("pBlock->pNext = %p\n", pBlock->pNext)); + VBGL_PH_ASSERTMsg(pBlock->pPrev == NULL, + ("pBlock->pPrev = %p\n", pBlock->pPrev)); + + if (pInsertAfter) + { + pBlock->pNext = pInsertAfter->pNext; + pBlock->pPrev = pInsertAfter; + + if (pInsertAfter->pNext) + { + pInsertAfter->pNext->pPrev = pBlock; + } + + pInsertAfter->pNext = pBlock; + } + else + { + /* inserting to head of list */ + pBlock->pPrev = NULL; + + if (pBlock->fu32Flags & VBGL_PH_BF_ALLOCATED) + { + pBlock->pNext = g_vbgldata.pAllocBlocksHead; + + if (g_vbgldata.pAllocBlocksHead) + { + g_vbgldata.pAllocBlocksHead->pPrev = pBlock; + } + + g_vbgldata.pAllocBlocksHead = pBlock; + } + else + { + pBlock->pNext = g_vbgldata.pFreeBlocksHead; + + if (g_vbgldata.pFreeBlocksHead) + { + g_vbgldata.pFreeBlocksHead->pPrev = pBlock; + } + + g_vbgldata.pFreeBlocksHead = pBlock; + } + } +} + +static void vbglPhysHeapExcludeBlock (VBGLPHYSHEAPBLOCK *pBlock) +{ + if (pBlock->pNext) + { + pBlock->pNext->pPrev = pBlock->pPrev; + } + else + { + /* this is tail of list but we do not maintain tails of block lists. + * so do nothing. + */ + ; + } + + if (pBlock->pPrev) + { + pBlock->pPrev->pNext = pBlock->pNext; + } + else + { + /* this is head of list but we do not maintain tails of block lists. */ + if (pBlock->fu32Flags & VBGL_PH_BF_ALLOCATED) + { + g_vbgldata.pAllocBlocksHead = pBlock->pNext; + } + else + { + g_vbgldata.pFreeBlocksHead = pBlock->pNext; + } + } + + pBlock->pNext = NULL; + pBlock->pPrev = NULL; +} + +static VBGLPHYSHEAPBLOCK *vbglPhysHeapChunkAlloc (uint32_t cbSize) +{ + RTCCPHYS physAddr; + VBGLPHYSHEAPCHUNK *pChunk; + VBGLPHYSHEAPBLOCK *pBlock; + VBGL_PH_dprintf(("Allocating new chunk of size %d\n", cbSize)); + + /* Compute chunk size to allocate */ + if (cbSize < VBGL_PH_CHUNKSIZE) + { + /* Includes case of block size 0 during initialization */ + cbSize = VBGL_PH_CHUNKSIZE; + } + else + { + /* Round up to next chunk size, which must be power of 2 */ + cbSize = (cbSize + (VBGL_PH_CHUNKSIZE - 1)) & ~(VBGL_PH_CHUNKSIZE - 1); + } + + physAddr = 0; + /* This function allocates physical contiguous memory (below 4GB) according to the IPRT docs. + * Address < 4G is required for the port IO. + */ + pChunk = (VBGLPHYSHEAPCHUNK *)RTMemContAlloc (&physAddr, cbSize); + + if (!pChunk) + { + LogRel(("vbglPhysHeapChunkAlloc: failed to alloc %u contiguous bytes.\n", cbSize)); + return NULL; + } + + AssertRelease(physAddr < _4G && physAddr + cbSize <= _4G); + + pChunk->u32Signature = VBGL_PH_CHUNKSIGNATURE; + pChunk->cbSize = cbSize; + pChunk->physAddr = (uint32_t)physAddr; + pChunk->cAllocatedBlocks = 0; + pChunk->pNext = g_vbgldata.pChunkHead; + pChunk->pPrev = NULL; + + /* Initialize the free block, which now occupies entire chunk. */ + pBlock = (VBGLPHYSHEAPBLOCK *)((char *)pChunk + sizeof (VBGLPHYSHEAPCHUNK)); + + vbglPhysHeapInitBlock (pBlock, pChunk, cbSize - sizeof (VBGLPHYSHEAPCHUNK) - sizeof (VBGLPHYSHEAPBLOCK)); + + vbglPhysHeapInsertBlock (NULL, pBlock); + + g_vbgldata.pChunkHead = pChunk; + + VBGL_PH_dprintf(("Allocated chunk %p, block = %p size=%x\n", pChunk, pBlock, cbSize)); + + return pBlock; +} + + +void vbglPhysHeapChunkDelete (VBGLPHYSHEAPCHUNK *pChunk) +{ + char *p; + VBGL_PH_ASSERT(pChunk != NULL); + VBGL_PH_ASSERTMsg(pChunk->u32Signature == VBGL_PH_CHUNKSIGNATURE, + ("pChunk->u32Signature = %08X\n", pChunk->u32Signature)); + + VBGL_PH_dprintf(("Deleting chunk %p size %x\n", pChunk, pChunk->cbSize)); + + /* first scan the chunk and exclude all blocks from lists */ + + p = (char *)pChunk + sizeof (VBGLPHYSHEAPCHUNK); + + while (p < (char *)pChunk + pChunk->cbSize) + { + VBGLPHYSHEAPBLOCK *pBlock = (VBGLPHYSHEAPBLOCK *)p; + + p += pBlock->cbDataSize + sizeof (VBGLPHYSHEAPBLOCK); + + vbglPhysHeapExcludeBlock (pBlock); + } + + VBGL_PH_ASSERTMsg(p == (char *)pChunk + pChunk->cbSize, + ("p = %p, (char *)pChunk + pChunk->cbSize = %p, pChunk->cbSize = %08X\n", + p, (char *)pChunk + pChunk->cbSize, pChunk->cbSize)); + + /* Exclude chunk from the chunk list */ + if (pChunk->pNext) + { + pChunk->pNext->pPrev = pChunk->pPrev; + } + else + { + /* we do not maintain tail */ + ; + } + + if (pChunk->pPrev) + { + pChunk->pPrev->pNext = pChunk->pNext; + } + else + { + /* the chunk was head */ + g_vbgldata.pChunkHead = pChunk->pNext; + } + + RTMemContFree (pChunk, pChunk->cbSize); +} + + +DECLVBGL(void *) VbglPhysHeapAlloc (uint32_t cbSize) +{ + VBGLPHYSHEAPBLOCK *pBlock, *iter; + int rc = vbglPhysHeapEnter (); + + if (RT_FAILURE(rc)) + return NULL; + + dumpheap ("pre alloc"); + + pBlock = NULL; + + /* If there are free blocks in the heap, look at them. */ + iter = g_vbgldata.pFreeBlocksHead; + + /* There will be not many blocks in the heap, so + * linear search would be fast enough. + */ + + while (iter) + { + if (iter->cbDataSize == cbSize) + { + /* exact match */ + pBlock = iter; + break; + } + + /* Looking for a free block with nearest size */ + if (iter->cbDataSize > cbSize) + { + if (pBlock) + { + if (iter->cbDataSize < pBlock->cbDataSize) + { + pBlock = iter; + } + } + else + { + pBlock = iter; + } + } + + iter = iter->pNext; + } + + if (!pBlock) + { + /* No free blocks, allocate a new chunk, + * the only free block of the chunk will + * be returned. + */ + pBlock = vbglPhysHeapChunkAlloc (cbSize); + } + + if (pBlock) + { + VBGL_PH_ASSERTMsg(pBlock->u32Signature == VBGL_PH_BLOCKSIGNATURE, + ("pBlock = %p, pBlock->u32Signature = %08X\n", pBlock, pBlock->u32Signature)); + VBGL_PH_ASSERTMsg((pBlock->fu32Flags & VBGL_PH_BF_ALLOCATED) == 0, + ("pBlock = %p, pBlock->fu32Flags = %08X\n", pBlock, pBlock->fu32Flags)); + + /* We have a free block, either found or allocated. */ + + if (pBlock->cbDataSize > 2*(cbSize + sizeof (VBGLPHYSHEAPBLOCK))) + { + /* Data will occupy less than a half of the block, + * the block should be split. + */ + iter = (VBGLPHYSHEAPBLOCK *)((char *)pBlock + sizeof (VBGLPHYSHEAPBLOCK) + cbSize); + + /* Init the new 'iter' block, initialized blocks are always marked as free. */ + vbglPhysHeapInitBlock (iter, pBlock->pChunk, pBlock->cbDataSize - cbSize - sizeof (VBGLPHYSHEAPBLOCK)); + + pBlock->cbDataSize = cbSize; + + /* Insert the new 'iter' block after the 'pBlock' in the free list */ + vbglPhysHeapInsertBlock (pBlock, iter); + } + + /* Exclude pBlock from free list */ + vbglPhysHeapExcludeBlock (pBlock); + + /* Mark as allocated */ + pBlock->fu32Flags |= VBGL_PH_BF_ALLOCATED; + + /* Insert to allocated list */ + vbglPhysHeapInsertBlock (NULL, pBlock); + + /* Adjust the chunk allocated blocks counter */ + pBlock->pChunk->cAllocatedBlocks++; + } + + dumpheap ("post alloc"); + + vbglPhysHeapLeave (); + VBGL_PH_dprintf(("VbglPhysHeapAlloc %x size %x\n", vbglPhysHeapBlock2Data (pBlock), pBlock->cbDataSize)); + + return vbglPhysHeapBlock2Data (pBlock); +} + +DECLVBGL(uint32_t) VbglPhysHeapGetPhysAddr (void *p) +{ + uint32_t physAddr = 0; + VBGLPHYSHEAPBLOCK *pBlock = vbglPhysHeapData2Block (p); + + if (pBlock) + { + VBGL_PH_ASSERTMsg((pBlock->fu32Flags & VBGL_PH_BF_ALLOCATED) != 0, + ("pBlock = %p, pBlock->fu32Flags = %08X\n", pBlock, pBlock->fu32Flags)); + + if (pBlock->fu32Flags & VBGL_PH_BF_ALLOCATED) + physAddr = pBlock->pChunk->physAddr + (uint32_t)((uintptr_t)p - (uintptr_t)pBlock->pChunk); + } + + return physAddr; +} + +DECLVBGL(void) VbglPhysHeapFree (void *p) +{ + VBGLPHYSHEAPBLOCK *pBlock; + VBGLPHYSHEAPBLOCK *pNeighbour; + + int rc = vbglPhysHeapEnter (); + if (RT_FAILURE(rc)) + return; + + dumpheap ("pre free"); + + pBlock = vbglPhysHeapData2Block (p); + + if (!pBlock) + { + vbglPhysHeapLeave (); + return; + } + + VBGL_PH_ASSERTMsg((pBlock->fu32Flags & VBGL_PH_BF_ALLOCATED) != 0, + ("pBlock = %p, pBlock->fu32Flags = %08X\n", pBlock, pBlock->fu32Flags)); + + /* Exclude from allocated list */ + vbglPhysHeapExcludeBlock (pBlock); + + dumpheap ("post exclude"); + + VBGL_PH_dprintf(("VbglPhysHeapFree %x size %x\n", p, pBlock->cbDataSize)); + + /* Mark as free */ + pBlock->fu32Flags &= ~VBGL_PH_BF_ALLOCATED; + + /* Insert to free list */ + vbglPhysHeapInsertBlock (NULL, pBlock); + + dumpheap ("post insert"); + + /* Adjust the chunk allocated blocks counter */ + pBlock->pChunk->cAllocatedBlocks--; + + VBGL_PH_ASSERT(pBlock->pChunk->cAllocatedBlocks >= 0); + + /* Check if we can merge 2 free blocks. To simplify heap maintenance, + * we will look at block after the just freed one. + * This will not prevent us from detecting free memory chunks. + * Also in most cases blocks are deallocated in reverse allocation order + * and in that case the merging will work. + */ + + pNeighbour = (VBGLPHYSHEAPBLOCK *)((char *)p + pBlock->cbDataSize); + + if ((char *)pNeighbour < (char *)pBlock->pChunk + pBlock->pChunk->cbSize + && (pNeighbour->fu32Flags & VBGL_PH_BF_ALLOCATED) == 0) + { + /* The next block is free as well. */ + + /* Adjust size of current memory block */ + pBlock->cbDataSize += pNeighbour->cbDataSize + sizeof (VBGLPHYSHEAPBLOCK); + + /* Exclude the next neighbour */ + vbglPhysHeapExcludeBlock (pNeighbour); + } + + dumpheap ("post merge"); + + /* now check if there are 2 or more free chunks */ + if (pBlock->pChunk->cAllocatedBlocks == 0) + { + VBGLPHYSHEAPCHUNK *pChunk = g_vbgldata.pChunkHead; + + uint32_t u32FreeChunks = 0; + + while (pChunk) + { + if (pChunk->cAllocatedBlocks == 0) + { + u32FreeChunks++; + } + + pChunk = pChunk->pNext; + } + + if (u32FreeChunks > 1) + { + /* Delete current chunk, it will also exclude all free blocks + * remaining in the chunk from the free list, so the pBlock + * will also be invalid after this. + */ + vbglPhysHeapChunkDelete (pBlock->pChunk); + } + } + + dumpheap ("post free"); + + vbglPhysHeapLeave (); +} + +DECLVBGL(int) VbglPhysHeapInit (void) +{ + int rc = VINF_SUCCESS; + + /* Allocate the first chunk of the heap. */ + VBGLPHYSHEAPBLOCK *pBlock = vbglPhysHeapChunkAlloc (0); + + if (!pBlock) + rc = VERR_NO_MEMORY; + + RTSemFastMutexCreate(&g_vbgldata.mutexHeap); + + return rc; +} + +DECLVBGL(void) VbglPhysHeapTerminate (void) +{ + while (g_vbgldata.pChunkHead) + { + vbglPhysHeapChunkDelete (g_vbgldata.pChunkHead); + } + + RTSemFastMutexDestroy(g_vbgldata.mutexHeap); +} + --- linux-raspi2-4.2.0.orig/ubuntu/vbox/vboxsf/SysHlp.c +++ linux-raspi2-4.2.0/ubuntu/vbox/vboxsf/SysHlp.c @@ -0,0 +1,351 @@ +/* $Id: SysHlp.cpp $ */ +/** @file + * VBoxGuestLibR0 - IDC with VBoxGuest and HGCM helpers. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + +#define LOG_GROUP LOG_GROUP_HGCM +#include + +#include +#include "SysHlp.h" + +#include + +#ifdef VBGL_VBOXGUEST + +#if !defined (RT_OS_WINDOWS) +# include +# include +#endif + + +/** + * Internal worker for locking a range of linear addresses. + * + * @returns VBox status code. + * @param ppvCtx Where to store context data. + * @param pv The start of the range. + * @param u32Size The size of the range. + * @param fWriteAccess Lock for read-write (true) or readonly (false). + * @param fFlags HGCM call flags, VBGLR0_HGCM_F_XXX. + */ +int vbglLockLinear (void **ppvCtx, void *pv, uint32_t u32Size, bool fWriteAccess, uint32_t fFlags) +{ + int rc = VINF_SUCCESS; +#ifndef RT_OS_WINDOWS + RTR0MEMOBJ MemObj = NIL_RTR0MEMOBJ; + uint32_t fAccess = RTMEM_PROT_READ | (fWriteAccess ? RTMEM_PROT_WRITE : 0); +#endif + + /* Zero size buffers shouldn't be locked. */ + if (u32Size == 0) + { + Assert(pv == NULL); +#ifdef RT_OS_WINDOWS + *ppvCtx = NULL; +#else + *ppvCtx = NIL_RTR0MEMOBJ; +#endif + return VINF_SUCCESS; + } + + /** @todo just use IPRT here. the extra allocation shouldn't matter much... + * Then we can move all this up one level even. */ +#ifdef RT_OS_WINDOWS + PMDL pMdl = IoAllocateMdl (pv, u32Size, FALSE, FALSE, NULL); + + if (pMdl == NULL) + { + rc = VERR_NOT_SUPPORTED; + AssertMsgFailed(("IoAllocateMdl %p %x failed!!\n", pv, u32Size)); + } + else + { + __try { + /* Calls to MmProbeAndLockPages must be enclosed in a try/except block. */ + MmProbeAndLockPages (pMdl, + /** @todo (fFlags & VBGLR0_HGCMCALL_F_MODE_MASK) == VBGLR0_HGCMCALL_F_USER? UserMode: KernelMode */ + KernelMode, + (fWriteAccess) ? IoModifyAccess : IoReadAccess); + + *ppvCtx = pMdl; + + } __except(EXCEPTION_EXECUTE_HANDLER) { + + IoFreeMdl (pMdl); + /** @todo */ + rc = VERR_INVALID_PARAMETER; + AssertMsgFailed(("MmProbeAndLockPages %p %x failed!!\n", pv, u32Size)); + } + } + +#else + /* + * Lock depending on context. + * + * Note: We will later use the memory object here to convert the HGCM + * linear buffer parameter into a physical page list. This is why + * we lock both kernel pages on all systems, even those where we + * know they aren't pageable. + */ + if ((fFlags & VBGLR0_HGCMCALL_F_MODE_MASK) == VBGLR0_HGCMCALL_F_USER) + rc = RTR0MemObjLockUser(&MemObj, (RTR3PTR)pv, u32Size, fAccess, NIL_RTR0PROCESS); + else + rc = RTR0MemObjLockKernel(&MemObj, pv, u32Size, fAccess); + if (RT_SUCCESS(rc)) + *ppvCtx = MemObj; + else + *ppvCtx = NIL_RTR0MEMOBJ; + +#endif + + return rc; +} + +void vbglUnlockLinear (void *pvCtx, void *pv, uint32_t u32Size) +{ +#ifdef RT_OS_WINDOWS + PMDL pMdl = (PMDL)pvCtx; + + Assert(pMdl); + if (pMdl != NULL) + { + MmUnlockPages (pMdl); + IoFreeMdl (pMdl); + } + +#else + RTR0MEMOBJ MemObj = (RTR0MEMOBJ)pvCtx; + int rc = RTR0MemObjFree(MemObj, false); + AssertRC(rc); + +#endif + + NOREF(pv); + NOREF(u32Size); +} + +#else /* !VBGL_VBOXGUEST */ + +# ifdef RT_OS_OS2 +# include /* for VBOXGUESTOS2IDCCONNECT */ +RT_C_DECLS_BEGIN +/* + * On OS/2 we'll do the connecting in the assembly code of the + * client driver, exporting a g_VBoxGuestIDC symbol containing + * the connection information obtained from the 16-bit IDC. + */ +extern VBOXGUESTOS2IDCCONNECT g_VBoxGuestIDC; +RT_C_DECLS_END +# endif + +# if !defined(RT_OS_OS2) \ + && !defined(RT_OS_WINDOWS) +RT_C_DECLS_BEGIN +extern DECLVBGL(void *) VBoxGuestIDCOpen (uint32_t *pu32Version); +extern DECLVBGL(void) VBoxGuestIDCClose (void *pvOpaque); +extern DECLVBGL(int) VBoxGuestIDCCall (void *pvOpaque, unsigned int iCmd, void *pvData, size_t cbSize, size_t *pcbReturn); +RT_C_DECLS_END +# endif + +bool vbglDriverIsOpened (VBGLDRIVER *pDriver) +{ +# ifdef RT_OS_WINDOWS + return pDriver->pFileObject != NULL; +# elif defined (RT_OS_OS2) + return pDriver->u32Session != UINT32_MAX && pDriver->u32Session != 0; +# else + return pDriver->pvOpaque != NULL; +# endif +} + +int vbglDriverOpen (VBGLDRIVER *pDriver) +{ +# ifdef RT_OS_WINDOWS + UNICODE_STRING uszDeviceName; + RtlInitUnicodeString (&uszDeviceName, L"\\Device\\VBoxGuest"); + + PDEVICE_OBJECT pDeviceObject = NULL; + PFILE_OBJECT pFileObject = NULL; + + NTSTATUS rc = IoGetDeviceObjectPointer (&uszDeviceName, FILE_ALL_ACCESS, + &pFileObject, &pDeviceObject); + + if (NT_SUCCESS (rc)) + { + Log(("vbglDriverOpen VBoxGuest successful pDeviceObject=%x\n", pDeviceObject)); + pDriver->pDeviceObject = pDeviceObject; + pDriver->pFileObject = pFileObject; + return VINF_SUCCESS; + } + /** @todo return RTErrConvertFromNtStatus(rc)! */ + Log(("vbglDriverOpen VBoxGuest failed with ntstatus=%x\n", rc)); + return rc; + +# elif defined (RT_OS_OS2) + /* + * Just check whether the connection was made or not. + */ + if ( g_VBoxGuestIDC.u32Version == VMMDEV_VERSION + && VALID_PTR(g_VBoxGuestIDC.u32Session) + && VALID_PTR(g_VBoxGuestIDC.pfnServiceEP)) + { + pDriver->u32Session = g_VBoxGuestIDC.u32Session; + return VINF_SUCCESS; + } + pDriver->u32Session = UINT32_MAX; + Log(("vbglDriverOpen: failed\n")); + return VERR_FILE_NOT_FOUND; + +# else + uint32_t u32VMMDevVersion; + pDriver->pvOpaque = VBoxGuestIDCOpen (&u32VMMDevVersion); + if ( pDriver->pvOpaque + && u32VMMDevVersion == VMMDEV_VERSION) + return VINF_SUCCESS; + + Log(("vbglDriverOpen: failed\n")); + return VERR_FILE_NOT_FOUND; +# endif +} + +# ifdef RT_OS_WINDOWS +static NTSTATUS vbglDriverIOCtlCompletion (IN PDEVICE_OBJECT DeviceObject, + IN PIRP Irp, + IN PVOID Context) +{ + Log(("VBGL completion %x\n", Irp)); + + KEVENT *pEvent = (KEVENT *)Context; + KeSetEvent (pEvent, IO_NO_INCREMENT, FALSE); + + return STATUS_MORE_PROCESSING_REQUIRED; +} +# endif + +int vbglDriverIOCtl (VBGLDRIVER *pDriver, uint32_t u32Function, void *pvData, uint32_t cbData) +{ + Log(("vbglDriverIOCtl: pDriver: %p, Func: %x, pvData: %p, cbData: %d\n", pDriver, u32Function, pvData, cbData)); + +# ifdef RT_OS_WINDOWS + KEVENT Event; + + KeInitializeEvent (&Event, NotificationEvent, FALSE); + + /* Have to use the IoAllocateIRP method because this code is generic and + * must work in any thread context. + * The IoBuildDeviceIoControlRequest, which was used here, does not work + * when APCs are disabled, for example. + */ + PIRP irp = IoAllocateIrp (pDriver->pDeviceObject->StackSize, FALSE); + + Log(("vbglDriverIOCtl: irp %p, IRQL = %d\n", irp, KeGetCurrentIrql())); + + if (irp == NULL) + { + Log(("vbglDriverIOCtl: IRP allocation failed!\n")); + return VERR_NO_MEMORY; + } + + /* + * Setup the IRP_MJ_DEVICE_CONTROL IRP. + */ + + PIO_STACK_LOCATION nextStack = IoGetNextIrpStackLocation (irp); + + nextStack->MajorFunction = IRP_MJ_DEVICE_CONTROL; + nextStack->MinorFunction = 0; + nextStack->DeviceObject = pDriver->pDeviceObject; + nextStack->Parameters.DeviceIoControl.OutputBufferLength = cbData; + nextStack->Parameters.DeviceIoControl.InputBufferLength = cbData; + nextStack->Parameters.DeviceIoControl.IoControlCode = u32Function; + nextStack->Parameters.DeviceIoControl.Type3InputBuffer = pvData; + + irp->AssociatedIrp.SystemBuffer = pvData; /* Output buffer. */ + irp->MdlAddress = NULL; + + /* A completion routine is required to signal the Event. */ + IoSetCompletionRoutine (irp, vbglDriverIOCtlCompletion, &Event, TRUE, TRUE, TRUE); + + NTSTATUS rc = IoCallDriver (pDriver->pDeviceObject, irp); + + if (NT_SUCCESS (rc)) + { + /* Wait the event to be signalled by the completion routine. */ + KeWaitForSingleObject (&Event, + Executive, + KernelMode, + FALSE, + NULL); + + rc = irp->IoStatus.Status; + + Log(("vbglDriverIOCtl: wait completed IRQL = %d\n", KeGetCurrentIrql())); + } + + IoFreeIrp (irp); + + if (rc != STATUS_SUCCESS) + Log(("vbglDriverIOCtl: ntstatus=%x\n", rc)); + + if (NT_SUCCESS(rc)) + return VINF_SUCCESS; + if (rc == STATUS_INVALID_PARAMETER) + return VERR_INVALID_PARAMETER; + if (rc == STATUS_INVALID_BUFFER_SIZE) + return VERR_OUT_OF_RANGE; + return VERR_VBGL_IOCTL_FAILED; + +# elif defined (RT_OS_OS2) + if ( pDriver->u32Session + && pDriver->u32Session == g_VBoxGuestIDC.u32Session) + return g_VBoxGuestIDC.pfnServiceEP(pDriver->u32Session, u32Function, pvData, cbData, NULL); + + Log(("vbglDriverIOCtl: No connection\n")); + return VERR_WRONG_ORDER; + +# else + return VBoxGuestIDCCall(pDriver->pvOpaque, u32Function, pvData, cbData, NULL); +# endif +} + +void vbglDriverClose (VBGLDRIVER *pDriver) +{ +# ifdef RT_OS_WINDOWS + Log(("vbglDriverClose pDeviceObject=%x\n", pDriver->pDeviceObject)); + ObDereferenceObject (pDriver->pFileObject); + pDriver->pFileObject = NULL; + pDriver->pDeviceObject = NULL; + +# elif defined (RT_OS_OS2) + pDriver->u32Session = 0; + +# else + VBoxGuestIDCClose (pDriver->pvOpaque); + pDriver->pvOpaque = NULL; +# endif +} + +#endif /* !VBGL_VBOXGUEST */ + --- linux-raspi2-4.2.0.orig/ubuntu/vbox/vboxsf/SysHlp.h +++ linux-raspi2-4.2.0/ubuntu/vbox/vboxsf/SysHlp.h @@ -0,0 +1,122 @@ +/* $Id: SysHlp.h $ */ +/** @file + * VBoxGuestLibR0 - System dependent helpers internal header. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + +#ifndef __VBoxGuestLib_SysHlp_h +#define __VBoxGuestLib_SysHlp_h + +#include + +#ifdef RT_OS_WINDOWS +# undef PAGE_SIZE +# undef PAGE_SHIFT +# if (_MSC_VER >= 1400) && !defined(VBOX_WITH_PATCHED_DDK) +# include +# define _InterlockedExchange _InterlockedExchange_StupidDDKVsCompilerCrap +# define _InterlockedExchangeAdd _InterlockedExchangeAdd_StupidDDKVsCompilerCrap +# define _InterlockedCompareExchange _InterlockedCompareExchange_StupidDDKVsCompilerCrap +# define _InterlockedAddLargeStatistic _InterlockedAddLargeStatistic_StupidDDKVsCompilerCrap +# pragma warning(disable : 4163) +RT_C_DECLS_BEGIN +# include +RT_C_DECLS_END +# pragma warning(default : 4163) +# undef _InterlockedExchange +# undef _InterlockedExchangeAdd +# undef _InterlockedCompareExchange +# undef _InterlockedAddLargeStatistic +# else +RT_C_DECLS_BEGIN +# include +RT_C_DECLS_END +# endif +/* XP DDK #defines ExFreePool to ExFreePoolWithTag. The latter does not exist on NT4, so... + * The same for ExAllocatePool. + */ +#undef ExAllocatePool +#undef ExFreePool +#endif + +typedef struct _VBGLDRIVER +{ +#ifdef RT_OS_WINDOWS + PDEVICE_OBJECT pDeviceObject; + PFILE_OBJECT pFileObject; +#elif defined (RT_OS_OS2) + uint32_t u32Session; /**< just for sanity checking. */ +#else /* PORTME */ + void *pvOpaque; +#endif +} VBGLDRIVER; + +int vbglLockLinear (void **ppvCtx, void *pv, uint32_t u32Size, bool fWriteAccess, uint32_t fFlags); +void vbglUnlockLinear (void *pvCtx, void *pv, uint32_t u32Size); + + +#ifndef VBGL_VBOXGUEST + +/** + * Open VBoxGuest driver. + * + * @param pDriver Pointer to the driver structure. + * + * @return VBox error code + */ +int vbglDriverOpen (VBGLDRIVER *pDriver); + +/** + * Answers whether the VBoxGuest driver is opened + * + * @param pDriver Pointer to the driver structure. + * + * @return true - if opened, false - otherwise + */ +bool vbglDriverIsOpened (VBGLDRIVER *pDriver); + +/** + * Call VBoxGuest driver. + * + * @param pDriver Pointer to the driver structure. + * @param u32Function Function code. + * @param pvData Pointer to supplied in/out data buffer. + * @param cbData Size of data buffer. + * + * @return VBox error code + */ +int vbglDriverIOCtl (VBGLDRIVER *pDriver, uint32_t u32Function, void *pvData, uint32_t cbData); + +/** + * Close VBoxGuest driver. + * + * @param pDriver Pointer to the driver structure. + * + * @return VBox error code + */ +void vbglDriverClose (VBGLDRIVER *pDriver); + +#endif + +#endif /* !__VBoxGuestLib_SysHlp_h */ + --- linux-raspi2-4.2.0.orig/ubuntu/vbox/vboxsf/VBGLInternal.h +++ linux-raspi2-4.2.0/ubuntu/vbox/vboxsf/VBGLInternal.h @@ -0,0 +1,171 @@ +/* $Id: VBGLInternal.h $ */ +/** @file + * VBoxGuestLibR0 - Internal header. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + +#ifndef ___VBoxGuestLib_VBGLInternal_h +#define ___VBoxGuestLib_VBGLInternal_h + +#include +#include +#include + +#include + + +#ifdef RT_OS_WINDOWS /** @todo dprintf() -> Log() */ +# if (defined(DEBUG) && !defined(NO_LOGGING)) || defined(LOG_ENABLED) +# define dprintf(a) RTLogBackdoorPrintf a +# else +# define dprintf(a) do {} while (0) +# endif +#else +# define dprintf(a) Log(a) +#endif + +#include "SysHlp.h" + +#pragma pack(4) /** @todo r=bird: What do we need packing for here? None of these structures are shared between drivers AFAIK. */ + +struct _VBGLPHYSHEAPBLOCK; +typedef struct _VBGLPHYSHEAPBLOCK VBGLPHYSHEAPBLOCK; +struct _VBGLPHYSHEAPCHUNK; +typedef struct _VBGLPHYSHEAPCHUNK VBGLPHYSHEAPCHUNK; + +#ifndef VBGL_VBOXGUEST +struct VBGLHGCMHANDLEDATA +{ + uint32_t fAllocated; + VBGLDRIVER driver; +}; +#endif + +enum VbglLibStatus +{ + VbglStatusNotInitialized = 0, + VbglStatusInitializing, + VbglStatusReady +}; + +/** + * Global VBGL ring-0 data. + * Lives in VbglR0Init.cpp. + */ +typedef struct _VBGLDATA +{ + enum VbglLibStatus status; + + VBGLIOPORT portVMMDev; + + VMMDevMemory *pVMMDevMemory; + + /** + * Physical memory heap data. + * @{ + */ + + VBGLPHYSHEAPBLOCK *pFreeBlocksHead; + VBGLPHYSHEAPBLOCK *pAllocBlocksHead; + VBGLPHYSHEAPCHUNK *pChunkHead; + + RTSEMFASTMUTEX mutexHeap; + /** @} */ + + /** + * The host version data. + */ + VMMDevReqHostVersion hostVersion; + + +#ifndef VBGL_VBOXGUEST + /** + * Handle for the main driver instance. + * @{ + */ + + RTSEMMUTEX mutexDriverInit; + + VBGLDRIVER driver; + + /** @} */ + + /** + * Fast heap for HGCM handles data. + * @{ + */ + + RTSEMFASTMUTEX mutexHGCMHandle; + + struct VBGLHGCMHANDLEDATA aHGCMHandleData[64]; + + /** @} */ +#endif +} VBGLDATA; + + +#pragma pack() + +#ifndef VBGL_DECL_DATA +extern VBGLDATA g_vbgldata; +#endif + +/** + * Internal macro for checking whether we can pass physical page lists to the + * host. + * + * ASSUMES that vbglR0Enter has been called already. + * + * @param a_fLocked For the windows shared folders workarounds. + * + * @remarks Disabled the PageList feature for locked memory on Windows, + * because a new MDL is created by VBGL to get the page addresses + * and the pages from the MDL are marked as dirty when they should not. + */ +#if defined(RT_OS_WINDOWS) +# define VBGLR0_CAN_USE_PHYS_PAGE_LIST(a_fLocked) \ + ( !(a_fLocked) && (g_vbgldata.hostVersion.features & VMMDEV_HVF_HGCM_PHYS_PAGE_LIST) ) +#else +# define VBGLR0_CAN_USE_PHYS_PAGE_LIST(a_fLocked) \ + ( !!(g_vbgldata.hostVersion.features & VMMDEV_HVF_HGCM_PHYS_PAGE_LIST) ) +#endif + +int vbglR0Enter (void); + +#ifdef VBOX_WITH_HGCM +# ifndef VBGL_VBOXGUEST +int vbglR0HGCMInit (void); +int vbglR0HGCMTerminate (void); +# endif +#endif /* VBOX_WITH_HGCM */ + +#ifndef VBGL_VBOXGUEST +/** + * Get a handle to the main VBoxGuest driver. + * @returns VERR_TRY_AGAIN if the main driver has not yet been loaded. + */ +int vbglGetDriver(VBGLDRIVER **ppDriver); +#endif + +#endif /* !___VBoxGuestLib_VBGLInternal_h */ + --- linux-raspi2-4.2.0.orig/ubuntu/vbox/vboxsf/VBoxGuestLog.h +++ linux-raspi2-4.2.0/ubuntu/vbox/vboxsf/VBoxGuestLog.h @@ -0,0 +1,59 @@ +/* $Id: VBoxGuestLog.h $ */ +/** @file + * VBoxGuestLibR0 - Guest Logging facility. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + +#ifndef __VBOXGUESTLOG__H +#define __VBOXGUESTLOG__H + +#ifndef RT_OS_WINDOWS +# error "Don't include this file." +#else /* RT_OS_WINDOWS */ +/* Save LOG_ENABLED state, because "VBox/rt/log.h" + * may undefine it for IN_RING0 code. + */ +# if (defined(DEBUG) && !defined(NO_LOGGING)) || defined(LOG_ENABLED) +# define __LOG_ENABLED_SAVED__ +# endif + +# if (defined(DEBUG) && !defined(NO_LOGGING)) || defined(LOG_ENABLED) +# ifdef VBOX_GUEST +# include +# undef Log +# define Log(a) RTLogBackdoorPrintf a +# else +# define Log(a) DbgPrint a +# endif +# else +# define Log(a) +# endif + +# ifdef __LOG_ENABLED_SAVED__ +# define LOG_ENABLED +# undef __LOG_ENABLED_SAVED__ +# endif + +#endif /* RT_OS_WINDOWS */ + +#endif /* !__VBOXGUESTLOG__H */ --- linux-raspi2-4.2.0.orig/ubuntu/vbox/vboxsf/VBoxGuestR0LibSharedFolders.c +++ linux-raspi2-4.2.0/ubuntu/vbox/vboxsf/VBoxGuestR0LibSharedFolders.c @@ -0,0 +1,866 @@ +/* $Id: VBoxGuestR0LibSharedFolders.c $ */ +/** @file + * VBoxGuestR0LibSharedFolders - Ring 0 Shared Folders calls. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + +/* Entire file is ifdef'ed with !VBGL_VBOXGUEST */ +#ifndef VBGL_VBOXGUEST + +/******************************************************************************* +* Header Files * +*******************************************************************************/ +#define LOG_GROUP LOG_GROUP_SHARED_FOLDERS +#ifdef RT_OS_LINUX +# include "VBoxGuestR0LibSharedFolders.h" +#else +# include "VBoxGuestR0LibSharedFolders.h" +#endif +#include +#include +#include +#include +#include + + +/******************************************************************************* +* Defined Constants And Macros * +*******************************************************************************/ +#define SHFL_CPARMS_SET_UTF8 0 +#define SHFL_CPARMS_SET_SYMLINKS 0 + +#define VBOX_INIT_CALL(a, b, c) \ + LogFunc(("%s, u32ClientID=%d\n", "SHFL_FN_" # b, \ + (c)->ulClientID)); \ + (a)->result = VINF_SUCCESS; \ + (a)->u32ClientID = (c)->ulClientID; \ + (a)->u32Function = SHFL_FN_##b; \ + (a)->cParms = SHFL_CPARMS_##b + + + +DECLVBGL(int) vboxInit (void) +{ + int rc = VINF_SUCCESS; + + rc = VbglInit (); + return rc; +} + +DECLVBGL(void) vboxUninit (void) +{ + VbglTerminate (); +} + +DECLVBGL(int) vboxConnect (PVBSFCLIENT pClient) +{ + int rc; + VBoxGuestHGCMConnectInfo data; + + pClient->handle = NULL; + + RT_ZERO(data); + data.result = VINF_SUCCESS; + data.Loc.type = VMMDevHGCMLoc_LocalHost_Existing; + strcpy (data.Loc.u.host.achName, "VBoxSharedFolders"); + + rc = VbglHGCMConnect (&pClient->handle, &data); + +/* Log(("VBOXSF: VBoxSF::vboxConnect: VbglHGCMConnect rc = %#x, result = %#x\n", + rc, data.result)); +*/ + if (RT_SUCCESS (rc)) + { + rc = data.result; + } + + if (RT_SUCCESS (rc)) + { + pClient->ulClientID = data.u32ClientID; + LogFunc(("u32ClientID=%d\n", pClient->ulClientID)); + } + return rc; +} + +DECLVBGL(void) vboxDisconnect (PVBSFCLIENT pClient) +{ + int rc; + VBoxGuestHGCMDisconnectInfo data; + + LogFunc(("u32ClientID=%d\n", pClient->ulClientID)); + if (pClient->handle == NULL) + return; /* not connected */ + + RT_ZERO(data); + data.result = VINF_SUCCESS; + data.u32ClientID = pClient->ulClientID; + + rc = VbglHGCMDisconnect (pClient->handle, &data); + NOREF(rc); +/* Log(("VBOXSF: VBoxSF::vboxDisconnect: " + "VbglHGCMDisconnect rc = %#x, result = %#x\n", rc, data.result)); +*/ + return; +} + +DECLVBGL(int) vboxCallQueryMappings (PVBSFCLIENT pClient, SHFLMAPPING paMappings[], + uint32_t *pcMappings) +{ + int rc = VINF_SUCCESS; + + VBoxSFQueryMappings data; + + VBOX_INIT_CALL(&data.callInfo, QUERY_MAPPINGS, pClient); + + data.flags.type = VMMDevHGCMParmType_32bit; + data.flags.u.value32 = SHFL_MF_UCS2; + + data.numberOfMappings.type = VMMDevHGCMParmType_32bit; + data.numberOfMappings.u.value32 = *pcMappings; + + data.mappings.type = VMMDevHGCMParmType_LinAddr; + data.mappings.u.Pointer.size = sizeof (SHFLMAPPING) * *pcMappings; + data.mappings.u.Pointer.u.linearAddr = (uintptr_t)&paMappings[0]; + +/* Log(("VBOXSF: in ifs difference %d\n", + (char *)&data.flags.type - (char *)&data.callInfo.cParms)); +*/ + rc = VbglHGCMCall (pClient->handle, &data.callInfo, sizeof (data)); + +/* + Log(("VBOXSF: VBoxSF::vboxCallQueryMappings: " + "VbglHGCMCall rc = %#x, result = %#x\n", rc, data.callInfo.result)); +*/ + if (RT_SUCCESS (rc)) + { + rc = data.callInfo.result; + } + + if (RT_SUCCESS (rc)) + { + *pcMappings = data.numberOfMappings.u.value32; + } + + return rc; +} + +DECLVBGL(int) vboxCallQueryMapName (PVBSFCLIENT pClient, SHFLROOT root, SHFLSTRING *pString, uint32_t size) +{ + int rc = VINF_SUCCESS; + + VBoxSFQueryMapName data; + + VBOX_INIT_CALL(&data.callInfo, QUERY_MAP_NAME, pClient); + + data.root.type = VMMDevHGCMParmType_32bit; + data.root.u.value32 = root; + + data.name.type = VMMDevHGCMParmType_LinAddr; + data.name.u.Pointer.size = size; + data.name.u.Pointer.u.linearAddr = (uintptr_t)pString; + + rc = VbglHGCMCall (pClient->handle, &data.callInfo, sizeof (data)); + +/* Log(("VBOXSF: VBoxSF::vboxCallQueryMapName: " + "VbglHGCMCall rc = %#x, result = %#x\n", rc, data.callInfo.result)); +*/ + if (RT_SUCCESS (rc)) + { + rc = data.callInfo.result; + } + + return rc; +} + +DECLVBGL(int) vboxCallMapFolder(PVBSFCLIENT pClient, PSHFLSTRING szFolderName, + PVBSFMAP pMap) +{ + int rc = VINF_SUCCESS; + + VBoxSFMapFolder data; + + VBOX_INIT_CALL(&data.callInfo, MAP_FOLDER, pClient); + + data.path.type = VMMDevHGCMParmType_LinAddr; + data.path.u.Pointer.size = ShflStringSizeOfBuffer (szFolderName); + data.path.u.Pointer.u.linearAddr = (uintptr_t)szFolderName; + + data.root.type = VMMDevHGCMParmType_32bit; + data.root.u.value32 = 0; + + data.delimiter.type = VMMDevHGCMParmType_32bit; + data.delimiter.u.value32 = RTPATH_DELIMITER; + + data.fCaseSensitive.type = VMMDevHGCMParmType_32bit; +#if defined(RT_OS_WINDOWS) || defined(RT_OS_OS2) + data.fCaseSensitive.u.value32 = 0; +#else + data.fCaseSensitive.u.value32 = 1; +#endif + + rc = VbglHGCMCall (pClient->handle, &data.callInfo, sizeof (data)); + +/* Log(("VBOXSF: VBoxSF::vboxCallMapFolder: " + "VbglHGCMCall rc = %#x, result = %#x\n", rc, data.callInfo.result)); +*/ + if (RT_SUCCESS (rc)) + { + pMap->root = data.root.u.value32; + rc = data.callInfo.result; + } + else if (rc == VERR_NOT_IMPLEMENTED) + { + /* try the legacy interface too; temporary to assure backwards compatibility */ + VBoxSFMapFolder_Old OldData; + + VBOX_INIT_CALL(&OldData.callInfo, MAP_FOLDER_OLD, pClient); + + OldData.path.type = VMMDevHGCMParmType_LinAddr; + OldData.path.u.Pointer.size = ShflStringSizeOfBuffer (szFolderName); + OldData.path.u.Pointer.u.linearAddr = (uintptr_t)szFolderName; + + OldData.root.type = VMMDevHGCMParmType_32bit; + OldData.root.u.value32 = 0; + + OldData.delimiter.type = VMMDevHGCMParmType_32bit; + OldData.delimiter.u.value32 = RTPATH_DELIMITER; + + rc = VbglHGCMCall (pClient->handle, &OldData.callInfo, sizeof (OldData)); + + if (RT_SUCCESS (rc)) + { + pMap->root = OldData.root.u.value32; + rc = OldData.callInfo.result; + } + } + return rc; +} + +DECLVBGL(int) vboxCallUnmapFolder(PVBSFCLIENT pClient, PVBSFMAP pMap) +{ + int rc = VINF_SUCCESS; + + VBoxSFUnmapFolder data; + + VBOX_INIT_CALL(&data.callInfo, UNMAP_FOLDER, pClient); + + data.root.type = VMMDevHGCMParmType_32bit; + data.root.u.value32 = pMap->root; + + rc = VbglHGCMCall (pClient->handle, &data.callInfo, sizeof (data)); + +/* Log(("VBOXSF: VBoxSF::vboxCallUnmapFolder: " + "VbglHGCMCall rc = %#x, result = %#x\n", rc, data.callInfo.result)); +*/ + if (RT_SUCCESS (rc)) + { + rc = data.callInfo.result; + } + return rc; +} + +DECLVBGL(int) vboxCallCreate (PVBSFCLIENT pClient, PVBSFMAP pMap, + PSHFLSTRING pParsedPath, PSHFLCREATEPARMS pCreateParms) +{ + /** @todo copy buffers to physical or mapped memory. */ + int rc = VINF_SUCCESS; + + VBoxSFCreate data; + + VBOX_INIT_CALL(&data.callInfo, CREATE, pClient); + + data.root.type = VMMDevHGCMParmType_32bit; + data.root.u.value32 = pMap->root; + + data.path.type = VMMDevHGCMParmType_LinAddr; + data.path.u.Pointer.size = ShflStringSizeOfBuffer (pParsedPath); + data.path.u.Pointer.u.linearAddr = (uintptr_t)pParsedPath; + + data.parms.type = VMMDevHGCMParmType_LinAddr; + data.parms.u.Pointer.size = sizeof (SHFLCREATEPARMS); + data.parms.u.Pointer.u.linearAddr = (uintptr_t)pCreateParms; + + rc = VbglHGCMCall (pClient->handle, &data.callInfo, sizeof (data)); + +/* Log(("VBOXSF: VBoxSF::vboxCallCreate: " + "VbglHGCMCall rc = %#x, result = %#x\n", rc, data.callInfo.result)); +*/ + if (RT_SUCCESS (rc)) + { + rc = data.callInfo.result; + } + return rc; +} + +DECLVBGL(int) vboxCallClose (PVBSFCLIENT pClient, PVBSFMAP pMap, SHFLHANDLE Handle) +{ + int rc = VINF_SUCCESS; + + VBoxSFClose data; + + VBOX_INIT_CALL(&data.callInfo, CLOSE, pClient); + + data.root.type = VMMDevHGCMParmType_32bit; + data.root.u.value32 = pMap->root; + + data.handle.type = VMMDevHGCMParmType_64bit; + data.handle.u.value64 = Handle; + + rc = VbglHGCMCall (pClient->handle, &data.callInfo, sizeof (data)); + +/* Log(("VBOXSF: VBoxSF::vboxCallClose: " + "VbglHGCMCall rc = %#x, result = %#x\n", rc, data.callInfo.result)); +*/ + if (RT_SUCCESS (rc)) + { + rc = data.callInfo.result; + } + + return rc; +} + +DECLVBGL(int) vboxCallRemove (PVBSFCLIENT pClient, PVBSFMAP pMap, + PSHFLSTRING pParsedPath, uint32_t flags) +{ + int rc = VINF_SUCCESS; + + VBoxSFRemove data; + + VBOX_INIT_CALL(&data.callInfo, REMOVE, pClient); + + data.root.type = VMMDevHGCMParmType_32bit; + data.root.u.value32 = pMap->root; + + data.path.type = VMMDevHGCMParmType_LinAddr_In; + data.path.u.Pointer.size = ShflStringSizeOfBuffer (pParsedPath); + data.path.u.Pointer.u.linearAddr = (uintptr_t)pParsedPath; + + data.flags.type = VMMDevHGCMParmType_32bit; + data.flags.u.value32 = flags; + + rc = VbglHGCMCall (pClient->handle, &data.callInfo, sizeof (data)); + +/* Log(("VBOXSF: VBoxSF::vboxCallRemove: " + "VbglHGCMCall rc = %#x, result = %#x\n", rc, data.callInfo.result)); +*/ + if (RT_SUCCESS (rc)) + { + rc = data.callInfo.result; + } + + return rc; +} + +DECLVBGL(int) vboxCallRename (PVBSFCLIENT pClient, PVBSFMAP pMap, + PSHFLSTRING pSrcPath, PSHFLSTRING pDestPath, uint32_t flags) +{ + int rc = VINF_SUCCESS; + + VBoxSFRename data; + + VBOX_INIT_CALL(&data.callInfo, RENAME, pClient); + + data.root.type = VMMDevHGCMParmType_32bit; + data.root.u.value32 = pMap->root; + + data.src.type = VMMDevHGCMParmType_LinAddr_In; + data.src.u.Pointer.size = ShflStringSizeOfBuffer (pSrcPath); + data.src.u.Pointer.u.linearAddr = (uintptr_t)pSrcPath; + + data.dest.type = VMMDevHGCMParmType_LinAddr_In; + data.dest.u.Pointer.size = ShflStringSizeOfBuffer (pDestPath); + data.dest.u.Pointer.u.linearAddr = (uintptr_t)pDestPath; + + data.flags.type = VMMDevHGCMParmType_32bit; + data.flags.u.value32 = flags; + + rc = VbglHGCMCall (pClient->handle, &data.callInfo, sizeof (data)); + +/* Log(("VBOXSF: VBoxSF::vboxCallRename: " + "VbglHGCMCall rc = %#x, result = %#x\n", rc, data.callInfo.result)); +*/ + if (RT_SUCCESS (rc)) + { + rc = data.callInfo.result; + } + return rc; +} + +DECLVBGL(int) vboxCallRead(PVBSFCLIENT pClient, PVBSFMAP pMap, SHFLHANDLE hFile, + uint64_t offset, uint32_t *pcbBuffer, uint8_t *pBuffer, bool fLocked) +{ + int rc = VINF_SUCCESS; + + VBoxSFRead data; + + VBOX_INIT_CALL(&data.callInfo, READ, pClient); + + data.root.type = VMMDevHGCMParmType_32bit; + data.root.u.value32 = pMap->root; + + data.handle.type = VMMDevHGCMParmType_64bit; + data.handle.u.value64 = hFile; + data.offset.type = VMMDevHGCMParmType_64bit; + data.offset.u.value64 = offset; + data.cb.type = VMMDevHGCMParmType_32bit; + data.cb.u.value32 = *pcbBuffer; + data.buffer.type = (fLocked) ? VMMDevHGCMParmType_LinAddr_Locked_Out : VMMDevHGCMParmType_LinAddr_Out; + data.buffer.u.Pointer.size = *pcbBuffer; + data.buffer.u.Pointer.u.linearAddr = (uintptr_t)pBuffer; + + rc = VbglHGCMCall (pClient->handle, &data.callInfo, sizeof (data)); + +/* Log(("VBOXSF: VBoxSF::vboxCallRead: " + "VbglHGCMCall rc = %#x, result = %#x\n", rc, data.callInfo.result)); +*/ + if (RT_SUCCESS (rc)) + { + rc = data.callInfo.result; + *pcbBuffer = data.cb.u.value32; + } + return rc; +} + +DECLVBGL(int) VbglR0SharedFolderReadPageList(PVBSFCLIENT pClient, PVBSFMAP pMap, SHFLHANDLE hFile, + uint64_t offset, uint32_t *pcbBuffer, + uint16_t offFirstPage, uint16_t cPages, RTGCPHYS64 *paPages) +{ + uint32_t cbToRead = *pcbBuffer; + uint32_t cbData = (uint32_t)(sizeof(VBoxSFRead) + RT_UOFFSETOF(HGCMPageListInfo, aPages[cPages])); + VBoxSFRead *pData = (VBoxSFRead *)RTMemTmpAlloc(cbData); + HGCMPageListInfo *pPgLst = (HGCMPageListInfo *)(pData + 1); + uint16_t iPage; + int rc; + + if (RT_UNLIKELY(!pData)) + return VERR_NO_TMP_MEMORY; + + VBOX_INIT_CALL(&pData->callInfo, READ, pClient); + + pData->root.type = VMMDevHGCMParmType_32bit; + pData->root.u.value32 = pMap->root; + + pData->handle.type = VMMDevHGCMParmType_64bit; + pData->handle.u.value64 = hFile; + pData->offset.type = VMMDevHGCMParmType_64bit; + pData->offset.u.value64 = offset; + pData->cb.type = VMMDevHGCMParmType_32bit; + pData->cb.u.value32 = cbToRead; + pData->buffer.type = VMMDevHGCMParmType_PageList; + pData->buffer.u.PageList.size = cbToRead; + pData->buffer.u.PageList.offset = sizeof(VBoxSFRead); + + pPgLst->flags = VBOX_HGCM_F_PARM_DIRECTION_FROM_HOST; + pPgLst->offFirstPage = offFirstPage; + pPgLst->cPages = cPages; + for (iPage = 0; iPage < cPages; iPage++) + pPgLst->aPages[iPage] = paPages[iPage]; + + rc = VbglHGCMCall(pClient->handle, &pData->callInfo, cbData); + if (RT_SUCCESS (rc)) + { + rc = pData->callInfo.result; + *pcbBuffer = pData->cb.u.value32; + } + + RTMemTmpFree(pData); + return rc; +} + +DECLVBGL(int) vboxCallWrite(PVBSFCLIENT pClient, PVBSFMAP pMap, SHFLHANDLE hFile, + uint64_t offset, uint32_t *pcbBuffer, uint8_t *pBuffer, bool fLocked) +{ + int rc = VINF_SUCCESS; + + VBoxSFWrite data; + + VBOX_INIT_CALL(&data.callInfo, WRITE, pClient); + + data.root.type = VMMDevHGCMParmType_32bit; + data.root.u.value32 = pMap->root; + + data.handle.type = VMMDevHGCMParmType_64bit; + data.handle.u.value64 = hFile; + data.offset.type = VMMDevHGCMParmType_64bit; + data.offset.u.value64 = offset; + data.cb.type = VMMDevHGCMParmType_32bit; + data.cb.u.value32 = *pcbBuffer; + data.buffer.type = (fLocked) ? VMMDevHGCMParmType_LinAddr_Locked_In : VMMDevHGCMParmType_LinAddr_In; + data.buffer.u.Pointer.size = *pcbBuffer; + data.buffer.u.Pointer.u.linearAddr = (uintptr_t)pBuffer; + + rc = VbglHGCMCall (pClient->handle, &data.callInfo, sizeof (data)); + +/* Log(("VBOXSF: VBoxSF::vboxCallWrite: " + "VbglHGCMCall rc = %#x, result = %#x\n", rc, data.callInfo.result)); +*/ + if (RT_SUCCESS (rc)) + { + rc = data.callInfo.result; + *pcbBuffer = data.cb.u.value32; + } + return rc; +} + +DECLVBGL(int) VbglR0SfWritePhysCont(PVBSFCLIENT pClient, PVBSFMAP pMap, SHFLHANDLE hFile, uint64_t offset, uint32_t *pcbBuffer, RTCCPHYS PhysBuffer) +{ + uint32_t cbToWrite = *pcbBuffer; + uint32_t cPages = RT_ALIGN_32((PhysBuffer & PAGE_OFFSET_MASK) + cbToWrite, PAGE_SIZE) >> PAGE_SHIFT; + uint32_t cbData = (uint32_t)(sizeof(VBoxSFWrite) + RT_UOFFSETOF(HGCMPageListInfo, aPages[cPages])); + VBoxSFWrite *pData = (VBoxSFWrite *)RTMemTmpAlloc(cbData); + HGCMPageListInfo *pPgLst = (HGCMPageListInfo *)(pData + 1); + uint32_t iPage; + int rc; + + if (RT_UNLIKELY(!pData)) + return VERR_NO_TMP_MEMORY; + + VBOX_INIT_CALL(&pData->callInfo, WRITE, pClient); + + pData->root.type = VMMDevHGCMParmType_32bit; + pData->root.u.value32 = pMap->root; + + pData->handle.type = VMMDevHGCMParmType_64bit; + pData->handle.u.value64 = hFile; + pData->offset.type = VMMDevHGCMParmType_64bit; + pData->offset.u.value64 = offset; + pData->cb.type = VMMDevHGCMParmType_32bit; + pData->cb.u.value32 = cbToWrite; + pData->buffer.type = VMMDevHGCMParmType_PageList; + pData->buffer.u.PageList.size = cbToWrite; + pData->buffer.u.PageList.offset = sizeof(VBoxSFWrite); + + pPgLst->flags = VBOX_HGCM_F_PARM_DIRECTION_TO_HOST; + pPgLst->offFirstPage = (uint16_t)(PhysBuffer & PAGE_OFFSET_MASK); + pPgLst->cPages = cPages; + PhysBuffer &= ~(RTCCPHYS)PAGE_OFFSET_MASK; + for (iPage = 0; iPage < cPages; iPage++, PhysBuffer += PAGE_SIZE) + pPgLst->aPages[iPage] = PhysBuffer; + + rc = VbglHGCMCall (pClient->handle, &pData->callInfo, cbData); + if (RT_SUCCESS (rc)) + { + rc = pData->callInfo.result; + *pcbBuffer = pData->cb.u.value32; + } + + RTMemTmpFree(pData); + return rc; + +} + +DECLVBGL(int) VbglR0SharedFolderWritePageList(PVBSFCLIENT pClient, PVBSFMAP pMap, SHFLHANDLE hFile, + uint64_t offset, uint32_t *pcbBuffer, + uint16_t offFirstPage, uint16_t cPages, RTGCPHYS64 *paPages) +{ + uint32_t cbToWrite = *pcbBuffer; + uint32_t cbData = (uint32_t)(sizeof(VBoxSFWrite) + RT_UOFFSETOF(HGCMPageListInfo, aPages[cPages])); + VBoxSFWrite *pData = (VBoxSFWrite *)RTMemTmpAlloc(cbData); + HGCMPageListInfo *pPgLst = (HGCMPageListInfo *)(pData + 1); + uint16_t iPage; + int rc; + + if (RT_UNLIKELY(!pData)) + return VERR_NO_TMP_MEMORY; + + VBOX_INIT_CALL(&pData->callInfo, WRITE, pClient); + + pData->root.type = VMMDevHGCMParmType_32bit; + pData->root.u.value32 = pMap->root; + + pData->handle.type = VMMDevHGCMParmType_64bit; + pData->handle.u.value64 = hFile; + pData->offset.type = VMMDevHGCMParmType_64bit; + pData->offset.u.value64 = offset; + pData->cb.type = VMMDevHGCMParmType_32bit; + pData->cb.u.value32 = cbToWrite; + pData->buffer.type = VMMDevHGCMParmType_PageList; + pData->buffer.u.PageList.size = cbToWrite; + pData->buffer.u.PageList.offset = sizeof(VBoxSFWrite); + + pPgLst->flags = VBOX_HGCM_F_PARM_DIRECTION_TO_HOST; + pPgLst->offFirstPage = offFirstPage; + pPgLst->cPages = cPages; + for (iPage = 0; iPage < cPages; iPage++) + pPgLst->aPages[iPage] = paPages[iPage]; + + rc = VbglHGCMCall (pClient->handle, &pData->callInfo, cbData); + if (RT_SUCCESS (rc)) + { + rc = pData->callInfo.result; + *pcbBuffer = pData->cb.u.value32; + } + + RTMemTmpFree(pData); + return rc; +} + +DECLVBGL(int) vboxCallFlush(PVBSFCLIENT pClient, PVBSFMAP pMap, SHFLHANDLE hFile) +{ + int rc = VINF_SUCCESS; + + VBoxSFFlush data; + + VBOX_INIT_CALL(&data.callInfo, FLUSH, pClient); + + data.root.type = VMMDevHGCMParmType_32bit; + data.root.u.value32 = pMap->root; + + data.handle.type = VMMDevHGCMParmType_64bit; + data.handle.u.value64 = hFile; + + rc = VbglHGCMCall (pClient->handle, &data.callInfo, sizeof (data)); + +/* Log(("VBOXSF: VBoxSF::vboxCallFlush: " + "VbglHGCMCall rc = %#x, result = %#x\n", rc, data.callInfo.result)); +*/ + if (RT_SUCCESS (rc)) + { + rc = data.callInfo.result; + } + return rc; +} + +DECLVBGL(int) vboxCallDirInfo ( + PVBSFCLIENT pClient, + PVBSFMAP pMap, + SHFLHANDLE hFile, + PSHFLSTRING ParsedPath, + uint32_t flags, + uint32_t index, + uint32_t *pcbBuffer, + PSHFLDIRINFO pBuffer, + uint32_t *pcFiles) +{ + int rc = VINF_SUCCESS; + + VBoxSFList data; + + VBOX_INIT_CALL(&data.callInfo, LIST, pClient); + + data.root.type = VMMDevHGCMParmType_32bit; + data.root.u.value32 = pMap->root; + + data.handle.type = VMMDevHGCMParmType_64bit; + data.handle.u.value64 = hFile; + data.flags.type = VMMDevHGCMParmType_32bit; + data.flags.u.value32 = flags; + data.cb.type = VMMDevHGCMParmType_32bit; + data.cb.u.value32 = *pcbBuffer; + data.path.type = VMMDevHGCMParmType_LinAddr_In; + data.path.u.Pointer.size = + (ParsedPath) ? ShflStringSizeOfBuffer(ParsedPath) : 0; + data.path.u.Pointer.u.linearAddr = (uintptr_t) ParsedPath; + + data.buffer.type = VMMDevHGCMParmType_LinAddr_Out; + data.buffer.u.Pointer.size = *pcbBuffer; + data.buffer.u.Pointer.u.linearAddr = (uintptr_t)pBuffer; + + data.resumePoint.type = VMMDevHGCMParmType_32bit; + data.resumePoint.u.value32 = index; + data.cFiles.type = VMMDevHGCMParmType_32bit; + data.cFiles.u.value32 = 0; /* out parameters only */ + + rc = VbglHGCMCall (pClient->handle, &data.callInfo, sizeof (data)); + +/* Log(("VBOXSF: VBoxSF::vboxCallDirInfo: " + "VbglHGCMCall rc = %#x, result = %#x\n", rc, data.callInfo.result)); +*/ + if (RT_SUCCESS (rc)) + { + rc = data.callInfo.result; + } + *pcbBuffer = data.cb.u.value32; + *pcFiles = data.cFiles.u.value32; + return rc; +} + +DECLVBGL(int) vboxCallFSInfo(PVBSFCLIENT pClient, PVBSFMAP pMap, SHFLHANDLE hFile, + uint32_t flags, uint32_t *pcbBuffer, PSHFLDIRINFO pBuffer) +{ + int rc = VINF_SUCCESS; + + VBoxSFInformation data; + + VBOX_INIT_CALL(&data.callInfo, INFORMATION, pClient); + + data.root.type = VMMDevHGCMParmType_32bit; + data.root.u.value32 = pMap->root; + + data.handle.type = VMMDevHGCMParmType_64bit; + data.handle.u.value64 = hFile; + data.flags.type = VMMDevHGCMParmType_32bit; + data.flags.u.value32 = flags; + data.cb.type = VMMDevHGCMParmType_32bit; + data.cb.u.value32 = *pcbBuffer; + data.info.type = VMMDevHGCMParmType_LinAddr; + data.info.u.Pointer.size = *pcbBuffer; + data.info.u.Pointer.u.linearAddr = (uintptr_t)pBuffer; + + rc = VbglHGCMCall (pClient->handle, &data.callInfo, sizeof (data)); + +/* Log(("VBOXSF: VBoxSF::vboxCallFileInfo: " + "VbglHGCMCall rc = %#x, result = %#x\n", rc, data.callInfo.result)); +*/ + if (RT_SUCCESS (rc)) + { + rc = data.callInfo.result; + *pcbBuffer = data.cb.u.value32; + } + return rc; +} + +DECLVBGL(int) vboxCallLock(PVBSFCLIENT pClient, PVBSFMAP pMap, SHFLHANDLE hFile, + uint64_t offset, uint64_t cbSize, uint32_t fLock) +{ + int rc = VINF_SUCCESS; + + VBoxSFLock data; + + VBOX_INIT_CALL(&data.callInfo, LOCK, pClient); + + data.root.type = VMMDevHGCMParmType_32bit; + data.root.u.value32 = pMap->root; + + data.handle.type = VMMDevHGCMParmType_64bit; + data.handle.u.value64 = hFile; + data.offset.type = VMMDevHGCMParmType_64bit; + data.offset.u.value64 = offset; + data.length.type = VMMDevHGCMParmType_64bit; + data.length.u.value64 = cbSize; + + data.flags.type = VMMDevHGCMParmType_32bit; + data.flags.u.value32 = fLock; + + rc = VbglHGCMCall (pClient->handle, &data.callInfo, sizeof (data)); + +/* Log(("VBOXSF: VBoxSF::vboxCallLock: " + "VbglHGCMCall rc = %#x, result = %#x\n", rc, data.callInfo.result)); +*/ + if (RT_SUCCESS (rc)) + { + rc = data.callInfo.result; + } + return rc; +} + +DECLVBGL(int) vboxCallSetUtf8 (PVBSFCLIENT pClient) +{ + int rc = VINF_SUCCESS; + + VBoxGuestHGCMCallInfo callInfo; + + VBOX_INIT_CALL (&callInfo, SET_UTF8, pClient); + rc = VbglHGCMCall (pClient->handle, &callInfo, sizeof (callInfo)); + if (RT_SUCCESS (rc)) + { + rc = callInfo.result; + } + return rc; +} + +DECLVBGL(int) vboxReadLink (PVBSFCLIENT pClient, PVBSFMAP pMap, PSHFLSTRING pParsedPath, + uint32_t cbBuffer, uint8_t *pBuffer) +{ + int rc = VINF_SUCCESS; + + VBoxSFReadLink data; + + VBOX_INIT_CALL(&data.callInfo, READLINK, pClient); + + data.root.type = VMMDevHGCMParmType_32bit; + data.root.u.value32 = pMap->root; + + data.path.type = VMMDevHGCMParmType_LinAddr_In; + data.path.u.Pointer.size = ShflStringSizeOfBuffer (pParsedPath); + data.path.u.Pointer.u.linearAddr = (uintptr_t)pParsedPath; + + data.buffer.type = VMMDevHGCMParmType_LinAddr_Out; + data.buffer.u.Pointer.size = cbBuffer; + data.buffer.u.Pointer.u.linearAddr = (uintptr_t)pBuffer; + + rc = VbglHGCMCall (pClient->handle, &data.callInfo, sizeof (data)); + +/* Log(("VBOXSF: VBoxSF::vboxCallReadline: " + "VbglHGCMCall rc = %#x, result = %#x\n", rc, data.callInfo.result)); +*/ + if (RT_SUCCESS (rc)) + { + rc = data.callInfo.result; + } + return rc; +} + +DECLVBGL(int) vboxCallSymlink (PVBSFCLIENT pClient, PVBSFMAP pMap, PSHFLSTRING pNewPath, PSHFLSTRING pOldPath, + PSHFLFSOBJINFO pBuffer) +{ + int rc = VINF_SUCCESS; + + VBoxSFSymlink data; + + VBOX_INIT_CALL(&data.callInfo, SYMLINK, pClient); + + data.root.type = VMMDevHGCMParmType_32bit; + data.root.u.value32 = pMap->root; + + data.newPath.type = VMMDevHGCMParmType_LinAddr_In; + data.newPath.u.Pointer.size = ShflStringSizeOfBuffer (pNewPath); + data.newPath.u.Pointer.u.linearAddr = (uintptr_t)pNewPath; + + data.oldPath.type = VMMDevHGCMParmType_LinAddr_In; + data.oldPath.u.Pointer.size = ShflStringSizeOfBuffer (pOldPath); + data.oldPath.u.Pointer.u.linearAddr = (uintptr_t)pOldPath; + + data.info.type = VMMDevHGCMParmType_LinAddr_Out; + data.info.u.Pointer.size = sizeof(SHFLFSOBJINFO); + data.info.u.Pointer.u.linearAddr = (uintptr_t)pBuffer; + + rc = VbglHGCMCall (pClient->handle, &data.callInfo, sizeof (data)); + +/* Log(("VBOXSF: VBoxSF::vboxCallSymlink: " + "VbglHGCMCall rc = %#x, result = %#x\n", rc, data.callInfo.result)); +*/ + if (RT_SUCCESS (rc)) + { + rc = data.callInfo.result; + } + return rc; +} + +DECLVBGL(int) vboxCallSetSymlinks (PVBSFCLIENT pClient) +{ + int rc = VINF_SUCCESS; + + VBoxGuestHGCMCallInfo callInfo; + + VBOX_INIT_CALL (&callInfo, SET_SYMLINKS, pClient); + rc = VbglHGCMCall (pClient->handle, &callInfo, sizeof (callInfo)); + if (RT_SUCCESS (rc)) + { + rc = callInfo.result; + } + return rc; +} + + +#endif /* !VBGL_VBOXGUEST */ --- linux-raspi2-4.2.0.orig/ubuntu/vbox/vboxsf/VBoxGuestR0LibSharedFolders.h +++ linux-raspi2-4.2.0/ubuntu/vbox/vboxsf/VBoxGuestR0LibSharedFolders.h @@ -0,0 +1,200 @@ +/* $Id: VBoxGuestR0LibSharedFolders.h $ */ +/** @file + * VBoxGuestLib - Central calls header. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + +#ifndef ___VBoxGuestLib_VBoxGuestR0LibSharedFolders_h +#define ___VBoxGuestLib_VBoxGuestR0LibSharedFolders_h + +#include +#ifndef _NTIFS_ +# ifdef RT_OS_WINDOWS +# undef PAGE_SIZE +# undef PAGE_SHIFT +# if (_MSC_VER >= 1400) && !defined(VBOX_WITH_PATCHED_DDK) +# include +# define _InterlockedExchange _InterlockedExchange_StupidDDKvsCompilerCrap +# define _InterlockedExchangeAdd _InterlockedExchangeAdd_StupidDDKvsCompilerCrap +# define _InterlockedCompareExchange _InterlockedCompareExchange_StupidDDKvsCompilerCrap +# define _InterlockedAddLargeStatistic _InterlockedAddLargeStatistic_StupidDDKvsCompilerCrap +# pragma warning(disable : 4163) + RT_C_DECLS_BEGIN +# include + RT_C_DECLS_END +# pragma warning(default : 4163) +# undef _InterlockedExchange +# undef _InterlockedExchangeAdd +# undef _InterlockedCompareExchange +# undef _InterlockedAddLargeStatistic +# else + RT_C_DECLS_BEGIN +# include + RT_C_DECLS_END +# endif +# endif +#endif + +#if defined(RT_OS_WINDOWS) && 0 +/** @todo remove this legacy and use VBox/log.h and/or iprt/log.h. */ +/* => Done. The next person who needs logging in Windows guests will have the + * honour of making it work. */ +# ifdef DEBUG +# define LOG_ENABLED +# endif +# include "VBoxGuestLog.h" +#endif +#if defined(RT_OS_WINDOWS) +# include +#endif + +#include +#define ASSERTVBSF AssertRelease + +#include + +typedef struct _VBSFCLIENT +{ + uint32_t ulClientID; + VBGLHGCMHANDLE handle; +} VBSFCLIENT; +typedef VBSFCLIENT *PVBSFCLIENT; + +typedef struct _VBSFMAP +{ + SHFLROOT root; +} VBSFMAP, *PVBSFMAP; + + +#define VBSF_DRIVE_LETTER_FIRST L'A' +#define VBSF_DRIVE_LETTER_LAST L'Z' + +#define VBSF_MAX_DRIVES (VBSF_DRIVE_LETTER_LAST - VBSF_DRIVE_LETTER_FIRST) + +/* Poller thread flags. */ +#define VBSF_TF_NONE (0x0000) +#define VBSF_TF_STARTED (0x0001) +#define VBSF_TF_TERMINATE (0x0002) +#define VBSF_TF_START_PROCESSING (0x0004) + +#define DRIVE_FLAG_WORKING (0x1) +#define DRIVE_FLAG_LOCKED (0x2) +#define DRIVE_FLAG_WRITE_PROTECTED (0x4) + +#ifdef RT_OS_WINDOWS +/** Device extension structure for each drive letter we created. */ +typedef struct _VBSFDRIVE +{ + /* A pointer to the Driver object we created for the drive. */ + PDEVICE_OBJECT pDeviceObject; + + /** Root handle to access the drive. */ + SHFLROOT root; + + /** Informational string - the resource name on host. */ + WCHAR awcNameHost[256]; + + /** Guest drive letter. */ + WCHAR wcDriveLetter; + + /** DRIVE_FLAG_* */ + uint32_t u32DriveFlags; + + /** Head of FCB list. */ + LIST_ENTRY FCBHead; + + /* Synchronise requests directed to the drive. */ + ERESOURCE DriveResource; +} VBSFDRIVE; +typedef VBSFDRIVE *PVBSFDRIVE; +#endif /* RT_OS_WINDOWS */ + +/* forward decl */ +struct _MRX_VBOX_DEVICE_EXTENSION; +typedef struct _MRX_VBOX_DEVICE_EXTENSION *PMRX_VBOX_DEVICE_EXTENSION; + +DECLVBGL(int) vboxInit (void); +DECLVBGL(void) vboxUninit (void); +DECLVBGL(int) vboxConnect (PVBSFCLIENT pClient); +DECLVBGL(void) vboxDisconnect (PVBSFCLIENT pClient); + +DECLVBGL(int) vboxCallQueryMappings (PVBSFCLIENT pClient, SHFLMAPPING paMappings[], uint32_t *pcMappings); + +DECLVBGL(int) vboxCallQueryMapName (PVBSFCLIENT pClient, SHFLROOT root, SHFLSTRING *pString, uint32_t size); + +/** + * Create a new file or folder or open an existing one in a shared folder. Proxies + * to vbsfCreate in the host shared folder service. + * + * @returns IPRT status code, but see note below + * @param pClient Host-guest communication connection + * @param pMap The mapping for the shared folder in which the file + * or folder is to be created + * @param pParsedPath The path of the file or folder relative to the shared + * folder + * @param pCreateParms Parameters for file/folder creation. See the + * structure description in shflsvc.h + * @retval pCreateParms See the structure description in shflsvc.h + * + * @note This function reports errors as follows. The return value is always + * VINF_SUCCESS unless an exceptional condition occurs - out of + * memory, invalid arguments, etc. If the file or folder could not be + * opened or created, pCreateParms->Handle will be set to + * SHFL_HANDLE_NIL on return. In this case the value in + * pCreateParms->Result provides information as to why (e.g. + * SHFL_FILE_EXISTS). pCreateParms->Result is also set on success + * as additional information. + */ +DECLVBGL(int) vboxCallCreate (PVBSFCLIENT pClient, PVBSFMAP pMap, PSHFLSTRING pParsedPath, PSHFLCREATEPARMS pCreateParms); + +DECLVBGL(int) vboxCallClose (PVBSFCLIENT pClient, PVBSFMAP pMap, SHFLHANDLE Handle); +DECLVBGL(int) vboxCallRemove (PVBSFCLIENT pClient, PVBSFMAP pMap, PSHFLSTRING pParsedPath, uint32_t flags); +DECLVBGL(int) vboxCallRename (PVBSFCLIENT pClient, PVBSFMAP pMap, PSHFLSTRING pSrcPath, PSHFLSTRING pDestPath, uint32_t flags); +DECLVBGL(int) vboxCallFlush (PVBSFCLIENT pClient, PVBSFMAP pMap, SHFLHANDLE hFile); + +DECLVBGL(int) vboxCallRead (PVBSFCLIENT pClient, PVBSFMAP pMap, SHFLHANDLE hFile, uint64_t offset, uint32_t *pcbBuffer, uint8_t *pBuffer, bool fLocked); +DECLVBGL(int) VbglR0SharedFolderReadPageList(PVBSFCLIENT pClient, PVBSFMAP pMap, SHFLHANDLE hFile, + uint64_t offset, uint32_t *pcbBuffer, + uint16_t offFirstPage, uint16_t cPages, RTGCPHYS64 *paPages); +DECLVBGL(int) vboxCallWrite (PVBSFCLIENT pClient, PVBSFMAP pMap, SHFLHANDLE hFile, uint64_t offset, uint32_t *pcbBuffer, uint8_t *pBuffer, bool fLocked); +DECLVBGL(int) VbglR0SfWritePhysCont(PVBSFCLIENT pClient, PVBSFMAP pMap, SHFLHANDLE hFile, uint64_t offset, uint32_t *pcbBuffer, RTCCPHYS PhysBuffer); +DECLVBGL(int) VbglR0SharedFolderWritePageList(PVBSFCLIENT pClient, PVBSFMAP pMap, SHFLHANDLE hFile, + uint64_t offset, uint32_t *pcbBuffer, + uint16_t offFirstPage, uint16_t cPages, RTGCPHYS64 *paPages); + +DECLVBGL(int) vboxCallLock (PVBSFCLIENT pClient, PVBSFMAP pMap, SHFLHANDLE hFile, uint64_t offset, uint64_t cbSize, uint32_t fLock); + +DECLVBGL(int) vboxCallDirInfo (PVBSFCLIENT pClient, PVBSFMAP pMap, SHFLHANDLE hFile,PSHFLSTRING ParsedPath, uint32_t flags, + uint32_t index, uint32_t *pcbBuffer, PSHFLDIRINFO pBuffer, uint32_t *pcFiles); +DECLVBGL(int) vboxCallFSInfo (PVBSFCLIENT pClient, PVBSFMAP pMap, SHFLHANDLE hFile, uint32_t flags, uint32_t *pcbBuffer, PSHFLDIRINFO pBuffer); + +DECLVBGL(int) vboxCallMapFolder (PVBSFCLIENT pClient, PSHFLSTRING szFolderName, PVBSFMAP pMap); +DECLVBGL(int) vboxCallUnmapFolder (PVBSFCLIENT pClient, PVBSFMAP pMap); +DECLVBGL(int) vboxCallSetUtf8 (PVBSFCLIENT pClient); + +DECLVBGL(int) vboxReadLink (PVBSFCLIENT pClient, PVBSFMAP pMap, PSHFLSTRING ParsedPath, uint32_t pcbBuffer, uint8_t *pBuffer); +DECLVBGL(int) vboxCallSymlink (PVBSFCLIENT pClient, PVBSFMAP pMap, PSHFLSTRING pNewPath, PSHFLSTRING pOldPath, PSHFLFSOBJINFO pBuffer); +DECLVBGL(int) vboxCallSetSymlinks (PVBSFCLIENT pClient); + +#endif /* !___VBoxGuestLib_VBoxGuestR0LibSharedFolders_h */ + --- linux-raspi2-4.2.0.orig/ubuntu/vbox/vboxsf/VMMDev.c +++ linux-raspi2-4.2.0/ubuntu/vbox/vboxsf/VMMDev.c @@ -0,0 +1,44 @@ +/* $Id: VMMDev.cpp $ */ +/** @file + * VBoxGuestLibR0 - VMMDev device related functions. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + +#include "VBGLInternal.h" + + +DECLVBGL(int) VbglQueryVMMDevMemory (VMMDevMemory **ppVMMDevMemory) +{ + int rc = vbglR0Enter (); + + if (RT_FAILURE(rc)) + return rc; + + /* If the memory was not found, return an error. */ + if (!g_vbgldata.pVMMDevMemory) + return VERR_NOT_SUPPORTED; + + *ppVMMDevMemory = g_vbgldata.pVMMDevMemory; + return rc; +} + --- linux-raspi2-4.2.0.orig/ubuntu/vbox/vboxsf/VbglR0CanUsePhysPageList.c +++ linux-raspi2-4.2.0/ubuntu/vbox/vboxsf/VbglR0CanUsePhysPageList.c @@ -0,0 +1,44 @@ +/* $Id: VbglR0CanUsePhysPageList.cpp $ */ +/** @file + * VBoxGuestLibR0 - Physical memory heap. + */ + +/* + * Copyright (C) 2006-2015 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + +#include "VBGLInternal.h" + + +/** + * Checks whether the host supports physical page lists or not. + * + * @returns true if it does, false if it doesn't. + */ +DECLR0VBGL(bool) VbglR0CanUsePhysPageList(void) +{ + /* a_fLocked is false, because the actual capability of the host is requested. + * See VBGLR0_CAN_USE_PHYS_PAGE_LIST definition. + */ + int rc = vbglR0Enter(); + return RT_SUCCESS(rc) + && VBGLR0_CAN_USE_PHYS_PAGE_LIST(/*a_fLocked =*/ false); +} + --- linux-raspi2-4.2.0.orig/ubuntu/vbox/vboxsf/dirops.c +++ linux-raspi2-4.2.0/ubuntu/vbox/vboxsf/dirops.c @@ -0,0 +1,864 @@ +/** @file + * + * vboxsf -- VirtualBox Guest Additions for Linux: + * Directory inode and file operations + */ + +/* + * Copyright (C) 2006-2012 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + */ + +#include "vfsmod.h" + +/** + * Open a directory. Read the complete content into a buffer. + * + * @param inode inode + * @param file file + * @returns 0 on success, Linux error code otherwise + */ +static int sf_dir_open(struct inode *inode, struct file *file) +{ + int rc; + int err; + struct sf_glob_info *sf_g = GET_GLOB_INFO(inode->i_sb); + struct sf_dir_info *sf_d; + struct sf_inode_info *sf_i = GET_INODE_INFO(inode); + SHFLCREATEPARMS params; + + TRACE(); + BUG_ON(!sf_g); + BUG_ON(!sf_i); + + if (file->private_data) + { + LogFunc(("sf_dir_open() called on already opened directory '%s'\n", + sf_i->path->String.utf8)); + return 0; + } + + sf_d = sf_dir_info_alloc(); + if (!sf_d) + { + LogRelFunc(("could not allocate directory info for '%s'\n", + sf_i->path->String.utf8)); + return -ENOMEM; + } + + RT_ZERO(params); + params.Handle = SHFL_HANDLE_NIL; + params.CreateFlags = 0 + | SHFL_CF_DIRECTORY + | SHFL_CF_ACT_OPEN_IF_EXISTS + | SHFL_CF_ACT_FAIL_IF_NEW + | SHFL_CF_ACCESS_READ + ; + + LogFunc(("sf_dir_open(): calling vboxCallCreate, folder %s, flags %#x\n", + sf_i->path->String.utf8, params.CreateFlags)); + rc = vboxCallCreate(&client_handle, &sf_g->map, sf_i->path, ¶ms); + if (RT_SUCCESS(rc)) + { + if (params.Result == SHFL_FILE_EXISTS) + { + err = sf_dir_read_all(sf_g, sf_i, sf_d, params.Handle); + if (!err) + file->private_data = sf_d; + } + else + err = -ENOENT; + + rc = vboxCallClose(&client_handle, &sf_g->map, params.Handle); + if (RT_FAILURE(rc)) + LogFunc(("sf_dir_open(): vboxCallClose(%s) after err=%d failed rc=%Rrc\n", + sf_i->path->String.utf8, err, rc)); + } + else + err = -EPERM; + + if (err) + sf_dir_info_free(sf_d); + + return err; +} + + +/** + * This is called when reference count of [file] goes to zero. Notify + * the host that it can free whatever is associated with this directory + * and deallocate our own internal buffers + * + * @param inode inode + * @param file file + * returns 0 on success, Linux error code otherwise + */ +static int sf_dir_release(struct inode *inode, struct file *file) +{ + TRACE(); + + if (file->private_data) + sf_dir_info_free(file->private_data); + + return 0; +} + +/** + * Extract element ([dir]->f_pos) from the directory [dir] into [d_name]. + * + * @returns 0 for success, 1 for end reached, Linux error code otherwise. + */ +static int sf_getdent(struct file *dir, char d_name[NAME_MAX]) +{ + loff_t cur; + struct sf_glob_info *sf_g; + struct sf_dir_info *sf_d; + struct sf_inode_info *sf_i; + struct inode *inode; + struct list_head *pos, *list; + + TRACE(); + + inode = GET_F_DENTRY(dir)->d_inode; + sf_i = GET_INODE_INFO(inode); + sf_g = GET_GLOB_INFO(inode->i_sb); + sf_d = dir->private_data; + + BUG_ON(!sf_g); + BUG_ON(!sf_d); + BUG_ON(!sf_i); + + if (sf_i->force_reread) + { + int rc; + int err; + SHFLCREATEPARMS params; + + RT_ZERO(params); + params.Handle = SHFL_HANDLE_NIL; + params.CreateFlags = 0 + | SHFL_CF_DIRECTORY + | SHFL_CF_ACT_OPEN_IF_EXISTS + | SHFL_CF_ACT_FAIL_IF_NEW + | SHFL_CF_ACCESS_READ + ; + + LogFunc(("sf_getdent: calling vboxCallCreate, folder %s, flags %#x\n", + sf_i->path->String.utf8, params.CreateFlags)); + rc = vboxCallCreate(&client_handle, &sf_g->map, sf_i->path, ¶ms); + if (RT_FAILURE(rc)) + { + LogFunc(("vboxCallCreate(%s) failed rc=%Rrc\n", + sf_i->path->String.utf8, rc)); + return -EPERM; + } + + if (params.Result != SHFL_FILE_EXISTS) + { + LogFunc(("directory %s does not exist\n", sf_i->path->String.utf8)); + sf_dir_info_free(sf_d); + return -ENOENT; + } + + sf_dir_info_empty(sf_d); + err = sf_dir_read_all(sf_g, sf_i, sf_d, params.Handle); + rc = vboxCallClose(&client_handle, &sf_g->map, params.Handle); + if (RT_FAILURE(rc)) + LogFunc(("vboxCallClose(%s) failed rc=%Rrc\n", sf_i->path->String.utf8, rc)); + if (err) + return err; + + sf_i->force_reread = 0; + } + + cur = 0; + list = &sf_d->info_list; + list_for_each(pos, list) + { + struct sf_dir_buf *b; + SHFLDIRINFO *info; + loff_t i; + + b = list_entry(pos, struct sf_dir_buf, head); + if (dir->f_pos >= cur + b->cEntries) + { + cur += b->cEntries; + continue; + } + + for (i = 0, info = b->buf; i < dir->f_pos - cur; ++i) + { + size_t size; + + size = offsetof(SHFLDIRINFO, name.String) + info->name.u16Size; + info = (SHFLDIRINFO *) ((uintptr_t) info + size); + } + + return sf_nlscpy(sf_g, d_name, NAME_MAX, + info->name.String.utf8, info->name.u16Length); + } + + return 1; +} + +/** + * This is called when vfs wants to populate internal buffers with + * directory [dir]s contents. [opaque] is an argument to the + * [filldir]. [filldir] magically modifies it's argument - [opaque] + * and takes following additional arguments (which i in turn get from + * the host via sf_getdent): + * + * name : name of the entry (i must also supply it's length huh?) + * type : type of the entry (FILE | DIR | etc) (i ellect to use DT_UNKNOWN) + * pos : position/index of the entry + * ino : inode number of the entry (i fake those) + * + * [dir] contains: + * f_pos : cursor into the directory listing + * private_data : mean of communication with the host side + * + * Extract elements from the directory listing (incrementing f_pos + * along the way) and feed them to [filldir] until: + * + * a. there are no more entries (i.e. sf_getdent set done to 1) + * b. failure to compute fake inode number + * c. filldir returns an error (see comment on that) + */ +#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 11, 0) +static int sf_dir_iterate(struct file *dir, struct dir_context *ctx) +#else +static int sf_dir_read(struct file *dir, void *opaque, filldir_t filldir) +#endif +{ + TRACE(); + for (;;) + { + int err; + ino_t fake_ino; + loff_t sanity; + char d_name[NAME_MAX]; + + err = sf_getdent(dir, d_name); + switch (err) + { + case 1: + return 0; + + case 0: + break; + + case -1: + default: + /* skip erroneous entry and proceed */ + LogFunc(("sf_getdent error %d\n", err)); + dir->f_pos += 1; +#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 11, 0) + ctx->pos += 1; +#endif + continue; + } + + /* d_name now contains a valid entry name */ + +#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 11, 0) + sanity = ctx->pos + 0xbeef; +#else + sanity = dir->f_pos + 0xbeef; +#endif + fake_ino = sanity; + if (sanity - fake_ino) + { + LogRelFunc(("can not compute ino\n")); + return -EINVAL; + } + +#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 11, 0) + if (!dir_emit(ctx, d_name, strlen(d_name), fake_ino, DT_UNKNOWN)) + { + LogFunc(("dir_emit failed\n")); + return 0; + } +#else + err = filldir(opaque, d_name, strlen(d_name), dir->f_pos, fake_ino, DT_UNKNOWN); + if (err) + { + LogFunc(("filldir returned error %d\n", err)); + /* Rely on the fact that filldir returns error + only when it runs out of space in opaque */ + return 0; + } +#endif + + dir->f_pos += 1; +#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 11, 0) + ctx->pos += 1; +#endif + } + + BUG(); +} + +struct file_operations sf_dir_fops = +{ + .open = sf_dir_open, +#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 11, 0) + .iterate = sf_dir_iterate, +#else + .readdir = sf_dir_read, +#endif + .release = sf_dir_release, + .read = generic_read_dir +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 37) + , .llseek = generic_file_llseek +#endif +}; + + +/* iops */ + +/** + * This is called when vfs failed to locate dentry in the cache. The + * job of this function is to allocate inode and link it to dentry. + * [dentry] contains the name to be looked in the [parent] directory. + * Failure to locate the name is not a "hard" error, in this case NULL + * inode is added to [dentry] and vfs should proceed trying to create + * the entry via other means. NULL(or "positive" pointer) ought to be + * returned in case of success and "negative" pointer on error + */ +static struct dentry *sf_lookup(struct inode *parent, struct dentry *dentry +#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 6, 0) + , unsigned int flags +#elif LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 0) + , struct nameidata *nd +#endif + ) +{ + int err; + struct sf_inode_info *sf_i, *sf_new_i; + struct sf_glob_info *sf_g; + SHFLSTRING *path; + struct inode *inode; + ino_t ino; + SHFLFSOBJINFO fsinfo; + + TRACE(); + sf_g = GET_GLOB_INFO(parent->i_sb); + sf_i = GET_INODE_INFO(parent); + + BUG_ON(!sf_g); + BUG_ON(!sf_i); + + err = sf_path_from_dentry(__func__, sf_g, sf_i, dentry, &path); + if (err) + goto fail0; + + err = sf_stat(__func__, sf_g, path, &fsinfo, 1); + if (err) + { + if (err == -ENOENT) + { + /* -ENOENT: add NULL inode to dentry so it later can be + created via call to create/mkdir/open */ + kfree(path); + inode = NULL; + } + else + goto fail1; + } + else + { + sf_new_i = kmalloc(sizeof(*sf_new_i), GFP_KERNEL); + if (!sf_new_i) + { + LogRelFunc(("could not allocate memory for new inode info\n")); + err = -ENOMEM; + goto fail1; + } + sf_new_i->handle = SHFL_HANDLE_NIL; + sf_new_i->force_reread = 0; + + ino = iunique(parent->i_sb, 1); +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 4, 25) + inode = iget_locked(parent->i_sb, ino); +#else + inode = iget(parent->i_sb, ino); +#endif + if (!inode) + { + LogFunc(("iget failed\n")); + err = -ENOMEM; /* XXX: ??? */ + goto fail2; + } + + SET_INODE_INFO(inode, sf_new_i); + sf_init_inode(sf_g, inode, &fsinfo); + sf_new_i->path = path; + +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 4, 25) + unlock_new_inode(inode); +#endif + } + + sf_i->force_restat = 0; + dentry->d_time = jiffies; +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 38) + d_set_d_op(dentry, &sf_dentry_ops); +#else + dentry->d_op = &sf_dentry_ops; +#endif + d_add(dentry, inode); + return NULL; + +fail2: + kfree(sf_new_i); + +fail1: + kfree(path); + +fail0: + return ERR_PTR(err); +} + +/** + * This should allocate memory for sf_inode_info, compute a unique inode + * number, get an inode from vfs, initialize inode info, instantiate + * dentry. + * + * @param parent inode entry of the directory + * @param dentry directory cache entry + * @param path path name + * @param info file information + * @param handle handle + * @returns 0 on success, Linux error code otherwise + */ +static int sf_instantiate(struct inode *parent, struct dentry *dentry, + SHFLSTRING *path, PSHFLFSOBJINFO info, SHFLHANDLE handle) +{ + int err; + ino_t ino; + struct inode *inode; + struct sf_inode_info *sf_new_i; + struct sf_glob_info *sf_g = GET_GLOB_INFO(parent->i_sb); + + TRACE(); + BUG_ON(!sf_g); + + sf_new_i = kmalloc(sizeof(*sf_new_i), GFP_KERNEL); + if (!sf_new_i) + { + LogRelFunc(("could not allocate inode info.\n")); + err = -ENOMEM; + goto fail0; + } + + ino = iunique(parent->i_sb, 1); +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 4, 25) + inode = iget_locked(parent->i_sb, ino); +#else + inode = iget(parent->i_sb, ino); +#endif + if (!inode) + { + LogFunc(("iget failed\n")); + err = -ENOMEM; + goto fail1; + } + + sf_init_inode(sf_g, inode, info); + sf_new_i->path = path; + SET_INODE_INFO(inode, sf_new_i); + sf_new_i->force_restat = 1; + sf_new_i->force_reread = 0; + + d_instantiate(dentry, inode); + +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 4, 25) + unlock_new_inode(inode); +#endif + + /* Store this handle if we leave the handle open. */ + sf_new_i->handle = handle; + return 0; + +fail1: + kfree(sf_new_i); + +fail0: + return err; + +} + +/** + * Create a new regular file / directory. + * + * @param parent inode of the directory + * @param dentry directory cache entry + * @param mode file mode + * @param fDirectory true if directory, false otherwise + * @returns 0 on success, Linux error code otherwise + */ +static int sf_create_aux(struct inode *parent, struct dentry *dentry, + umode_t mode, int fDirectory) +{ + int rc, err; + SHFLCREATEPARMS params; + SHFLSTRING *path; + struct sf_inode_info *sf_i = GET_INODE_INFO(parent); + struct sf_glob_info *sf_g = GET_GLOB_INFO(parent->i_sb); + + TRACE(); + BUG_ON(!sf_i); + BUG_ON(!sf_g); + + err = sf_path_from_dentry(__func__, sf_g, sf_i, dentry, &path); + if (err) + goto fail0; + + RT_ZERO(params); + params.Handle = SHFL_HANDLE_NIL; + params.CreateFlags = 0 + | SHFL_CF_ACT_CREATE_IF_NEW + | SHFL_CF_ACT_FAIL_IF_EXISTS + | SHFL_CF_ACCESS_READWRITE + | (fDirectory ? SHFL_CF_DIRECTORY : 0) + ; + params.Info.Attr.fMode = 0 + | (fDirectory ? RTFS_TYPE_DIRECTORY : RTFS_TYPE_FILE) + | (mode & S_IRWXUGO) + ; + params.Info.Attr.enmAdditional = RTFSOBJATTRADD_NOTHING; + + LogFunc(("sf_create_aux: calling vboxCallCreate, folder %s, flags %#x\n", + path->String.utf8, params.CreateFlags)); + rc = vboxCallCreate(&client_handle, &sf_g->map, path, ¶ms); + if (RT_FAILURE(rc)) + { + if (rc == VERR_WRITE_PROTECT) + { + err = -EROFS; + goto fail1; + } + err = -EPROTO; + LogFunc(("(%d): vboxCallCreate(%s) failed rc=%Rrc\n", + fDirectory, sf_i->path->String.utf8, rc)); + goto fail1; + } + + if (params.Result != SHFL_FILE_CREATED) + { + err = -EPERM; + LogFunc(("(%d): could not create file %s result=%d\n", + fDirectory, sf_i->path->String.utf8, params.Result)); + goto fail1; + } + + err = sf_instantiate(parent, dentry, path, ¶ms.Info, + fDirectory ? SHFL_HANDLE_NIL : params.Handle); + if (err) + { + LogFunc(("(%d): could not instantiate dentry for %s err=%d\n", + fDirectory, sf_i->path->String.utf8, err)); + goto fail2; + } + + /* + * Don't close this handle right now. We assume that the same file is + * opened with sf_reg_open() and later closed with sf_reg_close(). Save + * the handle in between. Does not apply to directories. True? + */ + if (fDirectory) + { + rc = vboxCallClose(&client_handle, &sf_g->map, params.Handle); + if (RT_FAILURE(rc)) + LogFunc(("(%d): vboxCallClose failed rc=%Rrc\n", fDirectory, rc)); + } + + sf_i->force_restat = 1; + return 0; + +fail2: + rc = vboxCallClose(&client_handle, &sf_g->map, params.Handle); + if (RT_FAILURE(rc)) + LogFunc(("(%d): vboxCallClose failed rc=%Rrc\n", fDirectory, rc)); + +fail1: + kfree(path); + +fail0: + return err; +} + +/** + * Create a new regular file. + * + * @param parent inode of the directory + * @param dentry directory cache entry + * @param mode file mode + * @returns 0 on success, Linux error code otherwise + */ +#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 6, 0) +static int sf_create(struct inode *parent, struct dentry *dentry, umode_t mode, bool excl) +#elif LINUX_VERSION_CODE >= KERNEL_VERSION(3, 3, 0) +static int sf_create(struct inode *parent, struct dentry *dentry, umode_t mode, struct nameidata *nd) +#elif LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 0) +static int sf_create(struct inode *parent, struct dentry *dentry, int mode, struct nameidata *nd) +#else +static int sf_create(struct inode *parent, struct dentry *dentry, int mode) +#endif +{ + TRACE(); + return sf_create_aux(parent, dentry, mode, 0); +} + +/** + * Create a new directory. + * + * @param parent inode of the directory + * @param dentry directory cache entry + * @param mode file mode + * @returns 0 on success, Linux error code otherwise + */ +#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 3, 0) +static int sf_mkdir(struct inode *parent, struct dentry *dentry, umode_t mode) +#else +static int sf_mkdir(struct inode *parent, struct dentry *dentry, int mode) +#endif +{ + TRACE(); + return sf_create_aux(parent, dentry, mode, 1); +} + +/** + * Remove a regular file / directory. + * + * @param parent inode of the directory + * @param dentry directory cache entry + * @param fDirectory true if directory, false otherwise + * @returns 0 on success, Linux error code otherwise + */ +static int sf_unlink_aux(struct inode *parent, struct dentry *dentry, int fDirectory) +{ + int rc, err; + struct sf_glob_info *sf_g = GET_GLOB_INFO(parent->i_sb); + struct sf_inode_info *sf_i = GET_INODE_INFO(parent); + SHFLSTRING *path; + uint32_t fFlags; + + TRACE(); + BUG_ON(!sf_g); + + err = sf_path_from_dentry(__func__, sf_g, sf_i, dentry, &path); + if (err) + goto fail0; + + fFlags = fDirectory ? SHFL_REMOVE_DIR : SHFL_REMOVE_FILE; + if ( dentry + && dentry->d_inode + && ((dentry->d_inode->i_mode & S_IFLNK) == S_IFLNK)) + fFlags |= SHFL_REMOVE_SYMLINK; + rc = vboxCallRemove(&client_handle, &sf_g->map, path, fFlags); + if (RT_FAILURE(rc)) + { + LogFunc(("(%d): vboxCallRemove(%s) failed rc=%Rrc\n", fDirectory, + path->String.utf8, rc)); + err = -RTErrConvertToErrno(rc); + goto fail1; + } + + /* directory access/change time changed */ + sf_i->force_restat = 1; + /* directory content changed */ + sf_i->force_reread = 1; + + err = 0; + +fail1: + kfree(path); + +fail0: + return err; +} + +/** + * Remove a regular file. + * + * @param parent inode of the directory + * @param dentry directory cache entry + * @returns 0 on success, Linux error code otherwise + */ +static int sf_unlink(struct inode *parent, struct dentry *dentry) +{ + TRACE(); + return sf_unlink_aux(parent, dentry, 0); +} + +/** + * Remove a directory. + * + * @param parent inode of the directory + * @param dentry directory cache entry + * @returns 0 on success, Linux error code otherwise + */ +static int sf_rmdir(struct inode *parent, struct dentry *dentry) +{ + TRACE(); + return sf_unlink_aux(parent, dentry, 1); +} + +/** + * Rename a regular file / directory. + * + * @param old_parent inode of the old parent directory + * @param old_dentry old directory cache entry + * @param new_parent inode of the new parent directory + * @param new_dentry new directory cache entry + * @returns 0 on success, Linux error code otherwise + */ +static int sf_rename(struct inode *old_parent, struct dentry *old_dentry, + struct inode *new_parent, struct dentry *new_dentry) +{ + int err = 0, rc = VINF_SUCCESS; + struct sf_glob_info *sf_g = GET_GLOB_INFO(old_parent->i_sb); + + TRACE(); + + if (sf_g != GET_GLOB_INFO(new_parent->i_sb)) + { + LogFunc(("rename with different roots\n")); + err = -EINVAL; + } + else + { + struct sf_inode_info *sf_old_i = GET_INODE_INFO(old_parent); + struct sf_inode_info *sf_new_i = GET_INODE_INFO(new_parent); + /* As we save the relative path inside the inode structure, we need to change + this if the rename is successful. */ + struct sf_inode_info *sf_file_i = GET_INODE_INFO(old_dentry->d_inode); + SHFLSTRING *old_path; + SHFLSTRING *new_path; + + BUG_ON(!sf_old_i); + BUG_ON(!sf_new_i); + BUG_ON(!sf_file_i); + + old_path = sf_file_i->path; + err = sf_path_from_dentry(__func__, sf_g, sf_new_i, + new_dentry, &new_path); + if (err) + LogFunc(("failed to create new path\n")); + else + { + int fDir = ((old_dentry->d_inode->i_mode & S_IFDIR) != 0); + + rc = vboxCallRename(&client_handle, &sf_g->map, old_path, + new_path, fDir ? 0 : SHFL_RENAME_FILE | SHFL_RENAME_REPLACE_IF_EXISTS); + if (RT_SUCCESS(rc)) + { + kfree(old_path); + sf_new_i->force_restat = 1; + sf_old_i->force_restat = 1; /* XXX: needed? */ + /* Set the new relative path in the inode. */ + sf_file_i->path = new_path; + } + else + { + LogFunc(("vboxCallRename failed rc=%Rrc\n", rc)); + err = -RTErrConvertToErrno(rc); + kfree(new_path); + } + } + } + return err; +} + +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 0) +static int sf_symlink(struct inode *parent, struct dentry *dentry, const char *symname) +{ + int err; + int rc; + struct sf_inode_info *sf_i; + struct sf_glob_info *sf_g; + SHFLSTRING *path, *ssymname; + SHFLFSOBJINFO info; + int symname_len = strlen(symname) + 1; + + TRACE(); + sf_g = GET_GLOB_INFO(parent->i_sb); + sf_i = GET_INODE_INFO(parent); + + BUG_ON(!sf_g); + BUG_ON(!sf_i); + + err = sf_path_from_dentry(__func__, sf_g, sf_i, dentry, &path); + if (err) + goto fail0; + + ssymname = kmalloc(offsetof(SHFLSTRING, String.utf8) + symname_len, GFP_KERNEL); + if (!ssymname) + { + LogRelFunc(("kmalloc failed, caller=sf_symlink\n")); + err = -ENOMEM; + goto fail1; + } + + ssymname->u16Length = symname_len - 1; + ssymname->u16Size = symname_len; + memcpy(ssymname->String.utf8, symname, symname_len); + + rc = vboxCallSymlink(&client_handle, &sf_g->map, path, ssymname, &info); + kfree(ssymname); + + if (RT_FAILURE(rc)) + { + if (rc == VERR_WRITE_PROTECT) + { + err = -EROFS; + goto fail1; + } + LogFunc(("vboxCallSymlink(%s) failed rc=%Rrc\n", + sf_i->path->String.utf8, rc)); + err = -EPROTO; + goto fail1; + } + + err = sf_instantiate(parent, dentry, path, &info, SHFL_HANDLE_NIL); + if (err) + { + LogFunc(("could not instantiate dentry for %s err=%d\n", + sf_i->path->String.utf8, err)); + goto fail1; + } + + sf_i->force_restat = 1; + return 0; + +fail1: + kfree(path); +fail0: + return err; +} +#endif + +struct inode_operations sf_dir_iops = +{ + .lookup = sf_lookup, + .create = sf_create, + .mkdir = sf_mkdir, + .rmdir = sf_rmdir, + .unlink = sf_unlink, + .rename = sf_rename, +#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 0) + .revalidate = sf_inode_revalidate +#else + .getattr = sf_getattr, + .setattr = sf_setattr, + .symlink = sf_symlink +#endif +}; --- linux-raspi2-4.2.0.orig/ubuntu/vbox/vboxsf/divdi3.c +++ linux-raspi2-4.2.0/ubuntu/vbox/vboxsf/divdi3.c @@ -0,0 +1,70 @@ +/* $NetBSD: divdi3.c,v 1.8 2005/12/11 12:24:37 christos Exp $ */ + +/*- + * Copyright (c) 1992, 1993 + * The Regents of the University of California. All rights reserved. + * + * This software was developed by the Computer Systems Engineering group + * at Lawrence Berkeley Laboratory under DARPA contract BG 91-66 and + * contributed to Berkeley. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the University nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +/*#include +#if defined(LIBC_SCCS) && !defined(lint) +#if 0 +static char sccsid[] = "@(#)divdi3.c 8.1 (Berkeley) 6/4/93"; +#else +__RCSID("$NetBSD: divdi3.c,v 1.8 2005/12/11 12:24:37 christos Exp $"); +#endif +#endif*/ /* LIBC_SCCS and not lint */ + +#include "quad.h" + +/* + * Divide two signed quads. + * ??? if -1/2 should produce -1 on this machine, this code is wrong + */ +quad_t +__divdi3(a, b) + quad_t a, b; +{ + u_quad_t ua, ub, uq; + int neg = 0; + + ua = a; + ub = b; + + if (a < 0) + ua = -ua, neg ^= 1; + if (b < 0) + ub = -ub, neg ^= 1; + + uq = __qdivrem(ua, ub, (u_quad_t *)0); + if (neg) + uq = - uq; + return uq; +} --- linux-raspi2-4.2.0.orig/ubuntu/vbox/vboxsf/do_Module.symvers +++ linux-raspi2-4.2.0/ubuntu/vbox/vboxsf/do_Module.symvers @@ -0,0 +1,33 @@ +#!/bin/sh + +# +# This script is used when building kernel modules from DKMS. I don't +# know how to solve the problem of inter-module dependencies better. +# +# Copyright (C) 2008-2015 Oracle Corporation +# +# This file is part of VirtualBox Open Source Edition (OSE), as +# available from http://www.virtualbox.org. This file is free software; +# you can redistribute it and/or modify it under the terms of the GNU +# General Public License (GPL) as published by the Free Software +# Foundation, in version 2 as it comes in the "COPYING" file of the +# VirtualBox OSE distribution. VirtualBox OSE is distributed in the +# hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. +# + +SYMFILE="/tmp/$1-Module.symvers" +case "$2" in + save) + if [ -f "$3" ]; then + cp "$3" "$SYMFILE" + fi + ;; + restore) + if [ -f "$SYMFILE" ]; then + cp "$SYMFILE" "$3" + fi + ;; + *) + echo "Usage: save|restore " + ;; +esac --- linux-raspi2-4.2.0.orig/ubuntu/vbox/vboxsf/lnkops.c +++ linux-raspi2-4.2.0/ubuntu/vbox/vboxsf/lnkops.c @@ -0,0 +1,75 @@ +/** @file + * + * vboxsf -- VirtualBox Guest Additions for Linux: + * Operations for symbolic links. + */ + +/* + * Copyright (C) 2010-2011 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + */ + +#include "vfsmod.h" + +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 0) + +# if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 2, 0) +static const char *sf_follow_link(struct dentry *dentry, void **cookie) +# else +static void *sf_follow_link(struct dentry *dentry, struct nameidata *nd) +# endif +{ + struct inode *inode = dentry->d_inode; + struct sf_glob_info *sf_g = GET_GLOB_INFO(inode->i_sb); + struct sf_inode_info *sf_i = GET_INODE_INFO(inode); + int error = -ENOMEM; + char *path = (char*)get_zeroed_page(GFP_KERNEL); + int rc; + + if (path) + { + error = 0; + rc = vboxReadLink(&client_handle, &sf_g->map, sf_i->path, PATH_MAX, path); + if (RT_FAILURE(rc)) + { + LogFunc(("vboxReadLink failed, caller=%s, rc=%Rrc\n", __func__, rc)); + free_page((unsigned long)path); + error = -EPROTO; + } + } +# if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 2, 0) + return error ? ERR_PTR(error) : (*cookie = path); +# else + nd_set_link(nd, error ? ERR_PTR(error) : path); + return NULL; +# endif +} + +# if LINUX_VERSION_CODE < KERNEL_VERSION(4, 2, 0) +static void sf_put_link(struct dentry *dentry, struct nameidata *nd, void *cookie) +{ + char *page = nd_get_link(nd); + if (!IS_ERR(page)) + free_page((unsigned long)page); +} +#endif + +struct inode_operations sf_lnk_iops = +{ + .readlink = generic_readlink, + .follow_link = sf_follow_link, +# if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 2, 0) + .put_link = free_page_put_link, +# else + .put_link = sf_put_link +# endif +}; + +#endif --- linux-raspi2-4.2.0.orig/ubuntu/vbox/vboxsf/moddi3.c +++ linux-raspi2-4.2.0/ubuntu/vbox/vboxsf/moddi3.c @@ -0,0 +1,70 @@ +/* $NetBSD: moddi3.c,v 1.8 2005/12/11 12:24:37 christos Exp $ */ + +/*- + * Copyright (c) 1992, 1993 + * The Regents of the University of California. All rights reserved. + * + * This software was developed by the Computer Systems Engineering group + * at Lawrence Berkeley Laboratory under DARPA contract BG 91-66 and + * contributed to Berkeley. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the University nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +/*#include +#if defined(LIBC_SCCS) && !defined(lint) +#if 0 +static char sccsid[] = "@(#)moddi3.c 8.1 (Berkeley) 6/4/93"; +#else +__RCSID("$NetBSD: moddi3.c,v 1.8 2005/12/11 12:24:37 christos Exp $"); +#endif +#endif*/ /* LIBC_SCCS and not lint */ + +#include "quad.h" + +/* + * Return remainder after dividing two signed quads. + * + * XXX we assume a % b < 0 iff a < 0, but this is actually machine-dependent. + */ +quad_t +__moddi3(a, b) + quad_t a, b; +{ + u_quad_t ua, ub, ur; + int neg = 0; + + ua = a; + ub = b; + + if (a < 0) + ua = -ua, neg ^= 1; + if (b < 0) + ub = -ub; + (void)__qdivrem(ua, ub, &ur); + if (neg) + ur = -ur; + return (ur); +} --- linux-raspi2-4.2.0.orig/ubuntu/vbox/vboxsf/product-generated.h +++ linux-raspi2-4.2.0/ubuntu/vbox/vboxsf/product-generated.h @@ -0,0 +1,10 @@ +#ifndef ___product_generated_h___ +#define ___product_generated_h___ + +#define VBOX_VENDOR "Oracle Corporation" +#define VBOX_VENDOR_SHORT "Oracle" +#define VBOX_PRODUCT "Oracle VM VirtualBox" +#define VBOX_BUILD_PUBLISHER "_Ubuntu" +#define VBOX_C_YEAR "2015" + +#endif --- linux-raspi2-4.2.0.orig/ubuntu/vbox/vboxsf/qdivrem.c +++ linux-raspi2-4.2.0/ubuntu/vbox/vboxsf/qdivrem.c @@ -0,0 +1,285 @@ +/* $NetBSD: qdivrem.c,v 1.12 2005/12/11 12:24:37 christos Exp $ */ + +/*- + * Copyright (c) 1992, 1993 + * The Regents of the University of California. All rights reserved. + * + * This software was developed by the Computer Systems Engineering group + * at Lawrence Berkeley Laboratory under DARPA contract BG 91-66 and + * contributed to Berkeley. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the University nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +/*#include +#if defined(LIBC_SCCS) && !defined(lint) +#if 0 +static char sccsid[] = "@(#)qdivrem.c 8.1 (Berkeley) 6/4/93"; +#else +__RCSID("$NetBSD: qdivrem.c,v 1.12 2005/12/11 12:24:37 christos Exp $"); +#endif +#endif*/ /* LIBC_SCCS and not lint */ + +/* + * Multiprecision divide. This algorithm is from Knuth vol. 2 (2nd ed), + * section 4.3.1, pp. 257--259. + */ + +#include "quad.h" + +#define B ((int)1 << HALF_BITS) /* digit base */ + +/* Combine two `digits' to make a single two-digit number. */ +#define COMBINE(a, b) (((u_int)(a) << HALF_BITS) | (b)) + +/* select a type for digits in base B: use unsigned short if they fit */ +#if UINT_MAX == 0xffffffffU && USHRT_MAX >= 0xffff +typedef unsigned short digit; +#else +typedef u_int digit; +#endif + +static void shl __P((digit *p, int len, int sh)); + +/* + * __qdivrem(u, v, rem) returns u/v and, optionally, sets *rem to u%v. + * + * We do this in base 2-sup-HALF_BITS, so that all intermediate products + * fit within u_int. As a consequence, the maximum length dividend and + * divisor are 4 `digits' in this base (they are shorter if they have + * leading zeros). + */ +u_quad_t +__qdivrem(uq, vq, arq) + u_quad_t uq, vq, *arq; +{ + union uu tmp; + digit *u, *v, *q; + digit v1, v2; + u_int qhat, rhat, t; + int m, n, d, j, i; + digit uspace[5], vspace[5], qspace[5]; + + /* + * Take care of special cases: divide by zero, and u < v. + */ + if (vq == 0) { + /* divide by zero. */ + static volatile const unsigned int zero = 0; + + tmp.ul[H] = tmp.ul[L] = 1 / zero; + if (arq) + *arq = uq; + return (tmp.q); + } + if (uq < vq) { + if (arq) + *arq = uq; + return (0); + } + u = &uspace[0]; + v = &vspace[0]; + q = &qspace[0]; + + /* + * Break dividend and divisor into digits in base B, then + * count leading zeros to determine m and n. When done, we + * will have: + * u = (u[1]u[2]...u[m+n]) sub B + * v = (v[1]v[2]...v[n]) sub B + * v[1] != 0 + * 1 < n <= 4 (if n = 1, we use a different division algorithm) + * m >= 0 (otherwise u < v, which we already checked) + * m + n = 4 + * and thus + * m = 4 - n <= 2 + */ + tmp.uq = uq; + u[0] = 0; + u[1] = (digit)HHALF(tmp.ul[H]); + u[2] = (digit)LHALF(tmp.ul[H]); + u[3] = (digit)HHALF(tmp.ul[L]); + u[4] = (digit)LHALF(tmp.ul[L]); + tmp.uq = vq; + v[1] = (digit)HHALF(tmp.ul[H]); + v[2] = (digit)LHALF(tmp.ul[H]); + v[3] = (digit)HHALF(tmp.ul[L]); + v[4] = (digit)LHALF(tmp.ul[L]); + for (n = 4; v[1] == 0; v++) { + if (--n == 1) { + u_int rbj; /* r*B+u[j] (not root boy jim) */ + digit q1, q2, q3, q4; + + /* + * Change of plan, per exercise 16. + * r = 0; + * for j = 1..4: + * q[j] = floor((r*B + u[j]) / v), + * r = (r*B + u[j]) % v; + * We unroll this completely here. + */ + t = v[2]; /* nonzero, by definition */ + q1 = (digit)(u[1] / t); + rbj = COMBINE(u[1] % t, u[2]); + q2 = (digit)(rbj / t); + rbj = COMBINE(rbj % t, u[3]); + q3 = (digit)(rbj / t); + rbj = COMBINE(rbj % t, u[4]); + q4 = (digit)(rbj / t); + if (arq) + *arq = rbj % t; + tmp.ul[H] = COMBINE(q1, q2); + tmp.ul[L] = COMBINE(q3, q4); + return (tmp.q); + } + } + + /* + * By adjusting q once we determine m, we can guarantee that + * there is a complete four-digit quotient at &qspace[1] when + * we finally stop. + */ + for (m = 4 - n; u[1] == 0; u++) + m--; + for (i = 4 - m; --i >= 0;) + q[i] = 0; + q += 4 - m; + + /* + * Here we run Program D, translated from MIX to C and acquiring + * a few minor changes. + * + * D1: choose multiplier 1 << d to ensure v[1] >= B/2. + */ + d = 0; + for (t = v[1]; t < B / 2; t <<= 1) + d++; + if (d > 0) { + shl(&u[0], m + n, d); /* u <<= d */ + shl(&v[1], n - 1, d); /* v <<= d */ + } + /* + * D2: j = 0. + */ + j = 0; + v1 = v[1]; /* for D3 -- note that v[1..n] are constant */ + v2 = v[2]; /* for D3 */ + do { + digit uj0, uj1, uj2; + + /* + * D3: Calculate qhat (\^q, in TeX notation). + * Let qhat = min((u[j]*B + u[j+1])/v[1], B-1), and + * let rhat = (u[j]*B + u[j+1]) mod v[1]. + * While rhat < B and v[2]*qhat > rhat*B+u[j+2], + * decrement qhat and increase rhat correspondingly. + * Note that if rhat >= B, v[2]*qhat < rhat*B. + */ + uj0 = u[j + 0]; /* for D3 only -- note that u[j+...] change */ + uj1 = u[j + 1]; /* for D3 only */ + uj2 = u[j + 2]; /* for D3 only */ + if (uj0 == v1) { + qhat = B; + rhat = uj1; + goto qhat_too_big; + } else { + u_int nn = COMBINE(uj0, uj1); + qhat = nn / v1; + rhat = nn % v1; + } + while (v2 * qhat > COMBINE(rhat, uj2)) { + qhat_too_big: + qhat--; + if ((rhat += v1) >= B) + break; + } + /* + * D4: Multiply and subtract. + * The variable `t' holds any borrows across the loop. + * We split this up so that we do not require v[0] = 0, + * and to eliminate a final special case. + */ + for (t = 0, i = n; i > 0; i--) { + t = u[i + j] - v[i] * qhat - t; + u[i + j] = (digit)LHALF(t); + t = (B - HHALF(t)) & (B - 1); + } + t = u[j] - t; + u[j] = (digit)LHALF(t); + /* + * D5: test remainder. + * There is a borrow if and only if HHALF(t) is nonzero; + * in that (rare) case, qhat was too large (by exactly 1). + * Fix it by adding v[1..n] to u[j..j+n]. + */ + if (HHALF(t)) { + qhat--; + for (t = 0, i = n; i > 0; i--) { /* D6: add back. */ + t += u[i + j] + v[i]; + u[i + j] = (digit)LHALF(t); + t = HHALF(t); + } + u[j] = (digit)LHALF(u[j] + t); + } + q[j] = (digit)qhat; + } while (++j <= m); /* D7: loop on j. */ + + /* + * If caller wants the remainder, we have to calculate it as + * u[m..m+n] >> d (this is at most n digits and thus fits in + * u[m+1..m+n], but we may need more source digits). + */ + if (arq) { + if (d) { + for (i = m + n; i > m; --i) + u[i] = (digit)(((u_int)u[i] >> d) | + LHALF((u_int)u[i - 1] << (HALF_BITS - d))); + u[i] = 0; + } + tmp.ul[H] = COMBINE(uspace[1], uspace[2]); + tmp.ul[L] = COMBINE(uspace[3], uspace[4]); + *arq = tmp.q; + } + + tmp.ul[H] = COMBINE(qspace[1], qspace[2]); + tmp.ul[L] = COMBINE(qspace[3], qspace[4]); + return (tmp.q); +} + +/* + * Shift p[0]..p[len] left `sh' bits, ignoring any bits that + * `fall out' the left (there never will be any such anyway). + * We may assume len >= 0. NOTE THAT THIS WRITES len+1 DIGITS. + */ +static void +shl(digit *p, int len, int sh) +{ + int i; + + for (i = 0; i < len; i++) + p[i] = (digit)(LHALF((u_int)p[i] << sh) | + ((u_int)p[i + 1] >> (HALF_BITS - sh))); + p[i] = (digit)(LHALF((u_int)p[i] << sh)); +} --- linux-raspi2-4.2.0.orig/ubuntu/vbox/vboxsf/quad.h +++ linux-raspi2-4.2.0/ubuntu/vbox/vboxsf/quad.h @@ -0,0 +1,165 @@ +/* $NetBSD: quad.h,v 1.17 2005/12/11 12:24:37 christos Exp $ */ + +/*- + * Copyright (c) 1992, 1993 + * The Regents of the University of California. All rights reserved. + * + * This software was developed by the Computer Systems Engineering group + * at Lawrence Berkeley Laboratory under DARPA contract BG 91-66 and + * contributed to Berkeley. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the University nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * @(#)quad.h 8.1 (Berkeley) 6/4/93 + */ + +/* + * Quad arithmetic. + * + * This library makes the following assumptions: + * + * - The type long long (aka quad_t) exists. + * + * - A quad variable is exactly twice as long as `int'. + * + * - The machine's arithmetic is two's complement. + * + * This library can provide 128-bit arithmetic on a machine with 128-bit + * quads and 64-bit ints, for instance, or 96-bit arithmetic on machines + * with 48-bit ints. + */ + +#if 0 /* iprt */ +#include +#if !defined(_KERNEL) && !defined(_STANDALONE) +#include +#else +#include +#endif +#else /* iprt */ +# include +# include +# undef __P +# define __P(a) a +# undef __GNUC_PREREQ__ +# define __GNUC_PREREQ__(m1,m2) 1 +# if 1 /* ASSUMES: little endian */ +# define _QUAD_HIGHWORD 1 +# define _QUAD_LOWWORD 0 +# else +# define _QUAD_HIGHWORD 0 +# define _QUAD_LOWWORD 1 +# endif +# if !defined(RT_OS_LINUX) || !defined(__KERNEL__) /* (linux/types.h defines u_int) */ + typedef unsigned int u_int; +# endif +# if !defined(RT_OS_SOLARIS) + typedef int64_t quad_t; +# else +# define quad_t int64_t +# endif + typedef uint64_t u_quad_t; + typedef quad_t *qaddr_t; +#endif /* iprt */ + +/* + * Depending on the desired operation, we view a `long long' (aka quad_t) in + * one or more of the following formats. + */ +union uu { + quad_t q; /* as a (signed) quad */ + u_quad_t uq; /* as an unsigned quad */ + int sl[2]; /* as two signed ints */ + u_int ul[2]; /* as two unsigned ints */ +}; + +/* + * Define high and low parts of a quad_t. + */ +#define H _QUAD_HIGHWORD +#define L _QUAD_LOWWORD + +/* + * Total number of bits in a quad_t and in the pieces that make it up. + * These are used for shifting, and also below for halfword extraction + * and assembly. + */ +#define QUAD_BITS (sizeof(quad_t) * CHAR_BIT) +#define INT_BITS (sizeof(int) * CHAR_BIT) +#define HALF_BITS (sizeof(int) * CHAR_BIT / 2) + +/* + * Extract high and low shortwords from longword, and move low shortword of + * longword to upper half of long, i.e., produce the upper longword of + * ((quad_t)(x) << (number_of_bits_in_int/2)). (`x' must actually be u_int.) + * + * These are used in the multiply code, to split a longword into upper + * and lower halves, and to reassemble a product as a quad_t, shifted left + * (sizeof(int)*CHAR_BIT/2). + */ +#define HHALF(x) ((u_int)(x) >> HALF_BITS) +#define LHALF(x) ((u_int)(x) & (((int)1 << HALF_BITS) - 1)) +#define LHUP(x) ((u_int)(x) << HALF_BITS) + +/* + * XXX + * Compensate for gcc 1 vs gcc 2. Gcc 1 defines ?sh?di3's second argument + * as u_quad_t, while gcc 2 correctly uses int. Unfortunately, we still use + * both compilers. + */ +#if __GNUC_PREREQ__(2, 0) || defined(lint) +typedef unsigned int qshift_t; +#else +typedef u_quad_t qshift_t; +#endif + +RT_C_DECLS_BEGIN +quad_t __adddi3 __P((quad_t, quad_t)); +quad_t __anddi3 __P((quad_t, quad_t)); +quad_t __ashldi3 __P((quad_t, qshift_t)); +quad_t __ashrdi3 __P((quad_t, qshift_t)); +int __cmpdi2 __P((quad_t, quad_t )); +quad_t __divdi3 __P((quad_t, quad_t)); +quad_t __fixdfdi __P((double)); +quad_t __fixsfdi __P((float)); +u_quad_t __fixunsdfdi __P((double)); +u_quad_t __fixunssfdi __P((float)); +double __floatdidf __P((quad_t)); +float __floatdisf __P((quad_t)); +double __floatunsdidf __P((u_quad_t)); +quad_t __iordi3 __P((quad_t, quad_t)); +quad_t __lshldi3 __P((quad_t, qshift_t)); +quad_t __lshrdi3 __P((quad_t, qshift_t)); +quad_t __moddi3 __P((quad_t, quad_t)); +quad_t __muldi3 __P((quad_t, quad_t)); +quad_t __negdi2 __P((quad_t)); +quad_t __one_cmpldi2 __P((quad_t)); +u_quad_t __qdivrem __P((u_quad_t, u_quad_t, u_quad_t *)); +quad_t __subdi3 __P((quad_t, quad_t)); +int __ucmpdi2 __P((u_quad_t, u_quad_t)); +u_quad_t __udivdi3 __P((u_quad_t, u_quad_t )); +u_quad_t __umoddi3 __P((u_quad_t, u_quad_t )); +quad_t __xordi3 __P((quad_t, quad_t)); +RT_C_DECLS_END --- linux-raspi2-4.2.0.orig/ubuntu/vbox/vboxsf/regops.c +++ linux-raspi2-4.2.0/ubuntu/vbox/vboxsf/regops.c @@ -0,0 +1,734 @@ +/* $Id: regops.c $ */ +/** @file + * vboxsf - VBox Linux Shared Folders, Regular file inode and file operations. + */ + +/* + * Copyright (C) 2006-2012 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + */ + +/* + * Limitations: only COW memory mapping is supported + */ + +#include "vfsmod.h" + +static void *alloc_bounce_buffer(size_t *tmp_sizep, PRTCCPHYS physp, size_t + xfer_size, const char *caller) +{ + size_t tmp_size; + void *tmp; + + /* try for big first. */ + tmp_size = RT_ALIGN_Z(xfer_size, PAGE_SIZE); + if (tmp_size > 16U*_1K) + tmp_size = 16U*_1K; + tmp = kmalloc(tmp_size, GFP_KERNEL); + if (!tmp) + { + /* fall back on a page sized buffer. */ + tmp = kmalloc(PAGE_SIZE, GFP_KERNEL); + if (!tmp) + { + LogRel(("%s: could not allocate bounce buffer for xfer_size=%zu %s\n", caller, xfer_size)); + return NULL; + } + tmp_size = PAGE_SIZE; + } + + *tmp_sizep = tmp_size; + *physp = virt_to_phys(tmp); + return tmp; +} + +static void free_bounce_buffer(void *tmp) +{ + kfree (tmp); +} + + +/* fops */ +static int sf_reg_read_aux(const char *caller, struct sf_glob_info *sf_g, + struct sf_reg_info *sf_r, void *buf, + uint32_t *nread, uint64_t pos) +{ + /** @todo bird: yes, kmap() and kmalloc() input only. Since the buffer is + * contiguous in physical memory (kmalloc or single page), we should + * use a physical address here to speed things up. */ + int rc = vboxCallRead(&client_handle, &sf_g->map, sf_r->handle, + pos, nread, buf, false /* already locked? */); + if (RT_FAILURE(rc)) + { + LogFunc(("vboxCallRead failed. caller=%s, rc=%Rrc\n", caller, rc)); + return -EPROTO; + } + return 0; +} + +static int sf_reg_write_aux(const char *caller, struct sf_glob_info *sf_g, + struct sf_reg_info *sf_r, void *buf, + uint32_t *nwritten, uint64_t pos) +{ + /** @todo bird: yes, kmap() and kmalloc() input only. Since the buffer is + * contiguous in physical memory (kmalloc or single page), we should + * use a physical address here to speed things up. */ + int rc = vboxCallWrite(&client_handle, &sf_g->map, sf_r->handle, + pos, nwritten, buf, false /* already locked? */); + if (RT_FAILURE(rc)) + { + LogFunc(("vboxCallWrite failed. caller=%s, rc=%Rrc\n", + caller, rc)); + return -EPROTO; + } + return 0; +} + +/** + * Read from a regular file. + * + * @param file the file + * @param buf the buffer + * @param size length of the buffer + * @param off offset within the file + * @returns the number of read bytes on success, Linux error code otherwise + */ +static ssize_t sf_reg_read(struct file *file, char *buf, size_t size, loff_t *off) +{ + int err; + void *tmp; + RTCCPHYS tmp_phys; + size_t tmp_size; + size_t left = size; + ssize_t total_bytes_read = 0; + struct inode *inode = GET_F_DENTRY(file)->d_inode; + struct sf_glob_info *sf_g = GET_GLOB_INFO(inode->i_sb); + struct sf_reg_info *sf_r = file->private_data; + loff_t pos = *off; + + TRACE(); + if (!S_ISREG(inode->i_mode)) + { + LogFunc(("read from non regular file %d\n", inode->i_mode)); + return -EINVAL; + } + + /** XXX Check read permission according to inode->i_mode! */ + + if (!size) + return 0; + + tmp = alloc_bounce_buffer(&tmp_size, &tmp_phys, size, __PRETTY_FUNCTION__); + if (!tmp) + return -ENOMEM; + + while (left) + { + uint32_t to_read, nread; + + to_read = tmp_size; + if (to_read > left) + to_read = (uint32_t) left; + + nread = to_read; + + err = sf_reg_read_aux(__func__, sf_g, sf_r, tmp, &nread, pos); + if (err) + goto fail; + + if (copy_to_user(buf, tmp, nread)) + { + err = -EFAULT; + goto fail; + } + + pos += nread; + left -= nread; + buf += nread; + total_bytes_read += nread; + if (nread != to_read) + break; + } + + *off += total_bytes_read; + free_bounce_buffer(tmp); + return total_bytes_read; + +fail: + free_bounce_buffer(tmp); + return err; +} + +/** + * Write to a regular file. + * + * @param file the file + * @param buf the buffer + * @param size length of the buffer + * @param off offset within the file + * @returns the number of written bytes on success, Linux error code otherwise + */ +static ssize_t sf_reg_write(struct file *file, const char *buf, size_t size, loff_t *off) +{ + int err; + void *tmp; + RTCCPHYS tmp_phys; + size_t tmp_size; + size_t left = size; + ssize_t total_bytes_written = 0; + struct inode *inode = GET_F_DENTRY(file)->d_inode; + struct sf_inode_info *sf_i = GET_INODE_INFO(inode); + struct sf_glob_info *sf_g = GET_GLOB_INFO(inode->i_sb); + struct sf_reg_info *sf_r = file->private_data; + loff_t pos; + + TRACE(); + BUG_ON(!sf_i); + BUG_ON(!sf_g); + BUG_ON(!sf_r); + + if (!S_ISREG(inode->i_mode)) + { + LogFunc(("write to non regular file %d\n", inode->i_mode)); + return -EINVAL; + } + + pos = *off; + if (file->f_flags & O_APPEND) + { + pos = inode->i_size; + *off = pos; + } + + /** XXX Check write permission according to inode->i_mode! */ + + if (!size) + return 0; + + tmp = alloc_bounce_buffer(&tmp_size, &tmp_phys, size, __PRETTY_FUNCTION__); + if (!tmp) + return -ENOMEM; + + while (left) + { + uint32_t to_write, nwritten; + + to_write = tmp_size; + if (to_write > left) + to_write = (uint32_t) left; + + nwritten = to_write; + + if (copy_from_user(tmp, buf, to_write)) + { + err = -EFAULT; + goto fail; + } + +#if 1 + if (VbglR0CanUsePhysPageList()) + { + err = VbglR0SfWritePhysCont(&client_handle, &sf_g->map, sf_r->handle, + pos, &nwritten, tmp_phys); + err = RT_FAILURE(err) ? -EPROTO : 0; + } + else +#endif + err = sf_reg_write_aux(__func__, sf_g, sf_r, tmp, &nwritten, pos); + if (err) + goto fail; + + pos += nwritten; + left -= nwritten; + buf += nwritten; + total_bytes_written += nwritten; + if (nwritten != to_write) + break; + } + + *off += total_bytes_written; + if (*off > inode->i_size) + inode->i_size = *off; + + sf_i->force_restat = 1; + free_bounce_buffer(tmp); + return total_bytes_written; + +fail: + free_bounce_buffer(tmp); + return err; +} + +/** + * Open a regular file. + * + * @param inode the inode + * @param file the file + * @returns 0 on success, Linux error code otherwise + */ +static int sf_reg_open(struct inode *inode, struct file *file) +{ + int rc, rc_linux = 0; + struct sf_glob_info *sf_g = GET_GLOB_INFO(inode->i_sb); + struct sf_inode_info *sf_i = GET_INODE_INFO(inode); + struct sf_reg_info *sf_r; + SHFLCREATEPARMS params; + + TRACE(); + BUG_ON(!sf_g); + BUG_ON(!sf_i); + + LogFunc(("open %s\n", sf_i->path->String.utf8)); + + sf_r = kmalloc(sizeof(*sf_r), GFP_KERNEL); + if (!sf_r) + { + LogRelFunc(("could not allocate reg info\n")); + return -ENOMEM; + } + + /* Already open? */ + if (sf_i->handle != SHFL_HANDLE_NIL) + { + /* + * This inode was created with sf_create_aux(). Check the CreateFlags: + * O_CREAT, O_TRUNC: inherent true (file was just created). Not sure + * about the access flags (SHFL_CF_ACCESS_*). + */ + sf_i->force_restat = 1; + sf_r->handle = sf_i->handle; + sf_i->handle = SHFL_HANDLE_NIL; + sf_i->file = file; + file->private_data = sf_r; + return 0; + } + + RT_ZERO(params); + params.Handle = SHFL_HANDLE_NIL; + /* We check the value of params.Handle afterwards to find out if + * the call succeeded or failed, as the API does not seem to cleanly + * distinguish error and informational messages. + * + * Furthermore, we must set params.Handle to SHFL_HANDLE_NIL to + * make the shared folders host service use our fMode parameter */ + + if (file->f_flags & O_CREAT) + { + LogFunc(("O_CREAT set\n")); + params.CreateFlags |= SHFL_CF_ACT_CREATE_IF_NEW; + /* We ignore O_EXCL, as the Linux kernel seems to call create + beforehand itself, so O_EXCL should always fail. */ + if (file->f_flags & O_TRUNC) + { + LogFunc(("O_TRUNC set\n")); + params.CreateFlags |= ( SHFL_CF_ACT_OVERWRITE_IF_EXISTS + | SHFL_CF_ACCESS_WRITE); + } + else + params.CreateFlags |= SHFL_CF_ACT_OPEN_IF_EXISTS; + } + else + { + params.CreateFlags |= SHFL_CF_ACT_FAIL_IF_NEW; + if (file->f_flags & O_TRUNC) + { + LogFunc(("O_TRUNC set\n")); + params.CreateFlags |= ( SHFL_CF_ACT_OVERWRITE_IF_EXISTS + | SHFL_CF_ACCESS_WRITE); + } + } + + if (!(params.CreateFlags & SHFL_CF_ACCESS_READWRITE)) + { + switch (file->f_flags & O_ACCMODE) + { + case O_RDONLY: + params.CreateFlags |= SHFL_CF_ACCESS_READ; + break; + + case O_WRONLY: + params.CreateFlags |= SHFL_CF_ACCESS_WRITE; + break; + + case O_RDWR: + params.CreateFlags |= SHFL_CF_ACCESS_READWRITE; + break; + + default: + BUG (); + } + } + + if (file->f_flags & O_APPEND) + { + LogFunc(("O_APPEND set\n")); + params.CreateFlags |= SHFL_CF_ACCESS_APPEND; + } + + params.Info.Attr.fMode = inode->i_mode; + LogFunc(("sf_reg_open: calling vboxCallCreate, file %s, flags=%#x, %#x\n", + sf_i->path->String.utf8 , file->f_flags, params.CreateFlags)); + rc = vboxCallCreate(&client_handle, &sf_g->map, sf_i->path, ¶ms); + if (RT_FAILURE(rc)) + { + LogFunc(("vboxCallCreate failed flags=%d,%#x rc=%Rrc\n", + file->f_flags, params.CreateFlags, rc)); + kfree(sf_r); + return -RTErrConvertToErrno(rc); + } + + if (SHFL_HANDLE_NIL == params.Handle) + { + switch (params.Result) + { + case SHFL_PATH_NOT_FOUND: + case SHFL_FILE_NOT_FOUND: + rc_linux = -ENOENT; + break; + case SHFL_FILE_EXISTS: + rc_linux = -EEXIST; + break; + default: + break; + } + } + + sf_i->force_restat = 1; + sf_r->handle = params.Handle; + sf_i->file = file; + file->private_data = sf_r; + return rc_linux; +} + +/** + * Close a regular file. + * + * @param inode the inode + * @param file the file + * @returns 0 on success, Linux error code otherwise + */ +static int sf_reg_release(struct inode *inode, struct file *file) +{ + int rc; + struct sf_reg_info *sf_r; + struct sf_glob_info *sf_g; + struct sf_inode_info *sf_i = GET_INODE_INFO(inode); + + TRACE(); + sf_g = GET_GLOB_INFO(inode->i_sb); + sf_r = file->private_data; + + BUG_ON(!sf_g); + BUG_ON(!sf_r); + +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 4, 25) + /* See the smbfs source (file.c). mmap in particular can cause data to be + * written to the file after it is closed, which we can't cope with. We + * copy and paste the body of filemap_write_and_wait() here as it was not + * defined before 2.6.6 and not exported until quite a bit later. */ + /* filemap_write_and_wait(inode->i_mapping); */ + if ( inode->i_mapping->nrpages + && filemap_fdatawrite(inode->i_mapping) != -EIO) + filemap_fdatawait(inode->i_mapping); +#endif + rc = vboxCallClose(&client_handle, &sf_g->map, sf_r->handle); + if (RT_FAILURE(rc)) + LogFunc(("vboxCallClose failed rc=%Rrc\n", rc)); + + kfree(sf_r); + sf_i->file = NULL; + sf_i->handle = SHFL_HANDLE_NIL; + file->private_data = NULL; + return 0; +} + +#if LINUX_VERSION_CODE > KERNEL_VERSION(2, 6, 25) +static int sf_reg_fault(struct vm_area_struct *vma, struct vm_fault *vmf) +#elif LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 0) +static struct page *sf_reg_nopage(struct vm_area_struct *vma, unsigned long vaddr, int *type) +# define SET_TYPE(t) *type = (t) +#else /* LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 0) */ +static struct page *sf_reg_nopage(struct vm_area_struct *vma, unsigned long vaddr, int unused) +# define SET_TYPE(t) +#endif +{ + struct page *page; + char *buf; + loff_t off; + uint32_t nread = PAGE_SIZE; + int err; + struct file *file = vma->vm_file; + struct inode *inode = GET_F_DENTRY(file)->d_inode; + struct sf_glob_info *sf_g = GET_GLOB_INFO(inode->i_sb); + struct sf_reg_info *sf_r = file->private_data; + + TRACE(); +#if LINUX_VERSION_CODE > KERNEL_VERSION(2, 6, 25) + if (vmf->pgoff > vma->vm_end) + return VM_FAULT_SIGBUS; +#else + if (vaddr > vma->vm_end) + { + SET_TYPE(VM_FAULT_SIGBUS); + return NOPAGE_SIGBUS; + } +#endif + + /* Don't use GFP_HIGHUSER as long as sf_reg_read_aux() calls vboxCallRead() + * which works on virtual addresses. On Linux cannot reliably determine the + * physical address for high memory, see rtR0MemObjNativeLockKernel(). */ + page = alloc_page(GFP_USER); + if (!page) { + LogRelFunc(("failed to allocate page\n")); +#if LINUX_VERSION_CODE > KERNEL_VERSION(2, 6, 25) + return VM_FAULT_OOM; +#else + SET_TYPE(VM_FAULT_OOM); + return NOPAGE_OOM; +#endif + } + + buf = kmap(page); +#if LINUX_VERSION_CODE > KERNEL_VERSION(2, 6, 25) + off = (vmf->pgoff << PAGE_SHIFT); +#else + off = (vaddr - vma->vm_start) + (vma->vm_pgoff << PAGE_SHIFT); +#endif + err = sf_reg_read_aux(__func__, sf_g, sf_r, buf, &nread, off); + if (err) + { + kunmap(page); + put_page(page); +#if LINUX_VERSION_CODE > KERNEL_VERSION(2, 6, 25) + return VM_FAULT_SIGBUS; +#else + SET_TYPE(VM_FAULT_SIGBUS); + return NOPAGE_SIGBUS; +#endif + } + + BUG_ON (nread > PAGE_SIZE); + if (!nread) + { +#if LINUX_VERSION_CODE > KERNEL_VERSION(2, 6, 25) + clear_user_page(page_address(page), vmf->pgoff, page); +#elif LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 0) + clear_user_page(page_address(page), vaddr, page); +#else + clear_user_page(page_address(page), vaddr); +#endif + } + else + memset(buf + nread, 0, PAGE_SIZE - nread); + + flush_dcache_page(page); + kunmap(page); +#if LINUX_VERSION_CODE > KERNEL_VERSION(2, 6, 25) + vmf->page = page; + return 0; +#else + SET_TYPE(VM_FAULT_MAJOR); + return page; +#endif +} + +static struct vm_operations_struct sf_vma_ops = +{ +#if LINUX_VERSION_CODE > KERNEL_VERSION(2, 6, 25) + .fault = sf_reg_fault +#else + .nopage = sf_reg_nopage +#endif +}; + +static int sf_reg_mmap(struct file *file, struct vm_area_struct *vma) +{ + TRACE(); + if (vma->vm_flags & VM_SHARED) + { + LogFunc(("shared mmapping not available\n")); + return -EINVAL; + } + + vma->vm_ops = &sf_vma_ops; + return 0; +} + +struct file_operations sf_reg_fops = +{ + .read = sf_reg_read, + .open = sf_reg_open, + .write = sf_reg_write, + .release = sf_reg_release, + .mmap = sf_reg_mmap, +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 0) +# if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 23) + .splice_read = generic_file_splice_read, +# else + .sendfile = generic_file_sendfile, +# endif +# if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 16, 0) + .read_iter = generic_file_read_iter, + .write_iter = generic_file_write_iter, +# else + .aio_read = generic_file_aio_read, + .aio_write = generic_file_aio_write, +# endif +# if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 35) + .fsync = noop_fsync, +# else + .fsync = simple_sync_file, +# endif + .llseek = generic_file_llseek, +#endif +}; + + +struct inode_operations sf_reg_iops = +{ +#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 0) + .revalidate = sf_inode_revalidate +#else + .getattr = sf_getattr, + .setattr = sf_setattr +#endif +}; + + +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 0) +static int sf_readpage(struct file *file, struct page *page) +{ + struct inode *inode = GET_F_DENTRY(file)->d_inode; + struct sf_glob_info *sf_g = GET_GLOB_INFO(inode->i_sb); + struct sf_reg_info *sf_r = file->private_data; + uint32_t nread = PAGE_SIZE; + char *buf; + loff_t off = ((loff_t)page->index) << PAGE_SHIFT; + int ret; + + TRACE(); + + buf = kmap(page); + ret = sf_reg_read_aux(__func__, sf_g, sf_r, buf, &nread, off); + if (ret) + { + kunmap(page); + if (PageLocked(page)) + unlock_page(page); + return ret; + } + BUG_ON(nread > PAGE_SIZE); + memset(&buf[nread], 0, PAGE_SIZE - nread); + flush_dcache_page(page); + kunmap(page); + SetPageUptodate(page); + unlock_page(page); + return 0; +} + +static int +sf_writepage(struct page *page, struct writeback_control *wbc) +{ + struct address_space *mapping = page->mapping; + struct inode *inode = mapping->host; + struct sf_glob_info *sf_g = GET_GLOB_INFO(inode->i_sb); + struct sf_inode_info *sf_i = GET_INODE_INFO(inode); + struct file *file = sf_i->file; + struct sf_reg_info *sf_r = file->private_data; + char *buf; + uint32_t nwritten = PAGE_SIZE; + int end_index = inode->i_size >> PAGE_SHIFT; + loff_t off = ((loff_t) page->index) << PAGE_SHIFT; + int err; + + TRACE(); + + if (page->index >= end_index) + nwritten = inode->i_size & (PAGE_SIZE-1); + + buf = kmap(page); + + err = sf_reg_write_aux(__func__, sf_g, sf_r, buf, &nwritten, off); + if (err < 0) + { + ClearPageUptodate(page); + goto out; + } + + if (off > inode->i_size) + inode->i_size = off; + + if (PageError(page)) + ClearPageError(page); + err = 0; + +out: + kunmap(page); + + unlock_page(page); + return err; +} + +# if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 24) +int sf_write_begin(struct file *file, struct address_space *mapping, loff_t pos, + unsigned len, unsigned flags, struct page **pagep, void **fsdata) +{ + TRACE(); + + return simple_write_begin(file, mapping, pos, len, flags, pagep, fsdata); +} + +int sf_write_end(struct file *file, struct address_space *mapping, loff_t pos, + unsigned len, unsigned copied, struct page *page, void *fsdata) +{ + struct inode *inode = mapping->host; + struct sf_glob_info *sf_g = GET_GLOB_INFO(inode->i_sb); + struct sf_reg_info *sf_r = file->private_data; + void *buf; + unsigned from = pos & (PAGE_SIZE - 1); + uint32_t nwritten = len; + int err; + + TRACE(); + + buf = kmap(page); + err = sf_reg_write_aux(__func__, sf_g, sf_r, buf+from, &nwritten, pos); + kunmap(page); + + if (!PageUptodate(page) && err == PAGE_SIZE) + SetPageUptodate(page); + + if (err >= 0) { + pos += nwritten; + if (pos > inode->i_size) + inode->i_size = pos; + } + + unlock_page(page); + page_cache_release(page); + + return nwritten; +} + +# endif /* KERNEL_VERSION >= 2.6.24 */ + +struct address_space_operations sf_reg_aops = +{ + .readpage = sf_readpage, + .writepage = sf_writepage, +# if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 24) + .write_begin = sf_write_begin, + .write_end = sf_write_end, +# else + .prepare_write = simple_prepare_write, + .commit_write = simple_commit_write, +# endif +}; +#endif --- linux-raspi2-4.2.0.orig/ubuntu/vbox/vboxsf/udivdi3.c +++ linux-raspi2-4.2.0/ubuntu/vbox/vboxsf/udivdi3.c @@ -0,0 +1,56 @@ +/* $NetBSD: udivdi3.c,v 1.8 2005/12/11 12:24:37 christos Exp $ */ + +/*- + * Copyright (c) 1992, 1993 + * The Regents of the University of California. All rights reserved. + * + * This software was developed by the Computer Systems Engineering group + * at Lawrence Berkeley Laboratory under DARPA contract BG 91-66 and + * contributed to Berkeley. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the University nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +/*#include +#if defined(LIBC_SCCS) && !defined(lint) +#if 0 +static char sccsid[] = "@(#)udivdi3.c 8.1 (Berkeley) 6/4/93"; +#else +__RCSID("$NetBSD: udivdi3.c,v 1.8 2005/12/11 12:24:37 christos Exp $"); +#endif +#endif*/ /* LIBC_SCCS and not lint */ + +#include "quad.h" + +/* + * Divide two unsigned quads. + */ +u_quad_t +__udivdi3(a, b) + u_quad_t a, b; +{ + + return (__qdivrem(a, b, (u_quad_t *)0)); +} --- linux-raspi2-4.2.0.orig/ubuntu/vbox/vboxsf/umoddi3.c +++ linux-raspi2-4.2.0/ubuntu/vbox/vboxsf/umoddi3.c @@ -0,0 +1,58 @@ +/* $NetBSD: umoddi3.c,v 1.8 2005/12/11 12:24:37 christos Exp $ */ + +/*- + * Copyright (c) 1992, 1993 + * The Regents of the University of California. All rights reserved. + * + * This software was developed by the Computer Systems Engineering group + * at Lawrence Berkeley Laboratory under DARPA contract BG 91-66 and + * contributed to Berkeley. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the University nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +/*#include +#if defined(LIBC_SCCS) && !defined(lint) +#if 0 +static char sccsid[] = "@(#)umoddi3.c 8.1 (Berkeley) 6/4/93"; +#else +__RCSID("$NetBSD: umoddi3.c,v 1.8 2005/12/11 12:24:37 christos Exp $"); +#endif +#endif*/ /* LIBC_SCCS and not lint */ + +#include "quad.h" + +/* + * Return remainder after dividing two unsigned quads. + */ +u_quad_t +__umoddi3(a, b) + u_quad_t a, b; +{ + u_quad_t r; + + (void)__qdivrem(a, b, &r); + return (r); +} --- linux-raspi2-4.2.0.orig/ubuntu/vbox/vboxsf/utils.c +++ linux-raspi2-4.2.0/ubuntu/vbox/vboxsf/utils.c @@ -0,0 +1,900 @@ +/** @file + * + * vboxsf -- VirtualBox Guest Additions for Linux: + * Utility functions. + * Mainly conversion from/to VirtualBox/Linux data structures + */ + +/* + * Copyright (C) 2006-2012 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + */ + +#include "vfsmod.h" +#include +#include +#include + +/* #define USE_VMALLOC */ + +/* + * sf_reg_aops and sf_backing_dev_info are just quick implementations to make + * sendfile work. For more information have a look at + * + * http://us1.samba.org/samba/ftp/cifs-cvs/ols2006-fs-tutorial-smf.odp + * + * and the sample implementation + * + * http://pserver.samba.org/samba/ftp/cifs-cvs/samplefs.tar.gz + */ + +#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 0) +static void sf_ftime_from_timespec(time_t *time, RTTIMESPEC *ts) +{ + int64_t t = RTTimeSpecGetNano(ts); + + do_div(t, 1000000000); + *time = t; +} + +static void sf_timespec_from_ftime(RTTIMESPEC *ts, time_t *time) +{ + int64_t t = 1000000000 * *time; + RTTimeSpecSetNano(ts, t); +} +#else /* >= 2.6.0 */ +static void sf_ftime_from_timespec(struct timespec *tv, RTTIMESPEC *ts) +{ + int64_t t = RTTimeSpecGetNano(ts); + int64_t nsec; + + nsec = do_div(t, 1000000000); + tv->tv_sec = t; + tv->tv_nsec = nsec; +} + +static void sf_timespec_from_ftime(RTTIMESPEC *ts, struct timespec *tv) +{ + int64_t t = (int64_t)tv->tv_nsec + (int64_t)tv->tv_sec * 1000000000; + RTTimeSpecSetNano(ts, t); +} +#endif /* >= 2.6.0 */ + +/* set [inode] attributes based on [info], uid/gid based on [sf_g] */ +void sf_init_inode(struct sf_glob_info *sf_g, struct inode *inode, + PSHFLFSOBJINFO info) +{ + PSHFLFSOBJATTR attr; + int mode; + + TRACE(); + + attr = &info->Attr; + +#define mode_set(r) attr->fMode & (RTFS_UNIX_##r) ? (S_##r) : 0; + mode = mode_set(ISUID); + mode |= mode_set(ISGID); + + mode |= mode_set(IRUSR); + mode |= mode_set(IWUSR); + mode |= mode_set(IXUSR); + + mode |= mode_set(IRGRP); + mode |= mode_set(IWGRP); + mode |= mode_set(IXGRP); + + mode |= mode_set(IROTH); + mode |= mode_set(IWOTH); + mode |= mode_set(IXOTH); + +#undef mode_set + +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 0) + inode->i_mapping->a_ops = &sf_reg_aops; +# if LINUX_VERSION_CODE <= KERNEL_VERSION(3, 19, 0) + /* XXX Was this ever necessary? */ + inode->i_mapping->backing_dev_info = &sf_g->bdi; +# endif +#endif + + if (RTFS_IS_DIRECTORY(attr->fMode)) + { + inode->i_mode = sf_g->dmode != ~0 ? (sf_g->dmode & 0777) : mode; + inode->i_mode &= ~sf_g->dmask; + inode->i_mode |= S_IFDIR; + inode->i_op = &sf_dir_iops; + inode->i_fop = &sf_dir_fops; + /* XXX: this probably should be set to the number of entries + in the directory plus two (. ..) */ +#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 2, 0) + set_nlink(inode, 1); +#else + inode->i_nlink = 1; +#endif + } +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 0) + else if (RTFS_IS_SYMLINK(attr->fMode)) + { + inode->i_mode = sf_g->fmode != ~0 ? (sf_g->fmode & 0777): mode; + inode->i_mode &= ~sf_g->fmask; + inode->i_mode |= S_IFLNK; + inode->i_op = &sf_lnk_iops; +# if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 2, 0) + set_nlink(inode, 1); +# else + inode->i_nlink = 1; +# endif + } +#endif + else + { + inode->i_mode = sf_g->fmode != ~0 ? (sf_g->fmode & 0777): mode; + inode->i_mode &= ~sf_g->fmask; + inode->i_mode |= S_IFREG; + inode->i_op = &sf_reg_iops; + inode->i_fop = &sf_reg_fops; +#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 2, 0) + set_nlink(inode, 1); +#else + inode->i_nlink = 1; +#endif + } + +#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 5, 0) + inode->i_uid = make_kuid(current_user_ns(), sf_g->uid); + inode->i_gid = make_kgid(current_user_ns(), sf_g->gid); +#else + inode->i_uid = sf_g->uid; + inode->i_gid = sf_g->gid; +#endif + + inode->i_size = info->cbObject; +#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 19) && !defined(KERNEL_FC6) + inode->i_blksize = 4096; +#endif +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 4, 11) + inode->i_blkbits = 12; +#endif + /* i_blocks always in units of 512 bytes! */ + inode->i_blocks = (info->cbAllocated + 511) / 512; + + sf_ftime_from_timespec(&inode->i_atime, &info->AccessTime); + sf_ftime_from_timespec(&inode->i_ctime, &info->ChangeTime); + sf_ftime_from_timespec(&inode->i_mtime, &info->ModificationTime); +} + +int sf_stat(const char *caller, struct sf_glob_info *sf_g, + SHFLSTRING *path, PSHFLFSOBJINFO result, int ok_to_fail) +{ + int rc; + SHFLCREATEPARMS params; + NOREF(caller); + + TRACE(); + + RT_ZERO(params); + params.Handle = SHFL_HANDLE_NIL; + params.CreateFlags = SHFL_CF_LOOKUP | SHFL_CF_ACT_FAIL_IF_NEW; + LogFunc(("sf_stat: calling vboxCallCreate, file %s, flags %#x\n", + path->String.utf8, params.CreateFlags)); + rc = vboxCallCreate(&client_handle, &sf_g->map, path, ¶ms); + if (rc == VERR_INVALID_NAME) + { + /* this can happen for names like 'foo*' on a Windows host */ + return -ENOENT; + } + if (RT_FAILURE(rc)) + { + LogFunc(("vboxCallCreate(%s) failed. caller=%s, rc=%Rrc\n", + path->String.utf8, rc, caller)); + return -EPROTO; + } + if (params.Result != SHFL_FILE_EXISTS) + { + if (!ok_to_fail) + LogFunc(("vboxCallCreate(%s) file does not exist. caller=%s, result=%d\n", + path->String.utf8, params.Result, caller)); + return -ENOENT; + } + + *result = params.Info; + return 0; +} + +/* this is called directly as iop on 2.4, indirectly as dop + [sf_dentry_revalidate] on 2.4/2.6, indirectly as iop through + [sf_getattr] on 2.6. the job is to find out whether dentry/inode is + still valid. the test is failed if [dentry] does not have an inode + or [sf_stat] is unsuccessful, otherwise we return success and + update inode attributes */ +int sf_inode_revalidate(struct dentry *dentry) +{ + int err; + struct sf_glob_info *sf_g; + struct sf_inode_info *sf_i; + SHFLFSOBJINFO info; + + TRACE(); + if (!dentry || !dentry->d_inode) + { + LogFunc(("no dentry(%p) or inode(%p)\n", dentry, dentry->d_inode)); + return -EINVAL; + } + + sf_g = GET_GLOB_INFO(dentry->d_inode->i_sb); + sf_i = GET_INODE_INFO(dentry->d_inode); + +#if 0 + printk("%s called by %p:%p\n", + sf_i->path->String.utf8, + __builtin_return_address (0), + __builtin_return_address (1)); +#endif + + BUG_ON(!sf_g); + BUG_ON(!sf_i); + + if (!sf_i->force_restat) + { + if (jiffies - dentry->d_time < sf_g->ttl) + return 0; + } + + err = sf_stat(__func__, sf_g, sf_i->path, &info, 1); + if (err) + return err; + + dentry->d_time = jiffies; + sf_init_inode(sf_g, dentry->d_inode, &info); + return 0; +} + +/* this is called during name resolution/lookup to check if the + [dentry] in the cache is still valid. the job is handled by + [sf_inode_revalidate] */ +static int +#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 6, 0) +sf_dentry_revalidate(struct dentry *dentry, unsigned flags) +#elif LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 0) +sf_dentry_revalidate(struct dentry *dentry, struct nameidata *nd) +#else +sf_dentry_revalidate(struct dentry *dentry, int flags) +#endif +{ + TRACE(); + +#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 6, 0) + if (flags & LOOKUP_RCU) + return -ECHILD; +#elif LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 38) + /* see Documentation/filesystems/vfs.txt */ + if (nd && nd->flags & LOOKUP_RCU) + return -ECHILD; +#endif + + if (sf_inode_revalidate(dentry)) + return 0; + + return 1; +} + +/* on 2.6 this is a proxy for [sf_inode_revalidate] which (as a side + effect) updates inode attributes for [dentry] (given that [dentry] + has inode at all) from these new attributes we derive [kstat] via + [generic_fillattr] */ +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 0) +int sf_getattr(struct vfsmount *mnt, struct dentry *dentry, struct kstat *kstat) +{ + int err; + + TRACE(); + err = sf_inode_revalidate(dentry); + if (err) + return err; + + generic_fillattr(dentry->d_inode, kstat); + return 0; +} + +int sf_setattr(struct dentry *dentry, struct iattr *iattr) +{ + struct sf_glob_info *sf_g; + struct sf_inode_info *sf_i; + SHFLCREATEPARMS params; + SHFLFSOBJINFO info; + uint32_t cbBuffer; + int rc, err; + + TRACE(); + + sf_g = GET_GLOB_INFO(dentry->d_inode->i_sb); + sf_i = GET_INODE_INFO(dentry->d_inode); + err = 0; + + RT_ZERO(params); + params.Handle = SHFL_HANDLE_NIL; + params.CreateFlags = SHFL_CF_ACT_OPEN_IF_EXISTS + | SHFL_CF_ACT_FAIL_IF_NEW + | SHFL_CF_ACCESS_ATTR_WRITE; + + /* this is at least required for Posix hosts */ + if (iattr->ia_valid & ATTR_SIZE) + params.CreateFlags |= SHFL_CF_ACCESS_WRITE; + + rc = vboxCallCreate(&client_handle, &sf_g->map, sf_i->path, ¶ms); + if (RT_FAILURE(rc)) + { + LogFunc(("vboxCallCreate(%s) failed rc=%Rrc\n", + sf_i->path->String.utf8, rc)); + err = -RTErrConvertToErrno(rc); + goto fail2; + } + if (params.Result != SHFL_FILE_EXISTS) + { + LogFunc(("file %s does not exist\n", sf_i->path->String.utf8)); + err = -ENOENT; + goto fail1; + } + + /* Setting the file size and setting the other attributes has to be + * handled separately, see implementation of vbsfSetFSInfo() in + * vbsf.cpp */ + if (iattr->ia_valid & (ATTR_MODE | ATTR_ATIME | ATTR_MTIME)) + { +#define mode_set(r) ((iattr->ia_mode & (S_##r)) ? RTFS_UNIX_##r : 0) + + RT_ZERO(info); + if (iattr->ia_valid & ATTR_MODE) + { + info.Attr.fMode = mode_set(ISUID); + info.Attr.fMode |= mode_set(ISGID); + info.Attr.fMode |= mode_set(IRUSR); + info.Attr.fMode |= mode_set(IWUSR); + info.Attr.fMode |= mode_set(IXUSR); + info.Attr.fMode |= mode_set(IRGRP); + info.Attr.fMode |= mode_set(IWGRP); + info.Attr.fMode |= mode_set(IXGRP); + info.Attr.fMode |= mode_set(IROTH); + info.Attr.fMode |= mode_set(IWOTH); + info.Attr.fMode |= mode_set(IXOTH); + + if (iattr->ia_mode & S_IFDIR) + info.Attr.fMode |= RTFS_TYPE_DIRECTORY; + else + info.Attr.fMode |= RTFS_TYPE_FILE; + } + + if (iattr->ia_valid & ATTR_ATIME) + sf_timespec_from_ftime(&info.AccessTime, &iattr->ia_atime); + if (iattr->ia_valid & ATTR_MTIME) + sf_timespec_from_ftime(&info.ModificationTime, &iattr->ia_mtime); + /* ignore ctime (inode change time) as it can't be set from userland anyway */ + + cbBuffer = sizeof(info); + rc = vboxCallFSInfo(&client_handle, &sf_g->map, params.Handle, + SHFL_INFO_SET | SHFL_INFO_FILE, &cbBuffer, + (PSHFLDIRINFO)&info); + if (RT_FAILURE(rc)) + { + LogFunc(("vboxCallFSInfo(%s, FILE) failed rc=%Rrc\n", + sf_i->path->String.utf8, rc)); + err = -RTErrConvertToErrno(rc); + goto fail1; + } + } + + if (iattr->ia_valid & ATTR_SIZE) + { + RT_ZERO(info); + info.cbObject = iattr->ia_size; + cbBuffer = sizeof(info); + rc = vboxCallFSInfo(&client_handle, &sf_g->map, params.Handle, + SHFL_INFO_SET | SHFL_INFO_SIZE, &cbBuffer, + (PSHFLDIRINFO)&info); + if (RT_FAILURE(rc)) + { + LogFunc(("vboxCallFSInfo(%s, SIZE) failed rc=%Rrc\n", + sf_i->path->String.utf8, rc)); + err = -RTErrConvertToErrno(rc); + goto fail1; + } + } + + rc = vboxCallClose(&client_handle, &sf_g->map, params.Handle); + if (RT_FAILURE(rc)) + LogFunc(("vboxCallClose(%s) failed rc=%Rrc\n", sf_i->path->String.utf8, rc)); + + return sf_inode_revalidate(dentry); + +fail1: + rc = vboxCallClose(&client_handle, &sf_g->map, params.Handle); + if (RT_FAILURE(rc)) + LogFunc(("vboxCallClose(%s) failed rc=%Rrc\n", sf_i->path->String.utf8, rc)); + +fail2: + return err; +} +#endif /* >= 2.6.0 */ + +static int sf_make_path(const char *caller, struct sf_inode_info *sf_i, + const char *d_name, size_t d_len, SHFLSTRING **result) +{ + size_t path_len, shflstring_len; + SHFLSTRING *tmp; + uint16_t p_len; + uint8_t *p_name; + int fRoot = 0; + + TRACE(); + p_len = sf_i->path->u16Length; + p_name = sf_i->path->String.utf8; + + if (p_len == 1 && *p_name == '/') + { + path_len = d_len + 1; + fRoot = 1; + } + else + { + /* lengths of constituents plus terminating zero plus slash */ + path_len = p_len + d_len + 2; + if (path_len > 0xffff) + { + LogFunc(("path too long. caller=%s, path_len=%zu\n", caller, path_len)); + return -ENAMETOOLONG; + } + } + + shflstring_len = offsetof(SHFLSTRING, String.utf8) + path_len; + tmp = kmalloc(shflstring_len, GFP_KERNEL); + if (!tmp) + { + LogRelFunc(("kmalloc failed, caller=%s\n", caller)); + return -ENOMEM; + } + tmp->u16Length = path_len - 1; + tmp->u16Size = path_len; + + if (fRoot) + memcpy(&tmp->String.utf8[0], d_name, d_len + 1); + else + { + memcpy(&tmp->String.utf8[0], p_name, p_len); + tmp->String.utf8[p_len] = '/'; + memcpy(&tmp->String.utf8[p_len + 1], d_name, d_len); + tmp->String.utf8[p_len + 1 + d_len] = '\0'; + } + + *result = tmp; + return 0; +} + +/** + * [dentry] contains string encoded in coding system that corresponds + * to [sf_g]->nls, we must convert it to UTF8 here and pass down to + * [sf_make_path] which will allocate SHFLSTRING and fill it in + */ +int sf_path_from_dentry(const char *caller, struct sf_glob_info *sf_g, + struct sf_inode_info *sf_i, struct dentry *dentry, + SHFLSTRING **result) +{ + int err; + const char *d_name; + size_t d_len; + const char *name; + size_t len = 0; + + TRACE(); + d_name = dentry->d_name.name; + d_len = dentry->d_name.len; + + if (sf_g->nls) + { + size_t in_len, i, out_bound_len; + const char *in; + char *out; + + in = d_name; + in_len = d_len; + + out_bound_len = PATH_MAX; + out = kmalloc(out_bound_len, GFP_KERNEL); + name = out; + + for (i = 0; i < d_len; ++i) + { + /* We renamed the linux kernel wchar_t type to linux_wchar_t in + the-linux-kernel.h, as it conflicts with the C++ type of that name. */ + linux_wchar_t uni; + int nb; + + nb = sf_g->nls->char2uni(in, in_len, &uni); + if (nb < 0) + { + LogFunc(("nls->char2uni failed %x %d\n", + *in, in_len)); + err = -EINVAL; + goto fail1; + } + in_len -= nb; + in += nb; + +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 31) + nb = utf32_to_utf8(uni, out, out_bound_len); +#else + nb = utf8_wctomb(out, uni, out_bound_len); +#endif + if (nb < 0) + { + LogFunc(("nls->uni2char failed %x %d\n", + uni, out_bound_len)); + err = -EINVAL; + goto fail1; + } + out_bound_len -= nb; + out += nb; + len += nb; + } + if (len >= PATH_MAX - 1) + { + err = -ENAMETOOLONG; + goto fail1; + } + + LogFunc(("result(%d) = %.*s\n", len, len, name)); + *out = 0; + } + else + { + name = d_name; + len = d_len; + } + + err = sf_make_path(caller, sf_i, name, len, result); + if (name != d_name) + kfree(name); + + return err; + +fail1: + kfree(name); + return err; +} + +int sf_nlscpy(struct sf_glob_info *sf_g, + char *name, size_t name_bound_len, + const unsigned char *utf8_name, size_t utf8_len) +{ + if (sf_g->nls) + { + const char *in; + char *out; + size_t out_len; + size_t out_bound_len; + size_t in_bound_len; + + in = utf8_name; + in_bound_len = utf8_len; + + out = name; + out_len = 0; + out_bound_len = name_bound_len; + + while (in_bound_len) + { + int nb; +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 31) + unicode_t uni; + + nb = utf8_to_utf32(in, in_bound_len, &uni); +#else + linux_wchar_t uni; + + nb = utf8_mbtowc(&uni, in, in_bound_len); +#endif + if (nb < 0) + { + LogFunc(("utf8_mbtowc failed(%s) %x:%d\n", + (const char *) utf8_name, *in, in_bound_len)); + return -EINVAL; + } + in += nb; + in_bound_len -= nb; + + nb = sf_g->nls->uni2char(uni, out, out_bound_len); + if (nb < 0) + { + LogFunc(("nls->uni2char failed(%s) %x:%d\n", + utf8_name, uni, out_bound_len)); + return nb; + } + out += nb; + out_bound_len -= nb; + out_len += nb; + } + + *out = 0; + } + else + { + if (utf8_len + 1 > name_bound_len) + return -ENAMETOOLONG; + + memcpy(name, utf8_name, utf8_len + 1); + } + return 0; +} + +static struct sf_dir_buf *sf_dir_buf_alloc(void) +{ + struct sf_dir_buf *b; + + TRACE(); + b = kmalloc(sizeof(*b), GFP_KERNEL); + if (!b) + { + LogRelFunc(("could not alloc directory buffer\n")); + return NULL; + } + +#ifdef USE_VMALLOC + b->buf = vmalloc(DIR_BUFFER_SIZE); +#else + b->buf = kmalloc(DIR_BUFFER_SIZE, GFP_KERNEL); +#endif + if (!b->buf) + { + kfree(b); + LogRelFunc(("could not alloc directory buffer storage\n")); + return NULL; + } + + INIT_LIST_HEAD(&b->head); + b->cEntries = 0; + b->cbUsed = 0; + b->cbFree = DIR_BUFFER_SIZE; + return b; +} + +static void sf_dir_buf_free(struct sf_dir_buf *b) +{ + BUG_ON(!b || !b->buf); + + TRACE(); + list_del(&b->head); +#ifdef USE_VMALLOC + vfree(b->buf); +#else + kfree(b->buf); +#endif + kfree(b); +} + +/** + * Free the directory buffer. + */ +void sf_dir_info_free(struct sf_dir_info *p) +{ + struct list_head *list, *pos, *tmp; + + TRACE(); + list = &p->info_list; + list_for_each_safe(pos, tmp, list) + { + struct sf_dir_buf *b; + + b = list_entry(pos, struct sf_dir_buf, head); + sf_dir_buf_free(b); + } + kfree(p); +} + +/** + * Empty (but not free) the directory buffer. + */ +void sf_dir_info_empty(struct sf_dir_info *p) +{ + struct list_head *list, *pos, *tmp; + TRACE(); + list = &p->info_list; + list_for_each_safe(pos, tmp, list) + { + struct sf_dir_buf *b; + b = list_entry(pos, struct sf_dir_buf, head); + b->cEntries = 0; + b->cbUsed = 0; + b->cbFree = DIR_BUFFER_SIZE; + } +} + +/** + * Create a new directory buffer descriptor. + */ +struct sf_dir_info *sf_dir_info_alloc(void) +{ + struct sf_dir_info *p; + + TRACE(); + p = kmalloc(sizeof(*p), GFP_KERNEL); + if (!p) + { + LogRelFunc(("could not alloc directory info\n")); + return NULL; + } + + INIT_LIST_HEAD(&p->info_list); + return p; +} + +/** + * Search for an empty directory content buffer. + */ +static struct sf_dir_buf *sf_get_empty_dir_buf(struct sf_dir_info *sf_d) +{ + struct list_head *list, *pos; + + list = &sf_d->info_list; + list_for_each(pos, list) + { + struct sf_dir_buf *b; + + b = list_entry(pos, struct sf_dir_buf, head); + if (!b) + return NULL; + else + { + if (b->cbUsed == 0) + return b; + } + } + + return NULL; +} + +int sf_dir_read_all(struct sf_glob_info *sf_g, struct sf_inode_info *sf_i, + struct sf_dir_info *sf_d, SHFLHANDLE handle) +{ + int err; + SHFLSTRING *mask; + struct sf_dir_buf *b; + + TRACE(); + err = sf_make_path(__func__, sf_i, "*", 1, &mask); + if (err) + goto fail0; + + for (;;) + { + int rc; + void *buf; + uint32_t cbSize; + uint32_t cEntries; + + b = sf_get_empty_dir_buf(sf_d); + if (!b) + { + b = sf_dir_buf_alloc(); + if (!b) + { + err = -ENOMEM; + LogRelFunc(("could not alloc directory buffer\n")); + goto fail1; + } + list_add(&b->head, &sf_d->info_list); + } + + buf = b->buf; + cbSize = b->cbFree; + + rc = vboxCallDirInfo(&client_handle, &sf_g->map, handle, mask, + 0, 0, &cbSize, buf, &cEntries); + switch (rc) + { + case VINF_SUCCESS: + /* fallthrough */ + case VERR_NO_MORE_FILES: + break; + case VERR_NO_TRANSLATION: + LogFunc(("host could not translate entry\n")); + /* XXX */ + break; + default: + err = -RTErrConvertToErrno(rc); + LogFunc(("vboxCallDirInfo failed rc=%Rrc\n", rc)); + goto fail1; + } + + b->cEntries += cEntries; + b->cbFree -= cbSize; + b->cbUsed += cbSize; + + if (RT_FAILURE(rc)) + break; + } + err = 0; + +fail1: + kfree(mask); + +fail0: + return err; +} + +int sf_get_volume_info(struct super_block *sb, STRUCT_STATFS *stat) +{ + struct sf_glob_info *sf_g; + SHFLVOLINFO SHFLVolumeInfo; + uint32_t cbBuffer; + int rc; + + sf_g = GET_GLOB_INFO(sb); + cbBuffer = sizeof(SHFLVolumeInfo); + rc = vboxCallFSInfo(&client_handle, &sf_g->map, 0, SHFL_INFO_GET | SHFL_INFO_VOLUME, + &cbBuffer, (PSHFLDIRINFO)&SHFLVolumeInfo); + if (RT_FAILURE(rc)) + return -RTErrConvertToErrno(rc); + + stat->f_type = NFS_SUPER_MAGIC; /* XXX vboxsf type? */ + stat->f_bsize = SHFLVolumeInfo.ulBytesPerAllocationUnit; + stat->f_blocks = SHFLVolumeInfo.ullTotalAllocationBytes + / SHFLVolumeInfo.ulBytesPerAllocationUnit; + stat->f_bfree = SHFLVolumeInfo.ullAvailableAllocationBytes + / SHFLVolumeInfo.ulBytesPerAllocationUnit; + stat->f_bavail = SHFLVolumeInfo.ullAvailableAllocationBytes + / SHFLVolumeInfo.ulBytesPerAllocationUnit; + stat->f_files = 1000; + stat->f_ffree = 1000; /* don't return 0 here since the guest may think + * that it is not possible to create any more files */ + stat->f_fsid.val[0] = 0; + stat->f_fsid.val[1] = 0; + stat->f_namelen = 255; + return 0; +} + +struct dentry_operations sf_dentry_ops = +{ + .d_revalidate = sf_dentry_revalidate +}; + +int sf_init_backing_dev(struct sf_glob_info *sf_g) +{ + int rc = 0; +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 0) && LINUX_VERSION_CODE <= KERNEL_VERSION(3, 19, 0) + /* Each new shared folder map gets a new uint64_t identifier, + * allocated in sequence. We ASSUME the sequence will not wrap. */ + static uint64_t s_u64Sequence = 0; + uint64_t u64CurrentSequence = ASMAtomicIncU64(&s_u64Sequence); + + sf_g->bdi.ra_pages = 0; /* No readahead */ +# if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 12) + sf_g->bdi.capabilities = BDI_CAP_MAP_DIRECT /* MAP_SHARED */ + | BDI_CAP_MAP_COPY /* MAP_PRIVATE */ + | BDI_CAP_READ_MAP /* can be mapped for reading */ + | BDI_CAP_WRITE_MAP /* can be mapped for writing */ + | BDI_CAP_EXEC_MAP; /* can be mapped for execution */ +# endif /* >= 2.6.12 */ +# if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 24) + rc = bdi_init(&sf_g->bdi); +# if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 26) + if (!rc) + rc = bdi_register(&sf_g->bdi, NULL, "vboxsf-%llu", + (unsigned long long)u64CurrentSequence); +# endif /* >= 2.6.26 */ +# endif /* >= 2.6.24 */ +#endif /* >= 2.6.0 && <= 3.19.0 */ + return rc; +} + +void sf_done_backing_dev(struct sf_glob_info *sf_g) +{ +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 24) && LINUX_VERSION_CODE <= KERNEL_VERSION(3, 19, 0) + bdi_destroy(&sf_g->bdi); /* includes bdi_unregister() */ +#endif +} --- linux-raspi2-4.2.0.orig/ubuntu/vbox/vboxsf/vbsfmount.h +++ linux-raspi2-4.2.0/ubuntu/vbox/vboxsf/vbsfmount.h @@ -0,0 +1,78 @@ +/** @file + * vboxsf -- VirtualBox Guest Additions for Linux: mount(2) parameter structure. + */ + +/* + * Copyright (C) 2006-2010 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + */ + +#ifndef VBFS_MOUNT_H +#define VBFS_MOUNT_H + +#define MAX_HOST_NAME 256 +#define MAX_NLS_NAME 32 + +/* Linux constraints the size of data mount argument to PAGE_SIZE - 1. */ +struct vbsf_mount_info_old +{ + char name[MAX_HOST_NAME]; + char nls_name[MAX_NLS_NAME]; + int uid; + int gid; + int ttl; +}; + +#define VBSF_MOUNT_SIGNATURE_BYTE_0 '\377' +#define VBSF_MOUNT_SIGNATURE_BYTE_1 '\376' +#define VBSF_MOUNT_SIGNATURE_BYTE_2 '\375' + +struct vbsf_mount_info_new +{ + char nullchar; /* name cannot be '\0' -- we use this field + to distinguish between the old structure + and the new structure */ + char signature[3]; /* signature */ + int length; /* length of the whole structure */ + char name[MAX_HOST_NAME]; /* share name */ + char nls_name[MAX_NLS_NAME];/* name of an I/O charset */ + int uid; /* user ID for all entries, default 0=root */ + int gid; /* group ID for all entries, default 0=root */ + int ttl; /* time to live */ + int dmode; /* mode for directories if != 0xffffffff */ + int fmode; /* mode for regular files if != 0xffffffff */ + int dmask; /* umask applied to directories */ + int fmask; /* umask applied to regular files */ +}; + +struct vbsf_mount_opts +{ + int uid; + int gid; + int ttl; + int dmode; + int fmode; + int dmask; + int fmask; + int ronly; + int sloppy; + int noexec; + int nodev; + int nosuid; + int remount; + char nls_name[MAX_NLS_NAME]; + char *convertcp; +}; + +/** Completes the mount operation by adding the new mount point to mtab if required. */ +int vbsfmount_complete(const char *host_name, const char *mount_point, + unsigned long flags, struct vbsf_mount_opts *opts); + +#endif /* vbsfmount.h */ --- linux-raspi2-4.2.0.orig/ubuntu/vbox/vboxsf/version-generated.h +++ linux-raspi2-4.2.0/ubuntu/vbox/vboxsf/version-generated.h @@ -0,0 +1,13 @@ +#ifndef ___version_generated_h___ +#define ___version_generated_h___ + +#define VBOX_VERSION_MAJOR 5 +#define VBOX_VERSION_MINOR 0 +#define VBOX_VERSION_BUILD 0 +#define VBOX_VERSION_STRING_RAW "5.0.0" +#define VBOX_VERSION_STRING "5.0.0_Ubuntu" +#define VBOX_API_VERSION_STRING "5_0" + +#define VBOX_PRIVATE_BUILD_DESC "Private build by root" + +#endif --- linux-raspi2-4.2.0.orig/ubuntu/vbox/vboxsf/vfsmod.c +++ linux-raspi2-4.2.0/ubuntu/vbox/vboxsf/vfsmod.c @@ -0,0 +1,664 @@ +/** @file + * + * vboxsf -- VirtualBox Guest Additions for Linux: + * Virtual File System for VirtualBox Shared Folders + * + * Module initialization/finalization + * File system registration/deregistration + * Superblock reading + * Few utility functions + */ + +/* + * Copyright (C) 2006-2012 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + */ + +/** + * @note Anyone wishing to make changes here might wish to take a look at + * http://www.atnf.csiro.au/people/rgooch/linux/vfs.txt + * which seems to be the closest there is to official documentation on + * writing filesystem drivers for Linux. + */ + +#include "vfsmod.h" + +MODULE_DESCRIPTION(VBOX_PRODUCT " VFS Module for Host File System Access"); +MODULE_AUTHOR(VBOX_VENDOR); +MODULE_LICENSE("GPL"); +#ifdef MODULE_VERSION +MODULE_VERSION(VBOX_VERSION_STRING " (interface " RT_XSTR(VMMDEV_VERSION) ")"); +#endif + +/* globals */ +VBSFCLIENT client_handle; + +/* forward declarations */ +static struct super_operations sf_super_ops; + +/* allocate global info, try to map host share */ +static int sf_glob_alloc(struct vbsf_mount_info_new *info, struct sf_glob_info **sf_gp) +{ + int err, rc; + SHFLSTRING *str_name; + size_t name_len, str_len; + struct sf_glob_info *sf_g; + + TRACE(); + sf_g = kmalloc(sizeof(*sf_g), GFP_KERNEL); + if (!sf_g) + { + err = -ENOMEM; + LogRelFunc(("could not allocate memory for global info\n")); + goto fail0; + } + + RT_ZERO(*sf_g); + + if ( info->nullchar != '\0' + || info->signature[0] != VBSF_MOUNT_SIGNATURE_BYTE_0 + || info->signature[1] != VBSF_MOUNT_SIGNATURE_BYTE_1 + || info->signature[2] != VBSF_MOUNT_SIGNATURE_BYTE_2) + { + /* An old version of mount.vboxsf made the syscall. Translate the + * old parameters to the new structure. */ + struct vbsf_mount_info_old *info_old = (struct vbsf_mount_info_old *)info; + static struct vbsf_mount_info_new info_compat; + + info = &info_compat; + memset(info, 0, sizeof(*info)); + memcpy(&info->name, &info_old->name, MAX_HOST_NAME); + memcpy(&info->nls_name, &info_old->nls_name, MAX_NLS_NAME); + info->length = offsetof(struct vbsf_mount_info_new, dmode); + info->uid = info_old->uid; + info->gid = info_old->gid; + info->ttl = info_old->ttl; + } + + info->name[sizeof(info->name) - 1] = 0; + info->nls_name[sizeof(info->nls_name) - 1] = 0; + + name_len = strlen(info->name); + if (name_len > 0xfffe) + { + err = -ENAMETOOLONG; + LogFunc(("map name too big\n")); + goto fail1; + } + + str_len = offsetof(SHFLSTRING, String.utf8) + name_len + 1; + str_name = kmalloc(str_len, GFP_KERNEL); + if (!str_name) + { + err = -ENOMEM; + LogRelFunc(("could not allocate memory for host name\n")); + goto fail1; + } + + str_name->u16Length = name_len; + str_name->u16Size = name_len + 1; + memcpy(str_name->String.utf8, info->name, name_len + 1); + +#define _IS_UTF8(_str) \ + (strcmp(_str, "utf8") == 0) +#define _IS_EMPTY(_str) \ + (strcmp(_str, "") == 0) + + /* Check if NLS charset is valid and not points to UTF8 table */ + if (info->nls_name[0]) + { + if (_IS_UTF8(info->nls_name)) + sf_g->nls = NULL; + else + { + sf_g->nls = load_nls(info->nls_name); + if (!sf_g->nls) + { + err = -EINVAL; + LogFunc(("failed to load nls %s\n", info->nls_name)); + goto fail1; + } + } + } + else + { +#ifdef CONFIG_NLS_DEFAULT + /* If no NLS charset specified, try to load the default + * one if it's not points to UTF8. */ + if (!_IS_UTF8(CONFIG_NLS_DEFAULT) && !_IS_EMPTY(CONFIG_NLS_DEFAULT)) + sf_g->nls = load_nls_default(); + else + sf_g->nls = NULL; +#else + sf_g->nls = NULL; +#endif + +#undef _IS_UTF8 +#undef _IS_EMPTY + } + + rc = vboxCallMapFolder(&client_handle, str_name, &sf_g->map); + kfree(str_name); + + if (RT_FAILURE(rc)) + { + err = -EPROTO; + LogFunc(("vboxCallMapFolder failed rc=%d\n", rc)); + goto fail2; + } + + sf_g->ttl = info->ttl; + sf_g->uid = info->uid; + sf_g->gid = info->gid; + + if ((unsigned)info->length >= sizeof(struct vbsf_mount_info_new)) + { + /* new fields */ + sf_g->dmode = info->dmode; + sf_g->fmode = info->fmode; + sf_g->dmask = info->dmask; + sf_g->fmask = info->fmask; + } + else + { + sf_g->dmode = ~0; + sf_g->fmode = ~0; + } + + *sf_gp = sf_g; + return 0; + +fail2: + if (sf_g->nls) + unload_nls(sf_g->nls); + +fail1: + kfree(sf_g); + +fail0: + return err; +} + +/* unmap the share and free global info [sf_g] */ +static void +sf_glob_free(struct sf_glob_info *sf_g) +{ + int rc; + + TRACE(); + rc = vboxCallUnmapFolder(&client_handle, &sf_g->map); + if (RT_FAILURE(rc)) + LogFunc(("vboxCallUnmapFolder failed rc=%d\n", rc)); + + if (sf_g->nls) + unload_nls(sf_g->nls); + + kfree(sf_g); +} + +/** + * This is called (by sf_read_super_[24|26] when vfs mounts the fs and + * wants to read super_block. + * + * calls [sf_glob_alloc] to map the folder and allocate global + * information structure. + * + * initializes [sb], initializes root inode and dentry. + * + * should respect [flags] + */ +static int sf_read_super_aux(struct super_block *sb, void *data, int flags) +{ + int err; + struct dentry *droot; + struct inode *iroot; + struct sf_inode_info *sf_i; + struct sf_glob_info *sf_g; + SHFLFSOBJINFO fsinfo; + struct vbsf_mount_info_new *info; + bool fInodePut = true; + + TRACE(); + if (!data) + { + LogFunc(("no mount info specified\n")); + return -EINVAL; + } + + info = data; + + if (flags & MS_REMOUNT) + { + LogFunc(("remounting is not supported\n")); + return -ENOSYS; + } + + err = sf_glob_alloc(info, &sf_g); + if (err) + goto fail0; + + sf_i = kmalloc(sizeof (*sf_i), GFP_KERNEL); + if (!sf_i) + { + err = -ENOMEM; + LogRelFunc(("could not allocate memory for root inode info\n")); + goto fail1; + } + + sf_i->handle = SHFL_HANDLE_NIL; + sf_i->path = kmalloc(sizeof(SHFLSTRING) + 1, GFP_KERNEL); + if (!sf_i->path) + { + err = -ENOMEM; + LogRelFunc(("could not allocate memory for root inode path\n")); + goto fail2; + } + + sf_i->path->u16Length = 1; + sf_i->path->u16Size = 2; + sf_i->path->String.utf8[0] = '/'; + sf_i->path->String.utf8[1] = 0; + sf_i->force_reread = 0; + + err = sf_stat(__func__, sf_g, sf_i->path, &fsinfo, 0); + if (err) + { + LogFunc(("could not stat root of share\n")); + goto fail3; + } + + sb->s_magic = 0xface; + sb->s_blocksize = 1024; +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 4, 3) + /* Required for seek/sendfile. + * + * Must by less than or equal to INT64_MAX despite the fact that the + * declaration of this variable is unsigned long long. See determination + * of 'loff_t max' in fs/read_write.c / do_sendfile(). I don't know the + * correct limit but MAX_LFS_FILESIZE (8TB-1 on 32-bit boxes) takes the + * page cache into account and is the suggested limit. */ +# if defined MAX_LFS_FILESIZE + sb->s_maxbytes = MAX_LFS_FILESIZE; +# else + sb->s_maxbytes = 0x7fffffffffffffffULL; +# endif +#endif + sb->s_op = &sf_super_ops; + +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 4, 25) + iroot = iget_locked(sb, 0); +#else + iroot = iget(sb, 0); +#endif + if (!iroot) + { + err = -ENOMEM; /* XXX */ + LogFunc(("could not get root inode\n")); + goto fail3; + } + + if (sf_init_backing_dev(sf_g)) + { + err = -EINVAL; + LogFunc(("could not init bdi\n")); +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 4, 25) + unlock_new_inode(iroot); +#endif + goto fail4; + } + + sf_init_inode(sf_g, iroot, &fsinfo); + SET_INODE_INFO(iroot, sf_i); + +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 4, 25) + unlock_new_inode(iroot); +#endif + +#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 4, 0) + droot = d_make_root(iroot); +#else + droot = d_alloc_root(iroot); +#endif + if (!droot) + { + err = -ENOMEM; /* XXX */ + LogFunc(("d_alloc_root failed\n")); +#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 4, 0) + fInodePut = false; +#endif + goto fail5; + } + + sb->s_root = droot; + SET_GLOB_INFO(sb, sf_g); + return 0; + +fail5: + sf_done_backing_dev(sf_g); + +fail4: + if (fInodePut) + iput(iroot); + +fail3: + kfree(sf_i->path); + +fail2: + kfree(sf_i); + +fail1: + sf_glob_free(sf_g); + +fail0: + return err; +} + +#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 0) +static struct super_block * +sf_read_super_24(struct super_block *sb, void *data, int flags) +{ + int err; + + TRACE(); + err = sf_read_super_aux(sb, data, flags); + if (err) + return NULL; + + return sb; +} +#endif + +/* this is called when vfs is about to destroy the [inode]. all + resources associated with this [inode] must be cleared here */ +#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 36) +static void sf_clear_inode(struct inode *inode) +{ + struct sf_inode_info *sf_i; + + TRACE(); + sf_i = GET_INODE_INFO(inode); + if (!sf_i) + return; + + BUG_ON(!sf_i->path); + kfree(sf_i->path); + kfree(sf_i); + SET_INODE_INFO(inode, NULL); +} +#else +static void sf_evict_inode(struct inode *inode) +{ + struct sf_inode_info *sf_i; + + TRACE(); + truncate_inode_pages(&inode->i_data, 0); +# if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 5, 0) + clear_inode(inode); +# else + end_writeback(inode); +# endif + + sf_i = GET_INODE_INFO(inode); + if (!sf_i) + return; + + BUG_ON(!sf_i->path); + kfree(sf_i->path); + kfree(sf_i); + SET_INODE_INFO(inode, NULL); +} +#endif + +/* this is called by vfs when it wants to populate [inode] with data. + the only thing that is known about inode at this point is its index + hence we can't do anything here, and let lookup/whatever with the + job to properly fill then [inode] */ +#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 25) +static void sf_read_inode(struct inode *inode) +{ +} +#endif + +/* vfs is done with [sb] (umount called) call [sf_glob_free] to unmap + the folder and free [sf_g] */ +static void sf_put_super(struct super_block *sb) +{ + struct sf_glob_info *sf_g; + + sf_g = GET_GLOB_INFO(sb); + BUG_ON(!sf_g); + sf_done_backing_dev(sf_g); + sf_glob_free(sf_g); +} + +#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 18) +static int sf_statfs(struct super_block *sb, STRUCT_STATFS *stat) +{ + return sf_get_volume_info(sb, stat); +} +#else +static int sf_statfs(struct dentry *dentry, STRUCT_STATFS *stat) +{ + struct super_block *sb = dentry->d_inode->i_sb; + return sf_get_volume_info(sb, stat); +} +#endif + +static int sf_remount_fs(struct super_block *sb, int *flags, char *data) +{ +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 4, 23) + struct sf_glob_info *sf_g; + struct sf_inode_info *sf_i; + struct inode *iroot; + SHFLFSOBJINFO fsinfo; + int err; + + sf_g = GET_GLOB_INFO(sb); + BUG_ON(!sf_g); + if (data && data[0] != 0) + { + struct vbsf_mount_info_new *info = + (struct vbsf_mount_info_new *)data; + if ( info->signature[0] == VBSF_MOUNT_SIGNATURE_BYTE_0 + && info->signature[1] == VBSF_MOUNT_SIGNATURE_BYTE_1 + && info->signature[2] == VBSF_MOUNT_SIGNATURE_BYTE_2) + { + sf_g->uid = info->uid; + sf_g->gid = info->gid; + sf_g->ttl = info->ttl; + sf_g->dmode = info->dmode; + sf_g->fmode = info->fmode; + sf_g->dmask = info->dmask; + sf_g->fmask = info->fmask; + } + } + + iroot = ilookup(sb, 0); + if (!iroot) + return -ENOSYS; + + sf_i = GET_INODE_INFO(iroot); + err = sf_stat(__func__, sf_g, sf_i->path, &fsinfo, 0); + BUG_ON(err != 0); + sf_init_inode(sf_g, iroot, &fsinfo); + /*unlock_new_inode(iroot);*/ + return 0; +#else + return -ENOSYS; +#endif +} + +static struct super_operations sf_super_ops = +{ +#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 36) + .clear_inode = sf_clear_inode, +#else + .evict_inode = sf_evict_inode, +#endif +#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 25) + .read_inode = sf_read_inode, +#endif + .put_super = sf_put_super, + .statfs = sf_statfs, + .remount_fs = sf_remount_fs +}; + +#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 0) +static DECLARE_FSTYPE(vboxsf_fs_type, "vboxsf", sf_read_super_24, 0); +#else +static int +sf_read_super_26(struct super_block *sb, void *data, int flags) +{ + int err; + + TRACE(); + err = sf_read_super_aux(sb, data, flags); + if (err) + printk(KERN_DEBUG "sf_read_super_aux err=%d\n", err); + + return err; +} + +# if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 18) +static struct super_block *sf_get_sb(struct file_system_type *fs_type, int flags, + const char *dev_name, void *data) +{ + TRACE(); + return get_sb_nodev(fs_type, flags, data, sf_read_super_26); +} +# elif LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 39) +static int sf_get_sb(struct file_system_type *fs_type, int flags, + const char *dev_name, void *data, struct vfsmount *mnt) +{ + TRACE(); + return get_sb_nodev(fs_type, flags, data, sf_read_super_26, mnt); +} +# else +static struct dentry *sf_mount(struct file_system_type *fs_type, int flags, + const char *dev_name, void *data) +{ + TRACE(); + return mount_nodev(fs_type, flags, data, sf_read_super_26); +} +# endif + +static struct file_system_type vboxsf_fs_type = +{ + .owner = THIS_MODULE, + .name = "vboxsf", +# if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 39) + .get_sb = sf_get_sb, +# else + .mount = sf_mount, +# endif + .kill_sb = kill_anon_super +}; +#endif + +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 0) +static int follow_symlinks = 0; +module_param(follow_symlinks, int, 0); +MODULE_PARM_DESC(follow_symlinks, "Let host resolve symlinks rather than showing them"); +#endif + +/* Module initialization/finalization handlers */ +static int __init init(void) +{ + int rcVBox; + int rcRet = 0; + int err; + + TRACE(); + + if (sizeof(struct vbsf_mount_info_new) > PAGE_SIZE) + { + printk(KERN_ERR + "Mount information structure is too large %lu\n" + "Must be less than or equal to %lu\n", + (unsigned long)sizeof (struct vbsf_mount_info_new), + (unsigned long)PAGE_SIZE); + return -EINVAL; + } + + err = register_filesystem(&vboxsf_fs_type); + if (err) + { + LogFunc(("register_filesystem err=%d\n", err)); + return err; + } + + rcVBox = vboxInit(); + if (RT_FAILURE(rcVBox)) + { + LogRelFunc(("vboxInit failed, rc=%d\n", rcVBox)); + rcRet = -EPROTO; + goto fail0; + } + + rcVBox = vboxConnect(&client_handle); + if (RT_FAILURE(rcVBox)) + { + LogRelFunc(("vboxConnect failed, rc=%d\n", rcVBox)); + rcRet = -EPROTO; + goto fail1; + } + + rcVBox = vboxCallSetUtf8(&client_handle); + if (RT_FAILURE(rcVBox)) + { + LogRelFunc(("vboxCallSetUtf8 failed, rc=%d\n", rcVBox)); + rcRet = -EPROTO; + goto fail2; + } + +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 0) + if (!follow_symlinks) + { + rcVBox = vboxCallSetSymlinks(&client_handle); + if (RT_FAILURE(rcVBox)) + { + printk(KERN_WARNING + "vboxsf: Host unable to show symlinks, rc=%d\n", + rcVBox); + } + } +#endif + + printk(KERN_DEBUG + "vboxsf: Successfully loaded version " VBOX_VERSION_STRING + " (interface " RT_XSTR(VMMDEV_VERSION) ")\n"); + + return 0; + +fail2: + vboxDisconnect(&client_handle); + +fail1: + vboxUninit(); + +fail0: + unregister_filesystem(&vboxsf_fs_type); + return rcRet; +} + +static void __exit fini(void) +{ + TRACE(); + + vboxDisconnect(&client_handle); + vboxUninit(); + unregister_filesystem(&vboxsf_fs_type); +} + +module_init(init); +module_exit(fini); + +/* C++ hack */ +int __gxx_personality_v0 = 0xdeadbeef; --- linux-raspi2-4.2.0.orig/ubuntu/vbox/vboxsf/vfsmod.h +++ linux-raspi2-4.2.0/ubuntu/vbox/vboxsf/vfsmod.h @@ -0,0 +1,165 @@ +/** @file + * vboxsf - VirtualBox Guest Additions for Linux. + */ + +/* + * Copyright (C) 2006-2011 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + */ + +#ifndef VFSMOD_H +#define VFSMOD_H + +#define LOG_GROUP LOG_GROUP_SHARED_FOLDERS +#include "the-linux-kernel.h" +#include "version-generated.h" +#include "product-generated.h" +#include + +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 0) +# include +#endif + +#include "VBoxGuestR0LibSharedFolders.h" +#include "vbsfmount.h" + +#define DIR_BUFFER_SIZE (16*_1K) + +/* per-shared folder information */ +struct sf_glob_info +{ + VBSFMAP map; + struct nls_table *nls; + int ttl; + int uid; + int gid; + int dmode; + int fmode; + int dmask; + int fmask; +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 0) + struct backing_dev_info bdi; +#endif +}; + +/* per-inode information */ +struct sf_inode_info +{ + /* which file */ + SHFLSTRING *path; + /* some information was changed, update data on next revalidate */ + int force_restat; + /* directory content changed, update the whole directory on next sf_getdent */ + int force_reread; + /* file structure, only valid between open() and release() */ + struct file *file; + /* handle valid if a file was created with sf_create_aux until it will + * be opened with sf_reg_open() */ + SHFLHANDLE handle; +}; + +struct sf_dir_info +{ + struct list_head info_list; +}; + +struct sf_dir_buf +{ + size_t cEntries; + size_t cbFree; + size_t cbUsed; + void *buf; + struct list_head head; +}; + +struct sf_reg_info +{ + SHFLHANDLE handle; +}; + +/* globals */ +extern VBSFCLIENT client_handle; + +/* forward declarations */ +extern struct inode_operations sf_dir_iops; +extern struct inode_operations sf_lnk_iops; +extern struct inode_operations sf_reg_iops; +extern struct file_operations sf_dir_fops; +extern struct file_operations sf_reg_fops; +extern struct dentry_operations sf_dentry_ops; +extern struct address_space_operations sf_reg_aops; + +extern void sf_init_inode(struct sf_glob_info *sf_g, struct inode *inode, + PSHFLFSOBJINFO info); +extern int sf_stat(const char *caller, struct sf_glob_info *sf_g, + SHFLSTRING *path, PSHFLFSOBJINFO result, int ok_to_fail); +extern int sf_inode_revalidate(struct dentry *dentry); +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 0) +extern int sf_getattr(struct vfsmount *mnt, struct dentry *dentry, + struct kstat *kstat); +extern int sf_setattr(struct dentry *dentry, struct iattr *iattr); +#endif +extern int sf_path_from_dentry(const char *caller, struct sf_glob_info *sf_g, + struct sf_inode_info *sf_i, struct dentry *dentry, + SHFLSTRING **result); +extern int sf_nlscpy(struct sf_glob_info *sf_g, + char *name, size_t name_bound_len, + const unsigned char *utf8_name, size_t utf8_len); +extern void sf_dir_info_free(struct sf_dir_info *p); +extern void sf_dir_info_empty(struct sf_dir_info *p); +extern struct sf_dir_info *sf_dir_info_alloc(void); +extern int sf_dir_read_all(struct sf_glob_info *sf_g, struct sf_inode_info *sf_i, + struct sf_dir_info *sf_d, SHFLHANDLE handle); +extern int sf_init_backing_dev(struct sf_glob_info *sf_g); +extern void sf_done_backing_dev(struct sf_glob_info *sf_g); + +#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 0) +# define STRUCT_STATFS struct statfs +#else +# define STRUCT_STATFS struct kstatfs +#endif +int sf_get_volume_info(struct super_block *sb,STRUCT_STATFS *stat); + +#ifdef __cplusplus +# define CMC_API __attribute__ ((cdecl, regparm (0))) +#else +# define CMC_API __attribute__ ((regparm (0))) +#endif + +#define TRACE() LogFunc(("tracepoint\n")) + +/* Following casts are here to prevent assignment of void * to + pointers of arbitrary type */ +#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 0) +# define GET_GLOB_INFO(sb) ((struct sf_glob_info *) (sb)->u.generic_sbp) +# define SET_GLOB_INFO(sb, sf_g) (sb)->u.generic_sbp = sf_g +#else +# define GET_GLOB_INFO(sb) ((struct sf_glob_info *) (sb)->s_fs_info) +# define SET_GLOB_INFO(sb, sf_g) (sb)->s_fs_info = sf_g +#endif + +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 19) || defined(KERNEL_FC6) +/* FC6 kernel 2.6.18, vanilla kernel 2.6.19+ */ +# define GET_INODE_INFO(i) ((struct sf_inode_info *) (i)->i_private) +# define SET_INODE_INFO(i, sf_i) (i)->i_private = sf_i +#else +/* vanilla kernel up to 2.6.18 */ +# define GET_INODE_INFO(i) ((struct sf_inode_info *) (i)->u.generic_ip) +# define SET_INODE_INFO(i, sf_i) (i)->u.generic_ip = sf_i +#endif + +#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 19, 0) +# define GET_F_DENTRY(f) (f->f_path.dentry) +#else +# define GET_F_DENTRY(f) (f->f_dentry) +#endif + +#endif + --- linux-raspi2-4.2.0.orig/ubuntu/vbox/vboxvideo/Makefile +++ linux-raspi2-4.2.0/ubuntu/vbox/vboxvideo/Makefile @@ -0,0 +1,53 @@ +KBUILD_EXTMOD=${srctree}/ubuntu/vbox +# +# VirtualBox Guest Additions Module Makefile. +# +# (For 2.6.x this file must be 'Makefile'!) +# +# Copyright (C) 2006-2011 Oracle Corporation +# +# This file is part of VirtualBox Open Source Edition (OSE), as +# available from http://www.virtualbox.org. This file is free software; +# you can redistribute it and/or modify it under the terms of the GNU +# General Public License (GPL) as published by the Free Software +# Foundation, in version 2 as it comes in the "COPYING" file of the +# VirtualBox OSE distribution. VirtualBox OSE is distributed in the +# hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. +# + +# Linux kbuild sets this to our source directory if we are called from there +obj ?= $(CURDIR) +include $(obj)/Makefile.include.header + +MOD_NAME = vboxvideo + +MOD_OBJS = vboxvideo_drm.o + +ifneq ($(wildcard $(KBUILD_EXTMOD)/vboxvideo),) + MANGLING := $(KBUILD_EXTMOD)/vboxvideo/include/VBox/VBoxGuestMangling.h +else + MANGLING := $(KBUILD_EXTMOD)/include/VBox/VBoxGuestMangling.h +endif +MOD_CFLAGS = -Wno-declaration-after-statement -fshort-wchar -include $(MANGLING) +MOD_INCL = $(addprefix -I$(KBUILD_EXTMOD),/ /include /r0drv/linux) +# What on earth is this? +MOD_INCL += $(addprefix -I$(KBUILD_EXTMOD)/vboxvideo,/ /include /r0drv/linux) +# Enterprise Linux 6.5 does not include the drm user API headers with the kernel +# headers. +MOD_INCL += $(foreach inc,$(KERN_INCL) include,\ + $(if $(wildcard $(inc)/linux/utsrelease.h),\ + $(if $(shell grep '"2.6.32.*el6.*"' $(inc)/linux/utsrelease.h),\ + -I/usr/include,),)) +MOD_DEFS := -DRT_OS_LINUX -DIN_RING0 -DIN_RT_R0 \ + -DIN_SUP_R0 -DVBOX -DVBOX_WITH_HGCM -DLOG_TO_BACKDOOR -DIN_MODULE \ + -DIN_GUEST_R0 +# our module does not export any symbol +MOD_DEFS += -DRT_NO_EXPORT_SYMBOL +ifeq ($(BUILD_TARGET_ARCH),amd64) + MOD_DEFS += -DRT_ARCH_AMD64 -DVBOX_WITH_64_BITS_GUESTS +else + MOD_DEFS += -DRT_ARCH_X86 +endif +MOD_CLEAN = . linux r0drv r0drv/linux + +include $(obj)/Makefile.include.footer --- linux-raspi2-4.2.0.orig/ubuntu/vbox/vboxvideo/Makefile.include.footer +++ linux-raspi2-4.2.0/ubuntu/vbox/vboxvideo/Makefile.include.footer @@ -0,0 +1,93 @@ +# +# VirtualBox Guest Additions kernel module Makefile, common parts. +# +# See Makefile.include.header for details of how to use this. +# +# Copyright (C) 2006-2015 Oracle Corporation +# +# This file is part of VirtualBox Open Source Edition (OSE), as +# available from http://www.virtualbox.org. This file is free software; +# you can redistribute it and/or modify it under the terms of the GNU +# General Public License (GPL) as published by the Free Software +# Foundation, in version 2 as it comes in the "COPYING" file of the +# VirtualBox OSE distribution. VirtualBox OSE is distributed in the +# hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. +# + +# override is required by the Debian guys +override MODULE = $(MOD_NAME) +OBJS = $(MOD_OBJS) + +ifneq ($(MAKECMDGOALS),clean) + +KBUILD_VERBOSE ?= 1 + +# +# Compiler options +# +ifndef INCL + INCL := $(addprefix -I,$(KERN_INCL) $(EXTRA_INCL)) + ifndef KBUILD_EXTMOD + KBUILD_EXTMOD := $(shell pwd) + endif + INCL += $(MOD_INCL) + export INCL +endif +KFLAGS := -D__KERNEL__ -DMODULE $(MOD_DEFS) +ifeq ($(BUILD_TYPE),debug) + KFLAGS += -DDEBUG -DDEBUG_$(subst $(subst _, ,_),_,$(USERNAME)) -DDEBUG_USERNAME=$(subst $(subst _, ,_),_,$(USERNAME)) +endif + +ifeq ($(KERN_VERSION), 24) +# +# 2.4 +# + +ifeq ($(BUILD_TARGET_ARCH),amd64) + KFLAGS += -mcmodel=kernel +endif + +CFLAGS := -O2 -DVBOX_LINUX_2_4 $(MOD_CFLAGS) $(INCL) $(KFLAGS) $(MOD_EXTRA) $(KDEBUG) +MODULE_EXT := o + +# 2.4 Module linking +$(MODULE).o: $(OBJS) + $(LD) -o $@ -r $(OBJS) + +.PHONY: $(MODULE) +all: $(MODULE) +$(MODULE): $(MODULE).o + +else +# +# 2.6 and later +# + +MODULE_EXT := ko + +$(MODULE)-y := $(OBJS) + +# build defs +EXTRA_CFLAGS += $(MOD_CFLAGS) $(INCL) $(KFLAGS) $(MOD_EXTRA) $(KDEBUG) + +all: $(MODULE) + +obj-m += $(MODULE).o + +# OL/UEK: disable module signing for external modules -- we don't have any private key +$(MODULE): + $(MAKE) KBUILD_VERBOSE=$(KBUILD_VERBOSE) CONFIG_MODULE_SIG= -C $(KERN_DIR) SUBDIRS=$(CURDIR) SRCROOT=$(CURDIR) modules + +endif + +install: $(MODULE) + @mkdir -p $(MODULE_DIR); \ + install -m 0664 -o root -g root $(MODULE).$(MODULE_EXT) $(MODULE_DIR); \ + PATH="$(PATH):/bin:/sbin" depmod -a; + +endif # eq($(MAKECMDGOALS),clean) + +# important: Don't remove Module.symvers! DKMS does 'make clean' before building ... +clean: + for f in $(MOD_CLEAN); do rm -f $$f/*.o $$f/.*.cmd $$f/.*.flags; done + rm -rf .$(MOD_NAME)* .tmp_ver* $(MOD_NAME).* Modules.symvers modules.order --- linux-raspi2-4.2.0.orig/ubuntu/vbox/vboxvideo/Makefile.include.header +++ linux-raspi2-4.2.0/ubuntu/vbox/vboxvideo/Makefile.include.header @@ -0,0 +1,173 @@ +# +# VirtualBox Guest Additions kernel module Makefile, common parts. +# +# (For 2.6.x, the main file must be called 'Makefile'!) +# +# Copyright (C) 2006-2015 Oracle Corporation +# +# This file is part of VirtualBox Open Source Edition (OSE), as +# available from http://www.virtualbox.org. This file is free software; +# you can redistribute it and/or modify it under the terms of the GNU +# General Public License (GPL) as published by the Free Software +# Foundation, in version 2 as it comes in the "COPYING" file of the +# VirtualBox OSE distribution. VirtualBox OSE is distributed in the +# hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. +# + +# +# These file should be included by the Makefiles for any kernel modules we +# build as part of the Guest Additions. The intended way of doing this is as +# follows: +# +# # Linux kbuild sets this to our source directory if we are called from +# # there +# obj ?= $(CURDIR) +# include $(obj)/Makefile.include.header +# MOD_NAME = +# MOD_OBJS = +# MOD_DEFS = +# MOD_INCL = +# MOD_CFLAGS = +# MOD_CLEAN = +# include $(obj)/Makefile.include.footer +# +# The kmk kBuild define KBUILD_TARGET_ARCH is available. +# + + +# +# First, figure out which architecture we're targeting and the build type. +# (We have to support basic cross building (ARCH=i386|x86_64).) +# While at it, warn about BUILD_* vars found to help with user problems. +# +ifeq ($(filter-out x86_64 amd64 AMD64,$(shell uname -m)),) + BUILD_TARGET_ARCH_DEF := amd64 +else + BUILD_TARGET_ARCH_DEF := x86 +endif +ifneq ($(filter-out amd64 x86,$(BUILD_TARGET_ARCH)),) + $(warning Ignoring unknown BUILD_TARGET_ARCH value '$(BUILD_TARGET_ARCH)'.) + BUILD_TARGET_ARCH := +endif +ifeq ($(BUILD_TARGET_ARCH),) + ifeq ($(ARCH),x86_64) + BUILD_TARGET_ARCH := amd64 + else + ifeq ($(ARCH),i386) + ifeq ($(CONFIG_X86_32),y) + BUILD_TARGET_ARCH := x86 + else + BUILD_TARGET_ARCH := amd64 + endif + else + ifeq ($(ARCH),x86) + ifeq ($(CONFIG_X86_32),y) + BUILD_TARGET_ARCH := x86 + else + BUILD_TARGET_ARCH := amd64 + endif + else + BUILD_TARGET_ARCH := $(BUILD_TARGET_ARCH_DEF) + endif + endif + endif +else + ifneq ($(BUILD_TARGET_ARCH),$(BUILD_TARGET_ARCH_DEF)) + $(warning Using BUILD_TARGET_ARCH='$(BUILD_TARGET_ARCH)' from the $(origin BUILD_TARGET_ARCH).) + endif +endif + +ifneq ($(filter-out release profile debug strict,$(BUILD_TYPE)),) + $(warning Ignoring unknown BUILD_TYPE value '$(BUILD_TYPE)'.) + BUILD_TYPE := +endif +ifeq ($(BUILD_TYPE),) + BUILD_TYPE := release +else + ifneq ($(BUILD_TYPE),release) + $(warning Using BUILD_TYPE='$(BUILD_TYPE)' from the $(origin BUILD_TYPE).) + endif +endif +ifeq ($(USERNAME),) + USERNAME := noname +endif + +ifneq ($(MAKECMDGOALS),clean) + +ifeq ($(KERNELRELEASE),) + + # + # building from this directory + # + + # kernel base directory + ifndef KERN_DIR + KERN_DIR := /lib/modules/$(shell uname -r)/build + ifneq ($(shell if test -d $(KERN_DIR); then echo yes; fi),yes) + KERN_DIR := /usr/src/linux + ifneq ($(shell if test -d $(KERN_DIR); then echo yes; fi),yes) + $(error Error: unable to find the sources of your current Linux kernel. \ + Specify KERN_DIR= and run Make again) + endif + $(warning Warning: using /usr/src/linux as the source directory of your \ + Linux kernel. If this is not correct, specify \ + KERN_DIR= and run Make again.) + endif + else + ifneq ($(shell if test -d $(KERN_DIR); then echo yes; fi),yes) + $(error Error: KERN_DIR does not point to a directory) + endif + endif + + # includes + ifndef KERN_INCL + KERN_INCL = $(KERN_DIR)/include + endif + ifneq ($(shell if test -d $(KERN_INCL); then echo yes; fi),yes) + $(error Error: unable to find the include directory for your current Linux \ + kernel. Specify KERN_INCL= and run Make again) + endif + + # module install dir, only for current kernel + ifneq ($(filter install install_rpm,$(MAKECMDGOALS)),) + ifndef MODULE_DIR + MODULE_DIR_TST := /lib/modules/$(shell uname -r) + ifeq ($(shell if test -d $(MODULE_DIR_TST); then echo yes; fi),yes) + MODULE_DIR := $(MODULE_DIR_TST)/misc + else + $(error Unable to find the folder to install the module to) + endif + endif # MODULE_DIR unspecified + endif + + # guess kernel version (24 or 26) + ifeq ($(shell if grep '"2\.4\.' $(KERN_INCL)/linux/version.h > /dev/null; then echo yes; fi),yes) + KERN_VERSION := 24 + else + KERN_VERSION := 26 + endif + +else # neq($(KERNELRELEASE),) + + # + # building from kbuild (make -C M=`pwd`) + # + + # guess kernel version (24 or 26) + ifeq ($(shell if echo "$(VERSION).$(PATCHLEVEL)." | grep '2\.4\.' > /dev/null; then echo yes; fi),yes) + KERN_VERSION := 24 + else + KERN_VERSION := 26 + endif + +endif # neq($(KERNELRELEASE),) + +# debug - show guesses. +ifdef DEBUG +$(warning dbg: KERN_DIR = $(KERN_DIR)) +$(warning dbg: KERN_INCL = $(KERN_INCL)) +$(warning dbg: MODULE_DIR = $(MODULE_DIR)) +$(warning dbg: KERN_VERSION = $(KERN_VERSION)) +endif + +endif # eq($(MAKECMDGOALS),clean) --- linux-raspi2-4.2.0.orig/ubuntu/vbox/vboxvideo/do_Module.symvers +++ linux-raspi2-4.2.0/ubuntu/vbox/vboxvideo/do_Module.symvers @@ -0,0 +1,33 @@ +#!/bin/sh + +# +# This script is used when building kernel modules from DKMS. I don't +# know how to solve the problem of inter-module dependencies better. +# +# Copyright (C) 2008-2015 Oracle Corporation +# +# This file is part of VirtualBox Open Source Edition (OSE), as +# available from http://www.virtualbox.org. This file is free software; +# you can redistribute it and/or modify it under the terms of the GNU +# General Public License (GPL) as published by the Free Software +# Foundation, in version 2 as it comes in the "COPYING" file of the +# VirtualBox OSE distribution. VirtualBox OSE is distributed in the +# hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. +# + +SYMFILE="/tmp/$1-Module.symvers" +case "$2" in + save) + if [ -f "$3" ]; then + cp "$3" "$SYMFILE" + fi + ;; + restore) + if [ -f "$SYMFILE" ]; then + cp "$SYMFILE" "$3" + fi + ;; + *) + echo "Usage: save|restore " + ;; +esac --- linux-raspi2-4.2.0.orig/ubuntu/vbox/vboxvideo/product-generated.h +++ linux-raspi2-4.2.0/ubuntu/vbox/vboxvideo/product-generated.h @@ -0,0 +1,10 @@ +#ifndef ___product_generated_h___ +#define ___product_generated_h___ + +#define VBOX_VENDOR "Oracle Corporation" +#define VBOX_VENDOR_SHORT "Oracle" +#define VBOX_PRODUCT "Oracle VM VirtualBox" +#define VBOX_BUILD_PUBLISHER "_Ubuntu" +#define VBOX_C_YEAR "2015" + +#endif --- linux-raspi2-4.2.0.orig/ubuntu/vbox/vboxvideo/vboxvideo_drm.c +++ linux-raspi2-4.2.0/ubuntu/vbox/vboxvideo/vboxvideo_drm.c @@ -0,0 +1,180 @@ +/** @file $Id: vboxvideo_drm.c $ + * + * VirtualBox Additions Linux kernel driver, DRM support + */ + +/* + * Copyright (C) 2006-2012 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * -------------------------------------------------------------------- + * + * This code is based on: + * + * tdfx_drv.c -- tdfx driver -*- linux-c -*- + * Created: Thu Oct 7 10:38:32 1999 by faith@precisioninsight.com + * + * Copyright 1999 Precision Insight, Inc., Cedar Park, Texas. + * Copyright 2000 VA Linux Systems, Inc., Sunnyvale, California. + * All Rights Reserved. + * + * 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 (including the next + * paragraph) 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 + * PRECISION INSIGHT AND/OR ITS SUPPLIERS 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: + * Rickard E. (Rik) Faith + * Daryll Strauss + * Gareth Hughes + */ + +#include "version-generated.h" + +#include +#include +#include +#include "vboxvideo_drm.h" + +/* This definition and the file-operations-as-pointer change were both added in + * kernel 3.3. All back-ports of the structure change to distribution kernels + * that I have checked also back-ported the definition at the same time. */ +#ifdef DRM_IOCTL_MODE_ADDFB2 +# define DRM_FOPS_AS_POINTER +#endif + +/* The first of these was introduced when drm was generalised to work with + * non-PCI buses, but was removed between 3.15 and 3.16. The second is a + * random definition introduced in the mean-time. */ +#if defined(DRIVER_BUS_PCI) || defined(DRIVER_PRIME) +# define DRM_NEW_BUS_INIT 1 +#endif + +static struct pci_device_id pciidlist[] = { + vboxvideo_PCI_IDS +}; + +MODULE_DEVICE_TABLE(pci, pciidlist); + +int vboxvideo_driver_load(struct drm_device * dev, unsigned long flags) +{ + return 0; +} + +#ifdef DRM_FOPS_AS_POINTER +/* since linux-3.3.0-rc1 drm_driver::fops is pointer */ +static struct file_operations driver_fops = +{ + .owner = THIS_MODULE, + .open = drm_open, + .release = drm_release, + .unlocked_ioctl = drm_ioctl, +# if LINUX_VERSION_CODE < KERNEL_VERSION(3, 18, 0) + /* This shouldn't be necessary even for old kernels as there is + * nothing sensible to mmap. But we play safe and keep it for + * legacy reasons. */ + .mmap = drm_mmap, +# endif + .poll = drm_poll, +}; +#endif + +static struct drm_driver driver = +{ + /* .driver_features = DRIVER_USE_MTRR, */ + .load = vboxvideo_driver_load, +#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 18, 0) + /* If this is missing a warning gets printed to dmesg. We will not + * attempt to make kernels work to which the change (915b4d11b) got back- + * ported, as the problem is only cosmetic. */ + .set_busid = drm_pci_set_busid, +#endif +# ifndef DRM_FOPS_AS_POINTER + .fops = + { + .owner = THIS_MODULE, + .open = drm_open, + .release = drm_release, + /* This was changed with Linux 2.6.33 but Fedora backported this + * change to their 2.6.32 kernel. */ +#if defined(DRM_UNLOCKED) + .unlocked_ioctl = drm_ioctl, +#else + .ioctl = drm_ioctl, +#endif + .mmap = drm_mmap, + .poll = drm_poll, + }, +#else /* defined(DRM_FOPS_AS_POINTER) */ + .fops = &driver_fops, +#endif +#ifndef DRM_NEW_BUS_INIT + .pci_driver = + { + .name = DRIVER_NAME, + .id_table = pciidlist, + }, +#endif + .name = DRIVER_NAME, + .desc = DRIVER_DESC, + .date = DRIVER_DATE, + .major = DRIVER_MAJOR, + .minor = DRIVER_MINOR, + .patchlevel = DRIVER_PATCHLEVEL, +}; + +#ifdef DRM_NEW_BUS_INIT +static struct pci_driver pci_driver = +{ + .name = DRIVER_NAME, + .id_table = pciidlist, +}; +#endif + +static int __init vboxvideo_init(void) +{ +#ifndef DRM_NEW_BUS_INIT + return drm_init(&driver); +#else + return drm_pci_init(&driver, &pci_driver); +#endif +} + +static void __exit vboxvideo_exit(void) +{ +#ifndef DRM_NEW_BUS_INIT + drm_exit(&driver); +#else + drm_pci_exit(&driver, &pci_driver); +#endif +} + +module_init(vboxvideo_init); +module_exit(vboxvideo_exit); + +MODULE_AUTHOR(DRIVER_AUTHOR); +MODULE_DESCRIPTION(DRIVER_DESC); +#ifdef MODULE_VERSION +MODULE_VERSION(VBOX_VERSION_STRING); +#endif +MODULE_LICENSE("GPL and additional rights"); --- linux-raspi2-4.2.0.orig/ubuntu/vbox/vboxvideo/vboxvideo_drm.h +++ linux-raspi2-4.2.0/ubuntu/vbox/vboxvideo/vboxvideo_drm.h @@ -0,0 +1,71 @@ +/** @file $Id: vboxvideo_drm.h $ + * + * VirtualBox Additions Linux kernel driver, DRM support + */ + +/* + * Copyright (C) 2006-2010 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * General Public License (GPL) as published by the Free Software + * Foundation, in version 2 as it comes in the "COPYING" file of the + * VirtualBox OSE distribution. VirtualBox OSE is distributed in the + * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + * -------------------------------------------------------------------- + * + * This code is based on: + * + * tdfx.h -- 3dfx DRM template customization -*- linux-c -*- + * Created: Wed Feb 14 12:32:32 2001 by gareth@valinux.com + * + * Copyright 2000 VA Linux Systems, Inc., Sunnyvale, California. + * All Rights Reserved. + * + * 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 (including the next + * paragraph) 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 + * VA LINUX SYSTEMS AND/OR ITS SUPPLIERS 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: + * Gareth Hughes + */ + +#ifndef __VBOXVIDEO_H__ +#define __VBOXVIDEO_H__ + +/* General customization: + */ + +#include "product-generated.h" + +#define DRIVER_AUTHOR VBOX_VENDOR + +#define DRIVER_NAME "vboxvideo" +#define DRIVER_DESC VBOX_PRODUCT " Graphics Card" +#define DRIVER_DATE "20090303" + +#define DRIVER_MAJOR 1 +#define DRIVER_MINOR 0 +#define DRIVER_PATCHLEVEL 0 + +#define vboxvideo_PCI_IDS \ + {0x80ee, 0xbeef, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, \ + {0, 0, 0} + +#endif --- linux-raspi2-4.2.0.orig/ubuntu/vbox/vboxvideo/version-generated.h +++ linux-raspi2-4.2.0/ubuntu/vbox/vboxvideo/version-generated.h @@ -0,0 +1,13 @@ +#ifndef ___version_generated_h___ +#define ___version_generated_h___ + +#define VBOX_VERSION_MAJOR 5 +#define VBOX_VERSION_MINOR 0 +#define VBOX_VERSION_BUILD 0 +#define VBOX_VERSION_STRING_RAW "5.0.0" +#define VBOX_VERSION_STRING "5.0.0_Ubuntu" +#define VBOX_API_VERSION_STRING "5_0" + +#define VBOX_PRIVATE_BUILD_DESC "Private build by root" + +#endif --- linux-raspi2-4.2.0.orig/virt/kvm/arm/its-emul.c +++ linux-raspi2-4.2.0/virt/kvm/arm/its-emul.c @@ -0,0 +1,1141 @@ +/* + * GICv3 ITS emulation + * + * Copyright (C) 2015 ARM Ltd. + * Author: Andre Przywara + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + * + * 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 . + */ + +#include +#include +#include +#include +#include +#include + +#include +#include + +#include +#include +#include + +#include "vgic.h" +#include "its-emul.h" + +struct its_device { + struct list_head dev_list; + struct list_head itt; + u32 device_id; +}; + +struct its_collection { + struct list_head coll_list; + u32 collection_id; + u32 target_addr; +}; + +struct its_itte { + struct list_head itte_list; + struct its_collection *collection; + u32 lpi; + u32 event_id; + u8 priority; + bool enabled; + unsigned long *pending; +}; + +static struct its_device *find_its_device(struct kvm *kvm, u32 device_id) +{ + struct vgic_its *its = &kvm->arch.vgic.its; + struct its_device *device; + + list_for_each_entry(device, &its->device_list, dev_list) + if (device_id == device->device_id) + return device; + + return NULL; +} + +static struct its_itte *find_itte(struct kvm *kvm, u32 device_id, u32 event_id) +{ + struct its_device *device; + struct its_itte *itte; + + device = find_its_device(kvm, device_id); + if (device == NULL) + return NULL; + + list_for_each_entry(itte, &device->itt, itte_list) + if (itte->event_id == event_id) + return itte; + + return NULL; +} + +#define for_each_lpi(dev, itte, kvm) \ + list_for_each_entry(dev, &(kvm)->arch.vgic.its.device_list, dev_list) \ + list_for_each_entry(itte, &(dev)->itt, itte_list) + +static struct its_itte *find_itte_by_lpi(struct kvm *kvm, int lpi) +{ + struct its_device *device; + struct its_itte *itte; + + for_each_lpi(device, itte, kvm) { + if (itte->lpi == lpi) + return itte; + } + return NULL; +} + +static struct its_collection *find_collection(struct kvm *kvm, int coll_id) +{ + struct its_collection *collection; + + list_for_each_entry(collection, &kvm->arch.vgic.its.collection_list, + coll_list) { + if (coll_id == collection->collection_id) + return collection; + } + + return NULL; +} + +#define LPI_PROP_ENABLE_BIT(p) ((p) & LPI_PROP_ENABLED) +#define LPI_PROP_PRIORITY(p) ((p) & 0xfc) + +/* stores the priority and enable bit for a given LPI */ +static void update_lpi_config(struct kvm *kvm, struct its_itte *itte, u8 prop) +{ + itte->priority = LPI_PROP_PRIORITY(prop); + itte->enabled = LPI_PROP_ENABLE_BIT(prop); +} + +#define GIC_LPI_OFFSET 8192 + +/* We scan the table in chunks the size of the smallest page size */ +#define CHUNK_SIZE 4096U + +#define BASER_BASE_ADDRESS(x) ((x) & 0xfffffffff000ULL) + +static int nr_idbits_propbase(u64 propbaser) +{ + int nr_idbits = (1U << (propbaser & 0x1f)) + 1; + + return max(nr_idbits, INTERRUPT_ID_BITS_ITS); +} + +/* + * Scan the whole LPI configuration table and put the LPI configuration + * data in our own data structures. This relies on the LPI being + * mapped before. + */ +static bool its_update_lpis_configuration(struct kvm *kvm) +{ + struct vgic_dist *dist = &kvm->arch.vgic; + u8 *prop = dist->its.buffer_page; + u32 tsize; + gpa_t propbase; + int lpi = GIC_LPI_OFFSET; + struct its_itte *itte; + struct its_device *device; + int ret; + + propbase = BASER_BASE_ADDRESS(dist->propbaser); + tsize = nr_idbits_propbase(dist->propbaser); + + while (tsize > 0) { + int chunksize = min(tsize, CHUNK_SIZE); + + ret = kvm_read_guest(kvm, propbase, prop, chunksize); + if (ret) + return false; + + spin_lock(&dist->its.lock); + /* + * Updating the status for all allocated LPIs. We catch + * those LPIs that get disabled. We really don't care + * about unmapped LPIs, as they need to be updated + * later manually anyway once they get mapped. + */ + for_each_lpi(device, itte, kvm) { + if (itte->lpi < lpi || itte->lpi >= lpi + chunksize) + continue; + + update_lpi_config(kvm, itte, prop[itte->lpi - lpi]); + } + spin_unlock(&dist->its.lock); + tsize -= chunksize; + lpi += chunksize; + propbase += chunksize; + } + + return true; +} + +/* + * Scan the whole LPI pending table and sync the pending bit in there + * with our own data structures. This relies on the LPI being + * mapped before. + */ +static bool its_sync_lpi_pending_table(struct kvm_vcpu *vcpu) +{ + struct vgic_dist *dist = &vcpu->kvm->arch.vgic; + unsigned long *pendmask = dist->its.buffer_page; + u32 nr_lpis = VITS_NR_LPIS; + gpa_t pendbase; + int lpi = 0; + struct its_itte *itte; + struct its_device *device; + int ret; + int lpi_bit, nr_bits; + + pendbase = BASER_BASE_ADDRESS(dist->pendbaser[vcpu->vcpu_id]); + + while (nr_lpis > 0) { + nr_bits = min(nr_lpis, CHUNK_SIZE * 8); + + ret = kvm_read_guest(vcpu->kvm, pendbase, pendmask, + nr_bits / 8); + if (ret) + return false; + + spin_lock(&dist->its.lock); + for_each_lpi(device, itte, vcpu->kvm) { + lpi_bit = itte->lpi - lpi; + if (lpi_bit < 0 || lpi_bit >= nr_bits) + continue; + if (test_bit(lpi_bit, pendmask)) + __set_bit(vcpu->vcpu_id, itte->pending); + else + __clear_bit(vcpu->vcpu_id, itte->pending); + } + spin_unlock(&dist->its.lock); + nr_lpis -= nr_bits; + lpi += nr_bits; + pendbase += nr_bits / 8; + } + + return true; +} + +/* The distributor lock is held by the VGIC MMIO handler. */ +static bool handle_mmio_misc_gits(struct kvm_vcpu *vcpu, + struct kvm_exit_mmio *mmio, + phys_addr_t offset) +{ + struct vgic_its *its = &vcpu->kvm->arch.vgic.its; + u32 reg; + bool was_enabled; + + switch (offset & ~3) { + case 0x00: /* GITS_CTLR */ + /* We never defer any command execution. */ + reg = GITS_CTLR_QUIESCENT; + if (its->enabled) + reg |= GITS_CTLR_ENABLE; + was_enabled = its->enabled; + vgic_reg_access(mmio, ®, offset & 3, + ACCESS_READ_VALUE | ACCESS_WRITE_VALUE); + its->enabled = !!(reg & GITS_CTLR_ENABLE); + return !was_enabled && its->enabled; + case 0x04: /* GITS_IIDR */ + reg = (PRODUCT_ID_KVM << 24) | (IMPLEMENTER_ARM << 0); + vgic_reg_access(mmio, ®, offset & 3, + ACCESS_READ_VALUE | ACCESS_WRITE_IGNORED); + break; + case 0x08: /* GITS_TYPER */ + /* + * We use linear CPU numbers for redistributor addressing, + * so GITS_TYPER.PTA is 0. + * To avoid memory waste on the guest side, we keep the + * number of IDBits and DevBits low for the time being. + * This could later be made configurable by userland. + * Since we have all collections in linked list, we claim + * that we can hold all of the collection tables in our + * own memory and that the ITT entry size is 1 byte (the + * smallest possible one). + */ + reg = GITS_TYPER_PLPIS; + reg |= 0xff << GITS_TYPER_HWCOLLCNT_SHIFT; + reg |= 0x0f << GITS_TYPER_DEVBITS_SHIFT; + reg |= 0x0f << GITS_TYPER_IDBITS_SHIFT; + vgic_reg_access(mmio, ®, offset & 3, + ACCESS_READ_VALUE | ACCESS_WRITE_IGNORED); + break; + case 0x0c: + /* The upper 32bits of TYPER are all 0 for the time being. + * Should we need more than 256 collections, we can enable + * some bits in here. + */ + vgic_reg_access(mmio, NULL, offset & 3, + ACCESS_READ_RAZ | ACCESS_WRITE_IGNORED); + break; + } + + return false; +} + +static bool handle_mmio_gits_idregs(struct kvm_vcpu *vcpu, + struct kvm_exit_mmio *mmio, + phys_addr_t offset) +{ + u32 reg = 0; + int idreg = (offset & ~3) + GITS_IDREGS_BASE; + + switch (idreg) { + case GITS_PIDR2: + reg = GIC_PIDR2_ARCH_GICv3; + break; + case GITS_PIDR4: + /* This is a 64K software visible page */ + reg = 0x40; + break; + /* Those are the ID registers for (any) GIC. */ + case GITS_CIDR0: + reg = 0x0d; + break; + case GITS_CIDR1: + reg = 0xf0; + break; + case GITS_CIDR2: + reg = 0x05; + break; + case GITS_CIDR3: + reg = 0xb1; + break; + } + vgic_reg_access(mmio, ®, offset & 3, + ACCESS_READ_VALUE | ACCESS_WRITE_IGNORED); + return false; +} + +/* + * Translates an incoming MSI request into the redistributor (=VCPU) and + * the associated LPI number. Sets the LPI pending bit and also marks the + * VCPU as having a pending interrupt. + */ +int vits_inject_msi(struct kvm *kvm, struct kvm_msi *msi) +{ + struct vgic_dist *dist = &kvm->arch.vgic; + struct vgic_its *its = &dist->its; + struct its_itte *itte; + int cpuid; + bool inject = false; + int ret = 0; + + if (!vgic_has_its(kvm)) + return -ENODEV; + + if (!(msi->flags & KVM_MSI_VALID_DEVID)) + return -EINVAL; + + spin_lock(&its->lock); + + if (!its->enabled || !dist->lpis_enabled) { + ret = -EAGAIN; + goto out_unlock; + } + + itte = find_itte(kvm, msi->devid, msi->data); + /* Triggering an unmapped IRQ gets silently dropped. */ + if (!itte || !itte->collection) + goto out_unlock; + + cpuid = itte->collection->target_addr; + __set_bit(cpuid, itte->pending); + inject = itte->enabled; + +out_unlock: + spin_unlock(&its->lock); + + if (inject) { + spin_lock(&dist->lock); + __set_bit(cpuid, dist->irq_pending_on_cpu); + spin_unlock(&dist->lock); + kvm_vcpu_kick(kvm_get_vcpu(kvm, cpuid)); + } + + return ret; +} + +/* + * Find all enabled and pending LPIs and queue them into the list + * registers. + * The dist lock is held by the caller. + */ +bool vits_queue_lpis(struct kvm_vcpu *vcpu) +{ + struct vgic_its *its = &vcpu->kvm->arch.vgic.its; + struct its_device *device; + struct its_itte *itte; + bool ret = true; + + if (!vgic_has_its(vcpu->kvm)) + return true; + if (!its->enabled || !vcpu->kvm->arch.vgic.lpis_enabled) + return true; + + spin_lock(&its->lock); + for_each_lpi(device, itte, vcpu->kvm) { + if (!itte->enabled || !test_bit(vcpu->vcpu_id, itte->pending)) + continue; + + if (!itte->collection) + continue; + + if (itte->collection->target_addr != vcpu->vcpu_id) + continue; + + __clear_bit(vcpu->vcpu_id, itte->pending); + + ret &= vgic_queue_irq(vcpu, 0, itte->lpi); + } + + spin_unlock(&its->lock); + return ret; +} + +/* Called with the distributor lock held by the caller. */ +void vits_unqueue_lpi(struct kvm_vcpu *vcpu, int lpi) +{ + struct vgic_its *its = &vcpu->kvm->arch.vgic.its; + struct its_itte *itte; + + spin_lock(&its->lock); + + /* Find the right ITTE and put the pending state back in there */ + itte = find_itte_by_lpi(vcpu->kvm, lpi); + if (itte) + __set_bit(vcpu->vcpu_id, itte->pending); + + spin_unlock(&its->lock); +} + +static u64 its_cmd_mask_field(u64 *its_cmd, int word, int shift, int size) +{ + return (le64_to_cpu(its_cmd[word]) >> shift) & (BIT_ULL(size) - 1); +} + +#define its_cmd_get_command(cmd) its_cmd_mask_field(cmd, 0, 0, 8) +#define its_cmd_get_deviceid(cmd) its_cmd_mask_field(cmd, 0, 32, 32) +#define its_cmd_get_id(cmd) its_cmd_mask_field(cmd, 1, 0, 32) +#define its_cmd_get_physical_id(cmd) its_cmd_mask_field(cmd, 1, 32, 32) +#define its_cmd_get_collection(cmd) its_cmd_mask_field(cmd, 2, 0, 16) +#define its_cmd_get_target_addr(cmd) its_cmd_mask_field(cmd, 2, 16, 32) +#define its_cmd_get_validbit(cmd) its_cmd_mask_field(cmd, 2, 63, 1) + +/* The DISCARD command frees an Interrupt Translation Table Entry (ITTE). */ +static int vits_cmd_handle_discard(struct kvm *kvm, u64 *its_cmd) +{ + struct vgic_its *its = &kvm->arch.vgic.its; + u32 device_id; + u32 event_id; + struct its_itte *itte; + int ret = 0; + + device_id = its_cmd_get_deviceid(its_cmd); + event_id = its_cmd_get_id(its_cmd); + + spin_lock(&its->lock); + itte = find_itte(kvm, device_id, event_id); + if (!itte || !itte->collection) { + ret = E_ITS_DISCARD_UNMAPPED_INTERRUPT; + goto out_unlock; + } + + __clear_bit(itte->collection->target_addr, itte->pending); + + list_del(&itte->itte_list); + kfree(itte); +out_unlock: + spin_unlock(&its->lock); + return ret; +} + +/* The MOVI command moves an ITTE to a different collection. */ +static int vits_cmd_handle_movi(struct kvm *kvm, u64 *its_cmd) +{ + struct vgic_its *its = &kvm->arch.vgic.its; + u32 device_id = its_cmd_get_deviceid(its_cmd); + u32 event_id = its_cmd_get_id(its_cmd); + u32 coll_id = its_cmd_get_collection(its_cmd); + struct its_itte *itte; + struct its_collection *collection; + int ret; + + spin_lock(&its->lock); + itte = find_itte(kvm, device_id, event_id); + if (!itte) { + ret = E_ITS_MOVI_UNMAPPED_INTERRUPT; + goto out_unlock; + } + if (!itte->collection) { + ret = E_ITS_MOVI_UNMAPPED_COLLECTION; + goto out_unlock; + } + + collection = find_collection(kvm, coll_id); + if (!collection) { + ret = E_ITS_MOVI_UNMAPPED_COLLECTION; + goto out_unlock; + } + + if (test_and_clear_bit(itte->collection->target_addr, itte->pending)) + __set_bit(collection->target_addr, itte->pending); + + itte->collection = collection; +out_unlock: + spin_unlock(&its->lock); + return ret; +} + +static void vits_init_collection(struct kvm *kvm, + struct its_collection *collection, + u32 coll_id) +{ + collection->collection_id = coll_id; + + list_add_tail(&collection->coll_list, + &kvm->arch.vgic.its.collection_list); +} + +/* The MAPTI and MAPI commands map LPIs to ITTEs. */ +static int vits_cmd_handle_mapi(struct kvm *kvm, u64 *its_cmd, u8 cmd) +{ + struct vgic_dist *dist = &kvm->arch.vgic; + u32 device_id = its_cmd_get_deviceid(its_cmd); + u32 event_id = its_cmd_get_id(its_cmd); + u32 coll_id = its_cmd_get_collection(its_cmd); + struct its_itte *itte, *new_itte; + struct its_device *device; + struct its_collection *collection, *new_coll; + int lpi_nr; + int ret = 0; + + /* Preallocate possibly needed memory here outside of the lock */ + new_coll = kmalloc(sizeof(struct its_collection), GFP_KERNEL); + new_itte = kzalloc(sizeof(struct its_itte), GFP_KERNEL); + if (new_itte) + new_itte->pending = kcalloc(BITS_TO_LONGS(dist->nr_cpus), + sizeof(long), GFP_KERNEL); + + spin_lock(&dist->its.lock); + + device = find_its_device(kvm, device_id); + if (!device) { + ret = E_ITS_MAPTI_UNMAPPED_DEVICE; + goto out_unlock; + } + + collection = find_collection(kvm, coll_id); + if (!collection && !new_coll) { + ret = -ENOMEM; + goto out_unlock; + } + + if (cmd == GITS_CMD_MAPTI) + lpi_nr = its_cmd_get_physical_id(its_cmd); + else + lpi_nr = event_id; + if (lpi_nr < GIC_LPI_OFFSET || + lpi_nr >= nr_idbits_propbase(dist->propbaser)) { + ret = E_ITS_MAPTI_PHYSICALID_OOR; + goto out_unlock; + } + + itte = find_itte(kvm, device_id, event_id); + if (!itte) { + if (!new_itte || !new_itte->pending) { + ret = -ENOMEM; + goto out_unlock; + } + itte = new_itte; + + itte->event_id = event_id; + list_add_tail(&itte->itte_list, &device->itt); + } else { + if (new_itte) + kfree(new_itte->pending); + kfree(new_itte); + } + + if (!collection) { + collection = new_coll; + vits_init_collection(kvm, collection, coll_id); + } else { + kfree(new_coll); + } + + itte->collection = collection; + itte->lpi = lpi_nr; + +out_unlock: + spin_unlock(&dist->its.lock); + if (ret) { + kfree(new_coll); + if (new_itte) + kfree(new_itte->pending); + kfree(new_itte); + } + return ret; +} + +static void vits_unmap_device(struct kvm *kvm, struct its_device *device) +{ + struct its_itte *itte, *temp; + + /* + * The spec says that unmapping a device with still valid + * ITTEs associated is UNPREDICTABLE. We remove all ITTEs, + * since we cannot leave the memory unreferenced. + */ + list_for_each_entry_safe(itte, temp, &device->itt, itte_list) { + list_del(&itte->itte_list); + kfree(itte); + } + + list_del(&device->dev_list); + kfree(device); +} + +/* The MAPD command maps device IDs to Interrupt Translation Tables (ITTs). */ +static int vits_cmd_handle_mapd(struct kvm *kvm, u64 *its_cmd) +{ + struct vgic_its *its = &kvm->arch.vgic.its; + bool valid = its_cmd_get_validbit(its_cmd); + u32 device_id = its_cmd_get_deviceid(its_cmd); + struct its_device *device, *new_device = NULL; + + /* We preallocate memory outside of the lock here */ + if (valid) { + new_device = kzalloc(sizeof(struct its_device), GFP_KERNEL); + if (!new_device) + return -ENOMEM; + } + + spin_lock(&its->lock); + + device = find_its_device(kvm, device_id); + if (device) + vits_unmap_device(kvm, device); + + /* + * The spec does not say whether unmapping a not-mapped device + * is an error, so we are done in any case. + */ + if (!valid) + goto out_unlock; + + device = new_device; + + device->device_id = device_id; + INIT_LIST_HEAD(&device->itt); + + list_add_tail(&device->dev_list, + &kvm->arch.vgic.its.device_list); + +out_unlock: + spin_unlock(&its->lock); + return 0; +} + +/* The MAPC command maps collection IDs to redistributors. */ +static int vits_cmd_handle_mapc(struct kvm *kvm, u64 *its_cmd) +{ + struct vgic_its *its = &kvm->arch.vgic.its; + u16 coll_id; + u32 target_addr; + struct its_collection *collection, *new_coll = NULL; + bool valid; + + valid = its_cmd_get_validbit(its_cmd); + coll_id = its_cmd_get_collection(its_cmd); + target_addr = its_cmd_get_target_addr(its_cmd); + + if (target_addr >= atomic_read(&kvm->online_vcpus)) + return E_ITS_MAPC_PROCNUM_OOR; + + /* We preallocate memory outside of the lock here */ + if (valid) { + new_coll = kmalloc(sizeof(struct its_collection), GFP_KERNEL); + if (!new_coll) + return -ENOMEM; + } + + spin_lock(&its->lock); + collection = find_collection(kvm, coll_id); + + if (!valid) { + struct its_device *device; + struct its_itte *itte; + /* + * Clearing the mapping for that collection ID removes the + * entry from the list. If there wasn't any before, we can + * go home early. + */ + if (!collection) + goto out_unlock; + + for_each_lpi(device, itte, kvm) + if (itte->collection && + itte->collection->collection_id == coll_id) + itte->collection = NULL; + + list_del(&collection->coll_list); + kfree(collection); + } else { + if (!collection) + collection = new_coll; + else + kfree(new_coll); + + vits_init_collection(kvm, collection, coll_id); + collection->target_addr = target_addr; + } + +out_unlock: + spin_unlock(&its->lock); + return 0; +} + +/* The CLEAR command removes the pending state for a particular LPI. */ +static int vits_cmd_handle_clear(struct kvm *kvm, u64 *its_cmd) +{ + struct vgic_its *its = &kvm->arch.vgic.its; + u32 device_id; + u32 event_id; + struct its_itte *itte; + int ret = 0; + + device_id = its_cmd_get_deviceid(its_cmd); + event_id = its_cmd_get_id(its_cmd); + + spin_lock(&its->lock); + + itte = find_itte(kvm, device_id, event_id); + if (!itte) { + ret = E_ITS_CLEAR_UNMAPPED_INTERRUPT; + goto out_unlock; + } + + if (itte->collection) + __clear_bit(itte->collection->target_addr, itte->pending); + +out_unlock: + spin_unlock(&its->lock); + return ret; +} + +/* The INV command syncs the pending bit from the memory tables. */ +static int vits_cmd_handle_inv(struct kvm *kvm, u64 *its_cmd) +{ + struct vgic_dist *dist = &kvm->arch.vgic; + u32 device_id; + u32 event_id; + struct its_itte *itte, *new_itte; + gpa_t propbase; + int ret; + u8 prop; + + device_id = its_cmd_get_deviceid(its_cmd); + event_id = its_cmd_get_id(its_cmd); + + spin_lock(&dist->its.lock); + itte = find_itte(kvm, device_id, event_id); + spin_unlock(&dist->its.lock); + if (!itte) + return E_ITS_INV_UNMAPPED_INTERRUPT; + + /* + * We cannot read from guest memory inside the spinlock, so we + * need to re-read our tables to learn whether the LPI number we are + * using is still valid. + */ + do { + propbase = BASER_BASE_ADDRESS(dist->propbaser); + ret = kvm_read_guest(kvm, propbase + itte->lpi - GIC_LPI_OFFSET, + &prop, 1); + if (ret) + return ret; + + spin_lock(&dist->its.lock); + new_itte = find_itte(kvm, device_id, event_id); + if (new_itte->lpi != itte->lpi) { + itte = new_itte; + spin_unlock(&dist->its.lock); + continue; + } + update_lpi_config(kvm, itte, prop); + spin_unlock(&dist->its.lock); + } while (0); + return 0; +} + +/* The INVALL command requests flushing of all IRQ data in this collection. */ +static int vits_cmd_handle_invall(struct kvm *kvm, u64 *its_cmd) +{ + u32 coll_id = its_cmd_get_collection(its_cmd); + struct its_collection *collection; + struct kvm_vcpu *vcpu; + + collection = find_collection(kvm, coll_id); + if (!collection) + return E_ITS_INVALL_UNMAPPED_COLLECTION; + + vcpu = kvm_get_vcpu(kvm, collection->target_addr); + + its_update_lpis_configuration(kvm); + its_sync_lpi_pending_table(vcpu); + + return 0; +} + +/* The MOVALL command moves all IRQs from one redistributor to another. */ +static int vits_cmd_handle_movall(struct kvm *kvm, u64 *its_cmd) +{ + struct vgic_its *its = &kvm->arch.vgic.its; + u32 target1_addr = its_cmd_get_target_addr(its_cmd); + u32 target2_addr = its_cmd_mask_field(its_cmd, 3, 16, 32); + struct its_collection *collection; + struct its_device *device; + struct its_itte *itte; + + if (target1_addr >= atomic_read(&kvm->online_vcpus) || + target2_addr >= atomic_read(&kvm->online_vcpus)) + return E_ITS_MOVALL_PROCNUM_OOR; + + if (target1_addr == target2_addr) + return 0; + + spin_lock(&its->lock); + for_each_lpi(device, itte, kvm) { + /* remap all collections mapped to target address 1 */ + collection = itte->collection; + if (collection && collection->target_addr == target1_addr) + collection->target_addr = target2_addr; + + /* move pending state if LPI is affected */ + if (test_and_clear_bit(target1_addr, itte->pending)) + __set_bit(target2_addr, itte->pending); + } + + spin_unlock(&its->lock); + return 0; +} + +/* The INT command injects the LPI associated with that DevID/EvID pair. */ +static int vits_cmd_handle_int(struct kvm *kvm, u64 *its_cmd) +{ + struct kvm_msi msi = { + .data = its_cmd_get_id(its_cmd), + .devid = its_cmd_get_deviceid(its_cmd), + .flags = KVM_MSI_VALID_DEVID, + }; + + vits_inject_msi(kvm, &msi); + return 0; +} + +static int vits_handle_command(struct kvm_vcpu *vcpu, u64 *its_cmd) +{ + u8 cmd = its_cmd_get_command(its_cmd); + int ret = -ENODEV; + + switch (cmd) { + case GITS_CMD_MAPD: + ret = vits_cmd_handle_mapd(vcpu->kvm, its_cmd); + break; + case GITS_CMD_MAPC: + ret = vits_cmd_handle_mapc(vcpu->kvm, its_cmd); + break; + case GITS_CMD_MAPI: + ret = vits_cmd_handle_mapi(vcpu->kvm, its_cmd, cmd); + break; + case GITS_CMD_MAPTI: + ret = vits_cmd_handle_mapi(vcpu->kvm, its_cmd, cmd); + break; + case GITS_CMD_MOVI: + ret = vits_cmd_handle_movi(vcpu->kvm, its_cmd); + break; + case GITS_CMD_DISCARD: + ret = vits_cmd_handle_discard(vcpu->kvm, its_cmd); + break; + case GITS_CMD_CLEAR: + ret = vits_cmd_handle_clear(vcpu->kvm, its_cmd); + break; + case GITS_CMD_MOVALL: + ret = vits_cmd_handle_movall(vcpu->kvm, its_cmd); + break; + case GITS_CMD_INT: + ret = vits_cmd_handle_int(vcpu->kvm, its_cmd); + break; + case GITS_CMD_INV: + ret = vits_cmd_handle_inv(vcpu->kvm, its_cmd); + break; + case GITS_CMD_INVALL: + ret = vits_cmd_handle_invall(vcpu->kvm, its_cmd); + break; + case GITS_CMD_SYNC: + /* we ignore this command: we are in sync all of the time */ + ret = 0; + break; + } + + return ret; +} + +static bool handle_mmio_gits_cbaser(struct kvm_vcpu *vcpu, + struct kvm_exit_mmio *mmio, + phys_addr_t offset) +{ + struct vgic_its *its = &vcpu->kvm->arch.vgic.its; + int mode = ACCESS_READ_VALUE; + + mode |= its->enabled ? ACCESS_WRITE_IGNORED : ACCESS_WRITE_VALUE; + + vgic_handle_base_register(vcpu, mmio, offset, &its->cbaser, mode); + + /* Writing CBASER resets the read pointer. */ + if (mmio->is_write) + its->creadr = 0; + + return false; +} + +static int its_cmd_buffer_size(struct kvm *kvm) +{ + struct vgic_its *its = &kvm->arch.vgic.its; + + return ((its->cbaser & 0xff) + 1) << 12; +} + +static gpa_t its_cmd_buffer_base(struct kvm *kvm) +{ + struct vgic_its *its = &kvm->arch.vgic.its; + + return BASER_BASE_ADDRESS(its->cbaser); +} + +/* + * By writing to CWRITER the guest announces new commands to be processed. + * Since we cannot read from guest memory inside the ITS spinlock, we + * iterate over the command buffer (with the lock dropped) until the read + * pointer matches the write pointer. Other VCPUs writing this register in the + * meantime will just update the write pointer, leaving the command + * processing to the first instance of the function. + */ +static bool handle_mmio_gits_cwriter(struct kvm_vcpu *vcpu, + struct kvm_exit_mmio *mmio, + phys_addr_t offset) +{ + struct vgic_its *its = &vcpu->kvm->arch.vgic.its; + gpa_t cbaser = its_cmd_buffer_base(vcpu->kvm); + u64 cmd_buf[4]; + u32 reg; + bool finished; + + /* The upper 32 bits are RES0 */ + if ((offset & ~3) == 0x04) { + vgic_reg_access(mmio, ®, offset & 3, + ACCESS_READ_RAZ | ACCESS_WRITE_IGNORED); + return false; + } + + reg = its->cwriter & 0xfffe0; + vgic_reg_access(mmio, ®, offset & 3, + ACCESS_READ_VALUE | ACCESS_WRITE_VALUE); + if (!mmio->is_write) + return false; + + reg &= 0xfffe0; + if (reg > its_cmd_buffer_size(vcpu->kvm)) + return false; + + spin_lock(&its->lock); + + /* + * If there is still another VCPU handling commands, let this + * one pick up the new CWRITER and process our new commands as well. + */ + finished = (its->cwriter != its->creadr); + its->cwriter = reg; + + spin_unlock(&its->lock); + + while (!finished) { + int ret = kvm_read_guest(vcpu->kvm, cbaser + its->creadr, + cmd_buf, 32); + if (ret) { + /* + * Gah, we are screwed. Reset CWRITER to that command + * that we have finished processing and return. + */ + spin_lock(&its->lock); + its->cwriter = its->creadr; + spin_unlock(&its->lock); + break; + } + vits_handle_command(vcpu, cmd_buf); + + spin_lock(&its->lock); + its->creadr += 32; + if (its->creadr == its_cmd_buffer_size(vcpu->kvm)) + its->creadr = 0; + finished = (its->creadr == its->cwriter); + spin_unlock(&its->lock); + } + + return false; +} + +static bool handle_mmio_gits_creadr(struct kvm_vcpu *vcpu, + struct kvm_exit_mmio *mmio, + phys_addr_t offset) +{ + struct vgic_its *its = &vcpu->kvm->arch.vgic.its; + u32 reg; + + switch (offset & ~3) { + case 0x00: + reg = its->creadr & 0xfffe0; + vgic_reg_access(mmio, ®, offset & 3, + ACCESS_READ_VALUE | ACCESS_WRITE_IGNORED); + break; + case 0x04: + vgic_reg_access(mmio, ®, offset & 3, + ACCESS_READ_RAZ | ACCESS_WRITE_IGNORED); + break; + } + return false; +} + +static const struct vgic_io_range vgicv3_its_ranges[] = { + { + .base = GITS_CTLR, + .len = 0x10, + .bits_per_irq = 0, + .handle_mmio = handle_mmio_misc_gits, + }, + { + .base = GITS_CBASER, + .len = 0x08, + .bits_per_irq = 0, + .handle_mmio = handle_mmio_gits_cbaser, + }, + { + .base = GITS_CWRITER, + .len = 0x08, + .bits_per_irq = 0, + .handle_mmio = handle_mmio_gits_cwriter, + }, + { + .base = GITS_CREADR, + .len = 0x08, + .bits_per_irq = 0, + .handle_mmio = handle_mmio_gits_creadr, + }, + { + /* We don't need any memory from the guest. */ + .base = GITS_BASER, + .len = 0x40, + .bits_per_irq = 0, + .handle_mmio = handle_mmio_raz_wi, + }, + { + .base = GITS_IDREGS_BASE, + .len = 0x30, + .bits_per_irq = 0, + .handle_mmio = handle_mmio_gits_idregs, + }, +}; + +/* This is called on setting the LPI enable bit in the redistributor. */ +void vgic_enable_lpis(struct kvm_vcpu *vcpu) +{ + its_update_lpis_configuration(vcpu->kvm); + its_sync_lpi_pending_table(vcpu); +} + +int vits_init(struct kvm *kvm) +{ + struct vgic_dist *dist = &kvm->arch.vgic; + struct vgic_its *its = &dist->its; + int ret; + + dist->pendbaser = kmalloc(sizeof(u64) * dist->nr_cpus, GFP_KERNEL); + if (!dist->pendbaser) + return -ENOMEM; + + its->buffer_page = kmalloc(CHUNK_SIZE, GFP_KERNEL); + if (!its->buffer_page) + return -ENOMEM; + + spin_lock_init(&its->lock); + + INIT_LIST_HEAD(&its->device_list); + INIT_LIST_HEAD(&its->collection_list); + + ret = vgic_register_kvm_io_dev(kvm, dist->vgic_its_base, + KVM_VGIC_V3_ITS_SIZE, vgicv3_its_ranges, + -1, &its->iodev); + if (ret) + return ret; + + its->enabled = false; + dist->msis_require_devid = true; + + return 0; +} + +void vits_destroy(struct kvm *kvm) +{ + struct vgic_dist *dist = &kvm->arch.vgic; + struct vgic_its *its = &dist->its; + struct its_device *dev; + struct its_itte *itte; + struct list_head *dev_cur, *dev_temp; + struct list_head *cur, *temp; + + if (!vgic_has_its(kvm)) + return; + + if (!its->device_list.next) + return; + + spin_lock(&its->lock); + list_for_each_safe(dev_cur, dev_temp, &its->device_list) { + dev = container_of(dev_cur, struct its_device, dev_list); + list_for_each_safe(cur, temp, &dev->itt) { + itte = (container_of(cur, struct its_itte, itte_list)); + list_del(cur); + kfree(itte->pending); + kfree(itte); + } + list_del(dev_cur); + kfree(dev); + } + + list_for_each_safe(cur, temp, &its->collection_list) { + list_del(cur); + kfree(container_of(cur, struct its_collection, coll_list)); + } + + kfree(its->buffer_page); + kfree(dist->pendbaser); + + its->enabled = false; + spin_unlock(&its->lock); +} --- linux-raspi2-4.2.0.orig/virt/kvm/arm/its-emul.h +++ linux-raspi2-4.2.0/virt/kvm/arm/its-emul.h @@ -0,0 +1,55 @@ +/* + * GICv3 ITS emulation definitions + * + * Copyright (C) 2015 ARM Ltd. + * Author: Andre Przywara + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + * + * 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 __KVM_ITS_EMUL_H__ +#define __KVM_ITS_EMUL_H__ + +#include +#include + +#include +#include +#include + +#include "vgic.h" + +#define INTERRUPT_ID_BITS_ITS 16 +#define VITS_NR_LPIS (1U << INTERRUPT_ID_BITS_ITS) + +void vgic_enable_lpis(struct kvm_vcpu *vcpu); +int vits_init(struct kvm *kvm); +void vits_destroy(struct kvm *kvm); + +int vits_inject_msi(struct kvm *kvm, struct kvm_msi *msi); + +bool vits_queue_lpis(struct kvm_vcpu *vcpu); +void vits_unqueue_lpi(struct kvm_vcpu *vcpu, int irq); + +#define E_ITS_MOVI_UNMAPPED_INTERRUPT 0x010107 +#define E_ITS_MOVI_UNMAPPED_COLLECTION 0x010109 +#define E_ITS_CLEAR_UNMAPPED_INTERRUPT 0x010507 +#define E_ITS_MAPC_PROCNUM_OOR 0x010902 +#define E_ITS_MAPTI_UNMAPPED_DEVICE 0x010a04 +#define E_ITS_MAPTI_PHYSICALID_OOR 0x010a06 +#define E_ITS_INV_UNMAPPED_INTERRUPT 0x010c07 +#define E_ITS_INVALL_UNMAPPED_COLLECTION 0x010d09 +#define E_ITS_MOVALL_PROCNUM_OOR 0x010e01 +#define E_ITS_DISCARD_UNMAPPED_INTERRUPT 0x010f07 + +#endif --- linux-raspi2-4.2.0.orig/virt/kvm/arm/vgic-v2-emul.c +++ linux-raspi2-4.2.0/virt/kvm/arm/vgic-v2-emul.c @@ -478,6 +478,21 @@ } /** + * vgic_v2m_inject_msi: emulates GICv2M MSI injection by injecting + * the SPI ID matching the msi data + * + * @kvm: pointer to the kvm struct + * @msi: the msi struct handle + */ +static int vgic_v2m_inject_msi(struct kvm *kvm, struct kvm_msi *msi) +{ + if (msi->flags & KVM_MSI_VALID_DEVID) + return -EINVAL; + + return kvm_vgic_inject_irq(kvm, 0, msi->data, 1); +} + +/** * kvm_vgic_map_resources - Configure global VGIC state before running any VCPUs * @kvm: pointer to the kvm struct * @@ -566,6 +581,10 @@ dist->vm_ops.add_sgi_source = vgic_v2_add_sgi_source; dist->vm_ops.init_model = vgic_v2_init_model; dist->vm_ops.map_resources = vgic_v2_map_resources; + dist->vm_ops.inject_msi = vgic_v2m_inject_msi; + + dist->vgic_cpu_base = VGIC_ADDR_UNDEF; + dist->vgic_dist_base = VGIC_ADDR_UNDEF; kvm->arch.max_vcpus = VGIC_V2_MAX_CPUS; } --- linux-raspi2-4.2.0.orig/virt/kvm/arm/vgic-v2.c +++ linux-raspi2-4.2.0/virt/kvm/arm/vgic-v2.c @@ -144,6 +144,7 @@ * anyway. */ vcpu->arch.vgic_cpu.vgic_v2.vgic_vmcr = 0; + vcpu->arch.vgic_cpu.vgic_v2.vgic_elrsr = ~0; /* Get the show on the road... */ vcpu->arch.vgic_cpu.vgic_v2.vgic_hcr = GICH_HCR_EN; --- linux-raspi2-4.2.0.orig/virt/kvm/arm/vgic-v3-emul.c +++ linux-raspi2-4.2.0/virt/kvm/arm/vgic-v3-emul.c @@ -8,7 +8,6 @@ * * Limitations of the emulation: * (RAZ/WI: read as zero, write ignore, RAO/WI: read as one, write ignore) - * - We do not support LPIs (yet). TYPER.LPIS is reported as 0 and is RAZ/WI. * - We do not support the message based interrupts (MBIs) triggered by * writes to the GICD_{SET,CLR}SPI_* registers. TYPER.MBIS is reported as 0. * - We do not support the (optional) backwards compatibility feature. @@ -48,6 +47,7 @@ #include #include "vgic.h" +#include "its-emul.h" static bool handle_mmio_rao_wi(struct kvm_vcpu *vcpu, struct kvm_exit_mmio *mmio, phys_addr_t offset) @@ -86,10 +86,10 @@ /* * As this implementation does not provide compatibility * with GICv2 (ARE==1), we report zero CPUs in bits [5..7]. - * Also LPIs and MBIs are not supported, so we set the respective bits to 0. - * Also we report at most 2**10=1024 interrupt IDs (to match 1024 SPIs). + * Also we report at most 2**10=1024 interrupt IDs (to match 1024 SPIs) + * and provide 16 bits worth of LPI number space (to give 8192 LPIs). */ -#define INTERRUPT_ID_BITS 10 +#define INTERRUPT_ID_BITS_SPIS 10 static bool handle_mmio_typer(struct kvm_vcpu *vcpu, struct kvm_exit_mmio *mmio, phys_addr_t offset) { @@ -97,7 +97,12 @@ reg = (min(vcpu->kvm->arch.vgic.nr_irqs, 1024) >> 5) - 1; - reg |= (INTERRUPT_ID_BITS - 1) << 19; + if (vgic_has_its(vcpu->kvm)) { + reg |= GICD_TYPER_LPIS; + reg |= (INTERRUPT_ID_BITS_ITS - 1) << 19; + } else { + reg |= (INTERRUPT_ID_BITS_SPIS - 1) << 19; + } vgic_reg_access(mmio, ®, offset, ACCESS_READ_VALUE | ACCESS_WRITE_IGNORED); @@ -530,9 +535,22 @@ struct kvm_exit_mmio *mmio, phys_addr_t offset) { - /* since we don't support LPIs, this register is zero for now */ - vgic_reg_access(mmio, NULL, offset, - ACCESS_READ_RAZ | ACCESS_WRITE_IGNORED); + struct vgic_dist *dist = &vcpu->kvm->arch.vgic; + u32 reg; + + if (!vgic_has_its(vcpu->kvm)) { + vgic_reg_access(mmio, NULL, offset, + ACCESS_READ_RAZ | ACCESS_WRITE_IGNORED); + return false; + } + reg = dist->lpis_enabled ? GICR_CTLR_ENABLE_LPIS : 0; + vgic_reg_access(mmio, ®, offset, + ACCESS_READ_VALUE | ACCESS_WRITE_VALUE); + if (!dist->lpis_enabled && (reg & GICR_CTLR_ENABLE_LPIS)) { + vgic_enable_lpis(vcpu); + dist->lpis_enabled = true; + return true; + } return false; } @@ -558,6 +576,8 @@ reg = redist_vcpu->vcpu_id << 8; if (target_vcpu_id == atomic_read(&vcpu->kvm->online_vcpus) - 1) reg |= GICR_TYPER_LAST; + if (vgic_has_its(vcpu->kvm)) + reg |= GICR_TYPER_PLPIS; vgic_reg_access(mmio, ®, offset, ACCESS_READ_VALUE | ACCESS_WRITE_IGNORED); return false; @@ -651,6 +671,38 @@ return vgic_handle_cfg_reg(reg, mmio, offset); } +/* We don't trigger any actions here, just store the register value */ +static bool handle_mmio_propbaser_redist(struct kvm_vcpu *vcpu, + struct kvm_exit_mmio *mmio, + phys_addr_t offset) +{ + struct vgic_dist *dist = &vcpu->kvm->arch.vgic; + int mode = ACCESS_READ_VALUE; + + /* Storing a value with LPIs already enabled is undefined */ + mode |= dist->lpis_enabled ? ACCESS_WRITE_IGNORED : ACCESS_WRITE_VALUE; + vgic_handle_base_register(vcpu, mmio, offset, &dist->propbaser, mode); + + return false; +} + +/* We don't trigger any actions here, just store the register value */ +static bool handle_mmio_pendbaser_redist(struct kvm_vcpu *vcpu, + struct kvm_exit_mmio *mmio, + phys_addr_t offset) +{ + struct kvm_vcpu *rdvcpu = mmio->private; + struct vgic_dist *dist = &vcpu->kvm->arch.vgic; + int mode = ACCESS_READ_VALUE; + + /* Storing a value with LPIs already enabled is undefined */ + mode |= dist->lpis_enabled ? ACCESS_WRITE_IGNORED : ACCESS_WRITE_VALUE; + vgic_handle_base_register(vcpu, mmio, offset, + &dist->pendbaser[rdvcpu->vcpu_id], mode); + + return false; +} + #define SGI_base(x) ((x) + SZ_64K) static const struct vgic_io_range vgic_redist_ranges[] = { @@ -679,6 +731,18 @@ .handle_mmio = handle_mmio_raz_wi, }, { + .base = GICR_PENDBASER, + .len = 0x08, + .bits_per_irq = 0, + .handle_mmio = handle_mmio_pendbaser_redist, + }, + { + .base = GICR_PROPBASER, + .len = 0x08, + .bits_per_irq = 0, + .handle_mmio = handle_mmio_propbaser_redist, + }, + { .base = GICR_IDREGS, .len = 0x30, .bits_per_irq = 0, @@ -817,6 +881,12 @@ rdbase += GIC_V3_REDIST_SIZE; } + if (vgic_has_its(kvm)) { + ret = vits_init(kvm); + if (ret) + goto out_unregister; + } + dist->redist_iodevs = iodevs; dist->ready = true; goto out; @@ -862,6 +932,16 @@ return 0; } +static void vgic_v3_destroy_model(struct kvm *kvm) +{ + struct vgic_dist *dist = &kvm->arch.vgic; + + vits_destroy(kvm); + + kfree(dist->irq_spi_mpidr); + dist->irq_spi_mpidr = NULL; +} + /* GICv3 does not keep track of SGI sources anymore. */ static void vgic_v3_add_sgi_source(struct kvm_vcpu *vcpu, int irq, int source) { @@ -874,7 +954,15 @@ dist->vm_ops.queue_sgi = vgic_v3_queue_sgi; dist->vm_ops.add_sgi_source = vgic_v3_add_sgi_source; dist->vm_ops.init_model = vgic_v3_init_model; + dist->vm_ops.destroy_model = vgic_v3_destroy_model; dist->vm_ops.map_resources = vgic_v3_map_resources; + dist->vm_ops.inject_msi = vits_inject_msi; + dist->vm_ops.queue_lpis = vits_queue_lpis; + dist->vm_ops.unqueue_lpi = vits_unqueue_lpi; + + dist->vgic_dist_base = VGIC_ADDR_UNDEF; + dist->vgic_redist_base = VGIC_ADDR_UNDEF; + dist->vgic_its_base = VGIC_ADDR_UNDEF; kvm->arch.max_vcpus = KVM_MAX_VCPUS; } @@ -1047,6 +1135,7 @@ return -ENXIO; case KVM_VGIC_V3_ADDR_TYPE_DIST: case KVM_VGIC_V3_ADDR_TYPE_REDIST: + case KVM_VGIC_V3_ADDR_TYPE_ITS: return 0; } break; --- linux-raspi2-4.2.0.orig/virt/kvm/arm/vgic-v3.c +++ linux-raspi2-4.2.0/virt/kvm/arm/vgic-v3.c @@ -178,6 +178,7 @@ * anyway. */ vgic_v3->vgic_vmcr = 0; + vgic_v3->vgic_elrsr = ~0; /* * If we are emulating a GICv3, we do it in an non-GICv2-compatible @@ -273,7 +274,7 @@ vgic->vctrl_base = NULL; vgic->type = VGIC_V3; - vgic->max_gic_vcpus = KVM_MAX_VCPUS; + vgic->max_gic_vcpus = VGIC_V3_MAX_CPUS; kvm_info("%s@%llx IRQ%d\n", vgic_node->name, vcpu_res.start, vgic->maint_irq); --- linux-raspi2-4.2.0.orig/virt/kvm/arm/vgic.c +++ linux-raspi2-4.2.0/virt/kvm/arm/vgic.c @@ -79,7 +79,6 @@ #include "vgic.h" static void vgic_retire_disabled_irqs(struct kvm_vcpu *vcpu); -static void vgic_retire_lr(int lr_nr, int irq, struct kvm_vcpu *vcpu); static struct vgic_lr vgic_get_lr(const struct kvm_vcpu *vcpu, int lr); static void vgic_set_lr(struct kvm_vcpu *vcpu, int lr, struct vgic_lr lr_desc); @@ -96,11 +95,33 @@ return vcpu->kvm->arch.vgic.vm_ops.queue_sgi(vcpu, irq); } +static bool vgic_queue_lpis(struct kvm_vcpu *vcpu) +{ + if (vcpu->kvm->arch.vgic.vm_ops.queue_lpis) + return vcpu->kvm->arch.vgic.vm_ops.queue_lpis(vcpu); + else + return true; +} + +static void vgic_unqueue_lpi(struct kvm_vcpu *vcpu, int irq) +{ + if (vcpu->kvm->arch.vgic.vm_ops.unqueue_lpi) + vcpu->kvm->arch.vgic.vm_ops.unqueue_lpi(vcpu, irq); +} + int kvm_vgic_map_resources(struct kvm *kvm) { return kvm->arch.vgic.vm_ops.map_resources(kvm, vgic); } +static void vgic_destroy_model(struct kvm *kvm) +{ + struct vgic_vm_ops *vm_ops = &kvm->arch.vgic.vm_ops; + + if (vm_ops->destroy_model) + vm_ops->destroy_model(kvm); +} + /* * struct vgic_bitmap contains a bitmap made of unsigned longs, but * extracts u32s out of them. @@ -439,6 +460,41 @@ } } +/* handle a 64-bit register access */ +void vgic_handle_base_register(struct kvm_vcpu *vcpu, + struct kvm_exit_mmio *mmio, + phys_addr_t offset, u64 *basereg, + int mode) +{ + u32 reg; + u64 breg; + + switch (offset & ~3) { + case 0x00: + breg = *basereg; + reg = lower_32_bits(breg); + vgic_reg_access(mmio, ®, offset & 3, mode); + if (mmio->is_write && (mode & ACCESS_WRITE_VALUE)) { + breg &= GENMASK_ULL(63, 32); + breg |= reg; + *basereg = breg; + } + break; + case 0x04: + breg = *basereg; + reg = upper_32_bits(breg); + vgic_reg_access(mmio, ®, offset & 3, mode); + if (mmio->is_write && (mode & ACCESS_WRITE_VALUE)) { + breg = lower_32_bits(breg); + breg |= (u64)reg << 32; + *basereg = breg; + } + break; + } +} + + + bool handle_mmio_raz_wi(struct kvm_vcpu *vcpu, struct kvm_exit_mmio *mmio, phys_addr_t offset) { @@ -647,6 +703,17 @@ return false; } +static void vgic_sync_lr_elrsr(struct kvm_vcpu *vcpu, int lr, + struct vgic_lr vlr) +{ + vgic_ops->sync_lr_elrsr(vcpu, lr, vlr); +} + +static inline u64 vgic_get_elrsr(struct kvm_vcpu *vcpu) +{ + return vgic_ops->get_elrsr(vcpu); +} + /** * vgic_unqueue_irqs - move pending/active IRQs from LRs to the distributor * @vgic_cpu: Pointer to the vgic_cpu struct holding the LRs @@ -658,9 +725,11 @@ void vgic_unqueue_irqs(struct kvm_vcpu *vcpu) { struct vgic_cpu *vgic_cpu = &vcpu->arch.vgic_cpu; + u64 elrsr = vgic_get_elrsr(vcpu); + unsigned long *elrsr_ptr = u64_to_bitmask(&elrsr); int i; - for_each_set_bit(i, vgic_cpu->lr_used, vgic_cpu->nr_lr) { + for_each_clear_bit(i, elrsr_ptr, vgic_cpu->nr_lr) { struct vgic_lr lr = vgic_get_lr(vcpu, i); /* @@ -703,7 +772,7 @@ * Mark the LR as free for other use. */ BUG_ON(lr.state & LR_STATE_MASK); - vgic_retire_lr(i, lr.irq, vcpu); + vgic_sync_lr_elrsr(vcpu, i, lr); vgic_irq_clear_queued(vcpu, lr.irq); /* Finally update the VGIC state. */ @@ -910,6 +979,16 @@ return ret; } +bool vgic_has_its(struct kvm *kvm) +{ + struct vgic_dist *dist = &kvm->arch.vgic; + + if (dist->vgic_model != KVM_DEV_TYPE_ARM_VGIC_V3) + return false; + + return !IS_VGIC_ADDR_UNDEF(dist->vgic_its_base); +} + static int vgic_nr_shared_irqs(struct vgic_dist *dist) { return dist->nr_irqs - VGIC_NR_PRIVATE_IRQS; @@ -1011,17 +1090,6 @@ vgic_ops->set_lr(vcpu, lr, vlr); } -static void vgic_sync_lr_elrsr(struct kvm_vcpu *vcpu, int lr, - struct vgic_lr vlr) -{ - vgic_ops->sync_lr_elrsr(vcpu, lr, vlr); -} - -static inline u64 vgic_get_elrsr(struct kvm_vcpu *vcpu) -{ - return vgic_ops->get_elrsr(vcpu); -} - static inline u64 vgic_get_eisr(struct kvm_vcpu *vcpu) { return vgic_ops->get_eisr(vcpu); @@ -1062,18 +1130,6 @@ vgic_ops->enable(vcpu); } -static void vgic_retire_lr(int lr_nr, int irq, struct kvm_vcpu *vcpu) -{ - struct vgic_cpu *vgic_cpu = &vcpu->arch.vgic_cpu; - struct vgic_lr vlr = vgic_get_lr(vcpu, lr_nr); - - vlr.state = 0; - vgic_set_lr(vcpu, lr_nr, vlr); - clear_bit(lr_nr, vgic_cpu->lr_used); - vgic_cpu->vgic_irq_lr_map[irq] = LR_EMPTY; - vgic_sync_lr_elrsr(vcpu, lr_nr, vlr); -} - /* * An interrupt may have been disabled after being made pending on the * CPU interface (the classic case is a timer running while we're @@ -1085,36 +1141,57 @@ */ static void vgic_retire_disabled_irqs(struct kvm_vcpu *vcpu) { - struct vgic_cpu *vgic_cpu = &vcpu->arch.vgic_cpu; + u64 elrsr = vgic_get_elrsr(vcpu); + unsigned long *elrsr_ptr = u64_to_bitmask(&elrsr); int lr; + struct vgic_lr vlr; + + for_each_clear_bit(lr, elrsr_ptr, vgic->nr_lr) { + vlr = vgic_get_lr(vcpu, lr); - for_each_set_bit(lr, vgic_cpu->lr_used, vgic->nr_lr) { - struct vgic_lr vlr = vgic_get_lr(vcpu, lr); + /* We don't care about LPIs here */ + if (vlr.irq >= 8192) + continue; if (!vgic_irq_is_enabled(vcpu, vlr.irq)) { - vgic_retire_lr(lr, vlr.irq, vcpu); - if (vgic_irq_is_queued(vcpu, vlr.irq)) - vgic_irq_clear_queued(vcpu, vlr.irq); + vlr.state = 0; + vgic_set_lr(vcpu, lr, vlr); + vgic_sync_lr_elrsr(vcpu, lr, vlr); + vgic_irq_clear_queued(vcpu, vlr.irq); } } } static void vgic_queue_irq_to_lr(struct kvm_vcpu *vcpu, int irq, - int lr_nr, struct vgic_lr vlr) + int lr_nr, int sgi_source_id) { - if (vgic_irq_is_active(vcpu, irq)) { - vlr.state |= LR_STATE_ACTIVE; - kvm_debug("Set active, clear distributor: 0x%x\n", vlr.state); - vgic_irq_clear_active(vcpu, irq); - vgic_update_state(vcpu->kvm); - } else if (vgic_dist_irq_is_pending(vcpu, irq)) { - vlr.state |= LR_STATE_PENDING; - kvm_debug("Set pending: 0x%x\n", vlr.state); - } + struct vgic_dist *dist = &vcpu->kvm->arch.vgic; + struct vgic_lr vlr; - if (!vgic_irq_is_edge(vcpu, irq)) - vlr.state |= LR_EOI_INT; + vlr.state = 0; + vlr.irq = irq; + vlr.source = sgi_source_id; + + /* We care only about state for SGIs/PPIs/SPIs, not for LPIs */ + if (irq < dist->nr_irqs) { + if (vgic_irq_is_active(vcpu, irq)) { + vlr.state |= LR_STATE_ACTIVE; + kvm_debug("Set active, clear distributor: 0x%x\n", + vlr.state); + vgic_irq_clear_active(vcpu, irq); + vgic_update_state(vcpu->kvm); + } else if (vgic_dist_irq_is_pending(vcpu, irq)) { + vlr.state |= LR_STATE_PENDING; + kvm_debug("Set pending: 0x%x\n", vlr.state); + } + if (!vgic_irq_is_edge(vcpu, irq)) + vlr.state |= LR_EOI_INT; + } else { + /* If this is an LPI, it can only be pending */ + if (irq >= 8192) + vlr.state |= LR_STATE_PENDING; + } vgic_set_lr(vcpu, lr_nr, vlr); vgic_sync_lr_elrsr(vcpu, lr_nr, vlr); } @@ -1126,54 +1203,30 @@ */ bool vgic_queue_irq(struct kvm_vcpu *vcpu, u8 sgi_source_id, int irq) { - struct vgic_cpu *vgic_cpu = &vcpu->arch.vgic_cpu; - struct vgic_dist *dist = &vcpu->kvm->arch.vgic; - struct vgic_lr vlr; + u64 elrsr = vgic_get_elrsr(vcpu); + unsigned long *elrsr_ptr = u64_to_bitmask(&elrsr); int lr; /* Sanitize the input... */ BUG_ON(sgi_source_id & ~7); BUG_ON(sgi_source_id && irq >= VGIC_NR_SGIS); - BUG_ON(irq >= dist->nr_irqs); kvm_debug("Queue IRQ%d\n", irq); - lr = vgic_cpu->vgic_irq_lr_map[irq]; + lr = find_first_bit(elrsr_ptr, vgic->nr_lr); - /* Do we have an active interrupt for the same CPUID? */ - if (lr != LR_EMPTY) { - vlr = vgic_get_lr(vcpu, lr); - if (vlr.source == sgi_source_id) { - kvm_debug("LR%d piggyback for IRQ%d\n", lr, vlr.irq); - BUG_ON(!test_bit(lr, vgic_cpu->lr_used)); - vgic_queue_irq_to_lr(vcpu, irq, lr, vlr); - return true; - } - } - - /* Try to use another LR for this interrupt */ - lr = find_first_zero_bit((unsigned long *)vgic_cpu->lr_used, - vgic->nr_lr); if (lr >= vgic->nr_lr) return false; kvm_debug("LR%d allocated for IRQ%d %x\n", lr, irq, sgi_source_id); - vgic_cpu->vgic_irq_lr_map[irq] = lr; - set_bit(lr, vgic_cpu->lr_used); - vlr.irq = irq; - vlr.source = sgi_source_id; - vlr.state = 0; - vgic_queue_irq_to_lr(vcpu, irq, lr, vlr); + vgic_queue_irq_to_lr(vcpu, irq, lr, sgi_source_id); return true; } static bool vgic_queue_hwirq(struct kvm_vcpu *vcpu, int irq) { - if (!vgic_can_sample_irq(vcpu, irq)) - return true; /* level interrupt, already queued */ - if (vgic_queue_irq(vcpu, 0, irq)) { if (vgic_irq_is_edge(vcpu, irq)) { vgic_dist_irq_clear_pending(vcpu, irq); @@ -1236,8 +1289,12 @@ overflow = 1; } - - + /* + * LPIs are not mapped in our bitmaps, so we leave the iteration + * to the ITS emulation code. + */ + if (!vgic_queue_lpis(vcpu)) + overflow = 1; epilog: if (overflow) { @@ -1346,29 +1403,54 @@ struct vgic_dist *dist = &vcpu->kvm->arch.vgic; u64 elrsr; unsigned long *elrsr_ptr; - int lr, pending; - bool level_pending; + struct vgic_lr vlr; + int lr_nr; + bool pending; + + pending = vgic_process_maintenance(vcpu); - level_pending = vgic_process_maintenance(vcpu); elrsr = vgic_get_elrsr(vcpu); elrsr_ptr = u64_to_bitmask(&elrsr); - /* Clear mappings for empty LRs */ - for_each_set_bit(lr, elrsr_ptr, vgic->nr_lr) { - struct vgic_lr vlr; + for_each_clear_bit(lr_nr, elrsr_ptr, vgic_cpu->nr_lr) { + vlr = vgic_get_lr(vcpu, lr_nr); - if (!test_and_clear_bit(lr, vgic_cpu->lr_used)) + /* LPIs are handled separately */ + if (vlr.irq >= 8192) { + /* We just need to take care about still pending LPIs */ + if (vlr.state & LR_STATE_PENDING) { + vgic_unqueue_lpi(vcpu, vlr.irq); + pending = true; + } continue; + } - vlr = vgic_get_lr(vcpu, lr); + BUG_ON(!(vlr.state & LR_STATE_MASK)); + pending = true; + + /* Reestablish SGI source for pending and active SGIs */ + if (vlr.irq < VGIC_NR_SGIS) + add_sgi_source(vcpu, vlr.irq, vlr.source); - BUG_ON(vlr.irq >= dist->nr_irqs); - vgic_cpu->vgic_irq_lr_map[vlr.irq] = LR_EMPTY; + /* + * If the LR holds a pure active (10) interrupt then keep it + * in the LR without mirroring this status in the emulation. + */ + if (vlr.state == LR_STATE_ACTIVE) + continue; + + if (vlr.state & LR_STATE_PENDING) + vgic_dist_irq_set_pending(vcpu, vlr.irq); + + /* Mark this LR as empty now. */ + vlr.state = 0; + vgic_set_lr(vcpu, lr_nr, vlr); + vgic_sync_lr_elrsr(vcpu, lr_nr, vlr); } + vgic_update_state(vcpu->kvm); - /* Check if we still have something up our sleeve... */ - pending = find_first_zero_bit(elrsr_ptr, vgic->nr_lr); - if (level_pending || pending < vgic->nr_lr) + /* vgic_update_state would not cover only-active IRQs or LPIs */ + if (pending) set_bit(vcpu->vcpu_id, dist->irq_pending_on_cpu); } @@ -1590,11 +1672,9 @@ kfree(vgic_cpu->pending_shared); kfree(vgic_cpu->active_shared); kfree(vgic_cpu->pend_act_shared); - kfree(vgic_cpu->vgic_irq_lr_map); vgic_cpu->pending_shared = NULL; vgic_cpu->active_shared = NULL; vgic_cpu->pend_act_shared = NULL; - vgic_cpu->vgic_irq_lr_map = NULL; } static int vgic_vcpu_init_maps(struct kvm_vcpu *vcpu, int nr_irqs) @@ -1605,18 +1685,14 @@ vgic_cpu->pending_shared = kzalloc(sz, GFP_KERNEL); vgic_cpu->active_shared = kzalloc(sz, GFP_KERNEL); vgic_cpu->pend_act_shared = kzalloc(sz, GFP_KERNEL); - vgic_cpu->vgic_irq_lr_map = kmalloc(nr_irqs, GFP_KERNEL); if (!vgic_cpu->pending_shared || !vgic_cpu->active_shared - || !vgic_cpu->pend_act_shared - || !vgic_cpu->vgic_irq_lr_map) { + || !vgic_cpu->pend_act_shared) { kvm_vgic_vcpu_destroy(vcpu); return -ENOMEM; } - memset(vgic_cpu->vgic_irq_lr_map, LR_EMPTY, nr_irqs); - /* * Store the number of LRs per vcpu, so we don't have to go * all the way to the distributor structure to find out. Only @@ -1644,6 +1720,8 @@ struct kvm_vcpu *vcpu; int i; + vgic_destroy_model(kvm); + kvm_for_each_vcpu(i, vcpu, kvm) kvm_vgic_vcpu_destroy(vcpu); @@ -1660,7 +1738,6 @@ } kfree(dist->irq_sgi_sources); kfree(dist->irq_spi_cpu); - kfree(dist->irq_spi_mpidr); kfree(dist->irq_spi_target); kfree(dist->irq_pending_on_cpu); kfree(dist->irq_active_on_cpu); @@ -1708,6 +1785,8 @@ ret |= vgic_init_bitmap(&dist->irq_cfg, nr_cpus, nr_irqs); ret |= vgic_init_bytemap(&dist->irq_priority, nr_cpus, nr_irqs); + ret |= kvm_setup_default_irq_routing(kvm); + if (ret) goto out; @@ -1836,9 +1915,6 @@ kvm->arch.vgic.in_kernel = true; kvm->arch.vgic.vgic_model = type; kvm->arch.vgic.vctrl_base = vgic->vctrl_base; - kvm->arch.vgic.vgic_dist_base = VGIC_ADDR_UNDEF; - kvm->arch.vgic.vgic_cpu_base = VGIC_ADDR_UNDEF; - kvm->arch.vgic.vgic_redist_base = VGIC_ADDR_UNDEF; out_unlock: for (; vcpu_lock_idx >= 0; vcpu_lock_idx--) { @@ -1936,6 +2012,12 @@ block_size = KVM_VGIC_V3_REDIST_SIZE; alignment = SZ_64K; break; + case KVM_VGIC_V3_ADDR_TYPE_ITS: + type_needed = KVM_DEV_TYPE_ARM_VGIC_V3; + addr_ptr = &vgic->vgic_its_base; + block_size = KVM_VGIC_V3_ITS_SIZE; + alignment = SZ_64K; + break; #endif default: r = -ENODEV; @@ -2135,34 +2217,105 @@ return ret; } -int kvm_irq_map_gsi(struct kvm *kvm, - struct kvm_kernel_irq_routing_entry *entries, - int gsi) +/** + * vgic_irqfd_set_irq: inject the IRQ corresponding to the + * irqchip routing entry + * + * This is the entry point for irqfd IRQ injection + */ +static int vgic_irqfd_set_irq(struct kvm_kernel_irq_routing_entry *e, + struct kvm *kvm, int irq_source_id, + int level, bool line_status) { - return 0; -} + unsigned int spi_id = e->irqchip.pin + VGIC_NR_PRIVATE_IRQS; -int kvm_irq_map_chip_pin(struct kvm *kvm, unsigned irqchip, unsigned pin) -{ - return pin; + trace_kvm_set_irq(spi_id, level, irq_source_id); + + BUG_ON(!vgic_initialized(kvm)); + + if (spi_id > min(kvm->arch.vgic.nr_irqs, 1020)) + return -EINVAL; + return kvm_vgic_inject_irq(kvm, 0, spi_id, level); } -int kvm_set_irq(struct kvm *kvm, int irq_source_id, - u32 irq, int level, bool line_status) +/** + * kvm_set_routing_entry: populate a kvm routing entry + * from a user routing entry + * + * @e: kvm kernel routing entry handle + * @ue: user api routing entry handle + * return 0 on success, -EINVAL on errors. + */ +int kvm_set_routing_entry(struct kvm_kernel_irq_routing_entry *e, + const struct kvm_irq_routing_entry *ue) { - unsigned int spi = irq + VGIC_NR_PRIVATE_IRQS; + int r = -EINVAL; - trace_kvm_set_irq(irq, level, irq_source_id); - - BUG_ON(!vgic_initialized(kvm)); + switch (ue->type) { + case KVM_IRQ_ROUTING_IRQCHIP: + e->set = vgic_irqfd_set_irq; + e->irqchip.irqchip = ue->u.irqchip.irqchip; + e->irqchip.pin = ue->u.irqchip.pin; + if ((e->irqchip.pin >= KVM_IRQCHIP_NUM_PINS) || + (e->irqchip.irqchip >= KVM_NR_IRQCHIPS)) + goto out; + break; + case KVM_IRQ_ROUTING_MSI: + e->set = kvm_set_msi; + e->msi.address_lo = ue->u.msi.address_lo; + e->msi.address_hi = ue->u.msi.address_hi; + e->msi.data = ue->u.msi.data; + e->flags = ue->flags; + e->devid = ue->u.msi.devid; + break; + default: + goto out; + } + r = 0; +out: + return r; +} - return kvm_vgic_inject_irq(kvm, 0, spi, level); +int kvm_setup_default_irq_routing(struct kvm *kvm) +{ + struct kvm_irq_routing_entry *entries; + u32 nr = kvm->arch.vgic.nr_irqs - VGIC_NR_PRIVATE_IRQS; + int i, ret; + + entries = kcalloc(nr, sizeof(struct kvm_kernel_irq_routing_entry), + GFP_KERNEL); + for (i = 0; i < nr; i++) { + entries[i].gsi = i; + entries[i].type = KVM_IRQ_ROUTING_IRQCHIP; + entries[i].u.irqchip.irqchip = 0; + entries[i].u.irqchip.pin = i; + } + ret = kvm_set_irq_routing(kvm, entries, nr, 0); + kfree(entries); + return ret; } -/* MSI not implemented yet */ +/** + * kvm_set_msi: inject the MSI corresponding to the + * MSI routing entry + * + * This is the entry point for irqfd MSI injection + * and userspace MSI injection. + */ int kvm_set_msi(struct kvm_kernel_irq_routing_entry *e, struct kvm *kvm, int irq_source_id, int level, bool line_status) { - return 0; + struct kvm_msi msi; + + msi.address_lo = e->msi.address_lo; + msi.address_hi = e->msi.address_hi; + msi.data = e->msi.data; + msi.flags = e->flags; + msi.devid = e->devid; + + if (kvm->arch.vgic.vm_ops.inject_msi) + return kvm->arch.vgic.vm_ops.inject_msi(kvm, &msi); + else + return -ENODEV; } --- linux-raspi2-4.2.0.orig/virt/kvm/arm/vgic.h +++ linux-raspi2-4.2.0/virt/kvm/arm/vgic.h @@ -71,6 +71,10 @@ phys_addr_t offset, int mode); bool handle_mmio_raz_wi(struct kvm_vcpu *vcpu, struct kvm_exit_mmio *mmio, phys_addr_t offset); +void vgic_handle_base_register(struct kvm_vcpu *vcpu, + struct kvm_exit_mmio *mmio, + phys_addr_t offset, u64 *basereg, + int mode); static inline u32 mmio_data_read(struct kvm_exit_mmio *mmio, u32 mask) @@ -136,5 +140,6 @@ int vgic_init(struct kvm *kvm); void vgic_v2_init_emulation(struct kvm *kvm); void vgic_v3_init_emulation(struct kvm *kvm); +bool vgic_has_its(struct kvm *kvm); #endif --- linux-raspi2-4.2.0.orig/virt/kvm/eventfd.c +++ linux-raspi2-4.2.0/virt/kvm/eventfd.c @@ -771,40 +771,14 @@ return KVM_MMIO_BUS; } -static int -kvm_assign_ioeventfd(struct kvm *kvm, struct kvm_ioeventfd *args) +static int kvm_assign_ioeventfd_idx(struct kvm *kvm, + enum kvm_bus bus_idx, + struct kvm_ioeventfd *args) { - enum kvm_bus bus_idx; - struct _ioeventfd *p; - struct eventfd_ctx *eventfd; - int ret; - bus_idx = ioeventfd_bus_from_flags(args->flags); - /* must be natural-word sized, or 0 to ignore length */ - switch (args->len) { - case 0: - case 1: - case 2: - case 4: - case 8: - break; - default: - return -EINVAL; - } - - /* check for range overflow */ - if (args->addr + args->len < args->addr) - return -EINVAL; - - /* check for extra flags that we don't understand */ - if (args->flags & ~KVM_IOEVENTFD_VALID_FLAG_MASK) - return -EINVAL; - - /* ioeventfd with no length can't be combined with DATAMATCH */ - if (!args->len && - args->flags & (KVM_IOEVENTFD_FLAG_PIO | - KVM_IOEVENTFD_FLAG_DATAMATCH)) - return -EINVAL; + struct eventfd_ctx *eventfd; + struct _ioeventfd *p; + int ret; eventfd = eventfd_ctx_fdget(args->fd); if (IS_ERR(eventfd)) @@ -843,16 +817,6 @@ if (ret < 0) goto unlock_fail; - /* When length is ignored, MMIO is also put on a separate bus, for - * faster lookups. - */ - if (!args->len && !(args->flags & KVM_IOEVENTFD_FLAG_PIO)) { - ret = kvm_io_bus_register_dev(kvm, KVM_FAST_MMIO_BUS, - p->addr, 0, &p->dev); - if (ret < 0) - goto register_fail; - } - kvm->buses[bus_idx]->ioeventfd_count++; list_add_tail(&p->list, &kvm->ioeventfds); @@ -860,8 +824,6 @@ return 0; -register_fail: - kvm_io_bus_unregister_dev(kvm, bus_idx, &p->dev); unlock_fail: mutex_unlock(&kvm->slots_lock); @@ -873,14 +835,13 @@ } static int -kvm_deassign_ioeventfd(struct kvm *kvm, struct kvm_ioeventfd *args) +kvm_deassign_ioeventfd_idx(struct kvm *kvm, enum kvm_bus bus_idx, + struct kvm_ioeventfd *args) { - enum kvm_bus bus_idx; struct _ioeventfd *p, *tmp; struct eventfd_ctx *eventfd; int ret = -ENOENT; - bus_idx = ioeventfd_bus_from_flags(args->flags); eventfd = eventfd_ctx_fdget(args->fd); if (IS_ERR(eventfd)) return PTR_ERR(eventfd); @@ -901,10 +862,6 @@ continue; kvm_io_bus_unregister_dev(kvm, bus_idx, &p->dev); - if (!p->length) { - kvm_io_bus_unregister_dev(kvm, KVM_FAST_MMIO_BUS, - &p->dev); - } kvm->buses[bus_idx]->ioeventfd_count--; ioeventfd_release(p); ret = 0; @@ -918,6 +875,71 @@ return ret; } +static int kvm_deassign_ioeventfd(struct kvm *kvm, struct kvm_ioeventfd *args) +{ + enum kvm_bus bus_idx = ioeventfd_bus_from_flags(args->flags); + int ret = kvm_deassign_ioeventfd_idx(kvm, bus_idx, args); + + if (!args->len && bus_idx == KVM_MMIO_BUS) + kvm_deassign_ioeventfd_idx(kvm, KVM_FAST_MMIO_BUS, args); + + return ret; +} + +static int +kvm_assign_ioeventfd(struct kvm *kvm, struct kvm_ioeventfd *args) +{ + enum kvm_bus bus_idx; + int ret; + + bus_idx = ioeventfd_bus_from_flags(args->flags); + /* must be natural-word sized, or 0 to ignore length */ + switch (args->len) { + case 0: + case 1: + case 2: + case 4: + case 8: + break; + default: + return -EINVAL; + } + + /* check for range overflow */ + if (args->addr + args->len < args->addr) + return -EINVAL; + + /* check for extra flags that we don't understand */ + if (args->flags & ~KVM_IOEVENTFD_VALID_FLAG_MASK) + return -EINVAL; + + /* ioeventfd with no length can't be combined with DATAMATCH */ + if (!args->len && + args->flags & (KVM_IOEVENTFD_FLAG_PIO | + KVM_IOEVENTFD_FLAG_DATAMATCH)) + return -EINVAL; + + ret = kvm_assign_ioeventfd_idx(kvm, bus_idx, args); + if (ret) + goto fail; + + /* When length is ignored, MMIO is also put on a separate bus, for + * faster lookups. + */ + if (!args->len && bus_idx == KVM_MMIO_BUS) { + ret = kvm_assign_ioeventfd_idx(kvm, KVM_FAST_MMIO_BUS, args); + if (ret < 0) + goto fast_fail; + } + + return 0; + +fast_fail: + kvm_deassign_ioeventfd_idx(kvm, bus_idx, args); +fail: + return ret; +} + int kvm_ioeventfd(struct kvm *kvm, struct kvm_ioeventfd *args) { --- linux-raspi2-4.2.0.orig/virt/kvm/irqchip.c +++ linux-raspi2-4.2.0/virt/kvm/irqchip.c @@ -29,7 +29,9 @@ #include #include #include +#if !defined(CONFIG_ARM) && !defined(CONFIG_ARM64) #include "irq.h" +#endif struct kvm_irq_routing_table { int chip[KVM_NR_IRQCHIPS][KVM_IRQCHIP_NUM_PINS]; @@ -72,12 +74,14 @@ { struct kvm_kernel_irq_routing_entry route; - if (!irqchip_in_kernel(kvm) || msi->flags != 0) + if (!irqchip_in_kernel(kvm) || (msi->flags & ~KVM_MSI_VALID_DEVID)) return -EINVAL; route.msi.address_lo = msi->address_lo; route.msi.address_hi = msi->address_hi; route.msi.data = msi->data; + route.flags = msi->flags; + route.devid = msi->devid; return kvm_set_msi(&route, kvm, KVM_USERSPACE_IRQ_SOURCE_ID, 1, false); } @@ -213,11 +217,15 @@ goto out; r = -EINVAL; - if (ue->flags) + if (ue->flags & ~KVM_MSI_VALID_DEVID) { + kfree(e); goto out; + } r = setup_routing_entry(new, e, ue); - if (r) + if (r) { + kfree(e); goto out; + } ++ue; } --- linux-raspi2-4.2.0.orig/virt/kvm/kvm_main.c +++ linux-raspi2-4.2.0/virt/kvm/kvm_main.c @@ -3080,10 +3080,25 @@ static inline int kvm_io_bus_cmp(const struct kvm_io_range *r1, const struct kvm_io_range *r2) { - if (r1->addr < r2->addr) + gpa_t addr1 = r1->addr; + gpa_t addr2 = r2->addr; + + if (addr1 < addr2) return -1; - if (r1->addr + r1->len > r2->addr + r2->len) + + /* If r2->len == 0, match the exact address. If r2->len != 0, + * accept any overlapping write. Any order is acceptable for + * overlapping ranges, because kvm_io_bus_get_first_dev ensures + * we process all of them. + */ + if (r2->len) { + addr1 += r1->len; + addr2 += r2->len; + } + + if (addr1 > addr2) return 1; + return 0; }